fsharp-3.0.34/0000775000175000017500000000000012260314606012070 5ustar chrischrisfsharp-3.0.34/autogen.sh0000775000175000017500000000040112260314606014064 0ustar chrischris#!/usr/bin/env sh which autoreconf > /dev/null || (echo "Please install autoconf" && exit 1) # on OSX autoconf may need a little help with these paths aclocal -I /opt/local/share/aclocal -I /usr/local/share/aclocal 2> /dev/null autoreconf && ./configure $@ fsharp-3.0.34/tests/0000775000175000017500000000000012260314606013232 5ustar chrischrisfsharp-3.0.34/tests/hosting/0000775000175000017500000000000012260314606014705 5ustar chrischrisfsharp-3.0.34/tests/hosting/hosted.fsx0000664000175000017500000000234412260314606016720 0ustar chrischris #r @"../../lib/release/4.0/FSharp.Compiler.dll" #r @"../../lib/release/4.0/fsiAnyCpu.exe" open Microsoft.FSharp.Compiler.Interactive.Shell open System open System.IO open System.Collections.Generic let stdinStream = new CompilerInputStream() let stdin = new System.IO.StreamReader(stdinStream) let stdoutStream = new CompilerOutputStream() let stdout = StreamWriter.Synchronized(new System.IO.StreamWriter(stdoutStream, AutoFlush=true)) let stderrStream = new CompilerOutputStream() let stderr = StreamWriter.Synchronized(new System.IO.StreamWriter(stderrStream, AutoFlush=true)) System.Console.SetOut stdout System.Console.SetError stderr stdinStream.Add("eprintfn \"writing to error\";;\n") stdinStream.Add("printfn \"hello world to out\";;\n") stdinStream.Add("let x = 1;;\n") stdinStream.Add("eprintfn \"this is me on error, x = %d\" x;;\n\n") stdinStream.Add("printfn \"this is me on out, x = %d\" x;;\n\n") stdinStream.Add("let x = 1;;\n") let session = FsiEvaluationSession([| "fsiAnyCpu.exe" |], stdin, stdout, stderr) // Start the session in the background async { do session.Run() } |> Async.Start session.Interrupt() // Wait a bit before executing these lines let text1 = stdoutStream.Read() let text2 = stderrStream.Read() fsharp-3.0.34/tests/projects/0000775000175000017500000000000012260314606015063 5ustar chrischrisfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/0000775000175000017500000000000012260314606026412 5ustar chrischris././@LongLink0000644000000000000000000000021212266073264011645 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSh0000775000175000017500000000000012260314606031231 5ustar chrischris././@LongLink0000644000000000000000000000030612266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSh0000664000175000017500000000673112260314606031242 0ustar chrischris Debug AnyCPU 2.0 563c9d5c-966a-4121-84ba-3ef62626d999 Exe Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013 Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013 Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013 10.0.0 False True full False False bin\Debug\ DEBUG;TRACE 3 AnyCPU bin\Debug\Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013.XML true pdbonly True True bin\Release\ TRACE 3 AnyCPU bin\Release\Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013.XML true False ..\..\..\..\..\..\fsharp\lib\debug\4.0\FSharp.Core.dll 11 $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets ././@LongLink0000644000000000000000000000022412266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSh0000664000175000017500000000273212260314606031237 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, targeting .NET 4.0 // On Windows, the build should reference // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Numerics.dll" // and should reference one of these depending on the language version of F# being used // -r:"C:Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\FSharp.Core.dll" // -r:"C:Program Files\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\v4.0\FSharp.Core.dll" // // On Mac, you'll get something like this: // -r:"/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/FSharp.Core.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/mscorlib.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.Core.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.Numerics.dll" module M type C() = member val x = 1 System.Console.WriteLine "Helo World" [] let main argv = printfn "%A" argv 0 // return an integer exit code ././@LongLink0000644000000000000000000000022412266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/App.configfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSh0000664000175000017500000000123512260314606031234 0ustar chrischris ././@LongLink0000644000000000000000000000021512266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013/Sample_VS2012_FSh0000664000175000017500000000202612260314606031233 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013", "Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013\Sample_VS2012_FSharp_ConsoleApp_net40_upgraded_VS2013.fsproj", "{563C9D5C-966A-4121-84BA-3EF62626D999}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {563C9D5C-966A-4121-84BA-3EF62626D999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Debug|Any CPU.Build.0 = Debug|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Release|Any CPU.ActiveCfg = Release|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/0000775000175000017500000000000012260314606023623 5ustar chrischris././@LongLink0000644000000000000000000000015312266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/fsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000775000175000017500000000000012260314606031752 5ustar chrischris././@LongLink0000644000000000000000000000023012266073264011645 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/SampleVisualStudio2010FSharpConsoleApp.fsprojfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000514212260314606031756 0ustar chrischris Debug x86 8.0.30703 2.0 {116cc2f9-f987-4b3d-915a-34cac04a73da} Exe SampleVisualStudio2010FSharpConsoleApp SampleVisualStudio2010FSharpConsoleApp v3.5 SampleVisualStudio2010FSharpConsoleApp false true full false false bin\Debug\ DEBUG;TRACE 3 x86 bin\Debug\SampleVisualStudio2010FSharpConsoleApp.XML pdbonly true true bin\Release\ TRACE 3 x86 bin\Release\SampleVisualStudio2010FSharpConsoleApp.XML false ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000174612260314606031764 0ustar chrischris// This is a sample F# app created in Visual Studio 2010, targeting .NET 3.5 // On Windows, the build should target // -r:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" // -r:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll" // and should reference one of these depending on the language version of F# being used // Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll // Program Files\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\v2.0\FSharp.Core.dll // // On Mac, you'll get // // -r:"/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.0/FSharp.Core.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/2.0/mscorlib.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/2.0/System.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/2.0/System.Core.dll" module M [] let main args = System.Console.WriteLine "Hello world" 0 ././@LongLink0000644000000000000000000000015612266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp.slnfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000167112260314606031761 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SampleVisualStudio2010FSharpConsoleApp", "SampleVisualStudio2010FSharpConsoleApp\SampleVisualStudio2010FSharpConsoleApp.fsproj", "{116CC2F9-F987-4B3D-915A-34CAC04A73DA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.ActiveCfg = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.Build.0 = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.ActiveCfg = Release|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/0000775000175000017500000000000012260314606026570 5ustar chrischrisfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/NOTE.txt0000664000175000017500000000030412260314606030073 0ustar chrischris Tests a project file with a resource. You should see --resource:obj/Debug/Sample_VS2012_FSharp_ConsoleApp_net45.resource.txt on the command line when you run xbuild on the .fsproj file ././@LongLink0000644000000000000000000000017012266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000775000175000017500000000000012260314606031732 5ustar chrischris././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/content.txtfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000002412260314606031730 0ustar chrischrishello world content ././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000041012260314606031727 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, targeting .NET 4.5 // At time of submission it won't build by default because MD doesn't support .NET 4.5 as yet [] let main argv = printfn "%A" argv 0 // return an integer exit code ././@LongLink0000644000000000000000000000024412266073264011652 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000632612260314606031743 0ustar chrischris Debug AnyCPU 2.0 b5b8c6fd-d77d-46e6-a9c5-5d78200668cc Exe Sample_VS2012_FSharp_ConsoleApp_net45 Sample_VS2012_FSharp_ConsoleApp_net45 v4.5 Sample_VS2012_FSharp_ConsoleApp_net45 10.0.0 False True full False False bin\Debug\ DEBUG;TRACE 3 AnyCPU bin\Debug\Sample_VS2012_FSharp_ConsoleApp_net45.XML true pdbonly True True bin\Release\ TRACE 3 AnyCPU bin\Release\Sample_VS2012_FSharp_ConsoleApp_net45.XML true False 11 PreserveNewest ././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/App.configfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000123512260314606031735 0ustar chrischris ././@LongLink0000644000000000000000000000017412266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/obj/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000775000175000017500000000000012260314606031732 5ustar chrischris././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/obj/Debug/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000775000175000017500000000000012260314606031732 5ustar chrischris././@LongLink0000644000000000000000000000021612266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/obj/Debug/resource.txtfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000001412260314606031727 0ustar chrischrishello world ././@LongLink0000644000000000000000000000020412266073264011646 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/resource.txtfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000001412260314606031727 0ustar chrischrishello world ././@LongLink0000644000000000000000000000017312266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FShar0000664000175000017500000000174612260314606031744 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Sample_VS2012_FSharp_ConsoleApp_net45", "Sample_VS2012_FSharp_ConsoleApp_net45\Sample_VS2012_FSharp_ConsoleApp_net45.fsproj", "{B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/0000775000175000017500000000000012260314606024000 5ustar chrischrisfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/PortableLibrary1.fs0000664000175000017500000000013612260314606027510 0ustar chrischrisnamespace Sample_VS2012_FSharp_Portable_Library type Class1() = member this.X = "F#" fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/Script.fsx0000664000175000017500000000027712260314606025774 0ustar chrischris// Learn more about F# at http://fsharp.net. See the 'F# Tutorial' project // for more guidance on F# programming. #load "PortableLibrary1.fs" open Sample_VS2012_FSharp_Portable_Library ././@LongLink0000644000000000000000000000015512266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/Sample_VS2012_FSharp_Portable_Library.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/Sample_VS2012_FSharp_Portable_Lib0000664000175000017500000000170312260314606031743 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Sample_VS2012_FSharp_Portable_Library", "Sample_VS2012_FSharp_Portable_Library.fsproj", "{CE7E16A8-8D0D-4AE5-A1F8-906D6AEEE094}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {CE7E16A8-8D0D-4AE5-A1F8-906D6AEEE094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE7E16A8-8D0D-4AE5-A1F8-906D6AEEE094}.Debug|Any CPU.Build.0 = Debug|Any CPU {CE7E16A8-8D0D-4AE5-A1F8-906D6AEEE094}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE7E16A8-8D0D-4AE5-A1F8-906D6AEEE094}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal ././@LongLink0000644000000000000000000000016012266073264011647 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/Sample_VS2012_FSharp_Portable_Library.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_Portable_Library/Sample_VS2012_FSharp_Portable_Lib0000664000175000017500000000540712260314606031750 0ustar chrischris Debug AnyCPU 2.0 ce7e16a8-8d0d-4ae5-a1f8-906d6aeee094 Library Sample_VS2012_FSharp_Portable_Library Sample_VS2012_FSharp_Portable_Library v4.0 Profile47 Sample_VS2012_FSharp_Portable_Library true full false false bin\Debug\ DEBUG;TRACE 3 bin\Debug\Sample_VS2012_FSharp_Portable_Library.XML pdbonly true true bin\Release\ TRACE 3 bin\Release\Sample_VS2012_FSharp_Portable_Library.XML FSharp.Core FSharp.Core.dll $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\.NETPortable\FSharp.Core.dll 11 fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/0000775000175000017500000000000012260314606023626 5ustar chrischris././@LongLink0000644000000000000000000000015212266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_n0000775000175000017500000000000012260314606031610 5ustar chrischris././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000041012260314606031605 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, targeting .NET 4.5 // At time of submission it won't build by default because MD doesn't support .NET 4.5 as yet [] let main argv = printfn "%A" argv 0 // return an integer exit code ././@LongLink0000644000000000000000000000022612266073264011652 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000607012260314606031615 0ustar chrischris Debug AnyCPU 2.0 b5b8c6fd-d77d-46e6-a9c5-5d78200668cc Exe Sample_VS2012_FSharp_ConsoleApp_net45 Sample_VS2012_FSharp_ConsoleApp_net45 v4.5 Sample_VS2012_FSharp_ConsoleApp_net45 10.0.0 False True full False False bin\Debug\ DEBUG;TRACE 3 AnyCPU bin\Debug\Sample_VS2012_FSharp_ConsoleApp_net45.XML true pdbonly True True bin\Release\ TRACE 3 AnyCPU bin\Release\Sample_VS2012_FSharp_ConsoleApp_net45.XML true False 11 ././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45/App.configfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000123512260314606031613 0ustar chrischris ././@LongLink0000644000000000000000000000015512266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000174612260314606031622 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Sample_VS2012_FSharp_ConsoleApp_net45", "Sample_VS2012_FSharp_ConsoleApp_net45\Sample_VS2012_FSharp_ConsoleApp_net45.fsproj", "{B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {B5B8C6FD-D77D-46E6-A9C5-5D78200668CC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/0000775000175000017500000000000012260314606023617 5ustar chrischris././@LongLink0000644000000000000000000000015312266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConsoleApp/fsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConso0000775000175000017500000000000012260314606031746 5ustar chrischris././@LongLink0000644000000000000000000000023012266073264011645 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConsoleApp/SampleVisualStudio2010FSharpConsoleApp.fsprojfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConso0000664000175000017500000000522612260314606031755 0ustar chrischris Debug x86 8.0.30703 2.0 {116cc2f9-f987-4b3d-915a-34cac04a73da} Exe SampleVisualStudio2010FSharpConsoleApp SampleVisualStudio2010FSharpConsoleApp SampleVisualStudio2010FSharpConsoleApp false Program.fs true full false false bin\Debug\ DEBUG;TRACE 3 x86 bin\Debug\SampleVisualStudio2010FSharpConsoleApp.XML pdbonly true true bin\Release\ TRACE 3 x86 bin\Release\SampleVisualStudio2010FSharpConsoleApp.XML false ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConsoleApp/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConso0000664000175000017500000000030612260314606031747 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, included for testing purposes. [] let main args = System.Console.WriteLine "Hello world" printfn "Hello world" 0 ././@LongLink0000644000000000000000000000015612266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConsoleApp.slnfsharp-3.0.34/tests/projects/Sample_VS2010_FSharp_ConsoleApp_net40/SampleVisualStudio2010FSharpConso0000664000175000017500000000167112260314606031755 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SampleVisualStudio2010FSharpConsoleApp", "SampleVisualStudio2010FSharpConsoleApp\SampleVisualStudio2010FSharpConsoleApp.fsproj", "{116CC2F9-F987-4B3D-915A-34CAC04A73DA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.ActiveCfg = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.Build.0 = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.ActiveCfg = Release|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/0000775000175000017500000000000012260314606023167 5ustar chrischrisfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console.sln0000664000175000017500000000175012260314606032014 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "Sample_MonoDevelop_3_2_8_Console", "Sample_MonoDevelop_3_2_8_Console\Sample_MonoDevelop_3_2_8_Console.fsproj", "{6A6B7AF8-C2FB-4271-A1D1-0D16C3770949}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {6A6B7AF8-C2FB-4271-A1D1-0D16C3770949}.Debug|x86.ActiveCfg = Debug|x86 {6A6B7AF8-C2FB-4271-A1D1-0D16C3770949}.Debug|x86.Build.0 = Debug|x86 {6A6B7AF8-C2FB-4271-A1D1-0D16C3770949}.Release|x86.ActiveCfg = Release|x86 {6A6B7AF8-C2FB-4271-A1D1-0D16C3770949}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = Sample_MonoDevelop_3_2_8_Console\Sample_MonoDevelop_3_2_8_Console.fsproj EndGlobalSection EndGlobal fsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/0000775000175000017500000000000012260314606031273 5ustar chrischris././@LongLink0000644000000000000000000000015212266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/Program.fsfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/Progr0000664000175000017500000000062612260314606032313 0ustar chrischris // NOTE: If warnings appear, you may need to retarget this project to .NET 4.0. Show the Solution // Pad, right-click on the project node, choose 'Options --> Build --> General' and change the target // framework to .NET 4.0 or .NET 4.5. module Sample_MonoDevelop_3_2_8_Console.Main open System let someFunction x y = x + y [] let main args = Console.WriteLine("Hello world!") 0 ././@LongLink0000644000000000000000000000020712266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console.fsprojfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/Sampl0000664000175000017500000000370312260314606032275 0ustar chrischris Debug x86 10.0.0 2.0 {6A6B7AF8-C2FB-4271-A1D1-0D16C3770949} Exe Sample_MonoDevelop_3_2_8_Console Sample_MonoDevelop_3_2_8_Console v4.5 true full bin\Debug DEBUG prompt True x86 true pdbonly true bin\Release prompt True x86 true ././@LongLink0000644000000000000000000000015712266073264011655 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/AssemblyInfo.fsfsharp-3.0.34/tests/projects/Sample_MonoDevelop_3_2_8_Console/Sample_MonoDevelop_3_2_8_Console/Assem0000664000175000017500000000113212260314606032263 0ustar chrischrismodule Sample_MonoDevelop_3_2_8_Console.AssemblyInfo open System.Reflection open System.Runtime.CompilerServices [] [] [] [] [] [] [] // The assembly version has the format {Major}.{Minor}.{Build}.{Revision} [] //[] //[] () fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/0000775000175000017500000000000012260314606023621 5ustar chrischris././@LongLink0000644000000000000000000000015512266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000174612260314606031615 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Sample_VS2012_FSharp_ConsoleApp_net40", "Sample_VS2012_FSharp_ConsoleApp_net40\Sample_VS2012_FSharp_ConsoleApp_net40.fsproj", "{563C9D5C-966A-4121-84BA-3EF62626D999}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {563C9D5C-966A-4121-84BA-3EF62626D999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Debug|Any CPU.Build.0 = Debug|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Release|Any CPU.ActiveCfg = Release|Any CPU {563C9D5C-966A-4121-84BA-3EF62626D999}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal ././@LongLink0000644000000000000000000000015212266073264011650 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_n0000775000175000017500000000000012260314606031603 5ustar chrischris././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000273212260314606031611 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, targeting .NET 4.0 // On Windows, the build should reference // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" // -r:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Numerics.dll" // and should reference one of these depending on the language version of F# being used // -r:"C:Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\FSharp.Core.dll" // -r:"C:Program Files\Reference Assemblies\Microsoft\FSharp\3.0\Runtime\v4.0\FSharp.Core.dll" // // On Mac, you'll get something like this: // -r:"/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/FSharp.Core.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/mscorlib.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.Core.dll" // -r:"/Library/Frameworks/Mono.framework/Versions/2.10.9/lib/mono/4.0/System.Numerics.dll" module M type C() = member val x = 1 System.Console.WriteLine "Helo World" [] let main argv = printfn "%A" argv 0 // return an integer exit code ././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40/App.configfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000123512260314606031606 0ustar chrischris ././@LongLink0000644000000000000000000000022612266073264011652 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_net40.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net40/Sample_VS2012_FSharp_ConsoleApp_n0000664000175000017500000000603412260314606031610 0ustar chrischris Debug AnyCPU 2.0 563c9d5c-966a-4121-84ba-3ef62626d999 Exe Sample_VS2012_FSharp_ConsoleApp_net40 Sample_VS2012_FSharp_ConsoleApp_net40 Sample_VS2012_FSharp_ConsoleApp_net40 10.0.0 False True full False False bin\Debug\ DEBUG;TRACE 3 AnyCPU bin\Debug\Sample_VS2012_FSharp_ConsoleApp_net40.XML true pdbonly True True bin\Release\ TRACE 3 AnyCPU bin\Release\Sample_VS2012_FSharp_ConsoleApp_net40.XML true False ..\..\..\..\..\..\fsharp\lib\debug\4.0\FSharp.Core.dll 11 fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/0000775000175000017500000000000012260314606023625 5ustar chrischris././@LongLink0000644000000000000000000000015312266073264011651 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/fsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000775000175000017500000000000012260314606031754 5ustar chrischris././@LongLink0000644000000000000000000000023012266073264011645 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/SampleVisualStudio2010FSharpConsoleApp.fsprojfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000647212260314606031767 0ustar chrischris Debug x86 8.0.30703 2.0 {116cc2f9-f987-4b3d-915a-34cac04a73da} Exe SampleVisualStudio2010FSharpConsoleApp SampleVisualStudio2010FSharpConsoleApp v3.5 SampleVisualStudio2010FSharpConsoleApp false true full false false bin\Debug\ DEBUG;TRACE 3 x86 bin\Debug\SampleVisualStudio2010FSharpConsoleApp.XML pdbonly true true bin\Release\ TRACE 3 x86 bin\Release\SampleVisualStudio2010FSharpConsoleApp.XML false 11 ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp/Program.fsfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000025312260314606031756 0ustar chrischris// This is a sample F# app created in Visual Studio 2012, included for testing purposes. [] let main args = System.Console.WriteLine "Hello world" 0 ././@LongLink0000644000000000000000000000015612266073264011654 Lustar rootrootfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConsoleApp.slnfsharp-3.0.34/tests/projects/Sample_VS2012_FSharp_ConsoleApp_net35/SampleVisualStudio2010FSharpConso0000664000175000017500000000167112260314606031763 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SampleVisualStudio2010FSharpConsoleApp", "SampleVisualStudio2010FSharpConsoleApp\SampleVisualStudio2010FSharpConsoleApp.fsproj", "{116CC2F9-F987-4B3D-915A-34CAC04A73DA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.ActiveCfg = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Debug|x86.Build.0 = Debug|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.ActiveCfg = Release|x86 {116CC2F9-F987-4B3D-915A-34CAC04A73DA}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/install-sh0000775000175000017500000003253712260314606014106 0ustar chrischris#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: fsharp-3.0.34/LICENSE0000664000175000017500000002176712260314606013112 0ustar chrischrisApache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. See FAQ for answers to frequently asked questions about this license. fsharp-3.0.34/.gitattributes0000664000175000017500000000115612260314606014766 0ustar chrischris# Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs text diff=csharp *.sln text eol=crlf merge=union *.csproj text merge=union *.vbproj text merge=union *.fsproj text merge=union *.dbproj text merge=union # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain targets.make text eol=lf install-sh text eol=lf *.in text eol=lf *.ac text eol=lf *.sh text eol=lf fsharp-3.0.34/launcher.in0000664000175000017500000000161012260314606014217 0ustar chrischris#!/bin/sh EXEC="exec " if test x"$1" = x--debug; then DEBUG=--debug shift fi if test x"$1" = x--gdb; then shift EXEC="gdb --eval-command=run --args " fi if test x"$1" = x--valgrind; then shift EXEC="valgrind $VALGRIND_OPTIONS" fi MONO_GC_OPTIONS=@mono_gc_options@ if test x"$1" = x--gc=boehm; then shift MONO_GC_OPTIONS=--gc=boehm fi # Beware this line must match the regular expression " (\/.*)\/fsi\.exe" when @TOOL@ is fsi.exe. # That's because the FSharp MonoDevelop addin looks inside the text of this script to determine the installation # location of the default FSharp install in order to find the FSharp compiler binaries (see # fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerLocationUtils.fs). That's a pretty unfortunate # way of finding those binaries. And really should be changed. $EXEC mono $DEBUG $MONO_OPTIONS $MONO_GC_OPTIONS @DIR@/@TOOL@ "$@" fsharp-3.0.34/.travis.yml0000664000175000017500000000117012260314606014200 0ustar chrischrislanguage: objective-c env: matrix: - MONO_VERSION="3.2.5" install: - wget "http://download.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" - sudo installer -pkg "MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" -target / script: - xbuild ./src/fsharp-proto-build.proj - xbuild ./src/fsharp-library-build.proj - xbuild ./src/fsharp-compiler-build.proj - xbuild ./src/fsharp-library-unittests-build.proj /p:TargetFramework=net40 - /Library/Frameworks/Mono.framework/Versions/${MONO_VERSION}/bin/nunit-console4 ./lib/debug/4.0/FSharp.Core.Unittests.dll fsharp-3.0.34/configure.ac0000664000175000017500000000622012260314606014356 0ustar chrischris# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.61]) AC_INIT([fsharp], [0.1], [avidigal@novell.com]) # Checks for programs. AC_PROG_MAKE_SET AC_PATH_PROG(PKG_CONFIG, pkg-config, no) # On OSX use Mono's private copy of pkg-config if it exists, see https://github.com/fsharp/fsharp/issues/107 osx_pkg_config=/Library/Frameworks/Mono.framework/Versions/Current/bin/pkg-config if test -e $osx_pkg_config; then PKG_CONFIG=$osx_pkg_config elif test "x$PKG_CONFIG" = "xno"; then AC_MSG_ERROR([You need to install pkg-config]) fi MONO_REQUIRED_VERSION=2.9 MONO_RECOMMENDED_VERSION=3.0 if ! $PKG_CONFIG --atleast-version=$MONO_REQUIRED_VERSION mono; then AC_MSG_ERROR("You need mono $MONO_REQUIRED_VERSION") fi AC_PATH_PROG(MONO_SGEN, mono-sgen, no) if ! $PKG_CONFIG --atleast-version=$MONO_RECOMMENDED_VERSION mono; then AC_MSG_WARN([Mono $MONO_RECOMMENDED_VERSION or higher is recommended, for better MSBuild (xbuild) compatibility]) # stability of Mono's SGEN GC is not so good in older versions than Mono v3.0 MONO_SGEN=no fi # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_ARG_WITH([bootstrap], [ --with-bootstrap=], [], [with_bootstrap=lib/bootstrap]) with_bootstrap=$(cd "$with_bootstrap" && pwd) AC_SUBST(with_bootstrap) AC_ARG_WITH([gacdir], [ --with-gacdir=/path/to/gac Specify the gac directory (ex: /usr/lib/mono/gac)], [], [with_gacdir=no] ) MONOPREFIX=$(cd `$PKG_CONFIG --variable=prefix mono` && pwd) MONOLIBDIR="$MONOPREFIX"/lib MONOGACDIR="$MONOLIBDIR"/mono if ! test "x$with_gacdir" = "xno"; then MONOGACDIR=$(cd "$with_gacdir/.." && pwd) fi MONOGACDIR20="$MONOGACDIR"/2.0 MONOGACDIR35="$MONOGACDIR"/3.5 MONOGACDIR40="$MONOGACDIR"/4.0 if ! test -e $MONOGACDIR20/mscorlib.dll; then AC_ERROR(Couldn't find the mono gac directory or mscorlib.dll in the usual places. Set --with-gacdir=) fi AC_SUBST(MONOLIBDIR) AC_SUBST(MONOGACDIR) AC_SUBST(MONOGACDIR20) AC_SUBST(MONOGACDIR35) AC_SUBST(MONOGACDIR40) if test "x$MONO_SGEN" = "xno"; then mono_gc_options= else mono_gc_options=--gc=sgen fi AC_SUBST(mono_gc_options) AC_CONFIG_FILES([ launcher Makefile config.make src/fsharp/Makefile src/fsharp/FSharp.Build-proto/Makefile src/fsharp/FSharp.Compiler-proto/Makefile src/fsharp/Fsc-proto/Makefile src/fsharp/FSharp.Core/Makefile src/fsharp/FSharp.Build/Makefile src/fsharp/FSharp.Compiler/Makefile src/fsharp/Fsc/Makefile src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile src/fsharp/FSharp.Compiler.Server.Shared/Makefile src/fsharp/FSharp.Data.TypeProviders/Makefile src/fsharp/fsi/Makefile src/fsharp/fsiAnyCpu/Makefile src/fsharp/policy.2.0.FSharp.Core/Makefile src/fsharp/policy.4.0.FSharp.Core/Makefile src/fsharp/policy.2.3.FSharp.Core/Makefile src/fsharp/policy.4.3.FSharp.Core/Makefile ]) AC_OUTPUT if ! test "x$MONOPREFIX" = "x$prefix"; then AC_WARN([Prefix to use is not the same as mono's: $prefix Consider using: ./autogen.sh --prefix=$MONOPREFIX]) fi fsharp-3.0.34/README.md0000664000175000017500000002153212260314606013352 0ustar chrischrisThis is the F# compiler, core library and core tools (open source edition). It uses the Apache 2.0 license. The `master` branch is for the latest version of F# (currently F# 3.0). To bootstrap the compiler, binaries built from an earlier version of this project are used. ## Requirements Requires mono 2.9 or higher. Prefer Mono 3.0. On OSX, requires automake 2.69. To install from [homebrew](http://mxcl.github.com/homebrew): ``` brew install automake ``` ## Build status F# 3.0 (branch ``master``), Mono 3.x, OSX + some unit tests (Travis) [![Build Status](https://travis-ci.org/fsharp/fsharp.png?branch=master)](https://travis-ci.org/fsharp/fsharp/branches) F# 3.0 (branch ``fsharp_30``), Mono 3.x, OSX + some unit tests (Travis) [![Build Status](https://travis-ci.org/fsharp/fsharp.png?branch=fsharp_30)](https://travis-ci.org/fsharp/fsharp/branches) F# 3.1 (branch ``fsharp_31``, Mono 3.x, OSX + some unit tests (Travis) [![Build Status](https://travis-ci.org/fsharp/fsharp.png?branch=fsharp_31)](https://travis-ci.org/fsharp/fsharp/branches) Mono 3.x (TeamCity) [![Build Status (Mono, TeamCity)][teamcity mono icon]][teamcity mono url] .NET 4.0, Windows (TeamCity) [![Windows .net 4.0 (TeamCity)][teamcity net40 icon]][teamcity net40 url] .NET 2.0 etc., Windows (TeamCity) [![Windows .net 2.0 etc.][teamcity net20 icon]][teamcity net20 url] ## Building ### On Linux and other Unix systems: The usual: ``` ./autogen.sh make sudo make install ``` By default that makes optimized binaries. To make debug, use ```make CONFIG=debug``` ### On MacOS (OSX) Use a prefix to your version of Mono: ``` ./autogen.sh --prefix=/Library/Frameworks/Mono.framework/Versions/Current/ make sudo make install ``` By default that makes optimized binaries. To make debug, use ```make CONFIG=debug``` ### On Windows, using msbuild (e.g.. if .NET is installed) If you have only VS2012 installed, and not VS2010, you'll need to install the F# 2.0 Runtime (http://www.microsoft.com/en-us/download/details.aspx?id=13450) ``` cd src msbuild fsharp-proto-build.proj ngen install ..\lib\proto\4.0\fsc-proto.exe (optional) msbuild fsharp-library-build.proj /p:Configuration=Release msbuild fsharp-compiler-build.proj /p:Configuration=Release ``` You can also build the FSharp.Core for .NET 2.0, Mono 2.1, MonoTouch, Silverlight 5.0, Windows Phone 7.1, Portable Profile47 (net45+sl5+win8), Portable Profile88 (net4+sl4+wp71+win8) and XNA 4.0 for Xbox 360 profiles: ``` msbuild fsharp-library-build.proj /p:TargetFramework=net20 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=mono21 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=monotouch /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=portable-net45+sl5+win8 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=portable-net4+sl4+wp71+win8 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=sl5 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=wp7 /p:Configuration=Release msbuild fsharp-library-build.proj /p:TargetFramework=net40-xna40-xbox360 /p:Configuration=Release ``` You can also build the FSharp.Core and FSharp.Compiler.Silverlight.dll for Silverlight 5.0: ``` msbuild fsharp-library-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release msbuild fsharp-compiler-build.proj /p:TargetFramework=sl5-compiler /p:Configuration=Release ``` Change to ``` /p:Configuration=Debug``` for debug binaries. ### On Windows, using xbuild (e.g. if no .NET is installed and only Mono 3.0 is installed): ``` cd src xbuild fsharp-proto-build.proj xbuild fsharp-library-build.proj xbuild fsharp-compiler-build.proj ``` Building using xbuild does not yet lay down a Mono-ready distribution (see src/fsharp/targets.make), so should only be used for private development rather than preparing distributions. ## Strong Names The FSharp.Core.dll produced is only delay-signed (Mono does not require strong names). If a strong-name signed FSharp.Core.dll is needed then use the one in ``` lib\bootstrap\signed\3.0\v4.0\FSharp.Core.dll ``` ## What you get Once built the main compiler binaries go in lib/release/4.0 There are versions of FSharp.Core for .NET 2.0, MonoAndroid, MonoTouch (Mono profile 2.1) in lib/release/2.0 lib/release/2.1 lib/release/2.1monotouch On 'make install' the binaries etc. go in the prefix, e.g. /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.0/FSharp.Core.dll /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/2.1/FSharp.Core.dll /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/fsc.exe /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.0/FSharp.Compiler.dll ... /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/fsc.exe /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/FSharp.Compiler.dll ... /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/gac/.../FSharp.Compiler.dll ... plus some files for xbuild support /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ F#/v4.0/* /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/Microsoft\ SDKs/F#/3.0/Framework/* (these names are the canonical names for Microsoft.FSharp.Targets used by project files coming from Visual Studio) plus scripts /usr/bin/fsharpc (F# compiler) /usr/bin/fsharpi (F# Interactive) ## Development notes ###Continuous Integration Build We have a CI build set up with the JetBrains/Teamcity server as part of the F# community projects there: http://teamcity.codebetter.com/project.html?projectId=project61&tab=projectOverview @forki controls access. Right now this builds both a Mono 'make' install and a Windows 'cd src; msbuild fsharp-build.proj' build. No binaries are saved from the build, it is just for sanity checking. ###Editing the Compiler with Visual Studio or MonoDevelop Open `all-vs2012.sln`, and edit in modes Debug or Release. The compiler takes a good while to compile and that can be a bit invasive to the work flow, so it's normally better to do the actual compilation from the command line, see above. The F# support in MonoDevelop uses an in-process background compiler. On the Mac this causes pausing garbage collections to kick in which makes editing the compiler in MonoDevelop awkward. ### Building F# Core Unit Tests for .NET 4.x (optional) This uses the proto compiler to build the unit tests that check some parts of `FSharp.Core.dll` and `FSharp.Compiler.dll`. There is also another set of tests under `tests\fsharp`. ``` msbuild fsharp-library-unittests-build.proj /p:TargetFramework=net40 ``` *Note: You must have NUnit installed to build the unit tests.* ### Validation and Use Here are some simple tests to validate what you have built by checking `fsi.exe` (F# Interactive) starts up: ``` lib\debug\4.0\fsi.exe 1 + 1;; \#q;; lib\debug\4.0\fsi.exe /help lib\debug\4.0\fsc.exe /help echo printfn "hello world" > hello.fs lib\debug\4.0\fsc.exe hello.fs hello.exe ``` ### Running Compiler tests (on Windows) There are language tests under `tests\fsharp\core`. The test apparatus is primitive and unfortunately uses batch files. You can run these on Windows using: ``` cd ..\tests\fsharp\core ..\..\build-and-run-all-installed-ilx-configs.bat results.log ``` The results file will contain one entry for each test directory, plus any reported errors. ``` tests\fsharp\core tests\fsharp\core\queriesCustomQueryOps tests\fsharp\core\queriesLeafExpressionConvert tests\fsharp\core\queriesNullableOperators tests\fsharp\core\queriesOverIEnumerable ... ``` Some tests for LINQ queries require SQL Server be installed. A failing test will look like this: ``` ERRORLEVEL=1: in tests\fsharp\core\csfromfs\build.bat ``` You can then go to the relevant directory and run `build.bat` and `run.bat`. ## History F# compiler sources dropped by Microsoft are available from [fsharppowerpack.codeplex.com](http://fsharppowerpack.codeplex.com). Uses bootstrapping libraries, tools and F# compiler. The `lib/bootstrap/X.0` directories contain mono-built libraries, compiler and tools that can be used to bootstrap a build. You can also supply your own via the `--with-bootstrap` option. [teamcity mono icon]: http://teamcity.codebetter.com/app/rest/builds/buildType:(id:bt814)/statusIcon [teamcity mono url]: http://teamcity.codebetter.com/viewType.html?buildTypeId=bt814&guest=1 [teamcity net40 icon]: http://teamcity.codebetter.com/app/rest/builds/buildType:(id:bt817)/statusIcon [teamcity net40 url]: http://teamcity.codebetter.com/viewType.html?buildTypeId=bt817&guest=1 [teamcity net20 icon]: http://teamcity.codebetter.com/app/rest/builds/buildType:(id:bt827)/statusIcon [teamcity net20 url]: http://teamcity.codebetter.com/viewType.html?buildTypeId=bt827&guest=1 fsharp-3.0.34/Makefile.in0000664000175000017500000000107112260314606014134 0ustar chrischrisinclude $(topsrcdir)config.make all clean install do-proto do-final do-2-1 install-2-1 clean-2-0 clean-2-1 clean-4-0: $(MAKE) -C src/fsharp $@ dist: -rm -r fsharp-$(DISTVERSION) fsharp-$(DISTVERSION).tar.bz2 mkdir -p fsharp-$(DISTVERSION) (cd $(topdir) && git archive HEAD |(cd $(builddir)fsharp-$(DISTVERSION) && tar xf -)) list='$(EXTRA_DIST)'; for s in $$list; do \ (cp $(topdir)$$s fsharp-$(DISTVERSION)/$$s) \ done; tar cvjf fsharp-$(DISTVERSION).tar.bz2 $(patsubst %,--exclude=%, $(NO_DIST)) fsharp-$(DISTVERSION) du -b fsharp-$(DISTVERSION).tar.bz2 fsharp-3.0.34/dependencies/0000775000175000017500000000000012260314606014516 5ustar chrischrisfsharp-3.0.34/build.bat0000664000175000017500000000106012260314606013654 0ustar chrischris@echo off ::Env if %PROCESSOR_ARCHITECTURE%==x86 ( set MSBuild="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" ) else ( set MSBUILD=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe ) ::Clean del /F /S /Q lib\proto del /F /S /Q lib\release ::Build pushd . cd .\src set ABS_PATH=%CD% %MSBUILD% "%ABS_PATH%\fsharp-proto-build.proj" %MSBUILD% "%ABS_PATH%\fsharp-library-build.proj" /p:TargetFramework=net40 /p:Configuration=Release %MSBUILD% "%ABS_PATH%\fsharp-compiler-build.proj" /p:TargetFramework=net40 /p:Configuration=Release popd fsharp-3.0.34/msfinal.pub0000664000175000017500000000024012260314606014225 0ustar chrischris$€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“fsharp-3.0.34/README-original.md0000664000175000017500000000176712260314606015164 0ustar chrischrisF# 3.0 Compiler + Library Source Code Drop, matching Visual Studio 2012 (R) RTM binary release === The original README can be found at http://fsharppowerpack.codeplex.com/SourceControl/changeset/view/70537#1229467 It has been removed to avoid confusion because the build instructions were Windows-specific. **License:** subject to terms and conditions of the Apache License, Version 2.0. A copy of the license can be found in the License.html file at the root of this distribution. By using this source code in any fashion, you are agreeing to be bound by the terms of the Apache License, Version 2.0. You must not remove this notice, or any other, from this software. **Questions?** If you have questions about the source code, please ask at the [F# Open Source Google Group](http://groups.google.com/group/fsharp-opensource). Please do not ask the Visual F# team at Microsoft for help with this source code: they like to be friendly, but they are very busy working on improving F# and need to focus on that. fsharp-3.0.34/.gitignore0000664000175000017500000000362312260314606014064 0ustar chrischrislib/debug lib/release lib/proto lib/bootstrap/4.0/*.mdb lib/bootstrap/4.0/*.xml lib/bootstrap/4.0/fsharpc lib/bootstrap/4.0/fsharpi lib/bootstrap/4.0/policy* aclocal.m4 src/*.userprefs src/fsharp/FSStrings.resources lkg pack src/fsharp/FSharp.Build/*.resx src/fsharp/FSharp.Build-proto/*.resx src/fsharp/FSharp.Build-proto/*.resources src/fsharp/FSharp.Compiler-proto/*.resx src/fsharp/FSharp.Compiler-proto/*.resources src/fsharp/FSharp.Compiler-proto/*.sln src/fsharp/FSharp.Compiler-proto/*.userprefs src/fsharp/fsi/*.resx src/fsharp/FSharp.Compiler.Interactive.Settings/*.resx src/fsharp/FSharp.Compiler.Server.Shared/*.resx src/fsharp/fsi/Fsi.sln src/fsharp/FSharp.Build/*.resources src/fsharp/FSharp.Compiler/*.resx src/fsharp/FSharp.Compiler/*.resources src/fsharp/FSharp.Compiler/*.sln src/fsharp/FSharp.Compiler/*.userprefs Debug Proto .libs Makefile configure launcher autom4te.cache config.log config.make config.status src/fsharp/FSharp.Compiler/illex.fs src/fsharp/FSharp.Compiler/ilpars.fs src/fsharp/FSharp.Compiler/ilpars.fsi src/fsharp/FSharp.Compiler/lex.fs src/fsharp/FSharp.Compiler/pars.fs src/fsharp/FSharp.Compiler/pars.fsi src/fsharp/FSharp.Compiler-proto/illex.fs src/fsharp/FSharp.Compiler-proto/ilpars.fs src/fsharp/FSharp.Compiler-proto/ilpars.fsi src/fsharp/FSharp.Compiler-proto/lex.fs src/fsharp/FSharp.Compiler-proto/pars.fs src/fsharp/FSharp.Compiler-proto/pars.fsi src/fsharp/FSharp.Compiler.Silverlight/lex.fs src/fsharp/FSharp.Compiler.Silverlight/pars.fs src/fsharp/FSharp.Compiler.Silverlight/pars.fsi *~ tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45.sln tests/projects/Sample_VS2012_FSharp_ConsoleApp_net45_with_resource/Sample_VS2012_FSharp_ConsoleApp_net45/Sample_VS2012_FSharp_ConsoleApp_net45.userprefs *.suo obj src/fsharp/FSharp.Data.TypeProviders/FSData.resx src/fsharp/fsiAnyCpu/FSIstrings.resx fsharp-3.0.34/config.make.in0000664000175000017500000000717012260314606014606 0ustar chrischrisbootstrap := @with_bootstrap@ prefix := @prefix@ topdir := @abs_top_srcdir@/ builddir := @abs_top_builddir@/ libdir := ${prefix}/lib/ bindir := ${prefix}/bin/ monolibdir := @MONOLIBDIR@ monogacdir := @MONOGACDIR@ monogacdir20 := @MONOGACDIR20@ #This is where to find MonoTouch of MonoAndroid, for "make do-2-1" # #For now this is hardwired, it should be optionally detected by configure.ac monogacdir21 := @abs_top_srcdir@/dependencies/mono/2.1 monogacdir35 := @MONOGACDIR35@ monogacdir40 := @MONOGACDIR40@ gacdir := ${libdir}mono gacdir20 := ${gacdir}/2.0 gacdir40 := ${gacdir}/4.0 tooldir := $(topdir)lib/bootstrap/4.0/ MONO_OPTIONS += @mono_gc_options@ CONFIG = release DISTVERSION = 201011 VERSION_2_0 = 2.3.0.0 VERSION_2_1 = 2.3.1.0 VERSION_4_0 = 4.3.0.0 TARGET_2_0 = 2.0 TARGET_2_1 = 2.1 TARGET_4_0 = 4.0 DELAY_SIGN_TOKEN = b03f5f7f11d50a3a SIGN_TOKEN = f536804aa0eb945b bootstrapdir = $(bootstrap)/4.0/ tmpdir = .libs/$(CONFIG)/ objdir = $(tmpdir)$(TARGET)/ protodir = $(builddir)/lib/proto/4.0/ outdir = $(builddir)lib/$(CONFIG)/$(TARGET)/ FSSRGEN = $(tooldir)../2.0/fssrgen.exe FSLEX = $(tooldir)../2.0/fslex.exe FSYACC = $(tooldir)../2.0/fsyacc.exe FLAGS = \ --doc:$(objdir)$(NAME).xml \ --version:$(VERSION) \ --debug:pdbonly \ --optimize+ \ --mlcompatibility \ --noframework \ --fullpaths \ --times \ --nowarn:9 DELAY_SIGN_FLAGS = \ --define:STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY \ --delaysign+ \ --keyfile:$(topdir)msfinal.pub SIGN_FLAGS = \ --define:STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY \ --keyfile:$(topdir)/src/fsharp/test.snk DEFINES_GENERAL = \ --define:TRACE \ --define:CROSS_PLATFORM_COMPILER ifeq ($(CONFIG),debug) DEFINES_DEBUG = \ --define:CODE_ANALYSIS \ --define:DEBUG else DEFINES_DEBUG = endif DEFINES_2_0 = \ $(DEFINES_GENERAL) \ $(DEFINES_DEBUG) \ --define:FX_NO_STRUCTURAL_EQUALITY \ --define:FX_NO_IOBSERVABLE \ --define:FX_NO_TUPLE \ --define:FX_ATLEAST_35 \ --define:FX_NO_LAZY \ --define:FX_NO_CANCELLATIONTOKEN_CLASSES \ --define:FX_NO_MONITOR_REPORTS_LOCKTAKEN \ --define:FX_NO_TPL_PARALLEL \ --define:FX_NO_CUSTOMATTRIBUTEDATA \ --define:FX_NO_TASK \ --define:FX_NO_BIGINT DEFINES_2_1 = \ $(DEFINES_GENERAL) \ $(DEFINES_DEBUG) \ --define:FX_NO_STRUCTURAL_EQUALITY \ --define:FX_NO_CUSTOMATTRIBUTEDATA \ --define:FX_NO_BIGINT_CULTURE_PARSE \ --define:FX_ATLEAST_40 \ --define:FX_ATLEAST_35 \ --define:FX_ATLEAST_LINQ \ --define:FX_NO_BIGINT DEFINES_4_0 = \ $(DEFINES_GENERAL) \ $(DEFINES_DEBUG) \ --define:FX_NO_BIGINT_CULTURE_PARSE \ --define:FX_ATLEAST_40 \ --define:FX_ATLEAST_35 \ --define:FX_ATLEAST_LINQ REFERENCES_2_0 = \ -r:$(monogacdirXX)/Microsoft.Build.Engine.dll \ -r:$(monogacdirXX)/Microsoft.Build.Framework.dll \ -r:$(monogacdir35)/Microsoft.Build.Tasks.v3.5.dll \ -r:$(monogacdir35)/Microsoft.Build.Utilities.v3.5.dll \ -r:$(monogacdirXX)/mscorlib.dll \ -r:$(monogacdirXX)/System.Core.dll \ -r:$(monogacdirXX)/System.dll REFERENCES_2_1 = \ -r:$(monogacdir21)/mscorlib.dll \ -r:$(monogacdir21)/System.Core.dll \ -r:$(monogacdir21)/System.dll REFERENCES_4_0 = \ -r:$(monogacdirXX)/Microsoft.Build.Engine.dll \ -r:$(monogacdirXX)/Microsoft.Build.Framework.dll \ -r:$(monogacdirXX)/Microsoft.Build.Tasks.v4.0.dll \ -r:$(monogacdirXX)/Microsoft.Build.Utilities.v4.0.dll \ -r:$(monogacdirXX)/mscorlib.dll \ -r:$(monogacdirXX)/System.Core.dll \ -r:$(monogacdirXX)/System.dll \ -r:$(monogacdirXX)/System.Numerics.dll INSTALL = $(SHELL) $(topdir)install-sh INSTALL_DATA = $(INSTALL) -c -m 644 INSTALL_BIN = $(INSTALL) -c -m 755 INSTALL_LIB = $(INSTALL_BIN) EXTRA_DIST = configure NO_DIST = .gitignore lib/debug lib/proto lib/release DEFAULT: all fsharp-3.0.34/src/0000775000175000017500000000000012260314606012657 5ustar chrischrisfsharp-3.0.34/src/FSharpSource.Settings.targets0000775000175000017500000000302612260314606020421 0ustar chrischris Debug AnyCPU bin\$(Configuration) 3 full false DEBUG;TRACE prompt pdbonly true TRACE prompt fsharp-3.0.34/src/fsharp-library-unittests-build.proj0000775000175000017500000000123112260314606021635 0ustar chrischris net40 fsharp-3.0.34/src/assemblyinfo/0000775000175000017500000000000012260314606015352 5ustar chrischrisfsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Silverlight.dll.fs0000775000175000017500000000134412260314606026404 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] // Note: internals visible to unit test DLLs in Retail (and all) builds. [] [] [] [] do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Data.TypeProviders.dll.fs0000664000175000017500000000517712260314606026033 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] do() #if NO_STRONG_NAMES [] [] #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY [] // ensure we replace any 4.0.30319.* or 4.0.31105.* versions in the GAC. These are the FileVersions for RTM VS2010 and SP1 VS2010 [] [] #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY [] // ensure we replace any 4.0.30319.* or 4.0.31105.* versions in the GAC. These are the FileVersions for RTM VS2010 and SP1 VS2010 [] [] #endif do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Core.dll.fs0000775000175000017500000000112412260314606023223 0ustar chrischris namespace Microsoft.FSharp open System.Reflection [] [] [] [] #if PORTABLE [] [] // ensure we replace any 4.0.30319.* or 4.0.31105.* versions in the GAC. These are the FileVersions for RTM VS2010 and SP1 VS2010 #endif do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Server.Shared.dll.fs0000775000175000017500000000616412260314606026570 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] #if NO_STRONG_NAMES [] [] [] #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY [] [] [] #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY [] [] [] #endif do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Compiler.Interactive.Settings.dll.fs0000775000175000017500000000436612260314606030173 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] #if NO_STRONG_NAMES [] [] #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY [] [] #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY [] [] #endif do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.fsc.exe.fs0000775000175000017500000000134412260314606021736 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] [] [] do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Build.dll.fs0000775000175000017500000000437312260314606023403 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] do() #if NO_STRONG_NAMES [] [] #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY [] [] #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY [] [] #endif do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.fsi.exe.fs0000775000175000017500000000052112260314606021740 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] [] do() do() fsharp-3.0.34/src/assemblyinfo/assemblyinfo.FSharp.Compiler.dll.fs0000775000175000017500000003313412260314606024113 0ustar chrischris#light namespace Microsoft.FSharp open System.Reflection [] [] [] [] #if NO_STRONG_NAMES [] [] [] [] [] [] [] [] [] // Note: internals visible to unit test DLLs in Retail (and all) builds. [] [] [] [] #if BUILDING_WITH_LKG [] #endif #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY [] [] [] [] [] [] [] [] [] [] [] [] [] [] #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY [] [] [] [] [] [] [] [] [] [] [] [] [] [] #endif #if BUILDING_WITH_LKG [] #endif do() fsharp-3.0.34/src/source-build-version-2.3.0.00000775000175000017500000000000712260314606017456 0ustar chrischris2.3.0.0fsharp-3.0.34/src/fsharp-build.proj0000775000175000017500000000053112260314606016135 0ustar chrischris fsharp-3.0.34/src/root.traversal.targets0000775000175000017500000000060412260314606017242 0ustar chrischris fsharp-3.0.34/src/fsharp-proto-build.proj0000775000175000017500000000122112260314606017273 0ustar chrischris Proto fsharp-3.0.34/src/ilx/0000775000175000017500000000000012260314606013453 5ustar chrischrisfsharp-3.0.34/src/ilx/ilxsettings.fs0000775000175000017500000000413212260314606016365 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.IlxSettings open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX type IlxCallImplementation = | VirtEntriesVirtCode //++GLOBAL MUTABLE STATE let ilxCompilingFSharpCoreLib = ref false //++GLOBAL MUTABLE STATE let ilxFsharpCoreLibAssemRef = ref (None : ILAssemblyRef option) /// Scope references for FSharp.Core.dll let ilxFsharpCoreLibScopeRef () = if !ilxCompilingFSharpCoreLib then ILScopeRef.Local else let assref = match !ilxFsharpCoreLibAssemRef with | Some o -> o | None -> // The exact public key token and version used here don't actually matter, or shouldn't. // ilxFsharpCoreLibAssemRef is only 'None' for startup code paths such as // IsSignatureDataVersionAttr, where matching is done by assembly name strings // rather then versions and tokens. ILAssemblyRef.Create("FSharp.Core", None, Some (PublicKeyToken(Bytes.ofInt32Array [| 0xb0; 0x3f; 0x5f; 0x7f; 0x11; 0xd5; 0x0a; 0x3a |])), false, Some (IL.parseILVersion "0.0.0.0"), None) ILScopeRef.Assembly assref let ilxNamespace () = "Microsoft.FSharp.Core"fsharp-3.0.34/src/ilx/pubclo.fsi0000775000175000017500000000116412260314606015447 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) /// Internal use only. Erase closures module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.EraseIlxFuncs open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types val ConvModule: ILGlobals -> ILModuleDef -> ILModuleDef type cenv val mkILFuncTy : cenv -> ILType -> ILType -> ILType val mkILTyFuncTy : cenv -> ILType val new_cenv : ILGlobals -> cenv val mkTyOfLambdas: cenv -> IlxClosureLambdas -> ILType fsharp-3.0.34/src/ilx/cu_erase.fsi0000775000175000017500000000106212260314606015746 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) // -------------------------------------------------------------------- // Internal use only. Erase discriminated unions. // -------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.EraseIlxUnions open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types val ConvModule: ILGlobals -> ILModuleDef -> ILModuleDef val GetILTypeForAlternative : IlxUnionSpec -> int -> ILType fsharp-3.0.34/src/ilx/pubclo.fs0000775000175000017500000010457612260314606015311 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.EraseIlxFuncs open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.IlxSettings open Microsoft.FSharp.Compiler.AbstractIL.Morphs open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.PrettyNaming let addMethodGeneratedAttrsToTypeDef ilg tdef = { tdef with Methods = tdef.Methods.AsList |> List.map (fun md -> md |> addMethodGeneratedAttrs ilg) |> mkILMethods } // -------------------------------------------------------------------- // Erase closures and function types // by compiling down to code pointers, classes etc. // -------------------------------------------------------------------- let notlazy v = Lazy.CreateFromValue v let logging = false let _ = if logging then dprintn "*** warning: Clo2_erase.logging is on" let rec stripUpTo n test dest x = if n = 0 then ([],x) else if test x then let l,r = dest x let ls,res = stripUpTo (n-1) test dest r (l::ls),res else ([],x) // -------------------------------------------------------------------- // Flags. These need to match the various classes etc. in the // ILX standard library, and the parts // of the makefile that select the right standard library for a given // combination of flags. // // Beyond this, the translation inserts classes or value classes for // the closure environment. // -------------------------------------------------------------------- let destTyLambda = function Lambdas_forall(l,r) -> (l,r) | _ -> failwith "no" let isTyLambda = function Lambdas_forall(_l,_r) -> true | _ -> false let isTyApp = function Apps_tyapp (_b,_c) ->true | _ -> false let stripTyLambdasUpTo n lambdas = stripUpTo n isTyLambda destTyLambda lambdas // -------------------------------------------------------------------- // Three tables related to indirect calling // -------------------------------------------------------------------- *) // Supported indirect calling conventions: // 1 // 1_1 // 1_1_1 // 1_1_1_1 // 1_1_1_1_1 // plus type applications - up to 7 in one step // Nb. later code currently takes advantage of the fact that term // and type applications are never mixed in a single step. let stripSupportedIndirectCall apps = match apps with | Apps_app(x,Apps_app(y,Apps_app(z,Apps_app(w,Apps_app(v,rest))))) -> [],[x;y;z;w;v],rest | Apps_app(x,Apps_app(y,Apps_app(z,Apps_app(w,rest)))) -> [],[x;y;z;w],rest | Apps_app(x,Apps_app(y,Apps_app(z,rest))) -> [],[x;y;z],rest | Apps_app(x,Apps_app(y,rest)) -> [],[x;y],rest | Apps_app(x,rest) -> [],[x],rest | Apps_tyapp _ -> let maxTyApps = 1 let tys,rest = stripUpTo maxTyApps isTyApp destTyFuncApp apps tys,[],rest | rest -> [],[],rest // Supported conventions for baking closures: // 0 // 1 // 1_1 // 1_1_1 // 1_1_1_1 // 1_1_1_1_1 // plus type applications - up to 7 in one step // Nb. later code currently takes advantage of the fact that term // and type applications are never mixed in a single step. let stripSupportedAbstraction lambdas = match lambdas with | Lambdas_lambda(x,Lambdas_lambda(y,Lambdas_lambda(z,Lambdas_lambda(w,Lambdas_lambda(v,rest))))) -> [],[ x;y;z;w;v ],rest | Lambdas_lambda(x,Lambdas_lambda(y,Lambdas_lambda(z,Lambdas_lambda(w,rest)))) -> [],[ x;y;z;w ],rest | Lambdas_lambda(x,Lambdas_lambda(y,Lambdas_lambda(z,rest))) -> [],[ x;y;z ],rest | Lambdas_lambda(x,Lambdas_lambda(y,rest)) -> [],[ x;y ],rest | Lambdas_lambda(x,rest) -> [],[ x ],rest | Lambdas_forall _ -> let maxTyApps = 1 let tys,rest = stripTyLambdasUpTo maxTyApps lambdas tys,[ ],rest | rest -> [],[ ],rest // This must correspond to stripSupportedAbstraction let isSupportedDirectCall apps = match apps with | Apps_app (_,Apps_done _) -> true | Apps_app (_,Apps_app (_, Apps_done _)) -> true | Apps_app (_,Apps_app (_,Apps_app (_, Apps_done _))) -> true | Apps_app (_,Apps_app (_,Apps_app (_, Apps_app (_, Apps_done _)))) -> true | Apps_tyapp _ -> false | _ -> false // -------------------------------------------------------------------- // Prelude for function types. Only use System.Func for now, prepare // for more refined types later. // -------------------------------------------------------------------- let mkFuncTypeRef n = if n = 1 then mkILTyRef (IlxSettings.ilxFsharpCoreLibScopeRef (),IlxSettings.ilxNamespace () ^ ".FSharpFunc`2") else mkILNestedTyRef (IlxSettings.ilxFsharpCoreLibScopeRef (), [IlxSettings.ilxNamespace () ^ ".OptimizedClosures"], "FSharpFunc`"^ string (n + 1)) type cenv = { ilg:ILGlobals; tref_Func: ILTypeRef[]; mkILTyFuncTy: ILType } let new_cenv(ilg) = { ilg=ilg; tref_Func= Array.init 10 (fun i -> mkFuncTypeRef(i+1)); mkILTyFuncTy=ILType.Boxed (mkILNonGenericTySpec (mkILTyRef (IlxSettings.ilxFsharpCoreLibScopeRef (), IlxSettings.ilxNamespace () ^ ".FSharpTypeFunc"))) } let mkILTyFuncTy cenv = cenv.mkILTyFuncTy let mkILFuncTy cenv dty rty = mkILBoxedTy cenv.tref_Func.[0] [dty;rty] let mkILCurriedFuncTy cenv dtys rty = List.foldBack (mkILFuncTy cenv) dtys rty let typ_Func cenv (dtys: ILType list) rty = let n = dtys.Length let tref = if n <= 10 then cenv.tref_Func.[n-1] else mkFuncTypeRef n mkILBoxedTy tref (dtys @ [rty]) let rec mkTyOfApps cenv apps = match apps with | Apps_tyapp _ -> cenv.mkILTyFuncTy | Apps_app (dty,rest) -> mkILFuncTy cenv dty (mkTyOfApps cenv rest) | Apps_done rty -> rty let rec mkTyOfLambdas cenv lam = match lam with | Lambdas_return rty -> rty | Lambdas_lambda (d,r) -> mkILFuncTy cenv d.Type (mkTyOfLambdas cenv r) | Lambdas_forall _ -> cenv.mkILTyFuncTy // -------------------------------------------------------------------- // Method to call for a particular multi-application // -------------------------------------------------------------------- let mkMethSpecForMultiApp cenv (argtys': ILType list,rty) = let n = argtys'.Length let formalArgTys = List.mapi (fun i _ -> ILType.TypeVar (uint16 i)) argtys' let formalRetTy = ILType.TypeVar (uint16 n) let inst = argtys'@[rty] if n = 1 then true, (mkILNonGenericInstanceMethSpecInTy (mkILBoxedTy cenv.tref_Func.[0] inst,"Invoke",formalArgTys, formalRetTy)) else false, (mkILStaticMethSpecInTy (mkILFuncTy cenv inst.[0] inst.[1], "InvokeFast", [mkILCurriedFuncTy cenv formalArgTys formalRetTy]@formalArgTys, formalRetTy, inst.Tail.Tail)) let mkCallBlockForMultiValueApp cenv doTailCall (args',rty') inplab outlab = let callvirt,mr = mkMethSpecForMultiApp cenv (args',rty') let instrs = [ ( if callvirt then I_callvirt (doTailCall,mr, None) else I_call (doTailCall,mr, None) ) ] if doTailCall = Tailcall then mkNonBranchingInstrs inplab instrs else mkNonBranchingInstrsThenBr inplab instrs outlab let mkMethSpecForClosureCall cenv (clospec: IlxClosureSpec) = let tyargsl,argtys,rstruct = stripSupportedAbstraction clospec.FormalLambdas if nonNil tyargsl then failwith "mkMethSpecForClosureCall: internal error"; let rty' = mkTyOfLambdas cenv rstruct let argtys' = typesOfILParamsList argtys let minst' = clospec.GenericArgs (mkILInstanceMethSpecInTy(clospec.ILType,"Invoke",argtys',rty',ILList.toList minst')) // -------------------------------------------------------------------- // Translate instructions.... // -------------------------------------------------------------------- let mkLdFreeVar (clospec: IlxClosureSpec) (fv: IlxClosureFreeVar) = [ mkLdarg0; mkNormalLdfld (mkILFieldSpecInTy (clospec.ILType,fv.fvName,fv.fvType) ) ] let rec convInstr cenv (tmps: ILLocalsAllocator, thisGenParams: ILGenericParameterDefs) inplab outlab instr = match instr with | I_other e when isIlxExtInstr e -> match destIlxExtInstr e with | i when (match i with EI_callfunc _ -> true | _ -> false) -> // "callfunc" and "callclo" instructions become a series of indirect // calls or a single direct call. let varCount = thisGenParams.Length let tl,apps = match i with | EI_callfunc (tl,apps) -> tl,apps | _ -> failwith "Unexpected call instruction" // Unwind the stack until the arguments given in the apps have // all been popped off. The apps given to this function is // what remains after the first "strip" of suitable arguments for the // first call. // Loaders and storers are returned in groups. Storers are used to pop // the arguments off the stack that correspond to all the arguments in // the apps, and the loaders are used to load them back on. let rec unwind apps = match apps with | Apps_tyapp (actual,rest) -> let rest = instAppsAux varCount (ILList.ofList [ actual ]) rest let storers,loaders = unwind rest [] :: storers, [] :: loaders | Apps_app (arg,rest) -> let storers, loaders = unwind rest let argStorers,argLoaders = let locn = tmps.AllocLocal (mkILLocal arg) [mkStloc locn], [mkLdloc locn] argStorers :: storers, argLoaders :: loaders | Apps_done _ -> [],[] let rec computePreCall fst n rest (loaders: ILInstr list) = if fst then let storers,(loaders2 : ILInstr list list) = unwind rest (List.rev (List.concat storers) : ILInstr list) , List.concat loaders2 else stripUpTo n (function (_x::_y) -> true | _ -> false) (function (x::y) -> (x,y) | _ -> failwith "no!") loaders let rec buildApp fst loaders apps inplab outlab = // Strip off one valid indirect call. [fst] indicates if this is the // first indirect call we're making. The code below makes use of the // fact that term and type applications are never currently mixed for // direct calls. match stripSupportedIndirectCall apps with // Type applications: REVIEW: get rid of curried tyapps - just tuple them | tyargs,[],_ when nonNil tyargs -> // strip again, instantiating as we go. we could do this while we count. let (revInstTyArgs, rest') = (([],apps), tyargs) ||> List.fold (fun (revArgsSoFar,cs) _ -> let actual,rest' = destTyFuncApp cs let rest'' = instAppsAux varCount (ILList.ofList [ actual ]) rest' ((actual :: revArgsSoFar),rest'')) let instTyargs = List.rev revInstTyArgs let precall,loaders' = computePreCall fst 0 rest' loaders let doTailCall = andTailness tl false let instrs1 = precall @ [ I_callvirt (doTailCall, (mkILInstanceMethSpecInTy (cenv.mkILTyFuncTy,"Specialize",[],cenv.ilg.typ_Object, instTyargs)), None) ] let instrs1 = // TyFunc are represented as Specialize<_> methods returning an object. // For value types, recover result via unbox and load. // For reference types, recover via cast. let rtnTy = mkTyOfApps cenv rest' instrs1 @ [ I_unbox_any rtnTy] if doTailCall = Tailcall then mkNonBranchingInstrs inplab instrs1 else let endOfCallBlock = generateCodeLabel () let block1 = mkNonBranchingInstrsThenBr inplab instrs1 endOfCallBlock let block2 = buildApp false loaders' rest' endOfCallBlock outlab mkGroupBlock ([endOfCallBlock],[ block1; block2 ]) // Term applications | [],args,rest when nonNil args -> let precall,loaders' = computePreCall fst args.Length rest loaders let isLast = (match rest with Apps_done _ -> true | _ -> false) let rty = mkTyOfApps cenv rest let doTailCall = andTailness tl isLast let startOfCallBlock = generateCodeLabel () let preCallBlock = mkNonBranchingInstrsThenBr inplab precall startOfCallBlock if doTailCall = Tailcall then let callBlock = mkCallBlockForMultiValueApp cenv doTailCall (args,rty) startOfCallBlock outlab mkGroupBlock ([startOfCallBlock],[ preCallBlock; callBlock ]) else let endOfCallBlock = generateCodeLabel () let callBlock = mkCallBlockForMultiValueApp cenv doTailCall (args,rty) startOfCallBlock endOfCallBlock let restBlock = buildApp false loaders' rest endOfCallBlock outlab mkGroupBlock ([startOfCallBlock; endOfCallBlock],[ preCallBlock; callBlock; restBlock ]) | [],[],Apps_done _rty -> // "void" return values are allowed in function types // but are translated to empty value classes. These // values need to be popped. mkNonBranchingInstrsThen inplab ([]) (if tl = Tailcall then I_ret else I_br outlab) | _ -> failwith "*** Error: internal error: unknown indirect calling convention returned by stripSupportedIndirectCall" InstrMorph (buildApp true [] apps inplab outlab) | _ -> InstrMorph [instr] | _ -> InstrMorph [instr] // Fix up I_ret instruction. Generalise to selected instr. let convReturnInstr ty _inplab _outlab instr = match instr with | I_ret -> InstrMorph [I_box ty;I_ret] | _ -> InstrMorph [instr] let convILMethodBody cenv (thisGenParams,thisClo,boxReturnTy) il = let tmps = ILLocalsAllocator il.Locals.Length let locals = il.Locals // Add a local to keep the result value of a thunk while storing it // into the result field and returning it. // Record the local slot number in the environment passed in thisClo let newMax = match thisClo with | Some _ -> il.MaxStack+2 (* for calls *) | None -> il.MaxStack let code' = morphExpandILInstrsInILCode (convInstr cenv (tmps,thisGenParams)) il.Code let code' = match boxReturnTy with | None -> code' | Some ty -> (* box before returning? e.g. in the case of a TyFunc returning a struct, which compiles to a Specialise<_> method returning an object *) morphExpandILInstrsInILCode (convReturnInstr ty) code' {il with MaxStack=newMax; IsZeroInit=true; Code= code' ; Locals = ILList.ofList (ILList.toList locals @ tmps.Close()) } let convMethodBody cenv (thisGenParams,thisClo) = function | MethodBody.IL il -> MethodBody.IL (convILMethodBody cenv (thisGenParams,thisClo,None) il) | x -> x let convMethodDef cenv (thisGenParams,thisClo) (md: ILMethodDef) = let b' = convMethodBody cenv ((thisGenParams @ md.GenericParams) ,thisClo) (md.mdBody.Contents) {md with mdBody=mkMethBodyAux b'} // -------------------------------------------------------------------- // Make fields for free variables of a type abstraction. // REVIEW: change type abstractions to use other closure mechanisms. // -------------------------------------------------------------------- let mkILFreeVarForParam (p : ILParameter) = let nm = (match p.Name with Some x -> x | None -> failwith "closure parameters must be given names") mkILFreeVar(nm, false,p.Type) let mkILLocalForFreeVar (p: IlxClosureFreeVar) = mkILLocal p.fvType let mkILCloFldSpecs _cenv flds = flds |> Array.map (fun fv -> (fv.fvName,fv.fvType)) |> Array.toList let mkILCloFldDefs cenv flds = flds |> Array.toList |> List.map (fun fv -> let fdef = mkILInstanceField (fv.fvName,fv.fvType,None,ILMemberAccess.Public) if fv.fvCompilerGenerated then fdef |> addFieldNeverAttrs cenv.ilg |> addFieldGeneratedAttrs cenv.ilg else fdef) // -------------------------------------------------------------------- // Convert a closure. Split and chop if there are too many arguments, // otherwise build the appropriate kind of thing depending on whether // it's a type abstraction or a term abstraction. // -------------------------------------------------------------------- let rec convIlxClosureDef cenv mdefGen encl (td: ILTypeDef) clo = let newTypeDefs,newMethodDefs = // the following are shared between cases 1 && 2 let nowFields = clo.cloFreeVars let nowTypeRef = mkILNestedTyRef (ILScopeRef.Local, encl, td.Name) let nowTy = mkILFormalBoxedTy nowTypeRef td.GenericParams let nowCloRef = IlxClosureRef(nowTypeRef,clo.cloStructure,nowFields) let nowCloSpec = mkILFormalCloRef td.GenericParams nowCloRef let tagClo = clo.cloSource let tagApp = (Lazy.force clo.cloCode).SourceMarker let tyargsl,tmargsl,laterStruct = stripSupportedAbstraction clo.cloStructure let laterAccess = td.Access (* (if td.Access = ILTypeDefAccess.Public then ILTypeDefAccess.Nested ILMemberAccess.Public else ILTypeDefAccess.Nested ILMemberAccess.Assembly) in*) // Adjust all the argument and environment accesses let rewriteCodeToAccessArgsFromEnv laterCloSpec (argToFreeVarMap: (int * IlxClosureFreeVar) list) = let il = Lazy.force clo.cloCode let numLocals = il.Locals.Length let rewriteInstrToAccessArgsFromEnv instr = let fixupArg mkEnv mkArg n = let rec findMatchingArg l c = match l with | ((m,_)::t) -> if n = m then mkEnv c else findMatchingArg t (c+1) | [] -> mkArg (n - argToFreeVarMap.Length + 1) findMatchingArg argToFreeVarMap 0 match instr with | I_ldarg n -> fixupArg (fun x -> [ mkLdloc (uint16 (x+numLocals)) ]) (fun x -> [ mkLdarg (uint16 x )]) (int n) | I_starg n -> fixupArg (fun x -> [ mkStloc (uint16 (x+numLocals)) ]) (fun x -> [ I_starg (uint16 x) ]) (int n) | I_ldarga n -> fixupArg (fun x -> [ I_ldloca (uint16 (x+numLocals)) ]) (fun x -> [ I_ldarga (uint16 x) ]) (int n) | i -> [i] let mainCode = morphILInstrsInILCode rewriteInstrToAccessArgsFromEnv il.Code let ldenvCode = argToFreeVarMap |> List.mapi (fun n (_,fv) -> mkLdFreeVar laterCloSpec fv @ [mkStloc (uint16 (n+numLocals)) ]) |> List.concat let code = prependInstrsToCode ldenvCode mainCode {il with Code=code; Locals=ILList.ofList (ILList.toList il.Locals @ (List.map (snd >> mkILLocalForFreeVar) argToFreeVarMap)); (* maxstack may increase by 1 due to environment loads *) MaxStack=il.MaxStack+1 } match tyargsl,tmargsl,laterStruct with // CASE 1 - Type abstraction | (_ :: _), [],_ -> let addedGenParams = tyargsl let nowReturnTy = (mkTyOfLambdas cenv laterStruct) // CASE 1a. Split a type abstraction. // Adjust all the argument and environment accesses // Actually that special to do here in the type abstraction case // nb. should combine the term and type abstraction cases for // to allow for term and type variables to be mixed in a single // application. if (match laterStruct with Lambdas_return _ -> false | _ -> true) then let nowStruct = List.foldBack (fun x y -> Lambdas_forall(x,y)) tyargsl (Lambdas_return nowReturnTy) let laterTypeName = td.Name^"T" let laterTypeRef = mkILNestedTyRef (ILScopeRef.Local,encl,laterTypeName) let laterGenericParams = td.GenericParams @ addedGenParams let selfFreeVar = mkILFreeVar(CompilerGeneratedName ("self"^string nowFields.Length),true,nowCloSpec.ILType) let laterFields = Array.append nowFields [| selfFreeVar |] let laterCloRef = IlxClosureRef(laterTypeRef,laterStruct,laterFields) let laterCloSpec = mkILFormalCloRef laterGenericParams laterCloRef let laterCode = rewriteCodeToAccessArgsFromEnv laterCloSpec [(0, selfFreeVar)] let laterTypeDefs = convIlxClosureDef cenv mdefGen encl {td with GenericParams=laterGenericParams; Access=laterAccess; Name=laterTypeName} {clo with cloStructure=laterStruct; cloFreeVars=laterFields; cloCode=notlazy laterCode} let laterTypeDefs = laterTypeDefs |> List.map (addMethodGeneratedAttrsToTypeDef cenv.ilg) // This is the code which will get called when then "now" // arguments get applied. Convert it with the information // that it is the code for a closure... let nowCode = mkILMethodBody (false,emptyILLocals,nowFields.Length + 1, nonBranchingInstrsToCode begin // Load up the environment, including self... (nowFields |> Array.toList |> List.collect (mkLdFreeVar nowCloSpec)) @ [ mkLdarg0 ] @ // Make the instance of the delegated closure && return it. // This passes the method type params. as class type params. [ I_newobj (laterCloSpec.Constructor, None) ] end, tagApp) let nowTypeDefs = convIlxClosureDef cenv mdefGen encl td {clo with cloStructure=nowStruct; cloCode=notlazy nowCode} nowTypeDefs @ laterTypeDefs, [] else // CASE 1b. Build a type application. // Currently the sole mbody defines a class and uses // virtual methods. let boxReturnTy = Some nowReturnTy (* box prior to all I_ret *) let nowApplyMethDef = mkILGenericVirtualMethod ("Specialize", ILMemberAccess.Public, addedGenParams, (* method is generic over added ILGenericParameterDefs *) [], mkILReturn(cenv.ilg.typ_Object), MethodBody.IL (convILMethodBody cenv (td.GenericParams@addedGenParams,Some nowCloSpec,boxReturnTy) (Lazy.force clo.cloCode))) let ctorMethodDef = mkILStorageCtor (tagClo, [ mkLdarg0; mkNormalCall (mkILCtorMethSpecForTy (cenv.mkILTyFuncTy, [])) ], nowTy, mkILCloFldSpecs cenv nowFields, ILMemberAccess.Assembly) let cloTypeDef = { Name = td.Name; GenericParams= td.GenericParams; Access=td.Access; Implements = ILList.empty; IsAbstract = false; NestedTypes = emptyILTypeDefs; IsSealed = false; IsSerializable=td.IsSerializable; IsComInterop=false; IsSpecialName=false; Layout=ILTypeDefLayout.Auto; Encoding=ILDefaultPInvokeEncoding.Ansi; InitSemantics=ILTypeInit.BeforeField; Extends= Some cenv.mkILTyFuncTy; Methods= mkILMethods ([ctorMethodDef] @ [nowApplyMethDef]); Fields= mkILFields (mkILCloFldDefs cenv nowFields); CustomAttrs=emptyILCustomAttrs; MethodImpls=emptyILMethodImpls; Properties=emptyILProperties; Events=emptyILEvents; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; tdKind = ILTypeDefKind.Class;} [ cloTypeDef], [] // CASE 2 - Term Application | [], (_ :: _ as nowParams),_ -> let nowReturnTy = mkTyOfLambdas cenv laterStruct // CASE 2a - Too Many Term Arguments or Remaining Type arguments - Split the Closure Class in Two if (match laterStruct with Lambdas_return _ -> false | _ -> true) then let nowStruct = List.foldBack (fun l r -> Lambdas_lambda(l,r)) nowParams (Lambdas_return nowReturnTy) let laterTypeName = td.Name^"D" let laterTypeRef = mkILNestedTyRef (ILScopeRef.Local,encl,laterTypeName) let laterGenericParams = td.GenericParams // Number each argument left-to-right, adding one to account for the "this" pointer let selfFreeVar = mkILFreeVar(CompilerGeneratedName "self",true,nowCloSpec.ILType) let argToFreeVarMap = (0, selfFreeVar) :: (nowParams |> List.mapi (fun i p -> i+1, mkILFreeVarForParam p)) let laterFreeVars = argToFreeVarMap |> List.map snd |> List.toArray let laterFields = Array.append nowFields laterFreeVars let laterCloRef = IlxClosureRef(laterTypeRef,laterStruct,laterFields) let laterCloSpec = mkILFormalCloRef laterGenericParams laterCloRef // This is the code which will first get called. let nowCode = mkILMethodBody (false,emptyILLocals,argToFreeVarMap.Length + nowFields.Length, nonBranchingInstrsToCode begin // Load up the environment (nowFields |> Array.toList |> List.collect (mkLdFreeVar nowCloSpec)) @ // Load up all the arguments (including self), which become free variables in the delegated closure (argToFreeVarMap |> List.map (fun (n,_) -> mkLdarg (uint16 n))) @ // Make the instance of the delegated closure && return it. [ I_newobj (laterCloSpec.Constructor, None) ] end, tagApp) let nowTypeDefs = convIlxClosureDef cenv mdefGen encl td {clo with cloStructure=nowStruct; cloCode=notlazy nowCode} let laterCode = rewriteCodeToAccessArgsFromEnv laterCloSpec argToFreeVarMap let laterTypeDefs = convIlxClosureDef cenv mdefGen encl {td with GenericParams=laterGenericParams; Access=laterAccess; Name=laterTypeName} {clo with cloStructure=laterStruct; cloFreeVars=laterFields; cloCode=notlazy laterCode} // add 'compiler generated' to all the methods in the 'now' classes let laterTypeDefs = laterTypeDefs |> List.map (addMethodGeneratedAttrsToTypeDef cenv.ilg) nowTypeDefs @ laterTypeDefs, [] else // CASE 2b - Build an Term Application Apply method // CASE 2b2. Build a term application as a virtual method. let nowEnvParentClass = typ_Func cenv (typesOfILParamsList nowParams) nowReturnTy let cloTypeDef = let nowApplyMethDef = mkILNonGenericVirtualMethod ("Invoke",ILMemberAccess.Public, nowParams, mkILReturn nowReturnTy, MethodBody.IL (convILMethodBody cenv (td.GenericParams,Some nowCloSpec,None) (Lazy.force clo.cloCode))) let ctorMethodDef = mkILStorageCtor (tagClo, [ mkLdarg0; mkNormalCall (mkILCtorMethSpecForTy (nowEnvParentClass,[])) ], nowTy, mkILCloFldSpecs cenv nowFields, ILMemberAccess.Assembly) { Name = td.Name; GenericParams= td.GenericParams; Access = td.Access; Implements = mkILTypes []; IsAbstract = false; IsSealed = false; IsSerializable=td.IsSerializable; IsComInterop=false; IsSpecialName=false; Layout=ILTypeDefLayout.Auto; Encoding=ILDefaultPInvokeEncoding.Ansi; InitSemantics=ILTypeInit.BeforeField; NestedTypes = emptyILTypeDefs; Extends= Some nowEnvParentClass; Methods= mkILMethods ([ctorMethodDef] @ [nowApplyMethDef]); Fields= mkILFields (mkILCloFldDefs cenv nowFields); CustomAttrs=emptyILCustomAttrs; MethodImpls=emptyILMethodImpls; Properties=emptyILProperties; Events=emptyILEvents; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; tdKind = ILTypeDefKind.Class; } [cloTypeDef],[] | [],[ ],Lambdas_return _ -> // No code is being declared: just bake a (mutable) environment let cloCode' = match td.Extends with | None -> (mkILNonGenericEmptyCtor tagClo cenv.ilg.typ_Object).MethodBody | Some _ -> convILMethodBody cenv (td.GenericParams,Some nowCloSpec,None) (Lazy.force clo.cloCode) let ctorMethodDef = let flds = (mkILCloFldSpecs cenv nowFields) mkILCtor(ILMemberAccess.Public, List.map mkILParamNamed flds, mkMethodBody (cloCode'.IsZeroInit, cloCode'.Locals, cloCode'.MaxStack, prependInstrsToCode (List.concat (List.mapi (fun n (nm,ty) -> [ mkLdarg0; mkLdarg (uint16 (n+1)); mkNormalStfld (mkILFieldSpecInTy (nowTy,nm,ty)); ]) flds)) cloCode'.Code, tagClo)) let cloTypeDef = { td with Implements= td.Implements; Extends= (match td.Extends with None -> Some cenv.ilg.typ_Object | Some x -> Some(x)); Name = td.Name; GenericParams= td.GenericParams; Methods= mkILMethods (ctorMethodDef :: List.map (convMethodDef cenv ( td.GenericParams,Some nowCloSpec)) td.Methods.AsList); Fields= mkILFields (mkILCloFldDefs cenv nowFields @ td.Fields.AsList); tdKind = ILTypeDefKind.Class; } [cloTypeDef],[] | a,b,_ -> failwith ("Unexpected unsupported abstraction sequence, #tyabs = "^string a.Length ^ ", #tmabs = "^string b.Length) mdefGen := !mdefGen@newMethodDefs; newTypeDefs // -------------------------------------------------------------------- // Convert a class // -------------------------------------------------------------------- let rec convTypeDef cenv mdefGen encl td = match td.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e && (match destIlxExtTypeDefKind e with IlxTypeDefKind.Closure _ -> true | _ -> false) -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure cloinfo -> convIlxClosureDef cenv mdefGen encl td cloinfo | IlxTypeDefKind.Union _ -> failwith "classunions should have been erased by this time" | _ -> [ {td with NestedTypes = convTypeDefs cenv mdefGen (encl@[td.Name]) td.NestedTypes; Methods=morphILMethodDefs (convMethodDef cenv (td.GenericParams,None)) td.Methods; } ] and convTypeDefs cenv mdefGen encl tdefs = morphExpandILTypeDefs (convTypeDef cenv mdefGen encl) tdefs let ConvModule ilg modul = let cenv = new_cenv(ilg) let mdefGen = ref [] let newTypes = convTypeDefs cenv mdefGen [] modul.TypeDefs {modul with TypeDefs=newTypes} fsharp-3.0.34/src/ilx/cu_erase.fs0000775000175000017500000015655612260314606015620 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // -------------------------------------------------------------------- // Erase discriminated unions. // -------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.EraseIlxUnions open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Morphs open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library [] let TagNil = 0 [] let TagCons = 1 [] let ALT_NAME_CONS = "Cons" type DiscriminationTechnique = | TailOrNull | RuntimeTypes | SingleCase | IntegerTag // FLATTEN_SINGLE_NON_NULLARY_AND_ALWAYS_USE_TAGS looks like a useful representation // optimization - it trades an extra integer tag in the root type // for faster discrimination, and in the important single-non-nullary constructor case // // type Tree = Tip | Node of int * Tree * Tree // // it also flattens so the fields for "Node" are stored in the base class, meanign that no type casts // are needed to access the data. // // However, it can't be enabled because it suppresses the generation // of C#-facing nested types for the non-nullary case. This could be enabled // in a binary compatible way by ensuring we continue to generate the C# facing types and use // them as the instance types, but still store all field elements in the base type. Additional // accessors would be needed to access these fields directly, akin to HeadOrDefault and TailOrNull. // This functor helps us make representation decisions for F# union type compilation type UnionReprDecisions<'Union,'Alt,'Type> (getAlternatives: 'Union->'Alt[], nullPermitted:'Union->bool, isNullary:'Alt->bool, isList:'Union->bool, nameOfAlt : 'Alt -> string, makeRootType: 'Union -> 'Type, makeNestedType: 'Union * string -> 'Type) = static let TaggingThresholdFixedConstant = 4 member repr.OptimizeAllAlternativesToConstantFieldsInRootClass cu = Array.forall isNullary (getAlternatives cu) member repr.DiscriminationTechnique cu = if isList cu then TailOrNull else let alts = getAlternatives cu if alts.Length = 1 then SingleCase elif #if FLATTEN_SINGLE_NON_NULLARY_AND_ALWAYS_USE_TAGS nullPermitted cu then #else alts.Length < TaggingThresholdFixedConstant && not (repr.OptimizeAllAlternativesToConstantFieldsInRootClass cu) then #endif RuntimeTypes else IntegerTag // WARNING: this must match IsUnionTypeWithNullAsTrueValue in the F# compiler member repr.OptimizeAlternativeToNull (cu,alt) = let alts = getAlternatives cu nullPermitted cu && (repr.DiscriminationTechnique cu = RuntimeTypes) && (* don't use null for tags, lists or single-case *) Array.existsOne isNullary alts && Array.exists (isNullary >> not) alts && isNullary alt (* is this the one? *) member repr.OptimizingOneAlternativeToNull cu = let alts = getAlternatives cu nullPermitted cu && alts |> Array.existsOne (fun alt -> repr.OptimizeAlternativeToNull (cu,alt)) member repr.OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull (cu,alt) = // Check all nullary constructors are being represented without using sub-classes let alts = getAlternatives cu not (isNullary alt) && (alts |> Array.forall (fun alt2 -> not (isNullary alt2) || repr.OptimizeAlternativeToNull (cu,alt2))) && // Check this is the one and only non-nullary constructor Array.existsOne (isNullary >> not) alts #if FLATTEN_SINGLE_NON_NULLARY_AND_ALWAYS_USE_TAGS member repr.OptimizeSingleNonNullaryAlternativeToRootClassAndOtherAlternativesToTagged (cu,alt) = let alts = getAlternatives cu not (isNullary alt) && alts.Length > 1 && Array.existsOne (isNullary >> not) alts && not (nullPermitted cu) #endif member repr.OptimizeSingleNonNullaryAlternativeToRootClass (cu,alt) = // Check all nullary constructors are being represented without using sub-classes (isList cu && nameOfAlt alt = ALT_NAME_CONS) || repr.OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull (cu, alt) #if FLATTEN_SINGLE_NON_NULLARY_AND_ALWAYS_USE_TAGS repr.OptimizeSingleNonNullaryAlternativeToRootClassAndOtherAlternativesToTagged (cu,alt) #endif member repr.OptimizeAlternativeToConstantFieldInTaggedRootClass (cu,alt) = isNullary alt && not (repr.OptimizeAlternativeToNull (cu,alt)) && (repr.DiscriminationTechnique cu <> RuntimeTypes) member repr.OptimizeAlternativeToRootClass (cu,alt) = // The list type always collapses to the root class isList cu || repr.OptimizeAllAlternativesToConstantFieldsInRootClass cu || repr.OptimizeAlternativeToConstantFieldInTaggedRootClass (cu,alt) || repr.OptimizeSingleNonNullaryAlternativeToRootClass(cu,alt) member repr.MaintainPossiblyUniqueConstantFieldForAlternative(cu,alt) = not (repr.OptimizeAlternativeToNull (cu,alt)) && isNullary alt member repr.TypeForAlternative (cuspec,alt) = if repr.OptimizeAlternativeToRootClass (cuspec,alt) || repr.OptimizeAlternativeToNull (cuspec,alt) then makeRootType cuspec else let altName = nameOfAlt alt // Add "_" if the thing is nullary or if it is 'List._Cons', which is special because it clashes with the name of the static method "Cons" let nm = if isNullary alt || isList cuspec then "_"+altName else altName makeNestedType (cuspec, nm) let baseTyOfUnionSpec (cuspec : IlxUnionSpec) = mkILBoxedTyRaw cuspec.TypeRef cuspec.GenericArgs let mkMakerName (cuspec: IlxUnionSpec) nm = match cuspec.HasHelpers with | SpecialFSharpListHelpers | SpecialFSharpOptionHelpers -> nm // Leave 'Some', 'None', 'Cons', 'Empty' as is | AllHelpers | NoHelpers -> "New" + nm let mkCasesTypeRef (cuspec: IlxUnionSpec) = cuspec.TypeRef let cuspecRepr = UnionReprDecisions ((fun (cuspec:IlxUnionSpec) -> cuspec.AlternativesArray), (fun (cuspec:IlxUnionSpec) -> cuspec.IsNullPermitted), (fun (alt:IlxUnionAlternative) -> alt.IsNullary), (fun cuspec -> cuspec.HasHelpers = IlxUnionHasHelpers.SpecialFSharpListHelpers), (fun (alt:IlxUnionAlternative) -> alt.Name), (fun cuspec -> mkILBoxedTyRaw cuspec.TypeRef cuspec.GenericArgs), (fun (cuspec,nm) -> mkILBoxedTyRaw (mkILTyRefInTyRef (mkCasesTypeRef cuspec, nm)) cuspec.GenericArgs)) type NoTypesGeneratedViaThisReprDecider = NoTypesGeneratedViaThisReprDecider let cudefRepr = UnionReprDecisions ((fun (_enc,_td,cud) -> cud.cudAlternatives), (fun (_enc,_td,cud) -> cud.cudNullPermitted), (fun (alt:IlxUnionAlternative) -> alt.IsNullary), (fun (_enc,_td,cud) -> cud.cudHasHelpers = IlxUnionHasHelpers.SpecialFSharpListHelpers), (fun (alt:IlxUnionAlternative) -> alt.Name), (fun (_enc,_td,_cud) -> NoTypesGeneratedViaThisReprDecider), (fun ((_enc,_td,_cud),_nm) -> NoTypesGeneratedViaThisReprDecider)) type cenv = { ilg: ILGlobals } let mkBasicBlock2 (a,b) = mkBasicBlock { Label=a; Instructions= Array.ofList b} let mkTesterName nm = "Is" + nm let tagPropertyName = "Tag" let mkUnionCaseFieldId (fdef: IlxUnionField) = // Use the lower case name of a field or constructor as the field/parameter name if it differs from the uppercase name fdef.LowerName, fdef.Type let refToFieldInTy ty (nm, fldTy) = mkILFieldSpecInTy (ty, nm, fldTy) let formalTypeArgs (baseTy:ILType) = ILList.mapi (fun i _ -> mkILTyvarTy (uint16 i)) baseTy.GenericArgs let constFieldName nm = "_unique_" + nm let constFormalFieldTy (baseTy:ILType) = ILType.Boxed (mkILTySpecRaw (baseTy.TypeRef, formalTypeArgs baseTy)) let mkConstFieldSpecFromId (baseTy:ILType) constFieldId = refToFieldInTy baseTy constFieldId let mkConstFieldSpec nm (baseTy:ILType) = mkConstFieldSpecFromId baseTy (constFieldName nm, constFormalFieldTy baseTy) let tyForAlt cuspec alt = cuspecRepr.TypeForAlternative(cuspec,alt) let GetILTypeForAlternative cuspec alt = cuspecRepr.TypeForAlternative(cuspec,cuspec.Alternative alt) let mkTagFieldType ilg _cuspec = ilg.typ_Int32 let mkTagFieldFormalType ilg _cuspec = ilg.typ_Int32 let mkTagFieldId ilg cuspec = "_tag", mkTagFieldType ilg cuspec let mkTailOrNullId baseTy = "tail", constFormalFieldTy baseTy let altOfUnionSpec (cuspec:IlxUnionSpec) cidx = try cuspec.Alternative cidx with _ -> failwith ("alternative " + string cidx + " not found") // Nullary cases on types with helpers do not reveal their underlying type even when // using runtime type discrimination, because the underlying type is never needed from // C# code and pollutes the visible API surface. In this case we must discriminate by // calling the IsFoo helper. This only applies to discriminations outside the // assembly where the type is defined (indicated by 'avoidHelpers' flag - if this is true // then the reference is intra-assembly). let doesRuntimeTypeDiscriminateUseHelper avoidHelpers (cuspec: IlxUnionSpec) (alt: IlxUnionAlternative) = not avoidHelpers && alt.IsNullary && cuspec.HasHelpers = IlxUnionHasHelpers.AllHelpers let mkRuntimeTypeDiscriminate cenv avoidHelpers cuspec alt altName altTy = let useHelper = doesRuntimeTypeDiscriminateUseHelper avoidHelpers cuspec alt if useHelper then let baseTy = baseTyOfUnionSpec cuspec [ mkNormalCall (mkILNonGenericInstanceMethSpecInTy (baseTy, "get_" + mkTesterName altName, [], cenv.ilg.typ_Bool)) ] else [ I_isinst altTy; AI_ldnull; AI_cgt_un ] let mkRuntimeTypeDiscriminateThen cenv avoidHelpers cuspec alt altName altTy after = let useHelper = doesRuntimeTypeDiscriminateUseHelper avoidHelpers cuspec alt match after with | I_brcmp (BI_brfalse,_,_) | I_brcmp (BI_brtrue,_,_) when not useHelper -> [ I_isinst altTy; after ] | _ -> mkRuntimeTypeDiscriminate cenv avoidHelpers cuspec alt altName altTy @ [ after ] let mkGetTagFromField cenv cuspec baseTy = [ mkNormalLdfld (refToFieldInTy baseTy (mkTagFieldId cenv.ilg cuspec)) ] let adjustFieldName hasHelpers nm = match hasHelpers, nm with | SpecialFSharpListHelpers, "Head" -> "HeadOrDefault" | SpecialFSharpListHelpers, "Tail" -> "TailOrNull" | _ -> nm let mkLdData avoidHelpers cuspec cidx fidx = let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let fieldDef = alt.FieldDef fidx if avoidHelpers then mkNormalLdfld (mkILFieldSpecInTy(altTy,fieldDef.LowerName, fieldDef.Type)) else mkNormalCall (mkILNonGenericInstanceMethSpecInTy(altTy,"get_" + adjustFieldName cuspec.HasHelpers fieldDef.Name,[],fieldDef.Type)) let mkGetTailOrNull avoidHelpers cuspec = mkLdData avoidHelpers cuspec 1 1 (* tail is in alternative 1, field number 1 *) let mkGetTagFromHelpers cenv (cuspec: IlxUnionSpec) = let baseTy = baseTyOfUnionSpec cuspec if cuspecRepr.OptimizingOneAlternativeToNull cuspec then mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, "Get" + tagPropertyName, [baseTy], mkTagFieldFormalType cenv.ilg cuspec)) else mkNormalCall (mkILNonGenericInstanceMethSpecInTy(baseTy, "get_" + tagPropertyName, [], mkTagFieldFormalType cenv.ilg cuspec)) let mkGetTag cenv (cuspec: IlxUnionSpec) = match cuspec.HasHelpers with | AllHelpers -> [ mkGetTagFromHelpers cenv cuspec ] | _hasHelpers -> mkGetTagFromField cenv cuspec (baseTyOfUnionSpec cuspec) let mkCeqThen after = match after with | I_brcmp (BI_brfalse,a,b) -> [I_brcmp (BI_bne_un,a,b)] | I_brcmp (BI_brtrue,a,b) -> [I_brcmp (BI_beq,a,b)] | _ -> [AI_ceq; after] let mkTagDiscriminate cenv cuspec _baseTy cidx = mkGetTag cenv cuspec @ [ mkLdcInt32 (cidx); AI_ceq ] let mkTagDiscriminateThen cenv cuspec cidx after = mkGetTag cenv cuspec @ [ mkLdcInt32 cidx ] @ mkCeqThen after let convNewDataInstrInternal cenv cuspec cidx = let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let altName = alt.Name if cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) then [ AI_ldnull ] elif cuspecRepr.MaintainPossiblyUniqueConstantFieldForAlternative (cuspec,alt) then let baseTy = baseTyOfUnionSpec cuspec [ I_ldsfld (Nonvolatile,mkConstFieldSpec altName baseTy) ] elif cuspecRepr.OptimizeSingleNonNullaryAlternativeToRootClass (cuspec,alt) then let baseTy = baseTyOfUnionSpec cuspec let instrs, tagfields = match cuspecRepr.DiscriminationTechnique cuspec with | IntegerTag -> [ mkLdcInt32 cidx ], [mkTagFieldType cenv.ilg cuspec] | _ -> [], [] instrs @ [ mkNormalNewobj(mkILCtorMethSpecForTy (baseTy,(Array.toList alt.FieldTypes @ tagfields))) ] else [ mkNormalNewobj(mkILCtorMethSpecForTy (altTy,Array.toList alt.FieldTypes)) ] let rec convInstr cenv (tmps: ILLocalsAllocator) inplab outlab instr = match instr with | I_other e when isIlxExtInstr e -> match (destIlxExtInstr e) with | (EI_newdata (cuspec, cidx)) -> let alt = altOfUnionSpec cuspec cidx let altName = alt.Name let baseTy = baseTyOfUnionSpec cuspec let i = // If helpers exist, use them match cuspec.HasHelpers with | AllHelpers | SpecialFSharpListHelpers | SpecialFSharpOptionHelpers -> if cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) then [ AI_ldnull ] elif alt.IsNullary then [ mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, "get_" + altName, [], constFormalFieldTy baseTy)) ] else [ mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, mkMakerName cuspec altName, Array.toList alt.FieldTypes, constFormalFieldTy baseTy)) ] | NoHelpers -> if cuspecRepr.MaintainPossiblyUniqueConstantFieldForAlternative (cuspec,alt) then // This method is only available if not AllHelpers. It fetches the unique object for the alternative // without exposing direct access to the underlying field [ mkNormalCall (mkILNonGenericStaticMethSpecInTy(baseTy, "get_" + altName, [], constFormalFieldTy baseTy)) ] else convNewDataInstrInternal cenv cuspec cidx InstrMorph i | (EI_stdata (cuspec, cidx,fidx)) -> let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let fieldDef = alt.FieldDef fidx InstrMorph [ mkNormalStfld (mkILFieldSpecInTy(altTy,fieldDef.LowerName, fieldDef.Type)) ] | (EI_lddata (avoidHelpers, cuspec,cidx,fidx)) -> // The stdata instruction is only ever used for the F# "List" type within FSharp.Core.dll InstrMorph [ mkLdData avoidHelpers cuspec cidx fidx ] | (EI_lddatatag (avoidHelpers,cuspec)) -> // If helpers exist, use them match cuspec.HasHelpers with | SpecialFSharpListHelpers | AllHelpers when not avoidHelpers -> InstrMorph [ mkGetTagFromHelpers cenv cuspec ] | _ -> let alts = cuspec.Alternatives match cuspecRepr.DiscriminationTechnique cuspec with | TailOrNull -> // leaves 1 if cons, 0 if not InstrMorph [ mkGetTailOrNull avoidHelpers cuspec; AI_ldnull; AI_cgt_un ] | IntegerTag -> let baseTy = baseTyOfUnionSpec cuspec InstrMorph (mkGetTagFromField cenv cuspec baseTy) | SingleCase -> InstrMorph [ AI_pop; (AI_ldc (DT_I4, ILConst.I4 0)) ] | RuntimeTypes -> let baseTy = baseTyOfUnionSpec cuspec let locn = tmps.AllocLocal (mkILLocal baseTy) let mkCase last inplab cidx failLab = let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let altName = alt.Name let internalLab = generateCodeLabel () let cmpNull = cuspecRepr.OptimizeAlternativeToNull (cuspec, alt) if last then mkBasicBlock2 (inplab,[ (AI_ldc (DT_I4, ILConst.I4 cidx)); I_br outlab ]) else let test = I_brcmp ((if cmpNull then BI_brtrue else BI_brfalse),failLab,internalLab) let test_block = if cmpNull || cuspecRepr.OptimizeSingleNonNullaryAlternativeToRootClass (cuspec,alt) then [ test ] else mkRuntimeTypeDiscriminateThen cenv avoidHelpers cuspec alt altName altTy test mkGroupBlock ([internalLab], [ mkBasicBlock2 (inplab, mkLdloc locn ::test_block); mkBasicBlock2 (internalLab,[(AI_ldc(DT_I4,ILConst.I4(cidx))); I_br outlab ]) ]) // Make the block for the last test. let lastInpLab = generateCodeLabel () let lastBlock = mkCase true lastInpLab 0 outlab // Make the blocks for the remaining tests. let _, firstInpLab, overallBlock = List.foldBack (fun _ (n, continueInpLab, continueBlock) -> let newInpLab = generateCodeLabel () n+1, newInpLab, mkGroupBlock ([continueInpLab], [ mkCase false newInpLab n continueInpLab; continueBlock ])) (List.tail alts) (1,lastInpLab, lastBlock) // Add on a branch to the first input label. This gets optimized away by the printer/emitter. InstrMorph (mkGroupBlock ([firstInpLab], [ mkBasicBlock2 (inplab, [ mkStloc locn; I_br firstInpLab ]); overallBlock ])) | (EI_castdata (canfail,cuspec,cidx)) -> let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt if cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) then if canfail then let internal1 = generateCodeLabel () InstrMorph (mkGroupBlock ([internal1], [ mkBasicBlock2 (inplab, [ AI_dup; I_brcmp (BI_brfalse,outlab, internal1) ]); mkBasicBlock2 (internal1, [ mkMscorlibExnNewobj cenv.ilg "System.InvalidCastException"; I_throw ]); ] )) else // If it can't fail, it's still verifiable just to leave the value on the stack unchecked InstrMorph [] elif cuspecRepr.OptimizeAlternativeToRootClass (cuspec,alt) then InstrMorph [] else InstrMorph [ I_castclass altTy ] | (EI_brisdata (avoidHelpers, cuspec,cidx,tg,failLab)) -> let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let altName = alt.Name if cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) then InstrMorph [ I_brcmp (BI_brtrue,failLab,tg) ] elif cuspecRepr.OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull (cuspec,alt) then // in this case we can use a null test InstrMorph [ I_brcmp (BI_brfalse,failLab,tg) ] else match cuspecRepr.DiscriminationTechnique cuspec with | SingleCase -> InstrMorph [ I_br tg ] | RuntimeTypes -> InstrMorph (mkRuntimeTypeDiscriminateThen cenv avoidHelpers cuspec alt altName altTy (I_brcmp (BI_brfalse,failLab,tg))) | IntegerTag -> InstrMorph (mkTagDiscriminateThen cenv cuspec cidx (I_brcmp (BI_brfalse,failLab,tg))) | TailOrNull -> match cidx with | TagNil -> InstrMorph [ mkGetTailOrNull avoidHelpers cuspec; I_brcmp (BI_brtrue,failLab,tg) ] | TagCons -> InstrMorph [ mkGetTailOrNull avoidHelpers cuspec; I_brcmp (BI_brfalse,failLab,tg) ] | _ -> failwith "unexpected" | (EI_isdata (avoidHelpers, cuspec, cidx)) -> let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let altName = alt.Name if cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) then InstrMorph [ AI_ldnull; AI_ceq ] elif cuspecRepr.OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull (cuspec,alt) then // in this case we can use a null test InstrMorph [ AI_ldnull; AI_cgt_un ] else match cuspecRepr.DiscriminationTechnique cuspec with | SingleCase -> InstrMorph [ mkLdcInt32 1 ] | RuntimeTypes -> InstrMorph (mkRuntimeTypeDiscriminate cenv avoidHelpers cuspec alt altName altTy) | IntegerTag -> InstrMorph (mkTagDiscriminate cenv cuspec (baseTyOfUnionSpec cuspec) cidx) | TailOrNull -> match cidx with | TagNil -> InstrMorph [ mkGetTailOrNull avoidHelpers cuspec; AI_ldnull; AI_ceq ] | TagCons -> InstrMorph [ mkGetTailOrNull avoidHelpers cuspec; AI_ldnull; AI_cgt_un ] | _ -> failwith "unexpected" | (EI_datacase (avoidHelpers, cuspec, cases, cont)) -> let baseTy = baseTyOfUnionSpec cuspec match cuspecRepr.DiscriminationTechnique cuspec with | RuntimeTypes -> let locn = tmps.AllocLocal (mkILLocal baseTy) let mkCase _last inplab (cidx,tg) failLab = let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt let altName = alt.Name let _internalLab = generateCodeLabel () let cmpNull = cuspecRepr.OptimizeAlternativeToNull (cuspec,alt) let test = let testInstr = I_brcmp ((if cmpNull then BI_brfalse else BI_brtrue),tg,failLab) [ mkLdloc locn ] @ (if cmpNull || cuspecRepr.OptimizeSingleNonNullaryAlternativeToRootClass (cuspec,alt) then [ testInstr ] else mkRuntimeTypeDiscriminateThen cenv avoidHelpers cuspec alt altName altTy testInstr) mkBasicBlock2 (inplab, test) // Make the block for the last test. let lastInpLab = generateCodeLabel () let lastCase, firstCases = let l2 = List.rev cases List.head l2, List.rev (List.tail l2) let lastBlock = mkCase true lastInpLab lastCase cont // Make the blocks for the remaining tests. let firstInpLab,overallBlock = List.foldBack (fun caseInfo (continueInpLab, continueBlock) -> let newInpLab = generateCodeLabel () (newInpLab, mkGroupBlock ([continueInpLab], [ mkCase false newInpLab caseInfo continueInpLab; continueBlock ]))) firstCases (lastInpLab, lastBlock) // Add on a branch to the first input label. This gets optimized // away by the printer/emitter. InstrMorph (mkGroupBlock ([firstInpLab], [ mkBasicBlock2 (inplab, [ mkStloc locn; I_br firstInpLab ]); overallBlock ])) | IntegerTag -> // Use a dictionary to avoid quadratic lookup in case list let dict = System.Collections.Generic.Dictionary() for (i,case) in cases do dict.[i] <- case let mkCase i _ = let mutable res = Unchecked.defaultof<_> let ok = dict.TryGetValue(i, &res) if ok then res else cont let dests = List.mapi mkCase cuspec.Alternatives InstrMorph (mkGetTag cenv cuspec @ [ I_switch (dests,cont) ]) | SingleCase -> match cases with | [(0,tg)] -> InstrMorph [ AI_pop; I_br tg ] | [] -> InstrMorph [ AI_pop; I_br cont ] | _ -> failwith "unexpected: strange switch on single-case unions should not be present" | TailOrNull -> failwith "unexpected: switches on lists should have been eliminated to brisdata tests" | _ -> InstrMorph [instr] | _ -> InstrMorph [instr] let convILMethodBody cenv il = let tmps = ILLocalsAllocator il.Locals.Length let code= morphExpandILInstrsInILCode (convInstr cenv tmps) il.Code {il with Locals = ILList.ofList (ILList.toList il.Locals @ tmps.Close()); Code=code; MaxStack=il.MaxStack+2 } let convMethodDef cenv md = {md with mdBody= morphILMethodBody (convILMethodBody cenv) md.mdBody } let mkHiddenGeneratedInstanceFieldDef ilg (nm,ty,init,access) = mkILInstanceField (nm,ty,init,access) |> addFieldNeverAttrs ilg |> addFieldGeneratedAttrs ilg let mkHiddenGeneratedStaticFieldDef ilg (a,b,c,d,e) = mkILStaticField (a,b,c,d,e) |> addFieldNeverAttrs ilg |> addFieldGeneratedAttrs ilg let mkMethodsAndPropertiesForFields cenv access attr hasHelpers (typ: ILType) (fields: IlxUnionField[]) = let basicProps = fields |> Array.map (fun field -> { Name=adjustFieldName hasHelpers field.Name; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod = Some (mkILMethRef (typ.TypeRef, ILCallingConv.Instance, "get_" + adjustFieldName hasHelpers field.Name, 0, [], field.Type)); CallingConv=ILThisConvention.Instance; Type=field.Type; Init=None; Args=mkILTypes []; CustomAttrs= field.ILField.CustomAttrs; } |> addPropertyGeneratedAttrs cenv.ilg ) |> Array.toList let basicMethods = [ for field in fields do let fspec = mkILFieldSpecInTy(typ,field.LowerName,field.Type) yield mkILNonGenericInstanceMethod ("get_" + adjustFieldName hasHelpers field.Name, access, [], mkILReturn field.Type, mkMethodBody(true,emptyILLocals,2, nonBranchingInstrsToCode [ mkLdarg 0us; mkNormalLdfld fspec ], attr)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg ] basicProps, basicMethods let convAlternativeDef cenv num (td:ILTypeDef) cud info cuspec (baseTy:ILType) (alt:IlxUnionAlternative) = let attr = cud.cudWhere let altName = alt.Name let fields = alt.FieldDefs let altTy = tyForAlt cuspec alt let repr = cudefRepr // Attributes on unions get attached to the construction methods in the helpers let addAltAttribs (mdef: ILMethodDef) = { mdef with CustomAttrs=alt.altCustomAttrs } // The stdata instruction is only ever used for the F# "List" type // // Microsoft.FSharp.Collections.List`1 is indeed logically immutable, but we use mutation on this type internally // within FSharp.Core.dll on fresh unpublished cons cells. let isTotallyImmutable = (cud.cudHasHelpers <> SpecialFSharpListHelpers) let altUniqObjMeths = // This method is only generated if helpers are not available. It fetches the unique object for the alternative // without exposing direct access to the underlying field match cud.cudHasHelpers with | AllHelpers | SpecialFSharpOptionHelpers | SpecialFSharpListHelpers -> [] | _ -> if alt.IsNullary && repr.MaintainPossiblyUniqueConstantFieldForAlternative (info,alt) then let methName = "get_" + altName let meth = mkILNonGenericStaticMethod (methName, cud.cudReprAccess,[],mkILReturn(baseTy), mkMethodBody(true,emptyILLocals,fields.Length, nonBranchingInstrsToCode [ I_ldsfld (Nonvolatile,mkConstFieldSpec altName baseTy) ], attr)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg [meth] else [] let baseMakerMeths, baseMakerProps = match cud.cudHasHelpers with | AllHelpers | SpecialFSharpOptionHelpers | SpecialFSharpListHelpers -> let baseTesterMeths, baseTesterProps = if cud.cudAlternatives.Length <= 1 then [], [] elif repr.OptimizingOneAlternativeToNull info then [], [] else [ mkILNonGenericInstanceMethod ("get_" + mkTesterName altName, cud.cudHelpersAccess,[], mkILReturn cenv.ilg.typ_bool, mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode [ mkLdarg0; (mkIlxInstr (EI_isdata (true,cuspec, num))) ], attr)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg ], [ { Name=mkTesterName altName; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod = Some (mkILMethRef (baseTy.TypeRef, ILCallingConv.Instance, "get_" + mkTesterName altName, 0, [], cenv.ilg.typ_bool)); CallingConv=ILThisConvention.Instance; Type=cenv.ilg.typ_bool; Init=None; Args=mkILTypes []; CustomAttrs=emptyILCustomAttrs; } |> addPropertyGeneratedAttrs cenv.ilg |> addPropertyNeverAttrs cenv.ilg ] let baseMakerMeths, baseMakerProps = if alt.IsNullary then let nullaryMeth = mkILNonGenericStaticMethod ("get_" + altName, cud.cudHelpersAccess, [], mkILReturn baseTy, mkMethodBody(true,emptyILLocals,fields.Length, nonBranchingInstrsToCode (convNewDataInstrInternal cenv cuspec num), attr)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg |> addAltAttribs let nullaryProp = { Name=altName; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod = Some (mkILMethRef (baseTy.TypeRef, ILCallingConv.Static, "get_" + altName, 0, [], baseTy)); CallingConv=ILThisConvention.Static; Type=baseTy; Init=None; Args=mkILTypes []; CustomAttrs=emptyILCustomAttrs; } |> addPropertyGeneratedAttrs cenv.ilg |> addPropertyNeverAttrs cenv.ilg [nullaryMeth],[nullaryProp] else let mdef = mkILNonGenericStaticMethod (mkMakerName cuspec altName, cud.cudHelpersAccess, fields |> Array.map (fun fd -> mkILParamNamed (fd.LowerName, fd.Type)) |> Array.toList, mkILReturn baseTy, mkMethodBody(true,emptyILLocals,fields.Length, nonBranchingInstrsToCode (Array.toList (Array.mapi (fun i _ -> mkLdarg (uint16 i)) fields) @ (convNewDataInstrInternal cenv cuspec num)), attr)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg |> addAltAttribs [mdef],[] (baseMakerMeths@baseTesterMeths), (baseMakerProps@baseTesterProps) | NoHelpers -> [], [] let typeDefs, altDebugTypeDefs, altNullaryFields = if repr.OptimizeAlternativeToNull (info,alt) then [], [], [] elif repr.OptimizeSingleNonNullaryAlternativeToRootClass (info,alt) then [], [], [] else let altNullaryFields = if repr.MaintainPossiblyUniqueConstantFieldForAlternative(info,alt) then let basic = mkHiddenGeneratedStaticFieldDef cenv.ilg (constFieldName altName, baseTy, None, None, ILMemberAccess.Assembly) let uniqObjField = { basic with IsInitOnly=true } let inRootClass = cuspecRepr.OptimizeAlternativeToRootClass (cuspec,alt) [ (info,alt, altTy,num,uniqObjField,inRootClass) ] else [] let typeDefs, altDebugTypeDefs = if repr.OptimizeAlternativeToRootClass (info,alt) then [], [] else let altDebugTypeDefs, debugAttrs = if not cud.cudDebugProxies then [], [] else let debugProxyTypeName = altTy.TypeSpec.Name + "@DebugTypeProxy" let debugProxyTy = mkILBoxedTyRaw (mkILNestedTyRef(altTy.TypeSpec.Scope,altTy.TypeSpec.Enclosing, debugProxyTypeName)) altTy.GenericArgs let debugProxyFieldName = "_obj" let debugProxyFields = [ mkHiddenGeneratedInstanceFieldDef cenv.ilg (debugProxyFieldName,altTy, None, ILMemberAccess.Assembly) ] let debugProxyCtor = mkILCtor(ILMemberAccess.Public (* must always be public - see jared parson blog entry on implementing debugger type proxy *), [ mkILParamNamed ("obj",altTy) ], mkMethodBody (false,emptyILLocals,3, nonBranchingInstrsToCode [ yield mkLdarg0 yield mkNormalCall (mkILCtorMethSpecForTy (cenv.ilg.typ_Object,[])) yield mkLdarg0 yield mkLdarg 1us; yield mkNormalStfld (mkILFieldSpecInTy (debugProxyTy,debugProxyFieldName,altTy)); ],None)) |> addMethodGeneratedAttrs cenv.ilg let debugProxyGetterMeths = fields |> Array.map (fun field -> let fldName,fldTy = mkUnionCaseFieldId field mkILNonGenericInstanceMethod ("get_" + field.Name, ILMemberAccess.Public,[], mkILReturn field.Type, mkMethodBody(true,emptyILLocals,2, nonBranchingInstrsToCode [ mkLdarg0; mkNormalLdfld (mkILFieldSpecInTy (debugProxyTy,debugProxyFieldName,altTy)); mkNormalLdfld (mkILFieldSpecInTy(altTy,fldName,fldTy));],None)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg) |> Array.toList let debugProxyGetterProps = fields |> Array.map (fun fdef -> { Name=fdef.Name; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod=Some(mkILMethRef(debugProxyTy.TypeRef,ILCallingConv.Instance,"get_" + fdef.Name,0,[],fdef.Type)); CallingConv=ILThisConvention.Instance; Type=fdef.Type; Init=None; Args=mkILTypes []; CustomAttrs= fdef.ILField.CustomAttrs; } |> addPropertyGeneratedAttrs cenv.ilg) |> Array.toList let debugProxyTypeDef = mkILGenericClass (debugProxyTypeName, ILTypeDefAccess.Nested ILMemberAccess.Assembly, td.GenericParams, cenv.ilg.typ_Object, [], mkILMethods ([debugProxyCtor] @ debugProxyGetterMeths), mkILFields debugProxyFields, emptyILTypeDefs, mkILProperties debugProxyGetterProps, emptyILEvents, emptyILCustomAttrs, ILTypeInit.BeforeField) [ { debugProxyTypeDef with IsSpecialName=true } ], ( [mkDebuggerTypeProxyAttribute cenv.ilg debugProxyTy] @ cud.cudDebugDisplayAttributes) let altTypeDef = let basicFields = fields |> Array.map (fun field -> let fldName,fldTy = mkUnionCaseFieldId field let fdef = mkHiddenGeneratedInstanceFieldDef cenv.ilg (fldName,fldTy, None, ILMemberAccess.Assembly) { fdef with IsInitOnly=isTotallyImmutable }) |> Array.toList let basicProps, basicMethods = mkMethodsAndPropertiesForFields cenv cud.cudReprAccess attr cud.cudHasHelpers altTy fields let basicCtorMeth = mkILStorageCtor (attr , [ yield mkLdarg0 match repr.DiscriminationTechnique info with | IntegerTag -> yield (AI_ldc(DT_I4,ILConst.I4(num))) yield mkNormalCall (mkILCtorMethSpecForTy (baseTy,[mkTagFieldType cenv.ilg cuspec])) | SingleCase | RuntimeTypes -> yield mkNormalCall (mkILCtorMethSpecForTy (baseTy,[])) | TailOrNull -> failwith "unreachable" ], altTy, (basicFields |> List.map (fun fdef -> fdef.Name, fdef.Type) ), (if cuspec.HasHelpers = AllHelpers then ILMemberAccess.Assembly else cud.cudReprAccess)) |> addMethodGeneratedAttrs cenv.ilg let altTypeDef = mkILGenericClass (altTy.TypeSpec.Name, // Types for nullary's become private, they also have names like _Empty ILTypeDefAccess.Nested (if alt.IsNullary && cud.cudHasHelpers = IlxUnionHasHelpers.AllHelpers then ILMemberAccess.Assembly else cud.cudReprAccess), td.GenericParams, baseTy, [], mkILMethods ([basicCtorMeth] @ basicMethods), mkILFields basicFields, emptyILTypeDefs, mkILProperties basicProps, emptyILEvents, mkILCustomAttrs debugAttrs, ILTypeInit.BeforeField) { altTypeDef with IsSerializable=td.IsSerializable; IsSpecialName=true } [ altTypeDef ], altDebugTypeDefs typeDefs,altDebugTypeDefs,altNullaryFields baseMakerMeths, baseMakerProps, altUniqObjMeths, typeDefs, altDebugTypeDefs, altNullaryFields let rec convClassUnionDef cenv enc td cud = let baseTy = mkILFormalBoxedTy (mkRefForNestedILTypeDef ILScopeRef.Local (enc,td)) td.GenericParams let cuspec = IlxUnionSpec(IlxUnionRef(baseTy.TypeRef, cud.cudAlternatives, cud.cudNullPermitted, cud.cudHasHelpers), baseTy.GenericArgs) let info = (enc,td,cud) let repr = cudefRepr let isTotallyImmutable = (cud.cudHasHelpers <> SpecialFSharpListHelpers) let results = cud.cudAlternatives |> List.ofArray |> List.mapi (fun i alt -> convAlternativeDef cenv i td cud info cuspec baseTy alt) let baseMethsFromAlt = results |> List.collect (fun (a,_,_,_,_,_) -> a) let basePropsFromAlt = results |> List.collect (fun (_,a,_,_,_,_) -> a) let altUniqObjMeths = results |> List.collect (fun (_,_,a,_,_,_) -> a) let altTypeDefs = results |> List.collect (fun (_,_,_,a,_,_) -> a) let altDebugTypeDefs = results |> List.collect (fun (_,_,_,_,a,_) -> a) let altNullaryFields = results |> List.collect (fun (_,_,_,_,_,a) -> a) let tagFieldsInObject = match repr.DiscriminationTechnique info with | SingleCase | RuntimeTypes | TailOrNull -> [] | IntegerTag -> [ mkTagFieldId cenv.ilg cuspec ] let selfFields, selfMeths, selfProps, _ = match cud.cudAlternatives |> Array.toList |> List.findi 0 (fun alt -> repr.OptimizeSingleNonNullaryAlternativeToRootClass (info,alt)) with | Some (alt,altNum) -> let fields = (alt.FieldDefs |> Array.toList |> List.map mkUnionCaseFieldId) let ctor = mkILSimpleStorageCtor (cud.cudWhere, (match td.Extends with None -> Some cenv.ilg.tspec_Object | Some typ -> Some typ.TypeSpec), baseTy, (fields @ tagFieldsInObject), (if cuspec.HasHelpers = AllHelpers then ILMemberAccess.Assembly else cud.cudReprAccess)) |> addMethodGeneratedAttrs cenv.ilg let props, meths = mkMethodsAndPropertiesForFields cenv cud.cudReprAccess cud.cudWhere cud.cudHasHelpers baseTy alt.FieldDefs fields,([ctor] @ meths),props,altNum | None -> [],[],[],0 let selfAndTagFields = [ for (fldName,fldTy) in (selfFields @ tagFieldsInObject) do let fdef = mkHiddenGeneratedInstanceFieldDef cenv.ilg (fldName,fldTy, None, ILMemberAccess.Assembly) yield { fdef with IsInitOnly=isTotallyImmutable } ] let ctorMeths = if (isNil selfFields && isNil tagFieldsInObject && nonNil selfMeths) || cud.cudAlternatives |> Array.forall (fun alt -> repr.OptimizeSingleNonNullaryAlternativeToRootClass (info,alt)) then [] (* no need for a second ctor in these cases *) else [ mkILSimpleStorageCtor (cud.cudWhere, (match td.Extends with None -> Some cenv.ilg.tspec_Object | Some typ -> Some typ.TypeSpec), baseTy, tagFieldsInObject, ILMemberAccess.Assembly) // cud.cudReprAccess) |> addMethodGeneratedAttrs cenv.ilg ] // Now initialize the constant fields wherever they are stored... let addConstFieldInit cd = if isNil altNullaryFields then cd else prependInstrsToClassCtor [ for (info,_alt,altTy,fidx,fd,inRootClass) in altNullaryFields do let constFieldId = (fd.Name,baseTy) let constFieldSpec = mkConstFieldSpecFromId baseTy constFieldId match repr.DiscriminationTechnique info with | SingleCase | RuntimeTypes | TailOrNull -> yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy,[])); | IntegerTag -> if inRootClass then yield (AI_ldc(DT_I4,ILConst.I4(fidx))); yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy,[mkTagFieldType cenv.ilg cuspec] )) else yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy,[])); yield mkNormalStsfld constFieldSpec ] cud.cudWhere cd let tagMeths, tagProps, tagEnumFields = let tagFieldType = mkTagFieldType cenv.ilg cuspec let tagEnumFields = cud.cudAlternatives |> Array.mapi (fun num alt -> mkILLiteralField (alt.Name, tagFieldType, ILFieldInit.Int32 num, None, ILMemberAccess.Public)) |> Array.toList let tagMeths,tagProps = // // If we are using NULL as a representation for an element of this type then we cannot // // use an instance method if (repr.OptimizingOneAlternativeToNull info) then [ mkILNonGenericStaticMethod ("Get" + tagPropertyName, cud.cudHelpersAccess, [mkILParamAnon baseTy], mkILReturn tagFieldType, mkMethodBody(true,emptyILLocals,2, nonBranchingInstrsToCode [ mkLdarg0; (mkIlxInstr (EI_lddatatag (true, cuspec))) ], cud.cudWhere)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg ], [] else [ mkILNonGenericInstanceMethod ("get_" + tagPropertyName, cud.cudHelpersAccess,[], mkILReturn tagFieldType, mkMethodBody(true,emptyILLocals,2, nonBranchingInstrsToCode [ mkLdarg0; (mkIlxInstr (EI_lddatatag (true, cuspec))) ], cud.cudWhere)) |> convMethodDef cenv |> addMethodGeneratedAttrs cenv.ilg ], [ { Name=tagPropertyName; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod=Some(mkILMethRef(baseTy.TypeRef,ILCallingConv.Instance,"get_" + tagPropertyName,0,[], tagFieldType)); CallingConv=ILThisConvention.Instance; Type=tagFieldType; Init=None; Args=mkILTypes []; CustomAttrs=emptyILCustomAttrs; } |> addPropertyGeneratedAttrs cenv.ilg |> addPropertyNeverAttrs cenv.ilg ] tagMeths, tagProps, tagEnumFields // The class can be abstract if each alternative is represented by a derived type let isAbstract = (altTypeDefs.Length = cud.cudAlternatives.Length) // If the class is abstract make the constructor used for the subclasses protected let ctorMeths = if isAbstract then ctorMeths |> List.map (fun mdef -> {mdef with Access=ILMemberAccess.Assembly }) else ctorMeths let existingMeths = td.Methods.AsList // Filter out the F#-compiler supplied implementation of the get_Empty method. This is because we will replace // its implementation by one that loads the unique private static field for lists |> List.filter (fun md -> not (cud.cudHasHelpers = SpecialFSharpListHelpers && (md.Name = "get_Empty" || md.Name = "Cons" || md.Name = "get_IsEmpty")) && not (cud.cudHasHelpers = SpecialFSharpOptionHelpers && (md.Name = "get_Value" || md.Name = "get_None" || md.Name = "Some"))) // Convert the user-defined methods |> List.map (convMethodDef cenv) let existingProps = td.Properties.AsList // Filter out the F#-compiler supplied implementation of the Empty property. |> List.filter (fun pd -> not (cud.cudHasHelpers = SpecialFSharpListHelpers && (pd.Name = "Empty" || pd.Name = "IsEmpty" )) && not (cud.cudHasHelpers = SpecialFSharpOptionHelpers && (pd.Name = "Value" || pd.Name = "None"))) let casesTypeDef = None let enumTypeDef = // The nested Tags type is elided if there is only one tag // The Tag property is NOT elided if there is only one tag if tagEnumFields.Length <= 1 then None else Some { Name = "Tags"; NestedTypes = emptyILTypeDefs; GenericParams= td.GenericParams; Access = ILTypeDefAccess.Nested cud.cudReprAccess; IsAbstract = true; IsSealed = true; IsSerializable=false; IsComInterop=false; Layout=ILTypeDefLayout.Auto; IsSpecialName=false; Encoding=ILDefaultPInvokeEncoding.Ansi; Implements = mkILTypes []; Extends= Some cenv.ilg.typ_Object ; Methods= emptyILMethods; SecurityDecls=emptyILSecurityDecls; HasSecurity=false; Fields=mkILFields tagEnumFields; MethodImpls=emptyILMethodImpls; InitSemantics=ILTypeInit.OnAny; Events=emptyILEvents; Properties=emptyILProperties; CustomAttrs= emptyILCustomAttrs; tdKind = ILTypeDefKind.Enum; } let baseTypeDef = { Name = td.Name; NestedTypes = mkILTypeDefs (Option.toList casesTypeDef @ Option.toList enumTypeDef @ altTypeDefs @ altDebugTypeDefs @ (convTypeDefs cenv (enc@[td]) td.NestedTypes).AsList); GenericParams= td.GenericParams; Access = td.Access; IsAbstract = isAbstract; IsSealed = false; IsSerializable=td.IsSerializable; IsComInterop=false; Layout=td.Layout; IsSpecialName=td.IsSpecialName; Encoding=td.Encoding ; Implements = td.Implements; Extends= (match td.Extends with None -> Some cenv.ilg.typ_Object | _ -> td.Extends) ; Methods= mkILMethods (ctorMeths @ baseMethsFromAlt @ selfMeths @ tagMeths @ altUniqObjMeths @ existingMeths); SecurityDecls=td.SecurityDecls; HasSecurity=td.HasSecurity; Fields=mkILFields (selfAndTagFields @ List.map (fun (_,_,_,_,fdef,_) -> fdef) altNullaryFields @ td.Fields.AsList); MethodImpls=td.MethodImpls; InitSemantics=ILTypeInit.BeforeField; Events=td.Events; Properties=mkILProperties (tagProps @ basePropsFromAlt @ selfProps @ existingProps); CustomAttrs=td.CustomAttrs; tdKind = ILTypeDefKind.Class; } // The .cctor goes on the Cases type since that's where the constant fields for nullary cosntructors live |> addConstFieldInit baseTypeDef and convTypeDef cenv enc td = match td.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> begin match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure cloinfo -> {td with NestedTypes = convTypeDefs cenv (enc@[td]) td.NestedTypes; Methods=morphILMethodDefs (convMethodDef cenv) td.Methods; tdKind= mkIlxTypeDefKind(IlxTypeDefKind.Closure (morphIlxClosureInfo (convILMethodBody cenv) cloinfo)) } | IlxTypeDefKind.Union cud -> convClassUnionDef cenv enc td cud end | _ -> {td with NestedTypes = convTypeDefs cenv (enc@[td]) td.NestedTypes; Methods=morphILMethodDefs (convMethodDef cenv) td.Methods; } and convTypeDefs cenv enc tdefs : ILTypeDefs = morphILTypeDefs (convTypeDef cenv enc) tdefs let ConvModule ilg modul = let cenv = { ilg=ilg; } morphILTypeDefsInILModule (convTypeDefs cenv []) modul fsharp-3.0.34/src/fsharp/0000775000175000017500000000000012260314606014142 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler.Silverlight/0000775000175000017500000000000012260314606021371 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler.Silverlight/FSharp.Compiler.Silverlight.fsproj0000664000175000017500000003766612260314606030067 0ustar chrischris $(MSBuildProjectDirectory)\..\.. sl5-compiler 10.0.0 2.0 False Debug AnyCPU Library FSharp.Compiler.Silverlight EXTENSIONTYPING $(DefineConstants);SILVERLIGHT $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);INTERNALIZED_POWER_PACK $(DefineConstants);COMPILER $(DefineConstants);NO_PDB_READER $(DefineConstants);NO_PDB_WRITER $(DefineConstants);NO_INLINE_IL_PARSER $(DefineConstants);INCLUDE_METADATA_READER $(DefineConstants);INCLUDE_METADATA_WRITER $(DefineConstants);EXTENSIBLE_DUMPER $(NoWarn);44;62;9;1203 {a90a57be-c2bd-4cb9-87dc-c0d18820ff6b} true 0x06800000 $(OtherFlags) /warnon:1182 --nodebugdata FSComp.txt FSStrings.resx assemblyinfo.FSharp.Compiler.Silverlight.dll.fs --lexlib Internal.Utilities.Text.Lexing lex.fsl Microsoft.FSharp.Compiler.Parser Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing pars.fsy ExtensibleDumper.fsi ExtensibleDumper.fs sformat.fsi sformat.fs sr.fsi sr.fs prim-lexing.fsi prim-lexing.fs prim-parsing.fsi prim-parsing.fs resizearray.fsi resizearray.fs HashMultiMap.fsi HashMultiMap.fs TaggedCollections.fsi TaggedCollections.fs FlatList.fs illib.fs filename.fsi filename.fs zmap.fsi zmap.fs zset.fsi zset.fs bytes.fsi bytes.fs ildiag.fsi ildiag.fs ReferenceResolution.fs il.fsi il.fs ilx.fsi ilx.fs ilmorph.fsi ilmorph.fs ilsupp.fsi ilsupp.fs ilbinary.fs lib.fs range.fsi range.fs ErrorLogger.fs tainted.fsi tainted.fs InternalCollections.fsi InternalCollections.fs ilread.fsi ilread.fs ilwrite.fsi ilwrite.fs ilreflect.fs CompilerLocationUtils.fs PrettyNaming.fs ilxsettings.fs pubclo.fsi pubclo.fs cu_erase.fsi cu_erase.fs InternalFileSystemUtils.fsi InternalFileSystemUtils.fs unilex.fsi unilex.fs layout.fsi layout.fs ast.fs est.fsi est.fs lexhelp.fsi lexhelp.fs sreflect.fsi sreflect.fs QueueList.fs tast.fs env.fs tastops.fsi tastops.fs pickle.fsi pickle.fs lexfilter.fs import.fsi import.fs infos.fs NicePrint.fs augment.fsi augment.fs outcome.fsi outcome.fs nameres.fsi nameres.fs typrelns.fs patcompile.fsi patcompile.fs csolve.fsi csolve.fs formats.fsi formats.fs unsolved.fs creflect.fsi creflect.fs check.fsi check.fs tc.fsi tc.fs opt.fsi opt.fs detuple.fsi detuple.fs tlr.fsi tlr.fs lowertop.fs ilxgen.fsi ilxgen.fs TraceCall.fsi TraceCall.fs build.fsi build.fs fscopts.fsi fscopts.fs fsiaux.fsi fsiaux.fs FSIstrings.txt IncrementalBuild.fsi IncrementalBuild.fs fsc.fs Reactor.fsi Reactor.fs ServiceLexing.fsi ServiceLexing.fs ServiceConstants.fs ServiceParseTreeWalk.fs ServiceNavigation.fsi ServiceNavigation.fs ServiceParamInfoLocations.fsi ServiceParamInfoLocations.fs ServiceUntypedParse.fsi ServiceUntypedParse.fs ServiceDeclarations.fsi ServiceDeclarations.fs service.fsi service.fs fsi.fs SimpleServices.fs {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/creflect.fs0000775000175000017500000012762712260314606016305 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.QuotationTranslator open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Range module QP = Microsoft.FSharp.Compiler.QuotationPickler let verboseCReflect = condition "VERBOSE_CREFLECT" let mscorlibName = "" let mkVoidTy = QP.mkILNamedTy({ tcName = "System.Void"; tcAssembly=mscorlibName},[]) [] type IsReflectedDefinition = | Yes | No type cenv = { g: Env.TcGlobals; amap: Import.ImportMap; scope: CcuThunk; // Accumulate the type splices (i.e. captured type parameters) into here typeSplices: ResizeArray ; // Accumulate the expression splices into here exprSplices: ResizeArray isReflectedDefinition : IsReflectedDefinition } let mk_cenv (g,amap,scope,isReflectedDefinition) = { g = g scope=scope amap=amap typeSplices = new ResizeArray<_>() exprSplices = new ResizeArray<_>() isReflectedDefinition = isReflectedDefinition } type QuotationTranslationEnv = { //Map from Val to binding index vs: ValMap; nvs: int; //Map from typar stamps to binding index tyvs: StampMap; // Map for values bound by the // 'let v = isinst e in .... if nonnull v then ...v .... ' // construct arising out the compilation of pattern matching. We decode these back to the form // 'if istype v then ...unbox v .... ' isinstVals: ValMap substVals: ValMap } static member Empty = { vs=ValMap<_>.Empty; nvs=0; tyvs = Map.empty ; isinstVals = ValMap<_>.Empty substVals = ValMap<_>.Empty } member env.BindTypar (v:Typar) = let idx = env.tyvs.Count { env with tyvs = env.tyvs.Add(v.Stamp,idx ) } member env.BindTypars vs = (env, vs) ||> List.fold (fun env v -> env.BindTypar v) // fold left-to-right because indexes are left-to-right let BindFormalTypars (env:QuotationTranslationEnv) vs = { env with tyvs=Map.empty}.BindTypars vs let BindVal env v = let idx = env.nvs { env with vs = env.vs.Add v idx; nvs = env.nvs + 1 } let BindIsInstVal env v (ty,e) = { env with isinstVals = env.isinstVals.Add v (ty,e) } let BindSubstVal env v e = { env with substVals = env.substVals.Add v e } let BindVals env vs = List.fold BindVal env vs // fold left-to-right because indexes are left-to-right let BindFlatVals env vs = FlatList.fold BindVal env vs // fold left-to-right because indexes are left-to-right exception InvalidQuotedTerm of exn exception IgnoringPartOfQuotedTermWarning of string * Range.range let wfail e = raise (InvalidQuotedTerm(e)) let (|ModuleValueOrMemberUse|_|) cenv expr = let rec loop expr args = match stripExpr expr with | Expr.App((InnerExprPat(Expr.Val(vref,vFlags,_) as f)),fty,tyargs,actualArgs,_m) when vref.IsMemberOrModuleBinding -> Some(vref,vFlags,f,fty,tyargs,actualArgs@args) | Expr.App(f,_fty,[],actualArgs,_) -> loop f (actualArgs @ args) | (Expr.Val(vref,vFlags,_m) as f) when (match vref.ActualParent with ParentNone -> false | _ -> true) -> let fty = tyOfExpr cenv.g f Some(vref,vFlags,f,fty,[],args) | _ -> None loop expr [] let isSplice g vref = valRefEq g vref g.splice_expr_vref || valRefEq g vref g.splice_raw_expr_vref let rec ConvExpr cenv (env : QuotationTranslationEnv) (expr: Expr) : QP.ExprData = // Eliminate integer 'for' loops let expr = DetectFastIntegerForLoops cenv.g expr // Eliminate subsumption coercions for functions. This must be done post-typechecking because we need // complete inference types. let expr = NormalizeAndAdjustPossibleSubsumptionExprs cenv.g expr // Remove TExpr_ref nodes let expr = stripExpr expr // Recognize F# object model calls // Recognize applications of module functions. match expr with // Detect expression tree exprSplices | Expr.App(InnerExprPat(Expr.Val(vf,_,_)),_,_,x0::rest,m) when isSplice cenv.g vf -> let idx = cenv.exprSplices.Count let ty = tyOfExpr cenv.g expr match (freeInExpr CollectTyparsAndLocalsNoCaching x0).FreeLocals |> Seq.tryPick (fun v -> if env.vs.ContainsVal v then Some(v) else None) with | Some v -> errorR(Error(FSComp.SR.crefBoundVarUsedInSplice(v.DisplayName), v.Range)) | None -> () cenv.exprSplices.Add(x0); let hole = QP.mkHole(ConvType cenv env m ty,idx) (hole, rest) ||> List.fold (fun fR arg -> QP.mkApp (fR,ConvExpr cenv env arg)) | ModuleValueOrMemberUse cenv (vref,vFlags,_f,_fty,tyargs,curriedArgs) when not (isSplice cenv.g vref) -> let m = expr.Range let (numEnclTypeArgs,_,isNewObj,valUseFlags,isSelfInit,takesInstanceArg,isPropGet,isPropSet) = GetMemberCallInfo cenv.g (vref,vFlags) let isMember,tps,curriedArgInfos,retTy = match vref.MemberInfo with | Some _ when not vref.IsExtensionMember -> // This is an application of a member method // We only count one argument block for these. let tps,curriedArgInfos,retTy,_ = GetTypeOfIntrinsicMemberInCompiledForm cenv.g vref true,tps,curriedArgInfos,retTy | _ -> // This is an application of a module value or extension member let arities = arityOfVal vref.Deref let tps,curriedArgInfos,retTy,_ = GetTopValTypeInCompiledForm cenv.g arities vref.Type m false,tps,curriedArgInfos,retTy // Compute the object arguments as they appear in a compiled call // Strip off the object argument, if any. The curriedArgInfos are already adjusted to compiled member form let objArgs,curriedArgs = match takesInstanceArg,curriedArgs with | false,curriedArgs -> [],curriedArgs | true,(objArg::curriedArgs) -> [objArg],curriedArgs | true,[] -> wfail(InternalError("warning: unexpected missing object argument when generating quotation for call to F# object member "^vref.LogicalName,m)) if verboseCReflect then dprintfn "vref.DisplayName = %A, #objArgs = %A, #curriedArgs = %A" vref.DisplayName objArgs.Length curriedArgs.Length // Check to see if there aren't enough arguments or if there is a tuple-arity mismatch // If so, adjust and try again if curriedArgs.Length < curriedArgInfos.Length || ((List.take curriedArgInfos.Length curriedArgs,curriedArgInfos) ||> List.exists2 (fun arg argInfo -> (argInfo.Length > (tryDestTuple arg).Length))) then if verboseCReflect then dprintfn "vref.DisplayName = %A was under applied" vref.DisplayName // Too few arguments or incorrect tupling? Convert to a lambda and beta-reduce the // partially applied arguments to 'let' bindings let topValInfo = match vref.ValReprInfo with | None -> error(InternalError("no arity information found for F# value "^vref.LogicalName,vref.Range)) | Some a -> a let expr,exprty = AdjustValForExpectedArity cenv.g m vref vFlags topValInfo ConvExpr cenv env (MakeApplicationAndBetaReduce cenv.g (expr,exprty,[tyargs],curriedArgs,m)) else // Too many arguments? Chop let (curriedArgs:Expr list ),laterArgs = List.chop curriedArgInfos.Length curriedArgs let callR = // We now have the right number of arguments, w.r.t. currying and tupling. // Next work out what kind of object model call and build an object model call node. // detuple the args let untupledCurriedArgs = (curriedArgs,curriedArgInfos) ||> List.map2 (fun arg curriedArgInfo -> let numUntupledArgs = curriedArgInfo.Length (if numUntupledArgs = 0 then [] elif numUntupledArgs = 1 then [arg] else tryDestTuple arg)) if verboseCReflect then dprintfn "vref.DisplayName = %A , after unit adjust, #untupledCurriedArgs = %A, #curriedArgInfos = %d" vref.DisplayName (List.map List.length untupledCurriedArgs) curriedArgInfos.Length let subCall = if isMember then // This is an application of a member method // We only count one argument block for these. let callArgs = (objArgs::untupledCurriedArgs) |> List.concat let parentTyconR = ConvTyconRef cenv vref.TopValActualParent m let isNewObj = (isNewObj || valUseFlags || isSelfInit) // The signature types are w.r.t. to the formal context let envinner = BindFormalTypars env tps let argTys = curriedArgInfos |> List.concat |> List.map fst let methArgTypesR = ConvTypes cenv envinner m argTys let methRetTypeR = ConvReturnType cenv envinner m retTy let methName = vref.CompiledName let numGenericArgs = tyargs.Length-numEnclTypeArgs ConvObjectModelCall cenv env m (isPropGet,isPropSet,isNewObj,parentTyconR,methArgTypesR,methRetTypeR,methName,tyargs,numGenericArgs,callArgs) else // This is an application of the module value. ConvModuleValueApp cenv env m vref tyargs untupledCurriedArgs match curriedArgs,curriedArgInfos with // static member and module value unit argument elimination | [arg:Expr],[[]] -> // we got here if quotation is represents a call with unit argument // let f () = () // <@ f @> // => (\arg -> f arg) => arg is Expr.Val - no-effects, first case // <@ f() @> // Expr.Const(Unit) - no-effects - first case // <@ f (someFunctionThatReturnsUnit) @> - potential effects - second case match arg with | Expr.Val _ | Expr.Const(Const.Unit,_,_) -> subCall | _ -> let argQ = ConvExpr cenv env arg QP.mkSequential(argQ, subCall) | _ -> subCall List.fold (fun fR arg -> QP.mkApp (fR,ConvExpr cenv env arg)) callR laterArgs // Blast type application nodes and expression application nodes apart so values are left with just their type arguments | Expr.App(f,fty,(_ :: _ as tyargs),(_ :: _ as args),m) -> let rfty = applyForallTy cenv.g fty tyargs ConvExpr cenv env (primMkApp (primMkApp (f,fty) tyargs [] m, rfty) [] args m) // Uses of possibly-polymorphic values | Expr.App(InnerExprPat(Expr.Val(vref,_vFlags,m)),_fty,tyargs,[],_) -> ConvValRef true cenv env m vref tyargs // Simple applications | Expr.App(f,_fty,tyargs,args,m) -> if nonNil tyargs then wfail(Error(FSComp.SR.crefQuotationsCantContainGenericExprs(), m)); List.fold (fun fR arg -> QP.mkApp (fR,ConvExpr cenv env arg)) (ConvExpr cenv env f) args // REVIEW: what is the quotation view of literals accessing enumerations? Currently they show up as integers. | Expr.Const(c,m,ty) -> ConvConst cenv env m c ty | Expr.Val(vref,_vFlags,m) -> ConvValRef true cenv env m vref [] | Expr.Let(bind,body,_,_) -> // The binding may be a compiler-generated binding that gets removed in the quotation presentation match ConvLetBind cenv env bind with | None, env -> ConvExpr cenv env body | Some(bindR),env -> QP.mkLet(bindR,ConvExpr cenv env body) | Expr.LetRec(binds,body,_,_) -> let vs = valsOfBinds binds let vsR = vs |> FlatList.map (ConvVal cenv env) let env = BindFlatVals env vs let bodyR = ConvExpr cenv env body let bindsR = FlatList.zip vsR (binds |> FlatList.map (fun b -> b.Expr |> ConvExpr cenv env)) QP.mkLetRec(FlatList.toList bindsR,bodyR) | Expr.Lambda(_,_,_,vs,b,_,_) -> let v,b = MultiLambdaToTupledLambda vs b let vR = ConvVal cenv env v let bR = ConvExpr cenv (BindVal env v) b QP.mkLambda(vR, bR) | Expr.Quote(ast,_,_,_,_) -> QP.mkQuote(ConvExpr cenv env ast) | Expr.TyLambda (_,_,_,m,_) -> wfail(Error(FSComp.SR.crefQuotationsCantContainGenericFunctions(), m)) | Expr.Match (_spBind,m,dtree,tgs,_,retTy) -> let typR = ConvType cenv env m retTy ConvDecisionTree cenv env tgs typR dtree | Expr.Sequential (x0,x1,NormalSeq,_,_) -> QP.mkSequential(ConvExpr cenv env x0, ConvExpr cenv env x1) | Expr.Obj (_,typ,_,_,[TObjExprMethod(TSlotSig(_,ctyp, _,_,_,_),_,tps,[tmvs],e,_) as tmethod],_,m) when isDelegateTy cenv.g typ -> let f = mkLambdas m tps tmvs (e,GetFSharpViewOfReturnType cenv.g (returnTyOfMethod cenv.g tmethod)) let fR = ConvExpr cenv env f let tyargR = ConvType cenv env m ctyp QP.mkDelegate(tyargR, fR) | Expr.StaticOptimization (_,_,x,_) -> ConvExpr cenv env x | Expr.TyChoose _ -> ConvExpr cenv env (Typrelns.ChooseTyparSolutionsForFreeChoiceTypars cenv.g cenv.amap expr) | Expr.Sequential (x0,x1,ThenDoSeq,_,_) -> QP.mkSequential(ConvExpr cenv env x0, ConvExpr cenv env x1) | Expr.Obj (_lambdaId,_typ,_basev,_basecall,_overrides,_iimpls,m) -> wfail(Error(FSComp.SR.crefQuotationsCantContainObjExprs(),m)) | Expr.Op(op,tyargs,args,m) -> match op,tyargs,args with | TOp.UnionCase ucref,_,_ -> let mkR = ConvUnionCaseRef cenv ucref m let tyargsR = ConvTypes cenv env m tyargs let argsR = ConvExprs cenv env args QP.mkSum(mkR,tyargsR,argsR) | TOp.Tuple,tyargs,_ -> let tyR = ConvType cenv env m (mkTupledTy cenv.g tyargs) let argsR = ConvExprs cenv env args QP.mkTuple(tyR,argsR) | TOp.Recd (_,tcref),_,_ -> let rgtypR = ConvTyconRef cenv tcref m let tyargsR = ConvTypes cenv env m tyargs let argsR = ConvExprs cenv env args QP.mkRecdMk(rgtypR,tyargsR,argsR) | TOp.UnionCaseFieldGet (ucref,n),tyargs,[e] -> let tyargsR = ConvTypes cenv env m tyargs let tcR,s = ConvUnionCaseRef cenv ucref m let projR = (tcR,s,n) QP.mkSumFieldGet( projR, tyargsR,ConvExpr cenv env e) | TOp.ValFieldGetAddr(_rfref),_tyargs,_ -> wfail(Error(FSComp.SR.crefQuotationsCantContainAddressOf(), m)) | TOp.ValFieldGet(_rfref),_tyargs,[] -> wfail(Error(FSComp.SR.crefQuotationsCantContainStaticFieldRef(),m)) | TOp.ValFieldGet(rfref),tyargs,args -> ConvRFieldGet cenv env m rfref tyargs args | TOp.TupleFieldGet(n),tyargs,[e] -> let tyR = ConvType cenv env m (mkTupledTy cenv.g tyargs) QP.mkTupleGet(tyR, n, ConvExpr cenv env e) | TOp.ILAsm(([ I_ldfld(_,_,fspec) ] | [ I_ldsfld (_,fspec) ] | [ I_ldsfld (_,fspec); AI_nop ]),_),enclTypeArgs,args -> ConvLdfld cenv env m fspec enclTypeArgs args | TOp.ILAsm([ I_stfld(_,_,fspec) | I_stsfld (_,fspec) ],_),enclTypeArgs,args -> let tyargsR = ConvTypes cenv env m enclTypeArgs let parentTyconR = ConvILTypeRef cenv m fspec.EnclosingTypeRef let argsR = ConvLValueArgs cenv env args QP.mkFieldSet( (parentTyconR, fspec.Name),tyargsR, argsR) | TOp.ILAsm([ AI_ceq ],_),_,[arg1;arg2] -> let ty = tyOfExpr cenv.g arg1 let eq = mkCallEqualsOperator cenv.g m ty arg1 arg2 ConvExpr cenv env eq | TOp.ILAsm([ I_throw ],_),_,[arg1] -> let raiseExpr = mkCallRaise cenv.g m (tyOfExpr cenv.g expr) arg1 ConvExpr cenv env raiseExpr | TOp.ILAsm(_il,_),_,_ -> wfail(Error(FSComp.SR.crefQuotationsCantContainInlineIL(), m)) | TOp.ExnConstr tcref,_,args -> let _rgtypR = ConvTyconRef cenv tcref m let _typ = mkAppTy tcref [] let parentTyconR = ConvTyconRef cenv tcref m let argtys = tcref |> recdFieldsOfExnDefRef |> List.map (fun rfld -> rfld.FormalType) let methArgTypesR = ConvTypes cenv env m argtys let argsR = ConvExprs cenv env args let objR = QP.mkCtorCall( { ctorParent = parentTyconR; ctorArgTypes = methArgTypesR }, [], argsR) let exnTypeR = ConvType cenv env m cenv.g.exn_ty QP.mkCoerce(exnTypeR, objR) | TOp.ValFieldSet rfref, _tinst,args -> let argsR = ConvLValueArgs cenv env args let tyargsR = ConvTypes cenv env m tyargs let ((_parentTyconR,fldOrPropName) as projR) = ConvRecdFieldRef cenv rfref m if rfref.TyconRef.IsRecordTycon then QP.mkRecdSet(projR,tyargsR,argsR) else let fspec = rfref.RecdField let tcref = rfref.TyconRef let parentTyconR = ConvTyconRef cenv tcref m if useGenuineField tcref.Deref fspec then QP.mkFieldSet( projR,tyargsR, argsR) else let envinner = BindFormalTypars env (tcref.TyparsNoRange) let propRetTypeR = ConvType cenv envinner m fspec.FormalType QP.mkPropSet( (parentTyconR, fldOrPropName,propRetTypeR,[]),tyargsR, argsR) | TOp.ExnFieldGet(tcref,i),[],[obj] -> let exnc = stripExnEqns tcref let fspec = exnc.TrueInstanceFieldsAsList.[i] let parentTyconR = ConvTyconRef cenv tcref m let propRetTypeR = ConvType cenv env m fspec.FormalType let callArgR = ConvExpr cenv env obj let exnTypeR = ConvType cenv env m (generalizedTyconRef tcref) QP.mkPropGet( (parentTyconR, fspec.Name,propRetTypeR,[]),[], [QP.mkCoerce (exnTypeR, callArgR)]) | TOp.Coerce,[tgtTy;srcTy],[x] -> let xR = ConvExpr cenv env x if typeEquiv cenv.g tgtTy srcTy then xR else QP.mkCoerce(ConvType cenv env m tgtTy,xR) | TOp.Reraise,[toTy],[] -> // rebuild reraise() and Convert mkReraiseLibCall cenv.g toTy m |> ConvExpr cenv env | TOp.LValueOp(LGetAddr,vref),[],[] -> QP.mkAddressOf(ConvValRef false cenv env m vref []) | TOp.LValueOp(LByrefSet,vref),[],[e] -> QP.mkAddressSet(ConvValRef false cenv env m vref [], ConvExpr cenv env e) | TOp.LValueOp(LSet,vref),[],[e] -> // Sets of module values become property sets match vref.ActualParent with | Parent tcref when IsCompiledAsStaticProperty cenv.g vref.Deref -> let parentTyconR = ConvTyconRef cenv tcref m let propName = vref.CompiledName let propTy = ConvType cenv env m vref.Type QP.mkPropSet( (parentTyconR, propName,propTy,[]),[], [ConvExpr cenv env e]) | _ -> QP.mkVarSet( ConvValRef false cenv env m vref [], ConvExpr cenv env e) | TOp.LValueOp(LByrefGet,vref),[],[] -> ConvValRef false cenv env m vref [] | TOp.Array,[ty],xa -> QP.mkNewArray(ConvType cenv env m ty,ConvExprs cenv env xa) | TOp.While _,[],[Expr.Lambda(_,_,_,[_],test,_,_);Expr.Lambda(_,_,_,[_],body,_,_)] -> QP.mkWhileLoop(ConvExpr cenv env test, ConvExpr cenv env body) | TOp.For(_,dir),[],[Expr.Lambda(_,_,_,[_],lim0,_,_);Expr.Lambda(_,_,_,[_],lim1,_,_);body] -> match dir with | FSharpForLoopUp -> QP.mkForLoop(ConvExpr cenv env lim0,ConvExpr cenv env lim1, ConvExpr cenv env body) | _ -> wfail(Error(FSComp.SR.crefQuotationsCantContainDescendingForLoops(), m)) | TOp.ILCall(_,_,_,isNewObj,valUseFlags,isProp,_,ilMethRef,enclTypeArgs,methTypeArgs,_tys),[],callArgs -> let parentTyconR = ConvILTypeRef cenv m ilMethRef.EnclosingTypeRef let isNewObj = (isNewObj || (match valUseFlags with CtorValUsedAsSuperInit | CtorValUsedAsSelfInit -> true | _ -> false)) let methArgTypesR = List.map (ConvILType cenv env m) (ILList.toList ilMethRef.ArgTypes) let methRetTypeR = ConvILType cenv env m ilMethRef.ReturnType let methName = ilMethRef.Name let isPropGet = isProp && methName.StartsWith("get_",System.StringComparison.Ordinal) let isPropSet = isProp && methName.StartsWith("set_",System.StringComparison.Ordinal) let tyargs = (enclTypeArgs@methTypeArgs) ConvObjectModelCall cenv env m (isPropGet,isPropSet,isNewObj,parentTyconR,methArgTypesR,methRetTypeR,methName,tyargs,methTypeArgs.Length,callArgs) | TOp.TryFinally _,[_resty],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)] -> QP.mkTryFinally(ConvExpr cenv env e1,ConvExpr cenv env e2) | TOp.TryCatch _,[_resty],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[vf],ef,_,_); Expr.Lambda(_,_,_,[vh],eh,_,_)] -> let vfR = ConvVal cenv env vf let envf = BindVal env vf let vhR = ConvVal cenv env vh let envh = BindVal env vh QP.mkTryWith(ConvExpr cenv env e1,vfR,ConvExpr cenv envf ef,vhR,ConvExpr cenv envh eh) | TOp.Bytes bytes,[],[] -> ConvExpr cenv env (Expr.Op(TOp.Array, [cenv.g.byte_ty], List.ofArray (Array.map (mkByte cenv.g m) bytes), m)) | TOp.UInt16s arr,[],[] -> ConvExpr cenv env (Expr.Op(TOp.Array, [cenv.g.uint16_ty], List.ofArray (Array.map (mkUInt16 cenv.g m) arr), m)) | TOp.UnionCaseProof _,_,[e] -> ConvExpr cenv env e // Note: we erase the union case proof conversions when converting to quotations | TOp.UnionCaseTagGet _tycr,_tinst,[_cx] -> wfail(Error(FSComp.SR.crefQuotationsCantFetchUnionIndexes(), m)) | TOp.UnionCaseFieldSet (_c,_i),_tinst,[_cx;_x] -> wfail(Error(FSComp.SR.crefQuotationsCantSetUnionFields(), m)) | TOp.ExnFieldSet(_tcref,_i),[],[_ex;_x] -> wfail(Error(FSComp.SR.crefQuotationsCantSetExceptionFields(), m)) | TOp.RefAddrGet,_,_ -> wfail(Error(FSComp.SR.crefQuotationsCantRequireByref(), m)) | TOp.TraitCall (_ss),_,_ -> wfail(Error(FSComp.SR.crefQuotationsCantCallTraitMembers(), m)) | _ -> wfail(InternalError( "Unexpected expression shape",m)) | _ -> wfail(InternalError(sprintf "unhandled construct in AST: %A" expr,expr.Range)) and ConvLdfld cenv env m (fspec: ILFieldSpec) enclTypeArgs args = let tyargsR = ConvTypes cenv env m enclTypeArgs let parentTyconR = ConvILTypeRef cenv m fspec.EnclosingTypeRef let argsR = ConvLValueArgs cenv env args QP.mkFieldGet( (parentTyconR, fspec.Name),tyargsR, argsR) and ConvRFieldGet cenv env m rfref tyargs args = let tyargsR = ConvTypes cenv env m tyargs let argsR = ConvLValueArgs cenv env args let ((parentTyconR,fldOrPropName) as projR) = ConvRecdFieldRef cenv rfref m if rfref.TyconRef.IsRecordTycon then QP.mkRecdGet(projR,tyargsR,argsR) else let fspec = rfref.RecdField let tcref = rfref.TyconRef if useGenuineField tcref.Deref fspec then QP.mkFieldGet(projR,tyargsR, argsR) else let envinner = BindFormalTypars env tcref.TyparsNoRange let propRetTypeR = ConvType cenv envinner m fspec.FormalType QP.mkPropGet( (parentTyconR, fldOrPropName,propRetTypeR,[]),tyargsR, argsR) and ConvLetBind cenv env (bind : Binding) = match bind.Expr with // Map for values bound by the // 'let v = isinst e in .... if nonnull v then ...v .... ' // construct arising out the compilation of pattern matching. We decode these back to the form // 'if istype e then ...unbox e .... ' // It's bit annoying that pattern matching does this tranformation. Like all premature optimization we pay a // cost here to undo it. | Expr.Op(TOp.ILAsm([ I_isinst _ ],_),[ty],[e],_) -> None, BindIsInstVal env bind.Var (ty,e) // Remove let = from quotation tree | Expr.Val _ when bind.Var.IsCompilerGenerated -> None, BindSubstVal env bind.Var bind.Expr // Remove let unionCase = ... from quotation tree | Expr.Op(TOp.UnionCaseProof _,_,[e],_) -> None, BindSubstVal env bind.Var e | _ -> let v = bind.Var let vR = ConvVal cenv env v let rhsR = ConvExpr cenv env bind.Expr let envinner = BindVal env v Some(vR,rhsR),envinner and ConvLValueArgs cenv env args = match args with | obj::rest -> ConvLValueExpr cenv env obj :: ConvExprs cenv env rest | [] -> [] // This function has to undo the work of mkExprAddrOfExpr and ConvLValueExpr cenv env expr = match expr with | Expr.Op(op,tyargs,args,m) -> match op, args, tyargs with | TOp.LValueOp(LGetAddr,vref),_,_ -> ConvValRef false cenv env m vref [] | TOp.ValFieldGetAddr(rfref),_,_ -> ConvRFieldGet cenv env m rfref tyargs args | TOp.ILAsm([ I_ldflda(fspec) ],_rtys),_,_ -> ConvLdfld cenv env m fspec tyargs args | TOp.ILAsm([ I_ldsflda(fspec) ],_rtys),_,_ -> ConvLdfld cenv env m fspec tyargs args | TOp.ILAsm(([ I_ldelema(_ro,_isNativePtr,shape,_tyarg) ] ),_), (arr::idxs), [elemty] -> match shape.Rank, idxs with | 1, [idx1] -> ConvExpr cenv env (mkCallArrayGet cenv.g m elemty arr idx1) | 2, [idx1; idx2] -> ConvExpr cenv env (mkCallArray2DGet cenv.g m elemty arr idx1 idx2) | 3, [idx1; idx2; idx3] -> ConvExpr cenv env (mkCallArray3DGet cenv.g m elemty arr idx1 idx2 idx3) | 4, [idx1; idx2; idx3; idx4] -> ConvExpr cenv env (mkCallArray4DGet cenv.g m elemty arr idx1 idx2 idx3 idx4) | _ -> ConvExpr cenv env expr | _ -> ConvExpr cenv env expr | _ -> ConvExpr cenv env expr and ConvObjectModelCall cenv env m (isPropGet,isPropSet,isNewObj,parentTyconR,methArgTypesR,methRetTypeR,methName,tyargs,numGenericArgs,callArgs) = let tyargsR = ConvTypes cenv env m tyargs let callArgsR = ConvLValueArgs cenv env callArgs if isPropGet || isPropSet then let propName = ChopPropertyName methName if isPropGet then QP.mkPropGet( (parentTyconR, propName,methRetTypeR,methArgTypesR),tyargsR, callArgsR) else let args,propTy = List.frontAndBack methArgTypesR QP.mkPropSet( (parentTyconR, propName,propTy,args),tyargsR, callArgsR) elif isNewObj then QP.mkCtorCall( { ctorParent = parentTyconR; ctorArgTypes = methArgTypesR }, tyargsR, callArgsR) else QP.mkMethodCall( { methParent = parentTyconR; methArgTypes = methArgTypesR; methRetType = methRetTypeR; methName = methName; numGenericArgs=numGenericArgs }, tyargsR, callArgsR) and ConvModuleValueApp cenv env m (vref:ValRef) tyargs (args: Expr list list) = match vref.ActualParent with | ParentNone -> failwith "ConvModuleValueApp" | Parent(tcref) -> let isProperty = IsCompiledAsStaticProperty cenv.g vref.Deref let tcrefR = ConvTyconRef cenv tcref m let tyargsR = ConvTypes cenv env m tyargs let nm = vref.CompiledName let argsR = List.map (ConvExprs cenv env) args QP.mkModuleValueApp(tcrefR,nm,isProperty,tyargsR,argsR) and ConvExprs cenv env args = List.map (ConvExpr cenv env) args and ConvValRef holeOk cenv env m (vref:ValRef) tyargs = let v = vref.Deref if env.isinstVals.ContainsVal v then let (ty,e) = env.isinstVals.[v] ConvExpr cenv env (mkCallUnbox cenv.g m ty e) elif env.substVals.ContainsVal v then let e = env.substVals.[v] ConvExpr cenv env e elif env.vs.ContainsVal v then if nonNil tyargs then wfail(InternalError("ignoring generic application of local quoted variable",m)); QP.mkVar(env.vs.[v]) elif v.BaseOrThisInfo = CtorThisVal && cenv.isReflectedDefinition = IsReflectedDefinition.Yes then QP.mkThisVar(ConvType cenv env m v.Type) else let vty = v.Type match v.ActualParent with | ParentNone -> // References to local values are embedded by value if not holeOk then wfail(Error(FSComp.SR.crefNoSetOfHole(),m)) let idx = cenv.exprSplices.Count cenv.exprSplices.Add(mkCallLiftValue cenv.g m vty (exprForValRef m vref)); QP.mkHole(ConvType cenv env m vty,idx) | Parent _ -> ConvModuleValueApp cenv env m vref tyargs [] and ConvUnionCaseRef cenv (ucref:UnionCaseRef) m = let ucgtypR = ConvTyconRef cenv ucref.TyconRef m let nm = if cenv.g.unionCaseRefEq ucref cenv.g.cons_ucref then "Cons" elif cenv.g.unionCaseRefEq ucref cenv.g.nil_ucref then "Empty" else ucref.CaseName (ucgtypR,nm) and ConvRecdFieldRef cenv (rfref:RecdFieldRef) m = let typR = ConvTyconRef cenv rfref.TyconRef m let nm = if useGenuineField rfref.TyconRef.Deref rfref.RecdField then ComputeFieldName rfref.TyconRef.Deref rfref.RecdField else rfref.FieldName (typR,nm) and ConvVal cenv env (v:Val) = let tyR = ConvType cenv env v.Range v.Type QP.freshVar (v.CompiledName, tyR, v.IsMutable) and ConvTyparRef cenv env _m (tp:Typar) = match env.tyvs.TryFind tp.Stamp with | Some x -> x | None -> match ResizeArray.tryFindIndex (typarEq tp) cenv.typeSplices with | Some idx -> idx | None -> let idx = cenv.typeSplices.Count cenv.typeSplices.Add(tp); idx and FilterMeasureTyargs tys = tys |> List.filter (fun ty -> match ty with TType_measure _ -> false | _ -> true) and ConvType cenv env m typ = match stripTyEqnsAndMeasureEqns cenv.g typ with | TType_app(tcref,[tyarg]) when isArrayTyconRef cenv.g tcref -> QP.mkArrayTy(rankOfArrayTyconRef cenv.g tcref,ConvType cenv env m tyarg) | TType_ucase(UCRef(tcref,_),tyargs) // Note: we erase union case 'types' when converting to quotations | TType_app(tcref,tyargs) -> #if EXTENSIONTYPING match TryElimErasableTyconRef cenv m tcref with | Some baseTy -> ConvType cenv env m baseTy | _ -> #endif QP.mkILNamedTy(ConvTyconRef cenv tcref m, ConvTypes cenv env m tyargs) | TType_fun(a,b) -> QP.mkFunTy(ConvType cenv env m a,ConvType cenv env m b) | TType_tuple(l) -> ConvType cenv env m (mkCompiledTupleTy cenv.g l) | TType_var(tp) -> QP.mkVarTy(ConvTyparRef cenv env m tp) | TType_forall(_spec,_ty) -> wfail(Error(FSComp.SR.crefNoInnerGenericsInQuotations(),m)) | _ -> wfail(Error (FSComp.SR.crefQuotationsCantContainThisType(),m)) and ConvTypes cenv env m typs = List.map (ConvType cenv env m) (FilterMeasureTyargs typs) and ConvConst cenv env m c ty = match TryEliminateDesugaredConstants cenv.g m c with | Some e -> ConvExpr cenv env e | None -> let tyR = ConvType cenv env m ty match c with | Const.Bool i -> QP.mkBool (i, tyR) | Const.SByte i -> QP.mkSByte (i, tyR) | Const.Byte i -> QP.mkByte (i, tyR) | Const.Int16 i -> QP.mkInt16 (i, tyR) | Const.UInt16 i -> QP.mkUInt16 (i, tyR) | Const.Int32 i -> QP.mkInt32 (i, tyR) | Const.UInt32 i -> QP.mkUInt32 (i, tyR) | Const.Int64 i -> QP.mkInt64 (i, tyR) | Const.UInt64 i -> QP.mkUInt64 (i, tyR) | Const.Double i -> QP.mkDouble (i, tyR) | Const.Single i -> QP.mkSingle (i, tyR) | Const.String s -> QP.mkString (s, tyR) | Const.Char c -> QP.mkChar (c, tyR) | Const.Unit -> QP.mkUnit() | Const.Zero -> if isRefTy cenv.g ty then QP.mkNull tyR else QP.mkDefaultValue tyR | _ -> wfail(Error (FSComp.SR.crefQuotationsCantContainThisConstant(), m)) and ConvDecisionTree cenv env tgs typR x = match x with | TDSwitch(e1,csl,dfltOpt,m) -> let acc = match dfltOpt with | Some d -> ConvDecisionTree cenv env tgs typR d | None -> wfail(Error(FSComp.SR.crefQuotationsCantContainThisPatternMatch(), m)) (csl,acc) ||> List.foldBack (fun (TCase(discrim,dtree)) acc -> match discrim with | Test.UnionCase (ucref, tyargs) -> let e1R = ConvExpr cenv env e1 let ucR = ConvUnionCaseRef cenv ucref m let tyargsR = ConvTypes cenv env m tyargs QP.mkCond (QP.mkSumTagTest (ucR, tyargsR, e1R), ConvDecisionTree cenv env tgs typR dtree, acc) | Test.Const (Const.Bool true) -> let e1R = ConvExpr cenv env e1 QP.mkCond (e1R, ConvDecisionTree cenv env tgs typR dtree, acc) | Test.Const (Const.Bool false) -> let e1R = ConvExpr cenv env e1 // Note, reverse the branches QP.mkCond (e1R, acc, ConvDecisionTree cenv env tgs typR dtree) | Test.Const c -> let ty = tyOfExpr cenv.g e1 let eq = mkCallEqualsOperator cenv.g m ty e1 (Expr.Const (c, m, ty)) let eqR = ConvExpr cenv env eq QP.mkCond (eqR, ConvDecisionTree cenv env tgs typR dtree, acc) | Test.IsNull -> // Decompile cached isinst tests match e1 with | Expr.Val(vref,_,_) when env.isinstVals.ContainsVal vref.Deref -> let (ty,e) = env.isinstVals.[vref.Deref] let tyR = ConvType cenv env m ty let eR = ConvExpr cenv env e // note: reverse the branches - a null test is a failure of an isinst test QP.mkCond (QP.mkTypeTest (tyR,eR), acc, ConvDecisionTree cenv env tgs typR dtree) | _ -> let ty = tyOfExpr cenv.g e1 let eq = mkCallEqualsOperator cenv.g m ty e1 (Expr.Const (Const.Zero, m, ty)) let eqR = ConvExpr cenv env eq QP.mkCond (eqR, ConvDecisionTree cenv env tgs typR dtree, acc) | Test.IsInst (_srcty, tgty) -> let e1R = ConvExpr cenv env e1 QP.mkCond (QP.mkTypeTest (ConvType cenv env m tgty, e1R), ConvDecisionTree cenv env tgs typR dtree, acc) | Test.ActivePatternCase _ -> wfail(InternalError( "Test.ActivePatternCase test in quoted expression",m)) | Test.ArrayLength _ -> wfail(Error(FSComp.SR.crefQuotationsCantContainArrayPatternMatching(), m)) ) | TDSuccess (args,n) -> let (TTarget(vars,rhs,_)) = tgs.[n] // TAST stores pattern bindings in reverse order for some reason // Reverse them here to give a good presentation to the user let args = List.rev (FlatList.toList args) let vars = List.rev (FlatList.toList vars) let varsR = vars |> List.map (ConvVal cenv env) let targetR = ConvExpr cenv (BindVals env vars) rhs (varsR,args,targetR) |||> List.foldBack2 (fun vR arg acc -> QP.mkLet((vR,ConvExpr cenv env arg), acc) ) | TDBind(bind,rest) -> // The binding may be a compiler-generated binding that gets removed in the quotation presentation match ConvLetBind cenv env bind with | None, env -> ConvDecisionTree cenv env tgs typR rest | Some(bindR),env -> QP.mkLet(bindR,ConvDecisionTree cenv env tgs typR rest) // REVIEW: quotation references to items in the assembly being generated // are persisted as assembly-qualified-name strings. However this means // they are not correctly re-adjusted when later static-linking the assembly. We could consider persisting these references // by creating fake IL metadata (e.g. fields) that refer to the relevant assemblies, which then // get fixed-up automatically by IL metadata rewriting. When we know which assemblies // we are static linking ahead of time (as in the type provider case), then we can generate the correct references here and ConvILTypeRef cenv m (tr:ILTypeRef) = cenv |> ignore; m |> ignore let assref = match tr.Scope with // Check if this is a local assembly | ILScopeRef.Local -> "." #if EXTENSIONTYPING // Check if this is an provider-generated assembly that will be statically linked | ILScopeRef.Assembly aref when not cenv.g.isInteractive && aref.Name <> cenv.g.sysCcu.AssemblyName && // optimization to avoid this check in the common case (match cenv.amap.assemblyLoader.LoadAssembly (m,aref) with | ResolvedCcu ccu -> ccu.IsProviderGenerated | UnresolvedCcu _ -> false) -> "." #endif | _ -> tr.Scope.QualifiedName {tcName = tr.BasicQualifiedName; tcAssembly = assref} and ConvILType cenv env m ty = match ty with | ILType.Boxed tspec | ILType.Value tspec -> QP.mkILNamedTy(ConvILTypeRef cenv m tspec.TypeRef, List.map (ConvILType cenv env m) (ILList.toList tspec.GenericArgs)) | ILType.Array (shape,ty) -> QP.mkArrayTy(shape.Rank,ConvILType cenv env m ty) | ILType.TypeVar idx -> QP.mkVarTy(int idx) | ILType.Void -> mkVoidTy | ILType.Ptr _ | ILType.Byref _ | ILType.Modified _ | ILType.FunctionPointer _ -> wfail(Error(FSComp.SR.crefQuotationsCantContainThisType(), m)) #if EXTENSIONTYPING and TryElimErasableTyconRef cenv m (tcref:TyconRef) = match tcref.TypeReprInfo with // Get the base type | TProvidedTypeExtensionPoint info when info.IsErased -> Some (info.BaseTypeForErased (m, cenv.g.obj_ty)) | _ -> None #endif and ConvTyconRef cenv (tcref:TyconRef) m = #if EXTENSIONTYPING match TryElimErasableTyconRef cenv m tcref with | Some baseTy -> ConvTyconRef cenv (tcrefOfAppTy cenv.g baseTy) m | None -> match tcref.TypeReprInfo with | TProvidedTypeExtensionPoint info when not cenv.g.isInteractive && not info.IsErased -> // Note, generated types are (currently) non-generic let tref = ExtensionTyping.GetILTypeRefOfProvidedType (info.ProvidedType, m) // Reference to provided types are compiled as if they are local references // We use the name "." as a special marker for the "local" assembly - see below { tcName= tref.BasicQualifiedName; tcAssembly="." } | _ -> #endif let repr = tcref.CompiledRepresentation match repr with | CompiledTypeRepr.ILAsmOpen asm -> match asm with | ILType.Boxed tspec | ILType.Value tspec -> ConvILTypeRef cenv m tspec.TypeRef // | ILType.Byref _-> // wfail(Error(FSComp.SR.crefQuotationsCantContainByrefTypes(),m)) | _ -> wfail(Error(FSComp.SR.crefQuotationsCantContainThisType(),m)) | CompiledTypeRepr.ILAsmNamed (tref,_boxity,_) -> if tcref.IsLocalRef #if EXTENSIONTYPING && not (cenv.g.isInteractive && tcref.IsProvidedGeneratedTycon) #endif then // We use the name "." as a special marker for the "local" assembly { tcName= tref.BasicQualifiedName; tcAssembly="." } else ConvILTypeRef cenv m tref and ConvReturnType cenv envinner m retTy = match retTy with | None -> mkVoidTy | Some ty -> ConvType cenv envinner m ty let ConvExprPublic (g,amap,scope,isReflectedDefintion) env e = let cenv = mk_cenv (g,amap,scope,isReflectedDefintion) let astExpr = ConvExpr cenv env e // Add the outer debug range attribute let astExpr = let m = e.Range let mk_tuple g m es = mkTupled g m es (List.map (tyOfExpr g) es) let rangeExpr = mk_tuple cenv.g m [ mkString cenv.g m m.FileName; mkInt cenv.g m m.StartLine; mkInt cenv.g m m.StartColumn; mkInt cenv.g m m.EndLine; mkInt cenv.g m m.EndColumn; ] let attrExpr = mk_tuple cenv.g m [ mkString cenv.g m "DebugRange"; rangeExpr ] let attrExprR = ConvExpr cenv env attrExpr QP.mkAttributedExpression(astExpr,attrExprR) cenv.typeSplices |> ResizeArray.toList |> List.map mkTyparTy, cenv.exprSplices |> ResizeArray.toList, astExpr let ConvMethodBase (g,amap,scope) env (methName, v:Val) = let cenv = mk_cenv (g,amap,scope,IsReflectedDefinition.Yes) let m = v.Range let parentTyconR = ConvTyconRef cenv v.TopValActualParent m match v.MemberInfo with | Some(vspr) when not v.IsExtensionMember -> let vref = mkLocalValRef v let tps,argInfos,retTy,_ = GetTypeOfMemberInMemberForm cenv.g vref let numEnclTypeArgs = vref.MemberApparentParent.TyparsNoRange.Length let argTys = argInfos |> List.concat |> List.map fst let isNewObj = (vspr.MemberFlags.MemberKind = MemberKind.Constructor) // The signature types are w.r.t. to the formal context let envinner = BindFormalTypars env tps let methArgTypesR = ConvTypes cenv envinner m argTys let methRetTypeR = ConvReturnType cenv envinner m retTy let numGenericArgs = tps.Length-numEnclTypeArgs if isNewObj then QP.MethodBaseData.Ctor { ctorParent = parentTyconR; ctorArgTypes = methArgTypesR } else QP.MethodBaseData.Method { methParent = parentTyconR; methArgTypes = methArgTypesR; methRetType = methRetTypeR; methName = methName; numGenericArgs=numGenericArgs } | _ -> QP.MethodBaseData.ModuleDefn { Name = methName; Module = parentTyconR; IsProperty = IsCompiledAsStaticProperty cenv.g v } // FSComp.SR.crefQuotationsCantContainLiteralByteArrays fsharp-3.0.34/src/fsharp/InternalCollections.fs0000775000175000017500000002324112260314606020454 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Collections open System open System.Collections.Generic #nowarn "44" // This construct is deprecated. This F# library function has been renamed. Use 'isSome' instead [] type internal ValueStrength<'T> = | Strong of 'T | Weak of WeakReference type internal AgedLookup<'TKey,'TValue>(keepStrongly:int, areSame, ?onStrongDiscard : ('TValue -> unit), ?keepMax: int) = /// The list of items stored. Youngest is at the end of the list. /// The choice of order is somewhat aribtrary. If the other way then adding /// items would be O(1) and removing O(N). let mutable refs:('TKey*ValueStrength<'TValue>) list = [] // Only set a strong discard function if keepMax is expliclty set to keepStrongly, i.e. there are no weak entries in this lookup. do assert (onStrongDiscard.IsNone || Some keepStrongly = keepMax) let strongDiscard x = match onStrongDiscard with None -> () | Some f -> f x // The 75 here determines how long the list should be passed the end of strongly held // references. Some operations are O(N) and we don't want to let things get out of // hand. let keepMax = defaultArg keepMax 75 let keepMax = max keepStrongly keepMax /// Look up a the given key, return None if not found. let TryPeekKeyValueImpl(data,key) = let rec Lookup key = function // Treat a list of key-value pairs as a lookup collection. // This function returns true if two keys are the same according to the predicate // function passed in. | []->None | (key',value)::t-> if areSame(key,key') then Some(key',value) else Lookup key t Lookup key data /// Determines whether a particular key exists. let Exists(data,key) = TryPeekKeyValueImpl(data,key).IsSome /// Set a particular key's value. let Add(data,key,value) = data @ [key,value] /// Promote a particular key value let Promote (data, key, value) = (data |> List.filter (fun (key',_)-> not (areSame(key,key')))) @ [ (key, value) ] /// Remove a particular key value let RemoveImpl (data, key) = let discard,keep = data |> List.partition (fun (key',_)-> areSame(key,key')) keep, discard let TryGetKeyValueImpl(data,key) = match TryPeekKeyValueImpl(data,key) with | Some(_, value) as result -> // If the result existed, move it to the top of the list. result,Promote (data,key,value) | None -> None,data /// Remove weak entries from the list that have been collected let FilterAndHold() = [ for (key,value) in refs do match value with | Strong(value) -> yield (key,value) | Weak(weakReference) -> match weakReference.Target with | null -> assert onStrongDiscard.IsNone; () | value -> yield key,(value:?>'TValue) ] let AssignWithStrength(newdata,discard1) = let actualLength = List.length newdata let tossThreshold = max 0 (actualLength - keepMax) // Delete everything less than this threshold let weakThreshhold = max 0 (actualLength - keepStrongly) // Weaken everything less than this threshhold let newdata = newdata|> List.mapi( fun n kv -> n,kv ) // Place the index. let newdata,discard2 = newdata |> List.partition (fun (n:int,_) -> n >= tossThreshold) let newdata = newdata |> List.map( fun (n:int,(k,v)) -> let handle = if n List.iter (snd >> strongDiscard) discard2 |> List.iter (snd >> snd >> strongDiscard) member al.TryPeekKeyValue(key) = // Returns the original key value as well since it may be different depending on equality test. let data = FilterAndHold() TryPeekKeyValueImpl(data,key) member al.TryGetKeyValue(key) = let data = FilterAndHold() let result,newdata = TryGetKeyValueImpl(data,key) AssignWithStrength(newdata,[]) result member al.TryGet(key) = let data = FilterAndHold() let result,newdata = TryGetKeyValueImpl(data,key) AssignWithStrength(newdata,[]) match result with | Some(_,value) -> Some(value) | None -> None member al.Put(key,value) = let data = FilterAndHold() let data,discard = if Exists(data,key) then RemoveImpl (data,key) else data,[] let data = Add(data,key,value) AssignWithStrength(data,discard) // This will remove extras member al.Remove(key) = let data = FilterAndHold() let newdata,discard = RemoveImpl (data,key) AssignWithStrength(newdata,discard) member al.MostRecent : ('TKey*'TValue) option= let data = FilterAndHold() if not data.IsEmpty then // Non-optimal reverse list to get most recent. Consider an array of option for the data structure. Some(data |> List.rev |> List.head) else None member al.Clear() = let discards = FilterAndHold() AssignWithStrength([], discards) type internal MruCache<'TKey,'TValue>(keepStrongly,compute, areSame, ?isStillValid : 'TKey*'TValue->bool, ?areSameForSubsumption, ?logComputedNewValue, ?logUsedCachedValue, ?onStrongDiscard, ?keepMax) = /// Default behavior of areSameForSubsumption function is areSame let areSameForSubsumption = defaultArg areSameForSubsumption areSame /// The list of items in the cache. Youngest is at the end of the list. /// The choice of order is somewhat aribtrary. If the other way then adding /// items would be O(1) and removing O(N). let cache = AgedLookup<'TKey,'TValue>(keepStrongly=keepStrongly,areSame=areSameForSubsumption,?onStrongDiscard=onStrongDiscard,?keepMax=keepMax) /// Whether or not this result value is still valid. let isStillValid = defaultArg isStillValid (fun _ -> true) /// Log a message when a new value is computed. let logComputedNewValue = defaultArg logComputedNewValue ignore /// Log a message when an existing value was retrieved from cache. let logUsedCachedValue = defaultArg logUsedCachedValue ignore member bc.GetAvailable(key) = match cache.TryPeekKeyValue(key) with | Some(key', value)-> if areSame(key',key) then Some(value) else None | None -> None member bc.Get(key) = let Compute() = let value = compute key cache.Put(key, value) logComputedNewValue(key) value match cache.TryGetKeyValue(key) with | Some(key', value) -> if areSame(key', key) && isStillValid(key,value) then logUsedCachedValue(key) value else Compute() | None -> Compute() member bc.MostRecent = cache.MostRecent member bc.SetAlternate(key:'TKey,value:'TValue) = cache.Put(key,value) member bc.Remove(key) = cache.Remove(key) member bc.Clear() = cache.Clear() /// List helpers [] type internal List = /// Return a new list with one element for each unique 'TKey. Multiple 'TValues are flattened. The original order of the first instance of 'TKey is preserved. static member groupByFirst( l : ('TKey * 'TValue) list) : ('TKey * 'TValue list) list = let nextIndex = ref 0 let result = System.Collections.Generic.List<'TKey * System.Collections.Generic.List<'TValue>>() let keyToIndex = Dictionary<'TKey,int>(HashIdentity.Structural) let indexOfKey(key) = match keyToIndex.TryGetValue(key) with | true, v -> v | false, _ -> keyToIndex.Add(key,!nextIndex) nextIndex := !nextIndex + 1 !nextIndex - 1 for kv in l do let index = indexOfKey(fst kv) if index>= result.Count then let k,vs = fst kv,System.Collections.Generic.List<'TValue>() vs.Add(snd kv) result.Add(k,vs) else let _,vs = result.[index] vs.Add(snd kv) result |> Seq.map(fun (k,vs) -> k,vs |> List.ofSeq ) |> List.ofSeq /// Return each distinct item in the list using reference equality. static member referenceDistinct( l : 'T list) : 'T list when 'T : not struct = let set = System.Collections.Generic.Dictionary<'T,bool>(HashIdentity.Reference) l |> List.iter(fun i->set.Add(i,true)) set |> Seq.map(fun kv->kv.Key) |> List.ofSeq fsharp-3.0.34/src/fsharp/ilxgen.fsi0000775000175000017500000001112012260314606016131 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Ilxgen open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Tast open System open System.IO open System.Reflection /// Indicates how the generated IL code is ultimately emitted type IlxGenBackend = | IlWriteBackend | IlReflectBackend [] type internal IlxGenOptions = { fragName : string generateFilterBlocks : bool workAroundReflectionEmitBugs : bool emitConstantArraysUsingStaticDataBlobs : bool /// If this is set, then the last module becomes the "main" module mainMethodInfo : Attribs option localOptimizationsAreOn : bool generateDebugSymbols : bool testFlagEmitFeeFeeAs100001 : bool ilxBackend : IlxGenBackend /// Indicates the code is being generated in FSI.EXE and is executed immediately after code generation /// This includes all interactively compiled code, including #load, definitions, and expressions isInteractive : bool // Indicates the code generated is an interactive 'it' expression. We generate a setter to allow clearing of the underlying // storage, even though 'it' is not logically mutable isInteractiveItExpr : bool // Indicates System.SerializableAttribute is available in the targeting framework netFxHasSerializableAttribute : bool /// Indicates that, whenever possible, use callvirt instead of call alwaysCallVirt : bool} /// The results of the ILX compilation of one fragment of an assembly type public IlxGenResults = { /// The generated IL/ILX type definitions ilTypeDefs : ILTypeDef list /// The generated IL/ILX assembly attributes ilAssemAttrs : ILAttribute list /// The generated IL/ILX .NET module attributes ilNetModuleAttrs : ILAttribute list /// The generated IL/ILX resources associated with F# quotations quotationResourceBytes : byte[] list } /// Used to support the compilation-inversion operations "ClearGeneratedValue" and "LookupGeneratedValue" type ExecutionContext = { LookupFieldRef : (ILFieldRef -> FieldInfo) LookupMethodRef : (ILMethodRef -> MethodInfo) LookupTypeRef : (ILTypeRef -> Type) LookupType : (ILType -> Type) } /// An incremental ILX code generator for a single assembly type public IlxAssemblyGenerator = /// Create an incremental ILX code generator for a single assembly new : Import.ImportMap * Env.TcGlobals * ConstraintSolver.TcValF * CcuThunk -> IlxAssemblyGenerator /// Register a set of referenced assemblies with the ILX code generator member AddExternalCcus : CcuThunk list -> unit /// Register a fragment of the current assembly with the ILX code generator. If 'isIncrementalFragment' is true then the input /// is assumed to be a fragment 'typed' into FSI.EXE, otherwise the input is assumed to be the result of a '#load' member AddIncrementalLocalAssemblyFragment : isIncrementalFragment: bool * fragName:string * typedAssembly: TypedAssembly -> unit /// Generate ILX code for an assembly fragment member GenerateCode : IlxGenOptions * TypedAssembly * Attribs * Attribs -> IlxGenResults /// Create the CAS permission sets for an assembly fragment member CreatePermissionSets : Attrib list -> ILPermission list /// Invert the compilation of the given value and clear the storage of the value member ClearGeneratedValue : ExecutionContext * Val -> unit /// Invert the compilation of the given value and return its current dynamic value and its compiled System.Type member LookupGeneratedValue : ExecutionContext * Val -> (obj * System.Type) option val ReportStatistics : TextWriter -> unit fsharp-3.0.34/src/fsharp/ast.fs0000664000175000017500000030275312260314606015275 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Ast open System.Collections.Generic open Internal.Utilities open Internal.Utilities.Text.Lexing open Internal.Utilities.Text.Parsing open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.UnicodeLexing open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Range /// The prefix of the names used for the fake namespace path added to all dynamic code entries in FSI.EXE let FsiDynamicModulePrefix = "FSI_" [] module FSharpLib = let Root = "Microsoft.FSharp" let RootPath = IL.splitNamespace Root let Core = Root + ".Core" let CorePath = IL.splitNamespace Core [] module CustomOperations = [] let Into = "into" //------------------------------------------------------------------------ // XML doc pre-processing //----------------------------------------------------------------------- /// Used to collect XML documentation during lexing and parsing. type XmlDocCollector() = let mutable savedLines = new ResizeArray<(string * pos)>() let mutable savedGrabPoints = new ResizeArray() let posCompare p1 p2 = if posGeq p1 p2 then 1 else if posEq p1 p2 then 0 else -1 let savedGrabPointsAsArray = lazy (savedGrabPoints.ToArray() |> Array.sortWith posCompare) let savedLinesAsArray = lazy (savedLines.ToArray() |> Array.sortWith (fun (_,p1) (_,p2) -> posCompare p1 p2)) let check() = assert (not savedLinesAsArray.IsValueCreated && "can't add more XmlDoc elements to XmlDocCOllector after extracting first XmlDoc from the overall results" <> "") member x.AddGrabPoint(pos) = check() savedGrabPoints.Add pos member x.AddXmlDocLine(line,pos) = check() savedLines.Add(line,pos) member x.LinesBefore(grabPointPos) = try let lines = savedLinesAsArray.Force() let grabPoints = savedGrabPointsAsArray.Force() let firstLineIndexAfterGrabPoint = Array.findFirstIndexWhereTrue lines (fun (_,pos) -> posGeq pos grabPointPos) let grabPointIndex = Array.findFirstIndexWhereTrue grabPoints (fun pos -> posGeq pos grabPointPos) assert (posEq grabPoints.[grabPointIndex] grabPointPos) let firstLineIndexAfterPrevGrabPoint = if grabPointIndex = 0 then 0 else let prevGrabPointPos = grabPoints.[grabPointIndex-1] Array.findFirstIndexWhereTrue lines (fun (_,pos) -> posGeq pos prevGrabPointPos) //printfn "#lines = %d, firstLineIndexAfterPrevGrabPoint = %d, firstLineIndexAfterGrabPoint = %d" lines.Length firstLineIndexAfterPrevGrabPoint firstLineIndexAfterGrabPoint lines.[firstLineIndexAfterPrevGrabPoint..firstLineIndexAfterGrabPoint-1] |> Array.map fst with e -> //printfn "unexpected error in LinesBefore:\n%s" (e.ToString()) [| |] type XmlDoc = | XmlDoc of string[] static member Empty = XmlDocStatics.Empty static member Merge (XmlDoc lines) (XmlDoc lines') = XmlDoc (Array.append lines lines') static member Process (XmlDoc lines) = // This code runs for .XML generation and thus influences cross-project xmldoc tooltips; for within-project tooltips, see XmlDocumentation.fs in the language service let rec processLines (lines:string list) = match lines with | [] -> [] | (lineA::rest) as lines -> let lineAT = lineA.TrimStart([|' '|]) if lineAT = "" then processLines rest else if String.hasPrefix lineAT "<" then lines else [""] @ #if SILVERLIGHT lines @ #else (lines |> List.map (fun line -> System.Security.SecurityElement.Escape(line))) @ #endif [""] let lines = processLines (Array.toList lines) if lines.Length = 0 then XmlDoc.Empty else XmlDoc (Array.ofList lines) // Discriminated unions can't contain statics, so we use a separate type and XmlDocStatics() = static let empty = XmlDoc[| |] static member Empty = empty type PreXmlDoc = | PreXmlMerge of PreXmlDoc * PreXmlDoc | PreXmlDoc of pos * XmlDocCollector | PreXmlDocEmpty member x.ToXmlDoc() = match x with | PreXmlMerge(a,b) -> XmlDoc.Merge (a.ToXmlDoc()) (b.ToXmlDoc()) | PreXmlDocEmpty -> XmlDoc.Empty | PreXmlDoc (pos,collector) -> let lines = collector.LinesBefore pos if lines.Length = 0 then XmlDoc.Empty else XmlDoc lines static member CreateFromGrabPoint(collector:XmlDocCollector,grabPointPos) = collector.AddGrabPoint grabPointPos PreXmlDoc(grabPointPos,collector) static member Empty = PreXmlDocEmpty static member Merge a b = PreXmlMerge (a,b) type ParserDetail = | Ok | ThereWereSignificantParseErrorsSoDoNotTypecheckThisNode // would cause spurious/misleading diagnostics //------------------------------------------------------------------------ // AST: identifiers and long identifiers //----------------------------------------------------------------------- // PERFORMANCE: consider making this a struct. [] [] [] type Ident (text,range) = member x.idText = text member x.idRange = range override x.ToString() = text type LongIdent = Ident list type LongIdentWithDots = /// LongIdentWithDots(lid, dotms) /// Typically dotms.Length = lid.Length-1, but they may be same if (incomplete) code ends in a dot, e.g. "Foo.Bar." /// The dots mostly matter for parsing, and are typically ignored by the typechecker, but /// if dotms.Length = lid.Length, then the parser must have reported an error, so the typechecker is allowed /// more freedom about typechecking these expressions. /// LongIdent can be empty list - it is used to denote that name of some AST element is absent (i.e. empty type name in inherit) | LongIdentWithDots of LongIdent * range list with member this.Range = match this with | LongIdentWithDots([],_) -> failwith "rangeOfLidwd" | LongIdentWithDots([id],[]) -> id.idRange | LongIdentWithDots([id],[m]) -> unionRanges id.idRange m | LongIdentWithDots(h::t,[]) -> unionRanges h.idRange (List.last t).idRange | LongIdentWithDots(h::t,dotms) -> unionRanges h.idRange (List.last t).idRange |> unionRanges (List.last dotms) member this.Lid = match this with LongIdentWithDots(lid,_) -> lid member this.ThereIsAnExtraDotAtTheEnd = match this with LongIdentWithDots(lid,dots) -> lid.Length = dots.Length member this.RangeSansAnyExtraDot = match this with | LongIdentWithDots([],_) -> failwith "rangeOfLidwd" | LongIdentWithDots([id],_) -> id.idRange | LongIdentWithDots(h::t,dotms) -> let nonExtraDots = if dotms.Length = t.Length then dotms else List.take t.Length dotms unionRanges h.idRange (List.last t).idRange |> unionRanges (List.last nonExtraDots) //------------------------------------------------------------------------ // AST: the grammar of implicitly scoped type parameters //----------------------------------------------------------------------- type TyparStaticReq = | NoStaticReq | HeadTypeStaticReq [] type SynTypar = | Typar of Ident * TyparStaticReq * (* isCompGen: *) bool with member this.Range = match this with | Typar(id,_,_) -> id.idRange //------------------------------------------------------------------------ // AST: the grammar of constants and measures //----------------------------------------------------------------------- type [] /// The unchecked abstract syntax tree of constants in F# types and expressions. SynConst = /// F# syntax: () | Unit /// F# syntax: true, false | Bool of bool /// F# syntax: 13y, 0xFFy, 0o077y, 0b0111101y | SByte of sbyte /// F# syntax: 13uy, 0x40uy, 0oFFuy, 0b0111101uy | Byte of byte /// F# syntax: 13s, 0x4000s, 0o0777s, 0b0111101s | Int16 of int16 /// F# syntax: 13us, 0x4000us, 0o0777us, 0b0111101us | UInt16 of uint16 /// F# syntax: 13, 0x4000, 0o0777 | Int32 of int32 /// F# syntax: 13u, 0x4000u, 0o0777u | UInt32 of uint32 /// F# syntax: 13L | Int64 of int64 /// F# syntax: 13UL | UInt64 of uint64 /// F# syntax: 13n | IntPtr of int64 /// F# syntax: 13un | UIntPtr of uint64 /// F# syntax: 1.30f, 1.40e10f etc. | Single of single /// F# syntax: 1.30, 1.40e10 etc. | Double of double /// F# syntax: 'a' | Char of char /// F# syntax: 23.4M | Decimal of System.Decimal /// UserNum(value, suffix) /// /// F# syntax: 1Q, 1Z, 1R, 1N, 1G | UserNum of ( string * string) /// F# syntax: verbatim or regular string, e.g. "abc" | String of string * range /// F# syntax: verbatim or regular byte string, e.g. "abc"B. /// /// Also used internally in the typechecker once an array of unit16 contants /// is detected, to allow more efficient processing of large arrays of uint16 constants. | Bytes of byte[] * range /// Used internally in the typechecker once an array of unit16 contants /// is detected, to allow more efficient processing of large arrays of uint16 constants. | UInt16s of uint16[] /// Old comment: "we never iterate, so the const here is not another SynConst.Measure" | Measure of SynConst * SynMeasure member c.Range dflt = match c with | SynConst.String (_,m0) | SynConst.Bytes (_,m0) -> m0 | _ -> dflt and [] /// The unchecked abstract syntax tree of F# unit of measure annotaitons. /// This should probably be merged with the represenation of SynType. SynMeasure = | Named of LongIdent * range | Product of SynMeasure * SynMeasure * range | Seq of SynMeasure list * range | Divide of SynMeasure * SynMeasure * range | Power of SynMeasure * int * range | One | Anon of range | Var of SynTypar * range //------------------------------------------------------------------------ // AST: the grammar of types, expressions, declarations etc. //----------------------------------------------------------------------- [] type SynAccess = | Public | Internal | Private type SequencePointInfoForTarget = | SequencePointAtTarget | SuppressSequencePointAtTarget type SequencePointInfoForSeq = | SequencePointsAtSeq // This means "suppress a in 'a;b'" and "suppress b in 'a before b'" | SuppressSequencePointOnExprOfSequential // This means "suppress b in 'a;b'" and "suppress a in 'a before b'" | SuppressSequencePointOnStmtOfSequential type SequencePointInfoForTry = | SequencePointAtTry of range // Used for "use" and "for" | SequencePointInBodyOfTry | NoSequencePointAtTry type SequencePointInfoForWith = | SequencePointAtWith of range | NoSequencePointAtWith type SequencePointInfoForFinally = | SequencePointAtFinally of range | NoSequencePointAtFinally type SequencePointInfoForForLoop = | SequencePointAtForLoop of range | NoSequencePointAtForLoop type SequencePointInfoForWhileLoop = | SequencePointAtWhileLoop of range | NoSequencePointAtWhileLoop type SequencePointInfoForBinding = | SequencePointAtBinding of range // Indicates the ommission of a sequence point for a binding for a 'do expr' | NoSequencePointAtDoBinding // Indicates the ommission of a sequence point for a binding for a 'let e = expr' where 'expr' has immediate control flow | NoSequencePointAtLetBinding // Indicates the ommission of a sequence point for a compiler generated binding // where we've done a local expansion of some construct into something that involves // a 'let'. e.g. we've inlined a function and bound its arguments using 'let' // The let bindings are 'sticky' in that the inversion of the inlining would involve // replacing the entire expression with the original and not just the let bindings alone. | NoSequencePointAtStickyBinding // Given 'let v = e1 in e2', where this is a compiler generated binding, // we are sometimes forced to generate a sequence point for the expression anyway based on its // overall range. If the let binding is given the flag below then it is asserting that // the binding has no interesting side effects and can be totally ignored and the range // of the inner expression is used instead | NoSequencePointAtInvisibleBinding // Don't drop sequence points when combining sequence points member x.Combine(y:SequencePointInfoForBinding) = match x,y with | SequencePointAtBinding _ as g, _ -> g | _, (SequencePointAtBinding _ as g) -> g | _ -> x /// Indicates if a for loop is 'for x in e1 -> e2', only valid in sequence expressions type SeqExprOnly = | SeqExprOnly of bool /// denotes location of the separator block + optional position of the semicolon (used for tooling support) type BlockSeparator = range * pos option /// stores pair: record field name + (true if given record field name is syntactically correct and can be used in name resolution) type RecordFieldName = LongIdentWithDots * bool type ExprAtomicFlag = /// Says that the expression is an atomic expression, i.e. is of a form that has no whitespace unless /// enclosed in parantheses, e.g. 1, "3", ident, ident.[expr] and (expr). If an atomic expression has /// type T, then the largest expression ending at the same range as the atomic expression also has type T. | Atomic = 0 | NonAtomic = 1 /// The kind associated with a binding - "let", "do" or a standalone expression type SynBindingKind = /// A standalone expression in a module | StandaloneExpression /// A normal 'let' binding in a module | NormalBinding /// A 'do' binding in a module. Must have type 'unit' | DoBinding type [] /// Represents the explicit declaration of a type parameter SynTyparDecl = | TyparDecl of SynAttributes * SynTypar and [] /// The unchecked abstract syntax tree of F# type constraints SynTypeConstraint = /// F# syntax : is 'typar : struct | WhereTyparIsValueType of SynTypar * range /// F# syntax : is 'typar : not struct | WhereTyparIsReferenceType of SynTypar * range /// F# syntax is 'typar : unmanaged | WhereTyparIsUnmanaged of SynTypar * range /// F# syntax is 'typar : null | WhereTyparSupportsNull of SynTypar * range /// F# syntax is 'typar : comparison | WhereTyparIsComparable of SynTypar * range /// F# syntax is 'typar : equality | WhereTyparIsEquatable of SynTypar * range /// F# syntax is default ^T : type | WhereTyparDefaultsToType of SynTypar * SynType * range /// F# syntax is 'typar :> type | WhereTyparSubtypeOfType of SynTypar * SynType * range /// F# syntax is ^T : (static member MemberName : ^T * int -> ^T) | WhereTyparSupportsMember of SynTypar list * SynMemberSig * range /// F# syntax is 'typar : enum<'UnderlyingType> | WhereTyparIsEnum of SynTypar * SynType list * range /// F# syntax is 'typar : delegate<'Args,unit> | WhereTyparIsDelegate of SynTypar * SynType list * range and [] /// The unchecked abstract syntax tree of F# types SynType = /// F# syntax : A.B.C | LongIdent of LongIdentWithDots /// App(typeName, LESSm, typeArgs, commasm, GREATERm, isPostfix, m) /// /// F# syntax : type or type type or (type,...,type) type /// isPostfix: indicates a postfix type application e.g. "int list" or "(int,string) dict" /// commasm: ranges for interstitial commas, these only matter for parsing/design-time tooling, the typechecker may munge/discard them | App of SynType * range option * SynType list * range list * range option * bool * range /// LongIdentApp(typeName, longId, LESSm, tyArgs, commasm, GREATERm, wholem) /// /// F# syntax : type.A.B.C /// commasm: ranges for interstitial commas, these only matter for parsing/design-time tooling, the typechecker may munge/discard them | LongIdentApp of SynType * LongIdentWithDots * range option * SynType list * range list * range option * range /// F# syntax : type * ... * type // the bool is true if / rather than * follows the type | Tuple of (bool*SynType) list * range /// F# syntax : type[] | Array of int * SynType * range /// F# syntax : type -> type | Fun of SynType * SynType * range /// F# syntax : 'Var | Var of SynTypar * range /// F# syntax : _ | Anon of range /// F# syntax : typ with constraints | WithGlobalConstraints of SynType * SynTypeConstraint list * range /// F# syntax : #type | HashConstraint of SynType * range /// F# syntax : for units of measure e.g. m / s | MeasureDivide of SynType * SynType * range /// F# syntax : for units of measure e.g. m^3 | MeasurePower of SynType * int * range /// F# syntax : 1, "abc" etc, used in parameters to type providers /// For the dimensionless units i.e. 1 , and static parameters to provided types | StaticConstant of SynConst * range /// F# syntax : const expr, used in static parameters to type providers | StaticConstantExpr of SynExpr * range /// F# syntax : ident=1 etc., used in static parameters to type providers | StaticConstantNamed of SynType * SynType * range /// Get the syntactic range of source code covered by this construct. member x.Range = match x with | SynType.LongIdent(lidwd) -> lidwd.Range | SynType.App(_,_,_,_,_,_,m) | SynType.LongIdentApp(_,_,_,_,_,_,m) | SynType.Tuple(_,m) | SynType.Array(_,_,m) | SynType.Fun(_,_,m) | SynType.Var(_,m) | SynType.Anon m | SynType.WithGlobalConstraints(_,_,m) | SynType.StaticConstant(_,m) | SynType.StaticConstantExpr(_,m) | SynType.StaticConstantNamed(_,_,m) | SynType.HashConstraint(_,m) | SynType.MeasureDivide(_,_,m) | SynType.MeasurePower(_,_,m) -> m and [] SynExpr = /// F# syntax: (expr) /// /// Paren(expr, leftParenRange, rightParenRange, wholeRangeIncludingParentheses) /// /// Parenthesized expressions. Kept in AST to distinguish A.M((x,y)) /// from A.M(x,y), among other things. | Paren of SynExpr * range * range option * range /// F# syntax: <@ expr @>, <@@ expr @@> /// /// Quote(operator,isRaw,quotedSynExpr,isFromQueryExpression,m) | Quote of SynExpr * bool * SynExpr * bool * range /// F# syntax: 1, 1.3, () etc. | Const of SynConst * range /// F# syntax: expr : type | Typed of SynExpr * SynType * range /// F# syntax: e1, ..., eN | Tuple of SynExpr list * range list * range // "range list" is for interstitial commas, these only matter for parsing/design-time tooling, the typechecker may munge/discard them /// F# syntax: [ e1; ...; en ], [| e1; ...; en |] | ArrayOrList of bool * SynExpr list * range /// F# syntax: { f1=e1; ...; fn=en } /// SynExpr.Record((baseType, baseCtorArgs, mBaseCtor, sepAfterBase, mInherits), (copyExpr, sepAfterCopyExpr), (recordFieldName, fieldValue, sepAfterField), mWholeExpr) /// inherit includes location of separator (for tooling) /// copyOpt contains range of the following WITH part (for tooling) /// every field includes range of separator after the field (for tooling) | Record of (SynType * SynExpr * range * BlockSeparator option * range) option * (SynExpr * BlockSeparator) option * (RecordFieldName * (SynExpr option) * BlockSeparator option) list * range /// F# syntax: new C(...) /// The flag is true if known to be 'family' ('protected') scope | New of bool * SynType * SynExpr * range /// SynExpr.ObjExpr(objTy,argOpt,binds,extraImpls,mNewExpr,mWholeExpr) /// /// F# syntax: { new ... with ... } | ObjExpr of SynType * (SynExpr * Ident option) option * SynBinding list * SynInterfaceImpl list * range * range /// F# syntax: 'while ... do ...' | While of SequencePointInfoForWhileLoop * SynExpr * SynExpr * range /// F# syntax: 'for i = ... to ... do ...' | For of SequencePointInfoForForLoop * Ident * SynExpr * bool * SynExpr * SynExpr * range /// SynExpr.ForEach (spBind, seqExprOnly, isFromSource, pat, enumExpr, bodyExpr, mWholeExpr). /// /// F# syntax: 'for ... in ... do ...' | ForEach of SequencePointInfoForForLoop * SeqExprOnly * bool * SynPat * SynExpr * SynExpr * range /// F# syntax: [ expr ], [| expr |] | ArrayOrListOfSeqExpr of bool * SynExpr * range /// CompExpr(isArrayOrList, isNotNakedRefCell, expr) /// /// F# syntax: { expr } | CompExpr of bool * bool ref * SynExpr * range /// First bool indicates if lambda originates from a method. Patterns here are always "simple" /// Second bool indicates if this is a "later" part of an iterated sequence of lambdas /// /// F# syntax: fun pat -> expr | Lambda of bool * bool * SynSimplePats * SynExpr * range /// F# syntax: function pat1 -> expr | ... | patN -> exprN | MatchLambda of bool * range * SynMatchClause list * SequencePointInfoForBinding * range /// F# syntax: match expr with pat1 -> expr | ... | patN -> exprN | Match of SequencePointInfoForBinding * SynExpr * SynMatchClause list * bool * range (* bool indicates if this is an exception match in a computation expression which throws unmatched exceptions *) /// F# syntax: do expr | Do of SynExpr * range /// F# syntax: assert expr | Assert of SynExpr * range /// App(exprAtomicFlag, isInfix, funcExpr, argExpr, m) /// - exprAtomicFlag: indicates if the applciation is syntactically atomic, e.g. f.[1] is atomic, but 'f x' is not /// - isInfix is true for the first app of an infix operator, e.g. 1+2 becomes App(App(+,1),2), where the inner node is marked isInfix /// (or more generally, for higher operator fixities, if App(x,y) is such that y comes before x in the source code, then the node is marked isInfix=true) /// /// F# syntax: f x | App of ExprAtomicFlag * bool * SynExpr * SynExpr * range /// TypeApp(expr, mLessThan, types, mCommas, mGreaterThan, mTypeArgs, mWholeExpr) /// "mCommas" are the ranges for interstitial commas, these only matter for parsing/design-time tooling, the typechecker may munge/discard them /// /// F# syntax: expr | TypeApp of SynExpr * range * SynType list * range list * range option * range * range /// LetOrUse(isRecursive, isUse, bindings, body, wholeRange) /// /// F# syntax: let pat = expr in expr /// F# syntax: let f pat1 .. patN = expr in expr /// F# syntax: let rec f pat1 .. patN = expr in expr /// F# syntax: use pat = expr in expr | LetOrUse of bool * bool * SynBinding list * SynExpr * range /// F# syntax: try expr with pat -> expr | TryWith of SynExpr * range * SynMatchClause list * range * range * SequencePointInfoForTry * SequencePointInfoForWith /// F# syntax: try expr finally expr | TryFinally of SynExpr * SynExpr * range * SequencePointInfoForTry * SequencePointInfoForFinally /// F# syntax: lazy expr | Lazy of SynExpr * range /// Seq(seqPoint, isTrueSeq, e1, e2, m) /// isTrueSeq: false indicates "let v = a in b; v" /// /// F# syntax: expr; expr | Sequential of SequencePointInfoForSeq * bool * SynExpr * SynExpr * range /// IfThenElse(exprGuard,exprThen,optionalExprElse,spIfToThen,isFromErrorRecovery,mIfToThen,mIfToEndOfLastBranch) /// /// F# syntax: if expr then expr /// F# syntax: if expr then expr else expr | IfThenElse of SynExpr * SynExpr * SynExpr option * SequencePointInfoForBinding * bool * range * range /// F# syntax: ident /// Optimized representation, = SynExpr.LongIdent(false,[id],id.idRange) | Ident of Ident /// F# syntax: ident.ident...ident /// LongIdent(isOptional, longIdent, altNameRefCell, m) /// isOptional: true if preceded by a '?' for an optional named parameter /// altNameRefCell: Normally 'None' except for some compiler-generated variables in desugaring pattern matching. See SynSimplePat.Id | LongIdent of bool * LongIdentWithDots * SynSimplePatAlternativeIdInfo ref option * range /// F# syntax: ident.ident...ident <- expr | LongIdentSet of LongIdentWithDots * SynExpr * range /// DotGet(expr, rangeOfDot, lid, wholeRange) /// /// F# syntax: expr.ident.ident | DotGet of SynExpr * range * LongIdentWithDots * range /// F# syntax: expr.ident...ident <- expr | DotSet of SynExpr * LongIdentWithDots * SynExpr * range /// F# syntax: expr.[expr,...,expr] | DotIndexedGet of SynExpr * SynExpr list * range * range /// DotIndexedSet (objectExpr, indexExprs, valueExpr, rangeOfLeftOfSet, rangeOfDot, rangeOfWholeExpr) /// /// F# syntax: expr.[expr,...,expr] <- expr | DotIndexedSet of SynExpr * SynExpr list * SynExpr * range * range * range /// F# syntax: Type.Items(e1) <- e2 , rarely used named-property-setter notation, e.g. Foo.Bar.Chars(3) <- 'a' | NamedIndexedPropertySet of LongIdentWithDots * SynExpr * SynExpr * range /// F# syntax: expr.Items(e1) <- e2 , rarely used named-property-setter notation, e.g. (stringExpr).Chars(3) <- 'a' | DotNamedIndexedPropertySet of SynExpr * LongIdentWithDots * SynExpr * SynExpr * range /// F# syntax: expr :? type | TypeTest of SynExpr * SynType * range /// F# syntax: expr :> type | Upcast of SynExpr * SynType * range /// F# syntax: expr :?> type | Downcast of SynExpr * SynType * range /// F# syntax: upcast expr | InferredUpcast of SynExpr * range /// F# syntax: downcast expr | InferredDowncast of SynExpr * range /// F# syntax: null | Null of range /// F# syntax: &expr, &&expr | AddressOf of bool * SynExpr * range * range /// F# syntax: ((typar1 or ... or typarN): (member-dig) expr) | TraitCall of SynTypar list * SynMemberSig * SynExpr * range /// F# syntax: ... in ... /// Computation expressions only, based on JOIN_IN token from lex filter | JoinIn of SynExpr * range * SynExpr * range /// F# syntax: /// Computation expressions only, implied by final "do" or "do!" | ImplicitZero of range /// F# syntax: yield expr /// F# syntax: return expr /// Computation expressions only | YieldOrReturn of (bool * bool) * SynExpr * range /// F# syntax: yield! expr /// F# syntax: return! expr /// Computation expressions only | YieldOrReturnFrom of (bool * bool) * SynExpr * range /// SynExpr.LetOrUseBang(spBind, isUse, isFromSource, pat, rhsExpr, bodyExpr, mWholeExpr). /// /// F# syntax: let! pat = expr in expr /// F# syntax: use! pat = expr in expr /// Computation expressions only | LetOrUseBang of SequencePointInfoForBinding * bool * bool * SynPat * SynExpr * SynExpr * range /// F# syntax: do! expr /// Computation expressions only | DoBang of SynExpr * range /// Only used in FSharp.Core | LibraryOnlyILAssembly of ILInstr array * SynType list * SynExpr list * SynType list * range (* Embedded IL assembly code *) /// Only used in FSharp.Core | LibraryOnlyStaticOptimization of SynStaticOptimizationConstraint list * SynExpr * SynExpr * range /// Only used in FSharp.Core | LibraryOnlyUnionCaseFieldGet of SynExpr * LongIdent * int * range /// Only used in FSharp.Core | LibraryOnlyUnionCaseFieldSet of SynExpr * LongIdent * int * SynExpr * range /// Inserted for error recovery | ArbitraryAfterError of (*debugStr:*) string * range /// Inserted for error recovery | FromParseError of SynExpr * range /// Inserted for error recovery when there is "expr." and missing tokens or error recovery after the dot | DiscardAfterMissingQualificationAfterDot of SynExpr * range /// Get the syntactic range of source code covered by this construct. member e.Range = match e with | SynExpr.Paren(_,_,_,m) | SynExpr.Quote(_,_,_,_,m) | SynExpr.Const(_,m) | SynExpr.Typed (_,_,m) | SynExpr.Tuple (_,_,m) | SynExpr.ArrayOrList (_,_,m) | SynExpr.Record (_,_,_,m) | SynExpr.New (_,_,_,m) | SynExpr.ObjExpr (_,_,_,_,_,m) | SynExpr.While (_,_,_,m) | SynExpr.For (_,_,_,_,_,_,m) | SynExpr.ForEach (_,_,_,_,_,_,m) | SynExpr.CompExpr (_,_,_,m) | SynExpr.ArrayOrListOfSeqExpr (_,_,m) | SynExpr.Lambda (_,_,_,_,m) | SynExpr.Match (_,_,_,_,m) | SynExpr.MatchLambda (_,_,_,_,m) | SynExpr.Do (_,m) | SynExpr.Assert (_,m) | SynExpr.App (_,_,_,_,m) | SynExpr.TypeApp (_,_,_,_,_,_,m) | SynExpr.LetOrUse (_,_,_,_,m) | SynExpr.TryWith (_,_,_,_,m,_,_) | SynExpr.TryFinally (_,_,m,_,_) | SynExpr.Sequential (_,_,_,_,m) | SynExpr.ArbitraryAfterError(_,m) | SynExpr.FromParseError (_,m) | SynExpr.DiscardAfterMissingQualificationAfterDot (_,m) | SynExpr.IfThenElse (_,_,_,_,_,_,m) | SynExpr.LongIdent (_,_,_,m) | SynExpr.LongIdentSet (_,_,m) | SynExpr.NamedIndexedPropertySet (_,_,_,m) | SynExpr.DotIndexedGet (_,_,_,m) | SynExpr.DotIndexedSet (_,_,_,_,_,m) | SynExpr.DotGet (_,_,_,m) | SynExpr.DotSet (_,_,_,m) | SynExpr.DotNamedIndexedPropertySet (_,_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldGet (_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldSet (_,_,_,_,m) | SynExpr.LibraryOnlyILAssembly (_,_,_,_,m) | SynExpr.LibraryOnlyStaticOptimization (_,_,_,m) | SynExpr.TypeTest (_,_,m) | SynExpr.Upcast (_,_,m) | SynExpr.AddressOf (_,_,_,m) | SynExpr.Downcast (_,_,m) | SynExpr.JoinIn (_,_,_,m) | SynExpr.InferredUpcast (_,m) | SynExpr.InferredDowncast (_,m) | SynExpr.Null m | SynExpr.Lazy (_, m) | SynExpr.TraitCall(_,_,_,m) | SynExpr.ImplicitZero (m) | SynExpr.YieldOrReturn (_,_,m) | SynExpr.YieldOrReturnFrom (_,_,m) | SynExpr.LetOrUseBang (_,_,_,_,_,_,m) | SynExpr.DoBang (_,m) -> m | SynExpr.Ident id -> id.idRange /// range ignoring any (parse error) extra trailing dots member e.RangeSansAnyExtraDot = match e with | SynExpr.Paren(_,_,_,m) | SynExpr.Quote(_,_,_,_,m) | SynExpr.Const(_,m) | SynExpr.Typed (_,_,m) | SynExpr.Tuple (_,_,m) | SynExpr.ArrayOrList (_,_,m) | SynExpr.Record (_,_,_,m) | SynExpr.New (_,_,_,m) | SynExpr.ObjExpr (_,_,_,_,_,m) | SynExpr.While (_,_,_,m) | SynExpr.For (_,_,_,_,_,_,m) | SynExpr.ForEach (_,_,_,_,_,_,m) | SynExpr.CompExpr (_,_,_,m) | SynExpr.ArrayOrListOfSeqExpr (_,_,m) | SynExpr.Lambda (_,_,_,_,m) | SynExpr.Match (_,_,_,_,m) | SynExpr.MatchLambda (_,_,_,_,m) | SynExpr.Do (_,m) | SynExpr.Assert (_,m) | SynExpr.App (_,_,_,_,m) | SynExpr.TypeApp (_,_,_,_,_,_,m) | SynExpr.LetOrUse (_,_,_,_,m) | SynExpr.TryWith (_,_,_,_,m,_,_) | SynExpr.TryFinally (_,_,m,_,_) | SynExpr.Sequential (_,_,_,_,m) | SynExpr.ArbitraryAfterError(_,m) | SynExpr.FromParseError (_,m) | SynExpr.IfThenElse (_,_,_,_,_,_,m) | SynExpr.LongIdentSet (_,_,m) | SynExpr.NamedIndexedPropertySet (_,_,_,m) | SynExpr.DotIndexedGet (_,_,_,m) | SynExpr.DotIndexedSet (_,_,_,_,_,m) | SynExpr.DotSet (_,_,_,m) | SynExpr.DotNamedIndexedPropertySet (_,_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldGet (_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldSet (_,_,_,_,m) | SynExpr.LibraryOnlyILAssembly (_,_,_,_,m) | SynExpr.LibraryOnlyStaticOptimization (_,_,_,m) | SynExpr.TypeTest (_,_,m) | SynExpr.Upcast (_,_,m) | SynExpr.AddressOf (_,_,_,m) | SynExpr.Downcast (_,_,m) | SynExpr.JoinIn (_,_,_,m) | SynExpr.InferredUpcast (_,m) | SynExpr.InferredDowncast (_,m) | SynExpr.Null m | SynExpr.Lazy (_, m) | SynExpr.TraitCall(_,_,_,m) | SynExpr.ImplicitZero (m) | SynExpr.YieldOrReturn (_,_,m) | SynExpr.YieldOrReturnFrom (_,_,m) | SynExpr.LetOrUseBang (_,_,_,_,_,_,m) | SynExpr.DoBang (_,m) -> m | SynExpr.DotGet (expr,_,lidwd,m) -> if lidwd.ThereIsAnExtraDotAtTheEnd then unionRanges expr.Range lidwd.RangeSansAnyExtraDot else m | SynExpr.LongIdent (_,lidwd,_,_) -> lidwd.RangeSansAnyExtraDot | SynExpr.DiscardAfterMissingQualificationAfterDot (expr,_) -> expr.Range | SynExpr.Ident id -> id.idRange /// Attempt to get the range of the first token or initial portion only - this is extremely ad-hoc, just a cheap way to improve a certain 'query custom operation' error range member e.RangeOfFirstPortion = match e with // haven't bothered making these cases better than just .Range | SynExpr.Quote(_,_,_,_,m) | SynExpr.Const(_,m) | SynExpr.Typed (_,_,m) | SynExpr.Tuple (_,_,m) | SynExpr.ArrayOrList (_,_,m) | SynExpr.Record (_,_,_,m) | SynExpr.New (_,_,_,m) | SynExpr.ObjExpr (_,_,_,_,_,m) | SynExpr.While (_,_,_,m) | SynExpr.For (_,_,_,_,_,_,m) | SynExpr.CompExpr (_,_,_,m) | SynExpr.ArrayOrListOfSeqExpr (_,_,m) | SynExpr.Lambda (_,_,_,_,m) | SynExpr.Match (_,_,_,_,m) | SynExpr.MatchLambda (_,_,_,_,m) | SynExpr.Do (_,m) | SynExpr.Assert (_,m) | SynExpr.TypeApp (_,_,_,_,_,_,m) | SynExpr.LetOrUse (_,_,_,_,m) | SynExpr.TryWith (_,_,_,_,m,_,_) | SynExpr.TryFinally (_,_,m,_,_) | SynExpr.ArbitraryAfterError(_,m) | SynExpr.FromParseError (_,m) | SynExpr.DiscardAfterMissingQualificationAfterDot (_,m) | SynExpr.IfThenElse (_,_,_,_,_,_,m) | SynExpr.LongIdent (_,_,_,m) | SynExpr.LongIdentSet (_,_,m) | SynExpr.NamedIndexedPropertySet (_,_,_,m) | SynExpr.DotIndexedGet (_,_,_,m) | SynExpr.DotIndexedSet (_,_,_,_,_,m) | SynExpr.DotGet (_,_,_,m) | SynExpr.DotSet (_,_,_,m) | SynExpr.DotNamedIndexedPropertySet (_,_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldGet (_,_,_,m) | SynExpr.LibraryOnlyUnionCaseFieldSet (_,_,_,_,m) | SynExpr.LibraryOnlyILAssembly (_,_,_,_,m) | SynExpr.LibraryOnlyStaticOptimization (_,_,_,m) | SynExpr.TypeTest (_,_,m) | SynExpr.Upcast (_,_,m) | SynExpr.AddressOf (_,_,_,m) | SynExpr.Downcast (_,_,m) | SynExpr.JoinIn (_,_,_,m) | SynExpr.InferredUpcast (_,m) | SynExpr.InferredDowncast (_,m) | SynExpr.Null m | SynExpr.Lazy (_, m) | SynExpr.TraitCall(_,_,_,m) | SynExpr.ImplicitZero (m) | SynExpr.YieldOrReturn (_,_,m) | SynExpr.YieldOrReturnFrom (_,_,m) | SynExpr.LetOrUseBang (_,_,_,_,_,_,m) | SynExpr.DoBang (_,m) -> m // these are better than just .Range, and also commonly applicable inside queries | SynExpr.Paren(_,m,_,_) -> m | SynExpr.Sequential (_,_,e1,_,_) | SynExpr.App (_,_,e1,_,_) -> e1.RangeOfFirstPortion | SynExpr.ForEach (_,_,_,pat,_,_,m) -> let start = m.Start let e = (pat.Range : range).Start mkRange m.FileName start e | SynExpr.Ident id -> id.idRange and [] SynSimplePat = /// Id (ident, altNameRefCell, isCompilerGenerated, isThisVar, isOptArg, range) /// /// Indicates a simple pattern variable. /// /// altNameRefCell /// Normally 'None' except for some compiler-generated variables in desugaring pattern matching. /// Pattern processing sets this reference for hidden variable introduced by desugaring pattern matching in arguments. /// The info indicates an alternative (compiler generated) identifier to be used because the name of the identifier is already bound. /// See Product Studio FSharp 1.0, bug 6389. /// /// isCompilerGenerated : true if a compiler generated name /// isThisVar: true if 'this' variable in member /// isOptArg: true if a '?' is in front of the name | Id of Ident * SynSimplePatAlternativeIdInfo ref option * bool * bool * bool * range | Typed of SynSimplePat * SynType * range | Attrib of SynSimplePat * SynAttributes * range and SynSimplePatAlternativeIdInfo = /// We have not decided to use an alternative name in tha pattern and related expression | Undecided of Ident /// We have decided to use an alternative name in tha pattern and related expression | Decided of Ident and [] SynStaticOptimizationConstraint = | WhenTyparTyconEqualsTycon of SynTypar * SynType * range | WhenTyparIsStruct of SynTypar * range and [] /// Represents a simple set of variable bindings a, (a,b) or (a:Type,b:Type) at a lambda, /// function definition or other binding point, after the elimination of pattern matching /// from the construct, e.g. after changing a "function pat1 -> rule1 | ..." to a /// "fun v -> match v with ..." SynSimplePats = | SimplePats of SynSimplePat list * range | Typed of SynSimplePats * SynType * range and [] SynPat = | Const of SynConst * range | Wild of range | Named of SynPat * Ident * bool (* true if 'this' variable *) * SynAccess option * range | Typed of SynPat * SynType * range | Attrib of SynPat * SynAttributes * range | Or of SynPat * SynPat * range | Ands of SynPat list * range | LongIdent of LongIdentWithDots * (* holds additional ident for tooling *) Ident option * SynValTyparDecls option (* usually None: temporary used to parse "f<'a> x = x"*) * SynPat list * SynAccess option * range | Tuple of SynPat list * range | Paren of SynPat * range | ArrayOrList of bool * SynPat list * range | Record of ((LongIdent * Ident) * SynPat) list * range /// 'null' | Null of range /// '?id' -- for optional argument names | OptionalVal of Ident * range /// ':? type ' | IsInst of SynType * range /// <@ expr @>, used for active pattern arguments | QuoteExpr of SynExpr * range /// Deprecated character ranges | DeprecatedCharRange of char * char * range /// Used internally in the type checker | InstanceMember of Ident * Ident * (* holds additional ident for tooling *) Ident option * SynAccess option * range (* adhoc overloaded method/property *) /// A pattern arising from a parse error | FromParseError of SynPat * range member p.Range = match p with | SynPat.Const(_,m) | SynPat.Wild m | SynPat.Named (_,_,_,_,m) | SynPat.Or (_,_,m) | SynPat.Ands (_,m) | SynPat.LongIdent (_,_,_,_,_,m) | SynPat.ArrayOrList(_,_,m) | SynPat.Tuple (_,m) |SynPat.Typed(_,_,m) |SynPat.Attrib(_,_,m) | SynPat.Record (_,m) | SynPat.DeprecatedCharRange (_,_,m) | SynPat.Null m | SynPat.IsInst (_,m) | SynPat.QuoteExpr (_,m) | SynPat.InstanceMember(_,_,_,_,m) | SynPat.OptionalVal(_,m) | SynPat.Paren(_,m) | SynPat.FromParseError (_,m) -> m and [] SynInterfaceImpl = | InterfaceImpl of SynType * SynBinding list * range and [] SynMatchClause = | Clause of SynPat * SynExpr option * SynExpr * range * SequencePointInfoForTarget member this.RangeOfGuardAndRhs = match this with | Clause(_,eo,e,_,_) -> match eo with | None -> e.Range | Some x -> unionRanges e.Range x.Range member this.Range = match this with | Clause(_,eo,e,m,_) -> match eo with | None -> unionRanges e.Range m | Some x -> unionRanges (unionRanges e.Range m) x.Range and SynAttributes = SynAttribute list and [] SynAttribute = { TypeName: LongIdentWithDots; ArgExpr: SynExpr /// Target specifier, e.g. "assembly","module",etc. Target: Ident option /// Is this attribute being applied to a property getter or setter? AppliesToGetterAndSetter: bool Range: range } and [] SynValData = | SynValData of MemberFlags option * SynValInfo * Ident option and [] SynBinding = | Binding of SynAccess option * SynBindingKind * bool (* mustinline: *) * bool (* mutable: *) * SynAttributes * PreXmlDoc * SynValData * SynPat * SynBindingReturnInfo option * SynExpr * range * SequencePointInfoForBinding // no member just named "Range", as that would be confusing: // - for everything else, the 'range' member that appears last/second-to-last is the 'full range' of the whole tree construct // - but for Binding, the 'range' is only the range of the left-hand-side, the right-hand-side range is in the SynExpr // - so we use explicit names to avoid confusion member x.RangeOfBindingSansRhs = let (Binding(_,_,_,_,_,_,_,_,_,_,m,_)) = x in m member x.RangeOfBindingAndRhs = let (Binding(_,_,_,_,_,_,_,_,_,e,m,_)) = x in unionRanges e.Range m member x.RangeOfHeadPat = let (Binding(_,_,_,_,_,_,_,headPat,_,_,_,_)) = x in headPat.Range and [] SynBindingReturnInfo = | SynBindingReturnInfo of SynType * range * SynAttributes and [] MemberFlags = { IsInstance: bool; IsDispatchSlot: bool; IsOverrideOrExplicitImpl: bool; IsFinal: bool; MemberKind: MemberKind } /// Note the member kind is actually computed partially by a syntax tree transformation in tc.fs and [] MemberKind = | ClassConstructor | Constructor | Member | PropertyGet | PropertySet /// An artifical member kind used prior to the point where a get/set property is split into two distinct members. | PropertyGetSet and [] /// The untyped, unchecked syntax tree for a member signature, used in signature files, abstract member declarations /// and member constraints. SynMemberSig = | Member of SynValSig * MemberFlags * range | Interface of SynType * range | Inherit of SynType * range | ValField of SynField * range | NestedType of SynTypeDefnSig * range and SynMemberSigs = SynMemberSig list and [] SynTypeDefnKind = | TyconUnspecified | TyconClass | TyconInterface | TyconStruct | TyconRecord | TyconUnion | TyconAbbrev | TyconHiddenRepr | TyconAugmentation | TyconILAssemblyCode | TyconDelegate of SynType * SynValInfo and [] /// The untyped, unchecked syntax tree for the core of a simple type definition, in either signature /// or implementation. SynTypeDefnSimpleRepr = /// A union type definition, type X = A | B | Union of SynAccess option * SynUnionCases * range /// An enum type definition, type X = A = 1 | B = 2 | Enum of SynEnumCases * range /// A record type definition, type X = { A : int; B : int } | Record of SynAccess option * SynFields * range /// An object oriented type definition. This is not a parse-tree form, but represents the core /// type representation which the type checker splits out from the "ObjectModel" cases of type definitions. | General of SynTypeDefnKind * (SynType * range * Ident option) list * (SynValSig * MemberFlags) list * SynField list * bool * bool * SynSimplePat list option * range /// A type defined by using an IL assembly representation. Only used in FSharp.Core. /// /// F# syntax: "type X = (# "..."#) | LibraryOnlyILAssembly of ILType * range /// A type abbreviation, "type X = A.B.C" | TypeAbbrev of ParserDetail * SynType * range /// An abstract definition , "type X" | None of range member this.Range = match this with | Union(_,_,m) | Enum(_,m) | Record(_,_,m) | General(_,_,_,_,_,_,_,m) | LibraryOnlyILAssembly(_,m) | TypeAbbrev(_,_,m) | None(m) -> m and SynEnumCases = SynEnumCase list and [] SynEnumCase = /// The untyped, unchecked syntax tree for one case in an enum definition. | EnumCase of SynAttributes * Ident * SynConst * PreXmlDoc * range member this.Range = match this with | EnumCase(_,_,_,_,m) -> m and SynUnionCases = SynUnionCase list and [] SynUnionCase = /// The untyped, unchecked syntax tree for one case in a union definition. | UnionCase of SynAttributes * Ident * SynUnionCaseType * PreXmlDoc * SynAccess option * range member this.Range = match this with | UnionCase(_,_,_,_,_,m) -> m and [] /// The untyped, unchecked syntax tree for the right-hand-side of union definition, excluding members, /// in either a signature or implementation. SynUnionCaseType = /// Normal style declaration | UnionCaseFields of SynField list /// Full type spec given by 'UnionCase : ty1 * tyN -> rty'. Only used in FSharp.Core, otherwise a warning. | UnionCaseFullType of (SynType * SynValInfo) and [] /// The untyped, unchecked syntax tree for the right-hand-side of a type definition in a signature. /// Note: in practice, using a discriminated union to make a distinction between /// "simple" types and "object oriented" types is not particularly useful. SynTypeDefnSigRepr = /// Indicates the right right-hand-side is a class, struct, interface or other object-model type | ObjectModel of SynTypeDefnKind * SynMemberSigs * range /// Indicates the right right-hand-side is a record, union or other simple type. | Simple of SynTypeDefnSimpleRepr * range member this.Range = match this with | ObjectModel(_,_,m) -> m | Simple(_,m) -> m and [] /// The untyped, unchecked syntax tree for a type definition in a signature SynTypeDefnSig = /// The information for a type definition in a signature | TypeDefnSig of SynComponentInfo * SynTypeDefnSigRepr * SynMemberSigs * range and SynFields = SynField list and [] /// The untyped, unchecked syntax tree for a field declaration in a record or class SynField = | Field of SynAttributes * (* static: *) bool * Ident option * SynType * bool * PreXmlDoc * SynAccess option * range and [] /// The untyped, unchecked syntax tree associated with the name of a type definition or module /// in signature or implementation. /// /// THis includes the name, attributes, type parameters, constraints, documentation and accessibility /// for a type definition or module. For modules, entries such as the type parameters are /// always empty. SynComponentInfo = | ComponentInfo of SynAttributes * SynTyparDecl list * SynTypeConstraint list * LongIdent * PreXmlDoc * (* preferPostfix: *) bool * SynAccess option * range member this.Range = match this with | ComponentInfo(_,_,_,_,_,_,_,m) -> m and [] SynValSig = | ValSpfn of SynAttributes * Ident * SynValTyparDecls * SynType * SynValInfo * bool * bool * (* mutable? *) PreXmlDoc * SynAccess option * SynExpr option * range member x.RangeOfId = let (ValSpfn(_,id,_,_,_,_,_,_,_,_,_)) = x in id.idRange member x.SynInfo = let (ValSpfn(_,_,_,_,v,_,_,_,_,_,_)) = x in v member x.SynType = let (ValSpfn(_,_,_,ty,_,_,_,_,_,_,_)) = x in ty /// The argument names and other metadata for a member or function and [] SynValInfo = /// SynValInfo(curriedArgInfos, returnInfo) | SynValInfo of SynArgInfo list list * SynArgInfo member x.ArgInfos = (let (SynValInfo(args,_)) = x in args) /// The argument names and other metadata for a parameter for a member or function and [] SynArgInfo = | SynArgInfo of SynAttributes * (*optional:*) bool * Ident option /// The names and other metadata for the type parameters for a member or function and [] SynValTyparDecls = | SynValTyparDecls of SynTyparDecl list * bool * SynTypeConstraint list /// 'exception E = ... ' and [] SynExceptionRepr = | ExceptionDefnRepr of SynAttributes * SynUnionCase * LongIdent option * PreXmlDoc * SynAccess option * range member this.Range = match this with ExceptionDefnRepr(_,_,_,_,_,m) -> m /// 'exception E = ... with ...' and [] SynExceptionDefn = | ExceptionDefn of SynExceptionRepr * SynMemberDefns * range and [] SynTypeDefnRepr = | ObjectModel of SynTypeDefnKind * SynMemberDefns * range | Simple of SynTypeDefnSimpleRepr * range member this.Range = match this with | ObjectModel(_,_,m) -> m | Simple(_,m) -> m and [] SynTypeDefn = | TypeDefn of SynComponentInfo * SynTypeDefnRepr * SynMemberDefns * range member this.Range = match this with | TypeDefn(_,_,_,m) -> m and [] SynMemberDefn = | Open of LongIdent * range | Member of SynBinding * range /// implicit ctor args as a defn line, 'as' specification | ImplicitCtor of SynAccess option * SynAttributes * SynSimplePat list * Ident option * range /// inherit (args...) as base | ImplicitInherit of SynType * SynExpr * Ident option * range /// LetBindings(bindingList, isStatic, isRecursive, wholeRange) /// /// localDefns | LetBindings of SynBinding list * bool * bool * range | AbstractSlot of SynValSig * MemberFlags * range | Interface of SynType * SynMemberDefns option * range | Inherit of SynType * Ident option * range | ValField of SynField * range /// A feature that is not implemented | NestedType of SynTypeDefn * SynAccess option * range /// SynMemberDefn.AutoProperty (attribs,isStatic,id,tyOpt,propKind,memberFlags,xmlDoc,access,synExpr,mGetSet,mWholeAutoProp). /// /// F# syntax: 'member val X = expr' | AutoProperty of SynAttributes * bool * Ident * SynType option * MemberKind * (MemberKind -> MemberFlags) * PreXmlDoc * SynAccess option * SynExpr * range option * range member d.Range = match d with | SynMemberDefn.Member(_, m) | SynMemberDefn.Interface(_, _, m) | SynMemberDefn.Open(_, m) | SynMemberDefn.LetBindings(_,_,_,m) | SynMemberDefn.ImplicitCtor(_,_,_,_,m) | SynMemberDefn.ImplicitInherit(_,_,_,m) | SynMemberDefn.AbstractSlot(_,_,m) | SynMemberDefn.Inherit(_,_,m) | SynMemberDefn.ValField(_,m) | SynMemberDefn.AutoProperty(_,_,_,_,_,_,_,_,_,_,m) | SynMemberDefn.NestedType(_,_,m) -> m and SynMemberDefns = SynMemberDefn list and [] SynModuleDecl = | ModuleAbbrev of Ident * LongIdent * range | NestedModule of SynComponentInfo * SynModuleDecls * bool * range | Let of bool * SynBinding list * range | DoExpr of SequencePointInfoForBinding * SynExpr * range | Types of SynTypeDefn list * range | Exception of SynExceptionDefn * range | Open of LongIdentWithDots * range | Attributes of SynAttributes * range | HashDirective of ParsedHashDirective * range | NamespaceFragment of SynModuleOrNamespace member d.Range = match d with | SynModuleDecl.ModuleAbbrev(_,_,m) | SynModuleDecl.NestedModule(_,_,_,m) | SynModuleDecl.Let(_,_,m) | SynModuleDecl.DoExpr(_,_,m) | SynModuleDecl.Types(_,m) | SynModuleDecl.Exception(_,m) | SynModuleDecl.Open (_,m) | SynModuleDecl.HashDirective (_,m) | SynModuleDecl.NamespaceFragment(SynModuleOrNamespace(_,_,_,_,_,_,m)) | SynModuleDecl.Attributes(_,m) -> m and SynModuleDecls = SynModuleDecl list and [] SynExceptionSig = | ExceptionSig of SynExceptionRepr * SynMemberSigs * range and [] SynModuleSigDecl = | ModuleAbbrev of Ident * LongIdent * range | NestedModule of SynComponentInfo * SynModuleSigDecls * range | Val of SynValSig * range | Types of SynTypeDefnSig list * range | Exception of SynExceptionSig * range | Open of LongIdent * range | HashDirective of ParsedHashDirective * range | NamespaceFragment of SynModuleOrNamespaceSig member d.Range = match d with | SynModuleSigDecl.ModuleAbbrev (_,_,m) | SynModuleSigDecl.NestedModule (_,_,m) | SynModuleSigDecl.Val (_,m) | SynModuleSigDecl.Types (_,m) | SynModuleSigDecl.Exception (_,m) | SynModuleSigDecl.Open (_,m) | SynModuleSigDecl.NamespaceFragment (SynModuleOrNamespaceSig(_,_,_,_,_,_,m)) | SynModuleSigDecl.HashDirective (_,m) -> m and SynModuleSigDecls = SynModuleSigDecl list /// SynModuleOrNamespace(lid,isModule,decls,xmlDoc,attribs,SynAccess,m) and [] SynModuleOrNamespace = | SynModuleOrNamespace of LongIdent * (*isModule:*) bool * SynModuleDecls * PreXmlDoc * SynAttributes * SynAccess option * range member this.Range = match this with | SynModuleOrNamespace(_,_,_,_,_,_,m) -> m and [] SynModuleOrNamespaceSig = | SynModuleOrNamespaceSig of LongIdent * (*isModule:*) bool * SynModuleSigDecls * PreXmlDoc * SynAttributes * SynAccess option * range and [] ParsedHashDirective = | ParsedHashDirective of string * string list * range [] type ParsedImplFileFragment = | AnonModule of SynModuleDecls * range | NamedModule of SynModuleOrNamespace | NamespaceFragment of LongIdent * bool * SynModuleDecls * PreXmlDoc * SynAttributes * range [] type ParsedSigFileFragment = | AnonModule of SynModuleSigDecls * range | NamedModule of SynModuleOrNamespaceSig | NamespaceFragment of LongIdent * bool * SynModuleSigDecls * PreXmlDoc * SynAttributes * range [] type ParsedFsiInteraction = | IDefns of SynModuleDecl list * range | IHash of ParsedHashDirective * range [] type ParsedImplFile = | ParsedImplFile of ParsedHashDirective list * ParsedImplFileFragment list [] type ParsedSigFile = | ParsedSigFile of ParsedHashDirective list * ParsedSigFileFragment list //---------------------------------------------------------------------- // AST and parsing utilities. //---------------------------------------------------------------------- let ident (s,r) = new Ident(s,r) let textOfId (id:Ident) = id.idText let pathOfLid lid = List.map textOfId lid let arrPathOfLid lid = Array.ofList (List.map textOfId lid) let textOfPath path = String.concat "." path let textOfArrPath path = String.concat "." (List.ofArray path) let textOfLid lid = textOfPath (pathOfLid lid) let rangeOfLid (lid: Ident list) = match lid with | [] -> failwith "rangeOfLid" | [id] -> id.idRange | h::t -> unionRanges h.idRange (List.last t).idRange [] type ScopedPragma = | WarningOff of range * int // Note: this type may be extended in the future with optimization on/off switches etc. // These are the results of parsing + folding in the implicit file name /// ImplFile(modname,isScript,qualName,hashDirectives,modules,isLastCompiland) /// QualifiedNameOfFile acts to fully-qualify module specifications and implementations, /// most importantly the ones that simply contribute fragments to a namespace (i.e. the ParsedSigFileFragment.NamespaceFragment case) /// There may be multiple such fragments in a single assembly. There may thus also /// be multiple matching pairs of these in an assembly, all contributing types to the same /// namespace. [] type QualifiedNameOfFile = | QualifiedNameOfFile of Ident member x.Text = (let (QualifiedNameOfFile(t)) = x in t.idText) member x.Id = (let (QualifiedNameOfFile(t)) = x in t) member x.Range = (let (QualifiedNameOfFile(t)) = x in t.idRange) [] type ParsedImplFileInput = | ParsedImplFileInput of string * (*isScript: *) bool * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespace list * bool [] type ParsedSigFileInput = | ParsedSigFileInput of string * QualifiedNameOfFile * ScopedPragma list * ParsedHashDirective list * SynModuleOrNamespaceSig list [] type ParsedInput = | ImplFile of ParsedImplFileInput | SigFile of ParsedSigFileInput member inp.Range = match inp with | ParsedInput.ImplFile (ParsedImplFileInput(_,_,_,_,_,(SynModuleOrNamespace(_,_,_,_,_,_,m) :: _),_)) | ParsedInput.SigFile (ParsedSigFileInput(_,_,_,_,(SynModuleOrNamespaceSig(_,_,_,_,_,_,m) :: _))) -> m | ParsedInput.ImplFile (ParsedImplFileInput(filename,_,_,_,_,[],_)) | ParsedInput.SigFile (ParsedSigFileInput(filename,_,_,_,[])) -> #if DEBUG assert("" = "compiler expects ParsedInput.ImplFile and ParsedInput.SigFile to have at least one fragment, 4488") #endif rangeN filename 0 (* There are no implementations, e.g. due to errors, so return a default range for the file *) //---------------------------------------------------------------------- // Construct syntactic AST nodes //----------------------------------------------------------------------- // REVIEW: get rid of this global state type SynArgNameGenerator() = let mutable count = 0 let generatedArgNamePrefix = "_arg" member __.New() : string = count <- count + 1; generatedArgNamePrefix + string count member __.Reset() = count <- 0 //---------------------------------------------------------------------- // Construct syntactic AST nodes //----------------------------------------------------------------------- let mkSynId m s = Ident(s,m) let pathToSynLid m p = List.map (mkSynId m) p let mkSynIdGet m n = SynExpr.Ident(mkSynId m n) let mkSynLidGet m path n = let lid = pathToSynLid m path @ [mkSynId m n] let dots = List.replicate (lid.Length - 1) m SynExpr.LongIdent(false,LongIdentWithDots(lid,dots),None,m) let mkSynIdGetWithAlt m id altInfo = match altInfo with | None -> SynExpr.Ident id | _ -> SynExpr.LongIdent(false,LongIdentWithDots([id],[]),altInfo,m) let mkSynSimplePatVar isOpt id = SynSimplePat.Id (id,None,false,false,isOpt,id.idRange) let mkSynCompGenSimplePatVar id = SynSimplePat.Id (id,None,true,false,false,id.idRange) /// Match a long identifier, including the case for single identifiers which gets a more optimized node in the syntax tree. let (|LongOrSingleIdent|_|) inp = match inp with | SynExpr.LongIdent(isOpt,lidwd,altId,_m) -> Some (isOpt,lidwd,altId,lidwd.RangeSansAnyExtraDot) | SynExpr.Ident id -> Some (false,LongIdentWithDots([id],[]),None,id.idRange) | _ -> None let (|SingleIdent|_|) inp = match inp with | SynExpr.LongIdent(false,LongIdentWithDots([id],_),None,_) -> Some id | SynExpr.Ident id -> Some id | _ -> None /// This affects placement of sequence points let rec IsControlFlowExpression e = match e with | SynExpr.ObjExpr _ | SynExpr.Lambda _ | SynExpr.LetOrUse _ | SynExpr.Sequential _ // Treat "ident { ... }" as a control flow expression | SynExpr.App (_, _, SynExpr.Ident _, SynExpr.CompExpr _,_) | SynExpr.IfThenElse _ | SynExpr.LetOrUseBang _ | SynExpr.Match _ | SynExpr.TryWith _ | SynExpr.TryFinally _ | SynExpr.For _ | SynExpr.ForEach _ | SynExpr.While _ -> true | SynExpr.Typed(e,_,_) -> IsControlFlowExpression e | _ -> false let mkAnonField (ty: SynType) = Field([],false,None,ty,false,PreXmlDoc.Empty,None,ty.Range) let mkSynPatVar vis (id:Ident) = SynPat.Named (SynPat.Wild id.idRange,id,false,vis,id.idRange) let mkSynThisPatVar (id:Ident) = SynPat.Named (SynPat.Wild id.idRange,id,true,None,id.idRange) let mkSynPatMaybeVar lidwd vis m = SynPat.LongIdent (lidwd,None,None,[],vis,m) /// Extract the argument for patterns corresponding to the declaration of 'new ... = ...' let (|SynPatForConstructorDecl|_|) x = match x with | SynPat.LongIdent (LongIdentWithDots([_],_),_,_,[arg],_,_) -> Some arg | _ -> None /// Recognize the '()' in 'new()' let (|SynPatForNullaryArgs|_|) x = match x with | SynPat.Paren(SynPat.Const(SynConst.Unit,_),_) -> Some() | _ -> None let (|SynExprErrorSkip|) (p:SynExpr) = match p with | SynExpr.FromParseError(p,_) -> p | _ -> p let (|SynExprParen|_|) (e:SynExpr) = match e with | SynExpr.Paren(SynExprErrorSkip e,a,b,c) -> Some (e,a,b,c) | _ -> None let (|SynPatErrorSkip|) (p:SynPat) = match p with | SynPat.FromParseError(p,_) -> p | _ -> p /// Push non-simple parts of a patten match over onto the r.h.s. of a lambda. /// Return a simple pattern and a function to build a match on the r.h.s. if the pattern is complex let rec SimplePatOfPat (synArgNameGenerator: SynArgNameGenerator) p = match p with | SynPat.Typed(p',ty,m) -> let p2,laterf = SimplePatOfPat synArgNameGenerator p' SynSimplePat.Typed(p2,ty,m), laterf | SynPat.Attrib(p',attribs,m) -> let p2,laterf = SimplePatOfPat synArgNameGenerator p' SynSimplePat.Attrib(p2,attribs,m), laterf | SynPat.Named (SynPat.Wild _, v,thisv,_,m) -> SynSimplePat.Id (v,None,false,thisv,false,m), None | SynPat.OptionalVal (v,m) -> SynSimplePat.Id (v,None,false,false,true,m), None | SynPat.Paren (p,_) -> SimplePatOfPat synArgNameGenerator p | SynPat.FromParseError (p,_) -> SimplePatOfPat synArgNameGenerator p | _ -> let m = p.Range let isCompGen,altNameRefCell,id,item = match p with | SynPat.LongIdent(LongIdentWithDots([id],_),_,None,[],None,_) -> // The pattern is 'V' or some other capitalized identifier. // It may be a real variable, in which case we want to maintain its name. // But it may also be a nullary union case or some other identifier. // In this case, we want to use an alternate compiler generated name for the hidden variable. let altNameRefCell = Some (ref (Undecided (mkSynId m (synArgNameGenerator.New())))) let item = mkSynIdGetWithAlt m id altNameRefCell false,altNameRefCell,id,item | _ -> let nm = synArgNameGenerator.New() let id = mkSynId m nm let item = mkSynIdGet m nm true,None,id,item SynSimplePat.Id (id,altNameRefCell,isCompGen,false,false,id.idRange), Some (fun e -> let clause = Clause(p,None,e,m,SuppressSequencePointAtTarget) SynExpr.Match(NoSequencePointAtInvisibleBinding,item,[clause],false,clause.Range)) let appFunOpt funOpt x = match funOpt with None -> x | Some f -> f x let composeFunOpt funOpt1 funOpt2 = match funOpt2 with None -> funOpt1 | Some f -> Some (fun x -> appFunOpt funOpt1 (f x)) let rec SimplePatsOfPat synArgNameGenerator p = match p with | SynPat.FromParseError (p,_) -> SimplePatsOfPat synArgNameGenerator p | SynPat.Typed(p',ty,m) -> let p2,laterf = SimplePatsOfPat synArgNameGenerator p' SynSimplePats.Typed(p2,ty,m), laterf // | SynPat.Paren (p,m) -> SimplePatsOfPat synArgNameGenerator p | SynPat.Tuple (ps,m) | SynPat.Paren(SynPat.Tuple (ps,m),_) -> let ps2,laterf = List.foldBack (fun (p',rhsf) (ps',rhsf') -> p'::ps', (composeFunOpt rhsf rhsf')) (List.map (SimplePatOfPat synArgNameGenerator) ps) ([], None) SynSimplePats.SimplePats (ps2,m), laterf | SynPat.Paren(SynPat.Const (SynConst.Unit,m),_) | SynPat.Const (SynConst.Unit,m) -> SynSimplePats.SimplePats ([],m), None | _ -> let m = p.Range let sp,laterf = SimplePatOfPat synArgNameGenerator p SynSimplePats.SimplePats ([sp],m),laterf let PushPatternToExpr synArgNameGenerator isMember pat (rhs: SynExpr) = let nowpats,laterf = SimplePatsOfPat synArgNameGenerator pat nowpats, SynExpr.Lambda (isMember,false,nowpats, appFunOpt laterf rhs,rhs.Range) let private isSimplePattern pat = let _nowpats,laterf = SimplePatsOfPat (SynArgNameGenerator()) pat isNone laterf /// "fun (UnionCase x) (UnionCase y) -> body" /// ==> /// "fun tmp1 tmp2 -> /// let (UnionCase x) = tmp1 in /// let (UnionCase y) = tmp2 in /// body" let PushCurriedPatternsToExpr synArgNameGenerator wholem isMember pats rhs = // Two phases // First phase: Fold back, from right to left, pushing patterns into r.h.s. expr let spatsl,rhs = (pats, ([],rhs)) ||> List.foldBack (fun arg (spatsl,body) -> let spats,bodyf = SimplePatsOfPat synArgNameGenerator arg // accumulate the body. This builds "let (UnionCase y) = tmp2 in body" let body = appFunOpt bodyf body // accumulate the patterns let spatsl = spats::spatsl (spatsl,body)) // Second phase: build lambdas. Mark subsequent ones with "true" indicating they are part of an iterated sequence of lambdas let expr = match spatsl with | [] -> rhs | h::t -> let expr = List.foldBack (fun spats e -> SynExpr.Lambda (isMember,true,spats, e,wholem)) t rhs let expr = SynExpr.Lambda (isMember,false,h, expr,wholem) expr spatsl,expr /// Helper for parsing the inline IL fragments. #if NO_INLINE_IL_PARSER let ParseAssemblyCodeInstructions _s m = errorR(Error((193,"Inline IL not valid in a hosted environment"),m)) ; [| |] #else let ParseAssemblyCodeInstructions s m = try Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser.ilInstrs Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiLexer.token (UnicodeLexing.StringAsLexbuf s) with RecoverableParseError -> errorR(Error(FSComp.SR.astParseEmbeddedILError(), m)); [| |] #endif /// Helper for parsing the inline IL fragments. #if NO_INLINE_IL_PARSER let ParseAssemblyCodeType _s m = // REVIEW: break out into a resource errorR(Error((193,"Inline IL not valid in a hosted environment"),m)) ; IL.ecmaILGlobals.typ_Object #else let ParseAssemblyCodeType s m = try Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser.ilType Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiLexer.token (UnicodeLexing.StringAsLexbuf s) with RecoverableParseError -> errorR(Error(FSComp.SR.astParseEmbeddedILTypeError(),m)); IL.ecmaILGlobals.typ_Object #endif //------------------------------------------------------------------------ // AST constructors //------------------------------------------------------------------------ let opNameParenGet = CompileOpName parenGet let opNameQMark = CompileOpName qmark let mkSynOperator opm oper = mkSynIdGet opm (CompileOpName oper) let mkSynInfix opm (l:SynExpr) oper (r:SynExpr) = let firstTwoRange = unionRanges l.Range opm let wholeRange = unionRanges l.Range r.Range SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynOperator opm oper, l, firstTwoRange), r, wholeRange) let mkSynBifix m oper x1 x2 = SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynOperator m oper,x1,m), x2,m) let mkSynTrifix m oper x1 x2 x3 = SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynOperator m oper,x1,m), x2,m), x3,m) let mkSynQuadfix m oper x1 x2 x3 x4 = SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynOperator m oper,x1,m), x2,m), x3,m),x4,m) let mkSynQuinfix m oper x1 x2 x3 x4 x5 = SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, false, SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynOperator m oper,x1,m), x2,m), x3,m),x4,m),x5,m) let mkSynPrefix opm m oper x = SynExpr.App (ExprAtomicFlag.NonAtomic, false, mkSynOperator opm oper, x,m) let mkSynCaseName m n = [mkSynId m (CompileOpName n)] let mkSynApp1 f x1 m = SynExpr.App(ExprAtomicFlag.NonAtomic,false,f,x1,m) let mkSynApp2 f x1 x2 m = mkSynApp1 (mkSynApp1 f x1 m) x2 m let mkSynApp3 f x1 x2 x3 m = mkSynApp1 (mkSynApp2 f x1 x2 m) x3 m let mkSynApp4 f x1 x2 x3 x4 m = mkSynApp1 (mkSynApp3 f x1 x2 x3 m) x4 m let mkSynApp5 f x1 x2 x3 x4 x5 m = mkSynApp1 (mkSynApp4 f x1 x2 x3 x4 m) x5 m let mkSynDotParenSet m a b c = mkSynTrifix m parenSet a b c let mkSynDotBrackGet m mDot a b = SynExpr.DotIndexedGet(a,[b],mDot,m) let mkSynQMarkSet m a b c = mkSynTrifix m qmarkSet a b c let mkSynDotBrackSliceGet m mDot arr (x,y) = SynExpr.DotIndexedGet(arr,[x;y],mDot,m) let mkSynDotBrackSlice2Get m mDot arr (x1,y1) (x2,y2) = SynExpr.DotIndexedGet(arr,[x1;y1;x2;y2],mDot,m) let mkSynDotBrackSlice3Get m mDot arr (x1,y1) (x2,y2) (x3,y3) = SynExpr.DotIndexedGet(arr,[x1;y1;x2;y2;x3;y3],mDot,m) let mkSynDotBrackSlice4Get m mDot arr (x1,y1) (x2,y2) (x3,y3) (x4,y4) = SynExpr.DotIndexedGet(arr,[x1;y1;x2;y2;x3;y3;x4;y4],mDot,m) let mkSynDotParenGet lhsm dotm a b = match b with | SynExpr.Tuple ([_;_],_,_) -> errorR(Deprecated(FSComp.SR.astDeprecatedIndexerNotation(),lhsm)) ; SynExpr.Const(SynConst.Unit,lhsm) | SynExpr.Tuple ([_;_;_],_,_) -> errorR(Deprecated(FSComp.SR.astDeprecatedIndexerNotation(),lhsm)) ; SynExpr.Const(SynConst.Unit,lhsm) | _ -> mkSynInfix dotm a parenGet b let mkSynUnit m = SynExpr.Const(SynConst.Unit,m) let mkSynUnitPat m = SynPat.Const(SynConst.Unit,m) let mkSynDelay m e = SynExpr.Lambda (false,false,SynSimplePats.SimplePats ([mkSynCompGenSimplePatVar (mkSynId m "unitVar")],m), e, m) let mkSynAssign (l: SynExpr) (r: SynExpr) = let m = unionRanges l.Range r.Range match l with //| SynExpr.Paren(l2,m2) -> mkSynAssign m l2 r | LongOrSingleIdent(false,v,None,_) -> SynExpr.LongIdentSet (v,r,m) | SynExpr.DotGet(e,_,v,_) -> SynExpr.DotSet (e,v,r,m) | SynExpr.DotIndexedGet(e1,e2,mDot,mLeft) -> SynExpr.DotIndexedSet (e1,e2,r,mLeft,mDot,m) | SynExpr.LibraryOnlyUnionCaseFieldGet (x,y,z,_) -> SynExpr.LibraryOnlyUnionCaseFieldSet (x,y,z,r,m) | SynExpr.App (_, _, SynExpr.App(_, _, SingleIdent(nm), a, _),b,_) when nm.idText = opNameQMark -> mkSynQMarkSet m a b r | SynExpr.App (_, _, SynExpr.App(_, _, SingleIdent(nm), a, _),b,_) when nm.idText = opNameParenGet -> mkSynDotParenSet m a b r | SynExpr.App (_, _, SynExpr.LongIdent(false,v,None,_),x,_) -> SynExpr.NamedIndexedPropertySet (v,x,r,m) | SynExpr.App (_, _, SynExpr.DotGet(e,_,v,_),x,_) -> SynExpr.DotNamedIndexedPropertySet (e,v,x,r,m) | _ -> errorR(Error(FSComp.SR.astInvalidExprLeftHandOfAssignment(), m)); l // return just the LHS, so the typechecker can see it and capture expression typings that may be useful for dot lookups let rec mkSynDot dotm m l r = match l with | SynExpr.LongIdent(isOpt,LongIdentWithDots(lid,dots),None,_) -> SynExpr.LongIdent(isOpt,LongIdentWithDots(lid@[r],dots@[dotm]),None,m) // REVIEW: MEMORY PERFORMANCE: This list operation is memory intensive (we create a lot of these list nodes) - an ImmutableArray would be better here | SynExpr.Ident id -> SynExpr.LongIdent(false,LongIdentWithDots([id;r],[dotm]),None,m) | SynExpr.DotGet(e,dm,LongIdentWithDots(lid,dots),_) -> SynExpr.DotGet(e,dm,LongIdentWithDots(lid@[r],dots@[dotm]),m)// REVIEW: MEMORY PERFORMANCE: This is memory intensive (we create a lot of these list nodes) - an ImmutableArray would be better here | expr -> SynExpr.DotGet(expr,dotm,LongIdentWithDots([r],[]),m) let rec mkSynDotMissing dotm m l = match l with | SynExpr.LongIdent(isOpt,LongIdentWithDots(lid,dots),None,_) -> SynExpr.LongIdent(isOpt,LongIdentWithDots(lid,dots@[dotm]),None,m) // REVIEW: MEMORY PERFORMANCE: This list operation is memory intensive (we create a lot of these list nodes) - an ImmutableArray would be better here | SynExpr.Ident id -> SynExpr.LongIdent(false,LongIdentWithDots([id],[dotm]),None,m) | SynExpr.DotGet(e,dm,LongIdentWithDots(lid,dots),_) -> SynExpr.DotGet(e,dm,LongIdentWithDots(lid,dots@[dotm]),m)// REVIEW: MEMORY PERFORMANCE: This is memory intensive (we create a lot of these list nodes) - an ImmutableArray would be better here | expr -> SynExpr.DiscardAfterMissingQualificationAfterDot(expr,m) let mkSynFunMatchLambdas synArgNameGenerator isMember wholem ps e = let _,e = PushCurriedPatternsToExpr synArgNameGenerator wholem isMember ps e e // error recovery - the contract is that these expressions can only be produced if an error has already been reported // (as a result, future checking may choose not to report errors involving these, to prevent noisy cascade errors) let arbExpr(debugStr,range:range) = SynExpr.ArbitraryAfterError(debugStr,range.MakeSynthetic()) type SynExpr with member this.IsArbExprAndThusAlreadyReportedError = match this with | SynExpr.ArbitraryAfterError _ -> true | _ -> false /// The syntactic elements associated with the "return" of a function or method. Some of this is /// mostly dummy information to make the return element look like an argument, /// the important thing is that (a) you can give a return type for the function or method, and /// (b) you can associate .NET attributes to return of a function or method and these get stored in .NET metadata. type SynReturnInfo = SynReturnInfo of (SynType * SynArgInfo) * range /// Operations related to the syntactic analysis of arguments of value, function and member definitions and signatures. /// /// Function and member definitions have strongly syntactically constrained arities. We infer /// the arity from the syntax. /// /// For example, we record the arity for: /// StaticProperty --> [1] -- for unit arg /// this.InstanceProperty --> [1;1] -- for unit arg /// StaticMethod(args) --> map InferSynArgInfoFromSimplePat args /// this.InstanceMethod() --> 1 :: map InferSynArgInfoFromSimplePat args /// this.InstanceProperty with get(argpat) --> 1 :: [InferSynArgInfoFromSimplePat argpat] /// StaticProperty with get(argpat) --> [InferSynArgInfoFromSimplePat argpat] /// this.InstanceProperty with get() --> 1 :: [InferSynArgInfoFromSimplePat argpat] /// StaticProperty with get() --> [InferSynArgInfoFromSimplePat argpat] /// /// this.InstanceProperty with set(argpat)(v) --> 1 :: [InferSynArgInfoFromSimplePat argpat; 1] /// StaticProperty with set(argpat)(v) --> [InferSynArgInfoFromSimplePat argpat; 1] /// this.InstanceProperty with set(v) --> 1 :: [1] /// StaticProperty with set(v) --> [1] module SynInfo = /// The argument information for an argument without a name let unnamedTopArg1 = SynArgInfo([],false,None) /// The argument information for a curried argument without a name let unnamedTopArg = [unnamedTopArg1] /// The argument information for a '()' argument let unitArgData = unnamedTopArg /// The 'argument' information for a return value where no attributes are given for the return value (the normal case) let unnamedRetVal = SynArgInfo([],false,None) /// The 'argument' information for the 'this'/'self' parameter in the cases where it is not given explicitly let selfMetadata = unnamedTopArg /// Determine if a syntactic information represents a member without arguments (which is implicitly a property getter) let HasNoArgs (SynValInfo(args,_)) = isNil args /// Check if one particular argument is an optional argument. Used when adjusting the /// types of optional arguments for function and member signatures. let IsOptionalArg (SynArgInfo(_,isOpt,_)) = isOpt /// Check if there are any optional arguments in the syntactic argument information. Used when adjusting the /// types of optional arguments for function and member signatures. let HasOptionalArgs (SynValInfo(args,_)) = List.exists (List.exists IsOptionalArg) args /// Add a parameter entry to the syntactic value information to represent the '()' argument to a property getter. This is /// used for the implicit '()' argument in property getter signature specifications. let IncorporateEmptyTupledArgForPropertyGetter (SynValInfo(args,retInfo)) = SynValInfo([]::args,retInfo) /// Add a parameter entry to the syntactic value information to represent the 'this' argument. This is /// used for the implicit 'this' argument in member signature specifications. let IncorporateSelfArg (SynValInfo(args,retInfo)) = SynValInfo(selfMetadata::args,retInfo) /// Add a parameter entry to the syntactic value information to represent the value argument for a property setter. This is /// used for the implicit value argument in property setter signature specifications. let IncorporateSetterArg (SynValInfo(args,retInfo)) = let args = match args with | [] -> [unnamedTopArg] | [arg] -> [arg@[unnamedTopArg1]] | _ -> failwith "invalid setter type" SynValInfo(args,retInfo) /// Get the argument counts for each curried argument group. Used in some adhoc places in tc.fs. let AritiesOfArgs (SynValInfo(args,_)) = List.map List.length args /// Get the argument attributes from the syntactic information for an argument. let AttribsOfArgData (SynArgInfo(attribs,_,_)) = attribs /// Infer the syntactic argument info for a single argument from a simple pattern. let rec InferSynArgInfoFromSimplePat attribs p = match p with | SynSimplePat.Id(nm,_,isCompGen,_,isOpt,_) -> SynArgInfo(attribs, isOpt, (if isCompGen then None else Some nm)) | SynSimplePat.Typed(a,_,_) -> InferSynArgInfoFromSimplePat attribs a | SynSimplePat.Attrib(a,attribs2,_) -> InferSynArgInfoFromSimplePat (attribs @ attribs2) a /// Infer the syntactic argument info for one or more arguments one or more simple patterns. let rec InferSynArgInfoFromSimplePats x = match x with | SynSimplePats.SimplePats(ps,_) -> List.map (InferSynArgInfoFromSimplePat []) ps | SynSimplePats.Typed(ps,_,_) -> InferSynArgInfoFromSimplePats ps /// Infer the syntactic argument info for one or more arguments a pattern. let InferSynArgInfoFromPat p = // It is ok to use a fresh SynArgNameGenerator here, because compiler generated names are filtered from SynArgInfo, see InferSynArgInfoFromSimplePat above let sp,_ = SimplePatsOfPat (SynArgNameGenerator()) p InferSynArgInfoFromSimplePats sp /// Make sure only a solitary unit argument has unit elimination let AdjustArgsForUnitElimination infosForArgs = match infosForArgs with | [[]] -> infosForArgs | _ -> infosForArgs |> List.map (function [] -> unitArgData | x -> x) /// Transform a property declared using '[static] member P = expr' to a method taking a "unit" argument. /// This is similar to IncorporateEmptyTupledArgForPropertyGetter, but applies to member definitions /// rather than member signatures. let AdjustMemberArgs memFlags infosForArgs = match infosForArgs with | [] when memFlags=MemberKind.Member -> [] :: infosForArgs | _ -> infosForArgs /// For 'let' definitions, we infer syntactic argument information from the r.h.s. of a definition, if it /// is an immediate 'fun ... -> ...' or 'function ...' expression. This is noted in the F# language specification. /// This does not apply to member definitions. let InferLambdaArgs origRhsExpr = let rec loop e = match e with | SynExpr.Lambda(false,_,spats,rest,_) -> InferSynArgInfoFromSimplePats spats :: loop rest | _ -> [] loop origRhsExpr let InferSynReturnData (retInfo: SynReturnInfo option) = match retInfo with | None -> unnamedRetVal | Some(SynReturnInfo((_,retInfo),_)) -> retInfo let private emptySynValInfo = SynValInfo([],unnamedRetVal) let emptySynValData = SynValData(None,emptySynValInfo,None) /// Infer the syntactic information for a 'let' or 'member' definition, based on the argument pattern, /// any declared return information (e.g. .NET attributes on the return element), and the r.h.s. expression /// in the case of 'let' definitions. let InferSynValData (memberFlagsOpt, pat, retInfo, origRhsExpr) = let infosForExplicitArgs = match pat with | Some(SynPat.LongIdent(_,_,_,curriedArgs,_,_)) -> List.map InferSynArgInfoFromPat curriedArgs | _ -> [] let explicitArgsAreSimple = match pat with | Some(SynPat.LongIdent(_,_,_,curriedArgs,_,_)) -> List.forall isSimplePattern curriedArgs | _ -> true let retInfo = InferSynReturnData retInfo match memberFlagsOpt with | None -> let infosForLambdaArgs = InferLambdaArgs origRhsExpr let infosForArgs = infosForExplicitArgs @ (if explicitArgsAreSimple then infosForLambdaArgs else []) let infosForArgs = AdjustArgsForUnitElimination infosForArgs SynValData(None,SynValInfo(infosForArgs,retInfo),None) | Some memFlags -> let infosForObjArgs = if memFlags.IsInstance then [ selfMetadata ] else [] let infosForArgs = AdjustMemberArgs memFlags.MemberKind infosForExplicitArgs let infosForArgs = AdjustArgsForUnitElimination infosForArgs let argInfos = infosForObjArgs @ infosForArgs SynValData(Some(memFlags),SynValInfo(argInfos,retInfo),None) let mkSynBindingRhs staticOptimizations rhsExpr mRhs retInfo = let rhsExpr = List.foldBack (fun (c,e1) e2 -> SynExpr.LibraryOnlyStaticOptimization (c,e1,e2,mRhs)) staticOptimizations rhsExpr let rhsExpr,retTyOpt = match retInfo with | Some (SynReturnInfo((ty,SynArgInfo(rattribs,_,_)),tym)) -> SynExpr.Typed(rhsExpr,ty,rhsExpr.Range), Some(SynBindingReturnInfo(ty,tym,rattribs) ) | None -> rhsExpr,None rhsExpr,retTyOpt let mkSynBinding (xmlDoc,headPat) (vis,isInline,isMutable,mBind,spBind,retInfo,origRhsExpr,mRhs,staticOptimizations,attrs,memberFlagsOpt) = let info = SynInfo.InferSynValData (memberFlagsOpt, Some headPat, retInfo, origRhsExpr) let rhsExpr,retTyOpt = mkSynBindingRhs staticOptimizations origRhsExpr mRhs retInfo Binding (vis,NormalBinding,isInline,isMutable,attrs,xmlDoc,info,headPat,retTyOpt,rhsExpr,mBind,spBind) let NonVirtualMemberFlags k = { MemberKind=k; IsInstance=true; IsDispatchSlot=false; IsOverrideOrExplicitImpl=false; IsFinal=false } let CtorMemberFlags = { MemberKind=MemberKind.Constructor; IsInstance=false; IsDispatchSlot=false; IsOverrideOrExplicitImpl=false; IsFinal=false } let ClassCtorMemberFlags = { MemberKind=MemberKind.ClassConstructor; IsInstance=false; IsDispatchSlot=false; IsOverrideOrExplicitImpl=false; IsFinal=false } let OverrideMemberFlags k = { MemberKind=k; IsInstance=true; IsDispatchSlot=false; IsOverrideOrExplicitImpl=true; IsFinal=false } let AbstractMemberFlags k = { MemberKind=k; IsInstance=true; IsDispatchSlot=true; IsOverrideOrExplicitImpl=false; IsFinal=false } let StaticMemberFlags k = { MemberKind=k; IsInstance=false; IsDispatchSlot=false; IsOverrideOrExplicitImpl=false; IsFinal=false } let inferredTyparDecls = SynValTyparDecls([],true,[]) let noInferredTypars = SynValTyparDecls([],false,[]) //------------------------------------------------------------------------ // Lexer args: status of #if/#endif processing. //------------------------------------------------------------------------ type LexerIfdefStackEntry = IfDefIf | IfDefElse type LexerIfdefStackEntries = (LexerIfdefStackEntry * range) list type LexerIfdefStack = LexerIfdefStackEntries ref /// Specifies how the 'endline' function in the lexer should continue after /// it reaches end of line or eof. The options are to continue with 'token' function /// or to continue with 'skip' function. type LexerEndlineContinuation = | Token of LexerIfdefStackEntries | Skip of LexerIfdefStackEntries * int * range member x.LexerIfdefStack = match x with | LexerEndlineContinuation.Token(ifd) | LexerEndlineContinuation.Skip(ifd, _, _) -> ifd /// The parser defines a number of tokens for whitespace and /// comments eliminated by the lexer. These carry a specification of /// a continuation for the lexer for continued processing after we've dealt with /// the whitespace. [] [] type LexerWhitespaceContinuation = | Token of LexerIfdefStackEntries | IfDefSkip of LexerIfdefStackEntries * int * range | String of LexerIfdefStackEntries * range | VerbatimString of LexerIfdefStackEntries * range | TripleQuoteString of LexerIfdefStackEntries * range | Comment of LexerIfdefStackEntries * int * range | SingleLineComment of LexerIfdefStackEntries * int * range | StringInComment of LexerIfdefStackEntries * int * range | VerbatimStringInComment of LexerIfdefStackEntries * int * range | TripleQuoteStringInComment of LexerIfdefStackEntries * int * range | MLOnly of LexerIfdefStackEntries * range | EndLine of LexerEndlineContinuation member x.LexerIfdefStack = match x with | LexCont.Token ifd | LexCont.IfDefSkip (ifd,_,_) | LexCont.String (ifd,_) | LexCont.VerbatimString (ifd,_) | LexCont.Comment (ifd,_,_) | LexCont.SingleLineComment (ifd,_,_) | LexCont.TripleQuoteString (ifd,_) | LexCont.StringInComment (ifd,_,_) | LexCont.VerbatimStringInComment (ifd,_,_) | LexCont.TripleQuoteStringInComment (ifd,_,_) | LexCont.MLOnly (ifd,_) -> ifd | LexCont.EndLine endl -> endl.LexerIfdefStack and LexCont = LexerWhitespaceContinuation //------------------------------------------------------------------------ // Parser/Lexer state //------------------------------------------------------------------------ /// The error raised by the parse_error_rich function, which is called by the parser engine /// when a syntax error occurs. The first object is the ParseErrorContext which contains a dump of /// information about the grammar at the point where the error occured, e.g. what tokens /// are valid to shift next at that point in the grammar. This information is processed in build.fs. [] exception SyntaxError of obj (* ParseErrorContext<_> *) * range /// Get an F# compiler position from a lexer position let posOfLexPosition (p:Position) = mkPos p.Line p.Column /// Get an F# compiler range from a lexer range let mkSynRange (p1:Position) (p2: Position) = mkFileIndexRange p1.FileIndex (posOfLexPosition p1) (posOfLexPosition p2) type LexBuffer<'Char> with member lexbuf.LexemeRange = mkSynRange lexbuf.StartPos lexbuf.EndPos /// Get the range corresponding to the result of a grammar rule while it is being reduced let lhs (parseState: IParseState) = let p1 = parseState.ResultStartPosition let p2 = parseState.ResultEndPosition mkSynRange p1 p2 /// Get the range covering two of the r.h.s. symbols of a grammar rule while it is being reduced let rhs2 (parseState: IParseState) i j = let p1 = parseState.InputStartPosition i let p2 = parseState.InputEndPosition j mkSynRange p1 p2 /// Get the range corresponding to one of the r.h.s. symbols of a grammar rule while it is being reduced let rhs parseState i = rhs2 parseState i i type IParseState with member x.GetSynArgNameGenerator() = let key = "SynArgNameGenerator" let bls = x.LexBuffer.BufferLocalStore if not (bls.ContainsKey key) then bls.[key] <- box (SynArgNameGenerator()) bls.[key] :?> SynArgNameGenerator member x.ResetSynArgNameGenerator() = x.GetSynArgNameGenerator().Reset() /// XmlDoc F# lexer/parser state, held in the BufferLocalStore for the lexer. /// This is the only use of the lexer BufferLocalStore in the codebase. module LexbufLocalXmlDocStore = // The key into the BufferLocalStore used to hold the current accumulated XmlDoc lines let private xmlDocKey = "XmlDoc" let ClearXmlDoc (lexbuf:Lexbuf) = lexbuf.BufferLocalStore.[xmlDocKey] <- box (XmlDocCollector()) /// Called from the lexer to save a single line of XML doc comment. let SaveXmlDocLine (lexbuf:Lexbuf, lineText, pos) = if not (lexbuf.BufferLocalStore.ContainsKey(xmlDocKey)) then lexbuf.BufferLocalStore.[xmlDocKey] <- box (XmlDocCollector()) let collector = unbox(lexbuf.BufferLocalStore.[xmlDocKey]) collector.AddXmlDocLine (lineText, pos) /// Called from the parser each time we parse a construct that marks the end of an XML doc comment range, /// e.g. a 'type' declaration. The markerRange is the range of the keyword that delimits the construct. let GrabXmlDocBeforeMarker (lexbuf:Lexbuf, markerRange:range) = if lexbuf.BufferLocalStore.ContainsKey(xmlDocKey) then PreXmlDoc.CreateFromGrabPoint(unbox(lexbuf.BufferLocalStore.[xmlDocKey]),markerRange.End) else PreXmlDoc.Empty /// Generates compiler-generated names. Each name generated also includes the StartLine number of the range passed in /// at the point of first generation. type NiceNameGenerator() = let basicNameCounts = new Dictionary(100) member x.FreshCompilerGeneratedName (name,m:range) = let basicName = GetBasicNameOfPossibleCompilerGeneratedName name let n = (if basicNameCounts.ContainsKey basicName then basicNameCounts.[basicName] else 0) let nm = CompilerGeneratedNameSuffix basicName (string m.StartLine + (match n with 0 -> "" | n -> "-" + string n)) basicNameCounts.[basicName] <- n+1 nm member x.Reset () = basicNameCounts.Clear() /// Generates compiler-generated names marked up with a source code location, but if given the same unique value then /// return precisely the same name. Each name generated also includes the StartLine number of the range passed in /// at the point of first generation. type StableNiceNameGenerator() = let names = new Dictionary<(string * int64),string>(100) let basicNameCounts = new Dictionary(100) member x.GetUniqueCompilerGeneratedName (name,m:range,uniq) = let basicName = GetBasicNameOfPossibleCompilerGeneratedName name if names.ContainsKey (basicName,uniq) then names.[(basicName,uniq)] else let n = (if basicNameCounts.ContainsKey basicName then basicNameCounts.[basicName] else 0) let nm = CompilerGeneratedNameSuffix basicName (string m.StartLine + (match n with 0 -> "" | n -> "-" + string n)) names.[(basicName,uniq)] <- nm basicNameCounts.[basicName] <- n+1 nm member x.Reset () = basicNameCounts.Clear() names.Clear() let rec synExprContainsError inpExpr = let rec walkBind (Binding(_, _, _, _, _, _, _, _, _, synExpr, _, _)) = walkExpr synExpr and walkExprs es = es |> List.exists walkExpr and walkBinds es = es |> List.exists walkBind and walkMatchClauses cl = cl |> List.exists (fun (Clause(_,whenExpr,e,_,_)) -> walkExprOpt whenExpr || walkExpr e) and walkExprOpt eOpt = eOpt |> Option.exists walkExpr and walkExpr e = match e with | SynExpr.FromParseError _ | SynExpr.DiscardAfterMissingQualificationAfterDot _ | SynExpr.ArbitraryAfterError _ -> true | SynExpr.LongIdent _ | SynExpr.Quote _ | SynExpr.LibraryOnlyILAssembly _ | SynExpr.LibraryOnlyStaticOptimization _ | SynExpr.Null _ | SynExpr.Ident _ | SynExpr.ImplicitZero _ | SynExpr.Const _ -> false | SynExpr.TypeTest (e,_,_) | SynExpr.Upcast (e,_,_) | SynExpr.AddressOf (_,e,_,_) | SynExpr.CompExpr (_,_,e,_) | SynExpr.ArrayOrListOfSeqExpr (_,e,_) | SynExpr.Typed (e,_,_) | SynExpr.FromParseError (e,_) | SynExpr.Do (e,_) | SynExpr.Assert (e,_) | SynExpr.DotGet (e,_,_,_) | SynExpr.LongIdentSet (_,e,_) | SynExpr.New (_,_,e,_) | SynExpr.TypeApp (e,_,_,_,_,_,_) | SynExpr.LibraryOnlyUnionCaseFieldGet (e,_,_,_) | SynExpr.Downcast (e,_,_) | SynExpr.InferredUpcast (e,_) | SynExpr.InferredDowncast (e,_) | SynExpr.Lazy (e, _) | SynExpr.TraitCall(_,_,e,_) | SynExpr.YieldOrReturn (_,e,_) | SynExpr.YieldOrReturnFrom (_,e,_) | SynExpr.DoBang (e,_) | SynExpr.Paren(e,_,_,_) -> walkExpr e | SynExpr.NamedIndexedPropertySet (_,e1,e2,_) | SynExpr.DotSet (e1,_,e2,_) | SynExpr.LibraryOnlyUnionCaseFieldSet (e1,_,_,e2,_) | SynExpr.JoinIn (e1,_,e2,_) | SynExpr.App (_,_,e1,e2,_) -> walkExpr e1 || walkExpr e2 | SynExpr.ArrayOrList (_,es,_) | SynExpr.Tuple (es,_,_) -> walkExprs es | SynExpr.Record (_,_,fs,_) -> let flds = fs |> List.choose (fun (_, v, _) -> v) walkExprs (flds) | SynExpr.ObjExpr (_,_,bs,is,_,_) -> walkBinds bs || walkBinds [ for (InterfaceImpl(_,bs,_)) in is do yield! bs ] | SynExpr.ForEach (_,_,_,_,e1,e2,_) | SynExpr.While (_,e1,e2,_) -> walkExpr e1 || walkExpr e2 | SynExpr.For (_,_,e1,_,e2,e3,_) -> walkExpr e1 || walkExpr e2 || walkExpr e3 | SynExpr.MatchLambda(_,_,cl,_,_) -> walkMatchClauses cl | SynExpr.Lambda (_,_,_,e,_) -> walkExpr e | SynExpr.Match (_,e,cl,_,_) -> walkExpr e || walkMatchClauses cl | SynExpr.LetOrUse (_,_,bs,e,_) -> walkBinds bs || walkExpr e | SynExpr.TryWith (e,_,cl,_,_,_,_) -> walkExpr e || walkMatchClauses cl | SynExpr.TryFinally (e1,e2,_,_,_) -> walkExpr e1 || walkExpr e2 | SynExpr.Sequential (_,_,e1,e2,_) -> walkExpr e1 || walkExpr e2 | SynExpr.IfThenElse (e1,e2,e3opt,_,_,_,_) -> walkExpr e1 || walkExpr e2 || walkExprOpt e3opt | SynExpr.DotIndexedGet (e1,es,_,_) -> walkExpr e1 || walkExprs es | SynExpr.DotIndexedSet (e1,es,e2,_,_,_) -> walkExpr e1 || walkExprs es || walkExpr e2 | SynExpr.DotNamedIndexedPropertySet (e1,_,e2,e3,_) -> walkExpr e1 || walkExpr e2 || walkExpr e3 | SynExpr.LetOrUseBang (_,_,_,_,e1,e2,_) -> walkExpr e1 || walkExpr e2 walkExpr inpExprfsharp-3.0.34/src/fsharp/patcompile.fs0000775000175000017500000020010112260314606016626 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Patcompile open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib exception MatchIncomplete of bool * (string * bool) option * range exception RuleNeverMatched of range type ActionOnFailure = | ThrowIncompleteMatchException | IgnoreWithWarning | Throw | Rethrow | FailFilter [] /// Represents type-checked patterns type Pattern = | TPat_const of Const * range | TPat_wild of range (* note = TPat_disjs([],m), but we haven't yet removed that duplication *) | TPat_as of Pattern * PatternValBinding * range (* note: can be replaced by TPat_var, i.e. equals TPat_conjs([TPat_var; pat]) *) | TPat_disjs of Pattern list * range | TPat_conjs of Pattern list * range | TPat_query of (Expr * TType list * (ValRef * TypeInst) option * int * ActivePatternInfo) * Pattern * range | TPat_unioncase of UnionCaseRef * TypeInst * Pattern list * range | TPat_exnconstr of TyconRef * Pattern list * range | TPat_tuple of Pattern list * TType list * range | TPat_array of Pattern list * TType * range | TPat_recd of TyconRef * TypeInst * Pattern list * range | TPat_range of char * char * range | TPat_null of range | TPat_isinst of TType * TType * PatternValBinding option * range member this.Range = match this with | TPat_const(_,m) -> m | TPat_wild m -> m | TPat_as(_,_,m) -> m | TPat_disjs(_,m) -> m | TPat_conjs(_,m) -> m | TPat_query(_,_,m) -> m | TPat_unioncase(_,_,_,m) -> m | TPat_exnconstr(_,_,m) -> m | TPat_tuple(_,_,m) -> m | TPat_array(_,_,m) -> m | TPat_recd(_,_,_,m) -> m | TPat_range(_,_,m) -> m | TPat_null(m) -> m | TPat_isinst(_,_,_,m) -> m and PatternValBinding = PBind of Val * TypeScheme and TypedMatchClause = | TClause of Pattern * Expr option * DecisionTreeTarget * range member c.GuardExpr = let (TClause(_,whenOpt,_,_)) = c in whenOpt member c.Pattern = let (TClause(p,_,_,_)) = c in p member c.Range = let (TClause(_,_,_,m)) = c in m member c.Target = let (TClause(_,_,tg,_)) = c in tg member c.BoundVals = let (TClause(_p,_whenOpt,TTarget(vs,_,_),_m)) = c in vs let debug = false //--------------------------------------------------------------------------- // Nasty stuff to permit obscure generic bindings such as // let x,y = [],[] // // BindSubExprOfInput actually produces the binding // e.g. let v2 = \Gamma ['a,'b]. ([] : 'a ,[] : 'b) // let (x,y) = p. // When v = x, gtvs = 'a,'b. We must bind: // x --> \Gamma A. fst (v2[A,]) // y --> \Gamma A. snd (v2[,A]). // // GetSubExprOfInput is just used to get a concrete value from a type // function in the middle of the "test" part of pattern matching. // For example, e.g. let [x; y] = [ (\x.x); (\x.x) ] // Here the constructor test needs a real list, even though the // r.h.s. is actually a polymorphic type function. To do the // test, we apply the r.h.s. to a dummy type - it doesn't matter // which (unless the r.h.s. actually looks at it's type argument...) //--------------------------------------------------------------------------- type SubExprOfInput = | SubExpr of (TyparInst -> Expr -> Expr) * (Expr * Val) let BindSubExprOfInput g amap gtps (PBind(v,tyscheme)) m (SubExpr(accessf,(ve2,v2))) = let e' = if isNil gtps then accessf [] ve2 else let tyargs = let someSolved = ref false let freezeVar gtp = if isBeingGeneralized gtp tyscheme then mkTyparTy gtp else someSolved := true Typrelns.ChooseTyparSolution g amap gtp let solutions = List.map freezeVar gtps if !someSolved then Typrelns.IterativelySubstituteTyparSolutions g gtps solutions else solutions let tinst = mkTyparInst gtps tyargs accessf tinst (mkApps g ((ve2,v2.Type),[tyargs],[],v2.Range)) v,mkGenericBindRhs g m [] tyscheme e' let GetSubExprOfInput g (gtps,tyargs,tinst) (SubExpr(accessf,(ve2,v2))) = if isNil gtps then accessf [] ve2 else accessf tinst (mkApps g ((ve2,v2.Type),[tyargs],[],v2.Range)) //--------------------------------------------------------------------------- // path, frontier //--------------------------------------------------------------------------- // A path reaches into a pattern. // The ints record which choices taken, e.g. tuple/record fields. type Path = | PathQuery of Path * Unique | PathConj of Path * int | PathTuple of Path * TypeInst * int | PathRecd of Path * TyconRef * TypeInst * int | PathUnionConstr of Path * UnionCaseRef * TypeInst * int | PathArray of Path * TType * int * int | PathExnConstr of Path * TyconRef * int | PathEmpty of TType let rec pathEq p1 p2 = match p1,p2 with | PathQuery(p1,n1), PathQuery(p2,n2) -> (n1 = n2) && pathEq p1 p2 | PathConj(p1,n1), PathConj(p2,n2) -> (n1 = n2) && pathEq p1 p2 | PathTuple(p1,_,n1), PathTuple(p2,_,n2) -> (n1 = n2) && pathEq p1 p2 | PathRecd(p1,_,_,n1), PathRecd(p2,_,_,n2) -> (n1 = n2) && pathEq p1 p2 | PathUnionConstr(p1,_,_,n1), PathUnionConstr(p2,_,_,n2) -> (n1 = n2) && pathEq p1 p2 | PathArray(p1,_,_,n1), PathArray(p2,_,_,n2) -> (n1 = n2) && pathEq p1 p2 | PathExnConstr(p1,_,n1), PathExnConstr(p2,_,n2) -> (n1 = n2) && pathEq p1 p2 | PathEmpty(_), PathEmpty(_) -> true | _ -> false //--------------------------------------------------------------------------- // Counter example generation //--------------------------------------------------------------------------- type RefutedSet = /// A value RefutedInvestigation(path,discrim) indicates that the value at the given path is known /// to NOT be matched by the given discriminator | RefutedInvestigation of Path * Test list /// A value RefutedWhenClause indicates that a 'when' clause failed | RefutedWhenClause let notNullText = "some-non-null-value" let otherSubtypeText = "some-other-subtype" exception CannotRefute let RefuteDiscrimSet g m path discrims = let mkUnknown ty = snd(mkCompGenLocal m "_" ty) let rec go path tm = match path with | PathQuery _ -> raise CannotRefute | PathConj (p,_j) -> go p tm | PathTuple (p,tys,j) -> go p (fun _ -> mkTupled g m (mkOneKnown tm j tys) tys) | PathRecd (p,tcref,tinst,j) -> let flds = tcref |> actualTysOfInstanceRecdFields (mkTyconRefInst tcref tinst) |> mkOneKnown tm j go p (fun _ -> Expr.Op(TOp.Recd(RecdExpr, tcref),tinst, flds,m)) | PathUnionConstr (p,ucref,tinst,j) -> let flds = ucref |> actualTysOfUnionCaseFields (mkTyconRefInst ucref.TyconRef tinst)|> mkOneKnown tm j go p (fun _ -> Expr.Op(TOp.UnionCase(ucref),tinst, flds,m)) | PathArray (p,ty,len,n) -> go p (fun _ -> Expr.Op(TOp.Array,[ty], mkOneKnown tm n (List.replicate len ty) ,m)) | PathExnConstr (p,ecref,n) -> let flds = ecref |> recdFieldTysOfExnDefRef |> mkOneKnown tm n go p (fun _ -> Expr.Op(TOp.ExnConstr(ecref),[], flds,m)) | PathEmpty(ty) -> tm ty and mkOneKnown tm n tys = List.mapi (fun i ty -> if i = n then tm ty else mkUnknown ty) tys and mkUnknowns tys = List.map mkUnknown tys let tm ty = match discrims with | [Test.IsNull] -> snd(mkCompGenLocal m notNullText ty) | [Test.IsInst (_,_)] -> snd(mkCompGenLocal m otherSubtypeText ty) | (Test.Const c :: rest) -> let consts = Set.ofList (c :: List.choose (function Test.Const(c) -> Some c | _ -> None) rest) let c' = Seq.tryFind (fun c -> not (consts.Contains(c))) (match c with | Const.Bool _ -> [ true; false ] |> List.toSeq |> Seq.map (fun v -> Const.Bool(v)) | Const.SByte _ -> Seq.append (seq { 0y .. System.SByte.MaxValue }) (seq { System.SByte.MinValue .. 0y })|> Seq.map (fun v -> Const.SByte(v)) | Const.Int16 _ -> Seq.append (seq { 0s .. System.Int16.MaxValue }) (seq { System.Int16.MinValue .. 0s }) |> Seq.map (fun v -> Const.Int16(v)) | Const.Int32 _ -> Seq.append (seq { 0 .. System.Int32.MaxValue }) (seq { System.Int32.MinValue .. 0 })|> Seq.map (fun v -> Const.Int32(v)) | Const.Int64 _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map (fun v -> Const.Int64(v)) | Const.IntPtr _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map (fun v -> Const.IntPtr(v)) | Const.Byte _ -> seq { 0uy .. System.Byte.MaxValue } |> Seq.map (fun v -> Const.Byte(v)) | Const.UInt16 _ -> seq { 0us .. System.UInt16.MaxValue } |> Seq.map (fun v -> Const.UInt16(v)) | Const.UInt32 _ -> seq { 0u .. System.UInt32.MaxValue } |> Seq.map (fun v -> Const.UInt32(v)) | Const.UInt64 _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map (fun v -> Const.UInt64(v)) | Const.UIntPtr _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map (fun v -> Const.UIntPtr(v)) | Const.Double _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Double(float v)) | Const.Single _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Single(float32 v)) | Const.Char _ -> seq { 32us .. System.UInt16.MaxValue } |> Seq.map (fun v -> Const.Char(char v)) | Const.String _ -> seq { 1 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.String(new System.String('a',v))) | Const.Decimal _ -> seq { 1 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Decimal(decimal v)) | _ -> raise CannotRefute) (* REVIEW: we could return a better enumeration literal field here if a field matches one of the enumeration cases *) match c' with | None -> raise CannotRefute | Some c -> Expr.Const(c,m,ty) | (Test.UnionCase (ucref1,tinst) :: rest) -> let ucrefs = ucref1 :: List.choose (function Test.UnionCase(ucref,_) -> Some ucref | _ -> None) rest let tcref = ucref1.TyconRef (* Choose the first ucref based on ordering of names *) let others = tcref.UnionCasesAsRefList |> List.filter (fun ucref -> not (List.exists (g.unionCaseRefEq ucref) ucrefs)) |> List.sortBy (fun ucref -> ucref.CaseName) match others with | [] -> raise CannotRefute | ucref2 :: _ -> let flds = ucref2 |> actualTysOfUnionCaseFields (mkTyconRefInst tcref tinst) |> mkUnknowns Expr.Op(TOp.UnionCase(ucref2),tinst, flds,m) | [Test.ArrayLength (n,ty)] -> Expr.Op(TOp.Array,[ty], mkUnknowns (List.replicate (n+1) ty) ,m) | _ -> raise CannotRefute go path tm let rec CombineRefutations g r1 r2 = match r1,r2 with | Expr.Val(vref,_,_), other | other, Expr.Val(vref,_,_) when vref.LogicalName = "_" -> other | Expr.Val(vref,_,_), other | other, Expr.Val(vref,_,_) when vref.LogicalName = notNullText -> other | Expr.Val(vref,_,_), other | other, Expr.Val(vref,_,_) when vref.LogicalName = otherSubtypeText -> other | Expr.Op((TOp.ExnConstr(ecref1) as op1), tinst1,flds1,m1), Expr.Op(TOp.ExnConstr(ecref2), _,flds2,_) when tyconRefEq g ecref1 ecref2 -> Expr.Op(op1, tinst1,List.map2 (CombineRefutations g) flds1 flds2,m1) | Expr.Op((TOp.UnionCase(ucref1) as op1), tinst1,flds1,m1), Expr.Op(TOp.UnionCase(ucref2), _,flds2,_) -> if g.unionCaseRefEq ucref1 ucref2 then Expr.Op(op1, tinst1,List.map2 (CombineRefutations g) flds1 flds2,m1) (* Choose the greater of the two ucrefs based on name ordering *) elif ucref1.CaseName < ucref2.CaseName then r2 else r1 | Expr.Op(op1, tinst1,flds1,m1), Expr.Op(_, _,flds2,_) -> Expr.Op(op1, tinst1,List.map2 (CombineRefutations g) flds1 flds2,m1) | Expr.Const(c1, m1, ty1), Expr.Const(c2,_,_) -> let c12 = // Make sure longer strings are greater, not the case in the default ordinal comparison // This is needed because the individual counter examples make longer strings let MaxStrings s1 s2 = let c = compare (String.length s1) (String.length s2) if c < 0 then s2 elif c > 0 then s1 elif s1 < s2 then s2 else s1 match c1,c2 with | Const.String(s1), Const.String(s2) -> Const.String(MaxStrings s1 s2) | Const.Decimal(s1), Const.Decimal(s2) -> Const.Decimal(max s1 s2) | _ -> max c1 c2 (* REVIEW: we couldd return a better enumeration literal field here if a field matches one of the enumeration cases *) Expr.Const(c12, m1, ty1) | _ -> r1 let ShowCounterExample g denv m refuted = try let refutations = refuted |> List.collect (function RefutedWhenClause -> [] | (RefutedInvestigation(path,discrim)) -> [RefuteDiscrimSet g m path discrim]) let counterExample = match refutations with | [] -> raise CannotRefute | h :: t -> if verbose then dprintf "h = %s\n" (Layout.showL (exprL h)); List.fold (CombineRefutations g) h t let text = Layout.showL (NicePrint.dataExprL denv counterExample) let failingWhenClause = refuted |> List.exists (function RefutedWhenClause -> true | _ -> false) Some(text,failingWhenClause) with | CannotRefute -> None | e -> warning(InternalError(sprintf "" (e.ToString()),m)); None //--------------------------------------------------------------------------- // Basic problem specification //--------------------------------------------------------------------------- type RuleNumber = int type Active = Active of Path * SubExprOfInput * Pattern type Actives = Active list type Frontier = Frontier of RuleNumber * Actives * ValMap type InvestigationPoint = Investigation of RuleNumber * Test * Path // Note: actives must be a SortedDictionary // REVIEW: improve these data structures, though surprisingly these functions don't tend to show up // on profiling runs let rec isMemOfActives p1 actives = match actives with | [] -> false | (Active(p2,_,_)) :: rest -> pathEq p1 p2 || isMemOfActives p1 rest let rec lookupActive x l = match l with | [] -> raise (KeyNotFoundException()) | (Active(h,r1,r2)::t) -> if pathEq x h then (r1,r2) else lookupActive x t let rec removeActive x l = match l with | [] -> [] | ((Active(h,_,_) as p) ::t) -> if pathEq x h then t else p:: removeActive x t //--------------------------------------------------------------------------- // Utilities //--------------------------------------------------------------------------- // tpinst is required because the pattern is specified w.r.t. generalized type variables. let getDiscrimOfPattern g tpinst t = match t with | TPat_null _m -> Some(Test.IsNull) | TPat_isinst (srcty,tgty,_,_m) -> Some(Test.IsInst (instType tpinst srcty,instType tpinst tgty)) | TPat_exnconstr(tcref,_,_m) -> Some(Test.IsInst (g.exn_ty,mkAppTy tcref [])) | TPat_const (c,_m) -> Some(Test.Const c) | TPat_unioncase (c,tyargs',_,_m) -> Some(Test.UnionCase (c,instTypes tpinst tyargs')) | TPat_array (args,ty,_m) -> Some(Test.ArrayLength (args.Length,ty)) | TPat_query ((pexp,resTys,apatVrefOpt,idx,apinfo),_,_m) -> Some(Test.ActivePatternCase (pexp, instTypes tpinst resTys, apatVrefOpt,idx,apinfo)) | _ -> None let constOfDiscrim discrim = match discrim with | Test.Const x -> x | _ -> failwith "not a const case" let constOfCase (c: DecisionTreeCase) = constOfDiscrim c.Discriminator /// Compute pattern identity let discrimsEq g d1 d2 = match d1,d2 with | Test.UnionCase (c1,_), Test.UnionCase(c2,_) -> g.unionCaseRefEq c1 c2 | Test.ArrayLength (n1,_), Test.ArrayLength(n2,_) -> (n1=n2) | Test.Const c1, Test.Const c2 -> (c1=c2) | Test.IsNull , Test.IsNull -> true | Test.IsInst (srcty1,tgty1), Test.IsInst (srcty2,tgty2) -> typeEquiv g srcty1 srcty2 && typeEquiv g tgty1 tgty2 | Test.ActivePatternCase (_,_,vrefOpt1,n1,_), Test.ActivePatternCase (_,_,vrefOpt2,n2,_) -> match vrefOpt1, vrefOpt2 with | Some (vref1, tinst1), Some (vref2, tinst2) -> valRefEq g vref1 vref2 && n1 = n2 && List.lengthsEqAndForall2 (typeEquiv g) tinst1 tinst2 | _ -> false (* for equality purposes these are considered unequal! This is because adhoc computed patterns have no identity. *) | _ -> false /// Redundancy of 'isinst' patterns let isDiscrimSubsumedBy g amap m d1 d2 = (discrimsEq g d1 d2) || (match d1,d2 with | Test.IsInst (_,tgty1), Test.IsInst (_,tgty2) -> TypeDefinitelySubsumesTypeNoCoercion 0 g amap m tgty2 tgty1 | _ -> false) /// Choose a set of investigations that can be performed simultaneously let rec chooseSimultaneousEdgeSet prevOpt f l = match l with | [] -> [],[] | h::t -> match f prevOpt h with | Some x,_ -> let l,r = chooseSimultaneousEdgeSet (Some x) f t x :: l, r | None,_cont -> let l,r = chooseSimultaneousEdgeSet prevOpt f t l, h :: r /// Can we represent a integer discrimination as a 'switch' let canCompactConstantClass c = match c with | Const.SByte _ | Const.Int16 _ | Const.Int32 _ | Const.Byte _ | Const.UInt16 _ | Const.UInt32 _ | Const.Char _ -> true | _ -> false /// Can two discriminators in a 'column' be decided simultaneously? let discrimsHaveSameSimultaneousClass g d1 d2 = match d1,d2 with | Test.Const _, Test.Const _ | Test.IsNull , Test.IsNull | Test.ArrayLength _, Test.ArrayLength _ | Test.UnionCase _, Test.UnionCase _ -> true | Test.IsInst _, Test.IsInst _ -> false | Test.ActivePatternCase (_,_,apatVrefOpt1,_,_), Test.ActivePatternCase (_,_,apatVrefOpt2,_,_) -> match apatVrefOpt1, apatVrefOpt2 with | Some (vref1, tinst1), Some (vref2, tinst2) -> valRefEq g vref1 vref2 && List.lengthsEqAndForall2 (typeEquiv g) tinst1 tinst2 | _ -> false (* for equality purposes these are considered different classes of discriminators! This is because adhoc computed patterns have no identity! *) | _ -> false /// Decide the next pattern to investigate let ChooseInvestigationPointLeftToRight frontiers = match frontiers with | Frontier (_i,actives,_) ::_t -> let rec choose l = match l with | [] -> failwith "ChooseInvestigationPointLeftToRight: no non-immediate patterns in first rule" | (Active(_,_,(TPat_null _ | TPat_isinst _ | TPat_exnconstr _ | TPat_unioncase _ | TPat_array _ | TPat_const _ | TPat_query _ | TPat_range _)) as active) :: _ -> active | _ :: t -> choose t choose actives | [] -> failwith "ChooseInvestigationPointLeftToRight: no frontiers!" #if OPTIMIZE_LIST_MATCHING // This is an initial attempt to remove extra typetests/castclass for simple list pattern matching "match x with h::t -> ... | [] -> ..." // The problem with this technique is that it creates extra locals which inhibit the process of converting pattern matches into linear let bindings. let (|ListConsDiscrim|_|) g = function | (Test.UnionCase (ucref,tinst)) (* check we can use a simple 'isinst' instruction *) when tyconRefEq g ucref.TyconRef g.list_tcr_canon & ucref.CaseName = "op_ColonColon" -> Some tinst | _ -> None let (|ListEmptyDiscrim|_|) g = function | (Test.UnionCase (ucref,tinst)) (* check we can use a simple 'isinst' instruction *) when tyconRefEq g ucref.TyconRef g.list_tcr_canon & ucref.CaseName = "op_Nil" -> Some tinst | _ -> None #endif /// Build a dtree, equivalent to: TDSwitch("expr",edges,default,m) /// /// Once we've chosen a particular active to investigate, we compile the /// set of edges affected by this investigation into a switch. /// /// - For Test.ActivePatternCase(...,None,...) there is only one edge /// /// - For Test.IsInst there are multiple edges, which we can't deal with /// one switch, so we make an iterated if-then-else to cover the cases. We /// should probably adjust the code to only choose one edge in this case. /// /// - Compact integer switches become a single switch. Non-compact integer /// switches, string switches and floating point switches are treated in the /// same way as Test.IsInst. let rec BuildSwitch resPreBindOpt g expr edges dflt m = if verbose then dprintf "--> BuildSwitch@%a, #edges = %A, dflt.IsSome = %A\n" outputRange m (List.length edges) (Option.isSome dflt); match edges,dflt with | [], None -> failwith "internal error: no edges and no default" | [], Some dflt -> dflt (* NOTE: first time around, edges<>[] *) // Optimize the case where the match always succeeds | [TCase(_,tree)], None -> tree // 'isinst' tests where we have stored the result of the 'isinst' in a variable // In this case the 'expr' already holds the result of the 'isinst' test. | (TCase(Test.IsInst _,success)):: edges, dflt when isSome resPreBindOpt -> TDSwitch(expr,[TCase(Test.IsNull,BuildSwitch None g expr edges dflt m)],Some success,m) // isnull and isinst tests | (TCase((Test.IsNull | Test.IsInst _),_) as edge):: edges, dflt -> TDSwitch(expr,[edge],Some (BuildSwitch resPreBindOpt g expr edges dflt m),m) #if OPTIMIZE_LIST_MATCHING // 'cons/nil' tests where we have stored the result of the cons test in an 'isinst' in a variable // In this case the 'expr' already holds the result of the 'isinst' test. | [TCase(ListConsDiscrim g tinst, consCase)], Some emptyCase | [TCase(ListEmptyDiscrim g tinst, emptyCase)], Some consCase | [TCase(ListEmptyDiscrim g _, emptyCase); TCase(ListConsDiscrim g tinst, consCase)], None | [TCase(ListConsDiscrim g tinst, consCase); TCase(ListEmptyDiscrim g _, emptyCase)], None when isSome resPreBindOpt -> TDSwitch(expr, [TCase(Test.IsNull, emptyCase)], Some consCase, m) #endif // All these should also always have default cases | TCase(Test.Const (Const.Decimal _ | Const.String _ | Const.Single _ | Const.Double _ | Const.SByte _ | Const.Byte _| Const.Int16 _ | Const.UInt16 _ | Const.Int32 _ | Const.UInt32 _ | Const.Int64 _ | Const.UInt64 _ | Const.IntPtr _ | Const.UIntPtr _ | Const.Char _ ),_) :: _, None -> error(InternalError("inexhaustive match - need a default cases!",m)) // Split string, float, uint64, int64, unativeint, nativeint matches into serial equality tests | TCase((Test.ArrayLength _ | Test.Const (Const.Single _ | Const.Double _ | Const.String _ | Const.Decimal _ | Const.Int64 _ | Const.UInt64 _ | Const.IntPtr _ | Const.UIntPtr _)),_) :: _, Some dflt -> List.foldBack (fun (TCase(discrim,tree)) sofar -> let testexpr = expr let testexpr = match discrim with | Test.ArrayLength(n,_) -> let _v,vexp,bind = mkCompGenLocalAndInvisbleBind g "testExpr" m testexpr mkLetBind m bind (mkLazyAnd g m (mkNonNullTest g m vexp) (mkILAsmCeq g m (mkLdlen g m vexp) (mkInt g m n))) | Test.Const (Const.String _ as c) -> mkCallEqualsOperator g m g.string_ty testexpr (Expr.Const(c,m,g.string_ty)) | Test.Const (Const.Decimal _ as c) -> mkCallEqualsOperator g m g.decimal_ty testexpr (Expr.Const(c,m,g.decimal_ty)) | Test.Const ((Const.Double _ | Const.Single _ | Const.Int64 _ | Const.UInt64 _ | Const.IntPtr _ | Const.UIntPtr _) as c) -> mkILAsmCeq g m testexpr (Expr.Const(c,m,tyOfExpr g testexpr)) | _ -> error(InternalError("strange switch",m)) mkBoolSwitch m testexpr tree sofar) edges dflt // Split integer and char matches into compact fragments which will themselves become switch statements. | TCase(Test.Const c,_) :: _, Some dflt when canCompactConstantClass c -> let edgeCompare c1 c2 = match constOfCase c1,constOfCase c2 with | (Const.SByte i1),(Const.SByte i2) -> compare i1 i2 | (Const.Int16 i1),(Const.Int16 i2) -> compare i1 i2 | (Const.Int32 i1),(Const.Int32 i2) -> compare i1 i2 | (Const.Byte i1),(Const.Byte i2) -> compare i1 i2 | (Const.UInt16 i1),(Const.UInt16 i2) -> compare i1 i2 | (Const.UInt32 i1),(Const.UInt32 i2) -> compare i1 i2 | (Const.Char c1),(Const.Char c2) -> compare c1 c2 | _ -> failwith "illtyped term during pattern compilation" let edges' = List.sortWith edgeCompare edges let rec compactify curr edges = if debug then dprintf "--> compactify@%a\n" outputRange m; match curr,edges with | None,[] -> [] | Some last,[] -> [List.rev last] | None,h::t -> compactify (Some [h]) t | Some (prev::moreprev),h::t -> match constOfCase prev,constOfCase h with | Const.SByte iprev,Const.SByte inext when int32(iprev) + 1 = int32 inext -> compactify (Some (h::prev::moreprev)) t | Const.Int16 iprev,Const.Int16 inext when int32(iprev) + 1 = int32 inext -> compactify (Some (h::prev::moreprev)) t | Const.Int32 iprev,Const.Int32 inext when iprev+1 = inext -> compactify (Some (h::prev::moreprev)) t | Const.Byte iprev,Const.Byte inext when int32(iprev) + 1 = int32 inext -> compactify (Some (h::prev::moreprev)) t | Const.UInt16 iprev,Const.UInt16 inext when int32(iprev)+1 = int32 inext -> compactify (Some (h::prev::moreprev)) t | Const.UInt32 iprev,Const.UInt32 inext when int32(iprev)+1 = int32 inext -> compactify (Some (h::prev::moreprev)) t | Const.Char cprev,Const.Char cnext when (int32 cprev + 1 = int32 cnext) -> compactify (Some (h::prev::moreprev)) t | _ -> (List.rev (prev::moreprev)) :: compactify None edges | _ -> failwith "internal error: compactify" let edgeGroups = compactify None edges' (edgeGroups, dflt) ||> List.foldBack (fun edgeGroup sofar -> TDSwitch(expr,edgeGroup,Some sofar,m)) // For a total pattern match, run the active pattern, bind the result and // recursively build a switch in the choice type | (TCase(Test.ActivePatternCase _,_)::_), _ -> error(InternalError("Test.ActivePatternCase should have been eliminated",m)); // For a complete match, optimize one test to be the default | (TCase(_,tree)::rest), None -> TDSwitch (expr,rest,Some tree,m) // Otherwise let codegen make the choices | _ -> TDSwitch (expr,edges,dflt,m) #if DEBUG let rec layoutPat pat = if debug then dprintf "--> layoutPat\n"; match pat with | TPat_query (_,pat,_) -> Layout.(--) (Layout.wordL "query") (layoutPat pat) | TPat_wild _ -> Layout.wordL "wild" | TPat_as _ -> Layout.wordL "var" | TPat_tuple (pats, _, _) | TPat_array (pats, _, _) -> Layout.bracketL (Layout.tupleL (List.map layoutPat pats)) | _ -> Layout.wordL "?" let layoutPath _p = Layout.wordL "" let layoutActive (Active (path, _subexpr, pat)) = Layout.(--) (Layout.wordL "Active") (Layout.tupleL [layoutPath path; layoutPat pat]) let layoutFrontier (Frontier (i,actives,_)) = Layout.(--) (Layout.wordL "Frontier") (Layout.tupleL [intL i; Layout.listL layoutActive actives]) #endif let mkFrontiers investigations i = List.map (fun (actives,valMap) -> Frontier(i,actives,valMap)) investigations let getRuleIndex (Frontier (i,_active,_valMap)) = i /// Is a pattern a partial pattern? let rec isPatternPartial p = match p with | TPat_query ((_,_,_,_,apinfo),p,_m) -> not apinfo.IsTotal || isPatternPartial p | TPat_const _ -> false | TPat_wild _ -> false | TPat_as (p,_,_) -> isPatternPartial p | TPat_disjs (ps,_) | TPat_conjs(ps,_) | TPat_tuple (ps,_,_) | TPat_exnconstr(_,ps,_) | TPat_array (ps,_,_) | TPat_unioncase (_,_,ps,_) | TPat_recd (_,_,ps,_) -> List.exists isPatternPartial ps | TPat_range _ -> false | TPat_null _ -> false | TPat_isinst _ -> false let rec erasePartialPatterns inpp = match inpp with | TPat_query ((expr,resTys,apatVrefOpt,idx,apinfo),p,m) -> if apinfo.IsTotal then TPat_query ((expr,resTys,apatVrefOpt,idx,apinfo),erasePartialPatterns p,m) else TPat_disjs ([],m) (* always fail *) | TPat_as (p,x,m) -> TPat_as (erasePartialPatterns p,x,m) | TPat_disjs (ps,m) -> TPat_disjs(erasePartials ps, m) | TPat_conjs(ps,m) -> TPat_conjs(erasePartials ps, m) | TPat_tuple (ps,x,m) -> TPat_tuple(erasePartials ps, x, m) | TPat_exnconstr(x,ps,m) -> TPat_exnconstr(x,erasePartials ps,m) | TPat_array (ps,x,m) -> TPat_array (erasePartials ps,x,m) | TPat_unioncase (x,y,ps,m) -> TPat_unioncase (x,y,erasePartials ps,m) | TPat_recd (x,y,ps,m) -> TPat_recd (x,y,List.map erasePartialPatterns ps,m) | TPat_const _ | TPat_wild _ | TPat_range _ | TPat_null _ | TPat_isinst _ -> inpp and erasePartials inps = List.map erasePartialPatterns inps //--------------------------------------------------------------------------- // The algorithm //--------------------------------------------------------------------------- type EdgeDiscrim = EdgeDiscrim of int * Test * range let getDiscrim (EdgeDiscrim(_,discrim,_)) = discrim let CompilePatternBasic g denv amap exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (topv,topgtvs) (clausesL: TypedMatchClause list) inputTy resultTy = // Add the targets to a match builder // Note the input expression has already been evaluated and saved into a variable. // Hence no need for a new sequence point. let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,exprm) clausesL |> List.iteri (fun _i c -> mbuilder.AddTarget c.Target |> ignore) // Add the incomplete or rethrow match clause on demand, printing a // warning if necessary (only if it is ever exercised) let incompleteMatchClauseOnce = ref None let getIncompleteMatchClause (refuted) = // This is lazy because emit a // warning when the lazy thunk gets evaluated match !incompleteMatchClauseOnce with | None -> (* Emit the incomplete match warning *) if warnOnIncomplete then match actionOnFailure with | ThrowIncompleteMatchException -> warning (MatchIncomplete (false,ShowCounterExample g denv matchm refuted, matchm)); | IgnoreWithWarning -> warning (MatchIncomplete (true,ShowCounterExample g denv matchm refuted, matchm)); | _ -> () let throwExpr = match actionOnFailure with | FailFilter -> // Return 0 from the .NET exception filter mkInt g matchm 0 | Rethrow -> // Rethrow unmatched try-catch exn. No sequence point at the target since its not // real code. mkReraise matchm resultTy | Throw -> // We throw instead of rethrow on unmatched try-catch in a computation expression. But why? // Because this isn't a real .NET exception filter/handler but just a function we're passing // to a computation expression builder to simulate one. mkThrow matchm resultTy (exprForVal matchm topv) | ThrowIncompleteMatchException -> mkThrow matchm resultTy (mkExnExpr(mk_MFCore_tcref g.fslibCcu "MatchFailureException", [ mkString g matchm matchm.FileName; mkInt g matchm matchm.StartLine; mkInt g matchm matchm.StartColumn],matchm)) | IgnoreWithWarning -> mkUnit g matchm // We don't emit a sequence point at any of the above cases because they don't correspond to // user code. // // Note we don't emit sequence points at either the succeeding or failing // targets of filters since if the exception is filtered successfully then we // will run the handler and hit the sequence point there. // That sequence point will have the pattern variables bound, which is exactly what we want. let tg = TTarget(FlatList.empty,throwExpr,SuppressSequencePointAtTarget ) mbuilder.AddTarget tg |> ignore; let clause = TClause(TPat_wild matchm,None,tg,matchm) incompleteMatchClauseOnce := Some(clause); clause | Some c -> c // Helpers to get the variables bound at a target. We conceptually add a dummy clause that will always succeed with a "throw" let clausesA = Array.ofList clausesL let nclauses = clausesA.Length let GetClause i refuted = if i < nclauses then clausesA.[i] elif i = nclauses then getIncompleteMatchClause(refuted) else failwith "GetClause" let GetValsBoundByClause i refuted = (GetClause i refuted).BoundVals let GetWhenGuardOfClause i refuted = (GetClause i refuted).GuardExpr // Different uses of parameterized active patterns have different identities as far as paths // are concerned. Here we generate unique numbers that are completely different to any stamp // by usig negative numbers. let genUniquePathId() = - (newUnique()) // Build versions of these functions which apply a dummy instantiation to the overall type arguments let GetSubExprOfInput,getDiscrimOfPattern = let tyargs = List.map (fun _ -> g.unit_ty) topgtvs let unit_tpinst = mkTyparInst topgtvs tyargs GetSubExprOfInput g (topgtvs,tyargs,unit_tpinst), getDiscrimOfPattern g unit_tpinst // The main recursive loop of the pattern match compiler let rec InvestigateFrontiers refuted frontiers = if debug then dprintf "frontiers = %s\n" (String.concat ";" (List.map (getRuleIndex >> string) frontiers)); match frontiers with | [] -> failwith "CompilePattern:compile - empty clauses: at least the final clause should always succeed" | (Frontier (i,active,valMap)) :: rest -> // Check to see if we've got a succeeding clause. There may still be a 'when' condition for the clause match active with | [] -> CompileSuccessPointAndGuard i refuted valMap rest | _ -> if debug then dprintf "Investigating based on rule %d, #active = %d\n" i (List.length active); (* Otherwise choose a point (i.e. a path) to investigate. *) let (Active(path,subexpr,pat)) = ChooseInvestigationPointLeftToRight frontiers match pat with // All these constructs should have been eliminated in BindProjectionPattern | TPat_as _ | TPat_tuple _ | TPat_wild _ | TPat_disjs _ | TPat_conjs _ | TPat_recd _ -> failwith "Unexpected pattern" // Leaving the ones where we have real work to do | _ -> if debug then dprintf "chooseSimultaneousEdgeSet\n"; let simulSetOfEdgeDiscrims,fallthroughPathFrontiers = ChooseSimultaneousEdges frontiers path let resPreBindOpt, bindOpt = ChoosePreBinder simulSetOfEdgeDiscrims subexpr // For each case, recursively compile the residue decision trees that result if that case successfully matches let simulSetOfCases, _ = CompileSimultaneousSet frontiers path refuted subexpr simulSetOfEdgeDiscrims resPreBindOpt assert (nonNil(simulSetOfCases)); if debug then dprintf "#fallthroughPathFrontiers = %d, #simulSetOfEdgeDiscrims = %d\n" (List.length fallthroughPathFrontiers) (List.length simulSetOfEdgeDiscrims); dprintf "Making cases for each discriminator...\n"; dprintf "#edges = %d\n" (List.length simulSetOfCases); dprintf "Checking for completeness of edge set from earlier investigation of rule %d, #active = %d\n" i (List.length active); // Work out what the default/fall-through tree looks like, is any // Check if match is complete, if so optimize the default case away. let defaultTreeOpt : DecisionTree option = CompileFallThroughTree fallthroughPathFrontiers path refuted simulSetOfCases // OK, build the whole tree and whack on the binding if any let finalDecisionTree = let inpExprToSwitch = (match resPreBindOpt with Some vexp -> vexp | None -> GetSubExprOfInput subexpr) let tree = BuildSwitch resPreBindOpt g inpExprToSwitch simulSetOfCases defaultTreeOpt matchm match bindOpt with | None -> tree | Some bind -> TDBind (bind,tree) finalDecisionTree and CompileSuccessPointAndGuard i refuted valMap rest = if debug then dprintf "generating success node for rule %d\n" i; let vs2 = GetValsBoundByClause i refuted let es2 = vs2 |> FlatList.map (fun v -> match valMap.TryFind v with | None -> error(Error(FSComp.SR.patcMissingVariable(v.DisplayName),v.Range)) | Some res -> res) let rhs' = TDSuccess(es2, i) match GetWhenGuardOfClause i refuted with | Some whenExpr -> if debug then dprintf "generating success node for rule %d, with 'when' clause\n" i; let m = whenExpr.Range // SEQUENCE POINTS: REVIEW: Build a sequence point at 'when' let whenExpr = mkLetsFromBindings m (mkInvisibleFlatBindings vs2 es2) whenExpr // We must duplicate both the bindings and the guard expression to ensure uniqueness of bound variables. // This is because guards and bindings can end up being compiled multiple times when "or" patterns are used. // // let whenExpr = copyExpr g CloneAll whenExpr // // However, we are not allowed to copy expressions until type checking is complete, because this // would lose recursive fixup points within the expressions (see FSharp 1.0 bug 4821). mkBoolSwitch m whenExpr rhs' (InvestigateFrontiers (RefutedWhenClause::refuted) rest) | None -> rhs' /// Select the set of discriminators which we can handle in one test, or as a series of /// iterated tests, e.g. in the case of TPat_isinst. Ensure we only take at most one class of TPat_query(_) at a time. /// Record the rule numbers so we know which rule the TPat_query cam from, so that when we project through /// the frontier we only project the right rule. and ChooseSimultaneousEdges frontiers path = if debug then dprintf "chooseSimultaneousEdgeSet\n"; frontiers |> chooseSimultaneousEdgeSet None (fun prevOpt (Frontier (i',active',_)) -> if isMemOfActives path active' then let p = lookupActive path active' |> snd match getDiscrimOfPattern p with | Some discrim -> if (match prevOpt with None -> true | Some (EdgeDiscrim(_,discrimPrev,_)) -> discrimsHaveSameSimultaneousClass g discrim discrimPrev) then ( if debug then dprintf "taking rule %d\n" i'; Some (EdgeDiscrim(i',discrim,p.Range)),true ) else None,false | None -> None,true else None,true) and ChoosePreBinder simulSetOfEdgeDiscrims subexpr = match simulSetOfEdgeDiscrims with // Very simple 'isinst' tests: put the result of 'isinst' in a local variable // // That is, transform // 'if istype e then ...unbox e .... ' // into // 'let v = isinst e in .... if nonnull v then ...v .... ' // // This is really an optimization that could be done more effectively in opt.fs // if we flowed a bit of information through | EdgeDiscrim(_i',(Test.IsInst (_srcty,tgty)),m) :: _rest (* check we can use a simple 'isinst' instruction *) when canUseTypeTestFast g tgty && isNil topgtvs -> let v,vexp = mkCompGenLocal m "typeTestResult" tgty if topv.IsMemberOrModuleBinding then AdjustValToTopVal v topv.ActualParent ValReprInfo.emptyValData; let argexp = GetSubExprOfInput subexpr let appexp = mkIsInst tgty argexp matchm Some(vexp),Some(mkInvisibleBind v appexp) #if OPTIMIZE_LIST_MATCHING | [EdgeDiscrim(_, ListConsDiscrim g tinst,m); EdgeDiscrim(_, ListEmptyDiscrim g _, _)] | [EdgeDiscrim(_, ListEmptyDiscrim g _, _); EdgeDiscrim(_, ListConsDiscrim g tinst, m)] | [EdgeDiscrim(_, ListConsDiscrim g tinst, m)] | [EdgeDiscrim(_, ListEmptyDiscrim g tinst, m)] (* check we can use a simple 'isinst' instruction *) when isNil topgtvs -> let ucaseTy = (mkProvenUnionCaseTy g.cons_ucref tinst) let v,vexp = mkCompGenLocal m "unionTestResult" ucaseTy if topv.IsMemberOrModuleBinding then AdjustValToTopVal v topv.ActualParent ValReprInfo.emptyValData; let argexp = GetSubExprOfInput subexpr let appexp = mkIsInst ucaseTy argexp matchm Some vexp,Some (mkInvisibleBind v appexp) #endif // Active pattern matches: create a variable to hold the results of executing the active pattern. | (EdgeDiscrim(_,(Test.ActivePatternCase(pexp,resTys,_resPreBindOpt,_,apinfo)),m) :: _) -> if debug then dprintf "Building result var for active pattern...\n"; if nonNil topgtvs then error(InternalError("Unexpected generalized type variables when compiling an active pattern",m)); let rty = apinfo.ResultType g m resTys let v,vexp = mkCompGenLocal m "activePatternResult" rty if topv.IsMemberOrModuleBinding then AdjustValToTopVal v topv.ActualParent ValReprInfo.emptyValData; let argexp = GetSubExprOfInput subexpr let appexp = mkApps g ((pexp,tyOfExpr g pexp), [], [argexp],m) Some(vexp),Some(mkInvisibleBind v appexp) | _ -> None,None and CompileSimultaneousSet frontiers path refuted subexpr simulSetOfEdgeDiscrims (resPreBindOpt: Expr option) = ([],simulSetOfEdgeDiscrims) ||> List.collectFold (fun taken (EdgeDiscrim(i',discrim,m)) -> // Check to see if we've already collected the edge for this case, in which case skip it. if List.exists (isDiscrimSubsumedBy g amap m discrim) taken then // Skip this edge: it is refuted ([],taken) else // Make a resVar to hold the results of the successful "proof" that a union value is // a successful union case. That is, transform // 'match v with // | A _ -> ... // | B _ -> ...' // into // 'match v with // | A _ -> let vA = (v ~~> A) in .... // | B _ -> let vB = (v ~~> B) in .... ' // // Only do this for union cases that actually have some fields and with more than one case let resPostBindOpt,ucaseBindOpt = match discrim with | Test.UnionCase (ucref, tinst) when #if OPTIMIZE_LIST_MATCHING isNone resPreBindOpt && #endif (isNil topgtvs && not topv.IsMemberOrModuleBinding && ucref.UnionCase.RecdFields.Length >= 1 && ucref.Tycon.UnionCasesArray.Length > 1) -> let v,vexp = mkCompGenLocal m "unionCase" (mkProvenUnionCaseTy ucref tinst) let argexp = GetSubExprOfInput subexpr let appexp = mkUnionCaseProof(argexp, ucref,tinst,m) Some(vexp),Some(mkInvisibleBind v appexp) | _ -> None,None // Convert active pattern edges to tests on results data let discrim' = match discrim with | Test.ActivePatternCase(_pexp,resTys,_apatVrefOpt,idx,apinfo) -> let aparity = apinfo.Names.Length let total = apinfo.IsTotal if not total && aparity > 1 then error(Error(FSComp.SR.patcPartialActivePatternsGenerateOneResult(),m)); if not total then Test.UnionCase(mkSomeCase g,resTys) elif aparity <= 1 then Test.Const(Const.Unit) else Test.UnionCase(mkChoiceCaseRef g m aparity idx,resTys) | _ -> discrim // Project a successful edge through the frontiers. let investigation = Investigation(i',discrim,path) let frontiers = frontiers |> List.collect (GenerateNewFrontiersAfterSucccessfulInvestigation resPreBindOpt resPostBindOpt investigation) let tree = InvestigateFrontiers refuted frontiers // Bind the resVar for the union case, if we have one let tree = match ucaseBindOpt with | None -> tree | Some bind -> TDBind (bind,tree) // Return the edge let edge = TCase(discrim',tree) [edge], (discrim :: taken) ) and CompileFallThroughTree fallthroughPathFrontiers path refuted (simulSetOfCases: DecisionTreeCase list) = let simulSetOfDiscrims = simulSetOfCases |> List.map (fun c -> c.Discriminator) let isRefuted (Frontier (_i',active',_)) = isMemOfActives path active' && let p = lookupActive path active' |> snd match getDiscrimOfPattern p with | Some(discrim) -> List.exists (isDiscrimSubsumedBy g amap exprm discrim) simulSetOfDiscrims | None -> false match simulSetOfDiscrims with | Test.Const (Const.Bool _b) :: _ when simulSetOfCases.Length = 2 -> None | Test.Const (Const.Unit) :: _ -> None | Test.UnionCase (ucref,_) :: _ when simulSetOfCases.Length = ucref.TyconRef.UnionCasesArray.Length -> None | Test.ActivePatternCase _ :: _ -> error(InternalError("Test.ActivePatternCase should have been eliminated",matchm)) | _ -> let fallthroughPathFrontiers = List.filter (isRefuted >> not) fallthroughPathFrontiers (* Add to the refuted set *) let refuted = (RefutedInvestigation(path,simulSetOfDiscrims)) :: refuted if debug then dprintf "Edge set was incomplete. Compiling remaining cases\n"; match fallthroughPathFrontiers with | [] -> None | _ -> Some(InvestigateFrontiers refuted fallthroughPathFrontiers) // Build a new frontire that represents the result of a successful investigation // at rule point (i',discrim,path) and GenerateNewFrontiersAfterSucccessfulInvestigation resPreBindOpt resPostBindOpt (Investigation(i',discrim,path)) (Frontier (i, active,valMap) as frontier) = if debug then dprintf "projecting success of investigation encompassing rule %d through rule %d \n" i' i; if (isMemOfActives path active) then let (SubExpr(accessf,ve)),pat = lookupActive path active if debug then dprintf "active...\n"; let mkSubFrontiers path accessf' active' argpats pathBuilder = let mkSubActive j p = let newSubExpr = SubExpr(accessf' j, ve) let newPath = pathBuilder path j Active(newPath, newSubExpr, p) let newActives = List.mapi mkSubActive argpats let investigations = BindProjectionPatterns newActives (active', valMap) mkFrontiers investigations i let active' = removeActive path active match pat with | TPat_wild _ | TPat_as _ | TPat_tuple _ | TPat_disjs _ | TPat_conjs _ | TPat_recd _ -> failwith "Unexpected projection pattern" | TPat_query ((_,resTys,apatVrefOpt,idx,apinfo),p,m) -> if apinfo.IsTotal then if (isNone apatVrefOpt && i = i') || (discrimsEq g discrim (Option.get (getDiscrimOfPattern pat))) then let aparity = apinfo.Names.Length let accessf' j tpinst _e' = if aparity <= 1 then Option.get resPreBindOpt else let ucref = mkChoiceCaseRef g m aparity idx mkUnionCaseFieldGetUnproven(Option.get resPreBindOpt,ucref,instTypes tpinst resTys,j,exprm) mkSubFrontiers path accessf' active' [p] (fun path j -> PathQuery(path,int64 j)) elif isNone apatVrefOpt then // Successful active patterns don't refute other patterns [frontier] else [] else if i = i' then let accessf' _j tpinst _ = mkUnionCaseFieldGetUnproven(Option.get resPreBindOpt, mkSomeCase g, instTypes tpinst resTys, 0, exprm) mkSubFrontiers path accessf' active' [p] (fun path j -> PathQuery(path,int64 j)) else // Successful active patterns don't refute other patterns [frontier] | TPat_unioncase (ucref1, tyargs, argpats,_) -> match discrim with | Test.UnionCase (ucref2, tinst) when g.unionCaseRefEq ucref1 ucref2 -> let accessf' j tpinst e' = #if OPTIMIZE_LIST_MATCHING match resPreBindOpt with | Some e -> mkUnionCaseFieldGetProven(e,ucref1,tinst,j,exprm) | None -> #endif match resPostBindOpt with | Some e -> mkUnionCaseFieldGetProven(e,ucref1,tinst,j,exprm) | None -> mkUnionCaseFieldGetUnproven(accessf tpinst e',ucref1,instTypes tpinst tyargs,j,exprm) mkSubFrontiers path accessf' active' argpats (fun path j -> PathUnionConstr(path,ucref1,tyargs,j)) | Test.UnionCase _ -> // Successful union case tests DO refute all other union case tests (no overlapping union cases) [] | _ -> // Successful union case tests don't refute any other patterns [frontier] | TPat_array (argpats,ty,_) -> match discrim with | Test.ArrayLength (n,_) when List.length argpats = n -> let accessf' j tpinst e' = mkCallArrayGet g exprm ty (accessf tpinst e') (mkInt g exprm j) mkSubFrontiers path accessf' active' argpats (fun path j -> PathArray(path,ty,List.length argpats,j)) // Successful length tests refute all other lengths | Test.ArrayLength _ -> [] | _ -> [frontier] | TPat_exnconstr (ecref, argpats,_) -> match discrim with | Test.IsInst (_srcTy,tgtTy) when typeEquiv g (mkAppTy ecref []) tgtTy -> let accessf' j tpinst e' = mkExnCaseFieldGet(accessf tpinst e',ecref,j,exprm) mkSubFrontiers path accessf' active' argpats (fun path j -> PathExnConstr(path,ecref,j)) | _ -> // Successful type tests against one sealed type refute all other sealed types // REVIEW: Successful type tests against one sealed type should refute all other sealed types [frontier] | TPat_isinst (_srcty,tgtTy1,pbindOpt,_) -> match discrim with | Test.IsInst (_srcTy,tgtTy2) when typeEquiv g tgtTy1 tgtTy2 -> match pbindOpt with | Some pbind -> let accessf' tpinst e' = // Fetch the result from the place where we saved it, if possible match resPreBindOpt with | Some e -> e | _ -> // Otherwise call the helper mkCallUnboxFast g exprm (instType tpinst tgtTy1) (accessf tpinst e') let (v,e') = BindSubExprOfInput g amap topgtvs pbind exprm (SubExpr(accessf',ve)) [Frontier (i, active', valMap.Add v e' )] | None -> [Frontier (i, active', valMap)] | _ -> // Successful type tests against other types don't refute anything // REVIEW: Successful type tests against one sealed type should refute all other sealed types [frontier] | TPat_null _ -> match discrim with | Test.IsNull -> [Frontier (i, active',valMap)] | _ -> // Successful null tests don't refute any other patterns [frontier] | TPat_const (c1,_) -> match discrim with | Test.Const c2 when (c1=c2) -> [Frontier (i, active',valMap)] | Test.Const _ -> // All constants refute all other constants (no overlapping between constants!) [] | _ -> [frontier] | _ -> failwith "pattern compilation: GenerateNewFrontiersAfterSucccessfulInvestigation" else [frontier] and BindProjectionPattern (Active(path,subExpr,p) as inp) ((accActive,accValMap) as s) = let (SubExpr(accessf,ve)) = subExpr let mkSubActive pathBuilder accessf' j p' = Active(pathBuilder path j,SubExpr(accessf' j,ve),p') match p with | TPat_wild _ -> BindProjectionPatterns [] s | TPat_as(p',pbind,m) -> let (v,e') = BindSubExprOfInput g amap topgtvs pbind m subExpr BindProjectionPattern (Active(path,subExpr,p')) (accActive,accValMap.Add v e' ) | TPat_tuple(ps,tyargs,_m) -> let accessf' j tpinst e' = mkTupleFieldGet(accessf tpinst e',instTypes tpinst tyargs,j,exprm) let pathBuilder path j = PathTuple(path,tyargs,j) let newActives = List.mapi (mkSubActive pathBuilder accessf') ps BindProjectionPatterns newActives s | TPat_recd(tcref,tinst,ps,_m) -> let newActives = (ps,tcref.TrueInstanceFieldsAsRefList) ||> List.mapi2 (fun j p fref -> let accessf' fref _j tpinst e' = mkRecdFieldGet g (accessf tpinst e',fref,instTypes tpinst tinst,exprm) let pathBuilder path j = PathRecd(path,tcref,tinst,j) mkSubActive pathBuilder (accessf' fref) j p) BindProjectionPatterns newActives s | TPat_disjs(ps,_m) -> List.collect (fun p -> BindProjectionPattern (Active(path,subExpr,p)) s) ps | TPat_conjs(ps,_m) -> let newActives = List.mapi (mkSubActive (fun path j -> PathConj(path,j)) (fun _j -> accessf)) ps BindProjectionPatterns newActives s | TPat_range (c1,c2,m) -> let res = ref [] for i = int c1 to int c2 do res := BindProjectionPattern (Active(path,subExpr,TPat_const(Const.Char(char i),m))) s @ !res !res // Assign an identifier to each TPat_query based on our knowledge of the 'identity' of the active pattern, if any | TPat_query ((_,_,apatVrefOpt,_,_),_,_) -> let uniqId = match apatVrefOpt with None -> genUniquePathId() | Some (vref,_) -> vref.Stamp let inp = Active(PathQuery(path,uniqId),subExpr,p) [(inp::accActive, accValMap)] | _ -> [(inp::accActive, accValMap)] and BindProjectionPatterns ps s = List.foldBack (fun p sofar -> List.collect (BindProjectionPattern p) sofar) ps [s] (* The setup routine of the match compiler *) let frontiers = ((clausesL |> List.mapi (fun i c -> let initialSubExpr = SubExpr((fun _tpinst x -> x),(exprForVal topv.Range topv,topv)) let investigations = BindProjectionPattern (Active(PathEmpty(inputTy),initialSubExpr,c.Pattern)) ([],ValMap<_>.Empty) mkFrontiers investigations i) |> List.concat) @ mkFrontiers [([],ValMap<_>.Empty)] nclauses) let dtree = InvestigateFrontiers [] frontiers let targets = mbuilder.CloseTargets() // Report unused targets if warnOnUnused then let used = accTargetsOfDecisionTree dtree [] |> Hashset.ofList clausesL |> List.iteri (fun i c -> if not (used.ContainsKey i) then warning (RuleNeverMatched c.Range)) dtree,targets let isPartialOrWhenClause (c:TypedMatchClause) = isPatternPartial c.Pattern || c.GuardExpr.IsSome let rec CompilePattern g denv amap exprm matchm warnOnUnused actionOnFailure (topv,topgtvs) (clausesL: TypedMatchClause list) inputTy resultTy = match clausesL with | _ when List.exists isPartialOrWhenClause clausesL -> // Partial clauses cause major code explosion if treated naively // Hence treat any pattern matches with any partial clauses clause-by-clause // First make sure we generate at least some of the obvious incomplete match warnings. let warnOnUnused = false in (* we can't turn this on since we're pretending all partial's fail in order to control the complexity of this. *) let warnOnIncomplete = true let clausesPretendAllPartialFail = List.collect (fun (TClause(p,whenOpt,tg,m)) -> [TClause(erasePartialPatterns p,whenOpt,tg,m)]) clausesL let _ = CompilePatternBasic g denv amap exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (topv,topgtvs) clausesPretendAllPartialFail inputTy resultTy let warnOnIncomplete = false let rec atMostOnePartialAtATime clauses = if debug then dprintf "atMostOnePartialAtATime: #clauses = %A\n" clauses; match List.takeUntil isPartialOrWhenClause clauses with | l,[] -> CompilePatternBasic g denv amap exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (topv,topgtvs) l inputTy resultTy | l,(h :: t) -> // Add the partial clause doGroupWithAtMostOnePartial (l @ [h]) t and doGroupWithAtMostOnePartial group rest = if debug then dprintf "doGroupWithAtMostOnePartial: #group = %A\n" group; // Compile the remaining clauses let dtree,targets = atMostOnePartialAtATime rest // Make the expression that represents the remaining cases of the pattern match let expr = mkAndSimplifyMatch NoSequencePointAtInvisibleBinding exprm matchm resultTy dtree targets // If the remainder of the match boiled away to nothing interesting. // We measure this simply by seeing if the range of the resulting expression is identical to matchm. let spTarget = if expr.Range = matchm then SuppressSequencePointAtTarget else SequencePointAtTarget // Make the clause that represents the remaining cases of the pattern match let clauseForRestOfMatch = TClause(TPat_wild matchm,None,TTarget(FlatList.empty,expr,spTarget),matchm) CompilePatternBasic g denv amap exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (topv,topgtvs) (group @ [clauseForRestOfMatch]) inputTy resultTy atMostOnePartialAtATime clausesL | _ -> CompilePatternBasic g denv amap exprm matchm warnOnUnused true actionOnFailure (topv,topgtvs) (clausesL: TypedMatchClause list) inputTy resultTy fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/0000775000175000017500000000000012260314606020215 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/SurfaceArea.Silverlight.2.0.fs0000775000175000017500000111333112260314606025527 0ustar chrischrisnamespace FSharp.Core.Unittests.SurfaceArea open System.IO open NUnit.Framework (* This is unused yet, as I could not get it working (always a problem with System.dll) Will need to add to .proj file: $(_NTTREE)\SuiteBin\FSharp *) // We don't have auotmated unit tests for Silverlight, so do a reflection-only version of silverlight checking as part of // the 4.0 tests. [] type SilverlightSurfaceAreaTest() = [] member this.VerifyArea() = let asm = typeof.Assembly let types = asm.GetExportedTypes() let actual = new System.Text.StringBuilder() actual.Append("\r\n") |> ignore let values = types |> Array.collect (fun t -> t.GetMembers()) |> Array.map (fun v -> sprintf "%s: %s" (v.ReflectedType.ToString()) (v.ToString())) |> Array.sort |> Array.iter (fun s -> actual.Append(s) |> ignore actual.Append("\r\n") |> ignore) let expected = @" Microsoft.FSharp.Collections.Array2DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array2DModule: Int32 Base1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Base2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array2DModule: Int32 Length1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Length2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: System.String ToString() Microsoft.FSharp.Collections.Array2DModule: System.Type GetType() Microsoft.FSharp.Collections.Array2DModule: T Get[T](T[,], Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: TResult[,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: TResult[,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Copy[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Create[T](Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] Initialize[T](Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Rebase[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreate[T](Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void CopyTo[T](T[,], Int32, Int32, T[,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Set[T](T[,], Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array3DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array3DModule: Int32 Length1[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length2[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length3[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: System.String ToString() Microsoft.FSharp.Collections.Array3DModule: System.Type GetType() Microsoft.FSharp.Collections.Array3DModule: T Get[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,,]) Microsoft.FSharp.Collections.Array3DModule: T[,,] Create[T](Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: T[,,] Initialize[T](Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]) Microsoft.FSharp.Collections.Array3DModule: T[,,] ZeroCreate[T](Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Set[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array4DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array4DModule: Int32 Length1[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length2[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length3[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length4[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: System.String ToString() Microsoft.FSharp.Collections.Array4DModule: System.Type GetType() Microsoft.FSharp.Collections.Array4DModule: T Get[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Create[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Initialize[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]]) Microsoft.FSharp.Collections.Array4DModule: T[,,,] ZeroCreate[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: Void Set[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean IsEmpty[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule: Int32 Length[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](T[]) Microsoft.FSharp.Collections.ArrayModule: System.String ToString() Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1,T2][] Zip[T1,T2](T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1[],T2[]] Unzip[T1,T2](System.Tuple`2[T1,T2][]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1,T2,T3][] Zip3[T1,T2,T3](T1[], T2[], T3[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1[],T2[],T3[]] Unzip3[T1,T2,T3](System.Tuple`3[T1,T2,T3][]) Microsoft.FSharp.Collections.ArrayModule: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule: T Average[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T Get[T](T[], Int32) Microsoft.FSharp.Collections.ArrayModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Max[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Min[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Sum[T](T[]) Microsoft.FSharp.Collections.ArrayModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], T1[], T2[], TState) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: TState[] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState[] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Append[T](T[], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Concat[T](System.Collections.Generic.IEnumerable`1[T[]]) Microsoft.FSharp.Collections.ArrayModule: T[] Copy[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Create[T](Int32, T) Microsoft.FSharp.Collections.ArrayModule: T[] Empty[T]() Microsoft.FSharp.Collections.ArrayModule: T[] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] GetSubArray[T](T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Reverse[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Sort[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] ZeroCreate[T](Int32) Microsoft.FSharp.Collections.ArrayModule: Void CopyTo[T](T[], Int32, T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: Void Fill[T](T[], Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Set[T](T[], Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlace[T](T[]) Microsoft.FSharp.Collections.ComparisonIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ComparisonIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] FromFunction[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]]) Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.ComparisonIdentity: System.String ToString() Microsoft.FSharp.Collections.ComparisonIdentity: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsCons() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Length Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Tag Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Length() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Tag() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1+Tags[T] Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Cons(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Tail Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] TailOrNull Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Empty() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Tail() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_TailOrNull() Microsoft.FSharp.Collections.FSharpList`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: T Head Microsoft.FSharp.Collections.FSharpList`1[T]: T HeadOrDefault Microsoft.FSharp.Collections.FSharpList`1[T]: T Item [Int32] Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Head() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_HeadOrDefault() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Item(Int32) Microsoft.FSharp.Collections.FSharpList`1[T]: Void .ctor(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean ContainsKey(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 Count Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Add(TKey, TValue) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Remove(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Core.FSharpOption`1[TValue] TryFind(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.String ToString() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.Type GetType() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue Item [TKey] Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue get_Item(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Void .ctor(System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Contains(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 Count Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Add(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Addition(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Subtraction(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpSet`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpSet`1[T]: T MaximumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T MinimumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MaximumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MinimumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.HashIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.HashIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] FromFunctions[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]]) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] LimitedStructural[T](Int32) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Reference[T]() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.HashIdentity: System.String ToString() Microsoft.FSharp.Collections.HashIdentity: System.Type GetType() Microsoft.FSharp.Collections.ListModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ListModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ListModule: Int32 Length[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]] Zip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Collections.FSharpList`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Concat[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpList`1[T]]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Empty[T]() Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Replicate[T](Int32, T) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Reverse[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Sort[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Tail[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.String ToString() Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2]] Unzip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]]) Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T],Microsoft.FSharp.Collections.FSharpList`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2],Microsoft.FSharp.Collections.FSharpList`1[T3]] Unzip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]]) Microsoft.FSharp.Collections.ListModule: System.Type GetType() Microsoft.FSharp.Collections.ListModule: T Average[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Get[T](Microsoft.FSharp.Collections.FSharpList`1[T], Int32) Microsoft.FSharp.Collections.ListModule: T Head[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Max[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Min[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Sum[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], TState) Microsoft.FSharp.Collections.ListModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.MapModule: Boolean ContainsKey[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.MapModule: Boolean Exists[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean ForAll[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean IsEmpty[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Int32 GetHashCode() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]] ToList[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TResult] Map[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Add[TKey,T](TKey, T, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Empty[TKey,T]() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Filter[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfArray[TKey,T](System.Tuple`2[TKey,T][]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfList[TKey,T](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfSeq[TKey,T](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Remove[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TKey] TryFindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]] ToSeq[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.String ToString() Microsoft.FSharp.Collections.MapModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpMap`2[TKey,T],Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]] Partition[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Tuple`2[TKey,T][] ToArray[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Type GetType() Microsoft.FSharp.Collections.MapModule: T Find[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TKey FindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TResult Pick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TState FoldBack[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T], TState) Microsoft.FSharp.Collections.MapModule: TState Fold[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]]], TState, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Void Iterate[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.SeqModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SeqModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean IsEmpty[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 CompareWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SeqModule: Int32 Length[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T,T]] Pairwise[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T1,T2]] Zip[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Collections.Generic.IEnumerable`1[T]]] GroupBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Int32]] CountBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2], System.Collections.Generic.IEnumerable`1[T3]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Collect[T,TCollection,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T[]] Windowed[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Append[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cache[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cast[T](System.Collections.IEnumerable) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Concat[TCollection,T](System.Collections.Generic.IEnumerable`1[TCollection]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable`1[T]]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] DistinctBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Distinct[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Empty[T]() Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] InitializeInfinite[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] ReadOnly[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SkipWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Skip[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Sort[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] TakeWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Take[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Truncate[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Unfold[TState,T](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[T,TState]]], TState) Microsoft.FSharp.Collections.SeqModule: System.String ToString() Microsoft.FSharp.Collections.SeqModule: System.Type GetType() Microsoft.FSharp.Collections.SeqModule: T Average[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Get[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Head[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Max[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Min[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Sum[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T[] ToArray[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Contains[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SetModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 Count[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Add[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Difference[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Empty[T]() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] IntersectMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Intersect[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] UnionMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Union[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.String ToString() Microsoft.FSharp.Collections.SetModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpSet`1[T],Microsoft.FSharp.Collections.FSharpSet`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Type GetType() Microsoft.FSharp.Collections.SetModule: T MaxElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T MinElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpSet`1[T], TState) Microsoft.FSharp.Collections.SetModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Control.CommonExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.CommonExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] AsyncWrite(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Byte[]] AsyncReadBytes(System.IO.Stream, Int32) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Int32] AsyncRead(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: System.IDisposable SubscribeToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.CommonExtensions: System.String ToString() Microsoft.FSharp.Control.CommonExtensions: System.Type GetType() Microsoft.FSharp.Control.CommonExtensions: Void AddToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.EventModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.EventModule: Int32 GetHashCode() Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[System.Tuple`2[T,T]],System.Tuple`2[T,T]] Pairwise[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Choose[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Map[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Scan[TResult,T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Filter[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Merge[TDel1,T,TDel2](Microsoft.FSharp.Control.IEvent`2[TDel1,T], Microsoft.FSharp.Control.IEvent`2[TDel2,T]) Microsoft.FSharp.Control.EventModule: System.String ToString() Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult1],TResult1],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult2],TResult2]] Split[T,TResult1,TResult2,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T]] Partition[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Type GetType() Microsoft.FSharp.Control.EventModule: Void Add[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.FSharpAsync: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Control.FSharpAsync`1[T]] StartChild[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpChoice`2[T,System.Exception]] Catch[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Ignore[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Sleep(Int32) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToContext(System.Threading.SynchronizationContext) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToNewThread() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToThreadPool() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitIAsyncResult(System.IAsyncResult, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitWaitHandle(System.Threading.WaitHandle, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.IDisposable] OnCancel(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] CancellationToken Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] get_CancellationToken() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T[]] Parallel[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitEvent[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,TArg3,T](TArg1, TArg2, TArg3, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[TArg1,TArg2,TArg3,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,T](TArg1, TArg2, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[TArg1,TArg2,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,T](TArg1, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg1,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromContinuations[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.OperationCanceledException,Microsoft.FSharp.Core.Unit]],Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] TryCancelled[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.OperationCanceledException,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: System.String ToString() Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken DefaultCancellationToken Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken get_DefaultCancellationToken() Microsoft.FSharp.Control.FSharpAsync: System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg,System.AsyncCallback,System.Object],System.IAsyncResult],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,Microsoft.FSharp.Core.Unit]] AsBeginEnd[TArg,T](Microsoft.FSharp.Core.FSharpFunc`2[TArg,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: System.Type GetType() Microsoft.FSharp.Control.FSharpAsync: T RunSynchronously[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void CancelDefaultToken() Microsoft.FSharp.Control.FSharpAsync: Void Start(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartImmediate(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartWithContinuations[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.OperationCanceledException,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncBuilder: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] For[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] While(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Zero() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Bind[T,TResult](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Combine[T](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] ReturnFrom[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Return[T](T) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryFinally[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryWith[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncBuilder: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Void Reply(TReply) Microsoft.FSharp.Control.FSharpAsync`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] Publish Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] get_Publish() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.String ToString() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void .ctor() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void Trigger(System.Object[]) Microsoft.FSharp.Control.FSharpEvent`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Publish Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] get_Publish() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void Trigger(T) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] Publish Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] get_Publish() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void Trigger(System.Object, TArgs) Microsoft.FSharp.Control.FSharpHandler`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Delegate[] GetInvocationList() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.IAsyncResult BeginInvoke(System.Object, T, System.AsyncCallback, System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object DynamicInvoke(System.Object[]) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Target Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object get_Target() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo Method Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo get_Method() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpHandler`1[T]: Void .ctor(System.Object, IntPtr) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void EndInvoke(System.IAsyncResult) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void Invoke(System.Object, T) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 CurrentQueueLength Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 DefaultTimeout Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_CurrentQueueLength() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_DefaultTimeout() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TMsg]] TryReceive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TReply]] PostAndTryAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[T]] TryScan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TMsg] Receive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TReply] PostAndAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[T] Scan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpHandler`1[System.Exception] Error Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg] Start(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Core.FSharpOption`1[TReply] TryPostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.String ToString() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.Type GetType() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: TReply PostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Post(TMsg) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Start() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void add_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void remove_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void set_DefaultTimeout(Int32) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void AddHandler(TDelegate) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void RemoveHandler(TDelegate) Microsoft.FSharp.Control.LazyExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.LazyExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] CreateFromValue[T](T) Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] Create[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Control.LazyExtensions: System.String ToString() Microsoft.FSharp.Control.LazyExtensions: System.Type GetType() Microsoft.FSharp.Control.LazyExtensions: T Force[T](System.Lazy`1[T]) Microsoft.FSharp.Control.ObservableModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.ObservableModule: Int32 GetHashCode() Microsoft.FSharp.Control.ObservableModule: System.IDisposable Subscribe[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[System.Tuple`2[T,T]] Pairwise[T](System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Scan[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Merge[T](System.IObservable`1[T], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.String ToString() Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[TResult1],System.IObservable`1[TResult2]] Split[T,TResult1,TResult2](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[T],System.IObservable`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Type GetType() Microsoft.FSharp.Control.ObservableModule: Void Add[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.OperationCanceledException: Boolean Equals(System.Object) Microsoft.FSharp.Control.OperationCanceledException: Int32 GetHashCode() Microsoft.FSharp.Control.OperationCanceledException: System.Collections.IDictionary Data Microsoft.FSharp.Control.OperationCanceledException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Control.OperationCanceledException: System.Exception GetBaseException() Microsoft.FSharp.Control.OperationCanceledException: System.Exception InnerException Microsoft.FSharp.Control.OperationCanceledException: System.Exception get_InnerException() Microsoft.FSharp.Control.OperationCanceledException: System.String Message Microsoft.FSharp.Control.OperationCanceledException: System.String StackTrace Microsoft.FSharp.Control.OperationCanceledException: System.String ToString() Microsoft.FSharp.Control.OperationCanceledException: System.String get_Message() Microsoft.FSharp.Control.OperationCanceledException: System.String get_StackTrace() Microsoft.FSharp.Control.OperationCanceledException: System.Type GetType() Microsoft.FSharp.Control.OperationCanceledException: System.Type GetType() Microsoft.FSharp.Control.OperationCanceledException: Void .ctor(System.String) Microsoft.FSharp.Control.WebExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.WebExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Net.WebResponse] AsyncGetResponse(System.Net.WebRequest) Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.String] AsyncDownloadString(System.Net.WebClient, System.Uri) Microsoft.FSharp.Control.WebExtensions: System.String ToString() Microsoft.FSharp.Control.WebExtensions: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AbstractClassAttribute: System.String ToString() Microsoft.FSharp.Core.AbstractClassAttribute: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Void .ctor() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.String ToString() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoOpenAttribute: System.String Path Microsoft.FSharp.Core.AutoOpenAttribute: System.String ToString() Microsoft.FSharp.Core.AutoOpenAttribute: System.String get_Path() Microsoft.FSharp.Core.AutoOpenAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Value Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean get_Value() Microsoft.FSharp.Core.AutoSerializableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoSerializableAttribute: System.String ToString() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoSerializableAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIEventAttribute: System.String ToString() Microsoft.FSharp.Core.CLIEventAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIEventAttribute: Void .ctor() Microsoft.FSharp.Core.ClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ClassAttribute: System.String ToString() Microsoft.FSharp.Core.ClassAttribute: System.Type GetType() Microsoft.FSharp.Core.ClassAttribute: Void .ctor() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] Counts Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] get_Counts() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Void .ctor(Int32[]) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 SequenceNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 VariantNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_SequenceNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_VariantNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags SourceConstructFlags Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags get_SourceConstructFlags() Microsoft.FSharp.Core.CompilationMappingAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32, Int32) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags Flags Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags get_Flags() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Void .ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 value__ Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Event Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Instance Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags ModuleSuffix Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags None Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Static Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags UseNullAsTrueValue Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String SourceName Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String get_SourceName() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompiledNameAttribute: System.String CompiledName Microsoft.FSharp.Core.CompiledNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompiledNameAttribute: System.String get_CompiledName() Microsoft.FSharp.Core.CompiledNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompiledNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsError Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsHidden Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsError() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsHidden() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 MessageNumber Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 get_MessageNumber() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String Message Microsoft.FSharp.Core.CompilerMessageAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String get_Message() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerMessageAttribute: Void .ctor(System.String, Int32) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsError(Boolean) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsHidden(Boolean) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean CheckClose Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean get_CheckClose() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GenerateNext(System.Collections.Generic.IEnumerable`1[T] ByRef) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Collections.Generic.IEnumerator`1[T] GetFreshEnumerator() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T LastGenerated Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T get_LastGenerated() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Void Close() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] CreateEvent[TDelegate,TArgs](Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Core.FSharpFunc`2[TArgs,Microsoft.FSharp.Core.Unit]],TDelegate]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateFromFunctions[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateUsing[T,TCollection,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateThenFinally[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.String ToString() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Value Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean get_Value() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Check Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean get_Check() Microsoft.FSharp.Core.DefaultValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultValueAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultValueAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EntryPointAttribute: System.String ToString() Microsoft.FSharp.Core.EntryPointAttribute: System.Type GetType() Microsoft.FSharp.Core.EntryPointAttribute: Void .ctor() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ExperimentalAttribute: System.String Message Microsoft.FSharp.Core.ExperimentalAttribute: System.String ToString() Microsoft.FSharp.Core.ExperimentalAttribute: System.String get_Message() Microsoft.FSharp.Core.ExperimentalAttribute: System.Type GetType() Microsoft.FSharp.Core.ExperimentalAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.ExtraTopLevelOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExtraTopLevelOperators: Byte ToByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Double ToDouble[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Int32 GetHashCode() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Collections.FSharpSet`1[T] CreateSet[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder DefaultAsyncBuilder Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder get_DefaultAsyncBuilder() Microsoft.FSharp.Core.ExtraTopLevelOperators: SByte ToSByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Single ToSingle[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Collections.Generic.IDictionary`2[TKey,TValue] CreateDictionary[TKey,TValue](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.String ToString() Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Type GetType() Microsoft.FSharp.Core.ExtraTopLevelOperators: T LazyPattern[T](System.Lazy`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToString[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceUntypedExpression[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Core.ExtraTopLevelOperators: T[,] CreateArray2D[?,T](System.Collections.Generic.IEnumerable`1[?]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice1Of2(T1) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice2Of2(T2) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice1Of3(T1) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice2Of3(T2) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice3Of3(T3) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice1Of4(T1) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice2Of4(T2) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice3Of4(T3) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice4Of4(T4) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice1Of5(T1) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice2Of5(T2) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice3Of5(T3) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice4Of5(T4) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice5Of5(T5) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice1Of6(T1) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice2Of6(T2) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice3Of6(T3) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice4Of6(T4) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice5Of6(T5) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice6Of6(T6) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice1Of7(T1) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice2Of7(T2) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice3Of7(T3) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice4Of7(T4) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice5Of7(T5) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice6Of7(T6) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice7Of7(T7) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] FromConverter(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] op_Implicit(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] ToConverter(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] op_Implicit(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.String ToString() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: TResult Invoke(T) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: V InvokeFast[V](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,V]], T, TResult) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: W InvokeFast[V,W](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,W]]], T, TResult, V) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: X InvokeFast[V,W,X](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,X]]]], T, TResult, V, W) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Y InvokeFast[V,W,X,Y](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,Microsoft.FSharp.Core.FSharpFunc`2[X,Y]]]]], T, TResult, V, W, X) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Major Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Minor Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Release Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Major() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Minor() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Release() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.String ToString() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Type GetType() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int32, Int32) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsSome Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsNone(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsSome(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetTag(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1+Tags[T] Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] None Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] Some(T) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] get_None() Microsoft.FSharp.Core.FSharpOption`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpRef`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpRef`1[T]: T Value Microsoft.FSharp.Core.FSharpRef`1[T]: T contents Microsoft.FSharp.Core.FSharpRef`1[T]: T contents@ Microsoft.FSharp.Core.FSharpRef`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpRef`1[T]: T get_contents() Microsoft.FSharp.Core.FSharpRef`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_Value(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpTypeFunc: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpTypeFunc: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpTypeFunc: System.Object Specialize[T]() Microsoft.FSharp.Core.FSharpTypeFunc: System.String ToString() Microsoft.FSharp.Core.FSharpTypeFunc: System.Type GetType() Microsoft.FSharp.Core.FuncConvert: Boolean Equals(System.Object) Microsoft.FSharp.Core.FuncConvert: Int32 GetHashCode() Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit] ToFSharpFunc[T](System.Action`1[T]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] ToFSharpFunc[T,TResult](System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]] FuncFromTupled[T1,T2,T3,T4,T5,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[T1,T2,T3,T4,T5],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]] FuncFromTupled[T1,T2,T3,T4,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[T1,T2,T3,T4],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]] FuncFromTupled[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[T1,T2,T3],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]] FuncFromTupled[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[T1,T2],TResult]) Microsoft.FSharp.Core.FuncConvert: System.String ToString() Microsoft.FSharp.Core.FuncConvert: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.String ToString() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Void .ctor() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.InterfaceAttribute: System.String ToString() Microsoft.FSharp.Core.InterfaceAttribute: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Void .ctor() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String AddressOpNotFirstClassString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputArrayEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputMustBeNonNegativeString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputSequenceEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String NoNegateMinValueString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_AddressOpNotFirstClassString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputArrayEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputMustBeNonNegativeString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputSequenceEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_NoNegateMinValueString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityERIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean PhysicalEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple2[T1,T2](System.Collections.IComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple3[T1,T2,T3](System.Collections.IComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple4[T1,T2,T3,T4](System.Collections.IComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple5[T1,T2,T3,T4,T5](System.Collections.IComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonWithComparerIntrinsic[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 LimitedGenericHashIntrinsic[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 PhysicalHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Char GetString(System.String, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Decimal MakeDecimal(Int32, Int32, Int32, Boolean, Byte) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CheckThis[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CreateInstance[T]() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray2D[T](T[,], Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray3D[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray4D[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray[T](T[], Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void Dispose[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailStaticInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray2D[T](T[,], Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray3D[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray4D[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray[T](T[], Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Or(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_Amp(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanAnd(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanOr(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: IntPtr op_IntegerAddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: T& op_AddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityER[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityWithComparer[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean PhysicalEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Double FloatWithMeasure(Double) Microsoft.FSharp.Core.LanguagePrimitives: Int16 Int16WithMeasure(Int16) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparisonWithComparer[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparison[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHashWithComparer[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericLimitedHash[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives: Int32 Int32WithMeasure(Int32) Microsoft.FSharp.Core.LanguagePrimitives: Int32 ParseInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Int32 PhysicalHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int64 Int64WithMeasure(Int64) Microsoft.FSharp.Core.LanguagePrimitives: Int64 ParseInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+HashCompare Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators Microsoft.FSharp.Core.LanguagePrimitives: SByte SByteWithMeasure(SByte) Microsoft.FSharp.Core.LanguagePrimitives: Single Float32WithMeasure(Single) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IComparer`1[T] FastGenericComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastGenericEqualityComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastLimitedGenericEqualityComparer[T](Int32) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer GenericComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer get_GenericComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityERComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityERComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Decimal DecimalWithMeasure(System.Decimal) Microsoft.FSharp.Core.LanguagePrimitives: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives: T DivideByIntDynamic[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T DivideByInt[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T EnumToValue[TEnum,T](TEnum) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMaximum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMinimum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericOneDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericOne[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZeroDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZero[T]() Microsoft.FSharp.Core.LanguagePrimitives: TEnum EnumOfValue[T,TEnum](T) Microsoft.FSharp.Core.LanguagePrimitives: TResult AdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedAdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedMultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult MultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: UInt32 ParseUInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.LiteralAttribute: System.String ToString() Microsoft.FSharp.Core.LiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 Microsoft.FSharp.Core.MatchFailureException: Int32 Data2 Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode() Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data1() Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data2() Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary Data Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Core.MatchFailureException: System.Exception GetBaseException() Microsoft.FSharp.Core.MatchFailureException: System.Exception InnerException Microsoft.FSharp.Core.MatchFailureException: System.Exception get_InnerException() Microsoft.FSharp.Core.MatchFailureException: System.String Data0 Microsoft.FSharp.Core.MatchFailureException: System.String Message Microsoft.FSharp.Core.MatchFailureException: System.String StackTrace Microsoft.FSharp.Core.MatchFailureException: System.String ToString() Microsoft.FSharp.Core.MatchFailureException: System.String get_Data0() Microsoft.FSharp.Core.MatchFailureException: System.String get_Message() Microsoft.FSharp.Core.MatchFailureException: System.String get_StackTrace() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Void .ctor(System.String, Int32, Int32) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Void .ctor() Microsoft.FSharp.Core.MeasureAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAttribute: Void .ctor() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.NoComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.NoComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.String ToString() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Type GetType() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Void .ctor() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.NoEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.NoEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromInt64Dynamic(Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromStringDynamic(System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.String ToString() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Type GetType() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt32[T](Int32) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt64[T](Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromOne[T]() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromString[T](System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromZero[T]() Microsoft.FSharp.Core.NumericLiterals: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals: Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI Microsoft.FSharp.Core.NumericLiterals: System.String ToString() Microsoft.FSharp.Core.NumericLiterals: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Checked: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators+Checked: Char ToChar[T](T) Microsoft.FSharp.Core.Operators+Checked: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators+Checked: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators+Checked: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators+Checked: System.String ToString() Microsoft.FSharp.Core.Operators+Checked: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators+Checked: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Byte PowByte(Byte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Double PowDouble(Double, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int16 PowInt16(Int16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 PowInt32(Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 SignDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int64 PowInt64(Int64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: IntPtr PowIntPtr(IntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: SByte PowSByte(SByte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Single PowSingle(Single, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Byte] RangeByte(Byte, Byte, Byte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Char] RangeChar(Char, Char) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Double] RangeDouble(Double, Double, Double) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int16] RangeInt16(Int16, Int16, Int16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int32] RangeInt32(Int32, Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int64] RangeInt64(Int64, Int64, Int64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.IntPtr] RangeIntPtr(IntPtr, IntPtr, IntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.SByte] RangeSByte(SByte, SByte, SByte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Single] RangeSingle(Single, Single, Single) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt16] RangeUInt16(UInt16, UInt16, UInt16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt32] RangeUInt32(UInt32, UInt32, UInt32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt64] RangeUInt64(UInt64, UInt64, UInt64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UIntPtr] RangeUIntPtr(UIntPtr, UIntPtr, UIntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeStepGeneric[TStep,T](TStep, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TStep,T]], T, TStep, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Decimal PowDecimal(System.Decimal, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String GetStringSlice(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String ToString() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Type GetType() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AbsDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AcosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AsinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AtanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CeilingDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CoshDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T ExpDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T FloorDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T Log10Dynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T LogDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowDynamic[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T RoundDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TruncateDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 Atan2Dynamic[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 SqrtDynamic[T1,T2](T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,,] GetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,] GetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,] GetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[] GetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt16 PowUInt16(UInt16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt32 PowUInt32(UInt32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt64 PowUInt64(UInt64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UIntPtr PowUIntPtr(UIntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[]) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Unchecked: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators+Unchecked: System.String ToString() Microsoft.FSharp.Core.Operators+Unchecked: System.Type GetType() Microsoft.FSharp.Core.Operators+Unchecked: T DefaultOf[T]() Microsoft.FSharp.Core.Operators: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators: Boolean Not(Boolean) Microsoft.FSharp.Core.Operators: Boolean op_Equality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThan[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_Inequality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThan[T](T, T) Microsoft.FSharp.Core.Operators: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators: Char ToChar[T](T) Microsoft.FSharp.Core.Operators: Double Infinity Microsoft.FSharp.Core.Operators: Double NaN Microsoft.FSharp.Core.Operators: Double ToDouble[T](T) Microsoft.FSharp.Core.Operators: Double get_Infinity() Microsoft.FSharp.Core.Operators: Double get_NaN() Microsoft.FSharp.Core.Operators: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators: Int32 GetHashCode() Microsoft.FSharp.Core.Operators: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators: Int32 Sign[T](T) Microsoft.FSharp.Core.Operators: Int32 SizeOf[T]() Microsoft.FSharp.Core.Operators: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators: Int32 limitedHash[T](Int32, T) Microsoft.FSharp.Core.Operators: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Collections.FSharpList`1[T] op_Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeLeft[T2,T3,T1](Microsoft.FSharp.Core.FSharpFunc`2[T2,T3], Microsoft.FSharp.Core.FSharpFunc`2[T1,T2]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeRight[T1,T2,T3](Microsoft.FSharp.Core.FSharpFunc`2[T1,T2], Microsoft.FSharp.Core.FSharpFunc`2[T2,T3]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpOption`1[System.String] FailurePattern(System.Exception) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpRef`1[T] Ref[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Checked Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+OperatorIntrinsics Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Unchecked Microsoft.FSharp.Core.Operators: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators: Single InfinitySingle Microsoft.FSharp.Core.Operators: Single NaNSingle Microsoft.FSharp.Core.Operators: Single ToSingle[T](T) Microsoft.FSharp.Core.Operators: Single get_InfinitySingle() Microsoft.FSharp.Core.Operators: Single get_NaNSingle() Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] CreateSequence[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_RangeStep[T,TStep](T, TStep, T) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_Range[T](T, T) Microsoft.FSharp.Core.Operators: System.Decimal ToDecimal[T](T) Microsoft.FSharp.Core.Operators: System.Exception Failure(System.String) Microsoft.FSharp.Core.Operators: System.IO.TextReader ConsoleIn[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleError[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleOut[T]() Microsoft.FSharp.Core.Operators: System.Object Box[T](T) Microsoft.FSharp.Core.Operators: System.String ToString() Microsoft.FSharp.Core.Operators: System.String ToString[T](T) Microsoft.FSharp.Core.Operators: System.String op_Concatenate(System.String, System.String) Microsoft.FSharp.Core.Operators: System.Tuple`2[TKey,TValue] KeyValuePattern[TKey,TValue](System.Collections.Generic.KeyValuePair`2[TKey,TValue]) Microsoft.FSharp.Core.Operators: System.Type GetType() Microsoft.FSharp.Core.Operators: System.Type TypeDefOf[T]() Microsoft.FSharp.Core.Operators: System.Type TypeOf[T]() Microsoft.FSharp.Core.Operators: T Abs[T](T) Microsoft.FSharp.Core.Operators: T Acos[T](T) Microsoft.FSharp.Core.Operators: T Asin[T](T) Microsoft.FSharp.Core.Operators: T Atan[T](T) Microsoft.FSharp.Core.Operators: T Ceiling[T](T) Microsoft.FSharp.Core.Operators: T Cos[T](T) Microsoft.FSharp.Core.Operators: T Cosh[T](T) Microsoft.FSharp.Core.Operators: T DefaultArg[T](Microsoft.FSharp.Core.FSharpOption`1[T], T) Microsoft.FSharp.Core.Operators: T Exp[T](T) Microsoft.FSharp.Core.Operators: T FailWith[T](System.String) Microsoft.FSharp.Core.Operators: T Floor[T](T) Microsoft.FSharp.Core.Operators: T Identity[T](T) Microsoft.FSharp.Core.Operators: T InvalidArg[T](System.String, System.String) Microsoft.FSharp.Core.Operators: T InvalidOp[T](System.String) Microsoft.FSharp.Core.Operators: T Lock[TLock,T](TLock, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Core.Operators: T Log10[T](T) Microsoft.FSharp.Core.Operators: T Log[T](T) Microsoft.FSharp.Core.Operators: T Max[T](T, T) Microsoft.FSharp.Core.Operators: T Min[T](T, T) Microsoft.FSharp.Core.Operators: T NullArg[T](System.String) Microsoft.FSharp.Core.Operators: T PowInteger[T](T, Int32) Microsoft.FSharp.Core.Operators: T Raise[T](System.Exception) Microsoft.FSharp.Core.Operators: T Reraise[T]() Microsoft.FSharp.Core.Operators: T Rethrow[T]() Microsoft.FSharp.Core.Operators: T Round[T](T) Microsoft.FSharp.Core.Operators: T Sin[T](T) Microsoft.FSharp.Core.Operators: T Sinh[T](T) Microsoft.FSharp.Core.Operators: T Tan[T](T) Microsoft.FSharp.Core.Operators: T Tanh[T](T) Microsoft.FSharp.Core.Operators: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: T op_BitwiseAnd[T](T, T) Microsoft.FSharp.Core.Operators: T op_BitwiseOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Dereference[T](Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.Operators: T op_ExclusiveOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Exponentiation[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators: T op_LeftShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_LogicalNot[T](T) Microsoft.FSharp.Core.Operators: T op_RightShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators: T op_UnaryPlus[T](T) Microsoft.FSharp.Core.Operators: T1 Fst[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T2 Atan2[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators: T2 Snd[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Division[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Modulus[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: TResult Sqrt[T,TResult](T) Microsoft.FSharp.Core.Operators: TResult ToEnum[TResult](Int32) Microsoft.FSharp.Core.Operators: TResult Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1, T2) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], T1, T2, T3) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T) Microsoft.FSharp.Core.Operators: TResult op_PipeRight2[T1,T2,TResult](T1, T2, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight3[T1,T2,T3,TResult](T1, T2, T3, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight[T1,TResult](T1, Microsoft.FSharp.Core.FSharpFunc`2[T1,TResult]) Microsoft.FSharp.Core.Operators: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators: Void Decrement(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void Ignore[T](T) Microsoft.FSharp.Core.Operators: Void Increment(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void op_ColonEquals[T](Microsoft.FSharp.Core.FSharpRef`1[T], T) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: FSharpFunc`3 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: TResult Invoke(T1, T2) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: FSharpFunc`4 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: TResult Invoke(T1, T2, T3) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: FSharpFunc`5 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: TResult Invoke(T1, T2, T3, T4) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: FSharpFunc`6 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: TResult Invoke(T1, T2, T3, T4, T5) Microsoft.FSharp.Core.OptimizedClosures: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult] Microsoft.FSharp.Core.OptimizedClosures: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures: System.Type GetType() Microsoft.FSharp.Core.OptionModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsNone[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsSome[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 Count[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 GetHashCode() Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Bind[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: System.String ToString() Microsoft.FSharp.Core.OptionModule: System.Type GetType() Microsoft.FSharp.Core.OptionModule: T GetValue[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Core.FSharpOption`1[T], TState) Microsoft.FSharp.Core.OptionModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: T[] ToArray[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.String ToString() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Type GetType() Microsoft.FSharp.Core.OptionalArgumentAttribute: Void .ctor() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String Value Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String Value Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfModule: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfModule: System.String ToString() Microsoft.FSharp.Core.PrintfModule: System.Type GetType() Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilderThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilder[T](System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriterThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.String ToString() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Type GetType() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Void .ctor() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.String ToString() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Type GetType() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Void .ctor() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Value Microsoft.FSharp.Core.SealedAttribute: Boolean get_Value() Microsoft.FSharp.Core.SealedAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.SealedAttribute: System.String ToString() Microsoft.FSharp.Core.SealedAttribute: System.Type GetType() Microsoft.FSharp.Core.SealedAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.SourceConstructFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 GetHashCode() Microsoft.FSharp.Core.SourceConstructFlags: Int32 value__ Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Closure Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Exception Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Field Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags KindMask Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Module Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags NonPublicRepresentation Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags None Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags ObjectType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags RecordType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags SumType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags UnionCase Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Value Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString() Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.Type GetType() Microsoft.FSharp.Core.SourceConstructFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.StringModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.StringModule: Boolean Exists(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Boolean ForAll(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Int32 GetHashCode() Microsoft.FSharp.Core.StringModule: Int32 Length(System.String) Microsoft.FSharp.Core.StringModule: System.String Collect(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.String], System.String) Microsoft.FSharp.Core.StringModule: System.String Concat(System.String, System.Collections.Generic.IEnumerable`1[System.String]) Microsoft.FSharp.Core.StringModule: System.String Initialize(Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String]) Microsoft.FSharp.Core.StringModule: System.String Map(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char], System.String) Microsoft.FSharp.Core.StringModule: System.String MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char]], System.String) Microsoft.FSharp.Core.StringModule: System.String Replicate(Int32, System.String) Microsoft.FSharp.Core.StringModule: System.String ToString() Microsoft.FSharp.Core.StringModule: System.Type GetType() Microsoft.FSharp.Core.StringModule: Void Iterate(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit], System.String) Microsoft.FSharp.Core.StringModule: Void IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit]], System.String) Microsoft.FSharp.Core.StructAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructAttribute: System.String ToString() Microsoft.FSharp.Core.StructAttribute: System.Type GetType() Microsoft.FSharp.Core.StructAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String ToString() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String Value Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String get_Value() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.Unit: Boolean Equals(System.Object) Microsoft.FSharp.Core.Unit: Int32 GetHashCode() Microsoft.FSharp.Core.Unit: System.String ToString() Microsoft.FSharp.Core.Unit: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.UnverifiableAttribute: System.String ToString() Microsoft.FSharp.Core.UnverifiableAttribute: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Void .ctor() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.VolatileFieldAttribute: System.String ToString() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Type GetType() Microsoft.FSharp.Core.VolatileFieldAttribute: Void .ctor() Microsoft.FSharp.NativeInterop.NativePtrModule: Boolean Equals(System.Object) Microsoft.FSharp.NativeInterop.NativePtrModule: Int32 GetHashCode() Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr AddPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr OfNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr StackAllocate[T](Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr ToNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: System.String ToString() Microsoft.FSharp.NativeInterop.NativePtrModule: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: T GetPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: T ReadPointerInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: Void SetPointerInlined[T](IntPtr, Int32, T) Microsoft.FSharp.NativeInterop.NativePtrModule: Void WritePointerInlined[T](IntPtr, T) Microsoft.FSharp.Quotations.DerivedPatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.DerivedPatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Collections.FSharpList`1[System.Type],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Boolean] BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Byte] BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Char] CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Double] DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int16] Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int64] Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.SByte] SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Single] SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.String] StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar]],Microsoft.FSharp.Quotations.FSharpExpr]] LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt16] UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt32] UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt64] UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: System.String ToString() Microsoft.FSharp.Quotations.DerivedPatternsModule: System.Type GetType() Microsoft.FSharp.Quotations.ExprShapeModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.ExprShapeModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Core.FSharpChoice`3[Microsoft.FSharp.Quotations.FSharpVar,System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr],System.Tuple`2[System.Object,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Quotations.FSharpExpr RebuildShapeCombination(System.Object, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.ExprShapeModule: System.String ToString() Microsoft.FSharp.Quotations.ExprShapeModule: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] TryGetReflectedDefinition(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressSet(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Application(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Applications(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Coerce(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr DefaultValue(System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Deserialize(System.Type, Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr], Byte[]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Lambda(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Let(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr LetRecursive(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewArray(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewDelegate(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewObject(System.Reflection.ConstructorInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewRecord(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewTuple(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Quote(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Sequential(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryFinally(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryWith(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TupleGet(Microsoft.FSharp.Quotations.FSharpExpr, Int32) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TypeTest(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Reflection.UnionCaseInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value(System.Object, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value[T](T) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Var(Microsoft.FSharp.Quotations.FSharpVar) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr VarSet(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Cast[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] GlobalVar[T](System.String) Microsoft.FSharp.Quotations.FSharpExpr: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpExpr: Void RegisterReflectedDefinitions(System.Reflection.Assembly, System.String, Byte[]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Raw Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr get_Raw() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpVar: Boolean IsMutable Microsoft.FSharp.Quotations.FSharpVar: Boolean get_IsMutable() Microsoft.FSharp.Quotations.FSharpVar: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpVar: Microsoft.FSharp.Quotations.FSharpVar Global(System.String, System.Type) Microsoft.FSharp.Quotations.FSharpVar: System.String Name Microsoft.FSharp.Quotations.FSharpVar: System.String ToString() Microsoft.FSharp.Quotations.FSharpVar: System.String get_Name() Microsoft.FSharp.Quotations.FSharpVar: System.Type GetType() Microsoft.FSharp.Quotations.FSharpVar: System.Type Type Microsoft.FSharp.Quotations.FSharpVar: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Void .ctor(System.String, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean]) Microsoft.FSharp.Quotations.PatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.PatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]] NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpVar] VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]],Microsoft.FSharp.Quotations.FSharpExpr]] LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo]] FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo]] UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Int32]] TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Object,System.Type]] ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr]] FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] LetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar],Microsoft.FSharp.Quotations.FSharpExpr]] NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Quotations.FSharpExpr]] PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Type] DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: System.String ToString() Microsoft.FSharp.Quotations.PatternsModule: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpType: Boolean IsExceptionRepresentation(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsFunction(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsModule(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsRecord(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsTuple(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsUnion(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpType: Microsoft.FSharp.Reflection.UnionCaseInfo[] GetUnionCases(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetExceptionFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetRecordFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.String ToString() Microsoft.FSharp.Reflection.FSharpType: System.Tuple`2[System.Type,System.Type] GetFunctionElements(System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: System.Type MakeFunctionType(System.Type, System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type MakeTupleType(System.Type[]) Microsoft.FSharp.Reflection.FSharpType: System.Type[] GetTupleElements(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpValue: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Int32] PreComputeUnionTagReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeRecordReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeTupleReader(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object] PreComputeRecordFieldReader(System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeRecordConstructor(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeTupleConstructor(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetRecordField(System.Object, System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetTupleField(System.Object, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeFunction(System.Type, Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeRecord(System.Type, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeTuple(System.Object[], System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetExceptionFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetRecordFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetTupleFields(System.Object) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.ConstructorInfo PreComputeRecordConstructorInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MemberInfo PreComputeUnionTagMemberInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MethodInfo PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.String ToString() Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[]] GetUnionFields(System.Object, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Type]] PreComputeTupleConstructorInfo(System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,System.Int32]]] PreComputeTuplePropertyInfo(System.Type, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 GetHashCode() Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 Tag Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 get_Tag() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes(System.Type) Microsoft.FSharp.Reflection.UnionCaseInfo: System.Reflection.PropertyInfo[] GetFields() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() System.AggregateException: Boolean Equals(System.Object) System.AggregateException: Int32 GetHashCode() System.AggregateException: System.Collections.IDictionary Data System.AggregateException: System.Collections.IDictionary get_Data() System.AggregateException: System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception] InnerExceptions System.AggregateException: System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception] get_InnerExceptions() System.AggregateException: System.Exception GetBaseException() System.AggregateException: System.Exception InnerException System.AggregateException: System.Exception get_InnerException() System.AggregateException: System.String Message System.AggregateException: System.String StackTrace System.AggregateException: System.String ToString() System.AggregateException: System.String get_Message() System.AggregateException: System.String get_StackTrace() System.AggregateException: System.Type GetType() System.AggregateException: System.Type GetType() System.Collections.IStructuralComparable: Int32 CompareTo(System.Object, System.Collections.IComparer) System.Collections.IStructuralEquatable: Boolean Equals(System.Object, System.Collections.IEqualityComparer) System.Collections.IStructuralEquatable: Int32 GetHashCode(System.Collections.IEqualityComparer) System.IObservable`1[T]: System.IDisposable Subscribe(System.IObserver`1[T]) System.IObserver`1[T]: Void OnCompleted() System.IObserver`1[T]: Void OnError(System.Exception) System.IObserver`1[T]: Void OnNext(T) System.Lazy`1[T]: Boolean Equals(System.Object) System.Lazy`1[T]: Boolean IsValueCreated System.Lazy`1[T]: Boolean get_IsValueCreated() System.Lazy`1[T]: Int32 GetHashCode() System.Lazy`1[T]: System.String ToString() System.Lazy`1[T]: System.Type GetType() System.Lazy`1[T]: T Value System.Lazy`1[T]: T get_Value() System.Numerics.BigInteger: Boolean Equals(System.Object) System.Numerics.BigInteger: Boolean IsOne System.Numerics.BigInteger: Boolean IsZero System.Numerics.BigInteger: Boolean get_IsOne() System.Numerics.BigInteger: Boolean get_IsZero() System.Numerics.BigInteger: Boolean op_Equality(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_GreaterThan(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_GreaterThanOrEqual(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_Inequality(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_LessThan(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_LessThanOrEqual(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Double op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: Int32 GetHashCode() System.Numerics.BigInteger: Int32 Sign System.Numerics.BigInteger: Int32 get_Sign() System.Numerics.BigInteger: Int32 op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: Int64 op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger Abs(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger DivRem(System.Numerics.BigInteger, System.Numerics.BigInteger, System.Numerics.BigInteger ByRef) System.Numerics.BigInteger: System.Numerics.BigInteger GreatestCommonDivisor(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger One System.Numerics.BigInteger: System.Numerics.BigInteger Parse(System.String) System.Numerics.BigInteger: System.Numerics.BigInteger Pow(System.Numerics.BigInteger, Int32) System.Numerics.BigInteger: System.Numerics.BigInteger Zero System.Numerics.BigInteger: System.Numerics.BigInteger get_One() System.Numerics.BigInteger: System.Numerics.BigInteger get_Zero() System.Numerics.BigInteger: System.Numerics.BigInteger op_Addition(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Division(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Modulus(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Multiply(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Subtraction(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_UnaryNegation(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_UnaryPlus(System.Numerics.BigInteger) System.Numerics.BigInteger: System.String ToString() System.Numerics.BigInteger: System.Type GetType() System.Numerics.BigInteger: Void .ctor(Int32) System.Numerics.BigInteger: Void .ctor(Int64) System.Threading.CancellationToken: Boolean Equals(System.Object) System.Threading.CancellationToken: Boolean Equals(System.Threading.CancellationToken) System.Threading.CancellationToken: Boolean IsCancellationRequested System.Threading.CancellationToken: Boolean get_IsCancellationRequested() System.Threading.CancellationToken: Boolean op_Equality(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationToken: Boolean op_Inequality(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationToken: Int32 GetHashCode() System.Threading.CancellationToken: System.String ToString() System.Threading.CancellationToken: System.Threading.CancellationTokenRegistration Register(System.Action`1[System.Object], System.Object) System.Threading.CancellationToken: System.Type GetType() System.Threading.CancellationTokenRegistration: Boolean Equals(System.Object) System.Threading.CancellationTokenRegistration: Boolean Equals(System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Boolean op_Equality(System.Threading.CancellationTokenRegistration, System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Boolean op_Inequality(System.Threading.CancellationTokenRegistration, System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Int32 GetHashCode() System.Threading.CancellationTokenRegistration: System.String ToString() System.Threading.CancellationTokenRegistration: System.Type GetType() System.Threading.CancellationTokenRegistration: Void Dispose() System.Threading.CancellationTokenSource: Boolean Equals(System.Object) System.Threading.CancellationTokenSource: Int32 GetHashCode() System.Threading.CancellationTokenSource: System.String ToString() System.Threading.CancellationTokenSource: System.Threading.CancellationToken Token System.Threading.CancellationTokenSource: System.Threading.CancellationToken get_Token() System.Threading.CancellationTokenSource: System.Threading.CancellationTokenSource CreateLinkedTokenSource(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationTokenSource: System.Type GetType() System.Threading.CancellationTokenSource: Void .ctor() System.Threading.CancellationTokenSource: Void Cancel() System.Threading.CancellationTokenSource: Void Dispose() System.Tuple: Boolean Equals(System.Object) System.Tuple: Int32 GetHashCode() System.Tuple: System.String ToString() System.Tuple: System.Tuple`1[T1] Create[T1](T1) System.Tuple: System.Tuple`2[T1,T2] Create[T1,T2](T1, T2) System.Tuple: System.Tuple`3[T1,T2,T3] Create[T1,T2,T3](T1, T2, T3) System.Tuple: System.Tuple`4[T1,T2,T3,T4] Create[T1,T2,T3,T4](T1, T2, T3, T4) System.Tuple: System.Tuple`5[T1,T2,T3,T4,T5] Create[T1,T2,T3,T4,T5](T1, T2, T3, T4, T5) System.Tuple: System.Tuple`6[T1,T2,T3,T4,T5,T6] Create[T1,T2,T3,T4,T5,T6](T1, T2, T3, T4, T5, T6) System.Tuple: System.Tuple`7[T1,T2,T3,T4,T5,T6,T7] Create[T1,T2,T3,T4,T5,T6,T7](T1, T2, T3, T4, T5, T6, T7) System.Tuple: System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,System.Tuple`1[T8]] Create[T1,T2,T3,T4,T5,T6,T7,T8](T1, T2, T3, T4, T5, T6, T7, T8) System.Tuple: System.Type GetType() System.Tuple`1[T1]: Boolean Equals(System.Object) System.Tuple`1[T1]: Int32 GetHashCode() System.Tuple`1[T1]: System.String ToString() System.Tuple`1[T1]: System.Type GetType() System.Tuple`1[T1]: T1 Item1 System.Tuple`1[T1]: T1 get_Item1() System.Tuple`1[T1]: Void .ctor(T1) System.Tuple`2[T1,T2]: Boolean Equals(System.Object) System.Tuple`2[T1,T2]: Int32 GetHashCode() System.Tuple`2[T1,T2]: System.String ToString() System.Tuple`2[T1,T2]: System.Type GetType() System.Tuple`2[T1,T2]: T1 Item1 System.Tuple`2[T1,T2]: T1 get_Item1() System.Tuple`2[T1,T2]: T2 Item2 System.Tuple`2[T1,T2]: T2 get_Item2() System.Tuple`2[T1,T2]: Void .ctor(T1, T2) System.Tuple`3[T1,T2,T3]: Boolean Equals(System.Object) System.Tuple`3[T1,T2,T3]: Int32 GetHashCode() System.Tuple`3[T1,T2,T3]: System.String ToString() System.Tuple`3[T1,T2,T3]: System.Type GetType() System.Tuple`3[T1,T2,T3]: T1 Item1 System.Tuple`3[T1,T2,T3]: T1 get_Item1() System.Tuple`3[T1,T2,T3]: T2 Item2 System.Tuple`3[T1,T2,T3]: T2 get_Item2() System.Tuple`3[T1,T2,T3]: T3 Item3 System.Tuple`3[T1,T2,T3]: T3 get_Item3() System.Tuple`3[T1,T2,T3]: Void .ctor(T1, T2, T3) System.Tuple`4[T1,T2,T3,T4]: Boolean Equals(System.Object) System.Tuple`4[T1,T2,T3,T4]: Int32 GetHashCode() System.Tuple`4[T1,T2,T3,T4]: System.String ToString() System.Tuple`4[T1,T2,T3,T4]: System.Type GetType() System.Tuple`4[T1,T2,T3,T4]: T1 Item1 System.Tuple`4[T1,T2,T3,T4]: T1 get_Item1() System.Tuple`4[T1,T2,T3,T4]: T2 Item2 System.Tuple`4[T1,T2,T3,T4]: T2 get_Item2() System.Tuple`4[T1,T2,T3,T4]: T3 Item3 System.Tuple`4[T1,T2,T3,T4]: T3 get_Item3() System.Tuple`4[T1,T2,T3,T4]: T4 Item4 System.Tuple`4[T1,T2,T3,T4]: T4 get_Item4() System.Tuple`4[T1,T2,T3,T4]: Void .ctor(T1, T2, T3, T4) System.Tuple`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) System.Tuple`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() System.Tuple`5[T1,T2,T3,T4,T5]: System.String ToString() System.Tuple`5[T1,T2,T3,T4,T5]: System.Type GetType() System.Tuple`5[T1,T2,T3,T4,T5]: T1 Item1 System.Tuple`5[T1,T2,T3,T4,T5]: T1 get_Item1() System.Tuple`5[T1,T2,T3,T4,T5]: T2 Item2 System.Tuple`5[T1,T2,T3,T4,T5]: T2 get_Item2() System.Tuple`5[T1,T2,T3,T4,T5]: T3 Item3 System.Tuple`5[T1,T2,T3,T4,T5]: T3 get_Item3() System.Tuple`5[T1,T2,T3,T4,T5]: T4 Item4 System.Tuple`5[T1,T2,T3,T4,T5]: T4 get_Item4() System.Tuple`5[T1,T2,T3,T4,T5]: T5 Item5 System.Tuple`5[T1,T2,T3,T4,T5]: T5 get_Item5() System.Tuple`5[T1,T2,T3,T4,T5]: Void .ctor(T1, T2, T3, T4, T5) System.Tuple`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) System.Tuple`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() System.Tuple`6[T1,T2,T3,T4,T5,T6]: System.String ToString() System.Tuple`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T1 Item1 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T1 get_Item1() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T2 Item2 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T2 get_Item2() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T3 Item3 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T3 get_Item3() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T4 Item4 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T4 get_Item4() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T5 Item5 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T5 get_Item5() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T6 Item6 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T6 get_Item6() System.Tuple`6[T1,T2,T3,T4,T5,T6]: Void .ctor(T1, T2, T3, T4, T5, T6) System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T1 Item1 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item1() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T2 Item2 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item2() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T3 Item3 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item3() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T4 Item4 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item4() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T5 Item5 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item5() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T6 Item6 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item6() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T7 Item7 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item7() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Void .ctor(T1, T2, T3, T4, T5, T6, T7) System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Boolean Equals(System.Object) System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Int32 GetHashCode() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: System.String ToString() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: System.Type GetType() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T1 Item1 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T1 get_Item1() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T2 Item2 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T2 get_Item2() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T3 Item3 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T3 get_Item3() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T4 Item4 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T4 get_Item4() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T5 Item5 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T5 get_Item5() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T6 Item6 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T6 get_Item6() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T7 Item7 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T7 get_Item7() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: TRest Rest System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: TRest get_Rest() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Void .ctor(T1, T2, T3, T4, T5, T6, T7, TRest) " let act = actual.ToString() if expected <> act then printf "%s" act Assert.AreEqual(expected, act) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/SurfaceArea.4.0.fs0000775000175000017500000124475112260314606023251 0ustar chrischrisnamespace FSharp.Core.Unittests.SurfaceArea open NUnit.Framework [] type SurfaceAreaTest() = [] member this.VerifyArea() = let file = typeof.Assembly.Location let asm = System.Reflection.Assembly.ReflectionOnlyLoadFrom(file) let referenced = asm.GetReferencedAssemblies() for ref in referenced do System.Reflection.Assembly.ReflectionOnlyLoad(ref.FullName) |> ignore let types = asm.GetExportedTypes() let actual = new System.Text.StringBuilder() actual.Append("\r\n") |> ignore let values = types |> Array.collect (fun t -> t.GetMembers()) |> Array.map (fun v -> sprintf "%s: %s" (v.ReflectedType.ToString()) (v.ToString())) |> Array.sort |> Array.iter (fun s -> actual.Append(s) |> ignore actual.Append("\r\n") |> ignore) let dev10 = Dev10Net40Baseline.dev10 let postdev10 = @" Microsoft.FSharp.Collections.Array2DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array2DModule: Int32 Base1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Base2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array2DModule: Int32 Length1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Length2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: System.String ToString() Microsoft.FSharp.Collections.Array2DModule: System.Type GetType() Microsoft.FSharp.Collections.Array2DModule: T Get[T](T[,], Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: TResult[,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: TResult[,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Copy[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] CreateBased[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] Create[T](Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] InitializeBased[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Initialize[T](Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Rebase[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreateBased[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreate[T](Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void CopyTo[T](T[,], Int32, Int32, T[,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Set[T](T[,], Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array3DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array3DModule: Int32 Length1[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length2[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length3[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: System.String ToString() Microsoft.FSharp.Collections.Array3DModule: System.Type GetType() Microsoft.FSharp.Collections.Array3DModule: T Get[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,,]) Microsoft.FSharp.Collections.Array3DModule: T[,,] Create[T](Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: T[,,] Initialize[T](Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]) Microsoft.FSharp.Collections.Array3DModule: T[,,] ZeroCreate[T](Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Set[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array4DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array4DModule: Int32 Length1[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length2[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length3[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length4[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: System.String ToString() Microsoft.FSharp.Collections.Array4DModule: System.Type GetType() Microsoft.FSharp.Collections.Array4DModule: T Get[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Create[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Initialize[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]]) Microsoft.FSharp.Collections.Array4DModule: T[,,,] ZeroCreate[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: Void Set[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule+Parallel: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule+Parallel: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule+Parallel: System.String ToString() Microsoft.FSharp.Collections.ArrayModule+Parallel: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule+Parallel: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean IsEmpty[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule: Int32 Length[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.ArrayModule+Parallel Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](T[]) Microsoft.FSharp.Collections.ArrayModule: System.String ToString() Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1,T2][] Zip[T1,T2](T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1[],T2[]] Unzip[T1,T2](System.Tuple`2[T1,T2][]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1,T2,T3][] Zip3[T1,T2,T3](T1[], T2[], T3[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1[],T2[],T3[]] Unzip3[T1,T2,T3](System.Tuple`3[T1,T2,T3][]) Microsoft.FSharp.Collections.ArrayModule: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule: T Average[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T Get[T](T[], Int32) Microsoft.FSharp.Collections.ArrayModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Max[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Min[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Sum[T](T[]) Microsoft.FSharp.Collections.ArrayModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], T1[], T2[], TState) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: TState[] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState[] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Append[T](T[], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Concat[T](System.Collections.Generic.IEnumerable`1[T[]]) Microsoft.FSharp.Collections.ArrayModule: T[] Copy[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Create[T](Int32, T) Microsoft.FSharp.Collections.ArrayModule: T[] Empty[T]() Microsoft.FSharp.Collections.ArrayModule: T[] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] GetSubArray[T](T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Reverse[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Sort[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] ZeroCreate[T](Int32) Microsoft.FSharp.Collections.ArrayModule: Void CopyTo[T](T[], Int32, T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: Void Fill[T](T[], Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Set[T](T[], Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlace[T](T[]) Microsoft.FSharp.Collections.ComparisonIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ComparisonIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] FromFunction[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]]) Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.ComparisonIdentity: System.String ToString() Microsoft.FSharp.Collections.ComparisonIdentity: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsCons() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Length Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Tag Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Length() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Tag() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1+Tags[T] Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Cons(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Tail Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] TailOrNull Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Empty() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Tail() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_TailOrNull() Microsoft.FSharp.Collections.FSharpList`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: T Head Microsoft.FSharp.Collections.FSharpList`1[T]: T HeadOrDefault Microsoft.FSharp.Collections.FSharpList`1[T]: T Item [Int32] Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Head() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_HeadOrDefault() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Item(Int32) Microsoft.FSharp.Collections.FSharpList`1[T]: Void .ctor(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean ContainsKey(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 Count Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Add(TKey, TValue) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Remove(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Core.FSharpOption`1[TValue] TryFind(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.String ToString() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.Type GetType() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue Item [TKey] Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue get_Item(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Void .ctor(System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Contains(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 Count Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Add(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Addition(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Subtraction(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpSet`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpSet`1[T]: T MaximumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T MinimumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MaximumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MinimumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.HashIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.HashIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] FromFunctions[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]]) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] LimitedStructural[T](Int32) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Reference[T]() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.HashIdentity: System.String ToString() Microsoft.FSharp.Collections.HashIdentity: System.Type GetType() Microsoft.FSharp.Collections.ListModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ListModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ListModule: Int32 Length[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]] Zip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Collections.FSharpList`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Concat[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpList`1[T]]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Empty[T]() Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Replicate[T](Int32, T) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Reverse[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Sort[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Tail[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.String ToString() Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2]] Unzip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]]) Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T],Microsoft.FSharp.Collections.FSharpList`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2],Microsoft.FSharp.Collections.FSharpList`1[T3]] Unzip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]]) Microsoft.FSharp.Collections.ListModule: System.Type GetType() Microsoft.FSharp.Collections.ListModule: T Average[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Get[T](Microsoft.FSharp.Collections.FSharpList`1[T], Int32) Microsoft.FSharp.Collections.ListModule: T Head[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Max[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Min[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Sum[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], TState) Microsoft.FSharp.Collections.ListModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.MapModule: Boolean ContainsKey[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.MapModule: Boolean Exists[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean ForAll[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean IsEmpty[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Int32 GetHashCode() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]] ToList[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TResult] Map[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Add[TKey,T](TKey, T, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Empty[TKey,T]() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Filter[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfArray[TKey,T](System.Tuple`2[TKey,T][]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfList[TKey,T](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfSeq[TKey,T](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Remove[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TKey] TryFindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]] ToSeq[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.String ToString() Microsoft.FSharp.Collections.MapModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpMap`2[TKey,T],Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]] Partition[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Tuple`2[TKey,T][] ToArray[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Type GetType() Microsoft.FSharp.Collections.MapModule: T Find[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TKey FindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TResult Pick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TState FoldBack[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T], TState) Microsoft.FSharp.Collections.MapModule: TState Fold[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]]], TState, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Void Iterate[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.SeqModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SeqModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean IsEmpty[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 CompareWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SeqModule: Int32 Length[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T,T]] Pairwise[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T1,T2]] Zip[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Collections.Generic.IEnumerable`1[T]]] GroupBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Int32]] CountBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2], System.Collections.Generic.IEnumerable`1[T3]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Collect[T,TCollection,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T[]] Windowed[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Append[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cache[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cast[T](System.Collections.IEnumerable) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Concat[TCollection,T](System.Collections.Generic.IEnumerable`1[TCollection]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable`1[T]]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] DistinctBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Distinct[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Empty[T]() Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] InitializeInfinite[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] ReadOnly[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SkipWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Skip[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Sort[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] TakeWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Take[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Truncate[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Unfold[TState,T](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[T,TState]]], TState) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Where[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.String ToString() Microsoft.FSharp.Collections.SeqModule: System.Type GetType() Microsoft.FSharp.Collections.SeqModule: T Average[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T ExactlyOne[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Get[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Head[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Last[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Max[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Min[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Sum[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T[] ToArray[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Contains[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SetModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 Count[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Add[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Difference[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Empty[T]() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] IntersectMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Intersect[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] UnionMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Union[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.String ToString() Microsoft.FSharp.Collections.SetModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpSet`1[T],Microsoft.FSharp.Collections.FSharpSet`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Type GetType() Microsoft.FSharp.Collections.SetModule: T MaxElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T MinElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpSet`1[T], TState) Microsoft.FSharp.Collections.SetModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Control.CommonExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.CommonExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] AsyncWrite(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Byte[]] AsyncReadBytes(System.IO.Stream, Int32) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Int32] AsyncRead(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: System.IDisposable SubscribeToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.CommonExtensions: System.String ToString() Microsoft.FSharp.Control.CommonExtensions: System.Type GetType() Microsoft.FSharp.Control.CommonExtensions: Void AddToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.EventModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.EventModule: Int32 GetHashCode() Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[System.Tuple`2[T,T]],System.Tuple`2[T,T]] Pairwise[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Choose[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Map[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Scan[TResult,T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Filter[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Merge[TDel1,T,TDel2](Microsoft.FSharp.Control.IEvent`2[TDel1,T], Microsoft.FSharp.Control.IEvent`2[TDel2,T]) Microsoft.FSharp.Control.EventModule: System.String ToString() Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult1],TResult1],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult2],TResult2]] Split[T,TResult1,TResult2,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T]] Partition[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Type GetType() Microsoft.FSharp.Control.EventModule: Void Add[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.FSharpAsync: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Control.FSharpAsync`1[T]] StartChild[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpChoice`2[T,System.Exception]] Catch[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Ignore[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Sleep(Int32) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToContext(System.Threading.SynchronizationContext) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToNewThread() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToThreadPool() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitIAsyncResult(System.IAsyncResult, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitWaitHandle(System.Threading.WaitHandle, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.IDisposable] OnCancel(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] CancellationToken Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] get_CancellationToken() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.Tasks.Task`1[T]] StartChildAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T[]] Parallel[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitEvent[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitTask[T](System.Threading.Tasks.Task`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,TArg3,T](TArg1, TArg2, TArg3, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[TArg1,TArg2,TArg3,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,T](TArg1, TArg2, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[TArg1,TArg2,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,T](TArg1, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg1,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromContinuations[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]],Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] TryCancelled[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: System.String ToString() Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken DefaultCancellationToken Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken get_DefaultCancellationToken() Microsoft.FSharp.Control.FSharpAsync: System.Threading.Tasks.Task`1[T] StartAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg,System.AsyncCallback,System.Object],System.IAsyncResult],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,Microsoft.FSharp.Core.Unit]] AsBeginEnd[TArg,T](Microsoft.FSharp.Core.FSharpFunc`2[TArg,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: System.Type GetType() Microsoft.FSharp.Control.FSharpAsync: T RunSynchronously[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void CancelDefaultToken() Microsoft.FSharp.Control.FSharpAsync: Void Start(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartImmediate(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartWithContinuations[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncBuilder: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] For[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] While(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Zero() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Bind[T,TResult](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Combine[T](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] ReturnFrom[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Return[T](T) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryFinally[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryWith[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncBuilder: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Void Reply(TReply) Microsoft.FSharp.Control.FSharpAsync`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] Publish Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] get_Publish() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.String ToString() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void .ctor() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void Trigger(System.Object[]) Microsoft.FSharp.Control.FSharpEvent`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Publish Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] get_Publish() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void Trigger(T) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] Publish Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] get_Publish() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void Trigger(System.Object, TArgs) Microsoft.FSharp.Control.FSharpHandler`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Delegate[] GetInvocationList() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.IAsyncResult BeginInvoke(System.Object, T, System.AsyncCallback, System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Clone() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object DynamicInvoke(System.Object[]) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Target Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object get_Target() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo Method Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo get_Method() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpHandler`1[T]: Void .ctor(System.Object, IntPtr) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void EndInvoke(System.IAsyncResult) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void Invoke(System.Object, T) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 CurrentQueueLength Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 DefaultTimeout Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_CurrentQueueLength() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_DefaultTimeout() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TMsg]] TryReceive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TReply]] PostAndTryAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[T]] TryScan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TMsg] Receive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TReply] PostAndAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[T] Scan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpHandler`1[System.Exception] Error Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg] Start(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Core.FSharpOption`1[TReply] TryPostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.String ToString() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.Type GetType() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: TReply PostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Post(TMsg) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Start() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void add_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void remove_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void set_DefaultTimeout(Int32) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void AddHandler(TDelegate) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void RemoveHandler(TDelegate) Microsoft.FSharp.Control.LazyExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.LazyExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] CreateFromValue[T](T) Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] Create[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Control.LazyExtensions: System.String ToString() Microsoft.FSharp.Control.LazyExtensions: System.Type GetType() Microsoft.FSharp.Control.LazyExtensions: T Force[T](System.Lazy`1[T]) Microsoft.FSharp.Control.ObservableModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.ObservableModule: Int32 GetHashCode() Microsoft.FSharp.Control.ObservableModule: System.IDisposable Subscribe[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[System.Tuple`2[T,T]] Pairwise[T](System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Scan[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Merge[T](System.IObservable`1[T], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.String ToString() Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[TResult1],System.IObservable`1[TResult2]] Split[T,TResult1,TResult2](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[T],System.IObservable`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Type GetType() Microsoft.FSharp.Control.ObservableModule: Void Add[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.WebExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.WebExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Net.WebResponse] AsyncGetResponse(System.Net.WebRequest) Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.String] AsyncDownloadString(System.Net.WebClient, System.Uri) Microsoft.FSharp.Control.WebExtensions: System.String ToString() Microsoft.FSharp.Control.WebExtensions: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AbstractClassAttribute: System.Object TypeId Microsoft.FSharp.Core.AbstractClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AbstractClassAttribute: System.String ToString() Microsoft.FSharp.Core.AbstractClassAttribute: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Void .ctor() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.String ToString() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoOpenAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoOpenAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoOpenAttribute: System.String Path Microsoft.FSharp.Core.AutoOpenAttribute: System.String ToString() Microsoft.FSharp.Core.AutoOpenAttribute: System.String get_Path() Microsoft.FSharp.Core.AutoOpenAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Value Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean get_Value() Microsoft.FSharp.Core.AutoSerializableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoSerializableAttribute: System.String ToString() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoSerializableAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIEventAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIEventAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIEventAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIEventAttribute: System.String ToString() Microsoft.FSharp.Core.CLIEventAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIEventAttribute: Void .ctor() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIMutableAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIMutableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIMutableAttribute: System.String ToString() Microsoft.FSharp.Core.CLIMutableAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIMutableAttribute: Void .ctor() Microsoft.FSharp.Core.ClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ClassAttribute: System.Object TypeId Microsoft.FSharp.Core.ClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ClassAttribute: System.String ToString() Microsoft.FSharp.Core.ClassAttribute: System.Type GetType() Microsoft.FSharp.Core.ClassAttribute: Void .ctor() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] Counts Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] get_Counts() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Void .ctor(Int32[]) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 SequenceNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 VariantNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_SequenceNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_VariantNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags SourceConstructFlags Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags get_SourceConstructFlags() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationMappingAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32, Int32) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags Flags Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags get_Flags() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Void .ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 value__ Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Event Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Instance Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags ModuleSuffix Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags None Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Static Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags UseNullAsTrueValue Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String SourceName Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String get_SourceName() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompiledNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompiledNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompiledNameAttribute: System.String CompiledName Microsoft.FSharp.Core.CompiledNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompiledNameAttribute: System.String get_CompiledName() Microsoft.FSharp.Core.CompiledNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompiledNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsError Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsHidden Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsError() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsHidden() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 MessageNumber Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 get_MessageNumber() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String Message Microsoft.FSharp.Core.CompilerMessageAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String get_Message() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerMessageAttribute: Void .ctor(System.String, Int32) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsError(Boolean) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsHidden(Boolean) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean CheckClose Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean get_CheckClose() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GenerateNext(System.Collections.Generic.IEnumerable`1[T] ByRef) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Collections.Generic.IEnumerator`1[T] GetFreshEnumerator() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T LastGenerated Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T get_LastGenerated() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Void Close() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace[] GetNestedNamespaces() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.String NamespaceName Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.String get_NamespaceName() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.Type ResolveTypeName(System.String) Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.Type[] GetTypes() Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Byte[] GetGeneratedAssemblyContents(System.Reflection.Assembly) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace[] GetNamespaces() Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Microsoft.FSharp.Quotations.FSharpExpr GetInvokerExpression(System.Reflection.MethodBase, Microsoft.FSharp.Quotations.FSharpExpr[]) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.EventHandler Invalidate Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.Reflection.ParameterInfo[] GetStaticParameters(System.Type) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.Type ApplyStaticArguments(System.Type, System.String[], System.Object[]) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Void add_Invalidate(System.EventHandler) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Void remove_Invalidate(System.EventHandler) Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.MeasureOne: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureOne: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureOne: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureOne: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] CreateEvent[TDelegate,TArgs](Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Core.FSharpFunc`2[TArgs,Microsoft.FSharp.Core.Unit]],TDelegate]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateFromFunctions[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateUsing[T,TCollection,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateThenFinally[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.String ToString() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String AssemblyName Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String get_AssemblyName() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean IsHostedExecution Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean IsInvalidationSupported Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean SystemRuntimeContainsType(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean get_IsHostedExecution() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean get_IsInvalidationSupported() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String ResolutionFolder Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String RuntimeAssembly Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String TemporaryFolder Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_ResolutionFolder() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_RuntimeAssembly() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_TemporaryFolder() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String[] ReferencedAssemblies Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String[] get_ReferencedAssemblies() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Version SystemRuntimeAssemblyVersion Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Version get_SystemRuntimeAssemblyVersion() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[System.String,System.Boolean]) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_IsHostedExecution(Boolean) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_IsInvalidationSupported(Boolean) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_ReferencedAssemblies(System.String[]) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_ResolutionFolder(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_RuntimeAssembly(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_SystemRuntimeAssemblyVersion(System.Version) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_TemporaryFolder(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 Column Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 Line Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 get_Column() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 get_Line() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String FilePath Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String get_FilePath() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_Column(Int32) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_FilePath(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_Line(Int32) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 value__ Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes IsErased Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes SuppressRelocate Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String CommentText Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String get_CommentText() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean AllowIntoPattern Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeGroupJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeZip Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpace Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpaceUsingBind Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_AllowIntoPattern() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeGroupJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeZip() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpace() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpaceUsingBind() Microsoft.FSharp.Core.CustomOperationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomOperationAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomOperationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomOperationAttribute: System.String JoinConditionWord Microsoft.FSharp.Core.CustomOperationAttribute: System.String Name Microsoft.FSharp.Core.CustomOperationAttribute: System.String ToString() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_JoinConditionWord() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_Name() Microsoft.FSharp.Core.CustomOperationAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomOperationAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_AllowIntoPattern(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeGroupJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeZip(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_JoinConditionWord(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpace(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpaceUsingBind(Boolean) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Value Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean get_Value() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Check Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean get_Check() Microsoft.FSharp.Core.DefaultValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultValueAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultValueAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultValueAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EntryPointAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EntryPointAttribute: System.Object TypeId Microsoft.FSharp.Core.EntryPointAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EntryPointAttribute: System.String ToString() Microsoft.FSharp.Core.EntryPointAttribute: System.Type GetType() Microsoft.FSharp.Core.EntryPointAttribute: Void .ctor() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ExperimentalAttribute: System.Object TypeId Microsoft.FSharp.Core.ExperimentalAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ExperimentalAttribute: System.String Message Microsoft.FSharp.Core.ExperimentalAttribute: System.String ToString() Microsoft.FSharp.Core.ExperimentalAttribute: System.String get_Message() Microsoft.FSharp.Core.ExperimentalAttribute: System.Type GetType() Microsoft.FSharp.Core.ExperimentalAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.ExtraTopLevelOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExtraTopLevelOperators: Byte ToByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Double ToDouble[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Int32 GetHashCode() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Collections.FSharpSet`1[T] CreateSet[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder DefaultAsyncBuilder Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder get_DefaultAsyncBuilder() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Linq.QueryBuilder get_query() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Linq.QueryBuilder query Microsoft.FSharp.Core.ExtraTopLevelOperators: SByte ToSByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Single ToSingle[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Collections.Generic.IDictionary`2[TKey,TValue] CreateDictionary[TKey,TValue](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.String ToString() Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Type GetType() Microsoft.FSharp.Core.ExtraTopLevelOperators: T LazyPattern[T](System.Lazy`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToString[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceUntypedExpression[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Core.ExtraTopLevelOperators: T[,] CreateArray2D[?,T](System.Collections.Generic.IEnumerable`1[?]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice1Of2(T1) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice2Of2(T2) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice1Of3(T1) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice2Of3(T2) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice3Of3(T3) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice1Of4(T1) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice2Of4(T2) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice3Of4(T3) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice4Of4(T4) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice1Of5(T1) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice2Of5(T2) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice3Of5(T3) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice4Of5(T4) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice5Of5(T5) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice1Of6(T1) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice2Of6(T2) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice3Of6(T3) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice4Of6(T4) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice5Of6(T5) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice6Of6(T6) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice1Of7(T1) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice2Of7(T2) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice3Of7(T3) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice4Of7(T4) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice5Of7(T5) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice6Of7(T6) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice7Of7(T7) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] FromConverter(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] op_Implicit(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] ToConverter(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] op_Implicit(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.String ToString() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: TResult Invoke(T) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: V InvokeFast[V](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,V]], T, TResult) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: W InvokeFast[V,W](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,W]]], T, TResult, V) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: X InvokeFast[V,W,X](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,X]]]], T, TResult, V, W) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Y InvokeFast[V,W,X,Y](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,Microsoft.FSharp.Core.FSharpFunc`2[X,Y]]]]], T, TResult, V, W, X) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Major Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Minor Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Release Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Major() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Minor() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Release() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object TypeId Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.String ToString() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Type GetType() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int32, Int32) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsSome Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsNone(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsSome(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetTag(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1+Tags[T] Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] None Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] Some(T) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] get_None() Microsoft.FSharp.Core.FSharpOption`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpRef`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpRef`1[T]: T Value Microsoft.FSharp.Core.FSharpRef`1[T]: T contents Microsoft.FSharp.Core.FSharpRef`1[T]: T contents@ Microsoft.FSharp.Core.FSharpRef`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpRef`1[T]: T get_contents() Microsoft.FSharp.Core.FSharpRef`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_Value(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpTypeFunc: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpTypeFunc: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpTypeFunc: System.Object Specialize[T]() Microsoft.FSharp.Core.FSharpTypeFunc: System.String ToString() Microsoft.FSharp.Core.FSharpTypeFunc: System.Type GetType() Microsoft.FSharp.Core.FuncConvert: Boolean Equals(System.Object) Microsoft.FSharp.Core.FuncConvert: Int32 GetHashCode() Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit] ToFSharpFunc[T](System.Action`1[T]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] ToFSharpFunc[T,TResult](System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]] FuncFromTupled[T1,T2,T3,T4,T5,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[T1,T2,T3,T4,T5],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]] FuncFromTupled[T1,T2,T3,T4,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[T1,T2,T3,T4],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]] FuncFromTupled[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[T1,T2,T3],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]] FuncFromTupled[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[T1,T2],TResult]) Microsoft.FSharp.Core.FuncConvert: System.String ToString() Microsoft.FSharp.Core.FuncConvert: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object TypeId Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.String ToString() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Void .ctor() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.InterfaceAttribute: System.Object TypeId Microsoft.FSharp.Core.InterfaceAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.InterfaceAttribute: System.String ToString() Microsoft.FSharp.Core.InterfaceAttribute: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Void .ctor() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String AddressOpNotFirstClassString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputArrayEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputMustBeNonNegativeString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputSequenceEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String NoNegateMinValueString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_AddressOpNotFirstClassString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputArrayEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputMustBeNonNegativeString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputSequenceEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_NoNegateMinValueString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityERIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean PhysicalEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple2[T1,T2](System.Collections.IComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple3[T1,T2,T3](System.Collections.IComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple4[T1,T2,T3,T4](System.Collections.IComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple5[T1,T2,T3,T4,T5](System.Collections.IComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonWithComparerIntrinsic[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 LimitedGenericHashIntrinsic[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 PhysicalHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Char GetString(System.String, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Decimal MakeDecimal(Int32, Int32, Int32, Boolean, Byte) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CheckThis[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CreateInstance[T]() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray2D[T](T[,], Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray3D[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray4D[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray[T](T[], Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void Dispose[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailStaticInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray2D[T](T[,], Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray3D[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray4D[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray[T](T[], Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Or(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_Amp(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanAnd(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanOr(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: IntPtr op_IntegerAddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: T& op_AddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityER[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityWithComparer[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean PhysicalEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Double FloatWithMeasure(Double) Microsoft.FSharp.Core.LanguagePrimitives: Int16 Int16WithMeasure(Int16) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparisonWithComparer[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparison[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHashWithComparer[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericLimitedHash[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives: Int32 Int32WithMeasure(Int32) Microsoft.FSharp.Core.LanguagePrimitives: Int32 ParseInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Int32 PhysicalHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int64 Int64WithMeasure(Int64) Microsoft.FSharp.Core.LanguagePrimitives: Int64 ParseInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+HashCompare Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators Microsoft.FSharp.Core.LanguagePrimitives: SByte SByteWithMeasure(SByte) Microsoft.FSharp.Core.LanguagePrimitives: Single Float32WithMeasure(Single) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IComparer`1[T] FastGenericComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastGenericEqualityComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastLimitedGenericEqualityComparer[T](Int32) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer GenericComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer get_GenericComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityERComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityERComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Decimal DecimalWithMeasure(System.Decimal) Microsoft.FSharp.Core.LanguagePrimitives: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives: T DivideByIntDynamic[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T DivideByInt[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T EnumToValue[TEnum,T](TEnum) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMaximum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMinimum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericOneDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericOne[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZeroDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZero[T]() Microsoft.FSharp.Core.LanguagePrimitives: TEnum EnumOfValue[T,TEnum](T) Microsoft.FSharp.Core.LanguagePrimitives: TResult AdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedAdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedMultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult MultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: UInt32 ParseUInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.LiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.LiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.LiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.LiteralAttribute: System.String ToString() Microsoft.FSharp.Core.LiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 Microsoft.FSharp.Core.MatchFailureException: Int32 Data2 Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode() Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 HResult Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data1() Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data2() Microsoft.FSharp.Core.MatchFailureException: Int32 get_HResult() Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary Data Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Core.MatchFailureException: System.Exception GetBaseException() Microsoft.FSharp.Core.MatchFailureException: System.Exception InnerException Microsoft.FSharp.Core.MatchFailureException: System.Exception get_InnerException() Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase TargetSite Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase get_TargetSite() Microsoft.FSharp.Core.MatchFailureException: System.String Data0 Microsoft.FSharp.Core.MatchFailureException: System.String HelpLink Microsoft.FSharp.Core.MatchFailureException: System.String Message Microsoft.FSharp.Core.MatchFailureException: System.String Source Microsoft.FSharp.Core.MatchFailureException: System.String StackTrace Microsoft.FSharp.Core.MatchFailureException: System.String ToString() Microsoft.FSharp.Core.MatchFailureException: System.String get_Data0() Microsoft.FSharp.Core.MatchFailureException: System.String get_HelpLink() Microsoft.FSharp.Core.MatchFailureException: System.String get_Message() Microsoft.FSharp.Core.MatchFailureException: System.String get_Source() Microsoft.FSharp.Core.MatchFailureException: System.String get_StackTrace() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Void .ctor(System.String, Int32, Int32) Microsoft.FSharp.Core.MatchFailureException: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Core.MatchFailureException: Void set_HelpLink(System.String) Microsoft.FSharp.Core.MatchFailureException: Void set_Source(System.String) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Void .ctor() Microsoft.FSharp.Core.MeasureAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAttribute: Void .ctor() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.NoComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.NoComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.NoComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object TypeId Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.String ToString() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Type GetType() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Void .ctor() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.NoEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.NoEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.NoEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromInt64Dynamic(Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromStringDynamic(System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.String ToString() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Type GetType() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt32[T](Int32) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt64[T](Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromOne[T]() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromString[T](System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromZero[T]() Microsoft.FSharp.Core.NumericLiterals: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals: Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI Microsoft.FSharp.Core.NumericLiterals: System.String ToString() Microsoft.FSharp.Core.NumericLiterals: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Checked: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators+Checked: Char ToChar[T](T) Microsoft.FSharp.Core.Operators+Checked: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators+Checked: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators+Checked: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators+Checked: System.String ToString() Microsoft.FSharp.Core.Operators+Checked: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators+Checked: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Byte PowByte(Byte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Double PowDouble(Double, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int16 PowInt16(Int16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 PowInt32(Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 SignDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int64 PowInt64(Int64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: IntPtr PowIntPtr(IntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: SByte PowSByte(SByte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Single PowSingle(Single, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Byte] RangeByte(Byte, Byte, Byte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Char] RangeChar(Char, Char) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Double] RangeDouble(Double, Double, Double) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int16] RangeInt16(Int16, Int16, Int16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int32] RangeInt32(Int32, Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int64] RangeInt64(Int64, Int64, Int64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.IntPtr] RangeIntPtr(IntPtr, IntPtr, IntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.SByte] RangeSByte(SByte, SByte, SByte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Single] RangeSingle(Single, Single, Single) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt16] RangeUInt16(UInt16, UInt16, UInt16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt32] RangeUInt32(UInt32, UInt32, UInt32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt64] RangeUInt64(UInt64, UInt64, UInt64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UIntPtr] RangeUIntPtr(UIntPtr, UIntPtr, UIntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeStepGeneric[TStep,T](TStep, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TStep,T]], T, TStep, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Decimal PowDecimal(System.Decimal, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String GetStringSlice(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String ToString() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Type GetType() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AbsDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AcosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AsinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AtanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CeilingDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CoshDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T ExpDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T FloorDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T Log10Dynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T LogDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowDynamic[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T RoundDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TruncateDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 Atan2Dynamic[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 SqrtDynamic[T1,T2](T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,,] GetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,] GetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,] GetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[] GetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt16 PowUInt16(UInt16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt32 PowUInt32(UInt32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt64 PowUInt64(UInt64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UIntPtr PowUIntPtr(UIntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[]) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Unchecked: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators+Unchecked: System.String ToString() Microsoft.FSharp.Core.Operators+Unchecked: System.Type GetType() Microsoft.FSharp.Core.Operators+Unchecked: T DefaultOf[T]() Microsoft.FSharp.Core.Operators+Unchecked: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators: Boolean Not(Boolean) Microsoft.FSharp.Core.Operators: Boolean op_Equality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThan[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_Inequality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThan[T](T, T) Microsoft.FSharp.Core.Operators: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators: Char ToChar[T](T) Microsoft.FSharp.Core.Operators: Double Infinity Microsoft.FSharp.Core.Operators: Double NaN Microsoft.FSharp.Core.Operators: Double ToDouble[T](T) Microsoft.FSharp.Core.Operators: Double get_Infinity() Microsoft.FSharp.Core.Operators: Double get_NaN() Microsoft.FSharp.Core.Operators: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators: Int32 GetHashCode() Microsoft.FSharp.Core.Operators: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators: Int32 Sign[T](T) Microsoft.FSharp.Core.Operators: Int32 SizeOf[T]() Microsoft.FSharp.Core.Operators: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators: Int32 limitedHash[T](Int32, T) Microsoft.FSharp.Core.Operators: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Collections.FSharpList`1[T] op_Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeLeft[T2,T3,T1](Microsoft.FSharp.Core.FSharpFunc`2[T2,T3], Microsoft.FSharp.Core.FSharpFunc`2[T1,T2]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeRight[T1,T2,T3](Microsoft.FSharp.Core.FSharpFunc`2[T1,T2], Microsoft.FSharp.Core.FSharpFunc`2[T2,T3]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpOption`1[System.String] FailurePattern(System.Exception) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpRef`1[T] Ref[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Checked Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+OperatorIntrinsics Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Unchecked Microsoft.FSharp.Core.Operators: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators: Single InfinitySingle Microsoft.FSharp.Core.Operators: Single NaNSingle Microsoft.FSharp.Core.Operators: Single ToSingle[T](T) Microsoft.FSharp.Core.Operators: Single get_InfinitySingle() Microsoft.FSharp.Core.Operators: Single get_NaNSingle() Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] CreateSequence[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_RangeStep[T,TStep](T, TStep, T) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_Range[T](T, T) Microsoft.FSharp.Core.Operators: System.Decimal ToDecimal[T](T) Microsoft.FSharp.Core.Operators: System.Exception Failure(System.String) Microsoft.FSharp.Core.Operators: System.IO.TextReader ConsoleIn[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleError[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleOut[T]() Microsoft.FSharp.Core.Operators: System.Object Box[T](T)" + #if DEBUG @" Microsoft.FSharp.Core.Operators: System.RuntimeMethodHandle MethodHandleOf[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult])" + #endif @" Microsoft.FSharp.Core.Operators: System.String ToString() Microsoft.FSharp.Core.Operators: System.String ToString[T](T) Microsoft.FSharp.Core.Operators: System.String op_Concatenate(System.String, System.String) Microsoft.FSharp.Core.Operators: System.Tuple`2[TKey,TValue] KeyValuePattern[TKey,TValue](System.Collections.Generic.KeyValuePair`2[TKey,TValue]) Microsoft.FSharp.Core.Operators: System.Type GetType() Microsoft.FSharp.Core.Operators: System.Type TypeDefOf[T]() Microsoft.FSharp.Core.Operators: System.Type TypeOf[T]() Microsoft.FSharp.Core.Operators: T Abs[T](T) Microsoft.FSharp.Core.Operators: T Acos[T](T) Microsoft.FSharp.Core.Operators: T Asin[T](T) Microsoft.FSharp.Core.Operators: T Atan[T](T) Microsoft.FSharp.Core.Operators: T Ceiling[T](T) Microsoft.FSharp.Core.Operators: T Cos[T](T) Microsoft.FSharp.Core.Operators: T Cosh[T](T) Microsoft.FSharp.Core.Operators: T DefaultArg[T](Microsoft.FSharp.Core.FSharpOption`1[T], T) Microsoft.FSharp.Core.Operators: T Exit[T](Int32) Microsoft.FSharp.Core.Operators: T Exp[T](T) Microsoft.FSharp.Core.Operators: T FailWith[T](System.String) Microsoft.FSharp.Core.Operators: T Floor[T](T) Microsoft.FSharp.Core.Operators: T Identity[T](T) Microsoft.FSharp.Core.Operators: T InvalidArg[T](System.String, System.String) Microsoft.FSharp.Core.Operators: T InvalidOp[T](System.String) Microsoft.FSharp.Core.Operators: T Lock[TLock,T](TLock, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Core.Operators: T Log10[T](T) Microsoft.FSharp.Core.Operators: T Log[T](T) Microsoft.FSharp.Core.Operators: T Max[T](T, T) Microsoft.FSharp.Core.Operators: T Min[T](T, T) Microsoft.FSharp.Core.Operators: T NullArg[T](System.String) Microsoft.FSharp.Core.Operators: T PowInteger[T](T, Int32) Microsoft.FSharp.Core.Operators: T Raise[T](System.Exception) Microsoft.FSharp.Core.Operators: T Reraise[T]() Microsoft.FSharp.Core.Operators: T Rethrow[T]() Microsoft.FSharp.Core.Operators: T Round[T](T) Microsoft.FSharp.Core.Operators: T Sin[T](T) Microsoft.FSharp.Core.Operators: T Sinh[T](T) Microsoft.FSharp.Core.Operators: T Tan[T](T) Microsoft.FSharp.Core.Operators: T Tanh[T](T) Microsoft.FSharp.Core.Operators: T Truncate[T](T) Microsoft.FSharp.Core.Operators: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: T op_BitwiseAnd[T](T, T) Microsoft.FSharp.Core.Operators: T op_BitwiseOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Dereference[T](Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.Operators: T op_ExclusiveOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Exponentiation[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators: T op_LeftShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_LogicalNot[T](T) Microsoft.FSharp.Core.Operators: T op_RightShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators: T op_UnaryPlus[T](T) Microsoft.FSharp.Core.Operators: T1 Fst[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T2 Atan2[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators: T2 Snd[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Division[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Modulus[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: TResult Sqrt[T,TResult](T) Microsoft.FSharp.Core.Operators: TResult ToEnum[TResult](Int32) Microsoft.FSharp.Core.Operators: TResult Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1, T2) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], T1, T2, T3) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T) Microsoft.FSharp.Core.Operators: TResult op_PipeRight2[T1,T2,TResult](T1, T2, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight3[T1,T2,T3,TResult](T1, T2, T3, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight[T1,TResult](T1, Microsoft.FSharp.Core.FSharpFunc`2[T1,TResult]) Microsoft.FSharp.Core.Operators: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators: Void Decrement(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void Ignore[T](T) Microsoft.FSharp.Core.Operators: Void Increment(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void op_ColonEquals[T](Microsoft.FSharp.Core.FSharpRef`1[T], T) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: FSharpFunc`3 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: TResult Invoke(T1, T2) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: FSharpFunc`4 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: TResult Invoke(T1, T2, T3) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: FSharpFunc`5 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: TResult Invoke(T1, T2, T3, T4) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: FSharpFunc`6 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: TResult Invoke(T1, T2, T3, T4, T5) Microsoft.FSharp.Core.OptimizedClosures: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult] Microsoft.FSharp.Core.OptimizedClosures: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures: System.Type GetType() Microsoft.FSharp.Core.OptionModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsNone[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsSome[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 Count[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 GetHashCode() Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Bind[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: System.String ToString() Microsoft.FSharp.Core.OptionModule: System.Type GetType() Microsoft.FSharp.Core.OptionModule: T GetValue[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Core.FSharpOption`1[T], TState) Microsoft.FSharp.Core.OptionModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: T[] ToArray[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object TypeId Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.String ToString() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Type GetType() Microsoft.FSharp.Core.OptionalArgumentAttribute: Void .ctor() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String Value Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String Value Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfModule: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfModule: System.String ToString() Microsoft.FSharp.Core.PrintfModule: System.Type GetType() Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilderThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilder[T](System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriterThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object TypeId Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.String ToString() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Type GetType() Microsoft.FSharp.Core.ProjectionParameterAttribute: Void .ctor() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object TypeId Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.String ToString() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Type GetType() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Void .ctor() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object TypeId Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.String ToString() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Type GetType() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Void .ctor() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object TypeId Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Value Microsoft.FSharp.Core.SealedAttribute: Boolean get_Value() Microsoft.FSharp.Core.SealedAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.SealedAttribute: System.Object TypeId Microsoft.FSharp.Core.SealedAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.SealedAttribute: System.String ToString() Microsoft.FSharp.Core.SealedAttribute: System.Type GetType() Microsoft.FSharp.Core.SealedAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.SourceConstructFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.SourceConstructFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 GetHashCode() Microsoft.FSharp.Core.SourceConstructFlags: Int32 value__ Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Closure Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Exception Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Field Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags KindMask Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Module Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags NonPublicRepresentation Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags None Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags ObjectType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags RecordType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags SumType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags UnionCase Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Value Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString() Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.Type GetType() Microsoft.FSharp.Core.SourceConstructFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.StringModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.StringModule: Boolean Exists(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Boolean ForAll(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Int32 GetHashCode() Microsoft.FSharp.Core.StringModule: Int32 Length(System.String) Microsoft.FSharp.Core.StringModule: System.String Collect(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.String], System.String) Microsoft.FSharp.Core.StringModule: System.String Concat(System.String, System.Collections.Generic.IEnumerable`1[System.String]) Microsoft.FSharp.Core.StringModule: System.String Initialize(Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String]) Microsoft.FSharp.Core.StringModule: System.String Map(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char], System.String) Microsoft.FSharp.Core.StringModule: System.String MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char]], System.String) Microsoft.FSharp.Core.StringModule: System.String Replicate(Int32, System.String) Microsoft.FSharp.Core.StringModule: System.String ToString() Microsoft.FSharp.Core.StringModule: System.Type GetType() Microsoft.FSharp.Core.StringModule: Void Iterate(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit], System.String) Microsoft.FSharp.Core.StringModule: Void IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit]], System.String) Microsoft.FSharp.Core.StructAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructAttribute: System.Object TypeId Microsoft.FSharp.Core.StructAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructAttribute: System.String ToString() Microsoft.FSharp.Core.StructAttribute: System.Type GetType() Microsoft.FSharp.Core.StructAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String ToString() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String Value Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String get_Value() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.Unit: Boolean Equals(System.Object) Microsoft.FSharp.Core.Unit: Int32 GetHashCode() Microsoft.FSharp.Core.Unit: System.String ToString() Microsoft.FSharp.Core.Unit: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.UnverifiableAttribute: System.Object TypeId Microsoft.FSharp.Core.UnverifiableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.UnverifiableAttribute: System.String ToString() Microsoft.FSharp.Core.UnverifiableAttribute: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Void .ctor() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object TypeId Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.VolatileFieldAttribute: System.String ToString() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Type GetType() Microsoft.FSharp.Core.VolatileFieldAttribute: Void .ctor() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.Type GetType() Microsoft.FSharp.Linq.NullableModule: Boolean Equals(System.Object) Microsoft.FSharp.Linq.NullableModule: Int32 GetHashCode() Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Byte] ToByte[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Char] ToChar[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Decimal] ToDecimal[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Double] ToDouble[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int16] ToInt16[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int32] ToInt32[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int32] ToInt[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int64] ToInt64[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.IntPtr] ToIntPtr[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.SByte] ToSByte[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Single] ToSingle[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt16] ToUInt16[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt32] ToUInt32[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt64] ToUInt64[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UIntPtr] ToUIntPtr[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[TResult] ToEnum[TResult](System.Nullable`1[System.Int32]) Microsoft.FSharp.Linq.NullableModule: System.String ToString() Microsoft.FSharp.Linq.NullableModule: System.Type GetType() Microsoft.FSharp.Linq.NullableOperators: Boolean Equals(System.Object) Microsoft.FSharp.Linq.NullableOperators: Boolean op_EqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_GreaterEqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_GreaterQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessEqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessGreaterQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreater[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessGreaterQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessGreater[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLess[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Int32 GetHashCode() Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_DivideQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_MinusQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_MultiplyQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_PercentQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_PlusQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkDivideQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkDivide[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMinusQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMinus[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMultiplyQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMultiply[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPercentQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPercent[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPlusQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPlus[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.String ToString() Microsoft.FSharp.Linq.NullableOperators: System.Type GetType() Microsoft.FSharp.Linq.QueryBuilder: Boolean All[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Boolean Contains[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], T) Microsoft.FSharp.Linq.QueryBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryBuilder: Boolean Exists[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Int32 Count[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[System.Linq.IGrouping`2[TKey,TValue],Q] GroupValBy[T,TKey,TValue,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[System.Linq.IGrouping`2[TKey,T],Q] GroupBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Distinct[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SkipWhile[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Skip[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByNullableDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByNullable[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Source[T,Q](System.Linq.IQueryable`1[T]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] TakeWhile[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Take[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByNullableDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByNullable[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Where[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] YieldFrom[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Yield[T,Q](T) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Zero[T,Q]() Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,System.Collections.IEnumerable] Source[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] For[T,Q,TResult,Q2](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Linq.QuerySource`2[TResult,Q2]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] GroupJoin[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[System.Collections.Generic.IEnumerable`1[TInner],TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] Join[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[TInner,TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] LeftOuterJoin[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[System.Collections.Generic.IEnumerable`1[TInner],TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] Select[T,Q,TResult](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Quote[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.QueryBuilder: System.Linq.IQueryable`1[T] Run[T](Microsoft.FSharp.Quotations.FSharpExpr`1[Microsoft.FSharp.Linq.QuerySource`2[T,System.Linq.IQueryable]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] AverageByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] MaxByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] MinByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] SumByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.String ToString() Microsoft.FSharp.Linq.QueryBuilder: System.Type GetType() Microsoft.FSharp.Linq.QueryBuilder: T ExactlyOneOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T ExactlyOne[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Find[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: T HeadOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Head[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T LastOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Last[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Nth[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: TValue AverageBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue MaxBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue MinBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue SumBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: Void .ctor() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.Collections.Generic.IEnumerable`1[T] RunQueryAsEnumerable[T](Microsoft.FSharp.Linq.QueryBuilder, Microsoft.FSharp.Quotations.FSharpExpr`1[Microsoft.FSharp.Linq.QuerySource`2[T,System.Collections.IEnumerable]]) Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.String ToString() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.Type GetType() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: System.String ToString() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: System.Type GetType() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: T RunQueryAsValue[T](Microsoft.FSharp.Linq.QueryBuilder, Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Int32 GetHashCode() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Collections.Generic.IEnumerable`1[T] Source Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Collections.Generic.IEnumerable`1[T] get_Source() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.String ToString() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Type GetType() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Void .ctor(T1) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Void .ctor(T1, T2) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Void .ctor(T1, T2, T3) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Void .ctor(T1, T2, T3, T4) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Void .ctor(T1, T2, T3, T4, T5) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Void .ctor(T1, T2, T3, T4, T5, T6) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T7 Item7 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item7() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Void .ctor(T1, T2, T3, T4, T5, T6, T7) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T7 Item7 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T7 get_Item7() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T8 Item8 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T8 get_Item8() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Void .ctor(T1, T2, T3, T4, T5, T6, T7, T8) Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Void .ctor(K, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Microsoft.FSharp.Quotations.FSharpExpr`1[T] SubstHelper[T](Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar[], System.Object[]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression QuotationToExpression(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression`1[T] ImplicitExpressionConversionHelper[T](T) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression`1[T] QuotationToLambdaExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Object EvaluateQuotation(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: T MemberInitializationHelper[T](T) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: T NewAnonymousObjectHelper[T](T) Microsoft.FSharp.NativeInterop.NativePtrModule: Boolean Equals(System.Object) Microsoft.FSharp.NativeInterop.NativePtrModule: Int32 GetHashCode() Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr AddPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr OfNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr StackAllocate[T](Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr ToNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: System.String ToString() Microsoft.FSharp.NativeInterop.NativePtrModule: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: T GetPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: T ReadPointerInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: Void SetPointerInlined[T](IntPtr, Int32, T) Microsoft.FSharp.NativeInterop.NativePtrModule: Void WritePointerInlined[T](IntPtr, T) Microsoft.FSharp.Quotations.DerivedPatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.DerivedPatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Collections.FSharpList`1[System.Type],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Boolean] BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Byte] BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Char] CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Double] DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int16] Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int64] Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.SByte] SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Single] SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.String] StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar]],Microsoft.FSharp.Quotations.FSharpExpr]] LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt16] UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt32] UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt64] UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: System.String ToString() Microsoft.FSharp.Quotations.DerivedPatternsModule: System.Type GetType() Microsoft.FSharp.Quotations.ExprShapeModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.ExprShapeModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Core.FSharpChoice`3[Microsoft.FSharp.Quotations.FSharpVar,System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr],System.Tuple`2[System.Object,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Quotations.FSharpExpr RebuildShapeCombination(System.Object, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.ExprShapeModule: System.String ToString() Microsoft.FSharp.Quotations.ExprShapeModule: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] TryGetReflectedDefinition(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressSet(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Application(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Applications(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Coerce(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr DefaultValue(System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Deserialize(System.Type, Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr], Byte[]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Lambda(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Let(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr LetRecursive(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewArray(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewDelegate(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewObject(System.Reflection.ConstructorInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewRecord(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewTuple(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Quote(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Sequential(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryFinally(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryWith(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TupleGet(Microsoft.FSharp.Quotations.FSharpExpr, Int32) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TypeTest(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Reflection.UnionCaseInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value(System.Object, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value[T](T) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Var(Microsoft.FSharp.Quotations.FSharpVar) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr VarSet(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Cast[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] GlobalVar[T](System.String) Microsoft.FSharp.Quotations.FSharpExpr: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpExpr: Void RegisterReflectedDefinitions(System.Reflection.Assembly, System.String, Byte[]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Raw Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr get_Raw() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpVar: Boolean IsMutable Microsoft.FSharp.Quotations.FSharpVar: Boolean get_IsMutable() Microsoft.FSharp.Quotations.FSharpVar: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpVar: Microsoft.FSharp.Quotations.FSharpVar Global(System.String, System.Type) Microsoft.FSharp.Quotations.FSharpVar: System.String Name Microsoft.FSharp.Quotations.FSharpVar: System.String ToString() Microsoft.FSharp.Quotations.FSharpVar: System.String get_Name() Microsoft.FSharp.Quotations.FSharpVar: System.Type GetType() Microsoft.FSharp.Quotations.FSharpVar: System.Type Type Microsoft.FSharp.Quotations.FSharpVar: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Void .ctor(System.String, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean]) Microsoft.FSharp.Quotations.PatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.PatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]] NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpVar] VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]],Microsoft.FSharp.Quotations.FSharpExpr]] LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo]] FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo]] UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Int32]] TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Object,System.Type]] ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr]] FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] LetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar],Microsoft.FSharp.Quotations.FSharpExpr]] NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Quotations.FSharpExpr]] PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Type] DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: System.String ToString() Microsoft.FSharp.Quotations.PatternsModule: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpType: Boolean IsExceptionRepresentation(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsFunction(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsModule(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsRecord(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsTuple(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsUnion(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpType: Microsoft.FSharp.Reflection.UnionCaseInfo[] GetUnionCases(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetExceptionFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetRecordFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.String ToString() Microsoft.FSharp.Reflection.FSharpType: System.Tuple`2[System.Type,System.Type] GetFunctionElements(System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: System.Type MakeFunctionType(System.Type, System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type MakeTupleType(System.Type[]) Microsoft.FSharp.Reflection.FSharpType: System.Type[] GetTupleElements(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpValue: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Int32] PreComputeUnionTagReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeRecordReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeTupleReader(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object] PreComputeRecordFieldReader(System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeRecordConstructor(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeTupleConstructor(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetRecordField(System.Object, System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetTupleField(System.Object, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeFunction(System.Type, Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeRecord(System.Type, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeTuple(System.Object[], System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetExceptionFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetRecordFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetTupleFields(System.Object) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.ConstructorInfo PreComputeRecordConstructorInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MemberInfo PreComputeUnionTagMemberInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MethodInfo PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.String ToString() Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[]] GetUnionFields(System.Object, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Type]] PreComputeTupleConstructorInfo(System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,System.Int32]]] PreComputeTuplePropertyInfo(System.Type, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 GetHashCode() Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 Tag Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 get_Tag() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Collections.Generic.IList`1[System.Reflection.CustomAttributeData] GetCustomAttributesData() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes(System.Type) Microsoft.FSharp.Reflection.UnionCaseInfo: System.Reflection.PropertyInfo[] GetFields() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() " let normalize (s:string) = s.Replace("\r\n\r\n", "\r\n").Trim([|'\r';'\n'|]) let expected = #if EXTENSIONTYPING postdev10 |> normalize #else dev10 |> normalize #endif let act = actual.ToString() |> normalize if expected <> act then let mutable indexFirstDiff = 0 while indexFirstDiff < expected.Length && expected.[indexFirstDiff] = act.[indexFirstDiff] do indexFirstDiff <- indexFirstDiff + 1 printfn "First diff at char %d" indexFirstDiff printfn "Next bit is" printfn "Exp: %s" (expected.Substring(indexFirstDiff, 400).Replace("\n"," ")) printfn "Act: %s" (act.Substring(indexFirstDiff, 400).Replace("\n"," ")) printfn "Full actual below" printfn "" printfn "%s" act Assert.AreEqual(expected, act) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/App.xaml.cs0000775000175000017500000000537412260314606022240 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Silverlight.Testing; using Microsoft.Silverlight.Testing.UnitTesting.Metadata.NUnit; namespace FSharp.Core.UnitTests.TestApp { public partial class App : Application { public App() { this.Startup += this.Application_Startup; this.Exit += this.Application_Exit; this.UnhandledException += this.Application_UnhandledException; InitializeComponent(); } private void Application_Startup(object sender, StartupEventArgs e) { NUnit.Framework.Assert.IsTrue(true); // force NUnitFarmework.dll to load UnitTestSystem.RegisterUnitTestProvider(new NUnitProvider()); UnitTestSettings settings = UnitTestSystem.CreateDefaultSettings(); settings.TestAssemblies.Add(typeof(global::FSharp.Core.Unittests.LibraryTestFx).Assembly); RootVisual = UnitTestSystem.CreateTestPage(settings); } private void Application_Exit(object sender, EventArgs e) { } private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { // If the app is running outside of the debugger then report the exception using // the browser's exception mechanism. On IE this will display it a yellow alert // icon in the status bar and Firefox will display a script error. if (!System.Diagnostics.Debugger.IsAttached) { // NOTE: This will allow the application to continue running after an exception has been thrown // but not handled. // For production applications this error handling should be replaced with something that will // report the error to the website and stop the application. e.Handled = true; Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); }); } } private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e) { try { string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace; errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n"); System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");"); } catch (Exception) { } } } } fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core.Unittests.fsproj0000664000175000017500000001264512260314606025525 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 False Debug AnyCPU 2.0 true true {88E2D422-6852-46E3-A740-83E391DC7973} Library FSharp.Core.Unittests SystematicUnitTests false false $(DefineConstants);SILVERLIGHT True full bin\Debug\ DEBUG;TRACE prompt 3 pdbonly True bin\Release\ TRACE prompt 3 False {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/TypeForwarding.fs0000775000175000017500000000203512260314606023516 0ustar chrischris// Various tests for Microsoft.FSharp.Core type forwarding namespace FSharp.Core.Unittests.FSharp_Core.Type_Forwarding open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework #if FX_ATLEAST_PORTABLE // TODO named #define ? #else #if SILVERLIGHT #else [] type TypeForwardingModule() = [] member this.TypeForwarding() = let currentRuntimeVersion = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() let tupleAssemblyName = typeof>.Assembly.FullName let mscorlibAssemblyName = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" let fsharpCoreAssemblyName = "FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" // 2.0 runtime if currentRuntimeVersion = "v2.0.50727" then Assert.AreEqual(tupleAssemblyName, fsharpCoreAssemblyName) else Assert.AreEqual(tupleAssemblyName, mscorlibAssemblyName) () #endif #endiffsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/SurfaceArea.2.0.fs0000775000175000017500000115352212260314606023242 0ustar chrischrisnamespace FSharp.Core.Unittests.SurfaceArea open NUnit.Framework [] type SurfaceAreaTest() = [] member this.VerifyArea() = let file = typeof.Assembly.Location let asm = System.Reflection.Assembly.ReflectionOnlyLoadFrom(file) if asm.ImageRuntimeVersion.[1] = '2' then // v2.0.50727 - we only want this test to run as 2.0 (nu20), not FSharp.Core 2.0 on CLR 4.0 (nu20on40) let referenced = asm.GetReferencedAssemblies() for ref in referenced do System.Reflection.Assembly.ReflectionOnlyLoad(ref.FullName) |> ignore let types = asm.GetExportedTypes() let actual = new System.Text.StringBuilder() actual.Append("\r\n") |> ignore let values = types |> Array.collect (fun t -> t.GetMembers()) |> Array.map (fun v -> sprintf "%s: %s" (v.ReflectedType.ToString()) (v.ToString())) |> Array.sort |> Array.iter (fun s -> actual.Append(s) |> ignore actual.Append("\r\n") |> ignore) let expected = @" Microsoft.FSharp.Collections.Array2DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array2DModule: Int32 Base1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Base2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array2DModule: Int32 Length1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Length2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: System.String ToString() Microsoft.FSharp.Collections.Array2DModule: System.Type GetType() Microsoft.FSharp.Collections.Array2DModule: T Get[T](T[,], Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: TResult[,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: TResult[,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Copy[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] CreateBased[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] Create[T](Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] InitializeBased[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Initialize[T](Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Rebase[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreateBased[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreate[T](Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void CopyTo[T](T[,], Int32, Int32, T[,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Set[T](T[,], Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array3DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array3DModule: Int32 Length1[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length2[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length3[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: System.String ToString() Microsoft.FSharp.Collections.Array3DModule: System.Type GetType() Microsoft.FSharp.Collections.Array3DModule: T Get[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,,]) Microsoft.FSharp.Collections.Array3DModule: T[,,] Create[T](Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: T[,,] Initialize[T](Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]) Microsoft.FSharp.Collections.Array3DModule: T[,,] ZeroCreate[T](Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Set[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array4DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array4DModule: Int32 Length1[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length2[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length3[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length4[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: System.String ToString() Microsoft.FSharp.Collections.Array4DModule: System.Type GetType() Microsoft.FSharp.Collections.Array4DModule: T Get[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Create[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Initialize[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]]) Microsoft.FSharp.Collections.Array4DModule: T[,,,] ZeroCreate[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: Void Set[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean IsEmpty[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule: Int32 Length[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](T[]) Microsoft.FSharp.Collections.ArrayModule: System.String ToString() Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1,T2][] Zip[T1,T2](T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1[],T2[]] Unzip[T1,T2](System.Tuple`2[T1,T2][]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1,T2,T3][] Zip3[T1,T2,T3](T1[], T2[], T3[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1[],T2[],T3[]] Unzip3[T1,T2,T3](System.Tuple`3[T1,T2,T3][]) Microsoft.FSharp.Collections.ArrayModule: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule: T Average[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T Get[T](T[], Int32) Microsoft.FSharp.Collections.ArrayModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Max[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Min[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Sum[T](T[]) Microsoft.FSharp.Collections.ArrayModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], T1[], T2[], TState) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: TState[] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState[] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Append[T](T[], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Concat[T](System.Collections.Generic.IEnumerable`1[T[]]) Microsoft.FSharp.Collections.ArrayModule: T[] Copy[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Create[T](Int32, T) Microsoft.FSharp.Collections.ArrayModule: T[] Empty[T]() Microsoft.FSharp.Collections.ArrayModule: T[] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] GetSubArray[T](T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Reverse[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Sort[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] ZeroCreate[T](Int32) Microsoft.FSharp.Collections.ArrayModule: Void CopyTo[T](T[], Int32, T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: Void Fill[T](T[], Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Set[T](T[], Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlace[T](T[]) Microsoft.FSharp.Collections.ComparisonIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ComparisonIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] FromFunction[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]]) Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.ComparisonIdentity: System.String ToString() Microsoft.FSharp.Collections.ComparisonIdentity: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsCons() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Length Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Tag Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Length() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Tag() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1+Tags[T] Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Cons(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Tail Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] TailOrNull Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Empty() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Tail() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_TailOrNull() Microsoft.FSharp.Collections.FSharpList`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: T Head Microsoft.FSharp.Collections.FSharpList`1[T]: T HeadOrDefault Microsoft.FSharp.Collections.FSharpList`1[T]: T Item [Int32] Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Head() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_HeadOrDefault() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Item(Int32) Microsoft.FSharp.Collections.FSharpList`1[T]: Void .ctor(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean ContainsKey(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 Count Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Add(TKey, TValue) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Remove(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Core.FSharpOption`1[TValue] TryFind(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.String ToString() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.Type GetType() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue Item [TKey] Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue get_Item(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Void .ctor(System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Contains(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 Count Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Add(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Addition(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Subtraction(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpSet`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpSet`1[T]: T MaximumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T MinimumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MaximumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MinimumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.HashIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.HashIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] FromFunctions[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]]) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] LimitedStructural[T](Int32) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Reference[T]() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.HashIdentity: System.String ToString() Microsoft.FSharp.Collections.HashIdentity: System.Type GetType() Microsoft.FSharp.Collections.ListModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ListModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ListModule: Int32 Length[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]] Zip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Collections.FSharpList`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Concat[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpList`1[T]]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Empty[T]() Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Replicate[T](Int32, T) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Reverse[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Sort[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Tail[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.String ToString() Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2]] Unzip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]]) Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T],Microsoft.FSharp.Collections.FSharpList`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2],Microsoft.FSharp.Collections.FSharpList`1[T3]] Unzip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]]) Microsoft.FSharp.Collections.ListModule: System.Type GetType() Microsoft.FSharp.Collections.ListModule: T Average[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Get[T](Microsoft.FSharp.Collections.FSharpList`1[T], Int32) Microsoft.FSharp.Collections.ListModule: T Head[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Max[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Min[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Sum[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], TState) Microsoft.FSharp.Collections.ListModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.MapModule: Boolean ContainsKey[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.MapModule: Boolean Exists[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean ForAll[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean IsEmpty[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Int32 GetHashCode() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]] ToList[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TResult] Map[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Add[TKey,T](TKey, T, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Empty[TKey,T]() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Filter[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfArray[TKey,T](System.Tuple`2[TKey,T][]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfList[TKey,T](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfSeq[TKey,T](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Remove[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TKey] TryFindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]] ToSeq[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.String ToString() Microsoft.FSharp.Collections.MapModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpMap`2[TKey,T],Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]] Partition[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Tuple`2[TKey,T][] ToArray[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Type GetType() Microsoft.FSharp.Collections.MapModule: T Find[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TKey FindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TResult Pick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TState FoldBack[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T], TState) Microsoft.FSharp.Collections.MapModule: TState Fold[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]]], TState, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Void Iterate[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.SeqModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SeqModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean IsEmpty[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 CompareWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SeqModule: Int32 Length[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T,T]] Pairwise[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T1,T2]] Zip[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Collections.Generic.IEnumerable`1[T]]] GroupBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Int32]] CountBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2], System.Collections.Generic.IEnumerable`1[T3]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Collect[T,TCollection,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T[]] Windowed[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Append[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cache[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cast[T](System.Collections.IEnumerable) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Concat[TCollection,T](System.Collections.Generic.IEnumerable`1[TCollection]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable`1[T]]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] DistinctBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Distinct[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Empty[T]() Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] InitializeInfinite[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] ReadOnly[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SkipWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Skip[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Sort[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] TakeWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Take[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Truncate[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Unfold[TState,T](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[T,TState]]], TState) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Where[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.String ToString() Microsoft.FSharp.Collections.SeqModule: System.Type GetType() Microsoft.FSharp.Collections.SeqModule: T Average[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T ExactlyOne[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Get[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Head[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Last[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Max[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Min[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Sum[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T[] ToArray[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Contains[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SetModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 Count[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Add[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Difference[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Empty[T]() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] IntersectMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Intersect[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] UnionMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Union[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.String ToString() Microsoft.FSharp.Collections.SetModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpSet`1[T],Microsoft.FSharp.Collections.FSharpSet`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Type GetType() Microsoft.FSharp.Collections.SetModule: T MaxElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T MinElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpSet`1[T], TState) Microsoft.FSharp.Collections.SetModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Control.CommonExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.CommonExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] AsyncWrite(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Byte[]] AsyncReadBytes(System.IO.Stream, Int32) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Int32] AsyncRead(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: System.IDisposable SubscribeToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.CommonExtensions: System.String ToString() Microsoft.FSharp.Control.CommonExtensions: System.Type GetType() Microsoft.FSharp.Control.CommonExtensions: Void AddToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.EventModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.EventModule: Int32 GetHashCode() Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[System.Tuple`2[T,T]],System.Tuple`2[T,T]] Pairwise[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Choose[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Map[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Scan[TResult,T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Filter[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Merge[TDel1,T,TDel2](Microsoft.FSharp.Control.IEvent`2[TDel1,T], Microsoft.FSharp.Control.IEvent`2[TDel2,T]) Microsoft.FSharp.Control.EventModule: System.String ToString() Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult1],TResult1],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult2],TResult2]] Split[T,TResult1,TResult2,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T]] Partition[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Type GetType() Microsoft.FSharp.Control.EventModule: Void Add[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.FSharpAsync: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Control.FSharpAsync`1[T]] StartChild[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpChoice`2[T,System.Exception]] Catch[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Ignore[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Sleep(Int32) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToContext(System.Threading.SynchronizationContext) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToNewThread() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToThreadPool() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitIAsyncResult(System.IAsyncResult, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitWaitHandle(System.Threading.WaitHandle, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.IDisposable] OnCancel(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] CancellationToken Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] get_CancellationToken() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T[]] Parallel[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitEvent[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,TArg3,T](TArg1, TArg2, TArg3, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[TArg1,TArg2,TArg3,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,T](TArg1, TArg2, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[TArg1,TArg2,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,T](TArg1, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg1,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromContinuations[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]],Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] TryCancelled[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: System.String ToString() Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken DefaultCancellationToken Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken get_DefaultCancellationToken() Microsoft.FSharp.Control.FSharpAsync: System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg,System.AsyncCallback,System.Object],System.IAsyncResult],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,Microsoft.FSharp.Core.Unit]] AsBeginEnd[TArg,T](Microsoft.FSharp.Core.FSharpFunc`2[TArg,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: System.Type GetType() Microsoft.FSharp.Control.FSharpAsync: T RunSynchronously[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void CancelDefaultToken() Microsoft.FSharp.Control.FSharpAsync: Void Start(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartImmediate(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartWithContinuations[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncBuilder: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] For[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] While(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Zero() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Bind[T,TResult](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Combine[T](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] ReturnFrom[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Return[T](T) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryFinally[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryWith[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncBuilder: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Void Reply(TReply) Microsoft.FSharp.Control.FSharpAsync`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] Publish Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] get_Publish() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.String ToString() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void .ctor() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void Trigger(System.Object[]) Microsoft.FSharp.Control.FSharpEvent`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Publish Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] get_Publish() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void Trigger(T) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] Publish Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] get_Publish() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void Trigger(System.Object, TArgs) Microsoft.FSharp.Control.FSharpHandler`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Delegate[] GetInvocationList() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.IAsyncResult BeginInvoke(System.Object, T, System.AsyncCallback, System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Clone() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object DynamicInvoke(System.Object[]) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Target Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object get_Target() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo Method Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo get_Method() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpHandler`1[T]: Void .ctor(System.Object, IntPtr) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void EndInvoke(System.IAsyncResult) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void Invoke(System.Object, T) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 CurrentQueueLength Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 DefaultTimeout Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_CurrentQueueLength() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_DefaultTimeout() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TMsg]] TryReceive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TReply]] PostAndTryAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[T]] TryScan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TMsg] Receive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TReply] PostAndAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[T] Scan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpHandler`1[System.Exception] Error Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg] Start(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Core.FSharpOption`1[TReply] TryPostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.String ToString() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.Type GetType() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: TReply PostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Post(TMsg) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Start() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void add_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void remove_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void set_DefaultTimeout(Int32) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void AddHandler(TDelegate) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void RemoveHandler(TDelegate) Microsoft.FSharp.Control.LazyExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.LazyExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] CreateFromValue[T](T) Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] Create[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Control.LazyExtensions: System.String ToString() Microsoft.FSharp.Control.LazyExtensions: System.Type GetType() Microsoft.FSharp.Control.LazyExtensions: T Force[T](System.Lazy`1[T]) Microsoft.FSharp.Control.ObservableModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.ObservableModule: Int32 GetHashCode() Microsoft.FSharp.Control.ObservableModule: System.IDisposable Subscribe[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[System.Tuple`2[T,T]] Pairwise[T](System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Scan[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Merge[T](System.IObservable`1[T], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.String ToString() Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[TResult1],System.IObservable`1[TResult2]] Split[T,TResult1,TResult2](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[T],System.IObservable`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Type GetType() Microsoft.FSharp.Control.ObservableModule: Void Add[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.WebExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.WebExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Net.WebResponse] AsyncGetResponse(System.Net.WebRequest) Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.String] AsyncDownloadString(System.Net.WebClient, System.Uri) Microsoft.FSharp.Control.WebExtensions: System.String ToString() Microsoft.FSharp.Control.WebExtensions: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AbstractClassAttribute: System.Object TypeId Microsoft.FSharp.Core.AbstractClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AbstractClassAttribute: System.String ToString() Microsoft.FSharp.Core.AbstractClassAttribute: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Void .ctor() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.String ToString() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoOpenAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoOpenAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoOpenAttribute: System.String Path Microsoft.FSharp.Core.AutoOpenAttribute: System.String ToString() Microsoft.FSharp.Core.AutoOpenAttribute: System.String get_Path() Microsoft.FSharp.Core.AutoOpenAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Value Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean get_Value() Microsoft.FSharp.Core.AutoSerializableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoSerializableAttribute: System.String ToString() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoSerializableAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIEventAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIEventAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIEventAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIEventAttribute: System.String ToString() Microsoft.FSharp.Core.CLIEventAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIEventAttribute: Void .ctor() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIMutableAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIMutableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIMutableAttribute: System.String ToString() Microsoft.FSharp.Core.CLIMutableAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIMutableAttribute: Void .ctor() Microsoft.FSharp.Core.ClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ClassAttribute: System.Object TypeId Microsoft.FSharp.Core.ClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ClassAttribute: System.String ToString() Microsoft.FSharp.Core.ClassAttribute: System.Type GetType() Microsoft.FSharp.Core.ClassAttribute: Void .ctor() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] Counts Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] get_Counts() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Void .ctor(Int32[]) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 SequenceNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 VariantNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_SequenceNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_VariantNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags SourceConstructFlags Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags get_SourceConstructFlags() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationMappingAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32, Int32) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags Flags Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags get_Flags() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Void .ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 value__ Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Event Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Instance Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags ModuleSuffix Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags None Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Static Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags UseNullAsTrueValue Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String SourceName Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String get_SourceName() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompiledNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompiledNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompiledNameAttribute: System.String CompiledName Microsoft.FSharp.Core.CompiledNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompiledNameAttribute: System.String get_CompiledName() Microsoft.FSharp.Core.CompiledNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompiledNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsError Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsHidden Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsError() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsHidden() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 MessageNumber Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 get_MessageNumber() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String Message Microsoft.FSharp.Core.CompilerMessageAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String get_Message() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerMessageAttribute: Void .ctor(System.String, Int32) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsError(Boolean) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsHidden(Boolean) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean CheckClose Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean get_CheckClose() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GenerateNext(System.Collections.Generic.IEnumerable`1[T] ByRef) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Collections.Generic.IEnumerator`1[T] GetFreshEnumerator() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T LastGenerated Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T get_LastGenerated() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Void Close() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] CreateEvent[TDelegate,TArgs](Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Core.FSharpFunc`2[TArgs,Microsoft.FSharp.Core.Unit]],TDelegate]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateFromFunctions[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateUsing[T,TCollection,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateThenFinally[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.String ToString() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean AllowIntoPattern Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeGroupJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeZip Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpace Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpaceUsingBind Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_AllowIntoPattern() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeGroupJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeZip() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpace() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpaceUsingBind() Microsoft.FSharp.Core.CustomOperationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomOperationAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomOperationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomOperationAttribute: System.String JoinConditionWord Microsoft.FSharp.Core.CustomOperationAttribute: System.String Name Microsoft.FSharp.Core.CustomOperationAttribute: System.String ToString() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_JoinConditionWord() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_Name() Microsoft.FSharp.Core.CustomOperationAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomOperationAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_AllowIntoPattern(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeGroupJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeZip(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_JoinConditionWord(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpace(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpaceUsingBind(Boolean) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Value Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean get_Value() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Check Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean get_Check() Microsoft.FSharp.Core.DefaultValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultValueAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultValueAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultValueAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EntryPointAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EntryPointAttribute: System.Object TypeId Microsoft.FSharp.Core.EntryPointAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EntryPointAttribute: System.String ToString() Microsoft.FSharp.Core.EntryPointAttribute: System.Type GetType() Microsoft.FSharp.Core.EntryPointAttribute: Void .ctor() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ExperimentalAttribute: System.Object TypeId Microsoft.FSharp.Core.ExperimentalAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ExperimentalAttribute: System.String Message Microsoft.FSharp.Core.ExperimentalAttribute: System.String ToString() Microsoft.FSharp.Core.ExperimentalAttribute: System.String get_Message() Microsoft.FSharp.Core.ExperimentalAttribute: System.Type GetType() Microsoft.FSharp.Core.ExperimentalAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.ExtraTopLevelOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExtraTopLevelOperators: Byte ToByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Double ToDouble[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Int32 GetHashCode() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Collections.FSharpSet`1[T] CreateSet[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder DefaultAsyncBuilder Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder get_DefaultAsyncBuilder() Microsoft.FSharp.Core.ExtraTopLevelOperators: SByte ToSByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Single ToSingle[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Collections.Generic.IDictionary`2[TKey,TValue] CreateDictionary[TKey,TValue](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.String ToString() Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Type GetType() Microsoft.FSharp.Core.ExtraTopLevelOperators: T LazyPattern[T](System.Lazy`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToString[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceUntypedExpression[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Core.ExtraTopLevelOperators: T[,] CreateArray2D[?,T](System.Collections.Generic.IEnumerable`1[?]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice1Of2(T1) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice2Of2(T2) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice1Of3(T1) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice2Of3(T2) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice3Of3(T3) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice1Of4(T1) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice2Of4(T2) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice3Of4(T3) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice4Of4(T4) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice1Of5(T1) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice2Of5(T2) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice3Of5(T3) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice4Of5(T4) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice5Of5(T5) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice1Of6(T1) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice2Of6(T2) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice3Of6(T3) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice4Of6(T4) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice5Of6(T5) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice6Of6(T6) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice1Of7(T1) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice2Of7(T2) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice3Of7(T3) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice4Of7(T4) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice5Of7(T5) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice6Of7(T6) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice7Of7(T7) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] FromConverter(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] op_Implicit(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] ToConverter(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] op_Implicit(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.String ToString() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: TResult Invoke(T) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: V InvokeFast[V](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,V]], T, TResult) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: W InvokeFast[V,W](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,W]]], T, TResult, V) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: X InvokeFast[V,W,X](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,X]]]], T, TResult, V, W) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Y InvokeFast[V,W,X,Y](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,Microsoft.FSharp.Core.FSharpFunc`2[X,Y]]]]], T, TResult, V, W, X) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Major Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Minor Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Release Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Major() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Minor() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Release() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object TypeId Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.String ToString() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Type GetType() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int32, Int32) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsSome Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsNone(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsSome(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetTag(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1+Tags[T] Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] None Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] Some(T) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] get_None() Microsoft.FSharp.Core.FSharpOption`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpRef`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpRef`1[T]: T Value Microsoft.FSharp.Core.FSharpRef`1[T]: T contents Microsoft.FSharp.Core.FSharpRef`1[T]: T contents@ Microsoft.FSharp.Core.FSharpRef`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpRef`1[T]: T get_contents() Microsoft.FSharp.Core.FSharpRef`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_Value(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpTypeFunc: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpTypeFunc: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpTypeFunc: System.Object Specialize[T]() Microsoft.FSharp.Core.FSharpTypeFunc: System.String ToString() Microsoft.FSharp.Core.FSharpTypeFunc: System.Type GetType() Microsoft.FSharp.Core.FuncConvert: Boolean Equals(System.Object) Microsoft.FSharp.Core.FuncConvert: Int32 GetHashCode() Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit] ToFSharpFunc[T](System.Action`1[T]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] ToFSharpFunc[T,TResult](System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]] FuncFromTupled[T1,T2,T3,T4,T5,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[T1,T2,T3,T4,T5],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]] FuncFromTupled[T1,T2,T3,T4,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[T1,T2,T3,T4],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]] FuncFromTupled[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[T1,T2,T3],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]] FuncFromTupled[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[T1,T2],TResult]) Microsoft.FSharp.Core.FuncConvert: System.String ToString() Microsoft.FSharp.Core.FuncConvert: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object TypeId Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.String ToString() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Void .ctor() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.InterfaceAttribute: System.Object TypeId Microsoft.FSharp.Core.InterfaceAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.InterfaceAttribute: System.String ToString() Microsoft.FSharp.Core.InterfaceAttribute: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Void .ctor() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String AddressOpNotFirstClassString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputArrayEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputMustBeNonNegativeString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputSequenceEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String NoNegateMinValueString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_AddressOpNotFirstClassString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputArrayEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputMustBeNonNegativeString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputSequenceEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_NoNegateMinValueString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityERIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean PhysicalEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple2[T1,T2](System.Collections.IComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple3[T1,T2,T3](System.Collections.IComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple4[T1,T2,T3,T4](System.Collections.IComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple5[T1,T2,T3,T4,T5](System.Collections.IComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonWithComparerIntrinsic[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 LimitedGenericHashIntrinsic[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 PhysicalHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Char GetString(System.String, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Decimal MakeDecimal(Int32, Int32, Int32, Boolean, Byte) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CheckThis[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CreateInstance[T]() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray2D[T](T[,], Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray3D[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray4D[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray[T](T[], Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void Dispose[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailStaticInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray2D[T](T[,], Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray3D[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray4D[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray[T](T[], Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Or(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_Amp(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanAnd(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanOr(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: IntPtr op_IntegerAddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: T& op_AddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityER[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityWithComparer[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean PhysicalEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Double FloatWithMeasure(Double) Microsoft.FSharp.Core.LanguagePrimitives: Int16 Int16WithMeasure(Int16) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparisonWithComparer[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparison[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHashWithComparer[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericLimitedHash[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives: Int32 Int32WithMeasure(Int32) Microsoft.FSharp.Core.LanguagePrimitives: Int32 ParseInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Int32 PhysicalHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int64 Int64WithMeasure(Int64) Microsoft.FSharp.Core.LanguagePrimitives: Int64 ParseInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+HashCompare Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators Microsoft.FSharp.Core.LanguagePrimitives: SByte SByteWithMeasure(SByte) Microsoft.FSharp.Core.LanguagePrimitives: Single Float32WithMeasure(Single) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IComparer`1[T] FastGenericComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastGenericEqualityComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastLimitedGenericEqualityComparer[T](Int32) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer GenericComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer get_GenericComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityERComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityERComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Decimal DecimalWithMeasure(System.Decimal) Microsoft.FSharp.Core.LanguagePrimitives: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives: T DivideByIntDynamic[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T DivideByInt[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T EnumToValue[TEnum,T](TEnum) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMaximum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMinimum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericOneDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericOne[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZeroDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZero[T]() Microsoft.FSharp.Core.LanguagePrimitives: TEnum EnumOfValue[T,TEnum](T) Microsoft.FSharp.Core.LanguagePrimitives: TResult AdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedAdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedMultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult MultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: UInt32 ParseUInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.LiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.LiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.LiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.LiteralAttribute: System.String ToString() Microsoft.FSharp.Core.LiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 Microsoft.FSharp.Core.MatchFailureException: Int32 Data2 Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode() Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data1() Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data2() Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary Data Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Core.MatchFailureException: System.Exception GetBaseException() Microsoft.FSharp.Core.MatchFailureException: System.Exception InnerException Microsoft.FSharp.Core.MatchFailureException: System.Exception get_InnerException() Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase TargetSite Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase get_TargetSite() Microsoft.FSharp.Core.MatchFailureException: System.String Data0 Microsoft.FSharp.Core.MatchFailureException: System.String HelpLink Microsoft.FSharp.Core.MatchFailureException: System.String Message Microsoft.FSharp.Core.MatchFailureException: System.String Source Microsoft.FSharp.Core.MatchFailureException: System.String StackTrace Microsoft.FSharp.Core.MatchFailureException: System.String ToString() Microsoft.FSharp.Core.MatchFailureException: System.String get_Data0() Microsoft.FSharp.Core.MatchFailureException: System.String get_HelpLink() Microsoft.FSharp.Core.MatchFailureException: System.String get_Message() Microsoft.FSharp.Core.MatchFailureException: System.String get_Source() Microsoft.FSharp.Core.MatchFailureException: System.String get_StackTrace() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Void .ctor(System.String, Int32, Int32) Microsoft.FSharp.Core.MatchFailureException: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Core.MatchFailureException: Void set_HelpLink(System.String) Microsoft.FSharp.Core.MatchFailureException: Void set_Source(System.String) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Void .ctor() Microsoft.FSharp.Core.MeasureAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAttribute: Void .ctor() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.NoComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.NoComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.NoComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object TypeId Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.String ToString() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Type GetType() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Void .ctor() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.NoEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.NoEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.NoEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromInt64Dynamic(Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromStringDynamic(System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.String ToString() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Type GetType() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt32[T](Int32) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt64[T](Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromOne[T]() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromString[T](System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromZero[T]() Microsoft.FSharp.Core.NumericLiterals: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals: Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI Microsoft.FSharp.Core.NumericLiterals: System.String ToString() Microsoft.FSharp.Core.NumericLiterals: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Checked: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators+Checked: Char ToChar[T](T) Microsoft.FSharp.Core.Operators+Checked: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators+Checked: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators+Checked: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators+Checked: System.String ToString() Microsoft.FSharp.Core.Operators+Checked: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators+Checked: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Byte PowByte(Byte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Double PowDouble(Double, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int16 PowInt16(Int16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 PowInt32(Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 SignDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int64 PowInt64(Int64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: IntPtr PowIntPtr(IntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: SByte PowSByte(SByte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Single PowSingle(Single, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Byte] RangeByte(Byte, Byte, Byte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Char] RangeChar(Char, Char) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Double] RangeDouble(Double, Double, Double) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int16] RangeInt16(Int16, Int16, Int16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int32] RangeInt32(Int32, Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int64] RangeInt64(Int64, Int64, Int64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.IntPtr] RangeIntPtr(IntPtr, IntPtr, IntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.SByte] RangeSByte(SByte, SByte, SByte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Single] RangeSingle(Single, Single, Single) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt16] RangeUInt16(UInt16, UInt16, UInt16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt32] RangeUInt32(UInt32, UInt32, UInt32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt64] RangeUInt64(UInt64, UInt64, UInt64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UIntPtr] RangeUIntPtr(UIntPtr, UIntPtr, UIntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeStepGeneric[TStep,T](TStep, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TStep,T]], T, TStep, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Decimal PowDecimal(System.Decimal, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String GetStringSlice(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String ToString() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Type GetType() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AbsDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AcosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AsinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AtanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CeilingDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CoshDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T ExpDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T FloorDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T Log10Dynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T LogDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowDynamic[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T RoundDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TruncateDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 Atan2Dynamic[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 SqrtDynamic[T1,T2](T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,,] GetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,] GetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,] GetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[] GetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt16 PowUInt16(UInt16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt32 PowUInt32(UInt32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt64 PowUInt64(UInt64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UIntPtr PowUIntPtr(UIntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[]) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Unchecked: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators+Unchecked: System.String ToString() Microsoft.FSharp.Core.Operators+Unchecked: System.Type GetType() Microsoft.FSharp.Core.Operators+Unchecked: T DefaultOf[T]() Microsoft.FSharp.Core.Operators+Unchecked: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators: Boolean Not(Boolean) Microsoft.FSharp.Core.Operators: Boolean op_Equality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThan[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_Inequality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThan[T](T, T) Microsoft.FSharp.Core.Operators: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators: Char ToChar[T](T) Microsoft.FSharp.Core.Operators: Double Infinity Microsoft.FSharp.Core.Operators: Double NaN Microsoft.FSharp.Core.Operators: Double ToDouble[T](T) Microsoft.FSharp.Core.Operators: Double get_Infinity() Microsoft.FSharp.Core.Operators: Double get_NaN() Microsoft.FSharp.Core.Operators: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators: Int32 GetHashCode() Microsoft.FSharp.Core.Operators: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators: Int32 Sign[T](T) Microsoft.FSharp.Core.Operators: Int32 SizeOf[T]() Microsoft.FSharp.Core.Operators: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators: Int32 limitedHash[T](Int32, T) Microsoft.FSharp.Core.Operators: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Collections.FSharpList`1[T] op_Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeLeft[T2,T3,T1](Microsoft.FSharp.Core.FSharpFunc`2[T2,T3], Microsoft.FSharp.Core.FSharpFunc`2[T1,T2]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeRight[T1,T2,T3](Microsoft.FSharp.Core.FSharpFunc`2[T1,T2], Microsoft.FSharp.Core.FSharpFunc`2[T2,T3]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpOption`1[System.String] FailurePattern(System.Exception) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpRef`1[T] Ref[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Checked Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+OperatorIntrinsics Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Unchecked Microsoft.FSharp.Core.Operators: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators: Single InfinitySingle Microsoft.FSharp.Core.Operators: Single NaNSingle Microsoft.FSharp.Core.Operators: Single ToSingle[T](T) Microsoft.FSharp.Core.Operators: Single get_InfinitySingle() Microsoft.FSharp.Core.Operators: Single get_NaNSingle() Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] CreateSequence[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_RangeStep[T,TStep](T, TStep, T) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_Range[T](T, T) Microsoft.FSharp.Core.Operators: System.Decimal ToDecimal[T](T) Microsoft.FSharp.Core.Operators: System.Exception Failure(System.String) Microsoft.FSharp.Core.Operators: System.IO.TextReader ConsoleIn[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleError[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleOut[T]() Microsoft.FSharp.Core.Operators: System.Object Box[T](T)" + #if DEBUG @" Microsoft.FSharp.Core.Operators: System.RuntimeMethodHandle MethodHandleOf[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult])" + #endif @" Microsoft.FSharp.Core.Operators: System.String ToString() Microsoft.FSharp.Core.Operators: System.String ToString[T](T) Microsoft.FSharp.Core.Operators: System.String op_Concatenate(System.String, System.String) Microsoft.FSharp.Core.Operators: System.Tuple`2[TKey,TValue] KeyValuePattern[TKey,TValue](System.Collections.Generic.KeyValuePair`2[TKey,TValue]) Microsoft.FSharp.Core.Operators: System.Type GetType() Microsoft.FSharp.Core.Operators: System.Type TypeDefOf[T]() Microsoft.FSharp.Core.Operators: System.Type TypeOf[T]() Microsoft.FSharp.Core.Operators: T Abs[T](T) Microsoft.FSharp.Core.Operators: T Acos[T](T) Microsoft.FSharp.Core.Operators: T Asin[T](T) Microsoft.FSharp.Core.Operators: T Atan[T](T) Microsoft.FSharp.Core.Operators: T Ceiling[T](T) Microsoft.FSharp.Core.Operators: T Cos[T](T) Microsoft.FSharp.Core.Operators: T Cosh[T](T) Microsoft.FSharp.Core.Operators: T DefaultArg[T](Microsoft.FSharp.Core.FSharpOption`1[T], T) Microsoft.FSharp.Core.Operators: T Exit[T](Int32) Microsoft.FSharp.Core.Operators: T Exp[T](T) Microsoft.FSharp.Core.Operators: T FailWith[T](System.String) Microsoft.FSharp.Core.Operators: T Floor[T](T) Microsoft.FSharp.Core.Operators: T Identity[T](T) Microsoft.FSharp.Core.Operators: T InvalidArg[T](System.String, System.String) Microsoft.FSharp.Core.Operators: T InvalidOp[T](System.String) Microsoft.FSharp.Core.Operators: T Lock[TLock,T](TLock, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Core.Operators: T Log10[T](T) Microsoft.FSharp.Core.Operators: T Log[T](T) Microsoft.FSharp.Core.Operators: T Max[T](T, T) Microsoft.FSharp.Core.Operators: T Min[T](T, T) Microsoft.FSharp.Core.Operators: T NullArg[T](System.String) Microsoft.FSharp.Core.Operators: T PowInteger[T](T, Int32) Microsoft.FSharp.Core.Operators: T Raise[T](System.Exception) Microsoft.FSharp.Core.Operators: T Reraise[T]() Microsoft.FSharp.Core.Operators: T Rethrow[T]() Microsoft.FSharp.Core.Operators: T Round[T](T) Microsoft.FSharp.Core.Operators: T Sin[T](T) Microsoft.FSharp.Core.Operators: T Sinh[T](T) Microsoft.FSharp.Core.Operators: T Tan[T](T) Microsoft.FSharp.Core.Operators: T Tanh[T](T) Microsoft.FSharp.Core.Operators: T Truncate[T](T) Microsoft.FSharp.Core.Operators: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: T op_BitwiseAnd[T](T, T) Microsoft.FSharp.Core.Operators: T op_BitwiseOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Dereference[T](Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.Operators: T op_ExclusiveOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Exponentiation[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators: T op_LeftShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_LogicalNot[T](T) Microsoft.FSharp.Core.Operators: T op_RightShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators: T op_UnaryPlus[T](T) Microsoft.FSharp.Core.Operators: T1 Fst[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T2 Atan2[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators: T2 Snd[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Division[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Modulus[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: TResult Sqrt[T,TResult](T) Microsoft.FSharp.Core.Operators: TResult ToEnum[TResult](Int32) Microsoft.FSharp.Core.Operators: TResult Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1, T2) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], T1, T2, T3) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T) Microsoft.FSharp.Core.Operators: TResult op_PipeRight2[T1,T2,TResult](T1, T2, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight3[T1,T2,T3,TResult](T1, T2, T3, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight[T1,TResult](T1, Microsoft.FSharp.Core.FSharpFunc`2[T1,TResult]) Microsoft.FSharp.Core.Operators: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators: Void Decrement(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void Ignore[T](T) Microsoft.FSharp.Core.Operators: Void Increment(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void op_ColonEquals[T](Microsoft.FSharp.Core.FSharpRef`1[T], T) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: FSharpFunc`3 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: TResult Invoke(T1, T2) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: FSharpFunc`4 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: TResult Invoke(T1, T2, T3) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: FSharpFunc`5 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: TResult Invoke(T1, T2, T3, T4) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: FSharpFunc`6 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: TResult Invoke(T1, T2, T3, T4, T5) Microsoft.FSharp.Core.OptimizedClosures: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult] Microsoft.FSharp.Core.OptimizedClosures: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures: System.Type GetType() Microsoft.FSharp.Core.OptionModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsNone[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsSome[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 Count[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 GetHashCode() Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Bind[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: System.String ToString() Microsoft.FSharp.Core.OptionModule: System.Type GetType() Microsoft.FSharp.Core.OptionModule: T GetValue[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Core.FSharpOption`1[T], TState) Microsoft.FSharp.Core.OptionModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: T[] ToArray[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object TypeId Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.String ToString() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Type GetType() Microsoft.FSharp.Core.OptionalArgumentAttribute: Void .ctor() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String Value Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String Value Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfModule: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfModule: System.String ToString() Microsoft.FSharp.Core.PrintfModule: System.Type GetType() Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilderThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilder[T](System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriterThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object TypeId Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.String ToString() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Type GetType() Microsoft.FSharp.Core.ProjectionParameterAttribute: Void .ctor() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object TypeId Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.String ToString() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Type GetType() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Void .ctor() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object TypeId Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.String ToString() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Type GetType() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Void .ctor() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object TypeId Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Value Microsoft.FSharp.Core.SealedAttribute: Boolean get_Value() Microsoft.FSharp.Core.SealedAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.SealedAttribute: System.Object TypeId Microsoft.FSharp.Core.SealedAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.SealedAttribute: System.String ToString() Microsoft.FSharp.Core.SealedAttribute: System.Type GetType() Microsoft.FSharp.Core.SealedAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.SourceConstructFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 GetHashCode() Microsoft.FSharp.Core.SourceConstructFlags: Int32 value__ Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Closure Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Exception Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Field Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags KindMask Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Module Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags NonPublicRepresentation Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags None Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags ObjectType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags RecordType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags SumType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags UnionCase Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Value Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString() Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.Type GetType() Microsoft.FSharp.Core.SourceConstructFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.StringModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.StringModule: Boolean Exists(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Boolean ForAll(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Int32 GetHashCode() Microsoft.FSharp.Core.StringModule: Int32 Length(System.String) Microsoft.FSharp.Core.StringModule: System.String Collect(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.String], System.String) Microsoft.FSharp.Core.StringModule: System.String Concat(System.String, System.Collections.Generic.IEnumerable`1[System.String]) Microsoft.FSharp.Core.StringModule: System.String Initialize(Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String]) Microsoft.FSharp.Core.StringModule: System.String Map(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char], System.String) Microsoft.FSharp.Core.StringModule: System.String MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char]], System.String) Microsoft.FSharp.Core.StringModule: System.String Replicate(Int32, System.String) Microsoft.FSharp.Core.StringModule: System.String ToString() Microsoft.FSharp.Core.StringModule: System.Type GetType() Microsoft.FSharp.Core.StringModule: Void Iterate(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit], System.String) Microsoft.FSharp.Core.StringModule: Void IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit]], System.String) Microsoft.FSharp.Core.StructAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructAttribute: System.Object TypeId Microsoft.FSharp.Core.StructAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructAttribute: System.String ToString() Microsoft.FSharp.Core.StructAttribute: System.Type GetType() Microsoft.FSharp.Core.StructAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String ToString() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String Value Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String get_Value() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.Unit: Boolean Equals(System.Object) Microsoft.FSharp.Core.Unit: Int32 GetHashCode() Microsoft.FSharp.Core.Unit: System.String ToString() Microsoft.FSharp.Core.Unit: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.UnverifiableAttribute: System.Object TypeId Microsoft.FSharp.Core.UnverifiableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.UnverifiableAttribute: System.String ToString() Microsoft.FSharp.Core.UnverifiableAttribute: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Void .ctor() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object TypeId Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.VolatileFieldAttribute: System.String ToString() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Type GetType() Microsoft.FSharp.Core.VolatileFieldAttribute: Void .ctor() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: Boolean Equals(System.Object) Microsoft.FSharp.NativeInterop.NativePtrModule: Int32 GetHashCode() Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr AddPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr OfNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr StackAllocate[T](Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr ToNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: System.String ToString() Microsoft.FSharp.NativeInterop.NativePtrModule: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: T GetPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: T ReadPointerInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: Void SetPointerInlined[T](IntPtr, Int32, T) Microsoft.FSharp.NativeInterop.NativePtrModule: Void WritePointerInlined[T](IntPtr, T) Microsoft.FSharp.Quotations.DerivedPatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.DerivedPatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Collections.FSharpList`1[System.Type],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Boolean] BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Byte] BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Char] CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Double] DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int16] Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int64] Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.SByte] SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Single] SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.String] StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar]],Microsoft.FSharp.Quotations.FSharpExpr]] LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt16] UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt32] UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt64] UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: System.String ToString() Microsoft.FSharp.Quotations.DerivedPatternsModule: System.Type GetType() Microsoft.FSharp.Quotations.ExprShapeModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.ExprShapeModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Core.FSharpChoice`3[Microsoft.FSharp.Quotations.FSharpVar,System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr],System.Tuple`2[System.Object,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Quotations.FSharpExpr RebuildShapeCombination(System.Object, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.ExprShapeModule: System.String ToString() Microsoft.FSharp.Quotations.ExprShapeModule: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] TryGetReflectedDefinition(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressSet(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Application(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Applications(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Coerce(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr DefaultValue(System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Deserialize(System.Type, Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr], Byte[]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Lambda(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Let(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr LetRecursive(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewArray(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewDelegate(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewObject(System.Reflection.ConstructorInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewRecord(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewTuple(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Quote(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Sequential(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryFinally(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryWith(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TupleGet(Microsoft.FSharp.Quotations.FSharpExpr, Int32) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TypeTest(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Reflection.UnionCaseInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value(System.Object, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value[T](T) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Var(Microsoft.FSharp.Quotations.FSharpVar) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr VarSet(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Cast[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] GlobalVar[T](System.String) Microsoft.FSharp.Quotations.FSharpExpr: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpExpr: Void RegisterReflectedDefinitions(System.Reflection.Assembly, System.String, Byte[]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Raw Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr get_Raw() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpVar: Boolean IsMutable Microsoft.FSharp.Quotations.FSharpVar: Boolean get_IsMutable() Microsoft.FSharp.Quotations.FSharpVar: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpVar: Microsoft.FSharp.Quotations.FSharpVar Global(System.String, System.Type) Microsoft.FSharp.Quotations.FSharpVar: System.String Name Microsoft.FSharp.Quotations.FSharpVar: System.String ToString() Microsoft.FSharp.Quotations.FSharpVar: System.String get_Name() Microsoft.FSharp.Quotations.FSharpVar: System.Type GetType() Microsoft.FSharp.Quotations.FSharpVar: System.Type Type Microsoft.FSharp.Quotations.FSharpVar: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Void .ctor(System.String, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean]) Microsoft.FSharp.Quotations.PatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.PatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]] NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpVar] VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]],Microsoft.FSharp.Quotations.FSharpExpr]] LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo]] FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo]] UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Int32]] TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Object,System.Type]] ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr]] FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] LetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar],Microsoft.FSharp.Quotations.FSharpExpr]] NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Quotations.FSharpExpr]] PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Type] DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: System.String ToString() Microsoft.FSharp.Quotations.PatternsModule: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpType: Boolean IsExceptionRepresentation(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsFunction(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsModule(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsRecord(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsTuple(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsUnion(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpType: Microsoft.FSharp.Reflection.UnionCaseInfo[] GetUnionCases(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetExceptionFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetRecordFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.String ToString() Microsoft.FSharp.Reflection.FSharpType: System.Tuple`2[System.Type,System.Type] GetFunctionElements(System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: System.Type MakeFunctionType(System.Type, System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type MakeTupleType(System.Type[]) Microsoft.FSharp.Reflection.FSharpType: System.Type[] GetTupleElements(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpValue: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Int32] PreComputeUnionTagReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeRecordReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeTupleReader(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object] PreComputeRecordFieldReader(System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeRecordConstructor(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeTupleConstructor(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetRecordField(System.Object, System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetTupleField(System.Object, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeFunction(System.Type, Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeRecord(System.Type, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeTuple(System.Object[], System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetExceptionFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetRecordFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetTupleFields(System.Object) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.ConstructorInfo PreComputeRecordConstructorInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MemberInfo PreComputeUnionTagMemberInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MethodInfo PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.String ToString() Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[]] GetUnionFields(System.Object, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Type]] PreComputeTupleConstructorInfo(System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,System.Int32]]] PreComputeTuplePropertyInfo(System.Type, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 GetHashCode() Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 Tag Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 get_Tag() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes(System.Type) Microsoft.FSharp.Reflection.UnionCaseInfo: System.Reflection.PropertyInfo[] GetFields() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() System.AggregateException: Boolean Equals(System.Object) System.AggregateException: Int32 GetHashCode() System.AggregateException: System.Collections.IDictionary Data System.AggregateException: System.Collections.IDictionary get_Data() System.AggregateException: System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception] InnerExceptions System.AggregateException: System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception] get_InnerExceptions() System.AggregateException: System.Exception GetBaseException() System.AggregateException: System.Exception InnerException System.AggregateException: System.Exception get_InnerException() System.AggregateException: System.Reflection.MethodBase TargetSite System.AggregateException: System.Reflection.MethodBase get_TargetSite() System.AggregateException: System.String HelpLink System.AggregateException: System.String Message System.AggregateException: System.String Source System.AggregateException: System.String StackTrace System.AggregateException: System.String ToString() System.AggregateException: System.String get_HelpLink() System.AggregateException: System.String get_Message() System.AggregateException: System.String get_Source() System.AggregateException: System.String get_StackTrace() System.AggregateException: System.Type GetType() System.AggregateException: System.Type GetType() System.AggregateException: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) System.AggregateException: Void set_HelpLink(System.String) System.AggregateException: Void set_Source(System.String) System.Collections.IStructuralComparable: Int32 CompareTo(System.Object, System.Collections.IComparer) System.Collections.IStructuralEquatable: Boolean Equals(System.Object, System.Collections.IEqualityComparer) System.Collections.IStructuralEquatable: Int32 GetHashCode(System.Collections.IEqualityComparer) System.IObservable`1[T]: System.IDisposable Subscribe(System.IObserver`1[T]) System.IObserver`1[T]: Void OnCompleted() System.IObserver`1[T]: Void OnError(System.Exception) System.IObserver`1[T]: Void OnNext(T) System.Lazy`1[T]: Boolean Equals(System.Object) System.Lazy`1[T]: Boolean IsValueCreated System.Lazy`1[T]: Boolean get_IsValueCreated() System.Lazy`1[T]: Int32 GetHashCode() System.Lazy`1[T]: System.String ToString() System.Lazy`1[T]: System.Type GetType() System.Lazy`1[T]: T Value System.Lazy`1[T]: T get_Value() System.Numerics.BigInteger: Boolean Equals(System.Object) System.Numerics.BigInteger: Boolean IsOne System.Numerics.BigInteger: Boolean IsZero System.Numerics.BigInteger: Boolean get_IsOne() System.Numerics.BigInteger: Boolean get_IsZero() System.Numerics.BigInteger: Boolean op_Equality(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_GreaterThan(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_GreaterThanOrEqual(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_Inequality(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_LessThan(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Boolean op_LessThanOrEqual(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: Double op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: Int32 GetHashCode() System.Numerics.BigInteger: Int32 Sign System.Numerics.BigInteger: Int32 get_Sign() System.Numerics.BigInteger: Int32 op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: Int64 op_Explicit(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger Abs(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger DivRem(System.Numerics.BigInteger, System.Numerics.BigInteger, System.Numerics.BigInteger ByRef) System.Numerics.BigInteger: System.Numerics.BigInteger GreatestCommonDivisor(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger One System.Numerics.BigInteger: System.Numerics.BigInteger Parse(System.String) System.Numerics.BigInteger: System.Numerics.BigInteger Pow(System.Numerics.BigInteger, Int32) System.Numerics.BigInteger: System.Numerics.BigInteger Zero System.Numerics.BigInteger: System.Numerics.BigInteger get_One() System.Numerics.BigInteger: System.Numerics.BigInteger get_Zero() System.Numerics.BigInteger: System.Numerics.BigInteger op_Addition(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Division(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Modulus(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Multiply(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_Subtraction(System.Numerics.BigInteger, System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_UnaryNegation(System.Numerics.BigInteger) System.Numerics.BigInteger: System.Numerics.BigInteger op_UnaryPlus(System.Numerics.BigInteger) System.Numerics.BigInteger: System.String ToString() System.Numerics.BigInteger: System.Type GetType() System.Numerics.BigInteger: Void .ctor(Int32) System.Numerics.BigInteger: Void .ctor(Int64) System.Threading.CancellationToken: Boolean Equals(System.Object) System.Threading.CancellationToken: Boolean Equals(System.Threading.CancellationToken) System.Threading.CancellationToken: Boolean IsCancellationRequested System.Threading.CancellationToken: Boolean get_IsCancellationRequested() System.Threading.CancellationToken: Boolean op_Equality(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationToken: Boolean op_Inequality(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationToken: Int32 GetHashCode() System.Threading.CancellationToken: System.String ToString() System.Threading.CancellationToken: System.Threading.CancellationTokenRegistration Register(System.Action`1[System.Object], System.Object) System.Threading.CancellationToken: System.Type GetType() System.Threading.CancellationTokenRegistration: Boolean Equals(System.Object) System.Threading.CancellationTokenRegistration: Boolean Equals(System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Boolean op_Equality(System.Threading.CancellationTokenRegistration, System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Boolean op_Inequality(System.Threading.CancellationTokenRegistration, System.Threading.CancellationTokenRegistration) System.Threading.CancellationTokenRegistration: Int32 GetHashCode() System.Threading.CancellationTokenRegistration: System.String ToString() System.Threading.CancellationTokenRegistration: System.Type GetType() System.Threading.CancellationTokenRegistration: Void Dispose() System.Threading.CancellationTokenSource: Boolean Equals(System.Object) System.Threading.CancellationTokenSource: Int32 GetHashCode() System.Threading.CancellationTokenSource: System.String ToString() System.Threading.CancellationTokenSource: System.Threading.CancellationToken Token System.Threading.CancellationTokenSource: System.Threading.CancellationToken get_Token() System.Threading.CancellationTokenSource: System.Threading.CancellationTokenSource CreateLinkedTokenSource(System.Threading.CancellationToken, System.Threading.CancellationToken) System.Threading.CancellationTokenSource: System.Type GetType() System.Threading.CancellationTokenSource: Void .ctor() System.Threading.CancellationTokenSource: Void Cancel() System.Threading.CancellationTokenSource: Void Dispose() System.Tuple: Boolean Equals(System.Object) System.Tuple: Int32 GetHashCode() System.Tuple: System.String ToString() System.Tuple: System.Tuple`1[T1] Create[T1](T1) System.Tuple: System.Tuple`2[T1,T2] Create[T1,T2](T1, T2) System.Tuple: System.Tuple`3[T1,T2,T3] Create[T1,T2,T3](T1, T2, T3) System.Tuple: System.Tuple`4[T1,T2,T3,T4] Create[T1,T2,T3,T4](T1, T2, T3, T4) System.Tuple: System.Tuple`5[T1,T2,T3,T4,T5] Create[T1,T2,T3,T4,T5](T1, T2, T3, T4, T5) System.Tuple: System.Tuple`6[T1,T2,T3,T4,T5,T6] Create[T1,T2,T3,T4,T5,T6](T1, T2, T3, T4, T5, T6) System.Tuple: System.Tuple`7[T1,T2,T3,T4,T5,T6,T7] Create[T1,T2,T3,T4,T5,T6,T7](T1, T2, T3, T4, T5, T6, T7) System.Tuple: System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,System.Tuple`1[T8]] Create[T1,T2,T3,T4,T5,T6,T7,T8](T1, T2, T3, T4, T5, T6, T7, T8) System.Tuple: System.Type GetType() System.Tuple`1[T1]: Boolean Equals(System.Object) System.Tuple`1[T1]: Int32 GetHashCode() System.Tuple`1[T1]: System.String ToString() System.Tuple`1[T1]: System.Type GetType() System.Tuple`1[T1]: T1 Item1 System.Tuple`1[T1]: T1 get_Item1() System.Tuple`1[T1]: Void .ctor(T1) System.Tuple`2[T1,T2]: Boolean Equals(System.Object) System.Tuple`2[T1,T2]: Int32 GetHashCode() System.Tuple`2[T1,T2]: System.String ToString() System.Tuple`2[T1,T2]: System.Type GetType() System.Tuple`2[T1,T2]: T1 Item1 System.Tuple`2[T1,T2]: T1 get_Item1() System.Tuple`2[T1,T2]: T2 Item2 System.Tuple`2[T1,T2]: T2 get_Item2() System.Tuple`2[T1,T2]: Void .ctor(T1, T2) System.Tuple`3[T1,T2,T3]: Boolean Equals(System.Object) System.Tuple`3[T1,T2,T3]: Int32 GetHashCode() System.Tuple`3[T1,T2,T3]: System.String ToString() System.Tuple`3[T1,T2,T3]: System.Type GetType() System.Tuple`3[T1,T2,T3]: T1 Item1 System.Tuple`3[T1,T2,T3]: T1 get_Item1() System.Tuple`3[T1,T2,T3]: T2 Item2 System.Tuple`3[T1,T2,T3]: T2 get_Item2() System.Tuple`3[T1,T2,T3]: T3 Item3 System.Tuple`3[T1,T2,T3]: T3 get_Item3() System.Tuple`3[T1,T2,T3]: Void .ctor(T1, T2, T3) System.Tuple`4[T1,T2,T3,T4]: Boolean Equals(System.Object) System.Tuple`4[T1,T2,T3,T4]: Int32 GetHashCode() System.Tuple`4[T1,T2,T3,T4]: System.String ToString() System.Tuple`4[T1,T2,T3,T4]: System.Type GetType() System.Tuple`4[T1,T2,T3,T4]: T1 Item1 System.Tuple`4[T1,T2,T3,T4]: T1 get_Item1() System.Tuple`4[T1,T2,T3,T4]: T2 Item2 System.Tuple`4[T1,T2,T3,T4]: T2 get_Item2() System.Tuple`4[T1,T2,T3,T4]: T3 Item3 System.Tuple`4[T1,T2,T3,T4]: T3 get_Item3() System.Tuple`4[T1,T2,T3,T4]: T4 Item4 System.Tuple`4[T1,T2,T3,T4]: T4 get_Item4() System.Tuple`4[T1,T2,T3,T4]: Void .ctor(T1, T2, T3, T4) System.Tuple`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) System.Tuple`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() System.Tuple`5[T1,T2,T3,T4,T5]: System.String ToString() System.Tuple`5[T1,T2,T3,T4,T5]: System.Type GetType() System.Tuple`5[T1,T2,T3,T4,T5]: T1 Item1 System.Tuple`5[T1,T2,T3,T4,T5]: T1 get_Item1() System.Tuple`5[T1,T2,T3,T4,T5]: T2 Item2 System.Tuple`5[T1,T2,T3,T4,T5]: T2 get_Item2() System.Tuple`5[T1,T2,T3,T4,T5]: T3 Item3 System.Tuple`5[T1,T2,T3,T4,T5]: T3 get_Item3() System.Tuple`5[T1,T2,T3,T4,T5]: T4 Item4 System.Tuple`5[T1,T2,T3,T4,T5]: T4 get_Item4() System.Tuple`5[T1,T2,T3,T4,T5]: T5 Item5 System.Tuple`5[T1,T2,T3,T4,T5]: T5 get_Item5() System.Tuple`5[T1,T2,T3,T4,T5]: Void .ctor(T1, T2, T3, T4, T5) System.Tuple`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) System.Tuple`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() System.Tuple`6[T1,T2,T3,T4,T5,T6]: System.String ToString() System.Tuple`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T1 Item1 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T1 get_Item1() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T2 Item2 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T2 get_Item2() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T3 Item3 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T3 get_Item3() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T4 Item4 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T4 get_Item4() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T5 Item5 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T5 get_Item5() System.Tuple`6[T1,T2,T3,T4,T5,T6]: T6 Item6 System.Tuple`6[T1,T2,T3,T4,T5,T6]: T6 get_Item6() System.Tuple`6[T1,T2,T3,T4,T5,T6]: Void .ctor(T1, T2, T3, T4, T5, T6) System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T1 Item1 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item1() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T2 Item2 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item2() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T3 Item3 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item3() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T4 Item4 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item4() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T5 Item5 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item5() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T6 Item6 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item6() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T7 Item7 System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item7() System.Tuple`7[T1,T2,T3,T4,T5,T6,T7]: Void .ctor(T1, T2, T3, T4, T5, T6, T7) System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Boolean Equals(System.Object) System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Int32 GetHashCode() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: System.String ToString() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: System.Type GetType() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T1 Item1 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T1 get_Item1() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T2 Item2 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T2 get_Item2() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T3 Item3 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T3 get_Item3() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T4 Item4 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T4 get_Item4() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T5 Item5 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T5 get_Item5() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T6 Item6 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T6 get_Item6() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T7 Item7 System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: T7 get_Item7() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: TRest Rest System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: TRest get_Rest() System.Tuple`8[T1,T2,T3,T4,T5,T6,T7,TRest]: Void .ctor(T1, T2, T3, T4, T5, T6, T7, TRest) " let act = actual.ToString() if expected <> act then printf "%s" act Assert.AreEqual(expected, act) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/Properties/0000775000175000017500000000000012260314606022351 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/Properties/AppManifest.xml0000775000175000017500000000030612260314606025304 0ustar chrischris fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/Properties/AssemblyInfo.cs0000775000175000017500000000262312260314606025301 0ustar chrischris// (c) Copyright Microsoft Corporation. // This source is subject to the Microsoft Public License (Ms-PL). // Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details. // All other rights reserved. using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("D87CB4EC-9844-4f98-9FEC-14DB50729D65")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/SurfaceArea.4.0.dev10.fs0000775000175000017500000110447312260314606024163 0ustar chrischrisnamespace FSharp.Core.Unittests.SurfaceArea module Dev10Net40Baseline = // this baseline shipped with dev10 and should never change moving forward let dev10 = @" Microsoft.FSharp.Collections.Array2DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array2DModule: Int32 Base1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Base2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array2DModule: Int32 Length1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Length2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: System.String ToString() Microsoft.FSharp.Collections.Array2DModule: System.Type GetType() Microsoft.FSharp.Collections.Array2DModule: T Get[T](T[,], Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: TResult[,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: TResult[,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Copy[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] CreateBased[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] Create[T](Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] InitializeBased[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Initialize[T](Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Rebase[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreateBased[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreate[T](Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void CopyTo[T](T[,], Int32, Int32, T[,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Set[T](T[,], Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array3DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array3DModule: Int32 Length1[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length2[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length3[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: System.String ToString() Microsoft.FSharp.Collections.Array3DModule: System.Type GetType() Microsoft.FSharp.Collections.Array3DModule: T Get[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,,]) Microsoft.FSharp.Collections.Array3DModule: T[,,] Create[T](Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: T[,,] Initialize[T](Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]) Microsoft.FSharp.Collections.Array3DModule: T[,,] ZeroCreate[T](Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Set[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array4DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array4DModule: Int32 Length1[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length2[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length3[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length4[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: System.String ToString() Microsoft.FSharp.Collections.Array4DModule: System.Type GetType() Microsoft.FSharp.Collections.Array4DModule: T Get[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Create[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Initialize[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]]) Microsoft.FSharp.Collections.Array4DModule: T[,,,] ZeroCreate[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: Void Set[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule+Parallel: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule+Parallel: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule+Parallel: System.String ToString() Microsoft.FSharp.Collections.ArrayModule+Parallel: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule+Parallel: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule+Parallel: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean IsEmpty[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule: Int32 Length[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.ArrayModule+Parallel Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](T[]) Microsoft.FSharp.Collections.ArrayModule: System.String ToString() Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1,T2][] Zip[T1,T2](T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1[],T2[]] Unzip[T1,T2](System.Tuple`2[T1,T2][]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1,T2,T3][] Zip3[T1,T2,T3](T1[], T2[], T3[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1[],T2[],T3[]] Unzip3[T1,T2,T3](System.Tuple`3[T1,T2,T3][]) Microsoft.FSharp.Collections.ArrayModule: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule: T Average[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T Get[T](T[], Int32) Microsoft.FSharp.Collections.ArrayModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Max[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Min[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Sum[T](T[]) Microsoft.FSharp.Collections.ArrayModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], T1[], T2[], TState) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: TState[] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState[] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Append[T](T[], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Concat[T](System.Collections.Generic.IEnumerable`1[T[]]) Microsoft.FSharp.Collections.ArrayModule: T[] Copy[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Create[T](Int32, T) Microsoft.FSharp.Collections.ArrayModule: T[] Empty[T]() Microsoft.FSharp.Collections.ArrayModule: T[] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] GetSubArray[T](T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Reverse[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Sort[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] ZeroCreate[T](Int32) Microsoft.FSharp.Collections.ArrayModule: Void CopyTo[T](T[], Int32, T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: Void Fill[T](T[], Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Set[T](T[], Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlace[T](T[]) Microsoft.FSharp.Collections.ComparisonIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ComparisonIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] FromFunction[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]]) Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.ComparisonIdentity: System.String ToString() Microsoft.FSharp.Collections.ComparisonIdentity: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsCons() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Length Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Tag Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Length() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Tag() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1+Tags[T] Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Cons(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Tail Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] TailOrNull Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Empty() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Tail() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_TailOrNull() Microsoft.FSharp.Collections.FSharpList`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: T Head Microsoft.FSharp.Collections.FSharpList`1[T]: T HeadOrDefault Microsoft.FSharp.Collections.FSharpList`1[T]: T Item [Int32] Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Head() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_HeadOrDefault() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Item(Int32) Microsoft.FSharp.Collections.FSharpList`1[T]: Void .ctor(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean ContainsKey(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 Count Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Add(TKey, TValue) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Remove(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Core.FSharpOption`1[TValue] TryFind(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.String ToString() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.Type GetType() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue Item [TKey] Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue get_Item(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Void .ctor(System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Contains(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 Count Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Add(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Addition(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Subtraction(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpSet`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpSet`1[T]: T MaximumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T MinimumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MaximumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MinimumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.HashIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.HashIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] FromFunctions[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]]) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] LimitedStructural[T](Int32) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Reference[T]() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.HashIdentity: System.String ToString() Microsoft.FSharp.Collections.HashIdentity: System.Type GetType() Microsoft.FSharp.Collections.ListModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ListModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ListModule: Int32 Length[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]] Zip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Collections.FSharpList`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Concat[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpList`1[T]]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Empty[T]() Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Replicate[T](Int32, T) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Reverse[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Sort[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Tail[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.String ToString() Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2]] Unzip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]]) Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T],Microsoft.FSharp.Collections.FSharpList`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2],Microsoft.FSharp.Collections.FSharpList`1[T3]] Unzip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]]) Microsoft.FSharp.Collections.ListModule: System.Type GetType() Microsoft.FSharp.Collections.ListModule: T Average[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Get[T](Microsoft.FSharp.Collections.FSharpList`1[T], Int32) Microsoft.FSharp.Collections.ListModule: T Head[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Max[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Min[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Sum[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], TState) Microsoft.FSharp.Collections.ListModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.MapModule: Boolean ContainsKey[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.MapModule: Boolean Exists[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean ForAll[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean IsEmpty[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Int32 GetHashCode() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]] ToList[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TResult] Map[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Add[TKey,T](TKey, T, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Empty[TKey,T]() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Filter[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfArray[TKey,T](System.Tuple`2[TKey,T][]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfList[TKey,T](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfSeq[TKey,T](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Remove[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TKey] TryFindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]] ToSeq[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.String ToString() Microsoft.FSharp.Collections.MapModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpMap`2[TKey,T],Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]] Partition[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Tuple`2[TKey,T][] ToArray[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Type GetType() Microsoft.FSharp.Collections.MapModule: T Find[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TKey FindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TResult Pick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TState FoldBack[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T], TState) Microsoft.FSharp.Collections.MapModule: TState Fold[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]]], TState, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Void Iterate[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.SeqModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SeqModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean IsEmpty[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 CompareWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SeqModule: Int32 Length[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T,T]] Pairwise[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T1,T2]] Zip[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Collections.Generic.IEnumerable`1[T]]] GroupBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Int32]] CountBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2], System.Collections.Generic.IEnumerable`1[T3]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Collect[T,TCollection,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T[]] Windowed[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Append[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cache[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cast[T](System.Collections.IEnumerable) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Concat[TCollection,T](System.Collections.Generic.IEnumerable`1[TCollection]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable`1[T]]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] DistinctBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Distinct[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Empty[T]() Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] InitializeInfinite[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] ReadOnly[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SkipWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Skip[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Sort[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] TakeWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Take[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Truncate[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Unfold[TState,T](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[T,TState]]], TState) Microsoft.FSharp.Collections.SeqModule: System.String ToString() Microsoft.FSharp.Collections.SeqModule: System.Type GetType() Microsoft.FSharp.Collections.SeqModule: T Average[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Get[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Head[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Max[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Min[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Sum[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T[] ToArray[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Contains[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SetModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 Count[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Add[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Difference[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Empty[T]() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] IntersectMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Intersect[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] UnionMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Union[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.String ToString() Microsoft.FSharp.Collections.SetModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpSet`1[T],Microsoft.FSharp.Collections.FSharpSet`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Type GetType() Microsoft.FSharp.Collections.SetModule: T MaxElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T MinElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpSet`1[T], TState) Microsoft.FSharp.Collections.SetModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Control.CommonExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.CommonExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] AsyncWrite(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Byte[]] AsyncReadBytes(System.IO.Stream, Int32) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Int32] AsyncRead(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: System.IDisposable SubscribeToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.CommonExtensions: System.String ToString() Microsoft.FSharp.Control.CommonExtensions: System.Type GetType() Microsoft.FSharp.Control.CommonExtensions: Void AddToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.EventModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.EventModule: Int32 GetHashCode() Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[System.Tuple`2[T,T]],System.Tuple`2[T,T]] Pairwise[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Choose[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Map[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Scan[TResult,T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Filter[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Merge[TDel1,T,TDel2](Microsoft.FSharp.Control.IEvent`2[TDel1,T], Microsoft.FSharp.Control.IEvent`2[TDel2,T]) Microsoft.FSharp.Control.EventModule: System.String ToString() Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult1],TResult1],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult2],TResult2]] Split[T,TResult1,TResult2,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T]] Partition[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Type GetType() Microsoft.FSharp.Control.EventModule: Void Add[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.FSharpAsync: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Control.FSharpAsync`1[T]] StartChild[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpChoice`2[T,System.Exception]] Catch[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Ignore[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Sleep(Int32) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToContext(System.Threading.SynchronizationContext) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToNewThread() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToThreadPool() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitIAsyncResult(System.IAsyncResult, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitWaitHandle(System.Threading.WaitHandle, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.IDisposable] OnCancel(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] CancellationToken Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] get_CancellationToken() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.Tasks.Task`1[T]] StartChildAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T[]] Parallel[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitEvent[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitTask[T](System.Threading.Tasks.Task`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,TArg3,T](TArg1, TArg2, TArg3, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[TArg1,TArg2,TArg3,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,T](TArg1, TArg2, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[TArg1,TArg2,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,T](TArg1, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg1,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromContinuations[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]],Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] TryCancelled[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: System.String ToString() Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken DefaultCancellationToken Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken get_DefaultCancellationToken() Microsoft.FSharp.Control.FSharpAsync: System.Threading.Tasks.Task`1[T] StartAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg,System.AsyncCallback,System.Object],System.IAsyncResult],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,Microsoft.FSharp.Core.Unit]] AsBeginEnd[TArg,T](Microsoft.FSharp.Core.FSharpFunc`2[TArg,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: System.Type GetType() Microsoft.FSharp.Control.FSharpAsync: T RunSynchronously[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void CancelDefaultToken() Microsoft.FSharp.Control.FSharpAsync: Void Start(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartImmediate(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartWithContinuations[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncBuilder: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] For[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] While(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Zero() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Bind[T,TResult](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Combine[T](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] ReturnFrom[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Return[T](T) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryFinally[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryWith[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncBuilder: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Void Reply(TReply) Microsoft.FSharp.Control.FSharpAsync`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] Publish Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] get_Publish() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.String ToString() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void .ctor() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void Trigger(System.Object[]) Microsoft.FSharp.Control.FSharpEvent`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Publish Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] get_Publish() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void Trigger(T) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] Publish Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] get_Publish() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void Trigger(System.Object, TArgs) Microsoft.FSharp.Control.FSharpHandler`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Delegate[] GetInvocationList() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.IAsyncResult BeginInvoke(System.Object, T, System.AsyncCallback, System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Clone() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object DynamicInvoke(System.Object[]) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Target Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object get_Target() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo Method Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo get_Method() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpHandler`1[T]: Void .ctor(System.Object, IntPtr) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void EndInvoke(System.IAsyncResult) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void Invoke(System.Object, T) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 CurrentQueueLength Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 DefaultTimeout Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_CurrentQueueLength() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_DefaultTimeout() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TMsg]] TryReceive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TReply]] PostAndTryAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[T]] TryScan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TMsg] Receive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TReply] PostAndAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[T] Scan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpHandler`1[System.Exception] Error Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg] Start(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Core.FSharpOption`1[TReply] TryPostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.String ToString() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.Type GetType() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: TReply PostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Post(TMsg) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Start() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void add_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void remove_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void set_DefaultTimeout(Int32) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void AddHandler(TDelegate) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void RemoveHandler(TDelegate) Microsoft.FSharp.Control.LazyExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.LazyExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] CreateFromValue[T](T) Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] Create[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Control.LazyExtensions: System.String ToString() Microsoft.FSharp.Control.LazyExtensions: System.Type GetType() Microsoft.FSharp.Control.LazyExtensions: T Force[T](System.Lazy`1[T]) Microsoft.FSharp.Control.ObservableModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.ObservableModule: Int32 GetHashCode() Microsoft.FSharp.Control.ObservableModule: System.IDisposable Subscribe[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[System.Tuple`2[T,T]] Pairwise[T](System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Scan[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Merge[T](System.IObservable`1[T], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.String ToString() Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[TResult1],System.IObservable`1[TResult2]] Split[T,TResult1,TResult2](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[T],System.IObservable`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Type GetType() Microsoft.FSharp.Control.ObservableModule: Void Add[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.WebExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.WebExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Net.WebResponse] AsyncGetResponse(System.Net.WebRequest) Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.String] AsyncDownloadString(System.Net.WebClient, System.Uri) Microsoft.FSharp.Control.WebExtensions: System.String ToString() Microsoft.FSharp.Control.WebExtensions: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AbstractClassAttribute: System.Object TypeId Microsoft.FSharp.Core.AbstractClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AbstractClassAttribute: System.String ToString() Microsoft.FSharp.Core.AbstractClassAttribute: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Void .ctor() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.String ToString() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoOpenAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoOpenAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoOpenAttribute: System.String Path Microsoft.FSharp.Core.AutoOpenAttribute: System.String ToString() Microsoft.FSharp.Core.AutoOpenAttribute: System.String get_Path() Microsoft.FSharp.Core.AutoOpenAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Value Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean get_Value() Microsoft.FSharp.Core.AutoSerializableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoSerializableAttribute: System.String ToString() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoSerializableAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIEventAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIEventAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIEventAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIEventAttribute: System.String ToString() Microsoft.FSharp.Core.CLIEventAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIEventAttribute: Void .ctor() Microsoft.FSharp.Core.ClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ClassAttribute: System.Object TypeId Microsoft.FSharp.Core.ClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ClassAttribute: System.String ToString() Microsoft.FSharp.Core.ClassAttribute: System.Type GetType() Microsoft.FSharp.Core.ClassAttribute: Void .ctor() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] Counts Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] get_Counts() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Void .ctor(Int32[]) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 SequenceNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 VariantNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_SequenceNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_VariantNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags SourceConstructFlags Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags get_SourceConstructFlags() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationMappingAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32, Int32) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags Flags Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags get_Flags() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Void .ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 value__ Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Event Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Instance Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags ModuleSuffix Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags None Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Static Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags UseNullAsTrueValue Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String SourceName Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String get_SourceName() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompiledNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompiledNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompiledNameAttribute: System.String CompiledName Microsoft.FSharp.Core.CompiledNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompiledNameAttribute: System.String get_CompiledName() Microsoft.FSharp.Core.CompiledNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompiledNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsError Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsHidden Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsError() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsHidden() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 MessageNumber Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 get_MessageNumber() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String Message Microsoft.FSharp.Core.CompilerMessageAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String get_Message() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerMessageAttribute: Void .ctor(System.String, Int32) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsError(Boolean) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsHidden(Boolean) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean CheckClose Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean get_CheckClose() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GenerateNext(System.Collections.Generic.IEnumerable`1[T] ByRef) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Collections.Generic.IEnumerator`1[T] GetFreshEnumerator() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T LastGenerated Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T get_LastGenerated() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Void Close() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] CreateEvent[TDelegate,TArgs](Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Core.FSharpFunc`2[TArgs,Microsoft.FSharp.Core.Unit]],TDelegate]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateFromFunctions[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateUsing[T,TCollection,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateThenFinally[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.String ToString() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Value Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean get_Value() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Check Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean get_Check() Microsoft.FSharp.Core.DefaultValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultValueAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultValueAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultValueAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EntryPointAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EntryPointAttribute: System.Object TypeId Microsoft.FSharp.Core.EntryPointAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EntryPointAttribute: System.String ToString() Microsoft.FSharp.Core.EntryPointAttribute: System.Type GetType() Microsoft.FSharp.Core.EntryPointAttribute: Void .ctor() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ExperimentalAttribute: System.Object TypeId Microsoft.FSharp.Core.ExperimentalAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ExperimentalAttribute: System.String Message Microsoft.FSharp.Core.ExperimentalAttribute: System.String ToString() Microsoft.FSharp.Core.ExperimentalAttribute: System.String get_Message() Microsoft.FSharp.Core.ExperimentalAttribute: System.Type GetType() Microsoft.FSharp.Core.ExperimentalAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.ExtraTopLevelOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExtraTopLevelOperators: Byte ToByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Double ToDouble[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Int32 GetHashCode() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Collections.FSharpSet`1[T] CreateSet[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder DefaultAsyncBuilder Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder get_DefaultAsyncBuilder() Microsoft.FSharp.Core.ExtraTopLevelOperators: SByte ToSByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Single ToSingle[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Collections.Generic.IDictionary`2[TKey,TValue] CreateDictionary[TKey,TValue](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.String ToString() Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Type GetType() Microsoft.FSharp.Core.ExtraTopLevelOperators: T LazyPattern[T](System.Lazy`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToString[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceUntypedExpression[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Core.ExtraTopLevelOperators: T[,] CreateArray2D[?,T](System.Collections.Generic.IEnumerable`1[?]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice1Of2(T1) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice2Of2(T2) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice1Of3(T1) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice2Of3(T2) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice3Of3(T3) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice1Of4(T1) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice2Of4(T2) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice3Of4(T3) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice4Of4(T4) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice1Of5(T1) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice2Of5(T2) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice3Of5(T3) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice4Of5(T4) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice5Of5(T5) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice1Of6(T1) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice2Of6(T2) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice3Of6(T3) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice4Of6(T4) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice5Of6(T5) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice6Of6(T6) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice1Of7(T1) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice2Of7(T2) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice3Of7(T3) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice4Of7(T4) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice5Of7(T5) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice6Of7(T6) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice7Of7(T7) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] FromConverter(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] op_Implicit(System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] ToConverter(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Converter`2[T,TResult] op_Implicit(Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.String ToString() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: TResult Invoke(T) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: V InvokeFast[V](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,V]], T, TResult) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: W InvokeFast[V,W](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,W]]], T, TResult, V) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: X InvokeFast[V,W,X](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,X]]]], T, TResult, V, W) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Y InvokeFast[V,W,X,Y](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,Microsoft.FSharp.Core.FSharpFunc`2[X,Y]]]]], T, TResult, V, W, X) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Major Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Minor Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Release Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Major() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Minor() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Release() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object TypeId Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.String ToString() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Type GetType() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int32, Int32) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsSome Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsNone(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsSome(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetTag(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1+Tags[T] Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] None Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] Some(T) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] get_None() Microsoft.FSharp.Core.FSharpOption`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpRef`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpRef`1[T]: T Value Microsoft.FSharp.Core.FSharpRef`1[T]: T contents Microsoft.FSharp.Core.FSharpRef`1[T]: T contents@ Microsoft.FSharp.Core.FSharpRef`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpRef`1[T]: T get_contents() Microsoft.FSharp.Core.FSharpRef`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_Value(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpTypeFunc: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpTypeFunc: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpTypeFunc: System.Object Specialize[T]() Microsoft.FSharp.Core.FSharpTypeFunc: System.String ToString() Microsoft.FSharp.Core.FSharpTypeFunc: System.Type GetType() Microsoft.FSharp.Core.FuncConvert: Boolean Equals(System.Object) Microsoft.FSharp.Core.FuncConvert: Int32 GetHashCode() Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit] ToFSharpFunc[T](System.Action`1[T]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] ToFSharpFunc[T,TResult](System.Converter`2[T,TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]] FuncFromTupled[T1,T2,T3,T4,T5,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[T1,T2,T3,T4,T5],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]] FuncFromTupled[T1,T2,T3,T4,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[T1,T2,T3,T4],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]] FuncFromTupled[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[T1,T2,T3],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]] FuncFromTupled[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[T1,T2],TResult]) Microsoft.FSharp.Core.FuncConvert: System.String ToString() Microsoft.FSharp.Core.FuncConvert: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object TypeId Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.String ToString() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Void .ctor() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.InterfaceAttribute: System.Object TypeId Microsoft.FSharp.Core.InterfaceAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.InterfaceAttribute: System.String ToString() Microsoft.FSharp.Core.InterfaceAttribute: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Void .ctor() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String AddressOpNotFirstClassString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputArrayEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputMustBeNonNegativeString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputSequenceEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String NoNegateMinValueString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_AddressOpNotFirstClassString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputArrayEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputMustBeNonNegativeString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputSequenceEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_NoNegateMinValueString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityERIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean PhysicalEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple2[T1,T2](System.Collections.IComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple3[T1,T2,T3](System.Collections.IComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple4[T1,T2,T3,T4](System.Collections.IComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple5[T1,T2,T3,T4,T5](System.Collections.IComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonWithComparerIntrinsic[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 LimitedGenericHashIntrinsic[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 PhysicalHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Char GetString(System.String, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Decimal MakeDecimal(Int32, Int32, Int32, Boolean, Byte) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CheckThis[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CreateInstance[T]() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray2D[T](T[,], Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray3D[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray4D[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray[T](T[], Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void Dispose[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailStaticInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray2D[T](T[,], Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray3D[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray4D[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray[T](T[], Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Or(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_Amp(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanAnd(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanOr(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: IntPtr op_IntegerAddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: T& op_AddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityER[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityWithComparer[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean PhysicalEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Double FloatWithMeasure(Double) Microsoft.FSharp.Core.LanguagePrimitives: Int16 Int16WithMeasure(Int16) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparisonWithComparer[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparison[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHashWithComparer[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericLimitedHash[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives: Int32 Int32WithMeasure(Int32) Microsoft.FSharp.Core.LanguagePrimitives: Int32 ParseInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Int32 PhysicalHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int64 Int64WithMeasure(Int64) Microsoft.FSharp.Core.LanguagePrimitives: Int64 ParseInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+HashCompare Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators Microsoft.FSharp.Core.LanguagePrimitives: SByte SByteWithMeasure(SByte) Microsoft.FSharp.Core.LanguagePrimitives: Single Float32WithMeasure(Single) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IComparer`1[T] FastGenericComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastGenericEqualityComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastLimitedGenericEqualityComparer[T](Int32) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer GenericComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer get_GenericComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityERComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityERComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Decimal DecimalWithMeasure(System.Decimal) Microsoft.FSharp.Core.LanguagePrimitives: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives: T DivideByIntDynamic[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T DivideByInt[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T EnumToValue[TEnum,T](TEnum) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMaximum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMinimum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericOneDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericOne[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZeroDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZero[T]() Microsoft.FSharp.Core.LanguagePrimitives: TEnum EnumOfValue[T,TEnum](T) Microsoft.FSharp.Core.LanguagePrimitives: TResult AdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedAdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedMultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult MultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: UInt32 ParseUInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.LiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.LiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.LiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.LiteralAttribute: System.String ToString() Microsoft.FSharp.Core.LiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 Microsoft.FSharp.Core.MatchFailureException: Int32 Data2 Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode() Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data1() Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data2() Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary Data Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Core.MatchFailureException: System.Exception GetBaseException() Microsoft.FSharp.Core.MatchFailureException: System.Exception InnerException Microsoft.FSharp.Core.MatchFailureException: System.Exception get_InnerException() Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase TargetSite Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase get_TargetSite() Microsoft.FSharp.Core.MatchFailureException: System.String Data0 Microsoft.FSharp.Core.MatchFailureException: System.String HelpLink Microsoft.FSharp.Core.MatchFailureException: System.String Message Microsoft.FSharp.Core.MatchFailureException: System.String Source Microsoft.FSharp.Core.MatchFailureException: System.String StackTrace Microsoft.FSharp.Core.MatchFailureException: System.String ToString() Microsoft.FSharp.Core.MatchFailureException: System.String get_Data0() Microsoft.FSharp.Core.MatchFailureException: System.String get_HelpLink() Microsoft.FSharp.Core.MatchFailureException: System.String get_Message() Microsoft.FSharp.Core.MatchFailureException: System.String get_Source() Microsoft.FSharp.Core.MatchFailureException: System.String get_StackTrace() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Void .ctor(System.String, Int32, Int32) Microsoft.FSharp.Core.MatchFailureException: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Core.MatchFailureException: Void set_HelpLink(System.String) Microsoft.FSharp.Core.MatchFailureException: Void set_Source(System.String) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Void .ctor() Microsoft.FSharp.Core.MeasureAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAttribute: Void .ctor() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.NoComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.NoComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.NoComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object TypeId Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.String ToString() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Type GetType() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Void .ctor() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.NoEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.NoEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.NoEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromInt64Dynamic(Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromStringDynamic(System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.String ToString() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Type GetType() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt32[T](Int32) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt64[T](Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromOne[T]() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromString[T](System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromZero[T]() Microsoft.FSharp.Core.NumericLiterals: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals: Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI Microsoft.FSharp.Core.NumericLiterals: System.String ToString() Microsoft.FSharp.Core.NumericLiterals: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Checked: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators+Checked: Char ToChar[T](T) Microsoft.FSharp.Core.Operators+Checked: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators+Checked: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators+Checked: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators+Checked: System.String ToString() Microsoft.FSharp.Core.Operators+Checked: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators+Checked: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Byte PowByte(Byte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Double PowDouble(Double, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int16 PowInt16(Int16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 PowInt32(Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 SignDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int64 PowInt64(Int64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: IntPtr PowIntPtr(IntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: SByte PowSByte(SByte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Single PowSingle(Single, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Byte] RangeByte(Byte, Byte, Byte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Char] RangeChar(Char, Char) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Double] RangeDouble(Double, Double, Double) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int16] RangeInt16(Int16, Int16, Int16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int32] RangeInt32(Int32, Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int64] RangeInt64(Int64, Int64, Int64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.IntPtr] RangeIntPtr(IntPtr, IntPtr, IntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.SByte] RangeSByte(SByte, SByte, SByte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Single] RangeSingle(Single, Single, Single) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt16] RangeUInt16(UInt16, UInt16, UInt16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt32] RangeUInt32(UInt32, UInt32, UInt32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt64] RangeUInt64(UInt64, UInt64, UInt64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UIntPtr] RangeUIntPtr(UIntPtr, UIntPtr, UIntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeStepGeneric[TStep,T](TStep, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TStep,T]], T, TStep, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Decimal PowDecimal(System.Decimal, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String GetStringSlice(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String ToString() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Type GetType() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AbsDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AcosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AsinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AtanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CeilingDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CoshDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T ExpDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T FloorDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T Log10Dynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T LogDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowDynamic[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T RoundDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TruncateDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 Atan2Dynamic[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 SqrtDynamic[T1,T2](T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,,] GetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,] GetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,] GetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[] GetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt16 PowUInt16(UInt16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt32 PowUInt32(UInt32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt64 PowUInt64(UInt64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UIntPtr PowUIntPtr(UIntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[]) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Unchecked: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators+Unchecked: System.String ToString() Microsoft.FSharp.Core.Operators+Unchecked: System.Type GetType() Microsoft.FSharp.Core.Operators+Unchecked: T DefaultOf[T]() Microsoft.FSharp.Core.Operators: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators: Boolean Not(Boolean) Microsoft.FSharp.Core.Operators: Boolean op_Equality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThan[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_Inequality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThan[T](T, T) Microsoft.FSharp.Core.Operators: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators: Char ToChar[T](T) Microsoft.FSharp.Core.Operators: Double Infinity Microsoft.FSharp.Core.Operators: Double NaN Microsoft.FSharp.Core.Operators: Double ToDouble[T](T) Microsoft.FSharp.Core.Operators: Double get_Infinity() Microsoft.FSharp.Core.Operators: Double get_NaN() Microsoft.FSharp.Core.Operators: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators: Int32 GetHashCode() Microsoft.FSharp.Core.Operators: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators: Int32 Sign[T](T) Microsoft.FSharp.Core.Operators: Int32 SizeOf[T]() Microsoft.FSharp.Core.Operators: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators: Int32 limitedHash[T](Int32, T) Microsoft.FSharp.Core.Operators: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Collections.FSharpList`1[T] op_Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeLeft[T2,T3,T1](Microsoft.FSharp.Core.FSharpFunc`2[T2,T3], Microsoft.FSharp.Core.FSharpFunc`2[T1,T2]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeRight[T1,T2,T3](Microsoft.FSharp.Core.FSharpFunc`2[T1,T2], Microsoft.FSharp.Core.FSharpFunc`2[T2,T3]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpOption`1[System.String] FailurePattern(System.Exception) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpRef`1[T] Ref[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Checked Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+OperatorIntrinsics Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Unchecked Microsoft.FSharp.Core.Operators: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators: Single InfinitySingle Microsoft.FSharp.Core.Operators: Single NaNSingle Microsoft.FSharp.Core.Operators: Single ToSingle[T](T) Microsoft.FSharp.Core.Operators: Single get_InfinitySingle() Microsoft.FSharp.Core.Operators: Single get_NaNSingle() Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] CreateSequence[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_RangeStep[T,TStep](T, TStep, T) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_Range[T](T, T) Microsoft.FSharp.Core.Operators: System.Decimal ToDecimal[T](T) Microsoft.FSharp.Core.Operators: System.Exception Failure(System.String) Microsoft.FSharp.Core.Operators: System.IO.TextReader ConsoleIn[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleError[T]() Microsoft.FSharp.Core.Operators: System.IO.TextWriter ConsoleOut[T]() Microsoft.FSharp.Core.Operators: System.Object Box[T](T) Microsoft.FSharp.Core.Operators: System.String ToString() Microsoft.FSharp.Core.Operators: System.String ToString[T](T) Microsoft.FSharp.Core.Operators: System.String op_Concatenate(System.String, System.String) Microsoft.FSharp.Core.Operators: System.Tuple`2[TKey,TValue] KeyValuePattern[TKey,TValue](System.Collections.Generic.KeyValuePair`2[TKey,TValue]) Microsoft.FSharp.Core.Operators: System.Type GetType() Microsoft.FSharp.Core.Operators: System.Type TypeDefOf[T]() Microsoft.FSharp.Core.Operators: System.Type TypeOf[T]() Microsoft.FSharp.Core.Operators: T Abs[T](T) Microsoft.FSharp.Core.Operators: T Acos[T](T) Microsoft.FSharp.Core.Operators: T Asin[T](T) Microsoft.FSharp.Core.Operators: T Atan[T](T) Microsoft.FSharp.Core.Operators: T Ceiling[T](T) Microsoft.FSharp.Core.Operators: T Cos[T](T) Microsoft.FSharp.Core.Operators: T Cosh[T](T) Microsoft.FSharp.Core.Operators: T DefaultArg[T](Microsoft.FSharp.Core.FSharpOption`1[T], T) Microsoft.FSharp.Core.Operators: T Exit[T](Int32) Microsoft.FSharp.Core.Operators: T Exp[T](T) Microsoft.FSharp.Core.Operators: T FailWith[T](System.String) Microsoft.FSharp.Core.Operators: T Floor[T](T) Microsoft.FSharp.Core.Operators: T Identity[T](T) Microsoft.FSharp.Core.Operators: T InvalidArg[T](System.String, System.String) Microsoft.FSharp.Core.Operators: T InvalidOp[T](System.String) Microsoft.FSharp.Core.Operators: T Lock[TLock,T](TLock, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Core.Operators: T Log10[T](T) Microsoft.FSharp.Core.Operators: T Log[T](T) Microsoft.FSharp.Core.Operators: T Max[T](T, T) Microsoft.FSharp.Core.Operators: T Min[T](T, T) Microsoft.FSharp.Core.Operators: T NullArg[T](System.String) Microsoft.FSharp.Core.Operators: T PowInteger[T](T, Int32) Microsoft.FSharp.Core.Operators: T Raise[T](System.Exception) Microsoft.FSharp.Core.Operators: T Reraise[T]() Microsoft.FSharp.Core.Operators: T Rethrow[T]() Microsoft.FSharp.Core.Operators: T Round[T](T) Microsoft.FSharp.Core.Operators: T Sin[T](T) Microsoft.FSharp.Core.Operators: T Sinh[T](T) Microsoft.FSharp.Core.Operators: T Tan[T](T) Microsoft.FSharp.Core.Operators: T Tanh[T](T) Microsoft.FSharp.Core.Operators: T Truncate[T](T) Microsoft.FSharp.Core.Operators: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: T op_BitwiseAnd[T](T, T) Microsoft.FSharp.Core.Operators: T op_BitwiseOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Dereference[T](Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.Operators: T op_ExclusiveOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Exponentiation[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators: T op_LeftShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_LogicalNot[T](T) Microsoft.FSharp.Core.Operators: T op_RightShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators: T op_UnaryPlus[T](T) Microsoft.FSharp.Core.Operators: T1 Fst[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T2 Atan2[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators: T2 Snd[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Division[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Modulus[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: TResult Sqrt[T,TResult](T) Microsoft.FSharp.Core.Operators: TResult ToEnum[TResult](Int32) Microsoft.FSharp.Core.Operators: TResult Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1, T2) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], T1, T2, T3) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T) Microsoft.FSharp.Core.Operators: TResult op_PipeRight2[T1,T2,TResult](T1, T2, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight3[T1,T2,T3,TResult](T1, T2, T3, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight[T1,TResult](T1, Microsoft.FSharp.Core.FSharpFunc`2[T1,TResult]) Microsoft.FSharp.Core.Operators: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators: Void Decrement(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void Ignore[T](T) Microsoft.FSharp.Core.Operators: Void Increment(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void op_ColonEquals[T](Microsoft.FSharp.Core.FSharpRef`1[T], T) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: FSharpFunc`3 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: TResult Invoke(T1, T2) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: FSharpFunc`4 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: TResult Invoke(T1, T2, T3) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: FSharpFunc`5 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: TResult Invoke(T1, T2, T3, T4) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: FSharpFunc`6 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: TResult Invoke(T1, T2, T3, T4, T5) Microsoft.FSharp.Core.OptimizedClosures: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult] Microsoft.FSharp.Core.OptimizedClosures: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures: System.Type GetType() Microsoft.FSharp.Core.OptionModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsNone[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsSome[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 Count[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 GetHashCode() Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Bind[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: System.String ToString() Microsoft.FSharp.Core.OptionModule: System.Type GetType() Microsoft.FSharp.Core.OptionModule: T GetValue[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Core.FSharpOption`1[T], TState) Microsoft.FSharp.Core.OptionModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: T[] ToArray[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object TypeId Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.String ToString() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Type GetType() Microsoft.FSharp.Core.OptionalArgumentAttribute: Void .ctor() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String Value Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String Value Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfModule: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfModule: System.String ToString() Microsoft.FSharp.Core.PrintfModule: System.Type GetType() Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatLine[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToError[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilderThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilder[T](System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriterThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormat[T](Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object TypeId Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.String ToString() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Type GetType() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Void .ctor() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object TypeId Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.String ToString() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Type GetType() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Void .ctor() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object TypeId Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Value Microsoft.FSharp.Core.SealedAttribute: Boolean get_Value() Microsoft.FSharp.Core.SealedAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.SealedAttribute: System.Object TypeId Microsoft.FSharp.Core.SealedAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.SealedAttribute: System.String ToString() Microsoft.FSharp.Core.SealedAttribute: System.Type GetType() Microsoft.FSharp.Core.SealedAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.SourceConstructFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.SourceConstructFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 GetHashCode() Microsoft.FSharp.Core.SourceConstructFlags: Int32 value__ Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Closure Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Exception Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Field Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags KindMask Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Module Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags NonPublicRepresentation Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags None Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags ObjectType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags RecordType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags SumType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags UnionCase Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Value Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString() Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.Type GetType() Microsoft.FSharp.Core.SourceConstructFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.StringModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.StringModule: Boolean Exists(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Boolean ForAll(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Int32 GetHashCode() Microsoft.FSharp.Core.StringModule: Int32 Length(System.String) Microsoft.FSharp.Core.StringModule: System.String Collect(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.String], System.String) Microsoft.FSharp.Core.StringModule: System.String Concat(System.String, System.Collections.Generic.IEnumerable`1[System.String]) Microsoft.FSharp.Core.StringModule: System.String Initialize(Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String]) Microsoft.FSharp.Core.StringModule: System.String Map(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char], System.String) Microsoft.FSharp.Core.StringModule: System.String MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char]], System.String) Microsoft.FSharp.Core.StringModule: System.String Replicate(Int32, System.String) Microsoft.FSharp.Core.StringModule: System.String ToString() Microsoft.FSharp.Core.StringModule: System.Type GetType() Microsoft.FSharp.Core.StringModule: Void Iterate(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit], System.String) Microsoft.FSharp.Core.StringModule: Void IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit]], System.String) Microsoft.FSharp.Core.StructAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructAttribute: System.Object TypeId Microsoft.FSharp.Core.StructAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructAttribute: System.String ToString() Microsoft.FSharp.Core.StructAttribute: System.Type GetType() Microsoft.FSharp.Core.StructAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String ToString() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String Value Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String get_Value() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.Unit: Boolean Equals(System.Object) Microsoft.FSharp.Core.Unit: Int32 GetHashCode() Microsoft.FSharp.Core.Unit: System.String ToString() Microsoft.FSharp.Core.Unit: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.UnverifiableAttribute: System.Object TypeId Microsoft.FSharp.Core.UnverifiableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.UnverifiableAttribute: System.String ToString() Microsoft.FSharp.Core.UnverifiableAttribute: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Void .ctor() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object TypeId Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.VolatileFieldAttribute: System.String ToString() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Type GetType() Microsoft.FSharp.Core.VolatileFieldAttribute: Void .ctor() Microsoft.FSharp.NativeInterop.NativePtrModule: Boolean Equals(System.Object) Microsoft.FSharp.NativeInterop.NativePtrModule: Int32 GetHashCode() Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr AddPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr OfNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr StackAllocate[T](Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr ToNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: System.String ToString() Microsoft.FSharp.NativeInterop.NativePtrModule: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: T GetPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: T ReadPointerInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: Void SetPointerInlined[T](IntPtr, Int32, T) Microsoft.FSharp.NativeInterop.NativePtrModule: Void WritePointerInlined[T](IntPtr, T) Microsoft.FSharp.Quotations.DerivedPatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.DerivedPatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Collections.FSharpList`1[System.Type],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Boolean] BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Byte] BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Char] CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Double] DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int16] Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int64] Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.SByte] SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Single] SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.String] StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar]],Microsoft.FSharp.Quotations.FSharpExpr]] LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt16] UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt32] UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt64] UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: System.String ToString() Microsoft.FSharp.Quotations.DerivedPatternsModule: System.Type GetType() Microsoft.FSharp.Quotations.ExprShapeModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.ExprShapeModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Core.FSharpChoice`3[Microsoft.FSharp.Quotations.FSharpVar,System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr],System.Tuple`2[System.Object,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Quotations.FSharpExpr RebuildShapeCombination(System.Object, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.ExprShapeModule: System.String ToString() Microsoft.FSharp.Quotations.ExprShapeModule: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] TryGetReflectedDefinition(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressSet(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Application(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Applications(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Coerce(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr DefaultValue(System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Deserialize(System.Type, Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr], Byte[]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Lambda(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Let(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr LetRecursive(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewArray(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewDelegate(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewObject(System.Reflection.ConstructorInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewRecord(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewTuple(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Quote(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Sequential(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryFinally(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryWith(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TupleGet(Microsoft.FSharp.Quotations.FSharpExpr, Int32) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TypeTest(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Reflection.UnionCaseInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value(System.Object, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value[T](T) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Var(Microsoft.FSharp.Quotations.FSharpVar) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr VarSet(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Cast[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] GlobalVar[T](System.String) Microsoft.FSharp.Quotations.FSharpExpr: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpExpr: Void RegisterReflectedDefinitions(System.Reflection.Assembly, System.String, Byte[]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Raw Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr get_Raw() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpVar: Boolean IsMutable Microsoft.FSharp.Quotations.FSharpVar: Boolean get_IsMutable() Microsoft.FSharp.Quotations.FSharpVar: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpVar: Microsoft.FSharp.Quotations.FSharpVar Global(System.String, System.Type) Microsoft.FSharp.Quotations.FSharpVar: System.String Name Microsoft.FSharp.Quotations.FSharpVar: System.String ToString() Microsoft.FSharp.Quotations.FSharpVar: System.String get_Name() Microsoft.FSharp.Quotations.FSharpVar: System.Type GetType() Microsoft.FSharp.Quotations.FSharpVar: System.Type Type Microsoft.FSharp.Quotations.FSharpVar: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Void .ctor(System.String, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean]) Microsoft.FSharp.Quotations.PatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.PatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]] NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpVar] VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]],Microsoft.FSharp.Quotations.FSharpExpr]] LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo]] FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo]] UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Int32]] TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Object,System.Type]] ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr]] FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] LetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar],Microsoft.FSharp.Quotations.FSharpExpr]] NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Quotations.FSharpExpr]] PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Type] DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: System.String ToString() Microsoft.FSharp.Quotations.PatternsModule: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpType: Boolean IsExceptionRepresentation(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsFunction(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsModule(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsRecord(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsTuple(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsUnion(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpType: Microsoft.FSharp.Reflection.UnionCaseInfo[] GetUnionCases(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetExceptionFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetRecordFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.String ToString() Microsoft.FSharp.Reflection.FSharpType: System.Tuple`2[System.Type,System.Type] GetFunctionElements(System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: System.Type MakeFunctionType(System.Type, System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type MakeTupleType(System.Type[]) Microsoft.FSharp.Reflection.FSharpType: System.Type[] GetTupleElements(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpValue: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Int32] PreComputeUnionTagReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeRecordReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeTupleReader(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object] PreComputeRecordFieldReader(System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeRecordConstructor(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeTupleConstructor(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetRecordField(System.Object, System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetTupleField(System.Object, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeFunction(System.Type, Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeRecord(System.Type, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeTuple(System.Object[], System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetExceptionFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetRecordFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetTupleFields(System.Object) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.ConstructorInfo PreComputeRecordConstructorInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MemberInfo PreComputeUnionTagMemberInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MethodInfo PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.String ToString() Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[]] GetUnionFields(System.Object, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Type]] PreComputeTupleConstructorInfo(System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,System.Int32]]] PreComputeTuplePropertyInfo(System.Type, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 GetHashCode() Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 Tag Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 get_Tag() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes(System.Type) Microsoft.FSharp.Reflection.UnionCaseInfo: System.Reflection.PropertyInfo[] GetFields() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() " fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/App.xaml0000775000175000017500000000045512260314606021627 0ustar chrischris fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/LibraryTestFx.fs0000775000175000017500000000470012260314606023315 0ustar chrischris module FSharp.Core.Unittests.LibraryTestFx open System open System.Collections.Generic open NUnit.Framework // Workaround for bug 3601, we are issuing an unnecessary warning #nowarn "0004" /// Check that the lamda throws an exception of the given type. Otherwise /// calls Assert.Fail() let CheckThrowsExn<'a when 'a :> exn> (f : unit -> unit) = let funcThrowsAsExpected = try let _ = f () false // Did not throw! with | :? 'a -> true // Thew null ref, OK | _ -> false // Did now throw a null ref exception! if funcThrowsAsExpected then () else Assert.Fail() let private CheckThrowsExn2<'a when 'a :> exn> s (f : unit -> unit) = let funcThrowsAsExpected = try let _ = f () false // Did not throw! with | :? 'a -> true // Thew null ref, OK | _ -> false // Did now throw a null ref exception! if funcThrowsAsExpected then () else Assert.Fail(s) // Illegitimate exceptions. Once we've scrubbed the library, we should add an // attribute to flag these exception's usage as a bug. let CheckThrowsNullRefException f = CheckThrowsExn f let CheckThrowsIndexOutRangException f = CheckThrowsExn f // Legit exceptions let CheckThrowsNotSupportedException f = CheckThrowsExn f let CheckThrowsArgumentException f = CheckThrowsExn f let CheckThrowsArgumentNullException f = CheckThrowsExn f let CheckThrowsArgumentNullException2 s f = CheckThrowsExn2 s f let CheckThrowsKeyNotFoundException f = CheckThrowsExn f let CheckThrowsDivideByZeroException f = CheckThrowsExn f let CheckThrowsInvalidOperationExn f = CheckThrowsExn f let CheckThrowsFormatException f = CheckThrowsExn f // Verifies two sequences are equal (same length, equiv elements) let VerifySeqsEqual seq1 seq2 = if Seq.length seq1 <> Seq.length seq2 then Assert.Fail() let zippedElements = Seq.zip seq1 seq2 if zippedElements |> Seq.forall (fun (a, b) -> a = b) then () else Assert.Fail() let sleep(n : int32) = #if FX_NO_THREAD async { do! Async.Sleep(n) } |> Async.RunSynchronously #else System.Threading.Thread.Sleep(n) #endif fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/0000775000175000017500000000000012260314606022267 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/OperatorsModule1.fs0000775000175000017500000007051212260314606026036 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Core.Operators module namespace SystematicUnitTests.FSharp_Core.Microsoft_FSharp_Core open System open SystematicUnitTests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Core.Operators.Checked [] type OperatorsModule1() = [] member this.Checkedbyte() = // int type let intByte = Operators.Checked.byte 100 Assert.AreEqual(intByte,(byte)100) // char type let charByte = Operators.Checked.byte '0' Assert.AreEqual(charByte,(byte)48) // boundary value let boundByte = Operators.Checked.byte 255.0 Assert.AreEqual(boundByte, (byte)255) // overflow exception try let overflowByte = Operators.Checked.byte 256.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") [] member this.Checkedchar() = // number let numberChar = Operators.Checked.char 48 Assert.AreEqual(numberChar,'0') // letter let letterChar = Operators.Checked.char 65 Assert.AreEqual(letterChar,'A') // boundary value let boundchar = Operators.Checked.char 126 Assert.AreEqual(boundchar, '~') // overflow exception try let overflowchar = Operators.Checked.char (System.Int64.MaxValue+(int64)2) Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") [] member this.CheckedInt() = // char let charInt = Operators.Checked.int '0' Assert.AreEqual(charInt,48) // float let floatInt = Operators.Checked.int 10.0 Assert.AreEqual(floatInt,10) // boundary value let boundInt = Operators.Checked.int 32767.0 Assert.AreEqual(boundInt, (int)32767) // overflow exception try let overflowint = Operators.Checked.int 2147483648.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.CheckedInt16() = // char let charInt16 = Operators.Checked.int16 '0' Assert.AreEqual(charInt16,(int16)48) // float let floatInt16 = Operators.Checked.int16 10.0 Assert.AreEqual(floatInt16,(int16)10) // boundary value let boundInt16 = Operators.Checked.int16 32767.0 Assert.AreEqual(boundInt16, (int16)32767) // overflow exception try let overflowint16 = Operators.Checked.int16 32768.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.CheckedInt32() = // char let charInt32 = Operators.Checked.int32 '0' Assert.AreEqual(charInt32,(int32)48) // float let floatInt32 = Operators.Checked.int32 10.0 Assert.AreEqual(floatInt32,(int32)10) // boundary value let boundInt32 = Operators.Checked.int32 2147483647.0 Assert.AreEqual(boundInt32, (int32)2147483647) // overflow exception try let overflowint32 = Operators.Checked.int32 2147483648.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.CheckedInt64() = // char let charInt64 = Operators.Checked.int64 '0' Assert.AreEqual(charInt64,(int64)48) // float let floatInt64 = Operators.Checked.int64 10.0 Assert.AreEqual(floatInt64,(int64)10) // boundary value let boundInt64 = Operators.Checked.int64 9223372036854775807I let a = 9223372036854775807L Assert.AreEqual(boundInt64, 9223372036854775807L) // overflow exception try let overflowint64 = Operators.Checked.int64 (System.Double.MaxValue+2.0) Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.CheckedNativeint() = // char let charnativeint = Operators.Checked.nativeint '0' Assert.AreEqual(charnativeint,(nativeint)48) // float let floatnativeint = Operators.Checked.nativeint 10.0 Assert.AreEqual(floatnativeint,(nativeint)10) // boundary value let boundnativeint = Operators.Checked.nativeint 32767.0 Assert.AreEqual(boundnativeint, (nativeint)32767) // overflow exception try let overflownativeint = Operators.Checked.nativeint 2147483648.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.Checkedsbyte() = // char let charsbyte = Operators.Checked.sbyte '0' Assert.AreEqual(charsbyte,(sbyte)48) // float let floatsbyte = Operators.Checked.sbyte -10.0 Assert.AreEqual(floatsbyte,(sbyte)(-10)) // boundary value let boundsbyte = Operators.Checked.sbyte -127.0 Assert.AreEqual(boundsbyte, (sbyte)(-127)) // overflow exception try let overflowsbyte = Operators.Checked.sbyte -256.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.Checkeduint16() = // char let charuint16 = Operators.Checked.uint16 '0' Assert.AreEqual(charuint16,(uint16)48) // float let floatuint16 = Operators.Checked.uint16 10.0 Assert.AreEqual(floatuint16,(uint16)(10)) // boundary value let bounduint16 = Operators.Checked.uint16 65535.0 Assert.AreEqual(bounduint16, (uint16)(65535)) // overflow exception try let overflowuint16 = Operators.Checked.uint16 65536.0 Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.Checkeduint32() = // char let charuint32 = Operators.Checked.uint32 '0' Assert.AreEqual(charuint32,(uint32)48) // float let floatuint32 = Operators.Checked.uint32 10.0 Assert.AreEqual(floatuint32,(uint32)(10)) // boundary value let bounduint32 = Operators.Checked.uint32 429496729.0 Assert.AreEqual(bounduint32, (uint32)(429496729)) // overflow exception try let overflowuint32 = Operators.Checked.uint32 uint32.MaxValue+1u Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.Checkeduint64() = // char let charuint64 = Operators.Checked.uint64 '0' Assert.AreEqual(charuint64,(uint64)48) // float let floatuint64 = Operators.Checked.uint64 10.0 Assert.AreEqual(floatuint64,(uint64)(10)) // boundary value let bounduint64 = Operators.Checked.uint64 429496729.0 Assert.AreEqual(bounduint64, (uint64)(429496729)) // overflow exception try let overflowuint64 = Operators.Checked.uint64 System.UInt64.MaxValue+1UL Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.Checkedunativeint() = // char let charunativeint = Operators.Checked.unativeint '0' Assert.AreEqual(charunativeint,(unativeint)48) // float let floatunativeint = Operators.Checked.unativeint 10.0 Assert.AreEqual(floatunativeint,(unativeint)10) // boundary value let boundunativeint = Operators.Checked.unativeint 65353.0 Assert.AreEqual(boundunativeint, (unativeint)65353) // overflow exception try let overflowuint64 = Operators.Checked.uint64 System.UInt64.MaxValue+1UL Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") () [] member this.KeyValue() = let funcKeyValue x = match x with | Operators.KeyValue(a) -> a // string int let stringint = funcKeyValue ( new System.Collections.Generic.KeyValuePair("string",1)) Assert.AreEqual(stringint,("string",1)) // float char let floatchar = funcKeyValue ( new System.Collections.Generic.KeyValuePair(1.0,'a')) Assert.AreEqual(floatchar,(1.0,'a')) // null let nullresult = funcKeyValue ( new System.Collections.Generic.KeyValuePair(null,' ')) let (nullstring:string,blankchar:char) = nullresult CheckThrowsNullRefException(fun () -> nullstring.ToString() |> ignore) () [] member this.OptimizedRangesGetArraySlice() = let param1 = Some(1) let param2 = Some(2) // int let intslice = Operators.OperatorIntrinsics.GetArraySlice [|1;2;3;4;5;6|] param1 param2 Assert.AreEqual(intslice,[|2;3|]) // string let stringslice = Operators.OperatorIntrinsics.GetArraySlice [|"1";"2";"3"|] param1 param2 Assert.AreEqual(stringslice,[|"2";"3"|]) // null let stringslice = Operators.OperatorIntrinsics.GetArraySlice [|null;null;null|] param1 param2 Assert.AreEqual(stringslice,[|null;null|]) () [] member this.OptimizedRangesGetArraySlice2D() = let param1D1 = Some(0) let param1D2 = Some(1) let param2D1 = Some(0) let param2D2 = Some(1) // int let intArray2D = Array2D.init 2 3 (fun i j -> i*100+j) let intslice = Operators.OperatorIntrinsics.GetArraySlice2D intArray2D param1D1 param1D2 param2D1 param2D2 Assert.AreEqual(intslice.[1,1],101) // string let stringArray2D = Array2D.init 2 3 (fun i j -> (i*100+j).ToString()) let stringslice = Operators.OperatorIntrinsics.GetArraySlice2D stringArray2D param1D1 param1D2 param2D1 param2D2 Assert.AreEqual(stringslice.[1,1],(101).ToString()) // null let nullArray2D = Array2D.init 2 3 (fun i j -> null) let nullslice = Operators.OperatorIntrinsics.GetArraySlice2D nullArray2D param1D1 param1D2 param2D1 param2D2 Assert.AreEqual(nullslice.[1,1],null) () [] member this.OptimizedRangesGetStringSlice() = let param1 = Some(4) let param2 = Some(6) // string let stringslice = Operators.OperatorIntrinsics.GetStringSlice "abcdefg" param1 param2 Assert.AreEqual(stringslice,"efg") // null CheckThrowsNullRefException(fun () -> Operators.OperatorIntrinsics.GetStringSlice null param1 param2 |> ignore) () [] member this.OptimizedRangesSetArraySlice() = let param1 = Some(1) let param2 = Some(2) // int let intArray1 = [|1;2;3|] let intArray2 = [|4;5;6|] Operators.OperatorIntrinsics.SetArraySlice intArray1 param1 param2 intArray2 Assert.AreEqual(intArray1,[|1;4;5|]) // string let stringArray1 = [|"1";"2";"3"|] let stringArray2 = [|"4";"5";"6"|] Operators.OperatorIntrinsics.SetArraySlice stringArray1 param1 param2 stringArray2 Assert.AreEqual(stringArray1,[|"1";"4";"5"|]) // null let nullArray1 = [|null;null;null|] let nullArray2 = [|null;null;null|] Operators.OperatorIntrinsics.SetArraySlice nullArray1 param1 param2 nullArray2 CheckThrowsNullRefException(fun () -> nullArray1.[0].ToString() |> ignore) () [] member this.OptimizedRangesSetArraySlice2D() = let param1D1 = Some(0) let param1D2 = Some(1) let param2D1 = Some(0) let param2D2 = Some(1) // int let intArray1 = Array2D.init 2 3 (fun i j -> i*10+j) let intArray2 = Array2D.init 2 3 (fun i j -> i*100+j) Operators.OperatorIntrinsics.SetArraySlice2D intArray1 param1D1 param1D2 param2D1 param2D2 intArray2 Assert.AreEqual(intArray1.[1,1],101) // string let stringArray2D1 = Array2D.init 2 3 (fun i j -> (i*10+j).ToString()) let stringArray2D2 = Array2D.init 2 3 (fun i j -> (i*100+j).ToString()) Operators.OperatorIntrinsics.SetArraySlice2D stringArray2D1 param1D1 param1D2 param2D1 param2D2 stringArray2D2 Assert.AreEqual(stringArray2D1.[1,1],(101).ToString()) // null let nullArray2D1 = Array2D.init 2 3 (fun i j -> null) let nullArray2D2 = Array2D.init 2 3 (fun i j -> null) Operators.OperatorIntrinsics.SetArraySlice2D nullArray2D1 param1D1 param1D2 param2D1 param2D2 nullArray2D2 CheckThrowsNullRefException(fun () -> nullArray2D1.[0,0].ToString() |> ignore) () [] member this.OptimizedRangesSetArraySlice3D() = let intArray1 = Array3D.init 2 3 4 (fun i j k -> i*10+j) let intArray2 = Array3D.init 2 3 4 (fun i j k -> i*100+j) Operators.OperatorIntrinsics.SetArraySlice3D intArray1 (Some 0) (Some 1) (Some 0) (Some 1) (Some 0) (Some 1) intArray2 Assert.AreEqual(intArray1.[1,1,1],101) () [] member this.OptimizedRangesSetArraySlice4D() = let intArray1 = Array4D.init 2 3 4 5 (fun i j k l -> i*10+j) let intArray2 = Array4D.init 2 3 4 5 (fun i j k l -> i*100+j) Operators.OperatorIntrinsics.SetArraySlice4D intArray1 (Some 0) (Some 1) (Some 0) (Some 1) (Some 0) (Some 1) intArray2 Assert.AreEqual(intArray1.[1,1,1,1],101) () [] member this.Uncheckeddefaultof () = // int let intdefault = Operators.Unchecked.defaultof Assert.AreEqual(intdefault, 0) // string let stringdefault = Operators.Unchecked.defaultof CheckThrowsNullRefException(fun () -> stringdefault.ToString() |> ignore) // null let structdefault = Operators.Unchecked.defaultof Assert.AreEqual( structdefault.Day,1) () [] member this.abs () = // int let intabs = Operators.abs (-7) Assert.AreEqual(intabs, 7) // float let floatabs = Operators.abs (-100.0) Assert.AreEqual(floatabs, 100.0) // decimal let decimalabs = Operators.abs (-1000M) Assert.AreEqual(decimalabs, 1000M) () [] member this.acos () = // min value let minacos = Operators.acos (0.0) Assert.AreEqual(minacos, 1.5707963267948966) // normal value let normalacos = Operators.acos (0.3) Assert.AreEqual(normalacos, 1.2661036727794992) // max value let maxacos = Operators.acos (1.0) Assert.AreEqual(maxacos, 0.0) () [] member this.asin () = // min value let minasin = Operators.asin (0.0) Assert.AreEqual(minasin, 0) // normal value let normalasin = Operators.asin (0.5) Assert.AreEqual(normalasin, 0.52359877559829893) // max value let maxasin = Operators.asin (1.0) Assert.AreEqual(maxasin, 1.5707963267948966) () [] member this.atan () = // min value let minatan = Operators.atan (0.0) Assert.AreEqual(minatan, 0) // normal value let normalatan = Operators.atan (1.0) Assert.AreEqual(normalatan, 0.78539816339744828) // biggish value let maxatan = Operators.atan (infinity) Assert.AreEqual(maxatan, 1.5707963267948966) () [] member this.atan2 () = // min value let minatan2 = Operators.atan2 (0.0) (1.0) Assert.AreEqual(minatan2, 0) // normal value let normalatan2 = Operators.atan2 (1.0) (1.0) Assert.AreEqual(normalatan2, 0.78539816339744828) // biggish value let maxatan2 = Operators.atan2 (1.0) (0.0) Assert.AreEqual(maxatan2, 1.5707963267948966) () [] member this.box () = // int value let intbox = Operators.box 1 Assert.AreEqual(intbox, 1) // string value let stringlbox = Operators.box "string" Assert.AreEqual(stringlbox, "string") // null value let nullbox = Operators.box null CheckThrowsNullRefException(fun () -> nullbox.ToString() |> ignore) () [] member this.byte() = // int type let intByte = Operators.byte 100 Assert.AreEqual(intByte,(byte)100) // char type let charByte = Operators.byte '0' Assert.AreEqual(charByte,(byte)48) // boundary value let boundByte = Operators.byte 255.0 Assert.AreEqual(boundByte, (byte)255) // overflow exception try let overflowbyte = Operators.byte (System.Int64.MaxValue*(int64)2) Assert.Fail("Expectt overflow exception but not.") with | :? System.OverflowException -> () | _ -> Assert.Fail("Expectt overflow exception but not.") [] member this.ceil() = // min value let minceil = Operators.ceil 0.1 Assert.AreEqual(minceil,1.0) // normal value let normalceil = Operators.ceil 100.0 Assert.AreEqual(normalceil,100.0) // max value let maxceil = Operators.ceil 1.7E+308 Assert.AreEqual(maxceil, 1.7E+308) [] member this.char() = // int type let intchar = Operators.char 48 Assert.AreEqual(intchar,'0') // string type let stringchar = Operators.char " " Assert.AreEqual(stringchar, ' ') [] member this.compare() = // int type let intcompare = Operators.compare 100 101 Assert.AreEqual(intcompare,-1) // char type let charcompare = Operators.compare '0' '1' Assert.AreEqual(charcompare,-1) // null value let boundcompare = Operators.compare null null Assert.AreEqual(boundcompare, 0) [] member this.cos () = // min value let mincos = Operators.cos (0.0) Assert.AreEqual(mincos, 1) // normal value let normalcos = Operators.cos (1.0) Assert.AreEqual(normalcos, 0.54030230586813977) // biggish value let maxcos = Operators.cos (1.57) Assert.AreEqual(maxcos, 0.00079632671073326335) () [] member this.cosh () = // min value let mincosh = Operators.cosh (0.0) Assert.AreEqual(mincosh, 1.0) // normal value let normalcosh = Operators.cosh (1.0) Assert.AreEqual(normalcosh, 1.5430806348152437) // biggish value let maxcosh = Operators.cosh (1.57) Assert.AreEqual(maxcosh, 2.5073466880660993) () [] member this.decimal () = // int value let mindecimal = Operators.decimal (1) Assert.AreEqual(mindecimal, 1) // float value let maxdecimal = Operators.decimal (1.0) Assert.AreEqual(maxdecimal, 1) () [] member this.decr() = // zero let zeroref = ref 0 Operators.decr zeroref Assert.AreEqual(zeroref,(ref -1)) // big number let bigref = ref 32767 Operators.decr bigref Assert.AreEqual(bigref,(ref 32766)) // normal value let normalref = ref 100 Operators.decr (normalref) Assert.AreEqual(normalref,(ref 99)) [] member this.defaultArg() = // zero let zeroOption = Some(0) let intdefaultArg = Operators.defaultArg zeroOption 2 Assert.AreEqual(intdefaultArg,0) // big number let bigOption = Some(32767) let bigdefaultArg = Operators.defaultArg bigOption 32766 Assert.AreEqual(bigdefaultArg,32767) // normal value let normalOption = Some(100) let normalfaultArg = Operators.defaultArg normalOption 100 Assert.AreEqual(normalfaultArg, 100) [] member this.double() = // int type let intdouble = Operators.double 100 Assert.AreEqual(intdouble,100.0) // char type let chardouble = Operators.double '0' Assert.AreEqual(chardouble,48) () [] member this.enum() = // zero let intarg : int32 = 0 let intenum = Operators.enum intarg Assert.AreEqual(intenum,System.ConsoleColor.Black) // big number let bigarg : int32 = 15 let charenum = Operators.enum bigarg Assert.AreEqual(charenum,System.ConsoleColor.White) // normal value let normalarg : int32 = 9 let boundenum = Operators.enum normalarg Assert.AreEqual(boundenum, System.ConsoleColor.Blue) [] member this.exit() = // zero try let intexit = Operators.exit 1 () with | _ -> () //Assert.AreEqual(intexit,-1) // big number let charexit = Operators.exit 32767 //Assert.AreEqual(charexit,-1) // normal value let boundexit = Operators.exit 100 Assert.AreEqual(boundexit, 0) [] member this.exp() = // zero let zeroexp = Operators.exp 0.0 Assert.AreEqual(zeroexp,1.0) // big number let bigexp = Operators.exp 32767.0 Assert.AreEqual(bigexp,infinity) // normal value let normalexp = Operators.exp 100.0 Assert.AreEqual(normalexp, 2.6881171418161356E+43) [] member this.failwith() = try let _ = Operators.failwith "failwith" Assert.Fail("Expect fail but not.") () with | Failure("failwith") -> () |_ -> Assert.Fail("Throw unexpected exception") [] member this.float() = // int type let intfloat = Operators.float 100 Assert.AreEqual(intfloat,(float)100) // char type let charfloat = Operators.float '0' Assert.AreEqual(charfloat,(float)48) () [] member this.float32() = // int type let intfloat32 = Operators.float32 100 Assert.AreEqual(intfloat32,(float32)100) // char type let charfloat32 = Operators.float32 '0' Assert.AreEqual(charfloat32,(float32)48) () [] member this.floor() = // float type let intfloor = Operators.floor 100.0 Assert.AreEqual(intfloor,100) // float32 type let charfloor = Operators.floor ((float32)100.0) Assert.AreEqual(charfloor,100) [] member this.fst() = // int type let intfst = Operators.fst (100,101) Assert.AreEqual(intfst,100) // char type let charfst = Operators.fst ('0','1') Assert.AreEqual(charfst,'0') // null value let boundfst = Operators.fst (null,null) Assert.AreEqual(boundfst, null) [] member this.hash() = // int type let inthash = Operators.hash 100 Assert.AreEqual(inthash,100) // char type let charhash = Operators.hash '0' Assert.AreEqual(charhash,3145776) // string value let boundhash = Operators.hash "A" Assert.AreEqual(boundhash, -842352673) [] member this.id() = // int type let intid = Operators.id 100 Assert.AreEqual(intid,100) // char type let charid = Operators.id '0' Assert.AreEqual(charid,'0') // string value let boundid = Operators.id "A" Assert.AreEqual(boundid, "A") [] member this.ignore() = // value type let result = Operators.ignore 10 Assert.AreEqual(result,null) // reference type let result = Operators.ignore "A" Assert.AreEqual(result,null) () [] member this.incr() = // legit value let result = ref 10 Operators.incr result Assert.AreEqual(!result,11) // overflow let result = ref (Operators.Checked.int System.Int32.MaxValue) CheckThrowsOverflowException(fun() -> Operators.incr result |> ignore) () [] member this.infinity() = let inf = Operators.infinity let result = inf > System.Double.MaxValue Assert.IsTrue(result) // arithmatic operation let result = infinity + 3.0 Assert.AreEqual(result,infinity) let result = infinity - 3.0 Assert.AreEqual(result,infinity) let result = infinity * 3.0 Assert.AreEqual(result,infinity) let result = infinity / 3.0 Assert.AreEqual(result,infinity) let result = infinity / 3.0 Assert.AreEqual(result,infinity) () [] member this.infinityf() = let inf = Operators.infinityf let result = inf > System.Single.MaxValue Assert.IsTrue(result) // arithmatic operation let result = infinityf + 3.0f Assert.AreEqual(result,infinity) let result = infinityf - 3.0f Assert.AreEqual(result,infinity) let result = infinityf * 3.0f Assert.AreEqual(result,infinity) let result = infinityf / 3.0f Assert.AreEqual(result,infinity) let result = infinityf / 3.0f Assert.AreEqual(result,infinityf) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/0000775000175000017500000000000012260314606027673 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListType.fs0000775000175000017500000001463612260314606032017 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.List type namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open System.Collections open System.Collections.Generic open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer List (value type) * String List (reference type) * Empty List (0 elements) *) [] type ListType() = // Interfaces [] member this.IEnumerable() = // Legit IE let ie = ['a'; 'b'; 'c'] :> IEnumerable let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('a', enum.Current) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('b', enum.Current) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('c', enum.Current) Assert.AreEqual(false, enum.MoveNext()) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = [] :> IEnumerable // Note no type args let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(false, enum.MoveNext()) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) [] member this.IEnumerable_T() = // Legit IE let ie = ['a'; 'b'; 'c'] :> IEnumerable let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('a', enum.Current) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('b', enum.Current) Assert.AreEqual(true, enum.MoveNext()) Assert.AreEqual('c', enum.Current) Assert.AreEqual(false, enum.MoveNext()) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = [] :> IEnumerable // Note no type args let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(false, enum.MoveNext()) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) // Base class methods [] member this.ObjectToString() = Assert.AreEqual("[1; 2; 3]", [1; 2; 3].ToString()) Assert.AreEqual("[]", [].ToString()) Assert.AreEqual("[]", ([] : decimal list list).ToString()) [] member this.ObjectEquals() = // All three are different references, but equality has been // provided by the F# compiler. let a = [1; 2; 3] let b = [1 .. 3] let c = 1 :: [2; 3] Assert.IsTrue( (a = b) ) Assert.IsTrue( (b = c) ) Assert.IsTrue( (c = a) ) Assert.IsTrue( a.Equals(b) ); Assert.IsTrue( b.Equals(a) ) Assert.IsTrue( b.Equals(c) ); Assert.IsTrue( c.Equals(b) ) Assert.IsTrue( c.Equals(a) ); Assert.IsTrue( a.Equals(c) ) // Equality between types let a = [] : int list let b = [] : string list Assert.IsFalse( b.Equals(a) ) Assert.IsFalse( a.Equals(b) ) // Co/contra varience not supported let a = [] : string list let b = [] : obj list Assert.IsFalse(a.Equals(b)) Assert.IsFalse(b.Equals(a)) // Self equality let a = [1] Assert.IsTrue( (a = a) ) Assert.IsTrue(a.Equals(a)) // Null Assert.IsFalse(a.Equals(null)) // Instance methods [] member this.Length() = let l = [1 .. 10] Assert.AreEqual(l.Length, 10) let e : int list list = List.empty Assert.AreEqual(e.Length, 0) [] member this.IsEmpty() = let l = [1 .. 10] Assert.IsFalse(l.IsEmpty) let e = Microsoft.FSharp.Collections.List.Empty : string list Assert.IsTrue(e.IsEmpty) Assert.IsTrue( ([] @ []).IsEmpty ) [] member this.Head() = let l = ['a'; 'e'; 'i'; 'o'; 'u'] Assert.AreEqual('a', l.Head) CheckThrowsInvalidOperationExn(fun () -> ([] : string list).Head |> ignore) [] member this.Tail() = let l = ['a'; 'e'; 'i'; 'o'; 'u'] Assert.AreEqual(['e'; 'i'; 'o'; 'u'], l.Tail) CheckThrowsInvalidOperationExn(fun () -> ([] : string list).Tail |> ignore) [] member this.Item() = let mutable l = [1] Assert.AreEqual(1, l.[0]) l <- l @ l Assert.AreEqual(1, l.[1]) for testidx = 0 to 20 do let l = [0 .. testidx] for i = 0 to l.Length - 1 do Assert.AreEqual(i, l.[i]) Assert.AreEqual(i, l.Item(i)) // Invalid index let l = [1 .. 10] CheckThrowsArgumentException(fun () -> l.[ -1 ] |> ignore) CheckThrowsArgumentException(fun () -> l.[1000] |> ignore) // Static methods [] member this.Empty() = let emptyList = Microsoft.FSharp.Collections.List.Empty if List.length emptyList <> 0 then Assert.Fail() let c : int list = Microsoft.FSharp.Collections.List.Empty Assert.IsTrue( (c = []) ) let d : string list = Microsoft.FSharp.Collections.List.Empty Assert.IsTrue( (d = []) ) () [] member this.Cons() = // integer List let intList = Microsoft.FSharp.Collections.List.Cons (1, [ 2;3; 4 ]) if intList <> [ 1; 2; 3; 4 ] then Assert.Fail() // string List let strList = Microsoft.FSharp.Collections.List.Cons ( "this", [ "is";"str"; "list" ]) if strList <> [ "this"; "is" ;"str"; "list" ] then Assert.Fail() // empty List let emptyList = Microsoft.FSharp.Collections.List.Cons (2,[]) if emptyList <> [2] then Assert.Fail() ()fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/MapType.fs0000775000175000017500000002416212260314606031614 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Map type namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open System.Collections open System.Collections.Generic open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Maps with reference keys * Maps with value keys * Empty Maps (0 elements) * One-element maps * Multi-element maps (2 - 7 elements) *) [] type MapType() = // Interfaces [] member this.IEnumerable() = // Legit IE let ie = (Map.ofArray [|(1,1);(2,4);(3,9)|]) :> IEnumerable let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(1,1)) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(2,4)) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(3,9)) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = [] |> Map.ofList :> IEnumerable // Note no type args let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) [] member this.IEnumerable_T() = // Legit IE let ie = (Map.ofArray [|(1,1);(2,4);(3,9)|]) :> IEnumerable> let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(1,1)) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(2,4)) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, new KeyValuePair(3,9)) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = [] |> Map.ofList :> IEnumerable // Note no type args let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) [] member this.IDictionary() = // Legit ID let id = (Map.ofArray [|(1,1);(2,4);(3,9)|]) :> IDictionary<_,_> Assert.IsTrue(id.ContainsKey(1)) Assert.IsFalse(id.ContainsKey(5)) Assert.AreEqual(id.[1], 1) Assert.AreEqual(id.[3], 9) Assert.AreEqual(id.Keys, [| 1; 2; 3|]) Assert.AreEqual(id.Values, [| 1; 4; 9|]) CheckThrowsNotSupportedException(fun () -> id.[2] <-88) CheckThrowsNotSupportedException(fun () -> id.Add(new KeyValuePair(4,16))) Assert.IsTrue(id.TryGetValue(1, ref 1)) Assert.IsFalse(id.TryGetValue(100, ref 1)) CheckThrowsNotSupportedException(fun () -> id.Remove(1) |> ignore) // Empty ID let id = Map.empty :> IDictionary // Note no type args Assert.IsFalse(id.ContainsKey(5)) CheckThrowsKeyNotFoundException(fun () -> id.[1] |> ignore) Assert.AreEqual(id.Keys, [| |] ) Assert.AreEqual(id.Values, [| |] ) [] member this.ICollection() = // Legit IC let ic = (Map.ofArray [|(1,1);(2,4);(3,9)|]) :> ICollection> Assert.AreEqual(ic.Count, 3) Assert.IsTrue(ic.Contains(new KeyValuePair(3,9))) let newArr = Array.create 5 (new KeyValuePair(3,9)) ic.CopyTo(newArr,0) Assert.IsTrue(ic.IsReadOnly) // raise ReadOnlyCollection exception CheckThrowsNotSupportedException(fun () -> ic.Add(new KeyValuePair(3,9)) |> ignore) CheckThrowsNotSupportedException(fun () -> ic.Clear() |> ignore) CheckThrowsNotSupportedException(fun () -> ic.Remove(new KeyValuePair(3,9)) |> ignore) // Empty IC let ic = Map.empty :> ICollection> Assert.IsFalse(ic.Contains(new KeyValuePair(3,9))) let newArr = Array.create 5 (new KeyValuePair(0,0)) ic.CopyTo(newArr,0) [] member this.IComparable() = // Legit IC let ic = (Map.ofArray [|(1,1);(2,4);(3,9)|]) :> IComparable Assert.AreEqual(ic.CompareTo([(1,1);(2,4);(3,9)]|> Map.ofList),0) Assert.AreEqual(ic.CompareTo([(1,1);(3,9);(2,4)]|> Map.ofList),0) Assert.AreEqual(ic.CompareTo([(1,1);(9,81);(2,4)]|> Map.ofList),-1) Assert.AreEqual(ic.CompareTo([(1,1);(0,0);(2,4)]|> Map.ofList),1) CheckThrowsArgumentException(fun() -> ic.CompareTo([(1,1);(2,4);(3,9)]) |> ignore) // Empty IC let ic = [] |> Map.ofList :> IComparable Assert.AreEqual(ic.CompareTo([]|> Map.ofList),0) // Base class methods [] member this.ObjectGetHashCode() = // Works on empty maps let e = Map.ofList (List.empty) let m = Map.ofList [ (1, -1.0M) ] Assert.AreNotEqual(e.GetHashCode(), m.GetHashCode()) // Should be order independent let x = Map.ofList [(1, -1.0M); (2, -2.0M)] let y = Map.ofList [(2, -2.0M); (1, -1.0M)] Assert.AreEqual(x.GetHashCode(), y.GetHashCode()) [] member this.ObjectToString() = Assert.AreEqual("map [(1, 1); (2, 4); (3, 9)]", (Map.ofArray [|(1,1);(2,4);(3,9)|]).ToString()) Assert.AreEqual("map []", ([] |> Map.ofList).ToString()) Assert.AreEqual("map []", (([] :(decimal*decimal)list) |> Map.ofList).ToString()) [] member this.ObjectEquals() = // All three are different references, but equality has been // provided by the F# compiler. let a = [(1,1);(2,4);(3,9)] |> Map.ofList let b = (1,1) :: [(2,4);(3,9)] |> Map.ofList Assert.IsTrue( (a = b) ) Assert.IsTrue( a.Equals(b) ); Assert.IsTrue( b.Equals(a) ) // Equality between types let a = ([] : (int*int) list) |> Map.ofList let b = ([] : (string*string) list ) |> Map.ofList Assert.IsFalse( b.Equals(a) ) Assert.IsFalse( a.Equals(b) ) // Co/contra varience not supported let a = ([] : (string*string) list) |> Map.ofList let b = ([] : (System.IComparable*System.IComparable) list) |> Map.ofList Assert.IsFalse(a.Equals(b)) Assert.IsFalse(b.Equals(a)) // Self equality let a = [(1,1)] |> Map.ofList Assert.IsTrue( (a = a) ) Assert.IsTrue(a.Equals(a)) // Null Assert.IsFalse(a.Equals(null)) // Instance methods [] member this.New() = let newMap = new Map([|(1,1);(2,4);(3,9)|]) let b = newMap.Add(4,16) Assert.AreEqual(b.[4], 16) Assert.AreEqual(b.[2], 4) let e = new Map([]) let ae = e.Add(1,"Monday") Assert.AreEqual(ae.[1], "Monday") member this.Add() = let a = (Map.ofArray [|(1,1);(2,4);(3,9)|]) let b = a.Add(4,16) Assert.AreEqual(b.[4], 16) Assert.AreEqual(b.[2], 4) let e = Map.empty let ae = e.Add(1,"Monday") Assert.AreEqual(ae.[1], "Monday") [] member this.ContainsKey() = let a = (Map.ofArray [|(1,1);(2,4);(3,9)|]) Assert.IsTrue(a.ContainsKey(3)) let e = Map.empty Assert.IsFalse(e.ContainsKey(3)) [] member this.Count() = let a = (Map.ofArray [|(1,1);(2,4);(3,9)|]) Assert.AreEqual(a.Count, 3) let e = Map.empty Assert.AreEqual(e.Count, 0) [] member this.IsEmpty() = let l = (Map.ofArray [|(1,1);(2,4);(3,9)|]) Assert.IsFalse(l.IsEmpty) let e = Map.empty Assert.IsTrue(e.IsEmpty) [] member this.Item() = let mutable l = [(1,1)] |> Map.ofList Assert.AreEqual(l.[1], 1) l <- l.Add(100,8) Assert.AreEqual(l.[100], 8) for testidx = 0 to 20 do let l = Map.ofSeq (seq { for i in 0..testidx do yield (i,i*i)}) for i = 0 to l.Count - 1 do Assert.AreEqual(i*i, l.[i]) Assert.AreEqual(i*i, l.Item(i)) // Invalid index let l = (Map.ofArray [|(1,1);(2,4);(3,9)|]) CheckThrowsKeyNotFoundException(fun () -> l.[ -1 ] |> ignore) CheckThrowsKeyNotFoundException(fun () -> l.[1000] |> ignore) [] member this.Remove() = let l = (Map.ofArray [|(1,1);(2,4);(3,9)|]) let rem = l.Remove(2) Assert.AreEqual(rem.Count, 2) CheckThrowsKeyNotFoundException(fun () -> rem.[ 2 ] |> ignore) let e = Map.empty let ae = e.Remove(2) Assert.AreEqual(ae.Count, 0) [] member this.TryFind() = let l = (Map.ofArray [|(1,1);(2,4);(3,9)|]) let rem = l.TryFind(2) Assert.AreEqual(l.TryFind(2),Some 4) let e = Map.empty Assert.AreEqual(e.TryFind(2), None) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/SetModule.fs0000775000175000017500000005201712260314606032136 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Set module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Empty set * Single-element set * Sets with 4 more more elements *) [] type SetModule() = [] member this.Empty() = let emptySet = Set.empty if Set.count emptySet <> 0 then Assert.Fail() let c : Set = Set.empty let d : Set = Set.empty () [] member this.Singleton() = let intSingleton = Set.singleton 5 Assert.IsTrue(intSingleton.Count = 1) Assert.IsTrue(intSingleton.Contains(5)) let stringSingleton = Set.singleton (null) Assert.IsFalse(stringSingleton.Contains("")) [] member this.Add() = let empty = Set.empty let x = Set.add 'x' empty let xy = Set.add 'y' x let xyz = Set.add 'z' xy let wxyz = Set.add 'w' xyz Assert.IsTrue(Set.count xy = 2) Assert.IsTrue(Set.count xyz = 3) Assert.IsTrue(Set.count wxyz = 4) [] member this.Contains() = // Empty set searching for null = false if Set.contains null (Set.empty) <> false then Assert.Fail() // Single element set (of tuple) = true let digits = new Set([("one", 1)]) if Set.contains ("one", 1) digits <> true then Assert.Fail() let odds = new Set([1 .. 2 .. 11]) if Set.contains 6 odds <> false then Assert.Fail() () [] member this.Count() = let empty = Set.empty if Set.count empty <> 0 then Assert.Fail() let one = Set.add 1 empty if Set.count one <> 1 then Assert.Fail() let multi = new Set([| 'a' .. 'z' |]) if Set.count multi <> 26 then Assert.Fail() () [] member this.Diff() = // Given a large set and removing 0, 1, x elements... let alphabet = new Set([| 'a' .. 'z' |]) let emptyChar = Set.empty : Set let removeEmpty = alphabet - emptyChar if (alphabet = removeEmpty) <> true then Assert.Fail() let number = Set.singleton '1' let removeNumber = alphabet - number if (alphabet = removeNumber) <> true then Assert.Fail() let vowels = new Set([| 'a'; 'e'; 'i'; 'o'; 'u' |]) let noVowels = alphabet - vowels if noVowels.Count <> 21 then Assert.Fail() // Give a set of 0, 1, x elements remove some other set let odds = new Set([1 .. 2 .. 10]) let evens = new Set([2 .. 2 .. 10]) let emptyNum = Set.empty : Set let removeOddsFromEmpty = emptyNum - odds if (emptyNum = removeOddsFromEmpty) <> true then Assert.Fail() let one = Set.singleton 1 let removeOddsFrom1 = one - odds if (removeOddsFrom1 = emptyNum) <> true then Assert.Fail() let evensSansOdds = evens - odds if (evensSansOdds = evens) <> true then Assert.Fail() () [] member this.Equal() = let emptySet1 : Set = Set.empty let emptySet2 : Set = Set.empty if (emptySet1 = emptySet2) <> true then Assert.Fail() let a = new Set([1; 2; 3; 4; 5]) let b = new Set([1; 3; 5]) if (a = b) <> false then Assert.Fail() let a = a |> Set.remove 2 |> Set.remove 4 if (a = b) <> true then Assert.Fail() () [] member this.Compare() = // Comparing empty sets let emptyString1 = Set.empty : Set let emptyString2 = Set.empty : Set if compare emptyString1 emptyString1 <> 0 then Assert.Fail() if compare emptyString1 emptyString2 <> 0 then Assert.Fail() // Comparing single-element sets let one = Set.singleton 1 let two = Set.singleton 2 if compare one two <> -1 then Assert.Fail() if compare one one <> 0 then Assert.Fail() if compare two two <> 0 then Assert.Fail() if compare two one <> 1 then Assert.Fail() // Comparing multi-element sets let alphabet = new Set(['a' .. 'z']) let vowels = new Set(['a'; 'e'; 'i'; 'o'; 'u']) let noVowelAlpa = alphabet - vowels if compare noVowelAlpa alphabet <> 1 then Assert.Fail() if compare alphabet alphabet <> 0 then Assert.Fail() if compare noVowelAlpa noVowelAlpa <> 0 then Assert.Fail() if compare alphabet noVowelAlpa <> -1 then Assert.Fail() () [] member this.Exists() = let emptyInt = Set.empty : Set if Set.exists (fun _ -> true) emptyInt <> false then Assert.Fail() let x = Set.singleton 'x' if Set.exists (fun c -> c = 'x') x <> true then Assert.Fail() if Set.exists (fun c -> c <> 'x') x <> false then Assert.Fail() let letNumPairs = new Set([("one", 1); ("two", 2); ("three", 3)]) if Set.exists (fun (text, num) -> text = "one" && num = 1) letNumPairs <> true then Assert.Fail() if Set.exists (fun (text, num) -> text = "four") letNumPairs <> false then Assert.Fail() () [] member this.Filter() = let emptyComplex = Set.empty : Set> * Set> let fileredEmpty = Set.filter (fun _ -> false) emptyComplex if (fileredEmpty = emptyComplex) <> true then Assert.Fail() let nullSet = Set.singleton null if nullSet.Count <> 1 then Assert.Fail() let filteredNull = Set.filter (fun x -> x <> null) nullSet if filteredNull.Count <> 0 then Assert.Fail() let digits = new Set([1 .. 10]) let evens = new Set([2 .. 2 .. 10]) let filteredDigits = Set.filter(fun i -> i % 2 = 0) digits if (filteredDigits = evens) <> true then Assert.Fail() () [] member this.Map() = let emptySet : Set = Set.empty let result = Set.map (fun _ -> Assert.Fail(); "") emptySet if (emptySet = result) <> true then Assert.Fail() let alphabet = new Set<_>(['a' .. 'z']) let capped = Set.map (fun c -> Char.ToUpper(c)) alphabet if Set.exists (fun c -> c = Char.ToLower(c)) capped then Assert.Fail() () [] member this.Fold() = let emptySet : Set = Set.empty let result = Set.fold (fun _ _ -> Assert.Fail(); -1I) 0I emptySet if result <> 0I then Assert.Fail() let callOrder = ref ([] : (int * int) list) let input = new Set<_>([1; 2; 3; 4; 5]) let result = Set.fold (fun acc i -> callOrder := (acc, i) :: !callOrder; acc + i) 0 input if result <> 15 then Assert.Fail() if !callOrder <> [(10, 5); (6, 4); (3, 3); (1, 2); (0, 1)] then Assert.Fail() () [] member this.FoldBack() = let emptySet : Set = Set.empty let result = Set.foldBack (fun _ _ -> Assert.Fail(); -1I) emptySet 0I if result <> 0I then Assert.Fail() let callOrder = ref ([] : (int * int) list) let input = new Set<_>([1; 2; 3; 4; 5]) let result = Set.foldBack (fun i acc -> callOrder := (acc, i) :: !callOrder; acc + i) input 0 if result <> 15 then Assert.Fail() if !callOrder <> [(14, 1); (12, 2); (9, 3); (5, 4); (0, 5)] then Assert.Fail() () [] member this.ForAll() = let emptySet : Set = Set.empty let result = Set.forall (fun x -> Assert.Fail(); false) emptySet if result <> true then Assert.Fail() let seta = new Set<_>( [1 .. 99] |> List.map (fun i -> i.ToString()) ) let result = seta |> Set.forall (fun str -> str.Length < 3) Assert.IsTrue(result) let setb = new Set<_>( [50 .. 150] |> List.map (fun i -> i.ToString()) ) let result = setb |> Set.forall (fun str -> str.Length < 3) Assert.IsFalse(result) () [] member this.Intersect() = let emptySet1 : Set = Set.empty let emptySet2 : Set = Set.empty let four = Set.singleton 4 let emptyInterEmpty = Set.intersect emptySet1 emptySet2 Assert.IsTrue( (emptyInterEmpty = emptySet1) ) let xInterEmpty = Set.intersect four emptySet1 Assert.IsFalse( (four = xInterEmpty) ) let emptyInterX = Set.intersect emptySet1 four Assert.IsFalse( (four = emptyInterX) ) () [] member this.Intersect2() = let a = new Set([3; 4; 5; 6]) let b = new Set([5; 6; 7; 8]) let intersection = Set.intersect a b let expectedResult = new Set([5; 6]) Assert.IsTrue( (intersection = expectedResult) ) [] member this.IntersectMany() = (* IntersectAll 1234567 234567 34567 4567 567 67 *) let setsToIntersect = [ for i = 1 to 6 do yield new Set([i .. 7]) ] let result = Set.intersectMany setsToIntersect Assert.IsTrue(result.Count = 2) let contains x s = s |> Set.exists (fun i -> i = x) Assert.IsTrue(contains 6 result) Assert.IsTrue(contains 7 result) [] member this.IntersectMany2() = let all = new Set<_>([1 .. 10]) let odds = new Set<_>([1 .. 2 .. 10]) let evens = new Set<_>([2 .. 2 .. 10]) let result = Set.intersectMany [odds; evens; all] Assert.IsTrue(Set.count result = 0) [] member this.IntersectMany3() = let all = new Set<_>([1 .. 10]) let empty = Set.empty : Set let result = Set.intersectMany [all; empty; all] Assert.IsTrue(Set.count result = 0) [] member this.IntersectMany4() = CheckThrowsArgumentException (fun () -> Set.intersectMany (Seq.empty : seq>) |> ignore) () [] member this.Union() = let emptySet1 : Set = Set.empty let emptySet2 : Set = Set.empty let four = Set.singleton 4 let emptyUnionEmpty = Set.union emptySet1 emptySet2 Assert.IsTrue( (emptyUnionEmpty = emptySet1) ) let xUnionEmpty = Set.union four emptySet1 Assert.IsTrue( (four = xUnionEmpty) ) let emptyUnionX = Set.union emptySet1 four Assert.IsTrue( (four = emptyUnionX) ) () [] member this.Union2() = let a = new Set([1; 2; 3; 4]) let b = new Set([5; 6; 7; 8]) let union = Set.union a b let expectedResult = new Set([1 .. 8]) Assert.IsTrue( (union = expectedResult) ) [] member this.Union3() = let x = Set.singleton 1 |> Set.union (Set.singleton 1) |> Set.union (Set.singleton 1) |> Set.union (Set.singleton 1) Assert.IsTrue(x.Count = 1) [] member this.UnionMany() = let odds = new Set([1 .. 2 .. 10]) let evens = new Set([2 .. 2 .. 10]) let empty = Set.empty : Set let rest = new Set([11 .. 19]) let zero = Set.singleton 0 let result = Set.unionMany [odds; evens; empty; rest; zero] Assert.IsTrue(result.Count = 20) [] member this.UnionMany2() = let result = Set.unionMany (Seq.empty : seq>) Assert.IsTrue(result.Count = 0) [] member this.IsEmpty() = let zero = Set.empty : Set let zero2 = new Set([]) let one = Set.singleton "foo" let n = new Set<_>( [1 .. 10] ) Assert.IsTrue(Set.isEmpty zero) Assert.IsTrue(Set.isEmpty zero2) Assert.IsFalse(Set.isEmpty one) Assert.IsFalse(Set.isEmpty n) [] member this.Iter() = // Empty set Set.empty |> Set.iter (fun _ -> Assert.Fail()) // Full set let elements = [| for i = 0 to 9 do yield false |] let set = new Set<_>(['0' .. '9']) Set.iter (fun c -> let i = int c - int '0' elements.[i] <- true) set Assert.IsTrue (Array.forall ( (=) true ) elements) [] member this.Parition() = // Empty let resulta, resultb = Set.partition (fun (x : int) -> Assert.Fail(); false) Set.empty Assert.IsTrue(resulta.Count = 0 && resultb.Count = 0) // One let single = Set.singleton "foo" let resulta, resultb = Set.partition (fun (str : string) -> str.Length <> 3) single Assert.IsTrue(resulta.Count = 0 && resultb.Count = 1) let resulta, resultb = Set.partition (fun (str : string) -> str.Length = 3) single Assert.IsTrue(resulta.Count = 1 && resultb.Count = 0) // Multi let alphabet = Set.ofList ['a' .. 'z'] let isVowel = function |'a' | 'e' | 'i' | 'o' | 'u' -> true | _ -> false let resulta, resultb = Set.partition isVowel alphabet Assert.IsTrue(resulta.Count = 5 && resultb.Count = 21) [] member this.Remove() = let emptySet : Set = Set.empty let result = Set.remove 42 emptySet Assert.IsTrue(result.Count = 0) // One let single = Set.singleton 100I let resulta = Set.remove 100I single let resultb = Set.remove 1I single Assert.IsTrue (resulta.Count = 0) Assert.IsTrue (resultb.Count = 1) // Multi let a = new Set([1 .. 5]) Assert.IsTrue(a.Count = 5) let b = Set.remove 3 a Assert.IsTrue(b.Count = 4) // Call again, double delete let c = Set.remove 3 b Assert.IsTrue(c.Count = 4) Assert.IsFalse(Set.exists ( (=) 3 ) c) [] member this.Of_List() = // Empty let emptySet = Set.ofList ([] : (string * int * Set) list) Assert.IsTrue(Set.isEmpty emptySet) // Single let single = Set.ofList [1] Assert.IsTrue(single.Count = 1) Assert.IsTrue(Set.exists ( (=) 1 ) single) // Multi let multi = Set.ofList ["mon"; "tue"; "wed"; "thu"; "fri"] Assert.IsTrue(multi.Count = 5) let expected = new Set<_>(["mon"; "tue"; "wed"; "thu"; "fri"]) Assert.IsTrue( (multi = expected) ) [] member this.To_List() = // Empty let emptySet : Set = Set.empty Assert.IsTrue(Set.toList emptySet = []) // Single let single = Set.singleton "stuff" Assert.IsTrue(Set.toList single = ["stuff"]) // Multi let multi = new Set<_>([5; 2; 3; 1; 4]) Assert.IsTrue(Set.toList multi = [1; 2; 3; 4; 5]) [] member this.Of_Array() = // Empty let emptySet = Set.ofArray ([| |] : (string * int * Set) []) Assert.IsTrue(Set.isEmpty emptySet) // Single let single = Set.ofArray [| 1 |] Assert.IsTrue(single.Count = 1) Assert.IsTrue(Set.exists ( (=) 1 ) single) // Multi let multi = Set.ofArray [| "mon"; "tue"; "wed"; "thu"; "fri" |] Assert.IsTrue(multi.Count = 5) let expected = new Set<_>(["mon"; "tue"; "wed"; "thu"; "fri"]) Assert.IsTrue( (multi = expected) ) [] member this.To_Array() = // Empty let emptySet : Set = Set.empty Assert.IsTrue(Set.toArray emptySet = [| |]) // Single let single = Set.singleton "stuff" Assert.IsTrue(Set.toArray single = [| "stuff" |]) // Multi let multi = new Set<_>([5; 2; 3; 1; 4]) Assert.IsTrue(Set.toArray multi = [| 1; 2; 3; 4; 5 |]) [] member this.Of_Seq() = // Empty let emptySet = Set.ofSeq ([| |] : (string * int * Set) []) Assert.IsTrue(Set.isEmpty emptySet) // Single let single = Set.ofSeq [ 1 ] Assert.IsTrue(single.Count = 1) Assert.IsTrue(Set.exists ( (=) 1 ) single) // Multi let multi = Set.ofSeq [| "mon"; "tue"; "wed"; "thu"; "fri" |] Assert.IsTrue(multi.Count = 5) let expected = new Set<_>(["mon"; "tue"; "wed"; "thu"; "fri"]) Assert.IsTrue( (multi = expected) ) [] member this.To_Seq() = // Empty let emptySet : Set = Set.empty let emptySeq = Set.toSeq emptySet Assert.IsTrue (Seq.length emptySeq = 0) // Single let single = Set.singleton "stuff" let singleSeq = Set.toSeq single Assert.IsTrue(Seq.toList singleSeq = [ "stuff" ]) // Multi let multi = new Set<_>([5; 2; 3; 1; 4]) let multiSeq = Set.toSeq multi Assert.IsTrue(Seq.toList multiSeq = [ 1; 2; 3; 4; 5 ]) [] member this.MinElement() = // Check for an argument exception "Set contains no members" CheckThrowsArgumentException(fun () -> Set.minElement Set.empty |> ignore) let set1 = Set.ofList [10; 8; 100; 1; 50] Assert.AreEqual(Set.minElement set1, 1) let set2 = Set.ofList ["abcd"; "a"; "abc"; "ab"] Assert.AreEqual(Set.minElement set2, "a") [] member this.MaxElement() = // Check for an argument exception "Set contains no members" CheckThrowsArgumentException(fun () -> Set.maxElement Set.empty |> ignore) let set1 = Set.ofList [10; 8; 100; 1; 50] Assert.AreEqual(Set.maxElement set1, 100) let set2 = Set.ofList ["abcd"; "a"; "abc"; "ab"] Assert.AreEqual(Set.maxElement set2, "abcd") [] member this.IsProperSubset() = let set1 = Set.ofList [10; 8; 100] let set2 = Set.ofList [100] Assert.IsTrue(Set.isProperSubset set2 set1) Assert.IsTrue(Set.isProperSubset Set.empty set2) Assert.IsFalse(Set.isProperSubset Set.empty Set.empty) Assert.IsFalse(Set.isProperSubset set1 set2) [] member this.IsProperSuperset() = let set1 = Set.ofList [10; 8; 100] let set2 = Set.ofList [100; 8] Assert.IsTrue(Set.isProperSuperset set1 set2) Assert.IsTrue(Set.isProperSuperset set2 Set.empty) Assert.IsFalse(Set.isProperSuperset Set.empty Set.empty) Assert.IsFalse(Set.isProperSuperset set1 set1) Assert.IsFalse(Set.isProperSuperset set2 set1) // ----- Not associated with a module function ----- [] member this.GeneralTest1() = // Retruns a random permutation of integers between the two bounds. let randomPermutation lowerBound upperBound = let items = System.Collections.Generic.List<_>([lowerBound .. upperBound]) let rng = new Random() let randomPermutation = new System.Collections.Generic.List() while items.Count > 0 do let idx = rng.Next() % items.Count let i = items.[idx] items.RemoveAt(idx) randomPermutation.Add(i) randomPermutation.ToArray() for i in 0..50 do let permutation = randomPermutation 0 i let set : Set ref = ref Set.empty // Add permutation items to set in order Array.iter (fun i -> set := Set.add i !set) permutation // Check that the set equals the full list Assert.IsTrue(Set.toList !set = [0 .. i]) // Remove items in permutation order, ensuring set is delt with correctly Array.iteri (fun idx i -> set := Set.remove i !set // Verify all elements have been correctly removed let removedElements = Array.sub permutation 0 (idx + 1) |> Set.ofSeq let inter = Set.intersect !set removedElements Assert.IsTrue(inter.Count = 0)) permutation () ././@LongLink0000644000000000000000000000014612266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListModule.f0000775000175000017500000004667212260314606032145 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.List module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer List (value type) * String List (reference type) * Empty List (0 elements) *) [] type ListModule() = [] member this.Empty() = let emptyList = List.empty let resultEpt = List.length emptyList Assert.AreEqual(0, resultEpt) let c : int list = List.empty let d : string list = List.empty () [] member this.Append() = // integer List let intList = List.append [ 1; 2 ] [ 3; 4 ] Assert.AreEqual([ 1; 2; 3; 4 ],intList) // string List let strList = List.append [ "a"; "b" ] [ "c"; "d" ] Assert.AreEqual([ "a"; "b" ;"c"; "d" ],strList) // empty List let emptyList = List.append [] [] Assert.AreEqual([],emptyList) () [] member this.Avarage() = // empty float32 List let emptyFloatList = List.empty CheckThrowsArgumentException(fun () -> List.average emptyFloatList |> ignore) // empty double List let emptyDoubleList = List.empty CheckThrowsArgumentException(fun () -> List.average emptyDoubleList |> ignore) // empty decimal List let emptyDecimalList = List.empty CheckThrowsArgumentException (fun () -> List.average emptyDecimalList |>ignore ) // float32 List let floatList: float32 list = [ 1.2f;3.5f;6.7f ] let averageOfFloat = List.average floatList Assert.AreEqual(3.8000000000000003f, averageOfFloat) // double List let doubleList: List = [ 1.0;8.0 ] let averageOfDouble = List.average doubleList Assert.AreEqual(4.5, averageOfDouble) // decimal List let decimalList: decimal list = [ 0M;19M;19.03M ] let averageOfDecimal = List.average decimalList Assert.AreEqual(12.676666666666666666666666667M, averageOfDecimal) () [] member this.AverageBy() = // empty double List let emptyDouList = List.empty CheckThrowsArgumentException (fun () -> List.averageBy (fun x -> x + 6.7) emptyDouList |> ignore ) // empty float32 List let emptyFloat32List: float32 list = [] CheckThrowsArgumentException (fun () -> List.averageBy (fun x -> x + 9.8f ) emptyFloat32List |> ignore) // empty decimal List let emptyDecimalList = List.empty CheckThrowsArgumentException (fun () -> List.averageBy (fun x -> x + 9.8M) emptyDecimalList |>ignore ) // float32 List let floatList: float32 list = [ 1.2f;3.5f;6.7f ] let averageOfFloat = List.averageBy (fun x -> x + 9.8f ) floatList Assert.AreEqual(averageOfFloat, 13.5999994f) // double List let doubleList: System.Double list = [ 1.0;8.0 ] let averageOfDouble = List.averageBy (fun x -> x + 6.7) doubleList Assert.AreEqual(11.2, averageOfDouble) // decimal List let decimalList: decimal list = [ 0M;19M;19.03M ] let averageOfDecimal = List.averageBy (fun x -> x + 9.8M) decimalList Assert.AreEqual(22.476666666666666666666666667M, averageOfDecimal) () [] member this.Choose() = // int List let intSrc:int list = [ 1..100 ] let funcInt x = if (x%5=0) then Some x else None let intChosen = List.choose funcInt intSrc Assert.AreEqual(5, intChosen.[0]) Assert.AreEqual(10, intChosen.[1]) Assert.AreEqual(15, intChosen.[2]) // string List let stringSrc: string list = [ "List"; "this"; "is" ;"str"; "list" ] let funcString x = match x with | "list" -> Some x | "List" -> Some x | _ -> None let strChosen = List.choose funcString stringSrc Assert.AreEqual("list", strChosen.[0].ToLower()) Assert.AreEqual("list", strChosen.[1].ToLower()) // empty List let emptySrc :int list = [ ] let emptyChosen = List.choose funcInt emptySrc Assert.AreEqual(emptySrc, emptyChosen) () [] member this.Concat() = // integer List let seqInt = seq { for i in 1..10 do yield [i;i*10]} let conIntArr = List.concat seqInt Assert.AreEqual(20, List.length conIntArr) // string List let strSeq = seq { for a in 'a'..'c' do for b in 'a'..'c' do yield [a.ToString();b.ToString() ]} let conStrArr = List.concat strSeq Assert.AreEqual(18, List.length conStrArr) // Empty List let emptyLists = [ [ ]; [ 0 ]; [ 1 ]; [ ]; [ ] ] let result2 = List.concat emptyLists Assert.AreEqual(2, result2.Length) Assert.AreEqual(0, result2.[0]) Assert.AreEqual(1, result2.[1]) () [] member this.Exists() = // integer List let intArr = [ 2;4;6;8 ] let funcInt x = if (x%2 = 0) then true else false let resultInt = List.exists funcInt intArr Assert.IsTrue(resultInt) // string List let strArr = ["."; ".."; "..."; "...."] let funcStr (x:string) = if (x.Length >15) then true else false let resultStr = List.exists funcStr strArr Assert.IsFalse(resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.exists funcInt emptyArr Assert.IsFalse(resultEpt) () [] member this.Exists2() = // integer List let intFir = [ 2;4;6;8 ] let intSec = [ 1;2;3;4 ] let funcInt x y = if (x%y = 0) then true else false let resultInt = List.exists2 funcInt intFir intSec Assert.IsTrue(resultInt) // string List let strFir = ["Lists"; "are"; "commonly" ] let strSec = ["good"; "good"; "good" ] let funcStr (x:string) (y:string) = if (x = y) then true else false let resultStr = List.exists2 funcStr strFir strSec Assert.IsFalse(resultStr) // empty List let eptFir:int list = [ ] let eptSec:int list = [ ] let resultEpt = List.exists2 funcInt eptFir eptSec Assert.IsFalse(resultEpt) () [] member this.Filter() = // integer List let intArr = [ 1..20 ] let funcInt x = if (x%5 = 0) then true else false let resultInt = List.filter funcInt intArr Assert.AreEqual([5;10;15;20], resultInt) // string List let strArr = ["."; ".."; "..."; "...."] let funcStr (x:string) = if (x.Length >2) then true else false let resultStr = List.filter funcStr strArr Assert.AreEqual(["..."; "...."], resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.filter funcInt emptyArr Assert.AreEqual(emptyArr, resultEpt) () [] member this.Find() = // integer List let intArr = [ 1..20 ] let funcInt x = if (x%5 = 0) then true else false let resultInt = List.find funcInt intArr Assert.AreEqual(5, resultInt) // string List let strArr = ["."; ".."; "..."; "...."] let funcStr (x:string) = if (x.Length >2) then true else false let resultStr = List.find funcStr strArr Assert.AreEqual("...", resultStr) // empty List let emptyArr:int list = [ ] CheckThrowsKeyNotFoundException (fun () -> List.find (fun x -> true) emptyArr |> ignore) () [] member this.FindIndex() = // integer List let intArr = [ 1..20 ] let funcInt x = if (x%5 = 0) then true else false let resultInt = List.findIndex funcInt intArr Assert.AreEqual(4, resultInt) // string List let strArr = ["."; ".."; "..."; "...."] let funcStr (x:string) = if (x.Length >2) then true else false let resultStr = List.findIndex funcStr strArr Assert.AreEqual(2, resultStr) // empty List let emptyArr:int list = [ ] CheckThrowsKeyNotFoundException (fun () -> List.findIndex (fun x -> true) emptyArr |> ignore) () [] member this.TryPick() = // integer List let intArr = [ 1..10 ] let funcInt x = match x with | _ when x % 3 = 0 -> Some (x.ToString()) | _ -> None let resultInt = List.tryPick funcInt intArr Assert.AreEqual(Some "3", resultInt) // string List let strArr = ["a";"b";"c";"d"] let funcStr x = match x with | "good" -> Some (x.ToString()) | _ -> None let resultStr = List.tryPick funcStr strArr Assert.AreEqual(None, resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.tryPick funcInt emptyArr Assert.AreEqual(None, resultEpt) () [] member this.Fold() = // integer List let intArr = [ 1..10 ] let funcInt x y = x+y let resultInt = List.fold funcInt 9 intArr Assert.AreEqual(64, resultInt) // string List let funcStr x y = x+y let resultStr = List.fold funcStr "*" ["a";"b";"c";"d"] Assert.AreEqual("*abcd", resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.fold funcInt 5 emptyArr Assert.AreEqual(5, resultEpt) () [] member this.Fold2() = // integer List let funcInt x y z = x + y + z let resultInt = List.fold2 funcInt 9 [ 1..10 ] [1..2..20] Assert.AreEqual(164, resultInt) // string List let funcStr x y z= x + y + z let resultStr = List.fold2 funcStr "*" ["a"; "b"; "c" ; "d" ] ["A"; "B"; "C" ; "D" ] Assert.AreEqual("*aAbBcCdD", resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.fold2 funcInt 5 emptyArr emptyArr Assert.AreEqual(5, resultEpt) () [] member this.FoldBack() = // integer List let intArr = [ 1..10 ] let funcInt x y = x+y let resultInt = List.foldBack funcInt intArr 9 Assert.AreEqual(64, resultInt) // string List let strArr = ["a"; "b"; "c" ; "d" ] let funcStr x y = x+y let resultStr = List.foldBack funcStr strArr "*" Assert.AreEqual("abcd*", resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.foldBack funcInt emptyArr 5 Assert.AreEqual(5, resultEpt) // 1 element let result1Element = List.foldBack funcInt [1] 0 Assert.AreEqual(1, result1Element) // 2 elements let result2Element = List.foldBack funcInt [1;2] 0 Assert.AreEqual(3, result2Element) // 3 elements let result3Element = List.foldBack funcInt [1;2;3] 0 Assert.AreEqual(6, result3Element) // 4 elements let result4Element = List.foldBack funcInt [1;2;3;4] 0 Assert.AreEqual(10, result4Element) () [] member this.FoldBack2() = // integer List let funcInt x y z = x + y + z let resultInt = List.foldBack2 funcInt [ 1..10 ] [1..2..20] 9 Assert.AreEqual(164, resultInt) // string List let funcStr x y z= x + y + z let resultStr = List.foldBack2 funcStr ["A";"B";"C";"D"] ["a";"b";"c";"d"] "*" Assert.AreEqual("AaBbCcDd*", resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.foldBack2 funcInt emptyArr emptyArr 5 Assert.AreEqual(5, resultEpt) //1 element let result1Element = List.foldBack2 funcInt [1] [1] 0 Assert.AreEqual(2, result1Element) //2 element let result2Element = List.foldBack2 funcInt [1;2] [1;2] 0 Assert.AreEqual(6, result2Element) //3 element let result3Element = List.foldBack2 funcInt [1;2;3] [1;2;3] 0 Assert.AreEqual(12, result3Element) //4 element let result4Element = List.foldBack2 funcInt [1;2;3;4] [1;2;3;4] 0 Assert.AreEqual(20, result4Element) () //unequal length list let funcUnequal x y () = () CheckThrowsArgumentException( fun () -> (List.foldBack2 funcUnequal [ 1..10 ] [1..9] ())) () [] member this.ForAll() = // integer List let resultInt = List.forall (fun x -> x > 2) [ 3..2..10 ] Assert.IsTrue(resultInt) // string List let resultStr = List.forall (fun (x:string) -> x.Contains("a")) ["a";"b";"c";"d"] Assert.IsFalse(resultStr) // empty List let resultEpt = List.forall (fun (x:string) -> x.Contains("a")) [] Assert.IsTrue(resultEpt) () [] member this.ForAll2() = // integer List let resultInt = List.forall2 (fun x y -> x < y) [ 1..10 ] [2..2..20] Assert.IsTrue(resultInt) // string List let resultStr = List.forall2 (fun (x:string) (y:string) -> x.Length > y.Length) ["a";"b";"c";"d"] ["A";"B";"C";"D"] Assert.IsFalse(resultStr) // empty List let resultEpt = List.forall2 (fun x y -> x > y) [] [] Assert.IsTrue(resultEpt) () [] member this.Hd() = // integer List let resultInt = List.head [2..2..20] Assert.AreEqual(2, resultInt) // string List let resultStr = List.head ["a";"b";"c";"d"] Assert.AreEqual("a", resultStr) CheckThrowsArgumentException(fun () -> List.head [] |> ignore) () [] member this.Init() = // integer List let resultInt = List.init 3 (fun x -> x + 3) Assert.AreEqual([3;4;5], resultInt) // string List let funStr (x:int) = match x with | 0 -> "Lists" | 1 -> "are" | 2 -> "commonly" | _ -> "end" let resultStr = List.init 3 funStr Assert.AreEqual(["Lists"; "are"; "commonly" ], resultStr) // empty List let resultEpt = List.init 0 (fun x -> x+1) Assert.AreEqual(([] : int list), resultEpt) () [] member this.IsEmpty() = // integer List let intArr = [ 3;4;7;8;10 ] let resultInt = List.isEmpty intArr Assert.IsFalse(resultInt) // string List let strArr = ["a";"b";"c";"d"] let resultStr = List.isEmpty strArr Assert.IsFalse(resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.isEmpty emptyArr Assert.IsTrue(resultEpt) () [] member this.Iter() = // integer List let intArr = [ 1..10 ] let resultInt = ref 0 let funInt (x:int) = resultInt := !resultInt + x () List.iter funInt intArr Assert.AreEqual(55, !resultInt) // string List let strArr = ["a";"b";"c";"d"] let resultStr = ref "" let funStr (x:string) = resultStr := (!resultStr) + x () List.iter funStr strArr Assert.AreEqual("abcd", !resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = ref 0 List.iter funInt emptyArr Assert.AreEqual(0, !resultEpt) () [] member this.Iter2() = // integer List let resultInt = ref 0 let funInt (x:int) (y:int) = resultInt := !resultInt + x + y () List.iter2 funInt [ 1..10 ] [2..2..20] Assert.AreEqual(165, !resultInt) // string List let resultStr = ref "" let funStr (x:string) (y:string) = resultStr := (!resultStr) + x + y () List.iter2 funStr ["a";"b";"c";"d"] ["A";"B";"C";"D"] Assert.AreEqual("aAbBcCdD", !resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = ref 0 List.iter2 funInt emptyArr emptyArr Assert.AreEqual(0, !resultEpt) () [] member this.Iteri() = // integer List let intArr = [ 1..10 ] let resultInt = ref 0 let funInt (x:int) y = resultInt := !resultInt + x + y () List.iteri funInt intArr Assert.AreEqual(100, !resultInt) // string List let strArr = ["a";"b";"c";"d"] let resultStr = ref 0 let funStr (x:int) (y:string) = resultStr := (!resultStr) + x + y.Length () List.iteri funStr strArr Assert.AreEqual(10, !resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = ref 0 List.iteri funInt emptyArr Assert.AreEqual(0, !resultEpt) () [] member this.Iteri2() = // integer List let resultInt = ref 0 let funInt (x:int) (y:int) (z:int) = resultInt := !resultInt + x + y + z () List.iteri2 funInt [ 1..10 ] [2..2..20] Assert.AreEqual(210, !resultInt) // string List let resultStr = ref "" let funStr (x:int) (y:string) (z:string) = resultStr := (!resultStr) + x.ToString() + y + z () List.iteri2 funStr ["a";"b";"c";"d"] ["A";"B";"C";"D"] Assert.AreEqual("0aA1bB2cC3dD", !resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = ref 0 List.iteri2 funInt emptyArr emptyArr Assert.AreEqual(0, !resultEpt) () ././@LongLink0000644000000000000000000000014712266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListModule2.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ListModule2.0000775000175000017500000005350612260314606032053 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.List module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer List (value type) * String List (reference type) * Empty List (0 elements) *) [] type ListModule02() = [] member this.Length() = // integer List let resultInt = List.length [1..8] Assert.AreEqual(8, resultInt) // string List let resultStr = List.length ["a";"b";"c";"d"] Assert.AreEqual(4, resultStr) // empty List let resultEpt = List.length [ ] Assert.AreEqual(0, resultEpt) () [] member this.Map() = // integer List let funcInt x = match x with | _ when x % 2 = 0 -> 10*x | _ -> x let resultInt = List.map funcInt [ 1..10 ] Assert.AreEqual([1;20;3;40;5;60;7;80;9;100], resultInt) // string List let funcStr (x:string) = x.ToLower() let resultStr = List.map funcStr ["A";"B";"C";"D"] Assert.AreEqual(["a";"b";"c";"d"], resultStr) // empty List let resultEpt = List.map funcInt [ ] Assert.AreEqual(List.empty, resultEpt) () [] member this.Map2() = // integer List let funcInt x y = x+y let resultInt = List.map2 funcInt [1..10] [2..2..20] Assert.AreEqual([3;6;9;12;15;18;21;24;27;30], resultInt) // string List let funcStr (x:int) (y:string) = x+ y.Length let resultStr = List.map2 funcStr [3;6;9;11] ["a";"b";"c";"d"] Assert.AreEqual([4;7;10;12], resultStr ) // empty List let emptyArr:int list = [ ] let resultEpt = List.map2 funcInt emptyArr emptyArr Assert.AreEqual(List.empty, resultEpt) () [] member this.Map3 () = // integer List let funcInt x y z = (x + y) / z let resultInt = List.map3 funcInt [ 1..10 ] [2..2..20] [3..3..30] let expectedInt = List.init 10 (fun x -> 1) Assert.AreEqual(expectedInt, resultInt) // string List let funcStr x y z = x + y + z let resultStr = List.map3 funcStr ["A";"B";"C";"D"] ["a";"b";"c";"d"] ["1";"2";"3";"4"] Assert.AreEqual(["Aa1";"Bb2";"Cc3";"Dd4"], resultStr) // empty List let resultEpt = List.map3 funcInt List.empty List.empty List.empty Assert.AreEqual(List.empty, resultEpt) () [] member this.Collect() = // integer List let funcInt x = match x with | _ when x % 3 = 0 -> [999;999] | _ -> [168;168] let resultInt = List.collect funcInt [ 1..5 ] let resultList = List.toArray resultInt Assert.AreEqual([168;168;168;168;999;999;168;168;168;168;], resultInt ) // string List let funcStr (x:string) = match x with | _ when x.Length>3 -> ["long"] | _ -> ["short"] let resultStr = List.collect funcStr ["a";"b";"c";"d"] Assert.AreEqual(["short"; "short"; "short" ; "short" ], resultStr) // empty List let resultEpt = List.collect funcInt [ ] Assert.AreEqual(List.empty, resultEpt) () [] member this.Collect2() = // The collect implementation uses mutation to create the result list; this test // helps verify that lists created by the user are never mutated let lists = [| [1] [1;2] [1;2;3] |] let g x = lists.[x] let r = [0..2] |> List.collect g Assert.AreEqual( [1; 1; 2; 1; 2; 3], r ) Assert.AreEqual( [1], lists.[0]) Assert.AreEqual( [1; 2] , lists.[1] ) Assert.AreEqual( [1; 2; 3], lists.[2] ) () [] member this.Mapi() = // integer List let funcInt x y = x+y let resultInt = List.mapi funcInt [10..2..20] Assert.AreEqual([10;13;16;19;22;25], resultInt) // string List let funcStr (x:int) (y:string) = x+ y.Length let resultStr = List.mapi funcStr ["a";"b";"c";"d"] Assert.AreEqual([1;2;3;4], resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.mapi funcInt emptyArr Assert.AreEqual(List.empty, resultEpt) () [] member this.Mapi2() = // integer List let funcInt x y z = x + y + z let resultInt = List.mapi2 funcInt [1..10] [2..2..20] Assert.AreEqual([3;7;11;15;19;23;27;31;35;39], resultInt) // string List let funcStr z (x:int) (y:string) = z + x+ y.Length let resultStr = List.mapi2 funcStr [3;6;9;11] ["a";"b";"c";"d"] Assert.AreEqual([4;8;12;15], resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.mapi2 funcInt emptyArr emptyArr Assert.AreEqual(List.empty, resultEpt) () [] member this.Max() = // integer List let resultInt = List.max [2..2..20] Assert.AreEqual(20, resultInt) // string List let resultStr = List.max ["a";"b";"c";"d"] Assert.AreEqual("d", resultStr) // empty List CheckThrowsArgumentException ( fun() -> List.max List.empty) () [] member this.MaxBy() = // integer List let funcInt x = x%8 let resultInt = List.maxBy funcInt [2..2..20] Assert.AreEqual(resultInt , 6) // string List let funcStr (x:string) =x.Length let resultStr = List.maxBy funcStr ["a";"b";"c";"d"] Assert.AreEqual("a", resultStr) // empty List CheckThrowsArgumentException ( fun() -> List.maxBy (fun () -> 1) List.empty ) () [] member this.Min() = // integer List let resultInt = List.min [3;7;8;9;4;1;1;2] Assert.AreEqual(1, resultInt) // string List let resultStr = List.min ["a";"b";"c";"d"] Assert.AreEqual("a", resultStr) // empty List CheckThrowsArgumentException ( fun() -> List.min List.empty) () [] member this.MinBy() = // integer List let funcInt x = x%8 let resultInt = List.minBy funcInt [3;7;9;4;8;1;1;2] Assert.AreEqual(8, resultInt) // string List let funcStr (x:string) = x.Length let resultStr = List.minBy funcStr ["a";"b";"c";"d"] Assert.AreEqual("a", resultStr) // empty List let funcEpt () = 1 CheckThrowsArgumentException ( fun() -> List.minBy funcEpt List.empty) () [] member this.Nth() = // integer List let resultInt = List.nth [3;7;9;4;8;1;1;2] 3 Assert.AreEqual(4, resultInt) // string List let resultStr = List.nth ["a";"b";"c";"d"] 3 Assert.AreEqual("d", resultStr) // empty List CheckThrowsArgumentException ( fun() -> List.nth List.empty 1) () [] member this.Of_Array() = // integer List let resultInt = List.ofArray [|1..10|] Assert.AreEqual([1..10], resultInt) // string List let resultStr = List.ofArray [|"a";"b";"c";"d"|] Assert.AreEqual(["a";"b";"c";"d"], resultStr) // empty List let resultEpt = List.ofArray [||] Assert.AreEqual(List.empty, resultEpt) () [] member this.Of_Seq() = // integer List let resultInt = List.ofSeq {1..10} Assert.AreEqual([1..10], resultInt) // string List let resultStr = List.ofSeq (seq {for x in 'a'..'f' -> x.ToString()}) Assert.AreEqual([ "a";"b";"c";"d";"e";"f" ], resultStr) // empty List let resultEpt = List.ofSeq [] Assert.AreEqual(List.empty, resultEpt) () [] member this.Partition() = // integer List let resultInt = List.partition (fun x -> x % 3 = 0) [1..10] Assert.AreEqual(([3;6;9], [1;2;4;5;7;8;10]), resultInt ) // string List let resultStr = List.partition (fun (x:string) -> x.Length > 4) ["a";"b";"c";"d"] Assert.AreEqual(List.empty, fst resultStr) Assert.AreEqual(["a";"b";"c";"d"] |> Array.ofList, (snd resultStr) |> Array.ofList) // empty List let resultEpt = List.partition (fun x -> x % 3 = 0) [] Assert.AreEqual(List.empty, fst resultEpt) Assert.AreEqual(List.empty, snd resultEpt) () [] member this.Permute() = // integer List let resultInt = List.permute (fun i -> (i+1) % 4) [1;2;3;4] Assert.AreEqual([4;1;2;3], resultInt) // string List let resultStr = List.permute (fun i -> (i+1) % 4) ["a";"b";"c";"d"] Assert.AreEqual(["d";"a";"b";"c"], resultStr) // empty List let resultEpt = List.permute (fun i -> (i+1) % 4) [] Assert.AreEqual([], resultEpt) () [] member this.Reduce() = // integer List let resultInt = List.reduce (fun x y -> x/y) [5*4*3*2; 4;3;2;1] Assert.AreEqual(5, resultInt) // string List let resultStr = List.reduce (fun (x:string) (y:string) -> x.Remove(0,y.Length)) ["ABCDE";"A"; "B"; "C" ; "D"] Assert.AreEqual("E", resultStr) // empty List CheckThrowsArgumentException (fun () -> List.reduce (fun x y -> x/y) [] |> ignore) () [] member this.ReduceBack() = // integer List let resultInt = List.reduceBack (fun x y -> x/y) [5*4*3*2; 4;3;2;1] Assert.AreEqual(30, resultInt) // string List let resultStr = List.reduceBack (fun (x:string) (y:string) -> x.Remove(0,y.Length)) ["ABCDE";"A"; "B"; "C" ; "D"] Assert.AreEqual("ABCDE",resultStr) // empty List CheckThrowsArgumentException (fun () -> List.reduceBack (fun x y -> x/y) [] |> ignore) () [] member this.Rev() = // integer List let resultInt = List.rev [1..10] Assert.AreEqual(resultInt , [10;9;8;7;6;5;4;3;2;1]) // string List let resultStr = List.rev ["a";"b";"c";"d"] Assert.AreEqual( ["d";"c";"b";"a"], resultStr) // empty List let resultEpt = List.rev [] Assert.AreEqual([], resultEpt) () [] member this.Scan() = // integer List let funcInt x y = x+y let resultInt = List.scan funcInt 9 [ 1..10 ] Assert.AreEqual([9;10;12;15;19;24;30;37;45;54;64], resultInt) // string List let funcStr x y = x+y let resultStr = List.scan funcStr "*" ["a";"b";"c";"d"] Assert.AreEqual(["*";"*a";"*ab";"*abc";"*abcd"], resultStr) // empty List let resultEpt = List.scan funcInt 5 [ ] Assert.AreEqual([5], resultEpt) () [] member this.ScanBack() = // integer List let funcInt x y = x+y let resultInt = List.scanBack funcInt [ 1..10 ] 9 Assert.AreEqual([64;63;61;58;54;49;43;36;28;19;9], resultInt) // string List let funcStr x y = x+y let resultStr = List.scanBack funcStr ["a";"b";"c";"d"] "*" Assert.AreEqual(["abcd*";"bcd*";"cd*";"d*";"*"], resultStr) // empty List let resultEpt = List.scanBack funcInt [ ] 5 Assert.AreEqual([5], resultEpt) () [] member this.Sort() = // integer List let intArr = [3;5;7;2;4;8] let resultInt = List.sort intArr Assert.AreEqual(resultInt , [2;3;4;5;7;8]) // string List let strArr = ["Z";"a";"d";"Y";"c";"b";"X"] let resultStr = List.sort strArr Assert.AreEqual(["X"; "Y"; "Z"; "a"; "b"; "c"; "d"], resultStr) // empty List let emptyArr : int list = [ ] let resultEpt = List.sort emptyArr Assert.AreEqual(List.empty, resultEpt) () [] member this.SortBy() = // integer List let intArr = [3;5;7;2;4;8] let resultInt = List.sortBy int intArr Assert.AreEqual([2;3;4;5;7;8], resultInt) // string List let strArr = [".."; "..."; "."; "...."] let resultStr = List.sortBy (fun (x:string) -> x.Length) strArr Assert.AreEqual(["."; ".."; "..."; "...."], resultStr) // empty List let emptyArr:int list = [ ] let resultEpt = List.sortBy int emptyArr Assert.AreEqual(List.empty, resultEpt) () [] member this.Sum() = // empty integer List let resultEptInt = List.sum ([]:int list) Assert.AreEqual(0, resultEptInt) // empty float32 List let emptyFloatList = List.empty let resultEptFloat = List.sum emptyFloatList Assert.AreEqual(0.0f, resultEptFloat) // empty double List let emptyDoubleList = List.empty let resultDouEmp = List.sum emptyDoubleList Assert.AreEqual(0.0, resultDouEmp) // empty decimal List // currently bugged. see[FSharp Bugs 1.0] #3510 - 'List.average does not work on empty Decimals List' let emptyDecimalList = List.empty let resultDecEmp = List.sum emptyDecimalList Assert.AreEqual(0M, resultDecEmp) // integer List let resultInt = List.sum [1..10] Assert.AreEqual(55, resultInt) // float32 List let floatList: float32 list = [ 1.2f;3.5f;6.7f ] let resultFloat = List.sum floatList Assert.AreEqual(11.4f, resultFloat) // double List let doubleList: System.Double list = [ 1.0;8.0 ] let resultDouble = List.sum doubleList Assert.AreEqual(9.0, resultDouble) // decimal List let decimalList: decimal list = [ 0M;19M;19.03M ] let resultDecimal = List.sum decimalList Assert.AreEqual(38.03M , resultDecimal) () [] member this.SumBy() = // empty integer List let resultEptInt = List.sumBy int ([]:int list) Assert.AreEqual(0, resultEptInt) // empty float32 List let emptyFloatList = List.empty let resultEptFloat = List.sumBy float32 emptyFloatList Assert.AreEqual(0.0f, resultEptFloat) // empty double List let emptyDoubleList = List.empty let resultDouEmp = List.sumBy float emptyDoubleList Assert.AreEqual(0.0, resultDouEmp) // empty decimal List // currently bugged. see[FSharp Bugs 1.0] #3510 - 'List.average does not work on empty Decimals List' let emptyDecimalList = List.empty let resultDecEmp = List.sumBy decimal emptyDecimalList Assert.AreEqual(0M, resultDecEmp) // integer List let resultInt = List.sumBy int [1..10] Assert.AreEqual(55, resultInt) // float32 List let floatList: string list = [ "1.2";"3.5";"6.7" ] let resultFloat = List.sumBy float32 floatList Assert.AreEqual(11.4f, resultFloat) // double List let doubleList: System.Double list = [ 1.0;8.0 ] let resultDouble = List.sumBy float doubleList Assert.AreEqual(9.0, resultDouble) // decimal List let decimalList: decimal list = [ 0M;19M;19.03M ] let resultDecimal = List.sumBy decimal decimalList Assert.AreEqual(38.03M, resultDecimal) () [] member this.Tl() = // integer List let resultInt = List.tail [1..10] Assert.AreEqual([2..10], resultInt) // string List let resultStr = List.tail ["a";"b";"c";"d"] Assert.AreEqual([ "b"; "c" ; "d"], resultStr) CheckThrowsArgumentException(fun () -> List.tail [] |> ignore) () [] member this.To_Array() = // integer List let resultInt = List.toArray [1..10] Assert.AreEqual([|1..10|] , resultInt) // string List let resultStr = List.toArray ["a";"b";"c";"d"] Assert.AreEqual([|"a";"b";"c";"d"|], resultStr) // empty List let resultEpt = List.toArray [] Assert.AreEqual([| |], resultEpt) () [] member this.To_Seq() = // integer List let resultInt = [1..10] |> List.toSeq |> List.ofSeq Assert.AreEqual(resultInt , [1..10]) // string List let resultStr = ["a";"b";"c";"d"] |> List.toSeq |> List.ofSeq Assert.AreEqual(["a";"b";"c";"d"], resultStr) // empty List let resultEpt =[] |> List.toSeq |> List.ofSeq Assert.AreEqual(List.empty, resultEpt) () [] member this.TryFind() = // integer List let resultInt = [1..10] |> List.tryFind (fun x -> x%7 = 0) Assert.AreEqual(Some 7, resultInt) // string List let resultStr = ["a";"b";"c";"d"] |> List.tryFind (fun (x:string) -> x.Contains("c")) Assert.AreEqual(Some "c", resultStr) // empty List let resultEpt =[] |> List.tryFind (fun x -> x%7 = 0) Assert.AreEqual(None, resultEpt) // Head satisfy let resultHead = [7 .. -1 .. 0] |> List.tryFind (fun x -> x % 7 = 0) Assert.AreEqual(Some 7, resultHead) () [] member this.TryFindIndex() = // integer List let resultInt = [1..10] |> List.tryFindIndex (fun x -> x%7 = 0) Assert.AreEqual(Some 6, resultInt) // string List let resultStr = ["a";"b";"c";"d"] |> List.tryFindIndex (fun (x:string) -> x.Length > 4) Assert.AreEqual(None, resultStr) // empty List let resultEpt = [] |> List.tryFindIndex (fun x -> x%7 = 0) Assert.AreEqual(None, resultEpt) () [] member this.Unzip() = // integer List let resultInt = List.unzip [(1,2);(2,4);(3,6)] Assert.AreEqual(([1..3], [2..2..6]) , resultInt ) // string List let resultStr = List.unzip [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let str = resultStr.ToString() Assert.AreEqual(([2;3;4;5],["b";"c";"d";"e"]) , resultStr) // empty List let resultEpt = List.unzip [] Assert.AreEqual(( [], []), resultEpt) // null List () [] member this.Unzip3() = // integer List let resultInt = List.unzip3 [(1,2,3);(2,4,6);(3,6,9)] Assert.AreEqual(([1;2;3], [2;4;6], [3;6;9]), resultInt) // string List let resultStr = List.unzip3 [(2,"b","II");(3,"c","III");(4,"d","IV");(5,"e","V")] Assert.AreEqual(([2;3;4;5], ["b";"c";"d";"e"], ["II"; "III"; "IV"; "V"]), resultStr) // empty List let resultEpt = List.unzip3 [] Assert.AreEqual(( [], [], []), resultEpt) // null List () [] member this.Zip() = // integer List let resultInt = List.zip [1..3] [2..2..6] Assert.AreEqual([(1,2);(2,4);(3,6)], resultInt) // string List let resultStr = List.zip [2;3;4;5] ["b";"c";"d";"e"] Assert.AreEqual([(2,"b");(3,"c");(4,"d");(5,"e")] , resultStr) // empty List let resultEpt = List.zip [] [] let empTuple:(obj*obj) list = [] Assert.AreEqual(empTuple, resultEpt) () [] member this.Zip3() = // integer List let resultInt = List.zip3 [1..3] [2..2..6] [3;6;9] Assert.AreEqual([(1,2,3); (2,4,6); (3,6,9)], resultInt) // string List let resultStr = List.zip3[2;3;4;5] ["b";"c";"d";"e"] ["II"; "III"; "IV"; "V"] Assert.AreEqual([(2,"b","II");(3,"c","III");(4,"d","IV");(5,"e","V")], resultStr) // empty List let resultEpt = List.zip3 [] [] [] let empTriple:(obj*obj*obj) list = [] Assert.AreEqual(empTriple, resultEpt) () ././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ArrayModule2.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ArrayModule20000775000175000017500000007013312260314606032133 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Array module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer array (value type) * String array (reference type) * Empty array (0 elements) * Null array (null) *) [] type ArrayModule2() = [] member this.Length() = // integer array let resultInt = Array.length [|1..8|] if resultInt <> 8 then Assert.Fail() // string array let resultStr = Array.length [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> 4 then Assert.Fail() // empty array let resultEpt = Array.length [| |] if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsNullRefException (fun () -> Array.length nullArr |> ignore) () [] member this.Map() = // integer array let funcInt x = match x with | _ when x % 2 = 0 -> 10*x | _ -> x let resultInt = Array.map funcInt [| 1..10 |] if resultInt <> [|1;20;3;40;5;60;7;80;9;100|] then Assert.Fail() // string array let funcStr (x:string) = x.ToLower() let resultStr = Array.map funcStr [|"Lists"; "Are"; "Commonly" ; "List" |] if resultStr <> [|"lists"; "are"; "commonly" ; "list" |] then Assert.Fail() // empty array let resultEpt = Array.map funcInt [| |] if resultEpt <> [| |] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.map funcStr nullArr |> ignore) () [] member this.Map2() = // integer array let funcInt x y = x+y let resultInt = Array.map2 funcInt [|1..10|] [|2..2..20|] if resultInt <> [|3;6;9;12;15;18;21;24;27;30|] then Assert.Fail() // string array let funcStr (x:int) (y:string) = x+ y.Length let resultStr = Array.map2 funcStr [|3;6;9;11|] [|"Lists"; "Are"; "Commonly" ; "List" |] if resultStr <> [|8;9;17;15|] then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.map2 funcInt emptyArr emptyArr if resultEpt <> [| |] then Assert.Fail() // null array let nullArr = null:int[] let validArray = [| 1 |] CheckThrowsArgumentNullException (fun () -> Array.map2 funcInt nullArr validArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.map2 funcInt validArray nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.map2 funcInt [|1..10|] [|2..20|] |> ignore) () [] member this.Mapi() = // integer array let funcInt x y = x+y let resultInt = Array.mapi funcInt [|10..2..20|] if resultInt <> [|10;13;16;19;22;25|] then Assert.Fail() // string array let funcStr (x:int) (y:string) = x+ y.Length let resultStr = Array.mapi funcStr [|"Lists"; "Are"; "Commonly" ; "List" |] if resultStr <> [|5;4;10;7|] then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.mapi funcInt emptyArr if resultEpt <> [| |] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.mapi funcStr nullArr |> ignore) () [] member this.mapi2() = // integer array let funcInt x y z = x+y+z let resultInt = Array.mapi2 funcInt [|1..10|] [|2..2..20|] if resultInt <> [|3;7;11;15;19;23;27;31;35;39|] then Assert.Fail() // string array let funcStr z (x:int) (y:string) =z + x+ y.Length let resultStr = Array.mapi2 funcStr [|3;6;9;11|] [|"Lists"; "Are"; "Commonly" ; "List" |] if resultStr <> [|8;10;19;18|] then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.mapi2 funcInt emptyArr emptyArr if resultEpt <> [| |] then Assert.Fail() // null array let nullArr = null:int[] let validArray = [| 1 |] CheckThrowsArgumentNullException (fun () -> Array.mapi2 funcInt validArray nullArr |> ignore) CheckThrowsArgumentNullException (fun () -> Array.mapi2 funcInt nullArr validArray |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.mapi2 funcInt [|1..10|] [|2..20|] |> ignore) () [] member this.Max() = // integer array let resultInt = Array.max [|2..2..20|] if resultInt <> 20 then Assert.Fail() // string array let resultStr = Array.max [|"t"; "ahe"; "Lists"; "Are"; "Commonly" ; "List";"a" |] if resultStr <> "t" then Assert.Fail() // empty array -- argumentexception // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.max nullArr |> ignore) // len = 0 CheckThrowsArgumentException(fun() -> Array.max [||] |> ignore) () [] member this.MaxBy()= // integer array let funcInt x = x%8 let resultInt = Array.maxBy funcInt [|2..2..20|] if resultInt <> 6 then Assert.Fail() // string array let funcStr (x:string) = x.Length let resultStr = Array.maxBy funcStr [|"Lists"; "Are"; "Commonly" ; "List"|] if resultStr <> "Commonly" then Assert.Fail() // empty array -- argumentexception // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.maxBy funcStr nullArr |> ignore) // len = 0 CheckThrowsArgumentException(fun() -> Array.maxBy funcInt (Array.empty) |> ignore) () [] member this.Min() = // integer array let resultInt = Array.min [|3;7;8;9;4;1;1;2|] if resultInt <> 1 then Assert.Fail() // string array let resultStr = Array.min [|"a"; "Lists"; "Commonly" ; "List" |] if resultStr <> "Commonly" then Assert.Fail() // empty array -- argumentexception // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.min nullArr |> ignore) // len = 0 CheckThrowsArgumentException(fun () -> Array.min [||] |> ignore) () [] member this.MinBy()= // integer array let funcInt x = x%8 let resultInt = Array.minBy funcInt [|3;7;9;4;8;1;1;2|] if resultInt <> 8 then Assert.Fail() // string array let funcStr (x:string) = x.Length let resultStr = Array.minBy funcStr [|"Lists"; "Are"; "Commonly" ; "List"|] if resultStr <> "Are" then Assert.Fail() // empty array -- argumentexception // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.minBy funcStr nullArr |> ignore) // len = 0 CheckThrowsArgumentException(fun () -> Array.minBy funcInt (Array.empty) |> ignore) () [] member this.Of_List() = // integer array let resultInt = Array.ofList [1..10] if resultInt <> [|1..10|] then Assert.Fail() // string array let resultStr = Array.ofList ["Lists"; "are"; "commonly" ; "list" ] if resultStr <> [| "Lists"; "are"; "commonly" ; "list" |] then Assert.Fail() // empty array let resultEpt = Array.ofList [] if resultEpt <> [||] then Assert.Fail() // null array () [] member this.Of_Seq() = // integer array let resultInt = Array.ofSeq {1..10} if resultInt <> [|1..10|] then Assert.Fail() // string array let resultStr = Array.ofSeq (seq {for x in 'a'..'f' -> x.ToString()}) if resultStr <> [| "a";"b";"c";"d";"e";"f" |] then Assert.Fail() // empty array let resultEpt = Array.ofSeq [] if resultEpt <> [| |] then Assert.Fail() // null array () [] member this.Partition() = // integer array let resultInt = Array.partition (fun x -> x%3 = 0) [|1..10|] if resultInt <> ([|3;6;9|], [|1;2;4;5;7;8;10|]) then Assert.Fail() // string array let resultStr = Array.partition (fun (x:string) -> x.Length >4) [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> ([|"Lists";"commonly"|],[|"are"; "list"|]) then Assert.Fail() // empty array let resultEpt = Array.partition (fun x -> x%3 = 0) [||] if resultEpt <> ([||],[||]) then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.partition (fun (x:string) -> x.Length >4) nullArr |> ignore) () [] member this.Permute() = // integer array let resultInt = Array.permute (fun i -> (i+1) % 4) [|1;2;3;4|] if resultInt <> [|4;1;2;3|] then Assert.Fail() // string array let resultStr = Array.permute (fun i -> (i+1) % 4) [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> [|"list";"Lists"; "are"; "commonly" |] then Assert.Fail() // empty array let resultEpt = Array.permute (fun i -> (i+1) % 4) [||] if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.permute (fun i -> (i+1) % 4) nullArr |> ignore) () [] member this.Reduce() = // integer array let resultInt = Array.reduce (fun x y -> x/y) [|5*4*3*2; 4;3;2;1|] if resultInt <> 5 then Assert.Fail() // string array let resultStr = Array.reduce (fun (x:string) (y:string) -> x.Remove(0,y.Length)) [|"ABCDE";"A"; "B"; "C" ; "D" |] if resultStr <> "E" then Assert.Fail() // empty array CheckThrowsArgumentException (fun () -> Array.reduce (fun x y -> x/y) [||] |> ignore) // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.reduce (fun (x:string) (y:string) -> x.Remove(0,y.Length)) nullArr |> ignore) () [] member this.ReduceBack() = // integer array let resultInt = Array.reduceBack (fun x y -> x/y) [|5*4*3*2; 4;3;2;1|] if resultInt <> 30 then Assert.Fail() // string array let resultStr = Array.reduceBack (fun (x:string) (y:string) -> x.Remove(0,y.Length)) [|"ABCDE";"A"; "B"; "C" ; "D" |] if resultStr <> "ABCDE" then Assert.Fail() // empty array CheckThrowsArgumentException (fun () -> Array.reduceBack (fun x y -> x/y) [||] |> ignore) // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.reduceBack (fun (x:string) (y:string) -> x.Remove(0,y.Length)) nullArr |> ignore) () [] member this.Rev() = // integer array let resultInt = Array.rev [|1..10|] if resultInt <> [|10;9;8;7;6;5;4;3;2;1|] then Assert.Fail() // string array let resultStr = Array.rev [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> [|"list"; "commonly"; "are"; "Lists" |] then Assert.Fail() // empty array let resultEpt = Array.rev [||] if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.rev nullArr |> ignore) () [] member this.Scan() = // integer array let funcInt x y = x+y let resultInt = Array.scan funcInt 9 [| 1..10 |] if resultInt <> [|9;10;12;15;19;24;30;37;45;54;64|] then Assert.Fail() // string array let funcStr x y = x+y let resultStr = Array.scan funcStr "x" [|"A"; "B"; "C" ; "D" |] if resultStr <> [|"x";"xA";"xAB";"xABC";"xABCD"|] then Assert.Fail() // empty array let resultEpt = Array.scan funcInt 5 [| |] if resultEpt <> [|5|] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.scan funcStr "begin" nullArr |> ignore) () [] member this.ScanBack() = // integer array let funcInt x y = x+y let resultInt = Array.scanBack funcInt [| 1..10 |] 9 if resultInt <> [|64;63;61;58;54;49;43;36;28;19;9|] then Assert.Fail() // string array let funcStr x y = x+y let resultStr = Array.scanBack funcStr [|"A"; "B"; "C" ; "D" |] "X" if resultStr <> [|"ABCDX";"BCDX";"CDX";"DX";"X"|] then Assert.Fail() // empty array let resultEpt = Array.scanBack funcInt [| |] 5 if resultEpt <> [|5|] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.scanBack funcStr nullArr "begin" |> ignore) () [] member this.Set() = // integer array let intArr = [|10;9;8;7|] Array.set intArr 3 600 if intArr <> [|10;9;8;600|] then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] Array.set strArr 2 "always" if strArr <> [|"Lists"; "are"; "always" ; "list" |] then Assert.Fail() // empty array -- outofbundaryexception // null array let nullArr = null:string[] CheckThrowsNullRefException (fun () -> Array.set nullArr 0 "null" |> ignore) () [] member this.sortInPlaceWith() = // integer array let intArr = [|3;5;7;2;4;8|] Array.sortInPlaceWith compare intArr if intArr <> [|2;3;4;5;7;8|] then Assert.Fail() // Sort backwards let intArr = [|3;5;7;2;4;8|] Array.sortInPlaceWith (fun a b -> -1 * compare a b) intArr if intArr <> [|8;7;5;4;3;2|] then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "used"; "data"; "structure"|] Array.sortInPlaceWith compare strArr if strArr <> [| "Lists"; "a"; "are"; "commonly"; "data"; "structure"; "used"|] then Assert.Fail() // empty array let emptyArr:int[] = [| |] Array.sortInPlaceWith compare emptyArr if emptyArr <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.sortInPlaceWith compare nullArr |> ignore) // len = 2 let len2Arr = [|8;3|] Array.sortInPlaceWith compare len2Arr Assert.AreEqual([|3;8|], len2Arr) // Equal elements let eights = [|8; 8;8|] Array.sortInPlaceWith compare eights Assert.AreEqual([|8;8;8|], eights) () [] member this.sortInPlaceBy() = // integer array let intArr = [|3;5;7;2;4;8|] Array.sortInPlaceBy int intArr if intArr <> [|2;3;4;5;7;8|] then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "used"; "data"; "structure"|] Array.sortInPlaceBy (fun (x:string) -> x.Length) strArr // note: Array.sortInPlaceBy is not stable, so we allow 2 results. if strArr <> [| "a"; "are";"data"; "used";"Lists"; "commonly";"structure"|] && strArr <> [| "a"; "are"; "used"; "data"; "Lists"; "commonly";"structure"|] then Assert.Fail() // empty array let emptyArr:int[] = [| |] Array.sortInPlaceBy int emptyArr if emptyArr <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.sortInPlaceBy (fun (x:string) -> x.Length) nullArr |> ignore) // len = 2 let len2Arr = [|8;3|] Array.sortInPlaceBy int len2Arr if len2Arr <> [|3;8|] then Assert.Fail() Assert.AreEqual([|3;8|],len2Arr) () [] member this.Sub() = // integer array let resultInt = Array.sub [|1..8|] 3 3 if resultInt <> [|4;5;6|] then Assert.Fail() // string array let resultStr = Array.sub [|"Lists"; "are"; "commonly" ; "list" |] 1 2 if resultStr <> [|"are"; "commonly" |] then Assert.Fail() // empty array let resultEpt = Array.sub [| |] 0 0 if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.sub nullArr 1 1 |> ignore) // bounds CheckThrowsArgumentException (fun () -> Array.sub resultInt -1 2 |> ignore) CheckThrowsArgumentException (fun () -> Array.sub resultInt 1 -2 |> ignore) CheckThrowsArgumentException (fun () -> Array.sub resultInt 1 20 |> ignore) () [] member this.Sum() = // empty integer array let resultEptInt = Array.sum ([||]:int[]) if resultEptInt <> 0 then Assert.Fail() // empty float32 array let emptyFloatArray = Array.empty let resultEptFloat = Array.sum emptyFloatArray if resultEptFloat <> 0.0f then Assert.Fail() // empty double array let emptyDoubleArray = Array.empty let resultDouEmp = Array.sum emptyDoubleArray if resultDouEmp <> 0.0 then Assert.Fail() // empty decimal array let emptyDecimalArray = Array.empty let resultDecEmp = Array.sum emptyDecimalArray if resultDecEmp <> 0M then Assert.Fail() // integer array let resultInt = Array.sum [|1..10|] if resultInt <> 55 then Assert.Fail() // float32 array let floatArray: float32[] = [| 1.1f; 1.1f; 1.1f |] let resultFloat = Array.sum floatArray if resultFloat < 3.3f - 0.001f || resultFloat > 3.3f + 0.001f then Assert.Fail() // double array let doubleArray: System.Double[] = [| 1.0; 8.0 |] let resultDouble = Array.sum doubleArray if resultDouble <> 9.0 then Assert.Fail() // decimal array let decimalArray: decimal[] = [| 0M; 19M; 19.03M |] let resultDecimal = Array.sum decimalArray if resultDecimal <> 38.03M then Assert.Fail() // null array let nullArr = null:double[] CheckThrowsArgumentNullException (fun () -> Array.sum nullArr |> ignore) () [] member this.SumBy() = // empty integer array let resultEptInt = Array.sumBy int ([||]:int[]) if resultEptInt <> 0 then Assert.Fail() // empty float32 array let emptyFloatArray = Array.empty let resultEptFloat = Array.sumBy float32 emptyFloatArray if resultEptFloat <> 0.0f then Assert.Fail() // empty double array let emptyDoubleArray = Array.empty let resultDouEmp = Array.sumBy float emptyDoubleArray if resultDouEmp <> 0.0 then Assert.Fail() // empty decimal array let emptyDecimalArray = Array.empty let resultDecEmp = Array.sumBy decimal emptyDecimalArray if resultDecEmp <> 0M then Assert.Fail() // integer array let resultInt = Array.sumBy int [|1..10|] if resultInt <> 55 then Assert.Fail() // float32 array let floatArray: string[] = [| "1.2";"3.5";"6.7" |] let resultFloat = Array.sumBy float32 floatArray if resultFloat <> 11.4f then Assert.Fail() // double array let doubleArray: System.Double[] = [| 1.0;8.0 |] let resultDouble = Array.sumBy float doubleArray if resultDouble <> 9.0 then Assert.Fail() // decimal array let decimalArray: decimal[] = [| 0M;19M;19.03M |] let resultDecimal = Array.sumBy decimal decimalArray if resultDecimal <> 38.03M then Assert.Fail() // null array let nullArr = null:double[] CheckThrowsArgumentNullException (fun () -> Array.sumBy float32 nullArr |> ignore) () [] member this.To_List() = // integer array let resultInt = Array.toList [|1..10|] if resultInt <> [1..10] then Assert.Fail() // string array let resultStr = Array.toList [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> ["Lists"; "are"; "commonly" ; "list"] then Assert.Fail() // empty array let resultEpt = Array.toList [||] if resultEpt <> [] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.toList nullArr |> ignore) () [] member this.To_Seq() = // integer array let resultInt = [|1..10|] |> Array.toSeq |> Array.ofSeq if resultInt <> [|1..10|] then Assert.Fail() // string array let resultStr = [|"Lists"; "are"; "commonly" ; "list" |] |> Array.toSeq |> Array.ofSeq if resultStr <> [|"Lists"; "are"; "commonly" ; "list" |] then Assert.Fail() // empty array let resultEpt =[||] |> Array.toSeq |> Array.ofSeq if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> nullArr |> Array.toSeq |> ignore) () [] member this.TryFind() = // integer array let resultInt = [|1..10|] |> Array.tryFind (fun x -> x%7 = 0) if resultInt <> Some 7 then Assert.Fail() // string array let resultStr = [|"Lists"; "are"; "commonly" ; "list" |] |> Array.tryFind (fun (x:string) -> x.Length > 4) if resultStr <> Some "Lists" then Assert.Fail() // empty array let resultEpt =[||] |> Array.tryFind (fun x -> x%7 = 0) if resultEpt <> None then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.tryFind (fun (x:string) -> x.Length > 4) nullArr |> ignore) () [] member this.TryFindIndex() = // integer array let resultInt = [|1..10|] |> Array.tryFindIndex (fun x -> x%7 = 0) if resultInt <> Some 6 then Assert.Fail() // string array let resultStr = [|"Lists"; "are"; "commonly" ; "list" |] |> Array.tryFindIndex (fun (x:string) -> x.Length > 4) if resultStr <> Some 0 then Assert.Fail() // empty array let resultEpt =[||] |> Array.tryFindIndex (fun x -> x % 7 = 0) if resultEpt <> None then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.tryFindIndex (fun (x:string) -> x.Length > 4) nullArr |> ignore) () [] member this.Unzip() = // integer array let resultInt = Array.unzip [|(1,2);(2,4);(3,6)|] if resultInt <> ([|1..3|], [|2..2..6|]) then Assert.Fail() // string array let resultStr = Array.unzip [|("A","a");("B","b");("C","c");("D","d")|] let str = resultStr.ToString() if resultStr <> ([|"A"; "B"; "C" ; "D" |],[|"a";"b";"c";"d"|]) then Assert.Fail() // empty array let resultEpt = Array.unzip [||] if resultEpt <> ([||],[||]) then Assert.Fail() // null array () [] member this.Unzip3() = // integer array let resultInt = Array.unzip3 [|(1,2,3);(2,4,6);(3,6,9)|] if resultInt <> ([|1;2;3|], [|2;4;6|], [|3;6;9|]) then Assert.Fail() // string array let resultStr = Array.unzip3 [|("A","1","a");("B","2","b");("C","3","c");("D","4","d")|] if resultStr <> ([|"A"; "B"; "C" ; "D" |], [|"1";"2";"3";"4"|], [|"a"; "b"; "c"; "d"|]) then Assert.Fail() // empty array let resultEpt = Array.unzip3 [||] if resultEpt <> ([||], [||], [||]) then Assert.Fail() // null array () [] member this.Zero_Create() = // Check for bogus input CheckThrowsArgumentException(fun () -> Array.zeroCreate -1 |> ignore) // integer array let resultInt = Array.zeroCreate 8 if resultInt <> [|0;0;0;0;0;0;0;0|] then Assert.Fail() // string array let resultStr = Array.zeroCreate 3 if resultStr <> [|null;null;null|] then Assert.Fail() // empty array let resultEpt = Array.zeroCreate 0 if resultEpt <> [||] then Assert.Fail() () [] member this.BadCreateArguments() = // negative number CheckThrowsArgumentException (fun () -> Array.create -1 0 |> ignore) [] member this.Zip() = // integer array let resultInt = Array.zip [|1..3|] [|2..2..6|] if resultInt <> [|(1,2);(2,4);(3,6)|] then Assert.Fail() // string array let resultStr = Array.zip [|"A"; "B"; "C" ; "D" |] [|"a";"b";"c";"d"|] if resultStr <> [|("A","a");("B","b");("C","c");("D","d")|] then Assert.Fail() // empty array let resultEpt = Array.zip [||] [||] if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.zip nullArr nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.zip [|1..10|] [|2..20|] |> ignore) () [] member this.Zip3() = // integer array let resultInt = Array.zip3 [|1..3|] [|2..2..6|] [|3;6;9|] if resultInt <> [|(1,2,3);(2,4,6);(3,6,9)|] then Assert.Fail() // string array let resultStr = Array.zip3 [|"A"; "B"; "C" ; "D" |] [|"1";"2";"3";"4"|] [|"a"; "b"; "c"; "d"|] let str = resultStr.ToString() if resultStr <> [|("A","1","a");("B","2","b");("C","3","c");("D","4","d")|] then Assert.Fail() // empty array let resultEpt = Array.zip3 [||] [||] [||] if resultEpt <> [||] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.zip3 nullArr nullArr nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.zip3 [|1..10|] [|2..20|] [|1..10|] |> ignore) // len1 <> len3 CheckThrowsArgumentException(fun () -> Array.zip3 [|1..10|] [|1..10|] [|2..20|] |> ignore) () ././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ComparisonIdentityModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ComparisonId0000775000175000017500000000316512260314606032215 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.ComparisonIdentity module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * (value type) * (reference type) * (0 elements) * (2 - 7 elements) *) [] type ComparisonIdentityModule() = [] member this.FromFunction() = // integer array let intArr = [|1;5;8;2;6;3;7;4|] System.Array.Sort(intArr, ComparisonIdentity.FromFunction compare) Assert.AreEqual([|1;2;3;4;5;6;7;8|],intArr) // string array let strArr = [|"A";"C";"B"|] System.Array.Sort(strArr, ComparisonIdentity.FromFunction (compare)) Assert.AreEqual([|"A";"B";"C"|],strArr) // empty array let eptArr = [||] System.Array.Sort(eptArr, ComparisonIdentity.FromFunction (compare)) Assert.AreEqual([||], eptArr) () [] member this.Structural() = // integer array let intArr = [|1;5;8;2;6;3;7;4|] System.Array.Sort(intArr, ComparisonIdentity.Structural ) Assert.AreEqual([|1;2;3;4;5;6;7;8|],intArr) // string array let strArr = [|"A";"C";"B"|] System.Array.Sort(strArr, ComparisonIdentity.Structural ) Assert.AreEqual([|"A";"B";"C"|],strArr) // empty array let eptArr = [||] System.Array.Sort(eptArr, ComparisonIdentity.Structural ) Assert.AreEqual([||],eptArr) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/MapModule.fs0000775000175000017500000005523412260314606032124 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Map module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Maps with reference keys * Maps with value keys * Empty Maps (0 elements) * One-element maps * Multi-element maps (2 – 7 elements) *) [] type MapModule() = [] member this.Empty() = let emptyMap = Map.empty Assert.IsTrue(Map.isEmpty emptyMap) let a:Map = Map.empty let b : Map = Map.empty let c : Map = Map.empty () [] member this.Add() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.add 1 "a" valueKeyMap Assert.AreEqual(resultValueMap.[1], "a") // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.add "" 0 refMap Assert.AreEqual(resultRefMap.[""] , 0) // empty Map let eptMap = Map.empty let resultEpt = Map.add 1 "a" eptMap Assert.AreEqual(resultEpt.[1], "a") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.add 7 "seven" oeleMap Assert.AreEqual(resultOele.[7], "seven") // extra test for add -- add some key which already exit in the Map let extMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultExt = Map.add 2 "dup" extMap Assert.AreEqual(resultExt.[2], "dup") () [] member this.Exists() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.exists (fun x y -> x > 3) valueKeyMap Assert.IsTrue(resultValueMap) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.exists (fun x y -> y>2 ) Assert.IsTrue(resultRefMap) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.exists (fun x y -> (x + y.Length) % 4 = 0 ) Assert.IsTrue(resultOele) // empty Map let eptMap = Map.empty let resultEpt = Map.exists (fun x y -> false) eptMap Assert.IsFalse(resultEpt) () [] member this.Filter() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap =valueKeyMap |> Map.filter (fun x y -> x % 3 = 0) Assert.AreEqual(resultValueMap,[3,"c"] |> Map.ofList) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.filter (fun x y -> y > 3 ) Assert.AreEqual(resultRefMap,["....",4] |> Map.ofList) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.filter (fun x y -> x<3 ) Assert.AreEqual(resultOele,oeleMap) // empty Map let eptMap = Map.empty let resultEpt = Map.filter (fun x y -> true) eptMap Assert.AreEqual(resultEpt,eptMap) () [] member this.Find() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.find 5 valueKeyMap Assert.AreEqual(resultValueMap,"e") // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.find ".." refMap Assert.AreEqual(resultRefMap,2) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.find 1 oeleMap Assert.AreEqual(resultOele,"one") // empty Map let eptMap = Map.empty CheckThrowsKeyNotFoundException (fun () -> Map.find 1 eptMap |> ignore) () [] member this.FindIndex() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap =valueKeyMap |> Map.findKey (fun x y -> x % 3 = 0) Assert.AreEqual(resultValueMap,3) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.findKey (fun x y -> y % 3 = 0 ) Assert.AreEqual(resultRefMap,"...") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.findKey (fun x y -> x = 1 ) Assert.AreEqual(resultOele,1) // empty Map let eptMap = Map.empty CheckThrowsKeyNotFoundException (fun () -> Map.findKey (fun x y -> true) eptMap |> ignore) () [] member this.TryPick() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = valueKeyMap |> Map.tryPick (fun x y -> if x % 3 = 0 then Some (x) else None) Assert.AreEqual(resultValueMap,Some 3) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.tryPick (fun x y -> if (y % 3 = 0 ) then Some y else None ) Assert.AreEqual(resultRefMap,Some 3) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.tryPick (fun x y -> if(x + y.Length) % 4 = 0 then Some y else None ) Assert.AreEqual(resultOele,Some "one") // empty Map let eptMap = Map.empty let resultEpt = Map.tryPick (fun x y -> Some x) eptMap Assert.AreEqual(resultEpt,None) () [] member this.Pick() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValue = valueKeyMap |> Map.pick (fun x y -> if x % 3 = 0 then Some (y) else None) Assert.AreEqual(resultValue, "c") // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let result = refMap |> Map.pick (fun x y -> if (y % 3 = 0 ) then Some y else None ) Assert.AreEqual(result, 3) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.pick (fun x y -> if(x + y.Length) % 4 = 0 then Some y else None ) Assert.AreEqual(resultOele, "one") // empty Map let eptMap = Map.empty let resultEpt = try Map.pick (fun x y -> Some x) eptMap with :? System.Collections.Generic.KeyNotFoundException -> Some 0 Assert.AreEqual(resultEpt, Some 0) () [] member this.Fold() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = valueKeyMap |> Map.fold (fun x y z -> x + y + z.Length) 10 Assert.AreEqual(resultValueMap,28) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.fold (fun x y z -> x + y + z.ToString()) "*" Assert.AreEqual(resultRefMap,"*.1..2...3....4") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.fold (fun x y z -> x + y.ToString() + z) "got" Assert.AreEqual(resultOele,"got1one") // empty Map let eptMap = Map.empty let resultEpt = eptMap |> Map.fold (fun x y z -> 1) 1 Assert.AreEqual(resultEpt,1) () [] member this.FoldBack() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.foldBack (fun x y z -> x.ToString() + y + z.ToString()) valueKeyMap "*" Assert.AreEqual(resultValueMap,"2b3c4d5e*") // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.foldBack (fun x y z -> x + y.ToString() + z) refMap "right" Assert.AreEqual(resultRefMap,".1..2...3....4right") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.foldBack (fun x y z -> x.ToString() + y + z) oeleMap "right" Assert.AreEqual(resultOele,"1oneright") // empty Map let eptMap = Map.empty let resultEpt = Map.foldBack (fun x y z -> 1) eptMap 1 Assert.AreEqual(resultEpt,1) () [] member this.ForAll() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = valueKeyMap |> Map.forall (fun x y -> x % 3 = 0) Assert.IsFalse(resultValueMap) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.forall (fun x y -> x.Length > 4 ) Assert.IsFalse(resultRefMap) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.forall (fun x y -> x<3 ) Assert.IsTrue(resultOele) // empty Map let eptMap = Map.empty let resultEpt =eptMap |> Map.forall (fun x y -> true) Assert.IsTrue(resultEpt) () [] member this.IsEmpty() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.isEmpty valueKeyMap Assert.IsFalse(resultValueMap) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.isEmpty refMap Assert.IsFalse(resultRefMap) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.isEmpty oeleMap Assert.IsFalse(resultOele) // empty Map let eptMap = Map.empty let resultEpt = Map.isEmpty eptMap Assert.IsTrue(resultEpt) () [] member this.Iter() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = ref 0 let funInt (x:int) (y:string) = resultValueMap := !resultValueMap + x + y.Length () Map.iter funInt valueKeyMap Assert.AreEqual(!resultValueMap,18) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = ref "" let funStr (x:string) (y:int) = resultRefMap := !resultRefMap + x + y.ToString() () Map.iter funStr refMap Assert.AreEqual(!resultRefMap,".1..2...3....4") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = ref "" let funMix (x:int) (y:string) = resultOele := !resultOele + x.ToString() + y () Map.iter funMix oeleMap Assert.AreEqual(!resultOele,"1one") // empty Map let eptMap = Map.empty let resultEpt = ref 0 let funEpt (x:int) (y:int) = resultEpt := !resultEpt + x + y () Map.iter funEpt eptMap Assert.AreEqual(!resultEpt,0) () [] member this.Map() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = valueKeyMap |> Map.map (fun x y -> x.ToString() + y ) Assert.AreEqual(resultValueMap,[(2,"2b"); (3,"3c"); (4,"4d"); (5,"5e")] |> Map.ofList) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.map (fun x y -> x.Length + y ) Assert.AreEqual(resultRefMap,[(".",2); ("..",4);( "...",6); ("....",8)] |> Map.ofList) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.map (fun x y -> x.ToString() + y ) Assert.AreEqual(resultOele,[1,"1one"] |> Map.ofList) // empty Map let eptMap = Map.empty let resultEpt = eptMap |> Map.map (fun x y -> x+y) Assert.AreEqual(resultEpt,eptMap) () [] member this.Contains() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.containsKey 2 valueKeyMap Assert.IsTrue(resultValueMap) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.containsKey ".." refMap Assert.IsTrue(resultRefMap) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.containsKey 1 oeleMap Assert.IsTrue(resultOele) // empty Map let eptMap = Map.empty let resultEpt = Map.containsKey 3 eptMap Assert.IsFalse(resultEpt) () [] member this.Of_Array_Of_List_Of_Seq() = // value keys let valueKeyMapOfArr = Map.ofArray [|(2,"b"); (3,"c"); (4,"d"); (5,"e")|] let valueKeyMapOfList = Map.ofList [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let valueKeyMapOfSeq = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] Assert.AreEqual(valueKeyMapOfArr,valueKeyMapOfList) Assert.AreEqual(valueKeyMapOfList,valueKeyMapOfSeq) Assert.AreEqual(valueKeyMapOfArr,valueKeyMapOfSeq) // reference keys let refMapOfArr = Map.ofArray [|(".",1); ("..",2);( "...",3); ("....",4)|] let refMapOfList = Map.ofList [(".",1); ("..",2);( "...",3); ("....",4)] let refMapOfSeq = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] Assert.AreEqual(refMapOfArr,refMapOfList) Assert.AreEqual(refMapOfList,refMapOfSeq) Assert.AreEqual(refMapOfArr,refMapOfSeq) // One-element Map let oeleMapOfArr = Map.ofArray [|(1,"one")|] let oeleMapOfList = Map.ofList [(1,"one") ] let oeleMapOfSeq = Map.ofSeq [(1,"one") ] Assert.AreEqual(oeleMapOfArr,oeleMapOfList) Assert.AreEqual(oeleMapOfList,oeleMapOfSeq) Assert.AreEqual(oeleMapOfArr,oeleMapOfSeq) () [] member this.Partition() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.partition (fun x y -> x%2 = 0) valueKeyMap let choosed = [(2,"b"); (4,"d")] |> Map.ofList let notChoosed = [(3,"c"); (5,"e")] |> Map.ofList Assert.AreEqual(resultValueMap,(choosed,notChoosed)) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.partition (fun x y -> x.Length >2 ) let choosed = [( "...",3); ("....",4)] |> Map.ofList let notChoosed = [(".",1); ("..",2)] |> Map.ofList Assert.AreEqual(resultRefMap,(choosed,notChoosed)) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.partition (fun x y -> x<4) oeleMap let choosed = [(1,"one")] |> Map.ofList let notChoosed = Map.empty Assert.AreEqual(resultOele,(choosed,notChoosed)) // empty Map let eptMap = Map.empty let resultEpt = Map.partition (fun x y -> true) eptMap Assert.AreEqual(resultEpt,(eptMap,eptMap)) () [] member this.Remove() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.remove 5 valueKeyMap Assert.AreEqual(resultValueMap,[(2,"b"); (3,"c"); (4,"d")] |> Map.ofList) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.remove ".." refMap Assert.AreEqual(resultRefMap,[(".",1); ( "...",3); ("....",4)] |> Map.ofList) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.remove 1 oeleMap Assert.AreEqual(resultOele,Map.empty) // Two-element Map let oeleMap = Map.ofSeq [(1, "one");(2,"Two")] let resultOele = Map.remove 1 oeleMap let exOele = Map.ofSeq [(2, "Two")] Assert.AreEqual(resultOele, exOele) // Item which want to be removed not included in the map let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.remove 5 valueKeyMap Assert.AreEqual(resultValueMap,[(2,"b"); (3,"c"); (4,"d")] |> Map.ofList) () [] member this.To_Array() = // value keys let valueKeyMapOfArr = Map.ofArray [|(1,1);(2,4);(3,9)|] let resultValueMap = Map.toArray valueKeyMapOfArr Assert.AreEqual(resultValueMap,[|(1,1);(2,4);(3,9)|]) // reference keys let refMapOfArr = Map.ofArray [|(".",1); ("..",2);( "...",3); ("....",4)|] let resultRefMap = Map.toArray refMapOfArr Assert.AreEqual(resultRefMap,[|(".",1); ("..",2);( "...",3); ("....",4)|]) // One-element Map let oeleMapOfArr = Map.ofArray [|(1,"one")|] let resultOele = Map.toArray oeleMapOfArr Assert.AreEqual(resultOele,[|(1,"one")|]) // empty Map let eptMap = Map.ofArray [||] let resultEpt = Map.toArray eptMap Assert.AreEqual(resultEpt,[||]) () [] member this.To_List() = // value keys let valueKeyMapOfArr = Map.ofList [(1,1);(2,4);(3,9)] let resultValueMap = Map.toList valueKeyMapOfArr Assert.AreEqual(resultValueMap,[(1,1);(2,4);(3,9)]) // reference keys let refMapOfArr = Map.ofList [(".",1); ("..",2);( "...",3); ("....",4)] let resultRefMap = Map.toList refMapOfArr Assert.AreEqual(resultRefMap,[(".",1); ("..",2);( "...",3); ("....",4)]) // One-element Map let oeleMapOfArr = Map.ofList [(1,"one")] let resultOele = Map.toList oeleMapOfArr Assert.AreEqual(resultOele,[(1,"one")]) // empty Map let eptMap = Map.empty let resultEpt = Map.toList eptMap let eptList :(int*string) list = [] Assert.AreEqual(resultEpt,eptList) () [] member this.To_Seq() = // value keys let valueKeyMapOfArr = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.toSeq valueKeyMapOfArr let originInt = seq { for i in 1..3 do yield (i,i*i)} VerifySeqsEqual resultValueMap [(2,"b"); (3,"c"); (4,"d"); (5,"e")] // reference keys let refMapOfArr = Map.ofSeq [(".",1); ("..",2);( "...",3); ("....",4)] let resultRefMap = Map.toSeq refMapOfArr let originStr = seq { for x in [ "is" ;"lists";"str"; "this"] do yield (x,x.ToUpper())} VerifySeqsEqual resultRefMap [(".",1); ("..",2);( "...",3); ("....",4)] // One-element Map let oeleMapOfArr = Map.ofSeq [(1,"one")] let resultOele = Map.toSeq oeleMapOfArr let originMix = seq { for x in [ "is" ;"str"; "this" ;"lists"] do yield (x.Length,x.ToUpper())} VerifySeqsEqual resultOele [(1,"one")] () [] member this.TryFind() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = Map.tryFind 5 valueKeyMap Assert.AreEqual(resultValueMap,Some "e") // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = Map.tryFind "..." refMap Assert.AreEqual(resultRefMap,Some 3) // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = Map.tryFind 1 oeleMap Assert.AreEqual(resultOele,Some "one") // empty Map let eptMap = Map.empty let resultEpt = Map.tryFind 1 eptMap Assert.AreEqual(resultEpt,None) () [] member this.TryFindIndex() = // value keys let valueKeyMap = Map.ofSeq [(2,"b"); (3,"c"); (4,"d"); (5,"e")] let resultValueMap = valueKeyMap |> Map.tryFindKey (fun x y -> x+y.Length >30) Assert.AreEqual(resultValueMap,None) // reference keys let refMap = Map.ofSeq [for c in ["."; ".."; "..."; "...."] do yield (c, c.Length) ] let resultRefMap = refMap |> Map.tryFindKey (fun x y -> (x.Length+y)>6) Assert.AreEqual(resultRefMap,Some "....") // One-element Map let oeleMap = Map.ofSeq [(1, "one")] let resultOele = oeleMap |> Map.tryFindKey (fun x y -> y.Contains("o")) Assert.AreEqual(resultOele,Some 1) // empty Map let eptMap = Map.empty let resultEpt = Map.tryFindKey (fun x y -> x+y >30) eptMap Assert.AreEqual(resultEpt,None) () ././@LongLink0000644000000000000000000000015612266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/HashIdentityModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/HashIdentity0000775000175000017500000000517512260314606032226 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.HashIdentity module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open System.Collections.Generic [] type HashIdentityModule() = [] member this.FromFunction() = // value type let valueDict = new Dictionary(HashIdentity.Structural) Assert.AreEqual(valueDict.Count,0) valueDict.Add(3,"C") Assert.AreEqual(1, valueDict.Count) Assert.IsTrue(valueDict.ContainsValue("C")) // reference type let refDict = new Dictionary(HashIdentity.Structural) Assert.AreEqual(refDict.Count,0) refDict.Add("...",3) Assert.AreEqual(1, refDict.Count) Assert.IsTrue(refDict.ContainsValue(3)) // empty type let eptDict = new Dictionary(HashIdentity.Structural) Assert.AreEqual(0, eptDict.Count) Assert.IsFalse(eptDict.ContainsKey(3)) () [] member this.Reference() = // reference type let refDict = new Dictionary(HashIdentity.Reference) Assert.AreEqual(refDict.Count,0) let obj1 = obj() let obj2 = obj() refDict.Add(obj1,3) Assert.AreEqual(1,refDict.Count) Assert.IsTrue(refDict.ContainsKey(obj1)) Assert.IsFalse(refDict.ContainsKey(obj2)) Assert.IsTrue(refDict.ContainsValue(3)) // empty table let eptDict = new Dictionary(HashIdentity.Reference) Assert.AreEqual(0,eptDict.Count) Assert.IsFalse(eptDict.ContainsKey("3")) () [] member this.FromFunctions() = // value type let valueDict = new Dictionary(HashIdentity.FromFunctions (fun x -> 1) (fun x y -> x > y)) Assert.AreEqual(0,valueDict.Count) valueDict.Add(3,"C") Assert.AreEqual(1,valueDict.Count) Assert.IsTrue(valueDict.ContainsValue("C")) // reference type let refDict = new Dictionary(HashIdentity.FromFunctions (fun x -> 1) (fun x y -> x > y)) Assert.AreEqual(0,refDict.Count) refDict.Add("...",3) Assert.AreEqual(1,refDict.Count) Assert.IsTrue(refDict.ContainsValue(3)) // empty type let eptDict = new Dictionary(HashIdentity.FromFunctions (fun x -> 1) (fun x y -> x > y)) Assert.AreEqual(0,eptDict.Count) Assert.IsFalse(eptDict.ContainsKey(3)) ()././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array4Module.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array4Module0000775000175000017500000002143612260314606032137 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Array4D module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer Array4D (value type) * String Array4D (reference type) * Empty Array4D (0 elements) * Null Array4D (null) *) [] type Array4Module() = let VerifyDimensions arr x y z u = if Array4D.length1 arr <> x then Assert.Fail("Array3D does not have expected dimensions.") if Array4D.length2 arr <> y then Assert.Fail("Array3D does not have expected dimensions.") if Array4D.length3 arr <> z then Assert.Fail("Array3D does not have expected dimensions.") if Array4D.length4 arr <> u then Assert.Fail("Array4D does not have expected dimensions.") () [] member this.Create() = // integer array let intArr = Array4D.create 3 4 5 6 168 if intArr.[1,2,1,1] <> 168 then Assert.Fail() VerifyDimensions intArr 3 4 5 6 // string array let strArr = Array4D.create 2 3 4 5 "foo" if strArr.[1,2,3,2] <> "foo" then Assert.Fail() VerifyDimensions strArr 2 3 4 5 // empty array let eptArr1 = Array4D.create 0 0 0 0 'a' let eptArr2 = Array4D.create 0 0 0 0 'b' if eptArr1 <> eptArr2 then Assert.Fail() () [] member this.Init() = // integer array let intArr = Array4D.init 3 3 3 3 (fun i j k l -> i*1000 + j*100 + k*10 + l) if intArr.[1,1,1,1] <> 1111 then Assert.Fail() if intArr.[2,2,2,2] <> 2222 then Assert.Fail() VerifyDimensions intArr 3 3 3 3 // ref array let strArr = Array4D.init 3 3 3 3 (fun i j k l -> (i, j, k, l)) if strArr.[2,0,1,2] <> (2, 0, 1, 2) then Assert.Fail() if strArr.[0,1,2,1] <> (0, 1, 2,1) then Assert.Fail() VerifyDimensions intArr 3 3 3 3 () [] member this.Get() = // integer array let intArr = Array4D.init 2 3 2 2 (fun i j k l -> i*1000 + j*100 + k*10 + l) let resultInt = Array4D.get intArr 0 1 1 0 if resultInt <> 110 then Assert.Fail() // string array let strArr = Array4D.init 2 3 2 2 (fun i j k l -> i.ToString() + "-" + j.ToString() + "-" + k.ToString() + "-" + l.ToString()) let resultStr = Array4D.get strArr 0 2 1 0 if resultStr <> "0-2-1-0" then Assert.Fail() CheckThrowsIndexOutRangException(fun () -> Array4D.get strArr 2 0 0 0 |> ignore) CheckThrowsIndexOutRangException(fun () -> Array4D.get strArr 0 3 0 0 |> ignore) CheckThrowsIndexOutRangException(fun () -> Array4D.get strArr 0 0 2 0 |> ignore) CheckThrowsIndexOutRangException(fun () -> Array4D.get strArr 0 0 0 2 |> ignore) // empty array let emptyArray = Array4D.init 0 0 0 0 (fun i j k l -> Assert.Fail()) CheckThrowsIndexOutRangException (fun () -> Array4D.get emptyArray 1 0 0 0 |> ignore) CheckThrowsIndexOutRangException (fun () -> Array4D.get emptyArray 0 1 0 0 |> ignore) CheckThrowsIndexOutRangException (fun () -> Array4D.get emptyArray 0 0 1 0 |> ignore) CheckThrowsIndexOutRangException (fun () -> Array4D.get emptyArray 0 0 0 1 |> ignore) // null array let nullArr : string[,,,] = null CheckThrowsNullRefException (fun () -> Array4D.get nullArr 1 1 1 1 |> ignore) () [] member this.Length1() = // integer array let intArr = Array4D.create 2 3 2 2 168 let resultInt = Array4D.length1 intArr if resultInt <> 2 then Assert.Fail() // string array let strArr = Array4D.create 2 3 2 2 "enmity" let resultStr = Array4D.length1 strArr if resultStr <> 2 then Assert.Fail() // empty array let eptArr = Array4D.create 0 0 0 0 1 let resultEpt = Array4D.length1 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,,] CheckThrowsNullRefException (fun () -> Array4D.length1 nullArr |> ignore) () [] member this.Length2() = // integer array let intArr = Array4D.create 2 3 2 2 168 let resultInt = Array4D.length2 intArr if resultInt <> 3 then Assert.Fail() // string array let strArr = Array4D.create 2 3 2 2 "enmity" let resultStr = Array4D.length2 strArr if resultStr <> 3 then Assert.Fail() // empty array let eptArr = Array4D.create 0 0 0 0 1 let resultEpt = Array4D.length2 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,,] CheckThrowsNullRefException (fun () -> Array4D.length2 nullArr |> ignore) () [] member this.Length3() = // integer array let intArr = Array4D.create 2 3 5 0 168 let resultInt = Array4D.length3 intArr if resultInt <> 5 then Assert.Fail() // string array let strArr = Array4D.create 2 3 5 0 "enmity" let resultStr = Array4D.length3 strArr if resultStr <> 5 then Assert.Fail() // empty array let eptArr = Array4D.create 0 0 0 0 1 let resultEpt = Array4D.length3 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,,] CheckThrowsNullRefException (fun () -> Array4D.length3 nullArr |> ignore) () [] member this.Length4() = // integer array let intArr = Array4D.create 2 3 5 5 168 let resultInt = Array4D.length4 intArr if resultInt <> 5 then Assert.Fail() // string array let strArr = Array4D.create 2 3 5 5 "enmity" let resultStr = Array4D.length4 strArr if resultStr <> 5 then Assert.Fail() // empty array let eptArr = Array4D.create 0 0 0 0 1 let resultEpt = Array4D.length4 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,,] CheckThrowsNullRefException (fun () -> Array4D.length4 nullArr |> ignore) () [] member this.Set() = // integer array let intArr = Array4D.init 2 3 2 2 (fun i j k l -> i*1000 + j*100 + k*10 + l) Assert.IsFalse(intArr.[1,1,1,1] = -1) Array4D.set intArr 1 1 1 1 -1 Assert.IsTrue(intArr.[1,1,1,1] = -1) // string array let strArr = Array4D.init 2 3 2 2 (fun i j k l -> i.ToString() + "-" + j.ToString()+ "-" + k.ToString() + "-" + l.ToString()) Assert.IsFalse(strArr.[1,1,1,1] = "custom") Array4D.set strArr 1 1 1 1 "custom" Assert.IsTrue(strArr.[1,1,1,1] = "custom") // Out of bounds checks CheckThrowsIndexOutRangException(fun () -> Array4D.set strArr 2 0 0 0 "out of bounds") CheckThrowsIndexOutRangException(fun () -> Array4D.set strArr 0 3 0 0 "out of bounds") CheckThrowsIndexOutRangException(fun () -> Array4D.set strArr 0 0 2 0 "out of bounds") CheckThrowsIndexOutRangException(fun () -> Array4D.set strArr 0 0 0 2 "out of bounds") // empty array let emptArr = Array4D.create 0 0 0 0 'z' CheckThrowsIndexOutRangException(fun () -> Array4D.set emptArr 0 0 0 0 'a') // null array let nullArr = null : string[,,,] CheckThrowsNullRefException (fun () -> Array4D.set nullArr 0 0 0 0 "") () [] member this.ZeroCreate() = let intArr : int[,,,] = Array4D.zeroCreate 2 3 2 2 if Array4D.get intArr 1 1 1 1 <> 0 then Assert.Fail() let structArray : DateTime[,,,] = Array4D.zeroCreate 1 1 1 1 let defaultVal = new DateTime() Assert.IsTrue(Array4D.get structArray 0 0 0 0 = defaultVal) let strArr : string[,,,] = Array4D.zeroCreate 2 3 2 2 for i in 0 .. 1 do for j in 0 .. 2 do for k in 0 .. 1 do for l in 0 .. 1 do Assert.AreEqual(null, strArr.[i, j, k, l]) // Test invalid values CheckThrowsArgumentException(fun () -> Array4D.zeroCreate -1 1 1 1 |> ignore) CheckThrowsArgumentException(fun () -> Array4D.zeroCreate 1 -1 1 1 |> ignore) CheckThrowsArgumentException(fun () -> Array4D.zeroCreate 1 1 -1 1 |> ignore) CheckThrowsArgumentException(fun () -> Array4D.zeroCreate 1 1 1 -1 |> ignore) () ././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array2Module.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array2Module0000775000175000017500000005022512260314606032133 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Array2D module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer array (value type) * String array (reference type) * Empty array (0 elements) * Null array (null) *) [] type Array2Module() = [] member this.Base1() = // integer array let intArr = Array2D.init 2 10 (fun i j -> let arg = (System.Math.PI / 10.0) * float j if i = 0 then System.Math.Sin(arg) else System.Math.Cos(arg)) let resultInt = Array2D.base1 intArr if resultInt <> 0 then Assert.Fail() #if FX_NO_BASED_ARRAYS #else // string array let strArr = Array2D.createBased 0 0 2 3 "goodboy" let resultStr = Array2D.base1 strArr if resultStr <> 0 then Assert.Fail() #endif // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.base1 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> Array2D.base1 nullArr |> ignore) () [] member this.Base2() = // integer array let intArr = Array2D.init 2 10 (fun i j -> let arg = (System.Math.PI / 10.0) * float j if i = 0 then System.Math.Sin(arg) else System.Math.Cos(arg)) let resultInt = Array2D.base2 intArr if resultInt <> 0 then Assert.Fail() #if FX_NO_BASED_ARRAYS #else // string array let strArr = Array2D.createBased 0 0 2 3 "goodboy" let resultStr = Array2D.base2 strArr if resultStr <> 0 then Assert.Fail() #endif // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.base2 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> Array2D.base2 nullArr |> ignore) #if FX_NO_BASED_ARRAYS #else // Verify printing format of non-zero based arrays let v : int[,] = Array2D.createBased 10 1 3 4 2 let actual = (sprintf "%A" v).Replace("\r","").Replace("\n","") let expected = "[bound1=10 bound2=1 [2; 2; 2; 2] [2; 2; 2; 2] [2; 2; 2; 2]]" Assert.AreEqual(expected, actual) #endif () [] member this.Blit() = // integer array let intArr = Array2D.init 2 3 (fun i j -> let arg = (System.Math.PI / 10.0) * float j if i = 0 then System.Math.Sin(arg) else System.Math.Cos(arg)) let intArr2 = Array2D.create 2 3 8.8 let resultInt = Array2D.blit intArr 0 0 intArr2 0 0 2 2 if intArr2.[1,1] <> 0.95105651629515353 then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) let strArr2 = Array2D.create 2 3 "" let resultStr = Array2D.blit strArr 0 0 strArr2 0 0 2 3 if strArr2.[1,1] <> "1-1" then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let eptArr2 = Array2D.create 0 0 1 let resultEpt = Array2D.blit eptArr 0 0 eptArr2 0 0 0 0 if eptArr2 <> eptArr then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.blit nullArr 0 0 nullArr 0 0 0 0 |> ignore) // src1 < 0 CheckThrowsArgumentException(fun () -> Array2D.blit intArr -1 1 intArr2 1 1 2 2 |> ignore) // src2 < 0 CheckThrowsArgumentException(fun () -> Array2D.blit intArr 1 -1 intArr2 1 1 2 2 |> ignore) // dest1 < 0 CheckThrowsArgumentException(fun () -> Array2D.blit intArr 1 1 intArr2 -1 1 2 2 |> ignore) // dest2 < 0 CheckThrowsArgumentException(fun () -> Array2D.blit intArr 1 1 intArr2 1 -1 2 2 |> ignore) // src1 + len1 > Length1 src CheckThrowsArgumentException(fun () -> Array2D.blit intArr 10 0 intArr2 0 0 2 2 |> ignore) // src2 + len2 > Length2 src CheckThrowsArgumentException(fun () ->Array2D.blit intArr 0 10 intArr2 0 0 2 2 |> ignore) // dest1 + len1 > Length1 dest CheckThrowsArgumentException(fun () -> Array2D.blit intArr 0 0 intArr2 10 0 2 2 |> ignore) // dest2 + len2 > Length2 dest CheckThrowsArgumentException(fun () -> Array2D.blit intArr 0 0 intArr2 0 10 2 2 |> ignore) () #if FX_NO_BASED_ARRAYS #else [] member this.BlitWithNonZeroBase() = let a = Array2D.createBased 1 1 3 3 0 a.[1,1] <- 11 a.[2,2] <- 22 a.[3,3] <- 33 let b = Array2D.createBased 1 1 3 3 0 Array2D.blit a 1 1 b 2 2 2 2 let res = Array2D.createBased 1 1 3 3 0 res.[2,2] <- 11 res.[3,3] <- 22 if b <> res then Assert.Fail() let b = Array2D.createBased 1 1 3 3 0 Array2D.blit a 1 1 b 1 1 2 2 let res = Array2D.createBased 1 1 3 3 0 res.[1,1] <- 11 res.[2,2] <- 22 if b <> res then Assert.Fail() let b = Array2D.createBased 1 1 3 3 0 Array2D.blit a 2 2 b 1 1 2 2 let res = Array2D.createBased 1 1 3 3 0 res.[1,1] <- 22 res.[2,2] <- 33 if b <> res then Assert.Fail() let b = Array2D.createBased 1 1 3 3 0 Array2D.blit a 1 1 b 1 1 3 3 let res = Array2D.createBased 1 1 3 3 0 res.[1,1] <- 11 res.[2,2] <- 22 res.[3,3] <- 33 if b <> res then Assert.Fail() let b = Array2D.createBased 1 1 3 3 0 CheckThrowsArgumentException(fun () -> Array2D.blit a 1 1 b 3 3 2 2 |> ignore) let b = Array2D.createBased 1 1 3 3 0 CheckThrowsArgumentException(fun () -> Array2D.blit a 1 1 b 0 0 2 2 |> ignore) let b = Array2D.createBased 1 1 3 3 0 CheckThrowsArgumentException(fun () -> Array2D.blit a 0 0 b 1 1 2 2 |> ignore) let b = Array2D.createBased 1 1 3 3 0 CheckThrowsArgumentException(fun () -> Array2D.blit a 3 3 b 1 1 2 2 |> ignore) let b = Array2D.createBased 1 1 3 3 0 CheckThrowsArgumentException(fun () -> Array2D.blit a 1 1 b 1 1 4 4 |> ignore) () #endif [] member this.Copy() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = Array2D.copy intArr if resultInt <> intArr then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = Array2D.copy strArr if resultStr <> strArr then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.copy eptArr if resultEpt <> eptArr then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.copy nullArr |> ignore) () [] member this.Create() = // integer array let intArr = Array2D.init 2 3 (fun i j -> 100) let resultInt = Array2D.create 2 3 100 if resultInt <> intArr then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> "goodboy") let resultStr = Array2D.create 2 3 "goodboy" if resultStr <> strArr then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.create 0 0 1 if resultEpt <> eptArr then Assert.Fail() () #if FX_NO_BASED_ARRAYS #else [] member this.createBased() = // integer array let intArr = Array2D.create 2 3 100 let resultInt = Array2D.createBased 0 0 2 3 100 if resultInt <> intArr then Assert.Fail() // string array let strArr = Array2D.create 2 3 "goodboy" let resultStr = Array2D.createBased 0 0 2 3 "goodboy" if resultStr <> strArr then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.createBased 0 0 0 0 1 if resultEpt <> eptArr then Assert.Fail() () #endif [] member this.Get() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = intArr.[1,1] if resultInt <> 101 then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = strArr.[1,1] if resultStr <> "1-1" then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> nullArr.[2,2] |> ignore) () [] member this.GetAndSetAPI() = let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = Array2D.get intArr 1 1 Assert.AreEqual(101, resultInt) Array2D.set intArr 1 1 1 let resultInt = Array2D.get intArr 1 1 Assert.AreEqual(1, resultInt) () [] member this.Init() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) if intArr.[1,1] <> 101 then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) if strArr.[1,1] <> "1-1" then Assert.Fail() () #if FX_NO_BASED_ARRAYS #else [] member this.Init_Based() = // integer array let intArr = Array2D.initBased 1 1 2 3 (fun i j -> i*100 + j) if intArr.[2,2] <> 202 then Assert.Fail() // string array let strArr = Array2D.initBased 1 1 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) if strArr.[2,2] <> "2-2" then Assert.Fail() () #endif [] member this.Iter() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = ref 0 let funInt (x:int) = resultInt := !resultInt + x () Array2D.iter funInt intArr if !resultInt <> 306 then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = ref "" let funStr (x:string) = resultStr := (!resultStr) + x + "," () Array2D.iter funStr strArr if !resultStr <> "0-0,0-1,0-2,1-0,1-1,1-2," then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.iter funStr nullArr |> ignore) () #if FX_NO_BASED_ARRAYS #else [] member this.IterNonZeroBased() = let a = Array2D.createBased 1 5 10 10 1 let result = ref 0 a |> Array2D.iter (fun n -> result := !result + n) if !result <> 100 then Assert.Fail() result := 0 a |> Array2D.iteri (fun i j x -> result := !result + i + j + x) if !result <> 1600 then Assert.Fail() () #endif [] member this.Iteri() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = ref 0 let funInt (x:int) (y:int) (z:int) = resultInt := !resultInt + x + y + z () Array2D.iteri funInt intArr if !resultInt <> 315 then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = ref "" let funStr (x:int) (y:int) (z:string) = resultStr := (!resultStr) + "[" + x.ToString() + "," + y.ToString() + "]" + "=" + z + "; " () Array2D.iteri funStr strArr if !resultStr <> "[0,0]=0-0; [0,1]=0-1; [0,2]=0-2; [1,0]=1-0; [1,1]=1-1; [1,2]=1-2; " then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.iteri funStr nullArr |> ignore) () [] member this.Length1() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = Array2D.length1 intArr if resultInt <> 2 then Assert.Fail() // string array let strArr = Array2D.init 10 3 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = Array2D.length1 strArr if resultStr <> 10 then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.length1 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> Array2D.length1 nullArr |> ignore) () [] member this.Length2() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let resultInt = Array2D.length2 intArr if resultInt <> 3 then Assert.Fail() // string array let strArr = Array2D.init 2 8 (fun i j -> i.ToString() + "-" + j.ToString()) let resultStr = Array2D.length2 strArr if resultStr <> 8 then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.length2 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> Array2D.length2 nullArr |> ignore) () [] member this.Map() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let funInt x = x.ToString() let resultInt = Array2D.map funInt intArr if resultInt <> (Array2D.init 2 3 (fun i j -> (i*100 + j).ToString())) then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> "goodboy") let funStr (x:string) = x.ToUpper() let resultStr = Array2D.map funStr strArr if resultStr <> Array2D.create 2 3 "GOODBOY" then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.map funInt eptArr if resultEpt <> Array2D.create 0 0 "" then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.map funStr nullArr |> ignore) () [] member this.Mapi() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) let funInt x y z = x+y+z let resultInt = Array2D.mapi funInt intArr if resultInt <> (Array2D.init 2 3 (fun i j -> i*100 + j + i + j)) then Assert.Fail() // string array let strArr = Array2D.init 2 3 (fun i j -> "goodboy") let funStr (x:int) (y:int) (z:string) = x.ToString() + y.ToString() + z.ToUpper() let resultStr = Array2D.mapi funStr strArr if resultStr <> Array2D.init 2 3 (fun i j -> i.ToString() + j.ToString() + "GOODBOY") then Assert.Fail() // empty array let eptArr = Array2D.create 0 0 1 let resultEpt = Array2D.mapi funInt eptArr if resultEpt <> Array2D.create 0 0 1 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.mapi funStr nullArr |> ignore) () #if FX_NO_BASED_ARRAYS #else [] member this.Rebase() = // integer array let intArr = Array2D.createBased 2 3 2 3 168 let resultInt = Array2D.rebase intArr if resultInt <> Array2D.createBased 0 0 2 3 168 then Assert.Fail() // string array let strArr = Array2D.createBased 2 3 2 3 "gorilla" let resultStr = Array2D.rebase strArr if resultStr <> Array2D.createBased 0 0 2 3 "gorilla" then Assert.Fail() // empty array let eptArr = Array2D.createBased 2 3 0 0 1 let resultEpt = Array2D.rebase eptArr if resultEpt <> Array2D.createBased 0 0 0 0 1 then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsArgumentNullException (fun () -> Array2D.rebase nullArr |> ignore) () #endif [] member this.Set() = // integer array let intArr = Array2D.init 2 3 (fun i j -> i*100 + j) intArr.[1,1] <- 8888 if intArr.[1,1] <> 8888 then Assert.Fail() // string array let strArr = Array2D.init 2 8 (fun i j -> i.ToString() + "-" + j.ToString()) strArr.[1,1] <- "grape" if strArr.[1,1] <> "grape" then Assert.Fail() // null array let nullArr = null:string[,] CheckThrowsNullRefException (fun () -> (nullArr.[0,0] <- "") |> ignore) () [] member this.ZeroCreate() = // integer array let intArr = Array2D.zeroCreate 2 3 if intArr <> Array2D.create 2 3 0 then Assert.Fail() // string array let strArr = Array2D.zeroCreate 2 3 if strArr <> Array2D.create 2 3 null then Assert.Fail() // invalid arguments CheckThrowsArgumentException (fun () -> Array2D.zeroCreate -1 2 |> ignore) CheckThrowsArgumentException (fun () -> Array2D.zeroCreate 1 -2 |> ignore) () // Note: This is a top level primitive, not in the Array2D module [] member this.array2D() = let m1 : int[,] = array2D [] if m1.GetLength(0) <> 0 then Assert.Fail() if m1.GetLength(1) <> 0 then Assert.Fail() let m1arr :int[,] = array2D [||] if m1 <> m1arr then Assert.Fail() let m2 : int[,] = array2D [[]] if m2.GetLength(0) <> 1 then Assert.Fail() if m2.GetLength(1) <> 0 then Assert.Fail() let m2arr :int[,] = array2D [|[||]|] if m2 <> m2arr then Assert.Fail() let m3 = array2D [[1]] if m3.GetLength(0) <> 1 then Assert.Fail() if m3.GetLength(1) <> 1 then Assert.Fail() if m3.[0,0] <> 1 then Assert.Fail() let m3arr = array2D [[1]] if m3 <> m3arr then Assert.Fail() let m6lislis = array2D [[1;2]; [3;4]] let m6arrarr = array2D [|[|1;2|]; [|3;4|]|] let m6arrlis = array2D [|[1;2]; [3;4]|] let m6lisarr = array2D [[|1;2|]; [|3;4|]] if m6lislis <> m6arrarr then Assert.Fail() if m6lislis <> m6arrlis then Assert.Fail() if m6lislis <> m6lisarr then Assert.Fail() let m7 = array2D [for i in 0..1000 do yield [for j in 0..1000 do yield i*j] ] let matrix :int[,] = array2D [[1;2;3]; [2;3;4]] if matrix.GetLength(0) <> 2 then Assert.Fail() if matrix.GetLength(1) <> 3 then Assert.Fail() if matrix.[0,0] <> 1 then Assert.Fail() if matrix.[1,2] <> 4 then Assert.Fail() CheckThrowsArgumentException( fun () -> ignore (array2D [[1;2]; [2]])) CheckThrowsArgumentException( fun () -> ignore (array2D [[1;2]; [2;3]; [4]])) CheckThrowsArgumentNullException( fun () -> ignore (array2D null)) CheckThrowsArgumentException( fun () -> ignore (array2D [null])) CheckThrowsArgumentException( fun () -> ignore (array2D [[|1|];null])) let m16 :string[,] = array2D [[null]] if m16.[0,0] <> null then Assert.Fail() ././@LongLink0000644000000000000000000000014612266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/SeqModule2.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/SeqModule2.f0000775000175000017500000011227012260314606032030 0ustar chrischris namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx [] type SeqModule2() = [] member this.Hd() = let IntSeq = seq { for i in 0 .. 9 do yield i } if Seq.head IntSeq <> 0 then Assert.Fail() // string Seq let strSeq = seq ["first"; "second"; "third"] if Seq.head strSeq <> "first" then Assert.Fail() // Empty Seq let emptySeq = Seq.empty CheckThrowsArgumentException ( fun() -> Seq.head emptySeq) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.head nullSeq) () [] member this.Last() = let IntSeq = seq { for i in 0 .. 9 do yield i } if Seq.last IntSeq <> 9 then Assert.Fail() // string Seq let strSeq = seq ["first"; "second"; "third"] if Seq.last strSeq <> "third" then Assert.Fail() // Empty Seq let emptySeq = Seq.empty CheckThrowsArgumentException ( fun() -> Seq.last emptySeq) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.last nullSeq) () [] member this.ExactlyOne() = let IntSeq = seq { for i in 7 .. 7 do yield i } if Seq.exactlyOne IntSeq <> 7 then Assert.Fail() // string Seq let strSeq = seq ["second"] if Seq.exactlyOne strSeq <> "second" then Assert.Fail() // Empty Seq let emptySeq = Seq.empty CheckThrowsArgumentException ( fun() -> Seq.exactlyOne emptySeq) // non-singleton Seq let emptySeq = Seq.empty CheckThrowsArgumentException ( fun() -> Seq.exactlyOne [ 0 .. 1 ] |> ignore ) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.exactlyOne nullSeq) () [] member this.Init() = let funcInt x = x let init_finiteInt = Seq.init 9 funcInt let expectedIntSeq = seq [ 0..8] VerifySeqsEqual expectedIntSeq init_finiteInt // string Seq let funcStr x = x.ToString() let init_finiteStr = Seq.init 5 funcStr let expectedStrSeq = seq ["0";"1";"2";"3";"4"] VerifySeqsEqual expectedStrSeq init_finiteStr // null Seq let funcNull x = null let init_finiteNull = Seq.init 3 funcNull let expectedNullSeq = seq [ null;null;null] VerifySeqsEqual expectedNullSeq init_finiteNull () [] member this.InitInfinite() = let funcInt x = x let init_infiniteInt = Seq.initInfinite funcInt let resultint = Seq.find (fun x -> x =100) init_infiniteInt Assert.AreEqual(100,resultint) // string Seq let funcStr x = x.ToString() let init_infiniteStr = Seq.initInfinite funcStr let resultstr = Seq.find (fun x -> x = "100") init_infiniteStr Assert.AreEqual("100",resultstr) [] member this.IsEmpty() = //seq int let seqint = seq [1;2;3] let is_emptyInt = Seq.isEmpty seqint Assert.IsFalse(is_emptyInt) //seq str let seqStr = seq["first";"second"] let is_emptyStr = Seq.isEmpty seqStr Assert.IsFalse(is_emptyInt) //seq empty let seqEmpty = Seq.empty let is_emptyEmpty = Seq.isEmpty seqEmpty Assert.IsTrue(is_emptyEmpty) //seq null let seqnull:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.isEmpty seqnull |> ignore) () [] member this.Iter() = //seq int let seqint = seq [ 1..3] let cacheint = ref 0 let funcint x = cacheint := !cacheint + x Seq.iter funcint seqint Assert.AreEqual(6,!cacheint) //seq str let seqStr = seq ["first";"second"] let cachestr =ref "" let funcstr x = cachestr := !cachestr+x Seq.iter funcstr seqStr Assert.AreEqual("firstsecond",!cachestr) // empty array let emptyseq = Seq.empty let resultEpt = ref 0 Seq.iter (fun x -> Assert.Fail()) emptyseq // null seqay let nullseq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.iter funcint nullseq |> ignore) () [] member this.Iter2() = //seq int let seqint = seq [ 1..3] let cacheint = ref 0 let funcint x y = cacheint := !cacheint + x+y Seq.iter2 funcint seqint seqint Assert.AreEqual(12,!cacheint) //seq str let seqStr = seq ["first";"second"] let cachestr =ref "" let funcstr x y = cachestr := !cachestr+x+y Seq.iter2 funcstr seqStr seqStr Assert.AreEqual("firstfirstsecondsecond",!cachestr) // empty array let emptyseq = Seq.empty let resultEpt = ref 0 Seq.iter2 (fun x y-> Assert.Fail()) emptyseq emptyseq // null seqay let nullseq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.iter2 funcint nullseq nullseq |> ignore) () [] member this.Iteri() = // seq int let seqint = seq [ 1..10] let cacheint = ref 0 let funcint x y = cacheint := !cacheint + x+y Seq.iteri funcint seqint Assert.AreEqual(100,!cacheint) // seq str let seqStr = seq ["first";"second"] let cachestr =ref 0 let funcstr (x:int) (y:string) = cachestr := !cachestr+ x + y.Length Seq.iteri funcstr seqStr Assert.AreEqual(12,!cachestr) // empty array let emptyseq = Seq.empty let resultEpt = ref 0 Seq.iteri funcint emptyseq Assert.AreEqual(0,!resultEpt) // null seqay let nullseq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.iteri funcint nullseq |> ignore) () [] member this.Length() = // integer seq let resultInt = Seq.length {1..8} if resultInt <> 8 then Assert.Fail() // string Seq let resultStr = Seq.length (seq ["Lists"; "are"; "commonly" ; "list" ]) if resultStr <> 4 then Assert.Fail() // empty Seq let resultEpt = Seq.length Seq.empty if resultEpt <> 0 then Assert.Fail() // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.length nullSeq |> ignore) () [] member this.Map() = // integer Seq let funcInt x = match x with | _ when x % 2 = 0 -> 10*x | _ -> x let resultInt = Seq.map funcInt { 1..10 } let expectedint = seq [1;20;3;40;5;60;7;80;9;100] VerifySeqsEqual expectedint resultInt // string Seq let funcStr (x:string) = x.ToLower() let resultStr = Seq.map funcStr (seq ["Lists"; "Are"; "Commonly" ; "List" ]) let expectedSeq = seq ["lists"; "are"; "commonly" ; "list"] VerifySeqsEqual expectedSeq resultStr // empty Seq let resultEpt = Seq.map funcInt Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.map funcStr nullSeq |> ignore) () [] member this.Map2() = // integer Seq let funcInt x y = x+y let resultInt = Seq.map2 funcInt { 1..10 } {2..2..20} let expectedint = seq [3;6;9;12;15;18;21;24;27;30] VerifySeqsEqual expectedint resultInt // string Seq let funcStr (x:int) (y:string) = x+y.Length let resultStr = Seq.map2 funcStr (seq[3;6;9;11]) (seq ["Lists"; "Are"; "Commonly" ; "List" ]) let expectedSeq = seq [8;9;17;15] VerifySeqsEqual expectedSeq resultStr // empty Seq let resultEpt = Seq.map2 funcInt Seq.empty Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq let nullSeq:seq<'a> = null let validSeq = seq [1] CheckThrowsArgumentNullException (fun () -> Seq.map2 funcInt nullSeq validSeq |> ignore) () member private this.MapWithSideEffectsTester (map : (int -> int) -> seq -> seq) expectExceptions = let i = ref 0 let f x = i := !i + 1; x*x let e = ([1;2] |> map f).GetEnumerator() if expectExceptions then CheckThrowsInvalidOperationExn (fun _ -> e.Current|>ignore) Assert.AreEqual(0, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(2, !i) if expectExceptions then CheckThrowsInvalidOperationExn (fun _ -> e.Current |> ignore) Assert.AreEqual(2, !i) i := 0 let e = ([] |> map f).GetEnumerator() if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) member private this.MapWithExceptionTester (map : (int -> int) -> seq -> seq) = let raiser x = if x > 0 then raise(NotSupportedException()) else x let e = (map raiser [0; 1]).GetEnumerator() Assert.IsTrue(e.MoveNext()) // should not throw Assert.AreEqual(0, e.Current) CheckThrowsNotSupportedException(fun _ -> e.MoveNext() |> ignore) Assert.AreEqual(0, e.Current) // should not throw [] member this.MapWithSideEffects () = this.MapWithSideEffectsTester Seq.map true [] member this.MapWithException () = this.MapWithExceptionTester Seq.map [] member this.SingletonCollectWithSideEffects () = this.MapWithSideEffectsTester (fun f-> Seq.collect (f >> Seq.singleton)) true [] member this.SingletonCollectWithException () = this.MapWithExceptionTester (fun f-> Seq.collect (f >> Seq.singleton)) #if FX_NO_LINQ #else [] member this.SystemLinqSelectWithSideEffects () = this.MapWithSideEffectsTester (fun f s -> System.Linq.Enumerable.Select(s, Func<_,_>(f))) false [] member this.SystemLinqSelectWithException () = this.MapWithExceptionTester (fun f s -> System.Linq.Enumerable.Select(s, Func<_,_>(f))) #endif [] member this.MapiWithSideEffects () = let i = ref 0 let f _ x = i := !i + 1; x*x let e = ([1;2] |> Seq.mapi f).GetEnumerator() CheckThrowsInvalidOperationExn (fun _ -> e.Current|>ignore) Assert.AreEqual(0, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(2, !i) CheckThrowsInvalidOperationExn (fun _ -> e.Current|>ignore) Assert.AreEqual(2, !i) i := 0 let e = ([] |> Seq.mapi f).GetEnumerator() if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) [] member this.Map2WithSideEffects () = let i = ref 0 let f x y = i := !i + 1; x*x let e = (Seq.map2 f [1;2] [1;2]).GetEnumerator() CheckThrowsInvalidOperationExn (fun _ -> e.Current|>ignore) Assert.AreEqual(0, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) let _ = e.Current Assert.AreEqual(1, !i) if not (e.MoveNext()) then Assert.Fail() Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) let _ = e.Current Assert.AreEqual(2, !i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(2,!i) CheckThrowsInvalidOperationExn (fun _ -> e.Current|>ignore) Assert.AreEqual(2, !i) i := 0 let e = (Seq.map2 f [] []).GetEnumerator() if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) if e.MoveNext() then Assert.Fail() Assert.AreEqual(0,!i) [] member this.Collect() = // integer Seq let funcInt x = seq [x+1] let resultInt = Seq.collect funcInt { 1..10 } let expectedint = seq {2..11} VerifySeqsEqual expectedint resultInt #if FX_NO_CHAR_PARSE #else // string Seq let funcStr (y:string) = y+"ist" let resultStr = Seq.collect funcStr (seq ["L"]) let expectedSeq = seq ['L';'i';'s';'t'] VerifySeqsEqual expectedSeq resultStr #endif // empty Seq let resultEpt = Seq.collect funcInt Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.collect funcInt nullSeq |> ignore) () [] member this.Mapi() = // integer Seq let funcInt x y = x+y let resultInt = Seq.mapi funcInt { 10..2..20 } let expectedint = seq [10;13;16;19;22;25] VerifySeqsEqual expectedint resultInt // string Seq let funcStr (x:int) (y:string) =x+y.Length let resultStr = Seq.mapi funcStr (seq ["Lists"; "Are"; "Commonly" ; "List" ]) let expectedStr = seq [5;4;10;7] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.mapi funcInt Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.mapi funcInt nullSeq |> ignore) () [] member this.Max() = // integer Seq let resultInt = Seq.max { 10..20 } Assert.AreEqual(20,resultInt) // string Seq let resultStr = Seq.max (seq ["Lists"; "Are"; "MaxString" ; "List" ]) Assert.AreEqual("MaxString",resultStr) // empty Seq CheckThrowsArgumentException(fun () -> Seq.max ( Seq.empty : seq) |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.max nullSeq |> ignore) () [] member this.MaxBy() = // integer Seq let funcInt x = x % 8 let resultInt = Seq.maxBy funcInt { 2..2..20 } Assert.AreEqual(6,resultInt) // string Seq let funcStr (x:string) =x.Length let resultStr = Seq.maxBy funcStr (seq ["Lists"; "Are"; "Commonly" ; "List" ]) Assert.AreEqual("Commonly",resultStr) // empty Seq CheckThrowsArgumentException (fun () -> Seq.maxBy funcInt (Seq.empty : seq) |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.maxBy funcInt nullSeq |> ignore) () [] member this.MinBy() = // integer Seq let funcInt x = x % 8 let resultInt = Seq.minBy funcInt { 2..2..20 } Assert.AreEqual(8,resultInt) // string Seq let funcStr (x:string) =x.Length let resultStr = Seq.minBy funcStr (seq ["Lists"; "Are"; "Commonly" ; "List" ]) Assert.AreEqual("Are",resultStr) // empty Seq CheckThrowsArgumentException (fun () -> Seq.minBy funcInt (Seq.empty : seq) |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.minBy funcInt nullSeq |> ignore) () [] member this.Min() = // integer Seq let resultInt = Seq.min { 10..20 } Assert.AreEqual(10,resultInt) // string Seq let resultStr = Seq.min (seq ["Lists"; "Are"; "minString" ; "List" ]) Assert.AreEqual("Are",resultStr) // empty Seq CheckThrowsArgumentException (fun () -> Seq.min (Seq.empty : seq) |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.min nullSeq |> ignore) () [] member this.Nth() = // Negative index for i = -1 downto -10 do CheckThrowsArgumentException (fun () -> Seq.nth i { 10 .. 20 } |> ignore) // Out of range for i = 11 to 20 do CheckThrowsArgumentException (fun () -> Seq.nth i { 10 .. 20 } |> ignore) // integer Seq let resultInt = Seq.nth 3 { 10..20 } Assert.AreEqual(13, resultInt) // string Seq let resultStr = Seq.nth 3 (seq ["Lists"; "Are"; "nthString" ; "List" ]) Assert.AreEqual("List",resultStr) // empty Seq CheckThrowsArgumentException(fun () -> Seq.nth 0 (Seq.empty : seq) |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () ->Seq.nth 3 nullSeq |> ignore) () [] member this.Of_Array() = // integer Seq let resultInt = Seq.ofArray [|1..10|] let expectedInt = {1..10} VerifySeqsEqual expectedInt resultInt // string Seq let resultStr = Seq.ofArray [|"Lists"; "Are"; "ofArrayString" ; "List" |] let expectedStr = seq ["Lists"; "Are"; "ofArrayString" ; "List" ] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.ofArray [| |] VerifySeqsEqual resultEpt Seq.empty () [] member this.Of_List() = // integer Seq let resultInt = Seq.ofList [1..10] let expectedInt = {1..10} VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.ofList ["Lists"; "Are"; "ofListString" ; "List" ] let expectedStr = seq ["Lists"; "Are"; "ofListString" ; "List" ] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.ofList [] VerifySeqsEqual resultEpt Seq.empty () [] member this.Pairwise() = // integer Seq let resultInt = Seq.pairwise {1..3} let expectedInt = seq [1,2;2,3] VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.pairwise ["str1"; "str2";"str3" ] let expectedStr = seq ["str1","str2";"str2","str3"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.pairwise [] VerifySeqsEqual resultEpt Seq.empty () [] member this.Reduce() = // integer Seq let resultInt = Seq.reduce (fun x y -> x/y) (seq [5*4*3*2; 4;3;2;1]) Assert.AreEqual(5,resultInt) // string Seq let resultStr = Seq.reduce (fun (x:string) (y:string) -> x.Remove(0,y.Length)) (seq ["ABCDE";"A"; "B"; "C" ; "D" ]) Assert.AreEqual("E",resultStr) // empty Seq CheckThrowsArgumentException (fun () -> Seq.reduce (fun x y -> x/y) Seq.empty |> ignore) // null Seq let nullSeq : seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.reduce (fun (x:string) (y:string) -> x.Remove(0,y.Length)) nullSeq |> ignore) () [] member this.Scan() = // integer Seq let funcInt x y = x+y let resultInt = Seq.scan funcInt 9 {1..10} let expectedInt = seq [9;10;12;15;19;24;30;37;45;54;64] VerifySeqsEqual expectedInt resultInt // string Seq let funcStr x y = x+y let resultStr =Seq.scan funcStr "x" ["str1"; "str2";"str3" ] let expectedStr = seq ["x";"xstr1"; "xstr1str2";"xstr1str2str3"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.scan funcInt 5 Seq.empty VerifySeqsEqual resultEpt (seq [ 5]) // null Seq let seqNull:seq<'a> = null CheckThrowsArgumentNullException(fun() -> Seq.scan funcInt 5 seqNull |> ignore) () [] member this.Singleton() = // integer Seq let resultInt = Seq.singleton 1 let expectedInt = seq [1] VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.singleton "str1" let expectedStr = seq ["str1"] VerifySeqsEqual expectedStr resultStr // null Seq let resultNull = Seq.singleton null let expectedNull = seq [null] VerifySeqsEqual expectedNull resultNull () [] member this.Skip() = // integer Seq let resultInt = Seq.skip 2 (seq [1;2;3;4]) let expectedInt = seq [3;4] VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.skip 2 (seq ["str1";"str2";"str3";"str4"]) let expectedStr = seq ["str3";"str4"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.skip 0 Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.skip 1 null |> ignore) () [] member this.Skip_While() = // integer Seq let funcInt x = (x < 3) let resultInt = Seq.skipWhile funcInt (seq [1;2;3;4;5;6]) let expectedInt = seq [3;4;5;6] VerifySeqsEqual expectedInt resultInt // string Seq let funcStr (x:string) = x.Contains(".") let resultStr =Seq.skipWhile funcStr (seq [".";"asdfasdf.asdfasdf";"";"";"";"";"";"";"";"";""]) let expectedStr = seq ["";"";"";"";"";"";"";"";""] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.skipWhile funcInt Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.skipWhile funcInt null |> ignore) () [] member this.Sort() = // integer Seq let resultInt = Seq.sort (seq [1;3;2;4;6;5;7]) let expectedInt = {1..7} VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.sort (seq ["str1";"str3";"str2";"str4"]) let expectedStr = seq ["str1";"str2";"str3";"str4"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.sort Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.sort null |> ignore) () [] member this.SortBy() = // integer Seq let funcInt x = Math.Abs(x-5) let resultInt = Seq.sortBy funcInt (seq [1;2;4;5;7]) let expectedInt = seq [5;4;7;2;1] VerifySeqsEqual expectedInt resultInt // string Seq let funcStr (x:string) = x.IndexOf("key") let resultStr =Seq.sortBy funcStr (seq ["st(key)r";"str(key)";"s(key)tr";"(key)str"]) let expectedStr = seq ["(key)str";"s(key)tr";"st(key)r";"str(key)"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.sortBy funcInt Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.sortBy funcInt null |> ignore) () [] member this.Sum() = // integer Seq let resultInt = Seq.sum (seq [1..10]) Assert.AreEqual(55,resultInt) // float32 Seq let floatSeq = (seq [ 1.2f;3.5f;6.7f ]) let resultFloat = Seq.sum floatSeq if resultFloat <> 11.4f then Assert.Fail() // double Seq let doubleSeq = (seq [ 1.0;8.0 ]) let resultDouble = Seq.sum doubleSeq if resultDouble <> 9.0 then Assert.Fail() // decimal Seq let decimalSeq = (seq [ 0M;19M;19.03M ]) let resultDecimal = Seq.sum decimalSeq if resultDecimal <> 38.03M then Assert.Fail() // empty float32 Seq let emptyFloatSeq = Seq.empty let resultEptFloat = Seq.sum emptyFloatSeq if resultEptFloat <> 0.0f then Assert.Fail() // empty double Seq let emptyDoubleSeq = Seq.empty let resultDouEmp = Seq.sum emptyDoubleSeq if resultDouEmp <> 0.0 then Assert.Fail() // empty decimal Seq let emptyDecimalSeq = Seq.empty let resultDecEmp = Seq.sum emptyDecimalSeq if resultDecEmp <> 0M then Assert.Fail() () [] member this.SumBy() = // integer Seq let resultInt = Seq.sumBy int (seq [1..10]) Assert.AreEqual(55,resultInt) // float32 Seq let floatSeq = (seq [ 1.2f;3.5f;6.7f ]) let resultFloat = Seq.sumBy float32 floatSeq if resultFloat <> 11.4f then Assert.Fail() // double Seq let doubleSeq = (seq [ 1.0;8.0 ]) let resultDouble = Seq.sumBy double doubleSeq if resultDouble <> 9.0 then Assert.Fail() // decimal Seq let decimalSeq = (seq [ 0M;19M;19.03M ]) let resultDecimal = Seq.sumBy decimal decimalSeq if resultDecimal <> 38.03M then Assert.Fail() // empty float32 Seq let emptyFloatSeq = Seq.empty let resultEptFloat = Seq.sumBy float32 emptyFloatSeq if resultEptFloat <> 0.0f then Assert.Fail() // empty double Seq let emptyDoubleSeq = Seq.empty let resultDouEmp = Seq.sumBy double emptyDoubleSeq if resultDouEmp <> 0.0 then Assert.Fail() // empty decimal Seq let emptyDecimalSeq = Seq.empty let resultDecEmp = Seq.sumBy decimal emptyDecimalSeq if resultDecEmp <> 0M then Assert.Fail() () [] member this.Take() = // integer Seq let resultInt = Seq.take 3 (seq [1;2;4;5;7]) let expectedInt = seq [1;2;4] VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.take 2(seq ["str1";"str2";"str3";"str4"]) let expectedStr = seq ["str1";"str2"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.take 0 Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.take 1 null |> ignore) () [] member this.takeWhile() = // integer Seq let funcInt x = (x < 6) let resultInt = Seq.takeWhile funcInt (seq [1;2;4;5;6;7]) let expectedInt = seq [1;2;4;5] VerifySeqsEqual expectedInt resultInt // string Seq let funcStr (x:string) = (x.Length < 4) let resultStr =Seq.takeWhile funcStr (seq ["a"; "ab"; "abc"; "abcd"; "abcde"]) let expectedStr = seq ["a"; "ab"; "abc"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.takeWhile funcInt Seq.empty VerifySeqsEqual resultEpt Seq.empty // null Seq CheckThrowsArgumentNullException(fun() -> Seq.takeWhile funcInt null |> ignore) () [] member this.To_Array() = // integer Seq let resultInt = Seq.toArray(seq [1;2;4;5;7]) let expectedInt = [|1;2;4;5;7|] Assert.AreEqual(expectedInt,resultInt) // string Seq let resultStr =Seq.toArray (seq ["str1";"str2";"str3"]) let expectedStr = [|"str1";"str2";"str3"|] Assert.AreEqual(expectedStr,resultStr) // empty Seq let resultEpt = Seq.toArray Seq.empty Assert.AreEqual([||],resultEpt) // null Seq CheckThrowsArgumentNullException(fun() -> Seq.toArray null |> ignore) () [] member this.To_List() = // integer Seq let resultInt = Seq.toList (seq [1;2;4;5;7]) let expectedInt = [1;2;4;5;7] Assert.AreEqual(expectedInt,resultInt) // string Seq let resultStr =Seq.toList (seq ["str1";"str2";"str3"]) let expectedStr = ["str1";"str2";"str3"] Assert.AreEqual(expectedStr,resultStr) // empty Seq let resultEpt = Seq.toList Seq.empty Assert.AreEqual([],resultEpt) // null Seq CheckThrowsArgumentNullException(fun() -> Seq.toList null |> ignore) () [] member this.Truncate() = // integer Seq let resultInt = Seq.truncate 3 (seq [1;2;4;5;7]) let expectedInt = [1;2;4] VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.truncate 2 (seq ["str1";"str2";"str3"]) let expectedStr = ["str1";"str2"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.truncate 0 Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq CheckThrowsArgumentNullException(fun() -> Seq.truncate 1 null |> ignore) () [] member this.tryFind() = // integer Seq let resultInt = Seq.tryFind (fun x -> (x%2=0)) (seq [1;2;4;5;7]) Assert.AreEqual(Some(2), resultInt) // integer Seq - None let resultInt = Seq.tryFind (fun x -> (x%2=0)) (seq [1;3;5;7]) Assert.AreEqual(None, resultInt) // string Seq let resultStr = Seq.tryFind (fun (x:string) -> x.Contains("2")) (seq ["str1";"str2";"str3"]) Assert.AreEqual(Some("str2"),resultStr) // string Seq - None let resultStr = Seq.tryFind (fun (x:string) -> x.Contains("2")) (seq ["str1";"str4";"str3"]) Assert.AreEqual(None,resultStr) // empty Seq let resultEpt = Seq.tryFind (fun x -> (x%2=0)) Seq.empty Assert.AreEqual(None,resultEpt) // null Seq CheckThrowsArgumentNullException(fun() -> Seq.tryFind (fun x -> (x%2=0)) null |> ignore) () [] member this.TryFindIndex() = // integer Seq let resultInt = Seq.tryFindIndex (fun x -> (x % 5 = 0)) [8; 9; 10] Assert.AreEqual(Some(2), resultInt) // integer Seq - None let resultInt = Seq.tryFindIndex (fun x -> (x % 5 = 0)) [9;3;11] Assert.AreEqual(None, resultInt) // string Seq let resultStr = Seq.tryFindIndex (fun (x:string) -> x.Contains("2")) ["str1"; "str2"; "str3"] Assert.AreEqual(Some(1),resultStr) // string Seq - None let resultStr = Seq.tryFindIndex (fun (x:string) -> x.Contains("2")) ["str1"; "str4"; "str3"] Assert.AreEqual(None,resultStr) // empty Seq let resultEpt = Seq.tryFindIndex (fun x -> (x%2=0)) Seq.empty Assert.AreEqual(None, resultEpt) // null Seq CheckThrowsArgumentNullException(fun() -> Seq.tryFindIndex (fun x -> (x % 2 = 0)) null |> ignore) () [] member this.Unfold() = // integer Seq let resultInt = Seq.unfold (fun x -> if x = 1 then Some(7,2) else None) 1 VerifySeqsEqual (seq [7]) resultInt // string Seq let resultStr =Seq.unfold (fun (x:string) -> if x.Contains("unfold") then Some("a","b") else None) "unfold" VerifySeqsEqual (seq ["a"]) resultStr () [] member this.Windowed() = // integer Seq let resultInt = Seq.windowed 5 (seq [1..10]) let expectedInt = seq { for i in 1..6 do yield [| i; i+1; i+2; i+3; i+4 |] } VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.windowed 2 (seq ["str1";"str2";"str3";"str4"]) let expectedStr = seq [ [|"str1";"str2"|];[|"str2";"str3"|];[|"str3";"str4"|]] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.windowed 2 Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq CheckThrowsArgumentNullException(fun() -> Seq.windowed 2 null |> ignore) () [] member this.Zip() = // integer Seq let resultInt = Seq.zip (seq [1..7]) (seq [11..17]) let expectedInt = seq { for i in 1..7 do yield i, i+10 } VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.zip (seq ["str3";"str4"]) (seq ["str1";"str2"]) let expectedStr = seq ["str3","str1";"str4","str2"] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.zip Seq.empty Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq CheckThrowsArgumentNullException(fun() -> Seq.zip null null |> ignore) CheckThrowsArgumentNullException(fun() -> Seq.zip null (seq [1..7]) |> ignore) CheckThrowsArgumentNullException(fun() -> Seq.zip (seq [1..7]) null |> ignore) () [] member this.Zip3() = // integer Seq let resultInt = Seq.zip3 (seq [1..7]) (seq [11..17]) (seq [21..27]) let expectedInt = seq { for i in 1..7 do yield i, (i + 10), (i + 20) } VerifySeqsEqual expectedInt resultInt // string Seq let resultStr =Seq.zip3 (seq ["str1";"str2"]) (seq ["str11";"str12"]) (seq ["str21";"str22"]) let expectedStr = seq ["str1","str11","str21";"str2","str12","str22" ] VerifySeqsEqual expectedStr resultStr // empty Seq let resultEpt = Seq.zip3 Seq.empty Seq.empty Seq.empty VerifySeqsEqual Seq.empty resultEpt // null Seq CheckThrowsArgumentNullException(fun() -> Seq.zip3 null null null |> ignore) CheckThrowsArgumentNullException(fun() -> Seq.zip3 null (seq [1..7]) (seq [1..7]) |> ignore) CheckThrowsArgumentNullException(fun() -> Seq.zip3 (seq [1..7]) null (seq [1..7]) |> ignore) CheckThrowsArgumentNullException(fun() -> Seq.zip3 (seq [1..7]) (seq [1..7]) null |> ignore) () [] member this.tryPick() = // integer Seq let resultInt = Seq.tryPick (fun x-> if x = 1 then Some("got") else None) (seq [1..5]) Assert.AreEqual(Some("got"),resultInt) // string Seq let resultStr = Seq.tryPick (fun x-> if x = "Are" then Some("got") else None) (seq ["Lists"; "Are"]) Assert.AreEqual(Some("got"),resultStr) // empty Seq let resultEpt = Seq.tryPick (fun x-> if x = 1 then Some("got") else None) Seq.empty Assert.IsNull(resultEpt) // null Seq let nullSeq : seq<'a> = null let funcNull x = Some(1) CheckThrowsArgumentNullException(fun () -> Seq.tryPick funcNull nullSeq |> ignore) ()././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array3Module.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/Array3Module0000775000175000017500000002726612260314606032145 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Array3D module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer Array3D (value type) * String Array3D (reference type) * Empty Array3D (0 elements) * Null Array3D (null) *) [] type Array3Module() = let VerifyDimensions arr x y z = if Array3D.length1 arr <> x then Assert.Fail("Array3D does not have expected dimensions.") if Array3D.length2 arr <> y then Assert.Fail("Array3D does not have expected dimensions.") if Array3D.length3 arr <> z then Assert.Fail("Array3D does not have expected dimensions.") () [] member this.Create() = // integer array let intArr = Array3D.create 3 4 5 168 if intArr.[1,2,1] <> 168 then Assert.Fail() VerifyDimensions intArr 3 4 5 // string array let strArr = Array3D.create 2 3 4 "foo" if strArr.[1,2,3] <> "foo" then Assert.Fail() VerifyDimensions strArr 2 3 4 // empty array let eptArr1 = Array3D.create 0 0 0 'a' let eptArr2 = Array3D.create 0 0 0 'b' if eptArr1 <> eptArr2 then Assert.Fail() () [] member this.Init() = // integer array let intArr = Array3D.init 3 3 3 (fun i j k -> i*100 + j*10 + k) if intArr.[1,1,1] <> 111 then Assert.Fail() if intArr.[2,2,2] <> 222 then Assert.Fail() VerifyDimensions intArr 3 3 3 // ref array let strArr = Array3D.init 3 3 3 (fun i j k-> (i, j, k)) if strArr.[2,0,1] <> (2, 0, 1) then Assert.Fail() if strArr.[0,1,2] <> (0, 1, 2) then Assert.Fail() VerifyDimensions intArr 3 3 3 () [] member this.Get() = // integer array let intArr = Array3D.init 2 3 2 (fun i j k -> i*100 + j*10 + k) let resultInt = Array3D.get intArr 1 2 0 if resultInt <> 120 then Assert.Fail() // string array let strArr = Array3D.init 2 3 2 (fun i j k-> i.ToString() + "-" + j.ToString() + "-" + k.ToString()) let resultStr = Array3D.get strArr 0 2 1 if resultStr <> "0-2-1" then Assert.Fail() CheckThrowsIndexOutRangException(fun () -> Array3D.get strArr 2 0 0 |> ignore) CheckThrowsIndexOutRangException(fun () -> Array3D.get strArr 0 3 0 |> ignore) CheckThrowsIndexOutRangException(fun () -> Array3D.get strArr 0 0 2 |> ignore) // empty array let emptyArray = Array3D.init 0 0 0 (fun i j k -> Assert.Fail()) CheckThrowsIndexOutRangException (fun () -> Array3D.get emptyArray 1 0 0 |> ignore) CheckThrowsIndexOutRangException (fun () -> Array3D.get emptyArray 0 1 0 |> ignore) CheckThrowsIndexOutRangException (fun () -> Array3D.get emptyArray 0 0 1 |> ignore) // null array let nullArr : string[,,] = null CheckThrowsNullRefException (fun () -> Array3D.get nullArr 1 1 1 |> ignore) () [] member this.Iter() = // integer array let intArr = Array3D.init 2 3 2 (fun i j k -> i*100 + j*10 + k) let resultInt = ref 0 let addToTotal x = resultInt := !resultInt + x Array3D.iter addToTotal intArr Assert.IsTrue(!resultInt = 726) // string array let strArr = Array3D.init 2 3 2 (fun i j k-> i.ToString() + "-" + j.ToString() + "-" + k.ToString()) let resultStr = ref "" let addElement (x:string) = resultStr := (!resultStr) + x + "," Array3D.iter addElement strArr Assert.IsTrue(!resultStr = "0-0-0,0-0-1,0-1-0,0-1-1,0-2-0,0-2-1,1-0-0,1-0-1,1-1-0,1-1-1,1-2-0,1-2-1,") // empty array let emptyArray = Array3D.create 0 0 0 0 Array3D.iter (fun x -> Assert.Fail()) emptyArray // null array let nullArr : string[,,] = null CheckThrowsArgumentNullException(fun () -> Array3D.iter (fun x -> Assert.Fail("Souldn't be called")) nullArr) () [] member this.Iteri() = // integer array let intArr = Array3D.init 2 3 2 (fun i j k -> i*100 + j*10 + k) let resultInt = ref 0 let funInt (x:int) (y:int) (z:int) (a:int) = resultInt := !resultInt + x + y + z + a () Array3D.iteri funInt intArr if !resultInt <> 750 then Assert.Fail() // string array let strArr = Array3D.init 2 3 2 (fun i j k-> i.ToString() + "-" + j.ToString() + "-" + k.ToString()) let resultStr = ref "" let funStr (x:int) (y:int) (z:int) (a:string)= resultStr := (!resultStr) + "[" + x.ToString() + "," + y.ToString()+"," + z.ToString() + "]" + "=" + a + "; " () Array3D.iteri funStr strArr if !resultStr <> "[0,0,0]=0-0-0; [0,0,1]=0-0-1; [0,1,0]=0-1-0; [0,1,1]=0-1-1; [0,2,0]=0-2-0; [0,2,1]=0-2-1; [1,0,0]=1-0-0; [1,0,1]=1-0-1; [1,1,0]=1-1-0; [1,1,1]=1-1-1; [1,2,0]=1-2-0; [1,2,1]=1-2-1; " then Assert.Fail() // empty array let emptyArray = Array3D.create 0 0 0 0 Array3D.iter (fun x -> Assert.Fail()) emptyArray // null array let nullArr = null:string[,,] CheckThrowsArgumentNullException (fun () -> Array3D.iteri funStr nullArr |> ignore) () [] member this.Length1() = // integer array let intArr = Array3D.create 2 3 2 168 let resultInt = Array3D.length1 intArr if resultInt <> 2 then Assert.Fail() // string array let strArr = Array3D.create 2 3 2 "enmity" let resultStr = Array3D.length1 strArr if resultStr <> 2 then Assert.Fail() // empty array let eptArr = Array3D.create 0 0 0 1 let resultEpt = Array3D.length1 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,] CheckThrowsNullRefException (fun () -> Array3D.length1 nullArr |> ignore) () [] member this.Length2() = // integer array let intArr = Array3D.create 2 3 2 168 let resultInt = Array3D.length2 intArr if resultInt <> 3 then Assert.Fail() // string array let strArr = Array3D.create 2 3 2 "enmity" let resultStr = Array3D.length2 strArr if resultStr <> 3 then Assert.Fail() // empty array let eptArr = Array3D.create 0 0 0 1 let resultEpt = Array3D.length2 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,] CheckThrowsNullRefException (fun () -> Array3D.length2 nullArr |> ignore) () [] member this.Length3() = // integer array let intArr = Array3D.create 2 3 5 168 let resultInt = Array3D.length3 intArr if resultInt <> 5 then Assert.Fail() // string array let strArr = Array3D.create 2 3 5 "enmity" let resultStr = Array3D.length3 strArr if resultStr <> 5 then Assert.Fail() // empty array let eptArr = Array3D.create 0 0 0 1 let resultEpt = Array3D.length3 eptArr if resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[,,] CheckThrowsNullRefException (fun () -> Array3D.length3 nullArr |> ignore) () [] member this.Map() = // integer array let intArr = Array3D.create 2 3 5 168 let funInt x = x.ToString() let resultInt = Array3D.map funInt intArr if resultInt <> Array3D.create 2 3 5 "168" then Assert.Fail() // string array let strArr = Array3D.create 2 2 2 "value" let funStr (x:string) = x.ToUpper() let resultStr = Array3D.map funStr strArr resultStr |> Array3D.iter (fun x -> if x <> "VALUE" then Assert.Fail()) // empty array let eptArr = Array3D.create 0 0 0 1 let resultEpt = Array3D.map (fun x -> Assert.Fail()) eptArr // null array let nullArr = null : string[,,] CheckThrowsArgumentNullException (fun () -> Array3D.map funStr nullArr |> ignore) () [] member this.Mapi() = // integer array let intArr = Array3D.init 2 3 2 (fun i j k -> i*100 + j*10 + k) let funInt x y z a = x+y+z+a let resultInt = Array3D.mapi funInt intArr if resultInt <> (Array3D.init 2 3 2(fun i j k-> i*100 + j*10 + k + i + j + k)) then Assert.Fail() // string array let strArr = Array3D.init 2 3 2(fun i j k-> "goodboy") let funStr (x:int) (y:int) (z:int) (a:string) = x.ToString() + y.ToString() + z.ToString() + a.ToUpper() let resultStr = Array3D.mapi funStr strArr if resultStr <> Array3D.init 2 3 2(fun i j k-> i.ToString() + j.ToString() + k.ToString() + "GOODBOY") then Assert.Fail() // empty array let eptArr = Array3D.create 0 0 0 1 let resultEpt = Array3D.mapi (fun i j k x -> Assert.Fail()) eptArr // null array let nullArr = null : string[,,] CheckThrowsArgumentNullException (fun () -> Array3D.mapi (fun i j k x -> Assert.Fail("shouldn't execute this")) nullArr |> ignore) () [] member this.Set() = // integer array let intArr = Array3D.init 2 3 2(fun i j k -> i*100 + j*10 + k) Assert.IsFalse(intArr.[1,1,1] = -1) Array3D.set intArr 1 1 1 -1 Assert.IsTrue(intArr.[1,1,1] = -1) // string array let strArr = Array3D.init 2 3 2 (fun i j k-> i.ToString() + "-" + j.ToString()+ "-" + k.ToString()) Assert.IsFalse(strArr.[1,1,1] = "custom") Array3D.set strArr 1 1 1 "custom" Assert.IsTrue(strArr.[1,1,1] = "custom") // Out of bounds checks CheckThrowsIndexOutRangException(fun () -> Array3D.set strArr 2 0 0 "out of bounds") CheckThrowsIndexOutRangException(fun () -> Array3D.set strArr 0 3 0 "out of bounds") CheckThrowsIndexOutRangException(fun () -> Array3D.set strArr 0 0 2 "out of bounds") // empty array let emptArr = Array3D.create 0 0 0 'z' CheckThrowsIndexOutRangException(fun () -> Array3D.set emptArr 0 0 0 'a') // null array let nullArr = null : string[,,] CheckThrowsNullRefException (fun () -> Array3D.set nullArr 0 0 0 "") () [] member this.ZeroCreate() = let intArr : int[,,] = Array3D.zeroCreate 2 3 2 if Array3D.get intArr 1 1 1 <> 0 then Assert.Fail() let structArray : DateTime[,,] = Array3D.zeroCreate 1 1 1 let defaultVal = new DateTime() Assert.IsTrue(Array3D.get structArray 0 0 0 = defaultVal) let strArr : string[,,] = Array3D.zeroCreate 2 3 2 for i in 0 .. 1 do for j in 0 .. 2 do for k in 0 .. 1 do Assert.AreEqual(null, strArr.[i, j, k]) // Test invalid values CheckThrowsArgumentException(fun () -> Array3D.zeroCreate -1 1 1 |> ignore) CheckThrowsArgumentException(fun () -> Array3D.zeroCreate 1 -1 1 |> ignore) CheckThrowsArgumentException(fun () -> Array3D.zeroCreate 1 1 -1 |> ignore) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/SetType.fs0000775000175000017500000002463112260314606031633 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Set type namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open System.Collections open System.Collections.Generic open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Empty set * Single-element set * Sets with 4 more more elements *) [] type SetType() = // Interfaces [] member this.IEnumerable() = // Legit IE let ie = (new Set(['a'; 'b'; 'c'])) :> IEnumerable //let alphabet = new Set([| 'a' .. 'z' |]) let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'a') Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'b') Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'c') Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = (new Set([])) :> IEnumerable // Note no type args let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) [] member this.IEnumerable_T() = // Legit IE let ie =(new Set(['a'; 'b'; 'c'])) :> IEnumerable let enum = ie.GetEnumerator() let testStepping() = CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'a') Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'b') Assert.AreEqual(enum.MoveNext(), true) Assert.AreEqual(enum.Current, 'c') Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) testStepping() enum.Reset() testStepping() // Empty IE let ie = (new Set([])) :> IEnumerable let enum = ie.GetEnumerator() CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) Assert.AreEqual(enum.MoveNext(), false) CheckThrowsInvalidOperationExn(fun () -> enum.Current |> ignore) [] member this.ICollection() = // Legit IC let ic = (new Set([1;2;3;4])) :> ICollection let st = new Set([1;2;3;4]) Assert.IsTrue(ic.Contains(3)) let newArr = Array.create 5 0 ic.CopyTo(newArr,0) Assert.IsTrue(ic.IsReadOnly) // Empty IC let ic = (new Set([])) :> ICollection Assert.IsFalse(ic.Contains("A") ) let newArr = Array.create 5 "a" ic.CopyTo(newArr,0) [] member this.IComparable() = // Legit IC let ic = (new Set([1;2;3;4])) :> IComparable Assert.AreEqual(ic.CompareTo(new Set([1;2;3;4])),0) // Empty IC let ic = (new Set([])) :> IComparable Assert.AreEqual(ic.CompareTo(Set.empty),0) // Base class methods [] member this.ObjectGetHashCode() = // Verify order added is independent let x = Set.ofList [1; 2; 3] let y = Set.ofList [3; 2; 1] Assert.AreEqual(x.GetHashCode(), y.GetHashCode()) [] member this.ObjectToString() = Assert.AreEqual("set [1; 2; 3; ... ]", (new Set([1;2;3;4])).ToString()) Assert.AreEqual("set []", (Set.empty).ToString()) Assert.AreEqual("set [1; 3]", (new Set([1M;3M])).ToString()) [] member this.ObjectEquals() = // All three are different references, but equality has been // provided by the F# compiler. let a = new Set([1;2;3]) let b = new Set([1..3]) let c = new Set(seq{1..3}) Assert.IsTrue( (a = b) ) Assert.IsTrue( (b = c) ) Assert.IsTrue( (c = a) ) Assert.IsTrue( a.Equals(b) ); Assert.IsTrue( b.Equals(a) ) Assert.IsTrue( b.Equals(c) ); Assert.IsTrue( c.Equals(b) ) Assert.IsTrue( c.Equals(a) ); Assert.IsTrue( a.Equals(c) ) // Equality between types let a = Set.empty let b = Set.empty Assert.IsFalse( b.Equals(a) ) Assert.IsFalse( a.Equals(b) ) // Co/contra varience not supported let a = Set.empty let b = Set.empty Assert.IsFalse(a.Equals(b)) Assert.IsFalse(b.Equals(a)) // Self equality let a = new Set([1]) Assert.IsTrue( (a = a) ) Assert.IsTrue(a.Equals(a)) // Null Assert.IsFalse(a.Equals(null)) // Instance methods [] member this.Add() = let l = new Set([1 .. 10]) let ad = l.Add 88 Assert.IsTrue(ad.Contains(88)) let e : Set = Set.empty let ade = e.Add "A" Assert.IsTrue(ade.Contains("A")) let s = Set.singleton 168 let ads = s.Add 100 Assert.IsTrue(ads.Contains(100)) [] member this.Contains() = let i = new Set([1 .. 10]) Assert.IsTrue(i.Contains(8)) let e : Set = Set.empty Assert.IsFalse(e.Contains("A")) let s = Set.singleton 168 Assert.IsTrue(s.Contains(168)) [] member this.Count() = let l = new Set([1 .. 10]) Assert.AreEqual(l.Count, 10) let e : Set = Set.empty Assert.AreEqual(e.Count, 0) let s = Set.singleton 'a' Assert.AreEqual(s.Count, 1) [] member this.IsEmpty() = let i = new Set([1 .. 10]) Assert.IsFalse(i.IsEmpty) let e : Set = Set.empty Assert.IsTrue(e.IsEmpty) let s = Set.singleton 168 Assert.IsFalse(s.IsEmpty) [] member this.IsSubsetOf() = let fir = new Set([1 .. 20]) let sec = new Set([1 .. 10]) Assert.IsTrue(sec.IsSubsetOf(fir)) Assert.IsTrue(Set.isSubset sec fir) let e : Set = Set.empty Assert.IsTrue(e.IsSubsetOf(fir)) Assert.IsTrue(Set.isSubset e fir) let s = Set.singleton 8 Assert.IsTrue(s.IsSubsetOf(fir)) Assert.IsTrue(Set.isSubset s fir) let s100 = set [0..100] let s101 = set [0..101] for i = 0 to 100 do Assert.IsFalse( (set [-1..i]).IsSubsetOf s100) Assert.IsTrue( (set [0..i]).IsSubsetOf s100) Assert.IsTrue( (set [0..i]).IsProperSubsetOf s101) [] member this.IsSupersetOf() = let fir = new Set([1 .. 10]) let sec = new Set([1 .. 20]) Assert.IsTrue(sec.IsSupersetOf(fir)) Assert.IsTrue(Set.isSuperset sec fir) let e : Set = Set.empty Assert.IsFalse(e.IsSupersetOf(fir)) Assert.IsFalse(Set.isSuperset e fir) let s = Set.singleton 168 Assert.IsFalse(s.IsSupersetOf(fir)) Assert.IsFalse(Set.isSuperset s fir) let s100 = set [0..100] let s101 = set [0..101] for i = 0 to 100 do Assert.IsFalse( s100.IsSupersetOf (set [-1..i])) Assert.IsTrue( s100.IsSupersetOf (set [0..i])) Assert.IsTrue( s101.IsSupersetOf (set [0..i])) [] member this.Remove() = let i = new Set([1;2;3;4]) Assert.AreEqual(i.Remove 3,(new Set([1;2;4]))) let e : Set = Set.empty Assert.AreEqual(e.Remove "A", e) let s = Set.singleton 168 Assert.AreEqual(s.Remove 168, Set.empty) // Static methods [] member this.Addition() = let fir = new Set([1;3;5]) let sec = new Set([2;4;6]) Assert.AreEqual(fir + sec, new Set([1;2;3;4;5;6])) Assert.AreEqual(Set.op_Addition(fir,sec), new Set([1;2;3;4;5;6])) let e : Set = Set.empty Assert.AreEqual(e + e, e) Assert.AreEqual(Set.op_Addition(e,e),e) let s1 = Set.singleton 8 let s2 = Set.singleton 6 Assert.AreEqual(s1 + s2, new Set([8;6])) Assert.AreEqual(Set.op_Addition(s1,s2), new Set([8;6])) [] member this.Subtraction() = let fir = new Set([1..6]) let sec = new Set([2;4;6]) Assert.AreEqual(fir - sec, new Set([1;3;5])) Assert.AreEqual(Set.difference fir sec, new Set([1;3;5])) Assert.AreEqual(Set.op_Subtraction(fir,sec), new Set([1;3;5])) let e : Set = Set.empty Assert.AreEqual(e - e, e) Assert.AreEqual(Set.difference e e, e) Assert.AreEqual(Set.op_Subtraction(e,e),e) let s1 = Set.singleton 8 let s2 = Set.singleton 6 Assert.AreEqual(s1 - s2, new Set([8])) Assert.AreEqual(Set.difference s1 s2, new Set([8])) Assert.AreEqual(Set.op_Subtraction(s1,s2), new Set([8])) [] member this.MinimumElement() = let fir = new Set([1..6]) let sec = new Set([2;4;6]) Assert.AreEqual(fir.MinimumElement, 1) Assert.AreEqual(sec.MinimumElement, 2) Assert.AreEqual(Set.minElement fir, 1) Assert.AreEqual(Set.minElement sec, 2) [] member this.MaximumElement() = let fir = new Set([1..6]) let sec = new Set([2;4;7]) Assert.AreEqual(fir.MaximumElement, 6) Assert.AreEqual(sec.MaximumElement, 7) Assert.AreEqual(Set.maxElement fir, 6) Assert.AreEqual(Set.maxElement sec, 7) ././@LongLink0000644000000000000000000000014712266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ArrayModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/ArrayModule.0000775000175000017500000011431012260314606032123 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Collections.Array module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Make sure each method works on: * Integer array (value type) * String array (reference type) * Empty array (0 elements) * Null array (null) *) [] type ArrayModule() = let rec IsNaN (x : obj) = match x with | :? float as x -> Double.IsNaN(x) | :? float32 as x -> Single.IsNaN(x) | :? decimal as x -> Decimal.ToDouble(x) |> box |> IsNaN | _ -> failwith "Invalid input. Please provide a numeric type which could possibly be NaN" [] member this.Empty() = let emptyArray = Array.empty if Array.length emptyArray <> 0 then Assert.Fail() let c : int[] = Array.empty Assert.IsTrue( (c = [| |]) ) let d : string[] = Array.empty Assert.IsTrue( (d = [| |]) ) () [] member this.Append() = // integer array let intArray = Array.append [| 1; 2 |] [| 3; 4 |] Assert.IsTrue( (intArray = [| 1; 2; 3; 4 |]) ) // string array let strArray = Array.append [| "a"; "b" |] [| "C"; "D" |] Assert.IsTrue( (strArray = [| "a"; "b"; "C"; "D" |]) ) // empty array let emptyArray : int[] = [| |] let singleArray : int[] = [| 1 |] let appEmptySingle = Array.append emptyArray singleArray let appSingleEmpty = Array.append singleArray emptyArray Assert.IsTrue( (appEmptySingle = [| 1 |]) ) Assert.IsTrue( (appSingleEmpty = [| 1 |]) ) // null array let nullArray = null:int[] let validArray = [| 1 |] CheckThrowsArgumentNullException (fun () -> Array.append validArray nullArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.append nullArray validArray |> ignore) () [] member this.Average() = // empty float32 array let emptyFloatArray = Array.empty CheckThrowsArgumentException(fun () -> Array.average emptyFloatArray |> ignore) // empty double array let emptyDoubleArray = Array.empty CheckThrowsArgumentException(fun () -> Array.average emptyDoubleArray |> ignore) // empty decimal array let emptyDecimalArray = Array.empty CheckThrowsArgumentException (fun () -> Array.average emptyDecimalArray |>ignore ) // float32 array let floatArray: float32[] = [| 1.2f; 3.5f; 6.7f |] let averageOfFloat = Array.average floatArray if averageOfFloat <> 3.8000000000000003f then Assert.Fail() // double array let doubleArray: System.Double[] = [| 1.0;8.0 |] let averageOfDouble = Array.average doubleArray if averageOfDouble <> 4.5 then Assert.Fail() // decimal array let decimalArray: decimal[] = [| 0M; 19M; 19.03M |] let averageOfDecimal = Array.average decimalArray if averageOfDecimal <> 12.676666666666666666666666667M then Assert.Fail() // null array let nullArr = null : double[] CheckThrowsArgumentNullException (fun () -> Array.average nullArr |> ignore) () [] member this.AverageBy() = // empty double array let emptyDouArray = Array.empty let funcd x = x + 6.7 CheckThrowsArgumentException(fun () -> Array.averageBy funcd emptyDouArray |> ignore) // empty float32 array let emptyFloat32Array: float32[] = [||] let funcf x = x + 9.8f CheckThrowsArgumentException(fun () -> Array.averageBy funcf emptyFloat32Array |> ignore) // empty decimal array let emptyDecimalArray = Array.empty let funcDecimal x = x + 9.8M CheckThrowsArgumentException(fun () -> Array.averageBy funcDecimal emptyDecimalArray |> ignore) // float32 array let floatArray: float32[] = [| 1.2f;3.5f;6.7f |] let averageOfFloat = Array.averageBy funcf floatArray if averageOfFloat <> 13.5999994f then Assert.Fail() // double array let doubleArray: System.Double[] = [| 1.0;8.0 |] let averageOfDouble = Array.averageBy funcd doubleArray if averageOfDouble <> 11.2 then Assert.Fail() // decimal array let decimalArray: decimal[] = [| 0M;19M;19.03M |] let averageOfDecimal = Array.averageBy funcDecimal decimalArray if averageOfDecimal <> 22.476666666666666666666666667M then Assert.Fail() // null array let nullArr : double[] = null CheckThrowsArgumentNullException (fun () -> Array.averageBy funcd nullArr |> ignore) () [] member this.Blit() = // int array let intSrc = [| 1..10 |] let intDes:int[] = Array.zeroCreate 10 Array.blit intSrc 0 intDes 0 5 if intDes.[4] <> 5 then Assert.Fail() if intDes.[5] <> 0 then Assert.Fail() // string array let strSrc = [| "a";"b";"c";"d";"e";"j"|] let strDes = Array.create 10 "w" Array.blit strSrc 1 strDes 2 3 if strDes.[3] <> "c" || Array.get strDes 4 = "w" then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.blit nullArr 1 strDes 2 3 |> ignore) // bounds check CheckThrowsArgumentException (fun () -> Array.blit intSrc -1 intDes 1 3 |> ignore) CheckThrowsArgumentException (fun () -> Array.blit intSrc 1 intDes -1 3 |> ignore) CheckThrowsArgumentException (fun () -> Array.blit intSrc 1 intDes 1 -3 |> ignore) CheckThrowsArgumentException (fun () -> Array.blit intSrc 1 intDes 1 300 |> ignore) CheckThrowsArgumentException (fun () -> Array.blit intSrc 1 intDes 5 8 |> ignore) () member private this.ChooseTester chooseInt chooseString = // int array let intSrc:int [] = [| 1..100 |] let funcInt x = if (x%5=0) then Some x else None let intChoosed : int[] = chooseInt funcInt intSrc if intChoosed.[1] <> 10 then Assert.Fail() // string array let stringSrc: string [] = "Lists are a commonly used data structure. They are not mutable, i.e., you can't delete an element of a list – instead you create a new list with the element deleted. List values often share storage under the hood, i.e., a list value only allocate more memory when you actually execute construction operations.".Split([|' '|], System.StringSplitOptions.RemoveEmptyEntries) let funcString x = match x with | "list"-> Some x | "List" -> Some x | _ -> None let strChoosed : string[] = chooseString funcString stringSrc if strChoosed.[1].ToLower() <> "list" then Assert.Fail() // empty array let emptySrc :int[] = [| |] let emptyChoosed = chooseInt funcInt emptySrc Assert.IsTrue( (emptyChoosed = [| |]) ) // null array let nullArr = null:int[] CheckThrowsArgumentNullException (fun () -> chooseInt funcInt nullArr |> ignore) () [] member this.Choose() = this.ChooseTester Array.choose Array.choose #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Choose`` () = this.ChooseTester Array.Parallel.choose Array.Parallel.choose #endif member private this.CollectTester collectInt collectString = // int array - checking ordering let intSrc = [| 1..3 |] let func = fun i -> [| 1..i |] let result : int[] = collectInt func intSrc Assert.AreEqual ([| 1; 1; 2; 1; 2; 3 |], result) // string array let stringSrc = [| "foo"; "bar" |] let func = fun s -> [| s |] let result : string[] = collectString func stringSrc Assert.AreEqual(stringSrc, result) // empty array let emptyArray : string [] = [| |] let result = collectString func emptyArray Assert.AreEqual(emptyArray,result) // null array let nullArr = null:int[] CheckThrowsArgumentNullException (fun () -> collectInt func nullArr |> ignore) () [] member this.Collect () = this.CollectTester Array.collect Array.collect [] member this.CollectWithSideEffects () = let stamp = ref 0 let f x = stamp := !stamp + 1; [| x |] Array.collect f [| |] |> ignore Assert.AreEqual(0, !stamp) stamp := 0 Array.collect f [|1;2;3|] |> ignore Assert.AreEqual(3,!stamp) #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Collect`` () = this.CollectTester Array.Parallel.collect Array.Parallel.collect #endif [] member this.Concat() = // integer array let seqInt = seq { for i in 1..10 do yield [|i; i*10|] } let conIntArr = Array.concat seqInt if Array.length conIntArr <> 20 then Assert.Fail() // string array let strSeq = seq { for a in 'a'..'c' do for b in 'a'..'c' do yield [|a.ToString();b.ToString() |]} let conStrArr = Array.concat strSeq if Array.length conStrArr <> 18 then Assert.Fail() // Empty array let emptyArrays = [| [| |]; [| 0 |]; [| 1 |]; [| |]; [| |] |] let result2 = Array.concat emptyArrays Assert.IsTrue(result2.[0] = 0 && result2.[1] = 1) if result2.[0] <> 0 && result2.[1] <> 1 then Assert.Fail() // null array let nullArray = null:int[] let nullArrays = Array.create 2 nullArray CheckThrowsNullRefException (fun () -> Array.concat nullArrays |> ignore) () [] member this.Copy() = // int array let intSrc:int [] = [| 3;5;7 |] let intCopyed = Array.copy intSrc if intCopyed <> [| 3;5;7 |] then Assert.Fail() // string array let stringSrc: string [] = [|"Lists"; "are"; "commonly" |] let strCopyed = Array.copy stringSrc if strCopyed <> [|"Lists"; "are"; "commonly" |] then Assert.Fail() // empty array let emptySrc :int[] = [| |] let emptyCopyed = Array.copy emptySrc if emptyCopyed <> [| |] then Assert.Fail() // null array let nullArr = null:int[] CheckThrowsArgumentNullException (fun () -> Array.copy nullArr |> ignore) () [] member this.Create() = // int array let intArr = Array.create 3 8 if intArr <> [| 8;8;8 |] then Assert.Fail() // string array let strArr = Array.create 3 "good" Assert.IsTrue( (strArr = [|"good"; "good"; "good"|]) ) // empty array let emptyArr = Array.create 0 "empty" if emptyArr <> [| |] then Assert.Fail() // array with null elements let nullStr = null:string let nullArr = Array.create 3 nullStr Assert.IsTrue( (nullArr = [|null; null; null|]) ) () [] member this.Exists() = // integer array let intArr = [| 2;4;6;8 |] let funcInt x = if (x%2 = 0) then true else false let resultInt = Array.exists funcInt intArr if resultInt <> true then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" |] let funcStr (x:string) = if (x.Length >15) then true else false let resultStr = Array.exists funcStr strArr if resultStr <> false then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.exists funcInt emptyArr if resultEpt <> false then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.exists funcStr nullArr |> ignore) () [] member this.Exists2() = // integer array let intFir = [| 2;4;6;8 |] let intSec = [| 1;2;3;4 |] let funcInt x y = if (x%y = 0) then true else false let resultInt = Array.exists2 funcInt intFir intSec if resultInt <> true then Assert.Fail() // string array let strFir = [|"Lists"; "are"; "commonly" |] let strSec = [|"good"; "good"; "good" |] let funcStr (x:string) (y:string) = if (x = y) then true else false let resultStr = Array.exists2 funcStr strFir strSec if resultStr <> false then Assert.Fail() // empty array let eptFir:int[] = [| |] let eptSec:int[] = [| |] let resultEpt = Array.exists2 funcInt eptFir eptSec if resultEpt <> false then Assert.Fail() // null array let nullFir = null:string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.exists2 funcStr nullFir validArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.exists2 funcStr validArray nullFir |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.exists2 funcInt [|1..10|] [|2..20|] |> ignore) () [] member this.Fill() = // integer array let intArr = [|1..5|] Array.fill intArr 0 3 21 if intArr <> [|21;21;21;4;5|] then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "data";"structor" |] Array.fill strArr 1 5 "a" if strArr <> [|"Lists"; "a"; "a"; "a"; "a";"a" |] then Assert.Fail() // empty array let emptyArr:int[] = [| |] Array.fill emptyArr 0 0 8 if emptyArr <> [| |] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.fill nullArr 0 1 "good" |> ignore) // start < 0 CheckThrowsArgumentException(fun () -> Array.fill intArr -1 3 21) // len < 0 CheckThrowsArgumentException(fun () -> Array.fill intArr 1 -2 21) () [] member this.Filter() = // integer array let intArr = [| 1..20 |] let funcInt x = if (x%5 = 0) then true else false let resultInt = Array.filter funcInt intArr if resultInt <> [|5;10;15;20|] then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "data";"structor" |] let funcStr (x:string) = if (x.Length > 4) then true else false let resultStr = Array.filter funcStr strArr if resultStr <> [|"Lists"; "commonly"; "structor" |] then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.filter funcInt emptyArr if resultEpt <> [| |] then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.filter funcStr nullArr |> ignore) () [] member this.Find() = // integer array let intArr = [| 1..20 |] let funcInt x = if (x%5 = 0) then true else false let resultInt = Array.find funcInt intArr if resultInt <> 5 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "data";"structor" |] let funcStr (x:string) = if (x.Length >7) then true else false let resultStr = Array.find funcStr strArr if resultStr <> "commonly" then Assert.Fail() // empty array let emptyArr:int[] = [| |] CheckThrowsKeyNotFoundException (fun () -> Array.find (fun x -> true) emptyArr |> ignore) // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.find funcStr nullArr |> ignore) () [] member this.FindIndex() = // integer array let intArr = [| 1..20 |] let funcInt x = if (x%5 = 0) then true else false let resultInt = Array.findIndex funcInt intArr if resultInt <> 4 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "a"; "commonly"; "data";"structor" |] let funcStr (x:string) = if (x.Length >7) then true else false let resultStr = Array.findIndex funcStr strArr if resultStr <> 3 then Assert.Fail() // empty array let emptyArr:int[] = [| |] CheckThrowsKeyNotFoundException(fun() -> Array.findIndex (fun x -> true) emptyArr |> ignore) // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.findIndex funcStr nullArr |> ignore) () [] member this.Pick() = // integers let intArr = [| 1..10 |] let matchFunc n = if n = 3 then Some(n.ToString()) else None let resultInt = Array.pick matchFunc intArr Assert.AreEqual("3", resultInt) // make it not found CheckThrowsKeyNotFoundException (fun () -> Array.pick (fun n -> None) intArr |> ignore) [] member this.ToSeq() = let intArr = [| 1..10 |] let seq = Array.toSeq intArr let sum = Seq.sum seq Assert.AreEqual(55, sum) [] member this.TryPick() = // integer array let intArr = [| 1..10 |] let funcInt x = match x with | _ when x % 3 = 0 -> Some (x.ToString()) | _ -> None let resultInt = Array.tryPick funcInt intArr if resultInt <> Some "3" then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let funcStr x = match x with | "good" -> Some (x.ToString()) | _ -> None let resultStr = Array.tryPick funcStr strArr if resultStr <> None then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.tryPick funcInt emptyArr if resultEpt <> None then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.tryPick funcStr nullArr |> ignore) () [] member this.Fold() = // integer array let intArr = [| 1..5 |] let funcInt x y = x+"+"+y.ToString() let resultInt = Array.fold funcInt "x" intArr if resultInt <> "x+1+2+3+4+5" then Assert.Fail() // string array let strArr = [|"A"; "B"; "C" ; "D" |] let funcStr x y = x+y let resultStr = Array.fold funcStr "X" strArr if resultStr <> "XABCD" then Assert.Fail() // empty array let emptyArr : int[] = [| |] let resultEpt = Array.fold funcInt "x" emptyArr if resultEpt <> "x" then Assert.Fail() // null array let nullArr = null : string[] CheckThrowsArgumentNullException (fun () -> Array.fold funcStr "begin" nullArr |> ignore) () [] member this.Fold2() = // integer array let funcInt x y z = x + y.ToString() + z.ToString() let resultInt = Array.fold2 funcInt "x" [| 1;3;5 |] [|2;4;6|] if resultInt <> "x123456" then Assert.Fail() // string array let funcStr x y z= x + y + z let resultStr = Array.fold2 funcStr "X" [|"A"; "B"; "C" ; "D" |] [|"H"; "I"; "J" ; "K" |] if resultStr <> "XAHBICJDK" then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.fold2 funcInt "x" emptyArr emptyArr if resultEpt <> "x" then Assert.Fail() // null array let nullArr = null:string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.fold2 funcStr "begin" validArray nullArr |> ignore) CheckThrowsArgumentNullException (fun () -> Array.fold2 funcStr "begin" nullArr validArray |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.fold2 funcInt "x" [| 1;3;5 |] [|2;4;6;8|] |> ignore) () [] member this.FoldBack() = // integer array let intArr = [| 1..5 |] let funcInt x y = x.ToString()+y let resultInt = Array.foldBack funcInt intArr "x" if resultInt <> "12345x" then Assert.Fail() // string array let strArr = [|"A"; "B"; "C" ; "D" |] let funcStr x y = x+y let resultStr = Array.foldBack funcStr strArr "X" if resultStr <> "ABCDX" then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.foldBack funcInt emptyArr "x" if resultEpt <> "x" then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.foldBack funcStr nullArr "begin" |> ignore) () [] member this.FoldBack2() = // integer array let funcInt x y z = x.ToString() + y.ToString() + z let resultInt = Array.foldBack2 funcInt [| 1;3;5 |] [|2;4;6|] "x" if resultInt <> "123456x" then Assert.Fail() // string array let funcStr x y z= x + y + z let resultStr = Array.foldBack2 funcStr [|"A"; "B"; "C" ; "D" |] [|"H"; "I"; "J" ; "K" |] "X" if resultStr <> "AHBICJDKX" then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.foldBack2 funcInt emptyArr emptyArr "x" if resultEpt <> "x" then Assert.Fail() // null array let nullArr = null : string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.foldBack2 funcStr nullArr validArray "begin" |> ignore) CheckThrowsArgumentNullException (fun () -> Array.foldBack2 funcStr validArray nullArr "begin" |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.foldBack2 funcInt [|1..10|] [|2..20|] "x" |> ignore) () [] member this.ForAll() = // integer array let resultInt = Array.forall (fun x -> x > 2) [| 3..2..10 |] if resultInt <> true then Assert.Fail() // string array let resultStr = Array.forall (fun (x:string) -> x.Contains("a")) [|"Lists"; "are"; "commonly" ; "list" |] if resultStr <> false then Assert.Fail() // empty array let resultEpt = Array.forall (fun (x:string) -> x.Contains("a")) [||] if resultEpt <> true then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.forall (fun x -> true) nullArr |> ignore) () [] member this.ForAll2() = // integer array let resultInt = Array.forall2 (fun x y -> x < y) [| 1..10 |] [|2..2..20|] if resultInt <> true then Assert.Fail() // string array let resultStr = Array.forall2 (fun (x:string) (y:string) -> x.Length < y.Length) [|"Lists"; "are"; "commonly" ; "list" |] [|"Listslong"; "arelong"; "commonlylong" ; "listlong" |] if resultStr <> true then Assert.Fail() // empty array let resultEpt = Array.forall2 (fun x y -> x>y) [||] [||] if resultEpt <> true then Assert.Fail() // null array let nullArr = null:string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.forall2 (fun x y-> true) nullArr validArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.forall2 (fun x y-> true) validArray nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.forall2 (fun x y -> x < y) [|1..10|] [|2..20|] |> ignore) () [] member this.Get() = // integer array let intArr = [| 3;4;7;8;10 |] let resultInt = Array.get intArr 3 if resultInt <> 8 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = Array.get strArr 2 if resultStr <> "commonly" then Assert.Fail() // empty array let emptyArr:int[] = [| |] CheckThrowsIndexOutRangException (fun () -> Array.get emptyArr -1 |> ignore) // null array let nullArr = null:string[] CheckThrowsNullRefException (fun () -> Array.get nullArr 0 |> ignore) () member private this.InitTester initInt initString = // integer array let resultInt : int[] = initInt 3 (fun x -> x + 3) if resultInt <> [|3;4;5|] then Assert.Fail() // string array let funStr (x:int) = match x with | 0 -> "Lists" | 1 -> "are" | 2 -> "commonly" | _ -> "end" let resultStr = initString 3 funStr if resultStr <> [|"Lists"; "are"; "commonly" |] then Assert.Fail() // empty array let resultEpt = initInt 0 (fun x -> x+1) if resultEpt <> [| |] then Assert.Fail() () [] member this.Init() = this.InitTester Array.init Array.init [] member this.InitWithSideEffects () = let stamp = ref 0 let f i = stamp := !stamp + 1; i Array.init 0 f |> ignore Assert.AreEqual (0, !stamp) stamp := 0 Array.init 10 f |> ignore Assert.AreEqual (10, !stamp) #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Init``() = this.InitTester Array.Parallel.init Array.Parallel.init #endif [] member this.IsEmpty() = // integer array let intArr = [| 3;4;7;8;10 |] let resultInt = Array.isEmpty intArr if resultInt <> false then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = Array.isEmpty strArr if resultStr <> false then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = Array.isEmpty emptyArr if resultEpt <> true then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.isEmpty nullArr |> ignore) () [] member this.Iter() = // integer array let intArr = [| 1..10 |] let resultInt = ref 0 let funInt (x:int) = resultInt := !resultInt + x () Array.iter funInt intArr if !resultInt <> 55 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = ref "" let funStr (x : string) = resultStr := (!resultStr) + x () Array.iter funStr strArr if !resultStr <> "Listsarecommonlylist" then Assert.Fail() // empty array let emptyArr : int[] = [| |] let resultEpt = ref 0 Array.iter funInt emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[] CheckThrowsArgumentNullException (fun () -> Array.iter funStr nullArr |> ignore) () [] member this.Iter2() = // integer array let resultInt = ref 0 let funInt (x:int) (y:int) = resultInt := !resultInt + x + y () Array.iter2 funInt [| 1..10 |] [|2..2..20|] if !resultInt <> 165 then Assert.Fail() // string array let resultStr = ref "" let funStr (x:string) (y:string) = resultStr := (!resultStr) + x + y () Array.iter2 funStr [|"A"; "B"; "C" ; "D" |] [|"a"; "b"; "c"; "d"|] if !resultStr <> "AaBbCcDd" then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = ref 0 Array.iter2 funInt emptyArr emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.iter2 funStr nullArr validArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.iter2 funStr validArray nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.iter2 funInt [| 1..10 |] [|2..20|]) () [] member this.Iteri() = // integer array let intArr = [| 1..10 |] let resultInt = ref 0 let funInt (x:int) y = resultInt := !resultInt + x + y () Array.iteri funInt intArr if !resultInt <> 100 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = ref 0 let funStr (x:int) (y:string) = resultStr := (!resultStr) + x + y.Length () Array.iteri funStr strArr if !resultStr <> 26 then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = ref 0 Array.iteri funInt emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.iteri funStr nullArr |> ignore) () [] member this.Iteri2() = // integer array let resultInt = ref 0 let funInt (x:int) (y:int) (z:int) = resultInt := !resultInt + x + y + z () Array.iteri2 funInt [| 1..10 |] [|2..2..20|] if !resultInt <> 210 then Assert.Fail() // string array let resultStr = ref "" let funStr (x:int) (y:string) (z:string) = resultStr := (!resultStr) + x.ToString() + y + z () Array.iteri2 funStr [|"A"; "B"; "C" ; "D" |] [|"a"; "b"; "c"; "d"|] if !resultStr <> "0Aa1Bb2Cc3Dd" then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = ref 0 Array.iteri2 funInt emptyArr emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[] let validArray = [| "a" |] CheckThrowsArgumentNullException (fun () -> Array.iteri2 funStr nullArr validArray |> ignore) CheckThrowsArgumentNullException (fun () -> Array.iteri2 funStr validArray nullArr |> ignore) // len1 <> len2 CheckThrowsArgumentException(fun () -> Array.iteri2 funInt [| 1..10 |] [|2..20|] |> ignore) () member private this.MapTester mapInt (mapString : (string -> int) -> array -> array) = // empty array let f x = x + 1 let result = mapInt f [| |] if result <> [| |] then Assert.Fail () // int array let result = mapInt f [| 1..100 |] if result <> [| 2..101 |] then Assert.Fail () // string array let result = [| "a"; "aa"; "aaa" |] |> mapString (fun s -> s.Length) if result <> [| 1..3 |] then Assert.Fail () // null array let nullArg : int [] = null CheckThrowsArgumentNullException (fun () -> mapInt f nullArg |> ignore) () [] member this.Map () = this.MapTester Array.map Array.map [] member this.MapWithSideEffects () = let stamp = ref 0 let f x = stamp := !stamp + 1; x + 1 Array.map f [| |] |> ignore Assert.AreEqual(0,!stamp) stamp := 0 Array.map f [| 1..100 |] |> ignore Assert.AreEqual(100,!stamp) #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Map`` () = this.MapTester Array.Parallel.map Array.Parallel.map #endif member private this.MapiTester mapiInt mapiString = // empty array let f i x = (i, x + 1) let result = mapiInt f [| |] if result <> [| |] then Assert.Fail () // int array let result : array = mapiInt f [| 1..2 |] if result <> [| (0,2); (1,3) |] then Assert.Fail () // string array let result : array = [| "a"; "aa"; "aaa" |] |> mapiString (fun i (s:string) -> i, s.Length) if result <> [| (0,1); (1,2); (2,3) |] then Assert.Fail () // null array let nullArg : int [] = null CheckThrowsArgumentNullException (fun () -> mapiInt f nullArg |> ignore) () [] member this.Mapi () = this.MapiTester Array.mapi Array.mapi [] member this.MapiWithSideEffects () = let stamp = ref 0 let f i x = stamp := !stamp + 1; (i, x + 1) Array.mapi f [| |] |> ignore Assert.AreEqual(0,!stamp) stamp := 0 Array.mapi f [| 1..100 |] |> ignore Assert.AreEqual(100,!stamp) () #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Mapi`` () = this.MapiTester Array.Parallel.mapi Array.Parallel.mapi () [] member this.``Parallel.Iter``() = // integer array let intArr = [| 1..10 |] let resultInt = ref 0 let funInt (x:int) = lock resultInt (fun () -> resultInt := !resultInt + x) () Array.Parallel.iter funInt intArr if !resultInt <> 55 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = ref 0 let funStr (x : string) = lock resultStr (fun () -> resultStr := (!resultStr) + x.Length) () Array.Parallel.iter funStr strArr if !resultStr <> 20 then Assert.Fail() // empty array let emptyArr : int[] = [| |] let resultEpt = ref 0 Array.Parallel.iter funInt emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null : string[] CheckThrowsArgumentNullException (fun () -> Array.Parallel.iter funStr nullArr |> ignore) () [] member this.``Parallel.Iteri``() = // integer array let intArr = [| 1..10 |] let resultInt = ref 0 let funInt (x:int) y = lock resultInt (fun () -> resultInt := !resultInt + x + y) () Array.Parallel.iteri funInt intArr if !resultInt <> 100 then Assert.Fail() // string array let strArr = [|"Lists"; "are"; "commonly" ; "list" |] let resultStr = ref 0 let funStr (x:int) (y:string) = lock resultStr (fun () -> resultStr := (!resultStr) + x + y.Length) () Array.Parallel.iteri funStr strArr if !resultStr <> 26 then Assert.Fail() // empty array let emptyArr:int[] = [| |] let resultEpt = ref 0 Array.Parallel.iteri funInt emptyArr if !resultEpt <> 0 then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> Array.Parallel.iteri funStr nullArr |> ignore) () #endif member private this.PartitionTester partInt partString = // int array let intSrc:int [] = [| 1..100 |] let funcInt x = if (x%2=1) then true else false let intPartitioned : int[] * int[] = partInt funcInt intSrc if ([|1..2..100|],[|2..2..100|]) <> intPartitioned then Assert.Fail () let allLeft = partInt (fun _ -> true) intSrc if (intSrc, [||]) <> allLeft then Assert.Fail() let allRight = partInt (fun _ -> false) intSrc if ([||], intSrc) <> allRight then Assert.Fail() // string array let stringSrc: string [] = "List 1 list 2 3 4 5".Split([|' '|], System.StringSplitOptions.RemoveEmptyEntries) let funcString x = match x with | "list"-> true | "List" -> true | _ -> false let strPartitioned : string[] * string[] = partString funcString stringSrc if strPartitioned <> ([|"List";"list"|], [| "1";"2"; "3"; "4"; "5"|]) then Assert.Fail () // empty array let emptySrc :int[] = [| |] let emptyPartitioned = partInt funcInt emptySrc if emptyPartitioned <> ([| |], [| |]) then Assert.Fail() // null array let nullArr = null:string[] CheckThrowsArgumentNullException (fun () -> partString funcString nullArr |> ignore) [] member this.Partition () = this.PartitionTester Array.partition Array.partition #if FX_NO_TPL_PARALLEL #else [] member this.``Parallel.Partition`` () = this.PartitionTester Array.Parallel.partition Array.Parallel.partition #endif fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/SeqModule.fs0000775000175000017500000005756312260314606032146 0ustar chrischris namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx // Various tests for the: // Microsoft.FSharp.Collections.seq type (* [Test Strategy] Make sure each method works on: * Integer Seq (value type) * String Seq (reference type) * Empty Seq (0 elements) * Null Seq (null) *) [] type SeqModule() = [] member this.CachedSeq_Clear() = let evaluatedItems : int list ref = ref [] let cachedSeq = Seq.initInfinite (fun i -> evaluatedItems := i :: !evaluatedItems; i) |> Seq.cache // Verify no items have been evaluated from the Seq yet Assert.AreEqual(List.length !evaluatedItems, 0) // Force evaluation of 10 elements Seq.take 10 cachedSeq |> Seq.toList |> ignore // verify ref clear switch length Assert.AreEqual(List.length !evaluatedItems, 10) // Force evaluation of 10 elements Seq.take 10 cachedSeq |> Seq.toList |> ignore // Verify ref clear switch length (should be cached) Assert.AreEqual(List.length !evaluatedItems, 10) // Clear (box cachedSeq :?> System.IDisposable) .Dispose() // Force evaluation of 10 elements Seq.take 10 cachedSeq |> Seq.toList |> ignore // Verify length of evaluatedItemList is 20 Assert.AreEqual(List.length !evaluatedItems, 20) () [] member this.Append() = // empty Seq let emptySeq1 = Seq.empty let emptySeq2 = Seq.empty let appendEmptySeq = Seq.append emptySeq1 emptySeq2 let expectResultEmpty = Seq.empty VerifySeqsEqual expectResultEmpty appendEmptySeq // Integer Seq let integerSeq1:seq = seq [0..4] let integerSeq2:seq = seq [5..9] let appendIntergerSeq = Seq.append integerSeq1 integerSeq2 let expectResultInteger = seq { for i in 0..9 -> i} VerifySeqsEqual expectResultInteger appendIntergerSeq // String Seq let stringSeq1:seq = seq ["1";"2"] let stringSeq2:seq = seq ["3";"4"] let appendStringSeq = Seq.append stringSeq1 stringSeq2 let expectedResultString = seq ["1";"2";"3";"4"] VerifySeqsEqual expectedResultString appendStringSeq // null Seq let nullSeq1 = seq [null;null] let nullSeq2 =seq [null;null] let appendNullSeq = Seq.append nullSeq1 nullSeq2 let expectedResultNull = seq [ null;null;null;null] VerifySeqsEqual expectedResultNull appendNullSeq () [] member this.Average() = // empty Seq let emptySeq:seq = Seq.empty CheckThrowsArgumentException (fun () -> Seq.average emptySeq |> ignore) // double Seq let doubleSeq:seq = seq [1.0;2.2;2.5;4.3] let averageDouble = Seq.average doubleSeq Assert.IsFalse( averageDouble <> 2.5) // float32 Seq let floatSeq:seq = seq [ 2.0f;4.4f;5.0f;8.6f] let averageFloat = Seq.average floatSeq Assert.IsFalse( averageFloat <> 5.0f) // decimal Seq let decimalSeq:seq = seq [ 0M;19M;19.03M] let averageDecimal = Seq.average decimalSeq Assert.IsFalse( averageDecimal <> 12.676666666666666666666666667M ) // null Seq let nullSeq:seq = null CheckThrowsArgumentNullException (fun () -> Seq.average nullSeq |> ignore) () [] member this.AverageBy() = // empty Seq let emptySeq:seq = Seq.empty CheckThrowsArgumentException (fun () -> Seq.averageBy (fun x -> x+1.0) emptySeq |> ignore) // double Seq let doubleSeq:seq = seq [1.0;2.2;2.5;4.3] let averageDouble = Seq.averageBy (fun x -> x-2.0) doubleSeq Assert.IsFalse( averageDouble <> 0.5 ) // float32 Seq let floatSeq:seq = seq [ 2.0f;4.4f;5.0f;8.6f] let averageFloat = Seq.averageBy (fun x -> x*3.3f) floatSeq Assert.IsFalse( averageFloat <> 16.5f ) // decimal Seq let decimalSeq:seq = seq [ 0M;19M;19.03M] let averageDecimal = Seq.averageBy (fun x -> x/10.7M) decimalSeq Assert.IsFalse( averageDecimal <> 1.1847352024922118380062305296M ) // null Seq let nullSeq:seq = null CheckThrowsArgumentNullException (fun () -> Seq.averageBy (fun (x:double)->x+4.0) nullSeq |> ignore) () [] member this.Cache() = // empty Seq let emptySeq:seq = Seq.empty let cacheEmpty = Seq.cache emptySeq let expectedResultEmpty = Seq.empty VerifySeqsEqual expectedResultEmpty cacheEmpty // double Seq let doubleSeq:seq = seq [1.0;2.2;2.5;4.3] let cacheDouble = Seq.cache doubleSeq VerifySeqsEqual doubleSeq cacheDouble // float32 Seq let floatSeq:seq = seq [ 2.0f;4.4f;5.0f;8.6f] let cacheFloat = Seq.cache floatSeq VerifySeqsEqual floatSeq cacheFloat // decimal Seq let decimalSeq:seq = seq [ 0M; 19M; 19.03M] let cacheDecimal = Seq.cache decimalSeq VerifySeqsEqual decimalSeq cacheDecimal // null Seq let nullSeq = seq [null] let cacheNull = Seq.cache nullSeq VerifySeqsEqual nullSeq cacheNull () [] member this.Case() = // integer Seq let integerArray = [|1;2|] let integerSeq = Seq.cast integerArray let expectedIntegerSeq = seq [1;2] VerifySeqsEqual expectedIntegerSeq integerSeq // string Seq let stringArray = [|"a";"b"|] let stringSeq = Seq.cast stringArray let expectedStringSeq = seq["a";"b"] VerifySeqsEqual expectedStringSeq stringSeq // empty Seq let emptySeq = Seq.cast Seq.empty let expectedEmptySeq = Seq.empty VerifySeqsEqual expectedEmptySeq Seq.empty // null Seq let nullArray = [|null;null|] let NullSeq = Seq.cast nullArray let expectedNullSeq = seq [null;null] VerifySeqsEqual expectedNullSeq NullSeq () [] member this.Choose() = // int Seq let intSeq = seq [1..20] let funcInt x = if (x%5=0) then Some x else None let intChoosed = Seq.choose funcInt intSeq let expectedIntChoosed = seq { for i = 1 to 4 do yield i*5} VerifySeqsEqual expectedIntChoosed intChoosed // string Seq let stringSrc = seq ["list";"List"] let funcString x = match x with | "list"-> Some x | "List" -> Some x | _ -> None let strChoosed = Seq.choose funcString stringSrc let expectedStrChoose = seq ["list";"List"] VerifySeqsEqual expectedStrChoose strChoosed // empty Seq let emptySeq = Seq.empty let emptyChoosed = Seq.choose funcInt emptySeq let expectedEmptyChoose = Seq.empty VerifySeqsEqual expectedEmptyChoose emptySeq // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.choose funcInt nullSeq |> ignore) () [] member this.Compare() = // int Seq let intSeq1 = seq [1;3;7;9] let intSeq2 = seq [2;4;6;8] let funcInt x y = if (x>y) then x else 0 let intcompared = Seq.compareWith funcInt intSeq1 intSeq2 Assert.IsFalse( intcompared <> 7 ) // string Seq let stringSeq1 = seq ["a"; "b"] let stringSeq2 = seq ["c"; "d"] let funcString x y = match (x,y) with | "a", "c" -> 0 | "b", "d" -> 1 |_ -> -1 let strcompared = Seq.compareWith funcString stringSeq1 stringSeq2 Assert.IsFalse( strcompared <> 1 ) // empty Seq let emptySeq = Seq.empty let emptycompared = Seq.compareWith funcInt emptySeq emptySeq Assert.IsFalse( emptycompared <> 0 ) // null Seq let nullSeq:seq = null CheckThrowsArgumentNullException (fun () -> Seq.compareWith funcInt nullSeq emptySeq |> ignore) CheckThrowsArgumentNullException (fun () -> Seq.compareWith funcInt emptySeq nullSeq |> ignore) CheckThrowsArgumentNullException (fun () -> Seq.compareWith funcInt nullSeq nullSeq |> ignore) () [] member this.Concat() = // integer Seq let seqInt = seq { for i in 0..9 do yield seq {for j in 0..9 do yield i*10+j}} let conIntSeq = Seq.concat seqInt let expectedIntSeq = seq { for i in 0..99 do yield i} VerifySeqsEqual expectedIntSeq conIntSeq // string Seq let strSeq = seq { for a in 'a' .. 'b' do for b in 'a' .. 'b' do yield seq [a; b] } let conStrSeq = Seq.concat strSeq let expectedStrSeq = seq ['a';'a';'a';'b';'b';'a';'b';'b';] VerifySeqsEqual expectedStrSeq conStrSeq // Empty Seq let emptySeqs = seq [seq[ Seq.empty;Seq.empty];seq[ Seq.empty;Seq.empty]] let conEmptySeq = Seq.concat emptySeqs let expectedEmptySeq =seq { for i in 1..4 do yield Seq.empty} VerifySeqsEqual expectedEmptySeq conEmptySeq // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.concat nullSeq |> ignore) () [] member this.CountBy() = // integer Seq let funcIntCount_by (x:int) = x%3 let seqInt = seq { for i in 0..9 do yield i} let countIntSeq = Seq.countBy funcIntCount_by seqInt let expectedIntSeq = seq [0,4;1,3;2,3] VerifySeqsEqual expectedIntSeq countIntSeq // string Seq let funcStrCount_by (s:string) = s.IndexOf("key") let strSeq = seq [ "key";"blank key";"key";"blank blank key"] let countStrSeq = Seq.countBy funcStrCount_by strSeq let expectedStrSeq = seq [0,2;6,1;12,1] VerifySeqsEqual expectedStrSeq countStrSeq // Empty Seq let emptySeq = Seq.empty let countEmptySeq = Seq.countBy funcIntCount_by emptySeq let expectedEmptySeq =seq [] VerifySeqsEqual expectedEmptySeq countEmptySeq // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.countBy funcIntCount_by nullSeq |> ignore) () [] member this.Distinct() = // integer Seq let IntDistinctSeq = seq { for i in 0..9 do yield i % 3 } let DistinctIntSeq = Seq.distinct IntDistinctSeq let expectedIntSeq = seq [0;1;2] VerifySeqsEqual expectedIntSeq DistinctIntSeq // string Seq let strDistinctSeq = seq ["elementDup"; "ele1"; "ele2"; "elementDup"] let DistnctStrSeq = Seq.distinct strDistinctSeq let expectedStrSeq = seq ["elementDup"; "ele1"; "ele2"] VerifySeqsEqual expectedStrSeq DistnctStrSeq // Empty Seq let emptySeq : seq = Seq.empty let distinctEmptySeq : seq = Seq.distinct emptySeq let expectedEmptySeq : seq = seq [] VerifySeqsEqual expectedEmptySeq distinctEmptySeq // null Seq let nullSeq:seq = null CheckThrowsArgumentNullException(fun () -> Seq.distinct nullSeq |> ignore) () [] member this.DistinctBy () = // integer Seq let funcInt x = x % 3 let IntDistinct_bySeq = seq { for i in 0..9 do yield i } let distinct_byIntSeq = Seq.distinctBy funcInt IntDistinct_bySeq let expectedIntSeq = seq [0;1;2] VerifySeqsEqual expectedIntSeq distinct_byIntSeq // string Seq let funcStrDistinct (s:string) = s.IndexOf("key") let strSeq = seq [ "key"; "blank key"; "key dup"; "blank key dup"] let DistnctStrSeq = Seq.distinctBy funcStrDistinct strSeq let expectedStrSeq = seq ["key"; "blank key"] VerifySeqsEqual expectedStrSeq DistnctStrSeq // Empty Seq let emptySeq : seq = Seq.empty let distinct_byEmptySeq : seq = Seq.distinctBy funcInt emptySeq let expectedEmptySeq : seq = seq [] VerifySeqsEqual expectedEmptySeq distinct_byEmptySeq // null Seq let nullSeq : seq<'a> = null CheckThrowsArgumentNullException(fun () -> Seq.distinctBy funcInt nullSeq |> ignore) () [] member this.Exists() = // Integer Seq let funcInt x = (x % 2 = 0) let IntexistsSeq = seq { for i in 0..9 do yield i} let ifExistInt = Seq.exists funcInt IntexistsSeq Assert.IsTrue( ifExistInt) // String Seq let funcStr (s:string) = s.Contains("key") let strSeq = seq ["key"; "blank key"] let ifExistStr = Seq.exists funcStr strSeq Assert.IsTrue( ifExistStr) // Empty Seq let emptySeq = Seq.empty let ifExistsEmpty = Seq.exists funcInt emptySeq Assert.IsFalse( ifExistsEmpty) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.exists funcInt nullSeq |> ignore) () [] member this.Exists2() = // Integer Seq let funcInt x y = (x+y)%3=0 let Intexists2Seq1 = seq [1;3;7] let Intexists2Seq2 = seq [1;6;3] let ifExist2Int = Seq.exists2 funcInt Intexists2Seq1 Intexists2Seq2 Assert.IsTrue( ifExist2Int) // String Seq let funcStr s1 s2 = ((s1 + s2) = "CombinedString") let strSeq1 = seq [ "Combined"; "Not Combined"] let strSeq2 = seq ["String"; "Other String"] let ifexists2Str = Seq.exists2 funcStr strSeq1 strSeq2 Assert.IsTrue(ifexists2Str) // Empty Seq let emptySeq = Seq.empty let ifexists2Empty = Seq.exists2 funcInt emptySeq emptySeq Assert.IsFalse( ifexists2Empty) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.exists2 funcInt nullSeq nullSeq |> ignore) () [] member this.Filter() = // integer Seq let funcInt x = if (x % 5 = 0) then true else false let IntSeq = seq { for i in 1..20 do yield i } let filterIntSeq = Seq.filter funcInt IntSeq let expectedfilterInt = seq [ 5;10;15;20] VerifySeqsEqual expectedfilterInt filterIntSeq // string Seq let funcStr (s:string) = s.Contains("Expected Content") let strSeq = seq [ "Expected Content"; "Not Expected"; "Expected Content"; "Not Expected"] let filterStrSeq = Seq.filter funcStr strSeq let expectedfilterStr = seq ["Expected Content"; "Expected Content"] VerifySeqsEqual expectedfilterStr filterStrSeq // Empty Seq let emptySeq = Seq.empty let filterEmptySeq = Seq.filter funcInt emptySeq let expectedEmptySeq =seq [] VerifySeqsEqual expectedEmptySeq filterEmptySeq // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.filter funcInt nullSeq |> ignore) () [] member this.Find() = // integer Seq let funcInt x = if (x % 5 = 0) then true else false let IntSeq = seq { for i in 1..20 do yield i } let findInt = Seq.find funcInt IntSeq Assert.AreEqual(findInt, 5) // string Seq let funcStr (s:string) = s.Contains("Expected Content") let strSeq = seq [ "Expected Content";"Not Expected"] let findStr = Seq.find funcStr strSeq Assert.AreEqual(findStr, "Expected Content") // Empty Seq let emptySeq = Seq.empty CheckThrowsKeyNotFoundException(fun () -> Seq.find funcInt emptySeq |> ignore) // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.find funcInt nullSeq |> ignore) () [] member this.FindIndex() = // integer Seq let digits = [1 .. 100] |> Seq.ofList let idx = digits |> Seq.findIndex (fun i -> i.ToString().Length > 1) Assert.AreEqual(idx, 9) // empty Seq CheckThrowsKeyNotFoundException(fun () -> Seq.findIndex (fun i -> true) Seq.empty |> ignore) // null Seq CheckThrowsArgumentNullException(fun() -> Seq.findIndex (fun i -> true) null |> ignore) () [] member this.Pick() = let digits = [| 1 .. 10 |] |> Seq.ofArray let result = Seq.pick (fun i -> if i > 5 then Some(i.ToString()) else None) digits Assert.AreEqual(result, "6") // Empty seq (Bugged, 4173) CheckThrowsKeyNotFoundException (fun () -> Seq.pick (fun i -> Some('a')) ([| |] : int[]) |> ignore) // Null CheckThrowsArgumentNullException (fun () -> Seq.pick (fun i -> Some(i + 0)) null |> ignore) () [] member this.Fold() = let funcInt x y = x+y let IntSeq = seq { for i in 1..10 do yield i} let foldInt = Seq.fold funcInt 1 IntSeq if foldInt <> 56 then Assert.Fail() // string Seq let funcStr (x:string) (y:string) = x+y let strSeq = seq ["B"; "C"; "D" ; "E"] let foldStr = Seq.fold funcStr "A" strSeq if foldStr <> "ABCDE" then Assert.Fail() // Empty Seq let emptySeq = Seq.empty let foldEmpty = Seq.fold funcInt 1 emptySeq if foldEmpty <> 1 then Assert.Fail() // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.fold funcInt 1 nullSeq |> ignore) () [] member this.ForAll() = let funcInt x = if x%2 = 0 then true else false let IntSeq = seq { for i in 1..10 do yield i*2} let for_allInt = Seq.forall funcInt IntSeq if for_allInt <> true then Assert.Fail() // string Seq let funcStr (x:string) = x.Contains("a") let strSeq = seq ["a"; "ab"; "abc" ; "abcd"] let for_allStr = Seq.forall funcStr strSeq if for_allStr <> true then Assert.Fail() // Empty Seq let emptySeq = Seq.empty let for_allEmpty = Seq.forall funcInt emptySeq if for_allEmpty <> true then Assert.Fail() // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.forall funcInt nullSeq |> ignore) () [] member this.ForAll2() = let funcInt x y = if (x+y)%2 = 0 then true else false let IntSeq = seq { for i in 1..10 do yield i} let for_all2Int = Seq.forall2 funcInt IntSeq IntSeq if for_all2Int <> true then Assert.Fail() // string Seq let funcStr (x:string) (y:string) = (x+y).Length = 5 let strSeq1 = seq ["a"; "ab"; "abc" ; "abcd"] let strSeq2 = seq ["abcd"; "abc"; "ab" ; "a"] let for_all2Str = Seq.forall2 funcStr strSeq1 strSeq2 if for_all2Str <> true then Assert.Fail() // Empty Seq let emptySeq = Seq.empty let for_all2Empty = Seq.forall2 funcInt emptySeq emptySeq if for_all2Empty <> true then Assert.Fail() // null Seq let nullSeq:seq<'a> = null CheckThrowsArgumentNullException (fun () -> Seq.forall2 funcInt nullSeq nullSeq |> ignore) [] member this.GroupBy() = let funcInt x = x%5 let IntSeq = seq { for i in 0 .. 9 do yield i } let group_byInt = Seq.groupBy funcInt IntSeq |> Seq.map (fun (i, v) -> i, Seq.toList v) let expectedIntSeq = seq { for i in 0..4 do yield i, [i; i+5] } VerifySeqsEqual group_byInt expectedIntSeq // string Seq let funcStr (x:string) = x.Length let strSeq = seq ["length7"; "length 8"; "length7" ; "length 9"] let group_byStr = Seq.groupBy funcStr strSeq |> Seq.map (fun (i, v) -> i, Seq.toList v) let expectedStrSeq = seq { yield 7, ["length7"; "length7"] yield 8, ["length 8"] yield 9, ["length 9"] } VerifySeqsEqual expectedStrSeq group_byStr // Empty Seq let emptySeq = Seq.empty let group_byEmpty = Seq.groupBy funcInt emptySeq let expectedEmptySeq = seq [] VerifySeqsEqual expectedEmptySeq group_byEmpty // null Seq let nullSeq:seq<'a> = null let group_byNull = Seq.groupBy funcInt nullSeq CheckThrowsArgumentNullException (fun () -> Seq.iter (fun _ -> ()) group_byNull) () [] member this.DisposalOfUnstartedEnumerator() = let run = ref false let f() = seq { try () finally run := true } f().GetEnumerator().Dispose() Assert.IsFalse(!run) [] member this.WeirdLocalNames() = let f pc = seq { yield pc yield (pc+1) yield (pc+2) } let l = f 3 |> Seq.toList Assert.AreEqual([3;4;5], l) let f i = seq { let pc = i*2 yield pc yield (pc+1) yield (pc+2) } let l = f 3 |> Seq.toList Assert.AreEqual([6;7;8], l) ././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/StringModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Collections/StringModule0000775000175000017500000001107612260314606032242 0ustar chrischris namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Collections open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx // Various tests for the: // Microsoft.FSharp.Collections.seq type (* [Test Strategy] Make sure each method works on: * Few charachter string ("foo") * Empty string ("") * Null string (null) *) [] type StringModule() = [] member this.Concat() = let e1 = String.concat null ["foo"] Assert.AreEqual("foo", e1) let e2 = String.concat "" [] Assert.AreEqual("", e2) let e3 = String.concat "foo" [] Assert.AreEqual("", e3) let e4 = String.concat "" [null] Assert.AreEqual("", e4) let e5 = String.concat "" [""] Assert.AreEqual("", e5) let e6 = String.concat "foo" ["bar"] Assert.AreEqual("bar", e6) let e7 = String.concat "foo" ["bar";"baz"] Assert.AreEqual("barfoobaz", e7) let e8 = String.concat "foo" [null;"baz";null;"bar"] Assert.AreEqual("foobazfoofoobar", e8) CheckThrowsArgumentNullException(fun () -> String.concat "foo" null |> ignore) [] member this.Iter() = let result = ref 0 do String.iter (fun c -> result := !result + (int c)) "foo" Assert.AreEqual(324, !result) do result := 0 do String.iter (fun c -> result := !result + (int c)) null Assert.AreEqual(0, !result) [] member this.IterI() = let result = ref 0 do String.iteri(fun i c -> result := !result + (i*(int c))) "foo" Assert.AreEqual(333, !result) result := 0 do String.iteri(fun i c -> result := !result + (i*(int c))) null Assert.AreEqual(0, !result) [] member this.Map() = let e1 = String.map (fun c -> c) "foo" Assert.AreEqual("foo", e1) let e2 = String.map (fun c -> c) null Assert.AreEqual("", e2) [] member this.MapI() = let e1 = String.mapi (fun i c -> char(int c + i)) "foo" Assert.AreEqual("fpq", e1) let e2 = String.mapi (fun i c -> c) null Assert.AreEqual("", e2) [] member this.Collect() = let e1 = String.collect (fun c -> "a"+string c) "foo" Assert.AreEqual("afaoao", e1) let e2 = String.collect (fun c -> null) "hello" Assert.AreEqual("", e2) let e3 = String.collect (fun c -> "") null Assert.AreEqual("", e3) [] member this.Init() = let e1 = String.init 0 (fun i -> "foo") Assert.AreEqual("", e1) let e2 = String.init 2 (fun i -> "foo"+string(i)) Assert.AreEqual("foo0foo1", e2) let e3 = String.init 2 (fun i -> null) Assert.AreEqual("", e3) CheckThrowsArgumentException(fun () -> String.init -1 (fun c -> "") |> ignore) [] member this.Replicate() = let e1 = String.replicate 0 "foo" Assert.AreEqual("", e1) let e2 = String.replicate 2 "foo" Assert.AreEqual("foofoo", e2) let e3 = String.replicate 2 null Assert.AreEqual("", e3) CheckThrowsArgumentException(fun () -> String.replicate -1 "foo" |> ignore) [] member this.Forall() = let e1 = String.forall (fun c -> true) "" Assert.AreEqual(true, e1) let e2 = String.forall (fun c -> c='o') "foo" Assert.AreEqual(false, e2) let e3 = String.forall (fun c -> true) "foo" Assert.AreEqual(true, e3) let e4 = String.forall (fun c -> false) "foo" Assert.AreEqual(false, e4) let e5 = String.forall (fun c -> true) (String.replicate 1000000 "x") Assert.AreEqual(true, e5) let e6 = String.forall (fun c -> false) null Assert.AreEqual(true, e6) [] member this.Exists() = let e1 = String.exists (fun c -> true) "" Assert.AreEqual(false, e1) let e2 = String.exists (fun c -> c='o') "foo" Assert.AreEqual(true, e2) let e3 = String.exists (fun c -> true) "foo" Assert.AreEqual(true, e3) let e4 = String.exists (fun c -> false) "foo" Assert.AreEqual(false, e4) let e5 = String.exists (fun c -> false) (String.replicate 1000000 "x") Assert.AreEqual(false, e5) [] member this.Length() = let e1 = String.length "" Assert.AreEqual(0, e1) let e2 = String.length "foo" Assert.AreEqual(3, e2) let e3 = String.length null Assert.AreEqual(0, e3) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/OperatorsModule2.fs0000775000175000017500000004351012260314606026035 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Core.Operators module namespace SystematicUnitTests.FSharp_Core.Microsoft_FSharp_Core open System open SystematicUnitTests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Core.Operators.Checked [] type OperatorsModule2() = [] member this.int() = // int let result = Operators.int 10 Assert.AreEqual(result,10) // string let result = Operators.int "10" Assert.AreEqual(result,10) // double let result = Operators.int 10.0 Assert.AreEqual(result,10) // negative let result = Operators.int -10 Assert.AreEqual(result,-10) // zero let result = Operators.int 0 Assert.AreEqual(result,0) // overflow CheckThrowsOverflowException(fun() -> Operators.int System.Double.MaxValue |>ignore) () [] member this.int16() = // int let result = Operators.int16 10 Assert.AreEqual(result,10) // double let result = Operators.int16 10.0 Assert.AreEqual(result,10) // negative let result = Operators.int16 -10 Assert.AreEqual(result,-10) // zero let result = Operators.int16 0 Assert.AreEqual(result,0) // string let result = Operators.int16 "10" Assert.AreEqual(result,10) // overflow CheckThrowsOverflowException(fun() -> Operators.int16 System.Double.MaxValue |>ignore) () [] member this.int32() = // int let result = Operators.int32 10 Assert.AreEqual(result,10) // double let result = Operators.int32 10.0 Assert.AreEqual(result,10) // negative let result = Operators.int32 -10 Assert.AreEqual(result,-10) // zero let result = Operators.int32 0 Assert.AreEqual(result,0) // string let result = Operators.int32 "10" Assert.AreEqual(result,10) // overflow CheckThrowsOverflowException(fun() -> Operators.int32 System.Double.MaxValue |>ignore) () [] member this.int64() = // int let result = Operators.int64 10 Assert.AreEqual(result,10) // double let result = Operators.int64 10.0 Assert.AreEqual(result,10) // negative let result = Operators.int64 -10 Assert.AreEqual(result,-10) // zero let result = Operators.int64 0 Assert.AreEqual(result,0) // string let result = Operators.int64 "10" Assert.AreEqual(result,10) // overflow CheckThrowsOverflowException(fun() -> Operators.int64 System.Double.MaxValue |>ignore) () // [] // member this.invalidArg() = // CheckThrowsArgumentException(fun() -> Operators.invalidArg "A" "B" |>ignore ) // // () [] member this.lock() = // lock printfn "test8 started" let syncRoot = System.Object() let k = ref 0 let comp _ = async { return lock syncRoot (fun () -> incr k System.Threading.Thread.Sleep(1) !k ) } let arr = Async.RunSynchronously (Async.Parallel(Seq.map comp [1..50])) Assert.AreEqual((Array.sort compare arr; arr), [|1..50|]) // without lock let syncRoot = System.Object() let k = ref 0 let comp _ = async { do incr k do! System.Threading.Thread.AsyncSleep(10) return !k } let arr = Async.RunSynchronously (Async.Parallel(Seq.map comp [1..100])) Assert.AreNotEqual ((Array.sort compare arr; arr) , [|1..100|]) () [] member this.log() = // double let result = Operators.log 10.0 Assert.AreEqual(result.ToString(),"2.30258509299405") // negative let result = Operators.log -10.0 Assert.AreEqual(result.ToString(),System.Double.NaN.ToString()) // zero let result = Operators.log 0.0 Assert.AreEqual(result,-infinity) () [] member this.log10() = // double let result = Operators.log10 10.0 Assert.AreEqual(result,1) // negative let result = Operators.log10 -10.0 Assert.AreEqual(result.ToString(),System.Double.NaN.ToString()) // zero let result = Operators.log10 0.0 Assert.AreEqual(result,-infinity) () [] member this.max() = // value type let result = Operators.max 10 8 Assert.AreEqual(result,10) // negative let result = Operators.max -10.0 -8.0 Assert.AreEqual(result,-8.0) // zero let result = Operators.max 0 0 Assert.AreEqual(result,0) // reference type let result = Operators.max "A" "ABC" Assert.AreEqual(result,"ABC") // overflow CheckThrowsOverflowException(fun() -> Operators.max 10 System.Int32.MaxValue+1 |>ignore) () [] member this.min() = // value type let result = Operators.min 10 8 Assert.AreEqual(result,8) // negative let result = Operators.min -10.0 -8.0 Assert.AreEqual(result,-10.0) // zero let result = Operators.min 0 0 Assert.AreEqual(result,0) // reference type let result = Operators.min "A" "ABC" Assert.AreEqual(result,"A") // overflow CheckThrowsOverflowException(fun() -> Operators.min 10 System.Int32.MinValue - 1 |>ignore) () [] member this.nan() = // value type let result = Operators.nan Assert.AreEqual(result.ToString(),System.Double.NaN.ToString()) () [] member this.nanf() = // value type let result = Operators.nanf Assert.AreEqual(result,System.Single.NaN) () [] member this.nativeint() = // int let result = Operators.nativeint 10 Assert.AreEqual(result,10n) // double let result = Operators.nativeint 10.0 Assert.AreEqual(result,10n) // int64 let result = Operators.nativeint 10L Assert.AreEqual(result,10n) // negative let result = Operators.nativeint -10 Assert.AreEqual(result,-10n) // zero let result = Operators.nativeint 0 Assert.AreEqual(result,0n) // overflow CheckThrowsOverflowException(fun() -> Operators.nativeint System.Double.MaxValue |>ignore) () [] member this.not() = let result = Operators.not true Assert.IsFalse(result) let result = Operators.not false Assert.IsTrue(result) () // [] // member this.nullArg() = // CheckThrowsArgumentNullException(fun() -> Operators.nullArg "A" |> ignore) // // () [] member this.pown() = // int let result = Operators.pown 10 2 Assert.AreEqual(result,100) // double let result = Operators.pown 10.0 2 Assert.AreEqual(result,100) // int64 let result = Operators.pown 10L 2 Assert.AreEqual(result,100) // decimal let result = Operators.pown 10M 2 Assert.AreEqual(result,100) // negative let result = Operators.pown -10 2 Assert.AreEqual(result,100) // zero let result = Operators.pown 0 2 Assert.AreEqual(result,0) // overflow let result = Operators.pown System.Double.MaxValue System.Int32.MaxValue Assert.AreEqual(result,infinity) CheckThrowsOverflowException(fun() -> Operators.pown System.Int32.MaxValue System.Int32.MaxValue |>ignore) () [] member this.raise() = CheckThrowsArgumentException(fun()-> Operators.raise <| new ArgumentException("Invalid Argument ") |> ignore) () [] member this.ref() = // value type let result = Operators.ref 0 let funInt (x:int) = result := !result + x () Array.iter funInt [|1..10|] Assert.AreEqual(!result,55) // reference type let result = Operators.ref "" let funStr (x : string) = result := (!result) + x () Array.iter funStr [|"A";"B";"C";"D"|] Assert.AreEqual(!result,"ABCD") () [] member this.reraise() = // double try () with | _ -> Operators.reraise() () [] member this.round() = // double let result = Operators.round 10.0 Assert.AreEqual(result,10) // decimal let result = Operators.round 10M Assert.AreEqual(result,10) () [] member this.sbyte() = // int let result = Operators.sbyte 10 Assert.AreEqual(result,10) // double let result = Operators.sbyte 10.0 Assert.AreEqual(result,10) // negative let result = Operators.sbyte -10 Assert.AreEqual(result,-10) // zero let result = Operators.sbyte 0 Assert.AreEqual(result,0) () [] member this.sign() = // int let result = Operators.sign 10 Assert.AreEqual(result,1) // double let result = Operators.sign 10.0 Assert.AreEqual(result,1) // negative let result = Operators.sign -10 Assert.AreEqual(result,-1) // zero let result = Operators.sign 0 Assert.AreEqual(result,0) () [] member this.sin() = let result = Operators.sin 0.5 Assert.AreEqual(result.ToString(),"0.479425538604203") () [] member this.single() = // int let result = Operators.single 10 Assert.AreEqual(result,10) // double let result = Operators.single 10.0 Assert.AreEqual(result,10) // string let result = Operators.single "10" Assert.AreEqual(result,10) () [] member this.sinh() = let result = Operators.sinh 1.0 Assert.AreEqual(result.ToString(),"1.1752011936438") () [] member this.sizeof() = // value type let result = Operators.sizeof Assert.AreEqual(result,4) // System.Int64 let result = Operators.sizeof Assert.AreEqual(result,8) // reference type let result = Operators.sizeof Assert.AreEqual(result,4) // null let result = Operators.sizeof Assert.AreEqual(result,4) () [] member this.snd() = // value type let result = Operators.snd ("ABC",100) Assert.AreEqual(result,100) // reference type let result = Operators.snd (100,"ABC") Assert.AreEqual(result,"ABC") // null let result = Operators.snd (100,null) Assert.AreEqual(result,null) () [] member this.sqrt() = // double let result = Operators.sqrt 100.0 Assert.AreEqual(result,10) () [] member this.stderr() = let result = Operators.stderr Assert.AreEqual(result.WriteLine("go"),null) () [] member this.stdin() = let result = Operators.stdin Assert.AreEqual(result.Dispose(),null) () [] member this.stdout() = let result = Operators.stdout Assert.AreEqual(result.WriteLine("go"),null) () [] member this.string() = // value type let result = Operators.string 100 Assert.AreEqual(result,"100") // reference type let result = Operators.string "ABC" Assert.AreEqual(result,"ABC") // unit CheckThrowsNullRefException(fun () -> Operators.string null |>ignore) () [] member this.tan() = // double let result = Operators.tan 1.0 Assert.AreEqual(result.ToString(),"1.5574077246549") () [] member this.tanh() = // double let result = Operators.tanh 0.8 Assert.AreEqual(result,0.664036770267849) () [] member this.truncate() = // double let result = Operators.truncate 10.101 Assert.AreEqual(result,10) // decimal let result = Operators.truncate 10.101M Assert.AreEqual(result,10M) // zero let result = Operators.truncate 0.101 Assert.AreEqual(result,0) () [] member this.typedefof() = // value type let result = Operators.typedefof Assert.AreEqual(result.FullName,"System.Int32") // reference type let result = Operators.typedefof Assert.AreEqual(result.FullName,"System.String") // unit let result = Operators.typedefof Assert.AreEqual(result.FullName,"Microsoft.FSharp.Core.Unit") () [] member this.typeof() = // value type let result = Operators.typeof Assert.AreEqual(result.FullName,"System.Int32") // reference type let result = Operators.typeof Assert.AreEqual(result.FullName,"System.String") // unit let result = Operators.typeof Assert.AreEqual(result.FullName,"Microsoft.FSharp.Core.Unit") () [] member this.uint16() = // int let result = Operators.uint16 100 Assert.AreEqual(result,100us) // double let result = Operators.uint16 (100.0:double) Assert.AreEqual(result,100us) // decimal let result = Operators.uint16 100M Assert.AreEqual(result,100us) () [] member this.uint32() = // int let result = Operators.uint32 100 Assert.AreEqual(result,100ul) // double let result = Operators.uint32 (100.0:double) Assert.AreEqual(result,100ul) // decimal let result = Operators.uint32 100M Assert.AreEqual(result,100ul) () [] member this.uint64() = // int let result = Operators.uint64 100 Assert.AreEqual(result,100UL) // double let result = Operators.uint64 (100.0:double) Assert.AreEqual(result,100UL) // decimal let result = Operators.uint64 100M Assert.AreEqual(result,100UL) () [] member this.unativeint() = // int let result = Operators.unativeint 100 Assert.AreEqual(result,100un) // double let result = Operators.unativeint (100.0:double) Assert.AreEqual(result,100un) () [] member this.unbox() = // value type let oint = box 100 let result = Operators.unbox oint Assert.AreEqual(result,100) // reference type let ostr = box "ABC" let result = Operators.unbox ostr Assert.AreEqual(result,"ABC") // null let onull = box null let result = Operators.unbox onull Assert.AreEqual(result,null) () [] member this.using() = let sr = new System.IO.StringReader("ABCD") Assert.AreEqual(sr.ReadToEnd(),"ABCD") let result = Operators.using sr (fun x -> x.ToString()) CheckThrowsObjectDisposedException(fun () -> sr.ReadToEnd() |> ignore) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/0000775000175000017500000000000012260314606027035 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/EventModule.fs0000775000175000017500000001762412260314606031633 0ustar chrischris// Various tests for the: // Microsoft.FSharp.Control.Event module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Create some custom types that contain diagnostics for when and how their events are fired. *) // --------------------------------------------------- // Note types like BroadcastEvent and EventfulCoffeeCup are // defined in ObservableModule.fs // --------------------------------------------------- type internal InternalDelegate = delegate of obj * unit -> unit type MultiArgDelegate2 = delegate of obj * int * string -> unit type MultiArgDelegate3 = delegate of obj * int * string * bool -> unit type MultiArgDelegate4 = delegate of obj * int * string * bool * int -> unit type MultiArgDelegate5 = delegate of obj * int * string * bool * int * string -> unit type MultiArgDelegate6 = delegate of obj * int * string * bool * int * string * bool -> unit [] type EventModule() = [] member this.Choose() = let coffeeCup = new EventfulCoffeeCup(10.0, 10.0) let needToCleanupEvent = coffeeCup.Overflowing |> Event.choose(fun amtOverflowingArgs -> let amtOverflowing = amtOverflowingArgs.AmountOverflowing if amtOverflowing < 5.0 then None elif amtOverflowing < 10.0 then Some("Medium") else Some("Large")) let lastCleanup = ref "" needToCleanupEvent.Add(fun amount -> lastCleanup := amount) // Refil the cup, Overflow event will fire, will fire our 'needToCleanupEvent' coffeeCup.Refil(20.0) Assert.AreEqual("Large", !lastCleanup) // Refil the cup, Overflow event will fire, will fire our 'needToCleanupEvent' coffeeCup.Refil(8.0) Assert.AreEqual("Medium", !lastCleanup) // Refil the cup, Overflow event will fire, will NOT fire our 'needToCleanupEvent' lastCleanup := "NA" coffeeCup.Refil(2.5) Assert.AreEqual("NA", !lastCleanup) () [] member this.Filter() = let kexp = new RadioStation(90.3, "KEXP") let fotpSongs = kexp.BroadcastSignal |> Event.filter(fun broadEventArgs -> broadEventArgs.Message.Contains("Flight of the Penguins")) let songsHeard = ref [] fotpSongs.Add(fun rbEventArgs -> songsHeard := rbEventArgs.Message :: !songsHeard) // Firing the main event, we should only listen in on those we want to hear kexp.BeginBroadcasting( [ "Flaming Hips" "Daywish" "Flight of the Penguins - song 1" "Flight of the Penguins - song 2" ]) Assert.AreEqual(!songsHeard, ["Flight of the Penguins - song 2"; "Flight of the Penguins - song 1"]) () [] member this.Listen() = let kqfc = new RadioStation(90.3, "KEXP") let timesListened = ref 0 kqfc.BroadcastSignal |> Event.add(fun rbEventArgs -> incr timesListened) kqfc.BeginBroadcasting( [ "Elvis" "The Beatles" "The Rolling Stones" ]) // The broadcast event should have fired 3 times Assert.AreEqual(!timesListened, 3) () [] member this.Map() = let numEvent = new Event() let getStr = numEvent.Publish |> Event.map(fun i -> i.ToString()) let results = ref "" getStr |> Event.add(fun msg -> results := msg + !results) numEvent.Trigger(1) numEvent.Trigger(22) numEvent.Trigger(333) Assert.AreEqual(!results, "333221") () [] member this.Merge() = let evensEvent = new Event() let oddsEvent = new Event() let numberEvent = Event.merge evensEvent.Publish oddsEvent.Publish let lastResult = ref 0 numberEvent.Add(fun i -> lastResult := i) // Verify triggering either the evens or oddsEvent fires the 'numberEvent' evensEvent.Trigger(2) Assert.AreEqual(!lastResult, 2) oddsEvent.Trigger(3) Assert.AreEqual(!lastResult, 3) () [] member this.Pairwise() = let numEvent = new Event() let pairwiseEvent = Event.pairwise numEvent.Publish let lastResult = ref (-1, -1) pairwiseEvent.Add(fun (x, y) -> lastResult := (x, y)) // Verify not fired until second call numEvent.Trigger(1) Assert.AreEqual(!lastResult, (-1, -1)) numEvent.Trigger(2) Assert.AreEqual(!lastResult, (1, 2)) numEvent.Trigger(3) Assert.AreEqual(!lastResult, (2, 3)) () [] member this.Partition() = let numEvent = new Event() let oddsEvent, evensEvent = Event.partition (fun i -> (i % 2 = 1)) numEvent.Publish let lastOdd = ref 0 oddsEvent.Add(fun i -> lastOdd := i) let lastEven = ref 0 evensEvent.Add(fun i -> lastEven := i) numEvent.Trigger(1) Assert.AreEqual(1, !lastOdd) Assert.AreEqual(0,!lastEven) numEvent.Trigger(2) Assert.AreEqual(1, !lastOdd) // Not updated Assert.AreEqual(2, !lastEven) () [] member this.Scan() = let numEvent = new Event() let sumEvent = numEvent.Publish |> Event.scan(fun acc i -> acc + i) 0 let lastSum = ref 0 sumEvent.Add(fun sum -> lastSum := sum) numEvent.Trigger(1) Assert.AreEqual(!lastSum, 1) numEvent.Trigger(10) Assert.AreEqual(!lastSum, 11) numEvent.Trigger(100) Assert.AreEqual(!lastSum, 111) () [] member this.Split() = let numEvent = new Event() // Note the different types int -> { string * int, string * string } let positiveEvent, negativeEvent = numEvent.Publish |> Event.split(fun i -> if i > 0 then Choice1Of2(i.ToString(), i) else Choice2Of2(i.ToString(), i.ToString())) let lastResult = ref "" positiveEvent.Add(fun (msg, i) -> lastResult := sprintf "Positive [%s][%d]" msg i) negativeEvent.Add(fun (msg, msg2) -> lastResult := sprintf "Negative [%s][%s]" msg msg2) numEvent.Trigger(10) Assert.AreEqual("Positive [10][10]", !lastResult) numEvent.Trigger(-3) Assert.AreEqual("Negative [-3][-3]", !lastResult) () [] member this.InternalDelegate() = let event = new Event() let p = event.Publish use s = p.Subscribe(fun _ -> ()) event.Trigger(null, ()) [] member this.MultipleArguments() = let count = ref 0 let test (evt : Event<_, _>) arg = let p = evt.Publish use s = p.Subscribe(fun _ -> incr count) evt.Trigger(null, arg) test (new Event()) (1, "") test (new Event()) (1, "", true) test (new Event()) (1, "", true, 1) test (new Event()) (1, "", true, 1, "") test (new Event()) (1, "", true, 1, "", true) Assert.AreEqual(5, !count) ././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/ObservableModule.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/ObservableModule0000775000175000017500000002116112260314606032216 0ustar chrischris// Various tests for the: // Microsoft.FSharp.Control.Observable module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework (* [Test Strategy] Create some custom types that contain diagnostics for when and how their events are fired. *) // --------------------------------------------------- [] type ml type OverflowingEventArgs(amountOverflowing : float) = inherit EventArgs() member this.AmountOverflowing = amountOverflowing type EmptyCoffeeCupDelegate = delegate of obj * EventArgs -> unit type OverflowingCoffeeCupDelegate = delegate of obj * OverflowingEventArgs -> unit type EventfulCoffeeCup(amount : float, cupSize : float) = let mutable m_amountLeft = amount let m_emptyCupEvent = new Event() let m_overflowingCupEvent = new Event() member this.Drink(amount) = // printfn "Drinking %.1f..." (float amount) m_amountLeft <- min (m_amountLeft - amount) 0.0 if m_amountLeft <= 0.0 then m_emptyCupEvent.Trigger(this, new EventArgs()) member this.Refil(amountAdded) = // printfn "Coffee Cup refilled with %.1f" (float amountAdded) m_amountLeft <- m_amountLeft + amountAdded if m_amountLeft > cupSize then let delta = m_amountLeft - cupSize m_amountLeft <- cupSize m_overflowingCupEvent.Trigger(this, new OverflowingEventArgs(delta)) [] member this.EmptyCup = m_overflowingCupEvent.Publish [] member this.Overflowing = m_overflowingCupEvent.Publish // --------------------------------------------------- type RadioBroadcastEventArgs(msg) = inherit EventArgs() member this.Message : string= msg type BroadcastEventDelegate = delegate of obj * RadioBroadcastEventArgs -> unit type RadioStation(frequency, callsign) = let m_broadcastEvent = new Event() member this.Frequency : float = frequency member this.Callsign : string = callsign member this.BeginBroadcasting(msgs) = for msg in msgs do m_broadcastEvent.Trigger(this, new RadioBroadcastEventArgs(msg)) [] member this.BroadcastSignal = m_broadcastEvent.Publish // --------------------------------------------------- [] type ObservableModule() = [] member this.Choose() = let coffeeCup = new EventfulCoffeeCup(10.0, 10.0) let needToCleanupEvent = coffeeCup.Overflowing |> Observable.choose(fun amtOverflowingArgs -> let amtOverflowing = amtOverflowingArgs.AmountOverflowing if amtOverflowing < 5.0 then None elif amtOverflowing < 10.0 then Some("Medium") else Some("Large")) let lastCleanup = ref "" needToCleanupEvent.Add(fun amount -> lastCleanup := amount) // Refil the cup, Overflow event will fire, will fire our 'needToCleanupEvent' coffeeCup.Refil(20.0) Assert.AreEqual("Large", !lastCleanup) // Refil the cup, Overflow event will fire, will fire our 'needToCleanupEvent' coffeeCup.Refil(8.0) Assert.AreEqual("Medium", !lastCleanup) // Refil the cup, Overflow event will fire, will NOT fire our 'needToCleanupEvent' lastCleanup := "NA" coffeeCup.Refil(2.5) Assert.AreEqual("NA", !lastCleanup) () [] member this.Filter() = let kexp = new RadioStation(90.3, "KEXP") let fotpSongs = kexp.BroadcastSignal |> Observable.filter(fun broadEventArgs -> broadEventArgs.Message.Contains("Flight of the Penguins")) let songsHeard = ref [] fotpSongs.Add(fun rbEventArgs -> songsHeard := rbEventArgs.Message :: !songsHeard) // Firing the main event, we should only listen in on those we want to hear kexp.BeginBroadcasting( [ "Flaming Hips" "Daywish" "Flight of the Penguins - song 1" "Flight of the Penguins - song 2" ]) Assert.AreEqual(!songsHeard, ["Flight of the Penguins - song 2"; "Flight of the Penguins - song 1"]) () [] member this.Listen() = let kqfc = new RadioStation(90.3, "KEXP") let timesListened = ref 0 kqfc.BroadcastSignal |> Observable.add(fun rbEventArgs -> incr timesListened) kqfc.BeginBroadcasting( [ "Elvis" "The Beatles" "The Rolling Stones" ]) // The broadcast event should have fired 3 times Assert.AreEqual(!timesListened, 3) () [] member this.Map() = let numEvent = new Event() let getStr = numEvent.Publish |> Observable.map(fun i -> i.ToString()) let results = ref "" getStr |> Observable.add(fun msg -> results := msg + !results) numEvent.Trigger(1) numEvent.Trigger(22) numEvent.Trigger(333) Assert.AreEqual(!results, "333221") () [] member this.Merge() = let evensEvent = new Event() let oddsEvent = new Event() let numberEvent = Observable.merge evensEvent.Publish oddsEvent.Publish let lastResult = ref 0 numberEvent.Add(fun i -> lastResult := i) // Verify triggering either the evens or oddsEvent fires the 'numberEvent' evensEvent.Trigger(2) Assert.AreEqual(!lastResult, 2) oddsEvent.Trigger(3) Assert.AreEqual(!lastResult, 3) () [] member this.Pairwise() = let numEvent = new Event() let pairwiseEvent = Observable.pairwise numEvent.Publish let lastResult = ref (-1, -1) pairwiseEvent.Add(fun (x, y) -> lastResult := (x, y)) // Verify not fired until second call numEvent.Trigger(1) Assert.AreEqual(!lastResult, (-1, -1)) numEvent.Trigger(2) Assert.AreEqual(!lastResult, (1, 2)) numEvent.Trigger(3) Assert.AreEqual(!lastResult, (2, 3)) () [] member this.Partition() = let numEvent = new Event() let oddsEvent, evensEvent = Observable.partition (fun i -> (i % 2 = 1)) numEvent.Publish let lastOdd = ref 0 oddsEvent.Add(fun i -> lastOdd := i) let lastEven = ref 0 evensEvent.Add(fun i -> lastEven := i) numEvent.Trigger(1) Assert.AreEqual(1, !lastOdd) Assert.AreEqual(0,!lastEven) numEvent.Trigger(2) Assert.AreEqual(1, !lastOdd) // Not updated Assert.AreEqual(2, !lastEven) () [] member this.Scan() = let numEvent = new Event() let sumEvent = numEvent.Publish |> Observable.scan(fun acc i -> acc + i) 0 let lastSum = ref 0 sumEvent.Add(fun sum -> lastSum := sum) numEvent.Trigger(1) Assert.AreEqual(!lastSum, 1) numEvent.Trigger(10) Assert.AreEqual(!lastSum, 11) numEvent.Trigger(100) Assert.AreEqual(!lastSum, 111) () [] member this.Split() = let numEvent = new Event() // Note the different types int -> { string * int, string * string } let positiveEvent, negativeEvent = numEvent.Publish |> Observable.split(fun i -> if i > 0 then Choice1Of2(i.ToString(), i) else Choice2Of2(i.ToString(), i.ToString())) let lastResult = ref "" positiveEvent.Add(fun (msg, i) -> lastResult := sprintf "Positive [%s][%d]" msg i) negativeEvent.Add(fun (msg, msg2) -> lastResult := sprintf "Negative [%s][%s]" msg msg2) numEvent.Trigger(10) Assert.AreEqual("Positive [10][10]", !lastResult) numEvent.Trigger(-3) Assert.AreEqual("Negative [-3][-3]", !lastResult) () ././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/ContinuationsThreadingDetailsStandaloneExe.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/ContinuationsThr0000775000175000017500000001721712260314606032306 0ustar chrischrisopen System.Threading type MyForm(Tests) as this = inherit System.Windows.Forms.Form() do this.Load.Add(fun _ -> Tests() ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(1000); this.Invoke(new System.Action(fun _ -> this.Close())) |> ignore) |> ignore ) #if SYNC_CTXT [] #endif [] let Main(args) = let orig = Thread.CurrentThread.ManagedThreadId let ev = new Event<_>() let pub = ev.Publish #if SYNC_CTXT System.Windows.Forms.Application.ThreadException.Add(fun e -> ev.Trigger("form exception:" + e.Exception.Message)) System.Windows.Forms.Application.SetUnhandledExceptionMode(System.Windows.Forms.UnhandledExceptionMode.CatchException, true) #endif let SWCandContThrowsTimeout(a, timeout:int) = let events = ResizeArray() let add(s:string) = events.Add(s, Thread.CurrentThread.ManagedThreadId=orig) use uhe = System.AppDomain.CurrentDomain.UnhandledException.Subscribe(fun e -> add "unhandled") use fe = pub.Subscribe(fun s -> add s) try Async.StartWithContinuations( a, (fun _ -> add "ok"; failwith "boom"), (fun _ -> add "error"), (fun _ -> add "cancel" ) ) with e -> add("caught:"+e.Message) Thread.Sleep(timeout) #if SYNC_CTXT System.Windows.Forms.Application.DoEvents() // allow form exceptions to get marshaled System.Windows.Forms.Application.DoEvents() #endif events.ToArray() let SWCandContThrows a = SWCandContThrowsTimeout(a, 500) let EmptyParallel() = printf "EmptyParallel " let r = SWCandContThrows(Async.Parallel []) printfn "%A" r let NonEmptyParallel() = printf "NonEmptyParallel " let r = SWCandContThrows(Async.Parallel [async.Return 0]) printfn "%A" r let ParallelSeqArgumentThrows() = printf "ParallelSeqArgumentThrows " let r = SWCandContThrows(Async.Parallel (seq { yield async.Return 0; failwith "zap" })) printfn "%A" r let SleepReturn(n) = printf "Sleep%dReturn " n let a = async { do! Async.Sleep n return 0 } let r = SWCandContThrows(a) printfn "%A" r let Return() = printf "Return " let r = SWCandContThrows(async.Return 0) printfn "%A" r let FromContinuations() = printf "FromContinuationsSuccess " let r = SWCandContThrows(Async.FromContinuations(fun (cont, _, _) -> cont 10)) printfn "%A" r printf "FromContinuationsError " let r = SWCandContThrows(Async.FromContinuations(fun (_, econt, _) -> econt(new System.Exception("err")))) printfn "%A" r printf "FromContinuationsCancel " let r = SWCandContThrows(Async.FromContinuations(fun (_, _, ccont) -> ccont(new System.OperationCanceledException()))) printfn "%A" r let FromContinuationsThrows() = printf "FromContinuationsThrows " let r = SWCandContThrows(Async.FromContinuations(fun (cont, _, _) -> failwith "zing")) printfn "%A" r let FromContinuationsSchedulesFuture() = printf "FromContinuationsSchedulesFutureSuccess " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (cont, _, _) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); cont 10) |> ignore), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureError " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, econt, _) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); econt(new System.Exception("err"))) |> ignore), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureCancel " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, _, ccont) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); ccont(new System.OperationCanceledException())) |> ignore), 1000) Thread.Sleep(1500) printfn "%A" r let FromContinuationsSchedulesFutureAndThrowsSlowly() = printf "FromContinuationsSchedulesFutureSuccessAndThrowsSlowly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (cont, _, _) -> ThreadPool.QueueUserWorkItem(fun _ -> cont 10) |> ignore Thread.Sleep(500) failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureErrorAndThrowsSlowly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, econt, _) -> ThreadPool.QueueUserWorkItem(fun _ -> econt(new System.Exception("err"))) |> ignore Thread.Sleep(500) failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureCancelAndThrowsSlowly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, _, ccont) -> ThreadPool.QueueUserWorkItem(fun _ -> ccont(new System.OperationCanceledException())) |> ignore Thread.Sleep(500) failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r let FromContinuationsSchedulesFutureAndThrowsQuickly() = printf "FromContinuationsSchedulesFutureSuccessAndThrowsQuickly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (cont, _, _) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); cont 10) |> ignore failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureErrorAndThrowsQuickly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, econt, _) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); econt(new System.Exception("err"))) |> ignore failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r printf "FromContinuationsSchedulesFutureCancelAndThrowsQuickly " let r = SWCandContThrowsTimeout(Async.FromContinuations(fun (_, _, ccont) -> ThreadPool.QueueUserWorkItem(fun _ -> Thread.Sleep(500); ccont(new System.OperationCanceledException())) |> ignore failwith "pow"), 1000) Thread.Sleep(1500) printfn "%A" r let AwaitWaitHandleAlreadySignaled(n) = printf "AwaitWaitHandleAlreadySignaled%d " n let mre = new ManualResetEvent(true) let r = SWCandContThrows(Async.AwaitWaitHandle(mre,n)) printfn "%A" r let Tests() = printfn "" #if SYNC_CTXT assert(SynchronizationContext.Current <> null) #endif EmptyParallel() NonEmptyParallel() ParallelSeqArgumentThrows() SleepReturn(1) SleepReturn(0) // ensure we don't ever 'optimize' sleep(0) and change threading behavior Return() FromContinuations() FromContinuationsThrows() FromContinuationsSchedulesFuture() FromContinuationsSchedulesFutureAndThrowsQuickly() FromContinuationsSchedulesFutureAndThrowsSlowly() AwaitWaitHandleAlreadySignaled(0) AwaitWaitHandleAlreadySignaled(1) #if SYNC_CTXT System.Windows.Forms.Application.Run(new MyForm(Tests)) #else Tests() #endif 0 ././@LongLink0000644000000000000000000000015412266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/MailboxProcessorType.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/MailboxProcessor0000775000175000017500000000464312260314606032265 0ustar chrischris// Various tests for the: // Microsoft.FSharp.Control.MailboxProcessor type namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open System.Threading open System.Collections.Generic type Message = | Increment of int | Fetch of AsyncReplyChannel | Reset [] type MailboxProcessorType() = let getSimpleMailbox() = let mailbox = new MailboxProcessor(fun inbox -> let rec loop n = async { let! msg = inbox.Receive() // Sleep 100ms - to validate timing out later do! Async.Sleep(100) match msg with | Increment m -> return! loop (n + m) | Reset -> return! loop 0 | Fetch chan -> do chan.Reply(n) return! loop n () } loop 0 ) mailbox [] member this.DefaultTimeout() = let mailbox = getSimpleMailbox() mailbox.Start() // Verify default is inifinite Assert.AreEqual(mailbox.DefaultTimeout, -1) mailbox.Post(Reset) mailbox.Post(Increment(1)) let result = mailbox.TryPostAndReply(fun chan -> Fetch chan) match result with | Some(1) -> () | None -> Assert.Fail("Timed out") | _ -> Assert.Fail("Did not reply with expected value.") // Verify timeout when updating default timeout // We expect this to fail because of the 100ms sleep in the mailbox mailbox.DefaultTimeout <- 10 mailbox.Post(Reset) mailbox.Post(Increment(1)) let result = mailbox.TryPostAndReply(fun chan -> Fetch chan) match result with | None -> () | _ -> Assert.Fail("Replied with a value, expected to time out.") () [] member this.Dispose() = // No unit test actually hit the Dispose method for the Mailbox... let test() = use mailbox = getSimpleMailbox() mailbox.Start() mailbox.Post(Reset) mailbox.Post(Increment(10)) test() fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/LazyType.fs0000775000175000017500000000744312260314606031163 0ustar chrischris namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open NUnit.Framework open Microsoft.FSharp.Collections open FSharp.Core.Unittests.LibraryTestFx [] type LazyType() = [] member this.Create() = // int let intLazy = Lazy.Create(fun () -> 2) Assert.AreEqual(intLazy.Value, 2) // string let stringLazy = Lazy.Create(fun () -> "string") Assert.AreEqual(stringLazy.Value, "string") // null let nullLazy = Lazy.Create(fun () -> ()) Assert.AreEqual(nullLazy.Value, null) [] member this.CreateFromValue() = // int let intLazy = Lazy.CreateFromValue( 2) Assert.AreEqual(intLazy.Value,2) // string let stringLazy = Lazy.CreateFromValue( "string") Assert.AreEqual(stringLazy.Value,"string") //null let nullLazy = Lazy.CreateFromValue(null) Assert.AreEqual(nullLazy.Value,null) [] member this.Force() = // int let intLazy = Lazy.CreateFromValue( 2) let intForce = intLazy.Force() Assert.AreEqual(intForce,2) // string let stringLazy = Lazy.CreateFromValue( "string") let stringForce = stringLazy.Force() Assert.AreEqual(stringForce,"string") //null let nullLazy = Lazy.CreateFromValue(null) let nullForce = nullLazy.Force() Assert.AreEqual(nullForce,null) [] member this.Value() = // int let intLazy = Lazy.CreateFromValue( 2) Assert.AreEqual(intLazy.Value,2) // string let stringLazy = Lazy.CreateFromValue( "string") Assert.AreEqual(stringLazy.Value,"string") //null let nullLazy = Lazy.CreateFromValue(null) Assert.AreEqual(nullLazy.Value,null) [] member this.IsDelayed() = // int let intLazy = Lazy.Create( fun () -> 1) Assert.AreEqual(not intLazy.IsValueCreated,true) let resultIsDelayed = intLazy.Force() Assert.AreEqual(not intLazy.IsValueCreated,false) // string let stringLazy = Lazy.Create( fun () -> "string") Assert.AreEqual(not stringLazy.IsValueCreated,true) let resultIsDelayed = stringLazy.Force() Assert.AreEqual(not stringLazy.IsValueCreated,false) //null let nullLazy = Lazy.Create(fun () -> null) Assert.AreEqual(not nullLazy.IsValueCreated,true) let resultIsDelayed = nullLazy.Force() Assert.AreEqual(not nullLazy.IsValueCreated,false) [] member this.IsForced() = // int let intLazy = Lazy.Create( fun () -> 1) Assert.AreEqual( intLazy.IsValueCreated,false) let resultIsForced = intLazy.Force() Assert.AreEqual( intLazy.IsValueCreated,true) // string let stringLazy = Lazy.Create( fun () -> "string") Assert.AreEqual( stringLazy.IsValueCreated,false) let resultIsForced = stringLazy.Force() Assert.AreEqual( stringLazy.IsValueCreated,true) //null let nullLazy = Lazy.Create(fun () -> null) Assert.AreEqual( nullLazy.IsValueCreated,false) let resultIsForced = nullLazy.Force() Assert.AreEqual( nullLazy.IsValueCreated,true) [] member this.Printing() = let n = lazy 12 Assert.AreEqual( n.IsValueCreated, false ) // printfn "%A" n Assert.AreEqual( n.IsValueCreated, false ) // printfn "%s" (n.ToString()) Assert.AreEqual( n.IsValueCreated, false ) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncModule.fs0000775000175000017500000004342712260314606031627 0ustar chrischris// Various tests for the: // Microsoft.FSharp.Control.Async module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework // --------------------------------------------------- [] type AsyncModule() = /// Simple asynchronous task that delays 200ms and returns a list of the current tick count let getTicksTask = async { do! Async.SwitchToThreadPool() let tickstamps = ref [] // like timestamps but for ticks :) for i = 1 to 10 do tickstamps := DateTime.Now.Ticks :: !tickstamps do! Async.Sleep(20) return !tickstamps } let wait (wh : #System.Threading.WaitHandle) (timeoutMilliseconds : int) = #if FX_NO_WAITONE_MILLISECONDS wh.WaitOne(TimeSpan.FromMilliseconds (float timeoutMilliseconds)) #else #if FX_NO_EXIT_CONTEXT_FLAGS wh.WaitOne(timeoutMilliseconds) #else wh.WaitOne(timeoutMilliseconds, exitContext=false) #endif #endif let dispose(d : #IDisposable) = d.Dispose() let testErrorAndCancelRace computation = for _ in 1..100 do let cts = new System.Threading.CancellationTokenSource() use barrier = new System.Threading.ManualResetEvent(false) async { cts.Cancel() } |> Async.Start let c = ref 0 let incr () = System.Threading.Interlocked.Increment(c) |> ignore Async.StartWithContinuations( computation, (fun _ -> failwith "success not expected"), (fun _ -> incr()), (fun _ -> incr()), cts.Token ) wait barrier 100 |> ignore if !c = 2 then Assert.Fail("both error and cancel continuations were called") [] member this.AwaitIAsyncResult() = let beginOp, endOp, cancelOp = Async.AsBeginEnd(fun() -> getTicksTask) // Begin the async operation and wait let operationIAR = beginOp ((), new AsyncCallback(fun iar -> ()), null) match Async.AwaitIAsyncResult(operationIAR) |> Async.RunSynchronously with | true -> () | false -> Assert.Fail("Timed out. Expected to succeed.") // When the operation has already completed let operationIAR = beginOp ((), new AsyncCallback(fun iar -> ()), null) sleep(250) let result = Async.AwaitIAsyncResult(operationIAR) |> Async.RunSynchronously match result with | true -> () | false -> Assert.Fail("Timed out. Expected to succeed.") // Now with a timeout let operationIAR = beginOp ((), new AsyncCallback(fun iar -> ()), null) let result = Async.AwaitIAsyncResult(operationIAR, 1) |> Async.RunSynchronously match result with | true -> Assert.Fail("Timeout expected") | false -> () [] member this.``AwaitWaitHandle.Timeout``() = use waitHandle = new System.Threading.ManualResetEvent(false) let startMs = DateTime.Now.Millisecond let r = Async.AwaitWaitHandle(waitHandle, 500) |> Async.RunSynchronously Assert.IsFalse(r, "Timeout expected") let endMs = DateTime.Now.Millisecond let delta = endMs - startMs Assert.IsTrue(abs ((abs delta) - 500) < 50, sprintf "Delta is too big %d" delta) [] member this.``AwaitWaitHandle.TimeoutWithCancellation``() = use barrier = new System.Threading.ManualResetEvent(false) use waitHandle = new System.Threading.ManualResetEvent(false) let cts = new System.Threading.CancellationTokenSource() Async.AwaitWaitHandle(waitHandle, 5000) |> Async.Ignore |> fun c -> Async.StartWithContinuations( c, (failwithf "Unexpected success %A"), (failwithf "Unexpected error %A"), (fun _ -> barrier.Set() |> ignore), cts.Token ) // wait a bit then signal cancellation let timeout = wait barrier 500 Assert.IsFalse(timeout, "timeout=true is not expected") cts.Cancel() // wait 10 seconds for completion let ok = wait barrier 10000 if not ok then Assert.Fail("Async computation was not completed in given time") [] member this.``AwaitWaitHandle.DisposedWaitHandle1``() = let wh = new System.Threading.ManualResetEvent(false) dispose wh let test = async { try let! timeout = Async.AwaitWaitHandle wh Assert.Fail(sprintf "Unexpected success %A" timeout) with | :? ObjectDisposedException -> () | e -> Assert.Fail(sprintf "Unexpected error %A" e) } Async.RunSynchronously test [] member this.``OnCancel.RaceBetweenCancellationHandlerAndDisposingHandlerRegistration``() = let test() = let flag = ref 0 let isSet() = lock flag (fun() -> !flag = 1) let cts = new System.Threading.CancellationTokenSource() let go = async { use! holder = Async.OnCancel(fun() -> lock flag (fun() -> flag := 1) |> ignore) while true do do! Async.Sleep 50 } Async.Start (go, cancellationToken = cts.Token) sleep(100) cts.Cancel() sleep(100) Assert.IsTrue(isSet()) for _i = 1 to 50 do test() [] member this.``OnCancel.CancelThatWasSignalledBeforeRunningTheComputation``() = let test() = let cts = new System.Threading.CancellationTokenSource() let go e (flag : bool ref) = async { let! _ = Async.AwaitWaitHandle e sleep 500 use! _holder = Async.OnCancel(fun () -> flag := true) while true do do! Async.Sleep 100 } let evt = new System.Threading.ManualResetEvent(false) let finish = new System.Threading.ManualResetEvent(false) let cancelledWasCalled = ref false Async.StartWithContinuations(go evt cancelledWasCalled, ignore, ignore, (fun _ -> finish.Set() |> ignore), cancellationToken = cts.Token) sleep 500 evt.Set() |> ignore cts.Cancel() let ok = wait finish 3000 Assert.IsTrue(ok, "Computation should be completed") Assert.IsFalse(!cancelledWasCalled, "Cancellation handler should not be called") for _i = 1 to 50 do test() [] member this.``AwaitWaitHandle.DisposedWaitHandle2``() = let wh = new System.Threading.ManualResetEvent(false) let barrier = new System.Threading.ManualResetEvent(false) let test = async { let! timeout = Async.AwaitWaitHandle(wh, 10000) Assert.IsFalse(timeout, "Timeout expected") barrier.Set() |> ignore } Async.Start test // await 3 secs then dispose waithandle - nothing should happen let timeout = wait barrier 3000 Assert.IsFalse(timeout, "Barrier was reached too early") dispose wh let ok = wait barrier 10000 if not ok then Assert.Fail("Async computation was not completed in given time") [] member this.``RunSynchronously.NoThreadJumpsAndTimeout``() = let longRunningTask = async { sleep(5000) } try Async.RunSynchronously(longRunningTask, timeout = 500) Assert.Fail("TimeoutException expected") with :? System.TimeoutException -> () #if FSHARP_CORE_PORTABLE // do nothing #else [] member this.``RunSynchronously.NoThreadJumpsAndTimeout.DifferentSyncContexts``() = let run syncContext = let old = System.Threading.SynchronizationContext.Current System.Threading.SynchronizationContext.SetSynchronizationContext(syncContext) let longRunningTask = async { sleep(5000) } let failed = ref false try Async.RunSynchronously(longRunningTask, timeout = 500) failed := true with :? System.TimeoutException -> () System.Threading.SynchronizationContext.SetSynchronizationContext(old) if !failed then Assert.Fail("TimeoutException expected") run null run (System.Threading.SynchronizationContext()) #endif [] member this.``RaceBetweenCancellationAndError.AwaitWaitHandle``() = let disposedEvent = new System.Threading.ManualResetEvent(false) dispose disposedEvent testErrorAndCancelRace(Async.AwaitWaitHandle disposedEvent) [] member this.``RaceBetweenCancellationAndError.Sleep``() = testErrorAndCancelRace (Async.Sleep (-5)) [] member this.``AwaitWaitHandle.ExceptionsAfterTimeout``() = let wh = new System.Threading.ManualResetEvent(false) let test = async { try let! timeout = Async.AwaitWaitHandle(wh, 1000) do! Async.Sleep 500 raise (new InvalidOperationException("EXPECTED")) return Assert.Fail("Should not get here") with :? InvalidOperationException as e when e.Message = "EXPECTED" -> return () } Async.RunSynchronously(test) [] member this.``FromContinuationsCanTailCallCurrentThread``() = let cnt = ref 0 let origTid = System.Threading.Thread.CurrentThread.ManagedThreadId let finalTid = ref -1 let rec f n = if n = 0 then async { finalTid := System.Threading.Thread.CurrentThread.ManagedThreadId return () } else async { incr cnt do! Async.FromContinuations(fun (k,_,_) -> k()) do! f (n-1) } // 5000 is big enough that does-not-stackoverflow means we are tailcalling thru FromContinuations f 5000 |> Async.StartImmediate Assert.AreEqual(origTid, !finalTid) Assert.AreEqual(5000, !cnt) [] member this.``AwaitWaitHandle With Cancellation``() = let run wh = async { let! r = Async.AwaitWaitHandle wh Assert.IsTrue(r, "Timeout not expected") return() } let test () = let wh = new System.Threading.ManualResetEvent(false) let cts = new System.Threading.CancellationTokenSource() let asyncs = [ yield! List.init 100 (fun _ -> run wh) yield async { cts.Cancel() } yield async { wh.Set() |> ignore } ] try asyncs |> Async.Parallel |> fun c -> Async.RunSynchronously(c, cancellationToken = cts.Token) |> ignore with #if FX_NO_OPERATION_CANCELLED _ -> () #else :? System.OperationCanceledException -> () // OK #endif for _ in 1..1000 do test() [] member this.``StartWithContinuationsVersusDoBang``() = // worthwhile to note these three // case 1 let r = ref "" async { try do! Async.FromContinuations(fun (s, _, _) -> s()) return failwith "boom" with e-> r := e.Message } |> Async.RunSynchronously Assert.AreEqual("boom", !r) // case 2 r := "" try Async.StartWithContinuations(Async.FromContinuations(fun (s, _, _) -> s()), (fun () -> failwith "boom"), (fun e -> r := e.Message), (fun oce -> ())) with e -> r := "EX: " + e.Message Assert.AreEqual("EX: boom", !r) // case 3 r := "" Async.StartWithContinuations(async { return! failwith "boom" }, (fun x -> ()), (fun e -> r := e.Message), (fun oce -> ())) Assert.AreEqual("boom", !r) #if FSHARP_CORE_PORTABLE // nothing #else [] member this.``SleepContinuations``() = let okCount = ref 0 let errCount = ref 0 let test() = let cts = new System.Threading.CancellationTokenSource() System.Threading.ThreadPool.QueueUserWorkItem(fun _-> System.Threading.Thread.Sleep 50 try Async.StartWithContinuations( Async.Sleep(1000), (fun _ -> printfn "ok"; incr okCount), (fun _ -> printfn "error"; incr errCount), (fun _ -> printfn "cancel"; failwith "BOOM!"), cancellationToken = cts.Token ) with _ -> () ) |> ignore System.Threading.Thread.Sleep 50 try cts.Cancel() with _ -> () System.Threading.Thread.Sleep 1500 printfn "====" for i = 1 to 20 do test() Assert.AreEqual(0, !okCount) Assert.AreEqual(0, !errCount) #endif #if FSHARP_CORE_PORTABLE // nothing #else #if FSHARP_CORE_2_0 // nothing #else #if SILVERLIGHT // nothing #else // we are on the desktop member this.RunExeAndExpectOutput(exeName, expected:string) = let curDir = (new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).LocalPath |> System.IO.Path.GetDirectoryName let psi = System.Diagnostics.ProcessStartInfo(exeName) psi.WorkingDirectory <- curDir psi.RedirectStandardOutput <- true psi.UseShellExecute <- false let p = System.Diagnostics.Process.Start(psi) let out = p.StandardOutput.ReadToEnd() p.WaitForExit() let out = out.Replace("\r\n", "\n") let expected = expected.Replace("\r\n", "\n") Assert.AreEqual(expected, out) [] member this.``ContinuationsThreadingDetails.AsyncWithSyncContext``() = this.RunExeAndExpectOutput("AsyncWithSyncContext.exe", """ EmptyParallel [|("ok", true); ("caught:boom", true)|] NonEmptyParallel [|("ok", true); ("form exception:boom", true)|] ParallelSeqArgumentThrows [|("error", true)|] Sleep1Return [|("ok", true); ("form exception:boom", true)|] Sleep0Return [|("ok", true); ("form exception:boom", true)|] Return [|("ok", true); ("caught:boom", true)|] FromContinuationsSuccess [|("ok", true); ("caught:boom", true)|] FromContinuationsError [|("error", true)|] FromContinuationsCancel [|("cancel", true)|] FromContinuationsThrows [|("error", true)|] FromContinuationsSchedulesFutureSuccess [|("ok", false); ("unhandled", false)|] FromContinuationsSchedulesFutureError [|("error", false)|] FromContinuationsSchedulesFutureCancel [|("cancel", false)|] FromContinuationsSchedulesFutureSuccessAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureErrorAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureCancelAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureSuccessAndThrowsSlowly [|("ok", false); ("unhandled", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] FromContinuationsSchedulesFutureErrorAndThrowsSlowly [|("error", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] FromContinuationsSchedulesFutureCancelAndThrowsSlowly [|("cancel", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] AwaitWaitHandleAlreadySignaled0 [|("ok", true); ("caught:boom", true)|] AwaitWaitHandleAlreadySignaled1 [|("ok", true); ("form exception:boom", true)|] """ ) [] member this.``ContinuationsThreadingDetails.AsyncSansSyncContext``() = this.RunExeAndExpectOutput("AsyncSansSyncContext.exe", """ EmptyParallel [|("ok", true); ("caught:boom", true)|] NonEmptyParallel [|("ok", false); ("unhandled", false)|] ParallelSeqArgumentThrows [|("error", true)|] Sleep1Return [|("ok", false); ("unhandled", false)|] Sleep0Return [|("ok", false); ("unhandled", false)|] Return [|("ok", true); ("caught:boom", true)|] FromContinuationsSuccess [|("ok", true); ("caught:boom", true)|] FromContinuationsError [|("error", true)|] FromContinuationsCancel [|("cancel", true)|] FromContinuationsThrows [|("error", true)|] FromContinuationsSchedulesFutureSuccess [|("ok", false); ("unhandled", false)|] FromContinuationsSchedulesFutureError [|("error", false)|] FromContinuationsSchedulesFutureCancel [|("cancel", false)|] FromContinuationsSchedulesFutureSuccessAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureErrorAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureCancelAndThrowsQuickly [|("error", true); ("unhandled", false)|] FromContinuationsSchedulesFutureSuccessAndThrowsSlowly [|("ok", false); ("unhandled", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] FromContinuationsSchedulesFutureErrorAndThrowsSlowly [|("error", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] FromContinuationsSchedulesFutureCancelAndThrowsSlowly [|("cancel", false); ("caught:A continuation provided by Async.FromContinuations was invoked multiple times", true)|] AwaitWaitHandleAlreadySignaled0 [|("ok", true); ("caught:boom", true)|] AwaitWaitHandleAlreadySignaled1 [|("ok", false); ("unhandled", false)|] """ ) #endif #endif #endiffsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/App.config0000775000175000017500000000153412260314606030752 0ustar chrischris fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/Cancellation.fs0000775000175000017500000002435312260314606031775 0ustar chrischrisnamespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control #nowarn "52" open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open System.Threading [] type CancellationType() = [] member this.CancellationNoCallbacks() = let _ : CancellationTokenSource = null // compilation test use cts1 = new CancellationTokenSource() let token1 = cts1.Token Assert.IsFalse (token1.IsCancellationRequested) use cts2 = new CancellationTokenSource() let token2 = cts2.Token Assert.IsFalse (token2.IsCancellationRequested) cts1.Cancel() Assert.IsTrue(token1.IsCancellationRequested) Assert.IsFalse (token2.IsCancellationRequested) cts2.Cancel() Assert.IsTrue(token2.IsCancellationRequested) [] member this.CancellationRegistration() = let cts = new CancellationTokenSource() let token = cts.Token let called = ref false let r = token.Register(Action(fun _ -> called := true), null) Assert.IsFalse(!called) r.Dispose() cts.Cancel() Assert.IsFalse(!called) [] member this.CancellationWithCallbacks() = let cts1 = new CancellationTokenSource() let cts2 = new CancellationTokenSource() let is1Called = ref false let is2Called = ref false let is3Called = ref false let assertAndOff (expected:bool) (r:bool ref) = Assert.AreEqual(expected,!r); r := false let r1 = cts1.Token.Register(Action(fun _ -> is1Called := true), null) let r2 = cts1.Token.Register(Action(fun _ -> is2Called := true), null) let r3 = cts2.Token.Register(Action(fun _ -> is3Called := true), null) Assert.IsFalse(!is1Called) Assert.IsFalse(!is2Called) r2.Dispose() // Cancelling cts1: r2 is diposed and r3 is for cts2, only r1 should be called cts1.Cancel() assertAndOff true is1Called assertAndOff false is2Called assertAndOff false is3Called Assert.IsTrue(cts1.Token.IsCancellationRequested) let isAnotherOneCalled = ref false let _ = cts1.Token.Register(Action(fun _ -> isAnotherOneCalled := true), null) assertAndOff true isAnotherOneCalled // Cancelling cts2: only r3 should be called cts2.Cancel() assertAndOff false is1Called assertAndOff false is2Called assertAndOff true is3Called Assert.IsTrue(cts2.Token.IsCancellationRequested) // Cancelling cts1 again: no one should be called cts1.Cancel() assertAndOff false is1Called assertAndOff false is2Called assertAndOff false is3Called // Disposing let token = cts2.Token cts2.Dispose() Assert.IsTrue(token.IsCancellationRequested) let () = let mutable odeThrown = false try r3.Dispose() with | :? ObjectDisposedException -> odeThrown <- true Assert.IsFalse(odeThrown) let () = let mutable odeThrown = false try cts2.Token.Register(Action(fun _ -> ()), null) |> ignore with | :? ObjectDisposedException -> odeThrown <- true Assert.IsTrue(odeThrown) () #if FIXED_GITHUB_FSHARP_FSHARP_ISSUES_221 // See https://github.com/fsharp/fsharp/issues/221 [] member this.CallbackOrder() = use cts = new CancellationTokenSource() let current = ref 0 let action (o:obj) = Assert.AreEqual(!current, (unbox o : int)); current := !current + 1 cts.Token.Register(Action(action), box 2) |> ignore cts.Token.Register(Action(action), box 1) |> ignore cts.Token.Register(Action(action), box 0) |> ignore cts.Cancel() [] member this.CallbackExceptions() = use cts = new CancellationTokenSource() let action (o:obj) = new InvalidOperationException(String.Format("{0}", o)) |> raise cts.Token.Register(Action(action), box 0) |> ignore cts.Token.Register(Action(action), box 1) |> ignore cts.Token.Register(Action(action), box 2) |> ignore let mutable exnThrown = false try cts.Cancel() with | :? AggregateException as ae -> exnThrown <- true ae.InnerExceptions |> Seq.iter (fun e -> (e :? InvalidOperationException) |> Assert.IsTrue) let msgs = ae.InnerExceptions |> Seq.map (fun e -> e.Message) |> Seq.toList Assert.AreEqual(["2";"1";"0"], msgs) Assert.IsTrue exnThrown Assert.IsTrue cts.Token.IsCancellationRequested #endif [] member this.LinkedSources() = let () = use cts1 = new CancellationTokenSource() use cts2 = new CancellationTokenSource() use ctsLinked = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token) let linkedToken = ctsLinked.Token Assert.IsFalse(linkedToken.IsCancellationRequested) cts1.Cancel() Assert.IsTrue(linkedToken.IsCancellationRequested) let () = use cts1 = new CancellationTokenSource() use cts2 = new CancellationTokenSource() use ctsLinked = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token) let linkedToken = ctsLinked.Token Assert.IsFalse(linkedToken.IsCancellationRequested) cts2.Cancel() Assert.IsTrue(linkedToken.IsCancellationRequested) let () = use cts1 = new CancellationTokenSource() use cts2 = new CancellationTokenSource() cts1.Cancel() use ctsLinked = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token) let linkedToken = ctsLinked.Token Assert.IsTrue(linkedToken.IsCancellationRequested) let doExec = ref false linkedToken.Register(Action(fun _ -> doExec := true), null) |> ignore Assert.IsTrue(!doExec) let () = use cts1 = new CancellationTokenSource() use cts2 = new CancellationTokenSource() use ctsLinked = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, cts2.Token) let linkedToken = ctsLinked.Token let doExec = ref false linkedToken.Register(Action(fun _ -> doExec := true), null) |> ignore Assert.IsFalse(!doExec) cts1.Cancel() Assert.IsTrue(!doExec) let () = use cts1 = new CancellationTokenSource() use cts2 = new CancellationTokenSource() let token1 = cts1.Token let token2 = cts2.Token use ctsLinked = CancellationTokenSource.CreateLinkedTokenSource(token1, token2) let linkedToken = ctsLinked.Token Assert.IsFalse(linkedToken.IsCancellationRequested) ctsLinked.Cancel() Assert.IsTrue(linkedToken.IsCancellationRequested) Assert.IsFalse(token1.IsCancellationRequested) Assert.IsFalse(token2.IsCancellationRequested) () [] member this.TestCancellationRace() = use cts = new CancellationTokenSource() let token = cts.Token let callbackRun = ref false let reg = token.Register(Action(fun _ -> lock callbackRun (fun() -> Assert.IsFalse(!callbackRun, "Callback should run only once") callbackRun := true ) ), null) Assert.IsFalse(!callbackRun) let asyncs = seq { for i in 1..1000 do yield async { cts.Cancel() } } asyncs |> Async.Parallel |> Async.RunSynchronously |> ignore Assert.IsTrue(!callbackRun, "Callback should run at least once") [] member this.TestRegistrationRace() = let asyncs = seq { for _ in 1..1000 do let cts = new CancellationTokenSource() let token = cts.Token yield async { cts.Cancel() } let callback (_:obj) = Assert.IsTrue(token.IsCancellationRequested) yield async { do token.Register(Action(callback), null) |> ignore } } (asyncs |> Async.Parallel |> Async.RunSynchronously |> ignore) [] member this.LinkedSourceCancellationRace() = let asyncs = seq { for _ in 1..1000 do let cts1 = new CancellationTokenSource() let token1 = cts1.Token let cts2 = new CancellationTokenSource() let token2 = cts2.Token let linkedCts = CancellationTokenSource.CreateLinkedTokenSource(token1, token2) yield async { do cts1.Cancel() } yield async { do linkedCts.Dispose() } } asyncs |> Async.Parallel |> Async.RunSynchronously |> ignore [] member this.Equality() = let cts1 = new CancellationTokenSource() let cts2 = new CancellationTokenSource() let t1a = cts1.Token let t1b = cts1.Token let t2 = cts2.Token Assert.IsTrue((t1a = t1b)) Assert.IsFalse(t1a <> t1b) Assert.IsTrue(t1a <> t2) Assert.IsFalse((t1a = t2)) let r1a = t1a.Register(Action(fun _ -> ()), null) let r1b = t1b.Register(Action(fun _ -> ()), null) let r2 = t2.Register(Action(fun _ -> ()), null) let r1a' = r1a Assert.IsTrue((r1a = r1a')) Assert.IsFalse((r1a = r1b)) Assert.IsFalse((r1a = r2)) Assert.IsFalse((r1a <> r1a')) Assert.IsTrue((r1a <> r1b)) Assert.IsTrue((r1a <> r2)) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Control/AsyncType.fs0000775000175000017500000001740512260314606031320 0ustar chrischris// Various tests for the: // Microsoft.FSharp.Control.Async type namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Control open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open System.Threading #if FX_NO_TPL_PARALLEL #else open System.Threading.Tasks #endif type RunWithContinuationsTest_WhatToDo = | Exit | Cancel | Throw [] type AsyncType() = let ignoreSynchCtx f = #if SILVERLIGHT use event = new ManualResetEvent(false) let x : ref = ref null ThreadPool.QueueUserWorkItem(fun _ -> try try f() with e -> x := e finally event.Set() |> ignore ) |> ignore event.WaitOne() |> ignore match !x with | null -> () | e -> raise <| e #else f () #endif [] member this.StartWithContinuations() = let whatToDo = ref Exit let asyncWorkflow() = async { let currentState = !whatToDo // Act let result = match currentState with | Exit -> 1 | Cancel -> Async.CancelDefaultToken() sleep(1 * 1000) 0 | Throw -> raise <| System.Exception("You asked me to do it!") return result } let onSuccess x = match !whatToDo with | Cancel | Throw -> Assert.Fail("Expected onSuccess but whatToDo was not Exit", [| whatToDo |]) | Exit -> () let onException x = match !whatToDo with | Exit | Cancel -> Assert.Fail("Expected onException but whatToDo was not Throw", [| whatToDo |]) | Throw -> () let onCancel x = match !whatToDo with | Exit | Throw -> Assert.Fail("Expected onCancel but whatToDo was not Cancel", [| whatToDo |]) | Cancel -> () // Run it once. whatToDo := Exit Async.StartWithContinuations(asyncWorkflow(), onSuccess, onException, onCancel) whatToDo := Cancel Async.StartWithContinuations(asyncWorkflow(), onSuccess, onException, onCancel) whatToDo := Throw Async.StartWithContinuations(asyncWorkflow(), onSuccess, onException, onCancel) () [] member this.AsyncSleepCancellation1() = ignoreSynchCtx (fun () -> let computation = Async.Sleep(10000000) let result = ref "" use cts = new CancellationTokenSource() Async.StartWithContinuations(computation, (fun _ -> result := "Ok"), (fun _ -> result := "Exception"), (fun _ -> result := "Cancel"), cts.Token) cts.Cancel() Assert.AreEqual("Cancel", !result) ) [] member this.AsyncSleepCancellation2() = ignoreSynchCtx (fun () -> let computation = Async.Sleep(10) for i in 1..100 do let result = ref "" use completedEvent = new ManualResetEvent(false) use cts = new CancellationTokenSource() Async.StartWithContinuations(computation, (fun _ -> result := "Ok"; completedEvent.Set() |> ignore), (fun _ -> result := "Exception"; completedEvent.Set() |> ignore), (fun _ -> result := "Cancel"; completedEvent.Set() |> ignore), cts.Token) sleep(10) cts.Cancel() completedEvent.WaitOne() |> Assert.IsTrue Assert.IsTrue(!result = "Cancel" || !result = "Ok") ) #if FX_NO_TPL_PARALLEL #else member private this.WaitASec (t:Task) = let result = t.Wait(TimeSpan(hours=0,minutes=0,seconds=1)) Assert.IsTrue(result) [] member this.CreateTask () = let s = "Hello tasks!" let a = async { return s } use t : Task = Async.StartAsTask a this.WaitASec t Assert.IsTrue (t.IsCompleted) Assert.AreEqual(s, t.Result) [] member this.StartTask () = let s = "Hello tasks!" let a = async { return s } use t = Async.StartAsTask a this.WaitASec t Assert.IsTrue (t.IsCompleted) Assert.AreEqual(s, t.Result) [] member this.ExceptionPropagatesToTask () = let a = async { do raise (Exception ()) } use t = Async.StartAsTask a let mutable exceptionThrown = false try this.WaitASec t with e -> exceptionThrown <- true Assert.IsTrue (t.IsFaulted) Assert.IsTrue(exceptionThrown) [] member this.CancellationPropagatesToTask () = let a = async { while true do () } use t = Async.StartAsTask a Async.CancelDefaultToken () let mutable exceptionThrown = false try this.WaitASec t with e -> exceptionThrown <- true Assert.IsTrue (exceptionThrown) Assert.IsTrue(t.IsCanceled) [] member this.CancellationPropagatesToGroup () = let ewh = new ManualResetEvent(false) let cancelled = ref false let a = async { use! holder = Async.OnCancel (fun _ -> cancelled := true) ewh.Set() |> Assert.IsTrue while true do () } let cts = new CancellationTokenSource() let token = cts.Token use t = Async.StartAsTask(a, cancellationToken=token) // printfn "%A" t.Status ewh.WaitOne() |> Assert.IsTrue cts.Cancel() // printfn "%A" t.Status let mutable exceptionThrown = false try this.WaitASec t with e -> exceptionThrown <- true Assert.IsTrue (exceptionThrown) Assert.IsTrue(t.IsCanceled) Assert.IsTrue(!cancelled) [] member this.TaskAsyncValue () = let s = "Test" use t = Task.Factory.StartNew(Func<_>(fun () -> s)) let a = async { let! s1 = Async.AwaitTask(t) return s = s1 } Async.RunSynchronously(a, 1000) |> Assert.IsTrue [] member this.TaskAsyncValueException () = use t = Task.Factory.StartNew(Func(fun () -> raise <| Exception())) let a = async { try let! v = Async.AwaitTask(t) return false with e -> return true } Async.RunSynchronously(a, 1000) |> Assert.IsTrue [] member this.TaskAsyncValueCancellation () = use ewh = new ManualResetEvent(false) let cts = new CancellationTokenSource() let token = cts.Token use t : Task= Task.Factory.StartNew(Func(fun () -> while not token.IsCancellationRequested do ()), token) let cancelled = ref true let a = async { use! _holder = Async.OnCancel(fun _ -> ewh.Set() |> ignore) let! v = Async.AwaitTask(t) return v } Async.Start a cts.Cancel() ewh.WaitOne(10000) |> ignore #endiffsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Lazy.fs0000775000175000017500000001206512260314606023547 0ustar chrischris namespace SystematicUnitTests.FSharp_Core.Microsoft_FSharp_Control open System open NUnit.Framework open Microsoft.FSharp.Collections open SystematicUnitTests.LibraryTestFx // Various tests for the: // Microsoft.FSharp.Collections prim types (* [Test Strategy] Make sure each method works on: * Integer (value type) * String (reference type) * Null *) [] type LazyType() = [] member this.Create() = // int let intLazy = Lazy.Create(fun () -> 2) Assert.AreEqual(intLazy.Value,2) // string let stringLazy = Lazy.Create(fun () -> "string") Assert.AreEqual(stringLazy.Value,"string") //null let nullLazy = Lazy.Create(fun () -> ()) Assert.AreEqual(nullLazy.Value,null) [] member this.CreateFromValue() = // int let intLazy = Lazy.CreateFromValue( 2) Assert.AreEqual(intLazy.Value,2) // string let stringLazy = Lazy.CreateFromValue( "string") Assert.AreEqual(stringLazy.Value,"string") //null let nullLazy = Lazy.CreateFromValue(null) Assert.AreEqual(nullLazy.Value,null) [] member this.Force() = // int let intLazy = Lazy.CreateFromValue( 2) let intForce = intLazy.Force() Assert.AreEqual(intForce,2) // string let stringLazy = Lazy.CreateFromValue( "string") let stringForce = stringLazy.Force() Assert.AreEqual(stringForce,"string") //null let nullLazy = Lazy.CreateFromValue(null) let nullForce = nullLazy.Force() Assert.AreEqual(nullForce,null) [] member this.SynchronizedForce() = // int let intLazy = Lazy.CreateFromValue( 2) let intSynchronizedForce = intLazy.SynchronizedForce() Assert.AreEqual(intSynchronizedForce,2) // string let stringLazy = Lazy.CreateFromValue( "string") let stringSynchronizedForce = stringLazy.SynchronizedForce() Assert.AreEqual(stringSynchronizedForce,"string") //null let nullLazy = Lazy.CreateFromValue(null) let nullSynchronizedForce = nullLazy.SynchronizedForce() Assert.AreEqual(nullSynchronizedForce,null) [] member this.UnsynchronizedForce() = // int let intLazy = Lazy.CreateFromValue( 2) let intUnsynchronizedForce = intLazy.UnsynchronizedForce() Assert.AreEqual(intUnsynchronizedForce,2) // string let stringLazy = Lazy.CreateFromValue( "string") let stringUnsynchronizedForce = stringLazy.UnsynchronizedForce() Assert.AreEqual(stringUnsynchronizedForce,"string") //null let nullLazy = Lazy.CreateFromValue(null) let nullUnsynchronizedForce = nullLazy.UnsynchronizedForce() Assert.AreEqual(nullUnsynchronizedForce,null) [] member this.Value() = // int let intLazy = Lazy.CreateFromValue( 2) Assert.AreEqual(intLazy.Value,2) // string let stringLazy = Lazy.CreateFromValue( "string") Assert.AreEqual(stringLazy.Value,"string") //null let nullLazy = Lazy.CreateFromValue(null) Assert.AreEqual(nullLazy.Value,null) [] member this.IsDelayed() = // int let intLazy = Lazy.Create( fun () -> 1) Assert.AreEqual( intLazy.IsDelayed,true) let resultIsDelayed = intLazy.Force() Assert.AreEqual( intLazy.IsDelayed,false) // string let stringLazy = Lazy.Create( fun () -> "string") Assert.AreEqual( stringLazy.IsDelayed,true) let resultIsDelayed = stringLazy.Force() Assert.AreEqual( stringLazy.IsDelayed,false) //null let nullLazy = Lazy.Create(fun () -> null) Assert.AreEqual( nullLazy.IsDelayed,true) let resultIsDelayed = nullLazy.Force() Assert.AreEqual( nullLazy.IsDelayed,false) [] member this.IsForced() = // int let intLazy = Lazy.Create( fun () -> 1) Assert.AreEqual( intLazy.IsForced,false) let resultIsForced = intLazy.Force() Assert.AreEqual( intLazy.IsForced,true) // string let stringLazy = Lazy.Create( fun () -> "string") Assert.AreEqual( stringLazy.IsForced,false) let resultIsForced = stringLazy.Force() Assert.AreEqual( stringLazy.IsForced,true) //null let nullLazy = Lazy.Create(fun () -> null) Assert.AreEqual( nullLazy.IsForced,false) let resultIsForced = nullLazy.Force() Assert.AreEqual( nullLazy.IsForced,true) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/0000775000175000017500000000000012260314606026305 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/PrintfTests.fs0000775000175000017500000000124712260314606031133 0ustar chrischris// Various tests for: // Microsoft.FSharp.Core.ExtraTopLevelOperators.printf namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Core open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework [] type PrintfTests() = let test fmt arg (expected:string) = let actual = sprintf fmt arg Assert.AreEqual(expected, actual) [] member this.FormatAndPrecisionSpecifiers() = test "%10s" "abc" " abc" test "%-10s" "abc" "abc " test "%10d" 123 " 123" test "%-10d" 123 "123 " test "%10c" 'a' " a" test "%-10c" 'a' "a "././@LongLink0000644000000000000000000000015412266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/IntConversionsGenerated.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/IntConversionsGener0000775000175000017500000007652212260314606032213 0ustar chrischris // This file is automatically generated by IntConversionsTestGenerator.fsx namespace FSharp.Core.Unittests.FSharp_Core.FSharp.Core open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx module UInt8 = let MinValue = Byte.MinValue let MaxValue = Byte.MaxValue module Int8 = let MinValue = SByte.MinValue let MaxValue = SByte.MaxValue [] type IntConversionsGenerated() = [] member this.``sbyte.m1.To.byte`` () = let i : sbyte = -1y Assert.AreEqual (Byte.MaxValue, byte i) [] member this.``int8.m1.To.byte`` () = let i : int8 = -1y Assert.AreEqual (Byte.MaxValue, byte i) [] member this.``int16.m1.To.byte`` () = let i : int16 = -1s Assert.AreEqual (Byte.MaxValue, byte i) [] member this.``int32.m1.To.byte`` () = let i : int32 = -1l Assert.AreEqual (Byte.MaxValue, byte i) [] member this.``int64.m1.To.byte`` () = let i : int64 = -1L Assert.AreEqual (Byte.MaxValue, byte i) [] member this.``sbyte.m1.To.uint8`` () = let i : sbyte = -1y Assert.AreEqual (UInt8.MaxValue, uint8 i) [] member this.``int8.m1.To.uint8`` () = let i : int8 = -1y Assert.AreEqual (UInt8.MaxValue, uint8 i) [] member this.``int16.m1.To.uint8`` () = let i : int16 = -1s Assert.AreEqual (UInt8.MaxValue, uint8 i) [] member this.``int32.m1.To.uint8`` () = let i : int32 = -1l Assert.AreEqual (UInt8.MaxValue, uint8 i) [] member this.``int64.m1.To.uint8`` () = let i : int64 = -1L Assert.AreEqual (UInt8.MaxValue, uint8 i) [] member this.``sbyte.m1.To.uint16`` () = let i : sbyte = -1y Assert.AreEqual (UInt16.MaxValue, uint16 i) [] member this.``int8.m1.To.uint16`` () = let i : int8 = -1y Assert.AreEqual (UInt16.MaxValue, uint16 i) [] member this.``int16.m1.To.uint16`` () = let i : int16 = -1s Assert.AreEqual (UInt16.MaxValue, uint16 i) [] member this.``int32.m1.To.uint16`` () = let i : int32 = -1l Assert.AreEqual (UInt16.MaxValue, uint16 i) [] member this.``int64.m1.To.uint16`` () = let i : int64 = -1L Assert.AreEqual (UInt16.MaxValue, uint16 i) [] member this.``sbyte.m1.To.uint32`` () = let i : sbyte = -1y Assert.AreEqual (UInt32.MaxValue, uint32 i) [] member this.``int8.m1.To.uint32`` () = let i : int8 = -1y Assert.AreEqual (UInt32.MaxValue, uint32 i) [] member this.``int16.m1.To.uint32`` () = let i : int16 = -1s Assert.AreEqual (UInt32.MaxValue, uint32 i) [] member this.``int32.m1.To.uint32`` () = let i : int32 = -1l Assert.AreEqual (UInt32.MaxValue, uint32 i) [] member this.``int64.m1.To.uint32`` () = let i : int64 = -1L Assert.AreEqual (UInt32.MaxValue, uint32 i) [] member this.``sbyte.m1.To.uint64`` () = let i : sbyte = -1y Assert.AreEqual (UInt64.MaxValue, uint64 i) [] member this.``int8.m1.To.uint64`` () = let i : int8 = -1y Assert.AreEqual (UInt64.MaxValue, uint64 i) [] member this.``int16.m1.To.uint64`` () = let i : int16 = -1s Assert.AreEqual (UInt64.MaxValue, uint64 i) [] member this.``int32.m1.To.uint64`` () = let i : int32 = -1l Assert.AreEqual (UInt64.MaxValue, uint64 i) [] member this.``int64.m1.To.uint64`` () = let i : int64 = -1L Assert.AreEqual (UInt64.MaxValue, uint64 i) [] member this.``sbyte.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : sbyte = -1y Assert.AreEqual (minus1, sbyte i) [] member this.``int8.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int8 = -1y Assert.AreEqual (minus1, sbyte i) [] member this.``int16.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int16 = -1s Assert.AreEqual (minus1, sbyte i) [] member this.``int32.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int32 = -1l Assert.AreEqual (minus1, sbyte i) [] member this.``int64.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int64 = -1L Assert.AreEqual (minus1, sbyte i) [] member this.``sbyte.m1.To.int8`` () = let minus1 : int8 = -1y let i : sbyte = -1y Assert.AreEqual (minus1, int8 i) [] member this.``int8.m1.To.int8`` () = let minus1 : int8 = -1y let i : int8 = -1y Assert.AreEqual (minus1, int8 i) [] member this.``int16.m1.To.int8`` () = let minus1 : int8 = -1y let i : int16 = -1s Assert.AreEqual (minus1, int8 i) [] member this.``int32.m1.To.int8`` () = let minus1 : int8 = -1y let i : int32 = -1l Assert.AreEqual (minus1, int8 i) [] member this.``int64.m1.To.int8`` () = let minus1 : int8 = -1y let i : int64 = -1L Assert.AreEqual (minus1, int8 i) [] member this.``sbyte.m1.To.int16`` () = let minus1 : int16 = -1s let i : sbyte = -1y Assert.AreEqual (minus1, int16 i) [] member this.``int8.m1.To.int16`` () = let minus1 : int16 = -1s let i : int8 = -1y Assert.AreEqual (minus1, int16 i) [] member this.``int16.m1.To.int16`` () = let minus1 : int16 = -1s let i : int16 = -1s Assert.AreEqual (minus1, int16 i) [] member this.``int32.m1.To.int16`` () = let minus1 : int16 = -1s let i : int32 = -1l Assert.AreEqual (minus1, int16 i) [] member this.``int64.m1.To.int16`` () = let minus1 : int16 = -1s let i : int64 = -1L Assert.AreEqual (minus1, int16 i) [] member this.``sbyte.m1.To.int32`` () = let minus1 : int32 = -1l let i : sbyte = -1y Assert.AreEqual (minus1, int32 i) [] member this.``int8.m1.To.int32`` () = let minus1 : int32 = -1l let i : int8 = -1y Assert.AreEqual (minus1, int32 i) [] member this.``int16.m1.To.int32`` () = let minus1 : int32 = -1l let i : int16 = -1s Assert.AreEqual (minus1, int32 i) [] member this.``int32.m1.To.int32`` () = let minus1 : int32 = -1l let i : int32 = -1l Assert.AreEqual (minus1, int32 i) [] member this.``int64.m1.To.int32`` () = let minus1 : int32 = -1l let i : int64 = -1L Assert.AreEqual (minus1, int32 i) [] member this.``sbyte.m1.To.int64`` () = let minus1 : int64 = -1L let i : sbyte = -1y Assert.AreEqual (minus1, int64 i) [] member this.``int8.m1.To.int64`` () = let minus1 : int64 = -1L let i : int8 = -1y Assert.AreEqual (minus1, int64 i) [] member this.``int16.m1.To.int64`` () = let minus1 : int64 = -1L let i : int16 = -1s Assert.AreEqual (minus1, int64 i) [] member this.``int32.m1.To.int64`` () = let minus1 : int64 = -1L let i : int32 = -1l Assert.AreEqual (minus1, int64 i) [] member this.``int64.m1.To.int64`` () = let minus1 : int64 = -1L let i : int64 = -1L Assert.AreEqual (minus1, int64 i) [] member this.``byte.MaxValue.To.int16`` () = let sourceMaxValue : int16 = 0xFFs Assert.AreEqual (sourceMaxValue, int16 Byte.MaxValue) [] member this.``uint8.MaxValue.To.int16`` () = let sourceMaxValue : int16 = 0xFFs Assert.AreEqual (sourceMaxValue, int16 UInt8.MaxValue) [] member this.``byte.MaxValue.To.uint16`` () = let sourceMaxValue : uint16 = 0xFFus Assert.AreEqual (sourceMaxValue, uint16 Byte.MaxValue) [] member this.``uint8.MaxValue.To.uint16`` () = let sourceMaxValue : uint16 = 0xFFus Assert.AreEqual (sourceMaxValue, uint16 UInt8.MaxValue) [] member this.``byte.MaxValue.To.int32`` () = let sourceMaxValue : int32 = 0xFFl Assert.AreEqual (sourceMaxValue, int32 Byte.MaxValue) [] member this.``uint8.MaxValue.To.int32`` () = let sourceMaxValue : int32 = 0xFFl Assert.AreEqual (sourceMaxValue, int32 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.int32`` () = let sourceMaxValue : int32 = 0xFFFFl Assert.AreEqual (sourceMaxValue, int32 UInt16.MaxValue) [] member this.``byte.MaxValue.To.uint32`` () = let sourceMaxValue : uint32 = 0xFFul Assert.AreEqual (sourceMaxValue, uint32 Byte.MaxValue) [] member this.``uint8.MaxValue.To.uint32`` () = let sourceMaxValue : uint32 = 0xFFul Assert.AreEqual (sourceMaxValue, uint32 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.uint32`` () = let sourceMaxValue : uint32 = 0xFFFFul Assert.AreEqual (sourceMaxValue, uint32 UInt16.MaxValue) [] member this.``byte.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFL Assert.AreEqual (sourceMaxValue, int64 Byte.MaxValue) [] member this.``uint8.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFL Assert.AreEqual (sourceMaxValue, int64 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFFFL Assert.AreEqual (sourceMaxValue, int64 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFFFFFFFL Assert.AreEqual (sourceMaxValue, int64 UInt32.MaxValue) [] member this.``byte.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFuL Assert.AreEqual (sourceMaxValue, uint64 Byte.MaxValue) [] member this.``uint8.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFuL Assert.AreEqual (sourceMaxValue, uint64 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFFFuL Assert.AreEqual (sourceMaxValue, uint64 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFFFFFFFuL Assert.AreEqual (sourceMaxValue, uint64 UInt32.MaxValue) [] member this.``byte.MaxValue.To.sbyte`` () = Assert.AreEqual (-1y, sbyte Byte.MaxValue) [] member this.``uint8.MaxValue.To.sbyte`` () = Assert.AreEqual (-1y, sbyte UInt8.MaxValue) [] member this.``uint16.MaxValue.To.sbyte`` () = Assert.AreEqual (-1y, sbyte UInt16.MaxValue) [] member this.``uint32.MaxValue.To.sbyte`` () = Assert.AreEqual (-1y, sbyte UInt32.MaxValue) [] member this.``uint64.MaxValue.To.sbyte`` () = Assert.AreEqual (-1y, sbyte UInt64.MaxValue) [] member this.``byte.MaxValue.To.int8`` () = Assert.AreEqual (-1y, int8 Byte.MaxValue) [] member this.``uint8.MaxValue.To.int8`` () = Assert.AreEqual (-1y, int8 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.int8`` () = Assert.AreEqual (-1y, int8 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.int8`` () = Assert.AreEqual (-1y, int8 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.int8`` () = Assert.AreEqual (-1y, int8 UInt64.MaxValue) [] member this.``uint16.MaxValue.To.int16`` () = Assert.AreEqual (-1s, int16 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.int16`` () = Assert.AreEqual (-1s, int16 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.int16`` () = Assert.AreEqual (-1s, int16 UInt64.MaxValue) [] member this.``uint32.MaxValue.To.int32`` () = Assert.AreEqual (-1l, int32 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.int32`` () = Assert.AreEqual (-1l, int32 UInt64.MaxValue) [] member this.``uint64.MaxValue.To.int64`` () = Assert.AreEqual (-1L, int64 UInt64.MaxValue) [] member this.``byte.MaxValue.To.byte`` () = Assert.AreEqual (Byte.MaxValue, byte Byte.MaxValue) [] member this.``uint8.MaxValue.To.byte`` () = Assert.AreEqual (Byte.MaxValue, byte UInt8.MaxValue) [] member this.``uint16.MaxValue.To.byte`` () = Assert.AreEqual (Byte.MaxValue, byte UInt16.MaxValue) [] member this.``uint32.MaxValue.To.byte`` () = Assert.AreEqual (Byte.MaxValue, byte UInt32.MaxValue) [] member this.``uint64.MaxValue.To.byte`` () = Assert.AreEqual (Byte.MaxValue, byte UInt64.MaxValue) [] member this.``byte.MaxValue.To.uint8`` () = Assert.AreEqual (UInt8.MaxValue, uint8 Byte.MaxValue) [] member this.``uint8.MaxValue.To.uint8`` () = Assert.AreEqual (UInt8.MaxValue, uint8 UInt8.MaxValue) [] member this.``uint16.MaxValue.To.uint8`` () = Assert.AreEqual (UInt8.MaxValue, uint8 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.uint8`` () = Assert.AreEqual (UInt8.MaxValue, uint8 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.uint8`` () = Assert.AreEqual (UInt8.MaxValue, uint8 UInt64.MaxValue) [] member this.``uint16.MaxValue.To.uint16`` () = Assert.AreEqual (UInt16.MaxValue, uint16 UInt16.MaxValue) [] member this.``uint32.MaxValue.To.uint16`` () = Assert.AreEqual (UInt16.MaxValue, uint16 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.uint16`` () = Assert.AreEqual (UInt16.MaxValue, uint16 UInt64.MaxValue) [] member this.``uint32.MaxValue.To.uint32`` () = Assert.AreEqual (UInt32.MaxValue, uint32 UInt32.MaxValue) [] member this.``uint64.MaxValue.To.uint32`` () = Assert.AreEqual (UInt32.MaxValue, uint32 UInt64.MaxValue) [] member this.``uint64.MaxValue.To.uint64`` () = Assert.AreEqual (UInt64.MaxValue, uint64 UInt64.MaxValue) [] member this.``sbyte.m1.To.nativeint`` () = Assert.AreEqual (-1n, nativeint -1y) [] member this.``int8.m1.To.nativeint`` () = Assert.AreEqual (-1n, nativeint -1y) [] member this.``int16.m1.To.nativeint`` () = Assert.AreEqual (-1n, nativeint -1s) [] member this.``int32.m1.To.nativeint`` () = Assert.AreEqual (-1n, nativeint -1l) [] member this.``int64.m1.To.nativeint`` () = Assert.AreEqual (-1n, nativeint -1L) [] member this.``byte.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFn Assert.AreEqual (sourceMaxValue, nativeint Byte.MaxValue) else Assert.AreEqual (-1n, nativeint Byte.MaxValue) [] member this.``uint8.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFn Assert.AreEqual (sourceMaxValue, nativeint UInt8.MaxValue) else Assert.AreEqual (-1n, nativeint UInt8.MaxValue) [] member this.``uint16.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFn Assert.AreEqual (sourceMaxValue, nativeint UInt16.MaxValue) else Assert.AreEqual (-1n, nativeint UInt16.MaxValue) [] member this.``uint32.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFFFFFn Assert.AreEqual (sourceMaxValue, nativeint UInt32.MaxValue) else Assert.AreEqual (-1n, nativeint UInt32.MaxValue) [] member this.``uint64.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFFFFFFFFFFFFFn Assert.AreEqual (sourceMaxValue, nativeint UInt64.MaxValue) else Assert.AreEqual (-1n, nativeint UInt64.MaxValue) member private this.UnativeintMaxValue = let mutable unativeintMaxValue : unativeint = 0un for i = 1 to sizeof do unativeintMaxValue <- (unativeintMaxValue <<< 8) ||| 0xFFun unativeintMaxValue [] member this.``sbyte.m1.To.unativeint`` () = Assert.AreEqual (this.UnativeintMaxValue, unativeint -1y) [] member this.``int8.m1.To.unativeint`` () = Assert.AreEqual (this.UnativeintMaxValue, unativeint -1y) [] member this.``int16.m1.To.unativeint`` () = Assert.AreEqual (this.UnativeintMaxValue, unativeint -1s) [] member this.``int32.m1.To.unativeint`` () = Assert.AreEqual (this.UnativeintMaxValue, unativeint -1l) [] member this.``int64.m1.To.unativeint`` () = Assert.AreEqual (this.UnativeintMaxValue, unativeint -1L) [] member this.``byte.m1.To.unativeint`` () = if sizeof > sizeof then let sourceMaxValue : unativeint = 0xFFun Assert.AreEqual (sourceMaxValue, unativeint Byte.MaxValue) else Assert.AreEqual (this.UnativeintMaxValue, unativeint Byte.MaxValue) [] member this.``uint8.m1.To.unativeint`` () = if sizeof > sizeof then let sourceMaxValue : unativeint = 0xFFun Assert.AreEqual (sourceMaxValue, unativeint UInt8.MaxValue) else Assert.AreEqual (this.UnativeintMaxValue, unativeint UInt8.MaxValue) [] member this.``uint16.m1.To.unativeint`` () = if sizeof > sizeof then let sourceMaxValue : unativeint = 0xFFFFun Assert.AreEqual (sourceMaxValue, unativeint UInt16.MaxValue) else Assert.AreEqual (this.UnativeintMaxValue, unativeint UInt16.MaxValue) [] member this.``uint32.m1.To.unativeint`` () = if sizeof > sizeof then let sourceMaxValue : unativeint = 0xFFFFFFFFun Assert.AreEqual (sourceMaxValue, unativeint UInt32.MaxValue) else Assert.AreEqual (this.UnativeintMaxValue, unativeint UInt32.MaxValue) [] member this.``uint64.m1.To.unativeint`` () = if sizeof > sizeof then let sourceMaxValue : unativeint = 0xFFFFFFFFFFFFFFFFun Assert.AreEqual (sourceMaxValue, unativeint UInt64.MaxValue) else Assert.AreEqual (this.UnativeintMaxValue, unativeint UInt64.MaxValue) [] member this.``Checked.sbyte.m1.To.byte`` () = let i : sbyte = -1y CheckThrowsExn(fun () -> Checked.byte i |> ignore) [] member this.``Checked.int16.m1.To.byte`` () = let i : int16 = -1s CheckThrowsExn(fun () -> Checked.byte i |> ignore) [] member this.``Checked.int32.m1.To.byte`` () = let i : int32 = -1l CheckThrowsExn(fun () -> Checked.byte i |> ignore) [] member this.``Checked.int64.m1.To.byte`` () = let i : int64 = -1L CheckThrowsExn(fun () -> Checked.byte i |> ignore) [] member this.``Checked.sbyte.m1.To.uint16`` () = let i : sbyte = -1y CheckThrowsExn(fun () -> Checked.uint16 i |> ignore) [] member this.``Checked.int16.m1.To.uint16`` () = let i : int16 = -1s CheckThrowsExn(fun () -> Checked.uint16 i |> ignore) [] member this.``Checked.int32.m1.To.uint16`` () = let i : int32 = -1l CheckThrowsExn(fun () -> Checked.uint16 i |> ignore) [] member this.``Checked.int64.m1.To.uint16`` () = let i : int64 = -1L CheckThrowsExn(fun () -> Checked.uint16 i |> ignore) [] member this.``Checked.sbyte.m1.To.uint32`` () = let i : sbyte = -1y CheckThrowsExn(fun () -> Checked.uint32 i |> ignore) [] member this.``Checked.int16.m1.To.uint32`` () = let i : int16 = -1s CheckThrowsExn(fun () -> Checked.uint32 i |> ignore) [] member this.``Checked.int32.m1.To.uint32`` () = let i : int32 = -1l CheckThrowsExn(fun () -> Checked.uint32 i |> ignore) [] member this.``Checked.int64.m1.To.uint32`` () = let i : int64 = -1L CheckThrowsExn(fun () -> Checked.uint32 i |> ignore) [] member this.``Checked.sbyte.m1.To.uint64`` () = let i : sbyte = -1y CheckThrowsExn(fun () -> Checked.uint64 i |> ignore) [] member this.``Checked.int16.m1.To.uint64`` () = let i : int16 = -1s CheckThrowsExn(fun () -> Checked.uint64 i |> ignore) [] member this.``Checked.int32.m1.To.uint64`` () = let i : int32 = -1l CheckThrowsExn(fun () -> Checked.uint64 i |> ignore) [] member this.``Checked.int64.m1.To.uint64`` () = let i : int64 = -1L CheckThrowsExn(fun () -> Checked.uint64 i |> ignore) [] member this.``Checked.sbyte.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : sbyte = -1y Assert.AreEqual (minus1, Checked.sbyte i) [] member this.``Checked.int16.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int16 = -1s Assert.AreEqual (minus1, Checked.sbyte i) [] member this.``Checked.int32.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int32 = -1l Assert.AreEqual (minus1, Checked.sbyte i) [] member this.``Checked.int64.m1.To.sbyte`` () = let minus1 : sbyte = -1y let i : int64 = -1L Assert.AreEqual (minus1, Checked.sbyte i) [] member this.``Checked.sbyte.m1.To.int16`` () = let minus1 : int16 = -1s let i : sbyte = -1y Assert.AreEqual (minus1, Checked.int16 i) [] member this.``Checked.int16.m1.To.int16`` () = let minus1 : int16 = -1s let i : int16 = -1s Assert.AreEqual (minus1, Checked.int16 i) [] member this.``Checked.int32.m1.To.int16`` () = let minus1 : int16 = -1s let i : int32 = -1l Assert.AreEqual (minus1, Checked.int16 i) [] member this.``Checked.int64.m1.To.int16`` () = let minus1 : int16 = -1s let i : int64 = -1L Assert.AreEqual (minus1, Checked.int16 i) [] member this.``Checked.sbyte.m1.To.int32`` () = let minus1 : int32 = -1l let i : sbyte = -1y Assert.AreEqual (minus1, Checked.int32 i) [] member this.``Checked.int16.m1.To.int32`` () = let minus1 : int32 = -1l let i : int16 = -1s Assert.AreEqual (minus1, Checked.int32 i) [] member this.``Checked.int32.m1.To.int32`` () = let minus1 : int32 = -1l let i : int32 = -1l Assert.AreEqual (minus1, Checked.int32 i) [] member this.``Checked.int64.m1.To.int32`` () = let minus1 : int32 = -1l let i : int64 = -1L Assert.AreEqual (minus1, Checked.int32 i) [] member this.``Checked.sbyte.m1.To.int64`` () = let minus1 : int64 = -1L let i : sbyte = -1y Assert.AreEqual (minus1, Checked.int64 i) [] member this.``Checked.int16.m1.To.int64`` () = let minus1 : int64 = -1L let i : int16 = -1s Assert.AreEqual (minus1, Checked.int64 i) [] member this.``Checked.int32.m1.To.int64`` () = let minus1 : int64 = -1L let i : int32 = -1l Assert.AreEqual (minus1, Checked.int64 i) [] member this.``Checked.int64.m1.To.int64`` () = let minus1 : int64 = -1L let i : int64 = -1L Assert.AreEqual (minus1, Checked.int64 i) [] member this.``Checked.byte.MaxValue.To.int16`` () = let sourceMaxValue : int16 = 0xFFs Assert.AreEqual (sourceMaxValue, Checked.int16 Byte.MaxValue) [] member this.``Checked.byte.MaxValue.To.uint16`` () = let sourceMaxValue : uint16 = 0xFFus Assert.AreEqual (sourceMaxValue, Checked.uint16 Byte.MaxValue) [] member this.``Checked.byte.MaxValue.To.int32`` () = let sourceMaxValue : int32 = 0xFFl Assert.AreEqual (sourceMaxValue, Checked.int32 Byte.MaxValue) [] member this.``Checked.uint16.MaxValue.To.int32`` () = let sourceMaxValue : int32 = 0xFFFFl Assert.AreEqual (sourceMaxValue, Checked.int32 UInt16.MaxValue) [] member this.``Checked.byte.MaxValue.To.uint32`` () = let sourceMaxValue : uint32 = 0xFFul Assert.AreEqual (sourceMaxValue, Checked.uint32 Byte.MaxValue) [] member this.``Checked.uint16.MaxValue.To.uint32`` () = let sourceMaxValue : uint32 = 0xFFFFul Assert.AreEqual (sourceMaxValue, Checked.uint32 UInt16.MaxValue) [] member this.``Checked.byte.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFL Assert.AreEqual (sourceMaxValue, Checked.int64 Byte.MaxValue) [] member this.``Checked.uint16.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFFFL Assert.AreEqual (sourceMaxValue, Checked.int64 UInt16.MaxValue) [] member this.``Checked.uint32.MaxValue.To.int64`` () = let sourceMaxValue : int64 = 0xFFFFFFFFL Assert.AreEqual (sourceMaxValue, Checked.int64 UInt32.MaxValue) [] member this.``Checked.byte.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFuL Assert.AreEqual (sourceMaxValue, Checked.uint64 Byte.MaxValue) [] member this.``Checked.uint16.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFFFuL Assert.AreEqual (sourceMaxValue, Checked.uint64 UInt16.MaxValue) [] member this.``Checked.uint32.MaxValue.To.uint64`` () = let sourceMaxValue : uint64 = 0xFFFFFFFFuL Assert.AreEqual (sourceMaxValue, Checked.uint64 UInt32.MaxValue) [] member this.``Checked.byte.MaxValue.To.sbyte`` () = CheckThrowsExn (fun () -> Checked.sbyte Byte.MaxValue |> ignore) [] member this.``Checked.uint16.MaxValue.To.sbyte`` () = CheckThrowsExn (fun () -> Checked.sbyte UInt16.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.sbyte`` () = CheckThrowsExn (fun () -> Checked.sbyte UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.sbyte`` () = CheckThrowsExn (fun () -> Checked.sbyte UInt64.MaxValue |> ignore) [] member this.``Checked.uint16.MaxValue.To.int16`` () = CheckThrowsExn (fun () -> Checked.int16 UInt16.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.int16`` () = CheckThrowsExn (fun () -> Checked.int16 UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.int16`` () = CheckThrowsExn (fun () -> Checked.int16 UInt64.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.int32`` () = CheckThrowsExn (fun () -> Checked.int32 UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.int32`` () = CheckThrowsExn (fun () -> Checked.int32 UInt64.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.int64`` () = CheckThrowsExn (fun () -> Checked.int64 UInt64.MaxValue |> ignore) [] member this.``Checked.uint16.MaxValue.To.byte`` () = CheckThrowsExn (fun () -> Checked.byte UInt16.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.byte`` () = CheckThrowsExn (fun () -> Checked.byte UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.byte`` () = CheckThrowsExn (fun () -> Checked.byte UInt64.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.uint16`` () = CheckThrowsExn (fun () -> Checked.uint16 UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.uint16`` () = CheckThrowsExn (fun () -> Checked.uint16 UInt64.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.uint32`` () = CheckThrowsExn (fun () -> Checked.uint32 UInt64.MaxValue |> ignore) [] member this.``Checked.sbyte.m1.To.nativeint`` () = Assert.AreEqual (-1n, Checked.nativeint -1y) [] member this.``Checked.int16.m1.To.nativeint`` () = Assert.AreEqual (-1n, Checked.nativeint -1s) [] member this.``Checked.int32.m1.To.nativeint`` () = Assert.AreEqual (-1n, Checked.nativeint -1l) [] member this.``Checked.int64.m1.To.nativeint`` () = Assert.AreEqual (-1n, Checked.nativeint -1L) [] member this.``Checked.byte.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFn Assert.AreEqual (sourceMaxValue, Checked.nativeint Byte.MaxValue) else CheckThrowsExn (fun () -> Checked.nativeint Byte.MaxValue |> ignore) [] member this.``Checked.uint16.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFn Assert.AreEqual (sourceMaxValue, Checked.nativeint UInt16.MaxValue) else CheckThrowsExn (fun () -> Checked.nativeint UInt16.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFFFFFn Assert.AreEqual (sourceMaxValue, Checked.nativeint UInt32.MaxValue) else CheckThrowsExn (fun () -> Checked.nativeint UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.nativeint`` () = if sizeof > sizeof then let sourceMaxValue : nativeint = 0xFFFFFFFFFFFFFFFFn Assert.AreEqual (sourceMaxValue, Checked.nativeint UInt64.MaxValue) else CheckThrowsExn (fun () -> Checked.nativeint UInt64.MaxValue |> ignore) [] member this.``Checked.sbyte.m1.To.unativeint`` () = CheckThrowsExn (fun () -> Checked.unativeint -1y |> ignore) [] member this.``Checked.int16.m1.To.unativeint`` () = CheckThrowsExn (fun () -> Checked.unativeint -1s |> ignore) [] member this.``Checked.int32.m1.To.unativeint`` () = CheckThrowsExn (fun () -> Checked.unativeint -1l |> ignore) [] member this.``Checked.int64.m1.To.unativeint`` () = CheckThrowsExn (fun () -> Checked.unativeint -1L |> ignore) [] member this.``Checked.byte.MaxValue.To.unativeint`` () = if sizeof >= sizeof then let sourceMaxValue : unativeint = 0xFFun Assert.AreEqual (sourceMaxValue, Checked.unativeint Byte.MaxValue) else CheckThrowsExn (fun () -> Checked.unativeint Byte.MaxValue |> ignore) [] member this.``Checked.uint16.MaxValue.To.unativeint`` () = if sizeof >= sizeof then let sourceMaxValue : unativeint = 0xFFFFun Assert.AreEqual (sourceMaxValue, Checked.unativeint UInt16.MaxValue) else CheckThrowsExn (fun () -> Checked.unativeint UInt16.MaxValue |> ignore) [] member this.``Checked.uint32.MaxValue.To.unativeint`` () = if sizeof >= sizeof then let sourceMaxValue : unativeint = 0xFFFFFFFFun Assert.AreEqual (sourceMaxValue, Checked.unativeint UInt32.MaxValue) else CheckThrowsExn (fun () -> Checked.unativeint UInt32.MaxValue |> ignore) [] member this.``Checked.uint64.MaxValue.To.unativeint`` () = if sizeof >= sizeof then let sourceMaxValue : unativeint = 0xFFFFFFFFFFFFFFFFun Assert.AreEqual (sourceMaxValue, Checked.unativeint UInt64.MaxValue) else CheckThrowsExn (fun () -> Checked.unativeint UInt64.MaxValue |> ignore) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/BigIntType.fs0000775000175000017500000002743212260314606030670 0ustar chrischris // Various tests for the: // System.Numerics.BigInteger struct namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Math #nowarn "52" // error FS0052: The value has been copied to ensure the original is not mutated by this operation open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Math open System.Numerics (* [Test Strategy] Make sure each method works on: * positive bigints * negative bigints * zero bigints * large bigints *) [] type BigIntType() = // global variables let bigPositiveA = 12345678901234567890I let bigPositiveB = 98765432109876543210I let bigNegativeA = -bigPositiveA let bigNegativeB = -bigPositiveB // Interfaces [] member this.IComparable() = // Legit IC let ic = bigPositiveA :> IComparable Assert.AreEqual(ic.CompareTo(bigPositiveA), 0) // Base class methods [] member this.ObjectToString() = Assert.AreEqual(bigPositiveA.ToString(), "12345678901234567890") Assert.AreEqual((new BigInteger(0)).ToString(), "0") Assert.AreEqual((new BigInteger(168)).ToString(), "168") Assert.AreEqual(-168I.ToString(), "-168") Assert.AreEqual(-0I.ToString(), "0") [] member this.ObjectEquals() = // All three are different constructor, but have equivalent value let a = new BigInteger(168) let b = 168I let c = new BigInteger(168L) Assert.IsTrue( (a = b) ) Assert.IsTrue( (b = c) ) Assert.IsTrue( (c = a) ) Assert.IsTrue( a.Equals(b) ); Assert.IsTrue( b.Equals(a) ) Assert.IsTrue( b.Equals(c) ); Assert.IsTrue( c.Equals(b) ) Assert.IsTrue( c.Equals(a) ); Assert.IsTrue( a.Equals(c) ) // Self equality let a = new BigInteger(168) Assert.IsTrue( (a = a) ) Assert.IsTrue(a.Equals(a)) // Null Assert.IsFalse(a.Equals(null)) // static methods [] member this.Abs() = Assert.AreEqual(BigInteger.Abs(bigPositiveA), bigPositiveA) Assert.AreEqual(BigInteger.Abs(bigPositiveB), bigPositiveB) Assert.AreEqual(BigInteger.Abs(bigNegativeA), bigPositiveA) Assert.AreEqual(BigInteger.Abs(bigNegativeB), bigPositiveB) Assert.AreEqual(BigInteger.Abs(0I), 0I) () [] member this.DivRem() = let mutable r = BigInteger(0) let mutable q = BigInteger(0) q <- BigInteger.DivRem(100I, 123I, &r) Assert.AreEqual((q,r), (0I, 100I)) q <- BigInteger.DivRem(123I, 100I, &r) Assert.AreEqual((q,r), (1I, 23I)) q <- BigInteger.DivRem(123I, -100I, &r) Assert.AreEqual((q,r), (-1I, 23I)) q <- BigInteger.DivRem(0I, 1I, &r) Assert.AreEqual((q,r), (0I, 0I)) q <- BigInteger.DivRem(-100I, -123I, &r) Assert.AreEqual((q,r), (0I, -100I)) q <- BigInteger.DivRem(-123I, -100I, &r) Assert.AreEqual((q,r), (1I, -23I)) q <- BigInteger.DivRem(0I, 100I, &r) Assert.AreEqual((q,r), (0I, 0I)) // Check ThrowsDivideByZeroException try BigInteger.DivRem(100I,0I,&r) |> ignore with | :? DivideByZeroException -> () | _ -> Assert.Fail() () [] member this.GreatestCommonDivisor() = Assert.AreEqual(BigInteger.GreatestCommonDivisor(bigPositiveA, bigPositiveB), 900000000090I) Assert.AreEqual(BigInteger.GreatestCommonDivisor(bigNegativeA, bigNegativeB), 900000000090I) Assert.AreEqual(BigInteger.GreatestCommonDivisor(0I, bigPositiveA), bigPositiveA) () [] member this.One() = Assert.AreEqual(BigInteger.One,1I) () #if FSHARP_CORE_PORTABLE #else [] member this.Parse() = Assert.AreEqual(BigInteger.Parse("12345678901234567890"), bigPositiveA) Assert.AreEqual(BigInteger.Parse("168"), 168I) Assert.AreEqual(BigInteger.Parse("000"), 0I) CheckThrowsFormatException(fun() -> BigInteger.Parse("abc168L") |> ignore) CheckThrowsFormatException(fun() -> BigInteger.Parse("") |> ignore) () #endif [] member this.Pow() = Assert.AreEqual(BigInteger.Pow(2I, 3), 8I) Assert.AreEqual(BigInteger.Pow(0I, 100), 0I) Assert.AreEqual(BigInteger.Pow(2I, 0), 1I) Assert.AreEqual(BigInteger.Pow(-10I, 2), 100I) CheckThrowsArgumentException(fun() -> BigInteger.Pow(100I, -2) |> ignore) () [] member this.Sign() = Assert.AreEqual(0I.Sign, 0) Assert.AreEqual(bigPositiveA.Sign, 1) Assert.AreEqual(bigNegativeA.Sign, -1) () [] member this.ToDouble() = Assert.AreEqual(double 0I, 0.0) Assert.AreEqual(double 123I, 123.0) Assert.AreEqual(double -123I, -123.0) () [] member this.ToInt32() = Assert.AreEqual(int32 0I, 0) Assert.AreEqual(int32 123I, 123) Assert.AreEqual(int32 -123I, -123) () [] member this.ToInt64() = Assert.AreEqual(int64 0I, 0L) Assert.AreEqual(int64 123I, 123L) Assert.AreEqual(int64 -123I, -123L) () [] member this.Zero() = Assert.AreEqual(BigInteger.Zero,0I) () // operators [] member this.Addition() = Assert.AreEqual((123I + 456I),579I) Assert.AreEqual((-123I + (-456I)),-579I) Assert.AreEqual((0I + 123I),123I) Assert.AreEqual((bigPositiveA + 0I),bigPositiveA) Assert.AreEqual((bigPositiveA + bigNegativeA),0I) () [] member this.Division() = Assert.AreEqual((123I / 124I),0I) Assert.AreEqual((123I / (-124I)),0I) Assert.AreEqual((0I / 123I),0I) () [] member this.Equality() = Assert.AreEqual((bigPositiveA = bigPositiveA),true) Assert.AreEqual((bigPositiveA = bigNegativeA),false) Assert.AreEqual((bigNegativeA = bigPositiveA),false) Assert.AreEqual((bigNegativeA = (-123I)),false) Assert.AreEqual((0I = new BigInteger(0)),true) () [] member this.GreaterThan() = Assert.AreEqual((bigPositiveA > bigPositiveB),false) Assert.AreEqual((bigNegativeA > bigPositiveB),false) Assert.AreEqual((bigNegativeA > (-123I)),false) Assert.AreEqual((0I > new BigInteger(0)),false) () [] member this.GreaterThanOrEqual() = Assert.AreEqual((bigPositiveA >= bigPositiveB),false) Assert.AreEqual((bigPositiveA >= bigNegativeB),true) Assert.AreEqual((bigPositiveB >= bigPositiveA),true) Assert.AreEqual((bigNegativeA >= bigNegativeA),true) Assert.AreEqual((0I >= new BigInteger(0)),true) () [] member this.LessThan() = Assert.AreEqual((bigPositiveA < bigPositiveB),true) Assert.AreEqual((bigNegativeA < bigPositiveB),true) Assert.AreEqual((bigPositiveA < bigNegativeB),false) Assert.AreEqual((bigNegativeA < bigPositiveB),true) Assert.AreEqual((0I < new BigInteger(0)),false) () [] member this.LessThanOrEqual() = Assert.AreEqual((bigPositiveA <= bigPositiveB),true) Assert.AreEqual((bigPositiveA <= bigNegativeB),false) Assert.AreEqual((bigNegativeB <= bigPositiveA),true) Assert.AreEqual((bigNegativeA <= bigNegativeA),true) Assert.AreEqual((0I <= new BigInteger(-0)),true) () [] member this.Modulus() = Assert.AreEqual((bigPositiveA % bigPositiveB),bigPositiveA) Assert.AreEqual((bigNegativeA % bigNegativeB),bigNegativeA) Assert.AreEqual((0I % bigPositiveA),0I) () [] member this.Multiply() = Assert.AreEqual((123I * 100I),12300I) Assert.AreEqual((123I * (-100I)),-12300I) Assert.AreEqual((-123I * (-100I)),12300I) Assert.AreEqual((0I * bigPositiveA),0I) Assert.AreEqual((1I * 0I),0I) () [] member this.Range() = let resultPos = [123I..128I] let seqPos = [ 123I 124I 125I 126I 127I 128I ] VerifySeqsEqual resultPos seqPos let resultNeg = [(-128I) .. (-123I)] let seqNeg = [ -128I -127I -126I -125I -124I -123I ] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0I..5I] let seqSmall = [0I;1I;2I;3I;4I;5I] VerifySeqsEqual resultSmall seqSmall () [] member this.RangeStep() = let resultPos = [100I .. 3I .. 109I] let seqPos = [ 100I 103I 106I 109I ] VerifySeqsEqual resultPos seqPos let resultNeg = [(-109I) .. 3I .. (-100I)] let seqNeg = [ -109I -106I -103I -100I ] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0I..3I..9I] let seqSmall = [0I;3I;6I;9I] VerifySeqsEqual resultSmall seqSmall () [] member this.Subtraction() = Assert.AreEqual((100I - 123I),-23I) Assert.AreEqual((0I - bigPositiveB),bigNegativeB) Assert.AreEqual((bigPositiveB - 0I),bigPositiveB) Assert.AreEqual((-100I - (-123I)),23I) Assert.AreEqual((100I - (-123I)),223I) Assert.AreEqual((-100I - 123I),-223I) () [] member this.UnaryNegation() = Assert.AreEqual(-bigPositiveA,bigNegativeA) Assert.AreEqual(-bigNegativeA,bigPositiveA) Assert.AreEqual(-0I,0I) () [] member this.UnaryPlus() = Assert.AreEqual(+bigPositiveA,bigPositiveA) Assert.AreEqual(+bigNegativeA,bigNegativeA) Assert.AreEqual(+0I,0I) () // instance methods [] member this.New_int32() = Assert.AreEqual(new BigInteger(0), 0I) Assert.AreEqual(new BigInteger(-10), -10I) Assert.AreEqual(new BigInteger(System.Int32.MinValue),-2147483648I) () [] member this.New_int64() = Assert.AreEqual(new BigInteger(0L), 0I) Assert.AreEqual(new BigInteger(-100L), -100I) Assert.AreEqual(new BigInteger(System.Int64.MinValue), -9223372036854775808I) () ././@LongLink0000644000000000000000000000016112266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/IntConversionsTestGenerator.fsxfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/IntConversionsTestG0000775000175000017500000003336012260314606032172 0ustar chrischrisopen System.IO open System.Text type integer = { alias : string; name : string; suffix : string; signed : bool; width : int } let integers = [ { alias = "byte"; name = "Byte"; suffix = "uy"; signed = false; width = 8 }; { alias = "sbyte"; name = "SByte"; suffix = "y"; signed = true; width = 8 }; { alias = "int8"; name="Int8"; suffix="y"; signed = true; width = 8 }; { alias = "uint8"; name="UInt8"; suffix="uy"; signed = false; width = 8 }; { alias = "int16"; name = "Int16"; suffix = "s"; signed = true; width = 16 }; { alias = "uint16"; name = "UInt16"; suffix = "us"; signed = false; width = 16 }; { alias = "int32"; name = "Int32"; suffix = "l"; signed = true; width = 32 }; { alias = "uint32"; name = "UInt32"; suffix = "ul"; signed = false; width = 32 }; { alias = "int64"; name = "Int64"; suffix = "L"; signed = true; width = 64 }; { alias = "uint64"; name = "UInt64"; suffix = "uL"; signed = false; width = 64 }; ] let maxValueAsHexLiteral typ = let sb = new StringBuilder("0x") let halfByteLength = typ.width / 4 sb.Append('F', halfByteLength).ToString() do use file = new StreamWriter("IntConversionsGenerated.fs") // indentation 'framework' let depth = ref 0 let indent () = for i = 1 to !depth do file.Write(" ") let shift () = depth := !depth + 1 let unshift () = depth := !depth - 1 let prn (format : Format<'T,TextWriter,unit,unit>) : 'T = indent (); fprintfn<'T> file format let preamble = @" // This file is automatically generated by IntConversionsTestGenerator.fsx namespace FSharp.Core.Unittests.FSharp_Core.FSharp.Core open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx module UInt8 = let MinValue = Byte.MinValue let MaxValue = Byte.MaxValue module Int8 = let MinValue = SByte.MinValue let MaxValue = SByte.MaxValue [] type IntConversionsGenerated() = " file.WriteLine(preamble) shift () let signedInts = integers |> List.filter (fun t -> t.signed) let unsignedInts = integers |> List.filter (fun t -> not t.signed) do // Unchecked // -1 converted to unsigned types. Should become MaxValues let signedToUnsignedGenerator target = signedInts |> List.iter (fun source-> prn "[]" prn "member this.``%s.m1.To.%s`` () =" source.alias target.alias shift () prn "let i : %s = -1%s" source.alias source.suffix prn "Assert.AreEqual (%s.MaxValue, %s i)" target.name target.alias unshift () prn "") unsignedInts |> List.iter signedToUnsignedGenerator // -1 converted to signed types. Should stay -1. let signedToSignedGenerator target = signedInts |> List.iter (fun source-> prn "[]" prn "member this.``%s.m1.To.%s`` () =" source.alias target.alias shift () prn "let minus1 : %s = -1%s" target.alias target.suffix prn "let i : %s = -1%s" source.alias source.suffix prn "Assert.AreEqual (minus1, %s i)" target.alias unshift () prn "") signedInts |> List.iter signedToSignedGenerator // Unsigned MaxValues converted to wider types. Should remain the same. let unsignedToWiderGenerator target = unsignedInts |> List.filter (fun source -> source.width < target.width) |> List.iter (fun source -> prn "[]" prn "member this.``%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "let sourceMaxValue : %s = %s%s" target.alias (maxValueAsHexLiteral source) target.suffix prn "Assert.AreEqual (sourceMaxValue, %s %s.MaxValue)" target.alias source.name unshift () prn "") integers |> List.iter unsignedToWiderGenerator // Unsigned MaxValues converted to narrower or same width signed. Should become -1. let unsignedToNarrowerSignedGenerator target = unsignedInts |> List.filter (fun source -> source.width >= target.width) |> List.iter (fun source -> prn "[]" prn "member this.``%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "Assert.AreEqual (-1%s, %s %s.MaxValue)" target.suffix target.alias source.name unshift () prn "") signedInts |> List.iter unsignedToNarrowerSignedGenerator // Unsigned MaxValues converted to narrower or same width unsigned. Should become target's MaxValues let unsignedToNarrowerUnsignedGenerator target = unsignedInts |> List.filter (fun source -> source.width >= target.width) |> List.iter (fun source -> prn "[]" prn "member this.``%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "Assert.AreEqual (%s.MaxValue, %s %s.MaxValue)" target.name target.alias source.name unshift () prn "") unsignedInts |> List.iter unsignedToNarrowerUnsignedGenerator // -1 to signed nativeint stays -1 signedInts |> List.iter (fun source -> prn "[]" prn "member this.``%s.m1.To.nativeint`` () =" source.alias shift () prn "Assert.AreEqual (-1n, nativeint -1%s)" source.suffix unshift () prn "") // unsigned MaxValues to signed nativeint stay same for narrower types, become -1 for wider types unsignedInts |> List.iter (fun source -> prn "[]" prn "member this.``%s.MaxValue.To.nativeint`` () =" source.alias shift () prn "if sizeof > sizeof<%s> then" source.alias prn " let sourceMaxValue : nativeint = %sn" (maxValueAsHexLiteral source) prn " Assert.AreEqual (sourceMaxValue, nativeint %s.MaxValue)" source.name prn "else" prn " Assert.AreEqual (-1n, nativeint %s.MaxValue)" source.name unshift () prn "") prn "member private this.UnativeintMaxValue =" shift () prn "let mutable unativeintMaxValue : unativeint = 0un" prn "for i = 1 to sizeof do" prn " unativeintMaxValue <- (unativeintMaxValue <<< 8) ||| 0xFFun" prn "unativeintMaxValue" unshift () prn "" // -1 to unsigned nativeint should become MaxValue signedInts |> List.iter (fun source -> prn "[]" prn "member this.``%s.m1.To.unativeint`` () =" source.alias shift () prn "Assert.AreEqual (this.UnativeintMaxValue, unativeint -1%s)" source.suffix unshift () prn "") // unsigned MaxValues to unsigned nativeint stay same for narrower types, become MaxValue for wider types unsignedInts |> List.iter (fun source -> prn "[]" prn "member this.``%s.m1.To.unativeint`` () =" source.alias shift () prn "if sizeof > sizeof<%s> then" source.alias prn " let sourceMaxValue : unativeint = %sun" (maxValueAsHexLiteral source) prn " Assert.AreEqual (sourceMaxValue, unativeint %s.MaxValue)" source.name prn "else" prn " Assert.AreEqual (this.UnativeintMaxValue, unativeint %s.MaxValue)" source.name unshift () prn "") do // Checked let signedInts = signedInts |> List.filter (fun t -> t.alias <> "int8") let unsignedInts = unsignedInts |> List.filter (fun t -> t.alias <> "uint8") // -1 converted to unsigned types. Should throw let checkedSignedToUnsignedGenerator target = signedInts |> List.iter (fun source-> prn "[]" prn "member this.``Checked.%s.m1.To.%s`` () =" source.alias target.alias shift () prn "let i : %s = -1%s" source.alias source.suffix prn "CheckThrowsExn(fun () -> Checked.%s i |> ignore)" target.alias unshift () prn "") unsignedInts |> List.iter checkedSignedToUnsignedGenerator // -1 converted to signed types. Should stay -1. let signedToSignedGenerator target = signedInts |> List.iter (fun source-> prn "[]" prn "member this.``Checked.%s.m1.To.%s`` () =" source.alias target.alias shift () prn "let minus1 : %s = -1%s" target.alias target.suffix prn "let i : %s = -1%s" source.alias source.suffix prn "Assert.AreEqual (minus1, Checked.%s i)" target.alias unshift () prn "") signedInts |> List.iter signedToSignedGenerator // Unsigned MaxValues converted to wider types. Should remain the same. let checkedUnsignedToWiderGenerator target = unsignedInts |> List.filter (fun source -> source.width < target.width) |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "let sourceMaxValue : %s = %s%s" target.alias (maxValueAsHexLiteral source) target.suffix prn "Assert.AreEqual (sourceMaxValue, Checked.%s %s.MaxValue)" target.alias source.name unshift () prn "") integers |> List.iter checkedUnsignedToWiderGenerator // Unsigned MaxValues converted to narrower or same width signed. Should throw. let checkedUnsignedToNarrowerSignedGenerator target = unsignedInts |> List.filter (fun source -> source.width >= target.width && target.alias <> "int8") |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "CheckThrowsExn (fun () -> Checked.%s %s.MaxValue |> ignore)" target.alias source.name unshift () prn "") signedInts |> List.iter checkedUnsignedToNarrowerSignedGenerator // Unsigned MaxValues converted to narrower or same width unsigned. Should throw let checkedUnsignedToNarrowerUnsignedGenerator target = unsignedInts |> List.filter (fun source -> source.width > target.width) |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.MaxValue.To.%s`` () =" source.alias target.alias shift () prn "CheckThrowsExn (fun () -> Checked.%s %s.MaxValue |> ignore)" target.alias source.name unshift () prn "") unsignedInts |> List.iter checkedUnsignedToNarrowerUnsignedGenerator // -1 to signed nativeint stays -1 signedInts |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.m1.To.nativeint`` () =" source.alias shift () prn "Assert.AreEqual (-1n, Checked.nativeint -1%s)" source.suffix unshift () prn "") // unsigned MaxValues to signed nativeint stay same for narrower types, throw for wider types unsignedInts |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.MaxValue.To.nativeint`` () =" source.alias shift () prn "if sizeof > sizeof<%s> then" source.alias prn " let sourceMaxValue : nativeint = %sn" (maxValueAsHexLiteral source) prn " Assert.AreEqual (sourceMaxValue, Checked.nativeint %s.MaxValue)" source.name prn "else" prn " CheckThrowsExn (fun () -> Checked.nativeint %s.MaxValue |> ignore)" source.name unshift () prn "") // -1 to unsigned nativeint should throw signedInts |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.m1.To.unativeint`` () =" source.alias shift () prn "CheckThrowsExn (fun () -> Checked.unativeint -1%s |> ignore)" source.suffix unshift () prn "") // unsigned MaxValues to unsigned nativeint stay same for narrower types, throw for wider types unsignedInts |> List.iter (fun source -> prn "[]" prn "member this.``Checked.%s.MaxValue.To.unativeint`` () =" source.alias shift () prn "if sizeof >= sizeof<%s> then" source.alias prn " let sourceMaxValue : unativeint = %sun" (maxValueAsHexLiteral source) prn " Assert.AreEqual (sourceMaxValue, Checked.unativeint %s.MaxValue)" source.name prn "else" prn " CheckThrowsExn (fun () -> Checked.unativeint %s.MaxValue |> ignore)" source.name unshift () prn "") fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Core/IntConversions.fs0000775000175000017500000000145012260314606031625 0ustar chrischrisnamespace FSharp.Core.Unittests.FSharp_Core.FSharp.Core open System open NUnit.Framework open FSharp.Core.Unittests.LibraryTestFx [] type IntConversions() = [] member this.``Unchecked.SignedToUInt64`` () = let d = System.Int32.MinValue let e = uint64 d let f = uint64 (uint32 d) Assert.IsTrue (e <> f) () [] member this.``Unchecked.SignedToUInt32`` () = let d = System.Int16.MinValue let e = uint32 d let f = uint32 (uint16 d) Assert.IsTrue (e <> f) () [] member this.``Checked.UnsignedToSignedInt32``() = let d = System.UInt16.MaxValue CheckThrowsExn(fun() -> Checked.int16 d |> ignore) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/PrimTypes.fs0000775000175000017500000004317412260314606024571 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Core.LanguagePrimitives module namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Core open System open System.Numerics open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework [] type m [] type LanguagePrimitivesModule() = [] member this.CastingUnits() = let f = 2.5 let ff= 2.5f let d = 2.0m let i = 2 let l = 2L let s = 2s let y = 2y Assert.AreEqual(f, f |> LanguagePrimitives.FloatWithMeasure |> float) Assert.AreEqual(ff, ff |> LanguagePrimitives.Float32WithMeasure |> float32) Assert.AreEqual(d, d |> LanguagePrimitives.DecimalWithMeasure |> decimal) Assert.AreEqual(i, i |> LanguagePrimitives.Int32WithMeasure |> int) Assert.AreEqual(l, l |> LanguagePrimitives.Int64WithMeasure |> int64) Assert.AreEqual(s, s |> LanguagePrimitives.Int16WithMeasure |> int16) Assert.AreEqual(y, y |> LanguagePrimitives.SByteWithMeasure |> sbyte) [] member this.MaxMinNan() = Assert.IsTrue(Double.IsNaN(max nan 1.0)) Assert.IsTrue(Double.IsNaN(max 1.0 nan)) Assert.IsTrue(Double.IsNaN(max nan nan)) Assert.IsTrue(Single.IsNaN(max Single.NaN 1.0f)) Assert.IsTrue(Single.IsNaN(max 1.0f Single.NaN)) Assert.IsTrue(Single.IsNaN(max Single.NaN Single.NaN)) Assert.IsTrue(Double.IsNaN(min nan 1.0)) Assert.IsTrue(Double.IsNaN(min 1.0 nan)) Assert.IsTrue(Double.IsNaN(min nan nan)) Assert.IsTrue(Single.IsNaN(min Single.NaN 1.0f)) Assert.IsTrue(Single.IsNaN(min 1.0f Single.NaN)) Assert.IsTrue(Single.IsNaN(min Single.NaN Single.NaN)) [] member this.DivideByInt() = // float32 let resultFloat32 = LanguagePrimitives.DivideByInt 3.0f 3 Assert.AreEqual(resultFloat32, 1.0f) // double let resultDouble = LanguagePrimitives.DivideByInt 3.9 3 Assert.AreEqual(resultDouble,1.3) // decimal let resultDecimal = LanguagePrimitives.DivideByInt 3.9M 3 Assert.AreEqual(resultDecimal,1.3M) () [] member this.EnumOfValue() = let monday = System.DayOfWeek.Monday let result = LanguagePrimitives.EnumOfValue(1) Assert.AreEqual(result,monday) () [] member this.EnumToValue() = let monday = System.DayOfWeek.Monday let result = LanguagePrimitives.EnumToValue monday Assert.AreEqual(result,1) () [] member this.GuidToString() = let s = "F99D95E0-2A5E-47c4-9B92-6661D65AE6B3" let guid = new Guid(s) #if FX_NO_TO_LOWER_INVARIANT Assert.AreEqual(s.ToLower(), (string guid).ToLower()) #else Assert.AreEqual(s.ToLower(Globalization.CultureInfo.InvariantCulture), (string guid).ToLower(Globalization.CultureInfo.InvariantCulture)) #endif [] member this.GenericComparison() = // value type let resultValue = LanguagePrimitives.GenericComparison 1 1 Assert.AreEqual(resultValue,0) // reference type let resultRef = LanguagePrimitives.GenericComparison "ABC" "ABCDE" Assert.AreEqual(sign resultRef,-1) // null reference let resultRef = LanguagePrimitives.GenericComparison "ABC" null Assert.AreEqual(resultRef,1) () #if FX_ATLEAST_PORTABLE // TODO named #define ? #else #if SILVERLIGHT #else [] member this.GenericComparisonBiModal() = // value type let resultValue = LanguagePrimitives.GenericComparisonWithComparer System.Collections.Comparer.Default 1 1 Assert.AreEqual(resultValue,0) // reference type let resultRef = LanguagePrimitives.GenericComparisonWithComparer System.Collections.Comparer.Default "ABC" "ABCDE" Assert.AreEqual(sign resultRef,-1) // null reference let resultRef = LanguagePrimitives.GenericComparisonWithComparer System.Collections.Comparer.Default "ABC" null Assert.AreEqual(resultRef,1) () #endif #endif [] member this.GenericEquality() = // value type let resultValue = LanguagePrimitives.GenericEquality 1 1 Assert.IsTrue(resultValue) // reference type let resultRef = LanguagePrimitives.GenericEquality "ABC" "ABCDE" Assert.IsFalse(resultRef) // null reference let resultNul = LanguagePrimitives.GenericEquality null null Assert.IsTrue(resultNul) () [] member this.GenericGreaterOrEqual() = // value type let resultValue = LanguagePrimitives.GenericGreaterOrEqual 1 1 Assert.IsTrue(resultValue) // reference type let resultRef = LanguagePrimitives.GenericEquality "ABC" "ABCDE" Assert.IsFalse(resultRef) // null reference let resultNul = LanguagePrimitives.GenericEquality null null Assert.IsTrue(resultNul) () [] member this.GenericGreaterThan() = // value type let resultValue = LanguagePrimitives.GenericGreaterThan 1 1 Assert.IsFalse(resultValue) // reference type let resultRef = LanguagePrimitives.GenericGreaterThan "ABC" "ABCDE" Assert.IsFalse(resultRef) // null reference let resultNul = LanguagePrimitives.GenericGreaterThan null null Assert.IsFalse(resultNul) () [] member this.GenericHash() = // value type let resultValue = LanguagePrimitives.GenericHash 1 Assert.AreEqual(1, resultValue) // reference type let resultRef = LanguagePrimitives.GenericHash "ABC" Assert.AreEqual("ABC".GetHashCode(), resultRef) // null reference let resultNul = LanguagePrimitives.GenericHash null Assert.AreEqual(0, resultNul) () [] member this.GenericLessOrEqual() = // value type let resultValue = LanguagePrimitives.GenericLessOrEqual 1 1 Assert.IsTrue(resultValue) // reference type let resultRef = LanguagePrimitives.GenericLessOrEqual "ABC" "ABCDE" Assert.IsTrue(resultRef) // null reference let resultNul = LanguagePrimitives.GenericLessOrEqual null null Assert.IsTrue(resultNul) () [] member this.GenericLessThan() = // value type let resultValue = LanguagePrimitives.GenericLessThan 1 1 Assert.AreEqual(resultValue,false) // reference type let resultRef = LanguagePrimitives.GenericLessThan "ABC" "ABCDE" Assert.AreEqual(resultRef,true) // null reference let resultNul = LanguagePrimitives.GenericLessThan null null Assert.AreEqual(resultNul,false) () [] member this.GenericMaximum() = // value type let resultValue = LanguagePrimitives.GenericMaximum 8 9 Assert.AreEqual(resultValue,9) // reference type let resultRef = LanguagePrimitives.GenericMaximum "ABC" "ABCDE" Assert.AreEqual(resultRef,"ABCDE") // null reference let resultNul = LanguagePrimitives.GenericMaximum null null Assert.AreEqual(resultNul,null) () [] member this.GenericMinimum() = // value type let resultValue = LanguagePrimitives.GenericMinimum 8 9 Assert.AreEqual(resultValue,8) // reference type let resultRef = LanguagePrimitives.GenericMinimum "ABC" "ABCDE" Assert.AreEqual(resultRef,"ABC") // null reference let resultNul = LanguagePrimitives.GenericMinimum null null Assert.AreEqual(resultNul,null) () [] member this.GenericOne() = // bigint type let resultValue = LanguagePrimitives.GenericOne Assert.AreEqual(resultValue,1I) () [] member this.GenericZero() = // bigint type let resultValue = LanguagePrimitives.GenericZero Assert.AreEqual(resultValue,0I) () [] member this.ParseInt32() = let resultValue = LanguagePrimitives.ParseInt32 "100" Assert.AreEqual(resultValue,100) CheckThrowsArgumentNullException(fun () -> LanguagePrimitives.ParseInt32 null |> ignore) () [] member this.ParseInt64() = let resultValue = LanguagePrimitives.ParseInt64 "100" Assert.AreEqual(resultValue,100L) CheckThrowsArgumentNullException(fun () -> LanguagePrimitives.ParseInt64 null |> ignore) () [] member this.ParseUInt32() = let resultValue = LanguagePrimitives.ParseUInt32 "100" Assert.AreEqual(resultValue,100ul) CheckThrowsArgumentNullException(fun () -> LanguagePrimitives.ParseUInt32 null |> ignore) () [] member this.ParseUInt64() = let resultValue = LanguagePrimitives.ParseUInt64 "100" Assert.AreEqual(resultValue,100UL) CheckThrowsArgumentNullException(fun () -> LanguagePrimitives.ParseUInt64 null |> ignore) () [] member this.ParseStringViaConversionOps() = let s : string = null CheckThrowsArgumentNullException2 "sbyte" (fun () -> sbyte s |> ignore) CheckThrowsArgumentNullException2 "byte" (fun () -> byte s |> ignore) CheckThrowsArgumentNullException2 "int16" (fun () -> int16 s |> ignore) CheckThrowsArgumentNullException2 "uint16 " (fun () -> uint16 s |> ignore) CheckThrowsArgumentNullException2 "int" (fun () -> int s |> ignore) CheckThrowsArgumentNullException2 "int32" (fun () -> int32 s |> ignore) CheckThrowsArgumentNullException2 "uint32" (fun () -> uint32 s |> ignore) CheckThrowsArgumentNullException2 "int64" (fun () -> int64 s |> ignore) CheckThrowsArgumentNullException2 "uint64" (fun () -> uint64 s |> ignore) CheckThrowsArgumentNullException2 "float32" (fun () -> float32 s |> ignore) CheckThrowsArgumentNullException2 "float" (fun () -> float s |> ignore) CheckThrowsArgumentNullException2 "decimal" (fun () -> decimal s |> ignore) // SL and Portable Runtimes are compiled with FX_NO_CHAR_PARSE #if FX_NO_CHAR_PARSE #else CheckThrowsArgumentNullException2 "char" (fun () -> char s |> ignore) #endif [] member this.PhysicalEquality() = // revordtype let ref1 = ref 8 let ref2 = ref 8 let resultValue = LanguagePrimitives.PhysicalEquality ref1 ref2 Assert.IsFalse(resultValue) Assert.IsTrue(LanguagePrimitives.PhysicalEquality ref1 ref1) Assert.IsTrue(LanguagePrimitives.PhysicalEquality ref2 ref2) // reference type let resultRef0 = LanguagePrimitives.PhysicalEquality "ABC" "ABC" Assert.IsTrue(resultRef0) let resultRef1 = LanguagePrimitives.PhysicalEquality "ABC" "DEF" Assert.IsFalse(resultRef1) // object type let resultRef2 = LanguagePrimitives.PhysicalEquality (obj()) (obj()) Assert.IsFalse(resultRef2) // object type let o = obj() let resultRef3 = LanguagePrimitives.PhysicalEquality o o Assert.IsTrue(resultRef3) // System.ValueType type let resultRef4 = LanguagePrimitives.PhysicalEquality (1 :> System.ValueType) (1 :> System.ValueType) Assert.IsFalse(resultRef4) // System.ValueType type let resultRef5 = LanguagePrimitives.PhysicalEquality (1 :> System.ValueType) (2 :> System.ValueType) Assert.IsFalse(resultRef5) // null reference let resultNul = LanguagePrimitives.PhysicalEquality null null Assert.IsTrue(resultNul) [] type HashCompareModule() = // this module is internal/obsolete, but contains code reachable from many public APIs member inline this.ComparisonsFor< ^T when ^T : comparison>(x : ^T, y : ^T) = Assert.IsTrue( x < y ) Assert.IsTrue( y > x ) Assert.IsTrue( (x = x) ) Assert.IsFalse( y < x ) Assert.IsFalse( x > y ) Assert.IsFalse( (x = y) ) () [] member this.ComparisonsForArraysOfNativeInts() = this.ComparisonsFor( [|0n|], [|1n|] ) this.ComparisonsFor( [|0un|], [|1un|] ) () [] member this.ComparisonsForArraysOfFloatingPoints() = this.ComparisonsFor( [|0.0|], [|1.0|] ) this.ComparisonsFor( [|0.0f|], [|1.0f|] ) Assert.IsFalse( [| System.Double.NaN |] = [| System.Double.NaN |] ) Assert.IsFalse( [| System.Single.NaN |] = [| System.Single.NaN |] ) Assert.IsFalse( [| System.Double.NaN |] < [| System.Double.NaN |] ) Assert.IsFalse( [| System.Single.NaN |] < [| System.Single.NaN |] ) () [] member this.ComparisonsForOtherArrays() = this.ComparisonsFor( [|0uy|], [|1uy|] ) this.ComparisonsFor( [|'a'|], [|'b'|] ) this.ComparisonsFor( [|0UL|], [|1UL|] ) [] member this.ComparisonsForStrings() = this.ComparisonsFor( "bar", "foo" ) this.ComparisonsFor( [| "bar" |], [| "foo" |] ) [] member this.ComparisonsForMultidimensionalIntArrays() = let N = 10 let M = 100 let Z = 9999 let x = Array2D.init 3 3 (fun x y -> N*x + y) let y = Array2D.init 3 3 (fun x y -> N*x + y) Assert.IsTrue( hash x = hash y ) y.[2,2] <- Z this.ComparisonsFor( x, y ) let x = Array3D.init 3 3 3 (fun x y z -> M*x + N*y + z) let y = Array3D.init 3 3 3 (fun x y z -> M*x + N*y + z) Assert.IsTrue( hash x = hash y ) y.[2,2,2] <- Z this.ComparisonsFor( x, y ) [] member this.ComparisonsForMultidimensionalInt64Arrays() = let N = 10L let M = 100L let Z = 9999L let x = Array2D.init 3 3 (fun x y -> N*(int64 x) + (int64 y)) let y = Array2D.init 3 3 (fun x y -> N*(int64 x) + (int64 y)) Assert.IsTrue( hash x = hash y ) y.[2,2] <- Z this.ComparisonsFor( x, y ) let x = Array3D.init 3 3 3 (fun x y z -> M*(int64 x) + N*(int64 y) + (int64 z)) let y = Array3D.init 3 3 3 (fun x y z -> M*(int64 x) + N*(int64 y) + (int64 z)) Assert.IsTrue( hash x = hash y ) y.[2,2,2] <- Z this.ComparisonsFor( x, y ) [] member this.MonsterTuple() = let mt = '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' let mt2 = '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' Assert.AreEqual(mt,mt2) [] type IntrinsicFunctionsModule() = [] member this.Obsolete() = // all method obsoleted and inlined () [] type IntrinsicOperatorsModule() = [] member this.Obsolete() = // all method obsoleted and inlined () [] type UnitType() = // interface [] member this.IComparable() = let u:Unit = () // value type let ic = u :> IComparable CheckThrowsNullRefException(fun() ->ic.CompareTo(3) |>ignore) () // Base class methods [] member this.ObjectGetHashCode() = let u:Unit = () CheckThrowsNullRefException(fun() ->u.GetHashCode() |>ignore) () [] member this.ObjectEquals() = let u:Unit = () CheckThrowsNullRefException(fun() ->u.Equals(null) |>ignore) #if FX_ATLEAST_PORTABLE // TODO named #define ? #else #if SILVERLIGHT #else [] type SourceConstructFlagsEnum() = [] member this.Getvalue() = Assert.AreEqual(SourceConstructFlags.GetNames(typeof), [|"None";"SumType";"RecordType";"ObjectType";"Field"; "Exception";"Closure";"Module";"UnionCase";"Value"; "KindMask";"NonPublicRepresentation"|]) () [] type CompilationRepresentationFlagsEnum() = [] member this.Getvalue() = Assert.AreEqual(SourceConstructFlags.GetNames(typeof), [|"None";"Static";"Instance";"ModuleSuffix";"UseNullAsTrueValue";"Event"|]) () #endif #endif [] type MiscStuff() = [] member this.ListToString() = Assert.IsTrue( [].ToString() = "[]" ) Assert.IsTrue( [1].ToString() = "[1]" ) Assert.IsTrue( [1;2].ToString() = "[1; 2]" ) Assert.IsTrue( [1;2;3].ToString() = "[1; 2; 3]" ) Assert.IsTrue( [1;2;3;4].ToString() = "[1; 2; 3; ... ]" ) [] member this.Refs() = let x = ref 0 incr x incr x decr x Assert.IsTrue( 1 = !x ) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Quotations/0000775000175000017500000000000012260314606027563 5ustar chrischris././@LongLink0000644000000000000000000000015312266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Quotations/FSharpQuotations.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Quotations/FSharpQuotati0000775000175000017500000000377612260314606032260 0ustar chrischris// Various tests for Microsoft.FSharp.Quotations namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Quotations open System open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Quotations type E = Microsoft.FSharp.Quotations.Expr;; module Check = let argumentException f = let mutable ex = false try f () |> ignore with | :? System.ArgumentException-> ex <- true Assert.IsTrue(ex, "InvalidOperationException expected") [] type FSharpQuotationsTests() = [] member x.MethodInfoNRE() = let f() = E.Call(null, []) |> ignore CheckThrowsArgumentNullException f [] member x.FieldInfoNRE() = let f() = E.FieldGet(null) |> ignore CheckThrowsArgumentNullException f [] member x.ConstructorNRE() = let f() = E.NewObject(null,[]) |> ignore CheckThrowsArgumentNullException f [] member x.PropertyInfoNRE() = let f() = E.PropertyGet(null,[]) |> ignore CheckThrowsArgumentNullException f [] member x.UnionCaseInfoNRE() = let f() = E.NewUnionCase(Unchecked.defaultof,[]) |> ignore CheckThrowsArgumentNullException f [] member x.ReShapeTypechecking_Let() = let q0 = <@ let a = 1 in a @> match q0 with | ExprShape.ShapeCombination(shape, [value;lambda]) -> let goodValue = <@ 2 @> ExprShape.RebuildShapeCombination(shape, [goodValue;lambda]) |> ignore | _ -> Assert.Fail() let q1 = <@ let a = 1 in a @> match q1 with | ExprShape.ShapeCombination(shape, [value;lambda]) -> let wrongValue = <@ "!" @> Check.argumentException(fun () -> ExprShape.RebuildShapeCombination(shape, [wrongValue;lambda])) | _ -> Assert.Fail() fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Reflection/0000775000175000017500000000000012260314606027507 5ustar chrischris././@LongLink0000644000000000000000000000015312266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Reflection/FSharpReflection.fsfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Reflection/FSharpReflect0000775000175000017500000011721612260314606032135 0ustar chrischris// Various tests for Microsoft.FSharp.Reflection namespace FSharp.Core.Unittests.FSharp_Core.Microsoft_FSharp_Reflection open System open System.Reflection open FSharp.Core.Unittests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Reflection (* [Test Strategy] Make sure each method works on: * Generic types * Null * DiscriminatedUnion * Delegate * Record * Exception * Tuple * Fuction *) module IsModule = type IsModuleType () = member this.M = 1 type FSharpDelegate = delegate of int -> string type RecordType = { field1 : string; field2 : RecordType option; field3 : (unit -> RecordType * string) } type GenericRecordType<'a, 'b> = { field1 : 'a; field2 : 'b; field3 : (unit -> GenericRecordType<'a, 'b>) } type SingleNullaryCaseDiscUnion = SingleNullaryCaseTag type SingleCaseDiscUnion = SingleCaseTag of float * float * float type DiscUnionType<'a> = | A // No data associated with tag | B of 'a * DiscUnionType<'a> option | C of float * string exception ExceptionInt of int exception DatalessException module FSharpModule = type ModuleType() = class end [] type FSharpValueTests() = // global variables let rec recordtype1 : RecordType = { field1 = "field1"; field2 = Some(recordtype1); field3 = ( fun () -> (recordtype1,"") )} let recordtype2 : RecordType = { field1 = "field2"; field2 = Some(recordtype1); field3 = ( fun () -> (recordtype1,"") )} let rec genericRecordType1 : GenericRecordType = { field1 = "field1" field2 = 1 field3 = (fun () -> genericRecordType1) } let genericRecordType2 : GenericRecordType = { field1 = "field1"; field2 = 1; field3 = ( fun () -> genericRecordType1 )} let nullValue = null let singlecaseunion1 = SingleCaseDiscUnion.SingleCaseTag(1.0,2.0,3.0) let singlecaseunion2 = SingleCaseDiscUnion.SingleCaseTag(4.0,5.0,6.0) let discUniontypeA = DiscUnionType.A let discUniontypeB = DiscUnionType.B(1,Some(discUniontypeA)) let discUniontypeC = DiscUnionType.C(1.0,"stringparam") let recDiscUniontypeB = DiscUnionType.B(1,Some(discUniontypeB)) let fsharpdelegate1 = new FSharpDelegate(fun (x:int) -> "delegate1") let fsharpdelegate2 = new FSharpDelegate(fun (x:int) -> "delegate2") let tuple1 = ( 1, "tuple1") let tuple2 = ( 2, "tuple2",(fun x -> x + 1)) let tuple3 = ( 1, ( 2, "tuple")) let func1 param = param + 1 let func2 param = param + "" let exInt = ExceptionInt(1) let exDataless = DatalessException [] member this.Equals() = // Record value Assert.IsTrue(FSharpValue.Equals(recordtype1, recordtype1)) Assert.IsFalse(FSharpValue.Equals(recordtype1, recordtype2)) // Generic Record value Assert.IsTrue(FSharpValue.Equals(genericRecordType1, genericRecordType1)) Assert.IsFalse(FSharpValue.Equals(genericRecordType1, genericRecordType2)) // null value Assert.IsTrue(FSharpValue.Equals(nullValue,nullValue)) Assert.IsFalse(FSharpValue.Equals(nullValue,1)) // Single Case Union Assert.IsTrue(FSharpValue.Equals(singlecaseunion1,singlecaseunion1)) Assert.IsFalse(FSharpValue.Equals(singlecaseunion1,singlecaseunion2)) // Dicsriminated Union Assert.IsTrue(FSharpValue.Equals(discUniontypeA,discUniontypeA)) Assert.IsFalse(FSharpValue.Equals(discUniontypeB,discUniontypeC)) // FSharpDelegate Assert.IsTrue(FSharpValue.Equals(fsharpdelegate1,fsharpdelegate1)) Assert.IsFalse(FSharpValue.Equals(fsharpdelegate1,fsharpdelegate2)) // Tuple Assert.IsTrue(FSharpValue.Equals(tuple1, tuple1)) Assert.IsFalse(FSharpValue.Equals( (1, 2, 3), (4, 5, 6) )) // Tuples of differing types Assert.IsFalse(FSharpValue.Equals(tuple1, tuple2)) // Exception Assert.IsTrue(FSharpValue.Equals(exInt,exInt)) Assert.IsFalse(FSharpValue.Equals(exInt,exDataless)) () [] member this.GetExceptionFields() = // int Assert.AreEqual(FSharpValue.GetExceptionFields(exInt),[|1|]) // dataless Assert.AreEqual(FSharpValue.GetExceptionFields(exDataless),[||]) // invalid type CheckThrowsArgumentException(fun () -> FSharpValue.GetExceptionFields(1) |> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.GetExceptionFields( () ) |> ignore) // System Exception CheckThrowsArgumentException(fun () -> FSharpValue.GetExceptionFields(new System.Exception("ex message")) |> ignore) // null CheckThrowsArgumentException(fun () -> FSharpValue.GetExceptionFields(null) |> ignore) () [] member this.GetRecordField() = // Record let propertyinfo1 = (typeof).GetProperty("field1") Assert.AreEqual((FSharpValue.GetRecordField(recordtype1,propertyinfo1)),"field1") // Generic Record value let propertyinfo2 = (typeof>).GetProperty("field2") Assert.AreEqual((FSharpValue.GetRecordField(genericRecordType1,propertyinfo2)),1) // null value CheckThrowsArgumentException(fun () ->FSharpValue.GetRecordField(null,propertyinfo1)|> ignore) CheckThrowsArgumentException(fun () ->FSharpValue.GetRecordField( () ,propertyinfo1)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.GetRecordField("invalid",propertyinfo1) |> ignore) // invalid property info let propertyinfoint = (typeof).GetProperty("fieldstring") CheckThrowsArgumentException(fun () -> FSharpValue.GetRecordField("invalid",propertyinfoint) |> ignore) () [] member this.GetRecordFields() = // Record let propertyinfo1 = (typeof).GetProperty("field1") Assert.AreEqual((FSharpValue.GetRecordFields(recordtype1)).[0],"field1") // Generic Record value let propertyinfo2 = (typeof>).GetProperty("field1") Assert.AreEqual((FSharpValue.GetRecordFields(genericRecordType1)).[0],"field1") // null value CheckThrowsArgumentException(fun () -> FSharpValue.GetRecordFields(null)|> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.GetRecordFields( () )|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.GetRecordFields("invalid") |> ignore) () [] member this.GetTupleField() = // Tuple Assert.AreEqual((FSharpValue.GetTupleField(tuple1,0)),1) // Tuple with function element Assert.AreEqual( FSharpValue.GetTupleField(tuple2,1), "tuple2") // null value CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleField(null, 3)|> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleField( () , 3)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleField("Invalid",3)|> ignore) // index out of range CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleField(tuple2,8)|> ignore) () [] member this.GetTupleFields() = // Tuple Assert.AreEqual(FSharpValue.GetTupleFields(tuple1).[0],1) // Tuple with function element Assert.AreEqual( (FSharpValue.GetTupleFields(tuple2)).[1],"tuple2") // null value CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleFields(null)|> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleFields( () )|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.GetTupleFields("Invalid")|> ignore) () [] member this.GetUnionFields() = // single case union let (singlecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) Assert.AreEqual(singlevaluearray, [|1.0;2.0;3.0|]) // DiscUnionType let (duCaseinfo, duValueArray) = FSharpValue.GetUnionFields(discUniontypeB,typeof>) Assert.AreEqual(duValueArray.[0],1) // null value CheckThrowsArgumentException(fun () -> FSharpValue.GetUnionFields(null, null)|> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.GetUnionFields( () , null)|> ignore) () [] member this.MakeFunction() = // Int function let implementationInt (x:obj) = box( unbox(x) + 1) let resultFuncIntObj = FSharpValue.MakeFunction(typeof int>, implementationInt ) let resultFuncInt = resultFuncIntObj :?> (int -> int) Assert.AreEqual(resultFuncInt(5),6) // String funcion let implementationString (x:obj) = box( unbox(x) + " function") let resultFuncStringObj = FSharpValue.MakeFunction(typeof string>, implementationString ) let resultFuncString = resultFuncStringObj :?> (string -> string) Assert.AreEqual(resultFuncString("parameter"),"parameter function") () [] member this.MakeRecord() = // Record let makeRecord = FSharpValue.MakeRecord(typeof,[|box"field1";box(Some(recordtype1));box( fun () -> (recordtype1,"")) |]) Assert.AreEqual(FSharpValue.GetRecordFields(makeRecord).[0],"field1") // Generic Record value let makeRecordGeneric = FSharpValue.MakeRecord(typeof>,[|box"field1";box(1);box( fun () -> genericRecordType1) |]) Assert.AreEqual(FSharpValue.GetRecordFields(makeRecordGeneric).[0],"field1") // null value CheckThrowsArgumentException(fun () ->FSharpValue.MakeRecord(null,null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.MakeRecord(typeof>,[|box(1);box("invalid param");box("invalid param") |])|> ignore) () [] member this.MakeTuple() = // Tuple let makeTuple = FSharpValue.MakeTuple([|box(1);box("tuple")|], typeof>) Assert.AreEqual(FSharpValue.GetTupleFields(makeTuple).[0],1) // Tuple with function let makeTuplewithFunc = FSharpValue.MakeTuple([|box(1);box("tuple with func");box(fun x -> x + 1)|], typeof int)>>) Assert.AreEqual(FSharpValue.GetTupleFields(makeTuplewithFunc).[1],"tuple with func") // null value CheckThrowsArgumentNullException(fun () ->FSharpValue.MakeTuple(null,null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.MakeTuple([|box"invalid param";box"invalid param"|],typeof>) |> ignore) () [] member this.MakeUnion() = // single case union let (singlecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) let resultSingleCaseUnion=FSharpValue.MakeUnion(singlecaseinfo,[|box(1.0);box(2.0);box(3.0)|]) Assert.AreEqual(resultSingleCaseUnion,singlecaseunion1) // DiscUnionType let (duCaseinfo, duValueArray) = FSharpValue.GetUnionFields(discUniontypeB,typeof>) let resultDiscUnion=FSharpValue.MakeUnion(duCaseinfo,[|box(1);box(Some(discUniontypeB))|]) Assert.AreEqual(resultDiscUnion,recDiscUniontypeB) () [] member this.PreComputeRecordConstructor() = // Record let recCtor = FSharpValue.PreComputeRecordConstructor(typeof) let resultRecordType = recCtor([| box("field1");box(Some(recordtype1));box(fun () -> (recordtype1,""))|]) Assert.AreEqual( (unbox(resultRecordType)).field1 ,recordtype1.field1) // Generic Record value let genericRecCtor = FSharpValue.PreComputeRecordConstructor(typeof>) let resultGenericRecordType = genericRecCtor([| box("field1");box(2);box( fun () -> genericRecordType1)|]) Assert.AreEqual( (unbox>(resultGenericRecordType)).field1,genericRecordType1.field1) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeRecordConstructor(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeRecordConstructor(typeof>) |> ignore) () [] member this.PreComputeRecordConstructorInfo() = // Record let recordCtorInfo = FSharpValue.PreComputeRecordConstructorInfo(typeof) Assert.AreEqual(recordCtorInfo.ReflectedType,typeof ) // Generic Record value let genericrecordCtorInfo = FSharpValue.PreComputeRecordConstructorInfo(typeof>) Assert.AreEqual(genericrecordCtorInfo.ReflectedType,typeof>) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeRecordConstructorInfo(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeRecordConstructorInfo(typeof>) |> ignore) () [] member this.PreComputeRecordFieldReader() = // Record let recordFieldReader = FSharpValue.PreComputeRecordFieldReader((typeof).GetProperty("field1")) Assert.AreEqual(recordFieldReader(recordtype1),box("field1")) // Generic Record value let recordFieldReader = FSharpValue.PreComputeRecordFieldReader((typeof>).GetProperty("field1")) Assert.AreEqual(recordFieldReader(genericRecordType1),box("field1")) // null value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeRecordFieldReader(null)|> ignore) () [] member this.PreComputeRecordReader() = // Record let recordReader = FSharpValue.PreComputeRecordReader(typeof) Assert.AreEqual( (recordReader(recordtype1)).[0],"field1") // Generic Record value let genericrecordReader = FSharpValue.PreComputeRecordReader(typeof>) Assert.AreEqual( (genericrecordReader(genericRecordType1)).[0],"field1") // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeRecordReader(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeRecordReader(typeof>) |> ignore) () [] member this.PreComputeTupleConstructor() = // Tuple let tupleCtor = FSharpValue.PreComputeTupleConstructor(tuple1.GetType()) Assert.AreEqual( tupleCtor([| box(1);box("tuple1") |]) , box(tuple1)) // Tuple with function member let tuplewithFuncCtor = FSharpValue.PreComputeTupleConstructor(tuple2.GetType()) let resultTuplewithFunc = tuplewithFuncCtor([| box(2); box("tuple2"); box(fun x -> x + 1)|]) Assert.AreEqual( FSharpValue.GetTupleFields( box(resultTuplewithFunc)).[1] , "tuple2") // nested tuple let tupleNestedCtor = FSharpValue.PreComputeTupleConstructor(tuple3.GetType()) Assert.AreEqual( tupleNestedCtor([| box(1);box(2,"tuple")|] ), box(tuple3)) // null value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTupleConstructor(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTupleConstructor(typeof>) |> ignore) CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTupleConstructor(typeof) |> ignore) () [] member this.PreComputeTupleConstructorInfo() = // Tuple let (tupleCtorInfo, tupleType) = FSharpValue.PreComputeTupleConstructorInfo(typeof>) Assert.AreEqual(tupleCtorInfo.ReflectedType,typeof> ) // Nested let (nestedTupleCtorInfo, nestedTupleType) = FSharpValue.PreComputeTupleConstructorInfo(typeof>>) Assert.AreEqual(nestedTupleCtorInfo.ReflectedType, typeof>>) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeTupleConstructorInfo(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTupleConstructorInfo(typeof) |> ignore) () [] member this.PreComputeTuplePropertyInfo() = // Tuple let (tuplePropInfo, typeindex) = FSharpValue.PreComputeTuplePropertyInfo(typeof>,0) Assert.AreEqual(tuplePropInfo.PropertyType,typeof) // Nested let (tupleNestedPropInfo, typeindex) = FSharpValue.PreComputeTuplePropertyInfo(typeof>>,1) Assert.AreEqual(tupleNestedPropInfo.PropertyType,typeof>) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeTuplePropertyInfo(null,0)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTuplePropertyInfo(typeof,0) |> ignore) () [] member this.PreComputeTupleReader() = // Tuple let tuplereader = FSharpValue.PreComputeTupleReader(typeof>) Assert.AreEqual(tuplereader(tuple1).[0],1) // Nested let nestedtuplereader = FSharpValue.PreComputeTupleReader(typeof>>) Assert.AreEqual(nestedtuplereader(tuple3).[1],box(2, "tuple")) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeTupleReader(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeTupleReader(typeof) |> ignore) () [] member this.PreComputeUnionConstructor() = // SingleCaseUnion let (singlecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) let singleUnionCtor = FSharpValue.PreComputeUnionConstructor(singlecaseinfo) let resuleSingleCaseUnion = singleUnionCtor([|box(1.0);box(2.0);box(3.0)|]) Assert.AreEqual(resuleSingleCaseUnion,singlecaseunion1) // DiscUnion let (discunioninfo,discunionvaluearray) = FSharpValue.GetUnionFields(discUniontypeB,typeof>) let discUnionCtor = FSharpValue.PreComputeUnionConstructor(discunioninfo) let resuleDiscUnionB = discUnionCtor([|box(1);box(Some(discUniontypeB))|]) Assert.AreEqual(resuleDiscUnionB,recDiscUniontypeB) () [] member this.PreComputeUnionConstructorInfo() = // SingleCaseUnion let (singlecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) let singlecaseMethodInfo = FSharpValue.PreComputeUnionConstructorInfo(singlecaseinfo) Assert.AreEqual(singlecaseMethodInfo.ReflectedType,typeof) // DiscUnion let (discUnionInfo,discvaluearray) = FSharpValue.GetUnionFields(discUniontypeB,typeof>) let discUnionMethodInfo = FSharpValue.PreComputeUnionConstructorInfo(discUnionInfo) Assert.AreEqual(discUnionMethodInfo.ReflectedType,typeof>) () [] member this.PreComputeUnionReader() = // SingleCaseUnion let (singlecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) let singlecaseUnionReader = FSharpValue.PreComputeUnionReader(singlecaseinfo) Assert.AreEqual(singlecaseUnionReader(box(singlecaseunion1)),[|box(1.0);box(2.0);box(3.0)|]) // DiscUnion let (discUnionInfo,discvaluearray) = FSharpValue.GetUnionFields(recDiscUniontypeB,typeof>) let discUnionReader = FSharpValue.PreComputeUnionReader(discUnionInfo) Assert.AreEqual(discUnionReader(box(recDiscUniontypeB)) , [|box(1);box(Some(discUniontypeB))|]) () [] member this.PreComputeUnionTagMemberInfo() = // SingleCaseUnion let singlecaseUnionMemberInfo = FSharpValue.PreComputeUnionTagMemberInfo(typeof) Assert.AreEqual(singlecaseUnionMemberInfo.ReflectedType, typeof) // DiscUnion let discUnionMemberInfo = FSharpValue.PreComputeUnionTagMemberInfo(typeof>) Assert.AreEqual(discUnionMemberInfo.ReflectedType, typeof>) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeUnionTagMemberInfo(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeUnionTagMemberInfo(typeof) |> ignore) () [] member this.PreComputeUnionTagReader() = // SingleCaseUnion let singlecaseUnionTagReader = FSharpValue.PreComputeUnionTagReader(typeof) Assert.AreEqual(singlecaseUnionTagReader(box(singlecaseunion1)), 0) // DiscUnion let discUnionTagReader = FSharpValue.PreComputeUnionTagReader(typeof>) Assert.AreEqual(discUnionTagReader(box(discUniontypeB)), 1) // null value CheckThrowsArgumentException(fun () ->FSharpValue.PreComputeUnionTagReader(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpValue.PreComputeUnionTagReader(typeof) |> ignore) () [] type FSharpTypeTests() = // instance for member this.ObjectEquals let rec recordtype1 : RecordType = { field1 = "field1"; field2 = Some(recordtype1); field3 = ( fun () -> (recordtype1,"") )} let recordtype2 : RecordType = { field1 = "field2"; field2 = Some(recordtype1); field3 = ( fun () -> (recordtype1,"") )} let rec genericRecordType1 : GenericRecordType = { field1 = "field1"; field2 = 1; field3 = ( fun () -> genericRecordType1 )} let genericRecordType2 : GenericRecordType = { field1 = "field1"; field2 = 1; field3 = ( fun () -> genericRecordType1 )} let nullValue = null let singlecaseunion1 = SingleCaseDiscUnion.SingleCaseTag(1.0,2.0,3.0) let singlecaseunion2 = SingleCaseDiscUnion.SingleCaseTag(4.0,5.0,6.0) let discUniontypeA = DiscUnionType.A let discUniontypeB = DiscUnionType.B(1,Some(discUniontypeA)) let discUniontypeC = DiscUnionType.C(1.0,"stringparam") let fsharpdelegate1 = new FSharpDelegate(fun (x:int) -> "delegate1") let fsharpdelegate2 = new FSharpDelegate(fun (x:int) -> "delegate2") let tuple1 = ( 1, "tuple1") let tuple2 = ( 2, "tuple2") let func1 param = param + 1 let func2 param = param + "" let exInt = ExceptionInt(1) let exDataless = DatalessException // Base class methods [] member this.ObjectEquals() = // Record value Assert.IsTrue(FSharpValue.Equals(recordtype1, recordtype1)) Assert.IsFalse(FSharpValue.Equals(recordtype1, recordtype2)) // Generic Record value Assert.IsTrue(FSharpValue.Equals(genericRecordType1, genericRecordType1)) Assert.IsFalse(FSharpValue.Equals(genericRecordType1, genericRecordType2)) // null value Assert.IsTrue(FSharpValue.Equals(nullValue,nullValue)) Assert.IsFalse(FSharpValue.Equals(nullValue,1)) // Single Case Union Assert.IsTrue(FSharpValue.Equals(singlecaseunion1,singlecaseunion1)) Assert.IsFalse(FSharpValue.Equals(singlecaseunion1,singlecaseunion2)) // Dicsriminated Union Assert.IsTrue(FSharpValue.Equals(discUniontypeA,discUniontypeA)) Assert.IsFalse(FSharpValue.Equals(discUniontypeB,discUniontypeC)) // FSharpDelegate Assert.IsTrue(FSharpValue.Equals(fsharpdelegate1,fsharpdelegate1)) Assert.IsFalse(FSharpValue.Equals(fsharpdelegate1,fsharpdelegate2)) // Tuple Assert.IsTrue(FSharpValue.Equals(tuple1,tuple1)) Assert.IsFalse(FSharpValue.Equals(tuple1,tuple2)) // Exception Assert.IsTrue(FSharpValue.Equals(exInt,exInt)) Assert.IsFalse(FSharpValue.Equals(exInt,exDataless)) () // Static methods [] member this.GetExceptionFields() = // positive let forallexistedInt = FSharpType.GetExceptionFields(typeof) |> Array.forall (fun property -> (Array.IndexOf(typeof.GetProperties(), property) > -1)) Assert.IsTrue(forallexistedInt) let forallexistedDataless = FSharpType.GetExceptionFields(typeof) |> Array.forall (fun property -> (Array.IndexOf(typeof.GetProperties(),property) > -1)) Assert.IsTrue(forallexistedDataless) // Argument Exception CheckThrowsArgumentException(fun () ->FSharpType.GetExceptionFields(typeof) |> ignore ) // null CheckThrowsArgumentNullException(fun () ->FSharpType.GetExceptionFields(null) |> ignore ) () [] member this.GetFunctionElements() = // positive Assert.AreEqual(FSharpType.GetFunctionElements(typeof string>),(typeof,typeof)) Assert.AreEqual(FSharpType.GetFunctionElements(typeof int -> string>), (typeof, typeof>)) // argument exception CheckThrowsArgumentException(fun () ->FSharpType.GetFunctionElements(typeof) |> ignore ) // null CheckThrowsArgumentNullException(fun () ->FSharpType.GetFunctionElements(null) |> ignore ) () [] member this.GetRecordFields() = // positve Assert.AreEqual(FSharpType.GetRecordFields(typeof),(typeof.GetProperties())) Assert.AreEqual(FSharpType.GetRecordFields(typeof>),(typeof>.GetProperties())) // argument exception CheckThrowsArgumentException(fun () ->FSharpType.GetRecordFields(typeof) |> ignore ) // null CheckThrowsArgumentNullException(fun () ->FSharpType.GetRecordFields(null) |> ignore ) () [] member this.GetTupleElements() = // positive Assert.AreEqual(FSharpType.GetTupleElements(typeof>),[|typeof; typeof|]) Assert.AreEqual(FSharpType.GetTupleElements(typeof>),[|typeof; typeof;typeof|]) // argument exception CheckThrowsArgumentException(fun () ->FSharpType.GetTupleElements(typeof) |> ignore ) // null CheckThrowsArgumentNullException(fun () ->FSharpType.GetTupleElements(null) |> ignore ) () [] member this.GetUnionCases() = // SingleCaseUnion let singlecaseUnionCaseInfoArray = FSharpType.GetUnionCases(typeof) let (expectedSinglecaseinfo,singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) Assert.AreEqual(singlecaseUnionCaseInfoArray.[0], expectedSinglecaseinfo) // DiscUnionType let discunionCaseInfoArray = FSharpType.GetUnionCases(typeof>) let (expectedDuCaseinfoArray, duValueArray) = FSharpValue.GetUnionFields(discUniontypeB,typeof>) Assert.AreEqual(discunionCaseInfoArray.[1],expectedDuCaseinfoArray) // null value CheckThrowsArgumentNullException(fun () ->FSharpType.GetUnionCases(null)|> ignore) // inlalid value CheckThrowsArgumentException(fun () -> FSharpType.GetUnionCases(typeof) |> ignore) () [] member this.IsExceptionRepresentation() = // positive Assert.IsTrue(FSharpType.IsExceptionRepresentation(typeof)) Assert.IsTrue(FSharpType.IsExceptionRepresentation(typeof)) // negative Assert.IsFalse(FSharpType.IsExceptionRepresentation(typeof)) Assert.IsFalse(FSharpType.IsExceptionRepresentation(typeof)) // null CheckThrowsArgumentNullException(fun () -> FSharpType.IsExceptionRepresentation(null) |> ignore ) () [] member this.IsFunction() = // positive Assert.IsTrue(FSharpType.IsFunction(typeof int>)) Assert.IsTrue(FSharpType.IsFunction(typeof int -> int>)) // negative Assert.IsFalse(FSharpType.IsFunction(typeof)) // null CheckThrowsArgumentNullException(fun () -> FSharpType.IsFunction(null) |> ignore ) () [] member this.IsModule() = let getasm (t : Type) = t.Assembly // Positive Test let assemblyTypesPositive = (getasm (typeof)).GetTypes() let moduleType = assemblyTypesPositive |> Array.filter (fun ty -> ty.Name = "IsModule") |> (fun arr -> arr.[0]) Assert.IsTrue(FSharpType.IsModule(moduleType)) //assemblyTypesPositive.[3] is Microsoft_FSharp_Reflection.FSharpModule which is module type // Negtive Test // FSharp Assembly let asmCore = getasm (typeof>) Assert.IsFalse(FSharpType.IsModule(asmCore.GetTypes().[0])) // .Net Assembly let asmSystem = getasm (typeof) Assert.IsFalse(FSharpType.IsModule(asmSystem.GetTypes().[0])) // custom Assembly let asmCustom = getasm (typeof) Assert.IsFalse(FSharpType.IsModule(asmCustom.GetTypes().[0])) // null CheckThrowsArgumentNullException(fun () -> FSharpType.IsModule(null) |> ignore ) () [] member this.IsRecord() = // positive Assert.IsTrue(FSharpType.IsRecord(typeof)) Assert.IsTrue(FSharpType.IsRecord(typeof>)) // negative Assert.IsFalse(FSharpType.IsRecord(typeof)) // null CheckThrowsArgumentNullException(fun () ->FSharpType.IsRecord(null) |> ignore ) () // Regression for 5588, Reflection: unit is still treated as a record type, but only if you pass BindingFlags.NonPublic [] member this.``IsRecord.Regression5588``() = // negative Assert.IsFalse(FSharpType.IsRecord(typeof)) Assert.IsFalse( FSharpType.IsRecord(typeof, System.Reflection.BindingFlags.NonPublic) ) () [] member this.IsTuple() = // positive Assert.IsTrue(FSharpType.IsTuple(typeof>)) Assert.IsTrue(FSharpType.IsTuple(typeof>)) // negative Assert.IsFalse(FSharpType.IsTuple(typeof)) Assert.IsFalse(FSharpType.IsTuple(typeof)) // null CheckThrowsArgumentNullException(fun () ->FSharpType.IsTuple(null) |> ignore ) () [] member this.IsUnion() = // positive Assert.IsTrue(FSharpType.IsUnion(typeof)) Assert.IsTrue(FSharpType.IsUnion(typeof>)) // negative Assert.IsFalse(FSharpType.IsUnion(typeof)) Assert.IsFalse(FSharpType.IsUnion(typeof)) // null CheckThrowsArgumentNullException(fun () ->FSharpType.IsUnion(null) |> ignore ) () [] member this.MakeFunctionType() = // positive Assert.AreEqual(FSharpType.MakeFunctionType(typeof,typeof),typeofstring>) // negative Assert.AreNotEqual(FSharpType.MakeFunctionType(typeof,typeof),typeofstring->int>) // null CheckThrowsArgumentNullException(fun () ->FSharpType.MakeFunctionType(null,null) |> ignore ) () [] member this.MakeTupleType() = // positive Assert.AreEqual(FSharpType.MakeTupleType([|typeof; typeof|]),typeof>) // negative Assert.AreNotEqual(FSharpType.MakeTupleType([|typeof; typeof|]),typeof>) // null CheckThrowsArgumentException(fun () ->FSharpType.MakeTupleType([|null;null|]) |> ignore ) () [] type UnionCaseInfoTests() = let singlenullarycaseunion = SingleNullaryCaseDiscUnion.SingleNullaryCaseTag let singlecaseunion1 = SingleCaseDiscUnion.SingleCaseTag(1.0, 2.0, 3.0) let singlecaseunion2 = SingleCaseDiscUnion.SingleCaseTag(4.0, 5.0, 6.0) let discUniontypeA = DiscUnionType.A let discUniontypeB = DiscUnionType.B(1,Some(discUniontypeA)) let discUniontypeC = DiscUnionType.C(1.0, "stringparam") let recDiscUniontypeB = DiscUnionType.B(1,Some(discUniontypeB)) let ((singlenullarycaseinfo:UnionCaseInfo),singlenullaryvaluearray) = FSharpValue.GetUnionFields(singlenullarycaseunion,typeof) let ((singlecaseinfo:UnionCaseInfo),singlevaluearray) = FSharpValue.GetUnionFields(singlecaseunion1,typeof) let ((discUnionInfoA:UnionCaseInfo), discvaluearray) = FSharpValue.GetUnionFields(discUniontypeA, typeof>) let ((discUnionInfoB:UnionCaseInfo), discvaluearray) = FSharpValue.GetUnionFields(discUniontypeB, typeof>) let ((discUnionInfoC:UnionCaseInfo), discvaluearray) = FSharpValue.GetUnionFields(discUniontypeC, typeof>) let ((recDiscCaseinfo:UnionCaseInfo),recDiscCasevaluearray) = FSharpValue.GetUnionFields(recDiscUniontypeB,typeof>) [] member this.Equals() = //positive // single case Assert.IsTrue(singlecaseinfo.Equals(singlecaseinfo)) // disc union Assert.IsTrue(discUnionInfoA.Equals(discUnionInfoA)) // rec disc union Assert.IsTrue(recDiscCaseinfo.Equals(recDiscCaseinfo)) // negative // single case Assert.IsFalse(singlecaseinfo.Equals(discUnionInfoA)) // disc union Assert.IsFalse(discUnionInfoA.Equals(discUnionInfoB)) // rec disc union Assert.IsFalse(recDiscCaseinfo.Equals(discUnionInfoA)) // null Assert.IsFalse(singlecaseinfo.Equals(null)) () [] member this.GetCustomAttributes() = // single case let singlecaseAttribute = (singlecaseinfo.GetCustomAttributes()).[0] :?> Attribute Assert.AreEqual(singlecaseAttribute.ToString(),"Microsoft.FSharp.Core.CompilationMappingAttribute" ) // disc union let discunionAttribute = (discUnionInfoA.GetCustomAttributes()).[0] :?> Attribute Assert.AreEqual(discunionAttribute.ToString(),"Microsoft.FSharp.Core.CompilationMappingAttribute" ) // rec disc union let recdiscAttribute = (recDiscCaseinfo.GetCustomAttributes()).[0] :?> Attribute Assert.AreEqual(recdiscAttribute.ToString(),"Microsoft.FSharp.Core.CompilationMappingAttribute" ) // null CheckThrowsArgumentNullException(fun () -> singlecaseinfo.GetCustomAttributes(null) |> ignore ) () [] member this.GetFields() = // single case let singlecaseFieldInfo = (singlecaseinfo.GetFields()).[0] Assert.AreEqual(singlecaseFieldInfo.PropertyType ,typeof<(float)>) // disc union null empty let discunionFieldInfoEpt = discUnionInfoA.GetFields() Assert.AreEqual(discunionFieldInfoEpt.Length ,0) // disc union int let discunionFieldInfo = (discUnionInfoB.GetFields()).[0] Assert.AreEqual(discunionFieldInfo.PropertyType ,typeof) // rec disc union let recdiscFieldInfo = (recDiscCaseinfo.GetFields()).[0] Assert.AreEqual(recdiscFieldInfo.PropertyType ,typeof) () [] member this.GetHashCode() = // positive // single case Assert.AreEqual(singlecaseinfo.GetHashCode(),singlecaseinfo.GetHashCode()) // disc union Assert.AreEqual(discUnionInfoA.GetHashCode(),discUnionInfoA.GetHashCode()) // rec disc union Assert.AreEqual(recDiscCaseinfo.GetHashCode(),recDiscCaseinfo.GetHashCode()) // negative // disc union Assert.AreNotEqual(discUnionInfoA.GetHashCode(),discUnionInfoB.GetHashCode()) () [] member this.GetType() = // single case Assert.AreEqual(singlecaseinfo.GetType(),typeof ) // disc union Assert.AreEqual(discUnionInfoA.GetType(),typeof ) // rec disc union Assert.AreEqual(recDiscCaseinfo.GetType(),typeof ) () [] member this.ToString() = // single case Assert.AreEqual(singlenullarycaseinfo.ToString(),"SingleNullaryCaseDiscUnion.SingleNullaryCaseTag") // single case Assert.AreEqual(singlecaseinfo.ToString(),"SingleCaseDiscUnion.SingleCaseTag") // disc union Assert.IsTrue((discUnionInfoA.ToString()).Contains("DiscUnionType") ) // rec disc union Assert.IsTrue((recDiscCaseinfo.ToString()).Contains("DiscUnionType")) ()fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Math/0000775000175000017500000000000012260314606026306 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Math/BigNum.fs0000775000175000017500000002317012260314606030027 0ustar chrischris // Various tests for the: // Microsoft.FSharp.Math.BigNum type namespace SystematicUnitTests.FSharp_Core.Microsoft_FSharp_Math open System open SystematicUnitTests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Math (* [Test Strategy] Make sure each method works on: * positive bignum * negative bignum * zero bignum * large bignum * DivideByZeroException *) [] type BigNum() = let g_positive1 = 1000000000000000000000000000000000018N let g_positive2 = 1000000000000000000000000000000000000N let g_negative1 = -1000000000000000000000000000000000018N let g_negative2 = -1000000000000000000000000000000000000N let g_negative3 = -1000000000000000000000000000000000036N let g_zero = 0N let g_normal = 88N let g_bigintpositive = 1000000000000000000000000000000000018I let g_bigintnegative = -1000000000000000000000000000000000018I // Interfaces [] member this.IComparable() = // Legit IC let ic = g_positive1 :> IComparable Assert.AreEqual(ic.CompareTo(g_positive1), 0) CheckThrowsArgumentException( fun () -> ic.CompareTo(g_bigintpositive) |> ignore) // Base class methods [] member this.ObjectToString() = Assert.AreEqual(g_positive1.ToString(), "1000000000000000000000000000000000018") Assert.AreEqual(g_zero.ToString(), "0") Assert.AreEqual(g_normal.ToString(), "88") [] member this.GetHashCode() = Assert.AreEqual(g_negative1.GetHashCode(), 1210897093) Assert.AreEqual(g_normal.GetHashCode(), 89) Assert.AreEqual(g_zero.GetHashCode(), 1) () // Static methods [] member this.Abs() = Assert.AreEqual(bignum.Abs(g_negative1), g_positive1) Assert.AreEqual(bignum.Abs(g_negative2), g_positive2) Assert.AreEqual(bignum.Abs(g_positive1), g_positive1) Assert.AreEqual(bignum.Abs(g_normal), g_normal) Assert.AreEqual(bignum.Abs(g_zero), g_zero) () [] member this.FromBigInt() = Assert.AreEqual(bignum.FromBigInt(g_bigintpositive), g_positive1) Assert.AreEqual(bignum.FromBigInt(g_bigintnegative), g_negative1) Assert.AreEqual(bignum.FromBigInt(0I), g_zero) Assert.AreEqual(bignum.FromBigInt(88I), g_normal) () [] member this.FromInt() = Assert.AreEqual(bignum.FromInt(2147483647), 2147483647N) Assert.AreEqual(bignum.FromInt(-2147483648), -2147483648N) Assert.AreEqual(bignum.FromInt(0), 0N) Assert.AreEqual(bignum.FromInt(88), 88N) () [] member this.One() = Assert.AreEqual(bignum.One, 1N) () [] member this.Parse() = Assert.AreEqual(bignum.Parse("100"), 100N) Assert.AreEqual(bignum.Parse("-100"), -100N) Assert.AreEqual(bignum.Parse("0"), g_zero) Assert.AreEqual(bignum.Parse("88"), g_normal) () [] member this.PowN() = Assert.AreEqual(bignum.PowN(100N, 2), 10000N) Assert.AreEqual(bignum.PowN(-3N, 3), -27N) Assert.AreEqual(bignum.PowN(g_zero, 2147483647), 0N) Assert.AreEqual(bignum.PowN(g_normal, 0), 1N) () [] member this.Sign() = Assert.AreEqual(bignum.Sign(g_positive1), 1) Assert.AreEqual(bignum.Sign(g_negative1), -1) Assert.AreEqual(bignum.Sign(g_zero), 0) Assert.AreEqual(bignum.Sign(g_normal), 1) () [] member this.ToBigInt() = Assert.AreEqual(bignum.ToBigInt(g_positive1), g_bigintpositive) Assert.AreEqual(bignum.ToBigInt(g_negative1), g_bigintnegative) Assert.AreEqual(bignum.ToBigInt(g_zero), 0I) Assert.AreEqual(bignum.ToBigInt(g_normal), 88I) () [] member this.ToDouble() = Assert.AreEqual(double (179769N * 1000000000000000N), 1.79769E+20) Assert.AreEqual(double (-179769N * 1000000000000000N), -1.79769E+20) Assert.AreEqual(double 0N, 0.0) Assert.AreEqual(double 88N, 88.0) () [] member this.ToInt32() = Assert.AreEqual(int32 2147483647N, 2147483647) Assert.AreEqual(int32 -2147483648N, -2147483648) Assert.AreEqual(int32 0N, 0) Assert.AreEqual(int32 88N, 88) [] member this.Zero() = Assert.AreEqual(bignum.Zero, 0N) () // operator methods [] member this.op_Addition() = Assert.AreEqual(100N + 200N, 300N) Assert.AreEqual((-100N) + (-200N), -300N) Assert.AreEqual(g_positive1 + g_negative1, 0N) Assert.AreEqual(g_zero + g_zero, 0N) Assert.AreEqual(g_normal + g_normal, 176N) Assert.AreEqual(g_normal + g_normal, 176N) () [] member this.op_Division() = Assert.AreEqual(g_positive1 / g_positive1, 1N) Assert.AreEqual(-100N / 2N, -50N) Assert.AreEqual(g_zero / g_positive1, 0N) () [] member this.op_Equality() = Assert.IsTrue((g_positive1 = g_positive1)) Assert.IsTrue((g_negative1 = g_negative1)) Assert.IsTrue((g_zero = g_zero)) Assert.IsTrue((g_normal = g_normal)) () [] member this.op_GreaterThan() = Assert.AreEqual((g_positive1 > g_positive2), true) Assert.AreEqual((g_negative1 > g_negative2), false) Assert.AreEqual((g_zero > g_zero), false) Assert.AreEqual((g_normal > g_normal), false) () [] member this.op_GreaterThanOrEqual() = Assert.AreEqual((g_positive1 >= g_positive2), true) Assert.AreEqual((g_positive2 >= g_positive1), false) Assert.AreEqual((g_negative1 >= g_negative1), true) Assert.AreEqual((0N >= g_zero), true) () [] member this.op_LessThan() = Assert.AreEqual((g_positive1 < g_positive2), false) Assert.AreEqual((g_negative1 < g_negative3), false) Assert.AreEqual((0N < g_zero), false) () [] member this.op_LessThanOrEqual() = Assert.AreEqual((g_positive1 <= g_positive2), false) Assert.AreEqual((g_positive2 <= g_positive1), true) Assert.AreEqual((g_negative1 <= g_negative1), true) Assert.AreEqual((0N <= g_zero), true) () [] member this.op_Multiply() = Assert.AreEqual(3N * 5N, 15N) Assert.AreEqual((-3N) * (-5N), 15N) Assert.AreEqual((-3N) * 5N, -15N) Assert.AreEqual(0N * 5N, 0N) () [] member this.op_Range() = let resultPos = [0N..2N] let seqPos = [0N;1N;2N] VerifySeqsEqual resultPos seqPos let resultNeg = [-2N..0N] let seqNeg = [-2N;-1N;0N] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0N..5N] let seqSmall = [0N;1N;2N;3N;4N;5N] VerifySeqsEqual resultSmall seqSmall () [] member this.op_RangeStep() = let resultPos = [0N..3N..6N] let seqPos = [0N;3N;6N] VerifySeqsEqual resultPos seqPos let resultNeg = [-6N..3N..0N] let seqNeg = [-6N;-3N;0N] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0N..3N..9N] let seqSmall = [0N;3N;6N;9N] VerifySeqsEqual resultSmall seqSmall () [] member this.op_Subtraction() = Assert.AreEqual(g_positive1-g_positive2, 18N) Assert.AreEqual(g_negative1-g_negative3, 18N) Assert.AreEqual(0N-g_positive1, g_negative1) () [] member this.op_UnaryNegation() = Assert.AreEqual(-g_positive1, g_negative1) Assert.AreEqual(-g_negative1, g_positive1) Assert.AreEqual(-0N, 0N) () [] member this.op_UnaryPlus() = Assert.AreEqual(+g_positive1, g_positive1) Assert.AreEqual(+g_negative1, g_negative1) Assert.AreEqual(+0N, 0N) () // instance methods [] member this.Denominator() = Assert.AreEqual(g_positive1.Denominator, 1I) Assert.AreEqual(g_negative1.Denominator, 1I) Assert.AreEqual(0N.Denominator, 1I) () [] member this.IsNegative() = Assert.IsFalse(g_positive1.IsNegative) Assert.IsTrue(g_negative1.IsNegative) Assert.IsFalse(0N.IsNegative) Assert.IsFalse(-0N.IsNegative) () [] member this.IsPositive() = Assert.IsTrue(g_positive1.IsPositive) Assert.IsFalse(g_negative1.IsPositive) Assert.IsFalse(0N.IsPositive) Assert.IsFalse(-0N.IsPositive) () [] member this.Numerator() = Assert.AreEqual(g_positive1.Numerator, g_bigintpositive) Assert.AreEqual(g_negative1.Numerator, g_bigintnegative) Assert.AreEqual(0N.Numerator, 0I) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core/Microsoft.FSharp.Math/BigIntStruct.fs0000775000175000017500000002667612260314606031245 0ustar chrischris // Various tests for bigint namespace SystematicUnitTests.FSharp_Core.Microsoft_FSharp_Math open System open SystematicUnitTests.LibraryTestFx open NUnit.Framework open Microsoft.FSharp.Math (* [Test Strategy] Make sure each method works on: * positive bigint * negative bigint * zero bugint * large bigint * DivideByZeroException *) [] type BigIntStruct() = // global variable let bigPositiveA = 12345678901234567890I let bigPositiveB = 98765432109876543210I let bigNegativeA = -bigPositiveA let bigNegativeB = -bigPositiveB // Interfaces [] member this.IComparable() = // Legit IC let ic = bigPositiveA :> IComparable Assert.AreEqual(ic.CompareTo(bigPositiveA), 0) // Base class methods [] member this.ObjectToString() = Assert.AreEqual(bigPositiveA.ToString(), "12345678901234567890") Assert.AreEqual((new bigint(0)).ToString(), "0") Assert.AreEqual((new bigint(168)).ToString(), "168") Assert.AreEqual(-168I.ToString(), "-168") Assert.AreEqual(-0I.ToString(), "0") [] member this.ObjectEquals() = // All three are different constructor, but have equivalent value let a = new bigint(168) let b = 168I let c = new bigint(168L) Assert.IsTrue( (a = b) ) Assert.IsTrue( (b = c) ) Assert.IsTrue( (c = a) ) Assert.IsTrue( a.Equals(b) ); Assert.IsTrue( b.Equals(a) ) Assert.IsTrue( b.Equals(c) ); Assert.IsTrue( c.Equals(b) ) Assert.IsTrue( c.Equals(a) ); Assert.IsTrue( a.Equals(c) ) // Self equality let a = new bigint(168) Assert.IsTrue( (a = a) ) Assert.IsTrue(a.Equals(a)) // Null Assert.IsFalse(a.Equals(null)) // static methods [] member this.Abs() = Assert.AreEqual(bigint.Abs(bigPositiveA), bigPositiveA) Assert.AreEqual(bigint.Abs(bigPositiveB), bigPositiveB) Assert.AreEqual(bigint.Abs(bigNegativeA), bigPositiveA) Assert.AreEqual(bigint.Abs(bigNegativeB), bigPositiveB) Assert.AreEqual(bigint.Abs(0I), 0I) () [] member this.DivRem() = Assert.AreEqual(bigint.DivRem(100I, 123I), (0I, 100I)) Assert.AreEqual(bigint.DivRem(123I, 100I), (1I, 23I)) Assert.AreEqual(bigint.DivRem(123I, -100I), (-1I, 23I)) Assert.AreEqual(bigint.DivRem(0I, 1I), (0I, 0I)) Assert.AreEqual(bigint.DivRem(-100I, -123I), (0I, -100I)) Assert.AreEqual(bigint.DivRem(-123I, -100I), (1I, -23I)) Assert.AreEqual(bigint.DivRem(0I, 100I), (0I, 0I)) CheckThrowsDivideByZeroException(fun() -> bigint.DivRem(100I, 0I) |> ignore) () (* [] member this.Factorial() = Assert.AreEqual(bigint.Factorial(0I), 1I) Assert.AreEqual(bigint.Factorial(1I), 1I) Assert.AreEqual(bigint.Factorial(5I), 120I) Assert.AreEqual(bigint.Factorial(10I), 3628800I) CheckThrowsArgumentException(fun() -> bigint.Factorial(-10I) |> ignore) () *) [] member this.GCD() = Assert.AreEqual(bigint.Gcd(bigPositiveA, bigPositiveB), 900000000090I) Assert.AreEqual(bigint.Gcd(bigNegativeA, bigNegativeB), 900000000090I) Assert.AreEqual(bigint.Gcd(0I, bigPositiveA), bigPositiveA) () [] member this.One() = Assert.AreEqual(bigint.One, 1I) () [] member this.Parse() = Assert.AreEqual(bigint.Parse("12345678901234567890"), bigPositiveA) Assert.AreEqual(bigint.Parse("168"), 168I) Assert.AreEqual(bigint.Parse("000"), 0I) CheckThrowsArgumentException(fun() -> bigint.Parse("abc168L") |> ignore) CheckThrowsArgumentException(fun() -> bigint.Parse("") |> ignore) () [] member this.Pow() = Assert.AreEqual(bigint.Pow(2I, 3I), 8I) Assert.AreEqual(bigint.Pow(0I, 100I), 0I) Assert.AreEqual(bigint.Pow(-10I, 2I), 100I) CheckThrowsArgumentException(fun() -> bigint.Pow(100I, -2I) |> ignore) () [] member this.Sign() = Assert.AreEqual(bigint.Sign(0I), 0) Assert.AreEqual(bigint.Sign(bigPositiveA), 1) Assert.AreEqual(bigint.Sign(bigNegativeA), -1) () [] member this.ToDouble() = Assert.AreEqual(double 0I, 0) Assert.AreEqual(double 123I, 123.0) Assert.AreEqual(double -123I, -123.0) () [] member this.ToInt32() = Assert.AreEqual(int32 0I, 0) Assert.AreEqual(int32 123I, 123) Assert.AreEqual(int32 -123I, -123) () [] member this.ToInt64() = Assert.AreEqual(int64 0I, 0) Assert.AreEqual(int64 123I, 123L) Assert.AreEqual(int64 -123I, -123L) () [] member this.Zero() = Assert.AreEqual(bigint.Zero, 0I) () // operators [] member this.op_Addition() = Assert.AreEqual((123I + 456I), 579I) Assert.AreEqual((-123I + (-456I)), -579I) Assert.AreEqual((0I + 123I), 123I) Assert.AreEqual((bigPositiveA + 0I), bigPositiveA) Assert.AreEqual((bigPositiveA + bigNegativeA), 0I) () [] member this.op_Division() = Assert.AreEqual((123I / 124I), 0I) Assert.AreEqual((123I / (-124I)), 0I) Assert.AreEqual((0I / 123I), 0I) () [] member this.op_Equality() = Assert.AreEqual((bigPositiveA = bigPositiveA), true) Assert.AreEqual((bigPositiveA = bigNegativeA), false) Assert.AreEqual((bigNegativeA = bigPositiveA), false) Assert.AreEqual((bigNegativeA = (-123I)), false) Assert.AreEqual((0I = new bigint(0)), true) () [] member this.op_GreaterThan() = Assert.AreEqual((bigPositiveA > bigPositiveB), false) Assert.AreEqual((bigNegativeA > bigPositiveB), false) Assert.AreEqual((bigNegativeA > (-123I)), false) Assert.AreEqual((0I > new bigint(0)), false) () [] member this.op_GreaterThanOrEqual() = Assert.AreEqual((bigPositiveA >= bigPositiveB), false) Assert.AreEqual((bigPositiveA >= bigNegativeB), true) Assert.AreEqual((bigPositiveB >= bigPositiveA), true) Assert.AreEqual((bigNegativeA >= bigNegativeA), true) Assert.AreEqual((0I >= new bigint(0)), true) () [] member this.op_LessThan() = Assert.AreEqual((bigPositiveA < bigPositiveB), true) Assert.AreEqual((bigNegativeA < bigPositiveB), true) Assert.AreEqual((bigPositiveA < bigNegativeB), false) Assert.AreEqual((bigNegativeA < bigPositiveB), true) Assert.AreEqual((0I < new bigint(0)), false) () [] member this.op_LessThanOrEqual() = Assert.AreEqual((bigPositiveA <= bigPositiveB), true) Assert.AreEqual((bigPositiveA <= bigNegativeB), false) Assert.AreEqual((bigNegativeB <= bigPositiveA), true) Assert.AreEqual((bigNegativeA <= bigNegativeA), true) Assert.AreEqual((0I <= new bigint(-0)), true) () [] member this.op_Modulus() = Assert.AreEqual((bigPositiveA % bigPositiveB), bigPositiveA) Assert.AreEqual((bigNegativeA % bigNegativeB), bigNegativeA) Assert.AreEqual((0I % bigPositiveA), 0I) () [] member this.op_Multiply() = Assert.AreEqual((123I * 100I), 12300I) Assert.AreEqual((123I * (-100I)), -12300I) Assert.AreEqual((-123I * (-100I)), 12300I) Assert.AreEqual((0I * bigPositiveA), 0I) Assert.AreEqual((1I * 0I), 0I) () [] member this.op_Range() = let resultPos = [123I..128I] let seqPos = [ 123I 124I 125I 126I 127I 128I ] VerifySeqsEqual resultPos seqPos let resultNeg = [(-128I)..(-123I)] let seqNeg = [ -128I -127I -126I -125I -124I -123I ] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0I..5I] let seqSmall = [0I;1I;2I;3I;4I;5I] VerifySeqsEqual resultSmall seqSmall () [] member this.op_RangeStep() = let resultPos = [100I..3I..109I] let seqPos = [ 100I 103I 106I 109I ] VerifySeqsEqual resultPos seqPos let resultNeg = [(-109I)..3I..(-100I)] let seqNeg = [ -109I -106I -103I -100I ] VerifySeqsEqual resultNeg seqNeg let resultSmall = [0I..3I..9I] let seqSmall = [0I;3I;6I;9I] VerifySeqsEqual resultSmall seqSmall () [] member this.op_Subtraction() = Assert.AreEqual((100I - 123I), -23I) Assert.AreEqual((0I - bigPositiveB), bigNegativeB) Assert.AreEqual((bigPositiveB - 0I), bigPositiveB) Assert.AreEqual((-100I - (-123I)), 23I) Assert.AreEqual((100I - (-123I)), 223I) Assert.AreEqual((-100I - 123I), -223I) () [] member this.op_UnaryNegation() = Assert.AreEqual(-bigPositiveA, bigNegativeA) Assert.AreEqual(-bigNegativeA, bigPositiveA) Assert.AreEqual(-0I, 0I) () [] member this.op_UnaryPlus() = Assert.AreEqual(+bigPositiveA, bigPositiveA) Assert.AreEqual(+bigNegativeA, bigNegativeA) Assert.AreEqual(+0I, 0I) () // instance methods [] member this.New_int32() = Assert.AreEqual(new bigint(0), 0I) Assert.AreEqual(new bigint(-10), -10I) Assert.AreEqual(new bigint(System.Int32.MinValue), -2147483648I) () [] member this.New_int64() = Assert.AreEqual(new bigint(0L), 0I) Assert.AreEqual(new bigint(-100L), -100I) Assert.AreEqual(new bigint(System.Int64.MinValue), -9223372036854775808I) () fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/NUnitFrameworkShims.fs0000775000175000017500000000457412260314606024503 0ustar chrischrisnamespace NUnit.Framework open System type TestFixtureAttribute() = inherit System.Attribute() type TestAttribute() = inherit System.Attribute() type SetUpAttribute() = inherit System.Attribute() type TearDownAttribute() = inherit System.Attribute() exception AssertionException of string module private Impl = let rec equals (expected:obj) (actual:obj) = match expected, actual with | (:? Array as a1), (:? Array as a2) -> if a1.Rank > 1 then failwith "Rank > 1 not supported" if a2.Rank > 1 then false else let lb = a1.GetLowerBound(0) let ub = a1.GetUpperBound(0) if lb <> a2.GetLowerBound(0) || ub <> a2.GetUpperBound(0) then false else {lb..ub} |> Seq.forall(fun i -> equals (a1.GetValue(i)) (a2.GetValue(i))) | _ -> Object.Equals(expected, actual) type Assert = static member AreEqual(expected : obj, actual : obj, message : string) = if not (Impl.equals expected actual) then let message = sprintf "%s: Expected %A but got %A" message expected actual AssertionException message |> raise static member AreNotEqual(expected : obj, actual : obj, message : string) = if Impl.equals expected actual then let message = sprintf "%s: Expected not %A but got %A" message expected actual AssertionException message |> raise static member AreEqual(expected : obj, actual : obj) = Assert.AreEqual(expected, actual, "Assertion") static member AreNotEqual(expected : obj, actual : obj) = Assert.AreNotEqual(expected, actual, "Assertion") static member IsNull(o : obj) = Assert.AreEqual(null, o) static member IsTrue(x : bool, message : string) = if not x then AssertionException(message) |> raise static member IsTrue(x : bool) = Assert.IsTrue(x, "") static member IsFalse(x : bool, message : string) = if x then AssertionException(message) |> raise static member IsFalse(x : bool) = Assert.IsFalse(x, "") static member Fail(message : string) = AssertionException(message) |> raise static member Fail() = Assert.Fail("") static member Fail(message : string, args : obj[]) = Assert.Fail(String.Format(message,args))fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/SurfaceArea.Portable.fs0000775000175000017500000123666312260314606024523 0ustar chrischrisnamespace FSharp.Core.Unittests.Portable.SurfaceArea open NUnit.Framework [] type SurfaceAreaTest() = [] member this.VerifyArea() = #if FX_ATLEAST_45 let curDir = System.IO.Path.GetDirectoryName((new System.Uri(System.Reflection.Assembly.Load("nunit.util").CodeBase)).LocalPath) // e.g. "C:\VSPro_FSharp\binaries\x86chk\SuiteBin\FSharp\" #else let curDir = System.IO.Path.GetDirectoryName((new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).LocalPath) // e.g. "C:\VSPro_FSharp\binaries\x86chk\SuiteBin\FSharp\" #endif let dirOfPortableFSCoreInSuiteBin = System.IO.Path.Combine(curDir, @"FSharp.Core.Portable") let portableFSCore = System.IO.Path.Combine(dirOfPortableFSCoreInSuiteBin, @"FSharp.Core.dll") let asm = System.Reflection.Assembly.ReflectionOnlyLoadFrom(portableFSCore) for ref in [| // PrepareSuiteBin in devdiv build copies the Profile37 reference assemblies here, so that this unit test can consume them dirOfPortableFSCoreInSuiteBin + @"\mscorlib.dll" dirOfPortableFSCoreInSuiteBin + @"\System.Core.dll" dirOfPortableFSCoreInSuiteBin + @"\System.dll" dirOfPortableFSCoreInSuiteBin + @"\System.Net.dll" |] do System.Reflection.Assembly.ReflectionOnlyLoadFrom(ref) |> ignore let types = asm.GetExportedTypes() let actual = new System.Text.StringBuilder() actual.Append("\r\n") |> ignore let values = types |> Array.collect (fun t -> t.GetMembers()) |> Array.map (fun v -> sprintf "%s: %s" (v.ReflectedType.ToString()) (v.ToString())) |> Array.sort |> Array.iter (fun s -> actual.Append(s) |> ignore actual.Append("\r\n") |> ignore) let postdev10 = @" Microsoft.FSharp.Collections.Array2DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array2DModule: Int32 Base1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Base2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array2DModule: Int32 Length1[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: Int32 Length2[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: System.String ToString() Microsoft.FSharp.Collections.Array2DModule: System.Type GetType() Microsoft.FSharp.Collections.Array2DModule: T Get[T](T[,], Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: TResult[,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: TResult[,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Copy[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] Create[T](Int32, Int32, T) Microsoft.FSharp.Collections.Array2DModule: T[,] Initialize[T](Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]) Microsoft.FSharp.Collections.Array2DModule: T[,] Rebase[T](T[,]) Microsoft.FSharp.Collections.Array2DModule: T[,] ZeroCreate[T](Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void CopyTo[T](T[,], Int32, Int32, T[,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array2DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,]) Microsoft.FSharp.Collections.Array2DModule: Void Set[T](T[,], Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array3DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array3DModule: Int32 Length1[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length2[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: Int32 Length3[T](T[,,]) Microsoft.FSharp.Collections.Array3DModule: System.String ToString() Microsoft.FSharp.Collections.Array3DModule: System.Type GetType() Microsoft.FSharp.Collections.Array3DModule: T Get[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: TResult[,,] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[,,]) Microsoft.FSharp.Collections.Array3DModule: T[,,] Create[T](Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array3DModule: T[,,] Initialize[T](Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]) Microsoft.FSharp.Collections.Array3DModule: T[,,] ZeroCreate[T](Int32, Int32, Int32) Microsoft.FSharp.Collections.Array3DModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]]]], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[,,]) Microsoft.FSharp.Collections.Array3DModule: Void Set[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.Array4DModule: Int32 GetHashCode() Microsoft.FSharp.Collections.Array4DModule: Int32 Length1[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length2[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length3[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: Int32 Length4[T](T[,,,]) Microsoft.FSharp.Collections.Array4DModule: System.String ToString() Microsoft.FSharp.Collections.Array4DModule: System.Type GetType() Microsoft.FSharp.Collections.Array4DModule: T Get[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Create[T](Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.Array4DModule: T[,,,] Initialize[T](Int32, Int32, Int32, Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]]]]) Microsoft.FSharp.Collections.Array4DModule: T[,,,] ZeroCreate[T](Int32, Int32, Int32, Int32) Microsoft.FSharp.Collections.Array4DModule: Void Set[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Boolean IsEmpty[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ArrayModule: Int32 Length[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](T[]) Microsoft.FSharp.Collections.ArrayModule: System.String ToString() Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1,T2][] Zip[T1,T2](T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T1[],T2[]] Unzip[T1,T2](System.Tuple`2[T1,T2][]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`2[T[],T[]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1,T2,T3][] Zip3[T1,T2,T3](T1[], T2[], T3[]) Microsoft.FSharp.Collections.ArrayModule: System.Tuple`3[T1[],T2[],T3[]] Unzip3[T1,T2,T3](System.Tuple`3[T1,T2,T3][]) Microsoft.FSharp.Collections.ArrayModule: System.Type GetType() Microsoft.FSharp.Collections.ArrayModule: T Average[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T Get[T](T[], Int32) Microsoft.FSharp.Collections.ArrayModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Max[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: T Min[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T[]) Microsoft.FSharp.Collections.ArrayModule: T Sum[T](T[]) Microsoft.FSharp.Collections.ArrayModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult[]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], T[]) Microsoft.FSharp.Collections.ArrayModule: TResult[] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T[]) Microsoft.FSharp.Collections.ArrayModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], T1[], T2[], TState) Microsoft.FSharp.Collections.ArrayModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: TState[] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], T[], TState) Microsoft.FSharp.Collections.ArrayModule: TState[] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Append[T](T[], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Concat[T](System.Collections.Generic.IEnumerable`1[T[]]) Microsoft.FSharp.Collections.ArrayModule: T[] Copy[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Create[T](Int32, T) Microsoft.FSharp.Collections.ArrayModule: T[] Empty[T]() Microsoft.FSharp.Collections.ArrayModule: T[] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] GetSubArray[T](T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: T[] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ArrayModule: T[] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Reverse[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: T[] Sort[T](T[]) Microsoft.FSharp.Collections.ArrayModule: T[] ZeroCreate[T](Int32) Microsoft.FSharp.Collections.ArrayModule: Void CopyTo[T](T[], Int32, T[], Int32, Int32) Microsoft.FSharp.Collections.ArrayModule: Void Fill[T](T[], Int32, Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], T1[], T2[]) Microsoft.FSharp.Collections.ArrayModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], T[]) Microsoft.FSharp.Collections.ArrayModule: Void Set[T](T[], Int32, T) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlaceWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], T[]) Microsoft.FSharp.Collections.ArrayModule: Void SortInPlace[T](T[]) Microsoft.FSharp.Collections.ComparisonIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ComparisonIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] FromFunction[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]]) Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.IComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.ComparisonIdentity: System.String ToString() Microsoft.FSharp.Collections.ComparisonIdentity: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsCons() Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Length Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 Tag Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Length() Microsoft.FSharp.Collections.FSharpList`1[T]: Int32 get_Tag() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1+Tags[T] Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Cons(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] Tail Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] TailOrNull Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Empty() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_Tail() Microsoft.FSharp.Collections.FSharpList`1[T]: Microsoft.FSharp.Collections.FSharpList`1[T] get_TailOrNull() Microsoft.FSharp.Collections.FSharpList`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpList`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpList`1[T]: T Head Microsoft.FSharp.Collections.FSharpList`1[T]: T HeadOrDefault Microsoft.FSharp.Collections.FSharpList`1[T]: T Item [Int32] Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Head() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_HeadOrDefault() Microsoft.FSharp.Collections.FSharpList`1[T]: T get_Item(Int32) Microsoft.FSharp.Collections.FSharpList`1[T]: Void .ctor(T, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean ContainsKey(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 Count Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Add(TKey, TValue) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue] Remove(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Microsoft.FSharp.Core.FSharpOption`1[TValue] TryFind(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.String ToString() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: System.Type GetType() Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue Item [TKey] Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: TValue get_Item(TKey) Microsoft.FSharp.Collections.FSharpMap`2[TKey,TValue]: Void .ctor(System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Contains(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsEmpty Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsProperSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSubsetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean IsSupersetOf(Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Boolean get_IsEmpty() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 Count Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 GetHashCode() Microsoft.FSharp.Collections.FSharpSet`1[T]: Int32 get_Count() Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Add(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove(T) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Addition(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: Microsoft.FSharp.Collections.FSharpSet`1[T] op_Subtraction(Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.FSharpSet`1[T]: System.String ToString() Microsoft.FSharp.Collections.FSharpSet`1[T]: System.Type GetType() Microsoft.FSharp.Collections.FSharpSet`1[T]: T MaximumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T MinimumElement Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MaximumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: T get_MinimumElement() Microsoft.FSharp.Collections.FSharpSet`1[T]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.HashIdentity: Boolean Equals(System.Object) Microsoft.FSharp.Collections.HashIdentity: Int32 GetHashCode() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] FromFunctions[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]]) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] LimitedStructural[T](Int32) Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Reference[T]() Microsoft.FSharp.Collections.HashIdentity: System.Collections.Generic.IEqualityComparer`1[T] Structural[T]() Microsoft.FSharp.Collections.HashIdentity: System.String ToString() Microsoft.FSharp.Collections.HashIdentity: System.Type GetType() Microsoft.FSharp.Collections.ListModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.ListModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Int32 GetHashCode() Microsoft.FSharp.Collections.ListModule: Int32 Length[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]] Zip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Collect[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Collections.FSharpList`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], Microsoft.FSharp.Collections.FSharpList`1[T3]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] ScanBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Concat[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpList`1[T]]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Empty[T]() Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Permute[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.Int32], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Replicate[T](Int32, T) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Reverse[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] SortWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Sort[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Collections.FSharpList`1[T] Tail[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.String ToString() Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2]] Unzip[T1,T2](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[T1,T2]]) Microsoft.FSharp.Collections.ListModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[T],Microsoft.FSharp.Collections.FSharpList`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[T1],Microsoft.FSharp.Collections.FSharpList`1[T2],Microsoft.FSharp.Collections.FSharpList`1[T3]] Unzip3[T1,T2,T3](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[T1,T2,T3]]) Microsoft.FSharp.Collections.ListModule: System.Type GetType() Microsoft.FSharp.Collections.ListModule: T Average[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Get[T](Microsoft.FSharp.Collections.FSharpList`1[T], Int32) Microsoft.FSharp.Collections.ListModule: T Head[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Max[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Min[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T ReduceBack[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T Sum[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: TState Fold2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TState]]], TState, Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: TState FoldBack2[T1,T2,TState](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2], TState) Microsoft.FSharp.Collections.ListModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpList`1[T], TState) Microsoft.FSharp.Collections.ListModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]]], Microsoft.FSharp.Collections.FSharpList`1[T1], Microsoft.FSharp.Collections.FSharpList`1[T2]) Microsoft.FSharp.Collections.ListModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.ListModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.MapModule: Boolean ContainsKey[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.MapModule: Boolean Exists[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean ForAll[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Boolean IsEmpty[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Int32 GetHashCode() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]] ToList[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,TResult] Map[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Add[TKey,T](TKey, T, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Empty[TKey,T]() Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Filter[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfArray[TKey,T](System.Tuple`2[TKey,T][]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfList[TKey,T](Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] OfSeq[TKey,T](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Collections.FSharpMap`2[TKey,T] Remove[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TKey] TryFindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,T]] ToSeq[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.String ToString() Microsoft.FSharp.Collections.MapModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpMap`2[TKey,T],Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]] Partition[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Tuple`2[TKey,T][] ToArray[TKey,T](Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: System.Type GetType() Microsoft.FSharp.Collections.MapModule: T Find[TKey,T](TKey, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TKey FindKey[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TResult Pick[TKey,T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: TState FoldBack[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T], TState) Microsoft.FSharp.Collections.MapModule: TState Fold[TKey,T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]]], TState, Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.MapModule: Void Iterate[TKey,T](Microsoft.FSharp.Core.FSharpFunc`2[TKey,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Collections.FSharpMap`2[TKey,T]) Microsoft.FSharp.Collections.SeqModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SeqModule: Boolean Exists2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,System.Boolean]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Boolean IsEmpty[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 CompareWith[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,System.Int32]], System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 FindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SeqModule: Int32 Length[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] TryFindIndex[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] TryPick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Microsoft.FSharp.Core.FSharpOption`1[T] TryFind[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T,T]] Pairwise[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[T1,T2]] Zip[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Collections.Generic.IEnumerable`1[T]]] GroupBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,System.Int32]] CountBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[System.Tuple`3[T1,T2,T3]] Zip3[T1,T2,T3](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2], System.Collections.Generic.IEnumerable`1[T3]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Collect[T,TCollection,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] MapIndexed[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[TState] Scan[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T[]] Windowed[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Append[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cache[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Cast[T](System.Collections.IEnumerable) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Concat[TCollection,T](System.Collections.Generic.IEnumerable`1[TCollection]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable`1[T]]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] DistinctBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Distinct[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Empty[T]() Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] InitializeInfinite[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Initialize[T](Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] ReadOnly[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SkipWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Skip[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] SortBy[T,TKey](Microsoft.FSharp.Core.FSharpFunc`2[T,TKey], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Sort[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] TakeWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Take[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Truncate[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Unfold[TState,T](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[T,TState]]], TState) Microsoft.FSharp.Collections.SeqModule: System.Collections.Generic.IEnumerable`1[T] Where[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: System.String ToString() Microsoft.FSharp.Collections.SeqModule: System.Type GetType() Microsoft.FSharp.Collections.SeqModule: T Average[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T ExactlyOne[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Find[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Get[T](Int32, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Head[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Last[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MaxBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Max[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T MinBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Min[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Reduce[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T Sum[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult AverageBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult Pick[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TResult SumBy[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: T[] ToArray[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate2[T1,T2](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IEnumerable`1[T2]) Microsoft.FSharp.Collections.SeqModule: Void IterateIndexed[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SeqModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Contains[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean Equals(System.Object) Microsoft.FSharp.Collections.SetModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsEmpty[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsProperSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSubset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Boolean IsSuperset[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 Count[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Int32 GetHashCode() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Add[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Difference[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Empty[T]() Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] IntersectMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Intersect[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfArray[T](T[]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfList[T](Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] OfSeq[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Remove[T](T, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Singleton[T](T) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] UnionMany[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Collections.FSharpSet`1[T]]) Microsoft.FSharp.Collections.SetModule: Microsoft.FSharp.Collections.FSharpSet`1[T] Union[T](Microsoft.FSharp.Collections.FSharpSet`1[T], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Collections.Generic.IEnumerable`1[T] ToSeq[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.String ToString() Microsoft.FSharp.Collections.SetModule: System.Tuple`2[Microsoft.FSharp.Collections.FSharpSet`1[T],Microsoft.FSharp.Collections.FSharpSet`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: System.Type GetType() Microsoft.FSharp.Collections.SetModule: T MaxElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T MinElement[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Collections.FSharpSet`1[T], TState) Microsoft.FSharp.Collections.SetModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: T[] ToArray[T](Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Collections.SetModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Collections.FSharpSet`1[T]) Microsoft.FSharp.Control.CommonExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.CommonExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] AsyncWrite(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Byte[]] AsyncReadBytes(System.IO.Stream, Int32) Microsoft.FSharp.Control.CommonExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Int32] AsyncRead(System.IO.Stream, Byte[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.CommonExtensions: System.IDisposable SubscribeToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.CommonExtensions: System.String ToString() Microsoft.FSharp.Control.CommonExtensions: System.Type GetType() Microsoft.FSharp.Control.CommonExtensions: Void AddToObservable[T](System.IObservable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.EventModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.EventModule: Int32 GetHashCode() Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[System.Tuple`2[T,T]],System.Tuple`2[T,T]] Pairwise[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Choose[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Map[T,TResult,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult],TResult] Scan[TResult,T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Filter[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Merge[TDel1,T,TDel2](Microsoft.FSharp.Control.IEvent`2[TDel1,T], Microsoft.FSharp.Control.IEvent`2[TDel2,T]) Microsoft.FSharp.Control.EventModule: System.String ToString() Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult1],TResult1],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[TResult2],TResult2]] Split[T,TResult1,TResult2,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Tuple`2[Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T],Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T]] Partition[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.EventModule: System.Type GetType() Microsoft.FSharp.Control.EventModule: Void Add[T,TDel](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.IEvent`2[TDel,T]) Microsoft.FSharp.Control.FSharpAsync: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Control.FSharpAsync`1[T]] StartChild[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpChoice`2[T,System.Exception]] Catch[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Ignore[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Sleep(Int32) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToContext(System.Threading.SynchronizationContext) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToNewThread() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] SwitchToThreadPool() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitIAsyncResult(System.IAsyncResult, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Boolean] AwaitWaitHandle(System.Threading.WaitHandle, Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.IDisposable] OnCancel(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] CancellationToken Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.CancellationToken] get_CancellationToken() Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[System.Threading.Tasks.Task`1[T]] StartChildAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T[]] Parallel[T](System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitEvent[TDel,T](Microsoft.FSharp.Control.IEvent`2[TDel,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] AwaitTask[T](System.Threading.Tasks.Task`1[T]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,TArg3,T](TArg1, TArg2, TArg3, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[TArg1,TArg2,TArg3,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,TArg2,T](TArg1, TArg2, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[TArg1,TArg2,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[TArg1,T](TArg1, Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg1,System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromBeginEnd[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[System.AsyncCallback,System.Object],System.IAsyncResult], Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] FromContinuations[T](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]],Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: Microsoft.FSharp.Control.FSharpAsync`1[T] TryCancelled[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsync: System.String ToString() Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken DefaultCancellationToken Microsoft.FSharp.Control.FSharpAsync: System.Threading.CancellationToken get_DefaultCancellationToken() Microsoft.FSharp.Control.FSharpAsync: System.Threading.Tasks.Task`1[T] StartAsTask[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.Tasks.TaskCreationOptions], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: System.Tuple`3[Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[TArg,System.AsyncCallback,System.Object],System.IAsyncResult],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,T],Microsoft.FSharp.Core.FSharpFunc`2[System.IAsyncResult,Microsoft.FSharp.Core.Unit]] AsBeginEnd[TArg,T](Microsoft.FSharp.Core.FSharpFunc`2[TArg,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsync: System.Type GetType() Microsoft.FSharp.Control.FSharpAsync: T RunSynchronously[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void CancelDefaultToken() Microsoft.FSharp.Control.FSharpAsync: Void Start(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartImmediate(Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsync: Void StartWithContinuations[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[System.OperationCanceledException,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncBuilder: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] For[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] While(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] Zero() Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Bind[T,TResult](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[TResult] Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Control.FSharpAsync`1[TResult]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Combine[T](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Delay[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] ReturnFrom[T](Microsoft.FSharp.Control.FSharpAsync`1[T]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] Return[T](T) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryFinally[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Control.FSharpAsyncBuilder: Microsoft.FSharp.Control.FSharpAsync`1[T] TryWith[T](Microsoft.FSharp.Control.FSharpAsync`1[T], Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,Microsoft.FSharp.Control.FSharpAsync`1[T]]) Microsoft.FSharp.Control.FSharpAsyncBuilder: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncBuilder: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.String ToString() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: System.Type GetType() Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply]: Void Reply(TReply) Microsoft.FSharp.Control.FSharpAsync`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpAsync`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpAsync`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] Publish Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate] get_Publish() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.String ToString() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: System.Type GetType() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void .ctor() Microsoft.FSharp.Control.FSharpDelegateEvent`1[TDelegate]: Void Trigger(System.Object[]) Microsoft.FSharp.Control.FSharpEvent`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] Publish Microsoft.FSharp.Control.FSharpEvent`1[T]: Microsoft.FSharp.Control.IEvent`2[Microsoft.FSharp.Control.FSharpHandler`1[T],T] get_Publish() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`1[T]: Void Trigger(T) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] Publish Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] get_Publish() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.String ToString() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: System.Type GetType() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void .ctor() Microsoft.FSharp.Control.FSharpEvent`2[TDelegate,TArgs]: Void Trigger(System.Object, TArgs) Microsoft.FSharp.Control.FSharpHandler`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Delegate[] GetInvocationList() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.IAsyncResult BeginInvoke(System.Object, T, System.AsyncCallback, System.Object) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Clone() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object DynamicInvoke(System.Object[]) Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object Target Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Object get_Target() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo Method Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Reflection.MethodInfo get_Method() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.String ToString() Microsoft.FSharp.Control.FSharpHandler`1[T]: System.Type GetType() Microsoft.FSharp.Control.FSharpHandler`1[T]: Void .ctor(System.Object, IntPtr) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void EndInvoke(System.IAsyncResult) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Control.FSharpHandler`1[T]: Void Invoke(System.Object, T) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Boolean Equals(System.Object) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 CurrentQueueLength Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 DefaultTimeout Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 GetHashCode() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_CurrentQueueLength() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Int32 get_DefaultTimeout() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TMsg]] TryReceive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[TReply]] PostAndTryAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.FSharpOption`1[T]] TryScan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TMsg] Receive(Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[TReply] PostAndAsyncReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpAsync`1[T] Scan[T](Microsoft.FSharp.Core.FSharpFunc`2[TMsg,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Control.FSharpAsync`1[T]]], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpHandler`1[System.Exception] Error Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg] Start(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Microsoft.FSharp.Core.FSharpOption`1[TReply] TryPostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.String ToString() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: System.Type GetType() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: TReply PostAndReply[TReply](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1[TReply],TMsg], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg],Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Post(TMsg) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void Start() Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void add_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void remove_Error(Microsoft.FSharp.Control.FSharpHandler`1[System.Exception]) Microsoft.FSharp.Control.FSharpMailboxProcessor`1[TMsg]: Void set_DefaultTimeout(Int32) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void AddHandler(TDelegate) Microsoft.FSharp.Control.IDelegateEvent`1[TDelegate]: Void RemoveHandler(TDelegate) Microsoft.FSharp.Control.LazyExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.LazyExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] CreateFromValue[T](T) Microsoft.FSharp.Control.LazyExtensions: System.Lazy`1[T] Create[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Control.LazyExtensions: System.String ToString() Microsoft.FSharp.Control.LazyExtensions: System.Type GetType() Microsoft.FSharp.Control.LazyExtensions: T Force[T](System.Lazy`1[T]) Microsoft.FSharp.Control.ObservableModule: Boolean Equals(System.Object) Microsoft.FSharp.Control.ObservableModule: Int32 GetHashCode() Microsoft.FSharp.Control.ObservableModule: System.IDisposable Subscribe[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[System.Tuple`2[T,T]] Pairwise[T](System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Choose[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[TResult] Scan[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]], TResult, System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Filter[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.IObservable`1[T] Merge[T](System.IObservable`1[T], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.String ToString() Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[TResult1],System.IObservable`1[TResult2]] Split[T,TResult1,TResult2](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpChoice`2[TResult1,TResult2]], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Tuple`2[System.IObservable`1[T],System.IObservable`1[T]] Partition[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], System.IObservable`1[T]) Microsoft.FSharp.Control.ObservableModule: System.Type GetType() Microsoft.FSharp.Control.ObservableModule: Void Add[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], System.IObservable`1[T]) Microsoft.FSharp.Control.WebExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Control.WebExtensions: Int32 GetHashCode() Microsoft.FSharp.Control.WebExtensions: Microsoft.FSharp.Control.FSharpAsync`1[System.Net.WebResponse] AsyncGetResponse(System.Net.WebRequest) Microsoft.FSharp.Control.WebExtensions: System.String ToString() Microsoft.FSharp.Control.WebExtensions: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AbstractClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AbstractClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AbstractClassAttribute: System.Object TypeId Microsoft.FSharp.Core.AbstractClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AbstractClassAttribute: System.String ToString() Microsoft.FSharp.Core.AbstractClassAttribute: System.Type GetType() Microsoft.FSharp.Core.AbstractClassAttribute: Void .ctor() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AllowNullLiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.String ToString() Microsoft.FSharp.Core.AllowNullLiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.AllowNullLiteralAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoOpenAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoOpenAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoOpenAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoOpenAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoOpenAttribute: System.String Path Microsoft.FSharp.Core.AutoOpenAttribute: System.String ToString() Microsoft.FSharp.Core.AutoOpenAttribute: System.String get_Path() Microsoft.FSharp.Core.AutoOpenAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor() Microsoft.FSharp.Core.AutoOpenAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean Value Microsoft.FSharp.Core.AutoSerializableAttribute: Boolean get_Value() Microsoft.FSharp.Core.AutoSerializableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object TypeId Microsoft.FSharp.Core.AutoSerializableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.AutoSerializableAttribute: System.String ToString() Microsoft.FSharp.Core.AutoSerializableAttribute: System.Type GetType() Microsoft.FSharp.Core.AutoSerializableAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.CLIEventAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIEventAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIEventAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIEventAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIEventAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIEventAttribute: System.String ToString() Microsoft.FSharp.Core.CLIEventAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIEventAttribute: Void .ctor() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CLIMutableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CLIMutableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CLIMutableAttribute: System.Object TypeId Microsoft.FSharp.Core.CLIMutableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CLIMutableAttribute: System.String ToString() Microsoft.FSharp.Core.CLIMutableAttribute: System.Type GetType() Microsoft.FSharp.Core.CLIMutableAttribute: Void .ctor() Microsoft.FSharp.Core.ClassAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ClassAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ClassAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ClassAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ClassAttribute: System.Object TypeId Microsoft.FSharp.Core.ClassAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ClassAttribute: System.String ToString() Microsoft.FSharp.Core.ClassAttribute: System.Type GetType() Microsoft.FSharp.Core.ClassAttribute: Void .ctor() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.ComparisonConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] Counts Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Collections.Generic.IEnumerable`1[System.Int32] get_Counts() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationArgumentCountsAttribute: Void .ctor(Int32[]) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationMappingAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 SequenceNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 VariantNumber Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_SequenceNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Int32 get_VariantNumber() Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags SourceConstructFlags Microsoft.FSharp.Core.CompilationMappingAttribute: Microsoft.FSharp.Core.SourceConstructFlags get_SourceConstructFlags() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationMappingAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationMappingAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationMappingAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32) Microsoft.FSharp.Core.CompilationMappingAttribute: Void .ctor(Microsoft.FSharp.Core.SourceConstructFlags, Int32, Int32) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationRepresentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags Flags Microsoft.FSharp.Core.CompilationRepresentationAttribute: Microsoft.FSharp.Core.CompilationRepresentationFlags get_Flags() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationAttribute: Void .ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationRepresentationFlags: Int32 value__ Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Event Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Instance Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags ModuleSuffix Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags None Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags Static Microsoft.FSharp.Core.CompilationRepresentationFlags: Microsoft.FSharp.Core.CompilationRepresentationFlags UseNullAsTrueValue Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilationRepresentationFlags: System.Type GetType() Microsoft.FSharp.Core.CompilationRepresentationFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilationSourceNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String SourceName Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.String get_SourceName() Microsoft.FSharp.Core.CompilationSourceNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilationSourceNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompiledNameAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompiledNameAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompiledNameAttribute: System.Object TypeId Microsoft.FSharp.Core.CompiledNameAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompiledNameAttribute: System.String CompiledName Microsoft.FSharp.Core.CompiledNameAttribute: System.String ToString() Microsoft.FSharp.Core.CompiledNameAttribute: System.String get_CompiledName() Microsoft.FSharp.Core.CompiledNameAttribute: System.Type GetType() Microsoft.FSharp.Core.CompiledNameAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsError Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean IsHidden Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsError() Microsoft.FSharp.Core.CompilerMessageAttribute: Boolean get_IsHidden() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 MessageNumber Microsoft.FSharp.Core.CompilerMessageAttribute: Int32 get_MessageNumber() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerMessageAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String Message Microsoft.FSharp.Core.CompilerMessageAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerMessageAttribute: System.String get_Message() Microsoft.FSharp.Core.CompilerMessageAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerMessageAttribute: Void .ctor(System.String, Int32) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsError(Boolean) Microsoft.FSharp.Core.CompilerMessageAttribute: Void set_IsHidden(Boolean) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean CheckClose Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Boolean get_CheckClose() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GenerateNext(System.Collections.Generic.IEnumerable`1[T] ByRef) Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Collections.Generic.IEnumerator`1[T] GetFreshEnumerator() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T LastGenerated Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: T get_LastGenerated() Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T]: Void Close() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace[] GetNestedNamespaces() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.String NamespaceName Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.String get_NamespaceName() Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.Type ResolveTypeName(System.String) Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace: System.Type[] GetTypes() Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Byte[] GetGeneratedAssemblyContents(System.Reflection.Assembly) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace[] GetNamespaces() Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Microsoft.FSharp.Quotations.FSharpExpr GetInvokerExpression(System.Reflection.MethodBase, Microsoft.FSharp.Quotations.FSharpExpr[]) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.EventHandler Invalidate Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.Reflection.ParameterInfo[] GetStaticParameters(System.Type) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: System.Type ApplyStaticArguments(System.Type, System.String[], System.Object[]) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Void add_Invalidate(System.EventHandler) Microsoft.FSharp.Core.CompilerServices.ITypeProvider: Void remove_Invalidate(System.EventHandler) Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1[TMeasure]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.MeasureOne: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureOne: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureOne: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureOne: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: System.String ToString() Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2[TMeasure1,TMeasure2]: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: Microsoft.FSharp.Control.IEvent`2[TDelegate,TArgs] CreateEvent[TDelegate,TArgs](Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[TDelegate,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Core.FSharpFunc`2[TArgs,Microsoft.FSharp.Core.Unit]],TDelegate]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateFromFunctions[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[TResult] EnumerateUsing[T,TCollection,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TCollection]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateThenFinally[T](System.Collections.Generic.IEnumerable`1[T], Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Collections.Generic.IEnumerable`1[T] EnumerateWhile[T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Boolean], System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.String ToString() Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String AssemblyName Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.String get_AssemblyName() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean IsHostedExecution Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean IsInvalidationSupported Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean SystemRuntimeContainsType(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean get_IsHostedExecution() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Boolean get_IsInvalidationSupported() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String ResolutionFolder Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String RuntimeAssembly Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String TemporaryFolder Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_ResolutionFolder() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_RuntimeAssembly() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String get_TemporaryFolder() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String[] ReferencedAssemblies Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.String[] get_ReferencedAssemblies() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Version SystemRuntimeAssemblyVersion Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: System.Version get_SystemRuntimeAssemblyVersion() Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void .ctor(Microsoft.FSharp.Core.FSharpFunc`2[System.String,System.Boolean]) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_IsHostedExecution(Boolean) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_IsInvalidationSupported(Boolean) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_ReferencedAssemblies(System.String[]) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_ResolutionFolder(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_RuntimeAssembly(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_SystemRuntimeAssemblyVersion(System.Version) Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig: Void set_TemporaryFolder(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 Column Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 Line Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 get_Column() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Int32 get_Line() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String FilePath Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.String get_FilePath() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_Column(Int32) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_FilePath(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderDefinitionLocationAttribute: Void set_Line(Int32) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute: Void .ctor() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Int32 value__ Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes IsErased Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes SuppressRelocate Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.String) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributes: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Object TypeId Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String CommentText Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String ToString() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.String get_CommentText() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: System.Type GetType() Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.CustomComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.CustomEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean AllowIntoPattern Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeGroupJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeJoin Microsoft.FSharp.Core.CustomOperationAttribute: Boolean IsLikeZip Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpace Microsoft.FSharp.Core.CustomOperationAttribute: Boolean MaintainsVariableSpaceUsingBind Microsoft.FSharp.Core.CustomOperationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_AllowIntoPattern() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeGroupJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeJoin() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_IsLikeZip() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpace() Microsoft.FSharp.Core.CustomOperationAttribute: Boolean get_MaintainsVariableSpaceUsingBind() Microsoft.FSharp.Core.CustomOperationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.CustomOperationAttribute: System.Object TypeId Microsoft.FSharp.Core.CustomOperationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.CustomOperationAttribute: System.String JoinConditionWord Microsoft.FSharp.Core.CustomOperationAttribute: System.String Name Microsoft.FSharp.Core.CustomOperationAttribute: System.String ToString() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_JoinConditionWord() Microsoft.FSharp.Core.CustomOperationAttribute: System.String get_Name() Microsoft.FSharp.Core.CustomOperationAttribute: System.Type GetType() Microsoft.FSharp.Core.CustomOperationAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_AllowIntoPattern(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeGroupJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeJoin(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_IsLikeZip(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_JoinConditionWord(System.String) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpace(Boolean) Microsoft.FSharp.Core.CustomOperationAttribute: Void set_MaintainsVariableSpaceUsingBind(Boolean) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean Value Microsoft.FSharp.Core.DefaultAugmentationAttribute: Boolean get_Value() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultAugmentationAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultAugmentationAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Check Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.DefaultValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.DefaultValueAttribute: Boolean get_Check() Microsoft.FSharp.Core.DefaultValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.DefaultValueAttribute: System.Object TypeId Microsoft.FSharp.Core.DefaultValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.DefaultValueAttribute: System.String ToString() Microsoft.FSharp.Core.DefaultValueAttribute: System.Type GetType() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor() Microsoft.FSharp.Core.DefaultValueAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.EntryPointAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EntryPointAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EntryPointAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EntryPointAttribute: System.Object TypeId Microsoft.FSharp.Core.EntryPointAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EntryPointAttribute: System.String ToString() Microsoft.FSharp.Core.EntryPointAttribute: System.Type GetType() Microsoft.FSharp.Core.EntryPointAttribute: Void .ctor() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object TypeId Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.String ToString() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: System.Type GetType() Microsoft.FSharp.Core.EqualityConditionalOnAttribute: Void .ctor() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ExperimentalAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ExperimentalAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ExperimentalAttribute: System.Object TypeId Microsoft.FSharp.Core.ExperimentalAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ExperimentalAttribute: System.String Message Microsoft.FSharp.Core.ExperimentalAttribute: System.String ToString() Microsoft.FSharp.Core.ExperimentalAttribute: System.String get_Message() Microsoft.FSharp.Core.ExperimentalAttribute: System.Type GetType() Microsoft.FSharp.Core.ExperimentalAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.ExtraTopLevelOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.ExtraTopLevelOperators: Byte ToByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Double ToDouble[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Int32 GetHashCode() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Collections.FSharpSet`1[T] CreateSet[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder DefaultAsyncBuilder Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Control.FSharpAsyncBuilder get_DefaultAsyncBuilder() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Linq.QueryBuilder get_query() Microsoft.FSharp.Core.ExtraTopLevelOperators: Microsoft.FSharp.Linq.QueryBuilder query Microsoft.FSharp.Core.ExtraTopLevelOperators: SByte ToSByte[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: Single ToSingle[T](T) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Collections.Generic.IDictionary`2[TKey,TValue] CreateDictionary[TKey,TValue](System.Collections.Generic.IEnumerable`1[System.Tuple`2[TKey,TValue]]) Microsoft.FSharp.Core.ExtraTopLevelOperators: System.String ToString() Microsoft.FSharp.Core.ExtraTopLevelOperators: System.Type GetType() Microsoft.FSharp.Core.ExtraTopLevelOperators: T LazyPattern[T](System.Lazy`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToString[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Core.ExtraTopLevelOperators: T SpliceUntypedExpression[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Core.ExtraTopLevelOperators: T[,] CreateArray2D[?,T](System.Collections.Generic.IEnumerable`1[?]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 Item Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice1Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean get_IsChoice2Of2() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2] Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice1Of2(T1) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Microsoft.FSharp.Core.FSharpChoice`2[T1,T2] NewChoice2Of2(T2) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 Item Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice2Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice1Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice2Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean get_IsChoice3Of3() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3] Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice1Of3(T1) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice2Of3(T2) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3] NewChoice3Of3(T3) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 Item Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice1Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice2Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice3Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice1Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice2Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice3Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean get_IsChoice4Of4() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4] Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice1Of4(T1) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice2Of4(T2) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice3Of4(T3) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4] NewChoice4Of4(T4) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 Item Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice1Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice2Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice2Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice3Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice4Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice1Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice2Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice3Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice4Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean get_IsChoice5Of5() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5] Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice1Of5(T1) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice2Of5(T2) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice3Of5(T3) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice4Of5(T4) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5] NewChoice5Of5(T5) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 Item Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice1Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice2Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice3Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice2Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice3Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice4Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice5Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice1Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice2Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice3Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice4Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice5Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean get_IsChoice6Of6() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6] Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice1Of6(T1) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice2Of6(T2) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice3Of6(T3) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice4Of6(T4) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice5Of6(T5) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6] NewChoice6Of6(T6) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 Item Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice1Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice2Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice3Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice4Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice2Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice3Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice4Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice5Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice6Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice1Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice2Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice3Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice4Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice5Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice6Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean get_IsChoice7Of7() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 Tag Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Int32 get_Tag() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7] Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice1Of7(T1) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice2Of7(T2) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice3Of7(T3) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice4Of7(T4) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice5Of7(T5) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice6Of7(T6) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7] NewChoice7Of7(T7) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.String ToString() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: System.Type GetType() Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: TResult Invoke(T) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: V InvokeFast[V](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,V]], T, TResult) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: W InvokeFast[V,W](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,W]]], T, TResult, V) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: X InvokeFast[V,W,X](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,X]]]], T, TResult, V, W) Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]: Y InvokeFast[V,W,X,Y](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TResult,Microsoft.FSharp.Core.FSharpFunc`2[V,Microsoft.FSharp.Core.FSharpFunc`2[W,Microsoft.FSharp.Core.FSharpFunc`2[X,Y]]]]], T, TResult, V, W, X) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Major Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Minor Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 Release Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Major() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Minor() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Int32 get_Release() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object TypeId Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.String ToString() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: System.Type GetType() Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int32, Int32) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsSome Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsNone(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean get_IsSome(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Int32 GetTag(Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1+Tags[T] Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] None Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] Some(T) Microsoft.FSharp.Core.FSharpOption`1[T]: Microsoft.FSharp.Core.FSharpOption`1[T] get_None() Microsoft.FSharp.Core.FSharpOption`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpOption`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(System.Object, System.Collections.IComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: System.String ToString() Microsoft.FSharp.Core.FSharpRef`1[T]: System.Type GetType() Microsoft.FSharp.Core.FSharpRef`1[T]: T Value Microsoft.FSharp.Core.FSharpRef`1[T]: T contents Microsoft.FSharp.Core.FSharpRef`1[T]: T contents@ Microsoft.FSharp.Core.FSharpRef`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpRef`1[T]: T get_contents() Microsoft.FSharp.Core.FSharpRef`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_Value(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpTypeFunc: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpTypeFunc: Int32 GetHashCode() Microsoft.FSharp.Core.FSharpTypeFunc: System.Object Specialize[T]() Microsoft.FSharp.Core.FSharpTypeFunc: System.String ToString() Microsoft.FSharp.Core.FSharpTypeFunc: System.Type GetType() Microsoft.FSharp.Core.FuncConvert: Boolean Equals(System.Object) Microsoft.FSharp.Core.FuncConvert: Int32 GetHashCode() Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit] ToFSharpFunc[T](System.Action`1[T]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]] FuncFromTupled[T1,T2,T3,T4,T5,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`5[T1,T2,T3,T4,T5],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]] FuncFromTupled[T1,T2,T3,T4,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`4[T1,T2,T3,T4],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]] FuncFromTupled[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`3[T1,T2,T3],TResult]) Microsoft.FSharp.Core.FuncConvert: Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]] FuncFromTupled[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[T1,T2],TResult]) Microsoft.FSharp.Core.FuncConvert: System.String ToString() Microsoft.FSharp.Core.FuncConvert: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.GeneralizableValueAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.GeneralizableValueAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object TypeId Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.String ToString() Microsoft.FSharp.Core.GeneralizableValueAttribute: System.Type GetType() Microsoft.FSharp.Core.GeneralizableValueAttribute: Void .ctor() Microsoft.FSharp.Core.ICloneableExtensions: Boolean Equals(System.Object) Microsoft.FSharp.Core.ICloneableExtensions: Int32 GetHashCode() Microsoft.FSharp.Core.ICloneableExtensions: System.Array Array.Clone(System.Array) Microsoft.FSharp.Core.ICloneableExtensions: System.String ToString() Microsoft.FSharp.Core.ICloneableExtensions: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.InterfaceAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.InterfaceAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.InterfaceAttribute: System.Object TypeId Microsoft.FSharp.Core.InterfaceAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.InterfaceAttribute: System.String ToString() Microsoft.FSharp.Core.InterfaceAttribute: System.Type GetType() Microsoft.FSharp.Core.InterfaceAttribute: Void .ctor() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String AddressOpNotFirstClassString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputArrayEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputMustBeNonNegativeString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String InputSequenceEmptyString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String NoNegateMinValueString Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_AddressOpNotFirstClassString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputArrayEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputMustBeNonNegativeString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_InputSequenceEmptyString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.String get_NoNegateMinValueString() Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean FastEqualsTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityERIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericEqualityWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericGreaterThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessOrEqualIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean GenericLessThanIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Boolean PhysicalEqualityIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple2[T1,T2](System.Collections.IComparer, System.Tuple`2[T1,T2], System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple3[T1,T2,T3](System.Collections.IComparer, System.Tuple`3[T1,T2,T3], System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple4[T1,T2,T3,T4](System.Collections.IComparer, System.Tuple`4[T1,T2,T3,T4], System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastCompareTuple5[T1,T2,T3,T4,T5](System.Collections.IComparer, System.Tuple`5[T1,T2,T3,T4,T5], System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple2[T1,T2](System.Collections.IEqualityComparer, System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple3[T1,T2,T3](System.Collections.IEqualityComparer, System.Tuple`3[T1,T2,T3]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple4[T1,T2,T3,T4](System.Collections.IEqualityComparer, System.Tuple`4[T1,T2,T3,T4]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 FastHashTuple5[T1,T2,T3,T4,T5](System.Collections.IEqualityComparer, System.Tuple`5[T1,T2,T3,T4,T5]) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonIntrinsic[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericComparisonWithComparerIntrinsic[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GenericHashWithComparerIntrinsic[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 LimitedGenericHashIntrinsic[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: Int32 PhysicalHashIntrinsic[T](T) Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+HashCompare: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Boolean TypeTestGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Char GetString(System.String, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Decimal MakeDecimal(Int32, Int32, Int32, Boolean, Byte) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CheckThis[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T CreateInstance[T]() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray2D[T](T[,], Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray3D[T](T[,,], Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray4D[T](T[,,,], Int32, Int32, Int32, Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T GetArray[T](T[], Int32) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxFast[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: T UnboxGeneric[T](System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void Dispose[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void FailStaticInit() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray2D[T](T[,], Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray3D[T](T[,,], Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray4D[T](T[,,,], Int32, Int32, Int32, Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions: Void SetArray[T](T[], Int32, T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean Or(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_Amp(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanAnd(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Boolean op_BooleanOr(Boolean, Boolean) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: IntPtr op_IntegerAddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators: T& op_AddressOf[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean Equals(System.Object) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityER[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEqualityWithComparer[T](System.Collections.IEqualityComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericGreaterThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessOrEqual[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean GenericLessThan[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Boolean PhysicalEquality[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Double FloatWithMeasure(Double) Microsoft.FSharp.Core.LanguagePrimitives: Int16 Int16WithMeasure(Int16) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparisonWithComparer[T](System.Collections.IComparer, T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericComparison[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHashWithComparer[T](System.Collections.IEqualityComparer, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GenericLimitedHash[T](Int32, T) Microsoft.FSharp.Core.LanguagePrimitives: Int32 GetHashCode() Microsoft.FSharp.Core.LanguagePrimitives: Int32 Int32WithMeasure(Int32) Microsoft.FSharp.Core.LanguagePrimitives: Int32 ParseInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Int32 PhysicalHash[T](T) Microsoft.FSharp.Core.LanguagePrimitives: Int64 Int64WithMeasure(Int64) Microsoft.FSharp.Core.LanguagePrimitives: Int64 ParseInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+ErrorStrings Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+HashCompare Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions Microsoft.FSharp.Core.LanguagePrimitives: Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicOperators Microsoft.FSharp.Core.LanguagePrimitives: SByte SByteWithMeasure(SByte) Microsoft.FSharp.Core.LanguagePrimitives: Single Float32WithMeasure(Single) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IComparer`1[T] FastGenericComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastGenericEqualityComparer[T]() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.Generic.IEqualityComparer`1[T] FastLimitedGenericEqualityComparer[T](Int32) Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer GenericComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IComparer get_GenericComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer GenericEqualityERComparer Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Collections.IEqualityComparer get_GenericEqualityERComparer() Microsoft.FSharp.Core.LanguagePrimitives: System.Decimal DecimalWithMeasure(System.Decimal) Microsoft.FSharp.Core.LanguagePrimitives: System.String ToString() Microsoft.FSharp.Core.LanguagePrimitives: System.Type GetType() Microsoft.FSharp.Core.LanguagePrimitives: T DivideByIntDynamic[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T DivideByInt[T](T, Int32) Microsoft.FSharp.Core.LanguagePrimitives: T EnumToValue[TEnum,T](TEnum) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMaximum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericMinimum[T](T, T) Microsoft.FSharp.Core.LanguagePrimitives: T GenericOneDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericOne[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZeroDynamic[T]() Microsoft.FSharp.Core.LanguagePrimitives: T GenericZero[T]() Microsoft.FSharp.Core.LanguagePrimitives: TEnum EnumOfValue[T,TEnum](T) Microsoft.FSharp.Core.LanguagePrimitives: TResult AdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedAdditionDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult CheckedMultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: TResult MultiplyDynamic[T1,T2,TResult](T1, T2) Microsoft.FSharp.Core.LanguagePrimitives: UInt32 ParseUInt32(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LiteralAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.LiteralAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.LiteralAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.LiteralAttribute: System.Object TypeId Microsoft.FSharp.Core.LiteralAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.LiteralAttribute: System.String ToString() Microsoft.FSharp.Core.LiteralAttribute: System.Type GetType() Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 Microsoft.FSharp.Core.MatchFailureException: Int32 Data2 Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode() Microsoft.FSharp.Core.MatchFailureException: Int32 GetHashCode(System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 HResult Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data1() Microsoft.FSharp.Core.MatchFailureException: Int32 get_Data2() Microsoft.FSharp.Core.MatchFailureException: Int32 get_HResult() Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary Data Microsoft.FSharp.Core.MatchFailureException: System.Collections.IDictionary get_Data() Microsoft.FSharp.Core.MatchFailureException: System.Exception GetBaseException() Microsoft.FSharp.Core.MatchFailureException: System.Exception InnerException Microsoft.FSharp.Core.MatchFailureException: System.Exception get_InnerException() Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase TargetSite Microsoft.FSharp.Core.MatchFailureException: System.Reflection.MethodBase get_TargetSite() Microsoft.FSharp.Core.MatchFailureException: System.String Data0 Microsoft.FSharp.Core.MatchFailureException: System.String HelpLink Microsoft.FSharp.Core.MatchFailureException: System.String Message Microsoft.FSharp.Core.MatchFailureException: System.String Source Microsoft.FSharp.Core.MatchFailureException: System.String StackTrace Microsoft.FSharp.Core.MatchFailureException: System.String ToString() Microsoft.FSharp.Core.MatchFailureException: System.String get_Data0() Microsoft.FSharp.Core.MatchFailureException: System.String get_HelpLink() Microsoft.FSharp.Core.MatchFailureException: System.String get_Message() Microsoft.FSharp.Core.MatchFailureException: System.String get_Source() Microsoft.FSharp.Core.MatchFailureException: System.String get_StackTrace() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: System.Type GetType() Microsoft.FSharp.Core.MatchFailureException: Void .ctor() Microsoft.FSharp.Core.MatchFailureException: Void .ctor(System.String, Int32, Int32) Microsoft.FSharp.Core.MatchFailureException: Void GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext) Microsoft.FSharp.Core.MatchFailureException: Void set_HelpLink(System.String) Microsoft.FSharp.Core.MatchFailureException: Void set_Source(System.String) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute: Void .ctor() Microsoft.FSharp.Core.MeasureAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.MeasureAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.MeasureAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.MeasureAttribute: System.Object TypeId Microsoft.FSharp.Core.MeasureAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.MeasureAttribute: System.String ToString() Microsoft.FSharp.Core.MeasureAttribute: System.Type GetType() Microsoft.FSharp.Core.MeasureAttribute: Void .ctor() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.NoComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.NoComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.NoComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object TypeId Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.String ToString() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: System.Type GetType() Microsoft.FSharp.Core.NoDynamicInvocationAttribute: Void .ctor() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.NoEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.NoEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.NoEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.NoEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.NoEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.NoEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.NoEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromInt64Dynamic(Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Object FromStringDynamic(System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.String ToString() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: System.Type GetType() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt32[T](Int32) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromInt64[T](Int64) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromOne[T]() Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromString[T](System.String) Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI: T FromZero[T]() Microsoft.FSharp.Core.NumericLiterals: Boolean Equals(System.Object) Microsoft.FSharp.Core.NumericLiterals: Int32 GetHashCode() Microsoft.FSharp.Core.NumericLiterals: Microsoft.FSharp.Core.NumericLiterals+NumericLiteralI Microsoft.FSharp.Core.NumericLiterals: System.String ToString() Microsoft.FSharp.Core.NumericLiterals: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Checked: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators+Checked: Char ToChar[T](T) Microsoft.FSharp.Core.Operators+Checked: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators+Checked: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators+Checked: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators+Checked: System.String ToString() Microsoft.FSharp.Core.Operators+Checked: System.Type GetType() Microsoft.FSharp.Core.Operators+Checked: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators+Checked: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators+Checked: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators+Checked: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators+Checked: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Byte PowByte(Byte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Double PowDouble(Double, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int16 PowInt16(Int16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 PowInt32(Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int32 SignDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Int64 PowInt64(Int64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: IntPtr PowIntPtr(IntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: SByte PowSByte(SByte, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Single PowSingle(Single, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Byte] RangeByte(Byte, Byte, Byte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Char] RangeChar(Char, Char) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Double] RangeDouble(Double, Double, Double) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int16] RangeInt16(Int16, Int16, Int16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int32] RangeInt32(Int32, Int32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Int64] RangeInt64(Int64, Int64, Int64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.IntPtr] RangeIntPtr(IntPtr, IntPtr, IntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.SByte] RangeSByte(SByte, SByte, SByte) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.Single] RangeSingle(Single, Single, Single) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt16] RangeUInt16(UInt16, UInt16, UInt16) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt32] RangeUInt32(UInt32, UInt32, UInt32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UInt64] RangeUInt64(UInt64, UInt64, UInt64) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[System.UIntPtr] RangeUIntPtr(UIntPtr, UIntPtr, UIntPtr) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Collections.Generic.IEnumerable`1[T] RangeStepGeneric[TStep,T](TStep, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TStep,T]], T, TStep, T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Decimal PowDecimal(System.Decimal, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String GetStringSlice(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.String ToString() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: System.Type GetType() Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AbsDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AcosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AsinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T AtanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CeilingDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CosDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T CoshDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T ExpDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T FloorDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T Log10Dynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T LogDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowDynamic[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T PowGeneric[T](T, Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[T,T]], T, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T RoundDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T SinhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TanhDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T TruncateDynamic[T](T) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 Atan2Dynamic[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T2 SqrtDynamic[T1,T2](T1) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,,] GetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,,] GetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[,] GetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: T[] GetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt16 PowUInt16(UInt16, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt32 PowUInt32(UInt32, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UInt64 PowUInt64(UInt64, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: UIntPtr PowUIntPtr(UIntPtr, Int32) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice2D[T](T[,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice3D[T](T[,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice4D[T](T[,,,], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[,,,]) Microsoft.FSharp.Core.Operators+OperatorIntrinsics: Void SetArraySlice[T](T[], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], Microsoft.FSharp.Core.FSharpOption`1[System.Int32], T[]) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators+Unchecked: Boolean Equals[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators+Unchecked: Int32 GetHashCode() Microsoft.FSharp.Core.Operators+Unchecked: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators+Unchecked: System.String ToString() Microsoft.FSharp.Core.Operators+Unchecked: System.Type GetType() Microsoft.FSharp.Core.Operators+Unchecked: T DefaultOf[T]() Microsoft.FSharp.Core.Operators+Unchecked: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: Boolean Equals(System.Object) Microsoft.FSharp.Core.Operators: Boolean Not(Boolean) Microsoft.FSharp.Core.Operators: Boolean op_Equality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_GreaterThan[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_Inequality[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThanOrEqual[T](T, T) Microsoft.FSharp.Core.Operators: Boolean op_LessThan[T](T, T) Microsoft.FSharp.Core.Operators: Byte ToByte[T](T) Microsoft.FSharp.Core.Operators: Char ToChar[T](T) Microsoft.FSharp.Core.Operators: Double Infinity Microsoft.FSharp.Core.Operators: Double NaN Microsoft.FSharp.Core.Operators: Double ToDouble[T](T) Microsoft.FSharp.Core.Operators: Double get_Infinity() Microsoft.FSharp.Core.Operators: Double get_NaN() Microsoft.FSharp.Core.Operators: Int16 ToInt16[T](T) Microsoft.FSharp.Core.Operators: Int32 Compare[T](T, T) Microsoft.FSharp.Core.Operators: Int32 GetHashCode() Microsoft.FSharp.Core.Operators: Int32 Hash[T](T) Microsoft.FSharp.Core.Operators: Int32 Sign[T](T) Microsoft.FSharp.Core.Operators: Int32 SizeOf[T]() Microsoft.FSharp.Core.Operators: Int32 ToInt32[T](T) Microsoft.FSharp.Core.Operators: Int32 ToInt[T](T) Microsoft.FSharp.Core.Operators: Int32 limitedHash[T](Int32, T) Microsoft.FSharp.Core.Operators: Int64 ToInt64[T](T) Microsoft.FSharp.Core.Operators: IntPtr ToIntPtr[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Collections.FSharpList`1[T] op_Append[T](Microsoft.FSharp.Collections.FSharpList`1[T], Microsoft.FSharp.Collections.FSharpList`1[T]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeLeft[T2,T3,T1](Microsoft.FSharp.Core.FSharpFunc`2[T2,T3], Microsoft.FSharp.Core.FSharpFunc`2[T1,T2]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpFunc`2[T1,T3] op_ComposeRight[T1,T2,T3](Microsoft.FSharp.Core.FSharpFunc`2[T1,T2], Microsoft.FSharp.Core.FSharpFunc`2[T2,T3]) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpOption`1[System.String] FailurePattern(System.Exception) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.FSharpRef`1[T] Ref[T](T) Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Checked Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+OperatorIntrinsics Microsoft.FSharp.Core.Operators: Microsoft.FSharp.Core.Operators+Unchecked Microsoft.FSharp.Core.Operators: SByte ToSByte[T](T) Microsoft.FSharp.Core.Operators: Single InfinitySingle Microsoft.FSharp.Core.Operators: Single NaNSingle Microsoft.FSharp.Core.Operators: Single ToSingle[T](T) Microsoft.FSharp.Core.Operators: Single get_InfinitySingle() Microsoft.FSharp.Core.Operators: Single get_NaNSingle() Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] CreateSequence[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_RangeStep[T,TStep](T, TStep, T) Microsoft.FSharp.Core.Operators: System.Collections.Generic.IEnumerable`1[T] op_Range[T](T, T) Microsoft.FSharp.Core.Operators: System.Decimal ToDecimal[T](T) Microsoft.FSharp.Core.Operators: System.Exception Failure(System.String) Microsoft.FSharp.Core.Operators: System.Object Box[T](T)" + #if DEBUG @" Microsoft.FSharp.Core.Operators: System.RuntimeMethodHandle MethodHandleOf[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult])" + #endif @" Microsoft.FSharp.Core.Operators: System.String ToString() Microsoft.FSharp.Core.Operators: System.String ToString[T](T) Microsoft.FSharp.Core.Operators: System.String op_Concatenate(System.String, System.String) Microsoft.FSharp.Core.Operators: System.Tuple`2[TKey,TValue] KeyValuePattern[TKey,TValue](System.Collections.Generic.KeyValuePair`2[TKey,TValue]) Microsoft.FSharp.Core.Operators: System.Type GetType() Microsoft.FSharp.Core.Operators: System.Type TypeDefOf[T]() Microsoft.FSharp.Core.Operators: System.Type TypeOf[T]() Microsoft.FSharp.Core.Operators: T Abs[T](T) Microsoft.FSharp.Core.Operators: T Acos[T](T) Microsoft.FSharp.Core.Operators: T Asin[T](T) Microsoft.FSharp.Core.Operators: T Atan[T](T) Microsoft.FSharp.Core.Operators: T Ceiling[T](T) Microsoft.FSharp.Core.Operators: T Cos[T](T) Microsoft.FSharp.Core.Operators: T Cosh[T](T) Microsoft.FSharp.Core.Operators: T DefaultArg[T](Microsoft.FSharp.Core.FSharpOption`1[T], T) Microsoft.FSharp.Core.Operators: T Exp[T](T) Microsoft.FSharp.Core.Operators: T FailWith[T](System.String) Microsoft.FSharp.Core.Operators: T Floor[T](T) Microsoft.FSharp.Core.Operators: T Identity[T](T) Microsoft.FSharp.Core.Operators: T InvalidArg[T](System.String, System.String) Microsoft.FSharp.Core.Operators: T InvalidOp[T](System.String) Microsoft.FSharp.Core.Operators: T Lock[TLock,T](TLock, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,T]) Microsoft.FSharp.Core.Operators: T Log10[T](T) Microsoft.FSharp.Core.Operators: T Log[T](T) Microsoft.FSharp.Core.Operators: T Max[T](T, T) Microsoft.FSharp.Core.Operators: T Min[T](T, T) Microsoft.FSharp.Core.Operators: T NullArg[T](System.String) Microsoft.FSharp.Core.Operators: T PowInteger[T](T, Int32) Microsoft.FSharp.Core.Operators: T Raise[T](System.Exception) Microsoft.FSharp.Core.Operators: T Reraise[T]() Microsoft.FSharp.Core.Operators: T Rethrow[T]() Microsoft.FSharp.Core.Operators: T Round[T](T) Microsoft.FSharp.Core.Operators: T Sin[T](T) Microsoft.FSharp.Core.Operators: T Sinh[T](T) Microsoft.FSharp.Core.Operators: T Tan[T](T) Microsoft.FSharp.Core.Operators: T Tanh[T](T) Microsoft.FSharp.Core.Operators: T Unbox[T](System.Object) Microsoft.FSharp.Core.Operators: T op_BitwiseAnd[T](T, T) Microsoft.FSharp.Core.Operators: T op_BitwiseOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Dereference[T](Microsoft.FSharp.Core.FSharpRef`1[T]) Microsoft.FSharp.Core.Operators: T op_ExclusiveOr[T](T, T) Microsoft.FSharp.Core.Operators: T op_Exponentiation[T,TResult](T, TResult) Microsoft.FSharp.Core.Operators: T op_LeftShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_LogicalNot[T](T) Microsoft.FSharp.Core.Operators: T op_RightShift[T](T, Int32) Microsoft.FSharp.Core.Operators: T op_UnaryNegation[T](T) Microsoft.FSharp.Core.Operators: T op_UnaryPlus[T](T) Microsoft.FSharp.Core.Operators: T1 Fst[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T2 Atan2[T1,T2](T1, T1) Microsoft.FSharp.Core.Operators: T2 Snd[T1,T2](System.Tuple`2[T1,T2]) Microsoft.FSharp.Core.Operators: T3 op_Addition[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Division[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Modulus[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Multiply[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: T3 op_Subtraction[T1,T2,T3](T1, T2) Microsoft.FSharp.Core.Operators: TResult Sqrt[T,TResult](T) Microsoft.FSharp.Core.Operators: TResult ToEnum[TResult](Int32) Microsoft.FSharp.Core.Operators: TResult Using[T,TResult](T, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft2[T1,T2,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]], T1, T2) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft3[T1,T2,T3,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]], T1, T2, T3) Microsoft.FSharp.Core.Operators: TResult op_PipeLeft[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], T) Microsoft.FSharp.Core.Operators: TResult op_PipeRight2[T1,T2,TResult](T1, T2, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight3[T1,T2,T3,TResult](T1, T2, T3, Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.Operators: TResult op_PipeRight[T1,TResult](T1, Microsoft.FSharp.Core.FSharpFunc`2[T1,TResult]) Microsoft.FSharp.Core.Operators: UInt16 ToUInt16[T](T) Microsoft.FSharp.Core.Operators: UInt32 ToUInt32[T](T) Microsoft.FSharp.Core.Operators: UInt64 ToUInt64[T](T) Microsoft.FSharp.Core.Operators: UIntPtr ToUIntPtr[T](T) Microsoft.FSharp.Core.Operators: Void Decrement(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void Ignore[T](T) Microsoft.FSharp.Core.Operators: Void Increment(Microsoft.FSharp.Core.FSharpRef`1[System.Int32]) Microsoft.FSharp.Core.Operators: Void op_ColonEquals[T](Microsoft.FSharp.Core.FSharpRef`1[T], T) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: FSharpFunc`3 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,TResult] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult]: TResult Invoke(T1, T2) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: FSharpFunc`4 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,TResult]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult]: TResult Invoke(T1, T2, T3) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: FSharpFunc`5 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,TResult]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult]: TResult Invoke(T1, T2, T3, T4) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: FSharpFunc`6 Adapt(Microsoft.FSharp.Core.FSharpFunc`2[T1,Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]]]) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: Microsoft.FSharp.Core.FSharpFunc`2[T2,Microsoft.FSharp.Core.FSharpFunc`2[T3,Microsoft.FSharp.Core.FSharpFunc`2[T4,Microsoft.FSharp.Core.FSharpFunc`2[T5,TResult]]]] Invoke(T1) Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: System.Type GetType() Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult]: TResult Invoke(T1, T2, T3, T4, T5) Microsoft.FSharp.Core.OptimizedClosures: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptimizedClosures: Int32 GetHashCode() Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[T1,T2,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`4[T1,T2,T3,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`5[T1,T2,T3,T4,TResult] Microsoft.FSharp.Core.OptimizedClosures: Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`6[T1,T2,T3,T4,T5,TResult] Microsoft.FSharp.Core.OptimizedClosures: System.String ToString() Microsoft.FSharp.Core.OptimizedClosures: System.Type GetType() Microsoft.FSharp.Core.OptionModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionModule: Boolean Exists[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean ForAll[T](Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsNone[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Boolean IsSome[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 Count[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Int32 GetHashCode() Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Collections.FSharpList`1[T] ToList[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Bind[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpOption`1[TResult]], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Microsoft.FSharp.Core.FSharpOption`1[TResult] Map[T,TResult](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: System.String ToString() Microsoft.FSharp.Core.OptionModule: System.Type GetType() Microsoft.FSharp.Core.OptionModule: T GetValue[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: TState FoldBack[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpFunc`2[TState,TState]], Microsoft.FSharp.Core.FSharpOption`1[T], TState) Microsoft.FSharp.Core.OptionModule: TState Fold[T,TState](Microsoft.FSharp.Core.FSharpFunc`2[TState,Microsoft.FSharp.Core.FSharpFunc`2[T,TState]], TState, Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: T[] ToArray[T](Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionModule: Void Iterate[T](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[T]) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.OptionalArgumentAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.OptionalArgumentAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object TypeId Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.String ToString() Microsoft.FSharp.Core.OptionalArgumentAttribute: System.Type GetType() Microsoft.FSharp.Core.OptionalArgumentAttribute: Void .ctor() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String Value Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`4[TPrinter,TState,TResidue,TResult]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String ToString() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String Value Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.String get_Value() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: System.Type GetType() Microsoft.FSharp.Core.PrintfFormat`5[TPrinter,TState,TResidue,TResult,TTuple]: Void .ctor(System.String) Microsoft.FSharp.Core.PrintfModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.PrintfModule: Int32 GetHashCode() Microsoft.FSharp.Core.PrintfModule: System.String ToString() Microsoft.FSharp.Core.PrintfModule: System.Type GetType() Microsoft.FSharp.Core.PrintfModule: T PrintFormatLineToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilderThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringBuilder[T](System.Text.StringBuilder, Microsoft.FSharp.Core.PrintfFormat`4[T,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThenFail[T,TResult](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[System.String,TResult], Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToStringThen[T](Microsoft.FSharp.Core.PrintfFormat`4[T,Microsoft.FSharp.Core.Unit,System.String,System.String]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriterThen[TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,TResult], System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,TResult]) Microsoft.FSharp.Core.PrintfModule: T PrintFormatToTextWriter[T](System.IO.TextWriter, Microsoft.FSharp.Core.PrintfFormat`4[T,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ProjectionParameterAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ProjectionParameterAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object TypeId Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.String ToString() Microsoft.FSharp.Core.ProjectionParameterAttribute: System.Type GetType() Microsoft.FSharp.Core.ProjectionParameterAttribute: Void .ctor() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReferenceEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.ReferenceEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.ReferenceEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object TypeId Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.String ToString() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: System.Type GetType() Microsoft.FSharp.Core.ReflectedDefinitionAttribute: Void .ctor() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object TypeId Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.String ToString() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: System.Type GetType() Microsoft.FSharp.Core.RequireQualifiedAccessAttribute: Void .ctor() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object TypeId Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType() Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.SealedAttribute: Boolean Value Microsoft.FSharp.Core.SealedAttribute: Boolean get_Value() Microsoft.FSharp.Core.SealedAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.SealedAttribute: System.Object TypeId Microsoft.FSharp.Core.SealedAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.SealedAttribute: System.String ToString() Microsoft.FSharp.Core.SealedAttribute: System.Type GetType() Microsoft.FSharp.Core.SealedAttribute: Void .ctor() Microsoft.FSharp.Core.SealedAttribute: Void .ctor(Boolean) Microsoft.FSharp.Core.SourceConstructFlags: Boolean Equals(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Boolean HasFlag(System.Enum) Microsoft.FSharp.Core.SourceConstructFlags: Int32 CompareTo(System.Object) Microsoft.FSharp.Core.SourceConstructFlags: Int32 GetHashCode() Microsoft.FSharp.Core.SourceConstructFlags: Int32 value__ Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Closure Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Exception Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Field Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags KindMask Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Module Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags NonPublicRepresentation Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags None Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags ObjectType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags RecordType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags SumType Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags UnionCase Microsoft.FSharp.Core.SourceConstructFlags: Microsoft.FSharp.Core.SourceConstructFlags Value Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString() Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String) Microsoft.FSharp.Core.SourceConstructFlags: System.String ToString(System.String, System.IFormatProvider) Microsoft.FSharp.Core.SourceConstructFlags: System.Type GetType() Microsoft.FSharp.Core.SourceConstructFlags: System.TypeCode GetTypeCode() Microsoft.FSharp.Core.StringModule: Boolean Equals(System.Object) Microsoft.FSharp.Core.StringModule: Boolean Exists(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Boolean ForAll(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Boolean], System.String) Microsoft.FSharp.Core.StringModule: Int32 GetHashCode() Microsoft.FSharp.Core.StringModule: Int32 Length(System.String) Microsoft.FSharp.Core.StringModule: System.String Collect(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.String], System.String) Microsoft.FSharp.Core.StringModule: System.String Concat(System.String, System.Collections.Generic.IEnumerable`1[System.String]) Microsoft.FSharp.Core.StringModule: System.String Initialize(Int32, Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,System.String]) Microsoft.FSharp.Core.StringModule: System.String Map(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char], System.String) Microsoft.FSharp.Core.StringModule: System.String MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,System.Char]], System.String) Microsoft.FSharp.Core.StringModule: System.String Replicate(Int32, System.String) Microsoft.FSharp.Core.StringModule: System.String ToString() Microsoft.FSharp.Core.StringModule: System.Type GetType() Microsoft.FSharp.Core.StringModule: Void Iterate(Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit], System.String) Microsoft.FSharp.Core.StringModule: Void IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2[System.Int32,Microsoft.FSharp.Core.FSharpFunc`2[System.Char,Microsoft.FSharp.Core.Unit]], System.String) Microsoft.FSharp.Core.StructAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructAttribute: System.Object TypeId Microsoft.FSharp.Core.StructAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructAttribute: System.String ToString() Microsoft.FSharp.Core.StructAttribute: System.Type GetType() Microsoft.FSharp.Core.StructAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralComparisonAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralComparisonAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralComparisonAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralComparisonAttribute: Void .ctor() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuralEqualityAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuralEqualityAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.String ToString() Microsoft.FSharp.Core.StructuralEqualityAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuralEqualityAttribute: Void .ctor() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object TypeId Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String ToString() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String Value Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.String get_Value() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: System.Type GetType() Microsoft.FSharp.Core.StructuredFormatDisplayAttribute: Void .ctor(System.String) Microsoft.FSharp.Core.Unit: Boolean Equals(System.Object) Microsoft.FSharp.Core.Unit: Int32 GetHashCode() Microsoft.FSharp.Core.Unit: System.String ToString() Microsoft.FSharp.Core.Unit: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.UnverifiableAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.UnverifiableAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.UnverifiableAttribute: System.Object TypeId Microsoft.FSharp.Core.UnverifiableAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.UnverifiableAttribute: System.String ToString() Microsoft.FSharp.Core.UnverifiableAttribute: System.Type GetType() Microsoft.FSharp.Core.UnverifiableAttribute: Void .ctor() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Equals(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean IsDefaultAttribute() Microsoft.FSharp.Core.VolatileFieldAttribute: Boolean Match(System.Object) Microsoft.FSharp.Core.VolatileFieldAttribute: Int32 GetHashCode() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object TypeId Microsoft.FSharp.Core.VolatileFieldAttribute: System.Object get_TypeId() Microsoft.FSharp.Core.VolatileFieldAttribute: System.String ToString() Microsoft.FSharp.Core.VolatileFieldAttribute: System.Type GetType() Microsoft.FSharp.Core.VolatileFieldAttribute: Void .ctor() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metre: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole: System.Type GetType() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Boolean Equals(System.Object) Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: Int32 GetHashCode() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.String ToString() Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second: System.Type GetType() Microsoft.FSharp.Linq.NullableModule: Boolean Equals(System.Object) Microsoft.FSharp.Linq.NullableModule: Int32 GetHashCode() Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Byte] ToByte[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Char] ToChar[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Decimal] ToDecimal[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Double] ToDouble[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int16] ToInt16[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int32] ToInt32[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int32] ToInt[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Int64] ToInt64[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.IntPtr] ToIntPtr[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.SByte] ToSByte[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.Single] ToSingle[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt16] ToUInt16[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt32] ToUInt32[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UInt64] ToUInt64[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[System.UIntPtr] ToUIntPtr[T](System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableModule: System.Nullable`1[TResult] ToEnum[TResult](System.Nullable`1[System.Int32]) Microsoft.FSharp.Linq.NullableModule: System.String ToString() Microsoft.FSharp.Linq.NullableModule: System.Type GetType() Microsoft.FSharp.Linq.NullableOperators: Boolean Equals(System.Object) Microsoft.FSharp.Linq.NullableOperators: Boolean op_EqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_GreaterEqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_GreaterQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessEqualsQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessGreaterQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_LessQmark[T](T, System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreaterQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkGreater[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessEqualsQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessEquals[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessGreaterQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessGreater[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLessQmark[T](System.Nullable`1[T], System.Nullable`1[T]) Microsoft.FSharp.Linq.NullableOperators: Boolean op_QmarkLess[T](System.Nullable`1[T], T) Microsoft.FSharp.Linq.NullableOperators: Int32 GetHashCode() Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_DivideQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_MinusQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_MultiplyQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_PercentQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_PlusQmark[T1,T2,T3](T1, System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkDivideQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkDivide[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMinusQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMinus[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMultiplyQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkMultiply[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPercentQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPercent[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPlusQmark[T1,T2,T3](System.Nullable`1[T1], System.Nullable`1[T2]) Microsoft.FSharp.Linq.NullableOperators: System.Nullable`1[T3] op_QmarkPlus[T1,T2,T3](System.Nullable`1[T1], T2) Microsoft.FSharp.Linq.NullableOperators: System.String ToString() Microsoft.FSharp.Linq.NullableOperators: System.Type GetType() Microsoft.FSharp.Linq.QueryBuilder: Boolean All[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Boolean Contains[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], T) Microsoft.FSharp.Linq.QueryBuilder: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryBuilder: Boolean Exists[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Int32 Count[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[System.Linq.IGrouping`2[TKey,TValue],Q] GroupValBy[T,TKey,TValue,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[System.Linq.IGrouping`2[TKey,T],Q] GroupBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Distinct[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SkipWhile[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Skip[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByNullableDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortByNullable[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] SortBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Source[T,Q](System.Linq.IQueryable`1[T]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] TakeWhile[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Take[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByNullableDescending[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenByNullable[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TKey]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] ThenBy[T,Q,TKey](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TKey]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Where[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] YieldFrom[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Yield[T,Q](T) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,Q] Zero[T,Q]() Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[T,System.Collections.IEnumerable] Source[T](System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] For[T,Q,TResult,Q2](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Linq.QuerySource`2[TResult,Q2]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] GroupJoin[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[System.Collections.Generic.IEnumerable`1[TInner],TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] Join[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[TInner,TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] LeftOuterJoin[TOuter,Q,TInner,TKey,TResult](Microsoft.FSharp.Linq.QuerySource`2[TOuter,Q], Microsoft.FSharp.Linq.QuerySource`2[TInner,Q], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TInner,TKey], Microsoft.FSharp.Core.FSharpFunc`2[TOuter,Microsoft.FSharp.Core.FSharpFunc`2[System.Collections.Generic.IEnumerable`1[TInner],TResult]]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Linq.QuerySource`2[TResult,Q] Select[T,Q,TResult](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TResult]) Microsoft.FSharp.Linq.QueryBuilder: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Quote[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.QueryBuilder: System.Linq.IQueryable`1[T] Run[T](Microsoft.FSharp.Quotations.FSharpExpr`1[Microsoft.FSharp.Linq.QuerySource`2[T,System.Linq.IQueryable]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] AverageByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] MaxByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] MinByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.Nullable`1[TValue] SumByNullable[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Nullable`1[TValue]]) Microsoft.FSharp.Linq.QueryBuilder: System.String ToString() Microsoft.FSharp.Linq.QueryBuilder: System.Type GetType() Microsoft.FSharp.Linq.QueryBuilder: T ExactlyOneOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T ExactlyOne[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Find[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,System.Boolean]) Microsoft.FSharp.Linq.QueryBuilder: T HeadOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Head[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T LastOrDefault[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Last[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q]) Microsoft.FSharp.Linq.QueryBuilder: T Nth[T,Q](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Int32) Microsoft.FSharp.Linq.QueryBuilder: TValue AverageBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue MaxBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue MinBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: TValue SumBy[T,Q,TValue](Microsoft.FSharp.Linq.QuerySource`2[T,Q], Microsoft.FSharp.Core.FSharpFunc`2[T,TValue]) Microsoft.FSharp.Linq.QueryBuilder: Void .ctor() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.Collections.Generic.IEnumerable`1[T] RunQueryAsEnumerable[T](Microsoft.FSharp.Linq.QueryBuilder, Microsoft.FSharp.Quotations.FSharpExpr`1[Microsoft.FSharp.Linq.QuerySource`2[T,System.Collections.IEnumerable]]) Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.String ToString() Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority: System.Type GetType() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: Int32 GetHashCode() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: System.String ToString() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: System.Type GetType() Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority: T RunQueryAsValue[T](Microsoft.FSharp.Linq.QueryBuilder, Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Int32 GetHashCode() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Collections.Generic.IEnumerable`1[T] Source Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Collections.Generic.IEnumerable`1[T] get_Source() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.String ToString() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: System.Type GetType() Microsoft.FSharp.Linq.QuerySource`2[T,Q]: Void .ctor(System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1[T1]: Void .ctor(T1) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`2[T1,T2]: Void .ctor(T1, T2) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`3[T1,T2,T3]: Void .ctor(T1, T2, T3) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`4[T1,T2,T3,T4]: Void .ctor(T1, T2, T3, T4) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`5[T1,T2,T3,T4,T5]: Void .ctor(T1, T2, T3, T4, T5) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`6[T1,T2,T3,T4,T5,T6]: Void .ctor(T1, T2, T3, T4, T5, T6) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T7 Item7 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: T7 get_Item7() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`7[T1,T2,T3,T4,T5,T6,T7]: Void .ctor(T1, T2, T3, T4, T5, T6, T7) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T1 Item1 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T1 get_Item1() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T2 Item2 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T2 get_Item2() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T3 Item3 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T3 get_Item3() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T4 Item4 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T4 get_Item4() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T5 Item5 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T5 get_Item5() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T6 Item6 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T6 get_Item6() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T7 Item7 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T7 get_Item7() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T8 Item8 Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: T8 get_Item8() Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`8[T1,T2,T3,T4,T5,T6,T7,T8]: Void .ctor(T1, T2, T3, T4, T5, T6, T7, T8) Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2[K,T]: Void .ctor(K, System.Collections.Generic.IEnumerable`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Boolean Equals(System.Object) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Int32 GetHashCode() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: Microsoft.FSharp.Quotations.FSharpExpr`1[T] SubstHelper[T](Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar[], System.Object[]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression QuotationToExpression(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression`1[T] ImplicitExpressionConversionHelper[T](T) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Linq.Expressions.Expression`1[T] QuotationToLambdaExpression[T](Microsoft.FSharp.Quotations.FSharpExpr`1[T]) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Object EvaluateQuotation(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.String ToString() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: System.Type GetType() Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: T MemberInitializationHelper[T](T) Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter: T NewAnonymousObjectHelper[T](T) Microsoft.FSharp.NativeInterop.NativePtrModule: Boolean Equals(System.Object) Microsoft.FSharp.NativeInterop.NativePtrModule: Int32 GetHashCode() Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr AddPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr OfNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr StackAllocate[T](Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: IntPtr ToNativeIntInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: System.String ToString() Microsoft.FSharp.NativeInterop.NativePtrModule: System.Type GetType() Microsoft.FSharp.NativeInterop.NativePtrModule: T GetPointerInlined[T](IntPtr, Int32) Microsoft.FSharp.NativeInterop.NativePtrModule: T ReadPointerInlined[T](IntPtr) Microsoft.FSharp.NativeInterop.NativePtrModule: Void SetPointerInlined[T](IntPtr, Int32, T) Microsoft.FSharp.NativeInterop.NativePtrModule: Void WritePointerInlined[T](IntPtr, T) Microsoft.FSharp.Quotations.DerivedPatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.DerivedPatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Collections.FSharpList`1[System.Type],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Core.Unit] UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Boolean] BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Byte] BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Char] CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Double] DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int16] Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Int64] Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.SByte] SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Single] SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.String] StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar]],Microsoft.FSharp.Quotations.FSharpExpr]] LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]]] ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt16] UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt32] UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.UInt64] UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.DerivedPatternsModule: System.String ToString() Microsoft.FSharp.Quotations.DerivedPatternsModule: System.Type GetType() Microsoft.FSharp.Quotations.ExprShapeModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.ExprShapeModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Core.FSharpChoice`3[Microsoft.FSharp.Quotations.FSharpVar,System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr],System.Tuple`2[System.Object,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.ExprShapeModule: Microsoft.FSharp.Quotations.FSharpExpr RebuildShapeCombination(System.Object, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.ExprShapeModule: System.String ToString() Microsoft.FSharp.Quotations.ExprShapeModule: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] TryGetReflectedDefinition(System.Reflection.MethodBase) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr AddressSet(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Application(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Applications(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Call(System.Reflection.MethodInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Coerce(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr DefaultValue(System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Deserialize(System.Type, Microsoft.FSharp.Collections.FSharpList`1[System.Type], Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr], Byte[]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldGet(System.Reflection.FieldInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr FieldSet(System.Reflection.FieldInfo, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Lambda(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Let(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr LetRecursive(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewArray(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewDelegate(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar], Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewObject(System.Reflection.ConstructorInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewRecord(System.Type, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewTuple(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertyGet(System.Reflection.PropertyInfo, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(Microsoft.FSharp.Quotations.FSharpExpr, System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr PropertySet(System.Reflection.PropertyInfo, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Quote(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Sequential(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryFinally(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TryWith(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TupleGet(Microsoft.FSharp.Quotations.FSharpExpr, Int32) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr TypeTest(Microsoft.FSharp.Quotations.FSharpExpr, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Reflection.UnionCaseInfo) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value(System.Object, System.Type) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Value[T](T) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr Var(Microsoft.FSharp.Quotations.FSharpVar) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr VarSet(Microsoft.FSharp.Quotations.FSharpVar, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr, Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] Cast[T](Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.FSharpExpr: Microsoft.FSharp.Quotations.FSharpExpr`1[T] GlobalVar[T](System.String) Microsoft.FSharp.Quotations.FSharpExpr: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpExpr: Void RegisterReflectedDefinitions(System.Reflection.Assembly, System.String, Byte[]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] CustomAttributes Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr] get_CustomAttributes() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Raw Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr Substitute(Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]]) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: Microsoft.FSharp.Quotations.FSharpExpr get_Raw() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Collections.Generic.IEnumerable`1[Microsoft.FSharp.Quotations.FSharpVar] GetFreeVars() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.String ToString(Boolean) Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type GetType() Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type Type Microsoft.FSharp.Quotations.FSharpExpr`1[T]: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.FSharpVar: Boolean IsMutable Microsoft.FSharp.Quotations.FSharpVar: Boolean get_IsMutable() Microsoft.FSharp.Quotations.FSharpVar: Int32 GetHashCode() Microsoft.FSharp.Quotations.FSharpVar: Microsoft.FSharp.Quotations.FSharpVar Global(System.String, System.Type) Microsoft.FSharp.Quotations.FSharpVar: System.String Name Microsoft.FSharp.Quotations.FSharpVar: System.String ToString() Microsoft.FSharp.Quotations.FSharpVar: System.String get_Name() Microsoft.FSharp.Quotations.FSharpVar: System.Type GetType() Microsoft.FSharp.Quotations.FSharpVar: System.Type Type Microsoft.FSharp.Quotations.FSharpVar: System.Type get_Type() Microsoft.FSharp.Quotations.FSharpVar: Void .ctor(System.String, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Boolean]) Microsoft.FSharp.Quotations.PatternsModule: Boolean Equals(System.Object) Microsoft.FSharp.Quotations.PatternsModule: Int32 GetHashCode() Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]] NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpVar] VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]],Microsoft.FSharp.Quotations.FSharpExpr]] LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo]] FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo]] UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Int32]] TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpExpr,System.Type]] TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Object,System.Type]] ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr]] FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr]]] PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] LetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`3[System.Type,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpVar],Microsoft.FSharp.Quotations.FSharpExpr]] NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr],System.Reflection.PropertyInfo,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Quotations.FSharpExpr],Microsoft.FSharp.Quotations.FSharpExpr]] PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`4[Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr]] ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr]] TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: Microsoft.FSharp.Core.FSharpOption`1[System.Type] DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr) Microsoft.FSharp.Quotations.PatternsModule: System.String ToString() Microsoft.FSharp.Quotations.PatternsModule: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpType: Boolean IsExceptionRepresentation(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsFunction(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsModule(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsRecord(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Boolean IsTuple(System.Type) Microsoft.FSharp.Reflection.FSharpType: Boolean IsUnion(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpType: Microsoft.FSharp.Reflection.UnionCaseInfo[] GetUnionCases(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetExceptionFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.Reflection.PropertyInfo[] GetRecordFields(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpType: System.String ToString() Microsoft.FSharp.Reflection.FSharpType: System.Tuple`2[System.Type,System.Type] GetFunctionElements(System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type GetType() Microsoft.FSharp.Reflection.FSharpType: System.Type MakeFunctionType(System.Type, System.Type) Microsoft.FSharp.Reflection.FSharpType: System.Type MakeTupleType(System.Type[]) Microsoft.FSharp.Reflection.FSharpType: System.Type[] GetTupleElements(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.FSharpValue: Int32 GetHashCode() Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Int32] PreComputeUnionTagReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeRecordReader(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeTupleReader(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object[]] PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object] PreComputeRecordFieldReader(System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeRecordConstructor(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeTupleConstructor(System.Type) Microsoft.FSharp.Reflection.FSharpValue: Microsoft.FSharp.Core.FSharpFunc`2[System.Object[],System.Object] PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetRecordField(System.Object, System.Reflection.PropertyInfo) Microsoft.FSharp.Reflection.FSharpValue: System.Object GetTupleField(System.Object, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeFunction(System.Type, Microsoft.FSharp.Core.FSharpFunc`2[System.Object,System.Object]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeRecord(System.Type, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeTuple(System.Object[], System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Object MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo, System.Object[], Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetExceptionFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetRecordFields(System.Object, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Object[] GetTupleFields(System.Object) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.ConstructorInfo PreComputeRecordConstructorInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MemberInfo PreComputeUnionTagMemberInfo(System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Reflection.MethodInfo PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.String ToString() Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[]] GetUnionFields(System.Object, System.Type, Microsoft.FSharp.Core.FSharpOption`1[System.Reflection.BindingFlags]) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.ConstructorInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Type]] PreComputeTupleConstructorInfo(System.Type) Microsoft.FSharp.Reflection.FSharpValue: System.Tuple`2[System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[System.Type,System.Int32]]] PreComputeTuplePropertyInfo(System.Type, Int32) Microsoft.FSharp.Reflection.FSharpValue: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: Boolean Equals(System.Object) Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 GetHashCode() Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 Tag Microsoft.FSharp.Reflection.UnionCaseInfo: Int32 get_Tag() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Object[] GetCustomAttributes(System.Type) Microsoft.FSharp.Reflection.UnionCaseInfo: System.Reflection.PropertyInfo[] GetFields() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type GetType() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() System.IObservable`1[T]: System.IDisposable Subscribe(System.IObserver`1[T]) System.IObserver`1[T]: Void OnCompleted() System.IObserver`1[T]: Void OnError(System.Exception) System.IObserver`1[T]: Void OnNext(T)" let normalize (s:string) = s.Replace("\r\n\r\n", "\r\n").Trim([|'\r';'\n'|]) let expected = postdev10 |> normalize let act = actual.ToString() |> normalize // add padding to ensure diagnostics below don't get IndexOutOfRange let expected = expected + String.replicate 400 " " let act = act + String.replicate 400 " " if expected <> act then let mutable indexFirstDiff = 0 while indexFirstDiff < expected.Length && expected.[indexFirstDiff] = act.[indexFirstDiff] do indexFirstDiff <- indexFirstDiff + 1 printfn "First diff at char %d" indexFirstDiff printfn "Next bit is" printfn "Exp: %s" (expected.Substring(indexFirstDiff, 400).Replace("\n"," ")) printfn "Act: %s" (act.Substring(indexFirstDiff, 400).Replace("\n"," ")) printfn "Full actual below" printfn "" printf "%s" act Assert.AreEqual(expected, act) fsharp-3.0.34/src/fsharp/FSharp.Core.Unittests/FSharp.Core.UnitTests.TestApp.csproj0000775000175000017500000001272112260314606027037 0ustar chrischris ..\.. $(FSharpSourcesRoot)\..\tools\nUnit.Silverlight $(FSharpSourcesRoot)\..\tools\Silverlight 2.0.30523.8 2.0 Debug AnyCPU 9.0.30729 2.0 {6E8DFF3E-E450-41BF-9E6D-7B3CA2758779} {A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} Library Properties FSharp.Core.UnitTests.TestApp FSharp.Core.UnitTests.TestApp v3.5 true true true FSharp.Core.UnitTests.TestApp.xap Properties\AppManifest.xml FSharp.Core.UnitTests.TestApp.App TestPage.html true true false true full false $(FSharpSourcesRoot)\..\Silverlight\built\$(AssemblyName)\ DEBUG;TRACE;SILVERLIGHT true true prompt 4 pdbonly true Bin\Release TRACE;SILVERLIGHT true true prompt 4 False $(OutputPath)\..\bin\FSharp.Core.dll False $(OutputPath)\..\bin\FSharp.Core.Unittests.dll False $(NUnit)\Microsoft.Silverlight.Testing.dll False $(NUnit)\NUnitFramework.dll False $(NUnit)\NUnitSilverlight.dll true App.xaml MSBuild:MarkupCompilePass1 Designer fsharp-3.0.34/src/fsharp/check.fs0000775000175000017500000022217212260314606015562 0ustar chrischrismodule internal Microsoft.FSharp.Compiler.PostTypecheckSemanticChecks open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.PrettyNaming //-------------------------------------------------------------------------- // TestHooks - for dumping range to support source transforms //-------------------------------------------------------------------------- let testFlagMemberBody = ref false let testHookMemberBody membInfo (expr:Expr) = if !testFlagMemberBody then let m = expr.Range printf "TestMemberBody,%A,%s,%d,%d,%d,%d\n" (membInfo.MemberFlags.MemberKind) m.FileName m.StartLine m.StartColumn m.EndLine m.EndColumn //-------------------------------------------------------------------------- // NOTES: byref safety checks // // The .NET runtime has safety requirements on the use of byrefs. // These include: // A1: No generic type/method can be instantiated with byref types (meaning contains byref type). // A2: No object field may be byref typed. // // In F# TAST level, byref types can be introduced/consumed at: // B1: lambda ... (v:byref) ... -- binding sites for values. // B2: &m -- address of operator, where m is local mutable or reference cell. // B3: ms.M() -- method calls on mutable structs. // B4: *br -- dereference byref // B5: br <- x -- assign byref // B6: expr@[byrefType] -- any type instantiation could introduce byref types. // B7: asm -- TExpr_asm forms that create/consume byrefs. // a) I_ldfld expr // b) I_stfld // // Closures imply objects. // Closures are either: // a) explicit lambda expressions. // b) functions partially applied below their known arity. // // Checks: // C1: check no instantiation can contain byref types. // C2: check type declarations to ensure no object field will have byref type. // C3: check no explicit lambda expressions capture any free byref typed expression. // C4: check byref type expr occur only as: // C4.a) arg to functions occuring within their known arity. // C4.b) arg to IL method calls, e.g. arising from calls to instance methods on mutable structs. // C4.c) arg to property getter on mutable struct (record field projection) // C4.d) rhs of byref typed binding (aliasing). // Note [1] aliasing should not effect safety. The restrictions on RHS byref will also apply to alias. // Note [2] aliasing happens in the generated hash/compare code. // C5: when is a byref-typed-binding acceptable? // a) if it will be a method local, ok. // b) if it will be a top-level value stored as a field, then no. [These should have arity info]. // // Check commentary: // The C4 checks ensure byref expressions are only passed directly as method arguments (or aliased). // The C3 check ensures byref expressions are never captured, e.g. passed as direct method arg under a capturing thunk. // The C2 checks no type can store byrefs (C4 ensures F# code would never actually store them). // The C1 checks no generic type could be instanced to store byrefs. //-------------------------------------------------------------------------- // NOTES: reraise safety checks //-------------------------------------------------------------------------- // "rethrow may only occur with-in the body of a catch handler". // -- Section 4.23. Part III. CLI Instruction Set. ECMA Draft 2002. // // 1. reraise() calls are converted to TOp.Reraise in the type checker. // 2. any remaining reraise val_refs will be first class uses. These are trapped. // 3. The freevars track free TOp.Reraise (they are bound (cleared) at try-catch handlers). // 4. An outermost expression is not contained in a try-catch handler. // These may not have unbound rethrows. // Outermost expressions occur at: // * module bindings. // * attribute arguments. // * Any more? What about fields of a static class? // 5. A lambda body (from lambda-expression or method binding) will not occur under a try-catch handler. // These may not have unbound rethrows. // 6. All other constructs are assumed to generate IL code sequences. // For correctness, this claim needs to be justified. // // Q: Do any post check rewrite passes factor expressions out to other functions? // A1. The optimiser may introduce auxillary functions, e.g. by splitting out match-branches. // This should not be done if the refactored body contains an unbound reraise. // A2. TLR? Are any expression factored out into functions? // // Informal justification: // If a reraise occurs, then it is minimally contained by either: // a) a try-catch - accepted. // b) a lambda expression - rejected. // c) none of the above - rejected as when checking outmost expressions. //-------------------------------------------------------------------------- // check environment //-------------------------------------------------------------------------- type env = { boundTypars: Typar list; /// "module remap info", i.e. hiding information down the signature chain, used to compute what's hidden by a signature sigToImplRemapInfo: (Remap * SignatureHidingInfo) list; /// Constructor limited - are we in the prelude of a constructor, prior to object initialization limited: bool; /// Are we in a quotation? quote : bool; /// Are we under []? reflect : bool } let BindTypar env tyv = { env with boundTypars= tyv::env.boundTypars } let BindTypars env (tps:Typar list) = if isNil tps then env else // Here we mutate to provide better names for generalized type parameters let nms = PrettyTypes.PrettyTyparNames (fun _ -> true) (env.boundTypars |> List.map (fun tp -> tp.Name) ) tps (tps,nms) ||> List.iter2 (fun tp nm -> if PrettyTypes.NeedsPrettyTyparName tp then tp.Data.typar_id <- ident (nm,tp.Range)); List.fold BindTypar env tps type cenv = { boundVals: Dictionary; // really a hash set mutable potentialUnboundUsesOfVals: StampMap; g: TcGlobals; amap: Import.ImportMap; /// For reading metadata infoReader: InfoReader; internalsVisibleToPaths : CompilationPath list; denv: DisplayEnv; viewCcu : CcuThunk; reportErrors: bool; isLastCompiland : bool; // outputs mutable usesQuotations : bool mutable entryPointGiven:bool } let BindVal cenv (v:Val) = //printfn "binding %s..." v.DisplayName cenv.boundVals.[v.Stamp] <- 1 if cenv.reportErrors && not v.HasBeenReferenced && not v.IsCompiledAsTopLevel && not (v.DisplayName.StartsWith("_", System.StringComparison.Ordinal)) && not v.IsCompilerGenerated then match v.BaseOrThisInfo with | ValBaseOrThisInfo.CtorThisVal -> warning (Error(FSComp.SR.chkUnusedThisVariable v.DisplayName, v.Range)) | _ -> warning (Error(FSComp.SR.chkUnusedValue v.DisplayName, v.Range)) let BindVals cenv vs = List.iter (BindVal cenv) vs //-------------------------------------------------------------------------- // approx walk of type //-------------------------------------------------------------------------- let rec CheckTypeDeep ((visitTyp,visitTyconRef,visitByrefsOfByrefs,visitTraitSolution) as f) typ = // We iterate the _solved_ constraints as well, to pick up any record of trait constraint solutions // This means we walk _all_ the constraints _everywhere_ in a type, including // those attached to _solved_ type variables. This is used by PostTypecheckSemanticChecks to detect uses of // values as solutions to trait constraints and determine if inference has caused the value to escape its scope. // The only record of these solutions is in the _solved_ constraints of types. // In an ideal world we would, instead, record the solutions to these constraints as "witness variables" in expressions, // rather than solely in types. match typ with | TType_var tp when tp.Solution.IsSome -> tp.Constraints |> List.iter (fun cx -> match cx with | TyparConstraint.MayResolveMember((TTrait(_,_,_,_,_,soln)),_) -> Option.iter visitTraitSolution !soln | _ -> ()) | _ -> () let typ = stripTyparEqns typ visitTyp typ match typ with | TType_forall (tps,body) -> CheckTypeDeep f body; tps |> List.iter (fun tp -> tp.Constraints |> List.iter (CheckTypeConstraintDeep f)) | TType_measure _ -> () | TType_app (tcref,tinst) -> visitTyconRef tcref CheckTypesDeep f tinst visitByrefsOfByrefs (tcref, tinst) | TType_ucase (_,tinst) -> CheckTypesDeep f tinst | TType_tuple typs -> CheckTypesDeep f typs | TType_fun (s,t) -> CheckTypeDeep f s; CheckTypeDeep f t | TType_var _tp -> () and CheckTypesDeep f tys = List.iter (CheckTypeDeep f) tys and CheckTypeConstraintDeep f x = match x with | TyparConstraint.CoercesTo(ty,_) -> CheckTypeDeep f ty | TyparConstraint.MayResolveMember(traitInfo,_) -> CheckTraitInfoDeep f traitInfo | TyparConstraint.DefaultsTo(_,ty,_) -> CheckTypeDeep f ty | TyparConstraint.SimpleChoice(tys,_) -> CheckTypesDeep f tys | TyparConstraint.IsEnum(uty,_) -> CheckTypeDeep f uty | TyparConstraint.IsDelegate(aty,bty,_) -> CheckTypeDeep f aty; CheckTypeDeep f bty | TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _ | TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _ -> () and CheckTraitInfoDeep ((_,_,_,visitTraitSolution) as f) (TTrait(typs,_,_,argtys,rty,soln)) = CheckTypesDeep f typs; CheckTypesDeep f argtys; Option.iter (CheckTypeDeep f) rty; Option.iter visitTraitSolution !soln //-------------------------------------------------------------------------- // check for byref types //-------------------------------------------------------------------------- let CheckForByrefLikeType cenv typ check = CheckTypeDeep (ignore, (fun tcref -> if isByrefLikeTyconRef cenv.g tcref then check()), ignore, ignore) typ //-------------------------------------------------------------------------- // check captures under lambdas //-------------------------------------------------------------------------- /// This is the definition of what can/can't be free in a lambda expression. This is checked at lambdas OR TBind(v,e) nodes OR TObjExprMethod nodes. /// For TBind(v,e) nodes we may know an 'arity' which gives as a larger set of legitimate syntactic arguments for a lambda. /// For TObjExprMethod(v,e) nodes we always know the legitimate syntactic arguments. let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suited to error reporting *) if cenv.reportErrors then let cantBeFree v = // First, if v is a syntactic argument, then it can be free since it was passed in. // The following can not be free: // a) "Local" mutables, being mutables such that: // i) the mutable has no arity (since arity implies top-level storage, top level mutables...) // Note: "this" arguments to instance members on mutable structs are mutable arguments. // b) BaseVal can never escape. // c) Byref typed values can never escape. // These checks must correspond to the tests governing the error messages below. let passedIn = ListSet.contains valEq v syntacticArgs if passedIn then false else (v.IsMutable && v.ValReprInfo.IsNone) || (v.BaseOrThisInfo = BaseVal && not passedIn) || (isByrefLikeTy cenv.g v.Type) let frees = freeInExpr CollectLocals body let fvs = frees.FreeLocals if not allowProtected && frees.UsesMethodLocalConstructs then errorR(Error(FSComp.SR.chkProtectedOrBaseCalled(), m)) elif Zset.exists cantBeFree fvs then let v = List.find cantBeFree (Zset.elements fvs) (* byref error before mutable error (byrefs are mutable...). *) if (isByrefLikeTy cenv.g v.Type) then // Inner functions are not guaranteed to compile to method with a predictable arity (number of arguments). // As such, partial applications involving byref arguments could lead to closures containing byrefs. // For safety, such functions are assumed to have no known arity, and so can not accept byrefs. errorR(Error(FSComp.SR.chkByrefUsedInInvalidWay(v.DisplayName), m)) elif v.IsMutable then errorR(Error(FSComp.SR.chkMutableUsedInInvalidWay(v.DisplayName), m)) elif v.BaseOrThisInfo = BaseVal then errorR(Error(FSComp.SR.chkBaseUsedInInvalidWay(), m)) else (* Should be dead code, unless governing tests change *) errorR(InternalError(FSComp.SR.chkVariableUsedInInvalidWay(v.DisplayName), m)) Some frees else None //-------------------------------------------------------------------------- // check type access //-------------------------------------------------------------------------- let AccessInternalsVisibleToAsInternal thisCompPath internalsVisibleToPaths access = // Each internalsVisibleToPath is a compPath for the internals of some assembly. // Replace those by the compPath for the internals of this assembly. // This makes those internals visible here, but still internal. Bug://3737 (access,internalsVisibleToPaths) ||> List.fold (fun access internalsVisibleToPath -> accessSubstPaths (thisCompPath,internalsVisibleToPath) access) let CheckTypeForAccess (cenv:cenv) objName valAcc m ty = if cenv.reportErrors then let visitType ty = // We deliberately only check the fully stripped type for accessibility, because references to private type abbreviations are // permitted match tryDestAppTy cenv.g ty with | None -> () | Some tcref -> let thisCompPath = compPathOfCcu cenv.viewCcu let tyconAcc = tcref.Accessibility |> AccessInternalsVisibleToAsInternal thisCompPath cenv.internalsVisibleToPaths if isLessAccessible tyconAcc valAcc then errorR(Error(FSComp.SR.chkTypeLessAccessibleThanType(tcref.DisplayName, (objName())), m)) CheckTypeDeep (visitType, ignore, ignore, ignore) ty //-------------------------------------------------------------------------- // check type instantiations //-------------------------------------------------------------------------- /// Check types occuring in the TAST. let CheckType permitByrefs (cenv:cenv) m ty = if cenv.reportErrors then let visitTyconRef tcref = if not permitByrefs && isByrefLikeTyconRef cenv.g tcref then errorR(Error(FSComp.SR.chkErrorUseOfByref(), m)) if tyconRefEq cenv.g cenv.g.system_Void_tcref tcref then errorR(Error(FSComp.SR.chkSystemVoidOnlyInTypeof(), m)) // check if T contains byref types in case of byref let visitByrefsOfByrefs (tcref,tinst) = if isByrefLikeTyconRef cenv.g tcref then let visitType ty0 = match tryDestAppTy cenv.g ty0 with | None -> () | Some tcref -> if isByrefLikeTyconRef cenv.g tcref then errorR(Error(FSComp.SR.chkNoByrefsOfByrefs(NicePrint.minimalStringOfType cenv.denv ty), m)) CheckTypesDeep (visitType, ignore, ignore, ignore) tinst let visitTraitSolution info = match info with | FSMethSln(_,vref,_) -> //printfn "considering %s..." vref.DisplayName if valRefInThisAssembly cenv.g.compilingFslib vref && not (cenv.boundVals.ContainsKey(vref.Stamp)) then //printfn "recording %s..." vref.DisplayName cenv.potentialUnboundUsesOfVals <- cenv.potentialUnboundUsesOfVals.Add(vref.Stamp,m) | _ -> () ty |> CheckTypeDeep (ignore, visitTyconRef, visitByrefsOfByrefs, visitTraitSolution); /// Check types occuring in TAST (like CheckType) and additionally reject any byrefs. /// The additional byref checks are to catch "byref instantiations" - one place were byref are not permitted. let CheckTypeNoByrefs (cenv:cenv) m ty = CheckType false cenv m ty let CheckTypePermitByrefs (cenv:cenv) m ty = CheckType true cenv m ty let CheckTypeInstNoByrefs (cenv:cenv) m tyargs = tyargs |> List.iter (CheckTypeNoByrefs cenv m) let CheckTypeInstPermitByrefs (cenv:cenv) m tyargs = tyargs |> List.iter (CheckType true cenv m) //-------------------------------------------------------------------------- // check exprs etc //-------------------------------------------------------------------------- type ByrefCallContext = /// Tuple of contexts allowing byref typed expr | KnownArityTuple of int /// Context allows for byref typed expr | DirectArg /// General (byref type expr not allowed) | GeneralContext let mkKnownArity n = if n=1 then DirectArg else KnownArityTuple n let argAritiesOfVal (vref:ValRef) = match vref.ValReprInfo with | Some topValInfo -> List.map mkKnownArity topValInfo.AritiesOfArgs | None -> [] let rec argAritiesOfFunExpr x = match x with | Expr.Val (vref,_,_) -> argAritiesOfVal vref (* recognise val *) | Expr.Link eref -> argAritiesOfFunExpr !eref (* step through reclink *) | Expr.App(f,_fty,_tyargs,[],_) -> argAritiesOfFunExpr f (* step through instantiations *) | Expr.Op(TOp.Coerce,_,[f],_) -> argAritiesOfFunExpr f (* step through subsumption coercions *) | _ -> [] let CheckNoReraise cenv freesOpt (body:Expr) = if cenv.reportErrors then // Avoid recomputing the free variables let fvs = match freesOpt with None -> freeInExpr CollectLocals body | Some fvs -> fvs if fvs.UsesUnboundRethrow then errorR(Error(FSComp.SR.chkErrorContainsCallToRethrow(), body.Range)) let is_splice g v = valRefEq g v g.splice_expr_vref || valRefEq g v g.splice_raw_expr_vref let CheckMultipleInterfaceInstantiations cenv interfaces m = let keyf ty = assert isAppTy cenv.g ty; (tcrefOfAppTy cenv.g ty).Stamp let table = interfaces |> MultiMap.initBy keyf let firstInterfaceWithMultipleGenericInstantiations = interfaces |> List.tryPick (fun typ1 -> table |> MultiMap.find (keyf typ1) |> List.tryPick (fun typ2 -> if // same nominal type tyconRefEq cenv.g (tcrefOfAppTy cenv.g typ1) (tcrefOfAppTy cenv.g typ2) && // different instantiations not (typeEquivAux EraseNone cenv.g typ1 typ2) then Some (typ1,typ2) else None)) match firstInterfaceWithMultipleGenericInstantiations with | None -> () | Some (typ1,typ2) -> errorR(Error(FSComp.SR.chkMultipleGenericInterfaceInstantiations((NicePrint.minimalStringOfType cenv.denv typ1), (NicePrint.minimalStringOfType cenv.denv typ2)),m)) let rec CheckExpr (cenv:cenv) (env:env) expr = CheckExprInContext cenv env expr GeneralContext and CheckVal (cenv:cenv) (env:env) v m context = if cenv.reportErrors then if is_splice cenv.g v && not env.quote then errorR(Error(FSComp.SR.chkSplicingOnlyInQuotations(), m)); if is_splice cenv.g v then errorR(Error(FSComp.SR.chkNoFirstClassSplicing(), m)); if valRefEq cenv.g v cenv.g.addrof_vref then errorR(Error(FSComp.SR.chkNoFirstClassAddressOf(), m)); if valRefEq cenv.g v cenv.g.reraise_vref then errorR(Error(FSComp.SR.chkNoFirstClassRethrow(), m)); if isByrefLikeTy cenv.g v.Type then // byref typed val can only occur in permitting contexts if context <> DirectArg then errorR(Error(FSComp.SR.chkNoByrefAtThisPoint(v.DisplayName), m)) CheckTypePermitByrefs cenv m v.Type and CheckExprInContext (cenv:cenv) (env:env) expr (context:ByrefCallContext) = // dprintf "CheckExpr: %s\n" (showL(exprL expr)); let expr = stripExpr expr match expr with | Expr.Sequential (e1,e2,dir,_,_) -> CheckExpr cenv env e1; match dir with | NormalSeq -> CheckExprInContext cenv env e2 context // carry context into _;RHS (normal sequencing only) | ThenDoSeq -> CheckExpr cenv {env with limited=false} e2 | Expr.Let (bind,body,_,_) -> CheckBinding cenv env false bind ; BindVal cenv bind.Var CheckExpr cenv env body | Expr.Const (_,m,ty) -> CheckTypePermitByrefs cenv m ty | Expr.Val (v,vFlags,m) -> if cenv.reportErrors then if v.BaseOrThisInfo = BaseVal then errorR(Error(FSComp.SR.chkLimitationsOfBaseKeyword(), m)) if (match vFlags with NormalValUse -> true | _ -> false) && v.IsConstructor && (match v.ActualParent with Parent tcref -> isAbstractTycon tcref.Deref | _ -> false) then errorR(Error(FSComp.SR.tcAbstractTypeCannotBeInstantiated(),m)); CheckVal cenv env v m context | Expr.Quote(ast,savedConv,_isFromQueryExpression,m,ty) -> CheckExpr cenv {env with quote=true} ast; if cenv.reportErrors then cenv.usesQuotations <- true try let conv = QuotationTranslator.ConvExprPublic (cenv.g, cenv.amap, cenv.viewCcu, QuotationTranslator.IsReflectedDefinition.No) QuotationTranslator.QuotationTranslationEnv.Empty ast match !savedConv with | None -> savedConv:= Some conv | Some _ -> () with QuotationTranslator.InvalidQuotedTerm e -> errorRecovery e m CheckTypeNoByrefs cenv m ty | Expr.Obj (_,typ,basev,superInitCall,overrides,iimpls,m) -> CheckExpr cenv env superInitCall; CheckMethods cenv env basev overrides ; CheckInterfaceImpls cenv env basev iimpls; CheckTypePermitByrefs cenv m typ let interfaces = [ yield! AllSuperTypesOfType cenv.g cenv.amap m AllowMultiIntfInstantiations.Yes typ for (ty,_) in iimpls do yield! AllSuperTypesOfType cenv.g cenv.amap m AllowMultiIntfInstantiations.Yes ty ] |> List.filter (isInterfaceTy cenv.g) CheckMultipleInterfaceInstantiations cenv interfaces m // Allow base calls to F# methods | Expr.App((InnerExprPat(Expr.Val(v,vFlags,_) as f)),fty,tyargs,(Expr.Val(baseVal,_,_)::rest),m) when ((match vFlags with VSlotDirectCall -> true | _ -> false) && baseVal.BaseOrThisInfo = BaseVal) -> // dprintfn "GOT BASE VAL USE" let memberInfo = Option.get v.MemberInfo if memberInfo.MemberFlags.IsDispatchSlot then errorR(Error(FSComp.SR.tcCannotCallAbstractBaseMember(v.DisplayName),m)); else CheckVal cenv env v m GeneralContext CheckVal cenv env baseVal m GeneralContext CheckTypePermitByrefs cenv m fty; CheckTypeInstPermitByrefs cenv m tyargs; CheckExprsInContext cenv env rest (argAritiesOfFunExpr f) // Allow base calls to IL methods | Expr.Op (TOp.ILCall (virt,_,_,_,_,_,_,mref,enclTypeArgs,methTypeArgs,tys),tyargs,(Expr.Val(baseVal,_,_)::rest),m) when not virt && baseVal.BaseOrThisInfo = BaseVal -> // Disallow calls to abstract base methods on IL types. match tryDestAppTy cenv.g baseVal.Type with | Some tcref when tcref.IsILTycon -> try // This is awkward - we have to explicitly re-resolve back to the IL metadata to determine if the method is abstract. // We believe this may be fragile in some situations, since we are using the Abstract IL code to compare // type equality, and it would be much better to remove any F# dependency on that implementation of IL type // equality. It would be better to make this check in tc.fs when we have the Abstract IL metadata for the method to hand. let mdef = resolveILMethodRef tcref.ILTyconRawMetadata mref if mdef.IsAbstract then errorR(Error(FSComp.SR.tcCannotCallAbstractBaseMember(mdef.Name),m)); with _ -> () // defensive coding | _ -> () CheckTypeInstNoByrefs cenv m tyargs; CheckTypeInstNoByrefs cenv m enclTypeArgs; CheckTypeInstNoByrefs cenv m methTypeArgs; CheckTypeInstNoByrefs cenv m tys; CheckVal cenv env baseVal m GeneralContext CheckExprDirectArgs cenv env rest | Expr.Op (c,tyargs,args,m) -> CheckExprOp cenv env (c,tyargs,args,m) context // Allow 'typeof' calls as a special case, the only accepted use of System.Void! | TypeOfExpr cenv.g ty when isVoidTy cenv.g ty -> () // typeof allowed. Special case. No further checks. | TypeDefOfExpr cenv.g ty when isVoidTy cenv.g ty -> () // typedefof allowed. Special case. No further checks. // Allow '%expr' in quotations | Expr.App(Expr.Val(vref,_,_),_,tinst,[arg],m) when is_splice cenv.g vref && env.quote -> CheckTypeInstPermitByrefs cenv m tinst; CheckExpr cenv env arg | Expr.App(f,fty,tyargs,argsl,m) -> // dprintfn "NO BASE VAL USE" CheckTypeInstNoByrefs cenv m tyargs; CheckTypePermitByrefs cenv m fty; CheckTypeInstPermitByrefs cenv m tyargs; CheckExpr cenv env f; CheckExprsInContext cenv env argsl (argAritiesOfFunExpr f) (* REVIEW: fold the next two cases together *) | Expr.Lambda(_,_ctorThisValOpt,_baseValOpt,argvs,_,m,rty) -> let topValInfo = ValReprInfo ([],[argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)],ValReprInfo.unnamedRetVal) let ty = mkMultiLambdaTy m argvs rty in CheckLambdas None cenv env false topValInfo false expr m ty | Expr.TyLambda(_,tps,_,m,rty) -> let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps,[],ValReprInfo.unnamedRetVal) let ty = tryMkForallTy tps rty in CheckLambdas None cenv env false topValInfo false expr m ty | Expr.TyChoose(_,e1,_) -> CheckExpr cenv env e1 | Expr.Match(_,_,dtree,targets,m,ty) -> CheckTypeNoByrefs cenv m ty; CheckDecisionTree cenv env dtree; CheckDecisionTreeTargets cenv env targets; | Expr.LetRec (binds,e,_,_) -> BindVals cenv (valsOfBinds binds) CheckBindings cenv env binds; CheckExpr cenv env e | Expr.StaticOptimization (constraints,e2,e3,m) -> CheckExpr cenv env e2; CheckExpr cenv env e3; constraints |> List.iter (function | TTyconEqualsTycon(ty1,ty2) -> CheckTypeNoByrefs cenv m ty1; CheckTypeNoByrefs cenv m ty2 | TTyconIsStruct(ty1) -> CheckTypeNoByrefs cenv m ty1) | Expr.Link _ -> failwith "Unexpected reclink" and CheckMethods cenv env baseValOpt l = l |> List.iter (CheckMethod cenv env baseValOpt) and CheckMethod cenv env baseValOpt (TObjExprMethod(_,attribs,tps,vs,e,m)) = let env = BindTypars env tps let vs = List.concat vs CheckAttribs cenv env attribs; CheckNoReraise cenv None e; CheckEscapes cenv true m (match baseValOpt with Some x -> x:: vs | None -> vs) e |> ignore CheckExpr cenv env e and CheckInterfaceImpls cenv env baseValOpt l = l |> List.iter (CheckInterfaceImpl cenv env baseValOpt) and CheckInterfaceImpl cenv env baseValOpt (_ty,overrides) = CheckMethods cenv env baseValOpt overrides and CheckExprOp cenv env (op,tyargs,args,m) context = let limitedCheck() = if env.limited then errorR(Error(FSComp.SR.chkObjCtorsCantUseExceptionHandling(), m)); List.iter (CheckTypePermitByrefs cenv m) tyargs; (* Special cases *) match op,tyargs,args,context with // Handle these as special cases since mutables are allowed inside their bodies | TOp.While _,_,[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_)],_ -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprs cenv env [e1;e2] | TOp.TryFinally _,[_],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)],_ -> CheckTypeInstNoByrefs cenv m tyargs; limitedCheck(); CheckExprs cenv env [e1;e2] | TOp.For(_),_,[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_);Expr.Lambda(_,_,_,[_],e3,_,_)],_ -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprs cenv env [e1;e2;e3] | TOp.TryCatch _,[_],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],_e2,_,_); Expr.Lambda(_,_,_,[_],e3,_,_)],_ -> CheckTypeInstNoByrefs cenv m tyargs; limitedCheck(); CheckExprs cenv env [e1;(* e2; -- don't check filter body - duplicates logic in 'catch' body *) e3] | TOp.ILCall (_,_,_,_,_,_,_,_,enclTypeArgs,methTypeArgs,tys),_,_,_ -> CheckTypeInstNoByrefs cenv m tyargs; CheckTypeInstNoByrefs cenv m enclTypeArgs; CheckTypeInstNoByrefs cenv m methTypeArgs; CheckTypeInstNoByrefs cenv m tys; CheckExprDirectArgs cenv env args // Tuple expression in known tuple context | TOp.Tuple,_,_,KnownArityTuple nArity -> if cenv.reportErrors then if args.Length <> nArity then errorR(InternalError("Tuple arity does not correspond to planned function argument arity",m)); // This tuple should not be generated. The known function arity // means it just bundles arguments. CheckExprDirectArgs cenv env args | TOp.LValueOp(LGetAddr,v),_,_,arity -> if arity = DirectArg then CheckExprs cenv env args (* Address-of operator generates byref, and context permits this. *) else if cenv.reportErrors then errorR(Error(FSComp.SR.chkNoAddressOfAtThisPoint(v.DisplayName), m)) | TOp.ValFieldGet _rf,_,[arg1],_arity -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprDirectArgs cenv env [arg1] (* See mkRecdFieldGetViaExprAddr -- byref arg1 when #args =1 *) (* Property getters on mutable structs come through here. *) | TOp.ValFieldSet _rf,_,[arg1;arg2],_arity -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprDirectArgs cenv env [arg1]; (* See mkRecdFieldSetViaExprAddr -- byref arg1 when #args=2 *) CheckExprs cenv env [arg2] (* Property setters on mutable structs come through here (TBC). *) | TOp.Coerce,[_ty1;_ty2],[x],_arity -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprInContext cenv env x context | TOp.Reraise,[_ty1],[],_arity -> CheckTypeInstNoByrefs cenv m tyargs | TOp.ValFieldGetAddr rfref,tyargs,[],_ -> if context <> DirectArg && cenv.reportErrors then errorR(Error(FSComp.SR.chkNoAddressStaticFieldAtThisPoint(rfref.FieldName), m)); CheckTypeInstNoByrefs cenv m tyargs (* NOTE: there are no arg exprs to check in this case *) | TOp.ValFieldGetAddr rfref,tyargs,[rx],_ -> if context <> DirectArg && cenv.reportErrors then errorR(Error(FSComp.SR.chkNoAddressFieldAtThisPoint(rfref.FieldName), m)); (* This construct is used for &(rx.rfield) and &(rx->rfield). Relax to permit byref types for rx. [See Bug 1263]. *) CheckTypeInstNoByrefs cenv m tyargs; CheckExprInContext cenv env rx DirectArg (* allow rx to be byref here *) | TOp.ILAsm (instrs,tys),_,_,_ -> CheckTypeInstPermitByrefs cenv m tys; CheckTypeInstNoByrefs cenv m tyargs; begin match instrs,args with | [ I_stfld (_alignment,_vol,_fspec) ],[lhs;rhs] -> CheckExprInContext cenv env lhs DirectArg; (* permit byref for lhs lvalue *) CheckExpr cenv env rhs | [ I_ldfld (_alignment,_vol,_fspec) ],[lhs] -> CheckExprInContext cenv env lhs DirectArg (* permit byref for lhs lvalue *) | [ I_ldfld (_alignment,_vol,_fspec); AI_nop ],[lhs] -> CheckExprInContext cenv env lhs DirectArg (* permit byref for lhs lvalue of readonly value *) | [ I_ldflda (fspec) | I_ldsflda (fspec) ],[lhs] -> if context <> DirectArg && cenv.reportErrors then errorR(Error(FSComp.SR.chkNoAddressFieldAtThisPoint(fspec.Name), m)); CheckExprInContext cenv env lhs DirectArg (* permit byref for lhs lvalue *) | [ I_ldelema (_,isNativePtr,_,_) ],lhsArray::indices -> if not(isNativePtr) && context <> DirectArg && cenv.reportErrors then errorR(Error(FSComp.SR.chkNoAddressOfArrayElementAtThisPoint(), m)); CheckExprInContext cenv env lhsArray DirectArg (* permit byref for lhs lvalue *) CheckExprs cenv env indices | _instrs -> CheckExprs cenv env args end | TOp.TraitCall _,_,_,_ -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprDirectArgs cenv env args (* allow args to be byref here *) | ( TOp.Tuple | TOp.UnionCase _ | TOp.ExnConstr _ | TOp.Array | TOp.Bytes _ | TOp.UInt16s _ | TOp.Recd _ | TOp.ValFieldSet _ | TOp.UnionCaseTagGet _ | TOp.UnionCaseProof _ | TOp.UnionCaseFieldGet _ | TOp.UnionCaseFieldSet _ | TOp.ExnFieldGet _ | TOp.ExnFieldSet _ | TOp.TupleFieldGet _ | TOp.RefAddrGet | _ (* catch all! *) ),_,_,_ -> CheckTypeInstNoByrefs cenv m tyargs; CheckExprs cenv env args and CheckLambdas memInfo cenv env inlined topValInfo alwaysCheckNoReraise e m ety = // The topValInfo here says we are _guaranteeing_ to compile a function value // as a .NET method with precisely the corresponding argument counts. match e with | Expr.TyChoose(tps,e1,m) -> let env = BindTypars env tps CheckLambdas memInfo cenv env inlined topValInfo alwaysCheckNoReraise e1 m ety | Expr.Lambda (_,_,_,_,_,m,_) | Expr.TyLambda(_,_,_,m,_) -> let tps,ctorThisValOpt,baseValOpt,vsl,body,bodyty = destTopLambda cenv.g cenv.amap topValInfo (e, ety) in let env = BindTypars env tps let thisAndBase = Option.toList ctorThisValOpt @ Option.toList baseValOpt let restArgs = List.concat vsl let syntacticArgs = thisAndBase @ restArgs match memInfo with | None -> () | Some mi -> // ctorThis and baseVal values are always considered used for v in thisAndBase do v.SetHasBeenReferenced() // instance method 'this' is always considered used match mi.MemberFlags.IsInstance, restArgs with | true, firstArg::_ -> firstArg.SetHasBeenReferenced() | _ -> () // any byRef arguments are considered used, as they may be 'out's restArgs |> List.iter (fun arg -> if isByrefTy cenv.g arg.Type then arg.SetHasBeenReferenced()) syntacticArgs |> List.iter (CheckValSpec cenv env); syntacticArgs |> List.iter (BindVal cenv); // Allow access to protected things within members match memInfo with | None -> () | Some membInfo -> testHookMemberBody membInfo body; let freesOpt = CheckEscapes cenv (isSome(memInfo)) m syntacticArgs body; CheckNoReraise cenv freesOpt body; (* no reraise under lambda expression *) CheckExpr cenv env body; if cenv.reportErrors then if not inlined then CheckForByrefLikeType cenv bodyty (fun () -> if vsl.Length = 0 then errorR(Error(FSComp.SR.chkFirstClassFuncNoByref(), m)) else errorR(Error(FSComp.SR.chkReturnTypeNoByref(), m))) for tp in tps do if tp.Constraints |> List.sumBy (function TyparConstraint.CoercesTo(ty,_) when isClassTy cenv.g ty -> 1 | _ -> 0) > 1 then errorR(Error(FSComp.SR.chkTyparMultipleClassConstraints(), m)) | _ -> CheckTypePermitByrefs cenv m ety; if not inlined && isByrefLikeTy cenv.g ety then CheckExprInContext cenv env e DirectArg (* allow byref to occur as RHS of byref binding. *) else CheckExpr cenv env e if alwaysCheckNoReraise then CheckNoReraise cenv None e; (* no reraise *) and CheckExprsInContext cenv env exprs arities = let arities = Array.ofList arities let argArity i = if i < arities.Length then arities.[i] else GeneralContext exprs |> List.iteri (fun i exp -> CheckExprInContext cenv env exp (argArity i)) and CheckExprs cenv env exprs = exprs |> List.iter (CheckExpr cenv env) and CheckFlatExprs cenv env exprs = exprs |> FlatList.iter (CheckExpr cenv env) and CheckExprDirectArgs cenv env exprs = exprs |> List.iter (fun x -> CheckExprInContext cenv env x DirectArg) and CheckDecisionTreeTargets cenv env targets = targets |> Array.iter (CheckDecisionTreeTarget cenv env) and CheckDecisionTreeTarget cenv env (TTarget(vs,e,_)) = BindVals cenv vs vs |> FlatList.iter (CheckValSpec cenv env) CheckExpr cenv env e and CheckDecisionTree cenv env x = match x with | TDSuccess (es,_) -> CheckFlatExprs cenv env es; | TDBind(bind,rest) -> CheckBinding cenv env false bind; CheckDecisionTree cenv env rest | TDSwitch (e,cases,dflt,m) -> CheckDecisionTreeSwitch cenv env (e,cases,dflt,m) and CheckDecisionTreeSwitch cenv env (e,cases,dflt,m) = CheckExpr cenv env e; List.iter (fun (TCase(discrim,e)) -> CheckDecisionTreeTest cenv env m discrim; CheckDecisionTree cenv env e) cases; Option.iter (CheckDecisionTree cenv env) dflt and CheckDecisionTreeTest cenv env m discrim = match discrim with | Test.UnionCase (_,tinst) -> CheckTypeInstPermitByrefs cenv m tinst | Test.ArrayLength (_,typ) -> CheckTypePermitByrefs cenv m typ | Test.Const _ -> () | Test.IsNull -> () | Test.IsInst (srcTyp,dstTyp) -> (CheckTypePermitByrefs cenv m srcTyp; CheckTypePermitByrefs cenv m dstTyp) | Test.ActivePatternCase (exp,_,_,_,_) -> CheckExpr cenv env exp and CheckAttrib cenv env (Attrib(_,_,args,props,_,_,_)) = props |> List.iter (fun (AttribNamedArg(_,_,_,expr)) -> CheckAttribExpr cenv env expr); args |> List.iter (CheckAttribExpr cenv env) and CheckAttribExpr cenv env (AttribExpr(expr,vexpr)) = CheckExpr cenv env expr; CheckExpr cenv env vexpr; CheckNoReraise cenv None expr; CheckAttribArgExpr cenv env vexpr and CheckAttribArgExpr cenv env expr = match expr with (* Detect standard constants *) | Expr.Const(c,m,_) -> match c with | Const.Bool _ | Const.Int32 _ | Const.SByte _ | Const.Int16 _ | Const.Int32 _ | Const.Int64 _ | Const.Byte _ | Const.UInt16 _ | Const.UInt32 _ | Const.UInt64 _ | Const.Double _ | Const.Single _ | Const.Char _ | Const.Zero _ | Const.String _ -> () | _ -> if cenv.reportErrors then errorR (Error (FSComp.SR.tastConstantCannotBeCustomAttribute(), m)) | Expr.Op(TOp.Array,[_elemTy],args,_m) -> List.iter (CheckAttribArgExpr cenv env) args | TypeOfExpr cenv.g _ -> () | TypeDefOfExpr cenv.g _ -> () | Expr.Op(TOp.Coerce,_,[arg],_) -> CheckAttribArgExpr cenv env arg | EnumExpr cenv.g arg1 -> CheckAttribArgExpr cenv env arg1 | AttribBitwiseOrExpr cenv.g (arg1,arg2) -> CheckAttribArgExpr cenv env arg1; CheckAttribArgExpr cenv env arg2 | _ -> if cenv.reportErrors then errorR (Error (FSComp.SR.chkInvalidCustAttrVal(), expr.Range)) and CheckAttribs cenv env (attribs: Attribs) = if isNil attribs then () else let tcrefs = [ for (Attrib(tcref,_,_,_,_,_,m)) in attribs -> (tcref,m) ] // Check for violations of allowMultiple = false let duplicates = tcrefs |> Seq.groupBy (fun (tcref,_) -> tcref.Stamp) |> Seq.map (fun (_,elems) -> List.last (List.ofSeq elems), Seq.length elems) |> Seq.filter (fun (_,count) -> count > 1) |> Seq.map fst |> Seq.toList // Filter for allowMultiple = false |> List.filter (fun (tcref,m) -> let allowMultiple = Infos.AttributeChecking.TryBindTyconRefAttribute cenv.g m cenv.g.attrib_AttributeUsageAttribute tcref (fun (_,named) -> named |> List.tryPick (function ("AllowMultiple",_,_,ILAttribElem.Bool res) -> Some res | _ -> None)) (fun (Attrib(_,_,_,named,_,_,_)) -> named |> List.tryPick (function AttribNamedArg("AllowMultiple",_,_,AttribBoolArg(res) ) -> Some res | _ -> None)) (fun _ -> None) (allowMultiple <> Some(true))) if cenv.reportErrors then for (tcref,m) in duplicates do errorR(Error(FSComp.SR.chkAttrHasAllowMultiFalse(tcref.DisplayName), m)) attribs |> List.iter (CheckAttrib cenv env) and CheckValInfo cenv env (ValReprInfo(_,args,ret)) = args |> List.iterSquared (CheckArgInfo cenv env); ret |> CheckArgInfo cenv env; and CheckArgInfo cenv env (argInfo : ArgReprInfo) = CheckAttribs cenv env argInfo.Attribs and CheckValSpec cenv env (v:Val) = v.Attribs |> CheckAttribs cenv env; v.ValReprInfo |> Option.iter (CheckValInfo cenv env); v.Type |> CheckTypePermitByrefs cenv v.Range and AdjustAccess isHidden (cpath: unit -> CompilationPath) access = if isHidden then let (TAccess(l)) = access // FSharp 1.0 bug 1908: Values hidden by signatures are implicitly at least 'internal' let scoref = cpath().ILScopeRef TAccess(CompPath(scoref,[])::l) else access and CheckBinding cenv env alwaysCheckNoReraise (TBind(v,e,_) as bind) = //printfn "visiting %s..." v.DisplayName match TryGetActivePatternInfo (mkLocalValRef v) with | Some _ -> let vty = v.TauType let vtps = v.Typars |> Zset.ofList typarOrder if not (isFunTy cenv.g v.TauType) then errorR(Error(FSComp.SR.activePatternIdentIsNotFunctionTyped(v.LogicalName),v.Range)) let argtys,resty = stripFunTy cenv.g vty let argtps,restps= (freeInTypes CollectTypars argtys).FreeTypars,(freeInType CollectTypars resty).FreeTypars // Error if an active pattern is generic in type variables that only occur in the result Choice<_,...>. // Note: The test restricts to v.Typars since typars from the closure are considered fixed. if not (Zset.isEmpty (Zset.inter (Zset.diff restps argtps) vtps)) then errorR(Error(FSComp.SR.activePatternChoiceHasFreeTypars(v.LogicalName),v.Range)) | _ -> () match cenv.potentialUnboundUsesOfVals.TryFind v.Stamp with | None -> () | Some m -> let nm = v.DisplayName errorR(Error(FSComp.SR.chkMemberUsedInInvalidWay(nm, nm, stringOfRange m), v.Range)) v.Type |> CheckTypePermitByrefs cenv v.Range; v.Attribs |> CheckAttribs cenv env; v.ValReprInfo |> Option.iter (CheckValInfo cenv env); if (v.IsMemberOrModuleBinding || v.IsMember) && not v.IsIncrClassGeneratedMember then let access = AdjustAccess (IsHiddenVal env.sigToImplRemapInfo v) (fun () -> v.TopValActualParent.CompilationPath) v.Accessibility v.Type |> CheckTypeForAccess cenv (fun () -> NicePrint.stringOfQualifiedValOrMember cenv.denv v) access v.Range; let env = if v.IsConstructor && not v.IsIncrClassConstructor then { env with limited=true } else env if cenv.reportErrors then if isByrefLikeTy cenv.g v.Type && isSome bind.Var.ValReprInfo then errorR(Error(FSComp.SR.chkNoByrefAsTopValue(), v.Range)); // Check top-level let-bound values (arity=0 so not compiled not method) for byref types (not allowed) match bind.Var.ValReprInfo with | Some info when info.HasNoArgs -> CheckForByrefLikeType cenv v.Type (fun () -> errorR(Error(FSComp.SR.chkNoByrefAsTopValue(),v.Range))) | _ -> () if isSome v.PublicPath then if // Don't support implicit [] on generated members, except the implicit members // for 'let' bound functions in classes. (not v.IsCompilerGenerated || v.IsIncrClassGeneratedMember) && (// Check the attributes on any enclosing module env.reflect || // Check the attributes on the value HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute v.Attribs || // Also check the enclosing type for members - for historical reasons, in the TAST member values // are stored in the entity that encloses the type, hence we will not have noticed the ReflectedDefinition // on the enclosing type at this point. HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute v.TopValActualParent.Attribs) then if v.IsInstanceMember && v.MemberApparentParent.IsStructOrEnumTycon then errorR(Error(FSComp.SR.chkNoReflectedDefinitionOnStructMember(),v.Range)) cenv.usesQuotations <- true // If we've already recorded a definition then skip this match v.ReflectedDefinition with | None -> v.Data.val_defn <- Some e | Some _ -> () // Run the conversion process over the reflected definition to report any errors in the // front end rather than the back end. We currenly re-run this during ilxgen.fs but there's // no real need for that except that it helps us to bundle all reflected definitions up into // one blob for pickling to the binary format try let ety = tyOfExpr cenv.g e let tps,taue,_ = match e with | Expr.TyLambda (_,tps,b,_,_) -> tps,b,applyForallTy cenv.g ety (List.map mkTyparTy tps) | _ -> [],e,ety let env = QuotationTranslator.QuotationTranslationEnv.Empty.BindTypars tps let _,argExprs,_ = QuotationTranslator.ConvExprPublic (cenv.g,cenv.amap,cenv.viewCcu, QuotationTranslator.IsReflectedDefinition.Yes) env taue if nonNil(argExprs) then errorR(Error(FSComp.SR.chkReflectedDefCantSplice(), v.Range)); QuotationTranslator.ConvMethodBase (cenv.g,cenv.amap,cenv.viewCcu) env (v.CompiledName, v) |> ignore with | QuotationTranslator.InvalidQuotedTerm e -> errorR(e) match v.MemberInfo with | Some memberInfo when not v.IsIncrClassGeneratedMember -> match memberInfo.MemberFlags.MemberKind with | (MemberKind.PropertySet | MemberKind.PropertyGet) -> // These routines raise errors for ill-formed properties v |> ReturnTypeOfPropertyVal cenv.g |> ignore v |> ArgInfosOfPropertyVal cenv.g |> ignore | _ -> () | _ -> () let topValInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData let inlined = v.MustInline // certain inline functions are permitted to have byref return types // e.g. for the byref operator itself, &. CheckLambdas v.MemberInfo cenv env inlined topValInfo alwaysCheckNoReraise e v.Range v.Type; and CheckBindings cenv env xs = FlatList.iter (CheckBinding cenv env false) xs // Top binds introduce expression, check they are reraise free. let CheckTopBinding cenv env (TBind(v,e,_) as bind) = let isExplicitEntryPoint = HasFSharpAttribute cenv.g cenv.g.attrib_EntryPointAttribute v.Attribs if isExplicitEntryPoint then cenv.entryPointGiven <- true; if not cenv.isLastCompiland && cenv.reportErrors then errorR(Error(FSComp.SR.chkEntryPointUsage(), v.Range)) // Analyze the r.h.s. for the "IsCompiledAsStaticPropertyWithoutField" condition if // Mutable values always have fields not v.IsMutable && // Literals always have fields not (HasFSharpAttribute cenv.g cenv.g.attrib_LiteralAttribute v.Attribs) && not (HasFSharpAttribute cenv.g cenv.g.attrib_ThreadStaticAttribute v.Attribs) && not (HasFSharpAttribute cenv.g cenv.g.attrib_ContextStaticAttribute v.Attribs) && // Having a field makes the binding a static initialization trigger IsSimpleSyntacticConstantExpr cenv.g e && // Check the thing is actually compiled as a property IsCompiledAsStaticProperty cenv.g v then v.SetIsCompiledAsStaticPropertyWithoutField() // Check for value name clashes begin try // Skip compiler generated values if v.IsCompilerGenerated then () else // Skip explicit implementations of interface methods if ValIsExplicitImpl cenv.g v then () else match v.ActualParent with | ParentNone -> () // this case can happen after error recovery from earlier error | Parent _ -> let tcref = v.TopValActualParent let hasDefaultAugmentation = tcref.IsUnionTycon && match TryFindFSharpAttribute cenv.g cenv.g.attrib_DefaultAugmentationAttribute tcref.Attribs with | Some(Attrib(_,_,[ AttribBoolArg(b) ],_,_,_,_)) -> b | _ -> true (* not hiddenRepr *) let kind = (if v.IsMember then "member" else "value") let check skipValCheck nm = if not skipValCheck && v.IsModuleBinding && tcref.ModuleOrNamespaceType.AllValsByLogicalName.ContainsKey(nm) && not (valEq tcref.ModuleOrNamespaceType.AllValsByLogicalName.[nm] v) then error(Duplicate(kind,v.DisplayName,v.Range)); #if CASES_IN_NESTED_CLASS if tcref.IsUnionTycon && nm = "Cases" then errorR(NameClash(nm,kind,v.DisplayName,v.Range, "generated type","Cases",tcref.Range)); #endif if tcref.IsUnionTycon then match nm with | "Tag" -> errorR(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.typeInfoGeneratedProperty(),"Tag",tcref.Range)); | "Tags" -> errorR(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.typeInfoGeneratedType(),"Tags",tcref.Range)); | _ -> if hasDefaultAugmentation then match tcref.GetUnionCaseByName(nm) with | Some(uc) -> error(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.typeInfoUnionCase(),uc.DisplayName,uc.Range)); | None -> () let hasNoArgs = match v.ValReprInfo with | None -> false | Some arity -> List.sum arity.AritiesOfArgs - v.NumObjArgs <= 0 && arity.NumTypars = 0 // Unions with one alternative use "Item", "Item1", "Item2" etc. But only if these // are properties without arguments. if tcref.UnionCasesArray.Length = 1 && hasNoArgs then let ucase1 = tcref.UnionCasesArray.[0] let nFields = ucase1.RecdFieldsArray.Length for i in 0 .. nFields - 1 do let propName = if nFields <= 1 then "Item" else "Item"+string (i+1) if nm = propName then error(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.typeInfoGeneratedProperty(),propName,ucase1.Range)); // Default augmentation contains the nasty 'Case' etc. let prefix = "New" if nm.StartsWith prefix then match tcref.GetUnionCaseByName(nm.[prefix.Length ..]) with | Some(uc) -> error(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.chkUnionCaseCompiledForm(),uc.DisplayName,uc.Range)); | None -> () // Default augmentation contains the nasty 'Is' etc. let prefix = "Is" if nm.StartsWith prefix && hasDefaultAugmentation then match tcref.GetUnionCaseByName(nm.[prefix.Length ..]) with | Some(uc) -> error(NameClash(nm,kind,v.DisplayName,v.Range, FSComp.SR.chkUnionCaseDefaultAugmentation(),uc.DisplayName,uc.Range)); | None -> () match tcref.GetFieldByName(nm) with | Some(rf) -> error(NameClash(nm,kind,v.DisplayName,v.Range,"field",rf.Name,rf.Range)); | None -> () check false v.CoreDisplayName check false v.DisplayName check false v.CompiledName // Properties get 'get_X', only if there are no args // Properties get 'get_X' match v.ValReprInfo with | Some arity when arity.NumCurriedArgs = 0 && arity.NumTypars = 0 -> check false ("get_"^v.DisplayName) | _ -> () match v.ValReprInfo with | Some arity when v.IsMutable && arity.NumCurriedArgs = 0 && arity.NumTypars = 0 -> check false ("set_"^v.DisplayName) | _ -> () match TryChopPropertyName v.DisplayName with | Some res -> check true res | None -> () with e -> errorRecovery e v.Range; end CheckBinding cenv env true bind let CheckTopBindings cenv env binds = FlatList.iter (CheckTopBinding cenv env) binds //-------------------------------------------------------------------------- // check tycons //-------------------------------------------------------------------------- let CheckRecdField isUnion cenv env (tycon:Tycon) (rfield:RecdField) = let isHidden = IsHiddenTycon env.sigToImplRemapInfo tycon || IsHiddenTyconRepr env.sigToImplRemapInfo tycon || (not isUnion && IsHiddenRecdField env.sigToImplRemapInfo (mkNestedRecdFieldRef (mkLocalTyconRef tycon) rfield)) let access = AdjustAccess isHidden (fun () -> tycon.CompilationPath) rfield.Accessibility CheckTypeForAccess cenv (fun () -> rfield.Name) access rfield.Range rfield.FormalType; CheckTypePermitByrefs cenv rfield.Range rfield.FormalType; CheckAttribs cenv env rfield.PropertyAttribs; CheckAttribs cenv env rfield.FieldAttribs; if cenv.reportErrors then CheckForByrefLikeType cenv rfield.FormalType (fun () -> errorR(Error(FSComp.SR.chkCantStoreByrefValue(), tycon.Range))) let CheckEntityDefn cenv env (tycon:Entity) = #if EXTENSIONTYPING if not tycon.IsProvidedGeneratedTycon then #endif let env = { env with reflect = env.reflect || HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute tycon.Attribs } let m = tycon.Range CheckAttribs cenv env tycon.Attribs; if cenv.reportErrors then begin if not tycon.IsTypeAbbrev then let typ = generalizedTyconRef (mkLocalTyconRef tycon) let allVirtualMethsInParent = match GetSuperTypeOfType cenv.g cenv.amap m typ with | Some super -> GetIntrinsicMethInfosOfType cenv.infoReader (None,AccessibleFromSomewhere,AllowMultiIntfInstantiations.Yes) IgnoreOverrides m super |> List.filter (fun minfo -> minfo.IsVirtual) | None -> [] let namesOfMethodsThatMayDifferOnlyInReturnType = ["op_Explicit";"op_Implicit"] (* hardwired *) let methodUniquenessIncludesReturnType (minfo:MethInfo) = List.mem minfo.LogicalName namesOfMethodsThatMayDifferOnlyInReturnType let MethInfosEquivWrtUniqueness eraseFlag m minfo minfo2 = if methodUniquenessIncludesReturnType minfo then MethInfosEquivByNameAndSig eraseFlag true cenv.g cenv.amap m minfo minfo2 else MethInfosEquivByNameAndPartialSig eraseFlag true cenv.g cenv.amap m minfo minfo2 (* partial ignores return type *) let immediateMeths = [ for v in tycon.AllGeneratedValues do yield FSMeth (cenv.g,typ,v,None) yield! GetImmediateIntrinsicMethInfosOfType (None,AccessibleFromSomewhere) cenv.g cenv.amap m typ ] let immediateProps = GetImmediateIntrinsicPropInfosOfType (None,AccessibleFromSomewhere) cenv.g cenv.amap m typ let getHash (hash:Dictionary) nm = if hash.ContainsKey(nm) then hash.[nm] else [] // precompute methods grouped by MethInfo.LogicalName let hashOfImmediateMeths = let h = new Dictionary() for minfo in immediateMeths do match h.TryGetValue minfo.LogicalName with | true, methods -> h.[minfo.LogicalName] <- minfo::methods | false, _ -> h.[minfo.LogicalName] <- [minfo] h let getOtherMethods (minfo : MethInfo) = [ //we have added all methods to the dictionary on the previous step let methods = hashOfImmediateMeths.[minfo.LogicalName] for m in methods do // use referencial identity to filter out 'minfo' method if not(System.Object.ReferenceEquals(m, minfo)) then yield m ] let hashOfImmediateProps = new Dictionary() for minfo in immediateMeths do let nm = minfo.LogicalName let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) let others = getOtherMethods minfo // abstract/default pairs of duplicate methods are OK let IsAbstractDefaultPair (x:MethInfo) (y:MethInfo) = x.IsDispatchSlot && y.IsDefiniteFSharpOverride let IsAbstractDefaultPair2 (minfo:MethInfo) (minfo2:MethInfo) = IsAbstractDefaultPair minfo minfo2 || IsAbstractDefaultPair minfo2 minfo let checkForDup erasureFlag (minfo2: MethInfo) = not (IsAbstractDefaultPair2 minfo minfo2) && (minfo.IsInstance = minfo2.IsInstance) && MethInfosEquivWrtUniqueness erasureFlag m minfo minfo2 if others |> List.exists (checkForDup EraseAll) then if others |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateMethod(nm),m)) else errorR(Error(FSComp.SR.chkDuplicateMethodWithSuffix(nm),m)) if minfo.NumArgs.Length > 1 && others |> List.exists (fun minfo2 -> not (IsAbstractDefaultPair2 minfo minfo2)) then errorR(Error(FSComp.SR.chkDuplicateMethodCurried nm,m)) if minfo.NumArgs.Length > 1 && (minfo.GetParamDatas(cenv.amap, m, minfo.FormalMethodInst) |> List.existsSquared (fun (ParamData(isParamArrayArg, isOutArg, optArgInfo, _, ty)) -> isParamArrayArg || isOutArg || optArgInfo.IsOptional || isByrefTy cenv.g ty)) then errorR(Error(FSComp.SR.chkCurriedMethodsCantHaveOutParams(), m)) for pinfo in immediateProps do let nm = pinfo.PropertyName let m = (match pinfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) if hashOfImmediateMeths.ContainsKey(nm) then errorR(Error(FSComp.SR.chkPropertySameNameMethod(nm),m)) let others = getHash hashOfImmediateProps nm if pinfo.HasGetter && pinfo.HasSetter then if (pinfo.GetterMethod.IsVirtual <> pinfo.SetterMethod.IsVirtual) then errorR(Error(FSComp.SR.chkGetterSetterDoNotMatchAbstract(nm),m)) let checkForDup erasureFlag pinfo2 = // abstract/default pairs of duplicate properties are OK let IsAbstractDefaultPair (x:PropInfo) (y:PropInfo) = x.IsDispatchSlot && y.IsDefiniteFSharpOverride not (IsAbstractDefaultPair pinfo pinfo2 || IsAbstractDefaultPair pinfo2 pinfo) && PropInfosEquivByNameAndPartialSig erasureFlag cenv.g cenv.amap m pinfo pinfo2 (* partial ignores return type *) if others |> List.exists (checkForDup EraseAll) then if others |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateProperty(nm) ,m)) else errorR(Error(FSComp.SR.chkDuplicatePropertyWithSuffix(nm) ,m)) // Check to see if one is an indexer and one is not if ( (pinfo.HasGetter && pinfo.HasSetter && let setterArgs = pinfo.DropGetter.GetParamTypes(cenv.amap,m) let getterArgs = pinfo.DropSetter.GetParamTypes(cenv.amap,m) setterArgs.Length <> getterArgs.Length) || (let nargs = pinfo.GetParamTypes(cenv.amap,m).Length others |> List.exists (fun pinfo2 -> (pinfo2.GetParamTypes(cenv.amap,m).Length = 0) <> (nargs = 0)))) then errorR(Error(FSComp.SR.chkPropertySameNameIndexer(nm),m)) // Check to see if the signatures of the both getter and the setter imply the same property type if pinfo.HasGetter && pinfo.HasSetter && not pinfo.IsIndexer then let ty1 = pinfo.DropSetter.GetPropertyType(cenv.amap,m) let ty2 = pinfo.DropGetter.GetPropertyType(cenv.amap,m) if not (typeEquivAux EraseNone cenv.amap.g ty1 ty2) then errorR(Error(FSComp.SR.chkGetterAndSetterHaveSamePropertyType(pinfo.PropertyName, NicePrint.minimalStringOfType cenv.denv ty1, NicePrint.minimalStringOfType cenv.denv ty2),m)) hashOfImmediateProps.[nm] <- pinfo::others if not (isInterfaceTy cenv.g typ) then let hashOfAllVirtualMethsInParent = new Dictionary() for minfo in allVirtualMethsInParent do let nm = minfo.LogicalName let others = getHash hashOfAllVirtualMethsInParent nm hashOfAllVirtualMethsInParent.[nm] <- minfo::others for minfo in immediateMeths do if not minfo.IsDispatchSlot && not minfo.IsVirtual && minfo.IsInstance then let nm = minfo.LogicalName let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm let checkForDup erasureFlag (minfo2:MethInfo) = minfo2.IsDispatchSlot && MethInfosEquivByNameAndSig erasureFlag true cenv.g cenv.amap m minfo minfo2 match parentMethsOfSameName |> List.tryFind (checkForDup EraseAll) with | None -> () | Some minfo -> let mtext = NicePrint.stringOfMethInfo cenv.amap m cenv.denv minfo if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then warning(Error(FSComp.SR.tcNewMemberHidesAbstractMember(mtext),m)) else warning(Error(FSComp.SR.tcNewMemberHidesAbstractMemberWithSuffix(mtext),m)) if minfo.IsDispatchSlot then let nm = minfo.LogicalName let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm let checkForDup erasureFlag minfo2 = MethInfosEquivByNameAndSig erasureFlag true cenv.g cenv.amap m minfo minfo2 //if minfo.NumArgs.Length > 1 then // warning(Error(sprintf "Abstract methods taking curried arguments Duplicate method. The method '%s' has curried arguments but has the same name as another method in this type. Methods with curried arguments may not be overloaded" nm,(match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange))) if parentMethsOfSameName |> List.exists (checkForDup EraseAll) then if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateMethodInheritedType(nm),m)) else errorR(Error(FSComp.SR.chkDuplicateMethodInheritedTypeWithSuffix(nm),m)) end; // Considers TFsObjModelRepr, TRecdRepr and TFiniteUnionRepr. // [Review] are all cases covered: TILObjModelRepr,TAsmRepr. [Yes - these are FSharp.Core.dll only] tycon.AllFieldsArray |> Array.iter (CheckRecdField false cenv env tycon); abstractSlotValsOfTycons [tycon] |> List.iter (typeOfVal >> CheckTypePermitByrefs cenv m); (* check vslots = abstract slots *) tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.iter (CheckTypePermitByrefs cenv m); (* check implemented interface types *) superOfTycon cenv.g tycon |> CheckTypePermitByrefs cenv m; (* check super type *) if tycon.IsUnionTycon then (* This covers finite unions. *) tycon.UnionCasesAsList |> List.iter (fun uc -> CheckAttribs cenv env uc.Attribs; uc.RecdFields |> List.iter (CheckRecdField true cenv env tycon)) let access = AdjustAccess (IsHiddenTycon env.sigToImplRemapInfo tycon) (fun () -> tycon.CompilationPath) tycon.Accessibility let visitType ty = CheckTypeForAccess cenv (fun () -> tycon.DisplayNameWithStaticParametersAndUnderscoreTypars) access tycon.Range ty abstractSlotValsOfTycons [tycon] |> List.iter (typeOfVal >> visitType); (* check vslots = abstract slots *) superOfTycon cenv.g tycon |> visitType // We do not have to check access of interface implementations. See FSharp 1.0 5042 //implements_of_tycon cenv.g tycon |> List.iter visitType if tycon.IsFSharpDelegateTycon then match tycon.TypeReprInfo with | TFsObjModelRepr r -> match r.fsobjmodel_kind with | TTyconDelegate ss -> //ss.ClassTypars //ss.MethodTypars ss.FormalReturnType |> Option.iter visitType; ss.FormalParams |> List.iterSquared (fun (TSlotParam(_,ty,_,_,_,_)) -> visitType ty) | _ -> () | _ -> () let interfaces = AllSuperTypesOfType cenv.g cenv.amap tycon.Range AllowMultiIntfInstantiations.Yes (generalizedTyconRef (mkLocalTyconRef tycon)) |> List.filter (isInterfaceTy cenv.g) if tycon.IsFSharpInterfaceTycon then List.iter visitType interfaces // Check inheritted interface is as accessible if cenv.reportErrors then if not tycon.IsTypeAbbrev then CheckMultipleInterfaceInstantiations cenv interfaces m // Check struct fields. We check these late because we have to have first checked that the structs are // free of cycles if tycon.IsStructOrEnumTycon then tycon.AllInstanceFieldsAsList |> List.iter (fun f -> // Check if it's marked unsafe let zeroInitUnsafe = TryFindFSharpBoolAttribute cenv.g cenv.g.attrib_DefaultValueAttribute f.FieldAttribs if zeroInitUnsafe = Some(true) then let ty' = generalizedTyconRef (mkLocalTyconRef tycon) if not (TypeHasDefaultValue cenv.g ty') then errorR(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m)); ) match tycon.TypeAbbrev with (* And type abbreviations *) | None -> () | Some typ -> CheckForByrefLikeType cenv typ (fun () -> errorR(Error(FSComp.SR.chkNoByrefInTypeAbbrev(), tycon.Range))) let CheckEntityDefns cenv env tycons = tycons |> List.iter (CheckEntityDefn cenv env) //-------------------------------------------------------------------------- // check modules //-------------------------------------------------------------------------- let rec CheckModuleExpr cenv env x = match x with | ModuleOrNamespaceExprWithSig(mty,def,_) -> let (rpi,mhi) = ComputeRemappingFromImplementationToSignature cenv.g def mty let env = { env with sigToImplRemapInfo = (mkRepackageRemapping rpi,mhi) :: env.sigToImplRemapInfo } CheckDefnInModule cenv env def and CheckDefnsInModule cenv env x = x |> List.iter (CheckDefnInModule cenv env) and CheckNothingAfterEntryPoint cenv m = if cenv.entryPointGiven && cenv.reportErrors then errorR(Error(FSComp.SR.chkEntryPointUsage(), m)) and CheckDefnInModule cenv env x = match x with | TMDefRec(tycons,binds,mspecs,m) -> CheckNothingAfterEntryPoint cenv m BindVals cenv (valsOfBinds binds) CheckEntityDefns cenv env tycons; CheckTopBindings cenv env binds; List.iter (CheckModuleSpec cenv env) mspecs | TMDefLet(bind,m) -> CheckNothingAfterEntryPoint cenv m CheckTopBinding cenv env bind BindVal cenv bind.Var | TMDefDo(e,m) -> CheckNothingAfterEntryPoint cenv m CheckNoReraise cenv None e; CheckExpr cenv env e | TMAbstract(def) -> CheckModuleExpr cenv env def | TMDefs(defs) -> CheckDefnsInModule cenv env defs and CheckModuleSpec cenv env (ModuleOrNamespaceBinding(mspec, rhs)) = CheckEntityDefn cenv env mspec; let env = { env with reflect = env.reflect || HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute mspec.Attribs } CheckDefnInModule cenv env rhs let CheckTopImpl (g,amap,reportErrors,infoReader,internalsVisibleToPaths,viewCcu,denv ,mexpr,extraAttribs,isLastCompiland) = let cenv = { g =g ; reportErrors=reportErrors; boundVals= new Dictionary<_,_>(100, HashIdentity.Structural); potentialUnboundUsesOfVals=Map.empty; usesQuotations=false; infoReader=infoReader; internalsVisibleToPaths=internalsVisibleToPaths; amap=amap; denv=denv; viewCcu= viewCcu; isLastCompiland=isLastCompiland; entryPointGiven=false} // Certain type equality checks go faster if these TyconRefs are pre-resolved. // This is because pre-resolving allows tycon equality to be determined by pointer equality on the entities. // See primEntityRefEq. cenv.g.system_Void_tcref.TryDeref |> ignore cenv.g.byref_tcr.TryDeref |> ignore cenv.g.system_TypedReference_tcref.TryDeref |> ignore cenv.g.system_ArgIterator_tcref.TryDeref |> ignore cenv.g.system_RuntimeArgumentHandle_tcref.TryDeref |> ignore let env = { sigToImplRemapInfo=[] quote=false limited=false boundTypars=[] reflect=false } CheckModuleExpr cenv env mexpr; CheckAttribs cenv env extraAttribs; if cenv.usesQuotations then viewCcu.UsesQuotations <- true cenv.entryPointGiven fsharp-3.0.34/src/fsharp/layout.fsi0000775000175000017500000000651012260314606016167 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Layout open System.Text open System.IO open Internal.Utilities.StructuredFormat type layout = Internal.Utilities.StructuredFormat.Layout val emptyL : Layout val isEmptyL : Layout -> bool val wordL : string -> Layout val sepL : string -> Layout val rightL : string -> Layout val leftL : string -> Layout val ( ^^ ) : Layout -> Layout -> Layout (* never break "glue" *) val ( ++ ) : Layout -> Layout -> Layout (* if break, indent=0 *) val ( -- ) : Layout -> Layout -> Layout (* if break, indent=1 *) val ( --- ) : Layout -> Layout -> Layout (* if break, indent=2 *) val ( ---- ) : Layout -> Layout -> Layout (* if break, indent=2 *) val ( ----- ) : Layout -> Layout -> Layout (* if break, indent=2 *) val ( @@ ) : Layout -> Layout -> Layout (* broken ident=0 *) val ( @@- ) : Layout -> Layout -> Layout (* broken ident=1 *) val ( @@-- ) : Layout -> Layout -> Layout (* broken ident=2 *) val commaListL : Layout list -> Layout val spaceListL : Layout list -> Layout val semiListL : Layout list -> Layout val sepListL : Layout -> Layout list -> Layout val bracketL : Layout -> Layout val tupleL : Layout list -> Layout val aboveL : Layout -> Layout -> Layout val aboveListL : Layout list -> Layout val optionL : ('a -> Layout) -> 'a option -> Layout val listL : ('a -> Layout) -> 'a list -> Layout val linkL : string -> Layout -> Layout val squashTo : int -> Layout -> Layout val showL : Layout -> string val outL : TextWriter -> Layout -> unit val bufferL : StringBuilder -> Layout -> unit (* render a Layout yielding an 'a using a 'b (hidden state) type *) type ('a,'b) render = abstract Start : unit -> 'b; abstract AddText : 'b -> string -> 'b; abstract AddBreak : 'b -> int -> 'b; abstract AddTag : 'b -> string * (string * string) list * bool -> 'b; abstract Finish : 'b -> 'a (* Run a render on a Layout *) val renderL : ('b,'a) render -> Layout -> 'b (* Primitive renders *) val stringR : (string,string list) render type NoState = NoState type NoResult = NoResult val channelR : TextWriter -> (NoResult,NoState) render val bufferR : StringBuilder -> (NoResult,NoState) render (* Combinator renders *) val htmlR : ('a,'b) render -> ('a,'b) render (* assumes in
 context *)
val indentR  : int -> ('a,'b) render -> ('a,'b) render
fsharp-3.0.34/src/fsharp/ExtensibleDumper.fs0000775000175000017500000000512212260314606017756 0ustar  chrischrisnamespace Internal.Utilities.Diagnostic
open System
open System.Diagnostics
open System.Reflection
open System.Collections.Generic

#if EXTENSIBLE_DUMPER
#if DEBUG

type internal ExtensibleDumper(x:obj) =
    static let mutable dumpers = new  Dictionary()

    []
    member self.Debug = ExtensibleDumper.Dump(x)

    static member Dump(o:obj) : string = 
        if o = null then "null"
        else 
            let dumpeeType = o.GetType()
            
            let DeriveDumperName(dumpeeType:Type) =
                "Internal.Utilities.Diagnostic." + dumpeeType.Name + "Dumper"            

            match dumpers.TryGetValue(dumpeeType) with 
            | true, Some(dumperType, methodInfo) -> 
                try 
                    let dumper = Activator.CreateInstance(dumperType,[| o |])
                    let result = methodInfo.Invoke(dumper, [||]) 
                    downcast result 
                with e -> "Exception during dump: "+e.Message
            | true, None -> 
                "There is no dumper named "+(DeriveDumperName dumpeeType)+" with single constructor that takes "+dumpeeType.Name+" and property named Dump."
            | false, _ -> 
                let TryAdd(dumpeeType:Type) =
                    let dumperDerivedName = DeriveDumperName(dumpeeType)                     
                    let dumperAssembly = dumpeeType.Assembly // Dumper must live in the same assembly as dumpee
                    let dumperType = dumperAssembly.GetType(dumperDerivedName, (*throwOnError*)false)
                    if dumperType <> null then 
                        let dumpMethod = dumperType.GetMethod("ToString")
                        if dumpMethod <> null then 
                            let constructors = dumperType.GetConstructors()
                            if constructors.Length = 1 then
                                let constr = constructors.[0]
                                let parameters = constr.GetParameters()
                                if parameters.Length = 1 then
                                    dumpers.[o.GetType()] <- Some(dumperType,dumpMethod)
                    dumpers.ContainsKey(o.GetType())       
                           
                if (not(TryAdd(o.GetType()))) then
                    if (not(TryAdd(o.GetType().BaseType))) then 
                        dumpers.[dumpeeType] <- None
                ExtensibleDumper.Dump(o) // Show the message                                                    
                                    



#endif
#endif
fsharp-3.0.34/src/fsharp/Fsc-proto/0000775000175000017500000000000012260314606016016 5ustar  chrischrisfsharp-3.0.34/src/fsharp/Fsc-proto/Makefile.in0000664000175000017500000000145312260314606020066 0ustar  chrischrisNAME=fsc-proto
ASSEMBLY = $(NAME).exe

srcdir := @abs_srcdir@/

include @abs_top_builddir@/config.make

CONFIG=proto

FSC=$(bootstrapdir)fsc.exe

FLAGS += --target:exe

DEFINES += \
	--define:BUILDING_PROTO \
	--define:BUILDING_WITH_LKG \
	--define:COMPILER \
	--define:NO_STRONG_NAMES

REFERENCES += \
	-r:$(bootstrapdir)FSharp.Core.dll \
	-r:$(outdir)FSharp.Compiler-proto.dll \
	-r:$(monogacdirXX)/System.Runtime.Remoting.dll \
	-r:$(monogacdirXX)/System.Windows.Forms.dll

sources = \
	../fscmain.fs

do-proto: do-4-0 $(protodir)FSharp.Core.dll

clean: clean-4-0

include $(topdir)/src/fsharp/targets.make

# We need the bootstrap's FSharp.Core to run the proto
$(protodir)FSharp.Core.dll: $(bootstrapdir)FSharp.Core.dll
	@-mkdir $(protodir)
	cp -p $(bootstrapdir)FSharp.Core.dll $(protodir)FSharp.Core.dll
fsharp-3.0.34/src/fsharp/Fsc-proto/Fsc-proto.fsproj0000775000175000017500000000430712260314606021126 0ustar  chrischris


  
    $(MSBuildProjectDirectory)\..\..
    Proto
  
  
  
    
    x86
    Exe
    $(NoWarn);62
    fsc-proto
    BUILDING_PROTO;BUILDING_WITH_LKG;COMPILER;$(DefineConstants)
    LKG
    {9D7C9060-9263-40EB-8FE3-1E4E3C6D941C}
    true
    $(OtherFlags) --stackReserveSize:4096000
    v4.0
  
  
  
  
  
    
      fscmain.fs
    
  
  
    
    
    
    
    
    
    
      {33E0FB8C-93DC-4AD7-9DCD-9FBDA6C2F061}
      FSharp.Compiler-proto
    
  
  

fsharp-3.0.34/src/fsharp/pars.fsy0000775000175000017500000060235612260314606015651 0ustar  chrischris%{
//----------------------------------------------------------------------------
//
// Copyright (c) 2002-2012 Microsoft Corporation. 
//
// This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
// copy of the license can be found in the License.html file at the root of this distribution. 
// By using this source code in any fashion, you are agreeing to be bound 
// by the terms of the Apache License, Version 2.0.
//
// You must not remove this notice, or any other, from this software.
//----------------------------------------------------------------------------

#nowarn "1182"  // generated code has lots of unused "parseState"

open Internal.Utilities

open Microsoft.FSharp.Compiler.AbstractIL
open Microsoft.FSharp.Compiler.AbstractIL.Internal
open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
open Microsoft.FSharp.Compiler
open Internal.Utilities.Text.Parsing

open System
open Microsoft.FSharp.Compiler.Range
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.Lib
open Microsoft.FSharp.Compiler.PrettyNaming
open Microsoft.FSharp.Compiler.ErrorLogger

#if DEBUG
let debugPrint(s) =
    if Internal.Utilities.Text.Parsing.Flags.debug then 
        printfn "\n%s" s
#else
let debugPrint(s) = ignore s
#endif

let exprFromParseError (e:SynExpr) = SynExpr.FromParseError(e,e.Range)
let patFromParseError (e:SynPat) = SynPat.FromParseError(e, e.Range)

let mkSynOptionalExpr m xopt = 
    match xopt with 
    | None -> mkSynLidGet m Ast.FSharpLib.CorePath "None"
    | Some x  -> SynExpr.App(ExprAtomicFlag.NonAtomic, false, mkSynLidGet m Ast.FSharpLib.CorePath "Some",x,m)

// record bindings returned by the recdExprBindings rule has shape:
// (binding, separator-before-this-binding)
// this function converts arguments from form
// binding1 (binding2*sep1, binding3*sep2...) sepN
// to form
// binding1*sep1, binding2*sep2
let rebindRanges first fields lastSep = 
    let rec run (name, value) l acc = 
        match l with
        | [] -> List.rev ((name, value, lastSep)::acc)
        | (f, m)::xs -> run f xs ((name, value, m)::acc)
    run first fields []

let mkUnderscoreRecdField m = LongIdentWithDots([ident("_", m)], []), false
let mkRecdField lidwd = lidwd, true

let mkSynDoBinding (vis,strict,expr,m) = 
    if isSome vis then errorR(Error(FSComp.SR.parsDoCannotHaveVisibilityDeclarations(),m));
    Binding (None,
             (if strict then DoBinding else StandaloneExpression),
             false,false,[],PreXmlDoc.Empty,SynInfo.emptySynValData,
             (if strict then SynPat.Const(SynConst.Unit,m) else SynPat.Wild m),
             None,expr,m,NoSequencePointAtDoBinding)

let mkSynDoDecl (e: SynExpr) = 
    let spExpr = if IsControlFlowExpression e then NoSequencePointAtDoBinding else SequencePointAtBinding e.Range in
    SynModuleDecl.DoExpr(spExpr, e, e.Range)

let addAttribs attrs p =  SynPat.Attrib(p,attrs,p.Range)


// This function is called by the generated parser code. Returning initiates error recovery 
// It must be called precisely "parse_error_rich"
let parse_error_rich = Some (fun (ctxt: ParseErrorContext<_>) -> 
    errorR(SyntaxError(box ctxt, ctxt.ParseState.LexBuffer.LexemeRange)))

let reportParseErrorAt m s = errorR(Error(s,m))

let unionRangeWithPos (r:range) p =
    let r2 = mkRange r.FileName p p
    unionRanges r r2

let raiseParseErrorAt m s = 
    reportParseErrorAt m s; 
    // This initiates error recovery
    raise RecoverableParseError 

let checkEndOfFileError t = 
  match t with 
  | LexCont.IfDefSkip(_,_,m)                      -> reportParseErrorAt m (FSComp.SR.parsEofInHashIf())
  | LexCont.String (_,m)                          -> reportParseErrorAt m (FSComp.SR.parsEofInString())
  | LexCont.TripleQuoteString (_,m)               -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteString())
  | LexCont.VerbatimString (_,m)                  -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimString())
  | LexCont.Comment (_,_,m)                       -> reportParseErrorAt m (FSComp.SR.parsEofInComment())
  | LexCont.SingleLineComment (_,_,m)             -> reportParseErrorAt m (FSComp.SR.parsEofInComment())
  | LexCont.StringInComment (_,_,m)               -> reportParseErrorAt m (FSComp.SR.parsEofInStringInComment())
  | LexCont.VerbatimStringInComment (_,_,m)       -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimStringInComment())
  | LexCont.TripleQuoteStringInComment (_,_,m)    -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteStringInComment())
  | LexCont.MLOnly (_,m)                          -> reportParseErrorAt m (FSComp.SR.parsEofInIfOcaml())
  | LexCont.EndLine(LexerEndlineContinuation.Skip(_,_,m)) -> reportParseErrorAt m (FSComp.SR.parsEofInDirective())
  | LexCont.EndLine(LexerEndlineContinuation.Token(stack))
  | LexCont.Token(stack) -> 
      match stack with 
      | [] -> ()
      | (_,m) :: _  -> reportParseErrorAt m (FSComp.SR.parsNoHashEndIfFound())

//                BindingSetPreAttrs(letRange, isRec, isUse, builderFunction, wholeRange)
type BindingSet = BindingSetPreAttrs of range * bool * bool * (SynAttributes -> SynAccess option -> SynAttributes * SynBinding list) * range

let mkClassMemberLocalBindings(isStatic,initialRangeOpt,attrs,vis,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,bindingSetRange)) = 
   let ignoredFreeAttrs,decls = declsPreAttrs attrs vis
   let wholeRange = 
       match initialRangeOpt with 
       | None -> bindingSetRange
       | Some m -> unionRanges m bindingSetRange
   if nonNil ignoredFreeAttrs then warning(Error(FSComp.SR.parsAttributesIgnored(),wholeRange));
   if isUse then errorR(Error(FSComp.SR.parsUseBindingsIllegalInImplicitClassConstructors(),wholeRange));
   SynMemberDefn.LetBindings (decls,isStatic,isRec,wholeRange)

let mkLocalBindings (mWhole,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,_),body) = 
   let ignoredFreeAttrs,decls = declsPreAttrs [] None 
   if nonNil ignoredFreeAttrs then warning(Error(FSComp.SR.parsAttributesIgnored(),mWhole));
   SynExpr.LetOrUse (isRec,isUse,decls,body,mWhole) 

let mkDefnBindings (mWhole,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,_bindingSetRange),attrs,vis,attrsm) = 
    if isUse then warning(Error(FSComp.SR.parsUseBindingsIllegalInModules(),mWhole));
    let freeAttrs,decls = declsPreAttrs attrs vis 
    let letDecls = [ SynModuleDecl.Let (isRec,decls,mWhole) ] 
    let attrDecls = if nonNil freeAttrs then [ SynModuleDecl.Attributes (freeAttrs,attrsm) ] else [] 
    attrDecls @ letDecls

let idOfPat m p = 
    match p with 
    | SynPat.Named (SynPat.Wild _,id,false,_,_) -> id 
    | SynPat.LongIdent(LongIdentWithDots([id],_),_,_,_,_,_) -> id
    | _ -> raiseParseErrorAt m (FSComp.SR.parsIntegerForLoopRequiresSimpleIdentifier())

let checkForMultipleAugmentations m a1 a2 = 
    if nonNil a1 && nonNil a2 then raiseParseErrorAt m (FSComp.SR.parsOnlyOneWithAugmentationAllowed());
    a1 @ a2

let grabXmlDoc(parseState:IParseState,elemIdx) = 
    LexbufLocalXmlDocStore.GrabXmlDocBeforeMarker(parseState.LexBuffer,rhs parseState elemIdx)

let unionRangeWithListBy projectRangeFromThing m listOfThing = 
    (m, listOfThing) ||> List.fold (fun m thing -> unionRanges m (projectRangeFromThing thing))

let rangeOfNonNilAttrs(attrs:SynAttributes) =
    (attrs.Head.Range,attrs.Tail) ||> unionRangeWithListBy (fun a -> a.Range)

let rangeOfLongIdent(lid:LongIdent) =
    System.Diagnostics.Debug.Assert(not lid.IsEmpty, "the parser should never produce a long-id that is the empty list") 
    (lid.Head.idRange,lid) ||> unionRangeWithListBy (fun id -> id.idRange) 

%} 

%token  BYTEARRAY
%token  STRING 
%token  KEYWORD_STRING // Like __SOURCE_DIRECTORY__
%token  IDENT 
%token  INFIX_STAR_STAR_OP 
%token  INFIX_COMPARE_OP 
%token  INFIX_AT_HAT_OP 
%token  INFIX_BAR_OP 
%token  PREFIX_OP
%token  INFIX_STAR_DIV_MOD_OP 
%token  INFIX_AMP_OP 
%token  PLUS_MINUS_OP 
%token  ADJACENT_PREFIX_OP 
%token  FUNKY_OPERATOR_NAME

/* bool indicates if INT8 was 'bad' max_int+1, e.g. '128'  */
%token  INT8 
%token  INT16
%token  INT32 INT32_DOT_DOT
%token  INT64

%token  UINT8
%token  UINT16
%token  UINT32
%token  UINT64
%token  UNATIVEINT
%token  NATIVEINT
%token  IEEE32
%token  IEEE64
%token  CHAR
%token  DECIMAL 
%token <(string * string)> BIGNUM
%token  LET YIELD YIELD_BANG 
%token  LESS GREATER /* here the bool indicates if the tokens are part of a type application or type parameter declaration, e.g. C, detected by the lex filter */
%token  PERCENT_OP BINDER 
%token  LQUOTE RQUOTE  RQUOTE_DOT 
%token BAR_BAR UPCAST DOWNCAST NULL RESERVED MODULE NAMESPACE DELEGATE CONSTRAINT BASE
%token AND AS ASSERT OASSERT ASR BEGIN DO DONE DOWNTO ELSE ELIF END DOT_DOT
%token EXCEPTION FALSE FOR FUN FUNCTION IF IN JOIN_IN FINALLY DO_BANG 
%token LAZY OLAZY  MATCH MUTABLE NEW OF 
%token OPEN OR REC THEN TO TRUE TRY TYPE VAL INLINE INTERFACE INSTANCE CONST
%token WHEN WHILE WITH HASH AMP AMP_AMP QUOTE LPAREN RPAREN RPAREN_COMING_SOON RPAREN_IS_HERE STAR COMMA RARROW GREATER_BAR_RBRACK LPAREN_STAR_RPAREN
%token QMARK QMARK_QMARK DOT COLON COLON_COLON COLON_GREATER  COLON_QMARK_GREATER COLON_QMARK COLON_EQUALS SEMICOLON 
%token SEMICOLON_SEMICOLON LARROW EQUALS  LBRACK  LBRACK_BAR  LBRACK_LESS LBRACE
%token LBRACE_LESS BAR_RBRACK GREATER_RBRACE UNDERSCORE
%token BAR RBRACK RBRACE RBRACE_COMING_SOON RBRACE_IS_HERE MINUS DOLLAR
%token GREATER_RBRACK STRUCT SIG 
%token STATIC MEMBER CLASS ABSTRACT OVERRIDE DEFAULT CONSTRUCTOR INHERIT 
%token EXTERN VOID PUBLIC PRIVATE INTERNAL GLOBAL

/* for parser 'escape hatch' out of expression context without consuming the 'recover' token */
%token TYPE_COMING_SOON TYPE_IS_HERE MODULE_COMING_SOON MODULE_IS_HERE

/* for high-precedence tyapps and apps */
%token HIGH_PRECEDENCE_BRACK_APP   /* inserted for f[x], but not f [x] */
%token HIGH_PRECEDENCE_PAREN_APP   /* inserted for f(x) and f(x), but not f (x) */
%token HIGH_PRECEDENCE_TYAPP /* inserted for x, but not x OLET      /* LexFilter #light converts 'LET' tokens to 'OLET' when starting (CtxtLetDecl(blockLet=true)) */
%token  OBINDER /* LexFilter #light converts 'BINDER' tokens to 'OBINDER' when starting (CtxtLetDecl(blockLet=true)) */
%token ODO              /* LexFilter #light converts 'DO' tokens to 'ODO' */
%token ODO_BANG         /* LexFilter #light converts 'DO_BANG' tokens to 'ODO_BANG' */
%token OTHEN            /* LexFilter #light converts 'THEN' tokens to 'OTHEN' */
%token OELSE            /* LexFilter #light converts 'ELSE' tokens to 'OELSE' except if immeditely followed by 'if', when they become 'ELIF' */
%token OWITH            /* LexFilter #light converts SOME (but not all) 'WITH' tokens to 'OWITH' */ 
%token OFUNCTION        /* LexFilter #light converts 'FUNCTION' tokens to 'OFUNCTION' */ 
%token OFUN             /* LexFilter #light converts 'FUN' tokens to 'OFUN' */


%token ORESET           /* LexFilter uses internally to force a complete reset on a ';;' */

%token OBLOCKBEGIN      /* LexFilter #light inserts for:
                                  - just after first '=' or ':' when in 'CtxtModuleHead', i.e. after 'module' and sequence of dot/identifier/access tokens
                                  - just after first '=' when in 'CtxtMemberHead'
                                  - just after first '=' when in 'CtxtType' 
                                  - just after 'do' in any context (when opening CtxtDo)
                                  - just after 'finally' in any context 
                                  - just after 'with' (when opening CtxtWithAsAugment)
                                  - just after 'else' (when opening CtxtElse)
                                  - just after 'then' (when opening CtxtThen)
                                  - just after 'interface' (when pushing CtxtParen(INTERFACE), i.e. next token is DEFAULT | OVERRIDE | INTERFACE | NEW | TYPE | STATIC | END | MEMBER | ABSTRACT  | INHERIT | LBRACK_LESS)
                                  - just after 'class' (when pushing CtxtParen(CLASS)
                                  - just after 'class' 
                           But not when opening these CtxtSeqBlocks:
                                  - just after first non-dot/identifier token past 'namespace' 
                                  - just after first '=' when in 'CtxtLetDecl' or 'CtxtWithAsLet' 
                                  - just after 'lazy' in any context
                                  - just after '->' in any context                                  
                                  - when opening CtxtNamespaceHead, CtxtModuleHead 
                        */
%token OBLOCKSEP        /* LexFilter #light inserts when transforming CtxtSeqBlock(NotFirstInSeqBlock,_,AddBlockEnd) to CtxtSeqBlock(FirstInSeqBlock,_,AddBlockEnd) on exact alignment */

/*    REVIEW: merge OEND, ODECLEND, OBLOCKEND and ORIGHT_BLOCK_END into one token */
%token OEND             /* LexFilter #light inserts when closing CtxtFun, CtxtMatchClauses, CtxtWithAsLet _        */
%token ODECLEND         /* LexFilter #light inserts when closing CtxtDo and CtxtLetDecl(block) */
%token ORIGHT_BLOCK_END /* LexFilter #light inserts when closing CtxtSeqBlock(_,_,AddOneSidedBlockEnd) */
%token OBLOCKEND OBLOCKEND_COMING_SOON OBLOCKEND_IS_HERE       /* LexFilter #light inserts when closing CtxtSeqBlock(_,_,AddBlockEnd) */

%token OINTERFACE_MEMBER /* inserted for non-paranthetical use of 'INTERFACE', i.e. not INTERFACE/END */
%token  ODUMMY

/* These are artificial */
%token  LEX_FAILURE
%token  COMMENT WHITESPACE HASH_LINE HASH_LIGHT INACTIVECODE LINE_COMMENT STRING_TEXT EOF
%token  HASH_IF HASH_ELSE HASH_ENDIF 

%start signatureFile implementationFile interaction 
%type  implementationFile
%type  signatureFile
%type  interaction
%type  ident
%type  typ
%type  tyconSpfns
%type  patternResult
%type  declExpr
%type  minusExpr
%type  appExpr
%type  argExpr
%type  declExprBlock
%type  headBindingPattern
%type  atomicExprAfterType
%type  typedSeqExprBlock
%type  atomicExpr
%type  tyconDefnOrSpfnSimpleRepr
%type <(Ast.SynEnumCase, Ast.SynUnionCase) Choice list> unionRepr
%type  tyconDefnAugmentation
%type  exconDefn
%type  exconCore
%type  moduleDefnsOrExprPossiblyEmptyOrBlock
%type  openDecl
%type  path
%type  pathOp
/*     LESS    GREATER        parsedOk   typeArgs           m for each   mWhole  */
%type  typeArgsActual
/*     LESS    GREATER        typeArgs           m for each   mWhole  */
%type  typeArgsNoHpaDeprecated
%type  typar

/* About precedence rules: 
 * 
 * Tokens and dummy-terminals are given precedence below (lowest first).
 * A rule has precedence of the first token or the dummy terminal given after %prec.
 * The precedence resolve shift/reduce conflicts:
 *   (a) If either rule has no precedence:
 *       S/R: shift over reduce, and
 *       R/R: reduce earlier rule over later rule.
 *   (b) If both rules have precedence:
 *       S/R: choose highest precedence action (precedence of reduce rule vs shift token)
 *            if same precedence: leftassoc gives reduce, rightassoc gives shift, nonassoc error.
 *       R/R: reduce the rule that comes first (textually first in the yacc file)
 *
 * Advice from: http://dinosaur.compilertools.net/yacc/
 *
 *   'Conflicts resolved by precedence are not counted in the number of S/R and R/R
 *    conflicts reported by Yacc. This means that mistakes in the moduleSpfn of
 *    precedences may disguise errors in the input grammar; it is a good idea to be
 *    sparing with precedences, and use them in an essentially ``cookbook'' fashion,
 *    until some experience has been gained'
 *
 * Observation:
 *   It is possible to eliminate conflicts by giving precedence to rules and tokens.
 *   Dummy tokens can be used for the rule and the tokens also need precedence.
 *   The danger is that giving precedence to the tokens may twist the grammar elsewhere.
 *   Maybe it would be good to assign precedence at given locations, e.g.
 *
 *   order: precShort precLong
 *
 *   rule: TokA TokB %@precShort        {action1}     -- assign prec to rule.
 *       | TokA TokB TokC@precLong TokD {action2}     -- assign prec to TokC at this point.
 *
 * Observation: reduce/reduce
 *   If there is a common prefix with a reduce/reduce conflict,
 *   e.g "OPEN path" for topopens and moduleDefns then can factor
 *   opendef = "OPEN path" which can be on both paths.
 *
 * Debugging and checking precedence rules.
 *   - comment out a rule's %prec and see what conflicts are introduced.
 *
 * Dummy terminals (like prec_type_prefix) can assign precedence to a rule.
 * Doc says rule and (shift) token precedence resolves shift/reduce conflict.
 * It seems like dummy terminals can not assign precedence to the shift,
 * but including the tokens in the precedences below will order them.
 * e.g. prec_type_prefix lower precedence than RARROW, LBRACK, IDENT, STAR (all extend types).
 */

/* start with lowest */

%nonassoc prec_args_error             /* less than RPAREN */
%nonassoc prec_atomexpr_lparen_error  /* less than RPAREN */

%right AS

/* prec_wheretyp_prefix = "where typ" lower than extensions, i.e. "WHEN" */
%nonassoc prec_wheretyp_prefix        /* lower than WHEN and RPAREN */
%nonassoc RPAREN RPAREN_COMING_SOON RPAREN_IS_HERE

%right WHEN

/* prec_pat_pat_action = "pattern when expr -> expr"
 * Lower than match extensions - i.e. BAR.
 */
%nonassoc prec_pat_pat_action          /* lower than BAR */

/* "a then b" as an object constructor is very low precedence */
/* Lower than "if a then b" */
%left prec_then_before
%nonassoc prec_then_if 
%left  BAR

%right SEMICOLON  prec_semiexpr_sep OBLOCKSEP
%right prec_defn_sep

/* prec_atompat_pathop = precedence of at atomic pattern, e.g "Constructor".
 * Lower than possible pattern extensions, so "pathOp . extension" does shift not reduce.
 * possible extensions are:
 *  - constant terminals.
 *  - null
 *  - LBRACK = [
 *  - TRUE,FALSE
 */
%nonassoc prec_atompat_pathop
%nonassoc INT8 UINT8 INT16 UINT16 INT32 UINT32 INT64 UINT64 NATIVEINT UNATIVEINT IEEE32 IEEE64 CHAR KEYWORD_STRING STRING BYTEARRAY BIGNUM DECIMAL
%nonassoc LPAREN LBRACE LBRACK_BAR 
%nonassoc TRUE FALSE UNDERSCORE NULL


/* prec_typ_prefix        lower than "T  -> T  -> T" extensions.
 * prec_tuptyp_prefix     lower than "T * T * T * T" extensions.
 * prec_tuptyptail_prefix lower than "T * T * T * T" extensions.
 * Lower than possible extensions:
 *  - STAR, IDENT, RARROW
 *  - LBRACK = [ - for "base[]" types              
 * Shifts not reduces.
 */
%nonassoc prec_typ_prefix             /* lower than STAR, IDENT, RARROW etc */
%nonassoc prec_tuptyp_prefix          /* ditto */
%nonassoc prec_tuptyptail_prefix      /* ditto */
%nonassoc prec_toptuptyptail_prefix      /* ditto */
        
%right    RARROW
%nonassoc IDENT LBRACK

/* prec_opt_attributes_none = precedence of no attributes
 * These can prefix LET-moduleDefns.
 * Committing to an opt_attribute (reduce) forces the decision that a following LET is a moduleDefn.
 * At the top-level, it could turn out to be an expr, so prefer to shift and find out...
 */
%nonassoc prec_opt_attributes_none    /* lower than LET,NEW */

/* LET,NEW higher than SEMICOLON so shift
 *   "seqExpr = seqExpr; . let x = y in z"
 *   "seqExpr = seqExpr; . new...."
 */
%nonassoc LET NEW

       
/* Redundant dummies: expr_let, expr_function, expr_fun, expr_match */
/* Resolves conflict: expr_try, expr_if */
%nonassoc expr_let
%nonassoc decl_let
%nonassoc expr_function expr_fun expr_match expr_try expr_do
%nonassoc decl_match decl_do
%nonassoc expr_if                     /* lower than ELSE to disambiguate "if _ then if _ then _ else _" */
%nonassoc ELSE   

/* prec_atomtyp_path = precedence of atomType "path"
 * Lower than possible extension "path" to allow "path . <" shift.
 * Extensions: LESS
 */
%nonassoc prec_atomtyp_path           /* lower than LESS */
%nonassoc prec_atomtyp_get_path       /* lower than LESS */

/* prec_no_more_attr_bindings = precedence of "moreLocalBindings = ."
 * Lower precedence than AND so further bindings are shifted.
 */
%nonassoc prec_no_more_attr_bindings  /* lower than AND */
%nonassoc OPEN

/* prec_interfaces_prefix - lower than extensions, i.e. INTERFACE */
%nonassoc prec_interfaces_prefix      /* lower than INTERFACE */
%nonassoc INTERFACE

%right LARROW 
%right COLON_EQUALS 
%nonassoc pat_tuple expr_tuple
%left COMMA
%nonassoc slice_comma  /* for matrix.[1..2,3..4] the ".." has higher precedence than "2,3" */
%nonassoc DOT_DOT /* for matrix.[1..2,3..4] the ".." has higher precedence than "2,3" */
%nonassoc paren_pat_colon
%nonassoc paren_pat_attribs
%left OR BAR_BAR JOIN_IN
%left AND   /* check */
%left  AMP AMP_AMP 
%nonassoc pat_conj
%nonassoc expr_not
%left COLON_GREATER  COLON_QMARK_GREATER
%left INFIX_COMPARE_OP DOLLAR LESS GREATER EQUALS  INFIX_BAR_OP INFIX_AMP_OP 
%right INFIX_AT_HAT_OP
%right COLON_COLON
%nonassoc pat_isinst 
%left COLON_QMARK
%left PLUS_MINUS_OP MINUS expr_prefix_plus_minus ADJACENT_PREFIX_OP
%left  INFIX_STAR_DIV_MOD_OP STAR PERCENT_OP
%right INFIX_STAR_STAR_OP
%left  QMARK_QMARK
%left head_expr_adjacent_minus
%left expr_app expr_assert expr_lazy LAZY ASSERT
%left arg_expr_adjacent_minus
%left expr_args
%right matching_bar
%left pat_app
%left pat_args
%left PREFIX_OP
%left DOT QMARK
%left HIGH_PRECEDENCE_BRACK_APP
%left HIGH_PRECEDENCE_PAREN_APP
%left HIGH_PRECEDENCE_TYAPP

%nonassoc prec_interaction_empty

%%

/* F# TopLevel */
/* NOTE: interactions */
/* A SEMICOLON_SEMICOLON (or EOF) will mark the end of all interaction blocks. */
/* The end of interaction blocks must be determined without needing to lookahead one more token. */
/* A lookahead token would be dropped between parser calls. See bug 1027. */

interaction:
  | interactiveItemsTerminator
     { IDefns ($1,lhs parseState) }
  | SEMICOLON 
     { warning(Error(FSComp.SR.parsUnexpectedSemicolon(),rhs parseState 1));
       IDefns ([],lhs parseState) }
  | OBLOCKSEP
     { IDefns ([],lhs parseState) }

hashDirective:
  | HASH IDENT hashDirectiveArgs                            
     { ParsedHashDirective ($2,$3,lhs parseState) }

stringOrKeywordString:
  | STRING { $1 }
  | KEYWORD_STRING { $1 }

hashDirectiveArg: 
  | stringOrKeywordString { $1 }

hashDirectiveArgs: 
  |    
     { [] } 
  | hashDirectiveArgs hashDirectiveArg 
     { $1 @ [$2] }

interactiveTerminator: 
  | SEMICOLON_SEMICOLON {}
  | EOF     {}

/* Represents the sequence of items swallowed in one interaction by F# Interactive */
/* It is important to make this as large as possible given the chunk of input */
/* text. More or less identical to 'moduleDefns' but where SEMICOLON_SEMICOLON is */
/* not part of the grammar of topSeps and HASH interactions are not part of */
/* the swalloed blob, since things like #use must be processed separately. */
/* REVIEW: limiting the input chunks until the next # directive can lead to */ 
/* discrepencies between whole-file type checking in FSI and FSC. */

interactiveItemsTerminator:
  /* Always ends on interactiveTerminator */
  | interactiveTerminator  { [] }
  | interactiveModuleDefns interactiveTerminator { $1 }
  | interactiveExpr        interactiveTerminator { $1 }
  | interactiveHash        interactiveTerminator { $1 }
  | interactiveModuleDefns interactiveSeparators interactiveItemsTerminator { $1 @ $3 }
  | interactiveExpr        interactiveSeparators interactiveItemsTerminator { $1 @ $3 }
  | interactiveHash        interactiveSeparators interactiveItemsTerminator { $1 @ $3 }

interactiveModuleDefns:
  /* One or more moduleDefn. REVIEW: "moduleDefns" logical name, but that is used already */
  | moduleDefn                        { $1 }
  | moduleDefn interactiveModuleDefns { $1 @ $2 }

interactiveExpr:
  | opt_attributes opt_declVisibility declExpr
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(),rhs parseState 3));
        let attrDecls = if nonNil $1 then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] in 
        attrDecls @ [ mkSynDoDecl($3)] }

interactiveHash:      
  | hashDirective { [SynModuleDecl.HashDirective($1,rhs parseState 1)] }
      
/* F# Language Proper */

signatureFile: 
  | fileNamespaceSpecs EOF 
     { checkEndOfFileError $2; $1 }
  | fileNamespaceSpecs error EOF 
     { $1 }

  /* If this rule fires it is kind of catastrophic: error recovery yields no results! */
  /* This will result in NO intellisense for the file! Ideally we wouldn't need this rule */
  /* Note: the compiler assumes there is at least one "fragment", so an empty one is used (see 4488) */
  | error EOF 
     { let emptySigFileFrag = ParsedSigFileFragment.AnonModule([],rhs parseState 1) in 
       ParsedSigFile([],[emptySigFileFrag]) }     

implementationFile: 
  | fileNamespaceImpls EOF 
     { checkEndOfFileError $2; $1 }
  | fileNamespaceImpls error EOF 
     { $1 }

  /* If this rule fires it is kind of catastrophic: error recovery yields no results! */
  /* This will result in NO intellisense for the file! Ideally we wouldn't need this rule */
  /* Note: the compiler assumes there is at least one "fragment", so an empty one is used (see 4488) */
  | error EOF 
     { let emptyImplFileFrag = ParsedImplFileFragment.AnonModule([],rhs parseState 1) in 
       ParsedImplFile([],[emptyImplFileFrag]) }

moduleIntro: 
  | module_keyword opt_access path { $3.Lid,grabXmlDoc(parseState,1),$2 }

namespaceIntro: 
  | NAMESPACE path { $2.Lid,grabXmlDoc(parseState,1)  }

fileNamespaceSpecs: 
  | fileModuleSpec  
      { ParsedSigFile([],[ ($1 ([],PreXmlDoc.Empty)) ]) }
  | fileModuleSpec  fileNamespaceSpecList 
      { // If there are namespaces, the first fileModuleImpl may only contain # directives 
        let decls = 
            match ($1 ([],PreXmlDoc.Empty)) with 
            | ParsedSigFileFragment.AnonModule(decls,m) -> decls  
            | ParsedSigFileFragment.NamespaceFragment(_,_, decls, _,_,_) -> decls 
            | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(_,_,_,_,_,_,m)) ->
                raiseParseErrorAt m (FSComp.SR.parsOnlyHashDirectivesAllowed())
        let decls = 
            decls |> List.collect (function 
                | (SynModuleSigDecl.HashDirective (hd,_)) -> [hd]
                | d ->  
                     reportParseErrorAt d.Range (FSComp.SR.parsOnlyHashDirectivesAllowed());
                     [])
        ParsedSigFile(decls, $2) } 

fileNamespaceSpecList: 
  | fileNamespaceSpec fileNamespaceSpecList { $1 :: $2 }
  | fileNamespaceSpec { [$1] }

fileNamespaceSpec: 
  | namespaceIntro deprecated_opt_equals fileModuleSpec 
     { let path,xml = $1 in ($3 (path,xml)) }

fileNamespaceImpls: 
  | fileModuleImpl   
      { ParsedImplFile([], [ ($1 ([],PreXmlDoc.Empty)) ]) }
  | fileModuleImpl fileNamespaceImplList 
      { // If there are namespaces, the first fileModuleImpl may only contain # directives 
        let decls = 
            match ($1 ([],PreXmlDoc.Empty)) with 
            | ParsedImplFileFragment.AnonModule(decls,m) -> decls  
            | ParsedImplFileFragment.NamespaceFragment(_,_, decls, _,_,_) -> decls 
            | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(_,_,_,_,_,_,m)) ->
                raiseParseErrorAt m (FSComp.SR.parsOnlyHashDirectivesAllowed())
        let decls = 
            decls |> List.collect (function 
                | (SynModuleDecl.HashDirective (hd,_)) -> [hd]
                | d ->  
                     reportParseErrorAt d.Range (FSComp.SR.parsOnlyHashDirectivesAllowed());
                     [])
        ParsedImplFile(decls, $2) } 


fileNamespaceImplList: 
  | fileNamespaceImpl fileNamespaceImplList { $1 :: $2 }
  | fileNamespaceImpl { [$1] }

fileNamespaceImpl: 
  | namespaceIntro deprecated_opt_equals fileModuleImpl 
     { let path,xml = $1 in ($3 (path,xml)) }

fileModuleSpec: 
  | opt_attributes opt_declVisibility  moduleIntro moduleSpfnsPossiblyEmptyBlock 
    { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
      let m2 = rhs parseState 3
      let m = (rhs2 parseState 3 4)
      (fun (path,_) -> 
        if nonNil path then errorR(Error(FSComp.SR.parsNamespaceOrModuleNotBoth(),m2));
        let path2,xml,vis = $3 
        let lid = path@path2 
        ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid,true, $4, xml,$1,vis,m)))  }
  | moduleSpfnsPossiblyEmptyBlock 
    { let m = (rhs parseState 1) 
      (fun (path,xml) -> 
        match path with 
        | [] -> ParsedSigFileFragment.AnonModule($1, m)  
        | _ -> ParsedSigFileFragment.NamespaceFragment(path,false, $1, xml,[],m))  } 

fileModuleImpl: 
  | opt_attributes opt_declVisibility moduleIntro moduleDefnsOrExprPossiblyEmptyOrBlock
    { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
      let m2 = rhs parseState 3
      let m = (m2, $4) ||> unionRangeWithListBy (fun modu -> modu.Range)
      (fun (path,_) -> 
        if nonNil path then errorR(Error(FSComp.SR.parsNamespaceOrModuleNotBoth(),m2));
        let path2,xml,vis = $3 
        let lid = path@path2 
        ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid,true, $4, xml,$1,vis,m))) }
  | moduleDefnsOrExprPossiblyEmptyOrBlock 
    { let m = (rhs parseState 1) 
      (fun (path,xml) -> 
        match path with 
        | [] -> ParsedImplFileFragment.AnonModule($1,m)  
        | _ -> ParsedImplFileFragment.NamespaceFragment(path,false, $1, xml,[],m)) } 

moduleSpfnsPossiblyEmptyBlock: 
  | moduleSpfnsPossiblyEmpty
      { $1 }
  | OBLOCKBEGIN            moduleSpfnsPossiblyEmpty     oblockend  opt_OBLOCKSEP
      { $2 }
  | OBLOCKBEGIN moduleSpfnsPossiblyEmpty recover 
       { // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
         // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight());   
         $2 
       }
  | OBLOCKBEGIN error oblockend                
       { 
         [] 
       }
      
moduleSpfnsPossiblyEmpty: 
  | moduleSpfns
      { $1 }
  | error
      { [] }
  | 
      { [] }
      
moduleSpfns: 
  | moduleSpfn  opt_topSeparators moduleSpfns 
      { $1 :: $3 } 
  | error topSeparators moduleSpfns 
      { (* silent recovery *) $3 }
  | moduleSpfn  opt_topSeparators 
      { [$1] } 


moduleDefnsOrExprPossiblyEmptyOrBlock:
  | OBLOCKBEGIN moduleDefnsOrExprPossiblyEmpty oblockend opt_OBLOCKSEP
     { $2 }
  | OBLOCKBEGIN moduleDefnsOrExprPossiblyEmpty recover 
       { // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
         // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight());   
         $2 
       }
  | OBLOCKBEGIN error oblockend                
       { 
         [] 
       }
  | moduleDefnsOrExprPossiblyEmpty
     { $1 }

moduleDefnsOrExprPossiblyEmpty:
  | moduleDefnsOrExpr
     { $1 }
  | 
     { [] }

/* A naked expression is only allowed at the start of a module/file, or straight after a topSeparators */
moduleDefnsOrExpr:
  | opt_attributes opt_declVisibility declExpr topSeparators moduleDefnsOrExpr 
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(),rhs parseState 3));
        let attrDecls = if nonNil $1 then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] 
        attrDecls @ mkSynDoDecl ($3) :: $5 }
  | opt_attributes opt_declVisibility declExpr topSeparators
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(),rhs parseState 3));
        let attrDecls = if nonNil $1 then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] 
        attrDecls @ [ mkSynDoDecl($3) ] }
  | opt_attributes opt_declVisibility declExpr
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(),rhs parseState 3));
        let attrDecls = if nonNil $1 then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] 
        attrDecls @ [ mkSynDoDecl($3) ] }
  | moduleDefns 
      { $1 } 
  | opt_attributes error
     { if nonNil $1 then [ SynModuleDecl.Attributes ($1, rangeOfNonNilAttrs $1) ] else [] }

moduleDefns:
  | moduleDefnOrDirective moduleDefns 
      { $1 @ $2 } 
  | moduleDefnOrDirective topSeparators moduleDefnsOrExpr 
      {  $1 @ $3 } 
  | moduleDefnOrDirective
      { $1 }
  | moduleDefnOrDirective topSeparators
      { $1 }
  | error topSeparators moduleDefnsOrExpr 
      { $3 } 

moduleDefnOrDirective:
  | moduleDefn 
      { $1  } 
  | hashDirective 
      { [ SynModuleDecl.HashDirective ($1,rhs2 parseState 1 1) ] } 
  /* Recover whenever an error occurs in a moduleDefn */



/* This is used by both "fsi" interactions and "source file" fragments defined by moduleDefns */
moduleDefn:

  | opt_attributes opt_declVisibility defnBindings                   %prec decl_let 
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        parseState.ResetSynArgNameGenerator();
        let (BindingSetPreAttrs(_,_,_,_,mWhole)) = $3 
        mkDefnBindings (mWhole,$3,$1,$2,mWhole)  }

  | opt_attributes opt_declVisibility hardwhiteLetBindings          %prec decl_let 
      { let hwlb,m = $3
        if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        parseState.ResetSynArgNameGenerator();
        mkDefnBindings (m,hwlb,$1,$2,m)  }

  | opt_attributes opt_declVisibility doBinding %prec decl_let 
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let mWhole = rhs parseState 3 
        mkDefnBindings (mWhole,$3,$1,$2,mWhole) }
  
  | opt_attributes opt_declVisibility type_keyword tyconDefn tyconDefnList
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let      (TypeDefn(ComponentInfo(cas   ,a,cs,b,c,d,d2,d3),e,f,g)) = $4
        let tc = (TypeDefn(ComponentInfo($1@cas,a,cs,b,c,d,d2,d3),e,f,g))
        let types = tc :: $5
        [ SynModuleDecl.Types(types, (rhs parseState 3, types) ||> unionRangeWithListBy (fun t -> t.Range) ) ] }

  | opt_attributes opt_declVisibility exconDefn
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let (ExceptionDefn(ExceptionDefnRepr(cas,a,b,c,d,d2),e,f)) = $3 
        let f = (f, $1) ||> unionRangeWithListBy (fun a -> a.Range)
        let ec = (ExceptionDefn(ExceptionDefnRepr($1@cas,a,b,c,d,d2),e,f)) 
        [ SynModuleDecl.Exception(ec, f) ] }

  | opt_attributes opt_declVisibility moduleIntro EQUALS  namedModuleDefnBlock

      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let attribs,(path,xml,vis) = $1,$3 
        match $5 with 
        | Choice1Of2 eqn -> 
            if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
            if List.length path <> 1 then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName());
            if List.length $1 <> 0   then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviation());
            if isSome vis            then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate());
            [ SynModuleDecl.ModuleAbbrev(List.head path,eqn,(rhs parseState 3, eqn) ||> unionRangeWithListBy (fun id -> id.idRange) ) ]
        | Choice2Of2 def -> 
            if List.length path <> 1 then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName());
            let info = ComponentInfo(attribs,[],[],path,xml,false,vis,rhs parseState 3)
            [ SynModuleDecl.NestedModule(info,def,false,(rhs2 parseState 3 4, def) ||> unionRangeWithListBy (fun d -> d.Range) ) ] }

  | attributes recover
      { errorR(Error(FSComp.SR.parsAttributeOnIncompleteCode(),rhs parseState 1))
        [] }

  | openDecl 
      { [SynModuleDecl.Open($1, $1.Range)] }

/* this occurs on the right of a module abbreviation (#light encloses the r.h.s. with OBLOCKBEGIN/OBLOCKEND) */
/* We don't use it in signature files */
namedModuleAbbrevBlock:
  | OBLOCKBEGIN path oblockend 
       { $2.Lid }
  | path 
       { $1.Lid  }
       
namedModuleDefnBlock:
  | OBLOCKBEGIN wrappedNamedModuleDefn oblockend 
       { 
         Choice2Of2 $2 
       }
  | OBLOCKBEGIN wrappedNamedModuleDefn recover
       { // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
         Choice2Of2 $2 
       }
  | OBLOCKBEGIN moduleDefnsOrExpr oblockend 
       { // BUG 2644 FSharp 1.0: 
         // There is an ambiguity here 
         // In particular, consider the following two:

         // module M2 = 
         //    System.DateTime.Now
         // module M2 = 
         //    Microsoft.FSharp.Core.List
         // The second is a module abbreviation , the first a module containing a single expression.
         // This is a bit unfortunate. For F# v1 the resolution is in favour of 
         // the module abbreviation, i.e. anything of the form 
         //    module M2 = ID.ID.ID.ID
         // will be taken as a module abbreviation, regardles of the identifiers themselves.
         // In a later version (Dev11) we could actually try resolving the names 
         // to both expressions and module identifiers and base the resolution of that semantic lookup
         //
         // This is similar to the ambiguitty between 
         //    type X = int
         // and 
         //    type X = OneValue
         // However in that case we do use type name lookup to make the resolution.

         match $2 with 
         | [ SynModuleDecl.DoExpr (_,LongOrSingleIdent(false,LongIdentWithDots(path,_),None,_),_) ] -> 
             Choice1Of2  path
         | _ -> 
             Choice2Of2 $2 
       }
  | OBLOCKBEGIN moduleDefnsOrExpr recover 
       { // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error
         // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight());   
         Choice2Of2 $2 
       }
  | OBLOCKBEGIN error oblockend                
       { 
         Choice2Of2 [] 
       }
  | wrappedNamedModuleDefn 
       {
         Choice2Of2 $1 
        }
  | path 
        {
         Choice1Of2 $1.Lid
        }

wrappedNamedModuleDefn:
  | structOrBegin moduleDefnsOrExprPossiblyEmpty END 
       { $2 }
  | structOrBegin moduleDefnsOrExprPossiblyEmpty recover 
       { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBeginOrStruct());  
         $2 }
  | structOrBegin error END                      
       { [] }

opt_signature :
  | 
       { None }

tyconDefnAugmentation: 
  | WITH classDefnBlock declEnd
     { $2 }
/* opt_sig: { None } | COLON sigOrBegin moduleSpfns END { $3 } */

moduleSpfn: 
  | hashDirective 
      { SynModuleSigDecl.HashDirective ($1,rhs2 parseState 1 1)  } 
  | valSpfn 
      { $1 }

  | opt_attributes opt_declVisibility moduleIntro colonOrEquals namedModuleAbbrevBlock 
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let path,xml,vis = $3 
        if List.length path <> 1 then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName());
        if List.length $1 <> 0   then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviation());
        if isSome(vis)           then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate());
        SynModuleSigDecl.ModuleAbbrev(List.head path,$5,rhs2 parseState 3 5) } 

  | opt_attributes opt_declVisibility  moduleIntro colonOrEquals moduleSpecBlock
      { let path,xml,vis = $3 
        if List.length path <> 1 then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName());
        let info = ComponentInfo($1,[],[],path,xml,false,vis,rhs parseState 3)
        if isSome($2) then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        SynModuleSigDecl.NestedModule(info,$5,rhs2 parseState 3 5) }

  | opt_attributes opt_declVisibility  tyconSpfns 
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let (TypeDefnSig(ComponentInfo(cas,a,cs,b,c,d,d2,d3),e,f,g)),rest = 
           match $3 with
           | [] -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEmptyModuleDefn()) 
           | h::t -> h,t 
        let tc = (TypeDefnSig(ComponentInfo($1@cas,a,cs,b,c,d,d2,d3),e,f,g))in 
        SynModuleSigDecl.Types (tc::rest,rhs parseState 3) } 

  | opt_attributes opt_declVisibility exconSpfn
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let (ExceptionSig(ExceptionDefnRepr(cas,a,b,c,d,d2),e,f)) = $3 
        let ec = (ExceptionSig(ExceptionDefnRepr($1@cas,a,b,c,d,d2),e,f)) 
        SynModuleSigDecl.Exception(ec, rhs parseState 3) }

  | OPEN path { SynModuleSigDecl.Open ($2.Lid, unionRanges (rhs parseState 1) $2.Range) }

valSpfn: 
  | opt_attributes opt_declVisibility VAL opt_attributes opt_inline opt_mutable opt_access nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints opt_literalValue
      { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        let attr1,attr2,isInline,isMutable,vis2,id,doc,explicitValTyparDecls,(ty,arity),konst = ($1),($4),($5),($6),($7),($8),grabXmlDoc(parseState,3),($9),($11),($12) 
        if nonNil attr2 then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(),rhs parseState 4));
        let m = rhs2 parseState 3 11 
        let valSpfn = ValSpfn((attr1@attr2),id,explicitValTyparDecls,ty,arity,isInline,isMutable,doc, vis2,konst,m) 
        SynModuleSigDecl.Val(valSpfn,m)
      }

opt_literalValue: 
  | { None }
  | EQUALS declExpr { Some($2) }
  | EQUALS OBLOCKBEGIN declExpr oblockend { Some($3) }
  
moduleSpecBlock: 
  | OBLOCKBEGIN            moduleSpfns     oblockend { $2 }
  | OBLOCKBEGIN sigOrBegin moduleSpfnsPossiblyEmpty END oblockend { $3 }
  |             sigOrBegin moduleSpfnsPossiblyEmpty END { $2 }

opt_attributes:
  | attributes                                { $1 }
  |            %prec prec_opt_attributes_none { [] }

attributes: 
  | attributeList                     
     { $1 }
  | attributeList attributes
     { $1 @ $2 }

attributeList: 
  | LBRACK_LESS  attributeListElements opt_seps GREATER_RBRACK opt_OBLOCKSEP {  $2 }
  | LBRACK_LESS  error GREATER_RBRACK opt_OBLOCKSEP {  [] }
  | LBRACK_LESS  attributeListElements opt_seps ends_coming_soon_or_recover 
      { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess());
        $2 }
  | LBRACK_LESS  ends_coming_soon_or_recover 
      { if not $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess());
        [] }

attributeListElements: 
  | attribute                     
     { [$1] }
  | attributeListElements seps attribute 
     { $1 @ [$3] }

attribute:
  | path opt_HIGH_PRECEDENCE_APP opt_atomicExprAfterType 
     { let arg = match $3 with None -> mkSynUnit $1.Range | Some e -> e 
       ({ TypeName=$1; ArgExpr=arg; Target=None; AppliesToGetterAndSetter=false; Range=$1.Range } : SynAttribute) }
  | attributeTarget path opt_HIGH_PRECEDENCE_APP opt_atomicExprAfterType 
     { let arg = match $4 with None -> mkSynUnit $2.Range | Some e -> e 
       ({ TypeName=$2; ArgExpr=arg; Target=$1; AppliesToGetterAndSetter=false; Range=$2.Range } : SynAttribute) }
  | attributeTarget OBLOCKBEGIN path oblockend opt_HIGH_PRECEDENCE_APP opt_atomicExprAfterType 
     { let arg = match $6 with None -> mkSynUnit $3.Range | Some e -> e 
       ({ TypeName=$3; ArgExpr=arg; Target=$1; AppliesToGetterAndSetter=false; Range=$3.Range } : SynAttribute) }

attributeTarget: 
  | module_keyword COLON { Some(ident("module",(rhs parseState 1))) } 
  | type_keyword COLON { Some(ident("type",(rhs parseState 1))) } 
  | ident COLON { Some($1) } 
  /* return */
  | YIELD COLON { if $1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSyntaxError());
                  Some(ident("return",(rhs parseState 1))) } 

tyconSpfns:      
  | type_keyword tyconSpfnList 
     { $2 }

tyconSpfnList:  
  | tyconSpfn AND tyconSpfnList 
     { $1 :: $3 } 
  | tyconSpfn 
     { [$1] }

tyconSpfn: 
  | typeNameInfo  EQUALS tyconSpfnRhsBlock 
      { let lhsm = rhs parseState 1 
        $3 lhsm $1 }
  | typeNameInfo  opt_classSpfn       
      { TypeDefnSig($1,SynTypeDefnSigRepr.Simple (SynTypeDefnSimpleRepr.None (lhs parseState),lhs parseState),$2,lhs parseState) }

tyconSpfnRhsBlock: 
  /* This rule allows members to be given for record and union types in the #light syntax */
  /* without the use of 'with' ... 'end'. For example: */
  /*     type R = */
  /*         { a : int } */
  /*         member r.A = a */
  /* It also takes into account that any existing 'with' */
  /* block still needs to be considered and may occur indented or undented from the core type */
  /* representation. */
  | OBLOCKBEGIN  tyconSpfnRhs opt_OBLOCKSEP classSpfnMembers opt_classSpfn oblockend opt_classSpfn  
     { let m = lhs parseState 
       (fun lhsm nameInfo -> 
           $2 lhsm nameInfo (checkForMultipleAugmentations m ($4 @ $5) $7)) }
  | tyconSpfnRhs opt_classSpfn
     { let m = lhs parseState 
       (fun lhsm nameInfo -> 
           $1 lhsm nameInfo $2) }

tyconSpfnRhs: 
  | tyconDefnOrSpfnSimpleRepr 
     { let m = $1.Range 
       (fun lhsm nameInfo augmentation -> 
           TypeDefnSig(nameInfo,SynTypeDefnSigRepr.Simple ($1,m),augmentation,m)) }
  | tyconClassSpfn 
     { let m = lhs parseState 
       let needsCheck,(kind,decls) = $1
       (fun nameRange nameInfo augmentation -> 
           if needsCheck && isNil decls then 
              reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition());
           TypeDefnSig(nameInfo,SynTypeDefnSigRepr.ObjectModel (kind,decls,m),augmentation,m)) }
  | DELEGATE OF topType
     { let m = lhs parseState 
       let ty,arity = $3
       let invoke = SynMemberSig.Member(ValSpfn([],mkSynId m "Invoke",inferredTyparDecls,ty,arity,false,false,PreXmlDoc.Empty,None,None,m),AbstractMemberFlags MemberKind.Member,m) 
       (fun nameRange nameInfo augmentation -> 
           if nonNil augmentation then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType());
           TypeDefnSig(nameInfo,SynTypeDefnSigRepr.ObjectModel (TyconDelegate (ty,arity),[invoke],m),[],m)) }

tyconClassSpfn: 
  | classSpfnBlockKindUnspecified
     { let needsCheck,decls = $1 
       needsCheck,(TyconUnspecified, decls) }
  | classOrInterfaceOrStruct classSpfnBlock END
     { false,($1,$2) }
  | classOrInterfaceOrStruct classSpfnBlock recover 
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct());
       false,($1,$2) }
  | classOrInterfaceOrStruct error END
     { // silent recovery 
       false,($1,[]) }

classSpfnBlockKindUnspecified:
  | OBLOCKBEGIN  classSpfnMembers oblockend 
     { true, $2 }
  | OBLOCKBEGIN  classSpfnMembers recover
     { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature());
       false, $2 }
/* NOTE: these rules enable a 'heavy' syntax to omit the kind of a type. */
  | BEGIN  classSpfnBlock END 
     { false, $2 }
  | BEGIN  classSpfnBlock recover
     { false, $2 }


classSpfnBlock:
  | OBLOCKBEGIN  classSpfnMembers oblockend 
      { $2 }
  | OBLOCKBEGIN  classSpfnMembers recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature());
        $2 }
  | classSpfnMembers 
      { $1 }

/*
classSpfnBlockAtLeastOne:
  | OBLOCKBEGIN  classSpfnMembersAtLeastOne oblockend 
      { $2 }
  | OBLOCKBEGIN  classSpfnMembersAtLeastOne recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature());
        $2 }
  | classSpfnMembersAtLeastOne 
      { $1 }
*/

classSpfnMembers:  
  | classSpfnMembersAtLeastOne 
     { $1 } 
  |  
     { [] }

classSpfnMembersAtLeastOne:  
  | classMemberSpfn opt_seps classSpfnMembers 
     { $1 :: $3 } 

memberFlags: 
  | STATIC MEMBER   { (true,StaticMemberFlags) }  
  | MEMBER          { (false,NonVirtualMemberFlags) }
  | OVERRIDE        { (false,OverrideMemberFlags) }
  | DEFAULT        { (false,OverrideMemberFlags) }

memberSpecFlags: 
  | memberFlags { $1 }  
  | ABSTRACT        { (false,AbstractMemberFlags) }
  | ABSTRACT MEMBER { (false,AbstractMemberFlags) }

classMemberSpfnGetSet:
  | /* EMPTY */ 
    { None, MemberKind.Member }
  | WITH classMemberSpfnGetSetElements 
    { Some (rhs2 parseState 1 2), $2 }
  | OWITH classMemberSpfnGetSetElements OEND
    { Some (rhs2 parseState 1 2), $2 }
  | OWITH classMemberSpfnGetSetElements error
    {  reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith());
       Some (rhs2 parseState 1 2), $2 }


classMemberSpfnGetSetElements:
  | nameop 
    { (let (id:Ident) = $1 
       if id.idText = "get" then MemberKind.PropertyGet 
       else if id.idText = "set" then MemberKind.PropertySet 
       else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) }
  | nameop COMMA nameop
    { let (id:Ident) = $1 
      if not ((id.idText = "get" && $3.idText = "set") ||
              (id.idText = "set" && $3.idText = "get")) then 
         raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired());
      MemberKind.PropertyGetSet }

classMemberSpfn:
  | opt_attributes opt_declVisibility memberSpecFlags opt_inline opt_access nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints classMemberSpfnGetSet opt_literalValue
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       let isInline,doc,vis2,id,explicitValTyparDecls,(ty,arity),optLiteralValue = $4,grabXmlDoc(parseState,3),$5,$6,$7,$9,$11
       let getSetRangeOpt, getSet = $10 
       let getSetAdjuster arity = match arity,getSet with SynValInfo([],_),MemberKind.Member -> MemberKind.PropertyGet | _ -> getSet
       let wholeRange = 
           let m = rhs parseState 3 
           match getSetRangeOpt with 
           | None -> unionRanges m ty.Range
           | Some m2 -> unionRanges m m2
       let valSpfn = ValSpfn($1,id,explicitValTyparDecls,ty,arity, isInline,false,doc, vis2,optLiteralValue,wholeRange)
       let _,flags = $3 
       SynMemberSig.Member(valSpfn, flags (getSetAdjuster arity),wholeRange) }

  | opt_attributes opt_declVisibility interfaceMember appType  
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       SynMemberSig.Interface ($4,unionRanges (rhs parseState 3) ($4).Range) }
  | opt_attributes opt_declVisibility INHERIT appType 
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       SynMemberSig.Inherit ($4,unionRanges (rhs parseState 3) ($4).Range) }
  | opt_attributes opt_declVisibility VAL fieldDecl 
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       let fld = $4 $1 false 
       SynMemberSig.ValField(fld,rhs2 parseState 3 4) }
  | opt_attributes opt_declVisibility STATIC VAL fieldDecl 
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       SynMemberSig.ValField($5 $1 true,rhs2 parseState 3 5) }
  | opt_attributes  opt_declVisibility STATIC type_keyword tyconSpfn 
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       SynMemberSig.NestedType($5,rhs2 parseState 3 5) }
  | opt_attributes opt_declVisibility NEW COLON topTypeWithTypeConstraints  
     { let vis,doc,(ty,valSynInfo) = $2,grabXmlDoc(parseState,3),$5 
       let m = unionRanges (rhs parseState 3) ty.Range 
       let isInline = false 
       let valSpfn = ValSpfn ($1, mkSynId (rhs parseState 3) "new", noInferredTypars, ty, valSynInfo, isInline, false, doc, vis, None, m)
       SynMemberSig.Member(valSpfn, CtorMemberFlags,m) }

typeNameInfo: 
  | opt_attributes tyconNameAndTyparDecls opt_typeConstraints
     { let typars,lid,fixity,tpcs1,vis,xmlDoc = $2 
       let tpcs2 = $3 
       ComponentInfo($1,typars,(tpcs1 @ tpcs2),lid,xmlDoc,fixity,vis,rangeOfLid lid)  }

tyconDefnList:  
  | AND tyconDefn tyconDefnList 
     { $2 :: $3 } 
  |                             
     { [] }

tyconDefn: 
  | typeNameInfo 
     { TypeDefn($1,SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None($1.Range),$1.Range),[],$1.Range) }
  | typeNameInfo EQUALS tyconDefnRhsBlock
     { let nameRange = rhs parseState 1
       let (tcDefRepr:SynTypeDefnRepr),members = $3 nameRange
       let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range
       let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem:SynMemberDefn) -> mem.Range)    
       TypeDefn($1, tcDefRepr, members, mWhole) }
  | typeNameInfo tyconDefnAugmentation
     { let m = (rhs parseState 1, $2) ||> unionRangeWithListBy (fun mem -> mem.Range)
       TypeDefn($1,SynTypeDefnRepr.ObjectModel(TyconAugmentation,[],m),$2,m) }

  | typeNameInfo opt_attributes opt_declVisibility opt_HIGH_PRECEDENCE_APP  simplePatterns optAsSpec EQUALS tyconDefnRhsBlock
     { let vis,spats, az = $3,$5,$6
       let nameRange = rhs parseState 1
       let (tcDefRepr,members) = $8 nameRange
       let (ComponentInfo(_,_,_,lid,_,_,_,_)) = $1 
       let memberCtorPattern = SynMemberDefn.ImplicitCtor (vis,$2,spats,az,rangeOfLid lid)
       let tcDefRepr = 
         match tcDefRepr with
         | SynTypeDefnRepr.ObjectModel (k,cspec,m) -> SynTypeDefnRepr.ObjectModel (k,memberCtorPattern::cspec,m)
         | _ -> reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments()); tcDefRepr
      
       TypeDefn($1,tcDefRepr,members, unionRanges (rhs parseState 1) tcDefRepr.Range)  }

tyconDefnRhsBlock: 
  /* This rule allows members to be given for record and union types in the #light syntax */
  /* without the use of 'with' ... 'end'. For example: */
  /*     type R = */
  /*         { a : int } */
  /*         member r.A = a */
  /* It also takes into account that any existing 'with' */
  /* block still needs to be considered and may occur indented or undented from the core type */
  /* representation. */
  | OBLOCKBEGIN  tyconDefnRhs opt_OBLOCKSEP classDefnMembers opt_classDefn oblockend opt_classDefn  
     { let m = unionRanges (rhs parseState 1) (match $7 with [] -> (match $5 with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) | _ -> (rhs parseState 7))
       (fun nameRange -> $2 nameRange (checkForMultipleAugmentations m ($4 @ $5) $7)) }
  | OBLOCKBEGIN  tyconDefnRhs opt_OBLOCKSEP classDefnMembers opt_classDefn recover
     { if not $6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition())
       let m = unionRanges (rhs parseState 1) (match $5 with [] -> (rhs parseState 4) | _ -> (rhs parseState 5))
       (fun nameRange -> $2 nameRange (checkForMultipleAugmentations m ($4 @ $5) [])) }
  | tyconDefnRhs opt_classDefn
     { let m = rhs parseState 1
       (fun nameRange -> $1 nameRange $2) }

tyconDefnRhs: 
  | tyconDefnOrSpfnSimpleRepr 
     { let m = $1.Range
       (fun nameRange augmentation -> SynTypeDefnRepr.Simple ($1,m),augmentation) }
  | tyconClassDefn 
     { let needsCheck,(kind,decls),mopt = $1 
       let m = match mopt with 
               | None -> (lhs parseState).StartRange // create a zero-width range
               | Some m -> m
       (fun nameRange augmentation -> 
           if needsCheck && isNil decls then 
               reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition());
           SynTypeDefnRepr.ObjectModel (kind,decls,m),augmentation) }
  | DELEGATE OF topType
     { let m = lhs parseState 
       let ty,arity = $3
       (fun nameRange augmentation -> 
           let valSpfn = ValSpfn([],mkSynId m "Invoke",inferredTyparDecls,ty,arity,false,false,PreXmlDoc.Empty,None,None,m) 
           let invoke = SynMemberDefn.AbstractSlot(valSpfn,AbstractMemberFlags MemberKind.Member,m) 
           if nonNil augmentation then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType());
           SynTypeDefnRepr.ObjectModel (TyconDelegate (ty,arity),[invoke],m),[]) }

tyconClassDefn: 
  | classDefnBlockKindUnspecified
     { let needsCheck,decls,mopt = $1 
       needsCheck,(TyconUnspecified, decls),mopt }
  | classOrInterfaceOrStruct classDefnBlock END 
     { let m = (rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range)
       false,($1,$2),Some(m) }
  | classOrInterfaceOrStruct classDefnBlock recover 
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct())
       let m = (rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range)
       false,($1,$2),Some(m) }
  | classOrInterfaceOrStruct error END
     { // silent recovery 
       false,($1,[]),Some(rhs parseState 1) }

classDefnBlockKindUnspecified:
  | OBLOCKBEGIN  classDefnMembers recover
     { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition());
       let mopt =
           match $2 with
           | _::_ -> Some( (rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) )
           | _ -> None
       false,$2,mopt }
  | OBLOCKBEGIN  classDefnMembers oblockend 
     { let mopt =
           match $2 with
           | _::_ -> Some( (rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) )
           | _ -> None
       true, $2, mopt }

classDefnBlock:
  | OBLOCKBEGIN  classDefnMembers recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition());
        $2 }
  | OBLOCKBEGIN  classDefnMembers oblockend 
      { $2 }
  | classDefnMembers 
      { $1 }

/*
classDefnBlockAtLeastOne:
  | OBLOCKBEGIN  classDefnMembersAtLeastOne recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition());
        $2 }
  | OBLOCKBEGIN  classDefnMembersAtLeastOne oblockend 
      { $2 }
  | classDefnMembersAtLeastOne 
      { $1 }
*/

classDefnMembers:  
  | classDefnMembersAtLeastOne
     { $1 }
  /* REVIEW: Error recovery rules that are followed by potentially empty productions are suspicious! */
  | error classDefnMembers 
     { $2 }
  | 
     { [] }
  
classDefnMembersAtLeastOne:  
  | classDefnMember opt_seps classDefnMembers 
     { $1 @  $3 }

classDefnMemberGetSet: 
  | WITH classDefnMemberGetSetElements
     { $2  }
  | OWITH classDefnMemberGetSetElements OEND
     { $2  }
  | OWITH classDefnMemberGetSetElements error
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith());
       $2  }

classDefnMemberGetSetElements: 
  | classDefnMemberGetSetElement 
     { [$1]  }
  | classDefnMemberGetSetElement AND classDefnMemberGetSetElement
     { [$1;$3] }

classDefnMemberGetSetElement: 
  | opt_inline opt_attributes bindingPattern opt_topReturnTypeWithTypeConstraints EQUALS typedSeqExprBlock 
     { let mRhs = ($6 : SynExpr).Range 
       ($1,$2,$3,$4,$6,mRhs) }

memberCore:  
 /* methods and simple getter properties */
  | opt_inline bindingPattern  opt_topReturnTypeWithTypeConstraints EQUALS typedSeqExprBlock  
     {  let mRhs = $5.Range 
        let mWhole = unionRanges (rhs2 parseState 3 4) mRhs 
        let optReturnType = $3 
        let bindingBuilder,mBindLhs = $2 
        (fun vis memFlagsBuilder attrs -> 
             [ SynMemberDefn.Member (bindingBuilder (vis,$1,false,mBindLhs,NoSequencePointAtInvisibleBinding,optReturnType,$5,mRhs,[],attrs,Some(memFlagsBuilder MemberKind.Member)),unionRanges mWhole mBindLhs) ]) }

 /* properties with explicit get/set, also indexer properties */
  | opt_inline bindingPattern  opt_topReturnTypeWithTypeConstraints classDefnMemberGetSet  
     { let mWhole = (rhs parseState 2, $4) ||> unionRangeWithListBy (fun (_,_,_,_,_,m2) -> m2) 
       let propertyNameBindingBuilder,_ = $2 
       let optPropertyType = $3 
       let isMutable = false
       (fun visNoLongerUsed memFlagsBuilder attrs -> 
             let hasGet = ref false
             let hasSet = ref false

             // Iterate over 1 or 2 'get'/'set' entries
             $4 |> List.choose (fun (optInline,optAttrs,(bindingBuilder,mBindLhs),optReturnType,expr,exprm) ->

                   let optInline = $1 || optInline 
                   // optional attributes are only applied to getters and setters
                   // the "top level" attrs will be applied to both
                   let optAttrs = optAttrs |> List.map (fun (a:SynAttribute) -> { a with AppliesToGetterAndSetter=true })
                   let attrs = attrs @ optAttrs
                   
                   let binding = bindingBuilder (visNoLongerUsed,optInline,isMutable,mBindLhs,NoSequencePointAtInvisibleBinding,optReturnType,expr,exprm,[],attrs,Some (memFlagsBuilder MemberKind.Member))
                   let (Binding (vis, _, isInline, _, attrs, doc, valSynData, pv, _, _, mBindLhs, spBind)) = binding 
                   let memberKind = 
                         let getset = 
                               let rec go p = 
                                   match p with 
                                   | SynPat.LongIdent (LongIdentWithDots([id],_),_,_,_,_,_) ->  id.idText
                                   | SynPat.Named (_,nm,_,_,_) ->  nm.idText
                                   | SynPat.Typed (p,_,_) ->  go p
                                   | SynPat.Attrib (p,_,_) ->  go p
                                   | _ -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) 
                               go pv 
                         if getset = "get" then (
                             if !hasGet then 
                                 reportParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired())
                                 None
                             else
                                 hasGet := true
                                 Some MemberKind.PropertyGet
                         ) else if getset = "set" then (
                             if !hasSet then 
                                 reportParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired())
                                 None
                             else
                                 hasSet := true
                                 Some MemberKind.PropertySet
                         ) else 
                             raiseParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired())

                   match memberKind with
                   | None -> None
                   | Some memberKind ->

                   // REVIEW: It's hard not to ignore the optPropertyType type annotation for 'set' properties. To apply it, 
                   // we should apply it to the last argument, but at this point we've already pushed the patterns that 
                   // make up the arguments onto the RHS. So we just always give a warning. 

                   begin match optPropertyType with 
                   | Some _ -> errorR(Error(FSComp.SR.parsTypeAnnotationsOnGetSet(),mBindLhs))
                   | None -> ()
                   end;
                   
                   let optReturnType = 
                       match (memberKind, optReturnType) with 
                       | MemberKind.PropertySet,_ -> optReturnType
                       | _, None -> optPropertyType
                       | _ -> optReturnType 

                   // REDO with the correct member kind 
                   let binding = bindingBuilder(vis,isInline,isMutable,mBindLhs,NoSequencePointAtInvisibleBinding,optReturnType,expr,exprm,[],attrs,Some(memFlagsBuilder memberKind)) 

                   let (Binding (vis, _, isInline, _, attrs, doc, valSynData, pv, rhsRetInfo, rhsExpr, mBindLhs, spBind)) = binding 
                
                   let (SynValData(_,valSynInfo,_)) = valSynData 

                   // Setters have all arguments tupled in their internal TAST form, though they don't appear to be 
                   // tupled from the syntax
                   let memFlags = memFlagsBuilder memberKind

                   let valSynInfo = 
                       let adjustValueArg valueArg = if List.length valueArg = 1 then valueArg else SynInfo.unnamedTopArg

                       match memberKind, valSynInfo, memFlags.IsInstance with 
                       | MemberKind.PropertyGet,SynValInfo ([],_ret),         false
                       | MemberKind.PropertyGet,SynValInfo ([_],_ret), true  -> 
                           raiseParseErrorAt mBindLhs (FSComp.SR.parsGetterMustHaveAtLeastOneArgument()) 

                       | MemberKind.PropertyGet,SynValInfo (thisArg::indexOrUnitArgs::rest,ret), true  -> 
                           if not rest.IsEmpty then reportParseErrorAt mBindLhs (FSComp.SR.parsGetterAtMostOneArgument())
                           SynValInfo ([thisArg; indexOrUnitArgs],ret)

                       | MemberKind.PropertyGet,SynValInfo (indexOrUnitArgs::rest,ret),          false ->
                           if not rest.IsEmpty then reportParseErrorAt mBindLhs (FSComp.SR.parsGetterAtMostOneArgument())
                           SynValInfo ([indexOrUnitArgs],ret)

                       | MemberKind.PropertySet,SynValInfo ([thisArg;valueArg],ret),                 true  -> 
                           SynValInfo ([thisArg; adjustValueArg valueArg],ret)

                       | MemberKind.PropertySet,SynValInfo (thisArg::indexArgs::valueArg::rest,ret), true  -> 
                           if not rest.IsEmpty then reportParseErrorAt mBindLhs (FSComp.SR.parsSetterAtMostTwoArguments())
                           SynValInfo ([thisArg; indexArgs @ adjustValueArg valueArg],ret)

                       | MemberKind.PropertySet,SynValInfo ([valueArg],ret),                         false -> 
                           SynValInfo ([adjustValueArg valueArg],ret)

                       | MemberKind.PropertySet,SynValInfo (indexArgs::valueArg::rest,ret),          _     -> 
                           if not rest.IsEmpty then reportParseErrorAt mBindLhs (FSComp.SR.parsSetterAtMostTwoArguments())
                           SynValInfo ([indexArgs @ adjustValueArg valueArg],ret)

                       | _ -> 
                           // should be unreachable, cover just in case
                           raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidProperty())

                   let valSynData = SynValData(Some(memFlags), valSynInfo,None) 

                   // Fold together the information from the first lambda pattern and the get/set binding
                   // This uses the 'this' variable from the first and the patterns for the get/set binding, 
                   // replacing the get/set identifier. A little gross. 

                   let bindingPatAdjusted, xmlDocAdjusted = 

                       let bindingOuter = propertyNameBindingBuilder(vis,optInline,isMutable,mBindLhs,spBind,optReturnType,expr,exprm,[],attrs,Some(memFlagsBuilder MemberKind.Member))

                       let (Binding (_,_,_,_,_,doc2,_,bindingPatOuter,_,_,_,_)) = bindingOuter 
                       
                   
                       let lidOuter,lidVisOuter = 
                           match bindingPatOuter with 
                           | SynPat.LongIdent (lid,None,None,[],lidVisOuter,m) ->  lid,lidVisOuter
                           | SynPat.Named (_,id,_,visOuter,m) -> LongIdentWithDots([id],[]),visOuter
                           | p -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) 

                       // Merge the visibility from the outer point with the inner point, e.g.
                       //    member   this.Size with  get ()      = m_size
                       
                       let mergeLidVisOuter lidVisInner =
                           match lidVisInner,lidVisOuter with 
                           | None,None -> None
                           | Some lidVisInner,None | None,Some lidVisInner -> Some lidVisInner
                           | Some _, Some _ ->  
                               errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(),mBindLhs));
                               lidVisInner
                   
                       // Replace the "get" or the "set" with the right name
                       let rec go p = 
                           match p with 
                           | SynPat.LongIdent (LongIdentWithDots([id],_),_,tyargs,args,lidVisInner,m) ->  
                               // Setters have all arguments tupled in their internal form, though they don't 
                               // appear to be tupled from the syntax. Somewhat unfortunate
                               let args = 
                                   if id.idText = "set" then 
                                       match args with 
                                       | [SynPat.Paren(SynPat.Tuple (indexPats,_),indexPatRange);valuePat] when id.idText = "set" -> 
                                           [SynPat.Tuple(indexPats@[valuePat],unionRanges indexPatRange valuePat.Range)] 
                                       | [indexPat;valuePat] -> 
                                           [SynPat.Tuple(args,unionRanges indexPat.Range valuePat.Range)] 
                                       | [valuePat] -> 
                                           [valuePat] 
                                       | _ -> 
                                           raiseParseErrorAt m (FSComp.SR.parsSetSyntax())
                                   else 
                                       args
//                               let idTool : Ident list = lidOuter |> List.map (fun (li:Ident) -> ident(li.idText,id.idRange)) |> List.rev |> List.take 1
                               SynPat.LongIdent (lidOuter,Some(id),tyargs,args,mergeLidVisOuter lidVisInner,m)
                           | SynPat.Named (_,nm,_,lidVisInner,m) ->  SynPat.LongIdent (lidOuter,None,None,[],mergeLidVisOuter lidVisInner,m)
                           | SynPat.Typed (p,ty,m) ->  SynPat.Typed(go p,ty,m)
                           | SynPat.Attrib (p,attribs,m) ->  SynPat.Attrib(go p,attribs,m)
                           | SynPat.Wild(m) ->  SynPat.Wild(m)
                           | _ -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) 

                       go pv,PreXmlDoc.Merge doc2 doc

                   Some <| SynMemberDefn.Member (Binding (vis, NormalBinding, isInline, isMutable, attrs, xmlDocAdjusted, valSynData, bindingPatAdjusted, rhsRetInfo, rhsExpr, mBindLhs, spBind),mWhole)))
       }

abstractMemberFlags: 
  | ABSTRACT {} 
  | ABSTRACT MEMBER {} 

classDefnMember:
  | opt_attributes opt_declVisibility classDefnBindings
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       [mkClassMemberLocalBindings(false,None,$1,$2,$3)] }
       
  | opt_attributes opt_declVisibility STATIC classDefnBindings  
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       [mkClassMemberLocalBindings(true,Some (rhs parseState 3),$1,$2,$4)] }
              
  | opt_attributes opt_declVisibility memberFlags memberCore  opt_ODECLEND
     { if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
       let _,flags = $3
       $4 $2 flags $1 }
       
  | opt_attributes opt_declVisibility interfaceMember appType opt_interfaceImplDefn  
     {  if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(),rhs parseState 1));
        if isSome $2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(),rhs parseState 3));
        let mWhole = 
            match $5 with
            | None -> rhs2 parseState 3 4
            | Some(mems) -> (rhs2 parseState 3 4, mems) ||> unionRangeWithListBy (fun (mem:SynMemberDefn) -> mem.Range)
        [ SynMemberDefn.Interface ($4, $5, mWhole) ] }
        
  | opt_attributes opt_declVisibility abstractMemberFlags opt_inline nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints classMemberSpfnGetSet  opt_ODECLEND
     { let ty,arity = $8
       let isInline,doc,id,explicitValTyparDecls = $4,grabXmlDoc(parseState,3),$5,$6
       let getSetRangeOpt, getSet = $9
       let getSetAdjuster arity = match arity,getSet with SynValInfo([],_),MemberKind.Member -> MemberKind.PropertyGet | _ -> getSet
       let wholeRange = 
           let m = rhs parseState 3
           match getSetRangeOpt with 
           | None -> unionRanges m ty.Range
           | Some m2 -> unionRanges m m2
       if isSome $2 then errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(),wholeRange));
       let valSpfn = ValSpfn($1,id,explicitValTyparDecls,ty,arity, isInline,false,doc, None,None,wholeRange)
       [ SynMemberDefn.AbstractSlot(valSpfn,AbstractMemberFlags (getSetAdjuster arity), wholeRange) ] }
       
  | opt_attributes opt_declVisibility inheritsDefn
     {  if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesIllegalOnInherit(),rhs parseState 1));
        if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityIllegalOnInherit(),rhs parseState 1));
        [ $3 ] }
        
  | opt_attributes opt_declVisibility valDefnDecl opt_ODECLEND
     {  if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        $3 None $1 false }
        
  | opt_attributes opt_declVisibility STATIC valDefnDecl opt_ODECLEND
     {  if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        $4 (Some (rhs parseState 3)) $1 true  }

  | opt_attributes opt_declVisibility memberFlags autoPropsDefnDecl opt_ODECLEND
     {  if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2))
        let isStatic, flags = $3
        $4 $1 isStatic flags }

  | opt_attributes opt_declVisibility NEW  atomicPattern optAsSpec EQUALS typedSeqExprBlock opt_ODECLEND
     {  let m = unionRanges (rhs2 parseState 3 6) $7.Range 
        let expr = $7
        let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4],SynInfo.unnamedRetVal), $5) 
        let vis = $2 
        let declPat = SynPat.LongIdent (LongIdentWithDots([mkSynId (rhs parseState 3) "new"],[]),None,Some noInferredTypars,[$4],vis,rhs parseState 3)
        // Check that 'SynPatForConstructorDecl' matches this correctly
        assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false);
        [ SynMemberDefn.Member(Binding (None,NormalBinding,false,false,$1,grabXmlDoc(parseState,3),valSynData, declPat,None,expr,m,NoSequencePointAtInvisibleBinding),m) ] }
        
  | opt_attributes opt_declVisibility STATIC type_keyword tyconDefn 
     {  if isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2));
        [ SynMemberDefn.NestedType($5,None,rhs2 parseState 3 5) ] }

valDefnDecl:
  | VAL opt_mutable opt_access ident COLON  typ 
     {  let mRhs = rhs2 parseState 4 6
        let doc = grabXmlDoc(parseState,4)
        let mValDecl = rhs2 parseState 1 6
        (fun mLeft attribs isStatic -> 
            let mValDecl = match mLeft with None -> mValDecl | Some m -> unionRanges m mValDecl
            let fld = Field(attribs,isStatic,Some $4,$6,$2,doc,$3,mRhs)
            [ SynMemberDefn.ValField(fld, mValDecl) ]) }

autoPropsDefnDecl:
  | VAL opt_mutable opt_access ident opt_typ EQUALS typedSeqExprBlock classMemberSpfnGetSet
     {  let doc = grabXmlDoc(parseState,5)
        let mValDecl = unionRanges (rhs parseState 1) $7.Range
        let mGetSetOpt, getSet = $8
        if $2 then errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet(),rhs parseState 3))
        (fun attribs isStatic flags -> 
            [ SynMemberDefn.AutoProperty(attribs, isStatic, $4, $5, getSet, flags, doc, $3, $7, mGetSetOpt, mValDecl) ]) }


opt_typ:
   | /* EMPTY */ { None } 
   | COLON typ { Some $2 }

   
atomicPatternLongIdent:
  | GLOBAL DOT pathOp  { let (LongIdentWithDots(lid,dotms)) = $3 in (None,LongIdentWithDots(ident(MangledGlobalName,rhs parseState 1)::lid, rhs parseState 2::dotms)) }
  | pathOp { (None,$1) }
  | access pathOp { (Some($1), $2) }

opt_access:
  |        { None }
  | access { Some($1) } 

access:
  | PRIVATE  { SynAccess.Private }
  | PUBLIC   { SynAccess.Public }
  | INTERNAL { SynAccess.Internal }

/* only valid on 'NEW' */
opt_declVisibility:
  | access { Some($1) } 
  |  { None }
  
opt_interfaceImplDefn: 
  | WITH objectImplementationBlock declEnd { Some($2) } 
  |                            { None }

opt_classDefn: 
  | WITH classDefnBlock declEnd { $2 } 
  |                           { [] }

opt_classSpfn: 
  | WITH classSpfnBlock declEnd { $2 } 
  |                    { [] }


inheritsDefn: 
  | INHERIT appTypeNonAtomicDeprecated optBaseSpec
     { let mDecl = unionRanges (rhs parseState 1) (($2): SynType).Range 
       SynMemberDefn.Inherit($2,$3,mDecl) }
  | INHERIT appTypeNonAtomicDeprecated opt_HIGH_PRECEDENCE_APP atomicExprAfterType optBaseSpec
     { let mDecl = unionRanges (rhs parseState 1) $4.Range 
       SynMemberDefn.ImplicitInherit($2,$4,$5,mDecl) }
  | INHERIT ends_coming_soon_or_recover
     { let mDecl = (rhs parseState 1)
       if not $2 then errorR(Error(FSComp.SR.parsTypeNameCannotBeEmpty(), mDecl))
       SynMemberDefn.Inherit(SynType.LongIdent(LongIdentWithDots([], [])), None,mDecl) }

optAsSpec: 
  | asSpec { Some($1) } 
  |        { None }

asSpec: 
  | AS ident { $2 } 

optBaseSpec: 
  | baseSpec { Some($1) } 
  |        { None }

baseSpec: 
  | AS ident 
      { if ($2).idText <> "base" then 
             errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(),rhs2 parseState 1 2)); 
        ident("base",rhs parseState 2) } 
        
  | AS BASE 
      { errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(),rhs2 parseState 1 2)); 
        ident("base",rhs parseState 2) } 


objectImplementationBlock:
  | OBLOCKBEGIN objectImplementationMembers oblockend  
      { $2 }
  | OBLOCKBEGIN objectImplementationMembers recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileObjectMembers());
        $2 }
  | objectImplementationMembers 
      { $1 }

objectImplementationMembers:  
  | objectImplementationMember opt_seps objectImplementationMembers { $1 @  $3 }
  | objectImplementationMember opt_seps { $1 }

objectImplementationMember: 
  | opt_attributes memberOrOverride memberCore opt_ODECLEND
     { $3 None OverrideMemberFlags $1 }
  | opt_attributes memberOrOverride autoPropsDefnDecl opt_ODECLEND
     { $3 $1 false OverrideMemberFlags }
  | opt_attributes memberOrOverride error { [] } 
  | opt_attributes error memberCore opt_ODECLEND { [] }

memberOrOverride: 
  | MEMBER {   } 
  | OVERRIDE {   }


tyconDefnOrSpfnSimpleRepr: 
  | opt_attributes opt_declVisibility path LQUOTE STRING recover     /* type MyAlias = SomeTypeProvider<@"foo">    is a common error, special-case it */
     { errorR(Error(FSComp.SR.parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString(), rhs parseState 4)) 
       SynTypeDefnSimpleRepr.TypeAbbrev (ParserDetail.ThereWereSignificantParseErrorsSoDoNotTypecheckThisNode, SynType.LongIdent($3), unionRanges (rhs parseState 1) $3.Range)  }
  | opt_attributes opt_declVisibility typ
     { if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1));
       if isSome $2 then errorR(Error(FSComp.SR.parsTypeAbbreviationsCannotHaveVisibilityDeclarations(),rhs parseState 2));
       SynTypeDefnSimpleRepr.TypeAbbrev (ParserDetail.Ok, $3, unionRanges (rhs parseState 1) $3.Range) }
  | opt_attributes opt_declVisibility unionRepr
     { if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1));
       let rangesOf3 = $3 |> List.map (function |Choice1Of2(ec)->ec.Range | Choice2Of2(uc)->uc.Range)
       let mWhole = (rhs2 parseState 1 2, rangesOf3) ||> List.fold unionRanges 
       if $3 |> List.exists (function Choice1Of2 _ -> true | _ -> false) then (
           if isSome $2 then errorR(Error(FSComp.SR.parsEnumTypesCannotHaveVisibilityDeclarations(),rhs parseState 2));
           SynTypeDefnSimpleRepr.Enum ($3 |> List.choose (function 
                                              | Choice1Of2 data ->  
                                                Some(data) 
                                              | Choice2Of2(UnionCase(_,_,_,_,_,m)) -> 
                                                errorR(Error(FSComp.SR.parsAllEnumFieldsRequireValues(),m)); None),
                           mWhole)
       ) else 
           SynTypeDefnSimpleRepr.Union ($2, 
                            $3 |> List.choose (function Choice2Of2 data -> Some(data) | Choice1Of2 _ -> failwith "huh?"),
                            mWhole) }
  | opt_attributes opt_declVisibility braceFieldDeclList
     { if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1));
       SynTypeDefnSimpleRepr.Record ($2,$3,lhs parseState) }
  | opt_attributes opt_declVisibility LPAREN inlineAssemblyTyconRepr rparen
     { if nonNil $1 then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1));
       libraryOnlyError (lhs parseState);
       if isSome $2 then errorR(Error(FSComp.SR.parsInlineAssemblyCannotHaveVisibilityDeclarations(),rhs parseState 2));
       $4 }


braceFieldDeclList:
  | LBRACE  recdFieldDeclList rbrace
     { $2 }
  | LBRACE  recdFieldDeclList recover
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()); 
       $2 }
  | LBRACE  error rbrace
     { [] }

inlineAssemblyTyconRepr:
  | HASH stringOrKeywordString opt_HASH 
     { libraryOnlyError (lhs parseState);
       let lhsm = lhs parseState 
       SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (ParseAssemblyCodeType $2 (rhs parseState 2),lhsm) }

classOrInterfaceOrStruct: 
  | CLASS     { TyconClass } 
  | INTERFACE { TyconInterface } 
  | STRUCT    { TyconStruct }

interfaceMember: 
  | INTERFACE { } 
  | OINTERFACE_MEMBER    { }

tyconNameAndTyparDecls:  
  | opt_access path 
      { [], $2.Lid,false,[],$1,grabXmlDoc(parseState,2) }
  | opt_access prefixTyparDecls  path
      { $2, $3.Lid,false,[],$1,grabXmlDoc(parseState,2) }
  | opt_access path postfixTyparDecls 
      { let tps,tpcs = $3 
        tps, $2.Lid,true,tpcs,$1,grabXmlDoc(parseState,2) }

prefixTyparDecls:
  | typar { [ TyparDecl([],$1) ] }
  | LPAREN prefixTyparDeclList rparen {  List.rev $2 }

prefixTyparDeclList: 
  | prefixTyparDeclList COMMA typarDecl { $3 :: $1 } 
  | typarDecl { [$1] }

typarDecl : 
  | opt_attributes typar 
      { TyparDecl($1,$2) }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
postfixTyparDecls: 
  | opt_HIGH_PRECEDENCE_TYAPP LESS prefixTyparDeclList opt_typeConstraints GREATER 
      { if not $2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(),rhs2 parseState 2 5));
        List.rev $3, $4 }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
explicitValTyparDeclsCore: 
  | prefixTyparDeclList COMMA DOT_DOT 
      { (List.rev $1,true) }
  | prefixTyparDeclList 
      { (List.rev $1,false) }
  | 
      { ([],false) }

explicitValTyparDecls: 
  | opt_HIGH_PRECEDENCE_TYAPP LESS explicitValTyparDeclsCore opt_typeConstraints GREATER 
      { if not $2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(),rhs2 parseState 2 5));
        let tps,flex = $3 
        SynValTyparDecls(tps,flex,$4) }

opt_explicitValTyparDecls: 
  | explicitValTyparDecls 
      { $1 } 
  |       
      { SynValTyparDecls([],true,[]) }

opt_explicitValTyparDecls2: 
  | explicitValTyparDecls 
      { Some $1 } 
  |       
      { None }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
opt_typeConstraints:
  |                      
     { [] }
  | WHEN typeConstraints 
     { List.rev $2 }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
typeConstraints: 
  | typeConstraints AND typeConstraint { $3 :: $1 } 
  | typeConstraint { [$1] }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
typeConstraint: 
  | DEFAULT typar COLON typ 
      { libraryOnlyError (lhs parseState); WhereTyparDefaultsToType($2,$4,lhs parseState) }
  | typar COLON_GREATER typ 
      { WhereTyparSubtypeOfType($1,$3,lhs parseState) }
  | typar COLON STRUCT 
      { WhereTyparIsValueType($1,lhs parseState) }
  | typar COLON IDENT STRUCT 
      { if $3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier($3));  
        WhereTyparIsReferenceType($1,lhs parseState) }
  | typar COLON NULL 
      { WhereTyparSupportsNull($1,lhs parseState) }
  | typar COLON LPAREN classMemberSpfn rparen 
      { WhereTyparSupportsMember([ $1 ],$4,lhs parseState) }
  | LPAREN typarAlts rparen COLON LPAREN classMemberSpfn rparen 
      { WhereTyparSupportsMember(List.rev($2),$6,lhs parseState) }
  | typar COLON DELEGATE typeArgsNoHpaDeprecated
      { let _ltm,_gtm,args,_commas,mWhole = $4 in WhereTyparIsDelegate($1, args, unionRanges $1.Range mWhole) }
  | typar COLON IDENT typeArgsNoHpaDeprecated
      { match $3 with 
        | "enum" -> let _ltm,_gtm,args,_commas,mWhole = $4 in WhereTyparIsEnum($1, args, unionRanges $1.Range mWhole)
        | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) }
  | typar COLON IDENT 
      { match $3 with 
        | "comparison" -> WhereTyparIsComparable($1,lhs parseState)
        | "equality" -> WhereTyparIsEquatable($1,lhs parseState)
        | "unmanaged" -> WhereTyparIsUnmanaged($1,lhs parseState)
        | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) }

typarAlts:
	| typarAlts OR typar { $3::$1 }
	| typar { [$1] }	

unionRepr:
  /* Note the next three rules are required to disambiguate this from type x = y */
  /* Attributes can only appear on a single constructor if you've used a | */
  | barAndgrabXmlDoc attrUnionCaseDecls  
     { $2 $1 }
  | firstUnionCaseDeclOfMany barAndgrabXmlDoc attrUnionCaseDecls  
     { $1 :: $3 $2 }
  | firstUnionCaseDecl 
     { [$1] } 

barAndgrabXmlDoc : 
  | BAR { grabXmlDoc(parseState,1) }

attrUnionCaseDecls: 
  | attrUnionCaseDecl barAndgrabXmlDoc attrUnionCaseDecls  { (fun xmlDoc -> $1 xmlDoc  :: $3 $2) } 
  | attrUnionCaseDecl { (fun xmlDoc -> [ $1 xmlDoc ]) }

attrUnionCaseDecl: 
  | opt_attributes opt_access unionCaseName opt_OBLOCKSEP
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2));
        let mDecl = rhs parseState 3
        (fun xmlDoc -> Choice2Of2 (UnionCase ( $1, $3,UnionCaseFields [],xmlDoc,None,mDecl))) 
      } 
  | opt_attributes opt_access unionCaseName OF unionCaseRepr  opt_OBLOCKSEP
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2));
        let mDecl = rhs2 parseState 3 5
        (fun xmlDoc -> Choice2Of2 (UnionCase ( $1, $3,UnionCaseFields $5,xmlDoc,None,mDecl))) 
      } 
  | opt_attributes opt_access unionCaseName COLON topType opt_OBLOCKSEP
      { if isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2));
        libraryOnlyWarning(lhs parseState);
        let mDecl = rhs2 parseState 3 5
        (fun xmlDoc -> Choice2Of2 (UnionCase ( $1, $3,UnionCaseFullType $5,xmlDoc,None,mDecl))) 
      }
  | opt_attributes opt_access unionCaseName EQUALS constant opt_OBLOCKSEP
      { if isSome $2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(),rhs parseState 2));
        let mDecl = rhs2 parseState 3 5
        (fun xmlDoc -> Choice1Of2 (EnumCase ( $1, $3,$5,xmlDoc,mDecl))) 
      } 

/* REVIEW: unify this with operatorName! */
unionCaseName: 
  | nameop  
      { $1 } 
  | LPAREN COLON_COLON rparen  
      {  ident(opNameCons,rhs parseState 2) }  
  | LPAREN LBRACK RBRACK  rparen  
      {  ident(opNameNil,rhs2 parseState 2 3) }  

firstUnionCaseDeclOfMany: 
  | ident opt_OBLOCKSEP
      { 
        Choice2Of2 (UnionCase ( [], $1,UnionCaseFields [],PreXmlDoc.Empty,None,rhs parseState 1)) 
      } 
  | ident EQUALS constant opt_OBLOCKSEP
      { 
        Choice1Of2 (EnumCase ([],$1,$3,PreXmlDoc.Empty,rhs2 parseState 1 3)) 
      }
  | firstUnionCaseDecl opt_OBLOCKSEP
      { $1 }

firstUnionCaseDecl: 
  | ident OF unionCaseRepr  
     { 
       Choice2Of2 (UnionCase ( [],$1,UnionCaseFields $3,PreXmlDoc.Empty,None,rhs2 parseState 1 3)) 
    } 
  | ident EQUALS constant opt_OBLOCKSEP
      { 
        Choice1Of2 (EnumCase ([],$1,$3,PreXmlDoc.Empty,rhs2 parseState 1 3)) 
      }

unionCaseRepr:
  | braceFieldDeclList
     { errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(),lhs parseState)); 
       $1 }
  | appType STAR tupleTypeElements 
     { List.map mkAnonField ($1 :: $3) }
  | appType 
     { [mkAnonField $1] }

recdFieldDeclList: 
  | recdFieldDecl seps recdFieldDeclList 
     { $1 :: $3 } 
  | recdFieldDecl opt_seps           
     { [$1] }

recdFieldDecl: 
  | opt_attributes  fieldDecl
     { let fld = $2 $1 false 
       let (Field(a,b,c,d,e,f,vis,g)) = fld 
       if isSome vis then errorR(Error(FSComp.SR.parsRecordFieldsCannotHaveVisibilityDeclarations(),rhs parseState 2));
       Field(a,b,c,d,e,f,None,g)  }

fieldDecl: 
  | opt_mutable opt_access ident COLON  typ 
     { let mRhs = rhs2 parseState 3 5 
       let xmlDoc = grabXmlDoc(parseState,3)
       (fun attrs stat -> Field(attrs, stat,Some $3,$5,$1,xmlDoc,$2,mRhs)) }


exconDefn: 
  | exconCore opt_classDefn 
     { ExceptionDefn($1,$2, ($1.Range,$2) ||> unionRangeWithListBy (fun cd -> cd.Range) ) }

exconSpfn: 
  | exconCore opt_classSpfn 
     { ExceptionSig($1,$2,lhs parseState) }
  
exceptionAndGrabDoc:
  | EXCEPTION { grabXmlDoc(parseState,1) }
  
exconCore: 
  | exceptionAndGrabDoc opt_attributes opt_access exconIntro exconRepr 
     { ExceptionDefnRepr($2,$4,$5,$1,$3,(match $5 with None -> rhs2 parseState 1 4 | Some p -> unionRanges (rangeOfLongIdent p) (rhs2 parseState 1 4))) }
  
exconIntro: 
  | ident 
      { UnionCase ( [], $1,UnionCaseFields [],PreXmlDoc.Empty,None,lhs parseState) }
  | ident OF unionCaseRepr 
      { UnionCase ( [], $1,UnionCaseFields $3,PreXmlDoc.Empty,None,lhs parseState) }

exconRepr: 
  |             { None }
  | EQUALS path { Some ($2.Lid) }

openDecl:  
  |  OPEN path { $2 }

defnBindings: 
  | LET opt_rec localBindings 
      { let mLetKwd = rhs parseState 1 
        let isUse = $1
        let isRec = $2 
        let localBindingsLastRangeOpt, localBindingsBuilder = $3
        
        // Calculate the precise range of the binding set, up to the end of the last r.h.s. expression
        let bindingSetRange = 
            match localBindingsLastRangeOpt with 
            | None -> rhs2 parseState 1 2 (* there was some error - this will be an approximate range *)
            | Some lastRange -> unionRanges mLetKwd lastRange

        // The first binding swallows any attributes prior to the 'let'
        BindingSetPreAttrs(mLetKwd,isRec,isUse,
            (fun attrs vis -> 
                // apply the builder
                let binds = localBindingsBuilder attrs vis mLetKwd 
                if not isRec && List.length binds > 1 then 
                      reportParseErrorAt mLetKwd (FSComp.SR.parsLetAndForNonRecBindings()); 
                [],binds), 
            bindingSetRange) }
  | cPrototype
      { let bindRange = lhs parseState
        BindingSetPreAttrs(bindRange, false,false,$1,bindRange)  }

doBinding:
  | DO typedSeqExprBlock 
      { let mDoKwd = rhs parseState 1 
        let mWhole = unionRanges mDoKwd $2.Range
        // any attributes prior to the 'let' are left free, e.g. become top-level attributes 
        // associated with the module, 'main' function or assembly depending on their target 
        BindingSetPreAttrs(mDoKwd,false,false,(fun attrs vis -> attrs,[mkSynDoBinding (vis,true,$2,mWhole)]), mWhole) }


hardwhiteLetBindings: 
  | OLET opt_rec localBindings hardwhiteDefnBindingsTerminator
      { let mLetKwd = rhs parseState 1 
        let isUse = $1
        let isRec = $2
        $4 (if isUse then "use" else "let") mLetKwd;  // report unterminated error 
        
        let localBindingsLastRangeOpt, localBindingsBuilder = $3
        
        // Calculate the precise range of the binding set, up to the end of the last r.h.s. expression
        let bindingSetRange = 
            match localBindingsLastRangeOpt with 
            | None -> rhs parseState 1 (* there was some error - this will be an approximate range *)
            | Some lastRange -> unionRanges mLetKwd lastRange

        // the first binding swallow any attributes prior to the 'let' 
        BindingSetPreAttrs(mLetKwd,isRec,isUse,
          (fun attrs vis -> 
            let binds = localBindingsBuilder attrs vis mLetKwd 
            if not isRec && List.length binds > 1 then 
                    reportParseErrorAt mLetKwd (FSComp.SR.parsLetAndForNonRecBindings()); 
            [],binds),
          bindingSetRange), (unionRanges mLetKwd bindingSetRange) }

hardwhiteDoBinding: 
  | ODO typedSeqExprBlock hardwhiteDefnBindingsTerminator          
      { let mLetKwd = rhs parseState 1 
        let bindingSetRange = unionRanges mLetKwd $2.Range 
        let seqPt = NoSequencePointAtDoBinding 
        // any attributes prior to the 'let' are left free, e.g. become top-level attributes 
        // associated with the module, 'main' function or assembly depending on their target 
        BindingSetPreAttrs(mLetKwd,false,false,(fun attrs vis -> attrs,[mkSynDoBinding (vis,true,$2,bindingSetRange)]),bindingSetRange), $2 }

classDefnBindings: 
  | defnBindings { $1 }
  | doBinding { $1 }
  | hardwhiteLetBindings { let b,m = $1 in b } 
  | hardwhiteDoBinding  { fst $1 }


hardwhiteDefnBindingsTerminator:
  |  ODECLEND
     { (fun _ m -> ()) }
  |  recover 
     { (fun kwd m -> reportParseErrorAt m (match kwd with 
                                           | "let!" -> FSComp.SR.parsUnmatchedLetBang() 
                                           | "use!" -> FSComp.SR.parsUnmatchedUseBang() 
                                           | "use" -> FSComp.SR.parsUnmatchedUse() 
                                           | _ (*"let" *) -> FSComp.SR.parsUnmatchedLet()))  }

cPrototype: 
  | EXTERN cRetType opt_access ident opt_HIGH_PRECEDENCE_APP LPAREN cArgs rparen 
      { let rty,vis,nm,args  = $2,$3,$4,$7 
        let xmlDoc = grabXmlDoc(parseState,1) 
        let nmm = rhs parseState 3 
        let argsm = rhs parseState 6 
        let mBindLhs = lhs parseState
        let mWhole = lhs parseState
        let mRhs = lhs parseState 
        let rhsExpr = SynExpr.App(ExprAtomicFlag.NonAtomic,
                                  false, 
                                  SynExpr.Ident(ident("failwith",rhs parseState 6)),
                                  SynExpr.Const(SynConst.String("extern was not given a DllImport attribute",rhs parseState 8),rhs parseState 8),
                                  mRhs)
        (fun attrs vis -> 
            let bindingId = SynPat.LongIdent (LongIdentWithDots([nm],[]), None, Some noInferredTypars, [SynPat.Tuple(args,argsm)], vis, nmm)
            let binding = mkSynBinding 
                              (xmlDoc, bindingId) 
                              (vis, false, false, mBindLhs, NoSequencePointAtInvisibleBinding, Some rty ,rhsExpr, mRhs, [], attrs, None)
            [], [binding]) }

cArgs: 
  | cMoreArgs 
     { List.rev $1 }
  | cArg 
     { [$1] }
  |       
     { [] }
  
cMoreArgs: 
  | cMoreArgs COMMA cArg 
     { $3 :: $1 }
  | cArg COMMA cArg 
     { [$3; $1] }

cArg: 
  | opt_attributes cType       
     { let m = lhs parseState in SynPat.Typed(SynPat.Wild m,$2,m) |> addAttribs $1 }
  | opt_attributes cType ident 
     { let m = lhs parseState in SynPat.Typed(SynPat.Named (SynPat.Wild m,$3,false,None,m),$2,m) |> addAttribs $1 }

cType: 
  | path      
     { let m = $1.Range
       SynType.App(SynType.LongIdent($1),None,[],[],None,false,m) } 

  | cType opt_HIGH_PRECEDENCE_APP LBRACK RBRACK 
     { let m = lhs parseState 
       SynType.App(SynType.LongIdent(LongIdentWithDots([ident("[]",m)],[])),None,[$1],[],None,true,m) } 

  | cType STAR 
     { let m = lhs parseState 
       SynType.App(SynType.LongIdent(LongIdentWithDots([ident("nativeptr",m)],[])),None,[$1],[],None,true,m) } 

  | cType AMP  
     { let m = lhs parseState 
       SynType.App(SynType.LongIdent(LongIdentWithDots([ident("byref",m)],[])),None,[$1],[],None,true,m) } 

  | VOID STAR 
     { let m = lhs parseState 
       SynType.App(SynType.LongIdent(LongIdentWithDots([ident("nativeint",m)],[])),None,[],[],None,true,m) } 

cRetType: 
  | opt_attributes cType 
     { SynReturnInfo(($2,SynArgInfo($1,false,None)),rhs parseState 2) }
  | opt_attributes VOID  
     { let m = rhs parseState 2 
       SynReturnInfo((SynType.App(SynType.LongIdent(LongIdentWithDots([ident("unit",m)],[])),None,[],[],None,false,m),SynArgInfo($1,false,None)),m) } 


localBindings: 
  | attr_localBinding moreLocalBindings 
      { let (moreBindings, moreBindingRanges) = List.unzip $2
        let moreLocalBindingsLastRange = if moreBindingRanges.IsEmpty then None else Some (List.last moreBindingRanges)
        match $1 with 
        | Some (localBindingRange,attrLocalBindingBuilder) -> 
           let lastRange = 
               match moreLocalBindingsLastRange with 
               | None -> localBindingRange 
               | Some m -> m
           Some lastRange, (fun attrs vis mLetKwd -> attrLocalBindingBuilder attrs vis mLetKwd true ::  moreBindings)
        | None -> 
           moreLocalBindingsLastRange, (fun _attrs _vis _letm -> moreBindings) }

moreLocalBindings: 
  | AND attr_localBinding moreLocalBindings 
      { let mLetKwd = rhs parseState 1
        (match $2 with 
         | Some (localBindingRange,attrLocalBindingBuilder) -> (attrLocalBindingBuilder [] None mLetKwd false,localBindingRange) :: $3 
         | None -> $3) }
  | %prec prec_no_more_attr_bindings 
      { [] }

attr_localBinding: 
  | opt_attributes localBinding 
      { let attrs2 = $1
        let localBindingRange,localBindingBuilder = $2
        let attrLocalBindingBuilder = (fun attrs vis mLetKwd _ -> localBindingBuilder (attrs@attrs2) vis mLetKwd)
        Some(localBindingRange,attrLocalBindingBuilder) }
  | error 
      { None }

localBinding: 
  | opt_inline opt_mutable bindingPattern  opt_topReturnTypeWithTypeConstraints EQUALS  typedExprWithStaticOptimizationsBlock 
      { let (expr:SynExpr),opts = $6
        let eqm = rhs parseState 5 
        let mRhs = expr.Range 
        let optReturnType = $4 
        let bindingBuilder, mBindLhs = $3 
        let localBindingRange = unionRanges (rhs2 parseState 3 5) mRhs
        let localBindingBuilder = 
          (fun attrs vis mLetKwd -> 
            let mWhole = unionRanges mLetKwd mRhs
            let spBind = if IsControlFlowExpression expr then NoSequencePointAtLetBinding else SequencePointAtBinding(mWhole)
            bindingBuilder (vis,$1,$2,mBindLhs,spBind,optReturnType,expr,mRhs,opts,attrs,None))
        localBindingRange,localBindingBuilder }
  | opt_inline opt_mutable bindingPattern  opt_topReturnTypeWithTypeConstraints EQUALS  error
      { let mWhole = rhs2 parseState 3 5 
        let mRhs = rhs parseState 5
        let optReturnType = $4 
        let bindingBuilder,mBindLhs = $3 
        let localBindingBuilder = 
          (fun attrs vis mLetKwd -> 
            let spBind = SequencePointAtBinding(unionRanges mLetKwd mRhs)
            let eqm = rhs parseState 5
            let zeroWidthAtEnd = eqm.EndRange
            bindingBuilder (vis,$1,$2,mBindLhs,spBind,optReturnType,arbExpr("localBinding1",zeroWidthAtEnd),mRhs,[],attrs,None))  
        mWhole,localBindingBuilder }
  | opt_inline opt_mutable bindingPattern  opt_topReturnTypeWithTypeConstraints recover
      { if not $5 then reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsUnexpectedEndOfFileDefinition())
        let optReturnType = $4 
        let mWhole = match optReturnType with None -> rhs parseState 3 | Some _ -> rhs2 parseState 3 4
        let mRhs = mWhole.EndRange  // zero-width range at end of last good token
        let bindingBuilder,mBindLhs = $3 
        let localBindingBuilder = 
          (fun attrs vis mLetKwd -> 
            let spBind = SequencePointAtBinding(unionRanges mLetKwd mRhs)
            bindingBuilder (vis,$1,$2,mBindLhs,spBind,optReturnType,arbExpr("localBinding2",mRhs),mRhs,[],attrs,None))  
        mWhole,localBindingBuilder }

/* REVIEW: this should probably be an expression form rather than tied to this particular part of the grammar */
typedExprWithStaticOptimizationsBlock: 
  | OBLOCKBEGIN typedExprWithStaticOptimizations oblockend 
      { $2 }
  | OBLOCKBEGIN typedExprWithStaticOptimizations recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFile());
        let a,b = $2
        (exprFromParseError a, b) }
  | typedExprWithStaticOptimizations 
      { $1 }

typedExprWithStaticOptimizations : 
  | typedSeqExpr opt_staticOptimizations { $1, List.rev $2 }

opt_staticOptimizations: 
  | opt_staticOptimizations staticOptimization { $2 :: $1 } 
  | { [] }

staticOptimization: 
  | WHEN staticOptimizationConditions EQUALS typedSeqExprBlock { ($2,$4) }

staticOptimizationConditions: 
  | staticOptimizationConditions AND staticOptimizationCondition { $3 :: $1 } 
  | staticOptimizationCondition { [$1 ] }

staticOptimizationCondition: 
  | typar COLON typ { WhenTyparTyconEqualsTycon($1,$3,lhs parseState) }
  | typar STRUCT { WhenTyparIsStruct($1,lhs parseState) }

rawConstant: 
  | INT8 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideEightBitSigned(), lhs parseState));
           SynConst.SByte (fst $1) } 
  | UINT8 { SynConst.Byte $1 } 
  | INT16 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideSixteenBitSigned(), lhs parseState));
            SynConst.Int16 (fst $1) } 
  | UINT16 { SynConst.UInt16 $1 } 
  | INT32 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState));
            SynConst.Int32 (fst $1) } 
  | UINT32 { SynConst.UInt32 $1 } 
  | INT64 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideSixtyFourBitSigned(), lhs parseState));
            SynConst.Int64 (fst $1) } 
  | UINT64 { SynConst.UInt64 $1 } 
  | NATIVEINT { SynConst.IntPtr $1 } 
  | UNATIVEINT { SynConst.UIntPtr $1 } 
  | IEEE32 { SynConst.Single $1 } 
  | IEEE64 { SynConst.Double $1 } 
  | CHAR { SynConst.Char $1 } 
  | DECIMAL { SynConst.Decimal $1 } 
  | BIGNUM { SynConst.UserNum $1 } 
  | stringOrKeywordString { SynConst.String ($1,lhs parseState) } 
  | BYTEARRAY { SynConst.Bytes ($1,lhs parseState) }

constant: 
  | rawConstant { $1 }
  | rawConstant HIGH_PRECEDENCE_TYAPP measureTypeArg { SynConst.Measure($1, $3) }

bindingPattern:
  | headBindingPattern   
      {  let xmlDoc = grabXmlDoc(parseState,1)
         mkSynBinding (xmlDoc,$1), rhs parseState 1 }

/* sp = v | sp:typ | attrs sp */
simplePattern:
  | ident 
      { SynSimplePat.Id ($1,None,false,false,false,rhs parseState 1) }
  | QMARK ident 
      { SynSimplePat.Id ($2,None,false,false,true,rhs parseState 2) }
  | simplePattern COLON typeWithTypeConstraints
      { let lhsm = lhs parseState 
        SynSimplePat.Typed($1,$3,lhsm) }
  | attributes simplePattern %prec paren_pat_attribs
      { let lhsm = lhs parseState 
        SynSimplePat.Attrib($2,$1,lhsm) }

simplePatternCommaList:
  | simplePattern 
      { [$1] }
  | simplePattern COMMA simplePatternCommaList 
      { $1 :: $3 }

simplePatterns:
  | LPAREN simplePatternCommaList rparen 
      { $2 }
  | LPAREN rparen 
      { [] }
  | LPAREN simplePatternCommaList recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()); 
        [] }
  | LPAREN error rparen 
      { (* silent recovery *) [] }
  | LPAREN recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()); 
        [] }  


headBindingPattern:
  | headBindingPattern AS ident 
      { SynPat.Named ($1,$3,false,None,rhs2 parseState 1 3) }
  | headBindingPattern BAR headBindingPattern  
      { SynPat.Or($1,$3,rhs2 parseState 1 3) }
  | headBindingPattern COLON_COLON  headBindingPattern 
      { SynPat.LongIdent (LongIdentWithDots(mkSynCaseName (rhs parseState 2) opNameCons,[]), None, None,[SynPat.Tuple ([$1;$3],rhs2 parseState 1 3)],None,lhs parseState) }
  | tuplePatternElements  %prec pat_tuple 
      { SynPat.Tuple(List.rev $1, lhs parseState) }
  | conjPatternElements   %prec pat_conj
      { SynPat.Ands(List.rev $1, lhs parseState) }
  | constrPattern 
      { $1 }

tuplePatternElements: 
  | tuplePatternElements COMMA headBindingPattern 
      { $3 :: $1 }
  | headBindingPattern COMMA headBindingPattern 
      { $3 :: $1 :: [] }

conjPatternElements: 
  | conjPatternElements AMP headBindingPattern 
      { $3 :: $1 }
  | headBindingPattern AMP headBindingPattern 
      { $3 :: $1 :: [] }

constrPattern:
  | atomicPatternLongIdent explicitValTyparDecls                                                          
      { let vis,lid = $1 in SynPat.LongIdent (lid,None,Some $2,[],vis,lhs parseState) }
  | atomicPatternLongIdent opt_explicitValTyparDecls2                     atomicPatterns    %prec pat_app 
      { let vis,lid = $1 in SynPat.LongIdent (lid,None,$2,$3,vis,lhs parseState) }
  | atomicPatternLongIdent opt_explicitValTyparDecls2 HIGH_PRECEDENCE_PAREN_APP atomicPatterns                  
      { let vis,lid = $1 in SynPat.LongIdent (lid,None,$2,$4,vis,lhs parseState) }
  | atomicPatternLongIdent opt_explicitValTyparDecls2 HIGH_PRECEDENCE_BRACK_APP atomicPatterns                  
      { let vis,lid = $1 in SynPat.LongIdent (lid,None,$2,$4,vis,lhs parseState) }
  | COLON_QMARK atomType  %prec pat_isinst 
      { SynPat.IsInst($2,lhs parseState) }
  | atomicPattern 
      { $1 }

atomicPatterns: 
  | atomicPattern atomicPatterns %prec pat_args 
      { $1 :: $2 } 
  | atomicPattern HIGH_PRECEDENCE_BRACK_APP atomicPatterns 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled());
        $1 :: $3 } 
  | atomicPattern HIGH_PRECEDENCE_PAREN_APP atomicPatterns 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled());
        $1 :: $3 } 
  | atomicPattern { [$1] }


atomicPattern:
  | quoteExpr 
      { SynPat.QuoteExpr($1,lhs parseState) } 
  | CHAR DOT_DOT CHAR { SynPat.DeprecatedCharRange ($1,$3,rhs2 parseState 1 3) }
  | LBRACE recordPatternElements rbrace
      { $2 }
  | LBRACK listPatternElements RBRACK
      { SynPat.ArrayOrList(false,$2,lhs parseState) }
  | LBRACK_BAR listPatternElements  BAR_RBRACK
      { SynPat.ArrayOrList(true,$2, lhs parseState) }
  | UNDERSCORE 
      { SynPat.Wild (lhs parseState) }
  | QMARK ident 
      { SynPat.OptionalVal($2,lhs parseState) } 
  | atomicPatternLongIdent %prec prec_atompat_pathop 
      { let vis,lidwd = $1 
        if List.length lidwd.Lid > 1 || (let c = (List.head lidwd.Lid).idText.[0] in Char.IsUpper(c) && not (Char.IsLower c)) 
        then mkSynPatMaybeVar lidwd vis (lhs parseState)
        else mkSynPatVar vis (List.head lidwd.Lid) }
  | constant 
      { SynPat.Const ($1,$1.Range (lhs parseState)) }
  | FALSE  
      { SynPat.Const(SynConst.Bool false,lhs parseState) } 
  | TRUE  
      { SynPat.Const(SynConst.Bool true,lhs parseState) } 
  | NULL 
      { SynPat.Null(lhs parseState) }
  | LPAREN parenPatternBody rparen 
      { let m = (lhs parseState)
        SynPat.Paren($2 m,m) } 
  | LPAREN parenPatternBody recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()); 
        patFromParseError ($2 (rhs2 parseState 1 2)) }
  | LPAREN error rparen 
      { (* silent recovery *) SynPat.Wild (lhs parseState) }
  | LPAREN recover 
      {  reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()); 
         SynPat.Wild (lhs parseState)}  

  
      
parenPatternBody: 
  | parenPattern 
      { (fun m -> $1) } 
  |      
      { (fun m -> SynPat.Const(SynConst.Unit,m)) } 

/* This duplicates out 'patterns' in order to give type annotations */
/* the desired precedence w.r.t. patterns, tuple patterns in particular. */
/* Duplication requried to minimize the disturbance to the grammar, */
/* in particular the expected property that "pat" parses the same as */
/* "(pat)"!  Here are some examples: */
/*    a,b                  parses as (a,b) */
/*    (a,b)           also parses as (a,b) */
/*    (a,b : t)            parses as (a, (b:t)) */
/*    a,b as t             parses as ((a,b) as t) */
/*    (a,b as t)      also parses as ((a,b) as t) */
/*    a,b | c,d            parses as ((a,b) | (c,d)) */
/*    (a,b | c,d)     also parses as ((a,b) | (c,d)) */
/*    (a : t,b)            parses as ((a:t),b) */
/*    (a : t1,b : t2)      parses as ((a:t),(b:t2)) */
/*    (a,b as nm : t)      parses as (((a,b) as nm) : t) */
/*    (a,b :: c : t)       parses as (((a,b) :: c) : t) */
/* */
/* Probably the most unexpected thing here is that 'as nm' binds the */
/* whole pattern to the left, whereas ': t' binds only the pattern */
/* immediately preceding in the tuple. */
/* */
/* Also, it is unexpected that '(a,b : t)' in a pattern binds differently to */
/* '(a,b : t)' in an expression. It's not that easy to solve that without */
/* duplicating the entire expression grammar, or making a fairly severe breaking change */
/* to the language. */
parenPattern:
  | parenPattern AS ident 
      { SynPat.Named ($1,$3,false,None,rhs2 parseState 1 3) }
  | parenPattern BAR parenPattern  
      { SynPat.Or($1,$3,rhs2 parseState 1 3) }
  | tupleParenPatternElements 
      { SynPat.Tuple(List.rev $1,lhs parseState) }
  | conjParenPatternElements
      { SynPat.Ands(List.rev $1,rhs2 parseState 1 3) }
  | parenPattern COLON  typeWithTypeConstraints %prec paren_pat_colon
      { let lhsm = lhs parseState 
        SynPat.Typed($1,$3,lhsm) } 
  | attributes parenPattern  %prec paren_pat_attribs
      { let lhsm = lhs parseState 
        SynPat.Attrib($2,$1,lhsm) } 
  | parenPattern COLON_COLON  parenPattern 
      { SynPat.LongIdent (LongIdentWithDots(mkSynCaseName (rhs parseState 2) opNameCons,[]), None, None, [ SynPat.Tuple ([$1;$3],rhs2 parseState 1 3) ],None,lhs parseState) }
  | constrPattern { $1 }

tupleParenPatternElements:
  | tupleParenPatternElements COMMA parenPattern  
      { $3 :: $1 }
  | parenPattern COMMA parenPattern  
      { $3 :: $1 :: [] }
  
conjParenPatternElements: 
  | conjParenPatternElements AMP parenPattern 
      { $3 :: $1 }
  | parenPattern AMP parenPattern 
      { $3 :: $1 :: [] }

recordPatternElements:
  | recordPatternElementsAux { let rs,m = $1 in SynPat.Record (rs,m) }

recordPatternElementsAux: /* Fix 1190 */
  | recordPatternElement opt_seps                      
      { [$1],lhs parseState }
  | recordPatternElement seps recordPatternElementsAux 
      { let r = $1 in let (rs,dropMark) = $3 in (r :: rs),lhs parseState }

recordPatternElement:  
  | path EQUALS parenPattern { (List.frontAndBack $1.Lid,$3) }

listPatternElements: /* Fix 3569 */
  |                                       
      { [] }
  | parenPattern opt_seps                 
      { [$1] }
  | parenPattern seps listPatternElements 
      { $1 :: $3 }

/* The lexfilter likes to insert OBLOCKBEGIN/OBLOCKEND pairs */
typedSeqExprBlock: 
  | OBLOCKBEGIN typedSeqExpr oblockend 
      { $2 }
  | OBLOCKBEGIN typedSeqExpr recover 
      { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression());
        exprFromParseError $2 }
  | typedSeqExpr 
      { $1 }

/* The lexfilter likes to insert OBLOCKBEGIN/OBLOCKEND pairs */
declExprBlock: 
  | OBLOCKBEGIN typedSeqExpr oblockend 
      { $2 }
  | declExpr 
      { $1 }

/* For some constructs the lex filter can't be sure to insert a matching OBLOCKEND, e.g. "function a -> b | c -> d" all in one line */
/* for these it only inserts a trailing ORIGHT_BLOCK_END */
typedSeqExprBlockR: 
  | typedSeqExpr ORIGHT_BLOCK_END { $1 }
  | typedSeqExpr { $1 }

typedSeqExpr: 
  | seqExpr COLON               typeWithTypeConstraints { SynExpr.Typed ($1,$3, unionRanges $1.Range $3.Range) }
  | seqExpr { $1 }

seqExpr:
  | declExpr seps seqExpr                 
      { SynExpr.Sequential(SequencePointsAtSeq,true,$1,$3,unionRanges $1.Range $3.Range) } 
  | declExpr seps                         
      { $1 }  
  | declExpr             %prec SEMICOLON 
      { $1 } 
  | declExpr THEN seqExpr %prec prec_then_before 
      { SynExpr.Sequential(SequencePointsAtSeq,false,$1,$3,unionRanges $1.Range $3.Range ) }
  | declExpr OTHEN OBLOCKBEGIN typedSeqExpr oblockend %prec prec_then_before 
      { SynExpr.Sequential(SequencePointsAtSeq,false,$1,$4,unionRanges $1.Range $4.Range) }
  | hardwhiteLetBindings %prec prec_args_error
     { let hwlb,m = $1
       let mLetKwd,isUse = match hwlb with (BindingSetPreAttrs(m,_,isUse,_,_))  -> m,isUse
       reportParseErrorAt mLetKwd (FSComp.SR.parsExpectedStatementAfterLet(if isUse then "use" else "let"))
       let fauxRange = m.EndRange // zero width range at end of m
       mkLocalBindings (m,hwlb,arbExpr("seqExpr",fauxRange)) }

/* Use this as the last terminal when performing error recovery */
/* The contract for using this is that (a) if EOF occurs then the */
/* the using production must report an error and (b) the using production */
/* can report an error anyway if it is helpful, e.g. "unclosed '('" (giving two errors) */
recover: 
   | error { debugPrint("recovering via error"); true }  
   | EOF { debugPrint("recovering via EOF"); false }


declExpr:
  | defnBindings IN typedSeqExpr  %prec expr_let 
     { mkLocalBindings (unionRanges (rhs2 parseState 1 2) $3.Range,$1,$3) }
  | defnBindings IN error        %prec expr_let
     { mkLocalBindings (rhs2 parseState 1 2,$1,arbExpr("declExpr1",(rhs parseState 3))) }
/*
    FSComp.SR.parsNoMatchingInForLet() -- leave this in for now - it's an unused error string
*/
  | hardwhiteLetBindings typedSeqExprBlock  %prec expr_let 
     { let hwlb,m = $1
       mkLocalBindings (unionRanges m $2.Range,hwlb,$2) }
  | hardwhiteLetBindings error        %prec expr_let
     { let hwlb,m = $1
       reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m,_,_,_,_))  -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation())
       mkLocalBindings (m,hwlb,arbExpr("declExpr2",(rhs parseState 2))) }
  | hardwhiteLetBindings OBLOCKSEP typedSeqExprBlock  %prec expr_let 
     { let hwlb,m = $1
       mkLocalBindings (unionRanges m $3.Range ,hwlb,$3) }
  | hardwhiteLetBindings OBLOCKSEP error        %prec expr_let
     { let hwlb,m = $1
       //reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m,_,_,_,_))  -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation())
       mkLocalBindings (unionRanges m (rhs parseState 3),hwlb,arbExpr("declExpr3",(rhs parseState 3))) }

  | hardwhiteDoBinding  %prec expr_let
     { let e = snd $1
       SynExpr.Do(e,e.Range) }
  
  | anonMatchingExpr %prec expr_function
      { $1 }
  | anonLambdaExpr  %prec expr_fun { $1 }

  | MATCH typedSeqExpr     withClauses              %prec expr_match 
      { let mMatch = (rhs parseState 1)
        let mWith,(clauses,mLast) = $3 
        let spBind = SequencePointAtBinding(unionRanges mMatch mWith) 
        SynExpr.Match(spBind, $2,clauses,false,unionRanges mMatch mLast) }

  | MATCH typedSeqExpr     recover               %prec expr_match 
      { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch());
        // Produce approximate expression during error recovery 
        exprFromParseError $2 }
      
  | TRY typedSeqExprBlockR withClauses              %prec expr_try 
      { let mTry = (rhs parseState 1)
        let spTry = SequencePointAtTry(mTry) 
        let mWith,(clauses,mLast) = $3 
        let spWith = SequencePointAtWith(mWith) 
        let mTryToWith = unionRanges mTry mWith 
        let mWithToLast = unionRanges mWith mLast 
        let mTryToLast = unionRanges mTry mLast
        SynExpr.TryWith($2, mTryToWith, clauses,mWithToLast, mTryToLast,spTry,spWith) }

  | TRY typedSeqExprBlockR recover              %prec expr_try 
      { // Produce approximate expression during error recovery 
        // Include any expressions to make sure they gets type checked in case that generates useful results for intellisense 
        if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTry());
        exprFromParseError $2 }

  | TRY typedSeqExprBlockR FINALLY typedSeqExprBlock %prec expr_try 
      { let mTry = rhs parseState 1 
        let spTry = SequencePointAtTry(mTry) 
        let spFinally = SequencePointAtFinally(rhs parseState 3) 
        let mTryToLast = unionRanges mTry $4.Range 
        SynExpr.TryFinally($2, $4,mTryToLast,spTry,spFinally) }

  | IF declExpr ifExprCases %prec expr_if 
      { let mIf = (rhs parseState 1)
        $3 $2 mIf }

  | IF declExpr recover %prec expr_if 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()); 
        // Produce an approximate expression during error recovery. 
        // Include expressions to make sure they get type checked in case that generates useful results for intellisense. 
        // Generate a throwAway for the expression so it isn't forced to have a type 'bool' 
        // from the context it is used in. 
        exprFromParseError $2 }

  | IF recover %prec expr_if 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf())
        // Produce an approximate expression during error recovery. There can still be value in doing this even
        // for this pathological case.
        let m = (rhs parseState 1)
        let mEnd = m.EndRange
        let spIfToThen = SequencePointAtBinding mEnd
        exprFromParseError (SynExpr.IfThenElse(arbExpr("ifGuard1",mEnd),arbExpr("thenBody1",mEnd),None,spIfToThen,true,m,m)) }

  | LAZY declExpr %prec expr_lazy 
      { SynExpr.Lazy($2,unionRanges (rhs parseState 1) $2.Range) }

  | ASSERT declExpr %prec expr_assert 
      { SynExpr.Assert($2, unionRanges (rhs parseState 1) $2.Range) }

  | ASSERT %prec expr_assert 
      { raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) }

  | OLAZY declExprBlock %prec expr_lazy 
      { SynExpr.Lazy($2,unionRanges (rhs parseState 1) $2.Range) }

  | OASSERT declExprBlock %prec expr_assert 
      { SynExpr.Assert($2, unionRanges (rhs parseState 1) $2.Range) }

  | OASSERT %prec expr_assert 
      { raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) }

  | WHILE declExpr doToken typedSeqExprBlock doneDeclEnd 
      { let mWhileHeader = unionRanges (rhs parseState 1) $2.Range
        let spWhile = SequencePointAtWhileLoop mWhileHeader 
        let mWhileAll = unionRanges (rhs parseState 1) $4.Range
        SynExpr.While(spWhile,$2,$4,mWhileAll) }
      
  | WHILE declExpr doToken typedSeqExprBlock recover 
      { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile());
        let mWhileHeader = unionRanges (rhs parseState 1) $2.Range
        let spWhile = SequencePointAtWhileLoop mWhileHeader 
        let mWhileAll = unionRanges (rhs parseState 1) $4.Range
        exprFromParseError (SynExpr.While(spWhile,$2,$4,mWhileAll)) }

  | WHILE declExpr doToken error doneDeclEnd 
      { // silent recovery 
        let mWhileHeader = unionRanges (rhs parseState 1) $2.Range
        let spWhile = SequencePointAtWhileLoop mWhileHeader 
        let mWhileBodyArb = unionRanges (rhs parseState 4) (rhs parseState 5)
        let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 5)
        SynExpr.While(spWhile,$2,arbExpr("whileBody1",mWhileBodyArb),mWhileAll) }

  | WHILE declExpr recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsWhileDoExpected())
        let mWhileHeader = unionRanges (rhs parseState 1) $2.Range
        let spWhile = SequencePointAtWhileLoop mWhileHeader 
        let mWhileBodyArb = rhs parseState 3
        let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3)
        exprFromParseError (SynExpr.While(spWhile,$2,arbExpr("whileBody2",mWhileBodyArb),mWhileAll))  }

  | WHILE recover 
      { if not $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile());
        arbExpr("whileLoop1",rhs parseState 1)  }

  | WHILE error doneDeclEnd 
      { //silent recovery
        let mWhileHeader = rhs parseState 1
        let spWhile = SequencePointAtWhileLoop mWhileHeader 
        let mWhileBodyArb = rhs parseState 3
        let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3)
        exprFromParseError (SynExpr.While(spWhile,arbExpr("whileGuard1",mWhileHeader),arbExpr("whileBody3",mWhileBodyArb),mWhileAll))  }

  | FOR forLoopBinder doToken typedSeqExprBlock doneDeclEnd 
      { let spBind = SequencePointAtForLoop(rhs2 parseState 1 3)
        let (a,b,_) = $2 
        SynExpr.ForEach(spBind,SeqExprOnly false,true,a,b,$4,unionRanges (rhs parseState 1) $4.Range) }

  | FOR forLoopBinder doToken typedSeqExprBlock ends_coming_soon_or_recover
      { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor())
        let spBind = SequencePointAtForLoop(rhs2 parseState 1 3)
        let (a,b,_) = $2 
        let mForLoopAll = unionRanges (rhs parseState 1) $4.Range
        SynExpr.ForEach(spBind,SeqExprOnly false,true,a,b,$4,mForLoopAll) }  

  | FOR forLoopBinder doToken error doneDeclEnd 
      { // Silent recovery
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,_) = $2 
        let mForLoopBodyArb = rhs parseState 5
        let mForLoopAll = rhs2 parseState 1 5
        SynExpr.ForEach(spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody2a",mForLoopBodyArb),mForLoopAll) }

  | FOR forLoopBinder doToken ends_coming_soon_or_recover 
      { if not $4 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectedExpressionAfterToken())
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,_) = $2 
        let mForLoopBodyArb = rhs parseState 3
        let mForLoopAll = rhs2 parseState 1 3
        SynExpr.ForEach(spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody2",mForLoopBodyArb),mForLoopAll) }

  | FOR forLoopBinder ends_coming_soon_or_recover
      { let (a,b,ok) = $2 
        if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsForDoExpected())
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let mForLoopBodyArb = rhs parseState 3
        let mForLoopAll = rhs2 parseState 1 3
        SynExpr.ForEach(spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody1",mForLoopBodyArb),mForLoopAll) }

  | FOR forLoopRange  doToken typedSeqExprBlock doneDeclEnd 
      { let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,c,d) = $2 
        let mForLoopAll = unionRanges (rhs parseState 1) $4.Range
        SynExpr.For(spBind,a,b,c,d,$4,mForLoopAll) }

  | FOR forLoopRange  doToken typedSeqExprBlock recover 
      { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor());
        // Still produce an expression
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,c,d) = $2 
        let mForLoopAll = unionRanges (rhs parseState 1) $4.Range
        exprFromParseError (SynExpr.For(spBind,a,b,c,d,$4,mForLoopAll)) }

  | FOR forLoopRange  doToken error doneDeclEnd 
      { // silent recovery 
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,c,d) = $2 
        let mForLoopBodyArb = rhs parseState 5
        let mForLoopAll = rhs2 parseState 1 5
        SynExpr.For(spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll) }

  | FOR forLoopRange  doToken recover
      { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor())
        let mForLoopHeader = rhs2 parseState 1 3
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,c,d) = $2 
        let mForLoopBodyArb = rhs parseState 3
        let mForLoopAll = rhs2 parseState 1 3
        exprFromParseError (SynExpr.For(spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll)) }

  | FOR forLoopRange recover
      { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor());
        let mForLoopHeader = rhs2 parseState 1 2
        let spBind = SequencePointAtForLoop mForLoopHeader
        let (a,b,c,d) = $2 
        let mForLoopBodyArb = (rhs parseState 2).EndRange
        let mForLoopAll = rhs2 parseState 1 2
        exprFromParseError (SynExpr.For(spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll)) }


  | FOR error doToken typedSeqExprBlock doneDeclEnd 
      { // silent recovery 
        let mForLoopHeader = rhs2 parseState 1 2
        let mForLoopAll = unionRanges (rhs parseState 1) $4.Range
        let spBind = SequencePointAtForLoop(mForLoopHeader)
        SynExpr.For(spBind,mkSynId mForLoopHeader "_loopVar",arbExpr("startLoopRange1",mForLoopHeader),true,arbExpr("endLoopRange1",rhs parseState 3),$4,mForLoopAll) }

/* do not include this one - though for fairly bizarre reasons!
   If the user has simply typed 'for'as the 
   start of a variable name, and intellisense parsing 
   kicks in, then we can't be sure we're parsing a for-loop. The general rule is that you shoudn't
   commit to aggressive look-for-a-matching-construct error recovery until
   you're sure you're parsing a particular construct.

  This probably affects 'and' as well, but it's hard to change that.
  'for' is a particularly common prefix of identifiers.

  | FOR error doneDeclEnd {  reportParseErrorAt (rhs parseState 2)  (FSComp.SR.parsIdentifierExpected()); arbExpr("declExpr12",(lhs parseState)) }
*/
  | FOR ends_coming_soon_or_recover
      { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected())
        arbExpr("declExpr12",(rhs parseState 1)) }

  | FOR parenPattern error doneDeclEnd 
      { reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsInOrEqualExpected())
        let mForLoopHeader = rhs2 parseState 1 2
        let spBind = SequencePointAtForLoop mForLoopHeader
        let mForLoopBodyArb = rhs parseState 4
        let mForLoopAll = rhs2 parseState 1 4
        SynExpr.ForEach(spBind,SeqExprOnly false,true,$2,arbExpr("forLoopCollection",mForLoopHeader),arbExpr("forLoopBody3",mForLoopBodyArb),mForLoopAll) }

  | FOR parenPattern recover
      { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor());
        let mForLoopHeader = rhs2 parseState 1 2
        let spBind = SequencePointAtForLoop mForLoopHeader
        let mForLoopBodyArb = (rhs parseState 2).EndRange
        let mForLoopAll = rhs2 parseState 1 2
        exprFromParseError (SynExpr.ForEach(spBind,SeqExprOnly false,true,$2,arbExpr("forLoopCollection",mForLoopHeader),arbExpr("forLoopBody3",mForLoopBodyArb),mForLoopAll)) }

  /* START MONADIC SYNTAX ONLY */
  | YIELD declExpr
     { SynExpr.YieldOrReturn(($1,not $1),$2, unionRanges (rhs parseState 1) $2.Range) } 

  | YIELD_BANG declExpr
     { SynExpr.YieldOrReturnFrom(($1,not $1), $2, unionRanges (rhs parseState 1) $2.Range) } 

  | BINDER headBindingPattern EQUALS typedSeqExprBlock IN opt_OBLOCKSEP typedSeqExprBlock %prec expr_let 
     { let spBind = SequencePointAtBinding(rhs2 parseState 1 5)
       let m = unionRanges (rhs parseState 1) $7.Range
       SynExpr.LetOrUseBang(spBind,($1 = "use"),true,$2,$4,$7,m) }

  | OBINDER headBindingPattern EQUALS typedSeqExprBlock hardwhiteDefnBindingsTerminator opt_OBLOCKSEP typedSeqExprBlock %prec expr_let 
     { $5 (if $1 = "use" then "use!" else "let!") (rhs parseState 1);  // report unterminated error 
       let spBind = SequencePointAtBinding(unionRanges (rhs parseState 1) $4.Range)
       let m = unionRanges (rhs parseState 1) $7.Range
       SynExpr.LetOrUseBang(spBind,($1 = "use"),true,$2,$4,$7,m) }

  | OBINDER headBindingPattern EQUALS typedSeqExprBlock hardwhiteDefnBindingsTerminator opt_OBLOCKSEP error %prec expr_let 
     { // error recovery that allows intellisense when writing incomplete computation expressions 
       let spBind = SequencePointAtBinding(unionRanges (rhs parseState 1) $4.Range) 
       let mAll = unionRanges (rhs parseState 1) (rhs parseState 7)
       let m = $4.Range.EndRange // zero-width range
       SynExpr.LetOrUseBang(spBind,($1 = "use"),true,$2,$4, SynExpr.ImplicitZero m, mAll) }

  | DO_BANG typedSeqExpr IN opt_OBLOCKSEP typedSeqExprBlock %prec expr_let 
     { let spBind = NoSequencePointAtDoBinding
       SynExpr.LetOrUseBang(spBind,false,true,SynPat.Const(SynConst.Unit,$2.Range),$2,$5, unionRanges (rhs parseState 1) $5.Range) }

  | ODO_BANG typedSeqExprBlock hardwhiteDefnBindingsTerminator %prec expr_let 
     { SynExpr.DoBang($2, unionRanges (rhs parseState 1) $2.Range) }

  | FOR forLoopBinder opt_OBLOCKSEP monadicSingleLineQualifiersThenArrowThenExprR %prec expr_let 
     { let spBind = SequencePointAtForLoop(rhs2 parseState 1 2)
       let (a,b,_) = $2 in SynExpr.ForEach(spBind,SeqExprOnly true,true,a,b,$4,unionRanges (rhs parseState 1) $4.Range) }

  | RARROW typedSeqExprBlockR 
     { errorR(Error(FSComp.SR.parsArrowUseIsLimited(),lhs parseState));
       SynExpr.YieldOrReturn((true,true),$2, (unionRanges (rhs parseState 1) $2.Range)) } 

  /* END MONADIC SYNTAX ONLY */

  | declExpr COLON_QMARK         typ  { SynExpr.TypeTest($1,$3, unionRanges $1.Range $3.Range) }
  | declExpr COLON_GREATER       typ  { SynExpr.Upcast($1,$3, unionRanges $1.Range $3.Range) } 
  | declExpr COLON_QMARK_GREATER typ  { SynExpr.Downcast($1,$3, unionRanges $1.Range $3.Range) }

  /* NOTE: any change to the "INFIX" tokens (or their definitions) should be reflected in PrettyNaming.IsInfixOperator */
  | declExpr COLON_EQUALS           declExpr { mkSynInfix (rhs parseState 2) $1 ":=" $3 }
  | minusExpr LARROW                declExprBlock { mkSynAssign $1 $3 }
/*   | minusExpr LARROW                recover { mkSynAssign $1 (arbExpr("assignRhs",rhs parseState 2)) } */
  | tupleExpr  %prec expr_tuple  { let exprs,commas = $1 in SynExpr.Tuple(List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range) ) }
  | declExpr  JOIN_IN               declExpr { SynExpr.JoinIn($1,rhs parseState 2,$3,unionRanges $1.Range $3.Range) }
  | declExpr  BAR_BAR               declExpr { mkSynInfix (rhs parseState 2) $1 "||" $3 }
  | declExpr  INFIX_BAR_OP          declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  OR                    declExpr { mkSynInfix (rhs parseState 2) $1 "or" $3 }
  | declExpr  AMP                   declExpr { mkSynInfix (rhs parseState 2) $1 "&" $3 }
  | declExpr  AMP_AMP               declExpr { mkSynInfix (rhs parseState 2) $1 "&&" $3 }
  | declExpr  INFIX_AMP_OP          declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  EQUALS                declExpr { mkSynInfix (rhs parseState 2) $1 "=" $3 }
  | declExpr  INFIX_COMPARE_OP      declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  DOLLAR                declExpr { mkSynInfix (rhs parseState 2) $1 "$" $3 }
  | declExpr  LESS                  declExpr { mkSynInfix (rhs parseState 2) $1 "<" $3 }
  | declExpr  GREATER               declExpr { mkSynInfix (rhs parseState 2) $1 ">" $3 }
  | declExpr  INFIX_AT_HAT_OP       declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  PERCENT_OP            declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  COLON_COLON           declExpr { SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynIdGet (rhs parseState 2) opNameCons,SynExpr.Tuple ([$1;$3],[rhs parseState 2],unionRanges $1.Range $3.Range),unionRanges $1.Range $3.Range) }
  | declExpr  PLUS_MINUS_OP         declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  MINUS                 declExpr { mkSynInfix (rhs parseState 2) $1 "-" $3 }
  | declExpr  STAR                  declExpr { mkSynInfix (rhs parseState 2) $1 "*" $3 }
  | declExpr  INFIX_STAR_DIV_MOD_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }
  | declExpr  INFIX_STAR_STAR_OP    declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 }

  | declExpr  JOIN_IN               OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("in")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "@in" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  BAR_BAR               OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("||")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "||" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_BAR_OP          OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  OR                    OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("or")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "or" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  AMP                   OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "&" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  AMP_AMP               OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&&")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "&&" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_AMP_OP          OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  EQUALS                OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("=")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "=" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_COMPARE_OP      OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  DOLLAR                OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("$")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "$" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  LESS                  OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "<" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  GREATER               OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(">")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 ">" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_AT_HAT_OP       OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  PERCENT_OP            OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  COLON_COLON           OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("::")); 
                                                            SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynIdGet (rhs parseState 2) opNameCons,SynExpr.Tuple ([$1;(arbExpr("declExprInfix",(rhs parseState 3).StartRange))],[rhs parseState 2],unionRanges $1.Range (rhs parseState 3).StartRange),unionRanges $1.Range (rhs parseState 3).StartRange) }
  | declExpr  PLUS_MINUS_OP         OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  MINUS                 OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("-")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "-" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  STAR                  OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("*")); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 "*" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_STAR_DIV_MOD_OP OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }
  | declExpr  INFIX_STAR_STAR_OP    OBLOCKEND_COMING_SOON { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)); 
                                                            exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) }

  | minusExpr %prec expr_prefix_plus_minus { $1 }

dynamicArg:
  | IDENT
      { let con = SynConst.String ($1,rhs parseState 1)
        let arg2 = SynExpr.Const (con,con.Range (rhs parseState 1)) 
        arg2 }
  | LPAREN typedSeqExpr rparen
      { $2 }

withClauses:
  | WITH withPatternClauses       
      { rhs parseState 1, $2 }
  | OWITH withPatternClauses OEND 
      { rhs parseState 1, $2 }
  | OWITH withPatternClauses recover 
      { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith());
        rhs parseState 1, $2 }

withPatternClauses:
  | patternClauses 
      { $1 }
  | BAR patternClauses 
      {  $2 }
  | BAR error 
      {  // silent recovery 
         let mLast = rhs parseState 1
         [], mLast }
  | error  
      {  // silent recovery 
         let mLast = rhs parseState 1
         [], mLast }


patternAndGuard: 
  | parenPattern patternGuard 
      { $1, $2, rhs parseState 1 }
      
patternClauses: 
  | patternAndGuard patternResult %prec prec_pat_pat_action
     { let pat,guard,patm = $1 
       let mLast = $2.Range 
       [Clause(pat,guard,$2,patm,SequencePointAtTarget)], mLast  }
  | patternAndGuard patternResult BAR patternClauses 
     { let pat,guard,patm = $1 
       let clauses,mLast = $4 
       (Clause(pat,guard,$2,patm,SequencePointAtTarget) :: clauses), mLast }
  | patternAndGuard patternResult BAR error 
     { let pat,guard,patm = $1 
       let mLast = rhs parseState 3 
       // silent recovery 
       [Clause(pat,guard,$2,patm,SequencePointAtTarget)], mLast  }
  | patternAndGuard patternResult error 
     { let pat,guard,patm = $1 
       let mLast = $2.Range 
       // silent recovery 
       [Clause(pat,guard,$2,patm,SequencePointAtTarget)], mLast }
  | patternAndGuard error 
     { let pat,guard,patm = $1 
       let mLast = rhs parseState 2
       // silent recovery 
       [Clause(pat,guard,SynExpr.Const(SynConst.Unit,mLast.EndRange),patm,SequencePointAtTarget)], mLast }
 
patternGuard: 
  | WHEN declExpr 
     { Some $2 }
  | 
     { None }

patternResult: 
  | RARROW typedSeqExprBlockR  
     { $2 }

ifExprCases: 
  | ifExprThen ifExprElifs 
      { let exprThen,mThen = $1 
        (fun exprGuard mIf -> 
            let mIfToThen = unionRanges mIf mThen
            let lastBranch : SynExpr = match $2 with None -> exprThen | Some e -> e
            let mIfToEndOfLastBranch = unionRanges mIf lastBranch.Range
            let spIfToThen = SequencePointAtBinding(mIfToThen)
            SynExpr.IfThenElse(exprGuard,exprThen,$2,spIfToThen,false,mIfToThen,mIfToEndOfLastBranch)) }

ifExprThen: 
  | THEN  declExpr %prec prec_then_if 
      { $2, rhs parseState 1 }
  | OTHEN  OBLOCKBEGIN typedSeqExpr oblockend %prec prec_then_if 
      { $3,rhs parseState 1 }
  | OTHEN  OBLOCKBEGIN typedSeqExpr recover %prec prec_then_if 
      { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen());
        exprFromParseError $3,rhs parseState 1 }

ifExprElifs: 
  | 
      { None }
  | ELSE declExpr 
      { Some $2 }
  | OELSE  OBLOCKBEGIN typedSeqExpr oblockend 
      { Some $3 }
  | OELSE  OBLOCKBEGIN typedSeqExpr recover 
      { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElse());
        Some (exprFromParseError $3) }
  | ELIF declExpr ifExprCases 
      { let mElif = rhs parseState 1 
        Some ($3 $2 mElif) }
  | ELIF declExpr recover 
      { Some (exprFromParseError $2) }

tupleExpr: 
  | tupleExpr COMMA declExpr   
      { let exprs,commas = $1 in ($3 :: exprs),((rhs parseState 2)::commas) }
  | tupleExpr COMMA ends_coming_soon_or_recover
      { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken())
        let exprs,commas = $1     
        let zeroWidthAtNextToken = (rhs parseState 3).StartRange
        ((arbExpr("tupleExpr1",zeroWidthAtNextToken)) :: exprs), (rhs parseState 2)::commas }
  | declExpr COMMA ends_coming_soon_or_recover
      { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken())
        let zeroWidthAtNextToken = (rhs parseState 3).StartRange 
        ((arbExpr("tupleExpr2",zeroWidthAtNextToken)) :: [$1]), [rhs parseState 2] }
  | declExpr COMMA declExpr  
      { [$3 ; $1], [rhs parseState 2] }

minusExpr: 
  | MINUS minusExpr   %prec expr_prefix_plus_minus
      { mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) $2.Range) "~-" $2 }
  | PLUS_MINUS_OP minusExpr  
      { if not (IsValidPrefixOperatorUse $1) then reportParseErrorAt $2.Range (FSComp.SR.parsInvalidPrefixOperator());
        mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) $2.Range) ("~"^($1)) $2 } 
  | ADJACENT_PREFIX_OP minusExpr 
      { if not (IsValidPrefixOperatorUse $1) then reportParseErrorAt $2.Range (FSComp.SR.parsInvalidPrefixOperator());
        if $1 = "&" then 
            SynExpr.AddressOf(true,$2,rhs parseState 1,unionRanges (rhs parseState 1) $2.Range)
        elif $1 = "&&" then 
            SynExpr.AddressOf(false,$2,rhs parseState 1,unionRanges (rhs parseState 1) $2.Range)
        else
            mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) $2.Range) ("~"^($1)) $2 }
  | PERCENT_OP minusExpr
      { if not (IsValidPrefixOperatorUse $1) then reportParseErrorAt $2.Range (FSComp.SR.parsInvalidPrefixOperator());
        mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) $2.Range) ("~"^($1)) $2 }
  | AMP  minusExpr    
      { SynExpr.AddressOf(true,$2,rhs parseState 1,unionRanges (rhs parseState 1) $2.Range) } 
  | AMP_AMP  minusExpr   
      { SynExpr.AddressOf(false,$2,rhs parseState 1, unionRanges (rhs parseState 1) $2.Range) } 
  | NEW appTypeNonAtomicDeprecated  opt_HIGH_PRECEDENCE_APP atomicExprAfterType 
      { SynExpr.New(false,$2,$4,unionRanges (rhs parseState 1) $4.Range) }
  | NEW appTypeNonAtomicDeprecated opt_HIGH_PRECEDENCE_APP error   
      { SynExpr.New(false,$2,arbExpr("minusExpr",(rhs parseState 4)),unionRanges (rhs parseState 1) ($2).Range) }
  | NEW error
      { arbExpr("minusExpr2",(rhs parseState 1)) }
  | UPCAST  minusExpr 
      { SynExpr.InferredUpcast($2,unionRanges (rhs parseState 1) $2.Range) }   
  | DOWNCAST  minusExpr 
      { SynExpr.InferredDowncast($2,unionRanges (rhs parseState 1) $2.Range)}   
  | appExpr 
      { $1 }

appExpr:
  | appExpr argExpr %prec expr_app
      { SynExpr.App (ExprAtomicFlag.NonAtomic, false, $1,$2,unionRanges $1.Range $2.Range)  }
  | atomicExpr 
      { let arg,_ = $1 
        arg }

argExpr:
  | ADJACENT_PREFIX_OP atomicExpr 
      { let arg2,hpa2 = $2 
        if not (IsValidPrefixOperatorUse $1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator());
        if hpa2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled());
        mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) ("~"^($1)) arg2 }
   | atomicExpr 
      { let arg,hpa = $1 
        if hpa then reportParseErrorAt arg.Range (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled());
        arg }
    
    
atomicExpr:
  | atomicExpr HIGH_PRECEDENCE_BRACK_APP atomicExpr
      { let arg1,_ = $1 
        let arg2,_ = $3 
        SynExpr.App (ExprAtomicFlag.Atomic, false, arg1,arg2,unionRanges arg1.Range arg2.Range),true  }

  | atomicExpr HIGH_PRECEDENCE_PAREN_APP atomicExpr
      { let arg1,_ = $1 
        let arg2,_ = $3 
        SynExpr.App (ExprAtomicFlag.Atomic, false, arg1,arg2,unionRanges arg1.Range arg2.Range),true  }

  | atomicExpr HIGH_PRECEDENCE_TYAPP typeArgsActual
      { let arg1,_ = $1 
        let mLessThan,mGreaterThan,_,args,commas,mTypeArgs = $3
        let mWholeExpr = unionRanges arg1.Range mTypeArgs
        SynExpr.TypeApp(arg1, mLessThan, args, commas, mGreaterThan, mTypeArgs, mWholeExpr), false }

  | PREFIX_OP  atomicExpr  
      { let arg2,hpa2 = $2 
        if not (IsValidPrefixOperatorUse $1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator());
        mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) $1 arg2,hpa2 }

  | atomicExpr DOT atomicExprQualification 
      { let arg1,hpa1 = $1 
        $3 arg1 (lhs parseState) (rhs parseState 2),hpa1 }
  | BASE DOT atomicExprQualification 
      { let arg1 = SynExpr.Ident(ident("base",rhs parseState 1))
        $3 arg1 (lhs parseState) (rhs parseState 2),false }
  | QMARK nameop 
      { SynExpr.LongIdent (true,LongIdentWithDots([$2],[]),None,rhs parseState 2),false }
  | atomicExpr QMARK dynamicArg
      { let arg1,hpa1 = $1
        mkSynInfix (rhs parseState 2) arg1 "?" $3, hpa1 }
  | GLOBAL
      { SynExpr.Ident (ident(MangledGlobalName,rhs parseState 1)), false }
  | nameop
      { SynExpr.Ident ($1),false }
  | LBRACK listExprElements RBRACK 
      { $2 (lhs parseState) false,false }
  | LBRACK listExprElements recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()); 
        exprFromParseError ($2 (rhs2 parseState 1 2) false), false }
  | LBRACK error RBRACK 
      { // silent recovery 
        SynExpr.ArrayOrList(false,[ ], lhs parseState),false  } 
  | LBRACK recover
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()); 
        // silent recovery 
        exprFromParseError (SynExpr.ArrayOrList(false,[ ], rhs parseState 1)),false  } 
  | atomicExprAfterType 
      { $1,false }

atomicExprQualification:
  |    identOrOp 
      { let idm = rhs parseState 1 
        (fun e lhsm dotm -> mkSynDot dotm lhsm e $1) }
  |   /* empty */
      { (fun e lhsm dotm -> 
            reportParseErrorAt dotm (FSComp.SR.parsMissingQualificationAfterDot()); 
            let fixedLhsm = mkRange lhsm.FileName lhsm.Start dotm.End // previous lhsm is wrong after 'recover'
            mkSynDotMissing dotm fixedLhsm e) }
  |  recover 
      { (fun e lhsm dotm -> 
            reportParseErrorAt dotm (FSComp.SR.parsMissingQualificationAfterDot()); 
            let fixedLhsm = mkRange lhsm.FileName lhsm.Start dotm.End // previous lhsm is wrong after 'recover'
            // Include 'e' in the returned expression but throw it away
            SynExpr.DiscardAfterMissingQualificationAfterDot(e,fixedLhsm)) }
  |   LPAREN COLON_COLON rparen DOT INT32  
      { (fun e lhsm dotm -> 
            libraryOnlyError(lhs parseState);
            SynExpr.LibraryOnlyUnionCaseFieldGet (e,mkSynCaseName lhsm opNameCons,(fst $5),lhsm)) }
  |   LPAREN  typedSeqExpr rparen  
      { (fun e lhsm dotm -> 
            mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState); 
            mkSynDotParenGet lhsm dotm e $2) }
  |   LBRACK  typedSeqExpr RBRACK  
      { (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e $2) }

  |   LBRACK  typedSeqExpr recover
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()); 
        (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e $2)) }

  |   LBRACK  error RBRACK  
      { let mArg = rhs2 parseState 1 3
        (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr1",mArg))) }
  |   LBRACK  recover
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket())
        let mArg = (rhs parseState 1).EndRange 
        (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr2",mArg)))) }
  |   LBRACK  optRange RBRACK  
      { (fun e lhsm dotm -> mkSynDotBrackSliceGet lhsm dotm e $2) }
  |   LBRACK  optRange COMMA optRange RBRACK  %prec slice_comma
      { (fun e lhsm dotm -> mkSynDotBrackSlice2Get lhsm dotm e $2 $4) }
  |   LBRACK  optRange COMMA optRange COMMA optRange RBRACK  %prec slice_comma
      { (fun e lhsm dotm -> mkSynDotBrackSlice3Get lhsm dotm e $2 $4 $6) }
  |   LBRACK  optRange COMMA optRange COMMA optRange COMMA optRange RBRACK  %prec slice_comma
      { (fun e lhsm dotm -> mkSynDotBrackSlice4Get lhsm dotm e $2 $4 $6 $8) }

optRange:
  | declExpr DOT_DOT declExpr 
      { mkSynOptionalExpr (rhs parseState 1) (Some $1), mkSynOptionalExpr (rhs parseState 3) (Some $3) }
  | declExpr DOT_DOT 
      { mkSynOptionalExpr (rhs parseState 1) (Some $1), mkSynOptionalExpr (rhs parseState 2) None }
  | DOT_DOT declExpr 
      { mkSynOptionalExpr (rhs parseState 1) None, mkSynOptionalExpr (rhs parseState 2) (Some $2) }
  | STAR 
      { mkSynOptionalExpr (rhs parseState 1) None, mkSynOptionalExpr (rhs parseState 1) None }
  

/* the start et of atomicExprAfterType must not overlap with the valid postfix tokens of the type syntax, e.g. new List(...) */
atomicExprAfterType:
  | constant 
      { SynExpr.Const ($1,$1.Range (lhs parseState)) }
  | parenExpr 
      { $1 }
  | braceExpr 
      { $1 }
  | NULL 
      { SynExpr.Null(lhs parseState) } 
  | FALSE  
      { SynExpr.Const(SynConst.Bool false,lhs parseState) } 
  | TRUE  
      { SynExpr.Const(SynConst.Bool true,lhs parseState) } 
  | quoteExpr
      { $1 }
  | arrayExpr
      { $1 }
  | beginEndExpr
      { $1 }
  
beginEndExpr:
  | BEGIN typedSeqExpr END 
      { SynExpr.Paren($2, rhs parseState 1, Some(rhs parseState 3), rhs2 parseState 1 3) } 
  | BEGIN typedSeqExpr recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBegin()); exprFromParseError $2 } 
  | BEGIN error END 
      { (* silent recovery *) arbExpr("beginEndExpr",(lhs parseState))  } 
  | BEGIN END 
      { mkSynUnit (lhs parseState) } 

quoteExpr:
  | LQUOTE typedSeqExpr RQUOTE 
      { if $1 <> $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuote(fst $1))
        (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst $1)), snd $1, $2, false, lhs parseState)) } 
  | LQUOTE typedSeqExpr recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst $1))  
        let mExpr = rhs2 parseState 1 2
        exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst $1)),snd $1, $2, false, mExpr))  } 
  | LQUOTE error RQUOTE 
      { (* silent recovery *) SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst $1)),snd $1, arbExpr("quoteExpr",(rhs parseState 2)), false, lhs parseState)  }  
  | LQUOTE recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst $1))
        exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst $1)),snd $1, arbExpr("quoteExpr2",(rhs parseState 1).EndRange), false, rhs parseState 1))  }  

arrayExpr:
  | LBRACK_BAR listExprElements BAR_RBRACK 
      {  $2 (lhs parseState) true } 
  | LBRACK_BAR listExprElements recover 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()); 
        exprFromParseError ($2 (rhs2 parseState 1 2) true) }
  | LBRACK_BAR error BAR_RBRACK 
      {  (* silent recovery *) SynExpr.ArrayOrList(true,[ ], lhs parseState) }  
  | LBRACK_BAR recover
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar());  
        (* silent recovery *) 
        exprFromParseError (SynExpr.ArrayOrList(true,[ ], rhs parseState 1)) }  

parenExpr:
  | LPAREN rparen 
      { SynExpr.Const(SynConst.Unit,(rhs2 parseState 1 2)) } 
  | LPAREN parenExprBody rparen
      { let m = rhs2 parseState 1 3
        SynExpr.Paren($2 m, rhs parseState 1, Some(rhs parseState 3), m) }
  | LPAREN parenExprBody ends_other_than_rparen_coming_soon_or_recover
      { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
        let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 3).Start
        SynExpr.Paren(exprFromParseError ($2 lhsm), rhs parseState 1, None, lhsm) }
  | LPAREN error rparen 
      { // silent recovery
        SynExpr.Paren(arbExpr("parenExpr1",(rhs parseState 1).EndRange),(rhs parseState 1),Some(rhs parseState 3),(rhs2 parseState 1 3)) } 
  | LPAREN TYPE_COMING_SOON
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
        let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
        arbExpr("parenExpr2tcs", lhsm) }
  | LPAREN MODULE_COMING_SOON
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
        let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
        arbExpr("parenExpr2mcs", lhsm) }
  | LPAREN RBRACE_COMING_SOON
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
        let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
        arbExpr("parenExpr2rbcs", lhsm) }
  | LPAREN OBLOCKEND_COMING_SOON 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen())
        let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start
        arbExpr("parenExpr2obecs", lhsm) }
  | LPAREN recover %prec prec_atomexpr_lparen_error 
      { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()); 
        arbExpr("parenExpr2",(lhs parseState))  }  

        // This is really what we should be doing, but it fails because param info expects the range of the expression
        // to extend all the way over the "recover", to the end of the file if necessary
        // 
        // let mLeftParen = rhs parseState 1
        //let lhsm = if $2 then unionRangeWithPos mLeftParen (rhs parseState 2).Start else mLeftParen
        //arbExpr("parenExpr2",lhsm)  }  

parenExprBody:
  | staticallyKnownHeadTypars COLON LPAREN classMemberSpfn rparen  typedSeqExpr 
      { (fun m -> SynExpr.TraitCall($1,$4,$6,m)) } /* disambiguate: x $a.id(x) */
  | typedSeqExpr
      { (fun _m -> $1) } 
  | inlineAssemblyExpr 
      { $1 }

staticallyKnownHeadTypars:
  | staticallyKnownHeadTypar 
      { [$1] }
  | LPAREN staticallyKnownHeadTyparAlts rparen 
      { List.rev $2 }

staticallyKnownHeadTyparAlts:
	| staticallyKnownHeadTyparAlts OR staticallyKnownHeadTypar
      {$3 :: $1}
    | staticallyKnownHeadTypar
      { [$1] }

braceExpr:
  | LBRACE braceExprBody rbrace 
     {  let m,r = $2 in r (rhs2 parseState 1 3) }
  | LBRACE braceExprBody recover 
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) ; 
       let m,r = $2 
       // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions
       r (unionRanges (rhs parseState 1) m) }
  | LBRACE error rbrace 
     { // silent recovery 
       arbExpr("braceExpr",rhs2 parseState 1 3)  }  
  | LBRACE recover
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) ; 
       // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions
       SynExpr.Record(None,None,[],rhs parseState 1) }
  | LBRACE rbrace 
     {  let m = rhs2 parseState 1 2 
        SynExpr.Record(None,None,[],m) }

braceExprBody:
  | recdExpr 
     {  (lhs parseState), (fun m -> let a,b,c = $1 in SynExpr.Record(a,b,c,m)) }
  | objExpr 
     { $1 }
  | monadicExprInitial 
     { let m,r = $1 in (m, r false) }

listExprElements: 
  | monadicExprInitial
     { let m,r = $1 in (fun lhsm isArray -> SynExpr.ArrayOrListOfSeqExpr(isArray, r true m, lhsm)) }
  | 
     { (fun lhsm isArray -> SynExpr.ArrayOrList(isArray,[ ], lhsm)) }

monadicExprInitial: 
  | seqExpr
     { $1.Range, (fun isArrayOrList lhsm -> SynExpr.CompExpr(isArrayOrList,ref(isArrayOrList),$1,lhsm)) }
  | rangeSequenceExpr 
     { $1 }
  
rangeSequenceExpr: 
  | declExpr DOT_DOT  declExpr  
     { let opm = (rhs parseState 2)
       (unionRanges $1.Range $3.Range),(fun _isArray wholem -> 
                                                // in the case of "{ 1 .. 10 }", we want the range of the expression to include the curlies, that comes from a higher level rule in the grammar,
                                                // passed down as 'wholem', so patch up that range here
                                                match (mkSynInfix opm $1 ".." $3) with
                                                | SynExpr.App(a,b,c,d,_) -> SynExpr.App(a,b,c,d,wholem)
                                                | _ -> failwith "impossible") }
  | declExpr DOT_DOT  declExpr DOT_DOT declExpr  
     { (unionRanges $1.Range $5.Range),(fun _isArray wholem -> mkSynTrifix wholem ".. .." $1 $3 $5) }

  | declExpr DOT_DOT recover  
     { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression());
       let opm = (rhs parseState 2)
       let e = arbExpr("rangeSeqError1", (rhs parseState 3).StartRange)
       (unionRanges $1.Range e.Range),(fun _isArray wholem -> 
                                                // in the case of "{ 1 .. 10 }", we want the range of the expression to include the curlies, that comes from a higher level rule in the grammar,
                                                // passed down as 'wholem', so patch up that range here
                                                match (mkSynInfix opm $1 ".." e) with
                                                | SynExpr.App(a,b,c,d,_) -> SynExpr.App(a,b,c,d,wholem)
                                                | _ -> failwith "impossible") }


/* Allow a naked yield (no "yield" or "return" or "->") immediately after a "->" */
/* Allow a naked yield (no "yield!" or "return!" or "->>") immediately after a "->>" */
/* In both cases multiple 'for' and 'when' bindings can precede */
monadicSingleLineQualifiersThenArrowThenExprR:
  | RARROW typedSeqExprBlockR 
     { SynExpr.YieldOrReturn((true,false), $2, unionRanges (rhs parseState 1) $2.Range) }


forLoopBinder: 
  | parenPattern IN declExpr 
     { ($1, $3, true) }
  | parenPattern IN rangeSequenceExpr 
     { let m,r = $3 in ($1, r false m, true) }
  | parenPattern IN ends_coming_soon_or_recover
     { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken())
       ($1, arbExpr("forLoopBinder",(rhs parseState 2)), false) }
  | parenPattern ends_coming_soon_or_recover
     { if not $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInOrEqualExpected())
       ($1, arbExpr("forLoopBinder2",(rhs parseState 1).EndRange), false) }

forLoopRange: 
  | parenPattern EQUALS declExpr  forLoopDirection  declExpr 
      { idOfPat (rhs parseState 1) $1,$3,$4,$5 }

inlineAssemblyExpr:
  |  HASH stringOrKeywordString opt_inlineAssemblyTypeArg opt_curriedArgExprs  opt_inlineAssemblyReturnTypes opt_HASH 
      { libraryOnlyWarning (lhs parseState);
        let s,sm = $2,rhs parseState 2
        (fun m -> SynExpr.LibraryOnlyILAssembly (ParseAssemblyCodeInstructions s sm,$3,List.rev $4,$5,m)) }
  
opt_curriedArgExprs: 
  | opt_curriedArgExprs argExpr  %prec expr_args { $2 :: $1 } 
  |  { [] }

opt_atomicExprAfterType: 
  |  { None }
  |  atomicExprAfterType { Some($1) }

opt_inlineAssemblyTypeArg:
  |  { [] }
  | type_keyword LPAREN typ rparen  {  [$3] }

opt_inlineAssemblyReturnTypes:
  |  
     { [] }
  | COLON typ 
     { [$2] }
  | COLON LPAREN rparen  
     {  [] }

recdExpr:
  | INHERIT appTypeNonAtomicDeprecated opt_HIGH_PRECEDENCE_APP opt_atomicExprAfterType recdExprBindings opt_seps_recd
     { let arg = match $4 with None -> mkSynUnit (lhs parseState) | Some e -> e 
       let l = List.rev $5
       let dummyField = mkRecdField (LongIdentWithDots([], [])) // dummy identifier, it will be discarded
       let l = rebindRanges (dummyField, None) l $6 
       let (_, _, inheritsSep) = List.head l
       let bindings = List.tail l
       (Some ($2,arg,rhs2 parseState 2 4, inheritsSep, rhs parseState 1), None, bindings) }

  | appExpr EQUALS declExprBlock recdExprBindings opt_seps_recd
     { match $1 with 
       | LongOrSingleIdent(false, (LongIdentWithDots(_,_) as f),None,m) ->  
            let f = mkRecdField f
            let l = List.rev $4
            let l = rebindRanges (f, Some $3) l $5
            (None, None, l)
       | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding()) }

/*
    handles cases when identifier can start from the underscore
*/

  | UNDERSCORE
    { let m = rhs parseState 1
      reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())
      reportParseErrorAt m (FSComp.SR.parsFieldBinding())
      let f = mkUnderscoreRecdField m
      (None, None, [ f, None, None  ]) }

  | UNDERSCORE EQUALS
    { let m = rhs parseState 1
      reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())      
      let f = mkUnderscoreRecdField m

      reportParseErrorAt (rhs2 parseState 1 2) (FSComp.SR.parsFieldBinding())
      
      (None, None, [f, None, None]) }

  | UNDERSCORE EQUALS declExprBlock recdExprBindings opt_seps_recd
    { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderscoreInvalidFieldName())
      let f = mkUnderscoreRecdField (rhs parseState 1)

      let l = List.rev $4
      let l = rebindRanges (f, Some $3) l $5
      (None, None, l) }
/*
    handles case like {x with}
*/
  | appExpr WITH recdBinding recdExprBindings opt_seps_recd
     {  let l = List.rev $4
        let l = rebindRanges $3 l $5
        (None,Some ($1, (rhs parseState 2, None)), l) }

  | appExpr OWITH opt_seps_recd OEND
     { (None,Some ($1, (rhs parseState 2, None)), []) }

  | appExpr OWITH recdBinding recdExprBindings opt_seps_recd OEND
     { 
        let l = List.rev $4
        let l = rebindRanges $3 l $5
        (None,Some ($1, (rhs parseState 2, None)), l) }

opt_seps_recd:
  | seps_recd { Some $1 }
  | { None }

seps_recd:
  | OBLOCKSEP { (rhs parseState 1), None }
  | SEMICOLON  { let m = (rhs parseState 1) in (m, Some m.End) }
  | SEMICOLON OBLOCKSEP { (rhs2 parseState 1 2), Some (rhs parseState 1).End }
  | OBLOCKSEP SEMICOLON { (rhs2 parseState 1 2), Some (rhs parseState 2).End }

/*
    identifier can start from the underscore
*/
pathOrUnderscore :
  | path { mkRecdField $1 }
  | UNDERSCORE 
    { let m = rhs parseState 1
      reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName())
      mkUnderscoreRecdField m }

recdExprBindings: 
  | recdExprBindings seps_recd recdBinding
     { ($3, Some $2) :: $1 }
  |  { [] }

recdBinding:
    | pathOrUnderscore EQUALS declExprBlock
      { ($1, Some $3) }
    | pathOrUnderscore EQUALS
      {
        reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
        ($1, None)
      }
    | pathOrUnderscore EQUALS ends_coming_soon_or_recover
      {
        reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
        ($1, None)
      }
    | pathOrUnderscore
      {
        reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
        ($1, None)
      }
    | pathOrUnderscore ends_coming_soon_or_recover
      {
        reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding())
        ($1, None)
      }

/* There is a minor conflict between
       seq { new ty() }  // sequence expression with one very odd 'action' expression
  and 
       { new ty() }   // object expression with no interfaces and no overrides
Hence we make sure the latter is not permitted by the grammar
*/
objExpr:
  | objExprBaseCall objExprBindings opt_OBLOCKSEP opt_objExprInterfaces
     { let mNewExpr = rhs parseState 1
       let fullRange = match $4 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 4)
       fullRange, (fun m -> let (a,b) = $1 in SynExpr.ObjExpr(a,b,$2,$4, mNewExpr, m)) }
  | objExprBaseCall opt_OBLOCKSEP objExprInterfaces
     { let mNewExpr = rhs parseState 1 
       let fullRange = match $3 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 3)
       fullRange, (fun m -> let (a,b) = $1 in SynExpr.ObjExpr(a,b,[],$3, mNewExpr, m)) }
  | NEW appTypeNonAtomicDeprecated
     { let mNewExpr = rhs parseState 1 
       (rhs2 parseState 1 2), (fun m -> let (a,b) = $2,None in SynExpr.ObjExpr(a,b,[],[], mNewExpr, m)) }


objExprBaseCall:
  | NEW appTypeNonAtomicDeprecated  opt_HIGH_PRECEDENCE_APP atomicExprAfterType baseSpec
     { ($2, Some($4,Some($5))) }
  | NEW appTypeNonAtomicDeprecated  opt_HIGH_PRECEDENCE_APP atomicExprAfterType 
     { ($2, Some($4,None)) }
  | NEW appTypeNonAtomicDeprecated
     { $2,None }
 


opt_objExprBindings: 
  | objExprBindings { $1 }
  |                 { [] }

objExprBindings: 
  | WITH localBindings 
      { let mWithKwd = (rhs parseState 1)
        let _localBindingsLastRange, localBindingsBuilder = $2 
        localBindingsBuilder [] None mWithKwd }
  | OWITH localBindings OEND
      { let mWithKwd = (rhs parseState 1)
        let _localBindingsLastRange, localBindingsBuilder = $2 
        localBindingsBuilder [] None mWithKwd }
  | WITH objectImplementationBlock opt_declEnd
      { $2 |> 
        (List.choose (function 
                          | SynMemberDefn.Member(b,m) -> Some b
                          | SynMemberDefn.AutoProperty(_,_,_,_,_,_,_,_,_,_,m) -> errorR(Error(FSComp.SR.parsIllegalMemberVarInObjectImplementation(),m)); None
                          | x -> errorR(Error(FSComp.SR.parsMemberIllegalInObjectImplementation(),x.Range)); None)) }

objExprInterfaces:
  | objExprInterface opt_objExprInterfaces { $1 :: $2 }

opt_objExprInterfaces:
  | %prec prec_interfaces_prefix 
     { [] }
  | objExprInterface opt_objExprInterfaces 
     { $1 :: $2 }
  | error opt_objExprInterfaces 
     { (* silent recovery *) $2 }

objExprInterface:
  |  interfaceMember appType opt_objExprBindings opt_declEnd opt_OBLOCKSEP
    { InterfaceImpl($2, $3, lhs parseState) }

forLoopDirection: 
  | TO     { true } 
  | DOWNTO { false }

anonLambdaExpr: 
  | FUN atomicPatterns RARROW typedSeqExprBlock 
     { let mAll = unionRanges (rhs parseState 1) $4.Range
       mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false mAll $2 $4 }
  | FUN atomicPatterns RARROW error
     { let mAll = rhs2 parseState 1 3
       mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false mAll $2 (arbExpr("anonLambdaExpr1",(rhs parseState 4))) }
  | OFUN atomicPatterns RARROW typedSeqExprBlockR OEND
     { let mAll = unionRanges (rhs parseState 1) $4.Range
       mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false mAll $2 $4 }
  | OFUN atomicPatterns RARROW typedSeqExprBlockR recover
     { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody());
       let mAll = unionRanges (rhs parseState 1) $4.Range
       exprFromParseError (mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false mAll $2 $4) }
  | OFUN atomicPatterns RARROW ORIGHT_BLOCK_END OEND
     { reportParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsMissingFunctionBody())
       mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false (rhs2 parseState 1 3) $2 (arbExpr("anonLambdaExpr2",(rhs parseState 4))) }

  | OFUN atomicPatterns RARROW recover
     { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody())
       exprFromParseError (mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false (rhs2 parseState 1 3) $2 (arbExpr("anonLambdaExpr3",(rhs parseState 4)))) }
  | OFUN atomicPatterns error OEND
     { exprFromParseError (mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false (rhs2 parseState 1 2) $2 (arbExpr("anonLambdaExpr4",(rhs parseState 3)))) }
  | OFUN error OEND
     { exprFromParseError (mkSynFunMatchLambdas (parseState.GetSynArgNameGenerator()) false (rhs parseState 1) [] (arbExpr("anonLambdaExpr5",(rhs parseState 2)))) }

anonMatchingExpr: 
  | FUNCTION withPatternClauses %prec expr_function
      { let clauses,mLast = $2
        let mAll = unionRanges (rhs parseState 1) mLast
        SynExpr.MatchLambda(false,(rhs parseState 1),clauses,NoSequencePointAtInvisibleBinding,mAll) }
  | OFUNCTION withPatternClauses OEND %prec expr_function
      { let clauses,mLast = $2
        let mAll = unionRanges (rhs parseState 1) mLast
        SynExpr.MatchLambda(false,(rhs parseState 1),clauses,NoSequencePointAtInvisibleBinding,mAll) }

/*--------------------------------------------------------------------------*/
/* TYPE ALGEBRA                                                             */

typeWithTypeConstraints:
  | typ %prec prec_wheretyp_prefix { $1 }
  | typ WHEN typeConstraints 
     { SynType.WithGlobalConstraints($1, List.rev $3,lhs parseState) }

topTypeWithTypeConstraints: 
  | topType 
     { $1 }
  | topType WHEN typeConstraints 
     { let ty,arity = $1 
       // nb. it doesn't matter where the constraints go in the structure of the type. 
       SynType.WithGlobalConstraints(ty,List.rev $3,lhs parseState), arity }

opt_topReturnTypeWithTypeConstraints: 
  |             
     { None } 
  | COLON topTypeWithTypeConstraints 
     { let ty,arity = $2 
       let arity = (match arity with SynValInfo([],rmdata)-> rmdata | _ -> SynInfo.unnamedRetVal)
       Some (SynReturnInfo((ty,arity),rhs parseState 2)) }

topType: 
  | topTupleType RARROW topType 
     { let dty,dmdata= $1 
       let rty,(SynValInfo(dmdatas,rmdata)) = $3 
       SynType.Fun(dty,rty,lhs parseState), (SynValInfo(dmdata::dmdatas, rmdata)) }
  | topTupleType 
     { let ty,rmdata = $1 in ty, (SynValInfo([],(match rmdata with [md] -> md | _ -> SynInfo.unnamedRetVal))) }

topTupleType:
  | topAppType STAR topTupleTypeElements 
     { let ty,mdata = $1 in let tys,mdatas = List.unzip $3 in (SynType.Tuple(List.map (fun ty -> (false,ty)) (ty ::tys), lhs parseState)),(mdata :: mdatas) }
  | topAppType                 
     { let ty,mdata = $1 in ty,[mdata] }

topTupleTypeElements:
  | topAppType STAR topTupleTypeElements       { $1 :: $3 }
  | topAppType %prec prec_toptuptyptail_prefix { [$1] }

/* REVIEW: why can't we use opt_attributes here? */
topAppType:
  | attributes appType COLON appType 
     { match $2 with 
       | SynType.LongIdent(LongIdentWithDots([id],_)) -> $4,SynArgInfo($1,false,Some id)
       | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())  }
  | attributes QMARK ident COLON appType 
     { $5,SynArgInfo($1,true,Some $3) }
  | attributes appType 
     { ($2,SynArgInfo($1,false,None)) }
  | appType COLON appType 
     { match $1 with 
       | SynType.LongIdent(LongIdentWithDots([id],_)) -> $3,SynArgInfo([],false,Some id)
       | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType())  }
  | QMARK ident COLON appType 
     { $4,SynArgInfo([],true,Some $2) }
  | appType 
     { $1,SynArgInfo([],false,None) }

/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
typ:
  | tupleType RARROW typ  { SynType.Fun($1,$3,lhs parseState) }
  | tupleType %prec prec_typ_prefix { $1 }


tupleType:
  | appType STAR tupleOrQuotTypeElements { SynType.Tuple((false,$1) :: $3,lhs parseState) }

  | INFIX_STAR_DIV_MOD_OP tupleOrQuotTypeElements
    { if $1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator());
      SynType.Tuple((true, SynType.StaticConstant (SynConst.Int32 1, lhs parseState)):: $2, lhs parseState) }

  | appType INFIX_STAR_DIV_MOD_OP tupleOrQuotTypeElements
      { if $2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator());
        SynType.Tuple((true,$1) :: $3, lhs parseState) }
  | appType %prec prec_tuptyp_prefix { $1 }

tupleOrQuotTypeElements:
  | appType STAR tupleOrQuotTypeElements              { (false,$1) :: $3 }
  | appType INFIX_STAR_DIV_MOD_OP tupleOrQuotTypeElements 
      { if $2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator());
        (true,$1) :: $3 }
  | appType %prec prec_tuptyptail_prefix { [(false,$1)] }

tupleTypeElements:
  | appType STAR tupleTypeElements              { $1 :: $3 }
  | appType %prec prec_tuptyptail_prefix { [$1] }

appTypeCon:
  | path %prec prec_atomtyp_path 
      { SynType.LongIdent($1) }

  | typar 
     { SynType.Var($1, lhs parseState) }

appTypeConPower:
  | appTypeCon INFIX_AT_HAT_OP INT32
     { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator());
       if $2 = "^-" then SynType.MeasurePower($1, -(fst $3), lhs parseState)
       else SynType.MeasurePower($1, fst $3, lhs parseState)  }
  | appTypeCon 
    { $1 }

appType:
  | appType arrayTypeSuffix 
      {  SynType.Array($2,$1,lhs parseState) }
  | appType HIGH_PRECEDENCE_BRACK_APP arrayTypeSuffix   /* only HPA for "name[]" allowed here */
      {  SynType.Array($3,$1,lhs parseState) }
  | appType appTypeConPower  
      { SynType.App($2, None, [$1], [], None, true, unionRanges (rhs parseState 1) $2.Range) }  /* note: use "rhs parseState 1" to deal with parens in "(int) list" */
  | LPAREN appTypePrefixArguments rparen  appTypeConPower
      { let args, commas = $2
        mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) $4.Range); 
        SynType.App($4, None, args, commas, None, true, unionRanges (rhs parseState 1) $4.Range) }
  | powerType 
      { $1 }
  | typar      COLON_GREATER typ                     
      {  let tp,typ = $1,$3 
         let m = lhs parseState 
         SynType.WithGlobalConstraints(SynType.Var (tp, rhs parseState 1), [WhereTyparSubtypeOfType(tp,typ,m)],m)  }
  | UNDERSCORE COLON_GREATER typ %prec COLON_GREATER 
      {  SynType.HashConstraint($3, lhs parseState) }

arrayTypeSuffix:
  | LBRACK RBRACK 
      { 1 }
  | LBRACK COMMA RBRACK 
      { 2 }
  | LBRACK COMMA COMMA RBRACK 
      { 3 }
  | LBRACK COMMA COMMA COMMA RBRACK 
      { 4 }

appTypePrefixArguments:
  | typeArgActual COMMA typeArgActual typeArgListElements 
      { let typeArgs, commas = $4 in $1 :: $3 :: List.rev typeArgs, (rhs parseState 2)::(List.rev commas) }

typeArgListElements: 
  | typeArgListElements COMMA typeArgActual
      { let typeArgs, commas = $1
        $3 :: typeArgs, (rhs parseState 2)::commas } 
  | typeArgListElements COMMA dummyTypeArg %prec prec_args_error  /* NOTE: no "recover" */
     { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs())
       let typeArgs, commas = $1
       $3 :: typeArgs, (rhs parseState 2)::commas } 
  |   
      { [], [] }

powerType:
  | atomType
    { $1 }
  | atomType INFIX_AT_HAT_OP INT32
     { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator());
       if $2 = "^-" then SynType.MeasurePower($1, - (fst $3), lhs parseState)
       else SynType.MeasurePower($1, fst $3, lhs parseState) }
  | atomType INFIX_AT_HAT_OP MINUS INT32
     { if $2 <> "^" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator());
       SynType.MeasurePower($1, - (fst $4), lhs parseState) }

/* Like appType but gives a deprecation error when a non-atomic type is used */
appTypeNonAtomicDeprecated:
  | appType arrayTypeSuffix 
      {  deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
         SynType.Array($2,$1,lhs parseState) }
  | appType HIGH_PRECEDENCE_BRACK_APP arrayTypeSuffix   /* only HPA for "name[]" allowed here */
      {  deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
         SynType.Array($3,$1,lhs parseState) }
  | appType appTypeConPower  
      { let mWhole = unionRanges (rhs parseState 1) $2.Range  // note: use "rhs parseState 1" to deal with parens in "(int) list"
        deprecatedWithError (FSComp.SR.parsNonAtomicType()) mWhole;
        SynType.App($2, None, [$1], [], None, true, mWhole) }
  | LPAREN appTypePrefixArguments rparen  appTypeConPower
      { let args, commas = $2
        mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) $4.Range); 
        SynType.App($4, None, args, commas, None, true, unionRanges (rhs parseState 1) $4.Range) }
  | powerTypeNonAtomicDeprecated 
      { $1 }
  | typar      COLON_GREATER typ                     
      {  deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
         let tp,typ = $1,$3 
         let m = lhs parseState 
         SynType.WithGlobalConstraints(SynType.Var (tp, rhs parseState 1), [WhereTyparSubtypeOfType(tp,typ,m)],m)  }
  | UNDERSCORE COLON_GREATER typ %prec COLON_GREATER 
      {  deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
         SynType.HashConstraint($3, lhs parseState) }

/* Like powerType but gives a deprecation warning if a non-atomic type is used */
powerTypeNonAtomicDeprecated:
  | atomType
    { $1 }
  | atomType INFIX_AT_HAT_OP INT32
     { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator());
       deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
       if $2 = "^-" then SynType.MeasurePower($1, - (fst $3), lhs parseState)
       else SynType.MeasurePower($1, fst $3, lhs parseState) }
  | atomType INFIX_AT_HAT_OP MINUS INT32
     { if $2 <> "^" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator());
       deprecatedWithError (FSComp.SR.parsNonAtomicType()) (lhs parseState);
       SynType.MeasurePower($1, - (fst $4), lhs parseState) }


/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */
/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */
atomType:
  | HASH atomType 
     { SynType.HashConstraint($2, lhs parseState) }
  | appTypeConPower %prec prec_atomtyp_path 
     { $1 }
  | UNDERSCORE 
     { SynType.Anon (lhs parseState) }
  | LPAREN typ rparen 
     {  $2 }
  | LPAREN typ recover      
     { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) 
       $2 }  
  | rawConstant 
     { SynType.StaticConstant($1, rhs parseState 1) }
  | NULL
     { let m = rhs parseState 1
       SynType.StaticConstant(SynConst.String (null, m), m) }
  | CONST atomicExpr
     {  let e,_ = $2
        SynType.StaticConstantExpr(e, e.Range)
     }
  | FALSE  
      { SynType.StaticConstant(SynConst.Bool false,lhs parseState) } 
  | TRUE  
      { SynType.StaticConstant(SynConst.Bool true,lhs parseState) } 
  | LPAREN error rparen   
     { (* silent recovery *) SynType.Anon (lhs parseState) }  
  | appTypeCon typeArgsNoHpaDeprecated %prec prec_atomtyp_path 
     { let mLessThan,mGreaterThan,args,commas,mWhole = $2 in SynType.App($1, Some(mLessThan), args, commas, mGreaterThan, false, unionRanges $1.Range mWhole) } 
  | atomType DOT path %prec prec_atomtyp_get_path 
     { SynType.LongIdentApp($1, $3, None, [], [], None, unionRanges (rhs parseState 1) $3.Range) } 
  | atomType DOT path typeArgsNoHpaDeprecated %prec prec_atomtyp_get_path 
     { let mLessThan,mGreaterThan,args,commas,mWhole = $4 
       SynType.LongIdentApp($1, $3, Some(mLessThan), args, commas, mGreaterThan, unionRanges $1.Range mWhole) } 
  | appTypeCon DOT ends_coming_soon_or_recover
     { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken())
       $1 } 


typeArgsNoHpaDeprecated:
  | typeArgsActual
     { let mLessThan, mGreaterThan, parsedOk, args, commas, mAll = $1
       if parsedOk then // if someone has "foo "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure());
       if $2 = "^-" then SynMeasure.Power($1, - (fst $3), lhs parseState)
       else SynMeasure.Power($1, fst $3, lhs parseState) }

  | measureTypeAtom INFIX_AT_HAT_OP MINUS INT32
     { if $2 <> "^" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure());
       SynMeasure.Power($1, - (fst $4), lhs parseState) }

  | INT32
     { if fst $1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure());
       SynMeasure.One }

measureTypeSeq:
  | measureTypePower
    { [$1] }
  | measureTypePower measureTypeSeq
    { $1 :: $2 }

measureTypeExpr:
  | measureTypeSeq
    { SynMeasure.Seq($1, lhs parseState) }
  | measureTypeExpr STAR measureTypeExpr
    { SynMeasure.Product($1, $3, lhs parseState) }
  | measureTypeExpr INFIX_STAR_DIV_MOD_OP measureTypeExpr
    { if $2 <> "*" && $2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure());
      if $2 = "*" then SynMeasure.Product($1, $3, lhs parseState)
      else SynMeasure.Divide($1, $3, lhs parseState) }
  | INFIX_STAR_DIV_MOD_OP measureTypeExpr
     { if $1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure());
       SynMeasure.Divide(SynMeasure.One, $2, lhs parseState) }
   
typar: 
  | QUOTE ident 
     {  let id = mkSynId (lhs parseState) ($2).idText
        Typar(id ,NoStaticReq,false) }
  | staticallyKnownHeadTypar 
     { $1 }

staticallyKnownHeadTypar: 
  | INFIX_AT_HAT_OP ident 
    {  if $1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedTypeParameter());
       Typar($2,HeadTypeStaticReq,false) }

  

ident: 
  | IDENT 
     { ident($1,rhs parseState 1) } 

path: 
  | GLOBAL
      { LongIdentWithDots([ident(MangledGlobalName,rhs parseState 1)],[]) }
  | ident  
     { LongIdentWithDots([$1],[]) }
  | path DOT ident  
     { let (LongIdentWithDots(lid,dotms)) = $1 in LongIdentWithDots(lid @ [$3], dotms @ [rhs parseState 2]) } 
  | path DOT ends_coming_soon_or_recover  
     { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken())
       let (LongIdentWithDots(lid,dotms)) = $1 in LongIdentWithDots(lid, dotms @ [rhs parseState 2])  } 

opName: 
  | LPAREN operatorName rparen  
     {  ident(CompileOpName $2,rhs parseState 2) }
  | LPAREN error rparen  
     {  reportParseErrorAt (lhs parseState) (FSComp.SR.parsErrorParsingAsOperatorName()); ident(CompileOpName "****",rhs parseState 2) }
  | LPAREN_STAR_RPAREN
     {  ident(CompileOpName "*",rhs parseState 1) }

/* active pattern value names */
  | LPAREN barNames BAR rparen 
     { let text = ("|"^String.concat "|" (List.rev $2) ^ "|")
       ident(text,rhs2 parseState 2 3) }
                         
  | LPAREN barNames BAR UNDERSCORE BAR rparen 
     { let text = ("|"^String.concat "|" (List.rev $2) ^ "|_|" )
       ident(text,rhs2 parseState 2 5) }

operatorName: 
  | PREFIX_OP 
      { if not (IsValidPrefixOperatorDefinitionName $1) then 
            reportParseErrorAt (lhs parseState) (FSComp.SR.parsInvalidPrefixOperatorDefinition());
        $1 }
  | INFIX_STAR_STAR_OP  { $1 }
  | INFIX_COMPARE_OP { $1 }
  | INFIX_AT_HAT_OP  { $1 }
  | INFIX_BAR_OP  { $1 }
  | INFIX_AMP_OP { $1 }
  | PLUS_MINUS_OP  { $1 }
  | INFIX_STAR_DIV_MOD_OP { $1 }
  | DOLLAR { "$" }
  | ADJACENT_PREFIX_OP { $1 }
  | MINUS { "-" }
  | STAR { "*" }
  | EQUALS { "=" }
  | OR { "or" }
  | LESS { "<" }
  | GREATER { ">" }
  | QMARK { "?" }
  | AMP { "&" }
  | AMP_AMP { "&&" }
  | BAR_BAR { "||" }
  | COLON_EQUALS { ":=" }
  | FUNKY_OPERATOR_NAME 
      { if $1 <> ".[]"  && $1 <> ".()" && $1 <> ".()<-" then 
             deprecatedOperator (lhs parseState); 
        $1 }
  | PERCENT_OP { $1 }
  | DOT_DOT { ".." }
  | DOT_DOT DOT_DOT { ".. .." }
  | LQUOTE RQUOTE 
      { if $1 <> $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuotationName(fst $1));  
        fst $1 } 

barName: 
  | IDENT 
      { if not (String.isUpper $1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseMustBeginWithUpperCase());  
        $1 }

barNames: 
  | BAR barName
      { [$2] }
  | barNames BAR barName
      { $3 :: $1 }

identOrOp: 
  | ident  
     { $1 } 
  | opName 
     { $1 }

/* path ending in an op */
/* note, only used in atomicPatternLongIdent */
pathOp: 
  | ident  
     { LongIdentWithDots([$1],[]) }
  | opName 
     { LongIdentWithDots([$1],[]) }
  | ident DOT pathOp 
     { let (LongIdentWithDots(lid,dotms)) = $3 in LongIdentWithDots($1 :: lid, rhs parseState 2 :: dotms) } 
  | ident DOT error  
     { (* silent recovery *) LongIdentWithDots([$1],[rhs parseState 2]) }  


/* nameop is identOrOp not used as part of a path */
nameop: 
  | identOrOp  { $1 } 

topSeparator: 
  | SEMICOLON { } 
  | SEMICOLON_SEMICOLON { }
  | OBLOCKSEP { }  

topSeparators: 
  | topSeparator                     { } 
  | topSeparator topSeparators { }

interactiveSeparator: 
  | SEMICOLON { } 
  | OBLOCKSEP { }  

interactiveSeparators: 
  | interactiveSeparator                     { } 
  | interactiveSeparator interactiveSeparators { }

opt_interactiveSeparators: 
  | interactiveSeparator opt_interactiveSeparators { }
  |                        { } 

opt_topSeparators: 
  | topSeparator opt_topSeparators { }
  |                      { } 

seps: 
  | OBLOCKSEP { } 
  | SEMICOLON { }
  | OBLOCKSEP SEMICOLON { }
  | SEMICOLON OBLOCKSEP { }

/* An 'end' that's optional only in #light, where an ODECLEND gets inserted, and explicit 'end's get converted to OEND */
declEnd: 
  | ODECLEND 
      { } 
  | OEND 
      {   }
  | END 
      {} 

/* An 'end' that's optional in both #light and #heavy */
opt_declEnd: 
  | ODECLEND 
      {} 
  | OEND 
      { } 
  | END 
      {} 
  |     
      {} 

opt_ODECLEND: 
  | ODECLEND { } 
  |          { }

deprecated_opt_equals: 
  | EQUALS    { deprecatedWithError (FSComp.SR.parsNoEqualShouldFollowNamespace()) (lhs parseState); () } 
  |           {  }

opt_OBLOCKSEP: 
  | OBLOCKSEP { }
  |          { } 

opt_seps: 
  | seps { }
  |      { } 

opt_rec: 
  | REC { true }
  |     { false } 

opt_bar: 
  | BAR { } 
  |     { } 

opt_inline: 
  | INLINE { true } 
  |        { false }

opt_mutable: 
  | MUTABLE { true } 
  |         { false }

doToken: 
  | DO  { }
  | ODO { }

doneDeclEnd: 
  | DONE { }
  | ODECLEND { }  /* DONE gets thrown away by the lexfilter in favour of ODECLEND */

structOrBegin: 
  | STRUCT { mlCompatWarning (FSComp.SR.parsSyntaxModuleStructEndDeprecated()) (lhs parseState); }
  | BEGIN { } 

sigOrBegin: 
  | SIG { mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState); }
  | BEGIN { } 

colonOrEquals: 
  | COLON { mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState); }
  | EQUALS { } 

opt_HASH: 
  | HASH {} 

opt_HIGH_PRECEDENCE_APP:
  | HIGH_PRECEDENCE_BRACK_APP { }
  | HIGH_PRECEDENCE_PAREN_APP { }
  |    { }

opt_HIGH_PRECEDENCE_TYAPP:
  | HIGH_PRECEDENCE_TYAPP { }
  |    { }

type_keyword:
  | TYPE_COMING_SOON type_keyword { }
  | TYPE_IS_HERE { }
  | TYPE { }

module_keyword:
  | MODULE_COMING_SOON module_keyword { }
  | MODULE_IS_HERE { }
  | MODULE { }

rbrace:
  | RBRACE_COMING_SOON rbrace { }
  | RBRACE_IS_HERE { }
  | RBRACE { }

rparen:
  | RPAREN_COMING_SOON rparen { }
  | RPAREN_IS_HERE { }
  | RPAREN { }

oblockend:
  | OBLOCKEND_COMING_SOON oblockend { }
  | OBLOCKEND_IS_HERE { }
  | OBLOCKEND { }

ends_other_than_rparen_coming_soon_or_recover:
  | TYPE_COMING_SOON { false }
  | MODULE_COMING_SOON { false }
  | RBRACE_COMING_SOON { false }
  | OBLOCKEND_COMING_SOON { false }
  | recover { $1 }

ends_coming_soon_or_recover:
  | TYPE_COMING_SOON { false }
  | MODULE_COMING_SOON { false }
  | RBRACE_COMING_SOON { false }
  | RPAREN_COMING_SOON { false }
  | OBLOCKEND_COMING_SOON { false }
  | recover { $1 }fsharp-3.0.34/src/fsharp/ReferenceResolution.fs0000664000175000017500000005207012260314606020462 0ustar  chrischrisnamespace Viz

/// This type exists to have a concrete 'Target' type for a DebuggerVisualizerAttribute.
/// Ideally it would be out in its own assembly, but then the compiler would need to take a dependency on that assembly, so instead we 
/// pragmatically just shove this into the compiler assembly itself.
type internal Visualizable(o:obj) =
    member this.Data = o
    /// assuming this assembly is already in the debuggee process, then Viz.Visualiable.Make(foo) in the Watch window will make a visualizer for foo
    static member Make(o:obj) = new Visualizable(o)

namespace Microsoft.FSharp.Compiler

module internal MSBuildResolver = 

    open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library 
    exception ResolutionFailure
    
    type ResolvedFrom =
        | AssemblyFolders
        | AssemblyFoldersEx
        | TargetFrameworkDirectory
        | RawFileName
        | GlobalAssemblyCache
        | Path of string
        | Unknown
            
    type ResolutionEnvironment = CompileTimeLike | RuntimeLike | DesigntimeLike
    
#if SILVERLIGHT
#else
    open System
    open System.Reflection
    open Microsoft.Build.Tasks
    open Microsoft.Build.Utilities
    open Microsoft.Build.Framework
    open Microsoft.Build.BuildEngine
    open System.IO

    type ResolvedFile = {
            itemSpec:string
            resolvedFrom:ResolvedFrom
            fusionName:string
            version:string
            redist:string        
            baggage:string
        }
        with override this.ToString() = sprintf "ResolvedFile(%s)" this.itemSpec
    
    type ResolutionResults = {
        resolvedFiles:ResolvedFile array
        referenceDependencyPaths:string array
        relatedPaths:string array
        referenceSatellitePaths:string array
        referenceScatterPaths:string array
        referenceCopyLocalPaths:string array
        suggestedBindingRedirects:string array
        }

    let DotNetFrameworkReferenceAssembliesRootDirectory = 
        // Note that ProgramFilesX86 is correct for both x86 and x64 architectures (the reference assemblies are always in the 32-bit location, which is PF(x86) on an x64 machine)
        let PF = 
            //System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86) // This API is not available to bootstrap compiler
            match System.Environment.GetEnvironmentVariable("ProgramFiles(x86)") with
            | null -> System.Environment.GetEnvironmentVariable("ProgramFiles")  // if PFx86 is null, then we are 32-bit and just get PF
            | s -> s 
        PF + @"\Reference Assemblies\Microsoft\Framework\.NETFramework"
        
    let ReplaceFrameworkVariables(dirs) =
        let windowsFramework = System.Environment.GetEnvironmentVariable("windir")+ @"\Microsoft.NET\Framework"
        let referenceAssemblies = DotNetFrameworkReferenceAssembliesRootDirectory
        dirs|>List.map(fun (d:string)->d.Replace("{WindowsFramework}",windowsFramework).Replace("{ReferenceAssemblies}",referenceAssemblies))
               

    /// Derive the target framework directories.        
    let DeriveTargetFrameworkDirectories
                (targetFrameworkVersion:string,             // e.g. v2.0, v3.0, v3.5, v4.0 etc
                 excludeNonExecutableAssemblies:bool,       // True when the assembly must be executable and not just a stub meta assembly.
                 logmessage:string->unit) =
        let targetFrameworkVersion =
            if not(targetFrameworkVersion.StartsWith("v",StringComparison.Ordinal)) then "v"^targetFrameworkVersion
            else targetFrameworkVersion
        let FrameworkStartsWith(short) =
            targetFrameworkVersion.StartsWith(short,StringComparison.Ordinal)
        let result =
            if FrameworkStartsWith("v1.0") then ReplaceFrameworkVariables([@"{WindowsFramework}\v1.0.3705"])
            else if FrameworkStartsWith("v1.1") then ReplaceFrameworkVariables([@"{WindowsFramework}\v1.1.4322"])
            else if FrameworkStartsWith("v2.0") then ReplaceFrameworkVariables([@"{WindowsFramework}\v2.0.50727"])
            else if FrameworkStartsWith("v3.0") then ReplaceFrameworkVariables([@"{ReferenceAssemblies}\v3.0"; @"{WindowsFramework}\v3.0"; @"{WindowsFramework}\v2.0.50727"])
            else if FrameworkStartsWith("v3.5") then ReplaceFrameworkVariables([@"{ReferenceAssemblies}\v3.5"; @"{WindowsFramework}\v3.5"; @"{ReferenceAssemblies}\v3.0"; @"{WindowsFramework}\v3.0"; @"{WindowsFramework}\v2.0.50727"])
            else if FrameworkStartsWith("v4.0") then ReplaceFrameworkVariables([@"{ReferenceAssemblies}\v4.0"])  // starting with .Net 4.0, the runtime dirs (WindowsFramework) are never used by MSBuild RAR
            else if FrameworkStartsWith("v4.5") then ReplaceFrameworkVariables([@"{ReferenceAssemblies}\v4.5"])         
            else (ignore(excludeNonExecutableAssemblies); [])

        let result = result |> Array.ofList                
        logmessage (sprintf "Derived target framework directories for version %s are: %s" targetFrameworkVersion (String.Join(",", result)))                
        result    
 
    /// Decode the ResolvedFrom code from MSBuild.
    let DecodeResolvedFrom(resolvedFrom:string) : ResolvedFrom = 
        let Same a b = 
            String.CompareOrdinal(a,b) = 0            
        match resolvedFrom with
        | r when Same "{RawFileName}" r -> RawFileName
        | r when Same "{GAC}" r -> GlobalAssemblyCache
        | r when Same "{TargetFrameworkDirectory}" r -> TargetFrameworkDirectory
        | r when Same "{AssemblyFolders}" r -> AssemblyFolders
        | r when r.Length >= 10 && Same "{Registry:" (r.Substring(0,10)) -> AssemblyFoldersEx
        | r -> ResolvedFrom.Path r
        

    type ErrorWarningCallbackSig = ((*code:*)string->(*message*)string->unit)
                      
    type Foregrounded =
        | ForegroundedMessage of string 
        | ForegroundedError of string * string
        | ForegroundedWarning of string * string

    let ResolveCore(
                    resolutionEnvironment: ResolutionEnvironment,
                    references:(string*(*baggage*)string)[], 
                    targetFrameworkVersion:string, 
                    targetFrameworkDirectories:string list,
                    targetProcessorArchitecture:string,                
                    outputDirectory:string, 
                    fsharpCoreExplicitDirOrFSharpBinariesDir:string,
                    explicitIncludeDirs:string list,
                    implicitIncludeDir:string,
                    frameworkRegistryBase:string, 
                    assemblyFoldersSuffix:string, 
                    assemblyFoldersConditions:string, 
                    allowRawFileName:bool,
                    logmessage:string->unit, 
                    logwarning:ErrorWarningCallbackSig, 
                    logerror:ErrorWarningCallbackSig ) =

        // Message Foregrounding:
        //   In version 4.0 MSBuild began calling log methods on a background (non-UI) thread. If there is an exception thrown from 
        //   logmessage, logwarning or logerror then it would kill the process.
        //   The fix is to catch these exceptions and log the rest of the messages to a list to output at the end.
        //   It looks simpler to always just accumulate the messages during resolution and show them all at the end, but then 
        //   we couldn't see the messages as resolution progresses.
        let foregrounded = ref []                
        let backgroundException : exn option ref = ref None
        
        let logmessage message = 
            match !backgroundException with
            | Some _ -> foregrounded := ForegroundedMessage(message) :: !foregrounded
            | None -> 
                try 
                    logmessage message
                with e ->
                    backgroundException := Some(e)
                    foregrounded := ForegroundedMessage(message) :: !foregrounded
                
        let logwarning code message = 
            match !backgroundException with
            | Some _ -> foregrounded := ForegroundedWarning(code,message) :: !foregrounded
            | None -> 
                try 
                    logwarning code message
                with e ->
                    backgroundException := Some(e)     
                    foregrounded := ForegroundedWarning(code,message) :: !foregrounded      
                    
        let logerror code message = 
            match !backgroundException with
            | Some _ -> foregrounded := ForegroundedError(code,message) :: !foregrounded
            | None -> 
                try 
                    logerror code message
                with e ->
                    backgroundException := Some(e)     
                    foregrounded := ForegroundedError(code,message) :: !foregrounded                             
                
                
        let engine = { new IBuildEngine with 
                    member be.BuildProjectFile(projectFileName, targetNames, globalProperties, targetOutputs) = true
                    member be.LogCustomEvent(e) = logmessage e.Message
                    member be.LogErrorEvent(e) = logerror e.Code e.Message
                    member be.LogMessageEvent(e) = logmessage e.Message
                    member be.LogWarningEvent(e) = logwarning e.Code e.Message
                    member be.ColumnNumberOfTaskNode with get() = 1
                    member be.LineNumberOfTaskNode with get() = 1
                    member be.ContinueOnError with get() = true
                    member be.ProjectFileOfTaskNode with get() = "" }
                    
        let rar = new ResolveAssemblyReference()
        rar.BuildEngine <- engine
        
        // Derive target framework directory if none was supplied.
        let excludeNonExecutableAssemblies = (resolutionEnvironment = RuntimeLike)
        let targetFrameworkDirectories =
            if targetFrameworkDirectories=[] then DeriveTargetFrameworkDirectories(targetFrameworkVersion,excludeNonExecutableAssemblies,logmessage) 
            else targetFrameworkDirectories |> Array.ofList
            
        // Filter for null and zero length, and escape backslashes so legitimate path characters aren't mistaken for
        // escape characters (E.g., ".\r.dll")            
        let explicitIncludeDirs = explicitIncludeDirs |> List.filter(fun eid->not(String.IsNullOrEmpty(eid)))
        let references = references |> Array.filter(fun (path,_)->not(String.IsNullOrEmpty(path))) // |> Array.map (fun (path,baggage) -> (path.Replace("\\","\\\\"),baggage))
       
        rar.TargetFrameworkDirectories <- targetFrameworkDirectories 
        rar.FindRelatedFiles <- false
        rar.FindDependencies <- false
        rar.FindSatellites <- false
        rar.FindSerializationAssemblies <- false
#if BUILDING_WITH_LKG
        ignore targetProcessorArchitecture
#else       
        let targetedRuntimeVersionValue = typeof.Assembly.ImageRuntimeVersion
#if CROSS_PLATFORM_COMPILER 
        // The properties TargetedRuntimeVersion and CopyLocalDependenciesWhenParentReferenceInGac 
        // are not available to the cross-platform compiler since they are Windows only (not defined in the Mono  
        // 4.0 XBuild support). So we only set them if available (to avoid a compile-time dependency). 
        let runningOnMono = try System.Type.GetType("Mono.Runtime") <> null with e-> false         
        if not runningOnMono then  
            typeof.InvokeMember("TargetedRuntimeVersion",(BindingFlags.Instance ||| BindingFlags.SetProperty ||| BindingFlags.Public),null,rar,[| box targetedRuntimeVersionValue |])  |> ignore 
            typeof.InvokeMember("CopyLocalDependenciesWhenParentReferenceInGac",(BindingFlags.Instance ||| BindingFlags.SetProperty ||| BindingFlags.Public),null,rar,[| box true |])  |> ignore 
#else
        rar.TargetedRuntimeVersion <- targetedRuntimeVersionValue
        rar.CopyLocalDependenciesWhenParentReferenceInGac <- true
#endif
#endif        
        rar.TargetProcessorArchitecture <- targetProcessorArchitecture
        rar.Assemblies <- [|for (referenceName,baggage) in references -> 
                                        let item = new Microsoft.Build.Utilities.TaskItem(referenceName)
                                        item.SetMetadata("Baggage", baggage)
                                        item:>ITaskItem|]

        let rawFileNamePath = if allowRawFileName then ["{RawFileName}"] else []
        let searchPaths = 
            match resolutionEnvironment with
            | DesigntimeLike
            | RuntimeLike ->
                logmessage("Using scripting resolution precedence.")                      
                // These are search paths for runtime-like or scripting resolution. GAC searching is present.
                rawFileNamePath @        // Quick-resolve straight to filename first 
                explicitIncludeDirs @    // From -I, #I
                [implicitIncludeDir] @   // Usually the project directory
                [fsharpCoreExplicitDirOrFSharpBinariesDir] @    // Location of explicit reference to FSharp.Core, otherwise location of fsc.exe
                ["{TargetFrameworkDirectory}"] @
                [sprintf "{Registry:%s,%s,%s%s}" frameworkRegistryBase targetFrameworkVersion assemblyFoldersSuffix assemblyFoldersConditions] @
                ["{AssemblyFolders}"] @
                ["{GAC}"] 
            | CompileTimeLike -> 
                logmessage("Using compilation resolution precedence.")                      
                // These are search paths for compile-like resolution. GAC searching is not present.
                ["{TargetFrameworkDirectory}"] @
                rawFileNamePath @        // Quick-resolve straight to filename first
                explicitIncludeDirs @    // From -I, #I
                [implicitIncludeDir] @   // Usually the project directory
                [fsharpCoreExplicitDirOrFSharpBinariesDir] @    // Location of explicit reference to FSharp.Core, otherwise location of fsc.exe
                [sprintf "{Registry:%s,%s,%s%s}" frameworkRegistryBase targetFrameworkVersion assemblyFoldersSuffix assemblyFoldersConditions] @ // Like {Registry:Software\Microsoft\.NETFramework,v2.0,AssemblyFoldersEx}
                ["{AssemblyFolders}"] @
                [outputDirectory] @
                ["{GAC}"]     
    
        rar.SearchPaths <- searchPaths |> Array.ofList
                                  
        rar.AllowedAssemblyExtensions <- [| ".dll" ; ".exe" |]     
        
        let succeeded = rar.Execute()
        
        // Unroll any foregrounded messages
        match !backgroundException with
        | Some(backGroundException) ->
            logwarning "" "Saw error on logger thread during resolution."
            logwarning "" (sprintf "%A" backGroundException)
            logwarning "" "Showing messages seen after exception."

            !foregrounded
            |> List.iter(fun message-> 
               match message with 
               | ForegroundedMessage(message) -> logmessage message
               | ForegroundedWarning(code,message) -> logwarning code message
               | ForegroundedError(code,message) -> logerror code message )
        | None -> ()            

        if not succeeded then 
            raise ResolutionFailure

        {
            resolvedFiles = [| for p in rar.ResolvedFiles -> {itemSpec = p.ItemSpec; 
                                                              resolvedFrom = DecodeResolvedFrom(p.GetMetadata("ResolvedFrom"));
                                                              fusionName = p.GetMetadata("FusionName"); 
                                                              version = p.GetMetadata("Version"); 
                                                              redist = p.GetMetadata("Redist"); 
                                                              baggage = p.GetMetadata("Baggage") } |]
            referenceDependencyPaths = [| for p in rar.ResolvedDependencyFiles -> p.ItemSpec |]
            relatedPaths = [| for p in rar.RelatedFiles -> p.ItemSpec |]
            referenceSatellitePaths = [| for p in rar.SatelliteFiles -> p.ItemSpec |]
            referenceScatterPaths = [| for p in rar.ScatterFiles -> p.ItemSpec |]
            referenceCopyLocalPaths = [| for p in rar.CopyLocalFiles -> p.ItemSpec |]
            suggestedBindingRedirects = [| for p in rar.SuggestedRedirects -> p.ItemSpec |]
        }

    let Resolve(
                resolutionEnvironment: ResolutionEnvironment,
                references:(string*(*baggage*)string)[], 
                targetFrameworkVersion:string, 
                targetFrameworkDirectories:string list,
                targetProcessorArchitecture:string,                
                outputDirectory:string, 
                fsharpCoreExplicitDirOrFSharpBinariesDir:string,
                explicitIncludeDirs:string list,
                implicitIncludeDir:string,
                frameworkRegistryBase:string, 
                assemblyFoldersSuffix:string, 
                assemblyFoldersConditions:string, 
                logmessage:string->unit, 
                logwarning:ErrorWarningCallbackSig, 
                logerror:ErrorWarningCallbackSig ) =
        // The {RawFileName} target is 'dangerous', in the sense that is uses Directory.GetCurrentDirectory() to resolve unrooted file paths.
        // It is unreliable to use this mutable global state inside Visual Studio.  As a result, we partition all references into a "rooted" set
        // (which contains e.g. C:\MyDir\MyAssem.dll) and "unrooted" (everything else).  We only allow "rooted" to use {RawFileName}.  Note that
        // unrooted may still find 'local' assemblies by virtue of the fact that "implicitIncludeDir" is one of the places searched during 
        // assembly resolution.
        let references = references |> Array.map (fun ((file,baggage) as data) -> 
            // However, MSBuild will not resolve 'relative' paths, even when e.g. implicitIncludeDir is part of the search.  As a result,
            // if we have an unrooted path+filename, we'll assume this is relative to the project directory and root it.
            if FileSystem.IsPathRootedShim(file) then
                data  // fine, e.g. "C:\Dir\foo.dll"
            elif not(file.Contains("\\") || file.Contains("/")) then
                data  // fine, e.g. "System.Transactions.dll"
            else
                // we have a 'relative path', e.g. "bin/Debug/foo.exe" or "..\Yadda\bar.dll"
                // turn it into an absolute path based at implicitIncludeDir
                (System.IO.Path.Combine(implicitIncludeDir, file), baggage)
        )
        let rooted, unrooted = references |> Array.partition (fun (file,_baggage) -> FileSystem.IsPathRootedShim(file))

        let CallResolveCore(references, allowRawFileName) =    
            if Array.isEmpty references then 
                {
                    resolvedFiles = [| |]
                    referenceDependencyPaths = [| |]
                    relatedPaths = [| |]
                    referenceSatellitePaths = [| |]
                    referenceScatterPaths = [| |]
                    referenceCopyLocalPaths = [| |]
                    suggestedBindingRedirects = [| |]
                }
            else
                // all the params are the same...
                ResolveCore(
                    resolutionEnvironment,
                    references, // ... except this
                    targetFrameworkVersion, 
                    targetFrameworkDirectories,
                    targetProcessorArchitecture,                
                    outputDirectory, 
                    fsharpCoreExplicitDirOrFSharpBinariesDir,
                    explicitIncludeDirs,
                    implicitIncludeDir,
                    frameworkRegistryBase, 
                    assemblyFoldersSuffix, 
                    assemblyFoldersConditions, 
                    allowRawFileName, // ... and this
                    logmessage, 
                    logwarning, 
                    logerror)

        let rootedResults = CallResolveCore(rooted, true)
        let unrootedResults = CallResolveCore(unrooted, false)
        // now unify the two sets of results
        {
            resolvedFiles = Array.concat [| rootedResults.resolvedFiles; unrootedResults.resolvedFiles |]
            referenceDependencyPaths = set rootedResults.referenceDependencyPaths |> Set.union (set unrootedResults.referenceDependencyPaths) |> Set.toArray 
            relatedPaths = set rootedResults.relatedPaths |> Set.union (set unrootedResults.relatedPaths) |> Set.toArray 
            referenceSatellitePaths = set rootedResults.referenceSatellitePaths |> Set.union (set unrootedResults.referenceSatellitePaths) |> Set.toArray 
            referenceScatterPaths = set rootedResults.referenceScatterPaths |> Set.union (set unrootedResults.referenceScatterPaths) |> Set.toArray 
            referenceCopyLocalPaths = set rootedResults.referenceCopyLocalPaths |> Set.union (set unrootedResults.referenceCopyLocalPaths) |> Set.toArray 
            suggestedBindingRedirects = set rootedResults.suggestedBindingRedirects |> Set.union (set unrootedResults.suggestedBindingRedirects) |> Set.toArray 
        }

#endif
fsharp-3.0.34/src/fsharp/tc.fs0000775000175000017500000323142212260314606015114 0ustar  chrischris//----------------------------------------------------------------------------
//
// Copyright (c) 2002-2012 Microsoft Corporation. 
//
// This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
// copy of the license can be found in the License.html file at the root of this distribution. 
// By using this source code in any fashion, you are agreeing to be bound 
// by the terms of the Apache License, Version 2.0.
//
// You must not remove this notice, or any other, from this software.
//----------------------------------------------------------------------------

/// The typechecker.  Left-to-right constrained type checking 
/// with generalization at appropriate points.
module internal Microsoft.FSharp.Compiler.TypeChecker

open Internal.Utilities
open Internal.Utilities.Collections
open Microsoft.FSharp.Compiler.AbstractIL 
open Microsoft.FSharp.Compiler.AbstractIL.IL 
open Microsoft.FSharp.Compiler.AbstractIL.Internal 
open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library
open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics 

open Microsoft.FSharp.Compiler 
open Microsoft.FSharp.Compiler.Range
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.ErrorLogger
open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.Tastops.DebugPrint
open Microsoft.FSharp.Compiler.Patcompile
open Microsoft.FSharp.Compiler.Env
open Microsoft.FSharp.Compiler.AbstractIL.IL 
open Microsoft.FSharp.Compiler.Lib
open Microsoft.FSharp.Compiler.Layout
open Microsoft.FSharp.Compiler.Outcome
open Microsoft.FSharp.Compiler.Infos
open Microsoft.FSharp.Compiler.Infos.AccessibilityLogic
open Microsoft.FSharp.Compiler.Infos.AttributeChecking
open Microsoft.FSharp.Compiler.Typrelns
open Microsoft.FSharp.Compiler.ConstraintSolver
open Microsoft.FSharp.Compiler.Nameres
open Microsoft.FSharp.Compiler.PrettyNaming
open System
open System.Collections.Generic

#if EXTENSIONTYPING
open Microsoft.FSharp.Compiler.ExtensionTyping
#endif

//-------------------------------------------------------------------------
// Helpers that should be elsewhere
//------------------------------------------------------------------------- 

let isThreadOrContextStatic g attrs = 
    HasFSharpAttribute g g.attrib_ThreadStaticAttribute attrs ||
    HasFSharpAttribute g g.attrib_ContextStaticAttribute attrs 

let mkNilListPat g m ty = TPat_unioncase(g.nil_ucref,[ty],[],m)
let mkConsListPat g ty ph pt = TPat_unioncase(g.cons_ucref,[ty],[ph;pt],unionRanges ph.Range pt.Range)

let mkCompGenLetIn m nm ty e f = 
    let v,ve = mkCompGenLocal m nm ty
    mkCompGenLet m v e (f (v,ve))

let mkUnitDelayLambda g m e =
    let uv,_ = mkCompGenLocal m "unitVar" g.unit_ty
    mkLambda m uv (e,tyOfExpr g e) 


//-------------------------------------------------------------------------
// Errors.
//------------------------------------------------------------------------- 

exception BakedInMemberConstraintName of string * range
exception FunctionExpected of DisplayEnv * TType * range
exception NotAFunction of DisplayEnv * TType * range * range
exception Recursion of DisplayEnv * Ident * TType * TType  * range
exception RecursiveUseCheckedAtRuntime of DisplayEnv * ValRef * range
exception LetRecEvaluatedOutOfOrder of DisplayEnv * ValRef * ValRef * range
exception LetRecCheckedAtRuntime of range
exception LetRecUnsound of DisplayEnv * ValRef list * range
exception TyconBadArgs of DisplayEnv * TyconRef * int * range
exception UnionCaseWrongArguments of DisplayEnv * int * int * range
exception UnionCaseWrongNumberOfArgs of DisplayEnv * int * int * range
exception FieldsFromDifferentTypes of DisplayEnv * RecdFieldRef * RecdFieldRef * range
exception FieldGivenTwice of DisplayEnv * Tast.RecdFieldRef * range
exception MissingFields of string list * range
exception FunctionValueUnexpected of DisplayEnv * TType * range
exception UnitTypeExpected of DisplayEnv * TType * bool * range
exception UnionPatternsBindDifferentNames of range
exception VarBoundTwice of Ident
exception ValueRestriction of DisplayEnv * bool * Val * Typar * range
exception FieldNotMutable of DisplayEnv * Tast.RecdFieldRef * range
exception ValNotMutable of DisplayEnv * ValRef * range
exception ValNotLocal of DisplayEnv * ValRef * range
exception InvalidRuntimeCoercion of DisplayEnv * TType * TType * range
exception IndeterminateRuntimeCoercion of DisplayEnv * TType * TType * range
exception IndeterminateStaticCoercion of DisplayEnv * TType * TType * range
exception RuntimeCoercionSourceSealed of DisplayEnv * TType * range
exception CoercionTargetSealed of DisplayEnv * TType * range
exception UpcastUnnecessary of range
exception TypeTestUnnecessary of range
exception StaticCoercionShouldUseBox of DisplayEnv * TType * TType * range
exception SelfRefObjCtor of bool * range
exception VirtualAugmentationOnNullValuedType of range
exception NonVirtualAugmentationOnNullValuedType of range
exception UseOfAddressOfOperator of range
exception DeprecatedThreadStaticBindingWarning of range
exception IntfImplInIntrinsicAugmentation of range
exception IntfImplInExtrinsicAugmentation of range
exception OverrideInIntrinsicAugmentation of range
exception OverrideInExtrinsicAugmentation of range
exception NonUniqueInferredAbstractSlot of TcGlobals * DisplayEnv * string * MethInfo * MethInfo * range
exception StandardOperatorRedefinitionWarning of string * range


// Identify any security attributes
let IsSecurityAttribute g amap (casmap : Dictionary) (Attrib(tcref,_,_,_,_,_,_)) m =
    // There's no CAS on Silverlight, so we have to be careful here
    match g.attrib_SecurityAttribute.TyconRef.TryDeref with
    | Some _ -> 
       let tcs = tcref.Stamp
       if casmap.ContainsKey(tcs) then
         casmap.[tcs]
       else
         let exists = ExistsInEntireHierarchyOfType (fun t -> typeEquiv g t (mkAppTy g.attrib_SecurityAttribute.TyconRef [])) g amap m AllowMultiIntfInstantiations.No (mkAppTy tcref [])
         casmap.[tcs] <- exists
         exists
    | _ -> false  

let IsSecurityCriticalAttribute g (Attrib(tcref,_,_,_,_,_,_)) =
    (tyconRefEq g tcref g.attrib_SecurityCriticalAttribute.TyconRef || tyconRefEq g tcref g.attrib_SecuritySafeCriticalAttribute.TyconRef)

let RecdFieldInstanceChecks g ad m (rfinfo:RecdFieldInfo) = 
    if rfinfo.IsStatic then error (Error (FSComp.SR.tcStaticFieldUsedWhenInstanceFieldExpected(),m));
    CheckRecdFieldInfoAttributes g rfinfo m |> CommitOperationResult;        
    CheckRecdFieldInfoAccessible m ad rfinfo

let ILFieldInstanceChecks  g amap ad m (finfo :ILFieldInfo) =
    if finfo.IsStatic then error (Error (FSComp.SR.tcStaticFieldUsedWhenInstanceFieldExpected(),m));
    CheckILFieldInfoAccessible g amap m ad finfo;
    CheckILFieldAttributes g finfo m

let MethInfoChecks g amap isInstance tyargsOpt objArgs ad m (minfo:MethInfo)  =
    if minfo.IsInstance <> isInstance then
      if isInstance then 
        error (Error (FSComp.SR.csMethodIsNotAnInstanceMethod(minfo.LogicalName),m));
      else        
        error (Error (FSComp.SR.csMethodIsNotAStaticMethod(minfo.LogicalName),m));

    // Eliminate the 'protected' portion of the accessibility domain for instance accesses
    let ad = 
        match objArgs,ad with 
        | [objArg],AccessibleFrom(paths,Some tcref) -> 
            let objArgTy = tyOfExpr g objArg 
            let ty = generalizedTyconRef tcref
            // We get to keep our rights if the type we're in subsumes the object argument type
            if TypeFeasiblySubsumesType 0 g amap m ty CanCoerce objArgTy then
                ad
            // We get to keep our rights if this is a base call
            elif IsBaseCall objArgs then 
                ad
            else
                AccessibleFrom(paths, None) 
        | _ -> ad

    if not (IsMethInfoAccessible amap m  ad minfo) then 
      error (Error (FSComp.SR.tcMethodNotAccessible(minfo.LogicalName),m));
    CheckMethInfoAttributes g m tyargsOpt minfo |> CommitOperationResult


let CheckRecdFieldMutation m denv (rfinfo:RecdFieldInfo) = 
    if not rfinfo.RecdField.IsMutable then error (FieldNotMutable(denv,rfinfo.RecdFieldRef,m));

//-------------------------------------------------------------------------
// Information about object constructors
//------------------------------------------------------------------------- 

type SafeInitData = 
    | SafeInitField of RecdFieldRef * RecdField
    | NoSafeInitInfo 
            
type CtorInfo = 
    { // Object model constructors have a very specific form to satisfy .NET limitations.
      // For "new = \arg. { new C with ... }"; 
      //     ctor = 3 indicates about to type check "\arg. (body)", 
      //     ctor = 2 indicates about to type check "body" 
      //     ctor = 1 indicates actually type checking the body expression 
      // 0 indicates everywhere else, including auxiliary expressions such e1 in "let x = e1 in { new ... }" 
      // REVIEW: clean up this rather odd approach ... 
      ctorShapeCounter: int;
      /// A handle to the ref cell to hold results of 'this' for 'type X() as x = ...' and 'new() as x = ...' constructs
      /// in case 'x' is used in the arguments to the 'inherits' call.
      safeThisValOpt: Val option; 
      /// A handle to the boolean ref cell to hold success of initialized 'this' for 'type X() as x = ...' constructs 
      safeInitInfo: SafeInitData; 
      ctorIsImplicit: bool  
    }
    
//-------------------------------------------------------------------------
// Type environments. 
//    - Named items in scope (values)
//    - Record of type variables that can't be generalized
//    - Our 'location' as a concrete compilation path
//    - mutable accumulator for the module type currently being accumulated 
//------------------------------------------------------------------------- 

[]
type UngeneralizableItem(computeFreeTyvars : (unit -> FreeTyvars)) = 

    // Flag is for: have we determined that this item definitely has 
    // no free type inference variables? This implies that
    //   (a)  it will _never_ have any free type inference variables as further constraints are added to the system.
    //   (b)  its set of FreeTycons will not change as further constraints are added to the system
    let mutable willNeverHaveFreeTypars = false
    // If WillNeverHaveFreeTypars then we can cache the computation of FreeTycons, since they are invariant.
    let mutable cachedFreeLocalTycons = emptyFreeTycons
    // If WillNeverHaveFreeTypars then we can cache the computation of FreeTraitSolutions, since they are invariant.
    let mutable cachedFreeTraitSolutions = emptyFreeLocals

    member item.GetFreeTyvars() = 
        let fvs = computeFreeTyvars()
        if fvs.FreeTypars.IsEmpty then 
            willNeverHaveFreeTypars <- true; 
            cachedFreeLocalTycons <- fvs.FreeTycons
            cachedFreeTraitSolutions <- fvs.FreeTraitSolutions
        fvs

    member item.WillNeverHaveFreeTypars = willNeverHaveFreeTypars
    member item.CachedFreeLocalTycons = cachedFreeLocalTycons 
    member item.CachedFreeTraitSolutions = cachedFreeTraitSolutions
      
[]
type TcEnv =
    { /// Name resolution information 
      eNameResEnv : NameResolutionEnv; 

      /// The list of items in the environment that may contain free inference 
      /// variables (which may not be generalized). The relevant types may 
      /// change as a result of inference equations being asserted, hence may need to 
      /// be recomputed. 
      eUngeneralizableItems: UngeneralizableItem list;
      
      // Two (!) versions of the current module path 
      // These are used to: 
      //    - Look up the appropriate point in the corresponding signature 
      //      see if an item is public or not 
      //    - Change fslib canonical module type to allow compiler references to these items 
      //    - Record the cpath for concrete modul_specs, tycon_specs and excon_specs so they can cache their generated IL representation where necessary 
      //    - Record the pubpath of public, concrete {val,tycon,modul,excon}_specs.  
      //      This information is used mainly when building non-local references 
      //      to public items. 
      // 
      // Of the two, 'ePath' is the one that's barely used. It's only 
      // used by UpdateAccModuleOrNamespaceType to modify the CCU while compiling FSharp.Core
      ePath: Ident list; 
      eCompPath: CompilationPath; 
      eAccessPath: CompilationPath; 
      eAccessRights: AccessorDomain // this field is computed from other fields, but we amortize the cost of computing it.
      eInternalsVisibleCompPaths: CompilationPath list; // internals under these should be accessible

      /// Mutable accumulator for the current module type 
      eModuleOrNamespaceTypeAccumulator: ModuleOrNamespaceType ref; 

      /// Here Some tcref indicates we can access protected members in all super types 
      eFamilyType: TyconRef option; 

      // Information to enforce special restrictions on valid expressions 
      // for .NET constructors. 
      eCtorInfo : CtorInfo option
    } 
    member tenv.DisplayEnv = tenv.eNameResEnv.DisplayEnv
    member tenv.NameEnv = tenv.eNameResEnv

/// Compute the value of this computed, cached field
let computeAccessRights eAccessPath eInternalsVisibleCompPaths eFamilyType = 
    AccessibleFrom (eAccessPath :: eInternalsVisibleCompPaths, eFamilyType) // env.eAccessRights 

let emptyTcEnv g  =
    let cpath = CompPath (IL.ecmaMscorlibScopeRef,[])
    { eNameResEnv = NameResolutionEnv.Empty(g);
      eUngeneralizableItems=[];
      ePath=[];
      eCompPath=cpath; (* dummy *)
      eAccessPath=cpath; (* dummy *)
      eAccessRights=computeAccessRights cpath [] None // compute this field 
      eInternalsVisibleCompPaths=[];
      eModuleOrNamespaceTypeAccumulator= ref (NewEmptyModuleOrNamespaceType Namespace);
      eFamilyType=None;
      eCtorInfo=None; }

//-------------------------------------------------------------------------
// Helpers related to determining if we're in a constructor and/or a class
// that may be able to access "protected" members.
//------------------------------------------------------------------------- 

let InitialExplicitCtorInfo (safeThisValOpt, safeInitInfo) =
    { ctorShapeCounter=3; 
      safeThisValOpt = safeThisValOpt;
      safeInitInfo = safeInitInfo;
      ctorIsImplicit=false} 

let InitialImplicitCtorInfo () =
    { ctorShapeCounter=0; 
      safeThisValOpt = None; 
      safeInitInfo = NoSafeInitInfo;
      ctorIsImplicit=true }
      
let EnterFamilyRegion tcref env = 
    let eFamilyType = Some tcref
    { env with 
             eAccessRights = computeAccessRights env.eAccessPath env.eInternalsVisibleCompPaths eFamilyType // update this computed field
             eFamilyType = eFamilyType }

let ExitFamilyRegion env = 
    let eFamilyType = None
    match env.eFamilyType with 
    | None -> env  // optimization to avoid reallocation  
    | _ -> 
        { env with 
                eAccessRights = computeAccessRights env.eAccessPath env.eInternalsVisibleCompPaths eFamilyType  // update this computed field
                eFamilyType = eFamilyType }

let AreWithinCtorShape         env = match env.eCtorInfo with None -> false    | Some ctorInfo -> ctorInfo.ctorShapeCounter > 0
let AreWithinImplicitCtor      env = match env.eCtorInfo with None -> false    | Some ctorInfo -> ctorInfo.ctorIsImplicit
let GetCtorShapeCounter        env = match env.eCtorInfo with None -> 0        | Some ctorInfo -> ctorInfo.ctorShapeCounter
let GetRecdInfo                env = match env.eCtorInfo with None -> RecdExpr | Some ctorInfo -> if ctorInfo.ctorShapeCounter = 1 then RecdExprIsObjInit else RecdExpr

let AdjustCtorShapeCounter      f env = {env with eCtorInfo = Option.map (fun ctorInfo -> { ctorInfo with ctorShapeCounter = f ctorInfo.ctorShapeCounter }) env.eCtorInfo }
let ExitCtorShapeRegion           env = AdjustCtorShapeCounter (fun _ -> 0) env

//-------------------------------------------------------------------------
// Add stuff to environments and register things as ungeneralizeable.
//------------------------------------------------------------------------- 

let isEmptyFreeTyvars ftyvs = 
    Zset.isEmpty ftyvs.FreeTypars &&
    Zset.isEmpty ftyvs.FreeTycons 

let addFreeItemOfTy typ eUngeneralizableItems = 
    let fvs = freeInType CollectAllNoCaching typ
    if isEmptyFreeTyvars fvs then eUngeneralizableItems 
    else UngeneralizableItem(fun () -> freeInType CollectAllNoCaching typ) :: eUngeneralizableItems

let rec addFreeInModuleTy (mtyp:ModuleOrNamespaceType) acc =
    QueueList.foldBack (typeOfVal >> accFreeInType CollectAllNoCaching) mtyp.AllValsAndMembers
      (QueueList.foldBack (fun (mspec:ModuleOrNamespace) acc -> addFreeInModuleTy mspec.ModuleOrNamespaceType acc) mtyp.AllEntities acc)
let freeInModuleTy mtyp = addFreeInModuleTy mtyp emptyFreeTyvars

let addFreeItemOfModuleTy mtyp eUngeneralizableItems = 
    let fvs = freeInModuleTy mtyp
    if isEmptyFreeTyvars fvs then eUngeneralizableItems 
    else UngeneralizableItem(fun () -> freeInModuleTy mtyp) :: eUngeneralizableItems

let AddValMapToNameEnv vs nenv = 
    NameMap.foldBackRange (fun v nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) vs nenv

let AddValListToNameEnv vs nenv = 
    List.foldBack (fun v nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) vs nenv
    
    
let addInternalsAccessibility env (ccu:CcuThunk) =
    let compPath = CompPath (ccu.ILScopeRef,[])    
    let eInternalsVisibleCompPaths = compPath :: env.eInternalsVisibleCompPaths
    {env with 
           eAccessRights = computeAccessRights env.eAccessPath eInternalsVisibleCompPaths env.eFamilyType // update this computed field
           eInternalsVisibleCompPaths = compPath :: env.eInternalsVisibleCompPaths }

let ModifyNameResEnv f env = { env with eNameResEnv = f env.eNameResEnv } 

let AddLocalValPrimitive (v:Val) env =
    let env = ModifyNameResEnv (fun nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) env
    {env with eUngeneralizableItems =  addFreeItemOfTy v.Type env.eUngeneralizableItems;   } 


let AddLocalValMap tcSink scopem (vals:Val NameMap) env =
    let env = ModifyNameResEnv (AddValMapToNameEnv vals) env
    let env = {env with eUngeneralizableItems =  NameMap.foldBackRange (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems;   }
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddLocalVals tcSink scopem (vals:Val list) env =
    let env = ModifyNameResEnv (AddValListToNameEnv vals) env
    let env = {env with eUngeneralizableItems =  List.foldBack (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems;   }
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddLocalVal tcSink scopem v env = 
    let env = ModifyNameResEnv (fun nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) env
    let env = {env with eUngeneralizableItems =  addFreeItemOfTy v.Type env.eUngeneralizableItems;   }
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddLocalExnDefn tcSink scopem (exnc:Tycon) env =
    let env = ModifyNameResEnv (fun nenv -> AddExceptionDeclsToNameEnv BulkAdd.No nenv (mkLocalEntityRef exnc)) env
    (* Also make VisualStudio think there is an identifier in scope at the range of the identifier text of its binding location *)
    CallEnvSink tcSink (exnc.Range,env.NameEnv,env.eAccessRights);
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env
 
let AddLocalTyconRefs ownDefinition g amap m tcrefs env = 
     ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.No ownDefinition g amap m false nenv tcrefs) env 

let AddLocalTycons g amap m tycons env = 
     AddLocalTyconRefs false g amap m (List.map mkLocalTyconRef tycons) env 

let AddLocalTyconsAndReport tcSink g amap scopem tycons env = 
    let env = AddLocalTycons g amap scopem tycons env
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

//-------------------------------------------------------------------------
// Open a structure or an IL namespace 
//------------------------------------------------------------------------- 

let OpenModulesOrNamespaces tcSink g amap scopem env mvvs =
    let env = ModifyNameResEnv (fun nenv -> AddModulesAndNamespacesContentsToNameEnv g amap env.eAccessRights scopem nenv mvvs)  env
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddRootModuleOrNamespaceRefs g amap m env modrefs  = 
    ModifyNameResEnv (fun nenv -> AddModuleOrNamespaceRefsToNameEnv g amap m true env.eAccessRights nenv modrefs) env 

let AddNonLocalCcu g amap scopem env (ccu:CcuThunk,internalsVisible) = 
    let env = if internalsVisible then addInternalsAccessibility env ccu else env
    // Compute the top-rooted module or namespace references
    let modrefs = ccu.RootModulesAndNamespaces |> List.map (mkNonLocalCcuRootEntityRef ccu) 
    // Compute the top-rooted type definitions
    let tcrefs = ccu.RootTypeAndExceptionDefinitions |> List.map (mkNonLocalCcuRootEntityRef ccu) 
    let env = AddRootModuleOrNamespaceRefs g amap scopem env modrefs
    let env = ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.Yes false g amap scopem true nenv tcrefs) env
    //CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddLocalRootModuleOrNamespace tcSink g amap scopem env (mtyp:ModuleOrNamespaceType) = 
    // Compute the top-rooted module or namespace references
    let modrefs = mtyp.ModuleAndNamespaceDefinitions |> List.map mkLocalModRef
    // Compute the top-rooted type definitions
    let tcrefs = mtyp.TypeAndExceptionDefinitions |> List.map mkLocalTyconRef
    let env = AddRootModuleOrNamespaceRefs g amap scopem env modrefs
    let env = ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.No false g amap scopem true nenv tcrefs) env
    let env = {env with eUngeneralizableItems = addFreeItemOfModuleTy mtyp env.eUngeneralizableItems}
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env

let AddModuleAbbreviation tcSink scopem id modrefs env =
    let env = ModifyNameResEnv (fun nenv -> AddModuleAbbrevToNameEnv id nenv modrefs) env
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    let item = Item.ModuleOrNamespaces(modrefs)
    CallNameResolutionSink tcSink (id.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
    env

let AddLocalSubModule tcSink g amap m scopem env (modul:ModuleOrNamespace) =
    let env = ModifyNameResEnv (fun nenv -> AddModrefToNameEnv g amap m false env.eAccessRights nenv (mkLocalModRef modul)) env
    let env = {env with eUngeneralizableItems = addFreeItemOfModuleTy modul.ModuleOrNamespaceType env.eUngeneralizableItems}
    CallEnvSink tcSink (scopem,env.NameEnv,env.eAccessRights);
    env
 
let RegisterDeclaredTypars typars env = 
    {env with eUngeneralizableItems =  List.foldBack (mkTyparTy >> addFreeItemOfTy) typars env.eUngeneralizableItems }

let AddDeclaredTypars check typars env = 
    let env = ModifyNameResEnv (fun nenv -> AddDeclaredTyparsToNameEnv check nenv typars) env
    RegisterDeclaredTypars typars env

/// Compilation environment for typechecking a compilation unit. Contains the
/// F# and .NET modules loaded from disk, the search path, a table indicating
/// how to List.map F# modules to assembly names, and some nasty globals 
/// related to type inference. These are:
///   - all the type variables generated for this compilation unit
///   - the set of active fixups for "letrec" type inference 
[]
type cenv = 
    { g: Env.TcGlobals;

      /// Push an entry every time a recursive value binding is used, 
      /// in order to be able to fix up recursive type applications as 
      /// we infer type parameters 
      mutable recUses: ValMultiMap<(Expr ref * range * bool)>;
      
      /// Checks to run after all inference is complete. 
      mutable postInferenceChecks: ResizeArray unit>;

      /// Are we in a script? if so relax the reporting of discarded-expression warnings at the top level
      isScript: bool; 

      /// Environment needed to convert IL types to F# types in the importer. 
      amap: Import.ImportMap; 

      /// Used to generate new syntactic argument names in post-parse syntactic processing
      synArgNameGenerator: SynArgNameGenerator

      tcSink: TcResultsSink

      /// Holds a reference to the component being compiled. 
      /// This field is very rarely used (mainly when fixing up forward references to fslib. 
      topCcu: CcuThunk; 
      
      /// Holds the current inference constraints 
      css: ConstraintSolverState;
      
      /// Are we compiling the signature of a module from fslib? 
      compilingCanonicalFslibModuleType: bool;
      isSig: bool;
      haveSig: bool;
      
      niceNameGen: NiceNameGenerator;
      infoReader: InfoReader;
      nameResolver: NameResolver;
      
      conditionalDefines: string list;
            
    } 

    static member Create (g,isScript,niceNameGen,amap,topCcu,isSig,haveSig,conditionalDefines,tcSink, tcVal) =
        let infoReader = new InfoReader(g,amap)
        let instantiationGenerator m tpsorig = ConstraintSolver.FreshenTypars m tpsorig
        let nameResolver = new NameResolver(g,amap,infoReader,instantiationGenerator)
        {   g=g
            amap=amap
            recUses=ValMultiMap<_>.Empty
            postInferenceChecks=ResizeArray()
            topCcu = topCcu
            isScript=isScript
            css=ConstraintSolverState.New(g,amap,infoReader, tcVal)
            infoReader=infoReader
            tcSink= tcSink
            nameResolver=nameResolver
            niceNameGen=niceNameGen
            synArgNameGenerator=SynArgNameGenerator()
            isSig=isSig
            haveSig=haveSig
            compilingCanonicalFslibModuleType=(isSig || not haveSig) && g.compilingFslib
            conditionalDefines=conditionalDefines }

let CopyAndFixupTypars m rigid tpsorig = 
    ConstraintSolver.FreshenAndFixupTypars m rigid [] [] tpsorig

let UnifyTypes cenv (env: TcEnv) m expectedTy actualTy = 
    ConstraintSolver.AddCxTypeEqualsType env.DisplayEnv cenv.css m (tryNormalizeMeasureInType cenv.g expectedTy) (tryNormalizeMeasureInType cenv.g actualTy)



//-------------------------------------------------------------------------
// Generate references to the module being generated - used for
// public items.
//------------------------------------------------------------------------- 

let MakeInitialEnv env = 
    (* Note: here we allocate a new module type accumulator *)
    let mtypeAcc = ref (NewEmptyModuleOrNamespaceType Namespace)
    { env with eModuleOrNamespaceTypeAccumulator = mtypeAcc  },mtypeAcc

let MakeInnerEnv env nm modKind = 
    let path = env.ePath @ [nm]
    (* Note: here we allocate a new module type accumulator *)
    let mtypeAcc = ref (NewEmptyModuleOrNamespaceType modKind)
    let cpath = mkNestedCPath env.eCompPath nm.idText modKind
    { env with ePath = path; 
               eCompPath = cpath;
               eAccessPath = cpath;
               eAccessRights = computeAccessRights cpath env.eInternalsVisibleCompPaths env.eFamilyType // update this computed field
               eNameResEnv = { env.eNameResEnv with eDisplayEnv = env.DisplayEnv.AddOpenPath (pathOfLid path) };
               eModuleOrNamespaceTypeAccumulator = mtypeAcc  },mtypeAcc


let MakeInnerEnvForTyconRef _cenv env tcref isExtrinsicExtension = 
    if isExtrinsicExtension then 
        // Extension members don't get access to protected stuff 
        env  
    else
        // Regular members get access to protected stuff 
        let env = EnterFamilyRegion tcref env
        // Note: assumes no nesting 
        let eAccessPath = mkNestedCPath env.eCompPath tcref.LogicalName ModuleOrType
        { env with 
             eAccessRights = computeAccessRights eAccessPath env.eInternalsVisibleCompPaths env.eFamilyType // update this computed field
             eAccessPath = eAccessPath }

let MakeInnerEnvForMember cenv env (v:Val) = 
    match v.MemberInfo with 
    | None -> env
    | Some _ -> MakeInnerEnvForTyconRef cenv env v.MemberApparentParent v.IsExtensionMember 

let GetCurrAccumulatedModuleOrNamespaceType env = !(env.eModuleOrNamespaceTypeAccumulator) 
let SetCurrAccumulatedModuleOrNamespaceType env x =  env.eModuleOrNamespaceTypeAccumulator := x

/// Set up the initial environment 
let LocateEnv ccu env enclosingNamespacePath =
    let cpath = compPathOfCcu ccu
    let env = {env with 
                   ePath = []
                   eCompPath = cpath 
                   eAccessPath=cpath 
                   // update this computed field
                   eAccessRights = computeAccessRights cpath env.eInternalsVisibleCompPaths env.eFamilyType }
    let env = List.fold (fun env id -> MakeInnerEnv env id Namespace |> fst) env enclosingNamespacePath
    env

let BuildRootModuleType enclosingNamespacePath cpath mtyp = 
    (enclosingNamespacePath,(cpath, mtyp)) 
        ||> List.foldBack (fun id (cpath, mtyp) -> (parentCompPath cpath, wrapModuleOrNamespaceTypeInNamespace  id (parentCompPath cpath) mtyp))
        |> snd
        
let BuildRootModuleExpr enclosingNamespacePath cpath mexpr = 
    (enclosingNamespacePath,(cpath, mexpr)) 
        ||> List.foldBack (fun id (cpath, mexpr) -> (parentCompPath cpath, wrapModuleOrNamespaceExprInNamespace id (parentCompPath cpath) mexpr))
        |> snd

let ImplicitlyOpenOwnNamespace tcSink g amap scopem enclosingNamespacePath env = 
    if isNil enclosingNamespacePath then 
        env
    else
        let ad = env.eAccessRights
        match ResolveLongIndentAsModuleOrNamespace OpenQualified env.eNameResEnv ad enclosingNamespacePath with 
        | Result modrefs -> OpenModulesOrNamespaces tcSink g amap scopem env (List.map p23 modrefs)
        | Exception _ ->  env


//-------------------------------------------------------------------------
// Helpers for unification
//------------------------------------------------------------------------- 


/// Optimized unification routine that avoids creating new inference 
/// variables unnecessarily
let UnifyTupleType cenv denv m ty ps = 
    let ptys = 
        if isTupleTy cenv.g ty then 
            let ptys = destTupleTy cenv.g ty
            if (List.length ps) = (List.length ptys) then ptys 
            else NewInferenceTypes ps
        else NewInferenceTypes ps
    AddCxTypeEqualsType denv cenv.css m ty (TType_tuple ptys);
    ptys

/// Optimized unification routine that avoids creating new inference 
/// variables unnecessarily
let UnifyFunctionTypeUndoIfFailed cenv denv m ty =
    if isFunTy cenv.g ty then Some(destFunTy cenv.g ty) else
    let domainTy = NewInferenceType ()
    let resultTy = NewInferenceType ()
    if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (domainTy --> resultTy) then 
        Some(domainTy,resultTy)
    else 
        None

/// Optimized unification routine that avoids creating new inference 
/// variables unnecessarily
let UnifyFunctionType extraInfo cenv denv mFunExpr ty =
    match UnifyFunctionTypeUndoIfFailed cenv denv mFunExpr ty with
    | Some res -> res
    | None -> 
        match extraInfo with 
        | Some argm -> error (NotAFunction(denv,ty,mFunExpr,argm))
        | None ->    error (FunctionExpected(denv,ty,mFunExpr))


let UnifyUnitType cenv denv m ty exprOpt =
    if not (AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty cenv.g.unit_ty) then 
        let domainTy = NewInferenceType ()
        let resultTy = NewInferenceType ()
        if AddCxTypeEqualsTypeUndoIfFailed denv cenv.css m ty (domainTy --> resultTy) then 
            warning (FunctionValueUnexpected(denv,ty,m))
        else
            let perhapsProp = 
                typeEquiv cenv.g cenv.g.bool_ty ty &&
                match exprOpt with 
                | Some(Expr.App(Expr.Val(vf,_,_),_,_,[_;_],_)) when vf.LogicalName = opNameEquals -> true
                | _ -> false
            warning (UnitTypeExpected (denv,ty,perhapsProp,m)); 
        false
    else
        true

//-------------------------------------------------------------------------
// Attribute target flags
//------------------------------------------------------------------------- 

// Logically extends System.AttributeTargets
module AttributeTargets =
    let FieldDecl  = AttributeTargets.Field ||| AttributeTargets.Property
    let FieldDeclRestricted = AttributeTargets.Field
    let UnionCaseDecl = AttributeTargets.Method    ||| AttributeTargets.Property
    let TyconDecl  = AttributeTargets.Class    ||| AttributeTargets.Interface ||| AttributeTargets.Delegate ||| AttributeTargets.Struct ||| AttributeTargets.Enum
    let ExnDecl    = AttributeTargets.Class
    let ModuleDecl = AttributeTargets.Class
    let Top        = AttributeTargets.Assembly ||| AttributeTargets.Module    ||| AttributeTargets.Method


let SettersOfPropInfos (pinfos:PropInfo list) = pinfos |> List.choose (fun pinfo -> if pinfo.HasSetter then Some(pinfo.SetterMethod,Some pinfo) else None) 
let GettersOfPropInfos (pinfos:PropInfo list) = pinfos |> List.choose (fun pinfo -> if pinfo.HasGetter then Some(pinfo.GetterMethod,Some pinfo) else None) 

// Specifies if overload resolution needs to notify Language Service of overload resolution result.
// In contrast with similar types in nameres, this type is in terms of infos instead of items.
// Convertors from Items to infos for methods and properties are provided.
[]
type AfterTcOverloadResolution =
    // Notification is not needed
    |   DoNothing
    // Notify the tcSink
    |   SendToSink of ((MethInfo * PropInfo option) -> unit) * IfOverloadResolutionFails 
    // Find override among given overrides and notify the tcSink
    // The list contains candidate overrides.
    |   ReplaceWithOverrideAndSendToSink of (MethInfo * PropInfo option) list * ((MethInfo * PropInfo option) -> unit) * IfOverloadResolutionFails

    static member ForMethods afterOverloadResolution =
          match afterOverloadResolution with
          |   AfterOverloadResolution.DoNothing -> 
                  AfterTcOverloadResolution.DoNothing
          |   AfterOverloadResolution.SendToSink(callSink,fallback) ->
                  AfterTcOverloadResolution.SendToSink ((fun (minfo,_) -> Item.MethodGroup(minfo.LogicalName,[minfo]) |> callSink), fallback)
          |   AfterOverloadResolution.ReplaceWithOverrideAndSendToSink (Item.MethodGroup(_,overridenMinfos), callSink,fallback) ->
                  AfterTcOverloadResolution.ReplaceWithOverrideAndSendToSink 
                      ((List.map (fun minfo -> minfo,None) overridenMinfos),(fun (minfo,_) -> Item.MethodGroup(minfo.LogicalName,[minfo]) |> callSink),fallback)
          |   _ -> error(InternalError("Name resolution does not match overriden for method groups", range0))
    
    static member ForProperties name gettersOrSetters afterOverloadResolution = 
          let sendPropertyToSink callSink  =
              fun (_,pinfoOpt) ->
                  match pinfoOpt with
                  |   Some pinfo -> Item.Property(name,[pinfo]) |> callSink
                  |   _ -> ()

          match afterOverloadResolution with
          |   AfterOverloadResolution.DoNothing -> AfterTcOverloadResolution.DoNothing
          |   AfterOverloadResolution.SendToSink(callSink,fallback) -> AfterTcOverloadResolution.SendToSink(sendPropertyToSink callSink,fallback)
          |   AfterOverloadResolution.ReplaceWithOverrideAndSendToSink (Item.Property(_,pinfos),callSink,fallback) ->
                  AfterTcOverloadResolution.ReplaceWithOverrideAndSendToSink(gettersOrSetters pinfos, sendPropertyToSink callSink,fallback)
          |   AfterOverloadResolution.ReplaceWithOverrideAndSendToSink (_,_,_) ->
                  error(InternalError("Name resolution does not match overriden for properties",range0))

    static member ForConstructors afterOverloadResolution =
          match afterOverloadResolution with
          |   AfterOverloadResolution.DoNothing -> 
                  AfterTcOverloadResolution.DoNothing
          |   AfterOverloadResolution.SendToSink(callSink,fallback) ->
                  AfterTcOverloadResolution.SendToSink ((fun (minfo,_) -> Item.CtorGroup(minfo.LogicalName,[minfo]) |> callSink), fallback)
          |   _ -> error(InternalError("Name resolution does not match overriden for constructor groups", range0))

    static member ForNewConstructors tcSink (env:TcEnv) mObjTy methodName minfos =
          let sendToSink refinedMinfos =
              CallNameResolutionSink tcSink (mObjTy,env.NameEnv,Item.CtorGroup(methodName,refinedMinfos),Item.CtorGroup(methodName,minfos),ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)          
          match minfos with
          |  [] -> AfterTcOverloadResolution.DoNothing
          |  [_] -> 
              sendToSink minfos
              AfterTcOverloadResolution.DoNothing
          |   _ -> 
              AfterTcOverloadResolution.SendToSink ((fun (minfo,_) -> sendToSink [minfo]), (fun () -> sendToSink minfos) |> IfOverloadResolutionFails)

    member this.OnOverloadResolutionFailure() =
        match this with
        |   AfterTcOverloadResolution.DoNothing -> ()
        |   AfterTcOverloadResolution.SendToSink(_,IfOverloadResolutionFails f) -> f()
        |   AfterTcOverloadResolution.ReplaceWithOverrideAndSendToSink(_,_,IfOverloadResolutionFails f) -> f()


/// Typecheck constant terms in expressions and patterns
let TcConst cenv ty m env c =
    let rec tcMeasure ms =
        match ms with
        | SynMeasure.One -> MeasureOne      
        | SynMeasure.Named(tc,m) ->
            let ad = env.eAccessRights
            let tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Use OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No)
            match tcref.TypeOrMeasureKind with
            | TyparKind.Type -> error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m))
            | TyparKind.Measure -> MeasureCon tcref

        | SynMeasure.Power(ms, exponent, _) -> MeasurePower (tcMeasure ms) exponent
        | SynMeasure.Product(ms1,ms2,_) -> MeasureProd(tcMeasure ms1, tcMeasure ms2)     
        | SynMeasure.Divide(ms1, ((SynMeasure.Seq (_::(_::_), _)) as ms2), m) -> 
            warning(Error(FSComp.SR.tcImplicitMeasureFollowingSlash(),m));
            MeasureProd(tcMeasure ms1, MeasureInv (tcMeasure ms2))
        | SynMeasure.Divide(ms1,ms2,_) -> 
            MeasureProd(tcMeasure ms1, MeasureInv (tcMeasure ms2))
        | SynMeasure.Seq(mss,_) -> ProdMeasures (List.map tcMeasure mss)
        | SynMeasure.Anon _ -> error(Error(FSComp.SR.tcUnexpectedMeasureAnon(),m))
        | SynMeasure.Var(_,m) -> error(Error(FSComp.SR.tcNonZeroConstantCannotHaveGenericUnit(),m))
   
    let unif ty2 = UnifyTypes cenv env m ty ty2
    let unif_measure_arg iszero tcr c =
        let measureTy = 
            match c with 
            | SynConst.Measure(_, SynMeasure.Anon _) ->
              (mkAppTy tcr [TType_measure (MeasureVar (NewAnonTypar (TyparKind.Measure,m,TyparRigidity.Anon,(if iszero then NoStaticReq else HeadTypeStaticReq),TyparDynamicReq.No)))])

            | SynConst.Measure(_, ms) -> mkAppTy tcr  [TType_measure (tcMeasure ms)]
            | _ -> mkAppTy tcr [TType_measure MeasureOne]
        unif measureTy

   
    match c with 
    | SynConst.Unit         -> unif cenv.g.unit_ty;       Const.Unit
    | SynConst.Bool i       -> unif cenv.g.bool_ty;       Const.Bool i
    | SynConst.SByte i       -> unif cenv.g.sbyte_ty;      Const.SByte i
    | SynConst.Int16 i      -> unif cenv.g.int16_ty;      Const.Int16 i
    | SynConst.Int32 i      -> unif cenv.g.int_ty;        Const.Int32 i
    | SynConst.Int64 i      -> unif cenv.g.int64_ty;      Const.Int64 i
    | SynConst.IntPtr i  -> unif cenv.g.nativeint_ty;  Const.IntPtr i
    | SynConst.Byte i      -> unif cenv.g.byte_ty;       Const.Byte i
    | SynConst.UInt16 i     -> unif cenv.g.uint16_ty;     Const.UInt16 i
    | SynConst.UInt32 i     -> unif cenv.g.uint32_ty;     Const.UInt32 i
    | SynConst.UInt64 i     -> unif cenv.g.uint64_ty;     Const.UInt64 i
    | SynConst.UIntPtr i -> unif cenv.g.unativeint_ty; Const.UIntPtr i
    | SynConst.Measure(SynConst.Single f, _) | SynConst.Single f -> unif_measure_arg (f=0.0f) cenv.g.pfloat32_tcr c; Const.Single f
    | SynConst.Measure(SynConst.Double   f, _) | SynConst.Double   f -> unif_measure_arg (f=0.0)  cenv.g.pfloat_tcr c; Const.Double f
    | SynConst.Measure(SynConst.Decimal s, _) | SynConst.Decimal s -> unif_measure_arg false    cenv.g.pdecimal_tcr c; Const.Decimal s
    | SynConst.Measure(SynConst.SByte   i, _)  | SynConst.SByte    i -> unif_measure_arg (i=0y)   cenv.g.pint8_tcr c; Const.SByte i
    | SynConst.Measure(SynConst.Int16   i, _) | SynConst.Int16   i -> unif_measure_arg (i=0s)   cenv.g.pint16_tcr c; Const.Int16 i
    | SynConst.Measure(SynConst.Int32   i, _) | SynConst.Int32   i -> unif_measure_arg (i=0)    cenv.g.pint_tcr c; Const.Int32 i
    | SynConst.Measure(SynConst.Int64   i, _) | SynConst.Int64   i -> unif_measure_arg (i=0L)   cenv.g.pint64_tcr c; Const.Int64 i
    | SynConst.Char c       -> unif cenv.g.char_ty;       Const.Char c
    | SynConst.String (s,_) -> unif cenv.g.string_ty;     Const.String s
    | SynConst.UserNum _     -> error(InternalError(FSComp.SR.tcUnexpectedBigRationalConstant(), m))
    | SynConst.Measure _    -> error(Error(FSComp.SR.tcInvalidTypeForUnitsOfMeasure(), m))

    | SynConst.UInt16s _ -> error(InternalError(FSComp.SR.tcUnexpectedConstUint16Array(),m))
    | SynConst.Bytes _ -> error(InternalError(FSComp.SR.tcUnexpectedConstByteArray(),m))
 
/// Convert an Abstract IL ILFieldInit value read from .NET metadata to a TAST constant
let TcFieldInit (_m:range) lit = 
    match lit with 
    | ILFieldInit.String s   -> Const.String s
    | ILFieldInit.Null       -> Const.Zero
    | ILFieldInit.Bool    b -> Const.Bool b
    | ILFieldInit.Char    c -> Const.Char (char (int c))
    | ILFieldInit.Int8    x -> Const.SByte x
    | ILFieldInit.Int16   x -> Const.Int16 x
    | ILFieldInit.Int32   x -> Const.Int32 x
    | ILFieldInit.Int64   x -> Const.Int64 x
    | ILFieldInit.UInt8   x -> Const.Byte x
    | ILFieldInit.UInt16  x -> Const.UInt16 x
    | ILFieldInit.UInt32  x -> Const.UInt32 x
    | ILFieldInit.UInt64  x -> Const.UInt64 x
    | ILFieldInit.Single f -> Const.Single f
    | ILFieldInit.Double f -> Const.Double f 


//-------------------------------------------------------------------------
// Arities. These serve two roles in the system: 
//  1. syntactic arities come from the syntactic forms found
//     signature files and the syntactic forms of function and member definitions.
//  2. compiled arities representing representation choices w.r.t. internal representations of
//     functions and members.
//------------------------------------------------------------------------- 

// Adjust the arities that came from the parsing of the toptyp (arities) to be a valSynData. 
// This means replacing the "[unitArg]" arising from a "unit -> ty" with a "[]".
let AdjustValSynInfoInSignature g ty (SynValInfo(argsData,retData) as sigMD) = 
    if isFunTy g ty && typeEquiv g g.unit_ty (domainOfFunTy g ty) && argsData.Length = 1 && argsData.Head.Length = 1  then 
        SynValInfo(argsData.Head.Tail :: argsData.Tail, retData)
    else 
        sigMD 

/// The ValReprInfo for a value, except the number of typars is not yet inferred 
type PartialValReprInfo = PartialValReprInfo of ArgReprInfo list list * ArgReprInfo 

let TranslateTopArgSynInfo isArg m tcAttribute (SynArgInfo(attrs,isOpt,nm)) = 
    // Synthesize an artificial "OptionalArgument" attribute for the parameter
    let optAttrs = 
        if isOpt then 
            [ ( { TypeName=LongIdentWithDots(pathToSynLid m ["Microsoft";"FSharp";"Core";"OptionalArgument"],[]); 
                  ArgExpr=mkSynUnit m; 
                  Target=None; 
                  AppliesToGetterAndSetter=false; 
                  Range=m} : SynAttribute) ] 
         else 
            []

    if isArg && nonNil attrs && isNone nm then 
        errorR(Error(FSComp.SR.tcParameterRequiresName(),m));

    if not isArg && isSome nm then 
        errorR(Error(FSComp.SR.tcReturnValuesCannotHaveNames(),m));
       
    // Call the attribute checking function 
    let attribs = tcAttribute (optAttrs@attrs)
    ({ Attribs = attribs; Name = nm } : ArgReprInfo)

/// Members have an arity inferred from their syntax. This "valSynData" is not quite the same as the arities 
/// used in the middle and backends of the compiler ("topValInfo"). 
/// "0" in a valSynData (see Ast.arity_of_pat) means a "unit" arg in a topValInfo 
/// Hence remove all "zeros" from arity and replace them with 1 here. 
/// Note we currently use the compiled form for choosing unique names, to distinguish overloads because this must match up 
/// between signature and implementation, and the signature just has "unit". 
let TranslateTopValSynInfo m tcAttribute (SynValInfo(argsData,retData)) = 
    PartialValReprInfo (argsData |> List.mapSquared (TranslateTopArgSynInfo true m (tcAttribute AttributeTargets.Parameter)), 
                       retData |> TranslateTopArgSynInfo false m (tcAttribute AttributeTargets.ReturnValue))

let TranslatePartialArity tps (PartialValReprInfo (argsData,retData)) = 
    ValReprInfo(ValReprInfo.InferTyparInfo tps,argsData,retData)


//-------------------------------------------------------------------------
// Members
//------------------------------------------------------------------------- 

let ComputeLogicalName (id:Ident) memberFlags = 
    match memberFlags.MemberKind with 
    | MemberKind.ClassConstructor -> ".cctor"
    | MemberKind.Constructor -> ".ctor"
    | MemberKind.Member -> 
        match id.idText with 
        | (".ctor" | ".cctor") as r ->  errorR(Error(FSComp.SR.tcInvalidMemberNameCtor(),id.idRange)); r
        | r -> r
    | MemberKind.PropertyGetSet ->  error(InternalError(FSComp.SR.tcMemberKindPropertyGetSetNotExpected(),id.idRange))
    | MemberKind.PropertyGet ->  "get_"^id.idText
    | MemberKind.PropertySet ->  "set_"^id.idText 

/// ValMemberInfoTransient(memberInfo,logicalName,compiledName)
type ValMemberInfoTransient = ValMemberInfoTransient of ValMemberInfo * string * string 


/// Make the unique "name" for a member.
//
// optImplSlotTy = None (for classes) or Some ty (when implementing interface type ty) 
let MakeMemberDataAndMangledNameForMemberVal(g,tcref,isExtrinsic,attrs,optImplSlotTys,memberFlags,valSynData,id,isCompGen)  =
    let logicalName = ComputeLogicalName id memberFlags
    let optIntfSlotTys = if optImplSlotTys |> List.forall (isInterfaceTy g) then optImplSlotTys else []
    let memberInfo = 
        { ApparentParent=tcref; 
          MemberFlags=memberFlags; 
          IsImplemented=false;
          // NOTE: This value is initially only set for interface implementations and those overrides 
          // where we manage to pre-infer which abstract is overriden by the method. It is filled in  
          // properly when we check the allImplemented implementation checks at the end of the inference scope. 
          ImplementedSlotSigs=optImplSlotTys |> List.map (fun ity -> TSlotSig(logicalName,ity,[],[],[],None)) }
    let isInstance = MemberIsCompiledAsInstance g tcref isExtrinsic memberInfo attrs
    if (memberFlags.IsDispatchSlot || nonNil optIntfSlotTys) then 
        if not isInstance then
          errorR(VirtualAugmentationOnNullValuedType(id.idRange));
    elif not memberFlags.IsOverrideOrExplicitImpl && memberFlags.IsInstance then 
        if not isExtrinsic && not isInstance then
            warning(NonVirtualAugmentationOnNullValuedType(id.idRange))

    let compiledName = 
        if isExtrinsic then 
             let tname = tcref.LogicalName
             let text = tname^"."^logicalName
             let text = if memberFlags.MemberKind <> MemberKind.Constructor && memberFlags.MemberKind <> MemberKind.ClassConstructor && not memberFlags.IsInstance then text^".Static" else text
             let text = if memberFlags.IsOverrideOrExplicitImpl then text^".Override" else text
             text
        else
            List.foldBack (tcrefOfAppTy g >> qualifiedMangledNameOfTyconRef) optIntfSlotTys logicalName
    
    if not isCompGen && IsMangledOpName id.idText && IsInfixOperator id.idText then 
        let m = id.idRange
        let name = DecompileOpName id.idText
        let opTakesThreeArgs = PrettyNaming.IsTernaryOperator(name)
        // Check symbolic members. Expect valSynData implied arity to be [[2]].
        match SynInfo.AritiesOfArgs valSynData with
        | [] | [0] -> warning(Error(FSComp.SR.memberOperatorDefinitionWithNoArguments(name),m))
        | n :: otherArgs ->
                if n<>2  && not(opTakesThreeArgs) then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonPairArgument(name,n),m))
                if n<>3 && opTakesThreeArgs then warning(Error(FSComp.SR.memberOperatorDefinitionWithNonTripleArgument(name,n),m))
                if otherArgs.Length>0 then warning(Error(FSComp.SR.memberOperatorDefinitionWithCurriedArguments(name),m))

    if IsMangledOpName id.idText && isExtrinsic then 
        warning(Error(FSComp.SR.tcMemberOperatorDefinitionInExtrinsic(),id.idRange))

    ValMemberInfoTransient(memberInfo,logicalName,compiledName)


type OverridesOK = 
    | OverridesOK 
    | WarnOnOverrides
    | ErrorOnOverrides

/// A type to represent information associated with values to indicate what explicit (declared) type parameters
/// are given and what additional type parameters can be inferred, if any.
///
/// The declared type parameters, e.g. let f<'a> (x:'a) = x, plus an indication 
/// of whether additional polymorphism may be inferred, e.g. let f<'a,..> (x:'a) y = x 
type ExplicitTyparInfo = ExplicitTyparInfo of Tast.Typars * Tast.Typars * bool 

let permitInferTypars = ExplicitTyparInfo ([], [], true)
let dontInferTypars = ExplicitTyparInfo ([], [], false)

type ArgAndRetAttribs = ArgAndRetAttribs of Tast.Attribs list list * Tast.Attribs
let noArgOrRetAttribs = ArgAndRetAttribs ([],[])

/// A flag to represent the sort of bindings are we processing.
/// Processing "declaration" and "class" bindings that make up a module (such as "let x = 1 let y = 2") 
/// shares the same code paths (e.g. TcLetBinding and TcLetrec) as processing expression bindings (such as "let x = 1 in ...") 
/// Member bindings also use this path. 
//
/// However there are differences in how different bindings get processed,
/// i.e. module bindings get published to the implicitly accumulated module type, but expression 'let' bindings don't. 
type DeclKind = 
    | ModuleOrMemberBinding 
    /// Extensions to a type within the same assembly
    | IntrinsicExtensionBinding 
    /// Extensions to a type in a different assembly
    | ExtrinsicExtensionBinding 
    | ClassLetBinding 
    | ObjectExpressionOverrideBinding
    | ExpressionBinding 

    static member IsModuleOrMemberOrExtensionBinding x = 
        match x with 
        | ModuleOrMemberBinding -> true
        | IntrinsicExtensionBinding  -> true
        | ExtrinsicExtensionBinding -> true
        | ClassLetBinding -> false
        | ObjectExpressionOverrideBinding -> false
        | ExpressionBinding -> false

    static member MustHaveArity x =  DeclKind.IsModuleOrMemberOrExtensionBinding x

    member x.CanBeDllImport = 
        match x with 
        | ModuleOrMemberBinding -> true
        | IntrinsicExtensionBinding  -> true
        | ExtrinsicExtensionBinding -> true
        | ClassLetBinding -> true
        | ObjectExpressionOverrideBinding -> false
        | ExpressionBinding -> false

    static member IsAccessModifierPermitted  x = DeclKind.IsModuleOrMemberOrExtensionBinding x

    static member ImplicitlyStatic  x = DeclKind.IsModuleOrMemberOrExtensionBinding x

    static member AllowedAttribTargets memberFlagsOpt x = 
        match x with 
        | ModuleOrMemberBinding | ObjectExpressionOverrideBinding -> 
            match memberFlagsOpt with
            | Some flags when flags.MemberKind = MemberKind.Constructor -> AttributeTargets.Constructor
            | Some flags when flags.MemberKind = MemberKind.PropertyGetSet -> AttributeTargets.Event ||| AttributeTargets.Property
            | Some flags when flags.MemberKind = MemberKind.PropertyGet -> AttributeTargets.Event ||| AttributeTargets.Property
            | Some flags when flags.MemberKind = MemberKind.PropertySet -> AttributeTargets.Property
            | Some _ -> AttributeTargets.Method
            | None -> AttributeTargets.Field ||| AttributeTargets.Method ||| AttributeTargets.Property
        | IntrinsicExtensionBinding  -> AttributeTargets.Method ||| AttributeTargets.Property
        | ExtrinsicExtensionBinding -> AttributeTargets.Method ||| AttributeTargets.Property
        | ClassLetBinding -> AttributeTargets.Field ||| AttributeTargets.Method
        | ExpressionBinding -> enum 0 // indicates attributes not allowed on expression 'let' bindings

    // Note: now always true
    static member CanGeneralizeConstrainedTypars  x = 
        match x with 
        | ModuleOrMemberBinding -> true
        | IntrinsicExtensionBinding  -> true
        | ExtrinsicExtensionBinding -> true
        | ClassLetBinding -> true
        | ObjectExpressionOverrideBinding -> true
        | ExpressionBinding -> true
        
    static member ConvertToLinearBindings  x = 
        match x with 
        | ModuleOrMemberBinding -> true
        | IntrinsicExtensionBinding  -> true
        | ExtrinsicExtensionBinding -> true
        | ClassLetBinding -> true
        | ObjectExpressionOverrideBinding -> true
        | ExpressionBinding -> false 

    static member CanOverrideOrImplement x = 
        match x with 
        | ModuleOrMemberBinding -> OverridesOK
        | IntrinsicExtensionBinding -> WarnOnOverrides
        | ExtrinsicExtensionBinding -> ErrorOnOverrides
        | ClassLetBinding -> ErrorOnOverrides 
        | ObjectExpressionOverrideBinding -> OverridesOK
        | ExpressionBinding -> ErrorOnOverrides 

//-------------------------------------------------------------------------
// Data structures that track the gradual accumualtion of information
// about values and members during inference.
//------------------------------------------------------------------------- 

/// The results of preliminary pass over patterns to extract variables being declared.
type PrelimValScheme1 = 
    | PrelimValScheme1 of 
        Ident * 
        ExplicitTyparInfo * 
        TType * 
        PartialValReprInfo option *
        ValMemberInfoTransient option * 
        bool * 
        ValInline * 
        ValBaseOrThisInfo * 
        ArgAndRetAttribs * 
        SynAccess option * 
        bool
    member x.Type = let (PrelimValScheme1(_,_,ty,_,_,_,_,_,_,_,_)) = x in ty
    member x.Ident = let (PrelimValScheme1(id,_,_,_,_,_,_,_,_,_,_)) = x in id
    
/// The results of applying let-style generalization after type checking. 
type PrelimValScheme2 = 
    PrelimValScheme2 of 
        Ident * 
        TypeScheme * 
        PartialValReprInfo option *
        ValMemberInfoTransient option  * 
        bool * 
        ValInline * 
        ValBaseOrThisInfo * 
        ArgAndRetAttribs * 
        SynAccess option * 
        bool *
        bool (* hasDeclaredTypars *) 
        

/// The results of applying arity inference to PrelimValScheme2 
type ValScheme = 
    | ValScheme of 
        Ident * 
        TypeScheme * 
        ValReprInfo option * 
        ValMemberInfoTransient option  * 
        bool *  // isMutable
        ValInline * 
        ValBaseOrThisInfo * 
        SynAccess option * 
        bool * // compgen *
        bool * // isIncrClass 
        bool * // isTyFunc 
        bool   // hasDeclaredTypars 
    member x.GeneralizedTypars = let (ValScheme(_,TypeScheme(gtps,_),_,_,_,_,_,_,_,_,_,_)) = x in gtps
    member x.TypeScheme = let (ValScheme(_,ts,_,_,_,_,_,_,_,_,_,_)) = x in ts
        
//-------------------------------------------------------------------------
// Data structures that track the whole process of taking a syntactic binding and
// checking it.
//------------------------------------------------------------------------- 

/// Translation of patterns is List.unzip into three phases. The first collects names. 
/// The second is run after val_specs have been created for those names and inference 
/// has been resolved. The second phase is run by applying a function returned by the 
/// first phase. The input to the second phase is a List.map that gives the Val and type scheme 
/// for each value bound by the pattern. 
type TcPatPhase2Input = 
    TcPatPhase2Input of (Val * TypeScheme) NameMap


/// The first phase of checking and elaborating a binding leaves a whole goop of information. 
/// This is a bit of a mess: much of this information is carried on a per-value basis by the 
/// "NameMap". 
type CheckedBindingInfo = 
    | CheckedBindingInfo of 
       ValInline * 
       bool *   (* immutable? *)
       Tast.Attribs * 
       XmlDoc * 
       (TcPatPhase2Input -> Patcompile.Pattern) * 
       ExplicitTyparInfo * 
       NameMap * 
       Expr * 
       ArgAndRetAttribs * 
       TType * 
       range *
       SequencePointInfoForBinding * 
       bool * (* compiler generated? *)
       Const option (* literal value? *)
    member x.Expr = let (CheckedBindingInfo(_,_,_,_,_,_,_,expr,_,_,_,_,_,_)) = x in expr
    member x.SeqPoint = let (CheckedBindingInfo(_,_,_,_,_,_,_,_,_,_,_,spBind,_,_)) = x in spBind

//-------------------------------------------------------------------------
// Helpers related to type schemes
//------------------------------------------------------------------------- 

let GeneralizedTypeForTypeScheme typeScheme = 
    let (TypeScheme(generalizedTypars,tau)) = typeScheme
    tryMkForallTy generalizedTypars tau

let NonGenericTypeScheme ty = TypeScheme([],ty)

//-------------------------------------------------------------------------
// Helpers related to publishing values, types and members into the
// elaborated representation.
//------------------------------------------------------------------------- 

let UpdateAccModuleOrNamespaceType cenv env f = 
    // When compiling FSharp.Core, modify the fslib CCU to ensure forward stable references used by 
    // the compiler can be resolved ASAP. Not at all pretty but it's hard to 
    // find good ways to do references from the compiler into a term graph.
    if cenv.compilingCanonicalFslibModuleType then 
        let nleref = mkNonLocalEntityRef cenv.topCcu (arrPathOfLid env.ePath)
        let modul = nleref.Deref
        modul.Data.entity_modul_contents <- notlazy (f true modul.ModuleOrNamespaceType);
    SetCurrAccumulatedModuleOrNamespaceType env (f false (GetCurrAccumulatedModuleOrNamespaceType env))
  
let PublishModuleDefn cenv env mspec = 
    UpdateAccModuleOrNamespaceType cenv env (fun intoFslibCcu mty -> 
       if intoFslibCcu then mty
       else mty.AddEntity(mspec))
    let item = Item.ModuleOrNamespaces([mkLocalModRef mspec])
    CallNameResolutionSink cenv.tcSink (mspec.Range,env.NameEnv,item,item,ItemOccurence.Binding,env.DisplayEnv,env.eAccessRights)

let PublishTypeDefn cenv env tycon = 
    UpdateAccModuleOrNamespaceType cenv env (fun _ mty -> 
       mty.AddEntity(tycon))

let PublishValueDefnPrim cenv env (vspec:Val) = 
    UpdateAccModuleOrNamespaceType cenv env (fun _ mty -> 
        mty.AddVal(vspec))

let PublishValueDefn cenv env declKind (vspec:Val) =
    if (declKind = ModuleOrMemberBinding) && 
       ((GetCurrAccumulatedModuleOrNamespaceType env).ModuleOrNamespaceKind = Namespace) && 
       (isNone vspec.MemberInfo) then 
           errorR(NumberedError(FSComp.SR.tcNamespaceCannotContainValues(),vspec.Range));

    if (declKind = ExtrinsicExtensionBinding) && 
       ((GetCurrAccumulatedModuleOrNamespaceType env).ModuleOrNamespaceKind = Namespace) then 
           errorR(Error(FSComp.SR.tcNamespaceCannotContainExtensionMembers(),vspec.Range));

    // Publish the value to the module type being generated. 
    if (match declKind with 
        | ModuleOrMemberBinding -> true
        | ExtrinsicExtensionBinding -> true
        | IntrinsicExtensionBinding -> true
        | _ -> false) then 
        PublishValueDefnPrim cenv env vspec

    match vspec.MemberInfo with 
    | Some _memberInfo when 
        (not vspec.IsCompilerGenerated && 
         // Extrinsic extensions don't get added to the tcaug
         not (declKind = ExtrinsicExtensionBinding)) -> 
         // // Static initializers don't get published to the tcaug 
         // not (memberInfo.MemberFlags.MemberKind = MemberKind.ClassConstructor)) -> 
        
        let tcaug = vspec.MemberApparentParent.TypeContents
        let vref = mkLocalValRef vspec
        tcaug.tcaug_adhoc <- NameMultiMap.add vspec.LogicalName vref tcaug.tcaug_adhoc
        tcaug.tcaug_adhoc_list.Add (ValRefIsExplicitImpl cenv.g vref, vref)
    |  _ -> ()

let CombineVisibilityAttribs vis1 vis2 m = 
   if isSome vis1 && isSome vis2 then 
        errorR(Error(FSComp.SR.tcMultipleVisibilityAttributes(),m));
   if isSome vis1 then vis1 else vis2

let ComputeAccessAndCompPath env declKindOpt m vis actualParent = 
    let accessPath = env.eAccessPath
    let accessModPermitted = 
        match declKindOpt with 
        | None -> true
        | Some declKind -> DeclKind.IsAccessModifierPermitted declKind

    if isSome vis && not accessModPermitted then 
        errorR(Error(FSComp.SR.tcMultipleVisibilityAttributesWithLet(),m)); 
    let vis = 
        match vis with 
        | None -> taccessPublic (* a module or member binding defaults to "public" *)
        | Some SynAccess.Public -> taccessPublic
        | Some SynAccess.Private -> taccessPrivate accessPath
        | Some SynAccess.Internal -> taccessInternal 
            (* errorR(InternalError(FSComp.SR.tcUnrecognizedAccessibilitySpec(),m)); *)

    let vis = 
        match actualParent with 
        | ParentNone -> vis 
        | Parent tcref -> 
             combineAccess vis tcref.Accessibility
    let cpath = env.eCompPath
    let cpath = (if accessModPermitted then Some cpath else None)
    vis,cpath 

let CheckForAbnormalOperatorNames cenv (idRange:range) opName isMember =
    

    if (idRange.EndColumn - idRange.StartColumn <= 5) && not cenv.g.compilingFslib  then 
        
        match opName, isMember with 
        | PrettyNaming.Relational   ,true  -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidMethodNameForRelationalOperator(opName, (CompileOpName opName)),idRange))
        | PrettyNaming.Equality ,true  -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidMethodNameForEquality(opName, (CompileOpName opName)),idRange))
        | PrettyNaming.Control,true  -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidMemberName(opName, (CompileOpName opName)),idRange))
        | PrettyNaming.FixedTypes,true  -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidMemberNameFixedTypes(opName),idRange))
        | PrettyNaming.Indexer,true  -> ()
        | PrettyNaming.Relational  ,false -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidOperatorDefinitionRelational(opName),idRange))
        | PrettyNaming.Equality ,false -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidOperatorDefinitionEquality(opName),idRange))
        | PrettyNaming.Control,false -> warning(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidOperatorDefinition(opName),idRange))
        | PrettyNaming.Indexer,false -> error(StandardOperatorRedefinitionWarning(FSComp.SR.tcInvalidIndexOperatorDefinition(opName),idRange))
        | PrettyNaming.FixedTypes,_ -> ()
        | PrettyNaming.Other,_ -> ()

let MakeAndPublishVal cenv env (altActualParent,inSig,declKind,vrec,(ValScheme(id,typeScheme,topValData,memberInfoOpt,isMutable,inlineFlag,baseOrThis,vis,compgen,isIncrClass,isTyFunc,hasDeclaredTypars)),attrs,doc,konst,isGeneratedEventVal) =
    let ty = GeneralizedTypeForTypeScheme typeScheme
    let m = id.idRange

    let isTopBinding = 
        match declKind with 
        | ModuleOrMemberBinding -> true
        | ExtrinsicExtensionBinding -> true
        | IntrinsicExtensionBinding -> true
        | _ -> false

    let isExtrinsic = (declKind=ExtrinsicExtensionBinding)
    let actualParent = 
        // Use the parent of the member if it's available 
        // If it's an extrinsic extension member or not a member then use the containing module. 
        match memberInfoOpt with 
        | Some (ValMemberInfoTransient(memberInfo,_,_)) when not isExtrinsic -> 
            if memberInfo.ApparentParent.IsModuleOrNamespace then 
                errorR(InternalError(FSComp.SR.tcExpectModuleOrNamespaceParent(id.idText),m));

            Parent(memberInfo.ApparentParent)
        | _ -> altActualParent
             
    let vis,_ = ComputeAccessAndCompPath env (Some declKind) id.idRange vis actualParent

    let inlineFlag = 
        if HasFSharpAttribute cenv.g cenv.g.attrib_DllImportAttribute attrs then 
            if inlineFlag = ValInline.PseudoVal || inlineFlag = ValInline.Always then 
              errorR(Error(FSComp.SR.tcDllImportStubsCannotBeInlined(),m)); 
            ValInline.Never 
        else 
            let implflags = 
                match TryFindFSharpAttribute cenv.g cenv.g.attrib_MethodImplAttribute attrs with
                | Some (Attrib(_,_,[ AttribInt32Arg flags ],_,_,_,_))  -> flags
                | _ -> 0x0
            // MethodImplOptions.NoInlining = 0x8
            let NO_INLINING = 0x8
            if (implflags &&& NO_INLINING) <> 0x0 then
                ValInline.Never
            else
                inlineFlag

    // CompiledName not allowed on virtual/abstract/override members        
    let compiledNameAttrib  = TryFindFSharpStringAttribute cenv.g cenv.g.attrib_CompiledNameAttribute attrs
    if isSome compiledNameAttrib && (   (   match memberInfoOpt with 
                                            | Some (ValMemberInfoTransient(memberInfo,_,_)) -> 
                                                memberInfo.MemberFlags.IsDispatchSlot 
                                                || memberInfo.MemberFlags.IsOverrideOrExplicitImpl 
                                            | None -> false)
                                     || (match altActualParent with ParentNone -> true | _ -> false)) then 
        errorR(Error(FSComp.SR.tcCompiledNameAttributeMisused(),m))

    let compiledNameIsOnProp =
        match memberInfoOpt with
        | Some (ValMemberInfoTransient(memberInfo,_,_)) ->
            memberInfo.MemberFlags.MemberKind = MemberKind.PropertyGet || 
            memberInfo.MemberFlags.MemberKind = MemberKind.PropertySet ||
            memberInfo.MemberFlags.MemberKind = MemberKind.PropertyGetSet
        | _ -> false

    let compiledName = 
        match compiledNameAttrib with 
        // We fix up CompiledName on properties during codegen
        | Some _ when not compiledNameIsOnProp -> compiledNameAttrib 
        | _ -> 
            match memberInfoOpt with 
            | Some (ValMemberInfoTransient(_,_,compiledName)) -> 
                Some compiledName
            | None ->  
                None

    let logicalName = 
        match memberInfoOpt with 
        | Some (ValMemberInfoTransient(_,logicalName,_)) -> 
            logicalName
        | None ->  
            id.idText

    let memberInfoOpt = 
        match memberInfoOpt with 
        | Some (ValMemberInfoTransient(memberInfo,_,_)) -> 
            Some memberInfo
        | None ->  
            None

    let vspec = 
        NewVal (logicalName,id.idRange,compiledName,ty,
                      (if ((* (isByrefTy cenv.g ty) || *) isMutable) then Mutable else Immutable),
                      compgen,topValData,vis,vrec,memberInfoOpt,baseOrThis,attrs,inlineFlag,doc,isTopBinding,isExtrinsic,isIncrClass,isTyFunc,
                      (hasDeclaredTypars || inSig),isGeneratedEventVal,konst,actualParent)

    
    CheckForAbnormalOperatorNames cenv id.idRange (DecompileOpName vspec.CoreDisplayName) (isSome memberInfoOpt)

    PublishValueDefn cenv env declKind vspec;

    begin 
        match cenv.tcSink.CurrentSink with 
        | None -> ()
        | Some _ -> 
            if not vspec.IsCompilerGenerated && not (String.hasPrefix vspec.LogicalName "_") then 
                let nenv = AddFakeNamedValRefToNameEnv vspec.DisplayName env.NameEnv (mkLocalValRef vspec) 
                CallEnvSink cenv.tcSink (vspec.Range,nenv,env.eAccessRights)
                let item = Item.Value(mkLocalValRef vspec)
                CallNameResolutionSink cenv.tcSink (vspec.Range,nenv,item,item,ItemOccurence.Binding,env.DisplayEnv,env.eAccessRights);
    end;

    vspec

let MakeAndPublishVals cenv env (altActualParent,inSig,declKind,vrec,valSchemes,attrs,doc,konst) =
    Map.foldBack
        (fun name (valscheme:ValScheme) values -> 
          Map.add name (MakeAndPublishVal cenv env (altActualParent,inSig,declKind,vrec,valscheme,attrs,doc,konst,false), valscheme.TypeScheme) values)
        valSchemes
        Map.empty

let MakeAndPublishBaseVal cenv env baseIdOpt ty = 
    baseIdOpt |> Option.map (fun (id:Ident) ->
       let valscheme = ValScheme(id,NonGenericTypeScheme(ty),None,None,false,ValInline.Never,BaseVal,None,false,false,false,false)
       MakeAndPublishVal cenv env (ParentNone,false,ExpressionBinding,ValNotInRecScope,valscheme,[],XmlDoc.Empty,None,false))

let InstanceMembersNeedSafeInitCheck cenv m thisTy = 
    ExistsInEntireHierarchyOfType 
        (fun ty -> not(isStructTy cenv.g ty) && isAppTy cenv.g ty && (tcrefOfAppTy cenv.g ty).HasSelfReferentialConstructor)
        cenv.g 
        cenv.amap
        m 
        AllowMultiIntfInstantiations.Yes
        thisTy
        
let MakeSafeInitField g env m isStatic = 
    let id = ident(globalNng.FreshCompilerGeneratedName("init",m),m)
    let taccess = TAccess [env.eAccessPath]
    NewRecdField isStatic None id g.int_ty true true [] [] XmlDoc.Empty taccess true

// Make the "delayed reference" boolean value recording the safe initialization of a type in a hierarchy where there is a HasSelfReferentialConstructor
let ComputeInstanceSafeInitInfo cenv env m  thisTy = 
    if InstanceMembersNeedSafeInitCheck cenv m thisTy then 
        let rfield =  MakeSafeInitField cenv.g env m false
        let tcref = tcrefOfAppTy cenv.g thisTy
        SafeInitField (mkRecdFieldRef tcref rfield.Name, rfield)
    else
        NoSafeInitInfo

// Make the "delayed reference" value where the this pointer will reside after calling the base class constructor
// Make the value for the 'this' pointer for use within a constructor
let MakeAndPublishSafeThisVal cenv env (thisIdOpt: Ident option) thisTy = 
    match thisIdOpt with 
    | Some thisId -> 
        // for structs, thisTy is a byref 
        if not (isFSharpObjModelTy cenv.g thisTy) then 
            errorR(Error(FSComp.SR.tcStructsCanOnlyBindThisAtMemberDeclaration(),thisId.idRange));

        let valScheme = ValScheme(thisId,NonGenericTypeScheme(mkRefCellTy cenv.g thisTy),None,None,false,ValInline.Never,CtorThisVal,None,false,false,false,false)
        Some(MakeAndPublishVal cenv env (ParentNone, false, ExpressionBinding, ValNotInRecScope, valScheme, [], XmlDoc.Empty, None, false))

    | None -> 
        None 


//-------------------------------------------------------------------------
// Helpers for type inference for recursive bindings
//------------------------------------------------------------------------- 

/// Fixup the type instantiation at recursive references. Used after the bindings have been
/// checked. The fixups are applied by using mutation.
let AdjustAndForgetUsesOfRecValue cenv (vrefTgt: ValRef) (valScheme : ValScheme) =
    let (TypeScheme(generalizedTypars,_)) = valScheme.TypeScheme
    let fty = GeneralizedTypeForTypeScheme valScheme.TypeScheme
    let lvrefTgt = vrefTgt.Deref
    if nonNil generalizedTypars then 
        // Find all the uses of this recursive binding and use mutation to adjust the expressions 
        // at those points in order to record the inferred type parameters. 
        let recUses = cenv.recUses.Find lvrefTgt
        recUses |> List.iter  (fun (fixupPoint,m,isComplete) -> 
          if not isComplete then 
              // Keep any values for explicit type arguments 
              let fixedUpExpr = 
                  let vrefFlags,tyargs0 = 
                      match !fixupPoint with 
                      | Expr.App(Expr.Val (_,vrefFlags,_),_,tyargs0,[],_) -> vrefFlags,tyargs0
                      | Expr.Val(_,vrefFlags,_) -> vrefFlags,[] 
                      | _ -> 
                          errorR(Error(FSComp.SR.tcUnexpectedExprAtRecInfPoint(),m)); 
                          NormalValUse,[]
                  
                  let ityargs = generalizeTypars (List.drop (List.length tyargs0) generalizedTypars)
                  primMkApp (Expr.Val (vrefTgt,vrefFlags,m),fty) (tyargs0 @ ityargs) [] m
              fixupPoint :=   fixedUpExpr)

    vrefTgt.Deref.SetValRec ValNotInRecScope
    cenv.recUses <- cenv.recUses.Remove vrefTgt.Deref 
     

/// Set the properties of recursive values that are only fully known after inference is complete 
let AdjustRecType _cenv (vspec:Val) (ValScheme(_,typeScheme,topValData,_,_,_,_,_,_,_,_,_)) =
    let fty = GeneralizedTypeForTypeScheme typeScheme
    vspec.SetType fty;
    vspec.SetValReprInfo topValData;
    vspec.SetValRec (ValInRecScope true)
       
/// Record the generated value expression as a place where we will have to 
/// adjust using AdjustAndForgetUsesOfRecValue at a letrec point. Every use of a value 
/// under a letrec gets used at the _same_ type instantiation. 
let RecordUseOfRecValue cenv vrec (vrefTgt: ValRef) vexp m = 
    match vrec with 
    | ValInRecScope isComplete -> 
        let fixupPoint = ref vexp
        cenv.recUses <- cenv.recUses.Add (vrefTgt.Deref, (fixupPoint,m,isComplete)) ;
        Expr.Link (fixupPoint)
    | ValNotInRecScope -> 
        vexp

type RecursiveUseFixupPoints = RecursiveUseFixupPoints of (Expr ref * range) list

/// Get all recursive references, for fixing up delayed recursion using laziness 
let GetAllUsesOfRecValue cenv vrefTgt = 
    RecursiveUseFixupPoints (cenv.recUses.Find vrefTgt |> List.map (fun (fixupPoint,m,_) -> (fixupPoint,m)))


//-------------------------------------------------------------------------
// Helpers for Generalization
//------------------------------------------------------------------------- 

let ChooseCanonicalDeclaredTyparsAfterInference g denv declaredTypars m =

    declaredTypars |> List.iter (fun tp -> 
      let ty = mkTyparTy tp
      if not (isAnyParTy g ty) then 
          error(Error(FSComp.SR.tcLessGenericBecauseOfAnnotation(tp.Name,NicePrint.prettyStringOfTy denv ty),tp.Range)));
    
    let declaredTypars = NormalizeDeclaredTyparsForEquiRecursiveInference g declaredTypars

    if (ListSet.setify typarEq declaredTypars).Length <> declaredTypars.Length then 
        errorR(Error(FSComp.SR.tcConstrainedTypeVariableCannotBeGeneralized(),m));

    declaredTypars

let ChooseCanonicalValSchemeAfterInference g denv valscheme m =
    let (ValScheme(id,typeScheme,arityInfo,memberInfoOpt,isMutable,inlineFlag,baseOrThis,vis,compgen,isIncrClass,isTyFunc,hasDeclaredTypars)) = valscheme
    let (TypeScheme(generalizedTypars,ty)) = typeScheme
    let generalizedTypars = ChooseCanonicalDeclaredTyparsAfterInference g denv generalizedTypars m
    let typeScheme = TypeScheme(generalizedTypars,ty)
    let valscheme = ValScheme(id,typeScheme,arityInfo,memberInfoOpt,isMutable,inlineFlag,baseOrThis,vis,compgen,isIncrClass,isTyFunc,hasDeclaredTypars)
    valscheme

let PlaceTyparsInDeclarationOrder declaredTypars generalizedTypars  =
    declaredTypars @ (generalizedTypars |> List.filter (fun tp -> not (ListSet.contains typarEq tp declaredTypars)))

let SetTyparRigid _g denv m (tp:Typar) = 
    match tp.Solution with 
    | None -> ()
    | Some ty -> 
        if tp.IsCompilerGenerated then 
            errorR(Error(FSComp.SR.tcGenericParameterHasBeenConstrained(NicePrint.prettyStringOfTy denv ty),m))
        else 
            errorR(Error(FSComp.SR.tcTypeParameterHasBeenConstrained(NicePrint.prettyStringOfTy denv ty),tp.Range))
    tp.SetRigidity TyparRigidity.Rigid

let GeneralizeVal cenv denv enclosingDeclaredTypars generalizedTyparsForThisBinding 
        (PrelimValScheme1(id,iflex,ty,partialValReprInfo,memberInfoOpt,isMutable,inlineFlag,baseOrThis,argAttribs,vis,compgen)) = 

    let (ExplicitTyparInfo(_rigidCopyOfDeclaredTypars,declaredTypars,_)) = iflex

    let m = id.idRange

    let allDeclaredTypars = enclosingDeclaredTypars@declaredTypars
    let allDeclaredTypars = ChooseCanonicalDeclaredTyparsAfterInference cenv.g denv allDeclaredTypars m

    // Trim out anything not in type of the value (as opposed to the type of the r.h.s) 
    // This is important when a single declaration binds 
    // multiple generic items, where each item does not use all the polymorphism 
    // of the r.h.s. , e.g. let x,y = None,[] 
    let computeRelevantTypars thruFlag = 
        let ftps = (freeInTypeLeftToRight cenv.g thruFlag ty)
        let generalizedTypars = generalizedTyparsForThisBinding |> List.filter (fun tp -> ListSet.contains typarEq tp ftps)
        // Put declared typars first 
        let generalizedTypars = PlaceTyparsInDeclarationOrder allDeclaredTypars generalizedTypars  
        generalizedTypars

    let generalizedTypars = computeRelevantTypars false

    // Check stability of existence and ordering of type parameters under erasure of type abbreviations
    let generalizedTyparsLookingThroughTypeAbbreviations = computeRelevantTypars true
    if not (generalizedTypars.Length = generalizedTyparsLookingThroughTypeAbbreviations.Length && 
            List.forall2 typarEq generalizedTypars generalizedTyparsLookingThroughTypeAbbreviations) then
        warning(Error(FSComp.SR.tcTypeParametersInferredAreNotStable(),m));

    let hasDeclaredTypars = nonNil declaredTypars
    // This is just about the only place we form a TypeScheme 
    let tyScheme = TypeScheme(generalizedTypars, ty)
    PrelimValScheme2(id,tyScheme,partialValReprInfo,memberInfoOpt,isMutable,inlineFlag,baseOrThis,argAttribs,vis,compgen,hasDeclaredTypars)

let GeneralizeVals cenv denv enclosingDeclaredTypars generalizedTypars types = 
    NameMap.map (GeneralizeVal cenv denv enclosingDeclaredTypars generalizedTypars) types

let DontGeneralizeVals types = 
    let dontGeneralizeVal (PrelimValScheme1(id,_,ty,partialValReprInfoOpt,memberInfoOpt,isMutable,inlineFlag,baseOrThis,argAttribs,vis,compgen)) = 
        PrelimValScheme2(id, NonGenericTypeScheme(ty), partialValReprInfoOpt,memberInfoOpt,isMutable,inlineFlag,baseOrThis,argAttribs,vis,compgen,false)
    NameMap.map dontGeneralizeVal types

let InferGenericArityFromTyScheme (TypeScheme(generalizedTypars,_)) partialValReprInfo =
    TranslatePartialArity generalizedTypars partialValReprInfo

let ComputeIsTyFunc(id:Ident,hasDeclaredTypars,arityInfo:ValReprInfo option) = 
    hasDeclaredTypars && 
    (match arityInfo with 
     | None -> error(Error(FSComp.SR.tcExplicitTypeParameterInvalid(),id.idRange)) 
     | Some info -> info.NumCurriedArgs = 0) 

let UseSyntacticArity declKind typeScheme partialValReprInfo = 
    if DeclKind.MustHaveArity declKind then 
        Some(InferGenericArityFromTyScheme typeScheme partialValReprInfo)
    else 
        None

/// Combine the results of InferSynValData and InferArityOfExpr. 
//
// The F# spec says that we infer arities from declaration forms and types.
//
// For example
//     let f (a,b) c = 1                  // gets arity [2;1] 
//     let f (a:int*int) = 1              // gets arity [2], based on type
//     let f () = 1                       // gets arity [0]
//     let f = (fun (x:int) (y:int) -> 1) // gets arity [1;1]
//     let f = (fun (x:int*int) y -> 1)   // gets arity [2;1]
//
// Some of this arity inference is purely syntax directed and done in InferSynValData in ast.fs
// Some is done by InferArityOfExpr. 
//
// However, there are some corner cases in this specification. In particular, consider
//   let f () () = 1             // [0;1] or [0;0]?  Answer: [0;1]
//   let f (a:unit) = 1          // [0] or [1]?      Answer: [1]
//   let f = (fun () -> 1)       // [0] or [1]?      Answer: [0]
//   let f = (fun (a:unit) -> 1) // [0] or [1]?      Answer: [1]
//
// The particular choice of [1] for
//   let f (a:unit) = 1          
// is intended to give a disambiguating form for members that override methods taking a single argument 
// instantiated to type "unit", e.g.
//    type Base<'a> = 
//        abstract M : 'a -> unit
//
//    { new Base with 
//        member x.M(v:int) = () }
//
//    { new Base with 
//        member x.M(v:unit) = () }
//
let CombineSyntacticAndInferredArities g declKind rhsExpr prelimScheme = 
    let (PrelimValScheme2(_,typeScheme,partialValReprInfoOpt,memberInfoOpt,isMutable,_,_,ArgAndRetAttribs(argAttribs,retAttribs),_,_,_)) = prelimScheme
    match partialValReprInfoOpt, DeclKind.MustHaveArity declKind with
    | _        ,false -> None
    | None     ,true  -> Some(PartialValReprInfo([],ValReprInfo.unnamedRetVal))
    // Don't use any expression information for members, where syntax dictates the arity completely
    | _ when memberInfoOpt.IsSome -> 
        partialValReprInfoOpt
    | Some(partialValReprInfoFromSyntax),true  -> 
        let (PartialValReprInfo(curriedArgInfosFromSyntax,retInfoFromSyntax)) = partialValReprInfoFromSyntax
        let partialArityInfo = 
            if isMutable then 
                PartialValReprInfo ([],retInfoFromSyntax)
            else
            
                let (ValReprInfo (_,curriedArgInfosFromExpression,_)) = 
                    InferArityOfExpr g (GeneralizedTypeForTypeScheme typeScheme) argAttribs retAttribs rhsExpr

                // Choose between the syntactic arity and the expression-inferred arity
                // If the syntax specifies an eliminated unit arg, then use that
                let choose ai1 ai2 = 
                    match ai1,ai2 with 
                    | [],_ -> []
                    // Dont infer eliminated unit args from the expression if they don't occur syntactically.
                    | ai,[] -> ai
                    // If we infer a tupled argument from the expression and/or type then use that
                    | _ when ai1.Length < ai2.Length -> ai2
                    | _ -> ai1
                let rec loop ais1 ais2 =
                    match ais1,ais2 with 
                    // If the expression infers additional arguments then use those (this shouldn't happen, since the
                    // arity inference done on the syntactic form should give identical results)
                    | [],ais | ais,[] -> ais
                    | (h1::t1),(h2::t2) -> choose h1 h2 :: loop t1 t2
                let curriedArgInfos = loop curriedArgInfosFromSyntax curriedArgInfosFromExpression
                PartialValReprInfo (curriedArgInfos,retInfoFromSyntax)

        Some(partialArityInfo)

let BuildValScheme declKind partialArityInfoOpt prelimScheme = 
    let (PrelimValScheme2(id,typeScheme,_,memberInfoOpt,isMutable,inlineFlag,baseOrThis,_,vis,compgen,hasDeclaredTypars)) = prelimScheme
    let topValInfo = 
        if DeclKind.MustHaveArity declKind then 
            Option.map (InferGenericArityFromTyScheme typeScheme) partialArityInfoOpt
        else
            None
    let isTyFunc = ComputeIsTyFunc(id,hasDeclaredTypars,topValInfo)
    ValScheme(id,typeScheme,topValInfo,memberInfoOpt,isMutable,inlineFlag,baseOrThis,vis,compgen,false,isTyFunc,hasDeclaredTypars)

let UseCombinedArity g declKind rhsExpr prelimScheme = 
    let partialArityInfoOpt = CombineSyntacticAndInferredArities g declKind rhsExpr prelimScheme 
    BuildValScheme declKind partialArityInfoOpt prelimScheme
    
let UseNoArity prelimScheme = 
    BuildValScheme ExpressionBinding None prelimScheme

let MakeSimpleVals cenv env names =
    let tyschemes  = DontGeneralizeVals names
    let valSchemes = NameMap.map UseNoArity tyschemes
    let values     = MakeAndPublishVals cenv env (ParentNone,false,ExpressionBinding,ValNotInRecScope,valSchemes,[],XmlDoc.Empty,None)
    let vspecMap   = NameMap.map fst values
    values,vspecMap
    
let MakeAndPublishSimpleVals cenv env m names mergeNamesInOneNameresEnv =
    
    let values,vspecMap = 
        if not mergeNamesInOneNameresEnv then MakeSimpleVals cenv env names
        else
            // reason: now during typecheck we create new name resolution environment for all components of tupled arguments in lambda. 
            // When trying to find best environment for the given position first we pick the most deeply nested scope that contains given position 
            // (and that will be lambda body – correct one), then we look for the better subtree on the left hand side 
            // (and that will be name resolution environment containing second parameter parameter – without the first one).
            // fix: I've tried to make fix as local as possible to reduce overall impact on the source code. 
            // Idea of the fix: replace existing typecheck results sink and capture all reported name resolutions (this will be all parameters in lambda). 
            // After that - we restore the sink back, generate new name resolution environment that contains all captured names and report generated environment 
            // to the old sink.


            // default behavior - send EnvWithScope notification for every resolved name
            // what we do here is override this default behavior and capture only all name resolution notifications
            // later we'll process them and create one name resolution env that will contain names from all notifications
            let nameResolutions = ResizeArray()
            let values,vspecMap = 
                let sink =
                    { new ITypecheckResultsSink with
                        member this.NotifyEnvWithScope(_, _, _) = () // ignore EnvWithScope reports
                        member this.NotifyNameResolution(pos, a, b, occurence, denv, nenv, ad, m) = nameResolutions.Add(pos, a, b, occurence, denv, nenv, ad, m)
                        member this.NotifyExprHasType(_, _, _, _, _, _) = assert false } // no expr typings in MakeSimpleVals

                use _h = WithNewTypecheckResultsSink(sink, cenv.tcSink)
                MakeSimpleVals cenv env names
    
            if nameResolutions.Count <> 0 then 
                let (_, _, _, _, _, _, ad, m1) = nameResolutions.[0]
                // mergedNameEnv - name resolution env that contains all names
                // mergedRange - union of ranges of names
                let mergedNameEnv, mergedRange = 
                    ((env.NameEnv, m1), nameResolutions) ||> Seq.fold (fun (nenv, merged) (_pos, item, _b, _occurence, _denv, _nenv, _ad, m) ->
                        // MakeAndPublishVal creates only Item.Value
                        let item = match item with Item.Value(item) -> item | _ -> failwith "impossible"
                        (AddFakeNamedValRefToNameEnv item.DisplayName nenv item), (unionRanges m merged)
                        )
                // send notification about mergedNameEnv
                CallEnvSink cenv.tcSink (mergedRange, mergedNameEnv, ad)
                // call CallNameResolutionSink for all captured name resolutions using mergedNameEnv
                for (_, item, b, occurence, denv, _nenv, ad, m) in nameResolutions do
                    CallNameResolutionSink cenv.tcSink (m, mergedNameEnv, item, b, occurence, denv,  ad)

            values,vspecMap

    let envinner   = AddLocalValMap cenv.tcSink m vspecMap env
    envinner,values,vspecMap



//-------------------------------------------------------------------------
// Helpers to freshen existing types and values, i.e. when a reference
// to C<_> occurs then generate C for a fresh type inference variable ?ty.
//------------------------------------------------------------------------- 
   
let FreshenTyconRef m rigid (tcref:TyconRef) declaredTyconTypars = 
    let tpsorig = declaredTyconTypars
    let tps = copyTypars tpsorig
    if rigid <> TyparRigidity.Rigid then 
      tps |> List.iter (fun tp -> tp.SetRigidity rigid);  
        
    let renaming,tinst = FixupNewTypars m [] [] tpsorig tps
    (TType_app(tcref,List.map mkTyparTy tpsorig), tps, renaming, TType_app(tcref,tinst))
    
let FreshenPossibleForallTy g m rigid ty = 
    let tpsorig,tau =  tryDestForallTy g ty
    if isNil tpsorig then [],[],tau
    else
        // tps may be have been equated to other tps in equi-recursive type inference and units-of-measure type inference. Normalize them here 
        let tpsorig = NormalizeDeclaredTyparsForEquiRecursiveInference g tpsorig
        let tps,renaming,tinst = CopyAndFixupTypars m rigid tpsorig
        tps,tinst,instType renaming tau

let infoOfTyconRef m (tcref:TyconRef) = 
    let tps,renaming,tinst = FreshenTypeInst m (tcref.Typars(m))
    tps,renaming,tinst,TType_app (tcref,tinst)


/// Given a abstract method, which may be a generic method, freshen the type in preparation 
/// to apply it as a constraint to the method that implements the abstract slot 
let FreshenAbstractSlot g amap m synTyparDecls absMethInfo = 

    // Work out if an explicit instantiation has been given. If so then the explicit type 
    // parameters will be made rigid and checked for generalization. If not then auto-generalize 
    // by making the copy of the type parameters on the virtual being overriden rigid. 

    let typarsFromAbsSlotAreRigid = 
        
        match synTyparDecls with 
        | SynValTyparDecls(synTypars,infer,_) -> 
            if nonNil synTypars && infer then errorR(Error(FSComp.SR.tcOverridingMethodRequiresAllOrNoTypeParameters(),m));
            isNil synTypars
            
    let (CompiledSig (argtys,retTy,fmtps,_)) = CompiledSigOfMeth g amap m absMethInfo
    
    // If the virual method is a generic method then copy its type parameters 
    let typarsFromAbsSlot,typarInstFromAbsSlot,_ = 
        let ttps = absMethInfo.GetFormalTyparsOfEnclosingType m 
        let ttinst = argsOfAppTy g absMethInfo.EnclosingType
        let rigid = (if typarsFromAbsSlotAreRigid then TyparRigidity.Rigid else TyparRigidity.Flexible)
        ConstraintSolver.FreshenAndFixupTypars m rigid ttps ttinst fmtps

    // Work out the required type of the member 
    let argTysFromAbsSlot = argtys |> List.mapSquared (instType typarInstFromAbsSlot) 
    let retTyFromAbsSlot = retTy  |> GetFSharpViewOfReturnType g |> instType typarInstFromAbsSlot 
    typarsFromAbsSlotAreRigid,typarsFromAbsSlot,argTysFromAbsSlot, retTyFromAbsSlot


//-------------------------------------------------------------------------
// Helpers to typecheck expressions and patterns
//------------------------------------------------------------------------- 

let BuildFieldMap cenv env isPartial ty flds m = 
    let ad = env.eAccessRights
    if isNil flds then invalidArg "flds" "BuildFieldMap";
   
    let frefSets = 
        flds |> List.map (fun (fld,fldExpr) -> 
            let frefSet = ResolveField cenv.nameResolver env.eNameResEnv ad ty fld
            fld,frefSet, fldExpr)
    let relevantTypeSets = 
        frefSets |> List.map (fun (_,frefSet,_) -> frefSet |> List.choose (fun rfref -> Some rfref.TyconRef))
    
    let tcref = 
        match List.fold (ListSet.intersect (tyconRefEq cenv.g)) (List.head relevantTypeSets) (List.tail relevantTypeSets) with
        | [tcref] -> tcref
        | _ -> 
            if isPartial then 
                warning (Error(FSComp.SR.tcFieldsDoNotDetermineUniqueRecordType(),m));
            // OK, there isn't a unique type dictated by the intersection for the field refs. 
            // We're going to get an error of some kind below. 
            // Just choose one field ref and let the error come later 
            let (_,frefSet1,_) = List.head frefSets
            let fref1 = List.head frefSet1
            fref1.TyconRef
    
    let fldsmap,rfldsList = 
        ((Map.empty,[]), frefSets) ||> List.fold (fun (fs,rfldsList) (fld,frefs,fldExpr) -> 
                match frefs |> List.filter (fun fref2 -> tyconRefEq cenv.g tcref fref2.TyconRef) with
                | [fref2] -> 

                    // Record the precise resolution of the field for intellisense
                    let item = FreshenRecdFieldRef cenv.nameResolver m fref2
                    CallNameResolutionSink cenv.tcSink ((snd fld).idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,ad)

                    CheckRecdFieldAccessible m env.eAccessRights fref2 |> ignore;
                    CheckFSharpAttributes cenv.g fref2.PropertyAttribs m |> CommitOperationResult;        
                    if  Map.containsKey fref2.FieldName fs then 
                        errorR (Error(FSComp.SR.tcFieldAppearsTwiceInRecord(fref2.FieldName),m));
                    if  not (tyconRefEq cenv.g tcref fref2.TyconRef) then 
                        let (_,frefSet1,_) = List.head frefSets
                        let fref1 = List.head frefSet1
                        errorR (FieldsFromDifferentTypes(env.DisplayEnv,fref1,fref2,m));
                        (fs,rfldsList)
                    else (Map.add fref2.FieldName fldExpr fs,
                          (fref2.FieldName,fldExpr)::rfldsList)
                | _ -> error(Error(FSComp.SR.tcRecordFieldInconsistentTypes(),m)))
    tcref,fldsmap,List.rev rfldsList

let rec ApplyUnionCaseOrExn (makerForUnionCase,makerForExnTag) m cenv env overallTy item =
    let ad = env.eAccessRights
    match item with 
    | Item.ExnCase ecref -> 
        CheckEntityAttributes cenv.g ecref m  |> CommitOperationResult;
        UnifyTypes cenv env m overallTy cenv.g.exn_ty;
        CheckTyconAccessible m ad ecref |> ignore;
        let mkf = makerForExnTag(ecref)
        mkf,recdFieldTysOfExnDefRef ecref

    | Item.UnionCase ucinfo ->   
        let ucref = ucinfo.UnionCaseRef 
        CheckUnionCaseAttributes cenv.g ucref m  |> CommitOperationResult;
        CheckUnionCaseAccessible m ad ucref |> ignore;
        let gtyp2 = actualResultTyOfUnionCase ucinfo.TypeInst ucref 
        let inst = mkTyparInst ucref.TyconRef.TyparsNoRange ucinfo.TypeInst
        UnifyTypes cenv env m overallTy gtyp2;
        let mkf = makerForUnionCase(ucref,ucinfo.TypeInst)
        mkf,actualTysOfUnionCaseFields inst ucref 
    | _ -> invalidArg "item" "not a union case or exception reference"

let ApplyUnionCaseOrExnTypes m cenv env overallTy c = 
  ApplyUnionCaseOrExn ((fun (a,b) args -> mkUnionCaseExpr(a,b,args,m)),
                       (fun a args -> mkExnExpr (a,args,m))) m cenv env overallTy c
      
let ApplyUnionCaseOrExnTypesForPat  m cenv env overallTy c = 
  ApplyUnionCaseOrExn ((fun (a,b) args -> TPat_unioncase(a,b,args,m)),
                       (fun a args -> TPat_exnconstr(a,args,m))) m cenv env overallTy c

let UnionCaseOrExnCheck (env: TcEnv) nargtys nargs m =
  if nargs <> nargtys then error (UnionCaseWrongArguments(env.DisplayEnv,nargtys,nargs,m))

let TcUnionCaseOrExnField cenv (env: TcEnv) ty1 m c n funcs =
    let ad = env.eAccessRights
    let mkf,argtys = 
      match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false m ad env.eNameResEnv TypeNameResolutionInfo.Default c with
      | (Item.UnionCase _ | Item.ExnCase _) as item ->
        ApplyUnionCaseOrExn funcs m cenv env ty1 item
      | _ -> error(Error(FSComp.SR.tcUnknownUnion(),m))
    if n >= List.length argtys then 
      error (UnionCaseWrongNumberOfArgs(env.DisplayEnv,List.length argtys,n,m));
    let ty2 = List.nth argtys n
    mkf,ty2

//-------------------------------------------------------------------------
// Environment of explicit type parameters, e.g. 'a in "(x : 'a)"
//------------------------------------------------------------------------- 

type SyntacticUnscopedTyparEnv = UnscopedTyparEnv of NameMap

let emptyUnscopedTyparEnv : SyntacticUnscopedTyparEnv = UnscopedTyparEnv Map.empty

let AddUnscopedTypar n p (UnscopedTyparEnv tab) = UnscopedTyparEnv (Map.add n p tab)

let TryFindUnscopedTypar n (UnscopedTyparEnv tab) = Map.tryFind n tab

let HideUnscopedTypars typars (UnscopedTyparEnv tab) = 
    UnscopedTyparEnv (List.fold (fun acc (tp:Typar) -> Map.remove tp.Name acc) tab typars)

//-------------------------------------------------------------------------
// Helpers for generalizing type variables
//------------------------------------------------------------------------- 

type GeneralizeConstrainedTyparOptions = 
    | CanGeneralizeConstrainedTypars 
    | DoNotGeneralizeConstrainedTypars


module GeneralizationHelpers = 
    let ComputeUngeneralizableTypars env = 
        
        // This is just a List.fold. Unfolded here to enable better profiling 
        let rec loop acc (items: UngeneralizableItem list) =
             match items with 
             | [] -> acc
             | item::rest -> 
                 let acc = 
                     if item.WillNeverHaveFreeTypars then 
                         acc 
                     else
                         let ftps = item.GetFreeTyvars().FreeTypars
                         if ftps.IsEmpty then 
                             acc 
                         else 
                             // These union operations are a performance sore point
                             unionFreeTypars ftps acc
                 loop acc rest

        loop emptyFreeTypars env.eUngeneralizableItems 

    let ComputeUnabstractableTycons env = 
        let acc_in_free_item acc (item: UngeneralizableItem) = 
            let ftycs = 
                if item.WillNeverHaveFreeTypars then item.CachedFreeLocalTycons else 
                let ftyvs = item.GetFreeTyvars()
                ftyvs.FreeTycons
            if ftycs.IsEmpty then acc else unionFreeTycons ftycs acc

        List.fold acc_in_free_item emptyFreeTycons env.eUngeneralizableItems 

    let ComputeUnabstractableTraitSolutions env = 
        let acc_in_free_item acc (item: UngeneralizableItem) = 
            let ftycs = 
                if item.WillNeverHaveFreeTypars then item.CachedFreeTraitSolutions else 
                let ftyvs = item.GetFreeTyvars()
                ftyvs.FreeTraitSolutions
            if ftycs.IsEmpty then acc else unionFreeLocals ftycs acc

        List.fold acc_in_free_item emptyFreeLocals env.eUngeneralizableItems 

    let rec IsGeneralizableValue g t = 
        match t with 
        | Expr.Lambda _ | Expr.TyLambda _ | Expr.Const _ | Expr.Val _ -> true

        // Look through coercion nodes corresponding to introduction of subsumption 
        | Expr.Op(TOp.Coerce,[inputTy;actualTy],[e1],_) when isFunTy g actualTy && isFunTy g inputTy -> 
            IsGeneralizableValue g e1

        | Expr.Op(op,_,args,_) ->
            match op with 
            | TOp.Tuple  -> true
            | TOp.UnionCase uc -> not (isUnionCaseAllocObservable uc)
            | TOp.Recd(ctorInfo,tcref) -> 
                match ctorInfo with 
                | RecdExpr ->  not (isRecdOrUnionOrStructTyconRefAllocObservable g tcref)
                | RecdExprIsObjInit -> false
            | TOp.Array ->  isNil args
            | TOp.ExnConstr ec -> not (isExnAllocObservable ec)

            | TOp.ILAsm([],_) -> true

            | _ -> false
            && List.forall (IsGeneralizableValue g) args

        | Expr.LetRec(binds,body,_,_)  ->
            binds |> FlatList.forall (fun b -> IsGeneralizableValue g b.Expr) &&
            IsGeneralizableValue g body
        | Expr.Let(bind,body,_,_) -> 
            IsGeneralizableValue g bind.Expr &&
            IsGeneralizableValue g body


        // Applications of type functions are _not_ normally generalizable unless explicitly marked so 
        | Expr.App(Expr.Val (vref,_,_),_,_,[],_) when vref.IsTypeFunction -> 
            HasFSharpAttribute g g.attrib_GeneralizableValueAttribute vref.Attribs
             
        
        | Expr.App(e1,_,_,[],_) -> IsGeneralizableValue g e1
        | Expr.TyChoose(_,b,_) -> IsGeneralizableValue g b
        | Expr.Obj (_,ty,_,_,_,_,_) -> isInterfaceTy g ty || isDelegateTy g ty
        | Expr.Link eref -> IsGeneralizableValue g !eref

        | _ -> false  

    let CanGeneralizeConstrainedTyparsForDecl declKind = 
        if DeclKind.CanGeneralizeConstrainedTypars declKind 
        then CanGeneralizeConstrainedTypars 
        else DoNotGeneralizeConstrainedTypars
        
    /// Recursively knock out typars we can't generalize. 
    /// For non-generalized type variables be careful to iteratively knock out 
    /// both the typars and any typars free in the constraints of the typars
    /// into the set that are considered free in the environment. 
    let rec TrimUngeneralizableTypars genConstrainedTyparFlag inlineFlag (generalizedTypars:Typar list) freeInEnv = 
        // Do not generalize type variables with a static requirement unless function is marked 'inline' 
        let generalizedTypars,ungeneralizableTypars1 =  
            if inlineFlag = ValInline.PseudoVal then generalizedTypars,[]
            else generalizedTypars |> List.partition (fun tp -> tp.StaticReq = NoStaticReq) 

        // Do not generalize type variables which would escape their scope 
        // because they are free in the environment 
        let generalizedTypars,ungeneralizableTypars2 = 
            List.partition (fun x -> not (Zset.contains x freeInEnv)) generalizedTypars

        // Some situations, e.g. implicit class constructions that represent functions as fields, 
        // do not allow generalisation over constrained typars. (since they can not be represented as fields 
        let generalizedTypars,ungeneralizableTypars3 = 
            generalizedTypars |> List.partition (fun tp -> 
                genConstrainedTyparFlag = CanGeneralizeConstrainedTypars || 
                tp.Constraints.IsEmpty) 

        if isNil ungeneralizableTypars1 && isNil ungeneralizableTypars2 && isNil ungeneralizableTypars3 then
            generalizedTypars, freeInEnv
        else 
            let freeInEnv = 
                unionFreeTypars 
                    (accFreeInTypars CollectAllNoCaching ungeneralizableTypars1 
                        (accFreeInTypars CollectAllNoCaching ungeneralizableTypars2 
                            (accFreeInTypars CollectAllNoCaching ungeneralizableTypars3 emptyFreeTyvars))).FreeTypars 
                    freeInEnv
            TrimUngeneralizableTypars genConstrainedTyparFlag inlineFlag generalizedTypars freeInEnv

    /// Condense type variables in positive position
    let CondenseTypars (cenv, denv:DisplayEnv, generalizedTypars: Typars, tauTy) =

        // The type of the value is ty11 * ... * ty1N -> ... -> tyM1 * ... * tyMM -> retTy
        // This is computed REGARDLESS of the arity of the expression.
        let curriedArgTys,retTy = stripFunTy cenv.g tauTy
        let allUntupledArgTys = curriedArgTys |> List.collect (tryDestTupleTy cenv.g)

        // Compute the type variables in 'retTy'
        let returnTypeFreeTypars = freeInTypeLeftToRight cenv.g false retTy
        let allUntupledArgTysWithFreeVars = allUntupledArgTys |> List.map (fun ty -> (ty, freeInTypeLeftToRight cenv.g false ty))

        let relevantUniqueSubtypeConstraint (tp:Typar) = 
            // Find a single subtype constraint
            match tp.Constraints |> List.partition (function (TyparConstraint.CoercesTo _) -> true | _ -> false) with 
            | [TyparConstraint.CoercesTo(cxty,_)], others -> 
                 // Throw away null constraints if they are implied 
                 match others |> List.filter (function (TyparConstraint.SupportsNull(_)) -> not (TypeSatisfiesNullConstraint cenv.g cxty) | _ -> true) with
                 | [] -> Some cxty
                 | _ -> None
            | _ -> None
                 

        // Condensation typars can't be used in the constraints of any candidate condensation typars. So compute all the
        // typars free in the constraints of tyIJ

        let lhsConstraintTypars = 
            allUntupledArgTys |> List.collect (fun ty -> 
                if isTyparTy cenv.g ty then 
                    let tp = destTyparTy cenv.g ty 
                    match relevantUniqueSubtypeConstraint tp with 
                    | Some cxty -> freeInTypeLeftToRight cenv.g false cxty
                    | None -> []
                else [])

        let IsCondensationTypar (tp:Typar) = 
            // A condensation typar may not a user-generated type variable nor has it been unified with any user type variable
            (tp.DynamicReq = TyparDynamicReq.No) && 
            // A condensation typar must have a single constraint "'a :> A"
            (isSome (relevantUniqueSubtypeConstraint tp)) &&
            // This is type variable is not used on the r.h.s. of the type
            not (ListSet.contains typarEq tp returnTypeFreeTypars) &&
            // A condensation typar can't be used in the constraints of any candidate condensation typars
            not (ListSet.contains typarEq tp lhsConstraintTypars) &&
            // A condensation typar must occur precisely once in tyIJ, and must not occur free in any other tyIJ
            (match allUntupledArgTysWithFreeVars |> List.partition (fun (ty,_) -> isTyparTy cenv.g ty && typarEq (destTyparTy cenv.g ty) tp) with
             | [_], rest -> not (rest |> List.exists (fun (_,fvs) -> ListSet.contains typarEq tp fvs))
             | _ -> false)
             
        let condensationTypars, generalizedTypars = generalizedTypars |> List.partition IsCondensationTypar

        // Condensation solves type variables eagerly and removes them from the generalization set 
        condensationTypars |> List.iter (fun tp -> 
            ConstraintSolver.ChooseTyparSolutionAndSolve cenv.css denv tp);
        generalizedTypars

    let CanonicalizePartialInferenceProblem (cenv,denv,m) tps =
        // Canonicalize constraints prior to generalization 
        let csenv = (MakeConstraintSolverEnv cenv.css m denv)
        TryD (fun () -> ConstraintSolver.CanonicalizeRelevantMemberConstraints csenv 0 NoTrace tps)
             (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) 
        |> RaiseOperationResult

    let ComputeAndGeneralizeGenericTypars (cenv,
                                           denv:DisplayEnv,
                                           m,
                                           immut,
                                           freeInEnv:FreeTypars,
                                           canInferTypars,
                                           genConstrainedTyparFlag,
                                           inlineFlag,
                                           exprOpt,
                                           allDeclaredTypars: Typars,
                                           maxInferredTypars: Typars,
                                           tauTy,
                                           resultFirst) =

        let allDeclaredTypars = NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g allDeclaredTypars
        let typarsToAttemptToGeneralize = 
            if immut && (match exprOpt with None -> true | Some e -> IsGeneralizableValue cenv.g e) 
            then (ListSet.unionFavourLeft typarEq  allDeclaredTypars maxInferredTypars)
            else allDeclaredTypars

        let generalizedTypars,freeInEnv = 
            TrimUngeneralizableTypars genConstrainedTyparFlag inlineFlag typarsToAttemptToGeneralize freeInEnv

        allDeclaredTypars |> List.iter (fun tp -> 
              if Zset.memberOf freeInEnv tp then
                let ty =  mkTyparTy tp
                error(Error(FSComp.SR.tcNotSufficientlyGenericBecauseOfScope(NicePrint.prettyStringOfTy denv ty),m)));
            
        let generalizedTypars = CondenseTypars(cenv,denv,generalizedTypars,tauTy)    

        let generalizedTypars =  
            if canInferTypars then generalizedTypars 
            else generalizedTypars |> List.filter (fun tp -> ListSet.contains typarEq tp allDeclaredTypars)

        let allConstraints = List.collect (fun (tp:Typar) -> tp.Constraints) generalizedTypars 
        let generalizedTypars = ConstraintSolver.SimplifyMeasuresInTypeScheme cenv.g resultFirst generalizedTypars tauTy allConstraints

        // Generalization turns inference type variables into rigid, quantified type variables,
        // (they may be rigid already)
        generalizedTypars |> List.iter (SetTyparRigid cenv.g denv m);
        
        // Generalization removes constraints related to generalized type variables
        let csenv = MakeConstraintSolverEnv cenv.css m denv
        EliminateConstraintsForGeneralizedTypars csenv NoTrace generalizedTypars;
        
        generalizedTypars

    //-------------------------------------------------------------------------
    // Helpers to freshen existing types and values, i.e. when a reference
    // to C<_> occurs then generate C for a fresh type inference variable ?ty.
    //------------------------------------------------------------------------- 



    let CheckDeclaredTyparsPermitted (memFlagsOpt, declaredTypars, m) = 
        match memFlagsOpt with 
        | None -> ()
        | Some memberFlags -> 
            match memberFlags.MemberKind with 
            // can't infer extra polymorphism for properties 
            | MemberKind.PropertyGet  | MemberKind.PropertySet  -> 
                 if nonNil declaredTypars then 
                     errorR(Error(FSComp.SR.tcPropertyRequiresExplicitTypeParameters(),m));
            | MemberKind.Constructor -> 
                 if nonNil declaredTypars then 
                     errorR(Error(FSComp.SR.tcConstructorCannotHaveTypeParameters(),m));
            | _ -> ()

    /// Properties and Constructors may only generalize the variables associated with the containing class (retrieved from the 'this' pointer) 
    /// Also check they don't declare explicit typars. 
    let ComputeCanInferExtraGeneralizableTypars (parentRef, canInferTypars, memFlagsOpt) =  
        canInferTypars &&
        (match parentRef with 
         | Parent tcref -> not tcref.IsFSharpDelegateTycon 
         | _ -> true) &&  // no generic paramters inferred for 'Invoke' method
        (match memFlagsOpt with 
         | None -> true
         | Some memberFlags -> 
            match memberFlags.MemberKind with 
            // can't infer extra polymorphism for properties 
            | MemberKind.PropertyGet | MemberKind.PropertySet  -> false
            // can't infer extra polymorphism for class constructors 
            | MemberKind.ClassConstructor ->  false
            // can't infer extra polymorphism for constructors 
            | MemberKind.Constructor -> false
            // feasible to infer extra polymorphism 
            | _ -> true)

        

//-------------------------------------------------------------------------
// ComputeInlineFlag 
//-------------------------------------------------------------------------

let ComputeInlineFlag memFlagsOption isInline isMutable m = 
    let inlineFlag = 
        // Mutable values may never be inlined 
        // Constructors may never be inlined 
        // Calls to virtual/abstract slots may never be inlined 
        if isMutable || 
           (match memFlagsOption with 
            | None -> false
            | Some x -> (x.MemberKind = MemberKind.Constructor) || x.IsDispatchSlot || x.IsOverrideOrExplicitImpl) 
        then ValInline.Never 
        elif isInline then ValInline.PseudoVal 
        else ValInline.Optional
    if isInline && (inlineFlag <> ValInline.PseudoVal) then 
        errorR(Error(FSComp.SR.tcThisValueMayNotBeInlined(),m))
    inlineFlag


//-------------------------------------------------------------------------
// Binding normalization.
//
// Determine what sort of value is being bound (normal value, instance
// member, normal function, static member etc.) and make some
// name-resolution-sensitive adjustments to the syntax tree.
//
// One part of this "normalization" ensures: 
//        "let SynPat.LongIdent(f) = e" when f not a datatype constructor --> let Pat_var(f) = e" 
//        "let SynPat.LongIdent(f) pat = e" when f not a datatype constructor --> let Pat_var(f) = \pat. e" 
//        "let (SynPat.LongIdent(f) : ty) = e" when f not a datatype constructor --> let (Pat_var(f) : ty) = e" 
//        "let (SynPat.LongIdent(f) : ty) pat = e" when f not a datatype constructor --> let (Pat_var(f) : ty) = \pat. e" 
// 
// This is because the first lambda in a function definition "let F x = e" 
// now looks like a constructor application, i.e. let (F x) = e ... 
//  also let A.F x = e ... 
//  also let f x = e ... 
//
// The other parts turn property definitions into method definitions.
//------------------------------------------------------------------------- 

 
// NormalizedBindingRhs records the r.h.s. of a binding after some munging just before type checking.
// NOTE: This is a bit of a mess.  In the early implementation of F# we decided 
// to have the parser convert "let f x = e" into 
// "let f = fun x -> e".  This is called "pushing" a pattern across to the right hand side. Complex 
// patterns (e.g. non-tuple patterns) result in a computation on the right. 
// However, this approach really isn't that great - especially since 
// the language is now considerably more complex, e.g. we use 
// type information from the first (but not the second) form in 
// type inference for recursive bindings, and the first form 
// may specify .NET attributes for arguments. There are still many 
// relics of this approach around, e.g. the expression in BindingRhs 
// below is of the second form. However, to extract relevant information 
// we keep a record of the pats and optional explicit return type already pushed 
// into expression so we can use any user-given type information from these 
type NormalizedBindingRhs = 
    | NormalizedBindingRhs of SynSimplePats list * SynBindingReturnInfo option * SynExpr 

let PushOnePatternToRhs (cenv:cenv) isMember p (NormalizedBindingRhs(spatsL,rtyOpt,rhsExpr)) = 
    let spats,rhsExpr = PushPatternToExpr cenv.synArgNameGenerator isMember p rhsExpr
    NormalizedBindingRhs(spats::spatsL, rtyOpt,rhsExpr)

type NormalizedBindingPatternInfo = 
    NormalizedBindingPat of SynPat * NormalizedBindingRhs * SynValData * SynValTyparDecls 


/// Represents a syntactic, unchecked binding after the resolution of the name resolution status of pattern
/// constructors and after "pushing" all complex patterns to the right hand side.
type NormalizedBinding = 
  | NormalizedBinding of 
      SynAccess option *
      SynBindingKind *
      bool *  (* pesudo/mustinline value? *)
      bool *  (* mutable *)
      SynAttributes * 
      XmlDoc *
      SynValTyparDecls * 
      SynValData * 
      SynPat * 
      NormalizedBindingRhs *
      range *
      SequencePointInfoForBinding


type IsObjExprBinding = 
    | ObjExprBinding 
    | ValOrMemberBinding



module BindingNormalization =
    /// Push a bunch of pats at once. They may contain patterns, e.g. let f (A x) (B y) = ... 
    /// In this case the sematnics is let f a b = let A x = a in let B y = b 
    let private PushMultiplePatternsToRhs (cenv:cenv) isMember ps (NormalizedBindingRhs(spatsL,rtyOpt,rhsExpr)) = 
        let spatsL2,rhsExpr = PushCurriedPatternsToExpr cenv.synArgNameGenerator rhsExpr.Range isMember ps rhsExpr
        NormalizedBindingRhs(spatsL2@spatsL, rtyOpt, rhsExpr)


    let private MakeNormalizedStaticOrValBinding cenv isObjExprBinding id vis typars args rhsExpr valSynData = 
        let (SynValData(memberFlagsOpt,_,_)) = valSynData 
        NormalizedBindingPat(mkSynPatVar vis id, PushMultiplePatternsToRhs cenv ((isObjExprBinding = ObjExprBinding) || isSome memberFlagsOpt) args rhsExpr,valSynData,typars)

    let private MakeNormalizedInstanceMemberBinding cenv thisId memberId toolId vis m typars args rhsExpr valSynData = 
        NormalizedBindingPat(SynPat.InstanceMember(thisId,memberId,toolId,vis,m), PushMultiplePatternsToRhs cenv true args rhsExpr,valSynData,typars)

    let private NormalizeStaticMemberBinding cenv memberFlags valSynData id vis typars args m rhsExpr = 
        let (SynValData(_,valSynInfo,thisIdOpt)) = valSynData 
        if memberFlags.IsInstance then 
            // instance method without adhoc "this" argument 
            error(Error(FSComp.SR.tcInstanceMemberRequiresTarget(),m));
        match args, memberFlags.MemberKind  with 
        | _,MemberKind.PropertyGetSet    -> error(Error(FSComp.SR.tcUnexpectedPropertyInSyntaxTree(),m))
        | [],MemberKind.ClassConstructor -> error(Error(FSComp.SR.tcStaticInitializerRequiresArgument(),m))
        | [],MemberKind.Constructor     -> error(Error(FSComp.SR.tcObjectConstructorRequiresArgument(),m))
        | [_],MemberKind.ClassConstructor  
        | [_],MemberKind.Constructor  -> MakeNormalizedStaticOrValBinding cenv ValOrMemberBinding id vis typars args rhsExpr valSynData
        // Static property declared using 'static member P = expr': transformed to a method taking a "unit" argument 
        // static property: these transformed into methods taking one "unit" argument 
        | [],MemberKind.Member -> 
            let memberFlags = {memberFlags with MemberKind = MemberKind.PropertyGet} 
            let valSynData = SynValData(Some memberFlags,valSynInfo,thisIdOpt)
            NormalizedBindingPat(mkSynPatVar vis id,
                                 PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit,m)) rhsExpr,
                                 valSynData,
                                 typars)
        | _ -> MakeNormalizedStaticOrValBinding cenv ValOrMemberBinding id vis typars args rhsExpr valSynData

    let private NormalizeInstanceMemberBinding cenv memberFlags valSynData thisId memberId (toolId:Ident option) vis typars args m rhsExpr = 
        let (SynValData(_,valSynInfo,thisIdOpt)) = valSynData 
        if not memberFlags.IsInstance then 
            // static method with adhoc "this" argument 
            error(Error(FSComp.SR.tcStaticMemberShouldNotHaveThis(),m));
        match args, memberFlags.MemberKind  with 
        | _,MemberKind.ClassConstructor  -> error(Error(FSComp.SR.tcExplicitStaticInitializerSyntax(),m))
        | _,MemberKind.Constructor  -> error(Error(FSComp.SR.tcExplicitObjectConstructorSyntax(),m))
        | _,MemberKind.PropertyGetSet  -> error(Error(FSComp.SR.tcUnexpectedPropertySpec(),m))
        // Instance property declared using 'x.Member': transformed to methods taking a "this" and a "unit" argument 
        // We push across the 'this' arg in mk_rec_binds 
        | [],MemberKind.Member -> 
            let memberFlags = {memberFlags with MemberKind = MemberKind.PropertyGet}
            NormalizedBindingPat
                (SynPat.InstanceMember(thisId,memberId,toolId,vis,m), 
                 PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit,m)) rhsExpr,
                 // Update the member info to record that this is a MemberKind.PropertyGet 
                 SynValData(Some memberFlags,valSynInfo,thisIdOpt),
                 typars)

        | _ -> MakeNormalizedInstanceMemberBinding cenv thisId memberId toolId vis m typars args rhsExpr valSynData

    let private NormalizeBindingPattern cenv nameResolver isObjExprBinding (env: TcEnv) valSynData pat rhsExpr =
        let ad = env.eAccessRights
        let (SynValData(memberFlagsOpt,_,_)) = valSynData 
        let rec normPattern pat = 
            // One major problem with versions of F# prior to 1.9.x was that data constructors easily 'pollute' the namespace 
            // of available items, to the point that you can't even define a function with the same name as an existing union case. 
            match pat with 
            | SynPat.FromParseError(p,_) -> normPattern p
            | SynPat.LongIdent (LongIdentWithDots(longId,_), toolId, tyargs, args, vis, m) ->
                let typars = (match tyargs with None -> inferredTyparDecls | Some typars -> typars)
                match memberFlagsOpt with 
                | None ->                
                    match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with
                    | Item.NewDef id -> 
                        if id.idText = opNameCons  then
                            NormalizedBindingPat(pat,rhsExpr,valSynData,typars)
                        else
                            if (isObjExprBinding = ObjExprBinding) then 
                                errorR(Deprecated(FSComp.SR.tcObjectExpressionFormDeprecated(),m))
                            MakeNormalizedStaticOrValBinding cenv isObjExprBinding id vis typars args rhsExpr valSynData
                    | _ -> 
                        error(Error(FSComp.SR.tcInvalidDeclaration(),m))

                | Some memberFlags ->                
                    match longId with 
                    // x.Member in member binding patterns. 
                    | [thisId;memberId] -> NormalizeInstanceMemberBinding cenv memberFlags valSynData thisId memberId toolId vis typars args m rhsExpr 
                    | [memberId]        -> NormalizeStaticMemberBinding cenv memberFlags valSynData memberId vis typars args m rhsExpr 
                    | _                 -> NormalizedBindingPat(pat,rhsExpr,valSynData,typars)

            // Object constructors are normalized in TcLetrec 
            // Here we are normalizing member definitions with simple (not long) ids, 
            // e.g. "static member x = 3" and "member x = 3" (instance with missing "this." comes through here. It is trapped and generates a warning) 
            | SynPat.Named (SynPat.Wild _, id, false, vis, m) 
                when 
                   (match memberFlagsOpt with 
                    | None -> false 
                    | Some memberFlags -> 
                         not (memberFlags.MemberKind = MemberKind.Constructor) &&
                         not (memberFlags.MemberKind = MemberKind.ClassConstructor)) ->            
                NormalizeStaticMemberBinding cenv (Option.get memberFlagsOpt) valSynData id vis inferredTyparDecls [] m rhsExpr 

            | SynPat.Typed(pat',x,y) ->             
                let (NormalizedBindingPat(pat'',e'',valSynData,typars)) = normPattern pat'
                NormalizedBindingPat(SynPat.Typed(pat'',x,y), e'',valSynData,typars)

            | SynPat.Attrib(_,_,m) ->             
                error(Error(FSComp.SR.tcAttributesInvalidInPatterns(),m));

            | _ ->
                NormalizedBindingPat(pat,rhsExpr,valSynData,inferredTyparDecls) 
        normPattern pat

    let NormalizeBinding isObjExprBinding cenv (env: TcEnv) b = 
        match b with 
        | Binding (vis,bkind,isInline,isMutable,attrs,doc,valSynData,p,retInfo,rhsExpr,mBinding,spBind) ->
            let (NormalizedBindingPat(pat,rhsExpr,valSynData,typars)) = 
                NormalizeBindingPattern cenv cenv.nameResolver isObjExprBinding env valSynData p (NormalizedBindingRhs ([], retInfo, rhsExpr))
            NormalizedBinding(vis,bkind,isInline,isMutable,attrs,doc.ToXmlDoc(),typars,valSynData,pat,rhsExpr,mBinding,spBind)

//-------------------------------------------------------------------------
// input is:
//    []
//    member x.P with get = fun () -> e
// --> 
//    member x.add_P< >(argName) = (e).AddHandler(argName)
//    member x.remove_P< >(argName) = (e).RemoveHandler(argName)

module EventDeclarationNormalization = 
    let ConvertSynInfo m (SynValInfo(argInfos,retInfo)) = 
       // reconstitute valSynInfo by adding the argument
       let argInfos = 
           match argInfos with 
           | [[thisArgInfo];[]] ->  [[thisArgInfo];SynInfo.unnamedTopArg] // instance property getter
           | [[]] -> [SynInfo.unnamedTopArg] // static property getter
           | _ -> error(BadEventTransformation(m))

       // reconstitute valSynInfo
       SynValInfo(argInfos,retInfo)

    // THe property x.P becomes methods x.add_P and x.remove_P
    let ConvertMemberFlags  memberFlags = { memberFlags with MemberKind= MemberKind.Member } 

    let private ConvertMemberFlagsOpt m memberFlagsOpt =
        match memberFlagsOpt with 
        | Some memberFlags -> Some (ConvertMemberFlags memberFlags)
        | _ -> error(BadEventTransformation(m))

    let private ConvertSynData m valSynData =
        let (SynValData(memberFlagsOpt,valSynInfo,thisIdOpt)) = valSynData 
        let memberFlagsOpt = ConvertMemberFlagsOpt m memberFlagsOpt
        let valSynInfo = ConvertSynInfo m valSynInfo
        SynValData(memberFlagsOpt,valSynInfo,thisIdOpt)
     
    let rec private  RenameBindingPattern f declPattern = 
        match declPattern with  
        | SynPat.FromParseError(p,_) -> RenameBindingPattern f p
        | SynPat.Typed(pat',_,_) -> RenameBindingPattern f pat'
        | SynPat.Named (SynPat.Wild m1, id,x2,vis2,m) -> SynPat.Named (SynPat.Wild m1, ident(f id.idText,id.idRange) ,x2,vis2,m) 
        | SynPat.InstanceMember(thisId,id,toolId,vis2,m) -> SynPat.InstanceMember(thisId,ident(f id.idText,id.idRange),toolId,vis2,m)
        | _ -> error(Error(FSComp.SR.tcOnlySimplePatternsInLetRec(),declPattern.Range))

    /// Some F# bindings syntactically imply additional bindings, notably properties
    /// annotated with []
    let GenerateExtraBindings cenv (bindingAttribs,binding) =
        let (NormalizedBinding(vis1, bindingKind, isInline, isMutable, _, bindingXmlDoc, _synTyparDecls, valSynData, declPattern, bindingRhs, mBinding, spBind)) = binding
        if CompileAsEvent cenv.g bindingAttribs then 

            let MakeOne (prefix,target) = 
                let declPattern = RenameBindingPattern (fun s -> prefix^s) declPattern
                let argName = "handler"
                // modify the rhs and argument data
                let bindingRhs,valSynData = 
                   let (NormalizedBindingRhs(_,_,rhsExpr)) = bindingRhs
                   let m = rhsExpr.Range
                   // reconstitute valSynInfo by adding the argument
                   let valSynData = ConvertSynData m valSynData

                   match rhsExpr with 
                   // Detect 'fun () -> e' which results from the compilation of a property getter
                   | SynExpr.Lambda (_,_,SynSimplePats.SimplePats([],_), trueRhsExpr,m) ->
                       let rhsExpr = mkSynApp1 (SynExpr.DotGet(SynExpr.Paren(trueRhsExpr,range0,None,m),range0,LongIdentWithDots([ident(target,m)],[]),m)) (SynExpr.Ident(ident(argName,m))) m
                       
                       // reconstitute rhsExpr
                       let bindingRhs = NormalizedBindingRhs([],None,rhsExpr)

                       // add the argument to the expression 
                       let bindingRhs = PushOnePatternToRhs cenv true (mkSynPatVar None (ident (argName,mBinding))) bindingRhs 
                       
                       bindingRhs,valSynData
                   | _ -> 
                       error(BadEventTransformation(m))

                // reconstitute the binding
                NormalizedBinding(vis1,bindingKind,isInline,isMutable,[],bindingXmlDoc,noInferredTypars,valSynData,declPattern,bindingRhs,mBinding,spBind) 

            [ MakeOne ("add_","AddHandler"); MakeOne ("remove_","RemoveHandler") ]
        else 
            []



/// Make a copy of the "this" type for a generic object type, e.g. List<'T> --> List<'?> for a fresh inference variable.
/// Also adjust the "this" type to take into account whether the type is a struct.
let FreshenObjectArgType cenv m rigid tcref isExtrinsic declaredTyconTypars = 
#if EXTENDED_EXTENSION_MEMBERS // indicates if extension members can add additional constraints to type parameters
    let tcrefObjTy,enclosingDeclaredTypars,renaming,objTy = FreshenTyconRef m (if isExtrinsic then TyparRigidity.WarnIfNotRigid else rigid) tcref declaredTyconTypars
#else
    let tcrefObjTy,enclosingDeclaredTypars,renaming,objTy = FreshenTyconRef m rigid tcref declaredTyconTypars
#endif
    // Struct members have a byref 'this' type (unless they are extrinsic extension members)
    let thisTy = 
        if tcref.IsStructOrEnumTycon && not isExtrinsic then 
            mkByrefTy cenv.g objTy 
        else 
            objTy
    tcrefObjTy,enclosingDeclaredTypars,renaming,objTy,thisTy


// The early generalization rule of F# 2.0 can be unsound for members in generic types (Bug DevDiv2 10649).
// It gives rise to types like "Forall T. ?X -> ?Y" where ?X and ?Y are later discovered to invovled T. 
//
// For example:
//      type C<'T>() = 
//          let mutable x = Unchecked.defaultof<_> // unknown inference variable ?X
//          static member A() = x 
//                     // At this point A is generalized early to "Forall T. unit -> ?X"
//          static member B1() = C.A() 
//                     // At this point during type inference, the return type of C.A() is '?X'
//                     // After type inference,  the return type of C.A() is 'string'
//          static member B2() = C.A() 
//                     // At this point during type inference, the return type of C.A() is '?X'
//                     // After type inference,  the return type of C.A() is 'int'
//          member this.C() = (x : 'T)
//                     // At this point during type inference the type of 'x' is inferred to be 'T'
//
// Here "A" is generalized too early. 
//
// Ideally we would simply generalize "A" later, when it is known to be
// sound. However, that can lead to other problems (e.g. some programs that typecheck today would no longer
// be accepted). As a result, we deal with this unsoundness by an adhoc post-type-checking
// consistency check for recursive uses of "A" with explicit instantiations within the recursive 
// scope of "A".
let TcValEarlyGeneralizationConsistencyCheck cenv (env:TcEnv) (v:Val, vrec, tinst, vty, tau, m) =
    match vrec with 
    | ValInRecScope isComplete when isComplete && nonNil tinst ->
        //printfn "pushing post-inference check for '%s', vty = '%s'" v.DisplayName (DebugPrint.showType vty)
        cenv.postInferenceChecks.Add (fun () -> 
            //printfn "running post-inference check for '%s'" v.DisplayName
            //printfn "tau = '%s'" (DebugPrint.showType tau)
            //printfn "vty = '%s'" (DebugPrint.showType vty)
            let tpsorig,tau2 =  tryDestForallTy cenv.g vty
            //printfn "tau2 = '%s'" (DebugPrint.showType tau2)
            if nonNil tpsorig then 
              let tpsorig = NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g tpsorig
              let tau3 = instType (mkTyparInst tpsorig tinst) tau2
              //printfn "tau3 = '%s'" (DebugPrint.showType tau3)
              if not (AddCxTypeEqualsTypeUndoIfFailed env.DisplayEnv cenv.css m tau tau3) then
                  let txt = bufs (fun buf -> NicePrint.outputQualifiedValSpec env.DisplayEnv buf v)
                  error(Error(FSComp.SR.tcInferredGenericTypeGivesRiseToInconsistency(v.DisplayName, txt),m)))
    | _ -> ()


/// TcVal. "Use" a value, normally at a fresh type instance (unless optInst is
/// given). optInst is set when an explicit type instantiation is given, e.g. 
///     Seq.empty
/// In this case the vrefFlags inside optInst are just NormalValUse.
///
/// optInst is is also set when building the final call for a reference to an
/// F# object model member, in which case the optInst is the type instantiation
/// inferred by member overload resolution, and vrefFlags indicate if the
/// member is being used in a special way, i.e. may be one of:
///    | CtorValUsedAsSuperInit    "inherit Panel()"
///    | CtorValUsedAsSelfInit     "new() = new OwnType(3)"
///    | VSlotDirectCall           "base.OnClick(eventArgs)"
let TcVal checkAttributes cenv env tpenv (vref:ValRef) optInst m =
    let v = vref.Deref
    let vrec = v.RecursiveValInfo
    v.SetHasBeenReferenced() 
    CheckValAccessible m env.eAccessRights vref;
    if checkAttributes then 
        CheckValAttributes cenv.g vref m  |> CommitOperationResult;
    let vty = vref.Type
    // byref-typed values get dereferenced 
    if isByrefTy cenv.g vty then 
        let isSpecial = true
        mkAddrGet m vref, isSpecial, destByrefTy cenv.g vty, [], tpenv
    else 
      match v.LiteralValue with 
      | Some c -> 
          // Literal values go to constants 
          let isSpecial = true
          // The value may still be generic, e.g. 
          //   []
          //   let Null = null
          let _,tinst,tau = FreshenPossibleForallTy cenv.g m TyparRigidity.Flexible vty 
          Expr.Const(c,m,tau),isSpecial,tau,tinst,tpenv

      | None -> 
            // References to 'this' in classes get dereferenced from their implicit reference cell and poked
          if v.BaseOrThisInfo = CtorThisVal && isRefCellTy cenv.g vty  then 
              let exprForVal = exprForValRef m vref
              //if AreWithinCtorPreConstruct env then 
              //    warning(SelfRefObjCtor(AreWithinImplicitCtor env, m));

              let ty = destRefCellTy cenv.g vty
              let isSpecial = true
              mkCallCheckThis cenv.g m ty (mkRefCellGet cenv.g m ty exprForVal), isSpecial, ty, [], tpenv
          else 
              // Instantiate the value 
              let vrefFlags,tinst,tau,tpenv = 
                  // Have we got an explicit instantiation? 
                  match optInst with 
                  // No explicit instantiation (the normal case)
                  | None -> 
                      if HasFSharpAttribute cenv.g cenv.g.attrib_RequiresExplicitTypeArgumentsAttribute v.Attribs then
                           errorR(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(v.DisplayName),m));
                  
                      match vrec with 
                      | ValInRecScope false -> 
                          let tps,tau =  vref.TypeScheme
                          let tinst = tps |> List.map mkTyparTy
                          NormalValUse,tinst,tau,tpenv
                      | ValInRecScope true 
                      | ValNotInRecScope ->
                          let _,tinst,tau = FreshenPossibleForallTy cenv.g m TyparRigidity.Flexible vty 
                          NormalValUse,tinst,tau,tpenv

                  // If we have got an explicit instantiation then use that 
                  | Some(vrefFlags,checkTys) -> 
                          let checkInst (tinst:TypeInst) = 
                              if not v.IsMember && not v.PermitsExplicitTypeInstantiation && tinst.Length > 0 && v.Typars.Length > 0 then 
                                   warning(Error(FSComp.SR.tcDoesNotAllowExplicitTypeArguments(v.DisplayName),m));
                          match vrec with 
                          | ValInRecScope false -> 
                              let tpsorig,tau =  vref.TypeScheme
                              let (tinst:TypeInst),tpenv = checkTys tpenv (tpsorig |> List.map (fun tp -> tp.Kind))
                              checkInst tinst;
                              if tpsorig.Length <> tinst.Length then error(Error(FSComp.SR.tcTypeParameterArityMismatch(tpsorig.Length, tinst.Length),m));
                              let tau2 = instType (mkTyparInst tpsorig tinst) tau
                              (tpsorig, tinst) ||> List.iter2 (fun tp ty -> 
                                  try UnifyTypes cenv env m (mkTyparTy tp) ty
                                  with _ -> error (Recursion(env.DisplayEnv,v.Id,tau2,tau,m))) 
                              vrefFlags,tinst,tau2,tpenv  
                          | ValInRecScope true 
                          | ValNotInRecScope ->
                              let tps,tptys,tau = FreshenPossibleForallTy cenv.g m TyparRigidity.Flexible vty 
                              //dprintfn "After Freshen: tau = %s" (Layout.showL (typeL tau));
                              let (tinst:TypeInst),tpenv = checkTys tpenv (tps |> List.map (fun tp -> tp.Kind))
                              checkInst tinst;
                              //dprintfn "After Check: tau = %s" (Layout.showL (typeL tau));
                              if tptys.Length <> tinst.Length then error(Error(FSComp.SR.tcTypeParameterArityMismatch((List.length tps), (List.length tinst)),m));
                              List.iter2 (UnifyTypes cenv env m) tptys tinst;
                              TcValEarlyGeneralizationConsistencyCheck cenv env (v, vrec, tinst, vty, tau, m)

                              //dprintfn "After Unify: tau = %s" (Layout.showL (typeL tau));
                              vrefFlags,tinst,tau,tpenv  
                      
              let exprForVal = Expr.Val (vref,vrefFlags,m)
              let exprForVal = mkTyAppExpr m (exprForVal,vty) tinst
              let isSpecial = 
                  (match vrefFlags with NormalValUse | PossibleConstrainedCall _ -> false | _ -> true) ||  
                  valRefEq cenv.g vref cenv.g.splice_expr_vref || 
                  valRefEq cenv.g vref cenv.g.splice_raw_expr_vref 
              
              let exprForVal =  RecordUseOfRecValue cenv vrec vref exprForVal m

              exprForVal, isSpecial, tau, tinst, tpenv

/// simplified version of TcVal used in calls to BuildMethodCall (typrelns.fs)
/// this function is used on typechecking step for making calls to provided methods and on optimization step (for the same purpose).
let LightweightTcValForUsingInBuildMethodCall g (vref:ValRef) vrefFlags (vrefTypeInst : TTypes) m = 
    let v = vref.Deref 
    let vty = vref.Type 
    // byref-typed values get dereferenced 
    if isByrefTy g vty then 
        mkAddrGet m vref, destByrefTy g vty 
    else 
      match v.LiteralValue with 
      | Some c -> 
          let _,_,tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vty 
          Expr.Const(c,m,tau),tau  
      | None -> 
              // Instantiate the value 
              let tau = 
                  // If we have got an explicit instantiation then use that 
                  let tps,tptys,tau = FreshenPossibleForallTy g m TyparRigidity.Flexible vty 
                  if tptys.Length <> vrefTypeInst.Length then error(Error(FSComp.SR.tcTypeParameterArityMismatch(tps.Length, vrefTypeInst.Length),m));
                  instType (mkTyparInst tps vrefTypeInst) tau 
                      
              let exprForVal = Expr.Val (vref,vrefFlags,m) 
              let exprForVal = mkTyAppExpr m (exprForVal,vty) vrefTypeInst 
              exprForVal, tau

/// Mark points where we decide whether an expression will support automatic
/// decondensation or not. This is somewhat a relic of a previous implementation of decondensation and could
/// be removed

type ApplicableExpr = 
    | ApplicableExpr of 
           // context
           cenv * 
           // the function-valued expression
           Expr *
           // is this the first in an application series
           bool 
    member x.Range = 
        match x with 
        | ApplicableExpr (_,e,_) -> e.Range
    member x.Type = 
        match x with 
        | ApplicableExpr (cenv,e,_) -> tyOfExpr cenv.g e 
    member x.SupplyArgument(e2,m) =
        let (ApplicableExpr (cenv,fe,first)) = x 
        let combinedExpr = 
            match fe with 
            | Expr.App(e1,e1ty,tyargs1,args1,e1m) when 
                       (not first || isNil args1) &&
                       (not (isForallTy cenv.g e1ty) || isFunTy cenv.g (applyTys cenv.g e1ty (tyargs1,args1))) -> 
                Expr.App(e1,e1ty,tyargs1,args1@[e2],unionRanges e1m m)
            | _ -> 
                Expr.App(fe,tyOfExpr cenv.g fe,[],[e2],m) 
        ApplicableExpr(cenv, combinedExpr,false)
    member x.Expr =
        match x with 
        | ApplicableExpr(_,e,_) ->  e
 
let MakeApplicableExprNoFlex cenv expr =
    ApplicableExpr (cenv,expr,true)

/// This function reverses the effect of condensation for a named function value (indeed it can
/// work for any expression, though we only invoke it immediately after a call to TcVal).
///
/// De-condensation is determined BEFORE any arguments are checked. Thus
///      let f (x:'a) (y:'a) = ()
///
///      f  (new obj()) "string"
///
/// does not type check (the argument instantiates 'a to "obj" but there is no flexibility on the
/// second argument position.
///
/// De-condensation is applied AFTER taking into account an explicit type instantiation. This
///      let f<'a> (x:'a) = ()
///
///      f("string)"
///
/// will type check but
///
/// Sealed types and 'obj' do not introduce generic flexibility when functions are used as first class
/// values. 
///
/// For 'obj' this is because introducing this flexibility would NOT be the reverse of condensation,
/// since we don't condense 
///     f : 'a -> unit
/// to
///     f : obj -> unit
///
/// We represent the flexibility in the TAST by leaving a function-to-function coercion node in the tree
/// This "special" node is immediately eliminated by the use of IteratedFlexibleAdjustArityOfLambdaBody as soon as we 
/// first transform the tree (currently in optimization)

let MakeApplicableExprWithFlex cenv (env: TcEnv) expr =
    let exprTy = tyOfExpr cenv.g expr
    let m = expr.Range
    
    let isNonFlexibleType ty = isSealedTy cenv.g ty 
    
    let argTys,retTy = stripFunTy cenv.g exprTy
    let curriedActualTypes = argTys |> List.map (tryDestTupleTy cenv.g)
    if (curriedActualTypes.IsEmpty ||
        curriedActualTypes |> List.exists (List.exists (isByrefTy cenv.g)) ||
        curriedActualTypes |> List.forall (List.forall isNonFlexibleType)) then 
       
        ApplicableExpr (cenv,expr,true)
    else
        let curriedFlexibleTypes = 
            curriedActualTypes |> List.mapSquared (fun actualType -> 
                if isNonFlexibleType actualType 
                then actualType 
                else 
                   let flexibleType = NewInferenceType ()
                   AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace actualType flexibleType;
                   flexibleType)

        // Create a coercion to represent the expansion of the application
        let expr = mkCoerceExpr (expr,mkIteratedFunTy (List.map (mkTupledTy cenv.g) curriedFlexibleTypes) retTy,m,exprTy)
        ApplicableExpr (cenv,expr,true)


///  Checks, warnings and constraint assertions for downcasts 
let TcRuntimeTypeTest isCast cenv denv m tgty srcTy =
    if TypeDefinitelySubsumesTypeNoCoercion 0 cenv.g cenv.amap m tgty srcTy then 
      warning(TypeTestUnnecessary(m));

    if isTyparTy cenv.g srcTy then 
        error(IndeterminateRuntimeCoercion(denv,srcTy,tgty,m));

    if isSealedTy cenv.g srcTy then 
        error(RuntimeCoercionSourceSealed(denv,srcTy,m)); 

    if isSealedTy cenv.g tgty ||
       isTyparTy cenv.g tgty ||
       not (isInterfaceTy cenv.g srcTy) then 
        AddCxTypeMustSubsumeType denv cenv.css m NoTrace srcTy tgty;

    if isErasedType cenv.g tgty then
        if isCast then
            warning(Error(FSComp.SR.tcTypeCastErased(NicePrint.minimalStringOfType denv tgty, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll cenv.g tgty)), m))
        else
            error(Error(FSComp.SR.tcTypeTestErased(NicePrint.minimalStringOfType denv tgty, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll cenv.g tgty)), m))
    else
        getErasedTypes cenv.g tgty |> 
        List.iter (fun ety -> if isMeasureTy cenv.g ety 
                              then warning(Error(FSComp.SR.tcTypeTestLosesMeasures(NicePrint.minimalStringOfType denv ety), m))
                              else warning(Error(FSComp.SR.tcTypeTestLossy(NicePrint.minimalStringOfType denv ety, NicePrint.minimalStringOfType denv (stripTyEqnsWrtErasure EraseAll cenv.g ety)),m)))

///  Checks, warnings and constraint assertions for upcasts 
let TcStaticUpcast cenv denv m tgty srcTy =
    if isTyparTy cenv.g tgty then 
        error(IndeterminateStaticCoercion(denv,srcTy,tgty,m)); 

    if isSealedTy cenv.g tgty then 
        warning(CoercionTargetSealed(denv,tgty,m));

    if typeEquiv cenv.g srcTy tgty then 
        warning(UpcastUnnecessary(m)); 

    AddCxTypeMustSubsumeType denv cenv.css m NoTrace tgty srcTy





let BuildPossiblyConditionalMethodCall cenv env isMutable m isProp minfo valUseFlags minst objArgs args =

    let conditionalCallDefineOpt = TryFindMethInfoStringAttribute cenv.g m cenv.g.attrib_ConditionalAttribute minfo 

    match conditionalCallDefineOpt with 
    | Some(d) when not (List.mem d cenv.conditionalDefines) -> 

        // Methods marked with 'Conditional' must return 'unit' 
        UnifyTypes cenv env m cenv.g.unit_ty (minfo.GetFSharpReturnTy(cenv.amap, m, minst));
        mkUnit cenv.g m, cenv.g.unit_ty

    | _ -> 
#if EXTENSIONTYPING
        match minfo with
        | ProvidedMeth(_, mi, _,_) -> 
            // BuildInvokerExpressionForProvidedMethodCall converts references to F# intrinsics back to values
            // and uses TcVal to do this. However we don't want to check attributes again for provided references to values,
            // so we pass 'false' for 'checkAttributes'.
            let tcVal = LightweightTcValForUsingInBuildMethodCall cenv.g
            let _, retExpt, retTy = ProvidedMethodCalls.BuildInvokerExpressionForProvidedMethodCall tcVal (cenv.g, cenv.amap, mi, objArgs, isMutable, isProp, valUseFlags, args, m)
            retExpt, retTy

        | _ -> 
#endif    
        let tcVal valref valUse ttypes m = 
            let a,_, b, _, _ = TcVal true cenv env emptyUnscopedTyparEnv valref (Some (valUse, (fun x _ -> ttypes, x))) m
            a, b
        BuildMethodCall tcVal cenv.g cenv.amap isMutable m isProp minfo valUseFlags minst objArgs args


let TryFindIntrinsicOrExtensionMethInfo (cenv:cenv) (env: TcEnv) m ad nm ty = 
    AllMethInfosOfTypeInScope cenv.infoReader env.NameEnv.eExtensionMembers (Some(nm),ad) IgnoreOverrides m ty

/// Build the 'test and dispose' part of a 'use' statement 
let BuildDisposableCleanup cenv env m (v:Val) = 
    v.SetHasBeenReferenced() 
    let ad = env.eAccessRights
    let disposeMethod = 
        match TryFindIntrinsicOrExtensionMethInfo cenv env m ad "Dispose" cenv.g.system_IDisposable_typ with 
        | [x] ->  x 
        | _ -> error(InternalError(FSComp.SR.tcCouldNotFindIDisposable(),m)) 


    // For struct types the test is simpler: we can determine if IDisposable is supported, and even when it is, we can avoid doing the type test 
    // Note this affects the elaborated form seen by quotations etc.
    if isStructTy cenv.g v.Type  then 
        if TypeFeasiblySubsumesType 0 cenv.g cenv.amap m cenv.g.system_IDisposable_typ CanCoerce v.Type then
            // We can use NeverMutates here because the variable is going out of scope, there is no need to take a defensive
            // copy of it.
            let disposeExpr,_ = BuildPossiblyConditionalMethodCall cenv env NeverMutates m false disposeMethod NormalValUse [] [exprForVal v.Range v] []    
            disposeExpr
        else
            mkUnit cenv.g m
    else
        let disposeObjVar,disposeObjExpr = Tastops.mkCompGenLocal m "objectToDispose" cenv.g.system_IDisposable_typ
        let disposeExpr,_ = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates   m false disposeMethod NormalValUse [] [disposeObjExpr] []
        let inpe = mkCoerceExpr(exprForVal v.Range v,cenv.g.obj_ty,m,v.Type)
        mkIsInstConditional cenv.g m cenv.g.system_IDisposable_typ inpe disposeObjVar disposeExpr (mkUnit cenv.g m) 

let BuildILFieldGet g amap m objExpr (finfo:ILFieldInfo) = 
    let fref = finfo.ILFieldRef
    let isValueType = finfo.IsValueType
    let valu = if isValueType then AsValue else AsObject
    let tinst = finfo.TypeInst
    let fieldType = finfo.FieldType (amap,m)
#if EXTENSIONTYPING
    let ty = tyOfExpr g objExpr
    match finfo with
    | ProvidedField _ when (isErasedType g ty) ->
        // we know it's accessible, and there are no attributes to check for now...
        match finfo.LiteralValue with 
        | None -> 
            error (Error(FSComp.SR.tcTPFieldMustBeLiteral(), m))
        | Some lit -> 
            Expr.Const(TcFieldInit m lit,m,fieldType)
    | _ ->
#endif
    let wrap,objExpr = mkExprAddrOfExpr g isValueType false NeverMutates objExpr None m
      // The empty instantiation on the AbstractIL fspec is OK, since we make the correct fspec in Ilxgen.GenAsm 
      // This ensures we always get the type instantiation right when doing this from 
      // polymorphic code, after inlining etc. *
    let fspec = mkILFieldSpec(fref,mkILNamedTy valu fref.EnclosingTypeRef [])
    // Add an I_nop if this is an initonly field to make sure we never recognize it as an lvalue. See mkExprAddrOfExpr. 
    wrap (mkAsmExpr (([ mkNormalLdfld fspec ] @ (if finfo.IsInitOnly then [ AI_nop ] else [])), tinst,[objExpr],[fieldType],m)) 

let BuildILFieldSet g m objExpr (finfo:ILFieldInfo) argExpr = 
    let fref = finfo.ILFieldRef
    let isValueType = finfo.IsValueType
    let valu = if isValueType then AsValue else AsObject
    let tinst = finfo.TypeInst
      // The empty instantiation on the AbstractIL fspec is OK, since we make the correct fspec in Ilxgen.gen_asm 
      // This ensures we always get the type instantiation right when doing this from 
      // polymorphic code, after inlining etc. *
    let fspec = mkILFieldSpec(fref,mkILNamedTy valu fref.EnclosingTypeRef [])
    if finfo.IsInitOnly then error (Error (FSComp.SR.tcFieldIsReadonly(),m));
    let wrap,objExpr = mkExprAddrOfExpr g isValueType false DefinitelyMutates objExpr None m 
    wrap (mkAsmExpr ([ mkNormalStfld fspec ], tinst,[objExpr; argExpr],[],m)) 

let BuildILStaticFieldSet m (finfo:ILFieldInfo) argExpr = 
    let fref = finfo.ILFieldRef
    let isValueType = finfo.IsValueType
    let valu = if isValueType then AsValue else AsObject
    let tinst = finfo.TypeInst
      // The empty instantiation on the AbstractIL fspec is OK, since we make the correct fspec in Ilxgen.gen_asm 
      // This ensures we always get the type instantiation right when doing this from 
      // polymorphic code, after inlining etc. 
    let fspec = mkILFieldSpec(fref,mkILNamedTy valu fref.EnclosingTypeRef [])
    if finfo.IsInitOnly then error (Error (FSComp.SR.tcFieldIsReadonly(),m));
    mkAsmExpr ([ mkNormalStsfld fspec ], tinst,[argExpr],[],m)
    
let BuildRecdFieldSet g m objExpr (rfinfo:RecdFieldInfo) argExpr = 
    let tgty = rfinfo.EnclosingType
    let valu = isStructTy g tgty
    let objExpr = if valu then objExpr else mkCoerceExpr(objExpr,tgty,m,tyOfExpr g objExpr)
    mkRecdFieldSet g (objExpr,rfinfo.RecdFieldRef,rfinfo.TypeInst,argExpr,m) 
    
    
//-------------------------------------------------------------------------
// Helpers dealing with named and optional args at callsites
//------------------------------------------------------------------------- 

let (|BinOpExpr|_|) e = 
    match e with 
    | SynExpr.App (_, _, SynExpr.App(_, _, SingleIdent opId, a, _), b, _) -> Some (opId,a,b)
    | _ -> None

let (|SimpleEqualsExpr|_|) e = 
    match e with 
    | BinOpExpr(opId,a,b) when opId.idText = opNameEquals ->  Some (a,b)
    | _ -> None

// For join clauses that join on nullable, we syntactically insert the creation of nullable values on the appropriate side of the condition,
// then pull the syntax apart again
let (|JoinRelation|_|) cenv env (e:SynExpr) = 
    let isOpName opName vref s =
        (s = opName) &&
        let m = e.Range
        let ad = env.eAccessRights
        match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.eNameResEnv TypeNameResolutionInfo.Default [ident(opName,m)] with
        | Item.Value vref2, [] -> valRefEq cenv.g vref vref2  
        | _ -> false

    match e with 
    | BinOpExpr(opId,a,b) when isOpName opNameEquals cenv.g.equals_operator_vref opId.idText -> Some (a,b)

    | BinOpExpr(opId,a,b) when isOpName opNameEqualsNullable cenv.g.equals_nullable_operator_vref opId.idText -> 

        let a = SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet a.Range [MangledGlobalName;"System"] "Nullable",a,a.Range)
        Some (a,b)

    | BinOpExpr(opId,a,b) when isOpName opNameNullableEquals cenv.g.nullable_equals_operator_vref opId.idText -> 

        let b = SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet b.Range [MangledGlobalName;"System"] "Nullable",b,b.Range)
        Some (a,b)

    | BinOpExpr(opId,a,b) when isOpName opNameNullableEqualsNullable cenv.g.nullable_equals_nullable_operator_vref opId.idText -> 

        Some (a,b)

    | _ -> None


/// Detect a named argument at a callsite
let TryGetNamedArg e = 
    match e with 
    | SimpleEqualsExpr(LongOrSingleIdent(isOpt,LongIdentWithDots([a],_),None,_),b)  -> Some(isOpt,a,b)
    | _ -> None 

let IsNamedArg e = isSome (TryGetNamedArg e)

/// Get the method arguments at a callsite, taking into account named and optional arguments
let GetMethodArgs arg =
    let args = 
        match arg with 
        | SynExpr.Const (SynConst.Unit,_) -> []
        | SynExprParen(SynExpr.Tuple (args,_,_),_,_,_) | SynExpr.Tuple (args,_,_) -> args
        | SynExprParen(arg,_,_,_) | arg -> [arg]
    let unnamedCallerArgs,namedCallerArgs = List.takeUntil IsNamedArg args
    let namedCallerArgs = 
        namedCallerArgs |> List.choose (fun e -> 
          if not (IsNamedArg e) then 
              error(Error(FSComp.SR.tcNameArgumentsMustAppearLast(), e.Range)); 
          TryGetNamedArg e)
    unnamedCallerArgs, namedCallerArgs


//-------------------------------------------------------------------------
// Helpers dealing with pattern match compilation
//------------------------------------------------------------------------- 

let CompilePatternForMatch cenv (env: TcEnv) mExpr matchm warnOnUnused actionOnFailure (v,generalizedTypars) clauses inputTy resultTy =
    let dtree,targets = CompilePattern cenv.g env.DisplayEnv cenv.amap mExpr matchm warnOnUnused actionOnFailure (v,generalizedTypars) clauses inputTy resultTy
    mkAndSimplifyMatch NoSequencePointAtInvisibleBinding mExpr matchm resultTy dtree targets

/// Compile a pattern
let CompilePatternForMatchClauses cenv env mExpr matchm warnOnUnused actionOnFailure inputTy resultTy tclauses = 
    // Avoid creating a dummy in the common cases where we are about to bind a name for the expression 
    // CLEANUP: avoid code duplication with code further below, i.e.all callers should call CompilePatternForMatch 
    match tclauses with 
    | [TClause(TPat_as (pat1,PBind (v,TypeScheme(generalizedTypars,_)),_),None,TTarget(vs,e,spTarget),m2)] ->
        let expr = CompilePatternForMatch cenv env mExpr matchm warnOnUnused actionOnFailure (v,generalizedTypars) [TClause(pat1,None,TTarget(FlatListSet.remove valEq v vs,e,spTarget),m2)] inputTy resultTy
        v,expr
    | _ -> 
        let idv,_ = Tastops.mkCompGenLocal mExpr "matchValue" inputTy
        let expr = CompilePatternForMatch cenv env mExpr matchm warnOnUnused actionOnFailure (idv,[]) tclauses inputTy resultTy
        idv,expr


//-------------------------------------------------------------------------
// Helpers dealing with sequence expressions
//------------------------------------------------------------------------- 

   
/// Get the fragmentary expressions resulting from turning 
/// an expression into an enumerable value, e.g. at 'for' loops 

// localAlloc is relevant if the enumerator is a mutable struct and indicates 
// if the enumerator can be allocated as a mutable local variable 
let AnalyzeArbitraryExprAsEnumerable cenv (env: TcEnv) localAlloc m exprty expr =
    let ad = env.eAccessRights

    let err k ty = 
        let txt = NicePrint.minimalStringOfType env.DisplayEnv ty
        let msg = if k then FSComp.SR.tcTypeCannotBeEnumerated(txt) else FSComp.SR.tcEnumTypeCannotBeEnumerated(txt)
        ResultOrException.Exception(Error(msg,m));

    let findMethInfo k m nm ty = 
        match TryFindIntrinsicOrExtensionMethInfo cenv env m ad nm ty with 
        | [] -> err k ty
        | res :: _ -> ResultOrException.Result res  
       
      
    // Ensure there are no curried arguments, and indeed no arguments at all
    let hasArgs (minfo:MethInfo) minst = 
        match minfo.GetParamTypes(cenv.amap, m, minst) with 
        | [[]] -> false
        | _ -> true

    let tryType (exprToSearchForGetEnumeratorAndItem,tyToSearchForGetEnumeratorAndItem) = 
        match findMethInfo true m "GetEnumerator" tyToSearchForGetEnumeratorAndItem with 
        | ResultOrException.Exception e -> ResultOrException.Exception e
        | ResultOrException.Result getEnumerator_minfo  ->

        let getEnumerator_minst = FreshenMethInfo m getEnumerator_minfo
        let retTypeOfGetEnumerator = getEnumerator_minfo.GetFSharpReturnTy(cenv.amap, m, getEnumerator_minst)
        if hasArgs getEnumerator_minfo getEnumerator_minst then err true tyToSearchForGetEnumeratorAndItem else

        match findMethInfo false m "MoveNext" retTypeOfGetEnumerator with 
        | ResultOrException.Exception e -> ResultOrException.Exception e
        | ResultOrException.Result moveNext_minfo        ->

        let moveNext_minst = FreshenMethInfo m moveNext_minfo
        let retTypeOfMoveNext = moveNext_minfo.GetFSharpReturnTy(cenv.amap, m, moveNext_minst)
        if not (typeEquiv cenv.g cenv.g.bool_ty retTypeOfMoveNext) then err false  retTypeOfGetEnumerator else   
        if hasArgs moveNext_minfo moveNext_minst then err false retTypeOfGetEnumerator else

        match findMethInfo false m "get_Current" retTypeOfGetEnumerator with 
        | ResultOrException.Exception e -> ResultOrException.Exception e
        | ResultOrException.Result get_Current_minfo ->

        let get_Current_minst = FreshenMethInfo m get_Current_minfo
        if hasArgs get_Current_minfo get_Current_minst then err false retTypeOfGetEnumerator else
        let enumElemTy  = get_Current_minfo.GetFSharpReturnTy(cenv.amap, m, get_Current_minst)
        
        // Compute the element type of the strongly typed enumerator
        //
        // Like C#, we detect the 'GetEnumerator' pattern for .NET version 1.x abstractions that don't 
        // support the correct generic interface. However unlike C# we also go looking for a 'get_Item' or 'Item' method
        // with a single integer indexer argument to try to get a strong type for the enumeration should the Enumerator
        // not provide anything useful. To enable interop with some legacy COM APIs,
        // the single integer indexer argument is allowed to have type 'object'.

        let enumElemTy = 

            if isObjTy cenv.g enumElemTy then
                // Look for an 'Item' property, or a set of these with consistent return types 
                let allEquivReturnTypes (minfo:MethInfo) (others:MethInfo list) = 
                    let returnTy = minfo.GetFSharpReturnTy(cenv.amap, m, [])
                    others |> List.forall (fun other -> typeEquiv cenv.g (other.GetFSharpReturnTy(cenv.amap, m, [])) returnTy)
                
                let isInt32OrObjectIndexer (minfo:MethInfo) = 
                    match minfo.GetParamTypes(cenv.amap, m, []) with
                    | [[ty]] -> 
                        // e.g. MatchCollection
                        typeEquiv cenv.g cenv.g.int32_ty ty || 
                        // e.g. EnvDTE.Documents.Item
                        typeEquiv cenv.g cenv.g.obj_ty ty
                    | _ -> false
                
                match TryFindIntrinsicOrExtensionMethInfo cenv env m ad "get_Item" tyToSearchForGetEnumeratorAndItem with
                | (minfo :: others) when (allEquivReturnTypes minfo others &&
                                          List.exists isInt32OrObjectIndexer (minfo :: others)) -> 
                    minfo.GetFSharpReturnTy(cenv.amap, m, [])
                
                | _ -> 
                
                // Some types such as XmlNodeList have only an Item method  
                match TryFindIntrinsicOrExtensionMethInfo cenv env m ad "Item" tyToSearchForGetEnumeratorAndItem with
                | (minfo :: others) when (allEquivReturnTypes minfo others &&
                                          List.exists isInt32OrObjectIndexer (minfo :: others)) -> 
                    minfo.GetFSharpReturnTy(cenv.amap, m, [])
                
                | _ -> enumElemTy
            else 
                enumElemTy

        let enumeratorVar,enumeratorExpr = 
            if isStructTy cenv.g retTypeOfGetEnumerator then 
               if localAlloc then 
                  Tastops.mkMutableCompGenLocal m "enumerator" retTypeOfGetEnumerator
               else
                  let v,e = Tastops.mkMutableCompGenLocal m "enumerator" (mkRefCellTy cenv.g retTypeOfGetEnumerator)
                  v,mkRefCellGet cenv.g m retTypeOfGetEnumerator e
                  
            else
               Tastops.mkCompGenLocal m "enumerator" retTypeOfGetEnumerator
            
        let getEnumExpr  ,getEnumTy  = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates   m false getEnumerator_minfo NormalValUse getEnumerator_minst [exprToSearchForGetEnumeratorAndItem] []
        let guardExpr  ,guardTy      = BuildPossiblyConditionalMethodCall cenv env DefinitelyMutates m false moveNext_minfo      NormalValUse moveNext_minst [enumeratorExpr] []
        let currentExpr,currentTy    = BuildPossiblyConditionalMethodCall cenv env DefinitelyMutates m true get_Current_minfo   NormalValUse get_Current_minst [enumeratorExpr] []
        let betterCurrentExpr  = mkCoerceExpr(currentExpr,enumElemTy,currentExpr.Range,currentTy)
        ResultOrException.Result(enumeratorVar, enumeratorExpr,retTypeOfGetEnumerator,enumElemTy,getEnumExpr,getEnumTy, guardExpr,guardTy, betterCurrentExpr)

    // First try the original known static type
    match (if isArray1DTy cenv.g exprty then ResultOrException.Exception (Failure "") else tryType (expr,exprty)) with 
    | ResultOrException.Result res  -> res
    | ResultOrException.Exception e -> 

    let probe ty =
        if (AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m ty exprty) then 
            match tryType (mkCoerceExpr(expr,ty,expr.Range,exprty),ty) with 
            | ResultOrException.Result res  -> Some res
            | ResultOrException.Exception e -> raise e
        else None

    // Next try to typecheck the thing as a sequence
    let enumElemTy = NewInferenceType ()
    let exprTyAsSeq = mkSeqTy cenv.g enumElemTy
    
    match probe exprTyAsSeq with
    |   Some res -> res
    |   None ->
    let ienumerable = mkAppTy cenv.g.tcref_System_Collections_IEnumerable []
    match probe ienumerable with
    |   Some res -> res
    |   None ->
    raise e


// Used inside sequence expressions
let ConvertArbitraryExprToEnumerable cenv ty (env: TcEnv) (expr:Expr) =
    let m = expr.Range
    let enumElemTy = NewInferenceType ()
    if (AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m ( mkSeqTy cenv.g enumElemTy) ty) then 
        expr,enumElemTy
    else          
        let enumerableVar,enumerableExpr = mkCompGenLocal m "inputSequence" ty
        let enumeratorVar, _,retTypeOfGetEnumerator,enumElemTy,getEnumExpr,_,guardExpr,guardTy,betterCurrentExpr = 
            AnalyzeArbitraryExprAsEnumerable cenv env false m ty enumerableExpr
        
        // if isStructTy cenv.g getEnumTy then errorR(Error(FSComp.SR.tcBadReturnTypeForGetEnumerator(),m));
        
        let expr = 
           mkCompGenLet m enumerableVar expr 
               (mkCallSeqOfFunctions cenv.g m retTypeOfGetEnumerator enumElemTy 
                   (mkUnitDelayLambda cenv.g m getEnumExpr)
                   (mkLambda m enumeratorVar (guardExpr,guardTy)) 
                   (mkLambda m enumeratorVar (betterCurrentExpr,enumElemTy)))
        expr,enumElemTy           

let mkSeqEmpty cenv env m genTy =
    // We must discover the 'zero' of the monadic algebra being generated in order to compile failing matches.
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    mkCallSeqEmpty cenv.g m genResultTy 

let mkSeqCollect cenv env m enumElemTy genTy lam enumExpr =
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    let enumExpr = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
    mkCallSeqCollect cenv.g m enumElemTy genResultTy lam enumExpr

let mkSeqUsing cenv (env: TcEnv) m resourceTy genTy resourceExpr lam =
    AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace cenv.g.system_IDisposable_typ resourceTy;
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv  env m genTy (mkSeqTy cenv.g genResultTy);
    mkCallSeqUsing cenv.g m resourceTy genResultTy resourceExpr lam 

let mkSeqDelay cenv env m genTy lam =
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    mkCallSeqDelay cenv.g m genResultTy (mkUnitDelayLambda cenv.g m lam) 


let mkSeqAppend cenv env m genTy e1 e2 =
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    let e1 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
    let e2 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
    mkCallSeqAppend cenv.g m genResultTy e1 e2 

let mkSeqFromFunctions cenv env m genTy e1 e2 =
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    let e2 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e2) e2
    mkCallSeqGenerated cenv.g m genResultTy e1 e2 

let mkSeqFinally cenv env m genTy e1 e2 =
    let genResultTy = NewInferenceType ()
    UnifyTypes cenv env m genTy (mkSeqTy cenv.g genResultTy);
    let e1 = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g genResultTy) (tyOfExpr cenv.g e1) e1
    mkCallSeqFinally cenv.g m genResultTy e1 e2 

let mkSeqExprMatchClauses (pat',vspecs) innerExpr = 
    [TClause(pat',None,TTarget(vspecs, innerExpr,SequencePointAtTarget),pat'.Range) ] 

let compileSeqExprMatchClauses cenv env inputExprMark (pat':Pattern, vspecs) innerExpr bindPatTy genInnerTy = 
    let patMark = pat'.Range
    let tclauses = mkSeqExprMatchClauses (pat',vspecs) innerExpr 
    CompilePatternForMatchClauses cenv env inputExprMark patMark false ThrowIncompleteMatchException bindPatTy genInnerTy tclauses 


let elimFastIntegerForLoop (spBind,id,start,dir,finish,innerExpr,m) = 
    let pseudoEnumExpr = 
        if dir then mkSynInfix m start ".." finish
        else  mkSynTrifix m ".. .." start (SynExpr.Const(SynConst.Int32 -1, start.Range)) finish
    SynExpr.ForEach (spBind,SeqExprOnly false,true,mkSynPatVar None id,pseudoEnumExpr,innerExpr,m)

let (|ExprAsPat|_|) (f:SynExpr) =    
    match f with 
    | SingleIdent v1 | SynExprParen(SingleIdent v1, _, _, _) -> Some (mkSynPatVar None v1)
    | SynExprParen(SynExpr.Tuple (elems, _, _), _, _, _) -> 
        let elems = elems |> List.map (|SingleIdent|_|) 
        if elems |> List.forall (fun x -> x.IsSome) then 
            Some (SynPat.Tuple((elems |> List.map (fun x -> mkSynPatVar None x.Value)), f.Range))
        else
            None
    | _ -> None

/// Determine if a syntactic expression inside 'seq { ... }' or '[...]' counts as a "simple sequence
/// of semicolon separated values". For example [1;2;3].
/// 'acceptDeprecated' is true for the '[ ... ]' case, where we allow the syntax '[ if g then t else e ]' but ask it to be parenthesized
///
let (|SimpleSemicolonSequence|_|) acceptDeprecated c = 

    let rec YieldFree expr = 
        match expr with 
        | SynExpr.Sequential (_,_,e1,e2,_) -> YieldFree e1 && YieldFree e2
        | SynExpr.IfThenElse (_,e2,e3opt,_,_,_,_) -> YieldFree e2 && Option.forall YieldFree e3opt
        | SynExpr.TryWith (e1,_,clauses,_,_,_,_) -> YieldFree e1 && clauses |> List.forall (fun (Clause(_,_,e,_,_)) -> YieldFree e)
        | SynExpr.Match (_,_,clauses,_,_) -> clauses |> List.forall (fun (Clause(_,_,e,_,_)) -> YieldFree e)
        | SynExpr.For (_,_,_,_,_,body,_) 
        | SynExpr.TryFinally (body,_,_,_,_)
        | SynExpr.LetOrUse (_,_,_,body,_) 
        | SynExpr.While (_,_,body,_) 
        | SynExpr.ForEach (_,_,_,_,_,body,_) -> YieldFree body
        | SynExpr.YieldOrReturnFrom _ 
        | SynExpr.YieldOrReturn _ 
        | SynExpr.LetOrUseBang _ 
        | SynExpr.ImplicitZero _ 
        | SynExpr.Do _ -> false
        | _ -> true

    let rec IsSimpleSemicolonSequenceElement expr = 
        match expr with 
        | SynExpr.IfThenElse _ when acceptDeprecated && YieldFree expr -> true
        | SynExpr.IfThenElse _ 
        | SynExpr.TryWith _ 
        | SynExpr.Match _ 
        | SynExpr.For _ 
        | SynExpr.ForEach _ 
        | SynExpr.TryFinally _ 
        | SynExpr.YieldOrReturnFrom _ 
        | SynExpr.YieldOrReturn _ 
        | SynExpr.LetOrUse _ 
        | SynExpr.Do _ 
        | SynExpr.LetOrUseBang _ 
        | SynExpr.ImplicitZero _ 
        | SynExpr.While _ -> false
        | _ -> true

    let rec GetSimpleSemicolonSequenceOfComprehension expr acc = 
        match expr with 
        | SynExpr.Sequential(_,true,e1,e2,_) -> 
            if IsSimpleSemicolonSequenceElement e1 then 
                GetSimpleSemicolonSequenceOfComprehension e2 (e1::acc)
            else
                None 
        | e -> 
            if IsSimpleSemicolonSequenceElement e then 
                Some(List.rev (e::acc))
            else 
                None 

    if YieldFree c then 
        GetSimpleSemicolonSequenceOfComprehension c []
    else
        None


//-------------------------------------------------------------------------
// Post-transform initialization graphs using the 'lazy' interpretation.
// See ML workshop paper.
//------------------------------------------------------------------------- 

type InitializationGraphAnalysisState = 
    | Top
    | InnerTop
    | DefinitelyStrict
    | MaybeLazy
    | DefinitelyLazy

type PreInitializationGraphEliminationBinding = 
    { FixupPoints : RecursiveUseFixupPoints
      Binding: Tast.Binding }


let EliminateInitializationGraphs g mustHaveArity denv (fixupsAndBindingsWithoutLaziness : PreInitializationGraphEliminationBinding list) bindsm =
    // BEGIN INITIALIZATION GRAPHS 
    // Check for safety and determine if we need to insert lazy thunks 
    let fixupsl =  fixupsAndBindingsWithoutLaziness |> List.map (fun b -> b.FixupPoints)
    let bindsWithoutLaziness =  fixupsAndBindingsWithoutLaziness |> List.map (fun b -> b.Binding)
    let rvs = bindsWithoutLaziness |> List.map (fun (TBind(v,_,_)) -> mkLocalValRef v) 

    // The output of the analysis
    let outOfOrder = ref false
    let runtimeChecks = ref false
    let directRecursiveData = ref false
    let reportedEager = ref false
    let definiteDependencies = ref []

    let rec stripChooseAndExpr e = 
        match stripExpr e with 
        | Expr.TyChoose(_,b,_) -> stripChooseAndExpr b
        | e -> e

    let check availIfInOrder boundv expr = 
        let strict = function
            | MaybeLazy -> MaybeLazy
            | DefinitelyLazy -> DefinitelyLazy
            | Top | DefinitelyStrict | InnerTop -> DefinitelyStrict
        let lzy = function 
            | Top | InnerTop | DefinitelyLazy -> DefinitelyLazy 
            | MaybeLazy | DefinitelyStrict -> MaybeLazy
        let fixable = function 
            | Top | InnerTop -> InnerTop
            | DefinitelyStrict -> DefinitelyStrict
            | MaybeLazy -> MaybeLazy
            | DefinitelyLazy -> DefinitelyLazy

        let rec CheckExpr st e = 
            match stripChooseAndExpr e with 
              // Expressions with some lazy parts 
            | Expr.Lambda (_,_,_,_,b,_,_) -> checkDelayed st b

            // Type-lambdas are analyzed as if they are strict.
            //
            // This is a design decision (See bug 6496), so that generalized recursive bindings such as
            //   let rec x = x
            // are analyzed. Although we give type "x : 'T" to these, from the users point of view
            // any use of "x" will result in an infinite recursion. Type instantiation is implicit in F#
            // because of type inference, which makes it reasonable to check generic bindings strictly.
            | Expr.TyLambda (_,_,b,_,_) -> CheckExpr st b

            | Expr.Obj (_,ty,_,e,overrides,extraImpls,_) ->
                // NOTE: we can't fixup recursive references inside delegates since the closure delegee of a delegate is not accessible 
                // from outside. Object expressions implementing interfaces can, on the other hand, be fixed up. See FSharp 1.0 bug 1469 
                if isInterfaceTy g ty then 
                    List.iter (fun (TObjExprMethod(_,_,_,_,e,_)) ->  checkDelayed st e) overrides;
                    List.iter (snd >> List.iter (fun (TObjExprMethod(_,_,_,_,e,_)) ->  checkDelayed st e)) extraImpls;
                else 
                    CheckExpr (strict st) e;
                    List.iter (fun (TObjExprMethod(_,_,_,_,e,_)) ->  CheckExpr (lzy (strict st)) e) overrides;
                    List.iter (snd >> List.iter (fun (TObjExprMethod(_,_,_,_,e,_)) ->  CheckExpr (lzy (strict st)) e)) extraImpls;
                
              // Expressions where fixups may be needed 
            | Expr.Val (v,_,m) -> CheckValSpec st v m

             // Expressions where subparts may be fixable 
            | Expr.Op((TOp.Tuple | TOp.UnionCase _ | TOp.Recd _),_,args,_) -> 
                List.iter (CheckExpr (fixable st)) args

              // Composite expressions 
            | Expr.Const _ -> ()
            | Expr.LetRec (binds,e,_,_)  ->
                binds |> FlatList.iter (CheckBinding (strict st)) ; 
                CheckExpr (strict st) e
            | Expr.Let (bind,e,_,_) ->  
                CheckBinding (strict st) bind; 
                CheckExpr (strict st) e
            | Expr.Match (_,_,pt,targets,_,_) -> 
                CheckDecisionTree (strict st) pt; 
                Array.iter (CheckDecisionTreeTarget (strict st)) targets 
            | Expr.App(e1,_,_,args,_) -> 
                CheckExpr (strict st) e1;  
                List.iter (CheckExpr (strict st)) args 
          // Binary expressions 
            | Expr.Sequential (e1,e2,_,_,_)
            | Expr.StaticOptimization (_,e1,e2,_) ->
                 CheckExpr (strict st) e1;  CheckExpr (strict st) e2
          // n-ary expressions 
            | Expr.Op(op,_,args,m)  -> CheckExprOp st op m;  List.iter (CheckExpr (strict st)) args
          // misc 
            | Expr.Link(eref) -> CheckExpr st !eref
            | Expr.TyChoose (_,b,_)  -> CheckExpr st b
            | Expr.Quote _  -> ()

        and CheckBinding st (TBind(_,e,_)) = CheckExpr st e 
        and CheckDecisionTree st = function
            | TDSwitch(e1,csl,dflt,_) -> CheckExpr st e1; List.iter (fun (TCase(_,d)) -> CheckDecisionTree st d) csl; Option.iter (CheckDecisionTree st) dflt
            | TDSuccess (es,_) -> es |> FlatList.iter (CheckExpr st) 
            | TDBind(bind,e) -> CheckBinding st bind; CheckDecisionTree st e
        and CheckDecisionTreeTarget st (TTarget(_,e,_)) = CheckExpr st e

        and CheckExprOp st op m = 
            match op with 
            | TOp.LValueOp (_,lvr) -> CheckValSpec (strict st) lvr m
            | _ -> ()
          
        and CheckValSpec st v m = 
            match st with 
            | MaybeLazy -> 
                if ListSet.contains g.valRefEq v rvs then 
                    warning (RecursiveUseCheckedAtRuntime (denv,v,m)); 
                    if not !reportedEager then 
                      (warning (LetRecCheckedAtRuntime m); reportedEager := true);
                    runtimeChecks := true;

            | Top | DefinitelyStrict ->
                if ListSet.contains g.valRefEq v rvs then 
                    if not (ListSet.contains g.valRefEq v availIfInOrder) then 
                        warning (LetRecEvaluatedOutOfOrder (denv,boundv,v,m)); 
                        outOfOrder := true;
                        if not !reportedEager then 
                          (warning (LetRecCheckedAtRuntime m); reportedEager := true);
                    definiteDependencies := (boundv,v) :: !definiteDependencies
            | InnerTop -> 
                if ListSet.contains g.valRefEq v rvs then 
                    directRecursiveData := true
            | DefinitelyLazy -> () 
        and checkDelayed st b = 
            match st with 
            | MaybeLazy | DefinitelyStrict -> CheckExpr MaybeLazy b
            | DefinitelyLazy | Top | InnerTop -> () 
          
       
        CheckExpr Top expr
   

    List.fold 
         (fun availIfInOrder (TBind(v,e,_)) -> 
           check availIfInOrder (mkLocalValRef v) e; 
           (mkLocalValRef v::availIfInOrder))
         [] bindsWithoutLaziness |> ignore;
    
     // ddg = definiteDependencyGraph 
    let ddgNodes = bindsWithoutLaziness |> List.map (fun (TBind(v,_,_)) -> mkLocalValRef v) 
    let ddg = Graph((fun v -> v.Stamp), ddgNodes, !definiteDependencies )
    ddg.IterateCycles (fun path -> error (LetRecUnsound (denv,path,path.Head.Range))) ;

    let requiresLazyBindings = !runtimeChecks || !outOfOrder
    if !directRecursiveData && requiresLazyBindings then 
        error(Error(FSComp.SR.tcInvalidMixtureOfRecursiveForms(),bindsm));

    let bindsBefore, bindsAfter = 
      if requiresLazyBindings then 
          let bindsBeforeL, bindsAfterL = 
            
              (fixupsl, bindsWithoutLaziness) 
              ||> List.map2 (fun (RecursiveUseFixupPoints(fixupPoints)) (TBind(v,e,seqPtOpt)) -> 
                   match stripChooseAndExpr e with
                   | Expr.Lambda _ | Expr.TyLambda _ -> 
                       [mkInvisibleBind v e],[] 
                   | _ -> 
                       let ty = v.Type
                       let m = v.Range
                       let vty = (mkLazyTy g ty)

                       let fty = (g.unit_ty --> ty)
                       let flazy,felazy = Tastops.mkCompGenLocal m  v.LogicalName fty 
                       let frhs = mkUnitDelayLambda g m e
                       if mustHaveArity then flazy.SetValReprInfo (Some(InferArityOfExpr g fty [] [] frhs))

                       let vlazy,velazy = Tastops.mkCompGenLocal m  v.LogicalName vty 
                       let vrhs = (mkLazyDelayed g m ty felazy)
                       
                       if mustHaveArity then vlazy.SetValReprInfo (Some(InferArityOfExpr g vty [] [] vrhs));
                       fixupPoints |> List.iter (fun (fp,_) -> fp := mkLazyForce g (!fp).Range ty velazy);

                       [mkInvisibleBind flazy frhs; mkInvisibleBind vlazy vrhs],
                       [mkBind seqPtOpt v (mkLazyForce g m ty velazy)])
               |> List.unzip
          List.concat bindsBeforeL, List.concat bindsAfterL
      else
          bindsWithoutLaziness,[]
    bindsBefore @ bindsAfter

//-------------------------------------------------------------------------
// Check the shape of an object constructor and rewrite calls 
//------------------------------------------------------------------------- 

let CheckAndRewriteObjectCtor g env (ctorLambaExpr:Expr) =

    let m = ctorLambaExpr.Range
    let tps,vsl,body,returnTy = stripTopLambda (ctorLambaExpr,tyOfExpr g ctorLambaExpr)

    // Rewrite legitimate self-construction calls to CtorValUsedAsSelfInit 
    let error (expr:Expr) = 
        errorR(Error(FSComp.SR.tcInvalidObjectConstructionExpression(),expr.Range));
        expr

    // Build an assignment into the safeThisValOpt mutable reference cell that holds recursive references to 'this' 
    // Build an assignment into the safeInitInfo mutable field that indicates that partial initialization is successful
    let rewriteContruction recdExpr = 
       match env.eCtorInfo with 
       | None -> recdExpr
       | Some ctorInfo -> 
           let recdExpr = 
               match ctorInfo.safeThisValOpt with 
               | None -> recdExpr
               | Some safeInitVal -> 
                   let ty = tyOfExpr g recdExpr
                   let thisExpr = mkGetArg0 m ty
                   let setExpr = mkRefCellSet g  m ty (exprForValRef m (mkLocalValRef safeInitVal)) thisExpr
                   Expr.Sequential(recdExpr,setExpr,ThenDoSeq,SuppressSequencePointOnExprOfSequential,m)
           let recdExpr =                        
               match ctorInfo.safeInitInfo with 
               | NoSafeInitInfo ->  recdExpr
               | SafeInitField (rfref, _) -> 
                   let thisTy = tyOfExpr g recdExpr
                   let thisExpr = mkGetArg0 m thisTy
                   let thisTyInst = argsOfAppTy g thisTy
                   let setExpr = mkRecdFieldSet g (thisExpr, rfref, thisTyInst, mkOne g m, m)
                   Expr.Sequential(recdExpr,setExpr,ThenDoSeq,SuppressSequencePointOnExprOfSequential,m)
           recdExpr
       

    let rec checkAndRewrite (expr:Expr) = 
        match expr with 
        //  = { fields } 
        // The constructor ends in an object initialization expression - good 
        | Expr.Op(TOp.Recd(RecdExprIsObjInit,_),_,_,_) -> rewriteContruction expr

        //  = "a; " 
        | Expr.Sequential(a,body,NormalSeq,spSeq,b)  -> Expr.Sequential(a,checkAndRewrite body,NormalSeq,spSeq,b) 

        //  = " then " 
        | Expr.Sequential(body,a,ThenDoSeq,spSeq,b) -> Expr.Sequential(checkAndRewrite body,a,ThenDoSeq,spSeq,b)

        //  = "let pat = expr in " 
        | Expr.Let(bind,body,m,_)  -> mkLetBind m bind (checkAndRewrite body)

        // The constructor is a sequence "let pat = expr in " 
        | Expr.Match(spBind,a,b,targets,c,d)  -> Expr.Match(spBind,a,b, (targets |> Array.map (fun (TTarget(vs,body,spTarget)) -> TTarget(vs, checkAndRewrite body,spTarget))),c,d)

        //  = "let rec binds in " 
        | Expr.LetRec(a,body,_,_) -> Expr.LetRec (a,checkAndRewrite body ,m,NewFreeVarsCache())

        //  = "new C(...)" 
        | Expr.App(f,b,c,d,m) -> 
            // The application had better be an application of a ctor 
            let f = checkAndRewriteCtorUsage f
            let expr = Expr.App(f,b,c,d,m)
            rewriteContruction expr 

        | _ -> 
            error(expr)

    and checkAndRewriteCtorUsage expr = 
         match expr with 
         | Expr.Link eref -> 
               let e = checkAndRewriteCtorUsage !eref
               eref := e;
               expr
               
         // Type applications are ok, e.g. 
         //     type C<'a>(x:int) = 
         //         new() = C<'a>(3) 
         | Expr.App(f,fty,tyargs,[],m) -> 
             let f = checkAndRewriteCtorUsage f
             Expr.App(f,fty,tyargs,[],m)

         // Self-calls are OK and get rewritten. 
         | Expr.Val(vref,NormalValUse,a) ->
           let isCtor = 
               match vref.MemberInfo with 
               | None -> false
               | Some(memberInfo) -> (memberInfo.MemberFlags.MemberKind = MemberKind.Constructor)

           if not isCtor then 
               error expr 
           else
               Expr.Val(vref,CtorValUsedAsSelfInit,a)
         | _ -> 
            error(expr)
    
    let body = checkAndRewrite body
    mkMultiLambdas m tps vsl (body, returnTy) 
    


/// Post-typechecking normalizations to enforce semantic constraints
/// lazy and, lazy or, rethrow, address-of
let buildApp cenv expr exprty arg m = 
    match expr,arg with        
    | ApplicableExpr(_, Expr.App(Expr.Val(vf,_,_),_,_,[x0],_),_) , _ 
         when valRefEq cenv.g vf cenv.g.and_vref 
           || valRefEq cenv.g vf cenv.g.and2_vref  -> 
        MakeApplicableExprNoFlex cenv (mkLazyAnd cenv.g m x0 arg)
    | ApplicableExpr(_, Expr.App(Expr.Val(vf,_,_),_,_,[x0],_),_), _ 
         when valRefEq cenv.g vf cenv.g.or_vref
           || valRefEq cenv.g vf cenv.g.or2_vref -> 
        MakeApplicableExprNoFlex cenv (mkLazyOr cenv.g m x0 arg )
    | ApplicableExpr(_, Expr.App(Expr.Val(vf,_,_),_,_,[],_),_), _ 
         when valRefEq cenv.g vf cenv.g.reraise_vref -> 
        // exprty is of type: "unit -> 'a". Break it and store the 'a type here, used later as return type. 
        let _unit_ty,rtn_ty = destFunTy cenv.g exprty 
        MakeApplicableExprNoFlex cenv (mkCompGenSequential m arg (mkReraise m rtn_ty))
    | ApplicableExpr(_, Expr.App(Expr.Val(vf,_,_),_,_,[],_),_), _ 
         when (valRefEq cenv.g vf cenv.g.addrof_vref || 
               valRefEq cenv.g vf cenv.g.addrof2_vref) -> 
        if valRefEq cenv.g vf cenv.g.addrof2_vref then warning(UseOfAddressOfOperator(m));
        let wrap,e1a' = mkExprAddrOfExpr cenv.g true false DefinitelyMutates arg (Some(vf)) m
        MakeApplicableExprNoFlex cenv (wrap(e1a'))
    | _ -> 
        expr.SupplyArgument(arg,m)             

//-------------------------------------------------------------------------
// Additional data structures used by type checking
//------------------------------------------------------------------------- 

type DelayedItem = 
  /// DelayedTypeApp (typeArgs, mTypeArgs, mExprAndTypeArgs)
  ///
  /// Represents the  in "item"
  | DelayedTypeApp of Ast.SynType list * range * range

  /// DelayedApp (isAtomic, argExpr, mFuncAndArg) 
  ///
  /// Represents the args in "item args", or "item.[args]". 
  | DelayedApp of ExprAtomicFlag * Ast.SynExpr * range

  /// Represents the long identifiers in "item.Ident1", or "item.Ident1.Ident2" etc.
  | DelayedDotLookup of Ast.Ident list * range

  /// Represents the valueExpr in "item <- valueExpr", also "item.[indexerArgs] <- valueExpr" etc.
  | DelayedSet of Ast.SynExpr * range

let MakeDelayedSet(e: SynExpr, m) = 
    // We have longId <- e. Wrap 'e' in another pair of parentheses to ensure it's never interpreted as 
    // a named argument, e.g. for "el.Checked <- (el = el2)" 
    DelayedSet (SynExpr.Paren(e, range0, None, e.Range), m)

type NewSlotsOK = 
    | NewSlotsOK 
    | NoNewSlots


type ImplictlyBoundTyparsAllowed = 
    | NewTyparsOKButWarnIfNotRigid 
    | NewTyparsOK 
    | NoNewTypars

type CheckConstraints = 
    | CheckCxs 
    | NoCheckCxs

type TypeRealizationPass = 
    | FirstPass 
    | SecondPass 

type MemberOrValContainerInfo = 
    | MemberOrValContainerInfo of
          TyconRef *                        // tcref: The logical apparent parent of a value/member, either a module, type or exception 
          (TType * SlotImplSet) option * // optIntfSlotTy
          Val option *                      // baseValOpt
          SafeInitData *                      // safeInitInfo
          Typars                            // declaredTyconTypars

/// Provides information about the context for a value or member definition 
type ContainerInfo = 
    | ContainerInfo of 
          // The nearest containing module. Used as the 'actual' parent for extension members and values 
          ParentRef *  
          // For members:
          MemberOrValContainerInfo option
    member x.ParentRef = (let (ContainerInfo(v,_)) = x in v)
    
/// Indicates a declaration is contained in an expression 
let ExprContainerInfo = ContainerInfo(ParentNone,None)
/// Indicates a declaration is contained in the given module 
let ModuleOrNamespaceContainerInfo modref = ContainerInfo(Parent(modref),Some(MemberOrValContainerInfo(modref,None,None,NoSafeInitInfo,[])))
/// Indicates a declaration is contained in the given type definition in the given module 
let TyconContainerInfo (parent, tcref, declaredTyconTypars, safeInitInfo) = ContainerInfo(parent,Some(MemberOrValContainerInfo(tcref,None,None,safeInitInfo,declaredTyconTypars)))

type NormalizedRecBindingDefn = NormalizedRecBindingDefn of ContainerInfo * NewSlotsOK * DeclKind * NormalizedBinding

type TyconBindingDefn = TyconBindingDefn of ContainerInfo * NewSlotsOK * DeclKind * SynMemberDefn * range

type TyconBindingDefns = TyconBindingDefns of TyconRef * Typars * DeclKind * TyconBindingDefn list

type TyconMemberData = TyconMemberData of DeclKind * TyconRef * Val option * SafeInitData * Typars * SynMemberDefn list * range * NewSlotsOK

type ValSpecResult = ValSpecResult of ParentRef * ValMemberInfoTransient option * Ident * Typars * Typars * TType * PartialValReprInfo * DeclKind 

//-------------------------------------------------------------------------
// Additional data structures used by checking recursive bindings
//------------------------------------------------------------------------- 

type RecursiveBindingDefnInfo = RecBindingDefn of ContainerInfo * NewSlotsOK * DeclKind * SynBinding

/// RecursiveBindingInfo - flows through initial steps of TcLetrec 
type RecursiveBindingInfo =
    | RBInfo of
          int * // index of the binding in the recursive group
          ContainerInfo * 
          Typars * 
          ValInline * 
          Val * 
          ExplicitTyparInfo * 
          PartialValReprInfo * 
          ValMemberInfoTransient option  * 
          Val option * 
          Val option * 
          SafeInitData * 
          SynAccess option * 
          TType * 
          DeclKind

    member x.EnclosingDeclaredTypars = let (RBInfo(_,_,enclosingDeclaredTypars,_,_,_,_,_,_,_,_,_,_,_)) = x in enclosingDeclaredTypars
    member x.Val                     = let (RBInfo(_,_,_,_,vspec,_,_,_,_,_,_,_,_,_)) = x in vspec
    member x.ExplicitTyparInfo       = let (RBInfo(_,_,_,_,_,flex,_,_,_,_,_,_,_,_)) = x in flex
    member x.DeclaredTypars          = let (ExplicitTyparInfo(_,declaredTypars,_)) = x.ExplicitTyparInfo in declaredTypars
    member x.Index                   = let (RBInfo(i,_,_,_,_,_,_,_,_,_,_,_,_,_)) = x in i
    member x.ContainerInfo           = let (RBInfo(_,c,_,_,_,_,_,_,_,_,_,_,_,_)) = x in c
    member x.DeclKind                = let (RBInfo(_,_,_,_,_,_,_,_,_,_,_,_,_,declKind)) = x in declKind

type PreCheckingRecursiveBinding = 
    { SyntacticBinding : NormalizedBinding 
      RecBindingInfo : RecursiveBindingInfo }


type PreGeneralizationRecursiveBinding = 
    { ExtraGeneralizableTypars : Typars
      CheckedBinding: CheckedBindingInfo;
      RecBindingInfo : RecursiveBindingInfo }

type PostGeneralizationRecursiveBinding = 
    { ValScheme : ValScheme
      CheckedBinding: CheckedBindingInfo
      RecBindingInfo : RecursiveBindingInfo }
    member x.GeneralizedTypars = x.ValScheme.GeneralizedTypars

type PostBindCtorThisVarRefCellRecursiveBinding = 
    { ValScheme: ValScheme;
      Binding: Tast.Binding }


let CanInferExtraGeneralizedTyparsForRecBinding (pgrbind: PreGeneralizationRecursiveBinding) = 
    let flex = pgrbind.RecBindingInfo.ExplicitTyparInfo
    let (ExplicitTyparInfo(_,_,canInferTypars)) = flex
    let memFlagsOpt = pgrbind.RecBindingInfo.Val.MemberInfo |> Option.map (fun memInfo -> memInfo.MemberFlags)
    let canInferTypars = GeneralizationHelpers.ComputeCanInferExtraGeneralizableTypars (pgrbind.RecBindingInfo.ContainerInfo.ParentRef, canInferTypars, memFlagsOpt)
    canInferTypars 
    

/// Get the "this" variable from an instance member binding
let GetInstanceMemberThisVariable (v:Val,x) =
    // Skip over LAM tps. Choose 'a. 
    if v.IsInstanceMember then
        let rec firstArg e =
          match e with
            | Expr.TyLambda (_,_,b,_,_) -> firstArg b
            | Expr.TyChoose (_,b,_) -> firstArg b
            | Expr.Lambda  (_,_,_,[v],_,_,_) -> Some v
            | _ -> failwith "GetInstanceMemberThisVariable: instance member did not have expected internal form"
       
        firstArg x
    else
        None

//-------------------------------------------------------------------------
// Checking types and type constraints
//------------------------------------------------------------------------- 
/// Check specifications of contraints on type parameters 
let rec TcTyparConstraint ridx cenv newOk checkCxs occ (env: TcEnv) tpenv c = 
    let checkSimpleConstraint tp m constraintAdder =
        let tp',tpenv = TcTypar cenv env newOk tpenv tp
        constraintAdder env.DisplayEnv cenv.css m NoTrace (mkTyparTy tp') ;
        tpenv 

    match c with 
    | WhereTyparDefaultsToType(tp,ty,m) ->
        let ty',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv ty
        let tp',tpenv = TcTypar cenv env newOk tpenv tp
        let csenv = (MakeConstraintSolverEnv cenv.css m env.DisplayEnv)
        AddConstraint csenv 0 m NoTrace tp' (TyparConstraint.DefaultsTo(ridx,ty',m)) |> CommitOperationResult;
        tpenv

    | WhereTyparSubtypeOfType(tp,ty,m) ->
        let ty',tpenv = TcTypeAndRecover cenv newOk checkCxs ItemOccurence.UseInType env tpenv ty
        let tp',tpenv = TcTypar cenv env newOk tpenv tp
        if (newOk = NoNewTypars) && isSealedTy cenv.g ty' then 
            errorR(Error(FSComp.SR.tcInvalidConstraintTypeSealed(),m));
        AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace  ty' (mkTyparTy tp') ;
        tpenv

    | WhereTyparSupportsNull(tp,m) -> checkSimpleConstraint tp m AddCxTypeMustSupportNull

    | WhereTyparIsComparable(tp,m) -> checkSimpleConstraint tp m AddCxTypeMustSupportComparison

    | WhereTyparIsEquatable(tp,m) -> checkSimpleConstraint tp m AddCxTypeMustSupportEquality 

    | WhereTyparIsReferenceType(tp,m) ->checkSimpleConstraint tp m AddCxTypeIsReferenceType

    | WhereTyparIsValueType(tp,m) -> checkSimpleConstraint tp m AddCxTypeIsValueType
       
    | WhereTyparIsUnmanaged(tp,m) -> checkSimpleConstraint tp m AddCxTypeIsUnmanaged

    | WhereTyparIsEnum(tp,tyargs,m) ->
        let tp',tpenv = TcTypar cenv env newOk tpenv tp
        let tpenv = 
            match tyargs with 
            | [underlying] -> 
                let underlying',tpenv = TcTypeAndRecover cenv newOk checkCxs ItemOccurence.UseInType env tpenv underlying
                AddCxTypeIsEnum env.DisplayEnv cenv.css m NoTrace (mkTyparTy tp') underlying';
                tpenv
            | _ -> 
                errorR(Error(FSComp.SR.tcInvalidEnumConstraint(),m));
                tpenv
        tpenv

    | WhereTyparIsDelegate(tp,tyargs,m) ->
        let tp',tpenv = TcTypar cenv env newOk tpenv tp
        match tyargs with 
        | [a;b] -> 
            let a',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv a
            let b',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv b
            AddCxTypeIsDelegate env.DisplayEnv cenv.css m NoTrace (mkTyparTy tp') a' b';
            tpenv
        | _ -> 
            errorR(Error(FSComp.SR.tcInvalidEnumConstraint(),m));
            tpenv

    | WhereTyparSupportsMember(tps,memSpfn,m) ->
        let traitInfo,tpenv = TcPseudoMemberSpec cenv newOk env tps tpenv memSpfn m
        match traitInfo with 
        | TTrait(objtys,".ctor",memberFlags,argtys,returnTy,_) when (memberFlags.MemberKind=MemberKind.Constructor) ->
            match objtys,argtys with 
            | [ty],[] when typeEquiv cenv.g ty (GetFSharpViewOfReturnType cenv.g returnTy) ->
                AddCxTypeMustSupportDefaultCtor env.DisplayEnv cenv.css m NoTrace ty ;
                tpenv
            | _ ->            
                errorR(Error(FSComp.SR.tcInvalidNewConstraint(),m));
                tpenv
        | _ ->  
            AddCxMethodConstraint env.DisplayEnv cenv.css m NoTrace traitInfo;
            tpenv
      
and TcPseudoMemberSpec cenv newOk env synTypars tpenv memSpfn m = 
#if ALLOW_MEMBER_CONSTRAINTS_ON_MEASURES
    let tps,tpenv = List.mapFold (TcTyparOrMeasurePar None cenv env newOk) tpenv synTypars
#else
    let tps,tpenv = List.mapFold (TcTypar cenv env newOk) tpenv synTypars
#endif
    let tys = List.map mkTyparTy tps
    match memSpfn with 
    | SynMemberSig.Member (valSpfn,memberFlags,m) ->
        // REVIEW: Test pseudo constraints cannot refer to polymorphic methods.
        // REVIEW: Test pseudo constraints cannot be curried. 
        let members,tpenv = TcValSpec cenv env ModuleOrMemberBinding newOk (ExprContainerInfo) (Some memberFlags) (Some (List.head tys)) tpenv valSpfn []
        match members with 
        | [ValSpecResult(_,_,id,_,_,memberConstraintTy,partialValReprInfo,_)] -> 
            let memberConstraintTypars,_ = tryDestForallTy cenv.g memberConstraintTy
            let topValInfo = TranslatePartialArity memberConstraintTypars partialValReprInfo
            let _,curriedArgInfos,returnTy,_ = GetTopValTypeInCompiledForm cenv.g topValInfo memberConstraintTy m
            //if curriedArgInfos.Length > 1 then  error(Error(FSComp.SR.tcInvalidConstraint(),m))
            let argtys = List.concat curriedArgInfos
            let argtys = List.map fst argtys
            let logicalCompiledName = ComputeLogicalName id memberFlags
            TTrait(tys,logicalCompiledName,memberFlags,argtys,returnTy, ref None),tpenv
        | _ -> error(Error(FSComp.SR.tcInvalidConstraint(),m))
    | _ -> error(Error(FSComp.SR.tcInvalidConstraint(),m))


/// Check a value specification, e.g. in a signature, interface declaration or a constraint
and TcValSpec cenv env declKind newOk containerInfo memFlagsOpt thisTyOpt tpenv valSpfn attrs =
    let (ValSpfn(_, id, SynValTyparDecls(synTypars, _, synTyparConstraints), ty, valSynInfo, _, _, _, _, _, m)) = valSpfn 
    let declaredTypars = TcTyparDecls cenv env synTypars
    let (ContainerInfo(altActualParent,tcrefContainerInfo)) = containerInfo
    let enclosingDeclaredTypars,memberContainerInfo,thisTyOpt,declKind = 
        match tcrefContainerInfo with 
        | Some(MemberOrValContainerInfo(tcref,_,_,_,declaredTyconTypars)) -> 
            let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
            let _,enclosingDeclaredTypars,_,_,thisTy = FreshenObjectArgType cenv m TyparRigidity.Rigid tcref isExtrinsic declaredTyconTypars
            // An implemented interface type is in terms of the type's type parameters. 
            // We need a signature in terms of the values' type parameters. 
            // let optIntfSlotTy = Option.map (instType renaming) optIntfSlotTy in  
            enclosingDeclaredTypars,Some(tcref),Some thisTy,declKind
        | None -> 
            [],None,thisTyOpt, ModuleOrMemberBinding
    let allDeclaredTypars = (enclosingDeclaredTypars@declaredTypars)
    let envinner = AddDeclaredTypars NoCheckForDuplicateTypars allDeclaredTypars env
    let checkCxs = CheckCxs
    let tpenv = TcTyparConstraints cenv newOk checkCxs ItemOccurence.UseInType envinner tpenv synTyparConstraints
    
    // Treat constraints at the "end" of the type as if they are declared.
    // This is by far the most convenient place to locate the constraints.
    // e.g. 
    //    val FastGenericComparer<'T>  : IComparer<'T> when 'T : comparison 
    let tpenv = 
        match ty with 
        | SynType.WithGlobalConstraints(_,wcs,_) ->
            TcTyparConstraints cenv newOk checkCxs ItemOccurence.UseInType envinner tpenv wcs
        | _ -> 
            tpenv

    // Enforce "no undeclared constraints allowed on declared typars"
    allDeclaredTypars |> List.iter (SetTyparRigid cenv.g env.DisplayEnv m);
    // Process the type, including any constraints 
    let declaredTy,tpenv = TcTypeAndRecover cenv newOk checkCxs ItemOccurence.UseInType envinner tpenv ty  

    match memFlagsOpt,thisTyOpt with 
    | Some memberFlags, Some thisTy -> 
        let generateOneMember(memberFlags) = 
        
            // Decode members in the signature
            let ty',valSynInfo = 
                match memberFlags.MemberKind with 
                | MemberKind.ClassConstructor
                | MemberKind.Constructor
                | MemberKind.Member -> 
                    declaredTy,valSynInfo
                | MemberKind.PropertyGet 
                | MemberKind.PropertySet ->  
                    let fakeArgReprInfos = [ for n in SynInfo.AritiesOfArgs valSynInfo do yield [ for _ in 1 .. n do yield ValReprInfo.unnamedTopArg1 ] ]
                    let arginfos,returnTy = GetTopTauTypeInFSharpForm cenv.g fakeArgReprInfos declaredTy m
                    if arginfos.Length > 1 then error(Error(FSComp.SR.tcInvalidPropertyType(),m))
                    match memberFlags.MemberKind with 
                    | MemberKind.PropertyGet ->
                        if SynInfo.HasNoArgs valSynInfo then 
                          (cenv.g.unit_ty --> declaredTy), (SynInfo.IncorporateEmptyTupledArgForPropertyGetter valSynInfo)
                        else
                          declaredTy,valSynInfo
                    | _ -> 
                        let setterTy = (mkTupledTy cenv.g (List.map fst (List.concat arginfos) @ [returnTy]) --> cenv.g.unit_ty)
                        let synInfo = SynInfo.IncorporateSetterArg valSynInfo
                        setterTy, synInfo
                | MemberKind.PropertyGetSet -> 
                    error(InternalError("Unexpected MemberKind.PropertyGetSet from signature parsing",m))

            // Take "unit" into account in the signature
            let valSynInfo = AdjustValSynInfoInSignature cenv.g ty' valSynInfo

            let ty',valSynInfo = 
                if memberFlags.IsInstance then 
                  (thisTy --> ty'), (SynInfo.IncorporateSelfArg valSynInfo)
                else
                  ty',valSynInfo

            let reallyGenerateOneMember(id:Ident,valSynInfo,ty',memberFlags) = 
                let (PartialValReprInfo(argsData,_)) as partialValReprInfo = 
                    TranslateTopValSynInfo id.idRange (TcAttributes cenv env) valSynInfo


                // Fold in the optional arugment information 
                // Resort to using the syntactic arugment information since that is what tells us 
                // what is optional and what is not. 
                let ty' = 

                    if SynInfo.HasOptionalArgs valSynInfo then 
                        let argtysl,returnTy = GetTopTauTypeInFSharpForm cenv.g argsData ty' m
                        let argtysl = 
                            (List.zip (List.mapSquared fst argtysl) valSynInfo.ArgInfos) 
                            |> List.map (fun (argtys,argInfos) ->
                                 (List.zip argtys argInfos)
                                 |> List.map (fun (argty,argInfo) ->
                                     if SynInfo.IsOptionalArg argInfo then mkOptionTy cenv.g argty
                                     else argty))
                        mkIteratedFunTy (List.map (mkTupledTy cenv.g) argtysl) returnTy
                    else ty' 
                        
                let memberInfoOpt = 
                    match memberContainerInfo with 
                    | Some tcref -> 
                        let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
                        let memberInfoTransient = MakeMemberDataAndMangledNameForMemberVal(cenv.g,tcref,isExtrinsic,attrs,[],memberFlags,valSynInfo,id,false)
                        Some(memberInfoTransient)
                    | None -> 
                        None
            
                ValSpecResult(altActualParent,memberInfoOpt,id,enclosingDeclaredTypars,declaredTypars,ty',partialValReprInfo,declKind)

            [ yield reallyGenerateOneMember(id,valSynInfo,ty',memberFlags)
              if CompileAsEvent cenv.g attrs then 
                    let valSynInfo = EventDeclarationNormalization.ConvertSynInfo id.idRange valSynInfo
                    let memberFlags = EventDeclarationNormalization.ConvertMemberFlags memberFlags
                    let delTy = FindDelegateTypeOfPropertyEvent cenv.g cenv.amap id.idText id.idRange declaredTy 
                    let ty = 
                       if memberFlags.IsInstance then 
                         thisTy --> (delTy --> cenv.g.unit_ty)
                       else 
                         (delTy --> cenv.g.unit_ty)
                    yield reallyGenerateOneMember(ident("add_"^id.idText,id.idRange),valSynInfo,ty,memberFlags)
                    yield reallyGenerateOneMember(ident("remove_"^id.idText,id.idRange),valSynInfo,ty,memberFlags) ]
                
              
            
        match memberFlags.MemberKind with 
        | MemberKind.ClassConstructor
        | MemberKind.Constructor
        | MemberKind.Member 
        | MemberKind.PropertyGet 
        | MemberKind.PropertySet ->
            generateOneMember(memberFlags), tpenv
        | MemberKind.PropertyGetSet ->
            [ yield! generateOneMember({memberFlags with MemberKind=MemberKind.PropertyGet});
              yield! generateOneMember({memberFlags with MemberKind=MemberKind.PropertySet}); ], tpenv
    | _ ->
        let valSynInfo = AdjustValSynInfoInSignature cenv.g declaredTy valSynInfo
        let partialValReprInfo = TranslateTopValSynInfo id.idRange (TcAttributes cenv env) valSynInfo
        [ ValSpecResult(altActualParent,None,id,enclosingDeclaredTypars,declaredTypars,declaredTy,partialValReprInfo,declKind) ], tpenv


//-------------------------------------------------------------------------
// Bind types 
//------------------------------------------------------------------------- 

/// Check and elaborate a type or measure parameter occurrence
/// If optKind=Some kind, then this is the kind we're expecting (we're in *analysis* mode)
/// If optKind=None, we need to determine the kind (we're in *synthesis* mode)
///
and TcTyparOrMeasurePar optKind cenv (env:TcEnv) newOk tpenv (Typar(id,_,_) as tp) =
    let checkRes (res:Typar) =
        match optKind, res.Kind with
        | Some TyparKind.Measure, TyparKind.Type -> error (Error(FSComp.SR.tcExpectedUnitOfMeasureMarkWithAttribute(), id.idRange)); res, tpenv
        | Some TyparKind.Type, TyparKind.Measure -> error (Error(FSComp.SR.tcExpectedTypeParameter(), id.idRange)); res, tpenv
        | _, _ -> 
            let item = Item.TypeVar(id.idText)
            CallNameResolutionSink cenv.tcSink (id.idRange,env.NameEnv,item,item,ItemOccurence.UseInType,env.DisplayEnv,env.eAccessRights)
            // record the ' as well for tokenization
            CallNameResolutionSink cenv.tcSink (tp.Range.StartRange,env.NameEnv,item,item,ItemOccurence.UseInType,env.DisplayEnv,env.eAccessRights)
            res, tpenv
    let key = id.idText
    match env.eNameResEnv.eTypars.TryFind key with
    | Some res -> checkRes res
    | None -> 
    match TryFindUnscopedTypar key tpenv with
    | Some res -> checkRes res
    | None -> 
        if newOk = NoNewTypars then error (UndefinedName(0,FSComp.SR.undefinedNameTypeParameter,id,[""]));
        // OK, this is an implicit declaration of a type parameter 
        // The kind defaults to Type
        let tp' = NewTypar ((match optKind with None -> TyparKind.Type | Some kind -> kind), TyparRigidity.WarnIfNotRigid,tp,false,TyparDynamicReq.Yes,[],false,false)
        tp',AddUnscopedTypar key tp' tpenv

and TcTypar cenv env newOk tpenv tp =
    TcTyparOrMeasurePar (Some TyparKind.Type) cenv env newOk tpenv tp

and TcTyparDecl cenv env (TyparDecl(synAttrs,tp)) =
    let attrs = TcAttributes cenv env AttributeTargets.GenericParameter  synAttrs
    let hasMeasureAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute attrs
    let hasEqDepAttr = HasFSharpAttribute cenv.g cenv.g.attrib_EqualityConditionalOnAttribute attrs
    let hasCompDepAttr = HasFSharpAttribute cenv.g cenv.g.attrib_ComparisonConditionalOnAttribute attrs
    let attrs = attrs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute >> not)
    let tp = NewTypar ((if hasMeasureAttr then TyparKind.Measure else TyparKind.Type), TyparRigidity.WarnIfNotRigid,tp,false,TyparDynamicReq.Yes,attrs,hasEqDepAttr,hasCompDepAttr)
    match TryFindFSharpStringAttribute cenv.g cenv.g.attrib_CompiledNameAttribute attrs with 
    | Some compiledName -> 
        tp.Data.typar_il_name <- Some compiledName
    | None ->  
        ()
    tp
    

and TcTyparDecls cenv env synTypars = List.map (TcTyparDecl cenv env) synTypars

/// Check and elaborate a syntactic type or measure
/// If optKind=Some kind, then this is the kind we're expecting (we're in *analysis* mode)
/// If optKind=None, we need to determine the kind (we're in *synthesis* mode)
///
and TcTypeOrMeasure optKind cenv newOk checkCxs occ env (tpenv:SyntacticUnscopedTyparEnv) ty =

    match ty with 
    | SynType.LongIdent(LongIdentWithDots([],_)) -> 
        // special case when type name is absent - i.e. empty inherit part in type declaration
        cenv.g.obj_ty, tpenv
    | SynType.LongIdent(LongIdentWithDots(tc,_) as lidwd) -> 
        let m = lidwd.Range
        let ad = env.eAccessRights
        let tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver occ OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty  PermitDirectReferenceToGeneratedType.No)
        match optKind, tcref.TypeOrMeasureKind with
        | Some TyparKind.Type, TyparKind.Measure ->
            error(Error(FSComp.SR.tcExpectedTypeNotUnitOfMeasure(), m)); 
            NewErrorType (), tpenv
        | Some TyparKind.Measure, TyparKind.Type ->
            error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m)); 
            TType_measure (NewErrorMeasure ()), tpenv
        | _, TyparKind.Measure ->
            TType_measure (MeasureCon tcref), tpenv
        | _, TyparKind.Type ->
            TcTypeApp cenv newOk checkCxs occ env tpenv m tcref [] []

    | SynType.App (SynType.LongIdent(LongIdentWithDots(tc,_)),_,args,_commas,_,postfix,m) -> 
        let ad = env.eAccessRights
        let tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInType OpenQualified env.eNameResEnv ad tc (TypeNameResolutionStaticArgsInfo.FromTyArgs args) PermitDirectReferenceToGeneratedType.No)
        match optKind, tcref.TypeOrMeasureKind with
        | Some TyparKind.Type, TyparKind.Measure ->
            error(Error(FSComp.SR.tcExpectedTypeNotUnitOfMeasure(), m)); 
            NewErrorType (), tpenv
        | Some TyparKind.Measure, TyparKind.Type ->
            error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m)); 
            TType_measure (NewErrorMeasure ()), tpenv
        | _, TyparKind.Type ->
            if postfix && tcref.Typars(m) |> List.exists (fun tp -> match tp.Kind with TyparKind.Measure -> true | _ -> false) 
            then error(Error(FSComp.SR.tcInvalidUnitsOfMeasurePrefix(), m));
            TcTypeApp cenv newOk checkCxs occ env tpenv m tcref [] args 
        | _, TyparKind.Measure ->
            match args,postfix with
            | [arg], true ->
                let ms,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv arg m
                TType_measure (MeasureProd(MeasureCon tcref, ms)), tpenv
              
            | _, _ ->
                errorR(Error(FSComp.SR.tcUnitsOfMeasureInvalidInTypeConstructor(), m));
                NewErrorType (), tpenv          

    | SynType.LongIdentApp (ltyp,LongIdentWithDots(longId,_),_,args,_commas,_,m) -> 
        let ad = env.eAccessRights
        let ltyp,tpenv = TcType cenv newOk checkCxs occ env tpenv ltyp
        if not (isAppTy cenv.g ltyp) then error(Error(FSComp.SR.tcTypeHasNoNestedTypes(),m));
        let tcref,tinst = destAppTy cenv.g ltyp
        let tcref = ResolveTypeLongIdentInTyconRef cenv.tcSink cenv.nameResolver env.eNameResEnv (TypeNameResolutionInfo.ResolveToTypeRefs (TypeNameResolutionStaticArgsInfo.FromTyArgs args)) ad m tcref longId 
        TcTypeApp cenv newOk checkCxs occ env tpenv m tcref tinst args 

    | SynType.Tuple(args,m) ->   
        let isMeasure = match optKind with Some TyparKind.Measure -> true | None -> List.exists (fun (isquot,_) -> isquot) args | _ -> false
        if isMeasure then
            let ms,tpenv = TcMeasuresAsTuple cenv newOk checkCxs occ env tpenv args m
            TType_measure ms,tpenv
        else
            let args',tpenv = TcTypesAsTuple cenv newOk checkCxs occ env tpenv args m
            TType_tuple(args'),tpenv

    | SynType.Fun(domainTy,resultTy,_) -> 
        let domainTy',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv domainTy
        let resultTy',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv resultTy
        (domainTy' --> resultTy'), tpenv

    | SynType.Array (n,elemTy,m) -> 
        let elemTy,tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv elemTy
        mkArrayTy cenv.g n elemTy m, tpenv

    | SynType.Var (tp,_) -> 
        let tp',tpenv = TcTyparOrMeasurePar optKind cenv env newOk tpenv tp
        match tp'.Kind with
        | TyparKind.Measure -> TType_measure (MeasureVar tp'), tpenv
        | TyparKind.Type -> mkTyparTy tp',tpenv

    // _ types
    | SynType.Anon m ->           
        let tp:Typar = TcAnonTypeOrMeasure optKind cenv TyparRigidity.Anon TyparDynamicReq.No newOk m
        match tp.Kind with
        | TyparKind.Measure -> TType_measure (MeasureVar tp), tpenv
        | TyparKind.Type -> mkTyparTy tp,tpenv

    | SynType.WithGlobalConstraints(ty,wcs,_) ->
        let cty,tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv ty
        let tpenv = TcTyparConstraints cenv newOk checkCxs occ env tpenv wcs
        cty,tpenv

    // #typ 
    | SynType.HashConstraint(ty,m) ->  
        let tp = TcAnonTypeOrMeasure (Some TyparKind.Type) cenv TyparRigidity.WarnIfNotRigid TyparDynamicReq.Yes newOk m
        let ty',tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv ty
        AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace  ty' (mkTyparTy tp) ;
        tp.AsType, tpenv

    | SynType.StaticConstant (c, m) ->
        match c, optKind with
        | _, Some TyparKind.Type -> 
            errorR(Error(FSComp.SR.parsInvalidLiteralInType(), m)); 
            NewErrorType (), tpenv
        | SynConst.Int32 1, _ -> 
            TType_measure MeasureOne, tpenv
        | _ -> 
            errorR(Error(FSComp.SR.parsInvalidLiteralInType(), m)); 
            NewErrorType (), tpenv
    | SynType.StaticConstantNamed (_,_,m)
    | SynType.StaticConstantExpr (_,m) ->
        errorR(Error(FSComp.SR.parsInvalidLiteralInType(), m)); 
        NewErrorType (), tpenv


    | SynType.MeasurePower(typ, exponent, m) ->
        match optKind with
        | Some TyparKind.Type -> 
            errorR(Error(FSComp.SR.tcUnexpectedSymbolInTypeExpression("^"), m)); 
            NewErrorType (), tpenv
        | _ ->          
            let ms,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv typ m
            TType_measure (Tastops.MeasurePower ms exponent), tpenv

    | SynType.MeasureDivide(typ1, typ2, m) -> 
        match optKind with
        | Some TyparKind.Type -> 
            errorR(Error(FSComp.SR.tcUnexpectedSymbolInTypeExpression("/"), m)); 
            NewErrorType (), tpenv
        | _ ->
            let ms1,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv typ1 m
            let ms2,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv typ2 m
            TType_measure (MeasureProd(ms1,MeasureInv ms2)), tpenv

    | SynType.App((SynType.Var(_,m1) | SynType.MeasurePower(_,_,m1)) as arg1,_,args,_commas,_,postfix,m) ->
        match optKind, args, postfix with
        | (None | Some TyparKind.Measure), [arg2], true ->
            let ms1,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv arg1 m1
            let ms2,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv arg2 m
            TType_measure (MeasureProd(ms1, ms2)), tpenv

        | _, _, _ ->
            errorR(Error(FSComp.SR.tcTypeParameterInvalidAsTypeConstructor(), m)); 
            NewErrorType (), tpenv

    | SynType.App(_, _, _, _, _, _, m) ->
        errorR(Error(FSComp.SR.tcIllegalSyntaxInTypeExpression(), m));
        NewErrorType (), tpenv

and TcType cenv newOk checkCxs occ env (tpenv:SyntacticUnscopedTyparEnv) ty = 
    TcTypeOrMeasure (Some TyparKind.Type) cenv newOk checkCxs occ env tpenv ty

and TcMeasure cenv newOk checkCxs occ env (tpenv:SyntacticUnscopedTyparEnv) ty m = 
    match ty with
    | SynType.Anon m ->
        error(Error(FSComp.SR.tcAnonymousUnitsOfMeasureCannotBeNested(), m));
        NewErrorMeasure (), tpenv
    | _ ->
        match TcTypeOrMeasure (Some TyparKind.Measure) cenv newOk checkCxs occ env tpenv ty with
        | TType_measure ms, tpenv -> ms,tpenv
        | _, _ -> 
            error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m)); 
            NewErrorMeasure (), tpenv


and TcAnonTypeOrMeasure optKind _cenv rigid dyn newOk m =
    if newOk = NoNewTypars then errorR (Error(FSComp.SR.tcAnonymousTypeInvalidInDeclaration(),m));
    let rigid = (if rigid = TyparRigidity.Anon && newOk = NewTyparsOKButWarnIfNotRigid then TyparRigidity.WarnIfNotRigid else rigid)
    let kind = match optKind with Some TyparKind.Measure -> TyparKind.Measure | _ -> TyparKind.Type
    NewAnonTypar (kind,m,rigid,NoStaticReq,dyn)
 
and TcTypes cenv newOk checkCxs occ env tpenv args =
    List.mapFold (TcTypeAndRecover cenv newOk checkCxs occ env) tpenv args 

and TcTypesAsTuple cenv newOk checkCxs occ env tpenv args m = 
    match args with
    | [] -> error(InternalError("empty tuple type",m))
    | [(_,typ)] -> let typ,tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv typ in [typ],tpenv
    | (isquot,typ)::args -> 
        let ty,tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv typ
        let tys,tpenv = TcTypesAsTuple cenv newOk checkCxs occ env tpenv args m
        if isquot then errorR(Error(FSComp.SR.tcUnexpectedSlashInType(),m));
        ty::tys,tpenv

// Type-check a list of measures separated by juxtaposition, * or /
and TcMeasuresAsTuple cenv newOk checkCxs occ env (tpenv:SyntacticUnscopedTyparEnv) args m = 
    let rec gather args tpenv isquot acc =
        match args with
        | [] -> acc,tpenv
        | (nextisquot,typ)::args -> 
            let ms1,tpenv = TcMeasure cenv newOk checkCxs occ env tpenv typ m
            gather args tpenv nextisquot (if isquot then MeasureProd(acc,MeasureInv ms1) else MeasureProd(acc,ms1))
    gather args tpenv false MeasureOne


and TcTypesOrMeasures optKinds cenv newOk checkCxs occ env tpenv args m =
    match optKinds with
    | None ->
        List.mapFold (TcTypeOrMeasure None cenv newOk checkCxs occ env) tpenv args
    | Some kinds ->
        if List.length kinds = List.length args
        then List.mapFold (fun tpenv (arg,kind) -> TcTypeOrMeasure (Some kind) cenv newOk checkCxs occ env tpenv arg) tpenv (List.zip args kinds)
        else if kinds.Length = 0
        then error(Error(FSComp.SR.tcUnexpectedTypeArguments(), m))
        else error(Error(FSComp.SR.tcTypeParameterArityMismatch((List.length kinds), (List.length args)), m))

and TcTyparConstraints cenv newOk checkCxs occ env tpenv wcs =
    // Mark up default constraints with a priority in reverse order: last gets 0, second 
    // last gets 1 etc. See comment on TyparConstraint.DefaultsTo 
    let _,tpenv = List.fold (fun (ridx,tpenv) tc -> ridx - 1, TcTyparConstraint ridx cenv newOk checkCxs occ env tpenv tc) (List.length wcs - 1, tpenv) wcs
    tpenv

#if EXTENSIONTYPING
and TcStaticConstantParameter cenv (env:TcEnv) tpenv kind (v:SynType) idOpt =
    let fail() = error(Error(FSComp.SR.etInvalidStaticArgument(NicePrint.minimalStringOfType env.DisplayEnv kind),v.Range)) 
    let record(ttype) =
        match idOpt with
        | Some id ->
            let item = Item.ArgName (id, ttype)
            CallNameResolutionSink cenv.tcSink (id.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
        | _ -> ()
    match v with 
    | SynType.StaticConstant(sc, _) ->
        let v =
            match sc with
            | SynConst.Byte n       when typeEquiv cenv.g cenv.g.byte_ty kind    -> record(cenv.g.byte_ty); box (n:byte)
            | SynConst.Int16 n      when typeEquiv cenv.g cenv.g.int16_ty kind   -> record(cenv.g.int16_ty); box (n:int16)
            | SynConst.Int32 n      when typeEquiv cenv.g cenv.g.int32_ty kind   -> record(cenv.g.int32_ty); box (n:int)
            | SynConst.Int64 n      when typeEquiv cenv.g cenv.g.int64_ty kind   -> record(cenv.g.int64_ty); box (n:int64)
            | SynConst.SByte n      when typeEquiv cenv.g cenv.g.sbyte_ty kind   -> record(cenv.g.sbyte_ty); box (n:sbyte)
            | SynConst.UInt16 n     when typeEquiv cenv.g cenv.g.uint16_ty kind  -> record(cenv.g.uint16_ty); box (n:uint16)
            | SynConst.UInt32 n     when typeEquiv cenv.g cenv.g.uint32_ty kind  -> record(cenv.g.uint32_ty); box (n:uint32)
            | SynConst.UInt64 n     when typeEquiv cenv.g cenv.g.uint64_ty kind  -> record(cenv.g.uint64_ty); box (n:uint64)
            | SynConst.Decimal n    when typeEquiv cenv.g cenv.g.decimal_ty kind -> record(cenv.g.decimal_ty); box (n:decimal)
            | SynConst.Single n     when typeEquiv cenv.g cenv.g.float32_ty kind -> record(cenv.g.float32_ty); box (n:single)
            | SynConst.Double n     when typeEquiv cenv.g cenv.g.float_ty kind   -> record(cenv.g.float_ty); box (n:double)
            | SynConst.Char n       when typeEquiv cenv.g cenv.g.char_ty kind    -> record(cenv.g.char_ty); box (n:char)
            | SynConst.String (s,_) when s <> null && typeEquiv cenv.g cenv.g.string_ty kind  -> record(cenv.g.string_ty); box (s:string)
            | SynConst.Bool b       when typeEquiv cenv.g cenv.g.bool_ty kind    -> record(cenv.g.bool_ty); box (b:bool)
            | _ -> fail()
        v, tpenv
    | SynType.StaticConstantExpr(e, _ ) ->

        // If an error occurs, don't try to recover, since the constant expression will be nothing like what we need
        let te,tpenv' = TcExprNoRecover cenv kind env tpenv e

        // Evaluate the constant expression using static attribute argument rules
        let te = EvalAttribArg cenv.g te
        let v = 
            match stripExpr te with 
            // Check we have a residue constant. We know the type was correct because we checked the expression with this type.
            | Expr.Const(c,_,_) -> 
                match c with
                | Const.Byte n     -> record(cenv.g.byte_ty); box (n:byte)
                | Const.Int16 n    -> record(cenv.g.int16_ty); box (n:int16)
                | Const.Int32 n    -> record(cenv.g.int32_ty); box (n:int)
                | Const.Int64 n    -> record(cenv.g.int64_ty); box (n:int64)
                | Const.SByte n    -> record(cenv.g.sbyte_ty); box (n:sbyte)
                | Const.UInt16 n   -> record(cenv.g.uint16_ty); box (n:uint16)
                | Const.UInt32 n   -> record(cenv.g.uint32_ty); box (n:uint32)
                | Const.UInt64 n   -> record(cenv.g.uint64_ty); box (n:uint64)
                | Const.Decimal n  -> record(cenv.g.decimal_ty); box (n:decimal)
                | Const.Single n   -> record(cenv.g.float32_ty); box (n:single)
                | Const.Double n   -> record(cenv.g.float_ty); box (n:double)
                | Const.Char n     -> record(cenv.g.char_ty); box (n:char)
                | Const.String null   -> fail() 
                | Const.String s   -> record(cenv.g.string_ty); box (s:string)
                | Const.Bool b     -> record(cenv.g.bool_ty); box (b:bool)
                | _ ->  fail()
            | _ -> error(Error(FSComp.SR.tcInvalidConstantExpression(),v.Range))
        v, tpenv'
    | SynType.LongIdent(lidwd) ->
        let m = lidwd.Range
        TcStaticConstantParameter cenv env tpenv kind (SynType.StaticConstantExpr(SynExpr.LongIdent(false,lidwd,None,m),m)) idOpt
    | _ ->  
        fail()

and TcProvidedTypeAppToStaticConstantArgs cenv env optGeneratedTypePath tpenv (tcref:TyconRef) (args: SynType list) m =
    let typeBeforeArguments = 
        match tcref.TypeReprInfo with 
        | TProvidedTypeExtensionPoint info -> info.ProvidedType
        | _ -> failwith "unreachable"

    let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments,provider) -> typeBeforeArguments.GetStaticParameters(provider)), range=m) 
    let staticParameters = staticParameters.PApplyArray(id, "GetStaticParameters", m)

    let args = 
        args |> List.map (function 
            | SynType.StaticConstantNamed(SynType.LongIdent(LongIdentWithDots([id],_)),v,_) -> (Some id, v)
            | v -> (None, v))
    let unnamedArgs = args |> Seq.takeWhile (fst >> isNone) |> Seq.toArray |> Array.map snd
    let otherArgs = args |> Seq.skipWhile (fst >> isNone) |> Seq.toList
    let namedArgs = otherArgs |> Seq.takeWhile (fst >> isSome) |> Seq.toList |> List.map (map1Of2 Option.get)
    let otherArgs = otherArgs |> Seq.skipWhile (fst >> isSome) |> Seq.toList
    if not otherArgs.IsEmpty then 
        error (Error(FSComp.SR.etBadUnnamedStaticArgs(),m));

    for (n,_) in namedArgs do
         match staticParameters |> Array.toList |> List.mapi (fun j x -> (j,x)) |> List.filter (fun (j,sp) -> j >= unnamedArgs.Length && n.idText = sp.PUntaint((fun sp -> sp.Name), m)) with
         | [] -> 
             if staticParameters |> Array.exists (fun sp -> n.idText = sp.PUntaint((fun sp -> sp.Name), n.idRange)) then 
                 error (Error(FSComp.SR.etStaticParameterAlreadyHasValue n.idText,n.idRange))
             else
                 error (Error(FSComp.SR.etNoStaticParameterWithName n.idText,n.idRange))
         | [_] -> ()
         | _ -> error (Error(FSComp.SR.etMultipleStaticParameterWithName n.idText,n.idRange))

    if staticParameters.Length < namedArgs.Length + unnamedArgs.Length then 
        error (Error(FSComp.SR.etTooManyStaticParameters(staticParameters.Length,unnamedArgs.Length,namedArgs.Length),m))

    let argsInStaticParameterOrderIncludingDefaults = 
        staticParameters |> Array.mapi (fun i sp -> 
            let spKind = Import.ImportProvidedType cenv.amap m (sp.PApply((fun x -> x.ParameterType), m))
            let spName = sp.PUntaint((fun sp -> sp.Name), m)
            if i < unnamedArgs.Length then 
                let v = unnamedArgs.[i]
                let v, _tpenv = TcStaticConstantParameter cenv env tpenv spKind v None
                v
            else
                match namedArgs |> List.filter (fun (n,_) -> n.idText = spName) with 
                | [(n,v)] -> 
                    let v, _tpenv = TcStaticConstantParameter cenv env tpenv spKind v (Some n)
                    v
                | [] -> 
                    if sp.PUntaint((fun sp -> sp.IsOptional), m) then
                         match sp.PUntaint((fun sp -> sp.RawDefaultValue), m) with
                         | null -> error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, tcref.DisplayName, tcref.DisplayName, spName) ,m));
                         | v -> v
                    else
                      error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, tcref.DisplayName, tcref.DisplayName, spName),m))
                 | ps -> 
                      error (Error(FSComp.SR.etMultipleStaticParameterWithName spName,(fst (List.last ps)).idRange)));

 
    // Take the static arguments (as SynType's) and convert them to objects of the appropriate type, based on the expected kind.
    let providedTypeAfterStaticArguments, checkTypeName = 
        match ExtensionTyping.TryApplyProvidedType(typeBeforeArguments, optGeneratedTypePath, argsInStaticParameterOrderIncludingDefaults, m) with 
        | None -> error(Error(FSComp.SR.etErrorApplyingStaticArgumentsToType(),m))
        | Some (ty,checkTypeName) -> (ty, checkTypeName)

    let hasNoArgs = (argsInStaticParameterOrderIncludingDefaults.Length = 0)
    hasNoArgs, providedTypeAfterStaticArguments, checkTypeName        

#endif

/// Typecheck an application of a generic type to type arguments.
///
/// Note that the generic type may be a nested generic type List.ListEnumerator.
/// In this case, 'args' is only the instantation of the suffix type arguments, and pathTypeArgs gives
/// the prefix of type arguments. 
and TcTypeApp cenv newOk checkCxs occ env tpenv m tcref pathTypeArgs (args: SynType list) =
    CheckTyconAccessible m env.eAccessRights tcref |> ignore;
    CheckEntityAttributes cenv.g tcref m |> CommitOperationResult;
    
#if EXTENSIONTYPING
    // Provided types are (currently) always non-generic. Their names may include mangled 
    // static parameters, which are passed by the provider.
    if tcref.Deref.IsProvided then 
        let hasNoArgs,providedTypeAfterStaticArguments,checkTypeName = TcProvidedTypeAppToStaticConstantArgs cenv env None tpenv tcref args m

        let isGenerated = providedTypeAfterStaticArguments.PUntaint((fun st -> not st.IsErased),m)

        //printfn "adding entity for provided type '%s', isDirectReferenceToGenerated = %b, isGenerated = %b" (st.PUntaint((fun st -> st.Name), m)) isDirectReferenceToGenerated isGenerated
        let isDirectReferenceToGenerated = isGenerated && ExtensionTyping.IsGeneratedTypeDirectReference (providedTypeAfterStaticArguments, m)
        if isDirectReferenceToGenerated then 
            error(Error(FSComp.SR.etDirectReferenceToGeneratedTypeNotAllowed(tcref.DisplayName),m))

        // We put the type name check after the 'isDirectReferenceToGenerated' check because we need the 'isDirectReferenceToGenerated' error to be shown for generated types
        checkTypeName() 
        if hasNoArgs then 
            mkAppTy tcref [], tpenv
        else
            let typ = Import.ImportProvidedType cenv.amap m providedTypeAfterStaticArguments
            typ,tpenv 
    else
#endif
    (
        let tps,_,tinst,_ = infoOfTyconRef m tcref
        // If we're not checking constraints, i.e. when we first assert the super/interfaces of a type definition, then just 
        // clear the constaint lists of the freshly generated type variables. A little ugly but fairly localized. 
        if checkCxs = NoCheckCxs then tps |> List.iter (fun tp -> tp.Data.typar_constraints <- []);
        if tinst.Length <> pathTypeArgs.Length + args.Length then 
            error (TyconBadArgs(env.DisplayEnv,tcref,pathTypeArgs.Length + args.Length,m));
        let args',tpenv = 
            // Get the suffix of typars
            let tpsForArgs = List.drop (tps.Length - args.Length) tps
            let kindsForArgs = tpsForArgs |> List.map (fun tp -> tp.Kind)
            TcTypesOrMeasures (Some kindsForArgs) cenv newOk checkCxs occ env tpenv args m
        let args' = pathTypeArgs @ args'
        List.iter2 (UnifyTypes cenv env m) tinst args';
        mkAppTy tcref args', tpenv
    )
and TcTypeOrMeasureAndRecover optKind cenv newOk checkCxs occ env tpenv ty   =
    try TcTypeOrMeasure optKind cenv newOk checkCxs occ env tpenv ty 
    with e -> 
        errorRecovery e ty.Range; 
        (if newOk <> NoNewTypars then NewErrorType () else cenv.g.obj_ty),tpenv 

and TcTypeAndRecover cenv newOk checkCxs occ env tpenv ty   =
    TcTypeOrMeasureAndRecover (Some TyparKind.Type) cenv newOk checkCxs occ env tpenv ty

and TcNestedTypeApplication cenv newOk checkCxs occ env tpenv mWholeTypeApp typ tyargs =
    if not (isAppTy cenv.g typ) then error(Error(FSComp.SR.tcTypeHasNoNestedTypes(),mWholeTypeApp));
    match typ with 
    | TType_app(tcref,tinst) -> 
        let pathTypeArgs = List.take (max (tinst.Length - tcref.Typars(mWholeTypeApp).Length) 0) tinst
        TcTypeApp cenv newOk checkCxs occ env tpenv mWholeTypeApp tcref pathTypeArgs tyargs 
    | _ -> error(InternalError("TcNestedTypeApplication: expected type application",mWholeTypeApp))


and TryAdjustHiddenVarNameToCompGenName cenv env (id:Ident) altNameRefCellOpt =
      match altNameRefCellOpt with 
      | Some ({contents = Undecided altId } as altNameRefCell) -> 
          match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false id.idRange env.eAccessRights env.eNameResEnv TypeNameResolutionInfo.Default [id] with 
          | Item.NewDef _ -> None // the name is not in scope as a pattern identifier (e.g. union case), so do not use the alternate ID
          | _ -> altNameRefCell :=  Decided altId; Some altId  // the name is in scope as a pattern identifier, so use the alternate ID
      | Some ({contents = Decided altId }) -> Some altId
      | None -> None

/// Bind the patterns used in a lambda. Not clear why we don't use TcPat.
and TcSimplePat optArgsOK checkCxs cenv ty env (tpenv,names,takenNames) p = 
    match p with 
    | SynSimplePat.Id (id,altNameRefCellOpt,compgen,isMemberThis,isOpt,m) -> 
        // Check to see if pattern translation decides to use an alternative identifier.
        match TryAdjustHiddenVarNameToCompGenName cenv env id altNameRefCellOpt with 
        | Some altId -> TcSimplePat optArgsOK checkCxs cenv ty env (tpenv,names,takenNames) (SynSimplePat.Id (altId,None,compgen,isMemberThis,isOpt,m) )
        | None -> 

            if isOpt && not optArgsOK then errorR(Error(FSComp.SR.tcOptionalArgsOnlyOnMembers(),m));
            if isOpt then 
                let tyarg = NewInferenceType ()
                UnifyTypes cenv env m ty (mkOptionTy cenv.g tyarg);
                    
            let _,names,takenNames = TcPatBindingName cenv env id ty isMemberThis None None (ValInline.Optional,permitInferTypars,noArgOrRetAttribs,false,None,compgen) (names,takenNames)
            id.idText, 
            (tpenv,names,takenNames)

    | SynSimplePat.Typed (p,cty,m) ->
        let cty',tpenv = TcTypeAndRecover cenv NewTyparsOK checkCxs ItemOccurence.UseInType env tpenv cty
        match p with 
        // Optional arguments on members 
        | SynSimplePat.Id(_,_,_,_,true,_) -> UnifyTypes cenv env m ty (mkOptionTy cenv.g cty');
        | _ -> UnifyTypes cenv env m ty cty';

        TcSimplePat optArgsOK checkCxs cenv ty env (tpenv,names,takenNames) p

    | SynSimplePat.Attrib (p,_,_) ->
        TcSimplePat optArgsOK checkCxs cenv ty env (tpenv,names,takenNames) p

// raise an error if any optional args precede any non-optional args 
and ValidateOptArgOrder (spats : SynSimplePats) =

    let rec getPats spats =
        match spats with
        | SynSimplePats.SimplePats(p,m) -> p,m
        | SynSimplePats.Typed(p,_,_) -> getPats p
        
    let rec isOptArg pat =
        match pat with
        | SynSimplePat.Id (_,_,_,_,isOpt,_) -> isOpt
        | SynSimplePat.Typed (p,_,_) -> isOptArg p
        | SynSimplePat.Attrib (p,_,_) -> isOptArg p        
        
    let pats,m = getPats spats 
        
    let hitOptArg = ref false
    
    List.iter (fun pat -> if isOptArg pat then hitOptArg := true elif !hitOptArg then error(Error(FSComp.SR.tcOptionalArgsMustComeAfterNonOptionalArgs(),m))) pats
            
                    
/// Bind the patterns used in argument position for a function, method or lambda. 
and TcSimplePats cenv optArgsOK  checkCxs ty env (tpenv,names,takenNames:Set<_>) p =
    
    // validate optional argument declaration
    ValidateOptArgOrder p
               
    match p with 
    | SynSimplePats.SimplePats ([],m) -> 
        // Unit "()" patterns in argument position become SynSimplePats.SimplePats([],_) in the
        // syntactic translation when building bindings. This is done because the
        // use of "()" has special significance for arity analysis and argument counting.
        //
        // Here we give a name to the single argument implied by those patterns.
        // This is a little awkward since it would be nice if this was
        // uniform with the process where we give names to other (more complex)
        // patterns used in argument position, e.g. "let f (D(x)) = ..."
        let id = ident("unitVar"^string takenNames.Count,m)
        UnifyTypes cenv env m ty cenv.g.unit_ty;
        let _,names,takenNames = TcPatBindingName cenv env id ty false None None (ValInline.Optional,permitInferTypars,noArgOrRetAttribs,false,None,true) (names,takenNames)
        [id.idText],(tpenv,names,takenNames)

    | SynSimplePats.SimplePats ([p],_) -> 
        let v,(tpenv,names,takenNames) = TcSimplePat optArgsOK checkCxs cenv ty env (tpenv,names,takenNames) p
        [v],(tpenv,names,takenNames)

    | SynSimplePats.SimplePats (ps,m) -> 
        let ptys = UnifyTupleType cenv env.DisplayEnv m ty ps
        let ps',(tpenv,names,takenNames) = List.mapFold (fun tpenv (ty,e) -> TcSimplePat optArgsOK checkCxs cenv ty env tpenv e) (tpenv,names,takenNames) (List.zip ptys ps)
        ps',(tpenv,names,takenNames)

    | SynSimplePats.Typed (p,cty,m) ->
        let cty',tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv cty

        match p with 
        // Solitary optional arguments on members 
        | SynSimplePats.SimplePats([SynSimplePat.Id(_,_,_,_,true,_)],_) -> UnifyTypes cenv env m ty (mkOptionTy cenv.g cty');
        | _ -> UnifyTypes cenv env m ty cty';

        TcSimplePats cenv optArgsOK  checkCxs ty env (tpenv,names,takenNames) p

and TcSimplePatsOfUnknownType cenv optArgsOK checkCxs env tpenv spats =
    let argty = NewInferenceType ()
    TcSimplePats cenv optArgsOK checkCxs argty env (tpenv,NameMap.empty,Set.empty) spats

and TcPatBindingName _cenv _env id ty isMemberThis vis1 topValData (inlineFlag,declaredTypars,argAttribs,isMutable,vis2,compgen) (names,takenNames:Set) = 
    let vis = if isSome vis1 then vis1 else vis2
    if takenNames.Contains id.idText then errorR (VarBoundTwice id);
    let baseOrThis = if isMemberThis then MemberThisVal else NormalVal
    let names = Map.add id.idText (PrelimValScheme1(id,declaredTypars,ty,topValData,None,isMutable,inlineFlag,baseOrThis,argAttribs,vis,compgen)) names
    let takenNames = Set.add id.idText takenNames
    (fun (TcPatPhase2Input values) -> 
        let (vspec,typeScheme) = 
            match values.TryFind id.idText with
            | Some x -> x
            | None -> error(Error(FSComp.SR.tcNameNotBoundInPattern(id.idText),id.idRange))
        PBind(vspec,typeScheme)),
    names,takenNames

and TcPatAndRecover warnOnUpper cenv (env:TcEnv) topValInfo vFlags (tpenv,names,takenNames) ty (pat:SynPat) = 
    try 
       TcPat warnOnUpper cenv env topValInfo vFlags (tpenv,names,takenNames) ty pat
    with e ->
        // Error recovery - return some rubbish expression, but replace/annotate 
        // the type of the current expression with a type variable that indicates an error 
        let m = pat.Range 
        errorRecovery e m
        //solveTypAsError cenv env.DisplayEnv m ty;
        (fun _ -> TPat_wild m), (tpenv,names,takenNames)

/// Typecheck a pattern. Patterns are type-checked in three phases: 
/// 1. TcPat builds a List.map from simple variable names to inferred types for 
///   those variables. It also returns a function to perform the second phase.
/// 2. The second phase assumes the caller has built the actual value_spec's 
///    for the values being defined, and has decided if the types of these 
///    variables are to be generalized. The caller hands this information to
///    the second-phase function in terms of a List.map from names to actual
///    value specifications. 
and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv,names,takenNames) ty pat = 
    let ad = env.eAccessRights
    match pat with 
    | SynPat.Const (c,m) -> 
        match c with 
        | SynConst.Bytes (bytes,m) -> 
            UnifyTypes cenv env m ty (mkByteArrayTy cenv.g); 
            TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) ty (SynPat.ArrayOrList (true,[ for b in bytes -> SynPat.Const(SynConst.Byte b,m) ],m))
        | SynConst.UserNum _ -> 
            error(Error(FSComp.SR.tcInvalidNonPrimitiveLiteralInPatternMatch(),m))
        | _ -> 
            let c' = TcConst cenv ty m env c
            (fun (_:TcPatPhase2Input) -> TPat_const(c',m)),(tpenv,names,takenNames)
        
    | SynPat.Wild m ->
        (fun _ -> TPat_wild m), (tpenv,names,takenNames)

    | SynPat.IsInst(cty,m) 
    | SynPat.Named (SynPat.IsInst(cty,m),_,_,_,_) -> 
        let srcTy = ty
        let tgty,tpenv = TcTypeAndRecover cenv NewTyparsOKButWarnIfNotRigid CheckCxs ItemOccurence.UseInType env tpenv cty
        TcRuntimeTypeTest (*isCast*)false cenv env.DisplayEnv m tgty srcTy;
        match pat with 
        | SynPat.IsInst(_,m) ->
            (fun _ -> TPat_isinst (srcTy,tgty,None,m)),(tpenv,names,takenNames)
        | SynPat.Named (SynPat.IsInst _,id,isMemberThis,vis,m) -> 
            let bindf,names,takenNames = TcPatBindingName cenv env id tgty isMemberThis vis None vFlags (names,takenNames)
            (fun values -> TPat_isinst (srcTy,tgty,Some(bindf values),m)),
            (tpenv,names,takenNames)
        | _ -> failwith "TcPat"

    | SynPat.OptionalVal (_,m) -> 
        error(Error(FSComp.SR.tcOptionalArgsOnlyOnMembers(),m))

    | SynPat.Named (p,id,isMemberThis,vis,m) -> 
        let bindf,names,takenNames = TcPatBindingName cenv env id ty isMemberThis vis topValInfo vFlags (names,takenNames)
        let pat',acc = TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) ty p
        (fun values -> TPat_as (pat' values,bindf values,m)), 
        acc

    | SynPat.Typed (p,cty,m) ->
        let cty',tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv cty
        UnifyTypes cenv env m ty cty';
        TcPat warnOnUpper cenv env topValInfo vFlags (tpenv,names,takenNames) ty p

    | SynPat.Attrib (_,_,m) ->
        error(Error(FSComp.SR.tcAttributesInvalidInPatterns(),m));

    | SynPat.Or (pat1,pat2,m) ->
        let pat1',(tpenv,names1,takenNames1) = TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) ty pat1
        let pat2',(tpenv,names2,takenNames2) = TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) ty pat2
        if not (takenNames1 = takenNames2) then
          // We don't try to recover from this error since we get later bad internal errors during pattern
          // matching 
          error (UnionPatternsBindDifferentNames m);
        names1 |> Map.iter (fun _ (PrelimValScheme1(id1,_,ty1,_,_,_,_,_,_,_,_)) -> 
          match Map.tryFind id1.idText names2 with 
          | None -> () 
          | Some (PrelimValScheme1(_,_,ty2,_,_,_,_,_,_,_,_)) -> 
              UnifyTypes cenv env m ty1 ty2);
        (fun values -> TPat_disjs ([pat1' values;pat2' values],m)), (tpenv,names1,takenNames1)

    | SynPat.Ands (pats,m) ->
        let pats',acc = TcPatterns warnOnUpper cenv env vFlags (tpenv,names,takenNames) (List.map (fun _ -> ty) pats) pats
        (fun values -> TPat_conjs(List.map (fun f -> f values) pats',m)), acc

    | SynPat.LongIdent (LongIdentWithDots(longId,_),_,tyargs,args,vis,m) ->
        if isSome tyargs then errorR(Error(FSComp.SR.tcInvalidTypeArgumentUsage(),m));
        let warnOnUpperForId = if isNil args then warnOnUpper else AllIdsOK
        begin match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperForId false m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with
        | Item.NewDef id -> 
            match args with 
            | [] -> TcPat warnOnUpperForId cenv env topValInfo vFlags (tpenv,names,takenNames) ty (mkSynPatVar vis id)
            | _ -> error (UndefinedName(0,FSComp.SR.undefinedNamePatternDiscriminator,id,[]))

        | Item.ActivePatternCase(APElemRef(apinfo,vref,idx)) as item -> 
            // TOTAL/PARTIAL ACTIVE PATTERNS 
            let vexp, _, _, tinst, _ = TcVal true cenv env tpenv vref None m
            let vexp = MakeApplicableExprWithFlex cenv env vexp
            let vexpty = vexp.Type

            let activePatArgsAsSynPats,patarg = 
                match args with 
                | [] -> [],SynPat.Const(SynConst.Unit,m) 
                | _ -> 
                    // This bit of type-directed analysis ensures that parameterized partial active patterns returning unit do not need to take an argument
                    // See FSharp 1.0 3502
                    let dtys,rty = stripFunTy cenv.g vexpty
                    
                    if dtys.Length = args.Length + 1 && isOptionTy cenv.g rty &&  isUnitTy cenv.g (destOptionTy cenv.g rty)  then 
                        args,SynPat.Const(SynConst.Unit,m) 
                    else 
                        List.frontAndBack args

            if nonNil activePatArgsAsSynPats && apinfo.ActiveTags.Length <> 1 then 
                error(Error(FSComp.SR.tcRequireActivePatternWithOneResult(),m));

            // Parse the arguments to an active pattern
            // Note we parse arguments to parameterized pattern labels as patterns, not expressions. 
            // This means the range of syntactic expression forms that can be used here is limited. 
            let rec convSynPatToSynExpr x = 
                match x with
                | SynPat.FromParseError(p,_) -> convSynPatToSynExpr p
                | SynPat.Const (c,m) -> SynExpr.Const(c,m)
                | SynPat.Named (SynPat.Wild _,id,_,None,_) -> SynExpr.Ident(id)
                | SynPat.Typed (p,cty,m) -> SynExpr.Typed (convSynPatToSynExpr p,cty,m)
                | SynPat.LongIdent (LongIdentWithDots(longId,dotms) as lidwd,_,_tyargs,args,None,m) -> 
                    let e =
                        if dotms.Length = longId.Length then
                            let e = SynExpr.LongIdent(false,LongIdentWithDots(longId, List.take (dotms.Length - 1) dotms),None,m)
                            SynExpr.DiscardAfterMissingQualificationAfterDot(e, unionRanges e.Range (List.last dotms))
                        else SynExpr.LongIdent(false,lidwd,None,m)
                    List.fold (fun f x -> mkSynApp1 f (convSynPatToSynExpr x) m) e args
                | SynPat.Tuple (args,m) -> SynExpr.Tuple(List.map convSynPatToSynExpr args,[],m)
                | SynPat.Paren (p,_) -> convSynPatToSynExpr p
                | SynPat.ArrayOrList (isArray,args,m) -> SynExpr.ArrayOrList(isArray,List.map convSynPatToSynExpr args,m)
                | SynPat.QuoteExpr (e,_) -> e
                | SynPat.Null m -> SynExpr.Null(m)
                | _ -> error(Error(FSComp.SR.tcInvalidArgForParameterizedPattern(),x.Range))
            let activePatArgsAsSynExprs = List.map convSynPatToSynExpr activePatArgsAsSynPats

            let activePatResTys = NewInferenceTypes apinfo.Names
            let activePatType = apinfo.OverallType cenv.g m ty activePatResTys 

            let delayed = activePatArgsAsSynExprs |> List.map (fun arg -> DelayedApp(ExprAtomicFlag.NonAtomic, arg, unionRanges (rangeOfLid longId) arg.Range)) 
            let activePatExpr, tpenv = PropagateThenTcDelayed cenv activePatType env tpenv m vexp vexpty ExprAtomicFlag.NonAtomic delayed

            if idx >= activePatResTys.Length then error(Error(FSComp.SR.tcInvalidIndexIntoActivePatternArray(),m));
            let argty = List.nth activePatResTys idx 
                
            let arg',(tpenv,names,takenNames) = TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) argty patarg
            
            // The identity of an active pattern consists of its value and the types it is applied to.
            // If there are any expression args then we've lost identity. 
            let activePatIdentity = (if nonNil activePatArgsAsSynExprs then None else Some (vref, tinst))
            (fun values -> 
                // Report information about the 'active recognizer' occurence to IDE
                CallNameResolutionSink cenv.tcSink (rangeOfLid longId,env.NameEnv,item,item,ItemOccurence.Pattern,env.DisplayEnv,env.eAccessRights)
                TPat_query((activePatExpr, activePatResTys, activePatIdentity, idx, apinfo), arg' values, m)), 
            (tpenv,names,takenNames)

        | (Item.UnionCase _ | Item.ExnCase _) as item ->
            // DATA MATCH CONSTRUTORS 
            let mkf,argtys = ApplyUnionCaseOrExnTypesForPat m cenv env ty item
            let nargtys = argtys.Length

            let args = 
              match args with 
              | []-> []
              // note: the next will always be parenthesized 
              | [SynPatErrorSkip(SynPat.Tuple (args,_)) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Tuple (args,_)),_))] when nargtys > 1 -> args

              // note: we allow both 'C _' and 'C (_)' regardless of number of argument of the pattern 
              | [SynPatErrorSkip(SynPat.Wild _ as e) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Wild _ as e),_))] -> Array.toList (Array.create nargtys e)
              | [arg] -> [arg] 
              | _ when nargtys = 0 -> error(Error(FSComp.SR.tcUnionCaseDoesNotTakeArguments(),m)) 
              | _ when nargtys = 1 -> error(Error(FSComp.SR.tcUnionCaseRequiresOneArgument(),m)) 
              | _ -> error(Error(FSComp.SR.tcUnionCaseExpectsTupledArguments(nargtys),m))
            UnionCaseOrExnCheck env nargtys args.Length m;

            let args',acc = TcPatterns warnOnUpper cenv env vFlags (tpenv,names,takenNames) argtys args
            (fun values -> 
                // Report information about the case occurence to IDE
                CallNameResolutionSink cenv.tcSink (rangeOfLid longId,env.NameEnv,item,item,ItemOccurence.Pattern,env.DisplayEnv,env.eAccessRights)
                mkf(List.map (fun f -> f values) args')), acc
                
        | Item.ILField finfo ->
            // LITERAL .NET FIELDS 
            CheckILFieldInfoAccessible cenv.g cenv.amap m env.eAccessRights finfo;
            if not finfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(finfo.FieldName),m));
            CheckILFieldAttributes cenv.g finfo m;
            match finfo.LiteralValue with 
            | None -> error (Error(FSComp.SR.tcFieldNotLiteralCannotBeUsedInPattern(), m));
            | Some lit -> 
                UnifyTypes cenv env m ty (finfo.FieldType(cenv.amap,m))
                let c' = TcFieldInit m lit
                (fun _ -> TPat_const (c',m)),(tpenv,names,takenNames)             
            
        | Item.RecdField rfinfo ->
            // LITERAL F# FIELDS 
            CheckRecdFieldInfoAccessible m env.eAccessRights rfinfo;
            if not rfinfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.Name),m));
            CheckRecdFieldInfoAttributes cenv.g rfinfo m  |> CommitOperationResult;        
            match rfinfo.LiteralValue with 
            | None -> error (Error(FSComp.SR.tcFieldNotLiteralCannotBeUsedInPattern(), m));
            | Some lit -> 
                UnifyTypes cenv env m ty rfinfo.FieldType;
                (fun _ -> TPat_const (lit,m)),(tpenv,names,takenNames)             

        | Item.Value vref ->
            match vref.LiteralValue with 
            | None -> error (Error(FSComp.SR.tcNonLiteralCannotBeUsedInPattern(), m));
            | Some lit -> 
                let (_, _, vexpty, _, _) = TcVal true cenv env tpenv vref None m
                CheckValAccessible m env.eAccessRights vref;
                CheckFSharpAttributes cenv.g vref.Attribs m |> CommitOperationResult;
                UnifyTypes cenv env m ty vexpty;
                (fun _ -> TPat_const (lit,m)),(tpenv,names,takenNames)             

        |  _ -> error (Error(FSComp.SR.tcRequireVarConstRecogOrLiteral(),m))
        end

    | SynPat.QuoteExpr(_,m) -> error (Error(FSComp.SR.tcInvalidPattern(),m))
          
    | SynPat.Tuple (args,m) ->
        let argtys = NewInferenceTypes args
        UnifyTypes cenv env m ty (TType_tuple argtys);
        let args',acc = TcPatterns warnOnUpper cenv env vFlags (tpenv,names,takenNames) argtys args
        (fun values -> TPat_tuple(List.map (fun f -> f values) args',argtys,m)), acc

    | SynPat.Paren (p,_) ->
        TcPat warnOnUpper cenv env None vFlags (tpenv,names,takenNames) ty p

    | SynPat.ArrayOrList (isArray,args,m) ->
        let argty = NewInferenceType ()
        UnifyTypes cenv env m ty (if isArray then mkArrayType cenv.g argty else Tastops.mkListTy cenv.g argty);
        let args',acc = TcPatterns warnOnUpper cenv env vFlags (tpenv,names,takenNames) (List.map (fun _ -> argty) args) args
        (fun values -> 
            let args' = List.map (fun f -> f values) args'
            if isArray then TPat_array(args', argty, m)
            else List.foldBack (mkConsListPat cenv.g argty) args' (mkNilListPat cenv.g m argty)), acc

    | SynPat.Record (flds,m) ->
        let tcref,fldsmap,_fldsList  = BuildFieldMap cenv env true ty flds m
        // REVIEW: use _fldsList to type check pattern in code order not field defn order 
        let _,inst,tinst,gtyp = infoOfTyconRef m tcref
        UnifyTypes cenv env m ty gtyp;
        let fields = tcref.TrueInstanceFieldsAsList
        let ftys = fields |> List.map (fun fsp -> actualTyOfRecdField inst fsp,fsp) 
        let fldsmap',acc = 
          ((tpenv,names,takenNames), ftys) ||> List.mapFold (fun s (ty,fsp) -> 
              if Map.containsKey fsp.rfield_id.idText  fldsmap then 
                TcPat warnOnUpper cenv env None vFlags s ty (Map.find fsp.rfield_id.idText fldsmap)
              else 
                (fun _ -> TPat_wild m),s)
        (fun values -> TPat_recd (tcref,tinst,List.map (fun f -> f values) fldsmap',m)), 
        acc

    | SynPat.DeprecatedCharRange (c1,c2,m) -> 
        errorR(Deprecated(FSComp.SR.tcUseWhenPatternGuard(),m));
        UnifyTypes cenv env m ty (cenv.g.char_ty);
        (fun _ -> TPat_range(c1,c2,m)),(tpenv,names,takenNames)

    | SynPat.Null m -> 
        AddCxTypeMustSupportNull env.DisplayEnv cenv.css m NoTrace ty;
        (fun _ -> TPat_null m),(tpenv,names,takenNames)

    | SynPat.InstanceMember (_,_,_,_,m) -> 
        errorR(Error(FSComp.SR.tcIllegalPattern(),pat.Range));
        (fun _ -> TPat_wild m), (tpenv,names,takenNames)
    | SynPat.FromParseError (pat,_) ->
        suppressErrorReporting (fun () -> TcPatAndRecover warnOnUpper cenv env topValInfo vFlags (tpenv,names,takenNames) (NewErrorType()) pat)

and TcPatterns warnOnUpper cenv env vFlags s argtys args = 
    assert (List.length args  = List.length argtys);
    List.mapFold (fun s (ty,pat) -> TcPat warnOnUpper cenv env None vFlags s ty pat) s (List.zip argtys args)


and solveTypAsError cenv denv m ty =
    let ty2 = NewErrorType ()
    assert((destTyparTy cenv.g ty2).IsFromError);
    SolveTypEqualsTypKeepAbbrevs (MakeConstraintSolverEnv cenv.css m denv) 0 m NoTrace ty ty2 |> ignore

and RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects cenv env tpenv expr =
    // This function is motivated by cases like
    //    query { for ... join(for x in f(). }
    // where there is incomplete code in a query, and we are current just dropping a piece of the AST on the floor (above, the bit inside the 'join').
    // 
    // The problem with dropping the AST on the floor is that we get no captured resolutions, which means no Intellisense/QuickInfo/ParamHelp.
    //
    // The idea behind the fix is to semi-typecheck this AST-fragment, just to get resolutions captured.
    //
    // The tricky bit is to not also have any other effects from typechecking, namely producing error diagnostics (which may be spurious) or having 
    // side-effects on the typecheck environment.
    //
    // TODO: Deal with the tricky bit.  As it stands, we turn off error logging, but still have typechecking environment effects.  As a result, 
    // at the very least, you cannot call this function unless you're already reported a typechecking error (the 'worst' possible outcome would be 
    // to incorrectly solve typecheck constraints as a result of effects in this function, and then have the code compile successfully and behave 
    // in some weird way; so ensure the code can't possibly compile before calling this function as an expedient way to get better IntelliSense).
    suppressErrorReporting (fun () -> 
        try ignore(TcExprOfUnknownType cenv env tpenv expr)
        with e -> ())

and RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects_Delayed cenv env tpenv delayed =

    let rec dummyCheckedDelayed delayed =
        match delayed with 
        | DelayedApp (_hpa, arg, _mExprAndArg) :: otherDelayed ->
            RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects cenv env tpenv arg
            dummyCheckedDelayed otherDelayed
        | _ -> ()
    dummyCheckedDelayed delayed 

and TcExprOfUnknownType cenv env tpenv expr =
    let exprty = NewInferenceType ()
    let expr',tpenv = TcExpr cenv exprty env tpenv expr
    expr',exprty,tpenv

and TcExprFlex cenv flex ty (env: TcEnv) tpenv (e: SynExpr) =
    if flex then
        let argty = NewInferenceType ()
        AddCxTypeMustSubsumeType env.DisplayEnv cenv.css e.Range NoTrace ty argty ;
        let e',tpenv  = TcExpr cenv argty env tpenv e 
        let e' = mkCoerceIfNeeded cenv.g ty argty e'
        e',tpenv
    else
        TcExpr cenv ty env tpenv e
    

and TcExpr cenv ty (env: TcEnv) tpenv (expr: SynExpr) =

    let m = expr.Range

    // Start an error recovery handler 
    // Note the try/catch can lead to tail-recursion problems for iterated constructs, e.g. let... in... 
    // So be careful! 
    try 
        TcExprNoRecover cenv ty env tpenv expr 
    with e -> 

        // Error recovery - return some rubbish expression, but replace/annotate 
        // the type of the current expression with a type variable that indicates an error 
        errorRecovery e m; 
        solveTypAsError cenv env.DisplayEnv m ty;
        mkThrow m ty (mkOne cenv.g m), tpenv

and TcExprNoRecover cenv ty (env: TcEnv) tpenv (expr: SynExpr) =

    // Count our way through the expression shape that makes up an object constructor 
    // See notes at definition of "ctor" re. object model constructors. 
    let env = 
        if GetCtorShapeCounter env > 0 then AdjustCtorShapeCounter (fun x -> x - 1) env 
        else env

    let tm,tpenv = TcExprThen cenv ty env tpenv expr []

    tm,tpenv


/// This is used to typecheck legitimate 'main body of constructor' expressions 
and TcExprThatIsCtorBody safeInitInfo cenv overallTy env tpenv expr =
    let env = {env with eCtorInfo = Some (InitialExplicitCtorInfo safeInitInfo) }
    let expr,tpenv = TcExpr cenv overallTy env tpenv expr
    let expr = CheckAndRewriteObjectCtor cenv.g env expr
    expr,tpenv

/// This is used to typecheck all ordinary expressions including constituent 
/// parts of ctor. 
and TcExprThatCanBeCtorBody cenv overallTy env tpenv expr =
    let env = if AreWithinCtorShape env then AdjustCtorShapeCounter (fun x -> x + 1) env else env
    TcExpr cenv overallTy env tpenv expr

/// This is used to typecheck legitimate 'non-main body of object constructor' expressions 
and TcExprThatCantBeCtorBody cenv overallTy env tpenv expr =
    let env = if AreWithinCtorShape env then ExitCtorShapeRegion env else env
    TcExpr cenv overallTy env tpenv expr

/// This is used to typecheck legitimate 'non-main body of object constructor' expressions 
and TcStmtThatCantBeCtorBody cenv env tpenv expr =
    let env = if AreWithinCtorShape env then ExitCtorShapeRegion env else env
    TcStmt cenv env tpenv expr

and TcStmt cenv env tpenv synExpr =
    let expr,ty,tpenv = TcExprOfUnknownType cenv env tpenv synExpr
    let m = synExpr.Range
    let wasUnit = UnifyUnitType cenv env.DisplayEnv m ty (Some expr);
    if wasUnit then
        expr,tpenv
    else
        mkCompGenSequential m expr (mkUnit cenv.g m),tpenv



/// During checking of expressions of the form (x(y)).z(w1,w2) 
/// keep a stack of things on the right. This lets us recognize 
/// method applications and other item-based syntax. 
and TcExprThen cenv overallTy env tpenv synExpr delayed =
    match synExpr with 

    | LongOrSingleIdent (isOpt,longId,altNameRefCellOpt,mLongId) ->
        if isOpt then errorR(Error(FSComp.SR.tcSyntaxErrorUnexpectedQMark(),mLongId));
        // Check to see if pattern translation decided to use an alternative identifier.
        match altNameRefCellOpt with 
        | Some {contents = Decided altId} -> TcExprThen cenv overallTy env tpenv (SynExpr.LongIdent(isOpt,LongIdentWithDots([altId],[]),None,mLongId)) delayed
        | _ -> TcLongIdentThen cenv overallTy env tpenv longId delayed

    // f x
    | SynExpr.App (hpa,_,func,arg,mFuncAndArg) ->
        TcExprThen cenv overallTy env tpenv func ((DelayedApp (hpa, arg, mFuncAndArg)):: delayed)

    // e
    | SynExpr.TypeApp (func, _, typeArgs, _, _, mTypeArgs, mFuncAndTypeArgs) ->
        TcExprThen cenv overallTy env tpenv func ((DelayedTypeApp (typeArgs, mTypeArgs, mFuncAndTypeArgs)):: delayed)

    // e1.id1
    // e1.id1.id2
    // etc.
    | SynExpr.DotGet (e1,_,LongIdentWithDots(longId,_),_) ->
        TcExprThen cenv overallTy env tpenv e1 ((DelayedDotLookup (longId,synExpr.RangeSansAnyExtraDot))::delayed)
           
    // e1.[e2]
    // e1.[e21,...,e2n]
    // etc.
    | SynExpr.DotIndexedGet (e1,e2,mDot,mWholeExpr) ->
        TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv synExpr e1 e2 delayed

    // e1.[e2] <- e3
    // e1.[e21,...,e2n] <- e3
    // etc.
    | SynExpr.DotIndexedSet (e1,e2,_,_,mDot,mWholeExpr) ->
        TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv synExpr e1 e2 delayed
    
    | _  ->
        match delayed with 
        | [] -> TcExprUndelayed cenv overallTy env tpenv synExpr
        | _ -> 
            let expr,exprty,tpenv = TcExprUndelayedNoType cenv env tpenv synExpr
            PropagateThenTcDelayed cenv overallTy env tpenv synExpr.Range (MakeApplicableExprNoFlex cenv expr) exprty ExprAtomicFlag.NonAtomic delayed

and TcExprs cenv env m tpenv flexes argtys args = 
    if (List.length args  <> List.length argtys) then error(Error(FSComp.SR.tcExpressionCountMisMatch((List.length argtys), (List.length args)),m));
    (tpenv, List.zip3 flexes argtys args) ||> List.mapFold (fun tpenv (flex,ty,e) -> 
         TcExprFlex cenv flex ty env tpenv e)

and CheckSuperInit cenv objTy m = 
        // Check the type is not abstract
        if isAppTy cenv.g objTy && (let tcref = tcrefOfAppTy cenv.g objTy in isAbstractTycon tcref.Deref) then 
            errorR(Error(FSComp.SR.tcAbstractTypeCannotBeInstantiated(),m));
        

//-------------------------------------------------------------------------
// TcExprUndelayed
//------------------------------------------------------------------------- 

and TcExprUndelayedNoType cenv env tpenv expr : Expr * TType * _ =
    let exprty = NewInferenceType ()
    let expr',tpenv = TcExprUndelayed cenv exprty env tpenv expr
    expr',exprty,tpenv

and TcExprUndelayed cenv overallTy env tpenv (expr: SynExpr) =

    match expr with 
    | SynExpr.Paren (expr2,_,_,mWholeExprIncludingParentheses) -> 
        // We invoke CallExprHasTypeSink for every construct which is atomic in the syntax, i.e. where a '.' immediately following the 
        // construct is a dot-lookup for the result of the construct. 
        CallExprHasTypeSink cenv.tcSink (mWholeExprIncludingParentheses,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcExpr cenv overallTy env tpenv expr2

    | SynExpr.DotIndexedGet _ | SynExpr.DotIndexedSet _
    | SynExpr.TypeApp _ | SynExpr.Ident _ | SynExpr.LongIdent _ | SynExpr.App _ | SynExpr.DotGet _ -> error(Error(FSComp.SR.tcExprUndelayed(), expr.Range))

    | SynExpr.Const (SynConst.String (s,m),_) -> 
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcConstStringExpr cenv overallTy env m tpenv s

    | SynExpr.Const (c,m) -> 
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcConstExpr cenv overallTy env m tpenv c

    | SynExpr.Lambda _ -> TcIteratedLambdas cenv true env overallTy Set.empty tpenv expr

    | SynExpr.Match (spMatch,x,matches,isExnMatch,_m) ->

        let x',inputTy,tpenv = TcExprOfUnknownType cenv env tpenv x
        let mExpr = x'.Range
        let v,e, tpenv = TcAndPatternCompileMatchClauses mExpr mExpr (if isExnMatch then Throw else ThrowIncompleteMatchException) cenv inputTy overallTy env tpenv matches
        (mkLet spMatch mExpr v x'  e,tpenv)

    // (function[spMatch] pat1 -> expr1 ... | patN -> exprN)
    //
    //  -->   
    //      (fun anonArg -> let[spMatch] anonVal = anonArg in pat1 -> expr1 ... | patN -> exprN)
    //
    // Note the presence of the "let" is visible in quotations regardless of the presence of sequence points, so 
    //     <@ function x -> (x:int) @>
    // is
    //     Lambda (_arg2, Let (x, _arg2, x))
    
    | SynExpr.MatchLambda (isExnMatch,argm,clauses,spMatch,m) -> // (spMatch,x,matches,isExnMatch,m) ->

        let domainTy,resultTy = UnifyFunctionType None cenv env.DisplayEnv m overallTy
        let idv1,idve1 = mkCompGenLocal argm (cenv.synArgNameGenerator.New()) domainTy
        let envinner = ExitFamilyRegion env
        let idv2,matchExpr, tpenv = TcAndPatternCompileMatchClauses m argm (if isExnMatch then Throw else ThrowIncompleteMatchException) cenv domainTy resultTy envinner tpenv clauses
        let overallExpr = mkMultiLambda m [idv1] ((mkLet spMatch m idv2 idve1  matchExpr),resultTy)
        overallExpr,tpenv

    | SynExpr.Assert (x,m) ->
        TcAssertExpr cenv overallTy env m tpenv x

    // e : ty
    | SynExpr.Typed (e,cty,m) ->
        let tgty,tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType  env tpenv cty
        UnifyTypes cenv env m overallTy tgty;
        let e',tpenv = TcExpr cenv overallTy env tpenv e 
        e',tpenv

    // e :? ty
    | SynExpr.TypeTest (e,tgty,m) ->
        let e',srcTy,tpenv = TcExprOfUnknownType cenv env tpenv e 
        UnifyTypes cenv env m overallTy cenv.g.bool_ty;
        let tgty,tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType  env tpenv tgty
        TcRuntimeTypeTest (*isCast*)false cenv env.DisplayEnv m tgty srcTy;        
        let e' = mkCallTypeTest cenv.g m tgty  e'
        e', tpenv
    
    // SynExpr.AddressOf is noted in the syntax ast in order to recognize it as concrete type information 
    // during type checking, in particular prior to resolving overloads. This helps distinguish 
    // its use at method calls from the use of the conflicting 'ref' mechanism for passing byref parameters 
    | SynExpr.AddressOf(byref,e,opm,m) -> 
        TcExpr cenv overallTy env tpenv (mkSynPrefix opm m (if byref then "~&" else "~&&") e) 
        
    | SynExpr.Upcast (e,_,m) | SynExpr.InferredUpcast (e,m) -> 
        let e',srcTy,tpenv = TcExprOfUnknownType cenv env tpenv e 
        let tgty,tpenv = 
          match expr with
          | SynExpr.Upcast (_,tgty,m) -> 
              let tgty,tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tgty
              UnifyTypes cenv env m tgty overallTy;
              tgty,tpenv
          | SynExpr.InferredUpcast _ -> 
              overallTy,tpenv 
          | _ -> failwith "upcast"
        TcStaticUpcast cenv env.DisplayEnv m tgty srcTy;
        mkCoerceExpr(e',tgty,m,srcTy),tpenv

    | SynExpr.Downcast(e,_,m) | SynExpr.InferredDowncast (e,m) ->
        let e',srcTy,tpenv = TcExprOfUnknownType cenv env tpenv e 
        let tgty,tpenv = 
          match expr with
          | SynExpr.Downcast (_,tgty,m) -> 
              let tgty,tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tgty
              UnifyTypes cenv env m tgty overallTy;
              tgty,tpenv
          | SynExpr.InferredDowncast _ -> overallTy,tpenv 
          | _ -> failwith "downcast"
        TcRuntimeTypeTest (*isCast*)true cenv env.DisplayEnv m tgty srcTy;

        // TcRuntimeTypeTest ensures tgty is a nominal type. Hence we can insert a check here 
        // based on the nullness semantics of the nominal type. 
        let e' = mkCallUnbox cenv.g m tgty  e'
        e',tpenv

    | SynExpr.Null m ->
        AddCxTypeMustSupportNull env.DisplayEnv cenv.css m NoTrace overallTy;
        mkNull m overallTy,tpenv

    | SynExpr.Lazy (e,m) ->
        let ety = NewInferenceType ()
        UnifyTypes cenv env m overallTy (mkLazyTy cenv.g ety);
        let e',tpenv = TcExpr cenv ety env tpenv e 
        mkLazyDelayed cenv.g m ety (mkUnitDelayLambda cenv.g m e'), tpenv

    | SynExpr.Tuple (args,_,m) -> 
        let argtys = UnifyTupleType cenv env.DisplayEnv m overallTy args
        // No subsumption at tuple construction
        let flexes = argtys |> List.map (fun _ -> false)
        let args',tpenv = TcExprs cenv env m tpenv flexes argtys args
        mkTupled cenv.g m args' argtys, tpenv

    | SynExpr.ArrayOrList (isArray,args,m) -> 
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);

        let argty = NewInferenceType ()
        UnifyTypes cenv env m overallTy (if isArray then mkArrayType cenv.g argty else Tastops.mkListTy cenv.g argty);

        // Always allow subsumption if a nominal type is known prior to type checking any arguments
        let flex = not (isTyparTy cenv.g argty)
        let args',tpenv = List.mapFold (TcExprFlex cenv flex argty env) tpenv args
        
        let expr = 
            if isArray then Expr.Op(TOp.Array, [argty],args',m)
            else List.foldBack (mkCons cenv.g argty) args' (mkNil cenv.g m argty)
        expr,tpenv

    | SynExpr.New (superInit,synObjTy,arg,mNewExpr) -> 
        let objTy,tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.Use env tpenv synObjTy
        UnifyTypes cenv env mNewExpr overallTy objTy;        
        TcNewExpr cenv env tpenv objTy (Some synObjTy.Range) superInit arg mNewExpr

    | SynExpr.ObjExpr(objTy,argopt,binds,extraImpls,mNewExpr,m) ->
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcObjectExpr cenv overallTy env tpenv (objTy,argopt,binds,extraImpls,mNewExpr,m)
            
    | SynExpr.Record (inherits, optOrigExpr, flds, mWholeExpr) -> 
        CallExprHasTypeSink cenv.tcSink (mWholeExpr,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcRecdExpr cenv overallTy env tpenv (inherits,optOrigExpr,flds,mWholeExpr)

    | SynExpr.While (spWhile,e1,e2,m) ->
        UnifyTypes cenv env m overallTy cenv.g.unit_ty;
        let e1',tpenv = TcExpr cenv (cenv.g.bool_ty) env tpenv e1
        let e2',tpenv = TcStmt cenv env tpenv e2
        mkWhile cenv.g (spWhile,NoSpecialWhileLoopMarker,e1',e2',m),tpenv

    | SynExpr.For (spBind,id,start,dir,finish,body,m) ->
        UnifyTypes cenv env m overallTy cenv.g.unit_ty;
        let startExpr ,tpenv = TcExpr cenv (cenv.g.int_ty) env tpenv start
        let finishExpr,tpenv = TcExpr cenv (cenv.g.int_ty) env tpenv finish
        let idv,_ = mkLocal id.idRange  id.idText cenv.g.int_ty
        let envinner = AddLocalVal cenv.tcSink m idv env
        let bodyExpr,tpenv = TcStmt cenv envinner tpenv body
        mkFastForLoop  cenv.g (spBind,m,idv,startExpr,dir,finishExpr,bodyExpr), tpenv
        
    | SynExpr.ForEach (spBind, SeqExprOnly seqExprOnly, isFromSource, pat, enumExpr, body, m) ->
        assert isFromSource
        if seqExprOnly then warning (Error(FSComp.SR.tcExpressionRequiresSequence(),m));
        TcForEachExpr cenv overallTy env tpenv (pat,enumExpr,body,m,spBind)

    | SynExpr.CompExpr (isArrayOrList,isNotNakedRefCell,comp,m) ->
        let env = ExitFamilyRegion env
        if not isArrayOrList then 
            match comp with 
            | SynExpr.New _ -> 
                errorR(Error(FSComp.SR.tcInvalidObjectExpressionSyntaxForm(),m));
            | SimpleSemicolonSequence false _ -> 
                errorR(Error(FSComp.SR.tcInvalidObjectSequenceOrRecordExpression(),m));
            | _ -> 
                ()
        if not !isNotNakedRefCell && not cenv.g.compilingFslib then 
            error(Error(FSComp.SR.tcInvalidSequenceExpressionSyntaxForm(),m));
        
        TcComputationOrSequenceExpression cenv env overallTy m None tpenv comp
        
    | SynExpr.ArrayOrListOfSeqExpr (isArray,comp,m)  ->
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);

        
        match comp with 
        | SynExpr.CompExpr(_,_,(SimpleSemicolonSequence true elems as body),_) -> 
            match body with 
            | SimpleSemicolonSequence false _ -> 
                ()
            | _ -> 
                errorR(Deprecated(FSComp.SR.tcExpressionWithIfRequiresParenthesis(),m));

            let replacementExpr = 
                if isArray then 
                    // This are to improve parsing/processing speed for parser tables by converting to an array blob ASAP 
                    let nelems = elems.Length 
                    if nelems > 0 && List.forall (function SynExpr.Const(SynConst.UInt16 _,_) -> true | _ -> false) elems 
                    then SynExpr.Const (SynConst.UInt16s (Array.ofList (List.map (function SynExpr.Const(SynConst.UInt16 x,_) -> x | _ -> failwith "unreachable") elems)), m)
                    elif nelems > 0 && List.forall (function SynExpr.Const(SynConst.Byte _,_) -> true | _ -> false) elems 
                    then SynExpr.Const (SynConst.Bytes (Array.ofList (List.map (function SynExpr.Const(SynConst.Byte x,_) -> x | _ -> failwith "unreachable") elems), m), m)
                    else SynExpr.ArrayOrList(isArray, elems, m)
                else 
                    if elems.Length > 500 then 
                        error(Error(FSComp.SR.tcListLiteralMaxSize(),m));
                    SynExpr.ArrayOrList(isArray, elems, m)

            TcExprUndelayed cenv overallTy env tpenv replacementExpr
        | _ -> 
            let genCollElemTy = NewInferenceType ()
            let genCollTy =  (if isArray then mkArrayType else mkListTy) cenv.g genCollElemTy
            UnifyTypes cenv env m overallTy genCollTy;
            let exprty = NewInferenceType ()
            let genEnumTy =  mkSeqTy cenv.g genCollElemTy
            AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace genEnumTy exprty; 
            let expr,tpenv = TcExpr cenv exprty env tpenv comp
            let expr = mkCoerceIfNeeded cenv.g genEnumTy (tyOfExpr cenv.g expr) expr
            (if isArray then mkCallSeqToArray else mkCallSeqToList) cenv.g m genCollElemTy 
                // We add a call to 'seq ... ' to make sure sequence expression compilation gets applied to the contents of the
                // comprehension. But don't do this in FSharp.Core.dll since 'seq' may not yet be defined.
                ((if cenv.g.compilingFslib then id else mkCallSeq cenv.g m genCollElemTy)
                    (mkCoerceExpr(expr,genEnumTy,expr.Range,exprty))),tpenv

    | SynExpr.LetOrUse (isRec,isUse,binds,body,m) ->
        TcLinearLetExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy (fun x -> x) tpenv (true(*consume use bindings*),isRec,isUse,binds,body,m) 

    | SynExpr.TryWith (e1,_mTryToWith,clauses,mWithToLast,mTryToLast,spTry,spWith) ->
        let e1',tpenv = TcExpr cenv overallTy env tpenv e1
        // Compile the pattern twice, once as a List.filter with all succeeding targets returning "1", and once as a proper catch block. 
        let filterClauses = clauses |> List.map (function (Clause(pat,optWhenExpr,_,m,_)) -> Clause(pat,optWhenExpr,(SynExpr.Const(SynConst.Int32 1,m)),m,SuppressSequencePointAtTarget))
        let checkedFilterClauses, tpenv = TcMatchClauses cenv cenv.g.exn_ty cenv.g.int_ty env tpenv filterClauses
        let checkedHandlerClauses, tpenv = TcMatchClauses cenv cenv.g.exn_ty overallTy env tpenv clauses
        let v1,filter_expr = CompilePatternForMatchClauses cenv env mWithToLast mWithToLast true FailFilter cenv.g.exn_ty cenv.g.int_ty checkedFilterClauses
        let v2,handler_expr = CompilePatternForMatchClauses cenv env mWithToLast mWithToLast true Rethrow cenv.g.exn_ty overallTy checkedHandlerClauses
        mkTryWith cenv.g (e1',v1,filter_expr,v2,handler_expr,mTryToLast,overallTy,spTry,spWith),tpenv

    | SynExpr.TryFinally (e1,e2,mTryToLast,spTry,spFinally) ->
        let e1',tpenv = TcExpr cenv overallTy env tpenv e1
        let e2',tpenv = TcStmt cenv env tpenv e2
        mkTryFinally cenv.g (e1',e2',mTryToLast,overallTy,spTry,spFinally),tpenv

    | SynExpr.JoinIn(e1,mInToken,e2,mAll) -> 
        errorR(Error(FSComp.SR.parsUnfinishedExpression("in"),mInToken))
        let _,_,tpenv = suppressErrorReporting (fun () -> TcExprOfUnknownType cenv env tpenv e1)  
        let _,_,tpenv = suppressErrorReporting (fun () -> TcExprOfUnknownType cenv env tpenv e2)  
        mkDefault(mAll,overallTy), tpenv

    | SynExpr.ArbitraryAfterError(_debugStr, m) -> 
        //solveTypAsError cenv env.DisplayEnv m overallTy
        mkDefault(m,overallTy), tpenv

    | SynExpr.DiscardAfterMissingQualificationAfterDot (e1,m) ->
        // For some reason we use "UnknownType" for this one, it's not clear we need to.
        let _,_,tpenv = suppressErrorReporting (fun () -> TcExprOfUnknownType cenv env tpenv e1)
        //solveTypAsError cenv env.DisplayEnv m overallTy
        mkDefault(m,overallTy),tpenv

    | SynExpr.FromParseError (e1,m) -> 
        //solveTypAsError cenv env.DisplayEnv m overallTy
        let _,tpenv = suppressErrorReporting (fun () -> TcExpr cenv overallTy env tpenv e1)
        mkDefault(m,overallTy),tpenv

    | SynExpr.Sequential (sp,dir,e1,e2,m) ->
        if dir then 
            // Use continuations to cope with long linear sequences 
            let rec TcLinearSeqs expr cont = 
                match expr with 
                | SynExpr.Sequential (sp,true,e1,e2,m) ->
                  let e1',_ = TcStmtThatCantBeCtorBody cenv env tpenv e1
                  TcLinearSeqs e2 (fun (e2',tpenv) -> 
                      cont (Expr.Sequential(e1',e2',NormalSeq,sp,m),tpenv))

                | _ -> 
                  cont (TcExprThatCanBeCtorBody cenv overallTy env tpenv expr)
            TcLinearSeqs expr (fun res -> res)
        else 
            // Constructors using "new (...) =  then " 
            let e1',tpenv = TcExprThatCanBeCtorBody cenv overallTy env tpenv e1
            if (GetCtorShapeCounter env) <> 1 then 
                errorR(Error(FSComp.SR.tcExpressionFormRequiresObjectConstructor(),m));
            let e2',tpenv = TcStmtThatCantBeCtorBody cenv env tpenv e2
            Expr.Sequential(e1',e2',ThenDoSeq,sp,m),tpenv

    | SynExpr.Do (e1,m) ->
          UnifyTypes cenv env m overallTy cenv.g.unit_ty;
          TcStmtThatCantBeCtorBody cenv env tpenv e1

    | SynExpr.IfThenElse (e1,e2,e3opt,spIfToThen,isRecovery,mIfToThen,m) ->
        let e1',tpenv = TcExprThatCantBeCtorBody cenv cenv.g.bool_ty env tpenv e1  
        (if isNone e3opt && not isRecovery then UnifyTypes cenv env m overallTy cenv.g.unit_ty);
        let e2',tpenv = TcExprThatCanBeCtorBody cenv overallTy env tpenv e2
        let e3',sp2,tpenv = 
            match e3opt with 
            | None -> 
                mkUnit cenv.g mIfToThen,SuppressSequencePointAtTarget, tpenv // the fake 'unit' value gets exactly the same range as spIfToThen
            | Some e3 -> 
                let e3',tpenv = TcExprThatCanBeCtorBody cenv overallTy env tpenv e3 
                e3',SequencePointAtTarget,tpenv
        primMkCond spIfToThen SequencePointAtTarget sp2 m overallTy e1' e2' e3', tpenv

    // This is for internal use in the libraries only 
    | SynExpr.LibraryOnlyStaticOptimization (constraints,e2,e3,m) ->
        let constraints',tpenv = List.mapFold (TcStaticOptimizationConstraint cenv env) tpenv constraints
        // Do not force the types of the two expressions to be equal 
        // This means uses of this construct have to be very carefully written
        let e2',_, tpenv = TcExprOfUnknownType cenv env tpenv e2
        let e3',tpenv = TcExpr cenv overallTy env tpenv e3
        Expr.StaticOptimization(constraints',e2',e3',m), tpenv

    /// e1.longId <- e2
    | SynExpr.DotSet (e1,(LongIdentWithDots(longId,_) as lidwd),e2,mStmt) ->
        if lidwd.ThereIsAnExtraDotAtTheEnd then
            // just drop rhs on the floor
            let mExprAndDotLookup = unionRanges e1.Range (rangeOfLid longId)
            TcExprThen cenv overallTy env tpenv e1 [DelayedDotLookup(longId,mExprAndDotLookup)]
        else
            let mExprAndDotLookup = unionRanges e1.Range (rangeOfLid longId)
            TcExprThen cenv overallTy env tpenv e1 [DelayedDotLookup(longId,mExprAndDotLookup); MakeDelayedSet(e2,mStmt)]

    /// e1.longId(e2) <- e3, very rarely used named property setters
    | SynExpr.DotNamedIndexedPropertySet (e1,(LongIdentWithDots(longId,_) as lidwd),e2,e3,mStmt) ->
        if lidwd.ThereIsAnExtraDotAtTheEnd then
            // just drop rhs on the floor
            let mExprAndDotLookup = unionRanges e1.Range (rangeOfLid longId)
            TcExprThen cenv overallTy env tpenv e1 [DelayedDotLookup(longId,mExprAndDotLookup)]
        else
            let mExprAndDotLookup = unionRanges e1.Range (rangeOfLid longId)
            TcExprThen cenv overallTy env tpenv e1 [DelayedDotLookup(longId,mExprAndDotLookup); DelayedApp(ExprAtomicFlag.Atomic, e2, mStmt); MakeDelayedSet(e3,mStmt)]

    | SynExpr.LongIdentSet (lidwd,e2,m) -> 
        if lidwd.ThereIsAnExtraDotAtTheEnd then
            // just drop rhs on the floor
            TcLongIdentThen cenv overallTy env tpenv lidwd [ ]
        else
            TcLongIdentThen cenv overallTy env tpenv lidwd [ MakeDelayedSet(e2, m) ]
    
    // Type.Items(e1) <- e2 
    | SynExpr.NamedIndexedPropertySet (lidwd,e1,e2,mStmt) ->
        if lidwd.ThereIsAnExtraDotAtTheEnd then
            // just drop rhs on the floor
            TcLongIdentThen cenv overallTy env tpenv lidwd [ ]
        else
            TcLongIdentThen cenv overallTy env tpenv lidwd [ DelayedApp(ExprAtomicFlag.Atomic, e1, mStmt); MakeDelayedSet(e2,mStmt) ]

    | SynExpr.TraitCall(tps,memSpfn,arg,m) ->
        let (TTrait(_,logicalCompiledName,_,argtys,returnTy,_) as traitInfo),tpenv = TcPseudoMemberSpec cenv NewTyparsOK env tps  tpenv memSpfn m
        if List.mem logicalCompiledName BakedInTraitConstraintNames then 
            warning(BakedInMemberConstraintName(logicalCompiledName,m))
        
        let returnTy = GetFSharpViewOfReturnType cenv.g returnTy
        let args,namedCallerArgs = GetMethodArgs arg 
        if nonNil namedCallerArgs then errorR(Error(FSComp.SR.tcNamedArgumentsCannotBeUsedInMemberTraits(),m));
        // Subsumption at trait calls if arguments have nominal type prior to unification of any arguments or return type
        let flexes = argtys |> List.map (isTyparTy cenv.g >> not)
        let args',tpenv = TcExprs cenv env m tpenv flexes argtys args
        AddCxMethodConstraint env.DisplayEnv cenv.css m NoTrace traitInfo;
        UnifyTypes cenv env m overallTy returnTy;      
        Expr.Op(TOp.TraitCall(traitInfo), [], args', m), tpenv
          
    | SynExpr.LibraryOnlyUnionCaseFieldGet (e1,c,n,m) ->
        let e1',ty1,tpenv = TcExprOfUnknownType cenv env tpenv e1
        let mkf,ty2 = TcUnionCaseOrExnField cenv env ty1 m c n 
                          ((fun (a,b) n -> mkUnionCaseFieldGetUnproven(e1',a,b,n,m)),
                           (fun a n -> mkExnCaseFieldGet(e1',a,n,m)))
        UnifyTypes cenv env m overallTy ty2;
        mkf n,tpenv

    | SynExpr.LibraryOnlyUnionCaseFieldSet (e1,c,n,e2,m) ->
        UnifyTypes cenv env m overallTy cenv.g.unit_ty;
        let e1',ty1,tpenv = TcExprOfUnknownType cenv env tpenv e1
        let mkf,ty2 = TcUnionCaseOrExnField cenv  env ty1 m c n
                          ((fun (a,b) n e2' -> 
                             if not (isUnionCaseFieldMutable cenv.g a n) then errorR(Error(FSComp.SR.tcFieldIsNotMutable(),m));
                             mkUnionCaseFieldSet(e1',a,b,n,e2',m)),
                           (fun a n e2' -> 
                             if not (isExnFieldMutable a n) then errorR(Error(FSComp.SR.tcFieldIsNotMutable(),m));
                             mkExnCaseFieldSet(e1',a,n,e2',m)))
        let e2',tpenv = TcExpr cenv ty2 env tpenv e2
        mkf n e2',tpenv

    | SynExpr.LibraryOnlyILAssembly (s,tyargs,args,rtys,m) ->
        let argtys = NewInferenceTypes args
        let tyargs',tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tyargs
        // No subsumption at uses of IL assembly code
        let flexes = argtys |> List.map (fun _ -> false)
        let args',tpenv = TcExprs cenv env m tpenv flexes argtys args
        let rtys',tpenv = TcTypes cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv rtys
        let returnTy = 
            match rtys' with 
            | [] -> cenv.g.unit_ty
            | [ returnTy ] -> returnTy
            | _ -> error(InternalError("Only zero or one pushed items are permitted in IL assembly code",m))
        UnifyTypes cenv env m overallTy returnTy;
        mkAsmExpr(Array.toList s,tyargs',args',rtys',m),tpenv

    | SynExpr.Quote(oper,raw,ast,isFromQueryExpression,m) ->
        CallExprHasTypeSink cenv.tcSink (m,env.NameEnv,overallTy, env.DisplayEnv,env.eAccessRights);
        TcQuotationExpr cenv overallTy env tpenv (oper,raw,ast,isFromQueryExpression,m) 

    | SynExpr.YieldOrReturn ((isTrueYield,_),_,m)
    | SynExpr.YieldOrReturnFrom ((isTrueYield,_),_,m) when isTrueYield -> 
         error(Error(FSComp.SR.tcConstructRequiresListArrayOrSequence(),m))
    | SynExpr.YieldOrReturn ((_,isTrueReturn),_,m)
    | SynExpr.YieldOrReturnFrom ((_,isTrueReturn),_,m) when isTrueReturn -> 
         error(Error(FSComp.SR.tcConstructRequiresComputationExpressions(),m))
    | SynExpr.YieldOrReturn (_,_,m)
    | SynExpr.YieldOrReturnFrom (_,_,m) 
    | SynExpr.ImplicitZero m ->
         error(Error(FSComp.SR.tcConstructRequiresSequenceOrComputations(),m))
    | SynExpr.DoBang  (_,m) 
    | SynExpr.LetOrUseBang  (_,_,_,_,_,_,m) -> 
         error(Error(FSComp.SR.tcConstructRequiresComputationExpression(),m))

/// Check lambdas as a group, to catch duplicate names in patterns
and TcIteratedLambdas cenv isFirst (env: TcEnv) overallTy takenNames tpenv e = 
    match e with 
    | SynExpr.Lambda (isMember,isSubsequent,spats,bodyExpr,m) when isMember || isFirst || isSubsequent ->
        let domainTy,resultTy = UnifyFunctionType None cenv env.DisplayEnv m overallTy
        let vs, (tpenv,names,takenNames) = TcSimplePats cenv isMember CheckCxs domainTy env (tpenv,Map.empty,takenNames) spats
        let envinner,_,vspecMap = MakeAndPublishSimpleVals cenv env m names true
        let byrefs = vspecMap |> Map.map (fun _ v -> isByrefTy cenv.g v.Type, v)
        let envinner = if isMember then envinner else ExitFamilyRegion envinner
        let bodyExpr,tpenv = TcIteratedLambdas cenv false envinner resultTy takenNames tpenv bodyExpr
        // See bug 5758: Non-monontonicity in inference: need to ensure that parameters are never inferred to have byref type, instead it is always declared
        byrefs  |> Map.iter (fun _ (orig,v) -> 
            if not orig && isByrefTy cenv.g v.Type then errorR(Error(FSComp.SR.tcParameterInferredByref v.DisplayName,v.Range)))
        mkMultiLambda m (List.map (fun nm -> NameMap.find nm vspecMap) vs) (bodyExpr,resultTy),tpenv 
    | e -> 
        // Dive into the expression to check for syntax errors and suppress them if they show.
        conditionallySuppressErrorReporting (not isFirst && synExprContainsError e) (fun () ->
            TcExpr cenv overallTy env tpenv e)
        

// Check expr.[idx] 
// This is a little over complicated for my liking. Basically we want to intepret e1.[idx] as e1.Item(idx). 
// However it's not so simple as all that. First "Item" can have a different name according to an attribute in 
// .NET metadata.  This means we manually typecheck 'e1' and look to see if it has a nominal type. We then 
// do the right thing in each case. 
and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArgs delayed = 
    let ad = env.eAccessRights
    let e1',e1ty,tpenv = TcExprOfUnknownType cenv env tpenv e1
    
    // Find the first type in the effective hierarchy that either has a DefaultMember attribute OR 
    // has a member called 'Item' 
    let propName = 
        match indexArgs with 
        | [_] -> 
            FoldPrimaryHierarchyOfType (fun typ acc -> 
                match acc with
                | None ->
                    let isNominal = isAppTy cenv.g typ
                    if isNominal then 
                        let tcref = tcrefOfAppTy cenv.g typ
                        TryFindTyconRefStringAttribute cenv.g mWholeExpr cenv.g.attrib_DefaultMemberAttribute tcref 

                     else
                        match AllPropInfosOfTypeInScope cenv.infoReader env.NameEnv.eExtensionMembers (Some("Item"), ad) IgnoreOverrides mWholeExpr typ with
                        | [] -> None
                        | _ -> Some "Item"
                 | _ -> acc)
              cenv.g 
              cenv.amap 
              mWholeExpr 
              AllowMultiIntfInstantiations.No
              e1ty
              None
        | _ -> Some "GetSlice"

    let isNominal = isAppTy cenv.g e1ty
    
    let isArray = isArrayTy cenv.g e1ty 
    let isString = typeEquiv cenv.g cenv.g.string_ty e1ty 

    let idxRange = indexArgs |> List.map (fun e -> e.Range) |> List.reduce unionRanges 
    let MakeIndexParam vopt = 
        match indexArgs @ Option.toList vopt with 
        | []  -> failwith "unexpected empty index list"
        | [h] -> SynExpr.Paren(h,range0,None,idxRange)
        | es -> SynExpr.Paren(SynExpr.Tuple(es,[],idxRange),range0,None,idxRange)

    if isArray || isString then 

        let indexOpPath = ["Microsoft";"FSharp";"Core";"LanguagePrimitives";"IntrinsicFunctions"]
        let sliceOpPath = ["Microsoft";"FSharp";"Core";"Operators";"OperatorIntrinsics"]
        let path,fnm,indexArgs = 
            match isString,isArray,wholeExpr with 
            | false,true,SynExpr.DotIndexedGet(_,[SynExpr.Tuple ([_;_] as idxs,_,_)],_,_)         -> indexOpPath,"GetArray2D", idxs
            | false,true,SynExpr.DotIndexedGet(_,[SynExpr.Tuple ([_;_;_] as idxs,_,_)],_,_)       -> indexOpPath,"GetArray3D", idxs
            | false,true,SynExpr.DotIndexedGet(_,[SynExpr.Tuple ([_;_;_;_] as idxs,_,_)],_,_)     -> indexOpPath,"GetArray4D", idxs
            | false,true,SynExpr.DotIndexedGet(_,[_],_,_)                                         -> indexOpPath,"GetArray", indexArgs
            | false,true,SynExpr.DotIndexedSet(_,[SynExpr.Tuple ([_;_] as idxs,_,_)] ,e3,_,_,_)     -> indexOpPath,"SetArray2D", (idxs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[SynExpr.Tuple ([_;_;_] as idxs,_,_)] ,e3,_,_,_)   -> indexOpPath,"SetArray3D", (idxs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[SynExpr.Tuple ([_;_;_;_] as idxs,_,_)] ,e3,_,_,_) -> indexOpPath,"SetArray4D", (idxs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[_],e3,_,_,_)                        -> indexOpPath,"SetArray", (indexArgs @ [e3])
            | true,false,SynExpr.DotIndexedGet(_,[_;_],_,_)                -> sliceOpPath,"GetStringSlice", indexArgs
            | true,false,SynExpr.DotIndexedGet(_,[_],_,_)                  -> indexOpPath,"GetString", indexArgs
            | false,true,SynExpr.DotIndexedGet(_,[_;_],_,_)                -> sliceOpPath,"GetArraySlice", indexArgs
            | false,true,SynExpr.DotIndexedGet(_,[_;_;_;_],_,_)            -> sliceOpPath,"GetArraySlice2D", indexArgs
            | false,true,SynExpr.DotIndexedGet(_,[_;_;_;_;_;_],_,_)        -> sliceOpPath,"GetArraySlice3D", indexArgs
            | false,true,SynExpr.DotIndexedGet(_,[_;_;_;_;_;_;_;_],_,_)    -> sliceOpPath,"GetArraySlice4D", indexArgs
            | false,true,SynExpr.DotIndexedSet(_,[_;_],e3,_,_,_)             -> sliceOpPath,"SetArraySlice", (indexArgs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[_;_;_;_],e3,_,_,_)         -> sliceOpPath,"SetArraySlice2D", (indexArgs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[_;_;_;_;_;_],e3,_,_,_)     -> sliceOpPath,"SetArraySlice3D", (indexArgs @ [e3])
            | false,true,SynExpr.DotIndexedSet(_,[_;_;_;_;_;_;_;_],e3,_,_,_) -> sliceOpPath,"SetArraySlice4D", (indexArgs @ [e3])
            | _ -> error(Error(FSComp.SR.tcInvalidIndexerExpression(),mWholeExpr))
        let operPath = (mkSynLidGet mDot path (CompileOpName fnm))
        let f,fty,tpenv = TcExprOfUnknownType cenv env tpenv operPath
        let domainTy,resultTy = UnifyFunctionType (Some mWholeExpr) cenv env.DisplayEnv mWholeExpr fty
        UnifyTypes cenv env mWholeExpr domainTy e1ty; 
        let f' = buildApp cenv (MakeApplicableExprNoFlex cenv f) fty e1' mWholeExpr
        let delayed = List.foldBack (fun idx acc -> DelayedApp(ExprAtomicFlag.Atomic,idx,mWholeExpr) :: acc) indexArgs delayed // atomic, otherwise no ar.[1] <- xyz
        PropagateThenTcDelayed cenv overallTy env tpenv mWholeExpr f' resultTy ExprAtomicFlag.Atomic delayed 

    elif (isNominal || isSome propName) then 

        let nm = 
            match propName with 
            | None -> "Item"
            | Some nm -> nm
        let delayed = 
            match wholeExpr with 
            // e1.[e2] 
            | SynExpr.DotIndexedGet _ -> 
                DelayedDotLookup([ident(nm,mWholeExpr)],mWholeExpr) :: DelayedApp(ExprAtomicFlag.Atomic,MakeIndexParam None,mWholeExpr) :: delayed
            // e1.[e2] <- e3
            | SynExpr.DotIndexedSet(_,_,e3,mOfLeftOfSet,_,_) -> 
                match indexArgs with 
                | [_] -> DelayedDotLookup([ident(nm,mOfLeftOfSet)],mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic,MakeIndexParam None,mOfLeftOfSet) :: MakeDelayedSet(e3,mWholeExpr) :: delayed
                | _ -> DelayedDotLookup([ident("SetSlice",mOfLeftOfSet)],mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic,MakeIndexParam (Some e3),mWholeExpr) :: delayed
                
            | _ -> error(InternalError("unreachable",mWholeExpr))
        PropagateThenTcDelayed cenv overallTy env tpenv mDot (MakeApplicableExprNoFlex cenv e1') e1ty ExprAtomicFlag.Atomic delayed 

    else 
        // deprecated constrained lookup 
        error(Error(FSComp.SR.tcObjectOfIndeterminateTypeUsedRequireTypeConstraint(),mWholeExpr));


/// Check a 'new Type(args)' expression, also an 'inheritedTys declaration in an implicit or explicit class 
/// For 'new Type(args)', mWholeExprOrObjTy is the whole expression
/// For 'inherit Type(args)', mWholeExprOrObjTy is the whole expression
/// For an implicit inherit from System.Object or a default constructor, mWholeExprOrObjTy is the type name of the type being defined
and TcNewExpr cenv env tpenv objTy mObjTyOpt superInit arg mWholeExprOrObjTy =
    let ad = env.eAccessRights
    // Handle the case 'new 'a()' 
    if (isTyparTy cenv.g objTy) then 
        if superInit then error(Error(FSComp.SR.tcCannotInheritFromVariableType(),mWholeExprOrObjTy));
        AddCxTypeMustSupportDefaultCtor env.DisplayEnv cenv.css mWholeExprOrObjTy NoTrace objTy;
        
        match arg with 
        | SynExpr.Const (SynConst.Unit,_) -> ()
        | _ -> errorR(Error(FSComp.SR.tcObjectConstructorsOnTypeParametersCannotTakeArguments(),mWholeExprOrObjTy))
        
        mkCallCreateInstance cenv.g mWholeExprOrObjTy objTy ,tpenv
    else 
        if not (isAppTy cenv.g objTy) then error(Error(FSComp.SR.tcNamedTypeRequired(if superInit then "inherit" else "new"),mWholeExprOrObjTy));
        let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mWholeExprOrObjTy ad objTy)
        
        TcCtorCall false cenv env tpenv objTy objTy mObjTyOpt item superInit arg mWholeExprOrObjTy [] None

/// Check an 'inheritedTys declaration in an implicit or explicit class 
and TcCtorCall isNaked cenv env tpenv overallTy objTy mObjTyOpt item superInit arg mWholeCall delayed afterTcOverloadResolutionOpt =
    let ad = env.eAccessRights
    let isSuperInit = (if superInit then CtorValUsedAsSuperInit else NormalValUse)
    let mItem = match mObjTyOpt with Some m -> m | None -> mWholeCall

    if isInterfaceTy cenv.g objTy then 
        error(Error((if superInit then FSComp.SR.tcInheritCannotBeUsedOnInterfaceType() else FSComp.SR.tcNewCannotBeUsedOnInterfaceType()),mWholeCall));

    match item with 
    | Item.CtorGroup(methodName,minfos) ->
        let meths = List.map (fun minfo -> minfo,None) minfos
        if isNaked && TypeFeasiblySubsumesType 0 cenv.g cenv.amap mWholeCall cenv.g.system_IDisposable_typ NoCoerce objTy then
            warning(Error(FSComp.SR.tcIDisposableTypeShouldUseNew(),mWholeCall));

        // Check the type is not abstract
        // skip this check if this ctor call is either 'inherit(...)' or call is located within constructor shape
        if not (superInit || AreWithinCtorShape env)
            then CheckSuperInit cenv objTy mWholeCall

        let afterTcOverloadResolution =
            match mObjTyOpt,afterTcOverloadResolutionOpt with
            |   _,Some action -> action
            |   Some mObjTy,None -> AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env mObjTy methodName minfos 
            |   None, _ -> AfterTcOverloadResolution.DoNothing

        TcMethodApplicationThen cenv env overallTy tpenv None [] mWholeCall mItem methodName ad PossiblyMutates false meths afterTcOverloadResolution isSuperInit [arg] ExprAtomicFlag.NonAtomic delayed 

    | Item.DelegateCtor typ ->
        // Re-record the name resolution since we now know it's a constructor call
        match mObjTyOpt with 
        | Some mObjTy -> CallNameResolutionSink cenv.tcSink (mObjTy,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
        | None -> ()
        TcNewDelegateThen cenv objTy env tpenv mItem mWholeCall typ arg ExprAtomicFlag.NonAtomic delayed

    | _ -> 
        error(Error(FSComp.SR.tcSyntaxCanOnlyBeUsedToCreateObjectTypes(if superInit then "inherit" else "new"),mWholeCall))


//-------------------------------------------------------------------------
// TcRecordConstruction
//------------------------------------------------------------------------- 
  
// Check a record consutrction expression 
and TcRecordConstruction cenv overallTy env tpenv optOrigExpr objTy fldsList m =
    let tcref = tcrefOfAppTy cenv.g objTy
    let tycon = tcref.Deref
    let tinst = argsOfAppTy cenv.g objTy
    UnifyTypes cenv env m overallTy objTy;

    // Types with implicit constructors can't use record or object syntax: all constructions must go through the implicit constructor 
    if tycon.MembersOfFSharpTyconByName |> NameMultiMap.existsInRange (fun v -> v.IsIncrClassConstructor) then 
        errorR(Error(FSComp.SR.tcConstructorRequiresCall(tycon.DisplayName),m));
                
    let fspecs = tycon.TrueInstanceFieldsAsList
    // Freshen types and work out their subtype flexibility
    let fldsList = 
        [ for (fname, fexpr) in fldsList do 
              let fspec = 
                  try  
                      fspecs |> List.find (fun fspec -> fspec.Name = fname) 
                  with :? KeyNotFoundException -> 
                      error (Error(FSComp.SR.tcUndefinedField(fname, NicePrint.minimalStringOfType env.DisplayEnv objTy),m))
              let fty = actualTyOfRecdFieldForTycon tycon tinst fspec
              let flex = not (isTyparTy cenv.g fty)
              yield (fname,fexpr,fty,flex) ]

    // Type check and generalize the supplied bindings 
    let fldsList,tpenv = 
        (tpenv,fldsList) ||> List.mapFold (fun tpenv (fname,fexpr,fty,flex) -> 
              let fieldExpr,tpenv = TcExprFlex cenv flex fty env tpenv fexpr
              (fname,fieldExpr),tpenv)
              
    // Add rebindings for unbound field when an "old value" is available 
    let oldFldsList = 
        match optOrigExpr with
        | None -> []
        | Some (_,_,oldve') -> 
               // When we have an "old" value, append bindings for the unbound fields. 
               // Effect order - mutable fields may get modified by other bindings... 
               let fieldNameUnbound nom = List.forall (fun (name,_) -> name <> nom) fldsList
               fspecs 
               |> List.filter (fun rfld -> rfld.Name |> fieldNameUnbound)
               |> List.filter (fun f -> not f.IsZeroInit)
               |> List.map (fun fspec ->fspec.Name, mkRecdFieldGet cenv.g (oldve',mkNestedRecdFieldRef tcref fspec,tinst,m))

    let fldsList = fldsList @ oldFldsList

    // From now on only interested in fspecs that truly need values. 
    let fspecs = fspecs |> List.filter (fun f -> not f.IsZeroInit)
    
    // Check all fields are bound
    fspecs |> List.iter (fun fspec ->
      if not (fldsList |> List.exists (fun (fname,_) -> fname = fspec.Name)) then
        error(Error(FSComp.SR.tcFieldRequiresAssignment(fspec.rfield_id.idText, fullDisplayTextOfTyconRef tcref),m)));

    // Other checks (overlap with above check now clear)
    let ns1 = NameSet.ofList (List.map fst fldsList)
    let ns2 = NameSet.ofList (List.map (fun x -> x.rfield_id.idText) fspecs)
    
    if isNone optOrigExpr && not (Zset.subset ns2 ns1) then
        error (MissingFields(Zset.elements (Zset.diff ns2 ns1),m))
    
    if  not (Zset.subset ns1 ns2) then 
        error (Error(FSComp.SR.tcExtraneousFieldsGivenValues(),m))
    
    // Build record 
    let rfrefs = List.map (fst >> mkRecdFieldRef tcref) fldsList

    // Check accessibility: this is also done in BuildFieldMap, but also need to check 
    // for fields in { new R with a=1 and b=2 } constructions and { r with a=1 }  copy-and-update expressions 
    rfrefs |> List.iter (fun rfref -> 
        CheckRecdFieldAccessible m env.eAccessRights rfref |> ignore;
        CheckFSharpAttributes cenv.g rfref.PropertyAttribs m |> CommitOperationResult);        

    let args   = List.map snd fldsList
    
    let expr = mkRecordExpr cenv.g (GetRecdInfo env, tcref, tinst, rfrefs, args, m)

    let expr = 
      match optOrigExpr with 
      | None ->
          // '{ recd fields }'. //
          expr
          
      | Some (old',oldv',_) -> 
          // '{ recd with fields }'. 
          // Assign the first object to a tmp and then construct 
          mkCompGenLet m oldv' old' expr

    expr, tpenv

//-------------------------------------------------------------------------
// TcObjectExpr
//------------------------------------------------------------------------- 

and GetNameAndArityOfObjExprBinding _cenv _env b =
    let (NormalizedBinding (_,_,_,_,_,_,_,valSynData,pat,rhsExpr,mBinding,_)) = b
    let (SynValData(memberFlagsOpt,valSynInfo,_)) = valSynData 
    match pat,memberFlagsOpt with 

    // This is the normal case for F# 'with member x.M(...) = ...'
    | SynPat.InstanceMember(_thisId,memberId,_,None,_),Some memberFlags ->
         let logicalMethId = ident (ComputeLogicalName memberId memberFlags,memberId.idRange)
         logicalMethId.idText,valSynInfo

    | _ -> 
        // This is for the deprecated form 'with M(...) = ...'
        let rec lookPat pat =
            match pat with 
            | SynPat.Typed(pat,_,_) -> lookPat pat
            | SynPat.FromParseError(pat,_) -> lookPat pat
            | SynPat.Named (SynPat.Wild _, id,_,None,_) -> 
                let (NormalizedBindingRhs(pushedPats,_,_)) = rhsExpr
                let infosForExplicitArgs = pushedPats |> List.map SynInfo.InferSynArgInfoFromSimplePats
                let infosForExplicitArgs = SynInfo.AdjustMemberArgs MemberKind.Member infosForExplicitArgs
                let infosForExplicitArgs = SynInfo.AdjustArgsForUnitElimination infosForExplicitArgs 
                let argInfos = [SynInfo.selfMetadata] @ infosForExplicitArgs
                let retInfo = SynInfo.unnamedRetVal //SynInfo.InferSynReturnData pushedRetInfoOpt
                let valSynData = SynValInfo(argInfos,retInfo)
                (id.idText,valSynData)
            | _ -> error(Error(FSComp.SR.tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual(),mBinding)); 

        lookPat pat


and FreshenObjExprAbstractSlot cenv (_env: TcEnv) implty virtNameAndArityPairs (bind,bindAttribs,bindName,absSlots:(_ * MethInfo) list) = 
    let (NormalizedBinding (_,_,_,_,_,_,synTyparDecls,_,_,_,mBinding,_)) = bind 
    match absSlots with 
    | [] when not (CompileAsEvent cenv.g bindAttribs) -> 
        let absSlotsByName = List.filter (fst >> fst >> (=) bindName) virtNameAndArityPairs
        
        match absSlotsByName with 
        | []              -> errorR(Error(FSComp.SR.tcNoAbstractOrVirtualMemberFound(bindName),mBinding));
        | [(_,absSlot:MethInfo)]     -> errorR(Error(FSComp.SR.tcArgumentArityMismatch(bindName, (List.sum absSlot.NumArgs)),mBinding));
        | (_,absSlot:MethInfo) :: _  -> errorR(Error(FSComp.SR.tcArgumentArityMismatchOneOverload(bindName, (List.sum absSlot.NumArgs)),mBinding));
        
        None
        
    | [(_,absSlot)] -> 
        
        let typarsFromAbsSlotAreRigid,typarsFromAbsSlot,argTysFromAbsSlot, retTyFromAbsSlot
           = FreshenAbstractSlot cenv.g cenv.amap mBinding synTyparDecls absSlot

        // Work out the required type of the member 
        let bindingTy = implty --> (mkMethodTy cenv.g argTysFromAbsSlot retTyFromAbsSlot) 
        
        Some(typarsFromAbsSlotAreRigid,typarsFromAbsSlot,bindingTy)
        
    | _ -> //(_,absSlot1) :: (_,absSlot2) :: _ -> 
        //warning(NonUniqueInferredAbstractSlot(cenv.g,env.DisplayEnv, bindName, absSlot1, absSlot2,mBinding));
        //fail()
        None


and TcObjectExprBinding cenv (env: TcEnv) implty tpenv (absSlotInfo,bind) =
    // 4a1. normalize the binding (note: needlessly repeating what we've done above) 
    let (NormalizedBinding(vis,bkind,isInline,isMutable,attrs,doc,synTyparDecls,valSynData,p,bindingRhs,mBinding,spBind)) = bind
    let (SynValData(memberFlagsOpt,_,_)) = valSynData 
    // 4a2. adjust the binding, especially in the "member" case, a subset of the logic of AnalyzeAndMakeRecursiveValue 
    let bindingRhs,logicalMethId,memberFlags = 
        let rec lookPat p = 
            match p,memberFlagsOpt with  
            | SynPat.FromParseError(pat,_),_ -> lookPat pat
            | SynPat.Named (SynPat.Wild _, id,_,_,_),None -> 
                let bindingRhs = PushOnePatternToRhs cenv true (mkSynThisPatVar (ident (CompilerGeneratedName "this",id.idRange))) bindingRhs 
                let logicalMethId = id
                let memberFlags = OverrideMemberFlags MemberKind.Member
                bindingRhs,logicalMethId,memberFlags

            | SynPat.InstanceMember(thisId,memberId,_,_,_),Some memberFlags -> 
                CheckMemberFlags cenv.g None  NewSlotsOK OverridesOK memberFlags mBinding;
                let bindingRhs = PushOnePatternToRhs cenv true (mkSynThisPatVar thisId) bindingRhs
                let logicalMethId = ident (ComputeLogicalName memberId memberFlags,memberId.idRange)
                bindingRhs,logicalMethId,memberFlags
            | _ -> 
                error(InternalError("unexpected member binding",mBinding))
        lookPat p
    let bind = NormalizedBinding (vis,bkind,isInline,isMutable,attrs,doc,synTyparDecls,valSynData,mkSynPatVar vis logicalMethId,bindingRhs,mBinding,spBind) 
    
    // 4b. typecheck the binding 
    let bindingTy = 
        match absSlotInfo with
        | Some(_,_,memberTyFromAbsSlot) -> 
            memberTyFromAbsSlot
        | _ -> 
            implty --> NewInferenceType ()

    let (CheckedBindingInfo(inlineFlag,immut,bindingAttribs,_,_,ExplicitTyparInfo(_,declaredTypars,_),nameToPrelimValSchemeMap,rhsExpr,_,_,m,_,_,_),tpenv) = 
        let flex, tpenv = TcNonrecBindingTyparDecls cenv env tpenv bind
        TcNormalizedBinding ObjectExpressionOverrideBinding cenv env tpenv bindingTy None NoSafeInitInfo ([],flex) bind

    // 4c. generalize the binding - only relevant when implementing a generic virtual method 
    
    match NameMap.range nameToPrelimValSchemeMap with 
    | [PrelimValScheme1(id,_,_,_,_,_,_,_,_,_,_)] -> 
        let denv = env.DisplayEnv

        let declaredTypars = 
            match absSlotInfo with
            | Some(typarsFromAbsSlotAreRigid,typarsFromAbsSlot,_) -> 
                if typarsFromAbsSlotAreRigid then typarsFromAbsSlot else declaredTypars
            | _ -> 
                declaredTypars
        // Canonicalize constraints prior to generalization 
        GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,denv,m) declaredTypars;

        let freeInEnv = GeneralizationHelpers.ComputeUngeneralizableTypars env

        let generalizedTypars = GeneralizationHelpers.ComputeAndGeneralizeGenericTypars(cenv,denv,m,immut,freeInEnv,false,CanGeneralizeConstrainedTypars,inlineFlag,Some(rhsExpr),declaredTypars,[],bindingTy,false)
        let declaredTypars = ChooseCanonicalDeclaredTyparsAfterInference cenv.g  env.DisplayEnv declaredTypars m

        let generalizedTypars = PlaceTyparsInDeclarationOrder declaredTypars generalizedTypars  

        (id,memberFlags,(generalizedTypars +-> bindingTy),bindingAttribs,rhsExpr),tpenv
    | _ -> 
        error(Error(FSComp.SR.tcSimpleMethodNameRequired(),m))
    
and ComputeObjectExprOverrides cenv (env: TcEnv) tpenv impls =

    // Compute the method sets each implemented type needs to implement
    let slotImplSets = DispatchSlotChecking.GetSlotImplSets cenv.infoReader env.DisplayEnv true (impls |> List.map (fun (m,ty,_) -> ty,m))

    let allImpls = 
        (impls,slotImplSets) ||>  List.map2 (fun (m,ty,binds) implTySet -> 
            let binds = binds |> List.map (BindingNormalization.NormalizeBinding ObjExprBinding cenv env)
            m, ty,binds,implTySet) 

    let overridesAndVirts,tpenv = 
        (tpenv,allImpls) ||>  List.mapFold (fun tpenv (m,implty,binds, SlotImplSet(reqdSlots,dispatchSlotsKeyed,availPriorOverrides,_) ) ->
                
            // Generate extra bindings fo object expressions with bindings using the CLIEvent attribute
            let binds, bindsAttributes = 
               [ for binding in binds do
                     let (NormalizedBinding(_,_,_,_,bindingSynAttribs,_,_,valSynData,_,_,_,_)) = binding
                     let (SynValData(memberFlagsOpt,_,_)) = valSynData 
                     let attrTgt = DeclKind.AllowedAttribTargets memberFlagsOpt ObjectExpressionOverrideBinding
                     let bindingAttribs = TcAttributes cenv env attrTgt bindingSynAttribs
                     yield binding, bindingAttribs
                     for extraBinding in EventDeclarationNormalization.GenerateExtraBindings cenv (bindingAttribs, binding) do
                         yield extraBinding, [] ]
               |> List.unzip
                    
            // 2. collect all name/arity of all overrides 
            let dispatchSlots = reqdSlots |> List.map (fun (RequiredSlot(dispatchSlot,_)) -> dispatchSlot)
            let virtNameAndArityPairs = dispatchSlots |> List.map (fun virt -> 
                let vkey = (virt.LogicalName,virt.NumArgs) 
                //dprintfn "vkey = %A" vkey
                (vkey,virt)) 
            let bindNameAndSynInfoPairs = binds |> List.map (GetNameAndArityOfObjExprBinding cenv env) 
            let bindNames = bindNameAndSynInfoPairs |> List.map fst
            let bindKeys = 
                bindNameAndSynInfoPairs |> List.map (fun (name,valSynData) -> 
                    // Compute the argument counts of the member arguments
                    let argCounts = (SynInfo.AritiesOfArgs valSynData).Tail
                    //dprintfn "name = %A, argCounts = %A" name argCounts
                    (name,argCounts))

            // 3. infer must-have types by name/arity 
            let preAssignedVirtsPerBinding = 
                bindKeys |> List.map (fun bkey  -> List.filter (fst >> (=) bkey) virtNameAndArityPairs) 

            let absSlotInfo = 
               (List.zip4 binds bindsAttributes bindNames preAssignedVirtsPerBinding)  
               |> List.map (FreshenObjExprAbstractSlot cenv env implty virtNameAndArityPairs)

            // 4. typecheck/typeinfer/generalizer overrides using this information 
            let overrides,tpenv = (tpenv,List.zip absSlotInfo binds) ||> List.mapFold (TcObjectExprBinding cenv env implty)

            // Convert the syntactic info to actual info 
            let overrides = 
                (overrides,bindNameAndSynInfoPairs) ||> List.map2 (fun (id:Ident,memberFlags,ty,bindingAttribs,bindingBody) (_,valSynData) -> 
                    let partialValInfo = TranslateTopValSynInfo id.idRange (TcAttributes cenv env) valSynData
                    let tps,_ = tryDestForallTy cenv.g ty
                    let valInfo = TranslatePartialArity tps partialValInfo
                    DispatchSlotChecking.GetObjectExprOverrideInfo cenv.g cenv.amap (implty,id,memberFlags,ty,valInfo,bindingAttribs,bindingBody))

            (m,implty,reqdSlots,dispatchSlotsKeyed,availPriorOverrides,overrides),tpenv)

    overridesAndVirts,tpenv

and CheckSuperType cenv typ m = 
    if typeEquiv cenv.g typ cenv.g.system_Value_typ ||
       typeEquiv cenv.g typ cenv.g.system_Enum_typ ||
       typeEquiv cenv.g typ cenv.g.system_Array_typ ||
       typeEquiv cenv.g typ cenv.g.system_MulticastDelegate_typ ||
       typeEquiv cenv.g typ cenv.g.system_Delegate_typ then 
         error(Error(FSComp.SR.tcPredefinedTypeCannotBeUsedAsSuperType(),m));
    if isErasedType cenv.g typ then
        errorR(Error(FSComp.SR.tcCannotInheritFromErasedType(),m))
       
   
and TcObjectExpr cenv overallTy env tpenv (synObjTy,argopt,binds,extraImpls,mNewExpr,mWholeExpr) = 
    let mObjTy = synObjTy.Range

    let objTy,tpenv = TcType cenv NewTyparsOK  CheckCxs ItemOccurence.UseInType  env tpenv synObjTy
    if not (isAppTy cenv.g objTy) then error(Error(FSComp.SR.tcNewMustBeUsedWithNamedType(),mNewExpr));
    if not (isRecdTy cenv.g objTy) && not (isInterfaceTy cenv.g objTy) && isSealedTy cenv.g objTy then errorR(Error(FSComp.SR.tcCannotCreateExtensionOfSealedType(),mNewExpr));
    
    CheckSuperType cenv objTy synObjTy.Range; 

    // Add the object type to the ungeneralizable items 
    let env = {env with eUngeneralizableItems =  addFreeItemOfTy objTy env.eUngeneralizableItems;   } 
       
    // Object expression members can access protected members of the implemented type 
    let env = EnterFamilyRegion (tcrefOfAppTy cenv.g objTy) env
    let ad = env.eAccessRights
    
    if // record construction ?
       (isRecdTy cenv.g objTy) || 
       // object construction?
       (isFSharpObjModelTy cenv.g objTy && not (isInterfaceTy cenv.g objTy) && isNone argopt) then  

        if isSome argopt then error(Error(FSComp.SR.tcNoArgumentsForRecordValue(),mWholeExpr));
        if nonNil extraImpls then error(Error(FSComp.SR.tcNoInterfaceImplementationForConstructionExpression(),mNewExpr));
        if isFSharpObjModelTy cenv.g objTy && GetCtorShapeCounter env <> 1 then 
            error(Error(FSComp.SR.tcObjectConstructionCanOnlyBeUsedInClassTypes(),mNewExpr));
        let fldsList = 
            binds |> List.map (fun b -> 
                match BindingNormalization.NormalizeBinding ObjExprBinding cenv env b with 
                | NormalizedBinding (_,_,_,_,[],_,_,_,SynPat.Named(SynPat.Wild _, id,_,_,_),NormalizedBindingRhs(_,_,rhsExpr),_,_) -> id.idText,rhsExpr
                | _ -> error(Error(FSComp.SR.tcOnlySimpleBindingsCanBeUsedInConstructionExpressions(),b.RangeOfBindingSansRhs)))
        
        TcRecordConstruction cenv overallTy env tpenv None objTy fldsList mWholeExpr
    else
        let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mObjTy ad objTy)

        if isFSharpObjModelTy cenv.g objTy && GetCtorShapeCounter env = 1 then 
            error(Error(FSComp.SR.tcObjectsMustBeInitializedWithObjectExpression(),mNewExpr));

      // Work out the type of any interfaces to implement 
        let extraImpls,tpenv = 
          (tpenv , extraImpls) ||> List.mapFold (fun tpenv (InterfaceImpl(synIntfTy,overrides,m)) -> 
              let intfTy,tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv synIntfTy
              if not (isInterfaceTy cenv.g intfTy) then
                error(Error(FSComp.SR.tcExpectedInterfaceType(),m));
              if isErasedType cenv.g intfTy then
                  errorR(Error(FSComp.SR.tcCannotInheritFromErasedType(),m))
              (m,intfTy,overrides),tpenv)

        let realObjTy = (if isObjTy cenv.g objTy && nonNil extraImpls then (p23 (List.head extraImpls)) else objTy)
        UnifyTypes cenv env mWholeExpr overallTy realObjTy;

        let ctorCall,baseIdOpt,tpenv =
            match item,argopt with 
            | Item.CtorGroup(methodName,minfos),Some (arg,baseIdOpt) -> 
                let meths = minfos |> List.map (fun minfo -> minfo,None) 
                let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env synObjTy.Range methodName minfos
                let ad = env.eAccessRights

                let expr,tpenv = TcMethodApplicationThen cenv env objTy tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterTcOverloadResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic [] 
                // The 'base' value is always bound
                let baseIdOpt = (match baseIdOpt with None -> Some(ident("base",mObjTy)) | Some id -> Some(id))
                expr,baseIdOpt,tpenv
            | Item.FakeInterfaceCtor intfTy,None -> 
                UnifyTypes cenv env mWholeExpr objTy intfTy;
                let expr = BuildObjCtorCall cenv.g mWholeExpr
                expr,None,tpenv
            | Item.FakeInterfaceCtor _,Some _ -> 
                error(Error(FSComp.SR.tcConstructorForInterfacesDoNotTakeArguments(),mNewExpr));
            | Item.CtorGroup _,None -> 
                error(Error(FSComp.SR.tcConstructorRequiresArguments(),mNewExpr));
            | _ -> error(Error(FSComp.SR.tcNewRequiresObjectConstructor(),mNewExpr))

        let baseValOpt = MakeAndPublishBaseVal cenv env baseIdOpt objTy
        let env = Option.foldBack (AddLocalVal cenv.tcSink mNewExpr) baseValOpt env
        
        
        let impls = (mWholeExpr,objTy,binds) :: extraImpls
        
        
        // 1. collect all the relevant abstract slots for each type we have to implement 
        
        let overridesAndVirts,tpenv = ComputeObjectExprOverrides cenv env tpenv impls

    
        overridesAndVirts |> List.iter (fun (m,implty,dispatchSlots,dispatchSlotsKeyed,availPriorOverrides,overrides) -> 
            let overrideSpecs = overrides |> List.map fst

            DispatchSlotChecking.CheckOverridesAreAllUsedOnce env.DisplayEnv cenv.g cenv.amap (true, implty, dispatchSlotsKeyed, availPriorOverrides, overrideSpecs);

            DispatchSlotChecking.CheckDispatchSlotsAreImplemented (env.DisplayEnv,cenv.g,cenv.amap,m,false,implty,dispatchSlots,availPriorOverrides,overrideSpecs) |> ignore);
        
        // 6c. create the specs of overrides 
        let allTypeImpls = 
          overridesAndVirts |> List.map (fun (m,implty,_,dispatchSlotsKeyed,_,overrides) -> 
              let overrides' = 
                  [ for overrideMeth in overrides do 
                        let (Override(_,_, id,(mtps,_),_,_,isFakeEventProperty) as ovinfo),(_, thisVal, methodVars, bindingAttribs, bindingBody) = overrideMeth
                        if not isFakeEventProperty then 
                            let searchForOverride = 
                                dispatchSlotsKeyed 
                                |> NameMultiMap.find id.idText 
                                |> List.tryPick (fun (RequiredSlot(virt,_)) -> 
                                     if DispatchSlotChecking.IsExactMatch cenv.g cenv.amap m virt ovinfo then 
                                         Some virt 
                                     else 
                                         None)

                            let overridden = 
                                match searchForOverride with 
                                | Some x -> x
                                | None -> error(Error(FSComp.SR.tcAtLeastOneOverrideIsInvalid(),synObjTy.Range))

                            yield TObjExprMethod(overridden.GetSlotSig(cenv.amap, m), bindingAttribs, mtps, [thisVal]::methodVars, bindingBody, id.idRange) ]
              (implty,overrides'))
            
        let (objTy',overrides') = allTypeImpls.Head
        let extraImpls = allTypeImpls.Tail
        
        // 7. Build the implementation 
        let expr = mkObjExpr(objTy', baseValOpt, ctorCall, overrides',extraImpls,mWholeExpr)
        let expr = mkCoerceIfNeeded cenv.g realObjTy objTy' expr
        expr,tpenv



//-------------------------------------------------------------------------
// TcConstStringExpr
//------------------------------------------------------------------------- 

/// Check a constant string expression. It might be a 'printf' format string 
and TcConstStringExpr cenv overallTy env m tpenv s  =

    if (AddCxTypeEqualsTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy cenv.g.string_ty) then 
      mkString cenv.g m s,tpenv
    else 
      let aty = NewInferenceType ()
      let bty = NewInferenceType ()
      let cty = NewInferenceType ()
      let dty = NewInferenceType ()
      let ety = NewInferenceType ()
      let ty' = mkPrintfFormatTy cenv.g aty bty cty dty ety
      if (not (isObjTy cenv.g overallTy) && AddCxTypeMustSubsumeTypeUndoIfFailed env.DisplayEnv cenv.css m overallTy ty') then 
        // Parse the format string to work out the phantom types 
        let aty',ety' = (try Formats.ParseFormatString m cenv.g s bty cty dty with Failure s -> error (Error(FSComp.SR.tcUnableToParseFormatString(s),m)))
        UnifyTypes cenv env m aty aty';
        UnifyTypes cenv env m ety ety';
        mkCallNewFormat cenv.g m aty bty cty dty ety (mkString cenv.g m s),tpenv
      else 
        UnifyTypes cenv env m overallTy cenv.g.string_ty;
        mkString cenv.g m s,tpenv

//-------------------------------------------------------------------------
// TcConstExpr
//------------------------------------------------------------------------- 

/// Check a constant expression. 
and TcConstExpr cenv overallTy env m tpenv c  =
    match c with 

    // NOTE: these aren't "really" constants 
    | SynConst.Bytes (bytes,m) -> 
       UnifyTypes cenv env m overallTy (mkByteArrayTy cenv.g); 
       Expr.Op(TOp.Bytes bytes,[],[],m),tpenv

    | SynConst.UInt16s arr -> 
       UnifyTypes cenv env m overallTy (mkArrayType cenv.g cenv.g.uint16_ty); Expr.Op(TOp.UInt16s arr,[],[],m),tpenv

    | SynConst.UserNum (s,suffix) -> 
        let expr = 
            let modName = ("NumericLiteral"^suffix)
            let ad = env.eAccessRights
            match ResolveLongIndentAsModuleOrNamespace OpenQualified env.eNameResEnv ad [ident (modName,m)] with 
            | Result []
            | Exception _ -> error(Error(FSComp.SR.tcNumericLiteralRequiresModule(modName),m))
            | Result ((_,mref,_) :: _) -> 
                let expr = 
                    try 
                        let i32 = int32 s  
                        if i32 = 0 then SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet m [modName] "FromZero",SynExpr.Const(SynConst.Unit,m),m)
                        elif i32 = 1 then SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet m [modName] "FromOne",SynExpr.Const(SynConst.Unit,m),m)
                        else SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet m [modName] "FromInt32",SynExpr.Const(SynConst.Int32 i32,m),m)
                    with _ -> 
                      try 
                         let i64 = int64 s  
                         SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet m [modName] "FromInt64",SynExpr.Const(SynConst.Int64 i64,m),m)
                      with _ ->             
                        SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet m [modName] "FromString",SynExpr.Const(SynConst.String (s,m),m),m) 
                let ccu = ccuOfTyconRef mref
                if isSome ccu && ccuEq ccu.Value cenv.g.fslibCcu && suffix = "I" then 
                    SynExpr.Typed(expr,SynType.LongIdent(LongIdentWithDots(pathToSynLid m ["System";"Numerics";"BigInteger"],[])),m)
                else
                    expr

        TcExpr cenv overallTy env tpenv expr

    | _ -> 
        let c' = TcConst cenv overallTy m env c
        Expr.Const (c',m,overallTy),tpenv


//-------------------------------------------------------------------------
// TcAssertExpr
//------------------------------------------------------------------------- 

// Check an 'assert(x)' expression. 
and TcAssertExpr cenv overallTy env (m:range) tpenv x  =
    let synm = m.MakeSynthetic() // Mark as synthetic so the language service won't pick it up.
    let callDiagnosticsExpr = SynExpr.App(ExprAtomicFlag.Atomic, false, mkSynLidGet synm ["System";"Diagnostics";"Debug"] "Assert", 
                                           // wrap an extra parentheses so 'assert(x=1) isn't considered a named argument to a method call 
                                           SynExpr.Paren(x,range0,None,synm), synm)

    TcExpr cenv overallTy env tpenv callDiagnosticsExpr



//-------------------------------------------------------------------------
// TcRecdExpr
//------------------------------------------------------------------------- 

and TcRecdExpr cenv overallTy env tpenv (inherits, optOrigExpr, flds, mWholeExpr) =

    let requiresCtor = (GetCtorShapeCounter env = 1) // Get special expression forms for constructors 
    let haveCtor = (isSome inherits)

    let optOrigExpr,tpenv = 
      match optOrigExpr with 
      | None -> None, tpenv 
      | Some (e, _) -> 
          match inherits with 
          | Some (_,_,mInherits, _, _) -> error(Error(FSComp.SR.tcInvalidRecordConstruction(),mInherits));
          | None -> 
              let e',tpenv = TcExpr cenv overallTy env tpenv e
              let v',ve' = mkCompGenLocal mWholeExpr "inputRecord" overallTy
              Some (e',v',ve'), tpenv

    let fldsList = 
        let flds = 
            [
                // if we met at least one field that is not syntactically correct - raise ReportedError to transfer control to the recovery routine
                for ((lidwd, isOk), v, _) in flds do
                    if not isOk then
                        // raising ReportedError None transfers control to the closest errorRecovery point but do not make any records into log
                        // we assume that parse errors were already reported
                        raise (ReportedError None)

                    yield (List.frontAndBack lidwd.Lid, v)
            ]
        match flds with 
        | [] -> []
        | _ -> 
            let tcref,_,fldsList = BuildFieldMap cenv env (isSome optOrigExpr) overallTy flds mWholeExpr
            let _,_,_,gtyp = infoOfTyconRef mWholeExpr tcref
            UnifyTypes cenv env mWholeExpr overallTy gtyp;      
            fldsList

    if isSome optOrigExpr && not (isRecdTy cenv.g overallTy) then 
        errorR(Error(FSComp.SR.tcExpressionFormRequiresRecordTypes(),mWholeExpr));

    if requiresCtor || haveCtor then 
        if not (isFSharpObjModelTy cenv.g overallTy) then 
            // Deliberate no-recovery failure here to prevent cascading internal errors
            error(Error(FSComp.SR.tcInheritedTypeIsNotObjectModelType(),mWholeExpr));
        if not requiresCtor then 
            errorR(Error(FSComp.SR.tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes(),mWholeExpr));
    else
        if isNil flds then 
            let errorInfo = 
                if isSome optOrigExpr then FSComp.SR.tcEmptyCopyAndUpdateRecordInvalid()
                else FSComp.SR.tcEmptyRecordInvalid()
            error(Error(errorInfo,mWholeExpr))

        if isFSharpObjModelTy cenv.g overallTy then errorR(Error(FSComp.SR.tcTypeIsNotARecordTypeNeedConstructor(),mWholeExpr))
        elif not (isRecdTy cenv.g overallTy) then errorR(Error(FSComp.SR.tcTypeIsNotARecordType(),mWholeExpr));

    let superTy,tpenv = 
        match inherits, GetSuperTypeOfType cenv.g cenv.amap mWholeExpr overallTy with 
        | Some (superTyp,arg,m, _, _), Some realSuperTyp ->
            // Constructor expression, with an explicit 'inheritedTys clause. Check the inherits clause. 
            let e,tpenv = TcExpr cenv realSuperTyp  env tpenv (SynExpr.New(true,superTyp,arg,m))
            Some e, tpenv
        | None, Some realSuperTyp when requiresCtor -> 
            // Constructor expression, No 'inherited' clause, hence look for a default constructor 
            let e,tpenv = TcNewExpr cenv env tpenv realSuperTyp None true (SynExpr.Const (SynConst.Unit,mWholeExpr)) mWholeExpr
            Some e, tpenv
        | None,_ -> 
            None,tpenv
        | _, None -> 
            errorR(InternalError("Unexpected failure in getting super type",mWholeExpr));
            None,tpenv

    let expr,tpenv = 
        let fldsList = fldsList |> List.choose (fun (n, v) -> if v.IsSome then Some (n, v.Value) else None)
        TcRecordConstruction cenv overallTy env tpenv optOrigExpr  overallTy fldsList mWholeExpr

    let expr = 
        match superTy with 
        | _ when isStructTy cenv.g overallTy -> expr
        | Some e -> mkCompGenSequential mWholeExpr e expr
        | None -> expr
    expr,tpenv


//-------------------------------------------------------------------------
// TcForEachExpr 
//------------------------------------------------------------------------- 
 
and TcForEachExpr cenv overallTy env tpenv (pat,enumSynExpr,body,m,spForLoop)  =
    UnifyTypes cenv env m overallTy cenv.g.unit_ty;

    let enumExpr,enumExprTy,tpenv = 
        TcExprOfUnknownType cenv env tpenv enumSynExpr

    let enumElemTy, bodyExprFixup, overallExprFixup, iterationTechnique = 
        match enumExpr with 

        // optimize 'for i in n .. m do' 
        | Expr.App(Expr.Val(vf,_,_),_,[tyarg],[startExpr;finishExpr],_) 
             when valRefEq cenv.g vf cenv.g.range_op_vref && typeEquiv cenv.g tyarg cenv.g.int_ty -> 
               (cenv.g.int32_ty, (fun _ x -> x), id, Choice1Of3 (startExpr,finishExpr))

        // optimize 'for i in arr do' 
        | _ when isArray1DTy cenv.g enumExprTy  -> 
            let arrVar,arrExpr = mkCompGenLocal m "arr" enumExprTy
            let idxVar,idxExpr = mkCompGenLocal m "idx" cenv.g.int32_ty
            let elemTy = destArrayTy cenv.g enumExprTy
            
            // Evaluate the array index lookup
            let bodyExprFixup = (fun elemVar bodyExpr -> mkCompGenLet m elemVar (mkLdelem cenv.g m elemTy arrExpr idxExpr) bodyExpr)

            // Evaluate the array expression once and put it in arrVar
            let overallExprFixup = (fun overallExpr -> mkCompGenLet m arrVar enumExpr overallExpr)

            // Ask for a loop over integers for the given range
            (elemTy, bodyExprFixup, overallExprFixup, Choice2Of3 (idxVar,mkZero cenv.g m,mkDecr cenv.g m (mkLdlen cenv.g m arrExpr)))

        | _ -> 

            let enumerableVar,enumerableExprInVar = mkCompGenLocal enumExpr.Range "inputSequence" enumExprTy
            let enumeratorVar, enumeratorExpr,_,enumElemTy,getEnumExpr,getEnumTy,guardExpr,_,currentExpr = 
                    AnalyzeArbitraryExprAsEnumerable cenv env true enumExpr.Range enumExprTy enumerableExprInVar
            (enumElemTy, (fun _ x -> x), id, Choice3Of3(enumerableVar,enumeratorVar, enumeratorExpr,getEnumExpr,getEnumTy,guardExpr,currentExpr))
            
    let pat,_,vspecs,envinner,tpenv = TcMatchPattern cenv enumElemTy env tpenv (pat,None)
    let elemVar,pat =      
        // nice: don't introduce awful temporary for r.h.s. in the 99% case where we know what we're binding it to 
        match pat with
        | TPat_as (pat1,PBind(v,TypeScheme([],_)),_) -> 
              v,pat1
        | _ -> 
              let tmp,_ = mkCompGenLocal m "forLoopVar" enumElemTy
              tmp,pat

    let bodyExpr,tpenv = TcStmt cenv envinner tpenv body

    let bodyExpr = 
        let valsDefinedByMatching = FlatListSet.remove valEq elemVar vspecs
        CompilePatternForMatch cenv env enumSynExpr.Range pat.Range false IgnoreWithWarning (elemVar,[]) 
            [TClause(pat,None,TTarget(valsDefinedByMatching,bodyExpr,SequencePointAtTarget),m)] enumElemTy overallTy

    // Apply the fixup to bind the elemVar if needed
    let bodyExpr = bodyExprFixup elemVar bodyExpr
    
    let overallExpr =  

        match iterationTechnique with 

        // Build iteration as a for loop
        | Choice1Of3(startExpr,finishExpr) -> 
            mkFastForLoop  cenv.g (spForLoop,m,elemVar,startExpr,true,finishExpr,bodyExpr)

        // Build iteration as a for loop with a specific index variable that is not the same as the elemVar
        | Choice2Of3(idxVar,startExpr,finishExpr) -> 
            mkFastForLoop  cenv.g (spForLoop,m,idxVar,startExpr,true,finishExpr,bodyExpr)

        // Build iteration as a while loop with a try/finally disposal
        | Choice3Of3(enumerableVar,enumeratorVar, _,getEnumExpr,_,guardExpr,currentExpr) -> 

            // This compiled for must be matched EXACTLY by DetectFastIntegerForLoops in opt.fs and creflect.fs
            mkCompGenLet enumExpr.Range enumerableVar enumExpr
              (let cleanupE = BuildDisposableCleanup cenv env m enumeratorVar
               let spBind = (match spForLoop with SequencePointAtForLoop(spStart) -> SequencePointAtBinding(spStart) | NoSequencePointAtForLoop -> NoSequencePointAtStickyBinding)
               (mkLet spBind getEnumExpr.Range  enumeratorVar getEnumExpr
                   (mkTryFinally cenv.g 
                       (mkWhile cenv.g 
                           (NoSequencePointAtWhileLoop, WhileLoopForCompiledForEachExprMarker, guardExpr,
                               mkCompGenLet bodyExpr.Range elemVar currentExpr bodyExpr,m),
                        cleanupE,m,cenv.g.unit_ty,NoSequencePointAtTry,NoSequencePointAtFinally))))

    let overallExpr = overallExprFixup  overallExpr
    overallExpr, tpenv

//-------------------------------------------------------------------------
// TcQuotationExpr
//------------------------------------------------------------------------- 

and TcQuotationExpr cenv overallTy env tpenv (_oper,raw,ast,isFromQueryExpression,m) =
    let astTy = NewInferenceType ()

    // Assert the overall type for the domain of the quotation template
    UnifyTypes cenv env m overallTy (if raw then mkRawQuotedExprTy cenv.g else mkQuotedExprTy cenv.g astTy); 

    // Check the expression 
    let expr,tpenv = TcExpr cenv astTy env tpenv ast  
    
    // Wrap the expression
    let expr = Expr.Quote(expr, ref None, isFromQueryExpression, m, overallTy)

    // Coerce it if needed
    let expr = if raw then mkCoerceExpr(expr,(mkRawQuotedExprTy cenv.g),m,(tyOfExpr cenv.g expr)) else expr

    // We serialize the quoted expression to bytes in Ilxgen after type inference etc. is complete. 
    expr,tpenv

//-------------------------------------------------------------------------
// TcComputationOrSequenceExpression
//------------------------------------------------------------------------- 

and TcComputationOrSequenceExpression cenv (env: TcEnv) overallTy m interpValOpt tpenv comp = 
    match interpValOpt with 
    | Some (interpExpr:Expr,builderTy) -> 
        TcComputationExpression cenv env overallTy m interpExpr builderTy tpenv comp
    | None -> 
        TcSequenceExpression cenv env tpenv comp overallTy m

// Used for all computation expressions except sequence expressions
and TcComputationExpression cenv env overallTy mWhole interpExpr builderTy tpenv comp = 

    //dprintfn "TcComputationOrSequenceExpression, comp = \n%A\n-------------------\n" comp
    let ad = env.eAccessRights

    let mkSynDelay2 (e: SynExpr) =  mkSynDelay (e.Range.MakeSynthetic()) e
    
    let builderValName = CompilerGeneratedName "builder"
    let mBuilderVal = interpExpr.Range
    
    // Give bespoke error messages for the FSharp.Core "query" builder
    let isQuery = 
        match interpExpr with 
        | Expr.Val(vf,_,m) -> 
            let item = Item.CustomBuilder (vf.DisplayName, vf)
            CallNameResolutionSink cenv.tcSink (m,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
            valRefEq cenv.g vf cenv.g.query_value_vref 
        | _ -> false

    /// Make a builder.Method(...) call
    let mkSynCall nm (m:range) args = 
        let m = m.MakeSynthetic() // Mark as synthetic so the language service won't pick it up.
        let args = 
            match args with 
            | [] -> SynExpr.Const(SynConst.Unit,m)
            | [arg] -> SynExpr.Paren(SynExpr.Paren(arg,range0,None,m),range0,None,m)
            | args -> SynExpr.Paren(SynExpr.Tuple(args,[],m),range0,None,m)
                
        let builderVal = mkSynIdGet m builderValName
        mkSynApp1 (SynExpr.DotGet(builderVal,range0,LongIdentWithDots([mkSynId m nm],[]), m)) args m

    let sourceMethInfo = TryFindIntrinsicOrExtensionMethInfo cenv env mBuilderVal ad "Source" builderTy 
    // Optionally wrap sources of "let!", "yield!", "use!" in "query.Source"
    let mkSourceExpr callExpr = 
        match sourceMethInfo with 
        | [] -> callExpr
        | _ -> mkSynCall "Source" callExpr.Range [callExpr]


    /// Decide if the builder is an auto-quote builder
    let isAutoQuote = 
        match TryFindIntrinsicOrExtensionMethInfo cenv env mBuilderVal ad "Quote" builderTy with 
        | [] -> false
        | _ -> true

    let customOperationMethods = 
        AllMethInfosOfTypeInScope cenv.infoReader env.NameEnv.eExtensionMembers (None,ad) IgnoreOverrides mBuilderVal builderTy
        |> List.filter (IsMethInfoAccessible cenv.amap mBuilderVal ad) 
        |> List.choose (fun methInfo -> 
                let nameSearch = 
                    TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo 
                                 (fun _ -> None) // We do not respect this attribute for IL methods
                                 (function (Attrib(_,_,[ AttribStringArg msg ],_,_,_,_)) -> Some msg | _ -> None)
                                 (fun _ -> None) // We do not respect this attribute for provided methods

                let joinConditionWord =
                    TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo 
                                 (fun _ -> None) // We do not respect this attribute for IL methods
                                 (function (Attrib(_,_,_,ExtractAttribNamedArg "JoinConditionWord" (AttribStringArg s),_,_,_)) -> Some s | _ -> None)
                                 (fun _ -> None) // We do not respect this attribute for provided methods
                let flagSearch (propName:string) = 
                    TryBindMethInfoAttribute cenv.g mBuilderVal cenv.g.attrib_CustomOperationAttribute methInfo 
                                 (fun _ -> None) // We do not respect this attribute for IL methods
                                 (function (Attrib(_,_,_,ExtractAttribNamedArg propName (AttribBoolArg b),_,_,_)) -> Some b | _ -> None)
                                 (fun _ -> None)// We do not respect this attribute for provided methods
                let maintainsVarSpaceUsingBind = defaultArg (flagSearch "MaintainsVariableSpaceUsingBind") false
                let maintainsVarSpace = defaultArg (flagSearch "MaintainsVariableSpace") false
                let allowInto = defaultArg (flagSearch "AllowIntoPattern") false
                let isLikeZip = defaultArg (flagSearch "IsLikeZip") false
                let isLikeJoin = defaultArg (flagSearch "IsLikeJoin" ) false
                let isLikeGroupJoin = defaultArg (flagSearch "IsLikeGroupJoin" ) false

                match nameSearch with  
                | None -> None
                | Some nm -> Some (nm, maintainsVarSpaceUsingBind, maintainsVarSpace, allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, joinConditionWord, methInfo))

    let customOperationMethodsIndexedByKeyword = 
        customOperationMethods
        |> Seq.groupBy (fun (nm, _, _, _, _, _, _, _, _) -> nm)
        |> Seq.map (fun (nm,g) -> (nm, Seq.toList g))
        |> dict

    // Check for duplicates by method name (keywords and method names must be 1:1)
    let customOperationMethodsIndexedByMethodName = 
        customOperationMethods
        |> Seq.groupBy (fun (_, _, _, _, _, _, _, _, methInfo) -> methInfo.LogicalName)
        |> Seq.map (fun (nm,g) -> (nm, Seq.toList g))
        |> dict

        
    /// Decide if the identifier represents a use of a custom query operator
    let tryGetDataForCustomOperation (nm:Ident) = 
        match customOperationMethodsIndexedByKeyword.TryGetValue nm.idText with 
        | true, [opData] -> 
            let (opName, maintainsVarSpaceUsingBind, maintainsVarSpace, _allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, _joinConditionWord, methInfo) = opData
            if (maintainsVarSpaceUsingBind && maintainsVarSpace) || (isLikeZip && isLikeJoin) || (isLikeZip && isLikeGroupJoin) || (isLikeJoin && isLikeGroupJoin)  then 
                 errorR(Error(FSComp.SR.tcCustomOperationInvalid opName,nm.idRange))
            match customOperationMethodsIndexedByMethodName.TryGetValue methInfo.LogicalName with 
            | true, [_] -> ()
            | _ -> errorR(Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText,nm.idRange))
            Some opData
        | true, opData::_ -> errorR(Error(FSComp.SR.tcCustomOperationMayNotBeOverloaded nm.idText,nm.idRange)); Some opData
        | _ -> None

    /// Decide if the identifier represents a use of a custom query operator
    let hasCustomOperations () = not (isNil customOperationMethods)

    let isCustomOperation  nm = tryGetDataForCustomOperation nm |> isSome

    // Check for the MaintainsVariableSpace on custom operation
    let customOperationMaintainsVarSpace (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, _maintainsVarSpaceUsingBind, maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) ->  maintainsVarSpace

    let customOperationMaintainsVarSpaceUsingBind (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) ->  maintainsVarSpaceUsingBind

    let customOperationIsLikeZip (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) ->  isLikeZip

    let customOperationIsLikeJoin (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) ->  isLikeJoin

    let customOperationIsLikeGroupJoin (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, isLikeGroupJoin, _joinConditionWord, _methInfo) ->  isLikeGroupJoin 

    let customOperationJoinConditionWord (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | Some (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, Some joinConditionWord, _methInfo) ->  joinConditionWord 
        | _ -> "on"  

    let customOperationAllowsInto (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> false
        | Some (_nm, _maintainsVarSpaceUsingBind, _maintainsVarSpace, allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, _methInfo) ->  allowInto 

    let customOpUsageText nm = 
        match nm with 
        | nm when customOperationIsLikeGroupJoin nm -> Some (FSComp.SR.customOperationTextLikeGroupJoin(nm.idText,customOperationJoinConditionWord nm,customOperationJoinConditionWord nm))
        | nm when customOperationIsLikeJoin nm -> Some (FSComp.SR.customOperationTextLikeJoin(nm.idText,customOperationJoinConditionWord nm,customOperationJoinConditionWord nm))
        | nm when customOperationIsLikeZip nm -> Some (FSComp.SR.customOperationTextLikeZip(nm.idText))
        | _ -> None

    /// Inside the 'query { ... }' use a modified name environment that contains fake 'CustomOperation' entries
    /// for all custom operations. This adds them to the completion lists and prevents them being used as values inside
    /// the query.
    let env = 
        env |> ModifyNameResEnv (fun nenv -> (nenv, customOperationMethods) ||> Seq.fold (fun nenv (nm, _, _, _, _, _, _, _, methInfo) -> 
                 AddFakeNameToNameEnv nm nenv (Item.CustomOperation (nm, (fun () -> customOpUsageText (ident (nm,mBuilderVal))), Some methInfo))))

    // Environment is needed for completions
    CallEnvSink cenv.tcSink (comp.Range, env.NameEnv, ad)

    // Check for the [] attribute on an argument position
    let tryGetArgInfosForCustomOperator  (nm:Ident) = 
        match tryGetDataForCustomOperation nm with 
        | None -> None
        | Some (_nm, __maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, _isLikeZip, _isLikeJoin, _isLikeGroupJoin, _joinConditionWord, methInfo) -> 
            match methInfo with 
            | FSMeth(_,_,vref,_) -> 
                let curriedArgInfos = ArgInfosOfMember cenv.g vref 
                if curriedArgInfos.Length = 1  then // one for the actual argument group
                    Some curriedArgInfos.Head
                else
                   None
            | _ -> None

    let expectedArgCountForCustomOperator  (nm:Ident) = 
        match tryGetArgInfosForCustomOperator nm with 
        | None -> 0
        | Some argInfos -> max (argInfos.Length - 1) 0  // drop the computation context argument

    // Check for the [] attribute on an argument position
    let isCustomOperationProjectionParameter  i (nm:Ident) = 
        match tryGetArgInfosForCustomOperator nm with 
        | None -> false
        | Some argInfos ->
            i < argInfos.Length && 
            let (_,argInfo) = List.nth argInfos i
            HasFSharpAttribute cenv.g cenv.g.attrib_ProjectionParameterAttribute argInfo.Attribs


    let (|ForEachThen|_|) e = 
        match e with 
        | SynExpr.ForEach (_spBind, SeqExprOnly false, isFromSource, pat1, expr1, SynExpr.Sequential(_,true,clause,rest,_),_) -> Some (isFromSource,pat1,expr1,clause,rest)
        | _ -> None

    let (|CustomOpId|_|) predicate e = 
        match e with 
        | SingleIdent nm when isCustomOperation nm  && predicate nm -> Some nm
        | _ -> None

    // e1 in e2  ('in' is parsed as 'JOIN_IN')
    let (|InExpr|_|) (e:SynExpr) = 
        match e with 
        | SynExpr.JoinIn(e1,_,e2,mApp) -> Some (e1,e2,mApp)
        | _ -> None

    // e1 on e2 (note: 'on' is the 'JoinConditionWord')
    let (|OnExpr|_|) nm (e:SynExpr) = 
        match tryGetDataForCustomOperation nm with 
        | None -> None
        | Some _ -> 
            match e with 
            | SynExpr.App(_,_,SynExpr.App(_,_,e1,SingleIdent opName,_), e2, _) when opName.idText = customOperationJoinConditionWord nm -> 
                let item = Item.CustomOperation (opName.idText, (fun () -> None), None)
                CallNameResolutionSink cenv.tcSink (opName.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
                Some (e1,e2)
            | _ -> None

    // e1 into e2
    let (|IntoSuffix|_|) (e:SynExpr) = 
        match e with 
        | SynExpr.App(_,_,SynExpr.App(_,_,x,SingleIdent nm2,_), ExprAsPat intoPat, _) when nm2.idText = CustomOperations.Into -> 
            Some (x,nm2.idRange,intoPat)
        | _ -> 
            None

    let arbPat (m: range) = mkSynPatVar None (mkSynId (m.MakeSynthetic()) "_missingVar")

    let MatchIntoSuffixOrRecover alreadyGivenError (nm:Ident) (e:SynExpr) = 
        match e with 
        | IntoSuffix (x,intoWordRange,intoPat) -> 
            // record the "into" as a custom operation for colorization
            let item = Item.CustomOperation ("into", (fun () -> None), None)
            CallNameResolutionSink cenv.tcSink (intoWordRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
            (x,intoPat,alreadyGivenError)
        | _ -> 
            if not alreadyGivenError then 
                errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
            (e,arbPat e.Range,true)

    let MatchOnExprOrRecover alreadyGivenError nm (onExpr:SynExpr) = 
        match onExpr with 
        | OnExpr nm (innerSource, SynExprParen(keySelectors,_,_,_)) -> 
            (innerSource, keySelectors)
        | _ -> 
            if not alreadyGivenError then 
                suppressErrorReporting (fun () -> TcExprOfUnknownType cenv env tpenv onExpr) |> ignore
                errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
            (arbExpr("_innerSource",onExpr.Range), mkSynBifix onExpr.Range "=" (arbExpr("_keySelectors",onExpr.Range)) (arbExpr("_keySelector2",onExpr.Range)))

    let JoinOrGroupJoinOp detector e = 
        match e with 
        | SynExpr.App(_,_,CustomOpId detector nm,ExprAsPat innerSourcePat,mJoinCore) ->
            Some(nm, innerSourcePat, mJoinCore, false)
        // join with bad pattern (gives error on "join" and continues)
        | SynExpr.App(_,_,CustomOpId detector nm,_innerSourcePatExpr,mJoinCore) ->
            errorR(Error(FSComp.SR.tcBinaryOperatorRequiresVariable(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
            Some(nm, arbPat mJoinCore, mJoinCore, true)
        // join (without anything after - gives error on "join" and continues)
        | CustomOpId detector nm -> 
            errorR(Error(FSComp.SR.tcBinaryOperatorRequiresVariable(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
            Some(nm, arbPat e.Range, e.Range, true)
        | _ -> 
            None
            // JoinOrGroupJoinOp customOperationIsLikeJoin

    let (|JoinOp|_|) (e:SynExpr) = JoinOrGroupJoinOp customOperationIsLikeJoin e
    let (|GroupJoinOp|_|) (e:SynExpr) = JoinOrGroupJoinOp customOperationIsLikeGroupJoin e

    let arbKeySelectors m = mkSynBifix m "=" (arbExpr("_keySelectors",m)) (arbExpr("_keySelector2",m))

    let (|JoinExpr|_|) (e:SynExpr) = 
        match e with 
        | InExpr (JoinOp(nm, innerSourcePat, _, alreadyGivenError), onExpr, mJoinCore)  -> 
            let (innerSource, keySelectors) = MatchOnExprOrRecover alreadyGivenError nm onExpr
            Some(nm, innerSourcePat, innerSource, keySelectors, mJoinCore)
        | JoinOp (nm, innerSourcePat, mJoinCore, alreadyGivenError) ->
            if alreadyGivenError then 
                errorR(Error(FSComp.SR.tcOperatorRequiresIn(nm.idText, Option.get (customOpUsageText nm)), nm.idRange))
            Some (nm, innerSourcePat, arbExpr("_innerSource",e.Range), arbKeySelectors e.Range, mJoinCore)
        | _ -> None

    let (|GroupJoinExpr|_|) (e:SynExpr) = 
        match e with 
        | InExpr (GroupJoinOp (nm, innerSourcePat, _, alreadyGivenError), intoExpr, mGroupJoinCore) ->
            let (onExpr,intoPat,alreadyGivenError) = MatchIntoSuffixOrRecover alreadyGivenError nm intoExpr 
            let (innerSource, keySelectors) = MatchOnExprOrRecover alreadyGivenError nm onExpr
            Some (nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore)
        | GroupJoinOp (nm, innerSourcePat, mGroupJoinCore, alreadyGivenError) ->
            if alreadyGivenError then 
               errorR(Error(FSComp.SR.tcOperatorRequiresIn(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
            Some (nm, innerSourcePat, arbExpr("_innerSource",e.Range), arbKeySelectors e.Range, arbPat e.Range, mGroupJoinCore)
        | _ -> 
            None


    let (|JoinOrGroupJoinOrZipClause|_|) (e:SynExpr) = 
        match e with 

        // join innerSourcePat in innerSource on (keySelector1 = keySelector2)
        | JoinExpr (nm, innerSourcePat, innerSource, keySelectors, mJoinCore) -> 
                Some(nm, innerSourcePat, innerSource, Some keySelectors, None, mJoinCore)

        // groupJoin innerSourcePat in innerSource on (keySelector1 = keySelector2) into intoPat
        | GroupJoinExpr (nm, innerSourcePat, innerSource, keySelectors, intoPat, mGroupJoinCore) -> 
                Some(nm, innerSourcePat, innerSource, Some keySelectors, Some intoPat, mGroupJoinCore)

        // zip intoPat in secondSource 
        | InExpr (SynExpr.App(_,_,CustomOpId customOperationIsLikeZip nm,ExprAsPat secondSourcePat,_),secondSource,mZipCore) -> 
                Some(nm, secondSourcePat, secondSource, None, None, mZipCore)


        // zip (without secondSource or in - gives error)
        | CustomOpId customOperationIsLikeZip nm  -> 
                errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
                Some(nm, arbPat e.Range, arbExpr("_secondSource",e.Range), None, None, e.Range)

        // zip secondSource (without in - gives error)
        | SynExpr.App(_,_,CustomOpId customOperationIsLikeZip nm,ExprAsPat secondSourcePat,mZipCore) -> 
                errorR(Error(FSComp.SR.tcOperatorIncorrectSyntax(nm.idText, Option.get (customOpUsageText nm)),mZipCore))
                Some(nm, secondSourcePat, arbExpr("_innerSource",e.Range), None, None, mZipCore)

        | _ -> 
            None

    let (|ForEachThenJoinOrGroupJoinOrZipClause|_|) e = 
        match e with 
        | ForEachThen (isFromSource, firstSourcePat, firstSource, JoinOrGroupJoinOrZipClause(nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore), innerComp) 
            when 
               (let _firstSourceSimplePats,later1 = 
                    use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                    SimplePatsOfPat cenv.synArgNameGenerator firstSourcePat 
                isNone later1)

             -> Some (isFromSource, firstSourcePat, firstSource, nm, secondSourcePat, secondSource, keySelectorsOpt, pat3opt, mOpCore, innerComp)

        | JoinOrGroupJoinOrZipClause(nm, pat2, expr2, expr3, pat3opt, mOpCore) -> 
            errorR(Error(FSComp.SR.tcBinaryOperatorRequiresBody(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
            Some (true, arbPat e.Range, arbExpr("_outerSource",e.Range), nm, pat2, expr2, expr3, pat3opt, mOpCore, arbExpr("_innerComp",e.Range))

        | _ -> 
            None


    let (|StripApps|) e = 
        let rec strip e = 
            match e with 
            | SynExpr.FromParseError(SynExpr.App(_,_,f,arg,_),_)
            | SynExpr.App(_,_,f,arg,_)  -> 
                let g,acc = strip f 
                g,(arg::acc) 
            | _ -> e,[]
        let g,acc = strip e
        g,List.rev acc

    let (|OptionalIntoSuffix|) e = 
        match e with 
        | IntoSuffix (body,intoWordRange,optInfo) -> (body,Some (intoWordRange, optInfo))
        | body -> (body,None)

    let (|CustomOperationClause|_|) e = 
        match e with 
        | OptionalIntoSuffix(StripApps(SingleIdent nm, _) as core,optInto) when isCustomOperation  nm ->  
            // Now we know we have a custom operation, commit the name resolution
            let optIntoInfo = 
                match optInto with 
                | Some (intoWordRange,optInfo) -> 
                    let item = Item.CustomOperation ("into", (fun () -> None), None)
                    CallNameResolutionSink cenv.tcSink (intoWordRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
                    Some optInfo
                | None -> None

            Some (nm, Option.get (tryGetDataForCustomOperation nm), core, core.Range, optIntoInfo)
        | _ -> None

    let mkSynLambda p e m = SynExpr.Lambda(false,false,p,e,m)

    let mkExprForVarSpace m (patvs:FlatList) = 
        match FlatList.toList patvs with 
        | [] -> SynExpr.Const(SynConst.Unit,m)
        | [v] -> SynExpr.Ident v.Id
        | vs -> SynExpr.Tuple((vs |> List.map (fun v -> SynExpr.Ident v.Id)), [], m)  

    let mkSimplePatForVarSpace m (patvs:FlatList) = 
        let spats = 
            match FlatList.toList patvs with 
            | [] -> []
            | [v] -> [mkSynSimplePatVar false v.Id]
            | vs -> vs |> List.map (fun v -> mkSynSimplePatVar false v.Id)
        SynSimplePats.SimplePats (spats, m)

    let mkPatForVarSpace m (patvs:FlatList) = 
        match FlatList.toList patvs with 
        | [] -> SynPat.Const (SynConst.Unit, m)
        | [v] -> mkSynPatVar None v.Id
        | vs -> SynPat.Tuple((vs |> FlatList.toList |> List.map (fun x -> mkSynPatVar None x.Id)), m)

    let (|OptionalSequential|) e = 
        match e with 
        | SynExpr.Sequential(_sp, true,  dataComp1, dataComp2,_) -> (dataComp1, Some dataComp2)
        | _ -> (e, None)

    // Check for 'where x > y', 'select x,y' and other mis-applications of infix operators, give a good error message, and retun a flag
    let checkForBinaryApp comp = 
        match comp with 
        | StripApps(SingleIdent nm, [StripApps(SingleIdent nm2, args); arg2]) when 
                  PrettyNaming.IsInfixOperator nm.idText && 
                  expectedArgCountForCustomOperator nm2 > 0 &&
                  args.Length > 0 -> 
            let estimatedRangeOfIntendedLeftAndRightArguments = unionRanges (List.last args).Range arg2.Range
            errorR(Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator(),estimatedRangeOfIntendedLeftAndRightArguments))
            true
        | SynExpr.Tuple( (StripApps(SingleIdent nm2, args) :: _), _, m) when 
                  expectedArgCountForCustomOperator nm2 > 0 &&
                  args.Length > 0 -> 
            let estimatedRangeOfIntendedLeftAndRightArguments = unionRanges (List.last args).Range m.EndRange
            errorR(Error(FSComp.SR.tcUnrecognizedQueryBinaryOperator(),estimatedRangeOfIntendedLeftAndRightArguments))
            true
        | _ ->  
            false
                    
    let addVarsToVarSpace (varSpace: LazyWithContext * TcEnv, range>) f = 
        LazyWithContext.Create
            ((fun m ->
                  let (patvs: FlatList, env) = varSpace.Force m 
                  let vs, envinner = f m env 
                  let patvs = FlatList.append patvs (vs |> FlatList.filter (fun v -> not (patvs |> FlatList.exists (fun v2 -> v.LogicalName = v2.LogicalName))))
                  patvs, envinner), 
              id)

    let emptyVarSpace = LazyWithContext.NotLazy ([], env)

    // q              - a flag indicating if custom operators are allowed. They are not allowed inside try/with, try/finally, if/then/else etc.
    // varSpace       - a lazy data structure indicating the variables bound so far in the overall computation
    // comp           - the computation expression being analyzed
    // translatedCtxt - represents the translation of the context in which the computation expression 'comp' occurs, up to a
    //                  hole to be filled by (part of) the results of translating 'comp'.
    let rec tryTrans firstTry q varSpace comp translatedCtxt =

        match comp with 

        // for firstSourcePat in firstSource do 
        // join secondSourcePat in expr2 on (expr3 = expr4)
        // ...
        //    --> 
        // join expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat secondSourcePat -> ...)

        // for firstSourcePat in firstSource do 
        // groupJoin secondSourcePat in expr2 on (expr3 = expr4) into groupPat
        // ...
        //    --> 
        // groupJoin expr1 expr2 (fun firstSourcePat -> expr3) (fun secondSourcePat -> expr4) (fun firstSourcePat groupPat -> ...)

        // for firstSourcePat in firstSource do 
        // zip secondSource into secondSourcePat
        // ...
        //    --> 
        // zip expr1 expr2 (fun pat1 pat3 -> ...)
        | ForEachThenJoinOrGroupJoinOrZipClause (isFromSource, firstSourcePat, firstSource, nm, secondSourcePat, secondSource, keySelectorsOpt, secondResultPatOpt, mOpCore, innerComp)  -> 


            if not q then error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere(),nm.idRange))
            let firstSource = if isFromSource then mkSourceExpr firstSource else firstSource
            let secondSource = mkSourceExpr secondSource

            // Add the variables to the variable space, on demand
            let varSpaceWithFirstVars = 
                addVarsToVarSpace varSpace (fun _mCustomOp env -> 
                        use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                        let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (firstSourcePat, None)
                        vspecs, envinner)

            let varSpaceWithSecondVars = 
                addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env -> 
                        use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                        let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (secondSourcePat, None)
                        vspecs, envinner)

            let varSpaceWithGroupJoinVars = 
                match secondResultPatOpt with 
                | Some pat3 -> 
                    addVarsToVarSpace varSpaceWithFirstVars (fun _mCustomOp env -> 
                        use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                        let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (pat3, None)
                        vspecs, envinner)
                | None -> varSpace

            let firstSourceSimplePats,later1 = SimplePatsOfPat cenv.synArgNameGenerator firstSourcePat 
            let secondSourceSimplePats,later2 = SimplePatsOfPat cenv.synArgNameGenerator secondSourcePat

            if isSome later1 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), firstSourcePat.Range))
            if isSome later2 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), secondSourcePat.Range))

              // check 'join' or 'groupJoin' or 'zip' is permitted for this builder
            match tryGetDataForCustomOperation nm with 
            | None -> error(Error(FSComp.SR.tcMissingCustomOperation(nm.idText),nm.idRange))
            | Some (opName, _, _, _, _, _, _, _, methInfo) -> 

            // Record the resolution of the custom operation for posterity
            let item = Item.CustomOperation (opName, (fun () -> customOpUsageText nm), Some methInfo)
            CallNameResolutionSink cenv.tcSink (nm.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)

            let mkJoinExpr keySelector1 keySelector2 innerPat e = 
                let mSynthetic = mOpCore.MakeSynthetic()
                mkSynCall methInfo.DisplayName mOpCore
                        [ firstSource;
                          secondSource;
                          (mkSynLambda firstSourceSimplePats keySelector1 mSynthetic);
                          (mkSynLambda secondSourceSimplePats keySelector2 mSynthetic);
                          (mkSynLambda firstSourceSimplePats (mkSynLambda innerPat e mSynthetic) mSynthetic)  ]

            let mkZipExpr e = 
                let mSynthetic = mOpCore.MakeSynthetic()
                mkSynCall methInfo.DisplayName mOpCore
                        [ firstSource;
                          secondSource;
                          (mkSynLambda firstSourceSimplePats (mkSynLambda secondSourceSimplePats e mSynthetic) mSynthetic)  ]
            
            // wraps given expression into sequence with result produced by arbExpr so result will look like: 
            // l; SynExpr.ArbitraryAfterError(...)
            // this allows to handle cases like 'on (a > b)' // '>' is not permitted as correct join relation
            // after wrapping a and b can still be typechecked (so we'll have correct completion inside 'on' part)
            // but presence of SynExpr.ArbitraryAfterError allows to avoid errors about incompatible types in cases like
            // query { 
            //      for a in [1] do
            //      join b in [""] on (a > b)
            //      }
            // if we typecheck raw 'a' and 'b' then we'll end up with 2 errors:
            // 1. incorrect join relation
            // 2. incompatible types: int and string
            // with SynExpr.ArbitraryAfterError we have only first one
            let wrapInArbErrSequence l caption = 
                SynExpr.Sequential(SequencePointInfoForSeq.SequencePointsAtSeq, true, l, (arbExpr(caption,l.Range.EndRange)), l.Range)

            let mkOverallExprGivenVarSpaceExpr, varSpaceInner =
                let isNullableOp opId =
                    match DecompileOpName opId with "?=" | "=?" | "?=?" -> true | _ -> false
                match secondResultPatOpt, keySelectorsOpt with 
                // groupJoin 
                | Some secondResultPat, Some relExpr when customOperationIsLikeGroupJoin nm -> 
                    let secondResultSimplePats,later3 = SimplePatsOfPat cenv.synArgNameGenerator secondResultPat
                    if isSome later3 then errorR (Error (FSComp.SR.tcJoinMustUseSimplePattern(nm.idText), secondResultPat.Range))
                    match relExpr with 
                    | JoinRelation cenv env (keySelector1, keySelector2) -> 
                        mkJoinExpr keySelector1 keySelector2 secondResultSimplePats, varSpaceWithGroupJoinVars
                    | BinOpExpr (opId, l, r) ->
                        if isNullableOp opId.idText then 
                            // When we cannot resolve NullableOps, recommend the relevant namespace to be added
                            errorR(Error(FSComp.SR.cannotResolveNullableOperators(DecompileOpName opId.idText),relExpr.Range))
                        else
                            errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText),relExpr.Range))
                        let l = wrapInArbErrSequence l "_keySelector1"
                        let r = wrapInArbErrSequence r "_keySelector2"
                        // this is not correct JoinRelation but it is still binary operation
                        // we've already reported error now we can use operands of binary operation as join components
                        mkJoinExpr l r secondResultSimplePats, varSpaceWithGroupJoinVars
                    | _ ->
                        errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText),relExpr.Range))
                        // since the shape of relExpr doesn't match our expectations (JoinRelation) 
                        // then we assume that this is l.h.s. of the join relation 
                        // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in GroupJoin method
                        mkJoinExpr relExpr (arbExpr("_keySelector2",relExpr.Range)) secondResultSimplePats, varSpaceWithGroupJoinVars
                        
                | None, Some relExpr when customOperationIsLikeJoin nm -> 
                    match relExpr with 
                    | JoinRelation cenv env (keySelector1, keySelector2) -> 
                        mkJoinExpr keySelector1 keySelector2 secondSourceSimplePats, varSpaceWithSecondVars
                    | BinOpExpr (opId, l, r) ->
                        if isNullableOp opId.idText then
                            // When we cannot resolve NullableOps, recommend the relevant namespace to be added
                            errorR(Error(FSComp.SR.cannotResolveNullableOperators(DecompileOpName opId.idText),relExpr.Range))
                        else
                            errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText),relExpr.Range))
                        // this is not correct JoinRelation but it is still binary operation
                        // we've already reported error now we can use operands of binary operation as join components
                        let l = wrapInArbErrSequence l "_keySelector1"
                        let r = wrapInArbErrSequence r "_keySelector2"
                        mkJoinExpr l r secondSourceSimplePats, varSpaceWithGroupJoinVars
                    | _ -> 
                        errorR(Error(FSComp.SR.tcInvalidRelationInJoin(nm.idText),relExpr.Range))
                        // since the shape of relExpr doesn't match our expectations (JoinRelation) 
                        // then we assume that this is l.h.s. of the join relation 
                        // so typechecker will treat relExpr as body of outerKeySelector lambda parameter in Join method
                        mkJoinExpr relExpr (arbExpr("_keySelector2",relExpr.Range)) secondSourceSimplePats, varSpaceWithGroupJoinVars

                | None, None when customOperationIsLikeZip nm -> 
                    mkZipExpr, varSpaceWithSecondVars

                | _ -> 
                    assert false
                    failwith "unreachable"


            // Case from C# spec: A query expression with a join clause with an into followed by something other than a select clause
            // Case from C# spec: A query expression with a join clause without an into followed by something other than a select clause
            let valsInner,_env = varSpaceInner.Force mOpCore
            let varSpaceExpr =  mkExprForVarSpace mOpCore valsInner
            let varSpacePat = mkPatForVarSpace mOpCore valsInner
            let joinExpr = mkOverallExprGivenVarSpaceExpr varSpaceExpr
            Some (trans true q varSpaceInner (SynExpr.ForEach (NoSequencePointAtForLoop, SeqExprOnly false, false, varSpacePat, joinExpr, innerComp, mOpCore)) translatedCtxt)


        | SynExpr.ForEach (spForLoop, SeqExprOnly _seqExprOnly, isFromSource, pat, sourceExpr, innerComp,_) -> 
            let wrappedSourceExpr = if isFromSource then mkSourceExpr sourceExpr else sourceExpr
            let mFor = match spForLoop with SequencePointAtForLoop(m) -> m | _ -> pat.Range
            let mPat = pat.Range
            let spBind = match spForLoop with SequencePointAtForLoop(m) -> SequencePointAtBinding(m) | NoSequencePointAtForLoop -> NoSequencePointAtStickyBinding
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mFor ad "For" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("For"),mFor))

            // Add the variables to the query variable space, on demand
            let varSpace = 
                addVarsToVarSpace varSpace (fun _mCustomOp env -> 
                    use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                    let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (pat,None) 
                    vspecs, envinner)

            Some (trans true q varSpace innerComp (fun holeFill -> translatedCtxt (mkSynCall "For" mFor [wrappedSourceExpr; SynExpr.MatchLambda(false,sourceExpr.Range,[Clause(pat,None, holeFill,mPat,SequencePointAtTarget)],spBind,mFor) ])) )

        | SynExpr.For (spBind,id,start,dir,finish,innerComp,m) ->
            let mFor = match spBind with SequencePointAtForLoop m -> m | _ -> m
            if isQuery then errorR(Error(FSComp.SR.tcNoIntegerForLoopInQuery(),mFor))
            Some (trans true q varSpace (elimFastIntegerForLoop (spBind,id,start,dir,finish,innerComp,m)) translatedCtxt )

        | SynExpr.While (spWhile,guardExpr,innerComp,_) -> 
            let mGuard = guardExpr.Range
            let mWhile = match spWhile with SequencePointAtWhileLoop(m) -> m | _ -> mGuard
            if isQuery then error(Error(FSComp.SR.tcNoWhileInQuery(),mWhile))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mWhile ad "While" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("While"),mWhile))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mWhile ad "Delay" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"),mWhile))
            Some(trans true q varSpace innerComp (fun holeFill -> translatedCtxt (mkSynCall "While" mWhile [mkSynDelay2 guardExpr; mkSynCall "Delay" mWhile [mkSynDelay innerComp.Range holeFill]])) )

        | SynExpr.TryFinally (innerComp,unwindExpr,mTryToLast,spTry,_spFinally) ->

            let mTry = match spTry with SequencePointAtTry(m) -> m | _ -> mTryToLast
            if isQuery then error(Error(FSComp.SR.tcNoTryFinallyInQuery(),mTry))
            if q then error(Error(FSComp.SR.tcTryFinallyMayNotBeUsedWithCustomOperators(),mTry))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mTry ad "TryFinally" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("TryFinally"),mTry))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mTry ad "Delay" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"),mTry))
            Some (translatedCtxt (mkSynCall "TryFinally" mTry [mkSynCall "Delay" mTry [mkSynDelay innerComp.Range (transNoQueryOps innerComp)]; mkSynDelay2 unwindExpr]))

        | SynExpr.Paren (_,_,_,m) -> 
            error(Error(FSComp.SR.tcConstructIsAmbiguousInComputationExpression(),m))

        | SynExpr.ImplicitZero m -> 
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad "Zero" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Zero"),m))
            Some (translatedCtxt (mkSynCall "Zero" m []))
            
        | OptionalSequential (JoinOrGroupJoinOrZipClause (_, _, _, _, _, mClause), _) 
                      when firstTry -> 

            // 'join' clauses preceded by 'let' and other constructs get processed by repackaging with a 'for' loop.
            let patvs,_env = varSpace.Force comp.Range
            let varSpaceExpr =  mkExprForVarSpace mClause patvs
            let varSpacePat = mkPatForVarSpace mClause patvs
            
            let dataCompPrior = 
                translatedCtxt (transNoQueryOps (SynExpr.YieldOrReturn((true,false), varSpaceExpr, mClause)))

            // Rebind using for ... 
            let rebind = 
                SynExpr.ForEach (NoSequencePointAtForLoop, SeqExprOnly false, false, varSpacePat, dataCompPrior, comp, comp.Range)
                    
            // Retry with the 'for' loop pacakging. Set firstTry=false just in case 'join' processing fails
            tryTrans false q varSpace rebind id


        | OptionalSequential (CustomOperationClause (nm, _, opExpr, mClause, _), _) -> 

            if not q then error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedHere(),opExpr.Range))

            let patvs,_env = varSpace.Force comp.Range
            let varSpaceExpr =  mkExprForVarSpace mClause patvs
            
            let dataCompPriorToOp = 
                let isYield = not (customOperationMaintainsVarSpaceUsingBind nm)
                translatedCtxt (transNoQueryOps (SynExpr.YieldOrReturn((isYield,false), varSpaceExpr, mClause)))
            
            let rec consumeClauses (varSpace:LazyWithContext<_,_>) dataCompPrior compClausesExpr lastUsesBind =

                // Substitute 'yield ' into the context

                let patvs,_env = varSpace.Force comp.Range
                let varSpaceSimplePat = mkSimplePatForVarSpace mClause patvs
                let varSpacePat = mkPatForVarSpace mClause patvs

                match compClausesExpr with 
                
                // Detect one custom operation... This clause will always match at least once...
                | OptionalSequential (CustomOperationClause (nm, (opName, _maintainsVarSpaceUsingBind, _maintainsVarSpace, _allowInto, isLikeZip, isLikeJoin, isLikeGroupJoin, _, methInfo), opExpr, mClause, optionalIntoPat), optionalCont) ->

                    // Record the resolution of the custom operation for posterity
                    let item = Item.CustomOperation (opName, (fun () -> customOpUsageText nm), Some methInfo)
                    CallNameResolutionSink cenv.tcSink (nm.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)

                    if isLikeZip || isLikeJoin || isLikeGroupJoin then
                        errorR(Error(FSComp.SR.tcBinaryOperatorRequiresBody(nm.idText, Option.get (customOpUsageText nm)),nm.idRange))
                        match optionalCont with 
                        | None -> 
                            // we are about to drop the 'opExpr' AST on the floor.  we've already reported an error.  attempt to get name resolutions before dropping it
                            RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects cenv env tpenv opExpr
                            dataCompPrior
                        | Some contExpr -> consumeClauses varSpace dataCompPrior contExpr lastUsesBind 
                    else

                        let maintainsVarSpace = customOperationMaintainsVarSpace nm
                        let maintainsVarSpaceUsingBind = customOperationMaintainsVarSpaceUsingBind nm

                        let expectedArgCount = expectedArgCountForCustomOperator nm 

                        let dataCompAfterOp = 
                            match opExpr with 
                            | StripApps(SingleIdent nm, args) -> 
                                if args.Length = expectedArgCount then 
                                    // Check for the [] attribute on each argument position
                                    let args = args |> List.mapi (fun i arg -> if isCustomOperationProjectionParameter (i+1) nm then SynExpr.Lambda (false, false, varSpaceSimplePat, arg, arg.Range.MakeSynthetic()) else arg)
                                    mkSynCall methInfo.DisplayName mClause (dataCompPrior :: args)
                                else 
                                    errorR(Error(FSComp.SR.tcCustomOperationHasIncorrectArgCount(nm.idText,expectedArgCount,args.Length),nm.idRange))
                                    mkSynCall methInfo.DisplayName mClause ([ dataCompPrior ] @ List.init expectedArgCount (fun i -> arbExpr("_arg" + string i, mClause))) 
                            | _ -> failwith "unreachable"

                        match optionalCont with 
                        | None -> 
                            match optionalIntoPat  with 
                            | Some intoPat -> errorR(Error(FSComp.SR.tcIntoNeedsRestOfQuery(),intoPat.Range))
                            | None -> ()
                            dataCompAfterOp

                        | Some contExpr -> 

                                // select a.Name into name; ...
                                // distinct into d; ...
                                //
                                // Rebind the into pattern and process the rest of the clauses
                                match optionalIntoPat with 
                                | Some intoPat -> 
                                    if not (customOperationAllowsInto nm) then 
                                        error(Error(FSComp.SR.tcOperatorDoesntAcceptInto(nm.idText),intoPat.Range))

                                    // Rebind using either for ... or let!....
                                    let rebind = 
                                        if maintainsVarSpaceUsingBind then 
                                            SynExpr.LetOrUseBang(NoSequencePointAtLetBinding,false,false,intoPat,dataCompAfterOp,contExpr,intoPat.Range) 
                                        else 
                                            SynExpr.ForEach (NoSequencePointAtForLoop, SeqExprOnly false, false, intoPat, dataCompAfterOp, contExpr, intoPat.Range)

                                    trans true q emptyVarSpace rebind id

                                // select a.Name; ...
                                // distinct; ...
                                //
                                // Process the rest of the clauses
                                | None -> 
                                    if maintainsVarSpace || maintainsVarSpaceUsingBind then
                                        consumeClauses varSpace dataCompAfterOp contExpr maintainsVarSpaceUsingBind
                                    else
                                        consumeClauses emptyVarSpace dataCompAfterOp contExpr false 

                // No more custom operator clauses in compClausesExpr, but there may be clauses like join, yield etc. 
                // Bind/iterate the dataCompPrior and use compClausesExpr as the body.
                | _ -> 
                    // Rebind using either for ... or let!....
                    let rebind = 
                        if lastUsesBind then 
                            SynExpr.LetOrUseBang(NoSequencePointAtLetBinding, false, false, varSpacePat, dataCompPrior, compClausesExpr, compClausesExpr.Range) 
                        else 
                            SynExpr.ForEach (NoSequencePointAtForLoop, SeqExprOnly false, false, varSpacePat, dataCompPrior, compClausesExpr, compClausesExpr.Range)
                    
                    trans true q varSpace rebind id

            // Now run the consumeClauses
            Some (consumeClauses varSpace dataCompPriorToOp comp false)

        | SynExpr.Sequential(sp,true,innerComp1,innerComp2,m) -> 

            // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore innerComp1
          if isQuery && checkForBinaryApp innerComp1 then 
            Some (trans true q varSpace innerComp2 translatedCtxt) 

          else
            
            if isQuery && not(innerComp1.IsArbExprAndThusAlreadyReportedError) then 
                match innerComp1 with 
                | SynExpr.JoinIn _ ->  () // an error will be reported later when we process innerComp1 as a sequential
                | _ -> errorR(Error(FSComp.SR.tcUnrecognizedQueryOperator(),innerComp1.RangeOfFirstPortion))

            match tryTrans true false varSpace innerComp1 id with 
            | Some c -> 
                // "cexpr; cexpr" is treated as builder.Combine(cexpr1,cexpr1)
                // This is not pretty - we have to decide which range markers we use for the calls to Combine and Delay
                // NOTE: we should probably suppress these sequence points altogether
                let m1 = 
                    match innerComp1 with 
                    | SynExpr.IfThenElse (_,_,_,_,_,mIfToThen,_m) -> mIfToThen
                    | SynExpr.Match (SequencePointAtBinding mMatch,_,_,_,_) -> mMatch
                    | SynExpr.TryWith (_,_,_,_,_,SequencePointAtTry mTry,_) -> mTry
                    | SynExpr.TryFinally (_,_,_,SequencePointAtTry mTry,_)  -> mTry
                    | SynExpr.For (SequencePointAtForLoop mBind,_,_,_,_,_,_) -> mBind
                    | SynExpr.ForEach (SequencePointAtForLoop mBind,_,_,_,_,_,_) -> mBind
                    | SynExpr.While (SequencePointAtWhileLoop mWhile,_,_,_) -> mWhile
                    | _ -> innerComp1.Range
                if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad "Combine" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Combine"),m))
                if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad "Delay" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"),m))
                Some (translatedCtxt (mkSynCall "Combine" m1 [c; mkSynCall "Delay" m1 [mkSynDelay innerComp2.Range (transNoQueryOps innerComp2)]]))
            | None -> 
                // "do! expr; cexpr" is treated as { let! () = expr in cexpr }
                match innerComp1 with 
                | SynExpr.DoBang(rhsExpr,m) -> 
                    let sp = 
                        match sp with 
                        | SuppressSequencePointOnStmtOfSequential -> SequencePointAtBinding m
                        | SuppressSequencePointOnExprOfSequential -> NoSequencePointAtDoBinding 
                        | SequencePointsAtSeq -> SequencePointAtBinding m
                    Some(trans true q varSpace (SynExpr.LetOrUseBang(sp, false, true, SynPat.Const(SynConst.Unit, rhsExpr.Range), rhsExpr, innerComp2, m)) translatedCtxt)
                // "expr; cexpr" is treated as sequential execution
                | _ -> 
                    Some (trans true q varSpace innerComp2 (fun holeFill -> translatedCtxt (SynExpr.Sequential(sp,true, innerComp1, holeFill, m))))

        | SynExpr.IfThenElse (guardExpr,thenComp,elseCompOpt,spIfToThen,isRecovery,mIfToThen,mIfToEndOfElseBranch) ->
            match elseCompOpt with 
            | Some elseComp -> 
                if isQuery || q then error(Error(FSComp.SR.tcIfThenElseMayNotBeUsedWithCustomOperators(),mIfToThen))
                Some (translatedCtxt (SynExpr.IfThenElse(guardExpr, transNoQueryOps thenComp, Some(transNoQueryOps elseComp), spIfToThen,isRecovery,mIfToThen,mIfToEndOfElseBranch)))
            | None -> 
                let elseComp = 
                    if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mIfToThen ad "Zero" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Zero"),mIfToThen))
                    mkSynCall "Zero" mIfToThen []
                Some (trans true q varSpace thenComp (fun holeFill -> translatedCtxt (SynExpr.IfThenElse(guardExpr, holeFill, Some elseComp, spIfToThen,isRecovery,mIfToThen,mIfToEndOfElseBranch))))

        // 'let binds in expr'
        | SynExpr.LetOrUse (isRec,false,binds,innerComp,m) ->

            // For 'query' check immediately
            if isQuery then
                match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env) binds) with 
                | [NormalizedBinding(_,NormalBinding,(*inline*)false,(*mutable*)false,_,_,_,_,_,_,_,_)] when not isRec -> 
                    ()
                | normalizedBindings -> 
                    let failAt m = error(Error(FSComp.SR.tcNonSimpleLetBindingInQuery(),m))
                    match normalizedBindings with 
                    | NormalizedBinding(_,_,_,_,_,_,_,_,_,_,mBinding,_) :: _ -> failAt mBinding 
                    | _ -> failAt m

            // Add the variables to the query variable space, on demand
            let varSpace = 
                addVarsToVarSpace varSpace (fun mQueryOp env -> 
                    // Normalize the bindings before detecting the bound variables
                    match (List.map (BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env) binds) with 
                    | [NormalizedBinding(_vis,NormalBinding,false,false,_,_,_,_,pat,_,_,_)] -> 
                        // successful case
                        use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                        let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (pat,None) 
                        vspecs, envinner
                    | _ -> 
                        // error case
                        error(Error(FSComp.SR.tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings(),mQueryOp)))


            Some (trans true q varSpace innerComp (fun holeFill -> translatedCtxt (SynExpr.LetOrUse (isRec,false,binds,holeFill,m))))

        // 'use x = expr in expr'
        | SynExpr.LetOrUse (_,true,[Binding (_,NormalBinding,_,_,_,_,_,pat,_,rhsExpr,_,spBind)],innerComp,_) ->
            let bindRange = match spBind with SequencePointAtBinding m -> m | _ -> rhsExpr.Range
            if isQuery then error(Error(FSComp.SR.tcUseMayNotBeUsedInQueries(),bindRange))
            let innerCompRange = innerComp.Range
            let consumeExpr = SynExpr.MatchLambda(false,innerCompRange,[Clause(pat,None, transNoQueryOps innerComp,innerCompRange,SequencePointAtTarget)],spBind,innerCompRange)
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env bindRange ad "Using" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Using"),bindRange))
            Some (translatedCtxt (mkSynCall "Using" bindRange [rhsExpr; consumeExpr ]))

        // 'let! pat = expr in expr' --> build.Bind(e1,(function  _argN -> match _argN with pat -> expr))
        | SynExpr.LetOrUseBang(spBind, false, isFromSource, pat, rhsExpr, innerComp,_) -> 

            let bindRange = match spBind with SequencePointAtBinding(m) -> m | _ -> rhsExpr.Range
            if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(),bindRange))
            let innerRange = innerComp.Range
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env bindRange ad "Bind" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Bind"),bindRange))
                
            // Add the variables to the query variable space, on demand
            let varSpace = 
                addVarsToVarSpace varSpace (fun _mCustomOp env -> 
                        use _holder = TemporarilySuspendReportingTypecheckResultsToSink cenv.tcSink
                        let _,_,vspecs,envinner,_ = TcMatchPattern cenv (NewInferenceType()) env tpenv (pat,None) 
                        vspecs, envinner)

            let rhsExpr = if isFromSource then mkSourceExpr rhsExpr else rhsExpr
            Some (trans true q varSpace innerComp (fun holeFill -> 
                        let consumeExpr = SynExpr.MatchLambda(false,pat.Range,[Clause(pat,None, holeFill,innerRange,SequencePointAtTarget)],spBind,innerRange)
                        translatedCtxt (mkSynCall "Bind"  bindRange [rhsExpr; consumeExpr])))

        // 'use! pat = e1 in e2' --> build.Bind(e1,(function  _argN -> match _argN with pat -> build.Using(x,(fun _argN -> match _argN with pat -> e2))))
        | SynExpr.LetOrUseBang(spBind, true, isFromSource, (SynPat.Named (SynPat.Wild _, id, false, _, _) as pat) ,rhsExpr,innerComp,_)
        | SynExpr.LetOrUseBang(spBind, true, isFromSource, (SynPat.LongIdent (LongIdentWithDots([id],_),_,_,_,_,_) as pat), rhsExpr, innerComp,_) ->

            let bindRange = match spBind with SequencePointAtBinding(m) -> m | _ -> rhsExpr.Range
            if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(),bindRange))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env bindRange ad "Using" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Using"),bindRange))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env bindRange ad "Bind" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Bind"),bindRange))
            let consumeExpr = SynExpr.MatchLambda(false,bindRange,[Clause(pat,None, transNoQueryOps innerComp, innerComp.Range, SequencePointAtTarget)],spBind,bindRange)
            let consumeExpr = mkSynCall "Using" bindRange [SynExpr.Ident(id); consumeExpr ]
            let consumeExpr = SynExpr.MatchLambda(false,bindRange,[Clause(pat,None, consumeExpr,id.idRange,SequencePointAtTarget)],spBind,bindRange)
            let rhsExpr = if isFromSource then mkSourceExpr rhsExpr else rhsExpr
            Some(translatedCtxt (mkSynCall "Bind" bindRange [rhsExpr; consumeExpr]))

        // 'use! pat = e1 in e2' where 'pat' is not a simple name --> error
        | SynExpr.LetOrUseBang(_spBind, true, _isFromSource, pat, _rhsExpr, _innerComp,_) -> 
            error(Error(FSComp.SR.tcInvalidUseBangBinding(),pat.Range))

        | SynExpr.Match (spMatch,expr,clauses,false,m) ->
            let mMatch = match spMatch with SequencePointAtBinding mMatch -> mMatch | _ -> m
            if isQuery then error(Error(FSComp.SR.tcMatchMayNotBeUsedWithQuery(),mMatch))
            let clauses = clauses |> List.map (fun (Clause(pat,cond,innerComp,patm,sp)) -> Clause(pat,cond,transNoQueryOps innerComp,patm,sp))
            Some(translatedCtxt (SynExpr.Match(spMatch,expr, clauses, false,m)))

        | SynExpr.TryWith (innerComp,_mTryToWith,clauses,_mWithToLast,mTryToLast,spTry,_spWith) ->
            let mTry = match spTry with SequencePointAtTry(m) -> m | _ -> mTryToLast
            
            if isQuery then error(Error(FSComp.SR.tcTryWithMayNotBeUsedInQueries(),mTry))
            if q then error(Error(FSComp.SR.tcTryWithMayNotBeUsedWithCustomOperators(),mTry))
            let clauses = clauses |> List.map (fun (Clause(pat,cond,clauseComp,patm,sp)) -> Clause(pat,cond,transNoQueryOps clauseComp,patm,sp))
            let consumeExpr = SynExpr.MatchLambda(true,mTryToLast,clauses,NoSequencePointAtStickyBinding,mTryToLast)
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env  mTry ad "TryWith" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("TryWith"),mTry))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env mTry ad "Delay" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Delay"),mTry))
            Some(translatedCtxt (mkSynCall "TryWith" mTry [mkSynCall "Delay" mTry [mkSynDelay2 (transNoQueryOps innerComp)]; consumeExpr]))

        | SynExpr.YieldOrReturnFrom((isYield,_),yieldExpr,m) -> 
            let yieldExpr = mkSourceExpr yieldExpr
            if isYield then 
                if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad "YieldFrom" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("YieldFrom"),m))
                Some (translatedCtxt (mkSynCall "YieldFrom" m [yieldExpr]))
  
            else
                if isQuery then error(Error(FSComp.SR.tcReturnMayNotBeUsedInQueries(),m))
                if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad "ReturnFrom" builderTy) then 
                    errorR(Error(FSComp.SR.tcRequireBuilderMethod("ReturnFrom"),m))
                    Some (translatedCtxt yieldExpr)
                else
                    Some (translatedCtxt (mkSynCall "ReturnFrom" m [yieldExpr]))
                

        | SynExpr.YieldOrReturn((isYield,_),yieldExpr,m) -> 
            let methName = (if isYield then "Yield" else "Return")
            if isQuery && not isYield then error(Error(FSComp.SR.tcReturnMayNotBeUsedInQueries(),m))
            if isNil (TryFindIntrinsicOrExtensionMethInfo cenv env m ad methName builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod(methName),m))
            Some(translatedCtxt (mkSynCall methName m [yieldExpr]))

        | _ -> None

    and transNoQueryOps comp = trans true false emptyVarSpace comp id
    and trans firstTry q varSpace comp translatedCtxt = 
        match tryTrans firstTry q varSpace comp translatedCtxt with 
        | Some e -> e
        | None -> 
            // This only occurs in final position in a sequence
            match comp with 
            // "do! expr;" in final position is treated as { let! () = expr in return () }
            | SynExpr.DoBang(rhsExpr,m) -> 
                let mUnit = rhsExpr.Range
                let rhsExpr = mkSourceExpr rhsExpr
                if isQuery then error(Error(FSComp.SR.tcBindMayNotBeUsedInQueries(),m))
                trans true q varSpace (SynExpr.LetOrUseBang(NoSequencePointAtDoBinding, false, false, SynPat.Const(SynConst.Unit, mUnit), rhsExpr, SynExpr.YieldOrReturn((false,true), SynExpr.Const(SynConst.Unit,m), m),m)) translatedCtxt
            // "expr;" in final position is treated as { expr; zero }
            // Suppress the sequence point on the "zero"
            | _ -> 
                // Check for 'where x > y' and other mis-applications of infix operators. If detected, give a good error message, and just ignore comp
                if isQuery && checkForBinaryApp comp then 
                    trans true q varSpace (SynExpr.ImplicitZero comp.Range) translatedCtxt  
                else
                    if isQuery && not comp.IsArbExprAndThusAlreadyReportedError then 
                        match comp with 
                        | SynExpr.JoinIn _ ->  () // an error will be reported later when we process innerComp1 as a sequential
                        | _ -> errorR(Error(FSComp.SR.tcUnrecognizedQueryOperator(),comp.RangeOfFirstPortion))
                    trans true q varSpace (SynExpr.ImplicitZero comp.Range) (fun holeFill -> translatedCtxt (SynExpr.Sequential(SuppressSequencePointOnStmtOfSequential,true, comp, holeFill,comp.Range))) 

    let basicSynExpr = trans true (hasCustomOperations ()) (LazyWithContext.NotLazy ([],env)) comp (fun holeFill -> holeFill) 

    let delayedExpr = 
        match TryFindIntrinsicOrExtensionMethInfo cenv env mBuilderVal ad "Delay" builderTy with 
        | [] -> basicSynExpr
        | _ -> mkSynCall "Delay" mBuilderVal [(mkSynDelay2 basicSynExpr)]

            
    let quotedSynExpr = 
        if isAutoQuote then 
            SynExpr.Quote(mkSynIdGet (mBuilderVal.MakeSynthetic()) (CompileOpName "<@ @>"), (*isRaw=*)false, delayedExpr, (*isFromQueryExpression=*)true, mWhole) 
        else delayedExpr

            
    let runExpr = 
        match TryFindIntrinsicOrExtensionMethInfo cenv env mBuilderVal ad "Run" builderTy with 
        | [] -> quotedSynExpr
        | _ -> mkSynCall "Run" mBuilderVal [quotedSynExpr]

    let lambdaExpr = 
        let mBuilderVal = mBuilderVal.MakeSynthetic()
        SynExpr.Lambda (false,false,SynSimplePats.SimplePats ([mkSynSimplePatVar false (mkSynId mBuilderVal builderValName)],mBuilderVal), runExpr, mBuilderVal)

    let lambdaExpr ,tpenv= TcExpr cenv (builderTy --> overallTy) env tpenv lambdaExpr
    // beta-var-reduce to bind the builder using a 'let' binding
    let coreExpr = mkApps cenv.g ((lambdaExpr,tyOfExpr cenv.g lambdaExpr),[],[interpExpr],mBuilderVal)

    coreExpr,tpenv


/// This case is used for computation expressions which are sequence expressions. Technically the code path is different because it
/// typechecks rather than doing a shallow syntactic translation, and generates calls into the Seq.* library
/// and helpers rather than to the builder methods (there is actually no builder for 'seq' in the library). 
/// These are later detected by state machine compilation. 
///
/// Also "ienumerable extraction" is performaed on arguments to "for".
and TcSequenceExpression cenv env tpenv comp overallTy m = 

        let mkDelayedExpr (coreExpr:Expr) = 
            let m = coreExpr.Range
            let overallTy = tyOfExpr cenv.g coreExpr
            mkSeqDelay cenv env m overallTy coreExpr

        let rec tryTcSequenceExprBody env genOuterTy tpenv comp =
            match comp with 
            | SynExpr.ForEach (_spBind, SeqExprOnly _seqExprOnly, _isFromSource, pat, pseudoEnumExpr, innerComp, m) -> 
                // This expression is not checked with the knowledge it is an IEnumerable, since we permit other enumerable types with GetEnumerator/MoveNext methods, as does C# 
                let pseudoEnumExpr,arb_ty,tpenv = TcExprOfUnknownType cenv env tpenv pseudoEnumExpr
                let enumExpr,enumElemTy = ConvertArbitraryExprToEnumerable cenv arb_ty env pseudoEnumExpr
                let pat',_,vspecs,envinner,tpenv = TcMatchPattern cenv enumElemTy env tpenv (pat,None)
                let innerExpr,tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
                
                match pat', vspecs, innerExpr with 
                // peephole optimization: "for x in e1 -> e2" == "e1 |> List.map (fun x -> e2)" *)
                | (TPat_as (TPat_wild _,PBind (v,_),_), 
                   vs,  
                   Expr.App(Expr.Val(vf,_,_),_,[genEnumElemTy],[yexpr],_)) 
                      when vs.Length = 1 && valRefEq cenv.g vf cenv.g.seq_singleton_vref ->
          
                    let enumExprMark = enumExpr.Range
                    let lam = mkLambda enumExprMark v (yexpr,genEnumElemTy)
                    
                    // SEQUENCE POINTS: need to build a let here consuming spBind
                    let enumExpr = mkCoerceIfNeeded cenv.g (mkSeqTy cenv.g enumElemTy) (tyOfExpr cenv.g enumExpr) enumExpr
                    Some(mkCallSeqMap cenv.g m enumElemTy genEnumElemTy lam enumExpr,tpenv)

                | _ -> 
                    let enumExprMark = enumExpr.Range

                    // SEQUENCE POINTS: need to build a let here consuming spBind

                    let matchv,matchExpr = compileSeqExprMatchClauses cenv env enumExprMark (pat',vspecs) innerExpr enumElemTy genOuterTy
                    let lam = mkLambda enumExprMark matchv (matchExpr,tyOfExpr cenv.g matchExpr)
                    Some(mkSeqCollect cenv env m enumElemTy genOuterTy lam enumExpr , tpenv)

            | SynExpr.For (spBind,id,start,dir,finish,innerComp,m) ->
                Some(tcSequenceExprBody env genOuterTy tpenv (elimFastIntegerForLoop (spBind,id,start,dir,finish,innerComp,m)))

            | SynExpr.While (_spWhile,guardExpr,innerComp,_m) -> 
                let guardExpr,tpenv = TcExpr cenv cenv.g.bool_ty env tpenv guardExpr
                let innerExpr,tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp
    
                let guardExprMark = guardExpr.Range
                let guardExpr = mkUnitDelayLambda cenv.g guardExprMark guardExpr
                let innerExpr = mkDelayedExpr innerExpr
                Some(mkSeqFromFunctions cenv env guardExprMark genOuterTy guardExpr innerExpr, tpenv)

            | SynExpr.TryFinally (innerComp,unwindExpr,_mTryToLast,_spTry,_spFinally) ->
                let innerExpr,tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp
                let unwindExpr,tpenv = TcExpr cenv cenv.g.unit_ty env tpenv unwindExpr
            
                let unwindExprMark = unwindExpr.Range
                let unwindExpr = mkUnitDelayLambda cenv.g unwindExprMark unwindExpr
                let innerExpr = mkDelayedExpr innerExpr
                let innerExprMark = innerExpr.Range
                
                Some(mkSeqFinally cenv env innerExprMark genOuterTy innerExpr unwindExpr, tpenv)
            | SynExpr.Paren (_,_,_,m) -> 
                error(Error(FSComp.SR.tcConstructIsAmbiguousInSequenceExpression(),m))

            | SynExpr.ImplicitZero m -> 
                Some(mkSeqEmpty cenv env m genOuterTy,tpenv )

            | SynExpr.DoBang(_rhsExpr,m) -> 
                error(Error(FSComp.SR.tcDoBangIllegalInSequenceExpression(),m))

            | SynExpr.Sequential(sp,true,innerComp1, innerComp2,m) -> 
                // "expr; cexpr" is treated as sequential execution
                // "cexpr; cexpr" is treated as append
                match tryTcSequenceExprBody env genOuterTy tpenv innerComp1 with 
                | None -> 
                    let innerExpr1,tpenv = TcStmtThatCantBeCtorBody cenv env tpenv innerComp1
                    let innerExpr2,tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp2

                    Some(Expr.Sequential(innerExpr1,innerExpr2,NormalSeq,sp,m),tpenv)

                | Some (innerExpr1,tpenv) ->
                    let innerExpr2,tpenv = tcSequenceExprBody env genOuterTy tpenv innerComp2
                    let innerExpr2 = mkDelayedExpr innerExpr2
                    Some(mkSeqAppend cenv env innerComp1.Range genOuterTy innerExpr1 innerExpr2, tpenv)

            | SynExpr.IfThenElse (guardExpr,thenComp,elseCompOpt,spIfToThen,_isRecovery,mIfToThen,mIfToEndOfElseBranch) ->
                let guardExpr',tpenv = TcExpr cenv cenv.g.bool_ty env tpenv guardExpr
                let thenExpr,tpenv = tcSequenceExprBody env genOuterTy tpenv thenComp
                let elseComp = (match elseCompOpt with Some c -> c | None -> SynExpr.ImplicitZero mIfToThen)
                let elseExpr,tpenv = tcSequenceExprBody env genOuterTy tpenv elseComp
                Some(mkCond spIfToThen SequencePointAtTarget mIfToEndOfElseBranch genOuterTy guardExpr' thenExpr elseExpr, tpenv)

            // 'let x = expr in expr'
            | SynExpr.LetOrUse (isRec,false (* not a 'use' binding *),binds,body,m) ->
                TcLinearLetExprs 
                    (fun ty envinner tpenv e -> tcSequenceExprBody envinner ty tpenv e) 
                    cenv env overallTy 
                    (fun x -> x) 
                    tpenv 
                    (false(* don't consume 'use' bindings*),isRec,false,binds,body,m)  |> Some

            // 'use x = expr in expr'
            | SynExpr.LetOrUse (_isRec,true,[Binding (_vis,NormalBinding,_,_,_,_,_,pat,_,rhsExpr,_,_spBind)],innerComp,wholeExprMark) ->

                let bindPatTy = NewInferenceType ()
                let inputExprTy = NewInferenceType ()
                let pat',_,vspecs,envinner,tpenv = TcMatchPattern cenv bindPatTy env tpenv (pat,None)
                UnifyTypes cenv env m inputExprTy bindPatTy;
                let inputExpr,tpenv = TcExpr cenv inputExprTy env tpenv rhsExpr
                let innerExpr,tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
                let inputExprMark = inputExpr.Range
                let matchv,matchExpr = compileSeqExprMatchClauses cenv env inputExprMark (pat',vspecs) innerExpr bindPatTy genOuterTy 
                let consumeExpr = mkLambda wholeExprMark matchv (matchExpr,genOuterTy)
                //SEQPOINT NEEDED - we must consume spBind on this path
                Some(mkSeqUsing cenv env wholeExprMark bindPatTy genOuterTy inputExpr consumeExpr, tpenv)

            | SynExpr.LetOrUseBang(_,_,_,_,_,_,m) -> 
                error(Error(FSComp.SR.tcUseForInSequenceExpression(),m))

            | SynExpr.Match (spMatch,expr,clauses,false,_) ->
                let inputExpr,matchty,tpenv = TcExprOfUnknownType cenv env tpenv expr
                let tclauses,tpenv = 
                    List.mapFold 
                        (fun tpenv (Clause(pat,cond,innerComp,_,sp)) ->
                              let pat',cond',vspecs,envinner,tpenv = TcMatchPattern cenv matchty env tpenv (pat,cond)
                              let innerExpr,tpenv = tcSequenceExprBody envinner genOuterTy tpenv innerComp
                              TClause(pat',cond',TTarget(vspecs, innerExpr,sp),pat'.Range),tpenv)
                        tpenv
                        clauses
                let inputExprTy = tyOfExpr cenv.g inputExpr
                let inputExprMark = inputExpr.Range
                let matchv,matchExpr = CompilePatternForMatchClauses cenv env inputExprMark inputExprMark true ThrowIncompleteMatchException inputExprTy genOuterTy tclauses 
                Some(mkLet spMatch inputExprMark matchv inputExpr matchExpr, tpenv)

            | SynExpr.TryWith (_,mTryToWith,_,_,_,_,_) ->
                error(Error(FSComp.SR.tcTryIllegalInSequenceExpression(),mTryToWith))

            | SynExpr.YieldOrReturnFrom((isYield,_),yieldExpr,m) -> 
                let resultExpr,genExprTy,tpenv = TcExprOfUnknownType cenv env tpenv yieldExpr

                if not isYield then errorR(Error(FSComp.SR.tcUseYieldBangForMultipleResults(),m)) ;

                AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m  NoTrace genOuterTy genExprTy;
                Some(mkCoerceExpr(resultExpr,genOuterTy,m,genExprTy), tpenv)

            | SynExpr.YieldOrReturn((isYield,_),yieldExpr,m) -> 
                let genResultTy = NewInferenceType ()
                if not isYield then errorR(Error(FSComp.SR.tcSeqResultsUseYield(),m)) ;
                UnifyTypes cenv env m genOuterTy (mkSeqTy cenv.g genResultTy);

                let resultExpr,tpenv = TcExpr cenv genResultTy env tpenv yieldExpr
                Some(mkCallSeqSingleton cenv.g m genResultTy resultExpr, tpenv )

            | _ -> None
                
        and tcSequenceExprBody env genOuterTy tpenv comp =
            match tryTcSequenceExprBody env genOuterTy tpenv comp with 
            | Some e -> e
            | None -> 
                // seq { ...; expr } is treated as 'seq { ... ; expr; yield! Seq.empty }'
                // Note this means seq { ...; () } is treated as 'seq { ... ; (); yield! Seq.empty }'
                let m = comp.Range
                let expr,tpenv = TcStmtThatCantBeCtorBody cenv env tpenv comp
                Expr.Sequential(expr,mkSeqEmpty cenv env m genOuterTy,NormalSeq,SuppressSequencePointOnStmtOfSequential,m),tpenv

        let genEnumElemTy = NewInferenceType ()
        UnifyTypes cenv env m overallTy (mkSeqTy cenv.g genEnumElemTy);

        let coreExpr,tpenv = tcSequenceExprBody env overallTy tpenv comp
        let delayedExpr = mkDelayedExpr coreExpr
        delayedExpr,tpenv

//-------------------------------------------------------------------------
// Typecheck "expr ... " constructs where "..." is a sequence of applications,
// type applications and dot-notation projections. First extract known
// type information from the "..." part to use during type checking.
//
// 'overallTy' is the type expected for the entire chain of expr + lookups.
// 'exprty' is the type of the expression on the left of the lookup chain.
//
// Unsophisticated applications can propagate information from the expected overall type 'overallTy' 
// through to the leading function type 'exprty'. This is because the application 
// unambiguously implies a function type 
//------------------------------------------------------------------------- 

and PropagateThenTcDelayed cenv overallTy env tpenv mExpr expr exprty (atomicFlag:ExprAtomicFlag) delayed = 
    
    let rec propagate delayedList mExpr exprty = 
        match delayedList with 
        | [] -> 
            // Avoid unifying twice: we're about to unify in TcDelayed 
            if nonNil delayed then 
                UnifyTypes cenv env mExpr overallTy exprty
        | DelayedSet _ :: _
        | DelayedDotLookup _ :: _ -> ()
        | DelayedTypeApp (_, _mTypeArgs, mExprAndTypeArgs) :: delayedList' ->
            // Note this case should not occur: would eventually give an "Unexpected type application" error in TcDelayed 
            propagate delayedList' mExprAndTypeArgs exprty 

        | DelayedApp (_, arg, mExprAndArg) :: delayedList' ->
            let denv = env.DisplayEnv
            match UnifyFunctionTypeUndoIfFailed cenv denv mExpr exprty with
            | Some (_,resultTy) -> 
                propagate delayedList' mExprAndArg resultTy 
            | None -> 
                let mArg = arg.Range
                match arg with 
                | SynExpr.CompExpr _ -> ()
                | _ -> 
                    // 'delayed' is about to be dropped on the floor, first do rudimentary checking to get name resolutions in its body
                    RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects_Delayed cenv env tpenv delayed 
                    error (NotAFunction(denv,overallTy,mExpr,mArg)) 

    propagate delayed expr.Range exprty
    TcDelayed cenv overallTy env tpenv mExpr expr exprty atomicFlag delayed


/// Typecheck "expr ... " constructs where "..." is a sequence of applications,
/// type applications and dot-notation projections.
and TcDelayed cenv overallTy env tpenv mExpr expr exprty (atomicFlag:ExprAtomicFlag) delayed = 

    // OK, we've typechecked the thing on the left of the delayed lookup chain. 
    // We can now record for posterity the type of this expression and the location of the expression. 
    if (atomicFlag = ExprAtomicFlag.Atomic) then
        CallExprHasTypeSink cenv.tcSink (mExpr,env.NameEnv,exprty, env.DisplayEnv,env.eAccessRights);

    match delayed with 
    | [] -> UnifyTypes cenv env mExpr overallTy exprty; expr.Expr,tpenv
    // expr.M(args) where x.M is a .NET method or index property 
    // expr.M(args) where x.M is a .NET method or index property 
    // expr.M where x.M is a .NET method or index property 
    | DelayedDotLookup (longId,mDotLookup) :: otherDelayed ->
         TcLookupThen cenv overallTy env tpenv mExpr expr.Expr exprty longId otherDelayed mDotLookup
    // f x 
    | DelayedApp (hpa, arg, mExprAndArg) :: otherDelayed ->
        TcFunctionApplicationThen cenv overallTy env tpenv mExprAndArg expr exprty arg hpa otherDelayed
    // f 
    | DelayedTypeApp (_, mTypeArgs, _mExprAndTypeArgs) :: _ ->
        error(Error(FSComp.SR.tcUnexpectedTypeArguments(), mTypeArgs))
    | DelayedSet _ :: _ ->      
        error(Error(FSComp.SR.tcInvalidAssignment(),mExpr))


/// Convert the delayed identifiers to a dot-lookup.
///
/// TcItemThen:   For StaticItem [.Lookup]          , mPrior is the range of StaticItem 
/// TcLookupThen: For expr.InstanceItem [.Lookup]   , mPrior is the range of expr.InstanceItem
and delayRest rest mPrior delayed = 
    match rest with 
    | [] -> delayed 
    | longId -> 
        let mPriorAndLongId = unionRanges mPrior (rangeOfLid longId)
        DelayedDotLookup (rest,mPriorAndLongId) :: delayed


//-------------------------------------------------------------------------
// TcFunctionApplicationThen: Typecheck "expr x" + projections
//------------------------------------------------------------------------- 

and TcFunctionApplicationThen cenv overallTy env tpenv mExprAndArg expr exprty (synArg: SynExpr) atomicFlag delayed = 
    
    let denv = env.DisplayEnv
    let mArg = synArg.Range
    let mFunExpr = expr.Range
    // If the type of 'synArg' unifies as a function type, then this is a function application, otherwise
    // it is an error or a computation expression
    match UnifyFunctionTypeUndoIfFailed cenv denv mFunExpr exprty with
    | Some (domainTy,resultTy) -> 

        // Notice the special case 'seq { ... }'. In this case 'seq' is actually a function in the F# library.
        // Set a flag in the syntax tree to say we noticed a leading 'seq'
        match synArg with 
        | SynExpr.CompExpr (false,isNotNakedRefCell,_comp,_m) -> 
            isNotNakedRefCell := 
                !isNotNakedRefCell
                || 
                (match expr with 
                 | ApplicableExpr(_,Expr.Op(TOp.Coerce,_,[Expr.App(Expr.Val(vf,_,_),_,_,_,_)],_),_) when valRefEq cenv.g vf cenv.g.seq_vref -> true 
                 | _ -> false)
        | _ -> ()

        let arg,tpenv = TcExpr cenv domainTy env tpenv synArg
        let exprAndArg = buildApp cenv expr exprty arg mExprAndArg
        TcDelayed cenv overallTy env tpenv mExprAndArg exprAndArg resultTy atomicFlag delayed
    | None -> 
        // OK, 'expr' doesn't have function type, but perhaps 'expr' is a computation expression builder, and 'arg' is '{ ... }' 
        match synArg with 
        | SynExpr.CompExpr (false,_isNotNakedRefCell,comp,_m) -> 
            let bodyOfCompExpr,tpenv = TcComputationOrSequenceExpression cenv env overallTy mFunExpr (Some(expr.Expr,exprty)) tpenv comp
            TcDelayed cenv overallTy env tpenv mExprAndArg (MakeApplicableExprNoFlex cenv bodyOfCompExpr) (tyOfExpr cenv.g bodyOfCompExpr) ExprAtomicFlag.NonAtomic delayed 
        | _ -> 
            error (NotAFunction(denv,overallTy,mFunExpr,mArg)) 

//-------------------------------------------------------------------------
// TcLongIdentThen : Typecheck "A.B.C.E.F ... " constructs
//------------------------------------------------------------------------- 

and TcLongIdentThen cenv overallTy env tpenv (LongIdentWithDots(longId,_)) delayed =

    let ad = env.eAccessRights
    let typeNameResInfo = 
        // Given 'MyOverloadedType.MySubType...' use arity of #given type arguments to help 
        // resolve type name lookup of 'MyOverloadedType' 
        // Also determine if type names should resolve to Item.Types or Item.CtorGroup 
        match delayed with 
        | DelayedTypeApp (tyargs, _, _) :: DelayedApp _ :: _ -> 
            TypeNameResolutionInfo(ResolveTypeNamesToCtors, TypeNameResolutionStaticArgsInfo.FromTyArgs tyargs)

        | DelayedTypeApp (tyargs, _, _) :: _ -> 
            // cases like 'MyType.Sth' but also only 'MyType.' 
            // (without LValue_get), which is needed for VS (when typing)
            TypeNameResolutionInfo(ResolveTypeNamesToTypeRefs, TypeNameResolutionStaticArgsInfo.FromTyArgs tyargs)

        | _ -> 
            TypeNameResolutionInfo.Default

    let nameResolutionResult = ResolveLongIdentAsExprAndComputeRange cenv.tcSink cenv.nameResolver (rangeOfLid longId) ad env.eNameResEnv typeNameResInfo longId
    TcItemThen cenv overallTy env tpenv nameResolutionResult delayed

//-------------------------------------------------------------------------
// Typecheck "item+projections" 
//------------------------------------------------------------------------- *)
// mItem is the textual range covered by the long identifiers that make up the item
and TcItemThen cenv overallTy env tpenv (item,mItem,rest,afterOverloadResolution) delayed =
    let delayed = delayRest rest mItem delayed
    let ad = env.eAccessRights
    match item with 
    // x where x is a union case or active pattern result tag. 
    | (Item.UnionCase _ | Item.ExnCase _ | Item.ActivePatternResult _) as item -> 
        // ucaseAppTy is the type of the union constructor applied to its (optional) argument 
        let ucaseAppTy = NewInferenceType ()
        let mkConstrApp,argtys = 
          match item with 
          | Item.ActivePatternResult(apinfo, _, n, _) -> 
              let aparity = apinfo.Names.Length
              match aparity with 
              | 0 | 1 -> 
                  let mkConstrApp = function [arg] -> arg | _ -> error(InternalError("ApplyUnionCaseOrExn",mItem))
                  mkConstrApp, [ucaseAppTy]
              | _ ->
                  let ucref = mkChoiceCaseRef cenv.g mItem aparity n
                  let _,_,tinst,_ = infoOfTyconRef mItem ucref.TyconRef
                  let ucinfo = UnionCaseInfo(tinst,ucref)
                  ApplyUnionCaseOrExnTypes mItem cenv env ucaseAppTy (Item.UnionCase ucinfo)
          | _ -> 
              ApplyUnionCaseOrExnTypes mItem cenv env ucaseAppTy item
        let nargtys = List.length argtys
        // Subsumption at data constructions if argument type is nominal prior to equations for any arguments or return types
        let flexes = argtys |> List.map (isTyparTy cenv.g >> not)
        
        let (|FittedArgs|_|) arg = 
            match arg with 
            | SynExprParen(SynExpr.Tuple(args,_,_),_,_,_)
            | SynExpr.Tuple(args,_,_)     when nargtys > 1 -> Some args
            | SynExprParen(arg,_,_,_)
            | arg when nargtys = 1 -> Some [arg]
            | _ -> None

        match delayed with 
        // This is where the constructor is applied to an argument 
        | ((DelayedApp (atomicFlag, (FittedArgs args as origArg), mExprAndArg))::otherDelayed) ->

            // assert the overall result type if possible
            if isNil otherDelayed then 
                UnifyTypes cenv env mExprAndArg overallTy ucaseAppTy; 

                  
            let nargs = List.length args
            UnionCaseOrExnCheck env nargtys nargs mExprAndArg;

            if nargtys > 1 then 
                let _,namedCallerArgs = GetMethodArgs origArg
                match namedCallerArgs with 
                | (_,id,_)::_ -> warning(Error(FSComp.SR.tcNamedArgumentsCannotBeUsedInUnionCaseConstructions(), id.idRange));
                | [] -> ()

            let args',tpenv = TcExprs cenv env mExprAndArg tpenv flexes argtys args
            PropagateThenTcDelayed cenv overallTy env tpenv mExprAndArg (MakeApplicableExprNoFlex cenv (mkConstrApp args')) ucaseAppTy atomicFlag otherDelayed

        | DelayedTypeApp (_x, mTypeArgs, _mExprAndTypeArgs) :: _delayed' ->
            error(Error(FSComp.SR.tcUnexpectedTypeArguments(),mTypeArgs))
        | _ -> 
            // Work out how many syntactic arguments we really expect. Also return a function that builds the overall 
            // expression, but don't apply this function until after we've checked that the number of arguments is OK 
            // (or else we would be building an invalid expression) 
            
            // Unit-taking active pattern result can be applied to no args 
            let nargs,mkExpr = 
                // This is where the constructor is an active pattern result applied to no argument 
                // Unit-taking active pattern result can be applied to no args 
                if (nargtys = 1 && match item with Item.ActivePatternResult _ -> true | _ -> false) then 
                    UnifyTypes cenv env mItem (List.head argtys) cenv.g.unit_ty;
                    1,(fun () -> mkConstrApp [mkUnit cenv.g mItem])

                // This is where the constructor expects no arguments and is applied to no argument 
                elif nargtys = 0 then 
                    0,(fun () -> mkConstrApp []) 
                else 
                    // This is where the constructor expects arguments but is not applied to arguments, hence build a lambda 
                    nargtys, 
                    (fun () -> 
                        let vs,args = argtys |> List.mapi (fun i ty -> mkCompGenLocal mItem ("arg"^string i) ty) |> List.unzip
                        let constrApp = mkConstrApp args
                        let lam = mkMultiLambda mItem vs (constrApp, tyOfExpr cenv.g constrApp)
                        lam)
            UnionCaseOrExnCheck env nargtys nargs mItem;
            let expr = mkExpr()
            let exprTy = tyOfExpr cenv.g expr
            PropagateThenTcDelayed cenv overallTy env tpenv mItem (MakeApplicableExprNoFlex cenv expr) exprTy ExprAtomicFlag.Atomic delayed 

    | Item.Types(nm,(typ::_)) -> 
    
        match delayed with 
        | ((DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs))::(DelayedDotLookup (longId,mLongId))::otherDelayed) ->

            // If Item.Types is returned then the typ will be of the form TType_app(tcref,genericTyargs) where tyargs 
            // is a fresh instantiation for tcref. TcNestedTypeApplication will chop off precisely #genericTyargs args 
            // and replace them by 'tyargs' 
            let typ,tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mExprAndTypeArgs typ tyargs

            // Report information about the whole expression including type arguments to VS
            let item = Item.Types(nm, [typ])
            CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
            TcItemThen cenv overallTy env tpenv (ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver (unionRanges mExprAndTypeArgs mLongId) ad env.eNameResEnv typ longId IgnoreOverrides true) otherDelayed
            
        | ((DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs))::_delayed') ->
            // A case where we have an incomplete name e.g. 'Foo.' - we still want to report it to VS!
            let typ,_ = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mExprAndTypeArgs typ tyargs
            let item = Item.Types(nm, [typ])
            CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)
            
            // Same error as in the following case
            error(Error(FSComp.SR.tcInvalidUseOfTypeName(),mItem));
            
        | _ -> 
            // In this case the type is not generic, and indeed we should never have returned Item.Types. 
            // That's because ResolveTypeNamesToCtors should have been set at the original 
            // call to ResolveLongIdentAsExprAndComputeRange 
            error(Error(FSComp.SR.tcInvalidUseOfTypeName(),mItem));

    | Item.MethodGroup (methodName,minfos) -> 
        // Static method calls Type.Foo(arg1,...,argn) 
        let meths = List.map (fun minfo -> minfo,None) minfos
        let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForMethods
        match delayed with 
        | (DelayedApp (atomicFlag, arg, mExprAndArg)::otherDelayed) ->
            TcMethodApplicationThen cenv env overallTy tpenv None [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed

        | (DelayedTypeApp(tys, mTypeArgs, mExprAndTypeArgs) :: DelayedApp(atomicFlag, arg, mExprAndArg) :: otherDelayed) ->
            let tyargs,tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tys mTypeArgs
            
            // NOTE: This doesn't take instantiation into account
            CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs,env.NameEnv,item (* ! *), item, ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)                        
            TcMethodApplicationThen cenv env overallTy tpenv (Some tyargs) [] mExprAndArg mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [arg] atomicFlag otherDelayed
        | _ -> 
            TcMethodApplicationThen cenv env overallTy tpenv None [] mItem mItem methodName ad NeverMutates false meths afterTcOverloadResolution NormalValUse [] ExprAtomicFlag.Atomic delayed 

    | Item.CtorGroup(_,minfos) ->
        let objTy = 
            match minfos with 
            | (minfo :: _) -> minfo.EnclosingType
            | [] -> error(Error(FSComp.SR.tcTypeHasNoAccessibleConstructor(),mItem))
        let afterTcOverloadResolution = AfterTcOverloadResolution.ForConstructors afterOverloadResolution
        match delayed with 
        | ((DelayedApp (_, arg, mExprAndArg))::otherDelayed) ->

            CallExprHasTypeSink cenv.tcSink (mExprAndArg, env.NameEnv,objTy, env.DisplayEnv, env.eAccessRights);
            TcCtorCall true cenv env tpenv overallTy objTy (Some mItem) item false arg mExprAndArg otherDelayed (Some afterTcOverloadResolution)

        | ((DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs))::(DelayedApp (_, arg, mExprAndArg))::otherDelayed) ->

            let objTy,tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mExprAndTypeArgs objTy tyargs
            CallExprHasTypeSink cenv.tcSink (mExprAndArg, env.NameEnv, objTy, env.DisplayEnv, env.eAccessRights);
            minfos |> List.iter (fun minfo -> UnifyTypes cenv env mExprAndTypeArgs minfo.EnclosingType objTy);
            TcCtorCall true cenv env tpenv overallTy objTy (Some mExprAndTypeArgs) item false arg mExprAndArg otherDelayed (Some afterTcOverloadResolution)

        | _ -> 
            if minfos.Length = 1 then 
               let text = List.map (NicePrint.stringOfMethInfo cenv.amap mItem env.DisplayEnv) minfos
               error(Error(FSComp.SR.tcInvalidUseOfTypeNameOrConstructorWithOverloads(String.concat "\n\r" text),mItem))
            else 
               error(Error(FSComp.SR.tcInvalidUseOfTypeNameOrConstructor(),mItem))

    | Item.FakeInterfaceCtor _ ->
        error(Error(FSComp.SR.tcInvalidUseOfInterfaceType(),mItem))
    | Item.ImplicitOp id ->

        let isPrefix = PrettyNaming.IsPrefixOperator id.idText
        let isTernary = PrettyNaming.IsTernaryOperator id.idText

        let argData = 
            if isPrefix then 
                [ Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true) ]
            elif isTernary then 
                [ Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true);
                  Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true);
                  Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true) ]
            else
                [ Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true);
                  Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true) ]
                
        let retTyData = Typar(mkSynId mItem (cenv.synArgNameGenerator.New()), HeadTypeStaticReq,true)
        let argTypars = argData |> List.map (fun d -> NewTypar (TyparKind.Type, TyparRigidity.Flexible,d,false,TyparDynamicReq.Yes,[],false,false))
        let retTypar = NewTypar (TyparKind.Type, TyparRigidity.Flexible,retTyData,false,TyparDynamicReq.Yes,[],false,false)
        let argTys = argTypars |> List.map mkTyparTy 
        let retTy = mkTyparTy retTypar

        let vs,ves = argTys |> List.mapi (fun i ty -> mkCompGenLocal mItem ("arg"^string i) ty) |> List.unzip

        let memberFlags = StaticMemberFlags MemberKind.Member
        let logicalCompiledName = ComputeLogicalName id memberFlags
        let traitInfo = TTrait(argTys,logicalCompiledName,memberFlags,argTys,Some retTy,ref None)

        AddCxMethodConstraint env.DisplayEnv cenv.css mItem NoTrace traitInfo;
      
        let expr = Expr.Op(TOp.TraitCall(traitInfo), [], ves, mItem)
        let expr = mkLambdas mItem [] vs (expr,retTy)
        PropagateThenTcDelayed cenv overallTy env tpenv mItem (MakeApplicableExprNoFlex cenv expr) (tyOfExpr cenv.g expr) ExprAtomicFlag.NonAtomic delayed
        
    | Item.DelegateCtor typ ->
        match delayed with 
        | ((DelayedApp (atomicFlag, arg, mItemAndArg))::otherDelayed) ->
            TcNewDelegateThen cenv overallTy env tpenv mItem mItemAndArg typ arg atomicFlag otherDelayed
        | ((DelayedTypeApp(tyargs, _mTypeArgs, mItemAndTypeArgs))::(DelayedApp (atomicFlag, arg, mItemAndArg))::otherDelayed) ->
            let typ,tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv mItemAndTypeArgs typ tyargs
            
            // Report information about the whole expression including type arguments to VS
            let item = Item.DelegateCtor typ
            CallNameResolutionSink cenv.tcSink (mItemAndTypeArgs,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,env.eAccessRights)            
            TcNewDelegateThen cenv overallTy env tpenv mItem mItemAndArg typ arg atomicFlag otherDelayed
        | _ -> 
            error(Error(FSComp.SR.tcInvalidUseOfDelegate(),mItem))

    | Item.Value vref -> 

        match delayed with 
        // Mutable value set: 'v <- e' 
        | DelayedSet(e2,mStmt) :: otherDelayed ->
            if nonNil otherDelayed then error(Error(FSComp.SR.tcInvalidAssignment(),mStmt));
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            let vty = vref.Type
            let vty2 = 
                if isByrefTy cenv.g vty then 
                    destByrefTy cenv.g vty 
                else 
                    if not vref.IsMutable then error (ValNotMutable(env.DisplayEnv,vref,mStmt));
                    vty 
            // Always allow subsumption on assignment to fields
            let e2',tpenv = TcExprFlex cenv true vty2 env tpenv e2
            let vexp = 
                if isByrefTy cenv.g vty then 
                  mkAddrSet mStmt vref e2'
                else 
                  mkValSet mStmt vref e2'
                
            PropagateThenTcDelayed cenv overallTy env tpenv mStmt (MakeApplicableExprNoFlex cenv vexp) (tyOfExpr cenv.g vexp) ExprAtomicFlag.NonAtomic otherDelayed

        // Value instantiation: v ... 
        | (DelayedTypeApp(tys, _mTypeArgs, mExprAndTypeArgs)::otherDelayed) ->
            // Note: we know this is a NormalValUse or PossibleConstrainedCall because: 
            //   - it isn't a CtorValUsedAsSuperInit 
            //   - it isn't a CtorValUsedAsSelfInit 
            //   - it isn't a VSlotDirectCall (uses of base values do not take type arguments 
            let checkTys tpenv kinds = TcTypesOrMeasures (Some kinds) cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tys mItem
            let (vexp, isSpecial, _, _, tpenv) = TcVal true cenv env tpenv vref (Some (NormalValUse, checkTys)) mItem
            let vexp = (if isSpecial then MakeApplicableExprNoFlex cenv vexp else MakeApplicableExprWithFlex cenv env vexp)
            // type of the expression (e.g. For the source text "sizeof" vexpty will be the TAST type for int32)
            let vexpty = vexp.Type 
            
            // We need to eventually record the type resolution for an expression, but this is done
            // inside PropagateThenTcDelayed, so we don't have to explicitly call 'CallExprHasTypeSink' here            
            PropagateThenTcDelayed cenv overallTy env tpenv mExprAndTypeArgs vexp vexpty ExprAtomicFlag.Atomic otherDelayed

        // Value get 
        | _ ->  
            let (vexp, isSpecial, _, _, tpenv) = TcVal true cenv env tpenv vref None mItem
            let vexp = (if isSpecial then MakeApplicableExprNoFlex cenv vexp else MakeApplicableExprWithFlex cenv env vexp)
            let vexpty = vexp.Type
            PropagateThenTcDelayed cenv overallTy env tpenv mItem vexp vexpty ExprAtomicFlag.Atomic delayed
        
    | Item.Property (nm,pinfos) ->
        if isNil pinfos then error (InternalError ("Unexpected error: empty property list",mItem));
        let pinfo = List.head pinfos
        let _, tyargsOpt,args,delayed,tpenv = 
            if pinfo.IsIndexer 
            then GetMemberApplicationArgs delayed cenv env tpenv 
            else ExprAtomicFlag.Atomic,None,[mkSynUnit mItem],delayed,tpenv
        if not pinfo.IsStatic then error (Error (FSComp.SR.tcPropertyIsNotStatic(nm),mItem));
        match delayed with 
        | DelayedSet(e2,mStmt) :: otherDelayed ->
            let args = if pinfo.IsIndexer then args else []
            if nonNil otherDelayed then error(Error(FSComp.SR.tcInvalidAssignment(),mStmt));
            // Static Property Set (possibly indexer) 
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            let meths = pinfos |> SettersOfPropInfos
            if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem));
            let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
            // Note: static calls never mutate a struct object argument
            TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mStmt mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse (args@[e2]) ExprAtomicFlag.NonAtomic otherDelayed
        | _ -> 
            // Static Property Get (possibly indexer) 
            let meths = pinfos |> GettersOfPropInfos
            let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
            if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem));
            // Note: static calls never mutate a struct object argument
            TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt [] mItem mItem nm ad NeverMutates true meths afterTcOverloadResolution NormalValUse args ExprAtomicFlag.Atomic delayed

    | Item.ILField finfo -> 

        CheckILFieldInfoAccessible cenv.g cenv.amap mItem ad finfo;
        if not finfo.IsStatic then error (Error (FSComp.SR.tcFieldIsNotStatic(finfo.FieldName),mItem));
        CheckILFieldAttributes cenv.g finfo mItem;
        let fref = finfo.ILFieldRef
        let exprty = finfo.FieldType(cenv.amap,mItem)
        match delayed with 
        | DelayedSet(e2,mStmt) :: _delayed' ->
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            // Always allow subsumption on assignment to fields
            let e2',tpenv = TcExprFlex cenv true exprty env tpenv e2
            let expr = BuildILStaticFieldSet mStmt finfo e2'
            expr,tpenv
        | _ -> 
           // Get static IL field 
            let expr = 
              match finfo.LiteralValue with 
              | Some lit -> 
                  Expr.Const(TcFieldInit mItem lit,mItem,exprty) 
              | None -> 
                let isValueType = finfo.IsValueType
                let valu = if isValueType then AsValue else AsObject

                // The empty instantiation on the fspec is OK, since we make the correct fspec in Ilxgen.gen_asm 
                // This ensures we always get the type instantiation right when doing this from 
                // polymorphic code, after inlining etc. 
                let fspec = mkILFieldSpec(fref,mkILNamedTy valu fref.EnclosingTypeRef [])

                // Add an I_nop if this is an initonly field to make sure we never recognize it as an lvalue. See mkExprAddrOfExpr. 
                mkAsmExpr ([ mkNormalLdsfld fspec ] @ (if finfo.IsInitOnly then [ AI_nop ] else []), finfo.TypeInst,[],[exprty],mItem)
            PropagateThenTcDelayed cenv overallTy env tpenv mItem (MakeApplicableExprWithFlex cenv env expr) exprty ExprAtomicFlag.Atomic delayed

    | Item.RecdField rfinfo -> 
        // Get static F# field or literal 
        CheckRecdFieldInfoAccessible mItem ad rfinfo;
        if not rfinfo.IsStatic then error (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.Name),mItem));
        CheckRecdFieldInfoAttributes cenv.g rfinfo mItem |> CommitOperationResult;        
        let fref = rfinfo.RecdFieldRef
        let fieldTy = rfinfo.FieldType
        match delayed with 
        | DelayedSet(e2,mStmt) :: otherDelayed ->
            if nonNil otherDelayed then error(Error(FSComp.SR.tcInvalidAssignment(),mStmt));
        
            // Set static F# field 
            CheckRecdFieldMutation mItem env.DisplayEnv rfinfo;
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            let fieldTy = rfinfo.FieldType
            // Always allow subsumption on assignment to fields
            let e2',tpenv = TcExprFlex cenv true fieldTy env tpenv e2
            let expr = mkStaticRecdFieldSet (rfinfo.RecdFieldRef,rfinfo.TypeInst,e2',mStmt)
            expr,tpenv
            
        | _  ->
            let exprty = fieldTy
            let expr = 
              match rfinfo.LiteralValue with 
              // Get literal F# field 
              | Some lit -> Expr.Const(lit,mItem,exprty)
              // Get static F# field 
              | None -> mkStaticRecdFieldGet (fref,rfinfo.TypeInst,mItem) 
            PropagateThenTcDelayed cenv overallTy env tpenv mItem (MakeApplicableExprWithFlex cenv env expr) exprty ExprAtomicFlag.Atomic delayed

    | Item.Event einfo -> 
        // Instance IL event (fake up event-as-value) 
        TcEventValueThen cenv overallTy env tpenv mItem mItem None einfo delayed
     
    | Item.CustomOperation (nm,usageTextOpt,_) -> 
        // 'delayed' is about to be dropped on the floor, first do rudimentary checking to get name resolutions in its body 
        RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects_Delayed cenv env tpenv delayed 
        match usageTextOpt() with
        | None -> error(Error(FSComp.SR.tcCustomOperationNotUsedCorrectly(nm), mItem))
        | Some usageText -> error(Error(FSComp.SR.tcCustomOperationNotUsedCorrectly2(nm,usageText), mItem))
    | _ -> error(Error(FSComp.SR.tcLookupMayNotBeUsedHere(), mItem))


//-------------------------------------------------------------------------
// Typecheck "expr.A.B.C ... " constructs
//------------------------------------------------------------------------- 

and GetMemberApplicationArgs delayed cenv env tpenv =
    match delayed with 
    | DelayedApp (atomicFlag, arg, _) :: otherDelayed -> 
        atomicFlag, None, [arg], otherDelayed, tpenv
    | DelayedTypeApp(tyargs, mTypeArgs, _) :: DelayedApp (atomicFlag, arg, _mExprAndArg) :: otherDelayed ->
        let tyargs,tpenv = TcTypesOrMeasures None cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv tyargs mTypeArgs
        (atomicFlag, Some tyargs, [arg], otherDelayed, tpenv)
    | otherDelayed ->
        (ExprAtomicFlag.NonAtomic, None, [], otherDelayed, tpenv)


and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId delayed mExprAndLongId =
    let objArgs = [objExpr]
    let ad = env.eAccessRights

    // 'base' calls use a different resolution strategy when finding methods. 
    let findFlag = 
        let baseCall = IsBaseCall objArgs
        (if baseCall then PreferOverrides else IgnoreOverrides)
        
    // Canonicalize inference problem prior to '.' lookup on variable types 
    if isTyparTy cenv.g objExprTy then 
        GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,env.DisplayEnv,mExprAndLongId) (freeInTypeLeftToRight cenv.g false objExprTy);
    
    let item,mItem,rest,afterOverloadResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver mExprAndLongId ad env.eNameResEnv objExprTy longId findFlag false
    let mExprAndItem = unionRanges mObjExpr mItem
    let delayed = delayRest rest mExprAndItem delayed

    match item with
    | Item.MethodGroup (methodName,minfos) -> 
        let atomicFlag,tyargsOpt,args,delayed,tpenv = GetMemberApplicationArgs delayed cenv env tpenv 
        let meths = List.map (fun minfo -> minfo,None) minfos
        let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForMethods
        // We pass PossiblyMutates here because these may actually mutate a value type object 
        // To get better warnings we special case some of the few known mutate-a-struct method names 
        let mutates = (if methodName = "MoveNext" || methodName = "GetNextArg" then DefinitelyMutates else PossiblyMutates)
        TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterTcOverloadResolution NormalValUse args atomicFlag delayed 

    | Item.Property (nm,pinfos) ->
        // Instance property 
        if isNil pinfos then error (InternalError ("Unexpected error: empty property list",mItem)); 
        let pinfo = List.head pinfos
        let atomicFlag,tyargsOpt,args,delayed,tpenv = 
            if pinfo.IsIndexer
            then GetMemberApplicationArgs delayed cenv env tpenv 
            else ExprAtomicFlag.Atomic,None,[mkSynUnit mItem],delayed,tpenv
        if pinfo.IsStatic then error (Error (FSComp.SR.tcPropertyIsStatic(nm),mItem));
        

        match delayed with 
        | DelayedSet(e2,mStmt) :: otherDelayed ->
            let args = if pinfo.IsIndexer then args else []
            if nonNil otherDelayed then error(Error(FSComp.SR.tcInvalidAssignment(),mStmt));
            // Instance property setter 
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            let meths = SettersOfPropInfos pinfos
            if isNil meths then error (Error (FSComp.SR.tcPropertyCannotBeSet1 nm,mItem))
            let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm SettersOfPropInfos
            let mut = (if isStructTy cenv.g (tyOfExpr cenv.g objExpr) then DefinitelyMutates else PossiblyMutates)
            TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mStmt mItem nm ad mut true meths afterTcOverloadResolution NormalValUse (args @ [e2]) atomicFlag [] 
        | _ ->                   
            // Instance property getter
            let meths = GettersOfPropInfos pinfos
            if isNil meths then error (Error (FSComp.SR.tcPropertyIsNotReadable(nm),mItem));
            let afterTcOverloadResolution = afterOverloadResolution |> AfterTcOverloadResolution.ForProperties nm GettersOfPropInfos
            TcMethodApplicationThen cenv env overallTy tpenv tyargsOpt objArgs mExprAndItem mItem nm ad PossiblyMutates true meths afterTcOverloadResolution NormalValUse args atomicFlag delayed 
        
    | Item.RecdField rfinfo ->
        // Get or set instance F# field or literal 
        RecdFieldInstanceChecks cenv.g ad mItem rfinfo;
        let tgty = rfinfo.EnclosingType
        let valu = isStructTy cenv.g tgty
        AddCxTypeMustSubsumeType env.DisplayEnv cenv.css mItem NoTrace tgty objExprTy; 
        let objExpr = if valu then objExpr else mkCoerceExpr(objExpr,tgty,mExprAndItem,objExprTy)
        let fieldTy = rfinfo.FieldType
        match delayed with 
        | DelayedSet(e2,mStmt) :: otherDelayed ->
            // Mutable value set: 'v <- e' 
            if nonNil otherDelayed then error(Error(FSComp.SR.tcInvalidAssignment(),mItem));
            CheckRecdFieldMutation mItem env.DisplayEnv rfinfo;
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty;
            // Always allow subsumption on assignment to fields
            let e2',tpenv = TcExprFlex cenv true fieldTy env tpenv e2
            BuildRecdFieldSet cenv.g mStmt objExpr rfinfo e2',tpenv

        | _ ->

            // Instance F# Record or Class field 
            let objExpr' = mkRecdFieldGet cenv.g (objExpr,rfinfo.RecdFieldRef,rfinfo.TypeInst,mExprAndItem)
            PropagateThenTcDelayed cenv overallTy env tpenv mExprAndItem (MakeApplicableExprWithFlex cenv env objExpr') fieldTy ExprAtomicFlag.Atomic delayed 
        
    | Item.ILField finfo -> 
        // Get or set instance IL field 
        ILFieldInstanceChecks  cenv.g cenv.amap ad mItem finfo;
        let exprty = finfo.FieldType(cenv.amap,mItem)
        
        match delayed with 
        // Set instance IL field 
        | DelayedSet(e2,mStmt) :: _delayed' ->
            UnifyTypes cenv env mStmt overallTy cenv.g.unit_ty
            // Always allow subsumption on assignment to fields
            let e2',tpenv = TcExprFlex cenv true exprty env tpenv e2
            let expr = BuildILFieldSet cenv.g mStmt objExpr finfo e2'
            expr,tpenv
        | _ ->        
            let expr = BuildILFieldGet cenv.g cenv.amap mExprAndItem objExpr finfo 
            PropagateThenTcDelayed cenv overallTy env tpenv mExprAndItem (MakeApplicableExprWithFlex cenv env expr) exprty ExprAtomicFlag.Atomic delayed 

    | Item.Event einfo -> 
        // Instance IL event (fake up event-as-value) 
        TcEventValueThen cenv overallTy env tpenv mItem mExprAndItem (Some(objExpr,objExprTy)) einfo delayed
     
    | (Item.FakeInterfaceCtor _ | Item.DelegateCtor _) -> error (Error (FSComp.SR.tcConstructorsCannotBeFirstClassValues(), mItem))
    | _ -> error (Error (FSComp.SR.tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields(), mItem))

and TcEventValueThen cenv overallTy env tpenv mItem mExprAndItem objDetails (einfo:EventInfo) delayed = 
    // Instance IL event (fake up event-as-value) 
    let nm = einfo.EventName
    let ad = env.eAccessRights
    match objDetails, einfo.IsStatic with 
    | Some _, true -> error (Error (FSComp.SR.tcEventIsStatic(nm),mItem));
    | None, false -> error (Error (FSComp.SR.tcEventIsNotStatic(nm),mItem));
    | _ -> ()

    let delegateType = einfo.GetDelegateType(cenv.amap,mItem)
    let (SigOfFunctionForDelegate(invokeMethInfo,compiledViewOfDelArgTys,_,_)) = GetSigOfFunctionForDelegate cenv.infoReader delegateType mItem ad
    let objArgs = Option.toList (Option.map fst objDetails)
    MethInfoChecks cenv.g cenv.amap true None objArgs env.eAccessRights mItem invokeMethInfo;
    
    // This checks for and drops the 'object' sender 
    let argsTy = ArgsTypOfEventInfo cenv.infoReader mItem ad einfo
    if not (slotSigHasVoidReturnTy (invokeMethInfo.GetSlotSig(cenv.amap, mItem))) then errorR (nonStandardEventError einfo.EventName mItem);
    let delEventTy = mkIEventType cenv.g delegateType argsTy

    let bindObjArgs f =
        match objDetails with 
        | None -> f []
        | Some (objExpr,objExprTy) -> mkCompGenLetIn mItem "eventTarget" objExprTy objExpr (fun (_,ve) -> f [ve]) 

    // Bind the object target expression to make sure we only run its sdie effects once, and to make 
    // sure if it's a mutable reference then we dereference it - see FSharp 1.0 bug 942 
    let expr = 
        bindObjArgs (fun objVars -> 
             //     EventHelper ((fun d -> e.add_X(d)), (fun d -> e.remove_X(d)), (fun f -> new 'Delegate(f)))
            mkCallCreateEvent cenv.g mItem delegateType argsTy
               (let dv,de = mkCompGenLocal mItem "eventDelegate" delegateType
                let callExpr,_ = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates mItem false (einfo.GetAddMethod()) NormalValUse [] objVars [de]
                mkLambda mItem dv (callExpr, cenv.g.unit_ty))
               (let dv,de = mkCompGenLocal mItem "eventDelegate" delegateType
                let callExpr,_ = BuildPossiblyConditionalMethodCall cenv env PossiblyMutates mItem false (einfo.GetRemoveMethod()) NormalValUse [] objVars [de]
                mkLambda mItem dv (callExpr, cenv.g.unit_ty))
               (let fvty = (cenv.g.obj_ty --> (argsTy --> cenv.g.unit_ty))
                let fv,fe = mkCompGenLocal mItem "callback" fvty
                let createExpr = BuildNewDelegateExpr (Some einfo, cenv.g, cenv.amap, delegateType, invokeMethInfo, compiledViewOfDelArgTys, fe, fvty, mItem)
                mkLambda mItem fv (createExpr, delegateType)))

    let exprty = delEventTy
    PropagateThenTcDelayed cenv overallTy env tpenv mExprAndItem (MakeApplicableExprNoFlex cenv expr) exprty ExprAtomicFlag.Atomic delayed 
 

//-------------------------------------------------------------------------
// Method uses can calls
//------------------------------------------------------------------------- 

/// Typecheck method/member calls and uses of members as first-class values.
and TcMethodApplicationThen 
       cenv 
       env
       overallTy           // The type of the overall expression including "delayed". THe method "application" may actually be a use of a member as 
                    // a first-class function value, when this would be a function type. 
       tpenv 
       userTypeArgs // The return type of the overall expression including "delayed" 
       objArgs      // The 'obj' arguments in obj.M(...) and obj.M, if any 
       m           // The range of the object argument or whole application. We immediately union this with the range of the arguments
       mItem       // The range of the item that resolved to the method name
       methodName  // string, name of the method 
       ad          // accessibility rights of the caller 
       mut         // what do we know/assume about whether this method will mutate or not? 
       isProp      // is this a property call? Used for better error messages and passed to BuildMethodCall 
       meths       // the set of methods we may be calling 
       afterTcOverloadResolution // do we need to notify sink after overload resolution
       isSuperInit // is this a special invocation, e.g. a super-class constructor call. Passed through to BuildMethodCall 
       args        // the _syntactic_ method arguments, not yet type checked. 
       atomicFlag  // is the expression atomic or not? 
       delayed     // further lookups and applications that follow this 
     =

    // Nb. args is always of List.length <= 1 except for indexed setters, when it is 2  
    let mWholeExpr = (m,args) ||> List.fold (fun m arg -> unionRanges m arg.Range) 

    // Work out if we know anything about the return type of the overall expression. If there are any delayed 
    // lookups then we don't know anything. 
    let exprTy = if isNil delayed then overallTy else NewInferenceType ()

    // Call the helper below to do the real checking 
    let (expr,attributeAssignedNamedItems,delayed),tpenv = 
        TcMethodApplication false cenv env tpenv userTypeArgs objArgs mWholeExpr mItem methodName ad mut isProp meths afterTcOverloadResolution isSuperInit args exprTy delayed

    // Give errors if some things couldn't be assigned 
    if nonNil attributeAssignedNamedItems then (
        let (CallerNamedArg(id,_)) = List.head attributeAssignedNamedItems
        errorR(Error(FSComp.SR.tcNamedArgumentDidNotMatch(id.idText),id.idRange));
    );


    // Resolve the "delayed" lookups 
    let exprty = (tyOfExpr cenv.g expr)

    PropagateThenTcDelayed cenv overallTy env tpenv mWholeExpr (MakeApplicableExprNoFlex cenv expr) exprty atomicFlag delayed 

and GetNewInferenceTypeForMethodArg cenv x =
    match x with 
    | SynExprParen(a,_,_,_) -> GetNewInferenceTypeForMethodArg cenv a
    | SynExpr.AddressOf(true,a,_,_) -> mkByrefTy cenv.g (GetNewInferenceTypeForMethodArg cenv a)
    | SynExpr.Lambda(_,_,_,a,_) -> (NewInferenceType () --> GetNewInferenceTypeForMethodArg cenv a)
    | _ -> NewInferenceType ()

/// Method calls, property lookups, attribute constructions etc. get checked through here 
and TcMethodApplication 
        checkingAttributeCall 
        cenv 
        env 
        tpenv 
        tyargsOpt
        objArgs 
        mMethExpr  // range of the entire method expression 
        mItem
        methodName 
        ad 
        mut 
        isProp 
        calledMethsAndProps 
        afterTcOverloadResolution
        isSuperInit 
        curriedCallerArgs 
        exprTy 
        delayed
    =

    let denv = env.DisplayEnv

    let isSimpleFormalArg (isParamArrayArg,isOutArg,optArgInfo: OptionalArgInfo) = 
        not isParamArrayArg && not isOutArg && not optArgInfo.IsOptional    
    
    let objArgTys = objArgs |> List.map (tyOfExpr cenv.g)

    let calledMeths = calledMethsAndProps |> List.map fst

    // Uses of curried members are ALWAYS treated as if they are first class uses of members. 
    // Curried members may not be overloaded (checked at use-site for curried members brought into scope through extension members)
    let curriedCallerArgs,exprTy,delayed = 
        match calledMeths with 
        | [calledMeth] when not isProp && calledMeth.NumArgs.Length > 1 ->
            [], NewInferenceType (),[ for x in curriedCallerArgs -> DelayedApp(ExprAtomicFlag.NonAtomic, x, x.Range) ] @ delayed
        | _ when not isProp && calledMeths |> List.exists (fun calledMeth -> calledMeth.NumArgs.Length > 1) ->
            // This condition should only apply when multiple conflicting curried extension members are brought into scope
            error(Error(FSComp.SR.tcOverloadsCannotHaveCurriedArguments(),mMethExpr))
        | _ -> 
            curriedCallerArgs,exprTy,delayed

    let candidateMethsAndProps = 
        match calledMethsAndProps |> List.filter (fun (meth,_prop) -> (IsMethInfoAccessible cenv.amap mItem ad meth)) with 
        | [] -> calledMethsAndProps 
        | accessibleMeths -> accessibleMeths            

    let candidates = candidateMethsAndProps |> List.map fst


    // Split the syntactic arguments (if any) into named and unnamed parameters 
    //
    // In one case (the second "single named item" rule) we delay the application of a
    // argument until we've produced a lambda that detuples an input tuple
    let curriedCallerArgsOpt, unnamedDelayedCallerArgExprOpt, exprTy = 
      match curriedCallerArgs with 
      | [] -> 
          None,None,exprTy
      | _ -> 
          let unnamedCurriedCallerArgs,namedCurriedCallerArgs = curriedCallerArgs |> List.map GetMethodArgs |> List.unzip 
          
          // There is an mismatch when _uses_ of indexed property setters in the tc.fs code that calls this function. 
          // The arguments are passed as if they are curried with arity [numberOfIndexParameters;1], however in the TAST, indexed property setters
          // are uncurried and have arity [numberOfIndexParameters+1].
          //
          // Here we work around this mismatch by crunching all property argument lists to uncirred form. 
          // Ideally the problem needs to be solved at its root cause at the callsites to this function
          let unnamedCurriedCallerArgs,namedCurriedCallerArgs = 
              if isProp then 
                  [List.concat unnamedCurriedCallerArgs], [List.concat namedCurriedCallerArgs]
              else 
                  unnamedCurriedCallerArgs,namedCurriedCallerArgs
          
          let MakeUnnamedCallerArgInfo x = (x, GetNewInferenceTypeForMethodArg cenv x, x.Range)

          // "single named item" rule. This is where we have a single accessible method 
          //      member x.M(arg1) 
          // being used with  
          //      x.M (x,y) 
          // Without this rule this requires 
          //      x.M ((x,y)) 
          match candidates with 
          | [calledMeth] 
                when (namedCurriedCallerArgs |> List.forall isNil && 
                      let curriedCalledArgs = calledMeth.GetParamAttribs(cenv.amap, mItem)
                      curriedCalledArgs.Length = 1 &&
                      curriedCalledArgs.Head.Length = 1 && 
                      curriedCalledArgs.Head.Head |> isSimpleFormalArg) ->
              let unnamedCurriedCallerArgs = curriedCallerArgs |> List.map (MakeUnnamedCallerArgInfo >> List.singleton)
              let namedCurriedCallerArgs = namedCurriedCallerArgs |> List.map (fun _ -> [])
              (Some (unnamedCurriedCallerArgs,namedCurriedCallerArgs), None, exprTy)

          // "single named item" rule. This is where we have a single accessible method 
          //      member x.M(arg1,arg2) 
          // being used with  
          //      x.M p
          // We typecheck this as if it has been written "(fun (v1,v2) -> x.M(v1,v2))  p" 
          // Without this rule this requires 
          //      x.M (fst p,snd p) 
          | [calledMeth] 
                when (namedCurriedCallerArgs |> List.forall isNil && 
                      unnamedCurriedCallerArgs.Length = 1 &&
                      unnamedCurriedCallerArgs.Head.Length = 1 && 
                      let curriedCalledArgs = calledMeth.GetParamAttribs(cenv.amap, mItem)
                      curriedCalledArgs.Length = 1 &&
                      curriedCalledArgs.Head.Length > 1 &&
                      curriedCalledArgs.Head |> List.forall isSimpleFormalArg) ->

              // The call lambda has function type
              let exprTy = mkFunTy (NewInferenceType ()) exprTy
              
              (None, Some unnamedCurriedCallerArgs.Head.Head, exprTy)

          | _ ->
              let unnamedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.mapSquared MakeUnnamedCallerArgInfo
              let namedCurriedCallerArgs = namedCurriedCallerArgs |> List.mapSquared (fun (isOpt,nm,x) -> 
                let ty = GetNewInferenceTypeForMethodArg cenv x
                // #435263 : compiler crash with .net optional parameters and F# optional syntax
                // named optional arguments should always have option type
                let ty = if isOpt then mkOptionTy denv.g ty else ty
                nm,isOpt,x,ty, x.Range
                )

              (Some (unnamedCurriedCallerArgs, namedCurriedCallerArgs), None, exprTy)
    

    let CalledMethHasSingleArgumentGroupOfThisLength n (calledMeth:MethInfo) =
       let curriedMethodArgAttribs = calledMeth.GetParamAttribs(cenv.amap, mItem)
       curriedMethodArgAttribs.Length = 1 && 
       curriedMethodArgAttribs.Head.Length = n

    let GenerateMatchingSimpleArgumentTypes (calledMeth:MethInfo) =
        let curriedMethodArgAttribs = calledMeth.GetParamAttribs(cenv.amap, mItem)
        curriedMethodArgAttribs 
        |> List.map (List.filter isSimpleFormalArg)
        |> List.map (NewInferenceTypes)

    let UnifyMatchingSimpleArgumentTypes exprTy (calledMeth:MethInfo) =
        let curriedArgTys = GenerateMatchingSimpleArgumentTypes calledMeth
        let returnTy = 
            (exprTy,curriedArgTys) ||>  List.fold (fun exprTy argTys -> 
                let domainTy,resultTy = UnifyFunctionType None cenv denv mMethExpr exprTy
                UnifyTypes cenv env mMethExpr  domainTy (mkTupledTy cenv.g argTys);
                resultTy);
        curriedArgTys,returnTy

    if isProp && isNone curriedCallerArgsOpt then 
        error(Error(FSComp.SR.parsIndexerPropertyRequiresAtLeastOneArgument(),mItem))

    // STEP 1. UnifyUniqueOverloading. This happens BEFORE we type check the arguments. 
    // Extract what we know about the caller arguments, either type-directed if 
    // no arguments are given or else based on the syntax of the arguments. 
    let uniquelyResolved,preArgumentTypeCheckingCalledMethGroup = 
        let dummyExpr = mkUnit cenv.g mItem
      
        // Build the CallerArg values for the caller's arguments. 
        // Fake up some arguments if this is the use of a method as a first class function 
        let unnamedCurriedCallerArgs,namedCurriedCallerArgs,returnTy = 

            match curriedCallerArgsOpt,candidates with 
            // "single named item" rule. This is where we have a single accessible method 
            //      memeber x.M(arg1,...,argN) 
            // being used in a first-class way, i.e. 
            //      x.M  
            // Because there is only one accessible method info available based on the name of the item 
            // being accessed we know the number of arguments the first class use of this 
            // method will take. Optional and out args are _not_ included, which means they will be resolved 
            // to their default values (for optionals) and be part of the return tuple (for out args). 
            | None,[calledMeth] -> 
                let curriedArgTys,returnTy = UnifyMatchingSimpleArgumentTypes exprTy calledMeth
                let unnamedCurriedCallerArgs = curriedArgTys |> List.mapSquared (fun ty -> CallerArg(ty,mMethExpr,false,dummyExpr))  
                let namedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.map (fun _ -> [])
                unnamedCurriedCallerArgs, namedCurriedCallerArgs,returnTy
                
            // "type directed" rule for first-class uses of ambiguous methods. 
            // By context we know a type for the input argument. If it's a tuple 
            // this gives us the a potential number of arguments expected. Indeed even if it's a variable 
            // type we assume the number of arguments is just "1". 
            | None,_ ->
            
                let domainTy,returnTy = UnifyFunctionType None cenv denv mMethExpr exprTy
                let argTys = if isUnitTy cenv.g domainTy then [] else  tryDestTupleTy cenv.g domainTy
                // Only apply this rule if a candidate method exists with this number of arguments
                let argTys = 
                    if candidates |> List.exists (CalledMethHasSingleArgumentGroupOfThisLength argTys.Length) then 
                       argTys
                    else 
                       [domainTy]
                let unnamedCurriedCallerArgs = [argTys |> List.map (fun ty -> CallerArg(ty,mMethExpr,false,dummyExpr)) ]
                let namedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.map (fun _ -> [])
                unnamedCurriedCallerArgs, namedCurriedCallerArgs, returnTy
                

            | Some (unnamedCurriedCallerArgs,namedCurriedCallerArgs),_ -> 
                let unnamedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.mapSquared (fun (_,xty,xm) -> CallerArg(xty,xm,false,dummyExpr))
                let namedCurriedCallerArgs = namedCurriedCallerArgs |> List.mapSquared (fun (id,isOpt,_,xty,xm) -> CallerNamedArg(id,CallerArg(xty,xm,isOpt,dummyExpr))) 
                unnamedCurriedCallerArgs, namedCurriedCallerArgs, exprTy

        let callerArgCounts = (List.sumBy List.length unnamedCurriedCallerArgs, List.sumBy List.length namedCurriedCallerArgs)

        let mk_CalledMeth (minfo,pinfoOpt,usesParamArrayConversion) = 
            let minst = FreshenMethInfo mItem minfo
            let userTypeArgs = Option.otherwise tyargsOpt minst
            let allArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
            MakeCalledMeth(cenv.infoReader,checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,userTypeArgs,pinfoOpt,objArgTys,allArgs,usesParamArrayConversion,true)


        let methsAndPropsToCalledMeths methsAndProps = 
            [ for (minfo,pinfoOpt) in methsAndProps do
                let meth = mk_CalledMeth (minfo,pinfoOpt,true) 
                yield meth
                if meth.UsesParamArrayConversion then 
                    yield mk_CalledMeth (minfo,pinfoOpt,false) ]

        let preArgumentTypeCheckingCalledMethGroup = candidateMethsAndProps |> methsAndPropsToCalledMeths

        let isUniquelyResolved calledMethGroup =
            let csenv = MakeConstraintSolverEnv cenv.css mMethExpr denv
            UnifyUniqueOverloading csenv callerArgCounts methodName ad calledMethGroup returnTy

        let uniquelyResolved = 
            let res = isUniquelyResolved preArgumentTypeCheckingCalledMethGroup  
            match res with
            |   ErrorResult _ -> afterTcOverloadResolution.OnOverloadResolutionFailure()
            |   _ -> ()
            res |> CommitOperationResult
        uniquelyResolved,preArgumentTypeCheckingCalledMethGroup

    // STEP 2. Type check arguments 
    let unnamedCurriedCallerArgs,namedCurriedCallerArgs,lambdaVars,returnTy,tpenv =  
    
        // STEP 2a. First extract what we know about the caller arguments, either type-directed if 
        // no arguments are given or else based on the syntax of the arguments. 
        let unnamedCurriedCallerArgs,namedCurriedCallerArgs,lambdaVars,returnTy,tpenv = 
            match curriedCallerArgsOpt with 
            | None ->
                let curriedArgTys,returnTy = 
                    match candidates with 
                    // "single named item" rule. This is where we have a single accessible method 
                    //      member x.M(arg1,...,argN) 
                    // being used in a first-class way, i.e. 
                    //      x.M  
                    // Because there is only one accessible method info available based on the name of the item 
                    // being accessed we know the number of arguments the first class use of this 
                    // method will take. Optional and out args are _not_ included, which means they will be resolved 
                    // to their default values (for optionals) and be part of the return tuple (for out args). 
                    | [calledMeth] -> 
                        UnifyMatchingSimpleArgumentTypes exprTy calledMeth
                    | _ -> 
                        let domainTy,returnTy = UnifyFunctionType None cenv denv mMethExpr exprTy
                        let argTys = if isUnitTy cenv.g domainTy then [] else  tryDestTupleTy cenv.g domainTy
                        // Only apply this rule if a candidate method exists with this number of arguments
                        let argTys = 
                            if candidates |> List.exists (CalledMethHasSingleArgumentGroupOfThisLength argTys.Length) then 
                                argTys                                  
                            else
                                [domainTy]
                        [argTys],returnTy
                        
                let lambdaVarsAndExprs = curriedArgTys |> List.mapiSquared (fun i j ty -> mkCompGenLocal mMethExpr ("arg"^string i^string j) ty)
                let unnamedCurriedCallerArgs = lambdaVarsAndExprs |> List.mapSquared (fun (_,e) -> CallerArg(tyOfExpr cenv.g e,e.Range,false,e))
                let namedCurriedCallerArgs = lambdaVarsAndExprs |> List.map (fun _ -> [])
                unnamedCurriedCallerArgs,namedCurriedCallerArgs,Some(List.map (List.map fst) lambdaVarsAndExprs), returnTy,tpenv

            | Some (unnamedCurriedCallerArgs,namedCurriedCallerArgs) ->
                let unnamedCurriedCallerArgs = unnamedCurriedCallerArgs |> List.mapSquared (fun (x,xty,xm) -> CallerArg(xty,xm,false,x)) 
                let unnamedCurriedCallerArgs,tpenv =  TcMethodArgs cenv env tpenv unnamedCurriedCallerArgs
                unnamedCurriedCallerArgs,namedCurriedCallerArgs,None,exprTy,tpenv

        // Now check the named arguments
        let namedCurriedCallerArgs = namedCurriedCallerArgs |> List.mapSquared (fun (id,isOpt,x,xty,xm) -> CallerNamedArg(id,CallerArg(xty,xm,isOpt,x))) 
        let namedCurriedCallerArgs,tpenv =  TcMethodNamedArgs cenv env tpenv namedCurriedCallerArgs
        unnamedCurriedCallerArgs,namedCurriedCallerArgs,lambdaVars,returnTy,tpenv

    let preArgumentTypeCheckingCalledMethGroup = 
       preArgumentTypeCheckingCalledMethGroup |> List.map (fun cmeth -> (cmeth.Method, cmeth.CalledTyArgs, cmeth.AssociatedPropertyInfo, cmeth.UsesParamArrayConversion))
    
    // STEP 3. Resolve overloading 
    /// Select the called method that's the result of overload resolution
    let (CalledMeth(finalCalledMethInfo,
                    finalCalledMethInst,
                    _,
                    _,
                    argSets,
                    _,
                    assignedNamedProps,
                    finalCalledPropInfoOpt,_, 
                    attributeAssignedNamedItems,
                    unnamedCalledOptArgs,
                    unnamedCalledOutArgs) as finalCalledMeth) = 

        let mk_CalledMeth2 (minfo:MethInfo,minst,pinfoOpt,usesParamArrayConversion) = 
            let userTypeArgs = Option.otherwise tyargsOpt minst
                        
            let callerArgs = List.zip unnamedCurriedCallerArgs namedCurriedCallerArgs
            MakeCalledMeth(cenv.infoReader,checkingAttributeCall, FreshenMethInfo, mMethExpr,ad,minfo,minst,userTypeArgs,pinfoOpt,objArgTys,callerArgs,usesParamArrayConversion,true)
          
        let postArgumentTypeCheckingCalledMethGroup = List.map mk_CalledMeth2 preArgumentTypeCheckingCalledMethGroup

        let callerArgCounts = (unnamedCurriedCallerArgs.Length, namedCurriedCallerArgs.Length)
        let csenv = MakeConstraintSolverEnv cenv.css mMethExpr denv
        
        // Commit unassociated constraints prior to member overload resolution where there is ambiguity 
        // about the possible target of the call. 
        if not uniquelyResolved then 
            GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,denv,mItem)
                 (//freeInTypeLeftToRight cenv.g false returnTy @
                  (unnamedCurriedCallerArgs |> List.collectSquared  (fun (CallerArg(xty,_,_,_)) -> freeInTypeLeftToRight cenv.g false xty)));

        let result, errors = 
            ResolveOverloading csenv NoTrace methodName 0 false callerArgCounts ad postArgumentTypeCheckingCalledMethGroup true (Some returnTy) 

        match afterTcOverloadResolution with
        |   AfterTcOverloadResolution.DoNothing -> ()
        |   AfterTcOverloadResolution.SendToSink(callSink,_) ->
                match result with
                |   Some result ->
                        (result.Method,result.AssociatedPropertyInfo) |> callSink
                |   None ->
                        afterTcOverloadResolution.OnOverloadResolutionFailure()
        |   AfterTcOverloadResolution.ReplaceWithOverrideAndSendToSink(overriding, callSink,_) ->
                match result with
                |   Some result ->
                    if result.Method.IsVirtual then 
                        let resultMinfo = result.Method
                        let overridingInfo =
                            overriding
                            |> List.filter (fun (minfo,_) -> minfo.IsVirtual)
                            |> List.tryFind (fun (minfo,_) -> MethInfosEquivByNameAndSig EraseNone true cenv.g cenv.amap range0 resultMinfo minfo)
                        match overridingInfo with
                        |   Some r -> r |> callSink
                        |   None -> (result.Method,result.AssociatedPropertyInfo) |> callSink
                    else
                        (result.Method,result.AssociatedPropertyInfo) |> callSink
                |   None ->
                        afterTcOverloadResolution.OnOverloadResolutionFailure()


        // Raise the errors from the constraint solving 
        RaiseOperationResult errors;
        match result with 
        | None -> error(InternalError("at least one error should be returned by failed method overloading",mItem))
        | Some res ->  res

    let assignedNamedArgs = argSets |> List.collect (fun argSet -> argSet.AssignedNamedArgs)
    let paramArrayCallerArgs = argSets |> List.collect (fun argSet -> argSet.ParamArrayCallerArgs)
    let unnamedCalledArgs = argSets |> List.collect (fun argSet -> argSet.UnnamedCalledArgs)
    let unnamedCallerArgs = argSets |> List.collect (fun argSet -> argSet.UnnamedCallerArgs)
    
    // STEP 4. Check the attributes on the method and the corresponding event/property, if any 

    finalCalledPropInfoOpt |> Option.iter (fun pinfo -> CheckPropInfoAttributes pinfo mItem |> CommitOperationResult) ;

    let isInstance = nonNil objArgs
    MethInfoChecks cenv.g cenv.amap isInstance tyargsOpt objArgs ad mItem finalCalledMethInfo;

    // Adhoc constraints on use of .NET methods
    begin 
        // Uses of Object.GetHashCode and Object.Equals imply an equality constraint on the object argument
        //
        if (isInstance && 
            finalCalledMethInfo.IsInstance &&
            typeEquiv cenv.g finalCalledMethInfo.EnclosingType cenv.g.obj_ty && 
            (finalCalledMethInfo.LogicalName = "GetHashCode" ||  finalCalledMethInfo.LogicalName = "Equals")) then 
           
            objArgs |> List.iter (fun expr -> ConstraintSolver.AddCxTypeMustSupportEquality env.DisplayEnv cenv.css mMethExpr NoTrace (tyOfExpr cenv.g expr));

        // Uses of a Dictionary() constructor without an IEqualityComparer argument imply an equality constraint 
        // on the first type argument.
        if HasHeadType cenv.g cenv.g.tcref_System_Collections_Generic_Dictionary finalCalledMethInfo.EnclosingType  &&
           finalCalledMethInfo.IsConstructor &&
           not (finalCalledMethInfo.GetParamDatas(cenv.amap, mItem, finalCalledMeth.CallerTyArgs) 
                |> List.existsSquared (fun (ParamData(_,_,_,_,ty)) ->  
                    HasHeadType cenv.g cenv.g.tcref_System_Collections_Generic_IEqualityComparer ty)) then 
            
            match argsOfAppTy cenv.g finalCalledMethInfo.EnclosingType with 
            | [dty; _] -> ConstraintSolver.AddCxTypeMustSupportEquality env.DisplayEnv cenv.css mMethExpr NoTrace dty;
            | _ -> ()
    end;

    if (argSets |> List.existsi (fun i argSet -> argSet.UnnamedCalledArgs |> List.existsi (fun j ca -> ca.Position <> (i,j)))) then
        errorR(Deprecated(FSComp.SR.tcUnnamedArgumentsDoNotFormPrefix(),mMethExpr));


    // STEP 5. Build the argument list. Adjust for optional arguments, byref arguments and coercions.
    // For example, if you pass an F# reference cell to a byref then we must get the address of the 
    // contents of the ref. Likewise lots of adjustments are made for optional arguments etc.

    // Some of the code below must allocate temporary variables or bind other variables to particular values. 
    // As usual we represent variable allocators by expr -> expr functions 
    // which we then use to wrap the whole expression. These will either do nothing or pre-bind a variable. It doesn't
    // matter what order they are applied in as long as they are all composed together.
    let emptyPreBinder (e: Expr) = e
    
    // For unapplied 'e.M' we first evaluate 'e' outside the lambda, i.e. 'let v = e in (fun arg -> v.M(arg))' 
    let objArgPreBinder,objArgs = 
        match objArgs,lambdaVars with 
        | [objArg],Some _   -> 
            let objArgTy = tyOfExpr cenv.g objArg
            let v,ve = mkCompGenLocal mMethExpr "objectArg" objArgTy
            (fun body -> mkCompGenLet mMethExpr v objArg body), [ve]

        | _ -> 
            emptyPreBinder,objArgs

    // Handle adhoc argument conversions
    let coerceExpr isOutArg calledArgTy callerArgTy m callerArgExpr = 

       if isByrefTy cenv.g calledArgTy && isRefCellTy cenv.g callerArgTy then 
           Expr.Op(TOp.RefAddrGet,[destRefCellTy cenv.g callerArgTy],[callerArgExpr],m) 

       elif isDelegateTy cenv.g calledArgTy && isFunTy cenv.g callerArgTy then 
           CoerceFromFSharpFuncToDelegate cenv.g cenv.amap cenv.infoReader ad callerArgTy m callerArgExpr calledArgTy

       elif isLinqExpressionTy cenv.g calledArgTy &&  isDelegateTy cenv.g (destLinqExpressionTy cenv.g calledArgTy) && isFunTy cenv.g callerArgTy then 
           let delegateTy = destLinqExpressionTy cenv.g calledArgTy
           let expr = CoerceFromFSharpFuncToDelegate cenv.g cenv.amap cenv.infoReader ad callerArgTy m callerArgExpr delegateTy
           mkCallQuoteToLinqLambdaExpression cenv.g m delegateTy   (Expr.Quote(expr, ref None, false, m, mkQuotedExprTy cenv.g delegateTy))

(*  // useful code if we add auto conversions to quotations (to match auto conversions to LINQ expressions)
       elif isQuoteExprTy cenv.g calledArgTy &&  not (isQuoteTy cenv.g callerArgTy) then 
           let delegateTy = destQuoteExprTy cenv.g calledArgTy
           let expr = coerceFromFSharpFuncToDelegate callerArgTy m callerArgExpr delegateTy
           Expr.Quote(expr, ref None, m, delegateTy)
*)

       // Note: out args do not need to be coerced 
       elif isOutArg then 
           callerArgExpr
       // Note: not all these casts are reported in quotations 
       else 
           mkCoerceIfNeeded cenv.g calledArgTy callerArgTy callerArgExpr

    // Handle optional arguments
    let optArgPreBinder,allArgs,outArgExprs,outArgTmpBinds = 

        let normalUnnamedArgs = 
          (unnamedCalledArgs,unnamedCallerArgs) ||> List.map2 (fun called caller -> AssignedCalledArg(None,called,caller)) 

        let paramArrayArgs = 
          match finalCalledMeth.ParamArrayCalledArgOpt with 
          | None -> []
          | Some paramArrayCalledArg -> 
               let paramArrayCalledArgElementType = destArrayTy cenv.g paramArrayCalledArg.Type

               let es = paramArrayCallerArgs  |> List.map (fun (CallerArg(callerArgTy,m,isOutArg,callerArgExpr)) -> 
                                                                    coerceExpr isOutArg paramArrayCalledArgElementType callerArgTy m callerArgExpr)
               [ AssignedCalledArg(None,paramArrayCalledArg,CallerArg(paramArrayCalledArg.Type,mMethExpr,false,Expr.Op(TOp.Array,[paramArrayCalledArgElementType], es ,mMethExpr))) ]

        // CLEANUP: Move all this code into some isolated file, e.g. "optional.fs"
        //
        // Handle CallerSide optional arguments. 
        //
        // CallerSide optional arguments are largely for COM interop, e.g. to PIA assemblies for Word etc.
        // As a result we follow the VB spec here. To quote from an email exchange between the C# and VB teams.
        //
        //   "1.        If the parameter is statically typed as System.Object and does not have a value, then there are two cases:
        //       a.     The parameter may have the IDispatchConstantAttribute or IUnknownConstantAttribute attribute. If this is the case, the VB compiler then create an instance of the System.Runtime.InteropServices.DispatchWrapper /System.Runtime.InteropServices.UnknownWrapper type at the call site to wrap the value Nothing/null.
        //       b.     If the parameter does not have those two attributes, we will emit Missing.Value.
        //    2.        Otherwise, if there is a value attribute, then emit the default value.
        //    3.        Otherwise, we emit default(T).
        //    4.        Finally, we apply conversions from the value to the parameter type. This is where the nullable conversions take place for VB.
        //    - VB allows you to mark ref parameters as optional. The semantics of this is that we create a temporary 
        //        with type = type of parameter, load the optional value to it, and call the method. 
        //    - VB also allows you to mark arrays with Nothing as the optional value.
        //    - VB also allows you to pass intrinsic values as optional values to parameters 
        //        typed as Object. What we do in this case is we box the intrinsic value."
        //
        let optArgs,optArgPreBinder = 
          (emptyPreBinder,unnamedCalledOptArgs)
            ||> List.mapFold (fun wrapper (CalledArg(_,_,optArgInfo,_,_,calledArgTy) as calledArg) -> 
                  let wrapper2,expr = 

                      match optArgInfo with 
                      | NotOptional -> 
                          error(InternalError("Unexpected NotOptional",mItem))
                      | CallerSide dfltVal ->
                          let rec build = function 
                              | MissingValue -> 
                                  // Add an I_nop if this is an initonly field to make sure we never recognize it as an lvalue. See mkExprAddrOfExpr. 
                                  emptyPreBinder,mkAsmExpr ([ mkNormalLdsfld (fspec_Missing_Value cenv.g.ilg); AI_nop ],[],[],[calledArgTy],mMethExpr)
                              | DefaultValue -> 
                                  emptyPreBinder,mkDefault(mMethExpr,calledArgTy)
                              | Constant fieldInit -> 
                                  emptyPreBinder,Expr.Const(TcFieldInit mMethExpr fieldInit,mMethExpr,calledArgTy)  
                              | WrapperForIDispatch ->
                                  let tref = mkILNonGenericBoxedTy(mkILTyRef(cenv.g.ilg.mscorlibScopeRef,"System.Runtime.InteropServices.DispatchWrapper"))
                                  let mref = mkILCtorMethSpecForTy(tref,[cenv.g.ilg.typ_Object]).MethodRef
                                  let expr = Expr.Op(TOp.ILCall(false,false,false,false,CtorValUsedAsSuperInit,false,false,mref,[],[],[cenv.g.obj_ty]),[],[mkDefault(mMethExpr,calledArgTy)],mMethExpr)
                                  emptyPreBinder,expr
                              | WrapperForIUnknown ->
                                  let tref = mkILNonGenericBoxedTy(mkILTyRef(cenv.g.ilg.mscorlibScopeRef,"System.Runtime.InteropServices.UnknownWrapper"))
                                  let mref = mkILCtorMethSpecForTy(tref,[cenv.g.ilg.typ_Object]).MethodRef
                                  let expr = Expr.Op(TOp.ILCall(false,false,false,false,CtorValUsedAsSuperInit,false,false,mref,[],[],[cenv.g.obj_ty]),[],[mkDefault(mMethExpr,calledArgTy)],mMethExpr)
                                  emptyPreBinder,expr
                              | PassByRef (ty, dfltVal2) -> 
                                  let v,_ = mkCompGenLocal mMethExpr "defaultByrefArg" ty
                                  let wrapper2,rhs = build dfltVal2 
                                  (wrapper2 >> mkCompGenLet mMethExpr v rhs), mkValAddr mMethExpr (mkLocalValRef v)
                          build dfltVal

                      | CalleeSide -> 
                          let calledNonOptTy = 
                              if isOptionTy cenv.g calledArgTy then 
                                  destOptionTy cenv.g calledArgTy 
                              else
                                  calledArgTy // should be unreachable
                          emptyPreBinder,mkUnionCaseExpr(mkNoneCase cenv.g,[calledNonOptTy],[],mMethExpr)

                  // Combine the variable allocators (if any)
                  let wrapper = (wrapper >> wrapper2)
                  let callerArg = CallerArg(calledArgTy,mMethExpr,false,expr)
                  AssignedCalledArg(None,calledArg,callerArg),wrapper)


        // Handle optional arguments
        let wrapOptionalArg (AssignedCalledArg(idOpt,(CalledArg(_,_,optArgInfo,_,_,calledArgTy) as calledArg) ,CallerArg(callerArgTy,m,isOptCallerArg,expr)) as assignedArg) = 
            match optArgInfo with 
            | NotOptional -> 
                if isOptCallerArg then errorR(Error(FSComp.SR.tcFormalArgumentIsNotOptional(),m));
                assignedArg

            | _ -> 
                let expr = 
                    match optArgInfo with 
                    | CallerSide _ -> 
                        if isOptCallerArg then 
                            mkUnionCaseFieldGetUnproven(expr,mkSomeCase cenv.g,[destOptionTy cenv.g callerArgTy],0,m) 
                        else 
                            expr
                    | CalleeSide -> 
                        if isOptCallerArg then 
                            // M(?x=bopt) when M(A) --> M(?x=Some(b.Value))
                            expr 
                        else                            
                            // M(x=b) when M(A) --> M(?x=Some(b :> A))
                            if isOptionTy cenv.g calledArgTy then 
                                let calledNonOptTy = destOptionTy cenv.g calledArgTy 
                                mkUnionCaseExpr(mkSomeCase cenv.g,[calledNonOptTy],[mkCoerceIfNeeded cenv.g calledNonOptTy callerArgTy expr],m)
                            else 
                                expr // should be unreachable 
                            
                    | _ -> failwith "Unreachable"
                AssignedCalledArg(idOpt,calledArg,CallerArg((tyOfExpr cenv.g expr),m,isOptCallerArg,expr))

        let outArgsAndExprs,outArgTmpBinds = 
            unnamedCalledOutArgs 
              |> List.map (fun (CalledArg(_,_,_,_,_,calledArgTy) as calledArg) -> 
                let outArgTy = destByrefTy cenv.g calledArgTy
                let outv,outArgExpr = mkMutableCompGenLocal mMethExpr "outArg" outArgTy // mutable! 
                let expr = mkDefault(mMethExpr,outArgTy)
                let callerArg = CallerArg(calledArgTy,mMethExpr,false,mkValAddr mMethExpr (mkLocalValRef outv))
                (AssignedCalledArg(None,calledArg,callerArg), outArgExpr), mkCompGenBind outv expr) 
              |> List.unzip

        let outArgs, outArgExprs = List.unzip outArgsAndExprs

        let allArgs =
            List.map wrapOptionalArg normalUnnamedArgs @ 
            List.map wrapOptionalArg assignedNamedArgs @ 
            paramArrayArgs @
            optArgs @ 
            outArgs
        
        let allArgs = 
            allArgs |> List.sortBy (fun x -> x.Position)

        optArgPreBinder,allArgs,outArgExprs,outArgTmpBinds

    let coerce (AssignedCalledArg(_,CalledArg(_,_,_,isOutArg,_,calledArgTy),CallerArg(callerArgTy,m,_,e))) = 
    
       coerceExpr isOutArg calledArgTy callerArgTy m e

    // Record the resolution of the named argument for the Language Service
    allArgs |> List.iter (fun (AssignedCalledArg(idOpt,calledArg,_)) ->
        match idOpt with 
        | None -> ()
        | Some id -> 
            let item = Item.ArgName (id, calledArg.Type)
            CallNameResolutionSink cenv.tcSink (id.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,ad));

    let allArgsCoerced = List.map coerce  allArgs


    // Make the call expression 
    let expr,exprty = 
        BuildPossiblyConditionalMethodCall cenv env mut mMethExpr isProp finalCalledMethInfo isSuperInit finalCalledMethInst objArgs allArgsCoerced
        

    // Bind "out" parameters as part of the result tuple 
    let expr,exprty = 
        if isNil outArgTmpBinds then expr,exprty
        else 
            let outArgTys = outArgExprs |> List.map (tyOfExpr cenv.g)
            let expr = if isUnitTy cenv.g exprty then mkCompGenSequential mMethExpr expr  (mkTupled cenv.g  mMethExpr outArgExprs outArgTys)
                       else  mkTupled cenv.g  mMethExpr (expr :: outArgExprs) (exprty :: outArgTys)
            let expr = mkLetsBind mMethExpr outArgTmpBinds expr
            expr, tyOfExpr cenv.g expr

    // Handle post-hoc property assignments 
    let expr = 
        if isNil assignedNamedProps then expr else 
        // This holds the result of the call 
        let objv,objExpr = mkMutableCompGenLocal mMethExpr "returnVal" exprty // mutable in case it's a struct 
        // This expression  mutates the properties on the result of the call
        let propSetExpr = 
            (mkUnit cenv.g mMethExpr, assignedNamedProps) ||> List.fold (fun acc (AssignedItemSetter(id,setter,CallerArg(callerArgTy,m,isOptCallerArg,argExpr))) ->
                    if isOptCallerArg then error(Error(FSComp.SR.tcInvalidOptionalAssignmentToPropertyOrField(),m));
                    
                    let action, defnItem = 
                        match setter with 
                        | AssignedPropSetter (pinfo,pminfo,pminst) -> 
                            MethInfoChecks cenv.g cenv.amap true None [objExpr] ad m pminfo;
                            let calledArgTy = List.head (List.head (pminfo.GetParamTypes(cenv.amap, m, pminst)))
                            let argExpr = coerceExpr false calledArgTy callerArgTy m argExpr
                            let mut = (if isStructTy cenv.g (tyOfExpr cenv.g objExpr) then DefinitelyMutates else PossiblyMutates)
                            let action = BuildPossiblyConditionalMethodCall cenv env mut m true pminfo NormalValUse pminst [objExpr] [argExpr] |> fst 
                            action, Item.Property (pinfo.PropertyName, [pinfo])

                        | AssignedIlFieldSetter finfo ->
                            // Get or set instance IL field 
                            ILFieldInstanceChecks  cenv.g cenv.amap ad m finfo;
                            let calledArgTy = finfo.FieldType (cenv.amap, m)
                            let argExpr = coerceExpr false calledArgTy callerArgTy m argExpr
                            let action = BuildILFieldSet cenv.g m objExpr finfo argExpr 
                            action, Item.ILField finfo
                        
                        | AssignedRecdFieldSetter rfinfo ->
                            RecdFieldInstanceChecks cenv.g ad m rfinfo; 
                            let calledArgTy = rfinfo.FieldType
                            CheckRecdFieldMutation m denv rfinfo;
                            let argExpr = coerceExpr false calledArgTy callerArgTy m argExpr
                            let action = BuildRecdFieldSet cenv.g m objExpr rfinfo argExpr 
                            action, Item.RecdField rfinfo

                    // Record the resolution for the Language Service
                    let item = Item.SetterArg (id, defnItem)
                    CallNameResolutionSink cenv.tcSink (id.idRange,env.NameEnv,item,item,ItemOccurence.Use,env.DisplayEnv,ad);

                    mkCompGenSequential m acc action)

        // now put them together 
        let expr = mkCompGenLet mMethExpr objv expr  (mkCompGenSequential mMethExpr propSetExpr objExpr)
        expr

    // Build the lambda expression if any 
    let expr = 
        match lambdaVars with 
        | None -> expr
        | Some curriedLambdaVars -> 
            let mkLambda vs expr = 
                match vs with 
                | [] -> mkUnitDelayLambda cenv.g mMethExpr expr 
                | _ -> mkMultiLambda mMethExpr vs (expr, tyOfExpr cenv.g expr)
            List.foldBack mkLambda curriedLambdaVars expr

    let expr, tpenv = 
        match unnamedDelayedCallerArgExprOpt with 
        | Some synArgExpr -> 
            match lambdaVars with 
            | Some [lambdaVars] -> 
                let argExpr,tpenv = TcExpr cenv (mkTupledVarsTy cenv.g lambdaVars) env tpenv synArgExpr 
                mkApps cenv.g ((expr,tyOfExpr cenv.g expr),[],[argExpr],mMethExpr), tpenv
            | _ -> 
                error(InternalError("unreachable - expected some lambda vars for a tuple mismatch",mItem))
        | None -> 
            expr, tpenv

    // Apply the PreBinders, if any 
    let expr = optArgPreBinder expr
    let expr = objArgPreBinder expr
    
    (expr,attributeAssignedNamedItems,delayed),tpenv
            
and TcMethodArgs cenv env tpenv args =  
    List.mapfoldSquared (TcMethodArg cenv env) tpenv args

and TcMethodArg  cenv env tpenv (CallerArg(ty,m,isOpt,e)) = 
    let e',tpenv = TcExpr cenv ty env tpenv e 
    CallerArg(ty,m,isOpt,e'),tpenv

and TcMethodNamedArgs cenv env tpenv args =  
    List.mapfoldSquared (TcMethodNamedArg cenv env) tpenv args

and TcMethodNamedArg  cenv env tpenv (CallerNamedArg(id,arg)) = 
    let arg',tpenv = TcMethodArg cenv env tpenv arg 
    CallerNamedArg(id,arg'),tpenv

/// Typecheck "new Delegate(fun x y z -> ...)" constructs
and TcNewDelegateThen cenv overallTy env tpenv mDelTy mExprAndArg delegateTy arg atomicFlag delayed =
    let ad = env.eAccessRights
    UnifyTypes cenv env mExprAndArg overallTy delegateTy;
    let (SigOfFunctionForDelegate(invokeMethInfo,delArgTys,_,fty)) = GetSigOfFunctionForDelegate cenv.infoReader delegateTy mDelTy ad
    // We pass isInstance = true here because we're checking the rights to access the "Invoke" method
    MethInfoChecks cenv.g cenv.amap true None [] env.eAccessRights mExprAndArg invokeMethInfo;
    let args = GetMethodArgs arg
    match args with 
    | [farg],[] -> 
        let m = arg.Range
        let (CallerArg(_,_,_,farg')),tpenv =  TcMethodArg cenv env tpenv (CallerArg(fty,m,false,farg))
        let expr = BuildNewDelegateExpr (None, cenv.g, cenv.amap, delegateTy, invokeMethInfo, delArgTys, farg', fty, m)
        PropagateThenTcDelayed cenv overallTy env tpenv m (MakeApplicableExprNoFlex cenv expr) delegateTy atomicFlag delayed  
    | _ ->  
        error(Error(FSComp.SR.tcDelegateConstructorMustBePassed(),mExprAndArg))


and bind_letrec (binds:Bindings) m e = 
    if FlatList.isEmpty binds then 
        e 
    else 
        Expr.LetRec (binds,e,m,NewFreeVarsCache()) 

// Check for duplicate bindings in simple recursive patterns
and checkRecursiveBindingIds binds =
        let hashOfBinds = new Dictionary()
            
        let checkDupBinding (SynBinding.Binding(_,_,_,_,_,_,_,b,_,_,m,_)) =
            let nm =
                match b with
                | SynPat.Named(_,id,_,_,_) -> id.idText
                | SynPat.LongIdent(LongIdentWithDots([id],_),_,_,_,_,_) -> id.idText
                | _ -> ""
            if nm <> "" then
                if hashOfBinds.ContainsKey(nm) then
                    error(Duplicate("value",nm,m))
                else hashOfBinds.[nm] <- b
        binds |> List.iter checkDupBinding

/// Process a sequence of iterated lets "let ... in let ... in ..." in a tail recursive way 
/// This avoids stack overflow on really larger "let" and "letrec" lists
and TcLinearLetExprs bodyChecker cenv env overallTy builder tpenv (processUseBindings,isRec,isUse,binds,body,m) =
    assert (not isUse || processUseBindings)
                
    if isRec then 
        // TcLinearLetExprs processes at most one recursive binding
        checkRecursiveBindingIds binds
        let binds = List.map (fun x -> RecBindingDefn(ExprContainerInfo,NoNewSlots,ExpressionBinding,x)) binds
        if isUse then errorR(Error(FSComp.SR.tcBindingCannotBeUseAndRec(),m));
        let binds,envinner,tpenv = TcLetrec ErrorOnOverrides cenv env tpenv (binds,m,m)
        let bodyExpr,tpenv = bodyChecker overallTy envinner tpenv body 
        let bodyExpr = bind_letrec (FlatList.ofList binds) m bodyExpr
        fst (builder (bodyExpr,overallTy)),tpenv
    else 
        // TcLinearLetExprs processes multiple 'let' bindings in a tail recursive way
        // We process one binding, then look for additional linear bindings and accumulate the builder continuation.
        // Don't processes 'use' bindings (e.g. in sequence expressions) unless directed to.
        let mkf,envinner,tpenv =
          TcLetBinding cenv isUse env ExprContainerInfo ExpressionBinding tpenv (binds,m,body.Range)
        let builder' x = builder (mkf x)
        match body with 
        | SynExpr.LetOrUse (isRec',isUse',binds',bodyExpr,m') when (not isUse' || processUseBindings) ->
            TcLinearLetExprs bodyChecker cenv envinner overallTy builder' tpenv (processUseBindings,isRec',isUse',binds',bodyExpr,m')
        | _ -> 
            let bodyExpr,tpenv = bodyChecker overallTy envinner tpenv body 
            fst (builder' (bodyExpr,overallTy)),tpenv

/// Typecheck and compile pattern-matching constructs
and TcAndPatternCompileMatchClauses mExpr matchm actionOnFailure cenv inputTy resultTy env tpenv clauses =
    let tclauses, tpenv = TcMatchClauses cenv inputTy resultTy env tpenv clauses
    let v,expr = CompilePatternForMatchClauses cenv env mExpr matchm true actionOnFailure inputTy resultTy tclauses
    v,expr,tpenv

and TcMatchPattern cenv inputTy env tpenv (pat:SynPat,optWhenExpr) =
    let m = pat.Range
    let patf',(tpenv,names,_) = TcPat WarnOnUpperCase cenv env None (ValInline.Optional,permitInferTypars,noArgOrRetAttribs,false,None,false) (tpenv,Map.empty,Set.empty) inputTy pat
    let envinner,values,vspecMap = MakeAndPublishSimpleVals cenv env m names false
    let optWhenExpr',tpenv = Option.mapFold (TcExpr cenv cenv.g.bool_ty envinner) tpenv optWhenExpr
    patf' (TcPatPhase2Input values),optWhenExpr',FlatList.ofList (NameMap.range vspecMap),envinner,tpenv

and TcMatchClauses cenv inputTy resultTy env tpenv clauses =
    List.mapFold (TcMatchClause cenv inputTy resultTy env) tpenv clauses 

and TcMatchClause cenv inputTy resultTy env tpenv (Clause(pat,optWhenExpr,e,patm,spTgt)) =
    let pat',optWhenExpr',vspecs,envinner,tpenv = TcMatchPattern cenv inputTy env tpenv (pat,optWhenExpr)
    let e',tpenv = TcExprThatCanBeCtorBody cenv resultTy envinner tpenv e
    TClause(pat',optWhenExpr',TTarget(vspecs, e',spTgt),patm),tpenv

and TcStaticOptimizationConstraint cenv env tpenv c = 
    match c with 
    | WhenTyparTyconEqualsTycon(tp,ty,m) ->
        if not cenv.g.compilingFslib then 
            errorR(Error(FSComp.SR.tcStaticOptimizationConditionalsOnlyForFSharpLibrary(),m));
        let ty',tpenv = TcType cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv ty
        let tp',tpenv = TcTypar cenv env NewTyparsOK tpenv tp
        TTyconEqualsTycon(mkTyparTy tp', ty'),tpenv
    | WhenTyparIsStruct(tp,m) ->
        if not cenv.g.compilingFslib then 
            errorR(Error(FSComp.SR.tcStaticOptimizationConditionalsOnlyForFSharpLibrary(),m));
        let tp',tpenv = TcTypar cenv env NewTyparsOK tpenv tp
        TTyconIsStruct(mkTyparTy tp'),tpenv

/// Binding checking code, for all bindings including let bindings, let-rec bindings, member bindings and object-expression bindings and 
and TcNormalizedBinding declKind (cenv:cenv) env tpenv overallTy safeThisValOpt safeInitInfo (enclosingDeclaredTypars,(ExplicitTyparInfo(_,declaredTypars,_) as flex)) bind =
    let envinner = AddDeclaredTypars NoCheckForDuplicateTypars (enclosingDeclaredTypars@declaredTypars) env

    match bind with 

    | NormalizedBinding(vis,bkind,isInline,isMutable,attrs,doc,_,valSynData,pat,NormalizedBindingRhs(spatsL,rtyOpt,rhsExpr),mBinding,spBind) ->
        
        let (SynValData(memberFlagsOpt,valSynInfo,_)) = valSynData 

        let attrTgt = DeclKind.AllowedAttribTargets memberFlagsOpt declKind 

        // Check the attributes of the binding, parameters or return value
        let TcAttrs tgt attrs = 
            let attrs = TcAttributes cenv envinner tgt attrs 
            if attrTgt = enum 0 && nonNil attrs then 
                errorR(Error(FSComp.SR.tcAttributesAreNotPermittedOnLetBindings(),mBinding))
            attrs
            
        let valAttribs = TcAttrs attrTgt attrs
        let isVolatile = HasFSharpAttribute cenv.g cenv.g.attrib_VolatileFieldAttribute valAttribs
        
        let inlineFlag = ComputeInlineFlag memberFlagsOpt isInline isMutable mBinding

        let argAttribs = 
            spatsL |> List.map (SynInfo.InferSynArgInfoFromSimplePats >> List.map (SynInfo.AttribsOfArgData >> TcAttrs AttributeTargets.Parameter))
        let retAttribs = 
            match rtyOpt with 
            | Some (SynBindingReturnInfo(_,_,retAttrs)) -> TcAttrs AttributeTargets.ReturnValue retAttrs 
            | None -> [] 

        let argAndRetAttribs = ArgAndRetAttribs(argAttribs, retAttribs)

        if HasFSharpAttribute cenv.g cenv.g.attrib_DefaultValueAttribute valAttribs then 
            errorR(Error(FSComp.SR.tcDefaultValueAttributeRequiresVal(),mBinding));
        
        let isThreadStatic = isThreadOrContextStatic cenv.g valAttribs
        if isThreadStatic then errorR(DeprecatedThreadStaticBindingWarning(mBinding));

        if isVolatile then 
            if declKind <> ClassLetBinding then 
                errorR(Error(FSComp.SR.tcVolatileOnlyOnClassLetBindings(),mBinding));
            if (not isMutable || isThreadStatic) then 
                errorR(Error(FSComp.SR.tcVolatileFieldsMustBeMutable(),mBinding));

        if HasFSharpAttribute cenv.g cenv.g.attrib_DllImportAttribute valAttribs then 
            if not declKind.CanBeDllImport || (match memberFlagsOpt with Some memberFlags -> memberFlags.IsInstance | _ -> false) then 
                errorR(Error(FSComp.SR.tcDllImportNotAllowed(),mBinding));
            
        if HasFSharpAttribute cenv.g cenv.g.attrib_ConditionalAttribute valAttribs && isNone(memberFlagsOpt) then 
            errorR(Error(FSComp.SR.tcConditionalAttributeRequiresMembers(),mBinding));

        if HasFSharpAttribute cenv.g cenv.g.attrib_EntryPointAttribute valAttribs then 
            if isSome(memberFlagsOpt) then 
                errorR(Error(FSComp.SR.tcEntryPointAttributeRequiresFunctionInModule(),mBinding))
            else 
                UnifyTypes cenv env mBinding overallTy (mkArrayType cenv.g cenv.g.string_ty --> cenv.g.int_ty)

        if isMutable && isInline then errorR(Error(FSComp.SR.tcMutableValuesCannotBeInline(),mBinding));
        if isMutable && nonNil declaredTypars then errorR(Error(FSComp.SR.tcMutableValuesMayNotHaveGenericParameters(),mBinding));
        let flex = if isMutable then dontInferTypars else flex
        if isMutable && nonNil spatsL then errorR(Error(FSComp.SR.tcMutableValuesSyntax(),mBinding));
        let isInline = 
            if isInline && isNil spatsL && isNil declaredTypars then 
                errorR(Error(FSComp.SR.tcOnlyFunctionsCanBeInline(),mBinding));
                false
            else 
                isInline 

        let compgen = false
        
        // Use the syntactic arity if we're defining a function 
        let partialValReprInfo = TranslateTopValSynInfo mBinding (TcAttributes cenv env) valSynInfo

        // Check the pattern of the l.h.s. of the binding 
        let tcPatPhase2,(tpenv,nameToPrelimValSchemeMap,_) = 
            TcPat AllIdsOK cenv envinner (Some(partialValReprInfo)) (inlineFlag,flex,argAndRetAttribs,isMutable,vis,compgen) (tpenv,NameMap.empty,Set.empty) overallTy pat
        

        // Add active pattern result names to the environment 
        let apinfoOpt = 
            match NameMap.range nameToPrelimValSchemeMap with 
            | [PrelimValScheme1(id,_,ty,_,_,_,_,_,_,_,_) ] -> 
                match ActivePatternInfoOfValName id.idText  with 
                | Some apinfo ->  Some (apinfo,ty, id.idRange)
                | None -> None
            | _ -> None

        // Add active pattern result names to the environment 
        let envinner = 
            match apinfoOpt with 
            | Some (apinfo,ty,m) ->
                if isSome memberFlagsOpt || (not apinfo.IsTotal && apinfo.ActiveTags.Length > 1) then 
                    error(Error(FSComp.SR.tcInvalidActivePatternName(),mBinding));

                ModifyNameResEnv (fun nenv -> AddActivePatternResultTagsToNameEnv apinfo nenv ty m) envinner 
            | None -> 
                envinner
        
        // Now tc the r.h.s. 
        // If binding a ctor then set the ugly counter that permits us to write ctor expressions on the r.h.s. 
        let isCtor = (match memberFlagsOpt with Some memberFlags -> memberFlags.MemberKind = MemberKind.Constructor | _ -> false)

        let tc = 
            if isCtor then TcExprThatIsCtorBody (safeThisValOpt, safeInitInfo)
            else TcExprThatCantBeCtorBody

        // At each module binding, dive into the expression to check for syntax errors and suppress them if they show.
        // Don't do this for lambdas, because we always check for suppression for all lambda bodies in TcIteratedLambdas
        let rhsExpr',tpenv = 
            let atTopNonLambdaDefn = 
                DeclKind.IsModuleOrMemberOrExtensionBinding declKind && 
                (match rhsExpr with SynExpr.Lambda _ -> false | _ -> true) && 
                synExprContainsError rhsExpr
            conditionallySuppressErrorReporting atTopNonLambdaDefn (fun () -> 
                tc cenv overallTy envinner tpenv rhsExpr)

        if bkind = StandaloneExpression && not cenv.isScript then 
            UnifyUnitType cenv env.DisplayEnv mBinding overallTy (Some rhsExpr') |> ignore;

        // Assert the return type of an active pattern
        match apinfoOpt with 
        | Some (apinfo,ty,_) ->
            let activePatResTys = NewInferenceTypes apinfo.ActiveTags
            let _,rty = stripFunTy cenv.g ty
            UnifyTypes cenv env mBinding (apinfo.ResultType cenv.g rhsExpr.Range activePatResTys) rty;
        | None -> 
            ()

        // Check other attributes
        let hasLiteralAttr,konst = TcLiteral cenv overallTy env tpenv (valAttribs,rhsExpr)
        if hasLiteralAttr && isThreadStatic then 
            errorR(Error(FSComp.SR.tcIllegalAttributesForLiteral(),mBinding));
        if hasLiteralAttr && isMutable then 
            errorR(Error(FSComp.SR.tcLiteralCannotBeMutable(),mBinding));
        if hasLiteralAttr && isInline then 
            errorR(Error(FSComp.SR.tcLiteralCannotBeInline(),mBinding));
        if hasLiteralAttr && nonNil declaredTypars then 
            errorR(Error(FSComp.SR.tcLiteralCannotHaveGenericParameters(),mBinding));

        CheckedBindingInfo(inlineFlag,true,valAttribs,doc,tcPatPhase2,flex,nameToPrelimValSchemeMap,rhsExpr',argAndRetAttribs,overallTy,mBinding,spBind,compgen,konst),tpenv

and TcLiteral cenv overallTy env tpenv (attrs,synLiteralValExpr) = 
    let hasLiteralAttr = HasFSharpAttribute cenv.g cenv.g.attrib_LiteralAttribute attrs
    if not hasLiteralAttr then  hasLiteralAttr,None else 
        let literalValExpr,_ = TcExpr cenv overallTy env tpenv synLiteralValExpr
        let rec eval e = 
            match stripExpr e with 
            | Expr.Const(c,_,_) -> c
            | _ -> 
                errorR(Error(FSComp.SR.tcInvalidConstantExpression(),e.Range));
                Const.Unit
        hasLiteralAttr,Some(eval literalValExpr) 
    
and TcBindingTyparDecls alwaysRigid cenv env tpenv (SynValTyparDecls(synTypars,infer,synTyparConstraints)) = 
    let declaredTypars = TcTyparDecls cenv env synTypars
    let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTypars env
    let tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurence.UseInType envinner tpenv synTyparConstraints

    let rigidCopyOfDeclaredTypars = 
        if alwaysRigid then 
            declaredTypars |> List.iter (fun tp -> SetTyparRigid cenv.g env.DisplayEnv tp.Range tp);
            declaredTypars
        else
            let rigidCopyOfDeclaredTypars = copyTypars declaredTypars
            // The type parameters used to check rigidity after inference are marked rigid straight away
            rigidCopyOfDeclaredTypars |> List.iter (fun tp -> SetTyparRigid cenv.g env.DisplayEnv tp.Range tp);
            // The type parameters using during inference will be marked rigid after inference
            declaredTypars |> List.iter (fun tp -> tp.SetRigidity TyparRigidity.WillBeRigid);
            rigidCopyOfDeclaredTypars
            
    ExplicitTyparInfo(rigidCopyOfDeclaredTypars,declaredTypars,infer) , tpenv

and TcNonrecBindingTyparDecls cenv env tpenv bind = 
    let (NormalizedBinding(_,_,_,_,_,_,synTyparDecls,_,_,_,_,_)) = bind
    TcBindingTyparDecls true cenv env tpenv synTyparDecls

and TcNonRecursiveBinding declKind cenv env tpenv ty b =
    let b = BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env b
    let flex, tpenv = TcNonrecBindingTyparDecls cenv env tpenv b
    TcNormalizedBinding declKind cenv env tpenv ty None NoSafeInitInfo ([],flex) b 

//-------------------------------------------------------------------------
// TcAttribute*
//------------------------------------------------------------------------

and TcAttribute cenv (env: TcEnv) attrTgt (synAttr: SynAttribute)  =
    let (LongIdentWithDots(tycon,_))= synAttr.TypeName
    let arg                       = synAttr.ArgExpr
    let targetIndicator           = synAttr.Target
    let isAppliedToGetterOrSetter = synAttr.AppliesToGetterAndSetter
    let mAttr                     = synAttr.Range
    let (typath,tyid) = List.frontAndBack tycon
    let tpenv = emptyUnscopedTyparEnv

    // if we're checking an attribute that was applied directly to a getter or a setter, then
    // what we're really checking against is a method, not a property
    let attrTgt = if isAppliedToGetterOrSetter then ((attrTgt ^^^ AttributeTargets.Property) ||| AttributeTargets.Method) else attrTgt
    let ty,tpenv =  
        let try1 n = 
            let tyid = mkSynId tyid.idRange n
            let tycon = (typath @ [tyid])
            let ad = env.eAccessRights
            match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInAttribute OpenQualified env.eNameResEnv ad tycon TypeNameResolutionStaticArgsInfo.DefiniteEmpty  PermitDirectReferenceToGeneratedType.No with
            | Exception err -> raze(err)
            | _ ->  success(TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInAttribute env tpenv (SynType.App(SynType.LongIdent(LongIdentWithDots(tycon,[])),None,[],[],None,false,mAttr)) )
        ForceRaise ((try1 (tyid.idText + "Attribute")) |> Outcome.otherwise (fun () -> (try1 tyid.idText)))

    let ad = env.eAccessRights

    if not (IsTypeAccessible cenv.g ad ty) then  errorR(Error(FSComp.SR.tcTypeIsInaccessible(),mAttr));

    let tcref = tcrefOfAppTy cenv.g ty

    let conditionalCallDefineOpt = TryFindTyconRefStringAttribute cenv.g mAttr cenv.g.attrib_ConditionalAttribute tcref 

    match conditionalCallDefineOpt with 
    | Some d when not (List.mem d cenv.conditionalDefines) -> 
        []
    | _ ->

         // REVIEW: take notice of inherited? 
        let validOn,_inherited = 
            let validOnDefault = 0x7fff
            let inheritedDefault = true
            if tcref.IsILTycon then 
                let tdef = tcref.ILTyconRawMetadata
                let tref = cenv.g.attrib_AttributeUsageAttribute.TypeRef
                
                match TryDecodeILAttribute cenv.g tref (Some(tref.Scope)) tdef.CustomAttrs with 
                | Some ([ILAttribElem.Int32 validOn ],named) -> 
                    let inherited = 
                        match List.tryPick (function ("Inherited",_,_,ILAttribElem.Bool res) -> Some res | _ -> None) named with 
                        | None -> inheritedDefault
                        | Some x -> x
                    (validOn, inherited)
                | Some ([ILAttribElem.Int32 validOn; ILAttribElem.Bool _allowMultiple; ILAttribElem.Bool inherited ],_) -> 
                    (validOn, inherited)
                | _ -> 
                    (validOnDefault, inheritedDefault)
            else
                match (TryFindFSharpAttribute cenv.g cenv.g.attrib_AttributeUsageAttribute tcref.Attribs) with
                | Some(Attrib(_,_,[ AttribInt32Arg(validOn) ],_,_,_,_)) ->
                    (validOn, inheritedDefault)
                | Some(Attrib(_,_,[ AttribInt32Arg(validOn);
                                    AttribBoolArg(_allowMultiple);
                                    AttribBoolArg(inherited)],_,_,_,_)) ->
                    (validOn, inherited)
                | Some _  ->
                    warning(Error(FSComp.SR.tcUnexpectedConditionInImportedAssembly(),mAttr))
                    (validOnDefault, inheritedDefault)                    
                | _ -> 
                    (validOnDefault, inheritedDefault)
        let possibleTgts = enum validOn &&& attrTgt
        let directedTgts = 
            match targetIndicator with
            | Some id when id.idText = "assembly" -> AttributeTargets.Assembly
            | Some id when id.idText = "module" -> AttributeTargets.Module
            | Some id when id.idText = "return" -> AttributeTargets.ReturnValue
            | Some id when id.idText = "field" -> AttributeTargets.Field
            | Some id when id.idText = "property" -> AttributeTargets.Property
            | Some id when id.idText = "method" -> AttributeTargets.Method
            | Some id when id.idText = "param" -> AttributeTargets.Parameter
            | Some id when id.idText = "type"    -> AttributeTargets.TyconDecl
            | Some id when id.idText = "constructor"    -> AttributeTargets.Constructor
            | Some id when id.idText = "event"    -> AttributeTargets.Event
            | Some id     -> 
                errorR(Error(FSComp.SR.tcUnrecognizedAttributeTarget(),id.idRange)); 
                possibleTgts
            | _ -> possibleTgts
        let constrainedTgts = possibleTgts &&& directedTgts
        if constrainedTgts = enum 0 then 
            if (directedTgts = AttributeTargets.Assembly || directedTgts = AttributeTargets.Module) then 
                error(Error(FSComp.SR.tcAttributeIsNotValidForLanguageElementUseDo(),mAttr))
            else
                error(Error(FSComp.SR.tcAttributeIsNotValidForLanguageElement(),mAttr));

        let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mAttr ad ty)
        let attrib = 
            match item with 
            | Item.CtorGroup(methodName,minfos) ->
                let meths = minfos |> List.map (fun minfo -> minfo,None) 
                let afterTcOverloadResolution = AfterTcOverloadResolution.ForNewConstructors cenv.tcSink env tyid.idRange methodName minfos
                let (expr,namedCallerArgs,_),_ = 
                  TcMethodApplication true cenv env tpenv None [] mAttr mAttr methodName ad PossiblyMutates false meths afterTcOverloadResolution NormalValUse [arg] (NewInferenceType ())  []

                UnifyTypes cenv env mAttr ty (tyOfExpr cenv.g expr);
                
                let mkAttribExpr e = 
                    AttribExpr(e,EvalAttribArg cenv.g e)

                let namedAttribArgMap = 
                  namedCallerArgs |> List.map (fun (CallerNamedArg(id,CallerArg(argtyv,m,isOpt,expr))) ->
                    if isOpt then error(Error(FSComp.SR.tcOptionalArgumentsCannotBeUsedInCustomAttribute(),m));
                    let m = expr.Range
                    let setterItem, _ = ResolveLongIdentInType cenv.tcSink cenv.nameResolver env.NameEnv Nameres.LookupKind.Expr m ad [id] IgnoreOverrides TypeNameResolutionInfo.Default ty
                    let nm, isProp, argty = 
                      match setterItem with   
                      | Item.Property (_,[pinfo]) -> 
                          if not pinfo.HasSetter then 
                            errorR(Error(FSComp.SR.tcPropertyCannotBeSet0(),m));
                          id.idText, true, pinfo.GetPropertyType(cenv.amap,m) 
                      | Item.ILField finfo -> 
                          CheckILFieldInfoAccessible cenv.g cenv.amap m ad finfo;
                          CheckILFieldAttributes cenv.g finfo m;
                          id.idText,false, finfo.FieldType(cenv.amap, m)
                      | Item.RecdField rfinfo when not rfinfo.IsStatic -> 
                          CheckRecdFieldInfoAttributes cenv.g rfinfo m  |> CommitOperationResult;        
                          CheckRecdFieldInfoAccessible m ad rfinfo;
                          // This uses the F# backend name mangling of fields.... 
                          let nm =  ComputeFieldName rfinfo.Tycon rfinfo.RecdField
                          nm,false,rfinfo.FieldType
                      |  _ -> 
                          errorR(Error(FSComp.SR.tcPropertyOrFieldNotFoundInAttribute(),m)); 
                          id.idText,false,cenv.g.unit_ty
                    let propNameItem = Item.SetterArg(id, setterItem)
                    CallNameResolutionSink cenv.tcSink (id.idRange,env.NameEnv,propNameItem,propNameItem,ItemOccurence.Use,env.DisplayEnv,ad);

                    AddCxTypeMustSubsumeType env.DisplayEnv cenv.css m NoTrace argty argtyv;

                    AttribNamedArg(nm,argty,isProp,mkAttribExpr expr))

                match expr with 
                | Expr.Op(TOp.ILCall(_,_,valu,_,_,_,_,ilMethRef,[],[],_rtys),[],args,m) -> 
                    if valu then error (Error(FSComp.SR.tcCustomAttributeMustBeReferenceType(),m));
                    if args.Length <> ilMethRef.ArgTypes.Length then error (Error(FSComp.SR.tcCustomAttributeArgumentMismatch(),m));
                    let args = args |> List.map mkAttribExpr
                    Attrib(tcref,ILAttrib(ilMethRef),args,namedAttribArgMap,isAppliedToGetterOrSetter,Some constrainedTgts,m)

                | Expr.App(Expr.Val(vref,_,_),_,_,args,_) -> 
                    let try_dest_unit_or_tuple = function Expr.Const(Const.Unit,_,_) -> [] | expr -> tryDestTuple expr
                    let args = args |> List.collect (try_dest_unit_or_tuple)  |> List.map mkAttribExpr
                    Attrib(tcref,FSAttrib(vref),args,namedAttribArgMap,isAppliedToGetterOrSetter,Some constrainedTgts,mAttr)

                | _ -> 
                    error (Error(FSComp.SR.tcCustomAttributeMustInvokeConstructor(),mAttr))

            | _ -> 
                error(Error(FSComp.SR.tcAttributeExpressionsMustBeConstructorCalls(),mAttr))

        [ (constrainedTgts, attrib) ]

and TcAttributesWithPossibleTargets cenv env attrTgt synAttribs = 

    synAttribs |> List.collect (fun synAttrib -> 
        try 
            let attribsAndTargets = TcAttribute cenv env attrTgt synAttrib
            
            // This is where we place any checks that completely exclude the use of some particular 
            // attributes from F#.
            let attribs = List.map snd attribsAndTargets
            if HasFSharpAttribute cenv.g cenv.g.attrib_TypeForwardedToAttribute attribs ||
               HasFSharpAttribute cenv.g cenv.g.attrib_CompilationArgumentCountsAttribute attribs ||
               HasFSharpAttribute cenv.g cenv.g.attrib_CompilationMappingAttribute attribs then 
                errorR(Error(FSComp.SR.tcUnsupportedAttribute(),synAttrib.Range));

            attribsAndTargets

        with e -> 
            errorRecovery e synAttrib.Range; 
            []) 

and TcAttributes cenv env attrTgt synAttribs = 
    TcAttributesWithPossibleTargets cenv env attrTgt synAttribs |> List.map snd

//-------------------------------------------------------------------------
// TcLetBinding
//------------------------------------------------------------------------

and TcLetBinding cenv isUse env containerInfo declKind tpenv (binds,bindsm,scopem) =

    // Typecheck all the bindings...
    let binds',tpenv = List.mapFold (fun tpenv b -> TcNonRecursiveBinding declKind cenv env tpenv (NewInferenceType ()) b) tpenv binds
    let (ContainerInfo(altActualParent,_)) = containerInfo
    
    // Canonicalize constraints prior to generalization 
    let denv = env.DisplayEnv
    GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,denv,bindsm) 
        (binds' |> List.collect (fun tbinfo -> 
            let (CheckedBindingInfo(_,_,_,_,_,flex,_,_,_,tauTy,_,_,_,_)) = tbinfo
            let (ExplicitTyparInfo(_,declaredTypars,_)) = flex
            let maxInferredTypars = (freeInTypeLeftToRight cenv.g false tauTy)
            declaredTypars @ maxInferredTypars));

    let lazyFreeInEnv = lazy (GeneralizationHelpers.ComputeUngeneralizableTypars env)

    // Generalize the bindings...
    (((fun x -> x), env, tpenv), binds') ||> List.fold (fun (mkf_sofar,env,tpenv) tbinfo -> 
        let (CheckedBindingInfo(inlineFlag,immut,attrs,doc,tcPatPhase2,flex,nameToPrelimValSchemeMap,rhsExpr,_,tauTy,m,spBind,_,konst)) = tbinfo
        let enclosingDeclaredTypars  = []
        let (ExplicitTyparInfo(_,declaredTypars,canInferTypars)) = flex
        let allDeclaredTypars  =  enclosingDeclaredTypars @ declaredTypars
        let generalizedTypars,prelimValSchemes2 = 
            let canInferTypars = GeneralizationHelpers. ComputeCanInferExtraGeneralizableTypars (containerInfo.ParentRef, canInferTypars, None)

            let maxInferredTypars = freeInTypeLeftToRight cenv.g false tauTy

            let generalizedTypars = 
                if isNil maxInferredTypars && isNil allDeclaredTypars then 
                   [] 
                else 
                   let freeInEnv = lazyFreeInEnv.Force()
                   GeneralizationHelpers.ComputeAndGeneralizeGenericTypars(cenv,denv, m, immut, freeInEnv, canInferTypars, GeneralizationHelpers.CanGeneralizeConstrainedTyparsForDecl(declKind), inlineFlag, Some rhsExpr, allDeclaredTypars, maxInferredTypars,tauTy,false)

            let prelimValSchemes2 = GeneralizeVals cenv denv enclosingDeclaredTypars  generalizedTypars nameToPrelimValSchemeMap

            generalizedTypars,prelimValSchemes2

        // REVIEW: this scopes generalized type variables. Ensure this is handled properly 
        // on all other paths. 
        let tpenv = HideUnscopedTypars generalizedTypars tpenv
        let valSchemes = NameMap.map (UseCombinedArity cenv.g declKind rhsExpr) prelimValSchemes2
        let values = MakeAndPublishVals cenv env (altActualParent,false,declKind,ValNotInRecScope,valSchemes,attrs,doc,konst)
        let pat' = tcPatPhase2 (TcPatPhase2Input values)
        let prelimRecValues = NameMap.map fst values
        
        // Now bind the r.h.s. to the l.h.s. 
        let rhse = mkTypeLambda m generalizedTypars (rhsExpr,tauTy)

        match pat' with 
        // Don't introduce temporary or 'let' for 'match against wild' or 'match against unit' 

        | (TPat_wild _ | TPat_const (Const.Unit,_)) when not isUse && isNil generalizedTypars ->
            let mk_seq_bind (tm,tmty) = (mkSequential SequencePointsAtSeq m rhse tm, tmty)
            (mk_seq_bind << mkf_sofar,env,tpenv)
            
        | _ -> 

        // nice: don't introduce awful temporary for r.h.s. in the 99% case where we know what we're binding it to 
        let tmp,pat'' = 
                match pat' with 
                // nice: don't introduce awful temporary for r.h.s. in the 99% case where we know what we're binding it to 
                | TPat_as (pat1,PBind(v,TypeScheme(generalizedTypars',_)),_) 
                    when List.lengthsEqAndForall2 typarRefEq generalizedTypars generalizedTypars' -> 
                      v, pat1

                | _ when mustinline(inlineFlag)  -> error(Error(FSComp.SR.tcInvalidInlineSpecification(),m))

                | _ -> 
                    let tmp,_ = mkCompGenLocal m "patternInput" (generalizedTypars +-> tauTy)
                    if isUse then 
                        errorR(Error(FSComp.SR.tcInvalidUseBinding(),m));
                    
                    // This assignment forces representation as module value, to maintain the invariant from the 
                    // type checker that anything related to binding module-level values is marked with an 
                    // val_repr_info, val_actual_parent and is_topbind
                    if (DeclKind.MustHaveArity declKind) then 
                        AdjustValToTopVal tmp altActualParent (InferArityOfExprBinding cenv.g tmp rhse);
                    tmp,pat'

        let mkRhsBind (tm,tmty) = (mkLet spBind m tmp rhse tm),tmty
        let allValsDefinedByPattern = (NameMap.range prelimRecValues |> FlatList.ofList)
        let mkPatBind (tm,tmty) =
            let valsDefinedByMatching = FlatListSet.remove valEq tmp allValsDefinedByPattern
            let matchx = CompilePatternForMatch cenv env m m true ThrowIncompleteMatchException (tmp,generalizedTypars) [TClause(pat'',None,TTarget(valsDefinedByMatching,tm,SuppressSequencePointAtTarget),m)] tauTy tmty
            let matchx = if (DeclKind.ConvertToLinearBindings declKind) then LinearizeTopMatch cenv.g altActualParent matchx else matchx
            matchx,tmty

        let mkCleanup (tm,tmty) =
            if isUse then 
                (allValsDefinedByPattern,(tm,tmty)) ||> FlatList.foldBack (fun v (tm,tmty) ->
                    AddCxTypeMustSubsumeType denv cenv.css v.Range NoTrace cenv.g.system_IDisposable_typ v.Type;
                    let cleanupE = BuildDisposableCleanup cenv env m v
                    mkTryFinally cenv.g (tm,cleanupE,m,tmty,SequencePointInBodyOfTry,NoSequencePointAtFinally),tmty)
            else 
                (tm,tmty)
                
        ((mkRhsBind << mkPatBind << mkCleanup << mkf_sofar),
         AddLocalValMap cenv.tcSink scopem prelimRecValues env,
         tpenv))

/// Return binds corresponding to the linearised let-bindings.
/// This reveals the bound items, e.g. when the lets occur in incremental object defns.
/// RECAP:
///   The LHS of let-bindings are patterns.
///   These patterns could fail, e.g. "let Some x = ...".
///   So letbindings could contain a fork at a match construct, with one branch being the match failure.
///   If bindings are linearised, then this fork is pushed to the RHS.
///   In this case, the let bindings type check to a sequence of bindings.
and TcLetBindings cenv env containerInfo declKind tpenv (binds,bindsm,scopem) =
    assert(DeclKind.ConvertToLinearBindings declKind);
    let mkf,env,tpenv = TcLetBinding cenv false env containerInfo declKind tpenv (binds,bindsm,scopem)
    let unite = mkUnit cenv.g bindsm
    let expr,_ = mkf (unite,cenv.g.unit_ty)
    let rec stripLets acc = function
        | Expr.Let (bind,body,m,_)      ->  stripLets (TMDefLet(bind,m) :: acc) body
        | Expr.Sequential (e1,e2,NormalSeq,_,m)      ->  stripLets (TMDefDo(e1,m) :: acc) e2
        | Expr.Const (Const.Unit,_,_) -> List.rev acc
        | _ -> failwith "TcLetBindings: let sequence is non linear. Maybe a LHS pattern was not linearised?"
    let binds = stripLets [] expr
    binds,env,tpenv

and CheckMemberFlags _g optIntfSlotTy newslotsOK overridesOK memberFlags m = 
    if newslotsOK = NoNewSlots && memberFlags.IsDispatchSlot then 
      errorR(Error(FSComp.SR.tcAbstractMembersIllegalInAugmentation(),m));
    if overridesOK = WarnOnOverrides && memberFlags.IsOverrideOrExplicitImpl && isNone optIntfSlotTy then 
      warning(OverrideInIntrinsicAugmentation(m))
    if overridesOK = ErrorOnOverrides && memberFlags.IsOverrideOrExplicitImpl then 
      error(Error(FSComp.SR.tcMethodOverridesIllegalHere(),m))
    
/// Apply the pre-assumed knowledge available to type inference prior to looking at 
/// the _body_ of the binding. For example, in a letrec we may assume this knowledge 
/// for each binding in the letrec prior to any type inference. This might, for example, 
/// tell us the type of the arguments to a recursive function. 
and ApplyTypesFromArgumentPatterns (cenv, env, optArgsOK, ty, m, tpenv, NormalizedBindingRhs (pushedPats, retInfoOpt, e), memberFlagsOpt:MemberFlags option) =  
    match pushedPats with
    | [] ->
        match retInfoOpt with 
        | None -> ()
        | Some (SynBindingReturnInfo (retInfoTy, m, _)) -> 
            let retInfoTy,_ = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType env tpenv retInfoTy
            UnifyTypes cenv env m ty retInfoTy
        // Property setters always have "unit" return type
        match memberFlagsOpt with 
        | Some memFlags when memFlags.MemberKind = MemberKind.PropertySet -> 
            UnifyTypes cenv env m ty cenv.g.unit_ty
        | _ -> ()
            
    | pushedPat :: morePushedPats -> 
        let domainTy,resultTy = UnifyFunctionType None cenv env.DisplayEnv m ty
        // We apply the type information from the patterns by type checking the
        // "simple" patterns against 'domainTy'. They get re-typechecked later. 
        ignore (TcSimplePats cenv optArgsOK CheckCxs domainTy env (tpenv,Map.empty,Set.empty) pushedPat);
        ApplyTypesFromArgumentPatterns (cenv, env, optArgsOK, resultTy, m, tpenv, NormalizedBindingRhs (morePushedPats, retInfoOpt, e), memberFlagsOpt)


/// Do the type annotations give the full and complete generic type? If so, enable generic recursion 
and ComputeIsComplete enclosingDeclaredTypars declaredTypars ty = 
    Zset.isEmpty (List.fold (fun acc v -> Zset.remove v acc) 
                                  (freeInType CollectAllNoCaching ty).FreeTypars 
                                  (enclosingDeclaredTypars@declaredTypars)) 


/// Determine if a uniquely-identified-abstract-slot exists for an override member (or interface member implementation) based on the information available 
/// at the syntactic definition of the member (i.e. prior to type inference). If so, we know the expected signature of the override, and the full slotsig 
/// it implements. Apply the inferred slotsig. 
and ApplyAbstractSlotInference cenv (envinner:TcEnv) (bindingTy,m,synTyparDecls,declaredTypars,memberId,tcrefObjTy,renaming,_objTy,optIntfSlotTy,valSynData,memberFlags,attribs) = 

    let ad = envinner.eAccessRights
    let typToSearchForAbstractMembers = 
        match optIntfSlotTy with 
        | Some (ty, abstractSlots) -> 
            // The interface type is in terms of the type's type parameters. 
            // We need a signature in terms of the values' type parameters. 
            ty,Some(abstractSlots) 
        | None -> 
            tcrefObjTy,None

    // Determine if a uniquely-identified-override exists based on the information 
    // at the member signature. If so, we know the type of this member, and the full slotsig 
    // it implements. Apply the inferred slotsig. 
    if memberFlags.IsOverrideOrExplicitImpl then 
        
        // for error detection, we want to compare finality when testing for equivalence
        let makeUniqueBySig meths = meths |> ListSet.setify (MethInfosEquivByNameAndSig EraseNone false cenv.g cenv.amap m)
        match memberFlags.MemberKind with 
        | MemberKind.Member -> 
             let dispatchSlots,dispatchSlotsArityMatch = 
                 GetAbstractMethInfosForSynMethodDecl(cenv.infoReader,ad,memberId,m,typToSearchForAbstractMembers,valSynData)

             let uniqueAbstractMethSigs = 
                 match dispatchSlots with 
                 | [] -> 
                     errorR(Error(FSComp.SR.tcNoMemberFoundForOverride(),memberId.idRange));
                     []

                 | _ -> 
                     match dispatchSlotsArityMatch with 
                     | meths when meths |> makeUniqueBySig |> List.length = 1 -> meths
                     | [] -> 
                         errorR(Error(FSComp.SR.tcOverrideArityMismatch(),memberId.idRange));
                         []
                     | _ -> [] // check that method to override is sealed is located at CheckOverridesAreAllUsedOnce (typrelns.fs)
                      // We hit this case when it is ambiguous which abstract method is being implemented. 

               
             
             // If we determined a unique member then utilize the type information from the slotsig 
             let declaredTypars = 
                 match uniqueAbstractMethSigs with 
                 | uniqueAbstractMeth :: _ -> 

                     let uniqueAbstractMeth = InstMethInfo cenv.amap m renaming uniqueAbstractMeth
                     
                     let typarsFromAbsSlotAreRigid,typarsFromAbsSlot,argTysFromAbsSlot, retTyFromAbsSlot = 
                         FreshenAbstractSlot cenv.g cenv.amap m synTyparDecls uniqueAbstractMeth

                     let declaredTypars = (if typarsFromAbsSlotAreRigid then typarsFromAbsSlot else declaredTypars)

                     let absSlotTy = mkMethodTy cenv.g argTysFromAbsSlot retTyFromAbsSlot

                     UnifyTypes cenv envinner m bindingTy absSlotTy;
                     declaredTypars
                 | _ -> declaredTypars 

                 // Retained to ensure use of an FSComp.txt entry, can be removed at a later date: errorR(Error(FSComp.SR.tcDefaultAmbiguous(),memberId.idRange));

             // What's the type containing the abstract slot we're implementing? Used later on in MakeMemberDataAndMangledNameForMemberVal. 
             // This type must be in terms of the enclosing type's formal type parameters, hence the application of revRenaming 

             let optInferredImplSlotTys = 
                 match optIntfSlotTy with 
                 | Some (x,_) -> [x]
                 | None -> uniqueAbstractMethSigs |> List.map (fun x -> x.EnclosingType)

             optInferredImplSlotTys,declaredTypars

        | MemberKind.PropertyGet 
        | MemberKind.PropertySet as k ->
           let dispatchSlots = GetAbstractPropInfosForSynPropertyDecl(cenv.infoReader,ad,memberId,m,typToSearchForAbstractMembers,k,valSynData)

           // Only consider those abstract slots where the get/set flags match the value we're defining 
           let dispatchSlots = 
               dispatchSlots 
               |> List.filter (fun pinfo -> 
                     (pinfo.HasGetter && k=MemberKind.PropertyGet) ||
                     (pinfo.HasSetter && k=MemberKind.PropertySet))
                                       
           // Find the unique abstract slot if it exists 
           let uniqueAbstractPropSigs = 
               match dispatchSlots with 
               | [] when not (CompileAsEvent cenv.g attribs) -> 
                   errorR(Error(FSComp.SR.tcNoPropertyFoundForOverride(),memberId.idRange)); 
                   []
               | [uniqueAbstractProp] -> [uniqueAbstractProp]
               | _ -> 
                   // We hit this case when it is ambiguous which abstract property is being implemented. 
                   []

           // If we determined a unique member then utilize the type information from the slotsig 
           uniqueAbstractPropSigs |> List.iter (fun uniqueAbstractProp -> 

               let kIsGet = (k = MemberKind.PropertyGet)

               if not (if kIsGet then uniqueAbstractProp.HasGetter else uniqueAbstractProp.HasSetter) then 
                   error(Error(FSComp.SR.tcAbstractPropertyMissingGetOrSet(if kIsGet then "getter" else "setter"),memberId.idRange));

               let uniqueAbstractMeth = if kIsGet then uniqueAbstractProp.GetterMethod else uniqueAbstractProp.SetterMethod

               let uniqueAbstractMeth = InstMethInfo cenv.amap m renaming uniqueAbstractMeth

               let _,typarsFromAbsSlot,argTysFromAbsSlot, retTyFromAbsSlot = 
                    FreshenAbstractSlot cenv.g cenv.amap m synTyparDecls uniqueAbstractMeth

               if nonNil typarsFromAbsSlot then 
                   errorR(InternalError("Unexpected generic property",memberId.idRange));

               let absSlotTy = 
                   if (memberFlags.MemberKind = MemberKind.PropertyGet) 
                   then mkMethodTy cenv.g argTysFromAbsSlot retTyFromAbsSlot 
                   else 
                     match argTysFromAbsSlot with 
                     | [argTysFromAbsSlot] -> mkTupledTy cenv.g argTysFromAbsSlot --> cenv.g.unit_ty
                     | _ -> 
                         error(Error(FSComp.SR.tcInvalidSignatureForSet(),memberId.idRange)); 
                         retTyFromAbsSlot --> cenv.g.unit_ty

               UnifyTypes cenv envinner m bindingTy absSlotTy);
           

                   // Retained to ensure use of an FSComp.txt entry, can be removed at a later date: errorR(Error(FSComp.SR.tcPropertyAlreadyHasDefaultImplementation(),memberId.idRange));
                   // Retained to ensure use of an FSComp.txt entry, can be removed at a later date: errorR(Error(FSComp.SR.tcPropertyImplementedIsAmbiguous(),memberId.idRange));
           
           // What's the type containing the abstract slot we're implementing? Used later on in MakeMemberDataAndMangledNameForMemberVal. 
           // This type must be in terms of the enclosing type's formal type parameters, hence the application of revRenaming.
           
           let optInferredImplSlotTys = 
               match optIntfSlotTy with 
               | Some (x,_) -> [ x ]
               | None -> uniqueAbstractPropSigs |> List.map (fun pinfo -> pinfo.EnclosingType) 

           optInferredImplSlotTys,declaredTypars

        | _ -> 
           match optIntfSlotTy with 
           | Some (x,_) -> [x], declaredTypars 
           | None -> [], declaredTypars

    else

       [], declaredTypars 

and CheckForNonAbstractInterface declKind tcref memberFlags m =
    if isInterfaceTyconRef tcref then 
        if memberFlags.MemberKind = MemberKind.ClassConstructor then 
            error(Error(FSComp.SR.tcStaticInitializersIllegalInInterface(),m))
        elif memberFlags.MemberKind = MemberKind.Constructor then 
            error(Error(FSComp.SR.tcObjectConstructorsIllegalInInterface(),m))
        elif memberFlags.IsOverrideOrExplicitImpl then 
            error(Error(FSComp.SR.tcMemberOverridesIllegalInInterface(),m))
        elif not (declKind=ExtrinsicExtensionBinding || memberFlags.IsDispatchSlot ) then
            error(Error(FSComp.SR.tcConcreteMembersIllegalInInterface(),m))

//-------------------------------------------------------------------------
// TcLetrec - AnalyzeAndMakeRecursiveValue(s)
//------------------------------------------------------------------------

and AnalyzeRecursiveStaticMemberOrValDecl (cenv, envinner: TcEnv, tpenv, declKind, newslotsOK, overridesOK, tcrefContainerInfo, vis1, id:Ident, vis2, declaredTypars, memberFlagsOpt, thisIdOpt, bindingAttribs, valSynInfo, ty, bindingRhs, mBinding, flex) =
    let vis = CombineVisibilityAttribs vis1 vis2 mBinding

    // Check if we're defining a member, in which case generate the internal unique 
    // name for the member and the information about which type it is agumenting 
      
    match tcrefContainerInfo, memberFlagsOpt with 
    | (Some(MemberOrValContainerInfo(tcref, optIntfSlotTy, baseValOpt, _safeInitInfo, declaredTyconTypars)),Some memberFlags) -> 
        assert (isNone(optIntfSlotTy))
      
        CheckMemberFlags cenv.g None newslotsOK overridesOK memberFlags id.idRange;
        CheckForNonAbstractInterface declKind tcref memberFlags id.idRange;

        if tcref.Deref.IsExceptionDecl && 
           (memberFlags.MemberKind = MemberKind.Constructor) then 
            error(Error(FSComp.SR.tcConstructorsDisallowedInExceptionAugmentation(),id.idRange));                  

        let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
        let _,enclosingDeclaredTypars,_,objTy,thisTy = FreshenObjectArgType cenv mBinding TyparRigidity.WillBeRigid tcref isExtrinsic declaredTyconTypars
        let envinner = AddDeclaredTypars CheckForDuplicateTypars enclosingDeclaredTypars envinner
        let envinner = MakeInnerEnvForTyconRef cenv envinner tcref isExtrinsic 

        let safeThisValOpt, baseValOpt = 
            match memberFlags.MemberKind with 
            
            // Explicit struct or class constructor
            | MemberKind.Constructor  ->
                // A fairly adhoc place to put this check 
                if tcref.IsStructOrEnumTycon && (match valSynInfo with SynValInfo([[]],_) -> true | _ -> false) then
                    errorR(Error(FSComp.SR.tcStructsCannotHaveConstructorWithNoArguments(),mBinding));

                if not tcref.IsFSharpObjectModelTycon then 
                    errorR(Error(FSComp.SR.tcConstructorsIllegalForThisType(),id.idRange));

                let safeThisValOpt = MakeAndPublishSafeThisVal cenv envinner thisIdOpt thisTy
                  
                // baseValOpt is the 'base' variable associated with the inherited portion of a class 
                // It is declared once on the 'inheritedTys clause, but a fresh binding is made for 
                // each member that may use it. 
                let baseValOpt = 
                    match GetSuperTypeOfType cenv.g cenv.amap mBinding objTy with 
                    | Some superTy -> MakeAndPublishBaseVal cenv envinner (match baseValOpt with None -> None | Some v -> Some v.Id) superTy 
                    | None -> None

                let domainTy = NewInferenceType ()

                // This is the type we pretend a constructor has, because its implementation must ultimately appear to return a value of the given type 
                // This is somewhat awkward later in codegen etc. 
                UnifyTypes cenv envinner mBinding ty (domainTy --> objTy);

                safeThisValOpt, baseValOpt
                
            | _ -> 
                None,None
          
        let memberInfo = 
            let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
            MakeMemberDataAndMangledNameForMemberVal(cenv.g,tcref,isExtrinsic,bindingAttribs,[],memberFlags,valSynInfo,id,false)

        envinner,tpenv,id,Some(memberInfo),vis,vis2,safeThisValOpt,enclosingDeclaredTypars,baseValOpt,flex,bindingRhs,declaredTypars
        
    // non-member bindings. How easy. 
    | _ -> 
        envinner,tpenv,id,None,vis,vis2,None,[],None,flex,bindingRhs,declaredTypars
    

and AnalyzeRecursiveInstanceMemberDecl (cenv,envinner: TcEnv, tpenv, declKind, synTyparDecls, valSynInfo, flex:ExplicitTyparInfo, newslotsOK, overridesOK, vis1, thisId, memberId:Ident, toolId:Ident option, bindingAttribs, vis2, tcrefContainerInfo, memberFlagsOpt, ty, bindingRhs, mBinding) =
    let vis = CombineVisibilityAttribs vis1 vis2 mBinding
    let (ExplicitTyparInfo(_,declaredTypars,infer)) = flex
    match tcrefContainerInfo,memberFlagsOpt with 
     // Normal instance members. 
     | Some(MemberOrValContainerInfo(tcref, optIntfSlotTy, baseValOpt, _safeInitInfo, declaredTyconTypars)), Some memberFlags -> 
       
         CheckMemberFlags cenv.g optIntfSlotTy newslotsOK overridesOK memberFlags mBinding;

         if isSome vis && memberFlags.IsOverrideOrExplicitImpl then 
            errorR(Error(FSComp.SR.tcOverridesCannotHaveVisibilityDeclarations(),memberId.idRange));
              
       
         // Syntactically push the "this" variable across to be a lambda on the right 
         let bindingRhs = PushOnePatternToRhs cenv true (mkSynThisPatVar thisId) bindingRhs
       
         // The type being augmented tells us the type of 'this' 
         let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
         let tcrefObjTy,enclosingDeclaredTypars,renaming,objTy,thisTy = FreshenObjectArgType cenv mBinding TyparRigidity.WillBeRigid tcref isExtrinsic declaredTyconTypars

         let envinner = AddDeclaredTypars CheckForDuplicateTypars enclosingDeclaredTypars envinner

         // If private, the member's accessibility is related to 'tcref' 
         let envinner = MakeInnerEnvForTyconRef cenv envinner tcref isExtrinsic 

         let baseValOpt = if tcref.IsFSharpObjectModelTycon then baseValOpt else None

         // Apply the known type of 'this' 
         let bindingTy = NewInferenceType ()
         UnifyTypes cenv envinner mBinding ty (thisTy --> bindingTy);

         CheckForNonAbstractInterface declKind tcref memberFlags memberId.idRange; 
         
         // Determine if a uniquely-identified-override List.exists based on the information 
         // at the member signature. If so, we know the type of this member, and the full slotsig 
         // it implements. Apply the inferred slotsig. 
         let optInferredImplSlotTys, declaredTypars = 
             ApplyAbstractSlotInference cenv envinner (bindingTy,mBinding,synTyparDecls,declaredTypars,memberId,tcrefObjTy,renaming,objTy,optIntfSlotTy,valSynInfo,memberFlags,bindingAttribs)

         // Update the ExplicitTyparInfo to reflect the declaredTypars inferred from the abstract slot 
         let flex = ExplicitTyparInfo(declaredTypars,declaredTypars,infer)

         // baseValOpt is the 'base' variable associated with the inherited portion of a class 
         // It is declared once on the 'inheritedTys clause, but a fresh binding is made for 
         // each member that may use it. 
         let baseValOpt = 
             match GetSuperTypeOfType cenv.g cenv.amap mBinding objTy with 
             | Some(superTy) -> MakeAndPublishBaseVal cenv envinner (match baseValOpt with None -> None | Some v -> Some v.Id) superTy 
             | None -> None

         let memberInfo = MakeMemberDataAndMangledNameForMemberVal(cenv.g,tcref,isExtrinsic,bindingAttribs,optInferredImplSlotTys,memberFlags,valSynInfo,memberId,false)
         let memberId = match toolId with Some tid -> ident(memberId.idText, tid.idRange) | None -> memberId

         envinner, tpenv, memberId, Some memberInfo, vis, vis2, None, enclosingDeclaredTypars, baseValOpt, flex, bindingRhs, declaredTypars
     | _ -> 
         error(Error(FSComp.SR.tcRecursiveBindingsWithMembersMustBeDirectAugmentation(),mBinding)) 

and AnalyzeRecursiveDecl (cenv,envinner,tpenv,declKind,synTyparDecls,declaredTypars,thisIdOpt,valSynInfo,flex,newslotsOK,overridesOK,vis1,declPattern,bindingAttribs,tcrefContainerInfo,memberFlagsOpt,ty,bindingRhs,mBinding) =
    let rec analyzeRecursiveDeclPat tpenv p = 
        match p with  
        | SynPat.FromParseError(pat',_) -> analyzeRecursiveDeclPat tpenv pat'
        | SynPat.Typed(pat',cty,_) -> 
            let cty',tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType envinner tpenv cty
            UnifyTypes cenv envinner mBinding ty cty';
            analyzeRecursiveDeclPat tpenv pat' 
        | SynPat.Attrib(_pat',_attribs,m) -> 
            error(Error(FSComp.SR.tcAttributesInvalidInPatterns(),m));
            //analyzeRecursiveDeclPat pat' 

        // This is for the construct
        //    'let rec x = ... and do ... and y = ...' 
        // DEPRECATED IN pars.mly 
        | SynPat.Const (SynConst.Unit, m) -> 
             let id = ident ("doval",m)
             analyzeRecursiveDeclPat tpenv (SynPat.Named (SynPat.Wild m, id,false,None,m))
             
        | SynPat.Named (SynPat.Wild _, id,_,vis2,_) -> 
            AnalyzeRecursiveStaticMemberOrValDecl (cenv,envinner,tpenv,declKind,newslotsOK,overridesOK,tcrefContainerInfo,vis1,id,vis2,declaredTypars,memberFlagsOpt,thisIdOpt,bindingAttribs,valSynInfo,ty,bindingRhs,mBinding,flex)
            
        | SynPat.InstanceMember(thisId,memberId,toolId,vis2,_) -> 
            AnalyzeRecursiveInstanceMemberDecl (cenv,envinner,tpenv,declKind,synTyparDecls,valSynInfo,flex,newslotsOK,overridesOK,vis1,thisId,memberId,toolId,bindingAttribs,vis2,tcrefContainerInfo,memberFlagsOpt,ty,bindingRhs,mBinding)

        | _ -> error(Error(FSComp.SR.tcOnlySimplePatternsInLetRec(),mBinding))

    analyzeRecursiveDeclPat tpenv declPattern


/// This is a major routine that generates the Val for a recursive binding 
/// prior to the analysis of the definition of the binding. This includes
/// members of all flavours (including properties, implicit class constructors
/// and overrides). At this point we perform override inference, to infer
/// which method we are overriding, in order to add constraints to the
/// implementation of the method.
and AnalyzeAndMakeRecursiveValue overridesOK isGeneratedEventVal cenv (env:TcEnv) (tpenv,recBindIdx) (NormalizedRecBindingDefn(containerInfo,newslotsOK,declKind,binding)) =

    // Pull apart the inputs
    let (NormalizedBinding(vis1,bindingKind,isInline,isMutable,bindingSynAttribs,bindingXmlDoc,synTyparDecls,valSynData,declPattern,bindingRhs,mBinding,spBind)) = binding
    let (NormalizedBindingRhs(_,_,bindingExpr)) = bindingRhs
    let (SynValData(memberFlagsOpt,valSynInfo,thisIdOpt)) = valSynData 
    let (ContainerInfo(altActualParent,tcrefContainerInfo)) = containerInfo
    
    let attrTgt = DeclKind.AllowedAttribTargets memberFlagsOpt declKind 

    // Check the attributes on the declaration
    let bindingAttribs = TcAttributes cenv env attrTgt bindingSynAttribs

    // Allocate the type inference variable for the inferred type
    let ty = NewInferenceType () 
        
        
    let inlineFlag = ComputeInlineFlag memberFlagsOpt isInline isMutable mBinding
    if isMutable then errorR(Error(FSComp.SR.tcOnlyRecordFieldsAndSimpleLetCanBeMutable(),mBinding));


    // Typecheck the typar decls, if any
    let flex, tpenv = TcBindingTyparDecls false cenv env tpenv synTyparDecls
    let (ExplicitTyparInfo(_,declaredTypars,_)) = flex
    let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTypars env
    
    // OK, analyze the declaration and return lots of information about it
    let envinner,tpenv,bindingId,memberInfoOpt,vis,vis2,safeThisValOpt,enclosingDeclaredTypars,baseValOpt,flex,bindingRhs,declaredTypars = 

        AnalyzeRecursiveDecl (cenv, envinner, tpenv, declKind, synTyparDecls, declaredTypars, thisIdOpt, valSynInfo, flex,
                              newslotsOK, overridesOK, vis1, declPattern, bindingAttribs, tcrefContainerInfo,
                              memberFlagsOpt, ty, bindingRhs, mBinding)


    let optArgsOK = isSome(memberFlagsOpt)

    // Assert the types given in the argument patterns
    ApplyTypesFromArgumentPatterns(cenv,envinner,optArgsOK,ty,mBinding,tpenv,bindingRhs,memberFlagsOpt);

    // Do the type annotations give the full and complete generic type? 
    // If so, generic recursion can be used when using this type. 
    let isComplete =  ComputeIsComplete enclosingDeclaredTypars declaredTypars ty
    
    // NOTE: The type scheme here is normally not 'complete'!!!! The type is more or less just a type variable at this point. 
    // NOTE: toparity, type and typars get fixed-up after inference 
    let prelimTyscheme = TypeScheme(enclosingDeclaredTypars@declaredTypars,ty)
    let partialValReprInfo = TranslateTopValSynInfo mBinding (TcAttributes cenv envinner) valSynInfo
    let topValInfo = UseSyntacticArity declKind prelimTyscheme partialValReprInfo
    let hasDeclaredTypars = declaredTypars.Length > 0
    let prelimValScheme = ValScheme(bindingId,prelimTyscheme,topValInfo,memberInfoOpt,false,inlineFlag,NormalVal,vis,false,false,false,hasDeclaredTypars)

    // Check the literal r.h.s., if any
    let _, konst = TcLiteral cenv ty env tpenv (bindingAttribs,bindingExpr)

    let extraBindings,extraValues,tpenv,recBindIdx = 
       let extraBindings = 
          [ for extraBinding in EventDeclarationNormalization.GenerateExtraBindings cenv (bindingAttribs,binding) do
               yield (NormalizedRecBindingDefn(containerInfo,newslotsOK,declKind,extraBinding)) ]
       let res,(tpenv,recBindIdx) = List.mapFold (AnalyzeAndMakeRecursiveValue overridesOK true cenv env) (tpenv,recBindIdx) extraBindings
       let extraBindings, extraValues = List.unzip res
       List.concat extraBindings, List.concat extraValues, tpenv,recBindIdx
    
    // Create the value 
    let vspec = MakeAndPublishVal cenv envinner (altActualParent,false,declKind,ValInRecScope(isComplete),prelimValScheme,bindingAttribs,bindingXmlDoc,konst,isGeneratedEventVal)
    
    let mangledId = ident(vspec.LogicalName,vspec.Range)
    // Reconstitute the binding with the unique name
    let revisedBinding = NormalizedBinding (vis1,bindingKind,isInline,isMutable,bindingSynAttribs,bindingXmlDoc,synTyparDecls,valSynData,mkSynPatVar vis2 mangledId,bindingRhs,mBinding,spBind)

    // Create the RBInfo to use in later phases
    let rbinfo = 
        let safeInitInfo = 
            match tcrefContainerInfo with 
            | Some(MemberOrValContainerInfo(_, _, _, safeInitInfo, _)) -> safeInitInfo
            | _ -> NoSafeInitInfo
        
        RBInfo(recBindIdx,containerInfo,enclosingDeclaredTypars,inlineFlag,vspec,flex,partialValReprInfo,memberInfoOpt,baseValOpt,safeThisValOpt,safeInitInfo,vis,ty,declKind)

    let recBindIdx = recBindIdx + 1

    // Done - add the declared name to the List.map and return the bundle for use by TcLetrec 
    let primaryBinding : PreCheckingRecursiveBinding = 
        { SyntacticBinding = revisedBinding
          RecBindingInfo = rbinfo }

    ((primaryBinding::extraBindings),(vspec::extraValues)),(tpenv,recBindIdx)


and AnalyzeAndMakeRecursiveValues overridesOK cenv env tpenv binds = 
    let recBindIdx = 0
    let res,tpenv = List.mapFold (AnalyzeAndMakeRecursiveValue overridesOK false cenv env) (tpenv,recBindIdx) binds
    let bindings, values = List.unzip res
    List.concat bindings, List.concat values, tpenv


//-------------------------------------------------------------------------
// TcLetrecBinding
//-------------------------------------------------------------------------

and TcLetrecBinding 
         (cenv, envRec: TcEnv, scopem, extraGeneralizableTypars: Typars, reqdThisValTyOpt: TType option)
         
         // The state of the left-to-right iteration through the bindings
         (envNonRec: TcEnv, 
          generalizedRecBinds : PostGeneralizationRecursiveBinding list,
          preGeneralizationRecBinds: PreGeneralizationRecursiveBinding list,
          tpenv,
          uncheckedRecBindsTable : Map) 
         
         // This is the actual binding to check
         (rbind : PreCheckingRecursiveBinding) = 

    let (RBInfo(_,_,enclosingDeclaredTypars,_,vspec,flex,_,_,baseValOpt,safeThisValOpt,safeInitInfo,_,tau,declKind)) = rbind.RecBindingInfo
    
    let allDeclaredTypars = enclosingDeclaredTypars @ rbind.RecBindingInfo.DeclaredTypars

    // dprintf "TcLetrec (before): tau = %s\n" (Layout.showL  (typeL tau));  

    // Notes on FSharp 1.0, 3187:
    //    - Progressively collect the "eligible for early generalization" set of bindings  -- DONE
    //    - After checking each binding, check this set to find generalizable bindings
    //    - The only reason we can't generalize is if a binding refers to type variables to which 
    //      additional constraints may be applied as part of checking a later binding
    //    - Compute the set by iteratively knocking out bindings that refer to type variables free in later bindings
    //    - Implementation notes:
    //         - Generalize by remap/substitution
    //         - Pass in "free in later bindings" by passing in the set of inference variables for the bindings, i.e. the binding types
    //         - For classes the bindings will include all members in a recursive group of types
    //
    
    //  Example 1: 
    //    let f() = g()   f : unit -> ?b
    //    and g() = 1     f : unit -> int, can generalize (though now monomorphic)

    //  Example 2: 
    //    let f() = g()   f : unit -> ?b
    //    and g() = []    f : unit -> ?c list, can generalize
    
    //  Example 3: 
    //    let f() = []   f : unit -> ?b, can generalize immediately
    //    and g() = []
    let envRec = Option.foldBack (AddLocalVal cenv.tcSink scopem) baseValOpt envRec
    let envRec = Option.foldBack (AddLocalVal cenv.tcSink scopem) safeThisValOpt envRec

    // Members can access protected members of parents of the type, and private members in the type 
    let envRec = MakeInnerEnvForMember cenv envRec vspec 

    let checkedBind,tpenv = 
        TcNormalizedBinding declKind cenv envRec tpenv tau safeThisValOpt safeInitInfo (enclosingDeclaredTypars,flex) rbind.SyntacticBinding

    // dprintf "TcLetrec (%s, after): tau = %s\n" vspec.LogicalName (Layout.showL  (typeL tau));    
    (try UnifyTypes cenv envRec vspec.Range (allDeclaredTypars +-> tau) vspec.Type 
     with e -> error (Recursion(envRec.DisplayEnv,vspec.Id,tau,vspec.Type,vspec.Range)));

    // Inside the incremental class sytntax we assert the type of the 'this' variable to be precisely the same type as the 
    // this variable for the implicit class constructor. For static members, we assert the type variables associated
    // for the class to be identical to those used for the implicit class constructor and the static class constructor.
    match reqdThisValTyOpt with 
    | None -> ()          
    | Some reqdThisValTy -> 
        let reqdThisValTy, actualThisValTy, rangeForCheck =
            match GetInstanceMemberThisVariable (vspec, checkedBind.Expr) with
               | None -> 
                   let reqdThisValTy = if isByrefTy cenv.g reqdThisValTy then destByrefTy cenv.g reqdThisValTy else reqdThisValTy
                   let enclosingTyconRef = tcrefOfAppTy cenv.g reqdThisValTy
                   reqdThisValTy, (mkAppTy enclosingTyconRef (List.map mkTyparTy enclosingDeclaredTypars)), vspec.Range
               | Some thisVal -> 
                   reqdThisValTy, thisVal.Type, thisVal.Range
        if not (AddCxTypeEqualsTypeUndoIfFailed envRec.DisplayEnv cenv.css rangeForCheck actualThisValTy reqdThisValTy) then 
            errorR (Error(FSComp.SR.tcNonUniformMemberUse vspec.DisplayName,vspec.Range));

    // dprintf "TcLetrec (%s, after unify): typeOfVal v = %s\n" v.LogicalName (Layout.showL  (typeL v.Type));  
    
    let preGeneralizationRecBind =  { RecBindingInfo = rbind.RecBindingInfo; 
                                      CheckedBinding= checkedBind; 
                                      ExtraGeneralizableTypars= extraGeneralizableTypars }

    // Remove one binding from the unchecked list
    let uncheckedRecBindsTable = 
        assert (uncheckedRecBindsTable.ContainsKey rbind.RecBindingInfo.Val.Stamp)
        uncheckedRecBindsTable.Remove rbind.RecBindingInfo.Val.Stamp
    
    // Add one binding to the candidates eligible for generalization
    let preGeneralizationRecBinds = (preGeneralizationRecBind::preGeneralizationRecBinds)

    // Incrementally generalize as many bindings as we can
    TcIncrementalLetRecGeneralization cenv scopem (envNonRec, generalizedRecBinds, preGeneralizationRecBinds, tpenv, uncheckedRecBindsTable) 

and TcIncrementalLetRecGeneralization cenv scopem
         // The state of the left-to-right iteration through the bindings
         (envNonRec: TcEnv, 
          generalizedRecBinds : PostGeneralizationRecursiveBinding list,
          preGeneralizationRecBinds: PreGeneralizationRecursiveBinding list,
          tpenv,
          uncheckedRecBindsTable : Map) =

    let denv = envNonRec.DisplayEnv
    // recompute the free-in-environment in case any type variables have been instantiated
    let freeInEnv = GeneralizationHelpers.ComputeUngeneralizableTypars envNonRec

    // Attempt to actually generalize some of the candidates eligible for generalization.
    // Compute which bindings are now eligible for early generalization.
    // Do this by computing a greatest fixed point by iteratively knocking out bindings that refer 
    // to type variables free in later bindings. Look for ones whose type doesn't involve any of the other types
    let newGeneralizedRecBinds,preGeneralizationRecBinds, tpenv = 

        //printfn  "\n---------------------\nConsidering early generalization after type checking binding %s" vspec.DisplayName

        // Get the type variables free in bindings that have not yet been checked.
        // 
        // The naive implementation of this is to iterate all the forward bindings, but this is quadratic.
        //
        // It turns out we can remove the quadratic behaviour as follows. 
        // -    During type checking we already keep a table of recursive uses of values, indexed by target value. 
        // -    This table is usually much smaller than the number of remaining forward declarations ? e.g. in the pathological case you mentioned below this table is size 1. 
        // -    If a forward declaration does not have an entry in this table then its type can't involve any inference variables from the declarations we have already checked. 
        // -    So by scanning the domain of this table we can reduce the complexity down to something like O(n * average-number-of-forward-calls). 
        // -    For a fully connected programs or programs where every forward declaration is subject to a forward call, this would be quadratic. However we do not expect callgraphs to be like this in practice
        // 
        // Hence we use the recursive-uses table to guide the process of scraping forward references for frozen types
        // If the is no entry in the recursive use table then a forward binding has never been used and
        // the type of a binding will not contain any inference variables.
        //
        // We do this lazily in case it is "obvious" that a binding can be generalized (e.g. its type doesn't
        // involve any type inference variables)
        //
        // The forward uses table will always be smaller than the number of potential forward bindings except in extremely
        // pathological situations
        let freeInUncheckedRecBinds = 
            lazy ((emptyFreeTyvars, cenv.recUses.Contents) ||> Map.fold (fun acc vStamp _ -> 
                       if uncheckedRecBindsTable.ContainsKey vStamp then 
                           let fwdBind = uncheckedRecBindsTable.[vStamp]  
                           accFreeInType CollectAllNoCaching  fwdBind.RecBindingInfo.Val.Type acc
                       else
                           acc))

        let rec loop (preGeneralizationRecBinds: PreGeneralizationRecursiveBinding list,
                      frozenBindings: PreGeneralizationRecursiveBinding list) = 

            let frozenBindingTypes = frozenBindings |> List.map (fun pgrbind -> pgrbind.RecBindingInfo.Val.Type) 

            let freeInFrozenAndLaterBindings = 
                if frozenBindingTypes.IsEmpty then  
                    freeInUncheckedRecBinds
                else 
                    lazy (accFreeInTypes CollectAllNoCaching frozenBindingTypes (freeInUncheckedRecBinds.Force()))

            let preGeneralizationRecBinds,newFrozenBindings = 

                preGeneralizationRecBinds |> List.partition (fun pgrbind ->

                    //printfn "(testing binding %s)" pgrbind.RecBindingInfo.Val.DisplayName

                    // Get the free type variables in the binding
                    //
                    // We use the TauType here because the binding may already have been pre-generalized because it has
                    // a fully type-annotated type signature. We effectively want to generalize the binding 
                    // again here, properly - for example this means adjusting the expression for the binding to include
                    // a Expr_tlambda. If we use Val.Type then the type will appear closed.
                    let freeInBinding = (freeInType CollectAllNoCaching pgrbind.RecBindingInfo.Val.TauType).FreeTypars
                    
                    // Is the binding free of type inference variables? If so, it can be generalized immediately
                    if freeInBinding.IsEmpty then true else

                    //printfn "(failed generalization test 1 for binding for %s)" pgrbind.RecBindingInfo.Val.DisplayName
                    // Any declared type parameters in an type are always generalizable
                    let freeInBinding = Zset.diff  freeInBinding (Zset.ofList typarOrder (NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g pgrbind.ExtraGeneralizableTypars))

                    if freeInBinding.IsEmpty then true else

                    //printfn "(failed generalization test 2 for binding for %s)" pgrbind.RecBindingInfo.Val.DisplayName

                    // Any declared method parameters can always be generalized
                    let freeInBinding = Zset.diff  freeInBinding (Zset.ofList typarOrder (NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g pgrbind.RecBindingInfo.DeclaredTypars))

                    if freeInBinding.IsEmpty then true else

                    //printfn "(failed generalization test 3 for binding for %s)" pgrbind.RecBindingInfo.Val.DisplayName

                    // Type variables free in the non-recursive environment do not stop us generalizing the binding,
                    // since they can't be generalized anyway
                    let freeInBinding = Zset.diff  freeInBinding freeInEnv

                    if freeInBinding.IsEmpty then true else

                    //printfn "(failed generalization test 4 for binding for %s)" pgrbind.RecBindingInfo.Val.DisplayName

                    // Type variables free in unchecked bindings do stop us generalizing
                    let freeInBinding = Zset.inter (freeInFrozenAndLaterBindings.Force().FreeTypars) freeInBinding

                    if freeInBinding.IsEmpty then true else

                    //printfn "(failed generalization test 5 for binding for %s)" pgrbind.RecBindingInfo.Val.DisplayName
                    
                    false)
                    //if canGeneralize then 
                    //    printfn "YES: binding for %s can be generalized early" pgrbind.RecBindingInfo.Val.DisplayName
                    //else 
                    //    printfn "NO: binding for %s can't be generalized early" pgrbind.RecBindingInfo.Val.DisplayName

            // Have we reached a fixed point?
            if newFrozenBindings.IsEmpty then 
                preGeneralizationRecBinds,frozenBindings
            else
                // if not, then repeat
                loop(preGeneralizationRecBinds,newFrozenBindings@frozenBindings)
            
        // start with no frozen bindings
        let newGeneralizableBindings,preGeneralizationRecBinds = loop(preGeneralizationRecBinds,[])
        
        // Some of the bindings may now have been marked as 'generalizable' (which means they now transition
        // from PreGeneralization --> PostGeneralization, since we won't get any more information on 
        // these bindings by processing later bindings). But this doesn't mean we 
        // actually generalize all the individual type variables occuring in these bindings - for example, some 
        // type variables may be free in the environment, and some definitions
        // may be value definitions which can't be generalized, e.g. 
        //   let rec f x = g x 
        //   and g = id f 
        // Here the type variables in 'g' can't be generalized because it's a computation on the right.
        //
        // Note that in the normal case each binding passes IsGeneralizableValue. Properties and 
        // constructors do not pass CanInferExtraGeneralizedTyparsForRecBinding.

        let freeInEnv =
            (freeInEnv,newGeneralizableBindings) ||> List.fold (fun freeInEnv pgrbind -> 
                if GeneralizationHelpers.IsGeneralizableValue cenv.g pgrbind.CheckedBinding.Expr then 
                    freeInEnv 
                else 
                    let freeInBinding = (freeInType CollectAllNoCaching pgrbind.RecBindingInfo.Val.TauType).FreeTypars
                    let freeInBinding = Zset.diff  freeInBinding (Zset.ofList typarOrder (NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g pgrbind.ExtraGeneralizableTypars))
                    let freeInBinding = Zset.diff  freeInBinding (Zset.ofList typarOrder (NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g pgrbind.RecBindingInfo.DeclaredTypars))
                    Zset.union freeInBinding freeInEnv)

        // Process the bindings marked for transition from PreGeneralization --> PostGeneralization
        let newGeneralizedRecBinds,tpenv = 
            if newGeneralizableBindings.IsEmpty then 
                [], tpenv
            else
                
                let supportForBindings = newGeneralizableBindings |> List.collect (TcLetrecComputeSupportForBinding cenv)
                GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,denv,scopem) supportForBindings; 
                 
                let generalizedTyparsL = newGeneralizableBindings |> List.map (TcLetrecComputeAndGeneralizeGenericTyparsForBinding cenv denv freeInEnv) 
                
                // Generalize the bindings. 
                let newGeneralizedRecBinds = (generalizedTyparsL,newGeneralizableBindings) ||> List.map2 (TcLetrecGeneralizeBinding cenv denv ) 
                let tpenv = HideUnscopedTypars (List.concat generalizedTyparsL) tpenv
                newGeneralizedRecBinds,tpenv
        
    
        newGeneralizedRecBinds, preGeneralizationRecBinds, tpenv

    let envNonRec = envNonRec |> AddLocalVals cenv.tcSink scopem (newGeneralizedRecBinds |> List.map (fun b -> b.RecBindingInfo.Val))  
    let generalizedRecBinds = newGeneralizedRecBinds @ generalizedRecBinds        

    (envNonRec,generalizedRecBinds,preGeneralizationRecBinds,tpenv,uncheckedRecBindsTable)

//-------------------------------------------------------------------------
// TcLetrecComputeAndGeneralizeGenericTyparsForBinding
//-------------------------------------------------------------------------

/// Compute the type variables which may be generalized and perform the generalization 
and TcLetrecComputeAndGeneralizeGenericTyparsForBinding cenv denv freeInEnv (pgrbind : PreGeneralizationRecursiveBinding)  =

    let freeInEnv = Zset.diff freeInEnv (Zset.ofList typarOrder (NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g pgrbind.ExtraGeneralizableTypars))

    let rbinfo = pgrbind.RecBindingInfo
    let vspec = rbinfo.Val
    let (CheckedBindingInfo(inlineFlag,immut,_,_,_,_,_,expr,_,_,m,_,_,_)) = pgrbind.CheckedBinding
    let (ExplicitTyparInfo(rigidCopyOfDeclaredTypars,declaredTypars,_)) = rbinfo.ExplicitTyparInfo
    let allDeclaredTypars = rbinfo.EnclosingDeclaredTypars @ declaredTypars

     
    // The declared typars were not marked rigid to allow equi-recursive type inference to unify
    // two declared type variables. So we now check that, for each binding, the declared
    // type variables can be unified with a rigid version of the same and undo the results
    // of this unification.
    ConstraintSolver.CheckDeclaredTypars denv cenv.css m rigidCopyOfDeclaredTypars declaredTypars 

    let memFlagsOpt = vspec.MemberInfo |> Option.map (fun memInfo -> memInfo.MemberFlags)
    let isCtor = (match memFlagsOpt with None -> false | Some memberFlags -> memberFlags.MemberKind = MemberKind.Constructor)

    GeneralizationHelpers.CheckDeclaredTyparsPermitted(memFlagsOpt,declaredTypars,m)
    let canInferTypars = CanInferExtraGeneralizedTyparsForRecBinding pgrbind

    let tau = vspec.TauType
    let maxInferredTypars = freeInTypeLeftToRight cenv.g false tau

    let canGeneralizeConstrained = GeneralizationHelpers.CanGeneralizeConstrainedTyparsForDecl rbinfo.DeclKind
    let generalizedTypars = GeneralizationHelpers.ComputeAndGeneralizeGenericTypars (cenv,denv,m,immut,freeInEnv,canInferTypars,canGeneralizeConstrained,inlineFlag, Some(expr), allDeclaredTypars, maxInferredTypars,tau,isCtor)
    generalizedTypars

/// Compute the type variables which may have member constraints that need to be canonicalized prior to generalization 
and TcLetrecComputeSupportForBinding cenv (pgrbind : PreGeneralizationRecursiveBinding) =
    let rbinfo = pgrbind.RecBindingInfo
    let allDeclaredTypars = rbinfo.EnclosingDeclaredTypars @ rbinfo.DeclaredTypars
    let maxInferredTypars = freeInTypeLeftToRight cenv.g false rbinfo.Val.TauType
    allDeclaredTypars @ maxInferredTypars

//-------------------------------------------------------------------------
// TcLetrecGeneralizeBinding
//------------------------------------------------------------------------

// Generalise generalizedTypars from checkedBind.
and TcLetrecGeneralizeBinding cenv denv generalizedTypars (pgrbind : PreGeneralizationRecursiveBinding) : PostGeneralizationRecursiveBinding =

    let (RBInfo(_,_,enclosingDeclaredTypars,_,vspec,flex,partialValReprInfo,memberInfoOpt,_,_,_,vis,_,declKind)) = pgrbind.RecBindingInfo
    let (CheckedBindingInfo(inlineFlag,_,_,_,_,_,_,expr,argAttribs,_,_,_,compgen,_)) = pgrbind.CheckedBinding
     
    let _,tau = vspec.TypeScheme

    let pvalscheme1 = PrelimValScheme1(vspec.Id,flex,tau,Some(partialValReprInfo),memberInfoOpt,false,inlineFlag,NormalVal,argAttribs,vis,compgen)
    let pvalscheme2 = GeneralizeVal cenv denv enclosingDeclaredTypars generalizedTypars pvalscheme1

    let valscheme = UseCombinedArity cenv.g declKind expr pvalscheme2 
    AdjustRecType cenv vspec valscheme;

    { ValScheme = valscheme
      CheckedBinding = pgrbind.CheckedBinding
      RecBindingInfo = pgrbind.RecBindingInfo }


and TcLetrecComputeCtorSafeThisValBind cenv safeThisValOpt =
    match safeThisValOpt with 
    | None -> None
    | Some (v:Val) -> 
        let m = v.Range
        let ty = destRefCellTy cenv.g v.Type
        Some (mkCompGenBind v (mkRefCell cenv.g m ty (mkNull m ty)))

and MakeCheckSafeInitField g tinst thisValOpt rfref reqExpr (expr:Expr) =
    let m = expr.Range
    let availExpr =
        match thisValOpt with 
        | None -> mkStaticRecdFieldGet (rfref, tinst, m)
        | Some thisVar -> 
            // This is an instance method, it must have a 'this' var
            mkRecdFieldGet g (exprForVal m thisVar, rfref, tinst, m)
    let failureExpr = match thisValOpt with None -> mkCallFailStaticInit g m | Some _ -> mkCallFailInit g m
    mkCompGenSequential m (mkIfThen g m (mkILAsmClt g m availExpr reqExpr) failureExpr) expr

and MakeCheckSafeInit g tinst safeInitInfo reqExpr expr =
    match safeInitInfo with 
    | SafeInitField (rfref, _) -> MakeCheckSafeInitField g tinst None rfref reqExpr expr
    | NoSafeInitInfo -> expr

// Given a method binding (after generalization)
//
//    method M = (fun   -> )
// 
// wrap the following around it if needed
//
//    method M = (fun  baseVal  -> 
//                      check ctorSafeInitInfo 
//                      let ctorSafeThisVal = ref null
//                      )
//
// The "check ctorSafeInitInfo" is only added for non-constructor instance members in a class where at least one type in the 
// hierarchy has HasSelfReferentialConstructor
//
// The "let ctorSafeThisVal = ref null" is only added for explicit constructors with a self-reference parameter (Note: check later code for exact conditions)
// For implicit constructors the binding is added to the bindings of the implicit constructor

and TcLetrecAdjustMemberForSpecialVals cenv (pgrbind: PostGeneralizationRecursiveBinding) : PostBindCtorThisVarRefCellRecursiveBinding =
 
    let (RBInfo(_,_,_,_,vspec,_,_,_,baseValOpt,safeThisValOpt,safeInitInfo,_,_,_)) = pgrbind.RecBindingInfo
    let expr = pgrbind.CheckedBinding.Expr
    let spBind = pgrbind.CheckedBinding.SeqPoint
      
    let expr = 
        match TcLetrecComputeCtorSafeThisValBind cenv safeThisValOpt with 
        | None -> expr
        | Some bind -> 
            let m = expr.Range
            let tps,vsl,body,returnTy = stripTopLambda (expr,vspec.Type)
            mkMultiLambdas m tps vsl (mkLetBind m bind body, returnTy)

    // Add a call to CheckInit if necessary for instance members
    let expr = 
        if vspec.IsInstanceMember && not vspec.IsExtensionMember && not vspec.IsConstructor then
            match safeInitInfo with 
            | SafeInitField (rfref, _) ->  
                let m = expr.Range
                let tps,vsl,body,returnTy = stripTopLambda (expr,vspec.Type)
                // This is an instance member, it must have a 'this'
                let thisVar = vsl.Head.Head
                let thisTypeInst = argsOfAppTy cenv.g thisVar.Type
                let newBody = MakeCheckSafeInitField cenv.g thisTypeInst (Some thisVar) rfref (mkOne cenv.g m) body
                mkMultiLambdas m tps vsl (newBody, returnTy)
            | NoSafeInitInfo -> 
                expr
            
        else
            expr

    let expr = 
        match baseValOpt with 
        | None -> expr
        | _ -> 
            let m = expr.Range
            let tps,vsl,body,returnTy = stripTopLambda (expr,vspec.Type)
            mkMemberLambdas m tps None baseValOpt vsl (body, returnTy)
              
    { ValScheme = pgrbind.ValScheme;
      Binding = TBind(vspec,expr,spBind) }

and FixupLetrecBind cenv denv generalizedTyparsForRecursiveBlock (bind : PostBindCtorThisVarRefCellRecursiveBinding) = 
    let (TBind(vspec,expr,spBind)) = bind.Binding

    // Check coherence of generalization of variables for memberInfo members in generic classes 
    match vspec.MemberInfo with 
#if EXTENDED_EXTENSION_MEMBERS // indicates if extension members can add additional constraints to type parameters
    | Some _ when (* not vspec.IsExtensionMember *) -> 
#else
    | Some _ -> 
#endif
       match PartitionValTypars cenv.g vspec with
       | Some(parentTypars,memberParentTypars,_,_,_)  -> 
          ignore(SignatureConformance.Checker(cenv.g, cenv.amap, denv, SignatureRepackageInfo.Empty, false).CheckTypars vspec.Range TypeEquivEnv.Empty memberParentTypars parentTypars)
       | None -> 
          errorR(Error(FSComp.SR.tcMemberIsNotSufficientlyGeneric(),vspec.Range))
    | _ -> ()

    // Fixup recursive references... 
    let fixupPoints = GetAllUsesOfRecValue cenv vspec

    AdjustAndForgetUsesOfRecValue cenv (mkLocalValRef vspec) bind.ValScheme;

    // dprintf "TcLetrec (%s, after gen): #fixupPoints = %d, ty = %s\n" vspec.LogicalName (List.length fixupPoints) (Layout.showL  (typeL vspec.Type)); 

    let expr = mkGenericBindRhs cenv.g vspec.Range generalizedTyparsForRecursiveBlock bind.ValScheme.TypeScheme expr

    { FixupPoints = fixupPoints;
      Binding = TBind(vspec,expr,spBind) }
    
//-------------------------------------------------------------------------
// TcLetrec
//------------------------------------------------------------------------

and unionGeneralizedTypars typarSets = List.foldBack (ListSet.unionFavourRight typarEq) typarSets [] 
    

and TcLetrec  overridesOK cenv env tpenv (binds,bindsm,scopem) =

    // Create prelimRecValues for the recursive items (includes type info from LHS of bindings) *)
    let binds = binds |> List.map (fun (RecBindingDefn(a,b,c,bind)) -> NormalizedRecBindingDefn(a,b,c,BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env bind))
    let uncheckedRecBinds,prelimRecValues,(tpenv,_) = AnalyzeAndMakeRecursiveValues overridesOK cenv env tpenv binds

    let envRec = AddLocalVals cenv.tcSink scopem prelimRecValues env 
    
    // Typecheck bindings 
    let uncheckedRecBindsTable = uncheckedRecBinds  |> List.map (fun rbind  ->  rbind.RecBindingInfo.Val.Stamp, rbind) |> Map.ofList 

    let (_,generalizedRecBinds,preGeneralizationRecBinds,tpenv,_) = 
        ((env,[],[],tpenv,uncheckedRecBindsTable),uncheckedRecBinds) ||> List.fold (TcLetrecBinding (cenv,envRec,scopem,[],None)) 

    // There should be no bindings that have not been generalized since checking the vary last binding always
    // results in the generalization of all remaining ungeneralized bindings, since there are no remaining unchecked bindings
    // to prevent the generalization 
    assert preGeneralizationRecBinds.IsEmpty
    
    let generalizedRecBinds = generalizedRecBinds |> List.sortBy (fun pgrbind -> pgrbind.RecBindingInfo.Index)
    let generalizedTyparsForRecursiveBlock = 
         generalizedRecBinds 
            |> List.map (fun pgrbind -> pgrbind.GeneralizedTypars)
            |> unionGeneralizedTypars


    let vxbinds = generalizedRecBinds |> List.map (TcLetrecAdjustMemberForSpecialVals cenv) 

    // Now that we know what we've generalized we can adjust the recursive references 
    let vxbinds = vxbinds |> List.map (FixupLetrecBind cenv env.DisplayEnv generalizedTyparsForRecursiveBlock) 
    
    // Now eliminate any initialization graphs 
    let binds = 
        let bindsWithoutLaziness = vxbinds
        let mustHaveArity = 
            match uncheckedRecBinds with 
            | [] -> false
            | (rbind :: _) -> DeclKind.MustHaveArity rbind.RecBindingInfo.DeclKind
            
        EliminateInitializationGraphs cenv.g mustHaveArity env.DisplayEnv bindsWithoutLaziness bindsm
    
    // Post letrec env 
    let envbody = AddLocalVals cenv.tcSink scopem prelimRecValues env 
    binds,envbody,tpenv



//-------------------------------------------------------------------------
// Bind specifications of values
//------------------------------------------------------------------------- 

let TcAndPublishValSpec (cenv, env, containerInfo: ContainerInfo, declKind, memFlagsOpt, tpenv, valSpfn) = 

  let (ValSpfn (synAttrs, _, SynValTyparDecls (synTypars, synCanInferTypars, _), _, _, isInline, mutableFlag, doc, vis, literalExprOpt, m)) = valSpfn 

  GeneralizationHelpers.CheckDeclaredTyparsPermitted(memFlagsOpt,synTypars,m)
  let canInferTypars = GeneralizationHelpers.ComputeCanInferExtraGeneralizableTypars (containerInfo.ParentRef, synCanInferTypars, memFlagsOpt)
  
  let attrTgt = DeclKind.AllowedAttribTargets memFlagsOpt declKind 

  let attrs = TcAttributes cenv env attrTgt synAttrs
  let newOk = if canInferTypars then NewTyparsOK else NoNewTypars

  let valinfos, tpenv = TcValSpec cenv env declKind newOk containerInfo memFlagsOpt None tpenv valSpfn attrs
  let denv = env.DisplayEnv
    
  (tpenv, valinfos) ||> List.mapFold (fun tpenv valSpecResult -> 

            let (ValSpecResult (altActualParent, memberInfoOpt, id, enclosingDeclaredTypars, declaredTypars, ty, partialValReprInfo, declKind)) = valSpecResult
            
            let inlineFlag = ComputeInlineFlag (memberInfoOpt |> Option.map (fun (ValMemberInfoTransient(memberInfo,_,_)) -> memberInfo.MemberFlags)) isInline mutableFlag m
            
            let freeInType = freeInTypeLeftToRight cenv.g false ty

            let allDeclaredTypars = enclosingDeclaredTypars @ declaredTypars

            let flex = ExplicitTyparInfo(declaredTypars,declaredTypars,synCanInferTypars)
            
            let generalizedTypars = GeneralizationHelpers.ComputeAndGeneralizeGenericTypars(cenv,denv,id.idRange,canInferTypars,emptyFreeTypars,canInferTypars,CanGeneralizeConstrainedTypars,inlineFlag,None,allDeclaredTypars,freeInType,ty,false)
            
            let valscheme1 = PrelimValScheme1(id,flex,ty,Some(partialValReprInfo),memberInfoOpt,mutableFlag,inlineFlag,NormalVal,noArgOrRetAttribs,vis,false)

            let valscheme2 = GeneralizeVal cenv denv enclosingDeclaredTypars generalizedTypars valscheme1

            let tpenv = HideUnscopedTypars generalizedTypars tpenv

            let valscheme = BuildValScheme declKind (Some(partialValReprInfo)) valscheme2 

            let konst = 
                match literalExprOpt with 
                | None -> 
                    let hasLiteralAttr = HasFSharpAttribute cenv.g cenv.g.attrib_LiteralAttribute attrs
                    if hasLiteralAttr then 
                        errorR(Error(FSComp.SR.tcLiteralAttributeRequiresConstantValue(),m));
                    None

                
                | Some(e) -> 
                    let hasLiteralAttr,konst = TcLiteral cenv ty env tpenv (attrs,e)
                    if not hasLiteralAttr then 
                        errorR(Error(FSComp.SR.tcValueInSignatureRequiresLiteralAttribute(), e.Range));
                    konst

            let vspec = MakeAndPublishVal cenv env (altActualParent,true,declKind,ValNotInRecScope,valscheme,attrs,doc.ToXmlDoc(),konst,false)
            assert(vspec.InlineInfo = inlineFlag);

            vspec,tpenv)


//-------------------------------------------------------------------------
// Bind elements of data definitions for exceptions and types (fields, etc.)
//------------------------------------------------------------------------- 

exception NotUpperCaseConstructor of range

let CheckNamespaceModuleOrTypeName g (id:Ident) = 
    // type names '[]' etc. are used in fslib
    if not g.compilingFslib &&  id.idText.IndexOfAny(IllegalCharactersInTypeAndNamespaceNames) <> -1 then 
        errorR(Error(FSComp.SR.tcInvalidNamespaceModuleTypeUnionName(),id.idRange))

let CheckDuplicates (idf : _ -> Ident) k elems = 
    elems |> List.iteri (fun i uc1 -> 
        elems |> List.iteri (fun j uc2 -> 
            let id1 = (idf uc1)
            let id2 = (idf uc2)
            if j > i &&  id1.idText = id2.idText then 
                errorR (Duplicate(k,id1.idText,id1.idRange))));
    elems


module TcRecdUnionAndEnumDeclarations = begin

    let CombineReprAccess parent vis = 
        match parent with 
        | ParentNone -> vis 
        | Parent tcref -> combineAccess vis tcref.TypeReprAccessibility

    let MakeRecdFieldSpec _cenv env parent (isStatic,konst,ty',attrsForProperty,attrsForField,id,isMutable,vol,xmldoc,vis,m) =
        let vis,_ = ComputeAccessAndCompPath env None m vis parent
        let vis = CombineReprAccess parent vis
        NewRecdField isStatic konst id ty' isMutable vol attrsForProperty attrsForField xmldoc vis false

    let TcFieldDecl cenv env parent isIncrClass tpenv (isStatic,synAttrs,id,ty,isMutable,xmldoc,vis,m) =
        let attrs = TcAttributesWithPossibleTargets cenv env AttributeTargets.FieldDecl synAttrs
        let attrsForProperty,attrsForField = attrs |> List.partition (fun (attrTargets,_) -> (attrTargets &&& AttributeTargets.Property) <> enum 0) 
        let attrsForProperty = (List.map snd attrsForProperty) 
        let attrsForField = (List.map snd attrsForField)
        let ty',_ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType env tpenv ty
        let zeroInit = HasFSharpAttribute cenv.g cenv.g.attrib_DefaultValueAttribute attrsForField
        let isVolatile = HasFSharpAttribute cenv.g cenv.g.attrib_VolatileFieldAttribute attrsForField
        
        let isThreadStatic = isThreadOrContextStatic cenv.g attrsForField
        if isThreadStatic && (not zeroInit || not isStatic) then 
            error(Error(FSComp.SR.tcThreadStaticAndContextStaticMustBeStatic(),m));

        if isVolatile then 
            error(Error(FSComp.SR.tcVolatileOnlyOnClassLetBindings(),m));

        if isIncrClass  && (not zeroInit || not isMutable) then errorR(Error(FSComp.SR.tcUninitializedValFieldsMustBeMutable(),m));
        if isStatic && (not zeroInit || not isMutable || vis <> Some SynAccess.Private ) then errorR(Error(FSComp.SR.tcStaticValFieldsMustBeMutableAndPrivate(),m));
        let konst = if zeroInit then Some Const.Zero else None
        let rfspec = MakeRecdFieldSpec cenv env parent  (isStatic,konst,ty',attrsForProperty,attrsForField,id,isMutable,isVolatile,xmldoc,vis,m)
        match parent with
        | Parent tcref when useGenuineField tcref.Deref rfspec ->
            // Recheck the attributes for errors if the definition only generates a field
            TcAttributesWithPossibleTargets cenv env AttributeTargets.FieldDeclRestricted synAttrs |> ignore
        | _ -> ()
        rfspec


    let TcAnonFieldDecl cenv env parent tpenv nm (Field(attribs,isStatic,id,ty,isMutable,xmldoc,vis,m)) =
        let id = (match id with None -> mkSynId m nm | Some id -> id)
        TcFieldDecl cenv env parent false tpenv (isStatic,attribs,id,ty,isMutable,xmldoc.ToXmlDoc(),vis,m) 

    let TcNamedFieldDecl cenv env parent isIncrClass tpenv (Field(attribs,isStatic,id,ty,isMutable,xmldoc,vis,m)) =
        match id with 
        | None -> error (Error(FSComp.SR.tcFieldRequiresName(),m))
        | Some(id) -> TcFieldDecl cenv env parent isIncrClass tpenv (isStatic,attribs,id,ty,isMutable,xmldoc.ToXmlDoc(),vis,m) 

    let TcNamedFieldDecls cenv env parent isIncrClass tpenv fields =
        fields |> List.map (TcNamedFieldDecl cenv env parent isIncrClass tpenv) 


    //-------------------------------------------------------------------------
    // Bind other elements of type definitions (constructors etc.)
    //------------------------------------------------------------------------- 

    let CheckUnionCaseName cenv realUnionCaseName m =    
        CheckNamespaceModuleOrTypeName cenv.g (mkSynId m realUnionCaseName);
        if not (String.isUpper realUnionCaseName) && realUnionCaseName <> opNameCons && realUnionCaseName <> opNameNil then 
            errorR(NotUpperCaseConstructor(m));

    let TcUnionCaseDecl cenv env parent thisTy tpenv  (UnionCase (synAttrs,id,args,xmldoc,vis,m)) =
        let attrs = TcAttributes cenv env AttributeTargets.UnionCaseDecl synAttrs // the attributes of a union case decl get attached to the generated "static factory" method
        let vis,_ = ComputeAccessAndCompPath env None m vis parent
        let vis = CombineReprAccess parent vis
        let realUnionCaseName =  
            if id.idText = opNameCons then "Cons" 
            elif id.idText = opNameNil then "Empty"
            else id.idText
            
        if realUnionCaseName = "Tags" then
            errorR(Error(FSComp.SR.tcUnionCaseNameConflictsWithGeneratedType(realUnionCaseName,"Tags"),m))
                        
        CheckUnionCaseName cenv realUnionCaseName id.idRange 
        
        let mkName nFields i = if nFields <= 1 then "Item" else "Item"+string (i+1)
        let rfields,recordTy = 
            match args with
            | UnionCaseFields flds -> 
                let nFields = flds.Length
                let rfields = flds |> List.mapi (fun i fld -> TcAnonFieldDecl cenv env parent tpenv (mkName nFields i) fld) 
                rfields,thisTy
            | UnionCaseFullType (ty,arity) -> 
                let ty',_ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType env tpenv ty
                let argtysl,recordTy = GetTopTauTypeInFSharpForm cenv.g (arity |> TranslateTopValSynInfo m (TcAttributes cenv env) |> TranslatePartialArity []).ArgInfos ty' m
                if argtysl.Length > 1 then 
                    errorR(Error(FSComp.SR.tcIllegalFormForExplicitTypeDeclaration(),m));   
                let argtys = argtysl |> List.concat
                let nFields = argtys.Length
                let rfields = 
                    argtys |> List.mapi (fun i (argty,argInfo) ->
                        let id = (match argInfo.Name with Some id -> id | None -> mkSynId m (mkName nFields i))
                        MakeRecdFieldSpec cenv env parent (false,None,argty,[],[],id,false,false,XmlDoc.Empty,None,m))
                if not (typeEquiv cenv.g recordTy thisTy) then 
                    error(Error(FSComp.SR.tcReturnTypesForUnionMustBeSameAsType(),m))
                rfields,recordTy
        NewUnionCase id realUnionCaseName rfields recordTy attrs (xmldoc.ToXmlDoc()) vis


    let TcUnionCaseDecls cenv env parent (thisTy : TType) tpenv unionCases =
        let unionCases' = unionCases |> List.map (TcUnionCaseDecl cenv env parent thisTy tpenv) 
        unionCases' |> CheckDuplicates (fun uc -> uc.Id) "union case" 

    let TcEnumDecl cenv env parent thisTy fieldTy (EnumCase (synAttrs,id,v,xmldoc,m)) =
        let attrs = TcAttributes cenv env AttributeTargets.Field synAttrs
        match v with 
        | SynConst.Bytes _
        | SynConst.UInt16s _
        | SynConst.UserNum _ -> error(Error(FSComp.SR.tcInvalidEnumerationLiteral(),m))
        | _ -> 
            let v = TcConst cenv fieldTy m env v
            let vis,_ = ComputeAccessAndCompPath env None m None parent
            let vis = CombineReprAccess parent vis
            if id.idText = "value__" then errorR(Error(FSComp.SR.tcNotValidEnumCaseName(),id.idRange));
            NewRecdField true (Some v) id thisTy false false [] attrs (xmldoc.ToXmlDoc()) vis false
      
    let TcEnumDecls cenv env parent thisTy enumCases =
        let fieldTy = NewInferenceType ()
        let enumCases' = enumCases |> List.map (TcEnumDecl cenv env parent thisTy fieldTy)  |> CheckDuplicates (fun f -> f.Id) "enum element"
        fieldTy,enumCases'

end

//-------------------------------------------------------------------------
// Bind elements of classes
//------------------------------------------------------------------------- 

let PublishInterface cenv denv (tcref:TyconRef) m compgen ty' = 
    if not (isInterfaceTy cenv.g ty') then errorR(Error(FSComp.SR.tcTypeIsNotInterfaceType1(NicePrint.minimalStringOfType denv ty'),m));
    let tcaug = tcref.TypeContents
    if tcref.HasInterface cenv.g ty'  then 
        errorR(Error(FSComp.SR.tcDuplicateSpecOfInterface(),m));
    tcaug.tcaug_interfaces <- (ty',compgen,m) :: tcaug.tcaug_interfaces

let TcAndPublishMemberSpec cenv env containerInfo declKind tpenv memb = 
    match memb with 
    | SynMemberSig.ValField(_,m) -> error(Error(FSComp.SR.tcFieldValIllegalHere(),m))
    | SynMemberSig.Inherit(_,m) -> error(Error(FSComp.SR.tcInheritIllegalHere(),m))
    | SynMemberSig.NestedType(_,m) -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(),m))
    | SynMemberSig.Member(valSpfn,memberFlags,_) -> 
        TcAndPublishValSpec (cenv,env,containerInfo,declKind,Some memberFlags,tpenv,valSpfn)
    | SynMemberSig.Interface _ -> 
        // These are done in TcTyconDefnCores
        [],tpenv

  
let TcTyconMemberSpecs cenv env containerInfo declKind tpenv (augSpfn: SynMemberSigs)  =
    let members,tpenv = List.mapFold (TcAndPublishMemberSpec cenv env containerInfo declKind) tpenv augSpfn
    List.concat members,tpenv


//-------------------------------------------------------------------------
// Bind 'open' declarations
//------------------------------------------------------------------------- 

let TcModuleOrNamespaceLidAndPermitAutoResolve env longId =
    let ad = env.eAccessRights
    match ResolveLongIndentAsModuleOrNamespace OpenQualified env.eNameResEnv ad longId  with 
    | Result res -> Result res
    | Exception err ->  raze err

let TcOpenDecl tcSink g amap m scopem env (longId : Ident list)  = 
    let modrefs = ForceRaise (TcModuleOrNamespaceLidAndPermitAutoResolve env longId)

    // validate opened namespace names
    longId |> List.filter (fun id -> id.idText <> MangledGlobalName) |> List.iter (CheckNamespaceModuleOrTypeName g)

    let IsPartiallyQualifiedNamespace (modref: ModuleOrNamespaceRef) = 
        let (CompPath(_,p)) = modref.CompilationPath 
        // Bug FSharp 1.0 3274: FSI paths don't count when determining this warning
        let p = 
            match p with 
            | [] -> []
            | (h,_):: t -> if h.StartsWith(FsiDynamicModulePrefix,System.StringComparison.Ordinal) then t else p
        modref.IsNamespace && p.Length >= longId.Length 

    modrefs |> List.iter (fun (_,modref,_) ->
       if modref.IsModule && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute modref.Attribs then 
           errorR(Error(FSComp.SR.tcModuleRequiresQualifiedAccess(fullDisplayTextOfModRef modref),m)))

    // Bug FSharp 1.0 3133: 'open Lexing'. Skip this warning if we successfully resolved to at least a module name
    if not (modrefs |> List.exists (fun (_,modref,_) -> modref.IsModule && not (HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute modref.Attribs))) then
        modrefs |> List.iter (fun (_,modref,_) ->
            if IsPartiallyQualifiedNamespace modref  then 
                 errorR(Error(FSComp.SR.tcOpenUsedWithPartiallyQualifiedPath(fullDisplayTextOfModRef modref),m)))
        
    modrefs |> List.iter (fun (_,modref,_) -> CheckEntityAttributes g modref m |> CommitOperationResult);        

    let env = OpenModulesOrNamespaces tcSink g amap scopem env (List.map p23 modrefs)
    env    


exception ParameterlessStructCtor of range

/// Incremental class definitions
module IncrClassChecking = begin

    /// Represents a single group of bindings in a class with an implicit constructor
    type IncrClassBindingGroup = 
      | IncrClassBindingGroup of Tast.Binding list * (*isStatic:*) bool* (*recursive:*) bool
      | IncrClassDo of Expr * (*isStatic:*) bool

    /// Typechecked info for implicit constructor and it's arguments 
    type IncrClassCtorLhs = 
        {/// The TyconRef for the type being defined
         TyconRef                         : TyconRef;
         /// The type parameters allocated for the implicit instance constructor. 
         /// These may be equated with other (WillBeRigid) type parameters through equirecursive inference, and so 
         /// should always be renormalized/canonicalized when used.
         InstanceCtorDeclaredTypars       : Typars;     
         /// The value representing the static implicit constructor.
         /// Lazy to ensure the static ctor value is ony published if needed.
         StaticCtorValInfo                : Lazy<(Val list * Val * ValScheme)>;
         /// The value representing the implicit constructor.
         InstanceCtorVal                  : Val;
         /// The type of the implicit constructor, representing as a ValScheme.
         InstanceCtorValScheme            : ValScheme;
         /// The values representing the arguments to the implicit constructor.
         InstanceCtorArgs                 : Val list;
         /// The reference cell holding the 'this' parameter within the implicit constructor so it can be referenced in the
         /// arguments passed to the base constructor
         InstanceCtorSafeThisValOpt       : Val option;
         /// Data indicating if safe-initialization checks need to be inserted for this type.
         InstanceCtorSafeInitInfo         : SafeInitData;
         /// The value representing the 'base' variable within the implicit instance constructor.
         InstanceCtorBaseValOpt           : Val option;
         /// The value representing the 'this' variable within the implicit instance constructor.
         InstanceCtorThisVal              : Val;
         /// The name generator used to generate the names of fields etc. within the type.
         NameGenerator                    : NiceNameGenerator;
        }
        /// Get the type parameters of the implicit constructor, after taking equi-recursive inference into account.
        member ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv denv m = 
            let ctorDeclaredTypars = ctorInfo.InstanceCtorDeclaredTypars
            let ctorDeclaredTypars = ChooseCanonicalDeclaredTyparsAfterInference cenv.g denv ctorDeclaredTypars m
            ctorDeclaredTypars

    /// Check and elaborate the "left hand side" of the implicit class construction 
    /// syntax.
    let TcImplictCtorLhsPassA(cenv, env, tpenv, tcref:TyconRef, vis, attrs, spats, thisIdOpt, baseValOpt: Val option, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy) =

        let baseValOpt = 
            match GetSuperTypeOfType cenv.g cenv.amap m objTy with 
            | Some superTy -> MakeAndPublishBaseVal cenv env (match baseValOpt with None -> None | Some v -> Some v.Id) superTy
            | None -> None

        // Add class typars to env 
        let env = AddDeclaredTypars CheckForDuplicateTypars copyOfTyconTypars env

        // Type check arguments by processing them as 'simple' patterns 
        //     NOTE: if we allow richer patterns here this is where we'd process those patterns 
        let ctorArgNames,(_,names,_) = TcSimplePatsOfUnknownType cenv true CheckCxs env tpenv (SynSimplePats.SimplePats (spats,m))
        
        // Create the values with the given names 
        let _,vspecs = MakeSimpleVals cenv env names

        if tcref.IsStructOrEnumTycon && isNil spats then 
            errorR (ParameterlessStructCtor(tcref.Range));
        
        // Put them in order 
        let ctorArgs = List.map (fun v -> NameMap.find v vspecs) ctorArgNames
        let safeThisValOpt = MakeAndPublishSafeThisVal cenv env thisIdOpt thisTy
        
        // NOTE: the type scheme here is not complete!!! The ctorTy is more or less 
        // just a type variable. The type and typars get fixed-up after inference 
        let ctorValScheme,ctorVal = 
            let argty = mkTupledTy cenv.g (typesOfVals ctorArgs)
            // Initial type has known information 
            let ctorTy = mkFunTy argty objTy    
            // REVIEW: no attributes can currently be specified for the implicit constructor 
            let attribs = TcAttributes cenv env (AttributeTargets.Constructor ||| AttributeTargets.Method) attrs
            let memberFlags      = CtorMemberFlags 
                                  
            let synArgInfos   = List.map (SynInfo.InferSynArgInfoFromSimplePat []) spats
            let valSynData = SynValInfo([synArgInfos],SynInfo.unnamedRetVal)
            let id            = ident ("new",m)

            CheckForNonAbstractInterface ModuleOrMemberBinding tcref memberFlags id.idRange;
            let memberInfo  = MakeMemberDataAndMangledNameForMemberVal(cenv.g,tcref,false,attribs,[],memberFlags,valSynData,id,false)
            let partialValReprInfo = TranslateTopValSynInfo m (TcAttributes cenv env) valSynData
            let prelimTyschemeG = TypeScheme(copyOfTyconTypars,ctorTy)
            let isComplete = ComputeIsComplete copyOfTyconTypars [] ctorTy
            let topValInfo = InferGenericArityFromTyScheme prelimTyschemeG partialValReprInfo
            let ctorValScheme = ValScheme(id,prelimTyschemeG,Some(topValInfo),Some(memberInfo),false,ValInline.Never,NormalVal,vis,false,true,false,false)
            let ctorVal = MakeAndPublishVal cenv env (Parent(tcref),false,ModuleOrMemberBinding,ValInRecScope(isComplete),ctorValScheme,attribs,XmlDoc.Empty,None,false) 
            ctorValScheme,ctorVal

        // We only generate the cctor on demand, because wew don't need it if there are no cctor actions. 
        // The code below has a side-effect (MakeAndPublishVal), so we only want to run it once if at all. 
        // The .cctor is never referenced by any other code.
        let cctorValInfo = 
            lazy 
               (let cctorArgs = [ fst(mkCompGenLocal m "unitVar" cenv.g.unit_ty) ]

                let cctorTy = mkFunTy cenv.g.unit_ty cenv.g.unit_ty
                let valSynData = SynValInfo([[]],SynInfo.unnamedRetVal)
                let id = ident ("cctor",m)
                CheckForNonAbstractInterface ModuleOrMemberBinding tcref ClassCtorMemberFlags id.idRange;
                let memberInfo  = MakeMemberDataAndMangledNameForMemberVal(cenv.g,tcref,false,[(*no attributes*)],[],ClassCtorMemberFlags,valSynData,id,false)
                let partialValReprInfo = TranslateTopValSynInfo m (TcAttributes cenv env) valSynData
                let prelimTyschemeG = TypeScheme(copyOfTyconTypars,cctorTy)
                let topValInfo = InferGenericArityFromTyScheme prelimTyschemeG partialValReprInfo
                let cctorValScheme = ValScheme(id,prelimTyschemeG,Some(topValInfo),Some(memberInfo),false,ValInline.Never,NormalVal,Some SynAccess.Private,false,true,false,false)
                 
                let cctorVal = MakeAndPublishVal cenv env (Parent(tcref),false,ModuleOrMemberBinding,ValNotInRecScope,cctorValScheme,[(* no attributes*)],XmlDoc.Empty,None,false) 
                cctorArgs,cctorVal,cctorValScheme)

        let thisVal = 
            // --- Create this for use inside constructor 
            let thisId  = ident ("this",m)
            let thisValScheme  = ValScheme(thisId,NonGenericTypeScheme(thisTy),None,None,false,ValInline.Never,CtorThisVal,None,true,false,false,false)
            let thisVal    = MakeAndPublishVal cenv env (ParentNone,false,ClassLetBinding,ValNotInRecScope,thisValScheme,[],XmlDoc.Empty,None,false)
            thisVal

        {TyconRef                         = tcref;
         InstanceCtorDeclaredTypars    = copyOfTyconTypars;
         StaticCtorValInfo             = cctorValInfo;
         InstanceCtorArgs              = ctorArgs;
         InstanceCtorVal               = ctorVal;
         InstanceCtorValScheme         = ctorValScheme;
         InstanceCtorBaseValOpt        = baseValOpt;
         InstanceCtorSafeThisValOpt    = safeThisValOpt;
         InstanceCtorSafeInitInfo    = safeInitInfo;
         InstanceCtorThisVal           = thisVal;
         // For generating names of local fields
         NameGenerator                 = NiceNameGenerator()

        }


    // Partial class defns - local val mapping to fields
      
    /// Create the field for a "let" binding in a type definition.
    ///
    /// The "v" is the local typed w.r.t. tyvars of the implicit ctor.
    /// The formalTyparInst does the formal-typars/implicit-ctor-typars subst.
    /// Field specifications added to a tcref must be in terms of the tcrefs formal typars.
    let private MakeIncrClassField(g, cpath, formalTyparInst:TyparInst, v:Val, isStatic, rfref:RecdFieldRef) =
        let name = rfref.FieldName
        let id  = ident (name,v.Range)
        let ty  = v.Type |> instType formalTyparInst
        let taccess = TAccess [cpath]
        let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute v.Attribs

        NewRecdField isStatic None id ty v.IsMutable isVolatile [(*no property attributes*)] v.Attribs v.XmlDoc taccess (*compiler generated:*)true

    /// Indicates how is a 'let' bound value in a class with implicit construction is represented in
    /// the TAST ultimately produced by type checking.    
    type IncrClassValRepr = 
        // e.g representation for 'let v = 3' if it is not used in anything given a method representation
        | InVar of (* isArg: *) bool 
        // e.g representation for 'let v = 3'
        | InField of (*isStatic:*)bool * (*staticCountForSafeInit:*) int * RecdFieldRef
        // e.g representation for 'let f x = 3'
        | InMethod of (*isStatic:*)bool * Val * ValReprInfo

    /// IncrClassReprInfo represents the decisions we make about the representation of 'let' and 'do' bindings in a
    /// type defined with implicit class construction.
    type IncrClassReprInfo = 
        { /// Indicates the set of field names taken within one incremental class
          TakenFieldNames:Set;
          RepInfoTcGlobals:TcGlobals;
          /// vals mapped to representations
          ValReprs  : Zmap; 
          /// vals represented as fields or members from this point on 
          ValsWithRepresentation  : Val Zset; }

        static member Empty(g,names) = 
            { TakenFieldNames=Set.ofList names;
              RepInfoTcGlobals=g;
              ValReprs = Zmap.empty valOrder; 
              ValsWithRepresentation = Zset.empty valOrder }

        /// Find the representation of a value
        member localRep.LookupRepr (v:Val) = 
            match Zmap.tryFind v localRep.ValReprs with 
            | None -> error(InternalError("LookupRepr: failed to find representation for value",v.Range))
            | Some res -> res

        static member IsMethodRepr cenv (bind:Binding) = 
            let v = bind.Var
            // unit fields are not stored, just run rhs for effects
            if isUnitTy cenv.g v.Type then 
                false
            else 
                let arity = InferArityOfExprBinding cenv.g v bind.Expr 
                not arity.HasNoArgs && not v.IsMutable


        /// Choose how a binding is represented
        member localRep.ChooseRepresentation (cenv,env: TcEnv,isStatic,isCtorArg,
                                              ctorInfo:IncrClassCtorLhs,
                                              /// The vars forced to be fields due to static member bindings, instance initialization expressions or instance member bindings
                                              staticForcedFieldVars:FreeLocals,
                                              /// The vars forced to be fields due to instance member bindings
                                              instanceForcedFieldVars:FreeLocals,
                                              takenFieldNames: Set,
                                              bind:Binding) = 
            let g = cenv.g 
            let v = bind.Var
            let relevantForcedFieldVars = (if isStatic then staticForcedFieldVars else instanceForcedFieldVars)
            
            let tcref = ctorInfo.TyconRef
            let name,takenFieldNames = 

                let isNameTaken = 
                    // Check if a implicit field already exists with this name
                    takenFieldNames.Contains(v.LogicalName) ||
                    // Check if a user-defined field already exists with this name. Struct fields have already been created - see bug FSharp 1.0 5304
                    (tcref.GetFieldByName(v.LogicalName).IsSome && (isStatic || not tcref.IsFSharpStructOrEnumTycon)) 

                let nm = 
                    if isNameTaken then 
                        ctorInfo.NameGenerator.FreshCompilerGeneratedName (v.LogicalName,v.Range)
                    else 
                        v.LogicalName
                nm, takenFieldNames.Add(nm)
                 
            let reportIfUnused() = 
                if not v.HasBeenReferenced && not v.IsCompiledAsTopLevel && not (v.DisplayName.StartsWith "_") && not v.IsCompilerGenerated then 
                    warning (Error(FSComp.SR.chkUnusedValue(v.DisplayName), v.Range))

            let repr = 
                match InferArityOfExprBinding g v bind.Expr with 
                | arity when arity.HasNoArgs || v.IsMutable -> 
                    // all mutable variables are forced into fields, since they may escape into closures within the implicit constructor
                    // e.g. 
                    //     type C() =  
                    //        let mutable m = 1
                    //        let n = ... (fun () -> m) ....
                    //
                    // All struct variables are forced into fields. Structs may not contain "let" bindings, so no new variables can be 
                    // introduced.
                    
                    if v.IsMutable || relevantForcedFieldVars.Contains v || tcref.IsStructOrEnumTycon then 
                        //dprintfn "Representing %s as a field %s" v.LogicalName name
                        let rfref = RFRef(tcref, name)
                        reportIfUnused()
                        InField (isStatic, localRep.ValReprs.Count, rfref)
                    else
                        //if not v.Attribs.IsEmpty then 
                        //    warning(Error(FSComp.SR.tcAttributesIgnoredOnLetBinding(), v.Range))
                        //dprintfn 
                        //    "Representing %s as a local variable %s, staticForcedFieldVars = %s, instanceForcedFieldVars = %s" 
                        //    v.LogicalName name 
                        //    (staticForcedFieldVars |> Seq.map (fun v -> v.LogicalName) |> String.concat ",")
                        //    (instanceForcedFieldVars |> Seq.map (fun v -> v.LogicalName) |> String.concat ",")
                        InVar isCtorArg
                | topValInfo -> 
                    //dprintfn "Representing %s as a method %s" v.LogicalName name
                    let tps, argInfos, _, _ = GetTopValTypeInCompiledForm g topValInfo v.Type v.Range

                    let valSynInfo = SynValInfo(argInfos |> List.mapSquared (fun (_,argInfo) -> SynArgInfo([],false,argInfo.Name)),SynInfo.unnamedRetVal)
                    let memberFlags = (if isStatic then StaticMemberFlags else NonVirtualMemberFlags) MemberKind.Member
                    let id = mkSynId v.Range name
                    let memberInfo = MakeMemberDataAndMangledNameForMemberVal(g,tcref,false,[],[],memberFlags,valSynInfo,mkSynId v.Range name,true)

                    let copyOfTyconTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv env.DisplayEnv ctorInfo.TyconRef.Range
                    // Add the 'this' pointer on to the function
                    let memberTauTy,topValInfo = 
                        let tauTy = v.TauType
                        if isStatic then 
                            tauTy,topValInfo 
                        else 
                            let tauTy = ctorInfo.InstanceCtorThisVal.Type --> v.TauType
                            let (ValReprInfo(tpNames,args,ret)) = topValInfo
                            let topValInfo = ValReprInfo(tpNames, ValReprInfo.selfMetadata::args, ret)
                            tauTy, topValInfo
                    // Add the enclosing type parameters on to the function
                    let topValInfo = 
                        let (ValReprInfo(tpNames,args,ret)) = topValInfo
                        ValReprInfo(tpNames@ValReprInfo.InferTyparInfo(copyOfTyconTypars), args, ret)
                                          
                    let prelimTyschemeG = TypeScheme(copyOfTyconTypars@tps,memberTauTy)
                    let memberValScheme = ValScheme(id,prelimTyschemeG,Some(topValInfo),Some(memberInfo),false,ValInline.Never,NormalVal,None,true (* isCompilerGenerated *) ,true (* isIncrClass *) ,false, false)
                    let methodVal = MakeAndPublishVal cenv env (Parent(tcref),false,ModuleOrMemberBinding,ValNotInRecScope,memberValScheme,v.Attribs,XmlDoc.Empty,None,false) 
                    reportIfUnused()
                    InMethod(isStatic,methodVal,topValInfo)

            repr, takenFieldNames

        /// Extend the known local representations by choosing a representation for a binding
        member localRep.ChooseAndAddRepresentation(cenv,env: TcEnv,isStatic,isCtorArg,ctorInfo:IncrClassCtorLhs,staticForcedFieldVars:FreeLocals,instanceForcedFieldVars: FreeLocals,bind:Binding) = 
            let v = bind.Var
            let repr,takenFieldNames = localRep.ChooseRepresentation (cenv,env,isStatic,isCtorArg,ctorInfo,staticForcedFieldVars,instanceForcedFieldVars,localRep.TakenFieldNames,bind )
            // OK, representation chosen, now add it 
            {localRep with 
                TakenFieldNames=takenFieldNames; 
                ValReprs = Zmap.add v repr localRep.ValReprs}  

        member localRep.ValNowWithRepresentation (v:Val) = 
            {localRep with ValsWithRepresentation = Zset.add v localRep.ValsWithRepresentation}

        member localRep.IsValWithRepresentation (v:Val) = 
                localRep.ValsWithRepresentation.Contains(v) 

        /// Make the elaborated expression that represents a use of a 
        /// a "let v = ..." class binding
        member localRep.MakeValueLookup thisValOpt tinst safeStaticInitInfo v tyargs m =
            let g = localRep.RepInfoTcGlobals 
            match localRep.LookupRepr v, thisValOpt with 
            | InVar _,_ -> 
                exprForVal m v
            | InField(false, _idx, rfref),Some(thisVal) -> 
                let thise = exprForVal m thisVal
                mkRecdFieldGetViaExprAddr(thise,rfref,tinst,m)
            | InField(false, _idx, _rfref),None -> 
                error(InternalError("Unexpected missing 'this' variable in MakeValueLookup",m))
            | InField(true, idx, rfref),_ -> 
                let expr = mkStaticRecdFieldGet(rfref,tinst,m)
                MakeCheckSafeInit g tinst safeStaticInitInfo (mkInt g m idx) expr
                
            | InMethod(isStatic,methodVal,topValInfo),_ -> 
                //dprintfn "Rewriting application of %s to be call to method %s" v.LogicalName methodVal.LogicalName
                let expr,exprty = AdjustValForExpectedArity g m (mkLocalValRef methodVal) NormalValUse topValInfo 
                // Prepend the the type arguments for the class
                let tyargs = tinst @ tyargs 
                let thisArgs =
                    if isStatic then []
                    else Option.toList (Option.map (exprForVal m) thisValOpt)
                    
                MakeApplicationAndBetaReduce g (expr,exprty,[tyargs],thisArgs,m) 

        /// Make the elaborated expression that represents an assignment 
        /// to a "let mutable v = ..." class binding
        member localRep.MakeValueAssign thisValOpt tinst safeStaticInitInfo v expr m =
            let g = localRep.RepInfoTcGlobals 
            match localRep.LookupRepr v, thisValOpt with 
            | InField(false,_,rfref),Some(thisVal) -> 
                let thise = exprForVal m thisVal
                mkRecdFieldSetViaExprAddr(thise,rfref,tinst,expr,m)
            | InField(false,_,_rfref),None -> 
                error(InternalError("Unexpected missing 'this' variable in MakeValueAssign",m))
            | InVar _,_ -> 
                mkValSet m (mkLocalValRef v) expr
            | InField (true, idx, rfref),_ -> 
                let expr = mkStaticRecdFieldSet(rfref,tinst,expr,m)
                MakeCheckSafeInit g tinst safeStaticInitInfo (mkInt g m idx) expr
            | InMethod _,_ -> 
                error(InternalError("Local was given method storage, yet later it's been assigned to",m))
          
        member localRep.MakeValueGetAddress thisValOpt tinst safeStaticInitInfo v m =
            let g = localRep.RepInfoTcGlobals 
            match localRep.LookupRepr v,thisValOpt with 
            | InField(false, _, rfref),Some(thisVal) -> 
                let thise = exprForVal m thisVal
                mkRecdFieldGetAddrViaExprAddr(thise,rfref,tinst,m)
            | InField(false, _, _rfref),None -> 
                error(InternalError("Unexpected missing 'this' variable in MakeValueGetAddress",m))
            | InField(true, idx, rfref),_ -> 
                let expr = mkStaticRecdFieldGetAddr(rfref,tinst,m)
                MakeCheckSafeInit g tinst safeStaticInitInfo (mkInt g m idx) expr
            | InVar _,_ -> 
                mkValAddr m (mkLocalValRef v)
            | InMethod _,_ -> 
                error(InternalError("Local was given method storage, yet later it's address was required",m))

        /// Mutate a type definition by adding fields 
        /// Used as part of processing "let" bindings in a type definition. 
        member localRep.PublishIncrClassFields (cenv, denv, cpath, ctorInfo:IncrClassCtorLhs, safeStaticInitInfo) =    
            let tcref = ctorInfo.TyconRef
            let rfspecs   = 
                [ for KeyValue(v,repr) in localRep.ValReprs do
                      match repr with 
                      | InField(isStatic, _, rfref) -> 
                          // Instance fields for structs are published earlier because the full set of fields is determined syntactically from the implicit
                          // constructor arguments. This is important for the "default value" and "does it have an implicit default constructor" 
                          // semantic conditions for structs -  see bug FSharp 1.0 5304.
                          if isStatic || not tcref.IsFSharpStructOrEnumTycon then 
                              let ctorDeclaredTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv denv ctorInfo.TyconRef.Range

                              // Note: tcrefObjTy contains the original "formal" typars, thisTy is the "fresh" one... f<>fresh. 
                              let revTypeInst = List.zip ctorDeclaredTypars (tcref.TyparsNoRange |> List.map mkTyparTy)

                              yield MakeIncrClassField(localRep.RepInfoTcGlobals, cpath, revTypeInst, v, isStatic, rfref)
                      | _ -> 
                          () 
                  match safeStaticInitInfo with 
                  | SafeInitField (_, fld) -> yield fld
                  | NoSafeInitInfo -> () ]

            let recdFields = MakeRecdFieldsTable (rfspecs @ tcref.AllFieldsAsList)

            // Mutate the entity_tycon_repr to publish the fields
            tcref.Deref.Data.entity_tycon_repr <- TFsObjModelRepr { tcref.FSharpObjectModelTypeInfo with fsobjmodel_rfields = recdFields}  


        /// Given localRep saying how locals have been represented, e.g. as fields.
        /// Given an expr under a given thisVal context.
        //
        /// Fix up the references to the locals, e.g. 
        ///     v -> this.fieldv
        ///     f x -> this.method x
        member localRep.FixupIncrClassExprPassC thisValOpt safeStaticInitInfo (thisTyInst:TypeInst) expr = 
            // fixup: intercept and expr rewrite
            let FixupExprNode rw e =
                //dprintfn "Fixup %s" (showL (exprL e))
                match e with
                // Rewrite references to applied let-bound-functions-compiled-as-methods
                | Expr.App(Expr.Val (ValDeref(v),_,_),_,tyargs,args,m) 
                    when (localRep.IsValWithRepresentation(v) &&
                          (match localRep.LookupRepr(v) with 
                           | InMethod _  -> true //(methodVal.Typars.Length > thisTyInst.Length)
                           | _ -> false )) -> 

                        //dprintfn "Found application of %s" v.LogicalName
                        let g = localRep.RepInfoTcGlobals
                        let expr = localRep.MakeValueLookup thisValOpt thisTyInst safeStaticInitInfo v tyargs m
                        let args = args |> List.map rw
                        Some (MakeApplicationAndBetaReduce g (expr,(tyOfExpr g expr),[],args,m)) 
                        

                // Rewrite references to values stored as fields and first class uses of method values
                | Expr.Val (ValDeref(v),_,m)                         
                    when localRep.IsValWithRepresentation(v) -> 

                        //dprintfn "Found use of %s" v.LogicalName
                        Some (localRep.MakeValueLookup thisValOpt thisTyInst safeStaticInitInfo v [] m)

                // Rewrite assignments to mutable values stored as fields 
                | Expr.Op(TOp.LValueOp (LSet, ValDeref(v))    ,[],[arg],m) 
                    when localRep.IsValWithRepresentation(v) ->
                        let arg = rw arg 
                        Some (localRep.MakeValueAssign thisValOpt thisTyInst safeStaticInitInfo v arg m)

                // Rewrite taking the address of mutable values stored as fields 
                | Expr.Op(TOp.LValueOp (LGetAddr,ValDeref(v)),[],[]   ,m) 
                    when localRep.IsValWithRepresentation(v) ->
                        Some (localRep.MakeValueGetAddress thisValOpt thisTyInst safeStaticInitInfo v m)

                | _ -> None
            Tastops.RewriteExpr { PreIntercept=Some FixupExprNode; 
                                  PostTransform = (fun _ -> None)
                                  IsUnderQuotations=true } expr 


    type IncrClassConstructionBindingsPassC =
      | PassCBindings of IncrClassBindingGroup list
      | PassCCtorJustAfterSuperInit     
      | PassCCtorJustAfterLastLet    

    /// Given a set of 'let' bindings (static or not, recursive or not) that make up a class, 
    /// generate their initialization expression(s).  
    let MakeCtorForIncrClassConstructionPassC 
               (cenv,
                env: TcEnv,
                _tpenv ,
                /// The lhs information about the implicit constructor
                ctorInfo:IncrClassCtorLhs,
                /// The call to the super class constructor
                inheritsExpr,
                /// Should we place a sequence point at the 'inheritedTys call?
                inheritsIsVisible,
                /// The declarations
                decs : IncrClassConstructionBindingsPassC list,
                memberBinds : Binding list,
                /// Record any unconstrained type parameters generalized for the outer members as "free choices" in the let bindings 
                generalizedTyparsForRecursiveBlock,
                safeStaticInitInfo : SafeInitData) = 


        let denv = env.DisplayEnv 
        let thisVal      = ctorInfo.InstanceCtorThisVal 

        let m = thisVal.Range
        let ctorDeclaredTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv denv m

        ctorDeclaredTypars |> List.iter (SetTyparRigid cenv.g env.DisplayEnv m) ; 

        // Reconstitute the type with the correct quantified type variables.
        ctorInfo.InstanceCtorVal.SetType (tryMkForallTy ctorDeclaredTypars ctorInfo.InstanceCtorVal.TauType)

        let freeChoiceTypars = ListSet.subtract typarEq generalizedTyparsForRecursiveBlock ctorDeclaredTypars

        let thisTyInst = List.map mkTyparTy ctorDeclaredTypars

        let accFreeInExpr acc expr =
            unionFreeVars acc (freeInExpr CollectLocalsNoCaching expr) 
            
        let accFreeInBinding acc (bind:Binding) = 
            accFreeInExpr acc bind.Expr
            
        let accFreeInBindings acc (binds:Binding list) = 
            (acc,binds) ||> List.fold accFreeInBinding

        // Find all the variables used in any method. These become fields.
        //   staticForcedFieldVars:FreeLocals: the vars forced to be fields due to static member bindings, instance initialization expressions or instance member bindings
        //   instanceForcedFieldVars: FreeLocals: the vars forced to be fields due to instance member bindings
                                            
        let staticForcedFieldVars,instanceForcedFieldVars = 
             let (staticForcedFieldVars,instanceForcedFieldVars) = 
                 ((emptyFreeVars,emptyFreeVars),decs) ||> List.fold (fun (staticForcedFieldVars,instanceForcedFieldVars) dec -> 
                    match dec with 
                    | PassCCtorJustAfterLastLet
                    | PassCCtorJustAfterSuperInit ->  
                        (staticForcedFieldVars,instanceForcedFieldVars)
                    | PassCBindings decs ->
                        ((staticForcedFieldVars,instanceForcedFieldVars),decs) ||> List.fold (fun (staticForcedFieldVars,instanceForcedFieldVars) dec -> 
                            match dec with 
                            | IncrClassBindingGroup(binds,isStatic,_) -> 
                                let methodBinds = binds |> List.filter (IncrClassReprInfo.IsMethodRepr cenv) 
                                let staticForcedFieldVars = 
                                    if isStatic then 
                                        // Any references to static variables in any static method force the variable to be represented as a field
                                        (staticForcedFieldVars,methodBinds) ||> accFreeInBindings
                                    else
                                        // Any references to static variables in any instance bindings force the variable to be represented as a field
                                        (staticForcedFieldVars,binds) ||> accFreeInBindings
                                        
                                let instanceForcedFieldVars = 
                                    // Any references to instance variables in any methods force the variable to be represented as a field
                                    (instanceForcedFieldVars,methodBinds) ||> accFreeInBindings
                                        
                                (staticForcedFieldVars,instanceForcedFieldVars)
                            | IncrClassDo (e,isStatic) -> 
                                let staticForcedFieldVars = 
                                    if isStatic then 
                                        staticForcedFieldVars
                                    else
                                        unionFreeVars staticForcedFieldVars (freeInExpr CollectLocalsNoCaching e)
                                (staticForcedFieldVars,instanceForcedFieldVars)))
             let staticForcedFieldVars  = (staticForcedFieldVars,memberBinds) ||> accFreeInBindings 
             let instanceForcedFieldVars = (instanceForcedFieldVars,memberBinds) ||> accFreeInBindings 
             
             // Any references to static variables in the 'inherits' expression force those static variables to be represented as fields
             let staticForcedFieldVars = (staticForcedFieldVars,inheritsExpr) ||> accFreeInExpr

             (staticForcedFieldVars.FreeLocals,instanceForcedFieldVars.FreeLocals)


        // Compute the implicit construction side effects of single 
        // 'let' or 'let rec' binding in the implicit class construction sequence 
        let TransBind (reps:IncrClassReprInfo) (TBind(v,rhsExpr,spBind)) =
            if v.MustInline then
                error(Error(FSComp.SR.tcLocalClassBindingsCannotBeInline(),v.Range));
            let rhsExpr = reps.FixupIncrClassExprPassC (Some thisVal) safeStaticInitInfo thisTyInst rhsExpr
            
            // The initialization of the 'ref cell' variable for 'this' is the only binding which comes prior to the super init
            let isPriorToSuperInit = 
                match ctorInfo.InstanceCtorSafeThisValOpt with 
                | None -> false
                | Some v2 -> valEq v v2
                            
            match reps.LookupRepr v with
            | InMethod(isStatic,methodVal,_) -> 
                let _,chooseTps,tauExpr,tauTy,m = 
                    match rhsExpr with 
                    | Expr.TyChoose(chooseTps,b,_) -> [],chooseTps,b,(tyOfExpr cenv.g b),m 
                    | Expr.TyLambda (_,tps,Expr.TyChoose(chooseTps,b,_),m,returnTy) -> tps,chooseTps,b,returnTy,m 
                    | Expr.TyLambda (_,tps,b,m,returnTy) -> tps,[],b,returnTy,m 
                    | e -> [],[],e,(tyOfExpr cenv.g e),e.Range
                    
                let chooseTps = chooseTps @ freeChoiceTypars
                // Add the 'this' variable as an argument
                let tauExpr,tauTy = 
                    if isStatic then 
                        tauExpr,tauTy
                    else
                        let e = mkLambda m thisVal (tauExpr,tauTy)
                        e, tyOfExpr cenv.g e
                // Replace the type parameters that used to be on the rhs with 
                // the full set of type parameters including the type parameters of the enclosing class
                let rhsExpr = mkTypeLambda m methodVal.Typars (mkTypeChoose m chooseTps tauExpr,tauTy)
                (isPriorToSuperInit, (fun e -> e)), [TBind (methodVal,rhsExpr,spBind)]
            
            // If it's represented as a non-escaping local variable then just bind it to its value
            // If it's represented as a non-escaping local arg then no binding necessary (ctor args are already bound)
            
            | InVar isArg ->
                (isPriorToSuperInit, (fun e -> if isArg then e else mkLetBind m (TBind(v,rhsExpr,spBind)) e)), []

            | InField (isStatic, idx, _) ->
                 // Use spBind if it available as the span for the assignment into the field
                let m =
                     match spBind,rhsExpr with 
                     // Don't generate big sequence points for functions in classes
                     | _, (Expr.Lambda  _ | Expr.TyLambda _) -> v.Range
                     | SequencePointAtBinding m,_ -> m 
                     | _ -> v.Range
                let assignExpr = reps.MakeValueAssign (Some thisVal) thisTyInst NoSafeInitInfo v rhsExpr m
                let adjustSafeInitFieldExprOpt = 
                    if isStatic then 
                        match safeStaticInitInfo with 
                        | SafeInitField (rfref, _) -> 
                            let setExpr = mkStaticRecdFieldSet (rfref, thisTyInst, mkInt cenv.g m idx, m)
                            let setExpr = reps.FixupIncrClassExprPassC (Some(thisVal)) NoSafeInitInfo thisTyInst setExpr
                            Some setExpr
                        | NoSafeInitInfo -> 
                            None
                    else
                        None

                (isPriorToSuperInit, (fun e -> 
                     let e = match adjustSafeInitFieldExprOpt with None -> e | Some ae -> mkCompGenSequential m ae e
                     mkSequential SequencePointsAtSeq m assignExpr e)), []

        /// Work out the implicit construction side effects of a 'let', 'let rec' or 'do' 
        /// binding in the implicit class construction sequence 
        let TransTrueDec isCtorArg (reps:IncrClassReprInfo) dec = 
              match dec with 
              | (IncrClassBindingGroup(binds,isStatic,isRec)) ->
                  let actions,reps,methodBinds = 
                      let reps     = (reps,binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv,env,isStatic,isCtorArg,ctorInfo,staticForcedFieldVars,instanceForcedFieldVars,bind)) // extend
                      if isRec then
                          // Note: the recursive calls are made via members on the object
                          // or via access to fiels. THis means the recursive loop is "broken", 
                          // and we can collapse to sequential bindings 
                          let reps     = (reps,binds) ||> List.fold (fun rep bind -> rep.ValNowWithRepresentation bind.Var) // inscope before
                          let actions,methodBinds = binds |> List.map (TransBind reps) |> List.unzip // since can occur in RHS of own defns 
                          actions,reps,methodBinds
                      else 
                          if debug then dprintf "TransDec: %d bindings, isRec=%b\n" binds.Length isRec;
                          let actions,methodBinds = binds |> List.map (TransBind reps)  |> List.unzip
                          let reps     = (reps,binds) ||> List.fold (fun rep bind -> rep.ValNowWithRepresentation bind.Var) // inscope after
                          actions,reps,methodBinds
                  let methodBinds = List.concat methodBinds
                  if isStatic then 
                      (actions,[],methodBinds),reps
                  else 
                      ([],actions,methodBinds),reps

              | IncrClassDo (doExpr,isStatic) -> 
                  let doExpr = reps.FixupIncrClassExprPassC (Some(thisVal)) safeStaticInitInfo thisTyInst doExpr
                  let binder = (fun e -> mkSequential SequencePointsAtSeq doExpr.Range doExpr e)
                  let isPriorToSuperInit = false
                  if isStatic then 
                      ([(isPriorToSuperInit,binder)],[],[]),reps
                  else 
                      ([],[(isPriorToSuperInit,binder)],[]),reps


        /// Work out the implicit construction side effects of each declaration 
        /// in the implicit class construction sequence 
        let TransDec (reps:IncrClassReprInfo) dec = 
            match dec with 
            // The call to the base class constructor is done so we can set the ref cell 
            | PassCCtorJustAfterSuperInit ->  
                let binders = 
                    [ match ctorInfo.InstanceCtorSafeThisValOpt with 
                      | None ->  ()
                      | Some v -> 
                        let setExpr = mkRefCellSet cenv.g m ctorInfo.InstanceCtorThisVal.Type (exprForVal m v) (exprForVal m ctorInfo.InstanceCtorThisVal)
                        let setExpr = reps.FixupIncrClassExprPassC (Some(thisVal)) safeStaticInitInfo thisTyInst setExpr
                        let binder = (fun e -> mkSequential SequencePointsAtSeq setExpr.Range setExpr e)
                        let isPriorToSuperInit = false
                        yield (isPriorToSuperInit,binder) ]

                ([],binders,[]),reps

            // The last 'let' binding is done so we can set the initialization condition for the collection of object fields
            // which now allows members to be called.
            | PassCCtorJustAfterLastLet ->  
                let binders = 
                    [ match ctorInfo.InstanceCtorSafeInitInfo with 
                      | SafeInitField (rfref, _) ->  
                        let setExpr = mkRecdFieldSet cenv.g (exprForVal m thisVal, rfref, thisTyInst, mkOne cenv.g m, m)
                        let setExpr = reps.FixupIncrClassExprPassC (Some(thisVal)) safeStaticInitInfo thisTyInst setExpr
                        let binder = (fun e -> mkSequential SequencePointsAtSeq setExpr.Range setExpr e)
                        let isPriorToSuperInit = false
                        yield (isPriorToSuperInit,binder)  
                      | NoSafeInitInfo ->  
                        () ]

                ([],binders,[]),reps
                
            | PassCBindings decs -> 
                let initActions, reps = List.mapFold (TransTrueDec false) reps decs 
                let cctorInitActions, ctorInitActions, methodBinds = List.unzip3 initActions
                (List.concat cctorInitActions, List.concat ctorInitActions, List.concat methodBinds), reps 

                

        let takenFieldNames = 
            [ for b in memberBinds do 
                  yield b.Var.CompiledName 
                  yield b.Var.DisplayName 
                  yield b.Var.CoreDisplayName 
                  yield b.Var.LogicalName ] 
        let reps = IncrClassReprInfo.Empty(cenv.g, takenFieldNames)

        // Bind the IsArg(true) representations of the object constructor arguments and assign them to fields
        // if they escape to the members. We do this by running the instance bindings 'let x = x' through TransTrueDec
        // for each constructor argument 'x', but with the special flag 'isCtorArg', which helps TransBind know that 
        // the value is already available as an argument, and that nothing special needs to be done unless the 
        // value is being stored into a field.
        let (cctorInitActions1, ctorInitActions1,methodBinds1),reps = 
            let binds = ctorInfo.InstanceCtorArgs |> List.map (fun v -> mkInvisibleBind v (exprForVal v.Range v))
            TransTrueDec true reps (IncrClassBindingGroup(binds,false,false))

        // We expect that only ctorInitActions1 will be non-empty here, and even then only if some elements are stored in the field
        assert (isNil cctorInitActions1)
        assert (isNil methodBinds1)

        // Now deal with all the 'let' and 'member' declarations
        let initActions,reps = List.mapFold TransDec reps decs
        let cctorInitActions2, ctorInitActions2,methodBinds2 = List.unzip3 initActions
        let cctorInitActions = cctorInitActions1 @  List.concat cctorInitActions2
        let ctorInitActions = ctorInitActions1 @ List.concat ctorInitActions2
        let methodBinds = methodBinds1 @ List.concat methodBinds2

        let ctorBody =
            // Build the elements of the implicit constructor body, starting from the bottome
            //     
            //     
            //     
            //     return ()
            let ctorInitActionsPre,ctorInitActionsPost = ctorInitActions |> List.partition (fun (isPriorToSuperInit,_) -> isPriorToSuperInit)

            // This is the return result
            let ctorBody = mkUnit cenv.g m

            // Add .
            // That is, add any  that come prior to the super init constructor call,
            // This is only ever at most the init of the InstanceCtorSafeThisValOpt and InstanceCtorSafeInitInfo var/field
            let ctorBody = List.foldBack (fun (_,binder) acc -> binder acc) ctorInitActionsPost ctorBody
            
            // Add the 
            let ctorBody = 
                // The inheritsExpr may refer to the this variable or to incoming arguments, e.g. in closure fields.
                // References to the this variable go via the ref cell that gets created to help ensure coherent initialization.
                // This ref cell itself may be stored in a field of the object and accessed via arg0.
                // Likewise the incoming arguments will eventually be stored in fields and accessed via arg0.
                // 
                // As a result, the most natural way to implement this would be to simply capture arg0  if needed
                // and access all variables via that. This would be done by rewriting the inheritsExpr as follows:
                //    let inheritsExpr = reps.FixupIncrClassExprPassC (Some(thisVal)) thisTyInst inheritsExpr
                // However, the rules of IL mean we are not actually allowed to capture arg0 
                // and store it as a closure field before the base class constructor is called.
                // 
                // As a result we do not rewrite the inheritsExpr and instead 
                //    (a) wrap a let binding for the ref cell around the inheritsExpr if needed
                //    (b) rely on the fact that the input arguments are in scope and can be accessed from as argument variables
                //    (c) rely on the fact that there are no 'let' bindings prior to the inherits expr.
                let inheritsExpr = 
                    match ctorInfo.InstanceCtorSafeThisValOpt with 
                    | None -> 
                        inheritsExpr
                    | Some v -> 
                        // Rewrite the expression to convert it to a load of a field if needed.
                        // We are allowed to load fields from our own object even though we haven't called
                        // the super class cosntructor yet.
                        let ldexpr = reps.FixupIncrClassExprPassC (Some(thisVal)) safeStaticInitInfo thisTyInst (exprForVal m v) 
                        mkInvisibleLet m v ldexpr inheritsExpr

                let spAtSuperInit = (if inheritsIsVisible then SequencePointsAtSeq else SuppressSequencePointOnExprOfSequential)
                mkSequential spAtSuperInit m inheritsExpr ctorBody

            // Add the normal  
            let ctorBody = List.foldBack (fun (_,binder) acc -> binder acc) ctorInitActionsPre ctorBody

            // Add the final wrapping to make this into a method
            let ctorBody = mkMemberLambdas m [] (Some(thisVal)) ctorInfo.InstanceCtorBaseValOpt [ctorInfo.InstanceCtorArgs] (ctorBody,cenv.g.unit_ty)

            ctorBody

        let cctorBodyOpt =
            /// Omit the .cctor if it's empty 
            match cctorInitActions with
            | [] -> None 
            | _ -> 
                let cctorInitAction = List.foldBack (fun (_,binder) acc -> binder acc) cctorInitActions (mkUnit cenv.g m)
                let m = thisVal.Range
                let cctorArgs,cctorVal,_ = ctorInfo.StaticCtorValInfo.Force()
                // Reconstitute the type of the implicit class constructor with the correct quantified type variables.
                cctorVal.SetType (tryMkForallTy ctorDeclaredTypars cctorVal.TauType)
                let cctorBody = mkMemberLambdas m [] None None [cctorArgs] (cctorInitAction,cenv.g.unit_ty)
                Some(cctorBody)
        
        ctorBody,cctorBodyOpt,methodBinds,reps

end


// Checking of members and 'let' bindings in classes
//
// Technique: multiple passes.
//   - create val_specs for recursive items given names and args
//   - type check AST to TAST collecting (sufficient) type constraints
//   - determine typars to generalize over
//   - generalize definitions (fixing up recursive instances)
//   - build ctor binding
//   - Yields set of recursive bindings for the ctors and members of the types.
module TyconBindingChecking = begin 

    open IncrClassChecking 

    /// Represents one element in a type definition, after the first phase    
    type TyconBindingsPassA =
      /// An entry corresponding to the definition of the implicit constructor for a class
      | PassAIncrClassCtor     of IncrClassCtorLhs
      /// An 'inherit' declaration in an incremental class
      ///
      /// PassAInherit (typ,arg,baseValOpt,m)
      | PassAInherit           of SynType * SynExpr * Val option * range
      /// A set of value or function definitions in an incremental class
      ///
      /// PassAIncrClassBindings (tcref,letBinds,isStatic,isRec,m)
      | PassAIncrClassBindings of TyconRef * Ast.SynBinding list * bool * bool * range
      /// A 'member' definition in a class
      | PassAMember            of PreCheckingRecursiveBinding
#if OPEN_IN_TYPE_DECLARATIONS
      /// A dummy declaration, should we ever support 'open' in type definitions
      | PassAOpen              of LongIdent * range
#endif
      /// Indicates the super init has just been called, 'this' may now be published
      | PassAIncrClassCtorJustAfterSuperInit 
      /// Indicates the last 'field' has been initialized, only 'do' comes after 
      | PassAIncrClassCtorJustAfterLastLet

    /// The collected syntactic input definitions for a single type or type-extension definition
    type TyconBindingsPassAGroup = TyconBindingsPassAGroup of TcEnv * TyconRef * Typar list * TType * TyconBindingsPassA list

    /// The collected syntactic input definitions for a recursive group of type or type-extension definitions
    type TyconBindingsPassAGroups = TyconBindingsPassAGroup list

    /// Represents one element in a type definition, after the second phase
    type TyconBindingsPassB =
      | PassBIncrClassCtor     of IncrClassCtorLhs * Tast.Binding option 
      | PassBInherit           of Expr * Val option
      /// A set of value of function definitions in a class definition with an implicit consructor.
      | PassBIncrClassBindings of IncrClassBindingGroup list
      | PassBMember            of int
      /// An intermediate definition that represent the point in an implicit class definition where
      /// the super type has been initialized.
      | PassBIncrClassCtorJustAfterSuperInit
      /// An intermediate definition that represent the point in an implicit class definition where
      /// the last 'field' has been initialized, i.e. only 'do' and 'member' definitions come after 
      /// this point.
      | PassBIncrClassCtorJustAfterLastLet

    type TyconBindingsPassBGroup = TyconBindingsPassBGroup of TyconRef * TyconBindingsPassB list

    type TyconBindingsPassBGroups = TyconBindingsPassBGroup list

    /// Represents one element in a type definition, after the third phase
    type TyconBindingsPassC =
      | PassCIncrClassCtor     of IncrClassCtorLhs * Tast.Binding option 
      | PassCInherit           of Expr * Val option
      | PassCIncrClassBindings of IncrClassBindingGroup list
      | PassCMember            of PreInitializationGraphEliminationBinding
      // Indicates the last 'field' has been initialized, only 'do' comes after 
      | PassCIncrClassCtorJustAfterSuperInit     
      | PassCIncrClassCtorJustAfterLastLet     

    type TyconBindingsPassCGroup = TyconBindingsPassCGroup of TyconRef * TyconBindingsPassC list

    type TyconBindingsPassCGroups = TyconBindingsPassCGroup list


    // PassA: create member prelimRecValues for "recursive" items, i.e. ctor val and member vals 
    // PassA: also processes their arg patterns - collecting type assertions 
    let TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns cenv envInitial tpenv (bindsl : TyconBindingDefns list) =

        // The basic iteration over the declarations in a single type definition
        // State:
        //    tpenv:               floating type parameter environment
        //    recBindIdx:          index of the recursive bniding
        //    prelimRecValuesRev:  accumulation of prelim value entries
        //    uncheckedBindsRev:   accumulation of unchecked bindings
        let defnsAs, (tpenv,_,prelimRecValuesRev,uncheckedBindsRev) =
            let initialOuterState = (tpenv, 0, ([]:Val list), ([]: PreCheckingRecursiveBinding list))
            (initialOuterState, bindsl) ||> List.mapFold (fun outerState defns -> 

                let (TyconBindingDefns(tcref, declaredTyconTypars, declKind, binds)) = defns
                let (tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev) = outerState

                // Class members can access protected members of the implemented type 
                // Class members can access private members in the typ
                let isExtrinsic = (declKind = ExtrinsicExtensionBinding)
                let envForTycon = MakeInnerEnvForTyconRef cenv envInitial tcref isExtrinsic 

                // Re-add the type constructor to make it take precedence for record label field resolutions
                // This does not apply to extension members: in those cases the relationship between the record labels
                // and the type is too extruded
                let envForTycon = 
                    if isExtrinsic then envForTycon
                    else AddLocalTyconRefs true cenv.g cenv.amap tcref.Range [tcref] envForTycon

                // Make fresh version of the class type for type checking the members and lets *
                let _,copyOfTyconTypars,_,objTy,thisTy = FreshenObjectArgType cenv tcref.Range TyparRigidity.WillBeRigid tcref isExtrinsic declaredTyconTypars


                // The basic iteration over the declarations in a single type definition
                let initialInnerState = (None,envForTycon,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev)
                let defnAs,(_,envForTycon,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev) = 

                    (initialInnerState,binds) ||> List.collectFold (fun innerState defn ->

                        let (TyconBindingDefn(containerInfo,newslotsOK,declKind,classMemberDef,m)) = defn
                        let (incrClassCtorLhsOpt,env,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev) = innerState

                        if tcref.IsTypeAbbrev then error(Error(FSComp.SR.tcTypeAbbreviationsMayNotHaveMembers(),(trimRangeToLine m))); // ideally we'd have the 'm' of the type declaration stored here, to avoid needing to trim to line to approx
                        if tcref.IsEnumTycon then error(Error(FSComp.SR.tcEnumerationsMayNotHaveMembers(),(trimRangeToLine m))); // ideally we'd have the 'm' of the type declaration stored here, to avoid needing to trim to line to approx

                        match classMemberDef, containerInfo with
                        
                          | SynMemberDefn.ImplicitCtor (vis,attrs,spats,thisIdOpt, m), ContainerInfo(_,Some(MemberOrValContainerInfo(tcref, _, baseValOpt, safeInitInfo, _))) ->
                              match tcref.TypeOrMeasureKind with TyparKind.Measure -> error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) | _ -> ();

                              // PassA: make incrClassCtorLhs - ctorv, thisVal etc, type depends on argty(s) 
                              let incrClassCtorLhs = TcImplictCtorLhsPassA(cenv,env,tpenv,tcref,vis,attrs,spats,thisIdOpt,baseValOpt,safeInitInfo,m,copyOfTyconTypars,objTy,thisTy)
                              // PassA: Add copyOfTyconTypars from incrClassCtorLhs - or from tcref 
                              let env = AddDeclaredTypars CheckForDuplicateTypars incrClassCtorLhs.InstanceCtorDeclaredTypars env
                              let innerState = (Some incrClassCtorLhs, env, tpenv, recBindIdx, prelimRecValuesRev, uncheckedBindsRev)

                              [PassAIncrClassCtor incrClassCtorLhs],innerState
                              
                          | SynMemberDefn.ImplicitInherit (typ,arg,_baseIdOpt,m),_ ->
                              match tcref.TypeOrMeasureKind with TyparKind.Measure -> error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) | _ -> ();
                              // PassA: inherit typ(arg) as base - pass through 
                              // PassA: pick up baseValOpt! 
                              let baseValOpt = incrClassCtorLhsOpt |> Option.bind (fun x -> x.InstanceCtorBaseValOpt)
                              let innerState = (incrClassCtorLhsOpt,env,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev)
                              [PassAInherit (typ,arg,baseValOpt,m); PassAIncrClassCtorJustAfterSuperInit], innerState
                              
                              

                          | SynMemberDefn.LetBindings (letBinds,isStatic,isRec,m),_ ->
                              match tcref.TypeOrMeasureKind,isStatic with 
                              | TyparKind.Measure,false -> error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) 
                              | _,_ -> ();

                              if tcref.IsStructOrEnumTycon && not isStatic then 
                                   let allDo = letBinds |> List.forall (function (Binding(_,DoBinding,_,_,_,_,_,_,_,_,_,_)) -> true | _ -> false)
                                   // Code for potential future design change to allow functions-compiled-as-members in structs
                                   //let allFun = letBinds |> List.forall (function (Binding(_,NormalBinding,_,_,_,_,SynValData(_,info,_),_,_,_,_,_)) -> not (SynInfo.HasNoArgs info) | _ -> false)
                                   if allDo then 
                                      errorR(Deprecated(FSComp.SR.tcStructsMayNotContainDoBindings(),(trimRangeToLine m)));
                                   else
                                   // Code for potential future design change to allow functions-compiled-as-members in structs
                                   //elif not allFun then 
                                      errorR(Error(FSComp.SR.tcStructsMayNotContainLetBindings(),(trimRangeToLine m)));

                              if isStatic && isNone incrClassCtorLhsOpt then 
                                  errorR(Error(FSComp.SR.tcStaticLetBindingsRequireClassesWithImplicitConstructors(),m));
                              
                              // PassA: let-bindings - pass through 
                              let innerState = (incrClassCtorLhsOpt,env,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev)     
                              [PassAIncrClassBindings (tcref,letBinds,isStatic,isRec,m)], innerState
                              
                          | SynMemberDefn.Member (bind,m),_ ->
                              // PassA: member binding - create prelim valspec (for recursive reference) and RecursiveBindingInfo 
                              let (NormalizedBinding(_,_,_,_,_,_,_,valSynData,_,_,_,_)) as bind = BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env bind
                              let (SynValData(memberFlagsOpt,_,_)) = valSynData 
                              match tcref.TypeOrMeasureKind with
                              | TyparKind.Type -> ()
                              | TyparKind.Measure ->
                                  match memberFlagsOpt with 
                                  | None -> () 
                                  | Some memberFlags -> 
                                      if memberFlags.IsInstance then error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m));
                                      match memberFlags.MemberKind with 
                                      | MemberKind.Constructor -> error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembersNotConstructors(), m))
                                      | _ -> ()
                              let rbind = NormalizedRecBindingDefn(containerInfo,newslotsOK,declKind,bind)
                              let overridesOK  = DeclKind.CanOverrideOrImplement(declKind)
                              let (binds,values),(tpenv,recBindIdx) = AnalyzeAndMakeRecursiveValue overridesOK false cenv env (tpenv,recBindIdx) rbind
                              let cbinds = [ for rbind in binds -> PassAMember rbind ]

                              let innerState = (incrClassCtorLhsOpt, env, tpenv, recBindIdx, List.rev values @ prelimRecValuesRev,List.rev binds @ uncheckedBindsRev)
                              cbinds,innerState
                        
#if OPEN_IN_TYPE_DECLARATIONS
                          | SynMemberDefn.Open (mp,m),_ ->
                              let innerState = (incrClassCtorLhsOpt,env,tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev)
                              [ PassAOpen (mp,m) ], innerState
#endif
                        
                          | _ -> 
                              error(InternalError("Unexpected definition",m)))

                // If no constructor call, insert PassAIncrClassCtorJustAfterSuperInit at start
                let defnAs = 
                    match defnAs with 
                    | (PassAIncrClassCtor _ as b1) :: rest -> 
                        let rest = 
                            if rest |> List.exists (function PassAIncrClassCtorJustAfterSuperInit -> true | _ -> false) then 
                                rest
                            else
                                PassAIncrClassCtorJustAfterSuperInit :: rest
                        // Insert PassAIncrClassCtorJustAfterLastLet at the point where local construction is known to have been finished 
                        let rest = 
                            let isAfter b = 
                                match b with 
#if OPEN_IN_TYPE_DECLARATIONS
                                | PassAOpen _ 
#endif
                                | PassAIncrClassCtor _ | PassAInherit _ | PassAIncrClassCtorJustAfterSuperInit -> false
                                | PassAIncrClassBindings (_,binds,_,_,_) -> binds |> List.exists (function (Binding (_,DoBinding,_,_,_,_,_,_,_,_,_,_)) -> true | _ -> false)
                                | PassAIncrClassCtorJustAfterLastLet
                                | PassAMember _ -> true
                            let restRev = List.rev rest
                            let afterRev = restRev |> Seq.takeWhile isAfter |> Seq.toList
                            let beforeRev = restRev |> Seq.skipWhile isAfter |> Seq.toList
                            
                            [ yield!  List.rev beforeRev
                              yield PassAIncrClassCtorJustAfterLastLet
                              yield! List.rev afterRev ]
                        b1 :: rest

                    // Cover the case where this is not a type with an implicit constructor.
                    | rest -> rest

                let bindingGroup = TyconBindingsPassAGroup(envForTycon,tcref,copyOfTyconTypars,thisTy,defnAs)
                bindingGroup,(tpenv,recBindIdx,prelimRecValuesRev,uncheckedBindsRev))

        let prelimRecValues = List.rev prelimRecValuesRev
        let uncheckedRecBinds = List.rev uncheckedBindsRev
        (defnsAs, prelimRecValues, uncheckedRecBinds, tpenv)

    /// PassB: type check each of the bindings, convert from ast to tast and collects type assertions
    /// Also generalize incrementally.
    let TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization cenv envInitial tpenv (ad, defnsAs:TyconBindingsPassAGroups, prelimRecValues:Val list, uncheckedRecBinds: PreCheckingRecursiveBinding list, scopem) =

        let defnsBs, (tpenv, generalizedRecBinds, preGeneralizationRecBinds, _, _) = 

            let uncheckedRecBindsTable = uncheckedRecBinds  |> List.map (fun rbind  ->  rbind.RecBindingInfo.Val.Stamp, rbind) |> Map.ofList 

            // Loop through the types being defined...
            //
            // The envNonRec is the environment used to limit generalization to prevent leakage of type
            // variables into the types of 'let' bindings. It gets accumulated across type definitions, e.g.
            // consider
            //
            //   type A<'T>() =  
            //       let someFuncValue : 'A = A<'T>.Meth2()
            //       static member Meth2() = A<'T>.Meth2() 
            //   and B<'T>() =
            //       static member Meth1() = A<'T>.Meth2()
            //
            // Here 'A can't be generalized, even at 'Meth1'.
            //
            // The envForTycon is the environment used for name resolution within the let and member bindings
            // of the type definition. This becomes 'envStatic' and 'envInstance' for the two 
             
            let initialOuterState = (tpenv,([]: PostGeneralizationRecursiveBinding list),([]: PreGeneralizationRecursiveBinding list),uncheckedRecBindsTable,envInitial)

            (initialOuterState,defnsAs) ||> List.mapFold (fun outerState defnsA -> 

                let (TyconBindingsPassAGroup(envForTycon, tcref, copyOfTyconTypars, thisTy, defnAs)) = defnsA

                let (tpenv,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable,envNonRec) = outerState
                
                // Add prelimRecValues to env (breaks recursion) and vrec=true 
                let envForTycon = AddLocalVals cenv.tcSink scopem prelimRecValues envForTycon
                
                // Set up the environment so use-before-definition warnings are given, at least 
                // until we reach a PassAIncrClassCtorJustAfterSuperInit. 
                let envForTycon = { envForTycon with eCtorInfo = Some (InitialImplicitCtorInfo());  }
                
                // Loop through the definition elements in a type...
                // State: 
                //      envInstance: the environment in scope in instance members
                //      envStatic: the environment in scope in static members
                //      envNonRec: the environment relevant to generalization
                //      generalizedRecBinds: part of the incremental generalization state
                //      preGeneralizationRecBinds: part of the incremental generalization state
                //      uncheckedRecBindsTable: part of the incremental generalization state
                let defnBs,(tpenv,_,_,envNonRec,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable) = 

                    let initialInnerState = (tpenv,envForTycon,envForTycon,envNonRec,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable)
                    (initialInnerState,defnAs) ||> List.mapFold  (fun innerState defnA -> 

                        let (tpenv,envInstance,envStatic,envNonRec,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable) = innerState

                        match defnA with
                        // PassB for the definition of an implicit consructor. Enrich the instance environments
                        // with the implicit ctor args.
                        | PassAIncrClassCtor incrClassCtorLhs ->

                            let envInstance = match incrClassCtorLhs.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal cenv.tcSink scopem v envInstance | None -> envInstance
                            let envInstance = List.foldBack AddLocalValPrimitive incrClassCtorLhs.InstanceCtorArgs envInstance 
                            let envNonRec   = match incrClassCtorLhs.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal cenv.tcSink scopem v envNonRec | None -> envNonRec
                            let envNonRec   = List.foldBack AddLocalValPrimitive incrClassCtorLhs.InstanceCtorArgs envNonRec
                            let safeThisValBindOpt = TcLetrecComputeCtorSafeThisValBind cenv incrClassCtorLhs.InstanceCtorSafeThisValOpt

                            let innerState = (tpenv,envInstance,envStatic,envNonRec,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable)
                            PassBIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt), innerState
                            
                        // PassB: typecheck the argument to an 'inherits' call and build the new object expr for the inherit-call 
                        | PassAInherit (synBaseTy,arg,baseValOpt,m) ->
                            let baseTy,tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use envInstance tpenv synBaseTy
                            let inheritsExpr,tpenv = TcNewExpr cenv envInstance tpenv baseTy (Some synBaseTy.Range) true arg m
                            let envInstance = match baseValOpt with Some baseVal -> AddLocalVal cenv.tcSink scopem baseVal envInstance | None -> envInstance
                            let envNonRec   = match baseValOpt with Some baseVal -> AddLocalVal cenv.tcSink scopem baseVal envNonRec   | None -> envNonRec
                            let innerState = (tpenv,envInstance,envStatic,envNonRec,generalizedRecBinds,preGeneralizationRecBinds,uncheckedRecBindsTable)
                            PassBInherit (inheritsExpr,baseValOpt), innerState
                            
                        // PassB: let and let rec value and function definitions
                        | PassAIncrClassBindings (tcref,binds,isStatic,isRec,bindsm) ->
                            let envForBinding = if isStatic then envStatic else envInstance
                            let binds,bindRs,env,tpenv = 
                                if isRec then
                                
                                    // Type check local recursive binding 
                                    let binds = binds |> List.map (fun bind -> RecBindingDefn(ExprContainerInfo,NoNewSlots,ClassLetBinding,bind))
                                    let binds,env,tpenv = TcLetrec ErrorOnOverrides cenv envForBinding tpenv (binds,scopem(*bindsm*),scopem)
                                    let bindRs = [IncrClassBindingGroup(binds,isStatic,true)]
                                    binds,bindRs,env,tpenv 
                                else

                                    // Type check local binding 
                                    let binds,env,tpenv = TcLetBindings cenv envForBinding ExprContainerInfo ClassLetBinding tpenv (binds,bindsm,scopem)
                                    let binds,bindRs = 
                                        binds 
                                        |> List.map (function
                                            | TMDefLet(bind,_) -> [bind],IncrClassBindingGroup([bind],isStatic,false)
                                            | TMDefDo(e,_) -> [],IncrClassDo(e,isStatic)
                                            | _ -> error(InternalError("unexpected definition kind",tcref.Range)))
                                        |> List.unzip
                                    List.concat binds,bindRs,env,tpenv

                            let envNonRec = (envNonRec,binds) ||> List.fold (fun acc bind -> AddLocalValPrimitive bind.Var acc)

                            // Check to see that local bindings and members don't have the same name and check some other adhoc conditions
                            for bind in binds do 

                                if HasFSharpAttribute cenv.g cenv.g.attrib_DllImportAttribute bind.Var.Attribs && not isStatic then 
                                    errorR(Error(FSComp.SR.tcDllImportNotAllowed(),bind.Var.Range));
                                    
                                let nm = bind.Var.DisplayName
                                let ty = generalizedTyconRef tcref
                                match TryFindIntrinsicMethInfo cenv.infoReader bind.Var.Range ad nm ty,
                                      TryFindPropInfo cenv.infoReader bind.Var.Range ad nm ty with 
                                | [],[] -> ()
                                | _ -> errorR (Error(FSComp.SR.tcMemberAndLocalClassBindingHaveSameName(nm),bind.Var.Range));

                            // Also add static entries to the envInstance if necessary 
                            let envInstance = (if isStatic then (binds,envInstance) ||> List.foldBack (fun b e -> AddLocalVal cenv.tcSink scopem b.Var e)  else env)
                            let envStatic = (if isStatic then env else envStatic)
                            let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
                            PassBIncrClassBindings bindRs,innerState
                              
                        | PassAIncrClassCtorJustAfterSuperInit -> 
                            let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
                            PassBIncrClassCtorJustAfterSuperInit, innerState
                            
                        | PassAIncrClassCtorJustAfterLastLet -> 
                            let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
                            PassBIncrClassCtorJustAfterLastLet , innerState
                            
                            
#if OPEN_IN_TYPE_DECLARATIONS
                        | PassAOpen(mp,m) -> 
                            let envInstance = TcOpenDecl cenv.tcSink cenv.g cenv.amap m scopem envInstance mp
                            let envStatic = TcOpenDecl cenv.tcSink cenv.g cenv.amap m scopem envStatic mp
                            let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
                            PassBOpen,innerState
#endif


                        // Note: this path doesn't add anything the environment, because the member is already available off via its type 
                        
                        | PassAMember rbind ->

                            // PassB: Typecheck member binding, generalize them later, when all type constraints are known 
                            // static members are checked under envStatic.
                            // envStatic contains class typars and the (ungeneralized) members on the class(es).
                            // envStatic has no instance-variables (local let-bindings or ctor args). 

                            let v = rbind.RecBindingInfo .Val
                            let envForBinding = if v.IsInstanceMember then envInstance else envStatic

                            // Type variables derived from the type definition (or implicit constructor) are always generalizable (we check their generalizability later).
                            // Note they may be solved to be equi-recursive.
                            let extraGeneralizableTypars =  copyOfTyconTypars

                            // Inside the incremental class sytntax we assert the type of the 'this' variable to be precisely the same type as the 
                            // this variable for the implicit class constructor. For static members, we assert the type variables associated
                            // for the class to be identical to those used for the implicit class constructor and the static class constructor.
                            //
                            // See TcLetrecBinding where this information is consumed.
                            let reqdThisValTyOpt = Some thisTy

                            // Type check the member and apply early generalization.
                            // We ignore the tpenv returned by checking each member. Each member gets checked in a fresh, clean tpenv
                            let (envNonRec, generalizedRecBinds, preGeneralizationRecBinds, _, uncheckedRecBindsTable) = 
                                TcLetrecBinding (cenv,envForBinding,scopem,extraGeneralizableTypars,reqdThisValTyOpt) (envNonRec, generalizedRecBinds, preGeneralizationRecBinds, tpenv, uncheckedRecBindsTable) rbind
                             
                            let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable)
                            PassBMember rbind.RecBindingInfo.Index, innerState)
                
                let resultGroup = TyconBindingsPassBGroup(tcref, defnBs)
                let outerState = (tpenv, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable, envNonRec)
                resultGroup, outerState)

        // There should be no bindings that have not been generalized since checking the vary last binding always
        // results in the generalization of all remaining ungeneralized bindings, since there are no remaining unchecked bindings
        // to prevent the generalization 
        assert preGeneralizationRecBinds.IsEmpty

        defnsBs, generalizedRecBinds, tpenv


    // Choose type scheme implicit constructors and adjust their recursive types.
    // Fixup recursive references to members.
    let TcTyconBindings_PassC_FixupRecursiveReferences cenv (envInitial:TcEnv) tpenv (denv, defnsBs: TyconBindingsPassBGroups, generalizedTyparsForRecursiveBlock: Typar list, generalizedRecBinds: PostGeneralizationRecursiveBinding list, scopem) =
        // Build an index ---> binding map
        let generalizedBindingsMap = generalizedRecBinds |> List.map (fun pgrbind -> (pgrbind.RecBindingInfo.Index, pgrbind)) |> Map.ofList

        let defnsCs,tpenv = 
            (tpenv, defnsBs) ||> List.mapFold (fun tpenv defnsB -> 
                let (TyconBindingsPassBGroup(tcref, defnBs)) = defnsB

                let defnCs, tpenv = 
                    (tpenv,defnBs) ||> List.mapFold (fun tpenv defnB -> 

                        // PassC: Generalise implicit ctor val 
                        match defnB with
                        | PassBIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt) ->
                            let valscheme = incrClassCtorLhs.InstanceCtorValScheme
                            let valscheme = ChooseCanonicalValSchemeAfterInference cenv.g denv valscheme scopem
                            AdjustRecType cenv incrClassCtorLhs.InstanceCtorVal valscheme;
                            PassCIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt),tpenv

                        | PassBInherit (inheritsExpr,basevOpt) -> 
                            PassCInherit (inheritsExpr,basevOpt),tpenv

                        | PassBIncrClassBindings bindRs             -> 
                            PassCIncrClassBindings bindRs,tpenv

                        | PassBIncrClassCtorJustAfterSuperInit -> 
                            PassCIncrClassCtorJustAfterSuperInit, tpenv

                        | PassBIncrClassCtorJustAfterLastLet -> 
                            PassCIncrClassCtorJustAfterLastLet, tpenv

                        | PassBMember idx  ->
                            // PassC: Fixup member bindings 
                            let generalizedBinding = generalizedBindingsMap.[idx] 
                            let vxbind = TcLetrecAdjustMemberForSpecialVals cenv generalizedBinding
                            let pgbrind = FixupLetrecBind cenv envInitial.DisplayEnv generalizedTyparsForRecursiveBlock  vxbind
                            PassCMember pgbrind, tpenv)
                let group = TyconBindingsPassCGroup(tcref,defnCs)
                group, tpenv)
        (defnsCs,tpenv)


    // --- Extract field bindings from let-bindings 
    // --- Extract method bindings from let-bindings 
    // --- Extract bindings for implicit constructors
    let TcTyconBindings_ExtractImplicitFieldAndMethodBindings cenv envInitial tpenv (denv, generalizedTyparsForRecursiveBlock, defnsCs) =

        let (fixupValueExprBinds, methodBinds) = 
            defnsCs |> List.map (fun (TyconBindingsPassCGroup(tcref,defnCs)) -> 
                match defnCs with 

                 
                | PassCIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt) :: defnCs -> 


                    // Determine is static fields in this type need to be "protected" against invalid recursive initialization
                    let safeStaticInitInfo = 
                        // Safe static init checks are not added to FSharp.Core. The FailInit helper is not defined in some places, and 
                        // there are some minor concerns about performance w.r.t. these static bindings:
                        //
                        // set.fs (also map.fs)
                        //       static let empty : Set<'T> = 
                        //           let comparer = LanguagePrimitives.FastGenericComparer<'T> 
                        //           new Set<'T>(comparer, SetEmpty)
                        //
                        // prim-types.fs:
                        //       type TypeInfo<'T>() = 
                        //          static let info = 
                        //              let ty = typeof<'T>
                        //              ...
                        // and some others in prim-types.fs
                        //
                        // REVIEW: consider also turning them off for FSharp.Compiler: && cenv.topCcu.AssemblyName <> "FSharp.Compiler" and more
                        // generally allowing an optimization switch to turn off these checks

                        let needsSafeStaticInit = not cenv.g.compilingFslib
                        
                        // We only need safe static init checks if there are some static field bindings (actually, we look for non-method bindings)
                        let hasStaticBindings = 
                            defnCs |> List.exists (function 
                                | PassCIncrClassBindings groups -> 
                                    groups |> List.exists (function 
                                        | IncrClassBindingGroup(binds,isStatic,_) -> 
                                            let nonMethodBinds = binds |> List.filter (IncrClassReprInfo.IsMethodRepr cenv >> not) 
                                            isStatic && not nonMethodBinds.IsEmpty 
                                        | _ -> false) 
                                | _ -> false)

                        if needsSafeStaticInit && hasStaticBindings then 
                            let rfield =  MakeSafeInitField cenv.g envInitial tcref.Range true
                            SafeInitField(mkRecdFieldRef tcref rfield.Name, rfield)
                        else
                            NoSafeInitInfo


                    // This is the type definition we're processing  
                    let tcref = incrClassCtorLhs.TyconRef

                    // Assumes inherit call immediately follows implicit ctor. Checked by CheckMembersForm 
                    let inheritsExpr,inheritsIsVisible,_,defnCs = 
                        match defnCs |> List.partition (function PassCInherit _ -> true | _ -> false) with
                        | [PassCInherit (inheritsExpr,baseValOpt)], defnCs -> 
                            inheritsExpr,true,baseValOpt,defnCs

                        | _ ->
                            if tcref.IsStructOrEnumTycon then 
                                mkUnit cenv.g tcref.Range, false,None, defnCs
                            else
                                let inheritsExpr,_ = TcNewExpr cenv envInitial tpenv cenv.g.obj_ty None true (SynExpr.Const(SynConst.Unit,tcref.Range)) tcref.Range
                                inheritsExpr,false,None,defnCs
                       
                    let envForTycon = MakeInnerEnvForTyconRef cenv envInitial tcref false 

                    // Compute the cpath used when creating the hidden fields 
                    let cpath = envForTycon.eAccessPath

                    let localDecs  = 
                        defnCs |> List.filter (function 
                            | PassCIncrClassBindings _ 
                            | PassCIncrClassCtorJustAfterSuperInit 
                            | PassCIncrClassCtorJustAfterLastLet -> true 
                            | _ -> false)
                    let memberBindsWithFixups = defnCs |> List.choose (function PassCMember pgrbind -> Some pgrbind | _ -> None) 

                    // Extend localDecs with "let safeThisVal = ref null" if there is a safeThisVal
                    let localDecs  = 
                        match safeThisValBindOpt with 
                        | None -> localDecs 
                        | Some bind -> PassCIncrClassBindings [IncrClassBindingGroup([bind],false,false)] :: localDecs
                        
                    // Carve out the initialization sequence and decide on the localRep 
                    let ctorBodyLambdaExpr,cctorBodyLambdaExprOpt,methodBinds,localReps = 
                        
                        let localDecs = 
                            [ for localDec in localDecs do 
                                  match localDec with 
                                  | PassCIncrClassBindings(binds) -> yield PassCBindings binds
                                  | PassCIncrClassCtorJustAfterSuperInit  -> yield PassCCtorJustAfterSuperInit
                                  | PassCIncrClassCtorJustAfterLastLet -> yield PassCCtorJustAfterLastLet
                                  | _ -> () ]
                        let memberBinds = memberBindsWithFixups |> List.map (fun x -> x.Binding) 
                        MakeCtorForIncrClassConstructionPassC(cenv,envForTycon,tpenv,incrClassCtorLhs,inheritsExpr,inheritsIsVisible,localDecs,memberBinds,generalizedTyparsForRecursiveBlock,safeStaticInitInfo)

                    // Generate the (value,expr) pairs for the implicit 
                    // object constructor and implicit static initializer 
                    let ctorValueExprBindings = 
                        [ (let ctorValueExprBinding = TBind(incrClassCtorLhs.InstanceCtorVal,ctorBodyLambdaExpr,NoSequencePointAtStickyBinding)
                           let rbind = { ValScheme = incrClassCtorLhs.InstanceCtorValScheme ; Binding = ctorValueExprBinding }
                           FixupLetrecBind cenv envInitial.DisplayEnv generalizedTyparsForRecursiveBlock rbind) ]
                        @ 
                        ( match cctorBodyLambdaExprOpt with 
                          | None -> []
                          | Some(cctorBodyLambdaExpr) -> 
                              [ (let _,cctorVal, cctorValScheme = incrClassCtorLhs.StaticCtorValInfo.Force()
                                 let cctorValueExprBinding = TBind(cctorVal,cctorBodyLambdaExpr,NoSequencePointAtStickyBinding)
                                 let rbind = { ValScheme = cctorValScheme; Binding =  cctorValueExprBinding  }
                                 FixupLetrecBind cenv envInitial.DisplayEnv generalizedTyparsForRecursiveBlock rbind) ] ) 

                    // Publish the fields of the representation to the type 
                    localReps.PublishIncrClassFields (cenv, denv, cpath, incrClassCtorLhs, safeStaticInitInfo); (* mutation *)    
                    
                    // Fixup members
                    let memberBindsWithFixups = 
                        memberBindsWithFixups |> List.map (fun pgrbind -> 
                            let (TBind(v,x,spBind)) = pgrbind.Binding

                            // Work out the 'this' variable and type instantiation for field fixups. 
                            // We use the instantiation from the instance member if any. Note: It is likely this is not strictly needed 
                            // since we unify the types of the 'this' variables with those of the ctor declared typars. 
                            let thisValOpt = GetInstanceMemberThisVariable (v,x)

                            // Members have at least as many type parameters as the enclosing class. Just grab the type variables for the type.
                            let thisTyInst = List.map mkTyparTy (List.take (tcref.Typars(v.Range).Length) v.Typars)
                                    
                            let x = localReps.FixupIncrClassExprPassC thisValOpt safeStaticInitInfo thisTyInst x 

                            { pgrbind with Binding = TBind(v,x,spBind) } )
                        
                    ctorValueExprBindings @ memberBindsWithFixups, methodBinds  
                
                // Cover the case where this is not a class with an implicit constructor
                | defnCs -> 
                    let memberBindsWithFixups = defnCs |> List.choose (function PassCMember pgrbind -> Some pgrbind | _ -> None) 
                    memberBindsWithFixups,[])
            |> List.unzip
        let fixupValueExprBinds = List.concat fixupValueExprBinds
        let methodBinds = List.concat methodBinds 
        (fixupValueExprBinds, methodBinds)


    /// Main routine
    let TcTyconBindings cenv (env: TcEnv) tpenv bindsm scopem (bindsl : TyconBindingDefns list) =
        let ad = env.eAccessRights
        let denv = env.DisplayEnv
        let envInitial = env
        let env = () // hide this to make sure it is not used inadvertently
        env |> ignore // mark it as used
        
        // PassA: create member prelimRecValues for "recursive" items, i.e. ctor val and member vals 
        // PassA: also processes their arg patterns - collecting type assertions 
        let (defnsAs, prelimRecValues, uncheckedRecBinds, tpenv) = TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns cenv envInitial tpenv bindsl

        // PassB: type check pass, convert from ast to tast and collects type assertions, and generalize
        let defnsBs, generalizedRecBinds, tpenv = TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization cenv envInitial tpenv (ad, defnsAs, prelimRecValues, uncheckedRecBinds, scopem)


        let generalizedTyparsForRecursiveBlock = 
             generalizedRecBinds 
                |> List.map (fun pgrbind -> pgrbind.GeneralizedTypars)
                |> unionGeneralizedTypars

        // Check the escape condition for all extraGeneralizableTypars.
        // First collect up all the extraGeneralizableTypars.
        let allExtraGeneralizableTypars = 
            [ for (TyconBindingsPassAGroup(_, _, copyOfTyconTypars, _, defnAs)) in defnsAs do
                  yield! copyOfTyconTypars
                  for defnA in defnAs do 
                      match defnA with
                      | PassAMember rbind ->
                           yield! rbind.RecBindingInfo.EnclosingDeclaredTypars
                      | _ -> 
                           ()   ]

        // Now check they don't escape the overall scope of the recursive set of types
        if nonNil allExtraGeneralizableTypars then         
            let freeInInitialEnv = GeneralizationHelpers.ComputeUngeneralizableTypars envInitial
            for extraTypar in allExtraGeneralizableTypars do 
                if Zset.memberOf freeInInitialEnv extraTypar then
                    let ty =  mkTyparTy extraTypar
                    error(Error(FSComp.SR.tcNotSufficientlyGenericBecauseOfScope(NicePrint.prettyStringOfTy denv ty),extraTypar.Range));                                

        // Solve any type variables in any part of the overall type signature of the class whose
        // constraints involve generalized type variables.
        //
        // This includes property, member and constructor argument types that couldn't be fully generalized because they
        // involve generalized copies of class type variables.
        let unsolvedTyparsForRecursiveBlockInvolvingGeneralizedVariables = 
             let genSet = (freeInTypes CollectAllNoCaching [ for tp in generalizedTyparsForRecursiveBlock -> mkTyparTy tp ]).FreeTypars
             //printfn "genSet.Count = %d" genSet.Count
             let allTypes = 
                 [ for pgrbind in generalizedRecBinds do 
                      yield pgrbind.RecBindingInfo.Val.Type 
                   for (TyconBindingsPassBGroup(_tcref, defnBs)) in defnsBs do
                      for defnB in defnBs do
                        match defnB with
                        | PassBIncrClassCtor (incrClassCtorLhs, _) ->
                            yield incrClassCtorLhs.InstanceCtorVal.Type
                        | _ -> 
                            ()
                  ]
             //printfn "allTypes.Length = %d" allTypes.Length
             let unsolvedTypars = freeInTypesLeftToRight cenv.g true allTypes
             //printfn "unsolvedTypars.Length = %d" unsolvedTypars.Length
             //for x in unsolvedTypars do 
             //    printfn "unsolvedTypar : %s #%d" x.DisplayName x.Stamp
             let unsolvedTyparsInvolvingGeneralizedVariables =
                 unsolvedTypars |> List.filter (fun tp -> 
                     let freeInTypar = (freeInType CollectAllNoCaching (mkTyparTy tp)).FreeTypars
                     // Check it is not one of the generalized variables...
                     not (genSet.Contains tp) && 
                     // Check it involves a generalized variable in one of its constraints...
                     freeInTypar.Exists(fun otherTypar -> genSet.Contains otherTypar))
             //printfn "unsolvedTyparsInvolvingGeneralizedVariables.Length = %d" unsolvedTyparsInvolvingGeneralizedVariables.Length
             //for x in unsolvedTypars do 
             //    printfn "unsolvedTyparsInvolvingGeneralizedVariable : %s #%d" x.DisplayName x.Stamp
             unsolvedTyparsInvolvingGeneralizedVariables

        for tp in unsolvedTyparsForRecursiveBlockInvolvingGeneralizedVariables do
            //printfn "solving unsolvedTyparsInvolvingGeneralizedVariable : %s #%d" tp.DisplayName tp.Stamp
            if (tp.Rigidity <> TyparRigidity.Rigid) && not tp.IsSolved then 
                ConstraintSolver.ChooseTyparSolutionAndSolve cenv.css denv tp
          
        // Now that we know what we've generalized we can adjust the recursive references 
        let defnsCs,tpenv = TcTyconBindings_PassC_FixupRecursiveReferences cenv envInitial tpenv (denv, defnsBs, generalizedTyparsForRecursiveBlock, generalizedRecBinds, scopem)

        // --- Extract field bindings from let-bindings 
        // --- Extract method bindings from let-bindings 
        // --- Extract bindings for implicit constructors
        let fixupValueExprBinds, methodBinds = TcTyconBindings_ExtractImplicitFieldAndMethodBindings cenv envInitial tpenv (denv, generalizedTyparsForRecursiveBlock, defnsCs)
        
        // INITIALIZATION GRAPHS 
        let binds = EliminateInitializationGraphs cenv.g true envInitial.DisplayEnv fixupValueExprBinds bindsm

        let binds = binds @ methodBinds
        
        // Post letrec env 
        let envbody = AddLocalVals cenv.tcSink scopem prelimRecValues envInitial 
        binds,envbody,tpenv

end

//-------------------------------------------------------------------------
// The member portions of class defns
//------------------------------------------------------------------------- 
    
let TcTyconMemberDefns cenv env parent bindsm scopem tyconDefnMembers = 
    let interfacesFromTypeDefn (TyconMemberData(declKind, tcref, _, _, declaredTyconTypars, members, _, _)) =
        let overridesOK  = DeclKind.CanOverrideOrImplement(declKind)
        members |> List.collect (function 
            | SynMemberDefn.Interface(ity,defnOpt,_) -> 
                  let _,typ = if tcref.Deref.IsExceptionDecl then [],cenv.g.exn_ty else generalizeTyconRef tcref
                  let m = ity.Range
                  if tcref.IsTypeAbbrev then error(Error(FSComp.SR.tcTypeAbbreviationsCannotHaveInterfaceDeclaration(),m));
                  if tcref.IsEnumTycon then error(Error(FSComp.SR.tcEnumerationsCannotHaveInterfaceDeclaration(),m));

                  let ity' = 
                      let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTyconTypars env
                      TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType  envinner emptyUnscopedTyparEnv ity |> fst
                  if not (isInterfaceTy cenv.g ity') then errorR(Error(FSComp.SR.tcTypeIsNotInterfaceType0(),ity.Range));
                  
                  if not (tcref.HasInterface cenv.g ity') then 
                      error(Error(FSComp.SR.tcAllImplementedInterfacesShouldBeDeclared(),ity.Range));
                  if (typeEquiv cenv.g ity' cenv.g.mk_IComparable_ty && isSome tcref.GeneratedCompareToValues) || 
                      (typeEquiv cenv.g ity' cenv.g.mk_IStructuralComparable_ty && isSome tcref.GeneratedCompareToWithComparerValues) ||
                      (typeEquiv cenv.g ity' ((mkAppTy cenv.g.system_GenericIComparable_tcref [typ])) && isSome tcref.GeneratedCompareToValues) ||
                      (typeEquiv cenv.g ity' ((mkAppTy cenv.g.system_GenericIEquatable_tcref [typ])) && isSome tcref.GeneratedHashAndEqualsWithComparerValues) ||
                      (typeEquiv cenv.g ity' cenv.g.mk_IStructuralEquatable_ty && isSome tcref.GeneratedHashAndEqualsWithComparerValues) then
                      errorR(Error(FSComp.SR.tcDefaultImplementationForInterfaceHasAlreadyBeenAdded(),ity.Range));
                  if overridesOK = WarnOnOverrides then  
                      warning(IntfImplInIntrinsicAugmentation(ity.Range));
                  if overridesOK = ErrorOnOverrides then  
                      errorR(IntfImplInExtrinsicAugmentation(ity.Range));
                  match defnOpt with 
                  | Some(defn) -> [ (ity',defn,m) ]
                  | _-> []
                  
            | _ -> []) 

    let interfaceMembersFromTypeDefn (TyconMemberData(declKind, tcref, baseValOpt, safeInitInfo, declaredTyconTypars, _, _, newslotsOK)) (ity',defn,_) implTySet =
        let containerInfo = ContainerInfo(parent, Some(MemberOrValContainerInfo(tcref, Some(ity',implTySet), baseValOpt, safeInitInfo, declaredTyconTypars)))
        defn  |> List.choose (fun mem ->
                match mem with
                | SynMemberDefn.Member(_,m) -> Some(TyconBindingDefn(containerInfo,newslotsOK,declKind,mem,m))
                | SynMemberDefn.AutoProperty(_,_,_,_,_,_,_,_,_,_,m) -> Some(TyconBindingDefn(containerInfo,newslotsOK,declKind,mem,m))
                | _ -> errorR(Error(FSComp.SR.tcMemberNotPermittedInInterfaceImplementation(),mem.Range)); None)

    let tpenv = emptyUnscopedTyparEnv

    try
      // Some preliminary checks 
      tyconDefnMembers |> List.iter (fun (TyconMemberData(declKind, tcref, _, _, _, members, m, newslotsOK)) -> 
             let tcaug = tcref.TypeContents
             if tcaug.tcaug_closed && declKind <> ExtrinsicExtensionBinding then 
               error(InternalError("Intrinsic augmentations of types are only permitted in the same file as the definition of the type",m));
             members |> List.iter (fun mem ->
                    match mem with
                    | SynMemberDefn.Member _ -> ()
                    | SynMemberDefn.Interface _ -> () 
                    | SynMemberDefn.Open _ 
                    | SynMemberDefn.AutoProperty _
                    | SynMemberDefn.LetBindings _  // accept local definitions 
                    | SynMemberDefn.ImplicitCtor _ // accept implicit ctor pattern, should be first! 
                    | SynMemberDefn.ImplicitInherit _ when newslotsOK = NewSlotsOK -> () // accept implicit ctor pattern, should be first! 
                    // The rest should have been removed by splitting, they belong to "core" (they are "shape" of type, not implementation) 
                    | _ -> error(Error(FSComp.SR.tcDeclarationElementNotPermittedInAugmentation(),mem.Range))));

      let tyconBindingsOfTypeDefn (TyconMemberData(declKind, tcref, baseValOpt, safeInitInfo, declaredTyconTypars, members, _, newslotsOK)) =
          let containerInfo = ContainerInfo(parent,Some(MemberOrValContainerInfo(tcref, None, baseValOpt, safeInitInfo, declaredTyconTypars)))
          members 
          |> List.choose (fun memb ->
              match memb with 
              | SynMemberDefn.ImplicitCtor _
              | SynMemberDefn.ImplicitInherit _
              | SynMemberDefn.LetBindings _
              | SynMemberDefn.AutoProperty _
              | SynMemberDefn.Member _
              | SynMemberDefn.Open _
                  -> Some(TyconBindingDefn(containerInfo,newslotsOK,declKind,memb,memb.Range))

              // Interfaces exist in the member list - handled above in interfaceMembersFromTypeDefn 
              | SynMemberDefn.Interface _  -> None

              // The following should have been List.unzip out already in SplitTyconDefn 
              | SynMemberDefn.AbstractSlot _
              | SynMemberDefn.ValField _             
              | SynMemberDefn.Inherit _    -> error(InternalError("Unexpected declaration element",memb.Range))
              | SynMemberDefn.NestedType _  -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(),memb.Range)))
          
      let binds  = 
          tyconDefnMembers |> List.map (fun (TyconMemberData(declKind, tcref, _, _, declaredTyconTypars, _, _, _) as tyconMemberData) -> 
              let obinds = tyconBindingsOfTypeDefn tyconMemberData
              let ibinds  = 
                      let intfTypes = interfacesFromTypeDefn tyconMemberData
                      let slotImplSets = DispatchSlotChecking.GetSlotImplSets cenv.infoReader env.DisplayEnv false (List.map (fun (ity,_,m) -> (ity,m)) intfTypes)
                      List.concat (List.map2 (interfaceMembersFromTypeDefn tyconMemberData) intfTypes slotImplSets)
              TyconBindingDefns(tcref, declaredTyconTypars, declKind, obinds @ ibinds))
      
      let results = TyconBindingChecking.TcTyconBindings cenv env tpenv bindsm scopem binds
      let binds,envbody,_ = results
      binds,envbody

    with e -> errorRecovery e scopem; [], env

//-------------------------------------------------------------------------
// Build augmentation declarations
//------------------------------------------------------------------------- 

module AddAugmentationDeclarations = begin
    let tcaug_has_nominal_interface g (tcaug: TyconAugmentation) tcref =
        tcaug.tcaug_interfaces |> List.exists (fun (x,_,_) -> 
            isAppTy g x && tyconRefEq g (tcrefOfAppTy g x) tcref)

        
    let AddGenericCompareDeclarations cenv (env: TcEnv) (scSet:Set) (tycon:Tycon) =
        if Augment.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && scSet.Contains tycon.Stamp then 
            let tcref = mkLocalTyconRef tycon
            let tcaug = tycon.TypeContents
            let _,typ = if tcref.Deref.IsExceptionDecl then [],cenv.g.exn_ty else generalizeTyconRef tcref
            let m = tycon.Range
            let genericIComparableTy = mkAppTy cenv.g.system_GenericIComparable_tcref [typ]


            let hasExplicitIComparable = tycon.HasInterface cenv.g cenv.g.mk_IComparable_ty 
            let hasExplicitGenericIComparable = tcaug_has_nominal_interface cenv.g tcaug cenv.g.system_GenericIComparable_tcref    
            let hasExplicitIStructuralComparable = tycon.HasInterface cenv.g cenv.g.mk_IStructuralComparable_ty

            if hasExplicitIComparable then 
                errorR(Error(FSComp.SR.tcImplementsIComparableExplicitly(tycon.DisplayName),m)); 
      
            elif hasExplicitGenericIComparable then 
                errorR(Error(FSComp.SR.tcImplementsGenericIComparableExplicitly(tycon.DisplayName),m)); 
            elif hasExplicitIStructuralComparable then
                errorR(Error(FSComp.SR.tcImplementsIStructuralComparableExplicitly(tycon.DisplayName),m)); 
            else
                let hasExplicitGenericIComparable = tycon.HasInterface cenv.g genericIComparableTy
                let cvspec1,cvspec2 = Augment.MakeValsForCompareAugmentation cenv.g tcref
                let cvspec3 = Augment.MakeValsForCompareWithComparerAugmentation cenv.g tcref

                PublishInterface cenv env.DisplayEnv tcref m true cenv.g.mk_IStructuralComparable_ty;
                PublishInterface cenv env.DisplayEnv tcref m true cenv.g.mk_IComparable_ty;
                if not tycon.IsExceptionDecl && not hasExplicitGenericIComparable then 
                    PublishInterface cenv env.DisplayEnv tcref m true genericIComparableTy;
                tcaug.SetCompare (mkLocalValRef cvspec1, mkLocalValRef cvspec2);
                tcaug.SetCompareWith (mkLocalValRef cvspec3);
                PublishValueDefn cenv env ModuleOrMemberBinding cvspec1
                PublishValueDefn cenv env ModuleOrMemberBinding cvspec2
                PublishValueDefn cenv env ModuleOrMemberBinding cvspec3

               

    let AddGenericEqualityWithComparerDeclarations cenv (env: TcEnv) (seSet:Set) (tycon:Tycon) =
        if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon && seSet.Contains tycon.Stamp then 
            let tcref = mkLocalTyconRef tycon
            let tcaug = tycon.TypeContents
            let m = tycon.Range

            let hasExplicitIStructuralEquatable = tycon.HasInterface cenv.g cenv.g.mk_IStructuralEquatable_ty

            if hasExplicitIStructuralEquatable then
                errorR(Error(FSComp.SR.tcImplementsIStructuralEquatableExplicitly(tycon.DisplayName),m)); 
            else
                let evspec1,evspec2,evspec3 = Augment.MakeValsForEqualityWithComparerAugmentation cenv.g tcref
                PublishInterface cenv env.DisplayEnv tcref m true cenv.g.mk_IStructuralEquatable_ty;                
                tcaug.SetHashAndEqualsWith (mkLocalValRef evspec1, mkLocalValRef evspec2, mkLocalValRef evspec3)
                PublishValueDefn cenv env ModuleOrMemberBinding evspec1
                PublishValueDefn cenv env ModuleOrMemberBinding evspec2
                PublishValueDefn cenv env ModuleOrMemberBinding evspec3

                
    let AddGenericCompareBindings cenv (tycon:Tycon) =
        if (* Augment.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) isSome tycon.GeneratedCompareToValues then 
            Augment.MakeBindingsForCompareAugmentation cenv.g tycon
        else
            []
            
    let AddGenericCompareWithComparerBindings cenv (tycon:Tycon) =
        if (* Augment.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) isSome tycon.GeneratedCompareToWithComparerValues then
             (Augment.MakeBindingsForCompareWithComparerAugmentation cenv.g tycon)
         else
            []
             
    let AddGenericEqualityWithComparerBindings cenv (tycon:Tycon) =
        if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon  && isSome tycon.GeneratedHashAndEqualsWithComparerValues then
            (Augment.MakeBindingsForEqualityWithComparerAugmentation cenv.g tycon)
        else
            []

    let AddGenericHashAndComparisonDeclarations cenv env scSet seSet tycon =
        AddGenericCompareDeclarations cenv env scSet tycon
        AddGenericEqualityWithComparerDeclarations cenv env seSet tycon


    let AddGenericHashAndComparisonBindings cenv tycon =
        AddGenericCompareBindings cenv tycon @ AddGenericCompareWithComparerBindings cenv tycon @ AddGenericEqualityWithComparerBindings cenv tycon


    // We can only add the Equals override after we've done the augmentation becuase we have to wait until 
    // tycon.HasOverride can give correct results 
    let AddGenericEqualityBindings cenv (env: TcEnv) tycon =
        if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon then 
            let tcref = mkLocalTyconRef tycon
            let tcaug = tycon.TypeContents
            let _,typ = if tcref.Deref.IsExceptionDecl then [],cenv.g.exn_ty else generalizeTyconRef tcref
            let m = tycon.Range
            
            // Note: tycon.HasOverride only gives correct results after we've done the type augmentation 
            let hasExplicitObjectEqualsOverride = tycon.HasOverride cenv.g "Equals" [cenv.g.obj_ty]
            let hasExplicitGenericIEquatable = tcaug_has_nominal_interface cenv.g tcaug cenv.g.system_GenericIEquatable_tcref
            
            if hasExplicitGenericIEquatable then 
                errorR(Error(FSComp.SR.tcImplementsIEquatableExplicitly(tycon.DisplayName),m)); 

            // Note: only provide the equals method if Equals is not implemented explicitly, and
            // we're actually generating Hash/Equals for this type
            if not hasExplicitObjectEqualsOverride &&
                isSome tycon.GeneratedHashAndEqualsWithComparerValues then

                 let vspec1,vspec2 = Augment.MakeValsForEqualsAugmentation cenv.g tcref
                 tcaug.SetEquals (mkLocalValRef vspec1, mkLocalValRef vspec2);
                 if not tycon.IsExceptionDecl then 
                    PublishInterface cenv env.DisplayEnv tcref m true  (mkAppTy cenv.g.system_GenericIEquatable_tcref [typ])
                 PublishValueDefn cenv env ModuleOrMemberBinding vspec1;
                 PublishValueDefn cenv env ModuleOrMemberBinding vspec2;
                 Augment.MakeBindingsForEqualsAugmentation cenv.g tycon
            else []
        else []

end

module TyconConstraintInference = begin

    let InferSetOfTyconsSupportingComparable cenv (env: TcEnv) structuralTypes (tycons:Tycon list) =

        let g = cenv.g 
        let tab = (tycons,structuralTypes) ||> List.map2 (fun tycon c -> tycon.Stamp, (tycon,c)) |> Map.ofList 

        // Initially, assume the equality relation is available for all structural type definitions 
        let initialAssumedTycons = 
            set [ for tycon in tycons do 
                       if Augment.TyconIsCandidateForAugmentationWithCompare cenv.g tycon then 
                           yield tycon.Stamp ]

        // Initially, don't assume that the equality relation is dependent on any type varaibles
        let initialAsssumedTypars = Set.empty

        // Repeatedly eliminate structural type definitions whose structural component types no longer support 
        // comparison. On the way record type variables which are support the comparison relation.
        let rec loop (assumedTycons : Set) (assumedTypars: Set) =
            let assumedTyparsAcc = ref assumedTypars

            // Checks if a field type supports the 'comparison' constraint based on the assumptions about the type constructors
            // and type parameters.
            let rec checkIfFieldTypeSupportsComparison (tycon: Tycon) (ty: TType) =
                
                // Is the field type a type parameter?
                if isTyparTy cenv.g ty then 
                    let tp = (destTyparTy cenv.g ty)

                    // Look for an explicit 'comparison' constraint
                    if tp.Constraints |> List.exists (function TyparConstraint.SupportsComparison _ -> true | _ -> false) then 
                        true
                    
                    // Within structural types, type parameters can be optimistically assumed to have comparison
                    // We record the ones for which we have made this assumption.
                    elif tycon.TyparsNoRange |> List.exists (fun tp2 -> typarRefEq tp tp2) then 
                        assumedTyparsAcc := (!assumedTyparsAcc).Add(tp.Stamp);
                        true
                    
                    else
                        false
                
                else 
                    match ty with 
                    // Look for array, UIntPtr and IntPtr types
                    | SpecialComparableHeadType g tinst -> 
                        tinst |> List.forall (checkIfFieldTypeSupportsComparison  tycon)

                    // Otherwise its a nominal type
                    | _ -> 

                        if isAppTy g ty then 
                            let tcref,tinst = destAppTy g ty 
                            // Check the basic requirement - IComparable/IStructuralComparable or assumed-comparable
                            (if initialAssumedTycons.Contains tcref.Stamp then 
                                assumedTycons.Contains tcref.Stamp
                             else
                                ExistsSameHeadTypeInHierarchy g cenv.amap range0 ty g.mk_IComparable_ty   || 
                                ExistsSameHeadTypeInHierarchy g cenv.amap range0 ty g.mk_IStructuralComparable_ty)
                            &&
                            // Check it isn't ruled out by the user
                            not (HasFSharpAttribute g g.attrib_NoComparisonAttribute tcref.Attribs)
                            &&
                            // Check the structural dependencies
                            (tinst, tcref.TyparsNoRange) ||> List.lengthsEqAndForall2 (fun ty tp -> 
                                if tp.ComparisonConditionalOn || assumedTypars.Contains tp.Stamp then 
                                    checkIfFieldTypeSupportsComparison  tycon ty 
                                else 
                                    true) 
                        else
                            false

            let newSet = 
                assumedTycons |> Set.filter (fun tyconStamp -> 
                   let (tycon,structuralTypes) = tab.[tyconStamp] 
                   if cenv.g.compilingFslib && Augment.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && not (HasFSharpAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs) && not (HasFSharpAttribute g g.attrib_NoComparisonAttribute tycon.Attribs) then 
                       errorR(Error(FSComp.SR.tcFSharpCoreRequiresExplicit(),tycon.Range)); 

                   let res = (structuralTypes |> List.forall (fst >> checkIfFieldTypeSupportsComparison tycon))

                   // If the type was excluded, say why
                   if not res then 
                       match TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs with
                       | Some(true) -> 
                           match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsComparison tycon >> not) with
                           | None -> 
                               assert false
                               failwith "unreachble"
                           | Some (ty,_) -> 
                               if isTyparTy g ty then 
                                   errorR(Error(FSComp.SR.tcStructuralComparisonNotSatisfied1(tycon.DisplayName,NicePrint.prettyStringOfTy env.DisplayEnv ty),tycon.Range)); 
                               else 
                                   errorR(Error(FSComp.SR.tcStructuralComparisonNotSatisfied2(tycon.DisplayName,NicePrint.prettyStringOfTy env.DisplayEnv ty),tycon.Range)); 
                       | Some(false) -> 
                           ()
                       
                       | None -> 
                           match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsComparison tycon >> not) with
                           | None -> 
                               assert false
                               failwith "unreachble"
                           | Some (ty,_) -> 
                               // NOTE: these warnings are off by default - they are level 4 informational warnings
                               // PERF: this call to prettyStringOfTy is always being executed, even when the warning
                               // is not being reported (the normal case).
                               if isTyparTy g ty then 
                                   warning(Error(FSComp.SR.tcNoComparisonNeeded1(tycon.DisplayName, NicePrint.prettyStringOfTy env.DisplayEnv ty, tycon.DisplayName),tycon.Range)); 
                               else 
                                   warning(Error(FSComp.SR.tcNoComparisonNeeded2(tycon.DisplayName, NicePrint.prettyStringOfTy env.DisplayEnv ty, tycon.DisplayName),tycon.Range)); 

                                                      
                   res)

            if newSet = assumedTycons && assumedTypars = !assumedTyparsAcc then 
                newSet, !assumedTyparsAcc
            else 
                loop newSet !assumedTyparsAcc

        let uneliminatedTycons, assumedTyparsActual = loop initialAssumedTycons initialAsssumedTypars

        // OK, we're done, Record the results for the type variable which provide the support
        for tyconStamp in uneliminatedTycons do
            let (tycon,_) = tab.[tyconStamp] 
            for tp in tycon.Typars(tycon.Range) do
                if assumedTyparsActual.Contains(tp.Stamp) then 
                    tp.SetComparisonDependsOn true

        // Return the set of structural type definitions which support the relation
        uneliminatedTycons

    let InferSetOfTyconsSupportingEquatable cenv (env: TcEnv)  structuralTypes (tycons:Tycon list) =

        let g = cenv.g 
        let tab = (tycons,structuralTypes) ||> List.map2 (fun tycon c -> tycon.Stamp, (tycon,c)) |> Map.ofList 

        // Initially, assume the equality relation is available for all structural type definitions 
        let initialAssumedTycons = 
            set [ for tycon in tycons do 
                       if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon then 
                           yield tycon.Stamp ]
                           
        // Initially, don't assume that the equality relation is dependent on any type varaibles
        let initialAssumedTypars = Set.empty

        // Repeatedly eliminate structural type definitions whose structural component types no longer support 
        // equality. On the way add type variables which are support the equality relation
        let rec loop (assumedTycons : Set) (assumedTypars: Set) =
            let assumedTyparsAcc = ref assumedTypars
            
            // Checks if a field type supports the 'equality' constraint based on the assumptions about the type constructors
            // and type parameters.
            let rec checkIfFieldTypeSupportsEquality (tycon:Tycon) (ty: TType) =
                if isTyparTy cenv.g ty then 
                    let tp = (destTyparTy cenv.g ty)

                    // Look for an explicit 'equality' constraint
                    if tp.Constraints |> List.exists (function TyparConstraint.SupportsEquality _ -> true | _ -> false) then 
                        true

                    // Within structural types, type parameters can be optimistically assumed to have ewquality
                    // We record the ones for which we have made this assumption.
                    elif tycon.Typars(tycon.Range) |> List.exists (fun tp2 -> typarRefEq tp tp2) then                     
                        assumedTyparsAcc := (!assumedTyparsAcc).Add(tp.Stamp);
                        true
                    else
                        false

                else 
                    match ty with 
                    | SpecialEquatableHeadType g tinst -> 
                        tinst |> List.forall (checkIfFieldTypeSupportsEquality tycon)
                    | SpecialNotEquatableHeadType g -> 
                        false
                    | _ -> 
                        // Check the basic requirement - any types except those eliminated
                        if isAppTy g ty then
                            let tcref,tinst = destAppTy g ty
                            (if initialAssumedTycons.Contains tcref.Stamp then 
                                assumedTycons.Contains tcref.Stamp
                             elif Augment.TyconIsCandidateForAugmentationWithEquals g tcref.Deref then
                                isSome tcref.GeneratedHashAndEqualsWithComparerValues
                             else
                                true) 
                             &&
                             // Check it isn't ruled out by the user
                             not (HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs)
                             &&
                             // Check the structural dependencies
                             (tinst, tcref.TyparsNoRange) ||> List.lengthsEqAndForall2 (fun ty tp -> 
                                 if tp.EqualityConditionalOn || assumedTypars.Contains tp.Stamp then 
                                     checkIfFieldTypeSupportsEquality  tycon ty 
                                 else 
                                     true) 
                        else
                            false

            let newSet = 
                assumedTycons |> Set.filter (fun tyconStamp -> 
                   let (tycon,structuralTypes) = tab.[tyconStamp] 
                   if cenv.g.compilingFslib && Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon && not (HasFSharpAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs) && not (HasFSharpAttribute g g.attrib_NoEqualityAttribute tycon.Attribs) then 
                       errorR(Error(FSComp.SR.tcFSharpCoreRequiresExplicit(),tycon.Range)); 

                   // Remove structural types with incomparable elements from the assumedTycons
                   let res = (structuralTypes |> List.forall (fst >> checkIfFieldTypeSupportsEquality tycon))

                   // If the type was excluded, say why
                   if not res then 
                       match TryFindFSharpBoolAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs with
                       | Some(true) -> 
                           if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon then 
                               match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsEquality tycon >> not) with
                               | None -> 
                                   assert false
                                   failwith "unreachble"
                               | Some (ty,_) -> 
                                   if isTyparTy g ty then 
                                       errorR(Error(FSComp.SR.tcStructuralEqualityNotSatisfied1(tycon.DisplayName,NicePrint.prettyStringOfTy env.DisplayEnv ty),tycon.Range)); 
                                   else 
                                       errorR(Error(FSComp.SR.tcStructuralEqualityNotSatisfied2(tycon.DisplayName,NicePrint.prettyStringOfTy env.DisplayEnv ty),tycon.Range)); 
                           else
                               ()
                       | Some(false) -> 
                           ()
                       | None -> 
                           if Augment.TyconIsCandidateForAugmentationWithEquals cenv.g tycon then 
                               match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsEquality tycon >> not) with
                               | None -> 
                                   assert false
                                   failwith "unreachble"
                               | Some (ty,_) -> 
                                   if isTyparTy g ty then 
                                       warning(Error(FSComp.SR.tcNoEqualityNeeded1(tycon.DisplayName, NicePrint.prettyStringOfTy env.DisplayEnv ty, tycon.DisplayName),tycon.Range)); 
                                   else 
                                       warning(Error(FSComp.SR.tcNoEqualityNeeded2(tycon.DisplayName, NicePrint.prettyStringOfTy env.DisplayEnv ty, tycon.DisplayName),tycon.Range)); 

                                                      
                   res)

            if newSet = assumedTycons && assumedTypars = !assumedTyparsAcc then 
                newSet, !assumedTyparsAcc
            else 
                loop newSet !assumedTyparsAcc

        let uneliminatedTycons, assumedTyparsActual = loop initialAssumedTycons initialAssumedTypars

        // OK, we're done, Record the results for the type variable which provide the support
        for tyconStamp in uneliminatedTycons do
            let (tycon,_) = tab.[tyconStamp] 
            for tp in tycon.Typars(tycon.Range) do
                if assumedTyparsActual.Contains(tp.Stamp) then 
                    tp.SetEqualityDependsOn true

        // Return the set of structural type definitions which support the relation
        uneliminatedTycons

end
    

//-------------------------------------------------------------------------
// Helpers for modules, types and exception declarations
//------------------------------------------------------------------------- 

let ComputeModuleName (longPath: Ident list) = 
    if longPath.Length <> 1 then error(Error(FSComp.SR.tcInvalidModuleName(),(List.head longPath).idRange));
    longPath.Head 

let CheckForDuplicateConcreteType _cenv env nm m  = 
    let curr = GetCurrAccumulatedModuleOrNamespaceType env
    if Map.containsKey nm curr.AllEntitiesByCompiledAndLogicalMangledNames then 
        // Use 'error' instead of 'errorR' here to avoid cascading errors - see bug 1177 in FSharp 1.0 
        error (Duplicate(FSComp.SR.tcTypeExceptionOrModule(),nm,m))

let CheckForDuplicateModule _cenv env nm m  = 
    let curr = GetCurrAccumulatedModuleOrNamespaceType env
    if curr.ModulesAndNamespacesByDemangledName.ContainsKey(nm) then 
        errorR (Duplicate(FSComp.SR.tcTypeOrModule(),nm,m))


//-------------------------------------------------------------------------
// Bind exception definitions
//------------------------------------------------------------------------- 

module TcExceptionDeclarations = begin

    let private TcExnDefnCore cenv env parent tpenv (ExceptionDefnRepr(synAttrs,UnionCase(_,id,args,_,_,_),repr,doc,vis,m), scopem) =
        let attrs = TcAttributes cenv env AttributeTargets.ExnDecl synAttrs
        let args = match args with (UnionCaseFields args) -> args | _ -> error(Error(FSComp.SR.tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors(),m))
        let ad = env.eAccessRights
        
        let args' = List.mapi (fun i fdef -> TcRecdUnionAndEnumDeclarations.TcAnonFieldDecl cenv env parent tpenv ("Data"^string i) fdef) args
        if not (String.isUpper id.idText) then errorR(NotUpperCaseConstructor(m));
        let vis,cpath = ComputeAccessAndCompPath env None m vis parent
        let vis = TcRecdUnionAndEnumDeclarations.CombineReprAccess parent vis
        let exnc = 
          match repr with 
          | Some longId ->
              match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with
              | Item.ExnCase exnc, [] -> 
                  CheckTyconAccessible m env.eAccessRights exnc |> ignore;
                  if List.length args' <> 0 then 
                    errorR (Error(FSComp.SR.tcExceptionAbbreviationsShouldNotHaveArgumentList(),m));
                  NewExn cpath id vis (TExnAbbrevRepr exnc) attrs (doc.ToXmlDoc())
              | Item.CtorGroup(_,meths) , [] -> 
                  // REVIEW: check this really is an exception type 
                  match args' with 
                  | [] -> ()
                  | _ -> error (Error(FSComp.SR.tcAbbreviationsFordotNetExceptionsCannotTakeArguments(),m));
                  let candidates = 
                      meths |> List.filter (fun minfo -> 
                          minfo.NumArgs = [args'.Length] &&
                          minfo.GenericArity = 0) 
                  match candidates with 
                  | [minfo] -> 
                      let err() = 
                          Error(FSComp.SR.tcExceptionAbbreviationsMustReferToValidExceptions(),m)
                      if not (TypeDefinitelySubsumesTypeNoCoercion 0 cenv.g cenv.amap m cenv.g.exn_ty minfo.EnclosingType) then 
                        errorR(err());
                      let tref = 
                          match minfo with 
                          | ILMeth(_,minfo,_) -> minfo.ILTypeRef
                          | FSMeth _ -> 
                              match (tcrefOfAppTy cenv.g minfo.EnclosingType).CompiledRepresentation with 
                              | CompiledTypeRepr.ILAsmNamed (tref,_,_) -> tref
                              | _ -> 
                                  error (err()) 
                          | _ -> error (err()) 
                      NewExn  cpath id vis (TExnAsmRepr tref) attrs (doc.ToXmlDoc())
                  | _ -> 
                      error (Error(FSComp.SR.tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor(),m))
              | _ ->
                  error (Error(FSComp.SR.tcNotAnException(),m))
          | None -> 
             NewExn cpath id vis (TExnFresh (MakeRecdFieldsTable args')) attrs (doc.ToXmlDoc())
        
        let tcaug = exnc.TypeContents
        tcaug.tcaug_super <- Some cenv.g.exn_ty;

        CheckForDuplicateConcreteType cenv env (id.idText ^ "Exception") id.idRange;
        CheckForDuplicateConcreteType cenv env id.idText id.idRange;
        PublishTypeDefn cenv env exnc;

        let structuralTypes = args' |> List.map (fun rf -> (rf.FormalType, rf.Range))
        let scSet = TyconConstraintInference.InferSetOfTyconsSupportingComparable cenv env [structuralTypes] [exnc]
        let seSet = TyconConstraintInference.InferSetOfTyconsSupportingEquatable cenv env [structuralTypes] [exnc]

        // Augment the exception constructor with comparison and hash methods if needed 
        let binds = 
          match exnc.ExceptionInfo with 
          | TExnAbbrevRepr _ | TExnNone | TExnAsmRepr _ -> []
          | TExnFresh _ -> 
              AddAugmentationDeclarations.AddGenericHashAndComparisonDeclarations cenv env scSet seSet exnc
              AddAugmentationDeclarations.AddGenericHashAndComparisonBindings cenv exnc
        binds,
        exnc,
        AddLocalExnDefn cenv.tcSink scopem exnc (AddLocalTycons cenv.g cenv.amap scopem [exnc] env)

    let TcExnDefn cenv env parent tpenv (ExceptionDefn(core,aug,m),scopem) = 
        let binds1,exnc,env = TcExnDefnCore cenv env parent tpenv (core,scopem)
        let binds2,env = TcTyconMemberDefns cenv env parent m scopem [TyconMemberData(ModuleOrMemberBinding, (mkLocalEntityRef exnc), None, NoSafeInitInfo, [], aug, m, NoNewSlots)]
        // Augment types with references to values that implement the pre-baked semantics of the type
        let binds3 = AddAugmentationDeclarations.AddGenericEqualityBindings cenv env exnc
        binds1 @ binds2 @ binds3,exnc,env

    let TcExnSignature cenv env parent tpenv (ExceptionSig(core,aug,_),scopem) = 
        let binds,exnc,env = TcExnDefnCore cenv env parent tpenv (core,scopem)
        let ecref = mkLocalEntityRef exnc
        let vals,_ = TcTyconMemberSpecs cenv env (ContainerInfo(parent,Some(MemberOrValContainerInfo(ecref,None,None,NoSafeInitInfo,[])))) ModuleOrMemberBinding tpenv aug
        binds,vals,ecref,env

end

/// The core syntactic input to the type checking of type definitions.
///
/// TyconDefnCore(info,repr,m,preEstablishedHasDefaultCtor,hasSelfReferentialCtor)
type TyconDefnCore = 
    TyconDefnCore of SynComponentInfo * SynTypeDefnSimpleRepr * (SynType * range) list * bool * bool 

/// Same as TyconDefnCore but with an integer index.
///
/// TyconDefnCoreIndexed(info,repr,m,preEstablishedHasDefaultCtor,hasSelfReferentialCtor,i)
type TyconDefnCoreIndexed = 
    TyconDefnCoreIndexed of 
        SynComponentInfo * SynTypeDefnSimpleRepr * (SynType * range) list * bool *bool * int

/// Bind type definitions
///
/// We first establish the cores of a set of type definitions (i.e. everything
/// about the type definitions that doesn't involve values or expressions)
///
/// This is a non-trivial multi-phase algorithm. The technique used
/// is to gradually "fill in" the fields of the type constructors. 
///
/// This use of mutation is very problematic. This has many dangers, 
/// since the process of filling in the fields
/// involves creating, traversing and analyzing types that may recursively
/// refer to the types being defined. However a functional version of this
/// would need to re-implement certain type relations to work over a 
/// partial representation of types.
module EstablishTypeDefinitionCores = begin
 
    /// Compute the mangled name of a type definition. 'doErase' is true for all type definitions except type abbreviations.
    let private ComputeTyconName (longPath: Ident list, doErase:bool, typars: Typars) = 
        if longPath.Length <> 1 then error(Error(FSComp.SR.tcInvalidTypeExtension(),longPath.Head.idRange));
        let id = longPath.Head
        let erasedArity = 
            if doErase then typars |> Seq.sumBy (fun tp -> if tp.IsErased then 0 else 1) 
            else typars.Length
        mkSynId id.idRange (if erasedArity = 0 then id.idText else id.idText + "`" + string erasedArity)
 
    let private GetTyconAttribs g attrs = 
        let hasClassAttr         = HasFSharpAttribute g g.attrib_ClassAttribute attrs
        let hasAbstractClassAttr = HasFSharpAttribute g g.attrib_AbstractClassAttribute attrs
        let hasInterfaceAttr     = HasFSharpAttribute g g.attrib_InterfaceAttribute attrs
        let hasStructAttr        = HasFSharpAttribute g g.attrib_StructAttribute attrs
        let hasMeasureAttr       = HasFSharpAttribute g g.attrib_MeasureAttribute attrs
        (hasClassAttr,hasAbstractClassAttr,hasInterfaceAttr,hasStructAttr,hasMeasureAttr)

    //-------------------------------------------------------------------------
    // Type kind inference 
    //------------------------------------------------------------------------- 
       
    let private InferTyconKind g (kind,attrs,slotsigs,fields,inSig,isConcrete,m) =
        let (hasClassAttr,hasAbstractClassAttr,hasInterfaceAttr,hasStructAttr,hasMeasureAttr) = GetTyconAttribs g attrs
        let bi b = (if b then 1 else 0)
        if (bi hasClassAttr + bi hasInterfaceAttr + bi hasStructAttr + bi hasMeasureAttr) > 1 ||
           (bi hasAbstractClassAttr + bi hasInterfaceAttr + bi hasStructAttr + bi hasMeasureAttr) > 1 then
           error(Error(FSComp.SR.tcAttributesOfTypeSpecifyMultipleKindsForType(),m));
        
        match kind with 
        | TyconUnspecified ->
            if hasClassAttr || hasAbstractClassAttr || hasMeasureAttr then TyconClass        
            elif hasInterfaceAttr then TyconInterface
            elif hasStructAttr then TyconStruct
            elif isConcrete || nonNil fields then TyconClass
            elif isNil slotsigs && inSig  then TyconHiddenRepr
            else TyconInterface
        | k -> 
            if hasClassAttr && not (match k with TyconClass -> true | _ -> false) || 
               hasMeasureAttr && not (match k with TyconClass | TyconAbbrev | TyconHiddenRepr -> true | _ -> false)  || 
               hasInterfaceAttr && not (match k with TyconInterface -> true | _ -> false) || 
               hasStructAttr && not (match k with TyconStruct -> true | _ -> false) then 
                error(Error(FSComp.SR.tcKindOfTypeSpecifiedDoesNotMatchDefinition(),m));
            k


    let private (|TyconCoreAbbrevThatIsReallyAUnion|_|) (hasMeasureAttr,envinner,id:Ident) synTyconRepr =
        match synTyconRepr with 
        | SynTypeDefnSimpleRepr.TypeAbbrev(_, SynType.LongIdent(LongIdentWithDots([unionCaseName],_)),m) 
                              when 
                                (not hasMeasureAttr && 
                                 (isNil (LookupTypeNameInEnvNoArity OpenQualified unionCaseName.idText envinner.eNameResEnv) || 
                                  id.idText = unionCaseName.idText)) -> 
            Some(unionCaseName,m)
        | _ -> 
            None

    // Used when determining if a structural type supports structual comparison
    let private GetStructuralElementsOfTyconDefn cenv env tpenv (TyconDefnCoreIndexed(_,synTyconRepr,_,_,_,_)) tycon = 
        let thisTyconRef = mkLocalTyconRef tycon
        let m = tycon.Range
        let env = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) env
        let env = MakeInnerEnvForTyconRef cenv env thisTyconRef false 
        [ match synTyconRepr with 
          | SynTypeDefnSimpleRepr.None _ -> ()
          | SynTypeDefnSimpleRepr.Union (_,unionCases,_) -> 
              for (UnionCase (_,_,args,_,_,m)) in unionCases do 
              match args with
              | UnionCaseFields flds -> 
                  for (Field(_,_,_,ty,_,_,_,m)) in flds do 
                      let ty',_ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType env tpenv ty
                      yield (ty',m)
              | UnionCaseFullType (ty,arity) -> 
                  let ty',_ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType env tpenv ty
                  let argtysl,_ = GetTopTauTypeInFSharpForm cenv.g (arity |> TranslateTopValSynInfo m (TcAttributes cenv env) |> TranslatePartialArity []).ArgInfos ty' m
                  if argtysl.Length > 1 then 
                      errorR(Error(FSComp.SR.tcIllegalFormForExplicitTypeDeclaration(),m));   
                  for argtys in argtysl do
                    for (argty,_) in argtys do
                      yield (argty ,m)

          | SynTypeDefnSimpleRepr.General (_,_,_,fields,_,_,implicitCtorSynPats,_) when tycon.IsFSharpStructOrEnumTycon -> // for structs
              for (Field(_,isStatic,_,ty,_,_,_,m)) in fields do 
                  if not isStatic  then 
                      let ty',_ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType env tpenv ty
                      yield (ty',m)

              match implicitCtorSynPats with
              | None -> ()
              | Some spats -> 
                  let ctorArgNames,(_,names,_) = TcSimplePatsOfUnknownType cenv true NoCheckCxs env tpenv (SynSimplePats.SimplePats (spats,m))
                  for arg in ctorArgNames do
                      let ty = names.[arg].Type
                      let m = names.[arg].Ident.idRange
                      if nonNil (ListSet.subtract typarEq  (freeInTypeLeftToRight cenv.g false ty) tycon.TyparsNoRange) then
                          errorR(Error(FSComp.SR.tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly(),m));   
                      yield (ty, m)

          | SynTypeDefnSimpleRepr.Record (_,fields,_) -> 
              for (Field(_,_,_,ty,_,_,_,m)) in fields do 
                  let ty',_ = TcTypeAndRecover cenv NoNewTypars NoCheckCxs ItemOccurence.UseInType env tpenv ty
                  yield (ty',m)
          | _ ->
              () ]

    /// Establish 'type  C < T1... TN >  =  ...' including 
    ///    - computing the mangled name for C
    /// but 
    ///    - we don't yet 'properly' establish constraints on type parameters
    let private TcTyconDefnCore_Phase0_BuildInitialTycon cenv env parent (TyconDefnCoreIndexed(synTyconInfo,synTyconRepr,_,preEstablishedHasDefaultCtor,hasSelfReferentialCtor,_)) = 
        let (ComponentInfo(_,synTypars, _,id,doc,preferPostfix, vis,_)) = synTyconInfo
        let checkedTypars = TcTyparDecls cenv env synTypars
        id |> List.iter (CheckNamespaceModuleOrTypeName cenv.g);
        let id = ComputeTyconName (id, (match synTyconRepr with SynTypeDefnSimpleRepr.TypeAbbrev _ -> false | _ -> true), checkedTypars)

        // Augmentations of type definitions are allowed within the same file as long as no new type representation or abbreviation is given 
        CheckForDuplicateConcreteType cenv env id.idText id.idRange;
        CheckForDuplicateModule cenv env id.idText id.idRange;
        let vis,cpath = ComputeAccessAndCompPath env None id.idRange vis parent

        // Establish the visibility of the representation, e.g.
        //   type R = 
        //      private { f:int }
        //      member x.P = x.f + x.f
        let visOfRepr = 
            match synTyconRepr with 
            | SynTypeDefnSimpleRepr.None _ -> None
            | SynTypeDefnSimpleRepr.TypeAbbrev _ -> None
            | SynTypeDefnSimpleRepr.Union (vis,_,_) -> vis
            | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> None
            | SynTypeDefnSimpleRepr.Record (vis,_,_) -> vis
            | SynTypeDefnSimpleRepr.General _ -> None
            | SynTypeDefnSimpleRepr.Enum _ -> None
         
        let visOfRepr,_ = ComputeAccessAndCompPath env None id.idRange visOfRepr parent
        let visOfRepr = combineAccess vis visOfRepr 
        // If we supported nested types and modules then additions would be needed here
        let lmtyp = notlazy (NewEmptyModuleOrNamespaceType ModuleOrType)
        NewTycon(cpath, id.idText, id.idRange, vis, visOfRepr, TyparKind.Type, LazyWithContext.NotLazy checkedTypars, doc.ToXmlDoc(), preferPostfix, preEstablishedHasDefaultCtor, hasSelfReferentialCtor, lmtyp)

    //-------------------------------------------------------------------------
    /// Establishing type definitions: early phase: work out the basic kind of the type definition
    ///
    ///    On entry: the Tycon for the type definition has been created but many of its fields are not
    ///              yet filled in.
    ///    On exit: the entity_tycon_repr field of the tycon has been filled in with a dummy value that
    ///             indicates the kind of the type constructor
    /// Also, some adhoc checks are made.
    ///
    ///  synTyconInfo: Syntactic AST for the name, attributes etc. of the type constructor
    ///  synTyconRepr: Syntactic AST for the RHS of the type definition
    let private TcTyconDefnCore_Phase1_EstablishBasicKind cenv inSig envinner (TyconDefnCoreIndexed(synTyconInfo,synTyconRepr,_,_,_,_)) (tycon:Tycon) = 
        let (ComponentInfo(synAttrs,typars, _,_, _, _,_,_)) = synTyconInfo
        let m = tycon.Range
        let id = tycon.Id
        // 'Check' the attributes. We return the results to avoid having to re-check them in all other phases. 

        let attrs = TcAttributes cenv envinner AttributeTargets.TyconDecl synAttrs
        let hasMeasureAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute attrs

        // Set the compiled name, if any
        tycon.Data.entity_compiled_name <- TryFindFSharpStringAttribute cenv.g cenv.g.attrib_CompiledNameAttribute attrs 

        if hasMeasureAttr then 
            tycon.Data.entity_kind <- TyparKind.Measure;
            if nonNil typars then error(Error(FSComp.SR.tcMeasureDefinitionsCannotHaveTypeParameters(),m));

        let repr = 
            match synTyconRepr with 
            | SynTypeDefnSimpleRepr.None m -> 
                // Run InferTyconKind to raise errors on inconsistent attribute sets
                InferTyconKind cenv.g (TyconHiddenRepr,attrs,[],[],inSig,true,m)  |> ignore
                if not inSig && not hasMeasureAttr then 
                    errorR(Error(FSComp.SR.tcTypeRequiresDefinition(),m));
                if hasMeasureAttr then 
                    TFsObjModelRepr { fsobjmodel_kind=TTyconClass; 
                                      fsobjmodel_vslots=[];
                                      fsobjmodel_rfields=MakeRecdFieldsTable [] }
                else 
                    TNoRepr

            | TyconCoreAbbrevThatIsReallyAUnion (hasMeasureAttr,envinner,id) (_,m)
            | SynTypeDefnSimpleRepr.Union (_,_,m) -> 
                // Run InferTyconKind to raise errors on inconsistent attribute sets
                InferTyconKind cenv.g (TyconUnion,attrs,[],[],inSig,true,m) |> ignore
                // Note: the table of union cases is initially empty
                MakeUnionRepr []

            | SynTypeDefnSimpleRepr.TypeAbbrev _  -> 
                // Run InferTyconKind to raise errors on inconsistent attribute sets
                InferTyconKind cenv.g (TyconAbbrev,attrs,[],[],inSig,true,m) |> ignore
                TNoRepr

            | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s,m) -> 
                // Run InferTyconKind to raise errors on inconsistent attribute sets
                InferTyconKind cenv.g (TyconILAssemblyCode,attrs,[],[],inSig,true,m) |> ignore
                TAsmRepr s

            | SynTypeDefnSimpleRepr.Record (_,_,m) -> 
                // Run InferTyconKind to raise errors on inconsistent attribute sets
                InferTyconKind cenv.g (TyconRecord,attrs,[],[],inSig,true,m) |> ignore
                // Note: the table of record fields is initially empty
                TRecdRepr (MakeRecdFieldsTable  [])

            | SynTypeDefnSimpleRepr.General (kind,_,slotsigs,fields,isConcrete,_,_,_) ->
                let kind = InferTyconKind cenv.g (kind,attrs,slotsigs,fields,inSig,isConcrete,m)
                match kind with 
                | TyconHiddenRepr -> 
                    TNoRepr
                | _ -> 
                    let kind = 
                        match kind with
                        | TyconClass               -> TTyconClass
                        | TyconInterface           -> TTyconInterface
                        | TyconDelegate _          -> TTyconDelegate (mkSlotSig("Invoke",cenv.g.unit_ty,[],[],[], None))
                        | TyconStruct              -> TTyconStruct 
                        | _ -> error(InternalError("should have inferred tycon kind",m))

                    let repr = { fsobjmodel_kind=kind; 
                                 fsobjmodel_vslots=[];
                                 fsobjmodel_rfields=MakeRecdFieldsTable [] }
                    TFsObjModelRepr repr

            | SynTypeDefnSimpleRepr.Enum _ -> 
                let kind = TTyconEnum
                let repr = { fsobjmodel_kind=kind; 
                             fsobjmodel_vslots=[];
                             fsobjmodel_rfields=MakeRecdFieldsTable [] }
                TFsObjModelRepr repr

        // OK, now fill in the (partially computed) type representation
        tycon.Data.entity_tycon_repr <- repr
        attrs

#if EXTENSIONTYPING
    /// Get the items on the r.h.s. of a 'type X = ABC<...>' definition
    let private TcTyconDefnCore_GetGenerateDeclaration_Rhs rhsType =
        match rhsType with 
        | SynType.App (SynType.LongIdent(LongIdentWithDots(tc,_)),_,args,_commas,_,_postfix,m) -> Some(tc,args,m)
        | SynType.LongIdent (LongIdentWithDots(tc,_) as lidwd) -> Some(tc,[],lidwd.Range)
        | SynType.LongIdentApp (SynType.LongIdent (LongIdentWithDots(tc,_)),LongIdentWithDots(longId,_),_,args,_commas,_,m) -> Some(tc@longId,args,m)
        | _ -> None

    /// Check whether 'type X = ABC<...>' is a generative provided type definition
    let private TcTyconDefnCore_TryAsGenerateDeclaration cenv envinner tpenv (tycon:Tycon, rhsType) =

        let tcref = mkLocalTyconRef tycon
        match TcTyconDefnCore_GetGenerateDeclaration_Rhs rhsType with 
        | None -> None
        | Some (tc,args,m) -> 
            let ad = envinner.eAccessRights
            match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInType OpenQualified envinner.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.Yes with
            | Result tcrefBeforeStaticArguments when 
                  tcrefBeforeStaticArguments.IsProvided && 
                  not tcrefBeforeStaticArguments.IsErased -> 

                    let typeBeforeArguments = 
                        match tcrefBeforeStaticArguments.TypeReprInfo with 
                        | TProvidedTypeExtensionPoint info -> info.ProvidedType
                        | _ -> failwith "unreachable"

                    if ExtensionTyping.IsGeneratedTypeDirectReference (typeBeforeArguments, m) then 
                        let optGeneratedTypePath = Some (mangledPathOfCompPath tcref.CompilationPath @ [ tcref.LogicalName ])
                        let _hasNoArgs,providedTypeAfterStaticArguments,checkTypeName = TcProvidedTypeAppToStaticConstantArgs cenv envinner optGeneratedTypePath tpenv tcrefBeforeStaticArguments args m
                        let isGenerated = providedTypeAfterStaticArguments.PUntaint((fun st -> not st.IsErased),m)
                        if isGenerated  then 
                           Some (tcrefBeforeStaticArguments, providedTypeAfterStaticArguments, checkTypeName, args, m)
                        else
                           None  // The provided type (after ApplyStaticArguments) must also be marked 'IsErased=false' 
                    else 
                        // This must be a direct reference to a generated type, otherwise it is a type abbreviation
                        None
            | _ -> 
                None


    /// Check and establish a 'type X = ABC<...>' provided type definition
    let private TcTyconDefnCore_Phase2_EstablishDeclarationForGeneratedSetOfTypes cenv inSig (tycon:Tycon, rhsType:SynType, tcrefForContainer:TyconRef, theRootType:Tainted, checkTypeName, args, m) =

        let tcref = mkLocalTyconRef tycon
        try 
            let resolutionEnvironment  = 

                if nonNil args then 
                   checkTypeName()
                let resolutionEnvironment = 
                    match tcrefForContainer.TypeReprInfo with 
                    | TProvidedTypeExtensionPoint info -> info.ResolutionEnvironment
                    | _ -> failwith "unreachable"
                resolutionEnvironment

            // Build up a mapping from System.Type --> TyconRef/ILTypeRef, to allow reverse-mapping
            // of types

            // NOTE: for the purposes of remapping the closure of generated types, the FullName is sufficient.
            // We do _not_ rely on object identity or any other notion of equivalence provided by System.Type
            // itself. The mscorlib implementations of System.Type equality relations a very suspect, for
            // example RuntimeType overrides the equality relation to be reference equality for the Equals(object)
            // override, but the other subtypes of System.Type do not, making the relation non-reflecive.
            //
            // Further, avoiding reliance on canonicalization (UnderlyingSystemType) or System.Type object identity means that 
            // providers can implement wrap-and-filter "views" over existing System.Type clusters without needing
            // to preserve object identity when presenting the types to the F# compiler.

            let previousContext = (theRootType.PApply ((fun x -> x.Context), m)).PUntaint ((fun x -> x), m)
            let lookupILTypeRef, lookupTyconRef =
                match previousContext with
                | NoEntries -> 
                    Dictionary(providedSystemTypeComparer), Dictionary(providedSystemTypeComparer)
                | Entries (lookupILTR, lookupILTCR) ->
                    // REVIEW: do we really need a lazy dict for this? How much time are we saving during remap?
                    lookupILTR, Lazy.force(lookupILTCR)
                    
            let ctxt = ProvidedTypeContext.Create(lookupILTypeRef, lookupTyconRef)

            // Create a new provided type which captures the reverse-reampping tables.
            let theRootTypeWithRemapping = theRootType.PApply ((fun x -> ProvidedType.ApplyContext(x,ctxt)), m)

            let isRootGenerated,rootProvAssemStaticLinkInfoOpt = 
                let stRootAssembly = theRootTypeWithRemapping.PApply((fun st -> st.Assembly),m)
                cenv.amap.assemblyLoader.GetProvidedAssemblyInfo (m, stRootAssembly)
            let isRootGenerated = isRootGenerated || theRootTypeWithRemapping.PUntaint((fun st -> not st.IsErased),m)

            if not isRootGenerated then 
                let desig = theRootTypeWithRemapping.TypeProviderDesignation
                let nm = theRootTypeWithRemapping.PUntaint((fun st -> st.FullName),m)
                error(Error(FSComp.SR.etErasedTypeUsedInGeneration(desig,nm),m))

            // In compiled code, all types in the set of generated types end up being both generated and relocated, unless relocation is suppressed
            let isForcedSuppressRelocate = theRootTypeWithRemapping.PUntaint((fun st -> st.IsSuppressRelocate),m) 
            if isForcedSuppressRelocate && canAccessFromEverywhere tycon.Accessibility && not cenv.isScript then 
                errorR(Error(FSComp.SR.tcGeneratedTypesShouldBeInternalOrPrivate(),tcref.Range))

            let isSuppressRelocate = cenv.g.isInteractive || isForcedSuppressRelocate
    
            // Adjust the representation of the container type
            let repr = Construct.NewProvidedTyconRepr(resolutionEnvironment,theRootTypeWithRemapping,
                                                      Import.ImportProvidedType cenv.amap m,
                                                      isSuppressRelocate, 
                                                      m=m)
            tycon.Data.entity_tycon_repr <- repr
            // Record the details so we can map System.Type --> TyconRef
            let ilOrigRootTypeRef = GetOriginalILTypeRefOfProvidedType (theRootTypeWithRemapping, m)
            theRootTypeWithRemapping.PUntaint ((fun st -> ignore(lookupTyconRef.Remove(st.RawSystemType)) ; lookupTyconRef.Add(st.RawSystemType, tcref)), m)

            // Record the details so we can map System.Type --> ILTypeRef, including the relocation if any
            if not isSuppressRelocate then 
                let ilTgtRootTyRef = tycon.CompiledRepresentationForNamedType
                theRootTypeWithRemapping.PUntaint ((fun st -> ignore(lookupILTypeRef.Remove(st.RawSystemType)) ; lookupILTypeRef.Add(st.RawSystemType, ilTgtRootTyRef)), m)


            // Iterate all nested types and force their embedding, to populate the mapping from System.Type --> TyconRef/ILTypeRef.
            // This is only needed for generated types, because for other types the System.Type objects self-describe
            // their corresponding F# type.
            let rec doNestedType (eref: EntityRef) (st: Tainted) = 

                // Check the type is a generated type
                let isGenerated,provAssemStaticLinkInfoOpt = 
                    let stAssembly = st.PApply((fun st -> st.Assembly),m)
                    cenv.amap.assemblyLoader.GetProvidedAssemblyInfo (m, stAssembly)

                let isGenerated = isGenerated || st.PUntaint((fun st -> not st.IsErased),m)

                if not isGenerated then 
                    let desig = st.TypeProviderDesignation
                    let nm = st.PUntaint((fun st -> st.FullName),m)
                    error(Error(FSComp.SR.etErasedTypeUsedInGeneration(desig,nm),m))

                // Embed the type into the module we're compiling
                let cpath = mkNestedCPath eref.CompilationPath eref.LogicalName ModuleOrNamespaceKind.ModuleOrType
                let access = combineAccess tycon.Accessibility (if st.PUntaint((fun st -> st.IsPublic || st.IsNestedPublic), m) then taccessPublic else taccessPrivate cpath)

                let nestedTycon = Construct.NewProvidedTycon(resolutionEnvironment, st, 
                                                             Import.ImportProvidedType cenv.amap m, 
                                                             isSuppressRelocate, 
                                                             m=m, cpath=cpath, access = access)
                eref.ModuleOrNamespaceType.AddProvidedTypeEntity(nestedTycon)

                let nestedTyRef = eref.MkNestedTyconRef nestedTycon
                let ilOrigTypeRef = GetOriginalILTypeRefOfProvidedType (st, m)
                                
                // Record the details so we can map System.Type --> TyconRef
                st.PUntaint ((fun st -> ignore(lookupTyconRef.Remove(st.RawSystemType)) ; lookupTyconRef.Add(st.RawSystemType, nestedTyRef)), m)

                if isGenerated then 
                    let ilTgtTyRef = nestedTycon.CompiledRepresentationForNamedType
                    // Record the details so we can map System.Type --> ILTypeRef
                    st.PUntaint ((fun st -> ignore(lookupILTypeRef.Remove(st.RawSystemType)) ; lookupILTypeRef.Add(st.RawSystemType, ilTgtTyRef)), m)

                    // Record the details so we can build correct ILTypeDefs during static linking rewriting
                    if not isSuppressRelocate then 
                        match provAssemStaticLinkInfoOpt with 
                        | Some provAssemStaticLinkInfo -> provAssemStaticLinkInfo.ILTypeMap.[ilOrigTypeRef] <- ilTgtTyRef
                        | None -> ()
                       
                    ProviderGeneratedType(ilOrigTypeRef, ilTgtTyRef, doNestedTypes nestedTyRef st)
                else
                    ProviderGeneratedType(ilOrigTypeRef, ilOrigTypeRef, doNestedTypes nestedTyRef st)


                //System.Diagnostics.Debug.Assert eref.TryDeref.IsSome

            and doNestedTypes (eref: EntityRef) (st: Tainted) =
                st.PApplyArray((fun st -> st.GetAllNestedTypes()), "GetAllNestedTypes", m)
                |> Array.map (doNestedType eref)
                |> Array.toList

            let nested = doNestedTypes tcref theRootTypeWithRemapping 
            if not isSuppressRelocate then 

                let ilTgtRootTyRef = tycon.CompiledRepresentationForNamedType
                match rootProvAssemStaticLinkInfoOpt with 
                | Some provAssemStaticLinkInfo -> provAssemStaticLinkInfo.ILTypeMap.[ilOrigRootTypeRef] <- ilTgtRootTyRef
                | None -> ()

                if not inSig then 
                    cenv.amap.assemblyLoader.RecordGeneratedTypeRoot (ProviderGeneratedType(ilOrigRootTypeRef, ilTgtRootTyRef, nested))

        with e -> 
            errorRecovery e rhsType.Range; 
#endif

    /// Establish any type abbreviations
    ///
    /// e.g. for  
    ///    type B<'a when 'a :  C> = DDD of C
    ///    and  C = B
    ///
    /// we establish
    ///
    ///   Entity('B) 
    ///       TypeAbbrev = TType_app(Entity('int'),[])
    ///
    /// and for
    ///
    ///    type C = B
    ///
    /// we establish
    ///       TypeAbbrev = TType_app(Entity('B'),[])
    ///
    /// Note that for 
    ///              type PairOfInts = int * int
    /// then after running this phase and checking for cycles, operations 
    // such as 'isTupleTy' will return reliable results, e.g. isTupleTy on the 
    /// TAST type for 'PairOfInts' will report 'true' 
    //
    let private TcTyconDefnCore_Phase2_Phase4_EstablishAbbreviations cenv envinner inSig tpenv pass (TyconDefnCoreIndexed(_,synTyconRepr,_,_,_,_)) (tycon:Tycon) (checkedAttrs:Attribs) =
        let m = tycon.Range
        let checkCxs = if (pass = SecondPass) then CheckCxs else NoCheckCxs
        let firstPass = (pass = FirstPass)
        try 
            let id = tycon.Id
            let thisTyconRef = mkLocalTyconRef tycon
            let attrs = checkedAttrs

            let hasMeasureAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute attrs
            let hasMeasureableAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureableAttribute attrs
            let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envinner
            let envinner = MakeInnerEnvForTyconRef cenv envinner thisTyconRef false 

            match synTyconRepr with 

            // This unfortunate case deals with "type x = A" 
            // In F# this only defines a new type if A is not in scope 
            // as a type constructor, or if the form type A = A is used. 
            // "type x = | A" can always be used instead. 
            | TyconCoreAbbrevThatIsReallyAUnion (hasMeasureAttr,envinner,id) _ -> ()
            
            | SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.Ok, rhsType,m) ->

#if EXTENSIONTYPING
              // Check we have not already decided that this is a generative provided type definition. If we have already done this (i.e. this is the second pass
              // for a generative provided type definition, then there is no more work to do).
              if (match tycon.Data.entity_tycon_repr with TNoRepr -> true | _ -> false) then 

                // Determine if this is a generative type definition.
                match TcTyconDefnCore_TryAsGenerateDeclaration cenv envinner tpenv (tycon, rhsType) with 
                | Some (tcrefForContainer, providedTypeAfterStaticArguments, checkTypeName, args, m) ->
                   // If this is a generative provided type definition then establish the provided type and all its nested types. Only do this on the first pass.
                   if firstPass then 
                       TcTyconDefnCore_Phase2_EstablishDeclarationForGeneratedSetOfTypes cenv inSig (tycon, rhsType, tcrefForContainer, providedTypeAfterStaticArguments, checkTypeName, args, m)
                | None -> 
#else
                  ignore inSig 
#endif

                  // This case deals with ordinary type and measure abbreviations 
                  if not hasMeasureableAttr then 
                    let kind = if hasMeasureAttr then TyparKind.Measure else TyparKind.Type
                    let ty,_ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars checkCxs ItemOccurence.UseInType envinner tpenv rhsType

                    if not firstPass then 
                        let ftyvs = freeInTypeLeftToRight cenv.g false ty 
                        let typars = tycon.Typars(m)
                        if ftyvs.Length <> typars.Length then 
                            errorR(Deprecated(FSComp.SR.tcTypeAbbreviationHasTypeParametersMissingOnType(),tycon.Range))
                        //elif not ((ftyvs,typars) ||> List.forall2 typarEq) then 
                        //    warning(Deprecated("The declared type parameters of this type abbreviation are not declared in the same order they are used in the type being abbreviated. Consider reordering the type parameters, or use a concrete type definition that wraps an underlying type, such as 'type C<'a,'b> = C of ...'",tycon.Range))

                    if firstPass then
                        tycon.Data.entity_tycon_abbrev <- Some ty

            | _ -> ()
        
        with e -> 
            errorRecovery e m

    // Third phase: check and publish the supr types. Run twice, once before constraints are established
    // and once after
    let private TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes cenv envinner tpenv inSig typeDefCores (tycons:Tycon list) pass (checkedAttrsList:Attribs list) = 
        let checkCxs = if (pass = SecondPass) then CheckCxs else NoCheckCxs
        let firstPass = (pass = FirstPass)

        // Publish the immediately declared interfaces. 
        let implementsL = 
            (typeDefCores,tycons,checkedAttrsList) |||> List.map3 (fun (TyconDefnCoreIndexed(_,synTyconRepr,explicitImplements,_,_,_)) tycon checkedAttrs -> 
                let m = tycon.Range
                let tcref = mkLocalTyconRef tycon
                let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envinner
                let envinner = MakeInnerEnvForTyconRef cenv envinner tcref false 
                
                let implementedTys,_ = List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkCxs ItemOccurence.UseInType envinner)) tpenv explicitImplements

                let attrs = checkedAttrs

                if firstPass then 
                    tycon.Data.entity_attribs <- attrs

                let implementedTys,inheritedTys = 
                    match synTyconRepr with 
                    | SynTypeDefnSimpleRepr.General (kind,inherits,slotsigs,fields,isConcrete,_,_,m) ->
                        let kind = InferTyconKind cenv.g (kind,attrs,slotsigs,fields,inSig,isConcrete,m)

                        let inherits = inherits |> List.map (fun (ty,m,_) -> (ty,m)) 
                        let inheritedTys = fst (List.mapFold (mapFoldFst (TcTypeAndRecover cenv NoNewTypars checkCxs ItemOccurence.UseInType envinner)) tpenv inherits)
                        let implementedTys,inheritedTys =   
                            match kind with 
                            | TyconInterface -> 
                                explicitImplements |> List.iter (fun (_,m) -> errorR(Error(FSComp.SR.tcInterfacesShouldUseInheritNotInterface(),m)))
                                (implementedTys @ inheritedTys),[] 
                            | _ -> implementedTys, inheritedTys
                        implementedTys,inheritedTys 
                    | SynTypeDefnSimpleRepr.Enum _ | SynTypeDefnSimpleRepr.None _ | SynTypeDefnSimpleRepr.TypeAbbrev _
                    
                    | SynTypeDefnSimpleRepr.Union _ | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ | SynTypeDefnSimpleRepr.Record _ -> 
                        // REVIEW: we could do the IComparable/IStructuralHash interface analysis here. 
                        // This would let the type satisfy more recursive IComparable/IStructuralHash constraints 
                        implementedTys,[]

                for (implementedTy,m) in implementedTys do
                    if firstPass && isErasedType cenv.g implementedTy then 
                        errorR(Error(FSComp.SR.tcCannotInheritFromErasedType(),m)) 

                // Publish interfaces, but only on the first pass, to avoid a duplicate interface check 
                if firstPass then 
                    implementedTys |> List.iter (fun (ty,m) -> PublishInterface cenv envinner.DisplayEnv tcref m false ty) ;

                attrs,inheritedTys)

        // Publish the attributes and supertype  
        (implementsL,typeDefCores,tycons) |||> List.iter3 (fun (attrs,inheritedTys) (TyconDefnCoreIndexed(_,synTyconRepr,_,_,_,_)) tycon -> 
          let m = tycon.Range
          try 
              let super = 
                  match synTyconRepr with 
                  | SynTypeDefnSimpleRepr.None _ -> None
                  | SynTypeDefnSimpleRepr.TypeAbbrev _ -> None
                  | SynTypeDefnSimpleRepr.Union _ -> None
                  | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> None
                  | SynTypeDefnSimpleRepr.Record _ -> None
                  | SynTypeDefnSimpleRepr.General (kind,_,slotsigs,fields,isConcrete,_,_,_) ->
                      let kind = InferTyconKind cenv.g (kind,attrs,slotsigs,fields,inSig,isConcrete,m)
                                           
                      match inheritedTys with 
                      | [] -> 
                          match kind with 
                          | TyconStruct -> Some(cenv.g.system_Value_typ)
                          | TyconDelegate _ -> Some(cenv.g.system_MulticastDelegate_typ )
                          | TyconHiddenRepr | TyconClass | TyconInterface -> None
                          | _ -> error(InternalError("should have inferred tycon kind",m)) 

                      | [(ty,m)] -> 
                          if not firstPass && not (match kind with TyconClass -> true | _ -> false) then 
                              errorR (Error(FSComp.SR.tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes(),m)); 
                          CheckSuperType cenv ty m; 
                          if isTyparTy cenv.g ty then 
                              if firstPass  then 
                                  errorR(Error(FSComp.SR.tcCannotInheritFromVariableType(),m)) 
                              Some cenv.g.obj_ty // a "super" that is a variable type causes grief later
                          else                          
                              Some ty 
                      | _ -> 
                          error(Error(FSComp.SR.tcTypesCannotInheritFromMultipleConcreteTypes(),m))

                  | SynTypeDefnSimpleRepr.Enum _ -> 
                      Some(cenv.g.system_Enum_typ) 

              // Publish the super type
              tycon.TypeContents.tcaug_super <- super
              
           with e -> errorRecovery e m)

    /// Establish the fields, dispatch slots and union cases of a type
    let private TcTyconDefnCore_Phase6_EstablishRepresentation cenv envinner tpenv inSig (TyconDefnCoreIndexed(_,synTyconRepr,_,_,_,tyconIdx)) (tycon:Tycon) (checkedAttrs:Attribs) =
        let m = tycon.Range
        try 
            let id = tycon.Id
            let thisTyconRef = mkLocalTyconRef tycon
            let innerParent = Parent(thisTyconRef)
            let thisTyInst,thisTy = generalizeTyconRef thisTyconRef
            let attrs = checkedAttrs


            let hasAbstractAttr = HasFSharpAttribute cenv.g cenv.g.attrib_AbstractClassAttribute attrs
            let hasSealedAttr = 
                // The special case is needed for 'unit' because the 'Sealed' attribute is not yet available when this type is defined.
                if cenv.g.compilingFslib && id.idText = "Unit" then 
                    Some true
                else
                    TryFindFSharpBoolAttribute cenv.g cenv.g.attrib_SealedAttribute attrs
            let hasMeasureAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute attrs
            
            // TODO: for hasMeasureableAttr we need to be stricter about checking these
            // are only used on exactly the right kinds of type definitions and not inconjunction with other attributes.
            let hasMeasureableAttr = HasFSharpAttribute cenv.g cenv.g.attrib_MeasureableAttribute attrs
            let hasCLIMutable = HasFSharpAttribute cenv.g cenv.g.attrib_CLIMutableAttribute attrs
            
            let hasStructLayoutAttr = HasFSharpAttribute cenv.g cenv.g.attrib_StructLayoutAttribute attrs
            let hasAllowNullLiteralAttr = HasFSharpAttribute cenv.g cenv.g.attrib_AllowNullLiteralAttribute attrs

            if hasAbstractAttr then 
                tycon.TypeContents.tcaug_abstract <- true;

            tycon.Data.entity_attribs <- attrs;
            let noAbstractClassAttributeCheck() = 
                if hasAbstractAttr then errorR (Error(FSComp.SR.tcOnlyClassesCanHaveAbstract(),m))
                
            let noAllowNullLiteralAttributeCheck() = 
                if hasAllowNullLiteralAttr then errorR (Error(FSComp.SR.tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttribute(),m))
                
                
            let allowNullLiteralAttributeCheck() = 
                if hasAllowNullLiteralAttr then 
                    tycon.TypeContents.tcaug_super |> Option.iter (fun ty -> if not (TypeNullIsExtraValue cenv.g ty) then errorR (Error(FSComp.SR.tcAllowNullTypesMayOnlyInheritFromAllowNullTypes(),m)))
                    tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.iter (fun ty -> if not (TypeNullIsExtraValue cenv.g ty) then errorR (Error(FSComp.SR.tcAllowNullTypesMayOnlyInheritFromAllowNullTypes(),m)))
                
                
            let structLayoutAttributeCheck(allowed) = 
                if hasStructLayoutAttr  then 
                    if allowed then 
                        warning(PossibleUnverifiableCode(m));
                    elif thisTyconRef.Typars(m).Length > 0 then 
                        errorR (Error(FSComp.SR.tcGenericTypesCannotHaveStructLayout(),m))
                    else
                        errorR (Error(FSComp.SR.tcOnlyStructsCanHaveStructLayout(),m))
                
            let hiddenReprChecks(hasRepr) =
                 structLayoutAttributeCheck(false);
                 if hasSealedAttr = Some(false) || (hasRepr && hasSealedAttr <> Some(true) && not (id.idText = "Unit" && cenv.g.compilingFslib) ) then 
                    errorR(Error(FSComp.SR.tcRepresentationOfTypeHiddenBySignature(),m));
                 if hasAbstractAttr then 
                     errorR (Error(FSComp.SR.tcOnlyClassesCanHaveAbstract(),m))

            let noMeasureAttributeCheck() = 
                if hasMeasureAttr then errorR (Error(FSComp.SR.tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure(),m))

            let noCLIMutableAttributeCheck() = 
                if hasCLIMutable then errorR (Error(FSComp.SR.tcThisTypeMayNotHaveACLIMutableAttribute(),m))

            let noSealedAttributeCheck(k) = 
                if hasSealedAttr = Some(true) then errorR (Error(k(),m));

            let noFieldsCheck(fields':RecdField list) = 
                match fields' with 
                | (rf :: _) -> errorR (Error(FSComp.SR.tcInterfaceTypesAndDelegatesCannotContainFields(),rf.Range))
                | _ -> ()

                
            let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envinner
            let envinner = MakeInnerEnvForTyconRef cenv envinner thisTyconRef false 


            // Notify the Language Service about field names in record/class declaration
            let ad = envinner.eAccessRights
            let writeFakeRecordFieldsToSink (fields:RecdField list) =
                let nenv = envinner.NameEnv
                // Record fields should be visible from IntelliSense, so add fake names for them (similarly to "let a = ..")
                for fspec in (fields |> List.filter (fun fspec -> not fspec.IsCompilerGenerated)) do
                    let info = RecdFieldInfo(thisTyInst, mkNestedRecdFieldRef thisTyconRef fspec)
                    let nenv' = AddFakeNameToNameEnv fspec.Name nenv (Item.RecdField info) 
                    // Name resolution gives better info for tooltips
                    let item = FreshenRecdFieldRef cenv.nameResolver m (mkNestedRecdFieldRef thisTyconRef fspec)
                    CallNameResolutionSink cenv.tcSink (fspec.Range,nenv,item,item,ItemOccurence.Binding,envinner.DisplayEnv,ad)
                    // Environment is needed for completions
                    CallEnvSink cenv.tcSink (fspec.Range, nenv', ad)

            // Notify the Language Service about constructors in discriminated union declaration
            let writeFakeUnionCtorsToSink unionCases = 
                let nenv = envinner.NameEnv
                // Constructors should be visible from IntelliSense, so add fake names for them 
                for unionCase in unionCases do
                    let info = UnionCaseInfo(thisTyInst,mkUnionCaseRef thisTyconRef unionCase.Id.idText)
                    let nenv' = AddFakeNameToNameEnv unionCase.Id.idText nenv (Item.UnionCase info) 
                    // Report to both - as in previous function
                    let item = Item.UnionCase info
                    CallNameResolutionSink cenv.tcSink (unionCase.Range,nenv,item,item,ItemOccurence.Binding,envinner.DisplayEnv,ad)
                    CallEnvSink cenv.tcSink (unionCase.Id.idRange, nenv', ad)
            
            let theTypeRepresentation, baseValOpt, safeInitInfo = 
                match synTyconRepr with 

                | SynTypeDefnSimpleRepr.None _ -> 
                    hiddenReprChecks(false)
                    noAllowNullLiteralAttributeCheck()
                    if hasMeasureAttr then 
                        let repr = TFsObjModelRepr { fsobjmodel_kind=TTyconClass; 
                                                     fsobjmodel_vslots=[];
                                                     fsobjmodel_rfields= MakeRecdFieldsTable [] }
                        repr, None, NoSafeInitInfo
                    else 
                        TNoRepr, None, NoSafeInitInfo

                // This unfortunate case deals with "type x = A" 
                // In F# this only defines a new type if A is not in scope 
                // as a type constructor, or if the form type A = A is used. 
                // "type x = | A" can always be used instead. 
                | TyconCoreAbbrevThatIsReallyAUnion (hasMeasureAttr,envinner,id) (unionCaseName,_) ->
                          
                    structLayoutAttributeCheck(false);
                    noAllowNullLiteralAttributeCheck();
                    TcRecdUnionAndEnumDeclarations.CheckUnionCaseName  cenv unionCaseName.idText unionCaseName.idRange;
                    let unionCase = NewUnionCase unionCaseName unionCaseName.idText [] thisTy [] XmlDoc.Empty tycon.Accessibility
                    MakeUnionRepr [ unionCase ], None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.ThereWereSignificantParseErrorsSoDoNotTypecheckThisNode, _rhsType,_) ->
                    TNoRepr, None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.Ok, rhsType,_) ->
                    if hasSealedAttr = Some(true) then 
                        errorR (Error(FSComp.SR.tcAbbreviatedTypesCannotBeSealed(),m));
                    noAbstractClassAttributeCheck();
                    noAllowNullLiteralAttributeCheck();
                    if hasMeasureableAttr  then 
                        let kind = if hasMeasureAttr then TyparKind.Measure else TyparKind.Type
                        let theTypeAbbrev,_ = TcTypeOrMeasureAndRecover (Some kind) cenv NoNewTypars CheckCxs ItemOccurence.UseInType envinner tpenv rhsType

                        TMeasureableRepr theTypeAbbrev, None, NoSafeInitInfo
                    // If we already computed a representation, e.g. for a generative type definition, then don't change it here.
                    elif (match tycon.TypeReprInfo with TNoRepr -> false | _ -> true)  then 
                        tycon.TypeReprInfo , None, NoSafeInitInfo
                    else 
                        TNoRepr, None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.Union (_,unionCases,_) -> 
                    noCLIMutableAttributeCheck();
                    noMeasureAttributeCheck();
                    noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDU;
                    noAbstractClassAttributeCheck();
                    noAllowNullLiteralAttributeCheck();
                    structLayoutAttributeCheck(false);
                    let unionCases = TcRecdUnionAndEnumDeclarations.TcUnionCaseDecls cenv envinner innerParent thisTy tpenv unionCases
                    writeFakeUnionCtorsToSink unionCases
                    MakeUnionRepr unionCases, None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.Record (_,fields,_) -> 
                    noMeasureAttributeCheck();
                    noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedRecord;
                    noAbstractClassAttributeCheck();
                    noAllowNullLiteralAttributeCheck();
                    structLayoutAttributeCheck(true);  // these are allowed for records
                    let recdFields = TcRecdUnionAndEnumDeclarations.TcNamedFieldDecls cenv envinner innerParent false tpenv fields
                    recdFields |> CheckDuplicates (fun f -> f.Id) "field"  |> ignore
                    writeFakeRecordFieldsToSink recdFields
                    TRecdRepr (MakeRecdFieldsTable recdFields), None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s,_) -> 
                    noCLIMutableAttributeCheck();
                    noMeasureAttributeCheck();
                    noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedAssemblyCode;
                    noAllowNullLiteralAttributeCheck();
                    structLayoutAttributeCheck(false);
                    noAbstractClassAttributeCheck();
                    TAsmRepr s, None, NoSafeInitInfo

                | SynTypeDefnSimpleRepr.General (kind,inherits,slotsigs,fields,isConcrete,isIncrClass,implicitCtorSynPats,_) ->
                    let userFields = TcRecdUnionAndEnumDeclarations.TcNamedFieldDecls cenv envinner innerParent isIncrClass tpenv fields
                    let implicitStructFields = 
                        [ // For structs with an implicit ctor, determine the fields immediately based on the arguments
                          match implicitCtorSynPats with 
                          | None -> 
                              ()
                          | Some spats -> 
                              if tycon.IsFSharpStructOrEnumTycon then 
                                  let ctorArgNames,(_,names,_) = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv (SynSimplePats.SimplePats (spats,m))
                                  for arg in ctorArgNames do
                                      let ty = names.[arg].Type
                                      let id = names.[arg].Ident
                                      let taccess = TAccess [envinner.eAccessPath]
                                      yield NewRecdField false None id ty false false [(*no property attributes*)] [(*no field attributes *)] XmlDoc.Empty taccess (*compiler generated:*)true ]
                    
                    (userFields @ implicitStructFields) |> CheckDuplicates (fun f -> f.Id) "field"  |> ignore
                    writeFakeRecordFieldsToSink userFields
                    
                    let superTy = tycon.TypeContents.tcaug_super
                    let containerInfo = TyconContainerInfo(innerParent, thisTyconRef, thisTyconRef.Typars(m), NoSafeInitInfo)
                    let kind = InferTyconKind cenv.g (kind,attrs,slotsigs,fields,inSig,isConcrete,m)
                    match kind with 
                    | TyconHiddenRepr  -> 
                        hiddenReprChecks(true)
                        noAllowNullLiteralAttributeCheck();
                        TNoRepr, None, NoSafeInitInfo
                    | _ ->

                        // Note: for a mutually recursive set we can't check this condition 
                        // until "isSealedTy" and "isClassTy" give reliable results. 
                        superTy |> Option.iter (fun ty -> 
                            let m = match inherits with | [] -> m | ((_,m,_) :: _) -> m
                            if isSealedTy cenv.g ty then 
                                errorR(Error(FSComp.SR.tcCannotInheritFromSealedType(),m))
                            elif not (isClassTy cenv.g ty) then 
                                errorR(Error(FSComp.SR.tcCannotInheritFromInterfaceType(),m)));

                        let kind = 
                            match kind with 
                              | TyconStruct -> 
                                  noCLIMutableAttributeCheck();
                                  noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedStruct;
                                  noAbstractClassAttributeCheck();
                                  noAllowNullLiteralAttributeCheck();
                                  if nonNil slotsigs then 
                                    errorR (Error(FSComp.SR.tcStructTypesCannotContainAbstractMembers(),m)); 
                                  structLayoutAttributeCheck(true);

                                  TTyconStruct
                              | TyconInterface -> 
                                  if hasSealedAttr = Some(true) then errorR (Error(FSComp.SR.tcInterfaceTypesCannotBeSealed(),m))
                                  noCLIMutableAttributeCheck();
                                  structLayoutAttributeCheck(false);
                                  noAbstractClassAttributeCheck();
                                  allowNullLiteralAttributeCheck();
                                  noFieldsCheck(userFields);
                                  TTyconInterface
                              | TyconClass -> 
                                  noCLIMutableAttributeCheck();
                                  structLayoutAttributeCheck(not isIncrClass);
                                  allowNullLiteralAttributeCheck();
                                  TTyconClass
                              | TyconDelegate (ty,arity) -> 
                                  noCLIMutableAttributeCheck();
                                  noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDelegate;
                                  structLayoutAttributeCheck(false);
                                  noAllowNullLiteralAttributeCheck();
                                  noAbstractClassAttributeCheck();
                                  noFieldsCheck(userFields);
                                  let ty',_ = TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInType envinner tpenv ty
                                  let _,curriedArgInfos,returnTy,_ = GetTopValTypeInCompiledForm cenv.g (arity |> TranslateTopValSynInfo m (TcAttributes cenv envinner)  |> TranslatePartialArity []) ty' m
                                  if curriedArgInfos.Length < 1 then error(Error(FSComp.SR.tcInvalidDelegateSpecification(),m));
                                  if curriedArgInfos.Length > 1 then error(Error(FSComp.SR.tcDelegatesCannotBeCurried(),m));
                                  let ttps = thisTyconRef.Typars(m)
                                  let fparams = curriedArgInfos.Head |> List.map mkSlotParam 
                                  TTyconDelegate (mkSlotSig("Invoke",thisTy,ttps,[],[fparams], returnTy))
                              | _ -> 
                                  error(InternalError("should have inferred tycon kind",m))

                        let baseIdOpt = 
                            match synTyconRepr with 
                            | SynTypeDefnSimpleRepr.None _ -> None
                            | SynTypeDefnSimpleRepr.TypeAbbrev _ -> None
                            | SynTypeDefnSimpleRepr.Union _ -> None
                            | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> None
                            | SynTypeDefnSimpleRepr.Record _ -> None
                            | SynTypeDefnSimpleRepr.Enum _ -> None
                            | SynTypeDefnSimpleRepr.General (_,inherits,_,_,_,_,_,_) ->
                                match inherits with 
                                | [] -> None
                                | ((_,m,baseIdOpt) :: _) -> 
                                    match baseIdOpt with 
                                    | None -> Some(ident("base",m)) 
                                    | Some id -> Some(id)
                            
                        let abstractSlots = 
                            [ for (valSpfn,memberFlags) in slotsigs do 

                                  let (ValSpfn(_, _, _, _, _valSynData, _, _, _, _,_, m)) = valSpfn 

                                  CheckMemberFlags cenv.g None NewSlotsOK OverridesOK memberFlags m;
                                  
                                  let slots = fst (TcAndPublishValSpec (cenv,envinner,containerInfo,ModuleOrMemberBinding,Some memberFlags,tpenv,valSpfn))
                                  // Multiple slots may be returned, e.g. for 
                                  //    abstract P : int with get,set
                                  
                                  for slot in slots do 
                                      yield mkLocalValRef slot ]

                        let baseValOpt = MakeAndPublishBaseVal cenv envinner baseIdOpt (superOfTycon cenv.g tycon)
                        let safeInitInfo = ComputeInstanceSafeInitInfo cenv envinner thisTyconRef.Range thisTy
                        let safeInitFields = match safeInitInfo with SafeInitField (_, fld) -> [fld] | NoSafeInitInfo -> []
                        
                        let repr = 
                            TFsObjModelRepr 
                                { fsobjmodel_kind=kind; 
                                  fsobjmodel_vslots= abstractSlots;
                                  fsobjmodel_rfields=MakeRecdFieldsTable (userFields @ implicitStructFields  @ safeInitFields) } 
                        repr, baseValOpt, safeInitInfo

                | SynTypeDefnSimpleRepr.Enum (decls,m) -> 
                    let fieldTy,fields' = TcRecdUnionAndEnumDeclarations.TcEnumDecls cenv envinner innerParent thisTy decls
                    let kind = TTyconEnum
                    structLayoutAttributeCheck(false);
                    noCLIMutableAttributeCheck();
                    noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedEnum;
                    noAllowNullLiteralAttributeCheck();
                    let vfld = NewRecdField false None (ident("value__",m))  fieldTy false false [] [] XmlDoc.Empty taccessPublic true
                    
                    if not (ListSet.contains (typeEquiv cenv.g) fieldTy [ cenv.g.int32_ty; cenv.g.int16_ty; cenv.g.sbyte_ty; cenv.g.int64_ty; cenv.g.char_ty; cenv.g.bool_ty; cenv.g.uint32_ty; cenv.g.uint16_ty; cenv.g.byte_ty; cenv.g.uint64_ty ]) then 
                        errorR(Error(FSComp.SR.tcInvalidTypeForLiteralEnumeration(),m));

                    writeFakeRecordFieldsToSink fields' 
                    let repr = 
                        TFsObjModelRepr 
                            { fsobjmodel_kind=kind; 
                              fsobjmodel_vslots=[];
                              fsobjmodel_rfields= MakeRecdFieldsTable (vfld :: fields') }
                    repr, None, NoSafeInitInfo
            
            tycon.Data.entity_tycon_repr <- theTypeRepresentation;
            // We check this just after establishing the representation
            if TyconHasUseNullAsTrueValueAttribute cenv.g tycon && not (CanHaveUseNullAsTrueValueAttribute cenv.g tycon) then 
                errorR(Error(FSComp.SR.tcInvalidUseNullAsTrueValue(),m))
                
            // validate ConditionalAttribute, should it be applied (it's only valid on a type if the type is an attribute type)
            match attrs |> List.tryFind (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_ConditionalAttribute) with
            | Some _ ->
                if not(ExistsInEntireHierarchyOfType (fun t -> typeEquiv cenv.g t (mkAppTy cenv.g.tcref_System_Attribute [])) cenv.g cenv.amap m AllowMultiIntfInstantiations.No thisTy) then
                    errorR(Error(FSComp.SR.tcConditionalAttributeUsage(),m));
            | _ -> ()         
                   
            (baseValOpt, safeInitInfo, tyconIdx)
        with e -> 
            errorRecovery e m; 
            None, NoSafeInitInfo, tyconIdx

    /// Check that a set of type definitions is free of cycles in abbreviations
    let private CheckForCyclicAbbreviations _cenv tycons = 

        let edgesFrom (tycon:Tycon) =

            let rec accInAbbrevType ty acc  = 
                match stripTyparEqns ty with 
                | TType_tuple l -> accInAbbrevTypes l acc
                | TType_ucase (UCRef(tc,_),tinst) 
                | TType_app (tc,tinst) -> 
                    let tycon2 = tc.Deref
                    let acc = accInAbbrevTypes tinst  acc
                    // Record immediate recursive references 
                    if ListSet.contains (===) tycon2 tycons  then 
                        (tycon,tycon2) ::acc 
                    // Expand the representation of abbreviations 
                    elif tc.IsTypeAbbrev  then
                        accInAbbrevType (reduceTyconRefAbbrev tc tinst) acc
                    // Otherwise H - explore the instantiation. 
                    else 
                        acc

                | TType_fun (d,r) -> 
                    accInAbbrevType d (accInAbbrevType r acc)
                
                | TType_var _ -> acc
                
                | TType_forall (_,r) -> accInAbbrevType r acc
                
                | TType_measure ms -> accInMeasure ms acc

            and accInMeasure ms acc =
                match stripUnitEqns ms with
                | MeasureCon tc when ListSet.contains (===) tc.Deref tycons  ->  
                    (tycon, tc.Deref) :: acc
                | MeasureCon tc when tc.IsTypeAbbrev  ->              
                    accInMeasure (reduceTyconRefAbbrevMeasureable tc) acc
                | MeasureProd (ms1, ms2) -> accInMeasure ms1 (accInMeasure ms2 acc)
                | MeasureInv ms -> accInMeasure ms acc
                | _ -> acc

            and accInAbbrevTypes tys acc = 
                List.foldBack accInAbbrevType tys acc
                
            let acc = []
            let acc = 
                match tycon.TypeAbbrev with 
                | None -> acc
                | Some ty -> 
                    //if not cenv.isSig && not cenv.haveSig && (tycon.Accessibility <> taccessPublic || tycon.TypeReprAccessibility <> taccessPublic) then 
                    //   errorR(Error(FSComp.SR.tcTypeAbbreviationMustBePublic(),tycon.Range));
                    accInAbbrevType ty acc

            acc

        let edges = List.collect edgesFrom tycons
        let graph = Graph ((fun tc -> tc.Stamp), tycons, edges)
        graph.IterateCycles (fun path -> 
            let tycon = path.Head 
            // The thing is cyclic. Set the abbreviation and representation to be "None" to stop later VS crashes
            tycon.Data.entity_tycon_abbrev <- None
            tycon.Data.entity_tycon_repr <- TNoRepr
            errorR(Error(FSComp.SR.tcTypeDefinitionIsCyclic(),tycon.Range)));


    /// Check that a set of type definitions is free of inheritance cycles
    let CheckForCyclicStructsAndInheritance cenv tycons =
        // Overview:
        // Given several tycons now being defined (the "intial" tycons).
        // Look for cycles in inheritance and struct-field-containment.
        //
        // The graph is on the (initial) type constructors (not types (e.g. tycon instantiations)).
        // Closing under edges:
        // 1. (tycon,superTycon)     -- tycon (initial) to the tycon of its super type.
        // 2. (tycon,interfaceTycon) -- tycon (initial) to the tycon of an interface it implements.
        // 3. (tycon,T)              -- tycon (initial) is a struct with a field (static or instance) that would store a T<_>
        //                              where storing T<_> means is T<_>
        //                                                    or is a struct with an instance field that stores T<_>.
        // The implementation only stores edges between (initial) tycons.
        //
        // The special case "S<'a> static field on S<'a>" is allowed, so no #3 edge is collected for this.
        // Only static fields for current tycons need to be followed. Previous tycons are assumed (previously checked) OK.
        //
        // BEGIN: EARLIER COMMENT
        //        Of course structs are not allowed to contain instance fields of their own type:
        //         type S = struct { field x : S } 
        //
        //        In addition, see bug 3429. In the .NET IL structs are allowed to contain 
        //        static fields of their exact generic type, e.g.
        //         type S    = struct { static field x : S    } 
        //         type S = struct { static field x : S } 
        //        but not
        //         type S = struct { static field x : S } 
        //         type S = struct { static field x : S } 
        //        etc.
        //
        //        Ideally structs would allow static fields of any type. However
        //        this is a restriction and exemption that originally stems from 
        //        the way the Microsoft desktop CLR class loader works.
        // END: EARLIER COMMENT

        // edgesFrom tycon collects (tycon,tycon2) edges, for edges as described above.
        let edgesFrom (tycon:Tycon) =
            // Record edge (tycon,tycon2), only when tycon2 is an "initial" tycon.
            let insertEdgeToTycon tycon2 acc = 
                if ListSet.contains (===) tycon2 tycons && // note: only add if tycon2 is initial
                    not (List.exists (fun (tc,tc2) -> tc === tycon && tc2 === tycon2) acc)  // note: only add if (tycon,tycon2) not already an edge
                then
                    (tycon,tycon2)::acc
                else acc // note: all edges added are (tycon,_)
            let insertEdgeToType  ty     acc = 
                if isAppTy cenv.g ty then // guard against possible earlier failure
                    insertEdgeToTycon (tyconOfAppTy cenv.g ty) acc
                else
                    acc

            // collect edges from an a struct field (which is struct-contained in tycon)
            let rec accStructField (structTycon:Tycon) structTyInst (fspec:RecdField) (doneTypes,acc)  =
                let fieldTy = actualTyOfRecdFieldForTycon structTycon structTyInst fspec
                accStructFieldType structTycon structTyInst fspec fieldTy (doneTypes,acc)

            // collect edges from an a struct field (given the field type, which may be expanded if it is a type abbreviation)
            and accStructFieldType structTycon structTyInst fspec fieldTy (doneTypes,acc) =
                let fieldTy = stripTyparEqns fieldTy
                match fieldTy with
                | TType_app (tcref2 ,tinst2) when tcref2.IsStructOrEnumTycon ->
                    // The field is a struct.
                    // An edge (tycon,tycon2) should be recorded, unless it is the "static self-typed field" case.
                    let tycon2 = tcref2.Deref
                    let specialCaseStaticField =
                        // The special case of "static field S<'a> in struct S<'a>" is permitted. (so no (S,S) edge to be collected).
                        fspec.IsStatic &&
                        (structTycon === tycon2) && 
                        (structTyInst,tinst2) ||> List.lengthsEqAndForall2 (fun ty1 ty2 -> isTyparTy cenv.g ty1 &&
                                                                                           isTyparTy cenv.g ty2 &&
                                                                                           typarEq (destTyparTy cenv.g ty1) (destTyparTy cenv.g ty2))
                    if specialCaseStaticField then
                        doneTypes,acc // no edge collected, no recursion.
                    else
                        let acc = insertEdgeToTycon tycon2 acc // collect edge (tycon,tycon2), if tycon2 is initial.
                        accStructInstanceFields fieldTy tycon2 tinst2 (doneTypes,acc) // recurse through struct field looking for more edges
                | TType_app (tcref2 ,tinst2) when tcref2.IsTypeAbbrev  ->
                    // The field is a type abbreviation. Expand and repeat.
                    accStructFieldType structTycon structTyInst fspec (reduceTyconRefAbbrev tcref2 tinst2) (doneTypes,acc)
                | _ ->
                    doneTypes,acc

            // collect edges from the fields of a given struct type.
            and accStructFields includeStaticFields ty (structTycon:Tycon) tinst (doneTypes,acc) =
                if List.exists (typeEquiv cenv.g ty) doneTypes then
                    // This type (type instance) has been seen before, so no need to collect the same edges again (and avoid loops!)
                    doneTypes,acc 
                else
                    // Only collect once from each type instance.
                    let doneTypes = ty :: doneTypes 
                    let fspecs = structTycon.AllFieldsAsList |> List.filter (fun fspec -> includeStaticFields || not fspec.IsStatic)
                    let doneTypes,acc = List.foldBack (accStructField structTycon tinst) fspecs (doneTypes,acc)
                    doneTypes,acc
            and accStructInstanceFields ty structTycon tinst (doneTypes,acc) = accStructFields false ty structTycon tinst (doneTypes,acc)
            and accStructAllFields      ty structTycon tinst (doneTypes,acc) = accStructFields true  ty structTycon tinst (doneTypes,acc)

            let acc = []
            let acc = 
                if tycon.IsStructOrEnumTycon then
                    let tinst,ty = generalizeTyconRef (mkLocalTyconRef tycon)
                    let _,acc = accStructAllFields ty tycon tinst ([],acc)
                    acc
                else
                    acc

            let acc =
                // Note: only the nominal type counts 
                let super = superOfTycon cenv.g tycon
                insertEdgeToType super acc
            let acc =
                // Note: only the nominal type counts 
                List.foldBack insertEdgeToType tycon.ImmediateInterfaceTypesOfFSharpTycon acc
            acc
        let edges = (List.collect edgesFrom tycons)
        let graph = Graph ((fun tc -> tc.Stamp), tycons, edges)
        graph.IterateCycles (fun path -> 
            let tycon = path.Head 
            // The thing is cyclic. Set the abbreviation and representation to be "None" to stop later VS crashes
            tycon.Data.entity_tycon_abbrev <- None
            tycon.Data.entity_tycon_repr <- TNoRepr
            errorR(Error(FSComp.SR.tcTypeDefinitionIsCyclicThroughInheritance(),tycon.Range)));
        
    let isAugmentationTyconDefnRepr x = match x with (SynTypeDefnSimpleRepr.General(TyconAugmentation,_,_,_,_,_,_,_)) -> true | _ -> false
    
    let TcTyconDefnCores cenv env inSig parent tpenv (typeDefCores:TyconDefnCore list, m, scopem) =

        // Add indexes
        let typeDefCores = typeDefCores |> List.mapi (fun i (TyconDefnCore(info,repr,m,preEstablishedHasDefaultCtor,hasSelfReferentialCtor)) -> TyconDefnCoreIndexed(info,repr,m,preEstablishedHasDefaultCtor,hasSelfReferentialCtor,i))
        // Skip augmentations
        let tdefsForAugmentations, typeDefCores = typeDefCores |> List.partition (fun (TyconDefnCoreIndexed(_,repr,_,_,_,_)) -> isAugmentationTyconDefnRepr repr)

        // First define the type constructors and the abbreviations, if any. 
        let tycons = typeDefCores |> List.map (TcTyconDefnCore_Phase0_BuildInitialTycon cenv env parent)

        // Publish the preliminary tycons 
        tycons |> List.iter (fun tycon -> 
            // recheck these in case type is a duplicate in a mutually recursive set
            CheckForDuplicateConcreteType cenv env tycon.LogicalName tycon.Range
            CheckForDuplicateModule cenv env tycon.LogicalName tycon.Range
            PublishTypeDefn cenv env tycon);

        // Add them to the environment, though this does not add the fields and 
        // constructors (because we haven't established them yet). 
        // We re-add them to the original environment later on. 
        // We don't report them to the Language Service yet as we don't know if 
        // they are well-formed (e.g. free of abbreviation cycles - see bug 952) 
        let envinner = AddLocalTycons cenv.g cenv.amap scopem tycons env


        // Establish the kind of each type constructor 
        // Here we run InferTyconKind and record partial information about the kind of the type constructor. 
        // This means TyconObjModelKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. 
        let checkedAttrsList = (typeDefCores,tycons) ||> List.map2 (TcTyconDefnCore_Phase1_EstablishBasicKind cenv inSig envinner)
            
        // Establish the abbreviations (no constraint checking, because constraints not yet established)
        (typeDefCores,tycons,checkedAttrsList) |||> List.iter3 (TcTyconDefnCore_Phase2_Phase4_EstablishAbbreviations cenv envinner inSig tpenv FirstPass)

        // Check for cyclic abbreviations. If this succeeds we can start reducing abbreviations safely.
        CheckForCyclicAbbreviations cenv tycons

        // Establish the super type and interfaces  (no constraint checking, because constraints not yet established)     
        TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes cenv envinner tpenv inSig typeDefCores tycons FirstPass checkedAttrsList

        // REVIEW: we should separate the checking for cyclic hierarchies and cyclic structs
        // REVIEW: this is because in some extreme cases the TcTyparConstraints call below could
        // exercise a cyclic hierarchy (and thus not terminate) before the cycle checking has been
        // performed. Likewise operations in phases 3-6 could also exercise a cyclic hierarchy
        
        // Add the interface and member declarations for hash/compare. Because this adds interfaces, this may let constraints 
        // be satisfied, so we have to do this prior to checking any constraints.

        
        
        // Find all the field types in all the structrual types
        let structuralTypes = (typeDefCores,tycons) ||> List.map2 (GetStructuralElementsOfTyconDefn cenv envinner tpenv)
        
        let scSet = TyconConstraintInference.InferSetOfTyconsSupportingComparable cenv envinner structuralTypes tycons
        let seSet = TyconConstraintInference.InferSetOfTyconsSupportingEquatable cenv envinner structuralTypes tycons

        tycons |> List.iter (AddAugmentationDeclarations.AddGenericHashAndComparisonDeclarations cenv env scSet seSet)

        // Check and publish the explicit constraints. 
        let checkExplicitConstraints checkCxs = 
            (typeDefCores,tycons) ||> List.iter2 (fun (TyconDefnCoreIndexed(synTyconInfo,_,_,_,_,_)) tycon -> 
                let (ComponentInfo(_,_, wcs,_,_,_, _,_)) = synTyconInfo
                let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars(m)) envinner
                let thisTyconRef = mkLocalTyconRef tycon
                let envinner = MakeInnerEnvForTyconRef cenv envinner thisTyconRef false 
                try TcTyparConstraints cenv NoNewTypars checkCxs ItemOccurence.UseInType envinner tpenv  wcs |> ignore
                with e -> errorRecovery e m)

        checkExplicitConstraints NoCheckCxs

        // No inferred constraints allowed on declared typars 
        tycons |> List.iter (fun tc -> tc.Typars(m) |> List.iter (SetTyparRigid cenv.g env.DisplayEnv m))
        
        // OK, now recheck the abbreviations, super/interface and explicit constraints types (this time checking constraints)
        (typeDefCores,tycons,checkedAttrsList) |||> List.iter3 (TcTyconDefnCore_Phase2_Phase4_EstablishAbbreviations cenv envinner inSig tpenv SecondPass)
        TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes cenv envinner tpenv inSig typeDefCores tycons SecondPass checkedAttrsList
        checkExplicitConstraints CheckCxs

        // Now all the type parameters, abbreviations, constraints and kind information is established.
        // Now do the representations. Each baseValOpt is a residue from the representation which is potentially available when
        // checking the members.
        let baseValOpts, safeInitValOpts = 
            let baseValOptsForTycons = (typeDefCores,tycons,checkedAttrsList) |||> List.map3 (TcTyconDefnCore_Phase6_EstablishRepresentation cenv envinner tpenv inSig)
            // Make sure we return a 'None' for each augmentation as well. These can't use 'base'
            let baseValOptsForAugmentations = tdefsForAugmentations |> List.map (fun (TyconDefnCoreIndexed(_,_,_,_,_,idx)) -> (None, NoSafeInitInfo, idx))
            // Collect them up, sort them by index
            (baseValOptsForAugmentations @ baseValOptsForTycons) |> List.sortBy p33 |> List.map (fun (a,b,_) -> (a,b)) |> List.unzip
                
        // Now check for cyclic structs and inheritance. It's possible these should be checked as separate conditions. 
        // REVIEW: checking for cyclic inheritance is happening too late. See note above.
        CheckForCyclicStructsAndInheritance cenv tycons

        // Add the tycons again to the environment (again) - this will add the constructors and fields. 
        let env = AddLocalTyconsAndReport cenv.tcSink cenv.g cenv.amap scopem tycons env

        (tycons, env, baseValOpts, safeInitValOpts)

end // module EstablishTypeDefinitionCores


module TcTypeDeclarations = begin

    /// Given a type definition, compute whether its members form an extension of an existing type, and if so if it is an 
    /// intrinsic or extrinsic extension
    let private ComputeTyconDeclKind isAtOriginalTyconDefn cenv env inSig m typars cs longPath = 
        let ad = env.eAccessRights
        let tcref = 
            let resInfo = TypeNameResolutionStaticArgsInfo.FromTyArgs (typars |> List.map (fun (TyparDecl(_,tp)) -> SynType.Var(tp,m)))
            match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Binding OpenQualified env.eNameResEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No with
            | Result res -> res
            | res when inSig && longPath.Length = 1 ->
                errorR(Deprecated(FSComp.SR.tcReservedSyntaxForAugmentation(),m));
                ForceRaise res
            | res -> ForceRaise res            

        let isInterfaceOrDelegateOrEnum = 
            tcref.Deref.IsFSharpInterfaceTycon || 
            tcref.Deref.IsFSharpDelegateTycon ||
            tcref.Deref.IsFSharpEnumTycon

        let isInSameModuleOrNamespace = 
             match env.eModuleOrNamespaceTypeAccumulator.Value.TypesByMangledName.TryFind(tcref.LogicalName) with 
              | Some tycon -> (tyconOrder.Compare(tcref.Deref,tycon) = 0)
              | None -> 
                    //false
                    // There is a special case we allow when compiling FSharp.Core.dll which permits interface implementations across namespace fragments
                    (cenv.g.compilingFslib && tcref.LogicalName.StartsWith("Tuple`"))
        
        let reqTypars = tcref.Typars(m)

        // Member definitions are intrinsic (added directly to the type) if:
        // a) For interfaces, only if it is in the original defn.
        //    Augmentations to interfaces via partial type defns will always be extensions, e.g. extension members on interfaces.
        // b) For other types, if the type is isInSameModuleOrNamespace
        let declKind,typars = 
            if isAtOriginalTyconDefn then 
                ModuleOrMemberBinding, reqTypars

            elif isInSameModuleOrNamespace && not isInterfaceOrDelegateOrEnum then 
                IntrinsicExtensionBinding, reqTypars
            else 
                if isInSameModuleOrNamespace && isInterfaceOrDelegateOrEnum then 
                    errorR(Error(FSComp.SR.tcMembersThatExtendInterfaceMustBePlacedInSeparateModule(),tcref.Range))
                let nReqTypars = reqTypars.Length
                if nReqTypars <> typars.Length then 
                    // not recoverable
                    error(Error(FSComp.SR.tcDeclaredTypeParametersForExtensionDoNotMatchOriginal(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars), m))

                let declaredTypars = TcTyparDecls cenv env typars
                let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTypars env
                let _tpenv = TcTyparConstraints cenv NoNewTypars CheckCxs ItemOccurence.UseInType envinner emptyUnscopedTyparEnv cs
                declaredTypars |> List.iter (SetTyparRigid cenv.g env.DisplayEnv m);
                if not (typarsAEquiv cenv.g TypeEquivEnv.Empty reqTypars declaredTypars) then 
                    errorR(Error(FSComp.SR.tcDeclaredTypeParametersForExtensionDoNotMatchOriginal(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars), m))
                ExtrinsicExtensionBinding, declaredTypars


        declKind, tcref, typars


    let private isAutoProperty  = function SynMemberDefn.AutoProperty _ -> true | _ -> false
    let private isMember          = function SynMemberDefn.Member _   -> true | _ -> false
    let private isImplicitCtor    = function SynMemberDefn.ImplicitCtor _    -> true | _ -> false
    let private isImplicitInherit = function SynMemberDefn.ImplicitInherit _ -> true | _ -> false
    let private isAbstractSlot    = function SynMemberDefn.AbstractSlot _          -> true | _ -> false
    let private isInterface       = function SynMemberDefn.Interface _        -> true | _ -> false
    let private isInherit         = function SynMemberDefn.Inherit _          -> true | _ -> false
    let private isField           = function SynMemberDefn.ValField (_,_)   -> true | _ -> false
    let private isTycon           = function SynMemberDefn.NestedType _            -> true | _ -> false

    let private allFalse ps x = List.fold (fun acc p -> acc && not (p x)) true ps

    /// Check the ordering on the bindings and members in a class construction
    // Accepted forms:
    //
    // Implicit Construction:
    //   implicit_ctor
    //   optional implicit_inherit
    //   multiple bindings
    //   multiple member-binding(includes-overrides) or abstract-slot-declaration or interface-bindings
    //
    // Classic construction:
    //   multiple (binding or slotsig or field or interface or inherit).
    //   i.e. not local-bindings, implicit ctor or implicit inherit (or tycon?).
    //   atMostOne inherit.
    let private CheckMembersForm ds = 
        match ds with
        | d::ds when isImplicitCtor d ->
            // Implicit construction 
            let ds = 
                match ds with
                | d::ds when isImplicitInherit d -> ds  // skip inherit call if it comes next 
                | _ -> ds

            // Skip over 'let' and 'do' bindings
            let _ ,ds = 
                ds |> List.takeUntil (function 
                    | SynMemberDefn.LetBindings _     -> false 
                    | _ -> true) 

            // Skip over 'let' and 'do' bindings
            let _,ds = 
                ds |> List.takeUntil (allFalse [isMember;isAbstractSlot;isInterface;isAutoProperty]) 

            match ds with
             | SynMemberDefn.Member (_,m)       :: _ -> errorR(InternalError("List.takeUntil is wrong, have binding",m))
             | SynMemberDefn.AbstractSlot (_,_,m)            :: _ -> errorR(InternalError("List.takeUntil is wrong, have slotsig",m))
             | SynMemberDefn.Interface (_,_,m)          :: _ -> errorR(InternalError("List.takeUntil is wrong, have interface",m))
             | SynMemberDefn.ImplicitCtor (_,_,_,_,m)  :: _ -> errorR(InternalError("implicit class construction with two implicit constructions",m))
             | SynMemberDefn.AutoProperty (_,_,_,_,_,_,_,_,_,_,m) :: _ -> errorR(InternalError("List.takeUntil is wrong, have auto property",m))
             | SynMemberDefn.ImplicitInherit (_,_,_,m) :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit(),m))
             | SynMemberDefn.LetBindings (_,_,_,m)     :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers(),m))
             | SynMemberDefn.Inherit (_,_,m)            :: _ -> errorR(Error(FSComp.SR.tcInheritDeclarationMissingArguments(),m))
             | SynMemberDefn.NestedType (_,_,m)              :: _ -> errorR(Error(FSComp.SR.tcTypesCannotContainNestedTypes(),m))
             | _ -> ()
        | ds ->
            // Classic class construction 
            let _,ds = List.takeUntil (allFalse [isMember;isAbstractSlot;isInterface;isInherit;isField;isTycon]) ds
            match ds with
             | SynMemberDefn.Member (_,m)       :: _ -> errorR(InternalError("CheckMembersForm: List.takeUntil is wrong",m))
             | SynMemberDefn.ImplicitCtor (_,_,_,_,m)  :: _ -> errorR(InternalError("CheckMembersForm: implicit ctor line should be first",m))
             | SynMemberDefn.ImplicitInherit (_,_,_,m) :: _ -> errorR(Error(FSComp.SR.tcInheritConstructionCallNotPartOfImplicitSequence(),m))
             | SynMemberDefn.AutoProperty(_,_,_,_,_,_,_,_,_,_,m) :: _  -> errorR(Error(FSComp.SR.tcAutoPropertyRequiresImplicitConstructionSequence(),m))
             | SynMemberDefn.LetBindings (_,false,_,m) :: _ -> errorR(Error(FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence(),m))
             | SynMemberDefn.AbstractSlot (_,_,m)            :: _ 
             | SynMemberDefn.Interface (_,_,m)          :: _ 
             | SynMemberDefn.Inherit (_,_,m)            :: _ 
             | SynMemberDefn.ValField (_,m)                :: _ 
             | SynMemberDefn.NestedType (_,_,m)              :: _ -> errorR(InternalError("CheckMembersForm: List.takeUntil is wrong",m))
             | _ -> ()
                     

    /// Parallels SplitTyconSignature/SplitTyconDefn]
    /// Separates the definition into core (shape) and body.
    /// core = synTyconInfo,simpleRepr,interfaceTypes
    ///        where simpleRepr can contain inherit type, declared fields and virtual slots.
    /// body = members
    ///        where members contain methods/overrides, also implicit ctor, inheritCall and local definitions.
    ///------
    /// The tinfos arg are the enclosing types when processing nested types...
    /// The tinfos arg is not currently used... just stacked up.
    let rec private SplitTyconDefn (cenv:cenv) tinfos (TypeDefn(synTyconInfo,trepr,extraMembers,_)) =
        let implements1 = List.choose (function SynMemberDefn.Interface (ty,_,_) -> Some(ty,ty.Range) | _ -> None) extraMembers
        match trepr with
        | SynTypeDefnRepr.ObjectModel(kind,cspec,m) ->
            CheckMembersForm cspec;
            let fields      = cspec |> List.choose (function SynMemberDefn.ValField (f,_) -> Some(f) | _ -> None)
            let implements2 = cspec |> List.choose (function SynMemberDefn.Interface (ty,_,_) -> Some(ty,ty.Range) | _ -> None)
            let inherits    = cspec |> List.choose (function 
                                                          | SynMemberDefn.Inherit          (ty,idOpt,m)     -> Some(ty,m,idOpt)
                                                          | SynMemberDefn.ImplicitInherit (ty,_,idOpt,m) -> Some(ty,m,idOpt)
                                                          | _ -> None)
            let tycons      = cspec |> List.choose (function SynMemberDefn.NestedType (x,_,_) -> Some(x) | _ -> None)
            let slotsigs    = cspec |> List.choose (function SynMemberDefn.AbstractSlot (x,y,_) -> Some(x,y) | _ -> None)
           
            let members = 
                let membersIncludingAutoProps     = 
                    cspec |> List.filter (fun memb -> 
                      match memb with 
                      | SynMemberDefn.Interface _
                      | SynMemberDefn.Member _ 
                      | SynMemberDefn.LetBindings _
                      | SynMemberDefn.ImplicitCtor _
                      | SynMemberDefn.AutoProperty _ 
                      | SynMemberDefn.Open _
                      | SynMemberDefn.ImplicitInherit _ -> true
                      | SynMemberDefn.NestedType  (_,_,m)  -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(),m)); false
                      // covered above 
                      | SynMemberDefn.ValField _   
                      | SynMemberDefn.Inherit _ 
                      | SynMemberDefn.AbstractSlot _ -> false)

                // Convert autoproperties to let bindings in the pre-list
                let rec preAutoProps memb =
                    match memb with 
                    | SynMemberDefn.AutoProperty (attribs, isStatic, id, tyOpt, propKind, _, xmlDoc, _access, synExpr, _mGetSet, mWholeAutoProp) -> 
                        // Only the keep the field-targeted attributes
                        let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> true | _ -> false)
                        let mLetPortion = synExpr.Range
                        let fldId = ident (CompilerGeneratedName id.idText, mLetPortion)
                        let headPat = SynPat.LongIdent (LongIdentWithDots([fldId],[]),None,Some noInferredTypars,[],None,mLetPortion)
                        let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty,SynInfo.unnamedRetVal),ty.Range))
                        let isMutable = 
                            match propKind with 
                            | MemberKind.PropertySet 
                            | MemberKind.PropertyGetSet -> true 
                            | _ -> false
                        let binding = mkSynBinding (xmlDoc,headPat) (None,false,isMutable,mLetPortion,NoSequencePointAtInvisibleBinding,retInfo,synExpr,synExpr.Range,[],attribs,None)

                        [(SynMemberDefn.LetBindings ([binding], isStatic, false, mWholeAutoProp))]

                    | SynMemberDefn.Interface (_, Some membs, _) -> membs |> List.collect preAutoProps
                    | SynMemberDefn.LetBindings _
                    | SynMemberDefn.ImplicitCtor _ 
                    | SynMemberDefn.Open _
                    | SynMemberDefn.ImplicitInherit _ -> [memb]
                    | _ -> []

                // Convert autoproperties to member bindings in the post-list
                let rec postAutoProps memb =
                    match memb with 
                    | SynMemberDefn.AutoProperty (attribs,isStatic,id,tyOpt,propKind,memberFlags,xmlDoc,access,_synExpr,mGetSetOpt,_mWholeAutoProp)  ->
                        let mMemberPortion = id.idRange
                        // Only the keep the non-field-targeted attributes
                        let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true)
                        let fldId = ident (CompilerGeneratedName id.idText, mMemberPortion)
                        let headPatIds = if isStatic then [id] else [ident ("__",mMemberPortion);id]
                        let headPat = SynPat.LongIdent (LongIdentWithDots(headPatIds,[]),None,Some noInferredTypars,[],None,mMemberPortion)

                        match propKind,mGetSetOpt with 
                        | MemberKind.PropertySet,Some m -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(),m));
                        | _ -> ()
       
                        [ 
                            match propKind with 
                            | MemberKind.Member
                            | MemberKind.PropertyGet 
                            | MemberKind.PropertyGetSet -> 
                                let getter = 
                                    let rhsExpr = SynExpr.Ident fldId
                                    let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty,SynInfo.unnamedRetVal),ty.Range))
                                    let binding = mkSynBinding (xmlDoc,headPat) (access,false,false,mMemberPortion,NoSequencePointAtInvisibleBinding,retInfo,rhsExpr,rhsExpr.Range,[],attribs,Some (memberFlags MemberKind.Member))
                                    SynMemberDefn.Member (binding,mMemberPortion) 
                                yield getter
                            | _ -> ()

                            match propKind with 
                            | MemberKind.PropertySet 
                            | MemberKind.PropertyGetSet -> 
                                let setter = 
                                    let vId = ident("v",mMemberPortion)
                                    let headPat = SynPat.LongIdent (LongIdentWithDots(headPatIds,[]),None,Some noInferredTypars,[mkSynPatVar None vId],None,mMemberPortion)
                                    let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId)
                                    //let retInfo = match tyOpt with None -> None | Some ty -> Some (SynReturnInfo((ty,SynInfo.unnamedRetVal),ty.Range))
                                    let binding = mkSynBinding (xmlDoc,headPat) (access,false,false,mMemberPortion,NoSequencePointAtInvisibleBinding,None,rhsExpr,rhsExpr.Range,[],[],Some (memberFlags MemberKind.PropertySet))
                                    SynMemberDefn.Member (binding,mMemberPortion) 
                                yield setter 
                            | _ -> ()]
                    | SynMemberDefn.Interface (ty, Some membs, m) -> 
                        let membs' = membs |> List.collect postAutoProps
                        [SynMemberDefn.Interface (ty, Some membs', m)]
                    | SynMemberDefn.LetBindings _
                    | SynMemberDefn.ImplicitCtor _ 
                    | SynMemberDefn.Open _
                    | SynMemberDefn.ImplicitInherit _ -> []
                    | _ -> [memb]

                let preMembers = membersIncludingAutoProps |> List.collect preAutoProps
                let postMembers = membersIncludingAutoProps |> List.collect postAutoProps

                preMembers @ postMembers

            let a,b = SplitTyconDefns cenv (tinfos @ [synTyconInfo]) tycons

            let isConcrete = 
                members |> List.exists (function 
                    | SynMemberDefn.Member(Binding(_,_,_,_,_,_,SynValData(Some memberFlags,_,_),_,_,_,_,_),_) -> not memberFlags.IsDispatchSlot 
                    | SynMemberDefn.Interface (_,defOpt,_) -> isSome defOpt
                    | SynMemberDefn.LetBindings _ -> true
                    | SynMemberDefn.ImplicitCtor _ -> true
                    | SynMemberDefn.ImplicitInherit _ -> true
                    | _ -> false)

            let isIncrClass = 
                members |> List.exists (function 
                    | SynMemberDefn.ImplicitCtor _ -> true
                    | _ -> false)

            let hasSelfReferentialCtor = 
                members |> List.exists (function 
                    | SynMemberDefn.ImplicitCtor (_,_,_,thisIdOpt,_) 
                    | SynMemberDefn.Member(Binding(_,_,_,_,_,_,SynValData(_,_,thisIdOpt),_,_,_,_,_),_) -> thisIdOpt.IsSome
                    | _ -> false)

            let implicitCtorSynPats = 
                members |> List.tryPick (function 
                    | SynMemberDefn.ImplicitCtor (_,_,spats,_, _)  -> Some spats
                    | _ -> None)

            // An ugly bit of code to pre-determine if a type has a nullary constructor, prior to establishing the 
            // members of the type
            let preEstablishedHasDefaultCtor = 
                members |> List.exists (function 
                    | SynMemberDefn.Member(Binding(_,_,_,_,_,_,SynValData(Some memberFlags,_,_),SynPatForConstructorDecl(SynPatForNullaryArgs),_,_,_,_),_) -> 
                        memberFlags.MemberKind=MemberKind.Constructor 
                    | SynMemberDefn.ImplicitCtor (_,_,spats,_, _) -> isNil spats
                    | _ -> false)
                    
            let core = TyconDefnCore(synTyconInfo, SynTypeDefnSimpleRepr.General(kind,inherits,slotsigs,fields,isConcrete,isIncrClass,implicitCtorSynPats,m), implements2@implements1, preEstablishedHasDefaultCtor, hasSelfReferentialCtor)

            core :: a, members :: b

        | SynTypeDefnRepr.Simple(r,_) -> 
            let members = []
            let core = TyconDefnCore(synTyconInfo,r,implements1,false,false)
            [ core ],[ members ]

    and private SplitTyconDefns cenv tinfos tycons = 
        let a,b = List.unzip (List.map (SplitTyconDefn cenv tinfos) tycons)
        List.concat a, List.concat b 

    let private PrepareTyconMemberDefns isAtOriginalTyconDefn cenv env  (synTyconInfo, baseValOpt, safeInitInfo, members, tyDeclm, m) =
        let (ComponentInfo(_,typars, cs,longPath, _, _, _,_)) = synTyconInfo

        let declKind,tcref, declaredTyconTypars = ComputeTyconDeclKind isAtOriginalTyconDefn cenv env false tyDeclm typars cs longPath

        let newslotsOK = (if isAtOriginalTyconDefn && tcref.IsFSharpObjectModelTycon then NewSlotsOK else NoNewSlots) // NewSlotsOK only on fsobjs 

        if nonNil members && tcref.IsTypeAbbrev then errorR(Error(FSComp.SR.tcTypeAbbreviationsCannotHaveAugmentations(), tyDeclm));

        TyconMemberData(declKind, tcref, baseValOpt, safeInitInfo, declaredTyconTypars, members, m, newslotsOK)

    //-------------------------------------------------------------------------
    // Bind type definitions - main
    //------------------------------------------------------------------------- 

    let TcTyconDefns cenv env parent tpenv (typeDefs: SynTypeDefn list,m,scopem) =
        let typeDefCores,tyconDefnMembers = SplitTyconDefns cenv [] typeDefs
        let tycons, env, baseValOpts, safeInitValOpts = EstablishTypeDefinitionCores.TcTyconDefnCores cenv env false parent tpenv (typeDefCores,m,scopem)
        let augments = 
            (List.zip typeDefs typeDefCores, List.zip baseValOpts safeInitValOpts, tyconDefnMembers) |||> List.map3 (fun (TypeDefn(synTyconInfo,_,extraMembers,m), TyconDefnCore(_,repr,_,_,_)) (baseValOpt, safeInitInfo) members -> 
                   let isAtOriginalTyconDefn = not (EstablishTypeDefinitionCores.isAugmentationTyconDefnRepr repr)
                   PrepareTyconMemberDefns isAtOriginalTyconDefn cenv env (synTyconInfo, baseValOpt, safeInitInfo, members@extraMembers, synTyconInfo.Range, m))  // TODO gotoDef on 'm' here goes to wrong m, but only inside production.proj
              
        let valExprBuilders,env = TcTyconMemberDefns cenv env parent m scopem augments

        // Note: generating these bindings must come after generating the members, since some in the case of structs some fields
        // may be added by generating the implicit construction syntax 
        let binds = tycons |> List.collect (AddAugmentationDeclarations.AddGenericHashAndComparisonBindings cenv)
        let binds3 = tycons |> List.collect (AddAugmentationDeclarations.AddGenericEqualityBindings cenv env)

        // Check for cyclic structs and inheritance all over again, since we may have added some fields to the struct when generating the implicit construction syntax 
        EstablishTypeDefinitionCores.CheckForCyclicStructsAndInheritance cenv tycons;

        (binds @ valExprBuilders @ binds3),tycons,env  


    //-------------------------------------------------------------------------
    // Bind type specifications
    //------------------------------------------------------------------------- 

    /// Parallels split_tycon[Spfn/Defn] 
    let rec private SplitTyconSignature tinfos (TypeDefnSig(synTyconInfo,trepr,extraMembers,_)) = 
        let implements1 = 
            extraMembers |> List.choose (function SynMemberSig.Interface (f,m) -> Some(f,m) | _ -> None) 
        match trepr with
        | SynTypeDefnSigRepr.ObjectModel(kind,cspec,m) -> 
            let fields      = cspec |> List.choose (function SynMemberSig.ValField (f,_) -> Some(f) | _ -> None)
            let implements2 = cspec |> List.choose (function SynMemberSig.Interface (ty,m) -> Some(ty,m) | _ -> None)
            let inherits    = cspec |> List.choose (function SynMemberSig.Inherit (ty,_) -> Some(ty,m,None) | _ -> None)
            let nestedTycons = cspec |> List.choose (function SynMemberSig.NestedType (x,_) -> Some(x) | _ -> None)
            let slotsigs    = cspec |> List.choose (function SynMemberSig.Member (v,fl,_) when fl.IsDispatchSlot -> Some(v,fl) | _ -> None)
            let members     = cspec |> List.filter (function   
                                                          | SynMemberSig.Interface _ -> true
                                                          | SynMemberSig.Member (_,memberFlags,_) when not memberFlags.IsDispatchSlot -> true
                                                          | SynMemberSig.NestedType  (_,m) -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(),m)); false
                                                          | _ -> false)
            let isConcrete = 
                members |> List.exists (function 
                    | SynMemberSig.Member (_,memberFlags,_) -> memberFlags.MemberKind=MemberKind.Constructor 
                    | _ -> false)

            // An ugly bit of code to pre-determine if a type has a nullary constructor, prior to establishing the 
            // members of the type
            let preEstablishedHasDefaultCtor = 
                members |> List.exists (function 
                    | SynMemberSig.Member (valSpfn,memberFlags,_) -> 
                        memberFlags.MemberKind=MemberKind.Constructor  && 
                        // REVIEW: This is a syntactic approximation
                        (match valSpfn.SynType, valSpfn.SynInfo.ArgInfos with 
                         | SynType.Fun (SynType.LongIdent (LongIdentWithDots([id],_)), _, _), [[_]] when id.idText = "unit" ->  true
                         | _ -> false) 
                    | _ -> false) 

            let hasSelfReferentialCtor = false
            
            let a,b = nestedTycons |> SplitTyconSignatures (tinfos @ [synTyconInfo]) 
            
            let tyconCore = TyconDefnCore (synTyconInfo, SynTypeDefnSimpleRepr.General(kind,inherits,slotsigs,fields,isConcrete,false,None,m),implements2@implements1,preEstablishedHasDefaultCtor,hasSelfReferentialCtor)

            [ tyconCore ] @ a,
            [ (synTyconInfo,true,members@extraMembers) ] @ b

        // 'type X with ...' in a signature is always interpreted as an extrinsic extension.
        // Representation-hidden types with members and interfaces are written 'type X = ...' 
        | SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.None _,_) when nonNil extraMembers -> 
            let isAtOriginalTyconDefn = false
            [],[ (synTyconInfo,isAtOriginalTyconDefn,extraMembers) ]

        | SynTypeDefnSigRepr.Simple(r,_) -> 
            let tyconCore = TyconDefnCore (synTyconInfo, r, implements1, false, false)
            [ tyconCore ],[ (synTyconInfo,true,extraMembers) ] 

    and private SplitTyconSignatures tinfos tycons = 
        let a,b = tycons |> List.map (SplitTyconSignature tinfos) |> List.unzip 
        List.concat a, List.concat b 

    let private TcTyconSignatureMemberSpecs cenv env parent tpenv tyconDefnMembers =
        (tpenv, tyconDefnMembers) ||> List.mapFold (fun tpenv (synTyconInfo,isAtOriginalTyconDefn,members) -> 
            let (ComponentInfo(_,typars,cs,longPath, _, _, _,m)) = synTyconInfo
            let declKind,tcref,declaredTyconTypars = ComputeTyconDeclKind isAtOriginalTyconDefn cenv env true m typars cs longPath

            let envinner = AddDeclaredTypars CheckForDuplicateTypars declaredTyconTypars env
            let envinner = MakeInnerEnvForTyconRef cenv envinner tcref (declKind = ExtrinsicExtensionBinding) 

            TcTyconMemberSpecs cenv envinner (TyconContainerInfo(parent, tcref, declaredTyconTypars, NoSafeInitInfo)) declKind tpenv members)

    let TcTyconSignatures cenv env parent tpenv (tspecs:SynTypeDefnSig list,m,scopem) =
        let typeDefCores,tyconDefnMembers = SplitTyconSignatures [] tspecs
        let _, env, _, _ = EstablishTypeDefinitionCores.TcTyconDefnCores cenv env true parent tpenv (typeDefCores,m,scopem)
        let _ = TcTyconSignatureMemberSpecs cenv env parent tpenv tyconDefnMembers
        env
end

//-------------------------------------------------------------------------
// Bind module types
//------------------------------------------------------------------------- 

let AdjustModuleName modKind nm = (match modKind with FSharpModuleWithSuffix -> nm^FSharpModuleSuffix | _ -> nm)


let rec TcSignatureElement cenv parent endm (env: TcEnv) e : Eventually =
  eventually {
    try 
        match e with 
        | SynModuleSigDecl.Exception (edef,m) ->
            let scopem = unionRanges m.EndRange endm
            let _,_,_,env = TcExceptionDeclarations.TcExnSignature cenv env parent emptyUnscopedTyparEnv (edef,scopem)
            return env

        | SynModuleSigDecl.Types (tspecs,m) -> 
            let scopem = unionRanges m endm
            let env = TcTypeDeclarations.TcTyconSignatures cenv env parent emptyUnscopedTyparEnv (tspecs,m,scopem)
            return env 

        | SynModuleSigDecl.Open (mp,m) -> 
            let scopem = unionRanges m.EndRange endm
            let env = TcOpenDecl cenv.tcSink cenv.g cenv.amap m scopem env mp
            return env

        | SynModuleSigDecl.Val (vspec,m) -> 
            let parentModule = 
                match parent with 
                | ParentNone -> error(NumberedError(FSComp.SR.tcNamespaceCannotContainValues(),vspec.RangeOfId)) 
                | Parent p -> p
            let containerInfo = ModuleOrNamespaceContainerInfo(parentModule)
            let idvs,_ = TcAndPublishValSpec (cenv,env,containerInfo,ModuleOrMemberBinding,None,emptyUnscopedTyparEnv,vspec)
            let scopem = unionRanges m endm
            let env = List.foldBack (AddLocalVal cenv.tcSink scopem) idvs env
            return env

        | SynModuleSigDecl.NestedModule(ComponentInfo(attribs,_parms, _constraints,longPath,xml,_,vis,im),mdefs,m) ->
            let id = ComputeModuleName longPath
            let vis,_ = ComputeAccessAndCompPath env None im vis parent
            let! (mspec,_) = TcModuleOrNamespaceSignature cenv env (id,true,mdefs,xml,attribs,vis,m)
            let scopem = unionRanges m endm
            PublishModuleDefn cenv env mspec; 
            let env = AddLocalSubModule cenv.tcSink cenv.g cenv.amap m scopem env mspec
            return env
            
        | SynModuleSigDecl.ModuleAbbrev (id,p,m) -> 
            let ad = env.eAccessRights
            let mvvs = ForceRaise (ResolveLongIndentAsModuleOrNamespace OpenQualified env.eNameResEnv ad p)
            let scopem = unionRanges m endm
            let modrefs = mvvs |> List.map p23 
            if modrefs.Length > 0 && modrefs |> List.forall (fun modref -> modref.IsNamespace) then 
                errorR(Error(FSComp.SR.tcModuleAbbreviationForNamespace(fullDisplayTextOfModRef (List.head modrefs)),m));
            let modrefs = modrefs |> List.filter (fun modref -> not modref.IsNamespace)
            modrefs |> List.iter (fun modref -> CheckEntityAttributes cenv.g modref m |> CommitOperationResult);        
            
            let env = 
                if modrefs.Length > 0 then AddModuleAbbreviation cenv.tcSink scopem id modrefs env 
                else env
            return env

        | SynModuleSigDecl.HashDirective _ -> 
            return env


        | SynModuleSigDecl.NamespaceFragment (SynModuleOrNamespaceSig(longId,isModule,defs,xml,attribs,vis,m)) -> 

            do for id in longId do 
                 CheckNamespaceModuleOrTypeName cenv.g id;

            let enclosingNamespacePath = if isModule then fst (List.frontAndBack longId) else longId
            let defs = 
                if isModule then 
                    [SynModuleSigDecl.NestedModule(ComponentInfo(attribs,[], [],[snd(List.frontAndBack longId)],xml,false,vis,m),defs,m)] 
                else 
                    defs
            let envinner = LocateEnv cenv.topCcu env enclosingNamespacePath
            let envinner = ImplicitlyOpenOwnNamespace cenv.tcSink cenv.g cenv.amap m enclosingNamespacePath envinner
            
            let! envAtEnd = TcSignatureElements cenv ParentNone m.EndRange envinner xml defs
            let env = 
                if isNil enclosingNamespacePath then 
                    envAtEnd
                else
                    let modulTypeRoot = BuildRootModuleType enclosingNamespacePath envinner.eCompPath !(envinner.eModuleOrNamespaceTypeAccumulator)

                    let env = AddLocalRootModuleOrNamespace cenv.tcSink cenv.g cenv.amap m env modulTypeRoot
                    // Publish the combined module type
                    env.eModuleOrNamespaceTypeAccumulator := combineModuleOrNamespaceTypeList [] m [!(env.eModuleOrNamespaceTypeAccumulator); modulTypeRoot]
                    env

            return env
            
    with e -> 
        errorRecovery e endm; 
        return env
  }

and TcSignatureElements cenv parent endm env xml defs = 
    eventually {
        // Ensure the deref_nlpath call in UpdateAccModuleOrNamespaceType succeeds 
        if cenv.compilingCanonicalFslibModuleType then 
            ensureCcuHasModuleOrNamespaceAtPath cenv.topCcu env.ePath env.eCompPath (xml.ToXmlDoc());

        return! Eventually.fold (TcSignatureElement cenv parent endm) env defs
    }

and ComputeModuleOrNamespaceKind g isModule attribs = 
    if not isModule then Namespace 
    elif ModuleNameIsMangled g attribs then FSharpModuleWithSuffix 
    else ModuleOrType

and TcModuleOrNamespaceSignature cenv env (id:Ident,isModule,defs,xml,attribs,vis,m) =
  eventually {
    let attribs = TcAttributes cenv env AttributeTargets.ModuleDecl attribs
    CheckNamespaceModuleOrTypeName cenv.g id;
    let modKind = ComputeModuleOrNamespaceKind cenv.g isModule attribs
    if isModule then CheckForDuplicateConcreteType cenv env (AdjustModuleName modKind id.idText) id.idRange;
    if isModule then CheckForDuplicateModule cenv env id.idText id.idRange;

    // Now typecheck the signature, accumulating and then recording the submodule description. 
    let id = ident (AdjustModuleName modKind id.idText, id.idRange)

    let mspec = NewModuleOrNamespace  (Some env.eCompPath) vis id (xml.ToXmlDoc()) attribs (notlazy (NewEmptyModuleOrNamespaceType modKind)) 

    let innerParent = mkLocalModRef mspec
    
    let! (mtyp,envAtEnd) = TcModuleOrNamespaceSignatureElements cenv (Parent innerParent) env (id,modKind,defs,m,xml)

#if DEBUG
    if !verboseStamps then 
        dprintf "TcModuleOrNamespaceSignature: %s#%d, vis = %s\n" mspec.LogicalName mspec.Stamp (stringOfAccess vis);
#endif

    mspec.Data.entity_modul_contents <- notlazy mtyp; 
    
    return (mspec, envAtEnd)
  }

and TcModuleOrNamespaceSignatureElements cenv parent env (id,modKind,defs,m:range,xml) =

  eventually {
    let endm = m.EndRange // use end of range for errors 

    // Create the module type that will hold the results of type checking.... 
    let envinner,mtypeAcc = MakeInnerEnv env id modKind

    // Now typecheck the signature, using mutation to fill in the submodule description. 
    let! envAtEnd = TcSignatureElements cenv parent endm envinner xml defs
    
    // mtypeAcc has now accumulated the module type 
    return !mtypeAcc, envAtEnd
  }
    
//-------------------------------------------------------------------------
// Bind definitions within modules
//------------------------------------------------------------------------- 

let rec TcModuleOrNamespaceElement (cenv:cenv) parent scopem env e = // : ((ModuleOrNamespaceExpr list -> ModuleOrNamespaceExpr list) * _) * tcEnv =
  eventually {
    cenv.synArgNameGenerator.Reset()
    let tpenv = emptyUnscopedTyparEnv

    //printfn "----------\nCHECKING, e = %+A\n------------------\n" e
    try 
      match e with 

      | SynModuleDecl.ModuleAbbrev (id,p,m) -> 
          let ad = env.eAccessRights
          let mvvs = ForceRaise (ResolveLongIndentAsModuleOrNamespace OpenQualified env.eNameResEnv ad p)
          let modrefs = mvvs |> List.map p23 
          if modrefs.Length > 0 && modrefs |> List.forall (fun modref -> modref.IsNamespace) then 
              errorR(Error(FSComp.SR.tcModuleAbbreviationForNamespace(fullDisplayTextOfModRef (List.head modrefs)),m));
          let modrefs = modrefs |> List.filter (fun mvv -> not mvv.IsNamespace)
          modrefs |> List.iter (fun modref -> CheckEntityAttributes cenv.g modref m |> CommitOperationResult);        
          let env = (if modrefs.Length > 0 then AddModuleAbbreviation cenv.tcSink scopem id modrefs env else env)
          return ((fun e -> e), []), env, env

      | SynModuleDecl.Exception (edef,m) -> 
          let binds,decl,env = TcExceptionDeclarations.TcExnDefn cenv env parent tpenv (edef,scopem)
          return ((fun e -> TMDefRec([decl], FlatList.ofList binds, [],m) :: e),[]), env, env

      | SynModuleDecl.Types (typeDefs,m) -> 
          let scopem = unionRanges m scopem
          let binds,tycons,env' = TcTypeDeclarations.TcTyconDefns cenv env parent tpenv (typeDefs,m,scopem)
          // Check the non-escaping condition as we build the expression on the way back up 
          let exprfWithEscapeCheck e = 
              let freeInEnv = GeneralizationHelpers.ComputeUnabstractableTycons env
              tycons |> List.iter(fun tycon -> 
                  if not tycon.IsTypeAbbrev && Zset.contains tycon freeInEnv then 
                     let nm = tycon.DisplayName
                     errorR(Error(FSComp.SR.tcTypeUsedInInvalidWay(nm, nm, nm), tycon.Range)));

              let freeInEnv = GeneralizationHelpers.ComputeUnabstractableTraitSolutions env
              binds |> List.iter(fun bind -> 
                  let nm = bind.Var.DisplayName
                  if Zset.contains bind.Var freeInEnv then errorR(Error(FSComp.SR.tcMemberUsedInInvalidWay(nm, nm, nm), bind.Var.Range)));

              TMDefRec(tycons,FlatList.ofList binds,[],m) :: e

          return (exprfWithEscapeCheck,[]),env', env'

      | SynModuleDecl.Open (LongIdentWithDots(mp,_),m) -> 
          let scopem = unionRanges m.EndRange scopem
          let env = TcOpenDecl cenv.tcSink cenv.g cenv.amap m scopem env mp
          return ((fun e -> e),[]), env, env

      | SynModuleDecl.Let (letrec, binds, m) -> 

          match parent with
          | ParentNone ->
            
                match binds with 
                // ignore solitary '()' expressions and 'do ()' bindings, since these are allowed in namespaces
                // for the purposes of attaching attributes to an assembly, e.g. 
                //   namespace A.B.C
                //     []
                //     do()

                | [ Binding (None,(StandaloneExpression | DoBinding),false,false,[],_,_,_,
                            None,(SynExpr.Do (SynExpr.Const (SynConst.Unit,_),_) | SynExpr.Const (SynConst.Unit,_)),
                            _,_) ] ->
                    return (id,[]), env, env
                | [] -> 
                    return error(NumberedError(FSComp.SR.tcNamespaceCannotContainValues(),m)) 
                | _ -> 
                    return error(NumberedError(FSComp.SR.tcNamespaceCannotContainValues(),binds.Head.RangeOfHeadPat)) 

          | Parent parentModule -> 
              //do 
              //    for b in binds do
              //        printfn "----------\nb = %+A\n------------------\n" b
              //        match b with 
              //        | Binding (None,DoBinding,_,_,_,_,_,_,BindingRhs(_,_,e),_,_) ->
              //            printfn "----------\ne = %+A, #binds = %d\n------------------\n" e binds.Length
              //        | _ -> 
              //            ()
              let containerInfo = ModuleOrNamespaceContainerInfo(parentModule)
              if letrec then 
                let scopem = unionRanges m scopem
                let binds = binds |> List.map (fun bind -> RecBindingDefn(containerInfo,NoNewSlots,ModuleOrMemberBinding,bind))
                let binds,env,_ = TcLetrec  WarnOnOverrides cenv env tpenv (binds,m, scopem)
                return ((fun e -> TMDefRec([],FlatList.ofList binds,[],m) :: e),[]), env, env
              else 
                let binds,env,_ = TcLetBindings cenv env containerInfo ModuleOrMemberBinding tpenv (binds,m,scopem)
                return ((fun e -> binds@e),[]), env, env 

      | SynModuleDecl.DoExpr (spExpr,expr, m) -> 

          let bind = 
              Binding (None,
                       StandaloneExpression,
                       false,false,[],PreXmlDoc.Empty,SynInfo.emptySynValData,
                       SynPat.Wild m,
                       None,expr,m,spExpr)

          return! TcModuleOrNamespaceElement cenv parent scopem env (SynModuleDecl.Let(false,[bind],m))

      | SynModuleDecl.Attributes (synAttrs,_) -> 
          let attrs = TcAttributesWithPossibleTargets cenv env AttributeTargets.Top synAttrs
          return ((fun e -> e), attrs), env, env

      | SynModuleDecl.HashDirective _ -> 
          return ((fun e -> e), []), env, env

      | SynModuleDecl.NestedModule(ComponentInfo(attribs,_parms, _constraints,longPath,xml,_,vis,im),mdefs,isContinuingModule,m) ->
          let id = ComputeModuleName longPath

          let modAttrs = TcAttributes cenv env AttributeTargets.ModuleDecl attribs
          let modKind = ComputeModuleOrNamespaceKind cenv.g true modAttrs

          CheckForDuplicateConcreteType cenv env (AdjustModuleName modKind id.idText) im;
          CheckForDuplicateModule cenv env id.idText id.idRange;
          let vis,_ = ComputeAccessAndCompPath env None id.idRange vis parent
             
          let! (topAttrsNew, _,ModuleOrNamespaceBinding(mspecPriorToOuterOrExplicitSig,mexpr)),_,envAtEnd =
              TcModuleOrNamespace cenv env (id,true,mdefs,xml,modAttrs,vis,m)

          let mspec = mspecPriorToOuterOrExplicitSig
          let mdef = TMDefRec([],FlatList.empty,[ModuleOrNamespaceBinding(mspecPriorToOuterOrExplicitSig,mexpr)],m)
          PublishModuleDefn cenv env mspec; 
          let env = AddLocalSubModule cenv.tcSink cenv.g cenv.amap m scopem env mspec
          
          // isContinuingModule is true for all of the following
          //   - the implicit module of a script 
          //   - the major 'module' declaration for a file stating with 'module X.Y' 
          //   - an interactive entry for F# Interactive 
          // In this case the envAtEnd is the environment at the end of this module
          let envAtEnd = (if isContinuingModule then envAtEnd  else env)
          
          return ((fun e -> mdef :: e),topAttrsNew), env, envAtEnd
      

      | SynModuleDecl.NamespaceFragment(SynModuleOrNamespace(longId,isModule,defs,xml,attribs,vis,m)) ->

          if !progress then dprintn ("Typecheck implementation "^textOfLid longId);
          let endm = m.EndRange

          do for id in longId do 
               CheckNamespaceModuleOrTypeName cenv.g id;

          let enclosingNamespacePath = if isModule then fst (List.frontAndBack longId) else longId
          let defs = 
              if isModule then 
                  [SynModuleDecl.NestedModule(ComponentInfo(attribs,[], [],[snd(List.frontAndBack longId)],xml,false,vis,m),defs,true,m)] 
              else 
                  defs
          let envinner = LocateEnv cenv.topCcu env enclosingNamespacePath
          let envinner = ImplicitlyOpenOwnNamespace cenv.tcSink cenv.g cenv.amap m enclosingNamespacePath envinner

          let! mexpr, topAttrs, _, envAtEnd = TcModuleOrNamespaceElements cenv parent endm envinner xml defs
          
          let env = 
              if isNil enclosingNamespacePath then 
                  envAtEnd
              else
                  let modulTypeRoot = BuildRootModuleType enclosingNamespacePath envinner.eCompPath !(envinner.eModuleOrNamespaceTypeAccumulator)

                  let env = AddLocalRootModuleOrNamespace cenv.tcSink cenv.g cenv.amap m env modulTypeRoot
                  // Publish the combined module type
                  env.eModuleOrNamespaceTypeAccumulator := combineModuleOrNamespaceTypeList [] m [!(env.eModuleOrNamespaceTypeAccumulator); modulTypeRoot]
                  env
          
          let mexprRoot = BuildRootModuleExpr enclosingNamespacePath envinner.eCompPath mexpr

          return ((fun e -> mexprRoot :: e),topAttrs), env, envAtEnd

    with exn -> 
        errorRecovery exn e.Range; 
        return ((fun e -> e), []), env, env
 }
 
and TcModuleOrNamespaceElementsAux cenv parent endm (defsSoFar, env, envAtEnd) (moreDefs: SynModuleDecl list) =
 eventually {
    match moreDefs with 
    | (h1 :: t) ->
        // Lookahead one to find out the scope of the next declaration.
        let scopem = 
            if isNil t then unionRanges h1.Range endm
            else unionRanges (List.head t).Range endm

        // Possibly better:
        //let scopem = unionRanges h1.Range.EndRange endm
        
        let! h1',env', envAtEnd' = TcModuleOrNamespaceElement cenv parent scopem env h1
        // tail recursive 
        return! TcModuleOrNamespaceElementsAux  cenv parent endm ( (h1' :: defsSoFar), env', envAtEnd') t
    | [] -> 
        return List.rev defsSoFar,env, envAtEnd
 }

and TcModuleOrNamespaceElements cenv parent endm env xml defs =
  eventually {
    // Ensure the deref_nlpath call in UpdateAccModuleOrNamespaceType succeeds 
    if cenv.compilingCanonicalFslibModuleType then 
        ensureCcuHasModuleOrNamespaceAtPath cenv.topCcu env.ePath env.eCompPath (xml.ToXmlDoc());

    let! compiledDefs, env, envAtEnd = TcModuleOrNamespaceElementsAux cenv parent endm ([], env, env) defs
    // Apply the functions for each declaration to build the overall expression-builder 
    let mexpr = TMDefs(List.foldBack (fun (f,_) x -> f x) compiledDefs []) 

    // Collect up the attributes that are global to the file 
    let topAttrsNew = List.foldBack (fun (_,y) x -> y@x) compiledDefs []
    return (mexpr, topAttrsNew, env, envAtEnd)
  }  
    
and TcModuleOrNamespace cenv env (id,isModule,defs,xml,modAttrs,vis,m:range) =
  eventually {
    let endm = m.EndRange
    let modKind = ComputeModuleOrNamespaceKind cenv.g isModule modAttrs
    let id = ident (AdjustModuleName modKind id.idText, id.idRange)

    CheckNamespaceModuleOrTypeName cenv.g id;

    let envinner, mtypeAcc = MakeInnerEnv env id modKind
    
    // Create the new module specification to hold the accumulated results of the type of the module 
    // Also record this in the environment as the accumulator 
    let mspec = NewModuleOrNamespace (Some env.eCompPath) vis id (xml.ToXmlDoc()) modAttrs (notlazy (NewEmptyModuleOrNamespaceType modKind))

#if DEBUG
    if !verboseStamps then 
        dprintf "TcModuleOrNamespace: %s#%d\n" mspec.LogicalName mspec.Stamp;
#endif

    let innerParent = mkLocalModRef mspec

    // Now typecheck. 
    let! mexpr, topAttrs, env, envAtEnd = TcModuleOrNamespaceElements cenv (Parent innerParent) endm envinner xml defs 

    // Get the inferred type of the decls. It's precisely the one we created before checking 
    // and mutated as we went. Record it in the mspec. 
    mspec.Data.entity_modul_contents <- notlazy !mtypeAcc ; 

    return (topAttrs,mspec,ModuleOrNamespaceBinding(mspec,mexpr)), env, envAtEnd
 }


//--------------------------------------------------------------------------
// TypecheckOneImplFile - Typecheck all the namespace fragments in a file.
//-------------------------------------------------------------------------- 

let AddCcuToTcEnv(g,amap,scopem,env,ccu,autoOpens,internalsVisible) = 
    let env = AddNonLocalCcu g amap scopem env (ccu,internalsVisible)

#if AUTO_OPEN_ATTRIBUTES_AS_OPEN
    let env = List.fold (fun env p -> TcOpenDecl tcSink g amap scopem scopem env (pathToSynLid scopem (splitNamespace p))) env autoOpens
#else
    let env = 
        (env,autoOpens) ||> List.fold (fun env p -> 
            let warn() = 
                warning(Error(FSComp.SR.tcAttributeAutoOpenWasIgnored(p, ccu.AssemblyName),scopem));
                env
            let p = splitNamespace p 
            if isNil p then warn() else
            let h,t = List.frontAndBack p 
            let modref = mkNonLocalTyconRef (mkNonLocalEntityRef ccu (Array.ofList h))  t
            match modref.TryDeref with 
            | None ->  warn()
            | Some _ -> OpenModulesOrNamespaces TcResultsSink.NoSink g amap scopem env [modref]) 
#endif
    env

let CreateInitialTcEnv(g,amap,scopem,ccus) =
    List.fold (fun env (ccu,autoOpens,internalsVisible) -> AddCcuToTcEnv(g,amap,scopem,env,ccu,autoOpens,internalsVisible)) (emptyTcEnv g) ccus

type ConditionalDefines = 
    string list


/// The attributes that don't get attached to any declaration
type TopAttribs =
    { mainMethodAttrs: Attribs;
      netModuleAttrs: Attribs;
      assemblyAttrs : Attribs  }

let EmptyTopAttrs =
    { mainMethodAttrs=[];
      netModuleAttrs=[];
      assemblyAttrs =[]  }

let CombineTopAttrs topAttrs1 topAttrs2 =
    { mainMethodAttrs = topAttrs1.mainMethodAttrs @ topAttrs2.mainMethodAttrs;
      netModuleAttrs  = topAttrs1.netModuleAttrs @ topAttrs2.netModuleAttrs;
      assemblyAttrs   = topAttrs1.assemblyAttrs @ topAttrs2.assemblyAttrs } 

let rec IterTyconsOfModuleOrNamespaceType f (mty:ModuleOrNamespaceType) = 
    mty.AllEntities |> QueueList.iter (fun tycon -> f tycon);
    mty.ModuleAndNamespaceDefinitions |> List.iter (fun v -> 
        IterTyconsOfModuleOrNamespaceType f v.ModuleOrNamespaceType)


// Defaults get applied before the module signature is checked and before the implementation conditions on virtuals/overrides. 
// Defaults get applied in priority order. Defaults listed last get priority 0 (lowest), 2nd last priority 1 etc. 
let ApplyDefaults cenv g denvAtEnd m mexpr extraAttribs = 
    try
        let unsolved = Microsoft.FSharp.Compiler.FindUnsolved.UnsolvedTyparsOfModuleDef g cenv.amap denvAtEnd (mexpr,extraAttribs)

        GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv,denvAtEnd,m) unsolved;

        let applyDefaults priority =
              unsolved |> List.iter (fun tp -> 
                if not tp.IsSolved then 
                    // Apply the first default. If we're defaulting one type variable to another then 
                    // the defaults will be propagated to the new type variable. 
                    tp.Constraints |> List.iter (fun tpc -> 
                        match tpc with 
                        | TyparConstraint.DefaultsTo(priority2,ty2,m) when priority2 = priority -> 
                            let ty1 = mkTyparTy tp
                            if not tp.IsSolved  && not (typeEquiv cenv.g ty1 ty2) then
                                if verbose then dprintf "assigning default '%s' for variable '%s' near %a at priority %d\n" ((DebugPrint.showType ty2)) ((DebugPrint.showType ty1)) outputRange m priority2;
                                let csenv = MakeConstraintSolverEnv cenv.css m denvAtEnd
                                TryD (fun () -> ConstraintSolver.SolveTyparEqualsTyp csenv 0 m NoTrace ty1 ty2)
                                      (fun e -> solveTypAsError cenv denvAtEnd m ty1;
                                                ErrorD(ErrorFromApplyingDefault(g,denvAtEnd,tp,ty2,e,m)))
                                |> RaiseOperationResult;
                        | _ -> ()))
                    
        for priority = 10 downto 0 do
            applyDefaults priority

        // OK, now apply defaults for any unsolved HeadTypeStaticReq 
        unsolved |> List.iter (fun tp ->     
            if not tp.IsSolved then 
                if (tp.StaticReq <> NoStaticReq) then
                    ConstraintSolver.ChooseTyparSolutionAndSolve cenv.css denvAtEnd tp);
    with e -> errorRecovery e m


let CheckValueRestriction denvAtEnd rootSigOpt implFileTypePriorToSig m = 
    if isNone rootSigOpt then 

      let rec check (mty:ModuleOrNamespaceType) =
          for v in mty.AllValsAndMembers do
              let ftyvs = (freeInVal CollectTyparsNoCaching v).FreeTypars |> Zset.elements
              if (not v.IsCompilerGenerated && 
                  not (ftyvs |> List.exists (fun tp -> tp.IsFromError)) && 
                  // Do not apply the value restriction to methods and functions
                  // Note, normally these completely generalize their argument types anyway. However,
                  // some methods (property getters/setters, constructors) can't be as generic
                  // as they might naturally be, and these can leave type variables unsolved. See
                  // for example FSharp 1.0 3661.
                  (match v.ValReprInfo with None -> true | Some tvi -> tvi.HasNoArgs)) then 
                match ftyvs with 
                | tp :: _ -> errorR (ValueRestriction(denvAtEnd,false,v, tp,v.Range))
                | _ -> ();
          mty.ModuleAndNamespaceDefinitions |> List.iter (fun v -> check v.ModuleOrNamespaceType) 
      try check implFileTypePriorToSig with e -> errorRecovery e m


let SolveInternalUnknowns g cenv denvAtEnd mexpr extraAttribs =
    let unsolved = Microsoft.FSharp.Compiler.FindUnsolved.UnsolvedTyparsOfModuleDef g cenv.amap denvAtEnd (mexpr,extraAttribs)

    unsolved |> List.iter (fun tp -> 
            if (tp.Rigidity <> TyparRigidity.Rigid) && not tp.IsSolved then 
                ConstraintSolver.ChooseTyparSolutionAndSolve cenv.css denvAtEnd tp)

let CheckModuleSignature g cenv m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig mexpr =
        match rootSigOpt with 
        | None -> 
            // Deep copy the inferred type of the module 
            let implFileTypePriorToSigCopied = 
#if DEBUG
                if !verboseStamps then dprintf "Compilation unit type before copy:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityTypeL implFileTypePriorToSig)));
#endif
                let res = copyModuleOrNamespaceType g CloneAll implFileTypePriorToSig
#if DEBUG
                if !verboseStamps then dprintf "Compilation unit type after copy:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityTypeL res)));
#endif
                res

            ModuleOrNamespaceExprWithSig(implFileTypePriorToSigCopied,mexpr,m)
            
        | Some sigFileType -> 

            // We want to show imperative type variables in any types in error messages at this late point 
            let denv = { denvAtEnd with showImperativeTyparAnnotations=true; }
            begin 
                try 
                
                    // As typechecked the signature and implementation use different tycons etc. 
                    // Here we (a) check there are enough names, (b) match them up to build a renaming and   
                    // (c) check signature conformance up to this renaming. 
                    if not (SignatureConformance.CheckNamesOfModuleOrNamespace denv (mkLocalTyconRef implFileSpecPriorToSig) sigFileType) then 
                        raise (ReportedError None);

                    // Compute the remapping from implementation to signature
                    let remapInfo ,_ = ComputeRemappingFromInferredSignatureToExplicitSignature cenv.g implFileTypePriorToSig sigFileType
                     
                    let aenv = { TypeEquivEnv.Empty with EquivTycons = TyconRefMap.OfList remapInfo.mrpiEntities }
                    
                    if not (SignatureConformance.Checker(cenv.g, cenv.amap, denv, remapInfo, true).CheckSignature  aenv (mkLocalModRef implFileSpecPriorToSig) sigFileType) then  (
                        // We can just raise 'ReportedError' since CheckModuleOrNamespace raises its own error 
                        raise (ReportedError None);
                    )
                with e -> errorRecovery e m;
            end;
            
            ModuleOrNamespaceExprWithSig(sigFileType,mexpr,m)


/// Check an entire implementation file
/// Typecheck, then close the inference scope and then check the file meets its signature (if any)
let TypecheckOneImplFile 
       // checkForErrors: A function to help us stop reporting cascading errors 
       (g, niceNameGen, amap, topCcu, checkForErrors, conditionalDefines, tcSink) 
       env 
       (rootSigOpt : ModuleOrNamespaceType option)
       (ParsedImplFileInput(_,isScript,qualNameOfFile,scopedPragmas,_,implFileFrags,isLastCompiland)) =

 eventually {
    let cenv = cenv.Create (g, isScript, niceNameGen, amap, topCcu, false, isSome rootSigOpt, conditionalDefines, tcSink, (LightweightTcValForUsingInBuildMethodCall g))    

    let envinner, mtypeAcc = MakeInitialEnv env 

    let defs = [ for x in implFileFrags -> SynModuleDecl.NamespaceFragment(x) ]
    let! mexpr, topAttrs, env, envAtEnd = TcModuleOrNamespaceElements cenv ParentNone qualNameOfFile.Range envinner PreXmlDocEmpty defs

    let implFileTypePriorToSig = !mtypeAcc 

    let topAttrs = 
        let mainMethodAttrs,others = topAttrs |> List.partition (fun (possTargets,_) -> possTargets &&& AttributeTargets.Method <> enum 0) 
        let assemblyAttrs,others = others |> List.partition (fun (possTargets,_) -> possTargets &&& AttributeTargets.Assembly <> enum 0) 
        // REVIEW: consider checking if '_others' is empty
        let netModuleAttrs, _others = others |> List.partition (fun (possTargets,_) -> possTargets &&& AttributeTargets.Module <> enum 0)
        { mainMethodAttrs = List.map snd mainMethodAttrs;
          netModuleAttrs  = List.map snd netModuleAttrs;
          assemblyAttrs   = List.map snd assemblyAttrs}
    let denvAtEnd = envAtEnd.DisplayEnv
    let m = qualNameOfFile.Range
    
    // This is a fake module spec
    let implFileSpecPriorToSig = wrapModuleOrNamespaceType qualNameOfFile.Id (compPathOfCcu topCcu) implFileTypePriorToSig

    let extraAttribs = topAttrs.mainMethodAttrs@topAttrs.netModuleAttrs@topAttrs.assemblyAttrs
    
    conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
        ApplyDefaults cenv g denvAtEnd m mexpr extraAttribs)

    // Check completion of all classes defined across this file. 
    // NOTE: this is not a great technique if inner signatures are permitted to hide 
    // virtual dispatch slots. 
    conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
        try implFileTypePriorToSig |> IterTyconsOfModuleOrNamespaceType (FinalTypeDefinitionChecksAtEndOfInferenceScope cenv.infoReader true denvAtEnd);
        with e -> errorRecovery e m)

    // Check the value restriction. Only checked if there is no signature.
    conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
      CheckValueRestriction denvAtEnd rootSigOpt implFileTypePriorToSig m)

    // Solve unsolved internal type variables 
    conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
        SolveInternalUnknowns g cenv denvAtEnd mexpr extraAttribs)

    // Check the module matches the signature 
    let implFileExprAfterSig = 
      conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
        CheckModuleSignature g cenv m denvAtEnd rootSigOpt implFileTypePriorToSig implFileSpecPriorToSig mexpr)

    // Run any additional checks registered for post-type-inference
    do 
      conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
         for check in cenv.postInferenceChecks do
            try  
                check()
            with e -> 
                errorRecovery e m)

    // We ALWAYS run the PostTypecheckSemanticChecks phase, though we if we have already encountered some
    // errors we turn off error reporting. THis is because it performs various fixups over the TAST, e.g. 
    // assigning nice names for inference variables.
    let hasExplicitEntryPoint = 
        conditionallySuppressErrorReporting (checkForErrors()) (fun () ->
            try  
                let reportErrors = not (checkForErrors())
                Microsoft.FSharp.Compiler.PostTypecheckSemanticChecks.CheckTopImpl (g,cenv.amap,reportErrors,cenv.infoReader,env.eInternalsVisibleCompPaths,cenv.topCcu,envAtEnd.DisplayEnv, implFileExprAfterSig,extraAttribs,isLastCompiland)
            with e -> 
                errorRecovery e m
                false)

    let implFile = TImplFile(qualNameOfFile,scopedPragmas, implFileExprAfterSig, hasExplicitEntryPoint,isScript)

    return (topAttrs,implFile,envAtEnd)
 } 
   


/// Check an entire sginature file
let TypecheckOneSigFile  
       (g,niceNameGen,amap,topCcu,checkForErrors,conditionalDefines,tcSink) 
       tcEnv 
       (ParsedSigFileInput(_,qualNameOfFile,_, _,sigFileFrags)) = 
 eventually {     
    let cenv = cenv.Create (g,false,niceNameGen,amap,topCcu,true,false,conditionalDefines,tcSink, (LightweightTcValForUsingInBuildMethodCall g))
    let envinner,mtypeAcc = MakeInitialEnv tcEnv 

    let specs = [ for x in sigFileFrags -> SynModuleSigDecl.NamespaceFragment(x) ]
    let! tcEnv = TcSignatureElements cenv ParentNone qualNameOfFile.Range envinner PreXmlDocEmpty specs
    
    let sigFileType = !mtypeAcc 
    
    if not (checkForErrors()) then  
        try sigFileType |> IterTyconsOfModuleOrNamespaceType (FinalTypeDefinitionChecksAtEndOfInferenceScope cenv.infoReader false tcEnv.DisplayEnv);
        with e -> errorRecovery e qualNameOfFile.Range

    return (tcEnv,tcEnv,sigFileType)
 }
fsharp-3.0.34/src/fsharp/detuple.fs0000775000175000017500000011666612260314606016161 0ustar  chrischris//----------------------------------------------------------------------------
//
// Copyright (c) 2002-2012 Microsoft Corporation. 
//
// This source code is subject to terms and conditions of the Apache License, Version 2.0. A 
// copy of the license can be found in the License.html file at the root of this distribution. 
// By using this source code in any fashion, you are agreeing to be bound 
// by the terms of the Apache License, Version 2.0.
//
// You must not remove this notice, or any other, from this software.
//----------------------------------------------------------------------------

module internal Microsoft.FSharp.Compiler.Detuple 

open Internal.Utilities
open Microsoft.FSharp.Compiler.AbstractIL 
open Microsoft.FSharp.Compiler.AbstractIL.Internal 
open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library 
open Microsoft.FSharp.Compiler 

open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics
open Microsoft.FSharp.Compiler.Ast
open Microsoft.FSharp.Compiler.ErrorLogger
open Microsoft.FSharp.Compiler.Tast
open Microsoft.FSharp.Compiler.Tastops
open Microsoft.FSharp.Compiler.Tastops.DebugPrint
open Microsoft.FSharp.Compiler.Env
open Microsoft.FSharp.Compiler.Layout
open Microsoft.FSharp.Compiler.PrettyNaming
open Microsoft.FSharp.Compiler.Lib



//
// This pass has one aim.
// - to eliminate tuples allocated at call sites (due to uncurried style)
//
// After PASS, 
//   Private, non-top-level functions fOrig which had explicit tuples at all callsites,
//   have been replaced by transformedVal taking the individual tuple fields,
//   subject to the type of the fOrig formal permitting the split.
// 
// The decisions are based on call site analysis 
//
//----------
// TUPLE COLLAPSE SIMPLIFIED.
//
// The aim of the optimization pass implemented in this module
// is to eliminate (redundant) tuple allocs arising due to calls.
// These typically arise from code written in uncurried form.
//
// Note that "top-level" functions and methods are automatically detupled in F#,
// by choice of representation. So this only applies to inner functions, and even
// then only to those not given "TLR" representation through lambda-lifting.
//
// Q: When is a tuple allocation at callsite redundant?
// A1: If the function called only wants the fields of the tuple.
// A2: If all call sites allocate a tuple argument,
//     then can factor that tuple creation into the function,
//     and hope the optimiser will eliminate it if possible.
//     e.g. if only the fields are required.
//
// The COLLAPSE transform is based on answer A2...
//
//   [[ let rec fOrig p = ... fOrig (a,b) ...
//      fOrig (x,y) ]]
//   ->
//      let rec transformedVal p1 p2 = let p = p1,p2
//                        ... (transformedVal a b) ...
//     
//      transformedVal x y
//
// Q: What about cases where some calls to fOrig provide just a tuple?
// A: If fOrig requires the original tuple argument, then this transform
//    would insert a tuple allocation inside fOrig, where none was before...
//
//----------
// IMPLEMENTATION OVERVIEW.
//
// 1. Require call-pattern info about callsites of each function, e.g.
//
//      [ (_,_) ; (_,(_,_,_)) ; _ ]
//      [ (_,_) ; (_,_)       ]
//      [ (_,_) ]
//
//    Detailing the number of arguments applied and their explicit tuple structure.
//
//    ASIDE: Efficiency note.
//           The rw pass does not change the call-pattern info,
//           so call-pattern info can be collected for all ids in pre-pass.
//
// 2. Given the above, can *CHOOSE* a call-pattern for the transformed function.
//    Informally,
//      Collapse any tuple structure if it is known at ALL call sites.
//    Formally,
//      - n = max length of call-pattern args.
//      - extend call patterns to length n with _ (no tuple info known)
//      - component-wise intersect argument tuple-structures over call patterns.
//      - gives least known call-pattern of length n.
//      - can trim to minimum non-trivual length.
//
//    [Used to] have INVARIANT on this chosen call pattern:
//
//      Have: For each argi with non-trivial tuple-structure,
//            at every call have an explicit tuple argument,
//            with (at least) that structure.
//            ----
//            Note, missing args in partial application will always
//            have trivial tuple structure in chosen call-pattern.
//
//    [PS: now defn arg projection info can override call site info]
//
// 2b.Choosing CallPattern also needs to check type of formals for the function.
//    If function is not expecting a tuple (accoring to types) do not split them.
//
// 3. Given CallPattern for selected fOrig,
//    (a) Can choose replacement formals, ybi where needed. (b, bar, means vector of formals).
//
//     cpi                | xi    | ybi
//    --------------------|-------|----------
//     UnknownTS          | xi    | SameArg xi
//     TupleTS []         | []    | SameArg []     // unit case, special case for now.
//     TupleTS ts1...tsN  | xi    | NewArgs (List.collect createFringeFormals [ts1..tsN])
//
//    (b) Can define transformedVal replacement function id.
//
// 4. Fixup defn bindings.
//
//    [[DEFN: fOrig  = LAM tps. lam x1 ...xp xq...xN. body ]]
//    ->
//           transformedVal = LAM tps. lam [[FORMALS: yb1...ybp]] xq...xN. [[REBINDS x1,yb1 ... xp,ybp]] [[FIX: body]]
//
//    [[FORMAL: SameArg xi]] -> xi
//    [[FORMAL: NewArgs vs]] -> [ [v1] ... [vN] ]                // list up individual args for Expr.Lambda
//
//    [[REBIND: xi , SameArg xi]] -> // no binding needed
//    [[REBIND: [u], NewArgs vs]] -> u = "rebuildTuple(cpi,vs)"
//    [[REBIND: us , NewArgs vs]] -> "rebuildTuple(cpi,vs)" then bind us to buildProjections. // for Expr.Lambda
//
//    rebuildTuple - create tuple based on vs fringe according to cpi tuple structure.
//
//    Note, fixup body...
//
// 5. Fixup callsites.
//
//    [[FIXCALL: APP fOrig tps args]] -> when fOrig is transformed, APP fOrig tps [[collapse args wrt cpf]]
//                                   otherwise, unchanged,  APP fOrig tps args.
//
// 6. Overview.
//    - pre-pass to find callPatterns.
//    - choose CallPattern (tuple allocs on all callsites)
//    - create replacement formals and transformedVal where needed.
//    - rw pass over expr - fixing defns and applications as required.
//    - sanity checks and done.

// Note:  ids can occur in several ways in expr at this point in compiler.
//      val id                                        - freely
//      app (val id) tys args                         - applied to tys/args (if no args, then free occurance)
//      app (reclink (val id)) tys args               - applied (recursive case)
//      app (reclink (app (val id) tys' []) tys args  - applied (recursive type instanced case)
// So, taking care counting callpatterns.
//
// Note: now considering defn projection requirements in decision.
//       no longer can assume that all call sites have explicit tuples if collapsing.
//       in these new cases, take care to have let binding sequence (eval order...)
 

// Merge a tyapp node and and app node.
let (|TyappAndApp|_|) e = 
    match e with 
    | Expr.App (f,fty,tys,args,m)       -> 
        match stripExpr f with
        | Expr.App(f2,fty2,tys2,[],m2) -> Some(f2,fty2,tys2 @ tys,args,m2)
        | Expr.App _                   -> Some(f,fty,tys,args,m) (* has args, so not combine ty args *)
        | f                             -> Some(f,fty,tys,args,m)
    | _ -> None
//-------------------------------------------------------------------------
// GetValsBoundInExpr
//-------------------------------------------------------------------------

module GlobalUsageAnalysis = begin
    let bindAccBounds vals (_isInDTree,v) =  Zset.add v vals

    let GetValsBoundInExpr expr =
       let folder = {ExprFolder0 with valBindingSiteIntercept = bindAccBounds}
       let z0 = Zset.empty valOrder
       let z  = FoldExpr folder z0 expr
       z


    //-------------------------------------------------------------------------
    // GlobalUsageAnalysis - state and ops
    //-------------------------------------------------------------------------

    type accessor = TupleGet of int * TType list

    type Results =
      (* Expr information.
       * For each v,
       *   (a) log it's usage site context = accessors // APP type-inst args
       *       where first accessor in list applies first to the v/app.
       *   (b) log it's binding site representation.
       *------
       * Future, could generalise to be graph representation of expr. (partly there).
       * This type used to be called "usage".
       *)
       { Uses     : Zmap; (* v -> context / APP inst args *)
         Defns     : Zmap;                                        (* v -> binding repr *)
         DecisionTreeBindings    : Zset;                                              (* bound in a decision tree? *)
         RecursiveBindings  : Zmap;                        (* v -> v list * recursive? -- the others in the mutual binding *)
         TopLevelBindings : Zset;
         IterationIsAtTopLevel      : bool
       }

    let z0 =
       { Uses     = Zmap.empty valOrder;
         Defns     = Zmap.empty valOrder;
         RecursiveBindings  = Zmap.empty valOrder;
         DecisionTreeBindings    = Zset.empty valOrder;
         TopLevelBindings = Zset.empty valOrder;
         IterationIsAtTopLevel      = true
       }

    // Note: this routine is called very frequently
    let logUse (f:Val) tup z =
       {z with Uses = 
                  match Zmap.tryFind f z.Uses with
                  | Some sites -> Zmap.add f (tup::sites) z.Uses
                  | None    -> Zmap.add f [tup] z.Uses }

    let logBinding z (isInDTree,v) =
        let z = if isInDTree then {z with DecisionTreeBindings = Zset.add v z.DecisionTreeBindings} else z
        let z = if z.IterationIsAtTopLevel then {z with TopLevelBindings = Zset.add v z.TopLevelBindings} else z
        z
        

    let logNonRecBinding z (bind:Binding) =
        (* log mubind v -> vs *)
        let v = bind.Var
        let vs = FlatList.one v
        {z with RecursiveBindings = Zmap.add v (false,vs) z.RecursiveBindings;
                Defns = Zmap.add v bind.Expr z.Defns } 

    let logRecBindings z binds =
        (* log mubind v -> vs *)
        let vs = valsOfBinds binds
        {z with RecursiveBindings = (z.RecursiveBindings,vs) ||> FlatList.fold (fun mubinds v -> Zmap.add v (true,vs) mubinds);
                Defns    = (z.Defns,binds) ||> FlatList.fold (fun eqns bind -> Zmap.add bind.Var bind.Expr eqns)  } 

    let foldUnderLambda f z x =
        let saved = z.IterationIsAtTopLevel
        let z = {z with IterationIsAtTopLevel=false}
        let z = f z x
        let z = {z with IterationIsAtTopLevel=saved}
        z

#if DEBUG
    let dumpXInfo z =
        let soAccessor (TupleGet (n,_ts)) = "#" ^ string n
        let dumpSite v (accessors,inst,args) =
            dprintf "- use %s%s %s %s\n"
              (showL (valL v))
              (match inst with
                [] -> ""
              | _  -> "@[" ^ showL (commaListL (List.map typeL inst)) ^ "]")
              (showL (spaceListL (List.map exprL args)))
              (match accessors with
                [] -> ""
              | _  -> "|> " ^ String.concat " " (List.map soAccessor accessors))
        let dumpUse v sites = List.iter (dumpSite v) sites
        let dumpTop (v:Val) = dprintf "- toplevel: %s\n" v.LogicalName
        if false then
         ( dprintf "usage:\n";
           Zmap.iter dumpUse z.Uses;
           Zset.iter dumpTop z.TopLevelBindings
          )
        else
         ()
#endif


    //-------------------------------------------------------------------------
    // GlobalUsageAnalysis - FoldExpr, foldBind collectors
    //-------------------------------------------------------------------------

    let UsageFolders g =
      // Fold expr, intercepts selected exprs.
      //   "val v"        - count []     callpattern of v
      //   "app (f,args)" - count  callpattern of f
      //---
      // On intercepted nodes, must continue exprF fold over any subexpressions, e.g. args.
      //------
      // Also, noting top-level bindings,
      // so must cancel top-level "foldUnderLambda" whenever step under loop/lambda:
      //   - lambdas
      //   - try/with and try/finally
      //   - for body
      //   - match targets
      //   - tmethods
      let foldLocalVal f z (vref: ValRef) = 
          if valRefInThisAssembly g.compilingFslib vref then f z vref.Deref
          else z
      let exprUsageIntercept exprF z expr =
          let rec recognise context expr = 
            match expr with
             | Expr.Val (v,_,_)                  -> 
                 // YES: count free occurance 
                 let z = foldLocalVal (fun z v -> logUse v (context,[],[]) z) z v
                 Some z
             | TyappAndApp(f,_,tys,args,_)       -> 
                 match f with
                  | Expr.Val (fOrig,_,_) ->
                    // app where function is val 
                    // YES: count instance/app (app when have term args), and then
                    //      collect from args (have intercepted this node) 
                    let collect z f = logUse f (context,tys,args) z
                    let z = foldLocalVal collect z fOrig
                    let z = List.fold exprF z args
                    Some z
                  | _ ->
                     // NO: app but function is not val 
                     None
             | Expr.Op(TOp.TupleFieldGet (n),ts,[x],_)   -> 
                 let context = TupleGet (n,ts) :: context
                 recognise context x
                 
             // lambdas end top-level status 
             | Expr.Lambda(_id,_ctorThisValOpt,_baseValOpt,_vs,body,_,_)   -> 
                 let z = foldUnderLambda exprF z body
                 Some z
             | Expr.TyLambda(_id,_tps,body,_,_) -> 
                 let z = foldUnderLambda exprF z body
                 Some z
             | _  -> 
                 None // NO: no intercept 
          
          let context = []
          recognise context expr

      let targetIntercept exprF z = function TTarget(_argvs,body,_) -> Some (foldUnderLambda exprF z body)
      let tmethodIntercept exprF z = function TObjExprMethod(_,_,_,_,e,_m) -> Some (foldUnderLambda exprF z e)
      
      {ExprFolder0 with
         exprIntercept    = exprUsageIntercept; 
         nonRecBindingsIntercept         = logNonRecBinding;
         recBindingsIntercept         = logRecBindings;
         valBindingSiteIntercept          = logBinding;
         targetIntercept  = targetIntercept;
         tmethodIntercept = tmethodIntercept;
      }


    //-------------------------------------------------------------------------
    // GlobalUsageAnalysis - entry point
    //-------------------------------------------------------------------------

    let GetUsageInfoOfImplFile g expr =
        let folder = UsageFolders g
        let z = FoldImplFile folder z0 expr
        z

end


open GlobalUsageAnalysis

//-------------------------------------------------------------------------
// misc
//-------------------------------------------------------------------------
  
let internalError str = raise(Failure(str))

let mkLocalVal m name ty topValInfo =
    let compgen    = false in (* REVIEW: review: should this be true? *)
    NewVal(name,m,None,ty,Immutable,compgen,topValInfo,taccessPublic,ValNotInRecScope,None,NormalVal,[],ValInline.Optional,XmlDoc.Empty,false,false,false,false,false,false,None,ParentNone) 

let dprintTerm header expr =
  if false then
    let str = Layout.showL (Layout.squashTo 192 (implFileL expr)) (* improve cxty! *)
    dprintf "\n\n\n%s:\n%s\n" header str
  else
    ()


//-------------------------------------------------------------------------
// TupleStructure = tuple structure
//-------------------------------------------------------------------------

type TupleStructure = (* tuple structure *)
    | UnknownTS
    | TupleTS   of TupleStructure list

let rec ValReprInfoForTS = function
    | UnknownTS  -> [ValReprInfo.unnamedTopArg]
    | TupleTS ts -> ts |> List.collect ValReprInfoForTS 

let rec andTS ts tsB =
    match ts,tsB with
    |         _   ,UnknownTS    -> UnknownTS
    | UnknownTS   ,_            -> UnknownTS
    | TupleTS ss  ,TupleTS ssB  -> if ss.Length <> ssB.Length then UnknownTS (* different tuple instances *)
                                   else TupleTS (List.map2 andTS ss ssB)

let checkTS = function
    | TupleTS []   -> internalError "exprTS: Tuple[]  not expected. (units not done that way)."
    | TupleTS [_]  -> internalError "exprTS: Tuple[x] not expected. (singleton tuples should not exist."
    | ts           -> ts   
          
let rec uncheckedExprTS = function (* explicit tuple-structure in expr *)
    | Expr.Op(TOp.Tuple,_tys,args,_) -> TupleTS (List.map uncheckedExprTS args)
    | _                               -> UnknownTS

let rec uncheckedTypeTS g ty =
    if isTupleTy g ty then 
        let tys = destTupleTy g ty 
        TupleTS (List.map (uncheckedTypeTS g) tys)
    else 
        UnknownTS

let exprTS exprs = exprs |> uncheckedExprTS |> checkTS
let typeTS g tys = tys |> uncheckedTypeTS g |> checkTS

let rebuildTS g m ts vs =
    let rec rebuild vs ts = 
      match vs,ts with
      | []   ,UnknownTS   -> internalError "rebuildTS: not enough fringe to build tuple"
      | v::vs,UnknownTS   -> vs,(exprForVal m v,v.Type)
      | vs   ,TupleTS tss -> let vs,xtys = List.fmap rebuild vs tss
                             let xs,tys  = List.unzip xtys
                             let x  = mkTupled g m xs tys
                             let ty = mkTupledTy g tys
                             vs,(x,ty)
   
    let vs,(x,_ty) = rebuild vs ts
    if vs.Length <> 0 then internalError "rebuildTS: had move fringe vars than fringe. REPORT BUG" else ();
    x

(* naive string concats, just for testing *)

/// CallPattern is tuple-structure for each argument position.
/// - callsites have a CallPattern (possibly instancing fOrig at tuple types...).
/// - the definition lambdas may imply a one-level CallPattern
/// - the definition formal projection info suggests a CallPattern
type CallPattern =
    TupleStructure list (* equality/ordering ok on this type *)
      
let callPatternOrder = (compare : CallPattern -> CallPattern -> int)
let argsCP exprs = List.map exprTS exprs
let noArgsCP = []
let isTrivialCP xs = (isNil xs)

#if DEBUG
let rec soTS = function (UnknownTS) -> "_" | TupleTS ss -> "(" ^ String.concat "," (List.map soTS ss) ^ ")"
let soCP tss = String.concat ";" (List.map soTS tss)
#endif

let rec minimalCallPattern callPattern =
    match callPattern with 
    | []                -> []
    | UnknownTS::tss    -> 
        match minimalCallPattern tss with
        | []  -> []              (* drop trailing UnknownTS *)
        | tss -> UnknownTS::tss (* non triv tss tail *)
    | (TupleTS ts)::tss -> TupleTS ts :: minimalCallPattern tss

/// INTERSECTION.
/// Combines a list of callpatterns into one common callpattern.
let commonCallPattern callPatterns =
    let rec andCPs cpA cpB =
      match cpA,cpB with
      | []       ,[]        -> []
      | tsA::tsAs,tsB::tsBs -> andTS tsA tsB :: andCPs tsAs tsBs
      | _tsA::_tsAs,[]        -> [] (* now trim to shortest - UnknownTS     :: andCPs tsAs []   *)
      | []       ,_tsB::_tsBs -> [] (* now trim to shortest - UnknownTS     :: andCPs []   tsBs *)
   
    List.reduce andCPs callPatterns

let siteCP (_accessors,_inst,args) = argsCP args
let sitesCPs sites = List.map siteCP sites

//-------------------------------------------------------------------------
// transform
//-------------------------------------------------------------------------

type TransformedFormal =
  // Indicates that
  //    - the actual arg in this position is unchanged
  //    - also menas that we keep the original formal arg
  | SameArg                          

  // Indicates 
  //    - the new formals for the transform
  //    - expr is tuple of the formals
  | NewArgs of Val list * Expr  

/// Info needed to convert f to curried form.
/// - yb1..ybp - replacement formal choices for x1...xp.
/// - transformedVal       - replaces f.
type Transform =
   { transformCallPattern : CallPattern;
     transformedFormals   : TransformedFormal list; (* REVIEW: could push these to fixup binding site *)
     transformedVal         : Val;
   }


//-------------------------------------------------------------------------
// transform - mkTransform - decided, create necessary stuff
//-------------------------------------------------------------------------

let mkTransform g (f:Val) m tps x1Ntys rty (callPattern,tyfringes: (TType list * Val list) list) =
    // Create formal choices for x1...xp under callPattern  
    let transformedFormals = 
        (callPattern,tyfringes) ||>  List.map2 (fun cpi (tyfringe,vs) -> 
            match cpi with
            | UnknownTS  -> SameArg
            | TupleTS [] -> SameArg  
            | TupleTS _ -> 
                // Try to keep the same names for the arguments if possible
                let vs = 
                    if vs.Length = tyfringe.Length then 
                        vs |> List.map (fun v -> mkCompGenLocal v.Range v.LogicalName v.Type |> fst)
                    else
                        let baseName = match vs with [v] -> v.LogicalName | _ -> "arg"
                        let baseRange = match vs with [v] -> v.Range | _ -> m
                        tyfringe |> List.mapi (fun i ty -> 
                            let name = baseName ^ string i
                            mkCompGenLocal baseRange name ty |> fst)
                        
                NewArgs (vs,rebuildTS g m cpi vs))
       
    // Create transformedVal replacement for f 
    // Mark the arity of the value 
    let topValInfo = 
        match f.ValReprInfo with 
        | None -> None 
        | _ -> Some(ValReprInfo (ValReprInfo.InferTyparInfo tps,List.collect ValReprInfoForTS callPattern,ValReprInfo.unnamedRetVal))
    (* type(transformedVal) tyfringes types replace initial arg types of f *)
    let tys1r = List.collect fst tyfringes  (* types for collapsed initial r args *)
    let tysrN = List.drop tyfringes.Length x1Ntys    (* types for remaining args *)
    let argtys = tys1r @ tysrN
    let fCty  = mkLambdaTy tps argtys rty                  
    let transformedVal  = mkLocalVal f.Range (globalNng.FreshCompilerGeneratedName (f.LogicalName,f.Range)) fCty topValInfo
  (*dprintf "mkTransform: f=%s\n"         (showL (valL f));
    dprintf "mkTransform: tps=%s\n"       (showL (commaListL (List.map typarL tps)));
    dprintf "mkTransform: callPattern=%s\n"        (soCP callPattern);
    dprintf "mkTransform: tyfringes=%s\n" (showL (commaListL (List.map (fun fr -> tupleL (List.map typeL fr)) tyfringes)));
    dprintf "mkTransform: tys1r=%s\n"     (showL (commaListL (List.map typeL tys1r)));
    dprintf "mkTransform: tysrN=%s\n"     (showL (commaListL (List.map typeL tysrN)));
    dprintf "mkTransform: rty  =%s\n"     ((showType rty));
  *)   
    { transformCallPattern = callPattern;
      transformedFormals      = transformedFormals;
      transformedVal         = transformedVal;
    }

#if DEBUG
open Microsoft.FSharp.Compiler.Layout    
let dumpTransform trans =
    dprintf " - cp   : %s\n - transformedVal   : %s\n\n"
      (soCP trans.transformCallPattern)
      (showL (valL trans.transformedVal))
#endif

//-------------------------------------------------------------------------
// transform - vTransforms - support
//-------------------------------------------------------------------------

let zipCallPatternArgTys m g (callPattern : TupleStructure list) (vss : Val list list) =
    let rec zipTSTyp ts typ =
        // match a tuple-structure and type, yields:
        //  (a) (restricted) tuple-structure, and
        //  (b) type fringe for each arg position.
        match ts with
        | TupleTS tss when isTupleTy g typ ->
            let tys = destTupleTy g typ 
            let tss,tyfringe = zipTSListTypList tss tys
            TupleTS tss,tyfringe
        | _ -> 
            UnknownTS,[typ] (* trim back CallPattern, function more general *)
    and zipTSListTypList tss tys =
        let tstys = List.map2 zipTSTyp tss tys  // assumes tss tys same length 
        let tss  = List.map fst tstys         
        let tys = List.collect snd tstys       // link fringes 
        tss,tys
    
    let vss = List.take callPattern.Length vss    // drop excessive tys if callPattern shorter 
    let tstys = List.map2 (fun ts vs -> let ts,tyfringe = zipTSTyp ts (typeOfLambdaArg m vs) in ts,(tyfringe,vs)) callPattern vss
    List.unzip tstys   

//-------------------------------------------------------------------------
// transform - vTransforms - defnSuggestedCP
//-------------------------------------------------------------------------

/// v = LAM tps. lam vs1:ty1 ... vsN:tyN. body.
/// The types suggest a tuple structure CallPattern.
/// The buildProjections of the vsi trim this down,
/// since do not want to take as components any tuple that is required (projected to).
let decideFormalSuggestedCP g z tys vss =

    let rec trimTsByAccess accessors ts =
        match ts,accessors with
        | UnknownTS ,_                       -> UnknownTS
        | TupleTS _tss,[]                     -> UnknownTS (* trim it, require the val at this point *)
        | TupleTS tss,TupleGet (i,_ty)::accessors -> 
            let tss = List.mapNth i (trimTsByAccess accessors) tss
            TupleTS tss

    let trimTsByVal z ts v =
        match Zmap.tryFind v z.Uses with
        | None       -> UnknownTS (* formal has no usage info, it is unused *)
        | Some sites -> 
            let trim ts (accessors,_inst,_args) = trimTsByAccess accessors ts
            List.fold trim ts sites

    let trimTsByFormal z ts vss = 
        match vss with 
        | [v]  -> trimTsByVal z ts v
        | vs   -> 
            let tss = match ts with TupleTS tss -> tss | _ -> internalError "trimByFormal: ts must be tuple?? PLEASE REPORT\n"
            let tss = List.map2 (trimTsByVal z) tss vs
            TupleTS tss

    let tss = List.map (typeTS g) tys (* most general TS according to type *)
    let tss = List.map2 (trimTsByFormal z) tss vss
    tss

//-------------------------------------------------------------------------
// transform - decideTransform
//-------------------------------------------------------------------------

let decideTransform g z v callPatterns (m,tps,vss:Val list list,rty) (* tys are types of outer args *) =
    let tys = List.map (typeOfLambdaArg m) vss       (* arg types *)
    (* NOTE: 'a in arg types may have been instanced at different tuples... *)
    (*       commonCallPattern has to handle those cases. *)
    let callPattern           = commonCallPattern callPatterns                   // common CallPattern 
    let callPattern           = List.take vss.Length callPattern            // restricted to max nArgs 
    (* NOW: get formal callPattern by defn usage of formals *)
    let formalCallPattern     = decideFormalSuggestedCP g z tys vss 
    let callPattern           = List.take callPattern.Length formalCallPattern
    // zip with information about known args 
    let callPattern,tyfringes = zipCallPatternArgTys m g callPattern vss
    // drop trivial tail AND 
    let callPattern           = minimalCallPattern callPattern                     
    // shorten tyfringes (zippable) 
    let tyfringes    = List.take callPattern.Length tyfringes       
  (*dprintf "decideTransform: for v=%s\n" (showL (valL v));
    List.iter (fun cp -> dprintf "- site cp    = %s\n" (soCP cp)) callPatterns;
    dprintf "- common  cp = %s\n" (soCP cp);     
    dprintf "- front   cp = %s\n" (soCP cp);
    dprintf "- arg tys    = %s\n" (showL (commaListL (List.map typeL tys)));  
    dprintf "- formalCallPattern        = %s\n" (soCP formalCallPattern);  
    dprintf "- front formalCallPattern  = %s\n" (soCP cp);
    dprintf "- zipped  cp = %s\n" (soCP cp);
    dprintf "- tyfringes  = %s\n" (showL (commaListL (List.map (List.length >> intL) tyfringes)));  
    dprintf "- minimal cp = %s\n\n" (soCP cp);
  *)   
    if isTrivialCP callPattern then
        None (* no transform *)
    else
        Some (v,mkTransform g v m tps tys rty (callPattern,tyfringes))


//-------------------------------------------------------------------------
// transform - determineTransforms
//-------------------------------------------------------------------------
      
// Public f could be used beyond assembly.
// For now, suppressing any transforms on these.
// Later, could transform f and fix up local calls and provide an f wrapper for beyond. 
let eligibleVal g (v:Val) =
    let dllImportStubOrOtherNeverInline = (v.InlineInfo = ValInline.Never)
    let mutableVal = v.IsMutable
    let byrefVal = isByrefLikeTy g v.Type
    not dllImportStubOrOtherNeverInline &&
    not byrefVal &&
    not mutableVal &&
    not v.IsMemberOrModuleBinding && //  .IsCompiledAsTopLevel &&
    not v.IsCompiledAsTopLevel 

let determineTransforms g (z : GlobalUsageAnalysis.Results) =
   let selectTransform f sites =
     if not (eligibleVal g f) then None else
     (* consider f, if it has top-level lambda (meaning has term args) *)
     match Zmap.tryFind f z.Defns with
     | None   -> None (* no binding site, so no transform *)
     | Some e -> 
        let tps,vss,_b,rty = stripTopLambda (e,f.Type)
        match List.concat vss with
        | []      -> None // defn has no term args 
        | arg1::_ -> // consider f 
          let m   = arg1.Range                       // mark of first arg, mostly for error reporting 
          let callPatterns = sitesCPs sites                   // callPatterns from sites 
          decideTransform g z f callPatterns (m,tps,vss,rty) // make transform (if required) 
  
   let vtransforms = Zmap.chooseL selectTransform z.Uses
   let vtransforms = Zmap.ofList valOrder vtransforms
   vtransforms

#if DEBUG
let dumpVTransform v tr =
    dprintf "Transform for %s\n" (showL (valL v));
    dumpTransform tr;
    stdout.Flush()
#endif


//-------------------------------------------------------------------------
// pass - penv - env of pass
//-------------------------------------------------------------------------

type penv =
   { transforms : Zmap; (* planned transforms *)
     ccu        : CcuThunk;
     g          : Env.TcGlobals;
   }

let hasTransfrom penv f = Zmap.tryFind f penv.transforms

//-------------------------------------------------------------------------
// pass - app fixup - collapseArgs
//-------------------------------------------------------------------------

(* collapseArgs:
   - the args may not be tuples (decision made on defn projection).
   - need to factor any side-effecting args out into a let binding sequence.
   - also factor buildProjections, so they share common tmps.
*)

type env = {eg : TcGlobals;
            prefix : string;
            m      : Range.range; }
let suffixE env s = {env with prefix = env.prefix ^ s}
let rangeE  env m = {env with m = m}

let push  b  bs = b::bs
let pushL xs bs = xs@bs

let newLocal  env   ty = mkCompGenLocal env.m env.prefix ty
let newLocalN env i ty = mkCompGenLocal env.m (env.prefix ^ string i) ty

let noEffectExpr env bindings x =
    match x with
    | Expr.Val (_v,_,_m) -> bindings,x
    | x                 -> 
        let tmp,xtmp = newLocal env (tyOfExpr env.eg x)
        let bind = mkCompGenBind tmp x
        push bind bindings,xtmp

// Given 'e', build 
//     let v1 = e#1
//     let v2 = e#N
let buildProjections env bindings x xtys =

    let binds,vixs = 
        xtys 
        |> List.mapi (fun i xty ->
            let vi,vix = newLocalN env i xty
            let bind = mkBind NoSequencePointAtInvisibleBinding vi (mkTupleFieldGet (x,xtys,i,env.m))
            bind,vix)
        |> List.unzip

    // Why are we reversing here? Because we end up reversing once more later
    let bindings = pushL (List.rev binds) bindings
    bindings,vixs

let rec collapseArg env bindings ts (x:Expr) =
    let m = x.Range
    let env = rangeE env m
    match ts,x with
    | UnknownTS  ,x -> 
        let bindings,vx = noEffectExpr env bindings x
        bindings,[vx]
    | TupleTS tss,Expr.Op(TOp.Tuple,_xtys,xs,_) -> 
        let env = suffixE env "'"
        collapseArgs env bindings 1 tss xs
    | TupleTS tss,x                      -> 
        // project components 
        let bindings,x = noEffectExpr env bindings x
        let env  = suffixE env "_p" 
        let xty = tyOfExpr env.eg x
        let xtys = destTupleTy env.eg xty
        let bindings,xs = buildProjections env bindings x xtys
        collapseArg env bindings (TupleTS tss) (mkTupled env.eg m xs xtys)

and collapseArgs env bindings n (callPattern) args =
    match callPattern,args with
    | []     ,args        -> bindings,args
    | ts::tss,arg::args -> 
        let env1 = suffixE env (string n)
        let bindings,xty  = collapseArg  env1 bindings ts    arg     
        let bindings,xtys = collapseArgs env  bindings (n+1) tss args
        bindings,xty @ xtys
    | _ts::_tss,[]            -> 
        internalError "collapseArgs: CallPattern longer than callsite args. REPORT BUG"


//-------------------------------------------------------------------------
// pass - app fixup
//-------------------------------------------------------------------------

// REVIEW: use mkLet etc. 
let mkLets binds (body:Expr) = 
    (binds,body) ||> List.foldBack (fun b acc -> mkLetBind acc.Range b acc) 

let fixupApp (penv:penv) (fx,fty,tys,args,m) =

    // Is it a val app, where the val has a transform? 
    match fx with
    | Expr.Val (vref,_,m) -> 
        let f = vref.Deref
        match hasTransfrom penv f with
        | Some trans -> 
            // fix it 
            let callPattern       = trans.transformCallPattern 
            let transformedVal       = trans.transformedVal         
            let fCty     = transformedVal.Type
            let fCx      = exprForVal m transformedVal
            (* [[f tps args ]] -> transformedVal tps [[COLLAPSED: args]] *)
            let env      = {prefix = "arg";m = m;eg=penv.g}
            let bindings = []
            let bindings,args = collapseArgs env bindings 0 callPattern args
            let bindings = List.rev bindings
            mkLets bindings (Expr.App (fCx,fCty,tys,args,m))
        | None       -> 
            Expr.App (fx,fty,tys,args,m) (* no change, f untransformed val *)
    | _ -> 
        Expr.App (fx,fty,tys,args,m)                      (* no change, f is expr *)


//-------------------------------------------------------------------------
// pass - mubinds - translation support
//-------------------------------------------------------------------------

let transFormal ybi xi =
    match ybi with
    | SameArg         -> [xi]                          // one arg   - where arg=vpsecs 
    | NewArgs (vs,_x) -> vs |> List.map List.singleton // many args 

let transRebind ybi xi =
    match xi,ybi with
    | _ ,SameArg        -> []                    (* no rebinding, reused original formal *)
    | [u],NewArgs (_vs,x) -> [mkCompGenBind u x]
    | us ,NewArgs (_vs,x) -> List.map2 mkCompGenBind us (tryDestTuple x)


//-------------------------------------------------------------------------
// pass - mubinds
//-------------------------------------------------------------------------

// Foreach (f,repr) where
//   If f has trans, then
//   repr = LAM tps. lam x1...xN . body
//
//   transformedVal, yb1...ybp in trans.
//
// New binding:
//
//   transformedVal = LAM tps. lam [[FORMALS: yb1 ... ybp]] xq...xN = let [[REBINDS: x1,yb1 ...]]
//                                                        body
//
// Does not fix calls/defns in binding rhs, that is done by caller.
//

let passBind penv (TBind(fOrig,repr,letSeqPtOpt) as bind) =
     let m = fOrig.Range
     match hasTransfrom penv fOrig with
     | None ->
         // fOrig no transform 
         bind
     | Some trans ->
         // fOrig has transform 
         let tps,vss,body,rty = stripTopLambda (repr,fOrig.Type) 
         // transformedVal is curried version of fOrig 
         let transformedVal    = trans.transformedVal
         // fCBody - parts - formals 
         let transformedFormals = trans.transformedFormals 
         let p     = transformedFormals.Length
         if (vss.Length < p) then internalError "passBinds: |vss|

FlatList.map (passBind penv) //------------------------------------------------------------------------- // pass - passBindRhs // // At bindings (letrec/let), // 0. run pass of bodies first. // 1. transform bindings (as required), // yields new bindings and fixup data for callsites. // 2. required to fixup any recursive calls in the bodies (beware O(n^2) cost) // 3. run pass over following code. //------------------------------------------------------------------------- let passBindRhs _penv conv (TBind (v,repr,letSeqPtOpt)) = TBind(v,conv repr,letSeqPtOpt) let preInterceptExpr (penv:penv) conv expr = match expr with | Expr.LetRec (binds,e,m,_) -> let binds = FlatList.map (passBindRhs penv conv) binds let binds = passBinds penv binds Some (mkLetRecBinds m binds (conv e)) | Expr.Let (bind,e,m,_) -> let bind = passBindRhs penv conv bind let bind = passBind penv bind Some (mkLetBind m bind (conv e)) | TyappAndApp(f,fty,tys,args,m) -> // match app, and fixup if needed let args = List.map conv args let f = conv f Some (fixupApp penv (f,fty,tys,args,m) ) | _ -> None let postTransformExpr (penv:penv) expr = match expr with | Expr.LetRec (binds,e,m,_) -> let binds = passBinds penv binds Some (mkLetRecBinds m binds e) | Expr.Let (bind,e,m,_) -> let bind = passBind penv bind Some (mkLetBind m bind e) | TyappAndApp(f,fty,tys,args,m) -> // match app, and fixup if needed Some (fixupApp penv (f,fty,tys,args,m) ) | _ -> None let passImplFile penv ass = ass |> RewriteImplFile {PreIntercept =None (* Some (preInterceptExpr penv) *); PostTransform= postTransformExpr penv (* (fun _ -> None) *); IsUnderQuotations=false } //------------------------------------------------------------------------- // entry point //------------------------------------------------------------------------- let DetupleImplFile ccu g expr = // collect expr info - wanting usage contexts and bindings let (z : Results) = GetUsageInfoOfImplFile g expr // For each Val, decide Some "transform", or None if not changing let vtrans = determineTransforms g z #if DEBUG // Diagnostics - summary of planned transforms if verbose then dprintf "note: detuple - %d functions transformed\n" (List.length (Zmap.keys vtrans)); if verbose then Zmap.iter dumpVTransform vtrans; #endif (* Pass over term, rewriting bindings and fixing up call sites, under penv *) let penv = {g=g; transforms = vtrans; ccu = ccu} if verbose then dprintTerm "DetupleAssembly before:" expr; if verbose then dprintf "DetupleAssembly: pass\n"; let expr = passImplFile penv expr if verbose then dprintTerm "DetupleAssembly after:" expr; if verbose then dprintf "DetupleAssembly: done\n"; expr fsharp-3.0.34/src/fsharp/ErrorLogger.fs0000775000175000017500000005613012260314606016735 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.ErrorLogger open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Range open System //------------------------------------------------------------------------ // General error recovery mechanism //----------------------------------------------------------------------- /// Thrown when want to add some range information to some .NET exception exception WrappedError of exn * range /// Thrown when immediate, local error recovery is not possible. This indicates /// we've reported an error but need to make a non-local transfer of control. /// Error recovery may catch this and continue (see 'errorRecovery') /// /// The exception that caused the report is carried as data because in some /// situations (LazyWithContext) we may need to re-report the original error /// when a lazy thunk is re-evaluated. exception ReportedError of exn option with override this.Message = match this :> exn with | ReportedError (Some exn) -> exn.Message | _ -> "ReportedError" let rec findOriginalException err = match err with | ReportedError (Some err) -> err | WrappedError(err,_) -> findOriginalException err | _ -> err /// Thrown when we stop processing the F# Interactive interactive entry or #load. exception StopProcessing (* common error kinds *) exception NumberedError of (int * string) * range with // int is e.g. 191 in FS0191 override this.Message = match this :> exn with | NumberedError((_,msg),_) -> msg | _ -> "impossible" exception Error of (int * string) * range with // int is e.g. 191 in FS0191 // eventually remove this type, it is a transitional artifact of the old unnumbered error style override this.Message = match this :> exn with | Error((_,msg),_) -> msg | _ -> "impossible" exception InternalError of string * range exception UserCompilerMessage of string * int * range exception LibraryUseOnly of range exception Deprecated of string * range exception Experimental of string * range exception PossibleUnverifiableCode of range // Range\NoRange Duals exception UnresolvedReferenceNoRange of (*assemblyname*) string exception UnresolvedReferenceError of (*assemblyname*) string * range exception UnresolvedPathReferenceNoRange of (*assemblyname*) string * (*path*) string exception UnresolvedPathReference of (*assemblyname*) string * (*path*) string * range let inline protectAssemblyExploration dflt f = try f() with | UnresolvedPathReferenceNoRange _ -> dflt | _ -> reraise() let inline protectAssemblyExplorationNoReraise dflt1 dflt2 f = try f() with | UnresolvedPathReferenceNoRange _ -> dflt1 | _ -> dflt2 // Attach a range if this is a range dual exception. let rec AttachRange m (exn:exn) = if m = range0 then exn else match exn with // Strip TargetInvocationException wrappers | :? System.Reflection.TargetInvocationException -> AttachRange m exn.InnerException | UnresolvedReferenceNoRange(a) -> UnresolvedReferenceError(a,m) | UnresolvedPathReferenceNoRange(a,p) -> UnresolvedPathReference(a,p,m) | Failure(msg) -> InternalError(msg^" (Failure)",m) | :? System.ArgumentException as exn -> InternalError(exn.Message + " (ArgumentException)",m) | notARangeDual -> notARangeDual //---------------------------------------------------------------------------- // Error logger interface type Exiter = abstract Exit : int -> 'T let QuitProcessExiter = { new Exiter with member x.Exit(n) = #if SILVERLIGHT #else try System.Environment.Exit(n) with _ -> () #endif failwithf "%s" <| FSComp.SR.elSysEnvExitDidntExit() } /// Closed enumeration of build phases. type BuildPhase = | DefaultPhase | Compile | Parameter | Parse | TypeCheck | CodeGen | Optimize | IlxGen | IlGen | Output | Interactive // An error seen during interactive execution /// Literal build phase subcategory strings. module BuildPhaseSubcategory = [] let DefaultPhase = "" [] let Compile = "compile" [] let Parameter = "parameter" [] let Parse = "parse" [] let TypeCheck = "typecheck" [] let CodeGen = "codegen" [] let Optimize = "optimize" [] let IlxGen = "ilxgen" [] let IlGen = "ilgen" [] let Output = "output" [] let Interactive = "interactive" [] let Internal = "internal" // Compiler ICE [] type PhasedError = { Exception:exn; Phase:BuildPhase } with /// Construct a phased error static member Create(exn:exn,phase:BuildPhase) : PhasedError = #if SILVERLIGHT #else System.Diagnostics.Debug.Assert(phase<>BuildPhase.DefaultPhase, sprintf "Compile error seen with no phase to attribute it to.%A %s %s" phase exn.Message exn.StackTrace ) #endif {Exception = exn; Phase=phase} member this.DebugDisplay() = sprintf "%s: %s" (this.Subcategory()) this.Exception.Message /// This is the textual subcategory to display in error and warning messages (shows only under --vserrors): /// /// file1.fs(72): subcategory warning FS0072: This is a warning message /// member pe.Subcategory() = match pe.Phase with | DefaultPhase -> BuildPhaseSubcategory.DefaultPhase | Compile -> BuildPhaseSubcategory.Compile | Parameter -> BuildPhaseSubcategory.Parameter | Parse -> BuildPhaseSubcategory.Parse | TypeCheck -> BuildPhaseSubcategory.TypeCheck | CodeGen -> BuildPhaseSubcategory.CodeGen | Optimize -> BuildPhaseSubcategory.Optimize | IlxGen -> BuildPhaseSubcategory.IlxGen | IlGen -> BuildPhaseSubcategory.IlGen | Output -> BuildPhaseSubcategory.Output | Interactive -> BuildPhaseSubcategory.Interactive /// Return true if the textual phase given is from the compile part of the build process. /// This set needs to be equal to the set of subcategories that the language service can produce. static member IsSubcategoryOfCompile(subcategory:string) = // Beware: This code logic is duplicated in DocumentTask.cs in the language service match subcategory with | BuildPhaseSubcategory.Compile | BuildPhaseSubcategory.Parameter | BuildPhaseSubcategory.Parse | BuildPhaseSubcategory.TypeCheck -> true | null | BuildPhaseSubcategory.DefaultPhase | BuildPhaseSubcategory.CodeGen | BuildPhaseSubcategory.Optimize | BuildPhaseSubcategory.IlxGen | BuildPhaseSubcategory.IlGen | BuildPhaseSubcategory.Output | BuildPhaseSubcategory.Interactive -> false | BuildPhaseSubcategory.Internal // Getting here means the compiler has ICE-d. Let's not pile on by showing the unknownSubcategory assert below. // Just treat as an unknown-to-LanguageService error. -> false | unknownSubcategory -> System.Diagnostics.Debug.Assert(false, sprintf "Subcategory '%s' could not be correlated with a build phase." unknownSubcategory) // Recovery is to treat this as a 'build' error. Downstream, the project system and language service will treat this as // if it came from the build and not the language service. false /// Return true if this phase is one that's known to be part of the 'compile'. This is the initial phase of the entire compilation that /// the language service knows about. member pe.IsPhaseInCompile() = let isPhaseInCompile = match pe.Phase with | Compile | Parameter | Parse | TypeCheck -> true | _ -> false // Sanity check ensures that Phase matches Subcategory #if DEBUG if isPhaseInCompile then System.Diagnostics.Debug.Assert(PhasedError.IsSubcategoryOfCompile(pe.Subcategory()), "Subcategory did not match isPhaesInCompile=true") else System.Diagnostics.Debug.Assert(not(PhasedError.IsSubcategoryOfCompile(pe.Subcategory())), "Subcategory did not match isPhaseInCompile=false") #endif isPhaseInCompile [] [] type ErrorLogger(nameForDebugging:string) = abstract ErrorCount: int // the purpose of the 'Impl' factoring is so that you can put a breakpoint on the non-Impl code just below, and get a breakpoint for all implementations of error loggers abstract WarnSinkImpl: PhasedError -> unit abstract ErrorSinkImpl: PhasedError -> unit member this.WarnSink err = this.WarnSinkImpl err member this.ErrorSink err = this.ErrorSinkImpl err member this.DebugDisplay() = sprintf "ErrorLogger(%s)" nameForDebugging let DiscardErrorsLogger = { new ErrorLogger("DiscardErrorsLogger") with member x.WarnSinkImpl(e) = () member x.ErrorSinkImpl(e) = () member x.ErrorCount = 0 } let AssertFalseErrorLogger = { new ErrorLogger("AssertFalseErrorLogger") with member x.WarnSinkImpl(e) = assert false; () member x.ErrorSinkImpl(e) = assert false; () member x.ErrorCount = assert false; 0 } /// When no errorLogger is installed (on the thread) use this one. let uninitializedErrorLoggerFallback = ref AssertFalseErrorLogger /// Type holds thread-static globals for use by the compile type internal CompileThreadStatic = [] static val mutable private buildPhase : BuildPhase [] static val mutable private errorLogger : ErrorLogger static member BuildPhaseUnchecked with get() = CompileThreadStatic.buildPhase (* This can be a null value *) static member BuildPhase with get() = if box CompileThreadStatic.buildPhase <> null then CompileThreadStatic.buildPhase else (assert false; BuildPhase.DefaultPhase) and set v = CompileThreadStatic.buildPhase <- v static member ErrorLogger with get() = if box CompileThreadStatic.errorLogger <> null then CompileThreadStatic.errorLogger else !uninitializedErrorLoggerFallback and set v = CompileThreadStatic.errorLogger <- v [] module ErrorLoggerExtensions = open System.Reflection #if SILVERLIGHT #else // Instruct the exception not to reset itself when thrown again. // Why don?t we just not catch these in the first place? Because we made the design choice to ask the user to send mail to fsbugs@microsoft.com. // To achieve this, we need to catch the exception, report the email address and stack trace, and then reraise. let PreserveStackTrace(exn) = try let preserveStackTrace = typeof.GetMethod("InternalPreserveStackTrace", BindingFlags.Instance ||| BindingFlags.NonPublic) preserveStackTrace.Invoke(exn, null) |> ignore with e-> // This is probably only the mono case. System.Diagnostics.Debug.Assert(false, "Could not preserve stack trace for watson exception.") () // Reraise an exception if it is one we want to report to Watson. let ReraiseIfWatsonable(exn:exn) = match exn with // These few SystemExceptions which we don't report to Watson are because we handle these in some way in Build.fs | :? System.Reflection.TargetInvocationException -> () | :? System.NotSupportedException -> () | :? System.IO.IOException -> () // This covers FileNotFoundException and DirectoryNotFoundException | :? System.UnauthorizedAccessException -> () | Failure _ // This gives reports for compiler INTERNAL ERRORs | :? System.SystemException -> PreserveStackTrace(exn) raise exn | _ -> () #endif type ErrorLogger with member x.ErrorR exn = match exn with StopProcessing | ReportedError _ -> raise exn | _ -> x.ErrorSink(PhasedError.Create(exn,CompileThreadStatic.BuildPhase)) member x.Warning exn = match exn with StopProcessing | ReportedError _ -> raise exn | _ -> x.WarnSink(PhasedError.Create(exn,CompileThreadStatic.BuildPhase)) member x.Error exn = x.ErrorR exn; raise (ReportedError (Some exn)) member x.PhasedError (ph:PhasedError) = x.ErrorSink ph raise (ReportedError (Some ph.Exception)) member x.ErrorRecovery (exn:exn) (m:range) = // Never throws ReportedError. // Throws StopProcessing and exceptions raised by the ErrorSink(exn) handler. match exn with (* Don't send ThreadAbortException down the error channel *) | :? System.Threading.ThreadAbortException | WrappedError((:? System.Threading.ThreadAbortException),_) -> () | ReportedError _ | WrappedError(ReportedError _,_) -> () | StopProcessing | WrappedError(StopProcessing,_) -> raise exn | _ -> try x.ErrorR (AttachRange m exn) // may raise exceptions, e.g. an fsi error sink raises StopProcessing. #if SILVERLIGHT #else ReraiseIfWatsonable(exn) #endif with | ReportedError _ | WrappedError(ReportedError _,_) -> () member x.StopProcessingRecovery (exn:exn) (m:range) = // Do standard error recovery. // Additionally ignore/catch StopProcessing. [This is the only catch handler for StopProcessing]. // Additionally ignore/catch ReportedError. // Can throw other exceptions raised by the ErrorSink(exn) handler. match exn with | StopProcessing | WrappedError(StopProcessing,_) -> () // suppress, so skip error recovery. | _ -> try x.ErrorRecovery exn m with | StopProcessing | WrappedError(StopProcessing,_) -> () // catch, e.g. raised by ErrorSink. | ReportedError _ | WrappedError(ReportedError _,_) -> () // catch, but not expected unless ErrorRecovery is changed. member x.ErrorRecoveryNoRange (exn:exn) = x.ErrorRecovery exn range0 /// NOTE: The change will be undone when the returned "unwind" object disposes let PushThreadBuildPhaseUntilUnwind (phase:BuildPhase) = let oldBuildPhase = CompileThreadStatic.BuildPhaseUnchecked CompileThreadStatic.BuildPhase <- phase { new System.IDisposable with member x.Dispose() = CompileThreadStatic.BuildPhase <- oldBuildPhase (* maybe null *) } /// NOTE: The change will be undone when the returned "unwind" object disposes let PushErrorLoggerPhaseUntilUnwind(errorLoggerTransformer : ErrorLogger -> #ErrorLogger) = let oldErrorLogger = CompileThreadStatic.ErrorLogger let newErrorLogger = errorLoggerTransformer oldErrorLogger let newInstalled = ref true let newIsInstalled() = if !newInstalled then () else (assert false; (); (*failwith "error logger used after unwind"*)) // REVIEW: ok to throw? let chkErrorLogger = { new ErrorLogger("PushErrorLoggerPhaseUntilUnwind") with member x.WarnSinkImpl(e) = newIsInstalled(); newErrorLogger.WarnSink(e) member x.ErrorSinkImpl(e) = newIsInstalled(); newErrorLogger.ErrorSink(e) member x.ErrorCount = newIsInstalled(); newErrorLogger.ErrorCount } CompileThreadStatic.ErrorLogger <- chkErrorLogger { new System.IDisposable with member x.Dispose() = CompileThreadStatic.ErrorLogger <- oldErrorLogger newInstalled := false } let SetThreadBuildPhaseNoUnwind(phase:BuildPhase) = CompileThreadStatic.BuildPhase <- phase let SetThreadErrorLoggerNoUnwind(errorLogger) = CompileThreadStatic.ErrorLogger <- errorLogger let SetUninitializedErrorLoggerFallback errLogger = uninitializedErrorLoggerFallback := errLogger // Global functions are still used by parser and TAST ops let errorR exn = CompileThreadStatic.ErrorLogger.ErrorR exn let warning exn = CompileThreadStatic.ErrorLogger.Warning exn let error exn = CompileThreadStatic.ErrorLogger.Error exn // for test only let phasedError (p : PhasedError) = CompileThreadStatic.ErrorLogger.PhasedError p let errorSink pe = CompileThreadStatic.ErrorLogger.ErrorSink pe let warnSink pe = CompileThreadStatic.ErrorLogger.WarnSink pe let errorRecovery exn m = CompileThreadStatic.ErrorLogger.ErrorRecovery exn m let stopProcessingRecovery exn m = CompileThreadStatic.ErrorLogger.StopProcessingRecovery exn m let errorRecoveryNoRange exn = CompileThreadStatic.ErrorLogger.ErrorRecoveryNoRange exn let report f = f() let deprecatedWithError s m = errorR(Deprecated(s,m)) // Note: global state, but only for compiling FSHarp.Core.dll let mutable reportLibraryOnlyFeatures = true let libraryOnlyError m = if reportLibraryOnlyFeatures then errorR(LibraryUseOnly(m)) let libraryOnlyWarning m = if reportLibraryOnlyFeatures then warning(LibraryUseOnly(m)) let deprecatedOperator m = deprecatedWithError (FSComp.SR.elDeprecatedOperator()) m let mlCompatWarning s m = warning(UserCompilerMessage(FSComp.SR.mlCompatMessage s, 62, m)) let suppressErrorReporting f = let errorLogger = CompileThreadStatic.ErrorLogger try let errorLogger = { new ErrorLogger("suppressErrorReporting") with member x.WarnSinkImpl(_exn) = () member x.ErrorSinkImpl(_exn) = () member x.ErrorCount = 0 } SetThreadErrorLoggerNoUnwind(errorLogger) f() finally SetThreadErrorLoggerNoUnwind(errorLogger) let conditionallySuppressErrorReporting cond f = if cond then suppressErrorReporting f else f() //------------------------------------------------------------------------ // Errors as data: Sometimes we have to reify errors as data, e.g. if backtracking // // REVIEW: consider using F# computation expressions here [] type OperationResult<'T> = | OkResult of (* warnings: *) exn list * 'T | ErrorResult of (* warnings: *) exn list * exn type ImperativeOperationResult = OperationResult let ReportWarnings warns = match warns with | [] -> () // shortcut in common case | _ -> List.iter warning warns let CommitOperationResult res = match res with | OkResult (warns,res) -> ReportWarnings warns; res | ErrorResult (warns,err) -> ReportWarnings warns; error err let RaiseOperationResult res : unit = CommitOperationResult res let ErrorD err = ErrorResult([],err) let WarnD err = OkResult([err],()) let CompleteD = OkResult([],()) let ResultD x = OkResult([],x) let CheckNoErrorsAndGetWarnings res = match res with OkResult (warns,_) -> Some warns | ErrorResult _ -> None /// The bind in the monad. Stop on first error. Accumulate warnings and continue. let (++) res f = match res with | OkResult([],res) -> (* tailcall *) f res | OkResult(warns,res) -> begin match f res with | OkResult(warns2,res2) -> OkResult(warns@warns2, res2) | ErrorResult(warns2,err) -> ErrorResult(warns@warns2, err) end | ErrorResult(warns,err) -> ErrorResult(warns,err) /// Stop on first error. Accumulate warnings and continue. let rec IterateD f xs = match xs with [] -> CompleteD | h :: t -> f h ++ (fun () -> IterateD f t) let rec WhileD gd body = if gd() then body() ++ (fun () -> WhileD gd body) else CompleteD let MapD f xs = let rec loop acc xs = match xs with [] -> ResultD (List.rev acc) | h :: t -> f h ++ (fun x -> loop (x::acc) t) in loop [] xs type TrackErrorsBuilder() = member x.Bind(res,k) = res ++ k member x.Return(res) = ResultD(res) member x.ReturnFrom(res) = res member x.For(seq,k) = IterateD k seq member x.While(gd,k) = WhileD gd k member x.Zero() = CompleteD let trackErrors = TrackErrorsBuilder() /// Stop on first error. Accumulate warnings and continue. let OptionD f xs = match xs with None -> CompleteD | Some(h) -> f h /// Stop on first error. Report index let IterateIdxD f xs = let rec loop xs i = match xs with [] -> CompleteD | h :: t -> f i h ++ (fun () -> loop t (i+1)) loop xs 0 /// Stop on first error. Accumulate warnings and continue. let rec Iterate2D f xs ys = match xs,ys with | [],[] -> CompleteD | h1 :: t1, h2::t2 -> f h1 h2 ++ (fun () -> Iterate2D f t1 t2) | _ -> failwith "Iterate2D" let TryD f g = match f() with | ErrorResult(warns,err) -> (OkResult(warns,())) ++ (fun () -> g err) | res -> res let rec RepeatWhileD ndeep body = body ndeep ++ (function true -> RepeatWhileD (ndeep+1) body | false -> CompleteD) let AtLeastOneD f l = MapD f l ++ (fun res -> ResultD (List.exists id res)) // Code below is for --flaterrors flag that is only used by the IDE let stringThatIsAProxyForANewlineInFlatErrors = new System.String[|char 29 |] let NewlineifyErrorString (message:string) = message.Replace(stringThatIsAProxyForANewlineInFlatErrors, Environment.NewLine) /// fixes given string by replacing all control chars with spaces. /// NOTE: newlines are recognized and replaced with stringThatIsAProxyForANewlineInFlatErrors (ASCII 29, the 'group separator'), /// which is decoded by the IDE with 'NewlineifyErrorString' back into newlines, so that multi-line errors can be displayed in QuickInfo let NormalizeErrorString (text : string) = if text = null then nullArg "text" let text = text.Trim() let buf = System.Text.StringBuilder() let mutable i = 0 while i < text.Length do let delta = match text.[i] with | '\r' when i + 1 < text.Length && text.[i + 1] = '\n' -> // handle \r\n sequence - replace it with one single space buf.Append(stringThatIsAProxyForANewlineInFlatErrors) |> ignore 2 | '\n' -> buf.Append(stringThatIsAProxyForANewlineInFlatErrors) |> ignore 1 | c -> // handle remaining chars: control - replace with space, others - keep unchanged let c = if Char.IsControl(c) then ' ' else c buf.Append(c) |> ignore 1 i <- i + delta buf.ToString()fsharp-3.0.34/src/fsharp/augment.fs0000775000175000017500000014206412260314606016146 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Generate the hash/compare functions we add to user-defined types by default. module internal Microsoft.FSharp.Compiler.Augment open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Infos let mkIComparableCompareToSlotSig g = TSlotSig("CompareTo",g.mk_IComparable_ty, [],[], [[TSlotParam(Some("obj"),g.obj_ty,false,false,false,[])]],Some g.int_ty) let mkGenericIComparableCompareToSlotSig g typ = TSlotSig("CompareTo",(mkAppTy g.system_GenericIComparable_tcref [typ]),[],[], [[TSlotParam(Some("obj"),typ,false,false,false,[])]],Some g.int_ty) let mkIStructuralComparableCompareToSlotSig g = TSlotSig("CompareTo",g.mk_IStructuralComparable_ty,[],[],[[TSlotParam(None,(mkTupleTy [g.obj_ty ; g.mk_IComparer_ty]),false,false,false,[])]], Some g.int_ty) let mkGenericIEquatableEqualsSlotSig g typ = TSlotSig("Equals",(mkAppTy g.system_GenericIEquatable_tcref [typ]),[],[], [[TSlotParam(Some("obj"),typ,false,false,false,[])]],Some g.bool_ty) let mkIStructuralEquatableEqualsSlotSig g = TSlotSig("Equals",g.mk_IStructuralEquatable_ty,[],[],[[TSlotParam(None,(mkTupleTy [g.obj_ty ; g.mk_IEqualityComparer_ty]),false,false,false,[])]], Some g.bool_ty) let mkIStructuralEquatableGetHashCodeSlotSig g = TSlotSig("GetHashCode",g.mk_IStructuralEquatable_ty,[],[],[[TSlotParam(None,g.mk_IEqualityComparer_ty,false,false,false,[])]], Some g.int_ty) let mkGetHashCodeSlotSig g = TSlotSig("GetHashCode", g.obj_ty, [],[], [[]],Some g.int_ty) let mkEqualsSlotSig g = TSlotSig("Equals", g.obj_ty, [],[], [[TSlotParam(Some("obj"),g.obj_ty,false,false,false,[])]],Some g.bool_ty) let mkILObjectGetTypeMethSpec ilg = IL.mkILNonGenericInstanceMethSpecInTy(ilg.typ_Object,"GetType",[],ilg.typ_Type) let mkILObjectToStringMethSpec ilg = IL.mkILNonGenericInstanceMethSpecInTy(ilg.typ_Object,"ToString",[],ilg.typ_String) //------------------------------------------------------------------------- // Helpers associated with code-generation of comparison/hash augmentations //------------------------------------------------------------------------- let mkThisTy g ty = if isStructTy g ty then mkByrefTy g ty else ty let mkCompareObjTy g ty = (mkThisTy g ty) --> (g.obj_ty --> g.int_ty) let mkCompareTy g ty = (mkThisTy g ty) --> (ty --> g.int_ty) let mkCompareWithComparerTy g ty = (mkThisTy g ty) --> ((mkTupleTy [g.obj_ty ; g.mk_IComparer_ty]) --> g.int_ty) let mkEqualsObjTy g ty = (mkThisTy g ty) --> (g.obj_ty --> g.bool_ty) let mkEqualsTy g ty = (mkThisTy g ty) --> (ty --> g.bool_ty) let mkEqualsWithComparerTy g ty = (mkThisTy g ty) --> ((mkTupleTy [g.obj_ty ; g.mk_IEqualityComparer_ty]) --> g.bool_ty) let mkHashTy g ty = (mkThisTy g ty) --> (g.unit_ty --> g.int_ty) let mkHashWithComparerTy g ty = (mkThisTy g ty) --> (g.mk_IEqualityComparer_ty --> g.int_ty) //------------------------------------------------------------------------- // Polymorphic comparison //------------------------------------------------------------------------- let mkRelBinOp g op m e1 e2 = mkAsmExpr ([ op ],[], [e1; e2],[g.bool_ty],m) let mkClt g m e1 e2 = mkRelBinOp g IL.AI_clt m e1 e2 let mkCgt g m e1 e2 = mkRelBinOp g IL.AI_cgt m e1 e2 //------------------------------------------------------------------------- // REVIEW: make this a .constrained call, not a virtual call. //------------------------------------------------------------------------- // for creating and using GenericComparer objects and for creating and using // IStructuralComparable objects (Eg, Calling CompareTo(obj o, IComparer comp)) let mkILLangPrimTy g = mkILNonGenericBoxedTy g.tcref_LanguagePrimitives.CompiledRepresentationForNamedType let mkILCallGetComparer g m = let ty = mkILNonGenericBoxedTy g.tcref_System_Collections_IComparer.CompiledRepresentationForNamedType let mspec = mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g, "get_GenericComparer",[],ty) mkAsmExpr([IL.mkNormalCall mspec], [], [], [g.mk_IComparer_ty], m) let mkILCallGetEqualityComparer g m = let ty = mkILNonGenericBoxedTy g.tcref_System_Collections_IEqualityComparer.CompiledRepresentationForNamedType let mspec = mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g,"get_GenericEqualityComparer",[],ty) mkAsmExpr([IL.mkNormalCall mspec], [], [], [g.mk_IEqualityComparer_ty], m) let mkThisVar g m ty = mkCompGenLocal m "this" (mkThisTy g ty) let mkShl g m acce n = mkAsmExpr([ IL.AI_shl ],[],[acce; mkInt g m n],[g.int_ty],m) let mkShr g m acce n = mkAsmExpr([ IL.AI_shr ],[],[acce; mkInt g m n],[g.int_ty],m) let mkAdd g m e1 e2 = mkAsmExpr([ IL.AI_add ],[],[e1;e2],[g.int_ty],m) let mkAddToHashAcc g m e accv acce = mkValSet m accv (mkAdd g m (mkInt g m 0x9e3779b9) (mkAdd g m e (mkAdd g m (mkShl g m acce 6) (mkShr g m acce 2)))) let mkCombineHashGenerators g m exprs accv acce = (acce,exprs) ||> List.fold (fun tm e -> mkCompGenSequential m (mkAddToHashAcc g m e accv acce) tm) //------------------------------------------------------------------------- // Build comparison functions for union, record and exception types. //------------------------------------------------------------------------- let mkThisVarThatVar g m ty = let thisv,thise = mkThisVar g m ty let thatv,thate = mkCompGenLocal m "obj" (mkThisTy g ty) thisv,thatv,thise,thate let mkThatVarBind g m ty thatv expr = if isStructTy g ty then let thatv2,_ = mkMutableCompGenLocal m "obj" ty thatv2,mkCompGenLet m thatv (mkValAddr m (mkLocalValRef thatv2)) expr else thatv,expr let mkThatAddrLocal g m ty = if isStructTy g ty then mkMutableCompGenLocal m "objCast" (mkByrefTy g ty) else mkCompGenLocal m "objCast" ty let mkBindThatAddr g m ty thataddrv thatv thate expr = if isStructTy g ty then mkCompGenLet m thataddrv (mkValAddr m (mkLocalValRef thatv)) expr else mkCompGenLet m thataddrv thate expr let mkCompareTestConjuncts g m exprs = match exprs with | [] -> mkZero g m | [h] -> h | l -> let a,b = List.frontAndBack l (a,b) ||> List.foldBack (fun e acc -> let nv,ne = mkCompGenLocal m "n" g.int_ty mkCompGenLet m nv e (mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.int_ty (mkClt g m ne (mkZero g m)) ne (mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.int_ty (mkCgt g m ne (mkZero g m)) ne acc))) let mkEqualsTestConjuncts g m exprs = match exprs with | [] -> mkOne g m | [h] -> h | l -> let a,b = List.frontAndBack l List.foldBack (fun e acc -> mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.bool_ty e acc (mkFalse g m)) a b let mkMinimalTy g (tcref:TyconRef) = if tcref.Deref.IsExceptionDecl then [], g.exn_ty else generalizeTyconRef tcref // check for nulls let mkBindNullComparison g m thise thate expr = let expr = mkNonNullCond g m g.int_ty thate expr (mkOne g m) let expr = mkNonNullCond g m g.int_ty thise expr (mkNonNullCond g m g.int_ty thate (mkMinusOne g m) (mkZero g m) ) expr let mkBindThisNullEquals g m thise thate expr = let expr = mkNonNullCond g m g.bool_ty thise expr (mkNonNullCond g m g.int_ty thate (mkFalse g m) (mkTrue g m) ) expr let mkBindThatNullEquals g m thise thate expr = let expr = mkNonNullCond g m g.bool_ty thate expr (mkFalse g m) let expr = mkBindThisNullEquals g m thise thate expr expr let mkBindNullHash g m thise expr = let expr = mkNonNullCond g m g.int_ty thise expr (mkZero g m) expr /// Build the comparison implementation for a record type let mkRecdCompare g tcref (tycon:Tycon) = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst,ty = mkMinimalTy g tcref let thisv,thatv,thise,thate = mkThisVarThatVar g m ty let compe = mkILCallGetComparer g m let mkTest (fspec:RecdField) = let fty = fspec.FormalType let fref = mkNestedRecdFieldRef tcref fspec let m = fref.Range mkCallGenericComparisonWithComparerOuter g m fty compe (mkRecdFieldGetViaExprAddr(thise, fref, tinst, m)) (mkRecdFieldGetViaExprAddr(thate, fref, tinst, m)) let expr = mkCompareTestConjuncts g m (List.map mkTest fields) let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thate expr let thatv,expr = mkThatVarBind g m ty thatv expr thisv,thatv, expr /// Build the comparison implementation for a record type when parameterized by a comparer let mkRecdCompareWithComparer g tcref (tycon:Tycon) (_thisv,thise) (_,thate) compe = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst,ty = mkMinimalTy g tcref let tcv,tce = mkCompGenLocal m "objTemp" ty // let tcv = thate let thataddrv,thataddre = mkThatAddrLocal g m ty // let thataddrv = &tcv, if a struct let mkTest (fspec:RecdField) = let fty = fspec.FormalType let fref = mkNestedRecdFieldRef tcref fspec let m = fref.Range mkCallGenericComparisonWithComparerOuter g m fty compe (mkRecdFieldGetViaExprAddr(thise, fref, tinst, m)) (mkRecdFieldGetViaExprAddr(thataddre, fref, tinst, m)) let expr = mkCompareTestConjuncts g m (List.map mkTest fields) let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thate expr let expr = mkBindThatAddr g m ty thataddrv tcv tce expr // will be optimized away if not necessary let expr = mkCompGenLet m tcv thate expr expr /// Build the equality implementation wrapper for a record type let mkRecdEquality g tcref (tycon:Tycon) = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst,ty = mkMinimalTy g tcref let thisv,thatv,thise,thate = mkThisVarThatVar g m ty let mkTest (fspec:RecdField) = let fty = fspec.FormalType let fref = mkNestedRecdFieldRef tcref fspec let m = fref.Range mkCallGenericEqualityEROuter g m fty (mkRecdFieldGetViaExprAddr(thise, fref, tinst, m)) (mkRecdFieldGetViaExprAddr(thate, fref, tinst, m)) let expr = mkEqualsTestConjuncts g m (List.map mkTest fields) let expr = if tycon.IsStructOrEnumTycon then expr else mkBindThatNullEquals g m thise thate expr let thatv,expr = mkThatVarBind g m ty thatv expr thisv,thatv,expr /// Build the equality implementation for a record type when parameterized by a comparer let mkRecdEqualityWithComparer g tcref (tycon:Tycon) (_thisv,thise) thatobje (thatv,thate) compe = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst,ty = mkMinimalTy g tcref let thataddrv,thataddre = mkThatAddrLocal g m ty let mkTest (fspec:RecdField) = let fty = fspec.FormalType let fref = mkNestedRecdFieldRef tcref fspec let m = fref.Range mkCallGenericEqualityWithComparerOuter g m fty compe (mkRecdFieldGetViaExprAddr(thise, fref, tinst, m)) (mkRecdFieldGetViaExprAddr(thataddre, fref, tinst, m)) let expr = mkEqualsTestConjuncts g m (List.map mkTest fields) let expr = mkBindThatAddr g m ty thataddrv thatv thate expr // will be optimized away if not necessary let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) let expr = if tycon.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr expr /// Build the equality implementation for an exception definition let mkExnEquality g exnref (exnc:Tycon) = let m = exnc.Range let thatv,thate = mkCompGenLocal m "obj" g.exn_ty let thisv,thise = mkThisVar g m g.exn_ty let mkTest i (rfield:RecdField) = let fty = rfield.FormalType mkCallGenericEqualityEROuter g m fty (mkExnCaseFieldGet(thise, exnref, i, m)) (mkExnCaseFieldGet(thate, exnref, i, m)) let expr = mkEqualsTestConjuncts g m (List.mapi mkTest (exnc.AllInstanceFieldsAsList)) let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let dtree = TDSwitch(thate, [ mkCase(Test.IsInst(g.exn_ty,mkAppTy exnref []), mbuilder.AddResultTarget(expr,SuppressSequencePointAtTarget)) ], Some(mbuilder.AddResultTarget(mkFalse g m,SuppressSequencePointAtTarget)), m) mbuilder.Close(dtree,m,g.bool_ty) let expr = mkBindThatNullEquals g m thise thate expr thisv,thatv, expr /// Build the equality implementation for an exception definition when parameterized by a comparer let mkExnEqualityWithComparer g exnref (exnc:Tycon) (_thisv,thise) thatobje (thatv,thate) compe = let m = exnc.Range let thataddrv,thataddre = mkThatAddrLocal g m g.exn_ty let mkTest i (rfield:RecdField) = let fty = rfield.FormalType mkCallGenericEqualityWithComparerOuter g m fty compe (mkExnCaseFieldGet(thise, exnref, i, m)) (mkExnCaseFieldGet(thataddre, exnref, i, m)) let expr = mkEqualsTestConjuncts g m (List.mapi mkTest (exnc.AllInstanceFieldsAsList)) let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let dtree = TDSwitch(thataddre, [ mkCase(Test.IsInst(g.exn_ty,mkAppTy exnref []), mbuilder.AddResultTarget(expr,SuppressSequencePointAtTarget)) ], Some(mbuilder.AddResultTarget(mkFalse g m,SuppressSequencePointAtTarget)), m) mbuilder.Close(dtree,m,g.bool_ty) let expr = mkBindThatAddr g m g.exn_ty thataddrv thatv thate expr let expr = mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m) let expr = if exnc.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr expr /// Build the comparison implementation for a union type let mkUnionCompare g tcref (tycon:Tycon) = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkCompGenLocal m "this" ty let thatv,thate = mkCompGenLocal m "obj" ty let thistagv,thistage = mkCompGenLocal m "thisTag" g.int_ty let thattagv,thattage = mkCompGenLocal m "thatTag" g.int_ty let compe = mkILCallGetComparer g m let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let mkCase ucase = let cref = mkNestedUnionCaseRef tcref ucase let m = cref.Range let thisucv,thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) let thatucv,thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) let mkTest j (argty:RecdField) = mkCallGenericComparisonWithComparerOuter g m argty.FormalType compe (mkUnionCaseFieldGetProven(thisucve, cref, tinst, j, m)) (mkUnionCaseFieldGetProven(thatucve, cref, tinst, j, m)) let rfields = ucase.RecdFields if isNil rfields then None else Some (mkCase(Test.UnionCase(cref,tinst), mbuilder.AddResultTarget (mkCompGenLet m thisucv (mkUnionCaseProof(thise,cref,tinst,m)) (mkCompGenLet m thatucv (mkUnionCaseProof(thate,cref,tinst,m)) (mkCompareTestConjuncts g m (List.mapi mkTest rfields))), SuppressSequencePointAtTarget))) let nullary,nonNullary = List.partition isNone (List.map mkCase ucases) if isNil nonNullary then mkZero g m else let dtree = TDSwitch(thise, (nonNullary |> List.map (function (Some c) -> c | None -> failwith "mkUnionCompare")), (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m,SuppressSequencePointAtTarget))), m) mbuilder.Close(dtree,m,g.int_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.int_ty (mkILAsmCeq g m thistage thattage) expr (mkAsmExpr ([ IL.AI_sub ],[], [thistage; thattage],[g.int_ty],m))in mkCompGenLet m thistagv (mkUnionCaseTagGet (thise,tcref,tinst,m)) (mkCompGenLet m thattagv (mkUnionCaseTagGet (thate,tcref,tinst,m)) tagsEqTested) let expr = mkBindNullComparison g m thise thate expr thisv,thatv, expr /// Build the comparison implementation for a union type when parameterized by a comparer let mkUnionCompareWithComparer g tcref (tycon:Tycon) (_thisv,thise) (thatv,thate) compe = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst,ty = mkMinimalTy g tcref let thistagv,thistage = mkCompGenLocal m "thisTag" g.int_ty let thattagv,thattage = mkCompGenLocal m "thatTag" g.int_ty let thataddrv,thataddre = mkThatAddrLocal g m ty let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let mkCase ucase = let cref = mkNestedUnionCaseRef tcref ucase let m = cref.Range let thisucv,thisucve = mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) let thatucv,thatucve = mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) let mkTest j (argty:RecdField) = mkCallGenericComparisonWithComparerOuter g m argty.FormalType compe (mkUnionCaseFieldGetProven(thisucve, cref, tinst, j, m)) (mkUnionCaseFieldGetProven(thatucve, cref, tinst, j, m)) let rfields = ucase.RecdFields if isNil rfields then None else Some (mkCase(Test.UnionCase(cref,tinst), mbuilder.AddResultTarget (mkCompGenLet m thisucv (mkUnionCaseProof(thise,cref,tinst,m)) (mkCompGenLet m thatucv (mkUnionCaseProof(thataddre,cref,tinst,m)) (mkCompareTestConjuncts g m (List.mapi mkTest rfields))), SuppressSequencePointAtTarget))) let nullary,nonNullary = List.partition isNone (List.map mkCase ucases) if isNil nonNullary then mkZero g m else let dtree = TDSwitch(thise, (nonNullary |> List.map (function (Some c) -> c | None -> failwith "mkUnionCompare")), (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m,SuppressSequencePointAtTarget))), m) mbuilder.Close(dtree,m,g.int_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.int_ty (mkILAsmCeq g m thistage thattage) expr (mkAsmExpr ([ IL.AI_sub ],[], [thistage; thattage],[g.int_ty],m))in mkCompGenLet m thistagv (mkUnionCaseTagGet (thise,tcref,tinst,m)) (mkCompGenLet m thattagv (mkUnionCaseTagGet (thataddre,tcref,tinst,m)) tagsEqTested) let expr = mkBindNullComparison g m thise thate expr let expr = mkBindThatAddr g m ty thataddrv thatv thate expr expr /// Build the equality implementation for a union type let mkUnionEquality g tcref (tycon:Tycon) = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkCompGenLocal m "this" ty let thatv,thate = mkCompGenLocal m "obj" ty let thistagv,thistage = mkCompGenLocal m "thisTag" g.int_ty let thattagv,thattage = mkCompGenLocal m "thatTag" g.int_ty let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let mkCase ucase = let cref = mkNestedUnionCaseRef tcref ucase let m = cref.Range let thisucv,thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) let thatucv,thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) let mkTest j (argty:RecdField) = mkCallGenericEqualityEROuter g m argty.FormalType (mkUnionCaseFieldGetProven(thisucve, cref, tinst, j, m)) (mkUnionCaseFieldGetProven(thatucve, cref, tinst, j, m)) let rfields = ucase.RecdFields if isNil rfields then None else Some (mkCase(Test.UnionCase(cref,tinst), mbuilder.AddResultTarget (mkCompGenLet m thisucv (mkUnionCaseProof(thise,cref,tinst,m)) (mkCompGenLet m thatucv (mkUnionCaseProof(thate,cref,tinst,m)) (mkEqualsTestConjuncts g m (List.mapi mkTest rfields))), SuppressSequencePointAtTarget))) let nullary,nonNullary = List.partition isNone (List.map mkCase ucases) if isNil nonNullary then mkTrue g m else let dtree = TDSwitch(thise,List.map (function (Some c) -> c | None -> failwith "mkUnionEquality") nonNullary, (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m,SuppressSequencePointAtTarget))), m) mbuilder.Close(dtree,m,g.bool_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) mkCompGenLet m thistagv (mkUnionCaseTagGet (thise,tcref,tinst,m)) (mkCompGenLet m thattagv (mkUnionCaseTagGet (thate,tcref,tinst,m)) tagsEqTested) let expr = mkBindThatNullEquals g m thise thate expr thisv,thatv, expr /// Build the equality implementation for a union type when parameterized by a comparer let mkUnionEqualityWithComparer g tcref (tycon:Tycon) (_thisv,thise) thatobje (thatv,thate) compe = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst,ty = mkMinimalTy g tcref let thistagv,thistage = mkCompGenLocal m "thisTag" g.int_ty let thattagv,thattage = mkCompGenLocal m "thatTag" g.int_ty let thataddrv,thataddre = mkThatAddrLocal g m ty let expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let mkCase ucase = let cref = mkNestedUnionCaseRef tcref ucase let m = cref.Range let thisucv,thisucve = mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) let thatucv,thatucve = mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) let mkTest j (argty:RecdField) = mkCallGenericEqualityWithComparerOuter g m argty.FormalType compe (mkUnionCaseFieldGetProven(thisucve, cref, tinst, j, m)) (mkUnionCaseFieldGetProven(thatucve, cref, tinst, j, m)) let rfields = ucase.RecdFields if isNil rfields then None else Some (mkCase(Test.UnionCase(cref,tinst), mbuilder.AddResultTarget (mkCompGenLet m thisucv (mkUnionCaseProof(thise,cref,tinst,m)) (mkCompGenLet m thatucv (mkUnionCaseProof(thataddre,cref,tinst,m)) (mkEqualsTestConjuncts g m (List.mapi mkTest rfields))), SuppressSequencePointAtTarget))) let nullary,nonNullary = List.partition isNone (List.map mkCase ucases) if isNil nonNullary then mkTrue g m else let dtree = TDSwitch(thise,List.map (function (Some c) -> c | None -> failwith "mkUnionEquality") nonNullary, (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m,SuppressSequencePointAtTarget))), m) mbuilder.Close(dtree,m,g.bool_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) mkCompGenLet m thistagv (mkUnionCaseTagGet (thise,tcref,tinst,m)) (mkCompGenLet m thattagv (mkUnionCaseTagGet (thataddre,tcref,tinst,m)) tagsEqTested) let expr = mkBindThatAddr g m ty thataddrv thatv thate expr let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) let expr = if tycon.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr expr //------------------------------------------------------------------------- // Build hashing functions for union, record and exception types. // Hashing functions must respect the "=" and comparison operators. //------------------------------------------------------------------------- /// Structural hash implementation for record types when parameterized by a comparer let mkRecdHashWithComparer g tcref (tycon:Tycon) compe = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let mkFieldHash (fspec:RecdField) = let fty = fspec.FormalType let fref = mkNestedRecdFieldRef tcref fspec let m = fref.Range let e = mkRecdFieldGetViaExprAddr(thise, fref, tinst, m) mkCallGenericHashWithComparerOuter g m fty compe e let accv,acce = mkMutableCompGenLocal m "i" g.int_ty let stmt = mkCombineHashGenerators g m (List.map mkFieldHash fields) (mkLocalValRef accv) acce let expr = mkCompGenLet m accv (mkZero g m) stmt let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullHash g m thise expr thisv,expr /// Structural hash implementation for exception types when parameterized by a comparer let mkExnHashWithComparer g exnref (exnc:Tycon) compe = let m = exnc.Range let thisv,thise = mkThisVar g m g.exn_ty let mkHash i (rfield:RecdField) = let fty = rfield.FormalType let e = mkExnCaseFieldGet(thise, exnref, i, m) mkCallGenericHashWithComparerOuter g m fty compe e let accv,acce = mkMutableCompGenLocal m "i" g.int_ty let stmt = mkCombineHashGenerators g m (List.mapi mkHash (exnc.AllInstanceFieldsAsList)) (mkLocalValRef accv) acce let expr = mkCompGenLet m accv (mkZero g m) stmt let expr = mkBindNullHash g m thise expr thisv,expr /// Structural hash implementation for union types when parameterized by a comparer let mkUnionHashWithComparer g tcref (tycon:Tycon) compe = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let accv,acce = mkMutableCompGenLocal m "i" g.int_ty let mkCase i ucase1 = let c1ref = mkNestedUnionCaseRef tcref ucase1 let ucv,ucve = mkCompGenLocal m "unionCase" (mkProvenUnionCaseTy c1ref tinst) let m = c1ref.Range let mkHash j (rfield:RecdField) = let fty = rfield.FormalType let e = mkUnionCaseFieldGetProven(ucve, c1ref, tinst, j, m) mkCallGenericHashWithComparerOuter g m fty compe e mkCase(Test.UnionCase(c1ref,tinst), mbuilder.AddResultTarget (mkCompGenLet m ucv (mkUnionCaseProof(thise,c1ref,tinst,m)) (mkCompGenSequential m (mkValSet m (mkLocalValRef accv) (mkInt g m i)) (mkCombineHashGenerators g m (List.mapi mkHash ucase1.RecdFields) (mkLocalValRef accv) acce)), SuppressSequencePointAtTarget)) let dtree = TDSwitch(thise,List.mapi mkCase ucases, None,m) let stmt = mbuilder.Close(dtree,m,g.int_ty) let expr = mkCompGenLet m accv (mkZero g m) stmt let expr = mkBindNullHash g m thise expr thisv,expr //------------------------------------------------------------------------- // The predicate that determines which types implement the // pre-baked IStructuralHash and IComparable semantics associated with F# // types. Note abstract types are not _known_ to implement these interfaces, // though the interfaces may be discoverable via type tests. //------------------------------------------------------------------------- let isNominalExnc (exnc:Tycon) = match exnc.ExceptionInfo with | TExnAbbrevRepr _ | TExnNone | TExnAsmRepr _ -> false | TExnFresh _ -> true let isTrueFSharpStructTycon _g (tycon: Tycon) = (tycon.IsFSharpStructOrEnumTycon && not tycon.IsFSharpEnumTycon) let canBeAugmentedWithEquals g (tycon:Tycon) = tycon.IsUnionTycon || tycon.IsRecordTycon || (tycon.IsExceptionDecl && isNominalExnc tycon) || isTrueFSharpStructTycon g tycon let canBeAugmentedWithCompare g (tycon:Tycon) = tycon.IsUnionTycon || tycon.IsRecordTycon || isTrueFSharpStructTycon g tycon let getAugmentationAttribs g (tycon:Tycon) = canBeAugmentedWithEquals g tycon, canBeAugmentedWithCompare g tycon, TryFindFSharpBoolAttribute g g.attrib_NoEqualityAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_CustomEqualityAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_ReferenceEqualityAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_NoComparisonAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_CustomComparisonAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs let CheckAugmentationAttribs isImplementation g amap (tycon:Tycon)= let m = tycon.Range let attribs = getAugmentationAttribs g tycon match attribs with // THESE ARE THE LEGITIMATE CASES // [< >] on anything | _, _ , None , None, None , None, None , None , None // [] on union/record/struct | true, _, None, Some(true), None , None , None , Some(true), None // [] on union/record/struct | true, _, None, Some(true), None , None , Some(true), None , None -> () // [] on union/record/struct | true, _, None, None , Some(true), None , Some(true), None , None // [] on union/record/struct | true, _, None, None , Some(true), None , None , None , None -> if isTrueFSharpStructTycon g tycon then errorR(Error(FSComp.SR.augNoRefEqualsOnStruct(), m)) else () // [] on union/record/struct | true, true, None, None , None , Some(true), None , None , Some(true) // [] | true, _, None, None , None , Some(true), Some(true), None , None // [] | true, _, None, None , None , Some(true), None , Some(true), None // [] on anything | _ , _, None, None , None , None , Some(true), None , None // [] on anything | _ , _, Some(true), None, None , None , Some(true), None , None -> () (* THESE ARE THE ERROR CASES *) // [] | _, _, Some(true), _, _, _, None, _, _ -> errorR(Error(FSComp.SR.augNoEqualityNeedsNoComparison(), m)) // [] | true, true, _, _, _ , None , _, _, Some(true) -> errorR(Error(FSComp.SR.augStructCompNeedsStructEquality(), m)) // [] | true, _, _, _, _ , Some(true), None, _, None -> errorR(Error(FSComp.SR.augStructEqNeedsNoCompOrStructComp(), m)) // [] | true, _, _, Some(true), _ , _, None, None, _ -> errorR(Error(FSComp.SR.augCustomEqNeedsNoCompOrCustomComp(), m)) // [] | true, _, _, _, Some(true) , Some(true) , _, _, _ // [] | true, _, _, _, Some(true), _, _, _, Some(true) -> errorR(Error(FSComp.SR.augTypeCantHaveRefEqAndStructAttrs(), m)) // non augmented type, [] // non augmented type, [] // non augmented type, [] | false, _, _, _, Some(true), _ , _ , _, _ | false, _, _, _, _ , Some(true), _ , _, _ | false, _, _, _, _ , _ , _ , _, Some(true) -> errorR(Error(FSComp.SR.augOnlyCertainTypesCanHaveAttrs(), m)) // All other cases | _ -> errorR(Error(FSComp.SR.augInvalidAttrs(), m)) let hasNominalInterface tcref = let ty = generalizedTyconRef (mkLocalTyconRef tycon) ExistsHeadTypeInEntireHierarchy g amap tycon.Range ty tcref let hasExplicitICompare = hasNominalInterface g.tcref_System_IStructuralComparable || hasNominalInterface g.tcref_System_IComparable let hasExplicitIGenericCompare = hasNominalInterface g.system_GenericIComparable_tcref let hasExplicitEquals = tycon.HasOverride g "Equals" [g.obj_ty] || hasNominalInterface g.tcref_System_IStructuralEquatable let hasExplicitGenericEquals = hasNominalInterface g.system_GenericIEquatable_tcref match attribs with // [] + any equality semantics | _, _, Some(true), _, _, _, _, _, _ when (hasExplicitEquals || hasExplicitGenericEquals) -> warning(Error(FSComp.SR.augNoEqNeedsNoObjEquals(), m)) // [] + any comparison semantics | _, _, _, _, _, _, Some(true), _, _ when (hasExplicitICompare || hasExplicitIGenericCompare) -> warning(Error(FSComp.SR.augNoCompCantImpIComp(), m)) // [] + no explicit override Object.Equals + no explicit IStructuralEquatable | _, _, _, Some(true), _, _, _, _, _ when isImplementation && not hasExplicitEquals && not hasExplicitGenericEquals-> errorR(Error(FSComp.SR.augCustomEqNeedsObjEquals(), m)) // [] + no explicit IComparable + no explicit IStructuralComparable | _, _, _, _, _, _, _, Some(true), _ when isImplementation && not hasExplicitICompare && not hasExplicitIGenericCompare -> errorR(Error(FSComp.SR.augCustomCompareNeedsIComp(), m)) // [] + any equality semantics | _, _, _, _, Some(true), _, _, _, _ when (hasExplicitEquals || hasExplicitIGenericCompare) -> errorR(Error(FSComp.SR.augRefEqCantHaveObjEquals(), m)) | _ -> () let TyconIsCandidateForAugmentationWithCompare g (tycon:Tycon) = // This type gets defined in prim-types, before we can add attributes to F# type definitions let isUnit = g.compilingFslib && tycon.DisplayName = "Unit" not isUnit && match getAugmentationAttribs g tycon with // [< >] | true, true, None, None, None, None , None, None, None // [] | true, true, None, None, None, Some(true), None, None, Some(true) // [] | true, true, None, None, None, None, None, None, Some(true) -> true // other cases | _ -> false let TyconIsCandidateForAugmentationWithEquals g (tycon:Tycon) = // This type gets defined in prim-types, before we can add attributes to F# type definitions let isUnit = g.compilingFslib && tycon.DisplayName = "Unit" not isUnit && match getAugmentationAttribs g tycon with // [< >] | true, _, None, None, None, None , _, _, _ // [] // [] | true, _, None, None, None, Some(true), _, _, _ -> true // other cases | _ -> false let TyconIsCandidateForAugmentationWithHash g tycon = TyconIsCandidateForAugmentationWithEquals g tycon //------------------------------------------------------------------------- // Make values that represent the implementations of the // IComparable semantics associated with F# types. //------------------------------------------------------------------------- let slotImplMethod (final,c,slotsig) = { ImplementedSlotSigs=[slotsig]; MemberFlags= { IsInstance=true; IsDispatchSlot=false; IsFinal=final; IsOverrideOrExplicitImpl=true; MemberKind=MemberKind.Member}; IsImplemented=false; ApparentParent=c} let nonVirtualMethod c = { ImplementedSlotSigs=[]; MemberFlags={ IsInstance=true; IsDispatchSlot=false; IsFinal=false; IsOverrideOrExplicitImpl=false; MemberKind=MemberKind.Member}; IsImplemented=false; ApparentParent=c} let unitArg = ValReprInfo.unitArgData let unaryArg = [ ValReprInfo.unnamedTopArg ] let tupArg = [ [ ValReprInfo.unnamedTopArg1; ValReprInfo.unnamedTopArg1 ] ] let mkValSpec g (tcref:TyconRef) tmty vis slotsig methn ty argData = let m = tcref.Range let tps = tcref.Typars(m) let final = isUnionTy g tmty || isRecdTy g tmty || isStructTy g tmty let membInfo = match slotsig with None -> nonVirtualMethod tcref | Some(slotsig) -> slotImplMethod(final,tcref,slotsig) let inl = ValInline.Optional let args = ValReprInfo.unnamedTopArg :: argData let topValInfo = Some (ValReprInfo (ValReprInfo.InferTyparInfo tps, args, ValReprInfo.unnamedRetVal)) NewVal (methn, m, None, ty, Immutable, true, topValInfo, vis, ValNotInRecScope, Some(membInfo), NormalVal, [], inl, XmlDoc.Empty, true, false, false, false, false, false, None, Parent(tcref)) let MakeValsForCompareAugmentation g (tcref:TyconRef) = let m = tcref.Range let _,tmty = mkMinimalTy g tcref let tps = tcref.Typars m let vis = tcref.TypeReprAccessibility mkValSpec g tcref tmty vis (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g tmty)) unaryArg, mkValSpec g tcref tmty vis (Some(mkGenericIComparableCompareToSlotSig g tmty)) "CompareTo" (tps +-> (mkCompareTy g tmty)) unaryArg let MakeValsForCompareWithComparerAugmentation g (tcref:TyconRef) = let m = tcref.Range let _,tmty = mkMinimalTy g tcref let tps = tcref.Typars m let vis = tcref.TypeReprAccessibility mkValSpec g tcref tmty vis (Some(mkIStructuralComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareWithComparerTy g tmty)) tupArg let MakeValsForEqualsAugmentation g (tcref:TyconRef) = let m = tcref.Range let _,tmty = mkMinimalTy g tcref let vis = tcref.TypeReprAccessibility let tps = tcref.Typars m let objEqualsVal = mkValSpec g tcref tmty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g tmty)) unaryArg let nocEqualsVal = mkValSpec g tcref tmty vis (if tcref.Deref.IsExceptionDecl then None else Some(mkGenericIEquatableEqualsSlotSig g tmty)) "Equals" (tps +-> (mkEqualsTy g tmty)) unaryArg objEqualsVal,nocEqualsVal let MakeValsForEqualityWithComparerAugmentation g (tcref:TyconRef) = let _,tmty = mkMinimalTy g tcref let vis = tcref.TypeReprAccessibility let tps = tcref.Typars(tcref.Range) let objGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g tmty)) unitArg let withcGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashWithComparerTy g tmty)) unaryArg let withcEqualsVal = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g tmty)) tupArg objGetHashCodeVal,withcGetHashCodeVal,withcEqualsVal let MakeBindingsForCompareAugmentation g (tycon:Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars(tycon.Range) let mkCompare comparef = match tycon.GeneratedCompareToValues with | None -> [] | Some (vref1,vref2) -> let vspec1 = vref1.Deref let vspec2 = vref2.Deref (* this is the body of the override *) let rhs1 = let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let thatobjv,thatobje = mkCompGenLocal m "obj" g.obj_ty let comparee = if isUnitTy g ty then mkZero g m else let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty) mkApps g ((exprForValRef m vref2,vref2.Type), (if isNil tinst then [] else [tinst]), [thise;thate], m) mkLambdas m tps [thisv;thatobjv] (comparee,g.int_ty) let rhs2 = let thisv,thatv,comparee = comparef g tcref tycon mkLambdas m tps [thisv;thatv] (comparee,g.int_ty) [ // This one must come first because it may be inlined into the second mkCompGenBind vspec2 rhs2; mkCompGenBind vspec1 rhs1; ] if tycon.IsUnionTycon then mkCompare mkUnionCompare elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkCompare mkRecdCompare else [] let MakeBindingsForCompareWithComparerAugmentation g (tycon:Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars(tycon.Range) let mkCompare comparef = match tycon.GeneratedCompareToWithComparerValues with | None -> [] | Some (vref) -> let vspec = vref.Deref let _,ty = mkMinimalTy g tcref let compv,compe = mkCompGenLocal m "comp" g.mk_IComparer_ty let thisv,thise = mkThisVar g m ty let thatobjv,thatobje = mkCompGenLocal m "obj" g.obj_ty let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty) let rhs = let comparee = comparef g tcref tycon (thisv,thise) (thatobjv,thate) compe let comparee = if isUnitTy g ty then mkZero g m else comparee mkMultiLambdas m tps [[thisv];[thatobjv;compv]] (comparee,g.int_ty) [mkCompGenBind vspec rhs] if tycon.IsUnionTycon then mkCompare mkUnionCompareWithComparer elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkCompare mkRecdCompareWithComparer else [] let MakeBindingsForEqualityWithComparerAugmentation g (tycon:Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars(tycon.Range) let mkStructuralEquatable hashf equalsf = match tycon.GeneratedHashAndEqualsWithComparerValues with | None -> [] | Some (objGetHashCodeVal,withcGetHashCodeVal,withcEqualsVal) -> // build the hash rhs let withcGetHashCodeExpr = let compv,compe = mkCompGenLocal m "comp" g.mk_IEqualityComparer_ty let thisv,hashe = hashf g tcref tycon compe mkLambdas m tps [thisv;compv] (hashe,g.int_ty) // build the equals rhs let withcEqualsExpr = let _tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let thatobjv,thatobje = mkCompGenLocal m "obj" g.obj_ty let thatv,thate = mkCompGenLocal m "that" ty let compv,compe = mkCompGenLocal m "comp" g.mk_IEqualityComparer_ty let equalse = equalsf g tcref tycon (thisv,thise) thatobje (thatv,thate) compe mkMultiLambdas m tps [[thisv];[thatobjv;compv]] (equalse,g.bool_ty) let objGetHashCodeExpr = let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let unitv,_ = mkCompGenLocal m "unitArg" g.unit_ty let hashe = if isUnitTy g ty then mkZero g m else let compe = mkILCallGetEqualityComparer g m mkApps g ((exprForValRef m withcGetHashCodeVal,withcGetHashCodeVal.Type), (if isNil tinst then [] else [tinst]), [thise; compe], m) mkLambdas m tps [thisv; unitv] (hashe,g.int_ty) [(mkCompGenBind withcGetHashCodeVal.Deref withcGetHashCodeExpr) ; (mkCompGenBind objGetHashCodeVal.Deref objGetHashCodeExpr) ; (mkCompGenBind withcEqualsVal.Deref withcEqualsExpr)] if tycon.IsUnionTycon then mkStructuralEquatable mkUnionHashWithComparer mkUnionEqualityWithComparer elif (tycon.IsRecordTycon || tycon.IsStructOrEnumTycon) then mkStructuralEquatable mkRecdHashWithComparer mkRecdEqualityWithComparer elif tycon.IsExceptionDecl then mkStructuralEquatable mkExnHashWithComparer mkExnEqualityWithComparer else [] let MakeBindingsForEqualsAugmentation g (tycon:Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars(m) let mkEquals equalsf = match tycon.GeneratedHashAndEqualsValues with | None -> [] | Some (objEqualsVal,nocEqualsVal) -> // this is the body of the real strongly typed implementation let nocEqualsExpr = let thisv,thatv,equalse = equalsf g tcref tycon mkLambdas m tps [thisv;thatv] (equalse,g.bool_ty) // this is the body of the override let objEqualsExpr = let tinst,ty = mkMinimalTy g tcref let thisv,thise = mkThisVar g m ty let thatobjv,thatobje = mkCompGenLocal m "obj" g.obj_ty let equalse = if isUnitTy g ty then mkTrue g m else let thatv,thate = mkCompGenLocal m "that" ty mkIsInstConditional g m ty thatobje thatv (mkApps g ((exprForValRef m nocEqualsVal,nocEqualsVal.Type), (if isNil tinst then [] else [tinst]), [thise;thate], m)) (mkFalse g m) mkLambdas m tps [thisv;thatobjv] (equalse,g.bool_ty) [ mkCompGenBind nocEqualsVal.Deref nocEqualsExpr; mkCompGenBind objEqualsVal.Deref objEqualsExpr; ] if tycon.IsExceptionDecl then mkEquals mkExnEquality elif tycon.IsUnionTycon then mkEquals mkUnionEquality elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkEquals mkRecdEquality else [] let rec TypeDefinitelyHasEquality g ty = if isAppTy g ty && HasFSharpAttribute g g.attrib_NoEqualityAttribute (tcrefOfAppTy g ty).Attribs then false elif isTyparTy g ty && (destTyparTy g ty).Constraints |> List.exists (function TyparConstraint.SupportsEquality _ -> true | _ -> false) then true else match ty with | SpecialEquatableHeadType g tinst -> tinst |> List.forall (TypeDefinitelyHasEquality g) | SpecialNotEquatableHeadType g _ -> false | _ -> // The type is equatable because it has Object.Equals(...) isAppTy g ty && let tcref,tinst = destAppTy g ty // Give a good error for structural types excluded from the equality relation because of their fields not (TyconIsCandidateForAugmentationWithEquals g tcref.Deref && isNone tcref.GeneratedHashAndEqualsWithComparerValues) && // Check the (possibly inferred) structural dependencies (tinst, tcref.TyparsNoRange) ||> List.lengthsEqAndForall2 (fun ty tp -> not tp.EqualityConditionalOn || TypeDefinitelyHasEquality g ty) fsharp-3.0.34/src/fsharp/policy.4.0.FSharp.Core/0000775000175000017500000000000012260314606020012 5ustar chrischrisfsharp-3.0.34/src/fsharp/policy.4.0.FSharp.Core/Makefile.in0000664000175000017500000000151312260314606022057 0ustar chrischrisNAME=policy.4.0.FSharp.Core ASSEMBLY = $(NAME).dll DELAY_SIGN=1 srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make include $(topdir)/src/fsharp/targets.make # override the targets to build the assembly $(objdir)$(TARGET_2_0)/policy.4.0.FSharp.Core.dll: policy.4.0.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.4.0.FSharp.Core.dll.config $(@D) al /link:policy.4.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0) $(objdir)$(TARGET_4_0)/policy.4.0.FSharp.Core.dll: policy.4.0.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.4.0.FSharp.Core.dll.config $(@D) al /link:policy.4.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0) do-final: do-2-0 do-4-0 clean: clean-2-0 clean-4-0 install: install-lib-2 install-lib-4 fsharp-3.0.34/src/fsharp/policy.4.0.FSharp.Core/policy.4.0.FSharp.Core.dll.config0000664000175000017500000000071112260314606025622 0ustar chrischris fsharp-3.0.34/src/fsharp/InternalCollections.fsi0000775000175000017500000000635112260314606020630 0ustar chrischrisnamespace Internal.Utilities.Collections /// Simple aging lookup table. When a member is accessed it's /// moved to the top of the list and when there are too many elements /// the least-recently-accessed element falls of the end. type internal AgedLookup<'TKey,'TValue> = new : keepStrongly:int * areSame:('TKey * 'TKey -> bool) * ?onStrongDiscard : ('TValue -> unit) // this may only be set if keepTotal=keepStrongly, i.e. not weak entries * ?keepMax: int -> AgedLookup<'TKey,'TValue> /// Lookup the value without making it the most recent. /// Returns the original key value because the areSame function /// may have unified two different keys. member TryPeekKeyValue : key:'TKey -> ('TKey*'TValue) option /// Lookup a value and make it the most recent. /// Returns the original key value because the areSame function /// may have unified two different keys. member TryGetKeyValue : key:'TKey -> ('TKey*'TValue) option /// Lookup a value and make it the most recent. Return None if it wasn't there. member TryGet : key:'TKey -> 'TValue option /// Add an element to the collection. Make it the most recent. member Put : 'TKey*'TValue -> unit /// Remove the given value from the collection. member Remove : key:'TKey -> unit /// Remove all elements. member Clear : unit -> unit /// Simple priority caching for a small number of key\value associations. /// This cache may age-out results that have been Set by the caller. /// Because of this, the caller must be able to tolerate values /// that aren't what was originally passed to the Set function. type internal MruCache<'TKey,'TValue> = new : keepStrongly:int * compute:('TKey -> 'TValue) * areSame:('TKey * 'TKey -> bool) * ?isStillValid:('TKey * 'TValue -> bool) * ?areSameForSubsumption:('TKey * 'TKey -> bool) * ?logComputedNewValue:('TKey -> unit) * ?logUsedCachedValue:('TKey -> unit) * ?onDiscard:('TValue -> unit) * ?keepMax:int -> MruCache<'TKey,'TValue> /// Clear out the cache. member Clear : unit -> unit /// Get the value for the given key. Compute if necessary. member Get : key:'TKey -> 'TValue /// Get the value for the given key or None if not already available member GetAvailable : key:'TKey -> 'TValue option /// Remove the given value from the mru cache. member Remove : key:'TKey -> unit /// Set the value for the given key. This value does not have to agree with computed value. member SetAlternate : key:'TKey * value:'TValue -> unit /// Get the most recent item if there is one. member MostRecent : ('TKey * 'TValue) option [] type internal List = /// Return a new list with one element for each unique 'TKey. Multiple 'TValues are flattened. The original order of the first instance of 'TKey is preserved. static member groupByFirst : l:('TKey * 'TValue) list -> ('TKey * 'TValue list) list when 'TKey : equality /// Return each distinct item in the list using reference equality. static member referenceDistinct : 'T list -> 'T list when 'T : not struct fsharp-3.0.34/src/fsharp/tast.fs0000775000175000017500000066000712260314606015463 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Tast open System open System.Collections.Generic open System.Reflection open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.QuotationPickler open Microsoft.FSharp.Core.Printf #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping open Microsoft.FSharp.Core.CompilerServices #endif #if DEBUG ///verboseStamps: print #stamp on each id -- very verbose - but sometimes useful. Turn on using '--stamps' let verboseStamps = ref false #endif /// Unique name generator for stamps attached to lambdas and object expressions type Unique = int64 //++GLOBAL MUTABLE STATE let newUnique = let i = ref 0L in fun () -> i := !i + 1L; !i type Stamp = int64 /// Unique name generator for stamps attached to to val_specs, tycon_specs etc. //++GLOBAL MUTABLE STATE let newStamp = let i = ref 0L in fun () -> i := !i + 1L; !i /// A global generator of compiler generated names // ++GLOBAL MUTABLE STATE let globalNng = NiceNameGenerator() /// A global generator of stable compiler generated names // ++GLOBAL MUTABLE STATE let globalStableNameGenerator = StableNiceNameGenerator () type StampMap<'T> = Map //------------------------------------------------------------------------- // Flags [] type ValInline = /// Indicates the value must always be inlined and no .NET IL code is generated for the value/function | PseudoVal /// Indicates the value is inlined but the .NET IL code for the function still exists, e.g. to satisfy interfaces on objects, but that it is also always inlined | Always /// Indicates the value may optionally be inlined by the optimizer | Optional /// Indicates the value must never be inlined by the optimizer | Never /// Returns true if the implementation of a value must always be inlined let mustinline = function ValInline.PseudoVal | ValInline.Always -> true | ValInline.Optional | ValInline.Never -> false /// A flag associated with values that indicates whether the recursive scope of the value is currently being processed, and /// if the value has been generalized or not as yet. type ValRecursiveScopeInfo = /// Set while the value is within its recursive scope. The flag indicates if the value has been eagerly generalized and accepts generic-recursive calls | ValInRecScope of bool /// The normal value for this flag when the value is not within its recursive scope | ValNotInRecScope type ValMutability = | Immutable | Mutable [] /// Indicates if a type parameter is needed at runtime and may not be eliminated type TyparDynamicReq = /// Indicates the type parameter is not needed at runtime and may be eliminated | No /// Indicates the type parameter is needed at runtime and may not be eliminated | Yes type ValBaseOrThisInfo = /// Indicates a ref-cell holding 'this' or the implicit 'this' used throughout an /// implicit constructor to access and set values | CtorThisVal /// Indicates the value called 'base' available for calling base class members | BaseVal /// Indicates a normal value | NormalVal /// Indicates the 'this' value specified in a memberm e.g. 'x' in 'member x.M() = 1' | MemberThisVal //--------------------------------------------------------------------------- // Flags on values //--------------------------------------------------------------------------- [] type ValFlags(flags:int64) = new (recValInfo, baseOrThis, isCompGen, inlineInfo, isMutable, isModuleOrMemberBinding, isExtensionMember, isIncrClassSpecialMember, isTyFunc, allowTypeInst, isGeneratedEventVal) = let flags = (match baseOrThis with | BaseVal -> 0b000000000000000000L | CtorThisVal -> 0b000000000000000010L | NormalVal -> 0b000000000000000100L | MemberThisVal -> 0b000000000000000110L) ||| (if isCompGen then 0b000000000000001000L else 0b000000000000000000L) ||| (match inlineInfo with | ValInline.PseudoVal -> 0b000000000000000000L | ValInline.Always -> 0b000000000000010000L | ValInline.Optional -> 0b000000000000100000L | ValInline.Never -> 0b000000000000110000L) ||| (match isMutable with | Immutable -> 0b000000000000000000L | Mutable -> 0b000000000001000000L) ||| (match isModuleOrMemberBinding with | false -> 0b000000000000000000L | true -> 0b000000000010000000L) ||| (match isExtensionMember with | false -> 0b000000000000000000L | true -> 0b000000000100000000L) ||| (match isIncrClassSpecialMember with | false -> 0b000000000000000000L | true -> 0b000000001000000000L) ||| (match isTyFunc with | false -> 0b000000000000000000L | true -> 0b000000010000000000L) ||| (match recValInfo with | ValNotInRecScope -> 0b000000000000000000L | ValInRecScope true -> 0b000000100000000000L | ValInRecScope false -> 0b000001000000000000L) ||| (match allowTypeInst with | false -> 0b000000000000000000L | true -> 0b000100000000000000L) ||| (match isGeneratedEventVal with | false -> 0b000000000000000000L | true -> 0b100000000000000000L) ValFlags(flags) member x.BaseOrThisInfo = match (flags &&& 0b000000000000000110L) with | 0b000000000000000000L -> BaseVal | 0b000000000000000010L -> CtorThisVal | 0b000000000000000100L -> NormalVal | 0b000000000000000110L -> MemberThisVal | _ -> failwith "unreachable" member x.IsCompilerGenerated = (flags &&& 0b000000000000001000L) <> 0x0L member x.SetIsCompilerGenerated(isCompGen) = let flags = (flags &&& ~~~0b000000000000001000L) ||| (match isCompGen with | false -> 0b000000000000000000L | true -> 0b000000000000001000L) ValFlags(flags) member x.InlineInfo = match (flags &&& 0b000000000000110000L) with | 0b000000000000000000L -> ValInline.PseudoVal | 0b000000000000010000L -> ValInline.Always | 0b000000000000100000L -> ValInline.Optional | 0b000000000000110000L -> ValInline.Never | _ -> failwith "unreachable" member x.MutabilityInfo = match (flags &&& 0b000000000001000000L) with | 0b000000000000000000L -> Immutable | 0b000000000001000000L -> Mutable | _ -> failwith "unreachable" member x.IsMemberOrModuleBinding = match (flags &&& 0b000000000010000000L) with | 0b000000000000000000L -> false | 0b000000000010000000L -> true | _ -> failwith "unreachable" member x.SetIsMemberOrModuleBinding = ValFlags(flags ||| 0b000000000010000000L) member x.IsExtensionMember = (flags &&& 0b000000000100000000L) <> 0L member x.IsIncrClassSpecialMember = (flags &&& 0b000000001000000000L) <> 0L member x.IsTypeFunction = (flags &&& 0b000000010000000000L) <> 0L member x.RecursiveValInfo = match (flags &&& 0b000001100000000000L) with | 0b000000000000000000L -> ValNotInRecScope | 0b000000100000000000L -> ValInRecScope(true) | 0b000001000000000000L -> ValInRecScope(false) | _ -> failwith "unreachable" member x.SetRecursiveValInfo(recValInfo) = let flags = (flags &&& ~~~0b000001100000000000L) ||| (match recValInfo with | ValNotInRecScope -> 0b000000000000000000L | ValInRecScope(true) -> 0b000000100000000000L | ValInRecScope(false) -> 0b000001000000000000L) ValFlags(flags) member x.MakesNoCriticalTailcalls = (flags &&& 0b000010000000000000L) <> 0L member x.SetMakesNoCriticalTailcalls = ValFlags(flags ||| 0b000010000000000000L) member x.PermitsExplicitTypeInstantiation = (flags &&& 0b000100000000000000L) <> 0L member x.HasBeenReferenced = (flags &&& 0b001000000000000000L) <> 0L member x.SetHasBeenReferenced = ValFlags(flags ||| 0b001000000000000000L) member x.IsCompiledAsStaticPropertyWithoutField = (flags &&& 0b010000000000000000L) <> 0L member x.SetIsCompiledAsStaticPropertyWithoutField = ValFlags(flags ||| 0b010000000000000000L) member x.IsGeneratedEventVal = (flags &&& 0b100000000000000000L) <> 0L /// Get the flags as included in the F# binary metadata member x.PickledBits = // Clear the RecursiveValInfo, only used during inference and irrelevant across assembly boundaries // Clear the IsCompiledAsStaticPropertyWithoutField, only used to determine whether to use a true field for a value, and to eliminate the optimization info for observable bindings // Clear the HasBeenReferenced, only used to report "unreferenced variable" warnings and to help collect 'it' values in FSI.EXE // Clear the IsGeneratedEventVal, since there's no use in propagating specialname information for generated add/remove event vals (flags &&& ~~~0b011001100000000000L) [] type TyparKind = | Type | Measure member x.AttrName = match x with | TyparKind.Type -> None | TyparKind.Measure -> Some "Measure" override x.ToString() = match x with | TyparKind.Type -> "type" | TyparKind.Measure -> "measure" [] /// Indicates if the type variable can be sovled or given new constraints. The status of a type variable /// evolves towards being either rigid or solved. type TyparRigidity = /// Indicates the type parameter can't be solved | Rigid /// Indicates the type parameter can't be solved, but the variable is not set to "rigid" until after inference is complete | WillBeRigid /// Indicates we give a warning if the type parameter is ever solved | WarnIfNotRigid /// Indicates the type parameter is an inference variable may be solved | Flexible /// Indicates the type parameter derives from an '_' anonymous type /// For units-of-measure, we give a warning if this gets solved to '1' | Anon member x.ErrorIfUnified = match x with TyparRigidity.Rigid -> true | _ -> false member x.WarnIfUnified = match x with TyparRigidity.WillBeRigid | TyparRigidity.WarnIfNotRigid -> true | _ -> false member x.WarnIfMissingConstraint = match x with TyparRigidity.WillBeRigid -> true | _ -> false /// Encode typar flags into a bit field [] type TyparFlags(flags:int32) = new (kind:TyparKind, rigidity:TyparRigidity, isFromError:bool, isCompGen:bool, staticReq:TyparStaticReq, dynamicReq:TyparDynamicReq, equalityDependsOn: bool, comparisonDependsOn: bool) = TyparFlags((if isFromError then 0b000000000010 else 0) ||| (if isCompGen then 0b000000000100 else 0) ||| (match staticReq with | NoStaticReq -> 0b000000000000 | HeadTypeStaticReq -> 0b000000001000) ||| (match rigidity with | TyparRigidity.Rigid -> 0b000000000000 | TyparRigidity.WillBeRigid -> 0b000000100000 | TyparRigidity.WarnIfNotRigid -> 0b000001000000 | TyparRigidity.Flexible -> 0b000001100000 | TyparRigidity.Anon -> 0b000010000000) ||| (match kind with | TyparKind.Type -> 0b000000000000 | TyparKind.Measure -> 0b000100000000) ||| (if comparisonDependsOn then 0b001000000000 else 0) ||| (match dynamicReq with | TyparDynamicReq.No -> 0b000000000000 | TyparDynamicReq.Yes -> 0b010000000000) ||| (if equalityDependsOn then 0b100000000000 else 0)) /// Indicates if the type inference variable was generated after an error when type checking expressions or patterns member x.IsFromError = (flags &&& 0b000000000010) <> 0x0 /// Indicates if the type variable is compiler generated, i.e. is an implicit type inference variable member x.IsCompilerGenerated = (flags &&& 0b000000000100) <> 0x0 /// Indicates if the type variable has a static "head type" requirement, i.e. ^a variables used in FSharp.Core and member constraints. member x.StaticReq = match (flags &&& 0b000000001000) with | 0b000000000000 -> NoStaticReq | 0b000000001000 -> HeadTypeStaticReq | _ -> failwith "unreachable" /// Indicates if the type variable can be sovled or given new constraints. The status of a type variable /// generally always evolves towards being either rigid or solved. member x.Rigidity = match (flags &&& 0b000011100000) with | 0b000000000000 -> TyparRigidity.Rigid | 0b000000100000 -> TyparRigidity.WillBeRigid | 0b000001000000 -> TyparRigidity.WarnIfNotRigid | 0b000001100000 -> TyparRigidity.Flexible | 0b000010000000 -> TyparRigidity.Anon | _ -> failwith "unreachable" /// Indicates whether a type variable can be instantiated by types or units-of-measure. member x.Kind = match (flags &&& 0b000100000000) with | 0b000000000000 -> TyparKind.Type | 0b000100000000 -> TyparKind.Measure | _ -> failwith "unreachable" /// Indicates that whether or not a generic type definition satisfies the comparison constraint is dependent on whether this type variable satisfies the comparison constraint. member x.ComparisonConditionalOn = (flags &&& 0b001000000000) <> 0x0 /// Indicates if a type parameter is needed at runtime and may not be eliminated member x.DynamicReq = match (flags &&& 0b010000000000) with | 0b000000000000 -> TyparDynamicReq.No | 0b010000000000 -> TyparDynamicReq.Yes | _ -> failwith "unreachable" /// Indicates that whether or not a generic type definition satisfies the equality constraint is dependent on whether this type variable satisfies the equality constraint. member x.EqualityConditionalOn = (flags &&& 0b100000000000) <> 0x0 /// Get the flags as included in the F# binary metadata. We pickle this as int64 to allow for future expansion member x.PickledBits = flags /// Encode entity flags into a bit field. We leave lots of space to allow for future expansion. [] type EntityFlags(flags:int64) = new (usesPrefixDisplay, isModuleOrNamespace, preEstablishedHasDefaultCtor, hasSelfReferentialCtor) = EntityFlags((if isModuleOrNamespace then 0b00000000001L else 0L) ||| (if usesPrefixDisplay then 0b00000000010L else 0L) ||| (if preEstablishedHasDefaultCtor then 0b00000000100L else 0L) ||| (if hasSelfReferentialCtor then 0b00000001000L else 0L)) member x.IsModuleOrNamespace = (flags &&& 0b00000000001L) <> 0x0L member x.IsPrefixDisplay = (flags &&& 0b00000000010L) <> 0x0L // This bit is not pickled, only used while establishing a type constructor. It is needed because the type constructor // is known to satisfy the default constructor constraint even before any of its members have been established. member x.PreEstablishedHasDefaultConstructor = (flags &&& 0b00000000100L) <> 0x0L // This bit represents an F# specific condition where a type has at least one constructor that may access // the 'this' pointer prior to successful initialization of the partial contents of the object. In this // case sub-classes must protect themselves against early access to their contents. member x.HasSelfReferentialConstructor = (flags &&& 0b00000001000L) <> 0x0L /// This bit is reserved for us in the pickle format, see pickle.fs, it's bing listed here to stop it ever being used for anything else static member ReservedBitForPickleFormatTyconReprFlag = 0b00000010000L /// Get the flags as included in the F# binary metadata member x.PickledBits = (flags &&& ~~~0b00000000100L) #if DEBUG assert (sizeof = 8) assert (sizeof = 8) assert (sizeof = 4) #endif let unassignedTyparName = "?" exception UndefinedName of int * (* error func that expects identifier name *)(string -> string) * Ident * string list exception InternalUndefinedItemRef of (string * string * string -> int * string) * string * string * string let KeyTyconByDemangledNameAndArity nm (typars: _ list) x = KeyValuePair(NameArityPair(DemangleGenericTypeName nm, typars.Length), x) /// Generic types can be accessed either by 'List' or 'List`1'. This lists both keys. The second form should really be deprecated. let KeyTyconByAccessNames nm x = if IsMangledGenericName nm then let dnm = DemangleGenericTypeName nm [| KeyValuePair(nm,x); KeyValuePair(dnm,x) |] else [| KeyValuePair(nm,x) |] type ModuleOrNamespaceKind = /// Indicates that a module is compiled to a class with the "Module" suffix added. | FSharpModuleWithSuffix /// Indicates that a module is compiled to a class with the same name as the original module | ModuleOrType /// Indicates that a 'module' is really a namespace | Namespace /// The information ILXGEN needs about the location of an item type CompilationPath = | CompPath of ILScopeRef * (string * ModuleOrNamespaceKind) list member x.ILScopeRef = (let (CompPath(scoref,_)) = x in scoref) member x.AccessPath = (let (CompPath(_,p)) = x in p) /// A public path records where a construct lives within the global namespace /// of a CCU. type PublicPath = | PubPath of string[] member x.EnclosingPath = let (PubPath(pp)) = x assert (pp.Length >= 1) pp.[0..pp.Length-2] let getNameOfScopeRef sref = match sref with | ILScopeRef.Local -> "" | ILScopeRef.Module mref -> mref.Name | ILScopeRef.Assembly aref -> aref.Name let mangledTextOfCompPath (CompPath(scoref,path)) = getNameOfScopeRef scoref + "/" + textOfPath (List.map fst path) let mangledPathOfCompPath (CompPath(_,path)) = List.map fst path let publicPathOfCompPath (id:Ident) cpath = PubPath(Array.append (Array.ofList (mangledPathOfCompPath cpath)) [| id.idText |]) let parentCompPath (CompPath(scoref,cpath)) = let a,_ = List.frontAndBack cpath CompPath(scoref,a) let mkNestedCPath (CompPath(scoref,p)) n modKind = CompPath(scoref,p@[(n,modKind)]) #if EXTENSIONTYPING let definitionLocationOfProvidedItem (p : Tainted<#IProvidedCustomAttributeProvider>) = let attrs = p.PUntaintNoFailure(fun x -> x.GetDefinitionLocationAttribute(p.TypeProvider.PUntaintNoFailure(id))) match attrs with | None | Some (null, _, _) -> None | Some (filePath, line, column) -> // Coordinates from type provider are 1-based for lines and columns // Coordinates internally in the F# compiler are 1-based for lines and 0-based for columns let pos = Range.mkPos line (max 0 (column - 1)) Range.mkRange filePath pos pos |> Some #endif // Type definitions, exception definitions, module definitions and // namespace definitions are all 'entities'. These have too much in common to make it // worth factoring them out as separate types. [] type Entity = { mutable Data: EntityData } /// The name of the namespace, module or type, possibly with mangling, e.g. List`1, List or FailureException member x.LogicalName = x.Data.entity_logical_name /// The compiled name of the namespace, module or type, e.g. FSharpList`1, ListModule or FailureException member x.CompiledName = match x.Data.entity_compiled_name with None -> x.LogicalName | Some s -> s /// The display name of the namespace, module or type, e.g. List instead of List`1, and no static parameters member x.DisplayName = x.GetDisplayName(false, false) /// The display name of the namespace, module or type with <_,_,_> added for generic types, plus static parameters if any member x.DisplayNameWithStaticParametersAndUnderscoreTypars = x.GetDisplayName(true, true) /// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters if any member x.DisplayNameWithStaticParameters = x.GetDisplayName(true, false) member x.GetDisplayName(withStaticParameters, withUnderscoreTypars) = let nm = x.LogicalName #if EXTENSIONTYPING if x.IsProvidedErasedTycon then let nm,args = PrettyNaming.demangleProvidedTypeName nm if withStaticParameters && args.Length > 0 then nm + "<" + String.concat "," (Array.map snd args) + ">" else nm else #else if false then nm else #endif match x.TyparsNoRange with | [] -> nm | tps -> let nm = DemangleGenericTypeName nm if withUnderscoreTypars && tps.Length > 0 then nm + "<" + String.concat "," (Array.create tps.Length "_") + ">" else nm /// The code location where the module, namespace or type is defined. member x.Range = #if EXTENSIONTYPING match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> match definitionLocationOfProvidedItem info.ProvidedType with | Some range -> range | None -> x.Data.entity_range | _ -> #endif x.Data.entity_range /// A unique stamp for this module, namespace or type definition within the context of this compilation. /// Note that because of signatures, there are situations where in a single compilation the "same" /// module, namespace or type may have two distinct Entity objects that have distinct stamps. member x.Stamp = x.Data.entity_stamp /// The F#-defined custom attributes of the entity, if any. If the entity is backed by Abstract IL or provided metadata /// then this does not include any attributes from those sources. member x.Attribs = x.Data.entity_attribs /// The XML documentation of the entity, if any. If the entity is backed by provided metadata /// then this _does_ include this documentation. If the entity is backed by Abstract IL metadata /// or comes from another F# assembly then it does not (because the documentation will get read from /// an XML file). member x.XmlDoc = #if EXTENSIONTYPING match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> XmlDoc (info.ProvidedType.PUntaintNoFailure(fun st -> (st :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(info.ProvidedType.TypeProvider.PUntaintNoFailure(id)))) | _ -> #endif x.Data.entity_xmldoc /// The XML documentation sig-string of the entity, if any, to use to lookup an .xml doc file. This also acts /// as a cache for this sig-string computation. member x.XmlDocSig with get() = x.Data.entity_xmldocsig and set v = x.Data.entity_xmldocsig <- v /// The logical contents of the entity when it is a module or namespace fragment. member x.ModuleOrNamespaceType = x.Data.entity_modul_contents.Force() /// The logical contents of the entity when it is a type definition. member x.TypeContents = x.Data.entity_tycon_tcaug /// The kind of the type definition - is it a measure definition or a type definition? member x.TypeOrMeasureKind = x.Data.entity_kind /// The identifier at the point of declaration of the type definition. member x.Id = ident(x.LogicalName, x.Range) /// The information about the r.h.s. of a type definition, if any. For example, the r.h.s. of a union or record type. member x.TypeReprInfo = x.Data.entity_tycon_repr /// The information about the r.h.s. of an F# exception definition, if any. member x.ExceptionInfo = x.Data.entity_exn_info /// Indicates if the entity represents an F# exception declaration. member x.IsExceptionDecl = match x.ExceptionInfo with TExnNone -> false | _ -> true /// String 'Module' off an F# module name, if FSharpModuleWithSuffix is used static member DemangleEntityName nm k = match k with | FSharpModuleWithSuffix -> String.dropSuffix nm FSharpModuleSuffix | _ -> nm /// Demangle the module name, if FSharpModuleWithSuffix is used member x.DemangledModuleOrNamespaceName = Entity.DemangleEntityName x.LogicalName x.ModuleOrNamespaceType.ModuleOrNamespaceKind /// Get the type parameters for an entity that is a type declaration, otherwise return the empty list. /// /// Lazy because it may read metadata, must provide a context "range" in case error occurs reading metadata. member x.Typars m = x.Data.entity_typars.Force m /// Get the type parameters for an entity that is a type declaration, otherwise return the empty list. member x.TyparsNoRange = x.Typars x.Range /// Get the type abbreviated by this type definition, if it is an F# type abbreviation definition member x.TypeAbbrev = x.Data.entity_tycon_abbrev /// Indicates if this entity is an F# type abbreviation definition member x.IsTypeAbbrev = x.TypeAbbrev.IsSome /// Get the value representing the accessiblity of the r.h.s. of an F# type definition. member x.TypeReprAccessibility = x.Data.entity_tycon_repr_accessibility /// Get the cache of the compiled ILTypeRef representation of this module or type. member x.CompiledReprCache = x.Data.entity_il_repr_cache /// Get a blob of data indicating how this type is nested in other namespaces, modules or types. member x.PublicPath = x.Data.entity_pubpath /// Get the value representing the accessiblity of an F# type definition or module. member x.Accessibility = x.Data.entity_accessiblity /// Indicates the type prefers the "tycon" syntax for display etc. member x.IsPrefixDisplay = x.Data.entity_flags.IsPrefixDisplay /// Indicates the "tycon blob" is actually a module member x.IsModuleOrNamespace = x.Data.entity_flags.IsModuleOrNamespace /// Indicates if the entity is a namespace member x.IsNamespace = x.IsModuleOrNamespace && (match x.ModuleOrNamespaceType.ModuleOrNamespaceKind with Namespace -> true | _ -> false) /// Indicates if the entity is an F# module definition member x.IsModule = x.IsModuleOrNamespace && (match x.ModuleOrNamespaceType.ModuleOrNamespaceKind with Namespace -> false | _ -> true) #if EXTENSIONTYPING /// Indicates if the entity is a provided type or namespace definition member x.IsProvided = match x.TypeReprInfo with | TProvidedTypeExtensionPoint _ -> true | TProvidedNamespaceExtensionPoint _ -> true | _ -> false /// Indicates if the entity is a provided namespace fragment member x.IsProvidedNamespace = match x.TypeReprInfo with | TProvidedNamespaceExtensionPoint _ -> true | _ -> false /// Indicates if the entity is an erased provided type definition member x.IsProvidedErasedTycon = match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.IsErased | _ -> false /// Indicates if the entity is a generated provided type definition, i.e. not erased. member x.IsProvidedGeneratedTycon = match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.IsGenerated | _ -> false #endif /// Indicates if the entity is erased, either a measure definition, or an erased provided type definition member x.IsErased = x.IsMeasureableReprTycon #if EXTENSIONTYPING || x.IsProvidedErasedTycon #endif /// Get a blob of data indicating how this type is nested inside other namespaces, modules and types. member x.CompilationPathOpt = x.Data.entity_cpath /// Get a blob of data indicating how this type is nested inside other namespaces, modules and types. member x.CompilationPath = match x.CompilationPathOpt with | Some cpath -> cpath | None -> error(Error(FSComp.SR.tastTypeOrModuleNotConcrete(x.LogicalName),x.Range)) /// Get a table of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldTable = match x.TypeReprInfo with | TRecdRepr x | TFsObjModelRepr {fsobjmodel_rfields=x} -> x | _ -> match x.ExceptionInfo with | TExnFresh x -> x | _ -> { FieldsByIndex = [| |] FieldsByName = NameMap.empty } /// Get an array of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldsArray = x.AllFieldTable.FieldsByIndex /// Get a list of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldsAsList = x.AllFieldsArray |> Array.toList /// Get a list of all instance fields for F#-defined record, struct and class fields in this type definition. /// including hidden fields from the compilation of implicit class constructions. // NOTE: This method doesn't perform particularly well, and is over-used, but doesn't seem to appear on performance traces member x.AllInstanceFieldsAsList = x.AllFieldsAsList |> List.filter (fun f -> not f.IsStatic) /// Get a list of all fields for F#-defined record, struct and class fields in this type definition, /// including static fields, but excluding compiler-generate fields. member x.TrueFieldsAsList = x.AllFieldsAsList |> List.filter (fun f -> not f.IsCompilerGenerated) /// Get a list of all instance fields for F#-defined record, struct and class fields in this type definition, /// excluding compiler-generate fields. member x.TrueInstanceFieldsAsList = x.AllFieldsAsList |> List.filter (fun f -> not f.IsStatic && not f.IsCompilerGenerated) /// Get a field by index in definition order member x.GetFieldByIndex n = x.AllFieldTable.FieldByIndex n /// Get a field by name. member x.GetFieldByName n = x.AllFieldTable.FieldByName n /// Indicate if this is a type whose r.h.s. is known to be a union type definition. member x.IsUnionTycon = match x.TypeReprInfo with | TFiniteUnionRepr _ -> true | _ -> false /// Get the union cases and other union-type information for a type, if any member x.UnionTypeInfo = match x.TypeReprInfo with | TFiniteUnionRepr x -> Some x | _ -> None /// Get the union cases for a type, if any member x.UnionCasesArray = match x.UnionTypeInfo with | Some x -> x.CasesTable.CasesByIndex | None -> [| |] /// Get the union cases for a type, if any, as a list member x.UnionCasesAsList = x.UnionCasesArray |> Array.toList /// Get a union case of a type by name member x.GetUnionCaseByName n = match x.UnionTypeInfo with | Some x -> NameMap.tryFind n x.CasesTable.CasesByName | None -> None // OSGN support /// Create a new entity with empty, unlinked data. Only used during unpickling of F# metadata. static member NewUnlinked() : Entity = { Data = nullableSlotEmpty() } /// Create a new entity with the given backing data. Only used during unpickling of F# metadata. static member New reason (data: EntityData) : Entity = #if DEBUG if !verboseStamps then dprintf "entity %s#%d (%s)\n" data.entity_logical_name data.entity_stamp reason #else ignore(reason) #endif { Data = data } /// Link an entity based on empty, unlinked data to the given data. Only used during unpickling of F# metadata. member x.Link tg = x.Data <- nullableSlotFull(tg) /// Indicates if the entity is linked to backing data. Only used during unpickling of F# metadata. member x.IsLinked = match box x.Data with null -> false | _ -> true override x.ToString() = x.LogicalName /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. member x.FSharpObjectModelTypeInfo = match x.TypeReprInfo with | TFsObjModelRepr x -> x | _ -> assert false; failwith "not an F# object model type definition" /// Indicate if this is a type definition backed by Abstract IL metadata. member x.IsILTycon = match x.TypeReprInfo with | TILObjModelRepr _ -> true | _ -> false /// Get the Abstract IL scope, nesting and metadata for this /// type definition, assuming it is backed by Abstract IL metadata. member x.ILTyconInfo = match x.TypeReprInfo with | TILObjModelRepr (a,b,c) -> (a,b,c) | _ -> assert false; failwith "not a .NET type definition" /// Get the Abstract IL metadata for this type definition, assuming it is backed by Abstract IL metadata. member x.ILTyconRawMetadata = let _,_,td = x.ILTyconInfo in td /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition. member x.IsRecordTycon = match x.TypeReprInfo with | TRecdRepr _ -> true | _ -> false /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition member x.IsFSharpObjectModelTycon = match x.TypeReprInfo with | TFsObjModelRepr _ -> true | _ -> false /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll which uses /// an assembly-code representation for the type, e.g. the primitive array type constructor. member x.IsAsmReprTycon = match x.TypeReprInfo with | TAsmRepr _ -> true | _ -> false /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll like 'float<_>' which /// defines a measure type with a relation to an existing non-measure type as a representation. member x.IsMeasureableReprTycon = match x.TypeReprInfo with | TMeasureableRepr _ -> true | _ -> false /// Indicates if this is an F# type definition whose r.h.s. definition is unknown (i.e. a traditional ML 'abstract' type in a signature, /// which in F# is called a 'unknown representation' type). member x.IsHiddenReprTycon = match x.TypeAbbrev,x.TypeReprInfo with | None,TNoRepr -> true | _ -> false /// Indicates if this is an F#-defined interface type definition member x.IsFSharpInterfaceTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconInterface -> true | _ -> false /// Indicates if this is an F#-defined delegate type definition member x.IsFSharpDelegateTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconDelegate _ -> true | _ -> false /// Indicates if this is an F#-defined enum type definition member x.IsFSharpEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconEnum -> true | _ -> false /// Indicates if this is an F#-defined class type definition member x.IsFSharpClassTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconClass -> true | _ -> false /// Indicates if this is a .NET-defined enum type definition member x.IsILEnumTycon = x.IsILTycon && x.ILTyconRawMetadata.IsEnum /// Indicates if this is an enum type definition member x.IsEnumTycon = #if EXTENSIONTYPING match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.IsEnum | TProvidedNamespaceExtensionPoint _ -> false | _ -> #endif x.IsILEnumTycon || x.IsFSharpEnumTycon /// Indicates if this is an F#-defined struct or enum type definition , i.e. a value type definition member x.IsFSharpStructOrEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with | TTyconClass | TTyconInterface | TTyconDelegate _ -> false | TTyconStruct | TTyconEnum -> true /// Indicates if this is a .NET-defined struct or enum type definition , i.e. a value type definition member x.IsILStructOrEnumTycon = x.IsILTycon && match x.ILTyconRawMetadata.tdKind with | ILTypeDefKind.ValueType | ILTypeDefKind.Enum -> true | _ -> false /// Indicates if this is a struct or enum type definition , i.e. a value type definition member x.IsStructOrEnumTycon = #if EXTENSIONTYPING match x.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.IsStructOrEnum | TProvidedNamespaceExtensionPoint _ -> false | _ -> #endif x.IsILStructOrEnumTycon || x.IsFSharpStructOrEnumTycon /// Gets the immediate interface definitions of an F# type definition. Further interfaces may be supported through class and interface inheritance. member x.ImmediateInterfacesOfFSharpTycon = x.TypeContents.tcaug_interfaces /// Gets the immediate interface types of an F# type definition. Further interfaces may be supported through class and interface inheritance. member x.ImmediateInterfaceTypesOfFSharpTycon = x.ImmediateInterfacesOfFSharpTycon |> List.map (fun (x,_,_) -> x) /// Gets the immediate members of an F# type definition, excluding compiler-generated ones. /// Note: result is alphabetically sorted, then for each name the results are in declaration order member x.MembersOfFSharpTyconSorted = x.TypeContents.tcaug_adhoc |> NameMultiMap.rangeReversingEachBucket |> List.filter (fun v -> not v.IsCompilerGenerated) /// Gets all immediate members of an F# type definition keyed by name, including compiler-generated ones. /// Note: result is a indexed table, and for each name the results are in reverse declaration order member x.MembersOfFSharpTyconByName = x.TypeContents.tcaug_adhoc /// Gets any implicit hash/equals (with comparer argument) methods added to an F# record, union or struct type definition. member x.GeneratedHashAndEqualsWithComparerValues = x.TypeContents.tcaug_hash_and_equals_withc /// Gets any implicit CompareTo (with comparer argument) methods added to an F# record, union or struct type definition. member x.GeneratedCompareToWithComparerValues = x.TypeContents.tcaug_compare_withc /// Gets any implicit CompareTo methods added to an F# record, union or struct type definition. member x.GeneratedCompareToValues = x.TypeContents.tcaug_compare /// Gets any implicit hash/equals methods added to an F# record, union or struct type definition. member x.GeneratedHashAndEqualsValues = x.TypeContents.tcaug_equals /// Gets all implicit hash/equals/compare methods added to an F# record, union or struct type definition. member x.AllGeneratedValues = [ match x.GeneratedCompareToValues with | None -> () | Some (v1,v2) -> yield v1; yield v2 match x.GeneratedCompareToWithComparerValues with | None -> () | Some v -> yield v match x.GeneratedHashAndEqualsValues with | None -> () | Some (v1,v2) -> yield v1; yield v2 match x.GeneratedHashAndEqualsWithComparerValues with | None -> () | Some (v1,v2,v3) -> yield v1; yield v2; yield v3 ] /// Gets the data indicating the compiled representation of a type or module in terms of Abstract IL data structures. member x.CompiledRepresentation = #if EXTENSIONTYPING match x.TypeReprInfo with // We should never be computing this property for erased types | TProvidedTypeExtensionPoint info when info.IsErased -> failwith "No compiled representation for provided erased type" // Generated types that are not relocated just point straight to the generated backing assembly, computed from "st". // These are used when running F# Interactive, which does not use static linking of provider-generated assemblies, // and also for types with relocation suppressed. | TProvidedTypeExtensionPoint info when info.IsGenerated && info.IsSuppressRelocate -> let st = info.ProvidedType let tref = ExtensionTyping.GetILTypeRefOfProvidedType (st, x.Range) let boxity = if x.IsStructOrEnumTycon then AsValue else AsObject CompiledTypeRepr.ILAsmNamed(tref, boxity, None) | TProvidedNamespaceExtensionPoint _ -> failwith "No compiled representation for provided namespace" | _ -> #endif let ilTypeRefForCompilationPath (CompPath(sref,p)) item = let rec top racc p = match p with | [] -> ILTypeRef.Create(sref,[],textOfPath (List.rev (item::racc))) | (h,istype)::t -> match istype with | FSharpModuleWithSuffix | ModuleOrType -> let outerTypeName = (textOfPath (List.rev (h::racc))) ILTypeRef.Create(sref, (outerTypeName :: List.map (fun (nm,_) -> nm) t),item) | _ -> top (h::racc) t top [] p cached x.CompiledReprCache (fun () -> match x.ExceptionInfo with | TExnAbbrevRepr ecref2 -> ecref2.CompiledRepresentation | TExnAsmRepr tref -> CompiledTypeRepr.ILAsmNamed(tref, AsObject, Some (mkILTy AsObject (mkILTySpec (tref,[])))) | _ -> match x.TypeReprInfo with | TAsmRepr typ -> CompiledTypeRepr.ILAsmOpen typ | _ -> let boxity = if x.IsStructOrEnumTycon then AsValue else AsObject let ilTypeRef = match x.TypeReprInfo with | TILObjModelRepr (ilScopeRef,ilEnclosingTypeDefs,ilTypeDef) -> IL.mkRefForNestedILTypeDef ilScopeRef (ilEnclosingTypeDefs, ilTypeDef) | _ -> ilTypeRefForCompilationPath x.CompilationPath x.CompiledName // Pre-allocate a ILType for monomorphic types, to reduce memory usage from Abstract IL nodes let ilTypeOpt = match x.TyparsNoRange with | [] -> Some (mkILTy boxity (mkILTySpec (ilTypeRef,[]))) | _ -> None CompiledTypeRepr.ILAsmNamed (ilTypeRef, boxity, ilTypeOpt)) /// Gets the data indicating the compiled representation of a named type or module in terms of Abstract IL data structures. member x.CompiledRepresentationForNamedType = match x.CompiledRepresentation with | CompiledTypeRepr.ILAsmNamed(tref, _, _) -> tref | CompiledTypeRepr.ILAsmOpen _ -> invalidOp (FSComp.SR.tastTypeHasAssemblyCodeRepresentation(x.DisplayNameWithStaticParametersAndUnderscoreTypars)) /// Indicates if we have pre-determined that a type definition has a default constructor. member x.PreEstablishedHasDefaultConstructor = x.Data.entity_flags.PreEstablishedHasDefaultConstructor /// Indicates if we have pre-determined that a type definition has a self-referential constructor using 'as x' member x.HasSelfReferentialConstructor = x.Data.entity_flags.HasSelfReferentialConstructor /// Set the custom attributes on an F# type definition. member x.SetAttribs attribs = x.Data.entity_attribs <- attribs and [] EntityData = { /// The declared type parameters of the type // MUTABILITY; used only during creation and remapping of tycons mutable entity_typars: LazyWithContext // MUTABILITY; used only when establishing tycons. mutable entity_kind : TyparKind mutable entity_flags : EntityFlags /// The unique stamp of the "tycon blob". Note the same tycon in signature and implementation get different stamps entity_stamp: Stamp /// The name of the type, possibly with `n mangling entity_logical_name: string /// The name of the type, possibly with `n mangling // MUTABILITY; used only when establishing tycons. mutable entity_compiled_name: string option /// The declaration location for the type constructor entity_range: range /// The declared accessibility of the representation, not taking signatures into account entity_tycon_repr_accessibility: Accessibility /// The declared attributes for the type // MUTABILITY; used during creation and remapping of tycons // MUTABILITY; used when propagating signature attributes into the implementation. mutable entity_attribs: Attribs /// The declared representation of the type, i.e. record, union, class etc. // // MUTABILITY; used only during creation and remapping of tycons mutable entity_tycon_repr: TyconRepresentation /// If non-None, indicates the type is an abbreviation for another type. // // MUTABILITY; used only during creation and remapping of tycons mutable entity_tycon_abbrev: TType option /// The methods and properties of the type // // MUTABILITY; used only during creation and remapping of tycons mutable entity_tycon_tcaug: TyconAugmentation /// Field used when the 'tycon' is really an exception definition // // MUTABILITY; used only during creation and remapping of tycons mutable entity_exn_info: ExceptionInfo /// This field is used when the 'tycon' is really a module definition. It holds statically nested type definitions and nested modules // // MUTABILITY: only used during creation and remapping of tycons and // when compiling fslib to fixup compiler forward references to internal items mutable entity_modul_contents: Lazy /// The declared documentation for the type or module entity_xmldoc : XmlDoc /// The XML document signature for this entity mutable entity_xmldocsig : string /// The stable path to the type, e.g. Microsoft.FSharp.Core.FSharpFunc`2 // REVIEW: it looks like entity_cpath subsumes this entity_pubpath : PublicPath option /// Indicates how visible is the entitiy is. entity_accessiblity: Accessibility /// The stable path to the type, e.g. Microsoft.FSharp.Core.FSharpFunc`2 entity_cpath : CompilationPath option /// Used during codegen to hold the ILX representation indicating how to access the type entity_il_repr_cache : CompiledTypeRepr cache } and ParentRef = | Parent of EntityRef | ParentNone and [] TyconAugmentation = { /// This is the value implementing the auto-generated comparison /// semantics if any. It is not present if the type defines its own implementation /// of IComparable or if the type doesn't implement IComparable implicitly. mutable tcaug_compare : (ValRef * ValRef) option /// This is the value implementing the auto-generated comparison /// semantics if any. It is not present if the type defines its own implementation /// of IStructuralComparable or if the type doesn't implement IComparable implicitly. mutable tcaug_compare_withc : ValRef option /// This is the value implementing the auto-generated equality /// semantics if any. It is not present if the type defines its own implementation /// of Object.Equals or if the type doesn't override Object.Equals implicitly. mutable tcaug_equals : (ValRef * ValRef) option /// This is the value implementing the auto-generated comparison /// semantics if any. It is not present if the type defines its own implementation /// of IStructuralEquatable or if the type doesn't implement IComparable implicitly. mutable tcaug_hash_and_equals_withc : (ValRef * ValRef * ValRef) option /// True if the type defined an Object.GetHashCode method. In this /// case we give a warning if we auto-generate a hash method since the semantics may not match up mutable tcaug_hasObjectGetHashCode : bool /// Properties, methods etc. in declaration order. The boolean flag for each indicates if the /// member is known to be an explicit interface implementation. This must be computed and /// saved prior to remapping assembly information. tcaug_adhoc_list : ResizeArray /// Properties, methods etc. as lookup table mutable tcaug_adhoc : NameMultiMap /// Interface implementations - boolean indicates compiler-generated mutable tcaug_interfaces : (TType * bool * range) list /// Super type, if any mutable tcaug_super : TType option /// Set to true at the end of the scope where proper augmentations are allowed mutable tcaug_closed : bool /// Set to true if the type is determined to be abstract mutable tcaug_abstract : bool } member tcaug.SetCompare x = tcaug.tcaug_compare <- Some x member tcaug.SetCompareWith x = tcaug.tcaug_compare_withc <- Some x member tcaug.SetEquals x = tcaug.tcaug_equals <- Some x member tcaug.SetHashAndEqualsWith x = tcaug.tcaug_hash_and_equals_withc <- Some x member tcaug.SetHasObjectGetHashCode b = tcaug.tcaug_hasObjectGetHashCode <- b static member Create() = { tcaug_compare=None tcaug_compare_withc=None tcaug_equals=None tcaug_hash_and_equals_withc=None tcaug_hasObjectGetHashCode=false tcaug_adhoc=NameMultiMap.empty tcaug_adhoc_list=new ResizeArray<_>() tcaug_super=None tcaug_interfaces=[] tcaug_closed=false tcaug_abstract=false } and [] /// The information for the contents of a type. Also used for a provided namespace. TyconRepresentation = /// Indicates the type is a class, struct, enum, delegate or interface | TFsObjModelRepr of TyconObjModelData /// Indicates the type is a record | TRecdRepr of TyconRecdFields /// Indicates the type is a discriminated union | TFiniteUnionRepr of TyconUnionData /// TILObjModelRepr(scope, nesting, definition) /// /// Indicates the type is a type from a .NET assembly without F# metadata. | TILObjModelRepr of ILScopeRef * ILTypeDef list * ILTypeDef /// Indicates the type is implemented as IL assembly code using the given closed Abstract IL type | TAsmRepr of ILType /// Indicates the type is parameterized on a measure (e.g. float<_>) but erases to some other type (e.g. float) | TMeasureableRepr of TType #if EXTENSIONTYPING /// TProvidedTypeExtensionPoint /// /// Indicates the representation information for a provided type. | TProvidedTypeExtensionPoint of TProvidedTypeInfo /// Indicates the representation information for a provided namespace. // // Note, the list could probably be a list of IProvidedNamespace rather than ITypeProvider | TProvidedNamespaceExtensionPoint of ExtensionTyping.ResolutionEnvironment * Tainted list #endif /// The 'NoRepr' value here has four meanings: /// (1) it indicates 'not yet known' during the first 2 phases of establishing type definitions /// (2) it indicates 'no representation', i.e. 'type X' in signatures /// (3) it is the setting used for exception definitions (!) /// (4) it is the setting used for modules and namespaces. /// /// It would be better to separate the "not yet known" and other cases out. /// The information for exception definitions should be folded into here. | TNoRepr #if EXTENSIONTYPING and [< RequireQualifiedAccess; NoComparison; NoEquality>] /// The information kept about a provided type TProvidedTypeInfo = { /// The parameters given to the provider that provided to this type. ResolutionEnvironment : ExtensionTyping.ResolutionEnvironment /// The underlying System.Type (wrapped as a ProvidedType to make sure we don't call random things on /// System.Type, and wrapped as Tainted to make sure we track which provider this came from, for reporting /// error messages) ProvidedType: Tainted /// The base type of the type. We use it to compute the compiled representation of the type for erased types. /// Reading is delayed, since it does an import on the underlying type LazyBaseType: LazyWithContext /// A flag read eagerly from the provided type and used to compute basic properties of the type definition. IsClass: bool /// A flag read eagerly from the provided type and used to compute basic properties of the type definition. IsSealed: bool /// A flag read eagerly from the provided type and used to compute basic properties of the type definition. IsInterface: bool /// A flag read eagerly from the provided type and used to compute basic properties of the type definition. IsStructOrEnum: bool /// A flag read eagerly from the provided type and used to compute basic properties of the type definition. IsEnum: bool /// A type read from the provided type and used to compute basic properties of the type definition. /// Reading is delayed, since it does an import on the underlying type UnderlyingTypeOfEnum: (unit -> TType) /// A flag read from the provided type and used to compute basic properties of the type definition. /// Reading is delayed, since it looks at the .BaseType IsDelegate: (unit -> bool) IsErased: bool /// Indicates the type is generated, but type-relocation is suppressed IsSuppressRelocate : bool } member info.IsGenerated = not info.IsErased member info.BaseTypeForErased (m,objTy) = if info.IsErased then info.LazyBaseType.Force (m,objTy) else assert false; failwith "expect erased type" #endif and TyconObjModelKind = /// Indicates the type is a class (also used for units-of-measure) | TTyconClass /// Indicates the type is an interface | TTyconInterface /// Indicates the type is a struct | TTyconStruct /// Indicates the type is a delegate with the given Invoke signature | TTyconDelegate of SlotSig /// Indicates the type is an enumeration | TTyconEnum member x.IsValueType = match x with | TTyconClass | TTyconInterface | TTyconDelegate _ -> false | TTyconStruct | TTyconEnum -> true and [] TyconObjModelData = { /// Indicates whether the type declaration is a class, interface, enum, delegate or struct fsobjmodel_kind: TyconObjModelKind; /// The declared abstract slots of the class, interface or struct fsobjmodel_vslots: ValRef list; /// The fields of the class, struct or enum fsobjmodel_rfields: TyconRecdFields } and [] TyconRecdFields = { /// The fields of the record, in declaration order. FieldsByIndex: RecdField[]; /// The fields of the record, indexed by name. FieldsByName : NameMap } member x.FieldByIndex n = if n >= 0 && n < x.FieldsByIndex.Length then x.FieldsByIndex.[n] else failwith "FieldByIndex" member x.FieldByName n = x.FieldsByName.TryFind(n) member x.AllFieldsAsList = x.FieldsByIndex |> Array.toList member x.TrueFieldsAsList = x.AllFieldsAsList |> List.filter (fun f -> not f.IsCompilerGenerated) member x.TrueInstanceFieldsAsList = x.AllFieldsAsList |> List.filter (fun f -> not f.IsStatic && not f.IsCompilerGenerated) and [] TyconUnionCases = { /// The cases of the discriminated union, in declaration order. CasesByIndex: UnionCase[]; /// The cases of the discriminated union, indexed by name. CasesByName : NameMap } member x.GetUnionCaseByIndex n = if n >= 0 && n < x.CasesByIndex.Length then x.CasesByIndex.[n] else invalidArg "n" "GetUnionCaseByIndex" member x.UnionCasesAsList = x.CasesByIndex |> Array.toList and [] TyconUnionData = { /// The cases contained in the discriminated union. CasesTable: TyconUnionCases; /// The ILX data structure representing the discriminated union. CompiledRepresentation: IlxUnionRef cache; } member x.UnionCasesAsList = x.CasesTable.CasesByIndex |> Array.toList and [] [] UnionCase = { /// Data carried by the case. FieldTable: TyconRecdFields; /// Return type constructed by the case. Normally exactly the type of the enclosing type, sometimes an abbreviation of it ReturnType: TType; /// Name of the case in generated IL code CompiledName: string; /// Documentation for the case XmlDoc : XmlDoc; /// XML documentation signature for the case mutable XmlDocSig : string; /// Name/range of the case Id: Ident; /// Indicates the declared visibility of the union constructor, not taking signatures into account Accessibility: Accessibility; /// Attributes, attached to the generated static method to make instances of the case // MUTABILITY: used when propagating signature attributes into the implementation. mutable Attribs: Attribs; } member uc.Range = uc.Id.idRange member uc.DisplayName = uc.Id.idText member uc.RecdFieldsArray = uc.FieldTable.FieldsByIndex member uc.RecdFields = uc.FieldTable.FieldsByIndex |> Array.toList member uc.GetFieldByName nm = uc.FieldTable.FieldByName nm member uc.IsNullary = (uc.FieldTable.FieldsByIndex.Length = 0) and /// This may represent a "field" in either a struct, class, record or union /// It is normally compiled to a property. [] RecdField = { /// Is the field declared mutable in F#? rfield_mutable: bool; /// Documentation for the field rfield_xmldoc : XmlDoc; /// XML Documentation signature for the field mutable rfield_xmldocsig : string; /// The type of the field, w.r.t. the generic parameters of the enclosing type constructor rfield_type: TType; /// Indicates a static field rfield_static: bool; /// Indicates a volatile field rfield_volatile: bool; /// Indicates a compiler generated field, not visible to Intellisense or name resolution rfield_secret: bool; /// The default initialization info, for static literals rfield_const: Const option; /// Indicates the declared visibility of the field, not taking signatures into account rfield_access: Accessibility; /// Attributes attached to generated property // MUTABILITY: used when propagating signature attributes into the implementation. mutable rfield_pattribs: Attribs; /// Attributes attached to generated field // MUTABILITY: used when propagating signature attributes into the implementation. mutable rfield_fattribs: Attribs; /// Name/declaration-location of the field rfield_id: Ident } member v.Accessibility = v.rfield_access member v.PropertyAttribs = v.rfield_pattribs member v.FieldAttribs = v.rfield_fattribs member v.Range = v.rfield_id.idRange member v.Id = v.rfield_id member v.Name = v.rfield_id.idText member v.IsCompilerGenerated = v.rfield_secret member v.IsMutable = v.rfield_mutable member v.IsStatic = v.rfield_static member v.IsVolatile = v.rfield_volatile member v.FormalType = v.rfield_type member v.XmlDoc = v.rfield_xmldoc member v.XmlDocSig with get() = v.rfield_xmldocsig and set(x) = v.rfield_xmldocsig <- x member v.LiteralValue = match v.rfield_const with | None -> None | Some Const.Zero -> None | Some k -> Some k member v.IsZeroInit = match v.rfield_const with | None -> false | Some Const.Zero -> true | _ -> false and ExceptionInfo = /// Indicates that an exception is an abbreviation for the given exception | TExnAbbrevRepr of TyconRef /// Indicates that an exception is shorthand for the given .NET exception type | TExnAsmRepr of ILTypeRef /// Indicates that an exception carries the given record of values | TExnFresh of TyconRecdFields /// Indicates that an exception is abstract, i.e. is in a signature file, and we do not know the representation | TExnNone and [] ModuleOrNamespaceType(kind: ModuleOrNamespaceKind, vals: QueueList, entities: QueueList) = /// Mutation used during compilation of FSharp.Core.dll let mutable entities = entities // Lookup tables keyed the way various clients expect them to be keyed. // We attach them here so we don't need to store lookup tables via any other technique. // // The type option ref is used because there are a few functions that treat these as first class values. // We should probably change to 'mutable'. // // We do not need to lock this mutable state this it is only ever accessed from the compiler thread. let activePatternElemRefCache : NameMap option ref = ref None let modulesByDemangledNameCache : NameMap option ref = ref None let exconsByDemangledNameCache : NameMap option ref = ref None let tyconsByDemangledNameAndArityCache: LayeredMap option ref = ref None let tyconsByAccessNamesCache : LayeredMultiMap option ref = ref None let tyconsByMangledNameCache : NameMap option ref = ref None let allEntitiesByMangledNameCache : NameMap option ref = ref None let allValsAndMembersByPartialLinkageKeyCache : MultiMap option ref = ref None let allValsByLogicalNameCache : NameMap option ref = ref None /// Namespace or module-compiled-as-type? member mtyp.ModuleOrNamespaceKind = kind /// Values, including members in F# types in this module-or-namespace-fragment. member mtyp.AllValsAndMembers = vals /// Type, mapping mangled name to Tycon, e.g. //// "Dictionary`2" --> Tycon //// "ListModule" --> Tycon with module info //// "FooException" --> Tycon with exception info member mtyp.AllEntities = entities /// Mutation used during compilation of FSharp.Core.dll member mtyp.AddModuleOrNamespaceByMutation(modul:ModuleOrNamespace) = entities <- QueueList.appendOne entities modul modulesByDemangledNameCache := None allEntitiesByMangledNameCache := None #if EXTENSIONTYPING /// Mutation used in hosting scenarios to hold the hosted types in this module or namespace member mtyp.AddProvidedTypeEntity(entity:Entity) = entities <- QueueList.appendOne entities entity tyconsByMangledNameCache := None tyconsByDemangledNameAndArityCache := None tyconsByAccessNamesCache := None allEntitiesByMangledNameCache := None #endif /// Return a new module or namespace type with an entity added. member mtyp.AddEntity(tycon:Tycon) = ModuleOrNamespaceType(kind, vals, entities.AppendOne tycon) /// Return a new module or namespace type with a value added. member mtyp.AddVal(vspec:Val) = ModuleOrNamespaceType(kind, vals.AppendOne vspec, entities) /// Get a table of the active patterns defined in this module. member mtyp.ActivePatternElemRefLookupTable = activePatternElemRefCache /// Get a list of types defined within this module, namespace or type. member mtyp.TypeDefinitions = entities |> Seq.filter (fun x -> not x.IsExceptionDecl && not x.IsModuleOrNamespace) |> Seq.toList /// Get a list of F# exception definitions defined within this module, namespace or type. member mtyp.ExceptionDefinitions = entities |> Seq.filter (fun x -> x.IsExceptionDecl) |> Seq.toList /// Get a list of module and namespace definitions defined within this module, namespace or type. member mtyp.ModuleAndNamespaceDefinitions = entities |> Seq.filter (fun x -> x.IsModuleOrNamespace) |> Seq.toList /// Get a list of type and exception definitions defined within this module, namespace or type. member mtyp.TypeAndExceptionDefinitions = entities |> Seq.filter (fun x -> not x.IsModuleOrNamespace) |> Seq.toList /// Get a table of types defined within this module, namespace or type. The /// table is indexed by both name and generic arity. This means that for generic /// types "List`1", the entry (List,1) will be present. member mtyp.TypesByDemangledNameAndArity m = cacheOptRef tyconsByDemangledNameAndArityCache (fun () -> LayeredMap.Empty.AddAndMarkAsCollapsible( mtyp.TypeAndExceptionDefinitions |> List.map (fun (tc:Tycon) -> KeyTyconByDemangledNameAndArity tc.LogicalName (tc.Typars m) tc) |> List.toArray)) /// Get a table of types defined within this module, namespace or type. The /// table is indexed by both name and, for generic types, also by mangled name. member mtyp.TypesByAccessNames = cacheOptRef tyconsByAccessNamesCache (fun () -> LayeredMultiMap.Empty.AddAndMarkAsCollapsible (mtyp.TypeAndExceptionDefinitions |> List.toArray |> Array.collect (fun (tc:Tycon) -> KeyTyconByAccessNames tc.LogicalName tc))) // REVIEW: we can remove this lookup and use AllEntitiedByMangledName instead? member mtyp.TypesByMangledName = let addTyconByMangledName (x:Tycon) tab = NameMap.add x.LogicalName x tab cacheOptRef tyconsByMangledNameCache (fun () -> List.foldBack addTyconByMangledName mtyp.TypeAndExceptionDefinitions Map.empty) /// Get a table of entities indexed by both logical and compiled names member mtyp.AllEntitiesByCompiledAndLogicalMangledNames : NameMap = let addEntityByMangledName (x:Entity) tab = let name1 = x.LogicalName let name2 = x.CompiledName let tab = NameMap.add name1 x tab if name1 = name2 then tab else NameMap.add name2 x tab cacheOptRef allEntitiesByMangledNameCache (fun () -> QueueList.foldBack addEntityByMangledName entities Map.empty) /// Get a table of entities indexed by both logical name member mtyp.AllEntitiesByLogicalMangledName : NameMap = let addEntityByMangledName (x:Entity) tab = NameMap.add x.LogicalName x tab QueueList.foldBack addEntityByMangledName entities Map.empty /// Get a table of values and members indexed by partial linkage key, which includes name, the mangled name of the parent type (if any), /// and the method argument count (if any). member mtyp.AllValsAndMembersByPartialLinkageKey = let addValByMangledName (x:Val) tab = if x.IsCompiledAsTopLevel then MultiMap.add x.LinkagePartialKey x tab else tab cacheOptRef allValsAndMembersByPartialLinkageKeyCache (fun () -> QueueList.foldBack addValByMangledName vals MultiMap.empty) /// Try to find the member with the given linkage key in the given module. member mtyp.TryLinkVal(ccu:CcuThunk,key:ValLinkageFullKey) = mtyp.AllValsAndMembersByPartialLinkageKey |> MultiMap.find key.PartialKey |> List.tryFind (fun v -> match key.TypeForLinkage with | None -> true | Some keyTy -> ccu.MemberSignatureEquality(keyTy,v.Type)) /// Get a table of values indexed by logical name member mtyp.AllValsByLogicalName = let addValByName (x:Val) tab = // Note: names may occur twice prior to raising errors about this in PostTypecheckSemanticChecks // Earlier ones take precedence sice we report errors about the later ones if not x.IsMember && not x.IsCompilerGenerated then NameMap.add x.LogicalName x tab else tab cacheOptRef allValsByLogicalNameCache (fun () -> QueueList.foldBack addValByName vals Map.empty) /// Compute a table of values and members indexed by logical name. member mtyp.AllValsAndMembersByLogicalNameUncached = let addValByName (x:Val) tab = if not x.IsCompilerGenerated then MultiMap.add x.LogicalName x tab else tab QueueList.foldBack addValByName vals MultiMap.empty /// Get a table of F# exception definitions indexed by demangled name, so 'FailureException' is indexed by 'Failure' member mtyp.ExceptionDefinitionsByDemangledName = let add (tycon:Tycon) acc = NameMap.add tycon.LogicalName tycon acc cacheOptRef exconsByDemangledNameCache (fun () -> List.foldBack add mtyp.ExceptionDefinitions Map.empty) /// Get a table of nested module and namespace fragments indexed by demangled name (so 'ListModule' becomes 'List') member mtyp.ModulesAndNamespacesByDemangledName = let add (entity:Entity) acc = if entity.IsModuleOrNamespace then NameMap.add entity.DemangledModuleOrNamespaceName entity acc else acc cacheOptRef modulesByDemangledNameCache (fun () -> QueueList.foldBack add entities Map.empty) and ModuleOrNamespace = Entity and Tycon = Entity /// A set of static methods for constructing types. and Construct = static member NewModuleOrNamespaceType mkind tycons vals = ModuleOrNamespaceType(mkind, QueueList.ofList vals, QueueList.ofList tycons) static member NewEmptyModuleOrNamespaceType mkind = Construct.NewModuleOrNamespaceType mkind [] [] #if EXTENSIONTYPING static member NewProvidedTyconRepr(resolutionEnvironment,st:Tainted,importProvidedType,isSuppressRelocate,m) = let isErased = st.PUntaint((fun st -> st.IsErased),m) let lazyBaseTy = LazyWithContext.Create ((fun (m,objTy) -> let baseSystemTy = st.PApplyOption((fun st -> match st.BaseType with null -> None | ty -> Some ty), m) match baseSystemTy with | None -> objTy | Some t -> importProvidedType t), ErrorLogger.findOriginalException) TProvidedTypeExtensionPoint { ResolutionEnvironment=resolutionEnvironment ProvidedType=st LazyBaseType=lazyBaseTy UnderlyingTypeOfEnum = (fun () -> importProvidedType (st.PApply((fun st -> st.GetEnumUnderlyingType()),m))) IsDelegate = (fun () -> st.PUntaint((fun st -> let baseType = st.BaseType match baseType with | null -> false | x when x.IsGenericType -> false | x when x.DeclaringType <> null -> false | x -> x.FullName = "System.Delegate" || x.FullName = "System.MulticastDelegate"), m)) IsEnum = st.PUntaint((fun st -> st.IsEnum), m) IsStructOrEnum = st.PUntaint((fun st -> st.IsValueType || st.IsEnum), m) IsInterface = st.PUntaint((fun st -> st.IsInterface), m) IsSealed = st.PUntaint((fun st -> st.IsSealed), m) IsClass = st.PUntaint((fun st -> st.IsClass), m) IsErased = isErased IsSuppressRelocate = isSuppressRelocate } static member NewProvidedTycon(resolutionEnvironment, st:Tainted, importProvidedType, isSuppressRelocate, m, ?access, ?cpath) = let stamp = newStamp() let name = st.PUntaint((fun st -> st.Name), m) let id = ident (name,m) let kind = let isMeasure = st.PApplyWithProvider((fun (st,provider) -> let findAttrib (ty:System.Type) (a:CustomAttributeData) = (a.Constructor.DeclaringType.FullName = ty.FullName) #if FX_NO_CUSTOMATTRIBUTEDATA provider.GetMemberCustomAttributesData(st.RawSystemType) #else ignore provider st.RawSystemType.GetCustomAttributesData() #endif |> Seq.exists (findAttrib typeof)), m) .PUntaintNoFailure(fun x -> x) if isMeasure then TyparKind.Measure else TyparKind.Type let access = match access with | Some a -> a | None -> TAccess [] let cpath = match cpath with | None -> let ilScopeRef = st.TypeProviderAssemblyRef let enclosingName = ExtensionTyping.GetFSharpPathToProvidedType(st,m) CompPath(ilScopeRef,enclosingName |> List.map(fun id->id,ModuleOrNamespaceKind.Namespace)) | Some p -> p let pubpath = publicPathOfCompPath id cpath let repr = Construct.NewProvidedTyconRepr(resolutionEnvironment, st, importProvidedType, isSuppressRelocate, m) Tycon.New "tycon" { entity_stamp=stamp; entity_logical_name=name entity_compiled_name=None; entity_kind=kind; entity_range=m; entity_flags=EntityFlags(usesPrefixDisplay=false, isModuleOrNamespace=false,preEstablishedHasDefaultCtor=false, hasSelfReferentialCtor=false); entity_attribs=[]; // fetched on demand via est.fs API entity_typars= LazyWithContext.NotLazy []; entity_tycon_abbrev = None; entity_tycon_repr = repr; entity_tycon_repr_accessibility = TAccess([]); entity_exn_info=TExnNone; entity_tycon_tcaug=TyconAugmentation.Create(); entity_modul_contents = lazy new ModuleOrNamespaceType(Namespace, QueueList.ofList [], QueueList.ofList []); // Generated types get internal accessibility entity_accessiblity= access; entity_xmldoc = XmlDoc [||]; // fetched on demand via est.fs API entity_xmldocsig=""; entity_pubpath = Some pubpath; entity_cpath = Some cpath; entity_il_repr_cache = newCache(); } #endif static member NewModuleOrNamespace cpath access (id:Ident) xml attribs mtype = let stamp = newStamp() // Put the module suffix on if needed Tycon.New "mspec" { entity_logical_name=id.idText entity_compiled_name=None entity_range = id.idRange entity_stamp=stamp entity_kind=TyparKind.Type entity_modul_contents = mtype entity_flags=EntityFlags(usesPrefixDisplay=false, isModuleOrNamespace=true, preEstablishedHasDefaultCtor=false, hasSelfReferentialCtor=false) entity_typars=LazyWithContext.NotLazy [] entity_tycon_abbrev = None entity_tycon_repr = TNoRepr entity_tycon_repr_accessibility = access entity_exn_info=TExnNone entity_tycon_tcaug=TyconAugmentation.Create() entity_pubpath=cpath |> Option.map (publicPathOfCompPath id) entity_cpath=cpath entity_accessiblity=access entity_attribs=attribs entity_xmldoc=xml entity_xmldocsig="" entity_il_repr_cache = newCache() } and Accessibility = /// Indicates the construct can only be accessed from any code in the given type constructor, module or assembly. [] indicates global scope. | TAccess of CompilationPath list and [] /// Backing data for type parameters and type inference variables // // MEMORY PERF: TyparData objects are common. They could be reduced to a record of 4-5 words in // the common case of inference type variables, e.g. // // TyparDataCommon = // typar_details: TyparDataUncommon // null indicates standard values for uncommon data // typar_stamp: Stamp // typar_solution: TType option // typar_constraints: TyparConstraint list // where the "common" settings are // kind=TyparKind.Type, rigid=TyparRigidity.Flexible, id=compgen_id, staticReq=NoStaticReq, isCompGen=true, isFromError=false, // dynamicReq=TyparDynamicReq.No, attribs=[], eqDep=false, compDep=false TyparData = { /// MUTABILITY: we set the names of generalized inference type parameters to make the look nice for IL code generation mutable typar_id: Ident /// MUTABILITY: we set the names of generalized inference type parameters to make the look nice for IL code generation mutable typar_il_name: string option mutable typar_flags: TyparFlags /// The unique stamp of the typar blob. typar_stamp: Stamp /// The documentation for the type parameter. Empty for type inference variables. typar_xmldoc : XmlDoc /// The declared attributes of the type parameter. Empty for type inference variables. mutable typar_attribs: Attribs /// An inferred equivalence for a type inference variable. mutable typar_solution: TType option /// The inferred constraints for the type inference variable mutable typar_constraints: TyparConstraint list } and [] [] /// A declared generic type/measure parameter, or a type/measure inference variable. Typar = { mutable Data: TyparData /// A cached TAST type used when this type variable is used as type. mutable AsType: TType } member x.Name = x.Data.typar_id.idText member x.Range = x.Data.typar_id.idRange member x.Id = x.Data.typar_id /// The unique stamp of the typar definition member x.Stamp = x.Data.typar_stamp /// The inferred equivalence for the type inference variable, if any. member x.Solution = x.Data.typar_solution /// The inferred constraints for the type inference variable, if any member x.Constraints = x.Data.typar_constraints /// Indicates if the type variable is compiler generated, i.e. is an implicit type inference variable member x.IsCompilerGenerated = x.Data.typar_flags.IsCompilerGenerated /// Indicates if the type variable can be sovled or given new constraints. The status of a type variable /// generally always evolves towards being either rigid or solved. member x.Rigidity = x.Data.typar_flags.Rigidity /// Indicates if a type parameter is needed at runtime and may not be eliminated member x.DynamicReq = x.Data.typar_flags.DynamicReq /// Indicates that whether or not a generic type definition satisfies the equality constraint is dependent on whether this type variable satisfies the equality constraint. member x.EqualityConditionalOn = x.Data.typar_flags.EqualityConditionalOn /// Indicates that whether or not a generic type definition satisfies the comparison constraint is dependent on whether this type variable satisfies the comparison constraint. member x.ComparisonConditionalOn = x.Data.typar_flags.ComparisonConditionalOn /// Indicates if the type variable has a static "head type" requirement, i.e. ^a variables used in FSharp.Core and member constraints. member x.StaticReq = x.Data.typar_flags.StaticReq /// Indicates if the type inference variable was generated after an error when type checking expressions or patterns member x.IsFromError = x.Data.typar_flags.IsFromError /// Indicates whether a type variable can be instantiated by types or units-of-measure. member x.Kind = x.Data.typar_flags.Kind /// Indicates whether a type variable is erased in compiled .NET IL code, i.e. whether it is a unit-of-measure variable member x.IsErased = match x.Kind with TyparKind.Type -> false | _ -> true /// The declared attributes of the type parameter. Empty for type inference variables and parameters from .NET member x.Attribs = x.Data.typar_attribs /// Indicates the display name of a type variable member x.DisplayName = if x.Name = "?" then "?"+string x.Stamp else x.Name /// Adjusts the constraints associated with a type variable member x.FixupConstraints cs = x.Data.typar_constraints <- cs /// Creates a type variable that contains empty data, and is not yet linked. Only used during unpickling of F# metadata. static member NewUnlinked() : Typar = let res = { Data = nullableSlotEmpty(); AsType=Unchecked.defaultof<_> } res.AsType <- TType_var res res /// Creates a type variable based on the given data. Only used during unpickling of F# metadata. static member New data : Typar = let res = { Data = data; AsType=Unchecked.defaultof<_> } res.AsType <- TType_var res res /// Links a previously unlinked type variable to the given data. Only used during unpickling of F# metadata. member x.Link tg = x.Data <- nullableSlotFull(tg) /// Indicates if a type variable has been linked. Only used during unpickling of F# metadata. member x.IsLinked = match box x.Data with null -> false | _ -> true /// Indicates if a type variable has been solved. member x.IsSolved = match x.Solution with | None -> false | _ -> true /// Sets the identifier assocaited with a type variable member x.SetIdent id = x.Data.typar_id <- id /// Sets the rigidity of a type variable member x.SetRigidity b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, b, flags.IsFromError, flags.IsCompilerGenerated, flags.StaticReq, flags.DynamicReq, flags.EqualityConditionalOn, flags.ComparisonConditionalOn) /// Sets whether a type variable is compiler generated member x.SetCompilerGenerated b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, flags.Rigidity, flags.IsFromError, b, flags.StaticReq, flags.DynamicReq, flags.EqualityConditionalOn, flags.ComparisonConditionalOn) /// Sets whether a type variable has a static requirement member x.SetStaticReq b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, flags.Rigidity, flags.IsFromError, flags.IsCompilerGenerated, b, flags.DynamicReq, flags.EqualityConditionalOn, flags.ComparisonConditionalOn) /// Sets whether a type variable is required at runtime member x.SetDynamicReq b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, flags.Rigidity, flags.IsFromError, flags.IsCompilerGenerated, flags.StaticReq, b , flags.EqualityConditionalOn, flags.ComparisonConditionalOn) /// Sets whether the equality constraint of a type definition depends on this type variable member x.SetEqualityDependsOn b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, flags.Rigidity, flags.IsFromError, flags.IsCompilerGenerated, flags.StaticReq, flags.DynamicReq, b , flags.ComparisonConditionalOn) /// Sets whether the comparison constraint of a type definition depends on this type variable member x.SetComparisonDependsOn b = let x = x.Data in let flags = x.typar_flags in x.typar_flags <- TyparFlags(flags.Kind, flags.Rigidity, flags.IsFromError, flags.IsCompilerGenerated, flags.StaticReq, flags.DynamicReq, flags.EqualityConditionalOn, b) override x.ToString() = x.Name and [] TyparConstraint = /// Indicates a constraint that a type is a subtype of the given type | CoercesTo of TType * range /// Indicates a default value for an inference type variable should it be netiher generalized nor solved | DefaultsTo of int * TType * range /// Indicates a constraint that a type has a 'null' value | SupportsNull of range /// Indicates a constraint that a type has a member with the given signature | MayResolveMember of TraitConstraintInfo * range /// Indicates a constraint that a type is a non-Nullable value type /// These are part of .NET's model of generic constraints, and in order to /// generate verifiable code we must attach them to F# generalzied type variables as well. | IsNonNullableStruct of range /// Indicates a constraint that a type is a reference type | IsReferenceType of range /// Indicates a constraint that a type is a simple choice between one of the given ground types. Only arises from 'printf' format strings. See format.fs | SimpleChoice of TTypes * range /// Indicates a constraint that a type has a parameterless constructor | RequiresDefaultConstructor of range /// Indicates a constraint that a type is an enum with the given underlying | IsEnum of TType * range /// Indicates a constraint that a type implements IComparable, with special rules for some known structural container types | SupportsComparison of range /// Indicates a constraint that a type does not have the Equality(false) attribute, or is not a structural type with this attribute, with special rules for some known structural container types | SupportsEquality of range /// Indicates a constraint that a type is a delegate from the given tuple of args to the given return type | IsDelegate of TType * TType * range /// Indicates a constraint that a type is .NET unmanaged type | IsUnmanaged of range /// The specification of a member constraint that must be solved and [] TraitConstraintInfo = /// TTrait(tys,nm,memFlags,argtys,rty,colution) /// /// Indicates the signature of a member constraint. Contains a mutable solution cell /// to store the inferred solution of the constraint. | TTrait of TTypes * string * MemberFlags * TTypes * TType option * TraitConstraintSln option ref /// Get the member name associated with the member constraint. member x.MemberName = (let (TTrait(_,nm,_,_,_,_)) = x in nm) /// Get the return type recorded in the member constraint. member x.ReturnType = (let (TTrait(_,_,_,_,ty,_)) = x in ty) /// Get or set the solution of the member constraint during inference member x.Solution with get() = (let (TTrait(_,_,_,_,_,sln)) = x in sln.Value) and set v = (let (TTrait(_,_,_,_,_,sln)) = x in sln.Value <- v) and [] /// Indicates the solution of a member constraint during inference. TraitConstraintSln = /// FSMethSln(typ, vref, minst) /// /// Indicates a trait is solved by an F# method. /// typ -- the type and its instantiation /// vref -- the method that solves the trait constraint /// minst -- the generic method instantiation | FSMethSln of TType * ValRef * TypeInst /// FSRecdFieldSln(tinst, rfref, isSetProp) /// /// Indicates a trait is solved by an F# record field. /// tinst -- the instantiation of the declaring type /// rfref -- the reference to the record field /// isSetProp -- indicates if this is a set of a record field | FSRecdFieldSln of TypeInst * RecdFieldRef * bool /// ILMethSln(typ, extOpt, ilMethodRef, minst) /// /// Indicates a trait is solved by a .NET method. /// typ -- the type and its instantiation /// extOpt -- information about an extension member, if any /// ilMethodRef -- the method that solves the trait constraint /// minst -- the generic method instantiation | ILMethSln of TType * ILTypeRef option * ILMethodRef * TypeInst /// ClosedExprSln(expr) /// /// Indicates a trait is solved by an erased provided expression | ClosedExprSln of Expr /// Indicates a trait is solved by a 'fake' instance of an operator, like '+' on integers | BuiltInSln /// The partial information used to index the methods of all those in a ModuleOrNamespace. and [] ValLinkagePartialKey = { /// The name of the type with which the member is associated. None for non-member values. MemberParentMangledName : string option /// Indicates if the member is an override. MemberIsOverride: bool /// Indicates the logical name of the member. LogicalName: string /// Indicates the total argument count of the member. TotalArgCount: int } /// The full information used to identify a specific overloaded method /// amongst all those in a ModuleOrNamespace. and ValLinkageFullKey(partialKey: ValLinkagePartialKey, typeForLinkage:TType option) = /// The partial information used to index the value in a ModuleOrNamespace. member x.PartialKey = partialKey /// The full type of the value for the purposes of linking. May be None for non-members, since they can't be overloaded. member x.TypeForLinkage = typeForLinkage and [] Val = { mutable Data: ValData } /// The place where the value was defined. member x.Range = x.Data.val_range /// A unique stamp within the context of this invocation of the compiler process member x.Stamp = x.Data.val_stamp /// The type of the value. /// May be a TType_forall for a generic value. /// May be a type variable or type containing type variables during type inference. // // Note: this data is mutated during inference by adjustAllUsesOfRecValue when we replace the inferred type with a schema. member x.Type = x.Data.val_type /// How visible is this value, function or member? member x.Accessibility = x.Data.val_access /// Range of the definition (implementation) of the value, used by Visual Studio /// Updated by mutation when the implementation is matched against the signature. member x.DefinitionRange = x.Data.val_defn_range /// The value of a value or member marked with [] member x.LiteralValue = x.Data.val_const /// Records the "extra information" for a value compiled as a method. /// /// This indicates the number of arguments in each position for a curried /// functions, and relates to the F# spec for arity analysis. /// For module-defined values, the currying is based /// on the number of lambdas, and in each position the elements are /// based on attempting to deconstruct the type of the argument as a /// tuple-type. /// /// The field is mutable because arities for recursive /// values are only inferred after the r.h.s. is analyzed, but the /// value itself is created before the r.h.s. is analyzed. /// /// TLR also sets this for inner bindings that it wants to /// represent as "top level" bindings. member x.ValReprInfo : ValReprInfo option = x.Data.val_repr_info member x.Id = ident(x.LogicalName,x.Range) /// Is this represented as a "top level" static binding (i.e. a static field, static member, /// instance member), rather than an "inner" binding that may result in a closure. /// /// This is implied by IsMemberOrModuleBinding, however not vice versa, for two reasons. /// Some optimizations mutate this value when they decide to change the representation of a /// binding to be IsCompiledAsTopLevel. Second, even immediately after type checking we expect /// some non-module, non-member bindings to be marked IsCompiledAsTopLevel, e.g. 'y' in /// 'let x = let y = 1 in y + y' (NOTE: check this, don't take it as gospel) member x.IsCompiledAsTopLevel = x.ValReprInfo.IsSome /// The partial information used to index the methods of all those in a ModuleOrNamespace. member x.LinkagePartialKey : ValLinkagePartialKey = assert x.IsCompiledAsTopLevel { LogicalName = x.LogicalName MemberParentMangledName = (if x.IsMember then Some x.MemberApparentParent.LogicalName else None) MemberIsOverride = x.IsOverrideOrExplicitImpl TotalArgCount = if x.IsMember then x.ValReprInfo.Value.TotalArgCount else 0 } /// The full information used to identify a specific overloaded method amongst all those in a ModuleOrNamespace. member x.LinkageFullKey : ValLinkageFullKey = assert x.IsCompiledAsTopLevel ValLinkageFullKey(x.LinkagePartialKey, (if x.IsMember then Some x.Type else None)) /// Is this a member definition or module definition? member x.IsMemberOrModuleBinding = x.Data.val_flags.IsMemberOrModuleBinding /// Indicates if this is an F#-defined extension member member x.IsExtensionMember = x.Data.val_flags.IsExtensionMember /// The quotation expression associated with a value given the [] tag member x.ReflectedDefinition = x.Data.val_defn /// Is this a member, if so some more data about the member. /// /// Note, the value may still be (a) an extension member or (b) and abtract slot without /// a true body. These cases are often causes of bugs in the compiler. member x.MemberInfo = x.Data.val_member_info /// Indicates if this is a member, and if so, gives some more data about the member. /// /// Note, the value may still be (a) an extension member or (b) and abtract slot without /// a true body. These cases are often causes of bugs in the compiler. member x.IsMember = x.MemberInfo.IsSome /// Indicates if this is a member, excluding extension members member x.IsIntrinsicMember = x.IsMember && not x.IsExtensionMember /// Indicates if this is an F#-defined value in a module, or an extension member, but excluding compiler generated bindings from optimizations member x.IsModuleBinding = x.IsMemberOrModuleBinding && not x.IsMember /// Indicates if this is something compiled into a module, i.e. a user-defined value, an extension member or a compiler-generated value member x.IsCompiledIntoModule = x.IsExtensionMember || x.IsModuleBinding /// Indicates if this is an F#-defined instance member. /// /// Note, the value may still be (a) an extension member or (b) and abtract slot without /// a true body. These cases are often causes of bugs in the compiler. member x.IsInstanceMember = x.IsMember && x.MemberInfo.Value.MemberFlags.IsInstance /// Indicates if this is an F#-defined 'new' constructor member member x.IsConstructor = match x.MemberInfo with | Some(memberInfo) when not x.IsExtensionMember && (memberInfo.MemberFlags.MemberKind = MemberKind.Constructor) -> true | _ -> false /// Indicates if this is a compiler-generated class constructor member member x.IsClassConstructor = match x.MemberInfo with | Some(memberInfo) when not x.IsExtensionMember && (memberInfo.MemberFlags.MemberKind = MemberKind.ClassConstructor) -> true | _ -> false /// Indicates if this value was a member declared 'override' or an implementation of an interface slot member x.IsOverrideOrExplicitImpl = match x.MemberInfo with | Some(memberInfo) when memberInfo.MemberFlags.IsOverrideOrExplicitImpl -> true | _ -> false /// Indicates if this is declared 'mutable' member x.IsMutable = (match x.Data.val_flags.MutabilityInfo with Immutable -> false | Mutable -> true) /// Indicates if this is inferred to be a method or function that definitely makes no critical tailcalls? member x.MakesNoCriticalTailcalls = x.Data.val_flags.MakesNoCriticalTailcalls /// Indicates if this is ever referenced? member x.HasBeenReferenced = x.Data.val_flags.HasBeenReferenced /// Indicates if the backing field for a static value is suppressed. member x.IsCompiledAsStaticPropertyWithoutField = x.Data.val_flags.IsCompiledAsStaticPropertyWithoutField /// Indicates if this is allows the use of an explicit type instantiation (i.e. does it itself have explciti type arguments, /// or does it have a signature?) member x.PermitsExplicitTypeInstantiation = x.Data.val_flags.PermitsExplicitTypeInstantiation /// Indicates if this is a member generated from the de-sugaring of 'let' function bindings in the implicit class syntax? member x.IsIncrClassGeneratedMember = x.IsCompilerGenerated && x.Data.val_flags.IsIncrClassSpecialMember /// Indicates if this is a constructor member generated from the de-sugaring of implicit constructor for a class type? member x.IsIncrClassConstructor = x.IsConstructor && x.Data.val_flags.IsIncrClassSpecialMember /// Get the information about the value used during type inference member x.RecursiveValInfo = x.Data.val_flags.RecursiveValInfo /// Indicates if this is a 'base' or 'this' value? member x.BaseOrThisInfo = x.Data.val_flags.BaseOrThisInfo // Indicates if this value was declared to be a type function, e.g. "let f<'a> = typeof<'a>" member x.IsTypeFunction = x.Data.val_flags.IsTypeFunction /// Get the inline declaration on the value member x.InlineInfo = x.Data.val_flags.InlineInfo /// Indicates whether the inline declaration for the value indicate that the value must be inlined? member x.MustInline = mustinline(x.InlineInfo) /// Indicates whether this value was generated by the compiler. /// /// Note: this is true for the overrides generated by hash/compare augmentations member x.IsCompilerGenerated = x.Data.val_flags.IsCompilerGenerated /// Get the declared attributes for the value member x.Attribs = x.Data.val_attribs /// Get the declared documentation for the value member x.XmlDoc = x.Data.val_xmldoc ///Get the signature for the value's XML documentation member x.XmlDocSig with get() = x.Data.val_xmldocsig and set(v) = x.Data.val_xmldocsig <- v /// The parent type or module, if any (None for expression bindings and parameters) member x.ActualParent = x.Data.val_actual_parent /// Get the actual parent entity for the value (a module or a type), i.e. the entity under which the /// value will appear in compiled code. For extension members this is the module where the extension member /// is declared. member x.TopValActualParent = match x.ActualParent with | Parent tcref -> tcref | ParentNone -> error(InternalError("TopValActualParent: does not have a parent",x.Range)) /// Get the apparent parent entity for a member member x.MemberApparentParent : TyconRef = match x.MemberInfo with | Some membInfo -> membInfo.ApparentParent | None -> error(InternalError("MemberApparentParent",x.Range)) /// Get the number of 'this'/'self' object arguments for the member. Instance extension members return '1'. member v.NumObjArgs = match v.MemberInfo with | Some membInfo -> if membInfo.MemberFlags.IsInstance then 1 else 0 | None -> 0 /// Get the apparent parent entity for the value, i.e. the entity under with which the /// value is associated. For extension members this is the nominal type the member extends. /// For other values it is just the actual parent. member x.ApparentParent = match x.MemberInfo with | Some membInfo -> Parent(membInfo.ApparentParent) | None -> x.ActualParent /// Get the public path to the value, if any? Should be set if and only if /// IsMemberOrModuleBinding is set. // // We use it here: // - in opt.fs : when compiling fslib, we bind an entry for the value in a global table (see bind_escaping_local_vspec) // - in ilxgen.fs: when compiling fslib, we bind an entry for the value in a global table (see bind_escaping_local_vspec) // - in opt.fs : (fullDisplayTextOfValRef) for error reporting of non-inlinable values // - in service.fs (boutput_item_description): to display the full text of a value's binding location // - in check.fs: as a boolean to detect public values for saving quotations // - in ilxgen.fs: as a boolean to detect public values for saving quotations // - in MakeExportRemapping, to build non-local references for values member x.PublicPath = match x.ActualParent with | Parent eref -> match eref.PublicPath with | None -> None | Some p -> Some(ValPubPath(p,x.LinkageFullKey)) | ParentNone -> None /// Indicates if this member is an F#-defined dispatch slot. member x.IsDispatchSlot = match x.MemberInfo with | Some(membInfo) -> membInfo.MemberFlags.IsDispatchSlot | _ -> false /// Get the type of the value including any generic type parameters member x.TypeScheme = match x.Type with | TType_forall(tps,tau) -> tps,tau | ty -> [],ty /// Get the type of the value after removing any generic type parameters member x.TauType = match x.Type with | TType_forall(_,tau) -> tau | ty -> ty /// Get the generic type parameters for the value member x.Typars = match x.Type with | TType_forall(tps,_) -> tps | _ -> [] /// The name of the method. /// - If this is a property then this is 'get_Foo' or 'set_Foo' /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot /// - If this is an extension member then this will be the simple name member x.LogicalName = match x.MemberInfo with | None -> x.Data.val_logical_name | Some membInfo -> match membInfo.ImplementedSlotSigs with | slotsig :: _ -> slotsig.Name | _ -> x.Data.val_logical_name /// The name of the method in compiled code (with some exceptions where ilxgen.fs decides not to use a method impl) /// - If this is a property then this is 'get_Foo' or 'set_Foo' /// - If this is an implementation of an abstract slot then this may be a mangled name /// - If this is an extension member then this will be a mangled name /// - If this is an operator then this is 'op_Addition' member x.CompiledName = let givenName = match x.Data.val_compiled_name with | Some n -> n | None -> x.LogicalName // These cases must get stable unique names for their static field & static property. This name // must be stable across quotation generation and IL code generation (quotations can refer to the // properties implicit in these) // // Variable 'x' here, which is compiled as a top level static: // do let x = expr in ... // IsMemberOrModuleBinding = false, IsCompiledAsTopLevel = true, IsMember = false, CompilerGenerated=false // // The implicit 'patternInput' variable here: // let [x] = expr in ... // IsMemberOrModuleBinding = true, IsCompiledAsTopLevel = true, IsMember = false, CompilerGenerated=true // // The implicit 'copyOfStruct' variables here: // let dt = System.DateTime.Now - System.DateTime.Now // IsMemberOrModuleBinding = false, IsCompiledAsTopLevel = true, IsMember = false, CompilerGenerated=true // // However we don't need this for CompilerGenerated members such as the imlpementations of IComparable if x.IsCompiledAsTopLevel && not x.IsMember && (x.IsCompilerGenerated || not x.IsMemberOrModuleBinding) then globalStableNameGenerator.GetUniqueCompilerGeneratedName(givenName,x.Range,x.Stamp) else givenName /// - If this is a property then this is 'Foo' /// - If this is an implementation of an abstract slot then this is the name of the property implemented by the abstract slot member x.PropertyName = let logicalName = x.LogicalName ChopPropertyName logicalName /// The name of the method. /// - If this is a property then this is 'Foo' /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot /// - If this is an operator then this is 'op_Addition' member x.CoreDisplayName = match x.MemberInfo with | Some membInfo -> match membInfo.MemberFlags.MemberKind with | MemberKind.ClassConstructor | MemberKind.Constructor | MemberKind.Member -> x.LogicalName | MemberKind.PropertyGetSet | MemberKind.PropertySet | MemberKind.PropertyGet -> x.PropertyName | None -> x.LogicalName /// - If this is a property then this is 'Foo' /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot /// - If this is an operator then this is '(+)' member x.DisplayName = DemangleOperatorName x.CoreDisplayName member x.SetValRec b = x.Data.val_flags <- x.Data.val_flags.SetRecursiveValInfo b member x.SetIsMemberOrModuleBinding() = x.Data.val_flags <- x.Data.val_flags.SetIsMemberOrModuleBinding member x.SetMakesNoCriticalTailcalls() = x.Data.val_flags <- x.Data.val_flags.SetMakesNoCriticalTailcalls member x.SetHasBeenReferenced() = x.Data.val_flags <- x.Data.val_flags.SetHasBeenReferenced member x.SetIsCompiledAsStaticPropertyWithoutField() = x.Data.val_flags <- x.Data.val_flags.SetIsCompiledAsStaticPropertyWithoutField member x.SetValReprInfo info = x.Data.val_repr_info <- info member x.SetType ty = x.Data.val_type <- ty member x.SetDefnRange m = x.Data.val_defn_range <- m /// Create a new value with empty, unlinked data. Only used during unpickling of F# metadata. static member NewUnlinked() : Val = { Data = nullableSlotEmpty() } /// Create a new value with the given backing data. Only used during unpickling of F# metadata. static member New data : Val = { Data = data } /// Link a value based on empty, unlinked data to the given data. Only used during unpickling of F# metadata. member x.Link tg = x.Data <- nullableSlotFull(tg) /// Indicates if a value is linked to backing data yet. Only used during unpickling of F# metadata. member x.IsLinked = match box x.Data with null -> false | _ -> true override x.ToString() = x.LogicalName and [] [] ValData = // ValData is 19 words!! CONSIDER THIS TINY FORMAT, for all local, immutable, attribute-free values // val_logical_name: string // val_range: range // mutable val_type: TType // val_stamp: Stamp { val_logical_name: string val_compiled_name: string option val_range: range mutable val_defn_range: range mutable val_type: TType val_stamp: Stamp /// See vflags section further below for encoding/decodings here mutable val_flags: ValFlags mutable val_const: Const option /// What is the original, unoptimized, closed-term definition, if any? /// Used to implement [] mutable val_defn: Expr option /// How visible is this? val_access: Accessibility /// Is the value actually an instance method/property/event that augments /// a type, and if so what name does it take in the IL? val_member_info: ValMemberInfo option /// Custom attributes attached to the value. These contain references to other values (i.e. constructors in types). Mutable to fixup /// these value references after copying a colelction of values. mutable val_attribs: Attribs // MUTABILITY CLEANUP: mutability of this field is used by // -- adjustAllUsesOfRecValue // -- TLR optimizations // -- LinearizeTopMatch // // For example, we use mutability to replace the empty arity initially assumed with an arity garnered from the // type-checked expression. mutable val_repr_info: ValReprInfo option // MUTABILITY CLEANUP: mutability of this field is used by // -- LinearizeTopMatch // // The fresh temporary should just be created with the right parent mutable val_actual_parent: ParentRef /// XML documentation attached to a value. val_xmldoc : XmlDoc /// XML documentation signature for the value mutable val_xmldocsig : string } and [] ValMemberInfo = { /// The parent type. For an extension member this is the type being extended ApparentParent: TyconRef /// Updated with the full implemented slotsig after interface implementation relation is checked mutable ImplementedSlotSigs: SlotSig list /// Gets updated with 'true' if an abstract slot is implemented in the file being typechecked. Internal only. mutable IsImplemented: bool MemberFlags: MemberFlags } and [] NonLocalValOrMemberRef = { /// A reference to the entity containing the value or member. THis will always be a non-local reference EnclosingEntity : EntityRef /// The name of the value, or the full signature of the member ItemKey: ValLinkageFullKey } member x.Ccu = x.EnclosingEntity.nlr.Ccu member x.AssemblyName = x.EnclosingEntity.nlr.AssemblyName member x.Display = x.ToString() override x.ToString() = x.EnclosingEntity.nlr.ToString() + "::" + x.ItemKey.PartialKey.LogicalName and ValPublicPath = | ValPubPath of PublicPath * ValLinkageFullKey /// Index into the namespace/module structure of a particular CCU and NonLocalEntityRef = | NonLocalEntityRef of CcuThunk * string[] /// Try to find the entity correspondng to the given path in the given CCU static member TryDerefEntityPath(ccu: CcuThunk, path:string[], i:int, entity:Entity) = if i >= path.Length then Some entity else let next = entity.ModuleOrNamespaceType.AllEntitiesByCompiledAndLogicalMangledNames.TryFind(path.[i]) match next with | Some res -> NonLocalEntityRef.TryDerefEntityPath(ccu, path, (i+1), res) #if EXTENSIONTYPING | None -> NonLocalEntityRef.TryDerefEntityPathViaProvidedType(ccu, path, i, entity) #else | None -> None #endif #if EXTENSIONTYPING /// Try to find the entity correspondng to the given path, using type-providers to link the data static member TryDerefEntityPathViaProvidedType(ccu: CcuThunk, path:string[], i:int, entity:Entity) = // Errors during linking are not necessarily given good ranges. This has always been the case in F# 2.0, but also applies to // type provider type linking errors in F# 3.0. let m = range0 match entity.TypeReprInfo with | TProvidedTypeExtensionPoint info -> let resolutionEnvironment = info.ResolutionEnvironment let st = info.ProvidedType // In this case, we're safely in the realm of types. Just iterate through the nested // types until i = path.Length-1. Create the Tycon's as needed let rec tryResolveNestedTypeOf(parentEntity:Entity,resolutionEnvironment,st:Tainted,i) = match st.PApply((fun st -> st.GetNestedType path.[i]),m) with | Tainted.Null -> None | st -> let newEntity = Construct.NewProvidedTycon(resolutionEnvironment, st, ccu.ImportProvidedType, false, m) parentEntity.ModuleOrNamespaceType.AddProvidedTypeEntity(newEntity) if i = path.Length-1 then Some(newEntity) else tryResolveNestedTypeOf(newEntity,resolutionEnvironment,st,i+1) tryResolveNestedTypeOf(entity,resolutionEnvironment,st,i) | TProvidedNamespaceExtensionPoint(resolutionEnvironment,resolvers) -> // In this case, we're still in the realm of extensible namespaces. // <----entity--> // 0 .........i-1..i .......... j ..... path.Length-1 // // <----entity--> <---resolver----> // 0 .........i-1..i ............. j ..... path.Length-1 // // <----entity--> <---resolver----> <--loop---> // 0 .........i-1..i ............. j ..... path.Length-1 // // We now query the resolvers with // moduleOrNamespace = path.[0..j-1] // typeName = path.[j] // starting with j = i and then progressively increasing j // This function queries at 'j' let tryResolvePrefix j = assert (j >= 0) assert (j <= path.Length - 1) let matched = [ for resolver in resolvers do let moduleOrNamespace = if j = 0 then null else path.[0..j-1] let typename = path.[j] let resolution = ExtensionTyping.TryLinkProvidedType(resolutionEnvironment,resolver,moduleOrNamespace,typename,m) match resolution with | None | Some (Tainted.Null) -> () | Some st -> yield (resolver,st) ] match matched with | [(_,st)] -> // 'entity' is at position i in the dereference chain. We resolved to position 'j'. // Inject namespaces until we're an position j, and then inject the type. // Note: this is similar to code in build.fs let rec injectNamespacesFromIToJ (entity: Entity) k = if k = j then let newEntity = Construct.NewProvidedTycon(resolutionEnvironment, st, ccu.ImportProvidedType, false, m) entity.ModuleOrNamespaceType.AddProvidedTypeEntity(newEntity) newEntity else let cpath = mkNestedCPath entity.CompilationPath entity.LogicalName ModuleOrNamespaceKind.Namespace let newEntity = Construct.NewModuleOrNamespace (Some cpath) (TAccess []) (ident(path.[k],m)) XmlDoc.Empty [] (notlazy (Construct.NewEmptyModuleOrNamespaceType Namespace)) entity.ModuleOrNamespaceType.AddModuleOrNamespaceByMutation(newEntity) injectNamespacesFromIToJ newEntity (k+1) let newEntity = injectNamespacesFromIToJ entity i // newEntity is at 'j' NonLocalEntityRef.TryDerefEntityPath(ccu, path, (j+1), newEntity) | [] -> None | _ -> failwith "Unexpected" let rec tryResolvePrefixes j = if j >= path.Length then None else match tryResolvePrefix j with | None -> tryResolvePrefixes (j+1) | Some res -> Some res tryResolvePrefixes i | _ -> None #endif /// Try to link a non-local entity reference to an actual entity member nleref.TryDeref = let (NonLocalEntityRef(ccu,path)) = nleref ccu.EnsureDerefable(path) match NonLocalEntityRef.TryDerefEntityPath(ccu, path, 0, ccu.Contents) with | Some _ as r -> r | None -> // OK, the lookup failed. Check if we can redirect through a type forwarder on this assembly. // Look for a forwarder for each prefix-path let rec tryForwardPrefixPath i = if i < path.Length then match ccu.TryForward(path.[0..i-1],path.[i]) with // OK, found a forwarder, now continue with the lookup to find the nested type | Some tcref -> NonLocalEntityRef.TryDerefEntityPath(ccu, path, (i+1), tcref.Deref) | None -> tryForwardPrefixPath (i+1) else None tryForwardPrefixPath 0 /// Get the CCU referenced by the nonlocal reference. member nleref.Ccu = let (NonLocalEntityRef(ccu,_)) = nleref ccu /// Get the path into the CCU referenced by the nonlocal reference. member nleref.Path = let (NonLocalEntityRef(_,p)) = nleref p member nleref.DisplayName = String.concat "." nleref.Path /// Get the mangled name of the last item in the path of the nonlocal reference. member nleref.LastItemMangledName = let p = nleref.Path p.[p.Length-1] /// Get the all-but-last names of the path of the nonlocal reference. member nleref.EnclosingMangledPath = let p = nleref.Path p.[0..p.Length-2] /// Get the name of the assembly referenced by the nonlocal reference. member nleref.AssemblyName = nleref.Ccu.AssemblyName /// Dereference the nonlocal reference, and raise an error if this fails. member nleref.Deref = match nleref.TryDeref with | Some res -> res | None -> errorR (InternalUndefinedItemRef (FSComp.SR.tastUndefinedItemRefModuleNamespace, nleref.DisplayName, nleref.AssemblyName, "")); raise (KeyNotFoundException()) /// Try to get the details of the module or namespace fragment referred to by this non-local reference. member nleref.TryModuleOrNamespaceType = nleref.TryDeref |> Option.map (fun v -> v.ModuleOrNamespaceType) /// Get the details of the module or namespace fragment for the entity referred to by this non-local reference. member nleref.ModuleOrNamespaceType = nleref.Deref.ModuleOrNamespaceType override x.ToString() = x.DisplayName and [] [] EntityRef = { /// Indicates a reference to something bound in this CCU mutable binding: NonNullSlot /// Indicates a reference to something bound in another CCU nlr: NonLocalEntityRef } member x.IsLocalRef = match box x.nlr with null -> true | _ -> false member x.IsResolved = match box x.binding with null -> false | _ -> true member x.PrivateTarget = x.binding member x.ResolvedTarget = x.binding member private tcr.Resolve() = let res = tcr.nlr.TryDeref match res with | Some r -> tcr.binding <- nullableSlotFull r | None -> () // Dereference the TyconRef to a Tycon. Amortize the cost of doing this. // This path should not allocate in the amortized case member tcr.Deref = match box tcr.binding with | null -> tcr.Resolve() match box tcr.binding with | null -> error (InternalUndefinedItemRef (FSComp.SR.tastUndefinedItemRefModuleNamespaceType, String.concat "." tcr.nlr.EnclosingMangledPath, tcr.nlr.AssemblyName, tcr.nlr.LastItemMangledName)) | _ -> tcr.binding | _ -> tcr.binding // Dereference the TyconRef to a Tycon option. member tcr.TryDeref = match box tcr.binding with | null -> tcr.Resolve() match box tcr.binding with | null -> None | _ -> Some tcr.binding | _ -> Some tcr.binding /// Is the destination assembly available? member tcr.CanDeref = tcr.TryDeref.IsSome override x.ToString() = if x.IsLocalRef then x.ResolvedTarget.DisplayName else x.nlr.DisplayName /// Gets the data indicating the compiled representation of a type or module in terms of Abstract IL data structures. member x.CompiledRepresentation = x.Deref.CompiledRepresentation /// Gets the data indicating the compiled representation of a named type or module in terms of Abstract IL data structures. member x.CompiledRepresentationForNamedType = x.Deref.CompiledRepresentationForNamedType /// The name of the namespace, module or type, possibly with mangling, e.g. List`1, List or FailureException member x.LogicalName = x.Deref.LogicalName /// The compiled name of the namespace, module or type, e.g. FSharpList`1, ListModule or FailureException member x.CompiledName = x.Deref.CompiledName /// The display name of the namespace, module or type, e.g. List instead of List`1, not including static parameters member x.DisplayName = x.Deref.DisplayName /// The display name of the namespace, module or type with <_,_,_> added for generic types, including static parameters member x.DisplayNameWithStaticParametersAndUnderscoreTypars = x.Deref.DisplayNameWithStaticParametersAndUnderscoreTypars /// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters member x.DisplayNameWithStaticParameters = x.Deref.DisplayNameWithStaticParameters /// The code location where the module, namespace or type is defined. member x.Range = x.Deref.Range /// A unique stamp for this module, namespace or type definition within the context of this compilation. /// Note that because of signatures, there are situations where in a single compilation the "same" /// module, namespace or type may have two distinct Entity objects that have distinct stamps. member x.Stamp = x.Deref.Stamp /// The F#-defined custom attributes of the entity, if any. If the entity is backed by Abstract IL or provided metadata /// then this does not include any attributes from those sources. member x.Attribs = x.Deref.Attribs /// The XML documentation of the entity, if any. If the entity is backed by provided metadata /// then this _does_ include this documentation. If the entity is backed by Abstract IL metadata /// or comes from another F# assembly then it does not (because the documentation will get read from /// an XML file). member x.XmlDoc = x.Deref.XmlDoc /// The XML documentation sig-string of the entity, if any, to use to lookup an .xml doc file. This also acts /// as a cache for this sig-string computation. member x.XmlDocSig = x.Deref.XmlDocSig /// The logical contents of the entity when it is a module or namespace fragment. member x.ModuleOrNamespaceType = x.Deref.ModuleOrNamespaceType /// Demangle the module name, if FSharpModuleWithSuffix is used member x.DemangledModuleOrNamespaceName = x.Deref.DemangledModuleOrNamespaceName /// The logical contents of the entity when it is a type definition. member x.TypeContents = x.Deref.TypeContents /// The kind of the type definition - is it a measure definition or a type definition? member x.TypeOrMeasureKind = x.Deref.TypeOrMeasureKind /// The identifier at the point of declaration of the type definition. member x.Id = x.Deref.Id /// The information about the r.h.s. of a type definition, if any. For example, the r.h.s. of a union or record type. member x.TypeReprInfo = x.Deref.TypeReprInfo /// The information about the r.h.s. of an F# exception definition, if any. member x.ExceptionInfo = x.Deref.ExceptionInfo /// Indicates if the entity represents an F# exception declaration. member x.IsExceptionDecl = x.Deref.IsExceptionDecl /// Get the type parameters for an entity that is a type declaration, otherwise return the empty list. /// /// Lazy because it may read metadata, must provide a context "range" in case error occurs reading metadata. member x.Typars m = x.Deref.Typars m /// Get the type parameters for an entity that is a type declaration, otherwise return the empty list. member x.TyparsNoRange = x.Deref.TyparsNoRange /// Indicates if this entity is an F# type abbreviation definition member x.TypeAbbrev = x.Deref.TypeAbbrev member x.IsTypeAbbrev = x.Deref.IsTypeAbbrev /// Get the value representing the accessiblity of the r.h.s. of an F# type definition. member x.TypeReprAccessibility = x.Deref.TypeReprAccessibility /// Get the cache of the compiled ILTypeRef representation of this module or type. member x.CompiledReprCache = x.Deref.CompiledReprCache /// Get a blob of data indicating how this type is nested in other namespaces, modules or types. member x.PublicPath : PublicPath option = x.Deref.PublicPath /// Get the value representing the accessiblity of an F# type definition or module. member x.Accessibility = x.Deref.Accessibility /// Indicates the type prefers the "tycon" syntax for display etc. member x.IsPrefixDisplay = x.Deref.IsPrefixDisplay /// Indicates the "tycon blob" is actually a module member x.IsModuleOrNamespace = x.Deref.IsModuleOrNamespace /// Indicates if the entity is a namespace member x.IsNamespace = x.Deref.IsNamespace /// Indicates if the entity is an F# module definition member x.IsModule = x.Deref.IsModule member x.CompilationPathOpt = x.Deref.CompilationPathOpt #if EXTENSIONTYPING /// Indicates if the entity is a provided namespace fragment member x.IsProvided = x.Deref.IsProvided /// Indicates if the entity is a provided namespace fragment member x.IsProvidedNamespace = x.Deref.IsProvidedNamespace /// Indicates if the entity is an erased provided type definition member x.IsProvidedErasedTycon = x.Deref.IsProvidedErasedTycon /// Indicates if the entity is a generated provided type definition, i.e. not erased. member x.IsProvidedGeneratedTycon = x.Deref.IsProvidedGeneratedTycon #endif /// Get a blob of data indicating how this type is nested inside other namespaces, modules and types. member x.CompilationPath = x.Deref.CompilationPath /// Get a table of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldTable = x.Deref.AllFieldTable /// Get an array of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldsArray = x.Deref.AllFieldsArray /// Get a list of fields for all the F#-defined record, struct and class fields in this type definition, including /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldsAsList = x.Deref.AllFieldsAsList /// Get a list of all fields for F#-defined record, struct and class fields in this type definition, /// including static fields, but excluding compiler-generate fields. member x.TrueFieldsAsList = x.Deref.TrueFieldsAsList /// Get a list of all instance fields for F#-defined record, struct and class fields in this type definition, /// excluding compiler-generate fields. member x.TrueInstanceFieldsAsList = x.Deref.TrueInstanceFieldsAsList /// Get a list of all instance fields for F#-defined record, struct and class fields in this type definition. /// including hidden fields from the compilation of implicit class constructions. // NOTE: This method doesn't perform particularly well, and is over-used, but doesn't seem to appear on performance traces member x.AllInstanceFieldsAsList = x.Deref.AllInstanceFieldsAsList /// Get a field by index in definition order member x.GetFieldByIndex n = x.Deref.GetFieldByIndex n /// Get a field by name. member x.GetFieldByName n = x.Deref.GetFieldByName n /// Get the union cases and other union-type information for a type, if any member x.UnionTypeInfo = x.Deref.UnionTypeInfo /// Get the union cases for a type, if any member x.UnionCasesArray = x.Deref.UnionCasesArray /// Get the union cases for a type, if any, as a list member x.UnionCasesAsList = x.Deref.UnionCasesAsList /// Get a union case of a type by name member x.GetUnionCaseByName n = x.Deref.GetUnionCaseByName n /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. member x.FSharpObjectModelTypeInfo = x.Deref.FSharpObjectModelTypeInfo /// Gets the immediate interface definitions of an F# type definition. Further interfaces may be supported through class and interface inheritance. member x.ImmediateInterfacesOfFSharpTycon = x.Deref.ImmediateInterfacesOfFSharpTycon /// Gets the immediate interface types of an F# type definition. Further interfaces may be supported through class and interface inheritance. member x.ImmediateInterfaceTypesOfFSharpTycon = x.Deref.ImmediateInterfaceTypesOfFSharpTycon /// Gets the immediate members of an F# type definition, excluding compiler-generated ones. /// Note: result is alphabetically sorted, then for each name the results are in declaration order member x.MembersOfFSharpTyconSorted = x.Deref.MembersOfFSharpTyconSorted /// Gets all immediate members of an F# type definition keyed by name, including compiler-generated ones. /// Note: result is a indexed table, and for each name the results are in reverse declaration order member x.MembersOfFSharpTyconByName = x.Deref.MembersOfFSharpTyconByName /// Indicates if this is a struct or enum type definition , i.e. a value type definition member x.IsStructOrEnumTycon = x.Deref.IsStructOrEnumTycon /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll which uses /// an assembly-code representation for the type, e.g. the primitive array type constructor. member x.IsAsmReprTycon = x.Deref.IsAsmReprTycon /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll like 'float<_>' which /// defines a measure type with a relation to an existing non-measure type as a representation. member x.IsMeasureableReprTycon = x.Deref.IsMeasureableReprTycon /// Indicates if the entity is erased, either a measure definition, or an erased provided type definition member x.IsErased = x.Deref.IsErased /// Gets any implicit hash/equals (with comparer argument) methods added to an F# record, union or struct type definition. member x.GeneratedHashAndEqualsWithComparerValues = x.Deref.GeneratedHashAndEqualsWithComparerValues /// Gets any implicit CompareTo (with comparer argument) methods added to an F# record, union or struct type definition. member x.GeneratedCompareToWithComparerValues = x.Deref.GeneratedCompareToWithComparerValues /// Gets any implicit CompareTo methods added to an F# record, union or struct type definition. member x.GeneratedCompareToValues = x.Deref.GeneratedCompareToValues /// Gets any implicit hash/equals methods added to an F# record, union or struct type definition. member x.GeneratedHashAndEqualsValues = x.Deref.GeneratedHashAndEqualsValues /// Indicate if this is a type definition backed by Abstract IL metadata. member x.IsILTycon = x.Deref.IsILTycon /// Get the Abstract IL scope, nesting and metadata for this /// type definition, assuming it is backed by Abstract IL metadata. member x.ILTyconInfo = x.Deref.ILTyconInfo /// Get the Abstract IL metadata for this type definition, assuming it is backed by Abstract IL metadata. member x.ILTyconRawMetadata = x.Deref.ILTyconRawMetadata /// Indicate if this is a type whose r.h.s. is known to be a union type definition. member x.IsUnionTycon = x.Deref.IsUnionTycon /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition. member x.IsRecordTycon = x.Deref.IsRecordTycon /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition member x.IsFSharpObjectModelTycon = x.Deref.IsFSharpObjectModelTycon /// Indicates if this is an F# type definition whose r.h.s. definition is unknown (i.e. a traditional ML 'abstract' type in a signature, /// which in F# is called a 'unknown representation' type). member x.IsHiddenReprTycon = x.Deref.IsHiddenReprTycon /// Indicates if this is an F#-defined interface type definition member x.IsFSharpInterfaceTycon = x.Deref.IsFSharpInterfaceTycon /// Indicates if this is an F#-defined delegate type definition member x.IsFSharpDelegateTycon = x.Deref.IsFSharpDelegateTycon /// Indicates if this is an F#-defined enum type definition member x.IsFSharpEnumTycon = x.Deref.IsFSharpEnumTycon /// Indicates if this is a .NET-defined enum type definition member x.IsILEnumTycon = x.Deref.IsILEnumTycon /// Indicates if this is an enum type definition member x.IsEnumTycon = x.Deref.IsEnumTycon /// Indicates if this is an F#-defined struct or enum type definition , i.e. a value type definition member x.IsFSharpStructOrEnumTycon = x.Deref.IsFSharpStructOrEnumTycon /// Indicates if this is a .NET-defined struct or enum type definition , i.e. a value type definition member x.IsILStructOrEnumTycon = x.Deref.IsILStructOrEnumTycon /// Indicates if we have pre-determined that a type definition has a default constructor. member x.PreEstablishedHasDefaultConstructor = x.Deref.PreEstablishedHasDefaultConstructor /// Indicates if we have pre-determined that a type definition has a self-referential constructor using 'as x' member x.HasSelfReferentialConstructor = x.Deref.HasSelfReferentialConstructor /// note: ModuleOrNamespaceRef and TyconRef are type equivalent and ModuleOrNamespaceRef = EntityRef and TyconRef = EntityRef /// References are either local or nonlocal and [] [] ValRef = { /// Indicates a reference to something bound in this CCU mutable binding: NonNullSlot /// Indicates a reference to something bound in another CCU nlr: NonLocalValOrMemberRef } member x.IsLocalRef = match box x.nlr with null -> true | _ -> false member x.IsResolved = match box x.binding with null -> false | _ -> true member x.PrivateTarget = x.binding member x.ResolvedTarget = x.binding member vr.Deref = match box vr.binding with | null -> let res = let nlr = vr.nlr let e = nlr.EnclosingEntity.Deref let possible = e.ModuleOrNamespaceType.TryLinkVal(nlr.EnclosingEntity.nlr.Ccu, nlr.ItemKey) match possible with | None -> error (InternalUndefinedItemRef (FSComp.SR.tastUndefinedItemRefVal, e.DisplayNameWithStaticParameters, nlr.AssemblyName, sprintf "%+A" nlr.ItemKey.PartialKey)) | Some h -> h vr.binding <- nullableSlotFull res res | _ -> vr.binding member vr.TryDeref = match box vr.binding with | null -> let resOpt = vr.nlr.EnclosingEntity.TryDeref |> Option.bind (fun e -> e.ModuleOrNamespaceType.TryLinkVal(vr.nlr.EnclosingEntity.nlr.Ccu, vr.nlr.ItemKey)) match resOpt with | None -> () | Some res -> vr.binding <- nullableSlotFull res resOpt | _ -> Some vr.binding member x.Type = x.Deref.Type member x.TypeScheme = x.Deref.TypeScheme member x.TauType = x.Deref.TauType member x.Typars = x.Deref.Typars member x.LogicalName = x.Deref.LogicalName member x.DisplayName = x.Deref.DisplayName member x.CoreDisplayName = x.Deref.CoreDisplayName member x.Range = x.Deref.Range member x.Accessibility = x.Deref.Accessibility member x.ActualParent = x.Deref.ActualParent member x.ApparentParent = x.Deref.ApparentParent member x.DefinitionRange = x.Deref.DefinitionRange member x.LiteralValue = x.Deref.LiteralValue member x.Id = x.Deref.Id member x.PropertyName = x.Deref.PropertyName member x.Stamp = x.Deref.Stamp member x.IsCompiledAsTopLevel = x.Deref.IsCompiledAsTopLevel member x.IsDispatchSlot = x.Deref.IsDispatchSlot member x.CompiledName = x.Deref.CompiledName member x.PublicPath = x.Deref.PublicPath member x.ReflectedDefinition = x.Deref.ReflectedDefinition member x.IsConstructor = x.Deref.IsConstructor member x.IsOverrideOrExplicitImpl = x.Deref.IsOverrideOrExplicitImpl member x.MemberInfo = x.Deref.MemberInfo member x.IsMember = x.Deref.IsMember member x.IsModuleBinding = x.Deref.IsModuleBinding member x.IsInstanceMember = x.Deref.IsInstanceMember member x.IsMutable = x.Deref.IsMutable member x.PermitsExplicitTypeInstantiation = x.Deref.PermitsExplicitTypeInstantiation member x.MakesNoCriticalTailcalls = x.Deref.MakesNoCriticalTailcalls member x.IsMemberOrModuleBinding = x.Deref.IsMemberOrModuleBinding member x.IsExtensionMember = x.Deref.IsExtensionMember member x.IsIncrClassConstructor = x.Deref.IsIncrClassConstructor member x.IsIncrClassGeneratedMember = x.Deref.IsIncrClassGeneratedMember member x.RecursiveValInfo = x.Deref.RecursiveValInfo member x.BaseOrThisInfo = x.Deref.BaseOrThisInfo member x.IsTypeFunction = x.Deref.IsTypeFunction member x.ValReprInfo = x.Deref.ValReprInfo member x.InlineInfo = x.Deref.InlineInfo member x.MustInline = x.Deref.MustInline member x.IsCompilerGenerated = x.Deref.IsCompilerGenerated member x.Attribs = x.Deref.Attribs member x.XmlDoc = x.Deref.XmlDoc member x.XmlDocSig = x.Deref.XmlDocSig member x.TopValActualParent = x.Deref.TopValActualParent member x.MemberApparentParent = x.Deref.MemberApparentParent member x.NumObjArgs = x.Deref.NumObjArgs override x.ToString() = if x.IsLocalRef then x.ResolvedTarget.DisplayName else x.nlr.ToString() and UnionCaseRef = | UCRef of TyconRef * string member x.TyconRef = let (UCRef(tcref,_)) = x in tcref member x.CaseName = let (UCRef(_,nm)) = x in nm member x.Tycon = x.TyconRef.Deref and RecdFieldRef = | RFRef of TyconRef * string member x.TyconRef = let (RFRef(tcref,_)) = x in tcref member x.FieldName = let (RFRef(_,id)) = x in id member x.Tycon = x.TyconRef.Deref and /// The algebra of types [] // REMOVING because of possible stack overflow #if EXTENSIBLE_DUMPER #if DEBUG [)>] #endif #endif TType = /// TType_forall(typars, bodyTy). /// /// Indicates the type is a universal type, only used for types of values and members | TType_forall of Typars * TType /// TType_app(tyconRef, typeInstantiation). /// /// Indicates the type is build from a named type and a number of type arguments | TType_app of TyconRef * TypeInst /// TType_tuple(elementTypes). /// /// Indicates the type is a tuple type. elementTypes must be of length 2 or greater. | TType_tuple of TTypes /// TType_fun(domainType,rangeType). /// /// Indicates the type is a function type | TType_fun of TType * TType /// TType_ucase(unionCaseRef, typeInstantiation) /// /// Indicates the type is a non-F#-visible type representing a "proof" that a union value belongs to a particular union case /// These types are not user-visible and will never appear as an inferred type. They are the types given to /// the temporaries arising out of pattern matching on union values. | TType_ucase of UnionCaseRef * TypeInst /// Indicates the type is a variable type, whether declared, generalized or an inference type parameter | TType_var of Typar /// Indicates the type is a unit-of-measure expression being used as an argument to a type or member | TType_measure of MeasureExpr override x.ToString() = match x with | TType_forall (_tps,ty) -> "forall _. " + ty.ToString() | TType_app (tcref, tinst) -> tcref.DisplayName + (match tinst with [] -> "" | tys -> "<" + String.concat "," (List.map string tys) + ">") | TType_tuple tinst -> "(" + String.concat "," (List.map string tinst) + ")" | TType_fun (d,r) -> "(" + string d + " -> " + string r + ")" | TType_ucase (uc,tinst) -> "union case type " + uc.CaseName + (match tinst with [] -> "" | tys -> "<" + String.concat "," (List.map string tys) + ">") | TType_var tp -> tp.DisplayName | TType_measure ms -> sprintf "%A" ms and TypeInst = TType list and TTypes = TType list and MeasureExpr = /// A variable unit-of-measure | MeasureVar of Typar /// A constant, leaf unit-of-measure such as 'kg' or 'm' | MeasureCon of TyconRef /// A product of two units of measure | MeasureProd of MeasureExpr*MeasureExpr /// An inverse of a units of measure expression | MeasureInv of MeasureExpr /// The unit of measure '1', e.g. float = float<1> | MeasureOne and [] CcuData = { /// Holds the filename for the DLL, if any FileName: string option /// Holds the data indicating how this assembly/module is referenced from the code being compiled. ILScopeRef: ILScopeRef /// A unique stamp for this DLL Stamp: Stamp /// The fully qualified assembly reference string to refer to this assembly. This is persisted in quotations QualifiedName: string option /// A hint as to where does the code for the CCU live (e.g what was the tcConfig.implicitIncludeDir at compilation time for this DLL?) SourceCodeDirectory: string /// Indicates that this DLL was compiled using the F# compiler and has F# metadata IsFSharp: bool #if EXTENSIONTYPING /// Is the CCu an assembly inected by a type provider IsProviderGenerated: bool /// Triggered when the contents of the CCU are invalidated InvalidateEvent : IEvent /// A helper function used to link method signatures using type equality. This is effectively a forward call to the type equality /// logic in tastops.fs ImportProvidedType : Tainted -> TType #endif /// Indicates that this DLL uses quotation literals somewhere. This is used to implement a restriction on static linking mutable UsesQuotations : bool /// A handle to the full specification of the contents of the module contained in this ccu // NOTE: may contain transient state during typechecking mutable Contents: ModuleOrNamespace /// A helper function used to link method signatures using type equality. This is effectively a forward call to the type equality /// logic in tastops.fs MemberSignatureEquality : (TType -> TType -> bool) /// The table of .NET CLI type forwarders for this assembly TypeForwarders : CcuTypeForwarderTable } /// Represents a table of .NET CLI type forwarders for an assembly and CcuTypeForwarderTable = Lazy> and CcuReference = string // ILAssemblyRef /// A relinkable handle to the contents of a compilation unit. Relinking is performed by mutation. // /// A compilation unit is, more or less, the new material created in one /// invocation of the compiler. Due to static linking assemblies may hold more /// than one compilation unit (i.e. when two assemblies are merged into a compilation /// the resulting assembly will contain 3 CUs). Compilation units are also created for referenced /// .NET assemblies. /// /// References to items such as type constructors are via /// cross-compilation-unit thunks, which directly reference the data structures that define /// these modules. Thus, when saving out values to disk we only wish /// to save out the "current" part of the term graph. When reading values /// back in we "fixup" the links to previously referenced modules. /// /// All non-local accesses to the data structures are mediated /// by ccu-thunks. Ultimately, a ccu-thunk is either a (named) element of /// the data structure, or it is a delayed fixup, i.e. an invalid dangling /// reference that has not had an appropriate fixup applied. and CcuThunk = { mutable target: CcuData /// ccu.orphanfixup is true when a reference is missing in the transitive closure of static references that /// may potentially be required for the metadata of referenced DLLs. It is set to true if the "loader" /// used in the F# metadata-deserializer or the .NET metadata reader returns a failing value (e.g. None). /// Note: When used from Visual Studio, the loader will not automatically chase down transitively referenced DLLs - they /// must be in the explicit references in the project. mutable orphanfixup : bool name: CcuReference } member ccu.Deref = if isNull ccu.target || ccu.orphanfixup then raise(UnresolvedReferenceNoRange ccu.name) ccu.target member ccu.IsUnresolvedReference = (isNull ccu.target || ccu.orphanfixup) /// Ensure the ccu is derefable in advance. Supply a path to attach to any resulting error message. member ccu.EnsureDerefable(requiringPath:string[]) = if ccu.IsUnresolvedReference then let path = System.String.Join(".", requiringPath) raise(UnresolvedPathReferenceNoRange(ccu.name,path)) /// Indicates that this DLL uses quotation literals somewhere. This is used to implement a restriction on static linking member ccu.UsesQuotations with get() = ccu.Deref.UsesQuotations and set v = ccu.Deref.UsesQuotations <- v member ccu.AssemblyName = ccu.name /// Holds the data indicating how this assembly/module is referenced from the code being compiled. member ccu.ILScopeRef = ccu.Deref.ILScopeRef /// A unique stamp for this DLL member ccu.Stamp = ccu.Deref.Stamp /// Holds the filename for the DLL, if any member ccu.FileName = ccu.Deref.FileName #if EXTENSIONTYPING /// Is the CCu an EST injected assembly member ccu.IsProviderGenerated = ccu.Deref.IsProviderGenerated /// Used to make 'forward' calls into the loader during linking member ccu.ImportProvidedType ty : TType = ccu.Deref.ImportProvidedType ty #endif /// The fully qualified assembly reference string to refer to this assembly. This is persisted in quotations member ccu.QualifiedName = ccu.Deref.QualifiedName /// A hint as to where does the code for the CCU live (e.g what was the tcConfig.implicitIncludeDir at compilation time for this DLL?) member ccu.SourceCodeDirectory = ccu.Deref.SourceCodeDirectory /// Indicates that this DLL was compiled using the F# compiler and has F# metadata member ccu.IsFSharp = ccu.Deref.IsFSharp /// A handle to the full specification of the contents of the module contained in this ccu // NOTE: may contain transient state during typechecking member ccu.Contents = ccu.Deref.Contents /// The table of type forwarders for this assembly member ccu.TypeForwarders : Map = ccu.Deref.TypeForwarders.Force() /// The table of modules and namespaces at the "root" of the assembly member ccu.RootModulesAndNamespaces = ccu.Contents.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions /// The table of type definitions at the "root" of the assembly member ccu.RootTypeAndExceptionDefinitions = ccu.Contents.ModuleOrNamespaceType.TypeAndExceptionDefinitions /// Create a CCU with the given name and contents static member Create(nm,x) = { target = x orphanfixup = false name = nm } /// Create a CCU with the given name but where the contents have not yet been specified static member CreateDelayed(nm) = { target = Unchecked.defaultof<_> orphanfixup = false name = nm } /// Fixup a CCU to have the given contents member x.Fixup(avail:CcuThunk) = match box x.target with | null -> assert (avail.AssemblyName = x.AssemblyName) x.target <- (match box avail.target with | null -> error(Failure("internal error: ccu thunk '"+avail.name+"' not fixed up!")) | _ -> avail.target) | _ -> errorR(Failure("internal error: the ccu thunk for assembly "+x.AssemblyName+" not delayed!")) /// Fixup a CCU to record it as "orphaned", i.e. not available member x.FixupOrphaned() = match box x.target with | null -> x.orphanfixup<-true | _ -> errorR(Failure("internal error: the ccu thunk for assembly "+x.AssemblyName+" not delayed!")) /// Try to resolve a path into the CCU by referencing the .NET/CLI type forwarder table of the CCU member ccu.TryForward(nlpath:string[],item:string) : EntityRef option = ccu.EnsureDerefable(nlpath) ccu.TypeForwarders.TryFind(nlpath,item) //printfn "trying to forward %A::%s from ccu '%s', res = '%A'" p n ccu.AssemblyName res.IsSome /// Used to make forward calls into the type/assembly loader when comparing member signatures during linking member ccu.MemberSignatureEquality(ty1:TType, ty2:TType) = ccu.Deref.MemberSignatureEquality ty1 ty2 override ccu.ToString() = ccu.AssemblyName /// The result of attempting to resolve an assembly name to a full ccu. /// UnresolvedCcu will contain the name of the assembly that could not be resolved. and CcuResolutionResult = | ResolvedCcu of CcuThunk | UnresolvedCcu of string /// Represents the information saved in the assembly signature data resource for an F# assembly and PickledModuleInfo = { mspec: ModuleOrNamespace compileTimeWorkingDir: string usesQuotations : bool } //--------------------------------------------------------------------------- // Attributes //--------------------------------------------------------------------------- and Attribs = Attrib list and AttribKind = /// Indicates an attribute refers to a type defined in an imported .NET assembly | ILAttrib of ILMethodRef /// Indicates an attribute refers to a type defined in an imported F# assembly | FSAttrib of ValRef /// Attrib(kind,unnamedArgs,propVal,appliedToAGetterOrSetter,targetsOpt,range) and Attrib = | Attrib of TyconRef * AttribKind * AttribExpr list * AttribNamedArg list * bool * AttributeTargets option * range /// We keep both source expression and evaluated expression around to help intellisense and signature printing and AttribExpr = /// AttribExpr(source, evaluated) AttribExpr of Expr * Expr /// AttribNamedArg(name,type,isField,value) and AttribNamedArg = AttribNamedArg of (string*TType*bool*AttribExpr) /// Constants in expressions and [] Const = | Bool of bool | SByte of sbyte | Byte of byte | Int16 of int16 | UInt16 of uint16 | Int32 of int32 | UInt32 of uint32 | Int64 of int64 | UInt64 of uint64 | IntPtr of int64 | UIntPtr of uint64 | Single of single | Double of double | Char of char | String of string // in unicode | Decimal of Decimal | Unit | Zero // null/zero-bit-pattern /// Decision trees. Pattern matching has been compiled down to /// a decision tree by this point. The right-hand-sides (actions) of /// the decision tree are labelled by integers that are unique for that /// particular tree. and [] DecisionTree = /// TDSwitch(input, cases, default, range) /// /// Indicates a decision point in a decision tree. /// input -- the expression being tested /// cases -- the list of tests and their subsequent decision trees /// default -- the default decision tree, if any /// range -- (precise documentation needed) | TDSwitch of Expr * DecisionTreeCase list * DecisionTree option * range /// TDSuccess(results, targets) /// /// Indicates the decision tree has terminated with success, calling the given target with the given parameters. /// results -- the expressions to be bound to the variables at the target /// target -- the target number for the continuation | TDSuccess of FlatExprs * int /// TDBind(binding, body) /// /// Bind the given value throught the remaining cases of the dtree. /// These arise from active patterns and some optimizations to prevent /// repeated computations in decision trees. /// binding -- the value and the expression it is bound to /// body -- the rest of the decision tree | TDBind of Binding * DecisionTree and DecisionTreeCase = | TCase of Test * DecisionTree member x.Discriminator = let (TCase(d,_)) = x in d member x.CaseTree = let (TCase(_,d)) = x in d and [] Test = /// Test if the input to a decision tree matches the given union case | UnionCase of UnionCaseRef * TypeInst /// Test if the input to a decision tree is an array of the given length | ArrayLength of int * TType /// Test if the input to a decision tree is the given constant value | Const of Const /// Test if the input to a decision tree is null | IsNull /// IsInst(source, target) /// /// Test if the input to a decision tree is an instance of the given type | IsInst of TType * TType /// Test.ActivePatternCase(activePatExpr, activePatResTys, activePatIdentity, idx, activePatInfo) /// /// Run the active pattern and bind a successful result to a /// variable in the remaining tree. /// activePatExpr -- The active pattern function being called, perhaps applied to some active pattern parameters. /// activePatResTys -- The result types (case types) of the active pattern. /// activePatIdentity -- The value and the types it is applied to. If there are any active pattern parameters then this is empty. /// idx -- The case number of of the active pattern which the test relates to. /// activePatternInfo -- The extracted info for the active pattern. | ActivePatternCase of Expr * TTypes * (ValRef * TypeInst) option * int * ActivePatternInfo /// A target of a decision tree. Can be thought of as a little function, though is compiled as a local block. and DecisionTreeTarget = | TTarget of FlatVals * Expr * SequencePointInfoForTarget and Bindings = FlatList and Binding = | TBind of Val * Expr * SequencePointInfoForBinding member x.Var = (let (TBind(v,_,_)) = x in v) member x.Expr = (let (TBind(_,e,_)) = x in e) member x.SequencePointInfo = (let (TBind(_,_,sp)) = x in sp) // ActivePatternElemRef: active pattern element (deconstruction case), e.g. 'JNil' or 'JCons'. // Integer indicates which choice in the target set is being selected by this item. and ActivePatternElemRef = | APElemRef of ActivePatternInfo * ValRef * int member x.IsTotalActivePattern = (let (APElemRef(total,_,_)) = x in total) member x.ActivePatternVal = (let (APElemRef(_,vref,_)) = x in vref) member x.CaseIndex = (let (APElemRef(_,_,n)) = x in n) /// Records the "extra information" for a value compiled as a method (rather /// than a closure or a local), including argument names, attributes etc. and ValReprInfo = /// ValReprInfo (numTypars, args, result) | ValReprInfo of TyparReprInfo list * ArgReprInfo list list * ArgReprInfo member x.ArgInfos = (let (ValReprInfo(_,args,_)) = x in args) member x.NumCurriedArgs = (let (ValReprInfo(_,args,_)) = x in args.Length) member x.NumTypars = (let (ValReprInfo(n,_,_)) = x in n.Length) member x.HasNoArgs = (let (ValReprInfo(n,args,_)) = x in n.IsEmpty && args.IsEmpty) member x.AritiesOfArgs = (let (ValReprInfo(_,args,_)) = x in List.map List.length args) member x.KindsOfTypars = (let (ValReprInfo(n,_,_)) = x in n |> List.map (fun (TyparReprInfo(_,k)) -> k)) member x.TotalArgCount = let (ValReprInfo(_,args,_)) = x in // This is List.sumBy List.length args // We write this by hand as it can be a performance bottleneck in LinkagePartialKey let rec loop (args:ArgReprInfo list list) acc = match args with | [] -> acc | []::t -> loop t acc | [_]::t -> loop t (acc+1) | (_::_::h)::t -> loop t (acc + h.Length + 2) loop args 0 /// Records the "extra information" for an argument compiled as a real /// method argument, specificially the argument name and attributes. and [] ArgReprInfo = { // MUTABILITY; used when propagating signature attributes into the implementation. mutable Attribs : Attribs // MUTABILITY; used when propagating names of parameters from signature into the implementation. mutable Name : Ident option } /// Records the extra metadata stored about typars for type parameters /// compiled as "real" IL type parameters, specifically for values with /// ValReprInfo. Any information here is propagated from signature through /// to the compiled code. and TyparReprInfo = TyparReprInfo of Ident * TyparKind and Typars = Typar list and Exprs = Expr list and FlatExprs = FlatList and Vals = Val list and FlatVals = FlatList /// The big type of expressions. and [] Expr = /// A constant expression. | Const of Const * range * TType /// Reference a value. The flag is only relevant if the value is an object model member /// and indicates base calls and special uses of object constructors. | Val of ValRef * ValUseFlag * range /// Sequence expressions, used for "a;b", "let a = e in b;a" and "a then b" (the last an OO constructor). | Sequential of Expr * Expr * SequentialOpKind * SequencePointInfoForSeq * range /// Lambda expressions. /// Why multiple vspecs? A Expr.Lambda taking multiple arguments really accepts a tuple. /// But it is in a convenient form to be compile accepting multiple /// arguments, e.g. if compiled as a toplevel static method. | Lambda of Unique * Val option * Val option * Val list * Expr * range * TType /// Type lambdas. These are used for the r.h.s. of polymorphic 'let' bindings and /// for expressions that implement first-class polymorphic values. | TyLambda of Unique * Typars * Expr * range * TType /// Applications. /// Applications combine type and term applications, and are normalized so /// that sequential applications are combined, so "(f x y)" becomes "f [[x];[y]]". /// The type attached to the function is the formal function type, used to ensure we don't build application /// nodes that over-apply when instantiating at function types. | App of Expr * TType * TypeInst * Exprs * range /// Bind a recursive set of values. | LetRec of Bindings * Expr * range * FreeVarsCache /// Bind a value. | Let of Binding * Expr * range * FreeVarsCache // Object expressions: A closure that implements an interface or a base type. // The base object type might be a delegate type. | Obj of (* unique *) Unique * (* object typ *) TType * (* <-- NOTE: specifies type parameters for base type *) (* base val *) Val option * (* ctor call *) Expr * (* overrides *) ObjExprMethod list * (* extra interfaces *) (TType * ObjExprMethod list) list * range // Pattern matching. /// Matches are a more complicated form of "let" with multiple possible destinations /// and possibly multiple ways to get to each destination. /// The first mark is that of the expression being matched, which is used /// as the mark for all the decision making and binding that happens during the match. | Match of SequencePointInfoForBinding * range * DecisionTree * DecisionTreeTarget array * range * TType /// If we statically know some infomation then in many cases we can use a more optimized expression /// This is primarily used by terms in the standard library, particularly those implementing overloaded /// operators. | StaticOptimization of StaticOptimization list * Expr * Expr * range /// An intrinsic applied to some (strictly evaluated) arguments /// A few of intrinsics (TOp_try, TOp.While, TOp.For) expect arguments kept in a normal form involving lambdas | Op of TOp * TypeInst * Exprs * range // Expr.Quote(quotedExpr, savedPickledAstInfoOption, isFromQueryExpression, fullRange, quotedType) // // Indicates the expression is a quoted expression tree. | Quote of Expr * (TTypes * Exprs * ExprData) option ref * bool * range * TType /// Typechecking residue: Indicates a free choice of typars that arises due to /// minimization of polymorphism at let-rec bindings. These are /// resolved to a concrete instantiation on subsequent rewrites. | TyChoose of Typars * Expr * range /// Typechecking residue: A Expr.Link occurs for every use of a recursively bound variable. While type-checking /// the recursive bindings a dummy expression is stored in the mutable reference cell. /// After type checking the bindings this is replaced by a use of the variable, perhaps at an /// appropriate type instantiation. These are immediately eliminated on subsequent rewrites. | Link of Expr ref and [] TOp = /// An operation representing the creation of a union value of the particular union case | UnionCase of UnionCaseRef /// An operation representing the creation of an exception value using an F# exception declaration | ExnConstr of TyconRef /// An operation representing the creation of a tuple value | Tuple /// An operation representing the creation of an array value | Array /// Constant byte arrays (used for parser tables and other embedded data) | Bytes of byte[] /// Constant uint16 arrays (used for parser tables) | UInt16s of uint16[] /// An operation representing a lambda-encoded while loop. The special while loop marker is used to mark compilations of 'foreach' expressions | While of SequencePointInfoForWhileLoop * SpecialWhileLoopMarker /// An operation representing a lambda-encoded for loop | For of SequencePointInfoForForLoop * ForLoopStyle (* count up or down? *) /// An operation representing a lambda-encoded try/catch | TryCatch of SequencePointInfoForTry * SequencePointInfoForWith /// An operation representing a lambda-encoded try/finally | TryFinally of SequencePointInfoForTry * SequencePointInfoForFinally /// Construct a record or object-model value. The ValRef is for self-referential class constructors, otherwise /// it indicates that we're in a constructor and the purpose of the expression is to /// fill in the fields of a pre-created but uninitialized object, and to assign the initialized /// version of the object into the optional mutable cell pointed to be the given value. | Recd of RecordConstructionInfo * TyconRef /// An operation representing setting a record or class field | ValFieldSet of RecdFieldRef /// An operation representing getting a record or class field | ValFieldGet of RecdFieldRef /// An operation representing getting the address of a record field | ValFieldGetAddr of RecdFieldRef /// An operation representing getting an integer tag for a union value representing the union case number | UnionCaseTagGet of TyconRef /// An operation representing a coercion that proves a union value is of a particular union case. This is not a test, its /// simply added proof to enable us to generate verifiable code for field access on union types | UnionCaseProof of UnionCaseRef /// An operation representing a field-get from a union value, where that value has been proven to be of the corresponding union case. | UnionCaseFieldGet of UnionCaseRef * int /// An operation representing a field-get from a union value. The value is not assumed to have been proven to be of the corresponding union case. | UnionCaseFieldSet of UnionCaseRef * int /// An operation representing a field-get from an F# exception value. | ExnFieldGet of TyconRef * int /// An operation representing a field-set on an F# exception value. | ExnFieldSet of TyconRef * int /// An operation representing a field-get from an F# tuple value. | TupleFieldGet of int /// IL assembly code - type list are the types pushed on the stack | ILAsm of ILInstr list * TTypes /// Generate a ldflda on an 'a ref. | RefAddrGet /// Conversion node, compiled via type-directed translation or to box/unbox | Coerce /// Represents a "rethrow" operation. May not be rebound, or used outside of try-finally, expecting a unit argument | Reraise /// Used for state machine compilation | Return /// Used for state machine compilation | Goto of ILCodeLabel /// Used for state machine compilation | Label of ILCodeLabel /// Pseudo method calls. This is used for overloaded operations like op_Addition. | TraitCall of TraitConstraintInfo /// Operation nodes represnting C-style operations on byrefs and mutable vals (l-values) | LValueOp of LValueOperation * ValRef /// ILCall(useCallvirt,isProtected,valu,newobj,valUseFlags,isProp,noTailCall,mref,actualTypeInst,actualMethInst, retTy) /// /// IL method calls. /// value -- is the object a value type? /// isProp -- used for quotation reflection. /// noTailCall - DllImport? if so don't tailcall /// actualTypeInst -- instantiation of the enclosing type /// actualMethInst -- instantiation of the method /// retTy -- the types of pushed values, if any | ILCall of bool * bool * bool * bool * ValUseFlag * bool * bool * ILMethodRef * TypeInst * TypeInst * TTypes /// Indicates the kind of record construction operation. and RecordConstructionInfo = /// We're in an explicit constructor. The purpose of the record expression is to /// fill in the fields of a pre-created but uninitialized object | RecdExprIsObjInit /// Normal record construction | RecdExpr /// If this is Some(ty) then it indicates that a .NET 2.0 constrained call is required, witht he given type as the /// static type of the object argument. and ConstrainedCallInfo = TType option /// Indicates the kind of looping operation. and SpecialWhileLoopMarker = | NoSpecialWhileLoopMarker | WhileLoopForCompiledForEachExprMarker // marks the compiled form of a 'for ... in ... do ' expression /// Indicates the kind of looping operation. and ForLoopStyle = /// Evaluate start and end once, loop up | FSharpForLoopUp /// Evaluate start and end once, loop down | FSharpForLoopDown /// Evaluate start once and end multiple times, loop up | CSharpForLoopUp /// Indicates what kind of pointer operation this is. and LValueOperation = /// In C syntax this is: &localv | LGetAddr /// In C syntax this is: *localv_ptr | LByrefGet /// In C syntax this is: localv = e , note == *(&localv) = e == LGetAddr; LByrefSet | LSet /// In C syntax this is: *localv_ptr = e | LByrefSet /// Indicates the kind of sequential operation, i.e. "normal" or "to a before returning b" and SequentialOpKind = /// a ; b | NormalSeq /// let res = a in b;res | ThenDoSeq /// Indicates how a value, function or member is being used at a particular usage point. and ValUseFlag = /// Indicates a use of a value represents a call to a method that may require /// a .NET 2.0 constrained call. A constrained call is only used for calls where // the object argument is a value type or generic type, and the call is to a method // on System.Object, System.ValueType, System.Enum or an interface methods. | PossibleConstrainedCall of TType /// A normal use of a value | NormalValUse /// A call to a constructor, e.g. 'inherit C()' | CtorValUsedAsSuperInit /// A call to a constructor, e.g. 'new C() = new C(3)' | CtorValUsedAsSelfInit /// A call to a base method, e.g. 'base.OnPaint(args)' | VSlotDirectCall /// Indicates the kind of an F# core library static optimization construct and StaticOptimization = | TTyconEqualsTycon of TType * TType | TTyconIsStruct of TType /// A representation of a method in an object expression. /// /// TObjExprMethod(slotsig,attribs,methTyparsOfOverridingMethod,methodParams,methodBodyExpr,m) and ObjExprMethod = | TObjExprMethod of SlotSig * Attribs * Typars * Val list list * Expr * range member x.Id = let (TObjExprMethod(slotsig,_,_,_,_,m)) = x in mkSynId m slotsig.Name /// Represents an abstract method slot, or delegate signature. /// /// TSlotSig(methodName,declaringType,declaringTypeParameters,methodTypeParameters,slotParameters,returnTy) and SlotSig = | TSlotSig of string * TType * Typars * Typars * SlotParam list list * TType option member ss.Name = let (TSlotSig(nm,_,_,_,_,_)) = ss in nm member ss.ImplementedType = let (TSlotSig(_,ty,_,_,_,_)) = ss in ty member ss.ClassTypars = let (TSlotSig(_,_,ctps,_,_,_)) = ss in ctps member ss.MethodTypars = let (TSlotSig(_,_,_,mtps,_,_)) = ss in mtps member ss.FormalParams = let (TSlotSig(_,_,_,_,ps,_)) = ss in ps member ss.FormalReturnType = let (TSlotSig(_,_,_,_,_,rt)) = ss in rt /// Represents a parameter to an abstract method slot. /// /// TSlotParam(nm,ty,inFlag,outFlag,optionalFlag,attribs) and SlotParam = | TSlotParam of string option * TType * bool (* in *) * bool (* out *) * bool (* optional *) * Attribs member x.Type = let (TSlotParam(_,ty,_,_,_,_)) = x in ty /// A type for a module-or-namespace-fragment and the actual definition of the module-or-namespace-fragment and ModuleOrNamespaceExprWithSig = | ModuleOrNamespaceExprWithSig of /// The ModuleOrNamespaceType is a binder. However it is not used in the ModuleOrNamespaceExpr: it is only referenced from the 'outside' ModuleOrNamespaceType * ModuleOrNamespaceExpr * range member x.Type = let (ModuleOrNamespaceExprWithSig(mtyp,_,_)) = x in mtyp /// The contents of a module-or-namespace-fragment definition and ModuleOrNamespaceExpr = /// Indicates the module is a module with a signature | TMAbstract of ModuleOrNamespaceExprWithSig /// Indicates the module fragment is made of several module fragments in succession | TMDefs of ModuleOrNamespaceExpr list /// Indicates the module fragment is a 'let' definition | TMDefLet of Binding * range /// Indicates the module fragment is an evaluation of expression for side-effects | TMDefDo of Expr * range /// Indicates the module fragment is a 'rec' definition of types, values and modules | TMDefRec of Tycon list * Bindings * ModuleOrNamespaceBinding list * range /// A named module-or-namespace-fragment definition and ModuleOrNamespaceBinding = | ModuleOrNamespaceBinding of /// This ModuleOrNamespace that represents the compilation of a module as a class. /// The same set of tycons etc. are bound in the ModuleOrNamespace as in the ModuleOrNamespaceExpr ModuleOrNamespace * /// This is the body of the module/namespace ModuleOrNamespaceExpr /// Represents a complete typechecked implementation file, including its typechecked signature if any. /// /// TImplFile(qualifiedNameOfFile,pragmas,implementationExpressionWithSignature,hasExplicitEntryPoint,isScript) and TypedImplFile = TImplFile of QualifiedNameOfFile * ScopedPragma list * ModuleOrNamespaceExprWithSig * bool * bool /// Represents a complete typechecked assembly, made up of multiple implementation files. /// and TypedAssembly = TAssembly of TypedImplFile list //--------------------------------------------------------------------------- // Freevars. Computed and cached by later phases (never computed type checking). Cached in terms. Not pickled. //--------------------------------------------------------------------------- /// Represents a set of free local values. and FreeLocals = Zset /// Represents a set of free type parameters and FreeTypars = Zset /// Represents a set of 'free' named type definitions. Used to collect the named type definitions referred to /// from atype or expression. and FreeTycons = Zset /// Represents a set of 'free' record field definitions. Used to collect the record field definitions referred to /// from an expression. and FreeRecdFields = Zset /// Represents a set of 'free' union cases. Used to collect the union cases referred to from an expression. and FreeUnionCases = Zset /// Represents a set of 'free' type-related elements, including named types, trait solutions, union cases and /// record fields. and FreeTyvars = { /// The summary of locally defined type definitions used in the expression. These may be made private by a signature /// and we have to check various conditions associated with that. FreeTycons: FreeTycons /// The summary of values used as trait solutions FreeTraitSolutions: FreeLocals /// The summary of type parameters used in the expression. These may not escape the enclosing generic construct /// and we have to check various conditions associated with that. FreeTypars: FreeTypars } /// Represents an amortized computation of the free variables in an expression and FreeVarsCache = FreeVars cache /// Represents the set of free variables in an an expression and FreeVars = { /// The summary of locally defined variables used in the expression. These may be hidden at let bindings etc. /// or made private by a signature or marked 'internal' or 'private', and we have to check various conditions associated with that. FreeLocals: FreeLocals /// Indicates if the expression contains a call to a protected member or a base call. /// Calls to protected members and direct calls to super classes can't escape, also code can't be inlined UsesMethodLocalConstructs: bool /// Indicates if the expression contains a call to rethrow that is not bound under a (try-)with branch. /// Rethrow may only occur in such locations. UsesUnboundRethrow: bool /// The summary of locally defined tycon representations used in the expression. These may be made private by a signature /// or marked 'internal' or 'private' and we have to check various conditions associated with that. FreeLocalTyconReprs: FreeTycons /// The summary of fields used in the expression. These may be made private by a signature /// or marked 'internal' or 'private' and we have to check various conditions associated with that. FreeRecdFields: FreeRecdFields /// The summary of union constructors used in the expression. These may be /// marked 'internal' or 'private' and we have to check various conditions associated with that. FreeUnionCases: FreeUnionCases /// See FreeTyvars above. FreeTyvars: FreeTyvars } /// Specifies the compiled representations of type and exception definitions. Basically /// just an ILTypeRef. Computed and cached by later phases. Stored in /// type and exception definitions. Not pickled. Store an optional ILType object for /// non-generic types. and [] CompiledTypeRepr = /// An AbstractIL type representation that is just the name of a type. /// /// CompiledTypeRepr.ILAsmNamed (ilTypeRef, ilBoxity, ilTypeOpt) /// /// The ilTypeOpt is present for non-generic types. It is an ILType corresponding to the first two elements of the case. This /// prevents reallocation of the ILType each time we need to generate it. For generic types, it is None. | ILAsmNamed of ILTypeRef * ILBoxity * ILType option /// An AbstractIL type representation that may include type variables // This case is only used for types defined in the F# library by their translation to ILASM types, e.g. // type ``[]``<'T> = (# "!0[]" #) // type ``[,]``<'T> = (# "!0[0 ...,0 ...]" #) // type ``[,,]``<'T> = (# "!0[0 ...,0 ...,0 ...]" #) // type byref<'T> = (# "!0&" #) // type nativeptr<'T when 'T : unmanaged> = (# "native int" #) // type ilsigptr<'T> = (# "!0*" #) | ILAsmOpen of ILType //--------------------------------------------------------------------------- // Basic properties on type definitions //--------------------------------------------------------------------------- /// Metadata on values (names of arguments etc. [] module ValReprInfo = let unnamedTopArg1 : ArgReprInfo = { Attribs=[]; Name=None } let unnamedTopArg = [unnamedTopArg1] let unitArgData : ArgReprInfo list list = [[]] let unnamedRetVal : ArgReprInfo = { Attribs = []; Name=None } let selfMetadata = unnamedTopArg let emptyValData = ValReprInfo([],[],unnamedRetVal) let InferTyparInfo (tps:Typar list) = tps |> List.map (fun tp -> TyparReprInfo(tp.Id, tp.Kind)) let InferArgReprInfo (v:Val) : ArgReprInfo = { Attribs = []; Name= Some v.Id } let InferArgReprInfos (vs:Val list list) = ValReprInfo([],List.mapSquared InferArgReprInfo vs,unnamedRetVal) let HasNoArgs (ValReprInfo(n,args,_)) = n.IsEmpty && args.IsEmpty //--------------------------------------------------------------------------- // Basic properties via functions (old style) //--------------------------------------------------------------------------- let typeOfVal (v:Val) = v.Type let typesOfVals (v:Val list) = v |> List.map (fun v -> v.Type) let nameOfVal (v:Val) = v.LogicalName let arityOfVal (v:Val) = (match v.ValReprInfo with None -> ValReprInfo.emptyValData | Some arities -> arities) //--------------------------------------------------------------------------- // Aggregate operations to help transform the components that // make up the entire compilation unit //--------------------------------------------------------------------------- let mapTImplFile f (TImplFile(fragName,pragmas,moduleExpr,hasExplicitEntryPoint,isScript)) = TImplFile(fragName, pragmas,f moduleExpr,hasExplicitEntryPoint,isScript) let fmapTImplFile f z (TImplFile(fragName,pragmas,moduleExpr,hasExplicitEntryPoint,isScript)) = let z,moduleExpr = f z moduleExpr in z,TImplFile(fragName,pragmas,moduleExpr,hasExplicitEntryPoint,isScript) let mapAccImplFile f z (TImplFile(fragName,pragmas,moduleExpr,hasExplicitEntryPoint,isScript)) = let moduleExpr,z = f z moduleExpr in TImplFile(fragName,pragmas,moduleExpr,hasExplicitEntryPoint,isScript), z let foldTImplFile f z (TImplFile(_,_,moduleExpr,_,_)) = f z moduleExpr //--------------------------------------------------------------------------- // Equality relations on locally defined things //--------------------------------------------------------------------------- let typarEq (lv1:Typar) (lv2:Typar) = (lv1.Stamp = lv2.Stamp) /// Equality on type varialbes, implemented as reference equality. This should be equivalent to using typarEq. let typarRefEq (tp1: Typar) (tp2: Typar) = (tp1 === tp2) /// Equality on value specs, implemented as reference equality let valEq (lv1: Val) (lv2: Val) = (lv1 === lv2) /// Equality on CCU references, implemented as reference equality except when unresolved let ccuEq (mv1: CcuThunk) (mv2: CcuThunk) = (mv1 === mv2) || (if mv1.IsUnresolvedReference || mv2.IsUnresolvedReference then mv1.AssemblyName = mv2.AssemblyName else mv1.Contents === mv2.Contents) /// For derefencing in the middle of a pattern let (|ValDeref|) (vr :ValRef) = vr.Deref //--------------------------------------------------------------------------- // Get information from refs //--------------------------------------------------------------------------- exception InternalUndefinedTyconItem of (string * string -> int * string) * TyconRef * string type UnionCaseRef with member x.UnionCase = let (UCRef(tcref,nm)) = x match tcref.GetUnionCaseByName nm with | Some res -> res | None -> error (InternalUndefinedTyconItem (FSComp.SR.tastUndefinedTyconItemUnionCase, tcref, nm)) member x.Attribs = x.UnionCase.Attribs member x.Range = x.UnionCase.Range member x.Index = let (UCRef(tcref,id)) = x try // REVIEW: this could be faster, e.g. by storing the index in the NameMap tcref.UnionCasesArray |> Array.findIndex (fun ucspec -> ucspec.DisplayName = id) with :? KeyNotFoundException -> error(InternalError(sprintf "union case %s not found in type %s" id tcref.LogicalName, tcref.Range)) member x.AllFieldsAsList = x.UnionCase.FieldTable.AllFieldsAsList member x.ReturnType = x.UnionCase.ReturnType member x.FieldByIndex n = x.UnionCase.FieldTable.FieldByIndex n type RecdFieldRef with member x.RecdField = let (RFRef(tcref,id)) = x match tcref.GetFieldByName id with | Some res -> res | None -> error (InternalUndefinedTyconItem (FSComp.SR.tastUndefinedTyconItemField, tcref, id)) member x.PropertyAttribs = x.RecdField.PropertyAttribs member x.Range = x.RecdField.Range member x.Index = let (RFRef(tcref,id)) = x try // REVIEW: this could be faster, e.g. by storing the index in the NameMap tcref.AllFieldsArray |> Array.findIndex (fun rfspec -> rfspec.Name = id) with :? KeyNotFoundException -> error(InternalError(sprintf "field %s not found in type %s" id tcref.LogicalName, tcref.Range)) //-------------------------------------------------------------------------- // Make references to TAST items //-------------------------------------------------------------------------- let mkRecdFieldRef tcref f = RFRef(tcref, f) let mkUnionCaseRef tcref c = UCRef(tcref, c) let ERefLocal x : EntityRef = { binding=x; nlr=Unchecked.defaultof<_> } let ERefNonLocal x : EntityRef = { binding=Unchecked.defaultof<_>; nlr=x } let ERefNonLocalPreResolved x xref : EntityRef = { binding=x; nlr=xref } let (|ERefLocal|ERefNonLocal|) (x: EntityRef) = match box x.nlr with | null -> ERefLocal x.binding | _ -> ERefNonLocal x.nlr //-------------------------------------------------------------------------- // Construct local references //-------------------------------------------------------------------------- let mkLocalTyconRef x = ERefLocal x let mkNonLocalEntityRef ccu mp = NonLocalEntityRef(ccu,mp) let mkNestedNonLocalEntityRef (nleref:NonLocalEntityRef) id = mkNonLocalEntityRef nleref.Ccu (Array.append nleref.Path [| id |]) let mkNonLocalTyconRef nleref id = ERefNonLocal (mkNestedNonLocalEntityRef nleref id) let mkNonLocalTyconRefPreResolved x nleref id = ERefNonLocalPreResolved x (mkNestedNonLocalEntityRef nleref id) let mkNestedUnionCaseRef tcref (uc: UnionCase) = mkUnionCaseRef tcref uc.Id.idText let mkNestedRecdFieldRef tcref (rf: RecdField) = mkRecdFieldRef tcref rf.Name type EntityRef with member tcref.UnionCasesAsRefList = tcref.UnionCasesAsList |> List.map (mkNestedUnionCaseRef tcref) member tcref.TrueInstanceFieldsAsRefList = tcref.TrueInstanceFieldsAsList |> List.map (mkNestedRecdFieldRef tcref) member tcref.AllFieldAsRefList = tcref.AllFieldsAsList |> List.map (mkNestedRecdFieldRef tcref) member tcref.MkNestedTyconRef (x:Entity) : TyconRef = match tcref with | ERefLocal _ -> mkLocalTyconRef x | ERefNonLocal nlr -> mkNonLocalTyconRefPreResolved x nlr x.LogicalName member tcref.MkNestedRecdFieldRef tycon (rf:Ident) = mkRecdFieldRef (tcref.MkNestedTyconRef tycon) rf.idText /// Make a reference to a union case for type in a module or namespace let mkModuleUnionCaseRef (modref:ModuleOrNamespaceRef) tycon uc = mkNestedUnionCaseRef (modref.MkNestedTyconRef tycon) uc let VRefLocal x : ValRef = { binding=x; nlr=Unchecked.defaultof<_> } let VRefNonLocal x : ValRef = { binding=Unchecked.defaultof<_>; nlr=x } let VRefNonLocalPreResolved x xref : ValRef = { binding=x; nlr=xref } let (|VRefLocal|VRefNonLocal|) (x: ValRef) = match box x.nlr with | null -> VRefLocal x.binding | _ -> VRefNonLocal x.nlr let mkNonLocalValRef mp id = VRefNonLocal {EnclosingEntity = ERefNonLocal mp; ItemKey=id } let mkNonLocalValRefPreResolved x mp id = VRefNonLocalPreResolved x {EnclosingEntity = ERefNonLocal mp; ItemKey=id } let ccuOfValRef vref = match vref with | VRefLocal _ -> None | VRefNonLocal nlr -> Some nlr.Ccu let ccuOfTyconRef eref = match eref with | ERefLocal _ -> None | ERefNonLocal nlr -> Some nlr.Ccu //-------------------------------------------------------------------------- // Type parameters and inference unknowns //------------------------------------------------------------------------- let mkTyparTy (tp:Typar) = match tp.Kind with | TyparKind.Type -> tp.AsType | TyparKind.Measure -> TType_measure (MeasureVar tp) let copyTypar (tp: Typar) = let x = tp.Data in Typar.New { x with typar_stamp=newStamp() } let copyTypars tps = List.map copyTypar tps //-------------------------------------------------------------------------- // Inference variables //-------------------------------------------------------------------------- let tryShortcutSolvedUnitPar canShortcut (r:Typar) = if r.Kind = TyparKind.Type then failwith "tryShortcutSolvedUnitPar: kind=type"; match r.Solution with | Some (TType_measure unt) -> if canShortcut then match unt with | MeasureVar r2 -> match r2.Solution with | None -> () | Some _ as soln -> r.Data.typar_solution <- soln | _ -> () unt | _ -> failwith "tryShortcutSolvedUnitPar: unsolved" let rec stripUnitEqnsAux canShortcut unt = match unt with | MeasureVar r when r.IsSolved -> stripUnitEqnsAux canShortcut (tryShortcutSolvedUnitPar canShortcut r) | _ -> unt let rec stripTyparEqnsAux canShortcut ty = match ty with | TType_var r -> match r.Solution with | Some soln -> if canShortcut then match soln with // We avoid shortcutting when there are additional constraints on the type variable we're trying to cut out // This is only because IterType likes to walk _all_ the constraints _everywhere_ in a type, including // those attached to _solved_ type variables. In an ideal world this would never be needed - see the notes // on IterType. | TType_var r2 when r2.Constraints.IsEmpty -> match r2.Solution with | None -> () | Some _ as soln2 -> r.Data.typar_solution <- soln2 | _ -> () stripTyparEqnsAux canShortcut soln | None -> ty | TType_measure unt -> TType_measure (stripUnitEqnsAux canShortcut unt) | _ -> ty let stripTyparEqns ty = stripTyparEqnsAux false ty let stripUnitEqns unt = stripUnitEqnsAux false unt //--------------------------------------------------------------------------- // These make local/non-local references to values according to whether // the item is globally stable ("published") or not. //--------------------------------------------------------------------------- let mkLocalValRef (v:Val) = VRefLocal v let mkLocalModRef (v:ModuleOrNamespace) = ERefLocal v let mkLocalEntityRef (v:Entity) = ERefLocal v let mkNonLocalCcuRootEntityRef ccu (x:Entity) = mkNonLocalTyconRefPreResolved x (mkNonLocalEntityRef ccu [| |]) x.LogicalName let mkNestedValRef (cref:EntityRef) (v:Val) : ValRef = match cref with | ERefLocal _ -> mkLocalValRef v | ERefNonLocal nlr -> mkNonLocalValRefPreResolved v nlr v.LinkageFullKey /// From Ref_private to Ref_nonlocal when exporting data. let rescopePubPathToParent viewedCcu (PubPath(p)) = NonLocalEntityRef(viewedCcu, p.[0..p.Length-2]) /// From Ref_private to Ref_nonlocal when exporting data. let rescopePubPath viewedCcu (PubPath(p)) = NonLocalEntityRef(viewedCcu,p) //--------------------------------------------------------------------------- // Equality between TAST items. //--------------------------------------------------------------------------- let valRefInThisAssembly compilingFslib (x: ValRef) = match x with | VRefLocal _ -> true | VRefNonLocal _ -> compilingFslib let tyconRefUsesLocalXmlDoc compilingFslib (x: TyconRef) = match x with | ERefLocal _ -> true | ERefNonLocal _ -> #if EXTENSIONTYPING match x.TypeReprInfo with | TProvidedTypeExtensionPoint _ -> true | _ -> #endif compilingFslib let entityRefInThisAssembly compilingFslib (x: EntityRef) = match x with | ERefLocal _ -> true | ERefNonLocal _ -> compilingFslib let arrayPathEq (y1:string[]) (y2:string[]) = let len1 = y1.Length let len2 = y2.Length (len1 = len2) && (let rec loop i = (i >= len1) || (y1.[i] = y2.[i] && loop (i+1)) loop 0) let nonLocalRefEq (NonLocalEntityRef(x1,y1) as smr1) (NonLocalEntityRef(x2,y2) as smr2) = smr1 === smr2 || (ccuEq x1 x2 && arrayPathEq y1 y2) /// This predicate tests if non-local resolution paths are definitely known to resolve /// to different entities. All references with different named paths always resolve to /// different entities. Two references with the same named paths may resolve to the same /// entities even if they reference through different CCUs, because one reference /// may be forwarded to another via a .NET TypeForwarder. let nonLocalRefDefinitelyNotEq (NonLocalEntityRef(_,y1)) (NonLocalEntityRef(_,y2)) = not (arrayPathEq y1 y2) let pubPathEq (PubPath path1) (PubPath path2) = arrayPathEq path1 path2 let fslibRefEq (nlr1:NonLocalEntityRef) (PubPath(path2)) = arrayPathEq nlr1.Path path2 // Compare two EntityRef's for equality when compiling fslib (FSharp.Core.dll) // // Compiler-internal references to items in fslib are Ref_nonlocals even when compiling fslib. // This breaks certain invariants that hold elsewhere, because they dereference to point to // Entity's from signatures rather than Entity's from implementations. This means backup, alternative // equality comparison techniques are needed when compiling fslib itself. let fslibEntityRefEq fslibCcu (eref1:EntityRef) (eref2:EntityRef) = match eref1,eref2 with | (ERefNonLocal nlr1, ERefLocal x2) | (ERefLocal x2, ERefNonLocal nlr1) -> ccuEq nlr1.Ccu fslibCcu && match x2.PublicPath with | Some pp2 -> fslibRefEq nlr1 pp2 | None -> false | (ERefLocal e1, ERefLocal e2) -> match e1.PublicPath , e2.PublicPath with | Some pp1, Some pp2 -> pubPathEq pp1 pp2 | _ -> false | _ -> false // Compare two ValRef's for equality when compiling fslib (FSharp.Core.dll) // // Compiler-internal references to items in fslib are Ref_nonlocals even when compiling fslib. // This breaks certain invariants that hold elsewhere, because they dereference to point to // Val's from signatures rather than Val's from implementations. This means backup, alternative // equality comparison techniques are needed when compiling fslib itself. let fslibValRefEq fslibCcu vref1 vref2 = match vref1, vref2 with | (VRefNonLocal nlr1, VRefLocal x2) | (VRefLocal x2, VRefNonLocal nlr1) -> ccuEq nlr1.Ccu fslibCcu && match x2.PublicPath with | Some (ValPubPath(pp2,nm2)) -> // Note: this next line is just comparing the values by name, and not even the partial linkage data // This relies on the fact that the compiler doesn't use any references to // entities in fslib that are overloaded, or, if they are overloaded, then value identity // is not significant nlr1.ItemKey.PartialKey = nm2.PartialKey && fslibRefEq nlr1.EnclosingEntity.nlr pp2 | None -> false // Note: I suspect this private-to-private reference comparison is not needed | (VRefLocal e1, VRefLocal e2) -> match e1.PublicPath, e2.PublicPath with | Some (ValPubPath(pp1,nm1)), Some (ValPubPath(pp2,nm2)) -> pubPathEq pp1 pp2 && (nm1 = nm2) | _ -> false | _ -> false /// Primitive routine to compare two EntityRef's for equality /// This takes into account the possibility that they may have type forwarders let primEntityRefEq compilingFslib fslibCcu (x : EntityRef) (y : EntityRef) = x === y || match x.IsResolved,y.IsResolved with | true, true when not compilingFslib -> x.ResolvedTarget === y.ResolvedTarget | _ -> match x.IsLocalRef,y.IsLocalRef with | false, false when (// Two tcrefs with identical paths are always equal nonLocalRefEq x.nlr y.nlr || // The tcrefs may have forwarders. If they may possibly be equal then resolve them to get their canonical references // and compare those using pointer equality. (not (nonLocalRefDefinitelyNotEq x.nlr y.nlr) && x.Deref === y.Deref)) -> true | _ -> compilingFslib && fslibEntityRefEq fslibCcu x y /// Primitive routine to compare two UnionCaseRef's for equality let primUnionCaseRefEq compilingFslib fslibCcu (UCRef(tcr1,c1) as uc1) (UCRef(tcr2,c2) as uc2) = uc1 === uc2 || (primEntityRefEq compilingFslib fslibCcu tcr1 tcr2 && c1 = c2) /// Primitive routine to compare two ValRef's for equality. On the whol value identity is not particularly /// significant in F#. However it is significant for /// (a) Active Patterns /// (b) detecting uses of "special known values" from FSharp.Core.dll, such as 'seq' /// and quotation splicing /// /// Note this routine doesn't take type forwarding into account let primValRefEq compilingFslib fslibCcu (x : ValRef) (y : ValRef) = x === y || match x.IsResolved,y.IsResolved with | true, true when x.ResolvedTarget === y.ResolvedTarget -> true | _ -> match x.IsLocalRef,y.IsLocalRef with | true,true when valEq x.PrivateTarget y.PrivateTarget -> true | _ -> (// Use TryDeref to guard against the platforms/times when certain F# language features aren't available, // e.g. CompactFramework doesn't have support for quotations. let v1 = x.TryDeref let v2 = y.TryDeref v1.IsSome && v2.IsSome && v1.Value === v2.Value) || (if compilingFslib then fslibValRefEq fslibCcu x y else false) //--------------------------------------------------------------------------- // pubpath/cpath mess //--------------------------------------------------------------------------- let stringOfAccess (TAccess paths) = String.concat ";" (List.map mangledTextOfCompPath paths) let demangledPathOfCompPath (CompPath(_,path)) = path |> List.map (fun (nm,k) -> Entity.DemangleEntityName nm k) let fullCompPathOfModuleOrNamespace (m:ModuleOrNamespace) = let (CompPath(scoref,cpath)) = m.CompilationPath CompPath(scoref,cpath@[(m.LogicalName, m.ModuleOrNamespaceType.ModuleOrNamespaceKind)]) // Can cpath2 be accessed given a right to access cpath1. That is, is cpath2 a nested type or namespace of cpath1. Note order of arguments. let canAccessCompPathFrom (CompPath(scoref1,cpath1)) (CompPath(scoref2,cpath2)) = let rec loop p1 p2 = match p1,p2 with | (a1,k1)::rest1, (a2,k2)::rest2 -> (a1=a2) && (k1=k2) && loop rest1 rest2 | [],_ -> true | _ -> false // cpath1 is longer loop cpath1 cpath2 && (scoref1 = scoref2) let canAccessFromOneOf cpaths cpathTest = cpaths |> List.exists (fun cpath -> canAccessCompPathFrom cpath cpathTest) let canAccessFrom (TAccess x) cpath = x |> List.forall (fun cpath1 -> canAccessCompPathFrom cpath1 cpath) let canAccessFromEverywhere (TAccess x) = x.IsEmpty let canAccessFromSomewhere (TAccess _) = true let isLessAccessible (TAccess aa) (TAccess bb) = not (aa |> List.forall(fun a -> bb |> List.exists (fun b -> canAccessCompPathFrom a b))) /// Given (newPath,oldPath) replace oldPath by newPath in the TAccess. let accessSubstPaths (newPath,oldPath) (TAccess paths) = let subst cpath = if cpath=oldPath then newPath else cpath TAccess (List.map subst paths) let compPathOfCcu (ccu:CcuThunk) = CompPath(ccu.ILScopeRef,[]) let taccessPublic = TAccess [] let taccessPrivate accessPath = TAccess [accessPath] let taccessInternal = TAccess [CompPath(ILScopeRef.Local,[])] let combineAccess (TAccess a1) (TAccess a2) = TAccess(a1@a2) //--------------------------------------------------------------------------- // Construct TAST nodes //--------------------------------------------------------------------------- let NewFreeVarsCache() = newCache () let MakeUnionCasesTable ucs = { CasesByIndex = Array.ofList ucs CasesByName = NameMap.ofKeyedList (fun uc -> uc.DisplayName) ucs } let MakeRecdFieldsTable ucs = { FieldsByIndex = Array.ofList ucs FieldsByName = ucs |> NameMap.ofKeyedList (fun rfld -> rfld.Name) } let MakeUnionCases ucs = { CasesTable=MakeUnionCasesTable ucs CompiledRepresentation=newCache() } let MakeUnionRepr ucs = TFiniteUnionRepr (MakeUnionCases ucs) let NewTypar (kind,rigid,Typar(id,staticReq,isCompGen),isFromError,dynamicReq,attribs,eqDep,compDep) = Typar.New { typar_id = id typar_il_name = None typar_stamp = newStamp() typar_flags= TyparFlags(kind,rigid,isFromError,isCompGen,staticReq,dynamicReq,eqDep,compDep) typar_attribs= attribs typar_solution = None typar_constraints=[] typar_xmldoc = XmlDoc.Empty } let NewRigidTypar nm m = NewTypar (TyparKind.Type,TyparRigidity.Rigid,Typar(mkSynId m nm,NoStaticReq,true),false,TyparDynamicReq.Yes,[],false,false) let NewUnionCase id nm tys rty attribs docOption access = { Id=id CompiledName=nm XmlDoc=docOption XmlDocSig="" Accessibility=access FieldTable = MakeRecdFieldsTable tys ReturnType = rty Attribs=attribs } let NewModuleOrNamespaceType mkind tycons vals = ModuleOrNamespaceType(mkind, QueueList.ofList vals, QueueList.ofList tycons) let NewEmptyModuleOrNamespaceType mkind = NewModuleOrNamespaceType mkind [] [] let NewExn cpath (id:Ident) access repr attribs doc = Tycon.New "exnc" { entity_stamp=newStamp() entity_attribs=attribs entity_kind=TyparKind.Type entity_logical_name=id.idText entity_compiled_name=None entity_range=id.idRange entity_exn_info= repr entity_tycon_tcaug=TyconAugmentation.Create() entity_xmldoc=doc entity_xmldocsig="" entity_pubpath=cpath |> Option.map (publicPathOfCompPath id) entity_accessiblity=access entity_tycon_repr_accessibility=access entity_modul_contents = notlazy (NewEmptyModuleOrNamespaceType ModuleOrType) entity_cpath= cpath entity_typars=LazyWithContext.NotLazy [] entity_tycon_abbrev = None entity_tycon_repr = TNoRepr entity_flags=EntityFlags(usesPrefixDisplay=false, isModuleOrNamespace=false, preEstablishedHasDefaultCtor=false, hasSelfReferentialCtor=false) entity_il_repr_cache= newCache() } let NewRecdField stat konst id ty isMutable isVolatile pattribs fattribs docOption access secret = { rfield_mutable=isMutable rfield_pattribs=pattribs rfield_fattribs=fattribs rfield_type=ty rfield_static=stat rfield_volatile=isVolatile rfield_const=konst rfield_access = access rfield_secret = secret rfield_xmldoc = docOption rfield_xmldocsig = "" rfield_id=id } let NewTycon (cpath, nm, m, access, reprAccess, kind, typars, docOption, usesPrefixDisplay, preEstablishedHasDefaultCtor, hasSelfReferentialCtor, mtyp) = let stamp = newStamp() Tycon.New "tycon" { entity_stamp=stamp entity_logical_name=nm entity_compiled_name=None entity_kind=kind entity_range=m entity_flags=EntityFlags(usesPrefixDisplay=usesPrefixDisplay, isModuleOrNamespace=false,preEstablishedHasDefaultCtor=preEstablishedHasDefaultCtor, hasSelfReferentialCtor=hasSelfReferentialCtor) entity_attribs=[] // fixed up after entity_typars=typars entity_tycon_abbrev = None entity_tycon_repr = TNoRepr entity_tycon_repr_accessibility = reprAccess entity_exn_info=TExnNone entity_tycon_tcaug=TyconAugmentation.Create() entity_modul_contents = mtyp entity_accessiblity=access entity_xmldoc = docOption entity_xmldocsig="" entity_pubpath=cpath |> Option.map (publicPathOfCompPath (mkSynId m nm)) entity_cpath = cpath entity_il_repr_cache = newCache() } let NewILTycon nlpath (nm,m) tps (scoref:ILScopeRef, enc, tdef:ILTypeDef) mtyp = // NOTE: hasSelfReferentialCtor=false is an assumption about mscorlib let hasSelfReferentialCtor = tdef.IsClass && (not scoref.IsAssemblyRef && scoref.AssemblyRef.Name = "mscorlib") let tycon = NewTycon(nlpath, nm, m, taccessPublic, taccessPublic, TyparKind.Type, tps, XmlDoc.Empty, true, false, hasSelfReferentialCtor, mtyp) tycon.Data.entity_tycon_repr <- TILObjModelRepr (scoref,enc,tdef) tycon.TypeContents.tcaug_closed <- true tycon exception Duplicate of string * string * range exception NameClash of string * string * string * range * string * string * range exception FullAbstraction of string * range let NewModuleOrNamespace cpath access (id:Ident) xml attribs mtype = Construct.NewModuleOrNamespace cpath access id xml attribs mtype let NewVal (logicalName:string,m:range,compiledName,ty,isMutable,isCompGen,arity,access,recValInfo,specialRepr,baseOrThis,attribs,inlineInfo,doc,isModuleOrMemberBinding,isExtensionMember,isIncrClassSpecialMember,isTyFunc,allowTypeInst,isGeneratedEventVal,konst,actualParent) : Val = let stamp = newStamp() #if DEBUG if !verboseStamps then dprintf "NewVal, %s#%d\n" logicalName stamp #endif Val.New { val_stamp = stamp val_logical_name=logicalName val_compiled_name= (match compiledName with Some v when v <> logicalName -> compiledName | _ -> None) val_range=m val_defn_range=m val_defn=None val_repr_info= arity val_actual_parent= actualParent val_flags = ValFlags(recValInfo,baseOrThis,isCompGen,inlineInfo,isMutable,isModuleOrMemberBinding,isExtensionMember,isIncrClassSpecialMember,isTyFunc,allowTypeInst,isGeneratedEventVal) val_const= konst val_access=access val_member_info=specialRepr val_attribs=attribs val_type = ty val_xmldoc = doc val_xmldocsig = ""} let NewCcuContents sref m nm mty = NewModuleOrNamespace (Some(CompPath(sref,[]))) taccessPublic (ident(nm,m)) XmlDoc.Empty [] (notlazy mty) //-------------------------------------------------------------------------- // Cloning and adjusting //-------------------------------------------------------------------------- /// Create a tycon based on an existing one using the function 'f'. /// We require that we be given the new parent for the new tycon. /// We pass the new tycon to 'f' in case it needs to reparent the /// contents of the tycon. let NewModifiedTycon f (orig:Tycon) = let stamp = newStamp() let data = orig.Data #if DEBUG if !verboseStamps then dprintf "NewModifiedTycon, %s#%d, based on %s#%d\n" orig.LogicalName stamp orig.LogicalName data.entity_stamp #endif Tycon.New "NewModifiedTycon" (f { data with entity_stamp=stamp; }) /// Create a module Tycon based on an existing one using the function 'f'. /// We require that we be given the parent for the new module. /// We pass the new module to 'f' in case it needs to reparent the /// contents of the module. let NewModifiedModuleOrNamespace f orig = orig |> NewModifiedTycon (fun d -> { d with entity_modul_contents = notlazy (f (d.entity_modul_contents.Force())) }) /// Create a Val based on an existing one using the function 'f'. /// We require that we be given the parent for the new Val. let NewModifiedVal f (orig:Val) = let data = orig.Data let stamp = newStamp() #if DEBUG if !verboseStamps then dprintf "NewModifiedVal, stamp #%d, based on stamp #%d\n" stamp data.val_stamp #endif let data' = f { data with val_stamp=stamp } Val.New data' let NewClonedModuleOrNamespace orig = NewModifiedModuleOrNamespace (fun mty -> mty) orig let NewClonedTycon orig = NewModifiedTycon (fun d -> d) orig //------------------------------------------------------------------------------ /// Combine two maps where the given function reconciles entries that have the same key let private combineMaps f m1 m2 = Map.foldBack (fun k v acc -> Map.add k (if Map.containsKey k m2 then f [v;Map.find k m2] else f [v]) acc) m1 (Map.foldBack (fun k v acc -> if Map.containsKey k m1 then acc else Map.add k (f [v]) acc) m2 Map.empty) let private combineMultiMaps f (m1: MultiMap<_,_>) (m2: MultiMap<_,_>) = Map.foldBack (fun k v acc -> List.foldBack (MultiMap.add k) (if Map.containsKey k m2 then f [v;Map.find k m2] else f [v]) acc) m1 (Map.foldBack (fun k v acc -> if Map.containsKey k m1 then acc else List.foldBack (MultiMap.add k) (f [v]) acc) m2 MultiMap.empty) /// Combine module types when multiple namespace fragments contribute to the /// same namespace, making new module specs as we go. let rec private combineModuleOrNamespaceTypes path m (mty1:ModuleOrNamespaceType) (mty2:ModuleOrNamespaceType) = match mty1.ModuleOrNamespaceKind,mty2.ModuleOrNamespaceKind with | Namespace,Namespace -> let kind = mty1.ModuleOrNamespaceKind // REVIEW: this is not preserving order as we merge namespace declaration groups let entities = (mty1.AllEntitiesByLogicalMangledName,mty2.AllEntitiesByLogicalMangledName) ||> combineMaps (combineEntityList path) let vals = QueueList.append mty1.AllValsAndMembers mty2.AllValsAndMembers new ModuleOrNamespaceType(kind, vals, QueueList.ofList (NameMap.range entities)) | Namespace, _ | _,Namespace -> error(Error(FSComp.SR.tastNamespaceAndModuleWithSameNameInAssembly(textOfPath path),m)) | _-> error(Error(FSComp.SR.tastTwoModulesWithSameNameInAssembly(textOfPath path),m)) and private combineEntityList path l = match l with | h :: t -> List.fold (combineEntites path) h t | _ -> failwith "combineEntityList" and private combineEntites path (entity1:Entity) (entity2:Entity) = match entity1.IsModuleOrNamespace, entity2.IsModuleOrNamespace with | true,true -> entity1 |> NewModifiedTycon (fun data1 -> { data1 with entity_xmldoc = XmlDoc.Merge entity1.XmlDoc entity2.XmlDoc entity_attribs = entity1.Attribs @ entity2.Attribs entity_modul_contents=lazy (combineModuleOrNamespaceTypes (path@[entity2.DemangledModuleOrNamespaceName]) entity2.Range entity1.ModuleOrNamespaceType entity2.ModuleOrNamespaceType); }) | false,false -> error(Error(FSComp.SR.tastDuplicateTypeDefinitionInAssembly(entity2.LogicalName, textOfPath path),entity2.Range)) | _,_ -> error(Error(FSComp.SR.tastConflictingModuleAndTypeDefinitionInAssembly(entity2.LogicalName, textOfPath path),entity2.Range)) and combineModuleOrNamespaceTypeList path m l = match l with | h :: t -> List.fold (combineModuleOrNamespaceTypes path m) h t | _ -> failwith "combineModuleOrNamespaceTypeList" //-------------------------------------------------------------------------- // Resource format for pickled data //-------------------------------------------------------------------------- let FSharpOptimizationDataResourceName = "FSharpOptimizationData" let FSharpSignatureDataResourceName = "FSharpSignatureData" fsharp-3.0.34/src/fsharp/creflect.fsi0000775000175000017500000000273512260314606016446 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.QuotationTranslator open Microsoft.FSharp.Compiler // Convert quoted TAST data structures to structures ready for pickling open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops [] type QuotationTranslationEnv = static member Empty : QuotationTranslationEnv member BindTypars : Typars -> QuotationTranslationEnv exception InvalidQuotedTerm of exn exception IgnoringPartOfQuotedTermWarning of string * Range.range [] type IsReflectedDefinition = | Yes | No val ConvExprPublic : Env.TcGlobals * Import.ImportMap * CcuThunk * IsReflectedDefinition -> QuotationTranslationEnv -> Expr -> TType list * Expr list * QuotationPickler.ExprData val ConvMethodBase : Env.TcGlobals * Import.ImportMap * CcuThunk -> QuotationTranslationEnv -> string * Val -> QuotationPickler.MethodBaseData fsharp-3.0.34/src/fsharp/ccuthunk.fs0000775000175000017500000000154312260314606016326 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.Lib fsharp-3.0.34/src/fsharp/PrettyNaming.fs0000775000175000017500000004751012260314606017127 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Some general F# utilities for mangling / unmangling / manipulating names. //-------------------------------------------------------------------------- /// Anything to do with special names of identifiers and other lexical rules module internal Microsoft.FSharp.Compiler.PrettyNaming open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library /// Anything to do with special names of identifiers and other lexical rules open System.Globalization open System.Collections.Generic //------------------------------------------------------------------------ // Operator name compilation //----------------------------------------------------------------------- let parenGet = ".()" let parenSet = ".()<-" let qmark = "?" let qmarkSet = "?<-" let private opNameTable = [ ("[]", "op_Nil"); ("::", "op_ColonColon"); ("+", "op_Addition"); ("~%", "op_Splice"); ("~%%", "op_SpliceUntyped"); ("~++", "op_Increment"); ("~--", "op_Decrement"); ("-", "op_Subtraction"); ("*", "op_Multiply"); ("**", "op_Exponentiation"); ("/", "op_Division"); ("@", "op_Append"); ("^", "op_Concatenate"); ("%", "op_Modulus"); ("&&&", "op_BitwiseAnd"); ("|||", "op_BitwiseOr"); ("^^^", "op_ExclusiveOr"); ("<<<", "op_LeftShift"); ("~~~", "op_LogicalNot"); (">>>", "op_RightShift"); ("~+", "op_UnaryPlus"); ("~-", "op_UnaryNegation"); ("~&", "op_AddressOf"); ("~&&", "op_IntegerAddressOf"); ("&&", "op_BooleanAnd"); ("||", "op_BooleanOr"); ("<=", "op_LessThanOrEqual"); ("=","op_Equality"); ("<>","op_Inequality"); (">=", "op_GreaterThanOrEqual"); ("<", "op_LessThan"); (">", "op_GreaterThan"); ("|>", "op_PipeRight"); ("||>", "op_PipeRight2"); ("|||>", "op_PipeRight3"); ("<|", "op_PipeLeft"); ("<||", "op_PipeLeft2"); ("<|||", "op_PipeLeft3"); ("!", "op_Dereference"); (">>", "op_ComposeRight"); ("<<", "op_ComposeLeft"); ("<< >>", "op_TypedQuotationUnicode"); ("<<| |>>", "op_ChevronsBar"); ("<@ @>", "op_Quotation"); ("<@@ @@>", "op_QuotationUntyped"); ("+=", "op_AdditionAssignment"); ("-=", "op_SubtractionAssignment"); ("*=", "op_MultiplyAssignment"); ("/=", "op_DivisionAssignment"); ("..", "op_Range"); (".. ..", "op_RangeStep"); ("?", "op_Dynamic"); ("?<-", "op_DynamicAssignment"); (parenGet, "op_ArrayLookup"); (parenSet, "op_ArrayAssign"); ] let private opCharTranslateTable = [ ( '>', "Greater"); ( '<', "Less"); ( '+', "Plus"); ( '-', "Minus"); ( '*', "Multiply"); ( '=', "Equals"); ( '~', "Twiddle"); ( '%', "Percent"); ( '.', "Dot"); ( '$', "Dollar"); ( '&', "Amp"); ( '|', "Bar"); ( '@', "At"); ( '#', "Hash"); ( '^', "Hat"); ( '!', "Bang"); ( '?', "Qmark"); ( '/', "Divide"); ( ':', "Colon"); ( '(', "LParen"); ( ',', "Comma"); ( ')', "RParen"); ( ' ', "Space"); ( '[', "LBrack"); ( ']', "RBrack"); ] let private opCharDict = let t = new Dictionary<_,_>() for (c,_) in opCharTranslateTable do t.Add(c,1) t let IsOpName (n:string) = let rec loop i = (i < n.Length && (opCharDict.ContainsKey(n.[i]) || loop (i+1))) loop 0 let CompileOpName = let t = Map.ofList opNameTable let t2 = Map.ofList opCharTranslateTable fun n -> match t.TryFind(n) with | Some(x) -> x | None -> if IsOpName n then let mutable r = [] for i = 0 to String.length n - 1 do let c = n.[i] let c2 = match t2.TryFind(c) with Some(x) -> x | None -> string c r <- c2 :: r "op_"^(String.concat "" (List.rev r)) else n let IsMangledOpName (n:string) = n.Length >= 3 && n.Substring(0,3) = "op_" let DecompileOpName = let t = new Dictionary() for (x,y) in opNameTable do t.Add(y,x) fun n -> let mutable res = Unchecked.defaultof<_> if t.TryGetValue(n,&res) then res else if n.StartsWith("op_",System.StringComparison.Ordinal) then let rec loop (remaining:string) = let l = remaining.Length if l = 0 then Some(remaining) else let choice = opCharTranslateTable |> List.tryPick (fun (a,b) -> let bl = b.Length if bl <= l && remaining.Substring(0,bl) = b then Some(string a, remaining.Substring(bl,l - bl)) else None) match choice with | Some (a,remaining2) -> match loop remaining2 with | None -> None | Some a2 -> Some(a^a2) | None -> None (* giveup *) match loop (n.Substring(3,n.Length - 3)) with | Some res -> res | None -> n else n let opNameCons = CompileOpName "::" let opNameNil = CompileOpName "[]" let opNameEquals = CompileOpName "=" let opNameEqualsNullable = CompileOpName "=?" let opNameNullableEquals = CompileOpName "?=" let opNameNullableEqualsNullable = CompileOpName "?=?" /// The characters that are allowed to be the first character of an identifier. let IsIdentifierFirstCharacter c = let cat = System.Char.GetUnicodeCategory(c) c='_' || ( cat = UnicodeCategory.UppercaseLetter // Letters || cat = UnicodeCategory.LowercaseLetter || cat = UnicodeCategory.TitlecaseLetter || cat = UnicodeCategory.ModifierLetter || cat = UnicodeCategory.OtherLetter || cat = UnicodeCategory.LetterNumber ) /// The characters that are allowed to be in an identifier. let IsIdentifierPartCharacter c = let cat = System.Char.GetUnicodeCategory(c) ( cat = UnicodeCategory.UppercaseLetter // Letters || cat = UnicodeCategory.LowercaseLetter || cat = UnicodeCategory.TitlecaseLetter || cat = UnicodeCategory.ModifierLetter || cat = UnicodeCategory.OtherLetter || cat = UnicodeCategory.LetterNumber || cat = UnicodeCategory.DecimalDigitNumber // Numbers || cat = UnicodeCategory.ConnectorPunctuation // Connectors || cat = UnicodeCategory.NonSpacingMark // Combiners || cat = UnicodeCategory.SpacingCombiningMark || c = '\'' // Tick ) /// Is this character a part of a long identifier let IsLongIdentifierPartCharacter c = (IsIdentifierPartCharacter c) || (c = '.') let IsValidPrefixOperatorUse s = match s with | "?+" | "?-" | "+" | "-" | "+." | "-." | "%" | "%%" | "&" | "&&" -> true | _ -> s.[0] = '!' || (s.[0] = '~' && String.forall (fun c -> c = s.[0]) s) let IsValidPrefixOperatorDefinitionName s = match s with | "~?+" | "~?-" | "~+" | "~-" | "~+." | "~-." | "~%" | "~%%" | "~&" | "~&&" -> true | _ -> (s.[0] = '!' && s <> "!=") || (s.[0] = '~' && String.forall (fun c -> c = s.[0]) s) let IsPrefixOperator s = let s = DecompileOpName s match s with | "~?+" | "~?-" | "~+" | "~-" | "~+." | "~-." | "~%" | "~%%" | "~&" | "~&&" -> true | _ -> (s.[0] = '!' && s <> "!=") || (s.[0] = '~' && String.forall (fun c -> c = s.[0]) s) let IsTernaryOperator s = DecompileOpName s = "?<-" let IsInfixOperator s (* where s is assumed to be a compiled name *) = // Certain operator idents are parsed as infix expression operators. // The parsing as infix operators is hardwired in the grammar [see declExpr productions] // where certain operator tokens are accepted in infix forms, i.e. . // The lexer defines the strings that lead to those tokens. //------ // This function recognises these "infix operator" names. let s = DecompileOpName s let skipIgnoredChars = s.TrimStart('.', '?') let afterSkipStartsWith prefix = skipIgnoredChars.StartsWith(prefix,System.StringComparison.Ordinal) let afterSkipStarts prefixes = List.exists afterSkipStartsWith prefixes // The following conditions follow the declExpr infix clauses. The test corresponds to the lexer definition for the token. s = ":=" || // COLON_EQUALS afterSkipStartsWith "|" || // BAR_BAR, INFIX_BAR_OP (* REVIEW: OR is deadcode, now called BAR? *) // OR afterSkipStartsWith "&" || // AMP, AMP_AMP, INFIX_AMP_OP afterSkipStarts ["=";"!=";"<";">";"$"] || // EQUALS, INFIX_COMPARE_OP, LESS, GREATER s = "$" || // DOLLAR afterSkipStarts ["@";"^"] || // INFIX_AT_HAT_OP s = "::" || // COLON_COLON afterSkipStarts ["+";"-"] || // PLUS_MINUS_OP, MINUS afterSkipStarts ["*";"/";"%"] || // PERCENT_OP, STAR, INFIX_STAR_DIV_MOD_OP s = "**" // INFIX_STAR_STAR_OP let (|Control|Equality|Relational|Indexer|FixedTypes|Other|) opName = if (opName = "&" || opName = "or" || opName = "&&" || opName = "||") then Control elif (opName = "<>" || opName = "=" ) then Equality elif (opName = "<" || opName = ">" || opName = "<=" || opName = ">=") then Relational elif (opName = "<<" || opName = "<|" || opName = "<||" || opName = "<||" || opName = "|>" || opName = "||>" || opName = "|||>" || opName = ">>" || opName = "^" || opName = ":=" || opName = "@") then FixedTypes elif (opName = ".[]" ) then Indexer else Other let private compilerGeneratedMarker = "@" let private compilerGeneratedMarkerChar = '@' let IsCompilerGeneratedName (nm:string) = nm.IndexOf compilerGeneratedMarkerChar <> -1 let CompilerGeneratedName nm = if IsCompilerGeneratedName nm then nm else nm+compilerGeneratedMarker let GetBasicNameOfPossibleCompilerGeneratedName (name:string) = match name.IndexOf compilerGeneratedMarker with | -1 | 0 -> name | n -> name.[0..n-1] let CompilerGeneratedNameSuffix (basicName:string) suffix = basicName+compilerGeneratedMarker+suffix //------------------------------------------------------------------------- // Handle mangled .NET generic type names //------------------------------------------------------------------------- let private mangledGenericTypeNameSym = '`' let IsMangledGenericName (n:string) = n.IndexOf mangledGenericTypeNameSym <> -1 && (* check what comes after the symbol is a number *) let m = n.LastIndexOf mangledGenericTypeNameSym let mutable res = m < n.Length - 1 for i = m + 1 to n.Length - 1 do res <- res && n.[i] >= '0' && n.[i] <= '9'; res type NameArityPair = NameArityPair of string*int let DecodeGenericTypeName n = if IsMangledGenericName n then let pos = n.LastIndexOf mangledGenericTypeNameSym let res = n.Substring(0,pos) let num = n.Substring(pos+1,n.Length - pos - 1) NameArityPair(res, int32 num) else NameArityPair(n,0) let DemangleGenericTypeName n = if IsMangledGenericName n then let pos = n.LastIndexOf mangledGenericTypeNameSym n.Substring(0,pos) else n //------------------------------------------------------------------------- // Property name mangling. // Expecting s to be in the form (as returned by qualifiedMangledNameOfTyconRef) of: // get_P or set_P // Names/Space/Class/NLPath-get_P or Names/Space/Class/NLPath.set_P // Required to return "P" //------------------------------------------------------------------------- let private chopStringTo (s:string) (c:char) = (* chopStringTo "abcdef" 'c' --> "def" *) if s.IndexOf c <> -1 then let i = s.IndexOf c + 1 s.Substring(i, s.Length - i) else s /// Try to chop "get_" or "set_" from a string let TryChopPropertyName (s: string) = // extract the logical name from any mangled name produced by MakeMemberDataAndMangledNameForMemberVal let s = if s.StartsWith("get_", System.StringComparison.Ordinal) || s.StartsWith("set_", System.StringComparison.Ordinal) then s else chopStringTo s '.' if s.Length <= 4 || (let s = s.Substring(0,4) in s <> "get_" && s <> "set_") then None else Some(s.Substring(4,s.Length - 4) ) let ChopPropertyName s = match TryChopPropertyName s with | None -> failwith("Invalid internal property name: '"^s^"'"); s | Some res -> res let DemangleOperatorName nm = let nm = DecompileOpName nm if IsOpName nm then "( "^nm^" )" else nm let SplitNamesForILPath (s : string) : string list = if s.StartsWith("``",System.StringComparison.Ordinal) && s.EndsWith("``",System.StringComparison.Ordinal) && s.Length > 4 then [s.Substring(2, s.Length-4)] // identifier is enclosed in `` .. ``, so it is only a single element (this is very approximate) else s.Split [| '.' ; '`' |] |> Array.toList // '.' chops members / namespaces / modules; '`' chops generic parameters for .NET types // Return a string array delimited by the given separator. // Note that a quoted string is not going to be mangled into pieces. let private splitAroundQuotation (text:string) (separator:char) = let text' = text.ToCharArray() let length = text'.Length let isNotQuotedQuotation n = n > 0 && text'.[n-1] <> '\\' let rec split (i, cur, group, insideQuotation) = if i>=length then List.rev (cur::group) else match text'.[i], insideQuotation with // split when seeing a separator | c, false when c = separator -> split (i+1, "", cur::group, false) // keep reading if a separator is inside quotation | c, true when c = separator -> split (i+1, cur+(System.Char.ToString c), group, true) // open or close quotation | '\"', _ when isNotQuotedQuotation i -> split (i+1, cur+"\"", group, not insideQuotation) // keep reading | c, _ -> split (i+1, cur+(System.Char.ToString c), group, insideQuotation) split (0, "", [], false) |> Array.ofList // Return a string array delimited by the given separator up to the maximum number. // Note that a quoted string is not going to be mangled into pieces. let private splitAroundQuotationWithCount (text:string) (separator:char) (count:int)= if count <= 1 then [| text |] else let mangledText = splitAroundQuotation text separator match mangledText.Length > count with | true -> Array.append (mangledText.[0..(count-2)]) ([| mangledText.[(count-1)..] |> String.concat (System.Char.ToString separator) |]) | false -> mangledText let FSharpModuleSuffix = "Module" let MangledGlobalName = "`global`" let IllegalCharactersInTypeAndNamespaceNames = [| '.'; '+'; '$'; '&'; '['; ']'; '/'; '\\'; '*'; '\"'; '`' |] let IsActivePatternName (nm:string) = (nm.IndexOf '|' = 0) && nm.Length >= 3 && (nm.LastIndexOf '|' = nm.Length - 1) && (let core = nm.Substring(1,nm.Length - 2) // no operator characters except '|' core |> String.forall (fun c -> c = '|' || not (opCharDict.ContainsKey c)) && // at least one non-operator character core |> String.exists (fun c -> not (opCharDict.ContainsKey c))) //IsActivePatternName "|+|" = false //IsActivePatternName "|ABC|" = true //IsActivePatternName "|ABC|DEF|" = true //IsActivePatternName "|||" = false //IsActivePatternName "||S|" = true type ActivePatternInfo = | APInfo of bool * string list member x.IsTotal = let (APInfo(p,_)) = x in p member x.ActiveTags = let (APInfo(_,tags)) = x in tags let ActivePatternInfoOfValName nm = let rec loop (nm:string) = let n = nm.IndexOf '|' if n > 0 then nm.[0..n-1] :: loop nm.[n+1..] else [nm] let nm = DecompileOpName nm if IsActivePatternName nm then let res = loop nm.[1..nm.Length-2] let resH,resT = List.frontAndBack res Some(if resT = "_" then APInfo(false,resH) else APInfo(true,res)) else None let private mangleStaticStringArg (nm:string,v:string) = nm + "=" + "\"" + v.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\"" let private tryDemangleStaticStringArg (mangledText:string) = let pieces = splitAroundQuotationWithCount mangledText '=' 2 if pieces.Length <> 2 then None else let nm = pieces.[0] let v = pieces.[1] if v.Length >= 2 then Some(nm,v.[1..v.Length-2].Replace("\\\\","\\").Replace("\\\"","\"")) else Some(nm,v) // Demangle the static parameters exception InvalidMangledStaticArg of string let demangleProvidedTypeName (typeLogicalName:string) = if typeLogicalName.Contains "," then let pieces = splitAroundQuotation typeLogicalName ',' if pieces.[1..] |> Array.forall (fun x -> tryDemangleStaticStringArg x |> Option.isSome) then let argNamesAndValues = pieces.[1..] |> Array.map (fun piece -> match tryDemangleStaticStringArg piece with | None -> raise (InvalidMangledStaticArg piece) | Some v -> v) pieces.[0], argNamesAndValues else typeLogicalName, [| |] else typeLogicalName, [| |] let mangleProvidedTypeName (typeLogicalName,nonDefaultArgs) = let nonDefaultArgsText = nonDefaultArgs |> Array.map mangleStaticStringArg |> String.concat "," typeLogicalName+","+nonDefaultArgsText //let testDemangleStaticStringArg() = // for x in [ ""; "\""; "\"\""; "a"; "\\"; "\\\\"; "\\\""; "_"; "\"\"" ] do // if demangleStaticStringArg (mangleStaticStringArg x) <> x then printfn "failed for <<%s>>" x fsharp-3.0.34/src/fsharp/patcompile.fsi0000775000175000017500000000564112260314606017013 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Patcompile open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Range /// What should the decision tree contain for any incomplete match? type ActionOnFailure = | ThrowIncompleteMatchException | IgnoreWithWarning | Throw | Rethrow | FailFilter [] /// Represents the typechecked, elaborated form of a pattern, prior to pattern-match compilation. type Pattern = | TPat_const of Const * range | TPat_wild of range | TPat_as of Pattern * PatternValBinding * range | TPat_disjs of Pattern list * range | TPat_conjs of Pattern list * range | TPat_query of (Expr * TType list * (ValRef * TypeInst) option * int * PrettyNaming.ActivePatternInfo) * Pattern * range | TPat_unioncase of UnionCaseRef * TypeInst * Pattern list * range | TPat_exnconstr of TyconRef * Pattern list * range | TPat_tuple of Pattern list * TType list * range | TPat_array of Pattern list * TType * range | TPat_recd of TyconRef * TypeInst * Pattern list * range | TPat_range of char * char * range | TPat_null of range | TPat_isinst of TType * TType * PatternValBinding option * range member Range : range and PatternValBinding = | PBind of Val * TypeScheme and TypedMatchClause = | TClause of Pattern * Expr option * DecisionTreeTarget * range /// Compile a pattern into a decision tree and a set of targets. val internal CompilePattern : Env.TcGlobals -> Tastops.DisplayEnv -> Import.ImportMap -> // range of the expression we are matching on range -> // range to report "incomplete match" on range -> // warn on unused? bool -> ActionOnFailure -> // the value being matched against, perhaps polymorphic Val * Typars -> // input type-checked syntax of pattern matching TypedMatchClause list -> // input type TType -> // result type TType -> // produce TAST nodes DecisionTree * DecisionTreeTarget list exception internal MatchIncomplete of bool * (string * bool) option * range exception internal RuleNeverMatched of range fsharp-3.0.34/src/fsharp/tastops.fs0000775000175000017500000127603212260314606016207 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Derived expression manipulation and construction functions. module internal Microsoft.FSharp.Compiler.Tastops open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.PrettyNaming #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif //--------------------------------------------------------------------------- // Basic data structures //--------------------------------------------------------------------------- [] type TyparMap<'T> = | TPMap of StampMap<'T> member tm.Item with get (v: Typar) = let (TPMap m) = tm in m.[v.Stamp] member tm.ContainsKey (v: Typar) = let (TPMap m) = tm in m.ContainsKey(v.Stamp) member tm.Add (v: Typar, x) = let (TPMap m) = tm in TPMap (m.Add(v.Stamp,x)) static member Empty : TyparMap<'T> = TPMap Map.empty [] type TyconRefMap<'T>(imap: StampMap<'T>) = member m.Item with get (v: TyconRef) = imap.[v.Stamp] member m.TryFind (v: TyconRef) = imap.TryFind v.Stamp member m.ContainsKey (v: TyconRef) = imap.ContainsKey v.Stamp member m.Add (v: TyconRef) x = TyconRefMap (imap.Add (v.Stamp,x)) member m.Remove (v: TyconRef) = TyconRefMap (imap.Remove v.Stamp) member m.IsEmpty = imap.IsEmpty static member Empty : TyconRefMap<'T> = TyconRefMap Map.empty static member OfList vs = (vs, TyconRefMap<'T>.Empty) ||> List.foldBack (fun (x,y) acc -> acc.Add x y) [] [] type ValMap<'T>(imap: StampMap<'T>) = member m.Contents = imap member m.Item with get (v:Val) = imap.[v.Stamp] member m.TryFind (v: Val) = imap.TryFind v.Stamp member m.ContainsVal (v: Val) = imap.ContainsKey v.Stamp member m.Add (v: Val) x = ValMap (imap.Add(v.Stamp,x)) member m.Remove (v: Val) = ValMap (imap.Remove(v.Stamp)) static member Empty = ValMap<'T> Map.empty member m.IsEmpty = imap.IsEmpty static member OfList vs = (vs, ValMap<'T>.Empty) ||> List.foldBack (fun (x,y) acc -> acc.Add x y) //-------------------------------------------------------------------------- // renamings //-------------------------------------------------------------------------- type TyparInst = (Typar * TType) list type TyconRefRemap = TyconRefMap type ValRemap = ValMap let emptyTyconRefRemap : TyconRefRemap = TyconRefMap<_>.Empty let emptyTyparInst = ([] : TyparInst) [] type Remap = { tpinst : TyparInst; valRemap: ValRemap; tyconRefRemap : TyconRefRemap } let emptyRemap = { tpinst = emptyTyparInst; tyconRefRemap = emptyTyconRefRemap; valRemap = ValMap.Empty } type Remap with static member Empty = emptyRemap //-------------------------------------------------------------------------- // Substitute for type variables and remap type constructors //-------------------------------------------------------------------------- let addTyconRefRemap tcref1 tcref2 tmenv = {tmenv with tyconRefRemap=tmenv.tyconRefRemap.Add tcref1 tcref2 } let isRemapEmpty remap = List.isEmpty remap.tpinst && remap.tyconRefRemap.IsEmpty && remap.valRemap.IsEmpty let rec instTyparRef tpinst ty tp = match tpinst with | [] -> ty | (tp',ty')::t -> if typarEq tp tp' then ty' else instTyparRef t ty tp let instUnitTyparRef tpinst unt (tp:Typar) = match tp.Kind with | TyparKind.Type -> failwith "instUnitTyparRef: kind=Type" | TyparKind.Measure -> let rec loop tpinst = match tpinst with | [] -> unt | (tp',ty')::t -> if typarEq tp tp' then match ty' with | TType_measure unt -> unt | _ -> failwith "instUnitTyparRef incorrect kind"; else loop t loop tpinst let remapTyconRef (tcmap: TyconRefMap<_>) tcr = match tcmap.TryFind tcr with | Some tcr -> tcr | None -> tcr let remapUnionCaseRef tcmap (UCRef(tcref,nm)) = UCRef(remapTyconRef tcmap tcref,nm) let remapRecdFieldRef tcmap (RFRef(tcref,nm)) = RFRef(remapTyconRef tcmap tcref,nm) let mkTyparInst (typars: Typars) tyargs = #if CHECKED if List.length typars <> List.length tyargs then failwith ("mkTyparInst: invalid type" + (sprintf " %d <> %d" (List.length typars) (List.length tyargs))); #endif (List.zip typars tyargs : TyparInst) let generalizeTypar tp = mkTyparTy tp let generalizeTypars tps = List.map generalizeTypar tps let rec remapTypeAux (tyenv : Remap) (ty:TType) = let ty = stripTyparEqns ty match ty with | TType_var tp as ty -> instTyparRef tyenv.tpinst ty tp | TType_app (tcr,tinst) as ty -> match tyenv.tyconRefRemap.TryFind tcr with | Some tcr' -> TType_app (tcr',remapTypesAux tyenv tinst) | None -> match tinst with | [] -> ty // optimization to avoid re-allocation of TType_app node in the common case | _ -> // avoid reallocation on idempotent let tinst' = remapTypesAux tyenv tinst if tinst === tinst' then ty else TType_app (tcr,tinst') | TType_ucase (UCRef(tcr,n),tinst) -> match tyenv.tyconRefRemap.TryFind tcr with | Some tcr' -> TType_ucase (UCRef(tcr',n),remapTypesAux tyenv tinst) | None -> TType_ucase (UCRef(tcr,n),remapTypesAux tyenv tinst) | TType_tuple l as ty -> let l' = remapTypesAux tyenv l if l === l' then ty else TType_tuple (l') | TType_fun (d,r) as ty -> let d' = remapTypeAux tyenv d let r' = remapTypeAux tyenv r if d === d' && r === r' then ty else TType_fun (d', r') | TType_forall (tps,ty) -> let tps',tyenv = copyAndRemapAndBindTypars tyenv tps TType_forall (tps', remapTypeAux tyenv ty) | TType_measure unt -> TType_measure (remapMeasureAux tyenv unt) and remapMeasureAux tyenv unt = match unt with | MeasureOne -> unt | MeasureCon tcr -> match tyenv.tyconRefRemap.TryFind tcr with | Some tcr -> MeasureCon tcr | None -> unt | MeasureProd(u1,u2) -> MeasureProd(remapMeasureAux tyenv u1, remapMeasureAux tyenv u2) | MeasureInv u -> MeasureInv(remapMeasureAux tyenv u) | MeasureVar tp as unt -> match tp.Solution with | None -> if ListAssoc.containsKey typarEq tp tyenv.tpinst then match ListAssoc.find typarEq tp tyenv.tpinst with | TType_measure unt -> unt | _ -> failwith "remapMeasureAux: incorrect kinds" else unt | Some (TType_measure unt) -> remapMeasureAux tyenv unt | Some ty -> failwithf "incorrect kinds: %A" ty and remapTypesAux tyenv types = List.mapq (remapTypeAux tyenv) types and remapTyparConstraintsAux tyenv cs = cs |> List.choose (fun x -> match x with | TyparConstraint.CoercesTo(ty,m) -> Some(TyparConstraint.CoercesTo (remapTypeAux tyenv ty,m)) | TyparConstraint.MayResolveMember(traitInfo,m) -> Some(TyparConstraint.MayResolveMember (remapTraitAux tyenv traitInfo,m)) | TyparConstraint.DefaultsTo(priority,ty,m) -> Some(TyparConstraint.DefaultsTo(priority,remapTypeAux tyenv ty,m)) | TyparConstraint.IsEnum(uty,m) -> Some(TyparConstraint.IsEnum(remapTypeAux tyenv uty,m)) | TyparConstraint.IsDelegate(uty1,uty2,m) -> Some(TyparConstraint.IsDelegate(remapTypeAux tyenv uty1,remapTypeAux tyenv uty2,m)) | TyparConstraint.SimpleChoice(tys,m) -> Some(TyparConstraint.SimpleChoice(remapTypesAux tyenv tys,m)) | TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _ | TyparConstraint.IsUnmanaged _ | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _ -> Some(x)) and remapTraitAux tyenv (TTrait(typs,nm,mf,argtys,rty,slnCell)) = let slnCell = match !slnCell with | None -> None | Some sln -> let sln = match sln with | ILMethSln(typ,extOpt,ilMethRef,minst) -> ILMethSln(remapTypeAux tyenv typ,extOpt,ilMethRef,remapTypesAux tyenv minst) | FSMethSln(typ, vref,minst) -> FSMethSln(remapTypeAux tyenv typ, remapValRef tyenv vref,remapTypesAux tyenv minst) | FSRecdFieldSln(tinst, rfref, isSet) -> FSRecdFieldSln(remapTypesAux tyenv tinst, remapRecdFieldRef tyenv.tyconRefRemap rfref, isSet) | BuiltInSln -> BuiltInSln | ClosedExprSln e -> ClosedExprSln e // no need to remap because it is a closed expression, referring only to external types Some sln // Note: we reallocate a new solution cell on every traversal of a trait constraint // This feels incorrect for trait constraints that are quantified: it seems we should have // formal binders for trait constraints when they are quantified, just as // we have formal binders for type variables. // // The danger here is that a solution for one syntactic occurrence of a trait constraint won't // be propagated to other, "linked" solutions. However trait constraints don't appear in any algebrra // in the same way as types TTrait(remapTypesAux tyenv typs,nm,mf,remapTypesAux tyenv argtys, Option.map (remapTypeAux tyenv) rty,ref slnCell) and bindTypars tps tyargs tpinst = match tps with | [] -> tpinst | _ -> List.map2 (fun tp tyarg -> (tp,tyarg)) tps tyargs @ tpinst // This version is used to remap most type parameters, e.g. ones bound at tycons, vals, records // See notes below on remapTypeFull for why we have a function that accepts remapAttribs as an argument and copyAndRemapAndBindTyparsFull remapAttrib tyenv tps = match tps with | [] -> tps,tyenv | _ -> let tps' = copyTypars tps let tyenv = { tyenv with tpinst = bindTypars tps (generalizeTypars tps') tyenv.tpinst } (tps,tps') ||> List.iter2 (fun tporig tp -> tp.FixupConstraints (remapTyparConstraintsAux tyenv tporig.Constraints); tp.Data.typar_attribs <- tporig.Data.typar_attribs |> remapAttrib) ; tps',tyenv // copies bound typars, extends tpinst and copyAndRemapAndBindTypars tyenv tps = copyAndRemapAndBindTyparsFull (fun _ -> []) tyenv tps and remapValLinkage tyenv (vlink: ValLinkageFullKey) = let tyOpt = vlink.TypeForLinkage let tyOpt' = match tyOpt with | None -> tyOpt | Some ty -> let ty' = remapTypeAux tyenv ty if ty === ty' then tyOpt else Some ty' if tyOpt === tyOpt' then vlink else ValLinkageFullKey(vlink.PartialKey, tyOpt') and remapNonLocalValRef tyenv (nlvref:NonLocalValOrMemberRef) = let eref = nlvref.EnclosingEntity let eref' = remapTyconRef tyenv.tyconRefRemap eref let vlink = nlvref.ItemKey let vlink' = remapValLinkage tyenv vlink if eref === eref' && vlink === vlink' then nlvref else { EnclosingEntity = eref' ItemKey = vlink' } and remapValRef tmenv (vref: ValRef) = match tmenv.valRemap.TryFind vref.Deref with | None -> if vref.IsLocalRef then vref else let nlvref = vref.nlr let nlvref' = remapNonLocalValRef tmenv nlvref if nlvref === nlvref' then vref else VRefNonLocal nlvref' | Some res -> res let remapType tyenv x = if isRemapEmpty tyenv then x else remapTypeAux tyenv x let remapTypes tyenv x = if isRemapEmpty tyenv then x else remapTypesAux tyenv x /// Use this one for any type that may be a forall type where the type variables may contain attributes /// Logically speaking this is mtuually recursive with remapAttrib defined much later in this file, /// because types may contain forall types that contain attributes, which need to be remapped. /// We currently break the recursion by passing in remapAttrib as a function parameter. /// Use this one for any type that may be a forall type where the type variables may contain attributes let remapTypeFull remapAttrib tyenv ty = if isRemapEmpty tyenv then ty else match stripTyparEqns ty with | TType_forall(tps,tau) -> let tps',tyenvinner = copyAndRemapAndBindTyparsFull remapAttrib tyenv tps TType_forall(tps',remapType tyenvinner tau) | _ -> remapType tyenv ty let remapParam tyenv (TSlotParam(nm,typ,fl1,fl2,fl3,attribs) as x) = if isRemapEmpty tyenv then x else TSlotParam(nm,remapTypeAux tyenv typ,fl1,fl2,fl3,attribs) let remapSlotSig remapAttrib tyenv (TSlotSig(nm,typ, ctps,methTypars,paraml, rty) as x) = if isRemapEmpty tyenv then x else let typ' = remapTypeAux tyenv typ let ctps',tyenvinner = copyAndRemapAndBindTyparsFull remapAttrib tyenv ctps let methTypars',tyenvinner = copyAndRemapAndBindTyparsFull remapAttrib tyenvinner methTypars TSlotSig(nm,typ', ctps',methTypars',List.mapSquared (remapParam tyenvinner) paraml,Option.map (remapTypeAux tyenvinner) rty) let mkInstRemap tpinst = { tyconRefRemap = emptyTyconRefRemap; tpinst = tpinst; valRemap = ValMap.Empty } // entry points for "typar -> TType" instantiation let instType tpinst x = if List.isEmpty tpinst then x else remapTypeAux (mkInstRemap tpinst) x let instTypes tpinst x = if List.isEmpty tpinst then x else remapTypesAux (mkInstRemap tpinst) x let instTrait tpinst x = if List.isEmpty tpinst then x else remapTraitAux (mkInstRemap tpinst) x let instTyparConstraints tpinst x = if List.isEmpty tpinst then x else remapTyparConstraintsAux (mkInstRemap tpinst) x let instSlotSig tpinst ss = remapSlotSig (fun _ -> []) (mkInstRemap tpinst) ss let copySlotSig ss = remapSlotSig (fun _ -> []) Remap.Empty ss let mkTyparToTyparRenaming tpsOrig tps = let tinst = generalizeTypars tps mkTyparInst tpsOrig tinst,tinst let mkTyconInst (tycon:Tycon) tinst = mkTyparInst tycon.TyparsNoRange tinst let mkTyconRefInst (tcref:TyconRef) tinst = mkTyconInst tcref.Deref tinst //--------------------------------------------------------------------------- // Basic equalites //--------------------------------------------------------------------------- let tyconRefEq g tcref1 tcref2 = primEntityRefEq g.compilingFslib g.fslibCcu tcref1 tcref2 let valRefEq g vref1 vref2 = primValRefEq g.compilingFslib g.fslibCcu vref1 vref2 //--------------------------------------------------------------------------- // Remove inference equations and abbreviations from units //--------------------------------------------------------------------------- let reduceTyconRefAbbrevMeasureable (tcref:TyconRef) = let abbrev = tcref.TypeAbbrev match abbrev with | Some (TType_measure ms) -> ms | _ -> invalidArg "tcref" "not a measure abbreviation, or incorrect kind" let rec stripUnitEqnsFromMeasureAux canShortcut unt = match stripUnitEqnsAux canShortcut unt with | MeasureCon tcref when tcref.IsTypeAbbrev -> stripUnitEqnsFromMeasureAux canShortcut (reduceTyconRefAbbrevMeasureable tcref) | m -> m let stripUnitEqnsFromMeasure m = stripUnitEqnsFromMeasureAux false m //--------------------------------------------------------------------------- // Basic unit stuff //--------------------------------------------------------------------------- /// What is the contribution of unit-of-measure constant ucref to unit-of-measure expression measure? let rec MeasureConExponent g abbrev ucref unt = match (if abbrev then stripUnitEqnsFromMeasure unt else stripUnitEqns unt) with | MeasureCon ucref' -> if tyconRefEq g ucref' ucref then 1 else 0 | MeasureInv unt' -> -(MeasureConExponent g abbrev ucref unt') | MeasureProd(unt1,unt2) -> MeasureConExponent g abbrev ucref unt1 + MeasureConExponent g abbrev ucref unt2 | _ -> 0 /// What is the contribution of unit-of-measure constant ucref to unit-of-measure expression measure /// after remapping tycons? let rec MeasureConExponentAfterRemapping g r ucref unt = match stripUnitEqnsFromMeasure unt with | MeasureCon ucref' -> if tyconRefEq g (r ucref') ucref then 1 else 0 | MeasureInv unt' -> -(MeasureConExponentAfterRemapping g r ucref unt') | MeasureProd(unt1,unt2) -> MeasureConExponentAfterRemapping g r ucref unt1 + MeasureConExponentAfterRemapping g r ucref unt2 | _ -> 0 /// What is the contribution of unit-of-measure variable tp to unit-of-measure expression unt? let rec MeasureVarExponent tp unt = match stripUnitEqnsFromMeasure unt with | MeasureVar tp' -> if typarEq tp tp' then 1 else 0 | MeasureInv unt' -> -(MeasureVarExponent tp unt') | MeasureProd(unt1,unt2) -> MeasureVarExponent tp unt1 + MeasureVarExponent tp unt2 | _ -> 0 /// List the *literal* occurrences of unit variables in a unit expression, without repeats let ListMeasureVarOccs unt = let rec gather acc unt = match stripUnitEqnsFromMeasure unt with MeasureVar tp -> if List.exists (typarEq tp) acc then acc else tp::acc | MeasureProd(unt1,unt2) -> gather (gather acc unt1) unt2 | MeasureInv unt' -> gather acc unt' | _ -> acc gather [] unt /// List the *observable* occurrences of unit variables in a unit expression, without repeats, paired with their non-zero exponents let ListMeasureVarOccsWithNonZeroExponents untexpr = let rec gather acc unt = match stripUnitEqnsFromMeasure unt with MeasureVar tp -> if List.exists (fun (tp', _) -> typarEq tp tp') acc then acc else let e = MeasureVarExponent tp untexpr in if e=0 then acc else (tp,e)::acc | MeasureProd(unt1,unt2) -> gather (gather acc unt1) unt2 | MeasureInv unt' -> gather acc unt' | _ -> acc gather [] untexpr /// List the *observable* occurrences of unit constants in a unit expression, without repeats, paired with their non-zero exponents let ListMeasureConOccsWithNonZeroExponents g eraseAbbrevs untexpr = let rec gather acc unt = match (if eraseAbbrevs then stripUnitEqnsFromMeasure unt else stripUnitEqns unt) with | MeasureCon c -> if List.exists (fun (c', _) -> tyconRefEq g c c') acc then acc else let e = MeasureConExponent g eraseAbbrevs c untexpr in if e=0 then acc else (c,e)::acc | MeasureProd(unt1,unt2) -> gather (gather acc unt1) unt2 | MeasureInv unt' -> gather acc unt' | _ -> acc gather [] untexpr /// List the *literal* occurrences of unit constants in a unit expression, without repeats, /// and after applying a remapping function r to tycons let ListMeasureConOccsAfterRemapping g r unt = let rec gather acc unt = match (stripUnitEqnsFromMeasure unt) with | MeasureCon c -> if List.exists (tyconRefEq g (r c)) acc then acc else r c::acc | MeasureProd(unt1,unt2) -> gather (gather acc unt1) unt2 | MeasureInv unt' -> gather acc unt' | _ -> acc gather [] unt /// Construct a measure expression representing the n'th power of a measure let rec MeasurePower u n = if n=0 then MeasureOne elif n=1 then u elif n<0 then MeasureInv (MeasurePower u (-n)) else MeasureProd (u, MeasurePower u (n-1)) let MeasureProdOpt m1 m2 = match m1, m2 with | MeasureOne, _ -> m2 | _, MeasureOne -> m1 | _, _ -> MeasureProd (m1,m2) /// Construct a measure expression representing the product of a list of measures let ProdMeasures ms = match ms with [] -> MeasureOne | m::ms -> List.foldBack MeasureProdOpt ms m let isDimensionless g tyarg = match stripTyparEqns tyarg with | TType_measure unt -> List.isEmpty (ListMeasureVarOccsWithNonZeroExponents unt) && List.isEmpty (ListMeasureConOccsWithNonZeroExponents g true unt) | _ -> false let destUnitParMeasure g unt = let vs = ListMeasureVarOccsWithNonZeroExponents unt let cs = ListMeasureConOccsWithNonZeroExponents g true unt match vs, cs with | [(v,1)], [] -> v | _, _ -> failwith "destUnitParMeasure: not a unit-of-measure parameter" let isUnitParMeasure g unt = let vs = ListMeasureVarOccsWithNonZeroExponents unt let cs = ListMeasureConOccsWithNonZeroExponents g true unt match vs, cs with | [(_,1)], [] -> true | _, _ -> false let normalizeMeasure g ms = let vs = ListMeasureVarOccsWithNonZeroExponents ms let cs = ListMeasureConOccsWithNonZeroExponents g false ms match vs, cs with | [],[] -> MeasureOne | [(v,1)], [] -> MeasureVar v | vs, cs -> List.foldBack (fun (v,e) -> fun m -> MeasureProd (MeasurePower (MeasureVar v) e, m)) vs (List.foldBack (fun (c,e) -> fun m -> MeasureProd (MeasurePower (MeasureCon c) e, m)) cs MeasureOne) let tryNormalizeMeasureInType g ty = match ty with | TType_measure (MeasureVar v) -> match v.Solution with | Some (TType_measure ms) -> (v.Data.typar_solution <- Some (TType_measure (normalizeMeasure g ms)); ty) | _ -> ty | _ -> ty let rec sizeMeasure g ms = match stripUnitEqns ms with | MeasureVar _ -> 1 | MeasureCon _ -> 1 | MeasureProd (ms1,ms2) -> sizeMeasure g ms1 + sizeMeasure g ms2 | MeasureInv ms -> sizeMeasure g ms | MeasureOne -> 1 //--------------------------------------------------------------------------- // SOme basic type builders //--------------------------------------------------------------------------- let mkNativePtrType g ty = TType_app (g.nativeptr_tcr, [ty]) let mkByrefTy g ty = TType_app (g.byref_tcr, [ty]) let mkArrayTy g n ty m = if n = 1 then TType_app (g.il_arr1_tcr, [ty]) elif n = 2 then TType_app (g.il_arr2_tcr, [ty]) elif n = 3 then TType_app (g.il_arr3_tcr, [ty]) elif n = 4 then TType_app (g.il_arr4_tcr, [ty]) else errorR(Error(FSComp.SR.tastopsMaxArrayFour(),m)); TType_app (g.il_arr4_tcr, [ty]) //-------------------------------------------------------------------------- // Tuple compilation (types) //------------------------------------------------------------------------ let maxTuple = 8 let goodTupleFields = maxTuple-1 let is_tuple_tcref g tcref = match tcref with | x when (tyconRefEq g g.tuple1_tcr x || tyconRefEq g g.tuple2_tcr x || tyconRefEq g g.tuple3_tcr x || tyconRefEq g g.tuple4_tcr x || tyconRefEq g g.tuple5_tcr x || tyconRefEq g g.tuple6_tcr x || tyconRefEq g g.tuple7_tcr x || tyconRefEq g g.tuple8_tcr x) -> true | _ -> false let mkCompiledTupleTyconRef g tys = let n = List.length tys if n = 1 then g.tuple1_tcr elif n = 2 then g.tuple2_tcr elif n = 3 then g.tuple3_tcr elif n = 4 then g.tuple4_tcr elif n = 5 then g.tuple5_tcr elif n = 6 then g.tuple6_tcr elif n = 7 then g.tuple7_tcr elif n = 8 then g.tuple8_tcr else failwithf "mkCompiledTupleTyconRef, n = %d" n let rec mkCompiledTupleTy g tys = let n = List.length tys if n < maxTuple then TType_app (mkCompiledTupleTyconRef g tys, tys) else let tysA,tysB = List.splitAfter goodTupleFields tys TType_app (g.tuple8_tcr, tysA@[mkCompiledTupleTy g tysB]) //--------------------------------------------------------------------------- // Remove inference equations and abbreviations from types //--------------------------------------------------------------------------- let applyTyconAbbrev abbrevTy tycon tyargs = if List.isEmpty tyargs then abbrevTy else instType (mkTyconInst tycon tyargs) abbrevTy let reduceTyconAbbrev (tycon:Tycon) tyargs = let abbrev = tycon.TypeAbbrev match abbrev with | None -> invalidArg "tycon" "this type definition is not an abbreviation"; | Some abbrevTy -> applyTyconAbbrev abbrevTy tycon tyargs let reduceTyconRefAbbrev (tcref:TyconRef) tyargs = reduceTyconAbbrev tcref.Deref tyargs let reduceTyconMeasureableOrProvided g (tycon:Tycon) tyargs = ignore g let repr = tycon.TypeReprInfo match repr with | TMeasureableRepr ty -> if List.isEmpty tyargs then ty else instType (mkTyconInst tycon tyargs) ty #if EXTENSIONTYPING | TProvidedTypeExtensionPoint info when info.IsErased -> info.BaseTypeForErased (range0, g.obj_ty) #endif | _ -> invalidArg "tc" "this type definition is not a refinement" let reduceTyconRefMeasureableOrProvided (g:TcGlobals) (tcref:TyconRef) tyargs = reduceTyconMeasureableOrProvided g tcref.Deref tyargs let rec stripTyEqnsA g canShortcut ty = let ty = stripTyparEqnsAux canShortcut ty match ty with | TType_app (tcref,tinst) -> let tycon = tcref.Deref match tycon.TypeAbbrev with | Some abbrevTy -> stripTyEqnsA g canShortcut (applyTyconAbbrev abbrevTy tycon tinst) | None -> if tycon.IsMeasureableReprTycon && List.forall (isDimensionless g) tinst then stripTyEqnsA g canShortcut (reduceTyconMeasureableOrProvided g tycon tinst) else ty | ty -> ty let stripTyEqns g ty = stripTyEqnsA g false ty /// This erases outermost occurences of inference equations, type abbreviations, non-generated provided types /// and measureable types (float<_>). /// It also optionally erases all "compilation representations", i.e. function and /// tuple types, and also "nativeptr<'T> --> System.IntPtr" let rec stripTyEqnsAndErase eraseFuncAndTuple g ty = let ty = stripTyEqns g ty match ty with | TType_app (tcref,args) -> let tycon = tcref.Deref if tycon.IsErased then stripTyEqnsAndErase eraseFuncAndTuple g (reduceTyconMeasureableOrProvided g tycon args) elif tyconRefEq g tcref g.nativeptr_tcr && eraseFuncAndTuple then stripTyEqnsAndErase eraseFuncAndTuple g g.nativeint_ty else ty | TType_fun(a,b) when eraseFuncAndTuple -> TType_app(g.fastFunc_tcr,[ a; b]) | TType_tuple(l) when eraseFuncAndTuple -> mkCompiledTupleTy g l | ty -> ty let stripTyEqnsAndMeasureEqns g ty = stripTyEqnsAndErase false g ty type Erasure = EraseAll | EraseMeasures | EraseNone let stripTyEqnsWrtErasure erasureFlag g ty = match erasureFlag with | EraseAll -> stripTyEqnsAndErase true g ty | EraseMeasures -> stripTyEqnsAndErase false g ty | _ -> stripTyEqns g ty let rec stripExnEqns (eref:TyconRef) = let exnc = eref.Deref match exnc.ExceptionInfo with | TExnAbbrevRepr eref -> stripExnEqns eref | _ -> exnc let primDestForallTy g ty = ty |> stripTyEqns g |> (function TType_forall (tyvs,tau) -> (tyvs,tau) | _ -> failwith "primDestForallTy: not a forall type") let destFunTy g ty = ty |> stripTyEqns g |> (function TType_fun (tyv,tau) -> (tyv,tau) | _ -> failwith "destFunTy: not a function type") let destTupleTy g ty = ty |> stripTyEqns g |> (function TType_tuple l -> l | _ -> failwith "destTupleTy: not a tuple type") let destTyparTy g ty = ty |> stripTyEqns g |> (function TType_var v -> v | _ -> failwith "destTyparTy: not a typar type") let destAnyParTy g ty = ty |> stripTyEqns g |> (function TType_var v -> v | TType_measure unt -> destUnitParMeasure g unt | _ -> failwith "destAnyParTy: not a typar or unpar type") let destMeasureTy g ty = ty |> stripTyEqns g |> (function TType_measure m -> m | _ -> failwith "destMeasureTy: not a unit-of-measure type") let isFunTy g ty = ty |> stripTyEqns g |> (function TType_fun _ -> true | _ -> false) let isForallTy g ty = ty |> stripTyEqns g |> (function TType_forall _ -> true | _ -> false) let isTupleTy g ty = ty |> stripTyEqns g |> (function TType_tuple _ -> true | _ -> false) let isUnionTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr,_) -> tcr.IsUnionTycon | _ -> false) let isReprHiddenTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr,_) -> tcr.IsHiddenReprTycon | _ -> false) let isFSharpObjModelTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr,_) -> tcr.IsFSharpObjectModelTycon | _ -> false) let isRecdTy g ty = ty |> stripTyEqns g |> (function TType_app(tcr,_) -> tcr.IsRecordTycon | _ -> false) let isTyparTy g ty = ty |> stripTyEqns g |> (function TType_var _ -> true | _ -> false) let isAnyParTy g ty = ty |> stripTyEqns g |> (function TType_var _ -> true | TType_measure unt -> isUnitParMeasure g unt | _ -> false) let isMeasureTy g ty = ty |> stripTyEqns g |> (function TType_measure _ -> true | _ -> false) // WARNING: If you increase this you must make the corresponding types in FSharp.Core.dll structs #if TUPLE_STRUXT let highestTupleStructType = 2 let isTupleStructTy g ty = ty |> stripTyEqns g |> (function TType_tuple l -> l.Length <= highestTupleStructType | _ -> false) #else let isTupleStructTy (_g:TcGlobals) (_ty:TType) = false #endif let isProvenUnionCaseTy ty = match ty with TType_ucase _ -> true | _ -> false let mkAppTy tcref tyargs = TType_app(tcref,tyargs) let mkProvenUnionCaseTy ucref tyargs = TType_ucase(ucref,tyargs) let isAppTy g ty = ty |> stripTyEqns g |> (function TType_app _ -> true | _ -> false) let destAppTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,tinst) -> tcref,tinst | _ -> failwith "destAppTy") let tcrefOfAppTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tcref | _ -> failwith "tcrefOfAppTy") let tryDestAppTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> Some tcref | _ -> None) let (|AppTy|_|) g ty = ty |> stripTyEqns g |> (function TType_app(tcref,tinst) -> Some (tcref,tinst) | _ -> None) let argsOfAppTy g ty = ty |> stripTyEqns g |> (function TType_app(_,tinst) -> tinst | _ -> []) let tyconOfAppTy g ty = (tcrefOfAppTy g ty).Deref let tryNiceEntityRefOfTy ty = let ty = stripTyparEqnsAux false ty match ty with | TType_app (tcref,_) -> Some tcref | TType_measure (MeasureExpr.MeasureCon tcref) -> Some tcref | _ -> None let (|NullableTy|_|) g ty = match ty with | AppTy g (tcr,[tyarg]) when tyconRefEq g tcr g.system_Nullable_tcref -> Some tyarg | _ -> None let (|StripNullableTy|) g ty = match ty with | AppTy g (tcr,[tyarg]) when tyconRefEq g tcr g.system_Nullable_tcref -> tyarg | _ -> ty let mkInstForAppTy g typ = if isAppTy g typ then let tcref,tinst = destAppTy g typ mkTyconRefInst tcref tinst else [] let domainOfFunTy g ty = fst(destFunTy g ty) let rangeOfFunTy g ty = snd(destFunTy g ty) //--------------------------------------------------------------------------- // Equivalence of types up to alpha-equivalence //--------------------------------------------------------------------------- [] type TypeEquivEnv = { EquivTypars: TyparMap; EquivTycons: TyconRefRemap} // allocate a singleton let typeEquivEnvEmpty = { EquivTypars = TyparMap.Empty; EquivTycons = emptyTyconRefRemap } type TypeEquivEnv with static member Empty = typeEquivEnvEmpty member aenv.BindTyparsToTypes tps1 tys2 = {aenv with EquivTypars= (tps1,tys2,aenv.EquivTypars) |||> List.foldBack2 (fun tp ty tpmap -> tpmap.Add(tp,ty)) } member aenv.BindEquivTypars tps1 tps2 = aenv.BindTyparsToTypes tps1 (List.map mkTyparTy tps2) static member FromTyparInst tpinst = let tps,tys = List.unzip tpinst TypeEquivEnv.Empty.BindTyparsToTypes tps tys static member FromEquivTypars tps1 tps2 = TypeEquivEnv.Empty.BindEquivTypars tps1 tps2 let rec traitsAEquivAux erasureFlag g aenv (TTrait(typs1,nm,mf1,argtys,rty,_)) (TTrait(typs2,nm2,mf2,argtys2,rty2,_)) = ListSet.equals (typeAEquivAux erasureFlag g aenv) typs1 typs2 && mf1 = mf2 && returnTypesAEquivAux erasureFlag g aenv rty rty2 && List.lengthsEqAndForall2 (typeAEquivAux erasureFlag g aenv) argtys argtys2 && nm = nm2 and returnTypesAEquivAux erasureFlag g aenv rty rty2 = match rty,rty2 with | None,None -> true | Some t1,Some t2 -> typeAEquivAux erasureFlag g aenv t1 t2 | _ -> false and typarConstraintsAEquivAux erasureFlag g aenv tpc1 tpc2 = match tpc1,tpc2 with | TyparConstraint.CoercesTo(acty,_), TyparConstraint.CoercesTo(fcty,_) -> typeAEquivAux erasureFlag g aenv acty fcty | TyparConstraint.MayResolveMember(trait1,_), TyparConstraint.MayResolveMember(trait2,_) -> traitsAEquivAux erasureFlag g aenv trait1 trait2 | TyparConstraint.DefaultsTo(_,acty,_), TyparConstraint.DefaultsTo(_,fcty,_) -> typeAEquivAux erasureFlag g aenv acty fcty | TyparConstraint.IsEnum(uty1,_),TyparConstraint.IsEnum(uty2,_) -> typeAEquivAux erasureFlag g aenv uty1 uty2 | TyparConstraint.IsDelegate(aty1,bty1,_),TyparConstraint.IsDelegate(aty2,bty2,_) -> typeAEquivAux erasureFlag g aenv aty1 aty2 && typeAEquivAux erasureFlag g aenv bty1 bty2 | TyparConstraint.SimpleChoice (tys1,_),TyparConstraint.SimpleChoice(tys2,_) -> ListSet.equals (typeAEquivAux erasureFlag g aenv) tys1 tys2 | TyparConstraint.SupportsComparison _ ,TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ ,TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _ ,TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _ ,TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsReferenceType _ ,TyparConstraint.IsReferenceType _ | TyparConstraint.IsUnmanaged _ ,TyparConstraint.IsUnmanaged _ | TyparConstraint.RequiresDefaultConstructor _, TyparConstraint.RequiresDefaultConstructor _ -> true | _ -> false and typarConstraintSetsAEquivAux erasureFlag g aenv (tp1:Typar) (tp2:Typar) = tp1.StaticReq = tp2.StaticReq && ListSet.equals (typarConstraintsAEquivAux erasureFlag g aenv) tp1.Constraints tp2.Constraints and typarsAEquivAux erasureFlag g (aenv: TypeEquivEnv) tps1 tps2 = List.length tps1 = List.length tps2 && let aenv = aenv.BindEquivTypars tps1 tps2 List.forall2 (typarConstraintSetsAEquivAux erasureFlag g aenv) tps1 tps2 and tcrefAEquiv g aenv tc1 tc2 = tyconRefEq g tc1 tc2 || (aenv.EquivTycons.ContainsKey tc1 && tyconRefEq g aenv.EquivTycons.[tc1] tc2) and typeAEquivAux erasureFlag g aenv ty1 ty2 = let ty1 = stripTyEqnsWrtErasure erasureFlag g ty1 let ty2 = stripTyEqnsWrtErasure erasureFlag g ty2 match ty1, ty2 with | TType_forall(tps1,rty1), TType_forall(tps2,rty2) -> typarsAEquivAux erasureFlag g aenv tps1 tps2 && typeAEquivAux erasureFlag g (aenv.BindEquivTypars tps1 tps2) rty1 rty2 | TType_var tp1, TType_var tp2 when typarEq tp1 tp2 -> true | TType_var tp1, _ when aenv.EquivTypars.ContainsKey tp1 -> typeEquivAux erasureFlag g aenv.EquivTypars.[tp1] ty2 | TType_app (tc1,b1) ,TType_app (tc2,b2) -> tcrefAEquiv g aenv tc1 tc2 && typesAEquivAux erasureFlag g aenv b1 b2 | TType_ucase (UCRef(tc1,n1),b1) ,TType_ucase (UCRef(tc2,n2),b2) -> n1=n2 && tcrefAEquiv g aenv tc1 tc2 && typesAEquivAux erasureFlag g aenv b1 b2 | TType_tuple l1,TType_tuple l2 -> typesAEquivAux erasureFlag g aenv l1 l2 | TType_fun (dtys1,rty1),TType_fun (dtys2,rty2) -> typeAEquivAux erasureFlag g aenv dtys1 dtys2 && typeAEquivAux erasureFlag g aenv rty1 rty2 | TType_measure m1, TType_measure m2 -> match erasureFlag with | EraseNone -> measureAEquiv g aenv m1 m2 | _ -> true | _ -> false and measureAEquiv g aenv un1 un2 = let vars1 = ListMeasureVarOccs un1 let trans tp1 = if aenv.EquivTypars.ContainsKey tp1 then destAnyParTy g aenv.EquivTypars.[tp1] else tp1 let remapTyconRef tc = if aenv.EquivTycons.ContainsKey tc then aenv.EquivTycons.[tc] else tc let vars1' = List.map trans vars1 let vars2 = ListSet.subtract typarEq (ListMeasureVarOccs un2) vars1' let cons1 = ListMeasureConOccsAfterRemapping g remapTyconRef un1 let cons2 = ListMeasureConOccsAfterRemapping g remapTyconRef un2 List.forall (fun v -> MeasureVarExponent v un1 = MeasureVarExponent (trans v) un2) vars1 && List.forall (fun v -> MeasureVarExponent v un1 = MeasureVarExponent v un2) vars2 && List.forall (fun c -> MeasureConExponentAfterRemapping g remapTyconRef c un1 = MeasureConExponentAfterRemapping g remapTyconRef c un2) (cons1@cons2) and typesAEquivAux erasureFlag g aenv l1 l2 = List.lengthsEqAndForall2 (typeAEquivAux erasureFlag g aenv) l1 l2 and typeEquivAux erasureFlag g ty1 ty2 = typeAEquivAux erasureFlag g TypeEquivEnv.Empty ty1 ty2 let typeAEquiv g aenv ty1 ty2 = typeAEquivAux EraseNone g aenv ty1 ty2 let typeEquiv g ty1 ty2 = typeEquivAux EraseNone g ty1 ty2 let traitsAEquiv g aenv t1 t2 = traitsAEquivAux EraseNone g aenv t1 t2 let typarConstraintsAEquiv g aenv c1 c2 = typarConstraintsAEquivAux EraseNone g aenv c1 c2 let typarsAEquiv g aenv d1 d2 = typarsAEquivAux EraseNone g aenv d1 d2 let returnTypesAEquiv g aenv t1 t2 = returnTypesAEquivAux EraseNone g aenv t1 t2 let measureEquiv g m1 m2 = measureAEquiv g TypeEquivEnv.Empty m1 m2 let isErasedType g ty = match stripTyEqns g ty with #if EXTENSIONTYPING | TType_app (tcref,_) -> tcref.IsProvidedErasedTycon #endif | _ -> false // Return all components of this type expression that cannot be tested at runtime let rec getErasedTypes g ty = let ty = stripTyEqns g ty if isErasedType g ty then [ty] else match ty with | TType_forall(_,rty) -> getErasedTypes g rty | TType_var tp -> if tp.IsErased then [ty] else [] | TType_app (_,b) | TType_ucase(_,b) | TType_tuple b -> List.foldBack (fun ty tys -> getErasedTypes g ty @ tys) b [] | TType_fun (dty,rty) -> getErasedTypes g dty @ getErasedTypes g rty | TType_measure _ -> [ty] //--------------------------------------------------------------------------- // Standard orderings, e.g. for order set/map keys //--------------------------------------------------------------------------- let valOrder = { new IComparer with member __.Compare(v1,v2) = compare v1.Stamp v2.Stamp } let tyconOrder = { new IComparer with member __.Compare(tc1,tc2) = compare tc1.Stamp tc2.Stamp } let recdFieldRefOrder = { new IComparer with member __.Compare(RFRef(tcref1,nm1), RFRef(tcref2,nm2)) = let c = tyconOrder.Compare (tcref1.Deref, tcref2.Deref) if c <> 0 then c else compare nm1 nm2 } let unionCaseRefOrder = { new IComparer with member __.Compare(UCRef(tcref1,nm1), UCRef(tcref2,nm2)) = let c = tyconOrder.Compare (tcref1.Deref, tcref2.Deref) if c <> 0 then c else compare nm1 nm2 } //--------------------------------------------------------------------------- // Make some common types //--------------------------------------------------------------------------- let mkFunTy d r = TType_fun (d,r) let (-->) d r = mkFunTy d r let mkForallTy d r = TType_forall (d,r) let tryMkForallTy d r = if isNil d then r else mkForallTy d r let (+->) d r = tryMkForallTy d r let mkTupleTy l = TType_tuple l let mkIteratedFunTy dl r = List.foldBack (-->) dl r let mkLambdaArgTy m tys = match tys with | [] -> error(InternalError("mkLambdaArgTy",m)) | [h] -> h | _ -> mkTupleTy tys let typeOfLambdaArg m vs = mkLambdaArgTy m (typesOfVals vs) let mkMultiLambdaTy m vs rty = mkFunTy (typeOfLambdaArg m vs) rty let mkLambdaTy tps tys rty = tryMkForallTy tps (mkIteratedFunTy tys rty) /// When compiling FSharp.Core.dll we have to deal with the non-local references into /// the library arising from env.fs. Part of this means that we have to be able to resolve these /// references. This function artificially forces the existence of a module or namespace at a /// particular point in order to do this. let ensureCcuHasModuleOrNamespaceAtPath (ccu:CcuThunk) path (CompPath(_,cpath)) xml = let scoref = ccu.ILScopeRef let rec loop prior_cpath (path:Ident list) cpath (modul:ModuleOrNamespace) = let mtype = modul.ModuleOrNamespaceType match path,cpath with | (hpath::tpath),((_,mkind)::tcpath) -> let modName = hpath.idText if not (Map.containsKey modName mtype.AllEntitiesByCompiledAndLogicalMangledNames) then let smodul = NewModuleOrNamespace (Some(CompPath(scoref,prior_cpath))) taccessPublic hpath xml [] (notlazy (NewEmptyModuleOrNamespaceType mkind)) mtype.AddModuleOrNamespaceByMutation(smodul); let modul = Map.find modName mtype.AllEntitiesByCompiledAndLogicalMangledNames loop (prior_cpath@[(modName,Namespace)]) tpath tcpath modul | _ -> () loop [] path cpath ccu.Contents //--------------------------------------------------------------------------- // Primitive destructors //--------------------------------------------------------------------------- /// Look through the Expr.Link nodes arising from type inference let rec stripExpr e = match e with | Expr.Link eref -> stripExpr !eref | _ -> e let mkCase (a,b) = TCase(a,b) let isTupleExpr e = match e with Expr.Op (TOp.Tuple,_,_,_) -> true | _ -> false let tryDestTuple e = match e with Expr.Op (TOp.Tuple,_,es,_) -> es | _ -> [e] //--------------------------------------------------------------------------- // Range info for expressions //--------------------------------------------------------------------------- let rec rangeOfExpr x = match x with | Expr.Val (_,_,m) | Expr.Op (_,_,_,m) | Expr.Const (_,m,_) | Expr.Quote (_,_,_,m,_) | Expr.Obj (_,_,_,_,_,_,m) | Expr.App(_,_,_,_,m) | Expr.Sequential (_,_,_,_,m) | Expr.StaticOptimization (_,_,_,m) | Expr.Lambda (_,_,_,_,_,m,_) | Expr.TyLambda (_,_,_,m,_)| Expr.TyChoose (_,_,m) | Expr.LetRec (_,_,m,_) | Expr.Let (_,_,m,_) | Expr.Match (_,_,_,_,m,_) -> m | Expr.Link(eref) -> rangeOfExpr (!eref) type Expr with member x.Range = rangeOfExpr x //--------------------------------------------------------------------------- // Build nodes in decision graphs //--------------------------------------------------------------------------- let primMkMatch(spBind,exprm,tree,targets,matchm,ty) = Expr.Match (spBind,exprm,tree,targets,matchm,ty) type MatchBuilder(spBind,inpRange: Range.range) = let targets = new ResizeArray<_>(10) member x.AddTarget(tg) = let n = targets.Count targets.Add(tg); n member x.AddResultTarget(e,spTarget) = TDSuccess(FlatList.empty, x.AddTarget(TTarget(FlatList.empty,e,spTarget))) member x.CloseTargets() = targets |> ResizeArray.toList member x.Close(dtree,m,ty) = primMkMatch (spBind,inpRange,dtree,targets.ToArray(),m,ty) let mkBoolSwitch m g t e = TDSwitch(g,[TCase(Test.Const(Const.Bool(true)),t)],Some e,m) let primMkCond spBind spTarget1 spTarget2 m ty e1 e2 e3 = let mbuilder = new MatchBuilder(spBind,m) let dtree = mkBoolSwitch m e1 (mbuilder.AddResultTarget(e2,spTarget1)) (mbuilder.AddResultTarget(e3,spTarget2)) mbuilder.Close(dtree,m,ty) let mkCond spBind spTarget m ty e1 e2 e3 = primMkCond spBind spTarget spTarget m ty e1 e2 e3 //--------------------------------------------------------------------------- // Primitive constructors //--------------------------------------------------------------------------- let exprForValRef m vref = Expr.Val(vref,NormalValUse,m) let exprForVal m v = exprForValRef m (mkLocalValRef v) let gen_mk_local m s ty mut compgen = let thisv = NewVal(s,m,None,ty,mut,compgen,None,taccessPublic,ValNotInRecScope,None,NormalVal,[],ValInline.Optional,XmlDoc.Empty,false,false,false,false,false,false,None,ParentNone) thisv,exprForVal m thisv let mkLocal m s ty = gen_mk_local m s ty Immutable false let mkCompGenLocal m s ty = gen_mk_local m s ty Immutable true let mkMutableCompGenLocal m s ty = gen_mk_local m s ty Mutable true // Type gives return type. For type-lambdas this is the formal return type. let mkMultiLambda m vs (b,rty) = Expr.Lambda (newUnique(), None,None,vs,b,m, rty) let rebuildLambda m ctorThisValOpt baseValOpt vs (b,rty) = Expr.Lambda (newUnique(), ctorThisValOpt, baseValOpt,vs,b,m, rty) let mkLambda m v (b,rty) = mkMultiLambda m [v] (b,rty) let mkTypeLambda m vs (b,tau_ty) = match vs with [] -> b | _ -> Expr.TyLambda (newUnique(), vs,b,m,tau_ty) let mkTypeChoose m vs b = match vs with [] -> b | _ -> Expr.TyChoose (vs,b,m) let mkObjExpr (ty,basev,basecall,overrides,iimpls,m) = Expr.Obj (newUnique(),ty,basev,basecall,overrides,iimpls,m) let mkLambdas m tps (vs:Val list) (b,rty) = mkTypeLambda m tps (List.foldBack (fun v (e,ty) -> mkLambda m v (e,ty), v.Type --> ty) vs (b,rty)) let mkMultiLambdasCore m vsl (b,rty) = List.foldBack (fun v (e,ty) -> mkMultiLambda m v (e,ty), typeOfLambdaArg m v --> ty) vsl (b,rty) let mkMultiLambdas m tps vsl (b,rty) = mkTypeLambda m tps (mkMultiLambdasCore m vsl (b,rty) ) let mkMemberLambdas m tps ctorThisValOpt baseValOpt vsl (b,rty) = let expr = match ctorThisValOpt,baseValOpt with | None,None -> mkMultiLambdasCore m vsl (b,rty) | _ -> match vsl with | [] -> error(InternalError("mk_basev_multi_lambdas_core: can't attach a basev to a non-lambda expression",m)) | h::t -> let b,rty = mkMultiLambdasCore m t (b,rty) (rebuildLambda m ctorThisValOpt baseValOpt h (b,rty), (typeOfLambdaArg m h --> rty)) mkTypeLambda m tps expr let mkMultiLambdaBind v letSeqPtOpt m tps vsl (b,rty) = TBind(v,mkMultiLambdas m tps vsl (b,rty),letSeqPtOpt) let mkBind seqPtOpt v e = TBind(v,e,seqPtOpt) let mkCompGenBind v e = TBind(v,e,NoSequencePointAtStickyBinding) /// Make bindings that are compiler generated (though the variables may not be - e.g. they may be lambda arguments in a beta reduction) let mkCompGenBinds vs es = if List.length vs <> List.length es then failwith "mkCompGenBinds: invalid argument"; List.map2 mkCompGenBind vs es |> FlatList.ofList // n.b. type gives type of body let mkLetBind m bind body = Expr.Let(bind,body, m, NewFreeVarsCache()) let mkLetsBind m binds body = List.foldBack (mkLetBind m) binds body let mkLetsFromBindings m binds body = FlatList.foldBack (mkLetBind m) binds body let mkLet seqPtOpt m v x body = mkLetBind m (mkBind seqPtOpt v x) body let mkCompGenLet m v x body = mkLetBind m (mkCompGenBind v x) body let mkInvisibleBind v e = TBind(v,e,NoSequencePointAtInvisibleBinding) let mkInvisibleLet m v x body = mkLetBind m (mkInvisibleBind v x) body let mkInvisibleBinds (vs: Val list) (es: Expr list) = if vs.Length <> es.Length then failwith "mkInvisibleBinds: invalid argument"; List.map2 mkInvisibleBind vs es let mkInvisibleFlatBindings vs es = if FlatList.length vs <> FlatList.length es then failwith "mkInvisibleFlatBindings: invalid argument"; FlatList.map2 mkInvisibleBind vs es let mkInvisibleLets m vs xs body = mkLetsBind m (mkInvisibleBinds vs xs) body let mkInvisibleLetsFromBindings m vs xs body = mkLetsFromBindings m (mkInvisibleFlatBindings vs xs) body let mkLetRecBinds m binds body = if FlatList.isEmpty binds then body else Expr.LetRec(binds,body, m, NewFreeVarsCache()) //------------------------------------------------------------------------- // Type schemes... //------------------------------------------------------------------------- // Type parameters may be have been equated to other tps in equi-recursive type inference // and unit type inference. Normalize them here let NormalizeDeclaredTyparsForEquiRecursiveInference g tps = match tps with | [] -> [] | tps -> tps |> List.map (fun tp -> let ty = mkTyparTy tp if isAnyParTy g ty then destAnyParTy g ty else tp) type TypeScheme = TypeScheme of Typars * TType let mkGenericBindRhs g m generalizedTyparsForRecursiveBlock typeScheme bodyExpr = let (TypeScheme(generalizedTypars,tauType)) = typeScheme // Normalize the generalized typars let generalizedTypars = NormalizeDeclaredTyparsForEquiRecursiveInference g generalizedTypars // Some recursive bindings result in free type variables, e.g. // let rec f (x:'a) = () // and g() = f y |> ignore // What is the type of y? Type inference equates it to 'a. // But "g" is not polymorphic in 'a. Hence we get a free choice of "'a" // in the scope of "g". Thus at each individual recursive binding we record all // type variables for which we have a free choice, which is precisely the difference // between the union of all sets of generalized type variables and the set generalized // at each particular binding. // // We record an expression node that indicates that a free choice can be made // for these. This expression node effectively binds the type variables. let freeChoiceTypars = ListSet.subtract typarEq generalizedTyparsForRecursiveBlock generalizedTypars mkTypeLambda m generalizedTypars (mkTypeChoose m freeChoiceTypars bodyExpr, tauType) let isBeingGeneralized tp typeScheme = let (TypeScheme(generalizedTypars,_)) = typeScheme ListSet.contains typarRefEq tp generalizedTypars //------------------------------------------------------------------------- // Build conditional expressions... //------------------------------------------------------------------------- let mkLazyAnd g m e1 e2 = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.bool_ty e1 e2 (Expr.Const(Const.Bool false,m,g.bool_ty)) let mkLazyOr g m e1 e2 = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.bool_ty e1 (Expr.Const(Const.Bool true,m,g.bool_ty)) e2 let mkCoerceExpr(e,to_ty,m,from_ty) = Expr.Op (TOp.Coerce,[to_ty;from_ty],[e],m) let mkAsmExpr(code,tinst,args,rettys,m) = Expr.Op (TOp.ILAsm(code,rettys),tinst,args,m) let mkUnionCaseExpr(uc,tinst,args,m) = Expr.Op (TOp.UnionCase uc,tinst,args,m) let mkExnExpr(uc,args,m) = Expr.Op (TOp.ExnConstr uc,[],args,m) let mkTupleFieldGet(e,tinst,i,m) = Expr.Op (TOp.TupleFieldGet(i), tinst, [e],m) let mkRecdFieldGetViaExprAddr(e,fref,tinst,m) = Expr.Op (TOp.ValFieldGet(fref), tinst, [e],m) let mkRecdFieldGetAddrViaExprAddr(e,fref,tinst,m) = Expr.Op (TOp.ValFieldGetAddr(fref), tinst, [e],m) let mkStaticRecdFieldGetAddr(fref,tinst,m) = Expr.Op (TOp.ValFieldGetAddr(fref), tinst, [],m) let mkStaticRecdFieldGet(fref,tinst,m) = Expr.Op (TOp.ValFieldGet(fref), tinst, [],m) let mkStaticRecdFieldSet(fref,tinst,e,m) = Expr.Op (TOp.ValFieldSet(fref), tinst, [e],m) let mkRecdFieldSetViaExprAddr(e1,fref,tinst,e2,m) = Expr.Op (TOp.ValFieldSet(fref), tinst, [e1;e2],m) let mkUnionCaseTagGet(e1,cref,tinst,m) = Expr.Op (TOp.UnionCaseTagGet(cref), tinst, [e1],m) let mkUnionCaseProof(e1,cref,tinst,m) = Expr.Op (TOp.UnionCaseProof(cref), tinst, [e1],m) /// Build a 'get' expression for something we've already determined to be a particular union case, and where the /// input expression has 'TType_ucase', which is an F# compiler internal "type" let mkUnionCaseFieldGetProven(e1,cref,tinst,j,m) = Expr.Op (TOp.UnionCaseFieldGet(cref,j), tinst, [e1],m) /// Build a 'get' expression for something we've already determined to be a particular union case, but where /// the static type of the input is not yet proven to be that particular union case. This requires a type /// cast to 'prove' the condition. let mkUnionCaseFieldGetUnproven(e1,cref,tinst,j,m) = mkUnionCaseFieldGetProven(mkUnionCaseProof(e1,cref,tinst,m),cref,tinst,j,m) let mkUnionCaseFieldSet(e1,cref,tinst,j,e2,m) = Expr.Op (TOp.UnionCaseFieldSet(cref,j), tinst, [e1;e2],m) let mkExnCaseFieldGet(e1,ecref,j,m) = Expr.Op (TOp.ExnFieldGet(ecref,j), [],[e1],m) let mkExnCaseFieldSet(e1,ecref,j,e2,m) = Expr.Op (TOp.ExnFieldSet(ecref,j), [],[e1;e2],m) let mkDummyLambda g (e:Expr,ety) = let m = e.Range mkLambda m (fst (mkCompGenLocal m "unitVar" g.unit_ty)) (e,ety) let mkWhile g (spWhile,marker,e1,e2,m) = Expr.Op (TOp.While (spWhile,marker),[] ,[mkDummyLambda g (e1,g.bool_ty);mkDummyLambda g (e2,g.unit_ty)],m) let mkFor g (spFor,v,e1,dir,e2,e3:Expr,m) = Expr.Op (TOp.For (spFor,dir) ,[] ,[mkDummyLambda g (e1,g.int_ty) ;mkDummyLambda g (e2,g.int_ty);mkLambda e3.Range v (e3,g.unit_ty)],m) let mkTryWith g (e1,vf,ef:Expr,vh,eh:Expr,m,ty,spTry,spWith) = Expr.Op (TOp.TryCatch(spTry,spWith),[ty],[mkDummyLambda g (e1,ty);mkLambda ef.Range vf (ef,ty);mkLambda eh.Range vh (eh,ty)],m) let mkTryFinally g (e1,e2,m,ty,spTry,spFinally) = Expr.Op (TOp.TryFinally(spTry,spFinally),[ty],[mkDummyLambda g (e1,ty);mkDummyLambda g (e2,g.unit_ty)],m) let mkDefault (m,ty) = Expr.Const(Const.Zero,m,ty) let mkValSet m v e = Expr.Op (TOp.LValueOp (LSet, v), [], [e], m) let mkAddrSet m v e = Expr.Op (TOp.LValueOp (LByrefSet, v), [], [e], m) let mkAddrGet m v = Expr.Op (TOp.LValueOp (LByrefGet, v), [], [], m) let mkValAddr m v = Expr.Op (TOp.LValueOp (LGetAddr, v), [], [], m) //-------------------------------------------------------------------------- // Maps tracking extra information for values //-------------------------------------------------------------------------- [] type ValHash<'T> = | ValHash of Dictionary member ht.Values = let (ValHash t) = ht in seq { for KeyValue(_,v) in t do yield v } member ht.TryFind (v:Val) = let (ValHash t) = ht in let i = v.Stamp in if t.ContainsKey(i) then Some(t.[i]) else None member ht.Add (v:Val, x) = let (ValHash t) = ht in t.[v.Stamp] <- x static member Create() = ValHash (new Dictionary<_,'T>(11)) [] type ValMultiMap<'T>(contents: StampMap<'T list>) = member m.Find (v: Val) = let stamp = v.Stamp in if contents.ContainsKey stamp then contents.[stamp] else [] member m.Add (v:Val, x) = ValMultiMap<'T>(contents.Add (v.Stamp, x :: m.Find v)) member m.Remove (v: Val) = ValMultiMap<'T>(contents.Remove v.Stamp) member m.Contents = contents static member Empty = ValMultiMap<'T>(Map.empty) [] type TyconRefMultiMap<'T>(contents: TyconRefMap<'T list>) = member m.Find v = if contents.ContainsKey v then contents.[v] else [] member m.Add (v, x) = TyconRefMultiMap<'T>(contents.Add v (x :: m.Find v)) static member Empty = TyconRefMultiMap<'T>(TyconRefMap<_>.Empty) //-------------------------------------------------------------------------- // From Ref_private to Ref_nonlocal when exporting data. //-------------------------------------------------------------------------- /// Try to create a EntityRef suitable for accessing the given Entity from another assembly let tryRescopeEntity viewedCcu (entity:Entity) : EntityRef option = match entity.PublicPath with | Some pubpath -> Some (ERefNonLocal (rescopePubPath viewedCcu pubpath)) | None -> None /// Try to create a ValRef suitable for accessing the given Val from another assembly let tryRescopeVal viewedCcu (entityRemap:Remap) (vspec:Val) : ValRef option = match vspec.PublicPath with | Some (ValPubPath(p,fullLinkageKey)) -> let fullLinkageKey = remapValLinkage entityRemap fullLinkageKey let vref = // This compensates for the somewhat poor design decision in the F# compiler and metadata where // members are stored as values under the enclosing namespace/module rather than under the type. // This stems from the days when types and namespace/modules were separated constructs in the // compiler implementation. if vspec.IsIntrinsicMember then mkNonLocalValRef (rescopePubPathToParent viewedCcu p) fullLinkageKey else mkNonLocalValRef (rescopePubPath viewedCcu p) fullLinkageKey Some vref | None -> None //--------------------------------------------------------------------------- // Type information about records, constructors etc. //--------------------------------------------------------------------------- let actualTyOfRecdField inst (fspec:RecdField) = instType inst fspec.FormalType let actualTysOfRecdFields inst rfields = List.map (actualTyOfRecdField inst) rfields let actualTysOfInstanceRecdFields inst (tcref:TyconRef) = tcref.AllInstanceFieldsAsList |> actualTysOfRecdFields inst let actualTysOfUnionCaseFields inst (x:UnionCaseRef) = actualTysOfRecdFields inst x.AllFieldsAsList let actualResultTyOfUnionCase tinst (x:UnionCaseRef) = instType (mkTyconRefInst x.TyconRef tinst) x.ReturnType let recdFieldsOfExnDefRef x = (stripExnEqns x).TrueInstanceFieldsAsList let recdFieldOfExnDefRefByIdx x n = (stripExnEqns x).GetFieldByIndex n let recdFieldTysOfExnDefRef x = actualTysOfRecdFields [] (recdFieldsOfExnDefRef x) let recdFieldTyOfExnDefRefByIdx x j = actualTyOfRecdField [] (recdFieldOfExnDefRefByIdx x j) let actualTyOfRecdFieldForTycon tycon tinst (fspec:RecdField) = instType (mkTyconInst tycon tinst) fspec.FormalType let actualTyOfRecdFieldRef (fref:RecdFieldRef) tinst = actualTyOfRecdFieldForTycon fref.Tycon tinst fref.RecdField //--------------------------------------------------------------------------- // Apply type functions to types //--------------------------------------------------------------------------- let destForallTy g ty = let tps,tau = primDestForallTy g ty // tps may be have been equated to other tps in equi-recursive type inference // and unit type inference. Normalize them here let tps = NormalizeDeclaredTyparsForEquiRecursiveInference g tps tps,tau let tryDestForallTy g ty = if isForallTy g ty then destForallTy g ty else ([],ty) let rec stripFunTy g ty = if isFunTy g ty then let (d,r) = destFunTy g ty let more,rty = stripFunTy g r d::more, rty else [],ty let applyForallTy g ty tyargs = let tps,tau = destForallTy g ty instType (mkTyparInst tps tyargs) tau let reduceIteratedFunTy g ty args = List.fold (fun ty _ -> if not (isFunTy g ty) then failwith "reduceIteratedFunTy"; snd (destFunTy g ty)) ty args let applyTyArgs g functy tyargs = if isForallTy g functy then applyForallTy g functy tyargs else functy let applyTys g functy (tyargs,argtys) = let afterTyappTy = applyTyArgs g functy tyargs reduceIteratedFunTy g afterTyappTy argtys let formalApplyTys g functy (tyargs,args) = reduceIteratedFunTy g (if isNil tyargs then functy else snd (destForallTy g functy)) args let rec stripFunTyN g n ty = assert (n >= 0); if n > 0 && isFunTy g ty then let (d,r) = destFunTy g ty let more,rty = stripFunTyN g (n-1) r in d::more, rty else [],ty let tryDestTupleTy g ty = if isTupleTy g ty then destTupleTy g ty else [ty] type UncurriedArgInfos = (TType * ArgReprInfo) list type CurriedArgInfos = (TType * ArgReprInfo) list list // A 'tau' type is one with its type paramaeters stripped off let GetTopTauTypeInFSharpForm g (curriedArgInfos: ArgReprInfo list list) tau m = let nArgInfos = curriedArgInfos.Length let argtys,rty = stripFunTyN g nArgInfos tau if nArgInfos <> argtys.Length then error(Error(FSComp.SR.tastInvalidMemberSignature(),m)) let argtysl = (curriedArgInfos,argtys) ||> List.map2 (fun argInfos argty -> match argInfos with | [] -> [ (g.unit_ty, ValReprInfo.unnamedTopArg1) ] | [argInfo] -> [ (argty, argInfo) ] | _ -> List.zip (destTupleTy g argty) argInfos) argtysl,rty let destTopForallTy g (ValReprInfo (ntps,_,_)) ty = let tps,tau = (if isNil ntps then [],ty else tryDestForallTy g ty) #if CHECKED if tps.Length <> kinds.Length then failwith (sprintf "destTopForallTy: internal error, #tps = %d, #ntps = %d" (List.length tps) ntps); #endif // tps may be have been equated to other tps in equi-recursive type inference. Normalize them here let tps = NormalizeDeclaredTyparsForEquiRecursiveInference g tps tps,tau let GetTopValTypeInFSharpForm g (ValReprInfo(_,argInfos,retInfo) as topValInfo) ty m = let tps,tau = destTopForallTy g topValInfo ty let argtysl,rty = GetTopTauTypeInFSharpForm g argInfos tau m tps,argtysl,rty,retInfo let IsCompiledAsStaticProperty g (v:Val) = (isSome v.ValReprInfo && match GetTopValTypeInFSharpForm g v.ValReprInfo.Value v.Type v.Range with | [],[], _,_ when not v.IsMember -> true | _ -> false) let IsCompiledAsStaticPropertyWithField g (v:Val) = (not v.IsCompiledAsStaticPropertyWithoutField && IsCompiledAsStaticProperty g v) //------------------------------------------------------------------------- // Multi-dimensional array types... //------------------------------------------------------------------------- let isArrayTyconRef g tcr = tyconRefEq g tcr g.il_arr1_tcr || tyconRefEq g tcr g.il_arr2_tcr || tyconRefEq g tcr g.il_arr3_tcr || tyconRefEq g tcr g.il_arr4_tcr let rankOfArrayTyconRef g tcr = if tyconRefEq g tcr g.il_arr1_tcr then 1 elif tyconRefEq g tcr g.il_arr2_tcr then 2 elif tyconRefEq g tcr g.il_arr3_tcr then 3 elif tyconRefEq g tcr g.il_arr4_tcr then 4 else failwith "rankOfArrayTyconRef: unsupported array rank" //------------------------------------------------------------------------- // Misc functions on F# types //------------------------------------------------------------------------- let destArrayTy (g:TcGlobals) ty = let _,tinst = destAppTy g ty match tinst with | [ty] -> ty | _ -> failwith "destArrayTy"; let isByrefLikeTyconRef g tcref = tyconRefEq g g.byref_tcr tcref || tyconRefEq g g.system_TypedReference_tcref tcref || tyconRefEq g g.system_ArgIterator_tcref tcref || tyconRefEq g g.system_RuntimeArgumentHandle_tcref tcref let isArrayTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> isArrayTyconRef g tcref | _ -> false) let isArray1DTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tyconRefEq g tcref g.il_arr1_tcr | _ -> false) let isUnitTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tyconRefEq g g.unit_tcr_canon tcref | _ -> false) let isObjTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tyconRefEq g g.system_Object_tcref tcref | _ -> false) let isVoidTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tyconRefEq g g.system_Void_tcref tcref | _ -> false) let isILAppTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tcref.IsILTycon | _ -> false) let isByrefTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tyconRefEq g g.byref_tcr tcref | _ -> false) let isByrefLikeTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> isByrefLikeTyconRef g tcref | _ -> false) #if EXTENSIONTYPING let extensionInfoOfTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref,_) -> tcref.TypeReprInfo | _ -> TNoRepr) #endif type TypeDefMetadata = | ILTypeMetadata of ILScopeRef * ILTypeDef | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata #if EXTENSIONTYPING | ExtensionTypeMetadata of TProvidedTypeInfo #endif let metadataOfTycon (tycon:Tycon) = #if EXTENSIONTYPING match tycon.TypeReprInfo with | TProvidedTypeExtensionPoint info -> ExtensionTypeMetadata info | _ -> #endif if tycon.IsILTycon then let scoref,_,tdef = tycon.ILTyconInfo ILTypeMetadata (scoref,tdef) else FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata let metadataOfTy g ty = #if EXTENSIONTYPING match extensionInfoOfTy g ty with | TProvidedTypeExtensionPoint info -> ExtensionTypeMetadata info | _ -> #endif if isILAppTy g ty then let tcref,_ = destAppTy g ty let scoref,_,tdef = tcref.ILTyconInfo ILTypeMetadata (scoref,tdef) else FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata let isILReferenceTy g ty = match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> not info.IsStructOrEnum #endif | ILTypeMetadata (_,td) -> not td.IsStructOrEnum | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> isArrayTy g ty let isILInterfaceTycon (tycon:Tycon) = match metadataOfTycon tycon with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> info.IsInterface #endif | ILTypeMetadata (_,td) -> (td.tdKind = ILTypeDefKind.Interface) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> false let rankOfArrayTy g ty = rankOfArrayTyconRef g (tcrefOfAppTy g ty) let isFSharpObjModelRefTy g ty = isFSharpObjModelTy g ty && let tcr,_ = destAppTy g ty match tcr.FSharpObjectModelTypeInfo.fsobjmodel_kind with | TTyconClass | TTyconInterface | TTyconDelegate _ -> true | TTyconStruct | TTyconEnum -> false let isFSharpClassTy g ty = isAppTy g ty && (tyconOfAppTy g ty).IsFSharpClassTycon let isFSharpStructTy g ty = isAppTy g ty && (tyconOfAppTy g ty).IsFSharpStructOrEnumTycon let isFSharpInterfaceTy g ty = isAppTy g ty && (tyconOfAppTy g ty).IsFSharpInterfaceTycon let isDelegateTy g ty = match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> info.IsDelegate () #endif | ILTypeMetadata (_,td) -> (td.tdKind = ILTypeDefKind.Delegate) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> isAppTy g ty && (tyconOfAppTy g ty).IsFSharpDelegateTycon let isInterfaceTy g ty = match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> info.IsInterface #endif | ILTypeMetadata (_,td) -> (td.tdKind = ILTypeDefKind.Interface) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> isFSharpInterfaceTy g ty let isClassTy g ty = match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> info.IsClass #endif | ILTypeMetadata (_,td) -> (td.tdKind = ILTypeDefKind.Class) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> isFSharpClassTy g ty let isRefTy g ty = isUnionTy g ty || (isTupleTy g ty && not (isTupleStructTy g ty)) || isRecdTy g ty || isILReferenceTy g ty || isFunTy g ty || isReprHiddenTy g ty || isFSharpObjModelRefTy g ty || isUnitTy g ty let isStructTy g ty = (isAppTy g ty && (tyconOfAppTy g ty).IsStructOrEnumTycon) || isTupleStructTy g ty // ECMA C# LANGUAGE SPECIFICATION, 27.2 // An unmanaged-type is any type that isn’t a reference-type, a type-parameter, or a generic struct-type and // contains no fields whose type is not an unmanaged-type. In other words, an unmanaged-type is one of the // following: // - sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool. // - Any enum-type. // - Any pointer-type. // - Any non-generic user-defined struct-type that contains fields of unmanaged-types only. // [Note: Constructed types and type-parameters are never unmanaged-types. end note] let rec isUnmanagedTy g ty = if isAppTy g ty then let tcref = tcrefOfAppTy g ty let isEq tcref2 = tyconRefEq g tcref tcref2 if isEq g.nativeptr_tcr || isEq g.nativeint_tcr || isEq g.sbyte_tcr || isEq g.byte_tcr || isEq g.int16_tcr || isEq g.uint16_tcr || isEq g.int32_tcr || isEq g.uint32_tcr || isEq g.int64_tcr || isEq g.uint64_tcr || isEq g.char_tcr || isEq g.float32_tcr || isEq g.float_tcr || isEq g.decimal_tcr || isEq g.bool_tcr then true else let tycon = tcref.Deref if tycon.IsEnumTycon then true elif tycon.IsStructOrEnumTycon then match tycon.TyparsNoRange with | [] -> tycon.AllInstanceFieldsAsList |> List.forall (fun r -> isUnmanagedTy g r.rfield_type) | _ -> false // generic structs are never else false else false let isInterfaceTycon x = isILInterfaceTycon x || x.IsFSharpInterfaceTycon let isInterfaceTyconRef (tcref: TyconRef) = isInterfaceTycon tcref.Deref let isEnumTy g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> tcref.IsEnumTycon let actualReturnTyOfSlotSig parentTyInst methTyInst (TSlotSig(_,_,parentFormalTypars,methFormalTypars,_,formalRetTy)) = let methTyInst = mkTyparInst methFormalTypars methTyInst let parentTyInst = mkTyparInst parentFormalTypars parentTyInst Option.map (instType (parentTyInst @ methTyInst)) formalRetTy let slotSigHasVoidReturnTy (TSlotSig(_,_,_,_,_,formalRetTy)) = isNone formalRetTy let returnTyOfMethod g (TObjExprMethod((TSlotSig(_,parentTy,_,_,_,_) as ss),_,methFormalTypars,_,_,_)) = let tinst = argsOfAppTy g parentTy let methTyInst = generalizeTypars methFormalTypars actualReturnTyOfSlotSig tinst methTyInst ss /// Is the type 'abstract' in C#-speak let isAbstractTycon (tycon:Tycon) = if tycon.IsFSharpObjectModelTycon then not tycon.IsFSharpDelegateTycon && tycon.TypeContents.tcaug_abstract else tycon.IsILTycon && tycon.ILTyconRawMetadata.IsAbstract //--------------------------------------------------------------------------- // Determine if a member/Val/ValRef is an explicit impl //--------------------------------------------------------------------------- let MemberIsExplicitImpl g (membInfo:ValMemberInfo) = membInfo.MemberFlags.IsOverrideOrExplicitImpl && match membInfo.ImplementedSlotSigs with | [] -> false | slotsigs -> slotsigs |> List.forall (fun slotsig -> isInterfaceTy g slotsig.ImplementedType ) let ValIsExplicitImpl g (v:Val) = match v.MemberInfo with | Some membInfo -> MemberIsExplicitImpl g membInfo | _ -> false let ValRefIsExplicitImpl g (vref:ValRef) = ValIsExplicitImpl g vref.Deref //--------------------------------------------------------------------------- // Find all type variables in a type, apart from those that have had // an equation assigned by type inference. //--------------------------------------------------------------------------- let emptyFreeLocals = Zset.empty valOrder let unionFreeLocals s1 s2 = if s1 === emptyFreeLocals then s2 elif s2 === emptyFreeLocals then s1 else Zset.union s1 s2 let emptyFreeRecdFields = Zset.empty recdFieldRefOrder let unionFreeRecdFields s1 s2 = if s1 === emptyFreeRecdFields then s2 elif s2 === emptyFreeRecdFields then s1 else Zset.union s1 s2 let emptyFreeUnionCases = Zset.empty unionCaseRefOrder let unionFreeUnionCases s1 s2 = if s1 === emptyFreeUnionCases then s2 elif s2 === emptyFreeUnionCases then s1 else Zset.union s1 s2 let emptyFreeTycons = Zset.empty tyconOrder let unionFreeTycons s1 s2 = if s1 === emptyFreeTycons then s2 elif s2 === emptyFreeTycons then s1 else Zset.union s1 s2 let typarOrder = { new System.Collections.Generic.IComparer with member x.Compare (v1:Typar, v2:Typar) = compare v1.Stamp v2.Stamp } let emptyFreeTypars = Zset.empty typarOrder let unionFreeTypars s1 s2 = if s1 === emptyFreeTypars then s2 elif s2 === emptyFreeTypars then s1 else Zset.union s1 s2 let emptyFreeTyvars = { FreeTycons=emptyFreeTycons; /// The summary of values used as trait solutions FreeTraitSolutions=emptyFreeLocals; FreeTypars=emptyFreeTypars} let unionFreeTyvars fvs1 fvs2 = if fvs1 === emptyFreeTyvars then fvs2 else if fvs2 === emptyFreeTyvars then fvs1 else { FreeTycons = unionFreeTycons fvs1.FreeTycons fvs2.FreeTycons; FreeTraitSolutions = unionFreeLocals fvs1.FreeTraitSolutions fvs2.FreeTraitSolutions; FreeTypars = unionFreeTypars fvs1.FreeTypars fvs2.FreeTypars } type FreeVarOptions = { canCache: bool; collectInTypes: bool includeLocalTycons: bool; includeTypars: bool; includeLocalTyconReprs: bool; includeRecdFields : bool; includeUnionCases : bool; includeLocals : bool } let CollectAllNoCaching = { canCache=false; collectInTypes=true; includeLocalTycons=true; includeLocalTyconReprs=true; includeRecdFields =true; includeUnionCases=true; includeTypars=true; includeLocals=true } let CollectTyparsNoCaching = { canCache=false; collectInTypes=true; includeLocalTycons=false; includeTypars=true; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false; includeLocals=false } let CollectLocalsNoCaching = { canCache=false; collectInTypes=false; includeLocalTycons=false; includeTypars=false; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false; includeLocals=true } let CollectTyparsAndLocalsNoCaching = { canCache=false; collectInTypes=true; includeLocalTycons=false; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false; includeTypars=true; includeLocals=true } let CollectAll = { canCache=false; collectInTypes=true; includeLocalTycons=true; includeLocalTyconReprs=true; includeRecdFields =true; includeUnionCases=true; includeTypars=true; includeLocals=true } let CollectTyparsAndLocals = // CollectAll { canCache=true; // only cache for this one collectInTypes=true; includeTypars=true; includeLocals=true; includeLocalTycons=false; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false; } let CollectTypars = CollectTyparsAndLocals (* { canCache=false; collectInTypes=true; includeTypars=true; includeLocals=false; includeLocalTycons=false; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false;} *) let CollectLocals = CollectTyparsAndLocals (* { canCache=false; collectInTypes=false; includeLocalTycons=false; includeLocalTyconReprs=false; includeRecdFields =false; includeUnionCases=false; includeTypars=false; includeLocals=true } *) let accFreeLocalTycon opts x acc = if not opts.includeLocalTycons then acc else if Zset.contains x acc.FreeTycons then acc else {acc with FreeTycons = Zset.add x acc.FreeTycons } let accFreeTycon opts (tcr:TyconRef) acc = if not opts.includeLocalTycons then acc else match tcr.IsLocalRef with | true -> accFreeLocalTycon opts tcr.PrivateTarget acc | _ -> acc let rec boundTypars opts tps acc = // Bound type vars form a recursively-referential set due to constraints, e.g. A : I, B : I // So collect up free vars in all constraints first, then bind all variables let acc = List.foldBack (fun (tp:Typar) acc -> accFreeInTyparConstraints opts tp.Constraints acc) tps acc List.foldBack (fun tp acc -> {acc with FreeTypars = Zset.remove tp acc.FreeTypars}) tps acc and accFreeInTyparConstraints opts cxs acc = List.foldBack (accFreeInTyparConstraint opts) cxs acc and accFreeInTyparConstraint opts tpc acc = match tpc with | TyparConstraint.CoercesTo(typ,_) -> accFreeInType opts typ acc | TyparConstraint.MayResolveMember (traitInfo,_) -> accFreeInTrait opts traitInfo acc | TyparConstraint.DefaultsTo(_,rty,_) -> accFreeInType opts rty acc | TyparConstraint.SimpleChoice(tys,_) -> accFreeInTypes opts tys acc | TyparConstraint.IsEnum(uty,_) -> accFreeInType opts uty acc | TyparConstraint.IsDelegate(aty,bty,_) -> accFreeInType opts aty (accFreeInType opts bty acc) | TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsReferenceType _ | TyparConstraint.IsUnmanaged _ | TyparConstraint.RequiresDefaultConstructor _ -> acc and accFreeInTrait opts (TTrait(typs,_,_,argtys,rty,sln)) acc = Option.foldBack (accFreeInTraitSln opts) sln.Value (accFreeInTypes opts typs (accFreeInTypes opts argtys (Option.foldBack (accFreeInType opts) rty acc))) and accFreeInTraitSln opts sln acc = match sln with | ILMethSln(typ,_,_,minst) -> accFreeInType opts typ (accFreeInTypes opts minst acc) | FSMethSln(typ, vref,minst) -> accFreeInType opts typ (accFreeValRefInTraitSln opts vref (accFreeInTypes opts minst acc)) | FSRecdFieldSln(tinst, _rfref, _isSet) -> accFreeInTypes opts tinst acc | BuiltInSln -> acc | ClosedExprSln _ -> acc // nothing to accumulate because it's a closed expression referring only to erasure of provided method calls and accFreeLocalValInTraitSln _opts v fvs = if Zset.contains v fvs.FreeTraitSolutions then fvs else let fvs = {fvs with FreeTraitSolutions=Zset.add v fvs.FreeTraitSolutions} //let fvs = accFreeInVal opts v fvs fvs and accFreeValRefInTraitSln opts (vref:ValRef) fvs = match vref.IsLocalRef with | true -> accFreeLocalValInTraitSln opts vref.PrivateTarget fvs // non-local values do not contain free variables | _ -> fvs and accFreeTyparRef opts (tp:Typar) acc = if not opts.includeTypars then acc else if Zset.contains tp acc.FreeTypars then acc else accFreeInTyparConstraints opts tp.Constraints {acc with FreeTypars=Zset.add tp acc.FreeTypars} and accFreeInType opts ty acc = match stripTyparEqns ty with | TType_tuple l -> accFreeInTypes opts l acc | TType_app (tc,tinst) -> let acc = accFreeTycon opts tc acc match tinst with | [] -> acc // optimization to avoid unneeded call | [h] -> accFreeInType opts h acc // optimization to avoid unneeded call | _ -> accFreeInTypes opts tinst acc | TType_ucase (UCRef(tc,_),tinst) -> accFreeInTypes opts tinst (accFreeTycon opts tc acc) | TType_fun (d,r) -> accFreeInType opts d (accFreeInType opts r acc) | TType_var r -> accFreeTyparRef opts r acc | TType_forall (tps,r) -> unionFreeTyvars (boundTypars opts tps (freeInType opts r)) acc | TType_measure unt -> accFreeInMeasure opts unt acc and accFreeInMeasure opts unt acc = List.foldBack (fun (tp,_) acc -> accFreeTyparRef opts tp acc) (ListMeasureVarOccsWithNonZeroExponents unt) acc and accFreeInTypes opts tys acc = match tys with | [] -> acc | h :: t -> accFreeInTypes opts t (accFreeInType opts h acc) and freeInType opts ty = accFreeInType opts ty emptyFreeTyvars and accFreeInVal opts (v:Val) acc = accFreeInType opts v.Data.val_type acc let freeInTypes opts tys = accFreeInTypes opts tys emptyFreeTyvars let freeInVal opts v = accFreeInVal opts v emptyFreeTyvars let freeInTyparConstraints opts v = accFreeInTyparConstraints opts v emptyFreeTyvars let accFreeInTypars opts tps acc = List.foldBack (accFreeTyparRef opts) tps acc //-------------------------------------------------------------------------- // Free in type, left-to-right order preserved. This is used to determine the // order of type variables for top-level definitions based on their signature, // so be careful not to change the order. We accumulate in reverse // order. //-------------------------------------------------------------------------- let emptyFreeTyparsLeftToRight = [] let unionFreeTyparsLeftToRight fvs1 fvs2 = ListSet.unionFavourRight typarEq fvs1 fvs2 let rec boundTyparsLeftToRight g cxFlag thruFlag filterDupesFlag acc tps = // Bound type vars form a recursively-referential set due to constraints, e.g. A : I, B : I // So collect up free vars in all constraints first, then bind all variables let acc = List.fold (fun acc (tp:Typar) -> accFreeInTyparConstraintsLeftToRight g cxFlag thruFlag acc tp.Constraints) tps acc // REVIEW CODECOVERAGE: We don't currently use this codepath, since this function is only currently called in one place, preceding // a call to unionFreeTyparsLeftToRight above. if filterDupesFlag then List.foldBack (ListSet.remove typarEq) tps acc else acc and accFreeInTyparConstraintsLeftToRight g cxFlag thruFlag acc cxs = List.fold (accFreeInTyparConstraintLeftToRight g cxFlag thruFlag) acc cxs and accFreeInTyparConstraintLeftToRight g cxFlag thruFlag acc tpc = match tpc with | TyparConstraint.CoercesTo(typ,_) -> accFreeInTypeLeftToRight g cxFlag thruFlag acc typ | TyparConstraint.MayResolveMember (traitInfo,_) -> accFreeInTraitLeftToRight g cxFlag thruFlag acc traitInfo | TyparConstraint.DefaultsTo(_,rty,_) -> accFreeInTypeLeftToRight g cxFlag thruFlag acc rty | TyparConstraint.SimpleChoice(tys,_) -> accFreeInTypesLeftToRight g cxFlag thruFlag acc tys | TyparConstraint.IsEnum(uty,_) -> accFreeInTypeLeftToRight g cxFlag thruFlag acc uty | TyparConstraint.IsDelegate(aty,bty,_) -> accFreeInTypeLeftToRight g cxFlag thruFlag (accFreeInTypeLeftToRight g cxFlag thruFlag acc aty) bty | TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _ | TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _ -> acc and accFreeInTraitLeftToRight g cxFlag thruFlag acc (TTrait(typs,_,_,argtys,rty,_)) = let acc = accFreeInTypesLeftToRight g cxFlag thruFlag acc typs let acc = accFreeInTypesLeftToRight g cxFlag thruFlag acc argtys let acc = Option.fold (accFreeInTypeLeftToRight g cxFlag thruFlag) acc rty acc and accFreeTyparRefLeftToRight g cxFlag thruFlag acc (tp:Typar) = if ListSet.contains typarEq tp acc then acc else let acc = (ListSet.insert typarEq tp acc) if cxFlag then accFreeInTyparConstraintsLeftToRight g cxFlag thruFlag acc tp.Constraints else acc and accFreeInTypeLeftToRight g cxFlag thruFlag acc ty = if verbose then dprintf "--> accFreeInTypeLeftToRight \n"; match (if thruFlag then stripTyEqns g ty else stripTyparEqns ty) with | TType_tuple l -> accFreeInTypesLeftToRight g cxFlag thruFlag acc l | TType_app (_,tinst) -> accFreeInTypesLeftToRight g cxFlag thruFlag acc tinst | TType_ucase (_,tinst) -> accFreeInTypesLeftToRight g cxFlag thruFlag acc tinst | TType_fun (d,r) -> accFreeInTypeLeftToRight g cxFlag thruFlag (accFreeInTypeLeftToRight g cxFlag thruFlag acc d ) r | TType_var r -> accFreeTyparRefLeftToRight g cxFlag thruFlag acc r | TType_forall (tps,r) -> unionFreeTyparsLeftToRight (boundTyparsLeftToRight g cxFlag thruFlag false tps (accFreeInTypeLeftToRight g cxFlag thruFlag emptyFreeTyparsLeftToRight r)) acc | TType_measure unt -> List.foldBack (fun (tp,_) acc -> accFreeTyparRefLeftToRight g cxFlag thruFlag acc tp) (ListMeasureVarOccsWithNonZeroExponents unt) acc and accFreeInTypesLeftToRight g cxFlag thruFlag acc tys = match tys with | [] -> acc | h :: t -> accFreeInTypesLeftToRight g cxFlag thruFlag (accFreeInTypeLeftToRight g cxFlag thruFlag acc h) t let freeInTypeLeftToRight g thruFlag ty = accFreeInTypeLeftToRight g true thruFlag emptyFreeTyparsLeftToRight ty |> List.rev let freeInTypesLeftToRight g thruFlag ty = accFreeInTypesLeftToRight g true thruFlag emptyFreeTyparsLeftToRight ty |> List.rev let freeInTypesLeftToRightSkippingConstraints g ty = accFreeInTypesLeftToRight g false true emptyFreeTyparsLeftToRight ty |> List.rev let valOfBind (b:Binding) = b.Var let valsOfBinds (binds:Bindings) = binds |> FlatList.map (fun b -> b.Var) //-------------------------------------------------------------------------- // Values representing member functions on F# types //-------------------------------------------------------------------------- // Pull apart the type for an F# value that represents an object model method. Do not strip off a 'unit' argument. // Review: Should GetMemberTypeInFSharpForm have any other direct callers? let GetMemberTypeInFSharpForm g memberFlags arities ty m = let tps,argInfos,rty,retInfo = GetTopValTypeInFSharpForm g arities ty m let numObjArgs = if memberFlags.IsInstance then 1 else 0 let argInfos = if numObjArgs = 1 then match argInfos with | [] -> errorR(InternalError("value does not have a valid member type",m)); argInfos | _::t -> t else argInfos tps,argInfos,rty,retInfo // Check that an F# value represents an object model method. // It will also always have an arity (inferred from syntax). let checkMemberVal membInfo arity m = match membInfo, arity with | None,_ -> error(InternalError("checkMemberVal - no membInfo" , m)) | _,None -> error(InternalError("checkMemberVal - no arity", m)) | Some membInfo,Some arity -> (membInfo,arity) let checkMemberValRef (vref:ValRef) = checkMemberVal vref.MemberInfo vref.ValReprInfo vref.Range let GetTopValTypeInCompiledForm g topValInfo typ m = let tps,paramArgInfos,rty,retInfo = GetTopValTypeInFSharpForm g topValInfo typ m // Eliminate lone single unit arguments let paramArgInfos = match paramArgInfos, topValInfo.ArgInfos with // static member and module value unit argument elimination | [[(_argType,_)]] ,[[]] -> //assert isUnitTy g argType [[]] // instance member unit argument elimination | [objInfo;[(_argType,_)]] ,[[_objArg];[]] -> //assert isUnitTy g argType [objInfo; []] | _ -> paramArgInfos let rty = (if isUnitTy g rty then None else Some rty) (tps,paramArgInfos,rty,retInfo) // Pull apart the type for an F# value that represents an object model method // and see the "member" form for the type, i.e. // detect methods with no arguments by (effectively) looking for single argument type of 'unit'. // The analysis is driven of the inferred arity information for the value. // // This is used not only for the compiled form - it's also used for all type checking and object model // logic such as determining if abstract methods have been implemented or not, and how // many arguments the method takes etc. let GetMemberTypeInMemberForm g memberFlags topValInfo typ m = let tps,paramArgInfos,rty,retInfo = GetMemberTypeInFSharpForm g memberFlags topValInfo typ m // Eliminate lone single unit arguments let paramArgInfos = match paramArgInfos, topValInfo.ArgInfos with // static member and module value unit argument elimination | [[(argType,_)]] ,[[]] -> assert isUnitTy g argType [[]] // instance member unit argument elimination | [[(argType,_)]] ,[[_objArg];[]] -> assert isUnitTy g argType [[]] | _ -> paramArgInfos let rty = (if isUnitTy g rty then None else Some rty) (tps,paramArgInfos,rty,retInfo) let GetTypeOfMemberInMemberForm g (vref:ValRef) = //assert (not vref.IsExtensionMember) let membInfo,topValInfo = checkMemberValRef vref GetMemberTypeInMemberForm g membInfo.MemberFlags topValInfo vref.Type vref.Range let GetTypeOfMemberInFSharpForm g (vref:ValRef) = let membInfo,topValInfo = checkMemberValRef vref GetMemberTypeInFSharpForm g membInfo.MemberFlags topValInfo vref.Type vref.Range /// Match up the type variables on an member value with the type /// variables on the apparent enclosing type let PartitionValTypars g (v:Val) = match v.ValReprInfo with | None -> error(InternalError("PartitionValTypars: not a top value", v.Range)) | Some arities -> let fullTypars,_ = destTopForallTy g arities v.Type let parent = v.MemberApparentParent let parentTypars = parent.TyparsNoRange let nparentTypars = parentTypars.Length if nparentTypars <= fullTypars.Length then let memberParentTypars,memberMethodTypars = List.chop nparentTypars fullTypars let memberToParentInst,tinst = mkTyparToTyparRenaming memberParentTypars parentTypars Some(parentTypars,memberParentTypars,memberMethodTypars,memberToParentInst,tinst) else None let PartitionValRefTypars g (vref: ValRef) = PartitionValTypars g vref.Deref /// Get the arguments for an F# value that represents an object model method let ArgInfosOfMemberVal g (v:Val) = let membInfo,topValInfo = checkMemberVal v.MemberInfo v.ValReprInfo v.Range let _,arginfos,_,_ = GetMemberTypeInMemberForm g membInfo.MemberFlags topValInfo v.Type v.Range arginfos let ArgInfosOfMember g (vref: ValRef) = ArgInfosOfMemberVal g vref.Deref let GetFSharpViewOfReturnType g retTy = match retTy with | None -> g.unit_ty | Some retTy -> retTy /// Get the property "type" (getter return type) for an F# value that represents a getter or setter /// of an object model property. let ReturnTypeOfPropertyVal g (v:Val) = let membInfo,topValInfo = checkMemberVal v.MemberInfo v.ValReprInfo v.Range match membInfo.MemberFlags.MemberKind with | MemberKind.PropertySet -> let _,arginfos,_,_ = GetMemberTypeInMemberForm g membInfo.MemberFlags topValInfo v.Type v.Range if not arginfos.IsEmpty && not arginfos.Head.IsEmpty then arginfos.Head |> List.last |> fst else error(Error(FSComp.SR.tastValueDoesNotHaveSetterType(), v.Range)); | MemberKind.PropertyGet -> let _,_,rty,_ = GetMemberTypeInMemberForm g membInfo.MemberFlags topValInfo v.Type v.Range GetFSharpViewOfReturnType g rty | _ -> error(InternalError("ReturnTypeOfPropertyVal",v.Range)) /// Get the property arguments for an F# value that represents a getter or setter /// of an object model property. let ArgInfosOfPropertyVal g (v:Val) = let membInfo,topValInfo = checkMemberVal v.MemberInfo v.ValReprInfo v.Range match membInfo.MemberFlags.MemberKind with | MemberKind.PropertyGet -> ArgInfosOfMemberVal g v |> List.concat | MemberKind.PropertySet -> let _,arginfos,_,_ = GetMemberTypeInMemberForm g membInfo.MemberFlags topValInfo v.Type v.Range if not arginfos.IsEmpty && not arginfos.Head.IsEmpty then arginfos.Head |> List.frontAndBack |> fst else error(Error(FSComp.SR.tastValueDoesNotHaveSetterType(), v.Range)); | _ -> error(InternalError("ArgInfosOfPropertyVal",v.Range)) //--------------------------------------------------------------------------- // Generalize type constructors to types //--------------------------------------------------------------------------- let generalTyconRefInst (tc:TyconRef) = generalizeTypars tc.TyparsNoRange let generalizeTyconRef tc = let tinst = generalTyconRefInst tc tinst,TType_app(tc, tinst) let generalizedTyconRef tc = TType_app(tc, generalTyconRefInst tc) let isTTyparSupportsStaticMethod = function TyparConstraint.MayResolveMember _ -> true | _ -> false let isTTyparCoercesToType = function TyparConstraint.CoercesTo _ -> true | _ -> false //-------------------------------------------------------------------------- // Print Signatures/Types - prelude //-------------------------------------------------------------------------- let prefixOfStaticReq s = match s with | NoStaticReq -> "'" | HeadTypeStaticReq -> " ^" let prefixOfRigidTypar (typar:Typar) = if (typar.Rigidity <> TyparRigidity.Rigid) then "_" else "" //--------------------------------------------------------------------------- // Prettify: PrettyTyparNames/PrettifyTypes - make typar names human friendly //--------------------------------------------------------------------------- type TyparConstraintsWithTypars = (Typar * TyparConstraint) list module PrettyTypes = begin let newPrettyTypar (tp:Typar) nm = NewTypar (tp.Kind, tp.Rigidity,Typar(ident(nm, tp.Range),tp.StaticReq,false),false,TyparDynamicReq.Yes,[],false,false) let NewPrettyTypars renaming tps names = let niceTypars = List.map2 newPrettyTypar tps names let tl,_tt = mkTyparToTyparRenaming tps niceTypars in let renaming = renaming @ tl (tps,niceTypars) ||> List.iter2 (fun tp tpnice -> tpnice.FixupConstraints (instTyparConstraints renaming tp.Constraints)) ; niceTypars, renaming // We choose names for type parameters from 'a'..'t' // We choose names for unit-of-measure from 'u'..'z' // If we run off the end of these ranges, we use 'aX' for positive integer X or 'uX' for positive integer X // Finally, we skip any names already in use let NeedsPrettyTyparName (tp:Typar) = tp.IsCompilerGenerated && tp.Data.typar_il_name.IsNone && (tp.Data.typar_id.idText = unassignedTyparName) let PrettyTyparNames pred alreadyInUse tps = let rec choose (tps:Typar list) (typeIndex, measureIndex) acc = match tps with | [] -> List.rev acc | tp::tps -> // Use a particular name, possibly after incrementing indexes let useThisName (nm, typeIndex, measureIndex) = choose tps (typeIndex, measureIndex) (nm::acc) // Give up, try again with incremented indexes let tryAgain (typeIndex, measureIndex) = choose (tp::tps) (typeIndex, measureIndex) acc let tryName (nm, typeIndex, measureIndex) f = if List.mem nm alreadyInUse then f() else useThisName (nm, typeIndex, measureIndex) if pred tp then if NeedsPrettyTyparName tp then let (typeIndex, measureIndex, baseName, letters, i) = match tp.Kind with | TyparKind.Type -> (typeIndex+1,measureIndex,'a',20,typeIndex) | TyparKind.Measure -> (typeIndex,measureIndex+1,'u',6,measureIndex) let nm = if i < letters then String.make 1 (char(int baseName + i)) else String.make 1 baseName + string (i-letters+1) tryName (nm, typeIndex, measureIndex) (fun () -> tryAgain (typeIndex, measureIndex)) else tryName (tp.Name, typeIndex, measureIndex) (fun () -> // Use the next index and append it to the natural name let (typeIndex, measureIndex, nm) = match tp.Kind with | TyparKind.Type -> (typeIndex+1,measureIndex,tp.Name+ string typeIndex) | TyparKind.Measure -> (typeIndex,measureIndex+1,tp.Name+ string measureIndex) tryName (nm,typeIndex, measureIndex) (fun () -> tryAgain (typeIndex, measureIndex))) else useThisName (tp.Name,typeIndex, measureIndex) choose tps (0,0) [] let PrettifyTypes g foldTys mapTys tys = let ftps = foldTys (accFreeInTypeLeftToRight g true false) emptyFreeTyparsLeftToRight tys let ftps = List.rev ftps let rec computeKeep (keep: Typars) change (tps: Typars) = match tps with | [] -> List.rev keep, List.rev change | tp :: rest -> if not (NeedsPrettyTyparName tp) && (not (keep |> List.exists (fun tp2 -> tp.Name = tp2.Name))) then computeKeep (tp :: keep) change rest else computeKeep keep (tp :: change) rest let keep,change = computeKeep [] [] ftps // change |> List.iter (fun tp -> dprintf "change typar: %s %s %d\n" tp.Name (tp.DisplayName) (stamp_of_typar tp)); // keep |> List.iter (fun tp -> dprintf "keep typar: %s %s %d\n" tp.Name (tp.DisplayName) (stamp_of_typar tp)); let alreadyInUse = keep |> List.map (fun x -> x.Name) let names = PrettyTyparNames (fun x -> List.memq x change) alreadyInUse ftps let niceTypars, renaming = NewPrettyTypars [] ftps names // strip universal types for printing let getTauStayTau t = match t with | TType_forall (_,tau) -> tau | _ -> t let tys = mapTys getTauStayTau tys let prettyTypars = mapTys (instType renaming) tys // niceTypars |> List.iter (fun tp -> dprintf "nice typar: %d\n" (stamp_of_typar tp)); * let tpconstraints = niceTypars |> List.collect (fun tpnice -> List.map (fun tpc -> tpnice,tpc) tpnice.Constraints) renaming, prettyTypars, tpconstraints let PrettifyTypes1 g x = PrettifyTypes g (fun f -> f) (fun f -> f) x let PrettifyTypes2 g x = PrettifyTypes g (fun f -> foldPair (f,f)) (fun f -> mapPair (f,f)) x let PrettifyTypesN g x = PrettifyTypes g List.fold List.map x let PrettifyTypesN1 g (x:UncurriedArgInfos * TType) = PrettifyTypes g (fun f -> foldPair (List.fold (fold1Of2 f), f)) (fun f -> mapPair (List.map (map1Of2 f),f)) x let PrettifyTypesNN1 g x = PrettifyTypes g (fun f -> foldTriple (List.fold f, List.fold (fold1Of2 f),f)) (fun f -> mapTriple (List.map f, List.map (map1Of2 f), f)) x let PrettifyTypesNM1 g (x:TType list * CurriedArgInfos * TType) = PrettifyTypes g (fun f -> foldTriple (List.fold f, List.fold (List.fold (fold1Of2 f)),f)) (fun f -> mapTriple (List.map f, List.mapSquared (map1Of2 f), f)) x end module SimplifyTypes = begin // CAREFUL! This function does NOT walk constraints let rec foldTypeButNotConstraints f z typ = let typ = stripTyparEqns typ let z = f z typ match typ with | TType_forall (_,body) -> foldTypeButNotConstraints f z body | TType_app (_,tinst) -> List.fold (foldTypeButNotConstraints f) z tinst | TType_ucase (_,tinst) -> List.fold (foldTypeButNotConstraints f) z tinst | TType_tuple typs -> List.fold (foldTypeButNotConstraints f) z typs | TType_fun (s,t) -> foldTypeButNotConstraints f (foldTypeButNotConstraints f z s) t | TType_var _ -> z | TType_measure _ -> z let incM x m = if Zmap.mem x m then Zmap.add x (1 + Zmap.find x m) m else Zmap.add x 1 m let accTyparCounts z typ = // Walk type to determine typars and their counts (for pprinting decisions) foldTypeButNotConstraints (fun z typ -> match typ with | TType_var tp when tp.Rigidity = TyparRigidity.Rigid -> incM tp z | _ -> z) z typ let emptyTyparCounts = Zmap.empty typarOrder // print multiple fragments of the same type using consistent naming and formatting let accTyparCountsMulti acc l = List.fold accTyparCounts acc l type TypeSimplificationInfo = { singletons : Typar Zset; inplaceConstraints : Zmap; postfixConstraints : (Typar * TyparConstraint) list; } let typeSimplificationInfo0 = { singletons = Zset.empty typarOrder; inplaceConstraints = Zmap.empty typarOrder; postfixConstraints = [] } let categorizeConstraints simplify m cxs = let singletons = if simplify then Zmap.chooseL (fun tp n -> if n=1 then Some tp else None) m else [] let singletons = Zset.addList singletons (Zset.empty typarOrder) // Here, singletons are typars that occur once in the type. // However, they may also occur in a type constraint. // If they do, they are really multiple occurance - so we should remove them. let constraintTypars = (freeInTyparConstraints CollectTyparsNoCaching (List.map snd cxs)).FreeTypars let usedInTypeConstraint typar = Zset.contains typar constraintTypars let singletons = singletons |> Zset.filter (usedInTypeConstraint >> not) // Here, singletons should really be used once let inplace,postfix = cxs |> List.partition (fun (tp,tpc) -> simplify && isTTyparCoercesToType tpc && Zset.contains tp singletons && tp.Constraints.Length = 1) let inplace = inplace |> List.map (function (tp,TyparConstraint.CoercesTo(ty,_)) -> tp,ty | _ -> failwith "not isTTyparCoercesToType") { singletons = singletons; inplaceConstraints = Zmap.ofList typarOrder inplace; postfixConstraints = postfix; } let CollectInfo simplify tys cxs = categorizeConstraints simplify (accTyparCountsMulti emptyTyparCounts tys) cxs end //-------------------------------------------------------------------------- // Print Signatures/Types //-------------------------------------------------------------------------- [] type DisplayEnv = { includeStaticParametersInTypeNames : bool; openTopPathsSorted: Lazy; openTopPathsRaw: string list list; shortTypeNames: bool; suppressNestedTypes: bool; maxMembers : int option; showObsoleteMembers: bool; showTyparBinding: bool; showImperativeTyparAnnotations: bool; suppressInlineKeyword: bool; suppressMutableKeyword: bool; showMemberContainers:bool; shortConstraints:bool; useColonForReturnType:bool; showAttributes:bool; showOverrides:bool; showConstraintTyparAnnotations: bool; abbreviateAdditionalConstraints: bool; showTyparDefaultConstraints : bool; g: TcGlobals; contextAccessibility: Accessibility; generatedValueLayout:(Val -> layout option); } member x.SetOpenPaths(paths) = { x with openTopPathsSorted = (lazy (paths |> List.sortWith (fun p1 p2 -> -(compare p1 p2)))); openTopPathsRaw = paths } static member Empty tcGlobals = { includeStaticParametersInTypeNames=false; openTopPathsRaw = []; openTopPathsSorted = notlazy []; shortTypeNames=false; suppressNestedTypes=false; maxMembers=None; showObsoleteMembers=true; showTyparBinding = false; showImperativeTyparAnnotations=false; suppressInlineKeyword=false; suppressMutableKeyword=false; showMemberContainers=false; showAttributes=false; showOverrides=true; showConstraintTyparAnnotations=true; abbreviateAdditionalConstraints=false; showTyparDefaultConstraints=false; shortConstraints=false; useColonForReturnType=false; g=tcGlobals; contextAccessibility = taccessPublic; generatedValueLayout = (fun _ -> None) } member denv.AddOpenPath path = denv.SetOpenPaths (path :: denv.openTopPathsRaw) member denv.AddOpenModuleOrNamespace (modref: ModuleOrNamespaceRef) = denv.AddOpenPath (demangledPathOfCompPath (fullCompPathOfModuleOrNamespace modref.Deref)) member denv.AddAccessibility access = { denv with contextAccessibility = combineAccess denv.contextAccessibility access } let (+.+) s1 s2 = (if s1 = "" then s2 else s1+"."+s2) let fullNameOfParentOfPubPath pp = match pp with | PubPath([| _ |]) -> None | pp -> Some(textOfPath (Array.toList pp.EnclosingPath)) let fullNameOfPubPath (PubPath(p)) = textOfPath (Array.toList p) let fullNameOfParentOfNonLocalEntityRef (nlr: NonLocalEntityRef) = if nlr.Path.Length = 0 || nlr.Path.Length = 1 then None else Some (textOfArrPath nlr.EnclosingMangledPath) // <--- BAD BAD BAD: this is a mangled path. This is wrong for nested modules let fullNameOfParentOfEntityRef eref = match eref with | ERefLocal x -> match x.PublicPath with | None -> None | Some ppath -> fullNameOfParentOfPubPath ppath | ERefNonLocal nlr -> fullNameOfParentOfNonLocalEntityRef nlr let fullNameOfEntityRef nmF xref = match fullNameOfParentOfEntityRef xref with | None -> nmF xref | Some pathText -> pathText +.+ nmF xref let fullNameOfParentOfValRef vref = match vref with | VRefLocal x -> match x.PublicPath with | None -> None | Some (ValPubPath(pp,_)) -> Some(fullNameOfPubPath pp) | VRefNonLocal nlr -> Some (fullNameOfEntityRef (fun (x:EntityRef) -> x.DemangledModuleOrNamespaceName) nlr.EnclosingEntity) let fullDisplayTextOfParentOfModRef r = fullNameOfParentOfEntityRef r let fullDisplayTextOfModRef r = fullNameOfEntityRef (fun (x:EntityRef) -> x.DemangledModuleOrNamespaceName) r let fullDisplayTextOfTyconRef r = fullNameOfEntityRef (fun (tc:TyconRef) -> tc.DisplayNameWithStaticParametersAndUnderscoreTypars) r let fullDisplayTextOfExnRef r = fullNameOfEntityRef (fun (tc:TyconRef) -> tc.DisplayNameWithStaticParametersAndUnderscoreTypars) r let fullDisplayTextOfUnionCaseRef (ucref:UnionCaseRef) = fullDisplayTextOfTyconRef ucref.TyconRef +.+ ucref.CaseName let fullDisplayTextOfRecdFieldRef (rfref:RecdFieldRef) = fullDisplayTextOfTyconRef rfref.TyconRef +.+ rfref.FieldName let fullDisplayTextOfValRef (vref:ValRef) = match fullNameOfParentOfValRef vref with | None -> vref.DisplayName | Some pathText -> pathText +.+ vref.DisplayName let fullMangledPathToTyconRef (tcref:TyconRef) = match tcref with | ERefLocal _ -> (match tcref.PublicPath with None -> [| |] | Some pp -> pp.EnclosingPath) | ERefNonLocal nlr -> nlr.EnclosingMangledPath let qualifiedMangledNameOfTyconRef tcref nm = String.concat "-" (Array.toList (fullMangledPathToTyconRef tcref) @ [ tcref.LogicalName + "-" + nm ]) let rec firstEq p1 p2 = match p1 with | [] -> true | h1::t1 -> match p2 with | h2::t2 -> h1 = h2 && firstEq t1 t2 | _ -> false let rec firstRem p1 p2 = match p1 with [] -> p2 | _::t1 -> firstRem t1 (List.tail p2) let trimPathByDisplayEnv denv path = let findOpenedNamespace opened_path = if firstEq opened_path path then let t2 = firstRem opened_path path if t2 <> [] then Some(textOfPath t2+".") else Some("") else None match List.tryPick findOpenedNamespace (denv.openTopPathsSorted.Force()) with | Some s -> s | None -> if isNil path then "" else textOfPath path + "." let superOfTycon g (tycon:Tycon) = match tycon.TypeContents.tcaug_super with | None -> g.obj_ty | Some ty -> ty //---------------------------------------------------------------------------- // Detect attributes //---------------------------------------------------------------------------- // AbsIL view of attributes (we read these from .NET binaries) let isILAttrib (tref:ILTypeRef) (attr: ILAttribute) = (attr.Method.EnclosingType.TypeSpec.Name = tref.Name) && (attr.Method.EnclosingType.TypeSpec.Enclosing = tref.Enclosing) // REVIEW: consider supporting querying on Abstract IL custom attributes. // These linear iterations cost us a fair bit when there are lots of attributes // on imported types. However this is fairly rare and can also be solved by caching the // results of attribute lookups in the TAST let HasILAttribute tref (attrs: ILAttributes) = List.exists (isILAttrib tref) attrs.AsList let TryDecodeILAttribute g tref scope (attrs: ILAttributes) = attrs.AsList |> List.tryPick(fun x -> if isILAttrib tref x then Some(decodeILAttribData g.ilg x scope) else None) // This one is done by name to ensure the compiler doesn't take a dependency on dereferencing a type that only exists in .NET 3.5 let ILThingHasExtensionAttribute (attrs : ILAttributes) = attrs.AsList |> List.exists (fun attr -> attr.Method.EnclosingType.TypeSpec.Name = "System.Runtime.CompilerServices.ExtensionAttribute") // F# view of attributes (these get converted to AbsIL attributes in ilxgen) let IsMatchingFSharpAttribute g (AttribInfo(_,tcref)) (Attrib(tcref2,_,_,_,_,_,_)) = tyconRefEq g tcref tcref2 let HasFSharpAttribute g tref attrs = List.exists (IsMatchingFSharpAttribute g tref) attrs let findAttrib g tref attrs = List.find (IsMatchingFSharpAttribute g tref) attrs let TryFindFSharpAttribute g tref attrs = List.tryFind (IsMatchingFSharpAttribute g tref) attrs let (|ExtractAttribNamedArg|_|) nm args = args |> List.tryPick (function (AttribNamedArg(nm2,_,_,v)) when nm = nm2 -> Some v | _ -> None) let (|AttribInt32Arg|_|) = function AttribExpr(_,Expr.Const (Const.Int32(n),_,_)) -> Some(n) | _ -> None let (|AttribInt16Arg|_|) = function AttribExpr(_,Expr.Const (Const.Int16(n),_,_)) -> Some(n) | _ -> None let (|AttribBoolArg|_|) = function AttribExpr(_,Expr.Const (Const.Bool(n),_,_)) -> Some(n) | _ -> None let (|AttribStringArg|_|) = function AttribExpr(_,Expr.Const (Const.String(n),_,_)) -> Some(n) | _ -> None let TryFindFSharpBoolAttribute g nm attrs = match TryFindFSharpAttribute g nm attrs with | Some(Attrib(_,_,[ ],_,_,_,_)) -> Some(true) | Some(Attrib(_,_,[ AttribBoolArg(b) ],_,_,_,_)) -> Some(b) | _ -> None let TryFindFSharpInt32Attribute g nm attrs = match TryFindFSharpAttribute g nm attrs with | Some(Attrib(_,_,[ AttribInt32Arg(b) ],_,_,_,_)) -> Some b | _ -> None let TryFindFSharpStringAttribute g nm attrs = match TryFindFSharpAttribute g nm attrs with | Some(Attrib(_,_,[ AttribStringArg(b) ],_,_,_,_)) -> Some b | _ -> None let TryFindILAttribute (AttribInfo (atref,_)) attrs = HasILAttribute atref attrs //------------------------------------------------------------------------- // List and reference types... //------------------------------------------------------------------------- let destByrefTy g ty = if isByrefTy g ty then List.head (argsOfAppTy g ty) else failwith "destByrefTy: not a byref type" let isRefCellTy g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> tyconRefEq g g.refcell_tcr_canon tcref let destRefCellTy g ty = if isRefCellTy g ty then List.head (argsOfAppTy g ty) else failwith "destRefCellTy: not a ref type" let StripSelfRefCell(g:TcGlobals,baseOrThisInfo:ValBaseOrThisInfo,tau: TType) : TType = if baseOrThisInfo = CtorThisVal && isRefCellTy g tau then destRefCellTy g tau else tau let mkRefCellTy g ty = TType_app(g.refcell_tcr_nice,[ty]) let mkLazyTy g ty = TType_app(g.lazy_tcr_nice,[ty]) let mkPrintfFormatTy g aty bty cty dty ety = TType_app(g.format_tcr, [aty;bty;cty;dty; ety]) let mkOptionTy g ty = TType_app (g.option_tcr_nice, [ty]) let mkListTy g ty = TType_app (g.list_tcr_nice, [ty]) let isOptionTy g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> tyconRefEq g g.option_tcr_canon tcref let tryDestOptionTy g ty = match argsOfAppTy g ty with | [ty1] when isOptionTy g ty -> Some ty1 | _ -> None let destOptionTy g ty = match tryDestOptionTy g ty with | Some ty -> ty | None -> failwith "destOptionTy: not an option type" let isLinqExpressionTy g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> tyconRefEq g g.system_LinqExpression_tcref tcref let tryDestLinqExpressionTy g ty = match argsOfAppTy g ty with | [ty1] when isLinqExpressionTy g ty -> Some ty1 | _ -> None let destLinqExpressionTy g ty = match tryDestLinqExpressionTy g ty with | Some ty -> ty | None -> failwith "destLinqExpressionTy: not an expression type" (* let isQuoteExprTy g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> tyconRefEq g g.expr_tcr tcref let tryDestQuoteExprTy g ty = match argsOfAppTy g ty with | [ty1] when isQuoteExprTy g ty -> Some ty1 | _ -> None let destQuoteExprTy g ty = match tryDestQuoteExprTy g ty with | Some ty -> ty | None -> failwith "destQuoteExprTy: not an expression type" *) let mkNoneCase g = mkUnionCaseRef g.option_tcr_canon "None" let mkSomeCase g = mkUnionCaseRef g.option_tcr_canon "Some" type ValRef with member vref.IsDispatchSlot = match vref.MemberInfo with | Some membInfo -> membInfo.MemberFlags.IsDispatchSlot | None -> false let (|UnopExpr|_|) _g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,_,[arg1],_) -> Some (vref, arg1) | _ -> None let (|BinopExpr|_|) _g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,_,[arg1;arg2],_) -> Some (vref, arg1, arg2) | _ -> None let (|SpecificUnopExpr|_|) g vrefReqd expr = match expr with | UnopExpr g (vref, arg1) when valRefEq g vref vrefReqd -> Some arg1 | _ -> None let (|SpecificBinopExpr|_|) g vrefReqd expr = match expr with | BinopExpr g (vref, arg1, arg2) when valRefEq g vref vrefReqd -> Some (arg1, arg2) | _ -> None let (|EnumExpr|_|) g expr = (|SpecificUnopExpr|_|) g g.enum_vref expr let (|BitwiseOrExpr|_|) g expr = (|SpecificBinopExpr|_|) g g.bitwise_or_vref expr let (|AttribBitwiseOrExpr|_|) g expr = match expr with | BitwiseOrExpr g (arg1, arg2) -> Some(arg1, arg2) // Special workaround, only used when compiling FSharp.Core.dll. Uses of 'a ||| b' occur before the '|||' bitwise or operator // is defined. These get through type checking because enums implicitly support the '|||' operator through // the automatic resolution of undefined operators (see tc.fs, Item.ImplicitOp). This then compiles as an // application of a lambda to two arguments. We recognize this pattern here | Expr.App(Expr.Lambda _,_,_,[arg1;arg2],_) when g.compilingFslib -> Some(arg1, arg2) | _ -> None let isUncheckedDefaultOfValRef g vref = valRefEq g vref g.unchecked_defaultof_vref // There is an internal version of typeof defined in prim-types.fs that needs to be detected || (g.compilingFslib && vref.LogicalName = "defaultof") let isTypeOfValRef g vref = valRefEq g vref g.typeof_vref // There is an internal version of typeof defined in prim-types.fs that needs to be detected || (g.compilingFslib && vref.LogicalName = "typeof") let isSizeOfValRef g vref = valRefEq g vref g.sizeof_vref // There is an internal version of typeof defined in prim-types.fs that needs to be detected || (g.compilingFslib && vref.LogicalName = "sizeof") let isTypeDefOfValRef g vref = valRefEq g vref g.typedefof_vref // There is an internal version of typedefof defined in prim-types.fs that needs to be detected || (g.compilingFslib && vref.LogicalName = "typedefof") let (|UncheckedDefaultOfExpr|_|) g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,[ty],[],_) when isUncheckedDefaultOfValRef g vref -> Some ty | _ -> None let (|TypeOfExpr|_|) g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,[ty],[],_) when isTypeOfValRef g vref -> Some ty | _ -> None let (|SizeOfExpr|_|) g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,[ty],[],_) when isSizeOfValRef g vref -> Some ty | _ -> None let (|TypeDefOfExpr|_|) g expr = match expr with | Expr.App(Expr.Val(vref,_,_),_,[ty],[],_) when isTypeDefOfValRef g vref -> Some ty | _ -> None //-------------------------------------------------------------------------- // DEBUG layout //--------------------------------------------------------------------------- module DebugPrint = begin open Microsoft.FSharp.Compiler.Layout open PrettyTypes let layoutRanges = ref false let squareAngleL x = leftL "[<" ^^ x ^^ rightL ">]" let angleL x = sepL "<" ^^ x ^^ rightL ">" let braceL x = leftL "{" ^^ x ^^ rightL "}" let boolL = function true -> wordL "true" | false -> wordL "false" let intL (n:int) = wordL (string n ) let int64L (n:int64) = wordL (string n ) let jlistL xL xmap = QueueList.foldBack (fun x z -> z @@ xL x) xmap emptyL let bracketIfL x lyt = if x then bracketL lyt else lyt let lvalopL x = match x with | LGetAddr -> wordL "LGetAddr" | LByrefGet -> wordL "LByrefGet" | LSet -> wordL "LSet" | LByrefSet -> wordL "LByrefSet" let angleBracketL l = leftL "<" ^^ l ^^ rightL ">" let angleBracketListL l = angleBracketL (sepListL (sepL ",") l) let layoutMemberFlags memFlags = let stat = if memFlags.IsInstance || (memFlags.MemberKind = MemberKind.Constructor) then emptyL else wordL "static" let stat = if memFlags.IsDispatchSlot then stat ++ wordL "abstract" elif memFlags.IsOverrideOrExplicitImpl then stat ++ wordL "override" else stat stat let stampL _n w = #if DEBUG if !verboseStamps then w ^^ sepL "#" ^^ int64L _n else #endif w let layoutTyconRef (tc:TyconRef) = wordL tc.DisplayNameWithStaticParameters |> stampL tc.Stamp let rec auxTypeL env typ = auxTypeWrapL env false typ and auxTypeAtomL env typ = auxTypeWrapL env true typ and auxTyparsL env tcL prefix tinst = match tinst with | [] -> tcL | [t] -> let tL = auxTypeAtomL env t if prefix then tcL ^^ angleBracketL tL else tL ^^ tcL | _ -> let tinstL = List.map (auxTypeL env) tinst if prefix then tcL ^^ angleBracketListL tinstL else tupleL tinstL ^^ tcL and auxTypeWrapL env isAtomic typ = let wrap x = bracketIfL isAtomic x in // wrap iff require atomic expr match stripTyparEqns typ with | TType_forall (typars,rty) -> (leftL "!" ^^ layoutTyparDecls typars --- auxTypeL env rty) |> wrap | TType_ucase (UCRef(tcref,_),tinst) | TType_app (tcref,tinst) -> let prefix = tcref.IsPrefixDisplay let tcL = layoutTyconRef tcref auxTyparsL env tcL prefix tinst | TType_tuple typs -> sepListL (wordL "*") (List.map (auxTypeAtomL env) typs) |> wrap | TType_fun (f,x) -> ((auxTypeAtomL env f ^^ wordL "->") --- auxTypeL env x) |> wrap | TType_var typar -> auxTyparWrapL env isAtomic typar | TType_measure unt -> #if DEBUG leftL "{" ^^ (match !global_g with | None -> wordL "" | Some g -> let sortVars (vs:(Typar * int) list) = vs |> List.sortBy (fun (v,_) -> v.DisplayName) let sortCons (cs:(TyconRef * int) list) = cs |> List.sortBy (fun (c,_) -> c.DisplayName) let negvs,posvs = ListMeasureVarOccsWithNonZeroExponents unt |> sortVars |> List.partition (fun (_,e) -> e<0) let negcs,poscs = ListMeasureConOccsWithNonZeroExponents g false unt |> sortCons |> List.partition (fun (_,e) -> e<0) let unparL (uv:Typar) = wordL ("'" ^ uv.DisplayName) let unconL tc = layoutTyconRef tc let prefix = spaceListL (List.map (fun (v,e) -> if e=1 then unparL v else unparL v -- wordL (sprintf "^ %d" e)) posvs @ List.map (fun (c,e) -> if e=1 then unconL c else unconL c -- wordL (sprintf "^ %d" e)) poscs) let postfix = spaceListL (List.map (fun (v,e) -> if e= -1 then unparL v else unparL v -- wordL (sprintf "^ %d" (-e))) negvs @ List.map (fun (c,e) -> if e= -1 then unconL c else unconL c -- wordL (sprintf "^ %d" (-e))) negcs) match (negvs,negcs) with | [],[] -> prefix | _ -> prefix ^^ sepL "/" ^^ postfix) ^^ rightL "}" #else unt |> ignore wordL "" #endif and auxTyparWrapL (env:SimplifyTypes.TypeSimplificationInfo) isAtomic (typar:Typar) = let wrap x = bracketIfL isAtomic x in // wrap iff require atomic expr // There are several cases for pprinting of typar. // // 'a - is multiple occurance. // #Type - inplace coercion constraint and singleton // ('a :> Type) - inplace coercion constraint not singleton // ('a.opM : S->T) - inplace operator constraint let tpL = wordL (prefixOfStaticReq typar.StaticReq + prefixOfRigidTypar typar + typar.DisplayName) let varL = tpL |> stampL typar.Stamp match Zmap.tryFind typar env.inplaceConstraints with | Some (typarConstrTyp) -> if Zset.contains typar env.singletons then leftL "#" ^^ auxTyparConstraintTypL env typarConstrTyp else (varL ^^ sepL ":>" ^^ auxTyparConstraintTypL env typarConstrTyp) |> wrap | _ -> varL and auxTypar2L env typar = auxTyparWrapL env false typar and auxTyparAtomL env typar = auxTyparWrapL env true typar and auxTyparConstraintTypL env ty = auxTypeL env ty and auxTraitL env (ttrait: TraitConstraintInfo) = #if DEBUG let (TTrait(tys,nm,memFlags,argtys,rty,_)) = ttrait match !global_g with | None -> wordL "" | Some g -> let rty = GetFSharpViewOfReturnType g rty let stat = layoutMemberFlags memFlags let argsL = sepListL (wordL "*") (List.map (auxTypeAtomL env) argtys) let resL = auxTypeL env rty let methodTypeL = (argsL ^^ wordL "->") ++ resL bracketL (stat ++ bracketL (sepListL (wordL "or") (List.map (auxTypeAtomL env) tys)) ++ wordL "member" --- (wordL nm ^^ wordL ":" -- methodTypeL)) #else ignore (env,ttrait) wordL "trait" #endif and auxTyparConstraintL env (tp,tpc) = let constraintPrefix l = auxTypar2L env tp ^^ wordL ":" ^^ l match tpc with | TyparConstraint.CoercesTo(typarConstrTyp,_) -> auxTypar2L env tp ^^ wordL ":>" --- auxTyparConstraintTypL env typarConstrTyp | TyparConstraint.MayResolveMember(traitInfo,_) -> auxTypar2L env tp ^^ wordL ":" --- auxTraitL env traitInfo | TyparConstraint.DefaultsTo(_,ty,_) -> wordL "default" ^^ auxTypar2L env tp ^^ wordL ":" ^^ auxTypeL env ty | TyparConstraint.IsEnum(ty,_) -> auxTyparsL env (wordL "enum") true [ty] |> constraintPrefix | TyparConstraint.IsDelegate(aty,bty,_) -> auxTyparsL env (wordL "delegate") true [aty; bty] |> constraintPrefix | TyparConstraint.SupportsNull _ -> wordL "null" |> constraintPrefix | TyparConstraint.SupportsComparison _ -> wordL "comparison" |> constraintPrefix | TyparConstraint.SupportsEquality _ -> wordL "equality" |> constraintPrefix | TyparConstraint.IsNonNullableStruct _ -> wordL "struct" |> constraintPrefix | TyparConstraint.IsReferenceType _ -> wordL "not struct" |> constraintPrefix | TyparConstraint.IsUnmanaged _ -> wordL "unmanaged" |> constraintPrefix | TyparConstraint.SimpleChoice(tys,_) -> bracketL (sepListL (sepL "|") (List.map (auxTypeL env) tys)) |> constraintPrefix | TyparConstraint.RequiresDefaultConstructor _ -> bracketL (wordL "new : unit -> " ^^ (auxTypar2L env tp)) |> constraintPrefix and auxTyparConstraintsL env x = match x with | [] -> emptyL | cxs -> wordL "when" --- aboveListL (List.map (auxTyparConstraintL env) cxs) and typarL tp = auxTypar2L SimplifyTypes.typeSimplificationInfo0 tp and typarAtomL tp = auxTyparAtomL SimplifyTypes.typeSimplificationInfo0 tp and typeAtomL tau = let tau,cxs = tau,[] let env = SimplifyTypes.CollectInfo false [tau] cxs match env.postfixConstraints with | [] -> auxTypeAtomL env tau | _ -> bracketL (auxTypeL env tau --- auxTyparConstraintsL env env.postfixConstraints) and typeL tau = let tau,cxs = tau,[] let env = SimplifyTypes.CollectInfo false [tau] cxs match env.postfixConstraints with | [] -> auxTypeL env tau | _ -> (auxTypeL env tau --- auxTyparConstraintsL env env.postfixConstraints) and typarDeclL tp = let tau,cxs = mkTyparTy tp,(List.map (fun x -> (tp,x)) tp.Constraints) let env = SimplifyTypes.CollectInfo false [tau] cxs match env.postfixConstraints with | [] -> auxTypeL env tau | _ -> (auxTypeL env tau --- auxTyparConstraintsL env env.postfixConstraints) and layoutTyparDecls tps = angleBracketListL (List.map typarDeclL tps) //-------------------------------------------------------------------------- // DEBUG layout - types //-------------------------------------------------------------------------- let rangeL m = wordL (stringOfRange m) let instL tyL tys = match tys with | [] -> emptyL | tys -> sepL "@[" ^^ commaListL (List.map tyL tys) ^^ rightL "]" let valRefL (vr:ValRef) = wordL vr.LogicalName |> stampL vr.Stamp let layoutAttrib (Attrib(_,k,_,_,_,_,_)) = leftL "[<" ^^ (match k with | ILAttrib (ilmeth) -> wordL ilmeth.Name | FSAttrib (vref) -> valRefL vref) ^^ rightL ">]" let layoutAttribs attribs = aboveListL (List.map layoutAttrib attribs) let arityInfoL (ValReprInfo (tpNames,_,_) as tvd) = let ns = tvd.AritiesOfArgs in leftL "arity<" ^^ intL tpNames.Length ^^ sepL ">[" ^^ commaListL (List.map intL ns) ^^ rightL "]" let valL (vspec:Val) = let vsL = wordL (DecompileOpName vspec.LogicalName) |> stampL vspec.Stamp let vsL = #if DEBUG if !verboseStamps then vsL ^^ rightL (if isSome(vspec.PublicPath) then "+" else "-") else #endif vsL let vsL = vsL -- layoutAttribs (vspec.Attribs) vsL let typeOfValL (v:Val) = (valL v ^^ (if v.MustInline then wordL "inline " else emptyL) ^^ (if v.IsMutable then wordL "mutable " else emptyL) ^^ wordL ":") -- typeL v.Type let tslotparamL(TSlotParam(nmOpt, typ, inFlag, outFlag, _,_)) = (optionL wordL nmOpt) ^^ wordL ":" ^^ typeL typ ^^ (if inFlag then wordL "[in]" else emptyL) ^^ (if outFlag then wordL "[out]" else emptyL) ^^ (if inFlag then wordL "[opt]" else emptyL) let slotSigL (slotsig:SlotSig) = #if DEBUG let (TSlotSig(nm,typ,tps1,tps2,pms,rty)) = slotsig match !global_g with | None -> wordL "" | Some g -> let rty = GetFSharpViewOfReturnType g rty (wordL "slot" --- (wordL nm) ^^ wordL "@" ^^ typeL typ) -- (wordL "LAM" --- spaceListL (List.map typarL tps1) ^^ rightL ".") --- (wordL "LAM" --- spaceListL (List.map typarL tps2) ^^ rightL ".") --- (commaListL (List.map (List.map tslotparamL >> tupleL) pms)) ^^ (wordL "-> ") --- (typeL rty) #else ignore slotsig wordL "slotsig" #endif let rec MemberL (v:Val) (membInfo:ValMemberInfo) = (aboveListL [ wordL "compiled_name! = " ^^ wordL v.CompiledName ; wordL "membInfo-slotsig! = " ^^ listL slotSigL membInfo.ImplementedSlotSigs ]) and vspecAtBindL v = let vL = valL v in let mutL = (if v.IsMutable then wordL "mutable" ++ vL else vL) mutL --- (aboveListL (List.concat [[wordL ":" ^^ typeL v.Type]; (match v.MemberInfo with None -> [] | Some mem_info -> [wordL "!" ^^ MemberL v mem_info]); (match v.ValReprInfo with None -> [] | Some arity_info -> [wordL "#" ^^ arityInfoL arity_info])])) let unionCaseRefL (ucr:UnionCaseRef) = wordL ucr.CaseName let recdFieldRefL (rfref:RecdFieldRef) = wordL rfref.FieldName //-------------------------------------------------------------------------- // DEBUG layout - bind, expr, dtree etc. //-------------------------------------------------------------------------- let identL (id:Ident) = wordL id.idText // Note: We need nice printing of constants in order to print literals and attributes let constL c = let str = match c with | Const.Bool x -> if x then "true" else "false" | Const.SByte x -> (x |> string)+"y" | Const.Byte x -> (x |> string)+"uy" | Const.Int16 x -> (x |> string)+"s" | Const.UInt16 x -> (x |> string)+"us" | Const.Int32 x -> (x |> string) | Const.UInt32 x -> (x |> string)+"u" | Const.Int64 x -> (x |> string)+"L" | Const.UInt64 x -> (x |> string)+"UL" | Const.IntPtr x -> (x |> string)+"n" | Const.UIntPtr x -> (x |> string)+"un" | Const.Single d -> (let s = d.ToString("g12",System.Globalization.CultureInfo.InvariantCulture) if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s then s + ".0" else s) + "f" | Const.Double d -> let s = d.ToString("g12",System.Globalization.CultureInfo.InvariantCulture) if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s then s + ".0" else s | Const.Char c -> "'" + c.ToString() + "'" | Const.String bs -> "\"" + bs + "\"" | Const.Unit -> "()" | Const.Decimal bs -> string bs + "M" | Const.Zero -> "default" wordL str let rec tyconL (tycon:Tycon) = if tycon.IsModuleOrNamespace then entityL tycon else let lhsL = wordL (match tycon.TypeOrMeasureKind with TyparKind.Measure -> "[] type" | TyparKind.Type -> "type") ^^ wordL tycon.DisplayName ^^ layoutTyparDecls tycon.TyparsNoRange let lhsL = lhsL --- layoutAttribs tycon.Attribs let memberLs = let adhoc = tycon.MembersOfFSharpTyconSorted |> List.filter (fun v -> not v.IsDispatchSlot) |> List.filter (fun v -> not v.Deref.IsClassConstructor) // Don't print individual methods forming interface implementations - these are currently never exported |> List.filter (fun v -> isNil (Option.get v.MemberInfo).ImplementedSlotSigs) let iimpls = match tycon.TypeReprInfo with | TFsObjModelRepr r when (match r.fsobjmodel_kind with TTyconInterface -> true | _ -> false) -> [] | _ -> tycon.ImmediateInterfacesOfFSharpTycon let iimpls = iimpls |> List.filter (fun (_,compgen,_) -> not compgen) // if TTyconInterface, the iimpls should be printed as inheritted interfaces if (isNil adhoc && isNil iimpls) then emptyL else let iimplsLs = iimpls |> List.map (fun (ty,_,_) -> wordL "interface" --- typeL ty) let adhocLs = adhoc |> List.map (fun vref -> vspecAtBindL vref.Deref) (wordL "with" @@-- aboveListL (iimplsLs @ adhocLs)) @@ wordL "end" let layoutUnionCaseArgTypes argtys = sepListL (wordL "*") (List.map typeL argtys) let ucaseL prefixL ucase = let nmL = wordL (DemangleOperatorName ucase.Id.idText) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL "of") --- layoutUnionCaseArgTypes argtys let layoutUnionCases ucases = let prefixL = if List.length ucases > 1 then wordL "|" else emptyL List.map (ucaseL prefixL) ucases let layoutRecdField (fld:RecdField) = let lhs = wordL fld.Name let lhs = if fld.IsMutable then wordL "mutable" --- lhs else lhs (lhs ^^ rightL ":") --- typeL fld.FormalType let tyconReprL (repr,tycon:Tycon) = match repr with | TRecdRepr _ -> tycon.TrueFieldsAsList |> List.map (fun fld -> layoutRecdField fld ^^ rightL ";") |> aboveListL | TFsObjModelRepr r -> match r.fsobjmodel_kind with | TTyconDelegate _ -> wordL "delegate ..." | _ -> let start = match r.fsobjmodel_kind with | TTyconClass -> "class" | TTyconInterface -> "interface" | TTyconStruct -> "struct" | TTyconEnum -> "enum" | _ -> failwith "???" let inherits = match r.fsobjmodel_kind, tycon.TypeContents.tcaug_super with | TTyconClass,Some super -> [wordL "inherit" ^^ (typeL super)] | TTyconInterface,_ -> tycon.ImmediateInterfacesOfFSharpTycon |> List.filter (fun (_,compgen,_) -> not compgen) |> List.map (fun (ity,_,_) -> wordL "inherit" ^^ (typeL ity)) | _ -> [] let vsprs = tycon.MembersOfFSharpTyconSorted |> List.filter (fun v -> v.IsDispatchSlot) |> List.map (fun vref -> vspecAtBindL vref.Deref) let vals = tycon.TrueFieldsAsList |> List.map (fun f -> (if f.IsStatic then wordL "static" else emptyL) ^^ wordL "val" ^^ layoutRecdField f) let alldecls = inherits @ vsprs @ vals let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil alldecls | _ -> false if emptyMeasure then emptyL else (wordL start @@-- aboveListL alldecls) @@ wordL "end" | TFiniteUnionRepr _ -> tycon.UnionCasesAsList |> layoutUnionCases |> aboveListL | TAsmRepr _ -> wordL "(# ... #)" | TMeasureableRepr ty -> typeL ty | TILObjModelRepr (_,_,td) -> wordL td.Name | _ -> failwith "unreachable" let reprL = match tycon.TypeReprInfo with #if EXTENSIONTYPING | TProvidedTypeExtensionPoint _ | TProvidedNamespaceExtensionPoint _ #endif | TNoRepr -> match tycon.TypeAbbrev with | None -> lhsL @@-- memberLs | Some a -> (lhsL ^^ wordL "=") --- (typeL a @@ memberLs) | a -> let rhsL = tyconReprL (a,tycon) @@ memberLs (lhsL ^^ wordL "=") @@-- rhsL reprL //-------------------------------------------------------------------------- // layout - bind, expr, dtree etc. //-------------------------------------------------------------------------- and bindingL (TBind(v,repr,_)) = vspecAtBindL v --- (wordL "=" ^^ exprL repr) and exprL expr = exprWrapL false expr and atomL expr = exprWrapL true expr // true means bracket if needed to be atomic expr and letRecL binds bodyL = let eqnsL = binds |> FlatList.toList |> List.mapHeadTail (fun bind -> wordL "rec" ^^ bindingL bind ^^ wordL "in") (fun bind -> wordL "and" ^^ bindingL bind ^^ wordL "in") (aboveListL eqnsL @@ bodyL) and letL bind bodyL = let eqnL = wordL "let" ^^ bindingL bind ^^ wordL "in" (eqnL @@ bodyL) and exprWrapL isAtomic expr = let wrap = bracketIfL isAtomic // wrap iff require atomic expr let lay = match expr with | Expr.Const (c,_,_) -> constL c | Expr.Val (v,flags,_) -> let xL = valL v.Deref let xL = #if DEBUG if !verboseStamps then let tag = match v with | VRefLocal _ -> "" | VRefNonLocal _ -> "!!" xL ^^ rightL tag else #endif xL let xL = match flags with | PossibleConstrainedCall _ -> xL ^^ rightL "" | CtorValUsedAsSelfInit -> xL ^^ rightL "" | CtorValUsedAsSuperInit -> xL ^^ rightL "" | VSlotDirectCall -> xL ^^ rightL "" | NormalValUse -> xL xL | Expr.Sequential (x0,x1,flag,_,_) -> let flag = match flag with | NormalSeq -> "; (*Seq*)" | ThenDoSeq -> "; (*ThenDo*)" ((exprL x0 ^^ rightL flag) @@ exprL x1) |> wrap | Expr.Lambda(_, _, baseValOpt,argvs,body,_,_) -> let formalsL = spaceListL (List.map vspecAtBindL argvs) in let bindingL = match baseValOpt with | None -> wordL "lam" ^^ formalsL ^^ rightL "." | Some basev -> wordL "lam" ^^ (leftL "base=" ^^ vspecAtBindL basev) --- formalsL ^^ rightL "." in (bindingL ++ exprL body) |> wrap | Expr.TyLambda(_,argtyvs,body,_,_) -> ((wordL "LAM" ^^ spaceListL (List.map typarL argtyvs) ^^ rightL ".") ++ exprL body) |> wrap | Expr.TyChoose(argtyvs,body,_) -> ((wordL "CHOOSE" ^^ spaceListL (List.map typarL argtyvs) ^^ rightL ".") ++ exprL body) |> wrap | Expr.App (f,_,tys,argtys,_) -> let flayout = atomL f appL flayout tys argtys |> wrap | Expr.LetRec (binds,body,_,_) -> letRecL binds (exprL body) |> wrap | Expr.Let (bind,body,_,_) -> letL bind (exprL body) |> wrap | Expr.Link rX -> (wordL "RecLink" --- atomL (!rX)) |> wrap | Expr.Match (_,_,dtree,targets,_,_) -> leftL "[" ^^ (decisionTreeL dtree @@ aboveListL (List.mapi targetL (targets |> Array.toList)) ^^ rightL "]") | Expr.Op (TOp.UnionCase (c),_,args,_) -> (unionCaseRefL c ++ spaceListL (List.map atomL args)) |> wrap | Expr.Op (TOp.ExnConstr (ecref),_,args,_) -> wordL ecref.LogicalName ^^ bracketL (commaListL (List.map atomL args)) | Expr.Op (TOp.Tuple,_,xs,_) -> tupleL (List.map exprL xs) | Expr.Op (TOp.Recd (ctor,tc),_,xs,_) -> let fields = tc.TrueInstanceFieldsAsList let lay fs x = (wordL fs.rfield_id.idText ^^ sepL "=") --- (exprL x) let ctorL = match ctor with | RecdExpr -> emptyL | RecdExprIsObjInit-> wordL "(new)" leftL "{" ^^ semiListL (List.map2 lay fields xs) ^^ rightL "}" ^^ ctorL | Expr.Op (TOp.ValFieldSet rf,_,[rx;x],_) -> (atomL rx --- wordL ".") ^^ (recdFieldRefL rf ^^ wordL "<-" --- exprL x) | Expr.Op (TOp.ValFieldSet rf,_,[x],_) -> (recdFieldRefL rf ^^ wordL "<-" --- exprL x) | Expr.Op (TOp.ValFieldGet rf,_,[rx],_) -> (atomL rx ^^ rightL ".#" ^^ recdFieldRefL rf) | Expr.Op (TOp.ValFieldGet rf,_,[],_) -> recdFieldRefL rf | Expr.Op (TOp.ValFieldGetAddr rf,_,[rx],_) -> leftL "&" ^^ bracketL (atomL rx ^^ rightL ".!" ^^ recdFieldRefL rf) | Expr.Op (TOp.ValFieldGetAddr rf,_,[],_) -> leftL "&" ^^ (recdFieldRefL rf) | Expr.Op (TOp.UnionCaseTagGet tycr,_,[x],_) -> wordL ("#" ^ tycr.LogicalName ^ ".tag") ^^ atomL x | Expr.Op (TOp.UnionCaseProof c,_,[x],_) -> wordL ("#" ^ c.CaseName^ ".cast") ^^ atomL x | Expr.Op (TOp.UnionCaseFieldGet (c,i),_,[x],_) -> wordL ("#" ^ c.CaseName ^ "." ^ string i) --- atomL x | Expr.Op (TOp.UnionCaseFieldSet (c,i),_,[x;y],_) -> ((atomL x --- (rightL ("#" ^ c.CaseName ^ "." ^ string i))) ^^ wordL ":=") --- exprL y | Expr.Op (TOp.TupleFieldGet i,_,[x],_) -> wordL ("#" ^ string i) --- atomL x | Expr.Op (TOp.Coerce,[typ;_],[x],_) -> atomL x --- (wordL ":>" ^^ typeL typ) | Expr.Op (TOp.Reraise,[_],[],_) -> wordL "Rethrow!" | Expr.Op (TOp.ILAsm (a,tys),tyargs,args,_) -> let instrs = a |> List.map (sprintf "%+A" >> wordL) |> spaceListL // %+A has + since instrs are from an "internal" type let instrs = leftL "(#" ^^ instrs ^^ rightL "#)" (appL instrs tyargs args --- wordL ":" ^^ spaceListL (List.map typeAtomL tys)) |> wrap | Expr.Op (TOp.LValueOp (lvop,vr),_,args,_) -> (lvalopL lvop ^^ valRefL vr --- bracketL (commaListL (List.map atomL args))) |> wrap | Expr.Op (TOp.ILCall (_isVirtCall,_isProtectedCall,_valu,_isNewObjCall,_valUseFlags,_isProperty,_noTailCall,ilMethRef,tinst,minst,_tys),tyargs,args,_) -> let meth = ilMethRef.Name wordL "ILCall" ^^ aboveListL [wordL "meth " --- wordL ilMethRef.EnclosingTypeRef.FullName ^^ sepL "." ^^ wordL meth; wordL "tinst " --- listL typeL tinst; wordL "minst " --- listL typeL minst; wordL "tyargs" --- listL typeL tyargs; wordL "args " --- listL exprL args] |> wrap | Expr.Op (TOp.Array,[_],xs,_) -> leftL "[|" ^^ commaListL (List.map exprL xs) ^^ rightL "|]" | Expr.Op (TOp.While _,[],[x1;x2],_) -> wordL "while" ^^ exprL x1 ^^ wordL "do" ^^ exprL x2 ^^ rightL "}" | Expr.Op (TOp.For _,[],[x1;x2;x3],_) -> wordL "for" ^^ aboveListL [(exprL x1 ^^ wordL "to" ^^ exprL x2 ^^ wordL "do"); exprL x3 ] ^^ rightL "done" | Expr.Op (TOp.TryCatch _,[_],[x1;x2],_) -> wordL "try" ^^ exprL x1 ^^ wordL "with" ^^ exprL x2 ^^ rightL "}" | Expr.Op (TOp.TryFinally _,[_],[x1;x2],_) -> wordL "try" ^^ exprL x1 ^^ wordL "finally" ^^ exprL x2 ^^ rightL "}" | Expr.Op (TOp.Bytes _,_ ,_ ,_) -> wordL "bytes++" | Expr.Op (TOp.UInt16s _,_ ,_ ,_) -> wordL "uint16++" | Expr.Op (TOp.RefAddrGet,_tyargs,_args,_) -> wordL "GetRefLVal..." | Expr.Op (TOp.TraitCall _,_tyargs,_args,_) -> wordL "traitcall..." | Expr.Op (TOp.ExnFieldGet _,_tyargs,_args,_) -> wordL "TOp.ExnFieldGet..." | Expr.Op (TOp.ExnFieldSet _,_tyargs,_args,_) -> wordL "TOp.ExnFieldSet..." | Expr.Op (TOp.TryFinally _,_tyargs,_args,_) -> wordL "TOp.TryFinally..." | Expr.Op (TOp.TryCatch _,_tyargs,_args,_) -> wordL "TOp.TryCatch..." | Expr.Op (_,_tys,args,_) -> wordL "Expr.Op ..." ^^ bracketL (commaListL (List.map atomL args)) | Expr.Quote (a,_,_,_,_) -> leftL "<@" ^^ atomL a ^^ rightL "@>" | Expr.Obj (_lambdaId,typ,basev,ccall,overrides,iimpls,_) -> wordL "OBJ:" ^^ aboveListL [typeL typ; exprL ccall; optionL vspecAtBindL basev; aboveListL (List.map overrideL overrides); aboveListL (List.map iimplL iimpls)] | Expr.StaticOptimization (_tcs,csx,x,_) -> (wordL "opt" @@- (exprL x)) @@-- (wordL "|" ^^ exprL csx --- (wordL "when..." )) // For tracking ranges through expr rewrites if !layoutRanges then leftL "{" ^^ (rangeL expr.Range ^^ rightL ":") ++ lay ^^ rightL "}" else lay and assemblyL (TAssembly(implFiles)) = aboveListL (List.map implFileL implFiles) and appL flayout tys args = let z = flayout let z = z ^^ instL typeL tys let z = z --- sepL "`" --- (spaceListL (List.map atomL args)) z and implFileL (TImplFile(_,_,e,_,_)) = aboveListL [(wordL "top implementation ") @@-- mexprL e] and mexprL x = match x with | ModuleOrNamespaceExprWithSig(mtyp,defs,_) -> mdefL defs @@- (wordL ":" @@- entityTypeL mtyp) and mdefsL defs = wordL "Module Defs" @@-- aboveListL(List.map mdefL defs) and mdefL x = match x with | TMDefRec(tycons ,binds,mbinds,_) -> aboveListL ((tycons |> List.map tyconL) @ [letRecL binds emptyL] @ List.map mbindL mbinds) | TMDefLet(bind,_) -> letL bind emptyL | TMDefDo(e,_) -> exprL e | TMDefs defs -> mdefsL defs; | TMAbstract mexpr -> mexprL mexpr and mbindL (ModuleOrNamespaceBinding(mspec, rhs)) = (wordL (if mspec.IsNamespace then "namespace" else "module") ^^ (wordL mspec.DemangledModuleOrNamespaceName |> stampL mspec.Stamp)) @@-- mdefL rhs and entityTypeL (mtyp:ModuleOrNamespaceType) = aboveListL [jlistL typeOfValL mtyp.AllValsAndMembers; jlistL tyconL mtyp.AllEntities;] and entityL (ms:ModuleOrNamespace) = let header = wordL "module" ^^ (wordL ms.DemangledModuleOrNamespaceName |> stampL ms.Stamp) ^^ wordL ":" let footer = wordL "end" let body = entityTypeL ms.ModuleOrNamespaceType (header @@-- body) @@ footer and ccuL (ccu:CcuThunk) = entityL ccu.Contents and decisionTreeL x = match x with | TDBind (bind,body) -> let bind = wordL "let" ^^ bindingL bind ^^ wordL "in" in (bind @@ decisionTreeL body) | TDSuccess (args,n) -> wordL "Success" ^^ leftL "T" ^^ intL n ^^ tupleL (args |> FlatList.toList |> List.map exprL) | TDSwitch (test,dcases,dflt,_) -> (wordL "Switch" --- exprL test) @@-- (aboveListL (List.map dcaseL dcases) @@ match dflt with None -> emptyL | Some dtree -> wordL "dflt:" --- decisionTreeL dtree) and dcaseL (TCase (test,dtree)) = (dtestL test ^^ wordL "//") --- decisionTreeL dtree and dtestL x = match x with | (Test.UnionCase (c,tinst)) -> wordL "is" ^^ unionCaseRefL c ^^ instL typeL tinst | (Test.ArrayLength (n,ty)) -> wordL "length" ^^ intL n ^^ typeL ty | (Test.Const c ) -> wordL "is" ^^ constL c | (Test.IsNull ) -> wordL "isnull" | (Test.IsInst (_,typ) ) -> wordL "isinst" ^^ typeL typ | (Test.ActivePatternCase (exp,_,_,_,_)) -> wordL "query" ^^ exprL exp and targetL i (TTarget (argvs,body,_)) = leftL "T" ^^ intL i ^^ tupleL (flatValsL argvs) ^^ rightL ":" --- exprL body and flatValsL vs = vs |> FlatList.toList |> List.map valL and tmethodL (TObjExprMethod(TSlotSig(nm,_,_,_,_,_), _, tps, vs, e, _)) = (wordL "TObjExprMethod" --- (wordL nm) ^^ wordL "=") -- (wordL "METH-LAM" --- angleBracketListL (List.map typarL tps) ^^ rightL ".") --- (wordL "meth-lam" --- tupleL (List.map (List.map vspecAtBindL >> tupleL) vs) ^^ rightL ".") --- (atomL e) and overrideL tmeth = wordL "with" ^^ tmethodL tmeth and iimplL (typ,tmeths) = wordL "impl" ^^ aboveListL (typeL typ :: List.map tmethodL tmeths) let showType x = Layout.showL (typeL x) let showExpr x = Layout.showL (exprL x) let traitL x = auxTraitL SimplifyTypes.typeSimplificationInfo0 x let typarsL x = layoutTyparDecls x end //-------------------------------------------------------------------------- // Helpers related to type checking modules & namespaces //-------------------------------------------------------------------------- let wrapModuleOrNamespaceType id cpath mtyp = NewModuleOrNamespace (Some cpath) taccessPublic id XmlDoc.Empty [] (notlazy mtyp) let wrapModuleOrNamespaceTypeInNamespace id cpath (mtyp:ModuleOrNamespaceType) = let mspec = NewModuleOrNamespace (Some cpath) taccessPublic id XmlDoc.Empty [] (notlazy mtyp) NewModuleOrNamespaceType Namespace [ mspec ] [] let wrapModuleOrNamespaceExprInNamespace (id :Ident) cpath mexpr = let mspec = NewModuleOrNamespace (Some cpath) taccessPublic id XmlDoc.Empty [] (notlazy (NewEmptyModuleOrNamespaceType Namespace)) TMDefRec ([],FlatList.empty,[ModuleOrNamespaceBinding(mspec, mexpr)],id.idRange) // cleanup: make this a property let SigTypeOfImplFile (TImplFile(_,_,mexpr,_,_)) = mexpr.Type //-------------------------------------------------------------------------- // Data structures representing what gets hidden and what gets remapped (i.e. renamed or alpha-converted) // when a module signature is applied to a module. //-------------------------------------------------------------------------- type SignatureRepackageInfo = { mrpiVals : (ValRef * ValRef) list; mrpiEntities: (TyconRef * TyconRef) list } member remapInfo.ImplToSigMapping = { TypeEquivEnv.Empty with EquivTycons = TyconRefMap.OfList remapInfo.mrpiEntities } static member Empty = { mrpiVals = []; mrpiEntities= [] } type SignatureHidingInfo = { mhiTycons : Zset; mhiTyconReprs : Zset; mhiVals : Zset; mhiRecdFields : Zset; mhiUnionCases : Zset } static member Empty = { mhiTycons = Zset.empty tyconOrder; mhiTyconReprs = Zset.empty tyconOrder; mhiVals = Zset.empty valOrder; mhiRecdFields = Zset.empty recdFieldRefOrder; mhiUnionCases = Zset.empty unionCaseRefOrder } let addValRemap v v' tmenv = { tmenv with valRemap= tmenv.valRemap.Add v (mkLocalValRef v') } let mkRepackageRemapping mrpi = { valRemap = ValMap.OfList (mrpi.mrpiVals |> List.map (fun (vref,x) -> vref.Deref, x)); tpinst = emptyTyparInst; tyconRefRemap = TyconRefMap.OfList mrpi.mrpiEntities } //-------------------------------------------------------------------------- // Compute instances of the above for mty -> mty //-------------------------------------------------------------------------- let accEntityRemap (msigty:ModuleOrNamespaceType) (entity:Entity) (mrpi,mhi) = let sigtyconOpt = (NameMap.tryFind entity.LogicalName msigty.AllEntitiesByCompiledAndLogicalMangledNames) match sigtyconOpt with | None -> // The type constructor is not present in the signature. Hence it is hidden. let mhi = { mhi with mhiTycons = Zset.add entity mhi.mhiTycons } (mrpi,mhi) | Some sigtycon -> // The type constructor is in the signature. Hence record the repackage entry let sigtcref = mkLocalTyconRef sigtycon let tcref = mkLocalTyconRef entity let mrpi = { mrpi with mrpiEntities = ((tcref, sigtcref) :: mrpi.mrpiEntities) } // OK, now look for hidden things let mhi = if (match entity.TypeReprInfo with TNoRepr -> false | _ -> true) && (match sigtycon.TypeReprInfo with TNoRepr -> true | _ -> false) then // The type representation is absent in the signature, hence it is hidden { mhi with mhiTyconReprs = Zset.add entity mhi.mhiTyconReprs } else // The type representation is present in the signature. // Find the fields that have been hidden or which were non-public anyway. mhi |> Array.foldBack (fun (rfield:RecdField) mhi -> match sigtycon.GetFieldByName(rfield.Name) with | Some _ -> // The field is in the signature. Hence it is not hidden. mhi | _ -> // The field is not in the signature. Hence it is regarded as hidden. let rfref = mkNestedRecdFieldRef tcref rfield { mhi with mhiRecdFields = Zset.add rfref mhi.mhiRecdFields }) entity.AllFieldsArray |> List.foldBack (fun (ucase:UnionCase) mhi -> match sigtycon.GetUnionCaseByName ucase.DisplayName with | Some _ -> // The constructor is in the signature. Hence it is not hidden. mhi | _ -> // The constructor is not in the signature. Hence it is regarded as hidden. let ucref = mkNestedUnionCaseRef tcref ucase { mhi with mhiUnionCases = Zset.add ucref mhi.mhiUnionCases }) (entity.UnionCasesAsList) (mrpi,mhi) let accSubEntityRemap (msigty:ModuleOrNamespaceType) (entity:Entity) (mrpi,mhi) = let sigtyconOpt = (NameMap.tryFind entity.LogicalName msigty.AllEntitiesByCompiledAndLogicalMangledNames) match sigtyconOpt with | None -> // The type constructor is not present in the signature. Hence it is hidden. let mhi = { mhi with mhiTycons = Zset.add entity mhi.mhiTycons } (mrpi,mhi) | Some sigtycon -> // The type constructor is in the signature. Hence record the repackage entry let sigtcref = mkLocalTyconRef sigtycon let tcref = mkLocalTyconRef entity let mrpi = { mrpi with mrpiEntities = ((tcref, sigtcref) :: mrpi.mrpiEntities) } (mrpi,mhi) let valLinkageAEquiv g aenv (v1:Val) (v2:Val) = (v1.LinkagePartialKey = v2.LinkagePartialKey) && (if v1.IsMember && v2.IsMember then typeAEquivAux EraseAll g aenv v1.Type v2.Type else true) let accValRemap g aenv (msigty:ModuleOrNamespaceType) (implVal:Val) (mrpi,mhi) = let sigValOpt = msigty.AllValsAndMembersByPartialLinkageKey |> MultiMap.find implVal.LinkagePartialKey |> List.tryFind (fun sigVal -> valLinkageAEquiv g aenv implVal sigVal) let vref = mkLocalValRef implVal match sigValOpt with | None -> if verbose then dprintf "accValRemap, hide = %s#%d\n" implVal.LogicalName implVal.Stamp let mhi = { mhi with mhiVals = Zset.add implVal mhi.mhiVals } (mrpi,mhi) | Some (sigVal:Val) -> // The value is in the signature. Add the repackage entry. #if DEBUG if !verboseStamps then dprintf "accValRemap, remap value %s#%d --> %s#%d\n" implVal.LogicalName implVal.Stamp sigVal.LogicalName sigVal.Stamp; #endif let mrpi = { mrpi with mrpiVals = (vref,mkLocalValRef sigVal) :: mrpi.mrpiVals } (mrpi,mhi) let getCorrespondingSigTy nm (msigty:ModuleOrNamespaceType) = match NameMap.tryFind nm msigty.AllEntitiesByCompiledAndLogicalMangledNames with | None -> NewEmptyModuleOrNamespaceType ModuleOrType | Some sigsubmodul -> sigsubmodul.ModuleOrNamespaceType let rec accEntityRemapFromModuleOrNamespaceType (mty:ModuleOrNamespaceType) (msigty:ModuleOrNamespaceType) acc = let acc = (mty.AllEntities, acc) ||> QueueList.foldBack (fun e acc -> accEntityRemapFromModuleOrNamespaceType e.ModuleOrNamespaceType (getCorrespondingSigTy e.LogicalName msigty) acc) let acc = (mty.AllEntities, acc) ||> QueueList.foldBack (accEntityRemap msigty) acc let rec accValRemapFromModuleOrNamespaceType g aenv (mty:ModuleOrNamespaceType) msigty acc = let acc = (mty.AllEntities, acc) ||> QueueList.foldBack (fun e acc -> accValRemapFromModuleOrNamespaceType g aenv e.ModuleOrNamespaceType (getCorrespondingSigTy e.LogicalName msigty) acc) let acc = (mty.AllValsAndMembers, acc) ||> QueueList.foldBack (accValRemap g aenv msigty) acc let ComputeRemappingFromInferredSignatureToExplicitSignature g mty msigty = // dprintf "ComputeRemappingFromInferredSignatureToExplicitSignature,\nmty = %s\nmmsigty=%s\n" (showL(entityTypeL mty)) (showL(entityTypeL msigty)); let ((mrpi,_) as entityRemap) = accEntityRemapFromModuleOrNamespaceType mty msigty (SignatureRepackageInfo.Empty, SignatureHidingInfo.Empty) let aenv = mrpi.ImplToSigMapping let valAndEntityRemap = accValRemapFromModuleOrNamespaceType g aenv mty msigty entityRemap valAndEntityRemap //-------------------------------------------------------------------------- // Compute instances of the above for mexpr -> mty //-------------------------------------------------------------------------- /// At TMDefRec nodes abstract (virtual) vslots are effectively binders, even /// though they are tucked away inside the tycon. This helper function extracts the /// virtual slots to aid with finding this babies. let abstractSlotValsOfTycons (tycons:Tycon list) = tycons |> List.collect (fun tycon -> if tycon.IsFSharpObjectModelTycon then tycon.FSharpObjectModelTypeInfo.fsobjmodel_vslots else []) |> List.map (fun v -> v.Deref) let rec accEntityRemapFromModuleOrNamespace msigty x acc = match x with | TMDefRec(tycons,_,mbinds,_) -> let acc = (mbinds, acc) ||> List.foldBack (accEntityRemapFromModuleOrNamespaceBind msigty) let acc = (tycons, acc) ||> List.foldBack (accEntityRemap msigty) let acc = (tycons, acc) ||> List.foldBack (fun e acc -> accEntityRemapFromModuleOrNamespaceType e.ModuleOrNamespaceType (getCorrespondingSigTy e.LogicalName msigty) acc) acc | TMDefLet _ -> acc | TMDefDo _ -> acc | TMDefs defs -> accEntityRemapFromModuleOrNamespaceDefs msigty defs acc | TMAbstract mexpr -> accEntityRemapFromModuleOrNamespaceType mexpr.Type msigty acc and accEntityRemapFromModuleOrNamespaceDefs msigty mdefs acc = List.foldBack (accEntityRemapFromModuleOrNamespace msigty) mdefs acc and accEntityRemapFromModuleOrNamespaceBind msigty (ModuleOrNamespaceBinding(mspec, def)) acc = accSubEntityRemap msigty mspec (accEntityRemapFromModuleOrNamespace (getCorrespondingSigTy mspec.LogicalName msigty) def acc) let rec accValRemapFromModuleOrNamespace g aenv msigty x acc = match x with | TMDefRec(tycons,binds,mbinds,_) -> let acc = (mbinds, acc) ||> List.foldBack (accValRemapFromModuleOrNamespaceBind g aenv msigty) let acc = (binds, acc) ||> FlatList.foldBack (valOfBind >> accValRemap g aenv msigty) // Abstract (virtual) vslots in the tycons at TMDefRec nodes are binders. They also need to be added to the remapping. let vslotvs = abstractSlotValsOfTycons tycons let acc = (vslotvs, acc) ||> List.foldBack (accValRemap g aenv msigty) acc | TMDefLet(bind,_) -> accValRemap g aenv msigty bind.Var acc | TMDefDo _ -> acc | TMDefs defs -> accValRemapFromModuleOrNamespaceDefs g aenv msigty defs acc | TMAbstract mexpr -> accValRemapFromModuleOrNamespaceType g aenv mexpr.Type msigty acc and accValRemapFromModuleOrNamespaceBind g aenv msigty (ModuleOrNamespaceBinding(mspec, def)) acc = accSubEntityRemap msigty mspec (accValRemapFromModuleOrNamespace g aenv (getCorrespondingSigTy mspec.LogicalName msigty) def acc) and accValRemapFromModuleOrNamespaceDefs g aenv msigty mdefs acc = List.foldBack (accValRemapFromModuleOrNamespace g aenv msigty) mdefs acc let ComputeRemappingFromImplementationToSignature g mdef msigty = //if verbose then dprintf "ComputeRemappingFromImplementationToSignature,\nmdefs = %s\nmsigty=%s\n" (showL(DebugPrint.mdefL mdef)) (showL(DebugPrint.entityTypeL msigty)); let ((mrpi,_) as entityRemap) = accEntityRemapFromModuleOrNamespace msigty mdef (SignatureRepackageInfo.Empty, SignatureHidingInfo.Empty) let aenv = mrpi.ImplToSigMapping let valAndEntityRemap = accValRemapFromModuleOrNamespace g aenv msigty mdef entityRemap valAndEntityRemap //-------------------------------------------------------------------------- // Compute instances of the above for the assembly boundary //-------------------------------------------------------------------------- let accTyconHidingInfoAtAssemblyBoundary (tycon:Tycon) mhi = if not (canAccessFromEverywhere tycon.Accessibility) then // The type constructor is not public, hence hidden at the assembly boundary. { mhi with mhiTycons = Zset.add tycon mhi.mhiTycons } elif not (canAccessFromEverywhere tycon.TypeReprAccessibility) then { mhi with mhiTyconReprs = Zset.add tycon mhi.mhiTyconReprs } else mhi |> Array.foldBack (fun (rfield:RecdField) mhi -> if not (canAccessFromEverywhere rfield.Accessibility) then let tcref = mkLocalTyconRef tycon let rfref = mkNestedRecdFieldRef tcref rfield { mhi with mhiRecdFields = Zset.add rfref mhi.mhiRecdFields } else mhi) tycon.AllFieldsArray |> List.foldBack (fun (ucase:UnionCase) mhi -> if not (canAccessFromEverywhere ucase.Accessibility) then let tcref = mkLocalTyconRef tycon let ucref = mkNestedUnionCaseRef tcref ucase { mhi with mhiUnionCases = Zset.add ucref mhi.mhiUnionCases } else mhi) (tycon.UnionCasesAsList) // Collect up the values hidden at the assembly boundary. This is used by IsHiddenVal to // determine if something is considered hidden. This is used in turn to eliminate optimization // information at the assembly boundary and to decide to label things as "internal". let accValHidingInfoAtAssemblyBoundary (vspec:Val) mhi = if // anything labelled "internal" or more restrictive is considered to be hidden at the assembly boundary not (canAccessFromEverywhere vspec.Accessibility) || // compiler generated members for class function 'let' bindings are considered to be hidden at the assembly boundary vspec.IsIncrClassGeneratedMember || // anything that's not a module or member binding gets assembly visibility not vspec.IsMemberOrModuleBinding then // The value is not public, hence hidden at the assembly boundary. { mhi with mhiVals = Zset.add vspec mhi.mhiVals } else mhi let rec accModuleOrNamespaceHidingInfoAtAssemblyBoundary mty acc = let acc = QueueList.foldBack (fun (e:Entity) acc -> accModuleOrNamespaceHidingInfoAtAssemblyBoundary e.ModuleOrNamespaceType acc) mty.AllEntities acc let acc = QueueList.foldBack accTyconHidingInfoAtAssemblyBoundary mty.AllEntities acc let acc = QueueList.foldBack accValHidingInfoAtAssemblyBoundary mty.AllValsAndMembers acc acc let ComputeHidingInfoAtAssemblyBoundary mty = // dprintf "ComputeRemappingFromInferredSignatureToExplicitSignature,\nmty = %s\nmmsigty=%s\n" (showL(entityTypeL mty)) (showL(entityTypeL msigty)); accModuleOrNamespaceHidingInfoAtAssemblyBoundary mty SignatureHidingInfo.Empty //-------------------------------------------------------------------------- // Compute instances of the above for mexpr -> mty //-------------------------------------------------------------------------- let IsHidden setF accessF remapF debugF = let rec check mrmi x = if verbose then dprintf "IsHidden %s ??\n" (showL (debugF x)); // Internal/private? not (canAccessFromEverywhere (accessF x)) || (match mrmi with | [] -> false // Ah! we escaped to freedom! | (rpi,mhi) :: rest -> // Explicitly hidden? Zset.contains x (setF mhi) || // Recurse... check rest (remapF rpi x)) fun mrmi x -> let res = check mrmi x if verbose then dprintf "IsHidden, #mrmi = %d, %s = %b\n" mrmi.Length (showL (debugF x)) res; res let IsHiddenTycon mrmi x = IsHidden (fun mhi -> mhi.mhiTycons) (fun tc -> tc.Accessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) DebugPrint.tyconL mrmi x let IsHiddenTyconRepr mrmi x = IsHidden (fun mhi -> mhi.mhiTyconReprs) (fun v -> v.TypeReprAccessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) DebugPrint.tyconL mrmi x let IsHiddenVal mrmi x = IsHidden (fun mhi -> mhi.mhiVals) (fun v -> v.Accessibility) (fun rpi x -> (remapValRef rpi (mkLocalValRef x)).Deref) DebugPrint.valL mrmi x let IsHiddenRecdField mrmi x = IsHidden (fun mhi -> mhi.mhiRecdFields) (fun rfref -> rfref.RecdField.Accessibility) (fun rpi x -> remapRecdFieldRef rpi.tyconRefRemap x) DebugPrint.recdFieldRefL mrmi x //-------------------------------------------------------------------------- // Generic operations on module types //-------------------------------------------------------------------------- let foldModuleOrNamespaceTy ft fv mty acc = let rec go mty acc = let acc = QueueList.foldBack (fun (e:Entity) acc -> go e.ModuleOrNamespaceType acc) mty.AllEntities acc let acc = QueueList.foldBack ft mty.AllEntities acc let acc = QueueList.foldBack fv mty.AllValsAndMembers acc acc go mty acc let allValsOfModuleOrNamespaceTy m = foldModuleOrNamespaceTy (fun _ acc -> acc) (fun v acc -> v :: acc) m [] let allEntitiesOfModuleOrNamespaceTy m = foldModuleOrNamespaceTy (fun ft acc -> ft :: acc) (fun _ acc -> acc) m [] //--------------------------------------------------------------------------- // Free variables in terms. Are all constructs public accessible? //--------------------------------------------------------------------------- let isPublicVal (lv:Val) = (lv.Accessibility = taccessPublic) let isPublicUnionCase (ucr:UnionCaseRef) = (ucr.UnionCase.Accessibility = taccessPublic) let isPublicRecdField (rfr:RecdFieldRef) = (rfr.RecdField.Accessibility = taccessPublic) let isPublicTycon (tcr:Tycon) = (tcr.Accessibility = taccessPublic) let freeVarsAllPublic fvs = // Are any non-public items used in the expr (which corresponded to the fvs)? // Recall, taccess occurs in: // EntityData has ReprAccessibility and Accessiblity // UnionCase has Accessibility // RecdField has Accessibility // ValData has Accessibility // The freevars and FreeTyvars collect local constructs. // Here, we test that all those constructs are public. // // CODEREVIEW: // What about non-local vals. This fix assumes non-local vals must be public. OK? Zset.forall isPublicVal fvs.FreeLocals && Zset.forall isPublicUnionCase fvs.FreeUnionCases && Zset.forall isPublicRecdField fvs.FreeRecdFields && Zset.forall isPublicTycon fvs.FreeTyvars.FreeTycons let freeTyvarsAllPublic tyvars = Zset.forall isPublicTycon tyvars.FreeTycons // Detect the subset of match expressions we treat in a linear way // -- if then else // -- match e with pat[vs] -> e1[vs] | _ -> e2 let (|LinearMatchExpr|_|) expr = match expr with | Expr.Match (sp,m,dtree,[|tg1;(TTarget([],e2,sp2))|],m2,ty) -> Some(sp,m,dtree,tg1,e2,sp2,m2,ty) | _ -> None let rebuildLinearMatchExpr (sp,m,dtree,tg1,e2,sp2,m2,ty) = primMkMatch (sp,m,dtree,[|tg1;(TTarget([],e2,sp2))|],m2,ty) //--------------------------------------------------------------------------- // Free variables in terms. All binders are distinct. //--------------------------------------------------------------------------- let emptyFreeVars = { UsesMethodLocalConstructs=false; UsesUnboundRethrow=false; FreeLocalTyconReprs=emptyFreeTycons; FreeLocals=emptyFreeLocals; FreeTyvars=emptyFreeTyvars; FreeRecdFields = emptyFreeRecdFields; FreeUnionCases = emptyFreeUnionCases} let unionFreeVars fvs1 fvs2 = if fvs1 === emptyFreeVars then fvs2 else if fvs2 === emptyFreeVars then fvs1 else { FreeLocals = unionFreeLocals fvs1.FreeLocals fvs2.FreeLocals; FreeTyvars = unionFreeTyvars fvs1.FreeTyvars fvs2.FreeTyvars; UsesMethodLocalConstructs = fvs1.UsesMethodLocalConstructs || fvs2.UsesMethodLocalConstructs; UsesUnboundRethrow = fvs1.UsesUnboundRethrow || fvs2.UsesUnboundRethrow; FreeLocalTyconReprs = unionFreeTycons fvs1.FreeLocalTyconReprs fvs2.FreeLocalTyconReprs; FreeRecdFields = unionFreeRecdFields fvs1.FreeRecdFields fvs2.FreeRecdFields; FreeUnionCases = unionFreeUnionCases fvs1.FreeUnionCases fvs2.FreeUnionCases; } let inline accFreeTyvars (opts:FreeVarOptions) f v acc = if not opts.collectInTypes then acc else let ftyvs = acc.FreeTyvars let ftyvs' = f opts v ftyvs if ftyvs === ftyvs' then acc else { acc with FreeTyvars = ftyvs' } #if FREEVARS_IN_TYPES_ANALYSIS type CheckCachability<'key,'acc>(name,f: FreeVarOptions -> 'key -> 'acc -> bool * 'acc) = let dict = System.Collections.Generic.Dictionary<'key,int>(HashIdentity.Reference) let idem = System.Collections.Generic.Dictionary<'key,int>(HashIdentity.Reference) let closed = System.Collections.Generic.Dictionary<'key,int>(HashIdentity.Reference) let mutable saved = 0 do System.AppDomain.CurrentDomain.ProcessExit.Add(fun _ -> let hist = dict |> Seq.groupBy (fun (KeyValue(k,v)) -> v) |> Seq.map (fun (n,els) -> (n,Seq.length els)) |> Seq.sortBy (fun (n,_) -> n) let total = hist |> Seq.sumBy (fun (nhits,nels) -> nels) let totalHits = hist |> Seq.sumBy (fun (nhits,nels) -> nhits * nels) printfn "*** %s saved %d hits (%g%%) ***" name saved (float saved / float (saved + totalHits) * 100.0) printfn "*** %s had %d hits total, possible saving %d ***" name totalHits (totalHits - total) //for (nhits,nels) in hist do // printfn "%s, %g%% els for %g%% hits had %d hits" name (float nels / float total * 100.0) (float (nels * nhits) / float totalHits * 100.0) nhits let hist = idem |> Seq.groupBy (fun (KeyValue(k,v)) -> v) |> Seq.map (fun (n,els) -> (n,Seq.length els)) |> Seq.sortBy (fun (n,_) -> n) let total = hist |> Seq.sumBy (fun (nhits,nels) -> nels) let totalHits = hist |> Seq.sumBy (fun (nhits,nels) -> nhits * nels) printfn "*** %s had %d idempotent hits total, possible saving %d ***" name totalHits (totalHits - total) //for (nhits,nels) in hist do // printfn "%s, %g%% els for %g%% hits had %d idempotent hits" name (float nels / float total * 100.0) (float (nels * nhits) / float totalHits * 100.0) nhits let hist = closed |> Seq.groupBy (fun (KeyValue(k,v)) -> v) |> Seq.map (fun (n,els) -> (n,Seq.length els)) |> Seq.sortBy (fun (n,_) -> n) let total = hist |> Seq.sumBy (fun (nhits,nels) -> nels) let totalHits = hist |> Seq.sumBy (fun (nhits,nels) -> nhits * nels) printfn "*** %s had %d closed hits total, possible saving %d ***" name totalHits (totalHits - total) ) member cache.Apply(opts,key,acc) = if not opts.collectInTypes then saved <- saved + 1 acc else let cls,res = f opts key acc if opts.canCache then if dict.ContainsKey key then dict.[key] <- dict.[key] + 1 else dict.[key] <- 1 if res === acc then if idem.ContainsKey key then idem.[key] <- idem.[key] + 1 else idem.[key] <- 1 if cls then if closed.ContainsKey key then closed.[key] <- closed.[key] + 1 else closed.[key] <- 1 res //member cache.OnExit() = let accFreeVarsInTy_cache = CheckCachability("accFreeVarsInTy", (fun opts ty fvs -> (freeInType opts ty === emptyFreeTyvars), accFreeTyvars opts (accFreeInType opts) ty fvs)) let accFreevarsInValCache = CheckCachability("accFreevarsInVal", (fun opts v fvs -> (freeInVal opts v === emptyFreeTyvars), accFreeTyvars opts (accFreeInVal opts) v fvs)) let accFreeVarsInTys_cache = CheckCachability("accFreeVarsInTys", (fun opts tys fvs -> (freeInTypes opts tys === emptyFreeTyvars), accFreeTyvars opts (accFreeInTypes opts) tys fvs)) let accFreevarsInTyconCache = CheckCachability("accFreevarsInTycon", (fun opts tys fvs -> false,accFreeTyvars opts (accFreeTycon opts) tys fvs)) let accFreeVarsInTy opts ty fvs = accFreeVarsInTy_cache.Apply(opts,ty,fvs) let accFreeVarsInTys opts tys fvs = if isNil tys then fvs else accFreeVarsInTys_cache.Apply(opts,tys,fvs) let accFreevarsInTycon opts (tcr:TyconRef) acc = match tcr.IsLocalRef with | true -> accFreevarsInTyconCache.Apply(opts,tcr,acc) | _ -> acc let accFreevarsInVal opts v fvs = accFreevarsInValCache.Apply(opts,v,fvs) #else let accFreeVarsInTy opts ty acc = accFreeTyvars opts accFreeInType ty acc let accFreeVarsInTys opts tys acc = if isNil tys then acc else accFreeTyvars opts accFreeInTypes tys acc let accFreevarsInTycon opts tcref acc = accFreeTyvars opts accFreeTycon tcref acc let accFreevarsInVal opts v acc = accFreeTyvars opts accFreeInVal v acc #endif let accFreeVarsInTraitSln opts tys acc = accFreeTyvars opts accFreeInTraitSln tys acc let boundLocalVal opts v fvs = if not opts.includeLocals then fvs else let fvs = accFreevarsInVal opts v fvs if not (Zset.contains v fvs.FreeLocals) then fvs else {fvs with FreeLocals= Zset.remove v fvs.FreeLocals} let boundProtect fvs = if fvs.UsesMethodLocalConstructs then {fvs with UsesMethodLocalConstructs = false} else fvs let accUsesFunctionLocalConstructs flg fvs = if flg && not fvs.UsesMethodLocalConstructs then {fvs with UsesMethodLocalConstructs = true} else fvs let bound_rethrow fvs = if fvs.UsesUnboundRethrow then {fvs with UsesUnboundRethrow = false} else fvs let accUsesRethrow flg fvs = if flg && not fvs.UsesUnboundRethrow then {fvs with UsesUnboundRethrow = true} else fvs let boundLocalVals opts vs fvs = List.foldBack (boundLocalVal opts) vs fvs let bindLhs opts (bind:Binding) fvs = boundLocalVal opts bind.Var fvs let freeVarsCacheCompute opts cache f = if opts.canCache then cached cache f else f() let rec accBindRhs opts (TBind(_,repr,_)) acc = accFreeInExpr opts repr acc and accFreeInSwitchCases opts csl dflt (acc:FreeVars) = Option.foldBack (accFreeInDecisionTree opts) dflt (List.foldBack (accFreeInSwitchCase opts) csl acc) and accFreeInSwitchCase opts (TCase(discrim,dtree)) acc = accFreeInDecisionTree opts dtree (accFreeInTest opts discrim acc) and accFreeInTest (opts:FreeVarOptions) discrim acc = match discrim with | Test.UnionCase(ucref,tinst) -> accFreeUnionCaseRef opts ucref (accFreeVarsInTys opts tinst acc) | Test.ArrayLength(_,ty) -> accFreeVarsInTy opts ty acc | Test.Const _ | Test.IsNull -> acc | Test.IsInst (srcty,tgty) -> accFreeVarsInTy opts srcty (accFreeVarsInTy opts tgty acc) | Test.ActivePatternCase (exp, tys, activePatIdentity, _, _) -> accFreeInExpr opts exp (accFreeVarsInTys opts tys (Option.foldBack (fun (vref,tinst) acc -> accFreeValRef opts vref (accFreeVarsInTys opts tinst acc)) activePatIdentity acc)) and accFreeInDecisionTree opts x (acc : FreeVars) = match x with | TDSwitch(e1,csl,dflt,_) -> accFreeInExpr opts e1 (accFreeInSwitchCases opts csl dflt acc) | TDSuccess (es,_) -> accFreeInFlatExprs opts es acc | TDBind (bind,body) -> unionFreeVars (bindLhs opts bind (accBindRhs opts bind (freeInDecisionTree opts body))) acc and accFreeInValFlags opts flag acc = let isMethLocal = match flag with | VSlotDirectCall | CtorValUsedAsSelfInit | CtorValUsedAsSuperInit -> true | PossibleConstrainedCall _ | NormalValUse -> false let acc = accUsesFunctionLocalConstructs isMethLocal acc match flag with | PossibleConstrainedCall ty -> accFreeTyvars opts accFreeInType ty acc | _ -> acc and accFreeLocalVal opts v fvs = if not opts.includeLocals then fvs else if Zset.contains v fvs.FreeLocals then fvs else let fvs = accFreevarsInVal opts v fvs {fvs with FreeLocals=Zset.add v fvs.FreeLocals} and accLocalTyconRepr opts b fvs = if not opts.includeLocalTyconReprs then fvs else if Zset.contains b fvs.FreeLocalTyconReprs then fvs else { fvs with FreeLocalTyconReprs = Zset.add b fvs.FreeLocalTyconReprs } and accUsedRecdOrUnionTyconRepr opts (tc:Tycon) fvs = if match tc.TypeReprInfo with TFsObjModelRepr _ | TRecdRepr _ | TFiniteUnionRepr _ -> true | _ -> false then accLocalTyconRepr opts tc fvs else fvs and accFreeUnionCaseRef opts cr fvs = if not opts.includeUnionCases then fvs else if Zset.contains cr fvs.FreeUnionCases then fvs else let fvs = fvs |> accUsedRecdOrUnionTyconRepr opts cr.Tycon let fvs = fvs |> accFreevarsInTycon opts cr.TyconRef { fvs with FreeUnionCases = Zset.add cr fvs.FreeUnionCases } and accFreeRecdFieldRef opts rfref fvs = if not opts.includeRecdFields then fvs else if Zset.contains rfref fvs.FreeRecdFields then fvs else let fvs = fvs |> accUsedRecdOrUnionTyconRepr opts rfref.Tycon let fvs = fvs |> accFreevarsInTycon opts rfref.TyconRef { fvs with FreeRecdFields = Zset.add rfref fvs.FreeRecdFields } and accFreeExnRef _exnc fvs = fvs // Note: this exnc (TyconRef) should be collected the surround types, e.g. tinst of Expr.Op and accFreeValRef opts (vref:ValRef) fvs = match vref.IsLocalRef with | true -> accFreeLocalVal opts vref.PrivateTarget fvs // non-local values do not contain free variables | _ -> fvs and accFreeInMethod opts (TObjExprMethod(slotsig,_attribs,tps,tmvs,e,_)) acc = accFreeInSlotSig opts slotsig (unionFreeVars (accFreeTyvars opts boundTypars tps (List.foldBack (boundLocalVals opts) tmvs (freeInExpr opts e))) acc) and accFreeInMethods opts methods acc = List.foldBack (accFreeInMethod opts) methods acc and accFreeInInterfaceImpl opts (ty,overrides) acc = accFreeVarsInTy opts ty (accFreeInMethods opts overrides acc) and accFreeInExpr (opts:FreeVarOptions) x acc = match x with | Expr.Let _ -> accFreeInExprLinear opts x acc (fun e -> e) | _ -> accFreeInExprNonLinear opts x acc and accFreeInExprLinear (opts:FreeVarOptions) x acc contf = // for nested let-bindings, we need to continue after the whole let-binding is processed match x with | Expr.Let (bind,e,_,cache) -> let contf = contf << (fun free -> unionFreeVars (freeVarsCacheCompute opts cache (fun () -> bindLhs opts bind (accBindRhs opts bind free))) acc ) accFreeInExprLinear opts e emptyFreeVars contf | _ -> // No longer linear expr accFreeInExpr opts x acc |> contf and accFreeInExprNonLinear opts x acc = match x with // BINDING CONSTRUCTS | Expr.Lambda (_,ctorThisValOpt,baseValOpt,vs,b,_,rty) -> unionFreeVars (Option.foldBack (boundLocalVal opts) ctorThisValOpt (Option.foldBack (boundLocalVal opts) baseValOpt (boundLocalVals opts vs (accFreeVarsInTy opts rty (freeInExpr opts b))))) acc | Expr.TyLambda (_,vs,b,_,rty) -> unionFreeVars (accFreeTyvars opts boundTypars vs (accFreeVarsInTy opts rty (freeInExpr opts b))) acc | Expr.TyChoose (vs,b,_) -> unionFreeVars (accFreeTyvars opts boundTypars vs (freeInExpr opts b)) acc | Expr.LetRec (binds,e,_,cache) -> unionFreeVars (freeVarsCacheCompute opts cache (fun () -> FlatList.foldBack (bindLhs opts) binds (FlatList.foldBack (accBindRhs opts) binds (freeInExpr opts e)))) acc | Expr.Let _ -> failwith "unreachable - linear expr" | Expr.Obj (_,typ,basev,basecall,overrides,iimpls,_) -> unionFreeVars (boundProtect (Option.foldBack (boundLocalVal opts) basev (accFreeVarsInTy opts typ (accFreeInExpr opts basecall (accFreeInMethods opts overrides (List.foldBack (accFreeInInterfaceImpl opts) iimpls emptyFreeVars)))))) acc // NON-BINDING CONSTRUCTS | Expr.Const _ -> acc | Expr.Val (lvr,flags,_) -> accFreeInValFlags opts flags (accFreeValRef opts lvr acc) | Expr.Quote (ast,{contents=Some(argTypes,argExprs,_data)},_,_,ty) -> accFreeInExpr opts ast (accFreeInExprs opts argExprs (accFreeVarsInTys opts argTypes (accFreeVarsInTy opts ty acc))) | Expr.Quote (ast,{contents=None},_,_,ty) -> accFreeInExpr opts ast (accFreeVarsInTy opts ty acc) | Expr.App(f0,f0ty,tyargs,args,_) -> accFreeVarsInTy opts f0ty (accFreeInExpr opts f0 (accFreeVarsInTys opts tyargs (accFreeInExprs opts args acc))) | Expr.Link(eref) -> accFreeInExpr opts !eref acc | Expr.Sequential (e1,e2,_,_,_) -> let acc = accFreeInExpr opts e1 acc // tail-call - this is required because we should be able to handle (((e1; e2); e3); e4; .... )) accFreeInExpr opts e2 acc | Expr.StaticOptimization (_,e2,e3,_) -> accFreeInExpr opts e2 (accFreeInExpr opts e3 acc) | Expr.Match (_,_,dtree,targets,_,_) -> match x with // Handle if-then-else | LinearMatchExpr(_,_,dtree,tg1,e2,_,_,_) -> let acc = accFreeInDecisionTree opts dtree acc let acc = accFreeInTarget opts tg1 acc accFreeInExpr opts e2 acc // tailcall | _ -> let acc = accFreeInDecisionTree opts dtree acc accFreeInTargets opts targets acc //| Expr.Op (TOp.TryCatch,tinst,[Expr.Lambda(_,_,[_],e1,_,_,_); Expr.Lambda(_,_,[_],e2,_,_,_); Expr.Lambda(_,_,[_],e3,_,_,_)],_) -> | Expr.Op (TOp.TryCatch _,tinst,[e1;e2;e3],_) -> unionFreeVars (accFreeVarsInTys opts tinst (accFreeInExprs opts [e1;e2] acc)) (bound_rethrow (accFreeInExpr opts e3 emptyFreeVars)) | Expr.Op (op,tinst,args,_) -> let acc = accFreeInOp opts op acc let acc = accFreeVarsInTys opts tinst acc accFreeInExprs opts args acc and accFreeInOp opts op acc = match op with // Things containing no references | TOp.Bytes _ | TOp.UInt16s _ | TOp.TryCatch _ | TOp.TryFinally _ | TOp.For _ | TOp.Coerce | TOp.RefAddrGet | TOp.Tuple | TOp.Array | TOp.While _ | TOp.Goto _ | TOp.Label _ | TOp.Return | TOp.TupleFieldGet _ -> acc | TOp.UnionCaseTagGet tr -> accUsedRecdOrUnionTyconRepr opts tr.Deref acc // Things containing just a union case reference | TOp.UnionCaseProof cr | TOp.UnionCase cr | TOp.UnionCaseFieldGet (cr,_) | TOp.UnionCaseFieldSet (cr,_) -> accFreeUnionCaseRef opts cr acc // Things containing just an exception reference | TOp.ExnConstr ecr | TOp.ExnFieldGet (ecr,_) | TOp.ExnFieldSet (ecr,_) -> accFreeExnRef ecr acc | TOp.ValFieldGet fr | TOp.ValFieldGetAddr fr | TOp.ValFieldSet fr -> accFreeRecdFieldRef opts fr acc | TOp.Recd (kind,tcr) -> let acc = accUsesFunctionLocalConstructs (kind = RecdExprIsObjInit) acc (accUsedRecdOrUnionTyconRepr opts tcr.Deref (accFreeTyvars opts accFreeTycon tcr acc)) | TOp.ILAsm (_,tys) -> accFreeVarsInTys opts tys acc | TOp.Reraise -> accUsesRethrow true acc | TOp.TraitCall(TTrait(tys,_,_,argtys,rty,sln)) -> Option.foldBack (accFreeVarsInTraitSln opts) sln.Value (accFreeVarsInTys opts tys (accFreeVarsInTys opts argtys (Option.foldBack (accFreeVarsInTy opts) rty acc))) | TOp.LValueOp (_,lvr) -> accFreeValRef opts lvr acc | TOp.ILCall (_,isProtectedCall,_,_,valUseFlags,_,_,_,enclTypeArgs,methTypeArgs,tys) -> accFreeVarsInTys opts enclTypeArgs (accFreeVarsInTys opts methTypeArgs (accFreeInValFlags opts valUseFlags (accFreeVarsInTys opts tys (accUsesFunctionLocalConstructs isProtectedCall acc)))) and accFreeInTargets opts targets acc = Array.foldBack (accFreeInTarget opts) targets acc and accFreeInTarget opts (TTarget(vs,e,_)) acc = FlatList.foldBack (boundLocalVal opts) vs (accFreeInExpr opts e acc) and accFreeInFlatExprs opts (es:FlatExprs) acc = FlatList.foldBack (accFreeInExpr opts) es acc and accFreeInExprs opts (es: Exprs) acc = match es with | [] -> acc | h::t -> let acc = accFreeInExpr opts h acc // tailcall - e.g. Cons(x,Cons(x2,.......Cons(x1000000,Nil))) and [| x1; .... ; x1000000 |] accFreeInExprs opts t acc and accFreeInSlotSig opts (TSlotSig(_,typ,_,_,_,_)) acc = accFreeVarsInTy opts typ acc and freeInDecisionTree opts e = accFreeInDecisionTree opts e emptyFreeVars and freeInExpr opts e = accFreeInExpr opts e emptyFreeVars // Note: these are only an approximation - they are currently used only by the optimizer let rec accFreeInModuleOrNamespace opts x acc = match x with | TMDefRec(_,binds,mbinds,_) -> FlatList.foldBack (accBindRhs opts) binds (List.foldBack (accFreeInModuleOrNamespaceBind opts) mbinds acc) | TMDefLet(bind,_) -> accBindRhs opts bind acc | TMDefDo(e,_) -> accFreeInExpr opts e acc | TMDefs defs -> accFreeInModuleOrNamespaces opts defs acc | TMAbstract(ModuleOrNamespaceExprWithSig(_,mdef,_)) -> accFreeInModuleOrNamespace opts mdef acc // not really right, but sufficient for how this is used in optimization and accFreeInModuleOrNamespaceBind opts (ModuleOrNamespaceBinding(_, def)) acc = accFreeInModuleOrNamespace opts def acc and accFreeInModuleOrNamespaces opts x acc = List.foldBack (accFreeInModuleOrNamespace opts) x acc // NOTE: we don't yet need to ask for free variables in module expressions let freeInBindingRhs opts bind = accBindRhs opts bind emptyFreeVars let freeInModuleOrNamespace opts mdef = accFreeInModuleOrNamespace opts mdef emptyFreeVars //--------------------------------------------------------------------------- // Destruct - rarely needed //--------------------------------------------------------------------------- let rec stripLambda (e,ty) = match e with | Expr.Lambda (_,ctorThisValOpt,baseValOpt,v,b,_,rty) -> if isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", e.Range)); if isSome baseValOpt then errorR(InternalError("skipping baseValOpt", e.Range)); let (vs',b',rty') = stripLambda (b,rty) (v :: vs', b', rty') | _ -> ([],e,ty) let rec stripLambdaN n e = assert (n >= 0) match e with | Expr.Lambda (_,ctorThisValOpt,baseValOpt,v,body,_,_) when n > 0 -> if isSome ctorThisValOpt then errorR(InternalError("skipping ctorThisValOpt", e.Range)); if isSome baseValOpt then errorR(InternalError("skipping baseValOpt", e.Range)); let (vs,body',remaining) = stripLambdaN (n-1) body (v :: vs, body', remaining) | _ -> ([],e,n) let tryStripLambdaN n e = match e with | Expr.Lambda(_,None,None,_,_,_,_) -> let argvsl, body, remaining = stripLambdaN n e if remaining = 0 then Some (argvsl, body) else None | _ -> None let stripTopLambda (e,ty) = let tps,taue,tauty = match e with Expr.TyLambda (_,tps,b,_,rty) -> tps,b,rty | _ -> [],e,ty let vs,body,rty = stripLambda (taue,tauty) tps,vs,body,rty // This is used to infer arities of expressions // i.e. base the chosen arity on the syntactic expression shape and type of arguments let InferArityOfExpr g ty partialArgAttribsL retAttribs e = let rec stripLambda_notypes e = match e with | Expr.Lambda (_,_,_,vs,b,_,_) -> let (vs',b') = stripLambda_notypes b (vs :: vs', b') | Expr.TyChoose (_,b,_) -> stripLambda_notypes b | _ -> ([],e) let stripTopLambdaNoTypes e = let tps,taue = match e with Expr.TyLambda (_,tps,b,_,_) -> tps,b | _ -> [],e let vs,body = stripLambda_notypes taue tps,vs,body let tps,vsl,_ = stripTopLambdaNoTypes e let fun_arity = vsl.Length let dtys,_ = stripFunTyN g fun_arity (snd (tryDestForallTy g ty)) let partialArgAttribsL = Array.ofList partialArgAttribsL assert (List.length vsl = List.length dtys) let curriedArgInfos = (List.zip vsl dtys) |> List.mapi (fun i (vs,ty) -> let partialAttribs = if i < partialArgAttribsL.Length then partialArgAttribsL.[i] else [] let tys = if (i = 0 && isUnitTy g ty) then [] else tryDestTupleTy g ty let ids = if vs.Length = tys.Length then vs |> List.map (fun v -> Some v.Id) else tys |> List.map (fun _ -> None) let attribs = if partialAttribs.Length = tys.Length then partialAttribs else tys |> List.map (fun _ -> []) (ids,attribs) ||> List.map2 (fun id attribs -> { Name = id; Attribs = attribs } : ArgReprInfo )) let retInfo : ArgReprInfo = { Attribs = retAttribs; Name = None } ValReprInfo (ValReprInfo.InferTyparInfo tps, curriedArgInfos, retInfo) let InferArityOfExprBinding g (v:Val) e = match v.ValReprInfo with | Some info -> info | None -> InferArityOfExpr g v.Type [] [] e //------------------------------------------------------------------------- // Check if constraints are satisfied that allow us to use more optimized // implementations //------------------------------------------------------------------------- let underlyingTypeOfEnumTy g typ = assert(isEnumTy g typ) let tycon = tyconOfAppTy g typ match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> info.UnderlyingTypeOfEnum() #endif | ILTypeMetadata (_,tdef) -> let info = computeILEnumInfo (tdef.Name,tdef.Fields) let ilTy = getTyOfILEnumInfo info match ilTy.TypeSpec.Name with | "System.Byte" -> g.byte_ty | "System.SByte" -> g.sbyte_ty | "System.Int16" -> g.int16_ty | "System.Int32" -> g.int32_ty | "System.Int64" -> g.int64_ty | "System.UInt16" -> g.uint16_ty | "System.UInt32" -> g.uint32_ty | "System.UInt64" -> g.uint64_ty | "System.Single" -> g.float32_ty | "System.Double" -> g.float_ty | "System.Char" -> g.char_ty | "System.Boolean" -> g.bool_ty | _ -> g.int32_ty | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> match tycon.GetFieldByName "value__" with | Some rf -> rf.FormalType | None -> error(InternalError("no 'value__' field found for enumeration type "^tycon.LogicalName,tycon.Range)) // CLEANUP NOTE: Get rid of this mutation. let setValHasNoArity (f:Val) = f.SetValReprInfo None; f //-------------------------------------------------------------------------- // Resolve static optimization constraints //-------------------------------------------------------------------------- let normalizeEnumTy g ty = (if isEnumTy g ty then underlyingTypeOfEnumTy g ty else ty) // -1 equals "no", 0 is "unknown", 1 is "yes" let decideStaticOptimizationConstraint g c = match c with | TTyconEqualsTycon (a,b) -> let a = normalizeEnumTy g (stripTyEqnsAndMeasureEqns g a) let b = normalizeEnumTy g (stripTyEqnsAndMeasureEqns g b) // Both types must be nominal for a definite result match tryDestAppTy g a with | Some tcref1 -> match tryDestAppTy g b with | Some tcref2 -> if tyconRefEq g tcref1 tcref2 then 1 else -1 | None -> 0 | None -> 0 | TTyconIsStruct a -> let a = normalizeEnumTy g (stripTyEqnsAndMeasureEqns g a) match tryDestAppTy g a with | Some tcref1 -> if tcref1.IsStructOrEnumTycon then 1 else -1 | None -> 0 let rec DecideStaticOptimizations g cs = match cs with | [] -> 1 | h::t -> let d = decideStaticOptimizationConstraint g h if d = -1 then -1 elif d = 1 then DecideStaticOptimizations g t else 0 let mkStaticOptimizationExpr g (cs,e1,e2,m) = let d = DecideStaticOptimizations g cs in if d = -1 then e2 elif d = 1 then e1 else Expr.StaticOptimization(cs,e1,e2,m) //-------------------------------------------------------------------------- // Copy expressions, including new names for locally bound values. // Used to inline expressions. //-------------------------------------------------------------------------- type ValCopyFlag = | CloneAll | CloneAllAndMarkExprValsAsCompilerGenerated | OnlyCloneExprVals let markAsCompGen compgen d = let compgen = match compgen with | CloneAllAndMarkExprValsAsCompilerGenerated -> true | _ -> false { d with val_flags= d.val_flags.SetIsCompilerGenerated(d.val_flags.IsCompilerGenerated || compgen) } let bindLocalVal (v:Val) (v':Val) tmenv = { tmenv with valRemap=tmenv.valRemap.Add v (mkLocalValRef v') } let bindLocalVals vs vs' tmenv = { tmenv with valRemap= (vs, vs', tmenv.valRemap) |||> List.foldBack2 (fun v v' acc -> acc.Add v (mkLocalValRef v') ) } let bindTycon (tc:Tycon) (tc':Tycon) tyenv = { tyenv with tyconRefRemap=tyenv.tyconRefRemap.Add (mkLocalTyconRef tc) (mkLocalTyconRef tc') } let bindTycons tcs tcs' tyenv = { tyenv with tyconRefRemap= (tcs,tcs',tyenv.tyconRefRemap) |||> List.foldBack2 (fun tc tc' acc -> acc.Add (mkLocalTyconRef tc) (mkLocalTyconRef tc')) } let remapAttribKind tmenv k = match k with | ILAttrib _ as x -> x | FSAttrib vref -> FSAttrib(remapValRef tmenv vref) let tmenvCopyRemapAndBindTypars remapAttrib tmenv tps = let tps',tyenvinner = copyAndRemapAndBindTyparsFull remapAttrib tmenv tps let tmenvinner = tyenvinner tps',tmenvinner let rec remapAttrib g tmenv (Attrib (tcref,kind, args, props,isGetOrSetAttr,targets,m)) = Attrib(remapTyconRef tmenv.tyconRefRemap tcref, remapAttribKind tmenv kind, args |> List.map (remapAttribExpr g tmenv), props |> List.map (fun (AttribNamedArg(nm,ty,flg,expr)) -> AttribNamedArg(nm,remapType tmenv ty, flg, remapAttribExpr g tmenv expr)), isGetOrSetAttr, targets, m) and remapAttribExpr g tmenv (AttribExpr(e1,e2)) = AttribExpr(remapExpr g CloneAll tmenv e1, remapExpr g CloneAll tmenv e2) and remapAttribs g tmenv xs = List.map (remapAttrib g tmenv) xs and remapPossibleForallTy g tmenv ty = remapTypeFull (remapAttribs g tmenv) tmenv ty and remapArgData g tmenv (argInfo : ArgReprInfo) : ArgReprInfo = { Attribs = remapAttribs g tmenv argInfo.Attribs; Name = argInfo.Name } and remapValReprInfo g tmenv (ValReprInfo(tpNames,arginfosl,retInfo)) = ValReprInfo(tpNames,List.mapSquared (remapArgData g tmenv) arginfosl, remapArgData g tmenv retInfo) and remapValData g tmenv d = #if DEBUG if !verboseStamps then dprintf "remap val data #%d\n" d.val_stamp; #endif let ty = d.val_type let topValInfo = d.val_repr_info let ty' = ty |> remapPossibleForallTy g tmenv { d with val_type = ty'; val_actual_parent = d.val_actual_parent |> remapParentRef tmenv; val_repr_info = d.val_repr_info |> Option.map (remapValReprInfo g tmenv); val_member_info = d.val_member_info |> Option.map (remapMemberInfo g d.val_defn_range topValInfo ty ty' tmenv); val_attribs = d.val_attribs |> remapAttribs g tmenv } and remapParentRef tyenv p = match p with | ParentNone -> ParentNone | Parent x -> Parent (x |> remapTyconRef tyenv.tyconRefRemap) and mapImmediateValsAndTycons ft fv (x:ModuleOrNamespaceType) = let vals = x.AllValsAndMembers |> QueueList.map fv let tycons = x.AllEntities |> QueueList.map ft new ModuleOrNamespaceType(x.ModuleOrNamespaceKind, vals, tycons) and copyVal compgen (v:Val) = match compgen with | OnlyCloneExprVals when v.IsMemberOrModuleBinding -> v | _ -> v |> NewModifiedVal id and fixupValData g compgen tmenv (v2:Val) = // only fixup if we copy the value match compgen with | OnlyCloneExprVals when v2.IsMemberOrModuleBinding -> () | _ -> v2.Data <- remapValData g tmenv v2.Data |> markAsCompGen compgen and copyAndRemapAndBindVals g compgen tmenv vs = let vs2 = vs |> List.map (copyVal compgen) let tmenvinner = bindLocalVals vs vs2 tmenv vs2 |> List.iter (fixupValData g compgen tmenvinner) vs2, tmenvinner and copyAndRemapAndBindVal g compgen tmenv v = let v2 = v |> copyVal compgen let tmenvinner = bindLocalVal v v2 tmenv fixupValData g compgen tmenvinner v2 v2, tmenvinner and remapExpr g (compgen:ValCopyFlag) (tmenv:Remap) x = match x with // Binding constructs - see also dtrees below | Expr.Lambda (_,ctorThisValOpt, baseValOpt,vs,b,m,rty) -> let ctorThisValOpt, tmenv = Option.mapFold (copyAndRemapAndBindVal g compgen) tmenv ctorThisValOpt let baseValOpt, tmenv = Option.mapFold (copyAndRemapAndBindVal g compgen) tmenv baseValOpt let vs,tmenv = copyAndRemapAndBindVals g compgen tmenv vs let b = remapExpr g compgen tmenv b let rty = remapType tmenv rty Expr.Lambda (newUnique(), ctorThisValOpt, baseValOpt,vs,b,m, rty) | Expr.TyLambda (_,tps,b,m,rty) -> let tps',tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv tps mkTypeLambda m tps' (remapExpr g compgen tmenvinner b,remapType tmenvinner rty) | Expr.TyChoose (tps,b,m) -> let tps',tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv tps Expr.TyChoose(tps',remapExpr g compgen tmenvinner b,m) | Expr.LetRec (binds,e,m,_) -> let binds',tmenvinner = copyAndRemapAndBindBindings g compgen tmenv binds Expr.LetRec (binds',remapExpr g compgen tmenvinner e,m,NewFreeVarsCache()) | Expr.Sequential _ | Expr.Let _ -> remapLinearExpr g compgen tmenv x (fun x -> x) | Expr.Match (spBind,exprm,pt,targets,m,ty) -> primMkMatch (spBind,exprm,remapDecisionTree g compgen tmenv pt, targets |> Array.map (remapTarget g compgen tmenv), m,remapType tmenv ty) // Other constructs | Expr.Val (vr,vf,m) -> let vr' = remapValRef tmenv vr let vf' = remapValFlags tmenv vf if vr === vr' && vf === vf' then x else Expr.Val (vr',vf',m) | Expr.Quote (a,{contents=Some(argTypes,argExprs,data)},isFromQueryExpression,m,ty) -> Expr.Quote (remapExpr g compgen tmenv a,{contents=Some(remapTypesAux tmenv argTypes,remapExprs g compgen tmenv argExprs,data)},isFromQueryExpression,m,remapType tmenv ty) | Expr.Quote (a,{contents=None},isFromQueryExpression,m,ty) -> Expr.Quote (remapExpr g compgen tmenv a,{contents=None},isFromQueryExpression,m,remapType tmenv ty) | Expr.Obj (_,typ,basev,basecall,overrides,iimpls,m) -> let basev',tmenvinner = Option.mapFold (copyAndRemapAndBindVal g compgen) tmenv basev mkObjExpr(remapType tmenv typ,basev', remapExpr g compgen tmenv basecall, List.map (remapMethod g compgen tmenvinner) overrides, List.map (remapInterfaceImpl g compgen tmenvinner) iimpls,m) // Addresses of immutable field may "leak" across assembly boundaries - see CanTakeAddressOfRecdField below. // This is "ok", in the sense that it is always valid to fix these up to be uses // of a temporary local, e.g. // &(E.RF) --> let mutable v = E.RF in &v | Expr.Op (TOp.ValFieldGetAddr rfref,tinst,[arg],m) when not rfref.RecdField.IsMutable && not (entityRefInThisAssembly g.compilingFslib rfref.TyconRef) -> let tinst = remapTypes tmenv tinst let arg = remapExpr g compgen tmenv arg let tmp,_ = mkMutableCompGenLocal m "copyOfStruct" (actualTyOfRecdFieldRef rfref tinst) mkCompGenLet m tmp (mkRecdFieldGetViaExprAddr(arg,rfref,tinst,m)) (mkValAddr m (mkLocalValRef tmp)) | Expr.Op (op,tinst,args,m) -> let op' = remapOp tmenv op let tinst' = remapTypes tmenv tinst let args' = remapExprs g compgen tmenv args if op === op' && tinst === tinst' && args === args' then x else Expr.Op (op',tinst',args',m) | Expr.App(e1,e1ty,tyargs,args,m) -> let e1' = remapExpr g compgen tmenv e1 let e1ty' = remapPossibleForallTy g tmenv e1ty let tyargs' = remapTypes tmenv tyargs let args' = remapExprs g compgen tmenv args if e1 === e1' && e1ty === e1ty' && tyargs === tyargs' && args === args' then x else Expr.App(e1',e1ty',tyargs',args',m) | Expr.Link(eref) -> remapExpr g compgen tmenv !eref | Expr.StaticOptimization (cs,e2,e3,m) -> // note that type instantiation typically resolve the static constraints here mkStaticOptimizationExpr g (List.map (remapConstraint tmenv) cs,remapExpr g compgen tmenv e2,remapExpr g compgen tmenv e3,m) | Expr.Const (c,m,ty) -> let ty' = remapType tmenv ty if ty === ty' then x else Expr.Const (c,m,ty') and remapTarget g compgen tmenv (TTarget(vs,e,spTarget)) = let vs',tmenvinner = copyAndRemapAndBindVals g compgen tmenv vs TTarget(vs', remapExpr g compgen tmenvinner e,spTarget) and remapLinearExpr g compgen tmenv e contf = match e with | Expr.Let (bind,e,m,_) -> let bind',tmenvinner = copyAndRemapAndBindBinding g compgen tmenv bind // tailcall remapLinearExpr g compgen tmenvinner e (contf << mkLetBind m bind') | Expr.Sequential (e1,e2,dir,spSeq,m) -> let e1' = remapExpr g compgen tmenv e1 // tailcall remapLinearExpr g compgen tmenv e2 (contf << (fun e2' -> if e1 === e1' && e2 === e2' then e else Expr.Sequential (e1',e2',dir,spSeq,m))) | LinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty) -> let dtree = remapDecisionTree g compgen tmenv dtree let tg1 = remapTarget g compgen tmenv tg1 let ty = remapType tmenv ty // tailcall remapLinearExpr g compgen tmenv e2 (contf << (fun e2 -> rebuildLinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty))) | _ -> contf (remapExpr g compgen tmenv e) and remapConstraint tyenv c = match c with | TTyconEqualsTycon(ty1,ty2) -> TTyconEqualsTycon(remapType tyenv ty1, remapType tyenv ty2) | TTyconIsStruct(ty1) -> TTyconIsStruct(remapType tyenv ty1) and remapOp tmenv op = match op with | TOp.Recd (ctor,tcr) -> TOp.Recd(ctor,remapTyconRef tmenv.tyconRefRemap tcr) | TOp.UnionCaseTagGet tcr -> TOp.UnionCaseTagGet(remapTyconRef tmenv.tyconRefRemap tcr) | TOp.UnionCase(ucref) -> TOp.UnionCase(remapUnionCaseRef tmenv.tyconRefRemap ucref) | TOp.UnionCaseProof(ucref) -> TOp.UnionCaseProof(remapUnionCaseRef tmenv.tyconRefRemap ucref) | TOp.ExnConstr ec -> TOp.ExnConstr(remapTyconRef tmenv.tyconRefRemap ec) | TOp.ExnFieldGet(ec,n) -> TOp.ExnFieldGet(remapTyconRef tmenv.tyconRefRemap ec,n) | TOp.ExnFieldSet(ec,n) -> TOp.ExnFieldSet(remapTyconRef tmenv.tyconRefRemap ec,n) | TOp.ValFieldSet rfref -> TOp.ValFieldSet(remapRecdFieldRef tmenv.tyconRefRemap rfref) | TOp.ValFieldGet rfref -> TOp.ValFieldGet(remapRecdFieldRef tmenv.tyconRefRemap rfref) | TOp.ValFieldGetAddr rfref -> TOp.ValFieldGetAddr(remapRecdFieldRef tmenv.tyconRefRemap rfref) | TOp.UnionCaseFieldGet(ucref,n) -> TOp.UnionCaseFieldGet(remapUnionCaseRef tmenv.tyconRefRemap ucref,n) | TOp.UnionCaseFieldSet(ucref,n) -> TOp.UnionCaseFieldSet(remapUnionCaseRef tmenv.tyconRefRemap ucref,n) | TOp.ILAsm (instrs,tys) -> TOp.ILAsm (instrs,remapTypes tmenv tys) | TOp.TraitCall(traitInfo) -> TOp.TraitCall(remapTraitAux tmenv traitInfo) | TOp.LValueOp (kind,lvr) -> TOp.LValueOp (kind,remapValRef tmenv lvr) | TOp.ILCall (isVirtCall,isProtectedCall,valu,isNewObjCall,valUseFlags,isProperty,noTailCall,ilMethRef,enclTypeArgs,methTypeArgs,tys) -> TOp.ILCall (isVirtCall,isProtectedCall,valu,isNewObjCall,remapValFlags tmenv valUseFlags, isProperty,noTailCall,ilMethRef,remapTypes tmenv enclTypeArgs, remapTypes tmenv methTypeArgs,remapTypes tmenv tys) | _ -> op and remapValFlags tmenv x = match x with | PossibleConstrainedCall ty -> PossibleConstrainedCall (remapType tmenv ty) | _ -> x and remapExprs g compgen tmenv es = List.mapq (remapExpr g compgen tmenv) es and remapFlatExprs g compgen tmenv es = FlatList.mapq (remapExpr g compgen tmenv) es and remapDecisionTree g compgen tmenv x = match x with | TDSwitch(e1,csl,dflt,m) -> TDSwitch(remapExpr g compgen tmenv e1, List.map (fun (TCase(test,y)) -> let test' = match test with | Test.UnionCase (uc,tinst) -> Test.UnionCase(remapUnionCaseRef tmenv.tyconRefRemap uc,remapTypes tmenv tinst) | Test.ArrayLength (n,ty) -> Test.ArrayLength(n,remapType tmenv ty) | Test.Const _ -> test | Test.IsInst (srcty,tgty) -> Test.IsInst (remapType tmenv srcty,remapType tmenv tgty) | Test.IsNull -> Test.IsNull | Test.ActivePatternCase _ -> failwith "Test.ActivePatternCase should only be used during pattern match compilation" TCase(test',remapDecisionTree g compgen tmenv y)) csl, Option.map (remapDecisionTree g compgen tmenv) dflt, m) | TDSuccess (es,n) -> TDSuccess (remapFlatExprs g compgen tmenv es,n) | TDBind (bind,rest) -> let bind',tmenvinner = copyAndRemapAndBindBinding g compgen tmenv bind TDBind (bind',remapDecisionTree g compgen tmenvinner rest) and copyAndRemapAndBindBinding g compgen tmenv (bind:Binding) = let v = bind.Var let v', tmenv = copyAndRemapAndBindVal g compgen tmenv v remapAndRenameBind g compgen tmenv bind v' , tmenv and copyAndRemapAndBindBindings g compgen tmenv binds = let vs', tmenvinner = copyAndRemapAndBindVals g compgen tmenv (valsOfBinds binds) remapAndRenameBinds g compgen tmenvinner binds vs',tmenvinner and remapAndRenameBinds g compgen tmenvinner binds vs' = FlatList.map2 (remapAndRenameBind g compgen tmenvinner) binds vs' and remapAndRenameBind g compgen tmenvinner (TBind(_,repr,letSeqPtOpt)) v' = TBind(v', remapExpr g compgen tmenvinner repr,letSeqPtOpt) and remapMethod g compgen tmenv (TObjExprMethod(slotsig,attribs,tps,vs,e,m)) = let attribs2 = attribs |> remapAttribs g tmenv let slotsig2 = remapSlotSig (remapAttribs g tmenv) tmenv slotsig let tps2,tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv tps let vs2, tmenvinner2 = List.mapFold (copyAndRemapAndBindVals g compgen) tmenvinner vs let e2 = remapExpr g compgen tmenvinner2 e TObjExprMethod(slotsig2,attribs2,tps2,vs2,e2,m) and remapInterfaceImpl g compgen tmenv (ty,overrides) = (remapType tmenv ty, List.map (remapMethod g compgen tmenv) overrides) and remapRecdField g tmenv x = { x with rfield_type = x.rfield_type |> remapPossibleForallTy g tmenv; rfield_pattribs = x.rfield_pattribs |> remapAttribs g tmenv; rfield_fattribs = x.rfield_fattribs |> remapAttribs g tmenv; } and remapRecdFields g tmenv (x:TyconRecdFields) = x.AllFieldsAsList |> List.map (remapRecdField g tmenv) |> MakeRecdFieldsTable and remapUnionCase g tmenv x = { x with FieldTable = x.FieldTable |> remapRecdFields g tmenv; ReturnType = x.ReturnType |> remapType tmenv; Attribs = x.Attribs |> remapAttribs g tmenv; } and remapUnionCases g tmenv (x:TyconUnionData) = x.UnionCasesAsList |> List.map (remapUnionCase g tmenv)|> MakeUnionCases and remapFsObjData g tmenv x = { x with fsobjmodel_kind = (match x.fsobjmodel_kind with | TTyconDelegate slotsig -> TTyconDelegate (remapSlotSig (remapAttribs g tmenv) tmenv slotsig) | TTyconClass | TTyconInterface | TTyconStruct | TTyconEnum -> x.fsobjmodel_kind); fsobjmodel_vslots = x.fsobjmodel_vslots |> List.map (remapValRef tmenv); fsobjmodel_rfields = x.fsobjmodel_rfields |> remapRecdFields g tmenv } and remapTyconRepr g tmenv repr = match repr with | TFsObjModelRepr x -> TFsObjModelRepr (remapFsObjData g tmenv x) | TRecdRepr x -> TRecdRepr (remapRecdFields g tmenv x) | TFiniteUnionRepr x -> TFiniteUnionRepr (remapUnionCases g tmenv x) | TILObjModelRepr _ -> failwith "cannot remap IL type definitions" #if EXTENSIONTYPING | TProvidedNamespaceExtensionPoint _ -> repr | TProvidedTypeExtensionPoint info -> TProvidedTypeExtensionPoint { info with LazyBaseType = info.LazyBaseType.Force (range0, g.obj_ty) |> remapType tmenv |> LazyWithContext.NotLazy // The load context for the provided type contains TyconRef objects. We must remap these. // This is actually done on-demand (see the implementation of ProvidedTypeContext) ProvidedType = info.ProvidedType.PApplyNoFailure (fun st -> let ctxt = st.Context.RemapTyconRefs(unbox >> remapTyconRef tmenv.tyconRefRemap >> box) ProvidedType.ApplyContext (st, ctxt)) } #endif | TNoRepr _ -> repr | TAsmRepr _ -> repr | TMeasureableRepr x -> TMeasureableRepr (remapType tmenv x) and remapTyconAug tmenv (x:TyconAugmentation) = { x with tcaug_equals = x.tcaug_equals |> Option.map (mapPair (remapValRef tmenv, remapValRef tmenv)); tcaug_compare = x.tcaug_compare |> Option.map (mapPair (remapValRef tmenv, remapValRef tmenv)); tcaug_compare_withc = x.tcaug_compare_withc |> Option.map(remapValRef tmenv); tcaug_hash_and_equals_withc = x.tcaug_hash_and_equals_withc |> Option.map (mapTriple (remapValRef tmenv, remapValRef tmenv, remapValRef tmenv)); tcaug_adhoc = x.tcaug_adhoc |> NameMap.map (List.map (remapValRef tmenv)); tcaug_adhoc_list = x.tcaug_adhoc_list |> ResizeArray.map (fun (flag, vref) -> (flag, remapValRef tmenv vref)); tcaug_super = x.tcaug_super |> Option.map (remapType tmenv); tcaug_interfaces = x.tcaug_interfaces |> List.map (map1Of3 (remapType tmenv)) } and remapTyconExnInfo g tmenv inp = match inp with | TExnAbbrevRepr x -> TExnAbbrevRepr (remapTyconRef tmenv.tyconRefRemap x) | TExnFresh x -> TExnFresh (remapRecdFields g tmenv x) | TExnAsmRepr _ | TExnNone -> inp and remapMemberInfo g m topValInfo ty ty' tmenv x = // The slotsig in the ImplementedSlotSigs is w.r.t. the type variables in the value's type. // REVIEW: this is a bit gross. It would be nice if the slotsig was standalone assert (isSome topValInfo); let tpsOrig,_,_,_ = GetMemberTypeInFSharpForm g x.MemberFlags (Option.get topValInfo) ty m let tps,_,_,_ = GetMemberTypeInFSharpForm g x.MemberFlags (Option.get topValInfo) ty' m let renaming,_ = mkTyparToTyparRenaming tpsOrig tps let tmenv = { tmenv with tpinst = tmenv.tpinst @ renaming } { x with ApparentParent = x.ApparentParent |> remapTyconRef tmenv.tyconRefRemap ; ImplementedSlotSigs = x.ImplementedSlotSigs |> List.map (remapSlotSig (remapAttribs g tmenv) tmenv); } and copyAndRemapAndBindModTy g compgen tmenv mty = let tycons = allEntitiesOfModuleOrNamespaceTy mty let vs = allValsOfModuleOrNamespaceTy mty let _,_,tmenvinner = copyAndRemapAndBindTyconsAndVals g compgen tmenv tycons vs remapModTy g compgen tmenvinner mty, tmenvinner and remapModTy _g _compgen tmenv mty = mapImmediateValsAndTycons (renameTycon tmenv) (renameVal tmenv) mty and renameTycon tyenv x = let tcref = try let res = tyenv.tyconRefRemap.[mkLocalTyconRef x] res with :? KeyNotFoundException -> errorR(InternalError("couldn't remap internal tycon "^showL(DebugPrint.tyconL x),x.Range)); mkLocalTyconRef x tcref.Deref and renameVal tmenv x = match tmenv.valRemap.TryFind x with | Some v -> v.Deref | None -> x and copyTycon compgen (tycon:Tycon) = match compgen with | OnlyCloneExprVals -> tycon | _ -> NewClonedTycon tycon /// This operates over a whole nested collection of tycons and vals simultaneously *) and copyAndRemapAndBindTyconsAndVals g compgen tmenv tycons vs = let tycons' = tycons |> List.map (copyTycon compgen) let tmenvinner = bindTycons tycons tycons' tmenv // Values need to be copied and renamed. let vs',tmenvinner = copyAndRemapAndBindVals g compgen tmenvinner vs #if DEBUG if !verboseStamps then for tycon in tycons do dprintf "copyAndRemapAndBindTyconsAndVals: tycon %s#%d\n" tycon.LogicalName tycon.Stamp; for v in vs do dprintf "copyAndRemapAndBindTyconsAndVals: val %s#%d\n" v.LogicalName v.Stamp; #endif // "if a type constructor is hidden then all its inner values and inner type constructors must also be hidden" // Hence we can just lookup the inner tycon/value mappings in the tables. let lookupVal (v:Val) = let vref = try let res = tmenvinner.valRemap.[v] #if DEBUG if !verboseStamps then dprintf "remaped internal value %s#%d --> %s#%d\n" v.LogicalName v.Stamp res.LogicalName res.Stamp; #endif res with :? KeyNotFoundException -> errorR(InternalError(sprintf "couldn't remap internal value '%s'" v.LogicalName,v.Range)); mkLocalValRef v vref.Deref let lookupTycon tycon = let tcref = try let res = tmenvinner.tyconRefRemap.[mkLocalTyconRef tycon] #if DEBUG if !verboseStamps then dprintf "remaped internal tycon %s#%d --> %s#%d\n" tycon.LogicalName tycon.Stamp res.LogicalName res.Stamp; #endif res with :? KeyNotFoundException -> errorR(InternalError("couldn't remap internal tycon "^showL(DebugPrint.tyconL tycon),tycon.Range)); mkLocalTyconRef tycon tcref.Deref (tycons,tycons') ||> List.iter2 (fun tc tc' -> let tcd = tc.Data let tcd' = tc'.Data let tps',tmenvinner2 = tmenvCopyRemapAndBindTypars (remapAttribs g tmenvinner) tmenvinner (tcd.entity_typars.Force(tcd.entity_range)) tcd'.entity_typars <- LazyWithContext.NotLazy tps'; tcd'.entity_attribs <- tcd.entity_attribs |> remapAttribs g tmenvinner2; tcd'.entity_tycon_repr <- tcd.entity_tycon_repr |> remapTyconRepr g tmenvinner2; tcd'.entity_tycon_abbrev <- tcd.entity_tycon_abbrev |> Option.map (remapType tmenvinner2) ; tcd'.entity_tycon_tcaug <- tcd.entity_tycon_tcaug |> remapTyconAug tmenvinner2 ; tcd'.entity_modul_contents <- notlazy (tcd.entity_modul_contents |> Lazy.force |> mapImmediateValsAndTycons lookupTycon lookupVal); tcd'.entity_exn_info <- tcd.entity_exn_info |> remapTyconExnInfo g tmenvinner2) ; tycons',vs', tmenvinner and allTyconsOfTycon (tycon:Tycon) = seq { yield tycon for nestedTycon in tycon.ModuleOrNamespaceType.AllEntities do yield! allTyconsOfTycon nestedTycon } and allTyconsOfModDef mdef = seq { match mdef with | TMDefRec(tycons,_,mbinds,_) -> for tycon in tycons do yield! allTyconsOfTycon tycon for (ModuleOrNamespaceBinding(mspec, def)) in mbinds do yield mspec; yield! allTyconsOfModDef def | TMDefLet _ -> () | TMDefDo _ -> () | TMDefs defs -> for def in defs do yield! allTyconsOfModDef def | TMAbstract(ModuleOrNamespaceExprWithSig(mty,_,_)) -> yield! allEntitiesOfModuleOrNamespaceTy mty } and allValsOfModDef mdef = seq { match mdef with | TMDefRec(tycons,binds,mbinds,_) -> yield! abstractSlotValsOfTycons tycons yield! (binds |> valsOfBinds |> FlatList.toList) for (ModuleOrNamespaceBinding(_, def)) in mbinds do yield! allValsOfModDef def | TMDefLet(bind,_) -> yield bind.Var | TMDefDo _ -> () | TMDefs defs -> for def in defs do yield! allValsOfModDef def | TMAbstract(ModuleOrNamespaceExprWithSig(mty,_,_)) -> yield! allValsOfModuleOrNamespaceTy mty } and remapAndBindModExpr g compgen tmenv (ModuleOrNamespaceExprWithSig(mty,mdef,m)) = let mdef = copyAndRemapModDef g compgen tmenv mdef let mty,tmenv = copyAndRemapAndBindModTy g compgen tmenv mty ModuleOrNamespaceExprWithSig(mty,mdef,m), tmenv and remapModExpr g compgen tmenv (ModuleOrNamespaceExprWithSig(mty,mdef,m)) = let mdef = copyAndRemapModDef g compgen tmenv mdef let mty = remapModTy g compgen tmenv mty ModuleOrNamespaceExprWithSig(mty,mdef,m) and copyAndRemapModDef g compgen tmenv mdef = let tycons = allTyconsOfModDef mdef |> List.ofSeq let vs = allValsOfModDef mdef |> List.ofSeq let _,_,tmenvinner = copyAndRemapAndBindTyconsAndVals g compgen tmenv tycons vs remapAndRenameModDef g compgen tmenvinner mdef and remapAndRenameModDefs g compgen tmenv x = List.map (remapAndRenameModDef g compgen tmenv) x and remapAndRenameModDef g compgen tmenv mdef = match mdef with | TMDefRec(tycons,binds,mbinds,m) -> // Abstract (virtual) vslots in the tycons at TMDefRec nodes are binders. They also need to be copied and renamed. let tycons = tycons |> List.map (renameTycon tmenv) let binds = remapAndRenameBinds g compgen tmenv binds (binds |> FlatList.map (valOfBind >> renameVal tmenv)) let mbinds = mbinds |> List.map (remapAndRenameModBind g compgen tmenv) TMDefRec(tycons,binds,mbinds,m) | TMDefLet(bind,m) -> let v = bind.Var let bind = remapAndRenameBind g compgen tmenv bind (renameVal tmenv v) TMDefLet(bind, m) | TMDefDo(e,m) -> let e = remapExpr g compgen tmenv e TMDefDo(e, m) | TMDefs defs -> let defs = remapAndRenameModDefs g compgen tmenv defs TMDefs defs | TMAbstract mexpr -> let mexpr = remapModExpr g compgen tmenv mexpr TMAbstract mexpr and remapAndRenameModBind g compgen tmenv (ModuleOrNamespaceBinding(mspec, def)) = let mspec = renameTycon tmenv mspec let def = remapAndRenameModDef g compgen tmenv def ModuleOrNamespaceBinding(mspec, def) and remapImplFile g compgen tmenv mv = mapAccImplFile (remapAndBindModExpr g compgen) tmenv mv and remapAssembly g compgen tmenv (TAssembly(mvs)) = let mvs,z = List.mapFold (remapImplFile g compgen) tmenv mvs TAssembly(mvs),z let copyModuleOrNamespaceType g compgen mtyp = copyAndRemapAndBindModTy g compgen Remap.Empty mtyp |> fst let copyExpr g compgen e = remapExpr g compgen Remap.Empty e let copyImplFile g compgen e = remapImplFile g compgen Remap.Empty e |> fst let instExpr g tpinst e = remapExpr g CloneAll (mkInstRemap tpinst) e //-------------------------------------------------------------------------- // Replace Marks - adjust debugging marks when a lambda gets // eliminated (i.e. an expression gets inlined) //-------------------------------------------------------------------------- let rec remarkExpr m x = match x with | Expr.Lambda (uniq,ctorThisValOpt,baseValOpt,vs,b,_,rty) -> Expr.Lambda (uniq,ctorThisValOpt,baseValOpt,vs,remarkExpr m b,m,rty) | Expr.TyLambda (uniq,tps,b,_,rty) -> Expr.TyLambda (uniq,tps,remarkExpr m b,m,rty) | Expr.TyChoose (tps,b,_) -> Expr.TyChoose (tps,remarkExpr m b,m) | Expr.LetRec (binds,e,_,fvs) -> Expr.LetRec (remarkBinds m binds,remarkExpr m e,m,fvs) | Expr.Let (bind,e,_,fvs) -> Expr.Let (remarkBind m bind,remarkExpr m e,m,fvs) | Expr.Match (_,_,pt,targets,_,ty) -> primMkMatch (NoSequencePointAtInvisibleBinding,m,remarkDecisionTree m pt, Array.map (fun (TTarget(vs,e,_)) ->TTarget(vs, remarkExpr m e,SuppressSequencePointAtTarget)) targets,m,ty) | Expr.Val (x,valUseFlags,_) -> Expr.Val (x,valUseFlags,m) | Expr.Quote (a,conv,isFromQueryExpression,_,ty) -> Expr.Quote (remarkExpr m a,conv,isFromQueryExpression,m,ty) | Expr.Obj (n,typ,basev,basecall,overrides,iimpls,_) -> Expr.Obj (n,typ,basev,remarkExpr m basecall, List.map (remarkObjExprMethod m) overrides, List.map (remarkInterfaceImpl m) iimpls,m) | Expr.Op (op,tinst,args,_) -> let op = match op with | TOp.TryFinally(_,_) -> TOp.TryFinally(NoSequencePointAtTry,NoSequencePointAtFinally) | TOp.TryCatch(_,_) -> TOp.TryCatch(NoSequencePointAtTry,NoSequencePointAtWith) | _ -> op Expr.Op (op,tinst,remarkExprs m args,m) | Expr.Link (eref) -> // Preserve identity of fixup nodes during remarkExpr eref := remarkExpr m !eref; x | Expr.App(e1,e1ty,tyargs,args,_) -> Expr.App(remarkExpr m e1,e1ty,tyargs,remarkExprs m args,m) | Expr.Sequential (e1,e2,dir,_,_) -> Expr.Sequential (remarkExpr m e1,remarkExpr m e2,dir,SuppressSequencePointOnExprOfSequential,m) | Expr.StaticOptimization (eqns,e2,e3,_) -> Expr.StaticOptimization (eqns,remarkExpr m e2,remarkExpr m e3,m) | Expr.Const (c,_,ty) -> Expr.Const (c,m,ty) and remarkObjExprMethod m (TObjExprMethod(slotsig, attribs, tps, vs, e, _)) = TObjExprMethod(slotsig, attribs, tps, vs, remarkExpr m e, m) and remarkInterfaceImpl m (ty,overrides) = (ty, List.map (remarkObjExprMethod m) overrides) and remarkExprs m es = es |> List.map (remarkExpr m) and remarkFlatExprs m es = es |> FlatList.map (remarkExpr m) and remarkDecisionTree m x = match x with | TDSwitch(e1,csl,dflt,_) -> TDSwitch(remarkExpr m e1, List.map (fun (TCase(test,y)) -> TCase(test,remarkDecisionTree m y)) csl, Option.map (remarkDecisionTree m) dflt,m) | TDSuccess (es,n) -> TDSuccess (remarkFlatExprs m es,n) | TDBind (bind,rest) -> TDBind(remarkBind m bind,remarkDecisionTree m rest) and remarkBinds m binds = FlatList.map (remarkBind m) binds // This very deliberately drops the sequence points since this is used when adjusting the marks for inlined expressions and remarkBind m (TBind(v,repr,_)) = TBind(v, remarkExpr m repr,NoSequencePointAtStickyBinding) //-------------------------------------------------------------------------- // Reference semantics? //-------------------------------------------------------------------------- let isRecdOrStructFieldAllocObservable (f:RecdField) = not f.IsStatic && f.IsMutable let ucaseAllocObservable uc = uc.FieldTable.FieldsByIndex |> Array.exists isRecdOrStructFieldAllocObservable let isUnionCaseAllocObservable (uc:UnionCaseRef) = uc.UnionCase |> ucaseAllocObservable let isRecdOrUnionOrStructTyconAllocObservable (_g:TcGlobals) (tycon:Tycon) = if tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then tycon.AllFieldsArray |> Array.exists isRecdOrStructFieldAllocObservable elif tycon.IsUnionTycon then tycon.UnionCasesArray |> Array.exists ucaseAllocObservable else false let isRecdOrUnionOrStructTyconRefAllocObservable g (tcr : TyconRef) = isRecdOrUnionOrStructTyconAllocObservable g tcr.Deref // Although from the pure F# perspective exception values cannot be changed, the .NET // implementation of exception objects attaches a whole bunch of stack information to // each raised object. Hence we treat exception objects as if they have identity let isExnAllocObservable (_ecref:TyconRef) = true // Some of the implementations of library functions on lists use mutation on the tail // of the cons cell. These cells are always private, i.e. not accessible by any other // code until the construction of the entire return list has been completed. // However, within the implementation code reads of the tail cell must in theory be treated // with caution. Hence we are conservative and within fslib we don't treat list // reads as if they were pure. let isUnionCaseFieldMutable g (ucref:UnionCaseRef) n = (g.compilingFslib && tyconRefEq g ucref.TyconRef g.list_tcr_canon && n = 1) || (ucref.FieldByIndex n).IsMutable let isExnFieldMutable ecref n = if n < 0 || n >= List.length (recdFieldsOfExnDefRef ecref) then errorR(InternalError(sprintf "isExnFieldMutable, exnc = %s, n = %d" ecref.LogicalName n,ecref.Range)); (recdFieldOfExnDefRefByIdx ecref n).IsMutable let useGenuineField (tycon:Tycon) (f:RecdField) = isSome f.LiteralValue || tycon.IsEnumTycon || f.rfield_secret || (not f.IsStatic && f.rfield_mutable && not tycon.IsRecordTycon) let ComputeFieldName tycon f = if useGenuineField tycon f then f.rfield_id.idText else CompilerGeneratedName f.rfield_id.idText //------------------------------------------------------------------------- // Helpers for building code contained in the initial environment //------------------------------------------------------------------------- let mkQuotedExprTy g ty = TType_app(g.expr_tcr,[ty]) let mkRawQuotedExprTy g = TType_app(g.raw_expr_tcr,[]) let mkTupledTy g tys = match tys with | [] -> g.unit_ty | [h] -> h | _ -> mkTupleTy tys let mkTupledVarsTy g vs = mkTupledTy g (typesOfVals vs) let mkMethodTy g argtys rty = mkIteratedFunTy (List.map (mkTupledTy g) argtys) rty let mkArrayType g ty = TType_app (g.array_tcr_nice, [ty]) let mkByteArrayTy g = mkArrayType g g.byte_ty //-------------------------------------------------------------------------- // tyOfExpr //-------------------------------------------------------------------------- let rec tyOfExpr g e = match e with | Expr.App(_,fty,tyargs,args,_) -> applyTys g fty (tyargs,args) | Expr.Obj (_,ty,_,_,_,_,_) | Expr.Match (_,_,_,_,_,ty) | Expr.Quote(_,_,_,_,ty) | Expr.Const(_,_,ty) -> (ty) | Expr.Val(vref,_,_) -> vref.Type | Expr.Sequential(a,b,k,_,_) -> tyOfExpr g (match k with NormalSeq -> b | ThenDoSeq -> a) | Expr.Lambda(_,_,_,vs,_,_,rty) -> (mkTupledVarsTy g vs --> rty) | Expr.TyLambda(_,tyvs,_,_,rty) -> (tyvs +-> rty) | Expr.Let(_,e,_,_) | Expr.TyChoose(_,e,_) | Expr.Link { contents=e} | Expr.StaticOptimization (_,_,e,_) | Expr.LetRec(_,e,_,_) -> tyOfExpr g e | Expr.Op (op,tinst,_,_) -> match op with | TOp.Coerce -> (match tinst with [to_ty;_fromTy] -> to_ty | _ -> failwith "bad TOp.Coerce node") | (TOp.ILCall (_,_,_,_,_,_,_,_,_,_,rtys) | TOp.ILAsm(_,rtys)) -> (match rtys with [h] -> h | _ -> g.unit_ty) | TOp.UnionCase uc -> actualResultTyOfUnionCase tinst uc | TOp.UnionCaseProof uc -> mkProvenUnionCaseTy uc tinst | TOp.Recd (_,tcref) -> mkAppTy tcref tinst | TOp.ExnConstr _ -> g.exn_ty | TOp.Bytes _ -> mkByteArrayTy g | TOp.UInt16s _ -> mkArrayType g g.uint16_ty | TOp.TupleFieldGet(i) -> List.nth tinst i | TOp.Tuple -> mkTupleTy tinst | (TOp.For _ | TOp.While _) -> g.unit_ty | TOp.Array -> (match tinst with [ty] -> mkArrayType g ty | _ -> failwith "bad TOp.Array node") | (TOp.TryCatch _ | TOp.TryFinally _) -> (match tinst with [ty] -> ty | _ -> failwith "bad TOp_try node") | TOp.ValFieldGetAddr(fref) -> mkByrefTy g (actualTyOfRecdFieldRef fref tinst) | TOp.ValFieldGet(fref) -> actualTyOfRecdFieldRef fref tinst | (TOp.ValFieldSet _ | TOp.UnionCaseFieldSet _ | TOp.ExnFieldSet _ | TOp.LValueOp ((LSet | LByrefSet),_)) ->g.unit_ty | TOp.UnionCaseTagGet _ -> g.int_ty | TOp.UnionCaseFieldGet(cref,j) -> actualTyOfRecdField (mkTyconRefInst cref.TyconRef tinst) (cref.FieldByIndex j) | TOp.ExnFieldGet(ecref,j) -> recdFieldTyOfExnDefRefByIdx ecref j | TOp.LValueOp (LByrefGet, v) -> destByrefTy g v.Type | TOp.LValueOp (LGetAddr, v) -> mkByrefTy g v.Type | TOp.RefAddrGet -> (match tinst with [ty] -> mkByrefTy g ty | _ -> failwith "bad TOp.RefAddrGet node") | TOp.TraitCall (TTrait(_,_,_,_,ty,_)) -> GetFSharpViewOfReturnType g ty | TOp.Reraise -> (match tinst with [rtn_ty] -> rtn_ty | _ -> failwith "bad TOp.Reraise node") | TOp.Goto _ | TOp.Label _ | TOp.Return -> //assert false; //errorR(InternalError("unexpected goto/label/return in tyOfExpr",m)); // It doesn't matter what type we return here. THis is only used in free variable analysis in the code generator g.unit_ty //-------------------------------------------------------------------------- // Make applications //--------------------------------------------------------------------------- let primMkApp (f,fty) tyargs argsl m = Expr.App(f,fty,tyargs,argsl,m) // Check for the funky where a generic type instantiation at function type causes a generic function // to appear to accept more arguments than it really does, e.g. "id id 1", where the first "id" is // instantiated with "int -> int". // // In this case, apply the arguments one at a time. let isExpansiveUnderInstantiation g fty0 tyargs pargs argsl = isForallTy g fty0 && let fty1 = formalApplyTys g fty0 (tyargs,pargs) (not (isFunTy g fty1) || let rec loop fty xs = match xs with | [] -> false | _ :: t -> not (isFunTy g fty) || loop (rangeOfFunTy g fty) t loop fty1 argsl) let rec mkExprApplAux g f fty argsl m = match argsl with | [] -> f | _ -> // Always combine the term application with a type application // // Combine the term application with a term application, but only when f' is an under-applied value of known arity match f with | Expr.App(f',fty',tyargs,pargs,m2) when (isNil pargs || (match stripExpr f' with | Expr.Val(v,_,_) -> match v.ValReprInfo with | Some info -> info.NumCurriedArgs > pargs.Length | None -> false | _ -> false)) && not (isExpansiveUnderInstantiation g fty' tyargs pargs argsl) -> primMkApp (f',fty') tyargs (pargs@argsl) (unionRanges m2 m) | _ -> // Don't combine. 'f' is not an application if not (isFunTy g fty) then error(InternalError("expected a function type",m)); primMkApp (f,fty) [] argsl m let rec mkAppsAux g f fty tyargsl argsl m = match tyargsl with | tyargs :: rest -> match tyargs with | [] -> mkAppsAux g f fty rest argsl m | _ -> let arfty = applyForallTy g fty tyargs mkAppsAux g (primMkApp (f,fty) tyargs [] m) arfty rest argsl m | [] -> mkExprApplAux g f fty argsl m let mkApps g ((f,fty),tyargsl,argl,m) = mkAppsAux g f fty tyargsl argl m let mkTyAppExpr m (f,fty) tyargs = match tyargs with [] -> f | _ -> primMkApp (f,fty) tyargs [] m //-------------------------------------------------------------------------- // Decision tree reduction //-------------------------------------------------------------------------- let rec accTargetsOfDecisionTree tree acc = match tree with | TDSwitch (_,edges,dflt,_) -> List.foldBack (fun (c:DecisionTreeCase) -> accTargetsOfDecisionTree c.CaseTree) edges (Option.foldBack accTargetsOfDecisionTree dflt acc) | TDSuccess (_,i) -> i::acc | TDBind (_,rest) -> accTargetsOfDecisionTree rest acc let rec mapAccTipsOfDecisionTree f tree = match tree with | TDSwitch (e,edges,dflt,m) -> TDSwitch (e,List.map (mapAccTipsOfEdge f) edges,Option.map (mapAccTipsOfDecisionTree f) dflt,m) | TDSuccess (es,i) -> f es i | TDBind (bind,rest) -> TDBind(bind,mapAccTipsOfDecisionTree f rest) and mapAccTipsOfEdge f (TCase(x,t)) = TCase(x,mapAccTipsOfDecisionTree f t) let mapTargetsOfDecisionTree f tree = mapAccTipsOfDecisionTree (fun es i -> TDSuccess(es, f i)) tree // Dead target elimination let eliminateDeadTargetsFromMatch tree (targets:_[]) = let used = accTargetsOfDecisionTree tree [] |> ListSet.setify (=) |> Array.ofList if used.Length < targets.Length then Array.sortInPlace used; let ntargets = targets.Length let tree' = let remap = Array.create ntargets (-1) Array.iteri (fun i tgn -> remap.[tgn] <- i) used; tree |> mapTargetsOfDecisionTree (fun tgn -> if remap.[tgn] = -1 then failwith "eliminateDeadTargetsFromMatch: failure while eliminating unused targets"; remap.[tgn]) let targets' = Array.map (Array.get targets) used tree',targets' else tree,targets let rec targetOfSuccessDecisionTree tree = match tree with | TDSwitch _ -> None | TDSuccess (_,i) -> Some i | TDBind(_,t) -> targetOfSuccessDecisionTree t /// Check a decision tree only has bindings that immediately cover a 'Success' let rec decisionTreeHasNonTrivialBindings tree = match tree with | TDSwitch (_,edges,dflt,_) -> edges |> List.exists (fun c -> decisionTreeHasNonTrivialBindings c.CaseTree) || dflt |> Option.exists decisionTreeHasNonTrivialBindings | TDSuccess _ -> false | TDBind (_,t) -> isNone (targetOfSuccessDecisionTree t) // If a target has assignments and can only be reached through one // branch (i.e. is "linear"), then transfer the assignments to the r.h.s. to be a "let". let foldLinearBindingTargetsOfMatch tree (targets: _[]) = // Don't do this when there are any bindings in the tree except where those bindings immediately cover a success node // since the variables would be extruded from their scope. if decisionTreeHasNonTrivialBindings tree then tree,targets else let branchesToTargets = Array.create targets.Length [] // Build a map showing how each target might be reached let rec accumulateTipsOfDecisionTree accBinds tree = match tree with | TDSwitch (_,edges,dflt,_) -> assert (isNil accBinds) // No switches under bindings for edge in edges do accumulateTipsOfDecisionTree accBinds edge.CaseTree match dflt with | None -> () | Some tree -> accumulateTipsOfDecisionTree accBinds tree | TDSuccess (es,i) -> branchesToTargets.[i] <- (List.rev accBinds,es) :: branchesToTargets.[i] | TDBind (bind,rest) -> accumulateTipsOfDecisionTree (bind::accBinds) rest // Compute the targets that can only be reached one way accumulateTipsOfDecisionTree [] tree let isLinearTarget bs = match bs with [_] -> true | _ -> false let isLinearTgtIdx i = isLinearTarget branchesToTargets.[i] let getLinearTgtIdx i = branchesToTargets.[i].Head let hasLinearTgtIdx = branchesToTargets |> Array.exists isLinearTarget if not hasLinearTgtIdx then tree,targets else /// rebuild the decision tree, replacing 'bind-then-success' decision trees by TDSuccess nodes that just go to the target let rec rebuildDecisionTree tree = // Check if this is a bind-then-success tree match targetOfSuccessDecisionTree tree with | Some i when isLinearTgtIdx i -> TDSuccess(FlatList.empty,i) | _ -> match tree with | TDSwitch (e,edges,dflt,m) -> TDSwitch (e,List.map rebuildDecisionTreeEdge edges,Option.map rebuildDecisionTree dflt,m) | TDSuccess _ -> tree | TDBind _ -> tree and rebuildDecisionTreeEdge (TCase(x,t)) = TCase(x,rebuildDecisionTree t) let tree' = rebuildDecisionTree tree /// rebuild the targets , replacing linear targets by ones that include all the 'let' bindings from the source let targets' = targets |> Array.mapi (fun i (TTarget(vs,exprTarget,spTarget) as tg) -> if isLinearTgtIdx i then let (binds,es) = getLinearTgtIdx i // The value bindings are moved to become part of the target. // Hence the expressions in the value bindings can be remarked with the range of the target. let mTarget = exprTarget.Range let es = es |> FlatList.map (remarkExpr mTarget) TTarget(FlatList.empty,mkLetsBind mTarget binds (mkInvisibleLetsFromBindings mTarget vs es exprTarget),spTarget) else tg ) tree',targets' // Simplify a little as we go, including dead target elimination let rec simplifyTrivialMatch spBind exprm matchm ty tree (targets : _[]) = match tree with | TDSuccess(es,n) -> if n >= targets.Length then failwith "simplifyTrivialMatch: target out of range"; // REVIEW: should we use _spTarget here? let (TTarget(vs,rhs,_spTarget)) = targets.[n] if vs.Length <> es.Length then failwith ("simplifyTrivialMatch: invalid argument, n = "^string n^", List.length targets = "^string targets.Length); mkInvisibleLetsFromBindings rhs.Range vs es rhs | _ -> primMkMatch (spBind,exprm,tree,targets,matchm,ty) // Simplify a little as we go, including dead target elimination let mkAndSimplifyMatch spBind exprm matchm ty tree targets = let targets = Array.ofList targets match tree with | TDSuccess _ -> simplifyTrivialMatch spBind exprm matchm ty tree targets | _ -> let tree,targets = eliminateDeadTargetsFromMatch tree targets let tree,targets = foldLinearBindingTargetsOfMatch tree targets simplifyTrivialMatch spBind exprm matchm ty tree targets //------------------------------------------------------------------------- // mkExprAddrOfExpr //------------------------------------------------------------------------- type Mutates = DefinitelyMutates | PossiblyMutates | NeverMutates exception DefensiveCopyWarning of string * range let isRecdOrStuctTyImmutable g ty = match tryDestAppTy g ty with | None -> false | Some tcref -> not (isRecdOrUnionOrStructTyconRefAllocObservable g tcref) || tyconRefEq g tcref g.decimal_tcr || tyconRefEq g tcref g.date_tcr // We can take the address of values of struct type even if the value is immutable // under certain conditions // - all instances of the type are known to be immutable; OR // - the operation is known not to mutate // // Note this may be taking the address of a closure field, i.e. a copy // of the original struct, e.g. for // let f () = // let g1 = A.G(1) // (fun () -> g1.x1) // // Note: isRecdOrStuctTyImmutable implies PossiblyMutates or NeverMutates // // We only do this for true local or closure fields because we can't take adddresses of immutable static // fields across assemblies. let CanTakeAddressOfImmutableVal g (v:ValRef) mut = // We can take the address of values of struct type if the operation doesn't mutate // and the value is a true local or closure field. not v.IsMutable && not v.IsMemberOrModuleBinding && (match mut with | NeverMutates -> true | PossiblyMutates -> isRecdOrStuctTyImmutable g v.Type | DefinitelyMutates -> false) let MustTakeAddressOfVal g (v:ValRef) = v.IsMutable && // We can only take the address of mutable values in the same assembly valRefInThisAssembly g.compilingFslib v let MustTakeAddressOfRecdField (rfref: RecdFieldRef) = // Static mutable fields must be private, hence we don't have to take their address not rfref.RecdField.IsStatic && rfref.RecdField.IsMutable let CanTakeAddressOfRecdField g (rfref: RecdFieldRef) mut tinst = mut <> DefinitelyMutates && // We only do this if the field is defined in this assembly because we can't take adddresses across assemblies for immutable fields entityRefInThisAssembly g.compilingFslib rfref.TyconRef && isRecdOrStuctTyImmutable g (actualTyOfRecdFieldRef rfref tinst) let rec mkExprAddrOfExpr g mustTakeAddress useReadonlyForGenericArrayAddress mut e addrExprVal m = if not mustTakeAddress then (fun x -> x),e else match e with // LVALUE: "x" where "x" is byref | Expr.Op (TOp.LValueOp (LByrefGet, v), _,[], m) -> (fun x -> x), exprForValRef m v // LVALUE: "x" where "x" is mutable local, mutable intra-assembly module/static binding, or operation doesn't mutate // Note: we can always take the address of mutable values | Expr.Val(v, _,m) when MustTakeAddressOfVal g v || CanTakeAddressOfImmutableVal g v mut -> (fun x -> x), mkValAddr m v // LVALUE: "x" where "e.x" is mutable record field. "e" may be an lvalue | Expr.Op (TOp.ValFieldGet rfref, tinst,[e],m) when MustTakeAddressOfRecdField rfref || CanTakeAddressOfRecdField g rfref mut tinst -> let exprty = tyOfExpr g e let wrap,expra = mkExprAddrOfExpr g (isStructTy g exprty) false mut e None m wrap, mkRecdFieldGetAddrViaExprAddr(expra,rfref,tinst,m) // LVALUE: "x" where "e.x" is a .NET static field. | Expr.Op (TOp.ILAsm ([IL.I_ldsfld(_vol,fspec)],[ty2]), tinst,[],m) -> (fun x -> x),Expr.Op (TOp.ILAsm ([IL.I_ldsflda(fspec)],[mkByrefTy g ty2]), tinst,[],m) // LVALUE: "x" where "e.x" is a .NET instance field. "e" may be an lvalue | Expr.Op (TOp.ILAsm ([IL.I_ldfld(_align,_vol,fspec)],[ty2]), tinst,[e],m) -> let exprty = tyOfExpr g e let wrap,expra = mkExprAddrOfExpr g (isStructTy g exprty) false mut e None m wrap,Expr.Op (TOp.ILAsm ([IL.I_ldflda(fspec)],[mkByrefTy g ty2]), tinst,[expra],m) // LVALUE: "x" where "x" is mutable static field. | Expr.Op (TOp.ValFieldGet rfref, tinst,[],m) when MustTakeAddressOfRecdField rfref || CanTakeAddressOfRecdField g rfref mut tinst -> (fun x -> x), mkStaticRecdFieldGetAddr(rfref,tinst,m) // LVALUE: "e.[n]" where e is an array of structs | Expr.App(Expr.Val(vf,_,_),_,[elemTy],[aexpr;nexpr],_) when (valRefEq g vf g.array_get_vref) -> let shape = ILArrayShape.SingleDimensional let readonly = if isTyparTy g elemTy && useReadonlyForGenericArrayAddress then ReadonlyAddress else NormalAddress let isNativePtr = match addrExprVal with | Some(vf) -> valRefEq g vf g.addrof2_vref | _ -> false (fun x -> x), Expr.Op (TOp.ILAsm ([IL.I_ldelema(readonly,isNativePtr,shape,mkILTyvarTy 0us)],[mkByrefTy g elemTy]), [elemTy],[aexpr;nexpr],m) // LVALUE: "e.[n1,n2]", "e.[n1,n2,n3]", "e.[n1,n2,n3,n4]" where e is an array of structs | Expr.App(Expr.Val(vf,_,_),_,[elemTy],(aexpr::args),_) when (valRefEq g vf g.array2D_get_vref || valRefEq g vf g.array3D_get_vref || valRefEq g vf g.array4D_get_vref) -> let shape = ILArrayShape.FromRank args.Length let readonly = if isTyparTy g elemTy && useReadonlyForGenericArrayAddress then ReadonlyAddress else NormalAddress let isNativePtr = match addrExprVal with | Some(vf) -> valRefEq g vf g.addrof2_vref | _ -> false (fun x -> x), Expr.Op (TOp.ILAsm ([IL.I_ldelema(readonly,isNativePtr,shape,mkILTyvarTy 0us)],[mkByrefTy g elemTy]), [elemTy],(aexpr::args),m) // Give a nice error message for DefinitelyMutates on immutable values, or mutable values in other assemblies | Expr.Val(v, _,m) when mut = DefinitelyMutates -> if isByrefTy g v.Type then error(Error(FSComp.SR.tastUnexpectedByRef(),m)); if v.IsMutable then error(Error(FSComp.SR.tastInvalidAddressOfMutableAcrossAssemblyBoundary(),m)); else error(Error(FSComp.SR.tastValueMustBeLocalAndMutable(),m)); | _ -> let ty = tyOfExpr g e if isStructTy g ty then match mut with | NeverMutates -> () | DefinitelyMutates -> errorR(Error(FSComp.SR.tastInvalidMutationOfConstant(),m)); | PossiblyMutates -> warning(DefensiveCopyWarning(FSComp.SR.tastValueHasBeenCopied(),m)); let tmp,_ = mkMutableCompGenLocal m "copyOfStruct" ty (fun rest -> mkCompGenLet m tmp e rest), (mkValAddr m (mkLocalValRef tmp)) let mkRecdFieldGet g (e,fref:RecdFieldRef,tinst,m) = let wrap,e' = mkExprAddrOfExpr g fref.Tycon.IsStructOrEnumTycon false NeverMutates e None m wrap (mkRecdFieldGetViaExprAddr(e',fref,tinst,m)) let mkRecdFieldSet g (e,fref:RecdFieldRef,tinst,e2,m) = let wrap,e' = mkExprAddrOfExpr g fref.Tycon.IsStructOrEnumTycon false DefinitelyMutates e None m wrap (mkRecdFieldSetViaExprAddr(e',fref,tinst,e2,m)) //--------------------------------------------------------------------------- // Compute fixups for letrec's. // // Generate an assignment expression that will fixup the recursion // amongst the vals on the r.h.s. of a letrec. The returned expressions // include disorderly constructs such as expressions/statements // to set closure environments and non-mutable fields. These are only ever // generated by the backend code-generator when processing a "letrec" // construct. // // [self] is the top level value that is being fixed // [exprToFix] is the r.h.s. expression // [rvs] is the set of recursive vals being bound. // [acc] accumulates the expression right-to-left. // // Traversal of the r.h.s. term must happen back-to-front to get the // uniq's for the lambdas correct in the very rare case where the same lambda // somehow appears twice on the right. //--------------------------------------------------------------------------- let rec IterateRecursiveFixups g (selfv : Val option) rvs ((access : Expr),set) exprToFix = let exprToFix = stripExpr exprToFix match exprToFix with | Expr.Const _ -> () | Expr.Op (TOp.Tuple,argtys,args,m) -> args |> List.iteri (fun n -> IterateRecursiveFixups g None rvs (mkTupleFieldGet(access,argtys,n,m), (fun e -> // NICE: it would be better to do this check in the type checker errorR(Error(FSComp.SR.tastRecursiveValuesMayNotBeInConstructionOfTuple(),m)); e))) | Expr.Op (TOp.UnionCase (c),tinst,args,m) -> args |> List.iteri (fun n -> IterateRecursiveFixups g None rvs (mkUnionCaseFieldGetUnproven(access,c,tinst,n,m), (fun e -> // NICE: it would be better to do this check in the type checker let tcref = c.TyconRef errorR(Error(FSComp.SR.tastRecursiveValuesMayNotAppearInConstructionOfType(tcref.LogicalName),m)); mkUnionCaseFieldSet(access,c,tinst,n,e,m)))) | Expr.Op (TOp.Recd (_,tcref),tinst,args,m) -> (tcref.TrueInstanceFieldsAsRefList, args) ||> List.iter2 (fun fref arg -> let fspec = fref.RecdField IterateRecursiveFixups g None rvs (mkRecdFieldGetViaExprAddr(access,fref,tinst,m), (fun e -> // NICE: it would be better to do this check in the type checker if not fspec.IsMutable && not (entityRefInThisAssembly g.compilingFslib tcref) then errorR(Error(FSComp.SR.tastRecursiveValuesMayNotBeAssignedToNonMutableField(fspec.rfield_id.idText, tcref.LogicalName),m)); mkRecdFieldSet g (access,fref,tinst,e,m))) arg ) | Expr.Val _ | Expr.Lambda _ | Expr.Obj _ | Expr.TyChoose _ | Expr.TyLambda _ -> rvs selfv access set exprToFix | _ -> () //-------------------------------------------------------------------------- // computations on constraints //-------------------------------------------------------------------------- let JoinTyparStaticReq r1 r2 = match r1,r2 with | NoStaticReq,r | r,NoStaticReq -> r | HeadTypeStaticReq,r | r,HeadTypeStaticReq -> r //------------------------------------------------------------------------- // ExprFolder - fold steps //------------------------------------------------------------------------- type ExprFolder<'T> = { exprIntercept : ('T -> Expr -> 'T) -> 'T -> Expr -> 'T option; // the bool is 'bound in dtree' valBindingSiteIntercept : 'T -> bool * Val -> 'T; // these values are always bound to these expressions. bool indicates 'recursively' nonRecBindingsIntercept : 'T -> Binding -> 'T; recBindingsIntercept : 'T -> Bindings -> 'T; dtreeIntercept : 'T -> DecisionTree -> 'T; targetIntercept : ('T -> Expr -> 'T) -> 'T -> DecisionTreeTarget -> 'T option; tmethodIntercept : ('T -> Expr -> 'T) -> 'T -> ObjExprMethod -> 'T option; } let ExprFolder0 = { exprIntercept = (fun _exprF _z _x -> None); valBindingSiteIntercept = (fun z _b -> z); nonRecBindingsIntercept = (fun z _bs -> z); recBindingsIntercept = (fun z _bs -> z); dtreeIntercept = (fun z _dt -> z); targetIntercept = (fun _exprF _z _x -> None); tmethodIntercept = (fun _exprF _z _x -> None); } //------------------------------------------------------------------------- // FoldExpr //------------------------------------------------------------------------- /// Adapted from usage info folding. /// Collecting from exprs at moment. /// To collect ids etc some additional folding needed, over formals etc. let mkFolders (folders : _ ExprFolder) = let {exprIntercept = exprIntercept; valBindingSiteIntercept = valBindingSiteIntercept; nonRecBindingsIntercept = nonRecBindingsIntercept; recBindingsIntercept = recBindingsIntercept; dtreeIntercept = dtreeIntercept; targetIntercept = targetIntercept; tmethodIntercept = tmethodIntercept} = folders let rec exprsF z xs = List.fold exprF z xs and flatExprsF z xs = FlatList.fold exprF z xs and exprF z x = match exprIntercept exprF z x with // fold this node, then recurse | Some z -> z // intercepted | None -> // structurally recurse match x with | Expr.Const _ -> z | Expr.Val _ -> z | Expr.Op (_c,_tyargs,args,_) -> exprsF z args | Expr.Sequential (x0,x1,_dir,_,_) -> exprsF z [x0;x1] | Expr.Lambda(_lambdaId ,_ctorThisValOpt,_baseValOpt,_argvs,body,_m,_rty) -> exprF z body | Expr.TyLambda(_lambdaId,_argtyvs,body,_m,_rty) -> exprF z body | Expr.TyChoose(_,body,_) -> exprF z body | Expr.App (f,_fty,_tys,argtys,_) -> let z = exprF z f let z = exprsF z argtys z | Expr.LetRec (binds,body,_,_) -> let z = valBindsF false z binds let z = exprF z body z | Expr.Let (bind,body,_,_) -> let z = valBindF false z bind let z = exprF z body z | Expr.Link rX -> exprF z (!rX) | Expr.Match (_spBind,_exprm,dtree,targets,_m,_ty) -> let z = dtreeF z dtree let z = Array.fold targetF z targets z | Expr.Quote(_e,{contents=Some(_argTypes,argExprs,_)},_,_,_) -> exprsF z argExprs | Expr.Quote(_e,{contents=None},_,_m,_) -> z | Expr.Obj (_n,_typ,_basev,basecall,overrides,iimpls,_m) -> let z = exprF z basecall let z = List.fold tmethodF z overrides let z = List.fold (foldOn snd (List.fold tmethodF)) z iimpls z | Expr.StaticOptimization (_tcs,csx,x,_) -> exprsF z [csx;x] and valBindF dtree z bind = let z = nonRecBindingsIntercept z bind bindF dtree z bind and valBindsF dtree z binds = let z = recBindingsIntercept z binds FlatList.fold (bindF dtree) z binds and bindF dtree z (bind:Binding) = let z = valBindingSiteIntercept z (dtree,bind.Var) exprF z bind.Expr and dtreeF z dtree = let z = dtreeIntercept z dtree match dtree with | TDBind (bind,rest) -> let z = valBindF true z bind dtreeF z rest | TDSuccess (args,_) -> flatExprsF z args | TDSwitch (test,dcases,dflt,_) -> let z = exprF z test let z = List.fold dcaseF z dcases let z = Option.fold dtreeF z dflt z and dcaseF z = function TCase (_,dtree) -> dtreeF z dtree (* not collecting from test *) and targetF z x = match targetIntercept exprF z x with | Some z -> z // intercepted | None -> // structurally recurse let (TTarget (_,body,_)) = x exprF z body and tmethodF z x = match tmethodIntercept exprF z x with | Some z -> z // intercepted | None -> // structurally recurse let (TObjExprMethod(_,_,_,_,e,_)) = x exprF z e and mexprF z x = match x with | ModuleOrNamespaceExprWithSig(_,def,_) -> mdefF z def and mdefF z x = match x with | TMDefRec(_,binds,mbinds,_) -> (* REVIEW: also iterate the abstract slot vspecs hidden in the _vslots field in the tycons *) let z = valBindsF false z binds let z = List.fold mbindF z mbinds z | TMDefLet(bind,_) -> valBindF false z bind | TMDefDo(e,_) -> exprF z e | TMDefs defs -> List.fold mdefF z defs | TMAbstract x -> mexprF z x and mbindF z (ModuleOrNamespaceBinding(_, def)) = mdefF z def and implF z x = foldTImplFile mexprF z x and implsF z (TAssembly(x)) = List.fold implF z x exprF, implF,implsF let FoldExpr folders = let exprF,_,_ = mkFolders folders in exprF let FoldImplFile folders = let _,implF,_ = mkFolders folders in implF #if DEBUG //------------------------------------------------------------------------- // ExprStats //------------------------------------------------------------------------- let ExprStats x = let count = ref 0 let folders = {ExprFolder0 with exprIntercept = (fun _ _ _ -> (count := !count + 1; None))} let () = FoldExpr folders () x string !count ^ " TExpr nodes" #endif //------------------------------------------------------------------------- // //------------------------------------------------------------------------- let mkString g m n = Expr.Const(Const.String n,m,g.string_ty) let mkBool g m b = Expr.Const(Const.Bool b,m,g.bool_ty) let mkByte g m b = Expr.Const(Const.Byte b,m,g.byte_ty) let mkUInt16 g m b = Expr.Const(Const.UInt16 b,m,g.uint16_ty) let mkTrue g m = mkBool g m true let mkFalse g m = mkBool g m false let mkUnit g m = Expr.Const(Const.Unit,m,g.unit_ty) let mkInt32 g m n = Expr.Const(Const.Int32 n,m,g.int32_ty) let mkInt g m n = mkInt32 g m (n) let mkZero g m = mkInt g m 0 let mkOne g m = mkInt g m 1 let mkTwo g m = mkInt g m 2 let mkMinusOne g m = mkInt g m (-1) let destInt32 = function Expr.Const(Const.Int32 n,_,_) -> Some n | _ -> None let isIDelegateEventType g ty = isAppTy g ty && tyconRefEq g g.fslib_IDelegateEvent_tcr (tcrefOfAppTy g ty) let destIDelegateEventType g ty = if isIDelegateEventType g ty then match argsOfAppTy g ty with | [ty1] -> ty1 | _ -> failwith "destIDelegateEventType: internal error" else failwith "destIDelegateEventType: not an IDelegateEvent type" let mkIEventType g ty1 ty2 = TType_app (g.fslib_IEvent2_tcr, [ty1;ty2]) let mkIObservableType g ty1 = TType_app (g.tcref_IObservable, [ty1]) let mkIObserverType g ty1 = TType_app (g.tcref_IObserver, [ty1]) let mkRefCellContentsRef g = mkRecdFieldRef g.refcell_tcr_canon "contents" let mkSequential spSeq m e1 e2 = Expr.Sequential(e1,e2,NormalSeq,spSeq,m) let mkCompGenSequential m e1 e2 = mkSequential SuppressSequencePointOnExprOfSequential m e1 e2 let rec mkSequentials spSeq g m es = match es with | [e] -> e | e::es -> mkSequential spSeq m e (mkSequentials spSeq g m es) | [] -> mkUnit g m let mkGetArg0 m ty = mkAsmExpr( [ mkLdarg0 ],[],[],[ty],m) //------------------------------------------------------------------------- // Tuples... //------------------------------------------------------------------------- let mkTupled g m es tys = match es with | [] -> mkUnit g m | [e] -> e | _ -> Expr.Op (TOp.Tuple,tys,es,m) let mkTupledNoTypes g m args = mkTupled g m args (List.map (tyOfExpr g) args) let mkTupledVars g m vs = mkTupled g m (List.map (exprForVal m) vs) (typesOfVals vs) //-------------------------------------------------------------------------- // Permute expressions //-------------------------------------------------------------------------- let inversePerm (sigma:int array) = let n = sigma.Length let invSigma = Array.create n -1 for i = 0 to n-1 do let sigma_i = sigma.[i] // assert( invSigma.[sigma_i] = -1 ); invSigma.[sigma_i] <- i invSigma let permute (sigma:int[]) (data:'T[]) = let n = sigma.Length let invSigma = inversePerm sigma Array.init n (fun i -> data.[invSigma.[i]]) let rec existsR a b pred = if a<=b then pred a || existsR (a+1) b pred else false let mapFoldListi f z xs = let rec fmapi f i z l = match l with | [] -> z,[] | x::xs -> let z,x = f i z x let z,xs = fmapi f (i+1) z xs z,x::xs fmapi f 0 z xs /// Given expr = xi = [| x0; ... xN |] /// Given sigma a permutation to apply to the xi. /// Return (bindings',expr') such that: /// (a) xi are permutated under sigma, xi -> position sigma(i). ///------ /// Motivation: /// opt.fs - put record field assignments in order under known effect information /// ilxgen.fs - put record field assignments in order if necessary (no optimisations) /// under unknown-effect information. let permuteExpr (sigma:int[]) (expr: Expr[]) (typ: TType[]) (names:string[]) = let invSigma = inversePerm sigma let liftPosition i = // Lift out xi if // LC2: xi goes to position that will be preceded by // an expr with an effect that originally followed xi let i' = sigma.[i] existsR 0 (i' - 1) (fun j' -> invSigma.[j'] > i) let rewrite i rbinds (xi:Expr) = if liftPosition i then let tmpv,tmpe = mkCompGenLocal xi.Range names.[i] typ.[i] let bind = mkCompGenBind tmpv xi bind :: rbinds,tmpe else rbinds,xi let xis = Array.toList expr let rbinds,xis = mapFoldListi rewrite [] xis let binds = List.rev rbinds let expr = permute sigma (Array.ofList xis) binds,expr let permuteExprList (sigma:int array) (expr: Expr list) (typ: TType list) (names:string list) = let binds,expr = permuteExpr sigma (Array.ofList expr) (Array.ofList typ) (Array.ofList names) binds,Array.toList expr //------------------------------------------------------------------------- // Build record expressions... //------------------------------------------------------------------------- /// Evaluate the expressions in the original order, but build a record with the results in field order /// Note some fields may be static. If this were not the case we could just use /// let sigma = Array.map #Index () /// However the presence of static fields means .Index may index into a non-compact set of instance field indexes. /// We still need to sort by index. let mkRecordExpr g (lnk,tcref,tinst,rfrefs:RecdFieldRef list,args,m) = // Remove any abbreviations let tcref,tinst = destAppTy g (mkAppTy tcref tinst) let rfrefsArray = rfrefs |> List.mapi (fun i x -> (i,x)) |> Array.ofList rfrefsArray |> Array.sortInPlaceBy (fun (_,r) -> r.Index) ; let sigma = Array.create rfrefsArray.Length -1 Array.iteri (fun j (i,_) -> if sigma.[i] <> -1 then error(InternalError("bad permutation",m)); sigma.[i] <- j) rfrefsArray; let argTyps = List.map (fun rfref -> actualTyOfRecdFieldRef rfref tinst) rfrefs let names = rfrefs |> List.map (fun rfref -> rfref.FieldName) let binds,args = permuteExprList sigma args argTyps names mkLetsBind m binds (Expr.Op (TOp.Recd(lnk,tcref),tinst,args,m)) //------------------------------------------------------------------------- // List builders //------------------------------------------------------------------------- let mkRefCell g m ty e = mkRecordExpr g (RecdExpr,g.refcell_tcr_canon,[ty],[mkRefCellContentsRef g],[e],m) let mkRefCellGet g m ty e = mkRecdFieldGet g (e,mkRefCellContentsRef g,[ty],m) let mkRefCellSet g m ty e1 e2 = mkRecdFieldSet g (e1,mkRefCellContentsRef g,[ty],e2,m) let mkNil g m ty = mkUnionCaseExpr (g.nil_ucref,[ty],[],m) let mkCons g ty h t = mkUnionCaseExpr (g.cons_ucref,[ty],[h;t],unionRanges h.Range t.Range) let mkCompGenLocalAndInvisbleBind g nm m e = let locv,loce = mkCompGenLocal m nm (tyOfExpr g e) locv,loce,mkInvisibleBind locv e //---------------------------------------------------------------------------- // Make some fragments of code //---------------------------------------------------------------------------- let box = IL.I_box (mkILTyvarTy 0us) let isinst = IL.I_isinst (mkILTyvarTy 0us) let unbox = IL.I_unbox_any (mkILTyvarTy 0us) let mkUnbox ty e m = mkAsmExpr ([ unbox ], [ty],[e], [ ty ], m) let mkBox ty e m = mkAsmExpr ([box],[],[e],[ty],m) let mkIsInst ty e m = mkAsmExpr ([ isinst ], [ty],[e], [ ty ], m) let mspec_Object_GetHashCode ilg = IL.mkILNonGenericInstanceMethSpecInTy(ilg.typ_Object,"GetHashCode",[],ilg.typ_int32) let mspec_Type_GetTypeFromHandle ilg = IL.mkILNonGenericStaticMethSpecInTy(ilg.typ_Type,"GetTypeFromHandle",[ilg.typ_RuntimeTypeHandle],ilg.typ_Type) let fspec_Missing_Value ilg = IL.mkILFieldSpecInTy(ilg.typ_Missing,"Value",ilg.typ_Missing) let typedExprForIntrinsic _g m (IntrinsicValRef(_,_,_,ty,_) as i) = let vref = ValRefForIntrinsic i exprForValRef m vref,ty let mkCallGetGenericComparer g m = typedExprForIntrinsic g m g.get_generic_comparer_info |> fst let mkCallGetGenericEREqualityComparer g m = typedExprForIntrinsic g m g.get_generic_er_equality_comparer_info |> fst let mkCallGetGenericPEREqualityComparer g m = typedExprForIntrinsic g m g.get_generic_per_equality_comparer_info |> fst let mkCallUnbox g m ty e1 = mkApps g (typedExprForIntrinsic g m g.unbox_info, [[ty]], [ e1 ], m) let mkCallUnboxFast g m ty e1 = mkApps g (typedExprForIntrinsic g m g.unbox_fast_info, [[ty]], [ e1 ], m) let mkCallTypeTest g m ty e1 = mkApps g (typedExprForIntrinsic g m g.istype_info, [[ty]], [ e1 ], m) let mkCallTypeOf g m ty = mkApps g (typedExprForIntrinsic g m g.typeof_info, [[ty]], [ ], m) let mkCallTypeDefOf g m ty = mkApps g (typedExprForIntrinsic g m g.typedefof_info, [[ty]], [ ], m) let mkCallDispose g m ty e1 = mkApps g (typedExprForIntrinsic g m g.dispose_info, [[ty]], [ e1 ], m) let mkCallSeq g m ty e1 = mkApps g (typedExprForIntrinsic g m g.seq_info, [[ty]], [ e1 ], m) let mkCallCreateInstance g m ty = mkApps g (typedExprForIntrinsic g m g.create_instance_info, [[ty]], [ mkUnit g m ], m) let mkCallGetQuerySourceAsEnumerable g m ty1 ty2 e1 = mkApps g (typedExprForIntrinsic g m g.query_source_as_enum_info, [[ty1;ty2]], [ e1; mkUnit g m ], m) let mkCallNewQuerySource g m ty1 ty2 e1 = mkApps g (typedExprForIntrinsic g m g.new_query_source_info, [[ty1;ty2]], [ e1 ], m) let mkCallCreateEvent g m ty1 ty2 e1 e2 e3 = mkApps g (typedExprForIntrinsic g m g.create_event_info, [[ty1;ty2]], [ e1;e2;e3 ], m) let mkCallGenericComparisonWithComparerOuter g m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_comparison_withc_outer_info, [[ty]], [ comp;e1;e2 ], m) let mkCallEqualsOperator g m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.equals_operator_info, [[ty]], [ e1;e2 ], m) let mkCallGenericEqualityEROuter g m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_er_outer_info, [[ty]], [ e1;e2 ], m) let mkCallGenericEqualityWithComparerOuter g m ty comp e1 e2 = mkApps g (typedExprForIntrinsic g m g.generic_equality_withc_outer_info, [[ty]], [comp;e1;e2], m) let mkCallGenericHashWithComparerOuter g m ty comp e1 = mkApps g (typedExprForIntrinsic g m g.generic_hash_withc_outer_info, [[ty]], [comp;e1], m) let mkCallArrayGet g m ty e1 e2 = mkApps g (typedExprForIntrinsic g m g.array_get_info, [[ty]], [ e1 ; e2 ], m) let mkCallArray2DGet g m ty e1 idx1 idx2 = mkApps g (typedExprForIntrinsic g m g.array2D_get_info, [[ty]], [ e1 ; idx1; idx2 ], m) let mkCallArray3DGet g m ty e1 idx1 idx2 idx3 = mkApps g (typedExprForIntrinsic g m g.array3D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3 ], m) let mkCallArray4DGet g m ty e1 idx1 idx2 idx3 idx4 = mkApps g (typedExprForIntrinsic g m g.array4D_get_info, [[ty]], [ e1 ; idx1; idx2; idx3; idx4 ], m) let mkCallNewDecimal g m (e1,e2,e3,e4,e5) = mkApps g (typedExprForIntrinsic g m g.new_decimal_info, [], [ e1;e2;e3;e4;e5 ], m) let mkCallNewFormat g m aty bty cty dty ety e1 = mkApps g (typedExprForIntrinsic g m g.new_format_info, [[aty;bty;cty;dty;ety]], [ e1 ], m) let mkCallRaise g m aty e1 = mkApps g (typedExprForIntrinsic g m g.raise_info, [[aty]], [ e1 ], m) let TryEliminateDesugaredConstants g m c = match c with | Const.Decimal d -> match System.Decimal.GetBits(d) with | [| lo;med;hi; signExp |] -> let scale = (min (((signExp &&& 0xFF0000) >>> 16) &&& 0xFF) 28) |> byte let isNegative = (signExp &&& 0x80000000) <> 0 Some(mkCallNewDecimal g m (mkInt g m lo,mkInt g m med,mkInt g m hi,mkBool g m isNegative,mkByte g m scale) ) | _ -> failwith "unreachable" | _ -> None let mkSeqTy g ty = mkAppTy g.seq_tcr [ty] let mkIEnumeratorTy g ty = mkAppTy g.tcref_System_Collections_Generic_IEnumerator [ty] let mkCallSeqCollect g m alphaTy betaTy arg1 arg2 = let enumty2 = try rangeOfFunTy g (tyOfExpr g arg1) with _ -> (* defensive programming *) (mkSeqTy g betaTy) mkApps g (typedExprForIntrinsic g m g.seq_collect_info, [[alphaTy;enumty2;betaTy]], [ arg1; arg2 ], m) let mkCallSeqUsing g m resourceTy elemTy arg1 arg2 = // We're intantiating val using : 'a -> ('a -> 'sb) -> seq<'b> when 'sb :> seq<'b> and 'a :> IDisposable // We set 'sb -> range(typeof(arg2)) let enumty = try rangeOfFunTy g (tyOfExpr g arg2) with _ -> (* defensive programming *) (mkSeqTy g elemTy) mkApps g (typedExprForIntrinsic g m g.seq_using_info, [[resourceTy;enumty;elemTy]], [ arg1; arg2 ], m) let mkCallSeqDelay g m elemTy arg1 = mkApps g (typedExprForIntrinsic g m g.seq_delay_info, [[elemTy]], [ arg1 ], m) let mkCallSeqAppend g m elemTy arg1 arg2 = mkApps g (typedExprForIntrinsic g m g.seq_append_info, [[elemTy]], [ arg1; arg2 ], m) let mkCallSeqGenerated g m elemTy arg1 arg2 = mkApps g (typedExprForIntrinsic g m g.seq_generated_info, [[elemTy]], [ arg1; arg2 ], m) let mkCallSeqFinally g m elemTy arg1 arg2 = mkApps g (typedExprForIntrinsic g m g.seq_finally_info, [[elemTy]], [ arg1; arg2 ], m) let mkCallSeqOfFunctions g m ty1 ty2 arg1 arg2 arg3 = mkApps g (typedExprForIntrinsic g m g.seq_of_functions_info, [[ty1;ty2]], [ arg1; arg2; arg3 ], m) let mkCallSeqToArray g m elemTy arg1 = mkApps g (typedExprForIntrinsic g m g.seq_to_array_info, [[elemTy]], [ arg1 ], m) let mkCallSeqToList g m elemTy arg1 = mkApps g (typedExprForIntrinsic g m g.seq_to_list_info, [[elemTy]], [ arg1 ], m) let mkCallSeqMap g m inpElemTy genElemTy arg1 arg2 = mkApps g (typedExprForIntrinsic g m g.seq_map_info, [[inpElemTy;genElemTy]], [ arg1; arg2 ], m) let mkCallSeqSingleton g m ty1 arg1 = mkApps g (typedExprForIntrinsic g m g.seq_singleton_info, [[ty1]], [ arg1 ], m) let mkCallSeqEmpty g m ty1 = mkApps g (typedExprForIntrinsic g m g.seq_empty_info, [[ty1]], [ ], m) let mkCallUnpickleQuotation g m e1 e2 e3 e4 = let args = [ e1; e2; e3; e4 ] mkApps g (typedExprForIntrinsic g m g.unpickle_quoted_info, [], [ mkTupledNoTypes g m args ], m) let mkCallCastQuotation g m ty e1 = mkApps g (typedExprForIntrinsic g m g.cast_quotation_info, [[ty]], [ e1 ], m) let mkCallLiftValue g m ty e1 = mkApps g (typedExprForIntrinsic g m g.lift_value_info , [[ty]], [ e1], m) let mkCallCheckThis g m ty e1 = mkApps g (typedExprForIntrinsic g m g.check_this_info, [[ty]], [e1], m) let mkCallFailInit g m = mkApps g (typedExprForIntrinsic g m g.fail_init_info , [], [mkUnit g m], m) let mkCallFailStaticInit g m = mkApps g (typedExprForIntrinsic g m g.fail_static_init_info , [], [mkUnit g m], m) let mkCallQuoteToLinqLambdaExpression g m ty e1 = mkApps g (typedExprForIntrinsic g m g.quote_to_linq_lambda_info , [[ty]], [e1], m) let mkLazyDelayed g m ty f = mkApps g (typedExprForIntrinsic g m g.lazy_create_info, [[ty]], [ f ], m) let mkLazyForce g m ty e = mkApps g (typedExprForIntrinsic g m g.lazy_force_info, [[ty]], [ e; mkUnit g m ], m) // Quotations can't contain any IL. // As a result, we aim to get rid of all IL generation in the typechecker and pattern match // compiler, or else train the quotation generator to understand the generated IL. // Hence each of the following are marked with places where they are generated. // Generated by the optimizer and the encoding of 'for' loops let mkDecr g m e = mkAsmExpr([ IL.AI_sub ],[],[e; mkOne g m],[g.int_ty],m) let mkIncr g m e = mkAsmExpr([ IL.AI_add ],[],[mkOne g m; e],[g.int_ty],m) // Generated by the pattern match compiler and the optimizer for // 1. array patterns // 2. optimizations associated with getting 'for' loops into the shape expected by the JIT. // // NOTE: The conv.i4 assumes that int_ty is int32. Note: ldlen returns native UNSIGNED int let mkLdlen g m arre = mkAsmExpr ([ IL.I_ldlen; (IL.AI_conv IL.DT_I4) ],[],[ arre ], [ g.int_ty ], m) let mkLdelem (_g:TcGlobals) m ty arre idxe = mkAsmExpr ([ IL.I_ldelem_any (ILArrayShape.SingleDimensional, mkILTyvarTy 0us) ],[ty],[ arre;idxe ], [ ty ], m) // This is generated in equality/compare/hash augmentations and in the pattern match compiler. // It is understood by the quotation processor and turned into "Equality" nodes. // // Note: this is IL assembly code, don't go inserting this in expressions which will be exposed via quotations let mkILAsmCeq g m e1 e2 = mkAsmExpr ([ IL.AI_ceq ],[], [e1; e2],[g.bool_ty],m) let mkILAsmClt g m e1 e2 = mkAsmExpr ([ IL.AI_clt ],[], [e1; e2],[g.bool_ty],m) // This is generated in the initialization of the "ctorv" field in the typechecker's compilation of // an implicit class construction. let mkNull m ty = Expr.Const(Const.Zero, m,ty) //---------------------------------------------------------------------------- // rethrow //---------------------------------------------------------------------------- (* throw, rethrow *) let mkThrow m ty e = mkAsmExpr ([ IL.I_throw ],[], [e],[ty],m) let destThrow = function | Expr.Op (TOp.ILAsm([IL.I_throw],[ty2]),[],[e],m) -> Some (m,ty2,e) | _ -> None let isThrow x = isSome (destThrow x) // rethrow - parsed as library call - internally represented as op form. let mkReraiseLibCall g ty m = let ve,vt = typedExprForIntrinsic g m g.reraise_info in Expr.App(ve,vt,[ty],[mkUnit g m],m) let mkReraise m returnTy = Expr.Op (TOp.Reraise,[returnTy],[],m) (* could suppress unitArg *) //---------------------------------------------------------------------------- // CompilationMappingAttribute, SourceConstructFlags //---------------------------------------------------------------------------- let tnameCompilationSourceNameAttr = FSharpLib.Core + ".CompilationSourceNameAttribute" let tnameCompilationArgumentCountsAttr = FSharpLib.Core + ".CompilationArgumentCountsAttribute" let tnameCompilationMappingAttr = FSharpLib.Core + ".CompilationMappingAttribute" let tnameSourceConstructFlags = FSharpLib.Core + ".SourceConstructFlags" let tref_CompilationArgumentCountsAttr g = mkILTyRef (g.fslibCcu.ILScopeRef, tnameCompilationArgumentCountsAttr) let tref_CompilationMappingAttr g = mkILTyRef (g.fslibCcu.ILScopeRef, tnameCompilationMappingAttr) let tref_CompilationSourceNameAttr g = mkILTyRef (g.fslibCcu.ILScopeRef, tnameCompilationSourceNameAttr) let tref_SourceConstructFlags g = mkILTyRef (g.fslibCcu.ILScopeRef, tnameSourceConstructFlags) let mkCompilationMappingAttrPrim g k nums = mkILCustomAttribute g.ilg (tref_CompilationMappingAttr g, ((mkILNonGenericValueTy (tref_SourceConstructFlags g)) :: (nums |> List.map (fun _ -> g.ilg.typ_Int32))), ((k :: nums) |> List.map (fun n -> ILAttribElem.Int32(n))), []) let mkCompilationMappingAttr g kind = mkCompilationMappingAttrPrim g kind [] let mkCompilationMappingAttrWithSeqNum g kind seqNum = mkCompilationMappingAttrPrim g kind [seqNum] let mkCompilationMappingAttrWithVariantNumAndSeqNum g kind varNum seqNum = mkCompilationMappingAttrPrim g kind [varNum;seqNum] let mkCompilationArgumentCountsAttr g nums = mkILCustomAttribute g.ilg (tref_CompilationArgumentCountsAttr g, [ mkILArr1DTy g.ilg.typ_Int32 ], [ILAttribElem.Array (g.ilg.typ_Int32, List.map (fun n -> ILAttribElem.Int32(n)) nums)], []) let mkCompilationSourceNameAttr g n = mkILCustomAttribute g.ilg (tref_CompilationSourceNameAttr g, [ g.ilg.typ_String ], [ILAttribElem.String(Some n)], []) #if EXTENSIONTYPING //---------------------------------------------------------------------------- // Decode extensible typing attributes //---------------------------------------------------------------------------- let isTypeProviderAssemblyAttr (cattr:ILAttribute) = cattr.Method.EnclosingType.BasicQualifiedName = typeof.FullName let TryDecodeTypeProviderAssemblyAttr (cattr:ILAttribute) = if isTypeProviderAssemblyAttr cattr then // ok to use ecmaILGlobals here since we're querying metadata, not making it let parms, _args = decodeILAttribData IL.ecmaILGlobals cattr None match parms with // The first parameter to the attribute is the name of the assembly with the compiler extensions. | (ILAttribElem.String (Some assemblyName))::_ -> Some assemblyName | (ILAttribElem.String None)::_ -> Some null | [] -> Some null | _ -> None else None #endif //---------------------------------------------------------------------------- // FSharpInterfaceDataVersionAttribute //---------------------------------------------------------------------------- let tname_SignatureDataVersionAttr = FSharpLib.Core + ".FSharpInterfaceDataVersionAttribute" let tref_SignatureDataVersionAttr () = mkILTyRef(IlxSettings.ilxFsharpCoreLibScopeRef (), tname_SignatureDataVersionAttr) let mkSignatureDataVersionAttr g ((v1,v2,v3,_) : ILVersionInfo) = mkILCustomAttribute g.ilg (tref_SignatureDataVersionAttr(), [g.ilg.typ_Int32;g.ilg.typ_Int32;g.ilg.typ_Int32], [ILAttribElem.Int32 (int32 v1); ILAttribElem.Int32 (int32 v2) ; ILAttribElem.Int32 (int32 v3)],[]) let tname_AutoOpenAttr = FSharpLib.Core + ".AutoOpenAttribute" let tref_AutoOpenAttr () = mkILTyRef(IlxSettings.ilxFsharpCoreLibScopeRef (), tname_AutoOpenAttr) let IsSignatureDataVersionAttr cattr = isILAttrib (tref_SignatureDataVersionAttr ()) cattr let TryFindAutoOpenAttr cattr = if isILAttrib (tref_AutoOpenAttr ()) cattr then // ok to use ecmaILGlobals here since we're querying metadata, not making it match decodeILAttribData IL.ecmaILGlobals cattr None with | [ILAttribElem.String s],_ -> s | [],_ -> None | _ -> warning(Failure(FSComp.SR.tastUnexpectedDecodeOfAutoOpenAttribute())); None else None let tref_InternalsVisibleToAttr () = mkILTyRef (ecmaMscorlibScopeRef,"System.Runtime.CompilerServices.InternalsVisibleToAttribute") let TryFindInternalsVisibleToAttr cattr = if isILAttrib (tref_InternalsVisibleToAttr ()) cattr then // ok to use ecmaILGlobals here since we're querying metadata, not making it match decodeILAttribData IL.ecmaILGlobals cattr None with | [ILAttribElem.String s],_ -> s | [],_ -> None | _ -> warning(Failure(FSComp.SR.tastUnexpectedDecodeOfInternalsVisibleToAttribute())); None else None let IsMatchingSignatureDataVersionAttr ((v1,v2,v3,_) : ILVersionInfo) cattr = IsSignatureDataVersionAttr cattr && // ok to use ecmaILGlobals here since we're querying metadata, not making it match decodeILAttribData IL.ecmaILGlobals cattr None with | [ILAttribElem.Int32 u1; ILAttribElem.Int32 u2;ILAttribElem.Int32 u3 ],_ -> (v1 = uint16 u1) && (v2 = uint16 u2) && (v3 = uint16 u3) | _ -> warning(Failure(FSComp.SR.tastUnexpectedDecodeOfInterfaceDataVersionAttribute())); false let mkCompilerGeneratedAttr g n = mkILCustomAttribute g.ilg (tref_CompilationMappingAttr g, [mkILNonGenericValueTy (tref_SourceConstructFlags g)],[ILAttribElem.Int32(n)],[]) //-------------------------------------------------------------------------- // tupled lambda --> method/function with a given topValInfo specification. // // AdjustArityOfLambdaBody: "(vs,body)" represents a lambda "fun (vs) -> body". The // aim is to produce a "static method" represented by a pair // "(mvs, body)" where mvs has the List.length "arity". //-------------------------------------------------------------------------- let untupledToTupled vs = let untupledTys = typesOfVals vs let m = (List.head vs).Range let tupledv,tuplede = mkCompGenLocal m "tupledArg" (mkTupleTy untupledTys) let untupling_es = List.mapi (fun i _ -> mkTupleFieldGet(tuplede,untupledTys,i,m)) untupledTys tupledv, mkInvisibleLets m vs untupling_es // The required tupled-arity (arity) can either be 1 // or N, and likewise for the tuple-arity of the input lambda, i.e. either 1 or N // where the N's will be identical. let AdjustArityOfLambdaBody g arity (vs:Val list) body = let nvs = vs.Length if not (nvs = arity || nvs = 1 || arity = 1) then failwith ("lengths don't add up"); if arity = 0 then vs,body elif nvs = arity then vs,body elif nvs = 1 then let v = vs.Head let untupledTys = destTupleTy g v.Type if (untupledTys.Length <> arity) then failwith "length untupledTys <> arity"; let dummyvs,dummyes = untupledTys |> List.mapi (fun i ty -> mkCompGenLocal v.Range (v.LogicalName ^"_"^string i) ty) |> List.unzip let body = mkInvisibleLet v.Range v (mkTupled g v.Range dummyes untupledTys) body dummyvs,body else let tupledv, untupler = untupledToTupled vs [tupledv],untupler body let MultiLambdaToTupledLambda vs body = match vs with | [] -> failwith "MultiLambdaToTupledLambda: expected some argments" | [v] -> v,body | vs -> let tupledv, untupler = untupledToTupled vs tupledv, untupler body //-------------------------------------------------------------------------- // Beta reduction via let-bindings. Reduce immediate apps. of lambdas to let bindings. // Includes binding the immediate application of generic // functions. Input type is the type of the function. Makes use of the invariant // that any two expressions have distinct local variables (because we explicitly copy // expressions). //------------------------------------------------------------------------ let rec MakeApplicationAndBetaReduceAux g (f, fty, tyargsl : TType list list, argsl: Expr list, m) = (* let verbose = true in *) match f with | Expr.Let(bind,body,mlet,_) -> // Lift bindings out, i.e. (let x = e in f) y --> let x = e in f y // This increases the scope of 'x', which I don't like as it mucks with debugging // scopes of variables, but this is an important optimization, especially when the '|>' // notation is used a lot. mkLetBind mlet bind (MakeApplicationAndBetaReduceAux g (body,fty,tyargsl,argsl,m)) | _ -> match tyargsl with | [] :: rest -> MakeApplicationAndBetaReduceAux g (f,fty,rest,argsl,m) | tyargs :: rest -> // Bind type parameters by immediate substitution match f with | Expr.TyLambda(_, tyvs,body,_,bodyty) when tyvs.Length = List.length tyargs -> let tpenv = bindTypars tyvs tyargs emptyTyparInst let body = remarkExpr m (instExpr g tpenv body) let bodyty' = instType tpenv bodyty MakeApplicationAndBetaReduceAux g (body,bodyty', rest,argsl,m) | _ -> let f = mkAppsAux g f fty [tyargs] [] m let fty = applyTyArgs g fty tyargs MakeApplicationAndBetaReduceAux g (f,fty, rest,argsl,m) | [] -> match argsl with | _ :: _ -> // Bind term parameters by "let" explicit substitutions // // Only do this if there are enough lambdas for the number of arguments supplied. This is because // all arguments get evaluated before application. // // VALID: // (fun a b -> E[a,b]) t1 t2 ---> let a = t1 in let b = t2 in E[t1,t2] // INVALID: // (fun a -> E[a]) t1 t2 ---> let a = t1 in E[a] t2 UNLESS: E[a] has no effects OR t2 has no effects match tryStripLambdaN argsl.Length f with | Some (argvsl, body) -> assert (argvsl.Length = argsl.Length) let argvs,body = List.mapfoldBack MultiLambdaToTupledLambda argvsl body mkLetsBind m (mkCompGenBinds argvs argsl) body | _ -> mkExprApplAux g f fty argsl m | [] -> f let MakeApplicationAndBetaReduce g (f,fty,tyargsl,argl,m) = MakeApplicationAndBetaReduceAux g (f,fty,tyargsl,argl,m) //--------------------------------------------------------------------------- // Adjust for expected usage // Convert a use of a value to saturate to the given arity. //--------------------------------------------------------------------------- let MakeArgsForTopArgs _g m argtysl tpenv = argtysl |> List.mapi (fun i argtys -> argtys |> List.mapi (fun j (argty,argInfo : ArgReprInfo) -> let ty = instType tpenv argty let nm = match argInfo.Name with | None -> CompilerGeneratedName ("arg"^ string i^ string j) | Some id -> id.idText fst (mkCompGenLocal m nm ty))) let AdjustValForExpectedArity g m (vref:ValRef) flags topValInfo = let tps,argtysl,rty,_ = GetTopValTypeInFSharpForm g topValInfo vref.Type m let tps' = copyTypars tps let tyargs' = List.map mkTyparTy tps' let tpenv = bindTypars tps tyargs' emptyTyparInst let rty' = instType tpenv rty let vsl = MakeArgsForTopArgs g m argtysl tpenv let call = MakeApplicationAndBetaReduce g (Expr.Val(vref,flags,m),vref.Type,[tyargs'],(List.map (mkTupledVars g m) vsl),m) let tauexpr,tauty = List.foldBack (fun vs (e,ty) -> mkMultiLambda m vs (e, ty), (mkTupledVarsTy g vs --> ty)) vsl (call, rty') // Build a type-lambda expression for the toplevel value if needed... mkTypeLambda m tps' (tauexpr,tauty),tps' +-> tauty //--------------------------------------------------------------------------- // let IsSubsumptionExpr g expr = match expr with | Expr.Op (TOp.Coerce,[inputTy;actualTy],[_],_) -> isFunTy g actualTy && isFunTy g inputTy | _ -> false let stripTupledFunTy g ty = let argTys,retTy = stripFunTy g ty let curriedArgTys = argTys |> List.map (tryDestTupleTy g) curriedArgTys, retTy let (|ExprValWithPossibleTypeInst|_|) expr = match expr with | Expr.App(Expr.Val(vref,flags,m),_fty,tyargs,[],_) -> Some(vref,flags,tyargs,m) | Expr.Val(vref,flags,m) -> Some(vref,flags,[],m) | _ -> None let mkCoerceIfNeeded g tgtTy srcTy expr = if typeEquiv g tgtTy srcTy then expr else mkCoerceExpr(expr,tgtTy,expr.Range,srcTy) let mkCompGenLetIn m nm ty e f = let v,ve = mkCompGenLocal m nm ty mkCompGenLet m v e (f (v,ve)) /// Take a node representing a coercion from one function type to another, e.g. /// A -> A * A -> int /// to /// B -> B * A -> int /// and return an expression of the correct type that doesn't use a coercion type. For example /// return /// (fun b1 b2 -> E (b1 :> A) (b2 :> A)) /// /// - Use good names for the closure arguments if available /// - Create lambda variables if needed, or use the supplied arguments if available. /// /// Return the new expression and any unused suffix of supplied arguments /// /// If E is a value with TopInfo then use the arity to help create a better closure. /// In particular we can create a closure like this: /// (fun b1 b2 -> E (b1 :> A) (b2 :> A)) /// rather than /// (fun b1 -> let clo = E (b1 :> A) in (fun b2 -> clo (b2 :> A))) /// The latter closures are needed to carefully preserve side effect order /// /// Note that the results of this translation are visible to quotations let AdjustPossibleSubsumptionExpr g (expr: Expr) (suppliedArgs: Expr list) : (Expr* Expr list) option = match expr with | Expr.Op (TOp.Coerce,[inputTy;actualTy],[exprWithActualTy],m) when isFunTy g actualTy && isFunTy g inputTy -> if typeEquiv g actualTy inputTy then Some(exprWithActualTy, suppliedArgs) else let curriedActualArgTys,retTy = stripTupledFunTy g actualTy let curriedInputTys,_ = stripFunTy g inputTy assert (curriedActualArgTys.Length = curriedInputTys.Length) let argTys = (curriedInputTys,curriedActualArgTys) ||> List.mapi2 (fun i x y -> (i,x,y)) // Use the nice names for a function of known arity and name. Note that 'nice' here also // carries a semantic meaning. For a function with top-info, // let f (x:A) (y:A) (z:A) = ... // we know there are no side effects on the application of 'f' to 1,2 args. This greatly simplifies // the closure built for // f b1 b2 // and indeed for // f b1 b2 b3 // we don't build any closure at all, and just return // f (b1 :> A) (b2 :> A) (b3 :> A) let curriedNiceNames = match stripExpr exprWithActualTy with | ExprValWithPossibleTypeInst(vref,_,_,_) when vref.ValReprInfo.IsSome -> let _,argtysl,_,_ = GetTopValTypeInFSharpForm g vref.ValReprInfo.Value vref.Type expr.Range argtysl |> List.mapi (fun i argtys -> argtys |> List.mapi (fun j (_,argInfo) -> match argInfo.Name with | None -> CompilerGeneratedName ("arg" ^ string i ^string j) | Some id -> id.idText)) | _ -> [] assert (curriedActualArgTys.Length >= curriedNiceNames.Length) let argTysWithNiceNames,argTysWithoutNiceNames = List.chop curriedNiceNames.Length argTys /// Only consume 'suppliedArgs' up to at most the number of nice arguments let suppliedArgs, droppedSuppliedArgs = List.chop (min suppliedArgs.Length curriedNiceNames.Length) suppliedArgs /// THe relevant range for any expressions and applications includes the arguments let appm = (m,suppliedArgs) ||> List.fold (fun m e -> unionRanges m (e.Range)) // See if we have 'enough' suppliedArgs. If not, we have to build some lambdas, and, // we have to 'let' bind all arguments that we consume, e.g. // Seq.take (effect;4) : int list -> int list // is a classic case. Here we generate // let tmp = (effect;4) in // (fun v -> Seq.take tmp (v :> seq<_>)) let buildingLambdas = (suppliedArgs.Length <> curriedNiceNames.Length) //printfn "buildingLambdas = %A" buildingLambdas //printfn "suppliedArgs.Length = %d" suppliedArgs.Length /// Given a tuple of argument variables that has a tuple type that satisfies the input argument types, /// coerce it to a tuple that satisfies the matching coerced argument type(s). let CoerceDetupled (argTys: TType list) (detupledArgs: Expr list) (actualTys: TType list) = assert (actualTys.Length = argTys.Length) assert (actualTys.Length = detupledArgs.Length) // Inject the coercions into the user-supplied explicit tuple let argm = List.reduce unionRanges (detupledArgs |> List.map (fun e -> e.Range)) mkTupled g argm (List.map3 (mkCoerceIfNeeded g) actualTys argTys detupledArgs) actualTys /// Given an argument variable of tuple type that has been evaluated and stored in the /// given variable, where the tuple type that satisfies the input argument types, /// coerce it to a tuple that satisfies the matching coerced argument type(s). let CoerceBoundTuple tupleVar argTys (actualTys : TType list) = assert (actualTys.Length > 1) mkTupled g appm ((actualTys,argTys) ||> List.mapi2 (fun i actualTy dummyTy -> let argExprElement = mkTupleFieldGet(tupleVar,argTys,i,appm) mkCoerceIfNeeded g actualTy dummyTy argExprElement)) actualTys /// Given an argument that has a tuple type that satisfies the input argument types, /// coerce it to a tuple that satisfies the matching coerced argument type. Try to detuple the argument if possible. let CoerceTupled niceNames (argExpr: Expr) (actualTys: TType list) = let argExprTy = (tyOfExpr g argExpr) let argTys = match actualTys with | [_] -> [tyOfExpr g argExpr] | _ -> tryDestTupleTy g argExprTy assert (actualTys.Length = argTys.Length) let nm = match niceNames with [nm] -> nm | _ -> "arg" if buildingLambdas then // Evaluate the user-supplied tuple-valued argument expression, inject the coercions and build an explicit tuple // Assign the argument to make sure it is only run once // f ~~> : B -> int // f ~~> : (B * B) -> int // // for // let f a = 1 // let f (a,a) = 1 let v,ve = mkCompGenLocal appm nm argExprTy let binderBuilder = (fun tm -> mkCompGenLet appm v argExpr tm) let expr = match actualTys,argTys with | [actualTy],[argTy] -> mkCoerceIfNeeded g actualTy argTy ve | _ -> CoerceBoundTuple ve argTys actualTys binderBuilder,expr else if typeEquiv g (mkTupledTy g actualTys) argExprTy then (fun tm -> tm), argExpr else let detupledArgs,argTys = match actualTys with | [_actualType] -> [argExpr],[tyOfExpr g argExpr] | _ -> tryDestTuple argExpr,tryDestTupleTy g argExprTy // OK, the tuples match, or there is no de-tupling, // f x // f (x,y) // // for // let f (x,y) = 1 // and we're not building lambdas, just coerce the arguments in place if detupledArgs.Length = actualTys.Length then (fun tm -> tm), CoerceDetupled argTys detupledArgs actualTys else // In this case there is a tuple mismatch. // f p // // // for // let f (x,y) = 1 // Assign the argument to make sure it is only run once let v,ve = mkCompGenLocal appm nm argExprTy let binderBuilder = (fun tm -> mkCompGenLet appm v argExpr tm) let expr = CoerceBoundTuple ve argTys actualTys binderBuilder,expr // This variable is really a dummy to make the code below more regular. // In the i = N - 1 cases we skip the introduction of the 'let' for // this variable. let resVar,resVarAsExpr = mkCompGenLocal appm "result" retTy let N = argTys.Length let (cloVar,exprForOtherArgs,_) = List.foldBack (fun (i,inpArgTy,actualArgTys) (cloVar:Val,res,resTy) -> let inpArgTys = match actualArgTys with | [_] -> [inpArgTy] | _ -> destTupleTy g inpArgTy assert (inpArgTys.Length = actualArgTys.Length) let inpsAsVars,inpsAsExprs = inpArgTys |> List.mapi (fun j ty -> mkCompGenLocal appm ("arg"^string i^string j) ty) |> List.unzip let inpsAsActualArg = CoerceDetupled inpArgTys inpsAsExprs actualArgTys let inpCloVarType = (mkFunTy (mkTupledTy g actualArgTys) cloVar.Type) let newResTy = mkFunTy inpArgTy resTy let inpCloVar,inpCloVarAsExpr = mkCompGenLocal appm ("clo"^string i) inpCloVarType let newRes = // For the final arg we can skip introducing the dummy variable if i = N - 1 then mkMultiLambda appm inpsAsVars (mkApps g ((inpCloVarAsExpr,inpCloVarType),[],[inpsAsActualArg],appm),resTy) else mkMultiLambda appm inpsAsVars (mkInvisibleLet appm cloVar (mkApps g ((inpCloVarAsExpr,inpCloVarType),[],[inpsAsActualArg],appm)) res, resTy) inpCloVar,newRes,newResTy) argTysWithoutNiceNames (resVar,resVarAsExpr,retTy) // Mark the up as Some/None let suppliedArgs = List.map Some suppliedArgs @ List.ofArray (Array.create (curriedNiceNames.Length - suppliedArgs.Length) None) assert (suppliedArgs.Length = curriedNiceNames.Length) let exprForAllArgs = if isNil argTysWithNiceNames then mkInvisibleLet appm cloVar exprWithActualTy exprForOtherArgs else let lambdaBuilders,binderBuilders,inpsAsArgs = (argTysWithNiceNames,curriedNiceNames,suppliedArgs) |||> List.map3 (fun (_,inpArgTy,actualArgTys) niceNames suppliedArg -> let inpArgTys = match actualArgTys with | [_] -> [inpArgTy] | _ -> destTupleTy g inpArgTy /// Note: there might not be enough nice names, and they might not match in arity let niceNames = match niceNames with | nms when nms.Length = inpArgTys.Length -> nms | [nm] -> inpArgTys |> List.mapi (fun i _ -> (nm^string i)) | nms -> nms match suppliedArg with | Some arg -> let binderBuilder,inpsAsActualArg = CoerceTupled niceNames arg actualArgTys let lambdaBuilder = (fun tm -> tm) lambdaBuilder, binderBuilder,inpsAsActualArg | None -> let inpsAsVars,inpsAsExprs = (niceNames,inpArgTys) ||> List.map2 (fun nm ty -> mkCompGenLocal appm nm ty) |> List.unzip let inpsAsActualArg = CoerceDetupled inpArgTys inpsAsExprs actualArgTys let lambdaBuilder = (fun tm -> mkMultiLambda appm inpsAsVars (tm, tyOfExpr g tm)) let binderBuilder = (fun tm -> tm) lambdaBuilder,binderBuilder,inpsAsActualArg) |> List.unzip3 // If no trailing args then we can skip introducing the dummy variable // This corresponds to // let f (x:A) = 1 // // f ~~> type B -> int // // giving // (fun b -> f (b :> A)) // rather than // (fun b -> let clo = f (b :> A) in clo) let exprApp = if argTysWithoutNiceNames.Length = 0 then mkApps g ((exprWithActualTy,actualTy),[],inpsAsArgs,appm) else mkInvisibleLet appm cloVar (mkApps g ((exprWithActualTy,actualTy),[],inpsAsArgs,appm)) exprForOtherArgs List.foldBack (fun f acc -> f acc) binderBuilders (List.foldBack (fun f acc -> f acc) lambdaBuilders exprApp) Some(exprForAllArgs,droppedSuppliedArgs) | _ -> None /// Find and make all subsumption eliminations let NormalizeAndAdjustPossibleSubsumptionExprs g inputExpr = let expr,args = // AdjustPossibleSubsumptionExpr can take into account an application match stripExpr inputExpr with | Expr.App(f,_fty,[],args,_) -> f,args | _ -> inputExpr,[] match AdjustPossibleSubsumptionExpr g expr args with | None -> inputExpr | Some (expr',[]) -> expr' | Some (expr',args') -> //printfn "adjusted...." Expr.App(expr',tyOfExpr g expr',[],args',inputExpr.Range) //--------------------------------------------------------------------------- // LinearizeTopMatch - when only one non-failing target, make linear. The full // complexity of this is only used for spectacularly rare bindings such as // type ('a,'b) either = This of 'a | That of 'b // let this_f1 = This (fun x -> x) // let This fA | That fA = this_f1 // // Here a polymorphic top level binding "fA" is _computed_ by a pattern match!!! // The TAST coming out of type checking must, however, define fA as a type function, // since it is marked with an arity that indicates it's r.h.s. is a type function] // without side effects and so can be compiled as a generic method (for example). // polymorphic things bound in complex matches at top level require eta expansion of the // type function to ensure the r.h.s. of the binding is indeed a type function let etaExpandTypeLambda g m tps (tm,ty) = if isNil tps then tm else mkTypeLambda m tps (mkApps g ((tm,ty),[(List.map mkTyparTy tps)],[],m),ty) let AdjustValToTopVal (tmp:Val) parent valData = tmp.SetValReprInfo (Some valData); tmp.Data.val_actual_parent <- parent; tmp.SetIsMemberOrModuleBinding() /// For match with only one non-failing target T0, the other targets, T1... failing (say, raise exception). /// tree, T0(v0,..,vN) => rhs ; T1() => fail ; ... /// Convert it to bind T0's variables, then continue with T0's rhs: /// let tmp = switch tree, TO(fv0,...,fvN) => Tup (fv0,...,fvN) ; T1() => fail; ... /// let v1 = #1 tmp in ... /// and vN = #N tmp /// rhs /// Motivation: /// - For top-level let bindings with possibly failing matches, /// this makes clear that subsequent bindings (if reached) are top-level ones. let LinearizeTopMatchAux g parent (spBind,m,tree,targets,m2,ty) = let targetsL = Array.toList targets (* items* package up 0,1,more items *) let itemsProj tys i x = match tys with | [] -> failwith "itemsProj: no items?" | [_] -> x (* no projection needed *) | tys -> Expr.Op (TOp.TupleFieldGet(i),tys,[x],m) let isThrowingTarget = function TTarget(_,x,_) -> isThrow x if 1 + List.count isThrowingTarget targetsL = targetsL.Length then (* Have failing targets and ONE successful one, so linearize *) let (TTarget (vs,rhs,spTarget)) = Option.get (List.tryFind (isThrowingTarget >> not) targetsL) (* note - old code here used copy value to generate locals - this was not right *) let fvs = vs |> FlatList.map (fun v -> fst(mkLocal v.Range v.LogicalName v.Type)) (* fresh *) let vtys = vs |> FlatList.map (fun v -> v.Type) let tmpTy = mkTupledVarsTy g (FlatList.toList vs) let tmp,tmpe = mkCompGenLocal m "matchResultHolder" tmpTy AdjustValToTopVal tmp parent ValReprInfo.emptyValData; let newTg = TTarget (fvs,mkTupledVars g m (FlatList.toList fvs),spTarget) let fixup (TTarget (tvs,tx,spTarget)) = match destThrow tx with | Some (m,_,e) -> let tx = mkThrow m tmpTy e TTarget(tvs,tx,spTarget) (* Throwing targets, recast it's "return type" *) | None -> newTg (* Non-throwing target, replaced [new/old] *) let targets = Array.map fixup targets let binds = vs |> FlatList.mapi (fun i v -> let ty = v.Type let rhs = etaExpandTypeLambda g m v.Typars (itemsProj (FlatList.toList vtys) i tmpe, ty) (* update the arity of the value *) v.SetValReprInfo (Some (InferArityOfExpr g ty [] [] rhs)) mkInvisibleBind v rhs) in (* vi = proj tmp *) mkCompGenLet m tmp (primMkMatch (spBind,m,tree,targets,m2,tmpTy)) (* note, probably retyped match, but note, result still has same type *) (mkLetsFromBindings m binds rhs) else (* no change *) primMkMatch (spBind,m,tree,targets,m2,ty) let LinearizeTopMatch g parent = function | Expr.Match (spBind,m,tree,targets,m2,ty) -> LinearizeTopMatchAux g parent (spBind,m,tree,targets,m2,ty) | x -> x //--------------------------------------------------------------------------- // XmlDoc signatures //--------------------------------------------------------------------------- let commaEncs strs = String.concat "," strs let angleEnc str = "{" ^ str ^ "}" let ticksAndArgCountTextOfTyconRef (tcref:TyconRef) = // Generic type names are (name ^ "`" ^ digits) where name does not contain "`". let path = Array.toList (fullMangledPathToTyconRef tcref) @ [tcref.CompiledName] textOfPath path let typarEnc _g (gtpsType,gtpsMethod) typar = match List.tryFindIndex (typarEq typar) gtpsType with | Some idx -> "`" ^ string idx // single-tick-index for typar from type | None -> match List.tryFindIndex (typarEq typar) gtpsMethod with | Some idx -> "``" ^ string idx // double-tick-index for typar from method | None -> warning(InternalError("Typar not found during XmlDoc generation",typar.Range)) "``0" // REVIEW: this should be ERROR not WARNING? let rec typeEnc g (gtpsType,gtpsMethod) ty = if verbose then dprintf "--> typeEnc"; match (stripTyEqns g ty) with | TType_forall _ -> "Microsoft.FSharp.Core.FSharpTypeFunc" | _ when isArrayTy g ty -> let tcref,tinst = destAppTy g ty let arraySuffix = match rankOfArrayTyconRef g tcref with // The easy case | 1 -> "[]" // REVIEW // In fact IL supports 3 kinds of multidimensional arrays, and each kind of array has its own xmldoc spec. // We don't support all these, and instead always pull xmldocs for 0-based-arbitrary-length ("0:") multidimensional arrays. // This is probably the 99% case anyway. | 2 -> "[0:,0:]" | 3 -> "[0:,0:,0:]" | 4 -> "[0:,0:,0:,0:]" | _ -> failwith "impossible: rankOfArrayTyconRef: unsupported array rank" typeEnc g (gtpsType,gtpsMethod) (List.head tinst) ^ arraySuffix | TType_ucase (UCRef(tcref,_),tinst) | TType_app (tcref,tinst) -> if tyconRefEq g g.byref_tcr tcref then typeEnc g (gtpsType,gtpsMethod) (List.head tinst) ^ "@" elif tyconRefEq g tcref g.nativeptr_tcr then typeEnc g (gtpsType,gtpsMethod) (List.head tinst) ^ "*" else let tyName = let ty = stripTyEqnsAndMeasureEqns g ty match ty with | TType_app (tcref,_tinst) -> // Generic type names are (name ^ "`" ^ digits) where name does not contain "`". // In XML doc, when used in type instances, these do not use the ticks. let path = Array.toList (fullMangledPathToTyconRef tcref) @ [tcref.CompiledName] textOfPath (List.map DemangleGenericTypeName path) | _ -> assert(false); failwith "impossible" tyName + tyargsEnc g (gtpsType,gtpsMethod) tinst | TType_tuple typs -> sprintf "System.Tuple%s"(tyargsEnc g (gtpsType,gtpsMethod) typs) | TType_fun (f,x) -> "Microsoft.FSharp.Core.FSharpFunc" + tyargsEnc g (gtpsType,gtpsMethod) [f;x] | TType_var typar -> typarEnc g (gtpsType,gtpsMethod) typar | TType_measure _ -> "?" and tyargsEnc g (gtpsType,gtpsMethod) args = match args with | [] -> "" | [a] when (match (stripTyEqns g a) with TType_measure _ -> true | _ -> false) -> "" // float should appear as just "float" in the generated .XML xmldoc file | _ -> angleEnc (commaEncs (List.map (typeEnc g (gtpsType,gtpsMethod)) args)) let XmlDocArgsEnc g (gtpsType,gtpsMethod) argTs = if isNil argTs then "" else "(" + String.concat "," (List.map (typeEnc g (gtpsType,gtpsMethod)) argTs) + ")" let buildAccessPath (cp : CompilationPath option) = match cp with | Some(cp) -> let ap = cp.AccessPath |> List.map fst |> List.toArray System.String.Join(".",ap) | None -> "Extension Type" let prependPath path name = if path = "" then name else path + "." + name let XmlDocSigOfVal g path (v:Val) = let parentTypars,methTypars,argInfos,prefix,path,name = // CLEANUP: this is one of several code paths that treat module values and members // seperately when really it would be cleaner to make sure GetTopValTypeInFSharpForm, GetMemberTypeInFSharpForm etc. // were lined up so code paths like this could be uniform match v.MemberInfo with | Some membInfo when not v.IsExtensionMember -> (* Methods, Properties etc. *) let tps,argInfos,_,_ = GetMemberTypeInMemberForm g membInfo.MemberFlags (Option.get v.ValReprInfo) v.Type v.Range let prefix,name = match membInfo.MemberFlags.MemberKind with | MemberKind.ClassConstructor | MemberKind.Constructor -> "M:", "#ctor" | MemberKind.Member -> "M:", v.CompiledName | MemberKind.PropertyGetSet | MemberKind.PropertySet | MemberKind.PropertyGet -> "P:",v.PropertyName let path = prependPath path v.TopValActualParent.CompiledName let parentTypars,methTypars = match PartitionValTypars g v with | Some(_,memberParentTypars,memberMethodTypars,_,_) -> memberParentTypars,memberMethodTypars | None -> [],tps parentTypars,methTypars,argInfos,prefix,path,name | _ -> // Regular F# values and extension members let w = arityOfVal v let tps,argInfos,_,_ = GetTopValTypeInCompiledForm g w v.Type v.Range let name = v.CompiledName let prefix = if w.NumCurriedArgs = 0 && isNil tps then "P:" else "M:" [],tps,argInfos,prefix,path,name let argTs = argInfos |> List.concat |> List.map fst let args = XmlDocArgsEnc g (parentTypars,methTypars) argTs let arity = List.length methTypars in (* C# XML doc adds `` to *generic* member names *) let genArity = if arity=0 then "" else sprintf "``%d" arity prefix + prependPath path name + genArity + args let XmlDocSigOfUnionCase path case typeName = // Would like to use "U:", but ParseMemberSignature only accepts C# signatures let prefix = "T:" let path = prependPath path typeName prefix + prependPath path case let XmlDocSigOfField path name compiledName = let prefix = "F:" let path = prependPath path compiledName prefix + prependPath path name let XmlDocSigOfTycon path (tc:Tycon) = "T:" + prependPath path tc.CompiledName let XmlDocSigOfSubModul path = "T:" + path let XmlDocSigOfEntity (eref:EntityRef) = XmlDocSigOfTycon (buildAccessPath eref.CompilationPathOpt) eref.Deref //-------------------------------------------------------------------------- // Some unions have null as representations //-------------------------------------------------------------------------- let enum_CompilationRepresentationAttribute_Static = 0b0000000000000001 let enum_CompilationRepresentationAttribute_Instance = 0b0000000000000010 let enum_CompilationRepresentationAttribute_StaticInstanceMask = 0b0000000000000011 let enum_CompilationRepresentationAttribute_ModuleSuffix = 0b0000000000000100 let enum_CompilationRepresentationAttribute_PermitNull = 0b0000000000001000 let HasUseNullAsTrueValueAttribute g attribs = match TryFindFSharpInt32Attribute g g.attrib_CompilationRepresentationAttribute attribs with | Some(flags) -> ((flags &&& enum_CompilationRepresentationAttribute_PermitNull) <> 0) | _ -> false let TyconHasUseNullAsTrueValueAttribute g (tycon:Tycon) = HasUseNullAsTrueValueAttribute g tycon.Attribs // WARNING: this must match optimizeAlternativeToNull in ilx/cu_erase.fs let CanHaveUseNullAsTrueValueAttribute (_g:TcGlobals) (tycon:Tycon) = (tycon.IsUnionTycon && let ucs = tycon.UnionCasesArray (ucs.Length = 0 || (ucs |> Array.existsOne (fun uc -> uc.IsNullary) && ucs |> Array.exists (fun uc -> not uc.IsNullary)))) // WARNING: this must match optimizeAlternativeToNull in ilx/cu_erase.fs let IsUnionTypeWithNullAsTrueValue (g:TcGlobals) (tycon:Tycon) = (tycon.IsUnionTycon && let ucs = tycon.UnionCasesArray (ucs.Length = 0 || (TyconHasUseNullAsTrueValueAttribute g tycon && ucs |> Array.existsOne (fun uc -> uc.IsNullary) && ucs |> Array.exists (fun uc -> not uc.IsNullary)))) let TyconCompilesInstanceMembersAsStatic g tycon = IsUnionTypeWithNullAsTrueValue g tycon let TcrefCompilesInstanceMembersAsStatic g (tcref: TyconRef) = TyconCompilesInstanceMembersAsStatic g tcref.Deref let TypeNullNever g ty = let underlyingTy = stripTyEqnsAndMeasureEqns g ty (isStructTy g underlyingTy) || (isByrefTy g underlyingTy) let TypeNullIsExtraValue g ty = isILReferenceTy g ty || isDelegateTy g ty || (not (TypeNullNever g ty) && isAppTy g ty && TryFindFSharpBoolAttribute g g.attrib_AllowNullLiteralAttribute (tyconOfAppTy g ty).Attribs = Some(true)) let TypeNullIsTrueValue g ty = (isAppTy g ty && IsUnionTypeWithNullAsTrueValue g (tyconOfAppTy g ty)) || (isUnitTy g ty) let TypeNullNotLiked g ty = not (TypeNullIsExtraValue g ty) && not (TypeNullIsTrueValue g ty) && not (TypeNullNever g ty) let TypeSatisfiesNullConstraint g ty = TypeNullIsExtraValue g ty let rec TypeHasDefaultValue g ty = let ty = stripTyEqnsAndMeasureEqns g ty TypeSatisfiesNullConstraint g ty || (isStructTy g ty && // Is it an F# struct type? (if isFSharpStructTy g ty then let tcref,tinst = destAppTy g ty let flds = // Note this includes fields implied by the use of the implicit class construction syntax tcref.AllInstanceFieldsAsList // We can ignore fields with the DefaultValue(false) attribute |> List.filter (fun fld -> not (TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute fld.FieldAttribs = Some(false))) flds |> List.forall (actualTyOfRecdField (mkTyconRefInst tcref tinst) >> TypeHasDefaultValue g) elif isTupleStructTy g ty then destTupleTy g ty |> List.forall (TypeHasDefaultValue g) else // All struct types defined in other .NET languages have a DefaultValue regardless of their // instantiation true)) let (|SpecialComparableHeadType|_|) g ty = if isTupleTy g ty then Some (destTupleTy g ty) elif isAppTy g ty then let tcref,tinst = destAppTy g ty if isArrayTyconRef g tcref || tyconRefEq g tcref g.system_UIntPtr_tcref || tyconRefEq g tcref g.system_IntPtr_tcref then Some tinst else None else None let (|SpecialEquatableHeadType|_|) g ty = (|SpecialComparableHeadType|_|) g ty let (|SpecialNotEquatableHeadType|_|) g ty = if isFunTy g ty then Some() else None // Can we use the fast helper for the 'LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric'? let canUseTypeTestFast g ty = not (isTyparTy g ty) && not (TypeNullIsTrueValue g ty) && not (TypeNullNever g ty) // Can we use the fast helper for the 'LanguagePrimitives.IntrinsicFunctions.UnboxGeneric'? let canUseUnboxFast g ty = not (isTyparTy g ty) && not (TypeNullNotLiked g ty) //-------------------------------------------------------------------------- // Nullness tests and pokes //-------------------------------------------------------------------------- (* match inp with :? ty as v -> e2[v] | _ -> e3 *) let mkIsInstConditional g m tgty vinpe v e2 e3 = // No sequence point for this compiler generated expression form if canUseTypeTestFast g tgty then let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m) let tg2 = mbuilder.AddResultTarget(e2,SuppressSequencePointAtTarget) let tg3 = mbuilder.AddResultTarget(e3,SuppressSequencePointAtTarget) let dtree = TDSwitch(exprForVal m v,[TCase(Test.IsNull,tg3)],Some tg2,m) let expr = mbuilder.Close(dtree,m,tyOfExpr g e2) mkInvisibleLet m v (mkIsInst tgty vinpe m) expr else let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m) let tg2 = TDSuccess(FlatList.one (mkCallUnbox g m tgty vinpe), mbuilder.AddTarget(TTarget(FlatList.one v,e2,SuppressSequencePointAtTarget))) let tg3 = mbuilder.AddResultTarget(e3,SuppressSequencePointAtTarget) let dtree = TDSwitch(vinpe,[TCase(Test.IsInst(tyOfExpr g vinpe,tgty),tg2)],Some tg3,m) let expr = mbuilder.Close(dtree,m,tyOfExpr g e2) expr // Null tests are generated by // 1. The compilation of array patterns in the pattern match compiler // 2. The compilation of string patterns in the pattern match compiler let mkNullTest g m e1 e2 e3 = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m) let tg2 = mbuilder.AddResultTarget(e2,SuppressSequencePointAtTarget) let tg3 = mbuilder.AddResultTarget(e3,SuppressSequencePointAtTarget) let dtree = TDSwitch(e1, [TCase(Test.IsNull,tg3)],Some tg2,m) let expr = mbuilder.Close(dtree,m,tyOfExpr g e2) expr let mkNonNullTest g m e = mkAsmExpr ([ IL.AI_ldnull ; IL.AI_cgt_un ],[], [e],[g.bool_ty],m) let mkNonNullCond g m ty e1 e2 e3 = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m ty (mkNonNullTest g m e1) e2 e3 let mkIfThen g m e1 e2 = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m g.unit_ty e1 e2 (mkUnit g m) let ModuleNameIsMangled g attrs = match TryFindFSharpInt32Attribute g g.attrib_CompilationRepresentationAttribute attrs with | Some(flags) -> ((flags &&& enum_CompilationRepresentationAttribute_ModuleSuffix) <> 0) | _ -> false let CompileAsEvent g attrs = HasFSharpAttribute g g.attrib_CLIEventAttribute attrs let MemberIsCompiledAsInstance g parent isExtensionMember membInfo attrs = // All extension members are compiled as static members if isExtensionMember then false // Anything implementing a dispatch slot is compiled as an instance member elif membInfo.MemberFlags.IsOverrideOrExplicitImpl then true elif nonNil membInfo.ImplementedSlotSigs then true else // Otherwise check attributes to see if there is an explicit instance or explicit static flag let explicitInstance,explicitStatic = match TryFindFSharpInt32Attribute g g.attrib_CompilationRepresentationAttribute attrs with | Some(flags) -> ((flags &&& enum_CompilationRepresentationAttribute_Instance) <> 0), ((flags &&& enum_CompilationRepresentationAttribute_Static) <> 0) | _ -> false,false explicitInstance || (membInfo.MemberFlags.IsInstance && not explicitStatic && not (TcrefCompilesInstanceMembersAsStatic g parent)) let isSealedTy g ty = let ty = stripTyEqnsAndMeasureEqns g ty not (isRefTy g ty) || isUnitTy g ty || isArrayTy g ty || match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata st -> st.IsSealed #endif | ILTypeMetadata (_,td) -> td.IsSealed | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> if (isFSharpInterfaceTy g ty || isFSharpClassTy g ty) then let tcref,_ = destAppTy g ty (TryFindFSharpBoolAttribute g g.attrib_SealedAttribute tcref.Attribs = Some(true)) else // All other F# types, array, byref, tuple types are sealed true let isComInteropTy g ty = let tcr,_ = destAppTy g ty TryFindFSharpBoolAttribute g g.attrib_ComImportAttribute tcr.Attribs = Some(true) let ValSpecIsCompiledAsInstance g (v:Val) = match v.MemberInfo with | Some(membInfo) -> // Note it doesn't matter if we pass 'v.TopValActualParent' or 'v.MemberApparentParent' here. // These only differ if the value is an extension member, and in that case MemberIsCompiledAsInstance always returns // false anyway MemberIsCompiledAsInstance g v.MemberApparentParent v.IsExtensionMember membInfo v.Attribs | _ -> false let ValRefIsCompiledAsInstanceMember g (vref: ValRef) = ValSpecIsCompiledAsInstance g vref.Deref //--------------------------------------------------------------------------- // Crack information about an F# object model call //--------------------------------------------------------------------------- let GetMemberCallInfo g (vref:ValRef,vFlags) = match vref.MemberInfo with | Some(membInfo) when not vref.IsExtensionMember -> let numEnclTypeArgs = vref.MemberApparentParent.TyparsNoRange.Length let virtualCall = (membInfo.MemberFlags.IsOverrideOrExplicitImpl || membInfo.MemberFlags.IsDispatchSlot) && not membInfo.MemberFlags.IsFinal && (match vFlags with VSlotDirectCall -> false | _ -> true) let isNewObj = (membInfo.MemberFlags.MemberKind = MemberKind.Constructor) && (match vFlags with NormalValUse -> true | _ -> false) let isSuperInit = (membInfo.MemberFlags.MemberKind = MemberKind.Constructor) && (match vFlags with CtorValUsedAsSuperInit -> true | _ -> false) let isSelfInit = (membInfo.MemberFlags.MemberKind = MemberKind.Constructor) && (match vFlags with CtorValUsedAsSelfInit -> true | _ -> false) let isCompiledAsInstance = ValRefIsCompiledAsInstanceMember g vref let takesInstanceArg = isCompiledAsInstance && not isNewObj let isPropGet = (membInfo.MemberFlags.MemberKind = MemberKind.PropertyGet) && (membInfo.MemberFlags.IsInstance = isCompiledAsInstance) let isPropSet = (membInfo.MemberFlags.MemberKind = MemberKind.PropertySet) && (membInfo.MemberFlags.IsInstance = isCompiledAsInstance) numEnclTypeArgs, virtualCall,isNewObj,isSuperInit,isSelfInit ,takesInstanceArg,isPropGet,isPropSet | _ -> 0,false,false,false,false,false,false,false //--------------------------------------------------------------------------- // Active pattern name helpers //--------------------------------------------------------------------------- let TryGetActivePatternInfo (vref:ValRef) = // First is an optimization to prevent calls to CoreDisplayName, which calls DemangleOperatorName let logicalName = vref.LogicalName if logicalName.Length = 0 || logicalName.[0] <> '|' then None else ActivePatternInfoOfValName vref.CoreDisplayName type ActivePatternElemRef with member x.Name = let (APElemRef(_,vref,n)) = x match TryGetActivePatternInfo vref with | None -> error(InternalError("not an active pattern name", vref.Range)) | Some (APInfo(_,nms)) -> if n < 0 || n >= List.length nms then error(InternalError("name_of_apref: index out of range for active pattern refernce", vref.Range)); List.nth nms n let mkChoiceTyconRef g m n = match n with | 0 | 1 -> error(InternalError("mkChoiceTyconRef",m)) | 2 -> g.choice2_tcr | 3 -> g.choice3_tcr | 4 -> g.choice4_tcr | 5 -> g.choice5_tcr | 6 -> g.choice6_tcr | 7 -> g.choice7_tcr | _ -> error(Error(FSComp.SR.tastActivePatternsLimitedToSeven(),m)) let mkChoiceTy g m tinst = match List.length tinst with | 0 -> g.unit_ty | 1 -> List.head tinst | _ -> mkAppTy (mkChoiceTyconRef g m (List.length tinst)) tinst let mkChoiceCaseRef g m n i = mkUnionCaseRef (mkChoiceTyconRef g m n) ("Choice"+string (i+1)+"Of"+string n) type PrettyNaming.ActivePatternInfo with member x.Names = let (APInfo(_,nms)) = x in nms member x.IsTotal = let (APInfo(total,_)) = x in total member apinfo.ResultType g m rtys = let choicety = mkChoiceTy g m rtys if apinfo.IsTotal then choicety else mkOptionTy g choicety member apinfo.OverallType g m dty rtys = mkFunTy dty (apinfo.ResultType g m rtys) //--------------------------------------------------------------------------- // RewriteExpr: rewrite bottom up with interceptors //--------------------------------------------------------------------------- [] type ExprRewritingEnv = { PreIntercept: ((Expr -> Expr) -> Expr -> Expr option) option; PostTransform: Expr -> Expr option; IsUnderQuotations: bool } let rec rewrite_bind env (TBind(v,e,letSeqPtOpt)) = TBind(v,RewriteExpr env e,letSeqPtOpt) and rewrite_binds env binds = FlatList.map (rewrite_bind env) binds and RewriteExpr env expr = match expr with | Expr.Let _ | Expr.Sequential _ -> rewriteLinearExpr env expr (fun e -> e) | _ -> let expr = match preRewriteExpr env expr with | Some expr -> expr | None -> rewriteExprStructure env expr postRewriteExpr env expr and preRewriteExpr env expr = match env.PreIntercept with | Some f -> f (RewriteExpr env) expr | None -> None and postRewriteExpr env expr = match env.PostTransform expr with | None -> expr | Some expr -> expr and rewriteExprStructure env expr = match expr with | Expr.Const _ | Expr.Val _ -> expr | Expr.App(f0,f0ty,tyargs,args,m) -> let f0' = RewriteExpr env f0 let args' = rewriteExprs env args if f0 === f0' && args === args' then expr else Expr.App(f0',f0ty,tyargs,args',m) | Expr.Quote(ast,{contents=Some(argTypes,argExprs,data)},isFromQueryExpression,m,ty) -> Expr.Quote((if env.IsUnderQuotations then RewriteExpr env ast else ast),{contents=Some(argTypes,rewriteExprs env argExprs,data)},isFromQueryExpression,m,ty) | Expr.Quote(ast,{contents=None},isFromQueryExpression,m,ty) -> Expr.Quote((if env.IsUnderQuotations then RewriteExpr env ast else ast),{contents=None},isFromQueryExpression,m,ty) | Expr.Obj (_,ty,basev,basecall,overrides,iimpls,m) -> mkObjExpr(ty,basev,RewriteExpr env basecall,List.map (rewriteObjExprOverride env) overrides, List.map (rewriteObjExprInterfaceImpl env) iimpls,m) | Expr.Link eref -> RewriteExpr env !eref | Expr.Op (c,tyargs,args,m) -> let args' = rewriteExprs env args if args === args' then expr else Expr.Op (c,tyargs,args',m) | Expr.Lambda(_lambdaId,ctorThisValOpt,baseValOpt,argvs,body,m,rty) -> let body = RewriteExpr env body rebuildLambda m ctorThisValOpt baseValOpt argvs (body,rty) | Expr.TyLambda(_lambdaId,argtyvs,body,m,rty) -> let body = RewriteExpr env body mkTypeLambda m argtyvs (body,rty) | Expr.Match(spBind,exprm,dtree,targets,m,ty) -> let dtree' = rewriteDecisionTree env dtree let targets' = rewriteTargets env targets mkAndSimplifyMatch spBind exprm m ty dtree' targets' | Expr.LetRec (binds,e,m,_) -> let binds = rewrite_binds env binds let e' = RewriteExpr env e Expr.LetRec(binds,e',m,NewFreeVarsCache()) | Expr.Let _ -> failwith "unreachable - linear let" | Expr.Sequential _ -> failwith "unreachable - linear seq" | Expr.StaticOptimization (constraints,e2,e3,m) -> let e2' = RewriteExpr env e2 let e3' = RewriteExpr env e3 Expr.StaticOptimization(constraints,e2',e3',m) | Expr.TyChoose (a,b,m) -> Expr.TyChoose(a,RewriteExpr env b,m) and rewriteLinearExpr env expr contf = // schedule a rewrite on the way back up by adding to the continuation let contf = contf << postRewriteExpr env match preRewriteExpr env expr with | Some expr -> contf expr (* done - intercepted! *) | None -> match expr with | Expr.Let (bind,body,m,_) -> let bind = rewrite_bind env bind rewriteLinearExpr env body (contf << (fun body' -> mkLetBind m bind body')) | Expr.Sequential (e1,e2,dir,spSeq,m) -> let e1' = RewriteExpr env e1 rewriteLinearExpr env e2 (contf << (fun e2' -> if e1 === e1' && e2 === e2' then expr else Expr.Sequential(e1',e2',dir,spSeq,m))) | LinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty) -> let dtree = rewriteDecisionTree env dtree let tg1 = rewriteTarget env tg1 // tailcall rewriteLinearExpr env e2 (contf << (fun e2 -> rebuildLinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty))) | _ -> (* no longer linear *) contf (RewriteExpr env expr) and rewriteExprs env exprs = List.mapq (RewriteExpr env) exprs and rewriteFlatExprs env exprs = FlatList.mapq (RewriteExpr env) exprs and rewriteDecisionTree env x = match x with | TDSuccess (es,n) -> let es' = rewriteFlatExprs env es if FlatList.physicalEquality es es' then x else TDSuccess(es',n) | TDSwitch (e,cases,dflt,m) -> let e' = RewriteExpr env e let cases' = List.map (fun (TCase(discrim,e)) -> TCase(discrim,rewriteDecisionTree env e)) cases let dflt' = Option.map (rewriteDecisionTree env) dflt TDSwitch (e',cases',dflt',m) | TDBind (bind,body) -> let bind' = rewrite_bind env bind let body = rewriteDecisionTree env body TDBind (bind',body) and rewriteTarget env (TTarget(vs,e,spTarget)) = TTarget(vs,RewriteExpr env e,spTarget) and rewriteTargets env targets = List.map (rewriteTarget env) (Array.toList targets) and rewriteObjExprOverride env (TObjExprMethod(slotsig,attribs,tps,vs,e,m)) = TObjExprMethod(slotsig,attribs,tps,vs,RewriteExpr env e,m) and rewriteObjExprInterfaceImpl env (ty,overrides) = (ty, List.map (rewriteObjExprOverride env) overrides) and rewriteModuleOrNamespaceExpr env x = match x with (* | ModuleOrNamespaceExprWithSig(mty,e,m) -> ModuleOrNamespaceExprWithSig(mty,rewriteModuleOrNamespaceExpr env e,m) *) | ModuleOrNamespaceExprWithSig(mty,def,m) -> ModuleOrNamespaceExprWithSig(mty,rewriteModuleOrNamespaceDef env def,m) and rewriteModuleOrNamespaceDefs env x = List.map (rewriteModuleOrNamespaceDef env) x and rewriteModuleOrNamespaceDef env x = match x with | TMDefRec(tycons,binds,mbinds,m) -> TMDefRec(tycons,rewrite_binds env binds,rewriteModuleOrNamespaceBindings env mbinds,m) | TMDefLet(bind,m) -> TMDefLet(rewrite_bind env bind,m) | TMDefDo(e,m) -> TMDefDo(RewriteExpr env e,m) | TMDefs defs -> TMDefs(rewriteModuleOrNamespaceDefs env defs) | TMAbstract mexpr -> TMAbstract(rewriteModuleOrNamespaceExpr env mexpr) and rewriteModuleOrNamespaceBinding env (ModuleOrNamespaceBinding(nm, rhs)) = ModuleOrNamespaceBinding(nm,rewriteModuleOrNamespaceDef env rhs) and rewriteModuleOrNamespaceBindings env mbinds = List.map (rewriteModuleOrNamespaceBinding env) mbinds and RewriteImplFile env mv = mapTImplFile (rewriteModuleOrNamespaceExpr env) mv //-------------------------------------------------------------------------- // Build a Remap that converts all "local" references to "public" things // accessed via non local references. //-------------------------------------------------------------------------- let MakeExportRemapping viewedCcu (mspec:ModuleOrNamespace) = let accEntityRemap (entity:Entity) acc = match tryRescopeEntity viewedCcu entity with | Some eref -> #if DEBUG if !verboseStamps then dprintf "adding export remapping for entity %s#%d\n" entity.LogicalName entity.Stamp; #endif addTyconRefRemap (mkLocalTyconRef entity) eref acc | None -> if entity.IsNamespace then acc else error(InternalError("Unexpected entity without a pubpath when remapping assembly data",entity.Range)) let accValRemap (vspec:Val) acc = // The acc contains the entity remappings match tryRescopeVal viewedCcu acc vspec with | Some vref -> #if DEBUG if !verboseStamps then dprintf "adding export remapping for value %s#%d\n" vspec.LogicalName vspec.Stamp; #endif {acc with valRemap=acc.valRemap.Add vspec vref } | None -> error(InternalError("Unexpected value without a pubpath when remapping assembly data",vspec.Range)) let mty = mspec.ModuleOrNamespaceType let entities = allEntitiesOfModuleOrNamespaceTy mty let vs = allValsOfModuleOrNamespaceTy mty // Remap the entities first so we can correctly remap the types in the signatures of the ValLinkageFullKey's in the value references let acc = List.foldBack accEntityRemap entities Remap.Empty let allRemap = List.foldBack accValRemap vs acc allRemap //-------------------------------------------------------------------------- // Apply a "local to nonlocal" renaming to a module type. This can't use // remap_mspec since the remapping we want isn't to newly created nodes // but rather to remap to the nonlocal references. This is deliberately // "breaking" the binding structure implicit in the module type, which is // the whole point - one things are rewritten to use non local references then // the elements can be copied at will, e.g. when inlining during optimization. //------------------------------------------------------------------------ let rec remapEntityDataToNonLocal g tmenv (d: EntityData) = let tps',tmenvinner = tmenvCopyRemapAndBindTypars (remapAttribs g tmenv) tmenv (d.entity_typars.Force(d.entity_range)) { d with entity_typars = LazyWithContext.NotLazy tps'; entity_attribs = d.entity_attribs |> remapAttribs g tmenvinner; entity_tycon_repr = d.entity_tycon_repr |> remapTyconRepr g tmenvinner; entity_tycon_abbrev = d.entity_tycon_abbrev |> Option.map (remapType tmenvinner) ; entity_tycon_tcaug = d.entity_tycon_tcaug |> remapTyconAug tmenvinner ; entity_modul_contents = notlazy (d.entity_modul_contents |> Lazy.force |> mapImmediateValsAndTycons (remapTyconToNonLocal g tmenv) (remapValToNonLocal g tmenv)); entity_exn_info = d.entity_exn_info |> remapTyconExnInfo g tmenvinner} and remapTyconToNonLocal g tmenv x = x |> NewModifiedTycon (remapEntityDataToNonLocal g tmenv) and remapValToNonLocal g tmenv inp = inp |> NewModifiedVal (remapValData g tmenv) let ApplyExportRemappingToEntity g tmenv x = remapTyconToNonLocal g tmenv x (* Which constraints actually get compiled to .NET constraints? *) let isCompiledConstraint cx = match cx with | TyparConstraint.SupportsNull _ // this implies the 'class' constraint | TyparConstraint.IsReferenceType _ // this is the 'class' constraint | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _ | TyparConstraint.CoercesTo _ -> true | _ -> false // Is a value a first-class polymorphic value with .NET constraints? // Used to turn off TLR and method splitting let IsGenericValWithGenericContraints g (v:Val) = isForallTy g v.Type && v.Type |> destForallTy g |> fst |> List.exists (fun tp -> List.exists isCompiledConstraint tp.Constraints) // Does a type support a given interface? type Entity with member tycon.HasInterface g ty = tycon.TypeContents.tcaug_interfaces |> List.exists (fun (x,_,_) -> typeEquiv g ty x) // Does a type have an override matching the given name and argument types? // Used to detet the presence of 'Equals' and 'GetHashCode' in type checking member tycon.HasOverride g nm argtys = tycon.TypeContents.tcaug_adhoc |> NameMultiMap.find nm |> List.exists (fun vref -> match vref.MemberInfo with | None -> false | Some membInfo -> let argInfos = ArgInfosOfMember g vref argInfos.Length = 1 && List.lengthsEqAndForall2 (typeEquiv g) (List.map fst (List.head argInfos)) argtys && membInfo.MemberFlags.IsOverrideOrExplicitImpl) type EntityRef with member tcref.HasInterface g ty = tcref.Deref.HasInterface g ty member tcref.HasOverride g nm argtys = tcref.Deref.HasOverride g nm argtys let mkFastForLoop g (spLet,m,idv:Val,start,dir,finish,body) = let dir = if dir then FSharpForLoopUp else FSharpForLoopDown mkFor g (spLet,idv,start,dir,finish,body,m) /// Accessing a binding of the form "let x = 1" or "let x = e" for any "e" satisfying the predicate /// below does not cause an initialization trigger, i.e. does not get compiled as a static field. let IsSimpleSyntacticConstantExpr g inputExpr = let rec checkExpr (vrefs: Set) x = match stripExpr x with | Expr.Op (TOp.Coerce,_,[arg],_) -> checkExpr vrefs arg | UnopExpr g (vref,arg) when (valRefEq g vref g.unchecked_unary_minus_vref || valRefEq g vref g.unchecked_unary_plus_vref || valRefEq g vref g.unchecked_unary_not_vref || valRefEq g vref g.bitwise_unary_not_vref || valRefEq g vref g.enum_vref) -> checkExpr vrefs arg // compare, =, <>, +, -, <, >, <=, >=, <<<, >>>, &&& | BinopExpr g (vref, arg1, arg2) when (valRefEq g vref g.equals_operator_vref || valRefEq g vref g.compare_operator_vref || valRefEq g vref g.unchecked_addition_vref || valRefEq g vref g.less_than_operator_vref || valRefEq g vref g.less_than_or_equals_operator_vref || valRefEq g vref g.greater_than_operator_vref || valRefEq g vref g.greater_than_or_equals_operator_vref || valRefEq g vref g.not_equals_operator_vref || valRefEq g vref g.unchecked_addition_vref || valRefEq g vref g.unchecked_multiply_vref || valRefEq g vref g.unchecked_subtraction_vref || // Note: division and modulus can raise exceptions, so are not included valRefEq g vref g.bitwise_shift_left_vref || valRefEq g vref g.bitwise_shift_right_vref || valRefEq g vref g.bitwise_xor_vref || valRefEq g vref g.bitwise_and_vref || valRefEq g vref g.bitwise_or_vref) && (not (typeEquiv g (tyOfExpr g arg1) g.string_ty) && not (typeEquiv g (tyOfExpr g arg1) g.decimal_ty) ) -> checkExpr vrefs arg1 && checkExpr vrefs arg2 | Expr.Val(vref,_,_) -> vref.Deref.IsCompiledAsStaticPropertyWithoutField || vrefs.Contains vref.Stamp | Expr.Match(_,_,dtree,targets,_,_) -> checkDecisionTree vrefs dtree && targets |> Array.forall (checkDecisionTreeTarget vrefs) | Expr.Let(b,e,_,_) -> checkExpr vrefs b.Expr && checkExpr (vrefs.Add b.Var.Stamp) e // Detect standard constants | Expr.TyChoose (_,b,_) -> checkExpr vrefs b | Expr.Const _ | Expr.Op (TOp.UnionCase _,_,[],_) // Nullary union cases | UncheckedDefaultOfExpr g _ | SizeOfExpr g _ | TypeOfExpr g _ -> true // All others are not simple constant expressions | _ -> false and checkDecisionTree vrefs x = match x with | TDSuccess (es,_n) -> es |> FlatList.forall (checkExpr vrefs) | TDSwitch (e,cases,dflt,_m) -> checkExpr vrefs e && cases |> List.forall (checkDecisionTreeCase vrefs) && dflt |> Option.forall (checkDecisionTree vrefs) | TDBind (bind,body) -> checkExpr vrefs bind.Expr && checkDecisionTree (vrefs.Add bind.Var.Stamp) body and checkDecisionTreeCase vrefs (TCase(discrim,dtree)) = (match discrim with Test.Const _c -> true | _ -> false) && checkDecisionTree vrefs dtree and checkDecisionTreeTarget vrefs (TTarget(vs,e,_)) = let vrefs = ((vrefs, vs) ||> FlatList.fold (fun s v -> s.Add v.Stamp)) checkExpr vrefs e checkExpr Set.empty inputExpr // REVIEW: unchecked conversions // REVIEW: add min, max // See also PostTypecheckSemanticChecks.CheckAttribArgExpr, which must match this precisely let rec EvalAttribArgExpr g x = match x with // Detect standard constants | Expr.Const(c,m,_) -> match c with | Const.Bool _ | Const.Int32 _ | Const.SByte _ | Const.Int16 _ | Const.Int32 _ | Const.Int64 _ | Const.Byte _ | Const.UInt16 _ | Const.UInt32 _ | Const.UInt64 _ | Const.Double _ | Const.Single _ | Const.Char _ | Const.Zero _ | Const.String _ -> x | _ -> errorR (Error ( FSComp.SR.tastConstantCannotBeCustomAttribute(),m)); x | TypeOfExpr g _ -> x | TypeDefOfExpr g _ -> x | Expr.Op (TOp.Coerce,_,[arg],_) -> EvalAttribArgExpr g arg | EnumExpr g arg1 -> EvalAttribArgExpr g arg1 // Detect bitwise or of attribute flags | AttribBitwiseOrExpr g (arg1, arg2) -> match EvalAttribArgExpr g arg1, EvalAttribArgExpr g arg2 with | Expr.Const(Const.Int32 x1,m,ty), Expr.Const(Const.Int32 x2,_,_) -> Expr.Const(Const.Int32 (x1 ||| x2),m,ty) | Expr.Const(Const.SByte x1,m,ty), Expr.Const(Const.SByte x2,_,_) -> Expr.Const(Const.SByte (x1 ||| x2),m,ty) | Expr.Const(Const.Int16 x1,m,ty), Expr.Const(Const.Int16 x2,_,_) -> Expr.Const(Const.Int16 (x1 ||| x2),m,ty) | Expr.Const(Const.Int64 x1,m,ty), Expr.Const(Const.Int64 x2,_,_) -> Expr.Const(Const.Int64 (x1 ||| x2),m,ty) | Expr.Const(Const.Byte x1,m,ty), Expr.Const(Const.Byte x2,_,_) -> Expr.Const(Const.Byte (x1 ||| x2),m,ty) | Expr.Const(Const.UInt16 x1,m,ty), Expr.Const(Const.UInt16 x2,_,_) -> Expr.Const(Const.UInt16 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt32 x1,m,ty), Expr.Const(Const.UInt32 x2,_,_) -> Expr.Const(Const.UInt32 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt64 x1,m,ty), Expr.Const(Const.UInt64 x2,_,_) -> Expr.Const(Const.UInt64 (x1 ||| x2),m,ty) | _ -> x | SpecificBinopExpr g g.unchecked_addition_vref (arg1, arg2) -> match EvalAttribArgExpr g arg1, EvalAttribArgExpr g arg2 with (* | Expr.Const(Const.Int32 x1,m,ty), Expr.Const(Const.Int32 x2,_,_) -> Expr.Const(Const.Int32 (x1 ||| x2),m,ty) | Expr.Const(Const.SByte x1,m,ty), Expr.Const(Const.SByte x2,_,_) -> Expr.Const(Const.SByte (x1 ||| x2),m,ty) | Expr.Const(Const.Int16 x1,m,ty), Expr.Const(Const.Int16 x2,_,_) -> Expr.Const(Const.Int16 (x1 ||| x2),m,ty) | Expr.Const(Const.Int64 x1,m,ty), Expr.Const(Const.Int64 x2,_,_) -> Expr.Const(Const.Int64 (x1 ||| x2),m,ty) | Expr.Const(Const.Byte x1,m,ty), Expr.Const(Const.Byte x2,_,_) -> Expr.Const(Const.Byte (x1 ||| x2),m,ty) | Expr.Const(Const.UInt16 x1,m,ty), Expr.Const(Const.UInt16 x2,_,_) -> Expr.Const(Const.UInt16 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt32 x1,m,ty), Expr.Const(Const.UInt32 x2,_,_) -> Expr.Const(Const.UInt32 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt64 x1,m,ty), Expr.Const(Const.UInt64 x2,_,_) -> Expr.Const(Const.UInt64 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt64 x1,m,ty), Expr.Const(Const.UInt64 x2,_,_) -> Expr.Const(Const.UInt64 (x1 ||| x2),m,ty) *) | Expr.Const(Const.String x1,m,ty), Expr.Const(Const.String x2,_,_) -> Expr.Const(Const.String (x1 + x2),m,ty) | _ -> error (Error ( FSComp.SR.tastNotAConstantExpression(),x.Range)) // Detect bitwise or of attribute flags | AttribBitwiseOrExpr g (arg1, arg2) -> match EvalAttribArgExpr g arg1, EvalAttribArgExpr g arg2 with | Expr.Const(Const.Int32 x1,m,ty), Expr.Const(Const.Int32 x2,_,_) -> Expr.Const(Const.Int32 (x1 ||| x2),m,ty) | Expr.Const(Const.SByte x1,m,ty), Expr.Const(Const.SByte x2,_,_) -> Expr.Const(Const.SByte (x1 ||| x2),m,ty) | Expr.Const(Const.Int16 x1,m,ty), Expr.Const(Const.Int16 x2,_,_) -> Expr.Const(Const.Int16 (x1 ||| x2),m,ty) | Expr.Const(Const.Int64 x1,m,ty), Expr.Const(Const.Int64 x2,_,_) -> Expr.Const(Const.Int64 (x1 ||| x2),m,ty) | Expr.Const(Const.Byte x1,m,ty), Expr.Const(Const.Byte x2,_,_) -> Expr.Const(Const.Byte (x1 ||| x2),m,ty) | Expr.Const(Const.UInt16 x1,m,ty), Expr.Const(Const.UInt16 x2,_,_) -> Expr.Const(Const.UInt16 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt32 x1,m,ty), Expr.Const(Const.UInt32 x2,_,_) -> Expr.Const(Const.UInt32 (x1 ||| x2),m,ty) | Expr.Const(Const.UInt64 x1,m,ty), Expr.Const(Const.UInt64 x2,_,_) -> Expr.Const(Const.UInt64 (x1 ||| x2),m,ty) | _ -> x | _ -> errorR (Error ( FSComp.SR.tastNotAConstantExpression(),x.Range)); x and EvaledAttribExprEquality g e1 e2 = match e1,e2 with | Expr.Const(c1,_,_),Expr.Const(c2,_,_) -> c1 = c2 | TypeOfExpr g ty1, TypeOfExpr g ty2 -> typeEquiv g ty1 ty2 | TypeDefOfExpr g ty1, TypeDefOfExpr g ty2 -> typeEquiv g ty1 ty2 | _ -> false let EvalAttribArg g x = match x with | Expr.Op (TOp.Coerce,_,[Expr.Op (TOp.Array,[elemTy],args,m)],_) | Expr.Op (TOp.Array,[elemTy],args,m) -> let args = args |> List.map (EvalAttribArgExpr g) Expr.Op (TOp.Array,[elemTy],args,m) | _ -> EvalAttribArgExpr g x // Take into account the fact that some "instance" members are compiled as static // members when usinging CompilationRepresentation.Static, or any non-virtual instance members // in a type that supports "null" as a true value. This is all members // where ValRefIsCompiledAsInstanceMember is false but membInfo.MemberFlags.IsInstance // is true. // // This is the right abstraction for viewing member types, but the implementation // below is a little ugly. let GetTypeOfIntrinsicMemberInCompiledForm g (vref:ValRef) = assert (not vref.IsExtensionMember) let membInfo,topValInfo = checkMemberValRef vref let tps,argInfos,rty,retInfo = GetTypeOfMemberInMemberForm g vref let argInfos = // Check if the thing is really an instance member compiled as a static member // If so, the object argument counts as a normal argument in the compiled form if membInfo.MemberFlags.IsInstance && not (ValRefIsCompiledAsInstanceMember g vref) then let _,origArgInfos,_,_ = GetTopValTypeInFSharpForm g topValInfo vref.Type vref.Range match origArgInfos with | [] -> errorR(InternalError("value does not have a valid member type",vref.Range)); argInfos | h::_ -> h ::argInfos else argInfos tps,argInfos,rty,retInfo //-------------------------------------------------------------------------- // Tuple compilation (expressions) //------------------------------------------------------------------------ let rec mkCompiledTuple g (argtys,args,m) = let n = List.length argtys if n <= 0 then failwith "mkCompiledTuple" elif n < maxTuple then (mkCompiledTupleTyconRef g argtys, argtys, args, m) else let argtysA,argtysB = List.splitAfter goodTupleFields argtys let argsA,argsB = List.splitAfter (goodTupleFields) args let ty8, v8 = match argtysB,argsB with | [ty8],[arg8] -> match ty8 with // if it's already been nested or ended, pass it through | TType_app(tn, _) when (is_tuple_tcref g tn) -> ty8,arg8 | _ -> let ty8enc = TType_app(g.tuple1_tcr,[ty8]) let v8enc = Expr.Op (TOp.Tuple,[ty8],[arg8],m) ty8enc,v8enc | _ -> let a,b,c,d = mkCompiledTuple g (argtysB, argsB, m) let ty8plus = TType_app(a,b) let v8plus = Expr.Op (TOp.Tuple,b,c,d) ty8plus,v8plus let argtysAB = argtysA @ [ty8] (mkCompiledTupleTyconRef g argtysAB, argtysAB,argsA @ [v8],m) let mkILMethodSpecForTupleItem (_g : TcGlobals) (typ:ILType) n = mkILNonGenericInstanceMethSpecInTy(typ, (if n < goodTupleFields then "get_Item"+(n+1).ToString() else "get_Rest"), [], mkILTyvarTy (uint16 n)) let mkGetTupleItemN g m n typ te retty = mkAsmExpr([IL.mkNormalCall(mkILMethodSpecForTupleItem g typ n)],[],[te],[retty],m) /// Match an Int32 constant expression let (|Int32Expr|_|) expr = match expr with | Expr.Const(Const.Int32 n,_,_) -> Some n | _ -> None /// Match a try-finally expression let (|TryFinally|_|) expr = match expr with | Expr.Op (TOp.TryFinally _,[_resty],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)],_) -> Some(e1,e2) | _ -> None // detect ONLY the while loops that result from compiling 'for ... in ... do ...' let (|WhileLoopForCompiledForEachExpr|_|) expr = match expr with | Expr.Op (TOp.While (_, WhileLoopForCompiledForEachExprMarker),_,[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)],m) -> Some(e1,e2,m) | _ -> None let (|Let|_|) expr = match expr with | Expr.Let(TBind(v,e1,sp),e2,_,_) -> Some(v,e1,sp,e2) | _ -> None let (|RangeInt32Step|_|) g expr = match expr with // detect 'n .. m' | Expr.App(Expr.Val(vf,_,_),_,[tyarg],[startExpr;finishExpr],_) when valRefEq g vf g.range_op_vref && typeEquiv g tyarg g.int_ty -> Some(startExpr, 1, finishExpr) // detect (RangeInt32 startExpr N finishExpr), the inlined/compiled form of 'n .. m' and 'n .. N .. m' | Expr.App(Expr.Val(vf,_,_),_,[],[startExpr; Int32Expr n; finishExpr],_) when valRefEq g vf g.range_int32_op_vref -> Some(startExpr, n, finishExpr) | _ -> None // Detect the compiled or optimized form of a 'for in .. do ' expression over integers // Detect the compiled or optimized form of a 'for in .. .. do ' expression over integers when step is positive let (|CompiledInt32ForEachExprWithKnownStep|_|) g expr = match expr with | Let (_enumerableVar, RangeInt32Step g (startExpr, step, finishExpr), _, Let (_enumeratorVar, _getEnumExpr, spBind, TryFinally (WhileLoopForCompiledForEachExpr (_guardExpr, Let (elemVar,_currentExpr,_,bodyExpr), m), _cleanupExpr))) -> let spForLoop = match spBind with SequencePointAtBinding(spStart) -> SequencePointAtForLoop(spStart) | _ -> NoSequencePointAtForLoop Some(spForLoop,elemVar,startExpr,step,finishExpr,bodyExpr,m) | _ -> None let DetectFastIntegerForLoops g expr = match expr with | CompiledInt32ForEachExprWithKnownStep g (spForLoop,elemVar,startExpr,step,finishExpr,bodyExpr,m) // fast for loops only allow steps 1 and -1 steps at the moment when step = 1 || step = -1 -> mkFastForLoop g (spForLoop,m,elemVar,startExpr,(step = 1),finishExpr,bodyExpr) | _ -> expr // Used to remove Expr.Link for inner expressions in pattern matches let (|InnerExprPat|) expr = stripExpr expr fsharp-3.0.34/src/fsharp/ilxgen.fs0000775000175000017500000133252012260314606015773 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //-------------------------------------------------------------------------- // The ILX generator. //-------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Ilxgen open System.IO open System.Collections.Generic open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Internal.BinaryConstants open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types let IsNonErasedTypar (tp:Typar) = not tp.IsErased let DropErasedTypars (tps:Typar list) = tps |> List.filter IsNonErasedTypar let DropErasedTyargs tys = tys |> List.filter (fun ty -> match ty with TType_measure _ -> false | _ -> true) let AddSpecialNameFlag (mdef:ILMethodDef) = { mdef with IsSpecialName = true } let AddNonUserCompilerGeneratedAttribs g (mdef:ILMethodDef) = addMethodGeneratedAttrs g.ilg mdef let debugDisplayMethodName = "__DebugDisplay" #if SILVERLIGHT let useHiddenInitCode = false #else let useHiddenInitCode = true #endif //-------------------------------------------------------------------------- // misc //-------------------------------------------------------------------------- let iLdcZero = AI_ldc (DT_I4,ILConst.I4 0) let iLdcInt64 i = AI_ldc (DT_I8,ILConst.I8 i) let iLdcDouble i = AI_ldc (DT_R8,ILConst.R8 i) let iLdcSingle i = AI_ldc (DT_R4,ILConst.R4 i) /// Make a method that simply loads a field let mkLdfldMethodDef (ilMethName,reprAccess,isStatic,ilTy,ilFieldName,ilPropType) = let ilFieldSpec = mkILFieldSpecInTy(ilTy,ilFieldName,ilPropType) let ilReturn = mkILReturn ilPropType let ilMethodDef = if isStatic then mkILNonGenericStaticMethod (ilMethName,reprAccess,[],ilReturn,mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode [mkNormalLdsfld ilFieldSpec],None)) else mkILNonGenericInstanceMethod (ilMethName,reprAccess,[],ilReturn,mkMethodBody (true,emptyILLocals,2,nonBranchingInstrsToCode [ mkLdarg0; mkNormalLdfld ilFieldSpec],None)) ilMethodDef |> AddSpecialNameFlag let ChooseParamNames fieldNamesAndTypes = let takenFieldNames = fieldNamesAndTypes |> List.map p23 |> Set.ofList fieldNamesAndTypes |> List.map (fun (ilPropName,ilFieldName,ilPropType) -> let lowerPropName = String.uncapitalize ilPropName let ilParamName = if takenFieldNames.Contains(lowerPropName) then ilPropName else lowerPropName ilParamName,ilFieldName,ilPropType) let markup s = s |> Seq.mapi (fun i x -> i,x) // Approximation for purposes of optimization and giving a warning when compiling definition-only files as EXEs let rec CheckCodeDoesSomething code = match code with | ILBasicBlock bb -> Array.fold (fun x i -> x || match i with (AI_ldnull | AI_nop | AI_pop) | I_ret | I_seqpoint _ -> false | _ -> true) false bb.Instructions | GroupBlock (_,codes) -> List.exists CheckCodeDoesSomething codes | RestrictBlock (_,code) -> CheckCodeDoesSomething code | TryBlock _ -> true let ChooseFreeVarNames takenNames ts = let tns = List.map (fun t -> (t,None)) ts let rec chooseName names (t,nOpt) = let tn = match nOpt with None -> t | Some n -> t + string n if Zset.contains tn names then chooseName names (t,Some(match nOpt with None -> 0 | Some n -> (n+1))) else let names = Zset.add tn names names,tn let names = Zset.empty String.order |> Zset.addList takenNames let _names,ts = List.fmap chooseName names tns ts let ilxgenGlobalNng = NiceNameGenerator () // We can't tailcall to methods taking byrefs. This helper helps search for them let IsILTypeByref = function ILType.Byref _ -> true | _ -> false let mainMethName = CompilerGeneratedName "main" type AttributeDecoder(namedArgs) = let nameMap = namedArgs |> List.map (fun (AttribNamedArg(s,_,_,c)) -> s,c) |> NameMap.ofList let findConst x = match NameMap.tryFind x nameMap with | Some(AttribExpr(_,Expr.Const(c,_,_))) -> Some c | _ -> None let findAppTr x = match NameMap.tryFind x nameMap with | Some(AttribExpr(_,Expr.App(_,_,[TType_app(tr,_)],_,_))) -> Some tr | _ -> None member self.FindInt16 x dflt = match findConst x with | Some(Const.Int16 x) -> x | _ -> dflt member self.FindInt32 x dflt = match findConst x with | Some(Const.Int32 x) -> x | _ -> dflt member self.FindBool x dflt = match findConst x with | Some(Const.Bool x) -> x | _ -> dflt member self.FindString x dflt = match findConst x with | Some(Const.String x) -> x | _ -> dflt member self.FindTypeName x dflt = match findAppTr x with | Some(tr) -> tr.DisplayName | _ -> dflt //-------------------------------------------------------------------------- // Statistics //-------------------------------------------------------------------------- let mutable reports = (fun _ -> ()) let AddReport f = let old = reports in reports <- (fun oc -> old oc; f oc) let ReportStatistics (oc:TextWriter) = reports oc let NewCounter nm = let count = ref 0 AddReport (fun oc -> if !count <> 0 then oc.WriteLine (string !count + " " + nm)); (fun () -> incr count) let CountClosure = NewCounter "closures" let CountMethodDef = NewCounter "IL method defintitions corresponding to values" let CountStaticFieldDef = NewCounter "IL field defintitions corresponding to values" let CountCallFuncInstructions = NewCounter "callfunc instructions (indirect calls)" //------------------------------------------------------------------------- // Part of the last-minute tranformation performed by this file // is to eliminate variables of static type "unit". These are // utility functions related to this. //------------------------------------------------------------------------- let BindUnitVars g (mvs:Val list, paramInfos, body) = match mvs,paramInfos with | [v],[] -> assert isUnitTy g v.Type [], mkLet NoSequencePointAtInvisibleBinding v.Range v (mkUnit g v.Range) body | _ -> mvs,body /// Non-local information related to internals of code generation within an assembly type IlxGenIntraAssemblyInfo = { /// A table recording the generated name of the static backing fields for each mutable top level value where /// we may need to take the address of that value, e.g. static mutable module-bound values which are structs. These are /// only accessible intra-assembly. Across assemblies, taking the address of static mutable module-bound values is not permitted. /// The key to the table is the method ref for the property getter for the value, which is a stable name for the Val's /// that come from both the signature and the implementation. StaticFieldInfo : Dictionary } //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- /// Indicates how the generated IL code is ultimately emitted type IlxGenBackend = | IlWriteBackend | IlReflectBackend [] type IlxGenOptions = { fragName: string generateFilterBlocks: bool workAroundReflectionEmitBugs: bool emitConstantArraysUsingStaticDataBlobs: bool /// If this is set, then the last module becomes the "main" module and its toplevel bindings are executed at startup mainMethodInfo: Tast.Attribs option localOptimizationsAreOn: bool generateDebugSymbols: bool testFlagEmitFeeFeeAs100001: bool ilxBackend: IlxGenBackend /// Indicates the code is being generated in FSI.EXE and is executed immediately after code generation /// This includes all interactively compiled code, including #load, definitions, and expressions isInteractive: bool // Indicates the code generated is an interactive 'it' expression. We generate a setter to allow clearing of the underlying // storage, even though 'it' is not logically mutable isInteractiveItExpr: bool // Indicates System.SerializableAttribute is available in the target framework netFxHasSerializableAttribute : bool /// Whenever possible, use callvirt instead of call alwaysCallVirt: bool} /// Compilation environment for compiling a fragment of an assembly [] type cenv = { g: Env.TcGlobals TcVal : ConstraintSolver.TcValF viewCcu: CcuThunk opts: IlxGenOptions /// Cache the generation of the "unit" type mutable ilUnitTy: ILType option; amap: Import.ImportMap; intraAssemblyInfo : IlxGenIntraAssemblyInfo /// Cache methods with SecurityAttribute applied to them, to prevent unnecessary calls to ExistsInEntireHierarchyOfType casApplied : Dictionary } type EmitSequencePointState = SPAlways | SPSuppress let mkTypeOfExpr cenv m ilty = mkAsmExpr ([ mkNormalCall (mspec_Type_GetTypeFromHandle cenv.g.ilg) ], [], [mkAsmExpr ([ I_ldtoken (ILToken.ILType ilty) ], [],[],[cenv.g.system_RuntimeTypeHandle_typ],m)], [cenv.g.system_Type_typ],m) let mkGetNameExpr cenv (ilt : ILType) m = mkAsmExpr ([I_ldstr ilt.BasicQualifiedName],[],[],[cenv.g.string_ty],m) let useCallVirt cenv boxity (mspec : ILMethodSpec) isBaseCall = cenv.opts.alwaysCallVirt && (boxity = AsObject) && not mspec.CallingConv.IsStatic && not isBaseCall //-------------------------------------------------------------------------- // CompileLocation //-------------------------------------------------------------------------- /// compilation location = path to a ccu, namespace or class /// Referencing other stuff, and descriptions of where items are to be placed /// within the generated IL namespace/typespace. This should be cleaned up. type CompileLocation = { clocScope: IL.ILScopeRef; clocTopImplQualifiedName: string; clocNamespace: string option; clocEncl: string list; clocQualifiedNameOfFile : string } //-------------------------------------------------------------------------- // Access this and other assemblies //-------------------------------------------------------------------------- let mkTopName ns n = String.concat "." (match ns with Some x -> [x;n] | None -> [n]) let CompLocForFragment fragName (ccu:CcuThunk) = { clocQualifiedNameOfFile =fragName; clocTopImplQualifiedName= fragName; clocScope=ccu.ILScopeRef; clocNamespace=None; clocEncl=[]} let CompLocForCcu (ccu:CcuThunk) = CompLocForFragment ccu.AssemblyName ccu let CompLocForSubModuleOrNamespace cloc (submod:ModuleOrNamespace) = let n = submod.CompiledName match submod.ModuleOrNamespaceType.ModuleOrNamespaceKind with | FSharpModuleWithSuffix | ModuleOrType -> { cloc with clocEncl= cloc.clocEncl @ [n]} | Namespace -> {cloc with clocNamespace=Some (mkTopName cloc.clocNamespace n)} let CompLocForFixedPath fragName qname (CompPath(sref,cpath)) = let ns,t = List.takeUntil (fun (_,mkind) -> mkind <> Namespace) cpath let ns = List.map fst ns let ns = textOfPath ns let encl = t |> List.map (fun (s ,_)-> s) let ns = if ns = "" then None else Some ns { clocQualifiedNameOfFile =fragName; clocTopImplQualifiedName=qname; clocScope=sref; clocNamespace=ns; clocEncl=encl } let CompLocForFixedModule fragName qname (mspec:ModuleOrNamespace) = let cloc = CompLocForFixedPath fragName qname mspec.CompilationPath let cloc = CompLocForSubModuleOrNamespace cloc mspec cloc let NestedTypeRefForCompLoc cloc n = match cloc.clocEncl with | [] -> let tyname = mkTopName cloc.clocNamespace n mkILTyRef(cloc.clocScope,tyname) | h::t -> mkILNestedTyRef(cloc.clocScope,mkTopName cloc.clocNamespace h :: t,n) let CleanUpGeneratedTypeName (nm:string) = if nm.IndexOfAny IllegalCharactersInTypeAndNamespaceNames = -1 then nm else (nm,IllegalCharactersInTypeAndNamespaceNames) ||> Array.fold (fun nm c -> nm.Replace(string c, "-")) let TypeNameForInitClass cloc = ".$" + cloc.clocTopImplQualifiedName let TypeNameForImplicitMainMethod cloc = TypeNameForInitClass cloc + "$Main" let TypeNameForPrivateImplementationDetails cloc = "" let CompLocForInitClass cloc = {cloc with clocEncl=[TypeNameForInitClass cloc]; clocNamespace=None} let CompLocForImplicitMainMethod cloc = {cloc with clocEncl=[TypeNameForImplicitMainMethod cloc]; clocNamespace=None} let CompLocForPrivateImplementationDetails cloc = {cloc with clocEncl=[TypeNameForPrivateImplementationDetails cloc]; clocNamespace=None} let rec TypeRefForCompLoc cloc = match cloc.clocEncl with | [] -> mkILTyRef(cloc.clocScope,TypeNameForPrivateImplementationDetails cloc) | [h] -> let tyname = mkTopName cloc.clocNamespace h mkILTyRef(cloc.clocScope,tyname) | _ -> let encl,n = List.frontAndBack cloc.clocEncl NestedTypeRefForCompLoc {cloc with clocEncl=encl} n let mkILTyForCompLoc cloc = mkILNonGenericBoxedTy (TypeRefForCompLoc cloc) let ComputeMemberAccess hidden = if hidden then ILMemberAccess.Assembly else ILMemberAccess.Public // Under --publicasinternal change types from Public to Private (internal for types) let ComputePublicTypeAccess() = ILTypeDefAccess.Public let ComputeTypeAccess (tref:ILTypeRef) hidden = match tref.Enclosing with | [] -> if hidden then ILTypeDefAccess.Private else ComputePublicTypeAccess() | _ -> ILTypeDefAccess.Nested (ComputeMemberAccess hidden) //-------------------------------------------------------------------------- // TypeReprEnv //-------------------------------------------------------------------------- /// Indicates how type parameters are mapped to IL type variables [] type TypeReprEnv(reprs : Map, count: int) = member tyenv.Item (tp:Typar, m:range) = try reprs.[tp.Stamp] with :? KeyNotFoundException -> errorR(InternalError("Undefined or unsolved type variable: " + showL(typarL tp),m)); // Random value for post-hoc diagnostic analysis on generated tree * uint16 666 member tyenv.AddOne (tp: Typar) = if IsNonErasedTypar tp then TypeReprEnv(reprs.Add (tp.Stamp, uint16 count), count + 1) else tyenv member tyenv.Add tps = (tyenv,tps) ||> List.fold (fun tyenv tp -> tyenv.AddOne tp) static member Empty = TypeReprEnv(count = 0, reprs = Map.empty) static member ForTypars tps = TypeReprEnv.Empty.Add tps static member ForTycon (tycon:Tycon) = TypeReprEnv.ForTypars (tycon.TyparsNoRange) static member ForTyconRef (tycon:TyconRef) = TypeReprEnv.ForTycon tycon.Deref //-------------------------------------------------------------------------- // Generate type references //-------------------------------------------------------------------------- let GenTyconRef (tcref:TyconRef) = assert(not tcref.IsTypeAbbrev); tcref.CompiledRepresentation type VoidNotOK = VoidNotOK | VoidOK #if DEBUG let voidCheck m g permits ty = if permits=VoidNotOK && isVoidTy g ty then error(InternalError("System.Void unexpectedly detected in IL code generation. This should not occur.",m)) #endif // When generating parameter and return types generate precise .NET IL pointer types // These can't be generated for generic instantiations, since .NET generics doesn't // permit this. But for 'naked' values (locals, parameters, return values etc.) machine // integer values and native pointer values are compatible (though the code is unverifiable). type PtrsOK = | PtrTypesOK | PtrTypesNotOK let rec GenTypeArgAux amap m g tyenv tyarg = GenTypeAux amap m g tyenv VoidNotOK PtrTypesNotOK tyarg and GenTypeArgsAux amap m g tyenv tyargs = List.map (GenTypeArgAux amap m g tyenv) (DropErasedTyargs tyargs) and GenTyAppAux amap m g tyenv repr tinst = match repr with | CompiledTypeRepr.ILAsmOpen ty -> let ilTypeInst = GenTypeArgsAux amap m g tyenv tinst let ty = IL.instILType (ILList.ofList ilTypeInst) ty ty | CompiledTypeRepr.ILAsmNamed (tref, boxity, ilTypeOpt) -> match ilTypeOpt with | None -> let ilTypeInst = GenTypeArgsAux amap m g tyenv tinst mkILTy boxity (mkILTySpec (tref,ilTypeInst)) | Some ilType -> ilType // monomorphic types include a cached ilType to avoid reallocation of an ILType node and GenNamedTyAppAux (amap:Import.ImportMap) m g tyenv ptrsOK tcref tinst = let tinst = DropErasedTyargs tinst // See above note on ptrsOK if ptrsOK = PtrTypesOK && tyconRefEq g tcref g.nativeptr_tcr && (freeInTypes CollectTypars tinst).FreeTypars.IsEmpty then GenNamedTyAppAux amap m g tyenv ptrsOK g.ilsigptr_tcr tinst else #if EXTENSIONTYPING match tcref.TypeReprInfo with // Generate the base type, because that is always the representation of the erased type, unless the assembly is being injected | TProvidedTypeExtensionPoint info when info.IsErased -> GenTypeAux amap m g tyenv VoidNotOK ptrsOK (info.BaseTypeForErased (m,g.obj_ty)) | _ -> #endif GenTyAppAux amap m g tyenv (GenTyconRef tcref) tinst and GenTypeAux amap m g (tyenv: TypeReprEnv) voidOK ptrsOK ty = #if DEBUG voidCheck m g voidOK ty; #else ignore voidOK #endif match stripTyEqnsAndMeasureEqns g ty with | TType_app (tcref, tinst) -> GenNamedTyAppAux amap m g tyenv ptrsOK tcref tinst | TType_tuple args -> GenTypeAux amap m g tyenv VoidNotOK ptrsOK (mkCompiledTupleTy g args) | TType_fun (dty, returnTy) -> EraseIlxFuncs.mkILFuncTy g.ilxPubCloEnv (GenTypeArgAux amap m g tyenv dty) (GenTypeArgAux amap m g tyenv returnTy) | TType_ucase (ucref, args) -> let cuspec,idx = GenUnionCaseSpec amap m g tyenv ucref args EraseIlxUnions.GetILTypeForAlternative cuspec idx | TType_forall (tps, tau) -> let tps = DropErasedTypars tps if tps.IsEmpty then GenTypeAux amap m g tyenv VoidNotOK ptrsOK tau else EraseIlxFuncs.mkILTyFuncTy g.ilxPubCloEnv | TType_var tp -> mkILTyvarTy tyenv.[tp,m] | TType_measure _ -> g.ilg.typ_int32 //-------------------------------------------------------------------------- // Generate ILX references to closures, classunions etc. given a tyenv //-------------------------------------------------------------------------- and GenUnionCaseRef amap m g tyenv i (fspecs:RecdField array) = fspecs |> Array.mapi (fun j fspec -> let ilFieldDef = IL.mkILInstanceField(fspec.Name,GenType amap m g tyenv fspec.FormalType, None, ILMemberAccess.Public) IlxUnionField { ilFieldDef with // These properties on the "field" of an alternative end up going on a property generated by cu_erase.fs CustomAttrs = mkILCustomAttrs [(mkCompilationMappingAttrWithVariantNumAndSeqNum g (int SourceConstructFlags.Field) i j )] } ) and GenUnionRef amap m g (tcref: TyconRef) = let tycon = tcref.Deref assert(not tycon.IsTypeAbbrev); match tycon.UnionTypeInfo with | None -> failwith "GenUnionRef m" | Some funion -> cached funion.CompiledRepresentation (fun () -> let tyenvinner = TypeReprEnv.ForTycon tycon match tcref.CompiledRepresentation with | CompiledTypeRepr.ILAsmOpen _ -> failwith "GenUnionRef m: unexpected ASM tyrep" | CompiledTypeRepr.ILAsmNamed (tref,_,_) -> let alternatives = tycon.UnionCasesArray |> Array.mapi (fun i cspec -> { altName=cspec.CompiledName; altCustomAttrs=emptyILCustomAttrs; altFields=GenUnionCaseRef amap m g tyenvinner i cspec.RecdFieldsArray }) let nullPermitted = IsUnionTypeWithNullAsTrueValue g tycon let hasHelpers = ComputeUnionHasHelpers g tcref IlxUnionRef(tref,alternatives,nullPermitted,hasHelpers)) and ComputeUnionHasHelpers g (tcref : TyconRef) = if tyconRefEq g tcref g.unit_tcr_canon then NoHelpers elif tyconRefEq g tcref g.list_tcr_canon then SpecialFSharpListHelpers elif tyconRefEq g tcref g.option_tcr_canon then SpecialFSharpOptionHelpers else match TryFindFSharpAttribute g g.attrib_DefaultAugmentationAttribute tcref.Attribs with | Some(Attrib(_,_,[ AttribBoolArg (b) ],_,_,_,_)) -> if b then AllHelpers else NoHelpers | Some (Attrib(_,_,_,_,_,_,m)) -> errorR(Error(FSComp.SR.ilDefaultAugmentationAttributeCouldNotBeDecoded(),m)); AllHelpers | _ -> AllHelpers (* not hiddenRepr *) and GenUnionSpec amap m g tyenv tcref tyargs = let curef = GenUnionRef amap m g tcref let tinst = GenTypeArgs amap m g tyenv tyargs IlxUnionSpec(curef,mkILGenericArgs tinst) and GenUnionCaseSpec amap m g tyenv (ucref:UnionCaseRef) tyargs = let cuspec = GenUnionSpec amap m g tyenv ucref.TyconRef tyargs cuspec, ucref.Index and GenType amap m g tyenv ty = GenTypeAux amap m g tyenv VoidNotOK PtrTypesNotOK ty and GenTypes amap m g tyenv tys = List.map (GenType amap m g tyenv) tys and GenTypePermitVoid amap m g tyenv ty = (GenTypeAux amap m g tyenv VoidOK PtrTypesNotOK ty) and GenTypesPermitVoid amap m g tyenv tys = List.map (GenTypePermitVoid amap m g tyenv) tys and GenTyApp amap m g tyenv repr tyargs = GenTyAppAux amap m g tyenv repr tyargs and GenNamedTyApp amap m g tyenv tcref tinst = GenNamedTyAppAux amap m g tyenv PtrTypesNotOK tcref tinst /// IL void types are only generated for return types and GenReturnType amap m g tyenv returnTyOpt = match returnTyOpt with | None -> ILType.Void | Some returnTy -> GenTypeAux amap m g tyenv VoidNotOK(*1*) PtrTypesOK returnTy (*1: generate void from unit, but not accept void *) and GenParamType amap m g tyenv ty = ty |> GenTypeAux amap m g tyenv VoidNotOK PtrTypesOK and GenParamTypes amap m g tyenv tys = tys |> List.map (GenTypeAux amap m g tyenv VoidNotOK PtrTypesOK) and GenTypeArgs amap m g tyenv tyargs = GenTypeArgsAux amap m g tyenv tyargs let GenericParamHasConstraint (gp: ILGenericParameterDef) = gp.Constraints.Length <> 0 || gp.Variance <> NonVariant || gp.HasReferenceTypeConstraint || gp.HasNotNullableValueTypeConstraint || gp.HasDefaultConstructorConstraint // Static fields generally go in a private InitializationCodeAndBackingFields section. This is to ensure all static // fields are initialized only in their class constructors (we generate one primary // cctor for each file to ensure initialization coherence across the file, regardless // of how many modules are in the file). This means F# passes an extra check applied by SQL Server when it // verifies stored procedures: SQL Server checks that all 'initionly' static fields are only initialized from // their own class constructor. // // However, mutable static fields must be accessible across compilation units. This means we place them in their "natural" location // which may be in a nested module etc. This means mutable static fields can't be used in code to be loaded by SQL Server. // // Computes the location where the static field for a value lives. // - Literals go in their type/module. // - For interactive code, we always place fields in their type/module with an accurate name let GenFieldSpecForStaticField (isInteractive, g, ilContainerTy, vspec:Val, nm, m, cloc, ilTy) = if isInteractive || HasFSharpAttribute g g.attrib_LiteralAttribute vspec.Attribs then let fieldName = vspec.CompiledName let fieldName = if isInteractive then CompilerGeneratedName fieldName else fieldName mkILFieldSpecInTy (ilContainerTy, fieldName, ilTy) else let fieldName = ilxgenGlobalNng.FreshCompilerGeneratedName (nm,m) let ilFieldContainerTy = mkILTyForCompLoc (CompLocForInitClass cloc) mkILFieldSpecInTy (ilFieldContainerTy, fieldName, ilTy) let GenRecdFieldRef m cenv tyenv (rfref:RecdFieldRef) tyargs = let tyenvinner = TypeReprEnv.ForTycon rfref.Tycon mkILFieldSpecInTy(GenTyApp cenv.amap m cenv.g tyenv rfref.TyconRef.CompiledRepresentation tyargs, ComputeFieldName rfref.Tycon rfref.RecdField, GenType cenv.amap m cenv.g tyenvinner rfref.RecdField.FormalType) let GenExnType amap m g tyenv (ecref:TyconRef) = GenTyApp amap m g tyenv ecref.CompiledRepresentation [] //-------------------------------------------------------------------------- // Closure summaries //-------------------------------------------------------------------------- type ArityInfo = int list [] type IlxClosureInfo = { cloExpr: Expr; cloName: string; cloArityInfo: ArityInfo; cloILFormalRetTy: ILType; /// An immutable array of free variable descriptions for the closure cloILFreeVars: IlxClosureFreeVar[]; cloSpec: IlxClosureSpec; cloAttribs: Attribs; cloILGenericParams: IL.ILGenericParameterDefs; cloFreeVars: Val list; (* nb. the freevars we actually close over *) ilCloLambdas: IlxClosureLambdas; (* local type func support *) /// The free type parameters occuring in the type of the closure (and not just its body) /// This is used for local type functions, whose contract class must use these types /// type Contract<'fv> = /// abstract DirectInvoke : ty['fv] /// type Implementation<'fv,'fv2> : Contract<'fv> = /// override DirectInvoke : ty['fv] = expr['fv,'fv2] /// /// At the callsite we generate /// unbox ty['fv] /// callvirt clo.DirectInvoke localTypeFuncILGenericArgs: ILType list; localTypeFuncContractFreeTypars: Typar list; localTypeFuncDirectILGenericParams: IL.ILGenericParameterDefs localTypeFuncInternalFreeTypars: Typar list;} //-------------------------------------------------------------------------- // Representation of term declarations = Environments for compiling expressions. //-------------------------------------------------------------------------- [] type ValStorage = /// Indicates the value is always null | Null /// Indicates the value is not stored, and no value is created | Unrealized /// Indicates the value is stored in a static field. | StaticField of ILFieldSpec * ValRef * (*hasLiteralAttr:*)bool * ILType * string * ILType * ILMethodRef * ILMethodRef * OptionalShadowLocal /// Indicates the value is "stored" as a property that recomputes it each time it is referenced. Used for simple constants that do not cause initialization triggers | StaticProperty of ILMethodSpec * OptionalShadowLocal /// Indicates the value is "stored" as a IL static method (in a "main" class for a F# /// compilation unit, or as a member) according to its inferred or specified arity. | Method of ValReprInfo * ValRef * ILMethodSpec * Range.range * ArgReprInfo list * ArgReprInfo /// Indicates the value is stored at the given position in the closure environment accessed via "ldarg 0" | Env of ILType * int * ILFieldSpec * NamedLocalIlxClosureInfo ref option /// Indicates that the value is an argument of a method being generated | Arg of int /// Indicates that the value is stored in local of the method being generated. NamedLocalIlxClosureInfo is normally empty. /// It is non-empty for 'local type functions', see comments on definition of NamedLocalIlxClosureInfo. | Local of int * NamedLocalIlxClosureInfo ref option and OptionalShadowLocal = | NoShadowLocal | ShadowLocal of ValStorage /// The representation of a NamedLocalClosure is based on a cloinfo. However we can't generate a cloinfo until we've /// decided the representations of other items in the recursive set. Hence we use two phases to decide representations in /// a recursive set. Yuck. and NamedLocalIlxClosureInfo = | NamedLocalIlxClosureInfoGenerator of (IlxGenEnv -> IlxClosureInfo) | NamedLocalIlxClosureInfoGenerated of IlxClosureInfo and ModuleStorage = { Vals: Lazy> ; SubModules: Lazy>; } /// BranchCallItems are those where a call to the value can be implemented as /// a branch. At the moment these are only used for generating branch calls back to /// the entry label of the method currently being generated. and BranchCallItem = | BranchCallClosure of ArityInfo | BranchCallMethod of // Argument counts for compiled form of F# method or value ArityInfo * // Arg infos for compiled form of F# method or value (TType * ArgReprInfo) list list * // Typars for F# method or value Tast.Typars * // Typars for F# method or value int * // num obj args int and Mark = | Mark of ILCodeLabel (* places we can branch to *) member x.CodeLabel = (let (Mark(lab)) = x in lab) and IlxGenEnv = { tyenv: TypeReprEnv; someTypeInThisAssembly: ILType; isFinalFile: bool; /// Where to place the stuff we're currently generating cloc: CompileLocation; /// Hiding information down the signature chain, used to compute what's public to the assembly sigToImplRemapInfo: (Remap * SignatureHidingInfo) list; /// All values in scope valsInScope: ValMap>; /// For optimizing direct tail recusion to a loop - mark says where to branch to. Length is 0 or 1. /// REVIEW: generalize to arbitrary nested local loops?? innerVals: (ValRef * (BranchCallItem * Mark)) list; /// Full list of enclosing bound values. First non-compiler-generated element is used to help give nice names for closures and other expressions. letBoundVars: ValRef list; /// The set of IL local variable indexes currently in use by lexically scoped variables, to allow reuse on different branches. /// Really an integer set. liveLocals: IntMap; /// Are we under the scope of a try, catch or finally? If so we can't tailcall. SEH = structured exception handling withinSEH: bool } let ReplaceTyenv tyenv (eenv: IlxGenEnv) = {eenv with tyenv = tyenv } let EnvForTypars tps eenv = {eenv with tyenv = TypeReprEnv.ForTypars tps } let AddTyparsToEnv typars (eenv: IlxGenEnv) = {eenv with tyenv = eenv.tyenv.Add typars} let AddSignatureRemapInfo _msg (rpi, mhi) eenv = { eenv with sigToImplRemapInfo = (mkRepackageRemapping rpi,mhi) :: eenv.sigToImplRemapInfo } //-------------------------------------------------------------------------- // Print eenv //-------------------------------------------------------------------------- let OutputStorage (pps: TextWriter) s = match s with | StaticField _ -> pps.Write "(top)" | StaticProperty _ -> pps.Write "(top)" | Method _ -> pps.Write "(top)" | Local _ -> pps.Write "(local)" | Arg _ -> pps.Write "(arg)" | Env _ -> pps.Write "(env)" | Null -> pps.Write "(null)" | Unrealized -> pps.Write "(no real value required)" //-------------------------------------------------------------------------- // Augment eenv with values //-------------------------------------------------------------------------- let AddStorageForVal g (v,s) eenv = let eenv = { eenv with valsInScope = eenv.valsInScope.Add v s } // If we're compiling fslib then also bind the value as a non-local path to // allow us to resolve the compiler-non-local-references that arise from env.fs // // Do this by generating a fake "looking from the outside in" non-local value reference for // v, dereferencing it to find the corresponding signature Val, and adding an entry for the signature val. // // A similar code path exists in ilxgen.fs for the tables of "optimization data" for values if g.compilingFslib then // Passing an empty remap is sufficient for FSharp.Core.dll because it turns out the remapped type signature can // still be resolved. match tryRescopeVal g.fslibCcu Remap.Empty v with | None -> eenv | Some vref -> match vref.TryDeref with | None -> //let msg = sprintf "could not dereference external value reference to something in FSharp.Core.dll during code generation, v.MangledName = '%s', v.Range = %s" v.MangledName (stringOfRange v.Range) //System.Diagnostics.Debug.Assert(false, msg) eenv | Some gv -> { eenv with valsInScope = eenv.valsInScope.Add gv s } else eenv let AddStorageForLocalVals g vals eenv = List.foldBack (fun (v,s) acc -> AddStorageForVal g (v,notlazy s) acc) vals eenv //-------------------------------------------------------------------------- // Lookup eenv //-------------------------------------------------------------------------- open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library let StorageForVal m v eenv = let v = try eenv.valsInScope.[v] with :? KeyNotFoundException -> (* REVIEW: The binary will probably still be written under these error conditions. * That is useful when debugging the compiler, but not in Retail mode. * Fail with an internal error if Retail? *) (* // Diagnostics for bug://4046 * let vals = eenv.valsInScope.Contents |> Zmap.toList * vals |> List.iter (printf "v,s = %A\n") *) assert false errorR(Error(FSComp.SR.ilUndefinedValue(showL(vspecAtBindL v)),m)); notlazy (Arg 668(* random value for post-hoc diagnostic analysis on generated tree *) ) v.Force() let StorageForValRef m (v: ValRef) eenv = StorageForVal m v.Deref eenv //-------------------------------------------------------------------------- // Imported modules and the environment // // How a top level value is represented depends on its type. If it's a // function or is polymorphic, then it gets represented as a // method (possibly and instance method). Otherwise it gets represented as a // static field. //-------------------------------------------------------------------------- let IsValRefIsDllImport g (vref:ValRef) = vref.Attribs |> HasFSharpAttribute g g.attrib_DllImportAttribute let GetMethodSpecForMemberVal amap g memberInfo (vref:ValRef) = let m = vref.Range let tps,curriedArgInfos,returnTy,retInfo = assert(vref.ValReprInfo.IsSome); GetTopValTypeInCompiledForm g (Option.get vref.ValReprInfo) vref.Type m let tyenvUnderTypars = TypeReprEnv.ForTypars tps let flatArgInfos = List.concat curriedArgInfos let isCtor = (memberInfo.MemberFlags.MemberKind = MemberKind.Constructor) let cctor = (memberInfo.MemberFlags.MemberKind = MemberKind.ClassConstructor) let parentTcref = vref.TopValActualParent let parentTypars = parentTcref.TyparsNoRange let numParentTypars = parentTypars.Length if tps.Length < numParentTypars then error(InternalError("CodeGen check: type checking did not ensure that this method is sufficiently generic", m)); let ctps,mtps = List.chop numParentTypars tps let isCompiledAsInstance = ValRefIsCompiledAsInstanceMember g vref let ilActualRetTy = let ilRetTy = GenReturnType amap m g tyenvUnderTypars returnTy if isCtor || cctor then ILType.Void else ilRetTy let ilTy = GenType amap m g tyenvUnderTypars (mkAppTy parentTcref (List.map mkTyparTy ctps)) if isCompiledAsInstance || isCtor then // Find the 'this' argument type if any let thisTy,flatArgInfos = if isCtor then (GetFSharpViewOfReturnType g returnTy),flatArgInfos else match flatArgInfos with | [] -> error(InternalError("This instance method '" + vref.LogicalName + "' has no arguments", m)) | (h,_):: t -> h,t let thisTy = if isByrefTy g thisTy then destByrefTy g thisTy else thisTy let thisArgTys = argsOfAppTy g thisTy if ctps.Length <> thisArgTys.Length then warning(InternalError(sprintf "CodeGen check: type checking did not quantify the correct number of type variables for this method, #parentTypars = %d, #ctps = %d, #mtps = %d, #thisArgTys = %d" numParentTypars ctps.Length mtps.Length thisArgTys.Length,m)) else List.iter2 (fun gtp ty2 -> if not (typeEquiv g (mkTyparTy gtp) ty2) then warning(InternalError("CodeGen check: type checking did not quantify the correct type variables for this method: generalization list contained " + gtp.Name + "#" + string gtp.Stamp + " and list from 'this' pointer contained " + (showL(typeL ty2)), m))) ctps thisArgTys; let methodArgTys,paramInfos = List.unzip flatArgInfos let ilMethodArgTys = GenParamTypes amap m g tyenvUnderTypars methodArgTys let ilMethodInst = GenTypeArgs amap m g tyenvUnderTypars (List.map mkTyparTy mtps) let mspec = mkILInstanceMethSpecInTy (ilTy,vref.CompiledName,ilMethodArgTys,ilActualRetTy,ilMethodInst) mspec,ctps,mtps,paramInfos,retInfo else let methodArgTys,paramInfos = List.unzip flatArgInfos let ilMethodArgTys = GenParamTypes amap m g tyenvUnderTypars methodArgTys let ilMethodInst = GenTypeArgs amap m g tyenvUnderTypars (List.map mkTyparTy mtps) let mspec = mkILStaticMethSpecInTy (ilTy,vref.CompiledName,ilMethodArgTys,ilActualRetTy,ilMethodInst) mspec,ctps,mtps,paramInfos,retInfo // Generate the ILFieldSpec for a top-level value let ComputeFieldSpecForVal(optIntraAssemblyInfo:IlxGenIntraAssemblyInfo option, isInteractive, g, ilTyForProperty, vspec:Val, nm, m, cloc, ilTy, ilGetterMethRef) = assert vspec.IsCompiledAsTopLevel let generate() = GenFieldSpecForStaticField (isInteractive, g, ilTyForProperty, vspec, nm, m, cloc, ilTy) match optIntraAssemblyInfo with | None -> generate() | Some intraAssemblyInfo -> if vspec.IsMutable && vspec.IsCompiledAsTopLevel && isStructTy g vspec.Type then let ok, res = intraAssemblyInfo.StaticFieldInfo.TryGetValue ilGetterMethRef if ok then res else let res = generate() intraAssemblyInfo.StaticFieldInfo.[ilGetterMethRef] <- res res else generate() // This called via 2 routes. // (a) ComputeAndAddStorageForLocalTopVal // (b) ComputeStorageForNonLocalTopVal // /// This function decides the storage for the val. /// The decision is based on arityInfo. let ComputeStorageForTopVal (amap, g, optIntraAssemblyInfo:IlxGenIntraAssemblyInfo option, isInteractive, optShadowLocal, vref:ValRef, cloc) = if isUnitTy g vref.Type && not vref.IsMemberOrModuleBinding && not vref.IsMutable then Null else let topValInfo = match vref.ValReprInfo with | None -> error(InternalError("ComputeStorageForTopVal: no arity found for " + showL(valRefL vref),vref.Range)) | Some a -> a let m = vref.Range let nm = vref.CompiledName if vref.Deref.IsCompiledAsStaticPropertyWithoutField then let nm = "get_"+nm let tyenvUnderTypars = TypeReprEnv.ForTypars [] let ilRetTy = GenType amap m g tyenvUnderTypars vref.Type let typ = mkILTyForCompLoc cloc let mspec = mkILStaticMethSpecInTy (typ, nm, [], ilRetTy, []) StaticProperty (mspec, optShadowLocal) else // Determine when a static field is required. // // REVIEW: This call to GetTopValTypeInFSharpForm is only needed to determine if this is a (type) function or a value // We should just look at the arity match GetTopValTypeInFSharpForm g topValInfo vref.Type vref.Range with | [],[], returnTy,_ when not vref.IsMember -> // Mutable and literal static fields must have stable names and live in the "public" location // See notes on GenFieldSpecForStaticField above. let vspec = vref.Deref let ilTy = GenType amap m g TypeReprEnv.Empty returnTy (* TypeReprEnv.Empty ok: not a field in a generic class *) let ilTyForProperty = mkILTyForCompLoc cloc let attribs = vspec.Attribs let hasLiteralAttr = HasFSharpAttribute g g.attrib_LiteralAttribute attribs let ilTypeRefForProperty = ilTyForProperty.TypeRef let ilGetterMethRef = mkILMethRef (ilTypeRefForProperty, ILCallingConv.Static, "get_"+nm, 0, [], ilTy) let ilSetterMethRef = mkILMethRef (ilTypeRefForProperty, ILCallingConv.Static, "set_"+nm, 0, [ilTy], ILType.Void) let fspec = ComputeFieldSpecForVal(optIntraAssemblyInfo, isInteractive, g, ilTyForProperty, vspec, nm, m, cloc, ilTy, ilGetterMethRef) StaticField (fspec, vref, hasLiteralAttr, ilTyForProperty, nm, ilTy, ilGetterMethRef, ilSetterMethRef, optShadowLocal) | _ -> match vref.MemberInfo with | Some memberInfo when not vref.IsExtensionMember -> let mspec,_,_,paramInfos,retInfo = GetMethodSpecForMemberVal amap g memberInfo vref Method (topValInfo, vref, mspec, m, paramInfos, retInfo) | _ -> let (tps, curriedArgInfos, returnTy, retInfo) = GetTopValTypeInCompiledForm g topValInfo vref.Type m let tyenvUnderTypars = TypeReprEnv.ForTypars tps let (methodArgTys,paramInfos) = curriedArgInfos |> List.concat |> List.unzip let ilMethodArgTys = GenParamTypes amap m g tyenvUnderTypars methodArgTys let ilRetTy = GenReturnType amap m g tyenvUnderTypars returnTy let ilLocTy = mkILTyForCompLoc cloc let ilMethodInst = GenTypeArgs amap m g tyenvUnderTypars (List.map mkTyparTy tps) let mspec = mkILStaticMethSpecInTy (ilLocTy, nm, ilMethodArgTys, ilRetTy, ilMethodInst) Method (topValInfo, vref, mspec, m, paramInfos, retInfo) let ComputeAndAddStorageForLocalTopVal (amap, g, intraAssemblyFieldTable, isInteractive, optShadowLocal) cloc (v:Val) eenv = let storage = ComputeStorageForTopVal (amap, g, Some intraAssemblyFieldTable, isInteractive, optShadowLocal, mkLocalValRef v, cloc) AddStorageForVal g (v,notlazy storage) eenv let ComputeStorageForNonLocalTopVal amap g cloc modref (v:Val) = match v.ValReprInfo with | None -> error(InternalError("ComputeStorageForNonLocalTopVal, expected an arity for " + v.LogicalName,v.Range)) | Some _ -> ComputeStorageForTopVal (amap, g, None, false, NoShadowLocal, mkNestedValRef modref v, cloc) let rec ComputeStorageForNonLocalModuleOrNamespaceRef amap g cloc acc (modref:ModuleOrNamespaceRef) (modul:ModuleOrNamespace) = let acc = (acc, modul.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions) ||> List.fold (fun acc smodul -> ComputeStorageForNonLocalModuleOrNamespaceRef amap g (CompLocForSubModuleOrNamespace cloc smodul) acc (modref.MkNestedTyconRef smodul) smodul) let acc = (acc, modul.ModuleOrNamespaceType.AllValsAndMembers) ||> Seq.fold (fun acc v -> AddStorageForVal g (v, lazy (ComputeStorageForNonLocalTopVal amap g cloc modref v)) acc) acc let ComputeStorageForExternalCcu amap g eenv (ccu:CcuThunk) = if not ccu.IsFSharp then eenv else let cloc = CompLocForCcu ccu let eenv = List.foldBack (fun smodul acc -> let cloc = CompLocForSubModuleOrNamespace cloc smodul let modref = mkNonLocalCcuRootEntityRef ccu smodul ComputeStorageForNonLocalModuleOrNamespaceRef amap g cloc acc modref smodul) ccu.RootModulesAndNamespaces eenv let eenv = let eref = ERefNonLocalPreResolved ccu.Contents (mkNonLocalEntityRef ccu [| |]) (eenv, ccu.Contents.ModuleOrNamespaceType.AllValsAndMembers) ||> Seq.fold (fun acc v -> AddStorageForVal g (v, lazy (ComputeStorageForNonLocalTopVal amap g cloc eref v)) acc) eenv let rec AddBindingsForLocalModuleType allocVal cloc eenv (mty:ModuleOrNamespaceType) = let eenv = List.fold (fun eenv submodul -> AddBindingsForLocalModuleType allocVal (CompLocForSubModuleOrNamespace cloc submodul) eenv submodul.ModuleOrNamespaceType) eenv mty.ModuleAndNamespaceDefinitions let eenv = Seq.fold (fun eenv v -> allocVal cloc v eenv) eenv mty.AllValsAndMembers eenv let AddExternalCcusToIlxGenEnv amap g eenv ccus = List.fold (ComputeStorageForExternalCcu amap g) eenv ccus let AddBindingsForTycon allocVal (cloc:CompileLocation) (tycon:Tycon) eenv = let unrealizedSlots = if tycon.IsFSharpObjectModelTycon then tycon.FSharpObjectModelTypeInfo.fsobjmodel_vslots else [] (eenv,unrealizedSlots) ||> List.fold (fun eenv vref -> allocVal cloc vref.Deref eenv) let rec AddBindingsForModuleDefs allocVal (cloc:CompileLocation) eenv mdefs = List.fold (AddBindingsForModuleDef allocVal cloc) eenv mdefs and AddBindingsForModuleDef allocVal cloc eenv x = match x with | TMDefRec(tycons,vbinds,mbinds,_) -> let eenv = FlatList.foldBack (allocVal cloc) (valsOfBinds vbinds) eenv (* Virtual don't have 'let' bindings and must be added to the environment *) let eenv = List.foldBack (AddBindingsForTycon allocVal cloc) tycons eenv let eenv = List.foldBack (AddBindingsForSubModules allocVal cloc) mbinds eenv eenv | TMDefLet(bind,_) -> allocVal cloc bind.Var eenv | TMDefDo _ -> eenv | TMAbstract(ModuleOrNamespaceExprWithSig(mtyp,_,_)) -> AddBindingsForLocalModuleType allocVal cloc eenv mtyp | TMDefs(mdefs) -> AddBindingsForModuleDefs allocVal cloc eenv mdefs and AddBindingsForSubModules allocVal cloc (ModuleOrNamespaceBinding(mspec, mdef)) eenv = let cloc = if mspec.IsNamespace then cloc else CompLocForFixedModule cloc.clocQualifiedNameOfFile cloc.clocTopImplQualifiedName mspec AddBindingsForModuleDef allocVal cloc eenv mdef and AddBindingsForModuleTopVals _g allocVal _cloc eenv vs = FlatList.foldBack allocVal vs eenv // Put the partial results for a generated fragment (i.e. a part of a CCU generated by FSI) // into the stored results for the whole CCU. // isIncrementalFragment = true --> "typed input" // isIncrementalFragment = false --> "#load" let AddIncrementalLocalAssemblyFragmentToIlxGenEnv (amap:Import.ImportMap, isIncrementalFragment, g, ccu, fragName, intraAssemblyInfo, eenv, TAssembly impls) = let cloc = CompLocForFragment fragName ccu let allocVal = ComputeAndAddStorageForLocalTopVal (amap, g, intraAssemblyInfo, true, NoShadowLocal) (eenv, impls) ||> List.fold (fun eenv (TImplFile(qname,_,mexpr,_,_)) -> let cloc = { cloc with clocTopImplQualifiedName = qname.Text } if isIncrementalFragment then match mexpr with | ModuleOrNamespaceExprWithSig(_,mdef,_) -> AddBindingsForModuleDef allocVal cloc eenv mdef (* | ModuleOrNamespaceExprWithSig(mtyp,_,m) -> error(Error("don't expect inner defs to have a constraint",m)) *) else AddBindingsForLocalModuleType allocVal cloc eenv mexpr.Type) //-------------------------------------------------------------------------- // Generate debugging marks //-------------------------------------------------------------------------- let GenILSourceMarker g (m:range) = Some (ILSourceMarker.Create(document=g.memoize_file m.FileIndex, line=m.StartLine, /// NOTE: .NET && VS measure first column as column 1 column= m.StartColumn+1, endLine= m.EndLine, endColumn=m.EndColumn+1)) let GenPossibleILSourceMarker cenv m = if cenv.opts.generateDebugSymbols then GenILSourceMarker cenv.g m else None //-------------------------------------------------------------------------- // Helpers for merging property definitions //-------------------------------------------------------------------------- let HashRangeSorted (ht: IDictionary<_, (int * _)>) = [ for KeyValue(_k,v) in ht -> v ] |> List.sortBy fst |> List.map snd let MergeOptions m o1 o2 = match o1,o2 with | Some x, None | None, Some x -> Some x | None, None -> None | Some x, Some _ -> #if DEBUG // This warning fires on some code that also triggers this warning: // warning(Error("The implementation of a specified generic interface required a method implementation not fully supported by F# Interactive. In the unlikely event that the resulting class fails to load then compile the interface type into a statically-compiled DLL and reference it using '#r'",m)); // THe code is OK so we don't print this. errorR(InternalError("MergeOptions: two values given",m)); #else ignore m #endif Some x let MergePropertyPair m (pd: ILPropertyDef) pdef = {pd with GetMethod=MergeOptions m pd.GetMethod pdef.GetMethod; SetMethod=MergeOptions m pd.SetMethod pdef.SetMethod;} type PropKey = PropKey of string * ILTypes * ILThisConvention let AddPropertyDefToHash (m:range) (ht:Dictionary) (pdef: ILPropertyDef) = let nm = PropKey(pdef.Name, pdef.Args, pdef.CallingConv) if ht.ContainsKey nm then let idx,pd = ht.[nm] ht.[nm] <- (idx, MergePropertyPair m pd pdef) else ht.[nm] <- (ht.Count, pdef) /// Merge a whole group of properties all at once let MergePropertyDefs m ilPropertyDefs = let ht = new Dictionary<_,_>(3,HashIdentity.Structural) ilPropertyDefs |> List.iter (AddPropertyDefToHash m ht); HashRangeSorted ht //-------------------------------------------------------------------------- // Buffers for compiling modules. The entire assembly gets compiled via an AssemblyBuilder //-------------------------------------------------------------------------- /// Information collected imperatively for each type definition type TypeDefBuilder(tdef) = let gmethods = new ResizeArray(0) let gfields = new ResizeArray(0) let gproperties : Dictionary = new Dictionary<_,_>(3,HashIdentity.Structural) let gevents = new ResizeArray(0) let gnested = new TypeDefsBuilder() member b.Close() = { tdef with Methods = mkILMethods (tdef.Methods.AsList @ ResizeArray.toList gmethods); Fields = mkILFields (tdef.Fields.AsList @ ResizeArray.toList gfields); Properties = mkILProperties (tdef.Properties.AsList @ HashRangeSorted gproperties ); Events = mkILEvents (tdef.Events.AsList @ ResizeArray.toList gevents); NestedTypes = mkILTypeDefs (tdef.NestedTypes.AsList @ gnested.Close()) } member b.AddEventDef(edef) = gevents.Add edef member b.AddFieldDef(ilFieldDef) = gfields.Add ilFieldDef member b.AddMethodDef(ilMethodDef) = gmethods.Add ilMethodDef member b.NestedTypeDefs = gnested member b.GetCurrentFields() = gfields |> Seq.readonly /// Merge Get and Set property nodes, which we generate independently for F# code /// when we come across their corresponding methods. member b.AddOrMergePropertyDef(pdef,m) = AddPropertyDefToHash m gproperties pdef member b.PrependInstructionsToSpecificMethodDef(cond,instrs,tag) = match ResizeArray.tryFindIndex cond gmethods with | Some idx -> gmethods.[idx] <- prependInstrsToMethod instrs gmethods.[idx] | None -> gmethods.Add(mkILClassCtor (mkMethodBody (false,emptyILLocals,1,nonBranchingInstrsToCode instrs,tag))) and TypeDefsBuilder() = let tdefs : Internal.Utilities.Collections.HashMultiMap = HashMultiMap(0, HashIdentity.Structural) let mutable countDown = System.Int32.MaxValue member b.Close() = //The order we emit type definitions is not deterministic since it is using the reverse of a range from a hash table. We should use an approximation of source order. // Ideally it shouldn't matter which order we use. // However, for some tests FSI generated code appears sensitive to the order, especially for nested types. [ for (b, eliminateIfEmpty) in HashRangeSorted tdefs do let tdef = b.Close() // Skip the type if it is empty if not eliminateIfEmpty || not tdef.NestedTypes.AsList.IsEmpty || not tdef.Fields.AsList.IsEmpty || not tdef.Events.AsList.IsEmpty || not tdef.Properties.AsList.IsEmpty || not tdef.Methods.AsList.IsEmpty then yield tdef ] member b.FindTypeDefBuilder(nm) = try tdefs.[nm] |> snd |> fst with :? KeyNotFoundException -> failwith ("FindTypeDefBuilder: " + nm + " not found") member b.FindNestedTypeDefsBuilder(path) = List.fold (fun (acc:TypeDefsBuilder) x -> acc.FindTypeDefBuilder(x).NestedTypeDefs) b path member b.FindNestedTypeDefBuilder(tref:ILTypeRef) = b.FindNestedTypeDefsBuilder(tref.Enclosing).FindTypeDefBuilder(tref.Name) member b.AddTypeDef(tdef:ILTypeDef, eliminateIfEmpty, addAtEnd) = let idx = if addAtEnd then (countDown <- countDown - 1; countDown) else tdefs.Count tdefs.Add (tdef.Name, (idx, (new TypeDefBuilder(tdef), eliminateIfEmpty))) /// Assembly generation buffers type AssemblyBuilder(cenv:cenv) as mgbuf = // The Abstract IL table of types let gtdefs= new TypeDefsBuilder() // The definitions of top level values, as quotations. let mutable reflectedDefinitions : System.Collections.Generic.Dictionary = System.Collections.Generic.Dictionary(HashIdentity.Reference) // A memoization table for generating value types for big constant arrays let vtgenerator= new MemoizationTable<(CompileLocation * int) , ILTypeSpec> ((fun (cloc,size) -> let name = CompilerGeneratedName ("T" + string(newUnique()) + "_" + string size + "Bytes") // Type names ending ...$T_37Bytes let vtdef = mkRawDataValueTypeDef cenv.g.ilg (name,size,0us) let vtref = NestedTypeRefForCompLoc cloc vtdef.Name let vtspec = mkILTySpec(vtref,[]) let vtdef = {vtdef with Access= ComputeTypeAccess vtref true} mgbuf.AddTypeDef(vtref, vtdef, false, true); vtspec), keyComparer=HashIdentity.Structural) let mutable explicitEntryPointInfo : ILTypeRef option = None /// static init fields on script modules. let mutable scriptInitFspecs : (ILFieldSpec * range) list = [] member mgbuf.AddScriptInitFieldSpec(fieldSpec,range) = scriptInitFspecs <- (fieldSpec,range) :: scriptInitFspecs /// This initializes the script in #load and fsc command-line order causing their /// sideeffects to be executed. member mgbuf.AddInitializeScriptsInOrderToEntryPoint() = // Get the entry point and intialized any scripts in order. match explicitEntryPointInfo with | Some tref -> let IntializeCompiledScript(fspec,m) = mgbuf.AddExplicitInitToSpecificMethodDef((fun md -> md.IsEntryPoint), tref, fspec, GenPossibleILSourceMarker cenv m, [], []) scriptInitFspecs |> List.iter IntializeCompiledScript | None -> () member mgbuf.GenerateRawDataValueType(cloc,size) = // Byte array literals require a ValueType of size the required number of bytes. // With fsi.exe, S.R.Emit TypeBuilder CreateType has restrictions when a ValueType VT is nested inside a type T, and T has a field of type VT. // To avoid this situation, these ValueTypes are generated under the private implementation rather than in the current cloc. [was bug 1532]. let cloc = CompLocForPrivateImplementationDetails cloc vtgenerator.Apply((cloc,size)) member mgbuf.AddTypeDef(tref:ILTypeRef, tdef, eliminateIfEmpty, addAtEnd) = gtdefs.FindNestedTypeDefsBuilder(tref.Enclosing).AddTypeDef(tdef, eliminateIfEmpty, addAtEnd) member mgbuf.GetCurrentFields(tref:ILTypeRef) = gtdefs.FindNestedTypeDefBuilder(tref).GetCurrentFields(); member mgbuf.AddReflectedDefinition(vspec : Tast.Val,expr) = // preserve order by storing index of item let n = reflectedDefinitions.Count reflectedDefinitions.Add(vspec, (vspec.CompiledName, n, expr)) member mgbuf.ReplaceNameOfReflectedDefinition(vspec, newName) = match reflectedDefinitions.TryGetValue vspec with | true, (name, n, expr) when name <> newName -> reflectedDefinitions.[vspec] <- (newName, n, expr) | _ -> () member mgbuf.AddMethodDef(tref:ILTypeRef,ilMethodDef) = gtdefs.FindNestedTypeDefBuilder(tref).AddMethodDef(ilMethodDef); if ilMethodDef.IsEntryPoint then explicitEntryPointInfo <- Some(tref) member mgbuf.AddExplicitInitToSpecificMethodDef(cond,tref,fspec,sourceOpt,feefee,seqpt) = // Authoring a .cctor with effects forces the cctor for the 'initialization' module by doing a dummy store & load of a field // Doing both a store and load keeps FxCop happier because it thinks the field is useful let instrs = [ yield! (if condition "NO_ADD_FEEFEE_TO_CCTORS" then [] elif condition "ADD_SEQPT_TO_CCTORS" then seqpt else feefee) // mark start of hidden code yield mkLdcInt32 0; yield mkNormalStsfld fspec; yield mkNormalLdsfld fspec; yield AI_pop] gtdefs.FindNestedTypeDefBuilder(tref).PrependInstructionsToSpecificMethodDef(cond,instrs,sourceOpt) member mgbuf.AddEventDef(tref,edef) = gtdefs.FindNestedTypeDefBuilder(tref).AddEventDef(edef) member mgbuf.AddFieldDef(tref,ilFieldDef) = gtdefs.FindNestedTypeDefBuilder(tref).AddFieldDef(ilFieldDef) member mgbuf.AddOrMergePropertyDef(tref,pdef,m) = gtdefs.FindNestedTypeDefBuilder(tref).AddOrMergePropertyDef(pdef,m) member mgbuf.Close() = // old implementation adds new element to the head of list so result was accumulated in reversed order let orderedReflectedDefinitions = [for (KeyValue(vspec, (name, n, expr))) in reflectedDefinitions -> n, ((name,vspec), expr)] |> List.sortBy (fst >> (~-)) // invert the result to get 'order-by-descending' behavior (items in list are 0..* so we don't need to worry about int.MinValue) |> List.map snd gtdefs.Close(), orderedReflectedDefinitions member mgbuf.cenv = cenv member mgbuf.GetExplicitEntryPointInfo() = explicitEntryPointInfo /// Record the types of the things on the evaluation stack. /// Used for the few times we have to flush the IL evaluation stack and to compute maxStack. type Pushes = ILType list type Pops = int let pop (i:int) : Pops = i let Push tys : Pushes = tys let Push0 = Push [] let FeeFee (cenv:cenv) = (if cenv.opts.testFlagEmitFeeFeeAs100001 then 100001 else 0x00feefee) let FeeFeeInstr (cenv:cenv) doc = I_seqpoint (ILSourceMarker.Create(document = doc, line = FeeFee cenv, column = 0, endLine = FeeFee cenv, endColumn = 0)) /// Buffers for IL code generation type CodeGenBuffer(m:range, mgbuf: AssemblyBuilder, methodName, alreadyUsedArgs:int, alreadyUsedLocals:int, zapFirstSeqPointToStart:bool) = let locals = new ResizeArray<((string * (Mark * Mark)) list * ILType)>(10) let codebuf = new ResizeArray(200) let exnSpecs = new ResizeArray(10) // Keep track of the current stack so we can spill stuff when we hit a "try" when some stuff // is on the stack. let mutable stack : ILType list = [] let mutable nstack=0 let mutable maxStack=0 let mutable seqpoint= None let codeLabelToPC : Dictionary = new Dictionary<_,_>(10) let codeLabelToCodeLabel : Dictionary = new Dictionary<_,_>(10) let rec computeCodeLabelToPC n lbl = if n = System.Int32.MaxValue then error(InternalError("recursive label graph",m)) if codeLabelToCodeLabel.ContainsKey lbl then computeCodeLabelToPC (n+1) codeLabelToCodeLabel.[lbl] else codeLabelToPC.[lbl] let mutable lastSeqPoint = None // Add a nop to make way for the first sequence point. There is always such a // sequence point even when zapFirstSeqPointToStart=false do if mgbuf.cenv.opts.generateDebugSymbols then codebuf.Add(AI_nop); member cgbuf.DoPushes (pushes: Pushes) = for ty in pushes do stack <- ty :: stack; nstack <- nstack + 1; maxStack <- Operators.max maxStack nstack member cgbuf.DoPops (n:Pops) = for i = 0 to n - 1 do match stack with | [] -> let msg = sprintf "pop on empty stack during code generation, methodName = %s, m = %s" methodName (stringOfRange m) System.Diagnostics.Debug.Assert(false, msg) warning(InternalError(msg,m)); | _ :: t -> stack <- t; nstack <- nstack - 1 member cgbuf.GetCurrentStack() = stack member cgbuf.AssertEmptyStack() = if nonNil stack then let msg = sprintf "stack flush didn't work, or extraneous expressions left on stack before stack restore, methodName = %s, stack = %+A, m = %s" methodName stack (stringOfRange m) System.Diagnostics.Debug.Assert(false, msg) warning(InternalError(msg,m)); () member cgbuf.EmitInstr(pops,pushes,i) = cgbuf.DoPops pops; cgbuf.DoPushes pushes; codebuf.Add i member cgbuf.EmitInstrs (pops,pushes,is) = cgbuf.DoPops pops; cgbuf.DoPushes pushes; is |> List.iter codebuf.Add member cgbuf.GetLastSequencePoint() = lastSeqPoint member private cgbuf.EnsureNopBetweenDebugPoints() = // Always add a nop between sequence points to help .NET get the stepping right // Don't do this after a FeeFee marker for hidden code if (codebuf.Count > 0 && (match codebuf.[codebuf.Count-1] with | I_seqpoint sm when sm.Line <> FeeFee mgbuf.cenv -> true | _ -> false)) then codebuf.Add(AI_nop); member cgbuf.EmitSeqPoint(src) = if mgbuf.cenv.opts.generateDebugSymbols then cgbuf.EnsureNopBetweenDebugPoints() let attr = GenILSourceMarker mgbuf.cenv.g src assert(isSome(attr)); let i = I_seqpoint (Option.get attr) codebuf.Add i; // Save the first sequence point away to snap it to the top of the method match seqpoint with | Some _ -> () | None -> seqpoint <- Some i // Save the last sequence point away so we can make a decision graph look consistent (i.e. reassert the sequence point at each target) lastSeqPoint <- Some src // For debug code, emit FeeFee breakpoints for hidden code, see http://blogs.msdn.com/jmstall/archive/2005/06/19/FeeFee_SequencePoints.aspx member cgbuf.EmitStartOfHiddenCode() = if mgbuf.cenv.opts.generateDebugSymbols && not mgbuf.cenv.opts.localOptimizationsAreOn then let doc = mgbuf.cenv.g.memoize_file m.FileIndex codebuf.Add(FeeFeeInstr mgbuf.cenv doc); member cgbuf.EmitExceptionClause(clause) = exnSpecs.Add clause member cgbuf.GenerateDelayMark(_nm) = let lab = IL.generateCodeLabel() Mark lab member cgbuf.SetCodeLabelToCodeLabel(lab1,lab2) = #if DEBUG if codeLabelToCodeLabel.ContainsKey(lab1) then let msg = sprintf "two values given for label %s, methodName = %s, m = %s" (formatCodeLabel lab1) methodName (stringOfRange m) System.Diagnostics.Debug.Assert(false, msg) warning(InternalError(msg,m)); #endif codeLabelToCodeLabel.[lab1] <- lab2 member cgbuf.SetCodeLabelToPC(lab,pc) = #if DEBUG if codeLabelToPC.ContainsKey(lab) then let msg = sprintf "two values given for label %s, methodName = %s, m = %s" (formatCodeLabel lab) methodName (stringOfRange m) System.Diagnostics.Debug.Assert(false, msg) warning(InternalError(msg,m)); #endif codeLabelToPC.[lab] <- pc member cgbuf.SetMark (mark1: Mark, mark2: Mark) = cgbuf.SetCodeLabelToCodeLabel(mark1.CodeLabel, mark2.CodeLabel) member cgbuf.SetMarkToHere (Mark lab) = cgbuf.SetCodeLabelToPC(lab,codebuf.Count) member cgbuf.SetStack(s) = stack <- s; nstack <- s.Length member cgbuf.Mark(s) = let res = cgbuf.GenerateDelayMark(s) cgbuf.SetMarkToHere(res); res member cgbuf.mgbuf = mgbuf member cgbuf.MethodName = methodName member cgbuf.PreallocatedArgCount = alreadyUsedArgs member cgbuf.AllocLocal(ranges,ty) = let j = locals.Count locals.Add((ranges,ty)); j member cgbuf.ReallocLocal(cond,ranges,ty) = let j = match ResizeArray.tryFindIndexi cond locals with | Some j -> let (prevRanges,_) = locals.[j] locals.[j] <- ((ranges@prevRanges),ty); j | None -> cgbuf.AllocLocal(ranges,ty) let j = j + alreadyUsedLocals j member cgbuf.Close() = let instrs = codebuf.ToArray() let instrs = // If we omitted ANY sequence points, then promote the first sequence point to be the first instruction in the // method. A bit ugly but .NET debuggers only honour "step into" if the sequence point is the first in the method. // match seqpoint with | Some(I_seqpoint sp as i) -> let i = if zapFirstSeqPointToStart then i else // This special dummy sequence point seems to be the magic to indicate that the head of the // method has no sequence point I_seqpoint (ILSourceMarker.Create(document = sp.Document, line = FeeFee mgbuf.cenv, column = 0, endLine = FeeFee mgbuf.cenv, endColumn = 0)) // Note we use physical equality '==' to compare the instruction objects. Nasty. instrs |> Array.mapi (fun idx i2 -> if idx = 0 then i else if i === i2 then AI_nop else i2) | _ -> instrs ResizeArray.toList locals , maxStack, (computeCodeLabelToPC 0), instrs, ResizeArray.toList exnSpecs, isSome seqpoint module CG = let EmitInstr (cgbuf:CodeGenBuffer) pops pushes i = cgbuf.EmitInstr(pops,pushes,i) let EmitInstrs (cgbuf:CodeGenBuffer) pops pushes is = cgbuf.EmitInstrs(pops,pushes,is) let EmitSeqPoint (cgbuf:CodeGenBuffer) src = cgbuf.EmitSeqPoint(src) let GenerateDelayMark (cgbuf:CodeGenBuffer) nm = cgbuf.GenerateDelayMark(nm) let SetMark (cgbuf:CodeGenBuffer) m1 m2 = cgbuf.SetMark(m1,m2) let SetMarkToHere (cgbuf:CodeGenBuffer) m1 = cgbuf.SetMarkToHere(m1) let SetStack (cgbuf:CodeGenBuffer) s = cgbuf.SetStack(s) let GenerateMark (cgbuf:CodeGenBuffer) s = cgbuf.Mark(s) open CG //-------------------------------------------------------------------------- // Compile constants //-------------------------------------------------------------------------- let GenString cenv cgbuf s = CG.EmitInstrs cgbuf (pop 0) (Push [cenv.g.ilg.typ_String]) [ I_ldstr s ] let GenConstArray cenv (cgbuf:CodeGenBuffer) eenv ilElementType (data:'a[]) (write : ByteBuffer -> 'a -> unit) = let buf = ByteBuffer.Create data.Length data |> Array.iter (write buf); let bytes = buf.Close() let ilArrayType = mkILArr1DTy ilElementType if data.Length = 0 then CG.EmitInstrs cgbuf (pop 0) (Push [ilArrayType]) [ mkLdcInt32 (0); I_newarr (ILArrayShape.SingleDimensional,ilElementType); ] else let vtspec = cgbuf.mgbuf.GenerateRawDataValueType(eenv.cloc,bytes.Length) let ilFieldName = CompilerGeneratedName ("field" + string(newUnique())) let fty = ILType.Value vtspec let ilFieldDef = mkILStaticField (ilFieldName,fty, None, Some bytes, ILMemberAccess.Assembly) let ilFieldDef = { ilFieldDef with CustomAttrs = if cenv.g.ilg.generateDebugBrowsableData then mkILCustomAttrs [ mkDebuggerBrowsableNeverAttribute cenv.g.ilg ] else emptyILCustomAttrs } let fspec = mkILFieldSpecInTy (mkILTyForCompLoc eenv.cloc,ilFieldName, fty) CountStaticFieldDef(); cgbuf.mgbuf.AddFieldDef(fspec.EnclosingTypeRef,ilFieldDef); CG.EmitInstrs cgbuf (pop 0) (Push [ ilArrayType; ilArrayType; cenv.g.ilg.typ_RuntimeFieldHandle ]) [ mkLdcInt32 data.Length; I_newarr (ILArrayShape.SingleDimensional,ilElementType); AI_dup; I_ldtoken (ILToken.ILField fspec); ] CG.EmitInstrs cgbuf (pop 2) Push0 [ mkNormalCall (mkInitializeArrayMethSpec cenv.g.ilg) ] //-------------------------------------------------------------------------- // We normally generate in the context of a "what to do next" continuation //-------------------------------------------------------------------------- type sequel = | EndFilter /// Exit a 'handler' block /// The integer says which local to save result in | LeaveHandler of (bool (* finally? *) * int * Mark) /// Branch to the given mark | Br of Mark | CmpThenBrOrContinue of Pops * ILInstr /// Continue and leave the value on the IL computation stack | Continue /// The value then do something else | DiscardThen of sequel /// Return from the method | Return /// End a scope of local variables. Used at end of 'let' and 'let rec' blocks to get tail recursive setting /// of end-of-scope marks | EndLocalScope of sequel * Mark /// Return from a method whose return type is void | ReturnVoid let discard = DiscardThen Continue let discardAndReturnVoid = DiscardThen ReturnVoid //------------------------------------------------------------------------- // This is the main code generation routine. It is used to generate // the bodies of methods in a couple of places //------------------------------------------------------------------------- let CodeGenThen mgbuf (zapFirstSeqPointToStart,entryPointInfo,methodName,eenv,alreadyUsedArgs,alreadyUsedLocals,codeGenFunction,m) = let cgbuf = new CodeGenBuffer(m,mgbuf,methodName,alreadyUsedArgs,alreadyUsedLocals,zapFirstSeqPointToStart) let start = CG.GenerateMark cgbuf "mstart" let innerVals = entryPointInfo |> List.map (fun (v,kind) -> (v,(kind,start))) (* Call the given code generator *) codeGenFunction cgbuf {eenv with withinSEH=false; liveLocals=IntMap.empty(); innerVals = innerVals}; let locals,maxStack,computeCodeLabelToPC,code,exnSpecs,hasSequencePoints = cgbuf.Close() let localDebugSpecs = locals |> List.mapi (fun i (nms,_) -> List.map (fun nm -> (i,nm)) nms) |> List.concat |> List.map (fun (i,(nm,(start,finish))) -> { locRange=(start.CodeLabel, finish.CodeLabel); locInfos= [{ LocalIndex=i; LocalName=nm }] }) (List.map (snd >> mkILLocal) locals, maxStack, computeCodeLabelToPC, code, exnSpecs, localDebugSpecs, hasSequencePoints) let CodeGenMethod cenv mgbuf (zapFirstSeqPointToStart,entryPointInfo,methodName,eenv,alreadyUsedArgs,alreadyUsedLocals,codeGenFunction,m) = (* Codegen the method. REVIEW: change this to generate the AbsIL code tree directly... *) let locals,maxStack,computeCodeLabelToPC,instrs,exns,localDebugSpecs,hasSequencePoints = CodeGenThen mgbuf (zapFirstSeqPointToStart,entryPointInfo,methodName,eenv,alreadyUsedArgs,alreadyUsedLocals,codeGenFunction,m) let dump() = instrs |> Array.iteri (fun i instr -> dprintf "%s: %d: %A\n" methodName i instr); let lab2pc lbl = try computeCodeLabelToPC lbl with _ -> errorR(Error(FSComp.SR.ilLabelNotFound(formatCodeLabel lbl),m)); dump(); 676767 let code = IL.buildILCode methodName lab2pc instrs exns localDebugSpecs let code = IL.checkILCode code // Attach a source range to the method. Only do this is it has some sequence points, because .NET 2.0/3.5 // ILDASM has issues if you emit symbols with a source range but without any sequence points let sourceRange = if hasSequencePoints then GenPossibleILSourceMarker cenv m else None // Build an Abstract IL method instrs, mkILMethodBody (true,mkILLocals locals,maxStack,code, sourceRange) let StartDelayedLocalScope nm cgbuf = let startScope = CG.GenerateDelayMark cgbuf ("start_" + nm) let endScope = CG.GenerateDelayMark cgbuf ("end_" + nm) startScope,endScope let StartLocalScope nm cgbuf = let startScope = CG.GenerateMark cgbuf ("start_" + nm) let endScope = CG.GenerateDelayMark cgbuf ("end_" + nm) startScope,endScope let LocalScope nm cgbuf (f : (Mark * Mark) -> 'a) : 'a = let _,endScope as scopeMarks = StartLocalScope nm cgbuf let res = f scopeMarks CG.SetMarkToHere cgbuf endScope; res let compileSequenceExpressions = true // try (System.Environment.GetEnvironmentVariable("COMPILED_SEQ") <> null) with _ -> false //------------------------------------------------------------------------- // Generate expressions //------------------------------------------------------------------------- let bindHasSeqPt = function (TBind(_,_,SequencePointAtBinding _)) -> true | _ -> false let bindIsInvisible = function (TBind(_,_,NoSequencePointAtInvisibleBinding _)) -> true | _ -> false let AlwaysSuppressSequencePoint sp expr = match sp with | SPAlways -> // These extra cases have historically always had their sequence point suppressed match expr with | Expr.Let (bind,_,_,_) when bindIsInvisible(bind) -> true | Expr.LetRec(binds,_,_,_) when (binds |> FlatList.exists bindHasSeqPt) || (binds |> FlatList.forall bindIsInvisible) -> true | Expr.Sequential _ | Expr.Match _ -> true | Expr.Op((TOp.Label _ | TOp.Goto _ | TOp.TryCatch _ | TOp.TryFinally _ | TOp.For _ | TOp.While _),_,_,_) -> true | _ -> false | SPSuppress -> true // This is the list of composite statement expressions where we're about to emit a sequence // point for sure. They get sequence points on their sub-expressions // // Determine if expression code generation certainly starts with a sequence point. An approximation used // to prevent the generation of duplicat sequence points for conditionals and pattern matching let rec WillGenerateSequencePoint sp expr = match sp with | SPAlways -> let definiteSequencePoint = match expr with | Expr.Let (bind,expr,_,_) -> bindHasSeqPt(bind) || (bind.Var.IsCompiledAsTopLevel && WillGenerateSequencePoint sp expr) | Expr.LetRec(binds,expr,_,_) -> (binds |> FlatList.forall (fun bind -> bind.Var.IsCompiledAsTopLevel)) && WillGenerateSequencePoint sp expr | Expr.Sequential (_, _, NormalSeq,spSeq,_) -> (match spSeq with | SequencePointsAtSeq -> true | SuppressSequencePointOnExprOfSequential -> true | SuppressSequencePointOnStmtOfSequential -> false) | Expr.Match (SequencePointAtBinding _,_,_,_,_,_) -> true | Expr.Op(( TOp.TryCatch (SequencePointAtTry _,_) | TOp.TryFinally (SequencePointAtTry _,_) | TOp.For (SequencePointAtForLoop _,_) | TOp.While (SequencePointAtWhileLoop _,_)),_,_,_) -> true | _ -> false definiteSequencePoint | SPSuppress -> false let DoesGenExprStartWithSequencePoint sp expr = WillGenerateSequencePoint sp expr || not (AlwaysSuppressSequencePoint sp expr) let rec GenExpr cenv (cgbuf:CodeGenBuffer) eenv sp expr sequel = let expr = stripExpr expr if not (WillGenerateSequencePoint sp expr) && not (AlwaysSuppressSequencePoint sp expr) then CG.EmitSeqPoint cgbuf expr.Range; match (if compileSequenceExpressions then Lowertop.LowerSeqExpr cenv.g cenv.amap expr else None) with | Some info -> GenSequenceExpr cenv cgbuf eenv info sequel | None -> match expr with | Expr.Const(c,m,ty) -> GenConstant cenv cgbuf eenv (c,m,ty) sequel | Expr.Match (spBind,exprm,tree,targets,m,ty) -> GenMatch cenv cgbuf eenv (spBind,exprm,tree,targets,m,ty) sequel | Expr.Sequential(e1,e2,dir,spSeq,m) -> GenSequential cenv cgbuf eenv sp (e1,e2,dir,spSeq,m) sequel | Expr.LetRec (binds,body,m,_) -> GenLetRec cenv cgbuf eenv (binds,body,m) sequel | Expr.Let (bind,body,_,_) -> // This case implemented here to get a guaranteed tailcall // Make sure we generate the sequence point outside the scope of the variable let startScope,endScope as scopeMarks = StartDelayedLocalScope "let" cgbuf let eenv = AllocStorageForBind cenv cgbuf scopeMarks eenv bind let spBind = GenSequencePointForBind cenv cgbuf eenv bind CG.SetMarkToHere cgbuf startScope; GenBindAfterSequencePoint cenv cgbuf eenv spBind bind; // Work out if we need a sequence point for the body. For any "user" binding then the body gets SPAlways. // For invisible compiler-generated bindings we just use "sp", unless its body is another invisible binding // For sticky bindings arising from inlining we suppress any immediate sequence point in the body let spBody = match bind.SequencePointInfo with | SequencePointAtBinding _ | NoSequencePointAtLetBinding | NoSequencePointAtDoBinding -> SPAlways | NoSequencePointAtInvisibleBinding -> sp | NoSequencePointAtStickyBinding -> SPSuppress // Generate the body GenExpr cenv cgbuf eenv spBody body (EndLocalScope(sequel,endScope)) | Expr.Lambda _ | Expr.TyLambda _ -> GenLambda cenv cgbuf eenv false None expr sequel | Expr.App(f,fty,tyargs,args,m) -> GenApp cenv cgbuf eenv (f,fty,tyargs,args,m) sequel | Expr.Val(v,_,m) -> GenGetVal cenv cgbuf eenv (v,m) sequel | Expr.Op(op,tyargs,args,m) -> begin match op,args,tyargs with | TOp.ExnConstr(c),_,_ -> GenAllocExn cenv cgbuf eenv (c,args,m) sequel | TOp.UnionCase(c),_,_ -> GenAllocUnionCase cenv cgbuf eenv (c,tyargs,args,m) sequel | TOp.Recd(isCtor,tycon),_,_ -> GenAllocRecd cenv cgbuf eenv isCtor (tycon,tyargs,args,m) sequel | TOp.TupleFieldGet n,[e],_ -> GenGetTupleField cenv cgbuf eenv (e,tyargs,n,m) sequel | TOp.ExnFieldGet(ecref,n),[e],_ -> GenGetExnField cenv cgbuf eenv (e,ecref,n,m) sequel | TOp.UnionCaseFieldGet(ucref,n),[e],_ -> GenGetUnionCaseField cenv cgbuf eenv (e,ucref,tyargs,n,m) sequel | TOp.UnionCaseTagGet ucref,[e],_ -> GenGetUnionCaseTag cenv cgbuf eenv (e,ucref,tyargs,m) sequel | TOp.UnionCaseProof ucref,[e],_ -> GenUnionCaseProof cenv cgbuf eenv (e,ucref,tyargs,m) sequel | TOp.ExnFieldSet(ecref,n),[e;e2],_ -> GenSetExnField cenv cgbuf eenv (e,ecref,n,e2,m) sequel | TOp.UnionCaseFieldSet(ucref,n),[e;e2],_ -> GenSetUnionCaseField cenv cgbuf eenv (e,ucref,tyargs,n,e2,m) sequel | TOp.ValFieldGet f,[e],_ -> GenGetRecdField cenv cgbuf eenv (e,f,tyargs,m) sequel | TOp.ValFieldGet f,[],_ -> GenGetStaticField cenv cgbuf eenv (f,tyargs,m) sequel | TOp.ValFieldGetAddr f,[e],_ -> GenGetRecdFieldAddr cenv cgbuf eenv (e,f,tyargs,m) sequel | TOp.ValFieldGetAddr f,[],_ -> GenGetStaticFieldAddr cenv cgbuf eenv (f,tyargs,m) sequel | TOp.ValFieldSet f,[e1;e2],_ -> GenSetRecdField cenv cgbuf eenv (e1,f,tyargs,e2,m) sequel | TOp.ValFieldSet f,[e2],_ -> GenSetStaticField cenv cgbuf eenv (f,tyargs,e2,m) sequel | TOp.Tuple,_,_ -> GenAllocTuple cenv cgbuf eenv (args,tyargs,m) sequel | TOp.ILAsm(code,returnTys),_,_ -> GenAsmCode cenv cgbuf eenv (code,tyargs,args,returnTys,m) sequel | TOp.While (sp,_),[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_)],[] -> GenWhileLoop cenv cgbuf eenv (sp,e1,e2,m) sequel | TOp.For(spStart,dir),[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_);Expr.Lambda(_,_,_,[v],e3,_,_)],[] -> GenForLoop cenv cgbuf eenv (spStart,v,e1,dir,e2,e3,m) sequel | TOp.TryFinally(spTry,spFinally),[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)],[resty] -> GenTryFinally cenv cgbuf eenv (e1,e2,m,resty,spTry,spFinally) sequel | TOp.TryCatch(spTry,spWith),[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[vf],ef,_,_);Expr.Lambda(_,_,_,[vh],eh,_,_)],[resty] -> GenTryCatch cenv cgbuf eenv (e1,vf,ef,vh,eh,m,resty,spTry,spWith) sequel | TOp.ILCall(virt,_,valu,newobj,valUseFlags,_,isDllImport,ilMethRef,enclArgTys,methArgTys,returnTys),args,[] -> GenILCall cenv cgbuf eenv (virt,valu,newobj,valUseFlags,isDllImport,ilMethRef,enclArgTys,methArgTys,args,returnTys,m) sequel | TOp.RefAddrGet,[e],[ty] -> GenGetAddrOfRefCellField cenv cgbuf eenv (e,ty,m) sequel | TOp.Coerce,[e],[tgty;srcty] -> GenCoerce cenv cgbuf eenv (e,tgty,m,srcty) sequel | TOp.Reraise,[],[rtnty] -> GenReraise cenv cgbuf eenv (rtnty,m) sequel | TOp.TraitCall(ss),args,[] -> GenTraitCall cenv cgbuf eenv (ss,args, m) expr sequel | TOp.LValueOp(LSet,v),[e],[] -> GenSetVal cenv cgbuf eenv (v,e,m) sequel | TOp.LValueOp(LByrefGet,v),[],[] -> GenGetByref cenv cgbuf eenv (v,m) sequel | TOp.LValueOp(LByrefSet,v),[e],[] -> GenSetByref cenv cgbuf eenv (v,e,m) sequel | TOp.LValueOp(LGetAddr,v),[],[] -> GenGetValAddr cenv cgbuf eenv (v,m) sequel | TOp.Array,elems,[elemTy] -> GenNewArray cenv cgbuf eenv (elems,elemTy,m) sequel | TOp.Bytes bytes,[],[] -> if cenv.opts.emitConstantArraysUsingStaticDataBlobs then GenConstArray cenv cgbuf eenv cenv.g.ilg.typ_uint8 bytes (fun buf b -> buf.EmitByte b); GenSequel cenv eenv.cloc cgbuf sequel else GenNewArraySimple cenv cgbuf eenv (List.ofArray (Array.map (mkByte cenv.g m) bytes),cenv.g.byte_ty,m) sequel | TOp.UInt16s arr,[],[] -> if cenv.opts.emitConstantArraysUsingStaticDataBlobs then GenConstArray cenv cgbuf eenv cenv.g.ilg.typ_uint16 arr (fun buf b -> buf.EmitUInt16 b); GenSequel cenv eenv.cloc cgbuf sequel else GenNewArraySimple cenv cgbuf eenv (List.ofArray (Array.map (mkUInt16 cenv.g m) arr),cenv.g.uint16_ty,m) sequel | TOp.Goto(label),_,_ -> if cgbuf.mgbuf.cenv.opts.generateDebugSymbols then cgbuf.EmitStartOfHiddenCode() CG.EmitInstr cgbuf (pop 0) Push0 AI_nop CG.EmitInstr cgbuf (pop 0) Push0 (I_br label); // NOTE: discard sequel | TOp.Return,[e],_ -> GenExpr cenv cgbuf eenv SPSuppress e Return // NOTE: discard sequel | TOp.Return,[],_ -> GenSequel cenv eenv.cloc cgbuf ReturnVoid // NOTE: discard sequel | TOp.Label(label),_,_ -> cgbuf.SetMarkToHere (Mark label) GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel | _ -> error(InternalError("Unexpected operator node expression",expr.Range)) end | Expr.StaticOptimization(constraints,e2,e3,m) -> GenStaticOptimization cenv cgbuf eenv (constraints,e2,e3,m) sequel | Expr.Obj(_,typ,_,_,[meth],[],m) when isDelegateTy cenv.g typ -> GenDelegateExpr cenv cgbuf eenv expr (meth,m) sequel | Expr.Obj(_,typ,basev,basecall,overrides,interfaceImpls,m) -> GenObjectExpr cenv cgbuf eenv expr (typ,basev,basecall,overrides,interfaceImpls,m) sequel | Expr.Quote(ast,conv,_,m,ty) -> GenQuotation cenv cgbuf eenv (ast,conv,m,ty) sequel | Expr.Link _ -> failwith "Unexpected reclink" | Expr.TyChoose (_,_,m) -> error(InternalError("Unexpected Expr.TyChoose",m)) and GenExprs cenv cgbuf eenv es = List.iter (fun e -> GenExpr cenv cgbuf eenv SPSuppress e Continue) es and CodeGenMethodForExpr cenv mgbuf (spReq,entryPointInfo,methodName,eenv,alreadyUsedArgs,alreadyUsedLocals,expr0,sequel0) = let zapFirstSeqPointToStart = (spReq = SPAlways) let _,code = CodeGenMethod cenv mgbuf (zapFirstSeqPointToStart,entryPointInfo,methodName,eenv,alreadyUsedArgs,alreadyUsedLocals, (fun cgbuf eenv -> GenExpr cenv cgbuf eenv spReq expr0 sequel0), expr0.Range) code //-------------------------------------------------------------------------- // Generate sequels //-------------------------------------------------------------------------- (* does the sequel discard its result, and if so what does it do next? *) and sequelAfterDiscard sequel = match sequel with | DiscardThen sequel -> Some(sequel) | EndLocalScope(sq,mark) -> sequelAfterDiscard sq |> Option.map (fun sq -> EndLocalScope(sq,mark)) | _ -> None and sequelIgnoringEndScopesAndDiscard sequel = let sequel = sequelIgnoreEndScopes sequel match sequelAfterDiscard sequel with | Some sq -> sq | None -> sequel and sequelIgnoreEndScopes sequel = match sequel with | EndLocalScope(sq,_) -> sequelIgnoreEndScopes sq | sq -> sq (* commit any 'EndLocalScope' nodes in the sequel and return the residue *) and GenSequelEndScopes cgbuf sequel = match sequel with | EndLocalScope(sq,m) -> CG.SetMarkToHere cgbuf m; GenSequelEndScopes cgbuf sq | _ -> () and StringOfSequel sequel = match sequel with | Continue -> "continue" | DiscardThen sequel -> "discard; " + StringOfSequel sequel | ReturnVoid -> "ReturnVoid" | CmpThenBrOrContinue _ -> "CmpThenBrOrContinue" | Return -> "Return" | EndLocalScope (sq,Mark k) -> "EndLocalScope(" + StringOfSequel sq + "," + formatCodeLabel k + ")" | Br (Mark x) -> sprintf "Br L%s" (formatCodeLabel x) | LeaveHandler _ -> "LeaveHandler" | EndFilter -> "EndFilter" and GenSequel cenv cloc cgbuf sequel = let sq = sequelIgnoreEndScopes sequel (match sq with | Continue -> () | DiscardThen sq -> CG.EmitInstr cgbuf (pop 1) Push0 AI_pop; GenSequel cenv cloc cgbuf sq | ReturnVoid -> CG.EmitInstr cgbuf (pop 0) Push0 I_ret | CmpThenBrOrContinue(pops,bri) -> CG.EmitInstr cgbuf pops Push0 bri | Return -> CG.EmitInstr cgbuf (pop 1) Push0 I_ret | EndLocalScope _ -> failwith "EndLocalScope unexpected" | Br x -> // Emit a NOP in debug code in case the branch instruction gets eliminated // because it is a "branch to next instruction". This prevents two unrelated sequence points // (the one before the branch and the one after) being coalesced together if cgbuf.mgbuf.cenv.opts.generateDebugSymbols then cgbuf.EmitStartOfHiddenCode() CG.EmitInstr cgbuf (pop 0) Push0 AI_nop CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) | LeaveHandler (isFinally, whereToSaveResult,x) -> if isFinally then CG.EmitInstr cgbuf (pop 1) Push0 AI_pop else EmitSetLocal cgbuf whereToSaveResult; CG.EmitInstr cgbuf (pop 0) Push0 (if isFinally then I_endfinally else I_leave(x.CodeLabel)) | EndFilter -> CG.EmitInstr cgbuf (pop 1) Push0 I_endfilter ); GenSequelEndScopes cgbuf sequel; //-------------------------------------------------------------------------- // Generate constants //-------------------------------------------------------------------------- and GenConstant cenv cgbuf eenv (c,m,ty) sequel = let ilTy = GenType cenv.amap m cenv.g eenv.tyenv ty // Check if we need to generate the value at all match sequelAfterDiscard sequel with | None -> match TryEliminateDesugaredConstants cenv.g m c with | Some e -> GenExpr cenv cgbuf eenv SPSuppress e Continue | None -> match c with | Const.Bool b -> CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_bool]) (mkLdcInt32 (if b then 1 else 0)) | Const.SByte i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 (int32 i)) | Const.Int16 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 (int32 i)) | Const.Int32 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 i) | Const.Int64 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (iLdcInt64 i) | Const.IntPtr i -> CG.EmitInstrs cgbuf (pop 0) (Push [ilTy]) [iLdcInt64 i; AI_conv DT_I ] | Const.Byte i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 (int32 i)) | Const.UInt16 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 (int32 i)) | Const.UInt32 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdcInt32 (int32 i)) | Const.UInt64 i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (iLdcInt64 (int64 i)) | Const.UIntPtr i -> CG.EmitInstrs cgbuf (pop 0) (Push [ilTy]) [iLdcInt64 (int64 i); AI_conv DT_U ] | Const.Double f -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (AI_ldc (DT_R8,ILConst.R8 f)) | Const.Single f -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (AI_ldc (DT_R4,ILConst.R4 f)) | Const.Char(c) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) ( mkLdcInt32 (int c)) | Const.String(s) -> GenString cenv cgbuf s | Const.Unit -> GenUnit cenv eenv m cgbuf | Const.Zero -> GenDefaultValue cenv cgbuf eenv (ty,m) | Const.Decimal _ -> failwith "unreachable" GenSequel cenv eenv.cloc cgbuf sequel | Some sq -> // Even if we didn't need to generate the value then maybe we still have to branch or return GenSequel cenv eenv.cloc cgbuf sq and GenUnitTy cenv eenv m = match cenv.ilUnitTy with | None -> let res = GenType cenv.amap m cenv.g eenv.tyenv cenv.g.unit_ty cenv.ilUnitTy <- Some res res | Some res -> res and GenUnit cenv eenv m cgbuf = CG.EmitInstr cgbuf (pop 0) (Push [GenUnitTy cenv eenv m]) AI_ldnull and GenUnitThenSequel cenv eenv m cloc cgbuf sequel = match sequelAfterDiscard sequel with | Some(sq) -> GenSequel cenv cloc cgbuf sq | None -> GenUnit cenv eenv m cgbuf; GenSequel cenv cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate simple data-related constructs //-------------------------------------------------------------------------- and GenAllocTuple cenv cgbuf eenv (args,argtys,m) sequel = let tcref, tys, args, newm = mkCompiledTuple cenv.g (argtys,args,m) let typ = GenNamedTyApp cenv.amap newm cenv.g eenv.tyenv tcref tys let ntyvars = if (tys.Length - 1) < goodTupleFields then (tys.Length - 1) else goodTupleFields let formalTyvars = [ for n in 0 .. ntyvars do yield mkILTyvarTy (uint16 n) ] GenExprs cenv cgbuf eenv args; // Generate a reference to the constructor CG.EmitInstr cgbuf (pop args.Length) (Push [typ]) (mkNormalNewobj (mkILCtorMethSpecForTy (typ,formalTyvars))); GenSequel cenv eenv.cloc cgbuf sequel and GenGetTupleField cenv cgbuf eenv (e,tys,n,m) sequel = let rec getCompiledTupleItem g (e,tys:TTypes,n,m) = let ar = tys.Length if ar <= 0 then failwith "getCompiledTupleItem" elif ar < maxTuple then let tcr' = mkCompiledTupleTyconRef g tys let typ = GenNamedTyApp cenv.amap m g eenv.tyenv tcr' tys mkGetTupleItemN g m n typ e tys.[n] else let tysA,tysB = List.splitAfter (goodTupleFields) tys let tyB = mkCompiledTupleTy g tysB let tys' = tysA@[tyB] let tcr' = mkCompiledTupleTyconRef g tys' let typ' = GenNamedTyApp cenv.amap m g eenv.tyenv tcr' tys' let n' = (min n goodTupleFields) let elast = mkGetTupleItemN g m n' typ' e tys'.[n'] if n < goodTupleFields then elast else getCompiledTupleItem g (elast,tysB,n-goodTupleFields,m) GenExpr cenv cgbuf eenv SPSuppress (getCompiledTupleItem cenv.g (e,tys,n,m)) sequel and GenAllocExn cenv cgbuf eenv (c,args,m) sequel = GenExprs cenv cgbuf eenv args; let typ = GenExnType cenv.amap m cenv.g eenv.tyenv c let flds = recdFieldsOfExnDefRef c let argtys = flds |> List.map (fun rfld -> GenType cenv.amap m cenv.g eenv.tyenv rfld.FormalType) let mspec = mkILCtorMethSpecForTy (typ, argtys) CG.EmitInstr cgbuf (pop args.Length) (Push [typ]) (mkNormalNewobj mspec) ; GenSequel cenv eenv.cloc cgbuf sequel and GenAllocUnionCase cenv cgbuf eenv (c,tyargs,args,m) sequel = GenExprs cenv cgbuf eenv args; let cuspec,idx = GenUnionCaseSpec cenv.amap m cenv.g eenv.tyenv c tyargs CG.EmitInstr cgbuf (pop args.Length) (Push [cuspec.EnclosingType]) (mkIlxInstr (EI_newdata (cuspec,idx))); GenSequel cenv eenv.cloc cgbuf sequel and GenAllocRecd cenv cgbuf eenv ctorInfo (tcref,argtys,args,m) sequel = let typ = GenNamedTyApp cenv.amap m cenv.g eenv.tyenv tcref argtys // Filter out fields with default initialization let relevantFields = tcref.AllInstanceFieldsAsList |> List.filter (fun f -> not f.IsZeroInit) |> List.filter (fun f -> not f.IsCompilerGenerated) match ctorInfo with | RecdExprIsObjInit -> (args,relevantFields) ||> List.iter2 (fun e f -> CG.EmitInstr cgbuf (pop 0) (Push [typ]) mkLdarg0; GenExpr cenv cgbuf eenv SPSuppress e Continue; GenFieldStore false cenv cgbuf eenv (mkNestedRecdFieldRef tcref f,argtys,m) discard) // Object construction doesn't generate a true value. // Object constructions will always just get thrown away so this is safe GenSequel cenv eenv.cloc cgbuf sequel | RecdExpr -> GenExprs cenv cgbuf eenv args; // generate a reference to the record constructor let tyenvinner = TypeReprEnv.ForTyconRef tcref CG.EmitInstr cgbuf (pop args.Length) (Push [typ]) (mkNormalNewobj (mkILCtorMethSpecForTy (typ,relevantFields |> List.map (fun f -> GenType cenv.amap m cenv.g tyenvinner f.FormalType) ))); GenSequel cenv eenv.cloc cgbuf sequel and GenNewArraySimple cenv cgbuf eenv (elems,elemTy,m) sequel = let ilElemTy = GenType cenv.amap m cenv.g eenv.tyenv elemTy let ilArrTy = mkILArr1DTy ilElemTy CG.EmitInstrs cgbuf (pop 0) (Push [ilArrTy]) [ (AI_ldc (DT_I4,ILConst.I4 (elems.Length))); I_newarr (ILArrayShape.SingleDimensional,ilElemTy) ]; elems |> List.iteri (fun i e -> CG.EmitInstrs cgbuf (pop 0) (Push [ilArrTy; cenv.g.ilg.typ_int32]) [ AI_dup; (AI_ldc (DT_I4,ILConst.I4 i)) ]; GenExpr cenv cgbuf eenv SPSuppress e Continue; CG.EmitInstr cgbuf (pop 3) Push0 (I_stelem_any (ILArrayShape.SingleDimensional,ilElemTy))) GenSequel cenv eenv.cloc cgbuf sequel and GenNewArray cenv cgbuf eenv (elems: Expr list,elemTy,m) sequel = // REVIEW: The restriction against enum types here has to do with Dev10/Dev11 bug 872799 // GenConstArray generates a call to RuntimeHelpers.InitializeArray. On CLR 2.0/x64 and CLR 4.0/x64/x86, // InitializeArray is a JIT intrinsic that will result in invalid runtime CodeGen when initializing an array // of enum types. Until bug 872799 is fixed, we'll need to generate arrays the "simple" way for enum types // Also note - C# never uses InitializeArray for enum types, so this change puts us on equal footing with them. if elems.Length <= 5 || not cenv.opts.emitConstantArraysUsingStaticDataBlobs || (isEnumTy cenv.g elemTy) then GenNewArraySimple cenv cgbuf eenv (elems,elemTy,m) sequel else // Try to emit a constant byte-blob array let elems' = Array.ofList elems let test,write = match elems'.[0] with | Expr.Const(Const.Bool _,_,_) -> (function Const.Bool _ -> true | _ -> false), (fun (buf: ByteBuffer) -> function Const.Bool b -> buf.EmitBoolAsByte b | _ -> failwith "unreachable") | Expr.Const(Const.Char _,_,_) -> (function Const.Char _ -> true | _ -> false), (fun buf -> function Const.Char b -> buf.EmitInt32AsUInt16 (int b) | _ -> failwith "unreachable") | Expr.Const(Const.Byte _,_,_) -> (function Const.Byte _ -> true | _ -> false), (fun buf -> function Const.Byte b -> buf.EmitByte b | _ -> failwith "unreachable") | Expr.Const(Const.UInt16 _,_,_) -> (function Const.UInt16 _ -> true | _ -> false), (fun buf -> function Const.UInt16 b -> buf.EmitUInt16 b | _ -> failwith "unreachable") | Expr.Const(Const.UInt32 _,_,_) -> (function Const.UInt32 _ -> true | _ -> false), (fun buf -> function Const.UInt32 b -> buf.EmitInt32 (int32 b) | _ -> failwith "unreachable") | Expr.Const(Const.UInt64 _,_,_) -> (function Const.UInt64 _ -> true | _ -> false), (fun buf -> function Const.UInt64 b -> buf.EmitInt64 (int64 b) | _ -> failwith "unreachable") | Expr.Const(Const.SByte _,_,_) -> (function Const.SByte _ -> true | _ -> false), (fun buf -> function Const.SByte b -> buf.EmitByte (byte b) | _ -> failwith "unreachable") | Expr.Const(Const.Int16 _,_,_) -> (function Const.Int16 _ -> true | _ -> false), (fun buf -> function Const.Int16 b -> buf.EmitUInt16 (uint16 b) | _ -> failwith "unreachable") | Expr.Const(Const.Int32 _,_,_) -> (function Const.Int32 _ -> true | _ -> false), (fun buf -> function Const.Int32 b -> buf.EmitInt32 b | _ -> failwith "unreachable") | Expr.Const(Const.Int64 _,_,_) -> (function Const.Int64 _ -> true | _ -> false), (fun buf -> function Const.Int64 b -> buf.EmitInt64 b | _ -> failwith "unreachable") | _ -> (function _ -> false), (fun _ _ -> failwith "unreachable") if elems' |> Array.forall (function Expr.Const(c,_,_) -> test c | _ -> false) then let ilElemTy = GenType cenv.amap m cenv.g eenv.tyenv elemTy GenConstArray cenv cgbuf eenv ilElemTy elems' (fun buf -> function Expr.Const(c,_,_) -> write buf c | _ -> failwith "unreachable"); GenSequel cenv eenv.cloc cgbuf sequel else GenNewArraySimple cenv cgbuf eenv (elems,elemTy,m) sequel and GenCoerce cenv cgbuf eenv (e,tgty,m,srcty) sequel = // Is this an upcast? if Typrelns.TypeDefinitelySubsumesTypeNoCoercion 0 cenv.g cenv.amap m tgty srcty && // Do an extra check - should not be needed Typrelns.TypeFeasiblySubsumesType 0 cenv.g cenv.amap m tgty Typrelns.NoCoerce srcty then begin // The .NET IL doesn't always support implict subsumption for interface types, e.g. at stack merge points // Hence be conservative here and always cast explicitly. if (isInterfaceTy cenv.g tgty) then ( GenExpr cenv cgbuf eenv SPSuppress e Continue; let ilToTy = GenType cenv.amap m cenv.g eenv.tyenv tgty CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [ I_unbox_any ilToTy; ]; GenSequel cenv eenv.cloc cgbuf sequel ) else ( GenExpr cenv cgbuf eenv SPSuppress e sequel; ) end else GenExpr cenv cgbuf eenv SPSuppress e Continue; if not (isObjTy cenv.g srcty) then let ilFromTy = GenType cenv.amap m cenv.g eenv.tyenv srcty CG.EmitInstrs cgbuf (pop 1) (Push [cenv.g.ilg.typ_Object]) [ I_box ilFromTy; ]; if not (isObjTy cenv.g tgty) then let ilToTy = GenType cenv.amap m cenv.g eenv.tyenv tgty CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [ I_unbox_any ilToTy; ]; GenSequel cenv eenv.cloc cgbuf sequel and GenReraise cenv cgbuf eenv (rtnty,m) sequel = let ilReturnTy = GenType cenv.amap m cenv.g eenv.tyenv rtnty CG.EmitInstrs cgbuf (pop 0) Push0 [I_rethrow]; // [See comment related to I_throw]. // Rethrow does not return. Required to push dummy value on the stack. // This follows prior behaviour by prim-types reraise<_>. CG.EmitInstrs cgbuf (pop 0) (Push [ilReturnTy]) [AI_ldnull; I_unbox_any ilReturnTy ]; GenSequel cenv eenv.cloc cgbuf sequel and GenGetExnField cenv cgbuf eenv (e,ecref,fieldNum,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let exnc = stripExnEqns ecref let typ = GenExnType cenv.amap m cenv.g eenv.tyenv ecref CG.EmitInstrs cgbuf (pop 0) Push0 [ I_castclass typ]; let fld = List.nth (exnc.TrueInstanceFieldsAsList) fieldNum let ftyp = GenType cenv.amap m cenv.g eenv.tyenv fld.FormalType let mspec = mkILNonGenericInstanceMethSpecInTy (typ,"get_" + fld.Name, [], ftyp) CG.EmitInstr cgbuf (pop 1) (Push [ftyp]) (mkNormalCall mspec) GenSequel cenv eenv.cloc cgbuf sequel and GenSetExnField cenv cgbuf eenv (e,ecref,fieldNum,e2,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let exnc = stripExnEqns ecref let typ = GenExnType cenv.amap m cenv.g eenv.tyenv ecref CG.EmitInstrs cgbuf (pop 0) Push0 [ I_castclass typ ]; let fld = List.nth (exnc.TrueInstanceFieldsAsList) fieldNum let ftyp = GenType cenv.amap m cenv.g eenv.tyenv fld.FormalType let ilFieldName = ComputeFieldName exnc fld GenExpr cenv cgbuf eenv SPSuppress e2 Continue; CG.EmitInstr cgbuf (pop 2) Push0 (mkNormalStfld(mkILFieldSpecInTy (typ,ilFieldName,ftyp))); GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel and GenUnionCaseProof cenv cgbuf eenv (e,ucref,tyargs,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let cuspec,idx = GenUnionCaseSpec cenv.amap m cenv.g eenv.tyenv ucref tyargs let fty = EraseIlxUnions.GetILTypeForAlternative cuspec idx CG.EmitInstrs cgbuf (pop 1) (Push [fty]) [ mkIlxInstr (EI_castdata(false,cuspec,idx)); ]; GenSequel cenv eenv.cloc cgbuf sequel and GenGetUnionCaseField cenv cgbuf eenv (e,ucref,tyargs,n,m) sequel = assert (isProvenUnionCaseTy (tyOfExpr cenv.g e)); GenExpr cenv cgbuf eenv SPSuppress e Continue; let cuspec,idx = GenUnionCaseSpec cenv.amap m cenv.g eenv.tyenv ucref tyargs let fty = actualTypOfIlxUnionField cuspec idx n let avoidHelpers = entityRefInThisAssembly cenv.g.compilingFslib ucref.TyconRef CG.EmitInstrs cgbuf (pop 1) (Push [fty]) [ mkIlxInstr (EI_lddata(avoidHelpers, cuspec,idx,n)) ]; GenSequel cenv eenv.cloc cgbuf sequel and GenGetUnionCaseTag cenv cgbuf eenv (e,tcref,tyargs,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let cuspec = GenUnionSpec cenv.amap m cenv.g eenv.tyenv tcref tyargs let avoidHelpers = entityRefInThisAssembly cenv.g.compilingFslib tcref CG.EmitInstrs cgbuf (pop 1) (Push [cenv.g.ilg.typ_int32]) [ mkIlxInstr (EI_lddatatag(avoidHelpers, cuspec)) ]; GenSequel cenv eenv.cloc cgbuf sequel and GenSetUnionCaseField cenv cgbuf eenv (e,ucref,tyargs,n,e2,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let cuspec,idx = GenUnionCaseSpec cenv.amap m cenv.g eenv.tyenv ucref tyargs CG.EmitInstr cgbuf (pop 1) (Push [cuspec.EnclosingType]) (mkIlxInstr (EI_castdata(false,cuspec,idx))); GenExpr cenv cgbuf eenv SPSuppress e2 Continue; CG.EmitInstr cgbuf (pop 2) Push0 (mkIlxInstr (EI_stdata(cuspec,idx,n)) ); GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel and GenGetRecdFieldAddr cenv cgbuf eenv (e,f,tyargs,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let fref = GenRecdFieldRef m cenv eenv.tyenv f tyargs CG.EmitInstrs cgbuf (pop 1) (Push [ILType.Byref fref.ActualType]) [ I_ldflda fref ] ; GenSequel cenv eenv.cloc cgbuf sequel and GenGetStaticFieldAddr cenv cgbuf eenv (f,tyargs,m) sequel = let fspec = GenRecdFieldRef m cenv eenv.tyenv f tyargs CG.EmitInstrs cgbuf (pop 0) (Push [ILType.Byref fspec.ActualType]) [ I_ldsflda fspec ] ; GenSequel cenv eenv.cloc cgbuf sequel and GenGetRecdField cenv cgbuf eenv (e,f,tyargs,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; GenFieldGet false cenv cgbuf eenv (f,tyargs,m); GenSequel cenv eenv.cloc cgbuf sequel and GenSetRecdField cenv cgbuf eenv (e1,f,tyargs,e2,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e1 Continue; GenExpr cenv cgbuf eenv SPSuppress e2 Continue; GenFieldStore false cenv cgbuf eenv (f,tyargs,m) sequel and GenGetStaticField cenv cgbuf eenv (f,tyargs,m) sequel = GenFieldGet true cenv cgbuf eenv (f,tyargs,m); GenSequel cenv eenv.cloc cgbuf sequel and GenSetStaticField cenv cgbuf eenv (f,tyargs,e2,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e2 Continue; GenFieldStore true cenv cgbuf eenv (f,tyargs,m) sequel and mk_field_pops isStatic n = if isStatic then pop n else pop (n+1) and GenFieldGet isStatic cenv cgbuf eenv (rfref:RecdFieldRef,tyargs,m) = let fspec = GenRecdFieldRef m cenv eenv.tyenv rfref tyargs let vol = if rfref.RecdField.IsVolatile then Volatile else Nonvolatile if useGenuineField rfref.Tycon rfref.RecdField || entityRefInThisAssembly cenv.g.compilingFslib rfref.TyconRef then let instr = if isStatic then I_ldsfld(vol, fspec) else I_ldfld (ILAlignment.Aligned, vol, fspec) CG.EmitInstrs cgbuf (mk_field_pops isStatic 0) (Push [fspec.ActualType]) [ instr ] else let cconv = if isStatic then ILCallingConv.Static else ILCallingConv.Instance let mspec = mkILMethSpecInTy (fspec.EnclosingType,cconv, "get_" + rfref.RecdField.rfield_id.idText, [], fspec.FormalType, []) CG.EmitInstr cgbuf (mk_field_pops isStatic 0) (Push [fspec.ActualType]) (mkNormalCall mspec) and GenFieldStore isStatic cenv cgbuf eenv (rfref:RecdFieldRef,tyargs,m) sequel = let fspec = GenRecdFieldRef m cenv eenv.tyenv rfref tyargs let fld = rfref.RecdField if fld.IsMutable && not (useGenuineField rfref.Tycon fld) then let cconv = if isStatic then ILCallingConv.Static else ILCallingConv.Instance let mspec = mkILMethSpecInTy (fspec.EnclosingType, cconv, "set_" + fld.rfield_id.idText, [fspec.FormalType],ILType.Void,[]) CG.EmitInstr cgbuf (mk_field_pops isStatic 1) Push0 (mkNormalCall mspec) else // Within assemblies we do generate some set-field operations // for immutable fields even when resolving recursive bindings. // However we do not generate "set" properties for these. // Hence we just set the field directly in this case. CG.EmitInstr cgbuf (mk_field_pops isStatic 1) Push0 (if isStatic then mkNormalStsfld fspec else mkNormalStfld fspec); GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate arguments to calls //-------------------------------------------------------------------------- /// Generate arguments to a call, unless the argument is the single lone "unit" value /// to a method or value compiled as a method taking no arguments and GenUntupledArgsDiscardingLoneUnit cenv cgbuf eenv m numObjArgs curriedArgInfos args = match curriedArgInfos ,args with // Type.M() // new C() | [[]],[arg] when numObjArgs = 0 -> assert isUnitTy cenv.g (tyOfExpr cenv.g arg) GenExpr cenv cgbuf eenv SPSuppress arg discard // obj.M() | [[_];[]],[arg1;arg2] when numObjArgs = 1 -> assert isUnitTy cenv.g (tyOfExpr cenv.g arg2) GenExpr cenv cgbuf eenv SPSuppress arg1 Continue; GenExpr cenv cgbuf eenv SPSuppress arg2 discard | _ -> (curriedArgInfos,args) ||> List.iter2 (fun argInfos x -> GenUntupledArgExpr cenv cgbuf eenv m argInfos x Continue) /// Codegen arguments and GenUntupledArgExpr cenv cgbuf eenv m argInfos expr sequel = let numRequiredExprs = List.length argInfos assert (numRequiredExprs >= 1) if numRequiredExprs = 1 then GenExpr cenv cgbuf eenv SPSuppress expr sequel elif isTupleExpr expr then let es = tryDestTuple expr if es.Length <> numRequiredExprs then error(InternalError("GenUntupledArgExpr (2)",m)); es |> List.iter (fun x -> GenExpr cenv cgbuf eenv SPSuppress x Continue); GenSequel cenv eenv.cloc cgbuf sequel else let ty = tyOfExpr cenv.g expr let locv,loce = mkCompGenLocal m "arg" ty let bind = mkCompGenBind locv expr LocalScope "untuple" cgbuf (fun scopeMarks -> let eenvinner = AllocStorageForBind cenv cgbuf scopeMarks eenv bind GenBind cenv cgbuf eenvinner bind; let tys = destTupleTy cenv.g ty assert (tys.Length = numRequiredExprs) argInfos |> List.iteri (fun i _ -> GenGetTupleField cenv cgbuf eenvinner (loce,tys,i,m) Continue); GenSequel cenv eenv.cloc cgbuf sequel ) //-------------------------------------------------------------------------- // Generate calls (try to detect direct calls) //-------------------------------------------------------------------------- and GenApp cenv cgbuf eenv (f,fty,tyargs,args,m) sequel = match (f,tyargs,args) with (* Look for tailcall to turn into branch *) | (Expr.Val(v,_,_),_,_) when ((ListAssoc.containsKey cenv.g.valRefEq v eenv.innerVals) && not v.IsConstructor && let (kind,_) = ListAssoc.find cenv.g.valRefEq v eenv.innerVals (* when branch-calling methods we must have the right type parameters *) begin match kind with | BranchCallClosure _ -> true | BranchCallMethod (_,_,tps,_,_) -> (List.lengthsEqAndForall2 (fun ty tp -> typeEquiv cenv.g ty (mkTyparTy tp)) tyargs tps) end && (* must be exact #args, ignoring tupling - we untuple if needed below *) (let arityInfo = match kind with | BranchCallClosure arityInfo | BranchCallMethod (arityInfo,_,_,_,_) -> arityInfo arityInfo.Length = args.Length ) && (* no tailcall out of exception handler, etc. *) (match sequelIgnoringEndScopesAndDiscard sequel with Return | ReturnVoid -> true | _ -> false)) -> let (kind,mark) = ListAssoc.find cenv.g.valRefEq v eenv.innerVals let ntmargs = match kind with | BranchCallClosure arityInfo -> let ntmargs = List.foldBack (+) arityInfo 0 GenExprs cenv cgbuf eenv args; ntmargs | BranchCallMethod (arityInfo,curriedArgInfos,_,ntmargs,numObjArgs) -> assert (curriedArgInfos.Length = arityInfo.Length ) assert (curriedArgInfos.Length = args.Length) //assert (curriedArgInfos.Length = ntmargs ) GenUntupledArgsDiscardingLoneUnit cenv cgbuf eenv m numObjArgs curriedArgInfos args; if v.IsExtensionMember then match curriedArgInfos, args with | [[]],[_] when numObjArgs = 0 -> (ntmargs-1) | [[_];[]],[_;_] when numObjArgs = 1 -> (ntmargs-1) | _ -> ntmargs else ntmargs for i = ntmargs - 1 downto 0 do CG.EmitInstrs cgbuf (pop 1) Push0 [ I_starg (uint16 (i+cgbuf.PreallocatedArgCount)) ]; done; CG.EmitInstrs cgbuf (pop 0) Push0 [ I_br (mark.CodeLabel) ]; GenSequelEndScopes cgbuf sequel // PhysicalEquality becomes cheap reference equality once // a nominal type is known. We can't replace it for variable types since // a "ceq" instruction can't be applied to variable type values. | (Expr.Val(v,_,_),[ty],[arg1;arg2]) when (valRefEq cenv.g v cenv.g.reference_equality_inner_vref) && isAppTy cenv.g ty -> GenExpr cenv cgbuf eenv SPSuppress arg1 Continue; GenExpr cenv cgbuf eenv SPSuppress arg2 Continue; CG.EmitInstr cgbuf (pop 2) (Push [cenv.g.ilg.typ_bool]) AI_ceq; GenSequel cenv eenv.cloc cgbuf sequel // Emit "methodhandleof" calls as ldtoken instructions // // The token for the "GenericMethodDefinition" is loaded | Expr.Val(v,_,m),_,[arg] when valRefEq cenv.g v cenv.g.methodhandleof_vref -> let (|OptionalCoerce|) = function Expr.Op(TOp.Coerce _,_,[arg],_) -> arg | x -> x let (|OptionalTyapp|) = function Expr.App(f,_,[_],[],_) -> f | x -> x match arg with // Generate ldtoken instruction for "methodhandleof(fun (a,b,c) -> f(a,b,c))" // where f is an F# function value or F# method | Expr.Lambda(_,_,_,_,Expr.App(OptionalCoerce(OptionalTyapp(Expr.Val(vref,_,_))),_,_,_,_),_,_) -> let storage = StorageForValRef m vref eenv match storage with | Method (_,_,mspec,_,_,_) -> CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_RuntimeMethodHandle]) (I_ldtoken (ILToken.ILMethod mspec)); | _ -> errorR(Error(FSComp.SR.ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen(), m)) // Generate ldtoken instruction for "methodhandleof(fun (a,b,c) -> obj.M(a,b,c))" // where M is an IL method. | Expr.Lambda(_,_,_,_,Expr.Op(TOp.ILCall(_,_,valu,_,_,_,_,ilMethRef,actualTypeInst,actualMethInst,_),_,_,_),_,_) -> let boxity = (if valu then AsValue else AsObject) let mkFormalParams gparams = gparams |> DropErasedTyargs |> List.mapi (fun n _gf -> mkILTyvarTy (uint16 n)) let ilGenericMethodSpec = IL.mkILMethSpec (ilMethRef, boxity, mkFormalParams actualTypeInst, mkFormalParams actualMethInst) let i = I_ldtoken (ILToken.ILMethod ilGenericMethodSpec); CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_RuntimeMethodHandle]) i | _ -> System.Diagnostics.Debug.Assert(false,sprintf "Break for invalid methodhandleof argument expression") //System.Diagnostics.Debugger.Break() errorR(Error(FSComp.SR.ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen(), m)) GenSequel cenv eenv.cloc cgbuf sequel // Optimize calls to top methods when given "enough" arguments. | Expr.Val(vref,valUseFlags,_),_,_ when (let storage = StorageForValRef m vref eenv match storage with | Method (topValInfo,vref,_,_,_,_) -> (let tps,argtys,_,_ = GetTopValTypeInFSharpForm cenv.g topValInfo vref.Type m tps.Length = tyargs.Length && argtys.Length <= args.Length) | _ -> false) -> let storage = StorageForValRef m vref eenv begin match storage with | Method (topValInfo,vref,mspec,_,_,_) -> let nowArgs,laterArgs = let _,curriedArgInfos,_,_ = GetTopValTypeInFSharpForm cenv.g topValInfo vref.Type m List.chop curriedArgInfos.Length args let actualRetTy = applyTys cenv.g vref.Type (tyargs,nowArgs) let _,curriedArgInfos,returnTy,_ = GetTopValTypeInCompiledForm cenv.g topValInfo vref.Type m let ilTyArgs = GenTypeArgs cenv.amap m cenv.g eenv.tyenv tyargs // For instance method calls chop off some type arguments, which are already // carried by the class. Also work out if it's a virtual call. let _,virtualCall,newobj,isSuperInit,isSelfInit,_,_,_ = GetMemberCallInfo cenv.g (vref,valUseFlags) in // numEnclILTypeArgs will include unit-of-measure args, unfortunately. For now, just cut-and-paste code from GetMemberCallInfo // @REVIEW: refactor this let numEnclILTypeArgs = match vref.MemberInfo with | Some _ when not (vref.IsExtensionMember) -> List.length(vref.MemberApparentParent.TyparsNoRange |> DropErasedTypars) | _ -> 0 let (ilEnclArgTys,ilMethArgTys) = if ilTyArgs.Length < numEnclILTypeArgs then error(InternalError("length mismatch",m)); List.chop numEnclILTypeArgs ilTyArgs let boxity = mspec.EnclosingType.Boxity let mspec = mkILMethSpec (mspec.MethodRef, boxity,ilEnclArgTys,ilMethArgTys) // "Unit" return types on static methods become "void" let mustGenerateUnitAfterCall = isNone returnTy let ccallInfo = match valUseFlags with | PossibleConstrainedCall ty -> Some ty | _ -> None let isBaseCall = match valUseFlags with VSlotDirectCall -> true | _ -> false let isTailCall = if isNil laterArgs && not isSelfInit then let isDllImport = IsValRefIsDllImport cenv.g vref let hasByrefArg = mspec.FormalArgTypes |> ILList.exists (function ILType.Byref _ -> true | _ -> false) let makesNoCriticalTailcalls = vref.MakesNoCriticalTailcalls CanTailcall((boxity=AsValue),ccallInfo,eenv.withinSEH,hasByrefArg,mustGenerateUnitAfterCall,isDllImport,isSelfInit,makesNoCriticalTailcalls,sequel) else Normalcall let useICallVirt = virtualCall || useCallVirt cenv boxity mspec isBaseCall let callInstr = match valUseFlags with | PossibleConstrainedCall ty -> let ilThisTy = GenType cenv.amap m cenv.g eenv.tyenv ty I_callconstraint ( isTailCall, ilThisTy,mspec,None) | _ -> if newobj then I_newobj (mspec, None) elif useICallVirt then I_callvirt (isTailCall, mspec, None) else I_call (isTailCall, mspec, None) #if SILVERLIGHT begin #else // An F# multi dimension array type "int32[,]" should normally map to the ILDASM type "int32[0...,0...]", just like C#. // // However, System.Reflection.Emit has a nasty bug that means it can't emit calls to C# generic methods involving multi-dimensional arrays // void M(int32[,]) // because MakeGenericMethod on this method returns a handle that causes an invalid call to be emitted by the IL code generator for dynamic assemblies // // We have to pay a price here, either: // -- always emit no bounds, i.e. the ILDASM type "int32[,]" (without lower bounds), and not be able to implement C# virtual slots involving multi-dimensional array types // -- always emit bounds, i.e. the ILDASM type "int32[0...,0...]" (without lower bounds), and not be able to call C# or F# generic code such as the Array2 module // -- emit no bounds within the signatures of F# generic methods // We follow the the second one. This bug was "fixed" for 4.0, but is still broken, since it no longer accounts for the case // were you have no bounds. // // The code below provides a workaround for fsi 2.0 - we'll grab a MethodRef via reflection, and then call it indirectly. // We need to use reflection to get the MethodRef because ldtoken, ldftn etc. may leak typars into the IL stream, resulting in a bad PE image. The indirect call // is also necessary (as opposed to MethodBase::Invoke), because Invoke() requires an array of System.Type objects representing the method's argument types, and may // provide another opportunity to leak "rogue" typars into the IL stream let emitReflectionCode = if cenv.g.indirectCallArrayMethods then true elif cenv.opts.ilxBackend <> IlxGenBackend.IlReflectBackend then false elif cenv.g.using40environment then false elif ilTyArgs.Length = 0 then false elif Microsoft.FSharp.Compiler.AbstractIL.IL.runningOnMono then false elif newobj then false else // test if emitting the reflection code is appropriate let hasMDArrayReturnType = match mspec.FormalReturnType with | ILType.Array(shape,_) when shape.Rank > 1 -> true | _ -> false let hasMDArrayParameter = mspec.FormalArgTypes |> ILList.exists (fun p -> match p with | ILType.Array(shape,_) when shape.Rank > 1 -> true | _ -> false) (hasMDArrayReturnType || hasMDArrayParameter) // grab a scope ref for fsi,exe let fsiScoRefOpt = if emitReflectionCode then let assemblies = System.AppDomain.CurrentDomain.GetAssemblies() assemblies |> Array.tryPick (fun a-> if a.FullName.Contains("Fsi,") then Some (ILScopeRef.Assembly(ILAssemblyRef.FromAssemblyName (a.GetName()))) else None ) else None if emitReflectionCode && fsiScoRefOpt.IsSome then // System.Reflection.MethodInfo let methodInfoTyRef = ILTypeRef.Create(cenv.g.ilg.mscorlibScopeRef,[],"System.Reflection.MethodInfo") let methodInfoTySpec = ILTypeSpec.Create(methodInfoTyRef,emptyILGenericArgs) let methodInfoTy = mkILBoxedType methodInfoTySpec // System.Reflection.MethodBase let methodBaseTyRef = ILTypeRef.Create(cenv.g.ilg.mscorlibScopeRef,[],"System.Reflection.MethodBase") let methodBaseTySpec = ILTypeSpec.Create(methodBaseTyRef,emptyILGenericArgs) let methodBaseTy = mkILBoxedType methodBaseTySpec // System.RuntimeMethodHandle let runtimeMethodHandleTyRef = ILTypeRef.Create(cenv.g.ilg.mscorlibScopeRef,[],"System.RuntimeMethodHandle") let runtimeMethodHandleTySpec = ILTypeSpec.Create(runtimeMethodHandleTyRef,emptyILGenericArgs) let runtimeMethodHandleTy = ILType.Value runtimeMethodHandleTySpec // Microsoft.FSharp.Compiler.Interactive.Utils let methodFinderTyRef = ILTypeRef.Create(fsiScoRefOpt.Value,[],"Microsoft.FSharp.Compiler.Interactive.Utils") let methodFinderTySpec = ILTypeSpec.Create(methodFinderTyRef,emptyILGenericArgs) let methodFinderTy = mkILBoxedType methodFinderTySpec let typeArrayTy = mkILArr1DTy cenv.g.ilg.typ_Type let stringArrayTy = mkILArr1DTy cenv.g.ilg.typ_String // System.Reflection.MethodInfo::MakeGenericMethod let makeGenericMethodRef = mkILMethRef(methodInfoTyRef,ILCallingConv.Instance,"MakeGenericMethod",0,[typeArrayTy],methodInfoTy) let makeGenericMethodSpec = ILMethodSpec.Create(methodInfoTy,makeGenericMethodRef,emptyILGenericArgs) // System.Reflection.MethodBase::getMethodHandle let getMethodHandleRef = mkILMethRef(methodBaseTyRef, ILCallingConv.Instance,"get_MethodHandle",0,[],runtimeMethodHandleTy) let getMethodHandleSpec = ILMethodSpec.Create(methodBaseTy,getMethodHandleRef,emptyILGenericArgs) // Microsoft.FSharp.MethodFinder::findMethod let findMethodRef = mkILMethRef(methodFinderTyRef, ILCallingConv.Static,"findMethod",0,[cenv.g.ilg.typ_Type; cenv.g.ilg.typ_String; cenv.g.ilg.typ_Int32; stringArrayTy; cenv.g.ilg.typ_String],methodInfoTy) let findMethodSpec = ILMethodSpec.Create(methodFinderTy,findMethodRef,emptyILGenericArgs) // System.RuntimeMethodHandle::GetFunctionPointer let getFunctionPointerRef = mkILMethRef(runtimeMethodHandleTyRef,ILCallingConv.Instance,"GetFunctionPointer",0,[],cenv.g.ilg.typ_IntPtr) let getFunctionPointerSpec = ILMethodSpec.Create(runtimeMethodHandleTy,getFunctionPointerRef,emptyILGenericArgs) let typeofGenericArgs = ilTyArgs |> List.collect (fun ilt -> [mkTypeOfExpr cenv m ilt]) let getNameExprs = mspec.FormalArgTypes |> ILList.toList |> List.map (fun t -> mkGetNameExpr cenv t m) let ilActualRetTy = GenType cenv.amap m cenv.g eenv.tyenv actualRetTy let objargs = if vref.NumObjArgs = 1 then List.tail nowArgs else nowArgs let ilActualArgs = objargs |> List.map (tyOfExpr cenv.g) |> List.filter (fun ty -> not (isUnitTy cenv.g ty)) |> List.map (GenType cenv.amap m cenv.g eenv.tyenv) LocalScope "callstack" cgbuf (fun scopeMarks -> let stack,eenvinner = EmitSaveStack cenv cgbuf eenv m scopeMarks let eenvinner = {eenvinner with withinSEH = true} let savedVal,eenvinner = AllocLocal cenv cgbuf eenvinner true (ilxgenGlobalNng.FreshCompilerGeneratedName ("res",m),ilActualRetTy) scopeMarks let startTryMark = CG.GenerateMark cgbuf "startTryMark" let endTryMark = CG.GenerateDelayMark cgbuf "endTryMark" let afterHandler = CG.GenerateDelayMark cgbuf "afterHandler" let localMethodHandle,eenvinner = AllocLocal cenv cgbuf eenvinner true (ilxgenGlobalNng.FreshCompilerGeneratedName ("handle",m),runtimeMethodHandleTy) scopeMarks // push args GenUntupledArgsDiscardingLoneUnit cenv cgbuf eenvinner m vref.NumObjArgs curriedArgInfos nowArgs; if isSuperInit || isSelfInit then CG.EmitInstrs cgbuf (pop 0) (Push [mspec.EnclosingType]) [ mkLdarg0 ] ; // set up indirect call // push the method's enclosing type on the top of the stack GenExpr cenv cgbuf eenvinner SPSuppress (mkTypeOfExpr cenv m mspec.EnclosingType) Continue // push the name of the method CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_String]) (I_ldstr mspec.Name) // push the method's arity CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_Int32]) (mkLdcInt32 mspec.FormalArgTypes.Length) // push the names of the method's arg tys GenNewArraySimple cenv cgbuf eenvinner (getNameExprs,cenv.g.string_ty,m) Continue // push the name of the return type CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_String]) (I_ldstr mspec.FormalReturnType.BasicQualifiedName) // call Microsoft.FSharp.Core.MethodFinder.findMethod CG.EmitInstr cgbuf (pop 5) (Push [methodInfoTy]) (I_call (Normalcall,findMethodSpec,None)) // create the generic method, if necessary if mspec.GenericArgs.Length > 0 then // create an array of System.Type objects - cenv.g.system_Type_typ // and assign the type arg types to the array GenNewArraySimple cenv cgbuf eenvinner (typeofGenericArgs,cenv.g.system_Type_typ,m) Continue // Pop the Type list, push the resulting MethodInfo object CG.EmitInstr cgbuf (pop 2) (Push [methodInfoTy]) (I_callvirt (Normalcall, makeGenericMethodSpec, None)); // call System.Reflection.MethodBase::MethodHandle CG.EmitInstr cgbuf (pop 1) (Push [runtimeMethodHandleTy]) (I_callvirt (Normalcall,getMethodHandleSpec,None)) EmitSetLocal cgbuf localMethodHandle CG.EmitInstr cgbuf (pop 0) (Push [runtimeMethodHandleTy]) (I_ldloca (uint16 localMethodHandle)) // get the function pointer CG.EmitInstr cgbuf (pop 1) (Push [cenv.g.ilg.typ_IntPtr]) (I_call (Normalcall,getFunctionPointerSpec,None)) // make the actual indirect call let nargs = mspec.FormalArgTypes.Length // +1 Pop for the function pointer CG.EmitInstr cgbuf (pop (nargs + 1 + (if mspec.CallingConv.IsStatic || newobj then 0 else 1))) (if mustGenerateUnitAfterCall || isSuperInit || isSelfInit then Push0 else (Push [ilActualRetTy])) (I_calli(Normalcall,{mspec.MethodRef.CallingSignature with ReturnType=ilActualRetTy ; ArgTypes=mkILTypes ilActualArgs},None)); // For isSuperInit, load the 'this' pointer as the pretend 'result' of the operation. It will be popped again in most cases if isSuperInit then CG.EmitInstrs cgbuf (pop 0) (Push [mspec.EnclosingType]) [ mkLdarg0 ] ; CommitCallSequel cenv eenv m eenv.cloc cgbuf mustGenerateUnitAfterCall (LeaveHandler (false,savedVal,afterHandler)) // catch block // On 2.0 x64, Reflection.Emit has another bug that if you don't wrap your indirect call in a try block, you'll // get "System.InvalidProgramException: JIT Compiler encountered an internal limitation." // The code below inserts a dummy try block that just rethrows the exception CG.SetMarkToHere cgbuf endTryMark; let tryMarks = (startTryMark.CodeLabel, endTryMark.CodeLabel) let seh = let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" begin CG.SetStack cgbuf [cenv.g.ilg.typ_Exception] // rethrow the inner exception CG.EmitInstr cgbuf (pop 1) Push0 I_throw end; let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) ILExceptionClause.TypeCatch(cenv.g.ilg.typ_Exception, handlerMarks) cgbuf.EmitExceptionClause { exnClauses = [ seh ]; exnRange= tryMarks } ; CG.SetMarkToHere cgbuf afterHandler; CG.SetStack cgbuf []; cgbuf.EmitStartOfHiddenCode(); // Restore the stack and load the result EmitRestoreStack cgbuf stack; EmitGetLocal cgbuf ilActualRetTy savedVal; GenSequel cenv eenv.cloc cgbuf sequel) // end LocalScope else begin #endif // SILVERLIGHT // ok, now we're ready to generate if isSuperInit || isSelfInit then CG.EmitInstrs cgbuf (pop 0) (Push [mspec.EnclosingType ]) [ mkLdarg0 ] ; GenUntupledArgsDiscardingLoneUnit cenv cgbuf eenv m vref.NumObjArgs curriedArgInfos nowArgs; // Generate laterArgs (for effects) and save LocalScope "callstack" cgbuf (fun scopeMarks -> let whereSaved,eenv = (eenv,laterArgs) ||> List.mapFold (fun eenv laterArg -> // Only save arguments that have effects if Opt.ExprHasEffect cenv.g laterArg then let ilTy = laterArg |> tyOfExpr cenv.g |> GenType cenv.amap m cenv.g eenv.tyenv let loc,eenv = AllocLocal cenv cgbuf eenv true (ilxgenGlobalNng.FreshCompilerGeneratedName ("arg",m), ilTy) scopeMarks GenExpr cenv cgbuf eenv SPSuppress laterArg Continue EmitSetLocal cgbuf loc Choice1Of2 (ilTy,loc),eenv else Choice2Of2 laterArg, eenv) let nargs = mspec.FormalArgTypes.Length CG.EmitInstr cgbuf (pop (nargs + (if mspec.CallingConv.IsStatic || newobj then 0 else 1))) (if mustGenerateUnitAfterCall || isSuperInit || isSelfInit then Push0 else (Push [(GenType cenv.amap m cenv.g eenv.tyenv actualRetTy)])) callInstr; // For isSuperInit, load the 'this' pointer as the pretend 'result' of the operation. It will be popped again in most cases if isSuperInit then CG.EmitInstrs cgbuf (pop 0) (Push [mspec.EnclosingType]) [ mkLdarg0 ] ; // When generating debug code, generate a 'nop' after a 'call' that returns 'void' // This is what C# does, as it allows the call location to be maintained correctly in the stack frame if cenv.opts.generateDebugSymbols && mustGenerateUnitAfterCall && (isTailCall = Normalcall) then CG.EmitInstrs cgbuf (pop 0) Push0 [ AI_nop ] ; if isNil laterArgs then assert isNil whereSaved // Generate the "unit" value if necessary CommitCallSequel cenv eenv m eenv.cloc cgbuf mustGenerateUnitAfterCall sequel else //printfn "%d EXTRA ARGS IN TOP APP at %s" laterArgs.Length (stringOfRange m) whereSaved |> List.iter (function | Choice1Of2 (ilTy,loc) -> EmitGetLocal cgbuf ilTy loc | Choice2Of2 expr -> GenExpr cenv cgbuf eenv SPSuppress expr Continue) GenIndirectCall cenv cgbuf eenv (actualRetTy,[],laterArgs,m) sequel) end | _ -> failwith "??" end // This case is for getting/calling a value, when we can't call it directly. // However, we know the type instantiation for the value. // In this case we can often generate a type-specific local expression for the value. // This reduces the number of dynamic type applications. | (Expr.Val(vref,_,_),_,_) -> GenGetValRefAndSequel cenv cgbuf eenv m vref (Some (tyargs,args,m,sequel)) | _ -> (* worst case: generate a first-class function value and call *) GenExpr cenv cgbuf eenv SPSuppress f Continue; GenArgsAndIndirectCall cenv cgbuf eenv (fty,tyargs,args,m) sequel and CanTailcall (hasStructObjArg, ccallInfo, withinSEH, hasByrefArg, mustGenerateUnitAfterCall, isDllImport, isSelfInit, makesNoCriticalTailcalls, sequel) = // Can't tailcall with a struct object arg since it involves a byref // Can't tailcall with a .NET 2.0 generic constrained call since it involves a byref if not hasStructObjArg && isNone ccallInfo && not withinSEH && not hasByrefArg && not isDllImport && not isSelfInit && not makesNoCriticalTailcalls && // We can tailcall even if we need to generate "unit", as long as we're about to throw the value away anyway as par of the return. // We can tailcall if we don't need to generate "unit", as long as we're about to return. (match sequelIgnoreEndScopes sequel with | ReturnVoid | Return -> not mustGenerateUnitAfterCall | DiscardThen ReturnVoid -> mustGenerateUnitAfterCall | _ -> false) then Tailcall else Normalcall and GenNamedLocalTyFuncCall cenv (cgbuf: CodeGenBuffer) eenv typ cloinfo tyargs m = let ilContractClassTyargs = cloinfo.localTypeFuncContractFreeTypars |> List.map mkTyparTy |> GenTypeArgs cenv.amap m cenv.g eenv.tyenv let ilTyArgs = tyargs |> GenTypeArgs cenv.amap m cenv.g eenv.tyenv let _,(ilContractMethTyargs: ILGenericParameterDefs),(ilContractCloTySpec:ILTypeSpec),ilContractFormalRetTy = GenNamedLocalTypeFuncContractInfo cenv eenv m cloinfo let ilContractTy = mkILBoxedTy ilContractCloTySpec.TypeRef ilContractClassTyargs if not (ilContractMethTyargs.Length = tyargs.Length) then errorR(Error(FSComp.SR.ilIncorrectNumberOfTypeArguments(),m)); // Local TyFunc are represented as a $contract type. they currently get stored in a value of type object // Recover result (value or reference types) via unbox_any. CG.EmitInstrs cgbuf (pop 1) (Push [ilContractTy]) [I_unbox_any ilContractTy]; let actualRetTy = applyTys cenv.g typ (tyargs,[]) let ilDirectInvokeMethSpec = mkILInstanceMethSpecInTy(ilContractTy, "DirectInvoke", [], ilContractFormalRetTy, ilTyArgs) let ilActualRetTy = GenType cenv.amap m cenv.g eenv.tyenv actualRetTy CountCallFuncInstructions(); CG.EmitInstr cgbuf (pop 1) (Push [ilActualRetTy]) (mkNormalCallvirt ilDirectInvokeMethSpec); actualRetTy /// Generate an indirect call, converting to an ILX callfunc instruction and GenArgsAndIndirectCall cenv cgbuf eenv (functy,tyargs,args,m) sequel = // Generate the arguments to the indirect call GenExprs cenv cgbuf eenv args; GenIndirectCall cenv cgbuf eenv (functy,tyargs,args,m) sequel /// Generate an indirect call, converting to an ILX callfunc instruction and GenIndirectCall cenv cgbuf eenv (functy,tyargs,args,m) sequel = // Fold in the new types into the environment as we generate the formal types. let ilxClosureApps = let typars,formalFuncTyp = tryDestForallTy cenv.g functy let feenv = eenv.tyenv.Add typars // This does two phases: REVIEW: the code is too complex for what it's achieving and should be rewritten let formalRetTy,appBuilder = List.fold (fun (formalFuncTyp,sofar) _ -> let dty,rty = destFunTy cenv.g formalFuncTyp (rty,(fun acc -> sofar (Apps_app(GenType cenv.amap m cenv.g feenv dty,acc))))) (formalFuncTyp,id) args let ilxRetApps = Apps_done (GenType cenv.amap m cenv.g feenv formalRetTy) List.foldBack (fun tyarg acc -> Apps_tyapp(GenType cenv.amap m cenv.g eenv.tyenv tyarg,acc)) tyargs (appBuilder ilxRetApps) let actualRetTy = applyTys cenv.g functy (tyargs, args) let ilActualRetTy = GenType cenv.amap m cenv.g eenv.tyenv actualRetTy // Check if any byrefs are involved to make sure we don't tailcall let hasByrefArg = let rec check x = match x with | Apps_tyapp(_,apps) -> check apps | Apps_app(arg,apps) -> IsILTypeByref arg || check apps | _ -> false check ilxClosureApps let isTailCall = CanTailcall(false,None,eenv.withinSEH,hasByrefArg,false,false,false,false,sequel) CountCallFuncInstructions(); // Generate an ILX callfunc instruction // REVIEW: ILX-to-IL generation of callfunc is too complex. It would probably be better // if we just got rid of callfunc and generated the IL code directly in ilxgen. CG.EmitInstr cgbuf (pop (1+args.Length)) (Push [ilActualRetTy]) (mkIlxInstr (EI_callfunc(isTailCall,ilxClosureApps))); // Done compiling indirect call... GenSequel cenv eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate try expressions //-------------------------------------------------------------------------- and GenTry cenv cgbuf eenv scopeMarks (e1,m,resty,spTry) = let sp = match spTry with | SequencePointAtTry m -> CG.EmitSeqPoint cgbuf m; SPAlways | SequencePointInBodyOfTry -> SPAlways | NoSequencePointAtTry -> SPSuppress let stack,eenvinner = EmitSaveStack cenv cgbuf eenv m scopeMarks let startTryMark = CG.GenerateMark cgbuf "startTryMark" let endTryMark = CG.GenerateDelayMark cgbuf "endTryMark" let afterHandler = CG.GenerateDelayMark cgbuf "afterHandler" let eenvinner = {eenvinner with withinSEH = true} let ilResultTy = GenType cenv.amap m cenv.g eenvinner.tyenv resty let whereToSave,eenvinner = AllocLocal cenv cgbuf eenvinner true (ilxgenGlobalNng.FreshCompilerGeneratedName ("tryres",m),ilResultTy) (startTryMark,endTryMark) // Generate the body of the try. In the normal case (SequencePointAtTry) we generate a sequence point // both on the 'try' keyword and on the start of the expression in the 'try'. For inlined code and // compiler generated 'try' blocks (i.e. NoSequencePointAtTry, used for the try/finally implicit // in a 'use' or 'foreach'), we suppress the sequence point GenExpr cenv cgbuf eenvinner sp e1 (LeaveHandler (false, whereToSave,afterHandler)); CG.SetMarkToHere cgbuf endTryMark; let tryMarks = (startTryMark.CodeLabel, endTryMark.CodeLabel) whereToSave,eenvinner,stack,tryMarks,afterHandler,ilResultTy and GenTryCatch cenv cgbuf eenv (e1,vf:Val,ef,vh:Val,eh,m,resty,spTry,spWith) sequel = // Save the stack - gross because IL flushes the stack at the exn. handler // note: eenvinner notes spill vars are live LocalScope "trystack" cgbuf (fun scopeMarks -> let whereToSave,eenvinner,stack,tryMarks,afterHandler,ilResultTy = GenTry cenv cgbuf eenv scopeMarks (e1,m,resty,spTry) // Now the filter and catch blocks let seh = if cenv.opts.generateFilterBlocks then let startOfFilter = CG.GenerateMark cgbuf "startOfFilter" let afterFilter = CG.GenerateDelayMark cgbuf "afterFilter" let (sequelOnBranches,afterJoin,stackAfterJoin,sequelAfterJoin) = GenJoinPoint cenv cgbuf "filter" eenv cenv.g.int_ty m EndFilter begin // We emit the sequence point for the 'with' keyword span on the start of the filter // block. However the targets of the filter block pattern matching should not get any // sequence points (they will be 'true'/'false' values indicating if the exception has been // caught or not). // // The targets of the handler block DO get sequence points. Thus the expected behaviour // for a try/with with a complex pattern is that we hit the "with" before the filter is run // and then jump to the handler for the successful catch (or continue with exception handling // if the filter fails) match spWith with | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m | NoSequencePointAtWith -> () CG.SetStack cgbuf [cenv.g.ilg.typ_Object]; let _,eenvinner = AllocLocalVal cenv cgbuf vf eenvinner None (startOfFilter,afterFilter) CG.EmitInstr cgbuf (pop 1) (Push [cenv.g.ilg.typ_Exception]) (I_castclass cenv.g.ilg.typ_Exception); GenStoreVal cgbuf eenvinner vf.Range vf; // Why SPSuppress? Because we do not emit a sequence point at the start of the List.filter - we've already put one on // the 'with' keyword above GenExpr cenv cgbuf eenvinner SPSuppress ef sequelOnBranches; CG.SetMarkToHere cgbuf afterJoin; CG.SetStack cgbuf stackAfterJoin; GenSequel cenv eenv.cloc cgbuf sequelAfterJoin; end; let endOfFilter = CG.GenerateMark cgbuf "endOfFilter" let filterMarks = (startOfFilter.CodeLabel, endOfFilter.CodeLabel) CG.SetMarkToHere cgbuf afterFilter; let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" begin CG.SetStack cgbuf [cenv.g.ilg.typ_Object]; let _,eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler,afterHandler) CG.EmitInstr cgbuf (pop 1) (Push [cenv.g.ilg.typ_Exception]) (I_castclass cenv.g.ilg.typ_Exception); GenStoreVal cgbuf eenvinner vh.Range vh; GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave,afterHandler)); end; let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) ILExceptionClause.FilterCatch(filterMarks, handlerMarks) else let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" begin match spWith with | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m | NoSequencePointAtWith -> () CG.SetStack cgbuf [cenv.g.ilg.typ_Object]; let _,eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler,afterHandler) CG.EmitInstr cgbuf (pop 1) (Push [cenv.g.ilg.typ_Exception]) (I_castclass cenv.g.ilg.typ_Exception); GenStoreVal cgbuf eenvinner m vh; GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave,afterHandler)); end; let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) ILExceptionClause.TypeCatch(cenv.g.ilg.typ_Object, handlerMarks) cgbuf.EmitExceptionClause { exnClauses = [ seh ]; exnRange= tryMarks } ; CG.SetMarkToHere cgbuf afterHandler; CG.SetStack cgbuf []; cgbuf.EmitStartOfHiddenCode(); (* Restore the stack and load the result *) EmitRestoreStack cgbuf stack; (* RESTORE *) EmitGetLocal cgbuf ilResultTy whereToSave; GenSequel cenv eenv.cloc cgbuf sequel ) and GenTryFinally cenv cgbuf eenv (bodyExpr,handlerExpr,m,resty,spTry,spFinally) sequel = // Save the stack - needed because IL flushes the stack at the exn. handler // note: eenvinner notes spill vars are live LocalScope "trystack" cgbuf (fun scopeMarks -> let whereToSave,eenvinner,stack,tryMarks,afterHandler,ilResultTy = GenTry cenv cgbuf eenv scopeMarks (bodyExpr,m,resty,spTry) // Now the catch/finally block let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" CG.SetStack cgbuf []; let sp = match spFinally with | SequencePointAtFinally m -> CG.EmitSeqPoint cgbuf m; SPAlways | NoSequencePointAtFinally -> SPSuppress GenExpr cenv cgbuf eenvinner sp handlerExpr (LeaveHandler (true, whereToSave,afterHandler)); let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) cgbuf.EmitExceptionClause { exnClauses = [ ILExceptionClause.Finally(handlerMarks) ]; exnRange = tryMarks } ; CG.SetMarkToHere cgbuf afterHandler; CG.SetStack cgbuf []; // Restore the stack and load the result cgbuf.EmitStartOfHiddenCode(); EmitRestoreStack cgbuf stack; EmitGetLocal cgbuf ilResultTy whereToSave; GenSequel cenv eenv.cloc cgbuf sequel ) //-------------------------------------------------------------------------- // Generate for-loop //-------------------------------------------------------------------------- and GenForLoop cenv cgbuf eenv (spFor,v,e1,dir,e2,loopBody,m) sequel = // The JIT/NGen eliminate array-bounds checks for C# loops of form: // for(int i=0; i < (#ldlen arr#); i++) { ... arr[i] ... } // Here // dir = BI_blt indicates an optimized for loop that fits C# form that evaluates its 'end' argument each time around // dir = BI_ble indicates a normal F# for loop that evaluates its argument only once // // It is also important that we follow C# IL-layout exactly "prefix, jmp test, body, test, finish" for JIT/NGEN. let start = CG.GenerateMark cgbuf "for_start" let finish = CG.GenerateDelayMark cgbuf "for_finish" let inner = CG.GenerateDelayMark cgbuf "for_inner" let test = CG.GenerateDelayMark cgbuf "for_test" let stack,eenvinner = EmitSaveStack cenv cgbuf eenv m (start,finish) let isUp = (match dir with | FSharpForLoopUp | CSharpForLoopUp -> true | FSharpForLoopDown -> false); let isFSharpStyle = (match dir with FSharpForLoopUp | FSharpForLoopDown -> true | CSharpForLoopUp -> false); let finishIdx,eenvinner = if isFSharpStyle then let v,eenvinner = AllocLocal cenv cgbuf eenvinner true (ilxgenGlobalNng.FreshCompilerGeneratedName ("endLoop",m), cenv.g.ilg.typ_int32) (start,finish) v, eenvinner else -1,eenvinner let _, eenvinner = AllocLocalVal cenv cgbuf v eenvinner None (start,finish) (* note: eenvStack noted stack spill vars are live *) match spFor with | SequencePointAtForLoop(spStart) -> CG.EmitSeqPoint cgbuf spStart; | NoSequencePointAtForLoop -> () GenExpr cenv cgbuf eenv SPSuppress e1 Continue; GenStoreVal cgbuf eenvinner m v; if isFSharpStyle then GenExpr cenv cgbuf eenvinner SPSuppress e2 Continue; EmitSetLocal cgbuf finishIdx EmitGetLocal cgbuf cenv.g.ilg.typ_int32 finishIdx GenGetLocalVal cenv cgbuf eenvinner e2.Range v None; CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp ((if isUp then BI_blt else BI_bgt),finish.CodeLabel,inner.CodeLabel)); else CG.EmitInstr cgbuf (pop 0) Push0 (I_br test.CodeLabel); // .inner CG.SetMarkToHere cgbuf inner; // GenExpr cenv cgbuf eenvinner SPAlways loopBody discard; // v++ or v-- GenGetLocalVal cenv cgbuf eenvinner e2.Range v None; CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_int32]) (mkLdcInt32 1); CG.EmitInstr cgbuf (pop 1) Push0 (if isUp then AI_add else AI_sub); GenStoreVal cgbuf eenvinner m v; // .text CG.SetMarkToHere cgbuf test; // FSharpForLoopUp: if v <> e2 + 1 then goto .inner // FSharpForLoopDown: if v <> e2 - 1 then goto .inner // CSharpStyle: if v < e2 then goto .inner CG.EmitSeqPoint cgbuf e2.Range; GenGetLocalVal cenv cgbuf eenvinner e2.Range v None; let cmp = match dir with FSharpForLoopUp | FSharpForLoopDown -> BI_bne_un | CSharpForLoopUp -> BI_blt let e2Sequel = (CmpThenBrOrContinue (pop 2, I_brcmp(cmp,inner.CodeLabel,finish.CodeLabel))); if isFSharpStyle then EmitGetLocal cgbuf cenv.g.ilg.typ_int32 finishIdx CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_int32]) (mkLdcInt32 1); CG.EmitInstr cgbuf (pop 1) Push0 (if isUp then AI_add else AI_sub); GenSequel cenv eenv.cloc cgbuf e2Sequel else GenExpr cenv cgbuf eenv SPSuppress e2 e2Sequel; // .finish - loop-exit here CG.SetMarkToHere cgbuf finish; // Restore the stack and load the result EmitRestoreStack cgbuf stack; GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate while-loop //-------------------------------------------------------------------------- and GenWhileLoop cenv cgbuf eenv (spWhile,e1,e2,m) sequel = let finish = CG.GenerateDelayMark cgbuf "while_finish" let inner = CG.GenerateDelayMark cgbuf "while_inner" let startTest = CG.GenerateMark cgbuf "startTest" match spWhile with | SequencePointAtWhileLoop(spStart) -> CG.EmitSeqPoint cgbuf spStart; | NoSequencePointAtWhileLoop -> () // SEQUENCE POINTS: Emit a sequence point to cover all of 'while e do' GenExpr cenv cgbuf eenv SPSuppress e1 (CmpThenBrOrContinue (pop 1, I_brcmp(BI_brfalse,finish.CodeLabel,inner.CodeLabel))); CG.SetMarkToHere cgbuf inner; GenExpr cenv cgbuf eenv SPAlways e2 (DiscardThen (Br startTest)); CG.SetMarkToHere cgbuf finish; // SEQUENCE POINTS: Emit a sequence point to cover 'done' if present GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate seq //-------------------------------------------------------------------------- and GenSequential cenv cgbuf eenv spIn (e1,e2,specialSeqFlag,spSeq,_m) sequel = // Compiler generated sequential executions result in suppressions of sequence points on both // left and right of the sequence let spAction,spExpr = (match spSeq with | SequencePointsAtSeq -> SPAlways,SPAlways | SuppressSequencePointOnExprOfSequential -> SPSuppress,spIn | SuppressSequencePointOnStmtOfSequential -> spIn,SPSuppress) match specialSeqFlag with | NormalSeq -> GenExpr cenv cgbuf eenv spAction e1 discard; GenExpr cenv cgbuf eenv spExpr e2 sequel | ThenDoSeq -> GenExpr cenv cgbuf eenv spExpr e1 Continue; GenExpr cenv cgbuf eenv spAction e2 discard; GenSequel cenv eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate IL assembly code. // Polymorphic IL/ILX instructions may be instantiated when polymorphic code is inlined. // We must implement this for the few uses of polymorphic instructions // in the standard libarary. //-------------------------------------------------------------------------- and GenAsmCode cenv cgbuf eenv (il,tyargs,args,returnTys,m) sequel = let ilTyArgs = GenTypesPermitVoid cenv.amap m cenv.g eenv.tyenv tyargs let ilReturnTys = GenTypesPermitVoid cenv.amap m cenv.g eenv.tyenv returnTys let ilAfterInst = il |> List.filter (function AI_nop -> false | _ -> true) |> List.map (fun i -> let err s = errorR(InternalError(sprintf "%s: bad instruction: %A" s i,m)) let modFieldSpec fspec = {fspec with EnclosingType= let ty = fspec.EnclosingType let tspec = ty.TypeSpec mkILTy ty.Boxity (mkILTySpec(tspec.TypeRef, ilTyArgs)) } match i,ilTyArgs with | I_unbox_any (ILType.TypeVar _) ,[tyarg] -> I_unbox_any (tyarg) | I_box (ILType.TypeVar _) ,[tyarg] -> I_box (tyarg) | I_isinst (ILType.TypeVar _) ,[tyarg] -> I_isinst (tyarg) | I_castclass (ILType.TypeVar _) ,[tyarg] -> I_castclass (tyarg) | I_newarr (shape,ILType.TypeVar _) ,[tyarg] -> I_newarr (shape,tyarg) | I_ldelem_any (shape,ILType.TypeVar _) ,[tyarg] -> I_ldelem_any (shape,tyarg) | I_ldelema (ro,_,shape,ILType.TypeVar _) ,[tyarg] -> I_ldelema (ro,false,shape,tyarg) | I_stelem_any (shape,ILType.TypeVar _) ,[tyarg] -> I_stelem_any (shape,tyarg) | I_ldobj (a,b,ILType.TypeVar _) ,[tyarg] -> I_ldobj (a,b,tyarg) | I_stobj (a,b,ILType.TypeVar _) ,[tyarg] -> I_stobj (a,b,tyarg) | I_ldtoken (ILToken.ILType (ILType.TypeVar _)),[tyarg] -> I_ldtoken (ILToken.ILType (tyarg)) | I_sizeof (ILType.TypeVar _) ,[tyarg] -> I_sizeof (tyarg) | I_ldfld (al,vol,fspec) ,_ -> I_ldfld (al,vol,modFieldSpec fspec) | I_ldflda (fspec) ,_ -> I_ldflda (modFieldSpec fspec) | I_stfld (al,vol,fspec) ,_ -> I_stfld (al,vol,modFieldSpec fspec) | I_stsfld (vol,fspec) ,_ -> I_stsfld (vol,modFieldSpec fspec) | I_ldsfld (vol,fspec) ,_ -> I_ldsfld (vol,modFieldSpec fspec) | I_ldsflda (fspec) ,_ -> I_ldsflda (modFieldSpec fspec) | EI_ilzero(ILType.TypeVar _) ,[tyarg] -> EI_ilzero(tyarg) | I_other e,_ when isIlxExtInstr e -> begin match (destIlxExtInstr e),ilTyArgs with | _ -> if not (isNil tyargs) then err "Bad polymorphic ILX instruction"; i end | AI_nop,_ -> i (* These are embedded in the IL for a an initonly ldfld, i.e. *) (* here's the relevant comment from tc.fs *) (* "Add an I_nop if this is an initonly field to make sure we never recognize it as an lvalue. See mkExprAddrOfExpr." *) | _ -> if not (isNil tyargs) then err "Bad polymorphic IL instruction"; i) match ilAfterInst,args,sequel,ilReturnTys with | [ EI_ilzero _ ], _, _, _ -> match tyargs with | [typ] -> GenDefaultValue cenv cgbuf eenv (typ,m) GenSequel cenv eenv.cloc cgbuf sequel | _ -> failwith "Bad polymorphic IL instruction"; // Strip off any ("ceq" x false) when the sequel is a comparison branch and change the BI_brfalse to a BI_brtrue // This is the instruction sequence for "not" // For these we can just generate the argument and change the test (from a brfalse to a brtrue and vice versa) | ([ AI_ceq ], [arg1; Expr.Const((Const.Bool false | Const.SByte 0y| Const.Int16 0s | Const.Int32 0 | Const.Int64 0L | Const.Byte 0uy| Const.UInt16 0us | Const.UInt32 0u | Const.UInt64 0UL),_,_) ], CmpThenBrOrContinue(1,I_brcmp (((BI_brfalse | BI_brtrue) as bi) , label1,label2)), _) -> let bi = match bi with BI_brtrue -> BI_brfalse | _ -> BI_brtrue GenExpr cenv cgbuf eenv SPSuppress arg1 (CmpThenBrOrContinue(pop 1,I_brcmp (bi, label1,label2))) // Query; when do we get a 'ret' in IL assembly code? | [ I_ret ], [arg1],sequel,[_ilRetTy] -> GenExpr cenv cgbuf eenv SPSuppress arg1 Continue; CG.EmitInstr cgbuf (pop 1) Push0 I_ret; GenSequelEndScopes cgbuf sequel // Query; when do we get a 'ret' in IL assembly code? | [ I_ret ], [],sequel,[_ilRetTy] -> CG.EmitInstr cgbuf (pop 1) Push0 I_ret; GenSequelEndScopes cgbuf sequel // 'throw' instructions are a bit of a problem - e.g. let x = (throw ...) in ... expects a value *) // to be left on the stack. But dead-code checking by some versions of the .NET verifier *) // mean that we can't just have fake code after the throw to generate the fake value *) // (nb. a fake value can always be generated by a "ldnull unbox.any ty" sequence *) // So in the worst case we generate a fake (never-taken) branch to a piece of code to generate *) // the fake value *) | [ I_throw ], [arg1],sequel,[ilRetTy] -> match sequelIgnoreEndScopes sequel with | s when IsSequelImmediate s -> (* In most cases we can avoid doing this... *) GenExpr cenv cgbuf eenv SPSuppress arg1 Continue; CG.EmitInstr cgbuf (pop 1) Push0 I_throw; GenSequelEndScopes cgbuf sequel | _ -> let after1 = CG.GenerateDelayMark cgbuf ("fake_join") let after2 = CG.GenerateDelayMark cgbuf ("fake_join") let after3 = CG.GenerateDelayMark cgbuf ("fake_join") CG.EmitInstrs cgbuf (pop 0) Push0 [mkLdcInt32 0; I_brcmp (BI_brfalse,after2.CodeLabel,after1.CodeLabel); ]; CG.SetMarkToHere cgbuf after1; CG.EmitInstrs cgbuf (pop 0) (Push [ilRetTy]) [AI_ldnull; I_unbox_any ilRetTy; I_br after3.CodeLabel ]; CG.SetMarkToHere cgbuf after2; GenExpr cenv cgbuf eenv SPSuppress arg1 Continue; CG.EmitInstr cgbuf (pop 1) Push0 I_throw; CG.SetMarkToHere cgbuf after3; GenSequel cenv eenv.cloc cgbuf sequel; | _ -> // float or float32 or float<_> or float32<_> let g = cenv.g in let anyfpType ty = typeEquivAux EraseMeasures g g.float_ty ty || typeEquivAux EraseMeasures g g.float32_ty ty // Otherwise generate the arguments, and see if we can use a I_brcmp rather than a comparison followed by an I_brfalse/I_brtrue GenExprs cenv cgbuf eenv args; match ilAfterInst,sequel with // NOTE: THESE ARE NOT VALID ON FLOATING POINT DUE TO NaN. Hence INLINE ASM ON FP. MUST BE CAREFULLY WRITTEN | [ AI_clt ], CmpThenBrOrContinue(1,I_brcmp (BI_brfalse, label1,label2)) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bge,label1,label2)); | [ AI_cgt ], CmpThenBrOrContinue(1,I_brcmp (BI_brfalse, label1,label2)) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_ble,label1, label2)); | [ AI_clt_un ], CmpThenBrOrContinue(1,I_brcmp (BI_brfalse, label1,label2)) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bge_un,label1,label2)); | [ AI_cgt_un ], CmpThenBrOrContinue(1,I_brcmp (BI_brfalse, label1,label2)) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_ble_un,label1, label2)); | [ AI_ceq ], CmpThenBrOrContinue(1,I_brcmp (BI_brfalse, label1,label2)) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bne_un,label1, label2)); // THESE ARE VALID ON FP w.r.t. NaN | [ AI_clt ], CmpThenBrOrContinue(1,I_brcmp (BI_brtrue, label1,label2)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_blt,label1, label2)); | [ AI_cgt ], CmpThenBrOrContinue(1,I_brcmp (BI_brtrue, label1,label2)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bgt,label1, label2)); | [ AI_clt_un ], CmpThenBrOrContinue(1,I_brcmp (BI_brtrue, label1,label2)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_blt_un,label1, label2)); | [ AI_cgt_un ], CmpThenBrOrContinue(1,I_brcmp (BI_brtrue, label1,label2)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bgt_un,label1, label2)); | [ AI_ceq ], CmpThenBrOrContinue(1,I_brcmp (BI_brtrue, label1,label2)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_beq,label1, label2)); | _ -> // Failing that, generate the real IL leaving value(s) on the stack CG.EmitInstrs cgbuf (pop args.Length) (Push ilReturnTys) ilAfterInst; // If no return values were specified generate a "unit" if isNil returnTys then GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel else GenSequel cenv eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- // Generate expression quotations //-------------------------------------------------------------------------- and GenQuotation cenv cgbuf eenv (ast,conv,m,ety) sequel = let argTypes,argExprs, astSpec = match !conv with | Some res -> res | None -> try QuotationTranslator.ConvExprPublic (cenv.g, cenv.amap, cenv.viewCcu, QuotationTranslator.IsReflectedDefinition.No) QuotationTranslator.QuotationTranslationEnv.Empty ast with QuotationTranslator.InvalidQuotedTerm e -> error(e) let astPickledBytes = QuotationPickler.pickle astSpec let someTypeInModuleExpr = mkTypeOfExpr cenv m eenv.someTypeInThisAssembly let rawTy = mkRawQuotedExprTy cenv.g let mkList ty els = List.foldBack (mkCons cenv.g ty) els (mkNil cenv.g m ty) let typeExprs = List.map (GenType cenv.amap m cenv.g eenv.tyenv >> (mkTypeOfExpr cenv m)) argTypes let typesExpr = mkList cenv.g.system_Type_typ typeExprs let argsExpr = mkList rawTy argExprs let bytesExpr = Expr.Op(TOp.Bytes(astPickledBytes),[],[],m) let unpickledExpr = mkCallUnpickleQuotation cenv.g m someTypeInModuleExpr typesExpr argsExpr bytesExpr let afterCastExpr = // Detect a typed quotation and insert the cast if needed. The cast should not fail but does // unfortunately involve a "typeOf" computation over a quotation tree. if tyconRefEq cenv.g (tcrefOfAppTy cenv.g ety) cenv.g.expr_tcr then mkCallCastQuotation cenv.g m (List.head (argsOfAppTy cenv.g ety)) unpickledExpr else unpickledExpr GenExpr cenv cgbuf eenv SPSuppress afterCastExpr sequel //-------------------------------------------------------------------------- // Generate calls to IL methods //-------------------------------------------------------------------------- and GenILCall cenv cgbuf eenv (virt,valu,newobj,valUseFlags,isDllImport,ilMethRef:ILMethodRef,enclArgTys,methArgTys,argExprs,returnTys,m) sequel = let hasByrefArg = ilMethRef.ArgTypes |> ILList.exists IsILTypeByref let isSuperInit = match valUseFlags with CtorValUsedAsSuperInit -> true | _ -> false let isBaseCall = match valUseFlags with VSlotDirectCall -> true | _ -> false let ccallInfo = match valUseFlags with PossibleConstrainedCall ty -> Some ty | _ -> None let boxity = (if valu then AsValue else AsObject) let mustGenerateUnitAfterCall = (isNil returnTys) let makesNoCriticalTailcalls = (newobj || not virt) // Don't tailcall for 'newobj', or 'call' to IL code let tail = CanTailcall(valu,ccallInfo,eenv.withinSEH,hasByrefArg,mustGenerateUnitAfterCall,isDllImport,false,makesNoCriticalTailcalls,sequel) let ilEnclArgTys = GenTypeArgs cenv.amap m cenv.g eenv.tyenv enclArgTys let ilMethArgTys = GenTypeArgs cenv.amap m cenv.g eenv.tyenv methArgTys let ilReturnTys = GenTypes cenv.amap m cenv.g eenv.tyenv returnTys let ilMethSpec = mkILMethSpec (ilMethRef,boxity,ilEnclArgTys,ilMethArgTys) let useICallVirt = virt || useCallVirt cenv boxity ilMethSpec isBaseCall // Load the 'this' pointer to pass to the superclass constructor. This argument is not // in the expression tree since it can't be treated like an ordinary value if isSuperInit then CG.EmitInstrs cgbuf (pop 0) (Push [ilMethSpec.EnclosingType]) [ mkLdarg0 ] ; GenExprs cenv cgbuf eenv argExprs; let il = if newobj then [ I_newobj(ilMethSpec,None) ] else match ccallInfo with | Some objArgTy -> let ilObjArgTy = GenType cenv.amap m cenv.g eenv.tyenv objArgTy [ I_callconstraint(tail,ilObjArgTy,ilMethSpec,None) ] | None -> if useICallVirt then [ I_callvirt(tail,ilMethSpec,None) ] else [ I_call(tail,ilMethSpec,None) ] CG.EmitInstrs cgbuf (pop (argExprs.Length + (if isSuperInit then 1 else 0))) (if isSuperInit then Push0 else Push ilReturnTys) il; // Load the 'this' pointer as the pretend 'result' of the isSuperInit operation. // It will be immediately popped in most cases, but may also be used as the target of ome "property set" operations. if isSuperInit then CG.EmitInstrs cgbuf (pop 0) (Push [ilMethSpec.EnclosingType]) [ mkLdarg0 ] ; CommitCallSequel cenv eenv m eenv.cloc cgbuf mustGenerateUnitAfterCall sequel and CommitCallSequel cenv eenv m cloc cgbuf mustGenerateUnitAfterCall sequel = if mustGenerateUnitAfterCall then GenUnitThenSequel cenv eenv m cloc cgbuf sequel else GenSequel cenv cloc cgbuf sequel and GenTraitCall cenv cgbuf eenv (traitInfo, argExprs, m) expr sequel = let minfoOpt = CommitOperationResult (ConstraintSolver.CodegenWitnessThatTypSupportsTraitConstraint cenv.TcVal cenv.g cenv.amap m traitInfo argExprs) match minfoOpt with | None -> let replacementExpr = mkThrow m (tyOfExpr cenv.g expr) (mkExnExpr(cenv.g.mkSysTyconRef ["System"] "NotSupportedException", [ mkString cenv.g m (FSComp.SR.ilDynamicInvocationNotSupported(traitInfo.MemberName))],m)) GenExpr cenv cgbuf eenv SPSuppress replacementExpr sequel | Some expr -> GenExpr cenv cgbuf eenv SPSuppress expr sequel //-------------------------------------------------------------------------- // Generate byref-related operations //-------------------------------------------------------------------------- and GenGetAddrOfRefCellField cenv cgbuf eenv (e,ty,m) sequel = GenExpr cenv cgbuf eenv SPSuppress e Continue; let fref = GenRecdFieldRef m cenv eenv.tyenv (mkRefCellContentsRef cenv.g) [ty] CG.EmitInstrs cgbuf (pop 1) (Push [ILType.Byref fref.ActualType]) [ I_ldflda fref ] ; GenSequel cenv eenv.cloc cgbuf sequel and GenGetValAddr cenv cgbuf eenv (v: ValRef, m) sequel = let vspec = v.Deref let ilTy = GenTypeOfVal cenv eenv vspec match StorageForValRef m v eenv with | Local (idx,None) -> CG.EmitInstrs cgbuf (pop 0) (Push [ILType.Byref ilTy]) [ I_ldloca (uint16 idx) ] ; | Arg idx -> CG.EmitInstrs cgbuf (pop 0) (Push [ILType.Byref ilTy]) [ I_ldarga (uint16 idx) ] ; | StaticField (fspec, _vref, hasLiteralAttr, _ilTyForProperty, _, ilTy, _, _, _) -> if hasLiteralAttr then errorR(Error(FSComp.SR.ilAddressOfLiteralFieldIsInvalid(),m)); let ilTy = if ilTy.IsNominal && ilTy.Boxity = ILBoxity.AsValue then ILType.Byref ilTy else ilTy EmitGetStaticFieldAddr cgbuf ilTy fspec | Env (_,_,ilField,_) -> CG.EmitInstrs cgbuf (pop 0) (Push [ILType.Byref ilTy]) [ mkLdarg0; mkNormalLdflda ilField ]; | Local (_,Some _) | StaticProperty _ | Method _ | Env _ | Unrealized | Null -> errorR(Error(FSComp.SR.ilAddressOfValueHereIsInvalid(v.DisplayName),m)); CG.EmitInstrs cgbuf (pop 1) (Push [ILType.Byref ilTy]) [ I_ldarga (uint16 669 (* random value for post-hoc diagnostic analysis on generated tree *) ) ] ; GenSequel cenv eenv.cloc cgbuf sequel and GenGetByref cenv cgbuf eenv (v:ValRef,m) sequel = GenGetLocalVRef cenv cgbuf eenv m v None; let ilty = GenType cenv.amap m cenv.g eenv.tyenv (destByrefTy cenv.g v.Type) CG.EmitInstrs cgbuf (pop 1) (Push [ilty]) [ mkNormalLdobj ilty ]; GenSequel cenv eenv.cloc cgbuf sequel and GenSetByref cenv cgbuf eenv (v:ValRef,e,m) sequel = GenGetLocalVRef cenv cgbuf eenv m v None; GenExpr cenv cgbuf eenv SPSuppress e Continue; let ilty = GenType cenv.amap m cenv.g eenv.tyenv (destByrefTy cenv.g v.Type) CG.EmitInstrs cgbuf (pop 2) Push0 [ mkNormalStobj ilty ]; GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel and GenDefaultValue cenv cgbuf eenv (ty,m) = let ilTy = GenType cenv.amap m cenv.g eenv.tyenv ty if isRefTy cenv.g ty then CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) AI_ldnull else match tryDestAppTy cenv.g ty with | Some tcref when (tyconRefEq cenv.g cenv.g.system_SByte_tcref tcref || tyconRefEq cenv.g cenv.g.system_Int16_tcref tcref || tyconRefEq cenv.g cenv.g.system_Int32_tcref tcref || tyconRefEq cenv.g cenv.g.system_Bool_tcref tcref || tyconRefEq cenv.g cenv.g.system_Byte_tcref tcref || tyconRefEq cenv.g cenv.g.system_Char_tcref tcref || tyconRefEq cenv.g cenv.g.system_UInt16_tcref tcref || tyconRefEq cenv.g cenv.g.system_UInt32_tcref tcref) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) iLdcZero | Some tcref when (tyconRefEq cenv.g cenv.g.system_Int64_tcref tcref || tyconRefEq cenv.g cenv.g.system_UInt64_tcref tcref) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (iLdcInt64 0L) | Some tcref when (tyconRefEq cenv.g cenv.g.system_Single_tcref tcref) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (iLdcSingle 0.0f) | Some tcref when (tyconRefEq cenv.g cenv.g.system_Double_tcref tcref) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (iLdcDouble 0.0) | _ -> let ilTy = GenType cenv.amap m cenv.g eenv.tyenv ty LocalScope "ilzero" cgbuf (fun scopeMarks -> let locIdx, _ = AllocLocal cenv cgbuf eenv true (ilxgenGlobalNng.FreshCompilerGeneratedName ("default",m), ilTy) scopeMarks // "initobj" (Generated by EmitInitLocal) doesn't work on byref types // But ilzero(&ty) only gets generated in the built-in get-address function so // we can just rely on zeroinit of all IL locals. match ilTy with | ILType.Byref _ -> () | _ -> EmitInitLocal cgbuf ilTy locIdx EmitGetLocal cgbuf ilTy locIdx; ) //-------------------------------------------------------------------------- // Generate generic parameters //-------------------------------------------------------------------------- and GenGenericParam cenv eenv (tp:Typar) = let subTypeConstraints = tp.Constraints |> List.choose (function | TyparConstraint.CoercesTo(ty,_) -> Some(ty) | _ -> None) |> List.map (GenTypeAux cenv.amap tp.Range cenv.g eenv.tyenv VoidNotOK PtrTypesNotOK) let refTypeConstraint = tp.Constraints |> List.exists (function TyparConstraint.IsReferenceType _ -> true | TyparConstraint.SupportsNull _ -> true | _ -> false) let notNullableValueTypeConstraint = tp.Constraints |> List.exists (function TyparConstraint.IsNonNullableStruct _ -> true | _ -> false) let defaultConstructorConstraint = tp.Constraints |> List.exists (function TyparConstraint.RequiresDefaultConstructor _ -> true | _ -> false) { Name= // use the CompiledName if given // Inference variables get given an IL name "TA, TB" etc. let nm = match tp.Data.typar_il_name with | None -> tp.Name | Some nm -> nm // Some special rules apply when compiling Fsharp.Core.dll to avoid a proliferation of [] attributes on type parameters if cenv.g.compilingFslib then match nm with | "U" -> "TResult" | "U1" -> "TResult1" | "U2" -> "TResult2" | _ -> if nm.TrimEnd([| '0' .. '9' |]).Length = 1 then nm elif nm.Length >= 1 && nm.[0] = 'T' && (nm.Length = 1 || not (System.Char.IsLower nm.[1])) then nm else "T" + (String.capitalize nm) else nm; Constraints=mkILTypes subTypeConstraints; Variance=NonVariant; CustomAttrs = mkILCustomAttrs (GenAttrs cenv eenv tp.Attribs); HasReferenceTypeConstraint=refTypeConstraint; HasNotNullableValueTypeConstraint=notNullableValueTypeConstraint; HasDefaultConstructorConstraint= defaultConstructorConstraint } //-------------------------------------------------------------------------- // Generate object expressions as ILX "closures" //-------------------------------------------------------------------------- and GenSlotParam m cenv eenv (TSlotParam(nm,ty,inFlag,outFlag,optionalFlag,attribs)) = let inFlag2,outFlag2,optionalFlag2,paramMarshal2,attribs = GenParamAttribs cenv attribs { Name=nm; Type= GenParamType cenv.amap m cenv.g eenv.tyenv ty; Default=None; Marshal=paramMarshal2; IsIn=inFlag || inFlag2; IsOut=outFlag || outFlag2; IsOptional=optionalFlag || optionalFlag2; CustomAttrs= mkILCustomAttrs (GenAttrs cenv eenv attribs) } and GenFormalSlotsig m cenv eenv (TSlotSig(_,typ,ctps,mtps,paraml,returnTy)) = let paraml = List.concat paraml let ilTy = GenType cenv.amap m cenv.g eenv.tyenv typ let eenvForSlotSig = EnvForTypars (ctps @ mtps) eenv let ilParams = paraml |> List.map (GenSlotParam m cenv eenvForSlotSig) let ilRetTy = GenReturnType cenv.amap m cenv.g eenvForSlotSig.tyenv returnTy let ilReturn = mkILReturn ilRetTy ilTy, ilParams,ilReturn and instSlotParam inst (TSlotParam(nm,ty,inFlag,fl2,fl3,attrs)) = TSlotParam(nm,instType inst ty,inFlag,fl2,fl3,attrs) and GenActualSlotsig m cenv eenv (TSlotSig(_,typ,ctps,mtps,paraml,returnTy)) methTyparsOfOverridingMethod = let paraml = List.concat paraml let instForSlotSig = mkTyparInst (ctps@mtps) (argsOfAppTy cenv.g typ @ generalizeTypars methTyparsOfOverridingMethod) let ilParams = paraml |> List.map (instSlotParam instForSlotSig >> GenSlotParam m cenv eenv) let ilRetTy = GenReturnType cenv.amap m cenv.g eenv.tyenv (Option.map (instType instForSlotSig) returnTy) let ilReturn = mkILReturn ilRetTy ilParams,ilReturn and GenNameOfOverridingMethod cenv (useMethodImpl,(TSlotSig(nameOfOverridenMethod,enclTypOfOverridenMethod,_,_,_,_))) = if useMethodImpl then qualifiedMangledNameOfTyconRef (tcrefOfAppTy cenv.g enclTypOfOverridenMethod) nameOfOverridenMethod else nameOfOverridenMethod and GenMethodImpl cenv eenv (useMethodImpl,(TSlotSig(nameOfOverridenMethod,_,_,_,_,_) as slotsig)) m = let ilOverrideTy,ilOverrideParams,ilOverrideRet = GenFormalSlotsig m cenv eenv slotsig let nameOfOverridingMethod = GenNameOfOverridingMethod cenv (useMethodImpl,slotsig) nameOfOverridingMethod, (fun (ilTyForOverriding,methTyparsOfOverridingMethod) -> let ilOverrideTyRef = ilOverrideTy.TypeRef let ilOverrideMethRef = mkILMethRef(ilOverrideTyRef, ILCallingConv.Instance, nameOfOverridenMethod, List.length (DropErasedTypars methTyparsOfOverridingMethod), (typesOfILParamsList ilOverrideParams), ilOverrideRet.Type) let eenvForOverrideBy = AddTyparsToEnv methTyparsOfOverridingMethod eenv let ilParamsOfOverridingMethod,ilReturnOfOverridingMethod = GenActualSlotsig m cenv eenvForOverrideBy slotsig methTyparsOfOverridingMethod let ilOverrideMethGenericParams = GenGenericParams cenv eenvForOverrideBy methTyparsOfOverridingMethod let ilOverrideMethGenericArgs = mkILFormalGenericArgs ilOverrideMethGenericParams let ilOverrideBy = mkILInstanceMethSpecInTy(ilTyForOverriding, nameOfOverridingMethod, typesOfILParamsList ilParamsOfOverridingMethod, ilReturnOfOverridingMethod.Type, ilOverrideMethGenericArgs) { Overrides = OverridesSpec(ilOverrideMethRef,ilOverrideTy); OverrideBy = ilOverrideBy }) and bindBaseOrThisVarOpt cenv eenv baseValOpt = match baseValOpt with | None -> eenv | Some basev -> AddStorageForVal cenv.g (basev,notlazy (Arg 0)) eenv and fixupVirtualSlotFlags mdef = {mdef with IsHideBySig=true; mdKind = (match mdef.mdKind with | MethodKind.Virtual vinfo -> MethodKind.Virtual {vinfo with IsCheckAccessOnOverride=false } | _ -> failwith "fixupVirtualSlotFlags") } and renameMethodDef nameOfOverridingMethod (mdef : ILMethodDef) = {mdef with Name=nameOfOverridingMethod } and fixupMethodImplFlags mdef = {mdef with Access=ILMemberAccess.Private; IsHideBySig=true; mdKind=(match mdef.mdKind with | MethodKind.Virtual vinfo -> MethodKind.Virtual {vinfo with IsCheckAccessOnOverride=false; IsFinal=true; IsNewSlot=true; } | _ -> failwith "fixupMethodImpl") } and GenObjectMethod cenv eenvinner (cgbuf:CodeGenBuffer) useMethodImpl tmethod = // Check if we're compiling the property as a .NET event let (TObjExprMethod(slotsig,attribs,methTyparsOfOverridingMethod,methodParams,methodBodyExpr,m)) = tmethod let (TSlotSig(nameOfOverridenMethod,_,_,_,_,_)) = slotsig if CompileAsEvent cenv.g attribs then [] else let eenvUnderTypars = AddTyparsToEnv methTyparsOfOverridingMethod eenvinner let ilParamsOfOverridingMethod,ilReturnOfOverridingMethod = GenActualSlotsig m cenv eenvUnderTypars slotsig methTyparsOfOverridingMethod let ilAttribs = GenAttrs cenv eenvinner attribs // Args are stored starting at #1 let methodParams = List.concat methodParams let eenvForMeth = AddStorageForLocalVals cenv.g (methodParams |> List.mapi (fun i v -> (v,Arg i))) eenvUnderTypars let ilMethodBody = CodeGenMethodForExpr cenv cgbuf.mgbuf (SPAlways,[],nameOfOverridenMethod,eenvForMeth,0,0,methodBodyExpr,(if slotSigHasVoidReturnTy slotsig then discardAndReturnVoid else Return)) let nameOfOverridingMethod,methodImplGenerator = GenMethodImpl cenv eenvinner (useMethodImpl,slotsig) methodBodyExpr.Range let mdef = mkILGenericVirtualMethod (nameOfOverridingMethod, ILMemberAccess.Public, GenGenericParams cenv eenvUnderTypars methTyparsOfOverridingMethod, ilParamsOfOverridingMethod, ilReturnOfOverridingMethod, MethodBody.IL ilMethodBody) // fixup attributes to generate a method impl let mdef = if useMethodImpl then fixupMethodImplFlags mdef else mdef let mdef = fixupVirtualSlotFlags mdef let mdef = { mdef with CustomAttrs = mkILCustomAttrs ilAttribs } [(useMethodImpl,methodImplGenerator,methTyparsOfOverridingMethod),mdef] and GenObjectExpr cenv cgbuf eenvouter expr (baseType,baseValOpt,basecall,overrides,interfaceImpls,m) sequel = let cloinfo,_,eenvinner = GetIlxClosureInfo cenv m false None eenvouter expr let cloAttribs = cloinfo.cloAttribs let cloFreeVars = cloinfo.cloFreeVars let ilCloLambdas = cloinfo.ilCloLambdas let cloName = cloinfo.cloName let ilxCloSpec = cloinfo.cloSpec let ilCloFreeVars = cloinfo.cloILFreeVars let ilCloGenericFormals = cloinfo.cloILGenericParams assert(isNil cloinfo.localTypeFuncDirectILGenericParams); let ilCloGenericActuals = cloinfo.cloSpec.GenericArgs let ilCloRetTy = cloinfo.cloILFormalRetTy let ilCloTypeRef = cloinfo.cloSpec.TypeRef let ilTyForOverriding = mkILBoxedTyRaw ilCloTypeRef ilCloGenericActuals let eenvinner = bindBaseOrThisVarOpt cenv eenvinner baseValOpt let ilCtorBody = CodeGenMethodForExpr cenv cgbuf.mgbuf (SPAlways,[],cloName,eenvinner,1,0,basecall,discardAndReturnVoid) let genMethodAndOptionalMethodImpl tmethod useMethodImpl = [ for ((useMethodImpl,methodImplGeneratorFunction,methTyparsOfOverridingMethod),mdef) in GenObjectMethod cenv eenvinner cgbuf useMethodImpl tmethod do let mimpl = (if useMethodImpl then Some(methodImplGeneratorFunction (ilTyForOverriding,methTyparsOfOverridingMethod)) else None) yield (mimpl,mdef) ] let mimpls,mdefs = [ for ov in overrides do yield! genMethodAndOptionalMethodImpl ov (isInterfaceTy cenv.g baseType) for (_,tmethods) in interfaceImpls do for tmethod in tmethods do yield! genMethodAndOptionalMethodImpl tmethod true ] |> List.unzip let mimpls = mimpls |> List.choose id // choose the ones that actually have method impls let interfaceTys = interfaceImpls |> List.map (fst >> GenType cenv.amap m cenv.g eenvinner.tyenv) let attrs = GenAttrs cenv eenvinner cloAttribs let super = (if isInterfaceTy cenv.g baseType then cenv.g.ilg.typ_Object else ilCloRetTy) let interfaceTys = interfaceTys @ (if isInterfaceTy cenv.g baseType then [ilCloRetTy] else []) let cloTypeDef = GenClosureTypeDef cenv (ilCloTypeRef,ilCloGenericFormals,attrs,ilCloFreeVars,ilCloLambdas,ilCtorBody,mdefs,mimpls,super,interfaceTys) cgbuf.mgbuf.AddTypeDef(ilCloTypeRef, cloTypeDef, false, false); CountClosure(); GenGetLocalVals cenv cgbuf eenvouter m cloFreeVars; CG.EmitInstr cgbuf (pop ilCloFreeVars.Length) (Push [ EraseIlxFuncs.mkTyOfLambdas cenv.g.ilxPubCloEnv ilCloLambdas]) (I_newobj (ilxCloSpec.Constructor,None)); GenSequel cenv eenvouter.cloc cgbuf sequel and GenSequenceExpr cenv (cgbuf:CodeGenBuffer) eenvouter (nextEnumeratorValRef:ValRef,pcvref:ValRef,currvref:ValRef,stateVars,generateNextExpr,closeExpr,checkCloseExpr:Expr,seqElemTy, m) sequel = let stateVars = [ pcvref; currvref ] @ stateVars let stateVarsSet = stateVars |> List.map (fun vref -> vref.Deref) |> Zset.ofList valOrder // pretend that the state variables are bound let eenvouter = eenvouter |> AddStorageForLocalVals cenv.g (stateVars |> List.map (fun v -> v.Deref,Local(0,None))) // Get the free variables. Make a lambda to pretend that the 'nextEnumeratorValRef' is bound (it is an argument to GenerateNext) let (cloAttribs,_,_,cloFreeTyvars,cloFreeVars,ilCloTypeRef:ILTypeRef,ilCloFreeVars,eenvinner) = GetIlxClosureFreeVars cenv m None eenvouter [] (mkLambda m nextEnumeratorValRef.Deref (generateNextExpr, cenv.g.int32_ty)) let ilCloSeqElemTy = GenType cenv.amap m cenv.g eenvinner.tyenv seqElemTy let cloRetTy = mkSeqTy cenv.g seqElemTy let ilCloRetTyInner = GenType cenv.amap m cenv.g eenvinner.tyenv cloRetTy let ilCloRetTyOuter = GenType cenv.amap m cenv.g eenvouter.tyenv cloRetTy let ilCloEnumeratorTy = GenType cenv.amap m cenv.g eenvinner.tyenv (mkIEnumeratorTy cenv.g seqElemTy) let ilCloEnumerableTy = GenType cenv.amap m cenv.g eenvinner.tyenv (mkSeqTy cenv.g seqElemTy) let ilCloBaseTy = GenType cenv.amap m cenv.g eenvinner.tyenv (mkAppTy cenv.g.seq_base_tcr [seqElemTy]) let ilCloGenericParams = GenGenericParams cenv eenvinner cloFreeTyvars // Create a new closure class with a single "MoveNext" method that implements the iterator. let ilCloTyInner = mkILFormalBoxedTy ilCloTypeRef ilCloGenericParams let ilCloLambdas = Lambdas_return ilCloRetTyInner let cloref = IlxClosureRef(ilCloTypeRef, ilCloLambdas, ilCloFreeVars) let ilxCloSpec = IlxClosureSpec.Create(cloref, mkILGenericArgs ( GenGenericArgs m eenvouter.tyenv cloFreeTyvars)) let formalClospec = IlxClosureSpec.Create(cloref, mkILFormalGenericArgsRaw ilCloGenericParams) let getFreshMethod = let _,mbody = CodeGenMethod cenv cgbuf.mgbuf (true,[],"GetFreshEnumerator",eenvinner,1,0, (fun cgbuf eenv -> for fv in cloFreeVars do (* TODO: Emit CompareExchange if (System.Threading.Interlocked.CompareExchange(&__state, 1, 0) = 0) then (x :> IEnumerator<'T>) else ... *) /// State variables always get zero-initialized if stateVarsSet.Contains fv then GenDefaultValue cenv cgbuf eenv (fv.Type,m) else GenGetLocalVal cenv cgbuf eenv m fv None; CG.EmitInstr cgbuf (pop ilCloFreeVars.Length) (Push [ilCloRetTyInner]) (I_newobj (formalClospec.Constructor,None)); GenSequel cenv eenv.cloc cgbuf Return), m) mkILNonGenericVirtualMethod("GetFreshEnumerator",ILMemberAccess.Public, [], mkILReturn ilCloEnumeratorTy, MethodBody.IL mbody) |> AddNonUserCompilerGeneratedAttribs cenv.g let closeMethod = // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump let spReq = SPSuppress mkILNonGenericVirtualMethod("Close",ILMemberAccess.Public, [], mkILReturn ILType.Void, MethodBody.IL (CodeGenMethodForExpr cenv cgbuf.mgbuf (spReq,[],"Close",eenvinner,1,0,closeExpr,discardAndReturnVoid))) let checkCloseMethod = // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump let spReq = SPSuppress mkILNonGenericVirtualMethod("get_CheckClose",ILMemberAccess.Public, [], mkILReturn cenv.g.ilg.typ_Bool, MethodBody.IL (CodeGenMethodForExpr cenv cgbuf.mgbuf (spReq,[],"get_CheckClose",eenvinner,1,0,checkCloseExpr,Return))) let generateNextMethod = // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump let spReq = SPSuppress // the 'next enumerator' byref arg is at arg position 1 let eenvinner = eenvinner |> AddStorageForLocalVals cenv.g [ (nextEnumeratorValRef.Deref, Arg 1) ] mkILNonGenericVirtualMethod("GenerateNext",ILMemberAccess.Public, [mkILParamNamed("next",ILType.Byref ilCloEnumerableTy)], mkILReturn cenv.g.ilg.typ_Int32, MethodBody.IL (CodeGenMethodForExpr cenv cgbuf.mgbuf (spReq,[],"GenerateNext",eenvinner,2,0,generateNextExpr,Return))) let lastGeneratedMethod = mkILNonGenericVirtualMethod("get_LastGenerated",ILMemberAccess.Public, [], mkILReturn ilCloSeqElemTy, MethodBody.IL (CodeGenMethodForExpr cenv cgbuf.mgbuf (SPSuppress,[],"get_LastGenerated",eenvinner,1,0,exprForValRef m currvref,Return))) |> AddNonUserCompilerGeneratedAttribs cenv.g let ilCtorBody = mkILSimpleStorageCtor(None, Some ilCloBaseTy.TypeSpec, ilCloTyInner, [], ILMemberAccess.Assembly).MethodBody let attrs = GenAttrs cenv eenvinner cloAttribs let clo = GenClosureTypeDef cenv (ilCloTypeRef,ilCloGenericParams,attrs,ilCloFreeVars,ilCloLambdas,ilCtorBody,[generateNextMethod;closeMethod;checkCloseMethod;lastGeneratedMethod;getFreshMethod],[],ilCloBaseTy,[]) cgbuf.mgbuf.AddTypeDef(ilCloTypeRef, clo, false, false); CountClosure(); for fv in cloFreeVars do /// State variables always get zero-initialized if stateVarsSet.Contains fv then GenDefaultValue cenv cgbuf eenvouter (fv.Type,m) else GenGetLocalVal cenv cgbuf eenvouter m fv None; CG.EmitInstr cgbuf (pop ilCloFreeVars.Length) (Push [ilCloRetTyOuter]) (I_newobj (ilxCloSpec.Constructor,None)); GenSequel cenv eenvouter.cloc cgbuf sequel /// Generate the class for a closure type definition and GenClosureTypeDef cenv (tref:ILTypeRef, ilGenParams, attrs, ilCloFreeVars, ilCloLambdas, ilCtorBody, mdefs, mimpls,ext, ilIntfTys) = { Name = tref.Name; Layout = ILTypeDefLayout.Auto; Access = ComputeTypeAccess tref true; GenericParams = ilGenParams; CustomAttrs = mkILCustomAttrs(attrs @ [mkCompilationMappingAttr cenv.g (int SourceConstructFlags.Closure) ]); Fields = emptyILFields; InitSemantics=ILTypeInit.BeforeField; IsSealed=true; IsAbstract=false; tdKind=mkIlxTypeDefKind (IlxTypeDefKind.Closure { cloSource=None; cloFreeVars=ilCloFreeVars; cloStructure=ilCloLambdas; cloCode=notlazy ilCtorBody }); Events= emptyILEvents; Properties = emptyILProperties; Methods= mkILMethods mdefs; MethodImpls= mkILMethodImpls mimpls; IsSerializable= cenv.opts.netFxHasSerializableAttribute; IsComInterop= false; IsSpecialName= true; NestedTypes=emptyILTypeDefs; Encoding= ILDefaultPInvokeEncoding.Auto; Implements= mkILTypes ilIntfTys; Extends= Some ext; SecurityDecls= emptyILSecurityDecls; HasSecurity=false; } and GenGenericParams cenv eenv tps = tps |> DropErasedTypars |> List.map (GenGenericParam cenv eenv) and GenGenericArgs m (tyenv:TypeReprEnv) tps = tps |> DropErasedTypars |> List.map (fun c -> (mkILTyvarTy tyenv.[c,m])) /// Generate the closure class for a function and GenLambdaClosure cenv (cgbuf:CodeGenBuffer) eenv isLocalTypeFunc selfv expr = match expr with | Expr.Lambda (_,_,_,_,_,m,_) | Expr.TyLambda(_,_,_,m,_) -> let cloinfo,body,eenvinner = GetIlxClosureInfo cenv m isLocalTypeFunc selfv eenv expr let entryPointInfo = match selfv with | Some v -> [(v, BranchCallClosure (cloinfo.cloArityInfo))] | _ -> [] let ilCloBody = CodeGenMethodForExpr cenv cgbuf.mgbuf (SPAlways,entryPointInfo,cloinfo.cloName,eenvinner,1,0,body,Return) let ilCloTypeRef = cloinfo.cloSpec.TypeRef let clo = if isLocalTypeFunc then // Work out the contract type and generate a class with an abstract method for this type let (ilContractGenericParams,ilContractMethTyargs,ilContractTySpec:ILTypeSpec,ilContractFormalRetTy) = GenNamedLocalTypeFuncContractInfo cenv eenv m cloinfo let ilContractTypeRef = ilContractTySpec.TypeRef let ilContractTy = mkILFormalBoxedTy ilContractTypeRef ilContractGenericParams let ilContractCtor = mkILNonGenericEmptyCtor None cenv.g.ilg.typ_Object let ilContractMeths = [ilContractCtor; mkILGenericVirtualMethod("DirectInvoke",ILMemberAccess.Assembly,ilContractMethTyargs,[],mkILReturn ilContractFormalRetTy, MethodBody.Abstract) ] let ilContractTypeDef = { Name = ilContractTypeRef.Name; Layout = ILTypeDefLayout.Auto; Access = ComputeTypeAccess ilContractTypeRef true; GenericParams = ilContractGenericParams; CustomAttrs = mkILCustomAttrs [mkCompilationMappingAttr cenv.g (int SourceConstructFlags.Closure) ]; Fields = emptyILFields; InitSemantics=ILTypeInit.BeforeField; IsSealed=false; // the contract type is an abstract type and not sealed IsAbstract=true; // the contract type is an abstract type tdKind=ILTypeDefKind.Class; Events= emptyILEvents; Properties = emptyILProperties; Methods= mkILMethods ilContractMeths; MethodImpls= emptyILMethodImpls; IsSerializable= cenv.opts.netFxHasSerializableAttribute; IsComInterop=false; IsSpecialName= true; NestedTypes=emptyILTypeDefs; Encoding= ILDefaultPInvokeEncoding.Auto; Implements= mkILTypes []; Extends= Some cenv.g.ilg.typ_Object; SecurityDecls= emptyILSecurityDecls; HasSecurity=false; } cgbuf.mgbuf.AddTypeDef(ilContractTypeRef, ilContractTypeDef, false, false); let ilCtorBody = mkILMethodBody (true,emptyILLocals,8,nonBranchingInstrsToCode (mkCallBaseConstructor(ilContractTy,[])), None ) let cloMethods = [ mkILGenericVirtualMethod("DirectInvoke",ILMemberAccess.Assembly,cloinfo.localTypeFuncDirectILGenericParams,[],mkILReturn (cloinfo.cloILFormalRetTy), MethodBody.IL ilCloBody) ] let cloTypeDef = GenClosureTypeDef cenv (ilCloTypeRef,cloinfo.cloILGenericParams,[],cloinfo.cloILFreeVars,cloinfo.ilCloLambdas,ilCtorBody,cloMethods,[],ilContractTy,[]) cloTypeDef else GenClosureTypeDef cenv (ilCloTypeRef,cloinfo.cloILGenericParams,[],cloinfo.cloILFreeVars,cloinfo.ilCloLambdas,ilCloBody,[],[],cenv.g.ilg.typ_Object,[]) CountClosure(); cgbuf.mgbuf.AddTypeDef(ilCloTypeRef, clo, false, false); cloinfo,m | _ -> failwith "GenLambda: not a lambda" and GenLambdaVal cenv (cgbuf:CodeGenBuffer) eenv (cloinfo,m) = GenGetLocalVals cenv cgbuf eenv m cloinfo.cloFreeVars; CG.EmitInstr cgbuf (pop cloinfo.cloILFreeVars.Length) (Push [EraseIlxFuncs.mkTyOfLambdas cenv.g.ilxPubCloEnv cloinfo.ilCloLambdas]) (I_newobj (cloinfo.cloSpec.Constructor,None)) and GenLambda cenv cgbuf eenv isLocalTypeFunc selfv expr sequel = let cloinfo,m = GenLambdaClosure cenv cgbuf eenv isLocalTypeFunc selfv expr GenLambdaVal cenv cgbuf eenv (cloinfo,m); GenSequel cenv eenv.cloc cgbuf sequel and GenTypeOfVal cenv eenv (v:Val) = GenType cenv.amap v.Range cenv.g eenv.tyenv v.Type and GenFreevar cenv m eenvouter tyenvinner (fv:Val) = match StorageForVal m fv eenvouter with // Local type functions | Local(_,Some _) | Env(_,_,_,Some _) -> cenv.g.ilg.typ_Object #if DEBUG // Check for things that should never make it into the free variable set. Only do this in debug for performance reasons | (StaticField _ | StaticProperty _ | Method _ | Unrealized | Null) -> error(InternalError("GenFreevar: compiler error: unexpected unrealized value",fv.Range)) #endif | _ -> GenType cenv.amap m cenv.g tyenvinner fv.Type and GetIlxClosureFreeVars cenv m selfv eenvouter takenNames expr = // Choose a base name for the closure let basename = let boundv = eenvouter.letBoundVars |> List.tryFind (fun v -> not v.IsCompilerGenerated) match boundv with | Some v -> v.CompiledName | None -> "clo" // Get a unique stamp for the closure. This must be stable for things that can be part of a let rec. let uniq = match expr with | Expr.Obj (uniq,_,_,_,_,_,_) | Expr.Lambda (uniq,_,_,_,_,_,_) | Expr.TyLambda(uniq,_,_,_,_) -> uniq | _ -> newUnique() // Choose a name for the closure let ilCloTypeRef = // FSharp 1.0 bug 3404: System.Reflection doesn't like '.' and '`' in type names let basenameSafeForUseAsTypename = CleanUpGeneratedTypeName basename let suffixmark = expr.Range let cloName = globalStableNameGenerator.GetUniqueCompilerGeneratedName(basenameSafeForUseAsTypename,suffixmark,uniq) NestedTypeRefForCompLoc eenvouter.cloc cloName // Collect the free variables of the closure let cloFreeVarResults = freeInExpr CollectTyparsAndLocals expr // Partition the free variables when some can be accessed from places besides the immediate environment // Also filter out the current value being bound, if any, as it is available from the "this" // pointer which gives the current closure itself. This is in the case e.g. let rec f = ... f ... let cloFreeVars = cloFreeVarResults.FreeLocals |> Zset.elements |> List.filter (fun fv -> match StorageForVal m fv eenvouter with | (StaticField _ | StaticProperty _ | Method _ | Unrealized | Null) -> false | _ -> match selfv with | Some v -> not (valRefEq cenv.g (mkLocalValRef fv) v) | _ -> true) // The general shape is: // {LAM . expr }[free-typars] : overall-type[contract-typars] // Then // internal-typars = free-typars - contract-typars // // In other words, the free type variables get divided into two sets // -- "contract" ones, which are part of the return type. We separate these to enable use to // bake our own function base contracts for local type functions // // -- "internal" ones, which get used internally in the implementation let cloContractFreeTyvarSet = (freeInType CollectTypars (tyOfExpr cenv.g expr)).FreeTypars let cloInternalFreeTyvars = Zset.diff cloFreeVarResults.FreeTyvars.FreeTypars cloContractFreeTyvarSet |> Zset.elements let cloContractFreeTyvars = cloContractFreeTyvarSet |> Zset.elements let cloFreeTyvars = cloContractFreeTyvars @ cloInternalFreeTyvars let cloAttribs = [] let eenvinner = eenvouter |> EnvForTypars cloFreeTyvars let ilCloTyInner = let ilCloGenericParams = GenGenericParams cenv eenvinner cloFreeTyvars mkILFormalBoxedTy ilCloTypeRef ilCloGenericParams // If generating a named closure, add the closure itself as a var, available via "arg0" . // The latter doesn't apply for the delegate implementation of closures. // Build the environment that is active inside the closure itself let eenvinner = eenvinner |> AddStorageForLocalVals cenv.g (match selfv with | Some v -> [(v.Deref, Arg 0)] | _ -> []) let ilCloFreeVars = let ilCloFreeVarNames = ChooseFreeVarNames takenNames (List.map nameOfVal cloFreeVars) let ilCloFreeVars = (cloFreeVars,ilCloFreeVarNames) ||> List.map2 (fun fv nm -> mkILFreeVar (nm,fv.IsCompilerGenerated, GenFreevar cenv m eenvouter eenvinner.tyenv fv)) ilCloFreeVars let ilCloFreeVarStorage = (cloFreeVars,ilCloFreeVars) ||> List.mapi2 (fun i v fv -> let localCloInfo = match StorageForVal m v eenvouter with | Local(_,localCloInfo) | Env(_,_,_,localCloInfo) -> localCloInfo | _ -> None let ilField = mkILFieldSpecInTy (ilCloTyInner,fv.fvName,fv.fvType) (v,Env(ilCloTyInner,i,ilField,localCloInfo))) let eenvinner = eenvinner |> AddStorageForLocalVals cenv.g ilCloFreeVarStorage // Return a various results (cloAttribs,cloInternalFreeTyvars,cloContractFreeTyvars,cloFreeTyvars,cloFreeVars,ilCloTypeRef,Array.ofList ilCloFreeVars,eenvinner) and GetIlxClosureInfo cenv m isLocalTypeFunc selfv eenvouter expr = let returnTy = match expr with | Expr.Lambda (_,_,_,_,_,_,returnTy) | Expr.TyLambda(_,_,_,_,returnTy) -> returnTy | Expr.Obj(_,typ,_,_,_,_,_) -> typ | _ -> failwith "GetIlxClosureInfo: not a lambda expression" // Determine the structure of the closure. We do this before analyzing free variables to // determine the taken argument names. let tvsl, vs, body, returnTy = let rec getCallStructure tvacc vacc (e,ety) = match e with | Expr.TyLambda(_,tvs,body,_m,bty) -> getCallStructure (tvs :: tvacc) vacc (body,bty) | Expr.Lambda (_,_,_,vs,body,_,bty) when not isLocalTypeFunc -> // Transform a lambda taking untupled arguments into one // taking only a single tupled argument if necessary. REVIEW: do this earlier let tupledv, body = MultiLambdaToTupledLambda vs body getCallStructure tvacc (tupledv :: vacc) (body,bty) | _ -> (List.rev tvacc, List.rev vacc, e, ety) getCallStructure [] [] (expr,returnTy) let takenNames = vs |> List.map (fun v -> v.CompiledName) // Get the free variables and the information about the closure, add the free variables to the environment let (cloAttribs,cloInternalFreeTyvars,cloContractFreeTyvars,_,cloFreeVars,ilCloTypeRef,ilCloFreeVars,eenvinner) = GetIlxClosureFreeVars cenv m selfv eenvouter takenNames expr // Put the type and value arguments into the environment let rec getClosureArgs eenv ntmargs tvsl (vs:Val list) = match tvsl, vs with | tvs :: rest, _ -> let eenv = AddTyparsToEnv tvs eenv let l,eenv = getClosureArgs eenv ntmargs rest vs let lambdas = (tvs, l) ||> List.foldBack (fun tv sofar -> Lambdas_forall(GenGenericParam cenv eenv tv,sofar)) lambdas,eenv | [], v :: rest -> let nm = v.CompiledName let l,eenv = let eenv = AddStorageForVal cenv.g (v,notlazy (Arg ntmargs)) eenv getClosureArgs eenv (ntmargs+1) [] rest let lambdas = Lambdas_lambda (mkILParamNamed(nm,GenTypeOfVal cenv eenv v),l) lambdas,eenv | _ -> let returnTy' = GenType cenv.amap m cenv.g eenv.tyenv returnTy Lambdas_return returnTy', eenv // start at arg number 1 as "this" pointer holds the current closure let ilCloLambdas,eenvinner = getClosureArgs eenvinner 1 tvsl vs // Arity info: one argument at each position let narginfo = vs |> List.map (fun _ -> 1) // Generate the ILX view of the lambdas let ilReturnTy = GenType cenv.amap m cenv.g eenvinner.tyenv returnTy // The general shape is: // {LAM . expr }[free-typars] : overall-type[contract-typars] // Then // internal-typars = free-typars - contract-typars // // For a local type function closure, this becomes // class Contract { // abstract DirectInvoke : overall-type // } // // class ContractImplementation : Contract { // override DirectInvoke : overall-type { expr } // } // // For a non-local type function closure, this becomes // // class FunctionImplementation : FSharpTypeFunc { // override Specialize : overall-type { expr } // } // // For a normal function closure, is empty, and this becomes // // class FunctionImplementation : overall-type { // override Invoke(..) { expr } // } // In other words, the free type variables get divided into two sets // -- "contract" ones, which are part of the return type. We separate these to enable use to // bake our own function base contracts for local type functions // // -- "internal" ones, which get used internally in the implementation // // There are also "direct" and "indirect" type variables, which are part of the lambdas of the type function. // Direct type variables are only used for local type functions, and indirect type variables only used for first class // function values. /// Compute the contract if it is a local type function let ilContractGenericParams = GenGenericParams cenv eenvinner cloContractFreeTyvars let ilContractGenericActuals = GenGenericArgs m eenvouter.tyenv cloContractFreeTyvars let ilInternalGenericParams = GenGenericParams cenv eenvinner cloInternalFreeTyvars let ilInternalGenericActuals = GenGenericArgs m eenvouter.tyenv cloInternalFreeTyvars let ilCloGenericFormals = ilContractGenericParams @ ilInternalGenericParams let ilCloGenericActuals = ilContractGenericActuals @ ilInternalGenericActuals let ilDirectGenericParams,ilReturnTy,ilCloLambdas = if isLocalTypeFunc then let rec strip lambdas acc = match lambdas with | Lambdas_forall(gp,r) -> strip r (gp::acc) | Lambdas_return returnTy -> List.rev acc,returnTy,lambdas | _ -> failwith "AdjustNamedLocalTypeFuncIlxClosureInfo: local functions can currently only be type functions" strip ilCloLambdas [] else [],ilReturnTy,ilCloLambdas let ilxCloSpec = IlxClosureSpec.Create(IlxClosureRef(ilCloTypeRef, ilCloLambdas, ilCloFreeVars), mkILGenericArgs ilCloGenericActuals) let cloinfo = { cloExpr=expr; cloName=ilCloTypeRef.Name; cloArityInfo =narginfo; ilCloLambdas=ilCloLambdas; cloILFreeVars = ilCloFreeVars; cloILFormalRetTy=ilReturnTy; cloSpec = ilxCloSpec; cloILGenericParams = ilCloGenericFormals; cloFreeVars=cloFreeVars; cloAttribs=cloAttribs; localTypeFuncContractFreeTypars = cloContractFreeTyvars; localTypeFuncInternalFreeTypars = cloInternalFreeTyvars; localTypeFuncILGenericArgs = ilContractGenericActuals; localTypeFuncDirectILGenericParams = ilDirectGenericParams; } cloinfo,body,eenvinner //-------------------------------------------------------------------------- // Named local type functions //-------------------------------------------------------------------------- and IsNamedLocalTypeFuncVal g (v:Val) expr = not v.IsCompiledAsTopLevel && IsGenericValWithGenericContraints g v && (match stripExpr expr with Expr.TyLambda _ -> true | _ -> false) /// Generate the information relecant to the contract portion of a named local type function and GenNamedLocalTypeFuncContractInfo cenv eenv m cloinfo = let ilCloTypeRef = cloinfo.cloSpec.TypeRef let ilContractTypeRef = ILTypeRef.Create(scope=ilCloTypeRef.Scope,enclosing=ilCloTypeRef.Enclosing,name=ilCloTypeRef.Name + "$contract") let eenvForContract = EnvForTypars cloinfo.localTypeFuncContractFreeTypars eenv let ilContractGenericParams = GenGenericParams cenv eenv cloinfo.localTypeFuncContractFreeTypars let tvs,contractRetTy = match cloinfo.cloExpr with | Expr.TyLambda(_,tvs,_,_,bty) -> tvs, bty | e -> [], tyOfExpr cenv.g e let eenvForContract = AddTyparsToEnv tvs eenvForContract let ilContractMethTyargs = GenGenericParams cenv eenvForContract tvs let ilContractFormalRetTy = GenType cenv.amap m cenv.g eenvForContract.tyenv contractRetTy ilContractGenericParams,ilContractMethTyargs,mkILTySpec(ilContractTypeRef,cloinfo.localTypeFuncILGenericArgs),ilContractFormalRetTy /// Generate a new delegate construction including a clousre class if necessary. This is a lot like generating function closures /// and object expression closures, and most of the code is shared. and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod((TSlotSig(_,delegateTy, _,_,_, _) as slotsig),_attribs,methTyparsOfOverridingMethod,tmvs,body,_),m) sequel = // Get the instantiation of the delegate type let ilCtxtDelTy = GenType cenv.amap m cenv.g eenvouter.tyenv delegateTy let tmvs = List.concat tmvs // Yuck. TLBIMP.EXE generated APIs use UIntPtr for the delegate ctor. let useUIntPtrForDelegateCtor = try if isILAppTy cenv.g delegateTy then let tcref = tcrefOfAppTy cenv.g delegateTy let _,_,tdef = tcref.ILTyconInfo match tdef.Methods.FindByName ".ctor" with | [ctorMDef] -> match ctorMDef.Parameters |> ILList.toList with | [ _;p2 ] -> (p2.Type.TypeSpec.Name = "System.UIntPtr") | _ -> false | _ -> false else false with _ -> false // Work out the free type variables for the morphing thunk let takenNames = List.map nameOfVal tmvs let (cloAttribs,_,_,cloFreeTyvars,cloFreeVars,ilDelegeeTypeRef,ilCloFreeVars,eenvinner) = GetIlxClosureFreeVars cenv m None eenvouter takenNames expr let ilDelegeeGenericParams = GenGenericParams cenv eenvinner cloFreeTyvars let ilDelegeeGenericActualsInner = mkILFormalGenericArgs ilDelegeeGenericParams // Create a new closure class with a single "delegee" method that implements the delegate. let delegeeMethName = "Invoke" let ilDelegeeTyInner = mkILBoxedTy ilDelegeeTypeRef ilDelegeeGenericActualsInner let envForDelegeeUnderTypars = AddTyparsToEnv methTyparsOfOverridingMethod eenvinner // The slot sig contains a formal instantiation. When creating delegates we're only // interested in the actual instantiation since we don't have to emit a method impl. let ilDelegeeParams,ilDelegeeRet = GenActualSlotsig m cenv envForDelegeeUnderTypars slotsig methTyparsOfOverridingMethod let numthis = 1 let envForDelegeeMeth = AddStorageForLocalVals cenv.g (List.mapi (fun i v -> (v,Arg (i+numthis))) tmvs) envForDelegeeUnderTypars let ilMethodBody = CodeGenMethodForExpr cenv cgbuf.mgbuf (SPAlways,[],delegeeMethName,envForDelegeeMeth,1,0,body,(if slotSigHasVoidReturnTy slotsig then discardAndReturnVoid else Return)) let delegeeInvokeMeth = mkILNonGenericInstanceMethod (delegeeMethName,ILMemberAccess.Assembly, ilDelegeeParams, ilDelegeeRet, MethodBody.IL ilMethodBody) let delegeeCtorMeth = mkILSimpleStorageCtor(None, Some cenv.g.ilg.tspec_Object, ilDelegeeTyInner, [], ILMemberAccess.Assembly) let ilCtorBody = delegeeCtorMeth.MethodBody let ilCloLambdas = Lambdas_return ilCtxtDelTy let ilAttribs = GenAttrs cenv eenvinner cloAttribs let clo = GenClosureTypeDef cenv (ilDelegeeTypeRef,ilDelegeeGenericParams,ilAttribs,ilCloFreeVars,ilCloLambdas,ilCtorBody,[delegeeInvokeMeth],[],cenv.g.ilg.typ_Object,[]) cgbuf.mgbuf.AddTypeDef(ilDelegeeTypeRef, clo, false, false); CountClosure(); let ctxtGenericArgsForDelegee = GenGenericArgs m eenvouter.tyenv cloFreeTyvars let ilxCloSpec = IlxClosureSpec.Create(IlxClosureRef(ilDelegeeTypeRef, ilCloLambdas, ilCloFreeVars), mkILGenericArgs ctxtGenericArgsForDelegee) GenGetLocalVals cenv cgbuf eenvouter m cloFreeVars; CG.EmitInstr cgbuf (pop ilCloFreeVars.Length) (Push [EraseIlxFuncs.mkTyOfLambdas cenv.g.ilxPubCloEnv ilCloLambdas]) (I_newobj (ilxCloSpec.Constructor,None)); let ilDelegeeTyOuter = mkILBoxedTy ilDelegeeTypeRef ctxtGenericArgsForDelegee let ilDelegeeInvokeMethOuter = mkILNonGenericInstanceMethSpecInTy (ilDelegeeTyOuter,"Invoke",typesOfILParamsList ilDelegeeParams, ilDelegeeRet.Type) let ilDelegeeCtorMethOuter = mkCtorMethSpecForDelegate cenv.g.ilg (ilCtxtDelTy,useUIntPtrForDelegateCtor) CG.EmitInstr cgbuf (pop 0) (Push [cenv.g.ilg.typ_IntPtr]) (I_ldftn ilDelegeeInvokeMethOuter) CG.EmitInstr cgbuf (pop 2) (Push [ilCtxtDelTy]) (I_newobj(ilDelegeeCtorMethOuter,None)); GenSequel cenv eenvouter.cloc cgbuf sequel //------------------------------------------------------------------------- // Generate statically-resolved conditionals used for type-directed optimizations. //------------------------------------------------------------------------- and GenStaticOptimization cenv cgbuf eenv (constraints,e2,e3,_m) sequel = let e = if DecideStaticOptimizations cenv.g constraints = 1 then e2 else e3 GenExpr cenv cgbuf eenv SPSuppress e sequel //------------------------------------------------------------------------- // Generate discrimination trees //------------------------------------------------------------------------- and IsSequelImmediate sequel = match sequel with (* All of these can be done at the end of each branch - we don't need a real join point *) | Return | ReturnVoid | Br _ | LeaveHandler _ -> true | DiscardThen sequel -> IsSequelImmediate sequel | _ -> false /// Generate a point where several branches of control flow can merge back together, e.g. after a conditional /// or 'match'. and GenJoinPoint cenv cgbuf pos eenv ty m sequel = // What the join point does depends on the contents of the sequel. For example, if the sequal is "return" then // each branch can just return and no true join point is needed. match sequel with // All of these can be done at the end of each branch - we don't need a real join point | _ when IsSequelImmediate sequel -> let stackAfterJoin = cgbuf.GetCurrentStack() let afterJoin = CG.GenerateDelayMark cgbuf (pos + "_join") sequel,afterJoin,stackAfterJoin,Continue // We end scopes at the join point, if any | EndLocalScope(sq,mark) -> let sequelNow,afterJoin,stackAfterJoin,sequelAfterJoin = GenJoinPoint cenv cgbuf pos eenv ty m sq sequelNow,afterJoin,stackAfterJoin,EndLocalScope(sequelAfterJoin,mark) // If something non-trivial happens after a discard then generate a join point, but first discard the value (often this means we won't generate it at all) | DiscardThen sequel -> let stackAfterJoin = cgbuf.GetCurrentStack() let afterJoin = CG.GenerateDelayMark cgbuf (pos + "_join") DiscardThen (Br afterJoin),afterJoin,stackAfterJoin,sequel // The others (e.g. Continue, LeaveFilter and CmpThenBrOrContinue) can't be done at the end of each branch. We must create a join point. | _ -> let pushed = GenType cenv.amap m cenv.g eenv.tyenv ty let stackAfterJoin = (pushed :: (cgbuf.GetCurrentStack())) let afterJoin = CG.GenerateDelayMark cgbuf (pos + "_join") // go to the join point Br afterJoin, afterJoin,stackAfterJoin,sequel and GenMatch cenv cgbuf eenv (spBind,_exprm,tree,targets,m,ty) sequel = match spBind with | SequencePointAtBinding m -> CG.EmitSeqPoint cgbuf m | NoSequencePointAtDoBinding | NoSequencePointAtLetBinding | NoSequencePointAtInvisibleBinding | NoSequencePointAtStickyBinding -> () // The target of branch needs a sequence point. // If we don't give it one it will get entirely the wrong sequence point depending on earlier codegen // Note we're not interested in having pattern matching and decision trees reveal their inner working. // Hence at each branch target we 'reassert' the overall sequence point that was active as we came into the match. // // NOTE: sadly this causes multiple sequence points to appear for the "initial" location of an if/then/else or match. let activeSP = cgbuf.GetLastSequencePoint() let repeatSP() = match activeSP with | None -> () | Some src -> if activeSP <> cgbuf.GetLastSequencePoint() then CG.EmitSeqPoint cgbuf src // First try the common cases where we don't need a join point. match tree with | TDSuccess _ -> failwith "internal error: matches that immediately succeed should have been normalized using mkAndSimplifyMatch" | _ -> // Create a join point let stackAtTargets = cgbuf.GetCurrentStack() // the stack at the target of each clause let (sequelOnBranches,afterJoin,stackAfterJoin,sequelAfterJoin) = GenJoinPoint cenv cgbuf "match" eenv ty m sequel // Stack: "stackAtTargets" is "stack prior to any match-testing" and also "stack at the start of each branch-RHS". // match-testing (dtrees) should not contribute to the stack. // Each branch-RHS (targets) may contribute to the stack, leaving it in the "stackAfterJoin" state, for the join point. // Since code is branching and joining, the cgbuf stack is maintained manually. GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequelOnBranches; CG.SetMarkToHere cgbuf afterJoin; //assert(cgbuf.GetCurrentStack() = stackAfterJoin); // REVIEW: Since gen_dtree* now sets stack, stack should be stackAfterJoin at this point... CG.SetStack cgbuf stackAfterJoin; // If any values are left on the stack after the join then we're certainly going to do something with them // For example, we may be about to execute a 'stloc' for // // let y2 = if System.DateTime.Now.Year < 2000 then 1 else 2 // // or a 'stelem' for // // arr.[0] <- if System.DateTime.Now.Year > 2000 then 1 else 2 // // In both cases, any instructions that come after this point will be falsely associated with the last branch of the control // prior to the join point. This is base, e.g. see FSharp 1.0 bug 5155 if nonNil stackAfterJoin then cgbuf.EmitStartOfHiddenCode(); GenSequel cenv eenv.cloc cgbuf sequelAfterJoin // Accumulate the decision graph as we go and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequel = let targetInfos = GenDecisionTreeAndTargetsInner cenv cgbuf (CG.GenerateDelayMark cgbuf "start_dtree") stackAtTargets eenv tree targets repeatSP (IntMap.empty()) sequel GenPostponedDecisionTreeTargets cenv cgbuf stackAtTargets targetInfos sequel and TryFindTargetInfo targetInfos n = match IntMap.tryFind n targetInfos with | Some (targetInfo,_) -> Some targetInfo | None -> None and GenDecisionTreeAndTargetsInner cenv cgbuf inplab stackAtTargets eenv tree targets repeatSP targetInfos sequel = CG.SetStack cgbuf stackAtTargets; // Set the expected initial stack. match tree with | TDBind(bind,rest) -> CG.SetMarkToHere cgbuf inplab; let startScope,endScope as scopeMarks = StartDelayedLocalScope "dtreeBind" cgbuf let eenv = AllocStorageForBind cenv cgbuf scopeMarks eenv bind let sp = GenSequencePointForBind cenv cgbuf eenv bind CG.SetMarkToHere cgbuf startScope; GenBindAfterSequencePoint cenv cgbuf eenv sp bind; // We don't get the scope marks quite right for dtree-bound variables. This is because // we effectively lose an EndLocalScope for all dtrees that go to the same target // So we just pretend that the variable goes out of scope here. CG.SetMarkToHere cgbuf endScope; let bodyLabel = CG.GenerateDelayMark cgbuf "decisionTreeBindBody" CG.EmitInstr cgbuf (pop 0) Push0 (I_br bodyLabel.CodeLabel); GenDecisionTreeAndTargetsInner cenv cgbuf bodyLabel stackAtTargets eenv rest targets repeatSP targetInfos sequel | TDSuccess (es,targetIdx) -> GenDecisionTreeSuccess cenv cgbuf inplab stackAtTargets eenv es targetIdx targets repeatSP targetInfos sequel | TDSwitch(e, cases, dflt,m) -> GenDecisionTreeSwitch cenv cgbuf inplab stackAtTargets eenv e cases dflt m targets repeatSP targetInfos sequel and GetTarget (targets:_[]) n = if n >= targets.Length then failwith "GetTarget: target not found in decision tree"; targets.[n] and GenDecisionTreeSuccess cenv cgbuf inplab stackAtTargets eenv es targetIdx targets repeatSP targetInfos sequel = let (TTarget(vs,successExpr,spTarget)) = GetTarget targets targetIdx match TryFindTargetInfo targetInfos targetIdx with | Some (_,targetMarkAfterBinds,eenvAtTarget,_,_,_,_,_,_,_) -> // If not binding anything we can go directly to the targetMarkAfterBinds point // This is useful to avoid lots of branches e.g. in match A | B | C -> e // In this case each case will just go straight to "e" if FlatList.isEmpty vs then CG.SetMark cgbuf inplab targetMarkAfterBinds; else CG.SetMarkToHere cgbuf inplab; repeatSP(); // It would be better not to emit any expressions here, and instead push these assignments into the postponed target // However not all targets are currently postponed (we only postpone in debug code), pending further testing of the performance // impact of postponing. (vs,es) ||> FlatList.iter2 (GenBindRhs cenv cgbuf eenv SPSuppress) vs |> List.rev |> FlatList.iter (fun v -> GenStoreVal cgbuf eenvAtTarget v.Range v) CG.EmitInstr cgbuf (pop 0) Push0 (I_br targetMarkAfterBinds.CodeLabel); targetInfos | None -> CG.SetMarkToHere cgbuf inplab; let targetMarkBeforeBinds = CG.GenerateDelayMark cgbuf "targetBeforeBinds" let targetMarkAfterBinds = CG.GenerateDelayMark cgbuf "targetAfterBinds" let startScope,endScope as scopeMarks = StartDelayedLocalScope "targetBinds" cgbuf let binds = mkInvisibleFlatBindings vs es let eenvAtTarget = AllocStorageForBinds cenv cgbuf scopeMarks eenv binds let targetInfo = (targetMarkBeforeBinds,targetMarkAfterBinds,eenvAtTarget,successExpr,spTarget,repeatSP,vs,binds,startScope,endScope) // In debug mode push all decision tree targets to after the switching let isTargetPostponed = if cenv.opts.localOptimizationsAreOn then GenDecisionTreeTarget cenv cgbuf stackAtTargets targetIdx targetInfo sequel; false else CG.EmitInstr cgbuf (pop 0) Push0 (I_br targetMarkBeforeBinds.CodeLabel); true let targetInfos = IntMap.add targetIdx (targetInfo,isTargetPostponed) targetInfos targetInfos and GenPostponedDecisionTreeTargets cenv cgbuf stackAtTargets targetInfos sequel = let targetInfos = targetInfos |> Seq.sortBy (fun (KeyValue(targetIdx,_)) -> targetIdx) for (KeyValue(targetIdx,(targetInfo,isTargetPostponed))) in targetInfos do if isTargetPostponed then GenDecisionTreeTarget cenv cgbuf stackAtTargets targetIdx targetInfo sequel and GenDecisionTreeTarget cenv cgbuf stackAtTargets _targetIdx (targetMarkBeforeBinds,targetMarkAfterBinds,eenvAtTarget,successExpr,spTarget,repeatSP,vs,binds,startScope,endScope) sequel = CG.SetMarkToHere cgbuf targetMarkBeforeBinds let spExpr = (match spTarget with SequencePointAtTarget -> SPAlways | SuppressSequencePointAtTarget _ -> SPSuppress) // Repeat the sequence point to make sure each target branch has some sequence point (instead of inheriting // a random sequence point from the previously generated IL code from the previous block. See comment on // repeatSP() above. // // Only repeat the sequence point if we really have to, i.e. if the target expression doesn't start with a // sequence point anyway if FlatList.isEmpty vs && DoesGenExprStartWithSequencePoint spExpr successExpr then () else match spTarget with | SequencePointAtTarget -> repeatSP() | SuppressSequencePointAtTarget -> cgbuf.EmitStartOfHiddenCode() CG.SetMarkToHere cgbuf startScope GenBindings cenv cgbuf eenvAtTarget binds; CG.SetMarkToHere cgbuf targetMarkAfterBinds CG.SetStack cgbuf stackAtTargets; GenExpr cenv cgbuf eenvAtTarget spExpr successExpr (EndLocalScope(sequel,endScope)); and GenDecisionTreeSwitch cenv cgbuf inplab stackAtTargets eenv e cases defaultTargetOpt switchm targets repeatSP targetInfos sequel = let m = e.Range CG.SetMarkToHere cgbuf inplab; repeatSP(); match cases with // optimize a test against a boolean value, i.e. the all-important if-then-else | TCase(Test.Const(Const.Bool b), successTree) :: _ -> let failureTree = (match defaultTargetOpt with None -> cases.Tail.Head.CaseTree | Some d -> d) GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None eenv (if b then successTree else failureTree) (if b then failureTree else successTree) targets repeatSP targetInfos sequel // optimize a single test for a type constructor to an "isdata" test - much // more efficient code, and this case occurs in the generated equality testers where perf is important | TCase(Test.UnionCase(c,tyargs), successTree) :: rest when List.length rest = (match defaultTargetOpt with None -> 1 | Some _ -> 0) -> let failureTree = match defaultTargetOpt with | None -> cases.Tail.Head.CaseTree | Some tg -> tg let cuspec = GenUnionSpec cenv.amap m cenv.g eenv.tyenv c.TyconRef tyargs let idx = c.Index let avoidHelpers = entityRefInThisAssembly cenv.g.compilingFslib c.TyconRef GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e (Some (pop 1, Push [cenv.g.ilg.typ_bool],(mkIlxInstr (EI_isdata (avoidHelpers, cuspec, idx))))) eenv successTree failureTree targets repeatSP targetInfos sequel | _ -> let caseLabels = List.map (fun _ -> CG.GenerateDelayMark cgbuf "switch_case") cases let defaultLabel = match defaultTargetOpt with | None -> List.head caseLabels | Some _ -> CG.GenerateDelayMark cgbuf "switch_dflt" let firstDiscrim = cases.Head.Discriminator match firstDiscrim with // Iterated tests, e.g. exception constructors, nulltests, typetests and active patterns. // These should always have one positive and one negative branch | Test.IsInst _ | Test.ArrayLength _ | Test.IsNull | Test.Const(Const.Zero) -> if List.length cases <> 1 || isNone defaultTargetOpt then failwith "internal error: GenDecisionTreeSwitch: Test.IsInst/isnull/query"; let bi = match firstDiscrim with | Test.Const(Const.Zero) -> GenExpr cenv cgbuf eenv SPSuppress e Continue; BI_brfalse | Test.IsNull -> GenExpr cenv cgbuf eenv SPSuppress e Continue; let srcTy = tyOfExpr cenv.g e if isTyparTy cenv.g srcTy then let ilFromTy = GenType cenv.amap m cenv.g eenv.tyenv srcTy CG.EmitInstr cgbuf (pop 1) (Push [cenv.g.ilg.typ_Object]) (I_box ilFromTy); BI_brfalse | Test.IsInst (_srcty,tgty) -> let e = mkCallTypeTest cenv.g m tgty e GenExpr cenv cgbuf eenv SPSuppress e Continue; BI_brtrue | _ -> failwith "internal error: GenDecisionTreeSwitch" CG.EmitInstr cgbuf (pop 1) Push0 (I_brcmp (bi,(List.head caseLabels).CodeLabel,defaultLabel.CodeLabel)); GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos caseLabels cases defaultTargetOpt defaultLabel sequel | Test.ActivePatternCase _ -> error(InternalError("internal error in codegen: Test.ActivePatternCase",switchm)) | Test.UnionCase (hdc,tyargs) -> GenExpr cenv cgbuf eenv SPSuppress e Continue; let cuspec = GenUnionSpec cenv.amap m cenv.g eenv.tyenv hdc.TyconRef tyargs let dests = if cases.Length <> caseLabels.Length then failwith "internal error: Test.UnionCase"; (cases , caseLabels) ||> List.map2 (fun case label -> match case with | TCase(Test.UnionCase (c,_),_) -> (c.Index, label.CodeLabel) | _ -> failwith "error: mixed constructor/const test?") let avoidHelpers = entityRefInThisAssembly cenv.g.compilingFslib hdc.TyconRef CG.EmitInstr cgbuf (pop 1) Push0 (mkIlxInstr (EI_datacase (avoidHelpers,cuspec,dests, defaultLabel.CodeLabel))); GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos caseLabels cases defaultTargetOpt defaultLabel sequel | Test.Const c -> GenExpr cenv cgbuf eenv SPSuppress e Continue; match c with | Const.Bool _ -> failwith "should have been done earlier" | Const.SByte _ | Const.Int16 _ | Const.Int32 _ | Const.Byte _ | Const.UInt16 _ | Const.UInt32 _ | Const.Char _ -> if List.length cases <> List.length caseLabels then failwith "internal error: "; let dests = (cases,caseLabels) ||> List.map2 (fun case label -> let i = match case.Discriminator with Test.Const c' -> match c' with | Const.SByte i -> int32 i | Const.Int16 i -> int32 i | Const.Int32 i -> i | Const.Byte i -> int32 i | Const.UInt16 i -> int32 i | Const.UInt32 i -> int32 i | Const.Char c -> int32 c | _ -> failwith "internal error: badly formed const test" | _ -> failwith "internal error: badly formed const test" (i,label.CodeLabel)) let mn = List.foldBack (fst >> Operators.min) dests (fst(List.head dests)) let mx = List.foldBack (fst >> Operators.max) dests (fst(List.head dests)) // Check if it's worth using a switch // REVIEW: this is using switches even for single integer matches! if mx - mn = (List.length dests - 1) then let destinationLabels = dests |> List.sortBy fst |> List.map snd if mn <> 0 then CG.EmitInstrs cgbuf (pop 0) (Push [cenv.g.ilg.typ_int32]) [ mkLdcInt32 mn]; CG.EmitInstrs cgbuf (pop 1) Push0 [ AI_sub ]; CG.EmitInstr cgbuf (pop 1) Push0 (I_switch (destinationLabels, defaultLabel.CodeLabel)); else error(InternalError("non-dense integer matches not implemented in codegen - these should have been removed by the pattern match compiler",switchm)); GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos caseLabels cases defaultTargetOpt defaultLabel sequel | _ -> error(InternalError("these matches should never be needed",switchm)) and GenDecisionTreeCases cenv cgbuf stackAtTargets eenv targets repeatSP targetInfos caseLabels cases defaultTargetOpt defaultLabel sequel = assert(cgbuf.GetCurrentStack() = stackAtTargets); // cgbuf stack should be unchanged over tests. [bug://1750]. let targetInfos = match defaultTargetOpt with | Some defaultTarget -> GenDecisionTreeAndTargetsInner cenv cgbuf defaultLabel stackAtTargets eenv defaultTarget targets repeatSP targetInfos sequel | None -> targetInfos let targetInfos = (targetInfos, caseLabels, cases) |||> List.fold2 (fun targetInfos caseLabel (TCase(_,caseTree)) -> GenDecisionTreeAndTargetsInner cenv cgbuf caseLabel stackAtTargets eenv caseTree targets repeatSP targetInfos sequel) targetInfos // Used for the peephole optimization below and (|BoolExpr|_|) = function Expr.Const(Const.Bool b1,_,_) -> Some(b1) | _ -> None and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester eenv successTree failureTree targets repeatSP targetInfos sequel = match successTree,failureTree with // Peephole: if generating a boolean value or its negation then just leave it on the stack // This comes up in the generated equality functions. REVIEW: do this as a peephole optimization elsewhere | TDSuccess(es1,n1), TDSuccess(es2,n2) when FlatList.isEmpty es1 && FlatList.isEmpty es2 && (match GetTarget targets n1, GetTarget targets n2 with | TTarget(_,BoolExpr(b1),_),TTarget(_,BoolExpr(b2),_) -> b1 = not b2 | _ -> false) -> match GetTarget targets n1, GetTarget targets n2 with | TTarget(_,BoolExpr(b1),_),_ -> GenExpr cenv cgbuf eenv SPSuppress e Continue; (match tester with Some (pops,push,i) -> CG.EmitInstr cgbuf pops push i; | _ -> ()); if not b1 then CG.EmitInstrs cgbuf (pop 0) (Push [cenv.g.ilg.typ_bool]) [mkLdcInt32 (0); ]; CG.EmitInstrs cgbuf (pop 1) Push0 [AI_ceq]; GenSequel cenv cloc cgbuf sequel; targetInfos | _ -> failwith "internal error: GenDecisionTreeTest during bool elim" | _ -> let success = CG.GenerateDelayMark cgbuf "testSuccess" let failure = CG.GenerateDelayMark cgbuf "testFailure" (match tester with | None -> (* generate the expression, then test it for "false" *) GenExpr cenv cgbuf eenv SPSuppress e (CmpThenBrOrContinue(pop 1,I_brcmp (BI_brfalse, failure.CodeLabel, success.CodeLabel))); (* Turn "EI_isdata" tests that branch into EI_brisdata tests *) | Some (_,_,I_other i) when isIlxExtInstr i && (match destIlxExtInstr i with EI_isdata _ -> true | _ -> false) -> let (avoidHelpers,cuspec,idx) = match destIlxExtInstr i with EI_isdata (avoidHelpers,cuspec,idx) -> (avoidHelpers,cuspec,idx) | _ -> failwith "??" GenExpr cenv cgbuf eenv SPSuppress e (CmpThenBrOrContinue(pop 1,mkIlxInstr (EI_brisdata (avoidHelpers,cuspec, idx, success.CodeLabel, failure.CodeLabel)))); | Some (pops,pushes,i) -> GenExpr cenv cgbuf eenv SPSuppress e Continue; CG.EmitInstr cgbuf pops pushes i; CG.EmitInstr cgbuf (pop 1) Push0 (I_brcmp (BI_brfalse, failure.CodeLabel, success.CodeLabel))); let targetInfos = GenDecisionTreeAndTargetsInner cenv cgbuf success stackAtTargets eenv successTree targets repeatSP targetInfos sequel GenDecisionTreeAndTargetsInner cenv cgbuf failure stackAtTargets eenv failureTree targets repeatSP targetInfos sequel //------------------------------------------------------------------------- // Generate letrec bindings //------------------------------------------------------------------------- and GenLetRecFixup cenv cgbuf eenv (ilxCloSpec:IlxClosureSpec,e,ilField:ILFieldSpec,e2,_m) = GenExpr cenv cgbuf eenv SPSuppress e Continue; CG.EmitInstrs cgbuf (pop 0) Push0 [ I_castclass ilxCloSpec.ILType ]; GenExpr cenv cgbuf eenv SPSuppress e2 Continue; CG.EmitInstrs cgbuf (pop 2) Push0 [ mkNormalStfld (mkILFieldSpec(ilField.FieldRef,ilxCloSpec.ILType)) ] and GenLetRecBinds cenv cgbuf eenv (allBinds: Bindings,m) = (* Fix up recursion for non-toplevel recursive bindings *) let bindsPossiblyRequiringFixup = allBinds |> FlatList.filter (fun b -> match (StorageForVal m b.Var eenv) with | StaticProperty _ | Method _ | Unrealized (* Note: Recursive data stored in static fields may require fixups e.g. let x = C(x) *) (* | StaticField _ *) | Null -> false | _ -> true) let computeFixupsForOneRecursiveVar boundv forwardReferenceSet fixups selfv access set e = match e with | Expr.Lambda _ | Expr.TyLambda _ | Expr.Obj _ -> let isLocalTypeFunc = (isSome selfv && (IsNamedLocalTypeFuncVal cenv.g (Option.get selfv) e)) let selfv = (match e with Expr.Obj _ -> None | _ when isLocalTypeFunc -> None | _ -> Option.map mkLocalValRef selfv) let clo,_,eenvclo = GetIlxClosureInfo cenv m isLocalTypeFunc selfv {eenv with letBoundVars=(mkLocalValRef boundv)::eenv.letBoundVars} e clo.cloFreeVars |> List.iter (fun fv -> if Zset.contains fv forwardReferenceSet then match StorageForVal m fv eenvclo with | Env (_,_,ilField,_) -> fixups := (boundv, fv, (fun () -> GenLetRecFixup cenv cgbuf eenv (clo.cloSpec,access,ilField,exprForVal m fv,m))) :: !fixups | _ -> error (InternalError("GenLetRec: " + fv.LogicalName + " was not in the environment",m)) ) | Expr.Val (vref,_,_) -> let fv = vref.Deref let needsFixup = Zset.contains fv forwardReferenceSet if needsFixup then fixups := (boundv, fv,(fun () -> GenExpr cenv cgbuf eenv SPSuppress (set e) discard)) :: !fixups | _ -> failwith "compute real fixup vars" let fixups = ref [] let recursiveVars = Zset.addFlatList (bindsPossiblyRequiringFixup |> FlatList.map (fun v -> v.Var)) (Zset.empty valOrder) let _ = (recursiveVars, bindsPossiblyRequiringFixup) ||> FlatList.fold (fun forwardReferenceSet (bind:Binding) -> // Compute fixups bind.Expr |> IterateRecursiveFixups cenv.g (Some bind.Var) (computeFixupsForOneRecursiveVar bind.Var forwardReferenceSet fixups) (exprForVal m bind.Var, (fun _ -> failwith ("internal error: should never need to set non-delayed recursive val: " + bind.Var.LogicalName))); // Record the variable as defined let forwardReferenceSet = Zset.remove bind.Var forwardReferenceSet forwardReferenceSet) // Generate the actual bindings let _ = (recursiveVars, allBinds) ||> FlatList.fold (fun forwardReferenceSet (bind:Binding) -> GenBind cenv cgbuf eenv bind; // Record the variable as defined let forwardReferenceSet = Zset.remove bind.Var forwardReferenceSet // Execute and discard any fixups that can now be committed fixups := !fixups |> List.filter (fun (boundv, fv, action) -> if (Zset.contains boundv forwardReferenceSet || Zset.contains fv forwardReferenceSet) then true else (action(); false)); forwardReferenceSet) () and GenLetRec cenv cgbuf eenv (binds,body,m) sequel = let _,endScope as scopeMarks = StartLocalScope "letrec" cgbuf let eenv = AllocStorageForBinds cenv cgbuf scopeMarks eenv binds GenLetRecBinds cenv cgbuf eenv (binds,m); let sp = if FlatList.exists bindHasSeqPt binds || FlatList.forall bindIsInvisible binds then SPAlways else SPSuppress GenExpr cenv cgbuf eenv sp body (EndLocalScope(sequel,endScope)) //------------------------------------------------------------------------- // Generate simple bindings //------------------------------------------------------------------------- and GenSequencePointForBind _cenv cgbuf eenv (TBind(vspec,e,spBind)) = let emitSP() = match spBind,e with | (( NoSequencePointAtInvisibleBinding | NoSequencePointAtStickyBinding),_) -> SPSuppress | (NoSequencePointAtDoBinding,_) -> SPAlways | (NoSequencePointAtLetBinding,_) -> SPSuppress // Don't emit sequence points for lambdas. // SEQUENCE POINT REVIEW: don't emit for lazy either, nor any builder expressions | _, (Expr.Lambda _ | Expr.TyLambda _) -> SPSuppress | SequencePointAtBinding m,_ -> CG.EmitSeqPoint cgbuf m; SPSuppress let m = vspec.Range match StorageForVal m vspec eenv with | Unrealized -> SPSuppress | Method _ -> SPSuppress | _ -> emitSP() and GenBind cenv cgbuf eenv bind = let sp = GenSequencePointForBind cenv cgbuf eenv bind GenBindAfterSequencePoint cenv cgbuf eenv sp bind and ComputeMemberAccessRestrictedBySig eenv vspec = let isHidden = IsHiddenVal eenv.sigToImplRemapInfo vspec || // anything hiden by a signature gets assembly visibility not vspec.IsMemberOrModuleBinding || // anything that's not a module or member binding gets assembly visibility vspec.IsIncrClassGeneratedMember // compiler generated members for class function 'let' bindings get assembly visibility ComputeMemberAccess isHidden and GenBindAfterSequencePoint cenv cgbuf eenv sp (TBind(vspec,rhsExpr,_)) = // Record the closed reflection definition if publishing // There is no real reason we're doing this so late in the day match vspec.PublicPath, vspec.ReflectedDefinition with | Some _, Some e -> cgbuf.mgbuf.AddReflectedDefinition(vspec,e) | _ -> () let eenv = {eenv with letBoundVars= (mkLocalValRef vspec) :: eenv.letBoundVars} let access = ComputeMemberAccessRestrictedBySig eenv vspec // Workaround for .NET and Visual Studio restriction w.r.t debugger type proxys // Mark internal constructors in internal classes as public. let access = if access = ILMemberAccess.Assembly && vspec.IsConstructor && IsHiddenTycon eenv.sigToImplRemapInfo vspec.MemberApparentParent.Deref then ILMemberAccess.Public else access let m = vspec.Range match StorageForVal m vspec eenv with | Unrealized -> () | Null -> GenExpr cenv cgbuf eenv SPSuppress rhsExpr discard // The initialization code for static 'let' and 'do' bindings gets compiled into the initialization .cctor for the whole file | _ when vspec.IsClassConstructor && vspec.TopValActualParent.TyparsNoRange.Length = 0 -> let tps,_,_,_,cctorBody,_ = IteratedAdjustArityOfLambda cenv.g cenv.amap vspec.ValReprInfo.Value rhsExpr let eenv = EnvForTypars tps eenv GenExpr cenv cgbuf eenv SPSuppress cctorBody discard | Method (topValInfo,_,mspec,_,paramInfos,retInfo) -> let tps,ctorThisValOpt,baseValOpt,vsl,body',bodyty = IteratedAdjustArityOfLambda cenv.g cenv.amap topValInfo rhsExpr let methodVars = List.concat vsl GenMethodForBinding cenv cgbuf eenv (vspec,mspec,access,paramInfos,retInfo) (topValInfo,ctorThisValOpt,baseValOpt,tps,methodVars, body', bodyty) | StaticProperty (ilGetterMethSpec, optShadowLocal) -> let ilAttribs = GenAttrs cenv eenv vspec.Attribs let ilTy = ilGetterMethSpec.FormalReturnType let ilPropDef = { Name = PrettyNaming.ChopPropertyName ilGetterMethSpec.Name; IsRTSpecialName = false; IsSpecialName = false; SetMethod = None; GetMethod = Some ilGetterMethSpec.MethodRef; CallingConv = ILThisConvention.Static; Type = ilTy; Init = None; Args = mkILTypes []; CustomAttrs = mkILCustomAttrs ilAttribs } cgbuf.mgbuf.AddOrMergePropertyDef(ilGetterMethSpec.MethodRef.EnclosingTypeRef, ilPropDef,m); let ilMethodDef = let ilMethodBody = MethodBody.IL(CodeGenMethodForExpr cenv cgbuf.mgbuf (SPSuppress, [], ilGetterMethSpec.Name, eenv, 0, 0, rhsExpr, Return)) mkILStaticMethod ([], ilGetterMethSpec.Name, access, [], mkILReturn ilTy, ilMethodBody) |> AddSpecialNameFlag |> AddNonUserCompilerGeneratedAttribs cenv.g CountMethodDef(); cgbuf.mgbuf.AddMethodDef(ilGetterMethSpec.MethodRef.EnclosingTypeRef, ilMethodDef) match optShadowLocal with | NoShadowLocal -> () | ShadowLocal storage -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (I_call (Normalcall, ilGetterMethSpec, None)); GenSetStorage m cgbuf storage | StaticField (fspec, _, hasLiteralAttr, ilTyForProperty, ilPropName, fty, ilGetterMethRef, ilSetterMethRef, optShadowLocal) -> let mut = vspec.IsMutable match mut,hasLiteralAttr,rhsExpr with | _,false,_ -> () | true,true,_ -> errorR(Error(FSComp.SR.ilValuesWithLiteralAttributeCannotBeMutable(),m)) | _,true,Expr.Const _ -> () | _,true,_ -> errorR(Error(FSComp.SR.ilValuesWithLiteralAttributeMustBeSimple(),m)) let canTarget(targets, goal : System.AttributeTargets) = match targets with | None -> true | Some tgts -> 0 <> int(tgts &&& goal) /// Generate a static field definition... let ilFieldDefs = let access = ComputeMemberAccess (not hasLiteralAttr || IsHiddenVal eenv.sigToImplRemapInfo vspec) let ilFieldDef = mkILStaticField (fspec.Name, fty, None, None, access) let ilFieldDef = match hasLiteralAttr,rhsExpr with | false,_ -> ilFieldDef | true,Expr.Const(konst,m,_) -> { ilFieldDef with IsLiteral=true; LiteralValue= Some(GenFieldInit m konst) } | true,_ -> ilFieldDef (* error given above *) let ilFieldDef = let isClassInitializer = (cgbuf.MethodName = ".cctor") if mut || cenv.opts.isInteractiveItExpr || not isClassInitializer || hasLiteralAttr then ilFieldDef else {ilFieldDef with IsInitOnly=true } let ilAttribs = if not hasLiteralAttr then vspec.Attribs |> List.filter (fun (Attrib(_,_,_,_,_,targets,_)) -> canTarget(targets, System.AttributeTargets.Field)) |> GenAttrs cenv eenv // backing field only gets attributes that target fields else GenAttrs cenv eenv vspec.Attribs // literals have no property, so preserve all the attributes on the field itself let ilFieldDef = { ilFieldDef with CustomAttrs = if cenv.g.ilg.generateDebugBrowsableData then mkILCustomAttrs (ilAttribs @ [ mkDebuggerBrowsableNeverAttribute cenv.g.ilg ]) else mkILCustomAttrs ilAttribs } [ (fspec.EnclosingTypeRef, ilFieldDef) ] let ilTypeRefForProperty = ilTyForProperty.TypeRef for (tref,ilFieldDef) in ilFieldDefs do cgbuf.mgbuf.AddFieldDef(tref,ilFieldDef); CountStaticFieldDef(); // ... and the get/set properties to access it. if not hasLiteralAttr then let ilAttribs = vspec.Attribs |> List.filter (fun (Attrib(_,_,_,_,_,targets,_)) -> canTarget(targets, System.AttributeTargets.Property)) |> GenAttrs cenv eenv // property only gets attributes that target properties let ilPropDef = { Name=ilPropName; IsRTSpecialName=false; IsSpecialName=false; SetMethod=if mut || cenv.opts.isInteractiveItExpr then Some ilSetterMethRef else None; GetMethod=Some ilGetterMethRef; CallingConv=ILThisConvention.Static; Type=fty; Init=None; Args= mkILTypes []; CustomAttrs=mkILCustomAttrs (ilAttribs @ [mkCompilationMappingAttr cenv.g (int SourceConstructFlags.Value)]); } cgbuf.mgbuf.AddOrMergePropertyDef(ilTypeRefForProperty,ilPropDef,m); let getterMethod = mkILStaticMethod([],ilGetterMethRef.Name,access,[],mkILReturn fty, mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode [ mkNormalLdsfld fspec ],None)) |> AddSpecialNameFlag cgbuf.mgbuf.AddMethodDef(ilTypeRefForProperty,getterMethod) ; if mut || cenv.opts.isInteractiveItExpr then let setterMethod = mkILStaticMethod([],ilSetterMethRef.Name,access,[mkILParamNamed("value",fty)],mkILReturn ILType.Void, mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode [ mkLdarg0;mkNormalStsfld fspec],None)) |> AddSpecialNameFlag cgbuf.mgbuf.AddMethodDef(ilTypeRefForProperty,setterMethod) GenBindRhs cenv cgbuf eenv sp vspec rhsExpr; match optShadowLocal with | NoShadowLocal -> EmitSetStaticField cgbuf fspec | ShadowLocal storage-> CG.EmitInstr cgbuf (pop 0) (Push [fty]) AI_dup EmitSetStaticField cgbuf fspec GenSetStorage m cgbuf storage | _ -> GenSetBindValue cenv cgbuf eenv eenv vspec rhsExpr //------------------------------------------------------------------------- // Generate method bindings //------------------------------------------------------------------------- /// Spectacularly gross table encoding P/Invoke and COM marshalling information and GenMarshal cenv attribs = let otherAttribs = // For IlReflect backend, we rely on Reflection.Emit API to emit the pseudo-custom attributes // corectly, so we do not filter them out. // For IlWriteBackend, we filter MarshalAs attributes match cenv.opts.ilxBackend with | IlReflectBackend -> attribs | IlWriteBackend -> attribs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_MarshalAsAttribute >> not) match TryFindFSharpAttribute cenv.g cenv.g.attrib_MarshalAsAttribute attribs with | Some (Attrib(_,_,[ AttribInt32Arg unmanagedType ],namedArgs,_,_,m)) -> let decoder = AttributeDecoder namedArgs let rec decodeUnmanagedType unmanagedType = (* enumeration values for System.Runtime.InteropServices.UnmanagedType taken from mscorlib.il *) match unmanagedType with | 0x0 -> ILNativeType.Empty | 0x01 -> ILNativeType.Void | 0x02 -> ILNativeType.Bool | 0x03 -> ILNativeType.Int8 | 0x04 -> ILNativeType.Byte | 0x05 -> ILNativeType.Int16 | 0x06 -> ILNativeType.UInt16 | 0x07 -> ILNativeType.Int32 | 0x08 -> ILNativeType.UInt32 | 0x09 -> ILNativeType.Int64 | 0x0A -> ILNativeType.UInt64 | 0x0B -> ILNativeType.Single | 0x0C -> ILNativeType.Double | 0x0F -> ILNativeType.Currency | 0x13 -> ILNativeType.BSTR | 0x14 -> ILNativeType.LPSTR | 0x15 -> ILNativeType.LPWSTR | 0x16 -> ILNativeType.LPTSTR | 0x17 -> ILNativeType.FixedSysString (decoder.FindInt32 "SizeConst" 0x0) | 0x19 -> ILNativeType.IUnknown | 0x1A -> ILNativeType.IDispatch | 0x1B -> ILNativeType.Struct | 0x1C -> ILNativeType.Interface | 0x1D -> let safeArraySubType = match decoder.FindInt32 "SafeArraySubType" 0x0 with (* enumeration values for System.Runtime.InteropServices.VarType taken from mscorlib.il *) | 0x0 -> ILNativeVariant.Empty | 0x1 -> ILNativeVariant.Null | 0x02 -> ILNativeVariant.Int16 | 0x03 -> ILNativeVariant.Int32 | 0x0C -> ILNativeVariant.Variant | 0x04 -> ILNativeVariant.Single | 0x05 -> ILNativeVariant.Double | 0x06 -> ILNativeVariant.Currency | 0x07 -> ILNativeVariant.Date | 0x08 -> ILNativeVariant.BSTR | 0x09 -> ILNativeVariant.IDispatch | 0x0a -> ILNativeVariant.Error | 0x0b -> ILNativeVariant.Bool | 0x0d -> ILNativeVariant.IUnknown | 0x0e -> ILNativeVariant.Decimal | 0x10 -> ILNativeVariant.Int8 | 0x11 -> ILNativeVariant.UInt8 | 0x12 -> ILNativeVariant.UInt16 | 0x13 -> ILNativeVariant.UInt32 | 0x15 -> ILNativeVariant.UInt64 | 0x16 -> ILNativeVariant.Int | 0x17 -> ILNativeVariant.UInt | 0x18 -> ILNativeVariant.Void | 0x19 -> ILNativeVariant.HRESULT | 0x1a -> ILNativeVariant.PTR | 0x1c -> ILNativeVariant.CArray | 0x1d -> ILNativeVariant.UserDefined | 0x1e -> ILNativeVariant.LPSTR | 0x1B -> ILNativeVariant.SafeArray | 0x1f -> ILNativeVariant.LPWSTR | 0x24 -> ILNativeVariant.Record | 0x40 -> ILNativeVariant.FileTime | 0x41 -> ILNativeVariant.Blob | 0x42 -> ILNativeVariant.Stream | 0x43 -> ILNativeVariant.Storage | 0x44 -> ILNativeVariant.StreamedObject | 0x45 -> ILNativeVariant.StoredObject | 0x46 -> ILNativeVariant.BlobObject | 0x47 -> ILNativeVariant.CF | 0x48 -> ILNativeVariant.CLSID | 0x14 -> ILNativeVariant.Int64 | _ -> ILNativeVariant.Empty let safeArrayUserDefinedSubType = // the argument is a System.Type obj, but it's written to MD as a UTF8 string match decoder.FindTypeName "SafeArrayUserDefinedSubType" "" with | "" -> None | res -> if (safeArraySubType = ILNativeVariant.IDispatch) || (safeArraySubType = ILNativeVariant.IUnknown) then Some(res) else None ILNativeType.SafeArray(safeArraySubType,safeArrayUserDefinedSubType) | 0x1E -> ILNativeType.FixedArray (decoder.FindInt32 "SizeConst" 0x0) | 0x1F -> ILNativeType.Int | 0x20 -> ILNativeType.UInt | 0x22 -> ILNativeType.ByValStr | 0x23 -> ILNativeType.ANSIBSTR | 0x24 -> ILNativeType.TBSTR | 0x25 -> ILNativeType.VariantBool | 0x26 -> ILNativeType.Method | 0x28 -> ILNativeType.AsAny | 0x2A -> let sizeParamIndex = match decoder.FindInt16 "SizeParamIndex" -1s with | -1s -> None | res -> Some ((int)res,None) let arraySubType = match decoder.FindInt32 "ArraySubType" -1 with | -1 -> None | res -> Some (decodeUnmanagedType res) ILNativeType.Array(arraySubType,sizeParamIndex) | 0x2B -> ILNativeType.LPSTRUCT | 0x2C -> error(Error(FSComp.SR.ilCustomMarshallersCannotBeUsedInFSharp(),m)) (* ILNativeType.Custom of bytes * string * string * bytes (* GUID,nativeTypeName,custMarshallerName,cookieString *) *) //ILNativeType.Error | 0x2D -> ILNativeType.Error | _ -> ILNativeType.Empty Some(decodeUnmanagedType unmanagedType), otherAttribs | Some (Attrib(_,_,_,_,_,_,m)) -> errorR(Error(FSComp.SR.ilMarshalAsAttributeCannotBeDecoded(),m)); None, attribs | _ -> // No MarshalAs detected None, attribs and GenParamAttribs cenv attribs = let inFlag = HasFSharpAttribute cenv.g cenv.g.attrib_InAttribute attribs let outFlag = HasFSharpAttribute cenv.g cenv.g.attrib_OutAttribute attribs let optionalFlag = HasFSharpAttribute cenv.g cenv.g.attrib_OptionalAttribute attribs // Return the filtered attributes. Do not generate In, Out or Optional attributes // as custom attributes in the code - they are implicit from the IL bits for these let attribs = attribs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_InAttribute >> not) |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_OutAttribute >> not) |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_OptionalAttribute >> not) let Marshal,attribs = GenMarshal cenv attribs inFlag,outFlag,optionalFlag,Marshal,attribs and GenParams cenv eenv (mspec:ILMethodSpec) (attribs:ArgReprInfo list) (implValsOpt: Val list option) = let ilArgTys = mspec.FormalArgTypes |> ILList.toList let argInfosAndTypes = if attribs.Length = ilArgTys.Length then List.zip ilArgTys attribs else ilArgTys |> List.map (fun ilArgTy -> ilArgTy,ValReprInfo.unnamedTopArg1) let argInfosAndTypes = match implValsOpt with | Some(implVals) when (implVals.Length = ilArgTys.Length) -> List.map2 (fun x y -> x,Some y) argInfosAndTypes implVals | _ -> List.map (fun x -> x,None) argInfosAndTypes (Set.empty,argInfosAndTypes) ||> List.mapFold (fun takenNames ((ilArgTy,topArgInfo),implValOpt) -> let inFlag,outFlag,optionalFlag,Marshal,attribs = GenParamAttribs cenv topArgInfo.Attribs let idOpt = (match topArgInfo.Name with | Some v -> Some v | None -> match implValOpt with | Some v -> Some v.Id | None -> None) let nmOpt,takenNames = match idOpt with | Some id -> let nm = if takenNames.Contains(id.idText) then globalNng.FreshCompilerGeneratedName (id.idText, id.idRange) else id.idText Some nm, takenNames.Add(nm) | None -> None, takenNames let param = { Name=nmOpt; Type= ilArgTy; Default=None; (* REVIEW: support "default" attributes *) Marshal=Marshal; IsIn=inFlag; IsOut=outFlag; IsOptional=optionalFlag; CustomAttrs= mkILCustomAttrs (GenAttrs cenv eenv attribs) } param, takenNames) |> fst and GenReturnInfo cenv eenv ilRetTy (retInfo : ArgReprInfo) : ILReturn = let marshal,attrs = GenMarshal cenv retInfo.Attribs { Type=ilRetTy; Marshal=marshal; CustomAttrs= mkILCustomAttrs (GenAttrs cenv eenv attrs) } and GenPropertyForMethodDef compileAsInstance tref mdef (v:Val) (memberInfo:ValMemberInfo) ilArgTys ilPropTy ilAttrs compiledName = let name = match compiledName with | Some n -> n | _ -> v.PropertyName in (* chop "get_" *) { Name=name; IsRTSpecialName=false; IsSpecialName=false; SetMethod=(if memberInfo.MemberFlags.MemberKind= MemberKind.PropertySet then Some(mkRefToILMethod(tref,mdef)) else None); GetMethod=(if memberInfo.MemberFlags.MemberKind= MemberKind.PropertyGet then Some(mkRefToILMethod(tref,mdef)) else None); CallingConv=(if compileAsInstance then ILThisConvention.Instance else ILThisConvention.Static); Type=ilPropTy; Init=None; Args= mkILTypes ilArgTys; CustomAttrs=ilAttrs; } and GenEventForProperty cenv eenvForMeth (mspec:ILMethodSpec) (v:Val) ilAttrsThatGoOnPrimaryItem m returnTy = let evname = v.PropertyName let delegateTy = Infos.FindDelegateTypeOfPropertyEvent cenv.g cenv.amap evname m returnTy let ilDelegateTy = GenType cenv.amap m cenv.g eenvForMeth.tyenv delegateTy let ilThisTy = mspec.EnclosingType let addMethRef = mkILMethRef (ilThisTy.TypeRef,mspec.CallingConv,"add_" + evname,0,[ilDelegateTy],ILType.Void) let removeMethRef = mkILMethRef (ilThisTy.TypeRef,mspec.CallingConv,"remove_" + evname,0,[ilDelegateTy],ILType.Void) { Type = Some(ilDelegateTy); Name= evname; IsRTSpecialName=false; IsSpecialName=false; AddMethod = addMethRef; RemoveMethod = removeMethRef; FireMethod= None; OtherMethods= []; CustomAttrs = mkILCustomAttrs ilAttrsThatGoOnPrimaryItem; } and ComputeFlagFixupsForMemberBinding cenv (v:Val,memberInfo:ValMemberInfo) = if isNil memberInfo.ImplementedSlotSigs then [fixupVirtualSlotFlags] else memberInfo.ImplementedSlotSigs |> List.map (fun slotsig -> let oty = slotsig.ImplementedType let otcref,_ = destAppTy cenv.g oty let tcref = v.MemberApparentParent let useMethodImpl = // REVIEW: it would be good to get rid of this special casing of Compare and GetHashCode during code generation let isCompare = (isSome tcref.GeneratedCompareToValues && typeEquiv cenv.g oty cenv.g.mk_IComparable_ty) || (isSome tcref.GeneratedCompareToValues && tyconRefEq cenv.g cenv.g.system_GenericIComparable_tcref otcref) let isGenericEquals = (isSome tcref.GeneratedHashAndEqualsWithComparerValues && tyconRefEq cenv.g cenv.g.system_GenericIEquatable_tcref otcref) let isStructural = (isSome tcref.GeneratedCompareToWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralComparable_ty) || (isSome tcref.GeneratedHashAndEqualsWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralEquatable_ty) isInterfaceTy cenv.g oty && not isCompare && not isStructural && not isGenericEquals let nameOfOverridingMethod = GenNameOfOverridingMethod cenv (useMethodImpl,slotsig) (if useMethodImpl then fixupMethodImplFlags >> renameMethodDef nameOfOverridingMethod else fixupVirtualSlotFlags >> renameMethodDef nameOfOverridingMethod)) and ComputeMethodImplAttribs cenv (_v:Val) attrs = let implflags = match TryFindFSharpAttribute cenv.g cenv.g.attrib_MethodImplAttribute attrs with | Some (Attrib(_,_,[ AttribInt32Arg flags ],_,_,_,_)) -> flags | _ -> 0x0 let hasPreserveSigAttr = match TryFindFSharpAttribute cenv.g cenv.g.attrib_PreserveSigAttribute attrs with | Some _ -> true | _ -> false // strip the MethodImpl pseudo-custom attribute // The following method implementation flags are used here // 0x80 - hasPreserveSigImplFlag // 0x20 - synchronize // (See ECMA 335, Partition II, section 23.1.11 - Flags for methods [MethodImplAttributes]) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_MethodImplAttribute >> not) |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_PreserveSigAttribute >> not) let hasPreserveSigImplFlag = ((implflags &&& 0x80) <> 0x0) || hasPreserveSigAttr let hasSynchronizedImplFlag = (implflags &&& 0x20) <> 0x0 let hasNoInliningImplFlag = (implflags &&& 0x08) <> 0x0 hasPreserveSigImplFlag, hasSynchronizedImplFlag, hasNoInliningImplFlag, attrs and GenMethodForBinding cenv cgbuf eenv (v:Val,mspec,access,paramInfos,retInfo) (topValInfo,ctorThisValOpt,baseValOpt,tps,methodVars, body, returnTy) = let m = v.Range let selfMethodVars,nonSelfMethodVars,compileAsInstance = match v.MemberInfo with | Some _ when ValSpecIsCompiledAsInstance cenv.g v -> match methodVars with | [] -> error(InternalError("Internal error: empty argument list for instance method",v.Range)) | h::t -> [h],t,true | _ -> [],methodVars,false let nonUnitNonSelfMethodVars,body = BindUnitVars cenv.g (nonSelfMethodVars,paramInfos,body) let nonUnitMethodVars = selfMethodVars@nonUnitNonSelfMethodVars let cmtps,curriedArgInfos,_,_ = GetTopValTypeInCompiledForm cenv.g topValInfo v.Type v.Range let eenv = bindBaseOrThisVarOpt cenv eenv ctorThisValOpt let eenv = bindBaseOrThisVarOpt cenv eenv baseValOpt // The type parameters of the method's type are different to the type parameters // for the big lambda ("tlambda") of the implementation of the method. let eenvUnderMethLambdaTypars = EnvForTypars tps eenv let eenvUnderMethTypeTypars = EnvForTypars cmtps eenv // Add the arguments to the environment. We add an implicit 'this' argument to constructors let isCtor = v.IsConstructor let eenvForMeth = let eenvForMeth = eenvUnderMethLambdaTypars let numImplicitArgs = if isCtor then 1 else 0 let eenvForMeth = AddStorageForLocalVals cenv.g (List.mapi (fun i v -> (v,Arg (numImplicitArgs+i))) nonUnitMethodVars) eenvForMeth eenvForMeth let tailCallInfo = [(mkLocalValRef v,BranchCallMethod (topValInfo.AritiesOfArgs,curriedArgInfos,tps,nonUnitMethodVars.Length,v.NumObjArgs))] // Discard the result on a 'void' return type. For a constructor just return 'void' let sequel = if isUnitTy cenv.g returnTy then discardAndReturnVoid elif isCtor then ReturnVoid else Return // Now generate the code. let hasPreserveSigNamedArg,ilMethodBody,_hasDllImport = match TryFindFSharpAttribute cenv.g cenv.g.attrib_DllImportAttribute v.Attribs with | Some (Attrib(_,_,[ AttribStringArg(dll) ],namedArgs,_,_,m)) -> if nonNil tps then error(Error(FSComp.SR.ilSignatureForExternalFunctionContainsTypeParameters(),m)); let hasPreserveSigNamedArg, mbody = GenPInvokeMethod (v.CompiledName,dll,namedArgs) hasPreserveSigNamedArg, mbody, true | Some (Attrib(_,_,_,_,_,_,m)) -> error(Error(FSComp.SR.ilDllImportAttributeCouldNotBeDecoded(),m)); | _ -> // Replace the body of ValInline.PseudoVal "must inline" methods with a 'throw' // However still generate the code for reflection etc. let bodyExpr = if HasFSharpAttribute cenv.g cenv.g.attrib_NoDynamicInvocationAttribute v.Attribs then mkThrow m returnTy (mkExnExpr(cenv.g.mkSysTyconRef ["System"] "NotSupportedException", [ mkString cenv.g m (FSComp.SR.ilDynamicInvocationNotSupported(v.CompiledName))],m)) else body // This is the main code generation for most methods false, MethodBody.IL(CodeGenMethodForExpr cenv cgbuf.mgbuf (SPAlways,tailCallInfo, mspec.Name, eenvForMeth, 0, 0, bodyExpr, sequel)), false // Do not generate DllImport attributes into the code - they are implicit from the P/Invoke let attrs = v.Attribs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_DllImportAttribute >> not) |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_CompiledNameAttribute >> not) let attrsAppliedToGetterOrSetter, attrs = List.partition (fun (Attrib(_,_,_,_,isAppliedToGetterOrSetter,_,_)) -> isAppliedToGetterOrSetter) attrs let sourceNameAttribs,compiledName = match v.Attribs |> List.tryFind (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_CompiledNameAttribute) with | Some (Attrib(_,_,[ AttribStringArg(b) ],_,_,_,_)) -> [ mkCompilationSourceNameAttr cenv.g v.LogicalName ], Some b | _ -> [],None // check if the hasPreserveSigNamedArg and hasSynchronizedImplFlag implementation flags have been specified let hasPreserveSigImplFlag, hasSynchronizedImplFlag, hasNoInliningFlag, attrs = ComputeMethodImplAttribs cenv v attrs let securityAttributes,attrs = attrs |> List.partition (fun a -> IsSecurityAttribute cenv.g cenv.amap cenv.casApplied a m) let permissionSets = CreatePermissionSets cenv.g cenv.amap eenv securityAttributes let secDecls = if securityAttributes.Length > 0 then (mkILSecurityDecls permissionSets) else (emptyILSecurityDecls) // Do not push the attributes to the method for events and properties let ilAttrsCompilerGenerated = if v.IsCompilerGenerated then [ mkCompilerGeneratedAttribute cenv.g.ilg ] else [] let ilAttrsThatGoOnPrimaryItem = [ yield! GenAttrs cenv eenv attrs yield! GenCompilationArgumentCountsAttr cenv v ] let ilTypars = GenGenericParams cenv eenvUnderMethLambdaTypars tps let ilParams = GenParams cenv eenv mspec paramInfos (Some(nonUnitNonSelfMethodVars)) let ilReturn = GenReturnInfo cenv eenv mspec.FormalReturnType retInfo let methName = mspec.Name let tref = mspec.MethodRef.EnclosingTypeRef let EmitTheMethodDef mdef = // Does the function have an explicit [] attribute? let isExplicitEntryPoint = HasFSharpAttribute cenv.g cenv.g.attrib_EntryPointAttribute attrs let mdef = {mdef with IsPreserveSig = hasPreserveSigImplFlag || hasPreserveSigNamedArg; IsSynchronized = hasSynchronizedImplFlag; IsEntryPoint = isExplicitEntryPoint; IsNoInline = hasNoInliningFlag; HasSecurity = mdef.HasSecurity || (securityAttributes.Length > 0) SecurityDecls = secDecls } let mdef = if // operator names mdef.Name.StartsWith("op_",System.StringComparison.Ordinal) || // active pattern names mdef.Name.StartsWith("|",System.StringComparison.Ordinal) || // event add/remove method v.Data.val_flags.IsGeneratedEventVal then {mdef with IsSpecialName=true} else mdef CountMethodDef(); cgbuf.mgbuf.AddMethodDef(tref,mdef) match v.MemberInfo with // don't generate unimplemented abstracts | Some(memberInfo) when memberInfo.MemberFlags.IsDispatchSlot && not memberInfo.IsImplemented -> // skipping unimplemented abstract method () | Some(memberInfo) when not v.IsExtensionMember -> let ilMethTypars = ilTypars |> List.drop mspec.EnclosingType.GenericArgs.Length if memberInfo.MemberFlags.MemberKind = MemberKind.Constructor then assert (isNil ilMethTypars) // Constructors in abstract classes become protected let access = if HasFSharpAttribute cenv.g cenv.g.attrib_AbstractClassAttribute v.MemberApparentParent.Attribs then ILMemberAccess.Family else access let mdef = mkILCtor (access,ilParams,ilMethodBody) let mdef = { mdef with CustomAttrs= mkILCustomAttrs (ilAttrsThatGoOnPrimaryItem @ sourceNameAttribs @ ilAttrsCompilerGenerated) }; EmitTheMethodDef mdef elif memberInfo.MemberFlags.MemberKind = MemberKind.ClassConstructor then assert (isNil ilMethTypars) let mdef = mkILClassCtor ilMethodBody let mdef = { mdef with CustomAttrs= mkILCustomAttrs (ilAttrsThatGoOnPrimaryItem @ sourceNameAttribs @ ilAttrsCompilerGenerated) }; EmitTheMethodDef mdef // Generate virtual/override methods + method-impl information if needed else let mdef = if not compileAsInstance then mkILStaticMethod (ilMethTypars,v.CompiledName,access,ilParams,ilReturn,ilMethodBody) elif (memberInfo.MemberFlags.IsDispatchSlot && memberInfo.IsImplemented) || memberInfo.MemberFlags.IsOverrideOrExplicitImpl then let flagFixups = ComputeFlagFixupsForMemberBinding cenv (v,memberInfo) let mdef = mkILGenericVirtualMethod (v.CompiledName,ILMemberAccess.Public,ilMethTypars,ilParams,ilReturn,ilMethodBody) let mdef = List.fold (fun mdef f -> f mdef) mdef flagFixups // fixup can potentially change name of reflected definition that was already recorded - patch it if necessary cgbuf.mgbuf.ReplaceNameOfReflectedDefinition(v, mdef.Name) mdef else mkILGenericNonVirtualMethod (v.CompiledName,access,ilMethTypars,ilParams,ilReturn,ilMethodBody) let isAbstract = memberInfo.MemberFlags.IsDispatchSlot && let tcref = v.MemberApparentParent not tcref.Deref.IsFSharpDelegateTycon let mdef = {mdef with mdKind=match mdef.mdKind with | MethodKind.Virtual vinfo -> MethodKind.Virtual {vinfo with IsFinal=memberInfo.MemberFlags.IsFinal; IsAbstract=isAbstract; } | k -> k } match memberInfo.MemberFlags.MemberKind with | (MemberKind.PropertySet | MemberKind.PropertyGet) -> if nonNil ilMethTypars then error(InternalError("A property may not be more generic than the enclosing type - constrain the polymorphism in the expression",v.Range)); // Check if we're compiling the property as a .NET event if CompileAsEvent cenv.g v.Attribs then // Emit the pseudo-property as an event, but not if its a private method impl if mdef.Access <> ILMemberAccess.Private then let edef = GenEventForProperty cenv eenvForMeth mspec v ilAttrsThatGoOnPrimaryItem m returnTy cgbuf.mgbuf.AddEventDef(tref,edef) // The method def is dropped on the floor here else // Emit the property, but not if its a private method impl if mdef.Access <> ILMemberAccess.Private then let vtyp = ReturnTypeOfPropertyVal cenv.g v let ilPropTy = GenType cenv.amap m cenv.g eenvUnderMethTypeTypars.tyenv vtyp let ilArgTys = v |> ArgInfosOfPropertyVal cenv.g |> List.map fst |> GenTypes cenv.amap m cenv.g eenvUnderMethTypeTypars.tyenv let ilPropDef = GenPropertyForMethodDef compileAsInstance tref mdef v memberInfo ilArgTys ilPropTy (mkILCustomAttrs ilAttrsThatGoOnPrimaryItem) compiledName cgbuf.mgbuf.AddOrMergePropertyDef(tref,ilPropDef,m) // Add the special name flag for all properties let mdef = mdef |> AddSpecialNameFlag let mdef = { mdef with CustomAttrs= mkILCustomAttrs ((GenAttrs cenv eenv attrsAppliedToGetterOrSetter) @ sourceNameAttribs @ ilAttrsCompilerGenerated) }; EmitTheMethodDef mdef | _ -> let mdef = { mdef with CustomAttrs= mkILCustomAttrs (ilAttrsThatGoOnPrimaryItem @ sourceNameAttribs @ ilAttrsCompilerGenerated) }; EmitTheMethodDef mdef | _ -> let mdef = mkILStaticMethod (ilTypars, methName, access,ilParams,ilReturn,ilMethodBody) // For extension properties, also emit attrsAppliedToGetterOrSetter on the getter or setter method let ilAttrs = match v.MemberInfo with | Some memberInfo when v.IsExtensionMember -> match memberInfo.MemberFlags.MemberKind with | (MemberKind.PropertySet | MemberKind.PropertyGet) -> ilAttrsThatGoOnPrimaryItem @ GenAttrs cenv eenv attrsAppliedToGetterOrSetter | _ -> ilAttrsThatGoOnPrimaryItem | _ -> ilAttrsThatGoOnPrimaryItem let ilCustomAttrs = mkILCustomAttrs (ilAttrs @ sourceNameAttribs @ ilAttrsCompilerGenerated) let mdef = { mdef with CustomAttrs= ilCustomAttrs } EmitTheMethodDef mdef and GenPInvokeMethod (nm,dll,namedArgs) = let decoder = AttributeDecoder namedArgs let hasPreserveSigNamedArg = decoder.FindBool "PreserveSig" true; hasPreserveSigNamedArg, MethodBody.PInvoke { Where=mkSimpleModRef dll; Name=decoder.FindString "EntryPoint" nm; CallingConv= match decoder.FindInt32 "CallingConvention" 0 with | 1 -> PInvokeCallingConvention.WinApi | 2 -> PInvokeCallingConvention.Cdecl | 3 -> PInvokeCallingConvention.Stdcall | 4 -> PInvokeCallingConvention.Thiscall | 5 -> PInvokeCallingConvention.Fastcall | _ -> PInvokeCallingConvention.WinApi; CharEncoding= match decoder.FindInt32 "CharSet" 0 with | 1 -> PInvokeCharEncoding.None | 2 -> PInvokeCharEncoding.Ansi | 3 -> PInvokeCharEncoding.Unicode | 4 -> PInvokeCharEncoding.Auto | _ -> PInvokeCharEncoding.None; NoMangle= decoder.FindBool "ExactSpelling" false; LastError= decoder.FindBool "SetLastError" false; ThrowOnUnmappableChar= if (decoder.FindBool "ThrowOnUnmappableChar" false) then PInvokeThrowOnUnmappableChar.Enabled else PInvokeThrowOnUnmappableChar.UseAssembly; CharBestFit=if (decoder.FindBool "BestFitMapping" false) then PInvokeCharBestFit.Enabled else PInvokeCharBestFit.UseAssembly } and GenBindings cenv cgbuf eenv binds = FlatList.iter (GenBind cenv cgbuf eenv) binds //------------------------------------------------------------------------- // Generate locals and other storage of values //------------------------------------------------------------------------- and GenSetVal cenv cgbuf eenv (vref,e,m) sequel = let storage = StorageForValRef m vref eenv match storage with | Env (ilCloTy,_,_,_) -> CG.EmitInstr cgbuf (pop 0) (Push [ilCloTy]) mkLdarg0; | _ -> () GenExpr cenv cgbuf eenv SPSuppress e Continue; GenSetStorage vref.Range cgbuf storage GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel and GenGetValRefAndSequel cenv cgbuf eenv m (v:ValRef) fetchSequel = let ty = v.Type GenGetStorageAndSequel cenv cgbuf eenv m (ty, GenType cenv.amap m cenv.g eenv.tyenv ty) (StorageForValRef m v eenv) fetchSequel and GenGetVal cenv cgbuf eenv (v:ValRef,m) sequel = GenGetValRefAndSequel cenv cgbuf eenv m v None; GenSequel cenv eenv.cloc cgbuf sequel and GenBindRhs cenv cgbuf eenv sp (vspec:Val) e = match e with | Expr.TyLambda _ | Expr.Lambda _ -> let isLocalTypeFunc = IsNamedLocalTypeFuncVal cenv.g vspec e let selfv = if isLocalTypeFunc then None else Some (mkLocalValRef vspec) GenLambda cenv cgbuf eenv isLocalTypeFunc selfv e Continue | _ -> GenExpr cenv cgbuf eenv sp e Continue; and GenSetBindValue cenv cgbuf eenv eenv2 (vspec:Val) e = GenBindRhs cenv cgbuf eenv2 SPSuppress vspec e; GenStoreVal cgbuf eenv vspec.Range vspec and EmitInitLocal cgbuf typ idx = CG.EmitInstrs cgbuf (pop 0) Push0 [I_ldloca (uint16 idx); (I_initobj typ) ] and EmitSetLocal cgbuf idx = CG.EmitInstr cgbuf (pop 1) Push0 (mkStloc (uint16 idx)) and EmitGetLocal cgbuf typ idx = CG.EmitInstr cgbuf (pop 0) (Push [typ]) (mkLdloc (uint16 idx)) and EmitSetStaticField cgbuf fspec = CG.EmitInstr cgbuf (pop 1) Push0 (mkNormalStsfld fspec) and EmitGetStaticFieldAddr cgbuf typ fspec = CG.EmitInstr cgbuf (pop 0) (Push [typ]) (I_ldsflda fspec) and EmitGetStaticField cgbuf typ fspec = CG.EmitInstr cgbuf (pop 0) (Push [typ]) (mkNormalLdsfld fspec) and GenSetStorage m cgbuf storage = match storage with | Local (idx,_) -> EmitSetLocal cgbuf idx | StaticField (_, _, hasLiteralAttr, ilContainerTy, _, _, _, ilSetterMethRef, _) -> if hasLiteralAttr then errorR(Error(FSComp.SR.ilLiteralFieldsCannotBeSet(),m)); CG.EmitInstr cgbuf (pop 1) Push0 (I_call(Normalcall,mkILMethSpecForMethRefInTy(ilSetterMethRef,ilContainerTy,[]),None)) | StaticProperty (ilGetterMethSpec,_) -> error(Error(FSComp.SR.ilStaticMethodIsNotLambda(ilGetterMethSpec.Name),m)) | Method (_,_,mspec,m,_,_) -> error(Error(FSComp.SR.ilStaticMethodIsNotLambda(mspec.Name),m)) | Null -> CG.EmitInstr cgbuf (pop 1) Push0 AI_pop | Arg _ -> error(Error(FSComp.SR.ilMutableVariablesCannotEscapeMethod(),m)) | Env (_,_,ilField,_) -> // Note: ldarg0 has already been emitted in GenSetVal CG.EmitInstr cgbuf (pop 2) Push0 (mkNormalStfld ilField) | Unrealized -> error(Error(FSComp.SR.ilUnexpectedUnrealizedValue(),m)) and CommitGetStorageSequel cenv cgbuf eenv m typ localCloInfo storeSequel = match localCloInfo,storeSequel with | Some {contents =NamedLocalIlxClosureInfoGenerator _cloinfo},_ -> error(InternalError("Unexpected generator",m)) | Some {contents =NamedLocalIlxClosureInfoGenerated cloinfo},Some (tyargs,args,m,sequel) when nonNil tyargs -> let actualRetTy = GenNamedLocalTyFuncCall cenv cgbuf eenv typ cloinfo tyargs m; CommitGetStorageSequel cenv cgbuf eenv m actualRetTy None (Some ([],args,m,sequel)) | _, None -> () | _,Some ([],[],_,sequel) -> GenSequel cenv eenv.cloc cgbuf sequel | _,Some (tyargs,args,m,sequel) -> GenArgsAndIndirectCall cenv cgbuf eenv (typ,tyargs,args,m) sequel and GenGetStorageAndSequel cenv cgbuf eenv m (typ,ilTy) storage storeSequel = match storage with | Local (idx,localCloInfo) -> EmitGetLocal cgbuf ilTy idx; CommitGetStorageSequel cenv cgbuf eenv m typ localCloInfo storeSequel | StaticField (fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> // References to literals go directly to the field - no property is used if hasLiteralAttr then EmitGetStaticField cgbuf ilTy fspec else CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (I_call(Normalcall, mkILMethSpecForMethRefInTy (ilGetterMethRef, ilContainerTy, []), None)); CommitGetStorageSequel cenv cgbuf eenv m typ None storeSequel | StaticProperty (ilGetterMethSpec, _) -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (I_call (Normalcall, ilGetterMethSpec, None)); CommitGetStorageSequel cenv cgbuf eenv m typ None storeSequel | Method (topValInfo,vref,mspec,_,_,_) -> // Get a toplevel value as a first-class value. // We generate a lambda expression and that simply calls // the toplevel method. However we optimize the case where we are // immediately applying the value anyway (to insufficient arguments). // First build a lambda expression for the saturated use of the toplevel value... // REVIEW: we should NOT be doing this in the backend... let expr,exprty = AdjustValForExpectedArity cenv.g m vref NormalValUse topValInfo // Then reduce out any arguments (i.e. apply the sequel immediately if we can...) match storeSequel with | None -> GenLambda cenv cgbuf eenv false None expr Continue | Some (tyargs',args,m,sequel) -> let specializedExpr = if isNil args && isNil tyargs' then failwith ("non-lambda at use of method " + mspec.Name); MakeApplicationAndBetaReduce cenv.g (expr,exprty,[tyargs'],args,m) GenExpr cenv cgbuf eenv SPSuppress specializedExpr sequel | Null -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (AI_ldnull); CommitGetStorageSequel cenv cgbuf eenv m typ None storeSequel | Unrealized -> error(InternalError(sprintf "getting an unrealized value of type '%s'" (showL(typeL typ)),m)); | Arg i -> CG.EmitInstr cgbuf (pop 0) (Push [ilTy]) (mkLdarg (uint16 i)); CommitGetStorageSequel cenv cgbuf eenv m typ None storeSequel | Env (_,_,ilField,localCloInfo) -> // Note: ldarg 0 is emitted in 'cu_erase' erasure of the ldenv instruction CG.EmitInstrs cgbuf (pop 0) (Push [ilTy]) [ mkLdarg0; mkNormalLdfld ilField ] CommitGetStorageSequel cenv cgbuf eenv m typ localCloInfo storeSequel and GenGetLocalVals cenv cgbuf eenvouter m fvs = List.iter (fun v -> GenGetLocalVal cenv cgbuf eenvouter m v None) fvs; and GenGetLocalVal cenv cgbuf eenv m (vspec:Val) fetchSequel = GenGetStorageAndSequel cenv cgbuf eenv m (vspec.Type, GenTypeOfVal cenv eenv vspec) (StorageForVal m vspec eenv) fetchSequel and GenGetLocalVRef cenv cgbuf eenv m (vref:ValRef) fetchSequel = GenGetStorageAndSequel cenv cgbuf eenv m (vref.Type, GenTypeOfVal cenv eenv vref.Deref) (StorageForValRef m vref eenv) fetchSequel and GenStoreVal cgbuf eenv m (vspec:Val) = GenSetStorage vspec.Range cgbuf (StorageForVal m vspec eenv) //-------------------------------------------------------------------------- // Allocate locals for values //-------------------------------------------------------------------------- and AllocLocal cenv cgbuf eenv compgen (v,ty) (scopeMarks: Mark * Mark) = // The debug range for the local let ranges = if compgen then [] else [(v,scopeMarks)] // Get an index for the local let j = if cenv.opts.localOptimizationsAreOn then cgbuf.ReallocLocal((fun i (_,ty') -> not (IntMap.mem i eenv.liveLocals) && (ty = ty')),ranges,ty) else cgbuf.AllocLocal(ranges,ty) j, { eenv with liveLocals = IntMap.add j () eenv.liveLocals } and AllocLocalVal cenv cgbuf v eenv repr scopeMarks = let repr,eenv = let ty = v.Type if isUnitTy cenv.g ty && not v.IsMutable then Null,eenv elif isSome repr && IsNamedLocalTypeFuncVal cenv.g v (Option.get repr) then (* known, named, non-escaping type functions *) let cloinfoGenerate eenv = let eenvinner = {eenv with letBoundVars=(mkLocalValRef v)::eenv.letBoundVars} let cloinfo,_,_ = GetIlxClosureInfo cenv v.Range true None eenvinner (Option.get repr) cloinfo let idx,eenv = AllocLocal cenv cgbuf eenv v.IsCompilerGenerated (v.CompiledName, cenv.g.ilg.typ_Object) scopeMarks Local (idx,Some(ref (NamedLocalIlxClosureInfoGenerator cloinfoGenerate))),eenv else (* normal local *) let idx,eenv = AllocLocal cenv cgbuf eenv v.IsCompilerGenerated (v.CompiledName, GenTypeOfVal cenv eenv v) scopeMarks Local (idx,None),eenv let eenv = AddStorageForVal cenv.g (v,notlazy repr) eenv Some repr, eenv and AllocStorageForBind cenv cgbuf scopeMarks eenv bind = AllocStorageForBinds cenv cgbuf scopeMarks eenv (FlatList.one bind) and AllocStorageForBinds cenv cgbuf scopeMarks eenv binds = // phase 1 - decicde representations - most are very simple. let reps, eenv = FlatList.mapFold (AllocValForBind cenv cgbuf scopeMarks) eenv binds // Phase 2 - run the cloinfo generators for NamedLocalClosure values against the environment recording the // representation choices. reps |> FlatList.iter (fun reprOpt -> match reprOpt with | Some repr -> match repr with | Local(_,Some g) | Env(_,_,_,Some g) -> match !g with | NamedLocalIlxClosureInfoGenerator f -> g := NamedLocalIlxClosureInfoGenerated (f eenv) | NamedLocalIlxClosureInfoGenerated _ -> () | _ -> () | _ -> ()); eenv and AllocValForBind cenv cgbuf (scopeMarks: Mark * Mark) eenv (TBind(v,repr,_)) = match v.ValReprInfo with | None -> AllocLocalVal cenv cgbuf v eenv (Some repr) scopeMarks | Some _ -> None,AllocTopValWithinExpr cenv cgbuf eenv.cloc scopeMarks v eenv and AllocTopValWithinExpr cenv cgbuf cloc scopeMarks v eenv = // decide whether to use a shadow local or not let useShadowLocal = cenv.opts.generateDebugSymbols && not cenv.opts.localOptimizationsAreOn && not v.IsCompilerGenerated && not v.IsMutable && // Don't use shadow locals for things like functions which are not compiled as static values/properties IsCompiledAsStaticProperty cenv.g v let optShadowLocal,eenv = if useShadowLocal then let storageOpt, eenv = AllocLocalVal cenv cgbuf v eenv None scopeMarks match storageOpt with | None -> NoShadowLocal,eenv | Some storage -> ShadowLocal storage,eenv else NoShadowLocal,eenv ComputeAndAddStorageForLocalTopVal (cenv.amap, cenv.g, cenv.intraAssemblyInfo, cenv.opts.isInteractive, optShadowLocal) cloc v eenv //-------------------------------------------------------------------------- // Generate stack save/restore and assertions - pulled into letrec by alloc* //-------------------------------------------------------------------------- /// Save the stack /// - [gross] because IL flushes the stack at the exn. handler /// - and because IL requires empty stack following a forward br (jump). and EmitSaveStack cenv cgbuf eenv m scopeMarks = let savedStack = (cgbuf.GetCurrentStack()) let savedStackLocals,eenvinner = List.mapFold (fun eenv ty -> AllocLocal cenv cgbuf eenv true (ilxgenGlobalNng.FreshCompilerGeneratedName ("spill",m), ty) scopeMarks) eenv savedStack List.iter (EmitSetLocal cgbuf) savedStackLocals; cgbuf.AssertEmptyStack(); (savedStack,savedStackLocals),eenvinner (* need to return, it marks locals "live" *) /// Restore the stack and load the result and EmitRestoreStack cgbuf (savedStack,savedStackLocals) = cgbuf.AssertEmptyStack(); List.iter2 (EmitGetLocal cgbuf) (List.rev savedStack) (List.rev savedStackLocals) //------------------------------------------------------------------------- //GenAttr: custom attribute generation //------------------------------------------------------------------------- and GenAttribArg amap g eenv x (ilArgTy:ILType) = match x,ilArgTy with (* Detect standard constants *) | Expr.Const(c,m,_),_ -> let tynm = ilArgTy.TypeSpec.Name let isobj = (tynm = "System.Object") match c with | Const.Bool b -> ILAttribElem.Bool b | Const.Int32 i when isobj || tynm = "System.Int32" -> ILAttribElem.Int32 ( i) | Const.Int32 i when tynm = "System.SByte" -> ILAttribElem.SByte (sbyte i) | Const.Int32 i when tynm = "System.Int16" -> ILAttribElem.Int16 (int16 i) | Const.Int32 i when tynm = "System.Byte" -> ILAttribElem.Byte (byte i) | Const.Int32 i when tynm = "System.UInt16" ->ILAttribElem.UInt16 (uint16 i) | Const.Int32 i when tynm = "System.UInt32" ->ILAttribElem.UInt32 (uint32 i) | Const.Int32 i when tynm = "System.UInt64" ->ILAttribElem.UInt64 (uint64 (int64 i)) | Const.SByte i -> ILAttribElem.SByte i | Const.Int16 i -> ILAttribElem.Int16 i | Const.Int32 i -> ILAttribElem.Int32 i | Const.Int64 i -> ILAttribElem.Int64 i | Const.Byte i -> ILAttribElem.Byte i | Const.UInt16 i -> ILAttribElem.UInt16 i | Const.UInt32 i -> ILAttribElem.UInt32 i | Const.UInt64 i -> ILAttribElem.UInt64 i | Const.Double i -> ILAttribElem.Double i | Const.Single i -> ILAttribElem.Single i | Const.Char i -> ILAttribElem.Char i | Const.Zero when isobj -> ILAttribElem.Null | Const.Zero when tynm = "System.String" -> ILAttribElem.String None | Const.Zero when tynm = "System.Type" -> ILAttribElem.Type None | Const.String i when isobj || tynm = "System.String" -> ILAttribElem.String (Some i) | _ -> error (InternalError ( "The type '" + tynm + "' may not be used as a custom attribute value",m)) // Detect '[| ... |]' nodes | Expr.Op(TOp.Array,[elemTy],args,m),_ -> let ilElemTy = GenType amap m g eenv.tyenv elemTy ILAttribElem.Array (ilElemTy, List.map (fun arg -> GenAttribArg amap g eenv arg ilElemTy) args) // Detect 'typeof' calls | TypeOfExpr g ty, _ -> ILAttribElem.Type (Some (GenType amap x.Range g eenv.tyenv ty)) // Detect 'typedefof' calls | TypeDefOfExpr g ty, _ -> ILAttribElem.TypeRef (Some (GenType amap x.Range g eenv.tyenv ty).TypeRef) // Ignore upcasts | Expr.Op(TOp.Coerce,_,[arg2],_),_ -> GenAttribArg amap g eenv arg2 ilArgTy // Detect explicit enum values | EnumExpr g arg1, _ -> GenAttribArg amap g eenv arg1 ilArgTy // Detect bitwise or of attribute flags: one case of constant folding (a more general treatment is needed) | AttribBitwiseOrExpr g (arg1,arg2),_ -> let v1 = GenAttribArg amap g eenv arg1 ilArgTy let v2 = GenAttribArg amap g eenv arg2 ilArgTy match v1,v2 with | ILAttribElem.SByte i1, ILAttribElem.SByte i2 -> ILAttribElem.SByte (i1 ||| i2) | ILAttribElem.Int16 i1, ILAttribElem.Int16 i2-> ILAttribElem.Int16 (i1 ||| i2) | ILAttribElem.Int32 i1, ILAttribElem.Int32 i2-> ILAttribElem.Int32 (i1 ||| i2) | ILAttribElem.Int64 i1, ILAttribElem.Int64 i2-> ILAttribElem.Int64 (i1 ||| i2) | ILAttribElem.Byte i1, ILAttribElem.Byte i2-> ILAttribElem.Byte (i1 ||| i2) | ILAttribElem.UInt16 i1, ILAttribElem.UInt16 i2-> ILAttribElem.UInt16 (i1 ||| i2) | ILAttribElem.UInt32 i1, ILAttribElem.UInt32 i2-> ILAttribElem.UInt32 (i1 ||| i2) | ILAttribElem.UInt64 i1, ILAttribElem.UInt64 i2-> ILAttribElem.UInt64 (i1 ||| i2) | _ -> error (InternalError ("invalid custom attribute value (not a valid constant): " + showL (exprL x),x.Range)) // Other expressions are not valid custom attribute values | _ -> error (InternalError ("invalid custom attribute value (not a constant): " + showL (exprL x),x.Range)) and GenAttr amap g eenv (Attrib(_,k,args,props,_,_,_)) = let props = props |> List.map (fun (AttribNamedArg(s,ty,fld,AttribExpr(_,expr))) -> let m = expr.Range let ilTy = GenType amap m g eenv.tyenv ty let cval = GenAttribArg amap g eenv expr ilTy (s,ilTy,fld,cval)) let mspec = match k with | ILAttrib(mref) -> mkILMethSpec(mref,AsObject,[],[]) | FSAttrib(vref) -> assert(vref.IsMember); let mspec,_,_,_,_ = GetMethodSpecForMemberVal amap g (Option.get vref.MemberInfo) vref mspec let ilArgs = List.map2 (fun (AttribExpr(_,vexpr)) ty -> GenAttribArg amap g eenv vexpr ty) args (ILList.toList mspec.FormalArgTypes) mkILCustomAttribMethRef g.ilg (mspec,ilArgs, props) and GenAttrs cenv eenv attrs = List.map (GenAttr cenv.amap cenv.g eenv) attrs and GenCompilationArgumentCountsAttr cenv (v:Val) = [ match v.ValReprInfo with | Some(tvi) when v.IsMemberOrModuleBinding -> let arities = if ValSpecIsCompiledAsInstance cenv.g v then List.tail tvi.AritiesOfArgs else tvi.AritiesOfArgs if arities.Length > 1 then yield mkCompilationArgumentCountsAttr cenv.g arities | _ -> () ] // Create a permission set for a list of security attributes and CreatePermissionSets g amap eenv (securityAttributes : Attrib list) = [for ((Attrib(tcref,_,actions,_,_,_,_)) as attr) in securityAttributes do let action = match actions with | [AttribInt32Arg act] -> act | _ -> failwith "internal error: unrecognized security action" let secaction = (List.assoc action (Lazy.force ILSecurityActionRevMap)) let tref = tcref.CompiledRepresentationForNamedType let ilattr = GenAttr amap g eenv attr let _, ilNamedArgs = match TryDecodeILAttribute g tref (Some(tref.Scope)) (mkILCustomAttrs [ilattr]) with | Some(ae,na) -> ae, na | _ -> [],[] let setArgs = ilNamedArgs |> List.map (fun (n,ilt,_,ilae) -> (n,ilt,ilae)) yield IL.mkPermissionSet g.ilg (secaction, [(tref, setArgs)])] //-------------------------------------------------------------------------- // Generate the set of modules for an assembly, and the declarations in each module //-------------------------------------------------------------------------- /// Generate a static class at the given cloc and GenTypeDefForCompLoc (cenv, eenv, mgbuf: AssemblyBuilder, cloc, hidden, attribs, initTrigger, eliminateIfEmpty, addAtEnd) = let tref = TypeRefForCompLoc cloc let tdef = mkILSimpleClass cenv.g.ilg (tref.Name, ComputeTypeAccess tref hidden, emptyILMethods, emptyILFields, emptyILTypeDefs, emptyILProperties, emptyILEvents, mkILCustomAttrs (GenAttrs cenv eenv attribs @ (if List.mem tref.Name [TypeNameForImplicitMainMethod cloc; TypeNameForInitClass cloc; TypeNameForPrivateImplementationDetails cloc] then [ (* mkCompilerGeneratedAttribute *) ] else [mkCompilationMappingAttr cenv.g (int SourceConstructFlags.Module)])), initTrigger) let tdef = { tdef with IsSealed=true; IsAbstract=true } mgbuf.AddTypeDef(tref, tdef, eliminateIfEmpty, addAtEnd) and GenModuleExpr cenv cgbuf qname lazyInitInfo eenv x = let (ModuleOrNamespaceExprWithSig(mty,def,_)) = x // REVIEW: the scopeMarks are used for any shadow locals we create for the module bindings // We use one scope for all the bindings in the module, which makes them all appear with their "default" values // rather than incrementally as we step through the initializations in the module. This is a little unfortunate // but stems from the way we add module values all at once before we generate the module itself. LocalScope "module" cgbuf (fun scopeMarks -> let sigToImplRemapInfo = ComputeRemappingFromImplementationToSignature cenv.g def mty let eenv = AddSignatureRemapInfo "defs" sigToImplRemapInfo eenv let eenv = // Allocate all the values, including any shadow locals for static fields let allocVal cloc v = AllocTopValWithinExpr cenv cgbuf cloc scopeMarks v AddBindingsForModuleDef allocVal eenv.cloc eenv def GenModuleDef cenv cgbuf qname lazyInitInfo eenv def) and GenModuleDefs cenv cgbuf qname lazyInitInfo eenv mdefs = mdefs |> List.iter (GenModuleDef cenv cgbuf qname lazyInitInfo eenv) and GenModuleDef cenv (cgbuf:CodeGenBuffer) qname lazyInitInfo eenv x = match x with | TMDefRec(tycons,binds,mbinds,m) -> tycons |> List.iter (fun tc -> if tc.IsExceptionDecl then GenExnDef cenv cgbuf.mgbuf eenv m tc else GenTypeDef cenv cgbuf.mgbuf lazyInitInfo eenv m tc) ; GenLetRecBinds cenv cgbuf eenv (binds,m); mbinds |> List.iter (GenModuleBinding cenv cgbuf qname lazyInitInfo eenv) | TMDefLet(bind,_) -> GenBindings cenv cgbuf eenv (FlatList.one bind) | TMDefDo(e,_) -> GenExpr cenv cgbuf eenv SPAlways e discard; | TMAbstract(mexpr) -> GenModuleExpr cenv cgbuf qname lazyInitInfo eenv mexpr | TMDefs(mdefs) -> GenModuleDefs cenv cgbuf qname lazyInitInfo eenv mdefs // Generate a module binding and GenModuleBinding cenv (cgbuf:CodeGenBuffer) (qname:QualifiedNameOfFile) lazyInitInfo eenv (ModuleOrNamespaceBinding (mspec, mdef)) = let hidden = IsHiddenTycon eenv.sigToImplRemapInfo mspec let eenvinner = if mspec.IsNamespace then eenv else {eenv with cloc = CompLocForFixedModule cenv.opts.fragName qname.Text mspec } // Create the class to hold the contents of this module. No class needed if // we're compiling it as a namespace. // // Most module static fields go into the "InitClass" static class. // However mutable static fields go into the class for the module itself. // So this static class ends up with a .cctor if it has mutable fields. // if not mspec.IsNamespace then // The use of ILTypeInit.OnAny prevents the execution of the cctor before the // "main" method in the case where the "main" method is implicit. let staticClassTrigger = (* if eenv.isFinalFile then *) ILTypeInit.OnAny (* else ILTypeInit.BeforeField *) GenTypeDefForCompLoc (cenv, eenvinner, cgbuf.mgbuf, eenvinner.cloc, hidden, mspec.Attribs, staticClassTrigger, false, (* atEnd= *) true); // Generate the declarations in the module and its initialization code GenModuleDef cenv cgbuf qname lazyInitInfo eenvinner mdef; // If the module has a .cctor for some mutable fields, we need to ensure that when // those fields are "touched" the InitClass .cctor is forced. The InitClass .cctor will // then fill in the value of the mutable fields. if not mspec.IsNamespace && (cgbuf.mgbuf.GetCurrentFields(TypeRefForCompLoc eenvinner.cloc) |> Seq.isEmpty |> not) then GenForceWholeFileInitializationAsPartOfCCtor cenv cgbuf.mgbuf lazyInitInfo (TypeRefForCompLoc eenvinner.cloc) mspec.Range; /// Generate the namespace fragments in a single file and GenTopImpl cenv mgbuf mainInfoOpt eenv (TImplFile(qname, _, mexpr, hasExplicitEntryPoint, isScript)) = let eenv = {eenv with cloc = { eenv.cloc with clocTopImplQualifiedName = qname.Text } } // This is used to point the inner classes back to the startup module for initialization purposes let isFinalFile = isSome mainInfoOpt let initClassCompLoc = CompLocForInitClass eenv.cloc let initClassTy = mkILTyForCompLoc initClassCompLoc let initClassTrigger = (* if isFinalFile then *) ILTypeInit.OnAny (* else ILTypeInit.BeforeField *) let eenv = {eenv with cloc = initClassCompLoc; isFinalFile = isFinalFile; someTypeInThisAssembly = initClassTy } // Create the class to hold the initialization code and static fields for this file. // internal static class $ {} // Put it at the end since that gives an approximation of dependency order (to aid FSI.EXE's code generator - see FSharp 1.0 5548) GenTypeDefForCompLoc (cenv, eenv, mgbuf, initClassCompLoc, useHiddenInitCode, [], initClassTrigger, false, (*atEnd=*)true); // lazyInitInfo is an accumulator of functions which add the forced initialization of the storage module to // - mutable fields in public modules // - static "let" bindings in types // These functions only get executed/committed if we actually end up producing some code for the .cctor for the storage module. // The existence of .cctors adds costs to execution, so this is a half-sensible attempt to avoid adding them when possible. let lazyInitInfo = new ResizeArray ILInstr list -> ILInstr list -> unit>() // codegen .cctor/main for outer module let m = qname.Range let clocCcu = CompLocForCcu cenv.viewCcu // This method name is only used internally in ilxgen.fs to aid debugging let methodName = match mainInfoOpt with // Library file | None -> ".cctor" // Final file, explicit entry point | Some _ when hasExplicitEntryPoint -> ".cctor" // Final file, implicit entry point | Some _ -> mainMethName // topInstrs is ILInstr[] and contains the abstract IL for this file's top-level actions. topCode is the ILMethodBody for that same code. let topInstrs,topCode = CodeGenMethod cenv mgbuf (true,[],methodName,eenv,0,0, (fun cgbuf eenv -> GenModuleExpr cenv cgbuf qname lazyInitInfo eenv mexpr; CG.EmitInstr cgbuf (pop 0) Push0 I_ret),m) // The code generation for the initialization is now complete and the IL code is in topCode. // Make a .cctor and/or main method to contain the code. This initializes all modules. // Library file (mainInfoOpt = None) : optional .cctor if topCode has initialization effect // Final file, explicit entry point (mainInfoOpt = Some _, GetExplicitEntryPointInfo() = Some) : main + optional .cctor if topCode has initialization effect // Final file, implicit entry point (mainInfoOpt = Some _, GetExplicitEntryPointInfo() = None) : main + initialize + optional .cctor calling initialize let doesSomething = CheckCodeDoesSomething topCode.Code // Make a FEEFEE instruction to mark hidden code regions // We expect the first instruction to be a sequence point when generating debug symbols let feefee, seqpt = if topInstrs.Length > 1 then match topInstrs.[0] with | I_seqpoint sp as i -> [ FeeFeeInstr cenv sp.Document ], [ i ] | _ -> [], [] else [], [] begin match mainInfoOpt with // Final file in .EXE | Some mainInfo -> // Generate an explicit main method. If necessary, make a class constructor as // well for the bindings earlier in the file containing the entrypoint. match mgbuf.GetExplicitEntryPointInfo() with // Final file, explicit entry point : place the code in a .cctor, and add code to main that forces the .cctor (if topCode has initialization effect). | Some tref -> if doesSomething then lazyInitInfo.Add (fun fspec feefee seqpt -> // This adds the explicit init of the .cctor to the explicit entrypoint main method mgbuf.AddExplicitInitToSpecificMethodDef((fun md -> md.IsEntryPoint), tref, fspec, GenPossibleILSourceMarker cenv m, feefee, seqpt)); let cctorMethDef = mkILClassCtor (MethodBody.IL topCode) mgbuf.AddMethodDef(initClassTy.TypeRef,cctorMethDef); // Final file, implicit entry point. We generate no .cctor. // void main@() { // // } | None -> let ilAttrs = mkILCustomAttrs (GenAttrs cenv eenv mainInfo) if not cenv.opts.isInteractive && not doesSomething then let errorM = m.EndRange warning (Error(FSComp.SR.ilMainModuleEmpty(), errorM)); // generate main@ let ilMainMethodDef = let mdef = mkILNonGenericStaticMethod(mainMethName,ILMemberAccess.Public,[],mkILReturn ILType.Void, MethodBody.IL topCode) {mdef with IsEntryPoint= true; CustomAttrs = ilAttrs } mgbuf.AddMethodDef(initClassTy.TypeRef,ilMainMethodDef); // Library file : generate an optional .cctor if topCode has initialization effect | None -> if doesSomething then // Add the cctor let cctorMethDef = mkILClassCtor (MethodBody.IL topCode) mgbuf.AddMethodDef(initClassTy.TypeRef,cctorMethDef); end // Commit the directed initializations if doesSomething then // Create the field to act as the target for the forced initialization. // jomof: Why do this for the final file? // dsyme: There is no need to do this for a final file with an implicit entry point. For an explicit entry point in lazyInitInfo. let initFieldName = CompilerGeneratedName "init" let ilFieldDef = mkILStaticField (initFieldName,cenv.g.ilg.typ_Int32, None, None, ComputeMemberAccess true) |> addFieldNeverAttrs cenv.g.ilg |> addFieldGeneratedAttrs cenv.g.ilg let fspec = mkILFieldSpecInTy (initClassTy, initFieldName, cenv. g.ilg.typ_Int32) CountStaticFieldDef(); mgbuf.AddFieldDef(initClassTy.TypeRef,ilFieldDef); // Run the imperative (yuck!) actions that force the generation // of references to the cctor for nested modules etc. lazyInitInfo |> Seq.iter (fun f -> f fspec feefee seqpt); if isScript && not(isFinalFile) then mgbuf.AddScriptInitFieldSpec(fspec,m) // Compute the ilxgenEnv after the generation of the module, i.e. the residue need to generate anything that // uses the constructs exported from this module. // We add the module type all over again. Note no shadow locals for static fields needed here since they are only relevant to the main/.cctor let eenvafter = let allocVal = ComputeAndAddStorageForLocalTopVal (cenv.amap, cenv.g, cenv.intraAssemblyInfo, cenv.opts.isInteractive, NoShadowLocal) AddBindingsForLocalModuleType allocVal clocCcu eenv mexpr.Type eenvafter and GenForceWholeFileInitializationAsPartOfCCtor cenv (mgbuf:AssemblyBuilder) (lazyInitInfo: ResizeArray<_>) tref m = // Authoring a .cctor with effects forces the cctor for the 'initialization' module by doing a dummy store & load of a field // Doing both a store and load keeps FxCop happier because it thinks the field is useful lazyInitInfo.Add (fun fspec feefee seqpt -> mgbuf.AddExplicitInitToSpecificMethodDef((fun md -> md.Name = ".cctor"), tref, fspec, GenPossibleILSourceMarker cenv m, feefee, seqpt)) /// Generate an Equals method. and GenEqualsOverrideCallingIComparable cenv (tcref:TyconRef, ilThisTy, _ilThatTy) = let mspec = mkILNonGenericInstanceMethSpecInTy (cenv.g.ilg.typ_IComparable, "CompareTo", [cenv.g.ilg.typ_Object], cenv.g.ilg.typ_int32) mkILNonGenericVirtualMethod ("Equals",ILMemberAccess.Public, [mkILParamNamed ("obj",cenv.g.ilg.typ_Object)], mkILReturn cenv.g.ilg.typ_bool, mkMethodBody(true,emptyILLocals,2, nonBranchingInstrsToCode [ yield mkLdarg0; yield mkLdarg 1us; if tcref.IsStructOrEnumTycon then yield I_callconstraint ( Normalcall, ilThisTy,mspec,None) else yield I_callvirt ( Normalcall, mspec,None) yield mkLdcInt32 (0) yield AI_ceq ], None)) |> AddNonUserCompilerGeneratedAttribs cenv.g and GenFieldInit m c = match c with | Const.SByte n -> ILFieldInit.Int8 n | Const.Int16 n -> ILFieldInit.Int16 n | Const.Int32 n -> ILFieldInit.Int32 n | Const.Int64 n -> ILFieldInit.Int64 n | Const.Byte n -> ILFieldInit.UInt8 n | Const.UInt16 n -> ILFieldInit.UInt16 n | Const.UInt32 n -> ILFieldInit.UInt32 n | Const.UInt64 n -> ILFieldInit.UInt64 n | Const.Bool n -> ILFieldInit.Bool n | Const.Char n -> ILFieldInit.Char (uint16 n) | Const.Single n -> ILFieldInit.Single n | Const.Double n -> ILFieldInit.Double n | Const.String s -> ILFieldInit.String s | Const.Zero -> ILFieldInit.Null | _ -> error(Error(FSComp.SR.ilTypeCannotBeUsedForLiteralField(),m)) and GenAbstractBinding cenv eenv tref (vref:ValRef) = assert(vref.IsMember); let m = vref.Range let memberInfo = Option.get vref.MemberInfo let attribs = vref.Attribs let hasPreserveSigImplFlag,hasSynchronizedImplFlag,hasNoInliningFlag,attribs = ComputeMethodImplAttribs cenv vref.Deref attribs if memberInfo.MemberFlags.IsDispatchSlot && not memberInfo.IsImplemented then let ilAttrs = [ yield! GenAttrs cenv eenv attribs yield! GenCompilationArgumentCountsAttr cenv vref.Deref ] let mspec,ctps,mtps,argInfos,retInfo = GetMethodSpecForMemberVal cenv.amap cenv.g memberInfo vref let eenvForMeth = EnvForTypars (ctps@mtps) eenv let ilMethTypars = GenGenericParams cenv eenvForMeth mtps let ilReturn = GenReturnInfo cenv eenvForMeth mspec.FormalReturnType retInfo let ilParams = GenParams cenv eenvForMeth mspec argInfos None let compileAsInstance = ValRefIsCompiledAsInstanceMember cenv.g vref let mdef = mkILGenericVirtualMethod (vref.CompiledName,ILMemberAccess.Public,ilMethTypars,ilParams,ilReturn,MethodBody.Abstract) let mdef = fixupVirtualSlotFlags mdef let mdef = {mdef with IsPreserveSig=hasPreserveSigImplFlag; IsSynchronized=hasSynchronizedImplFlag; IsNoInline=hasNoInliningFlag; mdKind=match mdef.mdKind with | MethodKind.Virtual vinfo -> MethodKind.Virtual {vinfo with IsFinal=memberInfo.MemberFlags.IsFinal; IsAbstract=memberInfo.MemberFlags.IsDispatchSlot; } | k -> k } match memberInfo.MemberFlags.MemberKind with | MemberKind.ClassConstructor | MemberKind.Constructor | MemberKind.Member -> let mdef = {mdef with CustomAttrs= mkILCustomAttrs ilAttrs } [mdef], [], [] | MemberKind.PropertyGetSet -> error(Error(FSComp.SR.ilUnexpectedGetSetAnnotation(),m)); | MemberKind.PropertySet | MemberKind.PropertyGet -> let v = vref.Deref let vtyp = ReturnTypeOfPropertyVal cenv.g v if CompileAsEvent cenv.g attribs then let edef = GenEventForProperty cenv eenvForMeth mspec v ilAttrs m vtyp [],[],[edef] else let ilPropDef = let ilPropTy = GenType cenv.amap m cenv.g eenvForMeth.tyenv vtyp let ilArgTys = v |> ArgInfosOfPropertyVal cenv.g |> List.map fst |> GenTypes cenv.amap m cenv.g eenvForMeth.tyenv GenPropertyForMethodDef compileAsInstance tref mdef v memberInfo ilArgTys ilPropTy (mkILCustomAttrs ilAttrs) None let mdef = mdef |> AddSpecialNameFlag [mdef], [ilPropDef],[] else [],[],[] and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon:Tycon) = let tcref = mkLocalTyconRef tycon if tycon.IsTypeAbbrev then () else match tycon.TypeReprInfo with #if EXTENSIONTYPING | TProvidedNamespaceExtensionPoint _ -> () | TProvidedTypeExtensionPoint _ -> () #endif | TNoRepr -> () | TAsmRepr _ | TILObjModelRepr _ | TMeasureableRepr _ -> () | TFsObjModelRepr _ | TRecdRepr _ | TFiniteUnionRepr _ -> let eenvinner = ReplaceTyenv (TypeReprEnv.ForTycon tycon) eenv let thisTy = generalizedTyconRef tcref let ilThisTy = GenType cenv.amap m cenv.g eenvinner.tyenv thisTy let tref = ilThisTy.TypeRef let ilGenParams = GenGenericParams cenv eenvinner tycon.TyparsNoRange let ilIntfTys = tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.map (GenType cenv.amap m cenv.g eenvinner.tyenv) let ilTypeName = tref.Name let hidden = IsHiddenTycon eenv.sigToImplRemapInfo tycon let hiddenRepr = hidden || IsHiddenTyconRepr eenv.sigToImplRemapInfo tycon let access = ComputeTypeAccess tref hidden let augmentOverrideMethodDefs = // The implicit augmentation doesn't actually create CompareTo(object) or Object.Equals // So we do it here. let specialCompareMethod = // Note you only have to implement 'System.IComparable' to customize structural comparison AND equality on F# types // See also FinalTypeDefinitionChecksAtEndOfInferenceScope in tc.fs // Generate an Equals method implemented via IComparable if the type EXPLICITLY implements IComparable. // HOWEVER, if the type doesn't override Object.Equals already. (if isNone tycon.GeneratedCompareToValues && isNone tycon.GeneratedHashAndEqualsValues && tycon.HasInterface cenv.g cenv.g.mk_IComparable_ty && not (tycon.HasOverride cenv.g "Equals" [cenv.g.obj_ty]) && not tycon.IsFSharpInterfaceTycon then [ GenEqualsOverrideCallingIComparable cenv (tcref,ilThisTy,ilThisTy) ] else []) specialCompareMethod // We can't reduce the accessibility because these implement virtual slots (* |> List.map (fun md -> { md with Access=memberAccess }) *) // Generate the interface slots and abstract slots. let abstractMethodDefs,abstractPropDefs, abstractEventDefs = if tycon.IsFSharpDelegateTycon then [],[],[] else // sort by order of declaration // REVIEW: this should be based off tcaug_adhoc_list, which is in declaration order tycon.MembersOfFSharpTyconSorted |> List.sortWith (fun v1 v2 -> rangeOrder.Compare(v1.DefinitionRange,v2.DefinitionRange)) |> List.map (GenAbstractBinding cenv eenv tref) |> List.unzip3 |> mapTriple (List.concat, List.concat, List.concat) let abstractPropDefs = abstractPropDefs |> MergePropertyDefs m let isAbstract = isAbstractTycon tycon // Generate all the method impls showing how various abstract slots and interface slots get implemented // REVIEW: no method impl generated for IStructuralHash or ICompare let methodImpls = [ for vref in tycon.MembersOfFSharpTyconByName |> NameMultiMap.range do assert(vref.IsMember); let memberInfo = vref.MemberInfo.Value if memberInfo.MemberFlags.IsOverrideOrExplicitImpl && not (CompileAsEvent cenv.g vref.Attribs) then for slotsig in memberInfo.ImplementedSlotSigs do if isInterfaceTy cenv.g slotsig.ImplementedType then match vref.ValReprInfo with | Some _ -> let memberParentTypars,memberMethodTypars = match PartitionValRefTypars cenv.g vref with | Some(_,memberParentTypars,memberMethodTypars,_,_) -> memberParentTypars,memberMethodTypars | None -> [],[] let useMethodImpl = true let eenvUnderTypars = EnvForTypars memberParentTypars eenv let _,methodImplGenerator = GenMethodImpl cenv eenvUnderTypars (useMethodImpl,slotsig) m if useMethodImpl then yield methodImplGenerator (ilThisTy,memberMethodTypars) | _ -> () ] let defaultMemberAttrs = // REVIEW: this should be based off tcaug_adhoc_list, which is in declaration order tycon.MembersOfFSharpTyconSorted |> List.tryPick (fun vref -> let name = vref.DisplayName match vref.MemberInfo with | None -> None | Some memberInfo -> match name, memberInfo.MemberFlags.MemberKind with | ("Item" | "op_IndexedLookup"), (MemberKind.PropertyGet | MemberKind.PropertySet) when nonNil (ArgInfosOfPropertyVal cenv.g vref.Deref) -> Some( mkILCustomAttribute cenv.g.ilg (mkILTyRef (cenv.g.ilg.mscorlibScopeRef,"System.Reflection.DefaultMemberAttribute"),[cenv.g.ilg.typ_String],[ILAttribElem.String(Some(name))],[]) ) | _ -> None) |> Option.toList let tyconRepr = tycon.TypeReprInfo // DebugDisplayAttribute gets copied to the subtypes generated as part of DU compilation let debugDisplayAttrs,normalAttrs = tycon.Attribs |> List.partition (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_DebuggerDisplayAttribute) let securityAttrs,normalAttrs = normalAttrs |> List.partition (fun a -> IsSecurityAttribute cenv.g cenv.amap cenv.casApplied a m) let generateDebugDisplayAttribute = not cenv.g.compilingFslib && tycon.IsUnionTycon && isNil debugDisplayAttrs let generateDebugProxies = (not (tyconRefEq cenv.g tcref cenv.g.unit_tcr_canon) && not (HasFSharpAttribute cenv.g cenv.g.attrib_DebuggerTypeProxyAttribute tycon.Attribs)) let permissionSets = CreatePermissionSets cenv.g cenv.amap eenv securityAttrs let secDecls = if securityAttrs.Length > 0 then (mkILSecurityDecls permissionSets) else (emptyILSecurityDecls) let ilDebugDisplayAttributes = [ yield! GenAttrs cenv eenv debugDisplayAttrs if generateDebugDisplayAttribute then yield mkDebuggerDisplayAttribute cenv.g.ilg ("{" + debugDisplayMethodName + "(),nq}") ] let CustomAttrs = [ yield! defaultMemberAttrs yield! normalAttrs |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_StructLayoutAttribute >> not) |> GenAttrs cenv eenv yield! ilDebugDisplayAttributes ] let reprAccess = ComputeMemberAccess hiddenRepr let ilTypeDefKind = match tyconRepr with | TFsObjModelRepr o -> match o.fsobjmodel_kind with | TTyconClass -> ILTypeDefKind.Class | TTyconStruct -> ILTypeDefKind.ValueType | TTyconInterface -> ILTypeDefKind.Interface | TTyconEnum -> ILTypeDefKind.Enum | TTyconDelegate _ -> ILTypeDefKind.Delegate | _ -> ILTypeDefKind.Class let requiresExtraField = let isEmptyStruct = (match ilTypeDefKind with ILTypeDefKind.ValueType -> true | _ -> false) && // All structs are sequential by default // Structs with no instance fields get size 1, pack 0 tycon.AllFieldsAsList |> List.exists (fun f -> not f.IsStatic) isEmptyStruct && cenv.opts.workAroundReflectionEmitBugs && not tycon.TyparsNoRange.IsEmpty // Compute a bunch of useful thnigs for each field let isCLIMutable = (TryFindFSharpBoolAttribute cenv.g cenv.g.attrib_CLIMutableAttribute tycon.Attribs = Some true) let fieldSummaries = [ for fspec in tycon.AllFieldsAsList do let useGenuineField = useGenuineField tycon fspec // The property (or genuine IL field) is hidden in these circumstances: // - secret fields apart from "__value" fields for enums // - the representation of the type is hidden // - the F# field is hidden by a signature or private declaration let isPropHidden = ((fspec.IsCompilerGenerated && not tycon.IsEnumTycon) || hiddenRepr || IsHiddenRecdField eenv.sigToImplRemapInfo (mkNestedRecdFieldRef tcref fspec)) let ilType = GenType cenv.amap m cenv.g eenvinner.tyenv fspec.FormalType let ilFieldName = ComputeFieldName tycon fspec yield (useGenuineField, ilFieldName, fspec.IsMutable, fspec.IsStatic, fspec.PropertyAttribs, ilType, isPropHidden, fspec) ] // Generate the IL fields let ilFieldDefs = [ for (useGenuineField,ilFieldName,isFSharpMutable,isStatic,_,ilPropType,isPropHidden,fspec) in fieldSummaries do let ilFieldOffset = match TryFindFSharpAttribute cenv.g cenv.g.attrib_FieldOffsetAttribute fspec.FieldAttribs with | Some (Attrib(_,_,[ AttribInt32Arg(fieldOffset) ],_,_,_,_)) -> Some fieldOffset | Some (Attrib(_,_,_,_,_,_,m)) -> errorR(Error(FSComp.SR.ilFieldOffsetAttributeCouldNotBeDecoded(),m)); None | _ -> None let attribs = [ // If using a field then all the attributes go on the field // See also FSharp 1.0 Bug 4727: once we start compiling them as real mutable fields, you should not be able to target both "property" for "val mutable" fields in classes if useGenuineField then yield! fspec.PropertyAttribs yield! fspec.FieldAttribs ] let ilNotSerialized = HasFSharpAttribute cenv.g cenv.g.attrib_NonSerializedAttribute attribs let fattribs = attribs // Do not generate FieldOffset as a true CLI custom attribute, since it is implied by other corresponding CLI metadata |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_FieldOffsetAttribute >> not) // Do not generate NonSerialized as a true CLI custom attribute, since it is implied by other corresponding CLI metadata |> List.filter (IsMatchingFSharpAttribute cenv.g cenv.g.attrib_NonSerializedAttribute >> not) let ilFieldMarshal, fattribs = GenMarshal cenv fattribs // The IL field is hidden if the property/field is hidden OR we're using a property AND the field is not mutable (because we can take the address of a mutable field). // Otherwise fields are always accessed via their property getters/setters let isFieldHidden = isPropHidden || (not useGenuineField && not isFSharpMutable) let extraAttribs = match tyconRepr with | TRecdRepr _ when not useGenuineField && cenv.g.ilg.generateDebugBrowsableData -> [ mkDebuggerBrowsableNeverAttribute cenv.g.ilg ] // hide fields in records in debug display | _ -> [] // don't hide fields in classes in debug display yield { Name = ilFieldName; Type = ilPropType; IsStatic = isStatic; Access = ComputeMemberAccess isFieldHidden; Data = None; LiteralValue = Option.map (GenFieldInit m) fspec.LiteralValue; Offset = ilFieldOffset; IsSpecialName = (ilFieldName="value__" && tycon.IsEnumTycon); Marshal = ilFieldMarshal NotSerialized = ilNotSerialized; IsInitOnly = false; IsLiteral = fspec.LiteralValue.IsSome; CustomAttrs = mkILCustomAttrs (GenAttrs cenv eenv fattribs @ extraAttribs) } if requiresExtraField then yield mkILInstanceField("__dummy",cenv.g.ilg.typ_int32,None,ILMemberAccess.Assembly) ] // Generate property definitions for the fields compiled as properties let ilPropertyDefsForFields = [ for (i, (useGenuineField,_,isFSharpMutable,isStatic,propAttribs,ilPropType,_,fspec)) in markup fieldSummaries do if not useGenuineField then let ilCallingConv = if isStatic then ILCallingConv.Static else ILCallingConv.Instance let ilPropName = fspec.Name let ilHasSetter = isCLIMutable || isFSharpMutable let ilFieldAttrs = GenAttrs cenv eenv propAttribs @ [mkCompilationMappingAttrWithSeqNum cenv.g (int SourceConstructFlags.Field) i] yield { Name = ilPropName; IsRTSpecialName = false; IsSpecialName = false; SetMethod = (if ilHasSetter then Some(mkILMethRef(tref,ilCallingConv,"set_" + ilPropName,0,[ilPropType],ILType.Void)) else None); GetMethod = Some(mkILMethRef(tref,ilCallingConv,"get_" + ilPropName,0,[],ilPropType)); CallingConv = ilCallingConv.ThisConv; Type = ilPropType; Init = None; Args = mkILTypes []; CustomAttrs = mkILCustomAttrs ilFieldAttrs; } ] let methodDefs = [ // Generate property getter methods for those fields that have properties for (useGenuineField,ilFieldName,_,isStatic,_,ilPropType,isPropHidden,fspec) in fieldSummaries do if not useGenuineField then let ilPropName = fspec.Name let ilMethName = "get_" + ilPropName let access = ComputeMemberAccess isPropHidden yield mkLdfldMethodDef (ilMethName,access,isStatic,ilThisTy,ilFieldName,ilPropType) // Generate property setter methods for the mutable fields for (useGenuineField,ilFieldName,isFSharpMutable,isStatic,_,ilPropType,isPropHidden,fspec) in fieldSummaries do let ilHasSetter = (isCLIMutable || isFSharpMutable) && not useGenuineField if ilHasSetter then let ilPropName = fspec.Name let ilFieldSpec = mkILFieldSpecInTy(ilThisTy,ilFieldName,ilPropType) let ilMethName = "set_" + ilPropName let ilParams = [mkILParamNamed("value",ilPropType)] let ilReturn = mkILReturn ILType.Void let iLAccess = ComputeMemberAccess isPropHidden let ilMethodDef = if isStatic then mkILNonGenericStaticMethod (ilMethName,iLAccess,ilParams,ilReturn, mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode ([ mkLdarg0;mkNormalStsfld ilFieldSpec]),None)) else mkILNonGenericInstanceMethod (ilMethName,iLAccess,ilParams,ilReturn, mkMethodBody(true,emptyILLocals,2,nonBranchingInstrsToCode ([ mkLdarg0;mkLdarg 1us;mkNormalStfld ilFieldSpec]),None)) yield ilMethodDef |> AddSpecialNameFlag if generateDebugDisplayAttribute then let (|Lazy|) (x:Lazy<_>) = x.Force() match (eenv.valsInScope.TryFind cenv.g.sprintf_vref.Deref, eenv.valsInScope.TryFind cenv.g.new_format_vref.Deref) with | Some(Lazy(Method(_,_,sprintfMethSpec,_,_,_))), Some(Lazy(Method(_,_,newFormatMethSpec,_,_,_))) -> // The type returned by the 'sprintf' call let funcTy = EraseIlxFuncs.mkILFuncTy cenv.g.ilxPubCloEnv ilThisTy cenv.g.ilg.typ_String // Give the instantiation of the printf format object, i.e. a Format`5 object compatible with StringFormat let newFormatMethSpec = mkILMethSpec(newFormatMethSpec.MethodRef,AsObject, [// 'T -> string' funcTy; // rest follow from 'StringFormat' GenUnitTy cenv eenv m; cenv.g.ilg.typ_String; cenv.g.ilg.typ_String; cenv.g.ilg.typ_String],[]) // Instantiate with our own type let sprintfMethSpec = mkILMethSpec(sprintfMethSpec.MethodRef,AsObject,[],[funcTy]) // Here's the body of the method. Call printf, then invoke the function it returns let ilMethodDef = mkILNonGenericInstanceMethod (debugDisplayMethodName,ILMemberAccess.Assembly,[], mkILReturn cenv.g.ilg.typ_Object, mkMethodBody (true,emptyILLocals,2, nonBranchingInstrsToCode [ // load the hardwired format string I_ldstr "%+0.8A"; // make the printf format object mkNormalNewobj newFormatMethSpec; // call sprintf mkNormalCall sprintfMethSpec; // call the function returned by sprintf mkLdarg0; mkIlxInstr (EI_callfunc(Normalcall,Apps_app(ilThisTy, Apps_done cenv.g.ilg.typ_String))) ], None)) yield ilMethodDef |> AddSpecialNameFlag |> AddNonUserCompilerGeneratedAttribs cenv.g | None,_ -> //printfn "sprintf not found" () | _,None -> //printfn "new formatnot found" () | _ -> //printfn "neither found, or non-method" () // Build record constructors and the funky methods that go with records and delegate types. // Constructors and delegate methods have the same access as the representation match tyconRepr with | TRecdRepr _ when not (tycon.IsEnumTycon) -> // No constructor for enum types // Otherwise find all the non-static, non zero-init fields and build a constructor let relevantFields = fieldSummaries |> List.filter (fun (_,_,_,isStatic,_,_,_,fspec) -> not isStatic && not fspec.IsZeroInit) let fieldNamesAndTypes = relevantFields |> List.map (fun (_,ilFieldName,_,_,_,ilPropType,_,fspec) -> (fspec.Name,ilFieldName,ilPropType)) let ilMethodDef = mkILSimpleStorageCtorWithParamNames(None, Some cenv.g.ilg.tspec_Object, ilThisTy, ChooseParamNames fieldNamesAndTypes, reprAccess) yield ilMethodDef // FSharp 1.0 bug 1988: Explicitly setting the ComVisible(true) attribute on an F# type causes an F# record to be emitted in a way that enables mutation for COM interop scenarios // FSharp 3.0 feature: adding CLIMutable to a record type causes emit of default constructor, and all fields get property setters if isCLIMutable || (TryFindFSharpBoolAttribute cenv.g cenv.g.attrib_ComVisibleAttribute tycon.Attribs = Some true) then yield mkILSimpleStorageCtor(None, Some cenv.g.ilg.tspec_Object, ilThisTy, [], reprAccess) | TFsObjModelRepr r when tycon.IsFSharpDelegateTycon -> // Build all the methods that go with a delegate type match r.fsobjmodel_kind with | TTyconDelegate ss -> let p,r = // When "type delagateTy = delegate of unit -> returnTy", // suppress the unit arg from delagate .Invoke vslot. let (TSlotSig(nm,typ,ctps,mtps,paraml,returnTy)) = ss let paraml = match paraml with | [[tsp]] when isUnitTy cenv.g tsp.Type -> [] (* suppress unit arg *) | paraml -> paraml GenActualSlotsig m cenv eenvinner (TSlotSig(nm,typ,ctps,mtps,paraml,returnTy)) [] for ilMethodDef in mkILDelegateMethods cenv.g.ilg (p,r) do yield { ilMethodDef with Access=reprAccess } | _ -> () | _ -> () ] let ilMethods = methodDefs @ augmentOverrideMethodDefs @ abstractMethodDefs let ilProperties = mkILProperties (ilPropertyDefsForFields @ abstractPropDefs) let ilEvents = mkILEvents abstractEventDefs let ilFields = mkILFields ilFieldDefs let tdef = let IsSerializable = (TryFindFSharpBoolAttribute cenv.g cenv.g.attrib_AutoSerializableAttribute tycon.Attribs <> Some(false)) && cenv.opts.netFxHasSerializableAttribute match tycon.TypeReprInfo with | TILObjModelRepr (_,_,td) -> {td with Access = access; CustomAttrs = mkILCustomAttrs CustomAttrs; GenericParams = ilGenParams; } | TRecdRepr _ | TFsObjModelRepr _ as tyconRepr -> let super = superOfTycon cenv.g tycon let ilBaseTy = GenType cenv.amap m cenv.g eenvinner.tyenv super // Build a basic type definition let isObjectType = (match tyconRepr with TFsObjModelRepr _ -> true | _ -> false) let ilAttrs = CustomAttrs @ [mkCompilationMappingAttr cenv.g (int (if isObjectType then SourceConstructFlags.ObjectType elif hiddenRepr then SourceConstructFlags.RecordType ||| SourceConstructFlags.NonPublicRepresentation else SourceConstructFlags.RecordType)) ] // For now, generic types always use ILTypeInit.BeforeField. This is because // there appear to be some cases where ILTypeInit.OnAny causes problems for // the .NET CLR when used in conjunction with generic classes in cross-DLL // and NGEN scenarios. // // We don't apply this rule to the final file. This is because ALL classes with .cctors in // the final file (which may in turn trigger the .cctor for the .EXE itself, which // in turn calls the main() method) must have deterministic initialization // that is not triggered prior to execution of the main() method. // If this property doesn't hold then the .cctor can end up running // before the main method even starts. let typeDefTrigger = if eenv.isFinalFile || tycon.TyparsNoRange.IsEmpty then ILTypeInit.OnAny else ILTypeInit.BeforeField let tdef = mkILGenericClass (ilTypeName, access, ilGenParams, ilBaseTy, ilIntfTys, mkILMethods ilMethods, ilFields, emptyILTypeDefs, ilProperties, ilEvents, mkILCustomAttrs ilAttrs, typeDefTrigger) // Set some the extra entries in the definition let isTheSealedAttribute = tyconRefEq cenv.g tcref cenv.g.attrib_SealedAttribute.TyconRef let tdef = { tdef with IsSealed = isSealedTy cenv.g thisTy || isTheSealedAttribute; IsSerializable = IsSerializable; MethodImpls=mkILMethodImpls methodImpls; IsAbstract=isAbstract; IsComInterop=isComInteropTy cenv.g thisTy } let tdLayout,tdEncoding = match TryFindFSharpAttribute cenv.g cenv.g.attrib_StructLayoutAttribute tycon.Attribs with | Some (Attrib(_,_,[ AttribInt32Arg(layoutKind) ],namedArgs,_,_,_)) -> let decoder = AttributeDecoder namedArgs let ilPack = decoder.FindInt32 "Pack" 0x0 let ilSize = decoder.FindInt32 "Size" 0x0 let tdEncoding = match (decoder.FindInt32 "CharSet" 0x0) with (* enumeration values for System.Runtime.InteropServices.CharSet taken from mscorlib.il *) | 0x03 -> ILDefaultPInvokeEncoding.Unicode | 0x04 -> ILDefaultPInvokeEncoding.Auto | _ -> ILDefaultPInvokeEncoding.Ansi let layoutInfo = if ilPack = 0x0 && ilSize = 0x0 then { Size=None; Pack=None } else { Size = Some ilSize; Pack = Some (uint16 ilPack) } let tdLayout = match layoutKind with (* enumeration values for System.Runtime.InteropServices.LayoutKind taken from mscorlib.il *) | 0x0 -> ILTypeDefLayout.Sequential layoutInfo | 0x2 -> ILTypeDefLayout.Explicit layoutInfo | _ -> ILTypeDefLayout.Auto tdLayout,tdEncoding | Some (Attrib(_,_,_,_,_,_,m)) -> errorR(Error(FSComp.SR.ilStructLayoutAttributeCouldNotBeDecoded(),m)); ILTypeDefLayout.Auto, ILDefaultPInvokeEncoding.Ansi | _ when (match ilTypeDefKind with ILTypeDefKind.ValueType -> true | _ -> false) -> // All structs are sequential by default // Structs with no instance fields get size 1, pack 0 if tycon.AllFieldsAsList |> List.exists (fun f -> not f.IsStatic) || // Reflection emit doesn't let us emit 'pack' and 'size' for generic structs. // In that case we generate a dummy field instead (cenv.opts.workAroundReflectionEmitBugs && not tycon.TyparsNoRange.IsEmpty) then ILTypeDefLayout.Sequential { Size=None; Pack=None }, ILDefaultPInvokeEncoding.Ansi else ILTypeDefLayout.Sequential { Size=Some 1; Pack=Some 0us }, ILDefaultPInvokeEncoding.Ansi | _ -> ILTypeDefLayout.Auto, ILDefaultPInvokeEncoding.Ansi // if the type's layout is Explicit, ensure that each field has a valid offset let validateExplicit fdef = match fdef.Offset with // Remove field suffix "@" for pretty printing | None -> errorR(Error(FSComp.SR.ilFieldDoesNotHaveValidOffsetForStructureLayout(tdef.Name, fdef.Name.Replace("@","")), (trimRangeToLine m))) | _ -> () // if the type's layout is Sequential, no offsets should be applied let validateSequential fdef = match fdef.Offset with | Some _ -> errorR(Error(FSComp.SR.ilFieldHasOffsetForSequentialLayout(), (trimRangeToLine m))) | _ -> () match tdLayout with | ILTypeDefLayout.Explicit(_) -> List.iter validateExplicit ilFieldDefs | ILTypeDefLayout.Sequential(_) -> List.iter validateSequential ilFieldDefs | _ -> () let tdef = { tdef with tdKind = ilTypeDefKind; Layout=tdLayout; Encoding=tdEncoding } let tdef = match ilTypeDefKind with ILTypeDefKind.Interface -> { tdef with Extends = None; IsAbstract=true } | _ -> tdef tdef | TFiniteUnionRepr _ -> let alternatives = tycon.UnionCasesArray |> Array.mapi (fun i ucspec -> { altName=ucspec.CompiledName; altFields=GenUnionCaseRef cenv.amap m cenv.g eenvinner.tyenv i ucspec.RecdFieldsArray; altCustomAttrs= mkILCustomAttrs (GenAttrs cenv eenv ucspec.Attribs @ [mkCompilationMappingAttrWithSeqNum cenv.g (int SourceConstructFlags.UnionCase) i]) }) { Name = ilTypeName; Layout = ILTypeDefLayout.Auto; Access = access; GenericParams = ilGenParams; CustomAttrs = mkILCustomAttrs (CustomAttrs @ [mkCompilationMappingAttr cenv.g (int (if hiddenRepr then SourceConstructFlags.SumType ||| SourceConstructFlags.NonPublicRepresentation else SourceConstructFlags.SumType)) ]); InitSemantics=ILTypeInit.BeforeField; IsSealed=true; IsAbstract=false; tdKind= mkIlxTypeDefKind (IlxTypeDefKind.Union { cudReprAccess=reprAccess; cudNullPermitted=IsUnionTypeWithNullAsTrueValue cenv.g tycon; cudHelpersAccess=reprAccess; cudHasHelpers=ComputeUnionHasHelpers cenv.g tcref; cudDebugProxies= generateDebugProxies; cudDebugDisplayAttributes= ilDebugDisplayAttributes; cudAlternatives= alternatives; cudWhere = None}); Fields = ilFields; Events= ilEvents; Properties = ilProperties; Methods= mkILMethods ilMethods; MethodImpls= mkILMethodImpls methodImpls; IsComInterop=false; IsSerializable= IsSerializable; IsSpecialName= false; NestedTypes=emptyILTypeDefs; Encoding= ILDefaultPInvokeEncoding.Auto; Implements= mkILTypes ilIntfTys; Extends= Some cenv.g.ilg.typ_Object; SecurityDecls= emptyILSecurityDecls; HasSecurity=false } | _ -> failwith "??" let tdef = {tdef with SecurityDecls= secDecls; HasSecurity=securityAttrs.Length > 0} mgbuf.AddTypeDef(tref, tdef, false, false); // If a non-generic type is written with "static let" and "static do" (i.e. it has a ".cctor") // then the code for the .cctor is placed into .cctor for the backing static class for the file. // It is not placed in its own .cctor as there is no feasible way for this to be given a coherent // order in the sequential initialization of the file. // // In this case, the .cctor for this type must force the .cctor of the backing static class for the file. if tycon.TyparsNoRange.IsEmpty && tycon.MembersOfFSharpTyconSorted |> List.exists (fun vref -> vref.Deref.IsClassConstructor) then GenForceWholeFileInitializationAsPartOfCCtor cenv mgbuf lazyInitInfo tref m /// Generate the type for an F# exception declaration. and GenExnDef cenv mgbuf eenv m (exnc:Tycon) = let exncref = mkLocalEntityRef exnc match exnc.ExceptionInfo with | TExnAbbrevRepr _ | TExnAsmRepr _ | TExnNone -> () | TExnFresh _ -> let ilThisTy = GenExnType cenv.amap m cenv.g eenv.tyenv exncref let tref = ilThisTy.TypeRef let isHidden = IsHiddenTycon eenv.sigToImplRemapInfo exnc let access = ComputeTypeAccess tref isHidden let reprAccess = ComputeMemberAccess isHidden let fspecs = exnc.TrueInstanceFieldsAsList let ilMethodDefsForProperties,ilFieldDefs,ilPropertyDefs,fieldNamesAndTypes = [ for i,fld in markup fspecs do let ilPropName = fld.Name let ilPropType = GenType cenv.amap m cenv.g eenv.tyenv fld.FormalType let ilMethName = "get_" + fld.Name let ilFieldName = ComputeFieldName exnc fld let ilMethodDef = mkLdfldMethodDef (ilMethName,reprAccess,false,ilThisTy,ilFieldName,ilPropType) let ilFieldDef = IL.mkILInstanceField(ilFieldName,ilPropType, None, ILMemberAccess.Assembly) let ilPropDef = { Name=ilPropName; IsRTSpecialName=false; IsSpecialName=false; SetMethod=None; GetMethod=Some(mkILMethRef(tref,ILCallingConv.Instance,ilMethName,0,[],ilPropType)); CallingConv=ILThisConvention.Instance; Type=ilPropType; Init=None; Args=mkILTypes []; CustomAttrs=mkILCustomAttrs (GenAttrs cenv eenv fld.PropertyAttribs @ [mkCompilationMappingAttrWithSeqNum cenv.g (int SourceConstructFlags.Field) i]); } yield (ilMethodDef,ilFieldDef,ilPropDef,(ilPropName,ilFieldName,ilPropType)) ] |> List.unzip4 let ilCtorDef = mkILSimpleStorageCtorWithParamNames(None, Some cenv.g.ilg.tspec_Exception, ilThisTy, ChooseParamNames fieldNamesAndTypes, reprAccess) // In compiled code, all exception types get a parameterless constructor for use with XML serialization // This does default-initialization of all fields let ilCtorDefNoArgs = if nonNil fieldNamesAndTypes then [ mkILSimpleStorageCtor(None, Some cenv.g.ilg.tspec_Exception, ilThisTy, [], reprAccess) ] else [] let ilCtorDefForSerialziation = mkILCtor(ILMemberAccess.Family, [mkILParamNamed("info",cenv.g.ilg.typ_SerializationInfo);mkILParamNamed("context",cenv.g.ilg.typ_StreamingContext)], mkMethodBody (false,emptyILLocals,8, nonBranchingInstrsToCode [ mkLdarg0; mkLdarg 1us; mkLdarg 2us; mkNormalCall (mkILCtorMethSpecForTy (cenv.g.ilg.typ_Exception,[cenv.g.ilg.typ_SerializationInfo;cenv.g.ilg.typ_StreamingContext])) ] ,None)) let getObjectDataMethodForSerialization = let ilMethodDef = mkILNonGenericVirtualMethod ("GetObjectData",ILMemberAccess.Public, [mkILParamNamed ("info",cenv.g.ilg.typ_SerializationInfo);mkILParamNamed("context",cenv.g.ilg.typ_StreamingContext)], mkILReturn ILType.Void, (let code = nonBranchingInstrsToCode [ mkLdarg0; mkLdarg 1us; mkLdarg 2us; mkNormalCall (mkILNonGenericInstanceMethSpecInTy (cenv.g.ilg.typ_Exception, "GetObjectData", [cenv.g.ilg.typ_SerializationInfo;cenv.g.ilg.typ_StreamingContext], ILType.Void)) ] mkMethodBody(true,emptyILLocals,8,code,None))) // Here we must encode: [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)] // In ILDASM this is: .permissionset demand = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SerializationFormatter' = bool(true)}} { ilMethodDef with SecurityDecls=mkILSecurityDecls [ IL.mkPermissionSet cenv.g.ilg (ILSecurityAction.Demand,[(cenv.g.ilg.tref_SecurityPermissionAttribute,[("SerializationFormatter",cenv.g.ilg.typ_Bool, ILAttribElem.Bool(true))])])]; HasSecurity=true } let ilTypeName = tref.Name let ilMethodDefsForComparison = (*if isSome exnc.TypeContents.tcaug_compare then [ GenCompareOverride cenv mgbuf eenv m cenv.g.exn_ty (ilThisTy,cenv.g.ilg.typ_Exception) ] else*) [] let interfaces = exnc.ImmediateInterfaceTypesOfFSharpTycon |> List.map (GenType cenv.amap m cenv.g eenv.tyenv) let tdef = mkILGenericClass (ilTypeName,access,[],cenv.g.ilg.typ_Exception, interfaces, #if BE_SECURITY_TRANSPARENT (ignore(getObjectDataMethodForSerialization); mkILMethods ([ilCtorDef] @ ilMethodDefsForComparison @ ilCtorDefNoArgs @ [ ilCtorDefForSerialziation ] @ ilMethodDefsForProperties)), #else mkILMethods ([ilCtorDef] @ ilMethodDefsForComparison @ ilCtorDefNoArgs @ [ getObjectDataMethodForSerialization; ilCtorDefForSerialziation ] @ ilMethodDefsForProperties), #endif mkILFields ilFieldDefs, emptyILTypeDefs, mkILProperties ilPropertyDefs, emptyILEvents, mkILCustomAttrs [mkCompilationMappingAttr cenv.g (int SourceConstructFlags.Exception)], ILTypeInit.BeforeField) let tdef = { tdef with IsSerializable = cenv.opts.netFxHasSerializableAttribute } mgbuf.AddTypeDef(tref, tdef, false, false) let CodegenAssembly cenv eenv mgbuf fileImpls = if List.length fileImpls > 0 then let a,b = List.frontAndBack fileImpls let eenv = List.fold (GenTopImpl cenv mgbuf None) eenv a let _eenv = GenTopImpl cenv mgbuf cenv.opts.mainMethodInfo eenv b mgbuf.AddInitializeScriptsInOrderToEntryPoint() //------------------------------------------------------------------------- // When generating a module we just write into mutable // structures representing the contents of the module. //------------------------------------------------------------------------- let GetEmptyIlxGenEnv ccu = let thisCompLoc = CompLocForCcu ccu { tyenv=TypeReprEnv.Empty; cloc = thisCompLoc; valsInScope=ValMap<_>.Empty; someTypeInThisAssembly=ecmaILGlobals.typ_Object; (* dummy value *) isFinalFile = false; letBoundVars=[]; liveLocals=IntMap.empty(); innerVals = []; sigToImplRemapInfo = []; (* "module remap info" *) withinSEH = false } type IlxGenResults = { ilTypeDefs: ILTypeDef list; ilAssemAttrs : ILAttribute list; ilNetModuleAttrs: ILAttribute list; quotationResourceBytes: byte[] list } let GenerateCode (cenv, eenv, TAssembly fileImpls, assemAttribs, moduleAttribs) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.IlxGen) // Generate the implementations into the mgbuf let mgbuf= new AssemblyBuilder(cenv) let eenv = { eenv with cloc = CompLocForFragment cenv.opts.fragName cenv.viewCcu } // Generate the PrivateImplementationDetails type GenTypeDefForCompLoc (cenv, eenv, mgbuf, CompLocForPrivateImplementationDetails eenv.cloc, useHiddenInitCode, [], ILTypeInit.BeforeField, true, (* atEnd= *) true); // Generate the whole assembly CodegenAssembly cenv eenv mgbuf fileImpls; let ilAssemAttrs = GenAttrs cenv eenv assemAttribs let tdefs,reflectedDefinitions = mgbuf.Close() // Generate the quotations let quotationResourceBytes = match reflectedDefinitions with | [] -> [] | _ -> let defnsResource = reflectedDefinitions |> List.choose (fun ((methName, v),e) -> try let ety = tyOfExpr cenv.g e let tps,taue,_ = match e with | Expr.TyLambda (_,tps,b,_,_) -> tps,b,applyForallTy cenv.g ety (List.map mkTyparTy tps) | _ -> [],e,ety let env = QuotationTranslator.QuotationTranslationEnv.Empty.BindTypars tps let freeTypes,argExprs, astExpr = QuotationTranslator.ConvExprPublic (cenv.g, cenv.amap, cenv.viewCcu, QuotationTranslator.IsReflectedDefinition.Yes) env taue let m = e.Range if nonNil freeTypes then error(InternalError("A free type variable was detected in a reflected definition",m)); if nonNil argExprs then error(Error(FSComp.SR.ilReflectedDefinitionsCannotUseSliceOperator(),m)); let mbaseR = QuotationTranslator.ConvMethodBase (cenv.g,cenv.amap,cenv.viewCcu) env (methName, v) Some(mbaseR,astExpr) with | QuotationTranslator.InvalidQuotedTerm e -> warning(e); None) |> QuotationPickler.PickleDefns [ defnsResource ] let ilNetModuleAttrs = GenAttrs cenv eenv moduleAttribs { ilTypeDefs= tdefs; ilAssemAttrs = ilAssemAttrs; ilNetModuleAttrs = ilNetModuleAttrs; quotationResourceBytes = quotationResourceBytes } //------------------------------------------------------------------------- // For printing values in fsi we want to lookup the value of given vrefs. // The storage in the eenv says if the vref is stored in a static field. // If we know how/where the field was generated, then we can lookup via reflection. //------------------------------------------------------------------------- open System open System.Reflection /// The lookup* functions are the conversions available from ilreflect. type ExecutionContext = { LookupFieldRef : (ILFieldRef -> FieldInfo); LookupMethodRef : (ILMethodRef -> MethodInfo) LookupTypeRef : (ILTypeRef -> Type); LookupType : (ILType -> Type) } // A helper to generate a default value for any System.Type. I couldn't find a System.Reflection // method to do this. let defaultOf = let gminfo = lazy (match <@@ Unchecked.defaultof @@> with | Quotations.Patterns.Call(_,minfo,_) -> minfo.GetGenericMethodDefinition() | _ -> failwith "unexpected failure decoding quotation at ilxgen startup") fun ty -> gminfo.Value.MakeGenericMethod([| ty |]).Invoke(null,[| |]) /// Top-level val bindings are stored (for example) in static fields. /// In the FSI case, these fields are be created and initialised, so we can recover the object. /// Ilxgen knows how v was stored, and then ilreflect knows how this storage was generated. /// Ilxgen converts (v:Tast.Val) to AbsIL datatstructures. /// Ilreflect converts from AbsIL datatstructures to emitted Type, FieldInfo, MethodInfo etc. let LookupGeneratedValue (amap:Import.ImportMap) (ctxt: ExecutionContext) g eenv (v:Val) = try // Convert the v.Type into a System.Type according to ilxgen and ilreflect. let objTyp = let ilTy = GenType amap v.Range g TypeReprEnv.Empty v.Type (* TypeReprEnv.Empty ok, not expecting typars *) ctxt.LookupType ilTy // Lookup the compiled v value (as an object). match StorageForVal v.Range v eenv with | StaticField (fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> let obj = if hasLiteralAttr then let staticTyp = ctxt.LookupTypeRef fspec.EnclosingTypeRef // Checked: This FieldInfo (FieldBuilder) supports GetValue(). staticTyp.GetField(fspec.Name).GetValue(null:obj) else let staticTyp = ctxt.LookupTypeRef ilContainerTy.TypeRef // We can't call .Invoke on the ILMethodRef's MethodInfo, // because it is the MethodBuilder and that does not support Invoke. // Rather, we look for the getter MethodInfo from the built type and .Invoke on that. let methInfo = staticTyp.GetMethod(ilGetterMethRef.Name, BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic) methInfo.Invoke((null:obj),(null:obj[])) Some (obj,objTyp) | StaticProperty (ilGetterMethSpec, _) -> let obj = let staticTyp = ctxt.LookupTypeRef ilGetterMethSpec.MethodRef.EnclosingTypeRef // We can't call .Invoke on the ILMethodRef's MethodInfo, // because it is the MethodBuilder and that does not support Invoke. // Rather, we look for the getter MethodInfo from the built type and .Invoke on that. let methInfo = staticTyp.GetMethod(ilGetterMethSpec.Name, BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic) methInfo.Invoke((null:obj),(null:obj[])) Some (obj,objTyp) | Null -> Some (null,objTyp) | Local _ -> None | Method _ -> None | Unrealized -> None | Arg _ -> None | Env _ -> None with e -> #if DEBUG printf "ilxGen.LookupGeneratedValue for v=%s caught exception:\n%A\n\n" v.LogicalName e #endif None // Invoke the set_Foo method for a declaration with a default/null value. Used to release storage in fsi.exe let ClearGeneratedValue (ctxt: ExecutionContext) (_g:TcGlobals) eenv (v:Val) = try match StorageForVal v.Range v eenv with | StaticField (fspec, _, hasLiteralAttr, _, _, _, _ilGetterMethRef, ilSetterMethRef, _) -> if not hasLiteralAttr && v.IsMutable then let staticTyp = ctxt.LookupTypeRef ilSetterMethRef.EnclosingTypeRef let typ = ctxt.LookupType fspec.ActualType let methInfo = staticTyp.GetMethod(ilSetterMethRef.Name, BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic) methInfo.Invoke (null, [| defaultOf typ |]) |> ignore | _ -> () with e -> #if DEBUG printf "ilxGen.ClearGeneratedValue for v=%s caught exception:\n%A\n\n" v.LogicalName e #endif () (* let LookupGeneratedInfo (ctxt: ExecutionContext) (g:TcGlobals) eenv (v:Val) = try match StorageForVal v.Range v eenv with | StaticField (fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> let staticTyp = ctxt.LookupTypeRef ilContainerTy.TypeRef if hasLiteralAttr then Some (staticTyp.GetField(fspec.Name) :> MemberInfo) else Some (staticTyp.GetMethod(ilGetterMethRef.Name,[||]) :> MemberInfo) | Null -> None | Local _ -> None | Method _ -> None | Unrealized -> None | Arg _ -> None | Env _ -> None with e -> #if DEBUG printf "ilxGen.lookupGenertedInfo for v=%s caught exception:\n%A\n\n" v.LogicalName e #endif None *) /// The published API from the ILX code generator type IlxAssemblyGenerator(amap: Import.ImportMap, tcGlobals: Env.TcGlobals, tcVal : ConstraintSolver.TcValF, ccu: Tast.CcuThunk) = // The incremental state held by the ILX code generator let mutable ilxGenEnv = GetEmptyIlxGenEnv ccu let intraAssemblyInfo = { StaticFieldInfo = new Dictionary<_,_>(HashIdentity.Structural) } let casApplied = new Dictionary() /// Register a set of referenced assemblies with the ILX code generator member __.AddExternalCcus ccus = ilxGenEnv <- AddExternalCcusToIlxGenEnv amap tcGlobals ilxGenEnv ccus /// Register a fragment of the current assembly with the ILX code generator. If 'isIncrementalFragment' is true then the input /// is assumed to be a fragment 'typed' into FSI.EXE, otherwise the input is assumed to be the result of a '#load' member __.AddIncrementalLocalAssemblyFragment (isIncrementalFragment, fragName, typedAssembly) = ilxGenEnv <- AddIncrementalLocalAssemblyFragmentToIlxGenEnv (amap, isIncrementalFragment, tcGlobals, ccu, fragName, intraAssemblyInfo, ilxGenEnv, typedAssembly) /// Generate ILX code for an assembly fragment member __.GenerateCode (codeGenOpts, typedAssembly, assemAttribs, moduleAttribs) = let cenv : cenv = { g=tcGlobals TcVal = tcVal viewCcu = ccu ilUnitTy = None; amap = amap casApplied = casApplied intraAssemblyInfo = intraAssemblyInfo opts = codeGenOpts } GenerateCode (cenv, ilxGenEnv, typedAssembly, assemAttribs, moduleAttribs) /// Invert the compilation of the given value and clear the storage of the value member __.ClearGeneratedValue (ctxt, v) = ClearGeneratedValue ctxt tcGlobals ilxGenEnv v /// Invert the compilation of the given value and return its current dynamic value and its compiled System.Type member __.LookupGeneratedValue (ctxt, v) = LookupGeneratedValue amap ctxt tcGlobals ilxGenEnv v /// Create the CAS permission sets for an assembly fragment member __.CreatePermissionSets attribs = CreatePermissionSets tcGlobals amap ilxGenEnv attribs fsharp-3.0.34/src/fsharp/Fsc/0000775000175000017500000000000012260314606014655 5ustar chrischrisfsharp-3.0.34/src/fsharp/Fsc/Fsc.fsproj0000664000175000017500000000475012260314606016623 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug x86 {C94C257C-3C0A-4858-B5D8-D746498D1F08} Exe $(NoWarn);62;44 fsc EXTENSIONTYPING;COMPILER;$(DefineConstants) true $(OtherFlags) --warnon:1182 assemblyinfo.fsc.exe.fs fscmain.fs PreserveNewest {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} FSharp.Compiler {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/Fsc/fsc.exe.config0000664000175000017500000000140712260314606017401 0ustar chrischris fsharp-3.0.34/src/fsharp/Fsc/Makefile.in0000664000175000017500000000106512260314606016724 0ustar chrischrisNAME=fsc ASSEMBLY = $(NAME).exe TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:exe REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:$(outdir)FSharp.Compiler.dll \ -r:$(monogacdirXX)/System.Runtime.Remoting.dll \ -r:$(monogacdirXX)/System.Windows.Forms.dll sources = \ ../../assemblyinfo/assemblyinfo.fsc.exe.fs \ ../fscmain.fs include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-bin-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/csolve.fsi0000775000175000017500000001653612260314606016156 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.ConstraintSolver open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Infos val NewAnonTypar : TyparKind * range * TyparRigidity * TyparStaticReq * TyparDynamicReq -> Typar val NewInferenceType : unit -> TType val NewErrorType : unit -> TType val NewErrorMeasure : unit -> MeasureExpr val NewInferenceTypes : 'a list -> TType list val FreshenAndFixupTypars : range -> TyparRigidity -> Typars -> TType list -> Typars -> Typars * TyparInst * TType list val FreshenTypeInst : range -> Typars -> Typars * TyparInst * TType list val FreshenTypars : range -> Typars -> TType list val FreshenMethInfo : range -> MethInfo -> TType list exception ConstraintSolverTupleDiffLengths of DisplayEnv * TType list * TType list * range * range exception ConstraintSolverInfiniteTypes of DisplayEnv * TType * TType * range * range exception ConstraintSolverTypesNotInEqualityRelation of DisplayEnv * TType * TType * range * range exception ConstraintSolverTypesNotInSubsumptionRelation of DisplayEnv * TType * TType * range * range exception ConstraintSolverMissingConstraint of DisplayEnv * Typar * TyparConstraint * range * range exception ConstraintSolverError of string * range * range exception ConstraintSolverRelatedInformation of string option * range * exn exception ErrorFromApplyingDefault of TcGlobals * DisplayEnv * Typar * TType * exn * range exception ErrorFromAddingTypeEquation of TcGlobals * DisplayEnv * TType * TType * exn * range exception ErrorsFromAddingSubsumptionConstraint of TcGlobals * DisplayEnv * TType * TType * exn * range exception ErrorFromAddingConstraint of DisplayEnv * exn * range exception UnresolvedConversionOperator of DisplayEnv * TType * TType * range exception PossibleOverload of DisplayEnv * string * exn * range exception UnresolvedOverloading of DisplayEnv * exn list (* PossibleOverload list *) * string * range //exception PossibleBestOverload of DisplayEnv * string * range exception NonRigidTypar of DisplayEnv * string option * range * TType * TType * range /// function type that denotes captured tcVal used in constraint solver type TcValF = (ValRef -> ValUseFlag -> TType list -> range -> Expr * TType) [] type ConstraintSolverState = static member New: TcGlobals * Import.ImportMap * InfoReader * TcValF-> ConstraintSolverState type ConstraintSolverEnv val BakedInTraitConstraintNames : string list val MakeConstraintSolverEnv : ConstraintSolverState -> range -> DisplayEnv -> ConstraintSolverEnv type Trace = Trace of (unit -> unit) list ref type OptionalTrace = | NoTrace | WithTrace of Trace val SimplifyMeasuresInTypeScheme : TcGlobals -> bool -> Typars -> TType -> TyparConstraint list -> Typars val SolveTyparEqualsTyp : ConstraintSolverEnv -> int -> range -> OptionalTrace -> TType -> TType -> OperationResult val SolveTypEqualsTypKeepAbbrevs : ConstraintSolverEnv -> int -> range -> OptionalTrace -> TType -> TType -> OperationResult val CanonicalizeRelevantMemberConstraints : ConstraintSolverEnv -> int -> OptionalTrace -> Typars -> OperationResult val ResolveOverloading : ConstraintSolverEnv -> OptionalTrace -> string -> ndeep: int -> bool -> int * int -> AccessorDomain -> Typrelns.CalledMeth list -> bool -> TType option -> Typrelns.CalledMeth option * OperationResult val UnifyUniqueOverloading : ConstraintSolverEnv -> int * int -> string -> AccessorDomain -> Typrelns.CalledMeth list -> TType -> OperationResult val EliminateConstraintsForGeneralizedTypars : ConstraintSolverEnv -> OptionalTrace -> Typars -> unit val CheckDeclaredTypars : DisplayEnv -> ConstraintSolverState -> range -> Typars -> Typars -> unit val AddConstraint : ConstraintSolverEnv -> int -> Range.range -> OptionalTrace -> Typar -> TyparConstraint -> OperationResult val AddCxTypeEqualsType : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> unit val AddCxTypeEqualsTypeUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool val AddCxTypeMustSubsumeType : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit val AddCxTypeMustSubsumeTypeUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool val AddCxMethodConstraint : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TraitConstraintInfo -> unit val AddCxTypeMustSupportNull : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeMustSupportComparison : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeMustSupportEquality : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeMustSupportDefaultCtor : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeIsReferenceType : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeIsValueType : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeIsUnmanaged : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit val AddCxTypeIsEnum : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit val AddCxTypeIsDelegate : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> TType -> unit val CodegenWitnessThatTypSupportsTraitConstraint : TcValF -> TcGlobals -> ImportMap -> range -> TraitConstraintInfo -> Expr list -> OperationResult val ChooseTyparSolutionAndSolve : ConstraintSolverState -> DisplayEnv -> Typar -> unit val IsApplicableMethApprox : TcGlobals -> ImportMap -> range -> MethInfo -> TType -> bool fsharp-3.0.34/src/fsharp/sr.fsi0000775000175000017500000000067412260314606015303 0ustar chrischris namespace Microsoft.FSharp.Compiler module internal SR = val GetString : string -> string val GetObject : string -> System.Object module internal DiagnosticMessage = type ResourceString<'T> = new : string * Printf.StringFormat<'T> -> ResourceString<'T> member Format : 'T val DeclareResourceString : string * Printf.StringFormat<'T> -> ResourceString<'T>fsharp-3.0.34/src/fsharp/FSharp.Build/0000775000175000017500000000000012260314606016363 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Build/FSharp.Build.fsproj0000664000175000017500000000537212260314606022040 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug AnyCPU Library FSharp.Build true {702A7979-BCF9-4C41-853E-3ADFC9897890} FSBuild.txt assemblyinfo.FSharp.Build.dll.fs CompilerLocationUtils.fs PreserveNewest PreserveNewest {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/FSharp.Build/Microsoft.FSharp.Targets0000775000175000017500000003063212260314606023054 0ustar chrischris true true $(MSBuildAllProjects);$(MSBuildThisFileFullPath) .fs F# Managed $(Optimize) Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier) RootNamespace false $(Prefer32Bit) false true <_Temporary Remove="@(_Temporary)" /> <_Temporary Remove="@(_Temporary)" /> <_DebugSymbolsIntermediatePathTemporary Include="$(PdbFile)"/> <_DebugSymbolsIntermediatePath Include="@(_DebugSymbolsIntermediatePathTemporary->'%(RootDir)%(Directory)%(Filename).pdb')"/> <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" /> fsharp-3.0.34/src/fsharp/FSharp.Build/Microsoft.Portable.FSharp.Targets0000664000175000017500000000167512260314606024625 0ustar chrischris fsharp-3.0.34/src/fsharp/FSharp.Build/FSBuild.txt0000775000175000017500000000017512260314606020422 0ustar chrischris# FSharp.Build resource strings toolpathUnknown,"ToolPath is unknown; specify the path to fsc.exe as the ToolPath property."fsharp-3.0.34/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fs0000775000175000017500000000704412260314606025234 0ustar chrischrisnamespace Microsoft.FSharp.Build open System open System.IO open System.Text open Microsoft.Build.Tasks open Microsoft.Build.Utilities type CreateFSharpManifestResourceName public () = inherit CreateCSharpManifestResourceName() override this.CreateManifestName ((fileName:string), (linkFileName:string), (rootNamespace:string), (* may be null *) (dependentUponFileName:string), (* may be null *) (binaryStream:System.IO.Stream) (* may be null *)) : string = // The Visual CSharp and XBuild CSharp toolchains transform resource names like this: // SubDir\abc.resx --> SubDir.abc.resources // SubDir\abc.txt --> SubDir.abc.txt // // For resx resources, both the Visual FSharp and XBuild FSHarp toolchains do the right thing, i.e. // SubDir\abc.resx --> SubDir.abc.resources // // However for non-resx resources, for some reason Visual FSharp does _not_ add the directory name to the resource name. // It is very unclear where the directory name gets dropped in the Visual FSharp implementation // - is it in Microsoft.Common.targets, Microfost.FSharp.targets or how the base type CreateCSharpManifestResourceName // is created and used - who knows, the code is not easy to understand despite it doing something very simple. That's // the nature of MSBuild/XBuild.... // // Anyway, dropping the directory name seems like a mistake. But we attempt to replicate the behaviour here // for consistency with Visual FSharp. This may not be the right place to do this and this many not be consistent // when cultures are used - that case has not been tested. let fileName = if fileName.EndsWith(".resources", StringComparison.OrdinalIgnoreCase) then fileName else Path.GetFileName(fileName) let linkFileName = if linkFileName.EndsWith(".resources", StringComparison.OrdinalIgnoreCase) then linkFileName else Path.GetFileName(linkFileName) let embeddedFileName = match linkFileName with | null -> fileName | _ -> linkFileName // since we do not support resources dependent on a form, we always pass null for a binary stream // rootNamespace is always empty - we do not support it let cSharpResult = base.CreateManifestName(fileName, linkFileName, "", dependentUponFileName, null) //printfn "(fileName,linkFileName,embeddedFileName,rootNamespace) = '%A'" (fileName, linkFileName, embeddedFileName, rootNamespace) //printfn "cSharpResult = '%s'" cSharpResult // Workaround that makes us keep .resources extension on both 3.5 and 3.5SP1 // 3.5 stripped ".resources", 3.5 SP1 does not. We should do 3.5SP1 thing let extensionToWorkaround = ".resources" let fSharpResult = if embeddedFileName.EndsWith(extensionToWorkaround, StringComparison.OrdinalIgnoreCase) && not (cSharpResult.EndsWith(extensionToWorkaround, StringComparison.OrdinalIgnoreCase)) then cSharpResult + extensionToWorkaround else cSharpResult //printfn "fSharpResult = '%s'" fSharpResult fSharpResult override this.IsSourceFile (filename:string) = let extension = Path.GetExtension(filename) (String.Equals(extension, ".fs", StringComparison.OrdinalIgnoreCase) || String.Equals(extension, ".ml", StringComparison.OrdinalIgnoreCase))fsharp-3.0.34/src/fsharp/FSharp.Build/Makefile.in0000664000175000017500000000150512260314606020431 0ustar chrischrisNAME=FSharp.Build ASSEMBLY = $(NAME).dll TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:library REFERENCES += \ -r:$(outdir)FSharp.Core.dll sources= \ $(tmpdir)FSBuild.fs \ ../../assemblyinfo/assemblyinfo.FSharp.Build.dll.fs \ ../../utils/CompilerLocationUtils.fs \ Fsc.fsi \ Fsc.fs \ CreateFSharpManifestResourceName.fsi \ CreateFSharpManifestResourceName.fs RESOURCES = \ $(tmpdir)FSBuild.resources $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resources: FSBuild.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resx resgen $(tmpdir)FSBuild.resx $(tmpdir)FSBuild.resources include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-lib-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fsi0000775000175000017500000000032212260314606025375 0ustar chrischris namespace Microsoft.FSharp.Build [] type CreateFSharpManifestResourceName = inherit Microsoft.Build.Tasks.CreateCSharpManifestResourceName public new : unit -> CreateFSharpManifestResourceName fsharp-3.0.34/src/fsharp/FSharp.Build/Fsc.fsi0000775000175000017500000000566612260314606017621 0ustar chrischris /// This namespace contains FSharp.PowerPack extensions for FSharp.Build.dll. MSBuild tasks for the FsYacc and FsLex tools. namespace Microsoft.FSharp.Build type Fsc = class inherit Microsoft.Build.Utilities.ToolTask new : unit -> Fsc override GenerateCommandLineCommands : unit -> System.String override GenerateFullPathToTool : unit -> System.String override ToolName : System.String override StandardErrorEncoding : System.Text.Encoding override StandardOutputEncoding : System.Text.Encoding member internal InternalGenerateFullPathToTool : unit -> System.String member internal InternalGenerateCommandLineCommands : unit -> System.String member internal InternalExecuteTool : string * string * string -> int member BaseAddress : string with get,set member CodePage : string with get,set member DebugSymbols : bool with get,set member DebugType : string with get,set member DefineConstants : Microsoft.Build.Framework.ITaskItem [] with get,set member DisabledWarnings : string with get,set member DocumentationFile : string with get,set member GenerateInterfaceFile : string with get,set member KeyFile : string with get,set member NoFramework : bool with get,set member Optimize : bool with get,set member Tailcalls : bool with get,set member OtherFlags : string with get,set member OutputAssembly : string with get,set member PdbFile : string with get,set member Platform : string with get,set member Prefer32Bit : bool with get,set member VersionFile : string with get,set member References : Microsoft.Build.Framework.ITaskItem [] with get,set member ReferencePath : string with get,set member Resources : Microsoft.Build.Framework.ITaskItem [] with get,set member Sources : Microsoft.Build.Framework.ITaskItem [] with get,set member TargetType : string with get,set #if FX_ATLEAST_35 #else member ToolExe : string with get,set #endif member ToolPath : string with get,set member TreatWarningsAsErrors : bool with get,set member Utf8Output : bool with get,set member VisualStudioStyleErrors : bool with get,set member ValidateTypeProviders : bool with get,set member LCID : string with get,set member WarningLevel : string with get,set member WarningsAsErrors : string with get,set member Win32ResourceFile : string with get,set member Win32ManifestFile : string with get,set member SubsystemVersion : string with get,set member HighEntropyVA : bool with get,set end fsharp-3.0.34/src/fsharp/FSharp.Build/Fsc.fs0000775000175000017500000005667412260314606017455 0ustar chrischris namespace Microsoft.FSharp.Build open System open System.Text open System.Diagnostics.CodeAnalysis open System.Reflection open Microsoft.Build.Framework open Microsoft.Build.Utilities open Internal.Utilities [] [] [] do() type FscCommandLineBuilder() = // In addition to generating a command-line that will be handed to cmd.exe, we also generate // an array of individual arguments. The former needs to be quoted (and cmd.exe will strip the // quotes while parsing), whereas the latter is not. See bug 4357 for background; this helper // class gets us out of the business of unparsing-then-reparsing arguments. let builder = new CommandLineBuilder() let mutable args = [] // in reverse order let mutable srcs = [] // in reverse order let mutable alreadyCalledWithFilenames = false /// Return a list of the arguments (with no quoting for the cmd.exe shell) member x.CapturedArguments() = assert(not alreadyCalledWithFilenames) List.rev args /// Return a list of the sources (with no quoting for the cmd.exe shell) member x.CapturedFilenames() = assert(alreadyCalledWithFilenames) List.rev srcs /// Return a full command line (with quoting for the cmd.exe shell) override x.ToString() = builder.ToString() member x.AppendFileNamesIfNotNull(filenames:ITaskItem array, sep:string) = builder.AppendFileNamesIfNotNull(filenames, sep) // do not update "args", not used for item in filenames do let tmp = new CommandLineBuilder() tmp.AppendSwitchUnquotedIfNotNull("", item.ItemSpec) // we don't want to quote the filename, this is a way to get that let s = tmp.ToString() if s <> String.Empty then srcs <- tmp.ToString() :: srcs alreadyCalledWithFilenames <- true member x.AppendSwitchIfNotNull(switch:string, values:string array, sep:string) = builder.AppendSwitchIfNotNull(switch, values, sep) let tmp = new CommandLineBuilder() tmp.AppendSwitchUnquotedIfNotNull(switch, values, sep) let s = tmp.ToString() if s <> String.Empty then args <- s :: args member x.AppendSwitchIfNotNull(switch:string, value:string) = builder.AppendSwitchIfNotNull(switch, value) let tmp = new CommandLineBuilder() tmp.AppendSwitchUnquotedIfNotNull(switch, value) let s = tmp.ToString() if s <> String.Empty then args <- s :: args member x.AppendSwitchUnquotedIfNotNull(switch:string, value:string) = assert(switch = "") // we only call this method for "OtherFlags" // Unfortunately we still need to mimic what cmd.exe does, but only for "OtherFlags". let ParseCommandLineArgs(commandLine:string) = // returns list in reverse order let mutable args = [] let mutable i = 0 // index into commandLine let len = commandLine.Length while i < len do // skip whitespace while i < len && System.Char.IsWhiteSpace(commandLine, i) do i <- i + 1 if i < len then // parse an argument let sb = new StringBuilder() let mutable finished = false let mutable insideQuote = false while i < len && not finished do match commandLine.[i] with | '"' -> insideQuote <- not insideQuote; i <- i + 1 | c when not insideQuote && System.Char.IsWhiteSpace(c) -> finished <- true | c -> sb.Append(c) |> ignore; i <- i + 1 args <- sb.ToString() :: args args builder.AppendSwitchUnquotedIfNotNull(switch, value) let tmp = new CommandLineBuilder() tmp.AppendSwitchUnquotedIfNotNull(switch, value) let s = tmp.ToString() if s <> String.Empty then args <- ParseCommandLineArgs(s) @ args member x.AppendSwitch(switch:string) = builder.AppendSwitch(switch) args <- switch :: args //There are a lot of flags on fsc.exe. //For now, not all of them are represented in the "Fsc class" object model. //The goal is to have the most common/important flags available via the Fsc class, and the //rest can be "backdoored" through the .OtherFlags property. type [] Fsc() as this = inherit ToolTask() let mutable baseAddress : string = null let mutable codePage : string = null let mutable debugSymbols = false let mutable debugType : string = null let mutable defineConstants : ITaskItem[] = [||] let mutable disabledWarnings : string = null let mutable documentationFile : string = null let mutable generateInterfaceFile : string = null let mutable keyFile : string = null let mutable noFramework = false let mutable optimize : bool = true let mutable tailcalls : bool = true let mutable otherFlags : string = null let mutable outputAssembly : string = null let mutable pdbFile : string = null let mutable platform : string = null let mutable prefer32bit : bool = false let mutable references : ITaskItem[] = [||] let mutable referencePath : string = null let mutable resources : ITaskItem[] = [||] let mutable sources : ITaskItem[] = [||] let mutable targetType : string = null #if FX_ATLEAST_35 #else let mutable toolExe : string = "fsc.exe" #endif let mutable warningLevel : string = null let mutable treatWarningsAsErrors : bool = false let mutable warningsAsErrors : string = null let mutable toolPath : string = // We expect to find an fsc.exe next to FSharp.Build.dll. Note FSharp.Build.dll // is not in the GAC, at least on Windows. let locationOfThisDll = try Some(System.IO.Path.GetDirectoryName(typeof.Assembly.Location)) with _ -> None match FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(locationOfThisDll) with | Some s -> s | None -> "" let mutable versionFile : string = null let mutable win32res : string = null let mutable win32manifest : string = null let mutable vserrors : bool = false let mutable validateTypeProviders : bool = false let mutable vslcid : string = null let mutable utf8output : bool = false let mutable subsystemVersion : string = null let mutable highEntropyVA : bool = false let mutable capturedArguments : string list = [] // list of individual args, to pass to HostObject Compile() let mutable capturedFilenames : string list = [] // list of individual source filenames, to pass to HostObject Compile() #if CROSS_PLATFORM_COMPILER // The properties TargetedRuntimeVersion and CopyLocalDependenciesWhenParentReferenceInGac // are not available to the cross-platform compiler since they are Windows only (not defined in the Mono // 4.0 XBuild support). So we only set them if available (to avoid a compile-time dependency). let runningOnMono = try System.Type.GetType("Mono.Runtime") <> null with e-> false do if not runningOnMono then typeof.InvokeMember("YieldDuringToolExecution",(BindingFlags.Instance ||| BindingFlags.SetProperty ||| BindingFlags.Public),null,this,[| box true |]) |> ignore #else do this.YieldDuringToolExecution <- true // See bug 6483; this makes parallel build faster, and is fine to set unconditionally #endif // --baseaddress member fsc.BaseAddress with get() = baseAddress and set(s) = baseAddress <- s // --codepage : Specify the codepage to use when opening source files member fsc.CodePage with get() = codePage and set(s) = codePage <- s // -g: Produce debug file. Disables optimizations if a -O flag is not given. member fsc.DebugSymbols with get() = debugSymbols and set(b) = debugSymbols <- b // --debug : Emit debugging information member fsc.DebugType with get() = debugType and set(s) = debugType <- s // --nowarn : Do not report the given specific warning. member fsc.DisabledWarnings with get() = disabledWarnings and set(a) = disabledWarnings <- a // --define : Define the given conditional compilation symbol. member fsc.DefineConstants with get() = defineConstants and set(a) = defineConstants <- a // --doc : Write the xmldoc of the assembly to the given file. member fsc.DocumentationFile with get() = documentationFile and set(s) = documentationFile <- s // --generate-interface-file : // Print the inferred interface of the // assembly to a file. member fsc.GenerateInterfaceFile with get() = generateInterfaceFile and set(s) = generateInterfaceFile <- s // --keyfile : // Sign the assembly the given keypair file, as produced // by the .NET Framework SDK 'sn.exe' tool. This produces // an assembly with a strong name. This is only relevant if producing // an assembly to be shared amongst programs from different // directories, e.g. to be installed in the Global Assembly Cache. member fsc.KeyFile with get() = keyFile and set(s) = keyFile <- s // --noframework member fsc.NoFramework with get() = noFramework and set(b) = noFramework <- b // --optimize member fsc.Optimize with get() = optimize and set(p) = optimize <- p // --tailcalls member fsc.Tailcalls with get() = tailcalls and set(p) = tailcalls <- p // REVIEW: decide whether to keep this, for now is handy way to deal with as-yet-unimplemented features member fsc.OtherFlags with get() = otherFlags and set(s) = otherFlags <- s // -o : Name the output file. member fsc.OutputAssembly with get() = outputAssembly and set(s) = outputAssembly <- s // --pdb : // Name the debug output file. member fsc.PdbFile with get() = pdbFile and set(s) = pdbFile <- s // --platform : Limit which platforms this code can run on: // x86 // x64 // Itanium // anycpu // anycpu32bitpreferred member fsc.Platform with get() = platform and set(s) = platform <- s // indicator whether anycpu32bitpreferred is applicable or not member fsc.Prefer32Bit with get() = prefer32bit and set(s) = prefer32bit <- s // -r : Reference an F# or .NET assembly. member fsc.References with get() = references and set(a) = references <- a // --lib member fsc.ReferencePath with get() = referencePath and set(s) = referencePath <- s // --resource : Embed the specified managed resources (.resource). // Produce .resource files from .resx files using resgen.exe or resxc.exe. member fsc.Resources with get() = resources and set(a) = resources <- a // source files member fsc.Sources with get() = sources and set(a) = sources <- a // --target exe: Produce an executable with a console // --target winexe: Produce an executable which does not have a // stdin/stdout/stderr // --target library: Produce a DLL // --target module: Produce a module that can be added to another assembly member fsc.TargetType with get() = targetType and set(s) = targetType <- s // --version-file : member fsc.VersionFile with get() = versionFile and set(s) = versionFile <- s #if FX_ATLEAST_35 #else // Allow overriding to the executable name "fsc.exe" member fsc.ToolExe with get() = toolExe and set(s) = toolExe<- s #endif // For targeting other folders for "fsc.exe" (or ToolExe if different) member fsc.ToolPath with get() = toolPath and set(s) = toolPath <- s // For specifying a win32 native resource file (.res) member fsc.Win32ResourceFile with get() = win32res and set(s) = win32res <- s // For specifying a win32 manifest file member fsc.Win32ManifestFile with get() = win32manifest and set(m) = win32manifest <- m // For specifying the warning level (0-4) member fsc.WarningLevel with get() = warningLevel and set(s) = warningLevel <- s member fsc.TreatWarningsAsErrors with get() = treatWarningsAsErrors and set(p) = treatWarningsAsErrors <- p member fsc.WarningsAsErrors with get() = warningsAsErrors and set(s) = warningsAsErrors <- s member fsc.VisualStudioStyleErrors with get() = vserrors and set(p) = vserrors <- p member fsc.ValidateTypeProviders with get() = validateTypeProviders and set(p) = validateTypeProviders <- p member fsc.LCID with get() = vslcid and set(p) = vslcid <- p member fsc.Utf8Output with get() = utf8output and set(p) = utf8output <- p member fsc.SubsystemVersion with get() = subsystemVersion and set(p) = subsystemVersion <- p member fsc.HighEntropyVA with get() = highEntropyVA and set(p) = highEntropyVA <- p // ToolTask methods override fsc.ToolName = "fsc.exe" override fsc.StandardErrorEncoding = if utf8output then System.Text.Encoding.UTF8 else base.StandardErrorEncoding override fsc.StandardOutputEncoding = if utf8output then System.Text.Encoding.UTF8 else base.StandardOutputEncoding override fsc.GenerateFullPathToTool() = if toolPath = "" then raise (new System.InvalidOperationException(FSBuild.SR.toolpathUnknown())) System.IO.Path.Combine(toolPath, fsc.ToolExe) member internal fsc.InternalGenerateFullPathToTool() = fsc.GenerateFullPathToTool() // expose for unit testing member internal fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands) = // F# does not allow protected members to be captured by lambdas, this is the standard workaround base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands) /// Intercept the call to ExecuteTool to handle the host compile case. override fsc.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands) = let ho = box fsc.HostObject match ho with | null -> base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands) | _ -> let sources = sources|>Array.map(fun i->i.ItemSpec) let baseCall = fun (dummy : int) -> fsc.BaseExecuteTool(pathToTool, responseFileCommands, commandLineCommands) // We are using a Converter rather than a "unit->int" because it is too hard to // figure out how to pass an F# function object via reflection. let baseCallDelegate = new System.Converter(baseCall) try let ret = (ho.GetType()).InvokeMember("Compile", BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.InvokeMethod ||| BindingFlags.Instance, null, ho, [| box baseCallDelegate; box (capturedArguments |> List.toArray); box (capturedFilenames |> List.toArray) |], System.Globalization.CultureInfo.InvariantCulture) unbox ret with #if CROSS_PLATFORM_COMPILER // The type "Microsoft.Build.Exceptions.BuildAbortedException is not available to // the cross-platform compiler since it is Windows only (not defined in the Mono // 4.0 XBuild support). So we test for the type using a string comparison. | :? System.Reflection.TargetInvocationException as tie when (match tie.InnerException with | null -> false | x when x.GetType().Name = "Microsoft.Build.Exceptions.BuildAbortedException" -> true | _ -> false) -> #else | :? System.Reflection.TargetInvocationException as tie when (match tie.InnerException with | :? Microsoft.Build.Exceptions.BuildAbortedException -> true | _ -> false) -> #endif fsc.Log.LogError(tie.InnerException.Message, [| |]) -1 // ok, this is what happens when VS IDE cancels the build, no need to assert, just log the build-canceled error and return -1 to denote task failed | e -> System.Diagnostics.Debug.Assert(false, "HostObject received by Fsc task did not have a Compile method or the compile method threw an exception. "+(e.ToString())) reraise() override fsc.GenerateCommandLineCommands() = let builder = new FscCommandLineBuilder() // OutputAssembly builder.AppendSwitchIfNotNull("-o:", outputAssembly) // CodePage builder.AppendSwitchIfNotNull("--codepage:", codePage) // Debug if debugSymbols then builder.AppendSwitch("-g") // DebugType builder.AppendSwitchIfNotNull("--debug:", if debugType = null then null else match debugType.ToUpperInvariant() with | "NONE" -> null | "PDBONLY" -> "pdbonly" | "FULL" -> "full" | _ -> null) // NoFramework if noFramework then builder.AppendSwitch("--noframework") // BaseAddress builder.AppendSwitchIfNotNull("--baseaddress:", baseAddress) // DefineConstants if defineConstants <> null then for item in defineConstants do if item <> null && item.ItemSpec <> null then builder.AppendSwitchIfNotNull("--define:", item.ItemSpec) // DocumentationFile builder.AppendSwitchIfNotNull("--doc:", documentationFile) // GenerateInterfaceFile builder.AppendSwitchIfNotNull("--sig:", generateInterfaceFile) // KeyFile builder.AppendSwitchIfNotNull("--keyfile:", keyFile) // Optimize if optimize then builder.AppendSwitch("--optimize+") else builder.AppendSwitch("--optimize-") if not tailcalls then builder.AppendSwitch("--tailcalls-") // PdbFile builder.AppendSwitchIfNotNull("--pdb:", pdbFile) // Platform builder.AppendSwitchIfNotNull("--platform:", let ToUpperInvariant (s:string) = if s = null then null else s.ToUpperInvariant() match ToUpperInvariant(platform), prefer32bit, ToUpperInvariant(targetType) with | "ANYCPU", true, "EXE" | "ANYCPU", true, "WINEXE" -> "anycpu32bitpreferred" | "ANYCPU", _, _ -> "anycpu" | "X86" , _, _ -> "x86" | "X64" , _, _ -> "x64" | "ITANIUM", _, _ -> "Itanium" | _ -> null) // Resources for item in resources do builder.AppendSwitchIfNotNull("--resource:", item.ItemSpec) // VersionFile builder.AppendSwitchIfNotNull("--versionfile:", versionFile) // References for item in references do builder.AppendSwitchIfNotNull("-r:", item.ItemSpec) // ReferencePath let referencePathArray = // create a array of strings match referencePath with | null -> null | _ -> referencePath.Split([|';'; ','|], StringSplitOptions.RemoveEmptyEntries) builder.AppendSwitchIfNotNull("--lib:", referencePathArray, ",") // TargetType builder.AppendSwitchIfNotNull("--target:", if targetType = null then null else match targetType.ToUpperInvariant() with | "LIBRARY" -> "library" | "EXE" -> "exe" | "WINEXE" -> "winexe" | "MODULE" -> "module" | _ -> null) // NoWarn match disabledWarnings with | null -> () | _ -> builder.AppendSwitchIfNotNull("--nowarn:", disabledWarnings.Split([|' '; ';'; ','; '\r'; '\n'|], StringSplitOptions.RemoveEmptyEntries), ",") // WarningLevel builder.AppendSwitchIfNotNull("--warn:", warningLevel) // TreatWarningsAsErrors if treatWarningsAsErrors then builder.AppendSwitch("--warnaserror") // WarningsAsErrors // Change warning 76, HashReferenceNotAllowedInNonScript/HashDirectiveNotAllowedInNonScript/HashIncludeNotAllowedInNonScript, into an error // REVIEW: why is this logic here? In any case these are errors already by default! let warningsAsErrorsArray = match warningsAsErrors with | null -> [|"76"|] | _ -> (warningsAsErrors + " 76 ").Split([|' '; ';'; ','|], StringSplitOptions.RemoveEmptyEntries) builder.AppendSwitchIfNotNull("--warnaserror:", warningsAsErrorsArray, ",") // Win32ResourceFile builder.AppendSwitchIfNotNull("--win32res:", win32res) // Win32ManifestFile builder.AppendSwitchIfNotNull("--win32manifest:", win32manifest) // VisualStudioStyleErrors if vserrors then builder.AppendSwitch("--vserrors") // ValidateTypeProviders if validateTypeProviders then builder.AppendSwitch("--validate-type-providers") builder.AppendSwitchIfNotNull("--LCID:", vslcid) if utf8output then builder.AppendSwitch("--utf8output") // When building using the fsc task, always emit the "fullpaths" flag to make the output easier // for the user to parse builder.AppendSwitch("--fullpaths") // When building using the fsc task, also emit "flaterrors" to ensure that multi-line error messages // aren't trimmed builder.AppendSwitch("--flaterrors") builder.AppendSwitchIfNotNull("--subsystemversion:", subsystemVersion) if highEntropyVA then builder.AppendSwitch("--highentropyva+") else builder.AppendSwitch("--highentropyva-") // OtherFlags - must be second-to-last builder.AppendSwitchUnquotedIfNotNull("", otherFlags) capturedArguments <- builder.CapturedArguments() // Sources - these have to go last builder.AppendFileNamesIfNotNull(sources, " ") capturedFilenames <- builder.CapturedFilenames() let s = builder.ToString() s // expose this to internal components (for nunit testing) member internal fsc.InternalGenerateCommandLineCommands() = fsc.GenerateCommandLineCommands() member internal fsc.InternalExecuteTool(pathToTool, responseFileCommands, commandLineCommands) = fsc.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands) module Attributes = //[] do() fsharp-3.0.34/src/fsharp/range.fsi0000775000175000017500000000663412260314606015755 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module (* internal *) Microsoft.FSharp.Compiler.Range open System.Text open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler (* we keep a global tables of filenames that we can reference by integers *) type FileIndex = int32 val fileIndexOfFile : string -> FileIndex val fileOfFileIndex : FileIndex -> string [] type pos = member Line : int member Column : int member Encoding : int32 static member Decode : int32 -> pos /// The maximum number of bits needed to store an encoded position static member EncodingSize : int32 /// Create a position for the given line and column val mkPos : line:int -> column:int -> pos val posOrder : IComparer [] type range = member StartLine : int member StartColumn : int member EndLine : int member EndColumn : int member Start : pos member End : pos member StartRange: range member EndRange: range member FileIndex : int member FileName : string /// Synthetic marks ranges which are produced by intermediate compilation phases. This /// bit signifies that the range covers something that should not be visible to language /// service operations like dot-completion. member IsSynthetic : bool member MakeSynthetic : unit -> range member ToShortString : unit -> string static member Zero : range /// This view of range marks uses file indexes explicitly val mkFileIndexRange : FileIndex -> pos -> pos -> range /// This view hides the use of file indexes and just uses filenames val mkRange : string -> pos -> pos -> range val trimRangeToLine : range -> range /// not a total order, but enough to sort on ranges val rangeOrder : IComparer val outputPos : System.IO.TextWriter -> pos -> unit val outputRange : System.IO.TextWriter -> range -> unit val boutputPos : StringBuilder -> pos -> unit val boutputRange : StringBuilder -> range -> unit val posLt : pos -> pos -> bool val posGt : pos -> pos -> bool val posEq : pos -> pos -> bool val posGeq : pos -> pos -> bool val unionRanges : range -> range -> range val rangeContainsRange : range -> range -> bool val rangeContainsPos : range -> pos -> bool val rangeBeforePos : range -> pos -> bool val rangeN : string -> int -> range val pos0 : pos val range0 : range val rangeStartup : range val rangeCmdArgs : range (* For diagnostics *) val stringOfPos : pos -> string val stringOfRange : range -> string module Pos = // Visual Studio uses line counts starting at 0, F# uses them starting at 1 val fromVS : line:int -> column:int -> pos val toVS : pos -> (int * int) module Range = val toVS : range -> (int * int) * (int * int) fsharp-3.0.34/src/fsharp/tlr.fs0000775000175000017500000017316512260314606015315 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Tlr open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.Detuple.GlobalUsageAnalysis open Microsoft.FSharp.Compiler.Lib let verboseTLR = false #if TLR_LIFT /// Turns on explicit lifting of TLR constants to toplevel /// e.g. use true if want the TLR constants to be initialised once. /// /// NOTE: liftTLR is incomplete and disabled /// Approach is to filter Top* let binds whilst "under lambdas", /// and wrap them around that expr ASAP (when get to TopLevel position). /// However, for arity assigned public vals (not TLR at moment), /// assumptions that their RHS are lambdas get broken since the /// lambda can be wrapped with bindings... let liftTLR = ref false #endif //------------------------------------------------------------------------- // library helpers //------------------------------------------------------------------------- let internalError str = dprintf "Error: %s\n" str;raise (Failure str) module Zmap = let force k mp (str,soK) = try Zmap.find k mp with e -> dprintf "Zmap.force: %s %s\n" str (soK k); raise e //------------------------------------------------------------------------- // misc //------------------------------------------------------------------------- /// tree, used to store dec sequence type Tree<'T> = | TreeNode of Tree<'T> list | LeafNode of 'T let fringeTR tr = let rec collect tr acc = match tr with | TreeNode subts -> List.foldBack collect subts acc | LeafNode x -> x::acc collect tr [] let emptyTR = TreeNode[] //------------------------------------------------------------------------- // misc //------------------------------------------------------------------------- /// Collapse reclinks on app and combine apps if possible /// recursive ids are inside reclinks and maybe be type instanced with a Expr.App // CLEANUP NOTE: mkApps ensures applications are kept in a collapsed // and combined form, so this function should not be needed let destApp (f,fty,tys,args,m) = match stripExpr f with | Expr.App (f2,fty2,tys2,[] ,_) -> (f2,fty2,tys2 @ tys,args,m) | Expr.App _ -> (f,fty,tys,args,m) (* has args, so not combine ty args *) | f -> (f,fty,tys,args,m) #if DEBUG let showTyparSet tps = showL (commaListL (List.map typarL (Zset.elements tps))) #endif // CLEANUP NOTE: don't like the look of this function - this distinction // should never be needed let isDelayedRepr (f:Val) e = let _tps,vss,_b,_rty = stripTopLambda (e,f.Type) List.length vss>0 // REVIEW: these should just be replaced by direct calls to mkLocal, mkCompGenLocal etc. // REVIEW: However these set an arity whereas the others don't let mkLocalNameTypeArity compgen m name ty topValInfo = NewVal(name,m,None,ty,Immutable,compgen,topValInfo,taccessPublic,ValNotInRecScope,None,NormalVal,[],ValInline.Optional,XmlDoc.Empty,false,false,false,false,false,false,None,ParentNone) //------------------------------------------------------------------------- // definitions: TLR, arity, arity-met, arity-short // // DEFN: An f is TLR with arity wf if // (a) it's repr is "LAM tps. lam x1...xN. body" and have N<=wf (i.e. have enough args) // (b) it has no free tps // (c) for g:freevars(repr), both // (1) g is TLR with arity wg, and // (2) g occurs in arity-met occurance. // (d) if N=0, then further require that body be a TLR-constant. // // Conditions (a-c) are required if f is to have a static method/field represenation. // Condition (d) chooses which constants can be lifted. (no effects, non-trivial). // // DEFN: An arity-met occurance of g is a g application with enough args supplied, // ie. (g tps args) where wg <= |args|. // // DEFN: An arity-short occurance does not have enough args. // // DEFN: A TLR-constant: // - can have constructors (tuples, datatype, records, exn). // - should be non-trivial (says, causes allocation). // - if calls are allowed, they must be effect free (since eval point is moving). //------------------------------------------------------------------------- //------------------------------------------------------------------------- // OVERVIEW // Overview of passes (over term) and steps (not over term): // // pass1 - decide which f will be TLR and determine their arity. // pass2 - what closures are needed? Finds reqdTypars(f) and reqdItems(f) for TLR f. // Depends on the arity choice, so must follow pass1. // step3 - choose env packing, create fHats. // pass4 - rewrite term fixing up definitions and callsites. // Depends on closure and env packing, so must follow pass2 (and step 3). // pass5 - copyExpr call to topexpr to ensure all bound ids are unique. // For complexity reasons, better to re-recurse over expr once. // pass6 - sanity check, confirm that all TLR marked bindings meet DEFN. // //------------------------------------------------------------------------- //------------------------------------------------------------------------- // pass1: GetValsBoundUnderMustInline (see comment further below) //------------------------------------------------------------------------- let GetValsBoundUnderMustInline xinfo = let accRejectFrom (v:Val) repr rejectS = if v.InlineInfo = ValInline.PseudoVal then Zset.union (GetValsBoundInExpr repr) rejectS else rejectS let rejectS = Zset.empty valOrder let rejectS = Zmap.fold accRejectFrom xinfo.Defns rejectS rejectS //------------------------------------------------------------------------- // pass1: IsRefusedTLR //------------------------------------------------------------------------- let IsRefusedTLR g (f:Val) = let mutableVal = f.IsMutable // things marked ValInline.Never are special let dllImportStubOrOtherNeverInline = (f.InlineInfo = ValInline.Never) // Cannot have static fields of byref type let byrefVal = isByrefLikeTy g f.Type // Special values are instance methods etc. on .NET types. For now leave these alone let specialVal = f.MemberInfo.IsSome let alreadyChosen = f.ValReprInfo.IsSome let refuseTest = alreadyChosen || mutableVal || byrefVal || specialVal || dllImportStubOrOtherNeverInline refuseTest let IsMandatoryTopLevel (f:Val) = let specialVal = f.MemberInfo.IsSome let isModulBinding = f.IsMemberOrModuleBinding specialVal || isModulBinding let IsMandatoryNonTopLevel g (f:Val) = let byrefVal = isByrefLikeTy g f.Type byrefVal //------------------------------------------------------------------------- // pass1: decide which f are to be TLR? and if so, arity(f) //------------------------------------------------------------------------- module Pass1_DetermineTLRAndArities = let GetMaxNumArgsAtUses xinfo f = match Zmap.tryFind f xinfo.Uses with | None -> 0 (* no call sites *) | Some sites -> sites |> List.map (fun (_accessors,_tinst,args) -> List.length args) |> List.max let SelectTLRVals g xinfo f e = if IsRefusedTLR g f then None // Exclude values bound in a decision tree else if Zset.contains f xinfo.DecisionTreeBindings then None else // Could the binding be TLR? with what arity? let atTopLevel = Zset.contains f xinfo.TopLevelBindings let tps,vss,_b,_rty = stripTopLambda (e,f.Type) let nFormals = vss.Length let nMaxApplied = GetMaxNumArgsAtUses xinfo f let arity = Operators.min nFormals nMaxApplied if atTopLevel || arity<>0 || nonNil tps then Some (f,arity) else None /// Check if f involves any value recursion (so can skip those). /// ValRec considered: recursive && some f in mutual binding is not bound to a lambda let IsValueRecursionFree xinfo f = let hasDelayedRepr f = isDelayedRepr f (Zmap.force f xinfo.Defns ("IsValueRecursionFree - hasDelayedRepr",nameOfVal)) let isRecursive,mudefs = Zmap.force f xinfo.RecursiveBindings ("IsValueRecursionFree",nameOfVal) not isRecursive || FlatList.forall hasDelayedRepr mudefs let DumpArity arityM = let dump f n = dprintf "tlr: arity %50s = %d\n" (showL (valL f)) n Zmap.iter dump arityM let DetermineTLRAndArities g expr = let xinfo = GetUsageInfoOfImplFile g expr let fArities = Zmap.chooseL (SelectTLRVals g xinfo) xinfo.Defns let fArities = List.filter (fst >> IsValueRecursionFree xinfo) fArities // Do not TLR v if it is bound under a mustinline defn // There is simply no point - the original value will be duplicated and TLR'd anyway let rejectS = GetValsBoundUnderMustInline xinfo let fArities = List.filter (fun (v,_) -> not (Zset.contains v rejectS)) fArities (*-*) let tlrS = Zset.ofList valOrder (List.map fst fArities) let topValS = xinfo.TopLevelBindings (* genuinely top level *) let topValS = Zset.filter (IsMandatoryNonTopLevel g >> not) topValS (* restrict *) (* REPORT MISSED CASES *) #if DEBUG if verboseTLR then let missed = Zset.diff xinfo.TopLevelBindings tlrS missed |> Zset.iter (fun v -> dprintf "TopLevel but not TLR = %s\n" v.LogicalName) #endif (* REPORT OVER *) let arityM = Zmap.ofList valOrder fArities #if DEBUG if verboseTLR then DumpArity arityM; #endif tlrS,topValS, arityM (* NOTES: For constants, Want to fold in a declaration order, so can make decisions about TLR given TLR-knowledge about prior constants. Assuming ilxgen will fix up initialisations. So, Results to be extended to include some scoping representation. Maybe a telescope tree which can be walked over. *) //------------------------------------------------------------------------- // pass2: determine reqdTypars(f) and envreq(f) - notes //------------------------------------------------------------------------- /// What are the closing types/values for {f1,f2...} mutally defined? /// // Note: arity-met g-applications (g TLR) will translated as: // [[g @ tps ` args]] -> gHAT @ reqdTypars(g) tps ` env(g) args // so they require availability of closing types/values for g. // // If g is free wrt f1,f2... then g's closure must be included. // // Note: mutual definitions have a common closure. // // For f1,f2,... = fBody1,fbody2... mutual bindings: // // DEFN: The reqdVals0 are the free-values of fBody1,fBody2... // // What are the closure equations? // // reqdTypars(f1,f2..) includes free-tps(f) // reqdTypars(f1,f2..) includes reqdTypars(g) if fBody has arity-met g-occurance (g TLR). // // reqdItems(f1,f2...) includes ReqdSubEnv(g) if fBody has arity-met g-occurance (g TLR) // reqdItems(f1,f2...) includes ReqdVal(g) if fBody has arity-short g-occurance (g TLR) // reqdItems(f1,f2...) includes ReqdVal(g) if fBody has g-occurance (g not TLR) // // and only collect requirements if g is a generator (see next notes). // // Note: "env-availability" // In the translated code, env(h) will be defined at the h definition point. // So, where-ever h could be called (recursive or not), // the env(h) will be available (in scope). // // Note (subtle): "sub-env-requirement-only-for-reqdVals0" // If have an arity-met call to h inside fBody, but h is not a freevar for f, // then h does not contribute env(h) to env(f), the closure for f. // It is true that env(h) will be required at the h call-site, // but the env(h) will be available there (by "env-availability"), // since h must be bound inside the fBody since h was not a freevar for f. // . // [note, f and h may mutally recurse and formals of f may be in env(h), // so env(f) may be properly inside env(h), // so better not have env(h) in env(f)!!!]. /// The subset of ids from a mutal binding that are chosen to be TLR. /// They share a common env. /// [Each fclass has an env, the fclass are the handles to envs.] type BindingGroupSharingSameReqdItems(bindings: Bindings) = let vals = valsOfBinds bindings let vset = Zset.addFlatList vals (Zset.empty valOrder) member fclass.Vals = vals member fclass.Contains (v: Val) = vset.Contains v member fclass.IsEmpty = FlatList.isEmpty vals member fclass.Pairs = vals |> FlatList.map (fun f -> (f,fclass)) override fclass.ToString() = "+" + String.concat "+" (FlatList.map nameOfVal vals) let fclassOrder = Order.orderOn (fun (b: BindingGroupSharingSameReqdItems) -> b.Vals) (FlatList.order valOrder) /// It is required to make the TLR closed wrt it's freevars (the env reqdVals0). /// For gv a generator, /// An arity-met gv occurance contributes the env required for that gv call. /// Other occurances contribute the value gv. type ReqdItem = | ReqdSubEnv of Val | ReqdVal of Val override i.ToString() = match i with | ReqdSubEnv f -> "&" + f.LogicalName | ReqdVal f -> f.LogicalName let reqdItemOrder = let rep = function | ReqdSubEnv v -> true ,v | ReqdVal v -> false,v Order.orderOn rep (Pair.order (Bool.order,valOrder)) /// An env says what is needed to close the corresponding defn(s). /// The reqdTypars are the free reqdTypars of the defns, and those required by any direct TLR arity-met calls. /// The reqdItems are the ids/subEnvs required from calls to freeVars. type ReqdItemsForDefn = { reqdTypars : Zset; reqdItems : Zset; m : Range.range; } member env.ReqdSubEnvs = [ for x in env.reqdItems do match x with | ReqdSubEnv f -> yield f | ReqdVal _ -> () ] member env.ReqdVals = [ for x in env.reqdItems do match x with | ReqdSubEnv _ -> () | ReqdVal v -> yield v ] member env.Extend (typars,items) = {env with reqdTypars = Zset.addList typars env.reqdTypars; reqdItems = Zset.addList items env.reqdItems} static member Initial typars m = {reqdTypars = Zset.addList typars (Zset.empty typarOrder); reqdItems = Zset.empty reqdItemOrder; m = m } override env.ToString() = (showL (commaListL (List.map typarL (Zset.elements env.reqdTypars)))) + "--" + (String.concat "," (List.map string (Zset.elements env.reqdItems))) (*--debug-stuff--*) //------------------------------------------------------------------------- // pass2: collector - state //------------------------------------------------------------------------- type Generators = Zset /// check a named function value applied to sufficient arguments let IsArityMet (vref:ValRef) wf (tys: TypeInst) args = (tys.Length = vref.Typars.Length) && (wf <= List.length args) module Pass2_DetermineReqdItems = // IMPLEMENTATION PLAN: // // fold over expr. // // - at an instance g, // - (a) g arity-met, LogRequiredFrom g - ReqdSubEnv(g) -- direct call will require env(g) and reqdTypars(g) // - (b) g arity-short, LogRequiredFrom g - ReqdVal(g) -- remains g call // - (c) g non-TLR, LogRequiredFrom g - ReqdVal(g) -- remains g // where // LogRequiredFrom g ... = logs info into (reqdVals0,env) if g in reqdVals0. // // - at some mu-bindings, f1,f2... = fBody1,fBody2,... // "note reqdVals0, push (reqdVals0,env), fold-over bodies, pop, fold rest" // // - let fclass = ff1,... be the fi which are being made TLR. // - required to find an env for these. // - start a new envCollector: // freetps = freetypars of (fBody1,fBody2,...) // freevs = freevars of .. // initialise: // reqdTypars = freetps // reqdItems = [] -- info collected from generator occurances in bindings // reqdVals0 = freevs // - fold bodies, collecting info for reqdVals0. // - pop and save env. // - note: - reqdTypars(fclass) are only the freetps // - they need to include reqdTypars(g) for each direct call to g (g a generator for fclass) // - the reqdTypars(g) may not yet be known, // e.g. if we are inside the definition of g and had recursively called it. // - so need to FIX up the reqdTypars(-) function when collected info for all fclass. // - fold rest (after binding) // // fix up reqdTypars(-) according to direct call dependencies. // /// This state collects: /// reqdItemsMap - fclass -> env /// fclassM - f -> fclass /// declist - fclass list /// recShortCallS - the f which are "recursively-called" in arity short instance. /// /// When walking expr, at each mutual binding site, /// push a (generator,env) collector frame on stack. /// If occurances in body are relevant (for a generator) then it's contribution is logged. /// /// recShortCalls to f will require a binding for f in terms of fHat within the fHatBody. type state = { stack : (BindingGroupSharingSameReqdItems * Generators * ReqdItemsForDefn) list; reqdItemsMap : Zmap; fclassM : Zmap; revDeclist : BindingGroupSharingSameReqdItems list; recShortCallS : Zset; } let state0 = { stack = []; reqdItemsMap = Zmap.empty fclassOrder; fclassM = Zmap.empty valOrder; revDeclist = []; recShortCallS = Zset.empty valOrder; } /// PUSH = start collecting for fclass let PushFrame (fclass: BindingGroupSharingSameReqdItems) (reqdTypars0,reqdVals0,m) state = if fclass.IsEmpty then state else {state with revDeclist = fclass :: state.revDeclist; stack = (let env = ReqdItemsForDefn.Initial reqdTypars0 m in (fclass,reqdVals0,env)::state.stack); } /// POP & SAVE = end collecting for fclass and store let SaveFrame (fclass: BindingGroupSharingSameReqdItems) state = if verboseTLR then dprintf "SaveFrame: %A\n" fclass; if fclass.IsEmpty then state else match state.stack with | [] -> internalError "trl: popFrame has empty stack" | (fclass,_reqdVals0,env)::stack -> (* ASSERT: same fclass *) {state with stack = stack; reqdItemsMap = Zmap.add fclass env state.reqdItemsMap; fclassM = FlatList.fold (fun mp (k,v) -> Zmap.add k v mp) state.fclassM fclass.Pairs } /// Log requirements for gv in the relevant stack frames let LogRequiredFrom gv items state = let logIntoFrame (fclass, reqdVals0:Zset, env: ReqdItemsForDefn) = let env = if reqdVals0.Contains gv then env.Extend ([],items) else env fclass,reqdVals0,env {state with stack = List.map logIntoFrame state.stack} let LogShortCall gv state = if state.stack |> List.exists (fun (fclass,_reqdVals0,_env) -> fclass.Contains gv) then if verboseTLR then dprintf "shortCall: rec: %s\n" gv.LogicalName; // Have short call to gv within it's (mutual) definition(s) {state with recShortCallS = Zset.add gv state.recShortCallS} else if verboseTLR then dprintf "shortCall: not-rec: %s\n" gv.LogicalName; state let FreeInBindings bs = FlatList.fold (foldOn (freeInBindingRhs CollectTyparsAndLocals) unionFreeVars) emptyFreeVars bs /// Intercepts selected exprs. /// "letrec f1,f2,... = fBody1,fBody2,... in rest" - /// "val v" - free occurance /// "app (f,tps,args)" - occurance /// /// On intercepted nodes, must exprF fold to collect from subexpressions. let ExprEnvIntercept (tlrS,arityM) exprF z expr = let accInstance z (fvref:ValRef,tps,args) (* f known local *) = let f = fvref.Deref match Zmap.tryFind f arityM with | Some wf -> // f is TLR with arity wf if IsArityMet fvref wf tps args then // arity-met call to a TLR g LogRequiredFrom f [ReqdSubEnv f] z else // arity-short instance let z = LogRequiredFrom f [ReqdVal f] z // LogShortCall - logs recursive short calls let z = LogShortCall f z z | None -> // f is non-TLR LogRequiredFrom f [ReqdVal f] z let accBinds m z (binds: Bindings) = let tlrBs,nonTlrBs = binds |> FlatList.partition (fun b -> Zset.contains b.Var tlrS) // For bindings marked TLR, collect implied env let fclass = BindingGroupSharingSameReqdItems tlrBs // what determines env? let frees = FreeInBindings tlrBs let reqdTypars0 = frees.FreeTyvars.FreeTypars |> Zset.elements (* put in env *) // occurances contribute to env let reqdVals0 = frees.FreeLocals |> Zset.elements // tlrBs are not reqdVals0 for themselves let reqdVals0 = reqdVals0 |> List.filter (fun gv -> not (fclass.Contains gv)) let reqdVals0 = reqdVals0 |> Zset.ofList valOrder // collect into env over bodies let z = PushFrame fclass (reqdTypars0,reqdVals0,m) z let z = (z,tlrBs) ||> FlatList.fold (foldOn (fun b -> b.Expr) exprF) let z = SaveFrame fclass z (* for bindings not marked TRL, collect *) let z = (z,nonTlrBs) ||> FlatList.fold (foldOn (fun b -> b.Expr) exprF) z match expr with | Expr.Val (v,_,_) -> let z = accInstance z (v,[],[]) Some z | Expr.Op (TOp.LValueOp (_,v),_tys,args,_) -> let z = accInstance z (v,[],[]) let z = List.fold exprF z args Some z | Expr.App (f,fty,tys,args,m) -> let f,_fty,tys,args,_m = destApp (f,fty,tys,args,m) match f with | Expr.Val (f,_,_) -> // // YES: APP vspec tps args - log let z = accInstance z (f,tys,args) let z = List.fold exprF z args Some z | _ -> (* NO: app, but function is not val - no log *) None | Expr.LetRec (binds,body,m,_) -> let z = accBinds m z binds let z = exprF z body Some z | Expr.Let (bind,body,m,_) -> let z = accBinds m z (FlatList.one bind) let z = exprF z body Some z | _ -> None (* NO: no intercept *) /// Initially, reqdTypars(fclass) = freetps(bodies). /// For each direct call to a gv, a generator for fclass, /// Required to include the reqdTypars(gv) in reqdTypars(fclass). let CloseReqdTypars fclassM reqdItemsMap = if verboseTLR then dprintf "CloseReqdTypars------\n"; let closeStep reqdItemsMap changed fc (env: ReqdItemsForDefn) = let directCallReqdEnvs = env.ReqdSubEnvs let directCallReqdTypars = directCallReqdEnvs |> List.map (fun f -> let fc = Zmap.force f fclassM ("reqdTyparsFor",nameOfVal) let env = Zmap.force fc reqdItemsMap ("reqdTyparsFor",string) env.reqdTypars) let reqdTypars0 = env.reqdTypars let reqdTypars = List.fold Zset.union reqdTypars0 directCallReqdTypars let changed = changed || (not (Zset.equal reqdTypars0 reqdTypars)) let env = {env with reqdTypars = reqdTypars} #if DEBUG if verboseTLR then dprintf "closeStep: fc=%30A nSubs=%d reqdTypars0=%s reqdTypars=%s\n" fc directCallReqdEnvs.Length (showTyparSet reqdTypars0) (showTyparSet reqdTypars); directCallReqdEnvs |> List.iter (fun f -> dprintf "closeStep: dcall f=%s\n" f.LogicalName) directCallReqdEnvs |> List.iter (fun f -> dprintf "closeStep: dcall fc=%A\n" (Zmap.find f fclassM)) directCallReqdTypars |> List.iter (fun _reqdTypars -> dprintf "closeStep: dcall reqdTypars=%s\n" (showTyparSet reqdTypars0)) #else ignore fc #endif changed,env let rec fixpoint reqdItemsMap = let changed = false let changed,reqdItemsMap = Zmap.fmap (closeStep reqdItemsMap) changed reqdItemsMap if changed then fixpoint reqdItemsMap else reqdItemsMap fixpoint reqdItemsMap #if DEBUG let DumpReqdValMap reqdItemsMap = for KeyValue(fc,env) in reqdItemsMap do dprintf "CLASS=%A\n env=%A\n" fc env #endif let DetermineReqdItems (tlrS,arityM) expr = if verboseTLR then dprintf "DetermineReqdItems------\n"; let folder = {ExprFolder0 with exprIntercept = ExprEnvIntercept (tlrS,arityM)} let z = state0 // Walk the entire assembly let z = FoldImplFile folder z expr // project results from the state let reqdItemsMap = z.reqdItemsMap let fclassM = z.fclassM let declist = List.rev z.revDeclist let recShortCallS = z.recShortCallS // diagnostic dump #if DEBUG if verboseTLR then DumpReqdValMap reqdItemsMap; #endif // close the reqdTypars under the subEnv reln let reqdItemsMap = CloseReqdTypars fclassM reqdItemsMap // filter out trivial fclass - with no TLR defns let reqdItemsMap = Zmap.remove (BindingGroupSharingSameReqdItems FlatList.empty) reqdItemsMap // restrict declist to those with reqdItemsMap bindings (the non-trivial ones) let declist = List.filter (Zmap.memberOf reqdItemsMap) declist #if DEBUG // diagnostic dump if verboseTLR then DumpReqdValMap reqdItemsMap; declist |> List.iter (fun fc -> dprintf "Declist: %A\n" fc) recShortCallS |> Zset.iter (fun f -> dprintf "RecShortCall: %s\n" f.LogicalName) #endif reqdItemsMap,fclassM,declist,recShortCallS //------------------------------------------------------------------------- // step3: PackedReqdItems //------------------------------------------------------------------------- /// Each env is represented by some carrier values, the aenvs. /// An env packing defines these, and the pack/unpack bindings. /// The bindings are in terms of the fvs directly. /// /// When defining a new TLR f definition, /// the fvs will become bound by the unpack bindings, /// the aenvs will become bound by the new lam, and /// the reqdTypars will become bound by the new LAM. /// For uniqueness of bound ids, /// all these ids (Typar/Val) will need to be freshened up. /// It is OK to break the uniqueness-of-bound-ids rule during the rw, /// provided it is fixed up via a copyExpr call on the final expr. type PackedReqdItems = { /// The actual typars ep_etps : Typars; /// The actual env carrier values ep_aenvs : Val list; /// Sequentially define the aenvs in terms of the fvs ep_pack : Bindings; /// Sequentially define the fvs in terms of the aenvs ep_unpack : Bindings; } //------------------------------------------------------------------------- // step3: FlatEnvPacks //------------------------------------------------------------------------- exception AbortTLR of Range.range /// A naive packing of environments. /// Chooses to pass all env values as explicit args (no tupling). /// Note, tupling would cause an allocation, /// so, unless arg lists get very long, this flat packing will be preferable. /// Given (fclass,env). /// Have env = ReqdVal vj, ReqdSubEnv subEnvk -- ranging over j,k /// Define vals(env) = {vj}|j union vals(subEnvk)|k -- trans closure of vals of env. /// Define for each vi in vals(env). /// This is the cmap for the env. /// reqdTypars = env.reqdTypars /// carriers = aenvi|i /// pack = TBIND(aenvi = vi) for each (aenvi,vi) in cmap /// unpack = TBIND(vj = aenvFor(vj)) for each vj in reqvals(env). /// and TBIND(asubEnvi = aenvFor(v)) for each (asubEnvi,v) in cmap(subEnvk) ranging over required subEnvk. /// where /// aenvFor(v) = aenvi where (v,aenvi) in cmap. let FlatEnvPacks g fclassM topValS declist (reqdItemsMap: Zmap) = let fclassOf f = Zmap.force f fclassM ("fclassM",nameOfVal) let packEnv carrierMaps (fc:BindingGroupSharingSameReqdItems) = if verboseTLR then dprintf "\ntlr: packEnv fc=%A\n" fc; let env = Zmap.force fc reqdItemsMap ("packEnv",string) // carrierMaps = (fclass,(v,aenv)map)map let carrierMapFor f = Zmap.force (fclassOf f) carrierMaps ("carrierMapFor",string) let valsSubEnvFor f = Zmap.keys (carrierMapFor f) // determine vals(env) - transclosure let vals = env.ReqdVals @ List.collect valsSubEnvFor env.ReqdSubEnvs // list, with repeats let vals = List.noRepeats valOrder vals // noRepeats let vals = vals |> FlatList.ofList // Remove genuinely toplevel, no need to close over these let vals = vals |> FlatList.filter (IsMandatoryTopLevel >> not) // Remove byrefs, no need to close over these, and would be invalid to do so since their values can change. // // Note that it is normally not OK to skip closing over values, since values given (method) TLR must have imlpementations // which are truly closed. However, byref values never escape into any lambdas, so are never used in anything // for which we will choose a method TLR. // // For example, consider this (FSharp 1.0 bug 5578): // // let mutable a = 1 // // let resutl1 = // let x = &a // This is NOT given TLR, because it is byref // x <- 111; // let temp = x // This is given a static field TLR, not a method TLR // // let f () = x // This is not allowed, can't capture x // x <- 999; // temp // // Compare with this: // let mutable a = 1 // // let result2 = // let x = a // this is given static field TLR // a <- 111; // let temp = a // let f () = x // This is not allowed, and is given a method TLR // a <- 999; // temp let vals = vals |> FlatList.filter (fun v -> not (isByrefLikeTy g v.Type)) // Remove values which have been labelled TLR, no need to close over these let vals = vals |> FlatList.filter (Zset.memberOf topValS >> not) // Carrier sets cannot include constrained polymorphic values. We can't just take such a value out, so for the moment // we'll just abandon TLR altogether and give a warning about this condition. match vals |> FlatList.tryFind (IsGenericValWithGenericContraints g) with | None -> () | Some v -> raise (AbortTLR v.Range); // build cmap for env let cmapPairs = vals |> FlatList.map (fun v -> (v,(mkCompGenLocal env.m v.LogicalName v.Type |> fst))) let cmap = Zmap.ofFlatList valOrder cmapPairs let aenvFor v = Zmap.force v cmap ("aenvFor",nameOfVal) let aenvExprFor v = exprForVal env.m (aenvFor v) // build PackedReqdItems let reqdTypars = env.reqdTypars let aenvs = Zmap.values cmap let pack = cmapPairs |> FlatList.map (fun (v,aenv) -> mkInvisibleBind aenv (exprForVal env.m v)) let unpack = let unpackCarrier (v,aenv) = mkInvisibleBind (setValHasNoArity v) (exprForVal env.m aenv) let unpackSubenv f = let subCMap = carrierMapFor f let vaenvs = Zmap.toList subCMap vaenvs |> List.map (fun (subv,subaenv) -> mkBind NoSequencePointAtInvisibleBinding subaenv (aenvExprFor subv)) List.map unpackCarrier (Zmap.toList cmap) @ List.collect unpackSubenv env.ReqdSubEnvs // extend carrierMaps let carrierMaps = Zmap.add fc cmap carrierMaps // dump if verboseTLR then dprintf "tlr: packEnv envVals =%s\n" (showL (listL valL env.ReqdVals)); dprintf "tlr: packEnv envSubs =%s\n" (showL (listL valL env.ReqdSubEnvs)); dprintf "tlr: packEnv vals =%s\n" (showL (listL valL (FlatList.toList vals))); dprintf "tlr: packEnv aenvs =%s\n" (showL (listL valL aenvs)); dprintf "tlr: packEnv pack =%s\n" (showL (listL bindingL (FlatList.toList pack))); dprintf "tlr: packEnv unpack =%s\n" (showL (listL bindingL unpack)) // result carrierMaps, (fc, { ep_etps = Zset.elements reqdTypars; ep_aenvs = aenvs; ep_pack = pack; ep_unpack = FlatList.ofList unpack}) let carriedMaps = Zmap.empty fclassOrder let _carriedMaps,envPacks = List.fmap packEnv carriedMaps declist (* List.fmap in dec order *) let envPacks = Zmap.ofList fclassOrder envPacks envPacks //------------------------------------------------------------------------- // step3: chooseEnvPacks //------------------------------------------------------------------------- #if DEBUG let DumpEnvPackM envPackM = for KeyValue(fc,packedReqdItems) in envPackM do dprintf "packedReqdItems: fc = %A\n" fc; dprintf " reqdTypars = %s\n" (showL (commaListL (List.map typarL packedReqdItems.ep_etps))); dprintf " aenvs = %s\n" (showL (commaListL (List.map valL packedReqdItems.ep_aenvs))); dprintf " pack = %s\n" (showL (semiListL (FlatList.toList (FlatList.map bindingL packedReqdItems.ep_pack)))); dprintf " unpack = %s\n" (showL (semiListL (FlatList.toList (FlatList.map bindingL packedReqdItems.ep_unpack)))); dprintf "\n" #endif /// For each fclass, have an env. /// Required to choose an PackedReqdItems, /// e.g. deciding whether to tuple up the environment or not. /// e.g. deciding whether to use known values for required sub environments. /// /// Scope for optimisating env packing here. /// For now, pass all environments via arguments since aiming to eliminate allocations. /// Later, package as tuples if arg lists get too long. let ChooseReqdItemPackings g fclassM topValS declist reqdItemsMap = if verboseTLR then dprintf "ChooseReqdItemPackings------\n"; let envPackM = FlatEnvPacks g fclassM topValS declist reqdItemsMap #if DEBUG if verboseTLR then DumpEnvPackM envPackM; #endif envPackM //------------------------------------------------------------------------- // step3: CreateNewValuesForTLR //------------------------------------------------------------------------- /// arity info where nothing is untupled // REVIEW: could do better here by preserving names let MakeSimpleArityInfo tps n = ValReprInfo (ValReprInfo.InferTyparInfo tps,List.replicate n ValReprInfo.unnamedTopArg,ValReprInfo.unnamedRetVal) let CreateNewValuesForTLR g tlrS arityM fclassM envPackM = if verboseTLR then dprintf "CreateNewValuesForTLR------\n"; let createFHat (f:Val) = let wf = Zmap.force f arityM ("createFHat - wf",(fun v -> showL (valL v))) let fc = Zmap.force f fclassM ("createFHat - fc",nameOfVal) let envp = Zmap.force fc envPackM ("CreateNewValuesForTLR - envp",string) let name = f.LogicalName (* ^ "_TLR_" ^ string wf *) let m = f.Range let tps,tau = f.TypeScheme let argtys,res = stripFunTy g tau let newTps = envp.ep_etps @ tps let fHatTy = let newArgtys = List.map typeOfVal envp.ep_aenvs @ argtys mkLambdaTy newTps newArgtys res let fHatArity = MakeSimpleArityInfo newTps (envp.ep_aenvs.Length + wf) let fHatName = globalNng.FreshCompilerGeneratedName(name,m) let fHat = mkLocalNameTypeArity f.IsCompilerGenerated m fHatName fHatTy (Some fHatArity) fHat let fs = Zset.elements tlrS let ffHats = List.map (fun f -> f,createFHat f) fs let fHatM = Zmap.ofList valOrder ffHats fHatM //------------------------------------------------------------------------- // pass4: rewrite - penv //------------------------------------------------------------------------- module Pass4_RewriteAssembly = [] type RewriteContext = { ccu : CcuThunk; g : Env.TcGlobals; tlrS : Zset ; topValS : Zset ; arityM : Zmap ; fclassM : Zmap ; recShortCallS : Zset ; envPackM : Zmap; /// The mapping from 'f' values to 'fHat' values fHatM : Zmap ; } //------------------------------------------------------------------------- // pass4: rwstate (z state) //------------------------------------------------------------------------- type IsRecursive = IsRec | NotRec type LiftedDeclaration = IsRecursive * Bindings (* where bool=true if letrec *) /// This state is related to lifting to top-level (which is actually disabled right now) /// This is to ensure the TLR constants get initialised once. /// /// Top-level status ends when stepping inside a lambda, where a lambda is: /// Expr.TyLambda, Expr.Lambda, Expr.Obj (and tmethods). /// [... also, try_catch handlers, and switch targets...] /// /// Top* repr bindings already at top-level do not need moving... /// [and should not be, since they may lift over unmoved defns on which they depend]. /// Any TLR repr bindings under lambdas can be filtered out (and collected), /// giving pre-declarations to insert before the outermost lambda expr. type RewriteState = { rws_mustinline: bool; /// counts level of enclosing "lambdas" rws_innerLevel : int; /// collected preDecs (fringe is in-order) rws_preDecs : Tree } let rewriteState0 = {rws_mustinline=false;rws_innerLevel=0;rws_preDecs=emptyTR} // move in/out of lambdas (or lambda containing construct) let EnterInner z = {z with rws_innerLevel = z.rws_innerLevel + 1} let ExitInner z = {z with rws_innerLevel = z.rws_innerLevel - 1} let EnterMustInline b z f = let orig = z.rws_mustinline let z',x = f (if b then {z with rws_mustinline = true } else z) {z' with rws_mustinline = orig },x /// extract PreDecs (iff at top-level) let ExtractPreDecs z = // If level=0, so at top-level, then pop decs, // else keep until get back to a top-level point. if z.rws_innerLevel=0 then // at top-level, extract preDecs let preDecs = fringeTR z.rws_preDecs {z with rws_preDecs=emptyTR}, preDecs else // not yet top-level, keep decs z,[] /// pop and set preDecs as "LiftedDeclaration tree" let PopPreDecs z = {z with rws_preDecs=emptyTR},z.rws_preDecs let SetPreDecs z pdt = {z with rws_preDecs=pdt} /// collect Top* repr bindings - if needed... #if TLR_LIFT let LiftTopBinds isRec _penv z binds = let isTopBind (bind: Binding) = isSome bind.Var.ValReprInfo let topBinds,otherBinds = FlatList.partition isTopBind binds let liftTheseBindings = !liftTLR && // lifting enabled not z.rws_mustinline && // can't lift bindings in a mustinline context - they would become private an not inlined z.rws_innerLevel>0 && // only collect Top* bindings when at inner levels (else will drop them!) not (FlatList.isEmpty topBinds) // only collect topBinds if there are some! if liftTheseBindings then let LiftedDeclaration = isRec,topBinds // LiftedDeclaration Top* decs let z = {z with rws_preDecs = TreeNode [z.rws_preDecs;LeafNode LiftedDeclaration]} // logged at end z,otherBinds else z,binds (* not "topBinds @ otherBinds" since that has changed order... *) #else let LiftTopBinds _isRec _penv z binds = z,binds #endif /// Wrap preDecs (in order) over an expr - use letrec/let as approp let MakePreDec m (isRec,binds) expr = if isRec=IsRec then mkLetRecBinds m binds expr else mkLetsFromBindings m binds expr let MakePreDecs m preDecs expr = List.foldBack (MakePreDec m) preDecs expr let RecursivePreDecs pdsA pdsB = let pds = fringeTR (TreeNode[pdsA;pdsB]) let decs = pds |> List.collect (fun (_,x) -> FlatList.toList x) |> FlatList.ofList LeafNode (IsRec,decs) //------------------------------------------------------------------------- // pass4: lowertop - convert_vterm_bind on TopLevel binds //------------------------------------------------------------------------- let ConvertBind g (TBind(v,repr,_) as bind) = match v.ValReprInfo with | None -> v.SetValReprInfo (Some (InferArityOfExprBinding g v repr )) | Some _ -> () bind //------------------------------------------------------------------------- // pass4: transBind (translate) //------------------------------------------------------------------------- // Transform // let f vss = f_body[,f_freeVars] // To // let f vss = fHat f_freeVars vss // let fHat f_freeVars vss = f_body[,f_freeVars] let TransTLRBindings penv (binds:Bindings) = if FlatList.isEmpty binds then FlatList.empty,FlatList.empty else let fc = BindingGroupSharingSameReqdItems binds let envp = Zmap.force fc penv.envPackM ("TransTLRBindings",string) let fRebinding (TBind(fOrig,b,letSeqPtOpt)) = let m = fOrig.Range let tps,vss,_b,rty = stripTopLambda (b,fOrig.Type) let aenvExprs = envp.ep_aenvs |> List.map (exprForVal m) let vsExprs = vss |> List.map (mkTupledVars penv.g m) let fHat = Zmap.force fOrig penv.fHatM ("fRebinding",nameOfVal) (* REVIEW: is this mutation really, really necessary? *) (* Why are we applying TLR if the thing already has an arity? *) let fOrig = setValHasNoArity fOrig let fBind = mkMultiLambdaBind fOrig letSeqPtOpt m tps vss (mkApps penv.g ((exprForVal m fHat, fHat.Type), [List.map mkTyparTy (envp.ep_etps @ tps)], aenvExprs @ vsExprs,m),rty) fBind let fHatNewBinding (shortRecBinds:Bindings) (TBind(f,b,letSeqPtOpt)) = let wf = Zmap.force f penv.arityM ("fHatNewBinding - arityM",nameOfVal) let fHat = Zmap.force f penv.fHatM ("fHatNewBinding - fHatM",nameOfVal) // Take off the variables let tps,vss,b,rty = stripTopLambda (b,f.Type) // Don't take all the variables - only up to length wf let vssTake,vssDrop = List.chop wf vss // put the variables back on let b,rty = mkMultiLambdasCore b.Range vssDrop (b,rty) // fHat, args let m = fHat.Range // Add the type variables to the front let fHat_tps = envp.ep_etps @ tps // Add the 'aenv' and original taken variables to the front let fHat_args = List.map List.singleton envp.ep_aenvs @ vssTake let fHat_body = mkLetsFromBindings m envp.ep_unpack b let fHat_body = mkLetsFromBindings m shortRecBinds fHat_body // bind "f" if have short recursive calls (somewhere) // fHat binding, f rebinding let fHatBind = mkMultiLambdaBind fHat letSeqPtOpt m fHat_tps fHat_args (fHat_body,rty) fHatBind let rebinds = binds |> FlatList.map fRebinding let shortRecBinds = rebinds |> FlatList.filter (fun b -> penv.recShortCallS.Contains(b.Var)) let newBinds = binds |> FlatList.map (fHatNewBinding shortRecBinds) newBinds,rebinds let GetAEnvBindings penv fc = match Zmap.tryFind fc penv.envPackM with | None -> FlatList.empty // no env for this mutual binding | Some envp -> envp.ep_pack // environment pack bindings let TransBindings xisRec penv (binds:Bindings) = let tlrBs,nonTlrBs = binds |> FlatList.partition (fun b -> Zset.contains b.Var penv.tlrS) let fclass = BindingGroupSharingSameReqdItems tlrBs // Trans each TLR f binding into fHat and f rebind let newTlrBinds,tlrRebinds = TransTLRBindings penv tlrBs let aenvBinds = GetAEnvBindings penv fclass // lower nonTlrBs if they are GTL // QUERY: we repeat this logic in Lowertop. Do we really need to do this here? // QUERY: yes and no - if we don't, we have an unrealizable term, and many decisions must // QUERY: correlate with Lowertop. let forceTopBindToHaveArity (bind:Binding) = if penv.topValS.Contains(bind.Var) then ConvertBind penv.g bind else bind let nonTlrBs = nonTlrBs |> FlatList.map forceTopBindToHaveArity let tlrRebinds = tlrRebinds |> FlatList.map forceTopBindToHaveArity // assemble into replacement bindings let bindAs,rebinds = match xisRec with | IsRec -> FlatList.toList newTlrBinds @ FlatList.toList tlrRebinds @ FlatList.toList nonTlrBs @ FlatList.toList aenvBinds,[] (* note: aenv last, order matters in letrec! *) | NotRec -> FlatList.toList aenvBinds @ FlatList.toList newTlrBinds, FlatList.toList tlrRebinds @ FlatList.toList nonTlrBs (* note: aenv go first, they may be used *) FlatList.ofList bindAs, FlatList.ofList rebinds //------------------------------------------------------------------------- // pass4: TransApp (translate) //------------------------------------------------------------------------- let TransApp penv (fx,fty,tys,args,m) = // Is it a val app, where the val f is TLR with arity wf? // CLEANUP NOTE: should be using a mkApps to make all applications match fx with | Expr.Val (fvref:ValRef,_,m) when (Zset.contains fvref.Deref penv.tlrS) && (let wf = Zmap.force fvref.Deref penv.arityM ("TransApp - wf",nameOfVal) IsArityMet fvref wf tys args) -> let f = fvref.Deref (* replace by direct call to corresponding fHat (and additional closure args) *) let fc = Zmap.force f penv.fclassM ("TransApp - fc",nameOfVal) let envp = Zmap.force fc penv.envPackM ("TransApp - envp",string) let fHat = Zmap.force f penv.fHatM ("TransApp - fHat",nameOfVal) let tys = (List.map mkTyparTy envp.ep_etps) @ tys let aenvExprs = List.map (exprForVal m) envp.ep_aenvs let args = aenvExprs @ args mkApps penv.g ((exprForVal m fHat, fHat.Type),[tys],args,m) (* change, direct fHat call with closure (reqdTypars,aenvs) *) | _ -> if isNil tys && isNil args then fx else Expr.App (fx,fty,tys,args,m) (* no change, f is expr *) //------------------------------------------------------------------------- // pass4: pass (over expr) //------------------------------------------------------------------------- /// Must WrapPreDecs around every construct that could do EnterInner (which filters TLR decs). /// i.e. let,letrec (bind may...), ilobj, lambda, tlambda. let WrapPreDecs m pds x = MakePreDecs m pds x /// At bindings, fixup any TLR bindings. /// At applications, fixup calls if they are arity-met instances of TLR. /// At free vals, fixup 0-call if it is an arity-met constant. /// Other cases rewrite structurally. let rec TransExpr (penv: RewriteContext) z expr = match expr with // Use TransLinearExpr with a rebuild-continuation for some forms to avoid stack overflows on large terms *) | Expr.LetRec _ | Expr.Let _ | Expr.Sequential _ -> TransLinearExpr penv z expr (fun res -> res) // app - call sites may require z. // - match the app (collapsing reclinks and type instances). // - patch it. | Expr.App (f,fty,tys,args,m) -> // pass over f,args subexprs let z,f = TransExpr penv z f let z,args = List.fmap (TransExpr penv) z args // match app, and fixup if needed let f,fty,tys,args,m = destApp (f,fty,tys,args,m) let expr = TransApp penv (f,fty,tys,args,m) z,expr | Expr.Val (v,_,m) -> // consider this a trivial app let fx,fty = expr,v.Type let expr = TransApp penv (fx,fty,[],[],m) z,expr // reclink - suppress | Expr.Link r -> TransExpr penv z (!r) // ilobj - has implicit lambda exprs and recursive/base references | Expr.Obj (_,ty,basev,basecall,overrides,iimpls,m) -> let z,basecall = TransExpr penv z basecall let z,overrides = List.fmap (TransMethod penv) z overrides let z,iimpls = List.fmap (fmap2Of2 (List.fmap (TransMethod penv))) z iimpls let expr = Expr.Obj(newUnique(),ty,basev,basecall,overrides,iimpls,m) let z,pds = ExtractPreDecs z z,WrapPreDecs m pds expr (* if TopLevel, lift preDecs over the ilobj expr *) // lambda, tlambda - explicit lambda terms | Expr.Lambda(_,ctorThisValOpt,baseValOpt,argvs,body,m,rty) -> let z = EnterInner z let z,body = TransExpr penv z body let z = ExitInner z let z,pds = ExtractPreDecs z z,WrapPreDecs m pds (rebuildLambda m ctorThisValOpt baseValOpt argvs (body,rty)) | Expr.TyLambda(_,argtyvs,body,m,rty) -> let z = EnterInner z let z,body = TransExpr penv z body let z = ExitInner z let z,pds = ExtractPreDecs z z,WrapPreDecs m pds (mkTypeLambda m argtyvs (body,rty)) /// Lifting TLR out over constructs (disabled) /// Lift minimally to ensure the defn is not lifted up and over defns on which it depends (disabled) | Expr.Match(spBind,exprm,dtree,targets,m,ty) -> let targets = Array.toList targets let z,dtree = TransDecisionTree penv z dtree let z,targets = List.fmap (TransDecisionTreeTarget penv) z targets // TransDecisionTreeTarget wraps EnterInner/exitInnter, so need to collect any top decs let z,pds = ExtractPreDecs z z,WrapPreDecs m pds (mkAndSimplifyMatch spBind exprm m ty dtree targets) // all others - below - rewrite structurally - so boiler plate code after this point... | Expr.Const _ -> z,expr (* constant wrt Val *) | Expr.Quote (a,{contents=Some(argTypes,argExprs,data)},isFromQueryExpression,m,ty) -> let z,argExprs = List.fmap (TransExpr penv) z argExprs z,Expr.Quote(a,{contents=Some(argTypes,argExprs,data)},isFromQueryExpression,m,ty) | Expr.Quote (a,{contents=None},isFromQueryExpression,m,ty) -> z,Expr.Quote(a,{contents=None},isFromQueryExpression,m,ty) | Expr.Op (c,tyargs,args,m) -> let z,args = List.fmap (TransExpr penv) z args z,Expr.Op(c,tyargs,args,m) | Expr.StaticOptimization (constraints,e2,e3,m) -> let z,e2 = TransExpr penv z e2 let z,e3 = TransExpr penv z e3 z,Expr.StaticOptimization(constraints,e2,e3,m) | Expr.TyChoose (_,_,m) -> error(Error(FSComp.SR.tlrUnexpectedTExpr(),m)) /// Walk over linear structured terms in tail-recursive loop, using a continuation /// to represent the rebuild-the-term stack and TransLinearExpr penv z expr contf = match expr with | Expr.Sequential (e1,e2,dir,spSeq,m) -> let z,e1 = TransExpr penv z e1 TransLinearExpr penv z e2 (contf << (fun (z,e2) -> z,Expr.Sequential(e1,e2,dir,spSeq,m))) // letrec - pass_recbinds does the work | Expr.LetRec (binds,e,m,_) -> let z = EnterInner z // For letrec, preDecs from RHS must mutually recurse with those from the bindings let z,pdsPrior = PopPreDecs z let z,binds = FlatList.fmap (TransBindingRhs penv) z binds let z,pdsRhs = PopPreDecs z let binds,rebinds = TransBindings IsRec penv binds let z,binds = LiftTopBinds IsRec penv z binds (* factor Top* repr binds *) let z,rebinds = LiftTopBinds IsRec penv z rebinds let z,pdsBind = PopPreDecs z let z = SetPreDecs z (TreeNode [pdsPrior;RecursivePreDecs pdsBind pdsRhs]) let z = ExitInner z let z,pds = ExtractPreDecs z // tailcall TransLinearExpr penv z e (contf << (fun (z,e) -> let e = mkLetsFromBindings m rebinds e z,WrapPreDecs m pds (Expr.LetRec (binds,e,m,NewFreeVarsCache())))) // let - can consider the mu-let bindings as mu-letrec bindings - so like as above | Expr.Let (bind,e,m,_) -> // For let, preDecs from RHS go before those of bindings, which is collection order let z,bind = TransBindingRhs penv z bind let binds,rebinds = TransBindings NotRec penv (FlatList.one bind) // factor Top* repr binds let z,binds = LiftTopBinds NotRec penv z binds let z,rebinds = LiftTopBinds NotRec penv z rebinds // any lifted PreDecs from binding, if so wrap them... let z,pds = ExtractPreDecs z // tailcall TransLinearExpr penv z e (contf << (fun (z,e) -> let e = mkLetsFromBindings m rebinds e z,WrapPreDecs m pds (mkLetsFromBindings m binds e))) | LinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty) -> let z,dtree = TransDecisionTree penv z dtree let z,tg1 = TransDecisionTreeTarget penv z tg1 // tailcall TransLinearExpr penv z e2 (contf << (fun (z,e2) -> z,rebuildLinearMatchExpr (spBind,exprm,dtree,tg1,e2,sp2,m2,ty))) | _ -> contf (TransExpr penv z expr) and TransMethod penv z (TObjExprMethod(slotsig,attribs,tps,vs,e,m)) = let z = EnterInner z let z,e = TransExpr penv z e let z = ExitInner z z,TObjExprMethod(slotsig,attribs,tps,vs,e,m) and TransBindingRhs penv z (TBind(v,e,letSeqPtOpt)) = let mustInline = v.MustInline let z,e = EnterMustInline mustInline z (fun z -> TransExpr penv z e) z,TBind (v,e,letSeqPtOpt) and TransDecisionTree penv z x = match x with | TDSuccess (es,n) -> let z,es = FlatList.fmap (TransExpr penv) z es z,TDSuccess(es,n) | TDBind (bind,rest) -> let z,bind = TransBindingRhs penv z bind let z,rest = TransDecisionTree penv z rest z,TDBind(bind,rest) | TDSwitch (e,cases,dflt,m) -> let z,e = TransExpr penv z e let TransDecisionTreeCase penv z (TCase (discrim,dtree)) = let z,dtree = TransDecisionTree penv z dtree z,TCase(discrim,dtree) let z,cases = List.fmap (TransDecisionTreeCase penv) z cases let z,dflt = Option.fmap (TransDecisionTree penv) z dflt z,TDSwitch (e,cases,dflt,m) and TransDecisionTreeTarget penv z (TTarget(vs,e,spTarget)) = let z = EnterInner z let z,e = TransExpr penv z e let z = ExitInner z z,TTarget(vs,e,spTarget) and TransValBinding penv z bind = TransBindingRhs penv z bind and TransValBindings penv z binds = FlatList.fmap (TransValBinding penv) z binds and TransModuleExpr penv z x = match x with | ModuleOrNamespaceExprWithSig(mty,def,m) -> let z,def = TransModuleDef penv z def z,ModuleOrNamespaceExprWithSig(mty,def,m) and TransModuleDefs penv z x = List.fmap (TransModuleDef penv) z x and TransModuleDef penv (z: RewriteState) x = match x with | TMDefRec(tycons,binds,mbinds,m) -> let z,binds = TransValBindings penv z binds let z,mbinds = TransModuleBindings penv z mbinds z,TMDefRec(tycons,binds,mbinds,m) | TMDefLet(bind,m) -> let z,bind = TransValBinding penv z bind z,TMDefLet(bind,m) | TMDefDo(e,m) -> let z,_bind = TransExpr penv z e z,TMDefDo(e,m) | TMDefs(defs) -> let z,defs = TransModuleDefs penv z defs z,TMDefs(defs) | TMAbstract(mexpr) -> let z,mexpr = TransModuleExpr penv z mexpr z,TMAbstract(mexpr) and TransModuleBindings penv z binds = List.fmap (TransModuleBinding penv) z binds and TransModuleBinding penv z (ModuleOrNamespaceBinding(nm, rhs)) = let z,rhs = TransModuleDef penv z rhs z,ModuleOrNamespaceBinding(nm,rhs) let TransImplFile penv z mv = fmapTImplFile (TransModuleExpr penv) z mv let TransAssembly penv z (TAssembly(mvs)) = let _z,mvs = List.fmap (TransImplFile penv) z mvs TAssembly(mvs) //------------------------------------------------------------------------- // pass5: copyExpr //------------------------------------------------------------------------- let RecreateUniqueBounds g expr = copyImplFile g OnlyCloneExprVals expr //------------------------------------------------------------------------- // entry point //------------------------------------------------------------------------- let MakeTLRDecisions ccu g expr = try // pass1: choose the f to be TLR with arity(f) let tlrS,topValS, arityM = Pass1_DetermineTLRAndArities.DetermineTLRAndArities g expr // pass2: determine the typar/freevar closures, f->fclass and fclass declist let reqdItemsMap,fclassM,declist,recShortCallS = Pass2_DetermineReqdItems.DetermineReqdItems (tlrS,arityM) expr // pass3 let envPackM = ChooseReqdItemPackings g fclassM topValS declist reqdItemsMap let fHatM = CreateNewValuesForTLR g tlrS arityM fclassM envPackM // pass4: rewrite if verboseTLR then dprintf "TransExpr(rw)------\n"; let _,expr = let penv : Pass4_RewriteAssembly.RewriteContext = {ccu=ccu; g=g; tlrS=tlrS; topValS=topValS; arityM=arityM; fclassM=fclassM; recShortCallS=recShortCallS; envPackM=envPackM; fHatM=fHatM} let z = Pass4_RewriteAssembly.rewriteState0 Pass4_RewriteAssembly.TransImplFile penv z expr // pass5: copyExpr to restore "each bound is unique" property // aka, copyExpr if verboseTLR then dprintf "copyExpr------\n"; let expr = RecreateUniqueBounds g expr if verboseTLR then dprintf "TLR-done------\n"; // Summary: // GTL = genuine top-level // TLR = TopLevelRep = identified by this pass // Note, some GTL are skipped until sort out the initial env... // if verboseTLR then dprintf "note: tlr = %d inner-TLR + %d GenuineTopLevel-TLR + %d GenuineTopLevel skipped TLR (public)\n" // (lengthS (Zset.diff tlrS topValS)) // (lengthS (Zset.inter topValS tlrS)) // (lengthS (Zset.diff topValS tlrS)) // DONE expr with AbortTLR m -> warning(Error(FSComp.SR.tlrLambdaLiftingOptimizationsNotApplied(),m)); expr fsharp-3.0.34/src/fsharp/pickle.fsi0000775000175000017500000000772212260314606016127 0ustar chrischris //---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Pickle open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Tast // Fixup pickled data w.r.t. a set of CCU thunks indexed by name [] type PickledDataWithReferences<'RawData> = { /// The data that uses a collection of CcuThunks internally RawData: 'RawData; /// The assumptions that need to be fixed up FixupThunks: list } member Fixup : (CcuReference -> CcuThunk) -> 'RawData /// Like Fixup but loader may return None, in which case there is no fixup. member OptionalFixup: (CcuReference -> CcuThunk option) -> 'RawData #if INCLUDE_METADATA_WRITER type WriterState type pickler<'T> = 'T -> WriterState -> unit val internal p_byte : int -> WriterState -> unit val internal p_bool : bool -> WriterState -> unit val internal p_int : int -> WriterState -> unit val internal p_string : string -> WriterState -> unit val internal p_lazy : 'T pickler -> Lazy<'T> pickler val inline internal p_tup2 : ('T1 pickler) -> ('T2 pickler) -> ('T1 * 'T2) pickler val inline internal p_tup3 : ('T1 pickler) -> ('T2 pickler) -> ('T3 pickler) -> ('T1 * 'T2 * 'T3) pickler val inline internal p_tup4 : ('T1 pickler) -> ('T2 pickler) -> ('T3 pickler) -> ('T4 pickler) -> ('T1 * 'T2 * 'T3 * 'T4) pickler val internal p_array : 'T pickler -> 'T[] pickler val internal p_namemap : 'T pickler -> NameMap<'T> pickler val internal p_const : Const pickler val internal p_vref : string -> ValRef pickler val internal p_tcref : string -> TyconRef pickler val internal p_ucref : UnionCaseRef pickler val internal p_expr : Expr pickler val internal p_typ : TType pickler val internal pickleModuleOrNamespace : pickler val internal pickleModuleInfo : pickler val pickleObjWithDanglingCcus : string -> Env.TcGlobals -> scope:CcuThunk -> ('T pickler) -> 'T -> byte[] #else #endif type ReaderState type unpickler<'T> = ReaderState -> 'T val internal u_byte : ReaderState -> int val internal u_bool : ReaderState -> bool val internal u_int : ReaderState -> int val internal u_string : ReaderState -> string val internal u_lazy : 'T unpickler -> Lazy<'T> unpickler val inline internal u_tup2 : ('T2 unpickler) -> ('T3 unpickler ) -> ('T2 * 'T3) unpickler val inline internal u_tup3 : ('T2 unpickler) -> ('T3 unpickler ) -> ('T4 unpickler ) -> ('T2 * 'T3 * 'T4) unpickler val inline internal u_tup4 : ('T2 unpickler) -> ('T3 unpickler ) -> ('T4 unpickler ) -> ('T5 unpickler) -> ('T2 * 'T3 * 'T4 * 'T5) unpickler val internal u_array : 'T unpickler -> 'T[] unpickler val internal u_namemap : 'T unpickler -> NameMap<'T> unpickler val internal u_const : Const unpickler val internal u_vref : ValRef unpickler val internal u_tcref : TyconRef unpickler val internal u_ucref : UnionCaseRef unpickler val internal u_expr : Expr unpickler val internal u_typ : TType unpickler val internal unpickleModuleOrNamespace : ReaderState -> ModuleOrNamespace val internal unpickleModuleInfo : ReaderState -> PickledModuleInfo val internal unpickleObjWithDanglingCcus : string -> viewedScope:ILScopeRef -> ilModule:ILModuleDef -> ('T unpickler) -> byte[] -> PickledDataWithReferences<'T> fsharp-3.0.34/src/fsharp/TraceCall.fsi0000775000175000017500000000226012260314606016502 0ustar chrischrisnamespace Internal.Utilities.Debug module internal TraceInterop = type MessageBeepType = | Default = -1 | Ok = 0 | Error = 16 | Question = 32 | Warning = 48 | Information = 64 val MessageBeep : MessageBeepType -> bool [] type internal Trace = static member Beep : loggingClass:string -> unit static member BeepError : loggingClass:string -> unit static member BeepOk : loggingClass:string -> unit static member Call : loggingClass:string * functionName:string * descriptionFunc:(unit->string) -> System.IDisposable static member CallByThreadNamed : loggingClass:string * functionName:string * threadName:string * descriptionFunc:(unit->string) -> System.IDisposable static member Print : loggingClass:string * messageFunc:(unit->string) -> unit static member PrintLine : loggingClass:string * messageFunc:(unit->string) -> unit static member ShouldLog : loggingClass:string -> bool static member Log : string with get, set static member Out : System.IO.TextWriter with get, set fsharp-3.0.34/src/fsharp/layout.fs0000775000175000017500000003411112260314606016014 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Layout open System open System.IO open Internal.Utilities.StructuredFormat open Microsoft.FSharp.Core.Printf #nowarn "62" // This construct is for ML compatibility. type layout = Internal.Utilities.StructuredFormat.Layout let spaces n = new String(' ',n) //-------------------------------------------------------------------------- // INDEX: support //-------------------------------------------------------------------------- let rec juxtLeft = function Leaf (jl,_text,_jr) -> jl | Node (jl,_l,_jm,_r,_jr,_joint) -> jl | Attr (_tag,_attrs,l) -> juxtLeft l let rec juxtRight = function Leaf (_jl,_text,jr) -> jr | Node (_jl,_l,_jm,_r,jr,_joint) -> jr | Attr (_tag,_attrs,l) -> juxtRight l (* NOTE: * emptyL might be better represented as a constructor, * so then (Sep"") would have true meaning *) let emptyL = Leaf (true,box "",true) let isEmptyL = function Leaf(true,tag,true) when unbox tag = "" -> true | _ -> false let mkNode l r joint = if isEmptyL l then r else if isEmptyL r then l else let jl = juxtLeft l in let jm = juxtRight l || juxtLeft r in let jr = juxtRight r in Node(jl,l,jm,r,jr,joint) //-------------------------------------------------------------------------- //INDEX: constructors //-------------------------------------------------------------------------- let wordL (str:string) = Leaf (false,box str,false) let sepL (str:string) = Leaf (true ,box str,true) let rightL (str:string) = Leaf (true ,box str,false) let leftL (str:string) = Leaf (false,box str,true) let aboveL l r = mkNode l r (Broken 0) let joinN i l r = mkNode l r (Breakable i) let join = joinN 0 let join1 = joinN 1 let join2 = joinN 2 let join3 = joinN 3 let tagAttrL str attrs ly = Attr (str,attrs,ly) let linkL str ly = tagAttrL "html:a" [("href",str)] ly //-------------------------------------------------------------------------- //INDEX: constructors derived //-------------------------------------------------------------------------- let apply2 f l r = if isEmptyL l then r else if isEmptyL r then l else f l r let (^^) l r = mkNode l r (Unbreakable) let (++) l r = mkNode l r (Breakable 0) let (--) l r = mkNode l r (Breakable 1) let (---) l r = mkNode l r (Breakable 2) let (----) l r = mkNode l r (Breakable 3) let (-----) l r = mkNode l r (Breakable 4) let (@@) l r = apply2 (fun l r -> mkNode l r (Broken 0)) l r let (@@-) l r = apply2 (fun l r -> mkNode l r (Broken 1)) l r let (@@--) l r = apply2 (fun l r -> mkNode l r (Broken 2)) l r let tagListL tagger = function | [] -> emptyL | [x] -> x | x::xs -> let rec process' prefixL = function | [] -> prefixL | y::ys -> process' ((tagger prefixL) ++ y) ys in process' x xs let commaListL x = tagListL (fun prefixL -> prefixL ^^ rightL ",") x let semiListL x = tagListL (fun prefixL -> prefixL ^^ rightL ";") x let spaceListL x = tagListL (fun prefixL -> prefixL) x let sepListL x y = tagListL (fun prefixL -> prefixL ^^ x) y let bracketL l = leftL "(" ^^ l ^^ rightL ")" let tupleL xs = bracketL (sepListL (sepL ",") xs) let aboveListL = function [] -> emptyL | [x] -> x | x::ys -> List.fold (fun pre y -> pre @@ y) x ys let optionL xL = function None -> wordL "None" | Some x -> wordL "Some" -- (xL x) let listL xL xs = leftL "[" ^^ sepListL (sepL ";") (List.map xL xs) ^^ rightL "]" //-------------------------------------------------------------------------- //INDEX: breaks v2 //-------------------------------------------------------------------------- // A very quick implementation of break stack. type breaks = Breaks of /// pos of next free slot int * /// pos of next possible "outer" break - OR - outer=next if none possible int * /// stack of savings, -ve means it has been broken int array // next is next slot to push into - aka size of current occupied stack. // outer counts up from 0, and is next slot to break if break forced. // - if all breaks forced, then outer=next. // - popping under these conditions needs to reduce outer and next. let chunkN = 400 let breaks0 () = Breaks(0,0,Array.create chunkN 0) let pushBreak saving (Breaks(next,outer,stack)) = let stack = if next = stack.Length then Array.append stack (Array.create chunkN 0) (* expand if full *) else stack stack.[next] <- saving; Breaks(next+1,outer,stack) let popBreak (Breaks(next,outer,stack)) = if next=0 then raise (Failure "popBreak: underflow"); let topBroke = stack.[next-1] < 0 let outer = if outer=next then outer-1 else outer (* if all broken, unwind *) let next = next - 1 Breaks(next,outer,stack),topBroke let forceBreak (Breaks(next,outer,stack)) = if outer=next then (* all broken *) None else let saving = stack.[outer] stack.[outer] <- -stack.[outer]; let outer = outer+1 Some (Breaks(next,outer,stack),saving) let squashTo maxWidth layout = // breaks = break context, can force to get indentation savings. // pos = current position in line // layout = to fit //------ // returns: // breaks // layout - with breaks put in to fit it. // pos - current pos in line = rightmost position of last line of block. // offset - width of last line of block // NOTE: offset <= pos -- depending on tabbing of last block let rec fit breaks (pos,layout) = (*printf "\n\nCalling pos=%d layout=[%s]\n" pos (showL layout);*) let breaks,layout,pos,offset = match layout with | Attr (tag,attrs,l) -> let breaks,layout,pos,offset = fit breaks (pos,l) let layout = Attr (tag,attrs,layout) breaks,layout,pos,offset | Leaf (_jl,text,_jr) -> let textWidth = (unbox text).Length let rec fitLeaf breaks pos = if pos + textWidth <= maxWidth then breaks,layout,pos + textWidth,textWidth (* great, it fits *) else match forceBreak breaks with None -> (breaks,layout,pos + textWidth,textWidth (* tough, no more breaks *)) | Some (breaks,saving) -> (let pos = pos - saving in fitLeaf breaks pos) fitLeaf breaks pos | Node (jl,l,jm,r,jr,joint) -> let mid = if jm then 0 else 1 match joint with | Unbreakable -> let breaks,l,pos,offsetl = fit breaks (pos,l) (* fit left *) let pos = pos + mid (* fit space if juxt says so *) let breaks,r,pos,offsetr = fit breaks (pos,r) (* fit right *) breaks,Node (jl,l,jm,r,jr,Unbreakable),pos,offsetl + mid + offsetr | Broken indent -> let breaks,l,pos,offsetl = fit breaks (pos,l) (* fit left *) let pos = pos - offsetl + indent (* broken so - offset left + indent *) let breaks,r,pos,offsetr = fit breaks (pos,r) (* fit right *) breaks,Node (jl,l,jm,r,jr,Broken indent),pos,indent + offsetr | Breakable indent -> let breaks,l,pos,offsetl = fit breaks (pos,l) (* fit left *) (* have a break possibility, with saving *) let saving = offsetl + mid - indent let pos = pos + mid if saving>0 then let breaks = pushBreak saving breaks let breaks,r,pos,offsetr = fit breaks (pos,r) let breaks,broken = popBreak breaks if broken then breaks,Node (jl,l,jm,r,jr,Broken indent) ,pos,indent + offsetr else breaks,Node (jl,l,jm,r,jr,Breakable indent),pos,offsetl + mid + offsetr else (* actually no saving so no break *) let breaks,r,pos,offsetr = fit breaks (pos,r) breaks,Node (jl,l,jm,r,jr,Breakable indent) ,pos,offsetl + mid + offsetr (*printf "\nDone: pos=%d offset=%d" pos offset;*) breaks,layout,pos,offset let breaks = breaks0 () let pos = 0 let _breaks,layout,_pos,_offset = fit breaks (pos,layout) layout //-------------------------------------------------------------------------- //INDEX: render //-------------------------------------------------------------------------- type render<'a,'b> = (* exists 'b. -- could use object type to get "exists 'b" on private state, *) abstract Start : unit -> 'b; abstract AddText : 'b -> string -> 'b; abstract AddBreak : 'b -> int -> 'b; abstract AddTag : 'b -> string * (string * string) list * bool -> 'b; abstract Finish : 'b -> 'a let renderL (rr: render<_,_>) layout = #if SILVERLIGHT // Use non-indirect-tailcalling version on silverlight let rec addL z pos i = function (* pos is tab level *) | Leaf (_,text,_) -> rr.AddText z (unbox text),i + (unbox text).Length | Node (_,l,_,r,_,Broken indent) -> let z,_i = addL z pos i l let z,i = rr.AddBreak z (pos+indent),(pos+indent) let z,i = addL z (pos+indent) i r z,i | Node (_,l,jm,r,_,_) -> let z,i = addL z pos i l let z,i = if jm then z,i else rr.AddText z " ",i+1 let pos = i let z,i = addL z pos i r z,i | Attr (tag,attrs,l) -> let z = rr.AddTag z (tag,attrs,true) let z,i = addL z pos i l let z = rr.AddTag z (tag,attrs,false) z,i let pos = 0 let z,i = rr.Start(),0 let z,_i = addL z pos i layout rr.Finish z #else let rec addL z pos i layout k = match layout with (* pos is tab level *) | Leaf (_,text,_) -> k(rr.AddText z (unbox text),i + (unbox text).Length) | Node (_,l,_,r,_,Broken indent) -> addL z pos i l <| fun (z,_i) -> let z,i = rr.AddBreak z (pos+indent),(pos+indent) addL z (pos+indent) i r k | Node (_,l,jm,r,_,_) -> addL z pos i l <| fun (z, i) -> let z,i = if jm then z,i else rr.AddText z " ",i+1 let pos = i addL z pos i r k | Attr (tag,attrs,l) -> let z = rr.AddTag z (tag,attrs,true) addL z pos i l <| fun (z, i) -> let z = rr.AddTag z (tag,attrs,false) k(z,i) let pos = 0 let z,i = rr.Start(),0 let z,_i = addL z pos i layout id rr.Finish z #endif /// string render let stringR = { new render with member x.Start () = [] member x.AddText rstrs text = text::rstrs member x.AddBreak rstrs n = (spaces n) :: "\n" :: rstrs member x.AddTag z (_,_,_) = z member x.Finish rstrs = String.Join("",Array.ofList (List.rev rstrs)) } type NoState = NoState type NoResult = NoResult /// channel render let channelR (chan:TextWriter) = { new render with member r.Start () = NoState member r.AddText z s = chan.Write s; z member r.AddBreak z n = chan.WriteLine(); chan.Write (spaces n); z member r.AddTag z (tag,attrs,start) = z member r.Finish z = NoResult } /// buffer render let bufferR os = { new render with member r.Start () = NoState member r.AddText z s = bprintf os "%s" s; z member r.AddBreak z n = bprintf os "\n"; bprintf os "%s" (spaces n); z member r.AddTag z (tag,attrs,start) = z member r.Finish z = NoResult } /// html render - wraps HTML encoding (REVIEW) and hyperlinks let htmlR (baseR : render<'Res,'State>) = { new render<'Res,'State> with member r.Start () = baseR.Start() member r.AddText z s = baseR.AddText z s; (* REVIEW: escape HTML chars *) member r.AddBreak z n = baseR.AddBreak z n member r.AddTag z (tag,attrs,start) = match tag,attrs with | "html:a",[("href",link)] -> if start then baseR.AddText z (sprintf "" link) else baseR.AddText z (sprintf "") | _ -> z member r.Finish z = baseR.Finish z } /// indent render - wraps fixed indentation let indentR indent (baseR : render<'Res,'State>) = { new render<'Res,'State> with member r.Start () = let z = baseR.Start() let z = baseR.AddText z (spaces indent) z member r.AddText z s = baseR.AddText z s; (* REVIEW: escape HTML chars *) member r.AddBreak z n = baseR.AddBreak z (n+indent); member r.AddTag z (tag,attrs,start) = baseR.AddTag z (tag,attrs,start) member r.Finish z = baseR.Finish z } //-------------------------------------------------------------------------- //INDEX: showL, outL are most common //-------------------------------------------------------------------------- let showL layout = renderL stringR layout let outL (chan:TextWriter) layout = renderL (channelR chan) layout |> ignore let bufferL os layout = renderL (bufferR os) layout |> ignore fsharp-3.0.34/src/fsharp/nameres.fs0000775000175000017500000042342712260314606016145 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //------------------------------------------------------------------------- // Name environment and name resolution //------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Nameres open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.IL // Abstract IL open Microsoft.FSharp.Compiler.Outcome open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Infos.AccessibilityLogic open Microsoft.FSharp.Compiler.Infos.AttributeChecking open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.PrettyNaming open System.Collections.Generic #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif /// An object that captures the logical context for name resolution. type NameResolver(g:TcGlobals, amap: Import.ImportMap, infoReader: InfoReader, instantiationGenerator: (range -> Typars -> TypeInst)) = /// Used to transform typars into new inference typars // instantiationGenerator is a function to help us create the // type parameters by copying them from type parameter specifications read // from IL code. // // When looking up items in generic types we create a fresh instantiation // of the type, i.e. instantiate the type with inference variables. // This means the item is returned ready for use by the type inference engine // without further freshening. However it does mean we end up plumbing 'instantiationGenerator' // around a bit more than we would like to, which is a bit annoying. member nr.InstantiationGenerator = instantiationGenerator member nr.g = g member nr.amap = amap member nr.InfoReader = infoReader //------------------------------------------------------------------------- // Helpers for unionconstrs and recdfields //------------------------------------------------------------------------- let UnionCaseRefsInTycon (modref: ModuleOrNamespaceRef) (tycon:Tycon) = tycon.UnionCasesAsList |> List.map (mkModuleUnionCaseRef modref tycon) let UnionCaseRefsInModuleOrNamespace (modref:ModuleOrNamespaceRef) = [ for x in modref.ModuleOrNamespaceType.AllEntities do yield! UnionCaseRefsInTycon modref x ] let TryFindTypeWithUnionCase (modref:ModuleOrNamespaceRef) (id: Ident) = modref.ModuleOrNamespaceType.AllEntities |> QueueList.tryFind (fun tycon -> tycon.GetUnionCaseByName id.idText |> isSome) let TryFindTypeWithRecdField (modref:ModuleOrNamespaceRef) (id: Ident) = modref.ModuleOrNamespaceType.AllEntities |> QueueList.tryFind (fun tycon -> tycon.GetFieldByName id.idText |> isSome) let ActivePatternElemsOfValRef vref = match TryGetActivePatternInfo vref with | Some (APInfo(_,nms) as apinfo) -> List.mapi (fun i _ -> APElemRef(apinfo,vref, i)) nms | None -> [] // mkNestedValRef may fail if the assembly load set is // incomplete and the value is an extension member of a type that is not // available. In some cases we can reasonably recover from this, e.g. by simply not adding // an entry to a table. Callsites have to cope with the error (None) condition // sensibly, e.g. in a way that won't change the way things are compiled as the // assembly set is completed. let tryMkValRefInModRef modref vspec = protectAssemblyExploration None (fun () -> Some (mkNestedValRef modref vspec)) let ActivePatternElemsOfVal modref vspec = // If the assembly load set is incomplete then dont add anything to the table match tryMkValRefInModRef modref vspec with | None -> [] | Some vref -> ActivePatternElemsOfValRef vref let ActivePatternElemsOfModuleOrNamespace (modref:ModuleOrNamespaceRef) : ActivePatternElemRef NameMap = let mtyp = modref.ModuleOrNamespaceType cacheOptRef mtyp.ActivePatternElemRefLookupTable (fun () -> let aprefs = [ for x in mtyp.AllValsAndMembers do yield! ActivePatternElemsOfVal modref x ] (Map.empty,aprefs) ||> List.fold (fun acc apref -> NameMap.add apref.Name apref acc) ) //--------------------------------------------------------------------------- // //------------------------------------------------------------------------- // Note: Active patterns are encoded like this: // let (|A|B|) x = if x < 0 then A else B // A and B are reported as results using 'Item.ActivePatternResult' // match () with | A | B -> () // A and B are reported using 'Item.ActivePatternCase' [] type Item = // These exist in the "eUnqualifiedItems" map in the type environment. | Value of ValRef | UnionCase of UnionCaseInfo | ActivePatternResult of ActivePatternInfo * TType * int * range | ActivePatternCase of ActivePatternElemRef | ExnCase of TyconRef | RecdField of RecdFieldInfo // The following are never in the items table but are valid results of binding // an identitifer in different circumstances. | NewDef of Ident | ILField of ILFieldInfo | Event of EventInfo | Property of string * PropInfo list | MethodGroup of string * MethInfo list | CtorGroup of string * MethInfo list | FakeInterfaceCtor of TType | DelegateCtor of TType | Types of string * TType list /// CustomOperation(nm, helpText, methInfo) /// /// Used to indicate the availability or resolution of a custom query operation such as 'sortBy' or 'where' in computation expression syntax | CustomOperation of string * (unit -> string option) * MethInfo option | CustomBuilder of string * ValRef | TypeVar of string | ModuleOrNamespaces of Tast.ModuleOrNamespaceRef list | ImplicitOp of Ident | ArgName of Ident * TType | SetterArg of Ident * Item | UnqualifiedType of TyconRef list let MakeMethGroup (nm,minfos:MethInfo list) = let minfos = minfos |> List.sortBy (fun minfo -> minfo.NumArgs |> List.sum) Item.MethodGroup (nm,minfos) let MakeCtorGroup (nm,minfos:MethInfo list) = let minfos = minfos |> List.sortBy (fun minfo -> minfo.NumArgs |> List.sum) Item.CtorGroup (nm,minfos) //--------------------------------------------------------------------------- // //------------------------------------------------------------------------- type ExtensionMember = | FSExtMem of ValRef * ExtensionMethodPriority | ILExtMem of ILTypeRef * ILMethodDef * ExtensionMethodPriority static member Equality g e1 e2 = match e1, e2 with | FSExtMem (vref1,_), FSExtMem (vref2,_) -> valRefEq g vref1 vref2 | ILExtMem (_,md1,_), ILExtMem (_,md2,_) -> md1 === md2 | _ -> false member x.Priority = match x with | FSExtMem (_,pri) -> pri | ILExtMem (_,_,pri) -> pri type FullyQualifiedFlag = // Only resolve full paths. | FullyQualified | OpenQualified [] type NameResolutionEnv = { /// Display environment information for output eDisplayEnv: DisplayEnv /// Values and Data Tags available by unqualified name eUnqualifiedItems: LayeredMap /// Data Tags and Active Pattern Tags available by unqualified name ePatItems: NameMap /// Modules accessible via "." notation. Note this is a multi-map. /// Adding a module abbreviation adds it a local entry to this List.map. /// Likewise adding a ccu or opening a path adds entries to this List.map. /// REVIEW (old comment) /// "The boolean flag is means the namespace or module entry shouldn't 'really' be in the /// map, and if it is everr used to resolve a name then we give a warning. /// This is used to give warnings on unqualified namespace accesses, e.g. /// open System /// open Collections <--- give a warning /// let v = new Collections.Generic.List() <--- give a warning" eModulesAndNamespaces: NameMultiMap /// Fully qualified modules and namespaces. 'open' does not change this. eFullyQualifiedModulesAndNamespaces: NameMultiMap /// RecdField labels in scope. RecdField labels are those where type are inferred /// by label rather than by known type annotation. /// Bools indicate if from a record, where no warning is given on indeterminate lookup eFieldLabels: NameMultiMap /// Tycons indexed by the various names that may be used to access them, e.g. /// "List" --> multiple TyconRef's for the various tycons accessible by this name. /// "List`1" --> TyconRef eTyconsByAccessNames: LayeredMultiMap eFullyQualifiedTyconsByAccessNames: LayeredMultiMap /// Tycons available by unqualified, demangled names (i.e. (List,1) --> TyconRef) eTyconsByDemangledNameAndArity: LayeredMap /// Tycons available by unqualified, demangled names (i.e. (List,1) --> TyconRef) eFullyQualifiedTyconsByDemangledNameAndArity: LayeredMap /// Extension members by type and name eExtensionMembers: TyconRefMultiMap /// Typars (always available by unqualified names). Further typars can be /// in the tpenv, a structure folded through each top-level definition. eTypars: NameMap } static member Empty(g) = { eDisplayEnv=DisplayEnv.Empty g eModulesAndNamespaces=Map.empty eFullyQualifiedModulesAndNamespaces = Map.empty eFieldLabels=Map.empty eUnqualifiedItems=LayeredMap.Empty ePatItems=Map.empty eTyconsByAccessNames= LayeredMultiMap.Empty eTyconsByDemangledNameAndArity=LayeredMap.Empty eFullyQualifiedTyconsByAccessNames=LayeredMultiMap.Empty eFullyQualifiedTyconsByDemangledNameAndArity=LayeredMap.Empty eExtensionMembers=TyconRefMultiMap<_>.Empty eTypars=Map.empty } member nenv.DisplayEnv = nenv.eDisplayEnv member nenv.FindUnqualifiedItem nm = nenv.eUnqualifiedItems.[nm] member nenv.TyconsByDemangledNameAndArity fq = match fq with | FullyQualified -> nenv.eFullyQualifiedTyconsByDemangledNameAndArity | OpenQualified -> nenv.eTyconsByDemangledNameAndArity member nenv.TyconsByAccessNames fq = match fq with | FullyQualified -> nenv.eFullyQualifiedTyconsByAccessNames | OpenQualified -> nenv.eTyconsByAccessNames member nenv.ModulesAndNamespaces fq = match fq with | FullyQualified -> nenv.eFullyQualifiedModulesAndNamespaces | OpenQualified -> nenv.eModulesAndNamespaces // Note: incrementing sequence of integers during type checking let nextExtensionMethodPriority() = uint64 (newStamp()) //------------------------------------------------------------------------- // Item functions //------------------------------------------------------------------------- let DisplayNameOfItem g d = match d with | Item.Value v -> v.DisplayName | Item.ActivePatternCase apref -> apref.Name | Item.UnionCase uinfo -> DecompileOpName uinfo.UnionCase.DisplayName | Item.ExnCase tcref -> tcref.LogicalName | Item.RecdField rfinfo -> DecompileOpName rfinfo.RecdField.Name | Item.NewDef id -> id.idText | Item.ILField finfo -> finfo.FieldName | Item.Event einfo -> einfo.EventName | Item.Property(nm,_) -> nm | Item.MethodGroup(nm,_) -> nm | Item.CtorGroup(nm,_) -> DemangleGenericTypeName nm | Item.FakeInterfaceCtor typ | Item.DelegateCtor typ -> DemangleGenericTypeName (tcrefOfAppTy g typ).LogicalName | Item.Types(nm,_) -> DemangleGenericTypeName nm | Item.TypeVar nm -> nm | Item.ModuleOrNamespaces(modref :: _) -> modref.DemangledModuleOrNamespaceName | Item.ArgName (id,_) -> id.idText | Item.SetterArg (id, _) -> id.idText | Item.CustomOperation (customOpName,_,_) -> customOpName | Item.CustomBuilder (nm,_) -> nm | _ -> "" /// For the operations that build the overall name resolution /// tables, BulkAdd.Yes is set to true when "opening" a /// namespace. If BulkAdd is true then add-and-collapse /// is used for the backing maps.Multiple "open" operations are /// thus coalesced, and the first subsequent lookup after a sequence /// of opens will collapse the maps and build the backing dictionary. [] type BulkAdd = Yes | No /// bulkAddMode: true when adding the values from the 'open' of a namespace /// or module, when we collapse the value table down to a dictionary. let AddValRefsToItems (bulkAddMode: BulkAdd) (eUnqualifiedItems: LayeredMap<_,_>) (vrefs:ValRef[]) = // Object model members are not added to the unqualified name resolution environment let vrefs = vrefs |> Array.filter (fun vref -> vref.MemberInfo.IsNone) if vrefs.Length = 0 then eUnqualifiedItems else match bulkAddMode with | BulkAdd.Yes -> eUnqualifiedItems.AddAndMarkAsCollapsible(vrefs |> Array.map (fun vref -> KeyValuePair(vref.LogicalName, Item.Value vref))) | BulkAdd.No -> assert (vrefs.Length = 1) let vref = vrefs.[0] eUnqualifiedItems.Add (vref.LogicalName, Item.Value vref) let AddValRefToExtensionMembers pri (eExtensionMembers: TyconRefMultiMap<_>) (vref:ValRef) = if vref.IsMember && vref.IsExtensionMember then eExtensionMembers.Add (vref.MemberApparentParent, FSExtMem (vref,pri)) else eExtensionMembers /// This entrypoint is used to add some extra items to the environment for Visual Studio, e.g. static members let AddFakeNamedValRefToNameEnv nm nenv vref = {nenv with eUnqualifiedItems= nenv.eUnqualifiedItems.Add (nm, Item.Value vref) } /// This entrypoint is used to add some extra items to the environment for Visual Studio, e.g. record members let AddFakeNameToNameEnv nm nenv item = {nenv with eUnqualifiedItems= nenv.eUnqualifiedItems.Add (nm, item) } let AddValRefsToNameEnvWithPriority bulkAddMode pri nenv vrefs = {nenv with eUnqualifiedItems= AddValRefsToItems bulkAddMode nenv.eUnqualifiedItems vrefs; eExtensionMembers = (nenv.eExtensionMembers,vrefs) ||> Array.fold (AddValRefToExtensionMembers pri); ePatItems = (nenv.ePatItems,vrefs) ||> Array.fold (fun acc vref -> let ePatItems = (ActivePatternElemsOfValRef vref, acc) ||> List.foldBack (fun apref tab -> NameMap.add apref.Name (Item.ActivePatternCase apref) tab) // Add literal constants to the environment available for resolving items in patterns let ePatItems = match vref.LiteralValue with | None -> ePatItems | Some _ -> NameMap.add vref.LogicalName (Item.Value vref) ePatItems ePatItems) } let AddValRefToNameEnv nenv vref = AddValRefsToNameEnvWithPriority BulkAdd.No (nextExtensionMethodPriority()) nenv [| vref |] let AddActivePatternResultTagsToNameEnv (apinfo: PrettyNaming.ActivePatternInfo) nenv ty m = let nms = apinfo.Names let apresl = nms |> List.mapi (fun j nm -> nm, j) { nenv with eUnqualifiedItems= (apresl,nenv.eUnqualifiedItems) ||> List.foldBack (fun (nm,j) acc -> acc.Add(nm, Item.ActivePatternResult(apinfo,ty,j, m))); } let GeneralizeUnionCaseRef (ucref:UnionCaseRef) = UnionCaseInfo (fst (generalizeTyconRef ucref.TyconRef), ucref) let AddTyconsByDemangledNameAndArity (bulkAddMode: BulkAdd) (tcrefs: TyconRef[]) (tab: LayeredMap) = let entries = tcrefs |> Array.map (fun tcref -> KeyTyconByDemangledNameAndArity tcref.LogicalName tcref.TyparsNoRange tcref) match bulkAddMode with | BulkAdd.Yes -> tab.AddAndMarkAsCollapsible entries | BulkAdd.No -> (tab,entries) ||> Array.fold (fun tab (KeyValue(k,v)) -> tab.Add(k,v)) let AddTyconByAccessNames bulkAddMode (tcrefs:TyconRef[]) (tab: LayeredMultiMap) = let entries = tcrefs |> Array.collect (fun tcref -> KeyTyconByAccessNames tcref.LogicalName tcref) match bulkAddMode with | BulkAdd.Yes -> tab.AddAndMarkAsCollapsible entries | BulkAdd.No -> (tab,entries) ||> Array.fold (fun tab (KeyValue(k,v)) -> tab.Add (k,v)) // Get the info for all the .NET-style extension members listed as static members in the type let private CSharpExtensionMemberInfosForTyconRef amap m (tcref:TyconRef) = let scoref,enc,tdef = tcref.ILTyconInfo if ILThingHasExtensionAttribute tdef.CustomAttrs then let pri = nextExtensionMethodPriority() let tref = ILTypeInfo(tcref,mkRefForNestedILTypeDef scoref (enc,tdef),[],tdef) // found extension attribute on type 'tcref.LogicalName' tdef.Methods.AsList |> List.collect (fun md -> if ILThingHasExtensionAttribute md.CustomAttrs && md.Parameters.Length > 0 then let thisParam = ILList.nth md.Parameters 0 let ilty = thisParam.Type match ilty with | ILType.Boxed tspec | ILType.Value tspec -> let tcref = (tspec |> rescopeILTypeSpec scoref).TypeRef |> Import.ImportILTypeRef amap m // found extension method 'md.Name' on type 'tcref.LogicalName' [(tcref, ILExtMem (tref.ILTypeRef, md, pri))] // Do not import extension members whose 'this' is only a type parameter | _ -> [] else []) else [] let private AddPartsOfTyconRefToNameEnv bulkAddMode ownDefinition (g:TcGlobals) amap m nenv (tcref:TyconRef) = let AddRecdField (rfref:RecdFieldRef) tab = NameMultiMap.add rfref.FieldName rfref tab let AddUnionCases1 (tab:Map<_,_>) (ucrefs:UnionCaseRef list)= (tab, ucrefs) ||> List.fold (fun acc ucref -> let item = Item.UnionCase (GeneralizeUnionCaseRef ucref) acc.Add (ucref.CaseName, item)) let AddUnionCases2 (eUnqualifiedItems: LayeredMap<_,_>) (ucrefs :UnionCaseRef list) = match bulkAddMode with | BulkAdd.Yes -> let items = ucrefs |> Array.ofList |> Array.map (fun ucref -> let item = Item.UnionCase (GeneralizeUnionCaseRef ucref) KeyValuePair(ucref.CaseName,item)) eUnqualifiedItems.AddAndMarkAsCollapsible items | BulkAdd.No -> (eUnqualifiedItems,ucrefs) ||> List.fold (fun acc ucref -> let item = Item.UnionCase (GeneralizeUnionCaseRef ucref) acc.Add (ucref.CaseName, item)) let isIL = tcref.IsILTycon let ucrefs = if isIL then [] else tcref.UnionCasesAsList |> List.map (mkNestedUnionCaseRef tcref) let flds = if isIL then [| |] else tcref.AllFieldsArray let eExtensionMembers = if isIL then let csharpExtensionMeths = CSharpExtensionMemberInfosForTyconRef amap m tcref (nenv.eExtensionMembers,csharpExtensionMeths) ||> List.fold (fun tab (tcref,extMemInfo) -> tab.Add (tcref, extMemInfo)) else nenv.eExtensionMembers { nenv with eFieldLabels= (if not tcref.IsRecordTycon || isIL || flds.Length = 0 || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then nenv.eFieldLabels else (nenv.eFieldLabels,flds) ||> Array.fold (fun acc f -> if f.IsStatic || f.IsCompilerGenerated then acc else AddRecdField (mkNestedRecdFieldRef tcref f) acc)) ; eUnqualifiedItems = (let tab = nenv.eUnqualifiedItems // add the type name for potential use as a constructor // The rules are // - The unqualified lookup table in the environment can contain map names to a set of type names (the set of type names is a new kind of "item"). // - When the contents of a type definition is added to the environment, an entry is added in this table for all class and struct types. // - When opening a module, types are added first to the environment, then values, then auto-opened sub-modules. // - When a value is added by an "open" previously available type names will become inaccessible by this table. let tab = // This may explore into an unreferenced assembly if the name // is a type abbreviation. If it does, assume the name does not // have a constructor. let mayHaveConstruction = protectAssemblyExploration false (fun () -> let typ = generalizedTyconRef tcref isClassTy g typ || isStructTy g typ) if mayHaveConstruction then tab.LinearTryModifyThenLaterFlatten (tcref.DisplayName, (fun prev -> match prev with | Some (Item.UnqualifiedType tcrefs) -> Item.UnqualifiedType (tcref::tcrefs) | _ -> Item.UnqualifiedType [tcref])) //match nenv.eUnqualifiedItems.TryFind tcref.DisplayName with //| Some (Item.UnqualifiedType tcrefs) -> tab.Add(tcref.DisplayName, Item.UnqualifiedType (tcref::tcrefs)) //| _ -> tab.Add(tcref.DisplayName, Item.UnqualifiedType [tcref]) else tab if isIL || ucrefs.Length = 0 || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then tab else AddUnionCases2 tab ucrefs); ePatItems = (if isIL || ucrefs.Length = 0 || (not ownDefinition && HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute tcref.Attribs) then nenv.ePatItems else AddUnionCases1 nenv.ePatItems ucrefs); eExtensionMembers = eExtensionMembers; } let AddTyconRefsToNameEnv bulkAddMode ownDefinition g amap m root nenv tcrefs = let env = List.fold (AddPartsOfTyconRefToNameEnv bulkAddMode ownDefinition g amap m) nenv tcrefs // Add most of the contents of the tycons en-masse, then flatten the tables if we're opening a module or namespace let tcrefs = Array.ofList tcrefs { env with eFullyQualifiedTyconsByDemangledNameAndArity= (if root then AddTyconsByDemangledNameAndArity bulkAddMode tcrefs nenv.eFullyQualifiedTyconsByDemangledNameAndArity else nenv.eFullyQualifiedTyconsByDemangledNameAndArity); eFullyQualifiedTyconsByAccessNames= (if root then AddTyconByAccessNames bulkAddMode tcrefs nenv.eFullyQualifiedTyconsByAccessNames else nenv.eFullyQualifiedTyconsByAccessNames); eTyconsByDemangledNameAndArity= AddTyconsByDemangledNameAndArity bulkAddMode tcrefs nenv.eTyconsByDemangledNameAndArity; eTyconsByAccessNames= AddTyconByAccessNames bulkAddMode tcrefs nenv.eTyconsByAccessNames } let AddExceptionDeclsToNameEnv bulkAddMode nenv (ecref:TyconRef) = assert ecref.IsExceptionDecl let item = Item.ExnCase ecref {nenv with eUnqualifiedItems= match bulkAddMode with | BulkAdd.Yes -> nenv.eUnqualifiedItems.AddAndMarkAsCollapsible [| KeyValuePair(ecref.LogicalName, item) |] | BulkAdd.No -> nenv.eUnqualifiedItems.Add (ecref.LogicalName, item) ePatItems = nenv.ePatItems.Add (ecref.LogicalName, item) } let AddModuleAbbrevToNameEnv (id:Ident) nenv modrefs = {nenv with eModulesAndNamespaces= let add old nw = nw @ old NameMap.layerAdditive add (Map.add id.idText modrefs Map.empty) nenv.eModulesAndNamespaces } //------------------------------------------------------------------------- // Open a structure or an IL namespace //------------------------------------------------------------------------- let nestedModuleRefs (modref: ModuleOrNamespaceRef) = modref.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions |> List.map modref.MkNestedTyconRef // Recursive because of "AutoOpen", i.e. adding a module reference may automatically open further modules let rec AddModuleOrNamespaceRefsToNameEnv g amap m root ad nenv (modrefs: ModuleOrNamespaceRef list) = let modrefsMap = modrefs |> NameMap.ofKeyedList (fun modref -> modref.DemangledModuleOrNamespaceName) let addModrefs tab = let add old nw = if IsEntityAccessible ad nw then nw :: old else old NameMap.layerAdditive add modrefsMap tab let nenv = {nenv with eModulesAndNamespaces= addModrefs nenv.eModulesAndNamespaces; eFullyQualifiedModulesAndNamespaces = (if root then addModrefs nenv.eFullyQualifiedModulesAndNamespaces else nenv.eFullyQualifiedModulesAndNamespaces) } let nenv = (nenv,modrefs) ||> List.fold (fun nenv modref -> if modref.IsModule && TryFindFSharpBoolAttribute g g.attrib_AutoOpenAttribute modref.Attribs = Some true then AddModuleOrNamespaceContentsToNameEnv g amap ad m nenv modref else nenv) nenv and AddModuleOrNamespaceContentsToNameEnv (g:TcGlobals) amap (ad:AccessorDomain) m nenv (modref:ModuleOrNamespaceRef) = let pri = nextExtensionMethodPriority() let mty = modref.ModuleOrNamespaceType let tycons = mty.TypeAndExceptionDefinitions let exncs = mty.ExceptionDefinitions let nenv = { nenv with eDisplayEnv= nenv.eDisplayEnv.AddOpenModuleOrNamespace modref } let tcrefs = tycons |> List.map modref.MkNestedTyconRef |> List.filter (IsEntityAccessible ad) let exrefs = exncs |> List.map modref.MkNestedTyconRef |> List.filter (IsEntityAccessible ad) let nenv = (nenv,exrefs) ||> List.fold (AddExceptionDeclsToNameEnv BulkAdd.Yes) let nenv = (nenv,tcrefs) ||> AddTyconRefsToNameEnv BulkAdd.Yes false g amap m false let vrefs = mty.AllValsAndMembers.ToFlatList() |> FlatList.choose (fun x -> if IsAccessible ad x.Accessibility then tryMkValRefInModRef modref x else None) |> FlatList.toArray let nenv = AddValRefsToNameEnvWithPriority BulkAdd.Yes pri nenv vrefs let nenv = (nenv,nestedModuleRefs modref) ||> AddModuleOrNamespaceRefsToNameEnv g amap m false ad nenv // Note this is a 'foldBack' - the most recently added modules come first in the list, e.g. // module M1 = ... // M1a // module M1 = ... // M1b // open M1 // // The list contains [M1b; M1a] and AddModulesAndNamespacesContentsToNameEnv g amap ad m nenv modrefs = (modrefs, nenv) ||> List.foldBack (fun modref acc -> AddModuleOrNamespaceContentsToNameEnv g amap ad m acc modref) let AddModrefToNameEnv g amap m root ad nenv (modref:EntityRef) = AddModuleOrNamespaceRefsToNameEnv g amap m root ad nenv [modref] type CheckForDuplicateTyparFlag = | CheckForDuplicateTypars | NoCheckForDuplicateTypars let AddDeclaredTyparsToNameEnv check nenv typars = let typarmap = List.foldBack (fun (tp:Typar) sofar -> begin match check with | CheckForDuplicateTypars -> if Map.containsKey tp.Name sofar then errorR (Duplicate("type parameter",tp.DisplayName,tp.Range)) | NoCheckForDuplicateTypars -> () end; Map.add tp.Name tp sofar) typars Map.empty {nenv with eTypars=NameMap.layer typarmap nenv.eTypars } //------------------------------------------------------------------------- // FreshenTycon and instantiationGenerator. //------------------------------------------------------------------------- /// Convert a reference to a named type into a type that includes /// a fresh set of inference type variables for the type parameters of the union type. let FreshenTycon (ncenv: NameResolver) m (tcref:TyconRef) = let tinst = ncenv.InstantiationGenerator m (tcref.Typars m) TType_app(tcref,tinst) /// Convert a reference to a union case into a UnionCaseInfo that includes /// a fresh set of inference type variables for the type parameters of the union type. let FreshenUnionCaseRef (ncenv: NameResolver) m (ucref:UnionCaseRef) = let tinst = ncenv.InstantiationGenerator m (ucref.TyconRef.Typars m) UnionCaseInfo(tinst,ucref) /// This must be called after fetching unqualified items that may need to be freshened let FreshenUnqualifiedItem (ncenv: NameResolver) m res = match res with | Item.UnionCase (UnionCaseInfo(_,ucref)) -> Item.UnionCase (FreshenUnionCaseRef ncenv m ucref) | _ -> res //------------------------------------------------------------------------- // Resolve module paths, value, field etc. lookups. Doing this involves // searching through many possibilities and disambiguating. Hence first // define some ways of combining multiple results and for carrying // error information. Errors are generally undefined names and are // reported by returning the error that occurs at greatest depth in the // sequence of Identifiers. //------------------------------------------------------------------------- // Accumulate a set of possible results. // If neither operations succeed, return an approximate error. // If one succeeds, return that one. // Prefer the error associated with the first argument. let OneResult res = match res with | Result x -> Result [x] | Exception e -> Exception e let OneSuccess x = Result [x] let AddResults res1 res2 = match res1, res2 with | Result [],_ -> res2 | _,Result [] -> res1 | Result x,Result l -> Result (x @ l) | Exception _,Result l -> Result l | Result x,Exception _ -> Result x // This prefers error messages coming from deeper failing long identifier paths | Exception (UndefinedName(n1,_,_,_) as e1),Exception (UndefinedName(n2,_,_,_) as e2) -> if n1 < n2 then Exception e2 else Exception e1 // Prefer more concrete errors about things being undefined | Exception (UndefinedName _ as e1),Exception (Error _) -> Exception e1 | Exception (Error _),Exception (UndefinedName _ as e2) -> Exception e2 | Exception e1,Exception _ -> Exception e1 let (+++) x y = AddResults x y let NoResultsOrUsefulErrors = Result [] // REVIEW: make this tail recursive let rec CollectResults f = function | [] -> NoResultsOrUsefulErrors | [h] -> OneResult (f h) | h :: t -> AddResults (OneResult (f h)) (CollectResults f t) // REVIEW: make this tail recursive let MapResults f = function | Result xs -> Result (List.map f xs) | Exception err -> Exception err let AtMostOneResult m res = match res with | Exception err -> raze err | Result [] -> raze (Error(FSComp.SR.nrInvalidModuleExprType(),m)) | Result [res] -> success res | Result (res :: _) -> success res //------------------------------------------------------------------------- // TypeNameResolutionInfo //------------------------------------------------------------------------- type TypeNameResolutionFlag = | ResolveTypeNamesToCtors | ResolveTypeNamesToTypeRefs [] [] type TypeNameResolutionStaticArgsInfo = /// Indicates indefinite knowledge of type arguments | Indefinite /// Indicates definite knowledge of type arguments | Definite of int /// Indicates definite knowledge of empty type arguments static member DefiniteEmpty = TypeNameResolutionStaticArgsInfo.Definite 0 static member FromTyArgs (tyargs: SynType list) = TypeNameResolutionStaticArgsInfo.Definite tyargs.Length member x.HasNoStaticArgsInfo = match x with TypeNameResolutionStaticArgsInfo.Indefinite -> true | _-> false member x.NumStaticArgs = match x with TypeNameResolutionStaticArgsInfo.Indefinite -> 0 | TypeNameResolutionStaticArgsInfo.Definite n -> n // Get the first possible mangled name of the type, assuming the args are generic args member x.MangledNameForType nm = if IsMangledGenericName nm || x.NumStaticArgs = 0 then nm else nm+"`"+string x.NumStaticArgs [] type TypeNameResolutionInfo = | TypeNameResolutionInfo of TypeNameResolutionFlag * TypeNameResolutionStaticArgsInfo static member Default = TypeNameResolutionInfo (ResolveTypeNamesToCtors,TypeNameResolutionStaticArgsInfo.Indefinite) static member ResolveToTypeRefs statResInfo = TypeNameResolutionInfo (ResolveTypeNamesToTypeRefs,statResInfo) member x.StaticArgsInfo = match x with TypeNameResolutionInfo(_,staticResInfo) -> staticResInfo member x.ResolutionFlag = match x with TypeNameResolutionInfo(flag,_) -> flag member x.DropStaticArgsInfo = match x with TypeNameResolutionInfo(flag2,_) -> TypeNameResolutionInfo(flag2,TypeNameResolutionStaticArgsInfo.Indefinite) //------------------------------------------------------------------------- // Resolve (possibly mangled) type names //------------------------------------------------------------------------- /// Qualified lookups where the number of generic arguments is known /// from context, e.g. Module.Type. The full names suh as ``List`1`` can /// be used to qualify access if needed let LookupTypeNameInEntityHaveArity nm (staticResInfo: TypeNameResolutionStaticArgsInfo) (mty:ModuleOrNamespaceType) = let attempt1 = mty.TypesByMangledName.TryFind (staticResInfo.MangledNameForType nm) match attempt1 with | Some _ as r -> r | None -> mty.TypesByMangledName.TryFind nm /// Unqualified lookups where the number of generic arguments is known /// from context, e.g. List. Rebindings due to 'open' may have rebound identifiers. let LookupTypeNameInEnvHaveArity fq nm numTyArgs (nenv:NameResolutionEnv) = let key = if IsMangledGenericName nm then DecodeGenericTypeName nm else NameArityPair(nm,numTyArgs) match nenv.TyconsByDemangledNameAndArity(fq).TryFind(key) with | Some res -> Some res | None -> nenv.TyconsByAccessNames(fq).TryFind nm |> Option.map List.head /// Unqualified lookups where the number of generic arguments is NOT known /// from context. This is used in five places: /// - static member lookups, e.g. MyType.StaticMember(3) /// - e.g. MyModule.MyType.StaticMember(3) /// - type-qualified field names, e.g. { RecordType.field = 3 } /// - type-qualified constructor names, e.g. match x with UnionType.A -> 3 /// - identifiers to constructors for better error messages, e.g. 'String(3)' after 'open System' /// - the special single-constructor rule in TcTyconCores /// /// Because of the potential ambiguity multiple results can be returned. /// Explicit type annotations can be added where needed to specify the generic arity. /// /// In theory the full names such as ``RecordType`1`` can /// also be used to qualify access if needed, though this is almost never needed. let LookupTypeNameNoArity nm (byDemangledNameAndArity: LayeredMap) (byAccessNames: LayeredMultiMap) = if IsMangledGenericName nm then match byDemangledNameAndArity.TryFind (DecodeGenericTypeName nm) with | Some res -> [res] | None -> match byAccessNames.TryFind nm with | Some res -> res | None -> [] else byAccessNames.[nm] let LookupTypeNameInEnvNoArity fq nm (nenv: NameResolutionEnv) = LookupTypeNameNoArity nm (nenv.TyconsByDemangledNameAndArity(fq)) (nenv.TyconsByAccessNames(fq)) let LookupTypeNameInEntityNoArity m nm (mtyp:ModuleOrNamespaceType) = LookupTypeNameNoArity nm (mtyp.TypesByDemangledNameAndArity(m)) mtyp.TypesByAccessNames let LookupTypeNameInEnvMaybeHaveArity fq nm (typeNameResInfo: TypeNameResolutionInfo) nenv = if typeNameResInfo.StaticArgsInfo.HasNoStaticArgsInfo then LookupTypeNameInEnvNoArity fq nm nenv else LookupTypeNameInEnvHaveArity fq nm typeNameResInfo.StaticArgsInfo.NumStaticArgs nenv |> Option.toList [] type PermitDirectReferenceToGeneratedType = | Yes | No #if EXTENSIONTYPING /// Generated types may not be returned from name resolution. let CheckForDirectReferenceToGeneratedType (tcref: TyconRef, genOk, m) = match genOk with | PermitDirectReferenceToGeneratedType.Yes -> () | PermitDirectReferenceToGeneratedType.No -> match tcref.TypeReprInfo with | TProvidedTypeExtensionPoint info when not info.IsErased -> //printfn "checking direct reference to generated type '%s'" tcref.DisplayName if ExtensionTyping.IsGeneratedTypeDirectReference (info.ProvidedType, m) then error (Error(FSComp.SR.etDirectReferenceToGeneratedTypeNotAllowed(tcref.DisplayName),m)) | _ -> () /// This adds a new entity for a lazily discovered provided type into the TAST structure. let AddEntityForProvidedType (amap: Import.ImportMap, modref: ModuleOrNamespaceRef, resolutionEnvironment, st:Tainted, m) = let importProvidedType t = Import.ImportProvidedType amap m t let isSuppressRelocate = amap.g.isInteractive || st.PUntaint((fun st -> st.IsSuppressRelocate),m) let tycon = Construct.NewProvidedTycon(resolutionEnvironment, st, importProvidedType, isSuppressRelocate, m) modref.ModuleOrNamespaceType.AddProvidedTypeEntity(tycon) let tcref = modref.MkNestedTyconRef tycon System.Diagnostics.Debug.Assert modref.TryDeref.IsSome tcref let ResolveProvidedTypeNameInEntity (amap, m, typeName, staticResInfo: TypeNameResolutionStaticArgsInfo, modref: ModuleOrNamespaceRef) = match modref.TypeReprInfo with | TProvidedNamespaceExtensionPoint(resolutionEnvironment,resolvers) -> match modref.Deref.PublicPath with | Some(PubPath(path)) -> let matches = resolvers |> List.map (fun r->ExtensionTyping.TryResolveProvidedType(resolutionEnvironment,r,m,path,typeName)) let tcrefs = [ for st in matches do match st with | None -> () | Some st -> yield AddEntityForProvidedType (amap, modref, resolutionEnvironment, st, m) ] tcrefs | None -> [] // We have a provided type, look up its nested types (populating them on-demand if necessary) | TProvidedTypeExtensionPoint info -> let sty = info.ProvidedType let resolutionEnvironment = info.ResolutionEnvironment if staticResInfo.NumStaticArgs > 0 then error(Error(FSComp.SR.etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters(),m)) if resolutionEnvironment.showResolutionMessages then dprintfn "resolving name '%s' in SingleTypeExtensionPoint '%s'" typeName (sty.PUntaint((fun sty -> sty.FullName), m)) match sty.PApply((fun sty -> sty.GetNestedType(typeName)), m) with | Tainted.Null -> [] | nestedSty -> [AddEntityForProvidedType (amap, modref, resolutionEnvironment, nestedSty, m) ] | _ -> [] #endif let LookupTypeNameInEntityMaybeHaveArity (amap, m, nm, staticResInfo:TypeNameResolutionStaticArgsInfo, modref: ModuleOrNamespaceRef) = let mtyp = modref.ModuleOrNamespaceType let tcrefs = match staticResInfo with | TypeNameResolutionStaticArgsInfo.Indefinite -> match LookupTypeNameInEntityNoArity m nm mtyp with | [] -> [] | tycons -> tycons |> List.map modref.MkNestedTyconRef | TypeNameResolutionStaticArgsInfo.Definite _ -> match LookupTypeNameInEntityHaveArity nm staticResInfo mtyp with | Some tycon -> [modref.MkNestedTyconRef tycon] | None -> [] #if EXTENSIONTYPING let tcrefs = match tcrefs with | [] -> ResolveProvidedTypeNameInEntity (amap, m, nm, staticResInfo, modref) | _ -> tcrefs #else amap |> ignore #endif //let tcrefs = tcrefs |> List.filter (IsEntityAccessible ad) tcrefs let GetNestedTypesOfType (ad, ncenv:NameResolver, optFilter, staticResInfo, checkForGenerated, m) typ = let g = ncenv.g ncenv.InfoReader.ReadPrimaryTypeHierachy(AllowMultiIntfInstantiations.No,m,typ) |> List.collect (fun typ -> if isAppTy g typ then let tcref,tinst = destAppTy g typ let tycon = tcref.Deref let mty = tycon.ModuleOrNamespaceType // No dotting through type generators to get to a nested type! #if EXTENSIONTYPING if checkForGenerated then CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m) #else checkForGenerated |> ignore #endif let MakeNestedType (tcrefNested:TyconRef) = // Handle the .NET/C# business where nested generic types implictly accumulate the type parameters // from their enclosing types. let tps = List.drop tinst.Length (tcrefNested.Typars m) let tinstNested = ncenv.InstantiationGenerator m tps mkAppTy tcrefNested (tinst @ tinstNested) match optFilter with | Some nm -> LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, m, nm, staticResInfo, tcref) |> List.map MakeNestedType | None -> #if EXTENSIONTYPING match tycon.TypeReprInfo with | TProvidedTypeExtensionPoint info -> [ for nestedType in info.ProvidedType.PApplyArray((fun sty -> sty.GetNestedTypes()), "GetNestedTypes", m) do let nestedTypeName = nestedType.PUntaint((fun t -> t.Name), m) for nestedTcref in LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, m, nestedTypeName, staticResInfo, tcref) do yield MakeNestedType nestedTcref ] | _ -> #endif mty.TypesByAccessNames.Values |> Seq.toList |> List.map (tcref.MkNestedTyconRef >> MakeNestedType) |> List.filter (IsTypeAccessible g ad) else []) //------------------------------------------------------------------------- // Report environments to visual studio. We stuff intermediary results // into a global variable. A little unpleasant. // REVIEW: We could at least put the global in cenv!!! //------------------------------------------------------------------------- // Represents a type of the occurence when reporting name in name resolution [] type ItemOccurence = // This is a binding / declaration of the item | Binding = 0 // This is a usage of the item | Use = 1 // This is a usage of a type name in a type | UseInType = 2 // This is a usage of a type name in an attribute | UseInAttribute = 3 // Inside pattern matching | Pattern = 4 type ITypecheckResultsSink = abstract NotifyEnvWithScope : range * NameResolutionEnv * AccessorDomain -> unit abstract NotifyExprHasType : pos * TType * Tastops.DisplayEnv * NameResolutionEnv * AccessorDomain * range -> unit abstract NotifyNameResolution : pos * Item * Item * ItemOccurence * Tastops.DisplayEnv * NameResolutionEnv * AccessorDomain * range -> unit type TcResultsSink = { mutable CurrentSink : ITypecheckResultsSink option } static member NoSink = { CurrentSink = None } static member WithSink sink = { CurrentSink = Some sink } let WithNewTypecheckResultsSink (newSink : ITypecheckResultsSink, sink:TcResultsSink) = let old = sink.CurrentSink sink.CurrentSink <- Some newSink { new System.IDisposable with member x.Dispose() = sink.CurrentSink <- old } let TemporarilySuspendReportingTypecheckResultsToSink (sink:TcResultsSink) = let old = sink.CurrentSink sink.CurrentSink <- None { new System.IDisposable with member x.Dispose() = sink.CurrentSink <- old } let CallEnvSink (sink:TcResultsSink) (scopem,nenv,ad) = match sink.CurrentSink with | None -> () | Some sink -> sink.NotifyEnvWithScope(scopem,nenv,ad) let CallNameResolutionSink (sink:TcResultsSink) (m:range,nenv,item,itemMethodGroup,occurenceType,denv,ad) = match sink.CurrentSink with | None -> () | Some sink -> sink.NotifyNameResolution(m.End,item,itemMethodGroup,occurenceType,denv,nenv,ad,m) let CallExprHasTypeSink (sink:TcResultsSink) (m:range,nenv,typ,denv,ad) = match sink.CurrentSink with | None -> () | Some sink -> sink.NotifyExprHasType(m.End,typ,denv,nenv,ad,m) /// Checks if the type variables associated with the result of a resolution are inferrable, /// i.e. occur in the arguments or return type of the resolution. If not give a warning /// about a type instantiation being needed. type ResultTyparChecker = unit -> bool let CheckAllTyparsInferrable amap m item = match item with | Item.Property(_,pinfos) -> pinfos |> List.forall (fun pinfo -> let freeInEnclosingType = freeInType CollectTyparsNoCaching pinfo.EnclosingType let freeInArgsAndRetType = accFreeInTypes CollectTyparsNoCaching (pinfo.GetParamTypes(amap,m)) (freeInType CollectTyparsNoCaching (pinfo.GetPropertyType(amap,m))) let free = Zset.diff freeInEnclosingType.FreeTypars freeInArgsAndRetType.FreeTypars free.IsEmpty) | Item.MethodGroup(_,minfos) -> minfos |> List.forall (fun minfo -> let fminst = minfo.FormalMethodInst let freeInEnclosingType = freeInType CollectTyparsNoCaching minfo.EnclosingType let freeInArgsAndRetType = List.foldBack (accFreeInTypes CollectTyparsNoCaching) (minfo.GetParamTypes(amap, m, fminst)) (accFreeInTypes CollectTyparsNoCaching (minfo.GetObjArgTypes(amap, m, fminst)) (freeInType CollectTyparsNoCaching (minfo.GetFSharpReturnTy(amap, m, fminst)))) let free = Zset.diff freeInEnclosingType.FreeTypars freeInArgsAndRetType.FreeTypars free.IsEmpty) | Item.CtorGroup _ | Item.FakeInterfaceCtor _ | Item.DelegateCtor _ | Item.Types _ | Item.ModuleOrNamespaces _ | Item.CustomOperation _ | Item.CustomBuilder _ | Item.TypeVar _ | Item.ArgName _ | Item.ActivePatternResult _ | Item.Value _ | Item.ActivePatternCase _ | Item.UnionCase _ | Item.ExnCase _ | Item.RecdField _ | Item.NewDef _ | Item.ILField _ | Item.Event _ | Item.ImplicitOp _ | Item.UnqualifiedType _ | Item.SetterArg _ -> true /// Keeps track of information relevant to the chosen resolution of a long identifier /// /// When we resolve an item such as System.Console.In we /// resolve it in one step to a property/val/method etc. item. However /// Visual Studio needs to know about the exact resolutions of the names /// System and Console, i.e. the 'entity path' of the resolution. /// /// Each of the resolution routines keeps track of the entity path and /// ultimately calls ResolutionInfo.SendToSink to record it for /// later use by Visual Studio. type ResolutionInfo = | ResolutionInfo of (*entityPath, reversed*)(range * EntityRef) list * (*warnings/errors*)(ResultTyparChecker -> unit) static member SendToSink(sink, ncenv: NameResolver, nenv, occ, ad, ResolutionInfo(entityPath,warnings), typarChecker) = entityPath |> List.iter (fun (m,eref:EntityRef) -> CheckEntityAttributes ncenv.g eref m |> CommitOperationResult; CheckTyconAccessible m ad eref |> ignore; let item = if eref.IsModuleOrNamespace then Item.ModuleOrNamespaces [eref] else Item.Types(eref.DisplayName,[FreshenTycon ncenv m eref]) CallNameResolutionSink sink (m,nenv,item,item,occ,nenv.eDisplayEnv,ad)) warnings(typarChecker) static member Empty = ResolutionInfo([],(fun _ -> ())) member x.AddEntity info = let (ResolutionInfo(entityPath,warnings)) = x ResolutionInfo(info::entityPath,warnings) member x.AddWarning f = let (ResolutionInfo(entityPath,warnings)) = x ResolutionInfo(entityPath,(fun typarChecker -> f typarChecker; warnings typarChecker)) /// Resolve ambiguities between types overloaded by generic arity, based on number of type arguments. /// Also check that we're not returning direct references to generated provided types. // // Given ambiguous C<>, C<_> we resolve the ambiguous 'C.M' to C<> without warning // Given ambiguous C<_>, C<_,_> we resolve the ambiguous 'C.M' to C<_> with an ambiguity error // Given C<_> we resolve the ambiguous 'C.M' to C<_> with a warning if the argument or return types can't be inferred // Given ambiguous C<>, C<_> we resolve the ambiguous 'C()' to C<> without warning // Given ambiguous C<_>, C<_,_> we resolve the ambiguous 'C()' to C<_> with an ambiguity error // Given C<_> we resolve the ambiguous 'C()' to C<_> with a warning if the argument or return types can't be inferred let CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs:(ResolutionInfo * TyconRef) list, typeNameResInfo:TypeNameResolutionInfo, genOk:PermitDirectReferenceToGeneratedType, m) = let tcrefs = tcrefs // remove later duplicates (if we've opened the same module more than once) |> Seq.distinctBy (fun (_,tcref) -> tcref.Stamp) |> Seq.toList // List.sortBy is a STABLE sort (the order matters!) |> List.sortBy (fun (_,tcref) -> tcref.Typars(m).Length) let tcrefs = match tcrefs with | ((_resInfo,tcref) :: _) when // multiple types tcrefs.Length > 1 && // no explicit type instantiation typeNameResInfo.StaticArgsInfo.HasNoStaticArgsInfo && // some type arguments required on all types (note sorted by typar count above) tcref.Typars(m).Length > 0 && // plausible types have different arities (tcrefs |> Seq.distinctBy (fun (_,tcref) -> tcref.Typars(m).Length) |> Seq.length > 1) -> [ for (resInfo,tcref) in tcrefs do let resInfo = resInfo.AddWarning (fun _typarChecker -> errorR(Error(FSComp.SR.nrTypeInstantiationNeededToDisambiguateTypesWithSameName(tcref.DisplayName, tcref.DisplayNameWithStaticParametersAndUnderscoreTypars),m))) yield (resInfo,tcref) ] | [(resInfo,tcref)] when typeNameResInfo.StaticArgsInfo.HasNoStaticArgsInfo && tcref.Typars(m).Length > 0 && typeNameResInfo.ResolutionFlag = ResolveTypeNamesToTypeRefs -> let resInfo = resInfo.AddWarning (fun typarChecker -> if not (typarChecker()) then warning(Error(FSComp.SR.nrTypeInstantiationIsMissingAndCouldNotBeInferred(tcref.DisplayName, tcref.DisplayNameWithStaticParametersAndUnderscoreTypars),m))) [(resInfo,tcref)] | _ -> tcrefs #if EXTENSIONTYPING for (_,tcref) in tcrefs do // Type generators can't be returned by name resolution, unless PermitDirectReferenceToGeneratedType.Yes CheckForDirectReferenceToGeneratedType (tcref, genOk, m) #else genOk |> ignore #endif tcrefs //------------------------------------------------------------------------- // Consume ids that refer to a namespace //------------------------------------------------------------------------- let rec ResolveLongIndentAsModuleOrNamespace fullyQualified (nenv:NameResolutionEnv) ad (lid:Ident list) = match lid with | [] -> NoResultsOrUsefulErrors | [id] when id.idText = MangledGlobalName -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | id :: lid when id.idText = MangledGlobalName -> ResolveLongIndentAsModuleOrNamespace FullyQualified nenv ad lid | id:: rest -> match nenv.ModulesAndNamespaces(fullyQualified).TryFind(id.idText) with | Some modrefs -> /// Look through the sub-namespaces and/or modules let rec look depth (modref: ModuleOrNamespaceRef) (mty:ModuleOrNamespaceType) (lid:Ident list) = match lid with | [] -> success (depth,modref,mty) | id:: rest -> match mty.ModulesAndNamespacesByDemangledName.TryFind id.idText with | Some mspec when IsEntityAccessible ad (modref.MkNestedTyconRef mspec) -> let subref = modref.MkNestedTyconRef mspec look (depth+1) subref mspec.ModuleOrNamespaceType rest | _ -> raze (UndefinedName(depth,FSComp.SR.undefinedNameNamespace,id,[])) modrefs |> CollectResults (fun modref -> if IsEntityAccessible ad modref then look 1 modref modref.ModuleOrNamespaceType rest else raze (UndefinedName(0,FSComp.SR.undefinedNameNamespaceOrModule,id,[]))) | None -> raze (UndefinedName(0,FSComp.SR.undefinedNameNamespaceOrModule,id,[])) let ResolveLongIndentAsModuleOrNamespaceThen fullyQualified (nenv:NameResolutionEnv) ad lid f = match lid with | [] -> NoResultsOrUsefulErrors | id :: rest -> match ResolveLongIndentAsModuleOrNamespace fullyQualified nenv ad [id] with | Result modrefs -> modrefs |> CollectResults (fun (depth,modref,mty) -> let resInfo = ResolutionInfo.Empty.AddEntity(id.idRange,modref) f resInfo (depth+1) id.idRange modref mty rest) | Exception err -> Exception err //------------------------------------------------------------------------- // Bind name used in "new Foo.Bar(...)" constructs //------------------------------------------------------------------------- let private ResolveObjectConstructorPrim (ncenv:NameResolver) edenv resInfo m ad typ = let g = ncenv.g let amap = ncenv.amap if isDelegateTy g typ then success (resInfo,Item.DelegateCtor typ) else let ctorInfos = GetIntrinsicConstructorInfosOfType ncenv.InfoReader m typ if isInterfaceTy g typ && isNil ctorInfos then success (resInfo, Item.FakeInterfaceCtor typ) else let defaultStructCtorInfo = if (isStructTy g typ && not(ctorInfos |> List.exists (fun x -> x.IsNullary))) then [DefaultStructCtor(g,typ)] else [] if (isNil defaultStructCtorInfo && isNil ctorInfos) || not (isAppTy g typ) then raze (Error(FSComp.SR.nrNoConstructorsAvailableForType(NicePrint.minimalStringOfType edenv typ),m)) else let ctorInfos = ctorInfos |> List.filter (IsMethInfoAccessible amap m ad) success (resInfo,MakeCtorGroup ((tcrefOfAppTy g typ).LogicalName, (defaultStructCtorInfo@ctorInfos))) let ResolveObjectConstructor (ncenv:NameResolver) edenv m ad typ = ResolveObjectConstructorPrim (ncenv:NameResolver) edenv [] m ad typ |?> (fun (_resInfo,item) -> item) //------------------------------------------------------------------------- // Bind IL "." notation (member lookup or lookup in a type) //------------------------------------------------------------------------- let IntrinsicPropInfosOfTypeInScope (infoReader:InfoReader) (optFilter, ad) findFlag m typ = let g = infoReader.g let amap = infoReader.amap let pinfos = GetIntrinsicPropInfoSetsOfType infoReader (optFilter, ad, AllowMultiIntfInstantiations.No) findFlag m typ let pinfos = pinfos |> ExcludeHiddenOfPropInfos g amap m pinfos let ExtensionPropInfosOfTypeInScope (infoReader:InfoReader) (eExtensionMembers: TyconRefMultiMap<_>) (optFilter, ad) _findFlag m typ = let g = infoReader.g let amap = infoReader.amap infoReader.ReadEntireTypeHierachy(AllowMultiIntfInstantiations.No,m,typ) |> List.collect (fun typ -> if (isAppTy g typ) then let tcref = tcrefOfAppTy g typ // NOTE: multiple "open"'s push multiple duplicate values into eExtensionMembers // REVIEW: this looks a little slow: ListSet.setify is quadratic. let extValRefs = tcref |> eExtensionMembers.Find |> ListSet.setify (ExtensionMember.Equality g) let propCollector = new PropertyCollector(g,amap,m,typ,optFilter,ad) extValRefs |> List.iter (fun emem -> match emem with | FSExtMem (vref,_pri) -> match vref.MemberInfo with | None -> () | Some membInfo -> propCollector.Collect(membInfo,vref) | ILExtMem _ -> // No extension properties coming from .NET ()) propCollector.Close() else []) let AllPropInfosOfTypeInScope infoReader eExtensionMembers (optFilter, ad) findFlag m typ = IntrinsicPropInfosOfTypeInScope infoReader (optFilter, ad) findFlag m typ @ ExtensionPropInfosOfTypeInScope infoReader eExtensionMembers (optFilter, ad) findFlag m typ let IntrinsicMethInfosOfType (infoReader:InfoReader) (optFilter,ad,allowMultiIntfInst) findFlag m typ = let g = infoReader.g let amap = infoReader.amap let minfos = GetIntrinsicMethInfoSetsOfType infoReader (optFilter,ad,allowMultiIntfInst) findFlag m typ let minfos = minfos |> ExcludeHiddenOfMethInfos g amap m minfos let ImmediateExtensionMethInfosOfTypeInScope (infoReader:InfoReader) (eExtensionMembers: TyconRefMultiMap<_>) (optFilter,_ad) _findFlag m typ = let g = infoReader.g if (isAppTy g typ) then let tcref = tcrefOfAppTy g typ // NOTE: multiple "open"'s push multiple duplicate values into eExtensionMembers // REVIEW: this looks a little slow: ListSet.setify is quadratic. let extValRefs = tcref |> eExtensionMembers.Find |> ListSet.setify (ExtensionMember.Equality g) // Mark the extension members up with a number indicating priority (in open order, 0 = most recent) extValRefs |> List.choose (fun emem -> match emem with | FSExtMem (vref,pri) -> match vref.MemberInfo with | None -> None | Some membInfo -> TrySelectMemberVal g optFilter typ (Some pri) membInfo vref | ILExtMem (actualParent,md,pri) when (match optFilter with None -> true | Some nm -> nm = md.Name) -> if Tastops.isILAppTy g typ then // 'typ' is the logical parent let tinfo = ILTypeInfo.FromType g typ Some(ILMethInfo.Create (infoReader.amap, m, tinfo, Some actualParent, Some pri, md)) else /// then, this is not a type definition backed by Abstract IL metadata. let tcref,_ = destAppTy g typ if tcref.IsFSharpObjectModelTycon then // case for C# extension method on an F# type let fsObjKind = tcref.FSharpObjectModelTypeInfo.fsobjmodel_kind Some(ILMeth(infoReader.amap.g,ILFSMethInfo(tcref,fsObjKind,Some actualParent,md),Some pri)) else failwith "cannot happen: ILExtMem" | _ -> None) else [] let ExtensionMethInfosOfTypeInScope (infoReader:InfoReader) eExtensionMembers (optFilter,ad) findFlag m typ = infoReader.ReadEntireTypeHierachy(AllowMultiIntfInstantiations.No,m,typ) |> List.collect (fun typ -> ImmediateExtensionMethInfosOfTypeInScope infoReader eExtensionMembers (optFilter,ad) findFlag m typ) let AllMethInfosOfTypeInScope infoReader eExtensionMembers (optFilter,ad) findFlag m typ = IntrinsicMethInfosOfType infoReader (optFilter,ad,AllowMultiIntfInstantiations.No) findFlag m typ @ ExtensionMethInfosOfTypeInScope infoReader eExtensionMembers (optFilter,ad) findFlag m typ exception IndeterminateType of range type LookupKind = | RecdField | Pattern | Expr | Type | Ctor let TryFindUnionCaseOfType g typ nm = if isAppTy g typ then let tcref,tinst = destAppTy g typ match tcref.GetUnionCaseByName nm with | None -> None | Some ucase -> Some(UnionCaseInfo(tinst,mkNestedUnionCaseRef tcref ucase)) else None let CoreDisplayName(pinfo:PropInfo) = match pinfo with | FSProp(_,_,_,Some set) -> set.CoreDisplayName | FSProp(_,_,Some get,_) -> get.CoreDisplayName | FSProp _ -> failwith "unexpected (property must have either getter or setter)" | ILProp(_,ILPropInfo(_,def)) -> def.Name #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> pi.PUntaint((fun pi -> pi.Name), m) #endif let DecodeFSharpEvent (pinfos:PropInfo list) ad g (ncenv:NameResolver) m = match pinfos with | [pinfo] when pinfo.IsFSharpEventProperty -> let nm = CoreDisplayName(pinfo) let minfos1 = GetImmediateIntrinsicMethInfosOfType (Some("add_"+nm),ad) g ncenv.amap m pinfo.EnclosingType let minfos2 = GetImmediateIntrinsicMethInfosOfType (Some("remove_"+nm),ad) g ncenv.amap m pinfo.EnclosingType match minfos1,minfos2 with | [FSMeth(_,_,addValRef,_)],[FSMeth(_,_,removeValRef,_)] -> // FOUND PROPERTY-AS-EVENT AND CORRESPONDING ADD/REMOVE METHODS Some(Item.Event(FSEvent(g,pinfo,addValRef,removeValRef))) | _ -> // FOUND PROPERTY-AS-EVENT BUT DIDN'T FIND CORRESPONDING ADD/REMOVE METHODS Some(Item.Property (nm,pinfos)) | pinfo::_ when nonNil pinfos -> let nm = CoreDisplayName(pinfo) Some(Item.Property (nm,pinfos)) | _ -> None // REVIEW: this shows up on performance logs. Consider for example endles resolutions of "List.map" to // the empty set of results, or "x.Length" for a list or array type. This indicates it could be worth adding a cache here. let rec ResolveLongIdentInTypePrim (ncenv:NameResolver) nenv lookupKind (resInfo:ResolutionInfo) depth m ad (lid:Ident list) findFlag (typeNameResInfo: TypeNameResolutionInfo) typ = let g = ncenv.g match lid with | [] -> error(InternalError("ResolveLongIdentInTypePrim",m)) | id :: rest -> let m = unionRanges m id.idRange let nm = id.idText // used to filter the searches of the tables let optFilter = Some nm // used to filter the searches of the tables let contentsSearchAccessible = let unionCaseSearch = if (match lookupKind with Expr | Pattern -> true | _ -> false) then TryFindUnionCaseOfType g typ nm else None // Lookup: datatype constructors take precedence match unionCaseSearch with | Some ucase -> success(resInfo,Item.UnionCase(ucase),rest) | None -> match TryFindIntrinsicNamedItemOfType ncenv.InfoReader (nm,ad) findFlag m typ with | Some (PropertyItem psets) when (match lookupKind with Expr -> true | _ -> false) -> let pinfos = psets |> ExcludeHiddenOfPropInfos g ncenv.amap m match DecodeFSharpEvent pinfos ad g ncenv m with | Some x -> success (resInfo, x, rest) | None-> raze (UndefinedName (depth,FSComp.SR.undefinedNameFieldConstructorOrMember, id,[])) | Some(MethodItem msets) when (match lookupKind with Expr -> true | _ -> false) -> let minfos = msets |> ExcludeHiddenOfMethInfos g ncenv.amap m // fold the available extension members into the overload resolution let extensionMethInfos = match lookupKind with | Expr -> ExtensionMethInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (optFilter,ad) findFlag m typ | _ -> [] //if nonNil(extensionMethInfos) && (match lookupKind with Expr -> true | _ -> false) then success (resInfo,MakeMethGroup (nm,minfos@extensionMethInfos),rest) //success (resInfo,MakeMethGroup (nm,minfos),rest) | Some (ILFieldItem (finfo:: _)) when (match lookupKind with Expr | Pattern -> true | _ -> false) -> success (resInfo,Item.ILField finfo,rest) | Some (EventItem (einfo :: _)) when (match lookupKind with Expr -> true | _ -> false) -> success (resInfo,Item.Event einfo,rest) | Some (RecdFieldItem (rfinfo)) when (match lookupKind with Expr | RecdField | Pattern -> true | _ -> false) -> success(resInfo,Item.RecdField(rfinfo),rest) | _ -> let pinfos = ExtensionPropInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (optFilter, ad) findFlag m typ if nonNil pinfos && (match lookupKind with Expr -> true | _ -> false) then success (resInfo,Item.Property (nm,pinfos),rest) else let minfos = ExtensionMethInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (optFilter,ad) findFlag m typ if nonNil minfos && (match lookupKind with Expr -> true | _ -> false) then success (resInfo,MakeMethGroup (nm,minfos),rest) else if isTyparTy g typ then raze (IndeterminateType(unionRanges m id.idRange)) else raze (UndefinedName (depth,FSComp.SR.undefinedNameFieldConstructorOrMember, id,[])) let nestedSearchAccessible = let nestedTypes = GetNestedTypesOfType (ad, ncenv, Some nm, (if isNil rest then typeNameResInfo.StaticArgsInfo else TypeNameResolutionStaticArgsInfo.Indefinite), true, m) typ if isNil rest then if isNil nestedTypes then NoResultsOrUsefulErrors else match typeNameResInfo.ResolutionFlag with | ResolveTypeNamesToCtors -> nestedTypes |> CollectResults (ResolveObjectConstructorPrim ncenv nenv.eDisplayEnv resInfo m ad) |> MapResults (fun (resInfo,item) -> (resInfo,item,[])) | ResolveTypeNamesToTypeRefs -> OneSuccess (resInfo,Item.Types (nm,nestedTypes),rest) else ResolveLongIdentInTypes ncenv nenv lookupKind resInfo (depth+1) m ad rest findFlag typeNameResInfo nestedTypes (OneResult contentsSearchAccessible +++ nestedSearchAccessible) and ResolveLongIdentInTypes (ncenv:NameResolver) nenv lookupKind resInfo depth m ad lid findFlag typeNameResInfo typs = typs |> CollectResults (ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad lid findFlag typeNameResInfo >> AtMostOneResult m) let ResolveLongIdentInType sink ncenv nenv lookupKind m ad lid findFlag typeNameResInfo typ = let resInfo,item,rest = ResolveLongIdentInTypePrim (ncenv:NameResolver) nenv lookupKind ResolutionInfo.Empty 0 m ad lid findFlag typeNameResInfo typ |> AtMostOneResult m |> ForceRaise ResolutionInfo.SendToSink (sink,ncenv,nenv,ItemOccurence.UseInType,ad,resInfo,(fun () -> CheckAllTyparsInferrable ncenv.amap m item)); item,rest let private ResolveLongIdentInTyconRef (ncenv:NameResolver) nenv lookupKind resInfo depth m ad lid typeNameResInfo tcref = #if EXTENSIONTYPING // No dotting through type generators to get to a member! CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m) #endif let typ = FreshenTycon ncenv m tcref typ |> ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad lid IgnoreOverrides typeNameResInfo let private ResolveLongIdentInTyconRefs (ncenv:NameResolver) nenv lookupKind depth m ad lid typeNameResInfo idRange tcrefs = tcrefs |> CollectResults (fun (resInfo:ResolutionInfo,tcref) -> let resInfo = resInfo.AddEntity(idRange,tcref) tcref |> ResolveLongIdentInTyconRef ncenv nenv lookupKind resInfo depth m ad lid typeNameResInfo |> AtMostOneResult m) //------------------------------------------------------------------------- // ResolveExprLongIdentInModuleOrNamespace //------------------------------------------------------------------------- let (|AccessibleEntityRef|_|) ad (modref: ModuleOrNamespaceRef) mspec = let eref = modref.MkNestedTyconRef mspec if IsEntityAccessible ad eref then Some eref else None let rec ResolveExprLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv (typeNameResInfo: TypeNameResolutionInfo) ad resInfo depth m modref (mty:ModuleOrNamespaceType) (lid :Ident list) = // resInfo records the modules or namespaces actually relevant to a resolution match lid with | [] -> raze(Error(FSComp.SR.nrUnexpectedEmptyLongId(),m)) | id :: rest -> let m = unionRanges m id.idRange match mty.AllValsByLogicalName.TryFind(id.idText) with | Some vspec when IsValAccessible ad (mkNestedValRef modref vspec) -> success(resInfo,Item.Value (mkNestedValRef modref vspec),rest) | _-> match TryFindTypeWithUnionCase modref id with | Some tycon when IsTyconReprAccessible ad (modref.MkNestedTyconRef tycon) -> let ucref = mkUnionCaseRef (modref.MkNestedTyconRef tycon) id.idText let ucinfo = FreshenUnionCaseRef ncenv m ucref success (resInfo,Item.UnionCase ucinfo,rest) | _ -> match mty.ExceptionDefinitionsByDemangledName.TryFind(id.idText) with | Some excon when IsTyconReprAccessible ad (modref.MkNestedTyconRef excon) -> success (resInfo,Item.ExnCase (modref.MkNestedTyconRef excon),rest) | _ -> // Something in a type? let tyconSearch = let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, (if isNil rest then typeNameResInfo.StaticArgsInfo else TypeNameResolutionStaticArgsInfo.Indefinite), modref) let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) if nonNil rest then let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, TypeNameResolutionInfo (ResolveTypeNamesToTypeRefs,TypeNameResolutionStaticArgsInfo.Indefinite), PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange) ResolveLongIdentInTyconRefs ncenv nenv LookupKind.Expr (depth+1) m ad rest typeNameResInfo id.idRange tcrefs // Check if we've got some explicit type arguments else let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange) match typeNameResInfo.ResolutionFlag with | ResolveTypeNamesToTypeRefs -> success [ for (resInfo,tcref) in tcrefs do let typ = FreshenTycon ncenv m tcref let item = (resInfo,Item.Types(id.idText,[typ]),[]) yield item ] | ResolveTypeNamesToCtors -> tcrefs |> List.map (fun (resInfo, tcref) -> resInfo, FreshenTycon ncenv m tcref) |> CollectResults (fun (resInfo,typ) -> ResolveObjectConstructorPrim ncenv nenv.eDisplayEnv resInfo id.idRange ad typ) |> MapResults (fun (resInfo,item) -> (resInfo,item,[])) // Something in a sub-namespace or sub-module let moduleSearch = if (nonNil rest) then match mty.ModulesAndNamespacesByDemangledName.TryFind(id.idText) with | Some(AccessibleEntityRef ad modref submodref) -> let resInfo = resInfo.AddEntity(id.idRange,submodref) OneResult (ResolveExprLongIdentInModuleOrNamespace ncenv nenv typeNameResInfo ad resInfo (depth+1) m submodref submodref.ModuleOrNamespaceType rest) | _ -> NoResultsOrUsefulErrors else NoResultsOrUsefulErrors AtMostOneResult id.idRange ( tyconSearch +++ moduleSearch +++ raze (UndefinedName(depth,FSComp.SR.undefinedNameValueConstructorNamespaceOrType,id,[]))) /// An identifier has resolved to a type name in an expression (corresponding to one or more TyconRefs). /// Return either a set of constructors (later refined by overload resolution), or a set of TyconRefs. let ChooseTyconRefInExpr (ncenv:NameResolver, m, ad, nenv, id:Ident, typeNameResInfo:TypeNameResolutionInfo, resInfo:ResolutionInfo, tcrefs) = let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, PermitDirectReferenceToGeneratedType.No, m) match typeNameResInfo.ResolutionFlag with | ResolveTypeNamesToCtors -> let typs = tcrefs |> List.map (fun (resInfo,tcref) -> (resInfo,FreshenTycon ncenv m tcref)) typs |> CollectResults (fun (resInfo,typ) -> ResolveObjectConstructorPrim ncenv nenv.eDisplayEnv resInfo id.idRange ad typ) |> MapResults (fun (resInfo,item) -> (resInfo,item,[])) | ResolveTypeNamesToTypeRefs -> let typs = tcrefs |> List.map (fun (resInfo,tcref) -> (resInfo,FreshenTycon ncenv m tcref)) success (typs |> List.map (fun (resInfo,typ) -> (resInfo,Item.Types(id.idText,[typ]),[]))) /// Resolve F# "A.B.C" syntax in expressions /// Not all of the sequence will necessarily be swallowed, i.e. we return some identifiers /// that may represent further actions, e.g. further lookups. let rec ResolveExprLongIdentPrim sink (ncenv:NameResolver) fullyQualified m ad nenv (typeNameResInfo:TypeNameResolutionInfo) lid = let resInfo = ResolutionInfo.Empty match lid with | [] -> error (Error(FSComp.SR.nrInvalidExpression(textOfLid lid), m)) | [id] when id.idText = MangledGlobalName -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | [id;next] when id.idText = MangledGlobalName -> ResolveExprLongIdentPrim sink ncenv fullyQualified m ad nenv typeNameResInfo [next] | id :: lid when id.idText = MangledGlobalName -> ResolveExprLongIdentPrim sink ncenv FullyQualified m ad nenv typeNameResInfo lid | [id] when fullyQualified <> FullyQualified -> // Single identifier. Lookup the unqualified names in the environment let envSearch = match nenv.eUnqualifiedItems.TryFind(id.idText) with // The name is a type name and it has not been clobbered by some other name | Some (Item.UnqualifiedType tcrefs) -> // Do not use type names from the environment if an explicit type instantiation is // given and the number of type parameters do not match let tcrefs = tcrefs |> List.filter (fun tcref -> typeNameResInfo.StaticArgsInfo.HasNoStaticArgsInfo || typeNameResInfo.StaticArgsInfo.NumStaticArgs = tcref.Typars(m).Length) let search = ChooseTyconRefInExpr (ncenv, m, ad, nenv, id, typeNameResInfo, resInfo, tcrefs) match AtMostOneResult m search with | Result _ as res -> let resInfo,item,rest = ForceRaise res ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> CheckAllTyparsInferrable ncenv.amap m item)); Some(item,rest) | _ -> None | Some res -> Some (FreshenUnqualifiedItem ncenv m res, []) | None -> None match envSearch with | Some res -> res | None -> // Check if it's a type name, e.g. a constructor call or a type instantiation let ctorSearch = let tcrefs = LookupTypeNameInEnvMaybeHaveArity fullyQualified id.idText typeNameResInfo nenv ChooseTyconRefInExpr (ncenv, m, ad, nenv, id, typeNameResInfo, resInfo, tcrefs) let implicitOpSearch = if IsMangledOpName id.idText then success [(resInfo,Item.ImplicitOp id,[])] else NoResultsOrUsefulErrors let failingCase = raze (UndefinedName(0,FSComp.SR.undefinedNameValueOfConstructor,id,[])) let search = ctorSearch +++ implicitOpSearch +++ failingCase let resInfo,item,rest = ForceRaise (AtMostOneResult m search) ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> CheckAllTyparsInferrable ncenv.amap m item)); item,rest // A compound identifier. // It still might be a value in the environment, or something in an F# module, namespace, typ, or nested type | id :: rest -> let m = unionRanges m id.idRange // Values in the environment take total priority, but contructors do NOT for compound lookups, e.g. if someone in some imported // module has defined a constructor "String" (common enough) then "String.foo" doesn't give an error saying 'constructors have no members' // Instead we go lookup the String module or type. let ValIsInEnv nm = match fullyQualified with | FullyQualified -> false | _ -> match nenv.eUnqualifiedItems.TryFind(nm) with | Some(Item.Value _) -> true | _ -> false if ValIsInEnv id.idText then nenv.eUnqualifiedItems.[id.idText], rest else // Otherwise modules are searched first. REVIEW: modules and types should be searched together. // For each module referenced by 'id', search the module as if it were an F# module and/or a .NET namespace. let moduleSearch ad = ResolveLongIndentAsModuleOrNamespaceThen fullyQualified nenv ad lid (ResolveExprLongIdentInModuleOrNamespace ncenv nenv typeNameResInfo ad) // REVIEW: somewhat surprisingly, this shows up on performance traces, with tcrefs non-nil. // This seems strange since we would expect in the vast majority of cases tcrefs is empty here. let tyconSearch ad = let tcrefs = LookupTypeNameInEnvNoArity fullyQualified id.idText nenv let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, TypeNameResolutionInfo.ResolveToTypeRefs (TypeNameResolutionStaticArgsInfo.Indefinite), PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange) ResolveLongIdentInTyconRefs ncenv nenv LookupKind.Expr 1 m ad rest typeNameResInfo id.idRange tcrefs let envSearch = match fullyQualified with | FullyQualified -> NoResultsOrUsefulErrors | OpenQualified -> match nenv.eUnqualifiedItems.TryFind id.idText with | Some (Item.UnqualifiedType _) | None -> NoResultsOrUsefulErrors | Some res -> OneSuccess (resInfo,FreshenUnqualifiedItem ncenv m res,rest) let search = moduleSearch ad +++ tyconSearch ad +++ envSearch let resInfo,item,rest = match AtMostOneResult m search with | Result _ as res -> ForceRaise res | _ -> let failingCase = raze (UndefinedName(0,FSComp.SR.undefinedNameValueNamespaceTypeOrModule,id,[])) ForceRaise (AtMostOneResult m (search +++ moduleSearch AccessibleFromSomeFSharpCode +++ tyconSearch AccessibleFromSomeFSharpCode +++ failingCase)) ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> CheckAllTyparsInferrable ncenv.amap m item)); item,rest let ResolveExprLongIdent sink (ncenv:NameResolver) m ad nenv typeNameResInfo lid = ResolveExprLongIdentPrim sink ncenv OpenQualified m ad nenv typeNameResInfo lid //------------------------------------------------------------------------- // Resolve F#/IL "." syntax in patterns //------------------------------------------------------------------------- let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv numTyArgsOpt ad resInfo depth m modref (mty:ModuleOrNamespaceType) (lid: Ident list) = match lid with | [] -> raze (InternalError("ResolvePatternLongIdentInModuleOrNamespace",m)) | id :: rest -> let m = unionRanges m id.idRange match TryFindTypeWithUnionCase modref id with | Some tycon when IsTyconReprAccessible ad (modref.MkNestedTyconRef tycon) -> let tcref = modref.MkNestedTyconRef tycon let ucref = mkUnionCaseRef tcref id.idText let ucinfo = FreshenUnionCaseRef ncenv m ucref success (resInfo,Item.UnionCase ucinfo,rest) | _ -> match mty.ExceptionDefinitionsByDemangledName.TryFind(id.idText) with | Some exnc when IsEntityAccessible ad (modref.MkNestedTyconRef exnc) -> success (resInfo,Item.ExnCase (modref.MkNestedTyconRef exnc),rest) | _ -> // An active pattern constructor in a module match (ActivePatternElemsOfModuleOrNamespace modref).TryFind(id.idText) with | Some ( APElemRef(_,vref,_) as apref) when IsValAccessible ad vref -> success (resInfo,Item.ActivePatternCase apref,rest) | _ -> match mty.AllValsByLogicalName.TryFind(id.idText) with | Some vspec when IsValAccessible ad (mkNestedValRef modref vspec) -> success(resInfo,Item.Value (mkNestedValRef modref vspec),rest) | _ -> // Something in a type? e.g. a literal field let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref) let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) let tyconSearch = match lid with | _tn:: rest when nonNil rest -> ResolveLongIdentInTyconRefs (ncenv:NameResolver) nenv LookupKind.Pattern (depth+1) m ad rest numTyArgsOpt id.idRange tcrefs | _ -> NoResultsOrUsefulErrors // Constructor of a type? let ctorSearch = if isNil rest then tcrefs |> List.map (fun (resInfo,tcref) -> (resInfo,FreshenTycon ncenv m tcref)) |> CollectResults (fun (resInfo,typ) -> ResolveObjectConstructorPrim ncenv nenv.eDisplayEnv resInfo id.idRange ad typ) |> MapResults (fun (resInfo,item) -> (resInfo,item,[])) else NoResultsOrUsefulErrors // Something in a sub-namespace or sub-module or nested-type let moduleSearch = if nonNil rest then match mty.ModulesAndNamespacesByDemangledName.TryFind(id.idText) with | Some(AccessibleEntityRef ad modref submodref) -> let resInfo = resInfo.AddEntity(id.idRange,submodref) OneResult (ResolvePatternLongIdentInModuleOrNamespace ncenv nenv numTyArgsOpt ad resInfo (depth+1) m submodref submodref.ModuleOrNamespaceType rest) | _ -> NoResultsOrUsefulErrors else NoResultsOrUsefulErrors let res = AtMostOneResult id.idRange ( tyconSearch +++ ctorSearch +++ moduleSearch +++ raze (UndefinedName(depth,FSComp.SR.undefinedNameConstructorModuleOrNamespace,id,[]))) res exception UpperCaseIdentifierInPattern of range type WarnOnUpperFlag = WarnOnUpperCase | AllIdsOK // Long ID in a pattern let rec ResolvePatternLongIdentPrim sink (ncenv:NameResolver) fullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt (lid:Ident list) = match lid with | [id] when id.idText = MangledGlobalName -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | id :: lid when id.idText = MangledGlobalName -> ResolvePatternLongIdentPrim sink ncenv FullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt lid // Single identifiers in patterns | [id] when fullyQualified <> FullyQualified -> // Single identifiers in patterns - bind to constructors and active patterns // For the special case of // let C = x match nenv.ePatItems.TryFind(id.idText) with | Some res when not newDef -> FreshenUnqualifiedItem ncenv m res | _ -> // Single identifiers in patterns - variable bindings if not newDef && (warnOnUpper = WarnOnUpperCase) && id.idText.Length >= 3 && System.Char.ToLowerInvariant id.idText.[0] <> id.idText.[0] then warning(UpperCaseIdentifierInPattern(m)); Item.NewDef id // Long identifiers in patterns | _ -> let moduleSearch ad = ResolveLongIndentAsModuleOrNamespaceThen fullyQualified nenv ad lid (ResolvePatternLongIdentInModuleOrNamespace ncenv nenv numTyArgsOpt ad) let tyconSearch ad = match lid with | tn:: rest when nonNil rest -> let tcrefs = LookupTypeNameInEnvNoArity fullyQualified tn.idText nenv let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty,tcref)) ResolveLongIdentInTyconRefs ncenv nenv LookupKind.Pattern 1 tn.idRange ad rest numTyArgsOpt tn.idRange tcrefs | _ -> NoResultsOrUsefulErrors let resInfo,res,rest = match AtMostOneResult m (tyconSearch ad +++ moduleSearch ad) with | Result _ as res -> ForceRaise res | _ -> ForceRaise (AtMostOneResult m (tyconSearch AccessibleFromSomeFSharpCode +++ moduleSearch AccessibleFromSomeFSharpCode)) ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> true)); if nonNil rest then error(Error(FSComp.SR.nrIsNotConstructorOrLiteral(),(List.head rest).idRange)); res let ResolvePatternLongIdent sink (ncenv:NameResolver) warnOnUpper newDef m ad nenv numTyArgsOpt (lid:Ident list) = ResolvePatternLongIdentPrim sink ncenv OpenQualified warnOnUpper newDef m ad nenv numTyArgsOpt lid //------------------------------------------------------------------------- // Resolve F#/IL "." syntax in types //------------------------------------------------------------------------- let DerefAbbrevTyconRef_WORKAROUND (ncenv:NameResolver) (tcref: TyconRef) m = // HANDLE NON-GENERIC CASE OF BUG REPORTED TO FSBUGS: Nested types are not found when you abbreviate a .NET type // // Handling the generic case is harder, e.g. for // type X = List // // X.ListEnumerator // should resolve if tcref.IsTypeAbbrev && tcref.Typars(m).IsEmpty && isAppTy ncenv.g tcref.TypeAbbrev.Value && isNil (argsOfAppTy ncenv.g tcref.TypeAbbrev.Value) then tcrefOfAppTy ncenv.g tcref.TypeAbbrev.Value else tcref let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo:TypeNameResolutionInfo) ad resInfo genOk depth m (tcref: TyconRef) (lid: Ident list) = let tcref = DerefAbbrevTyconRef_WORKAROUND ncenv tcref m match lid with | [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(),m)) | [id] -> #if EXTENSIONTYPING // No dotting through type generators to get to a nested type! CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m) #endif let m = unionRanges m id.idRange let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, typeNameResInfo.StaticArgsInfo, tcref) let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, genOk, m) match tcrefs with | tcref :: _ -> success tcref | [] -> raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,[])) | id::rest -> #if EXTENSIONTYPING // No dotting through type generators to get to a nested type! CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m) #endif let m = unionRanges m id.idRange // Search nested types let tyconSearch = let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, tcref) let tcrefs = tcrefs |> List.map (fun tcref -> (resInfo,tcref)) let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo.DropStaticArgsInfo, genOk, m) match tcrefs with | _ :: _ -> tcrefs |> CollectResults (fun (resInfo,tcref) -> ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad resInfo genOk (depth+1) m tcref rest) | [] -> raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,[])) AtMostOneResult m tyconSearch let ResolveTypeLongIdentInTyconRef sink (ncenv:NameResolver) nenv typeNameResInfo ad m tcref (lid: Ident list) = let resInfo,tcref = ForceRaise (ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad ResolutionInfo.Empty PermitDirectReferenceToGeneratedType.No 0 m tcref lid) ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> true)); tcref let rec private ResolveTypeLongIdentInModuleOrNamespace (ncenv:NameResolver) (typeNameResInfo: TypeNameResolutionInfo) ad genOk (resInfo:ResolutionInfo) depth m modref _mty (lid: Ident list) = match lid with | [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(),m)) | [id] -> // On all paths except error reporting we have isSome(staticResInfo), hence get at most one result back let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, typeNameResInfo.StaticArgsInfo, modref) match tcrefs with | _ :: _ -> tcrefs |> CollectResults (fun tcref -> success(resInfo,tcref)) | [] -> raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,[])) | id::rest -> let m = unionRanges m id.idRange let modulSearch = match modref.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName.TryFind(id.idText) with | Some(AccessibleEntityRef ad modref submodref) -> let resInfo = resInfo.AddEntity(id.idRange,submodref) ResolveTypeLongIdentInModuleOrNamespace ncenv typeNameResInfo ad genOk resInfo (depth+1) m submodref submodref.ModuleOrNamespaceType rest | _ -> raze (UndefinedName(depth,FSComp.SR.undefinedNameNamespaceOrModule,id,[])) let tyconSearch = let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref) match tcrefs with | _ :: _ -> tcrefs |> CollectResults (fun tcref -> ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad resInfo genOk (depth+1) m tcref rest) | [] -> raze (UndefinedName(depth,FSComp.SR.undefinedNameType,id,[])) tyconSearch +++ modulSearch let rec ResolveTypeLongIdentPrim (ncenv:NameResolver) fullyQualified m nenv ad (lid: Ident list) (staticResInfo: TypeNameResolutionStaticArgsInfo) genOk = let typeNameResInfo = TypeNameResolutionInfo.ResolveToTypeRefs staticResInfo match lid with | [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(),m)) | [id] when id.idText = MangledGlobalName -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | id :: lid when id.idText = MangledGlobalName -> ResolveTypeLongIdentPrim ncenv FullyQualified m nenv ad lid staticResInfo genOk | [id] -> match LookupTypeNameInEnvHaveArity fullyQualified id.idText staticResInfo.NumStaticArgs nenv with | Some res -> let res = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities ([(ResolutionInfo.Empty,res)], typeNameResInfo, genOk, unionRanges m id.idRange) assert (res.Length = 1) success res.Head | None -> // For Good Error Reporting! let tcrefs = LookupTypeNameInEnvNoArity fullyQualified id.idText nenv match tcrefs with | tcref :: _tcrefs -> // Note: This path is only for error reporting //CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities tcref rest typeNameResInfo m; success(ResolutionInfo.Empty,tcref) | [] -> raze (UndefinedName(0,FSComp.SR.undefinedNameType,id,[])) | id::rest -> let m = unionRanges m id.idRange let tyconSearch = match fullyQualified with | FullyQualified -> NoResultsOrUsefulErrors | OpenQualified -> match LookupTypeNameInEnvHaveArity fullyQualified id.idText staticResInfo.NumStaticArgs nenv with | Some tcref when IsEntityAccessible ad tcref -> OneResult (ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad ResolutionInfo.Empty genOk 1 m tcref rest) | _ -> NoResultsOrUsefulErrors let modulSearch = ResolveLongIndentAsModuleOrNamespaceThen fullyQualified nenv ad lid (ResolveTypeLongIdentInModuleOrNamespace ncenv typeNameResInfo ad genOk) |?> List.concat let modulSearchFailed() = ResolveLongIndentAsModuleOrNamespaceThen fullyQualified nenv AccessibleFromSomeFSharpCode lid (ResolveTypeLongIdentInModuleOrNamespace ncenv typeNameResInfo.DropStaticArgsInfo ad genOk) |?> List.concat match tyconSearch +++ modulSearch with | Result results -> // NOTE: we delay checking the CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities condition until right at the end after we've // collected all possible resolutions of the type let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (results, typeNameResInfo, genOk, rangeOfLid lid) match tcrefs with | (resInfo,tcref) :: _ -> // We've already reported the ambiguity, possibly as an error. Now just take the first possible result. success(resInfo,tcref) | [] -> // failing case - report nice ambiguity errors even in this case AtMostOneResult m ((tyconSearch +++ modulSearch +++ modulSearchFailed()) |?> (fun tcrefs -> CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, genOk, rangeOfLid lid))) | _ -> // failing case - report nice ambiguity errors even in this case AtMostOneResult m ((tyconSearch +++ modulSearch +++ modulSearchFailed()) |?> (fun tcrefs -> CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, genOk, rangeOfLid lid))) let ResolveTypeLongIdent sink (ncenv:NameResolver) occurence fullyQualified nenv ad (lid: Ident list) staticResInfo genOk = let m = rangeOfLid lid let res = ResolveTypeLongIdentPrim ncenv fullyQualified m nenv ad lid staticResInfo genOk // Register the result as a name resolution match res with | Result (resInfo,tcref) -> ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.UseInType, ad,resInfo,(fun () -> true)); let item = Item.Types(tcref.DisplayName,[FreshenTycon ncenv m tcref]) CallNameResolutionSink sink (m,nenv,item,item,occurence,nenv.eDisplayEnv,ad) | _ -> () res |?> snd //------------------------------------------------------------------------- // Resolve F#/IL "." syntax in records etc. //------------------------------------------------------------------------- let rec ResolveFieldInModuleOrNamespace (ncenv:NameResolver) nenv ad (resInfo:ResolutionInfo) depth m (modref: ModuleOrNamespaceRef) _mty (lid: Ident list) = let typeNameResInfo = TypeNameResolutionInfo.Default match lid with | id::rest -> let m = unionRanges m id.idRange let error = raze (UndefinedName(depth,FSComp.SR.undefinedNameRecordLabelOrNamespace,id,[])) // search for module-qualified names, e.g. { Microsoft.FSharp.Core.contents = 1 } let modulScopedFieldNames = match TryFindTypeWithRecdField modref id with | Some tycon when IsEntityAccessible ad (modref.MkNestedTyconRef tycon) -> success(modref.MkNestedRecdFieldRef tycon id, rest) | _ -> error // search for type-qualified names, e.g. { Microsoft.FSharp.Core.Ref.contents = 1 } let tyconSearch = match lid with | _tn:: rest when nonNil rest -> let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref) let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty,tcref)) let tyconSearch = ResolveLongIdentInTyconRefs ncenv nenv LookupKind.RecdField (depth+1) m ad rest typeNameResInfo id.idRange tcrefs // choose only fields let tyconSearch = tyconSearch |?> List.choose (function (_,Item.RecdField(RecdFieldInfo(_,rfref)),rest) -> Some(rfref,rest) | _ -> None) tyconSearch | _ -> NoResultsOrUsefulErrors // search for names in nested modules, e.g. { Microsoft.FSharp.Core.contents = 1 } let modulSearch = if nonNil rest then match modref.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName.TryFind(id.idText) with | Some(AccessibleEntityRef ad modref submodref) -> let resInfo = resInfo.AddEntity(id.idRange,submodref) ResolveFieldInModuleOrNamespace ncenv nenv ad resInfo (depth+1) m submodref submodref.ModuleOrNamespaceType rest | _ -> error else error AtMostOneResult m (OneResult modulScopedFieldNames +++ tyconSearch +++ OneResult modulSearch) | [] -> error(InternalError("ResolveFieldInModuleOrNamespace",m)) let ResolveField (ncenv:NameResolver) nenv ad typ (mp,id:Ident) = let typeNameResInfo = TypeNameResolutionInfo.Default let g = ncenv.g let m = id.idRange match mp with | [] -> if isAppTy g typ then match ncenv.InfoReader.TryFindRecdOrClassFieldInfoOfType(id.idText,m,typ) with | Some (RecdFieldInfo(_,rfref)) -> [rfref] | None -> error(Error(FSComp.SR.nrTypeDoesNotContainSuchField((NicePrint.minimalStringOfType nenv.eDisplayEnv typ), id.idText),m)) else let frefs = try Map.find id.idText nenv.eFieldLabels with :? KeyNotFoundException -> error (UndefinedName(0,FSComp.SR.undefinedNameRecordLabel,id,NameMap.domainL nenv.eFieldLabels)) // Eliminate duplicates arising from multiple 'open' let frefs = frefs |> ListSet.setify (fun fref1 fref2 -> tyconRefEq g fref1.TyconRef fref2.TyconRef) frefs | _ -> let lid = (mp@[id]) let tyconSearch ad = match lid with | tn:: (_ :: _ as rest) -> let m = tn.idRange let tcrefs = LookupTypeNameInEnvNoArity OpenQualified tn.idText nenv let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty,tcref)) let tyconSearch = ResolveLongIdentInTyconRefs ncenv nenv LookupKind.RecdField 1 m ad rest typeNameResInfo tn.idRange tcrefs // choose only fields let tyconSearch = tyconSearch |?> List.choose (function (_,Item.RecdField(RecdFieldInfo(_,rfref)),rest) -> Some(rfref,rest) | _ -> None) tyconSearch | _ -> NoResultsOrUsefulErrors let modulSearch ad = ResolveLongIndentAsModuleOrNamespaceThen OpenQualified nenv ad lid (ResolveFieldInModuleOrNamespace ncenv nenv ad) let item,rest = ForceRaise (AtMostOneResult m (modulSearch ad +++ tyconSearch ad +++ modulSearch AccessibleFromSomeFSharpCode +++ tyconSearch AccessibleFromSomeFSharpCode)) if nonNil rest then errorR(Error(FSComp.SR.nrInvalidFieldLabel(),(List.head rest).idRange)); [item] /// Generate a new reference to a record field with a fresh type instantiation let FreshenRecdFieldRef (ncenv:NameResolver) m (rfref:RecdFieldRef) = Item.RecdField(RecdFieldInfo(ncenv.InstantiationGenerator m (rfref.Tycon.Typars m), rfref)) /// Resolve F#/IL "." syntax in expressions (2). /// We have an expr. on the left, and we do an access, e.g. /// (f obj).field or (f obj).meth. The basic rule is that if l-r type /// inference has determined the outer type then we can proceed in a simple fashion. The exception /// to the rule is for field types, which applies if l-r was insufficient to /// determine any valid members // // QUERY (instantiationGenerator cleanup): it would be really nice not to flow instantiationGenerator to here. let private ResolveExprDotLongIdent (ncenv:NameResolver) m ad nenv typ lid findFlag = let typeNameResInfo = TypeNameResolutionInfo.Default let adhoctDotSearchAccessible = AtMostOneResult m (ResolveLongIdentInTypePrim ncenv nenv LookupKind.Expr ResolutionInfo.Empty 1 m ad lid findFlag typeNameResInfo typ) match adhoctDotSearchAccessible with | Exception _ -> // If the dot is not resolved by adhoc overloading then look for a record field // that can resolve the name. let dotFieldIdSearch = match lid with // A unique record label access, e.g expr.field | id::rest when nenv.eFieldLabels.ContainsKey(id.idText) -> match nenv.eFieldLabels.[id.idText] with | [] -> NoResultsOrUsefulErrors | rfref :: _ -> // NOTE (instantiationGenerator cleanup): we need to freshen here because we don't know the type. // But perhaps the caller should freshen?? let item = FreshenRecdFieldRef ncenv m rfref OneSuccess (ResolutionInfo.Empty,item,rest) | _ -> NoResultsOrUsefulErrors let search = dotFieldIdSearch match AtMostOneResult m search with | Result _ as res -> ForceRaise res | _ -> let adhoctDotSearchAll = ResolveLongIdentInTypePrim ncenv nenv LookupKind.Expr ResolutionInfo.Empty 1 m AccessibleFromSomeFSharpCode lid findFlag typeNameResInfo typ ForceRaise (AtMostOneResult m (search +++ adhoctDotSearchAll)) | Result _ -> ForceRaise adhoctDotSearchAccessible let ComputeItemRange wholem (lid: Ident list) rest = match rest with | [] -> wholem | _ -> let ids = List.take (max 0 (lid.Length - rest.Length)) lid match ids with | [] -> wholem | _ -> rangeOfLid ids /// Filters method groups that will be sent to Visual Studio IntelliSense /// to include only static/instance members let filterMethodGroups (ncenv:NameResolver) itemRange item staticOnly = match item with | Item.MethodGroup(nm, minfos) -> let minfos = minfos |> List.filter (fun minfo -> staticOnly = (minfo.GetObjArgTypes(ncenv.amap, itemRange, minfo.FormalMethodInst) |> isNil)) Item.MethodGroup(nm, minfos) | item -> item let needsOverloadResolution namedItem = match namedItem with | Item.MethodGroup(_,_::_::_) | Item.CtorGroup(_,_::_::_) | Item.Property(_,_::_::_) -> true | _ -> false type IfOverloadResolutionFails = IfOverloadResolutionFails of (unit -> unit) // Specifies if overload resolution needs to notify Language Service of overload resolution [] type AfterOverloadResolution = // Notfication is not needed | DoNothing // Notfy the sink | SendToSink of (Item -> unit) * IfOverloadResolutionFails // Overload resolution failure fallback // Find override among given overrides and notify the sink // 'Item' contains the candidate overrides. | ReplaceWithOverrideAndSendToSink of Item * (Item -> unit) * IfOverloadResolutionFails // Overload resolution failure fallback /// Called for 'TypeName.Bar' - for VS IntelliSense, we can filter out instance members from method groups let ResolveLongIdentAsExprAndComputeRange (sink:TcResultsSink) (ncenv:NameResolver) wholem ad nenv typeNameResInfo lid = let item,rest = ResolveExprLongIdent sink ncenv wholem ad nenv typeNameResInfo lid let itemRange = ComputeItemRange wholem lid rest // Record the precise resolution of the field for intellisense let item = filterMethodGroups ncenv itemRange item true let callSink refinedItem = CallNameResolutionSink sink (itemRange, nenv, refinedItem, item, ItemOccurence.Use, nenv.DisplayEnv, ad); let afterOverloadResolution = match sink.CurrentSink with | None -> AfterOverloadResolution.DoNothing | Some _ -> if needsOverloadResolution item then AfterOverloadResolution.SendToSink(callSink, (fun () -> callSink item) |> IfOverloadResolutionFails) else callSink item AfterOverloadResolution.DoNothing item, itemRange, rest, afterOverloadResolution let (|NonOverridable|_|) namedItem = match namedItem with | Item.MethodGroup(_,minfos) when minfos |> List.exists(fun minfo -> minfo.IsVirtual || minfo.IsAbstract) -> None | Item.Property(_,pinfos) when pinfos |> List.exists(fun pinfo -> pinfo.IsVirtualProperty) -> None | _ -> Some () /// Called for 'expression.Bar' - for VS IntelliSense, we can filter out static members from method groups /// Also called for 'GenericType.Bar' - for VS IntelliSense, we can filter out non-static members from method groups let ResolveExprDotLongIdentAndComputeRange (sink:TcResultsSink) (ncenv:NameResolver) wholem ad nenv typ lid findFlag thisIsActuallyATyAppNotAnExpr = let resolveExpr findFlag = let resInfo,item,rest = ResolveExprDotLongIdent ncenv wholem ad nenv typ lid findFlag let itemRange = ComputeItemRange wholem lid rest resInfo,item,rest,itemRange // "true" resolution let resInfo,item,rest,itemRange = resolveExpr findFlag ResolutionInfo.SendToSink(sink,ncenv,nenv,ItemOccurence.Use,ad,resInfo,(fun () -> CheckAllTyparsInferrable ncenv.amap itemRange item)); // Record the precise resolution of the field for intellisense/goto definition let afterOverloadResolution = match sink.CurrentSink with | None -> AfterOverloadResolution.DoNothing // do not retypecheck if nobody listens | Some _ -> // resolution for goto definition let unrefinedItem,itemRange,overrides = match findFlag, item with | FindMemberFlag.PreferOverrides, _ | _, NonOverridable() -> item,itemRange,false | FindMemberFlag.IgnoreOverrides,_ -> let _,item,_,itemRange = resolveExpr FindMemberFlag.PreferOverrides item, itemRange,true let sendToSink refinedItem = let staticOnly = thisIsActuallyATyAppNotAnExpr let refinedItem = filterMethodGroups ncenv itemRange refinedItem staticOnly let unrefinedItem = filterMethodGroups ncenv itemRange unrefinedItem staticOnly CallNameResolutionSink sink (itemRange, nenv, refinedItem, unrefinedItem, ItemOccurence.Use, nenv.DisplayEnv, ad) match overrides,needsOverloadResolution unrefinedItem with | false, true -> AfterOverloadResolution.SendToSink(sendToSink, IfOverloadResolutionFails(fun () -> sendToSink unrefinedItem)) | true, true -> AfterOverloadResolution.ReplaceWithOverrideAndSendToSink(unrefinedItem,sendToSink, IfOverloadResolutionFails(fun () -> sendToSink unrefinedItem)) | _ , false -> sendToSink unrefinedItem AfterOverloadResolution.DoNothing item, itemRange, rest, afterOverloadResolution //------------------------------------------------------------------------- // Given an nenv resolve partial paths to sets of names, used by interactive // environments (Visual Studio) // // ptc = partial type check // ptci = partial type check item // // There are some inefficiencies in this code - e.g. we often // create potentially large lists of methods/fields/properties and then // immiediately List.filter them. We also use lots of "map/concats". Dosen't // seem to hit the interactive experience too badly though. //------------------------------------------------------------------------- let FakeInstantiationGenerator (_m:range) gps = List.map mkTyparTy gps // note: making local refs is ok since it is only used by VS let ItemForModuleOrNamespaceRef v = Item.ModuleOrNamespaces [v] let ItemForPropInfo (pinfo:PropInfo) = Item.Property (pinfo.PropertyName, [pinfo]) let ItemForMethInfos (nm,minfos) = MakeMethGroup(nm, minfos) let IsTyconUnseenObsoleteSpec ad g m (x:TyconRef) allowObsolete = not (IsEntityAccessible ad x) || ((not allowObsolete) && (if x.IsILTycon then CheckILAttributesForUnseen g x.ILTyconRawMetadata.CustomAttrs m else CheckFSharpAttributesForUnseen g x.Attribs m)) let IsTyconUnseen ad g m (x:TyconRef) = IsTyconUnseenObsoleteSpec ad g m x false let IsValUnseen ad g m (v:ValRef) = not (IsValAccessible ad v) || v.IsCompilerGenerated || v.Deref.IsClassConstructor || CheckFSharpAttributesForUnseen g v.Attribs m let IsUnionCaseUnseen ad g m (ucref:UnionCaseRef) = not (IsUnionCaseAccessible ad ucref) || IsTyconUnseen ad g m ucref.TyconRef || CheckFSharpAttributesForUnseen g ucref.Attribs m let ItemIsUnseen ad g m item = match item with | Item.Value x -> IsValUnseen ad g m x | Item.UnionCase x -> IsUnionCaseUnseen ad g m x.UnionCaseRef | Item.ExnCase x -> IsTyconUnseen ad g m x | _ -> false let ItemOfTyconRef ncenv m (x:TyconRef) = Item.Types (x.DisplayName,[FreshenTycon ncenv m x]) let ItemOfTy g x = let nm = if isAppTy g x then (tcrefOfAppTy g x).DisplayName else "?" Item.Types (nm,[x]) // Filter out 'PrivateImplementationDetail' classes let IsInterestingModuleName nm = String.length nm >= 1 && String.sub nm 0 1 <> "<" let rec PartialResolveLookupInModuleOrNamespaceAsModuleOrNamespaceThen f plid (modref:ModuleOrNamespaceRef) = let mty = modref.ModuleOrNamespaceType match plid with | [] -> f modref | id:: rest -> match mty.ModulesAndNamespacesByDemangledName.TryFind(id) with | Some mty -> PartialResolveLookupInModuleOrNamespaceAsModuleOrNamespaceThen f rest (modref.MkNestedTyconRef mty) | None -> [] let PartialResolveLongIndentAsModuleOrNamespaceThen (nenv:NameResolutionEnv) plid f = match plid with | id:: rest -> match Map.tryFind id nenv.eModulesAndNamespaces with | Some modrefs -> List.collect (PartialResolveLookupInModuleOrNamespaceAsModuleOrNamespaceThen f rest) modrefs | None -> [] | [] -> [] /// returns fields for the given class or record let ResolveRecordOrClassFieldsOfType (ncenv: NameResolver) m ad typ statics = GetRecordOrClassFieldsOfType ncenv.InfoReader (None,ad) m typ |> List.filter (fun rfref -> rfref.IsStatic = statics && IsFieldInfoAccessible ad rfref) |> List.map Item.RecdField let ResolveCompletionsInType (ncenv: NameResolver) nenv isApplicableMeth m ad statics typ = let g = ncenv.g let amap = ncenv.amap let rfinfos = GetRecordOrClassFieldsOfType ncenv.InfoReader (None,ad) m typ |> List.filter (fun rfref -> rfref.IsStatic = statics && IsFieldInfoAccessible ad rfref) let ucinfos = if statics && isAppTy g typ then let tc,tinst = destAppTy g typ tc.UnionCasesAsRefList |> List.filter (IsUnionCaseUnseen ad g m >> not) |> List.map (fun ucref -> Item.UnionCase(UnionCaseInfo(tinst,ucref))) else [] let einfos = ncenv.InfoReader.GetEventInfosOfType(None,ad,m,typ) |> List.filter (fun x -> IsStandardEventInfo ncenv.InfoReader m ad x && x.IsStatic = statics) let nestedTypes = if statics then typ |> GetNestedTypesOfType (ad, ncenv, None, TypeNameResolutionStaticArgsInfo.Indefinite, false, m) else [] let finfos = ncenv.InfoReader.GetILFieldInfosOfType(None,ad,m,typ) |> List.filter (fun x -> not x.IsSpecialName && x.IsStatic = statics && IsILFieldInfoAccessible g amap m ad x) let pinfosIncludingUnseen = AllPropInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (None,ad) PreferOverrides m typ |> List.filter (fun x -> x.IsStatic = statics && IsPropInfoAccessible g amap m ad x) // Exclude get_ and set_ methods accessed by properties let pinfoMethNames = (pinfosIncludingUnseen |> List.filter (fun pinfo -> pinfo.HasGetter) |> List.map (fun pinfo -> pinfo.GetterMethod.LogicalName)) @ (pinfosIncludingUnseen |> List.filter (fun pinfo -> pinfo.HasSetter) |> List.map (fun pinfo -> pinfo.SetterMethod.LogicalName)) let einfoMethNames = [ for einfo in einfos do let delegateType = einfo.GetDelegateType(amap,m) let (SigOfFunctionForDelegate(invokeMethInfo,_,_,_)) = GetSigOfFunctionForDelegate ncenv.InfoReader delegateType m ad // Only events with void return types are suppressed in intellisense. if slotSigHasVoidReturnTy (invokeMethInfo.GetSlotSig(amap, m)) then yield einfo.GetAddMethod().DisplayName yield einfo.GetRemoveMethod().DisplayName ] let suppressedMethNames = Zset.ofList String.order (pinfoMethNames @ einfoMethNames) let pinfos = pinfosIncludingUnseen |> List.filter (fun x -> not (PropInfoIsUnseen m x)) let minfoFilter (minfo:MethInfo) = // Only show the Finalize, MemberwiseClose etc. methods on System.Object for values whose static type really is // System.Object. Few of these are typically used from F#. // // Don't show GetHashCode or Equals for F# types that admit equality as an abnormal operation let isUnseenDueToBasicObjRules = not (isObjTy g typ) && match minfo.LogicalName with | "GetType" -> false | "GetHashCode" -> not (Augment.TypeDefinitelyHasEquality g typ) | "ToString" -> false | "Equals" -> not (minfo.IsInstance && Augment.TypeDefinitelyHasEquality g typ) | _ -> isObjTy g minfo.EnclosingType let result = not isUnseenDueToBasicObjRules && not minfo.IsInstance = statics && IsMethInfoAccessible amap m ad minfo && not (MethInfoIsUnseen g m typ minfo) && not minfo.IsConstructor && not minfo.IsClassConstructor && not (minfo.LogicalName = ".cctor") && not (minfo.LogicalName = ".ctor") && isApplicableMeth minfo typ && not (suppressedMethNames.Contains minfo.LogicalName) result let pinfoItems = pinfos |> List.map (fun pinfo -> DecodeFSharpEvent [pinfo] ad g ncenv m) |> List.filter (fun pinfo->pinfo.IsSome) |> List.map (fun pinfo->pinfo.Value) let addersAndRemovers = pinfoItems |> List.map (function Item.Event(FSEvent(_,_,addValRef,removeValRef)) -> [addValRef.LogicalName;removeValRef.LogicalName] | _ -> []) |> List.concat // REVIEW: add a name filter here in the common cases? let minfos = AllMethInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (None,ad) PreferOverrides m typ |> List.filter minfoFilter |> List.filter (fun minfo -> not(addersAndRemovers|>List.exists (fun ar-> ar = minfo.LogicalName))) // Partition methods into overload sets let rec partitionl (l:MethInfo list) acc = match l with | [] -> acc | h::t -> let nm = h.LogicalName partitionl t (NameMultiMap.add nm h acc) // Build the results ucinfos @ List.map Item.RecdField rfinfos @ pinfoItems @ List.map Item.ILField finfos @ List.map Item.Event einfos @ List.map (ItemOfTy g) nestedTypes @ List.map ItemForMethInfos (NameMap.toList (partitionl minfos Map.empty)) let rec ResolvePartialLongIdentInType (ncenv: NameResolver) nenv isApplicableMeth m ad statics plid typ = let g = ncenv.g let amap = ncenv.amap match plid with | [] -> ResolveCompletionsInType ncenv nenv isApplicableMeth m ad statics typ | id :: rest -> let rfinfos = GetRecordOrClassFieldsOfType ncenv.InfoReader (None,ad) m typ |> List.filter (fun fref -> IsRecdFieldAccessible ad fref.RecdFieldRef) |> List.filter (fun fref -> fref.RecdField.IsStatic = statics) let nestedTypes = typ |> GetNestedTypesOfType (ad, ncenv, Some id, TypeNameResolutionStaticArgsInfo.Indefinite, false, m) // e.g. .. (rfinfos |> List.filter (fun x -> x.Name = id) |> List.collect (fun x -> x.FieldType |> ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest)) @ // e.g. .. let FullTypeOfPinfo(pinfo:PropInfo) = let rty = pinfo.GetPropertyType(amap,m) let rty = if pinfo.IsIndexer then mkTupledTy g (pinfo.GetParamTypes(amap, m)) --> rty else rty rty (typ |> AllPropInfosOfTypeInScope ncenv.InfoReader nenv.eExtensionMembers (Some id,ad) IgnoreOverrides m |> List.filter (fun x -> x.IsStatic = statics) |> List.filter (IsPropInfoAccessible g amap m ad) |> List.collect (fun pinfo -> (FullTypeOfPinfo pinfo) |> ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest)) @ // e.g. .. (ncenv.InfoReader.GetEventInfosOfType(Some id,ad,m,typ) |> List.collect (PropTypOfEventInfo ncenv.InfoReader m ad >> ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest)) @ // nested types! (nestedTypes |> List.collect (ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad statics rest)) @ // e.g. .. (ncenv.InfoReader.GetILFieldInfosOfType(Some id,ad,m,typ) |> List.filter (fun x -> not x.IsSpecialName && x.IsStatic = statics && IsILFieldInfoAccessible g amap m ad x) |> List.collect (fun x -> x.FieldType(amap,m) |> ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest)) let InfosForTyconConstructors (ncenv:NameResolver) m ad (tcref:TyconRef) = let g = ncenv.g let amap = ncenv.amap // Don't show constructors for type abbreviations. See FSharp 1.0 bug 2881 if tcref.IsTypeAbbrev then [] else let typ = FreshenTycon ncenv m tcref match ResolveObjectConstructor ncenv (DisplayEnv.Empty g) m ad typ with | Result item -> match item with | Item.FakeInterfaceCtor _ -> [] | Item.CtorGroup(nm,ctorInfos) -> let ctors = ctorInfos |> List.filter (IsMethInfoAccessible amap m ad) |> List.filter (MethInfoIsUnseen g m typ >> not) match ctors with | [] -> [] | _ -> [MakeCtorGroup(nm,ctors)] | item -> [item] | Exception _ -> [] /// import.fs creates somewhat fake modules for nested members of types (so that /// types never contain other types) let notFakeContainerModule tyconNames nm = not (Set.contains nm tyconNames) /// Check is a namesapce or module contains something accessible let rec private EntityRefContainsSomethingAccessible (ncenv: NameResolver) m ad (modref:ModuleOrNamespaceRef) = let g = ncenv.g let mty = modref.ModuleOrNamespaceType // Search the values in the module for an accessible value (mty.AllValsAndMembers |> Seq.exists (fun v -> // This may explore assemblies that are not in the reference set, // e.g. for extension members that extend a type not in the reference set. // In this case assume it is accessible. The user may later explore this module // but will not see the extension members anyway. // // Note: this is the only use of protectAssemblyExplorationNoReraise. // REVIEW: consider changing this to protectAssemblyExploration. We shouldn't need // to catch arbitrary exceptions here. protectAssemblyExplorationNoReraise true false (fun () -> let vref = mkNestedValRef modref v not vref.IsCompilerGenerated && not (IsValUnseen ad g m vref) && (vref.IsExtensionMember || vref.MemberInfo.IsNone)))) || // Search the types in the namespace/module for an accessible tycon (mty.AllEntities |> QueueList.exists (fun tc -> not tc.IsModuleOrNamespace && not (IsTyconUnseen ad g m (modref.MkNestedTyconRef tc)))) || // Search the sub-modules of the namespace/modulefor something accessible (mty.ModulesAndNamespacesByDemangledName |> NameMap.exists (fun _ submod -> let submodref = modref.MkNestedTyconRef submod EntityRefContainsSomethingAccessible ncenv m ad submodref)) let rec ResolvePartialLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv isApplicableMeth m ad (modref:ModuleOrNamespaceRef) plid allowObsolete = let g = ncenv.g let mty = modref.ModuleOrNamespaceType let tycons = mty.TypeDefinitions |> List.filter (fun tcref -> not (tcref.LogicalName.Contains(","))) |> List.filter (fun tycon -> not (IsTyconUnseen ad g m (modref.MkNestedTyconRef tycon))) let ilTyconNames = mty.TypesByAccessNames.Values |> Seq.toList |> List.choose (fun (tycon:Tycon) -> if tycon.IsILTycon then Some tycon.DisplayName else None) |> Set.ofSeq match plid with | [] -> // Collect up the accessible values in the module, excluding the members (mty.AllValsAndMembers |> Seq.toList |> List.choose (tryMkValRefInModRef modref) // if the assembly load set is incomplete and we get a None value here, then ignore the value |> List.filter (fun v -> v.MemberInfo.IsNone) |> List.filter (IsValUnseen ad g m >> not) |> List.map Item.Value) // Collect up the accessible discriminated union cases in the module @ (UnionCaseRefsInModuleOrNamespace modref |> List.filter (IsUnionCaseUnseen ad g m >> not) |> List.map GeneralizeUnionCaseRef |> List.map Item.UnionCase) // Collect up the accessible active patterns in the module @ (ActivePatternElemsOfModuleOrNamespace modref |> NameMap.range |> List.filter (fun apref -> apref.ActivePatternVal |> IsValUnseen ad g m |> not) |> List.map Item.ActivePatternCase) // Collect up the accessible F# exception declarations in the module @ (mty.ExceptionDefinitionsByDemangledName |> NameMap.range |> List.map modref.MkNestedTyconRef |> List.filter (IsTyconUnseen ad g m >> not) |> List.map Item.ExnCase) // Collect up the accessible sub-modules @ (mty.ModulesAndNamespacesByDemangledName |> NameMap.range |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> notFakeContainerModule ilTyconNames) |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> IsInterestingModuleName) |> List.map modref.MkNestedTyconRef |> List.filter (IsTyconUnseen ad g m >> not) |> List.filter (EntityRefContainsSomethingAccessible ncenv m ad) |> List.map ItemForModuleOrNamespaceRef) // Get all the types and .NET constructor groups accessible from here @ (tycons |> List.map (modref.MkNestedTyconRef >> ItemOfTyconRef ncenv m) ) @ (tycons |> List.map (modref.MkNestedTyconRef >> InfosForTyconConstructors ncenv m ad) |> List.concat) | id :: rest -> (match mty.ModulesAndNamespacesByDemangledName.TryFind(id) with | Some mspec when not (IsTyconUnseenObsoleteSpec ad g m (modref.MkNestedTyconRef mspec) allowObsolete) -> let allowObsolete = rest <> [] && allowObsolete ResolvePartialLongIdentInModuleOrNamespace ncenv nenv isApplicableMeth m ad (modref.MkNestedTyconRef mspec) rest allowObsolete | _ -> []) @ (LookupTypeNameInEntityNoArity m id modref.ModuleOrNamespaceType |> List.collect (fun tycon -> let tcref = modref.MkNestedTyconRef tycon if not (IsTyconUnseenObsoleteSpec ad g m tcref allowObsolete) then tcref |> generalizedTyconRef |> ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad true rest else [])) /// allowObsolete - specifies whether we should return obsolete types & modules /// as (no other obsolete items are returned) let rec ResolvePartialLongIdentPrim (ncenv: NameResolver) (nenv: NameResolutionEnv) isApplicableMeth fullyQualified m ad plid allowObsolete = let g = ncenv.g match plid with | id :: plid when id = "global" -> // this is deliberately not the mangled name ResolvePartialLongIdentPrim ncenv nenv isApplicableMeth FullyQualified m ad plid allowObsolete | [] -> let ilTyconNames = nenv.TyconsByAccessNames(fullyQualified).Values |> Seq.toList |> List.choose (fun tyconRef -> if tyconRef.IsILTycon then Some tyconRef.DisplayName else None) |> Set.ofSeq /// Include all the entries in the eUnqualifiedItems table. let unqualifiedItems = match fullyQualified with | FullyQualified -> [] | OpenQualified -> nenv.eUnqualifiedItems.Values |> Seq.toList |> List.filter (function Item.UnqualifiedType _ -> false | _ -> true) |> List.filter (ItemIsUnseen ad g m >> not) let activePatternItems = match fullyQualified with | FullyQualified -> [] | OpenQualified -> nenv.ePatItems |> NameMap.range |> List.filter (function Item.ActivePatternCase _v -> true | _ -> false) let moduleAndNamespaceItems = nenv.ModulesAndNamespaces(fullyQualified) |> NameMultiMap.range |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> IsInterestingModuleName ) |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> notFakeContainerModule ilTyconNames) |> List.filter (EntityRefContainsSomethingAccessible ncenv m ad) |> List.filter (IsTyconUnseen ad g m >> not) |> List.map ItemForModuleOrNamespaceRef let tycons = nenv.TyconsByDemangledNameAndArity(fullyQualified).Values |> Seq.toList |> List.filter (fun tcref -> not (tcref.LogicalName.Contains(","))) |> List.filter (fun tcref -> not tcref.IsExceptionDecl) |> List.filter (IsTyconUnseen ad g m >> not) |> List.map (ItemOfTyconRef ncenv m) // Get all the constructors accessible from here let constructors = nenv.TyconsByDemangledNameAndArity(fullyQualified).Values |> Seq.toList |> List.filter (IsTyconUnseen ad g m >> not) |> List.collect (InfosForTyconConstructors ncenv m ad) unqualifiedItems @ activePatternItems @ moduleAndNamespaceItems @ tycons @ constructors | id :: rest -> // Look in the namespaces 'id' let namespaces = PartialResolveLongIndentAsModuleOrNamespaceThen nenv [id] (fun modref -> let allowObsolete = rest <> [] && allowObsolete if EntityRefContainsSomethingAccessible ncenv m ad modref then ResolvePartialLongIdentInModuleOrNamespace ncenv nenv isApplicableMeth m ad modref rest allowObsolete else []) // Look for values called 'id' that accept the dot-notation let values,isItemVal = (if nenv.eUnqualifiedItems.ContainsKey(id) then // v.lookup : member of a value let v = nenv.eUnqualifiedItems.[id] match v with | Item.Value x -> let typ = x.Type let typ = if x.BaseOrThisInfo = CtorThisVal && isRefCellTy g typ then destRefCellTy g typ else typ (ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest typ),true | _ -> [],false else [],false) let staticSometingInType = [ if not isItemVal then // type.lookup : lookup a static something in a type for tcref in LookupTypeNameInEnvNoArity OpenQualified id nenv do let tcref = DerefAbbrevTyconRef_WORKAROUND ncenv tcref m let typ = FreshenTycon ncenv m tcref yield! ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad true rest typ ] namespaces @ values @ staticSometingInType let ResolvePartialLongIdent ncenv nenv isApplicableMeth m ad plid allowObsolete = ResolvePartialLongIdentPrim ncenv nenv isApplicableMeth OpenQualified m ad plid allowObsolete // REVIEW: has much in common with ResolvePartialLongIdentInModuleOrNamespace - probably they should be united let rec ResolvePartialLongIdentInModuleOrNamespaceForRecordFields (ncenv: NameResolver) nenv m ad (modref:ModuleOrNamespaceRef) plid allowObsolete = let g = ncenv.g let mty = modref.ModuleOrNamespaceType // get record type constructors let tycons = mty.TypeDefinitions |> List.filter (fun tcref -> not (tcref.LogicalName.Contains(","))) |> List.filter (fun tycon -> tycon.IsRecordTycon) |> List.filter (fun tycon -> not (IsTyconUnseen ad g m (modref.MkNestedTyconRef tycon))) let ilTyconNames = mty.TypesByAccessNames.Values |> Seq.toList |> List.choose (fun (tycon:Tycon) -> if tycon.IsILTycon then Some tycon.DisplayName else None) |> Set.ofSeq match plid with | [] -> // Collect up the accessible sub-modules (mty.ModulesAndNamespacesByDemangledName |> NameMap.range |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> notFakeContainerModule ilTyconNames) |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> IsInterestingModuleName) |> List.map modref.MkNestedTyconRef |> List.filter (IsTyconUnseen ad g m >> not) |> List.filter (EntityRefContainsSomethingAccessible ncenv m ad) |> List.map ItemForModuleOrNamespaceRef) // Collect all accessible record types @ (tycons |> List.map (modref.MkNestedTyconRef >> ItemOfTyconRef ncenv m) ) @ [ // accessible record fields for tycon in tycons do if IsEntityAccessible ad (modref.MkNestedTyconRef tycon) then let ttype = FreshenTycon ncenv m (modref.MkNestedTyconRef tycon) yield! GetRecordOrClassFieldsOfType ncenv.InfoReader (None, ad) m ttype |> List.map Item.RecdField ] | id :: rest -> (match mty.ModulesAndNamespacesByDemangledName.TryFind(id) with | Some mspec when not (IsTyconUnseenObsoleteSpec ad g m (modref.MkNestedTyconRef mspec) allowObsolete) -> let allowObsolete = rest <> [] && allowObsolete ResolvePartialLongIdentInModuleOrNamespaceForRecordFields ncenv nenv m ad (modref.MkNestedTyconRef mspec) rest allowObsolete | _ -> []) @ ( match rest with | [] -> // get all fields from the type named 'id' located in current modref let tycons = LookupTypeNameInEntityNoArity m id modref.ModuleOrNamespaceType tycons |> List.filter (fun tc -> tc.IsRecordTycon) |> List.collect (fun tycon -> let tcref = modref.MkNestedTyconRef tycon let ttype = FreshenTycon ncenv m tcref GetRecordOrClassFieldsOfType ncenv.InfoReader (None, ad) m ttype ) |> List.map Item.RecdField | _ -> [] ) /// allowObsolete - specifies whether we should return obsolete types & modules /// as (no other obsolete items are returned) let rec ResolvePartialLongIdentToClassOrRecdFields (ncenv: NameResolver) (nenv: NameResolutionEnv) m ad plid (allowObsolete : bool) = ResolvePartialLongIdentToClassOrRecdFieldsImpl ncenv nenv OpenQualified m ad plid allowObsolete and ResolvePartialLongIdentToClassOrRecdFieldsImpl (ncenv: NameResolver) (nenv: NameResolutionEnv) fullyQualified m ad plid allowObsolete = let g = ncenv.g match plid with | id :: plid when id = "global" -> // this is deliberately not the mangled name // dive deeper ResolvePartialLongIdentToClassOrRecdFieldsImpl ncenv nenv FullyQualified m ad plid allowObsolete | [] -> // empty plid - return namespaces\modules\record types\accessible fields let iltyconNames = nenv.TyconsByAccessNames(fullyQualified).Values |> Seq.toList |> List.choose (fun tyconRef -> if tyconRef.IsILTycon then Some tyconRef.DisplayName else None) |> Set.ofSeq let mods = nenv.ModulesAndNamespaces(fullyQualified) |> NameMultiMap.range |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> IsInterestingModuleName ) |> List.filter (fun x -> x.DemangledModuleOrNamespaceName |> notFakeContainerModule iltyconNames) |> List.filter (EntityRefContainsSomethingAccessible ncenv m ad) |> List.filter (IsTyconUnseen ad g m >> not) |> List.map ItemForModuleOrNamespaceRef let recdTyCons = nenv.TyconsByDemangledNameAndArity(fullyQualified).Values |> Seq.toList |> List.filter (fun tcref -> not (tcref.LogicalName.Contains(","))) |> List.filter (fun tcref -> tcref.IsRecordTycon) |> List.filter (IsTyconUnseen ad g m >> not) |> List.map (ItemOfTyconRef ncenv m) let recdFields = nenv.eFieldLabels |> Seq.collect (fun (KeyValue(_, v)) -> v) |> Seq.map (fun fref -> let typeInsts = fref.TyconRef.TyparsNoRange |> List.map (fun tyar -> tyar.AsType) Item.RecdField(RecdFieldInfo(typeInsts, fref)) ) |> List.ofSeq mods @ recdTyCons @ recdFields | id::rest -> // Get results let modsOrNs = PartialResolveLongIndentAsModuleOrNamespaceThen nenv [id] (fun modref -> let allowObsolete = rest <> [] && allowObsolete if EntityRefContainsSomethingAccessible ncenv m ad modref then ResolvePartialLongIdentInModuleOrNamespaceForRecordFields ncenv nenv m ad modref rest allowObsolete // obsolette?? else []) let qualifiedFields = match rest with | [] -> // get record types accessible in given nenv let tycons = LookupTypeNameInEnvNoArity OpenQualified id nenv tycons |> List.collect (fun tcref -> let ttype = FreshenTycon ncenv m tcref GetRecordOrClassFieldsOfType ncenv.InfoReader (None, ad) m ttype ) |> List.map Item.RecdField | _-> [] modsOrNs @ qualifiedFieldsfsharp-3.0.34/src/fsharp/FlatList.fs0000775000175000017500000002464412260314606016233 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities open System.Collections open System.Collections.Generic //------------------------------------------------------------------------- // Library: flat list (immutable arrays) //------------------------------------------------------------------------ #if FLAT_LIST_AS_ARRAY_STRUCT //#else [] type internal FlatList<'T> = val internal array : 'T[] internal new (arr: 'T[]) = { array = (match arr with null -> null | arr -> if arr.Length = 0 then null else arr) } member x.Item with get(n:int) = x.array.[n] member x.Length = match x.array with null -> 0 | arr -> arr.Length member x.IsEmpty = match x.array with null -> true | _ -> false static member Empty : FlatList<'T> = FlatList(null) interface IEnumerable<'T> with member x.GetEnumerator() : IEnumerator<'T> = match x.array with | null -> Seq.empty.GetEnumerator() | arr -> (arr :> IEnumerable<'T>).GetEnumerator() interface IEnumerable with member x.GetEnumerator() : IEnumerator = match x.array with | null -> (Seq.empty :> IEnumerable).GetEnumerator() | arr -> (arr :> IEnumerable).GetEnumerator() [] module internal FlatList = let empty<'T> = FlatList<'T>.Empty let collect (f: 'T -> FlatList<'T>) (x:FlatList<_>) = match x.array with | null -> FlatList.Empty | arr -> if arr.Length = 1 then f arr.[0] else FlatList(Array.map (fun x -> match (f x).array with null -> [| |] | arr -> arr) arr |> Array.concat) let exists f (x:FlatList<_>) = match x.array with | null -> false | arr -> Array.exists f arr let filter f (x:FlatList<_>) = match x.array with | null -> FlatList.Empty | arr -> FlatList(Array.filter f arr) let fold f acc (x:FlatList<_>) = match x.array with | null -> acc | arr -> Array.fold f acc arr let fold2 f acc (x:FlatList<_>) (y:FlatList<_>) = match x.array,y.array with | null,null -> acc | null,_ | _,null -> invalidArg "x" "mismatched list lengths" | arr1,arr2 -> Array.fold2 f acc arr1 arr2 let foldBack f (x:FlatList<_>) acc = match x.array with | null -> acc | arr -> Array.foldBack f arr acc let foldBack2 f (x:FlatList<_>) (y:FlatList<_>) acc = match x.array,y.array with | null,null -> acc | null,_ | _,null -> invalidArg "x" "mismatched list lengths" | arr1,arr2 -> Array.foldBack2 f arr1 arr2 acc let map2 f (x:FlatList<_>) (y:FlatList<_>) = match x.array,y.array with | null,null -> FlatList.Empty | null,_ | _,null -> invalidArg "x" "mismatched list lengths" | arr1,arr2 -> FlatList(Array.map2 f arr1 arr2) let forall f (x:FlatList<_>) = match x.array with | null -> true | arr -> Array.forall f arr let forall2 f (x1:FlatList<_>) (x2:FlatList<_>) = match x1.array, x2.array with | null,null -> true | null,_ | _,null -> invalidArg "x1" "mismatched list lengths" | arr1,arr2 -> Array.forall2 f arr1 arr2 let iter2 f (x1:FlatList<_>) (x2:FlatList<_>) = match x1.array, x2.array with | null,null -> () | null,_ | _,null -> invalidArg "x1" "mismatched list lengths" | arr1,arr2 -> Array.iter2 f arr1 arr2 let partition f (x:FlatList<_>) = match x.array with | null -> FlatList.Empty,FlatList.Empty | arr -> let arr1,arr2 = Array.partition f arr FlatList(arr1),FlatList(arr2) let (* inline *) sum (x:FlatList) = match x.array with | null -> 0 | arr -> Array.sum arr let (* inline *) sumBy (f: 'T -> int) (x:FlatList<'T>) = match x.array with | null -> 0 | arr -> Array.sumBy f arr let unzip (x:FlatList<_>) = match x.array with | null -> FlatList.Empty,FlatList.Empty | arr -> let arr1,arr2 = Array.unzip arr in FlatList(arr1),FlatList(arr2) let physicalEquality (x:FlatList<_>) (y:FlatList<_>) = LanguagePrimitives.PhysicalEquality x.array y.array let tryFind f (x:FlatList<_>) = match x.array with | null -> None | arr -> Array.tryFind f arr let concat (x:FlatList<_>) = match x.array with | null -> FlatList.Empty | arr -> FlatList(Array.concat arr) let isEmpty (x:FlatList<_>) = x.IsEmpty let one(x) = FlatList([| x |]) let toMap (x:FlatList<_>) = match x.array with null -> Map.empty | arr -> Map.ofArray arr let length (x:FlatList<_>) = x.Length let map f (x:FlatList<_>) = match x.array with | null -> FlatList.Empty | arr -> FlatList(Array.map f arr) let mapi f (x:FlatList<_>) = match x.array with | null -> FlatList.Empty | arr -> FlatList(Array.mapi f arr) let iter f (x:FlatList<_>) = match x.array with | null -> () | arr -> Array.iter f arr let iteri f (x:FlatList<_>) = match x.array with | null -> () | arr -> Array.iteri f arr let toList (x:FlatList<_>) = match x.array with | null -> [] | arr -> Array.toList arr let append(l1 : FlatList<'T>) (l2 : FlatList<'T>) = match l1.array, l2.array with | null,_ -> l2 | _,null -> l1 | arr1, arr2 -> FlatList(Array.append arr1 arr2) let ofSeq l = FlatList(Array.ofSeq l) let ofList l = match l with | [] -> FlatList.Empty | l -> FlatList(Array.ofList l) let init n f = if n = 0 then FlatList.Empty else FlatList(Array.init n f) let zip (x:FlatList<_>) (y:FlatList<_>) = match x.array,y.array with | null,null -> FlatList.Empty | null,_ | _,null -> invalidArg "x" "mismatched list lengths" | arr1,arr2 -> FlatList(Array.zip arr1 arr2) #endif #if FLAT_LIST_AS_LIST #else type internal FlatList<'T> ='T list [] module internal FlatList = let empty<'T> : 'T list = [] let collect (f: 'T -> FlatList<'T>) (x:FlatList<_>) = List.collect f x let exists f (x:FlatList<_>) = List.exists f x let filter f (x:FlatList<_>) = List.filter f x let fold f acc (x:FlatList<_>) = List.fold f acc x let fold2 f acc (x:FlatList<_>) (y:FlatList<_>) = List.fold2 f acc x y let foldBack f (x:FlatList<_>) acc = List.foldBack f x acc let foldBack2 f (x:FlatList<_>) (y:FlatList<_>) acc = List.foldBack2 f x y acc let map2 f (x:FlatList<_>) (y:FlatList<_>) = List.map2 f x y let forall f (x:FlatList<_>) = List.forall f x let forall2 f (x1:FlatList<_>) (x2:FlatList<_>) = List.forall2 f x1 x2 let iter2 f (x1:FlatList<_>) (x2:FlatList<_>) = List.iter2 f x1 x2 let partition f (x:FlatList<_>) = List.partition f x let (* inline *) sum (x:FlatList) = List.sum x let (* inline *) sumBy (f: 'T -> int) (x:FlatList<'T>) = List.sumBy f x let unzip (x:FlatList<_>) = List.unzip x let physicalEquality (x:FlatList<_>) (y:FlatList<_>) = (LanguagePrimitives.PhysicalEquality x y) let tryFind f (x:FlatList<_>) = List.tryFind f x let concat (x:FlatList<_>) = List.concat x let isEmpty (x:FlatList<_>) = List.isEmpty x let one(x) = [x] let toMap (x:FlatList<_>) = Map.ofList x let length (x:FlatList<_>) = List.length x let map f (x:FlatList<_>) = List.map f x let mapi f (x:FlatList<_>) = List.mapi f x let iter f (x:FlatList<_>) = List.iter f x let iteri f (x:FlatList<_>) = List.iteri f x let toList (x:FlatList<_>) = x let ofSeq (x:seq<_>) = List.ofSeq x let append(l1 : FlatList<'T>) (l2 : FlatList<'T>) = List.append l1 l2 let ofList(l) = l let init n f = List.init n f let zip (x:FlatList<_>) (y:FlatList<_>) = List.zip x y #endif #if FLAT_LIST_AS_ARRAY //#else type internal FlatList<'T> ='T array type internal FlatListEmpty<'T>() = // cache the empty array in a generic static field static let empty : 'T array = [| |] static member Empty : 'T array = empty [] module internal FlatList = let empty<'T> : 'T array = FlatListEmpty<'T>.Empty //let empty<'T> : 'T array = [| |] let collect (f: 'T -> FlatList<'T>) (x:FlatList<_>) = x |> Array.map f |> Array.concat let exists f x = Array.exists f x let filter f x = Array.filter f x let fold f acc x = Array.fold f acc x let fold2 f acc x y = Array.fold2 f acc x y let foldBack f x acc = Array.foldBack f x acc let foldBack2 f x y acc = Array.foldBack2 f x y acc let map2 f x y = Array.map2 f x y let forall f x = Array.forall f x let forall2 f x1 x2 = Array.forall2 f x1 x2 let iter2 f x1 x2 = Array.iter2 f x1 x2 let partition f x = Array.partition f x let (* inline *) sum (x:FlatList) = Array.sum x let (* inline *) sumBy (f: 'T -> int) (x:FlatList<'T>) = Array.sumBy f x let unzip x = Array.unzip x let physicalEquality (x:FlatList<_>) (y:FlatList<_>) = LanguagePrimitives.PhysicalEquality x y let tryFind f x = Array.tryFind f x let concat x = Array.concat x let isEmpty x = Array.isEmpty x let one x = [| x |] let toMap x = Map.ofArray x let length x = Array.length x let map f x = Array.map f x let mapi f x = Array.mapi f x let iter f x = Array.iter f x let iteri f x = Array.iteri f x let toList x = Array.toList x let append l1 l2 = Array.append l1 l2 let ofSeq l = Array.ofSeq l let ofList l = Array.ofList l let init n f = Array.init n f let zip x y = Array.zip x y #endif fsharp-3.0.34/src/fsharp/Salsa/0000775000175000017500000000000012260314606015205 5ustar chrischrisfsharp-3.0.34/src/fsharp/Salsa/InternalsVisibleTo.fs0000775000175000017500000000156612260314606021332 0ustar chrischrisnamespace Microsoft.FSharp open System.Reflection [] [] do() fsharp-3.0.34/src/fsharp/Salsa/VsMocks.fs0000775000175000017500000032453112260314606017137 0ustar chrischris(* Mocks of major Visual Studio interfaces. *) namespace Salsa open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.Shell open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.TextManager.Interop open Microsoft.VisualStudio.OLE.Interop open Microsoft.Build.BuildEngine open System.Diagnostics open Microsoft.Build.Execution open Microsoft.Build.Framework open System.Runtime.InteropServices open System open System.Collections.Generic module internal VsMocks = let private notimpl() = raise (new System.Exception("Not implemented")) let private ok = VSConstants.S_OK let private fail = VSConstants.E_FAIL let private impl1 fo next a = match fo with Some(f) -> match f a with | Some(r) -> r | _ -> next a | _ -> next a let private impl2 fo next a b = match fo with Some(f) -> match f a b with | Some(r) -> r | _ -> next a b | _ -> next a b let private impl3 fo next a b c= match fo with Some(f) -> match f a b c with | Some(r) -> r | _ -> next a b c | _ -> next a b c let private impl4 fo next a b c d= match fo with Some(f) -> match f a b c d with | Some(r) -> r | _ -> next a b c d | _ -> next a b c d let private uimpl fo next = match fo with Some(f) -> match f() with Some(r)->r | None -> next() | _ -> next() type IDelegable<'a> = interface abstract SetInner: 'a->unit abstract GetInner: unit->'a end type VSITEMID=int32 type VsFileChangeEx() = let fileToEvents = new Dictionary() let Canonicalize (filename:string) = Internal.Utilities.FileSystem.Path.SafeGetFullPath(filename) member c.AddedFile(file) = // printfn "VsMocks.VsFileChangeEx: Added file %s " file c.SomehowModifiedFile(file, uint32 _VSFILECHANGEFLAGS.VSFILECHG_Add) member c.DeletedFile(file) = // printfn "VsMocks.VsFileChangeEx: Deleted file %s " file c.SomehowModifiedFile(file, uint32 _VSFILECHANGEFLAGS.VSFILECHG_Del) member c.ChangedFile(file) = // printfn "VsMocks.VsFileChangeEx: Changed file %s " file c.SomehowModifiedFile(file, uint32 _VSFILECHANGEFLAGS.VSFILECHG_Time) member c.SomehowModifiedFile(file, how) = let file = Canonicalize file let CallFilesChanged(fce:IVsFileChangeEvents) = // printfn "VsMocks.VsFileChangeEx: Calling FilesChanged callback for %s, how = %A " file how fce.FilesChanged(1u,[|file|],[|how|])|>ignore match fileToEvents.TryGetValue(file) with | true, events -> events |> List.iter CallFilesChanged | false, _ -> () interface IVsFileChangeEx with member fc.AdviseFileChange(pszMkDocument,grfFilter,pFCE,vsCookie) = let pszMkDocument = Canonicalize pszMkDocument // printfn "VsMocks.VsFileChangeEx: Advise %s " pszMkDocument match fileToEvents.TryGetValue(pszMkDocument) with | true, events -> fileToEvents.[pszMkDocument] <- pFCE :: events | false, _ -> fileToEvents.Add(pszMkDocument, [pFCE]) vsCookie <- 0u ok member fc.UnadviseFileChange(vsCookie) = // printfn "VsMocks.VsFileChangeEx: Unadvise %d " vsCookie ok member fc.SyncFile(pszMkDocument) = notimpl() member fc.IgnoreFile(vsCookie, pszMkDocument, fIgnore) = notimpl() member fc.AdviseDirChange(pszDir, fWatchSubDir, pFCE,vsCookie) = notimpl() member fc.UnadviseDirChange(vsCookie) = notimpl() /// Mockable versions of various VS interfaces. Use optional function parameters /// so that we don't have to specify all of them. type Vs() = static let FSharpProjectGuid = new Guid(Microsoft.VisualStudio.FSharp.ProjectSystem.GuidList.guidFSharpProjectFactoryString) static member MakeTextView() = let userData = new Dictionary() {new IVsTextView with member tv.Initialize(pBuffer, hwndParent, initFlags, pInitView) = notimpl() member tv.CloseView() = notimpl() member tv.GetCaretPos(piLine, piColumn) = notimpl() member tv.SetCaretPos(iLine, iColumn) = notimpl() member tv.GetSelectionSpan(pSpan) = notimpl() member tv.GetSelection(piAnchorLine, piAnchorCol, piEndLine, piEndCol) = notimpl() member tv.SetSelection(iAnchorLine, iAnchorCol, iEndLine, iEndCol) = notimpl() member tv.GetSelectionMode() = notimpl() member tv.SetSelectionMode(iSelMode) = notimpl() member tv.ClearSelection(fMoveToAnchor) = notimpl() member tv.CenterLines(iTopLine, iCount) = notimpl() member tv.GetSelectedText(pbstrText) = notimpl() member tv.GetSelectionDataObject(ppIDataObject) = notimpl() member tv.GetTextStream(iTopLine, iTopCol, iBottomLine, iBottomCol, pbstrText) = notimpl() member tv.SetBuffer(pBuffer) = notimpl() member tv.GetWindowHandle() = notimpl() member tv.GetScrollInfo(iBar, piMinUnit, piMaxUnit, piVisibleUnits, piFirstVisibleUnit) = notimpl() member tv.SetScrollPosition(iBar, iFirstVisibleUnit) = notimpl() member tv.AddCommandFilter(pNewCmdTarg, ppNextCmdTarg) = notimpl() member tv.RemoveCommandFilter(pCmdTarg) = notimpl() member tv.UpdateCompletionStatus(pCompSet, dwFlags) = notimpl() member tv.UpdateTipWindow(pTipWindow, dwFlags) = notimpl() member tv.GetWordExtent(iLine, iCol, dwFlags, pSpan) = notimpl() member tv.RestrictViewRange(iMinLine, iMaxLine, pClient) = notimpl() member tv.ReplaceTextOnLine(iLine, iStartCol, iCharsToReplace, pszNewText, iNewLen) = notimpl() member tv.GetLineAndColumn(iPos, piLine, piIndex) = notimpl() member tv.GetNearestPosition(iLine, iCol, piPos, piVirtualSpaces) = notimpl() member tv.UpdateViewFrameCaption() = notimpl() member tv.CenterColumns(iLine, iLeftCol, iColCount) = notimpl() member tv.EnsureSpanVisible(span) = notimpl() member tv.PositionCaretForEditing(iLine, cIndentLevels) = notimpl() member tv.GetPointOfLineColumn(iLine, iCol, ppt) = notimpl() member tv.GetLineHeight(piLineHeight) = notimpl() member tv.HighlightMatchingBrace(dwFlags, cSpans, rgBaseSpans) = notimpl() member tv.SendExplicitFocus() = notimpl() member tv.SetTopLine(iBaseLine) = notimpl() member tv.GetBuffer(ppbuffer) = notimpl() interface IVsLayeredTextView with member ltv.GetSelectedAtom(dwFlags, ppunkAtom) = notimpl() member ltv.GetRelativeSelectionState(dwFlags, pReferenceLayer, pSelState) = notimpl() member ltv.SetRelativeSelectionState(dwFlags, pReferenceLayer, pSelState) = notimpl() member ltv.GetTopmostLayer(ppLayer) = notimpl() interface IVsUserData with member x.SetData(guid,obj) = if userData.ContainsKey(guid) then userData.Remove(guid) |> ignore match obj with | null -> () | _ -> userData.Add(guid,obj) |> ignore VSConstants.S_OK member x.GetData(guid,obj) = if userData.ContainsKey(guid) then obj <- userData.[guid] else obj <- null VSConstants.S_OK } static member VsUserContext(?addAttribute) = { new IVsUserContext with member this.AddAttribute (usage,key,value) = match addAttribute with | Some f -> f (usage,key,value) | None -> notimpl() member this.AddSubcontext(_,_,_) = notimpl() member this.AdviseUpdate(_,_) = notimpl() member this.CountAttributes(_,_,_) = notimpl() member this.RemoveAttribute(_,_) = notimpl() member this.RemoveSubcontext _ = notimpl() member this.GetAttribute(_,_,_,_,_) = notimpl() member this.CountSubcontexts _ = notimpl() member this.GetSubcontext(_,_) = notimpl() member this.IsDirty _ = notimpl() member this.SetDirty _ = notimpl() member this.Update () = notimpl() member this.UnadviseUpdate _ = notimpl() member this.GetAttrUsage(_,_,_) = notimpl() member this.RemoveAllSubcontext () = notimpl() member this.GetPriority _ = notimpl() member this.RemoveAttributeIncludeChildren(_,_) = notimpl() member this.GetAttributePri(_,_,_,_,_,_) = notimpl() } static member DelegateTextView(oldtv:IVsTextView, ?getBuffer, ?getScrollInfo, ?getTopmostLayer) = let inner:Ref = ref oldtv {new IVsTextView with member tv.Initialize(pBuffer, hwndParent, initFlags, pInitView) = (!inner).Initialize(pBuffer, hwndParent, initFlags, pInitView) member tv.CloseView() = (!inner).CloseView() member tv.GetCaretPos(piLine, piColumn) = (!inner).GetCaretPos(ref piLine, ref piColumn) member tv.SetCaretPos(iLine, iColumn) = (!inner).SetCaretPos(iLine, iColumn) member tv.GetSelectionSpan(pSpan) = (!inner).GetSelectionSpan(pSpan) member tv.GetSelection(piAnchorLine, piAnchorCol, piEndLine, piEndCol) = (!inner).GetSelection(ref piAnchorLine, ref piAnchorCol, ref piEndLine, ref piEndCol) member tv.SetSelection(iAnchorLine, iAnchorCol, iEndLine, iEndCol) = (!inner).SetSelection(iAnchorLine, iAnchorCol, iEndLine, iEndCol) member tv.GetSelectionMode() = (!inner).GetSelectionMode() member tv.SetSelectionMode(iSelMode) = (!inner).SetSelectionMode(iSelMode) member tv.ClearSelection(fMoveToAnchor) = (!inner).ClearSelection(fMoveToAnchor) member tv.CenterLines(iTopLine, iCount) = (!inner).CenterLines(iTopLine, iCount) member tv.GetSelectedText(pbstrText) = (!inner).GetSelectedText(ref pbstrText) member tv.GetSelectionDataObject(ppIDataObject) = (!inner).GetSelectionDataObject(ref ppIDataObject) member tv.GetTextStream(iTopLine, iTopCol, iBottomLine, iBottomCol, pbstrText) = (!inner).GetTextStream(iTopLine, iTopCol, iBottomLine, iBottomCol, ref pbstrText) member tv.SetBuffer(pBuffer) = (!inner).SetBuffer(pBuffer) member tv.GetWindowHandle() = (!inner).GetWindowHandle() member tv.GetScrollInfo(iBar, piMinUnit, piMaxUnit, piVisibleUnits, piFirstVisibleUnit) = let next bar = (!inner).GetScrollInfo(bar) let hr,minu,maxu,visu,firstvis= impl1 getScrollInfo next iBar piMinUnit<-minu piMaxUnit<-maxu piVisibleUnits<-visu piFirstVisibleUnit<-firstvis hr member tv.SetScrollPosition(iBar, iFirstVisibleUnit) = (!inner).SetScrollPosition(iBar, iFirstVisibleUnit) member tv.AddCommandFilter(pNewCmdTarg, ppNextCmdTarg) = (!inner).AddCommandFilter(pNewCmdTarg, ref ppNextCmdTarg) member tv.RemoveCommandFilter(pCmdTarg) = (!inner).RemoveCommandFilter(pCmdTarg) member tv.UpdateCompletionStatus(pCompSet, dwFlags) = (!inner).UpdateCompletionStatus(pCompSet, dwFlags) member tv.UpdateTipWindow(pTipWindow, dwFlags) = (!inner).UpdateTipWindow(pTipWindow, dwFlags) member tv.GetWordExtent(iLine, iCol, dwFlags, pSpan) = (!inner).GetWordExtent(iLine, iCol, dwFlags, pSpan) member tv.RestrictViewRange(iMinLine, iMaxLine, pClient) = (!inner).RestrictViewRange(iMinLine, iMaxLine, pClient) member tv.ReplaceTextOnLine(iLine, iStartCol, iCharsToReplace, pszNewText, iNewLen) = (!inner).ReplaceTextOnLine(iLine, iStartCol, iCharsToReplace, pszNewText, iNewLen) member tv.GetLineAndColumn(iPos, piLine, piIndex) = (!inner).GetLineAndColumn(iPos, ref piLine, ref piIndex) member tv.GetNearestPosition(iLine, iCol, piPos, piVirtualSpaces) = (!inner).GetNearestPosition(iLine, iCol, ref piPos, ref piVirtualSpaces) member tv.UpdateViewFrameCaption() = (!inner).UpdateViewFrameCaption() member tv.CenterColumns(iLine, iLeftCol, iColCount) = (!inner).CenterColumns(iLine, iLeftCol, iColCount) member tv.EnsureSpanVisible(span) = (!inner).EnsureSpanVisible(span) member tv.PositionCaretForEditing(iLine, cIndentLevels) = (!inner).PositionCaretForEditing(iLine, cIndentLevels) member tv.GetPointOfLineColumn(iLine, iCol, ppt) = (!inner).GetPointOfLineColumn(iLine, iCol, ppt) member tv.GetLineHeight(piLineHeight) = (!inner).GetLineHeight(ref piLineHeight) member tv.HighlightMatchingBrace(dwFlags, cSpans, rgBaseSpans) = (!inner).HighlightMatchingBrace(dwFlags, cSpans, rgBaseSpans) member tv.SendExplicitFocus() = (!inner).SendExplicitFocus() member tv.SetTopLine(iBaseLine) = (!inner).SetTopLine(iBaseLine) member tv.GetBuffer(ppbuffer) = let next() = (!inner).GetBuffer() let hr,buf = uimpl getBuffer next ppbuffer<-buf hr interface IVsLayeredTextView with member ltv.GetSelectedAtom(dwFlags, ppunkAtom) = notimpl() member ltv.GetRelativeSelectionState(dwFlags, pReferenceLayer, pSelState) = notimpl() member ltv.SetRelativeSelectionState(dwFlags, pReferenceLayer, pSelState) = notimpl() member ltv.GetTopmostLayer(ppLayer) = let next() = ((box (!inner)):?>IVsLayeredTextView).GetTopmostLayer() let hr,l = uimpl getTopmostLayer next ppLayer<-l hr interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner:=i interface IVsUserData with member ud.GetData(guid,o) = ((!inner) :?> IVsUserData).GetData(&guid,&o) member ud.SetData(guid,o) = ((!inner) :?> IVsUserData).SetData(&guid,o) } static member MakeTextLayer() = {new IVsTextLayer with member tl.LocalLineIndexToBase(iLocalLine, iLocalIndex, piBaseLine, piBaseIndex) = notimpl() member tl.BaseLineIndexToLocal(iBaseLine, iBaseIndex, piLocalLine, piLocalIndex) = notimpl() member tl.LocalLineIndexToDeeperLayer(pTargetLayer, iLocalLine, iLocalIndex, piTargetLine, piTargetIndex) = notimpl() member tl.DeeperLayerLineIndexToLocal(dwFlags, pTargetLayer, iLayerLine, iLayerIndex, piLocalLine, piLocalIndex) = notimpl() member tl.GetBaseBuffer(ppiBuf) = notimpl() member tl.LockBufferEx(dwFlags) = notimpl() member tl.UnlockBufferEx(dwFlags) = notimpl() member tl.GetLengthOfLine(iLine, piLength) = notimpl() member tl.GetLineCount(piLineCount) = notimpl() member tl.GetLastLineIndex(piLine, piIndex) = notimpl() member tl.GetMarkerData(iTopLine, iBottomLine, pMarkerData) = notimpl() member tl.ReleaseMarkerData(pMarkerData) = notimpl() member tl.GetLineDataEx(dwFlags, iLine, iStartIndex, iEndIndex, pLineData, pMarkerData) = notimpl() member tl.ReleaseLineDataEx(pLineData) = notimpl() member tl.GetLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pbstrBuf) = notimpl() member tl.CopyLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pszBuf, pcchBuf) = notimpl() member tl.ReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) = notimpl() member tl.CanReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, iNewLen) = notimpl() member tl.CreateTrackingPoint(iLine, iIndex, ppMarker) = notimpl() member tl.EnumLayerMarkers(iStartLine, iStartIndex, iEndLine, iEndIndex, iMarkerType, dwFlags, ppEnum) = notimpl() member tl.ReplaceLinesEx(dwFlags, iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) = notimpl() member tl.MapLocalSpansToTextOriginatingLayer(dwFlags, pLocalSpanEnum, ppTargetLayer, ppTargetSpanEnum) = notimpl() } static member DelegateTextLayer(oldtl:IVsTextLayer, ?localLineIndexToBase) = let inner = ref oldtl {new IVsTextLayer with member tl.LocalLineIndexToBase(iLocalLine, iLocalIndex, piBaseLine, piBaseIndex) = let next ll li = (!inner).LocalLineIndexToBase(ll,li) let hr,bl,bi = impl2 localLineIndexToBase next iLocalLine iLocalIndex piBaseLine<-bl piBaseIndex<-bi hr member tl.BaseLineIndexToLocal(iBaseLine, iBaseIndex, piLocalLine, piLocalIndex) = notimpl() member tl.LocalLineIndexToDeeperLayer(pTargetLayer, iLocalLine, iLocalIndex, piTargetLine, piTargetIndex) = notimpl() member tl.DeeperLayerLineIndexToLocal(dwFlags, pTargetLayer, iLayerLine, iLayerIndex, piLocalLine, piLocalIndex) = notimpl() member tl.GetBaseBuffer(ppiBuf) = notimpl() member tl.LockBufferEx(dwFlags) = notimpl() member tl.UnlockBufferEx(dwFlags) = notimpl() member tl.GetLengthOfLine(iLine, piLength) = notimpl() member tl.GetLineCount(piLineCount) = notimpl() member tl.GetLastLineIndex(piLine, piIndex) = notimpl() member tl.GetMarkerData(iTopLine, iBottomLine, pMarkerData) = notimpl() member tl.ReleaseMarkerData(pMarkerData) = notimpl() member tl.GetLineDataEx(dwFlags, iLine, iStartIndex, iEndIndex, pLineData, pMarkerData) = notimpl() member tl.ReleaseLineDataEx(pLineData) = notimpl() member tl.GetLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pbstrBuf) = notimpl() member tl.CopyLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pszBuf, pcchBuf) = notimpl() member tl.ReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) = notimpl() member tl.CanReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, iNewLen) = notimpl() member tl.CreateTrackingPoint(iLine, iIndex, ppMarker) = notimpl() member tl.EnumLayerMarkers(iStartLine, iStartIndex, iEndLine, iEndIndex, iMarkerType, dwFlags, ppEnum) = notimpl() member tl.ReplaceLinesEx(dwFlags, iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) = notimpl() member tl.MapLocalSpansToTextOriginatingLayer(dwFlags, pLocalSpanEnum, ppTargetLayer, ppTargetSpanEnum) = notimpl() interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner:=i } static member MakeTextLineMarker() = let markerSpan = ref (new TextSpan(iStartLine = 0, iEndLine = 0, iStartIndex = 0, iEndIndex = 0)) {new IVsTextLineMarker with member tl.DrawGlyph(hdc, pRect) = notimpl() member tl.ExecMarkerCommand(iItem) = notimpl() member tl.GetBehavior(pdwBehavior) = notimpl() member tl.GetCurrentSpan(pSpan) = pSpan.[0] <- !markerSpan ; 0 member tl.GetLineBuffer(ppBuffer) = notimpl() member tl.GetMarkerCommandInfo(iItem, pbstrText, pcmdf) = notimpl() member tl.GetPriorityIndex(piPriorityIndex) = notimpl() member tl.GetTipText(pbstrText) = notimpl() member tl.GetType(piMarkerType) = notimpl() member tl.GetVisualStyle(pdwFlags) = notimpl() member tl.Invalidate() = 0 member tl.ResetSpan(iSL, iSI, iEL, iEI) = markerSpan := new TextSpan(iStartLine = iSL, iEndLine = iEL, iStartIndex = iSI, iEndIndex = iEI) ; 0 member tl.SetBehavior(dwBehavior) = notimpl() member tl.SetType(iMarkerType) = notimpl() member tl.SetVisualStyle(dwFlags) = notimpl() member tl.UnadviseClient() = 0 interface IVsTextMarker with member tl.DrawGlyph(hdc, pRect) = notimpl() member tl.ExecMarkerCommand(iItem) = notimpl() member tl.GetBehavior(pdwBehavior) = notimpl() member tl.GetMarkerCommandInfo(iItem, pbstrText, pcmdf) = notimpl() member tl.GetPriorityIndex(piPriorityIndex) = notimpl() member tl.GetTipText(pbstrText) = notimpl() member tl.GetType(piMarkerType) = notimpl() member tl.GetVisualStyle(pdwFlags) = notimpl(); member tl.Invalidate() = notimpl() member tl.SetBehavior(dwBehavior) = notimpl() member tl.SetType(iMarkerType) = notimpl() member tl.SetVisualStyle(dwFlags) = notimpl() member tl.UnadviseClient() = notimpl() } static member MakeTextLines() = let userData = new Dictionary() {new IVsTextLines with member tl.LockBuffer() = notimpl() member tl.UnlockBuffer() = notimpl() member tl.InitializeContent(pszText, iLength) = notimpl() member tl.GetStateFlags(pdwReadOnlyFlags) = notimpl() member tl.SetStateFlags(flags) = notimpl() member tl.GetPositionOfLine(line,position) = notimpl() member tl.GetPositionOfLineIndex(line, index, x) = notimpl() member tl.GetLineIndexOfPosition(position, line, x) = notimpl() member tl.GetLengthOfLine(line, length) = notimpl() member tl.GetLineCount(x) = notimpl() member tl.GetSize(x) = notimpl() member tl.GetLanguageServiceID(pguidLangService:System.Guid byref) : System.Int32 = notimpl() member tl.SetLanguageServiceID(guidLangServ) = notimpl() member tl.GetUndoManager(x) = notimpl() member tl.Reserved1() = notimpl() member tl.Reserved2() = notimpl() member tl.Reserved3() = notimpl() member tl.Reserved4() = notimpl() member tl.Reload(undoable) = notimpl() member tl.LockBufferEx(flags) = notimpl() member tl.UnlockBufferEx(flags) = notimpl() member tl.GetLastLineIndex(x,y) = notimpl() member tl.Reserved5() = notimpl() member tl.Reserved6() = notimpl() member tl.Reserved7() = notimpl() member tl.Reserved8() = notimpl() member tl.Reserved9() = notimpl() member tl.Reserved10() = notimpl() member tl.GetMarkerData(iTopLine, iBottomLine, pMarkerData)= notimpl() member tl.ReleaseMarkerData(pMarkerData)= notimpl() member tl.GetLineData(iLine, pLineData, pMarkerData)= notimpl() member tl.ReleaseLineData(pLineData)= notimpl() member tl.GetLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pbstrBuf) = notimpl() member tl.CopyLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pszBuf, pcchBuf)= notimpl() member tl.ReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= notimpl() member tl.CanReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, iNewLen)= notimpl() member tl.CreateLineMarker(iMarkerType, iStartLine, iStartIndex, iEndLine, iEndIndex, pClient, ppMarker)= let textLineMarker = Vs.MakeTextLineMarker() textLineMarker.ResetSpan(iStartLine, iStartIndex, iEndLine, iEndIndex) |> ignore ppMarker.[0] <- textLineMarker ; 0 member tl.EnumMarkers(iStartLine, iStartIndex, iEndLine, iEndIndex, iMarkerType, udwFlags, ppEnum)= notimpl() member tl.FindMarkerByLineIndex(iMarkerType, iStartingLine, iStartingIndex, udwFlags, ppMarker)= notimpl() member tl.AdviseTextLinesEvents(pSink, updwCookie)= notimpl() member tl.UnadviseTextLinesEvents(udwCookie)= notimpl() member tl.GetPairExtents(pSpanIn, pSpanOut)= notimpl() member tl.ReloadLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= notimpl() member tl.IVsTextLinesReserved1(iLine, pLineData, fAttributes)= notimpl() member tl.GetLineDataEx(udwFlags, iLine, iStartIndex, iEndIndex, pLineData, pMarkerData)= notimpl() member tl.ReleaseLineDataEx(pLineData)= notimpl() member tl.CreateEditPoint(iLine, iIndex, ppEditPoint)= notimpl() member tl.ReplaceLinesEx(udwFlags, iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= notimpl() member tl.CreateTextPoint(iLine, iIndex, ppTextPoint)= notimpl() interface IVsTextBuffer with member tl.LockBuffer() = notimpl() member tl.UnlockBuffer() = notimpl() member tl.InitializeContent(pszText, iLength) = notimpl() member tl.GetStateFlags(pdwReadOnlyFlags) = notimpl() member tl.SetStateFlags(flags) = notimpl() member tl.GetPositionOfLine(line,position) = notimpl() member tl.GetPositionOfLineIndex(line, index, x) = notimpl() member tl.GetLineIndexOfPosition(position, line, x) = notimpl() member tl.GetLengthOfLine(line, length) = notimpl() member tl.GetLineCount(x) = notimpl() member tl.GetSize(x) = notimpl() member tl.GetLanguageServiceID(pguidLangService:System.Guid byref) : System.Int32 = notimpl() member tl.SetLanguageServiceID(guidLangServ) = notimpl() member tl.GetUndoManager(x) = notimpl() member tl.Reserved1() = notimpl() member tl.Reserved2() = notimpl() member tl.Reserved3() = notimpl() member tl.Reserved4() = notimpl() member tl.Reload(undoable) = notimpl() member tl.LockBufferEx(flags) = notimpl() member tl.UnlockBufferEx(flags) = notimpl() member tl.GetLastLineIndex(x,y) = notimpl() member tl.Reserved5() = notimpl() member tl.Reserved6() = notimpl() member tl.Reserved7() = notimpl() member tl.Reserved8() = notimpl() member tl.Reserved9() = notimpl() member tl.Reserved10() = notimpl() interface IVsTextColorState with member tcs.ReColorizeLines(iTopLine, iBottomLine) = notimpl() member tcs.GetColorStateAtStartOfLine(iLine, piState) = notimpl() interface IVsUserData with member x.SetData(guid,obj) = if userData.ContainsKey(guid) then userData.Remove(guid) |> ignore match obj with | null -> () | _ -> userData.Add(guid,obj) |> ignore VSConstants.S_OK member x.GetData(guid,obj) = if userData.ContainsKey(guid) then obj <- userData.[guid] else obj <- null VSConstants.S_OK } static member DelegateTextLines(oldtl:IVsTextLines, ?getLengthOfLine, ?getLineText, ?getLineCount, ?recolorizeLines, ?getColorStateAtStartOfLine, ?getData) = let inner:Ref = ref oldtl {new IVsTextLines with member tl.LockBuffer() = (!inner).LockBuffer() member tl.UnlockBuffer() = (!inner).UnlockBuffer() member tl.InitializeContent(pszText, iLength) = (!inner).InitializeContent(pszText, iLength) member tl.GetStateFlags(pdwReadOnlyFlags) = (!inner).GetStateFlags(ref pdwReadOnlyFlags) member tl.SetStateFlags(flags) = (!inner).SetStateFlags(flags) member tl.GetPositionOfLine(line,position) = (!inner).GetPositionOfLine(line, ref position) member tl.GetPositionOfLineIndex(line, index, x) = (!inner).GetPositionOfLineIndex(line, index, ref x) member tl.GetLineIndexOfPosition(position, line, x) = (!inner).GetLineIndexOfPosition(position, ref line, ref x) member tl.GetLengthOfLine(line, length) = let next line = (!inner).GetLengthOfLine(line) let hr,l = impl1 getLengthOfLine next line length<-l hr member tl.GetLineCount(count) = let next () = (!inner).GetLineCount() let hr,c = uimpl getLineCount next count<-c hr member tl.GetSize(x) = (!inner).GetSize(ref x) member tl.GetLanguageServiceID(pguidLangService:System.Guid byref) = (!inner).GetLanguageServiceID(ref pguidLangService) member tl.SetLanguageServiceID(guidLangServ) = (!inner).SetLanguageServiceID(ref guidLangServ) member tl.GetUndoManager(x) = (!inner).GetUndoManager(ref x) member tl.Reserved1() = (!inner).Reserved1() member tl.Reserved2() = (!inner).Reserved2() member tl.Reserved3() = (!inner).Reserved3() member tl.Reserved4() = (!inner).Reserved4() member tl.Reload(undoable) = (!inner).Reload(undoable) member tl.LockBufferEx(flags) = (!inner).LockBufferEx(flags) member tl.UnlockBufferEx(flags) = (!inner).UnlockBufferEx(flags) member tl.GetLastLineIndex(x,y) = (!inner).GetLastLineIndex(ref x,ref y) member tl.Reserved5() = (!inner).Reserved5() member tl.Reserved6() = (!inner).Reserved6() member tl.Reserved7() = (!inner).Reserved7() member tl.Reserved8() = (!inner).Reserved8() member tl.Reserved9() = (!inner).Reserved9() member tl.Reserved10() = (!inner).Reserved10() member tl.GetMarkerData(iTopLine, iBottomLine, pMarkerData) = (!inner).GetMarkerData(iTopLine, iBottomLine, pMarkerData) member tl.ReleaseMarkerData(pMarkerData) = (!inner).ReleaseMarkerData(pMarkerData) member tl.GetLineData(iLine, pLineData, pMarkerData) = (!inner).GetLineData(iLine, pLineData, pMarkerData) member tl.ReleaseLineData(pLineData)= (!inner).ReleaseLineData(pLineData) member tl.GetLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pbstrBuf) = let next a b c d = (!inner).GetLineText(a,b,c,d) let hr,b = impl4 getLineText next iStartLine iStartIndex iEndLine iEndIndex pbstrBuf<-b hr member tl.CopyLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pszBuf, pcchBuf)= (!inner).CopyLineText(iStartLine, iStartIndex, iEndLine, iEndIndex, pszBuf, ref pcchBuf) member tl.ReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= (!inner).ReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) member tl.CanReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, iNewLen)= (!inner).CanReplaceLines(iStartLine, iStartIndex, iEndLine, iEndIndex, iNewLen) member tl.CreateLineMarker(iMarkerType, iStartLine, iStartIndex, iEndLine, iEndIndex, pClient, ppMarker)= (!inner).CreateLineMarker(iMarkerType, iStartLine, iStartIndex, iEndLine, iEndIndex, pClient, ppMarker) member tl.EnumMarkers(iStartLine, iStartIndex, iEndLine, iEndIndex, iMarkerType, udwFlags, ppEnum)= (!inner).EnumMarkers(iStartLine, iStartIndex, iEndLine, iEndIndex, iMarkerType, udwFlags, ref ppEnum) member tl.FindMarkerByLineIndex(iMarkerType, iStartingLine, iStartingIndex, udwFlags, ppMarker)= (!inner).FindMarkerByLineIndex(iMarkerType, iStartingLine, iStartingIndex, udwFlags, ref ppMarker) member tl.AdviseTextLinesEvents(pSink, updwCookie)= (!inner).AdviseTextLinesEvents(pSink, ref updwCookie) member tl.UnadviseTextLinesEvents(udwCookie)= (!inner).UnadviseTextLinesEvents(udwCookie) member tl.GetPairExtents(pSpanIn, pSpanOut)= (!inner).GetPairExtents(pSpanIn, pSpanOut) member tl.ReloadLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= (!inner).ReloadLines(iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) member tl.IVsTextLinesReserved1(iLine, pLineData, fAttributes)= (!inner).IVsTextLinesReserved1(iLine, pLineData, fAttributes) member tl.GetLineDataEx(udwFlags, iLine, iStartIndex, iEndIndex, pLineData, pMarkerData)= (!inner).GetLineDataEx(udwFlags, iLine, iStartIndex, iEndIndex, pLineData, pMarkerData) member tl.ReleaseLineDataEx(pLineData)= (!inner).ReleaseLineDataEx(pLineData) member tl.CreateEditPoint(iLine, iIndex, ppEditPoint)= (!inner).CreateEditPoint(iLine, iIndex, ref ppEditPoint) member tl.ReplaceLinesEx(udwFlags, iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan)= (!inner).ReplaceLinesEx(udwFlags, iStartLine, iStartIndex, iEndLine, iEndIndex, pszText, iNewLen, pChangedSpan) member tl.CreateTextPoint(iLine, iIndex, ppTextPoint)= (!inner).CreateTextPoint(iLine, iIndex, ref ppTextPoint) interface IVsTextBuffer with member tl.LockBuffer() = (!inner).LockBuffer() member tl.UnlockBuffer() = (!inner).UnlockBuffer() member tl.InitializeContent(pszText, iLength) = (!inner).InitializeContent(pszText, iLength) member tl.GetStateFlags(pdwReadOnlyFlags) = (!inner).GetStateFlags(ref pdwReadOnlyFlags) member tl.SetStateFlags(flags) = (!inner).SetStateFlags(flags) member tl.GetPositionOfLine(line,position) = (!inner).GetPositionOfLine(line, ref position) member tl.GetPositionOfLineIndex(line, index, x) = (!inner).GetPositionOfLineIndex(line, index, ref x) member tl.GetLineIndexOfPosition(position, line, x) = (!inner).GetLineIndexOfPosition(position, ref line, ref x) member tl.GetLengthOfLine(line, length) = let next line = (!inner).GetLengthOfLine(line) let hr,l = impl1 getLengthOfLine next line length<-l hr member tl.GetLineCount(x) = (!inner).GetLineCount(ref x) member tl.GetSize(x) = (!inner).GetSize(ref x) member tl.GetLanguageServiceID(pguidLangService:System.Guid byref) = (!inner).GetLanguageServiceID(ref pguidLangService) member tl.SetLanguageServiceID(guidLangServ) = (!inner).SetLanguageServiceID(ref guidLangServ) member tl.GetUndoManager(x) = (!inner).GetUndoManager(ref x) member tl.Reserved1() = (!inner).Reserved1() member tl.Reserved2() = (!inner).Reserved2() member tl.Reserved3() = (!inner).Reserved3() member tl.Reserved4() = (!inner).Reserved4() member tl.Reload(undoable) = (!inner).Reload(undoable) member tl.LockBufferEx(flags) = (!inner).LockBufferEx(flags) member tl.UnlockBufferEx(flags) = (!inner).UnlockBufferEx(flags) member tl.GetLastLineIndex(x,y) = (!inner).GetLastLineIndex(ref x,ref y) member tl.Reserved5() = (!inner).Reserved5() member tl.Reserved6() = (!inner).Reserved6() member tl.Reserved7() = (!inner).Reserved7() member tl.Reserved8() = (!inner).Reserved8() member tl.Reserved9() = (!inner).Reserved9() member tl.Reserved10() = (!inner).Reserved10() interface IVsTextColorState with member tcs.ReColorizeLines(iTopLine, iBottomLine) = let next top bottom = ((box (!inner)):?>IVsTextColorState).ReColorizeLines(top, bottom) let hr:int = impl2 recolorizeLines next iTopLine iBottomLine hr member tcs.GetColorStateAtStartOfLine(iLine, piState) = let next iLine = ((box (!inner)):?>IVsTextColorState).GetColorStateAtStartOfLine(iLine) let hr,state = impl1 getColorStateAtStartOfLine next iLine piState<-state hr interface IVsUserData with member ud.GetData(riidKey,pvtData) = let next riidKey = ((box (!inner)):?>IVsUserData).GetData(riidKey) let (hr:int),data = impl1 getData next (ref riidKey) pvtData<-data hr member ud.SetData(riidKey,vtData) = ((box (!inner)):?>IVsUserData).SetData(ref riidKey,vtData) interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner:=i } // (The RDT is no longer used by the product, but leaving in VsMocks/Salsa in case we need it again in the future static member MakeRunningDocumentTable() = {new IVsRunningDocumentTable with member rdt.RegisterAndLockDocument(grfRDTLockType, pszMkDocument, pHier, itemid, punkDocData, pdwCookie) = notimpl() member rdt.LockDocument(grfRDTLockType, dwCookie) = notimpl() member rdt.UnlockDocument(grfRDTLockType, dwCookie) = notimpl() member rdt.FindAndLockDocument(dwRDTLockType, pszMkDocument, ppHier, pitemid, ppunkDocData, pdwCookie) = fail member rdt.RenameDocument(pszMkDocumentOld, pszMkDocumentNew, pHier, itemidNew) = notimpl() member rdt.AdviseRunningDocTableEvents(pSink, pdwCookie) = notimpl() member rdt.UnadviseRunningDocTableEvents(dwCookie) = notimpl() member rdt.GetDocumentInfo(docCookie, pgrfRDTFlags, pdwReadLocks, pdwEditLocks, pbstrMkDocument, ppHier, pitemid, ppunkDocData) = notimpl() member rdt.NotifyDocumentChanged(dwCookie, grfDocChanged) = notimpl() member rdt.NotifyOnAfterSave(dwCookie) = notimpl() member rdt.GetRunningDocumentsEnum(ppenum) = notimpl() member rdt.SaveDocuments(grfSaveOpts, pHier, itemid, docCookie) = notimpl() member rdt.NotifyOnBeforeSave(dwCookie) = notimpl() member rdt.RegisterDocumentLockHolder(grfRDLH, dwCookie, pLockHolder, pdwLHCookie) = notimpl() member rdt.UnregisterDocumentLockHolder(dwLHCookie) = notimpl() member rdt.ModifyDocumentFlags(docCookie, grfFlags, fSet) = notimpl() } static member DelegateRunningDocumentTable(oldrdt:IVsRunningDocumentTable, ?getDocumentInfo, ?unadviseRunningDocTableEvents, ?findAndLockDocument) = let inner:Ref = ref oldrdt {new IVsRunningDocumentTable with member rdt.RegisterAndLockDocument(grfRDTLockType, pszMkDocument, pHier, itemid, punkDocData, pdwCookie) = (!inner).RegisterAndLockDocument(grfRDTLockType, pszMkDocument, pHier, itemid, punkDocData, ref pdwCookie) member rdt.LockDocument(grfRDTLockType, dwCookie) = (!inner).LockDocument(grfRDTLockType, dwCookie) member rdt.UnlockDocument(grfRDTLockType, dwCookie) = (!inner).UnlockDocument(grfRDTLockType, dwCookie) member rdt.FindAndLockDocument(dwRDTLockType, pszMkDocument, ppHier, pitemid, ppunkDocData, pdwCookie) = let next() = (!inner).FindAndLockDocument(dwRDTLockType,pszMkDocument) let (hr:int),hier,itemid,docData,cookie = match findAndLockDocument with | Some(f) -> match f dwRDTLockType pszMkDocument with Some(r)-> r | _ -> next() | _ -> next() ppHier<-hier pitemid<- itemid ppunkDocData<-docData pdwCookie <- cookie hr member rdt.RenameDocument(pszMkDocumentOld, pszMkDocumentNew, pHier, itemidNew) = (!inner).RenameDocument(pszMkDocumentOld, pszMkDocumentNew, pHier, itemidNew) member rdt.AdviseRunningDocTableEvents(pSink, pdwCookie) = (!inner).AdviseRunningDocTableEvents(pSink, ref pdwCookie) member rdt.UnadviseRunningDocTableEvents(dwCookie) = let next() = (!inner).UnadviseRunningDocTableEvents(dwCookie) let hr = match unadviseRunningDocTableEvents with Some(f) -> match f dwCookie with Some(r)-> r | _ -> next() | _ -> next() hr member rdt.GetDocumentInfo(docCookie, pgrfRDTFlags, pdwReadLocks, pdwEditLocks, pbstrMkDocument, ppHier, pitemid, ppunkDocData) = let next() = (!inner).GetDocumentInfo(docCookie) let hr,_,_,_,mkd,hier,itemid,docd = match getDocumentInfo with Some(f) -> match f docCookie with Some(r)-> r | _ -> next() | _ -> next() pbstrMkDocument<-mkd ppHier<- hier pitemid<-itemid ppunkDocData <- docd hr member rdt.NotifyDocumentChanged(dwCookie, grfDocChanged) = (!inner).NotifyDocumentChanged(dwCookie, grfDocChanged) member rdt.NotifyOnAfterSave(dwCookie) = (!inner).NotifyOnAfterSave(dwCookie) member rdt.GetRunningDocumentsEnum(ppenum) = (!inner).GetRunningDocumentsEnum(ref ppenum) member rdt.SaveDocuments(grfSaveOpts, pHier, itemid, docCookie) = (!inner).SaveDocuments(grfSaveOpts, pHier, itemid, docCookie) member rdt.NotifyOnBeforeSave(dwCookie) = (!inner).NotifyOnBeforeSave(dwCookie) member rdt.RegisterDocumentLockHolder(grfRDLH, dwCookie, pLockHolder, pdwLHCookie) = (!inner).RegisterDocumentLockHolder(grfRDLH, dwCookie, pLockHolder, ref pdwLHCookie) member rdt.UnregisterDocumentLockHolder(dwLHCookie) = (!inner).UnregisterDocumentLockHolder(dwLHCookie) member rdt.ModifyDocumentFlags(docCookie, grfFlags, fSet) = (!inner).ModifyDocumentFlags(docCookie, grfFlags, fSet) interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner:=i } // ) static member MakeHierarchy(projectSiteFactory:IProvideProjectSite) = {new IVsHierarchy with member h.SetSite(psp) = notimpl() member h.GetSite(ppSP) = notimpl() member h.QueryClose(pfCanClose) = notimpl() member h.Close() = notimpl() member h.GetGuidProperty(itemid, propid, pguid) = pguid <- FSharpProjectGuid VSConstants.S_OK member h.SetGuidProperty(itemid, propid, rguid) = notimpl() member h.GetProperty(itemid, propid, pvar) = notimpl() member h.SetProperty(itemid, propid, var) = notimpl() member h.GetNestedHierarchy(itemid, iidHierarchyNested, ppHierarchyNested, pitemidNested) = notimpl() member h.GetCanonicalName(itemid, pbstrName) = notimpl() member h.ParseCanonicalName(pszName, pitemid) = notimpl() member h.Unused0() = notimpl() member h.AdviseHierarchyEvents(pEventSink, pdwCookie) = notimpl() member h.UnadviseHierarchyEvents(dwCookie) = notimpl() member h.Unused1() = notimpl() member h.Unused2() = notimpl() member h.Unused3() = notimpl() member h.Unused4() = notimpl() interface IProvideProjectSite with member x.GetProjectSite() = projectSiteFactory.GetProjectSite() } static member DelegateHierarchy(oldh:IVsHierarchy, ?getCanonicalName, ?getProperty) = let inner = ref oldh {new IVsHierarchy with member h.SetSite(psp) = (!inner).SetSite(psp) member h.GetSite(ppSP) = (!inner).GetSite(ref ppSP) member h.QueryClose(pfCanClose) = (!inner).QueryClose(ref pfCanClose) member h.Close() = (!inner).Close() member h.GetGuidProperty(itemid, propid, pguid) = (!inner).GetGuidProperty(itemid, propid, ref pguid) member h.SetGuidProperty(itemid, propid, rguid) = (!inner).SetGuidProperty(itemid, propid, ref rguid) member h.GetProperty(itemid, propid, pvar) = let propid:__VSHPROPID = enum propid let next itemid propid = (!inner).GetProperty(itemid, int32 propid) let hr,var = impl2 getProperty next itemid propid pvar<-var hr member h.SetProperty(itemid, propid, var) = (!inner).SetProperty(itemid, propid, var) member h.GetNestedHierarchy(itemid, iidHierarchyNested, ppHierarchyNested, pitemidNested) = (!inner).GetNestedHierarchy(itemid,ref iidHierarchyNested, ref ppHierarchyNested, ref pitemidNested) /// For project files, returns the fully qualified path to the file including the filename itself. member h.GetCanonicalName(itemid, pbstrName) = let next itemid = (!inner).GetCanonicalName(itemid) let hr,n = impl1 getCanonicalName next itemid pbstrName<-n hr member h.ParseCanonicalName(pszName, pitemid) = (!inner).ParseCanonicalName(pszName, ref pitemid) member h.Unused0() = (!inner).Unused0() member h.AdviseHierarchyEvents(pEventSink, pdwCookie) = (!inner).AdviseHierarchyEvents(pEventSink, ref pdwCookie) member h.UnadviseHierarchyEvents(dwCookie) = (!inner).UnadviseHierarchyEvents(dwCookie) member h.Unused1() = (!inner).Unused1() member h.Unused2() = (!inner).Unused2() member h.Unused3() = (!inner).Unused3() member h.Unused4() = (!inner).Unused4() interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner := i interface IProvideProjectSite with member x.GetProjectSite() = ((!inner) :?> IProvideProjectSite).GetProjectSite() } static member MakeTextManager() = {new IVsTextManager with member tm.RegisterView(pView,pBuffer) = notimpl() member tm.UnregisterView(pView) = notimpl() member tm.EnumViews(pBuffer,ppEnum) = notimpl() member tm.CreateSelectionAction(pBuffer,ppAction) = notimpl() member tm.MapFilenameToLanguageSID(pszFileName,pguidLangSID) = notimpl() member tm.GetRegisteredMarkerTypeID(pguidMarker,piMarkerTypeID) = notimpl() member tm.GetMarkerTypeInterface(iMarkerTypeID, ppMarkerType) = notimpl() member tm.GetMarkerTypeCount(piMarkerTypeCount) = notimpl() member tm.GetActiveView(fMustHaveFocus,pBuffer,ppView) = notimpl() member tm.GetUserPreferences(pViewPrefs, pFramePrefs, pLangPrefs, pColorPrefs) = notimpl() member tm.SetUserPreferences(pViewPrefs,pFramePrefs,pLangPrefs,pColorPrefs) = notimpl() member tm.SetFileChangeAdvise(pszFileName,fStart) = notimpl() member tm.SuspendFileChangeAdvise(pszFileName,fSuspend) = notimpl() member tm.NavigateToPosition(pBuffer,guidDocViewType,iPos,iLen) = notimpl() member tm.NavigateToLineAndColumn(pBuffer,guidDocViewType,iStartRow,iStartIndex,iEndRow,iEndIndex) = notimpl() member tm.GetBufferSccStatus(pBufData,pbNonEditable) = notimpl() member tm.RegisterBuffer(pBuffer) = notimpl() member tm.UnregisterBuffer(pBuffer) = notimpl() member tm.EnumBuffers(ppEnum) = notimpl() member tm.GetPerLanguagePreferences(pLangPrefs) = notimpl() member tm.SetPerLanguagePreferences(pLangPrefs) = notimpl() member tm.AttemptToCheckOutBufferFromScc(pBufData,pfCheckoutSucceeded) = notimpl() member tm.GetShortcutManager(ppShortcutMgr) = notimpl() member tm.RegisterIndependentView(pUnk,pBuffer) = notimpl() member tm.UnregisterIndependentView(pUnk,pBuffer) = notimpl() member tm.IgnoreNextFileChange(pBuffer) = notimpl() member tm.AdjustFileChangeIgnoreCount(pBuffer,fIgnore) = notimpl() member tm.GetBufferSccStatus2(pszFileName,pbNonEditable,piStatusFlags) = notimpl() member tm.AttemptToCheckOutBufferFromScc2(pszFileName,pfCheckoutSucceeded,piStatusFlags) = notimpl() member tm.EnumLanguageServices(ppEnum) = notimpl() member tm.EnumIndependentViews(pBuffer,ppEnum) = notimpl() } static member DelegateTextManager(oldtm:IVsTextManager, ?getActiveView) = let inner = ref oldtm {new IVsTextManager with member tm.RegisterView(pView,pBuffer) = notimpl() member tm.UnregisterView(pView) = notimpl() member tm.EnumViews(pBuffer,ppEnum) = notimpl() member tm.CreateSelectionAction(pBuffer,ppAction) = notimpl() member tm.MapFilenameToLanguageSID(pszFileName,pguidLangSID) = notimpl() member tm.GetRegisteredMarkerTypeID(pguidMarker,piMarkerTypeID) = notimpl() member tm.GetMarkerTypeInterface(iMarkerTypeID, ppMarkerType) = notimpl() member tm.GetMarkerTypeCount(piMarkerTypeCount) = notimpl() member tm.GetActiveView(fMustHaveFocus,pBuffer,ppView) = let next fMustHaveFocus pBuffer = (!inner).GetActiveView(fMustHaveFocus,pBuffer) let hr,v = impl2 getActiveView next fMustHaveFocus pBuffer ppView<-v hr member tm.GetUserPreferences(pViewPrefs, pFramePrefs, pLangPrefs, pColorPrefs) = notimpl() member tm.SetUserPreferences(pViewPrefs,pFramePrefs,pLangPrefs,pColorPrefs) = notimpl() member tm.SetFileChangeAdvise(pszFileName,fStart) = notimpl() member tm.SuspendFileChangeAdvise(pszFileName,fSuspend) = notimpl() member tm.NavigateToPosition(pBuffer,guidDocViewType,iPos,iLen) = notimpl() member tm.NavigateToLineAndColumn(pBuffer,guidDocViewType,iStartRow,iStartIndex,iEndRow,iEndIndex) = notimpl() member tm.GetBufferSccStatus(pBufData,pbNonEditable) = notimpl() member tm.RegisterBuffer(pBuffer) = notimpl() member tm.UnregisterBuffer(pBuffer) = notimpl() member tm.EnumBuffers(ppEnum) = notimpl() member tm.GetPerLanguagePreferences(pLangPrefs) = notimpl() member tm.SetPerLanguagePreferences(pLangPrefs) = notimpl() member tm.AttemptToCheckOutBufferFromScc(pBufData,pfCheckoutSucceeded) = notimpl() member tm.GetShortcutManager(ppShortcutMgr) = notimpl() member tm.RegisterIndependentView(pUnk,pBuffer) = notimpl() member tm.UnregisterIndependentView(pUnk,pBuffer) = notimpl() member tm.IgnoreNextFileChange(pBuffer) = notimpl() member tm.AdjustFileChangeIgnoreCount(pBuffer,fIgnore) = notimpl() member tm.GetBufferSccStatus2(pszFileName,pbNonEditable,piStatusFlags) = notimpl() member tm.AttemptToCheckOutBufferFromScc2(pszFileName,pfCheckoutSucceeded,piStatusFlags) = notimpl() member tm.EnumLanguageServices(ppEnum) = notimpl() member tm.EnumIndependentViews(pBuffer,ppEnum) = notimpl() interface IDelegable with member id.GetInner() = !inner member id.SetInner(i) = inner := i } let private getInner (o:'a) = let d = (box o):?>(IDelegable<'a>) d.GetInner() let private setInner (o:'a) i = let d = (box o):?>(IDelegable<'a>) d.SetInner(i) // IVsTextLayer --------------------------------------------------------------------------------------------------------- let createTextLayer() = let tl = Vs.DelegateTextLayer (Vs.MakeTextLayer()) let inner = getInner tl let localLineIndexToBase (iLocalLine:int) (iLocalIndex:int) = Some(ok,iLocalLine,iLocalIndex) // For now, just forward the values with no translation let inner = Vs.DelegateTextLayer(inner, localLineIndexToBase=localLineIndexToBase) setInner tl inner tl // IVsTextView --------------------------------------------------------------------------------------------------------- let createTextView() : IVsTextView = Vs.DelegateTextView(Vs.MakeTextView()) let setFileText (filename:string) (tv:IVsTextView) (lines:string array) (recolorizeLines:int->int->unit) (getColorStateAtStartOfLine:int->int) = let filename = Internal.Utilities.FileSystem.Path.SafeGetFullPath(filename) let inner = getInner tv let lineCount = lines.Length let getLineCount() = Some(ok, lines.Length) // Line number is zero-relative. let getLengthOfLine line = Some(ok, lines.[line].Length) // It looks like VS has GetLineText taking zero-relative values. // The actually cursor position is 1-relative though let getLineText iStartLine iStartIndex iEndLine iEndIndex = let slice = [iStartLine..iEndLine] |>List.map(fun i->(lines.[i].Substring(iStartIndex, iEndIndex-iStartIndex))) Some(ok, System.String.Join("\r\n",Array.ofList slice)) let recolorizeLines (top:int) (bottom:int) = recolorizeLines top bottom Some(ok) let getColorStateAtStartOfLine (line:int) = Some(ok,getColorStateAtStartOfLine line) let vsBufferMoniker = Guid("978A8E17-4DF8-432A-9623-D530A26452BC") let getData (riidKey:Guid ref) = if !riidKey = vsBufferMoniker then Some(ok, box filename) else None let tl = Vs.DelegateTextLines(Vs.MakeTextLines(), getLineCount=getLineCount, getLengthOfLine=getLengthOfLine, getLineText=getLineText, recolorizeLines=recolorizeLines, getColorStateAtStartOfLine=getColorStateAtStartOfLine, getData=getData ) // Maybe overly simplistic: Make the whole file visible in one page let getScrollInfo _iBar = Some(ok,0,lineCount-1,lineCount-1,0) let toplayer:IVsTextLayer = createTextLayer() let getTopmostLayer() = Some(ok,toplayer) let getBuffer() = Some(ok, tl) let inner = Vs.DelegateTextView(inner, getBuffer=getBuffer, getScrollInfo=getScrollInfo, getTopmostLayer=getTopmostLayer) setInner tv inner // (The RDT is no longer used by the product, but leaving in VsMocks/Salsa in case we need it again in the future // IVsRunningDocumentTable --------------------------------------------------------------------------------------------------------- let createRdt() = let unadviseRunningDocTableEvents _ = Some(ok) Vs.DelegateRunningDocumentTable (Vs.MakeRunningDocumentTable(),unadviseRunningDocTableEvents=unadviseRunningDocTableEvents) let openDocumentInRdt rdt cookie filename (textview:IVsTextView) hier = let filename = System.IO.Path.GetFullPath(filename) let inner = getInner rdt let _hr, textlines = textview.GetBuffer() let getDocumentInfoResult = (Some(ok,0u,0u,0u,filename,hier,cookie,Marshal.GetIUnknownForObject(textlines))) let refGetDocumentInfoResult = ref getDocumentInfoResult let getDocumentInfo c = if cookie = c then !refGetDocumentInfoResult else None let findAndLockDocumentResult = (Some(ok,hier,0u,Marshal.GetIUnknownForObject(textlines),0u)) let refFindAndLockDocumentResult = ref findAndLockDocumentResult let findAndLockDocument _dwRDTLockType pszMkDocument = if pszMkDocument = filename then !refFindAndLockDocumentResult else None let inner = Vs.DelegateRunningDocumentTable(inner,getDocumentInfo=getDocumentInfo,findAndLockDocument=findAndLockDocument) setInner rdt inner // ) let createLanguagePreferences() = null:>LanguagePreferences // IVsHierarchy --------------------------------------------------------------------------------------------------------- let createHier(projectSiteFactory) = let getProperty _id _prop = Some(VSConstants.E_FAIL,null) let hier = Vs.DelegateHierarchy(Vs.MakeHierarchy(projectSiteFactory), getProperty=getProperty) hier let setHierRoot hier projectdir projectname = let guid = System.Guid.NewGuid().ToString() let inner = getInner hier let getCanonicalName itemid = if itemid = VSConstants.VSITEMID_ROOT then Some(ok,projectdir) else None let getProperty id prop = if id = VSConstants.VSITEMID_ROOT then match prop with | __VSHPROPID.VSHPROPID_Name->Some(ok, box projectname) | __VSHPROPID.VSHPROPID_ProjectDir->Some(ok, box projectdir) | __VSHPROPID.VSHPROPID_OwnerKey->Some(ok, box guid) | _ -> Some(fail,null) else None let inner = Vs.DelegateHierarchy(inner, getCanonicalName=getCanonicalName,getProperty=getProperty) setInner hier inner let rec getLastSiblingId (hier:IVsHierarchy) (last:uint32) = let hr,next = hier.GetProperty(last, int32 __VSHPROPID.VSHPROPID_NextSibling) if hr = VSConstants.S_OK then let nid:int32 = downcast next getLastSiblingId hier (uint32 nid) else last let addChild (hier:IVsHierarchy) parentItemId childItemId filename = let hr, child = hier.GetProperty(parentItemId, int32 __VSHPROPID.VSHPROPID_FirstChild) let inner = getInner hier let cid = (int32)childItemId // VS is confused about whether it wants item IDs to be signed or unsigned. let getCanonicalName id = if id = childItemId then Some(ok,filename) else None if hr = VSConstants.S_OK then // There's already a first child, add as a sibling let childi32:int32 = downcast child let lastSiblingId = getLastSiblingId hier (uint32 childi32) let getProperty id prop = if id = lastSiblingId then match prop with | __VSHPROPID.VSHPROPID_NextSibling -> Some(ok, box cid) | _ -> None else if id = childItemId then match prop with | __VSHPROPID.VSHPROPID_Name-> Some(ok, box filename) | __VSHPROPID.VSHPROPID_NextSibling -> Some(fail, null) | _ -> None else None let inner = Vs.DelegateHierarchy(inner, getProperty=getProperty, getCanonicalName=getCanonicalName) setInner hier inner else let getProperty id prop = if id = parentItemId then match prop with | __VSHPROPID.VSHPROPID_FirstChild -> Some(ok, box cid) | _ -> None else if id = childItemId then match prop with | __VSHPROPID.VSHPROPID_Name-> Some(ok, box filename) | __VSHPROPID.VSHPROPID_NextSibling -> Some(fail, null) | _ -> None else None let inner = Vs.DelegateHierarchy(inner, getProperty=getProperty, getCanonicalName=getCanonicalName) setInner hier inner let addRootChild hier childItemId filename = addChild hier VSConstants.VSITEMID_ROOT childItemId filename // IVsTextManager --------------------------------------------------------------------------------------------------------- let createTextManager() = Vs.DelegateTextManager (Vs.MakeTextManager()) let setActiveView tm (view:IVsTextView) = let inner = getInner tm let getActiveView (_mustHaveFocus:int) (_buffer:IVsTextBuffer) = Some(ok,view) let inner = Vs.DelegateTextManager(inner, getActiveView=getActiveView) setInner tm inner type MuxLogger() = let mutable innerLoggers = [] let mutable iEventSource = null member x.Add(logger : ILogger) = innerLoggers <- logger :: innerLoggers if iEventSource <> null then logger.Initialize(iEventSource) // hacky, but works well enough for unit tests, unfortunately 'register' calls can come after 'initialize' call interface ILogger with member x.Initialize(eventSource) = innerLoggers |> List.iter (fun l -> l.Initialize(eventSource)) iEventSource <- eventSource member x.Shutdown() = innerLoggers |> List.iter (fun l -> l.Shutdown()) iEventSource <- null member x.Parameters with get() = match innerLoggers with [] -> "" | h::t -> h.Parameters and set(s) = innerLoggers |> List.iter (fun l -> l.Parameters <- s) member x.Verbosity with get() = match innerLoggers with [] -> LoggerVerbosity.Normal | h::t -> h.Verbosity and set(s) = innerLoggers |> List.iter (fun l -> l.Verbosity <- s) ///////////////////////////////// // mocks let err(line) : int = printfn "err() called on line %s with %s" line System.Environment.StackTrace failwith "not implemented" let nothing() = 0 let vsShell() = let dict = new Dictionary() let shell = { new IVsShell with member this.AdviseBroadcastMessages(sink, cookie) = err(__LINE__) member this.AdviseShellPropertyChanges(sink, cookie) = err(__LINE__) member this.GetPackageEnum e = err(__LINE__) member this.GetProperty (propId : int, result : byref) = let value = ref (null : Object) let ok = dict.TryGetValue(propId, value) if ok then result <- !value 0 else result <- null 1 member this.IsPackageInstalled (guid, inst) = err(__LINE__) member this.IsPackageLoaded (guid, pack) = err(__LINE__) member this.LoadPackage (guid, pack) = err(__LINE__) member this.LoadPackageString (guid, id, str) = err(__LINE__) member this.LoadUILibrary(guid, flags, lib) = err(__LINE__) member this.SetProperty (propId : int, x : Object) = dict.Add(propId, x) 0 member this.UnadviseBroadcastMessages cookie = err(__LINE__) member this.UnadviseShellPropertyChanges cookie = err(__LINE__) } shell.SetProperty(int __VSSPROPID.VSSPROPID_IsInCommandLineMode, box false) |> ignore shell.SetProperty(int __VSSPROPID.VSSPROPID_InstallDirectory, box "") |> ignore shell let vsUIHierarchyWindow = { new IVsUIHierarchyWindow with member this.Init( pUIH, grfUIHWF, ppunkOut) = err(__LINE__) member this.ExpandItem( pUIH, itemid, expf) = 0 member this.AddUIHierarchy( pUIH, grfAddOptions) = err(__LINE__) member this.RemoveUIHierarchy( pUIH) = err(__LINE__) member this.SetWindowHelpTopic( lpszHelpFile, dwContext) = err(__LINE__) member this.GetItemState( pHier, itemid, dwStateMask, pdwState) = 0 member this.FindCommonSelectedHierarchy( grfOpt, lppCommonUIH) = err(__LINE__) member this.SetCursor( hNewCursor, phOldCursor) = err(__LINE__) member this.GetCurrentSelection( ppHier, pitemid, ppMIS) = err(__LINE__) } let vsWindowFrame = { new IVsWindowFrame with member this.Show() = err(__LINE__) member this.Hide() = err(__LINE__) member this.IsVisible() = err(__LINE__) member this.ShowNoActivate() = err(__LINE__) member this.CloseFrame( grfSaveOptions) = err(__LINE__) member this.SetFramePos( dwSFP, rguidRelativeTo, x, y, cx, cy) = err(__LINE__) member this.GetFramePos( pdwSFP, pguidRelativeTo, px, py, pcx, pcy) = err(__LINE__) member this.GetProperty( propid, pvar : byref) = pvar <- vsUIHierarchyWindow 0 member this.SetProperty( propid, var) = err(__LINE__) member this.GetGuidProperty( propid, pguid) = err(__LINE__) member this.SetGuidProperty( propid, rguid) = err(__LINE__) member this.QueryViewInterface( riid, ppv) = err(__LINE__) member this.IsOnScreen( pfOnScreen) = err(__LINE__) } let mutable vsUIShellShowMessageBoxResult = None let vsUIShell = { new IVsUIShell with member this.GetToolWindowEnum( ppenum) = err(__LINE__) member this.GetDocumentWindowEnum( ppenum) = // cons up a fake empty enumerator (e.g. don't really support this) ppenum <- { new IEnumWindowFrames with member this.Next(celt, rgelt, pceltFetched) = pceltFetched <- 0u; 0 member this.Skip(celt) = 0 member this.Reset() = 0 member this.Clone(ppenum) = ppenum <- this; 0 } 0 member this.FindToolWindow( grfFTW, rPersistenceSlot, ppWindowFrame: byref ) = ppWindowFrame <- vsWindowFrame 0 member this.CreateToolWindow( grfCTW, dwToolWindowId, punkTool, rclsidTool, rPersistenceSlot, rAutoActivate, psp, pszCaption, pfDefaultPosition, ppWindowFrame) = err(__LINE__) member this.CreateDocumentWindow( grfCDW, pszMkDocument, pUIH, itemid, punkDocView, punkDocData, rEditorType, pszPhysicalView, rCmdUI, psp, pszOwnerCaption, pszEditorCaption, pfDefaultPosition, ppWindowFrame) = err(__LINE__) member this.SetErrorInfo( hr, pszDescription, dwReserved, pszHelpKeyword, pszSource) = err(__LINE__) member this.ReportErrorInfo( hr) = err(__LINE__) member this.GetDialogOwnerHwnd( phwnd) = err(__LINE__) member this.EnableModeless( fEnable) = err(__LINE__) member this.SaveDocDataToFile( grfSave, pPersistFile, pszUntitledPath, pbstrDocumentNew, pfCanceled) = err(__LINE__) member this.SetupToolbar( hwnd, ptwt, pptwth) = err(__LINE__) member this.SetForegroundWindow() = err(__LINE__) member this.TranslateAcceleratorAsACmd( pMsg) = err(__LINE__) member this.UpdateCommandUI( fImmediateUpdate) = err(__LINE__) member this.UpdateDocDataIsDirtyFeedback( docCookie, fDirty) = err(__LINE__) member this.RefreshPropertyBrowser( dispid) = err(__LINE__) member this.SetWaitCursor() = err(__LINE__) member this.PostExecCommand( pCmdGroup, nCmdID, nCmdexecopt, pvaIn) = err(__LINE__) member this.ShowContextMenu( dwCompRole, rclsidActive, nMenuId, pos, pCmdTrgtActive) = err(__LINE__) member this.ShowMessageBox( dwCompRole, rclsidComp, pszTitle, pszText, pszHelpFile, dwHelpContextID, msgbtn, msgdefbtn, msgicon, fSysAlert, pnResult) = match vsUIShellShowMessageBoxResult with | None -> err(__LINE__) | Some(result) -> pnResult <- result; VSConstants.S_OK member this.SetMRUComboText( pCmdGroup, dwCmdID, lpszText, fAddToList) = err(__LINE__) member this.SetToolbarVisibleInFullScreen( pCmdGroup, dwToolbarId, fVisibleInFullScreen) = err(__LINE__) member this.FindToolWindowEx( grfFTW, rPersistenceSlot, dwToolWinId, ppWindowFrame : byref ) = err(__LINE__) member this.GetAppName( pbstrAppName) = err(__LINE__) member this.GetVSSysColor( dwSysColIndex, pdwRGBval) = err(__LINE__) member this.SetMRUComboTextW( pCmdGroup, dwCmdID, pwszText, fAddToList) = err(__LINE__) member this.PostSetFocusMenuCommand( pCmdGroup, nCmdID) = err(__LINE__) member this.GetCurrentBFNavigationItem( ppWindowFrame, pbstrData, ppunk) = err(__LINE__) member this.AddNewBFNavigationItem( pWindowFrame, bstrData, punk, fReplaceCurrent) = err(__LINE__) member this.OnModeChange( dbgmodeNew) = err(__LINE__) member this.GetErrorInfo( pbstrErrText) = err(__LINE__) member this.GetOpenFileNameViaDlg( pOpenFileName) = err(__LINE__) member this.GetSaveFileNameViaDlg( pSaveFileName) = err(__LINE__) member this.GetDirectoryViaBrowseDlg( pBrowse) = err(__LINE__) member this.CenterDialogOnWindow( hwndDialog, hwndParent) = err(__LINE__) member this.GetPreviousBFNavigationItem( ppWindowFrame, pbstrData, ppunk) = err(__LINE__) member this.GetNextBFNavigationItem( ppWindowFrame, pbstrData, ppunk) = err(__LINE__) member this.GetURLViaDlg( pszDlgTitle, pszStaticLabel, pszHelpTopic, pbstrURL) = err(__LINE__) member this.RemoveAdjacentBFNavigationItem( rdDir) = err(__LINE__) member this.RemoveCurrentNavigationDupes( rdDir) = err(__LINE__) } // peekhole to IVsTrackProjectDocuments2 - allows to receive notifications about removed files type public IVsTrackProjectDocuments2Listener = abstract member OnAfterRemoveFiles : IEvent let vsTrackProjectDocuments2 = let onAfterRemoveFiles = Event<_>() let track = { new IVsTrackProjectDocuments2 with member this.BeginBatch() = err(__LINE__) member this.EndBatch() = err(__LINE__) member this.Flush() = err(__LINE__) member this.OnQueryAddFiles(pProject, cFiles, rgpszMkDocuments, rgFlags, pSummaryResult, rgResults) = pSummaryResult.[0] <- VSQUERYADDFILERESULTS.VSQUERYADDFILERESULTS_AddOK 0 member this.OnAfterAddFilesEx( pProject, cFiles, rgpszMkDocuments, rgFlags) = let proj = (pProject :?> FSharpProjectNode) :> IVsTrackProjectDocumentsEvents2 proj.OnAfterAddFilesEx(1, cFiles, [|pProject|], Array.create cFiles 0, rgpszMkDocuments, rgFlags) member this.OnAfterAddFiles( pProject, cFiles, rgpszMkDocuments) = nothing() member this.OnAfterAddDirectoriesEx( pProject, cDirectories, rgpszMkDocuments, rgFlags) = err(__LINE__) member this.OnAfterAddDirectories( pProject, cDirectories, rgpszMkDocuments) = err(__LINE__) member this.OnAfterRemoveFiles( pProject, cFiles, rgpszMkDocuments, rgFlags) = onAfterRemoveFiles.Trigger(pProject, cFiles, rgpszMkDocuments, rgFlags) 0 member this.OnAfterRemoveDirectories( pProject, cDirectories, rgpszMkDocuments, rgFlags) = err(__LINE__) member this.OnQueryRenameFiles( pProject, cFiles, rgszMkOldNames, rgszMkNewNames, rgFlags, pSummaryResult, rgResults) = err(__LINE__) member this.OnQueryRenameFile( pProject, pszMkOldName, pszMkNewName, flags, outpfRenameCanContinue) = outpfRenameCanContinue <- 1 0 member this.OnAfterRenameFiles( pProject, cFiles, rgszMkOldNames, rgszMkNewNames, rgFlags) = err(__LINE__) member this.OnAfterRenameFile( pProject, pszMkOldName, pszMkNewName, flags) = 0 member this.OnQueryRenameDirectories( pProject, cDirs, rgszMkOldNames, rgszMkNewNames, rgFlags, pSummaryResult, rgResults) = err(__LINE__) member this.OnAfterRenameDirectories( pProject, cDirs, rgszMkOldNames, rgszMkNewNames, rgFlags) = err(__LINE__) member this.AdviseTrackProjectDocumentsEvents( pEventSink, pdwCookie) = nothing() member this.UnadviseTrackProjectDocumentsEvents( dwCookie) = nothing() member this.OnQueryAddDirectories( pProject, cDirectories, rgpszMkDocuments, rgFlags, pSummaryResult, rgResults) = err(__LINE__) member this.OnQueryRemoveFiles( pProject, cFiles, rgpszMkDocuments, rgFlags, pSummaryResult, rgResults) = if rgResults <> null then for i = 0 to rgResults.Length-1 do rgResults.[i] <- VSQUERYREMOVEFILERESULTS.VSQUERYREMOVEFILERESULTS_RemoveOK pSummaryResult.[0] <- VSQUERYREMOVEFILERESULTS.VSQUERYREMOVEFILERESULTS_RemoveOK 0 member this.OnQueryRemoveDirectories( pProject, cDirectories, rgpszMkDocuments, rgFlags, pSummaryResult, rgResults) = err(__LINE__) member this.OnAfterSccStatusChanged( pProject, cFiles, rgpszMkDocuments, rgdwSccStatus) = err(__LINE__) interface IVsTrackProjectDocuments2Listener with member this.OnAfterRemoveFiles = onAfterRemoveFiles.Publish } track let vsTaskList() = { new IVsTaskList with member this.RegisterTaskProvider( pProvider, pdwProviderCookie : byref) = pdwProviderCookie <- 0u 0 member this.UnregisterTaskProvider( dwProviderCookie) = 0 member this.RefreshTasks( dwProviderCookie) = 0 member this.EnumTaskItems( ppenum : byref ) = err(__LINE__) member this.AutoFilter( cat) = err(__LINE__) member this.UpdateProviderInfo( dwProviderCookie) = err(__LINE__) member this.SetSilentOutputMode( fSilent) = err(__LINE__) member this.DumpOutput( dwReserved, cat, pstmOutput, pfOutputWritten : byref ) = err(__LINE__) member this.RegisterCustomCategory( guidCat : byref, dwSortOrder, pCat) = err(__LINE__) member this.UnregisterCustomCategory( catAssigned) = err(__LINE__) member this.AutoFilter2( guidCustomView : byref) = err(__LINE__) } let vsMonitorSelection = { new IVsMonitorSelection with member this.GetCurrentSelection(ppHier, pitemid, ppMIS, ppSC) = 0 member this.AdviseSelectionEvents( pSink, pdwCookie) = 0 member this.UnadviseSelectionEvents( dwCookie) = err(__LINE__) member this.GetCurrentElementValue( elementid, pvarValue) = err(__LINE__) member this.GetCmdUIContextCookie( rguidCmdUI, pdwCmdUICookie) = err(__LINE__) member this.IsCmdUIContextActive( dwCmdUICookie, pfActive) = err(__LINE__) member this.SetCmdUIContext( dwCmdUICookie, fActive) = err(__LINE__) } let vsFileChangeManager = { new IVsFileChangeEx with member this.AdviseDirChange(pszDir, fWatchSubDir, pFCE, pvsCookie) = err(__LINE__) member this.AdviseFileChange(pszMkDocument, grfFilter, pFCE, pvsCookie) = nothing() member this.IgnoreFile(vscookie, pszMkDocument, fIgnore) = 0 member this.SyncFile(pszMkDocument) = err(__LINE__) member this.UnadviseDirChange(vscookie) = err(__LINE__) member this.UnadviseFileChange(vscookie) = nothing() } #if NOT_YET_NEEDED let vsExtensibility3 = { new IVsExtensibility3 with member this.GetProperties(pParent, pdispPropObj, ppProperties) = err(__LINE__) member this.RunWizardFile(bstrWizFilename, hwndOwner, vContextParams, pResult) = err(__LINE__) member this.EnterAutomationFunction() = err(__LINE__) member this.ExitAutomationFunction() = err(__LINE__) member this.IsInAutomationFunction(pfInAutoFunc) = err(__LINE__) member this.GetUserControl( fUserControl) = err(__LINE__) member this.SetUserControl( fUserControl) = err(__LINE__) member this.SetUserControlUnlatched( fUserControl) = err(__LINE__) member this.LockServer( vb) = err(__LINE__) member this.GetLockCount( pCount) = err(__LINE__) member this.TestForShutdown( fShutdown) = err(__LINE__) member this.GetGlobalsObject( extractFrom, ppGlobals) = err(__LINE__) member this.GetConfigMgr( pIVsProject, itemid, ppCfgMgr) = err(__LINE__) member this.FireMacroReset() = err(__LINE__) member this.GetDocumentFromDocCookie( lDocCookie, ppDoc) = err(__LINE__) member this.IsMethodDisabled( pGUID, dispid) = err(__LINE__) member this. SetSuppressUI( In) = err(__LINE__) member this.GetSuppressUI( pOut) = err(__LINE__) member this.FireProjectsEvent_ItemAdded( project) = err(__LINE__) member this.FireProjectsEvent_ItemRemoved( project) = err(__LINE__) member this.FireProjectsEvent_ItemRenamed( project, oldName) = err(__LINE__) member this.FireProjectItemsEvent_ItemAdded( projectItem) = err(__LINE__) member this.FireProjectItemsEvent_ItemRemoved( projectItem) = err(__LINE__) member this.FireProjectItemsEvent_ItemRenamed( projectItem, oldName) = err(__LINE__) member this.IsFireCodeModelEventNeeded( vbNeeded) = err(__LINE__) member this.RunWizardFileEx( bstrWizFilename, hwndOwner, vContextParams, vCustomParams, pResult) = err(__LINE__) member this.FireCodeModelEvent3( dispid, pParent, pElement, changeKind) = err(__LINE__) } #endif let vsSolution = { new IVsSolution with member x.GetProjectEnum(grfEnumFlags, rguidEnumOnlyThisType, ppenum) = err(__LINE__) member x.CreateProject(rguidProjectType, lpszMoniker, lpszLocation, lpszName, grfCreateFlags, iidProject,ppProject) = err(__LINE__) member x.GenerateUniqueProjectName(lpszRoot, outpbstrProjectName) = err(__LINE__) member x.GetProjectOfGuid(rguidProjectID, outppHierarchy) = err(__LINE__) member x.GetGuidOfProject(pHierarchy,pguidProjectID) = err(__LINE__) member x.GetSolutionInfo( outpbstrSolutionDirectory, outpbstrSolutionFile, outpbstrUserOptsFile) = outpbstrSolutionDirectory <- "" outpbstrSolutionFile <- "" outpbstrUserOptsFile <- "" 0 member x.AdviseSolutionEvents( pSink, outpdwCookie) = err(__LINE__) member x.UnadviseSolutionEvents(dwCookie) = err(__LINE__) member x.SaveSolutionElement(grfSaveOpts, pHier, docCookie) = err(__LINE__) member x.CloseSolutionElement(grfCloseOpts, pHier, docCookie) = err(__LINE__) member x.GetProjectOfProjref(pszProjref, outppHierarchy, outpbstrUpdatedProjref, puprUpdateReason) = err(__LINE__) member x.GetProjrefOfProject(pHierarchy, outpbstrProjref) = err(__LINE__) member x.GetProjectInfoOfProjref(pszProjref, propid, pvar) = err(__LINE__) member x.AddVirtualProject(pHierarchy, grfAddVPFlags) = err(__LINE__) member x.GetItemOfProjref(pszProjref, outppHierarchy, outpitemid, outpbstrUpdatedProjref, puprUpdateReason) = err(__LINE__) member x.GetProjrefOfItem(pHierarchy, itemid, outpbstrProjref) = err(__LINE__) member x.GetItemInfoOfProjref(pszProjref, propid, pvar) = err(__LINE__) member x.GetProjectOfUniqueName(pszUniqueName, outppHierarchy) = err(__LINE__) member x.GetUniqueNameOfProject(pHierarchy, outpbstrUniqueName) = err(__LINE__) member x.GetProperty(propid, pvar) = err(__LINE__) member x.SetProperty(propid, var) = err(__LINE__) member x.OpenSolutionFile(grfOpenOpts, pszFilename) = err(__LINE__) member x.QueryEditSolutionFile( outpdwEditResult) = err(__LINE__) member x.CreateSolution(lpszLocation, lpszName, grfCreateFlags) = err(__LINE__) member x.GetProjectFactory(dwReserved, pguidProjectType, pszMkProject, ppProjectFactory) = err(__LINE__) member x.GetProjectTypeGuid(dwReserved, pszMkProject,pguidProjectType) = err(__LINE__) member x.OpenSolutionViaDlg(pszStartDirectory, fDefaultToAllProjectsFilter) = err(__LINE__) member x.AddVirtualProjectEx(pHierarchy, grfAddVPFlags, rguidProjectID) = err(__LINE__) member x.QueryRenameProject( pProject, pszMkOldName, pszMkNewName, dwReserved, pfRenameCanContinue) = err(__LINE__) member x.OnAfterRenameProject( pProject, pszMkOldName, pszMkNewName, dwReserved) = err(__LINE__) member x.RemoveVirtualProject(pHierarchy, grfRemoveVPFlags) = err(__LINE__) member x.CreateNewProjectViaDlg(pszExpand, pszSelect, dwReserved) = err(__LINE__) member x.GetVirtualProjectFlags(pHierarchy, outpgrfAddVPFlags) = err(__LINE__) member x.GenerateNextDefaultProjectName(pszBaseName, pszLocation, outpbstrProjectName) = err(__LINE__) member x.GetProjectFilesInSolution(grfGetOpts, cProjects, rgbstrProjectNames, outpcProjectsFetched) = err(__LINE__) member x.CanCreateNewProjectAtLocation(fCreateNewSolution, pszFullProjectFilePath, pfCanCreate) = err(__LINE__) } let dummyEmptyIEnumRunningDocuments = {new IEnumRunningDocuments with member ierd.Clone(ppenum) = err(__LINE__) member ierd.Next(celt, rgelt, pceltFetched) = pceltFetched <- 0u VSConstants.S_FALSE member ierd.Reset() = 0 member ierd.Skip(celt) = err(__LINE__) } let mutable vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock = null : IVsHierarchy let mutable vsRunningDocumentTableNextRenameDocumentCallThrows = false let vsRunningDocumentTable = {new IVsRunningDocumentTable with member rdt.RegisterAndLockDocument(grfRDTLockType, pszMkDocument, pHier, itemid, punkDocData, pdwCookie) = err(__LINE__) member rdt.LockDocument(grfRDTLockType, dwCookie) = err(__LINE__) member rdt.UnlockDocument(grfRDTLockType, dwCookie) = err(__LINE__) member rdt.FindAndLockDocument(dwRDTLockType, pszMkDocument, ppHier, pitemid, ppunkDocData, pdwCookie) = ppHier <- vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock 0 member rdt.RenameDocument(pszMkDocumentOld, pszMkDocumentNew, pHier, itemidNew) = if vsRunningDocumentTableNextRenameDocumentCallThrows then vsRunningDocumentTableNextRenameDocumentCallThrows <- false VSConstants.E_FAIL else 0 member rdt.AdviseRunningDocTableEvents(pSink, pdwCookie) = err(__LINE__) member rdt.UnadviseRunningDocTableEvents(dwCookie) = err(__LINE__) member rdt.GetDocumentInfo(docCookie, pgrfRDTFlags, pdwReadLocks, pdwEditLocks, pbstrMkDocument, ppHier, pitemid, ppunkDocData) = err(__LINE__) member rdt.NotifyDocumentChanged(dwCookie, grfDocChanged) = err(__LINE__) member rdt.NotifyOnAfterSave(dwCookie) = err(__LINE__) member rdt.GetRunningDocumentsEnum(ppenum) = ppenum <- dummyEmptyIEnumRunningDocuments // just lie, we don't mock enough of this 0 member rdt.SaveDocuments(grfSaveOpts, pHier, itemid, docCookie) = err(__LINE__) member rdt.NotifyOnBeforeSave(dwCookie) = err(__LINE__) member rdt.RegisterDocumentLockHolder(grfRDLH, dwCookie, pLockHolder, pdwLHCookie) = err(__LINE__) member rdt.UnregisterDocumentLockHolder(dwLHCookie) = err(__LINE__) member rdt.ModifyDocumentFlags(docCookie, grfFlags, fSet) = err(__LINE__) } let MockVsBuildManagerAccessor() = let muxLogger = ref Unchecked.defaultof { new Microsoft.VisualStudio.Shell.Interop.IVsBuildManagerAccessor with member x.RegisterLogger(submissionId, logger : obj) = let iLogger = logger :?> ILogger (!muxLogger).Add(iLogger) 0 member x.ClaimUIThreadForBuild() = 0 member x.ReleaseUIThreadForBuild() = 0 member x.UnregisterLoggers(submissionId) = 0 member x.BeginDesignTimeBuild() = muxLogger := new MuxLogger() let buildParameters = new BuildParameters(Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection) buildParameters.Loggers <- ([ ((!muxLogger) :> ILogger) ] :> System.Collections.Generic.IEnumerable) buildParameters.HostServices <- Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.HostServices BuildManager.DefaultBuildManager.BeginBuild(buildParameters) 0 member x.EndDesignTimeBuild() = BuildManager.DefaultBuildManager.EndBuild() muxLogger := Unchecked.defaultof 0 member x.GetCurrentBatchBuildId(batchId) = batchId <- 0u // in the product, this would be non-zero if there are any in-progress builds, but we are not mocking solution manager, so we just always report no build in progress for unit tests 0 member x.GetSolutionConfiguration(rootProject: obj, xmlFragment: byref) = xmlFragment <- "" 0 member x.Escape(unescapedValue: string, escapedValue: byref) = 0 member x.Unescape(escapedValue: string, unescapedValue: byref) = 0 } let vsTrackProjectRetargeting = // This very simple mock will just do nothing but assert that the cookies // match up for advise/unadvise let _cookie = ref 0u { new IVsTrackProjectRetargeting with member this.OnSetTargetFramework(hier, currentFx, newFx, callback, reload) = 0 member this.AdviseTrackProjectRetargetingEvents(sink, cookie) = _cookie := cookie 0 member this.UnadviseTrackProjectRetargetingEvents(cookie) = Debug.Assert((!_cookie = cookie), sprintf "Invalid cookie for advise/unadvise!") 0 member this.AdviseTrackBatchRetargetingEvents(sink, cookie) = 0 member this.UnadviseTrackBatchRetargetingEvents(cookie) = 0 member this.BeginRetargetingBatch() = 0 member this.BatchRetargetProject(hier, newFx, unloadProjectIfErrorOrCancel) = 0 member this.EndRetargetingBatch() = 0 } let vsTargetFrameworkAssembliesN (n:uint32) = { new IVsTargetFrameworkAssemblies with member this.GetSupportedFrameworks(pTargetFrameworks) = notimpl() member this.GetTargetFrameworkDescription(targetVersion, pszDescription) = notimpl() member this.GetSystemAssemblies(targetVersion, pAssemblies) = notimpl() member this.IsSystemAssembly(szAssemblyFile, pIsSystem, pTargetFrameworkVersion) = notimpl() member this.GetRequiredTargetFrameworkVersion(szAssemblyFile, pTargetFrameworkVersion) = notimpl() member this.GetRequiredTargetFrameworkVersionFromDependency(szAssemblyFile, pTargetFrameworkVersion) = pTargetFrameworkVersion <- n 0 } let vsTargetFrameworkAssemblies20 = vsTargetFrameworkAssembliesN 0x20000u let vsTargetFrameworkAssemblies30 = vsTargetFrameworkAssembliesN 0x30000u let vsTargetFrameworkAssemblies35 = vsTargetFrameworkAssembliesN 0x30005u let vsTargetFrameworkAssemblies40 = vsTargetFrameworkAssembliesN 0x40000u let vsFrameworkMultiTargeting = { new IVsFrameworkMultiTargeting with member this.GetInstallableFrameworkForTargetFx(fx, res) = let fn = new System.Runtime.Versioning.FrameworkName(fx) if String.IsNullOrEmpty(fn.Profile) then res <- fn.FullName else res <- fn.Profile 0 member this.IsReferenceableInTargetFx(a,b,c) = notimpl() member this.GetTargetFramework(a,b,c) = notimpl() member this.GetSupportedFrameworks(a) = notimpl() member this.GetFrameworkAssemblies(a,b,c) = notimpl() member this.CheckFrameworkCompatibility(a,b,c) = notimpl() member this.ResolveAssemblyPath(a,b,c) = notimpl() member this.GetDisplayNameForTargetFx(a,b) = notimpl() member this.ResolveAssemblyPathsInTargetFx(a,b,c,d,e) = notimpl() } // This provides a mock for LocalRegistry because for the multitargeting // code we use this to create a text buffer let vsLocalRegistry f = { new ILocalRegistry3 with member this.CreateInstance(a,b,c,d,e) = e <- Marshal.GetIUnknownForObject(f()) 0 member this.GetTypeLibOfClsid(a,b) = notimpl() member this.GetClassObjectOfClsid(a,b,c,d,e) = notimpl() member this.GetLocalRegistryRoot(a) = a <- "" 0 member this.CreateManagedInstance(a,b,c,d,e) = notimpl() member this.GetClassObjectOfManagedClass(a,b,c,d,e) = notimpl() interface ILocalRegistry2 with member this.CreateInstance(a,b,c,d,e) = notimpl() member this.GetTypeLibOfClsid(a,b) = notimpl() member this.GetClassObjectOfClsid(a,b,c,d,e) = notimpl() member this.GetLocalRegistryRoot(a) = a <- "" 0 interface ILocalRegistry with member this.CreateInstance(a,b,c,d,e) = notimpl() member this.GetTypeLibOfClsid(a,b) = notimpl() member this.GetClassObjectOfClsid(a,b,c,d,e) = notimpl() } let MakeVsSolutionBuildManagerAndConfigChangeNotifier() = let id = ref 0u let listeners = new Dictionary() let configDict = new Dictionary() let configChangeNotifier(h : IVsHierarchy, s : string) = if configDict.ContainsKey(h) then configDict.[h] <- s else configDict.Add(h,s) for kvp in listeners do kvp.Value.OnActiveProjectCfgChange(h) |> ignore let vsSolutionBuildManager = { new IVsSolutionBuildManager with member x.DebugLaunch(grfLaunch) = err(__LINE__) member x.StartSimpleUpdateSolutionConfiguration(dwFlags, dwDefQueryResults, fSuppressUI) = err(__LINE__) member x.AdviseUpdateSolutionEvents( pIVsUpdateSolutionEvents, outpdwCookie : byref ) = listeners.Add(!id, pIVsUpdateSolutionEvents) id := !id + 1u 0 member x.UnadviseUpdateSolutionEvents(dwCookie) = listeners.Remove(dwCookie) |> ignore 0 member x.UpdateSolutionConfigurationIsActive(pfIsActive) = err(__LINE__) member x.CanCancelUpdateSolutionConfiguration(pfCanCancel) = err(__LINE__) member x.CancelUpdateSolutionConfiguration() = err(__LINE__) member x.QueryDebugLaunch(grfLaunch, pfCanLaunch) = err(__LINE__) member x.QueryBuildManagerBusy(pfBuildManagerBusy) = err(__LINE__) member x.FindActiveProjectCfg( pvReserved1, pvReserved2, pIVsHierarchy_RequestedProject, ppIVsProjectCfg_Active) = let mutable s = "" if not(configDict.TryGetValue(pIVsHierarchy_RequestedProject, &s)) then s <- "" let (_, vsCfgProvider : IVsCfgProvider) =(pIVsHierarchy_RequestedProject :?> IVsGetCfgProvider).GetCfgProvider() let cfgName = ConfigCanonicalName(s) let (_, cfg : IVsCfg) = (vsCfgProvider :?> IVsCfgProvider2).GetCfgOfName(cfgName.ConfigName, cfgName.Platform) ppIVsProjectCfg_Active.[0] <- downcast cfg 0 member x.get_IsDebug(pfIsDebug) = err(__LINE__) member x.put_IsDebug( fIsDebug) = err(__LINE__) member x.get_CodePage( outpuiCodePage) = err(__LINE__) member x.put_CodePage(uiCodePage) = err(__LINE__) member x.StartSimpleUpdateProjectConfiguration( pIVsHierarchyToBuild, pIVsHierarchyDependent, pszDependentConfigurationCanonicalName, dwFlags, dwDefQueryResults, fSuppressUI) = err(__LINE__) member x.get_StartupProject( ppHierarchy) = err(__LINE__) member x.set_StartupProject( pHierarchy) = err(__LINE__) member x.GetProjectDependencies( pHier, celt, rgpHier, pcActual) = err(__LINE__) interface IVsSolutionBuildManager2 with member x.AdviseUpdateSolutionEvents(_pIVsUpdateSolutionEvents, _pdwCookie) = 0 member x.CalculateProjectDependencies() = err(__LINE__) member x.CanCancelUpdateSolutionConfiguration(_pfCanCancel) = err(__LINE__) member x.CancelUpdateSolutionConfiguration() = err(__LINE__) member x.DebugLaunch(_grfLaunch) = err(__LINE__) member x.FindActiveProjectCfg(_pvReserved1, _pvReserved2, _pIVsHierarchy_RequestedProject, _ppIVsProjectCfg_Active) = err(__LINE__) member x.GetProjectDependencies(_pHier, _celt, _rgpHier, _pcActual) = err(__LINE__) member x.QueryBuildManagerBusy(_pfBuildManagerBusy) = err(__LINE__) member x.QueryDebugLaunch(_grfLaunch, _pfCanLaunch) = err(__LINE__) member x.QueryProjectDependency(_pHier, _pHierDependentOn, _pfIsDependentOn) = err(__LINE__) member x.SaveDocumentsBeforeBuild(_pHier, _itemid, _docCookie) = err(__LINE__) member x.StartSimpleUpdateProjectConfiguration(_pIVsHierarchyToBuild, _pIVsHierarchyDependent, _pszDependentConfigurationCanonicalName, _dwFlags, _dwDefQueryResults, _fSuppressUI) = err(__LINE__) member x.StartSimpleUpdateSolutionConfiguration(_dwFlags, _dwDefQueryResults, _fSuppressUI) = err(__LINE__) member x.StartUpdateProjectConfigurations(_cProjs, _rgpHierProjs, _dwFlags, _fSuppressUI) = err(__LINE__) member x.StartUpdateSpecificProjectConfigurations(_cProjs, _rgpHier, _rgpcfg, _rgdwCleanFlags, _rgdwBuildFlags, _rgdwDeployFlags, _dwFlags, _fSuppressUI) = err(__LINE__) member x.UnadviseUpdateSolutionEvents(_dwCookie) = err(__LINE__) member x.UpdateSolutionConfigurationIsActive(_pfIsActive) = err(__LINE__) member x.get_CodePage(_puiCodePage) = err(__LINE__) member x.get_IsDebug(_pfIsDebug) = err(__LINE__) member x.get_StartupProject(_ppHierarchy) = err(__LINE__) member x.put_CodePage(_uiCodePage) = err(__LINE__) member x.put_IsDebug(_fIsDebug) = err(__LINE__) member x.set_StartupProject(_pHierarchy) = err(__LINE__) interface IVsSolutionBuildManager3 with member x.AdviseUpdateSolutionEvents3(a,b) = 0 member x.AreProjectsUpToDate(a) = err(__LINE__) member x.HasHierarchyChangedSinceLastDTEE () = err(__LINE__) member x.QueryBuildManagerBusyEx(a) = err(__LINE__) member x.UnadviseUpdateSolutionEvents3(a) = 0 } vsSolutionBuildManager, configChangeNotifier let MakeMockServiceProviderAndConfigChangeNotifierNoTargetFrameworkAssembliesService() = let vsSolutionBuildManager, configChangeNotifier = MakeVsSolutionBuildManagerAndConfigChangeNotifier() let sp = new OleServiceProvider() // allows to receive notifications about called methods of IVsTrackProjectDocuments2 interface sp.AddService(typeof, box vsTrackProjectDocuments2, false) sp.AddService(typeof, box vsTrackProjectDocuments2, false) sp.AddService(typeof, box (vsShell()), false) sp.AddService(typeof, box vsUIShell, false) sp.AddService(typeof, box(vsTaskList()), false) sp.AddService(typeof, box vsMonitorSelection, false) sp.AddService(typeof, box vsFileChangeManager, false) #if NOT_YET_NEEDED sp.AddService(typeof, box vsExtensibility3, false) #endif sp.AddService(typeof, box vsSolution, false) sp.AddService(typeof, box vsSolutionBuildManager, false) sp.AddService(typeof, box vsRunningDocumentTable, false) sp.AddService(typeof, box (MockVsBuildManagerAccessor()), false) sp.AddService(typeof, box vsTrackProjectRetargeting, false) sp, configChangeNotifier let MakeMockServiceProviderAndConfigChangeNotifier20() = let sp, ccn = MakeMockServiceProviderAndConfigChangeNotifierNoTargetFrameworkAssembliesService() sp.AddService(typeof, box vsTargetFrameworkAssemblies20, false) sp.AddService(typeof, box vsFrameworkMultiTargeting, false) sp, ccn let MakeMockServiceProviderAndConfigChangeNotifier30() = let sp, ccn = MakeMockServiceProviderAndConfigChangeNotifierNoTargetFrameworkAssembliesService() sp.AddService(typeof, box vsTargetFrameworkAssemblies30, false) sp.AddService(typeof, box vsFrameworkMultiTargeting, false) sp, ccn let MakeMockServiceProviderAndConfigChangeNotifier35() = let sp, ccn = MakeMockServiceProviderAndConfigChangeNotifierNoTargetFrameworkAssembliesService() sp.AddService(typeof, box vsTargetFrameworkAssemblies35, false) sp.AddService(typeof, box vsFrameworkMultiTargeting, false) sp, ccn let MakeMockServiceProviderAndConfigChangeNotifier40() = let sp, ccn = MakeMockServiceProviderAndConfigChangeNotifierNoTargetFrameworkAssembliesService() sp.AddService(typeof, box vsTargetFrameworkAssemblies40, false) sp.AddService(typeof, box vsFrameworkMultiTargeting, false) sp, ccn // This is the mock thing that all tests, except the multitargeting tests call. // By default, let it use the 4.0 assembly version. let MakeMockServiceProviderAndConfigChangeNotifier() = MakeMockServiceProviderAndConfigChangeNotifier40() let mockServiceProvider = let sp, _ = MakeMockServiceProviderAndConfigChangeNotifier() sp let vsOutputWindowPane(owpe : string list ref) = { new IVsOutputWindowPane with member this.Activate () = err(__LINE__) member this.Clear () = owpe := []; 0 member this.FlushToTaskList () = VSConstants.S_OK member this.GetName(pbstrPaneName) = err(__LINE__) member this.Hide () = err(__LINE__) member this.OutputString(pszOutputString) = owpe := pszOutputString :: !owpe ; 0 member this.OutputStringThreadSafe(pszOutputString) = owpe := pszOutputString :: !owpe ; 0 member this.OutputTaskItemString(pszOutputString, nPriority, nCategory, pszSubcategory, nBitmap, pszFilename, nLineNum, pszTaskItemText) = err(__LINE__) member this.OutputTaskItemStringEx(pszOutputString, nPriority, nCategory, pszSubcategory, nBitmap, pszFilename, nLineNum, pszTaskItemText, pszLookupKwd) = err(__LINE__) member this.SetName(pszPaneName) = err(__LINE__) } module internal VsActual = // Since the editor exports MEF components, we can use those components directly from unit tests without having to load too many heavy // VS assemblies. Use editor MEF components directly from the VS product. open System.ComponentModel.Composition.Hosting open System.ComponentModel.Composition.Primitives open Microsoft.VisualStudio.Text let vsInstallDir = #if FX_ATLEAST_45 let key = @"SOFTWARE\Microsoft\VisualStudio\11.0" #else let key = @"SOFTWARE\Microsoft\VisualStudio\10.0" #endif let hklm = Microsoft.Win32.Registry.LocalMachine let rkey = hklm.OpenSubKey(key) rkey.GetValue("InstallDir") :?> string let CreateEditorCatalog() = let root = vsInstallDir + @"\CommonExtensions\Microsoft\Editor" let CreateAssemblyCatalog(root, file) = let fullPath = System.IO.Path.Combine(root, file) if System.IO.File.Exists(fullPath) then new AssemblyCatalog(fullPath) else failwith("could not find " + fullPath) // (this code was mostly stolen from Roslyn) // copy this private assembly next to unit tests, otherwise assembly loader cannot find it let neededLocalAssem = vsInstallDir + @"\PrivateAssemblies\Microsoft.VisualStudio.Platform.VSEditor.Interop.dll" #if FX_ATLEAST_45 let curDir = System.IO.Path.GetDirectoryName((new System.Uri(System.Reflection.Assembly.Load("nunit.util").CodeBase)).LocalPath) // e.g. "C:\VSPro_FSharp\binaries\x86chk\SuiteBin\FSharp\" #else let curDir = System.IO.Path.GetDirectoryName((new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).LocalPath) // e.g. "C:\VSPro_FSharp\binaries\x86chk\SuiteBin\FSharp\" #endif let localCopy = System.IO.Path.Combine(curDir, System.IO.Path.GetFileName(neededLocalAssem)) System.IO.File.Copy(neededLocalAssem, localCopy, true) let list = new ResizeArray() list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Platform.VSEditor.dll")) // Must include this because several editor options are actually stored as exported information // on this DLL. Including most importantly, the tab size information list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Text.Logic.dll")) // Include this DLL to get several more EditorOptions including WordWrapStyle list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Text.UI.dll")) // Include this DLL to get more EditorOptions values list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Text.UI.Wpf.dll")) // Include this DLL to get more undo operations //list.Add(CreateAssemblyCatalog(root, "StandaloneUndo.dll")) //list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Language.StandardClassification.dll")) // list.Add(CreateAssemblyCatalog(root, "Microsoft.VisualStudio.Text.Internal.dll")) new AggregateCatalog(list) let exportProvider = new CompositionContainer(new AggregateCatalog(CreateEditorCatalog()), true, null) let iTextBufferFactoryService = exportProvider.GetExportedValue() let createTextBuffer(text:string) = iTextBufferFactoryService .CreateTextBuffer(text, iTextBufferFactoryService .TextContentType)fsharp-3.0.34/src/fsharp/Salsa/salsa.dll.config0000775000175000017500000000240412260314606020254 0ustar chrischris
fsharp-3.0.34/src/fsharp/Salsa/Salsa.fsproj0000775000175000017500000001006312260314606017500 0ustar chrischris $(MSBuildProjectDirectory)\..\.. true Debug AnyCPU 2.0 true v3.5 true {fbd4b354-dc6e-4032-8ec7-c81d8dfb1af7} Library Salsa $(NoWarn);45;47;52;58;75 --maxerrors:100 assemblyinfo.Salsa.dll.fs CompilerLocationUtils.fs UnitTestUtils.fs Always nunit.framework nunit.framework.dll ..\..\..\tools\nunit\nunit.framework.dll FSharp.Build {702a7979-bcf9-4c41-853e-3adfc9897890} True FSharp.LanguageService.Base {1c5c163c-37ea-4a3c-8ccc-0d34b74bf8ef} True FSharp.LanguageService {ee85aab7-cda0-4c4e-bda0-a64ccc413e3f} True ProjectSystem.Base {b700e38b-f8c0-4e49-b5ec-db7b7ac0c4e7} True FSharp.Compiler {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} True ProjectSystem {6196b0f8-caea-4cf1-af82-1b520f77fe44} True fsharp-3.0.34/src/fsharp/Salsa/salsa.fsi0000775000175000017500000002604712260314606017027 0ustar chrischris namespace Salsa open Microsoft.VisualStudio open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio.TextManager.Interop open Microsoft.Build.Framework open Microsoft.VisualStudio.FSharp.LanguageService.Implementation module internal Salsa = [] type HostCompile = interface ITaskHost member Compile : System.Converter * string[] * string[] -> int type TokenType = Text | Keyword | Comment | Identifier | String | Number | InactiveCode | PreprocessorKeyword | Operator /// Declaration types. type DeclarationType = | Class = 0 | Constant = 6 | FunctionType = 12 // Like 'type FunctionType=unit->unit' | Enum = 18 | EnumMember = 24 | Event = 30 | Exception = 36 | Interface = 48 | Method = 72 | FunctionValue = 74 // Like 'type Function x = 0' | Module = 84 | Namespace = 90 | Property = 102 | ValueType = 108 // Like 'type ValueType=int*int' | RareType = 120 // Bucket for unusual types like 'type AsmType = (# "!0[]" #)' | Record = 126 | DiscriminatedUnion = 132 type BuildAction = | Compile = 0 | EmbeddedResource = 1 | None = 2 type BuildResult = { ExecutableOutput : string BuildSucceeded : bool } /// An error [] type Error = member Path : string member Message : string member Context : TextSpan member Severity : Severity override ToString : unit -> string type ChangeCallBack = IVsHierarchy * string -> unit /// Hooks for controlling behaviors /// Thrown when a marker is not found when placing the cursor via VsOps exception MarkerNotFoundException of string /// Representation of an item from the completion list type CompletionItem = string * string * (unit -> string) * DeclarationType type GotoDefnResult = Microsoft.VisualStudio.FSharp.LanguageService.GotoDefinitionResult [] module GotoDefnResultExtensions = type Microsoft.VisualStudio.FSharp.LanguageService.GotoDefinitionResult with member ToOption : unit -> (TextSpan * string) option /// Representes the information that is displayed in the navigation bar type NavigationBarResult = { TypesAndModules : DropDownMember[] Members : DropDownMember[] SelectedType : int SelectedMember : int } /// Methods for simulating VisualStudio [] type ProjectBehaviorHooks = { CreateProjectHook: (*projectFilename:*)string -> (*files:*)(string*BuildAction*string option) list -> (*references:*)(string*bool) list -> (*projReferences:*)string list -> (*disabledWarnings:*)string list -> (*defines*)string list -> (*versionFile:*)string -> (*otherFlags:*)string -> (*preImportXml:*)string -> (*targetFrameworkVersion:*)string -> unit InitializeProjectHook : OpenProject -> unit MakeHierarchyHook : string->string->string->ChangeCallBack->OleServiceProvider->IVsHierarchy AddFileToHierarchyHook : string -> IVsHierarchy -> unit BuildHook : (*basename:*)string -> (*target:*)string -> IVsOutputWindowPane -> BuildResult GetMainOutputAssemblyHook : string -> string SaveHook : unit -> unit DestroyHook : unit->unit ModifyConfigurationAndPlatformHook : string->unit } and [] VsOps = { CreateVisualStudio : unit -> VisualStudio CreateSolution : VisualStudio -> OpenSolution GetOutputWindowPaneLines : VisualStudio -> string list CloseSolution : OpenSolution ->unit CreateProject : OpenSolution * string -> OpenProject CreateProjectWithHooks : OpenSolution * ProjectBehaviorHooks * string -> OpenProject NewFile : VisualStudio * string * BuildAction * string list -> File DeleteFileFromDisk : File -> unit AddFileFromText : OpenProject * string * string * BuildAction * string list -> File AddLinkedFileFromText : OpenProject*string*string*string*BuildAction*string list->File AddAssemblyReference : OpenProject * string * bool -> unit AddProjectReference : OpenProject * OpenProject -> unit ProjectDirectory : OpenProject -> string ProjectFile : OpenProject -> string SetVersionFile : OpenProject * string -> unit SetOtherFlags : OpenProject * string -> unit SetConfigurationAndPlatform : OpenProject * string -> unit AddDisabledWarning : OpenProject * string -> unit GetErrors : OpenProject -> Error list BuildProject : OpenProject * string -> BuildResult GetMainOutputAssembly : OpenProject -> string SaveProject : OpenProject -> unit OpenFileViaOpenFile : VisualStudio * string -> OpenFile OpenFile : OpenProject * string -> OpenFile GetOpenFiles : OpenProject -> OpenFile list SetProjectDefines : OpenProject * string list -> unit PlaceIntoProjectFileBeforeImport : OpenProject * string -> unit OpenExistingProject : VisualStudio * string * string -> OpenProject * OpenSolution MoveCursorTo : OpenFile * int * int -> unit GetCursorLocation : OpenFile -> int * int GetLineNumber : OpenFile -> int -> string GetAllLines : OpenFile -> string list SwitchToFile : VisualStudio * OpenFile -> unit OnIdle : VisualStudio -> unit ShiftKeyDown : VisualStudio -> unit ShiftKeyUp : VisualStudio -> unit TakeCoffeeBreak : VisualStudio -> unit ReplaceFileInMemory : OpenFile * string list * bool -> unit SaveFileToDisk : OpenFile -> unit CleanUp : VisualStudio -> unit CleanInvisibleProject : VisualStudio -> unit ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients : VisualStudio -> unit GetSquiggleAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) option GetSquigglesAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) list /// does a BackgroundRequestReason.MemberSelect at the cursor AutoCompleteAtCursor : OpenFile -> CompletionItem array /// like AutoCompleteAtCursor, but can pass e.g. BackgroundRequestReason.CompleteWord to do Ctrl-space rather than auto-dot-popup-completion CompleteAtCursorForReason : OpenFile * Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason -> CompletionItem array CompletionBestMatchAtCursorFor : OpenFile * string * string option -> (string * bool * bool) option MoveCursorToEndOfMarker : OpenFile * string -> unit MoveCursorToStartOfMarker : OpenFile * string -> unit GetQuickInfoAtCursor : OpenFile -> string GetQuickInfoAndSpanAtCursor : OpenFile -> string*TextSpan GetMatchingBracesForPositionAtCursor : OpenFile -> (TextSpan * TextSpan) array GetNameOfOpenFile : OpenFile -> string GetCheckOptionsOfScript : OpenFile -> Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions GetParameterInfoAtCursor : OpenFile -> MethodListForAMethodTip GetParameterInfoAtCursorNoFallback: OpenFile -> MethodListForAMethodTip GetTokenTypeAtCursor : OpenFile -> TokenType GetIdentifierAtCursor : OpenFile -> (string * int) option GetF1KeywordAtCursor : OpenFile -> string option GotoDefinitionAtCursor : OpenFile -> bool -> GotoDefnResult GetNavigationContentAtCursor : OpenFile -> NavigationBarResult GetHiddenRegionCommands : OpenFile -> list * Map CreatePhysicalProjectFileInMemory : ((*files:*)(string*BuildAction*string option) list) -> ((*references:*)(string*bool) list) -> ((*projectReferences:*)string list) -> ((*disabledWarnings:*)string list) -> ((*defines:*)string list) -> (*versionFile*) string -> ((*otherFlags:*)string) -> ((*otherProjMisc:*)string) -> ((*targetFrameworkVersion:*)string) -> string /// True if files outside of the project cone are added as links. AutoCompleteMemberDataTipsThrowsScope : string -> System.IDisposable // VsOps capabilities. OutOfConeFilesAreAddedAsLinks : bool SupportsOutputWindowPane : bool } // Opaque handles to vs objects /// Simulate a VisualStudio instance and VisualStudio = interface abstract VsOps : VsOps end /// The solution opened in VS and OpenSolution = interface abstract VS : VisualStudio end /// A project opened in VS and OpenProject = interface abstract VS : VisualStudio end /// A file opened in VS and OpenFile = interface abstract VS : VisualStudio end /// A file on disk and File = interface end val CreateFSharpManifestResourceName : projectFileName:string -> configuration:string -> platform:string -> (string * string) list /// The different variations of of Salsa tests module Models = /// Salsa tests which create .fsproj files for projects. val MSBuild : unit -> VsOps * ProjectBehaviorHooks /// Salsa tests which create .fsproj files for projects using the installed /// FSharp.targets file. val InstalledMSBuild : unit -> VsOps * ProjectBehaviorHooks fsharp-3.0.34/src/fsharp/Salsa/SalsaUtils.fsi0000775000175000017500000002050012260314606017774 0ustar chrischris namespace Salsa open Microsoft.VisualStudio open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio.TextManager.Interop open Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.Build.Framework open Salsa /// Functions for validating tests using VsOps. (Calls Assert behind the scenes.) module internal VsOpsUtils = // ------------------------------------------------------------------------ // Wrappers on top of VSOps functions, these make it easier to interact with // VSOps as well as enabling us to change VsOps slightly without breaking the world val CreateSolution : VisualStudio -> OpenSolution val GetOutputWindowPaneLines : VisualStudio -> string list val CloseSolution : OpenSolution -> unit /// pass absolute filename val AddTypeProviderApprovedForDevelopment : string -> unit val ClearAllTypeProviderApprovals : unit -> unit val CreateProject : OpenSolution * string -> OpenProject /// Add a new file not in any particulare project. val NewFile : VisualStudio * string * string list -> File val DeleteFileFromDisk : VisualStudio * File -> unit val AddFileFromText : OpenProject * string * string list -> File val AddFileFromTextBlob : OpenProject * string * string -> File val AddFileFromTextEx : OpenProject * string * string * Salsa.Salsa.BuildAction * string list -> File val AddLinkedFileFromTextEx : OpenProject * string * string * string * string list -> File val AddAssemblyReference : OpenProject * string -> unit val AddAssemblyReferenceEx : OpenProject * string * bool -> unit val AddProjectReference : OpenProject * OpenProject -> unit val ProjectDirectory : OpenProject -> string val ProjectFile : OpenProject -> string val SetVersionFile : OpenProject * string -> unit val SetOtherFlags : OpenProject * string -> unit val SetConfigurationAndPlatform : OpenProject * string -> unit val AddDisabledWarning : OpenProject * string -> unit val Build : OpenProject -> BuildResult val BuildTarget : OpenProject * string -> BuildResult val GetMainOutputAssembly : OpenProject -> string val Save : OpenProject -> unit val GetErrors : OpenProject -> Error list /// Open a file outside of any project as if from File\Open\File... menu item. val OpenFileViaOpenFile : VisualStudio * string -> OpenFile val OpenFile : OpenProject * string -> OpenFile val GetOpenFiles : OpenProject -> OpenFile list val SetProjectDefines : OpenProject * string list -> unit val PlaceIntoProjectFileBeforeImport : OpenProject * string -> unit val OpenExistingProject : VisualStudio * string * string -> OpenProject * OpenSolution val MoveCursorTo : OpenFile * int * int -> unit val GetCursorLocation : OpenFile -> int * int val GetLineNumber : OpenFile -> int -> string val GetAllLines : OpenFile -> string list val SwitchToFile : VisualStudio -> OpenFile -> unit val OnIdle : VisualStudio -> unit val ShiftKeyDown : VisualStudio -> unit val ShiftKeyUp : VisualStudio -> unit val ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients : VisualStudio -> unit val TakeCoffeeBreak : VisualStudio -> unit val ReplaceFileInMemory : OpenFile -> string list -> unit val ReplaceFileInMemoryWithoutCoffeeBreak : OpenFile -> string list -> unit val SaveFileToDisk : OpenFile -> unit val GetSquiggleAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) option val GetSquigglesAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) list /// does a BackgroundRequestReason.MemberSelect at the cursor val AutoCompleteAtCursor : OpenFile -> CompletionItem array /// does a BackgroundRequestReason.CompleteWord at the cursor val CtrlSpaceCompleteAtCursor : OpenFile -> CompletionItem array /// like AutoCompleteAtCursor, but can pass e.g. BackgroundRequestReason.CompleteWord to do Ctrl-space rather than auto-dot-popup-completion val CompleteAtCursorForReason : OpenFile * Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason -> CompletionItem array val CompletionBestMatchAtCursorFor : OpenFile * string * string option -> (string * bool * bool) option val MoveCursorToEndOfMarker : OpenFile * string -> unit val MoveCursorToStartOfMarker : OpenFile * string -> unit val GetQuickInfoAtCursor : OpenFile -> string val GetQuickInfoAndSpanAtCursor : OpenFile -> string*TextSpan val GetNameOfOpenFile : OpenFile -> string val GetCheckOptionsOfScript : OpenFile -> CheckOptions val GetParameterInfoAtCursor : OpenFile -> MethodListForAMethodTip val GetParameterInfoAtCursorNoFallback: OpenFile -> MethodListForAMethodTip val GetTokenTypeAtCursor : OpenFile -> Salsa.Salsa.TokenType val GetIdentifierAtCursor : OpenFile -> (string * int) option val GetF1KeywordAtCursor : OpenFile -> string option val GotoDefinitionAtCursor : OpenFile -> GotoDefnResult val GotoDefinitionAtCursorForceGeneration : OpenFile -> GotoDefnResult val GetNavigationContentAtCursor : OpenFile -> NavigationBarResult val GetHiddenRegionCommands : OpenFile -> list * Map val Cleanup : VisualStudio -> unit val OutOfConeFilesAreAddedAsLinks : VisualStudio -> bool val SupportsOutputWindowPane : VisualStudio -> bool /// True if files outside of the project cone are added as links. val AutoCompleteMemberDataTipsThrowsScope : VisualStudio * string -> System.IDisposable val CreateSingleFileProject : VisualStudio * string -> (OpenSolution * OpenProject * OpenFile) val CreateNamedSingleFileProject : VisualStudio * (string * string) -> (OpenSolution * OpenProject * OpenFile) val GetMatchingBracesForPositionAtCursor : OpenFile -> (TextSpan * TextSpan) array // ------------------------------------------------------------------------ // Methods to simplify testing of specific features type SetMarkerPoint = | StartOfMarker | EndOfMarker // Navigation items & regions val AssertRegionListContains : list<(int*int)*(int*int)> * list -> unit val AssertNavigationContains : DropDownMember[] * string -> unit val AssertNavigationContainsAll : DropDownMember[] * seq -> unit // Completion list val AssertCompListIsEmpty : CompletionItem[] -> unit val AssertCompListContains : CompletionItem[] * string -> unit val AssertCompListDoesNotContain : CompletionItem[] * string -> unit val AssertCompListContainsAll : CompletionItem[] * string list -> unit val AssertCompListContainsExactly : CompletionItem[] * string list -> unit val AssertCompListDoesNotContainAny : CompletionItem[] * string list -> unit // Dot completion val DotCompletionAtMarker : SetMarkerPoint -> OpenFile -> string -> CompletionItem[] val DotCompletionAtStartOfMarker : (OpenFile -> string -> CompletionItem[]) val DotCompletionAtEndOfMarker : (OpenFile -> string -> CompletionItem[]) // Goto Definition val GotoDefnFailure : (string * string) option val GotoDefnSuccess : string -> string -> (string * string) option val CheckGotoDefnResult : (string * string) option -> OpenFile -> GotoDefnResult -> unit fsharp-3.0.34/src/fsharp/Salsa/SalsaUtils.fs0000775000175000017500000004457312260314606017643 0ustar chrischris namespace Salsa open System open System.IO open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio.TextManager.Interop open Microsoft.FSharp.Compiler.SourceCodeServices open NUnit.Framework open Salsa.Salsa /// Utilities related to VsOps module internal VsOpsUtils = // ------------------------------------------------------------------------ let opsOfProj (p : OpenProject) = p.VS.VsOps let opsOfFile (f : OpenFile) = f.VS.VsOps let DefaultBuildActionOfFilename(filename) = match Path.GetExtension(filename) with | ".fsx" -> BuildAction.None | ".resx" | ".resources" -> BuildAction.EmbeddedResource | _ -> BuildAction.Compile let CreateSolution(vs : VisualStudio) = vs.VsOps.CreateSolution(vs) let ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients(vs : VisualStudio) = vs.VsOps.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients(vs) let GetOutputWindowPaneLines(vs : VisualStudio) = vs.VsOps.GetOutputWindowPaneLines(vs) let CloseSolution(soln : OpenSolution) = soln.VS.VsOps.CloseSolution(soln) let AddTypeProviderApprovedForDevelopment(assemblyFileName) = Microsoft.FSharp.Compiler.ExtensionTyping.ApprovalIO.replaceApprovalStatus None (Microsoft.FSharp.Compiler.ExtensionTyping.ApprovalIO.TypeProviderApprovalStatus.Trusted(Microsoft.FSharp.Compiler.ExtensionTyping.ApprovalIO.partiallyCanonicalizeFileName assemblyFileName)) let ClearAllTypeProviderApprovals() = if System.IO.File.Exists(Microsoft.FSharp.Compiler.ExtensionTyping.ApprovalIO.ApprovalsAbsoluteFileName) then System.IO.File.Delete(Microsoft.FSharp.Compiler.ExtensionTyping.ApprovalIO.ApprovalsAbsoluteFileName) let CreateProject(solution : OpenSolution, projectname) = solution.VS.VsOps.CreateProject(solution,projectname) let NewFile(vs : VisualStudio, filename,lines) = vs.VsOps.NewFile(vs,filename,DefaultBuildActionOfFilename filename,lines) let DeleteFileFromDisk(vs : VisualStudio, file) = vs.VsOps.DeleteFileFromDisk(file) let AddFileFromText(project, filename, lines) = (opsOfProj project).AddFileFromText(project,filename,filename,DefaultBuildActionOfFilename filename,lines) let AddFileFromTextBlob(project : OpenProject, filename, lines : string) = (opsOfProj project).AddFileFromText(project,filename,filename,DefaultBuildActionOfFilename filename, Array.toList (lines.Split( [| "\r\n" |], StringSplitOptions.None))) let AddFileFromTextEx(project : OpenProject,filenameOnDisk,filenameInProject,buildAction,lines) = (opsOfProj project).AddFileFromText(project,filenameOnDisk,filenameInProject,buildAction,lines) let AddLinkedFileFromTextEx(project : OpenProject,filenameOnDisk,includeFilenameInProject,linkFilenameInProject,lines) = (opsOfProj project).AddLinkedFileFromText(project,filenameOnDisk,includeFilenameInProject,linkFilenameInProject,DefaultBuildActionOfFilename filenameOnDisk,lines) let AddAssemblyReference(project : OpenProject,reference) = (opsOfProj project).AddAssemblyReference(project,reference,false) let AddAssemblyReferenceEx(project : OpenProject,reference,specificVersion) = (opsOfProj project).AddAssemblyReference(project,reference,specificVersion) let AddProjectReference(project1,project2) = (opsOfProj project1).AddProjectReference(project1,project2) let PlaceIntoProjectFileBeforeImport(project,xml) = (opsOfProj project).PlaceIntoProjectFileBeforeImport(project,xml) let ProjectDirectory(project) = (opsOfProj project).ProjectDirectory(project) let ProjectFile(project) = (opsOfProj project).ProjectFile(project) let SetVersionFile(project,file) = (opsOfProj project).SetVersionFile(project,file) let SetConfigurationAndPlatform(project,configAndPlatform) = (opsOfProj project).SetConfigurationAndPlatform(project,configAndPlatform) let SetOtherFlags(project,flags) = (opsOfProj project).SetOtherFlags(project,flags) let GetErrors(project) = (opsOfProj project).GetErrors(project) let SetProjectDefines(project,defines) = (opsOfProj project).SetProjectDefines(project,defines) let AddDisabledWarning(project,code) = (opsOfProj project).AddDisabledWarning(project,code) let Build(project) = (opsOfProj project).BuildProject(project,null) let BuildTarget(project,target) = (opsOfProj project).BuildProject(project,target) let GetMainOutputAssembly(project) = (opsOfProj project).GetMainOutputAssembly(project) let Save(project) = (opsOfProj project).SaveProject(project) let OpenFileViaOpenFile(vs : VisualStudio, filename) = vs.VsOps.OpenFileViaOpenFile(vs,filename) let OpenFile(project,filename) = (opsOfProj project).OpenFile(project,filename) let GetOpenFiles(project) = (opsOfProj project).GetOpenFiles(project) let OpenExistingProject(vs :VisualStudio, dir,projname) = vs.VsOps.OpenExistingProject(vs,dir,projname) let MoveCursorTo(file,line,col) = (opsOfFile file).MoveCursorTo(file,line,col) let GetCursorLocation(file) = (opsOfFile file).GetCursorLocation(file) let MoveCursorToEndOfMarker(file,marker) = (opsOfFile file).MoveCursorToEndOfMarker(file, marker) let GetMatchingBracesForPositionAtCursor(file) = (opsOfFile file).GetMatchingBracesForPositionAtCursor(file) let MoveCursorToStartOfMarker(file,marker) = (opsOfFile file).MoveCursorToStartOfMarker(file,marker) let GetQuickInfoAtCursor(file) = (opsOfFile file).GetQuickInfoAtCursor(file) let GetQuickInfoAndSpanAtCursor(file) = (opsOfFile file).GetQuickInfoAndSpanAtCursor(file) let GetNameOfOpenFile(file) = (opsOfFile file).GetNameOfOpenFile(file) let GetCheckOptionsOfScript(file) = (opsOfFile file).GetCheckOptionsOfScript(file) let GetParameterInfoAtCursor(file) = (opsOfFile file).GetParameterInfoAtCursor(file) let GetParameterInfoAtCursorNoFallback(file) = (opsOfFile file).GetParameterInfoAtCursorNoFallback(file) let GetTokenTypeAtCursor(file) = (opsOfFile file).GetTokenTypeAtCursor(file) let GetSquiggleAtCursor(file) = (opsOfFile file).GetSquiggleAtCursor(file) let GetSquigglesAtCursor(file) = (opsOfFile file).GetSquigglesAtCursor(file) let AutoCompleteAtCursor(file) = (opsOfFile file).AutoCompleteAtCursor(file) let CtrlSpaceCompleteAtCursor(file) = (opsOfFile file).CompleteAtCursorForReason(file,Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord) let CompleteAtCursorForReason(file,reason) = (opsOfFile file).CompleteAtCursorForReason(file,reason) let CompletionBestMatchAtCursorFor(file, value, filterText) = (opsOfFile file).CompletionBestMatchAtCursorFor(file, value, filterText) let GotoDefinitionAtCursor file = (opsOfFile file).GotoDefinitionAtCursor file false let GotoDefinitionAtCursorForceGeneration file = (opsOfFile file).GotoDefinitionAtCursor file true let GetNavigationContentAtCursor(file) = (opsOfFile file).GetNavigationContentAtCursor(file) let GetHiddenRegionCommands(file) = (opsOfFile file).GetHiddenRegionCommands(file) let GetIdentifierAtCursor file = (opsOfFile file).GetIdentifierAtCursor file let GetF1KeywordAtCursor file = (opsOfFile file).GetF1KeywordAtCursor file let GetLineNumber file n = (opsOfFile file).GetLineNumber file n let GetAllLines file= (opsOfFile file).GetAllLines file let SwitchToFile (vs : VisualStudio) file = vs.VsOps.SwitchToFile(vs,file) let OnIdle(vs : VisualStudio) = vs.VsOps.OnIdle(vs) let ShiftKeyDown(vs : VisualStudio) = vs.VsOps.ShiftKeyDown(vs) let ShiftKeyUp(vs : VisualStudio) = vs.VsOps.ShiftKeyUp(vs) let TakeCoffeeBreak(vs : VisualStudio) = vs.VsOps.TakeCoffeeBreak(vs) let ReplaceFileInMemory(file :OpenFile) lines = (opsOfFile file).ReplaceFileInMemory(file,lines,true) let ReplaceFileInMemoryWithoutCoffeeBreak(file :OpenFile) lines = (opsOfFile file).ReplaceFileInMemory(file,lines,false) let SaveFileToDisk(file :OpenFile) = (opsOfFile file).SaveFileToDisk(file) let AutoCompleteMemberDataTipsThrowsScope(vs : VisualStudio, message) = vs.VsOps.AutoCompleteMemberDataTipsThrowsScope(message) let Cleanup(vs : VisualStudio) = vs.VsOps.CleanUp(vs) let OutOfConeFilesAreAddedAsLinks(vs : VisualStudio) = vs.VsOps.OutOfConeFilesAreAddedAsLinks let SupportsOutputWindowPane(vs : VisualStudio) = vs.VsOps.SupportsOutputWindowPane // ------------------------------------------------------------------------ type SetMarkerPoint = | StartOfMarker | EndOfMarker /// Creates a single file project/solution let CreateSingleFileProject (vs, fileContents) = let solution = CreateSolution(vs) let project = CreateProject(solution, "testproject") let _ = AddFileFromTextBlob(project, "File1.fs", fileContents) let file = OpenFile(project, "File1.fs") (solution, project, file) /// Creates a single file project/solution where the lone file is named. let CreateNamedSingleFileProject (vs, (fileContents, fileName)) = let solution = CreateSolution(vs) let project = CreateProject(solution, "testproject") let _ = AddFileFromTextBlob(project, fileName, fileContents) let file = OpenFile(project, fileName) (solution, project, file) // ------------------------------------------------------------------------ /// Verify that items obtained from the navigation bar contain the specified item let AssertRegionListContains(expected:list<(int*int)*(int*int)>, regions:list) = for (sl,sc), (el,ec) in expected do match regions |> List.tryFind (fun reg -> let span = reg.tsHiddenText (span.iStartIndex = sc) && (span.iEndIndex = ec) && (span.iStartLine = sl) && (span.iEndLine = el) ) with | None -> printfn "Regions found: %A" (regions |> List.map (fun itm -> ((itm.tsHiddenText.iStartIndex, itm.tsHiddenText.iStartLine), (itm.tsHiddenText.iEndIndex, itm.tsHiddenText.iEndLine)) )) Assert.Fail(sprintf "Couldn't find region (%d, %d) - (%d, %d)" sl sc el ec) | _ -> () /// Verify that items obtained from the navigation bar contain the specified item let AssertNavigationContains (items:DropDownMember[], expected) = match items |> Array.tryFind (fun itm -> itm.Label = expected) with | None -> printfn "Navigation bar items: %A" (items |> Array.map (fun itm -> itm.Label)) Assert.Fail(sprintf "Couldn't find '%s' in drop down bar." expected) | _ -> () /// Verify that items obtained from the navigation bar contain all specified item let AssertNavigationContainsAll (items:DropDownMember[], allExpected) = for expected in allExpected do match items |> Array.tryFind (fun itm -> itm.Label = expected) with | None -> printfn "Navigation bar items: %A" (items |> Array.map (fun itm -> itm.Label)) Assert.Fail(sprintf "Couldn't find '%s' in drop down bar." expected) | _ -> () // ------------------------------------------------------------------------ /// Verify the completion list is empty, typically for negative tests let AssertCompListIsEmpty (completions : CompletionItem[]) = if not (Array.isEmpty completions) then printfn "Expected empty completion list but got: %A" (completions |> Array.map (fun (nm, _, _, _) -> nm)) Assert.IsTrue(Array.isEmpty completions, "Expected empty completion list but got some items") /// Verify that the given completion list contains a member with the given name let AssertCompListContains(completions : CompletionItem[], membername) = let found = completions |> Array.filter(fun (name,_,_,_) -> name = membername) |> Array.length if found = 0 then printfn "Failed to find expected value %s in " membername let MAX = 25 printfn "Completion list = %s" (if completions.Length > MAX then sprintf "%A ... and more" completions.[0..MAX] else sprintf "%A" completions) Assert.Fail(sprintf "Couldn't find '%s' in completion list" membername) /// Verify the completion list does not contain a member with the given name let AssertCompListDoesNotContain(completions : CompletionItem[], membername) = let found = completions |> Array.filter(fun (name,_,_,_) -> name = membername) |> Array.length if found <> 0 then printfn "Value %s should have been absent from " membername printfn "Completion list = %A" completions Assert.Fail(sprintf "Found unexpected '%s' in completion list" membername) // Verify the completion list contains every member in the list let rec AssertCompListContainsAll(completions : CompletionItem[], expectedCompletions) = match expectedCompletions with | [] -> () | h :: t -> AssertCompListContains(completions, h) AssertCompListContainsAll(completions, t) () // Verify the completion list contains every member in the list let rec AssertCompListContainsExactly(completions : CompletionItem[], expectedCompletions) = AssertCompListContainsAll(completions, expectedCompletions) if (completions.Length <> (expectedCompletions |> List.length)) then printfn "Completion list contained all the expected completions, but there were additional unexpected completions." printfn "Expected = %A" expectedCompletions printfn "Actual = %A" completions Assert.Fail("Extra completions found in list") /// Verify the completion list does not contain any member in the list let rec AssertCompListDoesNotContainAny(completions : CompletionItem[], itemsNotInCompList) = match itemsNotInCompList with | [] -> () | h :: t -> AssertCompListDoesNotContain(completions, h) AssertCompListDoesNotContainAny(completions, t) () /// Simulates pressing '.' at the mark and returns the completion list let DotCompletionAtMarker markerDirection (file : OpenFile) marker = // Simulate pressing '.' let orgFileContents = GetAllLines file // Check that the marker is unique, otherwise we can't determine where to put the '.' let markerLines = orgFileContents |> Seq.filter (fun line -> line.Contains(marker)) |> Seq.length if markerLines = 0 then Assert.Fail("Unable to find marker in source code.") if markerLines > 1 then Assert.Fail <| sprintf "Found marker [%s] multiple times in source file." marker // Replace marker with "." let replaceMarker = match markerDirection with | StartOfMarker -> (fun (line : string) -> line.Replace(marker, "." + marker)) | EndOfMarker -> (fun (line : string) -> line.Replace(marker, marker + ".")) let newFileContents = orgFileContents |> List.map replaceMarker // Now apply our change & get the comp list ReplaceFileInMemory file newFileContents match markerDirection with | StartOfMarker -> MoveCursorToStartOfMarker(file, marker) | EndOfMarker -> MoveCursorToEndOfMarker(file, marker + ".") let compList = AutoCompleteAtCursor(file) // Now restore the origional file contents ReplaceFileInMemory file orgFileContents compList /// Gets the completion list as if you pressed '.' at the START of the marker. let DotCompletionAtStartOfMarker : (OpenFile -> string -> CompletionItem[]) = DotCompletionAtMarker StartOfMarker /// Gets the completion list as if you pressed '.' at the END of the marker. let DotCompletionAtEndOfMarker : (OpenFile -> string -> CompletionItem[]) = DotCompletionAtMarker EndOfMarker // ------------------------------------------------------------------------ /// Abbreviation for 'None', to indiciate a GotoDefn failure let GotoDefnFailure = None : (string * string) option /// Abbreviation for 'Some(ident, lineOfCode)' let GotoDefnSuccess x y = Some (x, y) : (string * string) option /// Checks that a goto definition result matches the expected value. /// Expected = Some(identifierAtCursor, lineOfCodeAtCursor) let CheckGotoDefnResult (expected : (string * string) option) (file : OpenFile) (actual : GotoDefnResult) : unit = match (expected, actual.ToOption()) with // Success cases // GotoDefn retrieved a result and we expected to find something | (Some (toFind, expLine), Some (span, actFile)) -> match GetIdentifierAtCursor file with | None -> Assert.Fail ("No identifier at cursor. This indicates a bug in GotoDefinition.") | Some (id, _) -> // Are we on the identifier we expect? Assert.AreEqual (toFind, id) // Do the lines of code match what we expect? // - Eliminate white space to eliminate trivial errors // - +1 to adjust for 1-index line numbers Assert.AreEqual ( expLine.Trim(), (span.iStartLine |> (+) 1 |> GetLineNumber (OpenFileViaOpenFile(file.VS, actFile))).Trim () ) // Looks like it's legit! () // We expected Goto Definition to fail and it did. // (Such as Goto Definition on keyword or symbol.) | (None, None) -> () // Error cases | (Some (x,_), None) -> Assert.Fail <| sprintf "Expected to find the definition of '%s' but GotoDefn failed." x | (None, Some (_,file)) -> Assert.Fail <| sprintf "Expected GotoDefn to fail, but it went to a definition in file %s" file fsharp-3.0.34/src/fsharp/Salsa/salsa.fs0000775000175000017500000031117212260314606016652 0ustar chrischris(* Simplified abstraction over visual studio. Stand Alone Language Service Acronym *) #nowarn "40" // let rec for recursive values namespace Salsa open Microsoft.VisualStudio.FSharp.LanguageService open Internal.Utilities.Debug open Microsoft.VisualStudio open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.VisualStudio.TextManager.Interop open System open System.IO open System.Text open System.Collections.Generic open System.Runtime.InteropServices open System.Threading open Implementation open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open UnitTests.TestLib.Utils.FilesystemHelpers open Microsoft.Build.Framework open Microsoft.FSharp.Compiler.Range open Microsoft.Build.Evaluation module internal Salsa = exception MarkerNotFoundException of string type HostCompile() = let mutable capturedFlags = null let mutable capturedSources = null let mutable actuallyBuild = true member th.CaptureSourcesAndFlagsWithoutBuildingForABit() = actuallyBuild <- false { new System.IDisposable with member this.Dispose() = actuallyBuild <- true } member th.Results = capturedFlags, capturedSources member th.Compile(compile:System.Converter, flags:string[], sources:string[]) = use t = Trace.Call("MSBuild", "Compile", fun _ -> "Host compile invoke by Fsc task") Trace.PrintLine("MSBuild", fun _ -> sprintf "flags=%A" flags) capturedFlags <- flags capturedSources <- sources if actuallyBuild then compile.Invoke(0) else 0 interface ITaskHost type BuildResult = { ExecutableOutput : string BuildSucceeded : bool } /// Methods for dealing with MSBuild project files. module (*internal*) MSBuild = let mutable private hasAttachedLogger = false let mutable theAttachedLogger = null /// Use the global build engine if it knows the path to MSBuild.exe /// Otherwise, make a new engine and point it at well-known version of MSBuild let GlobalEngine() = let engine = Utilities.InitializeMsBuildEngine(null) if not hasAttachedLogger then hasAttachedLogger<-true let logRegular = Trace.ShouldLog("MSBuild") let logPerf = Trace.ShouldLog("MSBuildPerf") if logRegular || logPerf then let l = if logRegular then Trace.PrintLine("MSBuild", fun () -> "Detailed logging.") new Microsoft.Build.BuildEngine.ConsoleLogger(LoggerVerbosity.Detailed) else Trace.PrintLine("MSBuild", fun () -> "Quiet logging.") new Microsoft.Build.BuildEngine.ConsoleLogger(LoggerVerbosity.Quiet) Trace.PrintLine("MSBuild", fun () -> "About to attach MSBuild console logger.") // For Dev10 build we pass the logger to the Build call on the project object. theAttachedLogger <- l Trace.PrintLine("MSBuild", fun () -> "Attached MSBuild console logger.") if logPerf then l.ApplyParameter("PERFORMANCESUMMARY", null) engine /// Set a global property on the given project. let SetGlobalProperty(project:Project, name, value) = let _ = project.SetGlobalProperty(name,value) () let hostObjectCachePerFilename = new System.Collections.Generic.Dictionary<_,_>() // REVIEW: this will leak, but hopefully only a small amount (e.g. maybe about 1K per project, and thus maybe just a few megs total for all 2000 unit tests) /// Get the MSBuild project for the given project file. let GetProject (projectFileName:string, configuration:string, platform:string) = let project, justCreated, theHostObject = try let projects = GlobalEngine().GetLoadedProjects(projectFileName) |> Seq.toList let project = match projects with | [] -> null | [x] -> x | _ -> failwith "multiple projects found" match project with | null -> use t = Trace.Call("MSBuildPerf","Creating new project", fun _-> projectFileName) let project = GlobalEngine().LoadProject(projectFileName) // Set global properties. SetGlobalProperty(project,"BuildingInsideVisualStudio", "true") SetGlobalProperty(project,"Configuration", configuration) SetGlobalProperty(project,"Platform", platform) let prjColl = project.ProjectCollection let hostSvc = prjColl.HostServices let theHostObject = HostCompile() hostSvc.RegisterHostObject(projectFileName, "CoreCompile", "Fsc", theHostObject) hostObjectCachePerFilename.[projectFileName] <- theHostObject project, true, theHostObject | project-> use t = Trace.Call("MSBuildPerf","Using existing project", fun _-> projectFileName) match hostObjectCachePerFilename.TryGetValue(projectFileName) with | true, theHostObject -> project, false, theHostObject | false, _ -> project, false, Unchecked.defaultof<_> // this code path is hit when unit-testing the project system, which uses its own HostObject with e-> printfn "Failed in MSBuild GetProject getting '%s'.\n" projectFileName raise e project, justCreated, theHostObject /// Interesting properties and item lists that from typical MSBuild project files. type BuildFlags = { flags:string list sources:string list } let prop (project:Project) propertyName : string= let p = project.GetPropertyValue(propertyName) if p = null then "" else p let items (project:Project) name = let l = project.GetItems(name) |> Seq.map (fun i -> i.EvaluatedInclude) |> Seq.toList //use t = Trace.Call("MSBuild","items", fun _ -> sprintf " %s: %A" name l) l let oneItem (project:Project) name = match (items project name) with head::tail -> head | _ -> "" let splitProperty (project:Project) propertyName = (prop project propertyName).Split([|';'|])|>Array.toList let boolProperty (project:Project) name = let p = prop project name true /// Build the given target on the given project. Return the name of the main output assembly. let Build(projectFileName, target, configuration, platform) : BuildResult = use t = Trace.Call("MSBuild","build", fun _-> sprintf " target=%s project=%s configruation=%s platform=%s" target projectFileName configuration platform) let project,_,_ = GetProject(projectFileName, configuration, platform) let projectInstance = project.CreateProjectInstance() let buildResult = projectInstance.Build(target, Seq.append project.ProjectCollection.Loggers (if theAttachedLogger=null then [] else [theAttachedLogger])) printfn "build succeeded? %A" buildResult let mainassembly = try (projectInstance.GetItems("MainAssembly") |> Seq.head).EvaluatedInclude with e -> "" // TODO it seems like Dev10 "Clean" target does not produce this output, but this result is not consumed by those tests in an interesting way anyway printfn "mainAssembly: %A" mainassembly {ExecutableOutput = mainassembly; BuildSucceeded = buildResult} /// Return the name of the main output assembly but don't build let GetMainOutputAssembly(projectFileName, configuration, platform) : string = use t = Trace.Call("MSBuild","GetMainOutputAssembly", fun _-> sprintf " project=%s configruation=%s platform=%s" projectFileName configuration platform) let project,_,_ = GetProject(projectFileName, configuration, platform) let baseName = Path.GetFileNameWithoutExtension(projectFileName)+".exe" let projectInstance = project.CreateProjectInstance() let outdir : string = projectInstance.GetProperty("OutDir").EvaluatedValue let mainassembly = Path.Combine(outdir,baseName) printfn "mainAssembly: %A" mainassembly mainassembly let CreateFSharpManifestResourceName(projectFileName,configuration, platform) : (string * string) list= let targetName = "CreateManifestResourceNames" use t = Trace.Call("MSBuild", targetName, fun _-> sprintf " target=%s project=%s configruation=%s platform=%s" targetName projectFileName configuration platform) let project,_,_ = GetProject(projectFileName, configuration, platform) SetGlobalProperty(project, "CreateManifestResourceNamesDependsOn", "SplitResourcesByCulture") let projectInstance = project.CreateProjectInstance() let buildResult = projectInstance.Build(targetName, project.ProjectCollection.Loggers) let items = projectInstance.GetItems("EmbeddedResource") |> Seq.map (fun i -> i.EvaluatedInclude, i.GetMetadata("ManifestResourceName").EvaluatedValue) |> Seq.toList items /// Fallback for flags and sources. This is to handle the case in which the user has customized /// the MSBuild so much that host compilation doesn't work/ let GetFlagsAndSourcesFallback(project:Project) : BuildFlags = project.Build("ResolveReferences") |> ignore let sources = items project "Compile" let references = items project "ReferencePath" let defineConstants=splitProperty project "DefineConstants" let flags = (defineConstants |> List.map (sprintf "--define:%s")) @ (references |> List.map(sprintf "-r:%s")) {flags=flags sources = sources} /// Compute the Flags and Sources let GetFlagsAndSources(project:Project, ho:HostCompile) : BuildFlags = let result = use t = Trace.Call("MSBuildPerf","Calling compile to get flags", fun _-> "") use xx = ho.CaptureSourcesAndFlagsWithoutBuildingForABit() project.IsBuildEnabled <- true let loggers = if Trace.ShouldLog("MSBuild") then seq { yield (new Microsoft.Build.BuildEngine.ConsoleLogger(LoggerVerbosity.Detailed) :> ILogger) } else [] :> seq let r = project.Build("Compile", loggers) if not(r) then printfn "MSBuild result: %A" r printfn "%s" project.FullPath System.Diagnostics.Debug.Assert(false, "things are about to fail, as MSBuild failed; it would behoove you to turn on MSBuild tracing") let capturedFlags, capturedSources = ho.Results {flags = capturedFlags |> Array.toList sources = capturedSources |> Array.toList } let Canonicalize (filename:string) = if System.IO.Path.IsPathRooted(filename) then Internal.Utilities.FileSystem.Path.SafeGetFullPath(filename) else Internal.Utilities.FileSystem.Path.SafeGetFullPath(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(project.FullPath),filename)) { flags = result.flags sources = result.sources |> List.map Canonicalize } let CrackProject(projectFileName, configuration, platform) = use t = Trace.Call("MSBuild","crackProject", fun _-> sprintf " project=%s" projectFileName) let project,created,ho = GetProject(projectFileName, configuration, platform) Trace.PrintLine("MSBuild", fun _ -> sprintf "Project text:\n %s " (File.ReadAllText(projectFileName))) try try let result = GetFlagsAndSources(project,ho) Trace.PrintLine("MSBuild", fun _ -> sprintf "Resolved flags and sources:\n %A \n %A" result.flags result.sources) result with e -> System.Diagnostics.Debug.Assert(false, sprintf "Bug seen in MSBuild CrackProject: %s %s %s\n" (e.GetType().Name) e.Message (e.StackTrace)) reraise() finally if created then MSBuildProject.FullyUnloadProject(GlobalEngine(), project) let CreateFSharpManifestResourceName projectFileName configuration platform = MSBuild.CreateFSharpManifestResourceName(projectFileName,configuration,platform) module Filenames = /// Compare two file names to eachother. let AreSame f1 f2 = let result = System.String.Compare(f1,f2,StringComparison.CurrentCultureIgnoreCase)=0 || System.String.Compare(Internal.Utilities.FileSystem.Path.SafeGetFullPath(f1),Internal.Utilities.FileSystem.Path.SafeGetFullPath(f2),StringComparison.CurrentCultureIgnoreCase)=0 result type MSBuildProjectSite(projectfile,configurationFunc,platformFunc) = let projectPath = Path.GetDirectoryName(projectfile) let timestamp = ref (new DateTime()) let flags = ref None let prevConfig = ref "" let prevPlatform = ref "" let GetFlags() = let newtimestamp = File.GetLastWriteTime(projectfile) let curConfig = configurationFunc() let curPlatform = platformFunc() if (!timestamp)<>newtimestamp || (!flags) = None || (!prevConfig)<>curConfig || (!prevPlatform)<>curPlatform then Trace.PrintLine("ProjectSite", fun _ -> sprintf "Timestamp of %s changed. New timestamp=%A, old timestamp=%A" projectfile newtimestamp !timestamp) timestamp := newtimestamp prevConfig := curConfig prevPlatform := curPlatform flags := Some(MSBuild.CrackProject(projectfile, !prevConfig, !prevPlatform)) match (!flags) with Some(flags) -> flags | _ -> raise Error.Bug let changeHandlers = new System.Collections.Generic.Dictionary() member x.TriggerChanges() = for handler in changeHandlers do handler.Value.Invoke() override this.ToString() = projectfile interface IProjectSite with member this.SourceFilesOnDisk() = let flags = GetFlags() flags.sources |> List.map(fun s->Path.Combine(projectPath, s)) |> List.toArray member this.DescriptionOfProject() = let flags = GetFlags() try sprintf "MSBuild Flags:%A\n%A" ((this :> IProjectSite).CompilerFlags()) flags with e -> sprintf "%A" e member this.CompilerFlags() = let flags = GetFlags() let result = flags.flags Trace.PrintLine("ProjectSite", fun _ -> sprintf "MSBuild flags were %A." result) result |> List.toArray member this.ProjectFileName() = projectfile member this.ErrorListTaskProvider() = None member this.ErrorListTaskReporter() = None member this.AdviseProjectSiteChanges(callbackOwnerKey,callback) = changeHandlers.[callbackOwnerKey] <- callback member this.AdviseProjectSiteCleaned(callbackOwnerKey,callback) = () // no unit testing support here member this.IsTypeResolutionValid = true member this.TargetFrameworkMoniker = "" member this.LoadTime = new System.DateTime(2000,1,1) // Attempt to treat as MSBuild project. let internal NewMSBuildProjectSite(configurationFunc, platformFunc, msBuildProjectName) = let newProjectSite = new MSBuildProjectSite(msBuildProjectName,configurationFunc,platformFunc) newProjectSite /// Token types. type TokenType = Text | Keyword | Comment | Identifier | String | Number | InactiveCode | PreprocessorKeyword | Operator with override this.ToString() = match this with | Text -> "Text" | Keyword -> "Keyword" | Comment -> "Comment" | Identifier -> "Identifier" | String -> "String" | Number -> "Number" | InactiveCode -> "InactiveCode" | PreprocessorKeyword -> "PreprocessorKeyword" | Operator -> "Operator" /// Declaration types. type DeclarationType = | Class =0 | Constant = 6 | FunctionType = 12 // Like 'type FunctionType=unit->unit' | Enum = 18 | EnumMember = 24 | Event =30 | Exception = 36 | Interface = 48 | Method = 72 | FunctionValue = 74 // Like 'type Function x = 0' | Module = 84 | Namespace = 90 | Property = 102 | ValueType = 108 // Like 'type ValueType=int*int' | RareType = 120 // Bucket for unusual types like 'type AsmType = (# "!0[]" #)' | Record = 126 | DiscriminatedUnion = 132 type BuildAction = | Compile = 0 | EmbeddedResource = 1 | None = 2 /// A file on disk. type File = interface end /// An error [] type Error(path: string, subcategory:string, msg: string, context: Microsoft.VisualStudio.TextManager.Interop.TextSpan, sev: Microsoft.VisualStudio.FSharp.LanguageService.Severity) = member e.Path = path member e.Subcategory = subcategory member e.Message = msg member e.Context = context member e.Severity = sev override e.ToString() = sprintf "%s(%d,%d): %s %A : %s\n" path context.iStartLine context.iStartIndex subcategory sev msg type ChangeCallBack = IVsHierarchy * string -> unit /// Hooks for controlling behaviors [] type ProjectBehaviorHooks = { CreateProjectHook:(*projectFilename:*)string->(*files:*)(string*BuildAction*string option) list->(*references:*)(string*bool) list->(*projReferences:*)string list-> (*disabledWarnings:*)string list->(*defines*)string list->(*versionFile:*)string->(*otherFlags:*)string->(*preImportXml:*)string->(*targetFrameworkVersion*)string->unit InitializeProjectHook : OpenProject -> unit MakeHierarchyHook : string->string->string->ChangeCallBack->OleServiceProvider->IVsHierarchy AddFileToHierarchyHook : string -> IVsHierarchy -> unit BuildHook : (*basename:*)string -> (*target:*)string -> IVsOutputWindowPane -> BuildResult GetMainOutputAssemblyHook : string -> string SaveHook : unit -> unit DestroyHook : unit->unit ModifyConfigurationAndPlatformHook : string->unit } /// A file open in VS. and OpenFile = interface // host VS abstract VS : VisualStudio end /// A project open in VS. and OpenProject = interface // host VS abstract VS : VisualStudio end /// Private part of OpenProject and IOpenProject = /// Add a file to this project. abstract AddFileFromText : string*string*BuildAction*string list->File /// Add a file to this project as a linked file. abstract AddLinkedFileFromText : string*string*string*BuildAction*string list->File /// Open a file that is a member of this project. abstract OpenFile : string->OpenFile /// Errors (task list) associated with this project abstract Errors : Error list with get /// Add an assembly reference to the project abstract AddAssemblyReference : string * bool -> unit /// Add a project reference to the project abstract AddProjectReference : OpenProject -> unit /// Set the version file for this project abstract SetVersionFile : string -> unit /// Set other flags for this project abstract SetOtherFlags : string -> unit /// Set the defines for this project. abstract SetProjectDefines : string list -> unit /// Simulate typing into a project file right before the Import abstract PlaceIntoProjectFileBeforeImport : string -> unit /// Add a new disabled warning. abstract AddDisabledWarning : string -> unit /// Build the project. As CTRL+SHIFT+B in VS. Can pass null for default target (build). abstract Build : target:string -> BuildResult /// Get the name to the main output assembly for the current configuration. abstract GetMainOutputAssembly : unit -> string /// Save the project. abstract Save : unit -> unit /// Close the project. abstract Close : unit -> unit /// The project directory. abstract Directory : string with get /// The project file (e.g. foo.fsproj). abstract ProjectFile : string with get /// List of already opened files. abstract GetOpenFiles : unit->OpenFile list /// MSBuild '$(Configuration)|$(Platform)' abstract ConfigurationAndPlatform : string with get abstract ConfigurationAndPlatform : string with set /// A solution open in VS. and OpenSolution = interface // host VS abstract VS : VisualStudio end // Private half of the OpenSolution interface and IOpenSolution = /// Create a new project of the given behaviorHooks that is open in VS. abstract CreateProjectFlavor : ProjectBehaviorHooks->string->OpenProject /// Close the solution. abstract Close : unit -> unit /// General purpose methods. Loosely represents running instance of VS. and VisualStudio = interface abstract VsOps : VsOps end /// Private half of the Visual Studio interface and IVisualStudio = abstract CreateSolution : unit -> OpenSolution abstract OnIdle : unit->unit abstract ShiftKeyUp : unit->unit abstract ShiftKeyDown : unit->unit // Wait long enough for background compile to complete. abstract TakeCoffeeBreak : unit->unit abstract CleanUp : unit->unit abstract ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients : unit -> unit /// Open a previously-created project abstract OpenExistingProject : ProjectBehaviorHooks->(*dir:*)string->(*projName:*)string->OpenProject*OpenSolution abstract CleanInvisibleProject : unit -> unit and TextSpan = Microsoft.VisualStudio.TextManager.Interop.TextSpan and GotoDefnResult = Microsoft.VisualStudio.FSharp.LanguageService.GotoDefinitionResult // Result of querying the completion list and CompletionItem = string * string * (unit -> string) * DeclarationType /// Representes the information that is displayed in the navigation bar and NavigationBarResult = { TypesAndModules : DropDownMember[] Members : DropDownMember[] SelectedType : int SelectedMember : int } /// Methods for simulating VisualStudio and [] VsOps = { CreateVisualStudio : unit -> VisualStudio CreateSolution : VisualStudio -> OpenSolution GetOutputWindowPaneLines : VisualStudio -> string list CloseSolution : OpenSolution ->unit CreateProject : OpenSolution * string -> OpenProject CreateProjectWithHooks : OpenSolution * ProjectBehaviorHooks * string -> OpenProject NewFile : VisualStudio * string * BuildAction * string list -> File DeleteFileFromDisk : File -> unit AddFileFromText : OpenProject * string * string * BuildAction * string list -> File AddLinkedFileFromText : OpenProject*string*string*string*BuildAction*string list->File AddAssemblyReference : OpenProject * string * bool -> unit AddProjectReference : OpenProject * OpenProject -> unit ProjectDirectory : OpenProject -> string ProjectFile : OpenProject -> string SetVersionFile : OpenProject * string -> unit SetOtherFlags : OpenProject * string -> unit SetConfigurationAndPlatform : OpenProject * string -> unit AddDisabledWarning : OpenProject * string -> unit GetErrors : OpenProject -> Error list BuildProject : OpenProject * string -> BuildResult GetMainOutputAssembly : OpenProject -> string SaveProject : OpenProject -> unit OpenFileViaOpenFile : VisualStudio * string -> OpenFile OpenFile : OpenProject * string -> OpenFile GetOpenFiles : OpenProject -> OpenFile list SetProjectDefines : OpenProject * string list -> unit PlaceIntoProjectFileBeforeImport : OpenProject * string -> unit OpenExistingProject : VisualStudio * string * string -> OpenProject * OpenSolution MoveCursorTo : OpenFile * int * int -> unit GetCursorLocation : OpenFile -> int * int GetLineNumber : OpenFile -> int -> string GetAllLines : OpenFile -> string list SwitchToFile : VisualStudio * OpenFile -> unit OnIdle : VisualStudio -> unit ShiftKeyDown : VisualStudio -> unit ShiftKeyUp : VisualStudio -> unit TakeCoffeeBreak : VisualStudio -> unit ReplaceFileInMemory : OpenFile * string list * bool -> unit SaveFileToDisk : OpenFile -> unit CleanUp : VisualStudio -> unit CleanInvisibleProject : VisualStudio -> unit ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients : VisualStudio -> unit GetSquiggleAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) option GetSquigglesAtCursor : OpenFile -> (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string) list AutoCompleteAtCursor : OpenFile -> CompletionItem array CompleteAtCursorForReason : OpenFile * Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason -> CompletionItem array CompletionBestMatchAtCursorFor : OpenFile * string * string option -> (string * bool * bool) option MoveCursorToEndOfMarker : OpenFile * string -> unit MoveCursorToStartOfMarker : OpenFile * string -> unit GetQuickInfoAtCursor : OpenFile -> string GetQuickInfoAndSpanAtCursor : OpenFile -> string * TextSpan GetMatchingBracesForPositionAtCursor : OpenFile -> (TextSpan * TextSpan) array GetNameOfOpenFile : OpenFile -> string GetCheckOptionsOfScript : OpenFile -> Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions GetParameterInfoAtCursor : OpenFile -> MethodListForAMethodTip GetParameterInfoAtCursorNoFallback : OpenFile -> MethodListForAMethodTip GetTokenTypeAtCursor : OpenFile -> TokenType GetIdentifierAtCursor : OpenFile -> (string * int) option GetF1KeywordAtCursor : OpenFile -> string option GotoDefinitionAtCursor : OpenFile -> bool -> GotoDefnResult GetNavigationContentAtCursor : OpenFile -> NavigationBarResult GetHiddenRegionCommands : OpenFile -> list * Map CreatePhysicalProjectFileInMemory : ((*files:*)(string*BuildAction*string option) list) -> ((*references:*)(string*bool) list) -> ((*projectReferences:*)string list) -> ((*disabledWarnings:*)string list) -> ((*defines:*)string list) -> (*versionFile*) string -> ((*otherFlags:*)string) -> ((*otherProjMisc:*)string) -> ((*targetFrameworkVersion*)string) -> string /// True if files outside of the project cone are added as links. AutoCompleteMemberDataTipsThrowsScope : string -> System.IDisposable OutOfConeFilesAreAddedAsLinks : bool SupportsOutputWindowPane : bool } [] module GotoDefnResultExtensions = type Microsoft.VisualStudio.FSharp.LanguageService.GotoDefinitionResult with member this.ToOption() = if this.Success then Some(this.Span, this.Url) else None let maxErrors = 25 /// Private implementation details. module (*private*) Privates = let mutable private cookie = 0u; let private nextRdtID() = cookie<-cookie+1u cookie let private nextItemId() = cookie<-cookie+1u cookie let private addFileToHier filename hier = let itemid = nextItemId() VsMocks.addRootChild hier itemid filename /// Patch keyboard let private PatchKeyboard shiftKeyDown = let pressed flag = if flag then -1s else 0s let getKeyState key = match key with | Keyboard.Keys.Shift-> pressed shiftKeyDown | _ -> pressed false Keyboard.HookGetKeyState getKeyState type (*private*) UndoAction = DeleteFile of string | RemoveFolder of string type (*private*) Point = {line:int; col:int} /// Find the given marker and return the line and column. let private IsolateMarkerSite (tl:IVsTextLines) (marker:string) : Point= let _, linecount = tl.GetLineCount() let mutable returnLine = -1 let mutable returnCol = -1 let mutable i = 1 while i <= linecount do let _, len = tl.GetLengthOfLine(i-1) let _, text = tl.GetLineText(i-1,0,i-1,len) let markerPos = text.IndexOf(marker) if -1 <> markerPos then returnLine <- i returnCol <- markerPos + marker.Length + 1 i <- linecount () i <- i + 1 if returnLine = -1 then raise <| MarkerNotFoundException(marker) else {line = returnLine; col = returnCol} /// Colorize a single line of text. let ColorizeLine (colorizer:FSharpColorizer) lineNumber lineText oldState attrs = let marshaled = Marshal.StringToCoTaskMemUni(lineText) let newState = colorizer.ColorizeLine(lineNumber, lineText.Length, marshaled, oldState, attrs) Marshal.FreeCoTaskMem(marshaled) newState /// Recolorize a set of lines let RecolorizeLines (view:IVsTextView) (getColorizer:IVsTextView->FSharpColorizer) (lines:string[]) (linestarts:int[]) (top:int) (bottom:int) = let colorizer = getColorizer(view) for i in top..bottom do // let attrs = Array.create fileline.Length 0u linestarts.[i+1] <- ColorizeLine colorizer i lines.[i] linestarts.[i] null /// A constant value needed by the colorizer. let humanTextAttribute = ((uint32) (int32 COLORIZER_ATTRIBUTE.HUMAN_TEXT_ATTR)) /// Remove the bits given bits from the original. let Mask orig remove = orig &&& (0xffffffffu-remove) /// Create text of an MSBuild project with the given files and options. let CreateMsBuildProjectText (useInstalledTargets : bool) (files:(string*BuildAction*string option) list) (references:(string*bool) list) (projectReferences:string list) (disabledWarnings:string list) (defines:string list) versionFile (otherFlags:string) (otherProjMisc:string) (targetFrameworkVersion:string) = // Determine which FSharp.targets file to use. If we use the installed // targets file then we check the registry for F#'s install path. Otherwise // we look in the same directory as the Unit Tests assembly. let targetsFileFolder = if useInstalledTargets then Option.get (Internal.Utilities.FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(None)) else System.AppDomain.CurrentDomain.BaseDirectory let sb = new System.Text.StringBuilder() let Append (text:string) = Trace.PrintLine("Salsa", fun _ -> text) sb.Append(text+"\r\n") |> ignore Append "" Append " " // The salsa layer does Configuration/Platform in a kind of hacky way // Append " Debug" // Append " AnyCPU" Append " bin\Debug\" if versionFile<>null then Append (sprintf " %s" versionFile) if otherFlags<>null then Append (sprintf " %s --resolutions" otherFlags) if targetFrameworkVersion<>null then Append(sprintf " true") Append(sprintf " %s" targetFrameworkVersion) Append " " for disabledWarning in disabledWarnings do Append (sprintf " %s;" disabledWarning) Append " " Append " " for define in defines do Append (sprintf " %s;" define) Append " " Append " " // Append " " // Append " bin\Debug\" // Append " " // Append " " // Append " bin\Release\" // Append " " Append " " for (reference,specificVersion) in references do Append (sprintf " " reference) if specificVersion then Append (sprintf " true") Append (sprintf " ") for projectReference in projectReferences do Append (sprintf " " projectReference) Append " SomeReferencedProject" Append " {45636601-CA91-4382-B8BB-3DBD03BF3F56}" Append " " for (file,buildAction,link) in files do let operation = match buildAction with | BuildAction.None -> "None" | BuildAction.EmbeddedResource -> "EmbeddedResource" | BuildAction.Compile -> "Compile" | _ -> failwith "unexpected" match link with | None -> Append (sprintf " <%s Include='%s'/>" operation file) | Some link -> Append (sprintf " <%s Include='%s'>" operation file) Append (sprintf " %s" link) Append (sprintf " " operation) Append " " Append otherProjMisc Append (sprintf " " targetsFileFolder) Append "" Trace.PrintLine("Salsa", fun _ -> sprintf "Project text:\n%s" (sb.ToString()) ) sb.ToString() /// Create an MSBuild project at the given location with the given files and options. let CreateMsBuildProject (useInstalledTargets : bool) projectName (files:(string*BuildAction*string option) list) (references:(string*bool) list) (projectReferences:string list) (disabledWarnings:string list) (defines:string list) versionFile (otherFlags:string) (preImportXml : string) (targetFrameworkVersion : string) = use t = Trace.Call("Salsa", "CreateMsBuildProject", fun _ -> sprintf " projectName=%s" projectName) if File.Exists(projectName) then File.Delete(projectName) let text = CreateMsBuildProjectText useInstalledTargets files references projectReferences disabledWarnings defines versionFile otherFlags preImportXml targetFrameworkVersion Trace.PrintLine("Salsa", fun _ -> text) File.AppendAllText(projectName,text+"\r\n") let MakeMSBuildBehavior() = let openProject : IOpenProject option ref= ref None let ConfPlat() = let s = (!openProject).Value.ConfigurationAndPlatform dprintf "%s" s let i = s.IndexOf('|') if i = -1 then s,"" else s.Substring(0,i), s.Substring(i+1) let Conf() = let c,_ = ConfPlat() in c let Plat() = let _,p = ConfPlat() in p { CreateProjectHook = CreateMsBuildProject false // Don't use installed FSharp.targets file InitializeProjectHook = fun op -> openProject := Some(op:?>IOpenProject) MakeHierarchyHook = (fun projdir fullname projectname configChangeNotifier serviceProvider-> let projectSite = NewMSBuildProjectSite(Conf, Plat, fullname) let projectSiteFactory = { new IProvideProjectSite with member x.GetProjectSite() = (projectSite :> IProjectSite) } let hier = VsMocks.createHier(projectSiteFactory) VsMocks.setHierRoot hier projdir projectname hier) AddFileToHierarchyHook = addFileToHier BuildHook = fun baseName target outputWindowPane -> MSBuild.Build(baseName, (if target = null then "Build" else target), Conf(), Plat()) GetMainOutputAssemblyHook = fun baseName -> MSBuild.GetMainOutputAssembly(baseName, Conf(), Plat()) SaveHook = fun () -> () DestroyHook = fun()->() ModifyConfigurationAndPlatformHook = fun _ -> () } type SimpleVisualStudio(configChangeNotifier,serviceProvider, ops : VsOps) = let mutable shiftKeyDown = false let mutable languageService : LanguageServiceState option = None let mutable undoStack:UndoAction list = [] let mutable focusFile : SimpleOpenFile option = None let mutable solution : SimpleOpenSolution option = None let mutable prevSolutions : Map = Map.empty let mutable bufferToSource = new Dictionary() let mutable invisibleSolution : SimpleOpenSolution option = None let mutable invisibleProjectFolder : string = null let mutable invisibleProject : SimpleOpenProject option = None let mutable configChangeNotifier : IVsHierarchy * string -> unit = configChangeNotifier let mutable serviceProvider : OleServiceProvider = serviceProvider let currentOutputWindowLines = ref [] let outputWindowPane = VsMocks.vsOutputWindowPane(currentOutputWindowLines) let fileChangeEx = VsMocks.VsFileChangeEx() let ReopenSolution fullname = match prevSolutions.TryFind fullname with | Some(s) -> prevSolutions <- prevSolutions.Remove fullname s | None -> failwith "solution with that project does not exist" member vs.FileChangeEx = fileChangeEx member vs.ConfigChangeNotifier = configChangeNotifier member vs.ServiceProvider = serviceProvider member vs.OutputWindowPane = outputWindowPane member private vs.InvisibleSolution() = match invisibleSolution with | None -> let s = SimpleOpenSolution(vs) invisibleSolution <- Some(s) s | Some(s) -> s member private vs.InvisibleProject(behaviorHooks:ProjectBehaviorHooks) = match invisibleProject with | None -> let projdir = NewTempDirectory "salsa-invis" invisibleProjectFolder <- projdir vs.PushUndo(RemoveFolder(projdir)) let p = SimpleOpenProject(vs.InvisibleSolution(),null,projdir,"invisible.fsproj",behaviorHooks) invisibleProject <- Some(p) p | Some(p) -> p member vs.NewFile(filename:string,buildAction:BuildAction,lines:string list,behaviorHooks:ProjectBehaviorHooks) = let p : IOpenProject = upcast vs.InvisibleProject(behaviorHooks) p.AddFileFromText(filename,filename,buildAction,lines) member vs.OpenFileViaOpenFile(filename:string,behaviorHooks:ProjectBehaviorHooks) = let p : IOpenProject = upcast vs.InvisibleProject(behaviorHooks) p.OpenFile(filename) member vs.LanguageService with get() = match languageService with | Some(languageService) -> languageService | None -> failwith "No salsa language service available." and set(value) = languageService <- Some(value) member vs.IsShiftKeyDown = shiftKeyDown member vs.PushUndo(u) = Trace.PrintLine("SalsaUndo", fun _ -> sprintf "Pushing cleanup action %A" u) undoStack<-u::undoStack member vs.GetColorizer(view:IVsTextView) = let _,buffer = view.GetBuffer() vs.LanguageService.GetColorizer(buffer) member vs.FocusOpenFile(fileToFocus:SimpleOpenFile) = focusFile<-Some(fileToFocus) member vs.CloseSolution(fullname) = match solution with | Some(s) -> prevSolutions <- prevSolutions.Add(fullname, s) solution <- None | None -> failwith "there is no open solution" member vs.AddSourceForBuffer(buffer:IVsTextBuffer,source:IdealSource) = bufferToSource.Add(buffer,source) member vs.SourceFactory(buffer:IVsTextBuffer) = bufferToSource.[buffer] member vs.GetOutputWindowPaneLines() = List.rev !currentOutputWindowLines // --------------------------------------------------------- interface VisualStudio with member vs.VsOps = ops // --------------------------------------------------------- interface IVisualStudio with member vs.CleanInvisibleProject() = if invisibleProjectFolder <> null then try Directory.Delete(invisibleProjectFolder, true) with _ -> () invisibleProject <- None member vs.CreateSolution() = match solution with | Some solution -> (solution :> IOpenSolution).Close() | None -> () let s = SimpleOpenSolution(vs) solution <- Some(s) s :> OpenSolution member solution.OpenExistingProject behaviorHooks projdir projectname = let fullname = Path.Combine(projdir,projectname+".fsproj") let soln = ReopenSolution fullname let proj = soln.OpenExistingProject behaviorHooks projdir projectname ((proj:>OpenProject),(soln:>OpenSolution)) member vs.OnIdle() = vs.LanguageService.OnIdle() match focusFile with | Some(focusFile) -> focusFile.OnIdle() | None -> Trace.PrintLine("ChangeEvents", fun _ -> "In TakeCoffeeBreak there was no focus file to idle.") member vs.ShiftKeyDown() = shiftKeyDown <- true member vs.ShiftKeyUp() = shiftKeyDown <- false member vs.TakeCoffeeBreak() = vs.LanguageService.WaitForBackgroundCompile() (vs :> IVisualStudio).OnIdle() vs.LanguageService.WaitForBackgroundCompile() (vs :> IVisualStudio).OnIdle() vs.LanguageService.WaitForBackgroundCompile() (vs :> IVisualStudio).OnIdle() member vs.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() = vs.LanguageService.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() member vs.CleanUp() = vs.LanguageService.Unhook() match solution with | Some(s) -> s.CleanUp() | _ -> () prevSolutions |> Map.toList |> List.iter (fun (_,s) -> s.CleanUp()) if true then let undoActions = undoStack undoStack<-[] undoActions |> List.iter(function DeleteFile f -> Trace.PrintLine("SalsaUndo", fun _ -> sprintf "Performing undo action: DeleteFile %s" f) try File.Delete(f) with e-> printf "Failed to Delete file '%s'" f raise e | RemoveFolder f -> Trace.PrintLine("SalsaUndo", fun _ -> sprintf "Performing undo action: RemoveFolder %s" f) try if Directory.Exists(f) then Directory.Delete(f,true) with | :? System.IO.IOException -> printf "Failed to Remove folder '%s'" f | e-> printf "Failed to Remove folder '%s'" f raise e) and internal SimpleOpenSolution(vs:SimpleVisualStudio) as this = let mutable curProjects : (string*SimpleOpenProject) list = [] let mutable prevProjects : Map = Map.empty let MakeProject behaviorHooks projdir fullname projectname = // Create the hierarchy to go with this project. let hier = behaviorHooks.MakeHierarchyHook projdir fullname projectname vs.ConfigChangeNotifier vs.ServiceProvider // The rest. let p = new SimpleOpenProject(this,hier,projdir,fullname,behaviorHooks) curProjects <- (fullname,p) :: curProjects p :> OpenProject let ReopenProject fullname = match prevProjects.TryFind fullname with | Some(p) -> prevProjects <- prevProjects.Remove fullname p | None -> failwith "project does not exist" member solution.Vs = vs member solution.CleanUp() = curProjects |> List.iter (fun (_,p) -> p.CleanUp()) prevProjects |> Map.toList |> List.iter (fun (_,p) -> p.CleanUp()) member solution.OpenExistingProject behaviorHooks projdir projectname = let fullname = Path.Combine(projdir,projectname+".fsproj") ReopenProject fullname :> OpenProject interface OpenSolution with member solution.VS = vs :> _ interface IOpenSolution with member solution.Close() = curProjects |> List.iter (fun (fullname,p) -> (p :> IOpenProject).Close() vs.CloseSolution fullname prevProjects <- prevProjects.Add(fullname, p) ) curProjects <- [] member solution.CreateProjectFlavor behaviorHooks projectname = // Create the physical project directory. let projdir = NewTempDirectory "salsa" vs.PushUndo(RemoveFolder(projdir)) // Put project in there. let fullname = Path.Combine(projdir, projectname+".fsproj") behaviorHooks.CreateProjectHook fullname [] [] [] [] [] null null "" null vs.PushUndo(DeleteFile(fullname)) // Schedule obj\Debug and bin\Debug to be removed. vs.PushUndo(RemoveFolder(Path.Combine(projdir, "obj"))) vs.PushUndo(RemoveFolder(Path.Combine(projdir, "bin"))) MakeProject behaviorHooks projdir fullname projectname and internal SimpleOpenProject(solution:SimpleOpenSolution,hier:IVsHierarchy,directory:string,projectName:string,behaviorHooks:ProjectBehaviorHooks) as this = let mutable configuration = "" let mutable preImportXml = "" let mutable errors:Error list = [] let mutable files:SimpleOpenFile list = [] let mutable filenames:(string*BuildAction*string option) list = [] let mutable references:(string*bool) list = [] let mutable projectReferences:string list = [] let mutable disabledWarnings:string list = [] let mutable defines:string list = [] let mutable versionFile : string = null let mutable otherFlags : string = null let CreateProjectFile() = behaviorHooks.CreateProjectHook projectName (List.rev filenames) (List.rev references) (List.rev projectReferences) (List.rev disabledWarnings) (List.rev defines) versionFile otherFlags preImportXml null // Trigger the AdviseProjectSiteChanges callbacks on our project sites match hier with | :? IProvideProjectSite as f -> match f.GetProjectSite() with | :? MSBuildProjectSite as m -> m.TriggerChanges() | _ -> () | _ -> () do behaviorHooks.InitializeProjectHook(this :> OpenProject) member project.Solution =solution member project.Errors with get() = errors and set(e) = errors <- e member project.CleanUp() = behaviorHooks.DestroyHook() interface OpenProject with member project.VS = solution.Vs :> _ interface IOpenProject with member project.Close() = List.iter (fun (f : SimpleOpenFile) -> f.Close()) files behaviorHooks.DestroyHook() member project.Directory with get() = directory member project.ProjectFile = Path.Combine(directory,projectName) member project.AddFileFromText(filenameOnDisk, filenameInProject, buildAction, lines) = // Record the filename without path. filenames <- (filenameInProject,buildAction,None)::filenames // Create the physical file. let filename = Path.Combine(directory, filenameOnDisk) File.WriteAllLines(filename, Array.ofList lines) CreateProjectFile() solution.Vs.PushUndo(DeleteFile(filename)) SimpleFile(filename) :> File member project.AddLinkedFileFromText(filenameOnDisk, includeFilenameInProject, linkFilenameInProject, buildAction, lines) = // Record the filename without path. filenames <- (includeFilenameInProject,buildAction, Some linkFilenameInProject)::filenames // Create the physical file. let filename = Path.Combine(directory, filenameOnDisk) File.WriteAllLines(filename, Array.ofList lines) CreateProjectFile() solution.Vs.PushUndo(DeleteFile(filename)) SimpleFile(filename) :> File member project.Build(target) = let outputWindowPane = solution.Vs.OutputWindowPane outputWindowPane.Clear() |> ignore let buildResult = behaviorHooks.BuildHook projectName target outputWindowPane let executableOutput = Path.Combine(directory,buildResult.ExecutableOutput) if target = "Clean" then project.Solution.Vs.FileChangeEx.DeletedFile(executableOutput) // Notify clients of IVsFileChangeEx else project.Solution.Vs.FileChangeEx.AddedFile(executableOutput) // Notify clients of IVsFileChangeEx {buildResult with ExecutableOutput=executableOutput} member project.GetMainOutputAssembly() = Path.Combine(directory,behaviorHooks.GetMainOutputAssemblyHook(projectName)) member project.Save() = behaviorHooks.SaveHook() member project.AddAssemblyReference(reference,specificVersion) = references <- (reference,specificVersion)::references CreateProjectFile() member project.AddDisabledWarning(code) = disabledWarnings <- code::disabledWarnings CreateProjectFile() member project.SetProjectDefines(definedConstants) = defines <- definedConstants CreateProjectFile() member project.PlaceIntoProjectFileBeforeImport(xml) = preImportXml <- preImportXml + xml CreateProjectFile() member project.AddProjectReference(referencedProject) = projectReferences <- (referencedProject:?>IOpenProject).ProjectFile :: projectReferences CreateProjectFile() member project.SetVersionFile(file) = versionFile <- file CreateProjectFile() member project.SetOtherFlags(flags) = otherFlags <- flags CreateProjectFile() member project.OpenFile(filename) = let filename = Path.Combine(directory, filename) // Opening a file that is already open does not create a new file it just opens that same file. match files |> List.tryFind(fun (opf:SimpleOpenFile)->opf.Filename = filename) with | Some(opf) -> let file = opf :> OpenFile opf.EnsureInitiallyFocusedInVs() file | None -> // Create the file with IVsTextView let lines = File.ReadAllLines(filename) let view = VsMocks.createTextView() let linestarts = Array.create (lines.Length+1) 0 // One extra to save the state at the end of the file. VsMocks.setFileText filename view lines (RecolorizeLines view solution.Vs.GetColorizer lines linestarts) (fun line->linestarts.[line]) // The invisible project does not have a hiearchy. if hier <> null then // Put the file in the hierarchy behaviorHooks.AddFileToHierarchyHook filename hier // Put the file in the text manager VsMocks.setActiveView (solution.Vs.LanguageService.ServiceProvider.TextManager) view // We no longer need the RDT, but keeping it compiling in Salsa/VsMocks in case we ever need it again // Put the document in the RDT let rdtId = nextRdtID() VsMocks.openDocumentInRdt (solution.Vs.LanguageService.ServiceProvider.Rdt) rdtId filename view hier // product no longer uses RDT // solution.Vs.LanguageService.OnAfterFirstDocumentLock rdtId 1u 1u // Create the 'Source' let file = SimpleOpenFile(project,filename,lines,view,linestarts,rdtId) let source = Source.CreateDelegatingSource(file.RecolorizeWholeFile, file.RecolorizeLine, filename, file.IsClosed, project.Solution.Vs.FileChangeEx) let _,buf = view.GetBuffer() solution.Vs.AddSourceForBuffer(buf,source) let source = solution.Vs.LanguageService.CreateSource(buf) // Scan all lines with the colorizer let tcs:IVsTextColorState = downcast box(buf) let _ = tcs.ReColorizeLines(0,lines.Length-1) // dprintf "ScanStates=%A\n" linestarts // Return the file. files <- file :: files file.EnsureInitiallyFocusedInVs() // Idle a bit to here (allows the Language Service to do any background processing) (solution.Vs :> IVisualStudio).TakeCoffeeBreak() file :> OpenFile member project.Errors with get() = errors member project.GetOpenFiles() = files |> List.map (fun f -> f :> OpenFile) member project.ConfigurationAndPlatform with get() = configuration and set(s) = configuration <- s behaviorHooks.ModifyConfigurationAndPlatformHook(s) and internal SimpleFile(filename:string) = interface File member file.DeleteFileFromDisk() = File.Delete(filename) and internal SimpleOpenFile(project:SimpleOpenProject,filename:string,lines:string array,view:IVsTextView,scanlines:int[],rdtId) = let mutable lines = lines let mutable scanlines = scanlines let mutable cursor:Point = {line=1;col=1} let mutable isClosed = false let mutable combinedLines:string = null member file.GetFileName() = filename member file.GetCheckOptionsOfScript() = project.Solution.Vs.LanguageService.InteractiveChecker.GetCheckOptionsFromScriptRoot(filename, file.CombinedLines, System.DateTime(2000,1,1)) member file.RecolorizeWholeFile() = () member file.RecolorizeLine (_line:int) = () member file.IsClosed() = isClosed member file.Filename = VsTextLines.GetFilename(Com.ThrowOnFailure1(view.GetBuffer())) member file.OnIdle() = while file.Source.NeedsVisualRefresh do file.OnIdleTypeCheck() member file.CombinedLines = if combinedLines = null then combinedLines<-String.Join("\n",lines) combinedLines member file.Source : IdealSource = let _,buf = view.GetBuffer() project.Solution.Vs.SourceFactory(buf) /// When a file is opened, focus it as the topmost file in VS. member file.EnsureInitiallyFocusedInVs() = project.Solution.Vs.FocusOpenFile(file) member file.TryExecuteBackgroundRequest(pr) = let ls = project.Solution.Vs.LanguageService ls.ExecuteBackgroundRequest(pr, file.Source) if pr.ResultClearsDirtinessOfFile then file.Source.RecordViewRefreshed() pr.ResultScope member file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting) = match file.TryExecuteBackgroundRequest(pr) with | null when canRetryAfterWaiting -> // OK, no scope is available. Try once more after waiting. The background compile should notify us that the // file becomes dirty again (project.Solution.Vs :> IVisualStudio).TakeCoffeeBreak() file.TryExecuteBackgroundRequest(pr) | res -> res /// This is the periodic check that VS member file.OnIdleTypeCheck() = // Remove errors for this file only project.Errors <- project.Errors |> List.filter(fun err->err.Path <> file.Filename) let ls = project.Solution.Vs.LanguageService // Full check. let sink = new AuthoringSink(BackgroundRequestReason.FullTypeCheck, 0, 0, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest(0,0,new TokenInfo(),file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath(file.Filename), BackgroundRequestReason.FullTypeCheck, view,sink,null,file.Source.ChangeCount,false) pr.ResultSink.add_OnErrorAdded( OnErrorAddedHandler(fun path subcategory msg context severity -> project.Errors <- new Error(path, subcategory, msg, context, severity) :: project.Errors)) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=false) |> ignore member file.DoIntellisenseRequest(parseReason) = if parseReason = BackgroundRequestReason.MemberSelect then // In the actual product, the only thing that can trigger MemberSelect is the auto-popup caused by the "." or ".." tokens (see service.fs:TokenClassifications.tokenInfo) // Thus, let's try to ensure that unit tests are only testing code paths from the actual product, and assert/fail if not. Best effort. let lineIndex, colIndex = cursor.line-1, cursor.col-1 System.Diagnostics.Debug.Assert(colIndex > 0, "hm, how did we invoke at start of line?") let colIndex = colIndex - 1 // cursor is just right of the char we want to inspect if lines.[lineIndex].[colIndex] <> '.' then // there could legally be whitespace or comments to the left, with a '.' left of that, and we have unit tests that do this, so accomodate that case as well, // at least in the approximate way unit tests do it if lines.[lineIndex].Substring(0,colIndex+1).EndsWith("*)") && lines.[lineIndex].Contains(".(*") then // ok, this is probably fine, have cases like "System.(*marker*)" () else //System.Diagnostics.Debug.Assert(false, "unit test is doing an AutoComplete MemberSelect at a non-dot location") failwith "unit test is probably doing an AutoComplete MemberSelect at a non-dot location, maybe should be CtrlSpaceComplete instead?" file.EnsureInitiallyFocusedInVs() let origKeyStateAccessor = PatchKeyboard project.Solution.Vs.IsShiftKeyDown let currentAuthoringScope = let ti = new TokenInfo() let sink = new AuthoringSink(parseReason, cursor.line-1, cursor.col-1, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest( cursor.line-1, cursor.col-1, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath(file.Filename), parseReason, view, sink, null, file.Source.ChangeCount, false) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=true) match currentAuthoringScope with | null -> System.Diagnostics.Debug.Assert(false, "No Authoring Scope was returned by ExecuteBackgroundRequest, even after waiting") failwith "No Authoring Scope" | _ -> currentAuthoringScope, origKeyStateAccessor member file.GetCursorLocation() = (cursor.line, cursor.col) member file.MoveCursorTo(line,col) = file.EnsureInitiallyFocusedInVs() if line=0 then failwith "Cursor points are 1-relative. Wrong line value." if col=0 then failwith "Cursor points are 1-relative. Wrong col value." cursor<-{line=line;col=col} member file.MoveCursorToEndOfMarker(marker) = file.EnsureInitiallyFocusedInVs() let _,tl = view.GetBuffer() cursor <- IsolateMarkerSite tl marker member file.MoveCursorToStartOfMarker(marker) = file.EnsureInitiallyFocusedInVs() let _,tl = view.GetBuffer() let c = IsolateMarkerSite tl marker cursor <- {line=c.line;col=c.col-marker.Length} // dprintf "Moved cursor to %A\n" cursor member file.GetQuickInfoAtCursor () = let (result, _) = file.GetQuickInfoAndSpanAtCursor() result member file.GetQuickInfoAndSpanAtCursor () = let (currentAuthoringScope, origKeyStateAccessor) = file.DoIntellisenseRequest BackgroundRequestReason.QuickInfo try let textspan = new TextSpan () let result,textspan = currentAuthoringScope.GetDataTipText (cursor.line - 1, cursor.col - 1) let currentLineLength = lines.[cursor.line-1].Length // The new editor is less tolerant of values out of range. Enforce rigor in unittests here. if textspan.iEndIndex<0 || textspan.iEndIndex>currentLineLength then failwith (sprintf "GetDataTipText returned iEndIndex out of range. iEndIndex=%d, Line length=%d" textspan.iEndIndex currentLineLength) if textspan.iStartIndex<0 || textspan.iStartIndex>currentLineLength then failwith (sprintf "GetDataTipText returned iStartIndex out of range. iStartIndex=%d, Line length=%d" textspan.iStartIndex currentLineLength) if textspan.iStartIndex > textspan.iEndIndex then failwith (sprintf "GetDataTipText returned iStartIndex (%d) greater than iEndIndex (%d)" textspan.iStartIndex textspan.iEndIndex) result, textspan finally Keyboard.HookGetKeyState origKeyStateAccessor |> ignore member file.GetMatchingBracesForPositionAtCursor() = file.EnsureInitiallyFocusedInVs() let sink = let ti = new TokenInfo() let sink = new AuthoringSink(BackgroundRequestReason.MatchBraces, cursor.line-1, cursor.col-1, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest( cursor.line-1, cursor.col-1, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath(file.Filename), BackgroundRequestReason.MatchBraces, view, sink, null, file.Source.ChangeCount, false) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=false) |> ignore sink [| for o in sink.Braces do match o with | (:? Microsoft.VisualStudio.FSharp.LanguageService.BraceMatch as m) -> yield (m.a, m.b) | x -> failwith "Microsoft.VisualStudio.FSharp.LanguageService.BraceMatch expected, but got %A" (if box x = null then "null" else (x.GetType()).FullName) |] member file.GetParameterInfoAtCursor(useNameResolutionFallback) = let currentAuthoringScope, origKeyStateAccessor = file.EnsureInitiallyFocusedInVs() let origKeyStateAccessor = PatchKeyboard project.Solution.Vs.IsShiftKeyDown let currentAuthoringScope = let ti = new TokenInfo() let sink = new AuthoringSink(BackgroundRequestReason.MethodTip, cursor.line-1, cursor.col-1, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest( cursor.line-1, cursor.col-1, ti, file.CombinedLines, snapshot, MethodTipMiscellany.ExplicitlyInvokedViaCtrlShiftSpace, Internal.Utilities.FileSystem.Path.SafeGetFullPath(file.Filename), BackgroundRequestReason.MethodTip, view, sink, null, file.Source.ChangeCount, false) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=true) match currentAuthoringScope with | null -> System.Diagnostics.Debug.Assert(false, "No Authoring Scope was returned by ExecuteBackgroundRequest, even after waiting") failwith "No Authoring Scope" | _ -> currentAuthoringScope, origKeyStateAccessor try let methods = currentAuthoringScope.GetMethodListForAMethodTip(useNameResolutionFallback) methods finally Keyboard.HookGetKeyState origKeyStateAccessor |> ignore member file.GetTokenTypeAtCursor() = file.EnsureInitiallyFocusedInVs() let line = cursor.line-1 // Cursor is 1-relative let text = lines.[line] let colorizer = project.Solution.Vs.GetColorizer(view) let attrs = Array.create text.Length 0u let result = ColorizeLine colorizer line text scanlines.[line] attrs if result <> scanlines.[line+1] then raise (new Exception("Retokenization of same line gave different results.")) let tokenColor = (int) (Mask attrs.[cursor.col-1] humanTextAttribute) match tokenColor with | 0 -> TokenType.Text | 1 -> TokenType.Keyword | 2 -> TokenType.Comment | 3 -> TokenType.Identifier | 4 -> TokenType.String | 5 -> TokenType.Number | 6 -> TokenType.InactiveCode | 7 -> TokenType.PreprocessorKeyword | 8 -> TokenType.Operator | x -> raise (new Exception(sprintf "Unknown token type: %A" x)) member file.GetSquigglesAtCursor() = file.EnsureInitiallyFocusedInVs() let IsCursorWithinSpan (cursor:Point) (span:TextSpan) = let cursor = { line=cursor.line-1; col=cursor.col-1 } // re-adjust to zero-based (span.iStartLine < cursor.line || (span.iStartLine = cursor.line && span.iStartIndex <= cursor.col)) && (cursor.line < span.iEndLine || (cursor.line = span.iEndLine && cursor.col <= span.iEndIndex)) let errors = (project:>IOpenProject).Errors errors |> List.filter (fun e -> IsCursorWithinSpan cursor e.Context) |> List.map (fun e -> (e.Severity, e.Message)) |> Set.ofList |> Set.toList // VS ignores duplicates member file.GetSquiggleAtCursor() = match file.GetSquigglesAtCursor() with | [] -> None | h::t -> Some h // arbitrarily pick one member file.AutoCompleteAtCursorImpl(reason, ?filterText) = let filterText = defaultArg filterText "" let currentAuthoringScope, origKeyStateAccessor = file.DoIntellisenseRequest(reason) try let declarations = let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot currentAuthoringScope.GetDeclarations(snapshot, cursor.line-1, cursor.col-1, reason) |> Async.RunSynchronously match declarations with | null -> [||] | declarations -> let count = declarations.GetCount(filterText) let result = Array.zeroCreate count for i in 0..count-1 do let glyph = enum (declarations.GetGlyph(filterText,i)) result.[i] <- (declarations.GetDisplayText(filterText,i), declarations.GetName(filterText,i), (fun () -> declarations.GetDescription(filterText,i)), glyph) result finally Keyboard.HookGetKeyState origKeyStateAccessor |> ignore member file.AutoCompleteAtCursor(?filterText) = file.AutoCompleteAtCursorImpl(BackgroundRequestReason.MemberSelect, ?filterText=filterText) member file.CompleteAtCursorForReason(reason) = file.AutoCompleteAtCursorImpl(reason) member file.CompletionBestMatchAtCursorFor(text, ?filterText) = let filterText = defaultArg filterText "" let currentAuthoringScope, origKeyStateAccessor = file.DoIntellisenseRequest(BackgroundRequestReason.MemberSelect) try let declarations = let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot currentAuthoringScope.GetDeclarations(snapshot, cursor.line-1,cursor.col-1, BackgroundRequestReason.MemberSelect) |> Async.RunSynchronously match declarations with | null -> None | declarations -> let (index, uniqueMatch, prefixMatch) = declarations.GetBestMatch(filterText, text) Some (declarations.GetName(filterText,index), uniqueMatch, prefixMatch) finally Keyboard.HookGetKeyState origKeyStateAccessor |> ignore member file.GotoDefinitionAtCursor (forceGen : bool) = file.EnsureInitiallyFocusedInVs () let row = cursor.line - 1 let col = cursor.col - 1 let currentAuthoringScope = let ti = new TokenInfo () let sink = new AuthoringSink (BackgroundRequestReason.Goto, row, col, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest(row, col, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath file.Filename, BackgroundRequestReason.Goto, view, sink, null, file.Source.ChangeCount, false) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=true) (currentAuthoringScope :?> FSharpScope).GotoDefinition (view, row, col) member file.GetF1KeywordAtCursor() = file.EnsureInitiallyFocusedInVs() let row = cursor.line - 1 let col = cursor.col - 1 let currentAuthoringScope = let ti = new TokenInfo () let sink = new AuthoringSink (BackgroundRequestReason.Goto, row, col, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest(row, col, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath file.Filename, BackgroundRequestReason.QuickInfo, view, sink, null, file.Source.ChangeCount, false) file.ExecuteBackgroundRequestForScope(pr,canRetryAfterWaiting=true) let keyword = ref None let span = new Microsoft.VisualStudio.TextManager.Interop.TextSpan(iStartIndex=col,iStartLine=row,iEndIndex=col,iEndLine=row) let context = Salsa.VsMocks.Vs.VsUserContext (fun (_,key,value) -> (if key = "keyword" then keyword := Some value); VSConstants.S_OK) currentAuthoringScope.GetF1KeywordString(span, context) !keyword member file.GetNavigationContentAtCursor () = file.EnsureInitiallyFocusedInVs () let row = cursor.line - 1 let col = cursor.col - 1 let ti = new TokenInfo () let sink = new AuthoringSink (BackgroundRequestReason.FullTypeCheck, row, col, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest(row, col, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath file.Filename, BackgroundRequestReason.FullTypeCheck, view, sink, null, file.Source.ChangeCount, false) project.Solution.Vs.LanguageService.ExecuteBackgroundRequest(pr, file.Source) match project.Solution.Vs.LanguageService.UntypedParseScope with | Some(scope) -> let typesList = new Collections.ArrayList() let membersList = new Collections.ArrayList() let mutable selectedType = 0 let mutable selectedMember = 0 scope.SynchronizeNavigationDropDown(file.Filename, row, col, typesList, membersList, &selectedType, &selectedMember) |> ignore { TypesAndModules = (typesList.ToArray(typeof) :?> DropDownMember[]) Members = (membersList.ToArray(typeof) :?> DropDownMember[]) SelectedType = selectedType SelectedMember = selectedMember } | _ -> { TypesAndModules = [| |]; Members = [| |]; SelectedType = -1; SelectedMember = -1 } member file.GetHiddenRegionCommands() = file.EnsureInitiallyFocusedInVs () let row = cursor.line - 1 let col = cursor.col - 1 let ti = new TokenInfo () let sink = new AuthoringSink (BackgroundRequestReason.FullTypeCheck, row, col, maxErrors) let snapshot = VsActual.createTextBuffer(file.CombinedLines).CurrentSnapshot let pr = project.Solution.Vs.LanguageService.CreateBackgroundRequest(row, col, ti, file.CombinedLines, snapshot, MethodTipMiscellany.Typing, Internal.Utilities.FileSystem.Path.SafeGetFullPath file.Filename, BackgroundRequestReason.FullTypeCheck, view, sink, null, file.Source.ChangeCount, false) project.Solution.Vs.LanguageService.ExecuteBackgroundRequest(pr, file.Source) match project.Solution.Vs.LanguageService.UntypedParseScope with | Some(scope) -> scope.GetHiddenRegions(file.Filename) | _ -> [], Map.empty /// grab a particular line from a file member file.GetLineNumber n = file.EnsureInitiallyFocusedInVs () lines.[n - 1] /// Get full file contents. member file.GetAllLines () = Array.toList lines /// get the GotoDefinition-style identifier at a particular location member file.GetIdentifierAtCursor () = file.EnsureInitiallyFocusedInVs () match QuickParse.GetCompleteIdentifierIsland true lines.[cursor.line - 1] (cursor.col - 1) with | Some (s, col, _) -> Some (s, col) | None -> None member file.ReplaceAllText(replacementLines, takeCoffeeBreak) = file.EnsureInitiallyFocusedInVs() lines <- replacementLines|>List.toArray combinedLines <- null // Update Scanlines. One extra to save the state at the end of the file. scanlines <- Array.create (lines.Length + 1) 0 let _, priorbuf = view.GetBuffer() let source = project.Solution.Vs.SourceFactory(priorbuf) // Update View. let projSolution = project.Solution VsMocks.setFileText file.Filename view lines (RecolorizeLines view projSolution.Vs.GetColorizer lines scanlines) (fun line->scanlines.[line]) // Scan all lines with the colorizer let _, newbuf = view.GetBuffer() if priorbuf<>newbuf then project.Solution.Vs.AddSourceForBuffer(newbuf,source) let tcs : IVsTextColorState = downcast box(newbuf) let _ = tcs.ReColorizeLines(0,lines.Length-1) file.Source.RecordChangeToView() // Check the file via OnIdle if takeCoffeeBreak then (projSolution.Vs :> IVisualStudio).TakeCoffeeBreak() () member file.SaveFileToDisk() = file.EnsureInitiallyFocusedInVs() let fullFileName = Path.Combine((project:>IOpenProject).Directory, file.Filename) File.WriteAllLines(fullFileName, lines) project.Solution.Vs.FileChangeEx.ChangedFile(fullFileName) // Notify clients of IVsFileChangeEx // In Visual Studio, OnAfterFirstDocumentLock is called for "Save" and "Save All" // Model this here. This ultimately causes a ProjectSystem --> LanguageService // "project change" notification which starts the background build for a // project // Product no longer uses RDT, so below is commented out // project.Solution.Vs.LanguageService.OnAfterFirstDocumentLock rdtId 1u 1u member file.Close () = isClosed <- true interface OpenFile with member file.VS = project.Solution.Vs :> _ let MakeMSBuildBehavior = Privates.MakeMSBuildBehavior /// Create a simple Salsa API. let CreateSimple(ops) = try if SynchronizationContext.Current = null then let context = new SynchronizationContext() // This executes on the threadpool, but I can't figure out how to get the context for the form. SynchronizationContext.SetSynchronizationContext(context) let sp,configChangeNotifier = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let ls = LanguageServiceState.Create() let rdt = box (VsMocks.createRdt()) let tm = box (VsMocks.createTextManager()) let getService (serviceType:Type) : obj = if serviceType = typeof then rdt else if serviceType = typeof then tm else raise (new Exception(sprintf "Salsa did not create service %A" serviceType)) let documentationProvider = { new IdealDocumentationProvider with override doc.AppendDocumentationFromProcessedXML(appendTo:StringBuilder,processedXml:string,showExceptions, showReturns) = appendTo.AppendLine(processedXml)|> ignore override doc.AppendDocumentation(appendTo:StringBuilder,filename:string,signature:string, showExceptions, showReturns) = appendTo.AppendLine(sprintf "[Filename:%s]" filename).AppendLine(sprintf "[Signature:%s]" signature) |> ignore } let vs = Privates.SimpleVisualStudio(configChangeNotifier,sp, ops) Microsoft.FSharp.Compiler.SourceCodeServices.Flags.init() ls.Initialize (ServiceProvider(getService),documentationProvider,VsMocks.createLanguagePreferences(),true,vs.SourceFactory) vs.LanguageService <- ls vs :> VisualStudio with e -> // Need to just print the error because NUnit has not fully initialized the exception at this point. printf "Error in createSimple: %A" e reraise() // ------------------------------------------------------------------------------ /// The different variations of of Salsa tests module Models = let VsSimpl(vs:VisualStudio) = vs :?> Privates.SimpleVisualStudio let VsImpl(vs:VisualStudio) = vs :?> IVisualStudio let SolutionImpl(sol:OpenSolution) = sol :?> IOpenSolution let ProjectImpl(proj:OpenProject) = proj :?> IOpenProject let OpenFileSimpl(openfile:OpenFile) = openfile :?> Privates.SimpleOpenFile let FileSimpl(file:File) = file :?> Privates.SimpleFile /// Salsa tests which create .fsproj files for projects. let MSBuildWithFlavor(behaviorHooks) = let rec ops = { CreateVisualStudio = fun() -> CreateSimple(ops) CreateSolution = fun vs -> VsImpl(vs).CreateSolution() GetOutputWindowPaneLines = fun vs -> VsSimpl(vs).GetOutputWindowPaneLines() CloseSolution = fun (solution) -> SolutionImpl(solution).Close() CreateProject = fun (solution,projectBaseName) -> SolutionImpl(solution).CreateProjectFlavor behaviorHooks projectBaseName CreateProjectWithHooks = fun (solution,hooks,projectBaseName) -> SolutionImpl(solution).CreateProjectFlavor hooks projectBaseName NewFile = fun (vs,filename,buildAction,lines) -> VsSimpl(vs).NewFile(filename,buildAction,lines,behaviorHooks) DeleteFileFromDisk = fun (file:File) -> FileSimpl(file).DeleteFileFromDisk() AddFileFromText = fun (project:OpenProject,filenameOnDisk,filenameInProject,buildAction,lines) -> ProjectImpl(project).AddFileFromText(filenameOnDisk,filenameInProject,buildAction,lines) AddLinkedFileFromText = fun (project:OpenProject,filenameOnDisk,includeFilenameInProject,linkFilenameInProject,buildAction,lines)->ProjectImpl(project).AddLinkedFileFromText(filenameOnDisk,includeFilenameInProject,linkFilenameInProject,buildAction,lines) AddAssemblyReference = fun (project,reference,specificVersion) -> ProjectImpl(project).AddAssemblyReference(reference,specificVersion) AddProjectReference = fun (project1,project2) -> ProjectImpl(project1).AddProjectReference(project2) ProjectDirectory = fun project -> ProjectImpl(project).Directory ProjectFile = fun project -> ProjectImpl(project).ProjectFile SetVersionFile = fun (project,file) -> ProjectImpl(project).SetVersionFile(file) SetOtherFlags = fun (project,flags) -> ProjectImpl(project).SetOtherFlags(flags) SetConfigurationAndPlatform = fun (project,configAndPlatform) -> ProjectImpl(project).ConfigurationAndPlatform <- configAndPlatform AddDisabledWarning = fun (project,code) -> ProjectImpl(project).AddDisabledWarning(code) GetErrors = fun project -> ProjectImpl(project).Errors BuildProject = fun (project,target) -> ProjectImpl(project).Build(target) GetMainOutputAssembly = fun project -> ProjectImpl(project).GetMainOutputAssembly() SaveProject = fun project->ProjectImpl(project).Save() OpenFileViaOpenFile = fun (vs,filename) -> VsSimpl(vs).OpenFileViaOpenFile(filename,behaviorHooks) OpenFile = fun (project,filename) -> ProjectImpl(project).OpenFile(filename) SetProjectDefines = fun (project,defines) -> ProjectImpl(project).SetProjectDefines(defines) PlaceIntoProjectFileBeforeImport = fun (project,xml) -> ProjectImpl(project).PlaceIntoProjectFileBeforeImport(xml) GetOpenFiles = fun project -> ProjectImpl(project).GetOpenFiles() MoveCursorTo = fun (file,line,col) -> OpenFileSimpl(file).MoveCursorTo(line,col) GetCursorLocation = fun (file) -> OpenFileSimpl(file).GetCursorLocation() OpenExistingProject = fun (vs,dir,projname) -> VsImpl(vs).OpenExistingProject behaviorHooks dir projname MoveCursorToEndOfMarker = fun (file,marker) -> OpenFileSimpl(file).MoveCursorToEndOfMarker(marker) MoveCursorToStartOfMarker = fun (file,marker) -> OpenFileSimpl(file).MoveCursorToStartOfMarker(marker) GetNameOfOpenFile = fun (file) -> OpenFileSimpl(file).GetFileName() GetCheckOptionsOfScript = fun (file) -> OpenFileSimpl(file).GetCheckOptionsOfScript() GetQuickInfoAtCursor = fun file -> OpenFileSimpl(file).GetQuickInfoAtCursor() GetQuickInfoAndSpanAtCursor = fun file -> OpenFileSimpl(file).GetQuickInfoAndSpanAtCursor() GetMatchingBracesForPositionAtCursor = fun file -> OpenFileSimpl(file).GetMatchingBracesForPositionAtCursor() GetParameterInfoAtCursor = fun file -> OpenFileSimpl(file).GetParameterInfoAtCursor(true) GetParameterInfoAtCursorNoFallback = fun file -> OpenFileSimpl(file).GetParameterInfoAtCursor(false) GetTokenTypeAtCursor = fun file -> OpenFileSimpl(file).GetTokenTypeAtCursor() GetSquiggleAtCursor = fun file -> OpenFileSimpl(file).GetSquiggleAtCursor() GetSquigglesAtCursor = fun file -> OpenFileSimpl(file).GetSquigglesAtCursor() AutoCompleteAtCursor = fun file -> OpenFileSimpl(file).AutoCompleteAtCursor() CompleteAtCursorForReason = fun (file,reason) -> OpenFileSimpl(file).CompleteAtCursorForReason(reason) CompletionBestMatchAtCursorFor = fun (file, value, filterText) -> (OpenFileSimpl(file)).CompletionBestMatchAtCursorFor(value, ?filterText=filterText) GotoDefinitionAtCursor = fun file forceGen -> (OpenFileSimpl file).GotoDefinitionAtCursor forceGen GetNavigationContentAtCursor = fun file -> OpenFileSimpl(file).GetNavigationContentAtCursor() GetHiddenRegionCommands = fun file -> OpenFileSimpl(file).GetHiddenRegionCommands() GetIdentifierAtCursor = fun file -> OpenFileSimpl(file).GetIdentifierAtCursor () GetF1KeywordAtCursor = fun file -> OpenFileSimpl(file).GetF1KeywordAtCursor () GetLineNumber = fun file n -> OpenFileSimpl(file).GetLineNumber n GetAllLines = fun file -> (OpenFileSimpl file).GetAllLines () SwitchToFile = fun (vs,file) -> VsSimpl(vs).FocusOpenFile(OpenFileSimpl(file)) OnIdle = fun vs -> VsImpl(vs).OnIdle() ShiftKeyDown = fun vs -> VsImpl(vs).ShiftKeyDown() ShiftKeyUp = fun vs -> VsImpl(vs).ShiftKeyUp() TakeCoffeeBreak = fun vs -> VsImpl(vs).TakeCoffeeBreak() ReplaceFileInMemory = fun (file,contents,takeCoffeeBreak) -> OpenFileSimpl(file).ReplaceAllText(contents, takeCoffeeBreak) SaveFileToDisk = fun file -> OpenFileSimpl(file).SaveFileToDisk() CreatePhysicalProjectFileInMemory = Privates.CreateMsBuildProjectText false CleanUp = fun vs -> VsImpl(vs).CleanUp() ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients = fun vs -> VsImpl(vs).ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() AutoCompleteMemberDataTipsThrowsScope = fun (message) -> let Hook(callback) : Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElement = let exn = Microsoft.FSharp.Compiler.ErrorLogger.Error((0,message),range.Zero) let ph = Microsoft.FSharp.Compiler.ErrorLogger.PhasedError.Create(exn, Microsoft.FSharp.Compiler.ErrorLogger.BuildPhase.TypeCheck) Microsoft.FSharp.Compiler.ErrorLogger.phasedError (ph) Microsoft.FSharp.Compiler.SourceCodeServices.TestHooks.FormatOverloadsToListScope(Hook) OutOfConeFilesAreAddedAsLinks = false SupportsOutputWindowPane = false CleanInvisibleProject = fun vs -> VsImpl(vs).CleanInvisibleProject() } ops, behaviorHooks /// Salsa tests which create .fsproj files for projects. let MSBuild() = let behaviorHooks = MakeMSBuildBehavior() MSBuildWithFlavor(behaviorHooks) /// Salsa tests which create .fsproj files using the installed version of /// FSharp.targets. let InstalledMSBuild() = // Overwrite the default MSBuildBehavior hooks to use the installed // FSharp.targets file. let behaviorHooks = { MakeMSBuildBehavior() with CreateProjectHook = Privates.CreateMsBuildProject true } // Same here - use installed version of FSharp.targets let ops, flavor = MSBuildWithFlavor(behaviorHooks) let updatedOps = { ops with CreatePhysicalProjectFileInMemory = Privates.CreateMsBuildProjectText true } (updatedOps, flavor) fsharp-3.0.34/src/fsharp/lexhelp.fsi0000775000175000017500000000630712260314606016317 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Helper functions for the F# lexer lex.mll module internal Microsoft.FSharp.Compiler.Lexhelp open Internal.Utilities open Internal.Utilities.Text open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler val internal stdinMockFilename : string [] type LightSyntaxStatus = new : initial:bool * warn : bool -> LightSyntaxStatus member ExplicitlySet : bool member Status : bool member Status : bool with set member WarnOnMultipleTokens : bool [] type LexResourceManager = new : unit -> LexResourceManager type lexargs = { defines: string list; ifdefStack: LexerIfdefStack; resourceManager: LexResourceManager; lightSyntaxStatus: LightSyntaxStatus; errorLogger: ErrorLogger} val resetLexbufPos : string -> UnicodeLexing.Lexbuf -> unit val mkLexargs : 'a * string list * LightSyntaxStatus * LexResourceManager * LexerIfdefStack * ErrorLogger -> lexargs val reusingLexbufForParsing : UnicodeLexing.Lexbuf -> (unit -> 'a) -> 'a val internal usingLexbufForParsing : UnicodeLexing.Lexbuf * string -> (UnicodeLexing.Lexbuf -> 'a) -> 'a val internal defaultStringFinisher : 'a -> 'b -> byte[] -> Parser.token val internal callStringFinisher : ('a -> 'b -> byte[] -> 'c) -> AbstractIL.Internal.ByteBuffer -> 'a -> 'b -> 'c val internal addUnicodeString : AbstractIL.Internal.ByteBuffer -> string -> unit val internal addUnicodeChar : AbstractIL.Internal.ByteBuffer -> int -> unit val internal addByteChar : AbstractIL.Internal.ByteBuffer -> char -> unit val internal stringBufferAsBytes : AbstractIL.Internal.ByteBuffer -> byte[] val internal stringBufferIsBytes : AbstractIL.Internal.ByteBuffer -> bool val internal newline : Lexing.LexBuffer<'a> -> unit val internal trigraph : char -> char -> char -> char val internal digit : char -> int32 val internal hexdigit : char -> int32 val internal unicodeGraphShort : string -> uint16 val internal hexGraphShort : string -> uint16 val internal unicodeGraphLong : string -> uint16 option * uint16 val internal escape : char -> char exception internal ReservedKeyword of string * Range.range exception internal IndentationProblem of string * Range.range module Keywords = val internal KeywordOrIdentifierToken : lexargs -> UnicodeLexing.Lexbuf -> string -> Parser.token val internal IdentifierToken : lexargs -> UnicodeLexing.Lexbuf -> string -> Parser.token val internal QuoteIdentifierIfNeeded : string -> string val mutable internal permitFsharpKeywords : bool val keywordNames : string list fsharp-3.0.34/src/fsharp/FSharp.Compiler.Server.Shared/0000775000175000017500000000000012260314606021550 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler.Server.Shared/Makefile.in0000664000175000017500000000106012260314606023612 0ustar chrischrisNAME=FSharp.Compiler.Server.Shared ASSEMBLY = $(NAME).dll TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:library REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:System.Runtime.Remoting.dll \ -r:Mono.Security.dll sources = \ ../../assemblyinfo/assemblyinfo.FSharp.Compiler.Server.Shared.dll.fs \ ../fsiserver/fsiserver.fs include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-lib-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/FSharp.Compiler.Server.Shared/FSharp.Compiler.Server.Shared.fsproj0000664000175000017500000000374712260314606030416 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug AnyCPU {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06} Library FSharp.Compiler.Server.Shared FSServerShared.txt assemblyinfo.FSharp.Compiler.Server.Shared.dll.fs fsiserver.fs {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/Makefile.in0000664000175000017500000000302312260314606016205 0ustar chrischris # Make the proto using the bootstrap, then make the final compiler using the proto # We call MAKE sequentially because we don't want do-final to explicitly depend on do-proto, # as that causes a complete recompilation of both proto and final everytime you touch the # compiler sources. all: $(MAKE) do-proto $(MAKE) do-final do-proto: $(MAKE) -C FSharp.Build-proto $@ $(MAKE) -C FSharp.Compiler-proto $@ $(MAKE) -C Fsc-proto $@ do-final install: $(MAKE) -C FSharp.Core $@ $(MAKE) -C FSharp.Build $@ $(MAKE) -C FSharp.Compiler $@ $(MAKE) -C Fsc $@ $(MAKE) -C FSharp.Compiler.Interactive.Settings $@ $(MAKE) -C FSharp.Compiler.Server.Shared $@ $(MAKE) -C FSharp.Data.TypeProviders $@ $(MAKE) -C fsi $@ $(MAKE) -C fsiAnyCpu $@ $(MAKE) -C policy.2.0.FSharp.Core $@ $(MAKE) -C policy.4.0.FSharp.Core $@ $(MAKE) -C policy.2.3.FSharp.Core $@ $(MAKE) -C policy.4.3.FSharp.Core $@ clean clean-2-0 clean-4-0: $(MAKE) -C FSharp.Build-proto $@ $(MAKE) -C FSharp.Compiler-proto $@ $(MAKE) -C Fsc-proto $@ $(MAKE) -C FSharp.Core $@ $(MAKE) -C FSharp.Build $@ $(MAKE) -C FSharp.Compiler $@ $(MAKE) -C Fsc $@ $(MAKE) -C FSharp.Compiler.Interactive.Settings $@ $(MAKE) -C FSharp.Compiler.Server.Shared $@ $(MAKE) -C FSharp.Data.TypeProviders $@ $(MAKE) -C fsi $@ $(MAKE) -C fsiAnyCpu $@ $(MAKE) -C policy.2.0.FSharp.Core $@ $(MAKE) -C policy.4.0.FSharp.Core $@ $(MAKE) -C policy.2.3.FSharp.Core $@ $(MAKE) -C policy.4.3.FSharp.Core $@ clean-2-1 do-2-1: $(MAKE) -C FSharp.Core $@ install-2-1: do-2-1 $(MAKE) -C FSharp.Core $@ fsharp-3.0.34/src/fsharp/lex.fsl0000775000175000017500000013047612260314606015456 0ustar chrischris{ module internal Microsoft.FSharp.Compiler.Lexer //---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //------------------------------------------------------------------------ // The Lexer. Some of the complication arises from the fact it is // reused by the Visual Studio mode to do partial lexing reporting // whitespace etc. //----------------------------------------------------------------------- open System open System.Globalization open System.Text open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Parser open Microsoft.FSharp.Compiler.Lexhelp open Microsoft.FSharp.Compiler.Lib open Internal.Utilities.Text.Lexing let lexeme (lexbuf : UnicodeLexing.Lexbuf) = UnicodeLexing.Lexbuf.LexemeString lexbuf let trimBoth (s:string) n m = s.Substring(n, s.Length - (n+m)) let lexemeTrimBoth lexbuf n m = trimBoth (lexeme lexbuf) n m let lexemeTrimRight lexbuf n = lexemeTrimBoth lexbuf 0 n let lexemeTrimLeft lexbuf n = lexemeTrimBoth lexbuf n 0 let fail args (lexbuf:UnicodeLexing.Lexbuf) msg dflt = let m = lexbuf.LexemeRange args.errorLogger.ErrorR(Error(msg,m)); dflt //-------------------------- // Integer parsing // Parsing integers is common in bootstrap runs (parsing // the parser tables, no doubt). So this is an optimized // version of the F# core library parsing code with the call to "Trim" // removed, which appears in profiling runs as a small but significant cost. let getSign32 (s:string) (p:byref) l = if (l >= p + 1 && s.[p] = '-') then p <- p + 1; -1 else 1 let isOXB c = #if FX_NO_TO_LOWER_INVARIANT let c = Char.ToLower c #else let c = Char.ToLowerInvariant c #endif c = 'x' || c = 'o' || c = 'b' let is0OXB (s:string) p l = l >= p + 2 && s.[p] = '0' && isOXB s.[p+1] let get0OXB (s:string) (p:byref) l = if is0OXB s p l #if FX_NO_TO_LOWER_INVARIANT then let r = Char.ToLower s.[p+1] in p <- p + 2; r #else then let r = Char.ToLowerInvariant s.[p+1] in p <- p + 2; r #endif else 'd' let formatError() = raise (new System.FormatException(SR.GetString("bad format string"))) let parseBinaryUInt64 (s:string) p l = let rec parse n acc = if n < l then parse (n+1) (acc * 2UL + (match s.[n] with '0' -> 0UL | '1' -> 1UL | _ -> formatError())) else acc parse p 0UL let parseOctalUInt64 (s:string) p l = let rec parse n acc = if n < l then parse (n+1) (acc * 8UL + (let c = s.[n] in if c >= '0' && c <= '7' then Convert.ToUInt64 c - Convert.ToUInt64 '0' else formatError())) else acc parse p 0UL let parseInt32 (s:string) = let l = s.Length let mutable p = 0 let sign = getSign32 s &p l let specifier = get0OXB s &p l match Char.ToLower(specifier,CultureInfo.InvariantCulture) with | 'x' -> sign * (int32 (Convert.ToUInt32(UInt64.Parse(s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture)))) | 'b' -> sign * (int32 (Convert.ToUInt32(parseBinaryUInt64 s p l))) | 'o' -> sign * (int32 (Convert.ToUInt32(parseOctalUInt64 s p l))) | _ -> Int32.Parse(s, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture) let lexemeTrimRightToInt32 args lexbuf n = try parseInt32 (lexemeTrimRight lexbuf n) with _ -> fail args lexbuf (FSComp.SR.lexOutsideIntegerRange()) 0 //-------------------------- // Checks let checkExprOp (lexbuf:UnicodeLexing.Lexbuf) = if String.contains (lexeme lexbuf) ':' then deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames(":")) lexbuf.LexemeRange; if String.contains (lexeme lexbuf) '$' then deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange let unexpectedChar lexbuf = LEX_FAILURE (FSComp.SR.lexUnexpectedChar(lexeme lexbuf)) let startString args (lexbuf: UnicodeLexing.Lexbuf) = let buf = ByteBuffer.Create 100 let m = lexbuf.LexemeRange let startp = lexbuf.StartPos let fin = (fun _m2 b s -> // Adjust the start-of-token mark back to the true start of the token lexbuf.StartPos <- startp; if b then if Lexhelp.stringBufferIsBytes buf then BYTEARRAY (Lexhelp.stringBufferAsBytes buf) else ( fail args lexbuf (FSComp.SR.lexByteArrayCannotEncode()) (); BYTEARRAY (Lexhelp.stringBufferAsBytes buf) ) else STRING (System.Text.Encoding.Unicode.GetString(s,0,s.Length))) buf,fin,m // Utility functions for processing XML documentation let trySaveXmlDoc lexbuf (buff:option) = match buff with | None -> () | Some sb -> LexbufLocalXmlDocStore.SaveXmlDocLine (lexbuf, sb.ToString(), posOfLexPosition lexbuf.StartPos) let tryAppendXmlDoc (buff:option) (s:string) = match buff with | None -> () | Some sb -> ignore(sb.Append s) // Utilities for parsing #if/#else/#endif let shouldStartLine args lexbuf (m:range) err tok = if (m.StartColumn <> 0) then fail args lexbuf err tok else tok let extractIdentFromHashIf (lexed:string) = // Skip the '#if' token, then trim whitespace, then find the end of the identifier let lexed = lexed.Trim() let trimIf = lexed.Substring(3).Trim() let identEnd = trimIf.IndexOfAny([| ' '; '\t'; '/' |]) let identEnd = (if identEnd = -1 then trimIf.Length else identEnd) trimIf.Substring(0, identEnd) } let letter = '\Lu' | '\Ll' | '\Lt' | '\Lm' | '\Lo' | '\Nl' let surrogateChar = '\Cs' let digit = '\Nd' let hex = ['0'-'9'] | ['A'-'F'] | ['a'-'f'] let truewhite = [' '] let offwhite = ['\t'] let anywhite = truewhite | offwhite let op_char = '!'|'$'|'%'|'&'|'*'|'+'|'-'|'.'|'/'|'<'|'='|'>'|'?'|'@'|'^'|'|'|'~'|':' let ignored_op_char = '.' | '$' | '?' let xinteger = ( '0' ('x'| 'X') hex + | '0' ('o'| 'O') (['0'-'7']) + | '0' ('b'| 'B') (['0'-'1']) + ) let integer = digit+ let int8 = integer 'y' let uint8 = (xinteger | integer) 'u' 'y' let int16 = integer 's' let uint16 = (xinteger | integer) 'u' 's' let int = integer let int32 = integer 'l' let uint32 = (xinteger | integer) 'u' let uint32l = (xinteger | integer) 'u' 'l' let nativeint = (xinteger | integer) 'n' let unativeint = (xinteger | integer) 'u' 'n' let int64 = (xinteger | integer) 'L' let uint64 = (xinteger | integer) ('u' | 'U') 'L' let xint8 = xinteger 'y' let xint16 = xinteger 's' let xint = xinteger let xint32 = xinteger 'l' let floatp = digit+ '.' digit* let floate = digit+ ('.' digit* )? ('e'| 'E') ['+' '-']? digit+ let float = floatp | floate let bignum = integer ('I' | 'N' | 'Z' | 'Q' | 'R' | 'G') let ieee64 = float let ieee32 = float ('f' | 'F') let decimal = (float | integer) ('m' | 'M') let xieee32 = xinteger 'l' 'f' let xieee64 = xinteger 'L' 'F' let escape_char = ('\\' ( '\\' | "\"" | '\'' | 'a' | 'f' | 'v' | 'n' | 't' | 'b' | 'r')) let char = '\'' ( [^'\\''\n''\r''\t''\b'] | escape_char) '\'' let trigraph = '\\' digit digit digit let hexGraphShort = '\\' 'x' hex hex let unicodeGraphShort = '\\' 'u' hex hex hex hex let unicodeGraphLong = '\\' 'U' hex hex hex hex hex hex hex hex let newline = ('\n' | '\r' '\n') let connecting_char = '\Pc' let combining_char = '\Mn' | '\Mc' let formatting_char = '\Cf' let ident_start_char = letter | '_' let ident_char = letter | connecting_char | combining_char | formatting_char | digit | ['\''] let ident = ident_start_char ident_char* rule token args skip = parse | ident { Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf) } | "do!" { DO_BANG } | "yield!" { YIELD_BANG(true) } | "return!" { YIELD_BANG(false) } | ident '!' { let tok = Keywords.KeywordOrIdentifierToken args lexbuf (lexemeTrimRight lexbuf 1) match tok with | LET _ -> BINDER (lexemeTrimRight lexbuf 1) | _ -> fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("!")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) } | ident ('#') { fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("#")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) } | int8 { let n = lexemeTrimRightToInt32 args lexbuf 1 if n > 0x80 || n < -0x80 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSigned()) (INT8(0y,false)) // Allow to parse as min_int. Allowed only because we parse '-' as an operator. else if n = 0x80 then INT8(sbyte(-0x80), true (* 'true' = 'bad'*) ) else INT8(sbyte n,false) } | xint8 { let n = lexemeTrimRightToInt32 args lexbuf 1 if n > 0xFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSignedHex()) (INT8(0y,false)) else INT8(sbyte(byte(n)),false) } | uint8 { let n = lexemeTrimRightToInt32 args lexbuf 2 if n > 0xFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitUnsigned()) (UINT8(0uy)) else UINT8(byte n) } | int16 { let n = lexemeTrimRightToInt32 args lexbuf 1 if n > 0x8000 || n < -0x8000 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false)) // Allow to parse as min_int. Allowed only because we parse '-' as an operator. else if n = 0x8000 then INT16(-0x8000s,true) else INT16(int16 n,false) } | xint16 { let n = lexemeTrimRightToInt32 args lexbuf 1 if n > 0xFFFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false)) else INT16(int16(uint16(n)),false) } | uint16 { let n = lexemeTrimRightToInt32 args lexbuf 2 if n > 0xFFFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitUnsigned()) (UINT16(0us)) else UINT16(uint16 n) } | int '.' '.' { let s = lexemeTrimRight lexbuf 2 // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if s = "2147483648" then INT32_DOT_DOT(-2147483648,true) else let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32_DOT_DOT(n,false) } | xint | int { let s = lexeme lexbuf // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if s = "2147483648" then INT32(-2147483648,true) else let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32(n,false) } | xint32 | int32 { let s = lexemeTrimRight lexbuf 1 // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if s = "2147483648" then INT32(-2147483648,true) else let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32(n,false) } | uint32 { let s = lexemeTrimRight lexbuf 1 let n = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L if n > 0xFFFFFFFFL || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else UINT32(uint32 (uint64 n)) } | uint32l { let s = lexemeTrimRight lexbuf 2 let n = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L if n > 0xFFFFFFFFL || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else UINT32(uint32 (uint64 n)) } | int64 { let s = lexemeTrimRight lexbuf 1 // Allow to parse as min_int. Stupid but allowed because we parse '-' as an operator. if s = "9223372036854775808" then INT64(-9223372036854775808L,true) else let n = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitSigned()) 0L INT64(n,false) } | uint64 { let s = lexemeTrimRight lexbuf 2 let n = try uint64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitUnsigned()) 0UL UINT64(n) } | nativeint { try NATIVEINT(int64 (lexemeTrimRight lexbuf 1)) with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeSigned()) (NATIVEINT(0L)) } | unativeint { try UNATIVEINT(uint64 (lexemeTrimRight lexbuf 2)) with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeUnsigned()) (UNATIVEINT(0UL)) } | ieee32 { IEEE32 (try float32(lexemeTrimRight lexbuf 1) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0f) } | ieee64 { IEEE64 (try float(lexeme lexbuf) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0) } | decimal { try let s = lexemeTrimRight lexbuf 1 // This implements a range check for decimal literals let d = System.Decimal.Parse(s,System.Globalization.NumberStyles.AllowExponent ||| System.Globalization.NumberStyles.Number,System.Globalization.CultureInfo.InvariantCulture) DECIMAL d with e -> fail args lexbuf (FSComp.SR.lexOusideDecimal()) (DECIMAL (decimal 0)) } | xieee32 { let s = lexemeTrimRight lexbuf 2 // Even though the intermediate step is an int64, display the "invalid float" message, since it will be less confusing to the user let n64 = (try (int64 s) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0L) if n64 > 0xFFFFFFFFL || n64 < 0L then fail args lexbuf (FSComp.SR.lexOusideThirtyTwoBitFloat()) (IEEE32 0.0f) else IEEE32 (System.BitConverter.ToSingle(System.BitConverter.GetBytes(int32 (uint32 (uint64 n64))),0)) } | xieee64 { let n64 = (try int64 (lexemeTrimRight lexbuf 2) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0L) IEEE64 (System.BitConverter.Int64BitsToDouble(n64)) } | bignum { let s = lexeme lexbuf BIGNUM (lexemeTrimRight lexbuf 1, s.[s.Length-1..s.Length-1]) } | (int | xint | float) ident_char+ { fail args lexbuf (FSComp.SR.lexInvalidNumericLiteral()) (INT32(0,false)) } | char { let s = lexeme lexbuf CHAR (if s.[1] = '\\' then escape s.[2] else s.[1]) } | char 'B' { let s = lexeme lexbuf let x = int32 (if s.[1] = '\\' then escape s.[2] else s.[1]) if x < 0 || x > 127 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) } | '\'' trigraph '\'' { let s = lexeme lexbuf let c = trigraph s.[2] s.[3] s.[4] let x = int32 c if x < 0 || x > 255 then fail args lexbuf (FSComp.SR.lexInvalidCharLiteral()) (CHAR c) else CHAR c } | '\'' trigraph '\'' 'B' { let s = lexeme lexbuf let x = int32 (trigraph s.[2] s.[3] s.[4]) if x < 0 || x > 255 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) } | '\'' unicodeGraphShort '\'' 'B' { let x = int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 2)) if x < 0 || x > 127 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) } | '\'' hexGraphShort '\'' { CHAR (char (int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 1)))) } | '\'' unicodeGraphShort '\'' { CHAR (char (int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 1)))) } | '\'' unicodeGraphLong '\'' { let hi,lo = unicodeGraphLong (lexemeTrimBoth lexbuf 3 1) match hi with | None -> CHAR (char lo) | Some _ -> fail args lexbuf (FSComp.SR.lexThisUnicodeOnlyInStringLiterals()) (CHAR (char lo)) } | "(*IF-FSHARP" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "(*F#" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "ENDIF-FSHARP*)" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "F#*)" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "(*)" { LPAREN_STAR_RPAREN } | "(*" { let m = lexbuf.LexemeRange if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,1,m))) else comment (1,m,args) skip lexbuf } | "(*IF-CAML*)" | "(*IF-OCAML*)" { let m = lexbuf.LexemeRange if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } | '"' { let buf,fin,m = startString args lexbuf if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string (buf,fin,m,args) skip lexbuf } | '"' '"' '"' { let buf,fin,m = startString args lexbuf if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString (buf,fin,m,args) skip lexbuf } | '$' '"' { fail args lexbuf (FSComp.SR.lexTokenReserved()) (WHITESPACE (LexCont.Token !args.ifdefStack)) } | '@' '"' { let buf,fin,m = startString args lexbuf if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString (buf,fin,m,args) skip lexbuf } | truewhite+ { if skip then token args skip lexbuf else WHITESPACE (LexCont.Token !args.ifdefStack) } | offwhite+ { if args.lightSyntaxStatus.Status then errorR(Error(FSComp.SR.lexTabsNotAllowed(),lexbuf.LexemeRange)); if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "////" op_char* { // 4+ slash are 1-line comments, online 3 slash are XmlDoc let m = lexbuf.LexemeRange if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } | "///" op_char* { // Match exactly 3 slash, 4+ slash caught by preceding rule let m = lexbuf.LexemeRange let doc = lexemeTrimLeft lexbuf 3 let sb = (new StringBuilder(100)).Append(doc) if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (Some sb,1,m,args) skip lexbuf } | "//" op_char* { // Need to read all operator symbols too, otherwise it might be parsed by a rule below let m = lexbuf.LexemeRange if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } | newline { newline lexbuf; if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | '`' '`' ([^'`' '\n' '\r' '\t'] | '`' [^'`''\n' '\r' '\t']) + '`' '`' { Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 2) } | ('#' anywhite* | "#line" anywhite+ ) digit+ anywhite* ('@'? "\"" [^'\n''\r''"']+ '"')? anywhite* newline { let pos = lexbuf.EndPos if skip then let s = lexeme lexbuf let rec parseLeadingDirective n = match s.[n] with | c when c >= 'a' && c <= 'z' -> parseLeadingDirective (n+1) | _ -> parseLeadingWhitespace n // goto the next state and parseLeadingWhitespace n = match s.[n] with | ' ' | '\t' -> parseLeadingWhitespace (n+1) | _ -> parseLineNumber n n // goto the next state and parseLineNumber start n = match s.[n] with | c when c >= '0' && c <= '9' -> parseLineNumber start (n+1) | _ -> let text = (String.sub s start (n-start)) let lineNumber = try int32 text with err -> errorR(Error(FSComp.SR.lexInvalidLineNumber(text),lexbuf.LexemeRange)); 0 lineNumber, parseWhitespaceBeforeFile n // goto the next state and parseWhitespaceBeforeFile n = match s.[n] with | ' ' | '\t' | '@' -> parseWhitespaceBeforeFile (n+1) | '"' -> Some (parseFile (n+1) (n+1)) | _ -> None and parseFile start n = match s.[n] with | '"' -> String.sub s start (n-start) | _ -> parseFile start (n+1) // Call the parser let line,file = parseLeadingDirective 1 // Construct the new position lexbuf.EndPos <- pos.ApplyLineDirective((match file with Some f -> fileIndexOfFile f | None -> pos.FileIndex), line) token args skip lexbuf else if not skip then (HASH_LINE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "<@" { checkExprOp lexbuf; LQUOTE ("<@ @>", false) } | "<@@" { checkExprOp lexbuf; LQUOTE ("<@@ @@>", true) } | "@>" { checkExprOp lexbuf; RQUOTE ("<@ @>", false) } | "@@>" { checkExprOp lexbuf; RQUOTE ("<@@ @@>", true) } | '#' { HASH } | '&' { AMP } | "&&" { AMP_AMP } | "||" { BAR_BAR } | '\'' { QUOTE } | '(' { LPAREN } | ')' { RPAREN } | '*' { STAR } | ',' { COMMA } | "->" { RARROW } | "?" { QMARK } | "??" { QMARK_QMARK } | ".." { DOT_DOT } | "." { DOT } | ":" { COLON } | "::" { COLON_COLON } | ":>" { COLON_GREATER } | "@>." { RQUOTE_DOT ("<@ @>",false) } | "@@>." { RQUOTE_DOT ("<@@ @@>",true) } | ">|]" { GREATER_BAR_RBRACK } | ":?>" { COLON_QMARK_GREATER } | ":?" { COLON_QMARK } | ":=" { COLON_EQUALS } | ";;" { SEMICOLON_SEMICOLON } | ";" { SEMICOLON } | "<-" { LARROW } | "=" { EQUALS } | "[" { LBRACK } | "[|" { LBRACK_BAR } | "<" { LESS false } | ">" { GREATER false } | "[<" { LBRACK_LESS } | "]" { RBRACK } | "|]" { BAR_RBRACK } | ">]" { GREATER_RBRACK } | "{" { LBRACE } | "|" { BAR } | "}" { RBRACE } | "$" { DOLLAR } | "%" { PERCENT_OP("%") } | "%%" { PERCENT_OP("%%") } | "-" { MINUS } | "~" { RESERVED } | "`" { RESERVED } | ignored_op_char* '*' '*' op_char* { checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf) } | ignored_op_char* ('*' | '/'|'%') op_char* { checkExprOp lexbuf; INFIX_STAR_DIV_MOD_OP(lexeme lexbuf) } | ignored_op_char* ('+'|'-') op_char* { checkExprOp lexbuf; PLUS_MINUS_OP(lexeme lexbuf) } | ignored_op_char* ('@'|'^') op_char* { checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf) } | ignored_op_char* ('=' | "!=" | '<' | '>' | '$') op_char* { checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) } | ignored_op_char* ('&') op_char* { checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf) } | ignored_op_char* '|' op_char* { checkExprOp lexbuf; INFIX_BAR_OP(lexeme lexbuf) } | ignored_op_char* ('!' | '~' ) op_char* { checkExprOp lexbuf; PREFIX_OP(lexeme lexbuf) } | ".[]" | ".[]<-" | ".[,]<-" | ".[,,]<-" | ".[,,,]<-" | ".[,,,]" | ".[,,]" | ".[,]" | ".[..]" | ".[..,..]" | ".[..,..,..]" | ".[..,..,..,..]" | ".()" | ".()<-" { FUNKY_OPERATOR_NAME(lexeme lexbuf) } | "#light" anywhite* | ("#indent" | "#light") anywhite+ "\"on\"" { if args.lightSyntaxStatus.ExplicitlySet && args.lightSyntaxStatus.WarnOnMultipleTokens then warning(Error((0,"#light should only occur as the first non-comment text in an F# source file"),lexbuf.LexemeRange)); // TODO unreachable error above, I think? - brianmcn args.lightSyntaxStatus.Status <- true; if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | ("#indent" | "#light") anywhite+ "\"off\"" { args.lightSyntaxStatus.Status <- false; mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange; if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | anywhite* "#if" anywhite+ ident anywhite* ("//" [^'\n''\r']*)? { let m = lexbuf.LexemeRange let lexed = lexeme lexbuf let id = extractIdentFromHashIf lexed args.ifdefStack := (IfDefIf,m) :: !(args.ifdefStack); // Get the token; make sure it starts at zero position & return let cont, f = ( if List.mem id args.defines then (LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)), endline (LexerEndlineContinuation.Token !args.ifdefStack) args skip) else (LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)), endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip) ) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont)) if not skip then tok else f lexbuf } | anywhite* "#else" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) match !(args.ifdefStack) with | [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) | (IfDefIf,_) :: rest -> let m = lexbuf.LexemeRange args.ifdefStack := (IfDefElse,m) :: rest; let tok = HASH_ELSE(m,lexed, LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst()) tok if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip lexbuf } | anywhite* "#endif" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange match !(args.ifdefStack) with | []-> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) | _ :: rest -> args.ifdefStack := rest; let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst()) tok if not skip then tok else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf } | "#if" { let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) (WHITESPACE (LexCont.Token !args.ifdefStack)) if not skip then tok else token args skip lexbuf } | surrogateChar surrogateChar | _ { unexpectedChar lexbuf } | eof { EOF (LexCont.Token !args.ifdefStack) } // Skips INACTIVE code until if finds #else / #endif matching with the #if or #else and ifdefSkip n m args skip = parse | anywhite* "#if" anywhite+ ident anywhite* ("//" [^'\n''\r']*)? { let m = lexbuf.LexemeRange let _id = extractIdentFromHashIf (lexeme lexbuf) // If #if is the first thing on the line then increase depth, otherwise skip, because it is invalid (e.g. "(**) #if ...") if (m.StartColumn <> 0) then if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf else let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m))) if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m)) args skip lexbuf } | anywhite* "#else" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange // If #else is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #else ...") if (m.StartColumn <> 0) then if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf elif n = 0 then match !(args.ifdefStack) with | []-> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) | (IfDefIf,_) :: rest -> let m = lexbuf.LexemeRange args.ifdefStack := (IfDefElse,m) :: rest; if not skip then (HASH_ELSE(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf else if not skip then (INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)))) else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)) args skip lexbuf } | anywhite* "#endif" anywhite* ("//" [^'\n''\r']*)? { let lexed = lexeme lexbuf let m = lexbuf.LexemeRange // If #endif is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #endif ...") if (m.StartColumn <> 0) then if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf elif n = 0 then match !(args.ifdefStack) with | [] -> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) | _ :: rest -> args.ifdefStack := rest; if not skip then (HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf else let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n-1,m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif()) tok if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,(n-1),m)) args skip lexbuf } | newline { newline lexbuf; ifdefSkip n m args skip lexbuf } | [^ ' ' '\n' '\r' ]+ | anywhite+ | surrogateChar surrogateChar | _ { // This tries to be nice and get tokens as 'words' because VS uses this when selecting stuff if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf } | eof { EOF (LexCont.IfDefSkip(!args.ifdefStack,n,m)) } // Called after lexing #if IDENT/#else/#endif - this checks whether there is nothing except end of line // or end of file and then calls the lexing function specified by 'cont' - either token or ifdefSkip and endline cont args skip = parse | newline { newline lexbuf; match cont with | LexerEndlineContinuation.Token(ifdefStack) -> if not skip then (WHITESPACE(LexCont.Token ifdefStack)) else token args skip lexbuf | LexerEndlineContinuation.Skip(ifdefStack, n, m) -> if not skip then (INACTIVECODE (LexCont.IfDefSkip(ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf } | eof { match cont with | LexerEndlineContinuation.Token(ifdefStack) -> (EOF(LexCont.Token ifdefStack)) | LexerEndlineContinuation.Skip(ifdefStack, n, m) -> (EOF(LexCont.IfDefSkip(ifdefStack,n,m))) } | [^'\r' '\n']+ | _ { let tok = fail args lexbuf (FSComp.SR.lexExpectedSingleLineComment()) (WHITESPACE (LexCont.Token !args.ifdefStack)) if not skip then tok else token args skip lexbuf } and string sargs skip = parse | '\\' newline anywhite* { let (_buf,_fin,m,args) = sargs newline lexbuf; if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | escape_char { let (buf,_fin,m,args) = sargs addByteChar buf (escape (lexeme lexbuf).[1]); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | trigraph { let (buf,_fin,m,args) = sargs let s = lexeme lexbuf addByteChar buf (trigraph s.[1] s.[2] s.[3]); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | hexGraphShort { let (buf,_fin,m,args) = sargs addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2))); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | unicodeGraphShort { let (buf,_fin,m,args) = sargs addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2))); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | unicodeGraphLong { let (buf,_fin,m,args) = sargs let hi,lo = unicodeGraphLong (lexemeTrimLeft lexbuf 2) (match hi with | None -> () | Some c -> addUnicodeChar buf (int c)); addUnicodeChar buf (int lo); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | '"' { let (buf,fin,_m,_args) = sargs let m2 = lexbuf.LexemeRange callStringFinisher fin buf m2 false } | '"''B' { let (buf,fin,_m,_args) = sargs let m2 = lexbuf.LexemeRange callStringFinisher fin buf m2 true } | newline { let (buf,_fin,m,args) = sargs newline lexbuf; addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs EOF (LexCont.String(!args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } and verbatimString sargs skip = parse | '"' '"' { let (buf,_fin,m,args) = sargs addByteChar buf '\"'; if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | '"' { let (buf,fin,_m,_args) = sargs let m2 = lexbuf.LexemeRange callStringFinisher fin buf m2 false } | '"''B' { let (buf,fin,_m,_args) = sargs let m2 = lexbuf.LexemeRange callStringFinisher fin buf m2 true } | newline { let (buf,_fin,m,args) = sargs newline lexbuf; addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs EOF (LexCont.VerbatimString(!args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } and tripleQuoteString sargs skip = parse | '"' '"' '"' { let (buf,fin,_m,_args) = sargs let m2 = lexbuf.LexemeRange callStringFinisher fin buf m2 false } | newline { let (buf,_fin,m,args) = sargs newline lexbuf; addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } // The rest is to break into pieces to allow double-click-on-word and other such things | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs EOF (LexCont.TripleQuoteString(!args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf); if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } // Parsing single-line comment - we need to split it into words for Visual Studio IDE and singleLineComment cargs skip = parse | newline { let buff,_n,_m,args = cargs trySaveXmlDoc lexbuf buff; newline lexbuf; // Saves the documentation (if we're collecting any) into a buffer-local variable. if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | eof { let _, _n,_m,args = cargs // NOTE: it is legal to end a file with this comment, so we'll return EOF as a token EOF (LexCont.Token !args.ifdefStack) } | [^ ' ' '\n' '\r' ]+ | anywhite+ { let buff,n,m,args = cargs // Append the current token to the XML documentation if we're collecting it tryAppendXmlDoc buff (lexeme lexbuf); if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,n,m))) else singleLineComment (buff,n,m,args) skip lexbuf } | surrogateChar surrogateChar | _ { let _, _n,_m,args = cargs if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } and comment cargs skip = parse | char { let n,m,args = cargs if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | '"' { let n,m,args = cargs if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | '"' '"' '"' { let n,m,args = cargs if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | '@' '"' { let n,m,args = cargs if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | "(*)" { let n,m,args = cargs if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } | '(' '*' { let n,m,args = cargs if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n+1,m))) else comment (n+1,m,args) skip lexbuf } | newline { let n,m,args = cargs newline lexbuf; if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } | "*)" { let n,m,args = cargs if n > 1 then if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n-1,m))) else comment (n-1,m,args) skip lexbuf else if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | anywhite+ | [^ '\'' '(' '*' '\n' '\r' '"' ')' '@' ' ' '\t' ]+ { let n,m,args = cargs if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } | eof { let n,m,args = cargs EOF (LexCont.Comment(!args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ { let n,m,args = cargs if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } and stringInComment n m args skip = parse // Follow string lexing, skipping tokens until it finishes | '\\' newline anywhite* { newline lexbuf; if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | escape_char | trigraph | hexGraphShort | unicodeGraphShort | unicodeGraphLong | ident | integer | xinteger | anywhite + { if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | '"' { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | newline { newline lexbuf; if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | eof { EOF (LexCont.StringInComment(!args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ { if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } and verbatimStringInComment n m args skip = parse // Follow verbatimString lexing, in short, skip double-quotes and other chars until we hit a single quote | '"' '"' { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | '"' { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | ident | integer | xinteger | anywhite + { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | newline { newline lexbuf; if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | eof { EOF (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } and tripleQuoteStringInComment n m args skip = parse // Follow tripleQuoteString lexing | '"' '"' '"' { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | ident | integer | xinteger | anywhite + { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | newline { newline lexbuf; if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | eof { EOF (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } and mlOnly m args skip = parse | "\"" { let buf = ByteBuffer.Create 100 let m2 = lexbuf.LexemeRange let _ = string (buf,defaultStringFinisher,m2,args) skip lexbuf if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } | newline { newline lexbuf; if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } | "(*ENDIF-CAML*)" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | "(*ENDIF-OCAML*)" { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } | [^ '(' '"' '\n' '\r' ]+ { if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } | eof { EOF (LexCont.MLOnly(!args.ifdefStack,m)) } | surrogateChar surrogateChar | _ { if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } fsharp-3.0.34/src/fsharp/unittests/0000775000175000017500000000000012260314606016204 5ustar chrischrisfsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.ErrorList.fs0000775000175000017500000011252712260314606024642 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type ErrorListTests() as this = inherit LanguageServiceBaseTests() let VerifyErrorListContainedExpectedStr(expectedStr:string,project : OpenProject) = let convertNewlines (s:string) = s.Replace("\r\n", " ").Replace("\n", " ") let errorList = GetErrors(project) let GetErrorMessages(errorList : Error list) = [ for i = 0 to errorList.Length - 1 do yield errorList.[i].Message] let msgs = GetErrorMessages errorList if msgs |> Seq.exists (fun errorMessage -> convertNewlines(errorMessage).Contains(convertNewlines expectedStr)) then () else Assert.Fail(sprintf "Expected errors to contain '%s' but it was not there; errors were %A" expectedStr msgs) let GetWarnings(project : OpenProject) = let errorList = GetErrors(project) [for error in errorList do if (error.Severity = Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning) then yield error] let CheckErrorList (content : string) f : unit = let (_, project, file) = this.CreateSingleFileProject(content) Build(project) |> ignore TakeCoffeeBreak(this.VS) let errors = GetErrors project printfn "===" for err in errors do printfn "%s" err.Message f errors let assertContains (errors : list) text = let ok = errors |> List.exists (fun err -> err.Message = text) Assert.IsTrue(ok, sprintf "Error list should contain '%s' message" text) //verify the error list Count member private this.VerifyErrorListCountAtOpenProject(fileContents : string, num : int) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) let errorList = GetErrors(project) for error in errorList do printfn "%A" error.Severity printf "%s\n" (error.ToString()) if (num = errorList.Length) then () else failwithf "The error list number is not the expected %d" num //Verify the warning list Count member private this.VerifyWarningListCountAtOpenProject(fileContents : string, expectedNum : int, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let warnList = GetWarnings(project) Assert.AreEqual(expectedNum,warnList.Length) //verify no the error list member private this.VerifyNoErrorListAtOpenProject(fileContents : string, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let errorList = GetErrors(project) for error in errorList do printfn "%A" error.Severity printf "%s\n" (error.ToString()) Assert.IsTrue(errorList.IsEmpty) //Verify the error list containd the expected string member private this.VerifyErrorListContainedExpectedString(fileContents : string, expectedStr : string, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. VerifyErrorListContainedExpectedStr(expectedStr,project) //Verify error Count at specified file member private this.VerifyCountAtSpecifiedFile(project : OpenProject ,num : int) = TakeCoffeeBreak(this.VS) let errorList = GetErrors(project) for error in errorList do printfn "%A" error.Severity printf "%s\n" (error.ToString()) if (num = errorList.Length) then () else failwith "The error list number is not the expected %d" num [] member public this.``OverloadsAndExtensionMethodsForGenericTypes``() = let fileContent = """ open System.Linq type T = abstract Count : int -> bool default this.Count(_ : int) = true interface System.Collections.Generic.IEnumerable with member this.GetEnumerator() : System.Collections.Generic.IEnumerator = failwith "not implemented" interface System.Collections.IEnumerable with member this.GetEnumerator() : System.Collections.IEnumerator = failwith "not implemented" let g (t : T) = t.Count() """ this.VerifyNoErrorListAtOpenProject(fileContent) [] member public this.``ErrorsInScriptFile``() = let (solution, project, file) = this.CreateSingleFileProject("", fileKind = SourceFileKind.FSX) let checkErrors expected = let l = List.length (GetErrors project) Assert.AreEqual(expected, l, "Unexpected number of errors in error list") TakeCoffeeBreak(this.VS) checkErrors 0 ReplaceFileInMemory file <| [ "#r \"System\"" "#r \"System2\"" ] TakeCoffeeBreak(this.VS) checkErrors 1 ReplaceFileInMemory file <| [ "#r \"System\"" ] TakeCoffeeBreak(this.VS) checkErrors 0 [] [] member public this.``LineDirective``() = use _guard = this.UsingNewVS() let fileContents = """ # 100 "foo.fs" let x = y """ let solution = this.CreateSolution() let project = CreateProject(solution, "testproject") let _ = AddFileFromTextBlob(project, "File1.fs", "namespace LineDirectives") let _ = AddFileFromTextBlob(project,"File2.fs", fileContents) let file = OpenFile(project, "File1.fs") let _ = OpenFile(project,"File2.fs") Assert.IsFalse(Build(project).BuildSucceeded) this.VerifyCountAtSpecifiedFile(project,1) VerifyErrorListContainedExpectedStr("The value or constructor 'y' is not defined",project) [] member public this.``InvalidConstructorOverload``() = let content = """ type X private() = new(_ : int) = X() new(_ : bool) = X() new(_ : float, _ : int) = X() X(1.0) """ let expectedMessages = [ "Possible overload: 'new : bool -> X'. Type constraint mismatch. The type float is not compatible with type bool The type 'float' is not compatible with the type 'bool'." "Possible overload: 'new : int -> X'. Type constraint mismatch. The type float is not compatible with type int The type 'float' is not compatible with the type 'int'." ] |> List.map (fun s -> s.Replace("\r\n", "\n")) CheckErrorList content <| fun errors -> Assert.AreEqual(3, List.length errors) assertContains errors "No overloads match for method 'X'. The available overloads are shown below (or in the Error List window)." for expected in expectedMessages do assertContains errors expected [] member public this.``Query.InvalidJoinRelation.GroupJoin``() = let content = """ let x = query { for x in [1] do groupJoin y in [2] on ( x < y) into g select x } """ CheckErrorList content <| fun errors -> match errors with | [err] -> Assert.AreEqual("Invalid join relation in 'groupJoin'. Expected 'expr expr', where is =, =?, ?= or ?=?.", err.Message) | errs -> Assert.Fail("Unexpected content of error list") [] member public this.``Query.NonOpenedNullableModule.Join``() = let content = """ let t = query { for x in [1] do join y in [""] on (x ?=? y) select 1 } """ CheckErrorList content <| fun errors -> match errors with | [err] -> Assert.AreEqual("The operator '?=?' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.", err.Message) | errs -> Assert.Fail("Unexpected content of error list") [] member public this.``Query.NonOpenedNullableModule.GroupJoin``() = let content = """ let t = query { for x in [1] do groupJoin y in [""] on (x ?=? y) into g select 1 } """ CheckErrorList content <| fun errors -> match errors with | [err] -> Assert.AreEqual("The operator '?=?' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.", err.Message) | errs -> Assert.Fail("Unexpected content of error list") [] member public this.``Query.InvalidJoinRelation.Join``() = let content = """ let x = query { for x in [1] do join y in [""] on (x > y) select 1 } """ CheckErrorList content <| fun errors -> match errors with | [err] -> Assert.AreEqual("Invalid join relation in 'join'. Expected 'expr expr', where is =, =?, ?= or ?=?.", err.Message) | errs -> Assert.Fail("Unexpected content of error list") [] member public this.``InvalidMethodOverload``() = let content = """ System.Console.WriteLine(null) """ CheckErrorList content <| fun errors -> Assert.AreEqual(1, List.length errors) assertContains errors "A unique overload for method 'WriteLine' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: System.Console.WriteLine(buffer: char []) : unit, System.Console.WriteLine(format: string, params arg: obj []) : unit, System.Console.WriteLine(value: obj) : unit, System.Console.WriteLine(value: string) : unit" [] member public this.``InvalidMethodOverload2``() = let content = """ type A<'T>() = member this.Do(a : int, b : 'T) = () member this.Do(a : int, b : int) = () type B() = inherit A() let b = B() b.Do(1, 1) """ CheckErrorList content <| fun errors -> Assert.AreEqual(1, List.length errors) assertContains errors "A unique overload for method 'Do' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: member A.Do : a:int * b:'T -> unit, member A.Do : a:int * b:int -> unit" [] member public this.``NoErrorInErrList``() = use _guard = this.UsingNewVS() let fileContents1 = """ module NoErrors open System.Collections.Generic // but do not use it """ let fileContents2 = """ // Regression test for FSHARP1.0:3824 - Problems with generic type parameters in type extensions (was: Confusing error/warning on type extension: code is less generic) module NoErrors2 module DictionaryExtension = type System.Collections.Generic.IDictionary<'k,'v> with member this.TryLookup(key : 'k) = let mutable value = Unchecked.defaultof<'v> if this.TryGetValue(key, &value) then Some value else None open DictionaryExtension""" let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let _ = AddFileFromTextBlob(project,"File1.fs", fileContents1) let _ = OpenFile(project,"File1.fs") let _ = AddFileFromTextBlob(project,"File2.fs", fileContents2) let _ = OpenFile(project,"File2.fs") Build(project) |> ignore TakeCoffeeBreak(this.VS) this.VerifyCountAtSpecifiedFile(project,0) [] member public this.``NoLevel4Warning``() = use _guard = this.UsingNewVS() let fileContents = """ namespace testerrorlist module nolevel4warnings = let x = System.DateTime.Now - System.DateTime.Now x.Add(x) |> ignore """ let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let _ = AddFileFromTextBlob(project,"Module1.fs",fileContents) let _ = AddFileFromTextBlob(project,"Script.fsx","") let _ = OpenFile(project,"Script.fsx") Build(project) |> ignore this.VerifyCountAtSpecifiedFile(project,0) [] //This is an verify action test & example member public this.``TestErrorMessage``() = let fileContent = """Console.WriteLine("test")""" let expectedStr = "The namespace or module 'Console' is not defined" this.VerifyErrorListContainedExpectedString(fileContent,expectedStr) [] member public this.``TestWrongKeywordInInterfaceImplementation``() = let fileContent = """ type staticInInterface = class interface System.IDisposable with static member Foo() = () member x.Dispose() = () end end""" CheckErrorList fileContent <| function | [err] -> Assert.IsTrue(err.Message.Contains("Unexpected keyword 'static' in member definition. Expected 'member', 'override' or other token")) | x -> Assert.Fail(sprintf "Unexpected errors: %A" x) [] [] [] member public this.``TypeProvider.MultipleErrors`` () = let tpRef = System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll") let checkList n = printfn "===TypeProvider.MultipleErrors: %d===" n let content = sprintf "type Err = TPErrors.TP<%d>" n let (solution, project, file) = this.CreateSingleFileProject(content, references = [tpRef]) TakeCoffeeBreak(this.VS) let errorList = GetErrors(project) for err in errorList do printfn "Severity: %A, Message: %s" err.Severity err.Message Assert.IsTrue(List.length errorList = n, "Unexpected size of error list") let uniqueErrors = errorList |> Seq.map (fun m -> m.Message, m.Severity) |> set Assert.IsTrue(uniqueErrors.Count = n, "List should not contain duplicate errors") for x = 0 to (n - 1) do let expectedName = sprintf "The type provider 'DummyProviderForLanguageServiceTesting.TypeProviderThatThrowsErrors' reported an error: Error %d" x Assert.IsTrue(Set.contains (expectedName, Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error) uniqueErrors) for i = 1 to 10 do checkList i [] [] member public this.``Records.ErrorList.IncorrectBindings1``() = for code in [ "{_}"; "{_ = }"] do printfn "checking %s" code CheckErrorList code <| fun errs -> printfn "%A" errs Assert.IsTrue((List.length errs) = 2) assertContains errs "Field bindings must have the form 'id = expr;'" assertContains errs "'_' cannot be used as field name" [] [] member public this.``Records.ErrorList.IncorrectBindings2``() = CheckErrorList "{_ = 1}" <| function | [err] -> Assert.AreEqual("'_' cannot be used as field name", err.Message) | x -> printfn "%A" x; Assert.Fail("unexpected content of error list") [] [] member public this.``Records.ErrorList.IncorrectBindings3``() = CheckErrorList "{a = 1; _; _ = 1}" <| fun errs -> Assert.IsTrue((List.length errs) = 3) let groupedErrs = errs |> Seq.groupBy (fun e -> e.Message) |> Seq.toList Assert.IsTrue((List.length groupedErrs) = 2) for (msg, e) in groupedErrs do if msg = "'_' cannot be used as field name" then Assert.AreEqual(2, Seq.length e) elif msg = "Field bindings must have the form 'id = expr;'" then Assert.AreEqual(1, Seq.length e) else Assert.Fail (sprintf "Unexpected message %s" msg) [] [] [] //This test case Verify the Error List shows the correct error message when the static parameter type is invalid //Intent: We want to make sure that both errors coming from the TP and the compilation of things specific to type provider are properly flagged in the error list. member public this.``TypeProvider.StaticParameters.IncorrectType `` () = // dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) // but here as you can see it's give (int * int) let fileContent = """ type foo = N1.T< const 42,2>""" let expectedStr = """This expression was expected to have type string but here has type int """ this.VerifyErrorListContainedExpectedString(fileContent,expectedStr, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] [] //This test case Verify the Error List shows the correct error message when applying invalid static parameter to the provided type member public this.``TypeProvider.StaticParameters.Incorrect `` () = // dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) let fileContent = """ type foo = N1.T< const " ",2>""" let expectedStr = "An error occurred applying the static arguments to a provided type" this.VerifyErrorListContainedExpectedString(fileContent,expectedStr, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case Verify that Error List shows the correct error message when Type Provider that takes two static parameter is given only one static parameter. member public this.``TypeProvider.StaticParameters.IncorrectNumberOfParameter `` () = // dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) // but here as you can see it's give (string) let fileContent = """type foo = N1.T< const "Hello World">""" let expectedStr = "The static parameter 'ParamIgnored' of the provided type 'T' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. 'T'." this.VerifyErrorListContainedExpectedString(fileContent,expectedStr, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] member public this.``TypeProvider.ProhibitedMethods`` () = let cases = [ "let x = BadMethods.Arr.GetFirstElement([||])", "Get" "let y = BadMethods.Arr.SetFirstElement([||], 5)", "Set" "let z = BadMethods.Arr.AddressOfFirstElement([||])", "Address" ] for (code, str) in cases do this.VerifyErrorListContainedExpectedString ( code, sprintf "Array method '%s' is supplied by the runtime and cannot be directly used in code." str, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] ) [] [] [] //This test case verify that the Error list count is one in the Error list item when given invalid static parameter that raises an error. member public this.``TypeProvider.StaticParameters.ErrorListItem `` () = this.VerifyErrorListCountAtOpenProject( fileContents = """ type foo = N1.T< const "Hello World",2>""", num = 1) [] [] [] //This test case Verify that the Warning list count is one in the Warning list item when there is incorrect indentation in the code. member public this.``TypeProvider.StaticParameters.WarningListItem `` () = this.VerifyWarningListCountAtOpenProject( fileContents = """ type foo = N1.T< const "Hello World",2>""", expectedNum = 1, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case Verify that there is No Error list count in the Error list item when the file content is correct. member public this.``TypeProvider.StaticParameters.NoErrorListCount `` () = this.VerifyNoErrorListAtOpenProject( fileContents = """ type foo = N1.T< const "Hello World",2>""", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``NoError.FlagsAndSettings.TargetOptionsRespected``() = let fileContent = """ [] let fn x = 0 let y = fn 1""" // Turn off the "Obsolete" warning. let (solution, project, file) = this.CreateSingleFileProject(fileContent, disabledWarnings = ["44"]) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let errorList = GetErrors(project) Assert.IsTrue(errorList.IsEmpty) [] member public this.``UnicodeCharactors``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"æ–°è¦baApplication5") let _ = AddFileFromTextBlob(project,"æ–°è¦baProgram.fsi","") let _ = AddFileFromTextBlob(project,"æ–°è¦bcrogram.fs","") let file = OpenFile(project,"æ–°è¦baProgram.fsi") let file = OpenFile(project,"æ–°è¦bcrogram.fs") Assert.IsFalse(Build(project).BuildSucceeded) Assert.IsTrue(GetErrors(project) |> List.exists(fun error -> (error.ToString().Contains("æ–°è¦baProgram")))) // In this bug, particular warns were still present after nowarn [] [] member public this.``NoWarn.Bug5424``() = let fileContent = """ #nowarn "67" // this type test or downcast will always hold #nowarn "66" // this upcast is unnecessary - the types are identical namespace Namespace1 module Test = open System let a = ((5 :> obj) :?> Object) let b = a :> obj""" this.VerifyNoErrorListAtOpenProject(fileContent) /// FEATURE: Errors in flags are sent in Error list. [] member public this.``FlagsAndSettings.ErrorsInFlagsDisplayed``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") SetVersionFile(project,"nonexistent") let file = AddFileFromText(project,"File1.fs",["#light"]) let file = OpenFile(project,"File1.fs") TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. VerifyErrorListContainedExpectedStr("nonexistent",project) [] member public this.``ErrorReporting.WrongPreprocessorIf``() = let fileContent = """ #light #if !!!!COMPILED #endif""" this.VerifyErrorListContainedExpectedString(fileContent,"#if") [] member public this.``BackgroundComplier``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ #light module Test module M = let func (args : string[]) = if(args.Length=1 && args.[0]="Hello") then 0 else 1 [] let main2 args = let res = func(args) exit(res) let f x = let p = x p + 1 let g x = let p = x p + 1 """, num = 2) [] member public this.``CompilerErrorsInErrList1``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ namespace Errorlist module CompilerError = let a = NoVal""", num = 1 ) [] member public this.``CompilerErrorsInErrList4``() = this.VerifyNoErrorListAtOpenProject( fileContents = """ #nowarn "47" type Fruit (shelfLife : int) as x = let mutable m_age = (fun () -> x) #nowarn "25" // FS0025: Incomplete pattern matches on this expression. For example, the value 'C' type DU = A | B | C let f x = function A -> true | B -> false #nowarn "58" // FS0058: possible incorrect indentation: this token is offside of context started at let _fsyacc_gotos = [| 0us; 1us; 2us |] """ ) [] member public this.``CompilerErrorsInErrList5``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ #r "D:\x\Absent.dll" let x = 0 """, num = 1) [] member public this.``CompilerErrorsInErrList6``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ type EnumOfBigInt = | A = 0I | B = 0I type EnumOfNatNum = | A = 0N | B = 0N """, num = 2) [] member public this.``CompilerErrorsInErrList7``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ // FSB 1124, Implement constant literals type EnumType = | A = 1 | B = 2 type CustomAttrib(a:int, b:string, c:float, d:EnumType) = inherit System.Attribute() //[] let a = 42 //[] let b = "str" //[] let c = 3.141 //[] let d = EnumType.A [] type SomeClass() = override this.ToString() = "SomeClass" [] let main0 args = () let foo = 1 """, num = 5) [] member public this.``CompilerErrorsInErrList8``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ type EnumInt8s = | A1 = - 10y """ , num = 1 ) [] member public this.``CompilerErrorsInErrList9``() = use _guard = this.UsingNewVS() let fileContents1 = """ namespace NS [] type Lib() = class abstract M : int -> int end """ let fileContents2 = """ namespace NS module M = type Lib with override x.M i = i """ let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let _ = AddFileFromTextBlob(project,"File1.fs",fileContents1) let file1 = OpenFile(project,"File1.fs") let _ = AddFileFromTextBlob(project,"File2.fs",fileContents2) let file2 = OpenFile(project,"File2.fs") //this.VerifyErrorListNumberAtOpenProject this.VerifyCountAtSpecifiedFile(project,1) TakeCoffeeBreak(this.VS) Build(project) |> ignore this.VerifyCountAtSpecifiedFile(project,1) [] member public this.``CompilerErrorsInErrList10``() = let fileContents = """ namespace Errorlist module CompilerError = printfn "%A" System.Windows.Forms.Application.UserAppDataPath """ let (_, project, _) = this.CreateSingleFileProject(fileContents, references = ["PresentationCore.dll"; "PresentationFramework.dll"]) Build(project) |> ignore this.VerifyCountAtSpecifiedFile(project,1) [] member public this.``DoubleClickErrorListItem``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ let x = x """, num = 1) [] member public this.``FixingCodeAfterBuildRemovesErrors01``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ let x = 4 + "x" """, num = 2) [] member public this.``FixingCodeAfterBuildRemovesErrors02``() = this.VerifyNoErrorListAtOpenProject( fileContents = "let x = 4" ) [] member public this.``IncompleteExpression``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ // Regresson test for FSHARP1.0:1397 - Warning required on expr of function type who result is immediately thrown away module Test printfn "%A" List.map (fun x -> x + 1) """ , num = 2) [] member public this.``IntellisenseRequest``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ type Foo() = member a.B(*Marker*) : int = "1" """, num = 1) [] member public this.``TypeChecking1``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ open System module Foo = type Thread(thread) = let mutable next : Thread option = thread member t.Next with get() = next and set(thread) = next - thread module Bar = let x = new Foo.Thread(None) x.Next <- Some x """, num = 1) [] member public this.``TypeChecking2``() = this.VerifyErrorListContainedExpectedString( fileContents = """ open System module Foo = type Thread(thread) = let mutable next : Thread option = thread member t.Next with get() = next and set(thread) = next - thread module Bar = let x = new Foo.Thread(None) x.Next <- Some x """, expectedStr = "Foo.Thread option") [] member public this.``TypeChecking3``() = this.VerifyErrorListCountAtOpenProject( fileContents = """ open System module Foo = type Thread(thread) = let mutable next : Thread option = thread member t.Next with get() = next and set(thread) = next - thread module Bar = let x = new Foo.Thread(None) x.Next <- Some 1 """, num = 1) [] member public this.``TypeChecking4``() = this.VerifyErrorListContainedExpectedString( fileContents = """ open System module Foo = type Thread(thread) = let mutable next : Thread option = thread member t.Next with get() = next and set(thread) = next - thread module Bar = let x = new Foo.Thread(None) x.Next <- Some 1 """, expectedStr = "operator '-'" ) (* TODO why does this portion not work? specifically, last assert fails printfn "changing file..." ReplaceFileInMemory file1 ["#light" "let xx = \"foo\"" // now x is string "printfn \"hi\""] // assert p1 xx is string MoveCursorToEndOfMarker(file1,"let x") TakeCoffeeBreak(this.VS) let tooltip = GetQuickInfoAtCursor file1 AssertContains(tooltip,"string") // assert p2 yy is int MoveCursorToEndOfMarker(file2,"let y") let tooltip = GetQuickInfoAtCursor file2 AssertContains(tooltip,"int") AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) printfn "rebuilding dependent project..." // (re)build p1 (with xx now string) Build(project1) |> ignore TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) // assert p2 yy is now string MoveCursorToEndOfMarker(file2,"let y") let tooltip = GetQuickInfoAtCursor file2 AssertContains(tooltip,"string") *) [] member public this.``Warning.ConsistentWithLanguageService``() = let fileContent = """ open System atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic""" let (_, project, file) = this.CreateSingleFileProject(fileContent, fileKind = SourceFileKind.FSX) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let warnList = GetWarnings(project) Assert.AreEqual(20,warnList.Length) [] member public this.``Warning.ConsistentWithLanguageService.Comment``() = let fileContent = """ open System //atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic //atomic atomic atomic atomic atomic atomic atomic atomic atomic atomic""" let (_, project, file) = this.CreateSingleFileProject(fileContent, fileKind = SourceFileKind.FSX) TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let warnList = GetWarnings(project) Assert.AreEqual(0,warnList.Length) [] [] member public this.``Errorlist.WorkwithoutNowarning``() = let fileContent = """ type Fruit (shelfLife : int) as x = let mutable m_age = (fun () -> x) #nowarn "47" """ let (_, project, file) = this.CreateSingleFileProject(fileContent) Assert.IsTrue(Build(project).BuildSucceeded) TakeCoffeeBreak(this.VS) let warnList = GetErrors(project) Assert.AreEqual(1,warnList.Length) //Allow the ErrorListTests run under different context namespace UnitTests.Tests.LanguageService.ErrorList open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit ErrorListTests new() = { inherit ErrorListTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit ErrorListTests new() = { inherit ErrorListTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.Script.fs0000775000175000017500000023464212260314606024164 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type ScriptTests() as this = inherit LanguageServiceBaseTests() let notAA l = None,l let createSingleFileFsx (code : string) = let (_, p, f) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) (p, f) let createSingleFileFsxFromLines (code : list) = let (_, p, f) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) (p, f) (* Timings ----------------------------------------------------------------------------- *) let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let ShowErrors(project:OpenProject) = for error in (GetErrors(project)) do printf "%s\n" (error.ToString()) let AssertListContainsInOrder(s:string list,cs:string list) = let s : string array = Array.ofList s let s : string = String.Join("\n",s) AssertContainsInOrder(s,cs) /// Assert that there is no squiggle. let AssertNoSquiggle(squiggleOption) = match squiggleOption with | None -> () | Some(severity,message) -> Assert.Fail(sprintf "Expected no squiggle but got '%A' with message: %s" severity message) let VerifyErrorListContainedExpetedStr(expectedStr:string,project : OpenProject) = let errorList = GetErrors(project) let GetErrorMessages(errorList : Error list) = [ for i = 0 to errorList.Length - 1 do yield errorList.[i].Message] Assert.IsTrue(errorList |> GetErrorMessages |> Seq.exists (fun errorMessage -> errorMessage.Contains(expectedStr))) let AssertNoErrorsOrWarnings(project:OpenProject) = let count = List.length (GetErrors(project)) if count<>0 then printf "Saw %d errors and expected none.\n" count printf "Errors are: \n" for e in GetErrors project do printf " path = <<<%s>>>\n" e.Path printf " message = <<<%s> \n" e.Message AssertEqual(0,count) let AssertExactlyOneErrorSeenContaining(project:OpenProject,text) = let nMatching = (GetErrors(project)) |> List.filter (fun e ->e.ToString().Contains(text)) |> List.length match nMatching with | 0 -> failwith (sprintf "No errors containing \"%s\"" text) | 1 -> () | _ -> failwith (sprintf "Multiple errors containing \"%s\"" text) /// Assert that a given squiggle is an Error (or warning) containing the given text let AssertSquiggleIsErrorContaining,AssertSquiggleIsWarningContaining, AssertSquiggleIsErrorNotContaining,AssertSquiggleIsWarningNotContaining = let AssertSquiggle expectedSeverity nameOfExpected nameOfNotExpected assertf (squiggleOption,containing) = match squiggleOption with | None -> Assert.Fail("Expected a squiggle but none was seen.") | Some(severity,message) -> Assert.IsTrue((severity=expectedSeverity), sprintf "Expected %s but saw %s: %s" nameOfExpected nameOfNotExpected message) assertf(message,containing) AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error "Error" "Warning" AssertContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning "Warning" "Error" AssertContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error "Error" "Warning" AssertNotContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning "Warning" "Error" AssertNotContains //Verify the error list in fsx file containd the expected string member private this.VerifyFSXErrorListContainedExpectedString(fileContents : string, expectedStr : string) = let (_, project, file) = this.CreateSingleFileProject(fileContents, fileKind = SourceFileKind.FSX) VerifyErrorListContainedExpetedStr(expectedStr,project) //Verify no error list in fsx file member private this.VerifyFSXNoErrorList(fileContents : string) = let (_, project, file) = this.CreateSingleFileProject(fileContents, fileKind = SourceFileKind.FSX) AssertNoErrorsOrWarnings(project) //Verify QuickInfo Containd In Fsx file member public this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile (code : string) marker expected = let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file, marker) let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip, expected) //Verify QuickInfo Containd In Fsx file member public this.AssertQuickInfoContainsAtStartOfMarkerInFsxFile (code : string) marker expected = let (_, _, file) = this.CreateSingleFileProject((code : string), fileKind = SourceFileKind.FSX) MoveCursorToStartOfMarker(file, marker) let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip, expected) //Verify QuickInfo Not Containd In Fsx file member public this.AssertQuickInfoNotContainsAtEndOfMarkerInFsxFile code marker notexpected = let (_, _, file) = this.CreateSingleFileProject((code : string), fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file, marker) let tooltip = GetQuickInfoAtCursor file AssertNotContains(tooltip, notexpected) /// There was a problem with Salsa that caused squiggles not to be shown for .fsx files. [] member public this.``Fsx.Squiggles.ShowInFsxFiles``() = let fileContent = """open Thing1.Thing2""" this.VerifyFSXErrorListContainedExpectedString(fileContent,"Thing1") /// Regression test for FSharp1.0:4861 - #r to non-existent file causes the first line to be squiggled /// There was a problem with Salsa that caused squiggles not to be shown for .fsx files. [] member public this.``Fsx.Hash.RProperSquiggleForNonExistentFile``() = let fileContent = """#r "NonExistent" """ this.VerifyFSXErrorListContainedExpectedString(fileContent,"was not found or is invalid") /// Nonexistent hash. There was a problem with Salsa that caused squiggles not to be shown for .fsx files. [] member public this.``Fsx.Hash.RDoesNotExist.Bug3325``() = let fileContent = """#r "ThisDLLDoesNotExist" """ this.VerifyFSXErrorListContainedExpectedString(fileContent,"'ThisDLLDoesNotExist' was not found or is invalid") // There was a spurious error message on the first line. [] [] member public this.``Fsx.ExactlyOneError.Bug4861``() = let code = ["#light" // First line is important in this repro "#r \"Nonexistent\"" ] let (project, _) = createSingleFileFsxFromLines code AssertExactlyOneErrorSeenContaining(project, "Nonexistent") // ...and not an error on the first line. [] member public this.``Fsx.InvalidHashLoad.ShouldBeASquiggle.Bug3012``() = let fileContent = """ #light #load "Barf.fs" """ this.VerifyFSXErrorListContainedExpectedString(fileContent,"Barf.fs") // Transitive to existing property. [] [] member public this.``Fsx.ScriptClosure.TransitiveLoad1``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public Property = 0" ]) let file1 = OpenFile(project,"File1.fs") let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"File1.fs\"" ]) let script2 = OpenFile(project,"Script2.fsx") let script2 = AddFileFromText(project,"Script1.fsx", ["#load \"Script1.fsx\"" "Namespace.Foo.Property" ]) let script2 = OpenFile(project,"Script2.fsx") TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) // Transitive to nonexisting property. [] [] member public this.``Fsx.ScriptClosure.TransitiveLoad2``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public Property = 0" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"File1.fs\"" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"Script2.fsx\"" "Namespace.Foo.NonExistingProperty" ]) let script1 = OpenFile(project,"Script1.fsx") TakeCoffeeBreak(this.VS) AssertExactlyOneErrorSeenContaining(project, "NonExistingProperty") /// FEATURE: Typing a #r into a file will cause it to be recognized by intellisense. [] [] member public this.``Fsx.HashR.AddedIn``() = let code = ["#light" "//#r \"System.Transactions.dll\"" // Pick anything that isn't in the standard set of assemblies. "open System.Transactions" ] let (project, file) = createSingleFileFsxFromLines code VerifyErrorListContainedExpetedStr("Transactions",project) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) ReplaceFileInMemory file ["#light" "#r \"System.Transactions.dll\"" // <-- Uncomment this line "open System.Transactions" ] AssertNoErrorsOrWarnings(project) gpatcc.AssertExactly(notAA[file],notAA[file], true (* expectNuke, because dependent DLL set changed *)) // FEATURE: Adding a #load to a file will cause types from that file to be visible in intellisense [] member public this.``Fsx.HashLoad.Added``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromText(project,"File1.fs", ["#light" "namespace MyNamespace" " module MyModule =" " let x = 1" ]) let fsx = AddFileFromText(project,"File2.fsx", ["#light" "//#load \"File1.fs\"" "open MyNamespace.MyModule" "printfn \"%d\" x" ]) let fsx = OpenFile(project,"File2.fsx") VerifyErrorListContainedExpetedStr("MyNamespace",project) ReplaceFileInMemory fsx ["#light" "#load \"File1.fs\"" "open MyNamespace.MyModule" "printfn \"%d\" x" ] TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) // FEATURE: Removing a #load to a file will cause types from that file to no longer be visible in intellisense [] member public this.``Fsx.HashLoad.Removed``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromText(project,"File1.fs", ["#light" "namespace MyNamespace" " module MyModule =" " let x = 1" ]) let fsx = AddFileFromText(project,"File2.fsx", ["#light" "#load \"File1.fs\"" "open MyNamespace.MyModule" "printfn \"%d\" x" ]) let fsx = OpenFile(project,"File2.fsx") AssertNoErrorsOrWarnings(project) ReplaceFileInMemory fsx ["#light" "//#load \"File1.fs\"" "open MyNamespace.MyModule" "printfn \"%d\" x" ] TakeCoffeeBreak(this.VS) VerifyErrorListContainedExpetedStr("MyNamespace",project) /// FEATURE: Removing a #r into a file will cause it to no longer be seen by intellisense. [] [] member public this.``Fsx.HashR.Removed``() = let code = ["#light" "#r \"System.Transactions.dll\"" // Pick anything that isn't in the standard set of assemblies. "open System.Transactions" ] let (project, file) = createSingleFileFsxFromLines code TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) ReplaceFileInMemory file ["#light" "//#r \"System.Transactions.dll\"" // <-- Comment this line "open System.Transactions" ] SaveFileToDisk(file) TakeCoffeeBreak(this.VS) VerifyErrorListContainedExpetedStr("Transactions",project) gpatcc.AssertExactly(notAA[file], notAA[file], true (* expectNuke, because dependent DLL set changed *)) // Corecursive load to existing property. [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad3``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public Property = 0" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "#load \"File1.fs\"" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"Script2.fsx\"" "#load \"File1.fs\"" "Namespace.Foo.Property" ]) let script1 = OpenFile(project,"Script1.fsx") TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) // #load of .fsi is respected (for non-hidden property) [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad9``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" "#load \"File1.fs\"" "Namespace.Foo.Property" ]) let script1 = OpenFile(project,"Script1.fsx") AssertNoErrorsOrWarnings(project) // #load of .fsi is respected at second #load level (for non-hidden property) [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad10``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" "#load \"File1.fs\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "Namespace.Foo.Property" ]) let script2 = OpenFile(project,"Script2.fsx") AssertNoErrorsOrWarnings(project) // #load of .fsi is respected when dispersed between two #load levels (for non-hidden property) [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad11``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "#load \"File1.fs\"" "Namespace.Foo.Property" ]) let script2 = OpenFile(project,"Script2.fsx") AssertNoErrorsOrWarnings(project) // #load of .fsi is respected when dispersed between two #load levels (the other way) (for non-hidden property) [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad12``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fs\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"File1.fsi\"" "#load \"Script1.fsx\"" "Namespace.Foo.Property" ]) let script2 = OpenFile(project,"Script2.fsx") AssertNoErrorsOrWarnings(project) // #nowarn seen in closed .fsx is global to the closure [] [] member public this.``Fsx.NoError.ScriptClosure.TransitiveLoad16``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let thisProject = AddFileFromText(project,"ThisProject.fsx", ["#nowarn \"44\"" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"ThisProject.fsx\"" // Should bring in #nowarn "44" so we don't see this warning: "[]" "let fn x = 0" "let y = fn 1" ]) let script1 = OpenFile(project,"Script1.fsx") MoveCursorToEndOfMarker(script1,"let y = f") TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) /// FEATURE: #r in .fsx to a .dll name works. [] member public this.``Fsx.NoError.HashR.DllWithNoPath``() = let fileContent = """ #light #r "System.Transactions.dll" open System.Transactions""" this.VerifyFSXNoErrorList(fileContent) [] // 'System' is in the default set. Make sure we can still resolve it. member public this.``Fsx.NoError.HashR.BugDefaultReferenceFileIsAlsoResolved``() = let fileContent = """ #light #r "System" """ this.VerifyFSXNoErrorList(fileContent) [] [] member public this.``Fsx.NoError.HashR.DoubleReference``() = let fileContent = """ #light #r "System" #r "System" """ this.VerifyFSXNoErrorList(fileContent) [] [] // 'mscorcfg' is loaded from the GAC _and_ it is available on XP and above. member public this.``Fsx.NoError.HashR.ResolveFromGAC``() = let fileContent = """ #light #r "mscorcfg" """ this.VerifyFSXNoErrorList(fileContent) [] [] // 'Microsoft.TeamFoundation.Diff' is located via AssemblyFoldersEx member public this.``Fsx.NoError.HashR.ResolveFromAssemblyFoldersEx``() = let fileContent = """ #light #r "Microsoft.TeamFoundation.Diff" """ this.VerifyFSXNoErrorList(fileContent) [] [] // Can be any assembly that is in AssemblyFolders but not AssemblyFoldersEx member public this.``Fsx.NoError.HashR.ResolveFromAssemblyFolders``() = let fileContent = """ #light #r "Microsoft.SqlServer.SString" """ this.VerifyFSXNoErrorList(fileContent) [] [] member public this.``Fsx.NoError.HashR.ResolveFromFullyQualifiedPath``() = let fullyqualifiepathtoddll = System.IO.Path.Combine( System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), "System.configuration.dll" ) let code = ["#light";"#r @\"" + fullyqualifiepathtoddll + "\""] let (project, _) = createSingleFileFsxFromLines code AssertNoErrorsOrWarnings(project) /// FEATURE: #load in an .fsx file will include that file in the 'build' of the .fsx. [] member public this.``Fsx.NoError.HashLoad.Simple``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromText(project,"File1.fs", ["#light" "namespace MyNamespace" " module MyModule =" " let x = 1" ]) let fsx = AddFileFromText(project,"File2.fsx", ["#light" "#load \"File1.fs\"" "open MyNamespace.MyModule" "printfn \"%d\" x" ]) let fsx = OpenFile(project,"File2.fsx") AssertNoErrorsOrWarnings(project) // In this bug the #loaded file contains a level-4 warning (copy to avoid mutation). This warning was reported at the #load in file2.fsx but shouldn't have been.s [] [] member public this.``Fsx.NoWarn.OnLoadedFile.Bug4837``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromText(project,"File1.fs", ["module File1Module" "let x = System.DateTime.Now - System.DateTime.Now" "x.Add(x) |> ignore" ]) let fsx = AddFileFromText(project,"File2.fsx", [ "#load \"File1.fs\"" ]) let fsx = OpenFile(project,"File2.fsx") AssertNoErrorsOrWarnings(project) /// FEATURE: .fsx files have automatic imports of certain system assemblies. //There is a test bug here. The actual scenario works. Need to revisit. [] [] member public this.``Fsx.NoError.AutomaticImportsForFsxFiles``() = let fileContent = """ #light open System open System.Xml open System.Drawing open System.Runtime.Remoting open System.Runtime.Serialization.Formatters.Soap open System.Data open System.Drawing open System.Web open System.Web.Services open System.Windows.Forms""" this.VerifyFSXNoErrorList(fileContent) // Corecursive load to nonexisting property. [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad4``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public Property = 0" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "#load \"File1.fs\"" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"Script2.fsx\"" "#load \"File1.fs\"" "Namespace.Foo.NonExistingProperty" ]) let script1 = OpenFile(project,"Script1.fsx") AssertExactlyOneErrorSeenContaining(project, "NonExistingProperty") // #load of .fsi is respected [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad5``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" "#load \"File1.fs\"" "Namespace.Foo.HiddenProperty" ]) let script1 = OpenFile(project,"Script1.fsx") AssertExactlyOneErrorSeenContaining(project, "HiddenProperty") // #load of .fsi is respected at second #load level [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad6``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" "#load \"File1.fs\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "Namespace.Foo.HiddenProperty" ]) let script2 = OpenFile(project,"Script2.fsx") AssertExactlyOneErrorSeenContaining(project, "HiddenProperty") // #load of .fsi is respected when dispersed between two #load levels [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad7``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fsi\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "#load \"File1.fs\"" "Namespace.Foo.HiddenProperty" ]) let script2 = OpenFile(project,"Script2.fsx") AssertExactlyOneErrorSeenContaining(project, "HiddenProperty") // #load of .fsi is respected when dispersed between two #load levels (the other way) [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad8``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1fsi = AddFileFromText(project,"File1.fsi", ["namespace Namespace" "type Foo =" " class" " static member Property : int" // Not exposing 'HiddenProperty' " end" ]) let file1 = AddFileFromText(project,"File1.fs", ["namespace Namespace" "type Foo = " " static member public HiddenProperty = 0" " static member public Property = 0" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fs\"" ]) let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"File1.fsi\"" "#load \"Script1.fsx\"" "Namespace.Foo.HiddenProperty" ]) let script2 = OpenFile(project,"Script2.fsx") AssertExactlyOneErrorSeenContaining(project, "HiddenProperty") // Bug seen during development: A #load in an .fs would be followed. [] [] member public this.``Fsx.ExactlyOneError.ScriptClosure.TransitiveLoad15``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file2 = AddFileFromText(project,"File2.fs", ["namespace Namespace" "type Type() =" " static member Property = 0" ]) let file1 = AddFileFromText(project,"File1.fs", ["#load \"File2.fs\"" // This is not allowed but it was working anyway. "namespace File2Namespace" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"File1.fs\"" "Namespace.Type.Property" ]) let script1 = OpenFile(project,"Script1.fsx") TakeCoffeeBreak(this.VS) AssertExactlyOneErrorSeenContaining(project, "Namespace") [] member public this.``Fsx.Bug4311HoverOverReferenceInFirstLine``() = let fileContent = """#r "PresentationFramework.dll" #r "PresentationCore.dll" """ let marker = "#r \"PresentationFrame" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker "PresentationFramework.dll" this.AssertQuickInfoNotContainsAtEndOfMarkerInFsxFile fileContent marker "multiple results" [] member public this.``Fsx.QuickInfo.Bug4979``() = let code = ["System.ConsoleModifiers.Shift |> ignore " "(3).ToString().Length |> ignore "] let (project, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file, "System.ConsoleModifiers.Sh") let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip, @"[Signature:F:System.ConsoleModifiers.Shift]") // A message from the mock IdealDocumentationProvider AssertContains(tooltip, @"[Filename:") AssertContains(tooltip, @"mscorlib.dll]") // The assembly we expect the documentation to get taken from MoveCursorToEndOfMarker(file, "(3).ToString().Len") let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip, @"[Signature:P:System.String.Length]") // A message from the mock IdealDocumentationProvider AssertContains(tooltip, @"[Filename:") AssertContains(tooltip, @"mscorlib.dll]") // The assembly we expect the documentation to get taken from // Especially under 4.0 we need #r of .NET framework assemblies to resolve from like, // // %program files%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 // // because this is where the the .XML files are. // // When executing scripts, however, we need to _not_ resolve from these directories because // they may be metadata-only assemblies. // // "Reference Assemblies" was only introduced in 3.5sp1, so not all 2.0 F# boxes will have it, so only run on 4.0 [] member public this.``Fsx.Bug5073``() = let fileContent = """#r "System" """ let marker = "#r \"System" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker @"Reference Assemblies\Microsoft" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker ".NET Framework" /// FEATURE: Hovering over a resolved #r file will show a data tip with the fully qualified path to that file. [] member public this.``Fsx.HashR_QuickInfo.ShowFilenameOfResolvedAssembly``() = this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile """#r "System.Transactions" """ // Pick anything that isn't in the standard set of assemblies. "#r \"System.Tra" "System.Transactions.dll" [] member public this.``Fsx.HashR_QuickInfo.BugDefaultReferenceFileIsAlsoResolved``() = this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile """#r "System" """ // 'System' is in the default set. Make sure we can still resolve it. "#r \"Syst" "System.dll" [] [] member public this.``Fsx.HashR_QuickInfo.DoubleReference``() = let fileContent = """#r "System" // Mark1 #r "System" // Mark2 """ // The same reference repeated twice. this.AssertQuickInfoContainsAtStartOfMarkerInFsxFile fileContent "tem\" // Mark1" "System.dll" this.AssertQuickInfoContainsAtStartOfMarkerInFsxFile fileContent "tem\" // Mark2" "System.dll" [] [] member public this.``Fsx.HashR_QuickInfo.ResolveFromGAC``() = this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile """#r "mscorcfg" """ // 'mscorcfg' is loaded from the GAC _and_ it is available on XP and above. "#r \"mscor" "Global Assembly Cache" [] [] member public this.``Fsx.HashR_QuickInfo.ResolveFromAssemblyFoldersEx``() = let fileContent = """#r "Microsoft.TeamFoundation.Diff" """ // 'Microsoft.TeamFoundation.Diff' is located via AssemblyFoldersEx let marker = "#r \"Microsoft.Tea" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker "Found by AssemblyFoldersEx registry key" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker "Microsoft.TeamFoundation.Diff" [] [] member public this.``Fsx.HashR_QuickInfo.ResolveFromAssemblyFolders``() = let fileContent = """#r "Microsoft.SqlServer.SString" """ // Can be any assembly that is in AssemblyFolders but not AssemblyFoldersEx let marker = "#r \"Microsoft.SqlSe" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker "Microsoft.SqlServer.SString.dll" this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker "Found by AssemblyFolders registry key" [] [] member public this.``Fsx.HashR_QuickInfo.ResolveFromFullyQualifiedPath``() = let fullyqualifiepathtoddll = System.IO.Path.Combine( System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), "System.configuration.dll" ) // Can be any fully qualified path to an assembly let expectedtooltip = System.Reflection.Assembly.ReflectionOnlyLoadFrom(fullyqualifiepathtoddll).FullName let fileContent = "#r @\"" + fullyqualifiepathtoddll + "\"" let marker = "#r @\"" + fullyqualifiepathtoddll.Substring(0,fullyqualifiepathtoddll.Length/2) // somewhere in the middle of the string this.AssertQuickInfoContainsAtEndOfMarkerInFsxFile fileContent marker expectedtooltip this.AssertQuickInfoNotContainsAtEndOfMarkerInFsxFile fileContent marker ".dll" [] member public this.``Fsx.InvalidHashReference.ShouldBeASquiggle.Bug3012``() = let code = ["#light" "#r \"Barf.dll\""] let (project, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"#r \"Ba") let squiggle = GetSquiggleAtCursor(file) TakeCoffeeBreak(this.VS) Assert.IsTrue(snd squiggle.Value |> fun str -> str.Contains("Barf.dll")) // Bug seen during development: The unresolved reference error would x-ray through to the root. [] [] member public this.``Fsx.ScriptClosure.TransitiveLoad14``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let script2 = AddFileFromText(project,"Script2.fsx", ["#load \"Script1.fsx\"" "#r \"NonExisting\"" ]) let script1 = AddFileFromText(project,"Script1.fsx", ["#load \"Script2.fsx\"" "#r \"System\"" ]) let script1 = OpenFile(project,"Script1.fsx") TakeCoffeeBreak(this.VS) MoveCursorToEndOfMarker(script1,"#r \"Sys") AssertEqual(None,GetSquiggleAtCursor(script1)) member private this.TestFsxHashDirectivesAreErrors(mark : string, expectedStr : string) = let code = ["#light" "#r \"JoeBob\"" "#I \".\"" "#load \"Dooby\"" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,mark) let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,sev) AssertContains(msg,expectedStr) | _ -> Assert.Fail() /// FEATURE: #r, #I, #load are all errors when running under the language service [] member public this.``Fsx.HashDirectivesAreErrors.InNonScriptFiles.Case1``() = this.TestFsxHashDirectivesAreErrors("#r \"Joe","#r") [] member public this.``Fsx.HashDirectivesAreErrors.InNonScriptFiles.Case2``() = this.TestFsxHashDirectivesAreErrors("#I \"","#I") [] member public this.``Fsx.HashDirectivesAreErrors.InNonScriptFiles.Case3``() = this.TestFsxHashDirectivesAreErrors("#load \"Doo","may only be used in F# script files") /// FEATURE: #reference against a non-assembly .EXE gives a reasonable error message //[] member public this.``Fsx.HashReferenceAgainstNonAssemblyExe``() = let windows = System.Environment.GetEnvironmentVariable("windir") let code = ["#light" sprintf "#reference @\"%s\"" (Path.Combine(windows,"notepad.exe")) " let x = 1"] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"#refe") let ans = GetSquiggleAtCursor(file) AssertSquiggleIsErrorContaining(ans, "was not found or is invalid") (* ---------------------------------------------------------------------------------- *) // FEATURE: A #loaded file is squiggled with an error if there are errors in that file. [] [] member public this.``Fsx.HashLoadedFileWithErrors.Bug3149``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["#light" "module File1" "DogChow" // <-- error ]) let file2 = AddFileFromText(project,"File2.fsx", ["#light" "#load @\"File1.fs\"" ]) let file2 = OpenFile(project,"File2.fsx") MoveCursorToEndOfMarker(file2,"#load @\"Fi") TakeCoffeeBreak(this.VS) let ans = GetSquiggleAtCursor(file2) AssertSquiggleIsErrorContaining(ans, "DogChow") // FEATURE: A #loaded file is squiggled with a warning if there are warning that file. [] [] member public this.``Fsx.HashLoadedFileWithWarnings.Bug3149``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["module File1Module" "type WarningHere<'a> = static member X() = 0" "let y = WarningHere.X" ]) let file2 = AddFileFromText(project,"File2.fsx", ["#light" "#load @\"File1.fs\"" ]) let file2 = OpenFile(project,"File2.fsx") MoveCursorToEndOfMarker(file2,"#load @\"Fi") let ans = GetSquiggleAtCursor(file2) AssertSquiggleIsWarningContaining(ans, "WarningHere") // Bug: #load should report the first error message from a file [] [] member public this.``Fsx.HashLoadedFileWithErrors.Bug3652``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", [ "#light" "module File1" "let a = 1 + \"\"" "let c = new obj()" "let b = c.foo()" ]) let file2 = AddFileFromText(project,"File2.fsx", ["#light" "#load @\"File1.fs\"" ]) let file2 = OpenFile(project,"File2.fsx") MoveCursorToEndOfMarker(file2,"#load @\"Fi") let ans = GetSquiggleAtCursor(file2) AssertSquiggleIsErrorContaining(ans, "'string'") AssertSquiggleIsErrorContaining(ans, "'int'") AssertSquiggleIsErrorNotContaining(ans, "foo") // In this bug the .fsx project directory was wrong so it couldn't reference a relative file. [] member public this.``Fsx.ScriptCanReferenceBinDirectoryOutput.Bug3151``() = use _guard = this.UsingNewVS() let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["#light"]) let projectOutput = time1 Build project "Time to build project" printfn "Output of building project was %s" projectOutput.ExecutableOutput printfn "Project directory is %s" (ProjectDirectory project) let file2 = AddFileFromText(project,"File2.fsx", ["#light" "#reference @\"bin\\Debug\\testproject.exe\"" ]) let file2 = OpenFile(project,"File2.fsx") MoveCursorToEndOfMarker(file2,"#reference @\"bin\\De") let ans = GetSquiggleAtCursor(file2) AssertNoSquiggle(ans) /// In this bug, multiple references to mscorlib .dll were causing problem in load closure [] [] member public this.``Fsx.BugAllowExplicitReferenceToMsCorlib``() = let code = ["#r \"mscorlib\"" "fsi." ] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"fsi.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"CommandLineArgs") /// FEATURE: There is a global fsi module that should be in scope for script files. [] [] member public this.``Fsx.Bug2530FsiObject``() = let code = ["#light" "fsi." ] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"fsi.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"CommandLineArgs") // Ensure that the script closure algorithm gets the right order of hash directives [] [] member public this.``Fsx.ScriptClosure.SurfaceOrderOfHashes``() = let code = ["#r \"System.Runtime.Remoting\"" "#r \"System.Transactions\"" "#load \"Load1.fs\"" "#load \"Load2.fsx\"" ] let (project, file) = createSingleFileFsxFromLines code let projectFolder = ProjectDirectory(project) let fas = GetCheckOptionsOfScript(file) AssertArrayContainsPartialMatchOf(fas.ProjectOptions, "--noframework") AssertArrayContainsPartialMatchOf(fas.ProjectOptions, "System.Runtime.Remoting.dll") AssertArrayContainsPartialMatchOf(fas.ProjectOptions, "System.Transactions.dll") AssertArrayContainsPartialMatchOf(fas.ProjectOptions, "FSharp.Compiler.Interactive.Settings.dll") Assert.AreEqual(Path.Combine(projectFolder,"File1.fsx"), fas.ProjectFileNames.[0]) Assert.AreEqual(1, fas.ProjectFileNames.Length) #if OUT_OF_VS_PRODUCT_BUILD #else /// FEATURE: #reference against a strong name should work. [] member public this.``Fsx.HashReferenceAgainstStrongName``() = let code = ["#light" #if FX_ATLEAST_40 sprintf "#reference \"System.Core, Version=%s, Culture=neutral, PublicKeyToken=b77a5c561934e089\"" Microsoft.BuildSettings.Version.OfAssembly #else "#reference \"System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"" #endif "open System."] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"open System.") let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Linq") #endif /// Try out some bogus file names in #r, #I and #load. [] member public this.``Fsx.InvalidMetaCommandFilenames``() = let code = [ "#r @\"\"" "#load @\"\"" "#I @\"\"" "#r @\"*\"" "#load @\"*\"" "#I @\"*\"" "#r @\"?\"" "#load @\"?\"" "#I @\"?\"" """#r @"C:\path\does\not\exist.dll" """ ] let (_, file) = createSingleFileFsxFromLines code TakeCoffeeBreak(this.VS) // This used to assert /// FEATURE: .fsx files have INTERACTIVE #defined [] member public this.``Fsx.INTERACTIVEIsDefinedInFsxFiles``() = let code = [ "#if INTERACTIVE" "let xyz = 1" "#endif" ] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"let xy") AssertEqual(TokenType.Identifier ,GetTokenTypeAtCursor(file)) // Ensure that basic compile of an .fsx works [] [] [] member public this.``Fsx.CompileFsx_1``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["printfn \"Hello world\""]) let build = time1 Build project "Time to build project" Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") ShowErrors(project) // Compile a script which #loads a source file. The build can't succeed without the loaded file. [] [] [] member public this.``Fsx.CompileFsx_2``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromTextEx(project,"File.fs","File.fs",BuildAction.Compile, ["namespace Namespace" "module Module =" " let Value = 1" ]) let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["#load \"File.fs\"" "printfn \"%d\" Namespace.Module.Value"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // Compile a script which #loads a source file. The build can't succeed without [] [] [] member public this.``Fsx.CompileFsx_3``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs = AddFileFromTextEx(project,"File.fs","File.fs",BuildAction.None, ["namespace Namespace" "module Module =" " let Value = 1" ]) let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["#load \"File.fs\"" "printfn \"%d\" Namespace.Module.Value"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // Must be explicitly referenced by compile. [] [] [] member public this.``Fsx.CompileFsx_Bug5416_1``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["let x = fsi.CommandLineArgs"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () Assert.IsTrue(not(build.BuildSucceeded), "Expected build to fail") // Must be explicitly referenced by compile. [] [] [] member public this.``Fsx.CompileFsx_Bug5416_2``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") #if FX_ATLEAST_45 PlaceIntoProjectFileBeforeImport (project, @" True True ") #else PlaceIntoProjectFileBeforeImport (project, @" True True ") #endif let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, ["let x = fsi.CommandLineArgs"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () if not(SupportsOutputWindowPane(this.VS)) then Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // Ensure that #load order is preserved when #loading multiple files. [] [] [] member public this.``Fsx.CompileFsx_5``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs1 = AddFileFromTextEx(project,"File1.fs","File1.fs",BuildAction.None, ["namespace Namespace" "module Module1 =" " let Value = 1" ]) let fs2 = AddFileFromTextEx(project,"File2.fs","File2.fs",BuildAction.None, ["namespace Namespace" "module Module2 =" " let Value = Module1.Value" ]) let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, [ "#load \"File1.fs\"" "#load \"File2.fs\"" "printfn \"%d\" Namespace.Module2.Value"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // If an fs file is explicitly passed in to the compiler and also #loaded then // the command-line order is respected rather than the #load order [] [] [] member public this.``Fsx.CompileFsx_6``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs1 = AddFileFromTextEx(project,"File1.fs","File1.fs",BuildAction.Compile, ["namespace Namespace" "module Module1 =" " let Value = 1" ]) let fs2 = AddFileFromTextEx(project,"File2.fs","File2.fs",BuildAction.Compile, ["namespace Namespace" "module Module2 =" " let Value = Module1.Value" ]) let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, [ "#load \"File2.fs\"" // Wrong order "#load \"File1.fs\"" "printfn \"%d\" Namespace.Module2.Value"]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line () Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // If a #loaded file does not exist, there should be an error [] [] [] member public this.``Fsx.CompileFsx_7``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, [ "#load \"NonexistentFile.fs\"" ]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line AssertListContainsInOrder(lines, ["error FS0079: Could not load file"; "NonexistentFile.fs"; "because it does not exist or is inaccessible"]) Assert.IsTrue(not(build.BuildSucceeded), "Expected build to fail") // #r references should be respected. [] [] [] member public this.``Fsx.CompileFsx_8``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile, [ "#r \"System.Messaging\"" "let a = new System.Messaging.AccessControlEntry()" ]) let build = time1 Build project "Time to build project" if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) for line in lines do printfn "%s" line Assert.IsTrue(build.BuildSucceeded, "Expected build to succeed") // Missing script file should be a reasonable failure, not a callstack. [] [] [] member public this.``Fsx.CompileFsx_Bug5414``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fsx = AddFileFromTextEx(project,"Script.fsx","Script.fsx",BuildAction.Compile,[]) DeleteFileFromDisk(this.VS, fsx) let build = Build project if SupportsOutputWindowPane(this.VS) then let lines = GetOutputWindowPaneLines(this.VS) AssertListContainsInOrder(lines, ["Could not find file " "Script.fsx"]) for line in lines do printfn "%s" line AssertNotContains(line,"error MSB") // Microsoft.FSharp.targets(135,9): error MSB6006: "fsc.exe" exited with code -532462766. Assert.IsTrue(not(build.BuildSucceeded), "Expected build to fail") /// There was a problem in which synthetic tokens like #load were causing asserts [] [] member public this.``Fsx.SyntheticTokens``() = Helper.ExhaustivelyScrutinize( this.TestRunner, ["#light" "#r \"\"" "#reference \"\"" "#load \"\"" "#line 52" "#nowarn 72"] ) /// There was a problem where an unclosed reference picked up the text of the reference on the next line. [] member public this.``Fsx.ShouldBeAbleToReference30Assemblies.Bug2050``() = let code = ["#light" "#r \"System.Core.dll\"" "open System." ] let (_, file) = createSingleFileFsxFromLines code MoveCursorToEndOfMarker(file,"open System.") let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Linq") /// There was a problem where an unclosed reference picked up the text of the reference on the next line. [] member public this.``Fsx.UnclosedHashReference.Case1``() = Helper.ExhaustivelyScrutinize( this.TestRunner, ["#light" "#reference \"" // Unclosed "#reference \"Hello There\""] ) [] member public this.``Fsx.UnclosedHashReference.Case2``() = Helper.ExhaustivelyScrutinize( this.TestRunner, ["#light" "#r \"" // Unclosed "# \"Hello There\""] ) /// There was a problem where an unclosed reference picked up the text of the reference on the next line. [] member public this.``Fsx.UnclosedHashLoad``() = Helper.ExhaustivelyScrutinize( this.TestRunner, [ "#light" "#load \"" // Unclosed "#load \"Hello There\""] ) //regression test for bug 2530 [] [] member public this.``Fsx.IntellisenseForFSI``() = let code = ["module Script" "fsi(*MarkerFSI*)" ] let (_, script1) = createSingleFileFsxFromLines code TakeCoffeeBreak(this.VS) let marker = "(*MarkerFSI*)" let list = ["FormatProvider";"CommandLineArgs"] let completions = DotCompletionAtStartOfMarker script1 marker AssertCompListContainsAll(completions, list) [] [] member public this.``TypeProvider.UnitsOfMeasure.SmokeTest1``() = let code = ["open Microsoft.FSharp.Data.UnitSystems.SI.UnitNames" "let x : System.Nullable> = N1.T1.MethodWithTypesInvolvingUnitsOfMeasure(1.0)" "let x2 : int = N1.T1().MethodWithErasedCodeUsingConditional()" "let x3 : int = N1.T1().MethodWithErasedCodeUsingTypeAs()" ] let refs = [ System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll") ] let (_, project, file) = this.CreateSingleFileProject(code, references = refs) TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project) member public this.TypeProviderDisposalSmokeTest(clearing) = use _guard = this.UsingNewVS() let providerAssemblyName = System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll") let providerAssembly = System.Reflection.Assembly.LoadFrom providerAssemblyName Assert.IsNotNull(providerAssembly, "provider assembly should not be null") let providerCounters = providerAssembly.GetType("DummyProviderForLanguageServiceTesting.GlobalCounters") Assert.IsNotNull(providerCounters, "provider counters module should not be null") let totalCreationsMeth = providerCounters.GetMethod("GetTotalCreations") Assert.IsNotNull(totalCreationsMeth, "totalCreationsMeth should not be null") let totalDisposalsMeth = providerCounters.GetMethod("GetTotalDisposals") Assert.IsNotNull(totalDisposalsMeth, "totalDisposalsMeth should not be null") let totalCreations() = totalCreationsMeth.Invoke(null, [| |]) :?> int let totalDisposals() = totalDisposalsMeth.Invoke(null, [| |]) :?> int let startCreations = totalCreations() let startDisposals = totalDisposals() let countCreations() = totalCreations() - startCreations let countDisposals() = totalDisposals() - startDisposals Assert.IsTrue(startCreations >= startDisposals, "Check0") for i in 1 .. 50 do let solution = this.CreateSolution() let project = CreateProject(solution,"testproject" + string (i % 20)) this.AddAssemblyReference(project, System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")) let fileName = sprintf "File%d.fs" i let file1 = AddFileFromText(project,fileName, ["let x" + string i + " = N1.T1()" ]) let file = OpenFile(project,fileName) TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings project // ...and not an error on the first line. MoveCursorToEndOfMarker(file, "N1.T1") // do some stuff to get declarations etc. let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip, "T1") ignore (GetF1KeywordAtCursor file) let parmInfo = GetParameterInfoAtCursor file let file1 = OpenFile(project,fileName) // The disposals should be at least one less Assert.IsTrue(countDisposals() < i, "Check1, countDisposals() < i, iteration " + string i) Assert.IsTrue(countCreations() >= countDisposals(), "Check2, countCreations() >= countDisposals(), iteration " + string i) Assert.IsTrue(countCreations() = i, "Check3, countCreations() = i, iteration " + string i) if not clearing then // By default we hold 3 build incrementalBuilderCache entries and 5 typeCheckInfo entries, so if we're not clearing // there should be some roots to project builds hanging around if i >= 3 then Assert.IsTrue(i >= countDisposals() + 3, "Check4a, i >= countDisposals() + 3, iteration " + string i + ", i = " + string i + ", countDisposals() = " + string (countDisposals())) // If we forcefully clear out caches and force a collection, then we can say much stronger things... if clearing then ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients(this.VS) Assert.IsTrue((i = countDisposals()), "Check4b, countCreations() = countDisposals(), iteration " + string i) Assert.IsTrue(countCreations() = 50, "Check5, at end, countCreations() = 50") ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients(this.VS) Assert.IsTrue(countDisposals() = 50, "Check6b, at end, countDisposals() = 50 when clearing") [] [] member public this.``TypeProvider.Disposal.SmokeTest1``() = this.TypeProviderDisposalSmokeTest(true) [] [] member public this.``TypeProvider.Disposal.SmokeTest2``() = this.TypeProviderDisposalSmokeTest(false) //Allow the ScriptTests run under different context namespace UnitTests.Tests.LanguageService.Script open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit ScriptTests new() = { inherit ScriptTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit ScriptTests new() = { inherit ScriptTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.F1Keyword.fs0000775000175000017500000003320412260314606024522 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type F1KeywordTests() = inherit LanguageServiceBaseTests() member private this.TestF1Keywords(expectedKeywords, testLines, ?addtlRefAssy : list) = let lines, poslist = // poslist is in _cursor_ postions. Cursor postions are 1-based. let rec extractPos (col:int) row (s:string) poslist = let next = s.IndexOf("$", col) if next < 0 then s, poslist else let s = s.Remove(next, 1) extractPos next row s ((row,next+1)::poslist) let _, l, p = List.fold (fun (row,lines,poslist) s -> let (s', poslist') = extractPos 0 row s poslist (row+1, (s'::lines),poslist')) (1,[],[]) testLines List.rev l , List.rev p let refs = let standard = ["mscorlib"; "System"; "System.Core"] match addtlRefAssy with | Some r -> standard @ r | _ -> standard let (_,_, file) = this.CreateSingleFileProject(lines, references = refs) Assert.IsTrue(List.length expectedKeywords = List.length poslist, sprintf "number of keywords (%d) does not match positions (%d)" (List.length expectedKeywords) (List.length poslist)) List.iter2 (fun expectedKeyword (row,col) -> MoveCursorTo(file,row,col) let keyword = GetF1KeywordAtCursor file Assert.AreEqual(expectedKeyword, keyword)) expectedKeywords poslist () [] [] member public this.``NoKeyword.Negative`` () = let file = [ "let s = \"System.Con$sole\"" "let n = 999$99" "#if UNDEFINED" " let w = List.re$v []" "#endif" ] let keywords = [ None; None; None ] this.TestF1Keywords(keywords, file) [] member public this.``Preprocessor`` () = let file = [ "#i$f foobar" "#e$ndif" ] let keywords = [ Some "#if_FS"; Some "#endif_FS" ] this.TestF1Keywords(keywords, file) [] member public this.``Regression.DotNetMethod.854364``() = let file = [ "let i : int = 42" "i.ToStri$ng()" "i.ToStri$ng(\"format\")" ] let keywords = [ Some "System.Int32.ToString" Some "System.Int32.ToString" ] this.TestF1Keywords(keywords, file) [] member public this.``Namespaces`` () = let file = [ "open Syst$em.N$et" "open System.I$O" "open Microsoft.FSharp.Core" "" "System.Cons$ole.WriteLine()" ] let keywords = [ Some "System" Some "System.Net" Some "System.IO" Some "System.Console" ] this.TestF1Keywords(keywords, file) [] member public this.``Namespaces.BeforeDot`` () = let file = [ "open System$.Net$" "open System$.IO" "open System$.Collections$.Generic$" "open Microsoft.FSharp.Core" "" "System$.Console$.WriteLine()" ] let keywords = [ Some "System" Some "System.Net" Some "System" Some "System" Some "System.Collections" Some "System.Collections.Generic" Some "System" Some "System.Console" ] this.TestF1Keywords(keywords, file) [] member public this.``Namespaces.AfterDot`` () = let file = [ "open $System.$Net" "open $System.IO" "open $System.$Collections.$Generic" "open Microsoft.FSharp.Core" "" "$System.$Console.$WriteLine()" ] let keywords = [ Some "System" Some "System.Net" Some "System" Some "System" Some "System.Collections" Some "System.Collections.Generic" Some "System" Some "System.Console" Some "System.Console.WriteLine" ] this.TestF1Keywords(keywords, file) [] member public this.``QuotedIdentifiers``() = let file = [ "let `$`escaped func`` x y = x + y" "let ``escaped value`$` = 1" "let x = 1" "``escaped func`` x$ ``escaped value``" "``escaped func``$ x ``escaped value``" "``escaped func`` x $``escaped value``" "let ``z$`` = 1" "``$z`` |> printfn \"%d\"" ] let keywords = [ Some "File1.escaped func" Some "File1.escaped value" Some "File1.x" Some "File1.escaped func" Some "File1.escaped value" Some "File1.z" Some "File1.z" ] this.TestF1Keywords(keywords, file) [] member public this.``Attributes`` () = let file = [ "open System.Runtime.InteropServices" "open System.Runtime.CompilerServices" "[]" "type X = " " []" " val mutable f : int" " []" " member this.Run() = ()" "[]" "type Y = class end" ] let keywords = [ Some "Microsoft.FSharp.Core.StructAttribute.#ctor" Some "Microsoft.FSharp.Core.DefaultValueAttribute.#ctor" Some "System.Runtime.CompilerServices.MethodImplAttribute.#ctor" Some "System.Runtime.InteropServices.StructLayoutAttribute.Size" ] this.TestF1Keywords(keywords, file) [] [] [] //This test case Verify that when F1 is Hit on TypeProvider namespaces it contain the right keyword member public this.``TypeProvider.Namespaces`` () = let file = [ "open N$1" ] let keywords = [ Some "N1" ] this.TestF1Keywords(keywords, file, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case Verify that when F1 is Hit on TypeProvider Type it contain the right keyword member public this.``TypeProvider.type`` () = let file = [ //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) """let foo = typeof>""" ] let keywords = [ Some "N1.T" ] this.TestF1Keywords(keywords, file, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``EndOfLine``() = let file = [ "open System.Net$" "open System.IO$" ] let keywords = [ Some "System.Net" Some "System.IO" ] this.TestF1Keywords(keywords, file) [] member public this.``EndOfLine2``() = let file = [ "module M" "open System.Net$" "open System.IO$" ] let keywords = [ Some "System.Net" Some "System.IO" ] this.TestF1Keywords(keywords, file) [] member public this.``Comments``() = let file = [ "($* co$mment *$)" "/$/ com$ment" ] let keywords = [ Some "comment_FS"; Some "comment_FS"; Some "comment_FS"; Some "comment_FS"; Some "comment_FS"; ] this.TestF1Keywords(keywords, file) [] member public this.``FSharpEntities`` () = let file = [ "let (KeyValu$e(k,v)) = null" "let w : int lis$t = []" "let b = w.IsEm$pty" "let m : map = Map.empty" "m.A$dd(1,1)" "let z = Li$st.r$ev w" "let o = No$ne" "let o1 = So$me 1" "let c : System.IO.Str$eam = null" "c.Async$Read(10)" "let r = r$ef 0" "r.conten$ts" ] let keywords = [ Some "Microsoft.FSharp.Core.Operators.KeyValuePattern``2" Some "Microsoft.FSharp.Collections.FSharpList`1" Some "Microsoft.FSharp.Collections.FSharpList`1.IsEmpty" Some "Microsoft.FSharp.Collections.FSharpMap`2.Add" Some "Microsoft.FSharp.Collections.ListModule" Some "Microsoft.FSharp.Collections.ListModule.Reverse``1" // per F1 keyword spec - one tick for classes, two ticks for members Some "Microsoft.FSharp.Core.FSharpOption`1.None" Some "Microsoft.FSharp.Core.FSharpOption`1.Some" Some "System.IO.Stream" Some "Microsoft.FSharp.Control.CommonExtensions.AsyncReadBytes" Some "Microsoft.FSharp.Core.Operators.Ref``1" Some "Microsoft.FSharp.Core.FSharpRef`1.contents" ] this.TestF1Keywords(keywords, file) [] member public this.``Keywords`` () = let file = [ "l$et r = ref 0" "r :$= 1" "let mut$able foo = 1" "foo <$- 2" "let$ z = 1" ] let keywords = [ Some "let_FS" Some ":=_FS" Some "mutable_FS" Some "<-_FS" Some "let_FS" ] this.TestF1Keywords(keywords, file) [] member public this.``Regression.NewInstance.854367`` () = let file = [ "let q1 = new System.Runtime.Remoting.Type$Entry()" ] let keywords = [ Some "System.Runtime.Remoting.TypeEntry" ] this.TestF1Keywords(keywords, file) [] member public this.``Classes`` () = let file = [ "let q : System.Runtime.Remoting.TypeE$ntry = null" "let q1 = new System.Runtime.Remoting.Type$Entry()" "let w : System.Net.Web$Client = new System.Net.Web$Client()" "let x : System.Collections.Generic.L$ist = null" "let z : Resi$zeArray = null" ] let keywords = [ Some "System.Runtime.Remoting.TypeEntry" Some "System.Runtime.Remoting.TypeEntry" Some "System.Net.WebClient" Some "System.Net.WebClient.#ctor" Some "System.Collections.Generic.List`1" Some "System.Collections.Generic.List`1" ] this.TestF1Keywords(keywords, file) [] member public this.``Members`` () = let file = [ "open System.Linq" "open System" "let l = new ResizeArray()" "let i = l.Cou$nt" "l.Ad$d(1)" "let m = new System.IO.MemoryStream()" "m.BeginRe$ad()" "l.Se$lect(fun i -> i + 1)" "let d = new System.DateTi$me()" "let s = String.Empty" "s.Equ$als(null)" "let i = 12" "i.ToStr$ing()" ] let keywords = [ Some "System.Collections.Generic.List`1.Count" Some "System.Collections.Generic.List`1.Add" Some "System.IO.Stream.BeginRead" Some "System.Linq.Enumerable.Select``2" // per F1 keyword spec - one tick for classes, two ticks for members Some "System.DateTime.#ctor" Some "System.String.Equals" Some "System.Int32.ToString" ] this.TestF1Keywords(keywords, file) // Allow the F1KeywordTests run under different context namespace UnitTests.Tests.LanguageService.F1Keyword open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit F1KeywordTests new() = { inherit F1KeywordTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit F1KeywordTests new() = { inherit F1KeywordTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Unittests.fsproj0000664000175000017500000001714612260314606021444 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 False Debug AnyCPU 2.0 true v3.5 true true {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F} Library Unittests UnittestsGeneratedInterfaceFileToTestGotoDefinition.ReservedName.fsi $(NoWarn);45;47;52;58;75 $(OtherFlags) --optimize- --maxerrors:100 EXTENSIONTYPING;$(DefineConstants) Internal.Utilities.Collections.fsi Internal.Utilities.Collections.fs Internal.Utilities.CompilerLocationUtils.fs Fsc {C94C257C-3C0A-4858-B5D8-D746498D1F08} FSharp.Build {702A7979-BCF9-4C41-853E-3ADFC9897890} {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} FSharp.Compiler FSharp.Compiler {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} $(PrepareForRunDependsOn);CopyToTempDir fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/0000775000175000017500000000000012260314606023606 5ustar chrischrisfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/0000775000175000017500000000000012260314606031672 5ustar chrischris././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000000750512260314606033045 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(null))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016612266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000001073312260314606033042 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(null))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016612266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/TypePr0000775000175000017500000001143512260314606033047 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(new FSharpVar("", typeof(int[]), null), FSharpExpr.Value(new[] {1,2,3})); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(new FSharpVar("", typeof(decimal), null), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(new FSharpVar("", typeof(int), null), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(new FSharpVar("", typeof(int), null), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000000711512260314606033042 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000017012266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000001235512260314606033044 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(null))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016012266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000005627312260314606033053 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(null))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017312266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithNullComment/Artifi0000775000175000017500000001006712260314606033042 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(null))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/0000775000175000017500000000000012260314606032511 5ustar chrischris././@LongLink0000644000000000000000000000017012266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000000770112260314606033006 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017212266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000001100512260314606032776 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017212266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ty0000775000175000017500000001142512260314606033036 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000017112266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000000711012260314606033000 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000017412266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000001255512260314606033011 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000005634012260314606033011 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017712266073264011657 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithAdequateComment/Ar0000775000175000017500000001026012260314606033000 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EmptyAssembly/0000775000175000017500000000000012260314606026404 5ustar chrischrisfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EmptyAssembly/EmptyAssembly.fs0000775000175000017500000000034712260314606031543 0ustar chrischrisnamespace EmptyAssembly open Microsoft.FSharp.Core.CompilerServices // The point is to test a warning diagnostic about assemblies with the attribute below but with no type providers defined [] do()fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/0000775000175000017500000000000012260314606032666 5ustar chrischris././@LongLink0000644000000000000000000000017112266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000000771612260314606033007 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* Localized! ኤá ሻርᕠfor {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017312266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000001102012260314606032766 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* Localized! ኤá ሻርá•"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017312266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/T0000775000175000017500000001142512260314606033022 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000017212266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000000711512260314606033000 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000017512266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000001257112260314606033002 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* Localized! ኤá ሻርᕠfor {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000005635612260314606033013 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type Localized! ኤá ሻርá•"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020012266073264011642 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLocalizedComment/A0000775000175000017500000001027512260314606033001 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor Localized! ኤá ሻርᕠfor {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000015412266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000000000012260314606033154 5ustar chrischris././@LongLink0000644000000000000000000000020112266073264011643 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000000770112260314606033166 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 50 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000001100612260314606033157 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 50 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000001022612260314606033162 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000000711612260314606033166 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000020512266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000001255612260314606033172 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 50 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017512266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000005644512260314606033177 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { Debug.Assert(false, "NYI"); return base.IsGenericParameter; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 50 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000021012266073264011643 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesnotExist/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeLineDoesno0000775000175000017500000001026112260314606033161 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 50 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/0000775000175000017500000000000012260314606031657 5ustar chrischris././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000001005612260314606033025 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}. Which is used to test the tool tip of the typeprovider Event to check if it shows the right message or not.!", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016612266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000001116412260314606033026 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!. Which is used to test the tool tip of the typeprovider Method to check if it shows the right message or not.!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016612266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/TypePr0000775000175000017500000001142512260314606033033 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000000710012260314606033021 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000017012266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000001273512260314606033033 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}. Which is used to test the tool tip of the typeprovider Property to check if it shows the right message or not.!", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016012266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000005651412260314606033036 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!. Which is used to test the tool tip of the typeprovider type to check if it shows the right message or not."))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017312266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithLongComment/Artifi0000775000175000017500000001044312260314606033025 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}. Which is used to test the tool tip of the typeprovider Constructor to check if it shows the right message or not.!", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/Helpers.cs0000775000175000017500000000445612260314606025553 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { static class Helpers { internal class TypeProviderCustomAttributeData : CustomAttributeData { protected readonly Attribute _a; public TypeProviderCustomAttributeData(Attribute a) { _a = a; } public override ConstructorInfo Constructor { get { return _a.GetType().GetConstructors()[0]; } } public override IList ConstructorArguments { get { if (_a is TypeProviderXmlDocAttribute) return new List() { new CustomAttributeTypedArgument(typeof(string), ((TypeProviderXmlDocAttribute)_a).CommentText) }; else // if (_a is TypeProviderDefinitionLocationAttribute || _a is TypeProviderEditorHideMethodsAttribute) return new List(); } } public override IList NamedArguments { get { if (_a is TypeProviderDefinitionLocationAttribute) { var t = _a.GetType(); return new List() { new CustomAttributeNamedArgument(t.GetProperty("Column"), ((TypeProviderDefinitionLocationAttribute)_a).Column), new CustomAttributeNamedArgument(t.GetProperty("FilePath"), ((TypeProviderDefinitionLocationAttribute)_a).FilePath), new CustomAttributeNamedArgument(t.GetProperty("Line"), ((TypeProviderDefinitionLocationAttribute)_a).Line) }; } else // if (_a is TypeProviderXmlDocAttribute || _a is TypeProviderEditorHideMethodsAttribute) return new List(); } } } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/0000775000175000017500000000000012260314606031036 5ustar chrischris././@LongLink0000644000000000000000000000016012266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificalE0000775000175000017500000000770112260314606032774 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016212266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/Artificial0000775000175000017500000001100512260314606033030 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016212266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/TypeProvid0000775000175000017500000001142512260314606033074 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000016112266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/Artificial0000775000175000017500000000711612260314606033040 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000016412266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/Artificial0000775000175000017500000001255412260314606033042 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000015412266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/Artificial0000775000175000017500000005633512260314606033047 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016712266073264011656 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/EditorHideMethodsAttribute/Artificial0000775000175000017500000001025612260314606033037 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); //attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000015612266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000000000012260314606033115 5ustar chrischris././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000000770212260314606033130 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 4 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020512266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000001100512260314606033117 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020512266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000001052512260314606033125 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(new FSharpVar("", typeof(int[]), null), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { // Expression> e = () => K().Select(x=>(decimal)x).ToArray(); return FSharpExpr.Lambda(new FSharpVar("", typeof(decimal), null), FSharpExpr.Value(4.2M)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000020412266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000000711612260314606033127 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000020712266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000001255512260314606033132 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017712266073264011657 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000005644412260314606033137 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { Debug.Assert(false, "NYI"); return base.IsGenericParameter; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000021212266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceInTheType/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeWithSpaceI0000775000175000017500000001026012260314606033121 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/0000775000175000017500000000000012260314606032056 5ustar chrischris././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000000756012260314606033061 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("")))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5 + this._DeclaringType.Name.Length, FilePath = "", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016712266073264011656 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000001100312260314606033044 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("")))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 22 + this._DeclaringType.Name.Length, FilePath = "", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016712266073264011656 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/TypeP0000775000175000017500000001142512260314606033050 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000016612266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000000711612260314606033056 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000017112266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000001235512260314606033057 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(""))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016112266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000005627112260314606033064 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(""))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017412266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/XmlDocAttributeWithEmptyComment/Artif0000775000175000017500000001013612260314606033052 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("")))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5 + this._DeclaringType.Name.Length, FilePath = "", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/0000775000175000017500000000000012260314606031253 5ustar chrischris././@LongLink0000644000000000000000000000016112266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artifical0000775000175000017500000000746712260314606033115 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 4 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016312266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artificia0000775000175000017500000001026612260314606033101 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000016312266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/TypeProvi0000775000175000017500000001142512260314606033145 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } public event EventHandler Invalidate; } } ././@LongLink0000644000000000000000000000016212266073264011651 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artificia0000775000175000017500000000663212260314606033103 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000016512266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artificia0000775000175000017500000001223212260314606033074 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000015512266073264011653 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artificia0000775000175000017500000005560312260314606033105 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017012266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttribute/Artificia0000775000175000017500000001003112260314606033067 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "File.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000015412266073264011652 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000000000012260314606033144 5ustar chrischris././@LongLink0000644000000000000000000000020112266073264011643 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificalEventInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000000770112260314606033156 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificalEventInfo : EventInfo { string _Name; Type _DeclaringType; Type _EventHandleType; MethodInfo _AddMethod; MethodInfo _RemoveMethod; public ArtificalEventInfo(string Name, Type DeclaringType, Type EventHandleType) { _Name = Name; _DeclaringType = DeclaringType; _EventHandleType = EventHandleType; _AddMethod = new ArtificialMethodInfo("add_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); _RemoveMethod = new ArtificialMethodInfo("remove_" + _Name, _DeclaringType, typeof(void), MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Public); } // This one is invoked public override Type EventHandlerType { get { return _EventHandleType; } } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // This one is needed public override MethodInfo GetAddMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetAddMethod() was called with nonPublic=true"); return _AddMethod; } // This one is needed public override MethodInfo GetRemoveMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetRemoveMethod() was called with nonPublic=true"); return _RemoveMethod; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override EventAttributes Attributes { get { return EventAttributes.None; } } public override MethodInfo GetRaiseMethod(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *event* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "Temp.fs", Line = 4 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificialMethodInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000001100412260314606033145 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialMethodInfo : MethodInfo { string _Name; Type _DeclaringType; Type _ReturnType; MethodAttributes _MethodAttributes; public ArtificialMethodInfo(string Name, Type DeclaringType, Type ReturnType, MethodAttributes MethodAttributes) { _Name = Name; _DeclaringType = DeclaringType; _ReturnType = ReturnType; _MethodAttributes = MethodAttributes; } public override string Name { get { return _Name; } } public override Type DeclaringType { get { return _DeclaringType; } } // Make the method Public and Static - // TODO: should be configurable in the ctor... public override MethodAttributes Attributes { get { return _MethodAttributes; } } // No params // TODO: should be configurable in the ctor... public override ParameterInfo[] GetParameters() { return new ParameterInfo[] { }; } public override ParameterInfo ReturnParameter { get { // //var retvalpi = new ArtificialParamInfo(typeof(List<>), true); //return retvalpi; Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Type ReturnType { get { return _ReturnType; } } public override MethodInfo GetBaseDefinition() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override ICustomAttributeProvider ReturnTypeCustomAttributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic *method* created by me!!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 5, FilePath = "Temp.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000020312266073264011645 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/TypeProviderInCSharp.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000001142512260314606033154 0ustar chrischrisusing System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; using System.Reflection; using System.Diagnostics; [assembly: TypeProviderAssembly()] namespace TypeProviderInCSharp { //namespace N //{ // class S // { // public int instanceField; // public S(int x) // { // instanceField = x; // } // } //} class Namespace1 : IProvidedNamespace { const string _Namespace = "N"; const string _Name = "T"; // Type myType = new myType(typeof(N.S), "Bad.Name", typeof(Action), true); Type myType = new ArtificialType(_Namespace, _Name, false, basetype: typeof(object), isValueType: false, isByRef: false, isEnum: false, IsPointer: false); public IProvidedNamespace[] GetNestedNamespaces() { return new IProvidedNamespace[] { }; } public Type[] GetTypes() { return new Type[] { myType }; } public string NamespaceName { get { return _Namespace; } } public Type ResolveTypeName(string typeName) { if (typeName == _Name) { return myType; } return null; } } [TypeProvider()] public class TypeProvider : ITypeProvider { void IDisposable.Dispose() { } private void Param(int staticParam) { } public Type ApplyStaticArguments(Type typeWithoutArguments, string[] typeNameWithArguments, object[] staticArguments) { //Console.WriteLine("Hello from ApplyStaticArguments"); //var n = new myType(typeof(N.S), "S,\"1\"", typeof(object), false); //return n; return null; } public FSharpExpr GetInvokerExpression(System.Reflection.MethodBase syntheticMethodBase, FSharpExpr[] parameters) { if (syntheticMethodBase is System.Reflection.ConstructorInfo) { var ac = syntheticMethodBase as ArtificialConstructorInfo; if (ac.DeclaringType.FullName == "N.T") { return FSharpExpr.DefaultValue(ac.DeclaringType.BaseType); } Debug.Assert(false, "NYI"); throw new NotImplementedException(); } else if (syntheticMethodBase is System.Reflection.MethodInfo) { var am = syntheticMethodBase as ArtificialMethodInfo; if (am.DeclaringType.FullName == "N.T" && am.Name == "M") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int[])), FSharpExpr.Value(new[] { 1, 2, 3 })); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "get_StaticProp") { return FSharpExpr.Lambda(FSharpVar.Global("", typeof(decimal)), FSharpExpr.Value(4.2M)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "add_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else if (am.DeclaringType.FullName == "N.T" && am.Name == "remove_Event1") { // Dummy expr... since we do not care about what it really does... return FSharpExpr.Lambda(FSharpVar.Global("", typeof(int)), FSharpExpr.Value(1)); } else { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } else { Debug.Assert(false, "GetInvokerExpression() invoked with neither ConstructorInfo nor MethodInfo!"); return null; } //Expression> e = () => new S(9); //return e.Body; //throw new NotImplementedException(); } public IProvidedNamespace[] GetNamespaces() { return new IProvidedNamespace[] { new Namespace1() }; } public System.Reflection.ParameterInfo[] GetStaticParameters(Type typeWithoutArguments) { // No StaticParams return new ParameterInfo[] { /* new myParameterInfo() */ }; } public event EventHandler Invalidate; public byte[] GetGeneratedAssemblyContents(Assembly assembly) { throw (new Exception("GetGeneratedAssemblyContents - only erased types were provided!!")); } } } ././@LongLink0000644000000000000000000000020212266073264011644 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificialParamInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000000711612260314606033156 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialParamInfo : ParameterInfo { Type _type; bool _isRetVal; public ArtificialParamInfo(Type type, bool isRetVal) { _type = type; _isRetVal = IsRetval; } // TODO: allow more customizations... public override ParameterAttributes Attributes { get { return _isRetVal ? ParameterAttributes.Retval : ParameterAttributes.None; } } public override Type ParameterType { get { return _type; } } public override object DefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool Equals(object obj) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override int GetHashCode() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetOptionalCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type[] GetRequiredCustomModifiers() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MemberInfo Member { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string Name { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override int Position { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object RawDefaultValue { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override string ToString() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } } ././@LongLink0000644000000000000000000000020512266073264011647 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificialPropertyInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000001255412260314606033160 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialPropertyInfo : PropertyInfo { string _Name; bool _CanRead; bool _CanWrite; Type _DeclaringType; Type _PropertyType; MethodInfo _GetMethod; MethodInfo _SetMethod; public ArtificialPropertyInfo(string Name, Type DeclaringType, Type PropertyType, bool CanRead, bool CanWrite) { _Name = Name; _DeclaringType = DeclaringType; _PropertyType = PropertyType; _CanRead = CanRead; _CanWrite = CanWrite; if(CanRead) _GetMethod = new ArtificialMethodInfo("get_" + _Name, _DeclaringType, _PropertyType, MethodAttributes.Public | MethodAttributes.Static); if (CanWrite) _SetMethod = new ArtificialMethodInfo("set_" + _Name, _DeclaringType, null /* ?? */, MethodAttributes.Public | MethodAttributes.Static); } // The name of this property... public override string Name { get { return _Name; } } // Needed public override bool CanRead { get { return _CanRead; } } // If CanRead is true, this one gets invoked. public override MethodInfo GetGetMethod(bool nonPublic) { Debug.Assert(!nonPublic, "GetGetMethod was invoked with nonPublic=true"); return _GetMethod; } // Why is this invoked? public override ParameterInfo[] GetIndexParameters() { return new ParameterInfo[] { /* new ArtificialParamInfo(typeof(int), isRetVal: false), new ArtificialParamInfo(typeof(decimal), isRetVal: false) */}; } // If CanRead is false, this one gets invoked... without checking 'CanWrite' (?) public override MethodInfo GetSetMethod(bool nonPublic) { return _SetMethod; } public override bool CanWrite { get { return _CanWrite; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type PropertyType { get { return _PropertyType; } } // Interestingly enough, this one seems to be invoked only when I hover over the property in the IDE... public override Type DeclaringType { get { return _DeclaringType; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override PropertyAttributes Attributes { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override MethodInfo[] GetAccessors(bool nonPublic) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic *property* created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "Temp.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000017512266073264011655 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificialType.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000005633612260314606033166 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { public class ArtificialType : Type { string _Namespace; string _Name; bool _IsGenericType; bool _IsValueType; // value type = not class / not interface bool _IsByRef; // is the value passed by reference? bool _IsEnum; bool _IsPointer; Type _BaseType; MethodInfo _Method1; PropertyInfo _Property1; EventInfo _Event1; FieldInfo _Field1; ConstructorInfo _Ctor1; public ArtificialType(string @namespace, string name, bool isGenericType, Type basetype, bool isValueType, bool isByRef, bool isEnum, bool IsPointer) { _Name = name; _Namespace = @namespace; _IsGenericType = isGenericType; _BaseType = basetype; _IsValueType = isValueType; _IsByRef = isByRef; _IsEnum = isEnum; _IsPointer = IsPointer; _Method1 = new ArtificialMethodInfo("M", this, typeof(int[]), MethodAttributes.Public | MethodAttributes.Static); _Property1 = new ArtificialPropertyInfo("StaticProp", this, typeof(decimal), true, false); _Event1 = new ArtificalEventInfo("Event1", this, typeof(EventHandler)); _Ctor1 = new ArtificialConstructorInfo(this, new ParameterInfo[] {} ); // parameter-less ctor } public override System.Reflection.Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } } public override string Name { get { return _Name; } } public override Type BaseType { get { return _BaseType; } } public override string Namespace { get { return _Namespace; } } public override string FullName { get { return string.Format("{0}.{1}", _Namespace, _Name); } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } // TODO: what is this? protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { return TypeAttributes.Class | TypeAttributes.Public | (TypeAttributes)0x40000000; // add the special flag to indicate an erased type, see TypeProviderTypeAttributes } // This one seems to be invoked when in IDE, I type something like: // let _ = typeof no constructors public override System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Ctor1!=null) return new System.Reflection.ConstructorInfo[] { _Ctor1 }; else return new System.Reflection.ConstructorInfo[] { }; } // When you start typing more interesting things like... // let a = N.T.M() // this one gets invoked... public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new[] { _Method1 }; } // This method is called when in the source file we have something like: // - N.T.StaticProp // (most likely also when we have an instance prop...) // name -> "StaticProp" protected override System.Reflection.PropertyInfo GetPropertyImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); Debug.Assert(binder == null && returnType == null && types == null && modifiers == null, "One of binder, returnType, types, or modifiers was not null"); if (name == _Property1.Name) return _Property1; else return null; } // Advertise our property... // I think that is this one returns an empty array => you don't get intellisense/autocomplete in IDE/FSI public override System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new PropertyInfo[] { _Property1 }; } // No fields... public override System.Reflection.FieldInfo GetField(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return null; } public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new System.Reflection.FieldInfo[] { }; } // Events public override System.Reflection.EventInfo GetEvent(string name, System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); if (_Event1 != null && _Event1.Name == name) return _Event1; else return null; } // Events... public override System.Reflection.EventInfo[] GetEvents(System.Reflection.BindingFlags bindingAttr) { return _Event1 != null ? new [] { _Event1 } : new System.Reflection.EventInfo[] { }; } // TODO: according to the spec, this should not be invoked... instead it seems like it may be invoked... // ?? I have no idea what this is used for... ?? public override Type UnderlyingSystemType { get { return null; } } // According to the spec, this should always be 'false' protected override bool IsArrayImpl() { return false; } // No interfaces... public override Type[] GetInterfaces() { return new Type[] { }; } // No nested type // This method is invoked on the type 'T', e.g.: // let _ = N.T.M // to figure out if M is a nested type. public override Type GetNestedType(string name, System.Reflection.BindingFlags bindingAttr) { return null; } public override Type[] GetNestedTypes(System.Reflection.BindingFlags bindingAttr) { // According to the spec, we should only expect these 4, so we guard against that here! Debug.Assert(bindingAttr == (BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly), "bindingAttr has value not according to the spec!"); return new Type[] { }; } // This one is invoked when the type has a .ctor // and the code looks like // let _ = new N.T() // for example. // It was observed that the // TODO: cover both cases! public override bool IsGenericType { get { return _IsGenericType; } } // This is invoked if the IsGenericType is true public override Type[] GetGenericArguments() { if (_IsGenericType) return new Type[] { typeof(int), typeof(decimal), typeof(System.Guid) }; // This is currently triggering an ICE... else { Debug.Assert(false, "Why are we here?"); throw new NotImplementedException(); } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool IsGenericTypeDefinition { get { return _IsGenericType; } } // This one seems to be invoked when compiling something like // let a = new N.T() // Let's just stay away from generics... public override bool ContainsGenericParameters { get { return _IsGenericType; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsValueTypeImpl() { return _IsValueType; } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsByRefImpl() { return _IsByRef; } // This one seems to be checked when in IDE. // let b = N.T( public override bool IsEnum { get { return _IsEnum; } } // This one seems to be checked when in IDE. // let b = N.T( protected override bool IsPointerImpl() { return _IsPointer; } public override string AssemblyQualifiedName { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override Guid GUID { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } protected override System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetElementType() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type GetInterface(string name, bool ignoreCase) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override System.Reflection.MethodInfo GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool HasElementTypeImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsCOMObjectImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } protected override bool IsPrimitiveImpl() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override System.Reflection.Module Module { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodBase DeclaringMethod { get { Debug.Assert(false, "NYI"); return base.DeclaringMethod; } } // This one is invoked by the F# compiler! public override Type DeclaringType { get { return null; // base.DeclaringType; } } public override Type[] FindInterfaces(TypeFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindInterfaces(filter, filterCriteria); } public override MemberInfo[] FindMembers(MemberTypes memberType, BindingFlags bindingAttr, MemberFilter filter, object filterCriteria) { Debug.Assert(false, "NYI"); return base.FindMembers(memberType, bindingAttr, filter, filterCriteria); } public override GenericParameterAttributes GenericParameterAttributes { get { Debug.Assert(false, "NYI"); return base.GenericParameterAttributes; } } public override int GenericParameterPosition { get { Debug.Assert(false, "NYI"); return base.GenericParameterPosition; } } public override int GetArrayRank() { Debug.Assert(false, "NYI"); return base.GetArrayRank(); } public override MemberInfo[] GetDefaultMembers() { Debug.Assert(false, "NYI"); return base.GetDefaultMembers(); } public override string GetEnumName(object value) { Debug.Assert(false, "NYI"); return base.GetEnumName(value); } public override string[] GetEnumNames() { Debug.Assert(false, "NYI"); return base.GetEnumNames(); } public override Type GetEnumUnderlyingType() { Debug.Assert(false, "NYI"); return base.GetEnumUnderlyingType(); } public override Array GetEnumValues() { Debug.Assert(false, "NYI"); return base.GetEnumValues(); } public override EventInfo[] GetEvents() { Debug.Assert(false, "NYI"); return base.GetEvents(); } public override Type[] GetGenericParameterConstraints() { Debug.Assert(false, "NYI"); return base.GetGenericParameterConstraints(); } public override Type GetGenericTypeDefinition() { Debug.Assert(false, "NYI"); return base.GetGenericTypeDefinition(); } public override InterfaceMapping GetInterfaceMap(Type interfaceType) { Debug.Assert(false, "NYI"); return base.GetInterfaceMap(interfaceType); } public override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, bindingAttr); } public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) { Debug.Assert(false, "NYI"); return base.GetMember(name, type, bindingAttr); } protected override TypeCode GetTypeCodeImpl() { Debug.Assert(false, "NYI"); return base.GetTypeCodeImpl(); } public override bool IsAssignableFrom(Type c) { Debug.Assert(false, "NYI"); return base.IsAssignableFrom(c); } protected override bool IsContextfulImpl() { Debug.Assert(false, "NYI"); return base.IsContextfulImpl(); } public override bool IsEnumDefined(object value) { Debug.Assert(false, "NYI"); return base.IsEnumDefined(value); } public override bool IsEquivalentTo(Type other) { Debug.Assert(false, "NYI"); return base.IsEquivalentTo(other); } public override bool IsGenericParameter { get { return _IsGenericType; } } public override bool IsInstanceOfType(object o) { Debug.Assert(false, "NYI"); return base.IsInstanceOfType(o); } protected override bool IsMarshalByRefImpl() { Debug.Assert(false, "NYI"); return base.IsMarshalByRefImpl(); } public override bool IsSecurityCritical { get { Debug.Assert(false, "NYI"); return base.IsSecurityCritical; } } public override bool IsSecuritySafeCritical { get { Debug.Assert(false, "NYI"); return base.IsSecuritySafeCritical; } } public override bool IsSecurityTransparent { get { Debug.Assert(false, "NYI"); return base.IsSecurityTransparent; } } public override bool IsSerializable { get { Debug.Assert(false, "NYI"); return base.IsSerializable; } } public override bool IsSubclassOf(Type c) { Debug.Assert(false, "NYI"); return base.IsSubclassOf(c); } public override Type MakeArrayType() { Debug.Assert(false, "NYI"); return base.MakeArrayType(); } public override Type MakeArrayType(int rank) { Debug.Assert(false, "NYI"); return base.MakeArrayType(rank); } public override Type MakeByRefType() { return base.MakeByRefType(); } public override Type MakeGenericType(params Type[] typeArguments) { Debug.Assert(false, "NYI"); return base.MakeGenericType(typeArguments); } public override Type MakePointerType() { Debug.Assert(false, "NYI"); return base.MakePointerType(); } public override MemberTypes MemberType { get { Debug.Assert(false, "NYI"); return base.MemberType; } } public override int MetadataToken { get { Debug.Assert(false, "NYI"); return base.MetadataToken; } } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); return base.ReflectedType; } } public override System.Runtime.InteropServices.StructLayoutAttribute StructLayoutAttribute { get { Debug.Assert(false, "NYI"); return base.StructLayoutAttribute; } } public override RuntimeTypeHandle TypeHandle { get { Debug.Assert(false, "NYI"); return base.TypeHandle; } } public override string ToString() { Debug.Assert(false, "NYI"); return base.ToString(); } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute("This is a synthetic type created by me!"))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "Temp.fs", Line = 3 })); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000021012266073264011643 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesnotExist/ArtificialConstructorInfo.csfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DefinitionLocationAttributeFileDoesno0000775000175000017500000001026012260314606033150 0ustar chrischrisusing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Reflection; using Microsoft.FSharp.Core.CompilerServices; namespace TypeProviderInCSharp { class ArtificialConstructorInfo : ConstructorInfo { Type _DeclaringType; ParameterInfo[] _ParameterInfo; public ArtificialConstructorInfo(Type DeclaringType, ParameterInfo[] ParamInfo) { _DeclaringType = DeclaringType; _ParameterInfo = ParamInfo; } public override Type DeclaringType { get { return _DeclaringType; } } // This one is invoked public override ParameterInfo[] GetParameters() { return _ParameterInfo; } // This one is indeed invoked // I believe we should always return ".ctor" public override string Name { get { return ".ctor"; } } // Does it matter what we return here? // This property is definitely checked by the compiler in code like this: // let _ = new N.T() // I copied the attribute set from the .ctor of System.DateTime - the documentation on MSDN assumes that one is already familiar with // what they mean (=totally useless, as often happens) public override MethodAttributes Attributes { get { return MethodAttributes.FamANDAssem | MethodAttributes.Family | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; } } public override object[] GetCustomAttributes(Type attributeType, bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override MethodImplAttributes GetMethodImplementationFlags() { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override RuntimeMethodHandle MethodHandle { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override object[] GetCustomAttributes(bool inherit) { Debug.Assert(false, "Why are we calling into GetCustomAttributes()?"); return null; } public override bool IsDefined(Type attributeType, bool inherit) { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } public override Type ReflectedType { get { Debug.Assert(false, "NYI"); throw new NotImplementedException(); } } public override IList GetCustomAttributesData() { var attrs = new List(); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderXmlDocAttribute(string.Format("This is a synthetic .ctor created by me for {0}.{1}", this._DeclaringType.Namespace, this._DeclaringType.Name)))); attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderDefinitionLocationAttribute() { Column = 21, FilePath = "Temp.fs", Line = 3 })); // attrs.Add(new Helpers.TypeProviderCustomAttributeData(new TypeProviderEditorHideMethodsAttribute())); return attrs; } } } ././@LongLink0000644000000000000000000000014712266073264011654 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DummyProviderForLanguageServiceTesting/fsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DummyProviderForLanguageServiceTestin0000775000175000017500000000000012260314606033160 5ustar chrischris././@LongLink0000644000000000000000000000022012266073264011644 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DummyProviderForLanguageServiceTesting/DummyProviderForLanguageServiceTesting.fsfsharp-3.0.34/src/fsharp/unittests/Resources.MockTypeProviders/DummyProviderForLanguageServiceTestin0000775000175000017500000005034012260314606033167 0ustar chrischrisnamespace DummyProviderForLanguageServiceTesting open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.TypeProvider.Emit open System.Linq.Expressions // Runtime methods, these are called instead of “erased†methods type RuntimeAPI = static member Convert(x:float) : decimal = decimal x static member AddInt(x:int) = x+1 static member AddInt(x:int,y:int) = x+y static member Identity(x : string) = x static member IdentityInt(x : int) = x // Linq Expression functions for erased methods calls. module InvokeAPI = let addIntX (args : Quotations.Expr list) = match Seq.length args with | 1 -> <@@ RuntimeAPI.AddInt %%args.[0] @@> | 2 -> <@@ RuntimeAPI.AddInt (%%args.[0], %%args.[1]) @@> | _ -> failwithf "addIntX: expect arity 1 or 2 (got %d)" (Seq.length args) let instanceX (args:Quotations.Expr list) = match Seq.length args with | 2 -> <@@ RuntimeAPI.IdentityInt (%%args.[1]) @@> | _ -> failwithf "instanceX: expect arity 2 (got %d)" (Seq.length args) let ctor (args:Quotations.Expr list) = match Seq.length args with | 0 -> <@@ new System.Object() @@> | _ -> failwithf "ctor:expect arity 1 (got %d)" (Seq.length args) module internal TPModule = let namespaceName = "N1" let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() // A parametric type N1.T let typeT = ProvidedTypeDefinition(thisAssembly,namespaceName,"T",Some typeof) // Make an instantiation of the parametric type // THe instantiated type has a static property that evaluates to the param passed let instantiateParametricType (typeName:string) (args:System.Object[]) = match args with [| :? string as value; :? int as ignoredvalue; |] -> let typeParam = ProvidedTypeDefinition(thisAssembly,namespaceName, typeName, Some typeof) let propParam = ProvidedProperty("Param1", typeof, IsStatic = true, // A complicated was to basically return the constant value... Maybe there's a better/simpler way? GetterCode = fun _ -> <@@ RuntimeAPI.Identity(value) @@>) typeParam.AddMember(propParam :>System.Reflection.MemberInfo) typeParam | _ -> failwithf "instantiateParametricType: unexpected params %A" args // N1.T typeT.DefineStaticParameters( [ ProvidedStaticParameter("Param1", typeof); ProvidedStaticParameter("ParamIgnored", typeof) ], instantiateParametricType ) // A non-parametric type N1.T1 let typeT1 = ProvidedTypeDefinition(thisAssembly,namespaceName,"T1",Some typeof) // Two static methods: N1.T1.M1(int) and N1.T1.M2(int,int) let methM1 = ProvidedMethod("M1",[ProvidedParameter("arg1", typeof)],typeof, IsStaticMethod=true, InvokeCode=InvokeAPI.addIntX) let methM2 = ProvidedMethod("M2",[ProvidedParameter("arg1",typeof);ProvidedParameter("arg2", typeof)],typeof, IsStaticMethod=true, InvokeCode=InvokeAPI.addIntX) //one Instance method:N1.T1().IM1(int) let methIM1 = ProvidedMethod("IM1",[ProvidedParameter("arg1", typeof)],typeof,IsStaticMethod=false,InvokeCode=InvokeAPI.instanceX) // A method involving units-of-measure let measures = ProvidedMeasureBuilder.Default let kgAnnotation = measures.SI "kilogram" // a measure let hzAnnotation = measures.SI "hertz" // a measure-abbreviation let kg_per_hz_squared = measures.Ratio(kgAnnotation, measures.Square hzAnnotation) let float_kg = measures.AnnotateType(typeof,[kgAnnotation]) let decimal_kg_per_hz_squared = measures.AnnotateType(typeof,[kg_per_hz_squared]) let nullable_decimal_kg_per_hz_squared = typedefof>.MakeGenericType [| decimal_kg_per_hz_squared |] let methM3 = ProvidedMethod("MethodWithTypesInvolvingUnitsOfMeasure",[ProvidedParameter("arg1", float_kg)],nullable_decimal_kg_per_hz_squared, IsStaticMethod=true, InvokeCode=(fun args -> <@@ RuntimeAPI.Convert(%%(args.[0])) @@> )) // an instance method using a conditional expression let methM4 = ProvidedMethod("MethodWithErasedCodeUsingConditional",[],typeof,IsStaticMethod=false,InvokeCode=(fun _ -> <@@ if true then 1 else 2 @@>)) // an instance method using a call and a type-as expression let methM5 = ProvidedMethod("MethodWithErasedCodeUsingTypeAs",[],typeof,IsStaticMethod=false,InvokeCode=(fun _ -> <@@ box 1 :?> int @@>)) // Three ctors let ctorA = ProvidedConstructor([],InvokeCode=InvokeAPI.ctor) let ctorB = ProvidedConstructor([ProvidedParameter("arg1",typeof)]) let ctorC = ProvidedConstructor([ProvidedParameter("arg1",typeof); ProvidedParameter("arg2",typeof)]) typeT1.AddMember methM1 typeT1.AddMember methM2 typeT1.AddMember methIM1 typeT1.AddMember methM3 typeT1.AddMember methM4 typeT1.AddMember methM5 typeT1.AddMember ctorA typeT1.AddMember ctorB typeT1.AddMember ctorC // a nested type typeT1.AddMember <| ProvidedTypeDefinition("SomeNestedType", Some typeof) let typeWithNestedTypes = ProvidedTypeDefinition(thisAssembly,namespaceName,"TypeWithNestedTypes", Some typeof) typeWithNestedTypes.AddMember <| ProvidedTypeDefinition("X", Some typeof) typeWithNestedTypes.AddMember <| ProvidedTypeDefinition("Z", Some typeof) typeWithNestedTypes.AddMember <| ProvidedTypeDefinition("A", Some typeof) let types = [ typeT1 ; typeT; typeWithNestedTypes ] // Used by unit testing to check that Dispose is being called on the type provider module GlobalCounters = let mutable creations = 0 let mutable disposals = 0 let GetTotalCreations() = creations let GetTotalDisposals() = disposals [] type HelloWorldProvider() = inherit TypeProviderForNamespaces(TPModule.namespaceName,TPModule.types) do GlobalCounters.creations <- GlobalCounters.creations + 1 let mutable disposed = false interface System.IDisposable with member x.Dispose() = System.Diagnostics.Debug.Assert(not disposed) disposed <- true GlobalCounters.disposals <- GlobalCounters.disposals + 1 if GlobalCounters.disposals % 5 = 0 then failwith "simulate random error during disposal" // implementation of a poorly behaving TP that sleeps for various numbers of seconds when traversing into members. // simulates high network-latency, for testing VS robustness against badly-behaved providers. module internal SlowIntelliSenseTPModule = let namespaceName = "SlowIntelliSense" let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() let typeT = ProvidedTypeDefinition(thisAssembly,namespaceName,"T",Some typeof) let methM1 = ProvidedMethod("M1",[ProvidedParameter("arg1", typeof)],typeof, IsStaticMethod=true, InvokeCode=InvokeAPI.addIntX) typeT.AddMember methM1 let rec populate(t:ProvidedTypeDefinition, millisDelay:int) = t.AddMembersDelayed(fun() -> System.Threading.Thread.Sleep(millisDelay) // it is best for the first alphabetical to be zero-delay, as we immediately try to fetch its doc tip (which includes nested members) let a = new ProvidedTypeDefinition("AZero", Some typeof) populate(a, 0) let e = new ProvidedTypeDefinition("Six", Some typeof) populate(e, 6000) let t = new ProvidedTypeDefinition("Three", Some typeof) populate(t, 3000) let z = new ProvidedTypeDefinition("Zero", Some typeof) populate(z, 0) [a;e;t;z] ) typeT.AddMember( let t = new ProvidedTypeDefinition("Zero", Some typeof) populate(t,0) t ) let types = [ typeT ] [] type SlowIntellisenseProvider() = inherit TypeProviderForNamespaces(SlowIntelliSenseTPModule.namespaceName,SlowIntelliSenseTPModule.types) do ignore() // for breakpoint [] type ShowOffCreationTimeProvider() as this= inherit TypeProviderForNamespaces() let namespaceName = "ShowOffCreationTime" let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() let typeT = ProvidedTypeDefinition(thisAssembly,namespaceName,"T",Some typeof) let timeString = "CreatedAt" + System.DateTime.Now.ToLongTimeString() let methM1 = ProvidedMethod(timeString,[ProvidedParameter("arg1", typeof)],typeof, IsStaticMethod=true, InvokeCode=InvokeAPI.addIntX) let types = [ typeT ] do typeT.AddMember methM1 this.AddNamespace(namespaceName,types) module TypeProviderThatThrowsErrorsModule = type private Marker = interface end let assembly = typeof.Assembly let rootNamespace = "TPErrors" let types = let t = ProvidedTypeDefinition(assembly, rootNamespace, "TP", Some typeof) let parameter = ProvidedStaticParameter("N", typeof) t.DefineStaticParameters( parameters = [parameter], instantiationFunction = fun name args -> match args with | [|:? int as n|] when n > 0 -> let errors = Seq.init n (sprintf "Error %d" >> Failure) raise (System.AggregateException(errors)) | _ -> failwith "nonexpected" ) [t] [] type TypeProviderThatThrowsErrors() = inherit TypeProviderForNamespaces(TypeProviderThatThrowsErrorsModule.rootNamespace, TypeProviderThatThrowsErrorsModule.types) module TypeProviderForTestingTuplesErasureModule = type private Marker = interface end let assembly = typeof.Assembly let rootNamespace = "TupleErasure" let handle f = function | [arg] -> f arg | _ -> failwith "One argument expected" let erasedTup = ProvidedTypeDefinition(assembly, rootNamespace, "TupleType", Some(typeof)) erasedTup.AddMember(ProvidedConstructor([ProvidedParameter("tup", typeof)], InvokeCode = handle (fun tup -> tup))) erasedTup.AddMember(ProvidedProperty("SecondComponent", typeof, GetterCode = handle (fun tup -> Quotations.Expr.TupleGet(tup, 1)))) let objT = typedefof.MakeGenericType(typeof, erasedTup) let erasedCompoundTup = ProvidedTypeDefinition(assembly, rootNamespace, "CompoundTupleType", Some(objT)) erasedCompoundTup.AddMember(ProvidedConstructor([ProvidedParameter("tup", objT)], InvokeCode = handle (fun tup -> tup))) erasedCompoundTup.AddMember(ProvidedProperty("First", typeof, GetterCode = handle (fun tup -> Quotations.Expr.TupleGet(tup, 0)))) erasedCompoundTup.AddMember(ProvidedProperty("Second", erasedTup, GetterCode = handle (fun tup -> Quotations.Expr.TupleGet(tup, 1)))) [] type TypeProviderForTestingTuplesErasure() = inherit TypeProviderForNamespaces(TypeProviderForTestingTuplesErasureModule.rootNamespace, [TypeProviderForTestingTuplesErasureModule.erasedTup; TypeProviderForTestingTuplesErasureModule.erasedCompoundTup]) module TypeProviderThatEmitsBadMethodsModule = let assembly = System.Reflection.Assembly.GetExecutingAssembly() let rootNamespace = "BadMethods" let arrayUser = ProvidedTypeDefinition(assembly, rootNamespace, "Arr", None) let get = typeof.GetMethod("Get") let set = typeof.GetMethod("Set") let addr = typeof.GetMethod("Address") arrayUser.AddMember( ProvidedMethod( methodName = "GetFirstElement", parameters = [ProvidedParameter("array", typeof)], returnType = typeof, IsStaticMethod = true, InvokeCode = function [arr] -> Quotations.Expr.Call(arr, get, [Quotations.Expr.Value 0]) | _ -> failwith "One argument expected") ) arrayUser.AddMember( ProvidedMethod( methodName = "SetFirstElement", parameters = [ProvidedParameter("array", typeof); ProvidedParameter("val", typeof)], returnType = typeof, IsStaticMethod = true, InvokeCode = function [arr; v] -> Quotations.Expr.Call(arr, set, [Quotations.Expr.Value 0; v]) | _ -> failwith "Two argument expected") ) arrayUser.AddMember( ProvidedMethod( methodName = "AddressOfFirstElement", parameters = [ProvidedParameter("array", typeof)], returnType = typeof.MakeByRefType(), IsStaticMethod = true, InvokeCode = function [arr] -> Quotations.Expr.Call(arr, addr, [Quotations.Expr.Value 0]) | _ -> failwith "One argument expected") ) [] type TypeProviderThatEmitsBadMethods() = inherit TypeProviderForNamespaces(TypeProviderThatEmitsBadMethodsModule.rootNamespace, [TypeProviderThatEmitsBadMethodsModule.arrayUser]) module TypeProvidersVisibilityChecks = let assembly = System.Reflection.Assembly.GetExecutingAssembly() let Namespace = "GeneratedType" let setMethodVisibility (m : ProvidedMethod) visibility = m.SetMethodAttrs((m.Attributes &&& ~~~System.Reflection.MethodAttributes.MemberAccessMask) ||| visibility) let addMethod name value visibility (ty : ProvidedTypeDefinition) = let m = ProvidedMethod(name, [], value.GetType()) m.IsStaticMethod <- false m.InvokeCode <- fun _ -> Quotations.Expr.Value(value, value.GetType()) setMethodVisibility m visibility ty.AddMember m let addGetProperty name value visibility (ty : ProvidedTypeDefinition) = let prop = ProvidedProperty(name, value.GetType()) ty.AddMember prop prop.IsStatic <- false prop.GetterCode <- fun _ -> Quotations.Expr.Value(value, value.GetType()) let m = prop.GetGetMethod() :?> ProvidedMethod setMethodVisibility m visibility let addLiteralField name value (ty : ProvidedTypeDefinition) = let f = ProvidedLiteralField(name, value.GetType(), value) ty.AddMember f let providedTy = let ty = ProvidedTypeDefinition(assembly, Namespace, "SampleType", Some typeof, IsErased=false) /// unseal type ty.SetAttributes(ty.Attributes &&& ~~~System.Reflection.TypeAttributes.Sealed) // add public literal field addLiteralField "PublicField" 100 ty // implicitly adds field let ctor = ProvidedConstructor([ProvidedParameter("f", typeof)]) ctor.InvokeCode <- fun _ -> <@@ () @@> ty.AddMember ctor // add properties addGetProperty "PublicProp" 10 (System.Reflection.MethodAttributes.Public) ty addGetProperty "ProtectedProp" 210 (System.Reflection.MethodAttributes.Family) ty addGetProperty "PrivateProp" 310 (System.Reflection.MethodAttributes.Private) ty // add methods addMethod "PublicM" 510 (System.Reflection.MethodAttributes.Public) ty addMethod "ProtectedM" 5210 (System.Reflection.MethodAttributes.Family) ty addMethod "PrivateM" 5310 (System.Reflection.MethodAttributes.Private) ty ty.ConvertToGenerated(System.IO.Path.GetTempFileName() + ".dll") ty [] type TypeProvider() = inherit TypeProviderForNamespaces(Namespace, [providedTy]) module RegexTypeProvider = open System.Text.RegularExpressions [] type public CheckedRegexProvider() as this = inherit TypeProviderForNamespaces() // Get the assembly and namespace used to house the provided types let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() let rootNamespace = "Samples.FSharp.RegexTypeProvider" let baseTy = typeof let staticParams = [ProvidedStaticParameter("pattern", typeof)] let regexTy = ProvidedTypeDefinition(thisAssembly, rootNamespace, "RegexTyped", Some baseTy) do regexTy.DefineStaticParameters( parameters=staticParams, instantiationFunction=(fun typeName parameterValues -> match parameterValues with | [| :? string as pattern|] -> // Create an instance of the regular expression. // // This will fail with System.ArgumentException if the regular expression is invalid. // The exception will excape the type provider and be reported in client code. let r = System.Text.RegularExpressions.Regex(pattern) // Declare the typed regex provided type. // The type erasure of this typs ia 'obj', even though the representation will always be a Regex // This, combined with hiding the object methods, makes the IntelliSense experience simpler. let ty = ProvidedTypeDefinition( thisAssembly, rootNamespace, typeName, baseType = Some baseTy) ty.AddXmlDoc "A strongly typed interface to the regular expression '%s'" // Provide strongly typed version of Regex.IsMatch static method let isMatch = ProvidedMethod( methodName = "IsMatch", parameters = [ProvidedParameter("input", typeof)], returnType = typeof, IsStaticMethod = true, InvokeCode = fun args -> <@@ Regex.IsMatch(%%args.[0], pattern) @@>) isMatch.AddXmlDoc "Indicates whether the regular expression finds a match in the specified input string" ty.AddMember isMatch // Provided type for matches // Again, erase to obj even though the representation will always be a Match let matchTy = ProvidedTypeDefinition( "MatchType", baseType = Some baseTy, HideObjectMethods = true) // Nest the match type within parameterized Regex type ty.AddMember matchTy // Add group properties to match type for group in r.GetGroupNames() do // ignore the group named 0, which represents all input if group <> "0" then let prop = ProvidedProperty( propertyName = group, propertyType = typeof, GetterCode = fun args -> <@@ ((%%args.[0]:obj) :?> Match).Groups.[group] @@>) prop.AddXmlDoc(sprintf @"Gets the ""%s"" group from this match" group) matchTy.AddMember(prop) // Provide strongly typed version of Regex.Match instance method let matchMeth = ProvidedMethod( methodName = "Match", parameters = [ProvidedParameter("input", typeof)], returnType = matchTy, InvokeCode = fun args -> <@@ ((%%args.[0]:obj) :?> Regex).Match(%%args.[1]) :> obj @@>) matchMeth.AddXmlDoc "Searches the specified input string for the first occurence of this regular expression" ty.AddMember matchMeth // Declare a constructor let ctor = ProvidedConstructor( parameters = [], InvokeCode = fun args -> <@@ Regex(pattern) :> obj @@>) // Add documentation to the constructor ctor.AddXmlDoc "Initializes a regular expression instance" ty.AddMember ctor ty | _ -> failwith "unexpected parameter values")) do this.AddNamespace(rootNamespace, [regexTy]) [] do() fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.QuickParse.fs0000775000175000017500000002003712260314606024756 0ustar chrischrisnamespace UnitTests.Tests open System open System.IO open NUnit.Framework open Microsoft.VisualStudio.FSharp.LanguageService [] [] [] type QuickParse() = let CheckIsland(tolerateJustAfter:bool, s : string, p : int, expected) = let actual = match QuickParse.GetCompleteIdentifierIsland tolerateJustAfter s p with | Some (s, col, _) -> Some (s, col) | None -> None Assert.AreEqual(expected, actual) [] member public qp.CheckGetPartialLongName() = let CheckAt(line,index,expected) = let actual = QuickParse.GetPartialLongNameEx(line,index) if actual <> expected then failwithf "Expected %A but got %A" expected actual let Check(line,expected) = CheckAt(line, line.Length-1, expected) do Microsoft.FSharp.Compiler.AbstractIL.Diagnostics.setDiagnosticsChannel(Some(Console.Out)); Check("let y = List.",(["List"], "")) Check("let y = List.conc",(["List"], "conc")) Check("let y = S", ([], "S")) Check("S", ([], "S")) Check("let y=", ([], "")) Check("Console.Wr", (["Console"], "Wr")) Check(" .", ([""], "")) Check(".", ([""], "")) Check("System.Console.Wr", (["System";"Console"],"Wr")) Check("let y=f'", ([], "f'")) Check("let y=SomeModule.f'", (["SomeModule"], "f'")) Check("let y=Some.OtherModule.f'", (["Some";"OtherModule"], "f'")) Check("let y=f'g", ([], "f'g")) Check("let y=SomeModule.f'g", (["SomeModule"], "f'g")) Check("let y=Some.OtherModule.f'g", (["Some";"OtherModule"], "f'g")) Check("let y=FSharp.Data.File.``msft-prices.csv``", ([], "")) Check("let y=FSharp.Data.File.``msft-prices.csv", (["FSharp";"Data";"File"], "msft-prices.csv")) Check("let y=SomeModule. f", (["SomeModule"], "f")) Check("let y=SomeModule .f", (["SomeModule"], "f")) Check("let y=SomeModule . f", (["SomeModule"], "f")) Check("let y=SomeModule .", (["SomeModule"], "")) Check("let y=SomeModule . ", (["SomeModule"], "")) [] member public qp.CheckIsland0() = CheckIsland(true, "", -1, None) [] member public qp.CheckIsland1() = CheckIsland(false, "", -1, None) [] member public qp.CheckIsland2() = CheckIsland(true, "", 0, None) [] member public qp.CheckIsland3() = CheckIsland(false, "", 0, None) [] member public qp.CheckIsland4() = CheckIsland(true, null, 0, None) [] member public qp.CheckIsland5() = CheckIsland(false, null, 0, None) [] member public qp.CheckIsland6() = CheckIsland(false, "identifier", 0, Some("identifier",10)) [] member public qp.CheckIsland7() = CheckIsland(false, "identifier", 8, Some("identifier",10)) [] member public qp.CheckIsland8() = CheckIsland(true, "identifier", 0, Some("identifier",10)) [] member public qp.CheckIsland9() = CheckIsland(true, "identifier", 8, Some("identifier",10)) // A place where tolerateJustAfter matters [] member public qp.CheckIsland10() = CheckIsland(false, "identifier", 10, None) [] member public qp.CheckIsland11() = CheckIsland(true, "identifier", 10, Some("identifier",10)) // Index which overflows the line [] member public qp.CheckIsland12() = CheckIsland(true, "identifier", 11, None) [] member public qp.CheckIsland13() = CheckIsland(false, "identifier", 11, None) // Match active pattern identifiers [] member public qp.CheckIsland14() = CheckIsland(false, "|Identifier|", 0, Some("|Identifier|",12)) [] member public qp.CheckIsland15() = CheckIsland(true, "|Identifier|", 0, Some("|Identifier|",12)) [] member public qp.CheckIsland16() = CheckIsland(false, "|Identifier|", 12, None) [] member public qp.CheckIsland17() = CheckIsland(true, "|Identifier|", 12, Some("|Identifier|",12)) [] member public qp.CheckIsland18() = CheckIsland(false, "|Identifier|", 13, None) [] member public qp.CheckIsland19() = CheckIsland(true, "|Identifier|", 13, None) // ``Quoted`` identifiers [] member public qp.CheckIsland20() = CheckIsland(false, "``Space Man``", 0, Some("``Space Man``",13)) [] member public qp.CheckIsland21() = CheckIsland(true, "``Space Man``", 0, Some("``Space Man``",13)) [] member public qp.CheckIsland22() = CheckIsland(false, "``Space Man``", 10, Some("``Space Man``",13)) [] member public qp.CheckIsland23() = CheckIsland(true, "``Space Man``", 10, Some("``Space Man``",13)) [] member public qp.CheckIsland24() = CheckIsland(false, "``Space Man``", 11, Some("``Space Man``",13)) // [] // member public qp.CheckIsland25() = CheckIsland(true, "``Space Man``", 11, Some("Man",11)) // This is probably not what the user wanted. Not enforcing this test. [] member public qp.CheckIsland26() = CheckIsland(false, "``Space Man``", 12, Some("``Space Man``",13)) [] member public qp.CheckIsland27() = CheckIsland(true, "``Space Man``", 12, Some("``Space Man``",13)) [] member public qp.CheckIsland28() = CheckIsland(false, "``Space Man``", 13, None) [] member public qp.CheckIsland29() = CheckIsland(true, "``Space Man``", 13, Some("``Space Man``",13)) [] member public qp.CheckIsland30() = CheckIsland(false, "``Space Man``", 14, None) [] member public qp.CheckIsland31() = CheckIsland(true, "``Space Man``", 14, None) [] member public qp.CheckIsland32() = CheckIsland(true, "``msft-prices.csv``", 14, Some("``msft-prices.csv``",19)) // handle extracting islands from arrays [] member public qp.CheckIsland33() = CheckIsland(true, "[|abc;def|]", 2, Some("abc",5)) [] member public qp.CheckIsland34() = CheckIsland(true, "[|abc;def|]", 4, Some("abc",5)) [] member public qp.CheckIsland35() = CheckIsland(true, "[|abc;def|]", 5, Some("abc",5)) [] member public qp.CheckIsland36() = CheckIsland(true, "[|abc;def|]", 6, Some("def",9)) [] member public qp.CheckIsland37() = CheckIsland(true, "[|abc;def|]", 8, Some("def",9)) [] member public qp.CheckIsland38() = CheckIsland(true, "[|abc;def|]", 9, Some("def",9)) [] member public qp.CheckIsland39() = CheckIsland(false, "identifier(*boo*)", 0, Some("identifier",10)) [] member public qp.CheckIsland40() = CheckIsland(true, "identifier(*boo*)", 0, Some("identifier",10)) [] member public qp.CheckIsland41() = CheckIsland(false, "identifier(*boo*)", 10, None) [] member public qp.CheckIsland42() = CheckIsland(true, "identifier(*boo*)", 10, Some("identifier",10)) [] member public qp.CheckIsland43() = CheckIsland(false, "identifier(*boo*)", 11, None) [] member public qp.CheckIsland44() = CheckIsland(true, "identifier(*boo*)", 11, None) [] member public qp.CheckIsland45() = CheckIsland(false, "``Space Man (*boo*)``", 13, Some("``Space Man (*boo*)``",21)) [] member public qp.CheckIsland46() = CheckIsland(true, "``Space Man (*boo*)``", 13, Some("``Space Man (*boo*)``",21)) [] member public qp.CheckIsland47() = CheckIsland(false, "(*boo*)identifier", 11, Some("identifier",17)) [] member public qp.CheckIsland48() = CheckIsland(true, "(*boo*)identifier", 11, Some("identifier",17)) [] member public qp.CheckIsland49() = CheckIsland(false, "identifier(*(* *)boo*)", 0, Some("identifier",10)) [] member public qp.CheckIsland50() = CheckIsland(true, "identifier(*(* *)boo*)", 0, Some("identifier",10)) fsharp-3.0.34/src/fsharp/unittests/Tests.Powerpack.fs0000775000175000017500000000513012260314606021574 0ustar chrischrisnamespace UnitTests.Tests.PowerPack open NUnit.Framework open System open System.IO open System.Diagnostics open Microsoft.FSharp.Build open Microsoft.Build.BuildEngine open Microsoft.Build.Framework open Microsoft.Build.Utilities open UnitTests.TestLib.Utils.FilesystemHelpers [] type FsLexTests() = [] member this.Setup() = () [] member this.TearDown() = () [] member public this.TestCodePage() = let tool = new Microsoft.FSharp.Build.FsLex() tool.CodePage <- "65001" let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("--codepage 65001 ", cmd) [] member public this.TestOutputFile() = let tool = new Microsoft.FSharp.Build.FsLex() tool.OutputFile <- "result.fs" let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("-o result.fs ", cmd) [] member public this.TestUnicode() = let tool = new Microsoft.FSharp.Build.FsLex() tool.Unicode <- true let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("--unicode ", cmd) [] member public this.TestUnicodeNegCase() = let tool = new Microsoft.FSharp.Build.FsLex() tool.Unicode <- false let cmd = tool.InternalGenerateCommandLineCommands() // Verify Unicode flag not specified Assert.AreEqual("", cmd) [] type FsYaccTests() = [] member this.Setup() = () [] member this.TearDown() = () [] member public this.TestCodePage() = let tool = new Microsoft.FSharp.Build.FsYacc() tool.CodePage <- "65001" let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("--codepage 65001", cmd) [] member public this.TestOutputFile() = let tool = new Microsoft.FSharp.Build.FsYacc() tool.OutputFile <- "result.fs" let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("-o result.fs", cmd) [] member public this.TestMLCompatibility() = let tool = new Microsoft.FSharp.Build.FsYacc() tool.MLCompatibility <- true let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("--ml-compatibility", cmd) [] member public this.TestMLCompatibilityFalse() = let tool = new Microsoft.FSharp.Build.FsYacc() tool.MLCompatibility <- false let cmd = tool.InternalGenerateCommandLineCommands() Assert.AreEqual("", cmd)fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.References.fs0000775000175000017500000007317312260314606024550 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem open System open System.Collections.Generic open System.IO open System.Reflection open NUnit.Framework open Salsa open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.Shell.Interop open Microsoft.Win32 [] type References() = inherit TheTests() //TODO: look for a way to remove the helper functions static let Net35RefAssemPathOnThisMachine() = let key = @"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Microsoft .NET Framework 3.5 Reference Assemblies" let hklm = Registry.LocalMachine let rkey = hklm.OpenSubKey(key) rkey.GetValue("") :?> string static let Net20AssemExPathOnThisMachine() = let key = @"SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Public Assemblies (Common Files)" let hklm = Registry.LocalMachine let rkey = hklm.OpenSubKey(key) rkey.GetValue("") :?> string ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore static let DefaultBuildActionOfFilename(filename) : Salsa.BuildAction = match Path.GetExtension(filename) with | ".fsx" -> Salsa.BuildAction.None | ".resx" | ".resources" -> Salsa.BuildAction.EmbeddedResource | _ -> Salsa.BuildAction.Compile static let GetReferenceContainerNode(project : ProjectNode) = let l = new List() project.FindNodesOfType(l) l.[0] [] member this.``BasicAssemblyReferences1``() = this.MakeProjectAndDo([], ["System"], "", (fun proj -> let systemRef = proj.FirstChild.FirstChild :?> AssemblyReferenceNode Assert.IsTrue(systemRef.CanShowDefaultIcon()) )) [] member this.``BasicAssemblyReferences2``() = this.MakeProjectAndDo([], ["System.Net"], "", (fun proj -> let systemRef = proj.FirstChild.FirstChild :?> AssemblyReferenceNode Assert.IsTrue(systemRef.CanShowDefaultIcon()) )) [] member public this.``AddReference.StarredAssemblyName`` () = DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [], "")) use project = TheTests.CreateProject(projFile) let assName = new AssemblyName(typeof.Assembly.FullName) let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_ComPlus, bstrFile = "*" + assName.FullName) let refContainer = GetReferenceContainerNode(project) refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull let l = new List() project.FindNodesOfType(l) Assert.AreEqual(1, l.Count) Assert.AreEqual("System.Windows.Forms", l.[0].Caption) SaveProject(project) let fsprojFileText = File.ReadAllText(project.FileName) printfn "%s" fsprojFileText let expectedFsprojRegex = @"" TheTests.HelpfulAssertMatches '<' expectedFsprojRegex fsprojFileText ) [] member public this.``References.Bug787899.AddDuplicateUnresolved``() = // Let's create a run-of-the-mill project just to have a spare assembly around this.CreateDummyTestProjectBuildItAndDo(fun exe -> Assert.IsTrue(File.Exists exe, "failed to build exe") this.MakeProjectAndDoWithProjectFile(["doesNotMatter.fs"], ["mscorlib"; "System"; "System.Core"; "System.Net"], ".\\Test.dll", "v3.5", (fun project file -> let assemRef = TheTests.FindNodeWithCaption(project, "Test") :?> AssemblyReferenceNode Assert.IsFalse(assemRef.CanShowDefaultIcon(), "reference should be banged out, does not resolve") // add reference to Test.exe let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_File, bstrFile = exe) let refContainer = GetReferenceContainerNode(project) refContainer.AddReferenceFromSelectorData(selectorData) |> (fun x -> Assert.IsNotNull(x, "expected AddReference to succeed")) // it should have succeeded (no throw) )) ) [] member public this.``References.Bug787899.AddDuplicateResolved``() = // Let's create a run-of-the-mill project just to have a spare assembly around this.CreateDummyTestProjectBuildItAndDo(fun exe -> Assert.IsTrue(File.Exists exe, "failed to build exe") this.MakeProjectAndDoWithProjectFile(["doesNotMatter.fs"], ["mscorlib"; "System"; "System.Core"; "System.Net"], sprintf "%s" exe, "v3.5", (fun project file -> let assemRef = TheTests.FindNodeWithCaption(project, "Test") :?> AssemblyReferenceNode Assert.IsTrue(assemRef.CanShowDefaultIcon(), "reference should not be banged out, does resolve") // add reference to Test.exe let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_File, bstrFile = exe) let refContainer = GetReferenceContainerNode(project) try refContainer.AddReferenceFromSelectorData(selectorData) |> ignore Assert.Fail("expected AddReference to Fail") with :? InvalidOperationException as e -> Assert.AreEqual("A reference to 'Test' (with assembly name 'Test') could not be added. A reference to the component 'Test' with the same assembly name already exists in the project.", e.Message) )) ) [] member public this.``ReferenceResolution.Bug4423.LoadedFsProj.Works``() = this.MakeProjectAndDo(["doesNotMatter.fs"], ["mscorlib"; "System"; "System.Core"; "System.Net"], "", "v3.5", (fun project -> let expectedRefInfo = [ "mscorlib", true "System", true "System.Core", true "System.Net", true ] let refContainer = GetReferenceContainerNode(project) let actualRefInfo = [ let r = ref(refContainer.FirstChild :?> ReferenceNode) while !r <> null do yield ((!r).Caption, ((!r).CanShowDefaultIcon())) r := (!r).NextSibling :?> ReferenceNode ] AssertEqual expectedRefInfo actualRefInfo )) [] member public this.``ReferenceResolution.Bug4423.LoadedFsProj.WithExactDuplicates``() = this.MakeProjectAndDo(["doesNotMatter.fs"], ["System"; "System"], "", "v3.5", (fun project -> let expectedRefInfo = [ "System", true // In C#, one will be banged out, whereas "System", true] // one will be ok, but in F# both show up as ok. Bug? Not worth the effort to fix. let refContainer = GetReferenceContainerNode(project) let actualRefInfo = [ let r = ref(refContainer.FirstChild :?> ReferenceNode) while !r <> null do yield ((!r).Caption, ((!r).CanShowDefaultIcon())) r := (!r).NextSibling :?> ReferenceNode ] AssertEqual expectedRefInfo actualRefInfo )) [] member public this.``ReferenceResolution.Bug4423.LoadedFsProj.WithBadDuplicates``() = this.MakeProjectAndDo(["doesNotMatter.fs"], ["System"; "System.dll"], "", "v3.5", (fun project -> let expectedRefInfo = [ "System", false // one will be banged out "System.dll", true] // one will be ok let refContainer = GetReferenceContainerNode(project) let actualRefInfo = [ let r = ref(refContainer.FirstChild :?> ReferenceNode) while !r <> null do yield ((!r).Caption, ((!r).CanShowDefaultIcon())) r := (!r).NextSibling :?> ReferenceNode ] AssertEqual expectedRefInfo actualRefInfo )) [] member public this.``ReferenceResolution.Bug4423.LoadedFsProj.WorksWithFilenames``() = let edte = Path.Combine(Net20AssemExPathOnThisMachine(), "EnvDTE80.dll") let ssmw = Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll") this.MakeProjectAndDo(["doesNotMatter.fs"], [edte; ssmw], "", "v3.5", (fun project -> let expectedRefInfo = [ edte, true ssmw, true ] let refContainer = GetReferenceContainerNode(project) let actualRefInfo = [ let r = ref(refContainer.FirstChild :?> ReferenceNode) while !r <> null do yield ((!r).Caption, ((!r).CanShowDefaultIcon())) r := (!r).NextSibling :?> ReferenceNode ] AssertEqual expectedRefInfo actualRefInfo )) [] member public this.``ReferenceResolution.Bug4423.LoadedFsProj.WeirdCases``() = this.MakeProjectAndDo(["doesNotMatter.fs"], ["mscorlib, Version=4.0.0.0"; "System, Version=4.0.0.0"; "System.Core, Version=4.0.0.0"; "System.Net, Version=4.0.0.0"], "", "v4.0", (fun project -> let expectedRefInfo = [ "mscorlib", true "System", true "System.Core, Version=4.0.0.0", false // msbuild does funny things for System.Core (TODO bug number) "System.Net", true ] let refContainer = GetReferenceContainerNode(project) let actualRefInfo = [ let r = ref(refContainer.FirstChild :?> ReferenceNode) while !r <> null do yield ((!r).Caption, ((!r).CanShowDefaultIcon())) r := (!r).NextSibling :?> ReferenceNode ] AssertEqual expectedRefInfo actualRefInfo )) member public this.ReferenceResolutionHelper(tab : AddReferenceDialogTab, fullPath : string, expectedFsprojRegex : string) = this.ReferenceResolutionHelper(tab, fullPath, expectedFsprojRegex, "v3.5", []) member public this.ReferenceResolutionHelper(tab : AddReferenceDialogTab, fullPath : string, expectedFsprojRegex : string, targetFrameworkVersion : string, originalReferences : string list) = // Trace.Log <- "ProjectSystemReferenceResolution" // can be useful this.MakeProjectAndDo(["doesNotMatter.fs"], originalReferences, "", targetFrameworkVersion, (fun project -> let cType = match tab with | AddReferenceDialogTab.DotNetTab -> VSCOMPONENTTYPE.VSCOMPONENTTYPE_ComPlus | AddReferenceDialogTab.BrowseTab -> VSCOMPONENTTYPE.VSCOMPONENTTYPE_File | _ -> failwith "unexpected" let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = cType, bstrFile = fullPath) let refContainer = GetReferenceContainerNode(project) refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull SaveProject(project) let fsprojFileText = File.ReadAllText(project.FileName) printfn "%s" fsprojFileText TheTests.HelpfulAssertMatches '<' expectedFsprojRegex fsprojFileText )) [] member public this.``ReferenceResolution.Bug4423.FxAssembly.NetTab.AddDuplicate1``() = try this.ReferenceResolutionHelper(AddReferenceDialogTab.DotNetTab, Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll"), @"whatever, expectation does not matter, will throw before then", "v3.5", ["System.ServiceModel.Web"]) // assembly name Assert.Fail("adding a duplicate reference should have failed") with e -> TheTests.HelpfulAssertMatches ' ' "A reference to '.*' \\(with assembly name '.*'\\) could not be added. A reference to the component '.*' with the same assembly name already exists in the project." e.Message // see 5491 [] member public this.``ReferenceResolution.Bug4423.FxAssembly.NetTab.AddDuplicate2``() = try this.ReferenceResolutionHelper(AddReferenceDialogTab.DotNetTab, Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll"), @"whatever, expectation does not matter, will throw before then", "v3.5", ["System.ServiceModel.Web.dll"]) // filename Assert.Fail("adding a duplicate reference should have failed") with e -> TheTests.HelpfulAssertMatches ' ' "A reference to '.*' could not be added. A reference to the component '.*' already exists in the project." e.Message [] member public this.``ReferenceResolution.Bug4423.FxAssembly.NetTab``() = this.ReferenceResolutionHelper(AddReferenceDialogTab.DotNetTab, Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll"), // TODO the intent here is to match whatever C# does; below is a snapshot from July 7, 2009 @"") [] member public this.``ReferenceResolution.Bug4423.FxAssembly.BrowseTab.SameVersion``() = let sysCoreRefAssemPath = Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll") let dirName = Path.GetTempPath() let copy = Path.Combine(dirName, "System.ServiceModel.Web.dll") try File.Copy(sysCoreRefAssemPath, copy, true) this.ReferenceResolutionHelper(AddReferenceDialogTab.BrowseTab, copy, // TODO the intent here is to match whatever C# does; below is a snapshot from July 7, 2009 @"") finally File.Delete(copy) [] member public this.``ReferenceResolution.Bug4423.FxAssembly.BrowseTab.DifferentVersion``() = let sysCoreRefAssemPath = Path.Combine(Net35RefAssemPathOnThisMachine(), "System.ServiceModel.Web.dll") let dirName = Path.GetTempPath() let copy = Path.Combine(dirName, "System.ServiceModel.Web.dll") try File.Copy(sysCoreRefAssemPath, copy, true) this.ReferenceResolutionHelper(AddReferenceDialogTab.BrowseTab, copy, // TODO the intent here is to match whatever C# does; below is a snapshot from July 7, 2009 @"", "v4.0", // TargetFramework is 4.0, but browsing to 3.5 reference assembly []) finally File.Delete(copy) [] member public this.``ReferenceResolution.Bug4423.NonFxAssembly.NetTab``() = this.ReferenceResolutionHelper(AddReferenceDialogTab.DotNetTab, Path.Combine(Net20AssemExPathOnThisMachine(), "EnvDTE80.dll"), (* TODO, no NoPIA support yet, so *) @"") (* instead of below // TODO the intent here is to match whatever C# does; below is a snapshot from July 7, 2009 @"" + @"\s*True" + @"\s*") *) [] member public this.``ReferenceResolution.Bug4423.NonFxAssembly.BrowseTab.SameVersion``() = let envDte80RefAssemPath = Path.Combine(Net20AssemExPathOnThisMachine(), "EnvDTE80.dll") let dirName = Path.GetTempPath() let copy = Path.Combine(dirName, "EnvDTE80.dll") try File.Copy(envDte80RefAssemPath, copy, true) this.ReferenceResolutionHelper(AddReferenceDialogTab.BrowseTab, copy, (* For other cases, we mimic C#, but C# has a bug in this case. Correct result is *) @"" // TODO no NoPIA support yet: + @"\s*True" + @"\s*\.\.\\EnvDTE80.dll" + @"\s*") (* whereas C# has this: // TODO the intent here is to match whatever C# does; below is a snapshot from July 7, 2009 @"" + @"\s*False" + @"\s*True" + (sprintf @"\s*%s" (Regex.Escape copy)) + @"\s*") *) finally File.Delete(copy) /// Create a dummy project named 'Test', build it, and then call k with the full path to the resulting exe member public this.CreateDummyTestProjectBuildItAndDo(k : string -> unit) = this.MakeProjectAndDo(["foo.fs"], [], "", (fun project -> // Let's create a run-of-the-mill project just to have a spare assembly around let fooPath = Path.Combine(project.ProjectFolder, "foo.fs") File.AppendAllText(fooPath, "namespace Foo\nmodule Bar =\n let x = 42") let buildResult = project.Build("Build") Assert.IsTrue buildResult.IsSuccessful let exe = Path.Combine(project.ProjectFolder, "bin\\Debug\\Test.exe") k exe)) [] member public this.``ReferenceResolution.Bug4423.NonFxAssembly.BrowseTab.RelativeHintPath.InsideProjectDir``() = // Let's create a run-of-the-mill project just to have a spare assembly around this.CreateDummyTestProjectBuildItAndDo(fun exe -> Assert.IsTrue(File.Exists exe, "failed to build exe") // Now let's create an assembly reference to it and ensure we get expected relative HintPath let expectedFsprojRegex = @"" + @"\s*Test.exe" // in this directory + @"\s*" this.MakeProjectAndDo(["bar.fs"], [], "", "v3.5", (fun project -> let exeCopy = Path.Combine(project.ProjectFolder, "Test.exe") File.Copy(exe, exeCopy, true) Assert.IsTrue(File.Exists exeCopy, "failed to build exe") let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_File, bstrFile = exeCopy) let refContainer = GetReferenceContainerNode(project) refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull SaveProject(project) let fsprojFileText = File.ReadAllText(project.FileName) printfn "%s" fsprojFileText TheTests.HelpfulAssertMatches '<' expectedFsprojRegex fsprojFileText // Finally, ensure that the reference works as expected project.Reload() let assemRef = TheTests.FindNodeWithCaption(project, "Test") :?> AssemblyReferenceNode Assert.IsTrue(assemRef.CanShowDefaultIcon(), "the reference could not be resolved") // Use the referenced DLL as a double-check let barPath = Path.Combine(project.ProjectFolder, "bar.fs") File.AppendAllText(barPath, "printfn \"%d\" Foo.Bar.x") // code that requires the referenced assembly to successfully compile let buildResult = project.Build("Build") Assert.IsTrue buildResult.IsSuccessful )) ) [] member public this.``ReferenceResolution.Bug4423.NonFxAssembly.BrowseTab.RelativeHintPath.OutsideProjectDir``() = this.MakeProjectAndDo(["foo.fs"], [], "", (fun project -> // Let's create a run-of-the-mill let fooPath = Path.Combine(project.ProjectFolder, "foo.fs") File.AppendAllText(fooPath, "namespace Foo\nmodule Bar =\n let x = 42") let buildResult = project.Build("Build") Assert.IsTrue buildResult.IsSuccessful let exe = Path.Combine(project.ProjectFolder, "bin\\Debug\\Test.exe") Assert.IsTrue(File.Exists exe, "failed to build exe") // Now let's create an assembly reference to it and ensure we get expected relative HintPath let expectedFsprojRegex = @"" + @"\s*\.\.\\.*?" // the point is, some path start with "..\", since both projects are rooted somewhere in the temp directory (where unit tests create them) + @"\s*" this.MakeProjectAndDo(["bar.fs"], [], "", "v3.5", (fun project -> let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_File, bstrFile = exe) let refContainer = GetReferenceContainerNode(project) refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull SaveProject(project) let fsprojFileText = File.ReadAllText(project.FileName) printfn "%s" fsprojFileText TheTests.HelpfulAssertMatches '<' expectedFsprojRegex fsprojFileText // Finally, ensure that the reference works as expected project.Reload() let assemRef = TheTests.FindNodeWithCaption(project, "Test") :?> AssemblyReferenceNode Assert.IsTrue(assemRef.CanShowDefaultIcon(), "the reference could not be resolved") // Use the referenced DLL as a double-check let barPath = Path.Combine(project.ProjectFolder, "bar.fs") File.AppendAllText(barPath, "printfn \"%d\" Foo.Bar.x") // code that requires the referenced assembly to successfully compile let buildResult = project.Build("Build") Assert.IsTrue buildResult.IsSuccessful )) )) [] member public this.``ReferenceResolution.Bug4423.NotAValidDll.BrowseTab``() = let dirName = Path.GetTempPath() let dll = Path.Combine(dirName, "Foo.dll") File.AppendAllText(dll, "This is not actually a valid dll") try this.MakeProjectAndDo(["doesNotMatter.fs"], [], "", "v3.5", (fun project -> let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_File, bstrFile = dll) let refContainer = GetReferenceContainerNode(project) try refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull Assert.Fail("this should not have succeeded") with e -> AssertContains e.Message "could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component." )) finally File.Delete(dll) [] member public this.``PathReferences.Existing`` () = DoWithTempFile "Test.fsproj"(fun projFile -> let dirName = Path.GetDirectoryName(projFile) let libDirName = Directory.CreateDirectory(Path.Combine(dirName, "lib")).FullName let codeBase = (new Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath |> Path.GetDirectoryName let refLibPath = Path.Combine(libDirName, "nunit.core.dll") File.Copy(Path.Combine(codeBase, "nunit.core.dll"), refLibPath) File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [refLibPath], "")) use project = TheTests.CreateProject(projFile) let l = new List() project.FindNodesOfType(l) AssertEqual 1 l.Count AssertEqual refLibPath l.[0].Url AssertEqual refLibPath l.[0].Caption // when Include is a filename, entirety is caption Assert.IsNotNull(l.[0].ResolvedAssembly) let refContainer = let l = new List() project.FindNodesOfType(l) l.[0] let mscorlibPath = (new Uri("".GetType().Assembly.CodeBase)).LocalPath let selectorData = new VSCOMPONENTSELECTORDATA(``type`` = VSCOMPONENTTYPE.VSCOMPONENTTYPE_ComPlus, bstrFile = mscorlibPath) refContainer.AddReferenceFromSelectorData(selectorData) |> Assert.IsNotNull let l = new List() project.FindNodesOfType(l) AssertEqual 2 l.Count AssertEqual refLibPath l.[0].Url AssertEqual refLibPath l.[0].Caption AssertEqual "mscorlib" l.[1].Caption ) [] member public this.``PathReferences.Existing.Captions`` () = DoWithTempFile "Test.fsproj"(fun projFile -> File.AppendAllText(projFile, TheTests.FsprojTextWithProjectReferences( [], // ["$(LetterS)ystem.dll"; "System.Net.dll"], // [], // "S")) // other stuff use project = TheTests.CreateProject(projFile) let l = new List() project.FindNodesOfType(l) AssertEqual 2 l.Count AssertEqual "System.dll" l.[0].Caption Assert.IsNotNull(l.[0].ResolvedAssembly) AssertEqual "System.Net.dll" l.[1].Caption Assert.IsNotNull(l.[1].ResolvedAssembly) ) [] member public this.``PathReferences.NonExistent`` () = DoWithTempFile "Test.fsproj"(fun projFile -> let refLibPath = @"c:\foo\bar\blahblah.dll" File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [refLibPath], "")) use project = TheTests.CreateProject(projFile) let l = new List() project.FindNodesOfType(l) AssertEqual 1 l.Count AssertEqual refLibPath l.[0].Caption Assert.IsNull(l.[0].ResolvedAssembly) ) [] member public this.``FsprojPreferencePage.ProjSupportsPrefReadWrite``() = let testProp = "AssemblyName" let compileItem = [@"foo.fs"] DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText(compileItem, [], "")) use project = TheTests.CreateProject(projFile) // Read a known property from the project node - AssemblyName let propertyVal = project.GetProjectProperty(testProp, false) // Set the project property to something different (is currently "MyAssembly") let newPropVal = "Foo_PROPVAL_Foo" // hopefully unique? project.SetProjectProperty(testProp, newPropVal) // get the (hopefully) modified property name let propertyVal' = project.GetProjectProperty(testProp, false) let newProjFileName = (Path.GetDirectoryName projFile) + "\\" + "fooProj.fsproj" printfn "%s before modification: %s" testProp propertyVal printfn "%s after modification: %s" testProp propertyVal' // Assert that the value has changed AssertNotEqual propertyVal propertyVal' // Assert that the new value is what we expect it to be AssertEqual newPropVal propertyVal' // Save as a new project file project.SaveMSBuildProjectFileAs(newProjFileName) ; // cleaned up by parent call to DoWithTempFile // look for the new property inside of the project file let contents = File.ReadAllText(newProjFileName) AssertContains contents newPropVal )fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.Miscellaneous.fs0000775000175000017500000012570412260314606025270 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem // System namespaces open System open System.Collections.Generic open System.Globalization open System.IO open System.Text open System.Text.RegularExpressions // VS namespaces open Microsoft.VisualStudio.Shell open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem // Internal unittest namespaces open NUnit.Framework open Salsa open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem [] type Miscellaneous() = inherit TheTests() //TODO: look for a way to remove the helper functions ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore //[] // keep disabled unless trying to prove that UnhandledExceptionHandler is working member public this.EnsureThatUnhandledExceptionsCauseAnAssert() = this.MakeProjectAndDo([], ["System"], "", (fun proj -> let t = new System.Threading.Thread(new System.Threading.ThreadStart(fun () -> failwith "foo")) t.Start() System.Threading.Thread.Sleep(1000) )) [] member public this.``Miscellaneous.CreatePropertiesObject`` () = DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [], "")) use project = TheTests.CreateProject(projFile) let prop = project.CreatePropertiesObject() Assert.AreEqual(typeof, prop.GetType()) ) [] member public this.``Miscellaneous.TestProperties`` () = DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [], "")) use project = TheTests.CreateProject(projFile) let prop = new FSharpProjectNodeProperties(project) prop.AssemblyName <- "a" Assert.AreEqual("a", prop.AssemblyName) // Output type and output file name prop.OutputType <- OutputType.Exe Assert.AreEqual(OutputType.Exe, prop.OutputType) Assert.AreEqual("a.exe", prop.OutputFileName) prop.OutputType <- OutputType.Library Assert.AreEqual(OutputType.Library, prop.OutputType) Assert.AreEqual("a.dll", prop.OutputFileName) prop.OutputType <- OutputType.WinExe Assert.AreEqual(OutputType.WinExe, prop.OutputType) Assert.AreEqual("a.exe", prop.OutputFileName) ) [] member public this.``Miscellaneous.CreateServices`` () = DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText([], [], "")) use project = TheTests.CreateProject(projFile) let proj = project.CreateServices(typeof) Assert.AreEqual(typeof, proj.GetType()) let eproj = project.CreateServices(typeof) Assert.AreEqual(typeof, eproj.GetType()) let badservice = project.CreateServices(typeof) Assert.IsNull(badservice) ) [] member public this.``Miscellaneous.FSharpFileNode.GetRelativePath`` () = this.MakeProjectAndDo(["orig1.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "orig1.fs") let files = new List() project.FindNodesOfType(files) Assert.AreEqual(1, files.Count) let file = files.[0] let path = file.GetRelativePath() Assert.AreEqual("orig1.fs", path) )) [] member public this.``Miscellaneous.FSharpFileNode.CreateServices`` () = this.MakeProjectAndDo(["orig1.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "orig1.fs") let files = new List() project.FindNodesOfType(files) Assert.AreEqual(1, files.Count) let file = files.[0] let badservice = file.CreateServices(typeof) Assert.IsNull(badservice) let eproj = file.CreateServices(typeof) Assert.AreEqual(typeof, eproj.GetType()) )) //[] member public this.AttemptDragAndDrop() = printfn "starting..." let fsproj = "D:\Depot\staging\Test.fsproj" printfn "here1" let buildEngine = Utilities.InitializeMsBuildEngine(null) printfn "here2" let buildProject = Utilities.InitializeMsBuildProject(buildEngine, fsproj) printfn "here3" let package = new FSharpProjectPackage() let project = new UnitTestingFSharpProjectNode(package) //let dte = Package.GetGlobalService(typeof) //let dte = System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.8.0") :?> EnvDTE80.DTE2 //let dteServiceProvider = dte :?> Microsoft.VisualStudio.OLE.Interop.IServiceProvider //project.SetSite(dteServiceProvider) |> ignore let ivstrk = (new ServiceProvider(VsMocks.mockServiceProvider)).GetService(typeof) :?> IVsTrackProjectDocuments2 printfn "%A" ivstrk project.SetSite(VsMocks.mockServiceProvider) |> ignore printfn "here4" project.BuildProject <- buildProject let mutable cancelled = 0 let mutable guid = Guid.NewGuid() printfn "about to load .fsproj" project.Load(fsproj, null, null, 2u, &guid, &cancelled) printfn "loaded" let mutable dwEffect = 0u let mutable iOleDataObject = null let mutable iDropSource = null project.GetDropInfo(&dwEffect, &iOleDataObject, &iDropSource) |> ValidateOK // REVIEW validate dwEffect let mutable keyboardState = 1u let mutable node = project.FirstChild let mutable finished = false printfn "find file..." while not finished do match node with | :? FSharpFileNode as fileNode -> printfn "file %s" fileNode.FileName if fileNode.FileName = "aaa.fs" then finished <- true | _ -> node <- node.NextSibling if node = null then finished <- true Assert.AreNotEqual(node, null) let itemId = node.ID project.DragEnter(iOleDataObject, keyboardState, itemId, &dwEffect) |> ignore () [] member public this.``Automation.OutputGroup.OUTPUTLOC``() = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiPlatform(["x86",""],"x86"), (fun project projFileName -> let prjCfg = project.ConfigProvider.GetProjectConfiguration(new ConfigCanonicalName("Debug", "x86")) :> IVsProjectCfg2 let mutable outputGroup : IVsOutputGroup = null prjCfg.OpenOutputGroup("Built", &outputGroup) |> ValidateOK let mutable keyOutput : IVsOutput2 = null (outputGroup :?> IVsOutputGroup2).get_KeyOutputObject(&keyOutput) |> ValidateOK let mutable value : obj = null keyOutput.get_Property("OUTPUTLOC", &value) |> ValidateOK let expectedOutput = (projFileName |> Path.GetDirectoryName) + @"\bin\Debug\Blah.dll" AssertEqual expectedOutput (value :?> string) ) ) [] member public this.``Automation.OutputGroups``() = DoWithTempFile "Test.fsproj" (fun file -> let text = TheTests.FsprojTextWithProjectReferences([],[],[],@" Out.xml ") File.AppendAllText(file, text) let dirName = Path.GetDirectoryName(file) let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let project = TheTests.CreateProject(file, "false", cnn, sp) use project = project let prjCfg = project.ConfigProvider.GetProjectConfiguration(new ConfigCanonicalName("Debug","AnyCPU")) :> IVsProjectCfg2 let count = [| 0u |] prjCfg.get_OutputGroups(0u, null, count) |> ValidateOK let ogs : array = Array.create (int count.[0]) null prjCfg.get_OutputGroups(count.[0], ogs, count) |> ValidateOK let ogs : array = ogs |> Array.map (fun x -> downcast x) let ogInfos = [for og in ogs do let mutable canonicalName = "" og.get_CanonicalName(&canonicalName) |> ValidateOK let mutable description = "" og.get_Description(&description) |> ValidateOK let mutable displayName = "" og.get_DisplayName(&displayName) |> ValidateOK let mutable keyOutput = "" let keyOutputResult = og.get_KeyOutput(&keyOutput) let count = [| 0u |] og.get_Outputs(0u, null, count) |> ValidateOK let os : array = Array.create (int count.[0]) null og.get_Outputs(count.[0], os, count) |> ValidateOK yield canonicalName, description, displayName, keyOutput, keyOutputResult, [ for o in os do let mutable canonicalName = "" o.get_CanonicalName(&canonicalName) |> ValidateOK let mutable url = "" o.get_DeploySourceURL(&url) |> ValidateOK let mutable displayName = "" o.get_DisplayName(&displayName) |> ValidateOK let mutable relativeUrl = "" o.get_RootRelativeURL(&relativeUrl) |> ValidateOK yield canonicalName, url, displayName, relativeUrl] ] let expected = ["Built", "Contains the DLL or EXE built by the project.", "Primary Output", dirName+ @"\obj\Debug\Test.exe", 0, [dirName+ @"\obj\Debug\Test.exe", "file:///"+dirName+ @"\obj\Debug\Test.exe", dirName+ @"\obj\Debug\Test.exe", "Test.exe"] "ContentFiles", "Contains all content files in the project.", "Content Files", "", 1, [dirName+ @"\Yadda.txt", "file:///"+dirName+ @"\Yadda.txt", dirName+ @"\Yadda.txt", "Yadda.txt"] "LocalizedResourceDlls", "Contains the satellite assemblies for each culture's resources.", "Localized Resources", "", 1, [] "Documentation", "Contains the XML Documentation files for the project.", "Documentation Files", dirName+ @"\Out.xml", 0, [dirName+ @"\Out.xml", "file:///"+dirName+ @"\Out.xml", dirName+ @"\Out.xml", "Out.xml"] "Symbols", "Contains the debugging files for the project.", "Debug Symbols", "", 1, [dirName+ @"\obj\Debug\Test.pdb", "file:///"+dirName+ @"\obj\Debug\Test.pdb", dirName+ @"\obj\Debug\Test.pdb", "Test.pdb"] "SourceFiles", "Contains all source files in the project.", "Source Files", "", 1, [dirName+ @"\foo.fs", "file:///"+dirName+ @"\foo.fs", dirName+ @"\foo.fs", "foo.fs" dirName+ @"\Blah.resx", "file:///"+dirName+ @"\Blah.resx", dirName+ @"\Blah.resx", "Blah.resx" dirName+ @"\Test.fsproj", "file:///"+dirName+ @"\Test.fsproj", dirName+ @"\Test.fsproj", "Test.fsproj"] "XmlSerializer", "Contains the XML serialization assemblies for the project.", "XML Serialization Assemblies", "", 1, []] AssertEqual expected ogInfos ) [] member public this.``LoadProject.x86`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], ["System"], this.MSBuildProjectMultiPlatform(["x86",""],"x86"), (fun project projFileName -> this.CheckPlatformNames(project, [|"x86"|]) let refContainer = let l = new List() project.FindNodesOfType(l) l.[0] let l = new List() refContainer.FindNodesOfType(l) AssertEqual 1 l.Count )) [] member public this.``BuildAndClean``() = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(["foo.fs"], [], this.MSBuildProjectBoilerplate "Library", (fun project ccn projFileName -> let fooPath = Path.Combine(project.ProjectFolder, "foo.fs") File.AppendAllText(fooPath, "#light") File.AppendAllText(fooPath, "module Foo") //ccn((project :> IVsHierarchy), "Debug|Any CPU") let configName = "Debug" let (hr, configurationInterface) = project.ConfigProvider.GetCfgOfName(configName, ProjectConfig.Any_CPU) AssertEqual VSConstants.S_OK hr let config = configurationInterface :?> ProjectConfig let (hr, vsBuildableCfg) = config.get_BuildableProjectCfg() let buildableCfg = vsBuildableCfg :?> BuildableProjectConfig AssertEqual VSConstants.S_OK hr let success = ref false use event = new System.Threading.ManualResetEvent(false) let (hr, cookie) = buildableCfg.AdviseBuildStatusCallback( { new IVsBuildStatusCallback with member this.BuildBegin pfContinue = pfContinue <- 1; VSConstants.S_OK member this.BuildEnd fSuccess = success := fSuccess <> 0 event.Set() |> Assert.IsTrue VSConstants.S_OK member this.Tick pfContinue = pfContinue <- 1; VSConstants.S_OK } ) try let buildMgrAccessor = project.Site.GetService(typeof) :?> IVsBuildManagerAccessor let output = VsMocks.vsOutputWindowPane(ref []) let doBuild target = success := false event.Reset() |> Assert.IsTrue buildMgrAccessor.BeginDesignTimeBuild() |> ValidateOK // this is not a design-time build, but our mock does all the right initialization of the build manager for us, similar to what the system would do in VS for real buildableCfg.Build(0u, output, target) event.WaitOne() |> Assert.IsTrue buildMgrAccessor.EndDesignTimeBuild() |> ValidateOK // this is not a design-time build, but our mock does all the right initialization of the build manager for us, similar to what the system would do in VS for real AssertEqual true !success printfn "building..." doBuild "Build" AssertEqual true (File.Exists (Path.Combine(project.ProjectFolder, "bin\\Debug\\Blah.dll"))) printfn "cleaning..." doBuild "Clean" AssertEqual false (File.Exists (Path.Combine(project.ProjectFolder, "bin\\Debug\\Blah.dll"))) finally buildableCfg.UnadviseBuildStatusCallback(cookie) |> AssertEqual VSConstants.S_OK )) [] member public this.``ErrorReporting.EmptyModuleReportedAtTheLastLine``() = let (outputWindowPaneErrors : string list ref) = ref [] // output window pane errors let vso = VsMocks.vsOutputWindowPane(outputWindowPaneErrors) let compileItem = ["foo.fs"] let expectedError = "foo.fs(4,1): warning FS0988: Main module of program is empty: nothing will happen when it is run" // expected error // Compile & verify error range DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText(compileItem, [], "")) use project = TheTests.CreateProject(projFile) let srcFile = (Path.GetDirectoryName projFile) + "\\" + "foo.fs" File.AppendAllText(srcFile, "#light\nlet foo () =\n printfn \"A\"\n") project.BuildToOutput("Build", vso) |> ignore // Build the project using vso as the output logger let errors = List.filter (fun (s:string) -> s.Contains(expectedError)) !outputWindowPaneErrors AssertEqual 1 (List.length errors) ) [][)>] member public this.``DebuggingDLLFails``() = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(["foo.fs"], [], this.MSBuildProjectBoilerplate "Library", (fun project ccn projFileName -> ccn((project :> IVsHierarchy), "Debug|Any CPU") let fooPath = Path.Combine(project.ProjectFolder, "foo.fs") File.AppendAllText(fooPath, "#light") let mutable configurationInterface : IVsCfg = null let hr = project.ConfigProvider.GetCfgOfName("Debug", "Any CPU", &configurationInterface) AssertEqual VSConstants.S_OK hr let config = configurationInterface :?> ProjectConfig config.DebugLaunch(0ul) |> ignore () )) [] member public this.``DebuggingEXESucceeds``() = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(["foo.fs"], [], this.MSBuildProjectBoilerplate "Exe", (fun project ccn projFileName -> ccn((project :> IVsHierarchy), "Debug|Any CPU") let fooPath = Path.Combine(project.ProjectFolder, "foo.fs") File.AppendAllText(fooPath, "#light") let buildResult = project.Build("Build") Assert.IsTrue buildResult.IsSuccessful AssertEqual true (File.Exists (Path.Combine(project.ProjectFolder, "bin\\Debug\\Blah.exe"))) let mutable configurationInterface : IVsCfg = null let hr = project.ConfigProvider.GetCfgOfName("Debug", "Any CPU", &configurationInterface) AssertEqual VSConstants.S_OK hr let config = configurationInterface :?> ProjectConfig try config.DebugLaunch(0ul) |> ignore with | :? ClassLibraryCannotBeStartedDirectlyException -> Assert.Fail("Exe should be debuggable") | _ -> Assert.Fail() // DmiLom: Currently DebugLaunch() swallows most exceptions, in future if we improve DebugLaunch() we will expect it to throw a particular exception here () )) [] member public this.``IsDocumentInProject`` () = DoWithTempFile "Test.fsproj" (fun file -> let fakeCsLibProjectFile = @"..\CsLib\CsLib.csproj" File.AppendAllText(file, TheTests.FsprojTextWithProjectReferences(["foo.fs"; @"bar\baz.fs"],["System.dll";"Foo.Bar.Baz.dll"],[fakeCsLibProjectFile],"")) let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let project = TheTests.CreateProject(file, "false", cnn, sp) use project = project let checkInProject shouldBeInProject relPath = let mkDoc = Path.Combine(project.ProjectFolder, relPath) let priority = [|VSDOCUMENTPRIORITY.DP_Unsupported|] let mutable found = 0 let mutable itemId = 0ul let hr,_ = project.IsDocumentInProject(mkDoc, &found, priority) AssertEqual VSConstants.S_OK hr AssertEqual shouldBeInProject (found <> 0) checkInProject true "foo.fs" checkInProject true @"bar\baz.fs" checkInProject false "abracadabra.fs" checkInProject false fakeCsLibProjectFile checkInProject false "System.dll" ) [] member public this.``PreBuildEvent`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], ["System"], "", (fun project projFileName -> project.SetOrCreateBuildEventProperty("PreBuildEvent", "echo ProjectExt[$(ProjectExt)]") // just test one example property SaveProject(project) // ensure that is after declaration let fsprojFileText = File.ReadAllText(projFileName) printfn "%s" fsprojFileText let regexStr = "" TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText // ensure it runs let outputWindowPaneErrors : string list ref = ref [] let vso = VsMocks.vsOutputWindowPane(outputWindowPaneErrors) let srcFile = (Path.GetDirectoryName projFileName) + "\\" + "foo.fs" File.AppendAllText(srcFile, "let x = 5\n") project.BuildToOutput("Build", vso) |> ignore // Build the project using vso as the output logger printfn "Build output:" !outputWindowPaneErrors |> Seq.iter (printfn "%s") let expectedRegex = new Regex("\\s*ProjectExt\\[.fsproj\\]") Assert.IsTrue(!outputWindowPaneErrors |> List.exists (fun s -> expectedRegex.IsMatch(s)), "did not see expected value in build output") )) [] member public this.``BuildMacroValues`` () = DoWithTempFile "MyAssembly.fsproj" (fun file -> File.AppendAllText(file, TheTests.FsprojTextWithProjectReferences([],[],[],"")) let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() use project = TheTests.CreateProject(file, "false", cnn, sp) let targetPath = project.GetBuildMacroValue("TargetPath") let expectedTargetPath = Path.Combine(Path.GetDirectoryName(file), @"bin\Debug\MyAssembly.exe") AssertEqual expectedTargetPath targetPath let targetDir = project.GetBuildMacroValue("TargetDir") let expectedTargetDir = Path.Combine(Path.GetDirectoryName(file), @"bin\Debug\") AssertEqual expectedTargetDir targetDir ) [] member public this.CreateFSharpManifestResourceName () = DoWithTempFile "Test.fsproj" (fun file -> let text = TheTests.FsprojTextWithProjectReferences(["foo.fs";"Bar.resx"; "Bar.de.resx"; "Xyz\Baz.ru.resx"; "Abc.resources"],[],[],"") File.AppendAllText(file, text) let result = Salsa.Salsa.CreateFSharpManifestResourceName file "" "" |> List.sort let expected = ["Abc.resources", "Abc.resources"; "Bar.de.resx", "Bar.de"; "Bar.resx", "Bar"; "Xyz\Baz.ru.resx", "Xyz.Baz.ru"] |> List.sort if expected <> result then Assert.Fail ((sprintf "%A" expected) + "<>" + (sprintf "%A" result)) () ) member this.GetCurrentConfigCanonicalName(project : ProjectNode) = let buildMgr = project.Site.GetService(typeof) :?> IVsSolutionBuildManager let cfgs = Array.create 1 (null : IVsProjectCfg) let hr = buildMgr.FindActiveProjectCfg(System.IntPtr.Zero, System.IntPtr.Zero, project, cfgs) Assert.AreEqual(VSConstants.S_OK, hr) Assert.IsNotNull(cfgs.[0]) let mutable cfgName = "" let hr = cfgs.[0].get_CanonicalName(&cfgName) Assert.AreEqual(VSConstants.S_OK, hr) cfgName [] member this.``MSBuildExtensibility.BrokenCompileDependsOn.WithRecovery`` () = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(["foo.fs";"bar.fs"], [], // define a legal 'Foo' configuration @" true full false bin\Debug\ DEBUG;TRACE prompt 3 ", fun project configChangeNotifier projFile -> let projFileText = File.ReadAllText(projFile) // We need to add text _after_ the import of Microsoft.FSharp.targets. let i = projFileText.IndexOf("", i) let newProjFileText = projFileText.Insert(i+1, @" MyTarget;$(CompileDependsOn) ") File.WriteAllText(projFile, newProjFileText) project.Reload() // Ensure we are not in 'Foo' config, and thus expect failure let curCfgCanonicalName = this.GetCurrentConfigCanonicalName(project) Assert.IsFalse(curCfgCanonicalName.StartsWith("Foo"), sprintf "default config should not be 'Foo'! in fact it had canonical name '%s'" curCfgCanonicalName) // Now the project system is in a state where ComputeSourcesAndFlags will fail. // Our goal is to at least be able to open individual source files and treat them like 'files outside a project' with regards to intellisense, etc. // Also, if the user does 'Build', he will get an error which will help diagnose the problem. let ipps = project :> Microsoft.VisualStudio.FSharp.LanguageService.IProvideProjectSite let ips = ipps.GetProjectSite() let expected = [| |] // Ideal behavior is [|"foo.fs";"bar.fs"|], and we could choose to improve this in the future. For now we are just happy to now throw/crash. let actual = ips.SourceFilesOnDisk() Assert.AreEqual(expected, actual, "project site did not report expected set of source files") // Now let's "fix the error" configChangeNotifier(project, "Foo|AnyCPU") // switch to Foo mode - should go away, project should start behaving as normal let expected = [| "foo.fs"; "bar.fs" |] |> Array.map (fun filename -> Path.Combine(project.ProjectFolder, filename)) let actual = ips.SourceFilesOnDisk() #if FX_ATLEAST_45 let actual = if actual.Length > 0 then actual |> Seq.skip 1 |> Seq.toArray else actual // On Dev10, first file will be AssemblyAttributes.fs #endif Assert.AreEqual(expected, actual, "project site did not report expected set of source files after recovery") ) [] member public this.TestBuildActions () = DoWithTempFile "Test.fsproj" (fun file -> let text = TheTests.FsprojTextWithProjectReferences(["foo.fs";"Bar.resx"; "Bar.de.resx"; "Xyz\Baz.ru.resx"; "Abc.resources"],[],[],"") // Use toolsversion 2.0 project to have predictable default set of BuildActions let text = text.Replace("ToolsVersion='4.0'", "ToolsVersion='2.0'") File.AppendAllText(file, text) let dirName = Path.GetDirectoryName(file) let targetsFile = Path.Combine(dirName, "My.targets") let targetsText = @" " File.AppendAllText(targetsFile, targetsText) let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let project = TheTests.CreateProject(file, "false", cnn, sp) use project = project let values = project.BuildActionConverter.GetStandardValues() let list = values |> Seq.cast |> Seq.map (fun (ba : BuildAction)-> ba.Name) |> Seq.toList |> List.sort let expected = ["Compile"; "Content"; "EmbeddedResource"; "None"; "MyBuildAction"; "MyBuildAction3"] |> List.sort if list <> expected then let s0 = sprintf "%A" expected let s1 = sprintf "%A" list Assert.Fail(s0 + "<>" + s1) () ) [] member this.``WildcardsInProjectFile.ThrowingCase`` () = DoWithTempFile "Test.fsproj"(fun file -> let text = TheTests.FsprojTextWithProjectReferences(["*.fs"],[],[],"") File.AppendAllText(file, text) let dirName= Path.GetDirectoryName(file) File.AppendAllText(Path.Combine(dirName, "Foo.fs"), "do ()") File.AppendAllText(Path.Combine(dirName, "Bar.fs"), "do ()") let mutable exceptionThrown = false try let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let project = TheTests.CreateProject(file, "false", cnn, sp) in project.Close() |> ignore with :? CannotOpenProjectsWithWildcardsException as e -> exceptionThrown <- true AssertEqual "*.fs" e.ItemSpecification AssertEqual "Compile" e.ItemType Assert.IsTrue(exceptionThrown) ) [] member this.``WildcardsInProjectFile.OkCase`` () = DoWithTempFile "Test.fsproj"(fun file -> let text = TheTests.FsprojTextWithProjectReferences(["*.fs"],[],[],"") File.AppendAllText(file, text) let dirName= Path.GetDirectoryName(file) let fileName = Path.Combine(dirName, "Foo.fs") File.AppendAllText(fileName, "do ()") let sp, cnn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let project = TheTests.CreateProject(file, "false", cnn, sp) try project.ComputeSourcesAndFlags() let items = project.GetCompileItems() |> Array.toList match items with #if FX_ATLEAST_45 | [ _; fn ] -> // first file is AssemblyAttributes.fs #else | [ fn ] -> #endif AssertEqual fileName fn | _ -> sprintf "wring set of compile items %A" items |> Assert.Fail () finally project.Close() |> ignore ) module Regression5312 = // Regression testing ICONS in project system dll open System open System.Drawing open System.Runtime.InteropServices [] extern int32 ExtractIconEx(string szFileName, int nIconIndex,IntPtr[] phiconLarge, IntPtr[] phiconSmall,uint32 nIcons) [] extern int DestroyIcon(IntPtr hIcon) let extractIcon (path:string) (large:bool) = let n = 10 let hIconLarge = Array.create n IntPtr.Zero let hIconSmall = Array.create n IntPtr.Zero try let readIconCount = ExtractIconEx(path,0,hIconLarge,hIconSmall,uint32 n) if readIconCount > 0 then if large then Array.init readIconCount (fun i -> Icon.FromHandle(hIconLarge.[0]).Clone() :?> Icon) else Array.init readIconCount (fun i -> Icon.FromHandle(hIconSmall.[0]).Clone() :?> Icon) else [| |] finally hIconLarge |> Array.iter (fun ptr -> if ptr <> IntPtr.Zero then DestroyIcon ptr |> ignore) hIconSmall |> Array.iter (fun ptr -> if ptr <> IntPtr.Zero then DestroyIcon ptr |> ignore) /// Given path to FSharp.Project.FSharpProject.dll, check the icons are present. /// Throws of failure. let checkIcons nExpected (path:string) = let icons = extractIcon path true if icons.Length<>nExpected then failwithf "Expected %d icons in %s" nExpected path // " [] type Utilities() = (* Simulation of the code found in Xaml editor that we were crashing. The relevent code is pasted below. Note that they're assuming PKT is eight bytes. This need not be true and we don't enforce it from our side. We're just going to make sure to send an even number of characters (two per-byte). private static AssemblyName EnsureAssemblyName(Reference r) { if (r.Type != prjReferenceType.prjReferenceTypeAssembly) return null; // If possible, we use the data stored in the reference // to get to the assembly name. It is much faster than // cracking the manifest. AssemblyName an = new AssemblyName(); // Reference.Name does not have to be the actual assembly name here (seen in Project ref cases) // Identity (for Reference.Type == prjReferenceType.prjReferenceTypeAssembly) is the assembly name // without path or extension and is reserved so it can't be set in the project file by users an.Name = r.Identity; an.CultureInfo = new CultureInfo(r.Culture); an.Version = new Version( r.MajorVersion, r.MinorVersion, r.BuildNumber, r.RevisionNumber); string publicTokenString = r.PublicKeyToken; if (publicTokenString != null && publicTokenString.Length > 0) { byte[] publicToken = new byte[8]; for (int i = 0; i < publicToken.Length; i++) { string byteString = publicTokenString.Substring(i * 2, 2); publicToken[i] = byte.Parse(byteString, NumberStyles.HexNumber, CultureInfo.InvariantCulture); } an.SetPublicKeyToken(publicToken); } else { an.SetPublicKeyToken(new byte[0]); } try { Uri uri = new Uri(r.Path); an.CodeBase = uri.AbsoluteUri; } catch (UriFormatException) { // Reference path is ill-formed or empty => no code base } return an; } *) let SimulateXamlEditorReceivingThroughDTE(publicToken:string) = printfn "Simulating xaml pkt parsing for %s" publicToken // ---------------------------------------------------------------------------------------------------- // Don't change code between these lines. Its simulating external code. // ---------------------------------------------------------------------------------------------------- let ParseOneByte(i:int) = let byteString = publicToken.Substring(i * 2, 2) System.Byte.Parse(byteString, NumberStyles.HexNumber, CultureInfo.InvariantCulture) |> ignore [0..7] |> List.iter ParseOneByte // ---------------------------------------------------------------------------------------------------- let CheckPublicKeyToString(bytes,expect) = let actual = KeyToken.ToHexString(bytes) Assert.AreEqual(expect, actual) SimulateXamlEditorReceivingThroughDTE(actual) [] member public this.``PublicKeyToken.0000000000000000``() = CheckPublicKeyToString([|0uy;0uy;0uy;0uy;0uy;0uy;0uy;0uy|], "0000000000000000") [] member public this.``PublicKeyToken.0000000000000001``() = CheckPublicKeyToString([|0uy;0uy;0uy;0uy;0uy;0uy;0uy;1uy|], "0000000000000001") [] member public this.``PublicKeyToken.0a00000000000001``() = CheckPublicKeyToString([|0xauy;0uy;0uy;0uy;0uy;0uy;0uy;1uy|], "0a00000000000001") [] member public this.``CheckIconsInProjectSystemDLL_Regression5312``() = let path = typeof.Assembly.Location Regression5312.checkIcons 4 path () #if DEBUGGERVISUALIZER module internal DebugViz = open System.Windows.Forms open System.Drawing open Microsoft.VisualStudio.DebuggerVisualizers open System.Runtime.Serialization.Formatters.Binary open System.Runtime.Serialization open System.Collections.ObjectModel // debugger visualizer for HierarchyNodes [] type MyTreeNode(_data : string, _children : Collection) = let mutable data = _data let mutable children = _children new() = MyTreeNode("", new Collection()) new(data) = MyTreeNode(data, new Collection()) new(data, child : MyTreeNode, ()) = let nodes = new Collection() nodes.Add(child) MyTreeNode(data, nodes) member this.Data with get() = data and set(s) = data <- s member this.Nodes with get() = children and set(c) = children <- c member this.ToTreeNode() = let (result : TreeNode) = this.ToTreeNode(false) result.Toggle() result member this.ToTreeNode(toggle) = let result = new TreeNode(data) for mtn in children do result.Nodes.Add(mtn.ToTreeNode(true)) |> ignore if toggle then result.Toggle() result type MyVisualizerObjectSource() = inherit VisualizerObjectSource() override this.CreateReplacementObject(target, incomingData) = null : Object override this.GetData(target, outgoingData) = let node = MyVisualizerObjectSource.MakeFromObject(target) let formatter = new BinaryFormatter() formatter.Serialize(outgoingData, node) () override this.TransferData(target, incomingData, outgoingData) = this.GetData(target, outgoingData) static member MakeFromObject(o : Object) = let hn = o :?> HierarchyNode if hn <> null then let rec Make(n : HierarchyNode) = let result = new MyTreeNode(n.Caption) let mutable c = n.FirstChild while c <> null do result.Nodes.Add(Make(c)) c <- c.NextSibling result Make(hn) else failwith "expected a HierarchyNode" type MyForm(myNode : MyTreeNode) as this = inherit Form() static let normalFont = new Font("Courier New", 12.0f, FontStyle.Regular); static let boldFont = new Font("Courier New", 12.0f, FontStyle.Bold); let node = myNode.ToTreeNode() // REVIEW work on auto-sizing the window let maxX = 820; let maxY = 620; let tv = new TreeView() do tv.Font <- boldFont tv.Nodes.Add(node) |> ignore tv.Location <- new System.Drawing.Point(0, 0) tv.Size <- new System.Drawing.Size(maxX, maxY) tv.DrawMode <- TreeViewDrawMode.OwnerDrawText tv.DrawNode.AddHandler(new DrawTreeNodeEventHandler(this.DrawNode)) this.Controls.Add(tv) this.Size <- new System.Drawing.Size(maxX + 15, maxY + 30) this.Location <- new System.Drawing.Point(10, 10) member this.DrawNode sender (e : DrawTreeNodeEventArgs) = let text = e.Node.Text; let g = e.Graphics let size1 = g.MeasureString(text, boldFont) let rec1 = RectangleF.FromLTRB(single e.Bounds.Left, single e.Bounds.Top, single e.Bounds.Left + size1.Width+1.0f, single e.Bounds.Top + size1.Height+1.0f) e.Graphics.DrawString(text, boldFont, Brushes.Black, rec1) () type MyExpandedDialogDebuggerVisualizer() = inherit DialogDebuggerVisualizer() override this.Show(windowService, objectProvider) = let formatter = new BinaryFormatter() let input = objectProvider.GetData() let node = formatter.Deserialize(input, null) :?> MyTreeNode let form = new MyForm(node) windowService.ShowDialog(form :> Form) |> ignore static member TestShowVisualizer(objectToVisualize : HierarchyNode) = let serializable = MyVisualizerObjectSource.MakeFromObject(box objectToVisualize) let visualizerHost = new VisualizerDevelopmentHost(serializable, typeof) visualizerHost.ShowVisualizer() [, typeof, Target = typeof, Description = "HierarchyNode visualizer")>] [, typeof, Target = typeof, Description = "HierarchyNode visualizer")>] [, typeof, Target = typeof, Description = "HierarchyNode visualizer")>] [, typeof, Target = typeof, Description = "HierarchyNode visualizer")>] do () // module-level do for assembly-level attribute #endiffsharp-3.0.34/src/fsharp/unittests/Tests.TypeProvidersImpl.fs0000775000175000017500000004204112260314606023304 0ustar chrischrisnamespace UnitTests.Tests open System.IO open NUnit.Framework module U = Microsoft.FSharp.Data.TypeProviders.DesignTime.Utilities module CF = Microsoft.FSharp.Data.TypeProviders.DesignTime.ConfigFiles module Util = Microsoft.FSharp.Data.TypeProviders.Utility.Util [] type TypeProviderImplTests() = [] member public this.``SanitizeFileName``() = let tests = [ "NorthWind", "Northwind" "1NorthWind", "_1northwind" "north (wind)", "North_wind_" "north wind", "NorthWind" "North(Wind)", "North_wind_" "(northwind)", "_northwind_" "^#$&5wind", "____5wind" ] for (source, expected) in tests do let actual = U.sanitizeDataContextFileName source printfn "source: %s, expected %s, actual %s" source expected actual Assert.AreEqual(expected, actual) [] member public this.``ParseCodegenToolErrors.RecognizeErrorLine``() = let tests = [ // known localization related items [||], [|"error 7015: Parameter switch 'targetversion' is not valid."|], ["error 7015: Parameter switch 'targetversion' is not valid."] [||], [|"!stsMv!error 7015: !3eCOn!Parameter switch 'L' is not valid. 表c?å­—ãŒ!"|], ["!stsMv!error 7015: !3eCOn!Parameter switch 'L' is not valid. 表c?å­—ãŒ!"] [||], [|"ì—러 7015: Parameter switch 'targetversion' is not valid." |], ["ì—러 7015: Parameter switch 'targetversion' is not valid."] [||], [|"!pM1WE!Error: 表c!!i2yz2!Cannot read .. 表c?!"|], ["!pM1WE!Error: 表c!!i2yz2!Cannot read .. 表c?!"] [||], [|"エラー: . を読ã¿å–れã¾ã›ã‚“"|], ["エラー: . を読ã¿å–れã¾ã›ã‚“"] // regular [||], [|"Error: Cannot obtain Metadata from http://bing.com/" |], ["Error: Cannot obtain Metadata from http://bing.com/"] ] for (stdin, stderr, expectedErrs) in tests do try U.formatErr stdin stderr Assert.Fail("Should throw") with | :? System.AggregateException as ae -> let actualErrs = ae.InnerExceptions |> Seq.map (fun e -> e.Message) |> set let expectedErrs = set expectedErrs printfn "Expected: %A" expectedErrs printfn "Actual: %A" actualErrs Assert.IsTrue(actualErrs.Count = expectedErrs.Count) Assert.IsTrue((actualErrs - expectedErrs).Count = 0) | e -> sprintf "unexpected exception %A" e |> Assert.Fail [] member public this.``ParseCodegenToolErrors.FalsePositives``() = let stdin = [| "Attempting to download metadata from 'http://bing.com/' using WS-Metadata Exchange or DISCO." "Microsoft (R) Service Model Metadata Tool" "[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.17360]" "Copyright (c) Microsoft Corporation. Apache 2.0 License." "" "" "" "If you would like more help, type \"svcutil /?\"" |] let stderr = [| "Error: Cannot obtain Metadata from http://bing.com/ " "" "If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455." "" "WS-Metadata Exchange Error" " URI: http://bing.com/" "" " Metadata contains a reference that cannot be resolved: 'http://bing.com/'." "" " The content type text/html; charset=utf-8 of the response message does not match the content type of the binding (application/soap+xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 194 bytes of the response were: ''." "" "HTTP GET Error" " URI: http://bing.com/" "" " The HTML document does not contain Web service discovery information." "" |] try U.formatErr stdin stderr Assert.Fail("Should throw") with | :? System.AggregateException as ae -> printfn "%A" ae Assert.IsTrue (ae.InnerExceptions.Count = 1, "One exception expected") Assert.IsTrue(ae.InnerExceptions.[0].Message = "Error: Cannot obtain Metadata from http://bing.com/") | e -> sprintf "unexpected exception %A" e |> Assert.Fail [] member public this.``PathResolutionUtils.MakeAbsolute``() = use d = Util.TemporaryDirectory() let pru = Microsoft.FSharp.Data.TypeProviders.DesignTime.PathResolutionUtils(d.Path) // NullOrEmpty Assert.AreEqual(null, pru.MakeAbsolute(d.Path, null), "null expected") Assert.AreEqual("", pru.MakeAbsolute(d.Path, ""), "empty string expected") // rooted path let subFolder = Path.Combine(d.Path, "Subfolder") Assert.AreEqual(subFolder, pru.MakeAbsolute(d.Path, subFolder), "absolute path should be returned as is") // relative path Assert.AreEqual(subFolder, pru.MakeAbsolute(d.Path, "Subfolder"), "relative path should be converted to absolute") [] member public this.``PathResolutionUtils.GetAbsoluteDesignTimeDirectory``() = use d = Util.TemporaryDirectory() let pru = Microsoft.FSharp.Data.TypeProviders.DesignTime.PathResolutionUtils(d.Path) // absolute path Assert.AreEqual(d.Path, pru.GetAbsoluteDesignTimeDirectory(d.Path), "absolute path should be returned as is") // relative path let name = "Subfolder" let expected = Path.Combine(d.Path, name) Assert.AreEqual(expected, pru.GetAbsoluteDesignTimeDirectory(name), "relative path should be converted to absolute") [] member public this.``PathResolutionUtils.GetConfigFileWatchSpec.ResolvedPathsInSpecs``() = let (++) a b = Path.Combine(a, b) ( use d = Util.TemporaryDirectory() let pru = Microsoft.FSharp.Data.TypeProviders.DesignTime.PathResolutionUtils(d.Path) // no connection string name set pru.GetConfigFileWatchSpec(null, null, null) |> List.length |> fun l -> Assert.AreEqual(0, l, "Connection string name not set => not watch specs expected") ) let check caption resFolder configFile f = printfn "Running %s" caption use d = Util.TemporaryDirectory() let pru = Microsoft.FSharp.Data.TypeProviders.DesignTime.PathResolutionUtils(d.Path) match pru.GetConfigFileWatchSpec(resFolder, configFile, "Name") with | [r] -> f (d, r) | x -> sprintf "%s - unexpected result %A" caption x |> Assert.Fail printfn "Finished %s" caption // NOT FOUND CASES: // no custom config file name set - file name should be d.Path + "*.webconfig" check "#1" null null <| fun (d, r) -> let expectedPath = d.Path ++ "*.config" Assert.AreEqual(expectedPath, r.Path) // no custom config file name set + resolutionfolder is specified- result file name should be d.Path + resolutionFolder + "*.webconfig" check "#2" "Subfolder" null <| fun (d, r) -> let expectedPath = d.Path ++ "Subfolder" ++"*.config" Assert.AreEqual(expectedPath, r.Path) // no custom config file name set + absolute resolutionfolder is specified- result file name should be resolutionFolder + "*.webconfig" ( use root = Util.TemporaryDirectory() let absResolutionFolder = root.Path ++ "Subfolder2" check "#3" absResolutionFolder null <| fun (_, r) -> let expectedPath = absResolutionFolder ++"*.config" Assert.AreEqual(expectedPath, r.Path) ) // absolute custom config file name set - result file name should be absolute ( use root = Util.TemporaryDirectory() let absoluteConfigPath = root.Path ++ "somefolder" ++ "custom.config" check "#4" null absoluteConfigPath <| fun (_, r) -> Assert.AreEqual(absoluteConfigPath, r.Path) ) // absolute custom config file name set - result file name should be absolute ( use root = Util.TemporaryDirectory() let absoluteConfigPath = root.Path ++ "somefolder" ++ "custom.config" check "#4.1" "some name" absoluteConfigPath <| fun (_, r) -> Assert.AreEqual(absoluteConfigPath, r.Path) ) // resolutionFolder + relative custom config file name set - result file name should be d.Path + resFolder + config file name check "#5" "Subfolder" "custom.config" <| fun (d, r) -> let expected = d.Path ++ "Subfolder" ++ "custom.config" Assert.AreEqual(expected, r.Path) // relative custom config file name set - result file name should be d.Path + config file name check "#6" null "custom.config" <| fun (d, r) -> let expected = d.Path ++ "custom.config" Assert.AreEqual(expected, r.Path) // resolution folder is absolute and config filename is relative - result file name should be resolution folder + config file name ( use root = Util.TemporaryDirectory() check "#7" root.Path "custom.config" <| fun (_, r) -> let expected = root.Path ++ "custom.config" Assert.AreEqual(expected, r.Path) ) // FOUND cases let checkFound caption resFolder configFile actualConfigPath = printfn "Running %s" caption use d = Util.TemporaryDirectory() let configPath = actualConfigPath d.Path Directory.CreateDirectory(Path.GetDirectoryName configPath) |> ignore File.WriteAllText(configPath, "") let pru = Microsoft.FSharp.Data.TypeProviders.DesignTime.PathResolutionUtils(d.Path) match pru.GetConfigFileWatchSpec(resFolder, configFile, "Name") with | [r] -> Assert.AreEqual(configPath, r.Path) | x -> sprintf "%s, unexpected result %A" caption x |> Assert.Fail let di = DirectoryInfo d.Path for subdir in di.GetDirectories() do subdir.Delete(true) printfn "Finished %s" caption // no res folder\no custom config checkFound "#8" null null <| fun d -> d ++ "app.config" // relative res folder\no custom config checkFound "#9" "subfolder" null <| fun d -> d ++ "subfolder\\web.config" // abs res folder\no custom config ( use root = Util.TemporaryDirectory() checkFound "#10" root.Path null <| fun _ -> root.Path ++ "app.config" ) // no res folder\rel custom config ( use root = Util.TemporaryDirectory() let custom = root.Path ++ "custom.config" checkFound "#11" null custom <| fun _ -> custom ) // no res folder\abs custom config ( use root = Util.TemporaryDirectory() let custom = root.Path ++ "custom.config" checkFound "#11" null custom <| fun _ -> custom ) // relative res folder\relative custom config checkFound "#12" "custom" @"sub\custom.config" <| fun d -> d ++ "custom" ++ @"sub\custom.config" // relative res folder\absolute custom config ( use root = Util.TemporaryDirectory() let custom = root.Path ++ "custom.config" checkFound "#13" "custom" custom <| fun _ -> custom ) // abs res folder\absolute custom config ( use resFolder = Util.TemporaryDirectory() use configFolder = Util.TemporaryDirectory() let custom = configFolder.Path ++ "custom.config" checkFound "#14" resFolder.Path custom <| fun _ -> custom ) [] member public this.``ConfigFiles.findConfigFile``() = let withTempFile name f = use d = Util.TemporaryDirectory() File.WriteAllText(Path.Combine(d.Path, name), "content") f d.Path let checkStandard name = withTempFile name <| fun folder -> printfn "folder %s" folder let r = CF.findConfigFile(folder, null) match r with | CF.StandardFound f -> Assert.IsTrue(Path.GetFileName(f) = name) | r -> sprintf "findConfigFile: StandardFound (%s) unexpected result when: %+A" name r |> Assert.Fail // check if app.config can be found checkStandard "app.config" // check if web.config can be found checkStandard "web.config" // check if proper result is returned is failure case when custom configuration file is not specified ( use td = Util.TemporaryDirectory() let r = CF.findConfigFile(td.Path, null) match r with | CF.StandardNotFound -> () | r -> sprintf "findConfigFile: StandardNotFound - unexpected result: %+A" r |> Assert.Fail ) // check if custom.config can be found let customConfigName = "custom.config" withTempFile customConfigName <| fun folder -> let r = CF.findConfigFile(folder, Path.Combine(folder, customConfigName)) match r with | CF.CustomFound f -> Assert.IsTrue(Path.GetFileName(f) = customConfigName) | r -> sprintf "findConfigFile: CustomFound (%s) unexpected result when: %+A" customConfigName r |> Assert.Fail // check if proper result is returned is failure case when custom configuration file is specified ( use td = Util.TemporaryDirectory() let r = CF.findConfigFile(td.Path, Path.Combine(td.Path, customConfigName)) match r with | CF.CustomNotFound _ -> () | r -> sprintf "findConfigFile: CustomNotFound - unexpected result: %+A" r |> Assert.Fail ) [] member public this.``ConfigFiles.tryReadConnectionString``() = // 1. no file found ( use dir = Util.TemporaryDirectory() let r = CF.tryReadConnectionString(Path.Combine(dir.Path, "app.config"), "F") match r with | CF.ConnectionStringReadResult.Error (:? FileNotFoundException) -> () | r -> sprintf "no file found: unexpected result - %+A" r |> Assert.Fail ) // 2. file exists but corrupted ( use f = Util.TemporaryFile "app.config" File.WriteAllText(f.Path, "some text") let r = CF.tryReadConnectionString(f.Path, "F") match r with | CF.ConnectionStringReadResult.Error e -> printfn "%A" e | r -> sprintf "file exists but corrupted: unexpected result - %+A" r |> Assert.Fail ) // 3. file is correct but doesn't contain connection string ( let configText = """ """ use f = Util.TemporaryFile "app.config" File.WriteAllText(f.Path, configText.Trim()) let r = CF.tryReadConnectionString(f.Path, "F") match r with | CF.ConnectionStringReadResult.NotFound -> () | r -> sprintf "file is correct but doesn't contain connection string: unexpected result - %+A" r |> Assert.Fail ) // 4. file is correct and it contains connection string ( let configText = """ """ use f = Util.TemporaryFile "app.config" File.WriteAllText(f.Path, configText.Trim()) let r = CF.tryReadConnectionString(f.Path, "S") match r with | CF.ConnectionStringReadResult.Ok s -> Assert.AreEqual("string", s.ConnectionString) | r -> sprintf "file is correct but doesn't contain connection string: unexpected result - %+A" r |> Assert.Fail ) fsharp-3.0.34/src/fsharp/unittests/Tests.BaseLine.fs0000775000175000017500000000361512260314606021331 0ustar chrischrisnamespace UnitTests.Tests open NUnit.Framework open System open System.IO open System.Diagnostics open UnitTests.TestLib.Utils open Microsoft.BuildSettings [] type Script() = let replaceIfNotNull (search:string) (replace:string) (s:string) = match s with | null -> s | s -> s.Replace(search,replace) let replaceConstants(line:string) = line |> replaceIfNotNull Version.OfFile "{VersionOfFile}" |> replaceIfNotNull Version.OfAssembly "{VersionOfAssembly}" |> replaceIfNotNull Version.ProductBuild "{VersionOfProductBuild}" |> replaceIfNotNull "4.0" "{DotNetMajorMinor}" |> replaceIfNotNull "4.5" "{DotNetMajorMinor}" |> replaceIfNotNull (sprintf "%s.%s" Version.Major Version.Minor) "{DotNetMajorMinor}" |> replaceIfNotNull "10.0" "{VsMajorMinor}" |> replaceIfNotNull "F# 3.0" "F# {FSharpCompilerVersion}" |> replaceIfNotNull (Environment.GetEnvironmentVariable("ProgramFiles")) "{ProgramFiles}" let runCheck(script:string,baseline:string) = let code,lines = Spawn.Batch script let combinedLines = String.Join("\r\n",lines).Trim([|'\r';'\n'|]) |> replaceConstants let baseline = baseline.Trim([|'\r';'\n'|]) if baseline<>combinedLines then for line in lines do printfn "%s" (replaceConstants line) Assert.AreEqual(baseline,combinedLines) [] member public __.NetModules_Bug915449() = let script = @" @echo off echo>a.cs public class A {} echo>b.cs public class B {} echo>r.fs let a = new A() echo>>r.fs let b = new B() echo>>r.fs System.Console.WriteLine(a.GetType()) echo>>r.fs System.Console.WriteLine(b.GetType()) csc /nologo /t:module a.cs csc /nologo /t:module b.cs al /nologo /out:c.dll a.netmodule b.netmodule fsc /nologo /r:c.dll r.fs " let baseline = @"" runCheck(script,baseline)fsharp-3.0.34/src/fsharp/unittests/TestLib.Utils.fs0000775000175000017500000003275712260314606021224 0ustar chrischrisnamespace UnitTests.TestLib.Utils open System open System.IO open NUnit.Framework open Microsoft.VisualStudio module Asserts = (* Asserts ----------------------------------------------------------------------------- *) let AssertEqualMsg expected actual failureMsg = if expected<>actual then let message = sprintf "Expected\n%A\nbut got\n%A\n%s" expected actual failureMsg printfn "%s" message Assert.Fail(message) let AssertEqual expected actual = if expected<>actual then let message = sprintf "Expected\n%A\nbut got\n%A" expected actual printfn "%s" message Assert.Fail(message) let AssertNotEqual expected actual = if expected=actual then let message = "Expected not equal, but were equal" printfn "%s" message Assert.Fail(message) let AssertContains (s:string) c = if not (s.Contains(c)) then let message = sprintf "Expected '%s' to contain '%s'." s c printfn "%s" message Assert.Fail(message) let ValidateOK (i:int) = if not (i = VSConstants.S_OK) then let message = sprintf "Expected S_OK" printfn "%s" message Assert.Fail(message) module UIStuff = let SetupSynchronizationContext() = Microsoft.VisualStudio.FSharp.LanguageService.UIThread.InitUnitTestingMode() module FilesystemHelpers = let pid = System.Diagnostics.Process.GetCurrentProcess().Id /// Create a new temporary directory. let rec NewTempDirectory (prefixName : String) = let tick = Environment.TickCount let dir = Path.Combine(Path.GetTempPath(), sprintf "%s-%A-%d" prefixName tick pid) if Directory.Exists dir then NewTempDirectory prefixName else let _ = Directory.CreateDirectory(dir) dir /// Create a temporary filename, invoke callback with that filename, then clean up temp file. let DoWithTempFile (filename : string) (f : string (*filePath*) -> 'a) = let dir = NewTempDirectory "fsc-tests" let filePath = Path.Combine(dir, filename) let r = f filePath let rec DeleteAll dir = for f in Directory.GetFiles(dir) do File.Delete(f) for d in Directory.GetDirectories(dir) do DeleteAll(d) try Directory.Delete(dir) with e -> printfn "failed to delete temp directory %s" dir printfn " error was %s" e.Message printfn " ignoring" DeleteAll(dir) r module Spawn = open System open System.IO open System.Diagnostics open System.Text /// Set this flag to true to see spawned commands. let mutable showSpawnedCommands = false type public ProcessResults = { PeakPagedMemorySize:int64 PeakVirtualMemorySize:int64 PeakWorkingSet:int64 PrivilegedProcessorTime:float // milliseconds UserProcessorTime:float // milliseconds TotalProcessorTime:float // milliseconds } with static member internal CreateFromProcess(proc:Process) = try { PeakPagedMemorySize=proc.PeakPagedMemorySize64 PeakVirtualMemorySize=proc.PeakVirtualMemorySize64 PeakWorkingSet=proc.PeakWorkingSet64 PrivilegedProcessorTime=proc.PrivilegedProcessorTime.TotalMilliseconds UserProcessorTime=proc.UserProcessorTime.TotalMilliseconds TotalProcessorTime=proc.TotalProcessorTime.TotalMilliseconds } with :? InvalidOperationException as e -> // There is what appears to be an unresolvable race here. The process may exit while building the record. { PeakPagedMemorySize=0L PeakVirtualMemorySize=0L PeakWorkingSet=0L PrivilegedProcessorTime=0.0 UserProcessorTime=0.0 TotalProcessorTime=0.0 } static member internal SampleProcess(proc:Process,original) = try { PeakPagedMemorySize=max proc.PeakPagedMemorySize64 original.PeakPagedMemorySize PeakVirtualMemorySize=max proc.PeakVirtualMemorySize64 original.PeakVirtualMemorySize PeakWorkingSet=max proc.PeakWorkingSet64 original.PeakWorkingSet PrivilegedProcessorTime=max proc.PrivilegedProcessorTime.TotalMilliseconds original.PrivilegedProcessorTime UserProcessorTime=max proc.UserProcessorTime.TotalMilliseconds original.UserProcessorTime TotalProcessorTime=max proc.TotalProcessorTime.TotalMilliseconds original.TotalProcessorTime } with :? InvalidOperationException as e -> // There is what appears to be an unresolvable race here. The process may exit while building the record. original let private spawnDetailed logOutputTo logErrorTo exitWith command fmt = let spawn (arguments:string) = if showSpawnedCommands then printfn "%s %s" command arguments let pi = ProcessStartInfo(command,arguments) pi.WindowStyle <- ProcessWindowStyle.Hidden pi.CreateNoWindow <- true pi.UseShellExecute <- false pi.WorkingDirectory <- Directory.GetCurrentDirectory() pi.ErrorDialog <- false pi.RedirectStandardError<-true pi.RedirectStandardOutput<-true use proc = new Process() proc.StartInfo <- pi proc.OutputDataReceived.Add(logOutputTo) proc.ErrorDataReceived.Add(logErrorTo) match proc.Start() with | false -> failwith(sprintf "Could not start process: %s %s " command arguments) | true -> proc.BeginOutputReadLine() proc.BeginErrorReadLine() let mutable stats = ProcessResults.CreateFromProcess(proc) while not(proc.WaitForExit(200)) do stats <- ProcessResults.SampleProcess(proc,stats) exitWith command arguments proc.ExitCode stats Printf.ksprintf spawn fmt let private expectCodeOrRaise expectedCode command arguments (exitCode:int) _ = if expectedCode<>exitCode then failwith(sprintf "%s %s exitted with code %d. Expected %d" command arguments exitCode expectedCode) () let private expectCodeWithStatisticsOrExit expectedCode command arguments (exitCode:int) stats :ProcessResults = if expectedCode<>exitCode then failwith(sprintf "%s %s exitted with code %d. Expected %d" command arguments exitCode expectedCode) stats let private returnExitCode _ _ (exitCode:int) _= exitCode let ignoreDataReceived(_msg:DataReceivedEventArgs) = () /// Execute a command let public Spawn command fmt = spawnDetailed ignoreDataReceived ignoreDataReceived (expectCodeOrRaise 0) command fmt /// Execute a command and expect a particular result code let public SpawnExpectCode expectCode command fmt = spawnDetailed ignoreDataReceived ignoreDataReceived (expectCodeOrRaise expectCode) command fmt /// Execute the command and return the exit code let public SpawnReturnExitCode command fmt = spawnDetailed ignoreDataReceived ignoreDataReceived returnExitCode command fmt /// Execute the command a return an array of textlines for the output and error. let public SpawnToTextLines command fmt = let outlock = obj() let captured = ref [] let capture (msg:DataReceivedEventArgs) = lock outlock (fun () -> captured := msg.Data :: !captured) let exitWithResult command arguments actualCode _ = actualCode, (!captured)|>List.rev|>Array.ofList spawnDetailed capture capture exitWithResult command fmt /// Execute a command and expect a particular result code. Return the processor statistics. let public SpawnWithStatisticsExpectCode expectCode command fmt = spawnDetailed ignoreDataReceived ignoreDataReceived (expectCodeWithStatisticsOrExit expectCode) command fmt let Batch batchText = let outlock = obj() let captured = ref [] let capture (msg:DataReceivedEventArgs) = lock outlock (fun () -> captured := msg.Data :: !captured) let exitWithResult command arguments actualCode _ = actualCode, (!captured)|>List.rev|>Array.ofList FilesystemHelpers.DoWithTempFile "$$temp-batch.cmd" (fun filename-> File.WriteAllText(filename,batchText) spawnDetailed capture capture exitWithResult filename "") /// Zip some files let Zip archiveName (files: string[]) = Spawn "zip.exe" "%s %s" archiveName (String.Join(" ", files)) /// Use robocopy to mirror a directory from one place to another /// NOTE: This command will delete files at the destination if they don't exist at the source let RoboCopyMirror source destination = let code = SpawnReturnExitCode "robocopy" "%s %s /mir" source destination match code with | 0 | 1 | 2 | 3 -> () // Success. | _ -> printfn "Robocopy %s %s /mir exitted with code %d. Expected 0, 1, 2 or 3." source destination code exit code /// Submit a specific set of checked out files to Tfs. let TfsSubmitSpecificFiles (files:string[]) comment = let files = String.Join(" ", files) // Submit the changes match SpawnToTextLines "tf_.exe" "submit %s /comment:\"%s\" /noprompt" files comment with | 0,_ -> printfn "Submited files: %s" files | 1,_ -> printfn "No changes detected in files: %s" files | errorCode,lines -> for line in lines do printfn "%s" line eprintfn "tf submit returned error code %d" errorCode namespace TestLibrary module LambdaCalculus = exception LambdaFailure of string module Syntax = type Binder = string type Expression = Variable of Binder | Lambda of (Binder * Expression) | Apply of (Expression * Expression) let rec stringOfExpression (e : Expression) : string = match e with | Variable x -> x | Lambda (x, e) -> "lambda " + x + " . " + stringOfExpression e | Apply (e1, e2) -> "(" + stringOfExpression e1 + ") @ (" + stringOfExpression e2 + ")" module Evaluation = open Syntax module Environment = type Env = Map exception EnvironmentFailure of string let add (g : Env)(x : Binder)(e : Expression) = Map.add x e g let lookup (g : Env)(x : Binder) = try Map.find x g with _ -> raise (EnvironmentFailure <| "No binding for `" + (stringOfExpression <| Variable x) + "`.") open Environment exception EvalFailure = LambdaFailure let rec eval (g : Env)(e : Expression) : Expression = match e with | Variable x -> lookup g x | Lambda _ -> e | Apply (e1, e2) -> match eval g e1 with | Lambda (x, e) -> eval (add g x (eval g e2)) e1 | _ -> raise <| EvalFailure "Unexpected operator in application; need a lambda." module OtherTests = type Point = { x : int y : int } let showPoint (p : Point) = sprintf "(%A,%A)" p.x p.y type Shape (initVertices : list) = let mutable vertices = initVertices let True _ = true let Id x = x // using this for everything is a bit artificial, but it ought to cover // quite a few patterns of members interacting member this.addFilterMap (pr : Point -> bool)(f : Point -> Point)(ps : list) : unit = match ps with | [] -> () | p :: ps -> if pr p then vertices <- (f p) :: vertices this.addFilterMap pr f ps member this.getVertices () = vertices member this.clearVertices () = vertices <- [] // new vertex member this.addVertex (p : Point) = this.addFilterMap True Id [p] // swallow another shape's vertices member this.subsume (s : Shape) = List.iter this.addVertex (s.getVertices ()) member this.map (f : Point -> Point) = let ps = this.getVertices () this.clearVertices () this.addFilterMap True f ps member this.transpose () = let swap p = { x = p.y y = p.x } this.map swap // okay, this is silly; just to test mutual recursion of members member this.fold (f : 'a -> Point -> 'a)(acc : 'a) = match this.getVertices () with | [] -> acc | p :: ps -> f (this.refold f acc) p member this.refold (f : 'a -> Point -> 'a)(acc : 'a) = let ps = this.getVertices () let set ps = this.clearVertices () this.subsume (new Shape (ps)) match ps with | [] -> () | _ :: ps -> set ps let res = this.fold f acc set ps acc static member combine (s1 : Shape)(s2 : Shape) : Shape = let ps1 = s1.getVertices () let ps2 = s2.getVertices () new Shape (ps1 @ (ps2 |> List.filter (fun x -> not <| List.exists ((=) x) ps1))) ././@LongLink0000644000000000000000000000015012266073264011646 Lustar rootrootfsharp-3.0.34/src/fsharp/unittests/UnittestsGeneratedInterfaceFileToTestGotoDefinition.ReservedName.fsifsharp-3.0.34/src/fsharp/unittests/UnittestsGeneratedInterfaceFileToTestGotoDefinition.ReservedName.0000775000175000017500000000615012260314606033040 0ustar chrischrisnamespace Internal.Utilities.Collections [] type internal ValueStrength<'T> = | Strong of 'T | Weak of System.WeakReference type internal AgedLookup<'TKey,'TValue> = class new : keepStrongly:int * areSame:('TKey * 'TKey -> bool) * ?onStrongDiscard:('TValue -> unit) * ?keepMax:int -> AgedLookup<'TKey,'TValue> member Clear : unit -> unit member Put : 'TKey * 'TValue -> unit member Remove : key:'TKey -> unit member TryGet : key:'TKey -> 'TValue option member TryGetKeyValue : key:'TKey -> ('TKey * 'TValue) option member TryPeekKeyValue : key:'TKey -> ('TKey * 'TValue) option member MostRecent : ('TKey * 'TValue) option end type internal MruCache<'TKey,'TValue> = class new : keepStrongly:int * compute:('TKey -> 'TValue) * areSame:('TKey * 'TKey -> bool) * ?isStillValid:('TKey * 'TValue -> bool) * ?areSameForSubsumption:('TKey * 'TKey -> bool) * ?logComputedNewValue:('TKey -> unit) * ?logUsedCachedValue:('TKey -> unit) * ?onDiscard:('TValue -> unit) * ?keepMax:int -> MruCache<'TKey,'TValue> member Clear : unit -> unit member Get : key:'TKey -> 'TValue member GetAvailable : key:'TKey -> 'TValue option member Remove : key:'TKey -> unit member SetAlternate : key:'TKey * value:'TValue -> unit member MostRecent : ('TKey * 'TValue) option end [] type internal List = class static member groupByFirst : l:('TKey * 'TValue) list -> ('TKey * 'TValue list) list when 'TKey : equality static member referenceDistinct : 'T list -> 'T list when 'T : not struct end namespace Internal.Utilities module internal FSharpEnvironment = begin val DotNetBuildString : string val FSharpBinaryMetadataFormatRevision : string val FSharpCoreLibRunningVersion : string option val RegOpenKeyExW : _hKey:System.UIntPtr * _lpSubKey:string * _ulOptions:uint32 * _samDesired:int * _phkResult:byref -> uint32 val RegQueryValueExW : _hKey:System.UIntPtr * _lpValueName:string * _lpReserved:uint32 * _lpType:byref * _lpData:System.IntPtr * _lpchData:byref -> uint32 val RegCloseKey : _hKey:System.UIntPtr -> uint32 module Option = begin val ofString : s:string -> string option end val maxPath : int val maxDataLength : int val KEY_WOW64_DEFAULT : int val KEY_WOW64_32KEY : int val HKEY_LOCAL_MACHINE : System.UIntPtr val KEY_QUERY_VALUE : int val REG_SZ : uint32 val GetDefaultRegistryStringValueViaDotNet : subKey:string -> string option val Get32BitRegistryStringValueViaPInvoke : subKey:string -> string option val is32Bit : bool val tryRegKey : subKey:string -> string option val tryCurrentDomain : unit -> string option val tryAppConfig : appConfigKey:string -> string option val BinFolderOfDefaultFSharpCompiler : string option val IsRunningOnNetFx45OrAbove : bool end fsharp-3.0.34/src/fsharp/unittests/TestLib.ProjectSystem.fs0000775000175000017500000011534112260314606022726 0ustar chrischrisnamespace UnitTests.TestLib.ProjectSystem open System open System.CodeDom open System.CodeDom.Compiler open System.Runtime.Serialization open System.Collections.Generic open System.Text.RegularExpressions open System.Diagnostics open Internal.Utilities.Debug open System.IO open System.Text open System.Xml.Linq open Salsa open Microsoft.Win32 open Microsoft.VisualStudio.FSharp.ProjectSystem open Microsoft.VisualStudio.Shell.Interop open Microsoft.Build.BuildEngine open Microsoft.Build.Execution open Microsoft.Build.Framework #nowarn "52" // The value has been copied to ensure the original is not mutated open NUnit.Framework open UnitTests.TestLib.Utils open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers type internal UnitTestingFSharpProjectNode(package:FSharpProjectPackage) as this = inherit FSharpProjectNode(package) do this.InteropSafeIVsHierarchy <- this this.InteropSafeIVsUIHierarchy <- this this.InteropSafeIVsProject <- this this.InteropSafeIVsSccProject2 <- this type AddReferenceDialogTab = | DotNetTab = 0 | BrowseTab = 1 // helper type for representing solution-explorer tree [] type Tree<'T> = | Tree of (*data*)'T * (*firstChild*)Tree<'T> * (*nextSibling*)Tree<'T> | Nil type TheTests() = static let Net35RefAssemPathOnThisMachine() = let key = @"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Microsoft .NET Framework 3.5 Reference Assemblies" let hklm = Registry.LocalMachine let rkey = hklm.OpenSubKey(key) rkey.GetValue("") :?> string static let ANYTREE = Tree("",Nil,Nil) ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore static let DefaultBuildActionOfFilename(filename) : Salsa.BuildAction = match Path.GetExtension(filename) with | ".fsx" -> Salsa.BuildAction.None | ".resx" | ".resources" -> Salsa.BuildAction.EmbeddedResource | _ -> Salsa.BuildAction.Compile static let GetReferenceContainerNode(project : ProjectNode) = let l = new List() project.FindNodesOfType(l) l.[0] ///////////////////////////////// /// Called per test [] member this.Setup() = () [] member this.TearDown() = // help find leaks per-test System.GC.Collect() System.GC.WaitForPendingFinalizers() #if DEBUG printfn "TearDown..." if Microsoft.VisualStudio.FSharp.LanguageService.TaskReporter.AliveCount <> 0 then Debug.Assert(false, sprintf "There are %d TaskReporters still alive" Microsoft.VisualStudio.FSharp.LanguageService.TaskReporter.AliveCount) #endif () ///////////////////////////////// /// helpers static member AssertMatches (r : Regex) (s:string) = if not (r.IsMatch(s)) then let msg = sprintf "Expected regex '%s' to match '%s'." (r.ToString()) s printfn "%s" msg Assert.Fail(msg) // Like AssertMatches, but runs for every prefix of regex up to each occurence of 'c' // Is helpful so that, if long regex match fails, you see first prefix that fails static member HelpfulAssertMatches (c : char) (regexStr : string) (s:string) = let mutable i = regexStr.IndexOf(c, 0) while i <> -1 do let r = regexStr.Substring(0,i) let regex = new Regex(r) TheTests.AssertMatches regex s i <- regexStr.IndexOf(c, i+1) TheTests.AssertMatches (new Regex(regexStr)) s static member PrintHierarchy(node : HierarchyNode) = let rec nSpaces n = if n = 0 then "" else " " + nSpaces (n-1) let rec Print(node : HierarchyNode, level : int) = printfn "%s%s" (nSpaces level) node.Caption if node.FirstChild <> null then Print(node.FirstChild, level + 1) if node.NextSibling <> null then Print(node.NextSibling, level) Print(node, 0) static member internal CreateProject(filename : string, forceUTF8 : string, configChangeNotifier, serviceProvider) = UIStuff.SetupSynchronizationContext() let buildEngine = Utilities.InitializeMsBuildEngine(null) let buildProject = Utilities.InitializeMsBuildProject(buildEngine, filename) let package = new FSharpProjectPackage() let project = new UnitTestingFSharpProjectNode(package) try project.SetSite(serviceProvider) |> ignore project.BuildProject <- buildProject let _ = project.BaseURI // This property needs to be touched at least once while the .BuildProject is populated let mutable cancelled = 0 let mutable guid = Guid.NewGuid() printfn "about to load .fsproj" project.Load(filename, null, null, 2u, &guid, &cancelled) printfn "loaded" let slfpe = new SolutionListenerForProjectEvents(project.Site) (project :> IProjectEventsProvider).ProjectEventsProvider <- (slfpe :> IProjectEvents) slfpe.OnAfterOpenProject((project :> IVsHierarchy), 0) |> ignore MSBuildProject.SetGlobalProperty(project.BuildProject, "UTF8Output", forceUTF8) project with | e -> project.Close() |> ignore reraise() static member internal CreateProject(filename : string) = let sp, configChangeNotifier = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let p = TheTests.CreateProject(filename, "false", configChangeNotifier, sp) // ensure that vs-style encoding is off p static member internal CreateProjectWithUTF8Output(filename : string) = let sp, configChangeNotifier = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier() let p = TheTests.CreateProject(filename, "true", configChangeNotifier, sp) p static member internal FindNodeWithCaption(project : UnitTestingFSharpProjectNode, caption) = let node = project.FirstChild let rec TryFind (n : HierarchyNode) = if n = null then None elif n.Caption = caption then Some(n) else match TryFind(n.FirstChild) with | None -> TryFind(n.NextSibling) | x -> x match TryFind node with | Some(x) -> x | None -> failwith "did not find node with caption %s" caption static member MoveDown(node : HierarchyNode) = match node with | :? FSharpFileNode | :? FSharpFolderNode -> TheTests.EnsureMoveDownEnabled(node) node.ExecCommandOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveDownCmd.ID, uint32 0, new IntPtr(0), new IntPtr(0)) |> ignore | _ -> failwith "unexpected node type" () static member MoveUp(node : HierarchyNode) = match node with | :? FSharpFileNode | :? FSharpFolderNode -> TheTests.EnsureMoveUpEnabled(node) node.ExecCommandOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveUpCmd.ID, uint32 0, new IntPtr(0), new IntPtr(0)) |> ignore | _ -> failwith "unexpected node type" () static member EnsureMoveDownDisabled(node : HierarchyNode) = // Move Down appears on menu, but is greyed out let mutable qsr = new QueryStatusResult() ValidateOK(node.QueryStatusOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveDownCmd.ID, 0n, &qsr)) let expected = QueryStatusResult.SUPPORTED AssertEqual expected qsr static member EnsureMoveDownEnabled(node : HierarchyNode) = // Move Down appears on menu, and can be clicked let mutable qsr = new QueryStatusResult() ValidateOK(node.QueryStatusOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveDownCmd.ID, 0n, &qsr)) let expected = QueryStatusResult.SUPPORTED ||| QueryStatusResult.ENABLED AssertEqual expected qsr static member EnsureMoveUpDisabled(node : HierarchyNode) = // Move Up appears on menu, but is greyed out let mutable qsr = new QueryStatusResult() ValidateOK(node.QueryStatusOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveUpCmd.ID, 0n, &qsr)) let expected = QueryStatusResult.SUPPORTED AssertEqual expected qsr static member EnsureMoveUpEnabled(node : HierarchyNode) = // Move Up appears on menu, and can be clicked let mutable qsr = new QueryStatusResult() ValidateOK(node.QueryStatusOnNode(FSharpProjectFileConstants.guidFSharpProjectCmdSet, uint32 FSharpProjectFileConstants.MoveUpCmd.ID, 0n, &qsr)) let expected = QueryStatusResult.SUPPORTED ||| QueryStatusResult.ENABLED AssertEqual expected qsr static member SimpleFsprojText(compileItems : string list, references : string list, other : string) = TheTests.FsprojTextWithProjectReferences(compileItems, references, [], other) static member SimpleFsprojTextOtherFlags(compileItems : string list, references : string list, otherflags : string, other : string) = TheTests.FsprojTextWithProjectReferencesAndOtherFlags(compileItems, references, [], otherflags, other) static member public FsprojTextWithProjectReferences(compileItems : string list, references : string list, projectReferences : string list, other : string) = let vsops = fst (Salsa.Salsa.Models.MSBuild()) let references = references |> List.map (fun r->r,false) let text = vsops.CreatePhysicalProjectFileInMemory [for i in compileItems -> (i,DefaultBuildActionOfFilename i, None)] references projectReferences [] [] null null other null printfn "%s" text text static member public FsprojTextWithProjectReferencesAndOtherFlags(compileItems : string list, references : string list, projectReferences : string list, otherflags : string, other : string, targetFramework : string) = let vsops = fst (Salsa.Salsa.Models.MSBuild()) let references = references |> List.map (fun r->r,false) let text = vsops.CreatePhysicalProjectFileInMemory [for i in compileItems -> (i,DefaultBuildActionOfFilename i, None)] references projectReferences [] [] null otherflags other targetFramework printfn "%s" text text static member public FsprojTextWithProjectReferencesAndOtherFlags(compileItems : string list, references : string list, projectReferences : string list, otherflags : string, other : string) = TheTests.FsprojTextWithProjectReferencesAndOtherFlags(compileItems, references, projectReferences, otherflags, other, null) static member AssertSameTree(expectation : Tree, node : HierarchyNode) = printfn "actual hierarchy in solution explorer:" TheTests.PrintHierarchy(node) TheTests.AssertSameTreeHelper(expectation, node) static member AssertSameTreeHelper(expectation : Tree, node : HierarchyNode) = match expectation with | Tree _ as x when Object.Equals(x, ANYTREE) -> () | Nil -> AssertEqual null node | Tree(name,firstChild,nextSibling) -> AssertEqual name node.Caption TheTests.AssertSameTreeHelper(firstChild, node.FirstChild) TheTests.AssertSameTreeHelper(nextSibling, node.NextSibling) () static member AssertSimilarXml(expectation : XElement, actual : XElement) = // compares element/attribute structure, LocalName, and Value, but ignores Namespace // can expect attribute value "ANY", which matches anything let rec Match(expectation : XElement, actual : XElement, outerContext : string) = let TryLookup(d : IDictionary<_,_>, key : 'k) = let mutable value = Unchecked.defaultof<'v> if d.TryGetValue(key, &value) then Some value else None let initialContext = sprintf "%sWhile expecting '\n%s\n' to match '\n%s\n', " outerContext (expectation.ToString(SaveOptions.None)) (actual.ToString(SaveOptions.None)) let Err s = sprintf "%sfound error:\n%s" initialContext s if expectation.Name.LocalName <> actual.Name.LocalName then Assert.Fail(Err <| sprintf "Expected element name '%s' but got '%s'" expectation.Name.LocalName actual.Name.LocalName) let exAttrs = expectation.Attributes() |> Seq.map (fun a -> a.Name.LocalName, a.Value) |> dict let actAttrs = actual.Attributes() |> Seq.map (fun a -> a.Name.LocalName, a.Value) |> dict if exAttrs.Count <> actAttrs.Count then Assert.Fail(Err <| sprintf "Expected '%d' attributes, but found '%d'" exAttrs.Count actAttrs.Count) for kvp in exAttrs do match TryLookup(actAttrs, kvp.Key) with | None -> Assert.Fail(Err <| sprintf "Expected attribute with localname '%s', but none present" kvp.Key) | Some(v) -> if kvp.Value <> "ANY" && kvp.Value <> v then Assert.Fail(Err <| sprintf "Expected attribute '%s' to have value '%s', but actually had '%s'" kvp.Key kvp.Value v) let exLen = Seq.length (expectation.Elements()) let actLen = Seq.length (actual.Elements()) if exLen <> actLen then Assert.Fail(Err <| sprintf "Expected '%d' sub-elements, but found '%d'" exLen actLen) (expectation.Elements(), actual.Elements()) ||> Seq.iter2 (fun x y -> Match(x,y,initialContext+"\n")) Match(expectation, actual, "") static member internal GetCompileItems (project : UnitTestingFSharpProjectNode) = let MakeRelativePath (file : string) = let projDir = project.ProjectFolder + "\\" if file.StartsWith(projDir) then file.Substring(projDir.Length) else file project.GetCompileItems() |> Array.toList |> List.map MakeRelativePath member internal this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifierDispose(dispose : bool, compileItems : string list, references : string list, other : string, targetFramework : string, f : UnitTestingFSharpProjectNode -> _ -> string -> unit) = UIStuff.SetupSynchronizationContext() DoWithTempFile "Test.fsproj" (fun file -> File.AppendAllText(file, TheTests.FsprojTextWithProjectReferencesAndOtherFlags(compileItems, references, [], null, other, targetFramework)) let sp, cnn = match targetFramework with | "v4.0" -> VsMocks.MakeMockServiceProviderAndConfigChangeNotifier40() | "v3.5" -> VsMocks.MakeMockServiceProviderAndConfigChangeNotifier35() | "v3.0" -> VsMocks.MakeMockServiceProviderAndConfigChangeNotifier30() | "v2.0" -> VsMocks.MakeMockServiceProviderAndConfigChangeNotifier20() | null -> VsMocks.MakeMockServiceProviderAndConfigChangeNotifier40() | _ -> failwithf "unexpected targetFramework %s" targetFramework let project = TheTests.CreateProject(file, "false", cnn, sp) try f project cnn file finally if dispose then project.Close() |> ignore ) member internal this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifierDispose(dispose : bool, compileItems : string list, references : string list, other : string, f : UnitTestingFSharpProjectNode -> _ -> string -> unit) = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifierDispose(dispose, compileItems, references, other, null, f) member internal this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(compileItems : string list, references : string list, other : string, targetFramework : string, f : UnitTestingFSharpProjectNode -> _ -> string -> unit) = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifierDispose(true, compileItems, references, other, targetFramework, f) member internal this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(compileItems : string list, references : string list, other : string, f : UnitTestingFSharpProjectNode -> _ -> string -> unit) = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(compileItems, references, other, null, f) member internal this.MakeProjectAndDoWithProjectFile(compileItems : string list, references: string list, other : string, targetFramework : string, f : UnitTestingFSharpProjectNode -> string -> unit) = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(compileItems, references, other, targetFramework, fun proj _ s -> f proj s) member internal this.MakeProjectAndDoWithProjectFile(compileItems : string list, references: string list, other : string, f : UnitTestingFSharpProjectNode -> string -> unit) = this.MakeProjectAndDoWithProjectFile(compileItems, references, other, null, f) /// Create a project with the given "compileItems" and "other", then /// call "f" on that project while the project file still exists on disk. member internal this.MakeProjectAndDo(compileItems : string list, references : string list, other : string, f : UnitTestingFSharpProjectNode -> unit) = this.MakeProjectAndDo(compileItems, references, other, null, f) member internal this.MakeProjectAndDo(compileItems : string list, references : string list, other : string, targetFramework : string, f : UnitTestingFSharpProjectNode -> unit) = this.MakeProjectAndDoWithProjectFile(compileItems, references, other, targetFramework, fun proj _ -> f proj) /// Create a project with the given "compileItems" and "other". member internal this.MakeProject(compileItems : string list, references : string list, other : string) = let project = ref (Unchecked.defaultof) this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifierDispose(false, compileItems, references, other, (fun p _ _ -> project := p )) !project member this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems : string list, other : string, expectations : Tree) = use project = this.MakeProject(compileItems, [], other) :> HierarchyNode let node = project.FirstChild TheTests.AssertSameTree(expectations, node) () member internal this.EnsureCausesNotification(project, code) = let ipsf = project :> Microsoft.VisualStudio.FSharp.LanguageService.IProvideProjectSite let ips = ipsf.GetProjectSite() let changed = ref false let handle = ips.AdviseProjectSiteChanges("EnsureCausesNotificationTest", new Microsoft.VisualStudio.FSharp.LanguageService.AdviseProjectSiteChanges(fun () -> changed := true)) code() AssertEqual true (!changed) static member MsBuildCompileItems(project : Microsoft.Build.Evaluation.Project) = [for bi in project.Items do if bi.ItemType = "Compile" then yield bi.EvaluatedInclude] member this.MSBuildProjectBoilerplate (outputType : string) : string = let template = @" Debug AnyCPU {0} Blah Blah v3.5 512 Blah true full false bin\Debug\ DEBUG;TRACE prompt 3 " String.Format(template, outputType) member this.MSBuildProjectMulitplatBoilerplate (outputType : string) : string = let template = @" Debug AnyCPU {0} Blah Blah v3.5 512 Blah x86 true full false bin\Debug\ DEBUG;TRACE prompt 3 true full false bin\Debug\ DEBUG;TRACE prompt 3 " String.Format(template, outputType) member this.MSBuildProjectMultiConfigBoilerplate (configs : (string*string) list): string = let template = @" Debug AnyCPU Library Blah Blah v3.5 512 Blah " let sb = new StringBuilder(template) for (configName,customStr) in configs do let platTemplate = @" x86 {1} bin\{0}\ AnyCPU {1} bin\{0}\ " String.Format(platTemplate, configName, customStr) |> sb.Append |> ignore sb.ToString() member this.MSBuildProjectMultiPlatform (platforms : (string*string) list,?defaultPlatform): string = let platform = defaultArg defaultPlatform "AnyCPU" let template = @" Debug {0} Library Blah Blah v3.5 512 Blah " let sb = new StringBuilder(String.Format(template,platform)) for (platformName,customStr) in platforms do let platTemplate = @" bin\Release\ {1} {0} bin\Debug\ {1} {0} " String.Format(platTemplate, platformName, customStr) |> sb.Append |> ignore sb.ToString() member internal this.CheckConfigNames (project:UnitTestingFSharpProjectNode, expectedNames : string[])= let cfgNames = Array.create expectedNames.Length "" let actual = [| 0u |] project.ConfigProvider.GetCfgNames(uint32 cfgNames.Length, cfgNames, actual) |> AssertEqual VSConstants.S_OK AssertEqualMsg expectedNames cfgNames "List of config names is different" AssertEqualMsg expectedNames.Length (int actual.[0]) "List of config names is ok, but reported lengths disagree" member internal this.CheckPlatformNames(project:UnitTestingFSharpProjectNode, expectedNames : string[])= let platformNames = Array.create expectedNames.Length "" let actual = [| 0u |] project.ConfigProvider.GetPlatformNames(uint32 platformNames.Length, platformNames, actual) |> AssertEqual VSConstants.S_OK AssertEqualMsg expectedNames platformNames "List of platform names is different" AssertEqualMsg expectedNames.Length (int actual.[0]) "List of platfrom names is ok, but reported lengths disagree" member internal this.HelperEnsureAtLeastOne projFileBoilerplate expectedConfigs expectedPlatforms = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], projFileBoilerplate, (fun project projFileName -> this.CheckPlatformNames(project, expectedPlatforms) this.CheckConfigNames(project, expectedConfigs) )) and (*type*) MSBuildItem = | FolderItem of string // Include="relativeDir" | CompileItem of string // Include="relDir\filename.fs" | LinkedCompileItem of (*include:*)string * (*link:*)string // Include="relDir\filename" Link:nameInSolnExplorer | OtherItem of (*name:*)string * (*include:*)string // override this.ToString() = match this with | FolderItem(s) -> sprintf @"" s | CompileItem(s) -> sprintf @"" s | LinkedCompileItem(inc,n) -> sprintf @"%s" inc n | OtherItem(name,inc) -> sprintf @"<%s Include=""%s"" />" name inc member this.AsRegexString() = match this with | FolderItem(s) -> sprintf @"\s*\s*" (Regex.Escape s) | CompileItem(s) -> sprintf @"\s*\s*" (Regex.Escape s) | LinkedCompileItem(inc,n) -> sprintf @"\s*\s*%s\s*\s*" (Regex.Escape inc) (Regex.Escape n) | OtherItem(name,inc) -> sprintf @"\s*<%s Include=""%s"" />\s*" (Regex.Escape name) (Regex.Escape inc) member this.Caption() = // how will appear in solution explorer match this with | FolderItem(s) -> // folder might render as multiple nodes for each path part, return caption for final one Debug.Assert(s.EndsWith("\\"), "folders should end with slash") let pathParts = s.Split([| '\\' |], StringSplitOptions.RemoveEmptyEntries) pathParts.[pathParts.Length - 1] | CompileItem(s) -> Path.GetFileName(s) | LinkedCompileItem(inc,n) -> Path.GetFileName(n) | OtherItem(name,inc) -> Path.GetFileName(inc) member this.IntoFolder(folder : string) = // return new copy of item in the folder Debug.Assert(folder.EndsWith("\\"), "folders should end with slash") match this with | FolderItem(s) -> Debug.Assert(s.EndsWith("\\"), "folders should end with slash") FolderItem(folder + s) | CompileItem(s) -> CompileItem(folder + s) | LinkedCompileItem(inc,n) -> LinkedCompileItem(inc, folder + n) | OtherItem(name,inc) -> OtherItem(name, folder + inc) and (*type*) MSBuildItems = | MSBuildItems of list override this.ToString() = match this with | MSBuildItems(l) -> "\n" + (l |> List.map (fun x -> x.ToString()) |> List.fold (fun acc x -> sprintf " %s%s\n" acc x) "") + "" member this.AsRegexString() = match this with | MSBuildItems(l) -> "\s*\s*" + (l |> List.map (fun x -> x.AsRegexString()) |> List.fold (fun acc x -> acc + x) "") + "\s*\s*" member this.Items() = match this with | MSBuildItems(l) -> l (* when first click to start drag public override int GetDropInfo(out uint pdwOKEffects, out IOleDataObject ppDataObject, out IDropSource ppDropSource) ensure pdwOKEffects are right and return S_OK when drag onto new entity public override int DragEnter(IOleDataObject pDataObject, uint grfKeyState, uint itemid, ref uint pdwEffect) ensure is same thing(pDataObj, itemid) being dragged, pdwEffect is properly updated not sure how differs from DragEnter... public override int DragOver(uint grfKeyState, uint itemid, ref uint pdwEffect) ensure right pdwEffect at end of drag... public override int OnBeforeDropNotify(IOleDataObject o, uint dwEffect, out int fCancelDrop) can prompt to save dirty dragged items... nothing to verify? public override int OnDropNotify(int fDropped, uint dwEffects) unsure... public override int Drop(IOleDataObject pDataObject, uint grfKeyState, uint itemid, ref uint pdwEffect) unsure... /*internal, but public for FSharp.Project.dll*/ public DropDataType ProcessSelectionDataObject(IOleDataObject dataObject, HierarchyNode targetNode) called by Drop, does the actual action of adding dropped files to new location public override int DragLeave() nothing to ensure, but call if leave hierarchy or drag is canceled or finishes called at various times: public /*protected, but public for FSharp.Project.dll*/ override HierarchyNode GetDragTargetHandlerNode() ensure FSharpFileNode does right thing, whatever that may be, same for folder, project /*internal, but public for FSharp.Project.dll*/ public static DropDataType QueryDropDataType(IOleDataObject pDataObject) maybe ref (shortcut) versus value (real file/dir on disk)? /*internal, but public for FSharp.Project.dll*/ public DropEffect QueryDropEffect(DropDataType dropDataType, uint grfKeyState) given keyboard and object type, return right effect public /*protected internal, but public for FSharp.Project.dll*/ virtual bool CanTargetNodeAcceptDrop(uint itemId) can't drop onto 'references' *) module LanguageServiceExtension = open UnitTests.TestLib.LanguageService open Salsa.Salsa type internal ProjInfo() = let mutable proj = Unchecked.defaultof let mutable createProjectHookIsEnabled = true member this.Project with get() = proj and set(x) = proj <- x member this.CreateProjectHookIsEnabled with get() = createProjectHookIsEnabled and set(x) = createProjectHookIsEnabled <- x let internal ProjectSystem = let msbuild,hooks = Models.MSBuild() let projectDict = new Dictionary() { msbuild with OutOfConeFilesAreAddedAsLinks=true; SupportsOutputWindowPane=true; AddAssemblyReference=(fun (project, assem, specificVersion) -> let projInfo = projectDict.[project] let referencesFolder = projInfo.Project.FindChild(ReferenceContainerNode.ReferencesNodeVirtualName) :?> ReferenceContainerNode let assem = // mimic logic in ReferenceResolution.fs:MSBuildResolver.Resolve() if Path.IsPathRooted(assem) then assem elif not(assem.Contains("\\") || assem.Contains("/")) then assem else Path.Combine(projInfo.Project.ProjectFolder, assem) let assem, isFullPath = if Path.IsPathRooted(assem) then assem, true elif assem.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || assem.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) then // some unit tests pass relative paths, make them absolute Path.Combine(projInfo.Project.ProjectFolder, assem), true else assem, false // assem is a simple/fusion name of an assembly let node = referencesFolder.CreateAssemblyReferenceNode(assem, Microsoft.VisualStudio.FSharp.ProjectSystem.AddReferenceDialogTab.BrowseTab, isFullPath) if node <> null then // node may be null if reference was to non-existent file if node.AddReference() then // still need to add it to underlying representation (SimpleOpenProject) so that // subsequent Reload() calls will have right info projInfo.CreateProjectHookIsEnabled <- false msbuild.AddAssemblyReference(project, node.Url, specificVersion) projInfo.CreateProjectHookIsEnabled <- true ()); CreateProject=(fun (solution,projectBaseName)-> let configChangeNotifier = ref None let projInfo = new ProjInfo() let NULL = Unchecked.defaultof let newHooks = { // Note: CreateProjectHook will callback MakeHierarcyHook and then InitializeProjectHook CreateProjectHook = fun (projectFilename:string) (files:(string*BuildAction*string option) list) (references:(string*bool) list) (projReferences:string list) (disabledWarnings:string list) (defines:string list) (versionFile:string) (otherFlags:string) (otherMSBuildStuff:string) (targetFrameworkVersion : string) -> if projInfo.CreateProjectHookIsEnabled then hooks.CreateProjectHook projectFilename files references projReferences disabledWarnings defines versionFile otherFlags otherMSBuildStuff targetFrameworkVersion if projInfo.Project = NULL then () else // REVIEW: this is a workaround to get everything working for now; ideally we want to implement the VS gestures below // so that they really happen in the project system, rather than just poking the .fsproj file and then doing // a 'reload' each time. But for now, this is good. projInfo.Project.Reload() InitializeProjectHook = (fun(openProject) -> hooks.InitializeProjectHook(openProject) projectDict.Add(openProject, projInfo)) MakeHierarchyHook = fun projdir fullname projectname ccn serviceProvider -> if projInfo.Project = NULL then let p = TheTests.CreateProject(fullname, "false", ccn, serviceProvider) projInfo.Project <- p configChangeNotifier := Some(fun s -> ccn((p :> IVsHierarchy),s)) else failwith "oops, did not expect MakeHierarchy to be called more than once" projInfo.Project :> IVsHierarchy AddFileToHierarchyHook = fun filename hier -> () BuildHook = fun projFileName target vsOutputWindowPane -> if projInfo.Project = NULL then failwith "tried to build not-yet-created project" else let target = if target <> null then target else "Build" projInfo.Project.BuildToOutput(target,vsOutputWindowPane) |> ignore // force build through project system for code coverage hooks.BuildHook projFileName target vsOutputWindowPane // use MSBuild to build and also return MainAssembly value GetMainOutputAssemblyHook = hooks.GetMainOutputAssemblyHook SaveHook = fun() -> if projInfo.Project = NULL then () else projInfo.Project.Save(null, 1, 0u) |> ignore DestroyHook = fun () -> if projInfo.Project = NULL then () else projInfo.Project.Close () |> ignore match projectDict |> Seq.tryFind(fun (KeyValue(k,v)) -> obj.ReferenceEquals(v, projInfo)) with | Some(KeyValue(k,v)) -> projectDict.Remove(k) |> ignore | None -> failwith "uh-oh, where was it in the dict?" projInfo.Project <- NULL ModifyConfigurationAndPlatformHook = fun s -> match !configChangeNotifier with | Some(ccn) -> ccn(s) | None -> () } msbuild.CreateProjectWithHooks(solution,newHooks,projectBaseName)); } fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.ProjectItems.fs0000775000175000017500000001773712260314606025103 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem open System open System.IO open NUnit.Framework open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.ProjectSystem open Microsoft.VisualStudio.FSharp.ProjectSystem [] type ProjectItems() = inherit TheTests() //TODO: look for a way to remove the helper functions static let ANYTREE = Tree("",Nil,Nil) [] member public this.``RemoveAssemblyReference.NoIVsTrackProjectDocuments2Events``() = this.MakeProjectAndDo(["file.fs"], ["System.Numerics"],"", (fun project -> let listener = project.Site.GetService(typeof) :?> Salsa.VsMocks.IVsTrackProjectDocuments2Listener project.ComputeSourcesAndFlags() let containsSystemNumerics () = project.GetCompileFlags() |> Seq.exists (fun f -> f.IndexOf("System.Numerics") <> -1) let wasCalled = ref false Assert.IsTrue(containsSystemNumerics (), "Project should contains reference to System.Numerics") let refContainer = project.GetReferenceContainer() let reference = refContainer.EnumReferences() |> Seq.find(fun r -> r.SimpleName = "System.Numerics") ( use _guard = listener.OnAfterRemoveFiles.Subscribe(fun _ -> wasCalled := true) reference.Remove(false) ) Assert.IsFalse(!wasCalled, "No events from IVsTrackProjectDocuments2 are expected") Assert.IsFalse(containsSystemNumerics(), "Project should not contains reference to System.Numerics") )) [] member public this.``AddNewItem.ItemAppearsAtBottomOfFsprojFile``() = this.MakeProjectAndDo(["orig.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "a.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close project.MoveNewlyAddedFileToBottomOfGroup (fun () -> project.AddNewFileNodeToHierarchy(project,absFilePath) |> ignore) let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig.fs"; "a.fs"] msbuildInfo finally File.Delete(absFilePath) )) [] member public this.``AddNewItem.ToAFolder.ItemAppearsAtBottomOfFolder``() = this.MakeProjectAndDo(["orig.fs"; "Folder\\f1.fs"; "Folder\\f2.fs"; "final.fs"], [], "", (fun project -> let dir = Path.Combine(project.ProjectFolder, "Folder") Directory.CreateDirectory(dir) |> ignore let absFilePath = Path.Combine(dir, "a.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close project.MoveNewlyAddedFileToBottomOfGroup (fun () -> project.AddNewFileNodeToHierarchy(project.FindChild("Folder"),absFilePath) |> ignore) let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig.fs"; "Folder\\f1.fs"; "Folder\\f2.fs"; "Folder\\a.fs"; "final.fs"] msbuildInfo finally File.Delete(absFilePath) )) [] member public this.``AddNewItem.ItemAppearsAtBottomOfFsprojFileEvenIfUnknownItemWithSameName``() = this.MakeProjectAndDo([], [], @" ", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "a.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close project.MoveNewlyAddedFileToBottomOfGroup (fun () -> project.AddNewFileNodeToHierarchy(project,absFilePath) |> ignore) let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig.fs"; "a.fs"] msbuildInfo finally File.Delete(absFilePath) )) [] member public this.``AddNewItemBelow.ItemAppearsInRightSpot``() = this.MakeProjectAndDo(["orig1.fs"; "orig2.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "new.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close let orig1 = TheTests.FindNodeWithCaption(project, "orig1.fs") project.MoveNewlyAddedFileBelow (orig1, fun () -> project.AddNewFileNodeToHierarchy(project,absFilePath) |> ignore) // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig1.fs"; "new.fs"; "orig2.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("orig1.fs", Nil, Tree("new.fs", Nil, Tree("orig2.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) [] member public this.``AddNewItemAbove.ItemAppearsInRightSpot.Case1``() = this.MakeProjectAndDo(["orig1.fs"; "orig2.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "new.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close let orig2 = TheTests.FindNodeWithCaption(project, "orig2.fs") project.MoveNewlyAddedFileAbove (orig2, fun () -> project.AddNewFileNodeToHierarchy(project,absFilePath) |> ignore) // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig1.fs"; "new.fs"; "orig2.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("orig1.fs", Nil, Tree("new.fs", Nil, Tree("orig2.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) [] member public this.``AddNewItemAbove.ItemAppearsInRightSpot.Case2``() = this.MakeProjectAndDo(["orig1.fs"; "orig2.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "new.fs") try File.AppendAllText(absFilePath, "#light") // Note: this is not the same code path as the UI, but it is close let orig1 = TheTests.FindNodeWithCaption(project, "orig1.fs") project.MoveNewlyAddedFileAbove (orig1, fun () -> project.AddNewFileNodeToHierarchy(project,absFilePath) |> ignore) // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["new.fs"; "orig1.fs"; "orig2.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("new.fs", Nil, Tree("orig1.fs", Nil, Tree("orig2.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) fsharp-3.0.34/src/fsharp/unittests/Unittests.dll.vs2010.config0000775000175000017500000010311212260314606023102 0ustar chrischris
fsharp-3.0.34/src/fsharp/unittests/Unittests.dll.vs2008.config0000775000175000017500000000257512260314606023124 0ustar chrischris
fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.MultiTargeting.fs0000775000175000017500000002260512260314606025420 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem open System open System.Collections.Generic open System.IO open System.Reflection open System.Text.RegularExpressions open System.Xml.Linq open NUnit.Framework open Salsa open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem open Microsoft.VisualStudio.FSharp.ProjectSystem [] type MultiTargeting() = inherit TheTests() // Multitargeting tests. // For these test cases, we basically test adding a reference and checking the icon state. // It's worth pointing out that while we need a valid assembly, the version of the assembly // is returned by the VsTargetFrameworkAssemblies service. Therefore, to test, we provide // a mock that returns the requested version, and ignore the real version of the assembly. member private this.prepTest(projFile) = let dirName = Path.GetDirectoryName(projFile) let libDirName = Directory.CreateDirectory(Path.Combine(dirName, "lib")).FullName let codeBase = (new Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath |> Path.GetDirectoryName let refLibPath = Path.Combine(libDirName, "FSharp.Core.Unittests.dll") File.Copy(Path.Combine(codeBase, "FSharp.Core.Unittests.dll"), refLibPath) File.AppendAllText(projFile, TheTests.FsprojTextWithProjectReferencesAndOtherFlags([], [refLibPath], [], null, "", "v2.0")) refLibPath [] member public this.``Multitargeting.CheckIconForMismatchedAssemblyReference`` () = DoWithTempFile "Test.fsproj" (fun projFile -> let sp, ccn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier40() let refLibPath = this.prepTest(projFile) use project = TheTests.CreateProject(projFile, "true", ccn, sp) let l = new List() project.FindNodesOfType(l) Assert.AreEqual(1, l.Count) Assert.AreEqual(refLibPath, l.[0].Url) Assert.AreEqual(refLibPath, l.[0].Caption) let ref = l.[0] Assert.AreEqual(true, ref.CanShowDefaultIcon()) ) [] member public this.``Multitargeting.CheckIconForMatchedAssemblyReference20`` () = DoWithTempFile "Test.fsproj" (fun projFile -> let sp, ccn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier20() let refLibPath = this.prepTest(projFile) use project = TheTests.CreateProject(projFile, "true", ccn, sp) let l = new List() project.FindNodesOfType(l) Assert.AreEqual(1, l.Count) Assert.AreEqual(refLibPath, l.[0].Url) Assert.AreEqual(refLibPath, l.[0].Caption) let ref = l.[0] Assert.AreEqual(true, ref.CanShowDefaultIcon()) ) [] member public this.``Multitargeting.DetermineRuntimeAndSKU`` () = DoWithTempFile "Test.fsproj" (fun projFile -> let sp, ccn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier40() let refLibPath = this.prepTest(projFile) use project = TheTests.CreateProject(projFile, "true", ccn, sp) let validate (fn : System.Runtime.Versioning.FrameworkName) eR eS = let (name, runtime, sku) = project.DetermineRuntimeAndSKU(fn.ToString()) Assert.AreEqual(eR, runtime) Assert.AreEqual(eS, sku) validate (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4, 0))) "v4.0" ".NETFramework,Version=v4.0" validate (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2, 0))) "v2.0.50727" null ) [] member public this.``Multitargeting.AppConfigNoStartupNode`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", "sku") Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) [] member public this.``Multitargeting.AppConfigVersionExistsAddNewSku`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", "sku") Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) [] member public this.``Multitargeting.AppConfigVersionExistsReplaceSku`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", "sku") Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) [] member public this.``Multitargeting.AppConfigVersionExistsRemoveSku`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", null) Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) [] member public this.``Multitargeting.AppConfigVersionReplaceOldRuntime`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", "sku") Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) Assert.IsFalse(root.ToString().Contains("")) [] member public this.``Multitargeting.AppConfigVersionReplaceOldRuntimes`` () = let root = XElement.Parse("") let dirty = LangConfigFile.PatchUpXml(root, "version", "sku") Assert.IsTrue(dirty) Assert.IsTrue(root.ToString().Contains("")) Assert.IsFalse(root.ToString().Contains("")) Assert.IsFalse(root.ToString().Contains("")) [] member public this.``Multitargeting.TestFrameworkNameToVersionString`` () = let validatePair name str = let res = HierarchyNode.GetFrameworkVersionString(name) Assert.AreEqual(str, res) validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4,0))) "v4.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4,0,5))) "v4.0.5" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4,0,256))) "v4.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4,0,50727))) "v4.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,50727,0))) "v2.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,50727,5))) "v2.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,5,5))) "v2.0.5" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,0))) "v2.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,0,0))) "v2.0" validatePair (new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(2,0,0,1))) "v2.0" (* [] member public this.``Multitargeting.AddAppConfigIfRetargetTo40Full`` () = DoWithTempFile "Test.fsproj" (fun projFile -> let sp, ccn = VsMocks.MakeMockServiceProviderAndConfigChangeNotifier20() // add mock service for SLocalRegistry so that CreateInstance on it will return a text buffer sp.AddService (typeof, box(VsMocks.vsLocalRegistry (fun () -> VsMocks.Vs.MakeTextLines())), false) let refLibPath = this.prepTest(projFile) use project = TheTests.CreateProject(projFile, "true", ccn, sp) let fn = new System.Runtime.Versioning.FrameworkName(".NETFramework", new System.Version(4, 0)) project.FixupAppConfigOnTargetFXChange(fn.ToString()) |> ignore let appFile = Path.Combine((Path.GetDirectoryName projFile), "app.config") let appText = System.IO.File.ReadAllText(appFile) Assert.IsTrue(appText.Contains("")) //Assert.IsTrue(appText.Contains("")) //Assert.IsTrue(appText.Contains("")) //Assert.IsTrue(appText.Contains("")) () ) *) fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.RoundTrip.fs0000775000175000017500000001462212260314606024407 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem open System open System.IO open System.Text.RegularExpressions open NUnit.Framework open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem open Microsoft.VisualStudio.FSharp.ProjectSystem [] type RoundTrip() = inherit TheTests() ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore member this.``FsprojRoundtrip.PositiveTest``(origItems : MSBuildItems, expectedItems : MSBuildItems) = // test that opening with origItems and saving yields expectedItems this.MakeProjectAndDoWithProjectFile([], [], origItems.ToString(), (fun project fileName -> SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText if Regex.IsMatch(fsprojFileText, "\s*") then Assert.Fail("did not remove empty ItemGroups") )) // test idempotentcy (opening with previous-saved results causes no change) this.MakeProjectAndDoWithProjectFile([], [], expectedItems.ToString(), (fun project fileName -> SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText if Regex.IsMatch(fsprojFileText, "\s*") then Assert.Fail("did not remove empty ItemGroups") )) [] member public this.``FsprojRoundTrip.Basic.NonemptyFoldersRemoved.Case1``() = this.``FsprojRoundtrip.PositiveTest``( MSBuildItems [CompileItem @"bar.fs" FolderItem @"Folder\" CompileItem @"Folder\foo.fs"], MSBuildItems [CompileItem @"bar.fs" CompileItem @"Folder\foo.fs"]) [] member public this.``FsprojRoundTrip.Basic.NonemptyFoldersRemoved.Case2``() = this.``FsprojRoundtrip.PositiveTest``( MSBuildItems [CompileItem @"bar.fs" FolderItem @"A\" FolderItem @"A\B\" FolderItem @"A\B\C\" CompileItem @"A\B\C\foo.fs" CompileItem @"A\qux.fs"], MSBuildItems [CompileItem @"bar.fs" CompileItem @"A\B\C\foo.fs" CompileItem @"A\qux.fs"]) [] member public this.``FsprojRoundTrip.ComplexButLegalCase``() = let items = MSBuildItems [CompileItem @"A\B\foo.fs" CompileItem @"A\bar.fs" CompileItem @"A\C\D\qux.fs" CompileItem @"A\xyz.fs" CompileItem @"ddd.fs" CompileItem @"E\eee.fs" ] this.``FsprojRoundtrip.PositiveTest``(items, items) [] member public this.``FsprojRoundTrip.EmptyFoldersArePreservedWhenRestIsIdempotent``() = let items = MSBuildItems [CompileItem @"bar.fs" FolderItem @"A\Empty1\" CompileItem @"A\B\C\foo.fs" FolderItem @"A\B\Empty2\" CompileItem @"A\qux.fs"] this.``FsprojRoundtrip.PositiveTest``(items, items) [] member public this.``FsprojRoundTrip.EmptyFoldersArePreservedWhenRestIsLegalButNotIdempotent``() = let origItems = [CompileItem @"bar.fs" FolderItem @"A\Empty1\" FolderItem @"A\B\" // will get removed CompileItem @"A\B\C\foo.fs" FolderItem @"A\B\Empty2\" CompileItem @"A\qux.fs"] let expectedItems = [CompileItem @"bar.fs" FolderItem @"A\Empty1\" CompileItem @"A\B\C\foo.fs" FolderItem @"A\B\Empty2\" CompileItem @"A\qux.fs"] this.``FsprojRoundtrip.PositiveTest``(MSBuildItems origItems, MSBuildItems expectedItems) member this.``Fsproj.NegativeTest``(items : MSBuildItems) = DoWithTempFile "Test.fsproj" (fun file -> File.AppendAllText(file, TheTests.SimpleFsprojText([], [], items.ToString())) let ex = new System.Exception() try use project = TheTests.CreateProject(file) let mutable node = project.FirstChild TheTests.PrintHierarchy(node) raise ex with | e when obj.ReferenceEquals(e,ex) -> Assert.Fail("did not expect to succeed creating project") | :? InvalidOperationException as e when e.ToString().Contains("rendered") -> printfn "As expected, failed to create project. Reason: %s" (e.Message) | e -> Assert.Fail("failed to create project, but for wrong reason") () ) [] member public this.``FsprojRoundTrip.Basic.Invalid.Case1``() = let items = MSBuildItems [CompileItem @"A\B\C\foo.fs" CompileItem @"B\bar.fs" CompileItem @"A\B\D\qux.fs"] // would cause A to be rendered twice this.``Fsproj.NegativeTest`` items [] member public this.``FsprojRoundTrip.Basic.Invalid.Case2``() = let items = MSBuildItems [CompileItem @"A\foo.fs" CompileItem @"bar.fs" CompileItem @"A\qux.fs"] // would cause A to be rendered twice this.``Fsproj.NegativeTest`` items // REVIEW NYI: [] member public this.``FsprojRoundTrip.Basic.Invalid.Case3``() = let items = MSBuildItems [CompileItem @"A\foo.fs" FolderItem @"A\" // must be before anything below it CompileItem @"bar.fs"] this.``Fsproj.NegativeTest`` items fsharp-3.0.34/src/fsharp/unittests/Tests.Build.fs0000775000175000017500000004726212260314606020714 0ustar chrischrisnamespace UnitTests.Tests open NUnit.Framework open System open System.IO open System.Diagnostics open Microsoft.FSharp.Build open Microsoft.Build.BuildEngine open Microsoft.Build.Framework open Microsoft.Build.Utilities open UnitTests.TestLib.Utils.FilesystemHelpers module HandyExtensions = type System.String with member s.MatchesPattern(p : string) = System.Text.RegularExpressions.Regex.Match(s, p) <> System.Text.RegularExpressions.Match.Empty member s.AssertMatchesPattern(p : string) = if not (s.MatchesPattern p) then let up = System.Text.RegularExpressions.Regex.Unescape p let message = sprintf "Expected\n%A\nto match pattern\n%A" s up printfn "%s" message Assert.Fail() open HandyExtensions type MyLogger(f : string -> unit) = let mutable verbosity = LoggerVerbosity.Quiet let mutable parameters = "" interface ILogger with member mylogger.Initialize(eventSource : IEventSource) = let onCustomEvent (e : CustomBuildEventArgs) = f e.Message eventSource.CustomEventRaised.Add onCustomEvent () member mylogger.Verbosity = verbosity member mylogger.set_Verbosity x = verbosity <- x member mylogger.Parameters = parameters member mylogger.set_Parameters x = parameters <- x member mylogger.Shutdown() = () type FauxHostObject() = let mutable myFlags : string[] = null let mutable mySources : string[] = null member x.Compile(compile:System.Converter, flags:string[], sources:string[]) = myFlags <- flags mySources <- sources 0 member x.Flags = myFlags member x.Sources = mySources interface ITaskHost // no members [] type Build() = (* Asserts ----------------------------------------------------------------------------- *) let AssertEqual expected actual = if expected<>actual then let message = sprintf "Expected\n%A\nbut got\n%A" expected actual printfn "%s" message Assert.Fail(message) let MakeTaskItem (itemSpec : string) = new TaskItem(itemSpec) :> ITaskItem /// Called per test [] member this.Setup() = () [] member this.TearDown() = () [] member public this.MissingToolPathError() = let tool = new Microsoft.FSharp.Build.Fsc() tool.ToolPath <- "" try let p = tool.InternalGenerateFullPathToTool() Assert.Fail("should not succeed") with e -> e.Message.AssertMatchesPattern("ToolPath is unknown; specify the path to fsc.exe as the ToolPath property.") [] member public this.TestCodePage() = let tool = new Microsoft.FSharp.Build.Fsc() printfn "By the way, the registry or app.config tool path is %s" tool.ToolPath tool.CodePage <- "65001" AssertEqual "65001" tool.CodePage let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--codepage:65001 --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDebugSymbols() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DebugSymbols <- true AssertEqual true tool.DebugSymbols let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "-g --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDebugType() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DebugType <- "pdbONly" AssertEqual "pdbONly" tool.DebugType let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--debug:pdbonly --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDefineConstants() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DefineConstants <- [| MakeTaskItem "FOO=3" MakeTaskItem "BAR=4" |] AssertEqual 2 tool.DefineConstants.Length let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--define:FOO=3 --define:BAR=4 --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDisabledWarnings1() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DisabledWarnings <- "52;109" AssertEqual "52;109" tool.DisabledWarnings let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --nowarn:52,109 --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDisabledWarnings2() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DisabledWarnings <- ";" // e.g. someone may have $(NoWarn);$(SomeOtherVar) and both vars are empty AssertEqual ";" tool.DisabledWarnings let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestVersionFile() = let tool = new Microsoft.FSharp.Build.Fsc() tool.VersionFile <- "src/version" AssertEqual "src/version" tool.VersionFile let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --versionfile:src/version --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestDocumentationFile() = let tool = new Microsoft.FSharp.Build.Fsc() tool.DocumentationFile <- "foo.xml" AssertEqual "foo.xml" tool.DocumentationFile let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--doc:foo.xml --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestGenerateInterfaceFile() = let tool = new Microsoft.FSharp.Build.Fsc() tool.GenerateInterfaceFile <- "foo.fsi" AssertEqual "foo.fsi" tool.GenerateInterfaceFile let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--sig:foo.fsi --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestKeyFile() = let tool = new Microsoft.FSharp.Build.Fsc() tool.KeyFile <- "key.txt" AssertEqual "key.txt" tool.KeyFile let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--keyfile:key.txt --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestNoFramework() = let tool = new Microsoft.FSharp.Build.Fsc() tool.NoFramework <- true AssertEqual true tool.NoFramework let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--noframework --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestOptimize() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Optimize <- false AssertEqual false tool.Optimize let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual cmd "--optimize- --warnaserror:76 --fullpaths --flaterrors --highentropyva-" [] member public this.TestTailcalls() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Tailcalls <- true AssertEqual true tool.Tailcalls let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd // REVIEW we don't put the default, is that desired? AssertEqual "--optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestOtherFlags() = let tool = new Microsoft.FSharp.Build.Fsc() tool.OtherFlags <- "--yadda yadda" AssertEqual "--yadda yadda" tool.OtherFlags let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva- --yadda yadda" cmd [] member public this.TestOutputAssembly() = let tool = new Microsoft.FSharp.Build.Fsc() tool.OutputAssembly <- "oUt.dll" AssertEqual "oUt.dll" tool.OutputAssembly let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "-o:oUt.dll --optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestPdbFile() = let tool = new Microsoft.FSharp.Build.Fsc() tool.PdbFile <- "out.pdb" AssertEqual "out.pdb" tool.PdbFile let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --pdb:out.pdb --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestPlatform1() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Platform <- "x64" AssertEqual "x64" tool.Platform let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --platform:x64 --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestPlatform2() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Platform <- "itanium" AssertEqual "itanium" tool.Platform let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --platform:Itanium --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestPlatform3() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Platform <- "x86" AssertEqual "x86" tool.Platform let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --platform:x86 --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestReferences() = let tool = new Microsoft.FSharp.Build.Fsc() let dll = "c:\\sd\\staging\\tools\\nunit\\nunit.framework.dll" tool.References <- [| MakeTaskItem dll |] AssertEqual 1 tool.References.Length let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual ("--optimize+ -r:" + dll + " --warnaserror:76 --fullpaths --flaterrors --highentropyva-") cmd [] member public this.TestReferencePath() = let tool = new Microsoft.FSharp.Build.Fsc() let path = "c:\\sd\\staging\\tools\\nunit\\;c:\\Foo" tool.ReferencePath <- path AssertEqual path tool.ReferencePath let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual ("--optimize+ --lib:c:\\sd\\staging\\tools\\nunit\\,c:\\Foo --warnaserror:76 --fullpaths --flaterrors --highentropyva-") cmd [] member public this.TestReferencePathWithSpaces() = let tool = new Microsoft.FSharp.Build.Fsc() let path = "c:\\program files;c:\\sd\\staging\\tools\\nunit;c:\\Foo" tool.ReferencePath <- path AssertEqual path tool.ReferencePath let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual ("--optimize+ --lib:\"c:\\program files\",c:\\sd\\staging\\tools\\nunit,c:\\Foo --warnaserror:76 --fullpaths --flaterrors --highentropyva-") cmd [] member public this.TestResources() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Resources <- [| MakeTaskItem "Foo.resources" |] AssertEqual 1 tool.Resources.Length let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --resource:Foo.resources --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestSources() = let tool = new Microsoft.FSharp.Build.Fsc() let src = "foo.fs" let iti = MakeTaskItem src tool.Sources <- [| iti; iti |] AssertEqual 2 tool.Sources.Length let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd let expect = "--optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva- " + src + " " + src AssertEqual expect cmd () [] member public this.TestTargetType1() = let tool = new Microsoft.FSharp.Build.Fsc() tool.TargetType <- "Library" AssertEqual "Library" tool.TargetType let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --target:library --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestTargetType2() = let tool = new Microsoft.FSharp.Build.Fsc() tool.TargetType <- "Winexe" AssertEqual "Winexe" tool.TargetType let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --target:winexe --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestTargetType3() = let tool = new Microsoft.FSharp.Build.Fsc() tool.TargetType <- "Module" AssertEqual "Module" tool.TargetType let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --target:module --warnaserror:76 --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestUtf8Output() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Utf8Output <- true let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --utf8output --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestWin32Res() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Win32ResourceFile <- "foo.res" let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --win32res:foo.res --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestWin32Manifest() = let tool = new Microsoft.FSharp.Build.Fsc() tool.Win32ManifestFile <- "foo.manifest" let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --win32manifest:foo.manifest --fullpaths --flaterrors --highentropyva-" cmd [] member public this.TestHighEntropyVA() = let tool = new Microsoft.FSharp.Build.Fsc() tool.HighEntropyVA <- true let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --fullpaths --flaterrors --highentropyva+" cmd [] member public this.TestSubsystemVersion() = let tool = new Microsoft.FSharp.Build.Fsc() tool.SubsystemVersion <- "6.02" let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd AssertEqual "--optimize+ --warnaserror:76 --fullpaths --flaterrors --subsystemversion:6.02 --highentropyva-" cmd [] member public this.TestAllCombo() = let tool = new Microsoft.FSharp.Build.Fsc() tool.CodePage <- "65001" tool.DebugSymbols <- true tool.DebugType <- "full" tool.DefineConstants <- [| MakeTaskItem "FOO=3" MakeTaskItem "BAR=4" |] tool.DisabledWarnings <- "52 109" tool.VersionFile <- "src/version" tool.DocumentationFile <- "foo.xml" tool.GenerateInterfaceFile <- "foo.fsi" tool.KeyFile <- "key.txt" tool.NoFramework <- true tool.Optimize <- true tool.Tailcalls <- true tool.OtherFlags <- "--yadda:yadda --other:\"internal quote\" blah" tool.OutputAssembly <- "out.dll" tool.PdbFile <- "out.pdb" tool.References <- [| MakeTaskItem "ref.dll"; MakeTaskItem "C:\\Program Files\\SpacesPath.dll" |] tool.ReferencePath <- "c:\\foo;c:\\bar" tool.Resources <- [| MakeTaskItem "MyRes.resources"; MakeTaskItem "OtherRes.resources" |] tool.Sources <- [| MakeTaskItem "foo.fs"; MakeTaskItem "C:\\Program Files\\spaces.fs" |] tool.WarningLevel <- "4" tool.TreatWarningsAsErrors <- true tool.TargetType <- "Exe" tool.BaseAddress <- "0xBADF00D" tool.Platform <- "AnyCPU" tool.Utf8Output <- true tool.VisualStudioStyleErrors <- true tool.ValidateTypeProviders <- true tool.SubsystemVersion <- "4.0" let cmd = tool.InternalGenerateCommandLineCommands() printfn "cmd=\"%s\"" cmd let expected = "-o:out.dll --codepage:65001 -g --debug:full --noframework " + "--baseaddress:0xBADF00D " + "--define:FOO=3 --define:BAR=4 " + "--doc:foo.xml --sig:foo.fsi --keyfile:key.txt " + "--optimize+ --pdb:out.pdb --platform:anycpu " + "--resource:MyRes.resources --resource:OtherRes.resources " + "--versionfile:src/version -r:ref.dll -r:\"C:\\Program Files\\SpacesPath.dll\" --lib:c:\\foo,c:\\bar --target:exe --nowarn:52,109 " + "--warn:4 --warnaserror --warnaserror:76 --vserrors --validate-type-providers --utf8output --fullpaths --flaterrors --subsystemversion:4.0 " + "--highentropyva- --yadda:yadda --other:\"internal quote\" blah foo.fs \"C:\\Program Files\\spaces.fs\"" AssertEqual expected cmd let hostObject = new FauxHostObject() tool.HostObject <- hostObject tool.InternalExecuteTool("", "", "") |> ignore let expectedFlags = [| "-o:out.dll" "--codepage:65001" "-g" "--debug:full" "--noframework" "--baseaddress:0xBADF00D" "--define:FOO=3" "--define:BAR=4" "--doc:foo.xml" "--sig:foo.fsi" "--keyfile:key.txt" "--optimize+" "--pdb:out.pdb" "--platform:anycpu" "--resource:MyRes.resources" "--resource:OtherRes.resources" "--versionfile:src/version" "-r:ref.dll" "-r:C:\\Program Files\\SpacesPath.dll" // note no internal quotes "--lib:c:\\foo,c:\\bar" "--target:exe" "--nowarn:52,109" "--warn:4" "--warnaserror" "--warnaserror:76" "--vserrors" "--validate-type-providers" "--utf8output" "--fullpaths" "--flaterrors" "--subsystemversion:4.0" "--highentropyva-" "--yadda:yadda" "--other:internal quote" // note stripped internal quotes "blah" |] AssertEqual expectedFlags hostObject.Flags let expectedSources = [| "foo.fs"; "C:\\Program Files\\spaces.fs" |] AssertEqual expectedSources hostObject.Sourcesfsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.QuickInfo.fs0000775000175000017500000054527512260314606024617 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService [] module QuickInfoStandardSettings = let standard40AssemblyRefs = [ "System"; "System.Core"; "System.Numerics" ] let queryAssemblyRefs = [ "System.Xml.Linq"; "System.Core" ] type QuickInfoTests() = inherit LanguageServiceBaseTests() // Work around an innocuous 'feature' with how QuickInfo is displayed, lines which // should have a "\r\n" just have a "\r" let trimnewlines (str : string) = str.Replace("\r", "").Replace("\n", "") let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a //printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let ShowErrors(project:OpenProject) = for error in (GetErrors(project)) do printf "%s\n" (error.ToString()) let checkTooltip expected ((tooltip, span : TextSpan), (row, col)) = AssertContains(tooltip, expected) // cursor should be inside the span Assert.IsTrue(row = (span.iStartLine + 1) && row = (span.iEndLine + 1), "Cursor should be one the same line with the tooltip span") Assert.IsTrue(col >= span.iStartIndex && col <= span.iEndIndex, "Cursor should be located inside the span") // (* Tests for QuickInfos ---------------------------------------------------------------- *) member public this.InfoInDeclarationTestQuickInfoImplWithTrim (code : string) marker expected = let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToStartOfMarker(file, marker) let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertContains(trimnewlines tooltip, trimnewlines expected) gpatcc.AssertExactly(0,0) member public this.CheckTooltip(code : string,marker,atStart, f, ?addtlRefAssy : list) = let (_, _, file) = this.CreateSingleFileProject(code, ?references = addtlRefAssy) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) if atStart then MoveCursorToStartOfMarker(file, marker) else MoveCursorToEndOfMarker(file, marker) let pos = GetCursorLocation file let tooltip = GetQuickInfoAndSpanAtCursor file f (tooltip, pos) gpatcc.AssertExactly(0,0) member public this.InfoInDeclarationTestQuickInfoImpl(code,marker,expected,atStart, ?addtlRefAssy : list) = let check ((tooltip, _), _) = AssertContains(tooltip, expected) this.CheckTooltip(code, marker, atStart, check, ?addtlRefAssy=addtlRefAssy ) member public this.AssertQuickInfoContainsAtEndOfMarker(code,marker,expected, ?addtlRefAssy : list) = this.InfoInDeclarationTestQuickInfoImpl(code,marker,expected,false,?addtlRefAssy=addtlRefAssy) member public this.AssertQuickInfoContainsAtStartOfMarker(code, marker, expected, ?addtlRefAssy : list) = this.InfoInDeclarationTestQuickInfoImpl(code,marker,expected,true,?addtlRefAssy=addtlRefAssy) member public this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker (code : string) marker notexpected = let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, marker) let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertNotContains(tooltip, notexpected) gpatcc.AssertExactly(0,0) member public this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker (code : string) marker notexpected = let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToStartOfMarker(file, marker) let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertNotContains(tooltip, notexpected) gpatcc.AssertExactly(0,0) member public this.AssertIdentifierInToolTipExactlyOnce (code : string) marker ident = /// Asserts that an identifier occurs exactly once in a tooltip let AssertIdentifierInToolTipExactlyOnce(ident, (tooltip:string)) = let count = tooltip.Split([| '='; '.'; ' '; '\t'; '('; ':'; ')'; '\n' |]) |> Array.filter ((=) ident) |> Array.length if (count <> 1) then Assert.Fail(sprintf "Identifier '%s' doesn't occure once in the tooltip '%s'" ident tooltip) let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, marker) let tooltip = GetQuickInfoAtCursor file AssertIdentifierInToolTipExactlyOnce(ident, tooltip) gpatcc.AssertExactly(0,0) member this.VerifyOrderOfNestedTypesInQuickInfo (source : string, marker : string, expectedExactOrder : string list, ?extraRefs : string list) = let (_, _, file) = this.CreateSingleFileProject(source, ?references = extraRefs) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToStartOfMarker(file, "(*M*)") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertContainsInOrder(tooltip, expectedExactOrder) [] member public this.``EmptyTypeTooltipBody``() = let content = """ type X(*M*) = class end""" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker content "(*M*)" "=" [] member public this.``NestedTypesOrder``() = this.VerifyOrderOfNestedTypesInQuickInfo( source = "type t = System.Runtime.CompilerServices.RuntimeHelpers(*M*)", marker = "(*M*)", expectedExactOrder = ["CleanupCode"; "TryCode"] ) this.VerifyOrderOfNestedTypesInQuickInfo( source = "type t = System.Collections.Generic.Dictionary(*M*)", marker = "(*M*)", expectedExactOrder = ["Enumerator"; "KeyCollection"; "ValueCollection"] ) [] member public this.``QuickInfo.OverriddenMethods``() = let source = """ type A() = abstract member M : unit -> unit /// 1234 default this.M() = () type AA() = inherit A() /// 5678 override this.M() = () let x = new AA() x.M() let y = new A() y.M() """ for (marker, expected) in ["x.M", "5678"; "y.M", "1234"] do this.CheckTooltip ( code = source, marker = marker, atStart = false, f = (fun ((text : string, _), _) -> printfn "expected %s, actual %s" expected text; Assert.IsTrue (text.Contains(expected))) ) [] member public this.``QuickInfoForQuotedIdentifiers``() = let source = """ /// The fff function let fff x = x /// The gg gg function let ``gg gg`` x = x let r = fff 1 + ``gg gg`` 2 // no tip hovering over""" let identifier = "``gg gg``" for i = 1 to (identifier.Length - 1) do let marker = "+ " + (identifier.Substring(0, i)) this.CheckTooltip (source, marker, false, checkTooltip "gg gg") [] member public this.``QuickInfoSingleCharQuotedIdentifier``() = let source = """ let ``x`` = 10 ``x``|> printfn "%A" """ this.CheckTooltip(source, "x``|>", true, checkTooltip "x") [] [] member public this.``TypeProviders.NestedTypesOrder``() = let code = "type t = N1.TypeWithNestedTypes(*M*)" let tpReference = System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll") this.VerifyOrderOfNestedTypesInQuickInfo( source = code, marker = "(*M*)", expectedExactOrder = ["A"; "X"; "Z"], extraRefs = [tpReference] ) [] member public this.``GetterSetterInsideInterfaceImpl.ThisOnceAsserted``() = let fileContent =""" type IFoo = abstract member X : int with get,set type Bar = interface IFoo with member this.X with get() = 42 // hello and set(v) = id() """ this.AssertQuickInfoContainsAtStartOfMarker(fileContent, "id", "Operators.id") //regression test for bug 3184 -- intellisense should normalize to ¡°int[]¡± so that [] is not mistaken for list. [] member public this.IntArrayQuickInfo() = let fileContents = """ let x(*MIntArray1*) : int array = [| 1; 2; 3 |] let y(*MInt[]*) : int [] = [| 1; 2; 3 |] """ this.AssertQuickInfoContainsAtStartOfMarker(fileContents, "x(*MIntArray1*)", "int array") this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "y(*MInt[]*)", "int []") //Verify no quickinfo -- link name string have [] member public this.LinkNameStringQuickInfo() = let fileContents = """ let y = 1 let f x = "x"(*Marker1*) let g z = "y"(*Marker2*) """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "\"x\"(*Marker1*)", "") this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "\"y\"(*Marker2*)", "") [] [] [] //This is to test the correct TypeProvider Type message is shown or not in the TypeProviderXmlDocAttribute member public this.``TypeProvider.XmlDocAttribute.Type.Comment``() = let fileContents = """ let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic type created by me!", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithAdequateComment.dll")]) [] [] [] //This is to test for long message in the TypeProviderXmlDocAttribute for TypeProvider Type member public this.``TypeProvider.XmlDocAttribute.Type.WithLongComment``() = let fileContents = """ let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic type created by me!. Which is used to test the tool tip of the typeprovider type to check if it shows the right message or not.", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLongComment.dll")]) [] [] [] //This is to test when the message is null in the TypeProviderXmlDocAttribute for TypeProvider Type member public this.``TypeProvider.XmlDocAttribute.Type.WithNullComment``() = let fileContents = """ let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "type T =\n new : unit -> T\n event Event1 : EventHandler\n static member M : unit -> int []\n static member StaticProp : decimal\n\nFull name: N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithNullComment.dll")]) [] [] [] //This is to test when there is empty message from the TypeProviderXmlDocAttribute for TypeProvider Type member public this.``TypeProvider.XmlDocAttribute.Type.WithEmptyComment``() = let fileContents = """ let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "type T =\n new : unit -> T\n event Event1 : EventHandler\n static member M : unit -> int []\n static member StaticProp : decimal\n\nFull name: N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithEmptyComment.dll")]) [] [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Type member public this.``TypeProvider.XmlDocAttribute.Type.LocalizedComment``() = let fileContents = """ let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic type Localized! ኤá ሻርá•", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLocalizedComment.dll")]) [] [] [] //This is to test the correct TypeProvider Constructor message is shown or not in the TypeProviderXmlDocAttribute member public this.``TypeProvider.XmlDocAttribute.Constructor.Comment``() = let fileContents = """ let foo = new N.T(*Marker*)() """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic .ctor created by me for N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithAdequateComment.dll")]) [] [] [] //This is to test for long message in the TypeProviderXmlDocAttribute for TypeProvider Constructor member public this.``TypeProvider.XmlDocAttribute.Constructor.WithLongComment``() = let fileContents = """ let foo = new N.T(*Marker*)() """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic .ctor created by me for N.T. Which is used to test the tool tip of the typeprovider Constructor to check if it shows the right message or not.", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLongComment.dll")]) [] [] [] //This is to test when the message is null in the TypeProviderXmlDocAttribute for TypeProvider Constructor member public this.``TypeProvider.XmlDocAttribute.Constructor.WithNullComment``() = let fileContents = """ let foo = new N.T(*Marker*)() """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "N.T() : N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithNullComment.dll")]) [] [] [] //This is to test when there is empty message from the TypeProviderXmlDocAttribute for TypeProvider Constructor member public this.``TypeProvider.XmlDocAttribute.Constructor.WithEmptyComment``() = let fileContents = """ let foo = new N.T(*Marker*)() """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "N.T() : N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithEmptyComment.dll")]) [] [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Constructor member public this.``TypeProvider.XmlDocAttribute.Constructor.LocalizedComment``() = let fileContents = """ let foo = new N.T(*Marker*)() """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", "This is a synthetic .ctor Localized! ኤá ሻርᕠfor N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLocalizedComment.dll")]) [] [] [] //This is to test the correct TypeProvider event message is shown or not in the TypeProviderXmlDocAttribute member public this.``TypeProvider.XmlDocAttribute.Event.Comment``() = let fileContents = """ let t = new N.T() t.Event1(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "Event1(*Marker*)", "This is a synthetic *event* created by me for N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithAdequateComment.dll")]) [] [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Event member public this.``TypeProvider.XmlDocAttribute.Event.LocalizedComment``() = let fileContents = """ let t = new N.T() t.Event1(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "Event1(*Marker*)", "This is a synthetic *event* Localized! ኤá ሻርᕠfor N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLocalizedComment.dll")]) [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Event member public this.``TypeProvider.ParamsAttributeTest``() = let fileContents = """ let t = "a".Split('c')""" this.AssertQuickInfoContainsAtEndOfMarker (fileContents, "Spl", "params separator") [] [] [] //This is to test for long message in the TypeProviderXmlDocAttribute for TypeProvider Event member public this.``TypeProvider.XmlDocAttribute.Event.WithLongComment``() = let fileContents = """ let t = new N.T() t.Event1(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "Event1(*Marker*)", "This is a synthetic *event* created by me for N.T. Which is used to test the tool tip of the typeprovider Event to check if it shows the right message or not.!", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLongComment.dll")]) [] [] [] //This is to test when the message is null in the TypeProviderXmlDocAttribute for TypeProvider Event member public this.``TypeProvider.XmlDocAttribute.Event.WithNullComment``() = let fileContents = """ let t = new N.T() t.Event1(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "Event1(*Marker*)", "event N.T.Event1: IEvent", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithNullComment.dll")]) [] [] [] //This is to test when there is empty message from the TypeProviderXmlDocAttribute for TypeProvider Event member public this.``TypeProvider.XmlDocAttribute.Event.WithEmptyComment``() = let fileContents = """ let t = new N.T() t.Event1(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "Event1(*Marker*)", "event N.T.Event1: IEvent", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithEmptyComment.dll")]) [] [] [] //This is to test the correct TypeProvider Method message is shown or not in the TypeProviderXmlDocAttribute member public this.``TypeProvider.XmlDocAttribute.Method.Comment``() = let fileContents = """ let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", "This is a synthetic *method* created by me!!", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithAdequateComment.dll")]) [] [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Method member public this.``TypeProvider.XmlDocAttribute.Method.LocalizedComment``() = let fileContents = """ let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", "This is a synthetic *method* Localized! ኤá ሻርá•", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLocalizedComment.dll")]) [] [] [] //This is to test for long message in the TypeProviderXmlDocAttribute for TypeProvider Method member public this.``TypeProvider.XmlDocAttribute.Method.WithLongComment``() = let fileContents = """ let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", "This is a synthetic *method* created by me!!. Which is used to test the tool tip of the typeprovider Method to check if it shows the right message or not.!", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLongComment.dll")]) [] [] [] //This is to test when the message is null in the TypeProviderXmlDocAttribute for TypeProvider Method member public this.``TypeProvider.XmlDocAttribute.Method.WithNullComment``() = let fileContents = """ let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", "N.T.M() : int []", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithNullComment.dll")]) [] [] [] //This is to test when there is empty message from the TypeProviderXmlDocAttribute for TypeProvider Method member public this.``TypeProvider.XmlDocAttribute.Method.WithEmptyComment``() = let fileContents = """ let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", "N.T.M() : int []", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithEmptyComment.dll")]) [] [] [] //This is to test the correct TypeProvider Property message is shown or not in the TypeProviderXmlDocAttribute member public this.``TypeProvider.XmlDocAttribute.Property.Comment``() = let fileContents = """ let p = N.T.StaticProp(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "StaticProp(*Marker*)", "This is a synthetic *property* created by me for N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithAdequateComment.dll")]) [] [] [] //This is to test the multi-language in the TypeProviderXmlDocAttribute for TypeProvider Property member public this.``TypeProvider.XmlDocAttribute.Property.LocalizedComment``() = let fileContents = """ let p = N.T.StaticProp(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "StaticProp(*Marker*)", "This is a synthetic *property* Localized! ኤá ሻርᕠfor N.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLocalizedComment.dll")]) [] [] [] //This is to test for long message in the TypeProviderXmlDocAttribute for TypeProvider Property member public this.``TypeProvider.XmlDocAttribute.Property.WithLongComment``() = let fileContents = """ let p = N.T.StaticProp(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "StaticProp(*Marker*)", "This is a synthetic *property* created by me for N.T. Which is used to test the tool tip of the typeprovider Property to check if it shows the right message or not.!", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithLongComment.dll")]) [] [] [] //This is to test when the message is null in the TypeProviderXmlDocAttribute for TypeProvider Property member public this.``TypeProvider.XmlDocAttribute.Property.WithNullComment``() = let fileContents = """ let p = N.T.StaticProp(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "StaticProp(*Marker*)", "property N.T.StaticProp: decimal", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithNullComment.dll")]) [] [] [] //This is to test when there is empty message from the TypeProviderXmlDocAttribute for TypeProvider Property member public this.``TypeProvider.XmlDocAttribute.Property.WithEmptyComment``() = let fileContents = """ let p = N.T.StaticProp(*Marker*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "StaticProp(*Marker*)", "property N.T.StaticProp: decimal", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\XmlDocAttributeWithEmptyComment.dll")]) [] [] [] //This test case Verify that when Hover over foo the correct quickinfo is displayed for TypeProvider static parameter //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) member public this.``TypeProvider.StaticParameters.Correct``() = let fileContents = """ type foo(*Marker*) = N1.T< const "Hello World",2>""" this.AssertQuickInfoContainsAtStartOfMarker( fileContents, marker = "foo(*Marker*)", expected = "type foo = N1.T", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case Verify that when Hover over foo the correct quickinfo is displayed //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) //As you can see this is "Negative Case" to check that when given invalid static Parameter quickinfo shows "type foo = obj" member public this.``TypeProvider.StaticParameters.Negative.Invalid``() = let fileContents = """ type foo(*Marker*) = N1.T< const 100,2>""" this.AssertQuickInfoContainsAtStartOfMarker( fileContents, marker = "foo(*Marker*)", expected = "type foo", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case Verify that when Hover over foo the XmlComment is shown in quickinfo //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) member public this.``TypeProvider.StaticParameters.XmlComment``() = let fileContents = """ ///XMLComment type foo(*Marker*) = N1.T< const "Hello World",2>""" this.AssertQuickInfoContainsAtStartOfMarker( fileContents, marker = "foo(*Marker*)", expected = "XMLComment", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] member public this.``TypeProvider.StaticParameters.QuickInfo.OnTheErasedType``() = let fileContents = """type TTT = Samples.FSharp.RegexTypeProvider.RegexTyped< @"(?^\d{3})-(?\d{3}-\d{7}$)">""" this.AssertQuickInfoContainsAtStartOfMarker( fileContents, marker = "TTT", expected = "type TTT = Samples.FSharp.RegexTypeProvider.RegexTyped<...>\n\nFull name: File1.TTT", addtlRefAssy = ["System"; System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] member public this.``TypeProvider.StaticParameters.QuickInfo.OnNestedErasedTypeProperty``() = let fileContents = """ type T = Samples.FSharp.RegexTypeProvider.RegexTyped< @"(?^\d{3})-(?\d{3}-\d{7}$)"> let reg = T() let r = reg.Match("425-123-2345").AreaCode.Value """ this.AssertQuickInfoContainsAtStartOfMarker( fileContents, marker = "reaCode.Val", expected = """property Samples.FSharp.RegexTypeProvider.RegexTyped<...>.MatchType.AreaCode: System.Text.RegularExpressions.Group""", addtlRefAssy = ["System"; System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) // Regression for 2948 [] member public this.TypeRecordQuickInfo() = let fileContents = """namespace NS type Re(*MarkerRecord*) = { X : int } """ let expectedQuickinfoTypeRecored = "type Re = {X: int;}" this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "Re(*MarkerRecord*)" expectedQuickinfoTypeRecored [] member public this.``QuickInfo.LetBindingsInTypes``() = let code = """ type A() = let fff n = n + 1 """ this.AssertQuickInfoContainsAtEndOfMarker(code, "let ff", "val fff : (int -> int)") // Regression for 2494 [] member public this.TypeConstructorQuickInfo() = let fileContents = """ open System type PriorityQueue(*MarkerType*)<'k,'a> = | Nil(*MarkerDataConstructor*) | Branch of 'k * 'a * PriorityQueue<'k,'a> * PriorityQueue<'k,'a> module PriorityQueue(*MarkerModule*) = let empty = Nil let minKeyValue = function | Nil -> failwith "empty queue" | Branch(k,a,_,_) -> (k,a) let minKey pq = fst (minKeyValue pq(*MarkerVal*)) let singleton(*MarkerLastLine*) k a = Branch(k,a,Nil,Nil) """ //Verify the quick info as expected let expectedquickinfoPriorityQueue = "type PriorityQueue<'k,'a> = | Nil | Branch of 'k * 'a * PriorityQueue<'k,'a> * PriorityQueue<'k,'a>" let expectedquickinfoNil = "union case PriorityQueue.Nil: PriorityQueue<'k,'a>" let expectedquickinfoPriorityQueueinModule = "module PriorityQueue\n\nfrom File1" let expectedquickinfoVal = "val pq : PriorityQueue<'a,'b>" let expectedquickinfoLastLine = "val singleton : k:'a -> a:'b -> PriorityQueue<'a,'b>" this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "PriorityQueue(*MarkerType*)" expectedquickinfoPriorityQueue this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "Nil(*MarkerDataConstructor*)" expectedquickinfoNil this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "PriorityQueue(*MarkerModule*)" expectedquickinfoPriorityQueueinModule this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "pq(*MarkerVal*)" expectedquickinfoVal this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "singleton(*MarkerLastLine*)" expectedquickinfoLastLine [] member public this.``EnsureNoAssertFromBadParserRangeOnAttribute``() = let fileContents = """ [] Types foo = int""" this.AssertQuickInfoContainsAtEndOfMarker (fileContents, "ype", "") // just want to ensure there is no assertion fired by the parse tree walker [] member public this.``ShiftKeyDown``() = ShiftKeyDown(this.VS) this.AssertQuickInfoContainsAtEndOfMarker ("""#light""","#ligh","") [] member public this.``ActivePatterns.Declaration``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let ( |One|Two| ) x = One(x+1)""","ne|Tw","int -> Choice") [] member public this.``ActivePatterns.Result``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let ( |One|Two| ) x = One(x+1)""","= On","active pattern result One: int -> Choice") [] member public this.``ActivePatterns.Value``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let ( |One|Two| ) x = One(x+1) let patval = (|One|Two|) // use""","= (|On","int -> Choice") [] member public this.``Regression.InDeclaration.Bug3176a``() = this.AssertQuickInfoContainsAtEndOfMarker ("""type T<'a> = { aaaa : 'a; bbbb : int } ""","aa","aaaa") [] member public this.``Regression.InDeclaration.Bug3176c``() = this.AssertQuickInfoContainsAtEndOfMarker ("""type C = val aaaa : int""","aa","aaaa") [] member public this.``Regression.InDeclaration.Bug3176d``() = this.AssertQuickInfoContainsAtEndOfMarker ("""type DU<'a> = | DULabel of 'a""","DULab","DULabel") [] member public this.``Regression.Generic.3773a``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let rec M2<'a>(a:'a) = M2(a)""","let rec M","val M2 : a:'a -> obj") // Before this bug fix, if the user hovered over 'cccccc' they would see 'Yield' [] member public this.``Regression.ComputationExpressionMemberAppearingInQuickInfo``() = this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker """ module Test let q2 = query { for p in [1;2] do join cccccc in [3;4] on (p = cccccc) yield cccccc }""" "yield ccc" "Yield" // Before this bug fix, if the user hovered over get or set in a property then // they would see a quickinfo for any available function named get or set. // The tests below define a get function with 'let' and then test to make sure that // this isn't the get seen in the tool tip. [] member public this.``Regression.AccessorMutator.Bug4903a``() = this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker """namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""" "with g" "string" [] member public this.``Regression.AccessorMutator.Bug4903d``() = this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker """namespace CountChocula type BooBerry() = member source.AMethod() = () member source.AProperty with get() : int = 0 and set(value:int) : unit = ()""" "AMetho" "string" [] member public this.``Regression.AccessorMutator.Bug4903b``() = this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker """namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""" "and s" "seq" [] member public this.``Regression.AccessorMutator.Bug4903c``() = this.AssertQuickInfoContainsAtEndOfMarker ("""namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""", "let g","string") [] member public this.``ParamsArrayArgument.OnType``() = this.AssertQuickInfoContainsAtEndOfMarker (""" type A() = static member Foo([] a : int[]) = () let r = A.Foo(42)""" , "type A","params a:" ) [] member public this.``ParamsArrayArgument.OnMethod``() = this.AssertQuickInfoContainsAtEndOfMarker (""" type A() = static member Foo([] a : int[]) = () let r = A.Foo(42)""" , "A.Foo","params a:" ) [] member public this.``Regression.AccessorMutator.Bug4903e``() = this.AssertQuickInfoContainsAtEndOfMarker ("""namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""" , "member source.Pr","Prop" ) [] member public this.``Regression.AccessorMutator.Bug4903f``() = this.AssertQuickInfoContainsAtEndOfMarker ("""namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""" , "member source.Pr","int" ) [] member public this.``Regression.AccessorMutator.Bug4903g``() = this.AssertQuickInfoContainsAtEndOfMarker ("""namespace CountChocula type BooBerry() = let get() = "" member source.Prop with get() : int = 0 and set(value:int) : unit = ()""" , "member sou","source" ) [] member public this.``Regression.RecursiveDefinition.Generic.3773b``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let rec M1<'a>(a:'a) = M1(0)""","let rec M","val M1 : a:int -> 'a") //regression test for bug Dev11:138110 - "F# language service hover tip for ITypeProvider does now show Invalidate event" [] member public this.``Regression.ImportedEvent.138110``() = let fileContents = """ open Microsoft.FSharp.Core.CompilerServices let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate """ this.AssertQuickInfoContainsAtStartOfMarker( fileContents, "Provider(*$$$*)", "Invalidate", addtlRefAssy=standard40AssemblyRefs ) //"FSharp.Core" add the reference in SxS will cause build failure and intellisense broken, the dll is added by default [] member public this.``Declaration.CyclicalDeclarationDoesNotCrash``() = this.AssertQuickInfoContainsAtEndOfMarker ("""type (*1*)A = int * (*2*)A ""","(*2*)","type A") [] member public this.``JustAfterIdentifier``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let f x = x + 1 ""","let f","int") [] member public this.``FrameworkClass``() = let fileContent = """let l = new System.Collections.Generic.List()""" let marker = "Generic.List" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Capacity : int with get, set\n") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Clear : unit -> unit\n") //this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Item : int -> 'T with get, set\n") // removed because quickinfo is now smaller this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "get_Capacity" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "set_Capacity" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "get_Count" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "set_Count" [] member public this.``FrameworkClassNoMethodImpl``() = this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker """let l = new System.Collections.Generic.LinkedList()""" "Generic.LinkedList" "System.Collections.ICollection.ISynchronized" // Bug 5092: A framework class contained a private method impl [] member public this.``Regression.ModulesFromExternalLibrariesBug5785``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let projectLib = CreateProject(solution,"testlib") let file = AddFileFromText(projectLib,"MyLibrary.fs", [ "module MyLibrary" "let x = 1" "module Nested =" " let y = 2" " module Deeper =" " let z = 3" ]) let project = CreateProject(solution,"testapp") let file = AddFileFromText(project,"App.fs", [ "let a = MyLibrary.Nested.Deeper.z" ]) SetConfigurationAndPlatform(project, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences SetConfigurationAndPlatform(projectLib, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences AddProjectReference(project, projectLib) let br = BuildTarget(projectLib, "Build") // build the dependent library Assert.IsTrue(br.BuildSucceeded, "build should succeed") let file = OpenFile(project,"App.fs") TakeCoffeeBreak(this.VS) // Wait for the background compiler to catch up. let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) ShiftKeyUp(this.VS) MoveCursorToEndOfMarker(file, "MyLi") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertMatchesRegex '\n' "module MyLibrary\n[Filename:.*\bin\Debug\testlib.exe]\n[Signature:T:MyLibrary]" tooltip MoveCursorToEndOfMarker(file, "Nes") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertMatchesRegex '\n' "module Nested\n\nfrom MyLibrary\n[Filename:.*\bin\Debug\testlib.exe]\n[Signature:T:MyLibrary.Nested]" tooltip MoveCursorToEndOfMarker(file, "Dee") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertMatchesRegex '\n' "module Deeper\n\nfrom MyLibrary.Nested\n[Filename:.*\bin\Debug\testlib.exe]\n[Signature:T:MyLibrary.Nested]" tooltip gpatcc.AssertExactly(0,0) (* ------------------------------------------------------------------------------------- *) /// Even though we don't show squiggles, some types will still be known. For example, System.String. [] member public this.``OrphanFs.BaselineIntellisenseStillWorks``() = this.AssertQuickInfoContainsAtEndOfMarker ("""let astring = "Hello" ""","let astr","string") /// FEATURE: User may hover over a type or identifier and get basic information about it in a tooltip. [] member public this.``Basic``() = let fileContent = """type (*bob*)Bob() = let x = 1""" let marker = "(*bob*)" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"Bob =") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"Bob =") [] member public this.``ModuleDefinition.ModuleNoNewLines``() = let fileContent = """module XXX type t = C3 module YYY = type t = C4 ///Doc module ZZZ = type t = C5 """ // The arises because the xml doc mechanism places these before handing them to VS for processing. this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"XX","module XXX") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"YY","module YYY\n\nfrom XXX") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"ZZ","module ZZZ\n\nfrom XXX\n\n\nDoc") [] member public this.``IdentifierWithTick``() = let code = ["#light" "let x = 1" "let x' = \"foo\"" "if (*aaa*)x = 1 then (*bbb*)x' else \"\"" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"(*aaa*)") let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip,"val x : int") MoveCursorToEndOfMarker(file,"(*bbb*)") let tooltip = GetQuickInfoAtCursor file AssertContains(tooltip,"val x' : string") [] member public this.``NegativeTest.CharLiteralNotConfusedWithIdentifierWithTick``() = let fileContent = """let x = 1" let y = 'x' """ this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"'x","") // no tooltips for char literals [] member public this.``QueryExpression.QuickInfoSmokeTest1``() = let fileContent = """let q = query { for x in ["1"] do select x }""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"selec","custom operation: select", addtlRefAssy=standard40AssemblyRefs) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"selec","custom operation: select ('Result)" , addtlRefAssy=standard40AssemblyRefs) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"selec","Calls" , addtlRefAssy=standard40AssemblyRefs) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"selec","Linq.QueryBuilder.Select" , addtlRefAssy=standard40AssemblyRefs ) [] member public this.``QueryExpression.QuickInfoSmokeTest2``() = let fileContent = """let q = query { for x in ["1"] do join y in ["2"] on (x = y); select (x,y) }""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"joi","custom operation: join" , addtlRefAssy=standard40AssemblyRefs ) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"joi","join var in collection on (outerKey = innerKey)" , addtlRefAssy=standard40AssemblyRefs) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"joi","Calls" , addtlRefAssy=standard40AssemblyRefs ) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"joi","Linq.QueryBuilder.Join" , addtlRefAssy=standard40AssemblyRefs ) [] member public this.``QueryExpression.QuickInfoSmokeTest3``() = let fileContent = """let q = query { for x in ["1"] do groupJoin y in ["2"] on (x = y) into g; select (x,g) }""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"groupJoin","custom operation: groupJoin" , addtlRefAssy=standard40AssemblyRefs ) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"groupJoin","groupJoin var in collection on (outerKey = innerKey)" , addtlRefAssy=standard40AssemblyRefs) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"groupJoin","Calls" , addtlRefAssy=standard40AssemblyRefs ) this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"groupJoin","Linq.QueryBuilder.GroupJoin" , addtlRefAssy=standard40AssemblyRefs) /// Hovering over a literal string should not show data tips for variable names that appear in the string [] member public this.``StringLiteralWithIdentifierLookALikes.Bug2360_A``() = let fileContent = """let y = 1 let f x = "x" let g z = "y" """ this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "f x = \"" "val" /// Hovering over a literal string should not show data tips for variable names that appear in the string [] member public this.``Regression.StringLiteralWithIdentifierLookALikes.Bug2360_B``() = let fileContent = """let y = 1""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let ","int") /// FEATURE: Intellisense information from types in earlier files in the project is available in subsequent files. [] member public this.``AcrossMultipleFiles``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["#light" "type Bob() = " " let x = 1"]) let file2 = AddFileFromText(project,"File2.fs", ["#light" "let bob = new File1.Bob()"]) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"File2.fs") // Get the tooltip at type Bob MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of first tooltip" printf "First-%s\n" tooltip AssertContains(tooltip,"File1.Bob") // Get the tooltip again MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of second tooltip" printf "Second-%s\n" tooltip AssertContains(tooltip,"File1.Bob") /// FEATURE: Linked files work [] member public this.``AcrossLinkedFiles``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddLinkedFileFromTextEx(project, @"..\LINK.FS", @"..\link.fs", @"MyLink.fs", ["#light" "type Bob() = " " let x = 1"]) let file2 = AddFileFromText(project,"File2.fs", ["#light" "let bob = new Link.Bob()"]) let file1 = OpenFile(project, @"..\link.fs") let file2 = OpenFile(project, @"File2.fs") // Get the tooltip at type Bob MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of first tooltip" printf "First-%s\n" tooltip AssertContains(tooltip,"Link.Bob") // Get the tooltip again MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of second tooltip" printf "Second-%s\n" tooltip AssertContains(tooltip,"Link.Bob") [] member public this.``TauStarter``() = let code = ["#light" "type (*Scenario01*)Bob() =" " let x = 1" "type (*Scenario021*)Bob =" " class" " public new() = { }" "end" "type (*Scenario022*)Alice =" " class" " public new() = { }" "end"] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) MoveCursorToEndOfMarker(file,"(*Scenario021*)") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" printf "First-%s\n" tooltip Assert.IsTrue(tooltip.Contains("Bob =")) MoveCursorToEndOfMarker(file,"(*Scenario022*)") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" printf "First-%s\n" tooltip Assert.IsTrue(tooltip.Contains("Alice =")) member private this.QuickInfoResolutionTest lines queries = let code = [ yield "#light" yield! lines ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) // Move along the entire length of the identifier checking that the tooltip text contains something familiar for (initial,ident:string,expectedText) in queries do for i in 0..ident.Length-1 do let marker = initial+ident.[0..i-1] MoveCursorToEndOfMarker(file,marker) let tooltip = time1 GetQuickInfoAtCursor file "Time for tooltip" printf "QuickInfo at marker '%s' is '%s', expect '%s'\n" marker tooltip expectedText Assert.IsTrue(tooltip.Contains(expectedText)) member public this.GetLongPathsTestCases() = ["let test0 = System.Console.In" "let test0b = System.Collections.Generic.List()" "let test0c = System.Collections.Generic.KeyNotFoundException()" "type Test0d = System.Collections.Generic.List" "type Test0e = System.Collections.Generic.KeyNotFoundException"], // The quick info specification // Some of the expected quick info text [("let test0 = ","System" ,"namespace System"); ("let test0 = System.","Console" ,"Console ="); ("let test0 = System.Console.","In" ,"System.Console.In"); ("let test0 = System.Console.","In" ,"TextReader"); ("let test0b = ","System" ,"namespace System"); ("let test0b = System.","Collections" ,"namespace System.Collections"); ("let test0b = System.Collections.","Generic" ,"namespace System.Collections.Generic"); ("let test0b = System.Collections.Generic.","List" ,"List()"); // note resolves to constructor ("let test0c = ","System" ,"namespace System"); ("let test0c = System.","Collections" ,"namespace System.Collections"); ("let test0c = System.Collections.","Generic" ,"namespace System.Collections.Generic"); ("let test0c = System.Collections.Generic.","KeyNotFoundException" ,"KeyNotFoundException()"); // note resolves to constructor ("type Test0d = ","System" ,"namespace System"); ("type Test0d = System.","Collections" ,"namespace System.Collections"); ("type Test0d = System.Collections.","Generic" ,"namespace System.Collections.Generic"); ("type Test0d = System.Collections.Generic.","List" ,"Generic.List"); // note resolves to type ("type Test0e = ","System" ,"namespace System"); ("type Test0e = System.","Collections" ,"namespace System.Collections"); ("type Test0e = System.Collections.","Generic" ,"namespace System.Collections.Generic"); ("type Test0e = System.Collections.Generic.","KeyNotFoundException","Generic.KeyNotFoundException"); // note resolves to type ] [] [] member public this.``LongPaths``() = let text,cases = this.GetLongPathsTestCases() this.QuickInfoResolutionTest text cases [] [] member public this.``Global.LongPaths``() = let text,cases = this.GetLongPathsTestCases() let replace (s:string) = s.Replace("System", "global.System") let text = text |> List.map (fun s -> replace s) let cases = cases |> List.filter (fun (a,_,_) -> a.Contains "System") |> List.map (fun (a,b,expectedResult) -> replace a, replace b, expectedResult) this.QuickInfoResolutionTest text cases [] member public this.``TypeAndModuleReferences``() = this.QuickInfoResolutionTest ["let test1 = List.length" "let test2 = List.Empty" "let test3 = (\"1\").Length" "let test3b = (id \"1\").Length"] // The quick info specification // Some of the expected quick info text [("let test1 = ","List" ,"module List"); ("let test1 = List.","length" ,"length"); ("let test2 = ","List" ,"Collections.List"); ("let test2 = List.","Empty" ,"List.Empty"); ("let test3 = (\"1\").","Length" ,"String.Length"); ("let test3b = (id \"1\").","Length" ,"String.Length") ] [] member public this.``ModuleNameAndMisc``() = this.QuickInfoResolutionTest ["module (*test3q*)MM3 =" " let y = 2" "let test4 = lock"; "let (*test5*) ffff xx = xx + 1" ] // The quick info specification // Some of the expected quick info text [("module (*test3q*)","MM3" ,"module MM3"); ("let test4 = ","lock" ,"lock"); ("let (*test5*) ","ffff" ,"ffff") ] [] member public this.``MemberIdentifiers``() = this.QuickInfoResolutionTest ["type TestType() =" " member (*test6*) xx.PPPP = 1" " member (*test7*) xx.QQQQ(x) = 3.0" "let test8 = (TestType()).PPPP"] // The quick info specification // Some of the expected quick info text [("member (*test6*) ","xx" ,"TestType"); ("member (*test6*) xx.","PPPP" ,"PPPP"); ("member (*test7*) ","xx" ,"TestType"); ("member (*test7*) xx.","QQQQ" ,"float"); ("member (*test7*) xx.","QQQQ" ,"float"); ("let test8 = (TestType()).", "PPPP" , "PPPP") ] [] member public this.``IdentifiersForFields``() = this.QuickInfoResolutionTest ["type TestType9 = { XXX : int }" "let test11 = { XXX = 1 }"] // The quick info specification // Some of the expected quick info text [("type TestType9 = { ", "XXX" , "XXX: int"); ("let test11 = { ", "XXX" , "XXX");] [] member public this.``IdentifiersForUnionCases``() = this.QuickInfoResolutionTest ["type TestType10 = Case1 | Case2 of int" "let test12 = (Case1,Case2(3))"] // The quick info specification // Some of the expected quick info text [("type TestType10 = ", "Case1" , "union case TestType10.Case1"); ("type TestType10 = Case1 | ", "Case2" , "union case TestType10.Case2"); ("let test12 = (", "Case1" , "union case TestType10.Case1"); ("let test12 = (Case1,", "Case2" , "union case TestType10.Case2");] [] member public this.``IdentifiersInAttributes``() = this.QuickInfoResolutionTest ["[<(*test13*)System.CLSCompliant(true)>]" "let test13 = 1" "open System" "[<(*test14*)CLSCompliant(true)>]" "let test14 = 1"] // The quick info specification // Some of the expected quick info text [("[<(*test13*)", "System" , "namespace System"); ("[<(*test13*)System.", "CLSCompliant" , "CLSCompliantAttribute"); ("[<(*test14*)", "CLSCompliant" , "CLSCompliantAttribute");] [] member public this.``ArgumentAndPropertyNames``() = this.QuickInfoResolutionTest ["type R = { mutable AAA : int }" " static member M() = { AAA = 1 }" "let test13 = R.M(AAA=3)" "type R2() = " " static member M() = System.Reflection.InterfaceMapping()" "" "let test14 = R2.M(InterfaceMethods= [| |])" "" "let test15 = new System.Reflection.AssemblyName(Name=\"Foo\")" "let test16 = new System.Reflection.AssemblyName(assemblyName=\"Foo\")"] // The quick info specification // Some of the expected quick info text [("let test13 = R.M(", "AAA" , "R.AAA: int"); ("let test14 = R2.M(", "InterfaceMethods" , "field System.Reflection.InterfaceMapping.InterfaceMethods"); ("let test15 = new System.Reflection.AssemblyName(", "Name" , "property System.Reflection.AssemblyName.Name"); ("let test16 = new System.Reflection.AssemblyName(", "assemblyName", "argument assemblyName")] /// Quickinfo was throwing an exception when the mouse was over the end of a line. [] member public this.``AtEndOfLine``() = let fileContent = """#light""" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "#light" "Bug:" [] member public this.``Regression.FieldRepeatedInToolTip.Bug3538``() = this.AssertIdentifierInToolTipExactlyOnce """#light open System.Runtime.InteropServices [] type A() = [] val mutable x : int""" "LayoutKind.Expl" "Explicit" [] member public this.``Regression.FieldRepeatedInToolTip.Bug3818``() = this.AssertIdentifierInToolTipExactlyOnce """#light [] type A() = do ()""" "Inherite" "Inherited" // Get the tooltip at "Inherite" & Verify that it contains the 'Inherited' fild exactly once [] member public this.``MethodAndPropTooltip``() = let fileContent = """#light open System do Console.Clear() Console.BackgroundColor |> ignore""" this.AssertIdentifierInToolTipExactlyOnce fileContent "Console.Cle" "Clear" this.AssertIdentifierInToolTipExactlyOnce fileContent "Console.Back" "BackgroundColor" [] member public this.``Regression.StaticVsInstance.Bug3626``() = let fileContent = """ type Foo() = member this.Bar () = "hllo" static member Bar() = 13 let z = (*int*) Foo.Bar() let Hoo = new Foo() let y = (*string*) Hoo.Bar() """ // Get the tooltip at "Foo.Bar(" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*int*) Foo.Ba","Foo.Bar") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*int*) Foo.Ba","-> int") // Get the tooltip at "Hoo.Bar(" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*string*) Hoo.Ba","Foo.Bar") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*string*) Hoo.Ba","-> string") [] member public this.``Class.OnlyClassInfo``() = let fileContent = """type TT(x : int, ?y : int) = class end""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"type T","type TT") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "type T" "---" [] member public this.``Async.AsyncToolTips``() = let fileContent = """let a = async { let ms = new System.IO.MemoryStream(Array.create 1000 1uy) let toFill = Array.create 2000 0uy let! x = ms.AsyncRead(2000) return x }""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"asy","AsyncBuilder") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "asy" "---" [] member public this.``Regression.Exceptions.Bug3723``() = let fileContent = """exception E3E of int * int exception E4E of (int * int) exception E5E = E4E""" // E3E should be un-parenthesized this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "exception E3" "(int * int)" // E4E should be parenthesized this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"exception E4","(int * int)") // E5E is an alias - should contain name of the aliased exception this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"exception E5","E4E") [] member public this.``Regression.Classes.Bug4066``() = let fileContent = """type Foo() as this = do this |> ignore member this.Bar() = this""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"type Foo() as thi","this") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "type Foo() as thi" "ref" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"do thi","this") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "do thi" "ref" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"member thi","this") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "member thi" "ref" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"Bar() = thi","this") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "Bar() = thi" "ref" [] member public this.``Regression.Classes.Bug2362``() = let fileContent = """let append mm nn = fun ac -> mm (nn ac)""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let appen","mm:('a -> 'b) -> nn:('c -> 'a) -> ac:'c -> 'b") // check consistency of QuickInfo for 'm' and 'n', which is the main point of this test this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let append m","'a -> 'b") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let append mm n","'c -> 'a") [] member public this.``Regression.ModuleAlias.Bug3790a``() = let fileContent = """module ``Some`` = Microsoft.FSharp.Collections.List module None = Microsoft.FSharp.Collections.List""" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "module ``So" "Option" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "module No" "Option" [] member public this.``Regression.ModuleAlias.Bug3790b``() = let code = [ "#light" "module ``Some`` = Microsoft.FSharp.Collections.List" "let _ = ``Some``.append [] []" ] let (_, _, file) = this.CreateSingleFileProject(code) // Test quickinfo in place where the declaration is used MoveCursorToEndOfMarker(file, "= ``So") let tooltip = GetQuickInfoAtCursor file AssertNotContains(tooltip, "Option") [] member public this.``Regression.ActivePatterns.Bug4100a``() = let fileContent = """let (|Lazy|) x = x match 0 with | Lazy y -> ()""" // Test quickinfo in place where the declaration is used this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "with | Laz" "'?" // e.g. "Lazy: '?3107 -> '?3107", "Lazy: 'a -> 'a" will be fine [] member public this.``Regression.ActivePatterns.Bug4100b``() = let fileContent = """let Some (a:int) = a match None with | Some _ -> () | _ -> () let (|NSome|) (a:int) = a let NSome (a:int) = a.ToString() match 0 with | NSome _ -> ()""" // This shouldn't be the local function - it should find the 'Some' union case this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "| Som" "int -> int" // This shouldn't find the function returning string but a pattern returning int this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "| NSom" "int -> string" [] member public this.``Regression.ActivePatterns.Bug4103``() = let fileContent = """let (|Lazy|) x = x match 0 with | Lazy y -> ()""" // Test quickinfo in place where the declaration is used this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent "(|Laz" "Control.Lazy" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(|Laz","|Lazy|") // This test checks that we don't show any tooltips for operators // (which is currently not supported, but it used to collide with support for active patterns) [] member public this.``Regression.NoTooltipForOperators.Bug4567``() = let fileContent = """let ( |+| ) a b = a + b let n = 1 |+| 2 let b = true || false ()""" this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"( |+","") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"1 |+","") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"true |","") // Check to see that two distinct projects can be present [] member public this.``AcrossTwoProjects``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution,"testproject1") let file1 = AddFileFromText(project1,"File1.fs", ["#light" "type (*bob*)Bob1() = " " let x = 1"]) let file1 = OpenFile(project1,"File1.fs") let project2 = CreateProject(solution,"testproject2") let file2 = AddFileFromText(project2,"File2.fs", ["#light" "type (*bob*)Bob2() = " " let x = 1"]) let file2 = OpenFile(project2,"File2.fs") // Check Bob1 MoveCursorToEndOfMarker(file1,"type (*bob*)Bob") let tooltip = time1 GetQuickInfoAtCursor file1 "Time of file1 tooltip" printf "Tooltip for file1:\n%s\n" tooltip Assert.IsTrue(tooltip.Contains("Bob1 =")) // Check Bob2 MoveCursorToEndOfMarker(file2,"type (*bob*)Bob") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of file2 tooltip" printf "Tooltip for file2:\n%s\n" tooltip Assert.IsTrue(tooltip.Contains("Bob2 =")) // In this bug, relative paths with .. in them weren't working. [] [] member public this.``BugInRelativePaths``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["#light" "type Bob() = " " let x = 1"]) let file2 = AddFileFromText(project,"..\\File2.fs", ["#light" "let bob = new File1.Bob()"]) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"..\\File2.fs") // Get the tooltip at type Bob MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of first tooltip" printf "First-%s\n" tooltip AssertContains(tooltip,"File1.Bob") // Get the tooltip again MoveCursorToEndOfMarker(file2,"let bo") let tooltip = time1 GetQuickInfoAtCursor file2 "Time of second tooltip" printf "Second-%s\n" tooltip AssertContains(tooltip,"File1.Bob") // QuickInfo over a type that references types in an unreferenced assembly works. [] [] member public this.``MissingDependencyReferences.QuickInfo.Bug5409``() = let code = ["#light" "let myForm = new System.Windows.Forms.Form()" ] let (_, _, file) = this.CreateSingleFileProject(code, references = ["System.Windows.Forms"]) MoveCursorToEndOfMarker(file,"myFo") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" printf "First-%s\n" tooltip // ShowErrors(project) AssertContains(tooltip,"Form") /// In this bug, the EOF token was reached before the parser could close the (, with, and let /// The fix--at the point in time it was fixed--was to modify the parser to send a limitted number /// of additional EOF tokens to allow the recovery code to proceed up the change of productions /// in the grammar. [] member public this.``Regression.Bug1605``() = let fileContent = """let rec f l = match l with | [] -> string.Format( | x::xs -> "hello" """ // This string doesn't matter except that it should prove there is some datatip present. this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"| [] -> str","string") [] member public this.``Regression.Bug4642``() = let fileContent = """ "AA".Chars """ this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"\"AA\".Ch","int -> char") /// Complete a member completion and confirm that its data tip contains the fragments /// in rhsContainsOrder member public this.AssertMemberDataTipContainsInOrder(code : list,marker,completionName,rhsContainsOrder) = let code = code |> Seq.collect (fun s -> s.Split [|'\r'; '\n'|]) |> List.ofSeq let (_, project, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) TakeCoffeeBreak(this.VS) (* why needed? *) MoveCursorToEndOfMarker(file,marker) let completions = CtrlSpaceCompleteAtCursor file match completions |> Array.tryFind (fun (name, _, _, _) -> name = completionName) with | Some(_, _, descrFunc, _) -> let descr = descrFunc() AssertContainsInOrder(descr,rhsContainsOrder) | None -> Console.WriteLine("Could not find completion name '{0}'", completionName) ShowErrors(project) Assert.Fail() [] //``CompletiongListItem.DocCommentsOnMembers`` and with //Regression 5856 member public this.``Regression.MemberDefinition.DocComments.Bug5856_1``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "type MyType = " " /// Hello" " static member Overload() = 0" " /// Hello2" " static member Overload(x:int) = 0" " /// Hello3" " static member NonOverload() = 0" "MyType." ] , (* marker *) "MyType.", (* completed item *) "Overload", (* expect to see in order... *) [ "static member MyType.Overload : unit -> int"; "static member MyType.Overload : x:int -> int"; "Hello" ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_2``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Outer =" " /// Comment" " module Inner =" " let x = 1" "let x() = " " Outer." ] , (* marker *) "Outer.", (* completed item *) "Inner", (* expect to see in order... *) [ "module Inner"; "from"; "Outer"; "Comment" ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_3``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Module =" " /// Union comment" " type Union =" " /// Case comment" " | Case of int" "let x() = " " Module." ] , (* marker *) "Module.", (* completed item *) "Case", (* expect to see in order... *) [ "union case Module.Union.Case: int -> Module.Union"; "Case comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_4``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Module =" " /// Union comment" " type Union =" " /// Case comment" " | Case of int" "let x() = " " Module." ] , (* marker *) "Module.", (* completed item *) "Union", (* expect to see in order... *) [ "type Union = | Case of int"; //"Full name:"; "Module.Union"; "Union comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_5``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Module =" " /// Pattern comment" " let (|Pattern|) = 0" "let x() = " " Module." ] , (* marker *) "Module.", (* completed item *) "Pattern", (* expect to see in order... *) [ "active recognizer Pattern: int"; //"Full name:"; "Module"; "|Pattern|"; "Pattern comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_6``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Module =" " /// A comment" " exception MyException of int" "let x() = " " Module." ] , (* marker *) "Module.", (* completed item *) "MyException", (* expect to see in order... *) [ "exception MyException of int"; //"Full name:"; "Module"; "MyException"; "A comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_7``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "type Record = {" " /// A comment" " field : int" " }" "let record = {field = 1}" "let x() =" " record." ] , (* marker *) "record.", (* completed item *) "field", (* expect to see in order... *) [ "Record.field: int"; "A comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_8``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "type Foo =" " /// A comment" " static member Property" " with get() = \"\"" "let x() = " " Foo." ] , (* marker *) "Foo.", (* completed item *) "Property", (* expect to see in order... *) [ "property Foo.Property: string"; "A comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_9``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "module Module =" " /// A comment" " type Class = class end" "let x() = " " Module." ] , (* marker *) "Module.", (* completed item *) "Class", (* expect to see in order... *) [ "type Class"; //"Full name:"; "Module"; "Class"; "A comment"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_10``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "System.String." ] , (* marker *) "String.", (* completed item *) "Format", (* expect to see in order... *) [ "System.String.Format("; "[Filename:"; "mscorlib.dll]"; "[Signature:M:System.String.Format(System.String,System.Object[])]"; ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_12``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "System." ] , (* marker *) "System.", (* completed item *) "Action", (* expect to see in order... *) [ "type Action"; " delegate of" "[Filename:"; "mscorlib.dll]"; "[Signature:T:System.Action]" "type Action<"; " delegate of" "[Filename:"; "mscorlib.dll]"; "[Signature:T:System.Action`1]" "type Action<"; " delegate of" "[Filename:"; "mscorlib.dll]"; "[Signature:T:System.Action`2]" ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_13``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "System.Collections.Generic.Dictionary." ] , (* marker *) "Dictionary.", (* completed item *) "KeyCollection", (* expect to see in order... *) [ "type KeyCollection<"; "member CopyTo"; "[Filename:"; "mscorlib.dll]"; "[Signature:T:System.Collections.Generic.Dictionary`2.KeyCollection]" ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_14``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "System." ] , (* marker *) "System.", (* completed item *) "ArgumentException", (* expect to see in order... *) [ "type ArgumentException"; "member Message"; "[Filename"; "mscorlib.dll]"; "[Signature:T:System.ArgumentException]" ] ) [] member public this.``Regression.MemberDefinition.DocComments.Bug5856_15``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "System.AppDomain." ] , (* marker *) "AppDomain.", (* completed item *) "CurrentDomain", (* expect to see in order... *) [ "property System.AppDomain.CurrentDomain: System.AppDomain"; "[Filename"; "mscorlib.dll]"; "[Signature:P:System.AppDomain.CurrentDomain]" ] ) [] member public this.``Regression.ExtensionMethods.DocComments.Bug6028``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ @"open System.Linq let rec query:System.Linq.IQueryable<_> = null query." ] , (* marker *) "query.", (* completed item *) "All", (* expect to see in order... *) [ "IQueryable.All"; "[Filename"; "System.Core.dll]"; "[Signature:M:System.Linq.Enumerable.All``1" ] ) [] member public this.``Regression.OnMscorlibMethodInScript.Bug6489``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "let Func() = let actual = [| |] actual." ] , (* marker *) "actual.", (* completed item *) "CopyTo", (* expect to see in order... *) [ "[Filename"; "Reference Assemblies\Microsoft\Framework\.NETFramework"; "mscorlib.dll]"; "[Signature:M:System.Array.CopyTo(" ] ) /// BUG: intelisense on "self" parameter in implicit ctor classes is wrong [] member public this.``Regression.CompListItemInfo.Bug5694``() = this.AssertMemberDataTipContainsInOrder ((*code *) [ "type Form2() as self =" " inherit System.Windows.Forms.Form()" " let f() = self." ] , (* marker *) "self.", (* completed item *) "AcceptButton", (* expect to see in order... *) [ "[Filename:"; "System.Windows.Forms.dll]" "[Signature:P:System.Windows.Forms.Form.AcceptButton]" ] ) /// Bug 4592: Check that ctors are displayed from C# classes, i.e. the "new" lines below. [] member public this.``Regression.Class.Printing.CSharp.Classes.Only..Bug4592``() = this.AssertMemberDataTipContainsInOrder ((*code *) ["#light"; "System.Random"] , (* marker *) "System.Random", (* completed item *) "Random", (* expect to see in order... *) ["type Random ="; " new : unit -> Random + 1 overload"; " member Next : unit -> int + 2 overloads"; " member NextBytes : buffer:byte[] -> unit"; (* methods sorted alpha *) " member NextDouble : unit -> float";] ) [] member public this.``GenericDotNetMethodShowsComment``() = this.AssertMemberDataTipContainsInOrder ((*code *) ["System.Linq.ParallelEnumerable." ] , (* marker *) "ParallelEnumerable.", (* completed item *) "ElementAt", (* expect to see in order... *) [ "System.Core"; "Signature:M:System.Linq.ParallelEnumerable.ElementAt``1(System.Linq.ParallelQuery{``0},System.Int32" ] ) /// Bug 4624: Check the order in which members are printed, C# classes [] member public this.``Regression.Class.Printing.CSharp.Classes.Bug4624``() = //let f (x:System.Security.Policy.CodeConnectAccess) = x. this.AssertMemberDataTipContainsInOrder ((*code *) ["#light"; "System.Security.Policy.CodeConnectAccess"], (* marker *) "System.Security.Policy.CodeConnectAccess", (* completed item *) "CodeConnectAccess", (* expect to see in order... *) // Pre fix output is mixed up [ "type CodeConnectAccess ="; " new : allowScheme:string * allowPort:int -> CodeConnectAccess"; " member Equals : o:obj -> bool"; " member GetHashCode : unit -> int"; (* method *) " member Port : int"; " member Scheme : string"; " static val DefaultPort : int"; (* static val after instance, but before static method *) " static val OriginPort : int"; " static val OriginScheme : string"; " static val AnyScheme : string"; " static member CreateAnySchemeAccess : allowPort:int -> CodeConnectAccess"; " ..."; ]) /// Bug 4624: Check the order in which members are printed, F# classes [] member public this.``Regression.Class.Printing.FSharp.Classes.Bug4624``() = this.AssertMemberDataTipContainsInOrder ((*code *) ["#light"; "type F1() = "; " class "; " inherit System.Windows.Forms.Form()"; " abstract AAA : int with get"; " abstract ZZZ : int with get"; " abstract AAA : bool with set"; " val x : F1"; " static val x : F1"; " static member A() = 12"; " member this.B() = 12"; " static member C() = 12"; " member this.D() = 12"; " member this.D with get() = 12 and set(12) = ()"; " member this.D(x:int,y:int) = 12"; " member this.D(x:int) = 12"; " member this.D x y z = [1;x;y;z]"; " override this.ToString() = \"\""; " interface System.IDisposable with"; " override this.Dispose() = () "; " end"; " end"; "type A1 = F1"], (* marker *) "type A1 = F1", (* completed item *) "F1", (* expect to see in order... *) // Pre fix output is mixed up [ "type F1 ="; " inherit Form"; " interface IDisposable"; " new : unit -> F1"; " val x: F1"; " abstract member AAA : int"; " abstract member ZZZ : int"; " abstract member AAA : bool with set"; " member B : unit -> int"; " member D : unit -> int"; " member D : x:int -> int"; " ..."; //" member D : int"; //" member D : int with set"; //" static val x: F1"; //" static member A : unit -> int"; //" static member C : unit -> int"; ]) (* TODO why does this portion not work? specifically, last assert fails printfn "changing file..." ReplaceFileInMemory file1 ["#light" "let xx = \"foo\"" // now x is string "printfn \"hi\""] // assert p1 xx is string MoveCursorToEndOfMarker(file1,"let x") TakeCoffeeBreak(this.VS) let tooltip = GetQuickInfoAtCursor file1 AssertContains(tooltip,"string") // assert p2 yy is int MoveCursorToEndOfMarker(file2,"let y") let tooltip = GetQuickInfoAtCursor file2 AssertContains(tooltip,"int") AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) printfn "rebuilding dependent project..." // (re)build p1 (with xx now string) Build(project1) |> ignore TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) // assert p2 yy is now string MoveCursorToEndOfMarker(file2,"let y") let tooltip = GetQuickInfoAtCursor file2 AssertContains(tooltip,"string") *) (*------------------------------------------IDE automation starts here -------------------------------------------------*) [] member public this.``Automation.Regression.AccessibilityOnTypeMembers.Bug4168``() = let fileContent = """module Test type internal Foo2(*Marker*) () = member public this.Prop1 = 12 member internal this.Prop2 = 12 member private this.Prop3 = 12 public new(x:int) = new Foo2() internal new(x:int,y:int) = new Foo2() private new(x:int,y:int,z:int) = new Foo2()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "type internal Foo2") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "private new : x:int * y:int * z:int -> Foo2") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "new : x:int * y:int -> Foo2") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "private new") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "member Prop1") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "member Prop2") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "member private Prop3") [] member public this.``Automation.Regression.AccessorsAndMutators.Bug4276``() = let fileContent = """type TestType1(*Marker1*)( x : int , y : int ) = let mutable x = x let mutable y = y // Property with getter and setter member this.X with get () = x and set x' = x <- x' // Property with setter only member this.Y with set y' = y <- y' // Property with getter only member this.Length with get () = sqrt(float (x * x + y * y)) member this.Item with get (i : int) = match i with | 0 -> x | 1 -> y | _ -> failwith "Incorrect index" let point = TestType1(10,10) point.X <- 3 point.Y <- 4 let x = point.[0] let y = point.[1] let bitArray = new System.Collections.BitArray(*Marker2*)(1) point.Length |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "type TestType1") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Length : float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Item") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member X : int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Y : int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "type BitArray") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "member Length : int") // trimmed quick info doesn't contain all entries this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "member Count : int") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker2*)" "get_Length" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker2*)" "set_Length" [] [] member public this.``Automation.AutoOpenMyNamespace``() = let fileContent ="""namespace System.Numerics type t = BigInteger(*Marker1*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "r(*Marker1*)", "type BigInteger") [] member public this.``Automation.Regression.BeforeAndAfterIdentifier.Bug4371``() = let fileContent = """module Test let f arg1 (arg2, arg3, arg4) arg5 = 42 let goo a = f(*Marker1*) 12 a type printer = System.Console let z = (*Marker3*)printer.BufferWidth(*Marker2*)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "Full name: Test.f") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "val f") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "property System.Console.BufferWidth: int") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker3*)","Full name: Test.printer") [] member public this.``Automation.Regression.ConstrutorWithSameNameAsType.Bug2739``() = let fileContent = """namespace AA module AA = type AA = | AA(*Marker1*) = 1 | BB = 2 type BB = { BB(*Marker2*) : string; }""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "AA.AA: AA") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "BB.BB: string") [] member public this.``Automation.Regression.EventImplementation.Bug5471``() = let fileContent = """namespace regressiontest open System open System.Windows open System.Windows.Input type CommandReference() = inherit Freezable() static let commandProperty = DependencyProperty.Register( "Command", typeof, typeof, PropertyMetadata(PropertyChangedCallback(fun o e -> CommandReference.OnCommandChanged(o, e)))) let evt = Event() member this.Command with get () = this.GetValue(commandProperty) :?> ICommand and set v = this.SetValue(commandProperty, (v: ICommand) ) interface ICommand with member this.CanExecute(parameter) = if this.Command <> null then this.Command.CanExecute(parameter) else false member this.Execute(parameter) = this.Command.Execute(parameter) [] member x.CanExecuteChanged(*Marker*) = evt.Publish static member OnCommandChanged(d: DependencyObject, e: DependencyPropertyChangedEventArgs) = let commandReference = (d :?> CommandReference) :> ICommand let oldCommand = e.OldValue :?> ICommand let newCommand = e.NewValue :?> ICommand if oldCommand <> null then // Error: This expression has type IEvent but is here used with type EventHandler oldCommand.CanExecuteChanged.RemoveHandler(commandReference.CanExecuteChanged) if newCommand <> null then // Error: This expression has type IEvent but is here used with type EventHandler newCommand.CanExecuteChanged.AddHandler(commandReference.CanExecuteChanged) override this.CreateInstanceCore() = raise (NotImplementedException())""" let (_, _, file) = this.CreateSingleFileProject(fileContent, references = ["PresentationCore"; "WindowsBase"]) MoveCursorToStartOfMarker(file, "(*Marker*)") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertContains(tooltip, "override CommandReference.CanExecuteChanged : IEvent") AssertContains(tooltip, "regressiontest.CommandReference.CanExecuteChanged") [] member public this.``Automation.ExtensionMethod``() = let fileContent ="""namespace TestQuickinfo module BCLExtensions = type System.Random with /// BCL class Extension method member this.NextDice() = this.Next() + 1 /// BCL class Extension property member this.DiceValue with get() = this.NextDice type System.ConsoleKeyInfo with /// BCL struct extension method member this.ExtentionMethod() = 100 /// BCL struct extension property member this.ExtentionProperty with get() = "Foo" module OwnCodeExtensions = /// fs class type FSClass() = class end /// fs struct type FSStruct(x:int) = struct end type FSClass with /// fs class extension method member this.ExtentionMethod() = 100 /// fs class extension property member this.ExtentionProperty with get() = "Foo" type FSStruct with /// fs struct extension method member this.ExtentionMethod() = 100 /// fs struct extension property member this.ExtentionProperty with get() = "Foo" module BCLClass = open BCLExtensions let rnd = new System.Random() rnd.DiceValue(*Marker11*) |>ignore rnd.NextDice(*Marker12*)() |>ignore module BCLStruct = open BCLExtensions let cki = new System.ConsoleKeyInfo() cki.ExtentionMethod(*Marker21*) |>ignore cki.ExtentionProperty(*Marker22*) |>ignore module OwnClass = open OwnCodeExtensions let rnd = new FSClass() rnd.ExtentionMethod(*Marker31*) |>ignore rnd.ExtentionProperty(*Marker32*) |>ignore module OwnStruct = open OwnCodeExtensions let cki = new FSStruct(100) cki.ExtentionMethod(*Marker41*) |>ignore cki.ExtentionProperty(*Marker42*) |>ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "System.Random.DiceValue: unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "BCL class Extension property") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "member System.Random.NextDice : unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "BCL class Extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "member System.ConsoleKeyInfo.ExtentionMethod : unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "BCL struct extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "System.ConsoleKeyInfo.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "BCL struct extension property") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker31*)", "member FSClass.ExtentionMethod : unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker31*)", "fs class extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker32*)", "FSClass.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker32*)", "fs class extension property") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker41*)", "member FSStruct.ExtentionMethod : unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker41*)", "fs struct extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker42*)", "FSStruct.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker42*)", "fs struct extension property") [] member public this.``Automation.Regression.GenericFunction.Bug2868``() = let fileContent ="""module Test // Hovering over a generic function (generic argument decorated with [] attribute yields a bad tooltip let F (f :_ -> float<_>) = fun x -> f (x+1.0) let rec Gen<[] 'u> (f:float<'u> -> float<'u>) = Gen(*Marker*)(F f)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val Gen : f:(float -> float) -> 'a") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "Exception" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "thrown" [] [] member public this.``Automation.IdentifierHaveDiffMeanings``() = let fileContent ="""namespace NS module float(*Marker1_1*) = let GenerateTuple = fun x -> let tuple = (x,x.ToString(),(float(*Marker1_2*))x, ( fun y -> (y.ToString(),y+1)) ) tuple let MySeq : (*Marker2_1*)seq = seq(*Marker2_2*) { for i in 1..9 do let myTuple = GenerateTuple i let fieldInt,fieldString,fieldFloat,_ = myTuple yield fieldFloat } let MySet : (*Marker3_1*)Set = MySeq |> Array.ofSeq |> List.ofArray |> Set(*Marker3_2*).ofList let int(*Marker4_1*) : int(*Marker4_2*) = 1 type int(*Marker4_3*)() = member this.M = 1 type T(*Marker5_1*)() = [] val mutable T : T let T = new T() let t = T.T.T.T(*Marker5_2*); type ValType() = member this.Value with get(*Marker6_1*) () = 10 and set(*Marker6_2*) x = x + 1 |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_1*)", "module float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val float : 'T -> float (requires member op_Explicit)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "Full name: Microsoft.FSharp.Core.Operators.float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_3*)", "type float = System.Double") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_3*)", "Full name: Microsoft.FSharp.Core.float") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker2_1*)","type seq<'T> = System.Collections.Generic.IEnumerable<'T>") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker2_1*)","Full name: Microsoft.FSharp.Collections.seq<_>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val seq : seq<'T> -> seq<'T>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "Full name: Microsoft.FSharp.Core.Operators.seq") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker3_1*)","type Set<'T (requires comparison)> =") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker3_1*)","Full name: Microsoft.FSharp.Collections.Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "module Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "Functional programming operators related to the Set<_> type") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "val int : int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "Full name: NS.float.int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "type int = int32") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "Full name: Microsoft.FSharp.Core.int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_3*)", "type int =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_3*)", "member M : int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "type T =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "new : unit -> T") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "val mutable T: T") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_2*)", "T.T: T") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker6_1*)", "member ValType.Value : int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker6_2*)", "member ValType.Value : int with set") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker6_2*)" "Microsoft.FSharp.Core.ExtraTopLevelOperators.set" [] member public this.``Automation.Regression.ModuleIdentifier.Bug2937``() = let fileContent ="""module XXX(*Marker*) type t = C3""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "module XXX") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "\n" [] member public this.``Automation.Regression.NamesArgument.Bug3818``() = let fileContent ="""module m [] type T = class end""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "property System.AttributeUsageAttribute.AllowMultiple: bool") [] [] member public this.``Automation.OnUnitsOfMeasure``() = let fileContent ="""namespace TestQuickinfo module TestCase1 = [] /// this type represents kilogram in UOM type kg let mass(*Marker11*) = 2.0 module TestCase2 = [] /// use Set as the type name of UoM type Set let v1 = [1.0 .. 2.0 .. 5.0] |> Seq.nth 1 (if v1 = 3.0 then 0 else 1) |> ignore let twoSets = 2.0 [1.0] |> Set.ofList |> Set(*Marker22*).isEmpty |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "val mass : float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "Full name: TestQuickinfo.TestCase1.mass") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "inherits: System.ValueType") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "[]") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "type kg") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "this type represents kilogram in UOM") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "Full name: TestQuickinfo.TestCase1.kg") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "[]") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "type Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "use Set as the type name of UoM") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "Full name: TestQuickinfo.TestCase2.Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "module Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "from Microsoft.FSharp.Collections") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "Functional programming operators related to the Set<_> type.") [] member public this.``Automation.OverRiddenMembers``() = let fileContent ="""namespace QuickinfoGeneric module FSharpOwnCode = [] type TextOutputSink() = abstract WriteChar : char -> unit abstract WriteString : string -> unit default x.WriteString(s) = s |> String.iter x.WriteChar type ByteOutputSink() = inherit TextOutputSink() default sink.WriteChar(c) = System.Console.Write(c) override sink.WriteString(s) = System.Console.Write(s) let sink = new ByteOutputSink() sink.WriteChar(*Marker11*)('c') sink.WriteString(*Marker12*)("Hello World!")""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "override ByteOutputSink.WriteChar : c:char -> unit") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "override ByteOutputSink.WriteString : s:string -> unit") [] member public this.``Automation.Regression.QuotedIdentifier.Bug3790``() = let fileContent ="""module Test module ``Some``(*Marker1*) = Microsoft.FSharp.Collections.List let _ = ``Some``(*Marker2*).append [] [] """ this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "``(*Marker1*)", "module List") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "``(*Marker1*)" "Option.Some" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "``(*Marker2*)", "module List") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "``(*Marker2*)" "Option.Some" [] [] member public this.``Automation.Setter``() = let fileContent ="""type T() = member this.XX with set ((a:int), (b:int), (c:int)) = () (new T()).XX(*Marker1*) <- (1,2,3) //=================================================== // More cases: //=================================================== type IFoo = interface abstract foo : int -> int end let i : IFoo = Unchecked.defaultof i.foo(*Marker2*) |> ignore //=================================================== type Rec = { bar:int->int->int } let r = {bar = fun x y -> x + y } r.bar(*Marker3*) 1 2 |>ignore //=================================================== type M() = member this.baz x y = x + y let m = new M() m.baz(*Marker3*) 1 2 |>ignore //=================================================== type T2() = member this.Foo(a,b) = "" let t = new T2() t.Foo(*Marker4*)(1,2) |>ignore //=================================================== let foo (x:int) (y:int) : int = 1 foo(*Marker5*) 2 3 |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "T.XX: int * int * int") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker1*)" "->" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "IFoo.foo : int -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "Rec.bar: int -> int -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "T2.Foo : a:'a * b:'b -> string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val foo : int -> int -> int") [] member public this.``Automation.Regression.TupleException.Bug3723``() = let fileContent ="""namespace TestQuickinfo exception E3(*Marker1*) of int * int exception E4(*Marker2*) of (int * int) exception E5(*Marker3*) = E4""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "exception E3 of int * int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "Full name: TestQuickinfo.E3") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "exception E4 of (int * int)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "Full name: TestQuickinfo.E4") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "exception E5 = E4") [] member public this.``Automation.TypeAbbreviations``() = let fileContent ="""namespace NS module TypeAbbreviation = type MyInt(*Marker1_1*) = int type PairOfFloat(*Marker2_1*) = float * float type AbAttrName(*Marker5_1*) = AbstractClassAttribute type IA(*Marker3_1*) = abstract AbstractMember : int -> int [] type ClassIA(*Marker3_2*)() = interface IA with member this.AbstractMember x = x + 1 type GenericClass(*Marker4_1*)<'a when 'a :> IA>() = static member StaticMember(x:'a) = x.AbstractMember(1) let GenerateTuple = fun ( x : MyInt) -> let myInt(*Marker1_2*),float1,float2,function1 = (x,(float)x,(float)x, ( fun y -> (y.ToString(),y+1)) ) myInt,((float1,float2):PairOfFloat),function1 let MySeq(*Marker2_2*) = seq { for i in 1..9 do let myInt,pairofFloat,function1 = GenerateTuple i yield pairofFloat } let genericClass(*Marker4_2*) = new GenericClass()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_1*)", "type MyInt = int") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_1*)", "Full name: NS.TypeAbbreviation.MyInt") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val myInt : MyInt") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_1*)", "type PairOfFloat = float * float") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_1*)", "Full name: NS.TypeAbbreviation.PairOfFloat") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val MySeq : seq") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "Full name: NS.TypeAbbreviation.MySeq") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_1*)", "type IA =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_1*)", "abstract member AbstractMember : int -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "type ClassIA =") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "Full name: NS.TypeAbbreviation.ClassIA") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "implements: IA") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "type GenericClass<'a (requires 'a :> IA)> =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "static member StaticMember : x:'a -> int") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "Full name: NS.TypeAbbreviation.GenericClass<_>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "val genericClass : GenericClass") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "Full name: NS.TypeAbbreviation.genericClass") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "type AbAttrName = AbstractClassAttribute") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "implements: System.Runtime.InteropServices._Attribute") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_2*)", "type AbAttrName = AbstractClassAttribute") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_2*)", "implements: System.Runtime.InteropServices._Attribute") [] member public this.``Automation.Regression.TypeInferenceSenarios.Bug2362&3538``() = let fileContent ="""module Test.Module1 open System open System.Diagnostics open System.Runtime.InteropServices #nowarn "9" let append m(*Marker1*) n(*Marker2*) = fun ac(*Marker3*) -> m (n ac) type Foo() as this(*Marker4*) = do this(*Marker5*) |> ignore member this.Bar() = this(*Marker6*) |> ignore () [] type A = [] val mutable x : int new () = { } member this.Prop = this.x let x = new (*Marker7*)A()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "val m : ('a -> 'b)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "val n : ('c -> 'a)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "val ac : 'c") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "val this : Foo") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val this : Foo") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker6*)", "val this : Foo") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker7*)","type A =") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker7*)","val mutable x: int") [] member public this.``Automation.Regression.TypemoduleConstructorLastLine.Bug2494``() = let fileContent ="""namespace NS open System //regression test for bug 2494 type PriorityQueue(*MarkerType*)<'k,'a> = | Nil(*MarkerDataConstructor*) | Branch of 'k * 'a * PriorityQueue<'k,'a> * PriorityQueue<'k,'a> module PriorityQueue(*Marker3*) = let empty = Nil let minKeyValue = function | Nil -> failwith "empty queue" | Branch(k,a,_,_) -> (k,a) let minKey pq = fst (minKeyValue pq(*MarkerVal*)) let singleton(*MarkerLastLine*) k a = Branch(k,a,Nil,Nil)""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerType*)", "type PriorityQueue") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerType*)", "Full name: NS.PriorityQueue<_,_>") //this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerType*)", "implements: IComparable") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerDataConstructor*)", "union case PriorityQueue.Nil: PriorityQueue<'k,'a>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "module PriorityQueue") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerVal*)", "val pq : PriorityQueue<'a,'b>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerLastLine*)", "val singleton : k:'a -> a:'b -> PriorityQueue<'a,'b>") [] member public this.``Automation.WhereQuickInfoShouldNotShowUp``() = let fileContent ="""namespace Test module Helper = /// Tests if passed System.Numerics.BigInteger(*Marker1*) argument is prime let IsPrime x = let mutable i = 2I let mutable foundFactor = false while not foundFactor && i < x do (* the most naive way to test for number being prime Works great for small int(*Marker2*) *) if x % i = 0I then foundFactor <- true i <- i + 1I not foundFactor module App = open Helper let sumOfAllPrimesUnder1Mi = #if TEST_TWO_MI seq(*Marker4*) { 1I .. 2000000I } #else seq { 1I .. 1000000I(*Marker7*) } #endif |> Seq.filter(IsPrime) // find result after filtering seq(*Marker3*) |> Seq.sum let myString hello = "hello"(*Marker5*) myString "myString"(*Marker8*) |> Seq.filter (fun c -> int c > 75) |> Seq.nth 0 |> (=) 'e'(*Marker6*) |> ignore""" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker1*)" "BigInteger" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker2*)" "int" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker3*)" "seq" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker4*)" "seq" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker5*)" "hello" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker6*)" "char" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker7*)" "bigint" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker8*)" "myString" [] member public this.``Automation.Regression.XmlDocComments.Bug3157``() = let fileContent ="""namespace TestQuickinfo module XmlComment = /// XmlComment J let func(*Marker*) x = /// XmlComment K let rec g x = 1 g x""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val func : x:'a -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "XmlComment J") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "Full name: TestQuickinfo.XmlComment.func") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "XmlComment K" [] member public this.``Automation.Regression.XmlDocCommentsOnExtensionMembers.Bug138112``() = let fileContent ="""module Module1 = type T() = /// XmlComment M1 member this.M1() = () type T with /// XmlComment M2 member this.M2() = () module public Extension = type T with /// XmlComment M3 member this.M3() = () open Module1 open Extension let x1 = T().M1(*Marker1*)() let x2 = T().M2(*Marker2*)() let x3 = T().M3(*Marker3*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "XmlComment M1") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "XmlComment M2") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "XmlComment M3") member private this.VerifyUsingFsTestLib fileContent queries crossProject = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let testLibCode ="""namespace FSTestLib /// DocComment: This is MyStruct type, represents a struct. type MyPoint = struct val mutable private m_X : float val mutable private m_Y : float new (x, y) = { m_X = x; m_Y = y } /// Gets and sets X member this.X with get () = this.m_X and set x = this.m_X <- x /// Gets and sets Y member this.Y with get () = this.m_Y and set y = this.m_Y <- y // Length of given Point member this.Len = sqrt ( this.X * this.X + this.Y * this.Y ) static member (+) (p1 : MyPoint, p2 : MyPoint) = MyPoint(p1.X + p2.X, p1.Y + p2.Y) end [] /// DocComment: This is my record type. type MyEmployee = { mutable Name : string; mutable Age : int; /// DocComment: Indicates whether the employee is full time or not mutable IsFTE : bool } interface System.IComparable with member this.CompareTo (emp : obj) = let r = emp :?> MyEmployee match r.IsFTE && this.IsFTE with | true -> this.Age - r.Age | _ -> System.Convert.ToInt32(this.IsFTE) - System.Convert.ToInt32(r.IsFTE) override this.ToString() = sprintf "%s is %d." this.Name this.Age /// DocComment: Method static member MakeDummy () = { Name = System.String.Empty; Age = -1; IsFTE = false } // TODO: Normally there's no DotCompletion after "this" here override this.Equals(ob : obj) = let r = ob :?> MyEmployee this.Name = r.Name && this.Age = r.Age && this.IsFTE = r.IsFTE /// DocComment: This is my interface type type IMyInterface = interface /// DocComment: abstract method in Interface abstract Represent : unit -> string end // TODO: add formatable ToString() /// DocComment: This is my discriminated union type type MyDistance = | Kilometers of float | Miles of float | NauticalMiles of float /// DocComment: Static Method static member toMiles x = Miles( match x with | Miles x -> x | Kilometers x -> x / 1.6 | NauticalMiles x -> x * 1.15 ) /// DocComment: Property member this.toNautical = NauticalMiles( match this with | Kilometers x -> x / 1.852 | Miles x -> x / 1.15 | NauticalMiles x -> x ) /// DocComment: Method member this.IncreaseBy dist = match this with | Kilometers x -> Kilometers (x + dist) | Miles x -> Miles (x + dist) | NauticalMiles x -> NauticalMiles (x + dist) /// DocComment: Event static member Event = let evnt = new Event() evnt /// DocComment: This is my enum type type MyColors = | /// DocComment: Field Red = 0 | Green = 1 | Blue = 2 /// DocComment: This is my class type type MyCar( number: int, color:MyColors) = /// DocComment: This is static field static member Owner = "MySelf" /// DocComment: This is instance field member this.Number = number member this.Color = color /// DocComment: This is static method static member Run (number:int) = printf "%s" (number.ToString()+"Running") /// DocComment: This is instance method member this.Repair (expense:int) = printf "%s" ("Spent " + expense.ToString() + " for repairing. ") /// DocComment: This is my delegate type type ControlEventHandler = delegate of int -> unit""" let file2 = if (crossProject = true) then let file1 = AddFileFromTextBlob(project,"File1.fs",testLibCode) let project2 = CreateProject(solution,"codeProject") let file2 = AddFileFromTextBlob(project2,"File2.fs",fileContent) Build(project).BuildSucceeded |> ignore AddProjectReference(project2, project) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project2,"File2.fs") file2 else let file1 = AddFileFromTextBlob(project,"File1.fs",testLibCode) let file2 = AddFileFromTextBlob(project,"File2.fs",fileContent) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"File2.fs") file2 //Build(project).BuildSucceeded |> printf "%b" for (marker, expectedTip) in queries do MoveCursorToStartOfMarker(file2, marker) let tooltip = time1 GetQuickInfoAtCursor file2 "Time of first tooltip" printf "First-%s\n" tooltip AssertContains(tooltip, expectedTip) [] member public this.``Automation.XDelegateDUStructfromOwnCode``() = let fileContent ="""module Test open FSTestLib open System.Runtime.InteropServices let ctrlSignal = ref false [] extern void SetConsoleCtrlHandler(ControlEventHandler callback,bool add) let ctrlEnventHandlerStatic = new ControlEventHandler(MyCar.Run) let ctrlEnventHandlerInstance = new ControlEventHandler( (new MyCar(10, MyColors.Blue)).Repair ) let IsInstanceMethod (controlEventHandler:ControlEventHandler) = // TC 32 Identifier Delegate Own Code Pattern Match match controlEventHandler(*Marker1*).Method.IsStatic with | true -> printf "It's not a instance method. " | false -> printf " It's a instance method. " // TC 33 Event DiscUnion Own Code Quotation let a = <@ MyDistance.Event(*Marker2*) @> let DelegateSeq = seq { for i in 1..10 do let newDelegate = new ControlEventHandler(MyCar.Run) // TC 35 Identifier Delegate Own Code Comp Expression yield newDelegate(*Marker3*) } let StructFieldSeq = seq { for i in 1..10 do let a = MyPoint((float)i,2.0) // TC 36 Field Struct Own Code Comp Expression yield a.X(*Marker4*) }""" let queries = [("(*Marker1*)", "val controlEventHandler : ControlEventHandler"); ("(*Marker2*)", "property MyDistance.Event: Event"); // ("(*Marker2*)", "DocComment: Event"); //Fail: due to DocComments ("(*Marker3*)", "val newDelegate : ControlEventHandler"); ("(*Marker4*)", "property MyPoint.X: float"); ("(*Marker4*)", "Gets and sets X")] this.VerifyUsingFsTestLib fileContent queries false [] member public this.``Automation.EnumDUInterfacefromFSBrowse``() = let fileContent ="""module Test open FSTestLib type MyTestType() = [] val mutable field : int interface IMyInterface with member this.Represent () = "Implement Interface" [] let Main (args : string []) = let MyEnumFieldSeq = seq { for i in 1..10 do // TC 14 Field Enum F# Browse Comp Expression let myEnumField = MyColors.Red(*Marker1*) yield myEnumField } let MyDUList = (fun x -> match x%3 with //TC 15 Self DiscUnion F# Browse Lambda | 0 -> MyDistance(*Marker2*).Kilometers | 1 -> MyDistance.Miles | _ -> MyDistance.NauticalMiles ) //TC 16 Method Interface F# Browse Lambda let resultString = new MyTestType() |> fun (x : MyTestType) -> x :> IMyInterface |> fun (x : IMyInterface) -> x.Represent(*Marker3*) 0""" let queries = [("(*Marker1*)", "Red: MyColors = 0"); ("(*Marker2*)", "type MyDistance ="); // ("(*Marker2*)", "DocComment: This is my discriminated union type"); //Fail: due to DocComments ("(*Marker2*)", "Full name: FSTestLib.MyDistance"); // ("(*Marker3*)", "DocComment: abstract method in Interface"); //Fail: due to DocComments ("(*Marker3*)", "abstract member IMyInterface.Represent : unit -> string") ] this.VerifyUsingFsTestLib fileContent queries true [] member public this.``Automation.RecordAndInterfaceFromFSProj``() = let fileContent ="""module Test open FSTestLib let construct = seq { for i in 1..10 do // TC23 - Testing "Record" type from "F# P2P" inside "Comp Expression" let a = MyEmployee(*Marker1*).MakeDummy() a.Name <- "Emp" + i.ToString() a.Age <- 20 + i a.IsFTE <- System.Convert.ToBoolean(System.Random().Next(2)) // TC25 - Testing "Identifier" of "Record" type from "F# P2P" inside "Quotation" let b = <@ a(*Marker2*).Name @> yield a } // TC27 - Testing "Field/Method" of "Record" type from "F# P2P" inside "Lambda" let fte_count = construct |> Seq.filter (fun a -> a.IsFTE(*Marker3*)) |> Seq.mapi (fun i a -> i.ToString() + a.ToString(*Marker4*)() ) |> Seq.length // TC24 - Testing "Identifier" of "Interface" type from "F# P2P" inside "Pattern Matching" type MyTestType() = [] val mutable x : int interface IMyInterface with member this.Represent () = this.x.ToString() let res = seq { yield MyTestType() yield Unchecked.defaultof } |> Seq.map (fun a -> let myItf = a :> IMyInterface match myItf with | x when x = Unchecked.defaultof -> "" | itf(*Marker5*) -> itf.Represent() ) |> Seq.filter (fun s -> s.Length > 0) |> Seq.length |> (=) 1""" let queries = [("(*Marker1*)", "type MyEmployee ="); ("(*Marker1*)", "mutable IsFTE: bool;"); // ("(*Marker1*)", "DocComment: This is my record type."); //Fail: due to DocComments // ("(*Marker1*)", "Full name: FSTestLib.MyEmployee"); // removed from declaration infos // ("(*Marker1*)", "implements: System.IComparable"); // removed from declaration infos ("(*Marker2*)", "val a : MyEmployee"); // ("(*Marker2*)", "implements: System.IComparable"); // removed from declaration infos ("(*Marker3*)", "MyEmployee.IsFTE: bool"); // ("(*Marker3*)", "Indicates whether the employee is full time or not"); //Fail: due to DocComments ("(*Marker5*)", "val itf : IMyInterface") ] this.VerifyUsingFsTestLib fileContent queries true [] member public this.``Automation.StructDelegateDUfromOwnCode``() = let fileContent ="""module Test open FSTestLib open System.Runtime.InteropServices let ctrlSignal = ref false [] extern void SetConsoleCtrlHandler(ControlEventHandler callback,bool add) let ctrlEnventHandlerStatic = new ControlEventHandler(MyCar.Run) let ctrlEnventHandlerInstance = new ControlEventHandler( (new MyCar(10, MyColors.Blue)).Repair ) let IsInstanceMethod (controlEventHandler:ControlEventHandler) = // TC 32 Identifier Delegate Own Code Pattern Match match controlEventHandler(*Marker1*).Method.IsStatic with | true -> printf "It's not a instance method. " | false -> printf " It's a instance method. " // TC 33 Event DiscUnion Own Code Quotation let a = <@ MyDistance.Event(*Marker2*) @> let DelegateSeq = seq { for i in 1..10 do let newDelegate = new ControlEventHandler(MyCar.Run) // TC 35 Identifier Delegate Own Code Comp Expression yield newDelegate(*Marker3*) } let StructFieldSeq = seq { for i in 1..10 do let a = MyPoint((float)i,2.0) // TC 36 Field Struct Own Code Comp Expression yield a.X(*Marker4*) }""" let queries = [("(*Marker1*)", "val controlEventHandler : ControlEventHandler"); ("(*Marker2*)", "property MyDistance.Event: Event"); // ("(*Marker2*)", "DocComment: Event"); //Fail: due to DocComments ("(*Marker3*)", "val newDelegate : ControlEventHandler"); ("(*Marker4*)", "property MyPoint.X: float"); ("(*Marker4*)", "Gets and sets X"); ] this.VerifyUsingFsTestLib fileContent queries false [] member public this.``Automation.TupleRecordClassfromOwnCode``() = let fileContent ="""module Test open FSTestLib let AbsTuple = fun x -> let tuple1 = (x,x.ToString(),(float)x, ( fun y -> (y.ToString(),y+1)) ) let tuple2 = (-x,(-x).ToString(),(float)(-x), ( fun y -> (y.ToString(),y+1)) ) if x >= 0 then // TC 29 Self Tuple Own Code Imperative tuple1(*Marker1*) else tuple2 let GenerateMyEmployee name age = let a = MyEmployee.MakeDummy() a.Name <- name a.Age <- age a.IsFTE <- System.Convert.ToBoolean(System.Random().Next(2)) match a.IsFTE with | true -> a // TC 30 Operator Record Own Code Pattern Match | _ -> MyEmployee(*Marker2*).MakeDummy() // TC 31 Self Class Own Code Quotation let myCarQuot = <@ new MyCar(*Marker3*)(19,MyColors.Red) @> open System.Runtime.InteropServices let ctrlSignal = ref false [] extern void SetConsoleCtrlHandler(ControlEventHandler callback,bool add) let ctrlEnventHandlerStatic = new ControlEventHandler(MyCar.Run) let ctrlEnventHandlerInstance = new ControlEventHandler( (new MyCar(10, MyColors.Blue)).Repair ) let MaxTuple x y = let tuplex = (x,x.ToString() ) let tupley = (y,(y).ToString()) match x>y with // TC 34 Operator Tuple Own Code Pattern Match | true -> tuplex(*Marker4*) | false -> tupley""" let queries = [("(*Marker1*)", "val tuple1 : int * string * float * (int -> string * int)"); ("(*Marker2*)", "type MyEmployee"); // ("(*Marker2*)", "DocComment: This is my record type."); //Fail: due to DocComments ("(*Marker2*)", "Full name: FSTestLib.MyEmployee"); ("(*Marker3*)", "type MyCar"); // ("(*Marker3*)", "DocComment: This is my class type"); //Fail: due to DocComments ("(*Marker3*)", "Full name: FSTestLib.MyCar"); ("(*Marker4*)", "val tuplex : 'a * string") ] this.VerifyUsingFsTestLib fileContent queries false [] member public this.``Automation.TupleRecordfromFSBrowse``() = let fileContent ="""module Test open FSTestLib let GenerateTuple = fun x -> let tuple = (x,x.ToString(),(float)x, ( fun y -> (y.ToString(),y+1)) ) // TC 19 Identifier Tuple F# Browse Lambda tuple(*Marker3*) let MyTupleSeq = seq { for i in 1..9 do // TC 17 Identifier Tuple F# Browse Comp Expression let myTuple(*Marker1*) = GenerateTuple i yield myTuple } let GetTupleMethod tuple= let (intInTuple,stringInTuple,floatInTuple,methodInTuple) = tuple methodInTuple // TC 20 method Tuple F# Browse Quotation let methodSeq(*Marker4*) = Seq.map GetTupleMethod MyTupleSeq let RecordArray = [| for x in 1..5 // TC 18 Method Record F# Browse Imperative -> MyEmployee.MakeDummy(*Marker2*)()|]""" let queries = [("(*Marker1*)", "val myTuple : int * string * float * (int -> string * int)"); ("(*Marker2*)", "static member MyEmployee.MakeDummy : unit -> MyEmployee"); // ("(*Marker2*)", "DocComment: Method"); //FAIL due to DocComment. ("(*Marker3*)", "val tuple : int * string * float * (int -> string * int)"); ("(*Marker4*)", "val methodSeq : seq<(int -> string * int)>"); ("(*Marker4*)", "Full name: Test.methodSeq") ] this.VerifyUsingFsTestLib fileContent queries true [] member public this.``Automation.UnionAndStructFromFSProj``() = let fileContent ="""module Test open FSTestLib [] let Main (args : string []) = let p1 = FSTestLib.MyPoint(1.0, 2.0) let (p2 : FSTestLib.MyPoint) = FSTestLib.MyPoint(2.0, 3.0) // TODO: Add active pattern testing let TC21 = // TC21 - Testing "Identifier" of "Struct" type from "F# P2P" inside "Pattern Matching" match p1(*Marker1*) + p2 with | p3(*Marker2*) when p3.X = 4.0 -> p2.Len | _ as (*Marker3*)Res -> Res.Len let TCs () = let toSun = Kilometers 149597892.0 // TC22 - Testing "Identifier" of "Union" type from "F# P2P" inside "Imperative" context if MyDistance.toMiles toSun(*Marker4*) > toSun then failwith "Distance in miles can't be bigger than in kilometers." let distances : MyDistance list = [toSun; toSun.toNautical; MyDistance.toMiles toSun]; for element(*Marker5*) in distances do () // TC28 - Testing "Method" of "Union" type from "F# P2P" inside "Pattern Matching" match MyDistance.toMiles(*Marker6*) toSun with | Miles x -> toSun.IncreaseBy(*Marker7*) 1.0 |> sprintf "Such a distance to Earth [%A] would mean end of world!" |> ignore | _ -> failwith "the previos method should have returned Miles type" // TC26 - Testing "Property" of "Union" type from "F# P2P" inside "Comp Expression" async { let res = toSun.toNautical(*Marker8*) return res } 0""" let queries = [("(*Marker1*)", "val p1 : MyPoint"); //("(*Marker1*)", "implements: System.IComparable"); ("(*Marker2*)", "val p3 : MyPoint"); //("(*Marker2*)", "type: MyPoint"); //("(*Marker2*)", "inherits: System.ValueType"); ("(*Marker4*)", "val toSun : MyDistance"); //("(*Marker4*)", "type: MyDistance"); //("(*Marker4*)", "implements: System.IComparable"); ("(*Marker5*)", "val element : MyDistance"); //("(*Marker5*)", "type: MyDistance"); ("(*Marker6*)", "static member MyDistance.toMiles : x:MyDistance -> MyDistance"); // ("(*Marker6*)", "DocComment: Static Method"); //FAIL due to DocComment ("(*Marker7*)", "member MyDistance.IncreaseBy : dist:float -> MyDistance"); // ("(*Marker7*)", "DocComment: Method"); //FAIL due to DocComment ("(*Marker8*)", "property MyDistance.toNautical: MyDistance"); // ("(*Marker8*)", "DocComment: Property"); //FAIL due to DocComment ] this.VerifyUsingFsTestLib fileContent queries true (*------------------------------------------IDE Query automation start -------------------------------------------------*) member private this.AssertQuickInfoInQuery(code: string, mark : string, expectedstring : string) = use _guard = this.UsingNewVS() let datacode = """ namespace DataSource open System open System.Xml.Linq type Product() = let mutable id = 0 let mutable name = "" let mutable category = "" let mutable price = 0M let mutable unitsInStock = 0 member x.ProductID with get() = id and set(v) = id <- v member x.ProductName with get() = name and set(v) = name <- v member x.Category with get() = category and set(v) = category <- v member x.UnitPrice with get() = price and set(v) = price <- v member x.UnitsInStock with get() = unitsInStock and set(v) = unitsInStock <- v module Products = let getProductList() = [ Product(ProductID = 1, ProductName = "Chai", Category = "Beverages", UnitPrice = 18.0000M, UnitsInStock = 39 ); Product(ProductID = 2, ProductName = "Chang", Category = "Beverages", UnitPrice = 19.0000M, UnitsInStock = 17 ); Product(ProductID = 3, ProductName = "Aniseed Syrup", Category = "Condiments", UnitPrice = 10.0000M, UnitsInStock = 13 ); ] """ let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") this.AddAssemblyReference(project, "System.Xml.Linq") let file1 = AddFileFromTextBlob(project,"File1.fs",datacode) //build let file2 = AddFileFromTextBlob(project,"File2.fs",code) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"File2.fs") let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToStartOfMarker(file2,mark) let tooltip = time1 GetQuickInfoAtCursor file2 "Time of first tooltip" printfn "%s" tooltip AssertContains(tooltip, expectedstring) gpatcc.AssertExactly(0,0) [] [] [] // QuickInfo still works on valid operators in a query with errors elsewhere in it member public this.``Query.WithError1.Bug196137``() = let fileContent =""" open DataSource // get the product list, defined in another file, see AssertQuickInfoInQuery let products = Products.getProductList() let sortedProducts = query { for p in products do let x = p.ProductID + "a" sortBy p.ProductName(*Mark*) select p }""" this.AssertQuickInfoInQuery (fileContent, "(*Mark*)", "Product.ProductName: string") [] [] // QuickInfo still works on valid operators in a query with errors elsewhere in it member public this.``Query.WithError2``() = let fileContent =""" open DataSource let products = Products.getProductList() let test = query { for p in products do let x = p.ProductID + "1" minBy(*Mark*) p.UnitPrice }""" this.AssertQuickInfoInQuery (fileContent, "(*Mark*)", "custom operation: minBy ('Value)") [] [] // QuickInfo works in a large query (using many operators) member public this.``Query.WithinLargeQuery``() = let fileContent =""" open DataSource let products = Products.getProductList() let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let largequery = query { for p in products do sortBy p.ProductName thenBy p.UnitPrice thenByDescending p.Category where (p.UnitsInStock < 100) where (p.Category = "Condiments") groupValBy(*Mark1*) p p.Category into g let maxPrice = query { for x in g do maxBy(*Mark2*) x.UnitPrice } let mostExpensiveProducts = query { for x in g do where (x.UnitPrice = maxPrice) } select (g.Key, mostExpensiveProducts, query { for n in numbers do where (n%2 = 0) where(*Mark3*) (n > 2) where (n < 40) select n}) distinct(*Mark4*) }""" this.AssertQuickInfoInQuery (fileContent, "(*Mark1*)", "custom operation: groupValBy ('Value) ('Key)") this.AssertQuickInfoInQuery (fileContent, "(*Mark2*)", "custom operation: maxBy ('Value)") this.AssertQuickInfoInQuery (fileContent, "(*Mark3*)", "custom operation: where (bool)") this.AssertQuickInfoInQuery (fileContent, "(*Mark4*)", "custom operation: distinct") [] [] // Arguments to query operators have correct QuickInfo // quickinfo should be corroct including when the operator is causing an error member public this.``Query.ArgumentToQuery.OperatorError``() = let fileContent =""" let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let foo = query { for n in numbers do orderBy (n.GetType()) select n}""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "n.GetType()", "val n : int",queryAssemblyRefs) this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "Type()", "System.Object.GetType() : System.Type",queryAssemblyRefs) [] [] // Arguments to query operators have correct QuickInfo // quickinfo should be corroct In a nested query member public this.``Query.ArgumentToQuery.InNestedQuery``() = let fileContent =""" open DataSource let products = Products.getProductList() let test1 = query { for p in products do sortBy p.ProductName select (p.ProductName, query { for f in products do groupValBy(*Mark3*) f f.Category into g let maxPrice = query { for x in g do maxBy x.UnitPrice } let mostExpensiveProducts = query { for x in g do where(*Mark1*) (x.UnitPrice = maxPrice(*Mark2*)) } select(*Mark4*) (g.Key, g)}) } """ this.AssertQuickInfoInQuery (fileContent, "(*Mark1*)", "custom operation: where (bool)") this.AssertQuickInfoInQuery (fileContent, "(*Mark2*)", "val maxPrice : decimal") this.AssertQuickInfoInQuery (fileContent, "(*Mark3*)", "custom operation: groupValBy ('Value) ('Key)") this.AssertQuickInfoInQuery (fileContent, "(*Mark4*)", "custom operation: select ('Result)") [] [] // A computation expression with its own custom operators has correct QuickInfo displayed member public this.``Query.ComputationExpression.Method``() = let fileContent =""" open System.Collections.Generic let chars = ["A";"B";"C"] type WorkflowBuilder() = let yieldedItems = new List() member this.Items = yieldedItems |> Array.ofSeq member this.Yield(item) = yieldedItems.Add(item) member this.YieldFrom(items : seq) = items |> Seq.iter (fun item -> yieldedItems.Add(item.ToUpper())) () member this.Combine(f, g) = g member this.Delay (f : unit -> 'a) = f() member this.Zero() = () member this.Return _ = this.Items let computationExpreQuery = query { for char in chars do let workflow = new WorkflowBuilder() let result = workflow { yield "foo" yield "bar" yield! [| "a"; "b"; "c" |] return () } let t = workflow.Combine(*Mark1*)("a","b") let d = workflow.Zero(*Mark2*)() where (result |> Array.exists(fun i -> i = char)) yield char } """ this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark1*)", "member WorkflowBuilder.Combine : f:'b * g:'c -> 'c",queryAssemblyRefs) this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark2*)", "member WorkflowBuilder.Zero : unit -> unit",queryAssemblyRefs) [] [] // A computation expression with its own custom operators has correct QuickInfo displayed member public this.``Query.ComputationExpression.CustomOp``() = let fileContent =""" open System open Microsoft.FSharp.Quotations type EventBuilder() = member __.For(ev:IObservable<'T>, loop:('T -> #IObservable<'U>)) : IObservable<'U> = failwith "" member __.Yield(v:'T) : IObservable<'T> = failwith "" member __.Quote(v:Quotations.Expr<'T>) : Expr<'T> = v member __.Run(x:Expr<'T>) = Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation x :?> 'T [] member __.Where (x, [] f) = Observable.filter f x [] member __.Select (x, [] f) = Observable.map f x [] member inline __.ScanSumBy (source, [] f : 'T -> 'U) : IObservable<'U> = Observable.scan (fun a b -> a + f b) LanguagePrimitives.GenericZero<'U> source let myquery = EventBuilder() let f = new Event() let e1 = myquery { for x in f.Publish do myWhere(*Mark1*) (fst x < 100) scanSumBy(*Mark2*) (snd x) } """ this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark1*)", "custom operation: myWhere (bool)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark1*)", "Calls EventBuilder.Where") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark2*)", "custom operation: scanSumBy ('U)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark2*)", "Calls EventBuilder.ScanSumBy") (*------------------------------------------IDE automation ends here ---------------------------------------------------*) // Allow the QuickInfoTests run under different context namespace UnitTests.Tests.LanguageService.QuickInfo open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit QuickInfoTests new() = { inherit QuickInfoTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit QuickInfoTests new() = { inherit QuickInfoTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Resources/0000775000175000017500000000000012260314606020156 5ustar chrischrisfsharp-3.0.34/src/fsharp/unittests/Resources/TestTypeProvider.Negative1.fsx0000775000175000017500000000252412260314606026024 0ustar chrischrisnamespace HelloWorldTypeProviderNeg1 #r "System.Core.dll" #load @"extras\extenders\shared\TypeBuilder.fs" open System open Microsoft.FSharp.Core.CompilerServices [] type public HelloWorldProvider() = let invalidation = new Event() interface IProvidedNamespace with member __.NamespaceName = "HelloWorld" member __.GetTypes() = [| |] member __.ResolveTypeName name = failwith (sprintf "GetType %s" name) member __.GetNestedNamespaces() = [| |] interface IDisposable with member __.Dispose() = () interface ITypeProvider with member this.GetNamespaces() = [| this |] member __.GetInvokerExpression(syntheticMethodBase, parameterExpressions) = failwith "nyi" member __.ApplyStaticArguments(typeWithoutArguments, typeNameWithArguments, staticArguments) = if staticArguments.Length <> 0 then failwith "this provided type does not accept static parameters" typeWithoutArguments member __.GetStaticParameters(typeWithoutArguments) = [| |] [] member x.Invalidate = invalidation.Publish member this.GetGeneratedAssemblyContents(assembly) = failwith "GetGeneratedAssemblyContents - only erased types were provided!!" [] do() fsharp-3.0.34/src/fsharp/unittests/Resources/TestTypeProvider.Positive1.fsx0000775000175000017500000001064512260314606026067 0ustar chrischrisnamespace HelloWorldTypeProvider #r "System.Core.dll" #load @"extras\extenders\shared\TypeBuilder.fs" open System open System.Linq.Expressions open System.Reflection open Microsoft.FSharp.Core.CompilerServices open FSharp.TypeMagic // utilities for building types #nowarn "40" // This just suppresses an informational warning that some "recursive knot tying" is used to defined synthetic types and their members. module internal SyntheticTypes = // This is a non-generative provider - the types are reported as belonging to the provider's assembly let thisAssembly = System.Reflection.Assembly.GetExecutingAssembly() // This is the namespace let rootNamespace = "HelloWorld" // This defines all the members in the one synthetic type. A lazy computation is used to ensure the // member array is only created once. let rec allHelloWorldTypeMembers : Lazy = lazy [| for (propertyName, propertyType) in [("StaticProperty1", typeof); ("StaticProperty2", typeof) ] do let prop = TypeBuilder.CreateSyntheticProperty(helloWorldType,propertyName,propertyType,isStatic=true) yield! TypeBuilder.JoinPropertiesIntoMemberInfos [prop] |] // This defines the one synthetic type. Put the type in the namespace, and specify its members. // Because this is a synthetic type it will be erased at runtime. It is erased to 'System.Object' // because that is its first non-synthetic base type. and helloWorldType = let container = TypeContainer.Namespace(thisAssembly.GetModules().[0], rootNamespace) TypeBuilder.CreateSimpleType(container,"HelloWorldType",members=allHelloWorldTypeMembers) /// The implementation of the compiler extension. The attribute indicates that /// is is a non-generative compiler extension. [] type public HelloWorldProvider() = // This event is never triggered in this sample, because the schema never changes let invalidation = new Event() // This implements both get_StaticProperty1 and get_StaticProperty2 static member GetPropertyByName(propertyName:string) : 'T = match propertyName with | "StaticProperty1" -> "You got a static property" |> box |> unbox | "StaticProperty2" -> 42 |> box |> unbox | _ -> failwith "unexpected property" interface IProvidedNamespace with member this.GetNestedNamespaces() = [| |] member __.NamespaceName = SyntheticTypes.rootNamespace member __.GetTypes() = [SyntheticTypes.helloWorldType] |> Array.ofList member __.ResolveTypeName name : System.Type = match name with | "HelloWorldType" -> SyntheticTypes.helloWorldType | _ -> failwith (sprintf "GetType %s" name) interface IDisposable with member __.Dispose() = () interface ITypeProvider with member this.GetNamespaces() = [| this |] member this.ApplyStaticArguments(typeWithoutArguments, typeNameWithArguments, staticArguments) = if staticArguments.Length <> 0 then failwith "this provided type does not accept static parameters" typeWithoutArguments member __.GetStaticParameters(typeWithoutArguments) = [| |] member __.GetInvokerExpression(syntheticMethodBase:MethodBase, parameterExpressions:System.Linq.Expressions.ParameterExpression []) = // trim off the "get_" let propertyName = syntheticMethodBase.Name.Substring(4) if syntheticMethodBase.DeclaringType = SyntheticTypes.helloWorldType then let syntheticMethodBase = syntheticMethodBase :?> MethodInfo let getClassInstancesByName = typeof .GetMethod("GetPropertyByName", BindingFlags.Static ||| BindingFlags.Public) .MakeGenericMethod([|syntheticMethodBase.ReturnType|]) upcast Expression.Call(getClassInstancesByName, Expression.Constant(propertyName)) else failwith "unexpected type" // This event is never triggered in this sample, because the schema never changes [] member x.Invalidate = invalidation.Publish member this.GetGeneratedAssemblyContents(assembly) = failwith "GetGeneratedAssemblyContents - only erased types were provided!!" [] do() fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.IncrementalBuild.fs0000775000175000017500000006156512260314606026143 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open IncrementalBuild /// Useful methods that someday might go into IncrementalBuild module internal Vector = /// Convert from vector to a scalar let ToScalar<'I> (taskname:string) (input:Vector<'I>) : Scalar<'I array> = let Identity inArray = inArray Vector.Demultiplex taskname Identity input [] [] [] type IncrementalBuild() = /// Called per test [] member this.Setup() = //Trace.Log <- "IncrementalBuild" () // This test is related to // 835552 Language service loses track of files in project due to intermitent file read failures // It verifies that incremental builder can handle changes to timestamps that happen _before_ the // stamp function exists. This ensures there's not a race in the data gathered for tracking file // timestamps in parsing. [] member public rb.StampUpdate() = let path = Path.GetTempFileName() let TouchFile() = printfn "Touching file" File.WriteAllText(path,"Some text") let updateStamp = ref true let StampFile filename = let result = File.GetLastWriteTime(filename) if !updateStamp then // Here, simulate that VS is writing to our file. TouchFile() result let Map filename = "map:"+filename let build = new BuildDescriptionScope() let input = InputVector "InputVector" let stamped = Vector.Stamp "Stamp" StampFile input let mapped = Vector.Map "Map" Map stamped build.DeclareVectorOutput("Mapped", mapped) let build = build.GetInitialPartialBuild(["InputVector",1,[box path]],[]) let DoCertainStep build = match IncrementalBuild.Step "Mapped" build with | Some(build) -> build | None -> failwith "Expected to be able to step" // While updateStamp is true we should be able to step as continuously // because there will always be more to build. let mutable build = build for i in 0..5 do printfn "Iteration %d" i build <- DoCertainStep build System.Threading.Thread.Sleep 2000 // Now, turn off updateStamp and the build should just finish. updateStamp:=false build <- DoCertainStep build build <- DoCertainStep build match IncrementalBuild.Step "Mapped" build with | Some(build) -> failwith "Build should have stopped" | None -> () /// Test that stamp works [] member public rb.StampScan() = let mapSuffix = ref "Suffix1" let Scan acc filename = eventually { return acc+"-"+filename+"-"+(!mapSuffix) } let stampAs = ref DateTime.Now let StampFile(filename) = !stampAs let build = new BuildDescriptionScope() let input = InputVector "InputVector" let acc = InputScalar "Accumulator" let stamped = Vector.Stamp "Stamp" StampFile input let scanned = Vector.ScanLeft "Scan" Scan acc stamped build.DeclareVectorOutput("Scanned", scanned) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],["Accumulator",box "AccVal"]) printf "-[Step1]----------------------------------------------------------------------------------------\n" // Evaluate the first time. let build = Eval "Scanned" build let r = GetVectorResult("Scanned",build) Assert.AreEqual("AccVal-File1.fs-Suffix1-File2.fs-Suffix1",r.[1]) printf "-[Step2]----------------------------------------------------------------------------------------\n" // Evaluate the second time. No change should be seen. mapSuffix:="Suffix2" let build = Eval "Scanned" build let r = GetVectorResult("Scanned",build) Assert.AreEqual("AccVal-File1.fs-Suffix1-File2.fs-Suffix1",r.[1]) printf "-[Step3]----------------------------------------------------------------------------------------\n" // Evaluate a third time with timestamps updated. Should cause a rebuild System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now' stampAs:=DateTime.Now let build = Eval "Scanned" build let r = GetVectorResult("Scanned",build) Assert.AreEqual("AccVal-File1.fs-Suffix2-File2.fs-Suffix2",r.[1]) /// Test case of zero elements in a vector [] member public rb.aaZeroElementVector() = // Starts with 'aa' to put it at the front. let stamp = ref DateTime.Now let Mult(i:int) : string array = Array.create i "" let Stamp(s:string) = !stamp let Map(s:string) = s let Demult(a:string array) : int = a.Length let build = new BuildDescriptionScope() let input = InputScalar "InputScalar" let multiplexed = Scalar.Multiplex "Mult" Mult input let stamped = Vector.Stamp "Stamp" Stamp multiplexed let mapped = Vector.Map "Map" Map stamped let demultiplexed = Vector.Demultiplex "Demult" Demult mapped build.DeclareVectorOutput("Multiplexed", multiplexed) build.DeclareVectorOutput("Stamped", stamped) build.DeclareVectorOutput("Mapped", mapped) build.DeclareScalarOutput("Result", demultiplexed) // Try first with one input let build1 = build.GetInitialPartialBuild([],["InputScalar", box 1]) let build1Evaled = Eval "Result" build1 let r1 = GetScalarResult("Result",build1Evaled) match r1 with | Some(v,dt) -> Assert.AreEqual(1,v) | None -> failwith "Expected the value 1 to be returned." // Now with zero. This was the original bug. stamp := DateTime.Now let build0 = build.GetInitialPartialBuild([],["InputScalar", box 0]) let build0Evaled = Eval "Result" build0 let r0 = GetScalarResult("Result",build0Evaled) match r0 with | Some(v,dt) -> Assert.AreEqual(0,v) | None -> failwith "Expected the value 0 to be returned." () /// Here, we want a multiplex to increase the number of items processed. [] member public rb.MultiplexTransitionUp() = let elements = ref 1 let timestamp = ref System.DateTime.Now let Mult(s:string) : string array = [| for i in 1..!elements -> sprintf "Element %d" i |] let Stamp(s) = !timestamp let Map(s:string) = sprintf "Mapped %s " s let Demult(a:string array) : string = "Demult" let Result(a:string array) : string = String.Join(",", a) let now = System.DateTime.Now let FixedTimestamp _ = now let build = new BuildDescriptionScope() let input = InputVector "InputVector" let stampedInput = Vector.Stamp "StampInput" Stamp input let demultiplexedInput = Vector.Demultiplex "DemultInput" Demult stampedInput let multiplexed = Scalar.Multiplex "Mult" Mult demultiplexedInput let mapped = Vector.Map "Map" Map multiplexed let mapped = Vector.Stamp "FixedTime" FixedTimestamp mapped // Change in vector size should x-ray through even if timestamps haven't changed in remaining items. let demultiplexed = Vector.Demultiplex "DemultResult" Result mapped build.DeclareScalarOutput("Result", demultiplexed) // Create the build. let build = build.GetInitialPartialBuild(["InputVector",1,[box "Input 0"]],[]) // Evaluate it with value 1 elements := 1 let build = Eval "Result" build let r1 = GetScalarResult("Result", build) match r1 with | Some(s,dt) -> printfn "%s" s | None -> failwith "" // Now, re-evaluate it with value 2 elements := 2 System.Threading.Thread.Sleep(100) timestamp := System.DateTime.Now let build = Eval "Result" build let r2 = GetScalarResult("Result", build) match r2 with | Some(s,dt) -> Assert.AreEqual("Mapped Element 1 ,Mapped Element 2 ",s) | None -> failwith "" /// Here, we want a multiplex to decrease the number of items processed. [] member public rb.MultiplexTransitionDown() = let elements = ref 1 let timestamp = ref System.DateTime.Now let Mult(s:string) : string array = [| for i in 1..!elements -> sprintf "Element %d" i |] let Stamp(s) = !timestamp let Map(s:string) = printfn "Map called with %s" s sprintf "Mapped %s " s let Demult(a:string array) : string = printfn "Demult called with %d items" a.Length sprintf "Demult %s" (String.Join(",",a)) let Result(a:string array) : string = let result = String.Join(",", a) printfn "Result called with %d items returns %s" a.Length result result let now = System.DateTime.Now let FixedTimestamp _ = printfn "Fixing timestamp" now let build = new BuildDescriptionScope() let input = InputVector "InputVector" let stampedInput = Vector.Stamp "StampInput" Stamp input let demultiplexedInput = Vector.Demultiplex "DemultInput" Demult stampedInput let multiplexed = Scalar.Multiplex "Mult" Mult demultiplexedInput let mapped = Vector.Map "Map" Map multiplexed let fixedmapped = Vector.Stamp "FixedTime" FixedTimestamp mapped // Change in vector size should x-ray through even if timestamps haven't changed in remaining items. let demultiplexed = Vector.Demultiplex "DemultResult" Result fixedmapped build.DeclareScalarOutput("DemultiplexedInput", demultiplexedInput) build.DeclareVectorOutput("Mapped", mapped) build.DeclareVectorOutput("FixedMapped", fixedmapped) build.DeclareScalarOutput("Result", demultiplexed) // Create the build. let build = build.GetInitialPartialBuild(["InputVector",1,[box "Input 0"]],[]) // Evaluate it with value 2 elements := 2 let build = Eval "Result" build let r1 = GetScalarResult("Result", build) match r1 with | Some(s,dt) -> printfn "%s" s | None -> failwith "" // Now, re-evaluate it with value 1 elements := 1 System.Threading.Thread.Sleep(100) timestamp := System.DateTime.Now let buildDemuxed = Eval "DemultiplexedInput" build let rdm = GetScalarResult("DemultiplexedInput",buildDemuxed) match rdm with | Some(s,dt)->Assert.AreEqual("Demult Input 0", s) | None -> failwith "unexpected" let buildMapped = Eval "Mapped" build let mp = GetVectorResult("Mapped",buildMapped) Assert.AreEqual(1,mp.Length) let melem = mp.[0] Assert.AreEqual("Mapped Element 1 ", melem) let buildFixedMapped = Eval "FixedMapped" buildMapped let mp = GetVectorResult("FixedMapped",buildFixedMapped) Assert.AreEqual(1,mp.Length) let melem = mp.[0] Assert.AreEqual("Mapped Element 1 ", melem) let build = Eval "Result" build let r2 = GetScalarResult("Result", build) match r2 with | Some(s,dt) -> Assert.AreEqual("Mapped Element 1 ",s) | None -> failwith "unexpected" /// Test that stamp works [] member public rb.StampMap() = let mapSuffix = ref "Suffix1" let MapIt(filename) = filename+"."+(!mapSuffix) let stampAs = ref DateTime.Now let StampFile(filename) = !stampAs let build = new BuildDescriptionScope() let input = InputVector "InputVector" let stamped = Vector.Stamp "Stamp" StampFile input let mapped = Vector.Map "Map" MapIt stamped build.DeclareVectorOutput("Mapped", mapped) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],[]) printf "-[Step1]----------------------------------------------------------------------------------------\n" // Evaluate the first time. let build = Eval "Mapped" build let r = GetVectorResult("Mapped",build) Assert.AreEqual("File2.fs.Suffix1",r.[1]) printf "-[Step2]----------------------------------------------------------------------------------------\n" // Evaluate the second time. No change should be seen. mapSuffix:="Suffix2" let build = Eval "Mapped" build let r = GetVectorResult("Mapped",build) Assert.AreEqual("File2.fs.Suffix1",r.[1]) printf "-[Step3]----------------------------------------------------------------------------------------\n" // Evaluate a third time with timestamps updated. Should cause a rebuild while !stampAs = DateTime.Now do System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now' stampAs:=DateTime.Now let build = Eval "Mapped" build let r = GetVectorResult("Mapped",build) Assert.AreEqual("File2.fs.Suffix2",r.[1]) /// Test that stamp works [] member public rb.StampDemultiplex() = let joinedResult = ref "Join1" let Join(filenames:_[]) = !joinedResult let stampAs = ref DateTime.Now let StampFile(filename) = !stampAs let build = new BuildDescriptionScope() let input = InputVector "InputVector" let stamped = Vector.Stamp "Stamp" StampFile input let joined = Vector.Demultiplex "Demultiplex" Join stamped build.DeclareScalarOutput("Joined", joined) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],[]) printf "-[Step1]----------------------------------------------------------------------------------------\n" // Evaluate the first time. let build = Eval "Joined" build let (r,_) = Option.get (GetScalarResult("Joined",build)) Assert.AreEqual("Join1",r) printf "-[Step2]----------------------------------------------------------------------------------------\n" // Evaluate the second time. No change should be seen. joinedResult:="Join2" let build = Eval "Joined" build let (r,_) = Option.get (GetScalarResult("Joined",build)) Assert.AreEqual("Join1",r) printf "-[Step3]----------------------------------------------------------------------------------------\n" // Evaluate a third time with timestamps updated. Should cause a rebuild while !stampAs = DateTime.Now do System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now' stampAs:=DateTime.Now let build = Eval "Joined" build let (r,_) = Option.get (GetScalarResult("Joined",build)) Assert.AreEqual("Join2",r) /// Test that Demultiplex followed by ScanLeft works [] member public rb.DemultiplexScanLeft() = let Size(ar:_[]) = ar.Length let Scan acc (file :string) = eventually { return acc + file.Length } let build = new BuildDescriptionScope() let inVector = InputVector "InputVector" let vectorSize = Vector.Demultiplex "Demultiplex" Size inVector let scanned = Vector.ScanLeft "Scan" Scan vectorSize inVector build.DeclareScalarOutput("Size", vectorSize) build.DeclareVectorOutput("Scanned", scanned) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],[]) let e = Eval "Scanned" build let r = GetScalarResult("Size",e) match r with | Some(r,_)->Assert.AreEqual(3,r) | None -> Assert.Fail("No size was returned") /// Test that Scalar.Multiplex works. [] member public rb.ScalarMultiplex() = let MultiplexScalar inp = [|inp+":1";inp+":2";inp+":3"|] let build = new BuildDescriptionScope() let inScalar = InputScalar "Scalar" let multiplexed = Scalar.Multiplex "MultiplexScalar" MultiplexScalar inScalar build.DeclareVectorOutput("Output", multiplexed) let b = build.GetInitialPartialBuild([],["Scalar",box "A Scalar Value"]) let e = Eval "Output" b let r = GetVectorResult("Output",e) Assert.AreEqual("A Scalar Value:2", r.[1]) /// Test that Scalar.Map works. [] member public rb.ScalarMap() = let MapScalar inp = "out:"+inp let build = new BuildDescriptionScope() let inScalar = InputScalar "Scalar" let mappedScalar = Scalar.Map "MapScalar" MapScalar inScalar build.DeclareScalarOutput("Output", mappedScalar) let b = build.GetInitialPartialBuild([],["Scalar",box "A Scalar Value"]) let e = Eval "Output" b let r = GetScalarResult("Output",e) match r with | Some(r,_) -> Assert.AreEqual("out:A Scalar Value", r) | None -> Assert.Fail() /// Test that a simple scalar action works. [] member public rb.Scalar() = let build = new BuildDescriptionScope() let inScalar = InputScalar "Scalar" build.DeclareScalarOutput("Output", inScalar) let b = build.GetInitialPartialBuild([],["Scalar",box "A Scalar Value"]) let e = Eval "Output" b let r = GetScalarResult("Output",e) match r with | Some(r,_) -> Assert.AreEqual("A Scalar Value", r) | None -> Assert.Fail() /// Test that ScanLeft works. [] member public rb.ScanLeft() = let DoIt (a:int*string) (b:string) = eventually { return ((fst a)+1,b) } let build = new BuildDescriptionScope() let inScalar = InputScalar "InputScalar" let inVector = InputVector "InputVector" let scanned = Vector.ScanLeft "DoIt" DoIt inScalar inVector build.DeclareVectorOutput("Output", scanned) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],["InputScalar",box (5,"")]) let e = Eval "Output" build let r = GetVectorResult("Output",e) if [| (6,"File1.fs"); (7,"File2.fs"); (8, "File3.fs") |] <> r then printfn "Got %A" r Assert.Fail() () /// Convert a vector to a scalar [] member public rb.ToScalar() = let build = new BuildDescriptionScope() let inVector = InputVector "InputVector" let asScalar = Vector.ToScalar "ToScalar" inVector build.DeclareScalarOutput("Output", asScalar) let build = build.GetInitialPartialBuild(["InputVector",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],[]) let e = Eval "Output" build let r = GetScalarResult("Output",e) match r with | Some(r,ts)-> if "File3.fs"<>(r.[2]) then printf "Got %A\n" (r.[2]) Assert.Fail() | None -> Assert.Fail() /// This test replicates the data flow of the assembly reference model. It includes several concepts /// that were new at the time: Scalars, Invalidation, Disposal [] member public rb.AssemblyReferenceModel() = let Parse(filename) = sprintf "Parse(%s)" filename let ApplyMetaCommands(parseResults:string[]) = "tcConfig-of("+String.Join(",",parseResults)+")" let GetReferencedAssemblyNames(tcConfig) = [|"Assembly1.dll";"Assembly2.dll";"Assembly3.dll"|] let ReadAssembly(assemblyName) = sprintf "tcImport-of(%s)" assemblyName let CombineImports(imports) = "tcAcc" let TypeCheck tcAcc parseResults = eventually { return tcAcc } // Build rules. let build = new BuildDescriptionScope() let filenames = InputVector "Filenames" let parseTrees = Vector.Map "Parse" Parse filenames let parseTreesAsScalar = Vector.ToScalar "ScalarizeParseTrees" parseTrees let tcConfig = Scalar.Map "ApplyMetaCommands" ApplyMetaCommands parseTreesAsScalar let referencedAssemblyNames = Scalar.Multiplex "GetReferencedAssemblyNames" GetReferencedAssemblyNames tcConfig let readAssemblies = Vector.Map "ReadAssembly" ReadAssembly referencedAssemblyNames let tcAcc = Vector.Demultiplex "CombineImports" CombineImports readAssemblies let tcResults = Vector.ScanLeft "TypeCheck" TypeCheck tcAcc parseTrees build.DeclareVectorOutput("TypeCheckingStates",tcResults) let build = build.GetInitialPartialBuild(["Filenames",3,[box "File1.fs";box "File2.fs";box "File3.fs"]],[]) let e = Eval "TypeCheckingStates" build let r = GetVectorResult("TypeCheckingStates",e) () [)>] member public rb.DuplicateExpressionNamesNotAllowed() = let DoIt s = s let b = let build = new BuildDescriptionScope() let i = InputVector "Input" let r = Vector.Map "Input" DoIt i build.DeclareVectorOutput("Output",r) build.GetInitialPartialBuild(["Input",1,[box ""]],[]) let e = Eval "Output" b () [] member public rb.OneToOneWorks() = let VectorModify (input:int) : string = sprintf "Transformation of %d" input let bound = let build = new BuildDescriptionScope() let inputs = InputVector "Inputs" let outputs = Vector.Map "Modify" VectorModify inputs build.DeclareVectorOutput("Outputs",outputs) build.GetInitialPartialBuild(["Inputs",4,[box 1;box 2;box 3;box 4]],[]) let evaled = bound |> Eval "Outputs" let outputs = GetVectorResult("Outputs",evaled) Assert.AreEqual("Transformation of 4", outputs.[3]) () /// In this bug, the desired output is between other outputs. /// The getExprById function couldn't find it. [] member public rb.HiddenOutputGroup() = let VectorModify (input:int) : string = sprintf "Transformation of %d" input let bound = let build = new BuildDescriptionScope() let inputs = InputVector "Inputs" let outputs = Vector.Map "Modify" VectorModify inputs build.DeclareVectorOutput("Inputs1", inputs) build.DeclareVectorOutput("Inputs2", inputs) build.DeclareVectorOutput("Inputs3", inputs) build.DeclareVectorOutput("Outputs", outputs) build.DeclareVectorOutput("Inputs4", inputs) build.DeclareVectorOutput("Inputs5", inputs) build.DeclareVectorOutput("Inputs6", inputs) build.GetInitialPartialBuild(["Inputs",4,[box 1;box 2;box 3;box 4]],[]) let evaled = bound |> Eval "Outputs" let outputs = GetVectorResult("Outputs",evaled) Assert.AreEqual("Transformation of 4", outputs.[3]) () /// Empty build should just be a NOP. [] member public rb.EmptyBuildIsNop() = let VectorModify (input:int) : string = sprintf "Transformation of %d" input let bound = let build = new BuildDescriptionScope() let inputs = InputVector "Inputs" let outputs = Vector.Map "Modify" VectorModify inputs build.DeclareVectorOutput("Outputs", outputs) build.GetInitialPartialBuild(["Inputs",0,[]],[]) let evaled = bound |> Eval "Outputs" let outputs = GetVectorResult("Outputs",evaled) () fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.Project.fs0000775000175000017500000012612512260314606024071 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem // System namespaces open System open System.Collections.Generic open System.IO open System.Text.RegularExpressions open System.Xml.Linq open NUnit.Framework // VS namespaces open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem // Internal unittest namespaces open Salsa open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem [] type Project() = inherit TheTests() //TODO: look for a way to remove the helper functions static let ANYTREE = Tree("",Nil,Nil) ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore static let DefaultBuildActionOfFilename(filename) : Salsa.BuildAction = match Path.GetExtension(filename) with | ".fsx" -> Salsa.BuildAction.None | ".resx" | ".resources" -> Salsa.BuildAction.EmbeddedResource | _ -> Salsa.BuildAction.Compile static let GetReferenceContainerNode(project : ProjectNode) = let l = new List() project.FindNodesOfType(l) l.[0] [] member public this.NoNewFolderOnProjectMenu() = printfn "starting..." let package = new FSharpProjectPackage() let project = new FSharpProjectNode(package) let guidCmdGroup = VsMenus.guidStandardCommandSet97 let cmdEnum = Microsoft.VisualStudio.VSConstants.VSStd97CmdID.NewFolder let mutable result = new QueryStatusResult() let (pCmdText : IntPtr) = 0n printfn "call qson..." let x = project.QueryStatusOnNode(guidCmdGroup, uint32(cmdEnum), pCmdText, &result) printfn "and..." AssertEqual x VSConstants.S_OK if (result &&& QueryStatusResult.INVISIBLE) = enum 0 then Assert.Fail("Unexpected: New Folder was not invisible") () [] member public this.``FsprojFileToSolutionExplorer.FileOrderInFsprojIsRespected.Case1``() = let compileItems = ["one.fs"; "two.fs"; "three.fs"] let expect = Tree("References", ANYTREE, Tree("one.fs", Nil, Tree("two.fs", Nil, Tree("three.fs", Nil, Nil)))) // We expect nodes in the solution explorer to appear in the same order as // the msbuild file - e.g. "one" "two" "three" rather than alphabetized // "one" "three" "two" this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems, "", expect) [] member public this.``FsprojFileToSolutionExplorer.FileOrderInFsprojIsRespected.Case2``() = let compileItems = [@"A\B\D\foo.fs"; @"A\B\C\bar.fs"] let expect = Tree("References", ANYTREE, Tree("A", Tree("B", Tree("D", Tree("foo.fs", Nil, Nil), Tree("C", Tree("bar.fs", Nil, Nil), Nil)), Nil), Nil)) // no alphabetization of files or folders this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems, "", expect) [] member public this.``FsprojFileToSolutionExplorer.FileOrderInFsprojIsRespected.Case3``() = let compileItems = [@"B\foo.fs"; @"A\bar.fs"] let other = @" " let expect = Tree("References", ANYTREE, Tree("B", Tree("foo.fs", Nil, Nil), Tree("A", Tree("bar.fs", Nil, Nil), Nil))) // Including folder should not put folder at front of other folders this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems, other, expect) [] member public this.``FsprojFileToSolutionExplorer.FileOrderInFsprojIsRespected.Case4``() = let compileItems = [@"foo.fs"; @"A\bar.fs"] let other = @" " let expect = Tree("References", ANYTREE, Tree("foo.fs", Nil, Tree("A", Tree("bar.fs", Nil, Nil), Nil))) // Including folder should not put folder at front of files this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems, other, expect) [] member public this.``FsprojFileToSolutionExplorer.LinksIntoFoldersAreRespected``() = let compileItems = [] let other = @" A\bar.fs " let expect = Tree("References", ANYTREE, Tree("foo.fs", Nil, Tree("A", Tree("bar.fs", Nil, Tree("qux.fs", Nil, Nil)), Nil))) this.``FsprojFileToSolutionExplorer.PositiveTest``(compileItems, other, expect) [] member public this.``Links.AddLinkToRootWorks``() = let compileItems = [@"Folder\foo.fs"; @"bar.fs"; ] this.MakeProjectAndDoWithProjectFile(compileItems, [], "", (fun project fileName -> this.EnsureCausesNotification(project, fun() -> let f = Internal.Utilities.FileSystem.Path.SafeGetFullPath(Path.Combine(project.ProjectFolder, @"..\qux.fs")) project.AddLinkedItem(project, [| f |], Array.create 1 (new VSADDRESULT())) |> ValidateOK ) let expect = Tree("References", ANYTREE, Tree("Folder", Tree("foo.fs",Nil,Nil), Tree("bar.fs", Nil, Tree("qux.fs", Nil,Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let regexStr = @"\s*\s*\s*\s*qux.fs" TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``Links.AddLinkToSubfolderWorks``() = let compileItems = [@"bar.fs"; @"Folder\foo.fs"; ] this.MakeProjectAndDoWithProjectFile(compileItems, [], "", (fun project fileName -> let folder = TheTests.FindNodeWithCaption(project, "Folder") this.EnsureCausesNotification(project, fun() -> let f = Internal.Utilities.FileSystem.Path.SafeGetFullPath(Path.Combine(project.ProjectFolder, @"..\qux.fs")) project.AddLinkedItem(folder, [| f |], Array.create 1 (new VSADDRESULT())) |> ValidateOK ) let expect = Tree("References", ANYTREE, Tree("bar.fs", Nil, Tree("Folder", Tree("foo.fs", Nil, Tree("qux.fs", Nil,Nil)), Nil))) TheTests.AssertSameTree(expect, project.FirstChild) SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let regexStr = @"\s*\s*\s*\s*Folder\\qux.fs" TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``Links.AddLinkToRootWorksForNonFsFile``() = let compileItems = [@"Folder\foo.fs"; @"bar.fs"; ] this.MakeProjectAndDoWithProjectFile(compileItems, [], "", (fun project fileName -> this.EnsureCausesNotification(project, fun() -> // Note: this is not the same code path as the UI, but it is close project.MoveNewlyAddedFileToBottomOfGroup (fun () -> let f = Internal.Utilities.FileSystem.Path.SafeGetFullPath(Path.Combine(project.ProjectFolder, @"..\qux.resx")) project.AddLinkedItem(project, [| f |], Array.create 1 (new VSADDRESULT())) |> ValidateOK ) ) let expect = Tree("References", ANYTREE, Tree("Folder", Tree("foo.fs",Nil,Nil), Tree("bar.fs", Nil, Tree("qux.resx", Nil,Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let regexStr = @"\s*\s*\s*\s*qux.resx" TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``Removal.ExcludeFileShouldDirtyProjectFileAndBeSeenOnDiskAfterSave``() = let items = MSBuildItems([CompileItem "foo.fs"; CompileItem "bar.fs"]) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> let toVerify = @"] member public this.``Removal.RemoveReferenceShouldDirtyProjectFileAndBeSeenOnDiskAfterSave``() = let items = MSBuildItems([CompileItem "foo.fs"; CompileItem "bar.fs"]) this.MakeProjectAndDoWithProjectFile([], ["System"], items.ToString(), (fun project fileName -> let toVerify = @"] member public this.``FsprojFileToSolutionExplorer.FileMovement.MoveUpShouldDirtyProject``() = let items = MSBuildItems([CompileItem "foo.fs"; CompileItem "bar.fs"]) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // Save the project first, then move the file, and check for dirty. SaveProject(project) let foo = TheTests.FindNodeWithCaption(project, "foo.fs") let bar = TheTests.FindNodeWithCaption(project, "bar.fs") TheTests.MoveUp(bar) AssertEqual true project.IsProjectFileDirty // Tests the tree let expect = Tree("References", ANYTREE, Tree("bar.fs", Nil, Tree("foo.fs", Nil, Nil))) TheTests.AssertSameTree(expect, project.FirstChild) )) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.MoveDownShouldDirtyProject``() = let items = MSBuildItems([CompileItem "foo.fs"; CompileItem "bar.fs"]) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // Save the project first, then move the file, and check for dirty. SaveProject(project) let foo = TheTests.FindNodeWithCaption(project, "foo.fs") let bar = TheTests.FindNodeWithCaption(project, "bar.fs") TheTests.MoveDown(foo) AssertEqual true project.IsProjectFileDirty // Tests the tree let expect = Tree("References", ANYTREE, Tree("bar.fs", Nil, Tree("foo.fs", Nil, Nil))) TheTests.AssertSameTree(expect, project.FirstChild) )) member this.SampleEntities = [CompileItem @"foo.fs"; FolderItem @"AnEmptyFolder\"; LinkedCompileItem(@"..\blah.fs", @"link.fs"); OtherItem(@"Content", @"foo.txt"); OtherItem(@"FsLex", @"lex.mll")] member private this.SampleFileEntity = ([CompileItem "bar.fs"], fun t -> Tree("bar.fs", Nil, t)) member private this.SampleEmptyFolderEntity = ([FolderItem @"MyFolder\"], fun t -> Tree("MyFolder", Nil, t)) member private this.SampleFolderWithItemsEntity = ([CompileItem @"MyFolder\x1.fs"; CompileItem @"MyFolder\Sub\x2.fs"; CompileItem @"MyFolder\x3.fs"], fun t -> Tree("MyFolder", Tree("x1.fs", Nil, Tree("Sub", Tree("x2.fs", Nil, Nil), Tree("x3.fs", Nil, Nil))), t)) [] member public this.``SpecificVersion.OptionsSavedToFsprojFile``() = let items = MSBuildItems( [CompileItem "foo.fs"] ) this.MakeProjectAndDoWithProjectFile([], ["System"], items.ToString(), (fun project fileName -> let WithName name seq = Seq.filter (fun (e:XElement) -> e.Name.LocalName = name) seq let WithAttrName name seq = Seq.filter (fun (e:XAttribute) -> e.Name.LocalName = name) seq let system = TheTests.FindNodeWithCaption(project, "System") let system = system :?> AssemblyReferenceNode let a = [| false, (fun (e:XElement) -> let expected = XDocument.Load(new StringReader(@"False")).Root TheTests.AssertSimilarXml(expected, e)) true, (fun (e:XElement) -> let expected = XDocument.Load(new StringReader(@"True")).Root TheTests.AssertSimilarXml(expected, e) let inc = e.Attributes() |> WithAttrName "Include" |> Seq.head Assert.IsTrue(inc.Value.StartsWith("System, Version", StringComparison.Ordinal), "assembly reference lacks version")) false, (fun (e:XElement) -> let expected = XDocument.Load(new StringReader(@"False")).Root TheTests.AssertSimilarXml(expected, e) let inc = e.Attributes() |> WithAttrName "Include" |> Seq.head Assert.IsTrue(inc.Value.StartsWith("System, Version", StringComparison.Ordinal), "assembly reference lacks version")) |] let props = system.NodeProperties :?> AssemblyReferenceProperties for v, f in a do props.SpecificVersion <- v // test that it manifests properly in .fsproj file SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let refNode = xDoc.Descendants() |> WithName "Reference" |> Seq.head printfn "%s" fsprojFileText f refNode )) [] member public this.``FsprojFileToSolutionExplorer.FileRenaming.RenamingAFileDoesNotChangeOrderInSolutionExplorerOrMSBuild``() = for entity, treeMaker in [this.SampleFileEntity; this.SampleEmptyFolderEntity] do let items = MSBuildItems( [CompileItem "foo.fs"] @ entity ) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // ensure things look right at start let expect = Tree("References", ANYTREE, Tree("foo.fs", Nil, treeMaker(Nil))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, "foo.fs") // rename it VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project (foo :?> FileNode).RenameFileNode(project.ProjectFolder + "\\foo.fs", project.ProjectFolder + "\\zzz.fs", foo.Parent.ID) |> ignore // test that it did not move in solution explorer let expect = Tree("References", ANYTREE, Tree("zzz.fs", Nil, treeMaker(Nil))) TheTests.AssertSameTree(expect, project.FirstChild) // test that it did not move in MSBuild SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let expectedItems = MSBuildItems( [CompileItem "zzz.fs"] @ entity ) let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAbove``(otherEntity) = let (otherEntityItems, otherTreeMaker) = otherEntity for entity in this.SampleEntities do printfn "=========> testing moving %s" (entity.ToString()) let items = MSBuildItems( otherEntityItems @ [entity] ) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // ensure things look right at start let expect = Tree("References", ANYTREE, otherTreeMaker( Tree(entity.Caption(), Nil, Nil))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, entity.Caption()) TheTests.EnsureMoveUpEnabled(foo) // move it up TheTests.MoveUp(foo) // test that it moved up in solution explorer let expect = Tree("References", ANYTREE, Tree(entity.Caption(), Nil, otherTreeMaker(Nil))) TheTests.AssertSameTree(expect, project.FirstChild) // test that it moved up in MSBuild SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let expectedItems = MSBuildItems( [entity] @ otherEntityItems ) let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAboveFile``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAbove``(this.SampleFileEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAboveEmptyFolder``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAbove``(this.SampleEmptyFolderEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAboveFolderWithItems``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedUpAbove``(this.SampleFolderWithItemsEntity) member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelow``(otherEntity) = let (otherEntityItems, otherTreeMaker) = otherEntity for entity in this.SampleEntities do printfn "=========> testing moving %s" (entity.ToString()) let items = MSBuildItems( entity :: otherEntityItems ) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // ensure things look right at start let expect = Tree("References", ANYTREE, Tree(entity.Caption(), Nil, otherTreeMaker(Nil))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, entity.Caption()) TheTests.EnsureMoveDownEnabled(foo) // move it down TheTests.MoveDown(foo) // test that it moved down in solution explorer let expect = Tree("References", ANYTREE, otherTreeMaker( Tree(entity.Caption(), Nil, Nil))) TheTests.AssertSameTree(expect, project.FirstChild) // test that it moved down in MSBuild SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let expectedItems = MSBuildItems( otherEntityItems @ [entity] ) let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelowFile``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelow``(this.SampleFileEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelowEmptyFolder``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelow``(this.SampleEmptyFolderEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelowFolderWithItems``() = this.``FsprojFileToSolutionExplorer.FileMovement.EntityCanBeMovedDownBelow``(this.SampleFolderWithItemsEntity) member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAbove``(otherEntity) = let (otherEntityItems, otherTreeMaker) = otherEntity let folderA = [CompileItem @"A\foo.fs"; CompileItem @"A\B\qux.fs"; FolderItem @"A\Empty\"; CompileItem @"A\zot.fs"] let after = [CompileItem "after.fs"] let items = MSBuildItems( otherEntityItems @ folderA @ after ) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // ensure things look right at start let expect = Tree("References", ANYTREE, otherTreeMaker( Tree("A", Tree("foo.fs", Nil, Tree("B", Tree("qux.fs", Nil, Nil), Tree("Empty", Nil, Tree("zot.fs", Nil, Nil)))), Tree("after.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, "A") TheTests.EnsureMoveUpEnabled(foo) // move it up TheTests.MoveUp(foo) // test that it moved up in solution explorer let expect = Tree("References", ANYTREE, Tree("A", Tree("foo.fs", Nil, Tree("B", Tree("qux.fs", Nil, Nil), Tree("Empty", Nil, Tree("zot.fs", Nil, Nil)))), otherTreeMaker( Tree("after.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) // test that it moved up in MSBuild SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let expectedItems = MSBuildItems( folderA @ otherEntityItems @ after ) let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAboveFile``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAbove``(this.SampleFileEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAboveEmptyFolder``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAbove``(this.SampleEmptyFolderEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAboveFolderWithItems``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedUpAbove``(this.SampleFolderWithItemsEntity) member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelow``(otherEntity) = let (otherEntityItems, otherTreeMaker) = otherEntity let folderA = [CompileItem @"A\foo.fs"; CompileItem @"A\B\qux.fs"; FolderItem @"A\Empty\"; CompileItem @"A\zot.fs"] let after = [CompileItem "after.fs"] let items = MSBuildItems( folderA @ otherEntityItems @ after ) this.MakeProjectAndDoWithProjectFile([], [], items.ToString(), (fun project fileName -> // ensure things look right at start let expect = Tree("References", ANYTREE, Tree("A", Tree("foo.fs", Nil, Tree("B", Tree("qux.fs", Nil, Nil), Tree("Empty", Nil, Tree("zot.fs", Nil, Nil)))), otherTreeMaker( Tree("after.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, "A") TheTests.EnsureMoveDownEnabled(foo) // move it down TheTests.MoveDown(foo) // test that it moved down in solution explorer let expect = Tree("References", ANYTREE, otherTreeMaker( Tree("A", Tree("foo.fs", Nil, Tree("B", Tree("qux.fs", Nil, Nil), Tree("Empty", Nil, Tree("zot.fs", Nil, Nil)))), Tree("after.fs", Nil, Nil)))) TheTests.AssertSameTree(expect, project.FirstChild) // test that it moved down in MSBuild SaveProject(project) let fsprojFileText = File.ReadAllText(fileName) printfn "%s" fsprojFileText let expectedItems = MSBuildItems( otherEntityItems @ folderA @ after ) let regexStr = expectedItems.AsRegexString() TheTests.HelpfulAssertMatches '<' regexStr fsprojFileText )) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelowFile``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelow``(this.SampleFileEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelowEmptyFolder``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelow``(this.SampleEmptyFolderEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelowFolderWithItems``() = this.``FsprojFileToSolutionExplorer.FileMovement.FolderWithItemsCanBeMovedDownBelow``(this.SampleFolderWithItemsEntity) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.NegativeTests.EntityCannotBeMovedAboveReferences``() = for entity in this.SampleEntities do printfn "=========> testing moving %s" (entity.ToString()) let items = MSBuildItems [entity; CompileItem "bar.fs"] use project = this.MakeProject([], [], items.ToString()) let expect = Tree("References", ANYTREE, Tree(entity.Caption(), Nil, Tree("bar.fs", Nil, Nil))) TheTests.AssertSameTree(expect, project.FirstChild) let foo = TheTests.FindNodeWithCaption(project, entity.Caption()) TheTests.EnsureMoveUpDisabled(foo) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.NegativeTests.EntityCannotBeMovedUpWhenTopOfFolder``() = for entity in this.SampleEntities |> List.map (fun e -> e.IntoFolder(@"Folder\")) do printfn "=========> testing moving %s" (entity.ToString()) let items = MSBuildItems [FolderItem @"Folder\"; entity] use project = this.MakeProject([], [], items.ToString()) let expect = Tree("References", ANYTREE, Tree("Folder", Tree(entity.Caption(), Nil, Nil), Nil)) TheTests.AssertSameTree(expect, project.FirstChild) let bar = TheTests.FindNodeWithCaption(project, entity.Caption()) TheTests.EnsureMoveUpDisabled(bar) [] member public this.``FsprojFileToSolutionExplorer.FileMovement.NegativeTests.EntityCannotBeMovedDownWhenBottomOfFolder``() = for entity in this.SampleEntities |> List.map (fun e -> e.IntoFolder(@"Folder\")) do printfn "=========> testing moving %s" (entity.ToString()) let items = MSBuildItems [FolderItem @"Folder\"; entity] use project = this.MakeProject([], [], items.ToString()) let expect = Tree("References", ANYTREE, Tree("Folder", Tree(entity.Caption(), Nil, Nil), Nil)) TheTests.AssertSameTree(expect, project.FirstChild) let bar = TheTests.FindNodeWithCaption(project, entity.Caption()) TheTests.EnsureMoveDownDisabled(bar) [] member public this.``RenameFile.FailureToRenameInRDT.Bug616680.EnsureRevertToKnownConsistentState``() = this.MakeProjectAndDo(["orig1.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "orig1.fs") try File.AppendAllText(absFilePath, "#light") let orig1 = TheTests.FindNodeWithCaption(project, "orig1.fs") VsMocks.vsRunningDocumentTableNextRenameDocumentCallThrows <- true VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project try ErrorHandler.ThrowOnFailure(orig1.SetEditLabel("orig2.fs")) |> ignore // rename the file Assert.Fail("expected an exception") with | e -> printfn "Got expected exception: %s" e.Message SaveProject(project) // TODO ensure no events were fired // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig1.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("orig1.fs", Nil, Nil)) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) [] member public this.``RenameFile.FailureToRenameInRDT.Bug616680.EnsureThatFileOrderDidNotChange``() = this.MakeProjectAndDo(["a.fs";"b.fs";"orig1.fs";"c.fs";"d.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "orig1.fs") try File.AppendAllText(absFilePath, "#light") let orig1 = TheTests.FindNodeWithCaption(project, "orig1.fs") VsMocks.vsRunningDocumentTableNextRenameDocumentCallThrows <- true VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project try ErrorHandler.ThrowOnFailure(orig1.SetEditLabel("orig2.fs")) |> ignore // rename the file Assert.Fail("expected an exception") with | e -> printfn "Got expected exception: %s" e.Message SaveProject(project) // TODO ensure no events were fired // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["a.fs";"b.fs";"orig1.fs";"c.fs";"d.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("a.fs", Nil, Tree("b.fs", Nil, Tree("orig1.fs", Nil, Tree("c.fs", Nil, Tree("d.fs", Nil, Nil)))))) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) [] member public this.``RenameFile.VerifyItemIdsRemainsTheSame``() = let name1 = "orig.fs" let name2 = "orig2.fs" this.MakeProjectAndDo([name1], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, name1) try File.AppendAllText(absFilePath, "#light") let orig1 = TheTests.FindNodeWithCaption(project, name1) VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project try ErrorHandler.ThrowOnFailure(orig1.SetEditLabel(name2)) |> ignore // rename the file with | e -> Assert.Fail("no exception expected") let orig2 = TheTests.FindNodeWithCaption(project, name2) AssertEqual orig1.ID orig2.ID finally File.Delete(absFilePath) )) [] member public this.``RenameFile.MainlineSuccessCase``() = this.MakeProjectAndDo(["orig1.fs"], [], "", (fun project -> let absFilePath = Path.Combine(project.ProjectFolder, "orig1.fs") try File.AppendAllText(absFilePath, "#light") let orig1 = TheTests.FindNodeWithCaption(project, "orig1.fs") VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project try ErrorHandler.ThrowOnFailure(orig1.SetEditLabel("orig2.fs")) |> ignore // rename the file with | e -> Assert.Fail("no exception expected") SaveProject(project) // TODO ensure IVsHierarchyEvents Delete/Add was fired // TODO ensure IVsTrackProjectDocumentsEvents Renamed was fired // ensure right in .fsproj let msbuildInfo = TheTests.MsBuildCompileItems(project.BuildProject) AssertEqual ["orig2.fs"] msbuildInfo // ensure right in solution explorer let expect = Tree("References", ANYTREE, Tree("orig2.fs", Nil, Nil)) TheTests.AssertSameTree(expect, project.FirstChild) finally File.Delete(absFilePath) )) [] member public this.``RenameFile.BuildActionIsResetBasedOnFilenameExtension``() = let COMPILE = "Compile" let NONE = "None" let EMBEDDEDRESOURCE = "EmbeddedResource" let CONTENT = "Content" // See Bug 5519, briefly, we just want out-of-the-box defaults to be like C#, without all their complicated logic, so we just hardcode a few values to be like C# and then otherwise default to NONE let defaultBuildActionTable = dict [ "config", NONE "manifest", NONE "bmp", CONTENT "cd", NONE "cur", CONTENT "xsd", NONE "ico", CONTENT "js", CONTENT "sync", NONE "tt", NONE "resx", EMBEDDEDRESOURCE "ruleset", NONE "settings", NONE "txt", CONTENT "wsf", CONTENT "xml", CONTENT "ml", COMPILE "mli", COMPILE "fs", COMPILE "fsi", COMPILE "fsx", NONE "fsscript", NONE "someunexpectedgobbledegook", NONE ] // A rename that changes a file extension will pop up a modal dialog box, this tells the mock to say 'yes' to the dialog VsMocks.vsUIShellShowMessageBoxResult <- Some 6 // IDYES = 6 this.MakeProjectAndDo(["foo.fs"], [], "", (fun project -> let Absolutize filename = Path.Combine(project.ProjectFolder, filename) let mutable currentAbsoluteFilePath = Absolutize "foo.fs" File.AppendAllText(currentAbsoluteFilePath, "// dummy content") try for KeyValue(extension, buildAction) in defaultBuildActionTable do let node = TheTests.FindNodeWithCaption(project, Path.GetFileName(currentAbsoluteFilePath)) let newFileName = Absolutize("foo." + extension) VsMocks.vsRunningDocumentTableFindAndLockDocumentVsHierarchyMock <- project try ErrorHandler.ThrowOnFailure(node.SetEditLabel(Path.GetFileName(newFileName))) |> ignore // rename the file with | e -> Assert.Fail("no exception expected, but got " + e.ToString()) // check that the OM has the updated build action let node = TheTests.FindNodeWithCaption(project, Path.GetFileName(newFileName)) :?> FSharpFileNode let props = node.NodeProperties :?> FSharpFileNodeProperties AssertEqual buildAction props.BuildAction.Name // check that the build action in the .fsproj file has the expected value SaveProject(project) let fsprojFileText = File.ReadAllText(Absolutize project.ProjectFile) printfn "%s" fsprojFileText let expectedRegexStr = "<" + buildAction + " Include=\"" + Path.GetFileName(newFileName) + "\" />" TheTests.HelpfulAssertMatches '<' expectedRegexStr fsprojFileText currentAbsoluteFilePath <- newFileName finally VsMocks.vsUIShellShowMessageBoxResult <- None File.Delete(currentAbsoluteFilePath) )) [] member public this.``FsprojOutputWindow.ErrorOriginColumnsAreBase1``() = let (outputWindowPaneErrors : string list ref) = ref [] // output window pane errors let vso = VsMocks.vsOutputWindowPane(outputWindowPaneErrors) let compileItem = ["foo.fs"] let expectedError = "foo\.fs\(1,1\): error FS0039: The value or constructor 'bar' is not defined." // expected error DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText(compileItem, [], "")) use project = TheTests.CreateProject(projFile) let srcFile = (Path.GetDirectoryName projFile) + "\\" + "foo.fs" File.AppendAllText(srcFile, "bar") ; // foo.fs will be cleaned up by parent call to DoWithTempFile project.BuildToOutput("Build", vso) |> ignore // Build the project using vso as the output logger let errors = List.filter (fun s -> (new Regex(expectedError)).IsMatch(s)) !outputWindowPaneErrors for e in errors do printfn "Output Window Pane Error: %s" e // there should be one and only one error for 'bar', located at (1,1) AssertEqual (List.length errors) 1 ) [] member public this.``FsprojOutputWindow.HighUnicodeCharactersAreProperlyDisplayed``() = let (outputWindowPaneErrors : string list ref) = ref [] // output window pane errors let vso = VsMocks.vsOutputWindowPane(outputWindowPaneErrors) let compileItem = ["æ–°è¦bcrogram.fs"] let expectedError = "æ–°è¦bcrogram\.fs\(1,1\): error FS0039: The value or constructor 'bar' is not defined." // expected error DoWithTempFile "Test.fsproj" (fun projFile -> File.AppendAllText(projFile, TheTests.SimpleFsprojText(compileItem, [], "")) use project = TheTests.CreateProjectWithUTF8Output(projFile) let srcFile = (Path.GetDirectoryName projFile) + "\\" + "æ–°è¦bcrogram.fs" File.AppendAllText(srcFile, "bar") ; // æ–°è¦bcrogram.fs will be cleaned up by parent call to DoWithTempFile project.BuildToOutput("Build", vso) |> ignore // Build the project using vso as the output logger let errors = List.filter (fun s -> (new Regex(expectedError)).IsMatch(s)) !outputWindowPaneErrors for e in errors do printfn "Output Window Pane Error: %s" e // there should be one and only one error for 'bar', located at (1,1) AssertEqual (List.length errors) 1 () ) fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.ParameterInfo.fs0000775000175000017500000032351612260314606025453 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService exception NoParamInfo [] module ParamInfoStandardSettings = let standard40AssemblyRefs = [| "System"; "System.Core"; "System.Numerics" |] let queryAssemblyRefs = [ "System.Xml.Linq"; "System.Core" ] type ParameterInfoTests() = inherit LanguageServiceBaseTests() let GetParamDisplays(methods:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip) = [ for i = 0 to methods.GetCount() - 1 do yield [ for j = 0 to methods.GetParameterCount(i) - 1 do let (name,display,description) = methods.GetParameterInfo(i,j) yield display ] ] let AssertEmptyMethodGroup(resultMethodGroup:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip) = Assert.AreEqual(null, resultMethodGroup, "Expected an empty method group") let AssertMethodGroupDesciptionsDoNotContain(methods:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip, expectNotToBeThere) = for i = 0 to methods.GetCount() - 1 do let description = methods.GetDescription(i) if (description.Contains(expectNotToBeThere)) then Console.WriteLine("Expected description {0} to not contain {1}", description, expectNotToBeThere) AssertNotContains(description,expectNotToBeThere) let AssertMethodGroup(resultMethodGroup:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip, expectedParamNamesSet:string list list) = Assert.AreEqual(expectedParamNamesSet.Length, resultMethodGroup.GetCount()) Assert.IsTrue(resultMethodGroup |> GetParamDisplays |> Seq.forall (fun paramDisplays -> expectedParamNamesSet |> List.exists (fun expectedParamNames -> expectedParamNames.Length = paramDisplays.Length && (expectedParamNames,paramDisplays) ||> List.forall2 (fun expectedParamName paramDisplay -> paramDisplay.Contains(expectedParamName))))) let AssertMethodGroupContain(resultMethodGroup:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip, expectedParamNames:string list) = Assert.IsTrue(resultMethodGroup |> GetParamDisplays |> Seq.exists (fun paramDisplays -> expectedParamNames.Length = paramDisplays.Length && (expectedParamNames,paramDisplays) ||> List.forall2 (fun expectedParamName paramDisplay -> paramDisplay.Contains(expectedParamName)))) member private this.GetMethodListForAMethodTip(fileContents : string, marker : string, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToStartOfMarker(file, marker) GetParameterInfoAtCursor(file) //Verify all the overload method parameterInfo member private this.VerifyParameterInfoAtStartOfMarker(fileContents : string, marker : string, expectedParamNamesSet:string list list, ?addtlRefAssy :list) = let methodstr = match addtlRefAssy with |None -> this.GetMethodListForAMethodTip(fileContents,marker) |Some(x) -> this.GetMethodListForAMethodTip(fileContents,marker,x) AssertMethodGroup(methodstr,expectedParamNamesSet) //Verify No parameterInfo at the marker member private this.VerifyNoParameterInfoAtStartOfMarker(fileContents : string, marker : string, ?addtlRefAssy : list) = let methodstr = match addtlRefAssy with |None -> this.GetMethodListForAMethodTip(fileContents,marker) |Some(x) -> this.GetMethodListForAMethodTip(fileContents,marker,x) AssertEmptyMethodGroup(methodstr) //Verify one method parameterInfo if contained in parameterInfo list member private this.VerifyParameterInfoContainedAtStartOfMarker(fileContents : string, marker : string, expectedParamNames:string list, ?addtlRefAssy : list) = let methodstr = match addtlRefAssy with |None -> this.GetMethodListForAMethodTip(fileContents,marker) |Some(x) -> this.GetMethodListForAMethodTip(fileContents,marker,x) AssertMethodGroupContain(methodstr,expectedParamNames) //Verify the parameterInfo of one of the list order member private this.VerifyParameterInfoOverloadMethodIndex(fileContents : string, marker : string, index : int, expectedParams:string list, ?addtlRefAssy : list) = let methodstr = match addtlRefAssy with |None -> this.GetMethodListForAMethodTip(fileContents,marker) |Some(x) -> this.GetMethodListForAMethodTip(fileContents,marker,x) let GetPramDisplaysByIndex(methods:Microsoft.VisualStudio.FSharp.LanguageService.MethodListForAMethodTip) = [ for i = 0 to methods.GetParameterCount(index) - 1 do let (name,display,description) = methods.GetParameterInfo(index,i) yield display] let paramDisplays = GetPramDisplaysByIndex methodstr Assert.IsTrue((expectedParams, paramDisplays) ||> List.forall2 (fun expectedParam paramDisplay -> paramDisplay.Contains(expectedParam))) //Verify there is at least one parameterInfo member private this.VerifyHasParameterInfo(fileContents : string, marker : string) = let methodstr = this.GetMethodListForAMethodTip(fileContents,marker) Assert.IsTrue (methodstr.GetCount() > 0) //Verify return content after the colon member private this.VerifyFirstParameterInfoColonContent(fileContents : string, marker : string, expectedStr : string, ?addtlRefAssy : list) = let methodstr = match addtlRefAssy with |None -> this.GetMethodListForAMethodTip(fileContents,marker) |Some(x) -> this.GetMethodListForAMethodTip(fileContents,marker,x) Assert.AreEqual(expectedStr, methodstr.GetType(0)) // Expecting a method info like X(a:int,b:int) : int [used to be X(a:int,b:int) -> int] [] member public this.``Regression.OnConstructor.881644``() = let fileContent = """new System.IO.StreamReader((*Mark*)""" let methodstr = this.GetMethodListForAMethodTip(fileContent,"(*Mark*)") if not (methodstr.GetDescription(0).Contains("#ctor")) then failwith "Expected parameter info to contain #ctor" [] member public this.``Regression.InsideWorkflow.6437``() = let fileContent = """ open System.IO let computation2 = async { use file = File.Open("",FileMode.Open) let! buffer = file.AsyncRead((*Mark*)0) return 0 }""" let methodstr = this.GetMethodListForAMethodTip(fileContent,"(*Mark*)") if not (methodstr.GetDescription(0).Contains("AsyncRead")) then failwith "Expected parameter info to contain AsyncRead" [] [] member public this.``Regression.MethodInfo.WithColon.Bug4518_1``() = let fileContent = """ type T() = member this.X with set ((a:int), (b:int)) (c:int) = () ((new T()).X((*Mark*)""" this.VerifyFirstParameterInfoColonContent(fileContent,"(*Mark*)",": int") [] member public this.``Regression.MethodInfo.WithColon.Bug4518_2``() = let fileContent = """ type IFoo = interface abstract f : int -> int end let i : IFoo = null i.f((*Mark*)""" this.VerifyFirstParameterInfoColonContent(fileContent,"(*Mark*)",": int") [] member public this.``Regression.MethodInfo.WithColon.Bug4518_3``() = let fileContent = """ type M() = member this.f x = () let m = new M() m.f((*Mark*)""" this.VerifyFirstParameterInfoColonContent(fileContent,"(*Mark*)",": unit") [] member public this.``Regression.MethodInfo.WithColon.Bug4518_4``() = let fileContent = """ type T() = member this.Foo(a,b) = "" let t = new T() t.Foo((*Mark*)""" this.VerifyFirstParameterInfoColonContent(fileContent,"(*Mark*)",": string") [] member public this.``Regression.MethodInfo.WithColon.Bug4518_5``() = let fileContent = """ let f x y = x + y f((*Mark*)""" this.VerifyFirstParameterInfoColonContent(fileContent,"(*Mark*)",": int -> int ") [] member public this.``Regression.StaticVsInstance.Bug3626.Case1``() = let fileContent = """ type Foo() = member this.Bar(instanceReturnsString:int) = "hllo" static member Bar(staticReturnsInt:int) = 13 let z = Foo.Bar((*Mark*))""" this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["staticReturnsInt"]]) [] member public this.``Regression.StaticVsInstance.Bug3626.Case2``() = let fileContent = """ type Foo() = member this.Bar(instanceReturnsString:int) = "hllo" static member Bar(staticReturnsInt:int) = 13 let Hoo = new Foo() let y = Hoo.Bar((*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["instanceReturnsString"]]) [] member public this.``Regression.MethodInfo.Bug808310``() = let fileContent = """System.Console.WriteLine((*Mark*)""" let methodGroup = this.GetMethodListForAMethodTip(fileContent,"(*Mark*)") let description = methodGroup.GetDescription(0) // Make sure that System.Console.WriteLine is not mentioned anywhere exception in the XML comment signature let xmlCommentIndex = description.IndexOf("System.Console.WriteLine]") let noBracket = description.IndexOf("System.Console.WriteLine") Assert.IsTrue(noBracket>=0) Assert.AreEqual(noBracket, xmlCommentIndex) [] member public this.``NoArguments``() = // we want to see e.g. // g() : int // and not // g(unit) : int let fileContents = """ type T = static member F() = 42 static member G(x:unit) = 42 let r1 = T.F((*1*)) let r2 = T.G((*2*)) let g() = 42 let h((x:unit)) = 42 let r3 = h((*3*)) let r4 = g((*4*))""" Assert.AreEqual(0, this.GetMethodListForAMethodTip(fileContents,"(*1*)").GetParameterCount(0)) Assert.AreEqual(0, this.GetMethodListForAMethodTip(fileContents,"(*2*)").GetParameterCount(0)) Assert.AreEqual(0, this.GetMethodListForAMethodTip(fileContents,"(*3*)").GetParameterCount(0)) Assert.AreEqual(0, this.GetMethodListForAMethodTip(fileContents,"(*4*)").GetParameterCount(0)) [] member public this.``Single.Constructor1``() = let fileContent = """new System.DateTime((*Mark*)""" this.VerifyHasParameterInfo(fileContent, "(*Mark*)") [] member public this.``Single.Constructor2``() = let fileContent = """ open System new DateTime((*Mark*)""" this.VerifyHasParameterInfo(fileContent, "(*Mark*)") [] member public this.``Single.DotNet.StaticMethod``() = let code = ["#light" "System.Object.ReferenceEquals(" ] let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file,"Object.ReferenceEquals(") let methodGroup = GetParameterInfoAtCursor file AssertMethodGroup(methodGroup, [["objA"; "objB"]]) gpatcc.AssertExactly(0,0) [] member public this.``Regression.NoParameterInfo.100I.Bug5038``() = let fileContent = """100I((*Mark*)""" this.VerifyNoParameterInfoAtStartOfMarker(fileContent,"(*Mark*)") [] member public this.``Single.DotNet.InstanceMethod``() = let fileContent = """ let s = "Hello" s.Substring((*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["startIndex"]; ["startIndex"; "length"]]) [] member public this.``Single.BasicFSharpFunction``() = let fileContent = """ let foo(x) = 1 foo((*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["'a"]]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes one (static) method that takes one argument works normally. member public this.``TypeProvider.StaticMethodWithOneParam`` () = let fileContent = """ let foo = N1.T1.M1((*Marker*) """ this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Marker*)",[["arg1"]], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes a (static) method that takes >1 arguments works normally. member public this.``TypeProvider.StaticMethodWithMoreParam`` () = let fileContent = """ let foo = N1.T1.M2((*Marker*) """ this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Marker*)",[["arg1";"arg2"]], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case verify the TypeProvider static method return type or colon content of the method //This test verifies that ParamInfo on a provided type that exposes one (static) method that takes one argument //and returns something works correctly (more precisely, it checks that the return type is 'int') member public this.``TypeProvider.StaticMethodColonContent`` () = let fileContent = """ let foo = N1.T1.M2((*Marker*) """ this.VerifyFirstParameterInfoColonContent(fileContent,"(*Marker*)",": int", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes a Constructor that takes no argument works normally. member public this.``TypeProvider.ConstructorWithNoParam`` () = let fileContent = """ let foo = new N1.T1((*Marker*) """ this.VerifyParameterInfoOverloadMethodIndex(fileContent,"(*Marker*)",0,[], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes a Constructor that takes one argument works normally. member public this.``TypeProvider.ConstructorWithOneParam`` () = let fileContent = """ let foo = new N1.T1((*Marker*) """ this.VerifyParameterInfoOverloadMethodIndex(fileContent,"(*Marker*)",1,["arg1"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes a Constructor that takes >1 argument works normally. member public this.``TypeProvider.ConstructorWithMoreParam`` () = let fileContent = """ let foo = new N1.T1((*Marker*) """ this.VerifyParameterInfoOverloadMethodIndex(fileContent,"(*Marker*)",2,["arg1";"arg2"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo on a provided type that exposes a static parameter that takes >1 argument works normally. member public this.``TypeProvider.Type.WhenOpeningBracket`` () = let fileContent = """ type foo = N1.T<(*Marker*) """ this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Marker*)",[["Param1";"ParamIgnored"]], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that after closing bracket ">" the ParamInfo isn't showing on a provided type that exposes a static parameter that takes >1 argument works normally. //This is a regression test for Bug DevDiv:181000 member public this.``TypeProvider.Type.AfterCloseBracket`` () = let fileContent = """ type foo = N1.T< "Hello", 2>(*Marker*) """ this.VerifyNoParameterInfoAtStartOfMarker(fileContent,"(*Marker*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo is showing after delimiter "," on a provided type that exposes a static parameter that takes >1 argument works normally. member public this.``TypeProvider.Type.AfterDelimiter`` () = let fileContent = """ type foo = N1.T<"Hello",(*Marker*) """ this.VerifyParameterInfoContainedAtStartOfMarker(fileContent,"(*Marker*)",["Param1";"ParamIgnored"], [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``Single.InMatchClause``() = let fileContent = """ let rec f l = match l with | [] -> System.String.Format((*Mark*) | x :: xs -> f xs""" this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark*)",[["format"; "arg0"]; ["format"; "args"]; ["provider"; "format"; "args"]; ["format"; "arg0"; "arg1"]; ["format"; "arg0"; "arg1"; "arg2"]]) (* --- Parameter Info Systematic Tests ------------------------------------------------- *) member public this.TestSystematicParameterInfo (marker, methReq, ?startOfMarker) = let code = ["let arr = " " seq { for c = 'a' to 'z' do yield c }" " |> Seq.map ( fun c ->" " async { let x = c.ToString() in" " return System.String.Format(\"[{0}] for [{1}]\"(*loc-1*), x.ToUpperInvariant()(*loc-2*), c) })" " |> Async.Parallel" " |> Async.RunSynchronously" "let (alist: System.Collections.ArrayList) = System.Collections.ArrayList(2)" "alist.[0] |> ignore" "<@@ let x = 1 in x(*loc-8*) @@>" "type FunkyType =" " private (*loc-4*)new() = {}" " static member ConvertToInt32 (s : string) =" " let mutable n = 0 in" " let parseRes = System.Int32.TryParse(s, &n) in" " if not parseRes then" " raise (new System.ArgumentException(\"incorrect number format\"))" " n" "type Fruit = | Apple | Banana" "type KeyValuePair = { Key : int; Value : float }" "let print (x : Fruit, kvp : KeyValuePair) = System.Console.WriteLine(x); System.Console.WriteLine(kvp)" "print ((*loc-9*)Banana, {Key = 0; Value = 0.0})" "type Emp = " " []" " static val mutable private m_ID : int" " static member private NextID () = Emp.m_ID <- Emp.m_ID + 1; Emp.m_ID" " val mutable private m_EmpID : int" " val mutable private m_Name : string" " val mutable private m_Salary : float" " val mutable private m_DoB : System.DateTime" " (*loc-5*)" " // Overloaded Constructors" " public new() =" " { m_EmpID = Emp.NextID();" " m_Name = System.String.Empty;" " m_Salary = 0.0;" " m_DoB = System.DateTime.Today }" " public new(name, salary, dob) as self = " " new Emp() then" " self.m_Name <- name" " self.m_Salary <- salary" " self.m_DoB <- dob" " public new(name, dob) =" " new (*loc-3*)Emp(name, 0.0, dob)" " // Overloaded methods" " member this.IncreaseBy(amount : float ) = this.m_Salary <- this.m_Salary + amount" " member this.IncreaseBy(amount : int ) = this.IncreaseBy(float(amount))" " member this.IncreaseBy(amount : float32) = this.IncreaseBy(float(amount))" "let ``Random Number Generator`` = System.Random()" "let ``?Max!Value?`` = 100" "let swap (a, b) = (b, a)" "[ \"Kevin\", System.DateTime.Today.AddYears(-25); \"John\", new System.DateTime(1980, 1, 1) ]" "|> List.map ( fun a -> let pair = swap a in Emp(dob = fst pair, name = snd pair) )" "|> List.iter ( fun a -> a.IncreaseBy(``Random Number Generator``.Next((*loc-7*)``?Max!Value?``)) )" "System.Console.ReadLine(" ] let (_, _, file) = this.CreateSingleFileProject(code) match startOfMarker with | Some(start) when start = true -> MoveCursorToStartOfMarker(file, marker) | _ -> MoveCursorToEndOfMarker(file, marker) let methodGroup = GetParameterInfoAtCursor file if (methReq = []) then AssertEqual(null, methodGroup) else AssertMethodGroup(methodGroup, methReq) // Test on .NET functions with no parameter [] member public this.``Single.DotNet.NoParameters`` () = this.TestSystematicParameterInfo("x.ToUpperInvariant(", [ [] ]) // Test on .NET function with one parameter [] member public this.``Single.DotNet.OneParameter`` () = this.TestSystematicParameterInfo("System.DateTime.Today.AddYears(", [ ["value: int"] ] ) // Test appearance of PI on second parameter of .NET function [] [] member public this.``Single.DotNet.OnSecondParameter`` () = this.TestSystematicParameterInfo("loc-1*),", [ ["format"; "args"]; ["format"; "arg0"]; ["provider"; "format"; "args"]; ["format"; "arg0"; "arg1"]; ["format"; "arg0"; "arg1"; "arg2"] ] ) // Test on .NET functions with parameter array [] [] member public this.``Single.DotNet.ParameterArray`` () = this.TestSystematicParameterInfo("loc-2*),", [ ["format"; "args"]; ["format"; "arg0"]; ["provider"; "format"; "args"]; ["format"; "arg0"; "arg1"]; ["format"; "arg0"; "arg1"; "arg2"] ] ) // Test on .NET indexers [] [] member public this.``Single.DotNet.IndexerParameter`` () = this.TestSystematicParameterInfo("alist.[", [ ["index: int"] ] ) // Test on .NET parameters passed with 'out' keyword (byref) [] [] member public this.``Single.DotNet.ParameterByReference`` () = this.TestSystematicParameterInfo("Int32.TryParse(s,", [ ["s: string"; "result: int byref"]; ["s"; "style"; "provider"; "result"] ] ) // Test on reference type and value type paramaters (e.g. string & DateTime) [] member public this.``Single.DotNet.RefTypeValueType`` () = this.TestSystematicParameterInfo("loc-3*)Emp(", [ []; ["name: string"; "dob: System.DateTime"]; ["name: string"; "salary: float"; "dob: System.DateTime"] ] ) // Test PI does not pop up at point of definition/declaration [] [] member public this.``Single.Locations.PointOfDefinition`` () = this.TestSystematicParameterInfo("loc-4*)new(", [ ] ) this.TestSystematicParameterInfo("member ConvertToInt32 (", [ ] ) this.TestSystematicParameterInfo("member this.IncreaseBy(", [ ] ) // Test PI does not pop up on whitespace after type annotation [] [] member public this.``Single.Locations.AfterTypeAnnotation`` () = this.TestSystematicParameterInfo("(*loc-5*)", [], true) // Test PI does not pop up after non-parameterized properties [] member public this.``Single.Locations.AfterProperties`` () = this.TestSystematicParameterInfo("System.DateTime.Today", []) //this.TestSystematicParameterInfo("(*loc-8*)", [], true) // Test PI does not pop up after non-function values [] member public this.``Single.Locations.AfterValues`` () = this.TestSystematicParameterInfo("(*loc-8*)", [], true) // Test PI does not pop up after non-parameterized properties and after values [] member public this.``Single.Locations.EndOfFile`` () = this.TestSystematicParameterInfo("System.Console.ReadLine(", [ [] ]) // Test PI pop up on parameter list for attributes [] [] member public this.``Single.OnAttributes`` () = this.TestSystematicParameterInfo("(*loc-6*)", [ []; [ "check: bool" ] ], true) // Test PI when quoted identifiers are used as parameter [] member public this.``Single.QuotedIdentifier`` () = this.TestSystematicParameterInfo("(*loc-7*)", [ []; [ "maxValue" ]; [ "minValue"; "maxValue" ] ], true) // Test PI with parameters of custom type [] member public this.``Single.RecordAndUnionType`` () = this.TestSystematicParameterInfo("(*loc-9*)", [ [ "Fruit"; "KeyValuePair" ] ], true) (* --- End Of Parameter Info Systematic Tests ------------------------------------------ *) (* Tests for Generic parameterinfos -------------------------------------------------------- *) member private this.TestGenericParameterInfo (testLine, methReq) = let code = [ "#light"; "open System"; "open System.Threading"; ""; testLine ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, testLine) let methodGroup = GetParameterInfoAtCursor file if (methReq = []) then AssertEqual(null, methodGroup) else AssertMethodGroup(methodGroup, methReq) [] member public this.``Single.Generics.Typeof``() = let sevenTimes l = [ l; l; l; l; l; l; l ] this.TestGenericParameterInfo("typeof(", []) [] member public this.``Single.Generics.MathAbs``() = let sevenTimes l = [ l; l; l; l; l; l; l ] this.TestGenericParameterInfo("Math.Abs(", sevenTimes ["value"]) [] member public this.``Single.Generics.ExchangeInt``() = let sevenTimes l = [ l; l; l; l; l; l; l ] this.TestGenericParameterInfo("Interlocked.Exchange(", sevenTimes ["location1"; "value"]) [] member public this.``Single.Generics.Exchange``() = let sevenTimes l = [ l; l; l; l; l; l; l ] this.TestGenericParameterInfo("Interlocked.Exchange(", sevenTimes ["location1"; "value"]) [] member public this.``Single.Generics.ExchangeUnder``() = let sevenTimes l = [ l; l; l; l; l; l; l ] this.TestGenericParameterInfo("Interlocked.Exchange<_> (", sevenTimes ["location1"; "value"]) [] member public this.``Single.Generics.Dictionary``() = this.TestGenericParameterInfo("System.Collections.Generic.Dictionary<_, option>(", [ []; ["capacity"]; ["comparer"]; ["capacity"; "comparer"]; ["dictionary"]; ["dictionary"; "comparer"] ]) [] member public this.``Single.Generics.List``() = this.TestGenericParameterInfo("new System.Collections.Generic.List< _ > ( ", [ []; ["capacity"]; ["collection"] ]) [] member public this.``Single.Generics.ListInt``() = this.TestGenericParameterInfo("System.Collections.Generic.List(", [ []; ["capacity"]; ["collection"] ]) [] member public this.``Single.Generics.EventHandler``() = this.TestGenericParameterInfo("new System.EventHandler( ", [ [""] ]) // function arg doesn't have a name [] member public this.``Single.Generics.EventHandlerEventArgs``() = this.TestGenericParameterInfo("System.EventHandler(", [ [""] ]) // function arg doesn't have a name [] member public this.``Single.Generics.EventHandlerEventArgsNew``() = this.TestGenericParameterInfo("new System.EventHandler ( ", [ [""] ]) // function arg doesn't have a name // Split into multiple lines using "\n" and find the index of "$" (and remove it from the text) member private this.ExtractLineInfo (line:string) = let idx, lines, foundDollar = line.Split([| '\r'; '\n' |], StringSplitOptions.RemoveEmptyEntries) |> List.ofArray |> List.foldBack (fun l (idx, lines, foundDollar) -> let i = l.IndexOf("$") if i = -1 then (idx, l::lines, foundDollar) else (l.Substring(0, i), l.Replace("$", "")::lines, true) ) <| ("", [], false) if not foundDollar then failwith "bad unit test: did not find '$' in input to mark cursor location!" idx, lines member public this.TestParameterInfoNegative (testLine, ?addtlRefAssy : list) = let cursorPrefix, testLines = this.ExtractLineInfo testLine let code = [ "#light" "open System" "open System.Threading" "open System.Collections.Generic"; ""] @ testLines let (_, _, file) = this.CreateSingleFileProject(code, ?references = addtlRefAssy) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, cursorPrefix) let info = GetParameterInfoAtCursor file AssertEqual(null, info) gpatcc.AssertExactly(0,0) member public this.TestParameterInfoLocation (testLine, expectedPos, ?addtlRefAssy : list) = let cursorPrefix, testLines = this.ExtractLineInfo testLine let code = [ "#light" "open System" "open System.Threading" "open System.Collections.Generic"; ""] @ testLines let (_, _, file) = this.CreateSingleFileProject(code, ?references = addtlRefAssy) MoveCursorToEndOfMarker(file, cursorPrefix) let info = GetParameterInfoAtCursor file AssertEqual(expectedPos, info.GetColumnOfStartOfLongId()) // Tests the current behavior, we may want to specify it differently in the future // There are more comments below that explain particular tricky cases [] member public this.``Single.Locations.Simple``() = this.TestParameterInfoLocation("let a = System.Math.Sin($", 8) [] member public this.``Single.Locations.LineWithSpaces``() = this.TestParameterInfoLocation("let r =\n"+ " System.Math.Abs($0)", 3) // on the beginning of "System", not line! [] member public this.``Single.Locations.FullCall``() = this.TestParameterInfoLocation("System.Math.Abs($0)", 0) [] member public this.``Single.Locations.SpacesAfterParen``() = this.TestParameterInfoLocation("let a = Math.Sign( $-10 )", 8) [] member public this.``Single.Locations.WithNamespace``() = this.TestParameterInfoLocation("let a = System.Threading.Interlocked.Exchange($", 8) [] member public this.``ParameterInfo.Locations.WithoutNamespace``() = this.TestParameterInfoLocation("let a = Interlocked.Exchange($", 8) [] member public this.``Single.Locations.WithGenericArgs``() = this.TestParameterInfoLocation("Interlocked.Exchange($", 0) [] member public this.``Single.Locations.FunctionWithSpace``() = this.TestParameterInfoLocation("let a = sin 0$.0", 8) [] member public this.``Single.Locations.MethodCallWithoutParens``() = this.TestParameterInfoLocation("let n = Math.Sin 1$0.0", 8) [] member public this.``Single.Locations.GenericCtorWithNamespace``() = this.TestParameterInfoLocation("let _ = new System.Collections.Generic.Dictionary<_, _>($)", 12) // on the beginning of "System" (not on "new") [] member public this.``Single.Locations.GenericCtor``() = this.TestParameterInfoLocation("let _ = new Dictionary<_, _>($)", 12) // on the beginning of "System" (not on "new") [] [] [] //This test verifies that ParamInfo location on a provided type with namespace that exposes static parameter that takes >1 argument works normally. member public this.``TypeProvider.Type.ParameterInfoLocation.WithNamespace`` () = this.TestParameterInfoLocation("type boo = N1.T<$",11, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that ParamInfo location on a provided type without the namespace that exposes static parameter that takes >1 argument works normally. member public this.``TypeProvider.Type.ParameterInfoLocation.WithOutNamespace`` () = this.TestParameterInfoLocation("open N1 \n"+ "type boo = T<$", expectedPos = 11, addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that no ParamInfo in a string for a provided type that exposes static parameter that takes >1 argument works normally. //The intent here to make sure the ParamInfo is not shown when inside a string member public this.``TypeProvider.Type.Negative.InString`` () = this.TestParameterInfoNegative("type boo = \"N1.T<$\"", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test verifies that no ParamInfo in a Comment for a provided type that exposes static parameter that takes >1 argument works normally. //The intent here to make sure the ParamInfo is not shown when inside a comment member public this.``TypeProvider.Type.Negative.InComment`` () = this.TestParameterInfoNegative("// type boo = N1.T<$", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) // Following are tricky: // if we can't find end of the identifier on the current line, // we *must* look at the previous line to find the location where NameRes info ends // so in these cases we can find the identifier and location of tooltip is beginning of it // (but in general, we don't search for it) [] member public this.``Single.Locations.Multiline.IdentOnPrevLineWithGenerics``() = this.TestParameterInfoLocation("let d = Dictionary<_, option< int >> \n" + " ( $ )", 8) // on the "D" (line untestable) [] member public this.``Single.Locations.Multiline.IdentOnPrevLine``() = this.TestParameterInfoLocation("do Console.WriteLine\n" + " ($\"Multiline\")", 3) [] member public this.``Single.Locations.Multiline.IdentOnPrevPrevLine``() = this.TestParameterInfoLocation("do Console.WriteLine\n" + " ( \n" + " $ \"Multiline\")", 3) [] member public this.``Single.Locations.GenericCtorWithoutNew``() = this.TestParameterInfoLocation("let d = System.Collections.Generic.Dictionary<_, option< int >> ( $ )", 8) // on "S" - standard [] member public this.``Single.Locations.Multiline.GenericTyargsOnTheSameLine``() = this.TestParameterInfoLocation("let dict3 = System.Collections.Generic.Dictionary<_, \n" + " option< int>>( $ )", 12) // on "S" (beginning of "System") [] member public this.``Single.Locations.Multiline.LongIdentSplit``() = this.TestParameterInfoLocation("let ll = new System.Collections.\n" + " Generic.List< _ > ($)", 13) // on "S" (beginning of "System") [] member public this.``Single.Locations.OperatorTrick3``() = this.TestParameterInfoLocation ("let mutable n = null\n" + "let aaa = Interlocked.Exchange(&n$, new obj())", 10) // "I" of Interlocked // A several cases that are tricky and we don't want to show anything // in the following cases, we may return a location of an operator (its ambigous), but we don't want to show info about it! [] member public this.``Single.Negative.OperatorTrick1``() = this.TestParameterInfoNegative ("let fooo = 0\n" + " >($ 1 )") // this may be end of a generic args specification [] member public this.``Single.Negative.OperatorTrick2``() = this.TestParameterInfoNegative ("let fooo = 0\n" + " <($ 1 )") /// No intellisense in comments/strings! [] member public this.``Single.InString``() = this.TestParameterInfoNegative ("let s = \"System.Console.WriteLine($)\"") /// No intellisense in comments/strings! [] member public this.``Single.InComment``() = this.TestParameterInfoNegative ("// System.Console.WriteLine($)") [] member this.``Regression.LocationOfParams.AfterQuicklyTyping.Bug91373``() = let code = [ "let f x = x " "let f1 y = y " "let z = f( " ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "f1(" and then see what parameter info would pop up. // This simulates the case when the user quickly types after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ( [ "let f x = x " "let f1 y = y " "let z = f(f1( " ] ) MoveCursorToEndOfMarker(file, "f1(") // Note: no TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual(null, info) let info = GetParameterInfoAtCursor file // this will fall back to using the name environment, which is stale, but sufficient to look up the call to 'f1' AssertEqual("f1", info.GetName(0)) // note about (6,1): for silly implementation reasons, we always report location of 'end of file' as first the char, 3 lines past the last line of the file AssertEqual([|(3,11);(3,13);(3,13);(6,1)|], info.GetNoteworthyParamInfoLocations()) // after typechecking catches up, then even NoFallback should find it TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual("f1", info.GetName(0)) AssertEqual([|(3,11);(3,13);(3,13);(6,1)|], info.GetNoteworthyParamInfoLocations()) gpatcc.AssertExactly(0,0) [] member this.``LocationOfParams.AfterQuicklyTyping.CallConstructor``() = let code = [ "type Foo() = class end" ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "new Foo(" and then see what parameter info would pop up. // This simulates the case when the user quickly types after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ( [ "type Foo() = class end" "let foo = new Foo( " ] ) MoveCursorToEndOfMarker(file, "new Foo(") // Note: no TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual(null, info) let info = GetParameterInfoAtCursor file // this will fall back to using the name environment, which is stale, but sufficient to look up the call to 'f1' AssertEqual("Foo", info.GetName(0)) // note about (5,1): for silly implementation reasons, we always report location of 'end of file' as first the char, 3 lines past the last line of the file AssertEqual([|(2,15);(2,18);(2,18);(5,1)|], info.GetNoteworthyParamInfoLocations()) // after typechecking catches up, then even NoFallback should find it TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual("Foo", info.GetName(0)) AssertEqual([|(2,15);(2,18);(2,18);(5,1)|], info.GetNoteworthyParamInfoLocations()) gpatcc.AssertExactly(0,0) (* This does not currently work, because the 'fallback to name environment' does weird QuickParse-ing and mangled the long id "Bar.Foo". We really need to rewrite some code paths here to use the real parse tree rather than QuickParse-ing. [] member this.``ParameterInfo.LocationOfParams.AfterQuicklyTyping.CallConstructorViaLongId.Bug94333``() = let solution = CreateSolution(this.VS) let project = CreateProject(solution,"testproject") let code = [ "module Bar = type Foo() = class end" ] let file = AddFileFromText(project,"File1.fs", code) let file = OpenFile(project,"File1.fs") TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "new Foo(" and then see what parameter info would pop up. // This simulates the case when the user quickly types after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ( [ "module Bar = type Foo() = class end" "let foo = new Bar.Foo( " ] ) MoveCursorToEndOfMarker(file, "new Bar.Foo(") // Note: no TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual(null, info) let info = GetParameterInfoAtCursor file // this will fall back to using the name environment, which is stale, but sufficient to look up the call to 'f1' AssertEqual("Foo", info.GetName(0)) // note about (5,1): for silly implementation reasons, we always report location of 'end of file' as first the char, 3 lines past the last line of the file AssertEqual([|(2,15);(2,22);(2,22);(5,1)|], info.GetNoteworthyParamInfoLocations()) // after typechecking catches up, then even NoFallback should find it TakeCoffeeBreak(this.VS) let info = GetParameterInfoAtCursorNoFallback file // the 'NoFallback' version will not use the name environment, only captured name resolutions at specific locations AssertEqual("Foo", info.GetName(0)) AssertEqual([|(2,15);(2,22);(2,22);(5,1)|], info.GetNoteworthyParamInfoLocations()) gpatcc.AssertExactly(0,0) *) [] member public this.``ParameterInfo.NamesOfParams``() = let testLines = [ "type Foo =" " static member F(a:int, b:bool, c:int, d:int, ?e:int) = ()" "let a = 42" "Foo.F(0,(a=42),d=3,?e=Some 4,c=2)" "// names are _,_,d,e,c" ] let (_, _, file) = this.CreateSingleFileProject(testLines) MoveCursorToStartOfMarker(file, "0") let info = GetParameterInfoAtCursor file let names = info.GetParameterNames() AssertEqual([| null; null; "d"; "e"; "c" |], names) // $ is the location of the cursor/caret // ^ marks all of these expected points: // - start of the long id that is the method call containing the caret // - end of the long id that is the method call containing the caret // - open paren of the method call (or first char of arg expression if no open paren) // - for every param, end of expr that is the param (or closeparen if no params (unit)) member public this.TestParameterInfoLocationOfParams (testLine, ?markAtEOF, ?additionalReferenceAssemblies) = let cursorPrefix, testLines = this.ExtractLineInfo testLine let testLinesAndLocs = testLines |> List.mapi (fun i s -> let r = new System.Text.StringBuilder(s) let locs = [while r.ToString().IndexOf('^') <> -1 do let c = r.ToString().IndexOf('^') r.Remove(c,1) |> ignore yield (i+1,c+1)] r.ToString(), locs) let testLines = testLinesAndLocs |> List.map fst let expectedLocs = testLinesAndLocs |> List.map snd |> List.collect id |> List.toArray // note: for silly implementation reasons, we always report location of 'end of file' as first the char, 3 lines past the last line of the file let expectedLocs = if defaultArg markAtEOF false then Array.append expectedLocs [| testLines.Length+3, 1 |] else expectedLocs let cursorPrefix = cursorPrefix.Replace("^","") let references = "System.Core"::(defaultArg additionalReferenceAssemblies []) let (_, _, file) = this.CreateSingleFileProject(testLines, references = references) MoveCursorToEndOfMarker(file, cursorPrefix) let info = GetParameterInfoAtCursor file if info=null then raise NoParamInfo AssertEqual(expectedLocs, info.GetNoteworthyParamInfoLocations()) [] member public this.``LocationOfParams.Case1``() = this.TestParameterInfoLocationOfParams("""^System.Console.WriteLine^^("hel$lo"^)""") [] member public this.``LocationOfParams.Case2``() = this.TestParameterInfoLocationOfParams("""^System.Console.WriteLine^ ^( "hel$lo {0}" ^, "Brian" ^)""") [] member public this.``LocationOfParams.Case3``() = this.TestParameterInfoLocationOfParams( """^System.Console.WriteLine^ ^( "hel$lo {0}" ^, "Brian" ^) """) [] member public this.``LocationOfParams.Case4``() = this.TestParameterInfoLocationOfParams("""^System.Console.WriteLine^ ^( "hello {0}" ^, ("tuples","don't $ confuse it") ^)""") [] member public this.``ParameterInfo.LocationOfParams.Bug112688``() = let testLines = [ "let f x y = ()" "module MailboxProcessorBasicTests =" " do f 0" " 0" " let zz = 42" " for timeout in [0; 10] do" " ()" ] let (_,_, file) = this.CreateSingleFileProject(testLines) MoveCursorToStartOfMarker(file, "let zz") // in the bug, this caused an assert to fire let info = GetParameterInfoAtCursor file () [] member public this.``ParameterInfo.LocationOfParams.Bug112340``() = let testLines = [ """let a = typeof] member public this.``Regression.LocationOfParams.Bug91479``() = this.TestParameterInfoLocationOfParams("""let z = fun x -> x + ^System.Int16.Parse^^($ """, markAtEOF=true) [] member public this.``LocationOfParams.Attributes.Bug230393``() = this.TestParameterInfoLocationOfParams(""" let paramTest((strA : string),(strB : string)) = strA + strB ^paramTest^^( $ [<^Measure>] type RMB """) [] member public this.``LocationOfParams.InfixOperators.Case1``() = // infix operators like '+' do not give their own param info this.TestParameterInfoLocationOfParams("""^System.Console.WriteLine^^("" + "$"^)""") [] member public this.``LocationOfParams.InfixOperators.Case2``() = // infix operators like '+' do give param info when used as prefix ops this.TestParameterInfoLocationOfParams("""System.Console.WriteLine((^+^)^($3^)(4))""") [] member public this.``LocationOfParams.GenericMethodExplicitTypeArgs()``() = this.TestParameterInfoLocationOfParams(""" type T<'a> = static member M(x:int, y:string) = x + y.Length let x = ^T.M^^(1^, $"test"^) """) [] member public this.``LocationOfParams.InsideAMemberOfAType``() = this.TestParameterInfoLocationOfParams(""" type Widget(z) = member x.a = (1 <> ^System.Int32.Parse^^("$"^)) """) [] member public this.``LocationOfParams.InsidePropertyGettersAndSetters.Case1``() = this.TestParameterInfoLocationOfParams(""" type Widget(z) = member x.P1 with get() = ^System.Int32.Parse^^("$"^) and set(z) = System.Int32.Parse("") |> ignore member x.P2 with get() = System.Int32.Parse("") member x.P2 with set(z) = System.Int32.Parse("") |> ignore """) [] member public this.``LocationOfParams.InsidePropertyGettersAndSetters.Case2``() = this.TestParameterInfoLocationOfParams(""" type Widget(z) = member x.P1 with get() = System.Int32.Parse("") and set(z) = ^System.Int32.Parse^^("$"^) |> ignore member x.P2 with get() = System.Int32.Parse("") member x.P2 with set(z) = System.Int32.Parse("") |> ignore """) [] member public this.``LocationOfParams.InsidePropertyGettersAndSetters.Case3``() = this.TestParameterInfoLocationOfParams(""" type Widget(z) = member x.P1 with get() = System.Int32.Parse("") and set(z) = System.Int32.Parse("") |> ignore member x.P2 with get() = ^System.Int32.Parse^^("$"^) member x.P2 with set(z) = System.Int32.Parse("") |> ignore """) [] member public this.``LocationOfParams.InsidePropertyGettersAndSetters.Case4``() = this.TestParameterInfoLocationOfParams(""" type Widget(z) = member x.P1 with get() = System.Int32.Parse("") and set(z) = System.Int32.Parse("") |> ignore member x.P2 with get() = System.Int32.Parse("") member x.P2 with set(z) = ^System.Int32.Parse^^("$"^) |> ignore """) [] member public this.``LocationOfParams.InsideObjectExpression``() = this.TestParameterInfoLocationOfParams(""" let _ = { new ^System.Object^^($^) with member __.GetHashCode() = 2}""") [] member public this.``LocationOfParams.Nested1``() = this.TestParameterInfoLocationOfParams("""System.Console.WriteLine("hello {0}" , ^sin^ ^(4$2.0 ^) )""") [] member public this.``LocationOfParams.MatchGuard``() = this.TestParameterInfoLocationOfParams("""match [1] with | [x] when ^box^^($x^) <> null -> ()""") [] member public this.``LocationOfParams.Nested2``() = this.TestParameterInfoLocationOfParams("""System.Console.WriteLine("hello {0}" , ^sin^ ^4$2.0^ )""") [] member public this.``LocationOfParams.Generics1``() = this.TestParameterInfoLocationOfParams(""" let f<'T,'U>(x:'T, y:'U) = (y,x) let r = ^f^^(4$2^,""^)""") [] member public this.``LocationOfParams.Generics2``() = this.TestParameterInfoLocationOfParams("""let x = ^System.Collections.Generic.Dictionary^^(42^,n$ull^)""") [] member public this.``LocationOfParams.Unions1``() = this.TestParameterInfoLocationOfParams(""" type MyDU = | FOO of int * string let r = ^FOO^^(42^,"$"^) """) [] member public this.``LocationOfParams.EvenWhenOverloadResolutionFails.Case1``() = this.TestParameterInfoLocationOfParams("""let a = new ^System.IO.FileStream^^($^)""") [] member public this.``LocationOfParams.EvenWhenOverloadResolutionFails.Case2``() = this.TestParameterInfoLocationOfParams(""" open System.Collections.Generic open System.Linq let l = List([||]) ^l.Aggregate^^($^) // was once a bug""") [] member public this.``LocationOfParams.BY_DESIGN.WayThatMismatchedParensFailOver.Case1``() = // when only one 'statement' after the mismatched parens after a comma, the comma swallows it and it becomes a badly-indented // continuation of the expression from the previous line this.TestParameterInfoLocationOfParams(""" type CC() = member this.M(a,b,c,d) = a+b+c+d let c = new CC() ^c.M^^(1^,2^,3^, $ c.M(1,2,3,4)""", markAtEOF=true) [] member public this.``LocationOfParams.BY_DESIGN.WayThatMismatchedParensFailOver.Case2``() = // when multiple 'statements' after the mismatched parens after a comma, the parser sees a single argument to the method that // is a statement sequence, e.g. a bunch of discarded expressions. That is, // c.M(1,2,3, // c.M(1,2,3,4) // c.M(1,2,3,4) // c.M(1,2,3,4) // is like // c.M(let r = 1,2,3, // c.M(1,2,3,4) // c.M(1,2,3,4) // c.M(1,2,3,4) // in r) this.TestParameterInfoLocationOfParams(""" type CC() = member this.M(a,b,c,d) = a+b+c+d let c = new CC() ^c.M^^(1,2,3, $ c.M(1,2,3,4) c.M(1,2,3,4) c.M(1,2,3,4)""", markAtEOF=true) [] member public this.``LocationOfParams.Tuples.Bug91360.Case1``() = this.TestParameterInfoLocationOfParams(""" ^System.Console.WriteLine^^( (4$2,43) ^) // oops""") [] member public this.``LocationOfParams.Tuples.Bug91360.Case2``() = this.TestParameterInfoLocationOfParams(""" ^System.Console.WriteLine^^( $(42,43) ^) // oops""") [] member public this.``LocationOfParams.Tuples.Bug123219``() = this.TestParameterInfoLocationOfParams(""" type Expr = | Num of int type T<'a>() = member this.M1(a:int*string, b:'a -> unit) = () let x = new T() ^x.M1^^((1,$ """, markAtEOF=true) [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.OtherCases.Open``() = this.TestParameterInfoLocationOfParams(""" let arr = Array.create 4 1 arr.[1] <- ^System.Int32.Parse^^($ open^ System""") [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.OtherCases.Module``() = this.TestParameterInfoLocationOfParams(""" let arr = Array.create 4 1 arr.[1] <- ^System.Int32.Parse^^($ ^module Foo = let x = 42""") [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.OtherCases.Namespace``() = this.TestParameterInfoLocationOfParams(""" namespace Foo module Bar = let arr = Array.create 4 1 arr.[1] <- ^System.Int32.Parse^^($ namespace^ Other""") [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.Ok``() = this.TestParameterInfoLocationOfParams(""" let arr = Array.create 4 1 arr.[1] <- ^System.Int32.Parse^^($ let squares3 = () ^type Expr = class end let rec Evaluate (env:Map) exp = ()""") [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.AlsoOk``() = this.TestParameterInfoLocationOfParams(""" let arr = Array.create 4 1 arr.[1] <- System.Int32.Parse(int(int(int(^int^^($ let squares3 = () ^type Expr = class end let rec Evaluate (env:Map) exp = ()""") [] member public this.``LocationOfParams.UnmatchedParens.Bug91609.NowGood``() = // This case originally failed, by Design, as there is a finite limit to how many unmatched parens we can handle before the parser gives up and fails catastrophically. // However now that we recover from more kinds of tokens, e.g. OBLOCKEND, we can easily go much much deeper, and so this case (and most practical cases) now succeeds. this.TestParameterInfoLocationOfParams(""" let arr = Array.create 4 1 arr.[1] <- System.Int32.Parse(int(int(int(int(int(int(^int^^($ let squares3 = () ^type Expr = class end let rec Evaluate (env:Map) exp = ()""") [] member public this.``LocationOfParams.UnmatchedParens.Bug150492.Case1``() = this.TestParameterInfoLocationOfParams(""" module Inner = ^System.Console.Write^^($ let y = 4 ^type Foo() = inherit obj() [] do () """) [] member public this.``LocationOfParams.UnmatchedParens.Bug150492.Case2``() = // like previous test, but with explicit begin-end at module this.TestParameterInfoLocationOfParams(""" module Inner = begin ^System.Console.Write^^($ let y = 4 ^end type Foo() = inherit obj() [] do () """) [] member public this.``LocationOfParams.UnmatchedParens.Bug150492.Case1.WhenExtraModule``() = this.TestParameterInfoLocationOfParams(""" module Program let xxx = 42 type FooBar() = class end module Inner = ^System.Console.Write^^($ let y = 4 ^type Foo() = inherit obj() [] do () """) [] member public this.``LocationOfParams.UnmatchedParens.Bug150492.Case2.OkWhenExtraModule``() = // like previous test, but with explicit begin-end at module this.TestParameterInfoLocationOfParams(""" module Program let xxx = 42 type FooBar() = class end module Inner = begin ^System.Console.Write^^($ let y = 4 ^end type Foo() = inherit obj() [] do () """) [] member this.``LocationOfParams.InheritsClause.Bug192134``() = this.TestParameterInfoLocationOfParams(""" type B(x : int) = new(x1:int, x2: int) = new B(10) type A() = inherit ^B^^(1$^,2^)""") [] member public this.``LocationOfParams.ThisOnceAsserted``() = try this.TestParameterInfoLocationOfParams(""" module CSVTypeProvider f(fun x -> match args with | [| y |] -> for name, kind in (headerNames, rowType.AddMember(new ^ProvidedProperty^^($ null | _ -> failwith "unexpected generic params" ) let rec emitRegKeyNamedType (container:TypeContainer) (typeName:string) (key:RegistryKey) = let keyType = 0 keyType match types |> Array.tryFind (fun ty -> ty.Name = typeName^) with _ -> ()""") with | NoParamInfo -> () // expect there not to be any param info because parser failed [] member public this.``LocationOfParams.ThisOnceAssertedToo``() = try this.TestParameterInfoLocationOfParams(""" let readString() = let x = 42 while ('"' = '""' then () else let sb = new System.Text.StringBuilder() while true do ($) """) with | NoParamInfo -> () // expect there not to be any param info because parser failed [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case1a``() = this.TestParameterInfoLocationOfParams(""" module Repro = for a in ^System.Int16.TryParse^^($ ^module AA = let x = 10 """) [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case1b``() = this.TestParameterInfoLocationOfParams(""" module Repro = for a in ^System.Int16.TryParse^^("4$2" ^module AA = let x = 10 """) [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case1c``() = this.TestParameterInfoLocationOfParams(""" module Repro = for a in ^System.Int16.TryParse^^("4$2"^, ^module AA = let x = 10 """) [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case2a``() = this.TestParameterInfoLocationOfParams(""" module Repro = query { for a in ^System.Int16.TryParse^^($ ^module AA = let x = 10 """) [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case2b``() = this.TestParameterInfoLocationOfParams(""" module Repro = query { for a in ^System.Int16.TryParse^^("4$2" ^module AA = let x = 10 """) [] member public this.``LocationOfParams.UnmatchedParensBeforeModuleKeyword.Bug245850.Case2c``() = this.TestParameterInfoLocationOfParams(""" module Repro = query { for a in ^System.Int16.TryParse^^("4$2"^, ^module AA = let x = 10 """) [] member public this.``LocationOfParams.QueryCustomOperation.Bug222128``() = this.TestParameterInfoLocationOfParams(""" type T() = member x.GetCollection() = [1;2;3;4] let q2 = query { for e in T().GetCollection() do where (e > 250) ^skip^^($ ^} """) [] member public this.``LocationOfParams.QueryCurlies.Bug204150.Case1``() = this.TestParameterInfoLocationOfParams(""" type T() = member x.GetCollection() = [1;2;3;4] open System.Linq let q6 = query { for E in ^T().GetCollection().Aggregate^^($ ^} """) [] member public this.``LocationOfParams.QueryCurlies.Bug204150.Case2``() = this.TestParameterInfoLocationOfParams(""" type T() = member x.GetCollection() = [1;2;3;4] open System.Linq let q6 = query { for E in ^T().GetCollection().Aggregate^^(42$ ^} """) [] member public this.``LocationOfParams.QueryCurlies.Bug204150.Case3``() = this.TestParameterInfoLocationOfParams(""" type T() = member x.GetCollection() = [1;2;3;4] open System.Linq let q6 = query { for E in ^T().GetCollection().Aggregate^^(42^,$ ^} """) [] member public this.``LocationOfParams.QueryCurlies.Bug204150.Case4``() = this.TestParameterInfoLocationOfParams(""" type T() = member x.GetCollection() = [1;2;3;4] open System.Linq let q6 = query { for E in ^T().GetCollection().Aggregate^^(42^, 43$ ^} """) (* Tests for type provider static argument parameterinfos ------------------------------------------ *) member public this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts (testLine:string, ?markAtEnd, ?additionalReferenceAssemblies) = let numSpacesOfIndent = let lines = testLine.Split[|'\n'|] let firstLineWithText = lines |> Array.find (fun s -> s |> Seq.exists (fun c -> not(Char.IsWhiteSpace c))) firstLineWithText |> Seq.findIndex (fun c -> not(Char.IsWhiteSpace c)) let indent = String.replicate numSpacesOfIndent " " let contexts = [ false, "" true, "namespace Foo" false, "module Program" ] let prefixes = [ true, "" false, "let x = 42" false, "let f x = 42" true, "type MyClass() = class end" ] let suffixes = [ true, "" false, "let x = 42" false, "let f x = 42" true, "type MyClass2() = class end" true, "module M = begin end" //true, "namespace Bar" // TODO only legal to test this if already in a namespace ] for isNamespace, startText in contexts do for p in prefixes |> List.filter (fun (okInNS,_) -> if isNamespace then okInNS else true) |> List.map snd do for s in suffixes |> List.filter (fun (okInNS,_) -> if isNamespace then okInNS else true) |> List.map snd do ( let needMarkAtEnd = defaultArg markAtEnd false let s, needMarkAtEnd = if needMarkAtEnd && s<>"" then "^"+s, false else s, needMarkAtEnd let allText = indent + startText + Environment.NewLine + indent + p + Environment.NewLine + testLine + Environment.NewLine + indent + s printfn "-----------------" printfn "%s" allText this.TestParameterInfoLocationOfParams (allText, markAtEOF=needMarkAtEnd, ?additionalReferenceAssemblies=additionalReferenceAssemblies) ) [] member public this.``LocationOfParams.TypeProviders.Basic``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, 42 ^>""", additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.BasicNamed``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, ParamIgnored=42 ^>""", additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix0``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< $ """, // missing all params, just have < markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix1``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, 42 """, // missing > markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix1Named``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, ParamIgnored=42 """, // missing > markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix2``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, """, // missing last param markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix2Named1``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, ParamIgnored= """, // missing last param after name with equals markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Prefix2Named2``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, ParamIgnored """, // missing last param after name sans equals markAtEnd = true, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Negative1``() = try this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type D = ^System.Collections.Generic.Dictionary^^< in$t, int ^>""") failwith "unexpected param info for generic type" with | :? NoParamInfo -> () [] member public this.``LocationOfParams.TypeProviders.Negative2``() = try this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type D = ^System.Collections.Generic.List^^< in$t ^>""") failwith "unexpected param info for generic type" with | :? NoParamInfo -> () [] member public this.``LocationOfParams.TypeProviders.Negative3``() = try this.TestParameterInfoLocationOfParams(""" let i = 42 let b = ^i^^< 4$2""") failwith "unexpected param info for generic type" with | :? NoParamInfo -> () [] member public this.``LocationOfParams.TypeProviders.Negative4.Bug181000``() = try this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "foo"^, 42 ^>$ """, // when the caret is right of the '>', we should not report any param info additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) failwith "unexpected param info for generic type" with | :? NoParamInfo -> () [] member public this.``LocationOfParams.TypeProviders.BasicWithinExpr``() = this.TestParameterInfoLocationOfParams(""" let f() = let r = id( ^N1.T^^< "fo$o"^, ParamIgnored=42 ^> ) r """, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.BasicWithinExpr.DoesNotInterfereWithOuterFunction``() = this.TestParameterInfoLocationOfParams(""" let f() = let r = ^id^^( N1.$T< "foo", ParamIgnored=42 > ^) r """, additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Bug199744.ExcessCommasShouldNotAssertAndShouldGiveInfo.Case1``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, 42^, ^, ^>""", additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Bug199744.ExcessCommasShouldNotAssertAndShouldGiveInfo.Case2``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< "fo$o"^, ^, ^>""", additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``LocationOfParams.TypeProviders.Bug199744.ExcessCommasShouldNotAssertAndShouldGiveInfo.Case3``() = this.TestParameterInfoLocationOfParamsWithVariousSurroundingContexts(""" type U = ^N1.T^^< ^,$ ^>""", additionalReferenceAssemblies = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``TypeProvider.FormatOfNamesOfSystemTypes``() = let code = ["""type TTT = N1.T< "foo", ParamIgnored=42 > """] let references = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] let (_, _, file) = this.CreateSingleFileProject(code, references = references) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file,"foo") let methodGroup = GetParameterInfoAtCursor file let actualDisplays = [ for i = 0 to methodGroup.GetCount() - 1 do yield [ for j = 0 to methodGroup.GetParameterCount(i) - 1 do let (name,display,description) = methodGroup.GetParameterInfo(i,j) yield display ] ] let expected = [["Param1: string"; "ParamIgnored: int"]] // key here is we want e.g. "int" and not "System.Int32" AssertEqual(expected, actualDisplays) gpatcc.AssertExactly(0,0) [] member public this.``ParameterNamesInFunctionsDefinedByLetBindings``() = let useCases = [ """ let foo (n1 : int) (n2 : int) = n1 + n2 foo( """, "foo(", ["n1: int"] """ let foo (n1 : int, n2 : int) = n1 + n2 foo( """, "foo(", ["n1: int"; "n2: int"] """ let foo (n1 : int, n2 : int) = n1 + n2 foo(2, """, "foo(2,", ["n1: int"; "n2: int"] (* Negative tests - display only types*) """ let foo = List.map foo( """, "foo(", ["'a -> 'b"] """ let foo x = let bar y = x + y bar( """, "bar(", ["int"] """ type T() = let foo x = x + 1 member this.Run() = foo( """, "foo(", ["int"] """ let f (Some x) = x + 1 f( """, "f(", ["int option"] ] for (code, marker, expectedParams) in useCases do let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, marker) let methodGroup = GetParameterInfoAtCursor file Assert.AreEqual(1, methodGroup.GetCount(), "Only one function expected") let expectedParamsCount = List.length expectedParams Assert.AreEqual(expectedParamsCount, methodGroup.GetParameterCount(0), sprintf "%d parameters expected" expectedParamsCount) let actualParams = [ for i = 0 to (expectedParamsCount - 1) do yield methodGroup.GetParameterInfo(0, i) ] let ok = actualParams |> List.map (fun (_, d, _) -> d) |> List.forall2 (=) expectedParams if not ok then printfn "==Parameters dont't match==" printfn "Expected parameters %A" expectedParams printfn "Actual parameters %A" actualParams Assert.Fail() (* Tests for multi-parameterinfos ------------------------------------------------------------------ *) [] member public this.``ParameterInfo.ArgumentsWithParamsArrayAttribute``() = let content = """let _ = System.String.Format("",(*MARK*))""" let methodTip = this.GetMethodListForAMethodTip(content, "(*MARK*)") let overloadWithTwoParamsOpt = Seq.init (methodTip.GetCount()) (fun i -> let count = methodTip.GetParameterCount(i) let paramInfos = [ for c = 0 to (count - 1) do let name = ref "" let display = ref "" let description = ref "" methodTip.GetParameterInfo(i, c, name, display, description) yield !name, !display,!description ] count, paramInfos ) |> Seq.tryFind(fun (i, _) -> i = 2) match overloadWithTwoParamsOpt with | Some(_, [_;(_name, display, _description)]) -> Assert.IsTrue(display.Contains("params args")) | x -> Assert.Fail(sprintf "Expected overload not found, current result %A" x) (* DotNet functions for multi-parameterinfo tests -------------------------------------------------- *) [] member public this.``Multi.DotNet.StaticMethod``() = let fileContents = """System.Console.WriteLine("Today is {0:dd MMM yyyy}",(*Mark*)System.DateTime.Today)""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"obj"]) [] member public this.``Multi.DotNet.StaticMethod.WithinClassMember``() = let fileContents = """ type Widget(z) = member x.a = (1 <> System.Int32.Parse("",(*Mark*) let widget = Widget(1) 45""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"System.Globalization.NumberStyles"]) [] member public this.``Multi.DotNet.StaticMethod.WithinLambda``() = let fileContents = """let z = fun x -> x + System.Int16.Parse("",(*Mark*)""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"System.Globalization.NumberStyles"]) [] member public this.``Multi.DotNet.StaticMethod.WithinLambda2``() = let fileContents = "let _ = fun file -> new System.IO.FileInfo((*Mark*)" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["string"]]) [] member public this.``Multi.DotNet.InstanceMethod``() = let fileContents = """ let s = "Hello" s.Substring(0,(*Mark*)""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["int";"int"]) (* Common functions for multi-parameterinfo tests -------------------------------------------------- *) [] member public this.``Multi.DotNet.Constructor``() = let fileContents = "let _ = new System.DateTime(2010,12,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["int";"int";"int"]) [] member public this.``Multi.Constructor.WithinObjectExpression``() = let fileContents = "let _ = { new System.Object((*Mark*)) with member __.GetHashCode() = 2}" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",[]) [] member public this.``Multi.Function.InTheClassMember``() = let fileContents = """ type Foo() = let foo1(a : int, b:int) = () member this.A() = foo1(1,(*Mark*) member this.A(a : string, b:int) = ()""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"int"]]) [] member public this.``Multi.ParamAsTupleType``() = let fileContents = """ let tuple((a : int, b : int), c : int) = a * b + c let result = tuple((1, 2)(*Mark*), 3)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int * int";"int"]]) [] member public this.``Multi.ParamAsCurryType``() = let fileContents = """ let multi (x : float) (y : float) = 0 let sum(a, b) = a + b let rtnValue = sum(multi (1.0(*Mark*)) 3.0, 5)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["float"]]) [] member public this.``Multi.MethodInMatchCause``() = let fileContents = """ let rec f l = match l with | [] -> System.String.Format("{0:X2}",(*Mark*) | x :: xs -> f xs""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"obj"]) [] [] member public this.``Regression.Multi.IndexerProperty.Bug93945``() = let fileContents = """ type Year2(year : int) = member this.Item (month : int, day : int) = let monthIdx = match month with | _ when month > 12 -> failwithf "Invalid month [%d]" month | _ when month < 1 -> failwithf "Invalid month [%d]" month | _ -> month let dateStr = sprintf "1-1-%d" year DateTime.Parse(dateStr).AddMonths(monthIdx - 1).AddDays(float (day - 1)) let O'seven = new Year2(2007) let randomDay = O'seven.[12,(*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"int"]]) [] [] member public this.``Regression.Multi.ExplicitAnnotate.Bug93188``() = let fileContents = """ type LiveAnimalAttribute(a : int, b: string) = inherit System.Attribute() [] type Wombat() = class end""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"string"]]) [] member public this.``Multi.Function.WithRecordType``() = let fileContents = """ type Vector = { X : float; Y : float; Z : float } let foo(x : int,v : Vector) = () foo(12, { X = 10.0; Y = (*Mark*)20.0; Z = 30.0 })""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"Vector"]]) [] member public this.``Multi.Function.AsParameter``() = let fileContents = """ let isLessThanZero x = (x < 0) let containsNegativeNumbers intList = let filteredList = List.filter isLessThanZero intList if List.length filteredList > 0 then Some(filteredList) else None let _ = Option.get(containsNegativeNumbers [6; 20; (*Mark*)8; 45; 5])""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int list"]]) [] member public this.``Multi.Function.WithOptionType``() = let fileContents = """ let foo( a : int option, b : string ref) = 0 let _ = foo(Some(12),(*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int option";"string ref"]]) [] member public this.``Multi.Function.WithOptionType2``() = let fileContents = """ let multi (x : float) (y : float) = x * y let sum(a : int, b) = a + b let options(a1 : int option, b1 : float option) = a1.ToString() + b1.ToString() let rtnOption = options(Some(sum(1, 3)), (*Mark*)Some(multi 3.1 5.0)) """ this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int option";"float option"]]) [] member public this.``Multi.Function.WithRefType``() = let fileContents = """ let foo( a : int ref, b : string ref) = 0 let _ = foo(ref 12,(*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int ref";"string ref"]]) (* Overload list/Adjust method's param for multi-parameterinfo tests ------------------------------ *) [] member public this.``Multi.OverloadMethod.OrderedParamters``() = let fileContents = "new System.DateTime(2000,12,(*Mark*)" this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",3(*The fourth method*),["int";"int";"int"]) [] member public this.``Multi.Overload.WithSameParameterCount``() = let fileContents = """ type Foo() = member this.A1(x1 : int, x2 : int, ?y : string, ?Z: bool) = () member this.A1(x1 : int, X2 : string, ?y : int, ?Z: bool) = () let foo = new Foo() foo.A1(1,1,(*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"int";"string";"bool"];["int";"string";"int";"bool"]]) (* Generic functions for multi-parameterinfo tests ------------------------------------------------ *) [] member public this.``Multi.Generic.ExchangeInt``() = let fileContents = "System.Threading.Interlocked.Exchange(123,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["byref";"int"]) [] member public this.``Multi.Generic.Exchange.``() = let fileContents = "System.Threading.Interlocked.Exchange(12.0,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["byref";"float"]) [] member public this.``Multi.Generic.ExchangeUnder``() = let fileContents = "System.Threading.Interlocked.Exchange<_> (obj,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["byref";"obj"]) [] member public this.``Multi.Generic.Dictionary``() = let fileContents = "System.Collections.Generic.Dictionary<_, option>(12,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["int";"System.Collections.Generic.IEqualityComparer"]) [] [] member public this.``Multi.Generic.HashSet``() = let fileContents = "System.Collections.Generic.HashSet({ 1 ..12 },(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["Seq<'a>";"System.Collections.Generic.IEqualityComparer<'a>"]) [] [] member public this.``Multi.Generic.SortedList``() = let fileContents = "System.Collections.Generic.SortedList<_,option> (12,(*Mark*)" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["int";"System.Collections.Generic.IComparer<'TKey>"]) (* No Param Info Shown for multi-parameterinfo tests ---------------------------------------------- *) [] member public this.``ParameterInfo.Multi.NoParamterInfo.InComments``() = let fileContents = "//let _ = System.Object((*Mark*))" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") [] member public this.``Multi.NoParameterInfo.InComments2``() = let fileContents = """(*System.Console.WriteLine((*Mark*)"Test on Fsharp style comments.")*)""" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") [] member public this.``Multi.NoParamterInfo.OnFunctionDeclaration``() = let fileContents = "let Foo(x : int, (*Mark*)b : string) = ()" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") [] member public this.``Multi.NoParamterInfo.WithinString``() = let fileContents = """let s = "new System.DateTime(2000,12(*Mark*)" """ this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") [] member public this.``Multi.NoParamterInfo.OnProperty``() = let fileContents = """ let s = "Hello" let _ = s.Length(*Mark*)""" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") [] member public this.``Multi.NoParamterInfo.OnValues``() = let fileContents = """ type Foo = class val private size : int val private path : string new (s : int, p : string) = {size = s; path(*Mark*) = p} end""" this.VerifyNoParameterInfoAtStartOfMarker(fileContents,"(*Mark*)") (* Project ref method for multi-parameterinfo tests ----------------------------------------------- *) [] member public this.``Multi.ReferenceToProjectLibrary``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution, "FSharpLib") let project2 = CreateProject(solution, "FSharpPro") AddProjectReference(project2,project1) let _ = AddFileFromText(project1, "file1.fs", ["namespace Test";"type public Foo() = class";" static member Sum(x:int,y:int) = x+y";"end"]) let result1 = Build(project1) AddFileFromText(project2, "file2.fs", ["open Test";"Foo.Sum(12,(*Mark*)"]) |> ignore let result2 = Build(project2) let file = OpenFile(project2, "file2.fs") MoveCursorToStartOfMarker(file, "(*Mark*)") let methodstr = GetParameterInfoAtCursor(file) AssertMethodGroupContain(methodstr,["int";"int"]) (* Regression tests/negative tests for multi-parameterinfos --------------------------------------- *) // To be added when the bugs are fixed... [] //[] member public this.``Regrssion.ParameterWithOperators.Bug90832``() = let fileContents = """System.Console.WriteLine("This(*Mark*) is a" + " bug.")""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string"]) [] member public this.``Regression.OptionalArguuments.Bug4042``() = let fileContents = """ module ParameterInfo type TT(x : int, ?y : int) = let z = y do printfn "%A" z member this.Foo(?z : int) = z type TT2(x : int, y : int option) = let z = y do printfn "%A" z let tt = TT((*Mark*)""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["int";"int"]]) [] //[] member public this.``Regression.ParameterFirstTypeOpenParen.Bug90798``() = let fileContents = """ let a = async { Async.AsBeginEnd((*Mark*) } let p = 10""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["'Arg -> Async<'T>"]]) [] // regression test for bug 3878: no parameter info triggered by "(" member public this.``Regression.NoParameterInfoTriggeredByOpenBrace.Bug3878``() = let fileContents = """ module ParameterInfo let x = 1 + 2 let _ = System.Console.WriteLine ((*Mark*)) let y = 1""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",[""]) [] // regression test for bug 4495 : Should alway sort method lists in order of argument count member public this.``Regression.MehtodSortedByArgumentCount.Bug4495.Case1``() = let fileContents = """ module ParameterInfo let a1 = System.Reflection.Assembly.Load("mscorlib") let m = a1.GetType("System.Decimal").GetConstructor((*Mark*)null)""" this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",0,["System.Type []"]) [] member public this.``Regression.MehtodSortedByArgumentCount.Bug4495.Case2``() = let fileContents = """ module ParameterInfo let a1 = System.Reflection.Assembly.Load("mscorlib") let m = a1.GetType("System.Decimal").GetConstructor((*Mark*)null)""" this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",1,["System.Reflection.BindingFlags"; "System.Reflection.Binder"; "System.Type []"; "System.Reflection.ParameterModifier []"]) [] [] member public this.``BasicBehavior.WithReference``() = let fileContents = """ open System.ServiceModel let serviceHost = new ServiceHost((*Mark*))""" let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = ["System.ServiceModel"]) MoveCursorToStartOfMarker(file, "(*Mark*)") TakeCoffeeBreak(this.VS) let methodstr = GetParameterInfoAtCursor(file) printfn "%A" methodstr let expected = ["System.Type";"System.Uri []"] AssertMethodGroupContain(methodstr,expected) [] member public this.``BasicBehavior.CommonFunction``() = let fileContents = """ let f(x) = 1 f((*Mark*))""" this.VerifyParameterInfoAtStartOfMarker(fileContents,"(*Mark*)",[["'a"]]) [] member public this.``BasicBehavior.DotNet.Static``() = let fileContents = """System.String.Format((*Mark*)""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"obj []"]) (*------------------------------------------IDE Query automation start -------------------------------------------------*) [] [] // ParamInfo works normally for calls as query operator arguments // wroks fine In nested queries member public this.``Query.InNestedQuery``() = let fileContents = """ let tuples = [ (1, 8, 9); (56, 45, 3)] let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let tp = (2,3,6) let foo = query { for n in numbers do yield (n, query {for x in tuples do let r = x.Equals((*Marker1*)tp) let _ = System.String.Format("",(*Marker2*)x) select r }) }""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker1*)",["obj"],queryAssemblyRefs) this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker2*)",["string";"obj []"],queryAssemblyRefs) [] [] // ParamInfo works normally for calls as query operator arguments // ParamInfo Still works when an error exists member public this.``Query.WithErrors``() = let fileContents = """ let tuples = [ (1, 8, 9); (56, 45, 3)] let tp = (2,3,6) let foo = query { for t in tuples do orderBy (t.Equals((*Marker*)tp)) }""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker*)",["obj"],queryAssemblyRefs) [] [] // ParamInfo works normally for calls as query operator arguments member public this.``Query.OperatorWithParentheses``() = let fileContents = """ type Product() = let mutable id = 0 let mutable name = "" member x.ProductID with get() = id and set(v) = id <- v member x.ProductName with get() = name and set(v) = name <- v let getProductList() = [ Product(ProductID = 1, ProductName = "Chai"); Product(ProductID = 2, ProductName = "Chang"); ] let products = getProductList() let categories = ["Beverages"; "Condiments"; "Vegetables";] // Group Join let q2 = query { for c in categories do groupJoin((*Marker1*)for p in products(*Marker2*) -> c = p.ProductName) into ps select (c, ps) } |> Seq.toArray""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker1*)",[],queryAssemblyRefs) this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker2*)",[],queryAssemblyRefs) [] [] // ParamInfo works normally for calls as query operator arguments // ParamInfo Still works when there is an optional argument member public this.``Query.OptionalArgumentsInQuery``() = let fileContents = """ type TT(x : int, ?y : int) = let z = y do printfn "%A" z member this.Foo(?z : int) = z type TT2(x : int, y : int option) = let z = y do printfn "%A" z let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let test3 = query { for n in numbers do let tt = TT((*Marker*) minBy n }""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker*)",["int";"int"],queryAssemblyRefs) [] [] // ParamInfo works normally for calls as query operator arguments // ParamInfo Still works when there are overload methods with the same param count member public this.``Query.OverloadMethod.InQuery``() = let fileContents = """ let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] type Foo() = member this.A1(x1 : int, x2 : int, ?y : string, ?Z: bool) = () member this.A1(x1 : int, X2 : string, ?y : int, ?Z: bool) = () let test3 = query { for n in numbers do let foo = new Foo() foo.A1(1,1,(*Marker*) minBy n }""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker*)",["int";"int";"string";"bool"],queryAssemblyRefs) // Allow the ParameterInfoTests run under different context namespace UnitTests.Tests.LanguageService.ParameterInfo open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit ParameterInfoTests new() = { inherit ParameterInfoTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit ParameterInfoTests new() = { inherit ParameterInfoTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.InternalCollections.fs0000775000175000017500000002046012260314606023617 0ustar chrischrisnamespace UnitTests.Tests.InternalCollections open System open System.IO open NUnit.Framework open Internal.Utilities.Collections [] type MruCache = new() = { } member private rb.NumToString = function | 0->"Zero" | 1->"One" | 2->"Two" | 3->"Three" | 4->"Four" | 5->"Five" | 6->"Six" | 7->"Seven" | 8->"Eight" | 9->"Nine" | _ -> failwith "Out of range" member private rb.NumToStringBox n = box (rb.NumToString n) [] member public rb.Basic() = let m = new MruCache(3, rb.NumToString, (fun (x,y) -> x = y)) let s = m.Get(5) Assert.IsTrue("Five"=s) let s = m.Get(6) Assert.IsTrue("Six"=s) let s = m.Get(7) Assert.IsTrue("Seven"=s) let s = m.Get(8) Assert.IsTrue("Eight"=s) let (i,s) = Option.get m.MostRecent Assert.AreEqual(8,i) Assert.IsTrue("Eight"=s) () [] member public rb.MostRecentOfEmpty() = let m = new MruCache(3, rb.NumToString, (fun (x,y) -> x = y)) match m.MostRecent with | Some _->failwith "Expected None" | None->() [] member public rb.SetAlternate() = let m = new MruCache(3, rb.NumToString, (fun (x,y) -> x = y)) m.SetAlternate(2,"Banana") let (i,s) = Option.get m.MostRecent Assert.AreEqual(2,i) Assert.IsTrue("Banana"=s) member private rb.AddBanana(m:MruCache) = let banana = new obj() m.SetAlternate(2,banana) let s = m.Get(2) Assert.AreEqual(banana,s) [] member public rb.CacheDepthIsHonored() = let m = new MruCache(3, rb.NumToStringBox, (fun (x,y) -> x = y)) rb.AddBanana(m) // Separate function to keep 'banana' out of registers let _ = m.Get(3) let _ = m.Get(4) let _ = m.Get(5) GC.Collect() let s = m.Get(2) Assert.IsTrue("Two"=downcast s) [] member public rb.SubsumptionIsHonored() = let PairToString (s,n) = rb.NumToString n let AreSameForSubsumption((s1,n1),(s2,n2)) = n1=n2 let m = new MruCache(3, PairToString, (fun (x,y) -> x = y), areSameForSubsumption=AreSameForSubsumption) m.SetAlternate(("x",2),"Banana") let s = m.Get (("x",2)) Assert.IsTrue("Banana"=s, "Check1") let s = m.Get (("y",2)) Assert.IsTrue("Two"=s, "Check2") let s = m.Get (("x",2)) Assert.IsTrue("Two"=s, "Check3") // Not banana because it was subsumed [] member public rb.OnDiscardIsHonored() = let AreSameForSubsumption((s1,n1),(s2,n2)) = s1=s2 let discarded = ref [] let m = new MruCache(compute=fst, areSame=(fun (x,y) -> x = y), areSameForSubsumption=AreSameForSubsumption, keepStrongly=2, keepMax=2, onDiscard=(fun s -> discarded := s :: !discarded)) m.SetAlternate(("x",1),"Banana") // no discard printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = [], "Check1") m.SetAlternate(("x",2),"Apple") // forces discard of x --> Banana printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = ["Banana"], "Check2") let s = m.Get (("x",3)) printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = ["Apple"; "Banana"], "Check3") let s = m.Get (("y",4)) printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = ["Apple"; "Banana"], "Check4") let s = m.Get (("z",5)) // forces discard of x --> Bananas printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = ["x"; "Apple";"Banana"], "Check5") let s = m.Get (("w",6)) // forces discard of y printfn "discarded = %A" discarded.Value Assert.IsTrue(discarded.Value = ["y";"x";"Apple";"Banana"], "Check6") [] type AgedLookup() = let mutable hold197 : byte [] = null let mutable hold198 : byte [] = null let mutable hold199 : byte [] = null let WeakRefTest n = let al = AgedLookup(n, (fun (x,y) -> x = y)) let AssertCached(i,o:byte array) = match al.TryPeekKeyValue(i) with | Some(_,x) -> Assert.IsTrue(obj.ReferenceEquals(o,x), sprintf "Object in cache (%d) does not agree with expectation (%d)" x.[0] i) | None -> Assert.IsTrue(false, "Object fell out of cache") let AssertExistsInCached(i) = match al.TryPeekKeyValue(i) with | Some _ -> () | None -> Assert.IsTrue(false, "Object fell out of cache") let AssertNotCached(i) = match al.TryPeekKeyValue(i) with | Some _ -> Assert.IsTrue(false, "Expected key to have fallen out of cache") | None -> () let f() = try // Add some large objects for i in 150..199 do let mutable large : byte array = Array.create (5 * 1024 * 1024) (byte i) if i = 197 then hold197<-large if i = 198 then hold198<-large if i = 199 then hold199<-large al.Put(i, large) large<-null finally printfn "ensure these objects are never on the stack of the top-level test" f() // At this point, item 0 should be long gone. AssertNotCached(0) // Also, hold197-hold199 may be strongly held depending on the value of 'n' passed to this test. GC.Collect() let f() = try AssertCached(197,hold197) AssertCached(198,hold198) AssertCached(199,hold199) finally printfn "ensure these objects are never on the stack of the top-level test" f() // Release a strongly held item (unless n=0) and see that it hasn't fallen out hold199 <- null GC.Collect() let f() = try AssertCached(197,hold197) AssertCached(198,hold198) if n>0 then AssertExistsInCached(199) // hold19 should be held else AssertNotCached(199) finally printfn "ensure these objects are never on the stack of the top-level test" f() // Release a strongly held item (unless n<=1) and see that it hasn't fallen out hold198 <- null GC.Collect() let f() = try AssertCached(197,hold197) if n>1 then AssertExistsInCached(198) // hold198 should be held else AssertNotCached(198) finally printfn "ensure these objects are never on the stack of the top-level test" f() // Release a strongly held item (unless n<=2) and see that it hasn't fallen out hold197 <- null GC.Collect() let f() = try if n>2 then AssertExistsInCached(197) // hold197 should be held else AssertNotCached(197) finally printfn "ensure these objects are never on the stack of the top-level test" f() // Let go of everything else. al.Clear() GC.Collect() [] member public rb.WeakRef0() = WeakRefTest 0 [] member public rb.WeakRef1() = WeakRefTest 1 [] member public rb.WeakRef2() = WeakRefTest 2 [] member public rb.WeakRef3() = WeakRefTest 3 fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.Colorizer.fs0000775000175000017500000012713112260314606024662 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type ColorizerTests() = inherit LanguageServiceBaseTests() //Marker At The End Helper Functions member private this.VerifyColorizerAtEndOfMarker(fileContents : string, marker : string, tokenType : TokenType) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToEndOfMarker(file, marker) AssertEqual(tokenType, GetTokenTypeAtCursor(file)) //Marker At The Start Helper Function member private this.VerifyColorizerAtStartOfMarker(fileContents : string, marker : string, tokenType : TokenType) = let (solution, project,file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, marker) AssertEqual(tokenType, GetTokenTypeAtCursor(file)) [] member this.``Comment.SingleLine``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let simplefunction x y = x + y // Test1SimpleComment""", marker = "// Test1", tokenType = TokenType.Comment) [] member this.``Conment.SingleLine.MultiConments``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let x = // Test2SimpleComment // 1""", marker = "// Test2", tokenType = TokenType.Comment) [] member this.``Comment.MultiLine.AfterAnExpression``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let mutliLine x = 5(* Test1MultiLine Test2MultiLine <@@asdf@@> Test3MultiLine*) + 1(*Test4*)""", marker = "Test1", tokenType = TokenType.Comment) [] member this.``Comment.MultiLine.WithLineBreakAndATab``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let mutliLine x = 5(* Test1MultiLine Test2MultiLine <@@asdf@@> Test3MultiLine*) + 1(*Test4*) """, marker = "Test2", tokenType = TokenType.Comment) [] member this.``Comment.MultiLine.WithLineBreakAfterQuotExp``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let mutliLine x = 5(* Test1MultiLine Test2MultiLine <@@asdf@@> Test3MultiLine*) + 1(*Test4*) """, marker = "Test3", tokenType = TokenType.Comment) [] member this.``Comment.MultiLine.AfterANumber``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let mutliLine x = 5(* Test1MultiLine Test2MultiLine <@@asdf@@> Test3MultiLine*) + 1(*Test4*) """, marker = "1(*Test4*)", tokenType = TokenType.Number) [] member this.``Comment.Nested.Nested01``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ (* L1Nesting (* L2Nesting (* L3 Nesting let l3code = 3 *) let l2code = 2 *) let l1code = 1 *) let l0code = 0 """, marker = "let l3", tokenType = TokenType.Comment) [] member this.``Comment.Nested.Nested02``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ (* L1Nesting (* L2Nesting (* L3 Nesting let l3code = 3 *) let l2code = 2 *) let l1code = 1 *) let l0code = 0 """, marker = "let l2", tokenType = TokenType.Comment) [] member this.``Comment.Nested.Nested03``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ (* L1Nesting (* L2Nesting (* L3 Nesting let l3code = 3 *) let l2code = 2 *) let l1code = 1 *) let l0code = 0 """, marker = "let l1", tokenType = TokenType.Comment) [] member this.``Comment.Nested.IdentAfterNestedComments``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ (* L1Nesting (* L2Nesting (* L3 Nesting let l3code = 3 *) let l2code = 2 *) let l1code = 1 *) let l0code = 0 """, marker = "let l0", tokenType = TokenType.Identifier) [] member this.``Comment.CommentInString``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ let commentsInString = "...(*test1_comment_in_string_literal*)..." )""", marker = "test1", tokenType = TokenType.String) [] member this.``Comment.StringInComment``() = this.VerifyColorizerAtEndOfMarker( fileContents = """ (* let commentsInString2 = "...*)test2_stringliteral_in_comment(*..." *)""", marker = "test2", tokenType = TokenType.Comment) [] member this.``Comment.Unterminated.KeywordBeforeComment``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ type IPeekPoke = interface(*ML Comment Start abstract member Peek: unit -> int abstract member Poke: int -> unit end """, marker = "face(*ML Comment Start", tokenType = TokenType.Keyword) [] member this.``Comment.Unterminated.KeywordInComment``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ type IPeekPoke = interface(*ML Comment Start abstract member Peek: unit -> int abstract member Poke: int -> unit end type wodget = class val mutable state: int interface IPeekPoke with(*Few Lines Later2*) member x.Poke(n) = x.state <- x.state + n member x.Peek() = x.state end end(*Few Lines Later3*)""", marker = "with(*Few Lines Later2*)", tokenType = TokenType.Comment) [] member this.``Comment.Unterminated.NestedComments``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ type IPeekPoke = interface(*ML Comment Start abstract member Peek: unit -> int abstract member Poke: int -> unit end type wodget = class val mutable state: int interface IPeekPoke with(*Few Lines Later2*) member x.Poke(n) = x.state <- x.state + n member x.Peek() = x.state end member x.HasBeenPoked = (x.state <> 0) new() = { state = 0 } end(*Few Lines Later3*)""", marker = "nd(*Few Lines Later3*)", tokenType = TokenType.Comment) [] member this.``String.AtEnd``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let stringone = "simple string test"(*Simple String*) """, marker = """est"(*Simple String*)""", tokenType = TokenType.String) [] member this.``String.MultiLines``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let stringtwo = "simple test(*MultiLine - First*) string test"(*MultiLine - Second*)""", marker = "st(*MultiLine - First*)", tokenType = TokenType.String) [] member this.``String.MultiLines.LineBreak``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let stringtwo = "simple test(*MultiLine - First*) string test"(*MultiLine - Second*) """, marker = "\"(*MultiLine - Second*) ", tokenType = TokenType.String) [] member this.``String.Literal``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let stringthree = @"literal test"(*Literal String*)""", marker = """st"(*Literal String*)""", tokenType = TokenType.String) [] member this.``ByteString.AtEnd``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let bytestringone = "abcdefg"B(*Byte String*)""", marker = "B(*Byte String*)", tokenType = TokenType.String) [] member this.``ByteString.MultiLines``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let bytestringtwo = "simple(*MultiLineB - First*) string"B(*MultiLineB - Second*)""", marker = """ing"B(*MultiLineB - Second*)""", tokenType = TokenType.String) [] member this.``ByteString.Literal``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let bytestringthree = @"literal"B(*Literal Byte*)""", marker = """al"B(*Literal Byte*)""", tokenType = TokenType.String) [] member this.``EscapedIdentifier.word``() = this.VerifyColorizerAtStartOfMarker( fileContents = """let ``this is an escaped identifier 123ASDF@#$"`` = 4""", marker = "`this", tokenType = TokenType.Identifier) [] member this.``EscapedIdentifier.SpecialChar``() = this.VerifyColorizerAtStartOfMarker( fileContents = """let ``this is an escaped identifier 123ASDF@#$"`` = 4""", marker = "3ASDF@#", tokenType = TokenType.Identifier) [] member this.``EscapedIdentifier.EscapeChar``() = this.VerifyColorizerAtStartOfMarker( fileContents = """let ``this is an escaped identifier 123ASDF@#$"`` = 4""", marker = "\"``", tokenType = TokenType.Identifier) /// Regression for 3609 - Colorizer: __SOURCE__ and others colorized as a string [] member this.``PredefinedIdentifier.SOURCE_DIRECTORY``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let x = __SOURCE_DIRECTORY__(*Test1*)""", marker = "__(*Test1*)", tokenType = TokenType.Keyword) [] member this.``PredefinedIdentifier.SOURCE_FILE``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let y = __SOURCE_FILE__(*Test2*))""", marker = "__(*Test2*)", tokenType = TokenType.Keyword) [] member this.``PredefinedIdentifier.LINE``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let z = __LINE__(*Test3*)""", marker = "__(*Test3*)", tokenType = TokenType.Keyword) // Regression Test for FSB 3566, F# colorizer does not respect numbers [] member this.``Number.InAnExpression``() = this.VerifyColorizerAtStartOfMarker( fileContents = """let f x = x + 9""", marker = "9", tokenType = TokenType.Number) // Regression Test for FSB 1778 - Colorization seems to be confused after parsing a comment that contains a verbatim string that contains a \ [] member this.``Number.AfterCommentWithBackSlash``() = this.VerifyColorizerAtStartOfMarker( fileContents = """let f (* @"\\" *)x = x + 19(*Marker1*)""", marker = "9(*Marker1*)", tokenType = TokenType.Number) // Regression Test for FSharp1.0:2539 -- lexing @"" strings inside (* *) comments? [] member this.``Keyword.AfterCommentWithLexingStrings``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ (* let x = @"\\" *) let(*Marker1*) y = 1 """, marker = "t(*Marker1*)", tokenType = TokenType.Keyword) // Regression Test for FSB 1380 - Language Service colorizes anything followed by a bang as a keyword [] member this.``Keyword.LetBang``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let seqExpr = seq { let! x = [1 .. 10](*Marker1*) yield! x(*Marker2*) do! - = ()(*Marker3*) }""", marker = "! x = [1 .. 10](*Marker1*)", tokenType = TokenType.Keyword) [] member this.``Keyword.Yield``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let seqExpr = seq { let! x = [1 .. 10](*Marker1*) yield! x(*Marker2*) do! - = ()(*Marker3*) }""", marker = "! x(*Marker2*)", tokenType = TokenType.Keyword) [] member this.``Keyword.Do``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let seqExpr = seq { let! x = [1 .. 10](*Marker1*) yield! x(*Marker2*) do! - = ()(*Marker3*) }""", marker = "! - = ()(*Marker3*)", tokenType = TokenType.Keyword) [] member this.``Keyword.Invalid.Bang``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let seqExpr = seq { foo! = true(*Marker1*) }""", marker = "! = true(*Marker1*)", tokenType = TokenType.Identifier) [] [] [] //This test case Verify that the color of const is the keyword color member this.``TypeProvider.StaticParameters.Keyword.const``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ type foo = N1.T< const(*Marker1*) "Hello World",2>""", marker = "t(*Marker1*)", tokenType = TokenType.Keyword) // Regression test for FSB 3696 - Colorization doesn't treat #if/else/endif correctly when embedded in a string literal [] member this.``PreProcessor.InStringLiteral01``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ #if UNDEFINED let x = "#elseMarker1" let y = "#endifMarker2" #else//Marker3 let x = "#elseMarker4" let y = "#endifMarker5" #endif""", marker = "eMarker1", tokenType = TokenType.InactiveCode) [] member this.``PreProcessor.InStringLiteral02``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ #if UNDEFINED let x = "#elseMarker1" let y = "#endifMarker2" #else//Marker3 let x = "#elseMarker4" let y = "#endifMarker5" #endif""", marker = "fMarker2", tokenType = TokenType.InactiveCode) [] member this.``PreProcessor.ElseKeyword``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ #if UNDEFINED let x = "#elseMarker1" let y = "#endifMarker2" #else//Marker3 let x = "#elseMarker4" let y = "#endifMarker5" #endif""", marker = "e//Marker3", tokenType = TokenType.PreprocessorKeyword) [] member this.``PreProcessor.InStringLiteral03``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ #if UNDEFINED let x = "#elseMarker1" let y = "#endifMarker2" #else//Marker3 let x = "#elseMarker4" let y = "#endifMarker5" #endif""", marker = "eMarker4", tokenType = TokenType.String) [] member this.``PreProcessor.InStringLiteral04``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ #if UNDEFINED let x = "#elseMarker1" let y = "#endifMarker2" #else//Marker3 let x = "#elseMarker4" let y = "#endifMarker5" #endif""", marker = "fMarker5", tokenType = TokenType.String) // Regression test for FSHARP1.0:4279 [] member this.``Keyword.OCaml.asr``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(asr, b) -> () |_ -> ()""", marker = "asr", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.land``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(land, b) -> () |_ -> ()""", marker = "land", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.lor``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(lor, b) -> () |_ -> ()""", marker = "lor", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.lsl``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(lsl, b) -> () |_ -> ()""", marker = "lsl", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.lsr``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(lsr, b) -> () |_ -> ()""", marker = "lsr", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.lxor``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(lxor, b) -> () |_ -> ()""", marker = "lxor", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.mod``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(mod, b) -> () |_ -> ()""", marker = "mod", tokenType = TokenType.Keyword) [] member this.``Keyword.OCaml.sig``() = this.VerifyColorizerAtStartOfMarker( fileContents = """ let foo a = match a with | Some(sig, b) -> () |_ -> ()""", marker = "sig", tokenType = TokenType.Keyword) [] member this.InactiveCode() = let fileContents = """ #if UNDEFINED (*Inactive Code1*)let notLegit1 x = x #else #if UNDEFINED (*Inactive Code2*)let notLegit2 x = x #else #if UNDEFINED (*Inactive Code3*)let notLegit3 x = x #else #if UNDEFINED (*Inactive Code4*)let notLegit4 x = x #else #if UNDEFINED (*Inactive Code5*)let notLegit5 x = x #else (*Active Code5*)let legitCode5 x = x #endif (*Active Code4*)let legitCode4 x = x #endif (*Active Code3*)let legitCode3 x = x #endif (*Active Code2*)let legitCode2 x = x #endif (*Active Code1*)let legitCode1 x = x #endif #if DEFINED (*Active Code6*)let legitCode6 x = x #if DEFINED (*Active Code7*)let legitCode7 x = x #else (*Inactive Code7*)let notLegit7 x = x #endif #else (*Inactive Code6*)let notLegit6 x = x #endif """ let (_solution, _project, file) = this.CreateSingleFileProject(fileContents, defines = ["DEFINED"]) MoveCursorToEndOfMarker(file, "Active Code1*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code2*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code3*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code4*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code5*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code6*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Active Code7*)le"); AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code1*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code2*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code3*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code4*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code5*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code6*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file, "Inactive Code7*)le"); AssertEqual(TokenType.InactiveCode, GetTokenTypeAtCursor(file)) //ColorizerTest start [] [] member public this.``Regression.Bug2986``() = let code = [ "#light" "let x = 12" "(*" "blaa" "blaa" "blaa" "blaa" "blaa" "blaa" "blaa" "*)" "open System" "open System.IO" "open System.Text" "open System.Security.Cryptography" "let fold = List.fold" "let linkMap f xs = List.concat (List.map f xs)" "let argv = System.Environment.GetCommandLineArgs()" "let buildConfiguration = argv.[argv.Length - 1]" ] let (_solution, _project, file) = this.CreateSingleFileProject(code) // Make sure things are colored right to start MoveCursorToEndOfMarker(file,"open Sys") AssertEqual(TokenType.Identifier,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"open System.Security.Crypto") AssertEqual(TokenType.Identifier,GetTokenTypeAtCursor(file)) // Delete the chunk of comments. ReplaceFileInMemory file [ "#light" "let x = 12" "open System" "open System.IO" "open System.Text" "open System.Security.Cryptography" "let fold = List.fold" "let linkMap f xs = List.concat (List.map f xs)" "let argv = System.Environment.GetCommandLineArgs()" "let buildConfiguration = argv.[argv.Length - 1]" ] // Reconfirm MoveCursorToEndOfMarker(file,"open Sys") AssertEqual(TokenType.Identifier,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"open System.Security.Crypto") AssertEqual(TokenType.Identifier,GetTokenTypeAtCursor(file)) [] member public this.``Colorizer.AtString``() = let (_solution, _project, file) = this.CreateSingleFileProject("let s = @\"Bob\"") // Check Bob MoveCursorToEndOfMarker(file,"let s = @\"B") AssertEqual(TokenType.String,GetTokenTypeAtCursor(file)) [] member public this.``Regression.Bug4860``() = let fileContents = " let x = __SOURCE_DIRECTORY__(*Test1*) let y = __SOURCE_FILE__(*Test2*) let z = __LINE__(*Test3*) " let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, "__(*Test1*)") AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file, "__(*Test2*)") AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file, "__(*Test3*)") AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) [] member public this.``Number.Regression.Bug3566``() = let otherNumbers = "let other = 0x4, 0b0100, 4L, 4UL, 4u, 4s, 4us, 4y, 4uy, 4.0, 4.0f, 4N, 4I, 1M, 123" let code = [ "let n = 123"; "let l = [12..15]"; "let l2 = [12 .. 15]"; "let l3 = [ 12 .. 15 ]"; "// comment1: 1234"; "(* comment2: 1234 *)"; otherNumbers; ] let (_solution, _project, file) = this.CreateSingleFileProject(code) // Check integer number MoveCursorToEndOfMarker(file,"let n = 1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) // Check numbers in a range expression MoveCursorToEndOfMarker(file,"let l = [1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let l = [12..1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let l2 = [1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let l2 = [12 .. 1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let l3 = [ 1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let l3 = [ 12 .. 1") AssertEqual(TokenType.Number,GetTokenTypeAtCursor(file)) // Check other numeric formats let mutable index = otherNumbers.IndexOf(",") while(index <> -1) do let substr = otherNumbers.Substring(0, index - 1) // -1 to move into the number MoveCursorToEndOfMarker(file, substr) AssertEqual(TokenType.Number, GetTokenTypeAtCursor(file)) index <- otherNumbers.IndexOf(",", index + 1) // Check that numbers in comments are not colored as numbers MoveCursorToEndOfMarker(file,"// comment1: 12") AssertEqual(TokenType.Comment,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"(* comment2: 12") AssertEqual(TokenType.Comment,GetTokenTypeAtCursor(file)) /// FEATURE: Hash commands in .fsx files are colorized in PreprocessorKeyword color [] member public this.``Preprocessor.InFsxFile``() = let code = [ "#reference @\"\"" "#load @\"\"" "#I <--hash I" "#time @\"\"" " #reference @\"\"" " #load @\"\"" " #I <--spaces then hash I" " #time @\"\"" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"#ref") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"#loa") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file,"I <--hash I") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"#ti") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #ref") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #loa") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file,"I <--spaces then hash I") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #ti") AssertEqual(TokenType.PreprocessorKeyword ,GetTokenTypeAtCursor(file)) /// FEATURE: Script-specific hash commands do not show up in blue in .fs files. [] member public this.``Preprocessor.InFsFile``() = let code = [ "#reference @\"\"" "#load @\"\"" "#I <--hash I" "#time @\"\"" " #reference @\"\"" " #load @\"\"" " #I <--spaces then hash I" " #time @\"\"" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"#ref") AssertEqual(TokenType.Text,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"#loa") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file,"I <--hash I") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"#ti") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #ref") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #loa") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToStartOfMarker(file,"I <--spaces then hash I") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file," #ti") AssertEqual(TokenType.Text ,GetTokenTypeAtCursor(file)) /// FEATURE: Nested (* *) comments are allowed and will be colorized with CommentColor. Only the final *) causes the comment to close. [] member public this.``Comment.AfterCommentBlock``() = let code = ["(*Bob*)type Bob() = class end" "(*" "(*" "(*Alice*)type Alice() = class end" "*)" "*)" "(*Charles*)type Charles() = class end"] let (_, _, file) = this.CreateSingleFileProject(code) // Check Bob MoveCursorToEndOfMarker(file,"(*Bob*)t") AssertEqual(TokenType.Keyword,GetTokenTypeAtCursor(file)) // Check Alice MoveCursorToEndOfMarker(file,"(*Alice*)t") AssertEqual(TokenType.Comment,GetTokenTypeAtCursor(file)) // Check Charles MoveCursorToEndOfMarker(file,"(*Charles*)t") AssertEqual(TokenType.Keyword,GetTokenTypeAtCursor(file)) /// BUG: The comment used to be colored in black. [] member public this.``Regression.Bug1596``() = let code = [" let 2d (* Identifiers cannot start with numbers *)"] let (_, _, file) = this.CreateSingleFileProject(code) // Check Bob MoveCursorToEndOfMarker(file,"let 2d (* Ide") AssertEqual(TokenType.Comment,GetTokenTypeAtCursor(file)) /// FEATURE: Code inside #if\#else\#endif blocks is colored with InactiveCodeColor depending on defines. This works for nested #if blocks as well. [] member public this.``Preprocessor.AfterPreprocessorBlock``() = let code = ["(*Bob*)type Bob() = class end" "#if UNDEFINED" " #if UNDEFINED" " (*Alice*)type Alice() = class end" " #else" " (*Tom*)type Tom() = class end" " #endif" "#else" " #if UNDEFINED" " (*Maurice*)type Maurice() = class end" " #else" " (*Larry*)type Larry() = class end" " #endif" "#endif" "(*Charles*)type Charles() = class end"] let (_, _, file) = this.CreateSingleFileProject(code) let check marker token = MoveCursorToEndOfMarker(file,marker) AssertEqual(token,GetTokenTypeAtCursor(file)) check "(*Bob*)t" TokenType.Keyword check "(*Alice*)t" TokenType.InactiveCode check "(*Tom*)t" TokenType.InactiveCode check "(*Maurice*)t" TokenType.InactiveCode check "(*Larry*)t" TokenType.Keyword check "(*Charles*)t" TokenType.Keyword // Wrong "#else" in "#if" should be ignored [] member public this.``Preprocessor.InvalidElseDirectiveIgnored``() = let code = ["#if UNDEFINED" " (*Alice*)type Alice() = class end" "(**) #else" " (*Larry*)type Larry() = class end" "#endif"] let (_, _, file) = this.CreateSingleFileProject(code) let check marker token = MoveCursorToEndOfMarker(file,marker) AssertEqual(token,GetTokenTypeAtCursor(file)) check "(*Alice*)t" TokenType.InactiveCode check "(*Larry*)t" TokenType.InactiveCode /// FEATURE: Code inside #if\#else\#endif blocks is colored with InactiveCodeColor depending on defines. This works for nested #if blocks as well. [] member public this.``Preprocessor.AfterPreprocessorBlockWithDefines``() = let code = ["(*Bob*)type Bob() = class end" "#if UNDEFINED" " #if UNDEFINED" " (*Alice*)type Alice() = class end" " #else" " (*Tom*)type Tom() = class end" " #endif" "#else" " #if UNDEFINED" " (*Maurice*)type Maurice() = class end" " #else" " (*Larry*)type Larry() = class end" " #endif" "#endif" "(*Charles*)type Charles() = class end"] let (_, _, file) = this.CreateSingleFileProject(code, defines = ["FOO";"UNDEFINED"]) let check marker token = MoveCursorToEndOfMarker(file,marker) AssertEqual(token,GetTokenTypeAtCursor(file)) check "(*Bob*)t" TokenType.Keyword check "(*Alice*)t" TokenType.Keyword check "(*Tom*)t" TokenType.InactiveCode check "(*Maurice*)t" TokenType.InactiveCode check "(*Larry*)t" TokenType.InactiveCode check "(*Charles*)t" TokenType.Keyword /// FEATURE: Preprocessor keywords #light\#if\#else\#endif are colored with the PreprocessorKeyword color. /// FEATURE: All code in the inactive side of #if\#else\#endif is colored with with InactiveCode color. [] member public this.``Preprocessor.Keywords``() = let code = ["#light (*Light*)" " #if UNDEFINED //(*If*)" " let x = 1(*Inactive*)" " #else //(*Else*)" " let(*Active*) x = 1" " #endif //(*Endif*)"] let (_, _, file) = this.CreateSingleFileProject(code) let check marker token = MoveCursorToStartOfMarker(file,marker) AssertEqual(token,GetTokenTypeAtCursor(file)) check "light (*Light*)" TokenType.PreprocessorKeyword check "(*Inactive*)" TokenType.InactiveCode check "if UNDEFINED //(*If*)" TokenType.PreprocessorKeyword check "FINED //(*If*)" TokenType.Identifier check "(*If*)" TokenType.Comment check "else //(*Else*)" TokenType.PreprocessorKeyword check "t(*Active*)" TokenType.Keyword check "endif //(*Endif*)" TokenType.PreprocessorKeyword check "(*If*)" TokenType.Comment check "(*Else*)" TokenType.Comment check "(*Endif*)" TokenType.Comment /// #else / #endif in multiline strings is ignored [] member public this.``Preprocessor.DirectivesInString``() = let code = ["#light" "" "#if DEFINED" "let s = \"" "#else" "\"" "let testme = 1" "#endif"] let (_, _, file) = this.CreateSingleFileProject(code, defines = ["DEFINED"]) MoveCursorToStartOfMarker(file,"let testme") AssertEqual(TokenType.Keyword,GetTokenTypeAtCursor(file)) /// Bug 2076 - String literals were causing the endif stack information to be discarded [] member public this.``Preprocessor.KeywordsWithStrings``() = let code = ["#light (*Light*)" "let x1 = \"string1\"" "#if UNDEFINED //(*If*)" "let x2 = \"string2\"" "#else //(*Else*)" "let x3 = \"string3\"" "#endif //(*Endif*)" "let x4 = \"string4\""] let (_, _, file) = this.CreateSingleFileProject(code) let check marker token = MoveCursorToStartOfMarker(file,marker) AssertEqual(token,GetTokenTypeAtCursor(file)) check "if UNDEFINED //(*If*)" TokenType.PreprocessorKeyword check "else //(*Else*)" TokenType.PreprocessorKeyword check "endif //(*Endif*)" TokenType.PreprocessorKeyword [] member public this.``Comment.VerbatimStringInComment.Bug1778``() = let code = ["#light" "(* @\"\\\" *) let a = 0"] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToStartOfMarker(file, "le") AssertEqual(TokenType.Keyword ,GetTokenTypeAtCursor(file)) [] member public this.``Preprocessor.KeywordsWrongIf.Bug1577``() = let code = ["#if !!!!!!!!!!!!!!!COMPILED" "#endif"] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToStartOfMarker(file, "!!COMPILED") AssertEqual(TokenType.Operator, GetTokenTypeAtCursor(file)) // This was an off-by-one bug in the replacement Colorizer [] member public this.``Keyword.LastCharacterOfKeyword``() = let code = ["(*Bob*)type Bob() = int"] let (_, _, file) = this.CreateSingleFileProject(code) // Check Bob MoveCursorToEndOfMarker(file,"(*Bob*)typ") AssertEqual(TokenType.Keyword,GetTokenTypeAtCursor(file)) // Allow languageService tests to run under different contextes namespace UnitTests.Tests.LanguageService.Colorizer open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit ColorizerTests new() = { inherit ColorizerTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit ColorizerTests new() = { inherit ColorizerTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.GotoDefinition.fs0000775000175000017500000017353612260314606025645 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open System.Collections.Generic open System.Text.RegularExpressions open UnitTests.TestLib.LanguageService type GotoDefinitionTests() = inherit LanguageServiceBaseTests() //GoToDefinitionSuccess Helper Function member private this.VerifyGoToDefnSuccessAtStartOfMarker(fileContents : string, marker : string, definitionCode : string,?addtlRefAssy : list) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToStartOfMarker (file, marker) let identifier = (GetIdentifierAtCursor file).Value |> fst //use marker to get the identifier let result = GotoDefinitionAtCursor file CheckGotoDefnResult (GotoDefnSuccess identifier definitionCode) file result //GoToDefinitionFail Helper Function member private this.VerifyGoToDefnFailAtStartOfMarker(fileContents : string, marker :string,?addtlRefAssy : list) = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = fileContents, marker = marker, f = (fun (file,result) -> CheckGotoDefnResult GotoDefnFailure file result), ?addtlRefAssy = addtlRefAssy ) //GoToDefinitionFail Helper Function member private this.VerifyGoToDefnFailAtStartOfMarker(fileContents : string, marker :string, f : OpenFile * GotoDefnResult -> unit, ?addtlRefAssy : list) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToStartOfMarker (file, marker) let result = GotoDefinitionAtCursor file f (file, result) //GoToDefinition verify no Error dialog //The verification result should be: // Fail at automation lab // Succeed on dev machine with enlistment installed. member private this.VerifyGoToDefnNoErrorDialogAtStartOfMarker(fileContents : string, marker :string, definitionCode : string, ?addtlRefAssy : list) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToStartOfMarker (file, marker) let identifier = (GetIdentifierAtCursor file).Value |> fst //use marker to get the identifier let result = GotoDefinitionAtCursor file if not result.Success then CheckGotoDefnResult GotoDefnFailure file result else CheckGotoDefnResult (GotoDefnSuccess identifier definitionCode) file result [] member public this.``Value``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ type DiscUnion = | Alpha of string | Beta of decimal * unit | Gamma let valueX = Beta(1.0M, ())(*GotoTypeDef*) let valueY = valueX (*GotoValDef*) """, marker = "valueX (*GotoValDef*)", definitionCode = "let valueX = Beta(1.0M, ())(*GotoTypeDef*)") [] member public this.``DisUnionMember``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ type DiscUnion = | Alpha of string | Beta of decimal * unit | Gamma let valueX = Beta(1.0M, ())(*GotoTypeDef*) let valueY = valueX (*GotoValDef*) """, marker = "Beta(1.0M, ())(*GotoTypeDef*)", definitionCode = "| Beta of decimal * unit") [] member public this.``PrimitiveType``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ // Can't goto def on an int literal let bi = 123456I""", marker = "123456I") [] member public this.``OnTypeDefintion``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ //regression test for bug 2516 type One (*Marker1*) = One let f (x : One (*Marker2*)) = 2 """, marker = "One (*Marker1*)", definitionCode = "type One (*Marker1*) = One") [] member public this.``Parameter``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ //regression test for bug 2516 type One (*Marker1*) = One let f (x : One (*Marker2*)) = 2 """, marker = "One (*Marker2*)", definitionCode = "type One (*Marker1*) = One") [] [] [] // This test case check the GotoDefinition (i.e. the TypeProviderDefinitionLocation Attribute) // We expect the correct FilePath, Line and Column on provided: Type, Event, Method, and Property // TODO: add a case for a provided Field member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute``() = use _guard = this.UsingNewVS() // Note that the verification helped method is custom because we *do* care about the column as well, // which is something that the general purpose method in this file (surprisingly!) does not do. let VerifyGoToDefnSuccessAtStartOfMarkerColumn(fileContents : string, marker : string, definitionCode : string, typeProviderAssembly : string, columnMarker : string) = let (sln, proj, file) = GlobalFunctions.CreateNamedSingleFileProject (this.VS, (fileContents, "File.fs")) // Add reference to the type provider this.AddAssemblyReference(proj,typeProviderAssembly) // Identify (line,col) of the destination, i.e. where we expect to land after hitting F12 // We do this to avoid hardcoding absolute numbers in the code. MoveCursorToStartOfMarker (file,columnMarker) let _,column = GetCursorLocation(file) // Put curson at start of marker and then hit F12 MoveCursorToStartOfMarker (file, marker) let identifier = (GetIdentifierAtCursor file).Value |> fst let result = GotoDefinitionAtCursor file // Execute validation (on file name and line) CheckGotoDefnResult (GotoDefnSuccess identifier definitionCode) file result // Reminder: coordinates in the F# compiler are 1-based for lines, and 0-based for columns // coordinates from type providers are 1-based for both lines and columns // GetCursorLocation() seems to return something even more off by 1... let column' = column - 2 match result.ToOption() with | Some(span,_) -> Assert.AreEqual(column',span.iStartIndex, "The cursor landed on the incorrect column!") | None -> Assert.Fail <| sprintf "Expected to find the definition at column '%d' but GotoDefn failed." column' // Basic scenario on a provided Type let ``Type.BasicScenario``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let a = typeof // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "T(*GotoValDef*)", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttribute.dll"), "(*ColumnMarker*)") // This test case checks the type with space in between like N.``T T`` for GotoDefinition let ``Type.SpaceInTheType``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let a = typeof // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "T``", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeWithSpaceInTheType.dll"), "(*ColumnMarker*)") // Basic scenario on a provided Constructor let ``Constructor.BasicScenario``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let foo = new N.T(*GotoValDef*)() // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "T(*GotoValDef*)", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttribute.dll"), "(*ColumnMarker*)") // Basic scenario on a provided Method let ``Method.BasicScenario``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let t = new N.T.M(*GotoValDef*)() // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "M(*GotoValDef*)", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttribute.dll"), "(*ColumnMarker*)") // Basic scenario on a provided Property let ``Property.BasicScenario``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let p = N.T.StaticProp(*GotoValDef*) // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "StaticProp(*GotoValDef*)", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttribute.dll"), "(*ColumnMarker*)") // Basic scenario on a provided Event let ``Event.BasicScenario``() = VerifyGoToDefnSuccessAtStartOfMarkerColumn(""" let t = new N.T() t.Event1(*GotoValDef*) // A0(*ColumnMarker*)1234567890 // B01234567890 // C01234567890 """, "Event1(*GotoValDef*)", "// A0(*ColumnMarker*)1234567890", System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttribute.dll"), "(*ColumnMarker*)") // Actually execute all the scenarios... ``Type.BasicScenario``() ``Type.SpaceInTheType``() ``Constructor.BasicScenario``() ``Method.BasicScenario``() ``Property.BasicScenario``() ``Event.BasicScenario``() [] member public this.``GotoDefinition.NoSourceCodeAvailable``() = this.VerifyGoToDefnFailAtStartOfMarker ( fileContents = "System.String.Format(\"\")", marker = "ormat", f = (fun (_, result) -> Assert.IsFalse(result.Success) Assert.IsTrue(result.ErrorDescription.Contains("Source code is not available")) ) ) [] member public this.``GotoDefinition.NoIdentifierAtLocation``() = let useCases = [ "let x = 1", "1" "let x = 1.2", ".2" "let x = \"123\"", "2" ] for (source, marker) in useCases do this.VerifyGoToDefnFailAtStartOfMarker ( fileContents = source, marker = marker, f = (fun (_, result) -> Assert.IsFalse(result.Success) Assert.IsTrue(result.ErrorDescription.Contains("Cursor is not on identifier")) ) ) [] member public this.``GotoDefinition.ProvidedTypeNoDefinitionLocationAttribute``() = this.VerifyGoToDefnFailAtStartOfMarker ( fileContents = """ type T = N1.T<"", 1> """, marker = "T<", f = (fun (_, result) -> Assert.IsFalse(result.Success) Assert.IsTrue(result.ErrorDescription.Contains("provided type 'T'")) ), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] ) [] member public this.``GotoDefinition.ProvidedMemberNoDefinitionLocationAttribute``() = let useCases = [ """ type T = N1.T<"", 1> T.Param1 """, "ram1", "Param1" """ type T = N1.T1 T.M1(1) """, "1(", "M1" ] for (source, marker, name) in useCases do this.VerifyGoToDefnFailAtStartOfMarker ( fileContents = source, marker = marker, f = (fun (_, result) -> Assert.IsFalse(result.Success) let expectedText = sprintf "provided member '%s'" name Assert.IsTrue(result.ErrorDescription.Contains(expectedText)) ), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] ) [] [] [] // This test case is when the TypeProviderDefinitionLocationAttribute filepath doesn't exist for TypeProvider Type member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Type.FileDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let a = typeof // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "T(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist.dll")]) [] [] [] [] //This test case is when the TypeProviderDefinitionLocationAttribute Line doesn't exist for TypeProvider Type member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Type.LineDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let a = typeof // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "T(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeLineDoesnotExist.dll")]) [] [] [] // This test case is when the TypeProviderDefinitionLocationAttribute filepath doesn't exist for TypeProvider Constructor member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Constructor.FileDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let foo = new N.T(*GotoValDef*)() // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "T(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist.dll")]) [] [] [] //This test case is when the TypeProviderDefinitionLocationAttribute filepath doesn't exist for TypeProvider Method member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Method.FileDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let t = new N.T.M(*GotoValDef*)() // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "M(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist.dll")]) [] [] [] // This test case is when the TypeProviderDefinitionLocationAttribute filepath doesn't exist for TypeProvider Property member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Property.FileDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let p = N.T.StaticProp(*GotoValDef*) // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "StaticProp(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist.dll")]) [] [] [] //This test case is when the TypeProviderDefinitionLocationAttribute filepath doesn't exist for TypeProvider Event member public this.``GotoDefinition.TypeProvider.DefinitionLocationAttribute.Event.FileDoesnotExist``() = this.VerifyGoToDefnFailAtStartOfMarker( fileContents = """ let t = new N.T() t.Event1(*GotoValDef*) // A0(*Marker*)1234567890 // B01234567890 // C01234567890 """, marker = "Event1(*GotoValDef*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DefinitionLocationAttributeFileDoesnotExist.dll")]) [] member public this.``ModuleDefintion``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ //regretion test for bug 2517 module Foo (*MarkerModuleDefinition*) = let x = () """, marker = "Foo (*MarkerModuleDefinition*)", definitionCode = "module Foo (*MarkerModuleDefinition*) =") [] member public this.``Record.Field.Defintion``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ //regretion test for bug 2518 type MyRec = { myX (*MarkerXFieldDefinition*) : int myY (*MarkerYFieldDefinition*) : int } let rDefault = { myX (*MarkerXField*) = 2 myY (*MarkerYField*) = 3 } """, marker = "myX (*MarkerXFieldDefinition*)", definitionCode = "{ myX (*MarkerXFieldDefinition*) : int") [] member public this.``Record.Field.Usage``() = this.VerifyGoToDefnSuccessAtStartOfMarker( fileContents = """ //regretion test for bug 2518 type MyRec = { myX (*MarkerXFieldDefinition*) : int myY (*MarkerYFieldDefinition*) : int } let rDefault = { myX (*MarkerXField*) = 2 myY (*MarkerYField*) = 3 } """, marker = "myY (*MarkerYField*)", definitionCode = " myY (*MarkerYFieldDefinition*) : int") /// run a GotoDefinition test where the expected result is a file that we /// have an `OpenFile` handle for (this won't work, e.g., if this file is a /// generated .fsi that (potentially) doesn't yet exist) /// exp = (, , ) option /// file = /// act = member internal this.GotoDefinitionCheckResultAgainst (exp : (string * string * string) option)(file : OpenFile)(act : GotoDefnResult) : unit = match (exp, act.ToOption()) with | (Some (toFind, expLine, expFile), Some (span, actFile)) -> printfn "%s" "Result received, as expected; checking." Assert.AreEqual (expFile, actFile) printfn "%s" "Filename matches expected." MoveCursorTo(file, span.iStartLine + 1, span.iStartIndex + 1) // adjust & move to the identifier match GetIdentifierAtCursor file with // REVIEW: actually check that we're on the leftmost character of the identifier | None -> Assert.Fail("No identifier at cursor!") | Some (id, _) -> Assert.AreEqual (toFind, id) // are we on the identifier we expect? printfn "%s" "Identifier at cursor matches expected." Assert.AreEqual (expLine.Trim (), (span.iStartLine |> (+) 1 |> GetLineNumber file).Trim ()) // ignore initial- / final-whitespace-introduced noise; adjust for difference in index numbers printfn "%s" "Line at cursor matches expected." | (None, None) -> printfn "%s" "No result received, as expected." // sometimes we may expect GotoDefinition to fail, e.g., when the cursor isn't placed on a valid position (i.e., over an identifier, and, maybe, a constant if we decide to support that) | (Some _, None) -> Assert.Fail("No result received, but one was expected!") // distinguish this and the following case to give insight in case of failure | (None, Some _) -> Assert.Fail("Result received, but none was expected!") /// this can be used when we don't have the expected file open; we still /// need its name /// exp = (, ) option member internal this.GotoDefinitionCheckResultAgainstAnotherFile (proj : OpenProject)(exp : (string * string) option)(act : GotoDefnResult) : unit = match (exp, act.ToOption()) with | (Some (toFind, expFile), Some (span, actFile)) -> printfn "%s" "Result received, as expected; checking." Assert.AreEqual (expFile, Path.GetFileName actFile) printfn "%s" "Filename matches expected." let file = OpenFile (proj, actFile) let line = span.iStartLine |> ((+) 1) |> GetLineNumber file // need to adjust line number here Assert.AreEqual (toFind, line.Substring (span.iStartIndex, toFind.Length)) printfn "%s" "Identifier at cursor matches expected." | (None, None) -> printfn "%s" "No result received, as expected." // sometimes we may expect GotoDefinition to fail, e.g., when the cursor isn't placed on a valid position (i.e., over an identifier, and, maybe, a constant if we decide to support that) | (Some _, None) -> Assert.Fail("No result received, but one was expected!") // distinguish this and the following case to give insight in case of failure | (None, Some _) -> Assert.Fail("Result received, but none was expected!") /// exp = (, ) option member this.GotoDefinitionTestWithSimpleFile (startLoc : string)(exp : (string * string) option) : unit = this.SolutionGotoDefinitionTestWithSimpleFile startLoc exp [] member this.``GotoDefinition.OverloadResolution``() = let lines = [ "type D() =" " override this.#3#ToString() = System.String.Empty" " member this.#4#ToString(s : string) = ()" "" " member this.#1#Foo() = ()" " member this.#2#Foo(x) = ()" "" "let d = new D()" "d.Foo$1$()" "d.Foo$2$(1)" "d.ToString$3$()" "d.ToString$4$(\"aaa\") " ] this.GotoDefinitionTestWithMarkup lines [] member this.``GotoDefinition.OverloadResolutionForProperties``() = let lines = [ "type D() =" " member this.Foo" " with #1##2#get(i:int) = 1" " and set (i:int) v = ()" "" " member this.Foo" " with #3##4#get (s:string) = 1" " and set (s:string) v = ()" "" "D().$1$Foo 1" "D().$2$Foo 1 <- 2" "D().$3$Foo \"abc\"" "D().$4$Foo \"abc\" <- 2" ] this.GotoDefinitionTestWithMarkup lines [] member this.``GotoDefinition.OverloadResolutionWithOverrides``() = let lines = [ "[]" "type Base<'T>() =" " member this.#2#Method() = ()" " abstract Method : 'T -> unit" "" "type Derived() =" " inherit Base()" "" " override this.#1#Method (i:int) = ()" "" "let d = new Derived()" "d.$1$Method 12" "d.$2$Method()" ] this.GotoDefinitionTestWithMarkup lines [] member this.``GotoDefinition.OverloadResolutionStatics``() = let lines = [ "type T =" " static member #1#Foo(i : int) = ()" " static member #2#Foo(s : string) = ()" "" "T.$1$Foo 1" "T.$2$Foo \"abc\"" ] this.GotoDefinitionTestWithMarkup lines [] member this.``GotoDefinition.Constructors``() = let lines = [ "type #1a##1b##1c##1d#B() =" " #2a##2b##2c##2d#new(i : int) = B()" " #3a##3b##3c##3d#new(s : string) = B()" "" "B()" "B(1)" "B(\"abc\")" "" "new $1b$B()" "new $2b$B(1)" "new $3b$B(\"abc\")" "" "type D1() =" " inherit $1c$B()" "" "type D2() =" " inherit $2c$B(1)" "type D3() =" " inherit $3c$B(\"abc\")" "" "let o1 = { new $1d$B() with" " override this.ToString() = \"\"" " }" "let o2 = { new $2d$B(1) with" " override this.ToString() = \"\"" " }" "let o2 = { new $3d$B(\"aaa\") with" " override this.ToString() = \"\"" " }" ] this.GotoDefinitionTestWithMarkup lines member internal this.GotoDefinitionTestWithMarkup (lines : string list) = let origins = Dictionary() let targets = Dictionary() let lines = [ let lineNo = ref 0 for l in lines do let builder = new System.Text.StringBuilder(l) let cont = ref true while !cont do let s = builder.ToString() let index = s.IndexOfAny([|'$';'#'|]) if index < 0 then cont := false else let c = s.[index] let nextIndex = s.IndexOf(c, index+1) let marker = s.Substring(index+1, nextIndex - (index+1)) if c = '$' then origins.Add(marker, (!lineNo+1,index+1)) // caret positions are 1-based, but... else targets.Add(marker, (!lineNo,index)) // ...spans are 0-based. Argh. Thank you, Salsa! builder.Remove(index, nextIndex - index + 1) |> ignore yield builder.ToString() lineNo := !lineNo + 1 ] let (_, _, file) = this.CreateSingleFileProject(lines) for KeyValue(marker,(line,col)) in origins do MoveCursorTo(file, line, col) let res = GotoDefinitionAtCursor file match res.ToOption() with | None -> Assert.IsFalse(targets.ContainsKey(marker), sprintf "%s: definition not found " marker) | Some (span,text) -> match targets.TryGetValue(marker) with | false, _ -> Assert.Fail(sprintf "%s: unexpected definition found" marker) | true, (line1, col1) -> Assert.IsTrue(span.iStartIndex = col1 && span.iStartLine = line1, sprintf "%s: wrong definition found expected %d %d but found %d %d %s" marker line1 col1 span.iStartLine span.iStartIndex text ) /// exp = (, ) option member internal this.SolutionGotoDefinitionTestWithSimpleFile (startLoc : string)(exp : (string * string) option) : unit = let lines = [ "#light" "let _ = 3" "let _ = \"hi\"" "let _ = 2 + 3" "let _ = []" "let _ = ()" "let _ = null" "let _ =" " let x = () (*loc-2*)" " x (*loc-1*)" "let _ =" " let x = () (*loc-5*)" " let x = () (*loc-3*)" " x (*loc-4*)" "let _ =" " let x = () (*loc-7*)" " let x =" " x (*loc-6*)" " ()" "let _ =" " let x = ()" " let rec x = (*loc-9*)" " fun y -> (*loc-10*)" " x y (*loc-8*)" " ()" "let _ =" " let (+) x _ = x (*loc-12*)" " 2 + 3 (*loc-11*)" "type Zero = (*loc-13*)" "let foo (_ : Zero) : 'a = failwith \"hi\" (*loc-14*)" "type One = (*loc-16*)" " One (*loc-15*)" "let f (x : One) = (*loc-17*)" " One (*loc-18*)" "type Nat = (*loc-19*)" " | Suc of Nat (*loc-20*)" " | Zro (*loc-21*)" "let rec plus m n = (*loc-23*)" " match m with (*loc-22*)" " | Zro -> (*loc-24*)" " n" " | Suc m -> (*loc-25*)" " Suc (plus m n) (*loc-26*)" "type MyRec = (*loc-27*)" " { myX : int (*loc-28*)" " myY : int (*loc-29*)" " }" "let rDefault =" " { myX = 2 (*loc-30*)" " myY = 3 (*loc-31*)" " }" "let _ = { rDefault with myX = 7 } (*loc-32*)" "let _ =" " let a = 2" " let id (x : 'a) (*loc-33*)" " : 'a = x (*loc-34*)" " ()" "let _ =" " let foo = ()" " let f (_ as foo) = (*loc-35*)" " foo (*loc-36*)" " ()" "let _ =" " let foo = ()" " let f (x as foo) = foo" " ()" "let _ =" " fun x (*loc-37*)" " x -> (*loc-38*)" " x (*loc-39*)" "let _ =" " let f = () (*loc-40*)" " let f = (*loc-41*)" " function f -> (*loc-42*)" " f (*loc-43*)" " ()" "let _ =" " let f x =" " match x with" " | Suc x (*loc-44*)" " | x (*loc-45*) -> " " x" " ()" "let _ =" " let f x =" " match x with" " | Suc y & z -> (*loc-47*)" " y (*loc-46*)" " ()" "let _ =" " let f xs =" " match xs with" " | x :: xs -> (*loc-49*)" " x (*loc-48*)" " | _ -> []" " ()" "let _ =" " let f x =" " match x with" " | (y : int, z) -> (*loc-51*)" " y (*loc-50*)" " ()" "let _ =" " let f xs =" " match xs with" " | x :: xs (*loc-54*)" " when xs <> [] -> (*loc-52*)" " x :: xs (*loc-53*)" " ()" "module Too = (*loc-55*)" " let foo = 0 (*loc-56*)" "module Bar =" " open Too (*loc-57*)" "let _ = Too.foo (*loc-58*)" "module Overlap =" " type Parity = Even | Odd" " let (|Even|Odd|) x = (*loc-59*)" " if x % 0 = 0" " then Even (*loc-60*)" " else Odd" " let foo (x : int) =" " match x with" " | Even -> 1 (*loc-61*)" " | Odd -> 0" " let patval = (|Even|Odd|) (*loc-61b*)" "let _ =" " op_Addition 2 2" "type Class () = (*loc-62*)" " member c.Method () = () (*loc-63*)" " static member Foo () = () (*loc-64*)" "let _ =" " let c = Class () (*loc-65*)" " c.Method () (*loc-66*)" " Class.Foo () (*loc-67*)" "type Class' () =" " member c.Method () = c.Method () (*loc-68*)" " member c.Method1 () = c.Method2 () (*loc-69*)" " member c.Method2 () = c.Method1 () (*loc-70*)" " member c.Method3 () =" " let c = Class ()" " c.Method () (*loc-71*)" "type Colors = Red = 1" " | White = 2" " | Blue = 3" "let _ = Colors.Red" "let _ =" " let x = 2" " \"x(*loc-72*)\"" "let _ =" " let x = 2" " \"this is a string" " x(*loc-73*)" " \"" "let _ =" " let rec ``let`` = (*loc-74*)" " function 0 -> 1" " | n -> n * ``let`` (n - 1) (*loc-75*)" "let id77 = 0" "type C =" " val id77 (*loc-77*) : int" ] this.SolutionGotoDefinitionTestWithLines lines startLoc exp member internal this.SolutionGotoDefinitionTestWithLines lines (startLoc : string)(exp : (string * string) option) : unit = // The test itself let (_, _, file) = this.CreateSingleFileProject(lines) let fnm = GetNameOfOpenFile file |> Path.GetFileName MoveCursorToStartOfMarker (file, startLoc) let res = GotoDefinitionAtCursor file |> this.GotoDefinitionFixupFilename match exp with | None -> this.GotoDefinitionCheckResultAgainst None file res | Some (endLoc, id) -> this.GotoDefinitionCheckResultAgainst (Some (id, endLoc, fnm)) file res /// exp = (, ) option member this.GotoDefinitionTestWithLib (startLoc : string)(exp : (string * string) option) : unit = let lines = [ "let _ = List.map (*loc-1*)" ] let (_, proj, file) = this.CreateSingleFileProject(lines) MoveCursorToStartOfMarker (file, startLoc) let res = GotoDefinitionAtCursor file this.GotoDefinitionCheckResultAgainstAnotherFile proj exp res member this.GotoDefinitionFixupFilename (x : GotoDefnResult) : GotoDefnResult = if x.Success then GotoDefnResult.MakeSuccess(Path.GetFileName x.Url, x.Span) else GotoDefnResult.MakeError(x.ErrorDescription) // the format of the comments for each test displays the desired behaviour, // where `$` and `#` indicate the initial and final cursor positions, // respectively; if the two are the same then the `#` is omitted // the `loc-` comments in the source used for the tests are to // ensure that we've found the correct position (i.e., these must be unique // in any given test source file) [] member this.``GotoDefinition.InheritedMembers``() = let lines = [ "[]" "type Foo() =" " abstract Method : unit -> unit" " abstract Property : int" "type Bar() =" " inherit Foo()" " override this.Method () = ()" " override this.Property = 1" "let b = Bar()" "b.Method(*loc-1*)()" "b.Property(*loc-2*)" ] this.SolutionGotoDefinitionTestWithLines lines "Method(*loc-1*)" (Some("override this.Method () = ()","this.Method")) this.SolutionGotoDefinitionTestWithLines lines "Property(*loc-2*)" (Some("override this.Property = 1","this.Property")) /// let #x = () in $x [] [] member public this.``GotoDefinition.InsideClass.Bug3176`` () = this.GotoDefinitionTestWithSimpleFile "id77 (*loc-77*)" (Some("val id77 (*loc-77*) : int", "id77")) /// let #x = () in $x [] member public this.``GotoDefinition.Simple.Binding.TrivialLetRHS`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-1*)" (Some("let x = () (*loc-2*)", "x")) /// let #x = () in x$ [] member public this.``GotoDefinition.Simple.Binding.TrivialLetRHSToRight`` () = this.GotoDefinitionTestWithSimpleFile " (*loc-1*)" (Some("let x = () (*loc-2*)", "x")) /// let $x = () in x [] member public this.``GotoDefinition.Simple.Binding.TrivialLetLHS`` () = this.GotoDefinitionTestWithSimpleFile "x = () (*loc-2*)" (Some("let x = () (*loc-2*)", "x")) /// let x = () in let #x = () in $x [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithSameNameRHS`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-4*)" (Some("let x = () (*loc-3*)", "x")) /// let x = () in let $x = () in x [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithSameNameLHSInner`` () = this.GotoDefinitionTestWithSimpleFile "x = () (*loc-3*)" (Some("let x = () (*loc-3*)", "x")) /// let $x = () in let x = () in x [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithSameNameLHSOuter`` () = this.GotoDefinitionTestWithSimpleFile "x = () (*loc-5*)" (Some("let x = () (*loc-5*)", "x")) /// let #x = () in let x = $x in () [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithXIsX`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-6*)" (Some("let x = () (*loc-7*)", "x")) /// let x = () in let rec #x = fun y -> $x y in () [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithXRec`` () = this.GotoDefinitionTestWithSimpleFile "x y (*loc-8*)" (Some("let rec x = (*loc-9*)", "x")) /// let x = () in let rec x = fun #y -> x $y in () [] member public this.``GotoDefinition.Simple.Binding.NestedLetWithXRecParam`` () = this.GotoDefinitionTestWithSimpleFile "y (*loc-8*)" (Some("fun y -> (*loc-10*)", "y")) /// let #(+) x _ = x in 2 $+ 3 [] [] member public this.``GotoDefinition.Simple.Binding.Operator`` () = this.GotoDefinitionTestWithSimpleFile "+ 3 (*loc-11*)" (Some("let (+) x _ = x (*loc-2*)", "+")) /// type #Zero = /// let f (_ : $Zero) = 0 [] member public this.``GotoDefinition.Simple.Datatype.NullType`` () = this.GotoDefinitionTestWithSimpleFile "Zero) : 'a = failwith \"hi\" (*loc-14*)" (Some("type Zero = (*loc-13*)", "Zero")) /// type One = $One [] member public this.``GotoDefinition.Simple.Datatype.UnitTypeConsDef`` () = this.GotoDefinitionTestWithSimpleFile "One (*loc-15*)" (Some("One (*loc-15*)", "One")) /// type $One = One [] member public this.``GotoDefinition.Simple.Datatype.UnitTypeTypenameDef`` () = this.GotoDefinitionTestWithSimpleFile "One = (*loc-16*)" (Some("type One = (*loc-16*)", "One")) /// type One = #One /// let f (_ : One) = $One [] member public this.``GotoDefinition.Simple.Datatype.UnitTypeCons`` () = this.GotoDefinitionTestWithSimpleFile "One (*loc-18*)" (Some("One (*loc-15*)", "One")) /// type #One = One /// let f (_ : $One) = One [] member public this.``GotoDefinition.Simple.Datatype.UnitTypeTypename`` () = this.GotoDefinitionTestWithSimpleFile "One) = (*loc-17*)" (Some("type One = (*loc-16*)", "One")) /// type $Nat = Suc of Nat | Zro [] member public this.``GotoDefinition.Simple.Datatype.NatTypeTypenameDef`` () = this.GotoDefinitionTestWithSimpleFile "Nat = (*loc-19*)" (Some("type Nat = (*loc-19*)", "Nat")) /// type #Nat = Suc of $Nat | Zro [] member public this.``GotoDefinition.Simple.Datatype.NatTypeConsArg`` () = this.GotoDefinitionTestWithSimpleFile "Nat (*loc-20*)" (Some("type Nat = (*loc-19*)", "Nat")) /// type Nat = Suc of Nat | #Zro /// fun m -> match m with | $Zro -> () | _ -> () [] member public this.``GotoDefinition.Simple.Datatype.NatPatZro`` () = this.GotoDefinitionTestWithSimpleFile "Zro -> (*loc-24*)" (Some("| Zro (*loc-21*)", "Zro")) /// type Nat = $Suc of Nat | Zro /// fun m -> match m with | Zro -> () | $Suc _ -> () [] member public this.``GotoDefinition.Simple.Datatype.NatPatSuc`` () = this.GotoDefinitionTestWithSimpleFile "Suc m -> (*loc-25*)" (Some("| Suc of Nat (*loc-20*)", "Suc")) /// let rec plus m n = match m with | Zro -> n | Suc #m -> Suc (plus $m n) [] member public this.``GotoDefinition.Simple.Datatype.NatPatSucVarUse`` () = this.GotoDefinitionTestWithSimpleFile "m n) (*loc-26*)" (Some("| Suc m -> (*loc-25*)", "m")) /// let rec plus m n = match m with | Zro -> n | Suc #m -> Suc (plus $m n) [] member public this.``GotoDefinition.Simple.Datatype.NatPatSucOuterVarUse`` () = this.GotoDefinitionTestWithSimpleFile "n) (*loc-26*)" (Some("let rec plus m n = (*loc-23*)", "n")) /// type $MyRec = { myX : int ; myY : int } [] member public this.``GotoDefinition.Simple.Datatype.RecordTypenameDef`` () = this.GotoDefinitionTestWithSimpleFile "MyRec = (*loc-27*)" (Some("type MyRec = (*loc-27*)", "MyRec")) /// type MyRec = { $myX : int ; myY : int } [] member public this.``GotoDefinition.Simple.Datatype.RecordField1Def`` () = this.GotoDefinitionTestWithSimpleFile "myX : int (*loc-28*)" (Some("{ myX : int (*loc-28*)", "myX")) /// type MyRec = { myX : int ; $myY : int } [] member public this.``GotoDefinition.Simple.Datatype.RecordField2Def`` () = this.GotoDefinitionTestWithSimpleFile "myY : int (*loc-29*)" (Some("myY : int (*loc-29*)", "myY")) /// type MyRec = { #myX : int ; myY : int } /// let rDefault = { $myX = 2 ; myY = 3 } [] member public this.``GotoDefinition.Simple.Datatype.RecordField1Use`` () = this.GotoDefinitionTestWithSimpleFile "myX = 2 (*loc-30*)" (Some("{ myX : int (*loc-28*)", "myX")) /// type MyRec = { myX : int ; #myY : int } /// let rDefault = { myX = 2 ; $myY = 3 } [] member public this.``GotoDefinition.Simple.Datatype.RecordField2Use`` () = this.GotoDefinitionTestWithSimpleFile "myY = 3 (*loc-31*)" (Some("myY : int (*loc-29*)", "myY")) /// type MyRec = { #myX : int ; myY : int } /// let rDefault = { myX = 2 ; myY = 3 } /// let _ = { rDefault with $myX = 7 } [] member public this.``GotoDefinition.Simple.Datatype.RecordField1UseInWith`` () = this.GotoDefinitionTestWithSimpleFile "myX = 7 } (*loc-32*)" (Some("{ myX : int (*loc-28*)", "myX")) /// let a = () in let id (x : '$a) : 'a = x [] member public this.``GotoDefinition.Simple.Polymorph.Leftmost`` () = this.GotoDefinitionTestWithSimpleFile "a) (*loc-33*)" None /// let a = () in let id (x : 'a) : '$a = x [] member public this.``GotoDefinition.Simple.Polymorph.NotLeftmost`` () = this.GotoDefinitionTestWithSimpleFile "a = x (*loc-34*)" None /// let foo = () in let f (_ as $foo) = foo in () [] member public this.``GotoDefinition.Simple.Tricky.AsPatLHS`` () = this.GotoDefinitionTestWithSimpleFile "foo) = (*loc-35*)" (Some("let f (_ as foo) = (*loc-35*)", "foo")) /// let foo = () in let f (_ as #foo) = $foo in () [] member public this.``GotoDefinition.Simple.Tricky.AsPatRHS`` () = this.GotoDefinitionTestWithSimpleFile "foo (*loc-36*)" (Some("let f (_ as foo) = (*loc-35*)", "foo")) /// fun $x x -> x [] member public this.``GotoDefinition.Simple.Tricky.LambdaMultBind1`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-37*)" (Some("fun x (*loc-37*)", "x")) /// fun x $x -> x [] member public this.``GotoDefinition.Simple.Tricky.LambdaMultBind2`` () = this.GotoDefinitionTestWithSimpleFile "x -> (*loc-38*)" (Some("x -> (*loc-38*)", "x")) /// fun x $x -> x [] member public this.``GotoDefinition.Simple.Tricky.LambdaMultBindBody`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-39*)" (Some("x -> (*loc-38*)", "x")) /// let f = () in let $f = function f -> f in () [] member public this.``GotoDefinition.Simple.Tricky.LotsOfFsFunc`` () = this.GotoDefinitionTestWithSimpleFile "f = (*loc-41*)" (Some("let f = (*loc-41*)", "f")) /// let f = () in let f = function $f -> f in () [] member public this.``GotoDefinition.Simple.Tricky.LotsOfFsPat`` () = this.GotoDefinitionTestWithSimpleFile "f -> (*loc-42*)" (Some("function f -> (*loc-42*)", "f")) /// let f = () in let f = function #f -> $f in () [] member public this.``GotoDefinition.Simple.Tricky.LotsOfFsUse`` () = this.GotoDefinitionTestWithSimpleFile "f (*loc-43*)" (Some("function f -> (*loc-42*)", "f")) /// let f x = match x with | Suc $x | x -> x [] member public this.``GotoDefinition.Simple.Tricky.OrPatLeft`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-44*)" (Some("| Suc x (*loc-44*)", "x")) /// let f x = match x with | Suc x | $x -> x [] member public this.``GotoDefinition.Simple.Tricky.OrPatRight`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-45*)" (Some("| Suc x (*loc-44*)", "x")) // NOTE: or-patterns bind at first occurrence of the variable /// let f x = match x with | Suc #y & z -> $y [] member public this.``GotoDefinition.Simple.Tricky.AndPat`` () = this.GotoDefinitionTestWithSimpleFile "y (*loc-46*)" (Some("| Suc y & z -> (*loc-47*)", "y")) /// let f xs = match xs with | #x :: xs -> $x [] member public this.``GotoDefinition.Simple.Tricky.ConsPat`` () = this.GotoDefinitionTestWithSimpleFile "x (*loc-48*)" (Some("| x :: xs -> (*loc-49*)", "x")) /// let f p = match p with (#y, z) -> $y [] member public this.``GotoDefinition.Simple.Tricky.PairPat`` () = this.GotoDefinitionTestWithSimpleFile "y (*loc-50*)" (Some("| (y : int, z) -> (*loc-51*)", "y")) /// fun xs -> match xs with x :: #xs when $xs <> [] -> x :: xs [] member public this.``GotoDefinition.Simple.Tricky.ConsPatWhenClauseInWhen`` () = this.GotoDefinitionTestWithSimpleFile "xs <> [] -> (*loc-52*)" (Some("| x :: xs (*loc-54*)", "xs")) /// fun xs -> match xs with #x :: xs when xs <> [] -> $x :: xs [] member public this.``GotoDefinition.Simple.Tricky.ConsPatWhenClauseInWhenRhsX`` () = this.GotoDefinitionTestWithSimpleFile "x :: xs (*loc-53*)" (Some("| x :: xs (*loc-54*)", "x")) /// fun xs -> match xs with x :: #xs when xs <> [] -> x :: $xs [] member public this.``GotoDefinition.Simple.Tricky.ConsPatWhenClauseInWhenRhsXs`` () = this.GotoDefinitionTestWithSimpleFile "xs (*loc-53*)" (Some("| x :: xs (*loc-54*)", "xs")) /// let x = "$x" [] member public this.``GotoDefinition.Simple.Tricky.InStringFails`` () = this.GotoDefinitionTestWithSimpleFile "x(*loc-72*)" None /// let x = "hello /// $x /// " [] member public this.``GotoDefinition.Simple.Tricky.InMultiLineStringFails`` () = this.GotoDefinitionTestWithSimpleFile "x(*loc-73*)" None [] member public this.``GotoDefinition.Simple.Tricky.QuotedKeyword`` () = this.GotoDefinitionTestWithSimpleFile "let`` = (*loc-74*)" (Some("let rec ``let`` = (*loc-74*)", "``let``")) /// module $Too = let foo = () [] member public this.``GotoDefinition.Simple.Module.DefModname`` () = this.GotoDefinitionTestWithSimpleFile "Too = (*loc-55*)" (Some("module Too = (*loc-55*)", "Too")) /// module Too = $foo = () [] member public this.``GotoDefinition.Simple.Module.DefMember`` () = this.GotoDefinitionTestWithSimpleFile "foo = 0 (*loc-56*)" (Some("let foo = 0 (*loc-56*)", "foo")) /// module #Too = foo = () /// module Bar = open $Too [] member public this.``GotoDefinition.Simple.Module.Open`` () = this.GotoDefinitionTestWithSimpleFile "Too (*loc-57*)" (Some("module Too = (*loc-55*)", "Too")) /// module #Too = foo = () /// $Too.foo [] member public this.``GotoDefinition.Simple.Module.QualifiedModule`` () = this.GotoDefinitionTestWithSimpleFile "Too.foo (*loc-58*)" (Some("module Too = (*loc-55*)", "Too")) /// module Too = #foo = () /// Too.$foo [] member public this.``GotoDefinition.Simple.Module.QualifiedMember`` () = this.GotoDefinitionTestWithSimpleFile "foo (*loc-58*)" (Some("let foo = 0 (*loc-56*)", "foo")) /// type Parity = Even | Odd /// let (|$Even|Odd|) x = if x % 0 = 0 then Even else Odd [] member public this.``GotoDefinition.Simple.ActivePat.ConsDefLHS`` () = this.GotoDefinitionTestWithSimpleFile "Even|Odd|) x = (*loc-59*)" (Some("let (|Even|Odd|) x = (*loc-59*)", "|Even|Odd|")) /// type Parity = Even | Odd /// let (|#Even|Odd|) x = if x % 0 = 0 then $Even else Odd [] member public this.``GotoDefinition.Simple.ActivePat.ConsDefRhs`` () = this.GotoDefinitionTestWithSimpleFile "Even (*loc-60*)" (Some("let (|Even|Odd|) x = (*loc-59*)", "|Even|Odd|")) /// type Parity = Even | Odd /// let (|#Even|Odd|) x = if x % 0 = 0 then Even else Odd /// let foo x = /// match x with /// | $Even -> 1 /// | Odd -> 0 [] member public this.``GotoDefinition.Simple.ActivePat.PatUse`` () = this.GotoDefinitionTestWithSimpleFile "Even -> 1 (*loc-61*)" (Some("let (|Even|Odd|) x = (*loc-59*)", "|Even|Odd|")) /// let patval = (|Even|Odd|) (*loc-61b*) [] member public this.``GotoDefinition.Simple.ActivePat.PatUseValue`` () = this.GotoDefinitionTestWithSimpleFile "en|Odd|) (*loc-61b*)" (Some("let (|Even|Odd|) x = (*loc-59*)", "|Even|Odd|")) [] [] member public this.``GotoDefinition.Library.InitialTest`` () = this.GotoDefinitionTestWithLib "map (*loc-1*)" (Some("map", "lis.fs")) // ********** Tests of OO Stuff ********** /// type #Class$ () = /// member c.Method () = () [] member public this.``GotoDefinition.ObjectOriented.ClassNameDef`` () = this.GotoDefinitionTestWithSimpleFile " () = (*loc-62*)" (Some("type Class () = (*loc-62*)", "Class")) /// type Class () = /// member c.#Method$ () = () [] member public this.``GotoDefinition.ObjectOriented.ILMethodDef`` () = this.GotoDefinitionTestWithSimpleFile " () = () (*loc-63*)" (Some("member c.Method () = () (*loc-63*)", "c.Method")) /// type Class () = /// member #c$.Method () = () [] member public this.``GotoDefinition.ObjectOriented.ThisDef`` () = this.GotoDefinitionTestWithSimpleFile ".Method () = () (*loc-63*)" (Some("member c.Method () = () (*loc-63*)", "c")) /// type Class () = /// static member #Foo$ () = () [] member public this.``GotoDefinition.ObjectOriented.StaticMethodDef`` () = this.GotoDefinitionTestWithSimpleFile " () = () (*loc-64*)" (Some("static member Foo () = () (*loc-64*)", "Foo")) /// type #Class () = /// member Method () = () /// let c = Class$ () [] member public this.``GotoDefinition.ObjectOriented.ConstructorUse`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-65*)" (Some("type Class () = (*loc-62*)", "Class")) /// type Class () = /// member #Method () = () /// let c = Class () /// c.Method$ () [] member public this.``GotoDefinition.ObjectOriented.MethodInvocation`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-66*)" (Some("member c.Method () = () (*loc-63*)", "c.Method")) /// type Class () = /// static member #Foo () = () /// Class.Foo$ () [] member public this.``GotoDefinition.ObjectOriented.StaticMethodInvocation`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-67*)" (Some("static member Foo () = () (*loc-64*)", "Foo")) /// type Class () = /// member c.Method# () = c.Method$ () [] member public this.``GotoDefinition.ObjectOriented.MethodSelfInvocation`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-68*)" (Some("member c.Method () = c.Method () (*loc-68*)", "c.Method")) /// type Class () = /// member c.Method1 () = c.Method2$ () /// member #c.Method2 () = c.Method1 () [] member public this.``GotoDefinition.ObjectOriented.MethodToMethodForward`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-69*)" (Some("member c.Method2 () = c.Method1 () (*loc-70*)", "c.Method2")) /// type Class () = /// member c.Method () = () /// type Class' () = /// member c.Method () = /// let #c = Class () /// c$.Method () [] member public this.``GotoDefinition.ObjectOriented.ShadowThis`` () = this.GotoDefinitionTestWithSimpleFile ".Method () (*loc-71*)" (Some("let c = Class ()", "c")) /// type Class () = /// member #c.Method () = () /// type Class' () = /// member c.Method () = /// let c = Class () /// c.Method$ () [] member public this.``GotoDefinition.ObjectOriented.ShadowThisMethodInvocation`` () = this.GotoDefinitionTestWithSimpleFile " () (*loc-71*)" (Some("member c.Method () = () (*loc-63*)", "c.Method")) [] member this.``GotoDefinition.ObjectOriented.StructConstructor`` () = let lines = [ "#light" "[]" "type Astruct =" " val a : int" " new(a) = { a = a }" "let a = Astruct(0)" ] let (_,_, file) = this.CreateSingleFileProject(lines) MoveCursorToStartOfMarker (file, "Astruct(0)") let res = GotoDefinitionAtCursor file |> fun x -> x.ToOption() |> Option.map (fun (res, _) -> res.iStartLine + 1, res.iStartIndex + 1) AssertEqual(Some(5, 3), res) // ********** GetCompleteIdentifierIsland tests ********** /// takes a string with a `$` representing the cursor position, gets the /// GotoDefinition identifier at that position and compares against expected /// result member this.GetCompleteIdTest tolerate (s : string)(exp : string option) : unit = let n = s.IndexOf '$' let s = s.Remove (n, 1) match (Microsoft.VisualStudio.FSharp.LanguageService.QuickParse.GetCompleteIdentifierIsland tolerate s n, exp) with | (Some (s1, _, _), Some s2) -> printfn "%s" "Received result, as expected." Assert.AreEqual (s1, s2) | (None, None) -> printfn "%s" "Received no result, as expected." | (Some _, None) -> Assert.Fail("Received result, but none was expected!") | (None, Some _) -> Assert.Fail("Expected result, but didn't receive one!") [] [] member public this.``GetCompleteIdTest.TrivialBefore`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let $ThisIsAnIdentifier = ()" (Some "ThisIsAnIdentifier") [] member public this.``GetCompleteIdTest.TrivialMiddle`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let This$IsAnIdentifier = ()" (Some "ThisIsAnIdentifier") [] member public this.``GetCompleteIdTest.TrivialEnd`` () = this.GetCompleteIdTest true "let ThisIsAnIdentifier$ = ()" (Some "ThisIsAnIdentifier") this.GetCompleteIdTest false "let ThisIsAnIdentifier$ = ()" None [] member public this.``GetCompleteIdTest.GetsUpToDot1`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let ThisIsAnIdentifier = Te$st.Moo.Foo.bar" (Some "Test") [] member public this.``GetCompleteIdTest.GetsUpToDot2`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let ThisIsAnIdentifier = Test.Mo$o.Foo.bar" (Some "Test.Moo") [] member public this.``GetCompleteIdTest.GetsUpToDot3`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let ThisIsAnIdentifier = Test.Moo.Fo$o.bar" (Some "Test.Moo.Foo") [] member public this.``GetCompleteIdTest.GetsUpToDot4`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let ThisIsAnIdentifier = Test.Moo.Foo.ba$r" (Some "Test.Moo.Foo.bar") [] member public this.``GetCompleteIdTest.GetsUpToDot5`` () = this.GetCompleteIdTest true "let ThisIsAnIdentifier = Test.Moo.Foo.bar$" (Some "Test.Moo.Foo.bar") this.GetCompleteIdTest false "let ThisIsAnIdentifier = Test.Moo.Foo.bar$" None [] member public this.``GetCompleteIdTest.GetOperator`` () = for tolerate in [true;false] do this.GetCompleteIdTest tolerate "let ThisIsAnIdentifier = 3 +$ 4" None [] member public this.``Identifier.IsConstructor.Bug2516``() = let fileContents = """ module GotoDefinition type One(*Mark1*) = One let f (x : One(*Mark2*)) = 2""" let definitionCode = "type One(*Mark1*) = One" this.VerifyGoToDefnSuccessAtStartOfMarker(fileContents,"(*Mark1*)",definitionCode) [] member public this.``Identifier.IsTypeName.Bug2516``() = let fileContents = """ module GotoDefinition type One(*Mark1*) = One let f (x : One(*Mark2*)) = 2""" let definitionCode = "type One(*Mark1*) = One" this.VerifyGoToDefnSuccessAtStartOfMarker(fileContents,"(*Mark2*)",definitionCode) [] member public this.``ModuleName.OnDefinitionSite.Bug2517``() = let fileContents = """ namespace GotoDefinition module Foo(*Mark*) = let x = ()""" let definitionCode = "module Foo(*Mark*) =" this.VerifyGoToDefnSuccessAtStartOfMarker(fileContents,"(*Mark*)",definitionCode) [] /// GotoDef on abbreviation member public this.``GotoDefinition.Abbreviation.Bug193064``() = let fileContents = """ type X = int let f (x:X) = x(*Marker*) """ let definitionCode = "let f (x:X) = x(*Marker*)" this.VerifyGoToDefnSuccessAtStartOfMarker(fileContents,"x(*Marker*)",definitionCode) [] /// Verify the GotoDefinition on UoM yield does NOT jump out error dialog, /// will do nothing in automation lab machine or GTD SI.fs on dev machine with enlistment. member public this.``GotoDefinition.UnitOfMeasure.Bug193064``() = let fileContents = """ open Microsoft.FSharp.Data.UnitSystems.SI UnitSymbols.A(*Marker*)""" this.VerifyGoToDefnNoErrorDialogAtStartOfMarker(fileContents,"A(*Marker*)", "type A = ampere") // Allow languageService tests to run under different contextes namespace UnitTests.Tests.LanguageService.GotoDefinition open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit GotoDefinitionTests new() = { inherit GotoDefinitionTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit GotoDefinitionTests new() = { inherit GotoDefinitionTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.General.fs0000775000175000017500000006424712260314606024277 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open NUnit.Framework open System open System.Reflection open System.Runtime.InteropServices open Microsoft.VisualStudio.FSharp.LanguageService open Microsoft.FSharp.Compiler.SourceCodeServices open Salsa.Salsa open Salsa [] type IdealSource() = [] member public rb.MultipleSourceIsDirtyCallsChangeTimestamps() = let recolorizeWholeFile() = () let recolorizeLine (_line:int) = () let isClosed() = false let source =Source.CreateDelegatingSource(recolorizeWholeFile, recolorizeLine, "dummy.fs", isClosed, VsMocks.VsFileChangeEx()) let originalChangeCount = source.ChangeCount let originalDirtyTime = source.DirtyTime source.RecordChangeToView() let secondChangeCount = source.ChangeCount let secondDirtyTime = source.DirtyTime let lastTickCount = System.Environment.TickCount Assert.AreEqual(originalChangeCount + 1, secondChangeCount) Assert.AreNotEqual(secondDirtyTime, originalDirtyTime) // Here's the test. NeedsVisualRefresh is true now, we call RecordChangeToView() and it should cause a new changeCount and dirty time. while System.Environment.TickCount = lastTickCount do System.Threading.Thread.Sleep 10 // Sleep a little to avoid grabbing the same 'Now' source.RecordChangeToView() let thirdChangeCount = source.ChangeCount let thirdDirtyTime = source.DirtyTime Assert.AreEqual(secondChangeCount + 1, thirdChangeCount) Assert.AreNotEqual(thirdDirtyTime, secondDirtyTime) open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open Microsoft.FSharp.Compiler open UnitTests.TestLib.LanguageService type GeneralTests() = inherit LanguageServiceBaseTests() let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let publicTypesInAsm(asmfile : string) = printfn "Validating assembly '%s'" asmfile let codeBase = (new Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath |> Path.GetDirectoryName let asm = Assembly.LoadFrom(Path.Combine(codeBase, asmfile)) // For public types that have ComVisible, validate that the constructor is internal asm.GetTypes() |> Seq.fold(fun n t -> if t.IsPublic then if Array.length (t.GetCustomAttributes(typeof, false)) > 0 then t.GetConstructors() |> Seq.fold(fun m c -> if c.IsPublic then printfn " Public type (ComVisible, public Constructor),%s" t.FullName m + 1 else m ) n else printfn " Type: %s" t.FullName n + 1 else let CVAs = t.GetCustomAttributes(typeof, false) let CVAs = CVAs |> Array.map (fun o -> o :?> ComVisibleAttribute) for cva in CVAs do if cva.Value then Assert.Fail(sprintf "Type %s is internal, but also ComVisible(true)" t.FullName) let CIAs = t.GetCustomAttributes(typeof, false) let CIAs = CIAs |> Array.map (fun o -> o :?> ClassInterfaceAttribute) for cia in CIAs do if cia.Value <> ClassInterfaceType.None then Assert.Fail(sprintf "Type %s is internal, but also ClassInterface()" t.FullName) n ) 0 [] member public this.``PendingRequests``() = let makeRequest (reason : BackgroundRequestReason) = new BackgroundRequest(false, Reason = reason) let requests = Microsoft.VisualStudio.FSharp.LanguageService.PendingRequests() let verify r = let dequeued = requests.Dequeue() Assert.AreEqual(r, dequeued.Reason) // Ui1 + Ui2 = Ui2 // should have only last requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) requests.Enqueue(makeRequest BackgroundRequestReason.Goto) verify BackgroundRequestReason.Goto Assert.AreEqual(0, requests.Count) // n-Ui1 + Ui2 = Ui2 // should have only last requests.Enqueue(makeRequest BackgroundRequestReason.FullTypeCheck) requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) verify BackgroundRequestReason.MemberSelect Assert.AreEqual(0, requests.Count) // n-Ui1 + n-Ui2 = n-Ui2 requests.Enqueue(makeRequest BackgroundRequestReason.FullTypeCheck) requests.Enqueue(makeRequest BackgroundRequestReason.UntypedParse) verify BackgroundRequestReason.UntypedParse Assert.AreEqual(0, requests.Count) // Ui1 + n-Ui2 = Ui1 + n-Ui2 requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) requests.Enqueue(makeRequest BackgroundRequestReason.UntypedParse) verify BackgroundRequestReason.MemberSelect Assert.AreEqual(1, requests.Count) verify BackgroundRequestReason.UntypedParse Assert.AreEqual(0, requests.Count) // (Ui1 + n-Ui2) + Ui3 = Ui3 requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) requests.Enqueue(makeRequest BackgroundRequestReason.UntypedParse) requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) verify BackgroundRequestReason.MemberSelect Assert.AreEqual(0, requests.Count) // (Ui1 + n-Ui2) + n-Ui3 = Ui1 + n-Ui3 requests.Enqueue(makeRequest BackgroundRequestReason.MemberSelect) requests.Enqueue(makeRequest BackgroundRequestReason.UntypedParse) requests.Enqueue(makeRequest BackgroundRequestReason.FullTypeCheck) verify BackgroundRequestReason.MemberSelect Assert.AreEqual(1, requests.Count) verify BackgroundRequestReason.FullTypeCheck Assert.AreEqual(0, requests.Count) [] member public this.``PublicSurfaceArea.DotNetReflection``() = let ps = publicTypesInAsm @"fsharp.projectsystem.fsharp.dll" Assert.AreEqual(3, ps) // TPTOP(x2) stuff and BuildPropertyDescriptor let ls = publicTypesInAsm @"fsharp.languageservice.dll" Assert.AreEqual(0, ls) let comp = publicTypesInAsm @"fsharp.compiler.dll" Assert.AreEqual(0, comp) let compis = publicTypesInAsm @"FSharp.Compiler.Interactive.Settings.dll" Assert.AreEqual(5, compis) let compserver = publicTypesInAsm @"FSharp.Compiler.Server.Shared.dll" Assert.AreEqual(0, compserver) let lsbase = publicTypesInAsm @"FSharp.LanguageService.Base.dll" Assert.AreEqual(0, lsbase) let psbase = publicTypesInAsm @"FSharp.ProjectSystem.Base.dll" Assert.AreEqual(12, psbase) let fsi = publicTypesInAsm @"FSharp.VS.FSI.dll" Assert.AreEqual(1, fsi) [] member public this.``PublicSurfaceArea.DotNetReflectionAndTypeProviders``() = let tp = publicTypesInAsm @"FSharp.Data.TypeProviders.dll" Assert.AreEqual(1, tp) // the 'DataProviders' type that is decorated with [] must be public\ let curDir = (new Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath |> Path.GetDirectoryName let script = """ open Microsoft.FSharp.Core.CompilerServices let cfg = new TypeProviderConfig(fun _ -> true) cfg.IsInvalidationSupported <- false cfg.IsHostedExecution <- false cfg.ReferencedAssemblies <- Array.create 0 "" cfg.ResolutionFolder <- @"c:\" cfg.RuntimeAssembly <- "" cfg.TemporaryFolder <- "" let tp = new Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders(cfg) let ipn = tp :> IProvidedNamespace let itp = tp :> ITypeProvider let types = [ "ODataService" "WsdlService" "SqlDataConnection" "SqlEntityConnection" "DbmlFile" "EdmxFile" ] for p in types do printfn "%s" p let pType = ipn.ResolveTypeName(p) let odataStaticArgs = itp.GetStaticParameters(pType) for sa in odataStaticArgs do printfn " %s:%s" sa.Name sa.ParameterType.Name """ let expected = """ODataService ServiceUri:String LocalSchemaFile:String ForceUpdate:Boolean ResolutionFolder:String DataServiceCollection:Boolean WsdlService ServiceUri:String LocalSchemaFile:String ForceUpdate:Boolean ResolutionFolder:String MessageContract:Boolean EnableDataBinding:Boolean Serializable:Boolean Async:Boolean CollectionType:String SqlDataConnection ConnectionString:String ConnectionStringName:String LocalSchemaFile:String ForceUpdate:Boolean Pluralize:Boolean Views:Boolean Functions:Boolean ConfigFile:String DataDirectory:String ResolutionFolder:String StoredProcedures:Boolean Timeout:Int32 ContextTypeName:String Serializable:Boolean SqlEntityConnection ConnectionString:String ConnectionStringName:String LocalSchemaFile:String Provider:String EntityContainer:String ConfigFile:String DataDirectory:String ResolutionFolder:String ForceUpdate:Boolean Pluralize:Boolean SuppressForeignKeyProperties:Boolean DbmlFile File:String ResolutionFolder:String ContextTypeName:String Serializable:Boolean EdmxFile File:String ResolutionFolder:String """ File.WriteAllText(Path.Combine(curDir, "tmp.fsx"), script) let psi = System.Diagnostics.ProcessStartInfo("fsi.exe", "-r:FSharp.Data.TypeProviders.dll tmp.fsx") psi.WorkingDirectory <- curDir psi.RedirectStandardOutput <- true psi.UseShellExecute <- false let p = System.Diagnostics.Process.Start(psi) let out = p.StandardOutput.ReadToEnd() p.WaitForExit() let out = out.Replace("\r\n", "\n") let expected = expected.Replace("\r\n", "\n") Assert.AreEqual(expected, out) [] member public this.``ReconcileErrors.Test1``() = let (_solution, project, file) = this.CreateSingleFileProject(["erroneous"]) Build project |> ignore TakeCoffeeBreak(this.VS) // Error list is populated on idle () /// FEATURE: (Project System only) Adding a file outside the project directory creates a link [] [] member public this.``ProjectSystem.FilesOutsideProjectDirectoryBecomeLinkedFiles``() = use _guard = this.UsingNewVS() if OutOfConeFilesAreAddedAsLinks(this.VS) then let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromTextEx(project, @"..\LINK.FS", @"..\link.fs", BuildAction.Compile, ["#light" "type Bob() = " " let x = 1"]) let file1 = OpenFile(project, @"..\link.fs") Save(project) let projFileText = System.IO.File.ReadAllText(ProjectFile(project)) AssertMatchesRegex '<' @"\s*\s*link.fs" projFileText [] [] member public this.``Lexer.CommentsLexing.Bug1548``() = let scan = new FSharpScanner(fun source -> let filename = "test.fs" let defines = [ "COMPILED"; "EDITING" ] SourceTokenizer(defines,filename).CreateLineTokenizer(source)) let cm = Microsoft.VisualStudio.FSharp.LanguageService.TokenColor.Comment let kw = Microsoft.VisualStudio.FSharp.LanguageService.TokenColor.Keyword // This specifies the source code to test and a collection of tokens that // we want to find in the result (note: it doesn't have to contain every token, because // behavior for some of them is undefined - e.g. "(* "\"*)" - what is token here? let sources = [ "// some comment", [ (0, 1), cm; (2, 2), cm; (3, 6), cm; (7, 7), cm; (8, 14), cm ] "// (* hello // 12345\nlet", [ (6, 10), cm; (15, 19), cm; (0, 2), kw ] // checks 'hello', '12345' and keyword 'let' "//- test", [ (0, 2), cm; (4, 7), cm ] // checks whether '//-' isn't treated as an operator /// same thing for XML comments - these are treated in a different lexer branch "/// some comment", [ (0, 2), cm; (3, 3), cm; (4, 7), cm; (8, 8), cm; (9, 15), cm ] "/// (* hello // 12345\nmember", [ (7, 11), cm; (16, 20), cm; (0, 5), kw ] "///- test", [ (0, 3), cm; (5, 8), cm ] //// same thing for "////" - these are treated in a different lexer branch "//// some comment", [ (0, 3), cm; (4, 4), cm; (5, 8), cm; (9, 9), cm; (10, 16), cm ] "//// (* hello // 12345\nlet", [ (8, 12), cm; (17, 21), cm; (0, 2), kw ] "////- test", [ (0, 4), cm; (6, 9), cm ] "(* test 123 (* 456 nested *) comments *)", [ (3, 6), cm; (8, 10), cm; (15, 17), cm; (19, 24), cm; (29, 36), cm ] // checks 'test', '123', '456', 'nested', 'comments' "(* \"with 123 \\\" *)\" string *)", [ (4, 7), cm; (9, 11), cm; (20, 25), cm ] // checks 'with', '123', 'string' "(* @\"with 123 \"\" *)\" string *)", [ (5, 8), cm; (10, 12), cm; (21, 26), cm ] // checks 'with', '123', 'string' ] for lineText, expected in sources do scan.SetLineText lineText let currentTokenInfo = new Microsoft.VisualStudio.FSharp.LanguageService.TokenInfo() let lastColorState = 0 // First line of code, so no previous state currentTokenInfo.EndIndex <- -1 let refState = ref (ColorStateLookup.LexStateOfColorState lastColorState) // Lex the line and add all lexed tokens to a dictionary let lexed = new System.Collections.Generic.Dictionary<_, _>() while scan.ScanTokenAndProvideInfoAboutIt(1, currentTokenInfo, refState) do lexed.Add( (currentTokenInfo.StartIndex, currentTokenInfo.EndIndex), currentTokenInfo.Color ) // Verify that all tokens in the specified list occur in the lexed result for pos, clr in expected do let (succ, v) = lexed.TryGetValue(pos) let found = lexed |> Seq.map (fun kvp -> kvp.Key, kvp.Value) |> Seq.toList AssertEqualWithMessage(true, succ, sprintf "Cannot find token %A at %A in %A\nFound: %A" clr pos lineText found) AssertEqualWithMessage(clr, v, sprintf "Wrong color of token %A at %A in %A\nFound: %A" clr pos lineText found) // This was a bug in ReplaceAllText (subsequent calls to SetMarker would fail) [] member public this.``Salsa.ReplaceAllText``() = let code = ["#light"; "let x = \"A String Literal\""] let (_solution, _project, file) = this.CreateSingleFileProject(code) // Sanity check MoveCursorToStartOfMarker(file,"#light") AssertEqual(TokenType.PreprocessorKeyword, GetTokenTypeAtCursor(file)) MoveCursorToEndOfMarker(file,"let x = ") AssertEqual(TokenType.String, GetTokenTypeAtCursor(file)) // Replace file contents ReplaceFileInMemory file ["#light"; "let x = 42 // comment!"; "let y = \"A String Literal\""] // Verify able to move cursor and get correct results MoveCursorToEndOfMarker(file, "comment") AssertEqual(TokenType.Comment, GetTokenTypeAtCursor(file)) // Not a string, as was origionally MoveCursorToEndOfMarker(file, "let y = ") AssertEqual(TokenType.String, GetTokenTypeAtCursor(file)) // Able to find new marker MoveCursorToStartOfMarker(file, "let y = ") AssertEqual(TokenType.Keyword, GetTokenTypeAtCursor(file)) // Check MoveCursorToStartOfMarker // Make sure that possible overloads (and other related errors) are shown in the error list [] [] member public this.``ErrorLogging.Bug5144``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let fs1 = AddFileFromText(project,"File1.fs", ["namespace N" "module M = " " type LineChart() =" " member x.Plot(f : float->float, xmin:float, xmax:float) = ()" " member x.Plot(f : System.Func, xmin:float, xmax:float) = ()" ]) let fs2 = AddFileFromText(project,"File2.fs", ["let p = new N.M.LineChart()" "p.Plot(sin, 0., 0.)"]) let build = time1 Build project "Time to build project" Assert.IsTrue(not build.BuildSucceeded, "Expected build to fail") if SupportsOutputWindowPane(this.VS) then Helper.AssertListContainsInOrder(GetOutputWindowPaneLines(this.VS), ["error FS0041: A unique overload for method 'Plot' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: member N.M.LineChart.Plot : f:(float -> float) * xmin:float * xmax:float -> unit, member N.M.LineChart.Plot : f:System.Func * xmin:float * xmax:float -> unit"]) [] [] member public this.``ExhaustivelyScrutinize.ThisOnceAsserted``() = Helper.ExhaustivelyScrutinize( this.TestRunner, [ """let F() = """ """ if true then [], """ """ elif true then [],"" """ """ else [],"" """ ] ) [] [] member public this.``ExhaustivelyScrutinize.ThisOnceAssertedToo``() = Helper.ExhaustivelyScrutinize( this.TestRunner, [ "type C() = " " member this.F() = ()" " interface System.IComparable with " " member __.CompareTo(v:obj) = 1" ] ) [] [] member public this.``ExhaustivelyScrutinize.ThisOnceAssertedThree``() = Helper.ExhaustivelyScrutinize( this.TestRunner, [ "type Foo =" " { mutable Data: string }" " member x.XmlDocSig " " with get() = x.Data" " and set(v) = x.Data <- v" ] ) [] member public this.``ExhaustivelyScrutinize.ThisOnceAssertedFour``() = Helper.ExhaustivelyScrutinize( this.TestRunner, [ "let y=new" "let z=4" ] ) [] member public this.``ExhaustivelyScrutinize.ThisOnceAssertedFive``() = Helper.ExhaustivelyScrutinize(this.TestRunner, [ """CSV.File<@"File1.txt">.[0].""" ]) // <@ is one token, wanted < @"... [] [] member public this.``ExhaustivelyScrutinize.Bug2277``() = Helper.ExhaustivelyScrutinize( this.TestRunner, ["#light" "open Microsoft.FSharp.Plot.Excel" "open Microsoft.FSharp.Plot.Interactive" "let ps = [| (1.,\"c\"); (-2.,\"p\") |]" "plot (Bars(ps))" "let xs = [| 1.0 .. 20.0 |]" "let ys = [| 2.0 .. 21.0 |]" "let pp= plot(Area(xs,ys))" ] ) [] [] member public this.``ExhaustivelyScrutinize.Bug2283``() = Helper.ExhaustivelyScrutinize( this.TestRunner, ["#light" "#r \"NestedClasses.dll\"" // Scenario requires this assembly not exist. "//753 atomType -> atomType DOT path typeArgs" "let specificIdent (x : RootNamespace.ClassOfT.NestedClassOfU) = x" "let x = new RootNamespace.ClassOfT.NestedClassOfU()" "if specificIdent x <> x then exit 1" "exit 0"] ) /// Verifies that token info returns correct trigger classes /// - this is used in MPF for triggering various intellisense features [] member public this.``TokenInfo.TriggerClasses``() = let important = [ // Member select for dot completions Parser.DOT, (TokenColorKind.Operator,TokenCharKind.Delimiter,TriggerClass.MemberSelect) // for parameter info Parser.LPAREN, (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.ParamStart ||| TriggerClass.MatchBraces) Parser.COMMA, (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.ParamNext) Parser.RPAREN, (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.ParamEnd ||| TriggerClass.MatchBraces) ] let matching = [ // Other cases where we expect MatchBraces Parser.LQUOTE("", false); Parser.LBRACK; Parser.LBRACE; Parser.LBRACK_BAR; Parser.RQUOTE("", false); Parser.RBRACK; Parser.RBRACE; Parser.BAR_RBRACK ] |> List.map (fun n -> n, (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.MatchBraces)) for tok, expected in List.concat [ important; matching ] do let info = TestExpose.TokenInfo tok AssertEqual(expected, info) [] member public this.``MatchingBraces.VerifyMatches``() = let content = [| " let x = (1, 2)//1 let y = ( 3 + 1 ) * 2 let z = async { return 10 } let lst = [// list_start 1;2;3 ]//list_end let arr = [| 1 2 |] let quote = <@(* S0 *) 1 @>(* E0 *) let quoteWithNestedList = <@(* S1 *) ['x';'y';'z'](* E_L*) @>(* E1 *) [< System.Serializable() >] type T = class end " |] let (_solution, _project, file) = this.CreateSingleFileProject(String.concat Environment.NewLine content) let getPos marker = // fix 1-based positions to 0-based MoveCursorToStartOfMarker(file, marker) let (row, col) = GetCursorLocation(file) (row - 1), (col - 1) let setPos row col = // fix 0-based positions to 1-based MoveCursorTo(file, row + 1, col + 1) let checkBraces startMarker endMarker expectedSpanLen = let (startRow, startCol) = getPos startMarker let (endRow, endCol) = getPos endMarker let checkTextSpan (actual : TextSpan) expectedRow expectedCol = Assert.IsTrue(actual.iStartLine = actual.iEndLine, "Start and end of the span should be on the same line") Assert.AreEqual(expectedRow, actual.iStartLine, "Unexpected row") Assert.AreEqual(expectedCol, actual.iStartIndex, "Unexpected column") Assert.IsTrue(actual.iEndIndex = (actual.iStartIndex + expectedSpanLen), sprintf "Span should have length == %d" expectedSpanLen) let checkBracesForPosition row col = setPos row col let braces = GetMatchingBracesForPositionAtCursor(file) Assert.AreEqual(1, braces.Length, "One result expected") let (lbrace, rbrace) = braces.[0] checkTextSpan lbrace startRow startCol checkTextSpan rbrace endRow endCol checkBracesForPosition startRow startCol checkBracesForPosition endRow endCol checkBraces "(1" ")//1" 1 checkBraces "( " ") *" 1 checkBraces "{" "}" 1 checkBraces "[// list_start" "]//list_end" 1 checkBraces "[|" "|]" 2 checkBraces "<@(* S0 *)" "@>(* E0 *)" 2 checkBraces "<@(* S1 *)" "@>(* E1 *)" 2 checkBraces "['x'" "](* E_L*)" 1 checkBraces "[<" ">]" 2 //Allow the TimeStampTests run under different context namespace UnitTests.Tests.LanguageService.General open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit GeneralTests new() = { inherit GeneralTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit GeneralTests new() = { inherit GeneralTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.XmlDocComments.fs0000775000175000017500000000773412260314606022551 0ustar chrischrisnamespace UnitTests.Tests open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils [] type XmlDocComments() = inherit UnitTests.TestLib.LanguageService.LanguageServiceBaseTests(VsOpts = fst (Models.InstalledMSBuild())) // Work around an innocuous 'feature' with how QuickInfo is displayed, lines which // should have a "\r\n" just have a "\r" let trimnewlines (str : string) = str.Replace("\r", "").Replace("\n", "") member public this.AssertQuickInfoContainsAtStartOfMarker code marker expected = let (_solution, _project, file) = this.CreateSingleFileProject(code : string) MoveCursorToStartOfMarker(file, marker) let tooltip = GetQuickInfoAtCursor file printfn "%A" tooltip AssertContains(trimnewlines tooltip, trimnewlines expected) member private this.TestMalFormedXML(marker : string) = let fileContent1 = """ namespace XML module Doc = /// /// Adds two values. /// /// The first value to sum /// The second value to sum /// Subtract two values. /// let Subtract x y = x - y /// /// Multipy two values. /// /// The first value to sum /// The second value to sum let Multipy x y = x * y let foo = XML.Doc.Add(*Marker1*) let bar = Subtract(*Marker2*) 3 2 let baz = Multipy(*Marker3*) 2 3""" use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution, "FSLibrary") let project2 = CreateProject(solution, "FSClient") let file1 = AddFileFromTextBlob(project1,"File1.fs", fileContent1) AddProjectReference(project2,project1) Build(project1) |> fun result -> Assert.IsTrue(result.BuildSucceeded) let file2 = AddFileFromTextBlob(project2,"File2.fs", fileContent2) let file = OpenFile(project2, "File2.fs") MoveCursorToStartOfMarker(file, marker) GetQuickInfoAtCursor file [] [] member this.``MalFormedXML.FromXMLDoc``() = let expected = "XML comment" let tooltip = this.TestMalFormedXML("(*Marker1*)") printfn "%A" tooltip AssertContains(trimnewlines tooltip, trimnewlines expected) [] [] member this.``MalFormedXML.FromCurrentProject``() = let expected = "'summary'" let tooltip = this.TestMalFormedXML("(*Marker2*)") printfn "%A" tooltip AssertContains(trimnewlines tooltip, trimnewlines expected) [] [] member this.``MalFormedXML.NoXMLComment.Bug5858``() = let notexpected = "summary" let notexpected2 = "param name=" let tooltip = this.TestMalFormedXML("(*Marker3*)") printfn "%A" tooltip AssertNotContains(tooltip, notexpected) AssertNotContains(tooltip, notexpected2) [] [] member this.Test() = let fileContent = """ //local custom type value /// /// local custom value /// let customType(*Mark*) = new CustomType()""" this.AssertQuickInfoContainsAtStartOfMarker fileContent "(*Mark*)" "local custom value"fsharp-3.0.34/src/fsharp/unittests/Tests.Watson.fs0000775000175000017500000001570012260314606021120 0ustar chrischrisnamespace UnitTests.Tests (* Is NUNIT just disappearing when you run one of these tests? There are paths in the compiler that call Process.Exit, if we manage to hit one of these paths then the process (nunit-gui.exe) will be exited: Put a break point on: System.Environment.Exit(n) *) #nowarn "52" // The value has been copied to ensure the original is not mutated open NUnit.Framework open System open System.Text.RegularExpressions open System.Diagnostics open System.Collections.Generic open System.IO open System.Reflection type Check = static member public FscLevelException<'TException when 'TException :> exn>(simulationCode) = try try #if DEBUG Microsoft.FSharp.Compiler.Build.FullCompiler.showAssertForUnexpectedException := false #endif if (File.Exists("watson-test.fs")) then File.Delete("watson-test.fs") File.WriteAllText("watson-test.fs", "// Hello watson" ) let _code = Microsoft.FSharp.Compiler.CommandLineMain.main([| "--simulateException:"+simulationCode; "watson-test.fs"|]) () with | :? 'TException as e -> let msg = e.ToString(); if msg.Contains("ReportTime") || msg.Contains("TypecheckOneInput") then () else printfn "%s" msg Assert.Fail("The correct callstack was not reported to watson.") finally #if DEBUG Microsoft.FSharp.Compiler.Build.FullCompiler.showAssertForUnexpectedException := true #endif File.Delete("watson-test.fs") [] type Watson() = [] member public w.FscOutOfMemory() = Check.FscLevelException("fsc-oom") [] member public w.FscArgumentNull() = Check.FscLevelException("fsc-an") [] member public w.FscInvalidOperation() = Check.FscLevelException("fsc-invop") // As of .NET 4.0 some exception types cannot be caught. As a result, we cannot test this case. I did visually confirm a Watson report is sent, though. // [] // member public w.FscAccessViolation() = Check.FscLevelException("fsc-ac") [] member public w.FscArgumentOutOfRange() = Check.FscLevelException("fsc-aor") [] member public w.FscDivideByZero() = Check.FscLevelException("fsc-dv0") [] member public w.FscNotFiniteNumber() = Check.FscLevelException("fsc-nfn") [] member public w.FscOverflow() = Check.FscLevelException("fsc-oe") [] member public w.FscArrayTypeMismatch() = Check.FscLevelException("fsc-atmm") [] member public w.FscBadImageFormat() = Check.FscLevelException("fsc-bif") [] member public w.FscKeyNotFound() = Check.FscLevelException("fsc-knf") [] member public w.FscIndexOutOfRange() = Check.FscLevelException("fsc-ior") [] member public w.FscInvalidCast() = Check.FscLevelException("fsc-ic") [] member public w.FscInvalidProgram() = Check.FscLevelException("fsc-ip") [] member public w.FscMemberAccess() = Check.FscLevelException("fsc-ma") [] member public w.FscNotImplemented() = Check.FscLevelException("fsc-ni") [] member public w.FscNullReference() = Check.FscLevelException("fsc-nr") [] member public w.FscOperationCancelled() = Check.FscLevelException("fsc-oc") //[] //member public w.FscFailure() = Check.FscLevelException("fsc-fail") [] member public w.TypeCheckOutOfMemory() = Check.FscLevelException("tc-oom") [] member public w.TypeCheckArgumentNull() = Check.FscLevelException("tc-an") [] member public w.TypeCheckInvalidOperation() = Check.FscLevelException("tc-invop") // As of .NET 4.0 some exception types cannot be caught. As a result, we cannot test this case. I did visually confirm a Watson report is sent, though. // [] // member public w.TypeCheckAccessViolation() = Check.FscLevelException("tc-ac") [] member public w.TypeCheckArgumentOutOfRange() = Check.FscLevelException("tc-aor") [] member public w.TypeCheckDivideByZero() = Check.FscLevelException("tc-dv0") [] member public w.TypeCheckNotFiniteNumber() = Check.FscLevelException("tc-nfn") [] member public w.TypeCheckOverflow() = Check.FscLevelException("tc-oe") [] member public w.TypeCheckArrayTypeMismatch() = Check.FscLevelException("tc-atmm") [] member public w.TypeCheckBadImageFormat() = Check.FscLevelException("tc-bif") [] member public w.TypeCheckKeyNotFound() = Check.FscLevelException("tc-knf") [] member public w.TypeCheckIndexOutOfRange() = Check.FscLevelException("tc-ior") [] member public w.TypeCheckInvalidCast() = Check.FscLevelException("tc-ic") [] member public w.TypeCheckInvalidProgram() = Check.FscLevelException("tc-ip") [] member public w.TypeCheckMemberAccess() = Check.FscLevelException("tc-ma") [] member public w.TypeCheckNotImplemented() = Check.FscLevelException("tc-ni") [] member public w.TypeCheckNullReference() = Check.FscLevelException("tc-nr") [] member public w.TypeCheckOperationCancelled() = Check.FscLevelException("tc-oc") [] member public w.TypeCheckFailure() = Check.FscLevelException("tc-fail") fsharp-3.0.34/src/fsharp/unittests/TestLib.Salsa.fs0000775000175000017500000001367412260314606021164 0ustar chrischrismodule UnitTests.TestLib.Salsa open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open System.Text.RegularExpressions // Common asserts ------------------------------------------------------------- let AssertEqualWithMessage(expected, actual, message) = if expected <> actual then printf "%s" message Assert.Fail(message) let AssertEqual(expected,actual) = if expected<>actual then let message = sprintf "Expected:\n%A\n\nbut got:\n%A." expected actual printf "%s" message Assert.Fail(message) let AssertContainsInOrder(s:string,cs:string list) = let rec containsInOrderFrom fromIndex expects = match expects with | [] -> () | expect :: expects -> let index = s.IndexOf((expect:string),(fromIndex:int)) if index = -1 then Assert.Fail(sprintf "Expected:\n%s\n\nto contain:\n%s\n\nafter index: %d." s expect fromIndex) else printfn "At index %d seen '%s'." index expect containsInOrderFrom index expects containsInOrderFrom 0 cs let AssertContains(s:string,c) = if not (s.Contains(c)) then printf "Expected:\n%s\n\nto contain:\n%s" s c Assert.Fail() let AssertArrayContainsPartialMatchOf(a:string array,c) = let found = ref false a |> Array.iter(fun s -> found := s.Contains(c) || !found) if not(!found) then printfn "Expected:\n%A" a printfn "to contain\n%s" c Assert.Fail() let AssertNotContains(s:string,c) = if (s.Contains(c)) then printf "Expected:\n%s\n\nnot to not contain:\n%s." s c Assert.Fail() let AssertMatches (r : Regex) (s:string) = if not (r.IsMatch(s)) then printfn "Expected regex '%s' to match '%s'." (r.ToString()) s Assert.Fail() // Like AssertMatches, but runs for every prefix of regex up to each occurence of 'c' // Is helpful so that, if long regex match fails, you see first prefix that fails let AssertMatchesRegex (c : char) (regexStr : string) (s:string) = let mutable i = regexStr.IndexOf(c, 0) while i <> -1 do let r = regexStr.Substring(0,i) let regex = new Regex(r) AssertMatches regex s i <- regexStr.IndexOf(c, i+1) // Common TestFixture methods ------------------------------------------------- open System.IO open UnitTests.TestLib.Utils // adds qualifier to the global functions // Non-controlled usage of these functions can easily lead to the violation of invariants in tests: // - modification of shared VS\solution is prohibited and the only permitted operation is CreateSingleFileProject // - modification of fresh VS instance is allowed, to denote that tests required fresh instance of VS add line 'use _guard - this.WithNewVS()' at the beginning of the test module internal GlobalFunctions = let CreateSolution(vs) = CreateSolution(vs) let CloseSolution(sol) = CloseSolution(sol) let Cleanup(vs) = Cleanup(vs) let AddAssemblyReference(proj, ref) = AddAssemblyReference(proj, ref) let AddAssemblyReferenceEx(proj, ref, v) = AddAssemblyReferenceEx(proj, ref, v) let SetProjectDefines(proj, d) = SetProjectDefines(proj, d) let CreateSingleFileProject(vs, content) = CreateSingleFileProject(vs, content) let CreateNamedSingleFileProject(vs, content) = CreateNamedSingleFileProject(vs, content) let AddDisabledWarning(proj, warning) = AddDisabledWarning(proj, warning) // hides existing global functions - so they can be accessed only from GlobalFunctions [] module HiddenFunctions = /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.CreateSolution let CreateSolution() : unit = failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.CloseSolution let CloseSolution() : unit= failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.Cleanup let Cleanup() : unit= failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.AddAssemblyReference let AddAssemblyReference() : unit= failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.AddAssemblyReferenceEx let AddAssemblyReferenceEx() : unit= failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.SetProjectDefines let SetProjectDefines() : unit= failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.CreateSingleFileProject let CreateSingleFileProject() : unit = failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.CreateNamedSingleFileProject let CreateNamedSingleFileProject() : unit = failwith "Should not be called" /// this function should not be called from the global namespace /// if you really need it - use qualified form: GlobalFunctions.AddDisabledWarning let AddDisabledWarning() : unit = failwith "Should not be called" // Common type provider approval code let ApproveAllMockTypeProviders() = ClearAllTypeProviderApprovals() for file in System.IO.Directory.EnumerateFiles(System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\")) do AddTypeProviderApprovedForDevelopment(file) fsharp-3.0.34/src/fsharp/unittests/Tests.ProjectSystem.Configs.fs0000775000175000017500000002552112260314606024051 0ustar chrischrisnamespace UnitTests.Tests.ProjectSystem // System namespaces open System open System.Collections.Generic open System.IO open System.Text.RegularExpressions open System.Xml.Linq open NUnit.Framework // VS namespaces open Microsoft.VisualStudio.Shell.Interop open Microsoft.VisualStudio.FSharp.ProjectSystem // Internal unittest namespaces open Salsa open UnitTests.TestLib.Utils.Asserts open UnitTests.TestLib.Utils.FilesystemHelpers open UnitTests.TestLib.ProjectSystem [] type Config() = inherit TheTests() ///////////////////////////////// // project helpers static let SaveProject(project : UnitTestingFSharpProjectNode) = project.Save(null, 1, 0u) |> ignore [] member this.TargetPlatform () = this.MakeProjectAndDoWithProjectFileAndConfigChangeNotifier(["foo.fs"], [], this.MSBuildProjectMulitplatBoilerplate "Library", (fun project ccn projFileName -> ccn((project :> IVsHierarchy), "Debug|x86") project.ComputeSourcesAndFlags() let flags = project.GetCompileFlags() |> List.ofArray Assert.IsTrue(List.exists (fun s -> s = "--platform:x86") flags) () )) [] member this.``Configs.EnsureAtLeastOneConfiguration`` () = this.HelperEnsureAtLeastOne @"" [|"Debug"|] // the goal of the test - when no configs, "Debug" should magically appear [|"x86"|] [] member this.``Configs.EnsureAtLeastOnePlatform`` () = this.HelperEnsureAtLeastOne @"" [|"Release"|] [|"Any CPU"|] // the goal of the test - when no platforms, "AnyCPU" should magically appear [] member this.``Configs.EnsureAtLeastOneConfigurationAndPlatform`` () = this.HelperEnsureAtLeastOne "" [|"Debug"|] // first goal of the test - when no configs, "Debug" should magically appear [|"Any CPU"|] // second goal of the test - when no platforms, "AnyCPU" should magically appear [] member this.``Configs.EnsureAtLeastOneConfiguration.Imported`` () = // Take advantage of the fact that we always create projects one directory below TempPath let tmpTargets = Path.Combine(Path.GetTempPath(), "foo.targets") try File.AppendAllText(tmpTargets, @" ") this.HelperEnsureAtLeastOne @"" [|"Debug"|] // the goal of the test - when no configs, "Debug" should magically appear [|"x86"|] finally File.Delete tmpTargets [] member this.``Configs.EnsureAtLeastOnePlatform.Imported`` () = // Take advantage of the fact that we always create projects one directory below TempPath // The unit test failed due to the previous test use the same target name "foo.targets". // The vs record the platform config "x86", so the next test failed for the unexpected platform. let tmpTargets = Path.Combine(Path.GetTempPath(), "foo2.targets") try File.AppendAllText(tmpTargets, @" ") this.HelperEnsureAtLeastOne @"" [|"Release"|] [|"Any CPU"|] // the goal of the test - when no platforms, "AnyCPU" should magically appear finally File.Delete tmpTargets [] member this.``Configs.Renaming`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""], (fun project projFileName -> this.CheckConfigNames(project, [|"Debug"; "Release"|]) project.ConfigProvider.RenameCfgsOfCfgName("Debug", "Buggy") |> AssertEqual VSConstants.S_OK this.CheckConfigNames(project, [|"Buggy";"Release"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiConfigBoilerplate ["Buggy",""; "Release",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.Deleting`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""], (fun project projFileName -> this.CheckConfigNames(project, [|"Debug";"Release"|]) project.ConfigProvider.DeleteCfgsOfCfgName("Debug") |> AssertEqual VSConstants.S_OK this.CheckConfigNames(project, [|"Release"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiConfigBoilerplate ["Release",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.Adding`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""], (fun project projFileName -> this.CheckConfigNames(project, [|"Debug";"Release"|]) project.ConfigProvider.AddCfgsOfCfgName("Buzz", "Debug", 0) |> AssertEqual VSConstants.S_OK this.CheckConfigNames(project, [|"Debug";"Release";"Buzz"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""; "Buzz",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.AddingBaseless`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""], (fun project projFileName -> this.CheckConfigNames(project, [|"Debug";"Release"|]) project.ConfigProvider.AddCfgsOfCfgName("Buzz", null, 0) |> AssertEqual VSConstants.S_OK this.CheckConfigNames(project, [|"Debug";"Release";"Buzz"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiConfigBoilerplate ["Debug",""; "Release",""; "Buzz",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.Platforms.Deleting`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiPlatform ["Any CPU",""; "x86",""], (fun project projFileName -> this.CheckPlatformNames(project, [|"Any CPU";"x86"|]) project.ConfigProvider.DeleteCfgsOfPlatformName("Any CPU") |> AssertEqual VSConstants.S_OK this.CheckPlatformNames(project, [|"x86"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiPlatform ["x86",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.Platforms.Adding`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiPlatform ["Any CPU",""; "x86",""], (fun project projFileName -> this.CheckPlatformNames(project, [|"Any CPU";"x86"|]) project.ConfigProvider.AddCfgsOfPlatformName("x64", "x86") |> AssertEqual VSConstants.S_OK this.CheckPlatformNames(project, [|"Any CPU";"x86";"x64"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiPlatform ["Any CPU",""; "x86",""; "x64",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) [] member this.``Configs.Platforms.AddingBaseless`` () = this.MakeProjectAndDoWithProjectFile(["foo.fs"], [], this.MSBuildProjectMultiPlatform ["Any CPU",""; "x86",""], (fun project projFileName -> this.CheckPlatformNames(project, [|"Any CPU";"x86"|]) project.ConfigProvider.AddCfgsOfPlatformName("x64", null) |> AssertEqual VSConstants.S_OK this.CheckPlatformNames(project, [|"Any CPU";"x86";"x64"|]) SaveProject(project) let fsprojFileText = File.ReadAllText(projFileName) let xDoc = XDocument.Load(new StringReader(fsprojFileText)) let expected = this.MSBuildProjectMultiPlatform ["Any CPU",""; "x86",""; "x64",""] let expectedXDoc = XDocument.Load(new StringReader(TheTests.SimpleFsprojText(["foo.fs"],[],expected))) TheTests.AssertSimilarXml(expectedXDoc.Root, xDoc.Root) )) fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.NavigationBar.fs0000775000175000017500000002271012260314606025433 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type NavigationBarTests() = inherit LanguageServiceBaseTests() (* Unit tests for collapse region & navigation bar ------------------------------------- *) member private this.TestNavigationBar (file : string list) findDecl expectedMembers = let (_, _, file) = this.CreateSingleFileProject(file) // Verify that the types&modules list contains 'findDecl' let navigation = GetNavigationContentAtCursor(file) AssertNavigationContains(navigation.TypesAndModules, findDecl) let idxDecl = navigation.TypesAndModules |> Array.findIndex (fun nav -> nav.Label = findDecl) let decl = navigation.TypesAndModules.[idxDecl] // Navigate to the definition and get the contents again MoveCursorTo(file, decl.Span.iStartLine + 1, decl.Span.iStartIndex) // line index is in the 0-based form let navigation = GetNavigationContentAtCursor(file) // Ensure that the right thing is selected in the dropdown AssertEqual(idxDecl, navigation.SelectedType) // Ensure that member list contains expected members AssertNavigationContainsAll(navigation.Members, expectedMembers) // Find member declaration, go to the location & test the identifier island for memb in expectedMembers do let decl = navigation.Members |> Array.find (fun nav -> nav.Label = memb) MoveCursorTo(file, decl.Span.iStartLine + 1, decl.Span.iStartIndex + 1) match GetIdentifierAtCursor file with | None -> Assert.Fail("No identifier at cursor!") | Some (id, _) -> if not (id.Contains(memb)) then Assert.Fail(sprintf "Found '%s' which isn't substring of the expected '%s'." id memb) member private this.TestHiddenRegions (file : list) regionMarkers = let (_, _, file) = this.CreateSingleFileProject(file) // Find locations of the regions based on markers provided let expectedLocations = [ for ms, me in regionMarkers do MoveCursorToEndOfMarker(file, ms) let sl, sc = GetCursorLocation(file) MoveCursorToStartOfMarker(file, me) let el, ec = GetCursorLocation(file) // -1 to adjust line to VS format // -1 to adjust columns (not quite sure why..) yield (sl-1, sc-1), (el-1, ec-1) ] // Test whether the regions are same and that no 'update' commands are created (no regions exist prior to this call) let toCreate, toUpdate = GetHiddenRegionCommands(file) if (toUpdate <> Map.empty<_,_>) then Assert.Fail("Hidden regions, first call. Didn't expect any regions to update.") AssertEqualWithMessage(expectedLocations.Length, toCreate.Length, "Different number of regions!") AssertRegionListContains(expectedLocations, toCreate) (* Files for testing and tests --------------------------------------------------------- *) static member NavigationFile1 = [ "#light" "module Example.Module" "" "module SomeModule = " " type Rec = (*1s*){" " RFirst : int " " RSecond : string }(*1e*)" "" " type Rec2 = " " (*2s*){ R2First : int " " R2Second : string " " }(*2e*)" "" " type Abbrev = (*3s*)Microsoft.FSharp.Collections.List(*3e*)" "" " type Enum = " "(*4s*)| Aaa = 0" " | Bbb = 3(*4e*)" "" " type EnumOneLine = (*5s*)| OUAaa = 0 | OUBbb = 3(*5e*)" ] [] member public this.``Regions.NavigationFile1``() = this.TestHiddenRegions NavigationBarTests.NavigationFile1 [ "(*1s*)", "(*1e*)" "(*2s*)", "(*2e*)" "(*3s*)", "(*3e*)" "(*4s*)", "(*4e*)" "(*5s*)", "(*5e*)" "SomeModule", "(*5e*)" (* entire module *) ] [] [] member public this.``Record1``() = this.TestNavigationBar NavigationBarTests.NavigationFile1 "SomeModule.Rec" ["RFirst"; "RSecond"] [] member public this.``Record2``() = this.TestNavigationBar NavigationBarTests.NavigationFile1 "SomeModule.Rec2" ["R2First"; "R2Second"] [] member public this.``Abbreviation``() = this.TestNavigationBar NavigationBarTests.NavigationFile1 "SomeModule.Abbrev" [] [] member public this.``Enum``() = this.TestNavigationBar NavigationBarTests.NavigationFile1 "SomeModule.Enum" [ "Aaa"; "Bbb" ] [] member public this.``Enum.OneLine``() = this.TestNavigationBar NavigationBarTests.NavigationFile1 "SomeModule.EnumOneLine" [ "OUAaa"; "OUBbb" ] static member NavigationFile2 = [ "#light" "module A = " "" " type RecWith = (*7s*){ " " WRFirst : int " " WRSecond : string } with" " member zz.RecMember(s:string) = " " printfn \"recdmember\"" " 3(*7e*)" "" "module B = " " type Union = " "(*8s*)| UFirst" " | USecond of int * string" " member x.A = 0(*8e*)" "" " type A() = " "(*9s*)let rec a = (fun () -> b)" " and b = a() + 1" " member xx.Prop = 10" " member x.Func() = ()" " interface System.IDisposable with" " member x.Dispose() = ()(*9e*)" "" " exception SomeCrash of (*10s*)int * string * list(*10e*)" " " " module MyList = (*11s*)Microsoft.FSharp.Collections.List(*11e*)" "" " module MoreNested = " " type MyEnum =" " (*12s*)| One = 1" " | Two = 2" " | Three = 3(*12e*)" " " " type AExt with // this isn't valid extension, but it's ok for the parser" "(*13s*)member x.Extension1() = 2" " member x.Extension2() = 2(*13e*) // TODO: this doesn't work correctly" " " " type Z() =" "(*14s*)let mutable cache = 0" " member x.Z : int = // type annotation can cause issues" " 0(*14e*)" "" " module (*15s*)FooBar = // collapsed immediately after the identifier" " let toplevel () = " " let nested = 10" " 0" " " " module (*16s*)NestedModule = " " let nestedThing () =" " 0(*16e*)" " " " module OtherNested =" " let aa () =" " 1(*15e*) " ] [] member public this.``Record.WithMembers``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "A.RecWith" ["WRFirst"; "WRSecond"; "RecMember" ] [] member public this.``Union.WithMembers``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.Union" ["UFirst"; "USecond"; "A"] [] member public this.``Class``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.A" ["Prop"; "Func"; "Dispose"] // perhaps IDisposable.Dispose [] member public this.``Exception``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.SomeCrash" [ ] [] member public this.``Module.Alias``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.MyList" [ ] [] member public this.``NestedEnum``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.MoreNested.MyEnum" [ "One"; "Two"; "Three" ] [] member public this.``Extension``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.AExt" [ "Extension1"; "Extension2" ] [] member public this.``Type.EndingWithProperty.WithTypeAnnotation``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.Z" [ "Z" ] [] member public this.``Module.Nested``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.FooBar" [ "toplevel" ] [] member public this.``Module.Nested.More``() = this.TestNavigationBar NavigationBarTests.NavigationFile2 "B.FooBar.NestedModule" [ "nestedThing" ] // Allow the NavigationBarTests run under different context namespace UnitTests.Tests.LanguageService.NavigationBar open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit NavigationBarTests new() = { inherit NavigationBarTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit NavigationBarTests new() = { inherit NavigationBarTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/TestLib.LanguageService.fs0000775000175000017500000006131612260314606023161 0ustar chrischrisnamespace UnitTests.TestLib.LanguageService open System open NUnit.Framework open System.Diagnostics open System.IO open Salsa.Salsa open Salsa.VsOpsUtils open Salsa.VsMocks open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open Microsoft.FSharp.Compiler open Internal.Utilities.Debug open System.Text.RegularExpressions open Microsoft.FSharp.Compiler.SourceCodeServices #nowarn "52" // The value has been copied to ensure the original is not mutated //open Internal.Utilities type internal TextSpan = Microsoft.VisualStudio.TextManager.Interop.TextSpan type internal SourceFileKind = FS | FSI | FSX type internal ISingleFileTestRunner = abstract CreateSingleFileProject : content : string * ?references : list * ?defines : list * ?fileKind : SourceFileKind * ?disabledWarnings : list * ?fileName : string -> (OpenSolution * OpenProject * OpenFile) abstract CreateSingleFileProject : content : list * ?references : list * ?defines : list * ?fileKind : SourceFileKind * ?disabledWarnings : list* ? fileName : string -> (OpenSolution * OpenProject * OpenFile) type internal Helper = static member TrimOutExtraMscorlibs (libList:list) = // There may be multiple copies of mscorlib referenced; but we're only allowed to use one. Pick the highest one. let allExceptMscorlib = libList |> List.filter (fun s -> not(s.Contains("mscorlib"))) let mscorlibs = libList |> List.filter (fun s -> s.Contains("mscorlib")) // contain e.g. "mscorlib, Version=4.0.0.0 ..." let bestMscorlib = mscorlibs |> List.sort |> List.rev |> List.head bestMscorlib :: allExceptMscorlib static member ExhaustivelyScrutinize (sftr : ISingleFileTestRunner, lines:string list) = let Impl kind = let (_solution, _project, file) = sftr.CreateSingleFileProject(lines, fileKind = kind) let Check line col = //printfn "line=%d col=%d" line col MoveCursorTo(file,line,col) let tooltip = GetQuickInfoAtCursor file let parameterInfo = GetParameterInfoAtCursor file let squiggle = GetSquiggleAtCursor file let tokenType = GetTokenTypeAtCursor file let ctrlspacecompletion = CtrlSpaceCompleteAtCursor file if col > 1 && lines.[line-1].[col-2] = '.' then // -2 because, -1 to get to 0-based coords, and -1 more because want to look one char left of cursor for the dot let autocompletion = AutoCompleteAtCursor file () () let lines = lines |> List.toArray let lineCount = lines.Length for line in 1..lineCount do let len = lines.[line-1].Length for col in 1..len do Check line col Impl SourceFileKind.FS Impl SourceFileKind.FSX static member AssertMemberDataTipContainsInOrder(sftr : ISingleFileTestRunner, code : list,marker,completionName,rhsContainsOrder) = let (_solution, project, file) = sftr.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) TakeCoffeeBreak(file.VS) (* why needed? *) MoveCursorToEndOfMarker(file,marker) let completions = AutoCompleteAtCursor file match completions |> Array.tryFind (fun (name, _, _, _) -> name = completionName) with | Some(_, _, descrFunc, _) -> let descr = descrFunc() AssertContainsInOrder(descr,rhsContainsOrder) | None -> Console.WriteLine("Could not find completion name '{0}'", completionName) for error in (GetErrors(project)) do printf "%s\n" (error.ToString()) Assert.Fail() (* Asserts ----------------------------------------------------------------------------- *) static member AssertEqualWithMessage(expected,actual,message) = if expected<>actual then printf "%s" message Assert.Fail(message) static member AssertEqual(expected,actual) = if expected<>actual then let message = sprintf "Expected %A but got %A." expected actual printf "%s" message Assert.Fail(message) static member AssertContains(s:string,c) = if not (s.Contains(c)) then printf "Expected '%s' to contain '%s'." s c Assert.Fail() static member AssertArrayContainsPartialMatchOf(a:string array,c) = let found = ref false a |> Array.iter(fun s -> found := s.Contains(c) || !found) if not(!found) then printfn "Expected: %A" a printfn "to contain '%s'." c Assert.Fail() static member AssertNotContains(s:string,c) = if (s.Contains(c)) then printf "Expected '%s' to not contain '%s'." s c Assert.Fail() static member AssertMatches (r : Regex) (s:string) = if not (r.IsMatch(s)) then printfn "Expected regex '%s' to match '%s'." (r.ToString()) s Assert.Fail() static member AssertContainsInOrder(s:string,cs:string list) = let rec containsInOrderFrom fromIndex expects = match expects with | [] -> () | expect :: expects -> let index = s.IndexOf((expect:string),(fromIndex:int)) if index = -1 then let s= sprintf "Expected '%s' to contain '%s' after index %d." s expect fromIndex Console.WriteLine(s) Assert.Fail(s) else printfn "At index %d seen '%s'." index expect containsInOrderFrom index expects containsInOrderFrom 0 cs static member AssertListContainsInOrder(s:string list,cs:string list) = let s : string array = Array.ofList s let s : string = String.Join("\n",s) AssertContainsInOrder(s,cs) // Like AssertMatches, but runs for every prefix of regex up to each occurence of 'c' // Is helpful so that, if long regex match fails, you see first prefix that fails static member AssertMatchesRegex (c : char) (regexStr : string) (s:string) = let mutable i = regexStr.IndexOf(c, 0) while i <> -1 do let r = regexStr.Substring(0,i) let regex = new Regex(r) AssertMatches regex s i <- regexStr.IndexOf(c, i+1) type internal GlobalParseAndTypeCheckCounter private(initialParseCount:int, initialTypeCheckCount:int, initialEventNum:int, vs) = static member StartNew(vs) = TakeCoffeeBreak(vs) let n = IncrementalFSharpBuild.GetCurrentIncrementalBuildEventNum() new GlobalParseAndTypeCheckCounter(InteractiveChecker.GlobalForegroundParseCountStatistic, InteractiveChecker.GlobalForegroundTypeCheckCountStatistic, n, vs) member private this.GetEvents() = TakeCoffeeBreak(vs) let n = IncrementalFSharpBuild.GetCurrentIncrementalBuildEventNum() IncrementalFSharpBuild.GetMostRecentIncrementalBuildEvents(n-initialEventNum) member private this.SawIBNuked() = this.GetEvents() |> List.exists (function | IncrementalFSharpBuild.IBENuked -> true | _ -> false) member private this.GetParsedFilesSet() = this.GetEvents() |> List.choose (function | IncrementalFSharpBuild.IBEParsed(file) -> Some(file) | _ -> None) |> set member private this.GetTypeCheckedFilesSet() = this.GetEvents() |> List.choose (function | IncrementalFSharpBuild.IBETypechecked(file) -> Some(file) | _ -> None) |> set member this.AssertExactly(expectedParses, expectedTypeChecks) = let actualParses = this.GetParsedFilesSet().Count let actualTypeChecks = this.GetTypeCheckedFilesSet().Count if (actualParses,actualTypeChecks) <> (expectedParses, expectedTypeChecks) then Assert.Fail(sprintf "Expected %d parses and %d typechecks, but got %d parses and %d typechecks." expectedParses expectedTypeChecks actualParses actualTypeChecks) member this.AssertExactly(expectedParses, expectedTypeChecks, expectedParsedFiles : list, expectedTypeCheckedFiles : list) = this.AssertExactly(expectedParses, expectedTypeChecks, expectedParsedFiles |> List.map GetNameOfOpenFile, expectedTypeCheckedFiles |> List.map GetNameOfOpenFile, false) member this.AssertExactly((aap,expectedParsedFiles) : string option * list, (aat,expectedTypeCheckedFiles) : string option * list) = this.AssertExactly((aap,expectedParsedFiles), (aat,expectedTypeCheckedFiles), false) member this.AssertExactly((aap,expectedParsedFiles) : string option * list, (aat,expectedTypeCheckedFiles) : string option * list, expectNuke : bool) = let p = match aap with | Some(aap) -> aap :: (expectedParsedFiles |> List.map GetNameOfOpenFile) | _ -> (expectedParsedFiles |> List.map GetNameOfOpenFile) let t = match aat with | Some(aat) -> aat :: (expectedTypeCheckedFiles |> List.map GetNameOfOpenFile) | _ -> (expectedTypeCheckedFiles |> List.map GetNameOfOpenFile) this.AssertExactly(p.Length, t.Length, p, t, expectNuke) member private this.AssertExactly(expectedParses, expectedTypeChecks, expectedParsedFiles : list, expectedTypeCheckedFiles : list, expectNuke : bool) = let note,ok = if expectNuke then if this.SawIBNuked() then ("The incremental builder was nuked, as expected",true) else ("The incremental builder was NOT nuked, even though we expected it to be",false) else if this.SawIBNuked() then ("The incremental builder was UNEXPECTEDLY nuked",false) else ("",true) let actualParsedFiles = this.GetParsedFilesSet() let actualTypeCheckedFiles = this.GetTypeCheckedFilesSet() let actualParses = actualParsedFiles.Count let actualTypeChecks = actualTypeCheckedFiles.Count let expectedParsedFiles = expectedParsedFiles |> set let expectedTypeCheckedFiles = expectedTypeCheckedFiles |> set if (actualParses, actualTypeChecks, actualParsedFiles, actualTypeCheckedFiles) <> (expectedParses, expectedTypeChecks, expectedParsedFiles, expectedTypeCheckedFiles) then let detail = sprintf "ExpectedParse: %A\nActualParse: %A\n\nExpectedTypeCheck: %A\nActualTypeCheck: %A\n\n%s" expectedParsedFiles actualParsedFiles expectedTypeCheckedFiles actualTypeCheckedFiles note let msg = if (actualParses, actualTypeChecks) <> (expectedParses, expectedTypeChecks) then sprintf "Expected %d parses and %d typechecks, but got %d parses and %d typechecks.\n\n%s" expectedParses expectedTypeChecks actualParses actualTypeChecks detail else sprintf "Expected %d parses and %d typechecks, and got those counts, but unexpected file sets:\n\n%s" expectedParses expectedTypeChecks detail Assert.Fail(msg) elif not ok then Assert.Fail(sprintf "Got expected events, but also: %s" note) /// REVIEW: Should be able to get data tip when hovering over a class member method name ie "member private art.attemptUpgradeToMSBuild hierarchy" (* Not Unittested Yet ----------------------------------------------------------------------------------------------------------------- *) /// FEATURE: Pressing ctrl-j or ctrl-space will bring up the Intellisense completion list at the current cursor. /// FEATURE: String literals such as "My dog has fleas" will be colored in in String color. /// FEATURE: Source code files with extensions .fs and .ml are recognized by the language service. /// FEATURE: Interface files with extensions .fsi and .mli are recognized by the language service. /// FEATURE: Double-clicking a word in a comment highlight just the word not the whole comment. /// FEATURE: During debugging user may hover over a tooltip and get debugging information about. For example, instance values. /// FEATURE: Character literals such as 'x' will be colored in in String color. (* ------------------------------------------------------------------------------------------------------------------------------------ *) /// FEATURE(nyi): As the user types part of an identifier, for example Console.Wr, he'll get an Intellisense list of members that match. /// FEATURE(nyi): The user can press ctrl-i to start an incremental search within the current document. /// FEATURE(nyi): Pressing ctrl-} will move cursor to the matching brace. This will work for all brace types. /// FEATURE(nyi): If a source file has a #r or #R reference then changes to the referenced assembly will be recognized by the language service. /// FEATURE(nyi): If a source file used to have a #r or #R reference and then the user removes it, that assembly will no longer be in scope. /// FEATURE(nyi): There is a navigation bar at the top of the text editor window that shows the user all the top-level and second-level constructs in the file. /// FEATURE(nyi): Types in the code will be colored with a special BoundType color /// FEATURE(nyi): Preprocessor-like keywords aside from #light\#if\#else\#endif will be colored with PreprocessorKeyword color. /// FEATURE(nyi): Intellisense for argument names. /// PS-FEATURE(nyi): The user may choose to enable mixed-mode debugging by selecting Project Settings\Debug\Enable unamanaged code debugging /// These are the driver tests. They're parameterized on /// various functions that abstract actions over vs. type LanguageServiceBaseTests() = let mutable defaultSolution : OpenSolution = Unchecked.defaultof<_> let cache = System.Collections.Generic.Dictionary() let mutable defaultVS : VisualStudio = Unchecked.defaultof<_> let mutable currentVS : VisualStudio = Unchecked.defaultof<_> (* VsOps is internal, but this type needs to be public *) let mutable ops : VsOps = fst (Models.MSBuild()) let testStopwatch = new Stopwatch() (* Timings ----------------------------------------------------------------------------- *) let stopWatch = new Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result member internal this.VsOpts with set op = ops <- op member internal this.TestRunner : ISingleFileTestRunner = SingleFileTestRunner(this) :> _ member internal this.VS = currentVS member internal this.CreateSingleFileProject ( content : string, ?references : list, ?defines : list, ?fileKind : SourceFileKind, ?disabledWarnings : list, ?fileName : string ) = let content = content.Split( [|"\r\n"|], StringSplitOptions.None) |> List.ofArray this.CreateSingleFileProject(content, ?references = references, ?defines = defines, ?fileKind = fileKind, ?disabledWarnings = disabledWarnings, ?fileName = fileName) member internal this.CreateSingleFileProject ( content : list, ?references : list, ?defines : list, ?fileKind : SourceFileKind, ?disabledWarnings : list, ?fileName : string ) = assert (box currentVS = box defaultVS) let mkKeyComponent l = defaultArg l [] |> Seq.sort |> String.concat "|" let ext = match fileKind with | Some SourceFileKind.FS -> ".fs" | Some SourceFileKind.FSI -> ".fsi" | Some SourceFileKind.FSX -> ".fsx" | None -> ".fs" let fileName = (defaultArg fileName "File1") + ext let key = let refs = mkKeyComponent references let defines = mkKeyComponent defines let warnings = mkKeyComponent disabledWarnings (refs, defines, disabledWarnings, fileName.ToLower()) match cache.TryGetValue key with | true, (proj, file) -> ReplaceFileInMemory file [] SaveFileToDisk file TakeCoffeeBreak(currentVS) ReplaceFileInMemory file content SaveFileToDisk file TakeCoffeeBreak(currentVS) defaultSolution, proj, file | false, _ -> let name = string(Guid.NewGuid()) let proj = CreateProject(defaultSolution, name) for dw in (defaultArg disabledWarnings []) do GlobalFunctions.AddDisabledWarning(proj, dw) if defines.IsSome then GlobalFunctions.SetProjectDefines(proj, defines.Value) for r in (defaultArg references []) do GlobalFunctions.AddAssemblyReference(proj, r) let content = String.concat Environment.NewLine content let _ = AddFileFromTextBlob(proj, fileName, content) let file = OpenFile(proj, fileName) cache.[key] <- (proj, file) TakeCoffeeBreak(currentVS) defaultSolution, proj, file member internal this.CreateSolution() = if (box currentVS = box defaultVS) then failwith "You are trying to modify default instance of VS. The only operation that is permitted on default instance is CreateSingleFileProject, perhaps you forgot to add line 'use _guard = this.WithNewVS()' at the beginning of the test?" GlobalFunctions.CreateSolution(currentVS) member internal this.CloseSolution(sln : OpenSolution) = if (box currentVS = box defaultVS) then failwith "You are trying to modify default instance of VS. The only operation that is permitted on default instance is CreateSingleFileProject, perhaps you forgot to add line 'use _guard = this.WithNewVS()' at the beginning of the test?" if (box sln.VS <> box currentVS) then failwith "You are trying to close solution that is not belongs to the active instance VS. This may denote the presence of errors in tests." GlobalFunctions.CloseSolution(sln) member internal this.AddAssemblyReference(proj, ref) = if (box currentVS = box defaultVS) then failwith "You are trying to modify default instance of VS. The only operation that is permitted on default instance is CreateSingleFileProject, perhaps you forgot to add line 'use _guard = this.WithNewVS()' at the beginning of the test?" GlobalFunctions.AddAssemblyReference(proj, ref) /// Called per test run [] member this.TestFixtureSetUp() = ApproveAllMockTypeProviders() match Internal.Utilities.FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(None) with | Some(folder) -> let fscPath = Path.Combine(folder,"fsc.exe") System.Diagnostics.Debug.Assert(File.Exists(fscPath), sprintf "Path to fsc.exe (%s) does not exist. Unittests will surely fail. Is Unittest.exe.config stale?" fscPath) | None -> System.Diagnostics.Debug.Assert(false, "No path to fsc.exe found. Unittests will surely fail.") let AssertNotAssemblyNameContains(a:System.Reflection.Assembly, text1:string, text2:string) = let fullname = sprintf "%A" a if fullname.Contains(text1) && fullname.Contains(text2) then // Can't throw an exception here because its in an event handler. System.Diagnostics.Debug.Assert(false, sprintf "Unexpected: loaded assembly '%s' to not contain '%s' and '%s'" fullname text1 text2) // Under .NET 4.0 we don't allow 3.5.0.0 assemblies let AssertNotBackVersionAssembly(args:AssemblyLoadEventArgs) = Trace.PrintLine("AssembliesLoadedByUnittests",fun _ -> sprintf "ASSEMBLY LOAD: %A" (args.LoadedAssembly)) // We're worried about loading these when running against .NET 4.0: // Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a // Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a AssertNotAssemblyNameContains(args.LoadedAssembly,"Microsoft.Build", "Version=3.5.0.0") () AppDomain.CurrentDomain.AssemblyLoad.Add AssertNotBackVersionAssembly UIStuff.SetupSynchronizationContext() new Microsoft.VisualStudio.FSharp.LanguageService.FSharpPackage() |> ignore // will force us to capture the dummy context we just set up defaultVS <- ops.CreateVisualStudio() currentVS <- defaultVS defaultSolution <- GlobalFunctions.CreateSolution(defaultVS) cache.Clear() [] member this.Shutdown() = if box currentVS <> box defaultVS then failwith "LanguageServiceBaseTests.Shutdown was called when 'active' instance of VS is not 'default' one - this may denote that tests contains errors" GlobalFunctions.Cleanup(defaultVS) cache.Clear() member this.UsingNewVS() = if box currentVS <> box defaultVS then failwith "LanguageServiceBaseTests.UsingNewVS was called when 'active' instance of VS is not 'default' one - this may denote that tests contains errors" currentVS <- ops.CreateVisualStudio() { new System.IDisposable with member __.Dispose() = if box currentVS = box defaultVS then failwith "At this moment 'current' instance of VS cannot be the same as the 'default' one. This may denote that tests contains errors." GlobalFunctions.Cleanup(currentVS) currentVS <- defaultVS } /// Called per test [] member this.Setup() = if box currentVS <> box defaultVS then failwith "LanguageServiceBaseTests.Setup was called when 'active' instance of VS is not 'default' one - this may denote that tests contains errors" // reset state of default VS instance that can be shared among the tests ShiftKeyUp(currentVS) ops.CleanInvisibleProject(currentVS) // do setDiagnosticsChannel(Some(Console.Out)); do AbstractIL.Diagnostics.setDiagnosticsChannel(None); // To disable a logging class, put an underscore _after_ its name. //Trace.Log <- "ChangeEvents_;SyncOp_;Reactor_;ProjectSite_;IncrementalBuild_;Build_;Salsa_;SalsaUndo_;MSBuild_;MSBuildPerf_;IncrementalBuildWorkUnits_;LanguageService_;StripSystemImportsFromTcConfig_;ProjectSystem_" // Trace.Log <- "*" ResetStopWatch() testStopwatch.Reset() testStopwatch.Start() () /// Called per test [] member this.TearDown() = #if DEBUG_FIND_SLOWEST_TESTS if testStopwatch.ElapsedMilliseconds > 15000L then let msg = sprintf "a test took %dms" testStopwatch.ElapsedMilliseconds stderr.WriteLine(msg) System.Console.Beep() System.Windows.MessageBox.Show(msg) |> ignore #endif // help find leaks per-test // System.GC.Collect() // System.GC.WaitForPendingFinalizers() #if DEBUG if Microsoft.VisualStudio.FSharp.LanguageService.TaskReporter.AliveCount <> 0 then Debug.Assert(false, sprintf "There are %d TaskReporters still alive" Microsoft.VisualStudio.FSharp.LanguageService.TaskReporter.AliveCount) #endif () and internal SingleFileTestRunner(owner : LanguageServiceBaseTests) = interface ISingleFileTestRunner with member sftr.CreateSingleFileProject ( content : string, ?references : list, ?defines : list, ?fileKind : SourceFileKind, ?disabledWarnings : list, ?fileName : string ) = owner.CreateSingleFileProject(content, ?references = references, ?defines = defines, ?fileKind = fileKind, ?disabledWarnings = disabledWarnings, ?fileName = fileName) member sftr.CreateSingleFileProject ( content : list, ?references : list, ?defines : list, ?fileKind : SourceFileKind, ?disabledWarnings : list, ?fileName : string ) = owner.CreateSingleFileProject(content, ?references = references, ?defines = defines, ?fileKind = fileKind, ?disabledWarnings = disabledWarnings, ?fileName = fileName) fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.ErrorRecovery.fs0000775000175000017500000002676412260314606025534 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type ErrorRecoveryTests() = inherit LanguageServiceBaseTests() //Verify the error list containd the expected string member private this.VerifyErrorListContainedExpectedString(fileContents : string, expectedStr : string) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) let errorList = GetErrors(project) let GetErrorMessages(errorList : Error list) = [ for i = 0 to errorList.Length - 1 do yield errorList.[i].Message] Assert.IsTrue(errorList |> GetErrorMessages |> Seq.exists (fun errorMessage -> errorMessage.Contains(expectedStr))) // Not a recovery case, but make sure we get a squiggle at the unfinished Main() [] [] member public this.``ErrorRecovery.Bug4538_3``() = let fileContent = """ type MyType() = override x.ToString() = "" let Main() = let x = MyType()""" let expectedStr = "Block following this 'let' is unfinished" this.VerifyErrorListContainedExpectedString(fileContent,expectedStr) // Not a recovery case, but make sure we get a squiggle at the unfinished Main() [] [] member public this.``ErrorRecovery.Bug4538_4``() = let fileContent = """ type MyType() = override x.ToString() = "" let Main() = use x = MyType()""" let expectedStr = "Block following this 'use' is unfinished" this.VerifyErrorListContainedExpectedString(fileContent,expectedStr) [] [] [] member public this.``ErrorRecovery.Bug4881_1``() = let code = ["let s = \"\"" "if true then" " ()" "elif s." "else ()" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"elif s.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Split") [] [] member public this.``ErrorRecovery.Bug4881_2``() = let code = ["let s = \"\"" "if true then" " ()" "elif true" "elif s." "else ()" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"elif s.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Split") [] [] member public this.``ErrorRecovery.Bug4881_3``() = let code = ["let s = \"\"" "if true then" " ()" "elif s." "elif true" "else ()" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"elif s.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Split") [] [] member public this.``ErrorRecovery.Bug4881_4``() = let code = ["let s = \"\"" "if true then" " ()" "elif s." ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"elif s.") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContains(completions,"Split") // This case was fixed while investigating 4538. [] [] member public this.``ErrorRecovery.NotFixing4538_1``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " let _ = new MyT" " ()" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"new MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") // This case was fixed while investigating 4538. [] [] member public this.``ErrorRecovery.NotFixing4538_2``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " let _ = MyT" " ()" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"= MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") // This case was fixed while investigating 4538. [] [] member public this.``ErrorRecovery.NotFixing4538_3``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " let _ = MyT" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"= MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") [] [] member public this.``ErrorRecovery.Bug4538_1``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " let _ = MyT" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"= MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") [] [] member public this.``ErrorRecovery.Bug4538_2``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " let x = MyType()" " let _ = MyT" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"_ = MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") [] [] member public this.``ErrorRecovery.Bug4538_5``() = let code = ["type MyType() = " " override x.ToString() = \"\"" "let Main() =" " use x = null" " use _ = MyT" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"_ = MyT") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"MyType") [] [] member public this.``ErrorRecovery.Bug4594_1``() = let code = ["let Bar(xyz) =" " let hello =" " if x" ] let (_, _, file) = this.CreateSingleFileProject(code, fileKind = SourceFileKind.FSX) MoveCursorToEndOfMarker(file,"if x") TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContains(completions,"xyz") /// In this bug, the Module. at the very end of the file was treated as if it were in the scope /// of Module rather than right after it. This check just makes sure we can see a data tip because /// Module is available. [] member public this.``ErrorRecovery.5878_1``() = Helper.AssertMemberDataTipContainsInOrder (this.TestRunner, (*code *) [ "module Module =" " /// Union comment" " type Union =" " /// Case comment" " | Case of int" "Module." ] , (* marker *) "Module.", (* completed item *) "Case", (* expect to see in order... *) [ "union case Module.Union.Case: int -> Module.Union"; "Case comment"; ] ) //Allow the TimeStampTests run under different context namespace UnitTests.Tests.LanguageService.ErrorRecovery open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit ErrorRecoveryTests new() = { inherit ErrorRecoveryTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit ErrorRecoveryTests new() = { inherit ErrorRecoveryTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.Squiggles.fs0000775000175000017500000014146312260314606024661 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type SquiggleTests() as this= inherit LanguageServiceBaseTests() #if FX_ATLEAST_45 let AA l = Some(System.IO.Path.Combine(System.IO.Path.GetTempPath(), ".NETFramework,Version=v4.0.AssemblyAttributes.fs")), l let notAA l = None,l #else let AA l = None, l let notAA l = None,l #endif let CheckSquiggles (fileContents : string) markers f = let (sln, proj, file) = this.CreateSingleFileProject(fileContents) TakeCoffeeBreak(this.VS)// Wait for the background compiler to catch up. for marker in markers do MoveCursorToStartOfMarker(file, marker) let squiggles = GetSquigglesAtCursor(file) f marker squiggles /// Assert that there is no squiggle. let AssertNoSquiggle(squiggleOption) = match squiggleOption with | None -> () | Some(severity,message) -> Assert.Fail(sprintf "Expected no squiggle but got '%A' with message: %s" severity message) /// Assert that a given squiggle is an Error (or warning) containing the given text let AssertSquiggleIsErrorContaining,AssertSquiggleIsWarningContaining, AssertSquiggleIsErrorNotContaining,AssertSquiggleIsWarningNotContaining = let AssertSquiggle expectedSeverity nameOfExpected nameOfNotExpected assertf (squiggleOption,containing) = match squiggleOption with | None -> Assert.Fail("Expected a squiggle but none was seen.") | Some(severity,message) -> Assert.IsTrue((severity=expectedSeverity), sprintf "Expected %s but saw %s: %s" nameOfExpected nameOfNotExpected message) assertf(message,containing) AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error "Error" "Warning" AssertContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning "Warning" "Error" AssertContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error "Error" "Warning" AssertNotContains, AssertSquiggle Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning "Warning" "Error" AssertNotContains member private this.VerifyNoSquiggleAtStartOfMarker(fileContents : string, marker : string, ?addtlRefAssy : list) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents, ?references=addtlRefAssy) MoveCursorToStartOfMarker(file, marker) TakeCoffeeBreak(this.VS)// Wait for the background compiler to catch up. let squiggle = GetSquiggleAtCursor(file) AssertEqual(None,squiggle) member private this.VerifySquiggleAtStartOfMarker(fileContents : string, marker : string, expectedSquiggle : (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string), ?addtlRefAssy : list, ?thereShouldBeNoOtherSquigglesHere : bool) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents, ?references=addtlRefAssy) TakeCoffeeBreak(this.VS)// Wait for the background compiler to catch up. MoveCursorToStartOfMarker(file, marker) let squiggles = GetSquigglesAtCursor(file) if squiggles |> List.exists ((=) expectedSquiggle) then () // ok, found it match thereShouldBeNoOtherSquigglesHere with | Some(true) -> if squiggles.Length <> 1 then Assert.Fail(sprintf "Multiple squiggles when only one expected; expected only\r\n%A\r\ngot\r\n%A" expectedSquiggle squiggles) | _ -> () else Assert.Fail(sprintf "Expected %A but got %A" expectedSquiggle squiggles) member private this.VerifySquiggleContainedAtStartOfMarker(fileContents : string, marker : string, expectedSquiggle : (Microsoft.VisualStudio.FSharp.LanguageService.Severity * string)) = let (sln, proj, file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, marker) let squiggles = GetSquigglesAtCursor(file) if squiggles |> List.exists (fun (sev,msg) -> fst expectedSquiggle = sev && msg.Contains(snd expectedSquiggle)) then () // ok, found it else Assert.Fail(sprintf "Expected %A but got %A" expectedSquiggle squiggles) [] member public this.``Error.Expression.IllegalIntegerLiteral``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let _ = 1 let a = 0.1.(*MError1*)0 """, marker = "(*MError1*)", expectedSquiggle = (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Missing qualification after '.'")) [] member public this.``Error.Expression.IncompleteDefine``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let a = ;(*MError3*)""", marker = "(*MError3*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Unexpected symbol ';' in binding")) [] member public this.``Error.Expression.KeywordAsValue``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let b = type(*MError4*) """, marker = "(*MError4*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Incomplete structured construct at or before this point in binding")) [] member public this.``Error.Type.WithoutName``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ type =(*MError5*) ;;""", marker = "(*MError5*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Unexpected symbol '=' in type name")) [] member public this.``AbstractClasses.Constructors.PositiveTests``() = let testCases = [ """ [] type C(a : int) = new(a : string) = C(int a) new(b) = match b with Some _ -> C(1) | _ -> C("") """, ["C(1)"; "C(\"\")"; "C(int a)"] """ [] type C(a : int) = new(a : string) = new C(int a) new(b) = match b with Some _ -> new C(1) | _ -> new C("") """, ["C(1)"; "C(\"\")"; "C(int a)"] """ [] type O(o : int) = new() = O(1) """, ["O(1)"] """ [] type O(o : int) = new() = new O(1) """, ["O(1)"] """ [] type O(o : int) = new() = O() then printfn "A" """, ["O()"] """ [] type O(o : int) = new() = new O(1) then printfn "A" """, ["O(1)"] """ [] type D() = class end [] type E = inherit D new() = { inherit D(); } """, ["D();"] ] for (source, markers) in testCases do printfn "AbstractClasses.Constructors.PositiveTests: testing %s, markers: %A" source markers CheckSquiggles source markers <| fun _ -> function | [] -> () // OK : no squiggles expected | errs -> sprintf "Unexpected squiggles %A" errs |> Assert.Fail [] member public this.``AbstractClasses.Constructors.NegativeTests``() = let testCases = [ """ [] type D = val d : D new() = {d = D()} """, ["D()", true] """ [] type D = val d : D new() = {d = new D()} """, ["D()", true] """ [] type Z() = new(a : int) = Z(10) then ignore(Z()) """, ["Z())", true] """ [] type Z() = new(a : int) = new Z(10) then ignore(new Z()) """, ["Z())", true] """ [] type X() = member val V : bool = true new(_ : bool) = if X().V then X(true) else X()//1 then ignore(X()) """, ["X().V", true; "X())", true; "X()//1", false; "X(true) ", false] """ [] type X() = member val V : bool = true new(_ : bool) = if (new X()).V then new X(true) else new X()//1 then ignore(new X()) """, ["X()).V", true; "X())", true; "new X(true)", false; "X()//1", false ] """ [] type X() = member val V : bool = true new(_ : bool) = let _ = if X().V then X(true) else X()//M X()//1 then ignore(X()) """, ["X().V", true; "X(true) ", true; "X()//M", true; "X())", true; "X()//1", false] """ [] type X() = member val V : bool = true new(_ : bool) = let _ = if (new X()).V then new X(true) else new X()//M new X() //2 then ignore(new X()) """, ["X()).V", true; "X(true)", true; "X()//M", true; "X())", true; "new X() //2", false] ] for (source, markers) in testCases do printfn "AbstractClasses.Constructors.NegativeTests: testing %s, markers: %A" source markers let map = dict markers let markers = List.map fst markers CheckSquiggles source markers <| fun marker -> function | [] -> if map.[marker] then Assert.Fail("Squiggles expected") else () | errs -> if not (map.[marker]) then Assert.Fail("Squiggles not expected") else for (sev, text) in errs do printfn "Actual squiggles at %s: Severity %A, text %s" marker sev text Assert.AreEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, sev, "Error severity expected") Assert.AreEqual("Instances of this type cannot be created since it has been marked abstract or not all methods have been given implementations. Consider using an object expression '{ new ... with ... }' instead.", text, "Unexpected error text") [] [] member this.``TypeProvider.Error.VerbatimStringAccident.GoodErrorMessage``() = let r = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] let (sln, proj, file) = this.CreateSingleFileProject("""type foo = N1.T<@"foo">""", references = r) TakeCoffeeBreak(this.VS)// Wait for the background compiler to catch up. MoveCursorToStartOfMarker(file, "1") AssertEqual( [], GetSquigglesAtCursor(file) ) // no error messages here MoveCursorToStartOfMarker(file, "T") AssertEqual( [], GetSquigglesAtCursor(file) ) // no error messages here either MoveCursorToStartOfMarker(file, "<@") let squiggles = GetSquigglesAtCursor(file) let expected = Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, """Unexpected quotation operator '<@' in type definition. If you intend to pass a verbatim string as a static argument to a type provider, put a space between the '<' and '@' characters.""" AssertEqual( [expected], squiggles ) [] [] member public this.``TypeProvider.WarningAboutEmptyAssembly`` () = let emptyLoc = System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\EmptyAssembly.dll") this.VerifySquiggleAtStartOfMarker( fileContents = "type foo = N1.T<\"foo\"", marker = "t", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning, "Referenced assembly '"+emptyLoc+"' has assembly level attribute 'Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute' but no public type provider classes were found"), // ensure that if you referenced two TP assemblies, one of which contained TPs, and the other did not, then you get the warning about a TP assembly with no TPs addtlRefAssy = [emptyLoc; System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")], thereShouldBeNoOtherSquigglesHere=true) [] [] member public this.``TypeProvider.Approvals.ErrorWhenNotApproved`` () = try use _guard = this.UsingNewVS() ClearAllTypeProviderApprovals() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") this.AddAssemblyReference(project,System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")) let file1 = AddFileFromText(project,"File1.fs", ["type foo = N1.T<"]) let file1 = OpenFile(project,"File1.fs") MoveCursorToEndOfMarker(file1,"t") let errs = GetSquigglesAtCursor(file1) if not(errs |> List.exists (fun (sev,msg) -> sev=Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning && msg.Contains("is not trusted and will not be loaded for security reasons. This may cause subsequent build errors."))) then Assert.Fail "did not find expected squiggle" if errs.Length <> 1 then Assert.Fail(sprintf "found extra squiggles; all are %A" errs) // if multiple files are open, they all get the warning let file2 = AddFileFromText(project,"File2.fs", ["let x = 3"]) let file2 = OpenFile(project,"File2.fs") MoveCursorToEndOfMarker(file2,"l") let errs = GetSquigglesAtCursor(file2) if not(errs |> List.exists (fun (sev,msg) -> sev=Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning && msg.Contains("is not trusted and will not be loaded for security reasons. This may cause subsequent build errors."))) then Assert.Fail "did not find expected squiggle" if errs.Length <> 1 then Assert.Fail(sprintf "found extra squiggles; all are %A" errs) finally ApproveAllMockTypeProviders() [] [] [] member public this.``TypeProvider.Error.CodePrefix1.GoodErrorMessage`` () = this.VerifySquiggleAtStartOfMarker( fileContents = "type foo = N1.T<", marker = "N1", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "The static parameter 'Param1' of the provided type 'T' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. 'T'."), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] member public this.``TypeProvider.Error.CodePrefix2.GoodErrorMessage`` () = this.VerifySquiggleAtStartOfMarker( fileContents = "type foo = N1.T<\"foo\",", marker = "N1", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "The static parameter 'ParamIgnored' of the provided type 'T' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. 'T'."), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] member public this.``TypeProvider.Error.CodePrefix3.GoodErrorMessage`` () = this.VerifySquiggleAtStartOfMarker( fileContents = " type foo = N1.T<\"foo\", let z = 42", marker = "let", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Expected type argument or static argument"), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] member public this.``TypeProvider.Error.CodePrefix4.GoodErrorMessage`` () = this.VerifySquiggleAtStartOfMarker( fileContents = " type foo = N1.T<\"foo\",42 let z = 42", marker = "let", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Incomplete structured construct at or before this point in type arguments. Expected ',', '>' or other token."), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case verify the error squiggle shows up when TypeProvider StaticParameter is Invalid //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) member public this.``TypeProvider.Error.InvalidStaticParameter`` () = this.VerifySquiggleAtStartOfMarker( fileContents = " type foo = N1.T< const 100(*Marker*),2>", marker = "(*Marker*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "This expression was expected to have type\n"+ " string \n"+ "but here has type\n"+ " int "), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case verify the No squiggle doesn't show up in the file content marker where TypeProvider line is //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) member public this.``TypeProvider.WithNoSquiggle`` () = this.VerifyNoSquiggleAtStartOfMarker( fileContents = """ type foo = N1(*Marker*).T< const "Hello World",2>""", marker = "(*Marker*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] //This test case verify the Warning squiggle does show up in the file content marker where TypeProvider line is //Dummy Type Provider exposes a parametric type (N1.T) that takes 2 static params (string * int) member public this.``TypeProvider.WarningSquiggle`` () = this.VerifySquiggleAtStartOfMarker( fileContents = """ type foo = N1.T< const(*Marker*) "Hello World",2>""", marker = "(*Marker*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning, "Possible incorrect indentation: this token is "+ "offside of context started at position (2:39). "+ "Try indenting this token further or using "+ "standard formatting conventions."), addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory,@"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] member public this.``Waring.Construct.TypeMatchWithoutAnnotation``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let f () = let g1 (x:'a) = x let g2 (y:'a) = (y(*MWarning3*):string) g1 3, g1 "3", g2 "4" """, marker = "(*MWarning3*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning, "This construct causes code to be less generic " + "than indicated by the type annotations. The " + "type variable 'a has been constrained to be " + "type 'string'.")) [] member public this.``Warning.Expression.IncorrectFormat``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let nConstant = 100(*MWarning4*) """, marker = "(*MWarning4*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning, "Possible incorrect indentation: this token is "+ "offside of context started at position (2:17). "+ "Try indenting this token further or using "+ "standard formatting conventions.")) [] member public this.``Error.Method.ParameterNumDoseNotMatch``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ open System open System.IO if File.Exists(aFile) then File.(aFile,"")(*M1*)""", marker = "(*M1*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "This construct is deprecated: This indexer notation has been removed from the F# language")) (* Now that the language service reports typecheck errors even if there are parse errors, this location now has two errors. And Salsa just picks the 'first' squiggle (based on some arbitrary implementation artifacts of what order errors are put in the collection), so 'GetSquiggleAtCursor' is unreliable if there is more that on squiggle there. Workaround here is to look through the whole error list for what we're looking for. *) [] [] member public this.``Error.Identifer.IllegalFloatPointLiteral``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let someFunction x.0.0(*MError2*) = 1""", marker = "(*MError2*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Unexpected floating point literal in pattern. Expected identifier, '(', '(*)' or other token.")) [] member public this.ErrorSquiggleSpan() = let fileContents = """ #light let _ = 1 let a = 0.1.0(*MError1*) ;; let someFunction x.0.0(*MError2*) = 1 ;; let a = ;(*MError3*) ;; let b = type(*MError4*) ;; type =(*MError5*) ;; """ let (sln, proj, file) = this.CreateSingleFileProject(fileContents) let errors = GetErrors(proj) let desiredError = errors |> List.tryFind (fun e -> e.Message = "Unexpected floating point literal in pattern. Expected identifier, '(', '(*)' or other token.") match desiredError with | None -> Assert.Fail("did not find expected error") | Some(e) -> Assert.IsTrue(e.Context = TextSpan(iStartLine=5, iStartIndex=31, iEndLine=5, iEndIndex=34), "error had wrong location") [] member public this.``Error.TypeCheck.ParseError.Bug67133``() = // Note: no 'open System', so DateTime is unknown this.VerifySquiggleAtStartOfMarker( fileContents = """ let gDateTime (arr: DateTime(*Mark*)[]) = arr.[0].""", marker = "(*Mark*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,"The type 'DateTime' is not defined")) [] member public this.``Error.CyclicalDeclarationDoesNotCrash``() = // Note: no 'open System', so DateTime is unknown this.VerifySquiggleAtStartOfMarker( fileContents = """type A(*Mark*) = int * A""", marker = "(*Mark*)", expectedSquiggle= (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,"This type definition involves an immediate cyclic reference through an abbreviation")) /// FEATURE: Flags from the MSBuild compile target are respected. [] member public this.``Warning.FlagsAndSettings.TargetOptionsRespected``() = let fileContent = """ [] let fn x = 0 let y = fn(*Mark*) 1""" /// Make sure the warning would be there. this.VerifySquiggleAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning, "This construct is deprecated. x")) /// When a .fs file is opened with no project context we do show squiggles /// for missing types etc. [] [] member public this.``OrphanFs.MissingTypesShouldNotShowErrors``() = let fileContent = """open Unknown(*Mark*)""" this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Unknown")) /// When a .fs file is opened with no project context we still do want to show squiggles /// for parse errors which could not have been caused by a missing reference or prior source file. [] member public this.``OrphanFs.ParseErrorsStillShow``() = let fileContent = """let foo = let(*Mark*)""" this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "Block following ")) /// FEATURE: If a .fs file has a BuildAction other than "Compile", it behaves like a /// single-file-project with regards to intellisense. [] [] member public this.``Project.FsFileWithBuildActionOtherThanCompileBehavesLikeSingleFileProject``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", ["let bob = 42"]) let file2 = AddFileFromTextEx(project, "File2.fs", "File2.fs", BuildAction.None, ["let i = 4" "let r = i.ToString()" "let x = File1.bob"]) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"File2.fs") // file2 should not be able to 'see' file1 MoveCursorToEndOfMarker(file2,"File1") let squiggle = GetSquiggleAtCursor(file2) Assert.IsTrue(snd squiggle.Value |> fun str -> str.Contains("The namespace"))// The namespace or module 'File1' is not defined /// FEATURE: Errors in the code are underlined with red squiggles and a clickable description of the error appears in the Error List. [] [] member public this.``Basic.Case1``() = let fileContent = """ let x = 3 let y = x(*Mark*) 4 let arr = [| 1; 2; 3 |]""" this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "This value is not a function and cannot be applied")) [] [] member public this.``Basic.Case2``() = let fileContent = """ let x(*Mark*) = 3 let y = x 4 let arr = [| 1; 2; 3 |]""" // test an error-free location this.VerifyNoSquiggleAtStartOfMarker(fileContent,"(*Mark*)") [] member public this.``Multiline.Bug5449.Case1``() = let fileContent = """ let f x = 1 let r = f(*Mark*) 234 567 """ this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "This value is not a function and cannot be applied")) [] member public this.``Multiline.Bug5449.Case2``() = let fileContent = """ let f x = 1 let r = f 234(*Mark*) 567 """ this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "This value is not a function and cannot be applied")) [] member public this.``ErrorAtTheEndOfFile``() = let fileContent = """3 + """ let (sln, proj, file) = this.CreateSingleFileProject(fileContent) MoveCursorToEndOfMarker(file,"3 + ") let squiggles = GetSquigglesAtCursor(file) let expectedSquiggle = (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,"Unexpected end") if squiggles |> List.exists (fun (sev,msg) -> fst expectedSquiggle = sev && msg.Contains(snd expectedSquiggle)) then () // ok, found it else Assert.Fail(sprintf "Expected %A but got %A" expectedSquiggle squiggles) [] member public this.``InComputationExpression.6095_a``() = let code = ["let a = async {" " let! [| r1; r2 |] = Async.Parallel [| async.Return(1); async.Return(2) |]" " let yyyy = 4" " return r1,r2 }"] let (_,_, file) = this.CreateSingleFileProject(code) // in the bug, the squiggle did not appear at the actual problem MoveCursorToEndOfMarker(file,"r1;") let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning,sev) AssertContains(msg,"Incomplete pattern matches on this expression. For example, the value '[|_; _; _|]' may indicate a case not covered by the pattern(s).") | _ -> Assert.Fail("Expected squiggle in computation expression") // in the bug, the squiggle was on the 'whole rest of the computation' MoveCursorToEndOfMarker(file,"yyy") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"retur") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) [] member public this.``InComputationExpression.6095_b``() = let code = ["let a = async {" " for [|x;y|] in [| [|42|] |] do () }"] let (_, _, file) = this.CreateSingleFileProject(code) // in the bug, the squiggle covered whole for..do MoveCursorToEndOfMarker(file,"fo") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"x") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"in") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"do") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"42") let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning,sev) AssertContains(msg,"Incomplete pattern matches on this expression. For example, the value '[|_; _; _|]' may indicate a case not covered by the pattern(s).") | _ -> Assert.Fail("Expected squiggle in computation expression") [] member public this.``InComputationExpression.6095_c``() = // this one is not in a computation expression actually let code = ["let f = function | [| a;b |] -> ()"] let (_, _, file) = this.CreateSingleFileProject(code) // in the bug, the squiggle covered whole function... end of line MoveCursorToEndOfMarker(file,"a") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"(") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"func") // we just want the squiggle under the word 'function', which is shorthand for 'fun x -> match x when' (squiggle would go under 'x') let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning,sev) AssertContains(msg,"Incomplete pattern matches on this expression. For example, the value '[|_; _; _|]' may indicate a case not covered by the pattern(s).") | _ -> Assert.Fail("Expected squiggle in computation expression") [] member public this.``InComputationExpression.6095_d``() = // this one is not in a computation expression actually let code = ["for [|a;b|] in [| [|42|] |] do ()"] let (_, _, file) = this.CreateSingleFileProject(code) // in the bug, the squiggle covered whole for..() MoveCursorToEndOfMarker(file,"fo") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"a") let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning,sev) AssertContains(msg,"Incomplete pattern matches on this expression. For example, the value '[|_; _; _|]' may indicate a case not covered by the pattern(s).") | _ -> Assert.Fail("Expected squiggle in computation expression") MoveCursorToEndOfMarker(file,"in") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"do") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) MoveCursorToEndOfMarker(file,"42") let ans = GetSquiggleAtCursor(file) AssertNoSquiggle(ans) [] member public this.``GloballyScoped.6284``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let barfile = AddFileFromText(project,"Bar.fs", ["namespace global type Bar() = member this.Y = 1"]) let programFile = AddFileFromText(project,"Program.fs", ["let b = global.Bar()"]) let programFile = OpenFile(project,"Program.fs") // test an error MoveCursorToEndOfMarker(programFile,"let b = glo") let ans = GetSquiggleAtCursor(programFile) AssertNoSquiggle(ans) [] member public this.``InComputationExpression.914685``() = let code = ["async { if true then return 1 } |> ignore"] let (_, _, file) = this.CreateSingleFileProject(code) // test an error MoveCursorToEndOfMarker(file,"async { if tr") let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,sev) AssertContains(msg,"The type 'int'") | _ -> Assert.Fail("Expected squiggle in computation expression") [] member public this.``InComputationExpression.214740``() = this.VerifySquiggleAtStartOfMarker( fileContents = """ let x = 1 + "" // type error, but no squiggle if parse error below let l = [1;2] seq { // (seq or async or whatever, hits same path through the parser) for x in l. // delete this dot and squiggle above appears }""", marker = "\"\"", expectedSquiggle = (Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "The type 'string' does not match the type 'int'")) /// Extra endif [] member public this.``ExtraEndif``() = let fileContent = """ #if UNDEFINED //(*If*) let x = 1(*Inactive*) #else //(*Else*) let(*Active*) x = 1 #endif //(*Endif*) #endif(*Mark*) //(*Extra endif*)""" this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "#endif has no matching #if in implementation file")) [] member public this.``DirectivesInString``() = let fileContent = """ #if UNDEFINED #else(*Mark*) let s = " #endif " let testme = 1""" this.VerifySquiggleContainedAtStartOfMarker(fileContent,"(*Mark*)",(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error, "No #endif found")) (* Various #if/#else/#endif errors -------------------------------------------------- *) member private this.TestSquiggle error lines marker expected = let code = "#light"::""::lines let (_, _, file) = this.CreateSingleFileProject(code, defines = ["FOO"]) MoveCursorToStartOfMarker(file, marker) let squiggle = GetSquiggleAtCursor(file) match squiggle with | Some(sev,msg) -> AssertEqual((if error then Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error else Microsoft.VisualStudio.FSharp.LanguageService.Severity.Warning),sev) AssertContains(msg, expected) | _ -> Assert.Fail(sprintf "No squiggle seen. Expected: '%s'" expected) [] member public this.``Squiggles.HashNotFirstSymbolA``() = this.TestSquiggle true [ "(**) #if IDENT"; "#endif" ] "if" "#if directive must appear as the first non-whitespace" [] member public this.``Squiggles.HashNotFirstSymbolB``() = this.TestSquiggle true [ "#if FOO"; "(**) #else"; "#endif" ] "else" "#else directive must appear as the first non-whitespace" [] member public this.``Squiggles.HashNotFirstSymbolC``() = this.TestSquiggle true [ "#if IDENT"; "#else"; "(**) #endif" ] "endif" "#endif directive must appear as the first non-whitespace" [] member public this.``Squiggles.HashIfWithoutIdent``() = this.TestSquiggle true [ "#if"; "#endif" ] "if" "#if directive should be immediately followed by an identifier" [] member public this.``Squiggles.HashIfWrongExpr``() = this.TestSquiggle true [ "#if !IDENT"; "#endif" ] "if" "#if directive should be immediately followed by an identifier" [] member public this.``Squiggles.HashIfWithMultilineComment``() = this.TestSquiggle true [ "#if IDENT (* aaa *)"; "#endif" ] "(* aaa" "Expected single line comment or end of line" [] member public this.``Squiggles.HashIfWithUnexpected``() = this.TestSquiggle true [ "#if IDENT whatever"; "#endif" ] "whatever" "Expected single line comment or end of line" // FEATURE: Touching a depended-upon file will cause a intellisense to update in the currently edited file. [] member public this.``Refresh.RefreshOfDependentOpenFiles.Bug2166.CaseA``() = use _guard = this.UsingNewVS() let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") printfn "Adding file1" let file1 = AddFileFromText(project,"File1.fs", ["#light" "module Module1" ]) let file1 = OpenFile(project,"File1.fs") gpatcc.AssertExactly(AA[file1],AA[file1], true (* nuked, because a new file was added to the project *)) printfn "Adding file2" let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) let file2 = AddFileFromText(project,"File2.fs", ["#light" "open Module2" ]) let file2 = OpenFile(project,"File2.fs") gpatcc.AssertExactly(AA[file1;file2],AA[file1;file2], true (* nuked, because a new file was added to the project *)) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // Expect an error here because of reference to nonexistent Module2 MoveCursorToEndOfMarker(file2,"open Modu") let ans = GetSquiggleAtCursor(file2) AssertSquiggleIsErrorContaining(ans, "Module2") gpatcc.AssertExactly(notAA[],notAA[]) // Fix File1.fs so that it contains Module2 printfn "Fixing file1 in memory" ReplaceFileInMemory file1 ["#light" "module Module2"] // brianmcn: // Assertion below is very subtle. Here's what happened. After opening file1, we opened file2. This changed the contents // of the project file, and focused file2 (and unfocused file1). Since then, we have never done anything to file1, not even // OnIdle (which salsa only does for currently-focused-file), and thus when we touch file1 again, it falls into the logic // in servicem.fs here: // Furthermore, if we know our project is out-of-date, this may mean that dependent DLLs may have changed on disk without us knowing, // since we only just started listening for those changes a moment ago in the SetDependencyFiles() call. So behave just as if we were // just notified that those dependency files changed. (In the future, it would be good to partition a source file's dependencies into // 'project' dependencies (that only depend on the IProjectSite, e.g. project/asseembly references) and 'source' dependencies (e.g. #r's).) //if outOfDateProjectFileNames.Contains(projectFileName) then // this.Parser.InvalidateConfiguration(checkOptions) // which assumes 'the worst' and calls InvalidateConfiguration (which calls InvalidateBuildCacheEntry, which nukes the IncrementalBuilder). // I am happy to have this under test. // The next test below (Case B) simulates behavior more like VS, which would be idling all the open files. gpatcc.AssertExactly(AA[file1;file2], AA[file1;file2], true) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) printfn "Fixing file1 on disk" SaveFileToDisk file1 gpatcc.AssertExactly(notAA[file1],notAA[file1;file2]) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file2,"open Modu") // This switches focus back to file2 TakeCoffeeBreak(this.VS) let ans = GetSquiggleAtCursor(file2) AssertNoSquiggle(ans) gpatcc.AssertExactly(notAA[],notAA[]) // FEATURE: Touching a depended-upon file will cause a intellisense to update in the currently edited file. [] member public this.``Refresh.RefreshOfDependentOpenFiles.Bug2166.CaseB``() = use _guard = this.UsingNewVS() let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") printfn "Adding file1" let file1 = AddFileFromText(project,"File1.fs", ["#light" "module Module1" ]) let file1 = OpenFile(project,"File1.fs") gpatcc.AssertExactly(AA[file1],AA[file1], true (* nuked, because a new file was added to the project *)) printfn "Adding file2" let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) let file2 = AddFileFromText(project,"File2.fs", ["#light" "open Module2" ]) let file2 = OpenFile(project,"File2.fs") // See long comment in (Case A), above. // The first time we glance at file1 since the project file changed (file2 was added) will nuke. MoveCursorToEndOfMarker(file1,"#light") // focus file1, so it gets idled gpatcc.AssertExactly(AA[file1;file2],AA[file1;file2], true (* nuked, because a new file was added to the project *)) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // Expect an error here because of reference to nonexistent Module2 MoveCursorToEndOfMarker(file2,"open Modu") let ans = GetSquiggleAtCursor(file2) AssertSquiggleIsErrorContaining(ans, "Module2") gpatcc.AssertExactly(notAA[],notAA[]) // Fix File1.fs so that it contains Module2 printfn "Fixing file1 in memory" ReplaceFileInMemory file1 ["#light" "module Module2"] gpatcc.AssertExactly(notAA[],notAA[]) // incremental builder does not see in-memory changes let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) printfn "Fixing file1 on disk" SaveFileToDisk file1 gpatcc.AssertExactly(notAA[file1],notAA[file1;file2]) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file2,"open Modu") // This switches focus back to file2 TakeCoffeeBreak(this.VS) let ans = GetSquiggleAtCursor(file2) AssertNoSquiggle(ans) gpatcc.AssertExactly(notAA[],notAA[]) // FEATURE: Give a nice error message when a type in a unreferenced dependant assembly is used [] member public this.``MissingDependencyReferences.MissingAssemblyErrorMessage``() = let code = ["#light" "let myForm = new System.Windows.Forms.Form()" "let bounds = myForm.Bounds" ] let (_,_, file) = this.CreateSingleFileProject(code, references = ["System"; "System.Windows.Forms"]) MoveCursorToEndOfMarker(file,"let bounds = myFo") let ans = GetSquiggleAtCursor(file) match ans with | Some(sev,msg) -> AssertEqual(Microsoft.VisualStudio.FSharp.LanguageService.Severity.Error,sev) AssertContains(msg,"System.Drawing") AssertContains(msg,"You must add a reference") | _ -> Assert.Fail("No squiggle seen") //Allow the SquiggleTests run under different context namespace UnitTests.Tests.LanguageService.Squiggle open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit SquiggleTests new() = { inherit SquiggleTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit SquiggleTests new() = { inherit SquiggleTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.Completion.fs0000775000175000017500000124625412260314606025034 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open Salsa.VsMocks open Salsa.VsOpsUtils open NUnit.Framework open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open Salsa.Salsa open UnitTests.TestLib.LanguageService [] module StandardSettings = let standard40AssemblyRefs = [ "System"; "System.Core"; "System.Numerics" ] let queryAssemblyRefs = [ "System.Xml.Linq"; "System.Core" ] type Expectation = | QuickInfoExpected of string * string | AutoCompleteExpected of string * string | DotCompleteExpected of string * string let QI x y = QuickInfoExpected(x,y) let AC x y = AutoCompleteExpected(x,y) let DC x y = DotCompleteExpected(x,y) type AutoCompletionListTests() as this = inherit LanguageServiceBaseTests() let createFile (code : list) fileKind refs = let (_, _, file) = match code with | [code] when code.IndexOfAny([|'\r'; '\n'|]) <> -1 -> this.CreateSingleFileProject(code, fileKind = fileKind, references = refs) | code -> this.CreateSingleFileProject(code, fileKind = fileKind, references = refs) file let DoWithAutoCompleteUsingExtraRefs refs coffeeBreak fileKind reason (code : list) marker f = // Up to 2 untyped parse operations are OK: we do an initial parse to provide breakpoint valdiation etc. // This might be before the before the background builder is ready to process the foreground typecheck. // In this case the background builder calls us back when its ready, and we then request a foreground typecheck let file = createFile code fileKind refs if coffeeBreak then TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, marker) let completions = CompleteAtCursorForReason(file,reason) f completions gpatcc.AssertExactly(0,0) let DoWithAutoComplete coffeeBreak fileKind reason (code : list) marker f = DoWithAutoCompleteUsingExtraRefs [] coffeeBreak fileKind reason code marker f let AssertAutoCompleteContains, AssertAutoCompleteContainsNoCoffeeBreak, AutoCompleteInInterfaceFileContains, AssertCtrlSpaceCompleteContains, AssertCtrlSpaceCompleteContainsNoCoffeeBreak = let AssertAutoCompleteContains coffeeBreak filename reason code marker should shouldnot = DoWithAutoComplete coffeeBreak filename reason code marker <| fun completions -> AssertCompListContainsAll(completions, should) AssertCompListDoesNotContainAny(completions, shouldnot) ((AssertAutoCompleteContains true SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect), (AssertAutoCompleteContains false SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect), (AssertAutoCompleteContains true SourceFileKind.FSI Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect), (AssertAutoCompleteContains true SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord), (AssertAutoCompleteContains false SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord)) let AssertCtrlSpaceCompletionListIsEmpty code marker = DoWithAutoComplete true SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord code marker AssertCompListIsEmpty let AssertCtrlSpaceCompletionListIsEmptyNoCoffeeBreak code marker = DoWithAutoComplete false SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord code marker AssertCompListIsEmpty let AssertAutoCompleteCompletionListIsEmpty code marker = DoWithAutoComplete true SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect code marker AssertCompListIsEmpty let AssertAutoCompleteCompletionListIsEmptyNoCoffeeBreak code marker = DoWithAutoComplete false SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect code marker AssertCompListIsEmpty let testAutoCompleteAdjacentToDot op = let text = sprintf "System.Console%s" op // First, test that pressing dot works. AssertAutoCompleteContainsNoCoffeeBreak [ text ] "System.Console." [ "BackgroundColor" ] // should contain [ ] // should not contain let testAutoCompleteAdjacentToDotNegative op = let text = sprintf "System.Console%s" op // Next test that there is no completion after then end. AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ text ] text [ "abs" ] // should contain (top-level autocomplete on empty identifier) [ "BackgroundColor" ] // should not contain (from prior System.Console) let customOperations = [ "contains"; "count";"last"; "lastOrDefault"; "exactlyOne"; "exactlyOneOrDefault"; "headOrDefault"; "select"; "where" "minBy"; "maxBy"; "groupBy"; "sortBy"; "sortByDescending"; "thenBy"; "thenByDescending"; "groupValBy"; "join" "groupJoin"; "sumByNullable"; "minByNullable"; "maxByNullable"; "averageByNullable"; "averageBy" "distinct"; "exists"; "find"; "all"; "head"; "nth"; "skip"; "skipWhile"; "sumBy"; "take" "takeWhile"; "sortByNullable"; "sortByNullableDescending"; "thenByNullable"; "thenByNullableDescending"] #if FX_ATLEAST_45 let AA l = Some(System.IO.Path.Combine(System.IO.Path.GetTempPath(), ".NETFramework,Version=v4.0.AssemblyAttributes.fs")), l let notAA l = None,l #else let AA l = None, l let notAA l = None,l #endif let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a //printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let ShowErrors(project:OpenProject) = for error in (GetErrors(project)) do printf "%s\n" (error.ToString()) // There are some dot completion tests in this type as well, in the systematic tests for queries member private this.VerifyDotCompListContainAllAtStartOfMarker(fileContents : string, marker : string, list :string list, ?addtlRefAssy:list, ?coffeeBreak:bool) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) //to add references if defaultArg coffeeBreak false then TakeCoffeeBreak(this.VS) let completions = DotCompletionAtStartOfMarker file marker AssertCompListContainsAll(completions, list) // There are some quickinfo tests in this file as well, in the systematic tests for queries member public this.InfoInDeclarationTestQuickInfoImpl(code : string,marker,expected,atStart, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(code, ?references = addtlRefAssy) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) if atStart then MoveCursorToStartOfMarker(file, marker) else MoveCursorToEndOfMarker(file, marker) let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" AssertContains(tooltip, expected) gpatcc.AssertExactly(0,0) member public this.AssertQuickInfoContainsAtEndOfMarker(code,marker,expected, ?addtlRefAssy : list) = this.InfoInDeclarationTestQuickInfoImpl(code,marker,expected,false,?addtlRefAssy=addtlRefAssy) static member charExpectedCompletions = [ "CompareTo"; // Members defined on System.Char "GetHashCode"] // Members defined on System.Object static member intExpectedCompletions = [ "CompareTo"; // Members defined on System.Int32 "GetHashCode"] // Members defined on System.Object static member stringExpectedCompletions = [ "Substring"; // Methods of System.String "GetHashCode"] // Methods of System.Object static member arrayExpectedCompletions = [ "Length"; ] // Methods of System.Object member private this.AutoCompleteBug70080HelperHelper(programText:string, shouldContain, shouldNotContain) = let i = programText.IndexOf("[, marker, expected, ?addtlRefAssy: list) = let (_, _, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToEndOfMarker(file,marker) let completions = CtrlSpaceCompleteAtCursor file Assert.AreNotEqual(0,completions.Length) let found = completions |> Array.exists(fun (s,_,_,_) -> s = expected) if not(found) then printfn "Expected: %A to contain %s" completions expected Assert.Fail() member private this.AutoCompletionListNotEmpty (fileContents : list) marker = let (_, _, file) = this.CreateSingleFileProject(fileContents) MoveCursorToEndOfMarker(file,marker) let completions = AutoCompleteAtCursor file Assert.AreNotEqual(0,completions.Length) member public this.TestCompletionNotShowingWhenFastUpdate (firstSrc : list) secondSrc marker = let (_, _, file) = this.CreateSingleFileProject(firstSrc) MoveCursorToEndOfMarker(file,marker) // Now delete the property and leave only dot at the end // - user is typing fast so replac the content without background compilation ReplaceFileInMemoryWithoutCoffeeBreak file secondSrc let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListIsEmpty(completions) // Recheck after some time - after the background compilation runs TakeCoffeeBreak(this.VS) let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListIsEmpty(completions) [] member this.``AutoCompletion.BeforeThis``() = let code = [ [ "type A() =" " member __.X = ()" " member this." ] [ "type A() =" " member __.X = ()" " member private this." ] [ "type A() =" " member __.X = ()" " member public this." ] [ "type A() =" " member __.X = ()" " member internal this." ] ] for c in code do AssertCtrlSpaceCompletionListIsEmpty c "this." AssertAutoCompleteCompletionListIsEmpty c "this." AssertCtrlSpaceCompletionListIsEmptyNoCoffeeBreak c "this." AssertAutoCompleteCompletionListIsEmptyNoCoffeeBreak c "this." [] [] member this.``TypeProvider.VisibilityChecksForGeneratedTypes``() = let extraRefs = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")] let check = DoWithAutoCompleteUsingExtraRefs extraRefs true SourceFileKind.FS Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.MemberSelect let code = [ "type T = GeneratedType.SampleType" "let t = T(5)" "t." "T." "type T1() = " " inherit T(5)" " member this.Foo() = this." ] check code "T." <| fun ci -> AssertCompListContains(ci, "PublicField") check code "t." <| fun ci -> AssertCompListContainsAll(ci, ["PublicM"; "PublicProp"]) AssertCompListDoesNotContainAny(ci, ["f"; "ProtectedProp"; "PrivateProp"; "ProtectedM"; "PrivateM"]) check code "= this." <| fun ci -> AssertCompListContainsAll(ci, ["PublicM"; "PublicProp"; "ProtectedProp"; "ProtectedM"]) AssertCompListDoesNotContainAny(ci, ["f"; "PrivateProp"; "PrivateM"]) [] member public this.``AdjacentToDot_01``() = testAutoCompleteAdjacentToDot ".." [] member public this.``AdjacentToDot_02``() = testAutoCompleteAdjacentToDot ".<" [] member public this.``AdjacentToDot_03``() = testAutoCompleteAdjacentToDot ".>" [] member public this.``AdjacentToDot_04``() = testAutoCompleteAdjacentToDot ".=" [] member public this.``AdjacentToDot_05``() = testAutoCompleteAdjacentToDot ".!=" [] member public this.``AdjacentToDot_06``() = testAutoCompleteAdjacentToDot ".$" [] member public this.``AdjacentToDot_07``() = testAutoCompleteAdjacentToDot ".[]" [] member public this.``AdjacentToDot_08``() = testAutoCompleteAdjacentToDot ".[]<-" [] member public this.``AdjacentToDot_09``() = testAutoCompleteAdjacentToDot ".[,]<-" [] member public this.``AdjacentToDot_10``() = testAutoCompleteAdjacentToDot ".[,,]<-" [] member public this.``AdjacentToDot_11``() = testAutoCompleteAdjacentToDot ".[,,,]<-" [] member public this.``AdjacentToDot_12``() = testAutoCompleteAdjacentToDot ".[,,,]" [] member public this.``AdjacentToDot_13``() = testAutoCompleteAdjacentToDot ".[,,]" [] member public this.``AdjacentToDot_14``() = testAutoCompleteAdjacentToDot ".[,]" [] member public this.``AdjacentToDot_15``() = testAutoCompleteAdjacentToDot ".[..]" [] member public this.``AdjacentToDot_16``() = testAutoCompleteAdjacentToDot ".[..,..]" [] member public this.``AdjacentToDot_17``() = testAutoCompleteAdjacentToDot ".[..,..,..]" [] member public this.``AdjacentToDot_18``() = testAutoCompleteAdjacentToDot ".[..,..,..,..]" [] member public this.``AdjacentToDot_19``() = testAutoCompleteAdjacentToDot ".()" [] member public this.``AdjacentToDot_20``() = testAutoCompleteAdjacentToDot ".()<-" [] member public this.``AdjacentToDot_02_Negative``() = testAutoCompleteAdjacentToDotNegative ".<" [] member public this.``AdjacentToDot_03_Negative``() = testAutoCompleteAdjacentToDotNegative ".>" [] member public this.``AdjacentToDot_04_Negative``() = testAutoCompleteAdjacentToDotNegative ".=" [] member public this.``AdjacentToDot_05_Negative``() = testAutoCompleteAdjacentToDotNegative ".!=" [] member public this.``AdjacentToDot_06_Negative``() = testAutoCompleteAdjacentToDotNegative ".$" [] member public this.``AdjacentToDot_07_Negative``() = testAutoCompleteAdjacentToDotNegative ".[]" [] member public this.``AdjacentToDot_08_Negative``() = testAutoCompleteAdjacentToDotNegative ".[]<-" [] member public this.``AdjacentToDot_09_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,]<-" [] member public this.``AdjacentToDot_10_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,,]<-" [] member public this.``AdjacentToDot_11_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,,,]<-" [] member public this.``AdjacentToDot_12_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,,,]" [] member public this.``AdjacentToDot_13_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,,]" [] member public this.``AdjacentToDot_14_Negative``() = testAutoCompleteAdjacentToDotNegative ".[,]" [] member public this.``AdjacentToDot_15_Negative``() = testAutoCompleteAdjacentToDotNegative ".[..]" [] member public this.``AdjacentToDot_16_Negative``() = testAutoCompleteAdjacentToDotNegative ".[..,..]" [] member public this.``AdjacentToDot_17_Negative``() = testAutoCompleteAdjacentToDotNegative ".[..,..,..]" [] member public this.``AdjacentToDot_18_Negative``() = testAutoCompleteAdjacentToDotNegative ".[..,..,..,..]" [] member public this.``AdjacentToDot_19_Negative``() = testAutoCompleteAdjacentToDotNegative ".()" [] member public this.``AdjacentToDot_20_Negative``() = testAutoCompleteAdjacentToDotNegative ".()<-" [] member public this.``AdjacentToDot_21_Negative``() = testAutoCompleteAdjacentToDotNegative ".+." [] member public this.``Query.CompletionInGroupJoinOn``() = let code = [ "query {" " for a in [1] do" " groupJoin b in [2] on (a.) into c" " select c" "}" ] AssertCtrlSpaceCompleteContains code "(a." ["GetHashCode"; "CompareTo"] [] [] member public this.``Query.CompletionInJoinOn``() = let code = [ "query {" " for a in [1] do" " join b in [2] on (a.)" " select (a + b)" "}" ] AssertCtrlSpaceCompleteContains code "(a." ["GetHashCode"; "CompareTo"] [] [] member public this.``TupledArgsInLambda.Completion.Bug312557_1``() = let code = [ "[(1,2);(1,2);(1,2)]" "|> Seq.iter (fun (xxx,yyy) -> printfn \"%d\" (*MARKER*)" " printfn \"%d\" 1)" ] AssertCtrlSpaceCompleteContains code "(*MARKER*)" ["xxx"; "yyy"] [] [] member public this.``TupledArgsInLambda.Completion.Bug312557_2``() = let code = [ "(1,2) |> (fun (aaa,bbb) ->" " printfn \"hi\"" " printfn \"%d%d\" b a" " printfn \"%d%d\" a b ) " ] AssertCtrlSpaceCompleteContains code "\" b" ["aaa"; "bbb"] [] AssertCtrlSpaceCompleteContains code "\" a" ["aaa"; "bbb"] [] AssertCtrlSpaceCompleteContains code "b a" ["aaa"; "bbb"] [] AssertCtrlSpaceCompleteContains code "a b" ["aaa"; "bbb"] [] [] [] member public this.``RangeOperator.IncorrectUsage``() = AssertCtrlSpaceCompletionListIsEmpty [".."] ".." AssertCtrlSpaceCompletionListIsEmpty ["..."] "..." [] [] member public this.``Inherit.CompletionInConstructorArguments1``() = let code = [ "type A(a : int) = class end" "type B() = inherit A(a)" ] AssertCtrlSpaceCompleteContains code "inherit A(a" ["abs"] [] [] [] member public this.``Inherit.CompletionInConstructorArguments2``() = let code = [ "type A(a : int) = class end" "type B() = inherit A(System.String.)" ] AssertCtrlSpaceCompleteContains code "System.String." ["Empty"] ["Array"; "Collections"] [] [] member public this.``RangeOperator.CorrectUsage``() = let useCases = [ [ "let _ = [1..]" ], "1.." [ "[" " 1" " .." "]" ], ".." ] for (code, marker) in useCases do printfn "%A" code AssertCtrlSpaceCompleteContains code marker ["abs"] [] printfn "ok" [] member public this.``Array.Length.InForRange``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let a = [|1;2;3|] for i in 0..a."] "0..a." [ "Length" ] // should contain [ ] // should not contain [] member public this.``ProtectedMembers.BaseClass`` () = let sourceCode = [ "type T() = " " inherit exn()" " member this.Run(x : exn) = x." ] AssertCtrlSpaceCompleteContains sourceCode "x." ["Message"; "HResult"] [] [] member public this.``ProtectedMembers.SelfOrDerivedClass`` () = let sources = [ [ "type T() = " " inherit exn()" " member this.Run(x : T) = x." ] [ "type T() = " " inherit exn()" " member this.Run(x : Z) = x." "and Z() =" " inherit T()" ] ] for src in sources do AssertCtrlSpaceCompleteContains src "x." ["Message"; "HResult"] [] [] [] [] member public this.``Records.DotCompletion.ConstructingRecords1``() = let prologue = "type OuterRec = {XX : int; YY : string}" let useCases = [ "let _ = (* MARKER*) {X", "(* MARKER*) {X", ["XX"] "let _ = {XX = 1; (* MARKER*)O", "(* MARKER*)O", ["OuterRec"] "let _ = {XX = 1; (* MARKER*)OuterRec.", "(* MARKER*)OuterRec.", ["XX"; "YY"] ] () for (code, marker, should) in useCases do let code = [prologue; code] AssertCtrlSpaceCompleteContains code marker should ["abs"] [] [] member public this.``Records.DotCompletion.ConstructingRecords2``() = let prologue = [ "module Mod = " " type Rec = {XX : int; YY : string}" ] let useCases = [ "let _ = (* MARKER*){X", "(* MARKER*){X", [], ["XX"] "let _ = {(* MARKER*)Mod. = 1; O", "(* MARKER*)Mod.", ["XX"; "YY"], ["System"] "let _ = {(* MARKER*)Mod.Rec. ", "(* MARKER*)Mod.Rec.", ["XX"; "YY"], ["System"] ] for (code, marker, should, shouldnot) in useCases do let code = prologue @ [code] let shouldnot = shouldnot @ ["abs"] AssertCtrlSpaceCompleteContains code marker should ["abs"] [] [] member public this.``Records.CopyOnUpdate``() = let prologue = [ "module SomeOtherPath =" " type r = { a: int; b : int }" ] let useCases = [ "let f1 x = { x with SomeOtherPath. = 3 }", "SomeOtherPath." "let f2 x = { x with SomeOtherPath.r. = 3 }", "SomeOtherPath.r." "let f3 (x : SomeOtherPath.r) = { x with }", "x with " ] for (code, marker) in useCases do let code = prologue @ [code] AssertCtrlSpaceCompleteContains code marker ["a"; "b"] ["abs"] [] [] member public this.``Records.CopyOnUpdate.NoFieldsCompletionBeforeWith``() = let code = [ "type T = {AAA : int}" "let r = {AAA = 5}" "let b = {r with }" ] AssertCtrlSpaceCompleteContains code "{r " [] ["AAA"] [] [] member public this.``Records.Constructors1``() = let prologue = [ "type X =" " val field1 : int" " val field2 : string" ] let useCases = [ " new() = { f}", "{ f" " new() = { field1; }", "field1; " " new() = { field1 = 5; }", "= 5; " " new() = { field1 = 5; f }", "5; f" ] for (code, marker) in useCases do let code = prologue @ [code] AssertCtrlSpaceCompleteContains code marker ["field1"; "field2"] ["abs"] [] [] member public this.``Records.Constructors2.UnderscoresInNames``() = let prologue = [ "type X =" " val _field1 : int" " val _field2 : string" ] let useCases = [ " new() = { _}", "{ _" " new() = { _field1; }", "_field1; " ] for (code, marker) in useCases do let code = prologue @ [code] AssertCtrlSpaceCompleteContains code marker ["_field1"; "_field2"] ["abs"] [] [] member public this.``Records.NestedRecordPatterns``() = let code = ["[1..({contents = 5}).]"] AssertCtrlSpaceCompleteContains code "5})." ["Value"; "contents"] ["CompareTo"] [] [] member public this.``Records.Separators1``() = let useCases = [ [ "type X = { AAA : int; BBB : string}" "let r = {AAA = 5 ; }" ], "AAA = 5 " [ "type X = { AAA : int; BBB : string}" "let r = {AAA = 5 ; }" "let b = {r with AAA = 5 ; }" ], "with AAA = 5 " ] for (code, marker) in useCases do printfn "checking separators" printfn "%A" code AssertCtrlSpaceCompleteContains code marker ["abs"] ["AAA"; "BBB"] [] [] member public this.``Records.Separators2``() = let useCases = [ "Offside rule", [ "type X = { AAA : int; BBB : string}" "let r =" " {" " AAA = 5" "(*MARKER*) " " }" ], "(*MARKER*)", ["AAA"; "BBB"] "Semicolumn", [ "type X = { AAA : int; BBB : string}" "let r =" " {" " AAA = 5;" "(*MARKER*) " " }" ], "(*MARKER*) ", ["AAA"; "BBB"] "Semicolumn2", [ "type X = { AAA : int; BBB : string; CCC : int}" "let r =" " {" " AAA = 5; (*M*)" " CCC = 5" " }" ], "(*M*)", ["AAA"; "BBB"; "CCC"] ] for (caption, code, marker, should) in useCases do printfn "%s" caption printfn "%A" code AssertCtrlSpaceCompleteContains code marker should ["abs"] [] [] member public this.``Records.Inherits``() = let prologue = [ "type A = class end" "type B = " " inherit A" " val f1 : int" " val f2 : int" ] let useCases = [ [" new() = { inherit A(); }"], "inherit A(); ", ["f1"; "f2"] [ " new() = { inherit A()" " (*M*)" " }"], "(*M*)", ["f1"; "f2"] ] for (code, marker, should) in useCases do let code = prologue @ code printfn "running:" printfn "%s" (String.concat "\r\n" code) AssertCtrlSpaceCompleteContains code marker should ["abs"] [] [] member public this.``Records.MissingBindings``() = let prologue = [ "type R = {AAA : int; BBB : bool}" ] let useCases = [ ["let _ = {A = 1; _; }"], "; _;", ["R"] // ["AAA"; "BBB"] <- this check should be used after fixing 279738 ["let _ = {A = 1; _=; }"], " _=;", ["R"] // ["AAA"; "BBB"] <- this check should be used after fixing 279738 ["let _ = {A = 1; R. }"], "1; R.", ["AAA"; "BBB"] ["let _ = {A = 1; _; R. }"], "_; R.", ["AAA"; "BBB"] ] for (code, marker, should) in useCases do let code = prologue @ code printfn "running:" printfn "%s" (String.concat "\r\n" code) AssertCtrlSpaceCompleteContains code marker should ["abs"] [] [] member public this.``Records.WRONG.MissingBindings``() = // this test should be removed after fixing 279738 let prologue = [ "type R = {AAA : int; BBB : bool}" ] let useCases = [ ["let _ = {A = 1; _; }"], "; _;", ["AAA"; "BBB"] ["let _ = {A = 1; _=; }"], " _=;", ["AAA"; "BBB"] ] for (code, marker, shouldNot) in useCases do let code = prologue @ code printfn "running:" printfn "%s" (String.concat "\r\n" code) AssertCtrlSpaceCompleteContains code marker [] shouldNot [] [] member public this.``Records.WRONG.IncorrectNameResEnv``() = // this test should be removed after fixing 279738 let prologue = [ "type R = {AAA : int; BBB : bool; CCC : int}" ] let useCases = [ ["let _ = {A}"], "_ = {A", ["AAA"; "BBB"; "CCC"] ["let _ = {AAA = 1; }"], "_ = {AAA = 1;", ["AAA"; "BBB"; "CCC"] ] for (code, marker, shouldNot) in useCases do let code = prologue @ code printfn "running:" printfn "%s" (String.concat "\r\n" code) AssertCtrlSpaceCompleteContains code marker [] shouldNot [] [] member public this.``Records.WRONG.ErrorsInFirstBinding``() = // errors in the first binding are critical now let prologue = [ "type X =" " val field1 : int" " val field2 : string" ] let useCases = [ " new() = { field1 =; }", "=; " " new() = { field1 =; f}", "=; f" ] for (code, marker) in useCases do let code = prologue @ [code] AssertCtrlSpaceCompleteContains code marker [] ["field1"; "field2"] [] member this.``Completion.DetectInterfaces``() = let shouldBeInterface = [ [ "type X = interface" " inherit (*M*)" ] [ "[]" "type X =" " inherit (*M*)" ] [ "[]" "type X = interface" " inherit (*M*)" ] ] for ifs in shouldBeInterface do AssertCtrlSpaceCompleteContains ifs "(*M*)" ["seq"] ["obj"] [] member this.``Completion.DetectClasses``() = let shouldBeClass = [ [ "type X = class" " inherit (*M*)" ] [ "[]" "type X =" " inherit (*M*)" ] [ "[]" "type X = class" " inherit (*M*)" ] [ "[]" "type X() = " " inherit (*M*)" ] ] for cls in shouldBeClass do AssertCtrlSpaceCompleteContains cls "(*M*)" ["obj"] ["seq"] [] member this.``Completion.DetectUnknownCompletionContext``() = let content = [ "type X = " " inherit (*M*)" ] AssertCtrlSpaceCompleteContains content "(*M*)" ["obj"; "seq"] ["abs"] [] member this.``Completion.DetectInvalidCompletionContext``() = let shouldBeInvalid = [ [ "type X = struct" " inherit (*M*)" ] [ "[]" "type X = class" " inherit (*M*)" ] [ "[]" "type X = interface" " inherit (*M*)" ] [ "[]" "type X = interface" " inherit (*M*)" ] [ "type X =" " inherit System (*M*)." ] [ "type X =" " inherit System (*M*).Collections" ] ] for invalid in shouldBeInvalid do AssertCtrlSpaceCompletionListIsEmpty invalid "(*M*)" [] member this.``Completion.LongIdentifiers``() = // System.Diagnostics.Debugger.Launch() |> ignore AssertCtrlSpaceCompleteContains [ "type X = " " inherit System. " ] "System. " ["IDisposable"; "Array"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit System." " (*M*)" ] "(*M*)" ["IDisposable"; "Array"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit System" " .(*M*)" ] "(*M*)" ["IDisposable"; "Array"] [] // caret is immediately after marker AssertCtrlSpaceCompleteContains [ "module Mod =" " let x = 1" "module Mod2 = " " let x = 1" "type X = " " inherit Mod" ] " inherit Mod" ["Mod"; "Mod2"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit Sys" ] "Sys" ["System"; "obj"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit System.Collection" ] "System.Col" ["Collections"; "IDisposable"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit System. Collections" ] "System. " ["Collections"; "IDisposable"] [] AssertCtrlSpaceCompleteContains [ "type X = " " inherit System. Collections.ArrayList()" ] "System. " ["Collections"; "IDisposable"] [] [] member public this.``Query.GroupJoin.CompletionInIncorrectJoinRelations``() = let code = [ "let t =" " query {" " for x in [1] do" " groupJoin y in [\"\"] on (x. ?=? y.) into g" " select 1 }" ] AssertCtrlSpaceCompleteContains code "(x." ["CompareTo"] ["abs"] AssertCtrlSpaceCompleteContains code "? y." ["Chars"; "Length"] ["abs"] [] member public this.``Query.Join.CompletionInIncorrectJoinRelations``() = let code = [ "let t =" " query {" " for x in [1] do" " join y in [\"\"] on (x. ?=? y.)" " select 1 }" ] AssertCtrlSpaceCompleteContains code "(x." ["CompareTo"] ["abs"] AssertCtrlSpaceCompleteContains code "? y." ["Chars"; "Length"] ["abs"] [] member public this.``Query.ForKeywordCanCompleteIntoIdentifier``() = let code = [ "let form = 42" "let t =" " query {" " for" " }" ] AssertCtrlSpaceCompleteContains code "for" ["form"] [] // 'for' is a keyword, but should not prevent completion [] member public this.``ObjInstance.InheritedClass.MethodsWithDiffAccessbility``() = AssertAutoCompleteContainsNoCoffeeBreak [ "type Base = val mutable baseField : int val mutable private baseFieldPrivate : int new () = { baseField = 0; baseFieldPrivate=1 } type Derived = val mutable derivedField : int val mutable private derivedFieldPrivate : int inherit Base new () = { derivedField = 0;derivedFieldPrivate = 0 } let derived = Derived() derived.derivedField"] "derived." [ "baseField"; "derivedField" ] // should contain [ "baseFieldPrivate"; "derivedFieldPrivate" ] // should not contain [] member public this.``Visibility.InheritedClass.MethodsWitfDiffAccessibility``() = AssertAutoCompleteContainsNoCoffeeBreak [ "type Base = val mutable baseField : int val mutable private baseFieldPrivate : int new () = { baseField = 0; baseFieldPrivate=1 } type Derived = val mutable derivedField : int val mutable private derivedFieldPrivate : int inherit Base new () = { derivedField = 0;derivedFieldPrivate = 0 } member this.Method() = (*marker*)this.baseField"] "(*marker*)this." [ "baseField"; "derivedField"; "derivedFieldPrivate" ] // should contain [ "baseFieldPrivate" ] // should not contain [] member public this.``Identifier.Array.AfterassertKeyword``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let x = [1;2;3] " "assert x." ] "x." [ "Head" ] // should contain (from List) [ "Listeners" ] // should not contain (from System.Diagnostics.Debug) [] member public this.``CtrlSpaceCompletion.Bug130670.Case1``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ "let i = async.Return(4)" ] ")" [ "AbstractClassAttribute" ] // should contain (top-level) [ "GetType" ] // should not contain (object instance method) [] member public this.``CtrlSpaceCompletion.Bug130670.Case2``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ """ let x = 42 let r = x + 1 """ ] "1 " [ "AbstractClassAttribute" ] // should contain (top-level) [ "CompareTo" ] // should not contain (instance method on int) [] member public this.``CtrlSpaceCompletion.Bug294974.Case1``() = AssertCtrlSpaceCompleteContains [ """ let xxx = [1] (*M*)xxx.IsEmpty // Ctrl-J just before the '.'""" ] "(*M*)xxx" [ "xxx" ] // should contain (completions before dot) [ "IsEmpty" ] // should not contain (completions after dot) [] member public this.``CtrlSpaceCompletion.Bug294974.Case2``() = AssertCtrlSpaceCompleteContains [ """ let xxx = [1] xxx .IsEmpty // Ctrl-J just before the '.' """ ] "xxx " [ "AbstractClassAttribute" ] // should contain (top-level) [ "IsEmpty" ] // should not contain (completions after dot) [] member public this.``ObsoleteProperties.6377_1``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Security.SecurityManager." ] "SecurityManager." [ "GetStandardSandbox" ] // should contain [ "get_SecurityEnabled"; "set_SecurityEnabled" ] // should not contain [] member public this.``ObsoleteProperties.6377_2``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Threading.Thread.CurrentThread." ] "CurrentThread." [ "CurrentCulture" ] // should contain: just make sure something shows [ "get_ApartmentState"; "set_ApartmentState" ] // should not contain [] member public this.``PopupsVersusCtrlSpaceOnDotDot.FirstDot.Popup``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Console..BackgroundColor" ] "System.Console." [ "BackgroundColor" ] // should contain (from prior System.Console) [ "abs" ] // should not contain (top-level autocomplete on empty identifier) [] member public this.``PopupsVersusCtrlSpaceOnDotDot.FirstDot.CtrlSpace``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ "System.Console..BackgroundColor" ] "System.Console." [ "BackgroundColor" ] // should contain (from prior System.Console) [ "abs" ] // should not contain (top-level autocomplete on empty identifier) [] member public this.``PopupsVersusCtrlSpaceOnDotDot.SecondDot.Popup``() = // Salsa is no yet capable of determining whether there would be a popup, it can only test what would appear if there were. // So can't do test below. // AssertAutoCompleteContainsNoCoffeeBreak // [ "System.Console..BackgroundColor" ] // "System.Console.." // [ ] // should be empty - in fact, there is no popup here // [ "abs"; "BackgroundColor" ] // should not contain anything () [] member public this.``PopupsVersusCtrlSpaceOnDotDot.SecondDot.CtrlSpace``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ "System.Console..BackgroundColor" ] "System.Console.." [ ] // should contain nothing - .. is not properly used range operator [ "abs" ] // should not contain (from prior System.Console) [] member public this.``DotCompletionInPatternsPartOfLambda``() = let content = ["let _ = fun x . -> x + 1"] AssertCtrlSpaceCompletionListIsEmpty content "x ." [] member public this.``DotCompletionInBrokenLambda``() = let content = ["1 |> id (fun x .> x)"] AssertCtrlSpaceCompletionListIsEmpty content "x ." [] member public this.``DotCompletionInPatterns``() = let useCases = [ ["let (x, y .) = 1, 2"], "y ." ["let run (o : obj) = match o with | :? int as i . -> 1 | _ -> 0"], "as i ." ["let (``x.y``, ``y.z`` .) = 1, true"], "z`` ." ["let ``x`` . = 1"], "x`` ." ] for (source, marker) in useCases do AssertCtrlSpaceCompletionListIsEmpty source marker [] member public this.``DotCompletionWithBrokenLambda``() = let errors = [ "1 |> id (fun)" "1 |> id (fun x > x)" "1 |> id (fun x > )" "1 |> id (fun x -> )" ] let testcases = [ for error in errors do let source = [ "let x = 1" "x." ] yield (error::source), "x.", ["CompareTo"], ["Array"] yield (source @ [error]), "x.", ["CompareTo"], ["Array"] ] for (source, marker, should, shouldnot) in testcases do printfn "%A" source AssertCtrlSpaceCompleteContains source marker should shouldnot [] member public this.``AfterConstructor.5039_1``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let someCall(x) = null" "let xe = someCall(System.IO.StringReader()." ] "StringReader()." [ "ReadBlock" ] // should contain (StringReader) [ "LastIndexOfAny" ] // should not contain (String) [] member public this.``AfterConstructor.5039_1.CoffeeBreak``() = AssertAutoCompleteContains [ "let someCall(x) = null" "let xe = someCall(System.IO.StringReader()." ] "StringReader()." [ "ReadBlock" ] // should contain (StringReader) [ "LastIndexOfAny" ] // should not contain (String) [] member public this.``AfterConstructor.5039_2``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Random()." ] "Random()." [ "NextDouble" ] // should contain [ ] // should not contain [] member public this.``AfterConstructor.5039_3``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Collections.Generic.List()." ] "List()." [ "BinarySearch" ] // should contain [ ] // should not contain [] member public this.``AfterConstructor.5039_4``() = AssertAutoCompleteContainsNoCoffeeBreak [ "System.Collections.Generic.List()." ] "List()." [ "BinarySearch" ] // should contain [ ] // should not contain [] member public this.``Literal.809979``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let value=uint64." ] "uint64." [ ] // should contain [ "Parse" ] // should not contain [] member public this.``NameSpace.AsConstructor``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak [ "new System.DateTime()" ] "System.DateTime(" // move to marker ["System";"Array2D"] ["DaysInMonth"; "AddDays" ] // should contain top level info, no static or instance DateTime members! [] member public this.``DotAfterApplication1``() = AssertAutoCompleteContainsNoCoffeeBreak ["let g a = new System.Random()" "(g [])."] "(g [])." ["Next"] [ ] [] member public this.``DotAfterApplication2``() = AssertAutoCompleteContainsNoCoffeeBreak ["let g a = new System.Random()" "g []."] "g []." ["Head"] [ ] [] member public this.``Quickinfo.809979``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let value=uint64." ] "uint64." [ ] // should contain [ "Parse" ] // should not contain /// No intellisense in comments/strings! [] member public this.``InString``() = this.VerifyCtrlSpaceCompListIsEmptyAtEndOfMarker( fileContents = """ // System.C """ , marker = "// System.C" ) [] member public this.``InComment``() = this.VerifyCtrlSpaceCompListIsEmptyAtEndOfMarker( fileContents = """ let s = "System.C" """, marker = "\"System.C") /// Intellisense at the top level (on white space) [] member public this.``Identifier.OnWhiteSpace.AtTopLevel``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["(*marker*) "] "(*marker*) " ["System"; "Array2D"] ["Int32"] /// Intellisense at the top level (after a partial token). All matches should be shown even if there is a unique match [] member public this.``TopLevelIdentifier.AfterPartialToken1``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let foobar = 1" "(*marker*)fo"] "(*marker*)fo" ["System";"Array2D";"foobar"] ["Int32"] [] member public this.``TopLevelIdentifier.AfterPartialToken2``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let foobar = 1" "(*marker*)fo"] "(*marker*)" ["System";"Array2D";"foobar"] [] (* these issues have not been fixed yet, but when they are, here are some tests [] member public this.``AutoComplete.Bug65730``() = AssertAutoCompleteContains [ "let f x y = x.Equals(y)" ] "x." // marker [ "Equals" ] // should contain [ ] // should not contain [] member public this.``AutoComplete.Bug65731_A``() = AssertAutoCompleteContains [ @"module SomeOtherPath =" @" type r = { a: int; b : int }" @"let f1 x = { x with SomeOtherPath.a = 3 } // a" ] "SomeOtherPath." // marker [ "a" ] // should contain [ ] // should not contain [] member public this.``AutoComplete.Bug65731_B``() = AssertAutoCompleteContains [ @"module SomeOtherPath =" @" type r = { a: int; b : int }" @"let f2 x = { x with SomeOtherPath.r.a = 3 } // a" ] "SomeOtherPath.r." // marker [ "a" ] // should contain [ ] // should not contain [] member public this.``AutoComplete.Bug69654_0``() = let code = [ @" let q = let a = 42 let b = (fun i -> i) 43 // i shows up in Ctrl-space list here, b does not ((* *)) // but in the parens, things are correct again "] let solution = CreateSolution(this.VS) let project = CreateProject(solution,"testproject") let file = AddFileFromText(project,"File1.fs", code) let file = OpenFile(project,"File1.fs") TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToStartOfMarker(file, "//") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "b") AssertCompListDoesNotContain(completions, "i") MoveCursorToStartOfMarker(file, "(* *)") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "b") AssertCompListDoesNotContain(completions, "i") gpatcc.AssertExactly(0,0) [] member public this.``AutoComplete.Bug69654_1``() = let code = [ "let s = async {" " let! xxx = async { return 0 }" " xxx.CompareTo |> ignore // the dot works" " xxx |> ignore // no xxx" " do xxx |> ignore // no xxx" " return xxx // no xxx" " }" ] let solution = CreateSolution(this.VS) let project = CreateProject(solution,"testproject") let file = AddFileFromText(project,"File1.fs", code) let file = OpenFile(project,"File1.fs") TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, "xx.Comp") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "CompareTo") MoveCursorToStartOfMarker(file, "xx.Comp") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToStartOfMarker(file, "xx |>") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToEndOfMarker(file, "do xx") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToEndOfMarker(file, "return xx") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") gpatcc.AssertExactly(0,0) [] member public this.``AutoComplete.Bug69654_2``() = let code = [ "let s = async {" " use xxx = null" " xxx.Dispose() // the dot works" " xxx |> ignore // no xxx" " do xxx |> ignore // no xxx" " return xxx // no xxx" " }" ] let solution = CreateSolution(this.VS) let project = CreateProject(solution,"testproject") let file = AddFileFromText(project,"File1.fs", code) let file = OpenFile(project,"File1.fs") TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, "xx.Disp") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "Dispose") MoveCursorToStartOfMarker(file, "xx.Disp") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToStartOfMarker(file, "xx |>") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToEndOfMarker(file, "do xx") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") MoveCursorToEndOfMarker(file, "return xx") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "xxx") gpatcc.AssertExactly(0,0) *) [] member public this.``List.AfterAddLinqNamespace.Bug3754``() = let code = ["open System.Xml.Linq" "List." ] let (_, _, file) = this.CreateSingleFileProject(code, references = ["System.Xml"; "System.Xml.Linq"]) MoveCursorToEndOfMarker(file, "List.") let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, [ "map"; "filter" ] ) [] member public this.``Global``() = AssertAutoCompleteContainsNoCoffeeBreak ["global."] "global." ["System"; "Microsoft" ] [] [] member public this.``Duplicates.Bug4103a``() = let code = [ "open Microsoft.FSharp.Quotations" "Expr." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, "Expr.") let completions = AutoCompleteAtCursor file // Get description for Expr.Var let (_, _, descrFunc, _) = completions |> Array.find (fun (name, _, _, _) -> name = "WhileLoop") let descr = descrFunc() // Check whether the description contains the name only once let occurrences = (" " + descr + " ").Split([| "WhileLoop" |], System.StringSplitOptions.None).Length - 1 // You'll get two occurrances - one for the signature, and one for the doc AssertEqualWithMessage(2, occurrences, "The entry for 'Expr.Var' is duplicated.") /// Testing autocomplete after a dot directly following method call [] member public this.``AfterMethod.Bug2296``() = AssertAutoCompleteContainsNoCoffeeBreak [ "type System.Int32 with" " member x.Int32Member() = 0" "\"\".CompareTo(\"a\")." ] "(\"a\")." ["Int32Member" ] [] /// Testing autocomplete after a dot directly following overloaded method call [] member public this.``AfterMethod.Overloaded.Bug2296``() = AssertAutoCompleteContainsNoCoffeeBreak ["type System.Boolean with" " member x.BooleanMember() = 0" "\"\".Contains(\"a\")."] "(\"a\")." ["BooleanMember"] [] [] member public this.``BasicGlobalMemberList``() = AssertAutoCompleteContainsNoCoffeeBreak ["let x = 1" "x."] "x." ["CompareTo"; "GetHashCode"] [] [] member public this.``CharLiteral``() = AssertAutoCompleteContainsNoCoffeeBreak ["let x = \"foo\"" "let x' = \"bar\"" "x'."] "x'." ["CompareTo";"GetHashCode"] [] [] member public this.``GlobalMember.ListOnIdentifierEndingWithTick``() = AssertAutoCompleteContainsNoCoffeeBreak ["let x' = 1" "x'."] "x'." ["CompareTo";"GetHashCode"] [] [] member public this.``GlobalMember.ListOnIdentifierContainingTick``() = AssertAutoCompleteContainsNoCoffeeBreak ["let x'y = 1" "x'y."] "x'y." ["CompareTo";"GetHashCode"] [] [] member public this.``GlobalMember.ListWithPartialMember1``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let x = 1" "x.CompareT"] "x.CompareT" ["CompareTo";"GetHashCode"] [] [] member public this.``GlobalMember.ListWithPartialMember2``() = AssertAutoCompleteContainsNoCoffeeBreak ["let x = 1" "x.CompareT"] "x." ["CompareTo";"GetHashCode"] [] /// Wrong intellisense for array [] member public this.``DotOff.Parenthesized.Expr``() = AssertAutoCompleteContainsNoCoffeeBreak ["let string_of_int (x:int) = x.ToString()" "let strs = Array.init 10 string_of_int" "let x = (strs.[1])."] "(strs.[1])." ["Substring";"GetHashCode"] [] /// Wrong intellisense for array [] member public this.``DotOff.ArrayIndexerNotation``() = AssertAutoCompleteContainsNoCoffeeBreak ["let string_of_int (x:int) = x.ToString()" "let strs = Array.init 10 string_of_int" "let test1 = strs.[1]."] "strs.[1]." ["Substring";"GetHashCode"] [] /// Wrong intellisense for array [] member public this.``DotOff.ArraySliceNotation1``() = AssertAutoCompleteContainsNoCoffeeBreak ["let string_of_int (x:int) = x.ToString()" "let strs = Array.init 10 string_of_int" "let test2 = strs.[1..]." "let test3 = strs.[..1]." "let test4 = strs.[1..1]."] "trs.[1..]." ["Length"] [] [] member public this.``DotOff.ArraySliceNotation2``() = AssertAutoCompleteContainsNoCoffeeBreak ["let string_of_int (x:int) = x.ToString()" "let strs = Array.init 10 string_of_int" "let test2 = strs.[1..]." "let test3 = strs.[..1]." "let test4 = strs.[1..1]."] "strs.[..1]." ["Length"] [] [] member public this.``DotOff.ArraySliceNotation3``() = AssertAutoCompleteContainsNoCoffeeBreak ["let string_of_int (x:int) = x.ToString()" "let strs = Array.init 10 string_of_int" "let test2 = strs.[1..]." "let test3 = strs.[..1]." "let test4 = strs.[1..1]."] "strs.[1..1]." ["Length"] [] [] member public this.``DotOff.DictionaryIndexer``() = AssertAutoCompleteContainsNoCoffeeBreak ["let dict = new System.Collections.Generic.Dictionary()" "let test5 = dict.[1]."] "dict.[1]." ["Length"] [] /// intellisense on DOT [] member public this.``EmptyFile.Dot.Bug1115``() = this.VerifyAutoCompListIsEmptyAtEndOfMarker( fileContents = "." , marker = ".") [] member public this.``Identifier.NonDottedNamespace.Bug1347``() = this.AssertCtrlSpaceCompletionContains( ["open System" "open Microsoft.FSharp.Math" "let x = Mic" "let p7 =" " let seive limit = " " let isPrime = Array.create (limit+1) true" " for n in"], "let x = Mic", "Microsoft") [] member public this.``MatchStatement.WhenClause.Bug2519``() = AssertAutoCompleteContainsNoCoffeeBreak ["type DU = X of int" "let timefilter pkt =" " match pkt with" " | X(hdr) when (*aaa*)hdr." " | _ -> ()"] "(*aaa*)hdr." ["CompareTo";"GetHashCode"] [] [] member public this.``String.BeforeIncompleteModuleDefinition.Bug2385``() = AssertAutoCompleteContainsNoCoffeeBreak ["let s = \"hello\"." "module Timer ="] "\"hello\"." ["Substring";"GetHashCode"] [] [] [] member public this.``Project.FsFileWithBuildAction``() = AssertAutoCompleteContainsNoCoffeeBreak ["let i = 4" "let r = i.ToString()" "let x = File1.bob"] "i." ["CompareTo"] [] /// Dotting off a string literal should work. [] member public this.``DotOff.String``() = AssertAutoCompleteContainsNoCoffeeBreak ["\"x\". (*marker*)" ""] "\"x\"." ["Substring";"GetHashCode"] [] /// FEATURE: Pressing dot (.) after an local variable will produce an Intellisense list of members the user may select. [] member public this.``BasicLocalMemberList``() = AssertAutoCompleteContainsNoCoffeeBreak ["let MyFunction (s:string) = " " let y=\"dog\"" " y." " ()"] " y." ["Substring";"GetHashCode"] [] [] member public this.``LocalMemberList.WithPartialMemberEntry1``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let MyFunction (s:string) = " " let y=\"dog\"" " y.Substri" " ()"] " y.Substri" ["Substring";"GetHashCode"] [] [] member public this.``LocalMemberList.WithPartialMemberEntry2``() = AssertAutoCompleteContainsNoCoffeeBreak ["let MyFunction (s:string) = " " let y=\"dog\"" " y.Substri" " ()"] " y." ["Substring";"GetHashCode"] [] [] member public this.``CurriedArguments.Regression1``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let f" ["fffff"] [] [] member public this.``CurriedArguments.Regression2``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let test1 = f" ["fffff"] [] [] member public this.``CurriedArguments.Regression3``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let test1 = fffff \"a\" gg" ["ggggg"] [] [] member public this.``CurriedArguments.Regression4``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let test2 = fffff 1 gg" ["ggggg"] [] [] member public this.``CurriedArguments.Regression5``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let test3 = fffff gg" ["ggggg"] [] [] member public this.``CurriedArguments.Regression6``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["let fffff x y = 1" "let ggggg = 1" "let test1 = fffff \"a\" ggggg" "let test2 = fffff 1 ggggg" "let test3 = fffff ggggg ggggg"] "let test3 = fffff ggggg gg" ["ggggg"] [] // Test whether standard types appear in the completion list under both F# and .NET name [] member public this.``StandardTypes.Bug4403``() = AssertCtrlSpaceCompleteContainsNoCoffeeBreak ["open System"; "let x=" ] "let x=" ["int8"; "int16"; "int32"; "string"; "SByte"; "Int16"; "Int32"; "String" ] [ ] // Test whether standard types appear in the completion list under both F# and .NET name [] member public this.``ValueDeclarationHidden.Bug4405``() = AssertAutoCompleteContainsNoCoffeeBreak [ "do " " let a = \"string\"" " let a = if true then 0 else a."] "else a." ["IndexOf"; "Substring"] [ ] [] member public this.``StringFunctions``() = let code = [ "let y = String." "let f x = 0" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"String.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) for completion in completions do match completion with | _,_,_,DeclarationType.FunctionValue -> () | name,_,_,x -> failwith (sprintf "Unexpected item %s seen with declaration type %A" name x) // FEATURE: Pressing ctrl+space or ctrl+j will give a list of valid completions. [] //Verified atleast "Some" is contained in the Ctrl-Space Completion list member public this.``NonDotCompletion``() = this.AssertCtrlSpaceCompletionContains( ["let x = S"], "x = S", "Some") [] [] [] // This test case checks Pressing ctrl+space on the provided Type instance method shows list of valid completions member this.``TypeProvider.EditorHideMethodsAttribute.InstanceMethod.CtrlSpaceCompletionContains``() = this.AssertCtrlSpaceCompletionContains( fileContents = [""" let t = new N1.T1() t.I"""], marker = "t.I", expected = "IM1", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] // This test case checks Pressing ctrl+space on the provided Type Event shows list of valid completions member this.``TypeProvider.EditorHideMethodsAttribute.Event.CtrlSpaceCompletionContains``() = this.AssertCtrlSpaceCompletionContains( fileContents = [""" let t = new N.T() t.Eve"""], marker = "t.Eve", expected = "Event1", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] [] [] // This test case checks Pressing ctrl+space on the provided Type static parameter and verify "int" is in the list just to make sure bad things don't happen and autocomplete window pops up member this.``TypeProvider.EditorHideMethodsAttribute.Type.CtrlSpaceCompletionContains``() = this.AssertCtrlSpaceCompletionContains( fileContents = [""" type boo = N1.T] member public this.``Class.Self.Bug1544``() = this.VerifyAutoCompListIsEmptyAtEndOfMarker( fileContents = " type Foo() = member this.", marker = "this.") // No completion list at the end of file. [] member public this.``Idenfitier.AfterDefined.Bug1545``() = this.AutoCompletionListNotEmpty ["let x = [|\"hello\"|]" "x."] "x." [] member public this.``Bug243082.DotAfterNewBreaksCompletion`` () = this.AutoCompletionListNotEmpty [ "module A =" " type B() = class end" "let s = 1" "s." "let z = new A."] "s." [] member public this.``Bug243082.DotAfterNewBreaksCompletion2`` () = this.AutoCompletionListNotEmpty [ "let s = 1" "s." "new System."] "s." [] [] member this.``QueryExpression.CtrlSpaceSmokeTest0``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = si(*Marker*)""" , marker = "(*Marker*)", list = ["sin"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest0b``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = qu(*Marker*)""" , marker = "(*Marker*)", list = ["query"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest1``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for x in [1;2;3] do sel(*Marker*)""" , marker = "(*Marker*)", list = ["select"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest1b``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for x in [1;2;3] do (*Marker*)""" , marker = "(*Marker*)", list = ["select"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest2``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for x in [1;2;3] do sel(*Marker*) }""" , marker = "(*Marker*)", list = ["select"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest3``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for xxxxxx in [1;2;3] do xxx(*Marker*)""" , marker = "(*Marker*)", list = ["xxxxxx"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest3b``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = seq { for xxxxxx in [1;2;3] do xxx(*Marker*)""" , marker = "(*Marker*)", list = ["xxxxxx"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``QueryExpression.CtrlSpaceSmokeTest3c``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = async { for xxxxxx in [1;2;3] do xxx(*Marker*)""" , marker = "(*Marker*)", list = ["xxxxxx"], addtlRefAssy=standard40AssemblyRefs ) [] [] member this.``AsyncExpression.CtrlSpaceSmokeTest3d``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = async { for xxxxxx in [1;2;3] do xxx(*Marker*) }""" , marker = "(*Marker*)", list = ["xxxxxx"], addtlRefAssy=standard40AssemblyRefs ) member this.QueryExpressionFileExamples() = [ """ module BasicTest let x = query { for x in [1;2;3] do (*TYPING*)""" """ module BasicTest let x = query { for x in [1;2;3] do (*TYPING*) }""" """ module BasicTest let x = query { for x in [1;2;3] do (*TYPING*)""" """ module BasicTest let x = query { for x in [1;2;3] do if x > 3 then (*TYPING*)""" """ module BasicTest let x = query { for x in [1;2;3] do where (x > 3) (*TYPING*)""" """ module BasicTest let x = query { for x in [1;2;3] do sortBy x (*TYPING*)""" """ module BasicTest let x = query { for x in [1;2;3] do (*TYPING*) sortBy x """ """ module BasicTest let x = query { for x in [1;2;3] do let y = x + 1 (*TYPING*)""" ] [] /// This is the case where at (*TYPING*) we first type 1...N-1 characters of the target custom operation and then invoke the completion list, and we check that the completion list contains the custom operation [] [] member this.``QueryExpression.CtrlSpaceSystematic1``() = let rec strictPrefixes (s:string) = seq { if s.Length > 1 then let s = s.[0..s.Length-2] in yield s; yield! strictPrefixes s} for customOperation in ["select";"skip";"contains";"groupJoin"] do printfn " Running systematic tests looking for completion of '%s' at multiple locations" customOperation for idText in strictPrefixes customOperation do for i,fileContents in this.QueryExpressionFileExamples() |> List.mapi (fun i x -> (i,x)) do let fileContents = fileContents.Replace("(*TYPING*)",idText+"(*Marker*)") try this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = fileContents, marker = "(*Marker*)", list = [customOperation], addtlRefAssy=standard40AssemblyRefs ) with _ -> printfn "FAILURE: customOperation = %s, idText = %s, fileContents <<<%s>>>" customOperation idText fileContents reraise() member this.WordByWordSystematicTestWithSpecificExpectations(prefix, suffixes, lines, variations, knownFailures:list<_>) = let knownFailuresDict = set knownFailures printfn "Building systematic tests, excluding %d known failures" knownFailures.Length let tests = [ for (suffixName,suffixText) in suffixes do for builderName in variations do for (lineName, line, checks) in lines builderName do for check in checks do let expectedToFail = knownFailuresDict.Contains (lineName, suffixName, builderName, check) yield (lineName, suffixName, suffixText, builderName, line, check, expectedToFail) ] let unexpectedSuccesses = ResizeArray<_>() let successes = ResizeArray<_>() let failures = ResizeArray<_>() printfn "Running %d systematic tests.... Failure will be printed if it occurs..." tests.Length for (lineName, suffixName, suffixText, builderName, fileContents, check, expectedToFail) in tests do if successes.Count % 50 = 0 then printfn "Making progress, run %d so far..." successes.Count let fileContents = prefix + fileContents + suffixText try match check with | QuickInfoExpected(where,expected) -> let where = where.[0..where.Length-2] // chop a character off to get in the middle of the text this.AssertQuickInfoContainsAtEndOfMarker(fileContents,where,expected,addtlRefAssy=standard40AssemblyRefs ) | AutoCompleteExpected(where,expected) -> this.VerifyCtrlSpaceListContainAllAtStartOfMarker(fileContents,where,[expected],addtlRefAssy=standard40AssemblyRefs ) | DotCompleteExpected(where,expected) -> this.VerifyDotCompListContainAllAtStartOfMarker(fileContents,where,[expected], addtlRefAssy=standard40AssemblyRefs) if not expectedToFail then successes.Add(lineName,suffixName,builderName,check) else unexpectedSuccesses.Add(lineName,suffixName,builderName,check) with _ -> if not expectedToFail then printfn " FAILURE on systematic test: (\"%s\", \"%s\", \"%s\", %A) " lineName suffixName builderName check printfn "\n\nfileContents = <<<%s>>>" fileContents failures.Add(lineName,suffixName,builderName,check) let nFail = failures.Count let nSuccess = successes.Count printfn "%d TESTS, %d SUCCESS, %d FAILURE, %%%2.2f success rate" (nSuccess+nFail) successes.Count nFail (float nSuccess / float (nSuccess+nFail) * 100.0) if failures.Count <> 0 then printfn "EXTRA OBSERVED FAILURES: " printfn "[" for (lineName,suffixName,builderName,check) in failures do printfn " (\"%s\", \"%s\", \"%s\", %A) " lineName suffixName builderName check printfn "]" if unexpectedSuccesses.Count <> 0 then printfn "EXTRA OBSERVED SUCCESSES: " printfn "[" for (lineName,suffixName,builderName,check) in unexpectedSuccesses do printfn " (\"%s\", \"%s\", \"%s\", %A) " lineName suffixName builderName check printfn "]" if failures.Count <> 0 || unexpectedSuccesses.Count <> 0 then raise <| new Exception("there were unexpected results, see console output for details") [] [] [] member this.``QueryExpressions.QueryAndSequenceExpressionWithForYieldLoopSystematic``() = let prefix = """ module Test let aaaaaa = [| "1" |] """ let suffixes = [ "Empty", ""; "ClosingBrace", " }"; "ClosingBrace,NextDefinition", " } \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextDefinition", " \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextTypeDefinition", " \ntype NextDefinition() = member x.P = 1\n" ] let lines b = [ "L1", "let v = " + b + " { " , [] "L2", "let v = " + b + " { for " , [] "L3", "let v = " + b + " { for bbbb " , [QI "for bbbb" "val bbbb"] "L4", "let v = " + b + " { for bbbb in (*C*)" , [QI "for bbbb" "val bbbb"; AC "(*C*)" "aaaaaa" ] "L5", "let v = " + b + " { for bbbb in [ (*C*) " , [QI "for bbbb" "val bbbb"; AC "(*C*)" "aaaaaa" ] "L6", "let v = " + b + " { for bbbb in [ aaa(*C*) " , [QI "for bbbb" "val bbbb"; AC "(*C*)" "aaaaaa" ] "L7", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*)" , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; DC "(*D1*)" "Length" ] "L8", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] " , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; DC "(*D1*)" "Length" ] "L9", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do (*C*)" , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; AC "(*C*)" (if b = "query" then "select" else "sin"); DC "(*D1*)" "Length" ] "L10", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield (*C*) " , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; AC "(*C*)" "aaaaaa"; AC "(*C*)" "bbbb" ; DC "(*D1*)" "Length" ] "L11", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield bb(*C*) " , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; AC "(*C*)" "bbbb" ; DC "(*D1*)" "Length" ] "L12", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield bbbb(*D2*) " , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; QI "yield bbbb" "val bbbb"; DC "(*D1*)" "Length" ; DC "(*D2*)" "Length" ] "L13", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield bbbb(*D2*) + (*C*)" , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; QI "yield bbbb" "val bbbb"; AC "(*C*)" "aaaaaa"; AC "(*C*)" "bbbb" ; DC "(*D1*)" "Length" ; DC "(*D2*)" "Length" ] "L14", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield bbbb(*D2*) + bb(*C*)" , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; QI "yield bbbb" "val bbbb"; AC "(*C*)" "bbbb" ; DC "(*D1*)" "Length" ; DC "(*D2*)" "Length" ] "L15", "let v = " + b + " { for bbbb in [ aaaaaa(*D1*) ] do yield bbbb(*D2*) + bbbb(*D3*)" , [QI "for bbbb" "val bbbb"; QI "aaaaaa" "val aaaaaa"; QI "yield bbbb" "val bbbb"; QI "+ bbbb" "val bbbb"; DC "(*D3*)" "Length" ] ] let knownFailures = [ ("L10", "Empty", "seq", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "Empty", "query", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "ClosingBrace", "query", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "ClosingBrace,NextDefinition", "query", AutoCompleteExpected ("(*C*)","bbbb")) ("L3", "NoClosingBrace,NextDefinition", "seq", QuickInfoExpected ("for bbbb","val bbbb")) ("L6", "NoClosingBrace,NextDefinition", "seq", QuickInfoExpected ("for bbbb","val bbbb")) ("L6", "NoClosingBrace,NextDefinition", "seq", AutoCompleteExpected ("(*C*)","aaaaaa")) ("L7", "NoClosingBrace,NextDefinition", "seq", QuickInfoExpected ("for bbbb","val bbbb")) ("L7", "NoClosingBrace,NextDefinition", "seq", QuickInfoExpected ("aaaaaa","val aaaaaa")) ("L7", "NoClosingBrace,NextDefinition", "seq", DotCompleteExpected ("(*D1*)","Length")) ("L3", "NoClosingBrace,NextDefinition", "query", QuickInfoExpected ("for bbbb","val bbbb")) ("L6", "NoClosingBrace,NextDefinition", "query", QuickInfoExpected ("for bbbb","val bbbb")) ("L6", "NoClosingBrace,NextDefinition", "query", AutoCompleteExpected ("(*C*)","aaaaaa")) ("L7", "NoClosingBrace,NextDefinition", "query", QuickInfoExpected ("for bbbb","val bbbb")) ("L7", "NoClosingBrace,NextDefinition", "query", QuickInfoExpected ("aaaaaa","val aaaaaa")) ("L7", "NoClosingBrace,NextDefinition", "query", DotCompleteExpected ("(*D1*)","Length")) ("L10", "NoClosingBrace,NextDefinition", "seq", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "NoClosingBrace,NextTypeDefinition", "seq", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "NoClosingBrace,NextDefinition", "query", AutoCompleteExpected ("(*C*)","bbbb")) ("L10", "NoClosingBrace,NextTypeDefinition", "query", AutoCompleteExpected ("(*C*)","bbbb")) ] this.WordByWordSystematicTestWithSpecificExpectations(prefix, suffixes, lines, ["seq";"query"], knownFailures) [] [] [] /// Incrementally enter a seq{ .. while ...} loop and check for availability of intellisense etc. member this.``SequenceExpressions.SequenceExprWithWhileLoopSystematic``() = let prefix = """ module Test let abbbbc = [| 1 |] let aaaaaa = 0 """ let suffixes = [ "Empty", ""; "ClosingBrace", " }"; "ClosingBrace,NextDefinition", " } \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextDefinition", " \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextTypeDefinition", " \ntype NextDefinition() = member x.P = 1\n" ] let lines b = [ "L1", "let f() = seq { while abb(*C*)" , [AC "(*C*)" "abbbbc"] "L2", "let f() = seq { while abbbbc(*D1*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"] "L3", "let f() = seq { while abbbbc(*D1*) do (*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; AC "(*C*)" "abbbbc"] "L4", "let f() = seq { while abbbbc(*D1*) do abb(*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; AC "(*C*)" "abbbbc"] "L5", "let f() = seq { while abbbbc(*D1*) do abbbbc(*D2*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; DC "(*D2*)" "Length"; ] "L6", "let f() = seq { while abbbbc(*D1*) do abbbbc.[(*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "abbbbc"; AC "(*C*)" "aaaaaa"; ] "L7", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaa(*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] "L7a", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaa(*C*)]" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] "L7b", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaa(*C*)] <- " , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] "L7c", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaa(*C*)] <- 1" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] "L7d", "let f() = seq { while abbbbc(*D1*) do abbbbc.[ (*C*) ] <- 1" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] "L8", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaaaaa]" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; ] "L9", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaaaaa] <- (*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "abbbbc"; AC "(*C*)" "aaaaaa"; ] "L10", "let f() = seq { while abbbbc(*D1*) do abbbbc.[aaaaaa] <- aaa(*C*)" , [QI "while abbbbc" "val abbbbc"; DC "(*D1*)" "Length"; QI "do abbbbc" "val abbbbc"; AC "(*C*)" "aaaaaa"; ] ] let knownFailures = [ ] this.WordByWordSystematicTestWithSpecificExpectations(prefix, suffixes, lines, [""], knownFailures) [] [] [] /// Incrementally enter query with a 'join' and check for availability of quick info, auto completion and dot completion member this.``QueryAndOtherExpressions.WordByWordSystematicJoinQueryOnSingleLine``() = let prefix = """ module Test let abbbbc = [| 1 |] let aaaaaa = 0 """ let suffixes = [ "Empty", ""; "ClosingBrace", " }"; "ClosingBrace,NextDefinition", " } \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextDefinition", " \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextTypeDefinition", " \ntype NextDefinition() = member x.P = 1\n" ] let lines b = [ "L1", "let x = query { for bbbb in abbbbc(*D0*) do join " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L2", "let x = query { for bbbb in abbbbc(*D0*) do join cccc " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L2a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L3", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L3a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L4", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbb(*C*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length";QI "join" "join"; AC "(*C*)" "abbbbc"] "L4a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbb(*C*) )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length";QI "join" "join"; AC "(*C*)" "abbbbc"] "L5", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L5a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6b", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bb(*C*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; AC "(*C*)" "bbbb"] "L7", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L7a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8a", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = )" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8b", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = cc(*C*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; AC "(*C*)" "cccc"] "L9", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L10", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*))" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L11", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L12", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L13", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bb(*C*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L14", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L15", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), " , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L16", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cc(*C*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; AC "(*C*)" "cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L17", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cccc(*D3*)" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D3*)" "CompareTo"; QI "(bbbb" "val bbbb"; QI ", cccc" "val cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo" ] "L18", "let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cccc(*D3*))" , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D3*)" "CompareTo"; QI "(bbbb" "val bbbb"; QI ", cccc" "val cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo" ] ] let knownFailures = [ //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("for bbbb","val bbbb")) //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("in abbbbc","val abbbbc")) //("L2", "NoClosingBrace,NextDefinition", "", DotCompleteExpected ("(*D0*)","Length")) //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("join","join")) ] this.WordByWordSystematicTestWithSpecificExpectations(prefix, suffixes, lines, [""], knownFailures) [] /// This is a sanity check that the multiple-line case is much the same as the single-line cae [] [] member this.``QueryAndOtherExpressions.WordByWordSystematicJoinQueryOnMultipleLine``() = let prefix = """ module Test let abbbbc = [| 1 |] let aaaaaa = 0 """ let suffixes = [ "Empty", ""; "ClosingBrace", " }"; "ClosingBrace,NextDefinition", " } \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextDefinition", " \nlet nextDefinition () = 1\n"; "NoClosingBrace,NextTypeDefinition", " \ntype NextDefinition() = member x.P = 1\n" ] let lines b = [ "L1", """ let x = query { for bbbb in abbbbc(*D0*) do join """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L2", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L2a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L3", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L3a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"] "L4", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbb(*C*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length";QI "join" "join"; AC "(*C*)" "abbbbc"] "L4a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbb(*C*) ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length";QI "join" "join"; AC "(*C*)" "abbbbc"] "L5", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L5a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L6b", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bb(*C*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; AC "(*C*)" "bbbb"] "L7", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L7a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8a", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = ) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"] "L8b", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb = cc(*C*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; AC "(*C*)" "cccc"] "L9", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L10", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L11", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L12", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L13", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bb(*C*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L14", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L15", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L16", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cc(*C*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; AC "(*C*)" "cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo"] "L17", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cccc(*D3*) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D3*)" "CompareTo"; QI "(bbbb" "val bbbb"; QI ", cccc" "val cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo" ] "L18", """ let x = query { for bbbb in abbbbc(*D0*) do join cccc in abbbbc(*D1*) on (bbbb(*D11*) = cccc(*D12*)); select (bbbb(*D2*), cccc(*D3*)) """ , [QI "for bbbb" "val bbbb"; QI "in abbbbc" "val abbbbc"; DC "(*D0*)" "Length"; QI "join" "join"; DC "(*D1*)" "Length"; DC "(*D2*)" "CompareTo"; DC "(*D3*)" "CompareTo"; QI "(bbbb" "val bbbb"; QI ", cccc" "val cccc"; DC "(*D11*)" "CompareTo"; DC "(*D12*)" "CompareTo" ] ] let knownFailures = [ //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("for bbbb","val bbbb")) //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("in abbbbc","val abbbbc")) //("L2", "NoClosingBrace,NextDefinition", "", DotCompleteExpected ("(*D0*)","Length")) //("L2", "NoClosingBrace,NextDefinition", "", QuickInfoExpected ("join","join")) ] this.WordByWordSystematicTestWithSpecificExpectations(prefix, suffixes, lines, [""], knownFailures) [] /// This is the case where (*TYPING*) nothing has been typed yet and we invoke the completion list /// This is a known failure right now for some of the example files above. member this.``QueryExpression.CtrlSpaceSystematic2``() = for fileContents in this.QueryExpressionFileExamples() do try this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = fileContents, marker = "(*TYPING*)", list = customOperations, addtlRefAssy=standard40AssemblyRefs ) with _ -> printfn "FAILURE on systematic test: fileContents = <<<%s>>>" fileContents reraise() (* Various parser recovery test cases -------------------------------------------------- *) //*****************Helper Function***************** member public this.AutoCompleteRecoveryTest(source : list, marker, expected) = let (_, _, file) = this.CreateSingleFileProject(source) MoveCursorToEndOfMarker(file, marker) let completions = time1 CtrlSpaceCompleteAtCursor file "Time of first autocomplete." AssertCompListContainsAll(completions, expected) [] member public this.``Parameter.CommonCase.Bug2884``() = this.AutoCompleteRecoveryTest ([ "type T1(aaa1) =" " do (" ], "do (", [ "aaa1" ]) [] member public this.``Parameter.SubsequentLet.Bug2884``() = this.AutoCompleteRecoveryTest ([ "type T1(aaa1) =" " do (" "let a = 0" ], "do (", [ "aaa1" ]) [] member public this.``Parameter.SubsequentMember.Bug2884``() = this.AutoCompleteRecoveryTest ([ "type T1(aaa1) =" " member x.Foo(aaa2) = " " do (" " member x.Bar = 0" ], "do (", [ "aaa1"; "aaa2" ]) [] member public this.``Parameter.System.DateTime.Bug2884``() = this.AutoCompleteRecoveryTest ([ "type T1(aaa1) =" " member x.Foo(aaa2) = " " let dt = new System.DateTime(" ], "Time(", [ "aaa1"; "aaa2" ]) [] member public this.``Parameter.DirectAfterDefined.Bug2884``() = this.AutoCompleteRecoveryTest ([ "if true then" " let aaa1 = 0" " (" ], "(", [ "aaa1" ]) [] member public this.``NotShowInfo.LetBinding.Bug3602``() = this.VerifyAutoCompListIsEmptyAtEndOfMarker( fileContents = "let s. = \"Hello world\" ()", marker = "let s.") [] member public this.``NotShowInfo.FunctionParameter.Bug3602``() = this.VerifyAutoCompListIsEmptyAtEndOfMarker( fileContents = "let foo s. = s + \"Hello world\" ()", marker = "let foo s.") [] member public this.``NotShowInfo.ClassMemberDeclA.Bug3602``() = this.TestCompletionNotShowingWhenFastUpdate [ "type Foo() =" " member this.Func (x, y) = ()" " member (*marker*) this.Prop = 10" "()" ] [ "type Foo() =" " member this.Func (x, y) = ()" " member (*marker*) this." "()" ] "(*marker*) this." // Another test case for the same thing - this goes through a different code path [] member public this.``NotShowInfo.ClassMemberDeclB.Bug3602``() = this.TestCompletionNotShowingWhenFastUpdate [ "type Foo() =" " member this.Func (x, y) = ()" " // marker$" // <- trick to move the cursor to the right location before source replacement "()" ] [ "type Foo() =" " member this.Func (x, y) = ()" " member this." "()" ] "marker$" [] member public this.``ComputationExpression.LetBang``() = AssertAutoCompleteContainsNoCoffeeBreak ["let http(url:string) = " " async { " " let rnd = new System.Random()" " let! rsp = rnd.N" ] "rsp = rnd." ["Next"] [] (* Tests for autocomplete -------------------------------------------------------------- *) member public this.TestGenericAutoComplete(line, expected) = let code = [ "type GT<'a> =" " static member P = 12" " static member Q = 13" "type GT2 =" " static member R = 12" " static member S = 13" "type D = | DD" "let td = typeof" "let f i = typeof" ""; line ] let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, line) let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, expected) gpatcc.AssertExactly(0,0) [] member public this.``Generics.Typeof``() = this.TestGenericAutoComplete ("let _ = typeof.", [ "Assembly"; "AssemblyQualifiedName"; (* ... *) ]) [] member public this.``Generics.NonGenericTypeMembers``() = this.TestGenericAutoComplete ("let _ = GT2.", [ "R"; "S" ]) [] member public this.``Generics.GenericTypeMembers``() = this.TestGenericAutoComplete ("let _ = GT.", [ "P"; "Q" ]) //[] // keep disabled unless trying to prove that UnhandledExceptionHandler is working member public this.EnsureThatUnhandledExceptionsCauseAnAssert() = // Do something that causes LanguageService to load AssertAutoCompleteContains [ "type FooBuilder() =" " member x.Return(a) = new System.Random()" "let foo = FooBuilder()" "(foo { return 0 })." ] "})." // marker [ "Next" ] // should contain [ "GetEnumerator" ] // should not contain // kaboom let t = new System.Threading.Thread(new System.Threading.ThreadStart(fun () -> failwith "foo")) t.Start() System.Threading.Thread.Sleep(1000) [] member public this.``DotBetweenParens.Bug175360.Case1``() = AssertAutoCompleteContains [ "let a = 10." "(a :> System.IConvertible).(null) |> ignore" ] "ible)." [ "ToDecimal" ] // should contain [] // should not contain [] member public this.``DotBetweenParens.Bug175360.Case2``() = AssertAutoCompleteContains [ "[| 1 |].(0)" ] "|]." [ "Clone" ] // should contain [] // should not contain [] [] member public this.``GenericType.Self.Bug69673_1.01``() = AssertCtrlSpaceCompleteContains ["type Base(o:obj) = class end" "type Foo() as this =" " inherit Base(this) // this" " let o = this // this ok" " do this.Bar() // this ok, dotting ok" " member this.Bar() = ()" ] "Base(th" ["this"] [] [] member public this.``GenericType.Self.Bug69673_1.02``() = AssertCtrlSpaceCompleteContains ["type Base(o:obj) = class end" "type Foo() as this =" " inherit Base(this) // this" " let o = this // this ok" " do this.Bar() // this ok, dotting ok" " member this.Bar() = ()" ] "o = th" ["this"] [] [] member public this.``GenericType.Self.Bug69673_1.03``() = AssertCtrlSpaceCompleteContains ["type Base(o:obj) = class end" "type Foo() as this =" " inherit Base(this) // this" " let o = this // this ok" " do this.Bar() // this ok, dotting ok" " member this.Bar() = ()" ] "do th" ["this"] [] [] member public this.``GenericType.Self.Bug69673_1.04``() = AssertAutoCompleteContains ["type Base(o:obj) = class end" "type Foo() as this =" " inherit Base(this) // this" " let o = this // this ok" " do this.Bar() // this ok, dotting ok" " member this.Bar() = ()" ] "do this." ["Bar"] [] [] [] member public this.``GenericType.Self.Bug69673_2.1``() = AssertAutoCompleteContains ["type Base(o:obj) = class end" "type Food() as this =" " class" " inherit Base(this) // this" " do" " this |> ignore // this (only repros with explicit class/end)" " end" ] "Base(th" ["this"] [] [] [] member public this.``GenericType.Self.Bug69673_2.2``() = AssertAutoCompleteContains ["type Base(o:obj) = class end" "type Food() as this =" " class" " inherit Base(this) // this" " do" " this |> ignore // this (only repros with explicit class/end)" " end" ] " th" ["this"] [] [] member public this.``UnitMeasure.Bug78932_1``() = AssertAutoCompleteContains [ @" module M1 = [] type Kg module M2 = let f = 1 // <- type . between M1 and ' >' => works" ] "M1." // marker [ "Kg" ] // should contain [ ] // should not contain [] member public this.``UnitMeasure.Bug78932_2``() = // Note: in this case, pressing '.' does not automatically pop up a completion list in VS, but ctrl-space does get the right list // This is just like how // let y = true.>"trueSuffix" // no popup on dot, but ctrl-space brings up list with ToString that is legal completion // works, the issue is ".>" is seen as an operator and not a dot-for-completion. AssertAutoCompleteContains [ @" module M1 = [] type Kg module M2 = let f = 1 // <- type . between M1 and '>' => no popup intellisense" ] "M1." // marker [ "Kg" ] // should contain [ ] // should not contain [] member public this.``Array.AfterOperator...Bug65732_A``() = AssertAutoCompleteContains [ "let r = [1 .. System.Int32.MaxValue]" ] "System." // marker [ "Int32" ] // should contain [ "abs" ] // should not contain (from top level) [] member public this.``Array.AfterOperator...Bug65732_B``() = AssertCtrlSpaceCompleteContains [ "let r = [System.Int32.MaxValue..42]" ] ".." // marker [ "abs" ] // should contain (top level) [ "CompareTo" ] // should not contain (from Int32) // Verify the auto completion after the close-parentheses, // there should be auto completion [] member public this.``Array.AfterParentheses.Bug175360``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let a = 10." "let r = (a :> System.IConvertible).(null)" ] "IConvertible)." // marker [ "ToDecimal" ] // should contain (top level) [ ] // should not contain [] member public this.``Identifier.FuzzyDefiend.Bug67133``() = AssertAutoCompleteContainsNoCoffeeBreak [ "let gDateTime (arr: System.DateTime[]) =" " arr.[0]." ] "arr.[0]." ["AddDays"] [] [] member public this.``Identifier.FuzzyDefiend.Bug67133.Negative``() = let code = [ "let gDateTime (arr: DateTime[]) =" // Note: no 'open System', so DateTime is unknown " arr.[0]." ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, "arr.[0].") let completions = AutoCompleteAtCursor file AssertCompListContainsExactly(completions, []) // we don't want any completions on . when has unknown type due to errors // (In particular, we don't want the "didn't find any completions, so just show top-level entities like 'abs' here" logic to kick in.) [] member public this.``Class.Property.Bug69150_A``() = AssertCtrlSpaceCompleteContains [ "type ClassType(x : int) =" " member this.Value = x" "let z = (new ClassType(23)).Value" ] "))." // marker [ "Value" ] // should contain [ "CompareTo" ] // should not contain (from Int32) [] member public this.``Class.Property.Bug69150_B``() = AssertCtrlSpaceCompleteContains [ "type ClassType(x : int) =" " member this.Value = x" "let z = ClassType(23).Value" ] "3)." // marker [ "Value" ] // should contain [ "CompareTo" ] // should not contain (from Int32) [] member public this.``Class.Property.Bug69150_C``() = AssertCtrlSpaceCompleteContains [ "type ClassType(x : int) =" " member this.Value = x" "let f x = new ClassType(x)" "let z = f(23).Value" ] "3)." // marker [ "Value" ] // should contain [ "CompareTo" ] // should not contain (from Int32) [] member public this.``Class.Property.Bug69150_D``() = AssertCtrlSpaceCompleteContains [ "type ClassType(x : int) =" " member this.Value = x" "let z = ClassType(23).Value" ] "3).V" // marker [ "Value" ] // should contain [ "VolatileFieldAttribute" ] // should not contain (from top-level) [] member public this.``Class.Property.Bug69150_E``() = AssertCtrlSpaceCompleteContains [ "type ClassType(x : int) =" " member this.Value = x" "let z = ClassType(23) . Value" ] "3) . " // marker [ "Value" ] // should contain [ "VolatileFieldAttribute" ] // should not contain (from top-level) [] member public this.``AssignmentToProperty.Bug231283``() = AssertCtrlSpaceCompleteContains [""" type Foo() = member val Bar = 0 with get,set let f = new Foo() f.Bar <- let xyz = 42 (*Mark*) xyz """] "42 " [ "AbstractClassAttribute" ] // top-level completions [ "Bar" ] // not stuff from the lhs of assignment [] member public this.``Dot.AfterOperator.Bug69159``() = AssertAutoCompleteContains [ "let x1 = [|0..1..10|]." ] "]." // marker [ "Length" ] // should contain (array) [ "abs" ] // should not contain (top-level) [] member public this.``Residues1``() = AssertCtrlSpaceCompleteContains [ "System . Int32 . M" ] "M" // marker [ "MaxValue"; "MinValue" ] // should contain [ "MailboxProcessor"; "Map" ] // should not contain (top-level) [] member public this.``Residues2``() = AssertCtrlSpaceCompleteContains [ "let x = 42" "x . C" ] "C" // marker [ "CompareTo" ] // should contain (Int32) [ "CLIEventAttribute"; "Checked"; "Choice" ] // should not contain (top-level) [] member public this.``Residues3``() = AssertCtrlSpaceCompleteContains [ "let x = 42" "x . " ] ". " // marker [ "CompareTo" ] // should contain (Int32) [ "CLIEventAttribute"; "Checked"; "Choice" ] // should not contain (top-level) [] member public this.``Residues4``() = AssertCtrlSpaceCompleteContains [ "let x = 42" "id(x) . C" ] "C" // marker [ "CompareTo" ] // should contain (Int32) [ "CLIEventAttribute"; "Checked"; "Choice" ] // should not contain (top-level) [] member public this.``CtrlSpaceInWhiteSpace.Bug133112``() = AssertCtrlSpaceCompleteContains [ """ type Foo = static member A = 1 static member B = 2 printfn "%d %d" Foo.A """ ] "Foo.A " // marker [ "AbstractClassAttribute" ] // should contain (top-level) [ "A"; "B" ] // should not contain (Foo) [] member public this.``Residues5``() = AssertCtrlSpaceCompleteContains [ "let x = 42" "id(x) . " ] ". " // marker [ "CompareTo" ] // should contain (Int32) [ "CLIEventAttribute"; "Checked"; "Choice" ] // should not contain (top-level) [] member public this.``CompletionInDifferentEnvs1``() = AssertCtrlSpaceCompleteContains ["let f1 num =" " let rec completeword d =" " d + d" "(**)comple"] "(**)comple" // marker ["completeword"] // should contain [""] [] member public this.``CompletionInDifferentEnvs2``() = AssertCtrlSpaceCompleteContains ["let aaa = 1" "let aab = 2" "(aa" "let aac = 3"] "(aa" ["aaa"; "aab"] ["aac"] [] member public this.``CompletionInDifferentEnvs3``() = AssertCtrlSpaceCompleteContains ["let mb1 = new MailboxProcessor>(fun inbox -> async { let! msg = inbox.Receive()" " do "] "do " ["msg"] [] [] member public this.``CompletionInDifferentEnvs4``() = AssertCtrlSpaceCompleteContains ["async {" " let! x = i" " (" "}"] "(" ["x"] [] AssertCtrlSpaceCompleteContains ["let q = " " let a = 20" " let b = (fun i -> i) 40" " (("] "((" ["b"] ["i"] (**) [] member public this.``Bug229433.AfterMismatchedParensCauseWeirdParseTreeAndExceptionDuringTypecheck``() = AssertAutoCompleteContains [ """ type T() = member this.Bar() = () member val X = "foo" with get,set static member Id(x) = x [1] |> Seq.iter (fun x -> let user = x ["foo"] |> List.iter (fun m -> let machine_in_maddog = new T() machine_in_maddog.X <- null T.Id((*here*)machine_in_maddog. // no intellisense here after . ) printfn "" ) """ ] "(*here*)machine_in_maddog." [ "Bar"; "X" ] [] [] member public this.``Bug130733.LongIdSet.CtrlSpace``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () let c = C() c.X <- 42""" ] "c.X" [ "XX" ] [] [] member public this.``Bug130733.LongIdSet.Dot``() = AssertAutoCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () let c = C() c.X <- 42""" ] "c." [ "XX" ] [] [] member public this.``Bug130733.ExprDotSet.CtrlSpace``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () let f(x) = C() f(0).X <- 42""" ] ").X" [ "XX" ] [] [] member public this.``Bug130733.ExprDotSet.Dot``() = AssertAutoCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () let f(x) = C() f(0).X <- 42""" ] "(0)." [ "XX" ] [] [] member public this.``Bug130733.Nested.LongIdSet.CtrlSpace``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () member this.CC with get() = C() let c = C() c.CC.X <- 42""" ] "CC.X" [ "XX" ] [] [] member public this.``Bug130733.Nested.LongIdSet.Dot``() = AssertAutoCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () member this.CC with get() = C() let c = C() c.CC.X <- 42""" ] "c.CC." [ "XX" ] [] [] member public this.``Bug130733.Nested.ExprDotSet.CtrlSpace``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () member this.CC with get() = C() let f(x) = C() f(0).CC.X <- 42""" ] "CC.X" [ "XX" ] [] [] member public this.``Bug130733.Nested.ExprDotSet.Dot``() = AssertAutoCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () member this.CC with get() = C() let f(x) = C() f(0).CC.X <- 42""" ] "(0).CC." [ "XX" ] [] [] member public this.``Bug130733.NamedIndexedPropertyGet.Dot``() = AssertAutoCompleteContains [ """ let str = "foo" str.Chars(3).""" ] ")." [ "CompareTo" ] // char [] [] member public this.``Bug130733.NamedIndexedPropertyGet.CtrlSpace``() = AssertCtrlSpaceCompleteContains [ """ let str = "foo" str.Chars(3).Co""" ] ").Co" [ "CompareTo" ] // char [] [] member public this.``Bug230533.NamedIndexedPropertySet.CtrlSpace.Case1``() = AssertCtrlSpaceCompleteContains [ """ type Foo() = member x.MutableInstanceIndexer with get (i) = 0 and set (i) (v:string) = () let h() = new Foo() (h()).MutableInstanceIndexer(0) <- "foo" """ ] ")).Muta" [ "MutableInstanceIndexer" ] [] [] member public this.``Bug230533.NamedIndexedPropertySet.CtrlSpace.Case2``() = AssertCtrlSpaceCompleteContains [ """ type Foo() = member x.MutableInstanceIndexer with get (i) = 0 and set (i) (v:string) = () type Bar() = member this.ZZZ = new Foo() let g() = new Bar() (g()).ZZZ.MutableInstanceIndexer(0) <- "blah" """ ] ")).ZZZ.Muta" [ "MutableInstanceIndexer" ] [] [] member public this.``Bug230533.ExprDotSet.CtrlSpace.Case1``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () type D() = member this.CC = new C() let f(x) = D() f(0).CC. <- 42 """ ] "0).CC." [ "XX" ] [] [] member public this.``Bug230533.ExprDotSet.CtrlSpace.Case2``() = AssertCtrlSpaceCompleteContains [ """ type C() = member this.XX with get() = 4 and set(x) = () type D() = member this.CC with get() = new C() and set(x) = () let f(x) = D() f(0).CC. <- 42 """ ] "0).CC." [ "XX" ] [] [] member public this.``Attribute.WhenAttachedToLet.Bug70080``() = this.AutoCompleteBug70080Helper @" open System [] member public this.``Attribute.WhenAttachedToType.Bug70080``() = this.AutoCompleteBug70080Helper @" open System [] member public this.``Attribute.WhenAttachedToNothing.Bug70080``() = this.AutoCompleteBug70080Helper @" open System [] member public this.``Attribute.WhenAttachedToLetInNamespace.Bug70080``() = this.AutoCompleteBug70080Helper @" namespace Foo open System [] member public this.``Attribute.WhenAttachedToTypeInNamespace.Bug70080``() = this.AutoCompleteBug70080Helper @" namespace Foo open System [] member public this.``Attribute.WhenAttachedToNothingInNamespace.Bug70080``() = this.AutoCompleteBug70080Helper @" namespace Foo open System [] member public this.``Attribute.WhenAttachedToModuleInNamespace.Bug70080``() = this.AutoCompleteBug70080Helper @" namespace Foo open System [] member public this.``Attribute.WhenAttachedToModule.Bug70080``() = this.AutoCompleteBug70080Helper @" open System [] member public this.``Identifer.InMatchStatemente.Bug72595``() = // in this bug, "match blah with let" caused the lexfilter to go awry, which made things hopeless for the parser, yielding no parse tree and thus no intellisense AssertAutoCompleteContains [ @" type C() = let someValue = ""abc"" member __.M() = let x = 1 match someValue. with let x = 1 match 1 with | _ -> 2 type D() = member x.P = 1 [] do() " ] "someValue." // marker [ "Chars" ] // should contain [ ] // should not contain [] member public this.``HandleInlineComments1``() = AssertAutoCompleteContains [ "let rrr = System (* boo! *) . Int32 . MaxValue" ] ") ." // marker [ "Int32"] [ "abs" ] // should not contain (top-level) [] member public this.``HandleInlineComments2``() = AssertAutoCompleteContains [ "let rrr = System (* boo! *) . Int32 . MaxValue" ] "2 ." // marker [ "MaxValue" ] // should contain [ "abs" ] // should not contain (top-level) [] member public this.``OpenNamespaceOrModule.CompletionOnlyContainsNamespaceOrModule.Case1``() = AssertAutoCompleteContains [ "open System." ] "." // marker [ "Collections" ] // should contain (namespace) [ "Console" ] // should not contain (type) [] member public this.``OpenNamespaceOrModule.CompletionOnlyContainsNamespaceOrModule.Case2``() = AssertAutoCompleteContains [ "open Microsoft.FSharp.Collections.Array." ] "Array." // marker [ "Parallel" ] // should contain (module) [ "map" ] // should not contain (let-bound value) [] member public this.``BY_DESIGN.CommonScenarioThatBegsTheQuestion.Bug73940``() = AssertAutoCompleteContains [ @" let r = [""1""] |> List.map (fun s -> s. // user previous had e.g. '(fun s -> s)' here, but he erased after 's' to end-of-line and hit '.' e.g. to eventually type '.Substring(5))' |> List.filter (fun s -> s.Length > 5) // parser recover assumes close paren is here, and type inference goes wacky-useless with such a parse "] "s." // marker [ ] // should contain (ideally would be string) [ "Chars" ] // should not contain (documenting the undesirable behavior, that this does not show up) [] member public this.``BY_DESIGN.ExplicitlyCloseTheParens.Bug73940``() = AssertAutoCompleteContains [ @" let g lam = lam true |> printfn ""%b"" sprintf ""%s"" let r = [""1""] |> List.map (fun s -> s. ) // user types close paren here to avoid paren mismatch |> g // regardless of whatever is down here now, it won't affect the type of 's' above "] "s." // marker [ "Chars" ] // should contain (string) [ ] // should not contain [] member public this.``BY_DESIGN.MismatchedParenthesesAreHardToRecoverFromAndHereIsWhy.Bug73940``() = AssertAutoCompleteContains [ @" let g lam = lam true |> printfn ""%b"" sprintf ""%s"" let r = [""1""] |> List.map (fun s -> s. // it looks like s is a string here, but it's not! |> g // parser recovers as though there is a right-paren here "] "s." // marker [ "CompareTo" ] // should contain (bool) [ "Chars" ] // should not contain (string) (* [] member public this.``AutoComplete.Bug72596_A``() = AssertAutoCompleteContains [ "type ClassType() =" " let foo = fo" ] // is not 'let rec', foo should not be in scope yet, but showed up in completions "= fo" // marker [ ] // should contain [ "foo" ] // should not contain [] member public this.``AutoComplete.Bug72596_B``() = AssertAutoCompleteContains [ "let f() =" " let foo = fo" ] // is not 'let rec', foo should not be in scope yet, but showed up in completions "= fo" // marker [ ] // should contain [ "foo" ] // should not contain *) [] member public this.``Expression.MultiLine.Bug66705``() = AssertAutoCompleteContains [ "let x = 4" "let y = x.GetType()" " .ToString()" ] // "fluent" interface spanning multiple lines " ." // marker [ "ToString" ] // should contain [ ] // should not contain [] [] member public this.``Expressions.Computation``() = AssertAutoCompleteContains [ "type FooBuilder() =" " member x.Return(a) = new System.Random()" "let foo = FooBuilder()" "(foo { return 0 })." ] "})." // marker [ "Next" ] // should contain [ "GetEnumerator" ] // should not contain [] member public this.``Identifier.DefineByVal.InFsiFile.Bug882304_1``() = AutoCompleteInInterfaceFileContains [ "module BasicTest" "val z:int = 1" "z." ] "z." // marker [ ] // should contain [ "Equals" ] // should not contain [] member public this.``NameSpace.InFsiFile.Bug882304_2``() = AutoCompleteInInterfaceFileContains [ "module BasicTest" "open System." ] "System." // marker [ "Action"; // Delegate "Activator"; // Class "Collections"; // Subnamespace "IConvertible" // Interface ] // should contain [ ] // should not contain [] member public this.``CLIEvents.DefinedInAssemblies.Bug787438``() = AssertAutoCompleteContains [ "let mb = new MailboxProcessor(fun _ -> ())" "mb." ] "mb." // marker [ "Error" ] // should contain [ "add_Error"; "remove_Error" ] // should not contain [] member public this.``Identifier.AfterParenthesis.Bug835276``() = AssertAutoCompleteContains [ "let f ( s : string ) =" " let x = 10 + s.Length" " for i in 1..10 do" " let ok = 10 + s.Length // dot here did work" " let y = 10 +(s." ] "+(s." // marker [ "Length" ] // should contain [ ] // should not contain [] member public this.``Identifier.AfterParenthesis.Bug6484_1``() = AssertAutoCompleteContains [ "for x in 1..10 do" " printfn \"%s\" (x. " ] "x." // marker [ "CompareTo" ] // should contain (a method on the 'int' type) [ ] // should not contain [] member public this.``Identifier.AfterParenthesis.Bug6484_2``() = AssertAutoCompleteContains [ "for x = 1 to 10 do" " printfn \"%s\" (x. " ] "x." // marker [ "CompareTo" ] // should contain (a method on the 'int' type) [ ] // should not contain [] member public this.``Type.Indexers.Bug4898_1``() = AssertAutoCompleteContains [ "type Foo(len) =" " member this.Value = [1 .. len]" "type Bar =" " static member ParamProp with get len = new Foo(len)" "let n = Bar.ParamProp."] "ar.ParamProp." // marker [ "ToString" ] // should contain [ "Value" ] // should not contain [] member public this.``Type.Indexers.Bug4898_2``() = AssertAutoCompleteContains [ "type mytype() =" " let instanceArray2 = [|[| \"A\"; \"B\" |]; [| \"A\"; \"B\" |] |]" " let instanceArray = [| \"A\"; \"B\" |]" " member x.InstanceIndexer" " with get(idx) = instanceArray.[idx]" " member x.InstanceIndexer2" " with get(idx1,idx2) = instanceArray2.[idx1].[idx2]" "let a = mytype()" "a.InstanceIndexer2."] "a.InstanceIndexer2." // marker [ "ToString" ] // should contain [ "Chars" ] // should not contain [] member public this.``Expressions.Sequence``() = AssertAutoCompleteContains [ "(seq { yield 1 })." ] "})." // marker [ "GetEnumerator" ] // should contain [ ] // should not contain [] member public this.``LambdaExpression.WithoutClosing.Bug1346``() = AssertAutoCompleteContains [ "let p4 = " " let isPalindrome x = " " let chars = (string_of_int x).ToCharArray()" " let len = chars." " chars " " |> Array.mapi (fun i c ->" ] "chars." // marker [ "Length" ] // should contain [ ] // should not contain [] member public this.``LambdaExpression.WithoutClosing.Bug1346c``() = AssertAutoCompleteContains [ "let p4 = " " let isPalindrome x = " " let chars = (string_of_int x).ToCharArray()" " let len = chars." " chars " " |> Array.mapi (fun i c -> )" ] "chars." // marker [ "Length" ] // should contain [ ] // should not contain [] member public this.``LambdaExpression.WithoutClosing.Bug1346b``() = AssertAutoCompleteContains [ "let p4 = " " let isPalindrome x = " " let chars = (string_of_int x).ToCharArray()" " let len = chars." " chars " " |> Array.mapi (fun i c ->" "let p5 = 1" ] "chars." // marker [ "Length" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.If_A``() = AssertAutoCompleteContains [ "let x = \"1\"" "let test2 = if (x)." ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatemen.If_C``() = AssertAutoCompleteContains [ "let x = \"1\"" "let test2 = if (x)." "let y = 2" ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Try_A``() = AssertAutoCompleteContains [ "let x = \"1\"" "try (x)." ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Try_B``() = AssertAutoCompleteContains [ "let x = \"1\"" "try (x). finally ()" ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Try_C``() = AssertAutoCompleteContains [ "let x = \"1\"" "try (x). with e -> () " ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Try_D``() = AssertAutoCompleteContains [ "let x = \"1\"" "try (x)." "let y = 2" ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Match_A``() = AssertAutoCompleteContains [ "let x = \"1\"" "let test2 = match (x)." ] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``IncompleteStatement.Match_C``() = AssertAutoCompleteContains [ "let x = \"1\"" "let test2 = match (x)." "let y = 2"] "(x)." // marker [ "Contains" ] // should contain [ ] // should not contain [] member public this.``InDeclaration.Bug3176a``() = AssertCtrlSpaceCompleteContains [ "type T<'a> = { aaaa : 'a; bbbb : int } " ] "aa" // marker [ "aaaa" ] // should contain [ "bbbb" ] // should not contain [] member public this.``InDeclaration.Bug3176b``() = AssertCtrlSpaceCompleteContains [ "type T<'a> = { aaaa : 'a; bbbb : int } " ] "bb" // marker [ "bbbb" ] // should contain [ "aaaa" ] // should not contain [] member public this.``InDeclaration.Bug3176c``() = AssertCtrlSpaceCompleteContains [ "type C ="; " val aaaa : int" ] "aa" // move to marker ["aaaa"] [] // should contain 'aaaa' [] member public this.``InDeclaration.Bug3176d``() = AssertCtrlSpaceCompleteContains [ "type DU<'a> ="; " | DULabel of 'a" ] "DULab" // move to marker ["DULabel"] [] // should contain 'DULabel' [] member public this.``IncompleteIfClause.Bug4594``() = AssertCtrlSpaceCompleteContains [ "let Bar(xyz) ="; " let hello = "; " if x" ] "if x" // move to marker ["xyz"] [] // should contain 'xyz' [] member public this.``Extensions.Bug5162``() = AssertCtrlSpaceCompleteContains [ "module Extensions =" " type System.Object with" " member x.P = 1" "module M2 =" " let x = 1" " (*loc*)Ext" ] "(*loc*)Ext" // marker [ "Extensions" ] [] // should contain (* Tests for various uses of ObsoleteAttribute ----------------------------------------- *) (* Members marked with obsolete shouldn't be visible, but we should support *) (* dot completions on them *) // Obsolete and CompilerMessage(IsError=true) should not appear. [] member public this.``ObsoleteAndOCamlCompatDontAppear``() = let code= [ "open System" "type X = " " static member private Private() = ()" " []" " static member Obsolete() = ()" " []" " static member CompilerMessageTest() = ()" "X." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"X.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." for completion in completions do match completion with | ("Obsolete" as s,_,_,_) //| ("Private" as s,_,_,_) this isn't supported yet | ("CompilerMessageTest" as s,_,_,_)-> failwith (sprintf "Unexpected item %s at top level." s) | _ -> () // Test various configurations of nested obsolete modules & types // (also test whether we show the right intellisense) member public this.AutoCompleteObsoleteTest testLine appendDot should shouldnot = let code = [ "[]" "module ObsoleteTop =" " let T = \"T\"" "module Module = " " []" " module ObsoleteM =" " let A = \"A\"" " []" " module ObsoleteNested =" " let C = \"C\"" " []" " type ObsoleteT = " " static member B = \"B\"" " let Other = 0" "let mutable level = \"\"" "" ] let (_, _, file) = this.CreateSingleFileProject(code @ [ testLine ]) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) if not appendDot then // In this case, we want to check Ctrl+J completions // For "level <- O" this shows completions starting with O (e.g. Other) MoveCursorToEndOfMarker(file, testLine) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContainsAll(completions, should) AssertCompListDoesNotContainAny(completions, shouldnot) else // In this case, we quickly type "." and then get dot-completions // For "level <- Module" this shows completions from the "Module" (e.g. "Module.Other") // This simulates the case when the user quickly types "dot" after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file (code @ [ testLine + "." ]) MoveCursorToEndOfMarker(file, testLine + ".") let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, should) AssertCompListDoesNotContainAny(completions, shouldnot) gpatcc.AssertExactly(0,0) // When the module isn't empty, we should show completion for the module // (and not type-inferrence based completion on strings - therefore test for 'Chars') [] member public this.``Obsolete.TopLevelModule``() = this.AutoCompleteObsoleteTest "level <- O" false [ "None" ] [ "ObsoleteTop"; "Chars" ] [] member public this.``Obsolete.NestedTypeOrModule``() = this.AutoCompleteObsoleteTest "level <- Module" true [ "Other" ] [ "ObsoleteM"; "ObsoleteT"; "Chars" ] [] member public this.``Obsolete.CompletionOnObsoleteModule.Bug3992``() = this.AutoCompleteObsoleteTest "level <- Module.ObsoleteM" true [ "A" ] [ "ObsoleteNested"; "Chars" ] [] member public this.``Obsolete.DoubleNested``() = this.AutoCompleteObsoleteTest "level <- Module.ObsoleteM.ObsoleteNested" true [ "C" ] [ "Chars" ] [] member public this.``Obsolete.CompletionOnObsoleteType``() = this.AutoCompleteObsoleteTest "level <- Module.ObsoleteT" true [ "B" ] [ "Chars" ] /// BUG: Referencing a non-existent DLL caused an assert. [] member public this.``WithNonExistentDll``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") // in the project system, 'AddAssemblyReference' would throw, so just poke this into the .fsproj file PlaceIntoProjectFileBeforeImport (project, @" ") let file = AddFileFromText(project,"File1.fs", [ "(*marker*) " ]) let file = OpenFile(project,"File1.fs") MoveCursorToEndOfMarker(file,"(*marker*) ") let completions = CtrlSpaceCompleteAtCursor file AssertCompListContainsAll(completions,[ "System"; // .NET namespaces "Array2D"]) // Types in the F# library AssertCompListDoesNotContain(completions,"Int32") // Types in the System namespace member internal this.AutoCompleteDuplicatesTest (marker, shortName, fullName:string) = let code = [ "namespace A " "module Test = " " let foo n = n + 1" " let (|Pat|) x = x + 1" " exception Failed" " type Del = delegate of int -> int" " type A = | Foo" " type B = | Bar = 0" "type TestType =" " static member Prop = 0" " static member Event = (new Event<_>()).Publish" "namespace B" "open A" "open A" marker ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, marker) let completions = AutoCompleteAtCursor file let (_, _, descrFunc, _) = completions |> Array.find (fun (name, _, _, _) -> name = shortName) let descr = descrFunc() // Check whether the description contains the name only once let occurrences = (" " + descr + " ").Split([| fullName |], System.StringSplitOptions.None).Length - 1 AssertEqualWithMessage(1, occurrences, "The entry for '" + fullName + "' is duplicated.") // Return the number of occurrences of the specified method in a tooltip string member this.CountMethodOccurrences(descr, methodName:string) = let occurrences = (" " + descr + " ").Split([| methodName |], System.StringSplitOptions.None).Length - 1 // This is some tag in the tooltip that also contains the overload name text if descr.Contains("[Signature:") then occurrences - 1 else occurrences [] member public this.``Duplicates.Bug4103b``() = for args in [ "Test.", "foo", "foo"; "Test.", "Pat", "Pat"; "Test.", "Failed", "exception Failed"; "Test.", "Del", "type Del"; "Test.", "Foo", "Test.A.Foo" "Test.B.", "Bar", "Test.B.Bar" "TestType.", "Prop", "TestType.Prop" "TestType.", "Event", "TestType.Event" ] do this.AutoCompleteDuplicatesTest args [] member public this.``Duplicates.Bug4103c``() = let code = [ "open System.IO" "open System.IO" "File." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, "File.") let completions = AutoCompleteAtCursor file // Get description for Expr.Var let (_, _, descrFunc, _) = completions |> Array.find (fun (name, _, _, _) -> name = "Open") let occurrences = this.CountMethodOccurrences(descrFunc(), "File.Open") AssertEqualWithMessage(3, occurrences, "Found wrong number of overloads for 'File.Open'.") [] member public this.``Duplicates.Bug2094``() = let code = [ "open Microsoft.FSharp.Control" "let b = MailboxProcessor." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file, "MailboxProcessor.") let completions = AutoCompleteAtCursor file // Get description for Expr.Var let (_, _, descrFunc, _) = completions |> Array.find (fun (name, _, _, _) -> name = "Start") let occurrences = this.CountMethodOccurrences(descrFunc(), "Start") AssertEqualWithMessage(1, occurrences, "Found wrong number of overloads for 'MailboxProcessor.Start'.") [] member public this.``WithinMatchClause.Bug1603``() = let code = [ "let rec f l =" " match l with" " | [] ->" " let xx = System.DateTime.Now" " let y = xx." " | x :: xs -> f xs" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"let y = xx.") let completions = AutoCompleteAtCursor file // Should contain something Assert.AreNotEqual(0,completions.Length) Assert.IsTrue(completions |> Array.exists (fun (name,_,_,_) -> name.Contains("AddMilliseconds"))) // FEATURE: Saving file N does not cause files 1 to N-1 to re-typecheck (but does cause files N to to [] [] member public this.``Performance.Bug5774``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file1 = AddFileFromText(project,"File1.fs", [""]) let file1 = OpenFile(project,"File1.fs") //file1. let file2 = AddFileFromText(project,"File2.fs", ["let x = 4"; "x."]) let file2 = OpenFile(project,"File2.fs") let file3 = AddFileFromText(project,"File3.fs", [""]) let file3 = OpenFile(project,"File3.fs") // ensure that the incremental builder is running MoveCursorToEndOfMarker(file2,"x.") AutoCompleteAtCursor file2 |> ignore // Start the key instrumentation let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // Save file2 ReplaceFileInMemory file2 [""] SaveFileToDisk file2 TakeCoffeeBreak(this.VS) gpatcc.AssertExactly(notAA[file2], notAA[file2;file3]) /// FEATURE: References added to the project bring corresponding new .NET and F# items into scope. [] member public this.``AfterAssemblyReferenceAdded``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file = AddFileFromText(project,"File1.fs", [ "let y = System.Deployment.Application." "()"]) let file = OpenFile(project, "File1.fs") MoveCursorToEndOfMarker(file,"System.Deployment.Application.") let completions = AutoCompleteAtCursor(file) // printf "Completions=%A\n" completions Assert.AreEqual(0, completions.Length) // Expect none here because reference hasn't been added. // Now, add a reference to the given assembly. this.AddAssemblyReference(project,"System.Deployment") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor(file) Assert.AreNotEqual(0, completions.Length, "Expected some items in the list after adding a reference.") /// FEATURE: Updating the active project configuration influences the language service [] member public this.``AfterUpdateProjectConfiguration``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") PlaceIntoProjectFileBeforeImport (project, @" ") let file = AddFileFromText(project,"File1.fs", [ "let y = System.Deployment.Application." "()"]) let file = OpenFile(project, "File1.fs") MoveCursorToEndOfMarker(file,"System.Deployment.Application.") let completions = AutoCompleteAtCursor(file) // printf "Completions=%A\n" completions Assert.AreEqual(0, completions.Length) // Expect none here because reference hasn't been added. // Now, update active configuration SetConfigurationAndPlatform(project, "Foo|x86") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor(file) Assert.AreNotEqual(0, completions.Length, "Expected some items in the list after updating configuration.") /// FEATURE: Updating the active project platform influences the language service [] member public this.``AfterUpdateProjectPlatform``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") PlaceIntoProjectFileBeforeImport (project, @" ") SetConfigurationAndPlatform(project, "Debug|AnyCPU") let file = AddFileFromText(project,"File1.fs", [ "let y = System.Deployment.Application." "()"]) let file = OpenFile(project, "File1.fs") MoveCursorToEndOfMarker(file,"System.Deployment.Application.") let completions = AutoCompleteAtCursor(file) // printf "Completions=%A\n" completions Assert.AreEqual(0, completions.Length) // Expect none here because reference hasn't been added. // Now, update active platform SetConfigurationAndPlatform(project, "Debug|x86") let completions = AutoCompleteAtCursor(file) Assert.AreNotEqual(0, completions.Length, "Expected some items in the list after updating platform.") /// FEATURE: The filename on disk and the filename in the project can differ in case. [] [] member this.``Filenames.MayBeDifferentlyCased``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file = AddFileFromTextEx(project,"file1.fs","FILE1.FS",BuildAction.Compile, [ "let y = System.Deployment.Application." "()"]) let file = OpenFile(project, "file1.fs") MoveCursorToEndOfMarker(file,"System.Deployment.Application.") let completions = AutoCompleteAtCursor(file) // printf "Completions=%A\n" completions Assert.AreEqual(0, completions.Length) // Expect none here because reference hasn't been added. // Now, add a reference to the given assembly. this.AddAssemblyReference(project,"System.Deployment") let completions = AutoCompleteAtCursor(file) Assert.AreNotEqual(0, completions.Length, "Expected some items in the list after adding a reference.") /// In this bug, a bogus flag caused the rest of flag parsing to be ignored. [] [] member public this.``FlagsAndSettings.Bug1969``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") let file = AddFileFromText(project,"File1.fs", [ "let y = System.Deployment.Application." "()"]) let file = OpenFile(project, "File1.fs") MoveCursorToEndOfMarker(file,"System.Deployment.Application.") let completions = AutoCompleteAtCursor(file) // printf "Completions=%A\n" completions Assert.AreEqual(0, completions.Length) // Expect none here because reference hasn't been added. // Add an unknown flag followed by the reference to our assembly. let deploymentAssembly = sprintf @"%s\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll" (System.Environment.GetEnvironmentVariable("windir")) SetOtherFlags(project,"--doo-da -r:" + deploymentAssembly) let completions = AutoCompleteAtCursor(file) // Now, make sure the reference added after the erroneous reference is still honored. Assert.AreNotEqual(0, completions.Length, "Expected some items in the list after adding a reference.") ShowErrors(project) /// In this bug there was an exception if the user pressed dot after a long identifier /// that was unknown. [] member public this.``OfSystemWindows``() = let code = ["let y=new System.Windows."] let (_, _, file) = this.CreateSingleFileProject(code, references = ["System.Windows.Forms"]) MoveCursorToEndOfMarker(file,"System.Windows.") let completions = AutoCompleteAtCursor(file) printfn "Completions=%A" completions Assert.AreEqual(1, completions.Length) /// Tests whether we're correctly showing both type and module when they have the same name [] member public this.``ShowSetAsModuleAndType``() = let code = ["let s = Set"] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"= Set") let completions = CtrlSpaceCompleteAtCursor(file) let found = completions |> Array.tryFind (fun (n, _, _, _) -> n = "Set") match found with | Some(_, _, f, _) -> let tip = f() AssertContains(tip, "module Set") AssertContains(tip, "type Set") | _ -> Assert.Fail("'Set' not found in the completion list") /// FEATURE: The user may type namespace followed by dot and see a completion list containing members of that namespace. [] member public this.``AtNamespaceDot``() = let code = ["let y=new System.String()"] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"System.") let completions = AutoCompleteAtCursor(file) Assert.IsTrue(completions.Length>0) /// FEATURE: The user will see appropriate glyphs in the autocompletion list. [] member public this.``OfSeveralModuleMembers``() = let code = [ "module Module =" " let Constant = 5" " type Class = class" " end" " type Record = {AString:string}" " exception OutOfRange of string" " type Enum = Red = 0 | White = 1 | Blue = 2" " type DiscriminatedUnion = A | B | C" " type AsmType = (# \"!0[]\" #)" " type TupleType = int * int" " type FunctionType = unit->unit" " let (~+) x = -x" " type Interface =" " abstract MyMethod : unit->unit" " type Struct = struct" " end" " let Function x = 0" " let FunctionValue = fun x -> 0" " let Tuple = (0,2)" " module Submodule =" " let a = 0" " type ValueType = int" "module AbbreviationModule =" " type StructAbbreviation = Module.Struct" " type InterfaceAbbreviation = Module.Interface" " type DiscriminatedUnionAbbreviation = Module.DiscriminatedUnion" " type RecordAbbreviation = Module.Record" " type EnumAbbreviation = Module.Enum" " type TupleTypeAbbreviation = Module.TupleType" " type AsmTypeAbbreviation = Module.AsmType" "let y = AbbreviationModule." "let y = Module." "let f x = 0" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file," Module.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." Assert.IsTrue(completions.Length>0) for completion in completions do match completion with | "A",_,_,DeclarationType.EnumMember -> () | "B",_,_,DeclarationType.EnumMember -> () | "C",_,_,DeclarationType.EnumMember -> () | "Function",_,_,DeclarationType.Constant -> () | "Enum",_,_,DeclarationType.Enum -> () | "Constant",_,_,DeclarationType.Constant -> () | "Function",_,_,DeclarationType.FunctionValue -> () | "FunctionValue",_,_,DeclarationType.FunctionValue -> () | "OutOfRange",_,_,DeclarationType.Exception -> () | "OutOfRangeException",_,_,DeclarationType.Class -> () | "Interface",_,_,DeclarationType.Interface -> () | "Struct",_,_,DeclarationType.ValueType -> () | "Tuple",_,_,DeclarationType.Constant -> () | "Submodule",_,_,DeclarationType.Module -> () | "Record",_,_,DeclarationType.Record -> () | "DiscriminatedUnion",_,_,DeclarationType.DiscriminatedUnion -> () | "AsmType",_,_,DeclarationType.RareType -> () | "FunctionType",_,_,DeclarationType.FunctionType -> () | "TupleType",_,_,DeclarationType.ValueType -> () | "ValueType",_,_,DeclarationType.ValueType -> () | "Class",_,_,DeclarationType.Class -> () | "Int32",_,_,DeclarationType.Method -> () | "TupleTypeAbbreviation",_,_,DeclarationType.Constant -> () | name,_,_,x -> failwith (sprintf "Unexpected module member %s seen with declaration type %A" name x) MoveCursorToEndOfMarker(file,"AbbreviationModule.") let completions = time1 AutoCompleteAtCursor file "Time of second autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) for completion in completions do match completion with | "Int32",_,_,_ | "Function",_,_,_ | "Enum",_,_,_ | "Constant",_,_,_ | "Function",_,_,_ | "Interface",_,_,_ | "Struct",_,_,_ | "Tuple",_,_,_ | "Record",_,_,_ -> () | "EnumAbbreviation",_,_,DeclarationType.Enum -> () | "InterfaceAbbreviation",_,_,DeclarationType.Interface -> () | "StructAbbreviation",_,_,DeclarationType.ValueType -> () | "DiscriminatedUnion",_,_,_ -> () | "RecordAbbreviation",_,_,DeclarationType.Record -> () | "DiscriminatedUnionAbbreviation",_,_,DeclarationType.DiscriminatedUnion -> () | "AsmTypeAbbreviation",_,_,DeclarationType.RareType -> () | "TupleTypeAbbreviation",_,_,DeclarationType.ValueType -> () | name,_,_,x -> failwith (sprintf "Unexpected union member %s seen with declaration type %A" name x) [] member public this.``ListFunctions``() = let code = [ "let y = List." "let f x = 0" ] let (_,_, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"List.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) for completion in completions do match completion with | "Cons",_,_,DeclarationType.Method -> () | "Equals",_,_,DeclarationType.Method -> () | "Empty",_,_,DeclarationType.Property -> () | "empty",_,_,DeclarationType.Constant -> () | _,_,_,DeclarationType.FunctionValue -> () | name,_,_,x -> failwith (sprintf "Unexpected item %s seen with declaration type %A" name x) [] member public this.``SystemNamespace``() = let code = [ "let y = System." ] let (_,_, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"System.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) let AssertIsDecl(name,decl,expected) = if decl<>expected then failwith (sprintf "Expected %A for %s but was %A" expected name decl) for completion in completions do match completion with | "Action" as name,_,_,decl -> AssertIsDecl(name,decl,DeclarationType.FunctionType) | "CodeDom" as name,_,_,decl -> AssertIsDecl(name,decl,DeclarationType.Namespace) | _ -> () // If there is a compile error that prevents a data tip from resolving then show that data tip. [] member public this.``MemberInfoCompileErrorsShowInDataTip``() = let code = [ "type Foo = " " member x.Bar() = 0" "let foovalue:Foo = unbox null" "foovalue.B" // make sure this is different from the line 3! ] let (_,_, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"foovalue.B") use scope = AutoCompleteMemberDataTipsThrowsScope(this.VS, "Simulated compiler error") let completions = time1 CtrlSpaceCompleteAtCursor file "Time of first autocomplete." Assert.IsTrue(completions.Length>0) for completion in completions do let _,_,descfunc,_ = completion let desc = descfunc() AssertContains(desc,"Simulated compiler error") // Bunch of crud in empty list. This test asserts that unwanted things don't exist at the top level. [] member public this.``Editor.WhitoutContext.Bug986``() = let code = ["(*mark*)"] let (_,_, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"(*mark*)") let completions = time1 CtrlSpaceCompleteAtCursor file "Time of first autocomplete." for completion in completions do match completion with | ("IChapteredRowset" as s,_,_,_) | ("ICorRuntimeHost" as s,_,_,_)-> failwith (sprintf "Unexpected item %s at top level." s) | _ -> () [] member public this.``LetBind.TopLevel.Bug1650``() = let code =["let x = "] let (_,_, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file,"let x = ") let completions = time1 CtrlSpaceCompleteAtCursor file "Time of first autocomplete." Assert.IsTrue(completions.Length>0) gpatcc.AssertExactly(0,0) [] member public this.``Identifier.Invalid.Bug876b``() = let code = [ "let f (x:System.Windows.Forms.Form) = x." " for x = 0 to 0 do () done" ] let (_,project, file) = this.CreateSingleFileProject(code, references = ["System"; "System.Drawing"; "System.Windows.Forms"]) MoveCursorToEndOfMarker(file,"x.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." ShowErrors(project) Assert.IsTrue(completions.Length>0) [] member public this.``Identifier.Invalid.Bug876c``() = let code = [ "let f (x:System.Windows.Forms.Form) = x." " 12" ] let (_,_, file) = this.CreateSingleFileProject(code, references = ["System"; "System.Drawing"; "System.Windows.Forms"]) MoveCursorToEndOfMarker(file,"x.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." Assert.IsTrue(completions.Length>0) [] member public this.``EnumValue.Bug2449``() = let code = [ "type E = | A = 1 | B = 2" "let e = E.A" "e." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"e.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListDoesNotContain(completions, "value__") [] member public this.``EnumValue.Bug4044``() = let code = [ "open System.IO" "let GetFileSize filePath = File.GetAttributes(filePath)." ] let (_, _, file) = this.CreateSingleFileProject(code) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file,"filePath).") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListDoesNotContain(completions, "value__") gpatcc.AssertExactly(0,0) /// There was a bug (2584) that IntelliSense should treat 'int' as a type instead of treating it as a function /// However, this is now deprecated behavior. We want the user to use 'System.Int32' and /// we generally prefer information from name resolution (aslo see 4405) [] member public this.``PrimTypeAndFunc``() = let code = [ "System.Int32. " "int. " ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"System.Int32.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListContains(completions,"MinValue") MoveCursorToEndOfMarker(file,"int.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListDoesNotContain(completions,"MinValue") /// This is related to Bug1605--since the file couldn't parse there was no information to provide the autocompletion list. [] member public this.``MatchStatement.Clause.AfterLetBinds.Bug1603``() = let code = [ "let rec f l =" " match l with" " | [] ->" " let xx = System.DateTime.Now" " let y = xx" " | x :: xs -> f xs." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"xs -> f xs.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) let mutable count = 0 let AssertIsDecl(name,decl,expected) = if decl<>expected then failwith (sprintf "Expected %A for %s but was %A" expected name decl) for completion in completions do match completion with | "Head" as name,_,_,decl -> count<-count + 1 AssertIsDecl(name,decl,DeclarationType.Property) | "Tail" as name,_,_,decl -> count<-count + 1 AssertIsDecl(name,decl,DeclarationType.Property) | name,_,_,x -> () Assert.AreEqual(2,count) // This was a bug in which the third level of dotting was ignored. [] member public this.``ThirdLevelOfDotting``() = let code = [ "let x = System.Console.Wr" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"Console.Wr") let completions = time1 CtrlSpaceCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) let AssertIsDecl(name,decl,expected) = if decl<>expected then failwith (sprintf "Expected %A for %s but was %A" expected name decl) for completion in completions do match completion with | "BackgroundColor" as name,_,_,decl -> AssertIsDecl(name,decl,DeclarationType.Property) | "CancelKeyEvent" as name,_,_,decl -> AssertIsDecl(name,decl,DeclarationType.Event) | name,_,_,x -> () // Test completions in an incomplete computation expression (case 1: for "let") [] member public this.``ComputationExpressionLet``() = let code = [ "let http(url:string) = " " async { " " let rnd = new System.Random()" " let rsp = rnd.N" ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"rsp = rnd.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." AssertCompListContainsAll(completions, ["Next"]) [] member public this.``BestMatch.Bug4320a``() = let code = [ " let x = System." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"System.") let Match text filterText = CompletionBestMatchAtCursorFor(file, text, filterText) // (ItemName, isUnique, isPrefix) // isUnique=true means it will be selected on ctrl-space invocation // isPrefix=true means it will be selected, instead of just outlined AssertEqual(Some ("GC", false, true), Match "G" None) AssertEqual(Some ("GC", false, true), Match "GC" None) AssertEqual(Some ("GCCollectionMode", true, true), Match "GCC" None) AssertEqual(Some ("GCCollectionMode", false, false), Match "GCCZ" None) AssertEqual(Some ("GC", false, true), Match "G" (Some "G")) AssertEqual(Some ("GC", false, true), Match "GC" (Some "G")) AssertEqual(Some ("GCCollectionMode", true, true), Match "GCC" (Some "G")) AssertEqual(Some ("GCCollectionMode", false, false), Match "GCCZ" (Some "G")) AssertEqual(Some ("GC", false, true), Match "G" (Some "GC")) AssertEqual(Some ("GC", false, true), Match "GC" (Some "GC")) AssertEqual(Some ("GCCollectionMode", true, true), Match "GCC" (Some "GC")) AssertEqual(Some ("GCCollectionMode", false, false), Match "GCCZ" (Some "GC")) [] member public this.``BestMatch.Bug4320b``() = let code = [ " let x = List." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"List.") let Match text = CompletionBestMatchAtCursorFor(file, text, None) // (ItemName, isUnique, isPrefix) // isUnique=true means it will be selected on ctrl-space invocation // isPrefix=true means it will be selected, instead of just outlined AssertEqual(Some ("choose", false, true), Match "c") AssertEqual(Some ("collect", false, true), Match "co") AssertEqual(Some ("concat", true, true), Match "con") AssertEqual(Some ("Cons", true, true), Match "cons") [] member public this.``BestMatch.Bug5131``() = let code = [ "System.Environment." ] let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"Environment.") let Match text = CompletionBestMatchAtCursorFor(file, text, None) // (ItemName, isUnique, isPrefix) // isUnique=true means it will be selected on ctrl-space invocation // isPrefix=true means it will be selected, instead of just outlined AssertEqual(Some ("OSVersion", true, true), Match "o") [] member public this.``VisualStudio.CloseAndReopenSolution``() = use _guard = this.UsingNewVS() // This test exposes what was once a bug, where closing a solution and then re-opening // it caused the old stale IProjectSiteOption (that the LanguageService had cached) // to eventually throw a NullReferenceException and assert. let solution = this.CreateSolution() let projName = "testproject" let project = CreateProject(solution,projName) let dir = ProjectDirectory(project) let file = AddFileFromText(project,"File1.fs", [ "let x = 0" "let y = x." ]) let file = OpenFile(project, "File1.fs") MoveCursorToEndOfMarker(file,"x.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) this.CloseSolution(solution) let project,solution = OpenExistingProject(this.VS, dir, projName) let file = List.nth (GetOpenFiles(project)) 0 MoveCursorToEndOfMarker(file,"x.") let completions = time1 AutoCompleteAtCursor file "Time of first autocomplete." // printf "Completions=%A\n" completions Assert.IsTrue(completions.Length>0) [] member this.``BadCompletionAfterQuicklyTyping.Bug72561``() = let code = [ " " ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "." and then get dot-completions // This simulates the case when the user quickly types "dot" after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ([ "[1]." ]) MoveCursorToEndOfMarker(file, ".") // Note: no TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContainsExactly(completions, []) // there are no stale results for an expression at this location, so nothing is returned immediately // second-chance intellisense will kick in: TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, ["Length"]) AssertCompListDoesNotContainAny(completions, ["AbstractClassAttribute"]) gpatcc.AssertExactly(0,0) [] member this.``BadCompletionAfterQuicklyTyping.Bug72561.Noteworthy.NowWorks``() = let code = [ "123 " ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "." and then get dot-completions // This simulates the case when the user quickly types "dot" after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ([ "[1]." ]) MoveCursorToEndOfMarker(file, ".") // Note: no TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListIsEmpty(completions) // empty completion list means second-chance intellisense will kick in // if we wait... TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file // ... we get the expected answer AssertCompListContainsAll(completions, ["Length"]) AssertCompListDoesNotContainAny(completions, ["AbstractClassAttribute"]) gpatcc.AssertExactly(0,0) [] member this.``BadCompletionAfterQuicklyTyping.Bug130733.NowWorks``() = let code = [ "let someCall(x) = null" "let xe = someCall(System.IO.StringReader() "] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "." and then get dot-completions // This simulates the case when the user quickly types "dot" after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file [ "let someCall(x) = null" "let xe = someCall(System.IO.StringReader(). "] MoveCursorToEndOfMarker(file, "().") // Note: no TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, ["ReadBlock"]) // text to the left of the dot did not change, so we use stale (correct) result immediately // if we wait... TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file // ... we get the expected answer AssertCompListContainsAll(completions, ["ReadBlock"]) gpatcc.AssertExactly(0,0) [] member this.``BadCompletionAfterQuicklyTyping.Bug177519.NowWorking``() = // this test is similar to "Bug72561.Noteworthy" but uses name resolutions rather than expression typings // name resolutions currently still respond with stale info let code = [ "let A = 42" "let B = \"\"" "A. // quickly backspace and retype B. --> exact name resolution code path" ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) let code2= [ "let A = 42" "let B = \"\"" "B. // quickly backspace and retype B. --> exact name resolution code path" ] ReplaceFileInMemoryWithoutCoffeeBreak file code2 MoveCursorToEndOfMarker(file, "B.") // Note: no TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListIsEmpty(completions) // empty completion list means second-chance intellisense will kick in // if we wait... TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file // ... we get the expected answer AssertCompListContainsAll(completions, ["Chars"]) // has correct string info gpatcc.AssertExactly(0,0) //*********************************************Previous Completion test and helper***** member private this.VerifyCompListDoesNotContainAnyAtStartOfMarker(fileContents : string, marker : string, list : string list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, marker) let completions = AutoCompleteAtCursor(file) AssertCompListDoesNotContainAny(completions,list) member private this.VerifyCtrlSpaceListDoesNotContainAnyAtStartOfMarker(fileContents : string, marker : string, list : string list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, marker) let completions = CtrlSpaceCompleteAtCursor file AssertCompListDoesNotContainAny(completions,list) member private this.VerifyCompListContainAllAtStartOfMarker(fileContents : string, marker : string, list : string list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToStartOfMarker(file, marker) let completions = AutoCompleteAtCursor(file) AssertCompListContainsAll(completions, list) member private this.VerifyCtrlSpaceListContainAllAtStartOfMarker(fileContents : string, marker : string, list : string list, ?coffeeBreak:bool, ?addtlRefAssy:list) = let coffeeBreak = defaultArg coffeeBreak false let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) MoveCursorToStartOfMarker(file, marker) if coffeeBreak then TakeCoffeeBreak(this.VS) let completions = CtrlSpaceCompleteAtCursor file AssertCompListContainsAll(completions, list) member private this.VerifyAutoCompListIsEmptyAtEndOfMarker(fileContents : string, marker : string) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToEndOfMarker(file, marker) let completions = AutoCompleteAtCursor(file) AssertEqual(0,completions.Length) member private this.VerifyCtrlSpaceCompListIsEmptyAtEndOfMarker(fileContents : string, marker : string) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) MoveCursorToEndOfMarker(file, marker) let completions = CtrlSpaceCompleteAtCursor(file) AssertEqual(0,completions.Length) [] member this.``Expression.WithoutPreDefinedMethods``() = this.VerifyCtrlSpaceListDoesNotContainAnyAtStartOfMarker( fileContents = """ let x = F(*HERE*)""", marker = "(*HERE*)", list = ["FSharpDelegateEvent"; "PrivateMethod"; "PrivateType"]) [] member this.``Expression.WithPreDefinedMethods``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ module Module1 = let private PrivateField = 1 let private PrivateMethod x = x+1 type private PrivateType() = member this.mem = 1 let a = (*Marker1*) let b = 23 """, marker = "(*Marker1*)", list = ["PrivateField"; "PrivateMethod"; "PrivateType"]) // Regression for bug 2116 -- Consider making selected item in completion list case-insensitiv [] member this.``CaseInsensitive``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ type Test() = member this.Xyzzy = () member this.xYzzy = () member this.xyZzy = () member this.xyzZy = () member this.xyzzY = () let t = new Test() t.XYZ(*Marker1*) """, marker = "(*Marker1*)", list = ["Xyzzy"; "xYzzy"; "xyZzy"; "xyzZy"; "xyzzY"]) [] member this.``Attributes.CanSeeOpenNamespaces.Bug268290.Case1``() = AssertCtrlSpaceCompleteContains [""" module Foo open System [< """] "[<" ["AttributeUsageAttribute"] [] [] member this.``Attributes.CanSeeOpenNamespaces.Bug268290.Case2``() = AssertCtrlSpaceCompleteContains [""" open System [< """] "[<" ["AttributeUsageAttribute"] [] [] member this.``Selection``() = AssertCtrlSpaceCompleteContains [""" let preSelectedItem = 1 let r = (*MarkerPreSelectedItem*)pre """] "(*MarkerPreSelectedItem*)pre" ["preSelectedItem"] [] // Regression test for 1653 -- Both the F# exception and the .NET exception representing it are shown in completion lists [] member this.``NoDupException.Postive``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ let x = Match(*MarkerException*)""", marker = "(*MarkerException*)", list = ["MatchFailureException"]) [] member this.``DotNetException.Negative``() = this.VerifyCtrlSpaceListDoesNotContainAnyAtStartOfMarker( fileContents = """ let x = Match(*MarkerException*)""", marker = "(*MarkerException*)", list = ["MatchFailure"]) // Regression for bug 921 -- intellisense case-insensitive? [] member this.``CaseInsensitive.MapMethod``() = this.VerifyCtrlSpaceListContainAllAtStartOfMarker( fileContents = """ List.MaP(*MarkerCase*) """, marker = "(*MarkerCase*)", list = ["map"]) //Regression for bug 69644 69654 Fsharp: no completion for an identifier when 'use'd inside an 'async' block [] [] member this.``InAsyncAndUseBlock``() = this.VerifyCompListContainAllAtStartOfMarker( fileContents = """ open System.Text.RegularExpressions open System.IO let collectLinksAsync (url:string) : Async = async { do printfn "requesting %s" url let! html = async { use reader = new System.IO.StreamReader(new System.IO.FileStream("", FileMode.CreateNew)) do printfn "reading %s" url return (*Marker1*)reader.ReadToEnd() } //<---- reader let links = "a" return links } """, marker = "(*Marker1*)", list = ["reader"]) [] member this.``WithoutOpenNamespace``() = AssertCtrlSpaceCompleteContains [""" module CodeAccessibility let x = S(*Marker*) """] "(*Marker*)" [] // should ["Single"] // should not [] member this.``PrivateVisible``() = AssertCtrlSpaceCompleteContains [""" module CodeAccessibility module Module1 = let private fieldPrivate = 1 let private MethodPrivate x = x+1 type private TypePrivate() = member this.mem = 1 let a = (*Marker1*) """] "(*Marker1*) " ["fieldPrivate";"MethodPrivate";"TypePrivate"] [] [] member this.``InternalVisible``() = AssertCtrlSpaceCompleteContains [""" module CodeAccessibility module Module1 = let internal fieldInternal = 1 let internal MethodInternal x = x+1 type internal TypeInternal() = member this.mem = 1 let a = (*Marker1*) """] "(*Marker1*) " ["fieldInternal";"MethodInternal";"TypeInternal"] // should [] // should not [] [] // Verify that we display the correct list of Unit of Measure (Names) in the autocomplete window. // This also ensures that no UoM are accidenatally added or removed. member public this.``UnitMeasure.UnitNames``() = AssertAutoCompleteContains [ "Microsoft.FSharp.Data.UnitSystems.SI.UnitNames."] "UnitNames." [ "ampere"; "becquerel"; "candela"; "coulomb"; "farad"; "gray"; "henry"; "hertz"; "joule"; "katal"; "kelvin"; "kilogram"; "lumen"; "lux"; "metre"; "mole"; "newton"; "ohm"; "pascal"; "second"; "siemens"; "sievert"; "tesla"; "volt"; "watt"; "weber";] // should contain; exact match [ ] // should not contain [] [] // Verify that we display the correct list of Unit of Measure (Symbols) in the autocomplete window. // This also ensures that no UoM are accidenatally added or removed. member public this.``UnitMeasure.UnitSymbols``() = AssertAutoCompleteContains [ "Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols."] "UnitSymbols." [ "A"; "Bq"; "C"; "F"; "Gy"; "H"; "Hz"; "J"; "K"; "N"; "Pa"; "S"; "Sv"; "T"; "V"; "W"; "Wb"; "cd"; "kat"; "kg"; "lm"; "lx"; "m"; "mol"; "ohm"; "s";] // should contain; exact match [ ] // should not contain (*------------------------------------------IDE Query automation start -------------------------------------------------*) member private this.AssertAutoCompletionInQuery(fileContent : string list, marker:string,contained:string list) = let file = createFile fileContent SourceFileKind.FS ["System.Xml.Linq"] let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) MoveCursorToEndOfMarker(file, marker) let completions = CompleteAtCursorForReason(file,Microsoft.VisualStudio.FSharp.LanguageService.BackgroundRequestReason.CompleteWord) AssertCompListContainsAll(completions, contained) gpatcc.AssertExactly(0,0) [] [] // Custom operators appear in Intellisense list after entering a valid query operator // on the previous line and invoking Intellisense manually // Including in a nested query member public this.``Query.Auto.InNestedQuery``() = this.AssertAutoCompletionInQuery( fileContent =[""" let tuples = [ (1, 8, 9); (56, 45, 3)] let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let foo = query { for n in numbers do let maxNumber = query {for x in tuples do ma} select n }"""], marker = "do ma", contained = [ "maxBy"; "maxByNullable"; ]) [] [] // Custom operators appear in Intellisense list after entering a valid query operator // on the previous line and invoking Intellisense manually // Including in a nested query member public this.``Query.Auto.OffSetFromPreviousLine``() = this.AssertAutoCompletionInQuery( fileContent =[""" let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let foo = query { for n in numbers do gro }"""], marker = "gro", contained = [ "groupBy"; "groupJoin"; "groupValBy";]) //****************************************// type DotCompletionListTests() = inherit LanguageServiceBaseTests() /////Helper Functios //DotCompList ContainAll At End Of Marker Helper Function member private this.VerifyDotCompListContainAllAtEndOfMarker(fileContents : string, marker : string, list : string list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents) let completions = DotCompletionAtEndOfMarker file marker AssertCompListContainsAll(completions, list) //DotCompList ContainAll methods and properties At Start Of Marker Helper Function member private this.VerifyDotCompListContainAllAtStartOfMarker(fileContents : string, marker : string, list :string list, ?addtlRefAssy : list, ?coffeeBreak:bool) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) if defaultArg coffeeBreak false then TakeCoffeeBreak(this.VS) let completions = DotCompletionAtStartOfMarker file marker AssertCompListContainsAll(completions, list) //DoesNotContainAny At Start Of Marker Helper Function member private this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker(fileContents : string, marker : string, list : string list, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) let completions = DotCompletionAtStartOfMarker file marker AssertCompListDoesNotContainAny(completions, list) //DotCompList Is Empty At Start Of Marker Helper Function member private this.VerifyDotCompListIsEmptyAtStartOfMarker(fileContents : string, marker : string, ?addtlRefAssy : list) = let (solution, project, file) = this.CreateSingleFileProject(fileContents, ?references = addtlRefAssy) let completions = DotCompletionAtStartOfMarker file marker AssertCompListIsEmpty(completions) [] member this.``Namespace.System``() = this.VerifyDotCompListContainAllAtEndOfMarker( fileContents = """ // Test '.' after System open System let str = "a string" // Test '.' after str let _ = str(*usage*) """, marker = "open System", list = [ "IO"; "Collections" ]) [] member this.``Identifier.String.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System let str = "a string" // Test '.' after str let _ = str(*usage*) """, marker = "(*usage*)", list = ["Chars"; "ToString"; "Length"; "GetHashCode"]) [] member this.``Idenfifier.String.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ open System let str = "a string" // Test '.' after str let _ = str(*usage*) """, marker = "(*usage*)", list = ["Parse"; "op_Addition"; "op_Subtraction"]) // Verify add_* methods show up for non-standard events. These are events // where the associated delegate type does not return "void" [] member this.``Event.NonStandard.PrefixMethods``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """System.AppDomain.CurrentDomain(*usage*)""", marker = "(*usage*)", list = ["add_AssemblyResolve"; "remove_AssemblyResolve"; "add_ReflectionOnlyAssemblyResolve"; "remove_ReflectionOnlyAssemblyResolve"; "add_ResourceResolve"; "remove_ResourceResolve"; "add_TypeResolve"; "remove_TypeResolve"]) // Verify the events do show up. An error is generated when they are used asking the user to use add_* and remove_* instead. // That is, they are legitimate name resolutions but do not pass type checking. [] member this.``Event.NonStandard.VerifyLegitimateNameShowUp``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "System.AppDomain.CurrentDomain(*usage*)", marker = "(*usage*)", list = ["AssemblyResolve"; "ReflectionOnlyAssemblyResolve"; "ResourceResolve"; "TypeResolve" ]) [] member this.``Array``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "let arr = [| for i in 1..10 -> i |](*Mexparray*)", marker = "(*Mexparray*)", list = ["Clone"; "IsFixedSize"]) [] member this.``List``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "let lst = [ for i in 1..10 -> i](*Mexplist*)", marker = "(*Mexplist*)", list = ["Head"; "Tail"]) [] member public this.``ExpressionDotting.Regression.Bug187799``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type T() = member __.P with get() = new T() member __.M() = [|1..2|] let t = new T() t.P.M()(*marker*) """, marker = "(*marker*)", list = ["Clone"]) // should contain method on array (result of M call) [] member public this.``ExpressionDotting.Regression.Bug187799.Test2``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type T() = member __.M() = [|1..2|] type R = { P : T } // dotting through an F# record field let r = { P = T() } r.P.M()(*marker*) """, marker = "(*marker*)", list = ["Clone"]) // should contain method on array (result of M call) [] member public this.``ExpressionDotting.Regression.Bug187799.Test3``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type R = { P : System.Reflection.InterfaceMapping } // Dotting through an F# record field and an IL record field // Note that InterfaceMapping is a rare example of a public .NET instance field in mscorlib let r = { P = Unchecked.defaultof } r.P(*marker*)""", marker = "(*marker*)", list = ["InterfaceMethods"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test4``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type R = { P : System.Reflection.InterfaceMapping } // Dotting through an F# record field and an IL record field // Note that InterfaceMapping is a rare example of a public .NET instance field in mscorlib let f() = { P = Unchecked.defaultof } f().P(*marker*)""", marker = "(*marker*)", list = ["InterfaceMethods"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test5``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type R = { P : System.Reflection.InterfaceMapping } // Note that InterfaceMapping is a rare example of a public .NET instance field in mscorlib let f() = { P = Unchecked.defaultof } f().P.InterfaceMethods(*marker*)""", marker = "(*marker*)", list = ["GetEnumerator"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test6``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type R = { P : System.AppDomain } // Test dotting through an F# record field and a .NET event let f() = { P = null } f().P.UnhandledException(*marker*)""", marker = "(*marker*)", list = ["AddHandler"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test7``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type R = { P : System.AppDomain } // Test dotting through an F# record field and a .NET event let f() = { P = null } f().P.UnhandledException.GetType()(*marker*)""", marker = "(*marker*)", list = ["Assembly"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test8``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type C() = static member XXX with get() = 4 and set(x) = () static member CCC with get() = C() C.XXX(*marker*) <- 42""", marker = "(*marker*)", list = ["CompareTo"]) [] member public this.``ExpressionDotting.Regression.Bug187799.Test9``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type C() = static member XXX with get() = 4 and set(x) = () static member CCC with get() = C() C.XXX(*marker*) <- 42""", marker = "(*marker*)", list = ["CompareTo"]) [] [] [] // This test case checks that autocomplete on the provided Type DOES NOT show System.Object members member this.``TypeProvider.EditorHideMethodsAttribute.Type.DoesnotContain``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ let t = new N.T() t(*Marker*)""", marker = "(*Marker*)", list = ["Equals";"GetHashCode"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] [] [] // This test case checks if autocomplete on the provided Type shows only the Event1 elements member this.``TypeProvider.EditorHideMethodsAttribute.Type.Contains``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let t = new N.T() t(*Marker*)""", marker = "(*Marker*)", list = ["Event1"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] [] [] // This test case checks if autocomplete on the provided Type shows the instance method IM1 member this.``TypeProvider.EditorHideMethodsAttribute.InstanceMethod.Contains``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let t = new N1.T1() t(*Marker*)""", marker = "(*Marker*)", list = ["IM1"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] // This test case checks that nested types show up only statically and not on instances member this.``TypeProvider.TypeContainsNestedType``() = // should have it here this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type XXX = N1.T1(*Marker*)""", marker = "(*Marker*)", list = ["SomeNestedType"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) // should _not_ have it here this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ let t = new N1.T1() t(*Marker*)""", marker = "(*Marker*)", list = ["SomeNestedType"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\DummyProviderForLanguageServiceTesting.dll")]) [] [] [] // This test case checks if autocomplete on the provided Event shows only the AddHandler/RemoveHandler elements member this.``TypeProvider.EditorHideMethodsAttribute.Event.Contain``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let t = new N.T() t.Event1(*Marker*)""", marker = "(*Marker*)", list = ["AddHandler";"RemoveHandler"], addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] [] [] // This test case checks if autocomplete on the provided Method shows no elements // You can see this as a "negative case" (to check that the usage of the attribute on a method is harmless) member this.``TypeProvider.EditorHideMethodsAttribute.Method.Contain``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ let t = N.T.M(*Marker*)()""", marker = "(*Marker*)", addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] [] [] // This test case checks if autocomplete on the provided Property (the type of which is not synthetic) shows the usual elements... like GetType() // 1. I think it does not make sense to use this attribute on a synthetic property unless it's type is also synthetic (already covered) // 2. You can see this as a "negative case" (to check that the usage of the attribute is harmless) member this.``TypeProvider.EditorHideMethodsAttribute.Property.Contain``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let t = N.T.StaticProp(*Marker*)""", marker = "(*Marker*)", list = ["GetType"; "Equals"], // just a couple of System.Object methods: we expect them to be there! addtlRefAssy = [System.IO.Path.Combine(System.Environment.CurrentDirectory, @"UnitTestsResources\MockTypeProviders\EditorHideMethodsAttribute.dll")]) [] member this.CompListInDiffFileTypes() = let fileContents = """ val x:int = 1 x(*MarkerInsideaSignatureFile*) """ let (solution, project, openfile) = this.CreateSingleFileProject(fileContents, fileKind = SourceFileKind.FSI) let completions = DotCompletionAtStartOfMarker openfile "(*MarkerInsideaSignatureFile*)" AssertCompListContainsAll(completions, []) // .fsi will not contain completions for this (it doesn't make sense) let fileContents = """ let i = 1 i(*MarkerInsideSourceFile*) """ let (solution, project, file) = this.CreateSingleFileProject(fileContents) let completions = DotCompletionAtStartOfMarker file "(*MarkerInsideSourceFile*)" AssertCompListContainsAll(completions, ["CompareTo"; "Equals"]) [] member this.ConstrainedTypes() = let fileContents = """ type Pet() = member x.Name() = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() member x.dog() = "this is a dog" let dog = new Dog() let pet = dog :> Pet pet(*Mupcast*) let dctest = pet :?> Dog dctest(*Mdowncast*) let f (x : bigint) = x(*Mconstrainedtoint*) """ let references = [ "System.Numerics" // code uses bigint ] let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = references) let completions = DotCompletionAtStartOfMarker file "(*Mupcast*)" AssertCompListContainsAll(completions, ["Name"; "Speak"]) let completions = DotCompletionAtStartOfMarker file "(*Mdowncast*)" AssertCompListContainsAll(completions, ["dog"; "Name"]) let completions = DotCompletionAtStartOfMarker file "(*Mconstrainedtoint*)" AssertCompListContainsAll(completions, ["ToString"]) [] [] member this.InternalNotVisibleInDiffAssembly() = let fileContents = """ module CodeAccessibility let type1 = new InternalNotVisibleInDiffAssembly.Module1.Type1() type1(*MarkerDiffAssmb*)""" let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = ["InternalNotVisibleDiffAssembly.Assembly.dll"]) let completions = DotCompletionAtStartOfMarker file "(*MarkerDiffAssmb*)" AssertCompListDoesNotContainAny(completions, ["fieldInternal";"MethodInternal"]) [] member this.``Literal.Float``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "let myfloat = (42.0)(*Mconstantfloat*)", marker = "(*Mconstantfloat*)", list = ["GetType"; "ToString"]) [] member this.``Literal.String``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """let name = "foo"(*Mconstantstring*)""", marker = "(*Mconstantstring*)", list = ["Chars"; "Clone"]) [] member this.``Literal.Int``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "let typeint = (10)(*Mint*)", marker = "(*Mint*)", list = ["GetType";"ToString"]) [] member this.``Identifier.InLambdaExpression``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "let funcLambdaExp = fun (x:int)-> x(*MarkerinLambdaExp*)", marker = "(*MarkerinLambdaExp*)", list = ["ToString"; "Equals"]) [] member this.``Identifier.InClass``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type ClassLetBindIn(x:int) = let m_field = x(*MarkerLetBindinClass*) """, marker = "(*MarkerLetBindinClass*)", list = ["ToString"; "Equals"]) [] member this.``Identifier.InNestedLetBind``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = " let funcNestedLetBinding (x:int) = let funcNested (x:int) = x(*MarkerNestedLetBind*) () ", marker = "(*MarkerNestedLetBind*)", list = ["ToString"; "Equals"]) [] member this.``Identifier.InModule``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = " module ModuleLetBindIn = let f (x:int) = x(*MarkerLetBindinModule*) ", marker = "(*MarkerLetBindinModule*)", list = ["ToString"; "Equals"]) [] member this.``Identifier.InMatchStatement``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = " let x = 1 match x(*MarkerMatchStatement*) with |1 -> 1*1 |2 -> 2*2 ", marker = "(*MarkerMatchStatement*)", list = ["ToString"; "Equals"]) [] member this.``Identifier.InMatchClause``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = " let rec f l = match l with | [] -> let xx = System.DateTime.Now let y = xx(*MarkerMatchClause*) () | x :: xs -> f xs ", marker = "(*MarkerMatchClause*)", list = ["Add";"Date"]) [] member this.``Expression.ListItem``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let a = [1;2;3] a.[1](*MarkerListItem*) """, marker = "(*MarkerListItem*)", list = ["CompareTo"; "ToString"]) [] member this.``Expression.FunctionParameter``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f (x : string) = () f ("1" + "1")(*MarkerParameter*) """, marker = "(*MarkerParameter*)", list = ["CompareTo"; "ToString"]) [] member this.``Expression.Function``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let func(mm) = 100 func(x + y)(*MarkerFunction*) """, marker = "(*MarkerFunction*)", list = ["CompareTo"; "ToString"]) [] member this.``Expression.RecordPattern``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Rec = { X : int} member this.Value = 42 { X = 1 }(*MarkerRecordPattern*) """, marker = "(*MarkerRecordPattern*)", list = ["Value"; "ToString"]) [] member this.``Expression.2DArray``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let (a2: int[,]) = Array2.zero_create 10 10 a2.[1,2](*Marker2DArray*) """, marker = "(*Marker2DArray*)", list = ["ToString"]) [] member this.``Expression.LetBind``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f (x : string) = () //And in many different contexts where the ??tomic expression??occurs at the end of the expression, e.g. let x = y in f ("1" + "1")(*MarkerContext1*) """, marker = "(*MarkerContext1*)", list = ["CompareTo";"ToString"]) [] member this.``Expression.WhileLoop``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f (x : string) = () while true do f ("1" + "1")(*MarkerContext3*) """, marker = "(*MarkerContext3*)", list = ["CompareTo";"ToString"]) [] member this.``Expression.List``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """[1;2](*MarkerList*) """, marker = "(*MarkerList*)", list = ["Head"; "Item"]) [] member this.``Expression.Nested.InLetBind``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f (x : string) = () // Nested expressions let x = 42 |> ignore; f ("1" + "1")(*MarkerNested1*) """, marker = "(*MarkerNested1*)", list = ["Chars";"Length"]) [] member this.``Expression.Nested.InWhileLoop``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f (x : string) = () while true do ignore (f ("1" + "1")(*MarkerNested2*)) """, marker = "(*MarkerNested2*)", list = ["Chars";"Length"]) [] member this.``Expression.ArrayItem.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ //regression test for bug 1001 let str1 = Array.init 10 string str1.[1](*MarkerArrayIndexer*)""", marker = "(*MarkerArrayIndexer*)", list = ["Chars";"Split"]) [] member this.``Expression.ArrayItem.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ //regression test for bug 1001 let str1 = Array.init 10 string str1.[1](*MarkerArrayIndexer*)""", marker = "(*MarkerArrayIndexer*)", list = ["IsReadOnly";"Rank"]) [] member this.``ObjInstance.InheritedClass.MethodsDefInBase``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Pet() = member x.Name() = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() member x.dog() = "this is a dog" let dog = new Dog() dog(*Mderived*)""", marker = "(*Mderived*)", list = ["Name"; "dog"]) [] member this.``ObjInstance.AnonymousClass.MethodsDefInInterface``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type IFoo = abstract DoStuff : unit -> string abstract DoStuff2 : int * int -> string -> string // Implement an interface in a class (This is kind of lame if you don’t want to actually declare a class) type Foo() = interface IFoo with member this.DoStuff () = "Return a string" member this.DoStuff2 (x, y) z = sprintf "Arguments were (%d, %d) %s" x y z // instanceOfIFoo is an instance of an anonomyous class which implements IFoo let instanceOfIFoo = { new IFoo with member this.DoStuff () = "Implement IFoo" member this.DoStuff2 (x, y) z = sprintf "Arguments were (%d, %d) %s" x y z }(*Mexpnewtype*)""", marker = "(*Mexpnewtype*)", list = ["DoStuff"; "DoStuff2"]) [] member this.``SimpleTypes.SystemTime``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let typestruct = System.DateTime.Now typestruct(*Mstruct*)""", marker = "(*Mstruct*)", list = ["AddDays"; "Date"]) [] member this.``SimpleTypes.Record``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Person = { Name: string; DateOfBirth: System.DateTime } let typrecord = { Name = "Bill"; DateOfBirth = new System.DateTime(1962,09,02) } typrecord(*Mrecord*)""", marker = "(*Mrecord*)", list = ["DateOfBirth"; "Name"]) [] member this.``SimpleTypes.Enum``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type weekday = | Monday = 1 | Tuesday = 2 | Wednesday = 3 | Thursday = 4 | Friday = 5 let typeenum = weekday.Friday typeenum(*Menum*)""", marker = "(*Menum*)", list = ["GetType"; "ToString"]) [] member this.``SimpleTypes.DisUnion``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Route = int type Make = string type Model = string type Transport = | Car of Make * Model | Bicycle | Bus of Route let typediscriminatedunion = Car("BMW","360") typediscriminatedunion(*Mdiscriminatedunion*)""", marker = "(*Mdiscriminatedunion*)", list = ["GetType"; "ToString"]) [] member this.``InheritedClass.BaseClassPrivateMethod.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ open System //difine the base class type Widget() = let mutable state = 0 member internal x.MethodInternal() = state member public x.MethodPublic(n) = state <- state + n member private x.MethodPrivate() = (state <> 0) [] val mutable internal fieldInternal:int [] val mutable public fieldPublic:int [] val mutable private fieldPrivate:int //define the divided class which inherent "Widget" type Divided() = inherit Widget() member x.myPrint() = base(*MUnShowPrivate*) Console.ReadKey(true)""" , marker = "(*MUnShowPrivate*)", list = ["MethodPrivate";"fieldPrivate"]) [] member this.``InheritedClass.BaseClassPublicMethodAndProperty``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System //difine the base class type Widget() = let mutable state = 0 member internal x.MethodInternal() = state member public x.MethodPublic(n) = state <- state + n member private x.MethodPrivate() = (state <> 0) [] val mutable internal fieldInternal:int [] val mutable public fieldPublic:int [] val mutable private fieldPrivate:int //define the divided class which inherent "Widget" type Divided() = inherit Widget() member x.myPrint() = base(*MShowPublic*) Console.ReadKey(true)""", marker = "(*MShowPublic*)", list = ["MethodPublic";"fieldPublic"]) [] member this.``Visibility.InternalNestedClass.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """System.Console(*Marker1*)""", marker = "(*Marker1*)", list = ["ControlCDelegateData"]) [] member this.``Visibility.PrivateIdentifierInDiffModule.Negative``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ module Module1 = let private fieldPrivate = 1 let private MethodPrivate x = x+1 type private TypePrivate()= member this.mem = 1 module Module2 = Module1(*Marker1*) """, marker = "(*Marker1*)") [] member this.``Visibility.PrivateIdentifierInDiffClass.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ open System module Module1 = type Type1()= [] val mutable private fieldPrivate:int member private x.MethodPrivate() = 1 type Type2()= let M1= let type1 = new Type1() type1(*MarkerOutType*) """, marker = "(*MarkerOutType*)", list = ["fieldPrivate";"MethodPrivate"]) [] member this.``Visibility.PrivateFieldInSameClass``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System module Module1 = type Type1()= [] val mutable private PrivateField:int static member private PrivateMethod() = 1 member this.Field1 with get () = this(*MarkerFieldInType*) member x.MethodTest() = Type1(*MarkerMethodInType*) let type1 = new Type1() """, marker = "(*MarkerFieldInType*)", list = ["PrivateField"]) [] member this.``Visibility.PrivateMethodInSameClass``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System module Module1 = type Type1()= [] val mutable private PrivateField:int static member private PrivateMethod() = 1 member this.Field1 with get () = this(*MarkerFieldInType*) member x.MethodTest() = Type1(*MarkerMethodInType*) let type1 = new Type1() """, marker = "(*MarkerMethodInType*)", list = ["PrivateMethod"]) [] member this.``VariableIdentifier.AsParameter``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module MyModule = type DuType = | Tag of int let f (DuType(*Maftervariable1*).Tag(x)) = 10 """, marker = "(*Maftervariable1*)", list = ["Tag"]) [] member this.``VariableIdentifier.InMeasure.DefineInDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int let f (DuType(*Maftervariable1*).Tag(x)) = 10 type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() do base(*Maftervariable3*).GetType() let dog = new Dog() namespace MyNamespace2 module MyModule2 = let typeFunc = [1; 2; 3] let f (x:MyNamespace1.MyModule(*Maftervariable4*)) = 10 let y = int System.IO(*Maftervariable5*)""", marker = "(*Maftervariable2*)", list = ["DuType";"Tag"]) [] member this.``VariableIdentifier.MethodsInheritFomeBase``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int let f (DuType(*Maftervariable1*).Tag(x)) = 10 type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() do base(*Maftervariable3*).GetType() let dog = new Dog()""", marker = "(*Maftervariable3*)", list = ["Name";"Speak"]) [] member this.``VariableIdentifier.AsParameter.DefineInDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int let f (DuType(*Maftervariable1*).Tag(x)) = 10 type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() do base(*Maftervariable3*).GetType() let dog = new Dog() namespace MyNamespace2 module MyModule2 = let typeFunc = [1; 2; 3] let f (x:MyNamespace1.MyModule(*Maftervariable4*)) = 10 let y = int System.IO(*Maftervariable5*)""", marker = "(*Maftervariable4*)", list = ["DuType";"Tag"]) [] member this.``VariableIdentifier.SystemNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int let f (DuType(*Maftervariable1*).Tag(x)) = 10 type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() do base(*Maftervariable3*).GetType() let dog = new Dog() namespace MyNamespace2 module MyModule2 = let typeFunc = [1; 2; 3] let f (x:MyNamespace1.MyModule(*Maftervariable4*)) = 10 let y = int System.IO(*Maftervariable5*)""", marker = "(*Maftervariable5*)", list = ["BinaryReader";"Stream";"Directory"]) [] member this.``LongIdent.AsAttribute``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ [] type TestAttribute() = member x.print() = "print" """, marker = "(*Mattribute*)", list = ["Int32";"ObsoleteAttribute"]) [] member this.``ImportStatment.System.ImportDirectly``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System(*Mimportstatement1*) open IO = System(*Mimportstatement2*)""", marker = "(*Mimportstatement1*)", list = ["Collections"]) [] member this.``ImportStatment.System.ImportAsIdentifier``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System(*Mimportstatement1*) open IO = System(*Mimportstatement2*)""", marker = "(*Mimportstatement2*)", list = ["IO"]) [] member this.``LongIdent.PatternMatch.AsVariable.DefFromDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace NS module longident = type Direction = | Left = 1 | Right = 2 type MoveCursor() = member this.Direction = Direction.Left namespace NS2 module test = let cursor = new NS.longident.MoveCursor() match cursor(*Mpatternmatch1*) with | NS.longident.Direction.Left -> "move left" | NS(*Mpatternmatch2*) -> "move right" """, marker = "(*Mpatternmatch1*)", list = ["Direction";"ToString"]) [] member this.``LongIdent.PatternMatch.AsConstantValue.DefFromDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace NS module longident = type Direction = | Left = 1 | Right = 2 type MoveCursor() = member this.Direction = Direction.Left namespace NS2 module test = let cursor = new NS.longident.MoveCursor() match cursor(*Mpatternmatch1*) with | NS.longident.Direction.Left -> "move left" | NS(*Mpatternmatch2*) -> "move right" """, marker = "(*Mpatternmatch2*)", list = ["longident"]) [] member this.``LongIdent.PInvoke.AsReturnType``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System.IO open System.Runtime.InteropServices // Get two temp files, write data into one of them let tempFile1, tempFile2 = Path.GetTempFileName(), Path.GetTempFileName() let writer = new StreamWriter (tempFile1) writer.WriteLine("Some Data") writer.Close() // Origional signature //[] //extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists); [] extern System(*Mpinvokereturntype*) CopyFile_Arrays(char[] lpExistingFileName, char[] lpNewFileName, bool bFailIfExists); let result = CopyFile_Arrays(tempFile1.ToCharArray(), tempFile2.ToCharArray(), false) printfn "Array %A" result""", marker = "(*Mpinvokereturntype*)", list = ["Boolean";"Int32"]) [] member this.``LongIdent.PInvoke.AsAttribute``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System.IO open System.Runtime.InteropServices module mymodule = type SomeAttrib() = inherit System.Attribute() type myclass() = member x.name() = "test case" module mymodule2 = [] extern bool CopyFile_Attrib([] char [] lpExistingFileName, char []lpNewFileName, [] bool & bFailIfExists); let result5 = CopyFile_Arrays(tempFile1.ToCharArray(), tempFile2.ToCharArray(), false) printfn "WithAttribute %A" result5""", marker = "(*Mpinvokeattribute*)", list = ["SomeAttrib";"myclass"]) [] member this.``LongIdent.PInvoke.AsParameterType``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System.IO open System.Runtime.InteropServices [] extern bool CopyFile_ArraySpaces(char [] lpExistingFileName, char []lpNewFileName, System(*Mpinvokeparametertype*) bFailIfExists); let result2 = CopyFile_Arrays(tempFile1.ToCharArray(), tempFile2.ToCharArray(), false) printfn "Array Space %A" result2""", marker = "(*Mpinvokeparametertype*)", list = ["Boolean";"Int32"]) [] member this.``LongIdent.Record.AsField``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module MyModule = type person = { name: string; dateOfBirth: System.DateTime; } module MyModule2 = let x = {MyModule(*Mrecord*) = 32}""", marker = "(*Mrecord*)", list = ["person"]) [] member this.``LongIdent.DiscUnion.AsTypeParameter.DefInDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() namespace MyNamespace2 module MyModule2 = let foo = MyNamespace1.MyModule(*Mtypeparameter1*) let f (x:int) = MyNamespace1.MyModule.DuType(*Mtypeparameter2*) let typeFunc = 10""", marker = "(*Mtypeparameter1*)", list = ["Dog";"DuType"]) [] member this.``LongIdent.AnonymousFunction.AsTypeParameter.DefFromDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() namespace MyNamespace2 module MyModule2 = let foo = MyNamespace1.MyModule(*Mtypeparameter1*) let f (x:int) = MyNamespace1.MyModule.DuType(*Mtypeparameter2*) let typeFunc = 10""", marker = "(*Mtypeparameter2*)", list = ["Tag"]) [] member this.``LongIdent.UnitMeasure.AsTypeParameter.DefFromDiffNamespace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace MyNamespace1 module MyModule = type DuType = | Tag of int type Pet() = member x.Name = "pet" member x.Speak() = "this is a pet" type Dog() = inherit Pet() namespace MyNamespace2 module MyModule2 = let foo = MyNamespace1.MyModule(*Mtypeparameter1*) let f (x:int) = MyNamespace1.MyModule.DuType(*Mtypeparameter2*) let typeFunc = 10""", marker = "(*Mtypeparameter3*)", list = ["Dog";"DuType"]) [] member this.``RedefinedIdentifier.DiffScope.InScope.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let identifierBothScope = "" let functionScope () = let identifierBothScope = System.DateTime.Now identifierBothScope(*MarkerShowLastOneWhenInScope*) identifierBothScope(*MarkerShowLastOneWhenOutscoped*)""", marker = "(*MarkerShowLastOneWhenInScope*)", list = ["DayOfWeek"]) [] member this.``RedefinedIdentifier.DiffScope.InScope.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ let identifierBothScope = "" let functionScope () = let identifierBothScope = System.DateTime.Now identifierBothScope(*MarkerShowLastOneWhenInScope*) identifierBothScope(*MarkerShowLastOneWhenOutscoped*)""", marker = "(*MarkerShowLastOneWhenInScope*)", list = ["Chars"]) [] member this.``RedefinedIdentifier.DiffScope.OutScope.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let identifierBothScope = "" let functionScope () = let identifierBothScope = System.DateTime.Now identifierBothScope(*MarkerShowLastOneWhenInScope*) identifierBothScope(*MarkerShowLastOneWhenOutscoped*)""", marker = "(*MarkerShowLastOneWhenOutscoped*)", list = ["Chars"]) [] member this.``ObjInstance.ExtensionMethods.WithoutDef.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ open System let rnd = new System.Random() rnd(*MWithoutReference*)""", marker = "(*MWithoutReference*)", list = ["NextDice";"DiceValue"]) [] member this.``Class.DefInDiffNameSpace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace NS1 module MyModule = [] type ObsoleteType() = member this.TestMethod() = 10 [] type CompilerMesageType() = member this.TestMethod() = 10 type TestType() = member this.TestMethod() = 100 [] member this.ObsoleteMethod() = 100 [] member this.CompilerMesageMethod() = 100 [] member this.HiddenMethod() = 10 [] member this.VisibleMethod() = 10 [] member this.VisibleMethod2() = 10 namespace NS2 module m2 = type x = NS1.MyModule(*MarkerType*) let b = (new NS1.MyModule.TestType())(*MarkerMethod*) """, marker = "(*MarkerType*)" , list = ["TestType"]) [] member this.``Class.DefInDiffNameSpace.WithAttributes.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ namespace NS1 module MyModule = [] type ObsoleteType() = member this.TestMethod() = 10 [] type CompilerMesageType() = member this.TestMethod() = 10 type TestType() = member this.TestMethod() = 100 [] member this.ObsoleteMethod() = 100 [] member this.CompilerMesageMethod() = 100 [] member this.HiddenMethod() = 10 [] member this.VisibleMethod() = 10 [] member this.VisibleMethod2() = 10 namespace NS2 module m2 = type x = NS1.MyModule(*MarkerType*) let b = (new NS1.MyModule.TestType())(*MarkerMethod*) """, marker = "(*MarkerType*)", list = ["ObsoleteType";"CompilerMesageType"]) [] member this.``Method.DefInDiffNameSpace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace NS1 module MyModule = [] type ObsoleteType() = member this.TestMethod() = 10 [] type CompilerMesageType() = member this.TestMethod() = 10 type TestType() = member this.TestMethod() = 100 [] member this.ObsoleteMethod() = 100 [] member this.CompilerMesageMethod() = 100 [] member this.HiddenMethod() = 10 [] member this.VisibleMethod() = 10 [] member this.VisibleMethod2() = 10 namespace NS2 module m2 = type x = NS1.MyModule(*MarkerType*) let b = (new NS1.MyModule.TestType())(*MarkerMethod*) """, marker = "(*MarkerMethod*)", list = ["TestMethod";"VisibleMethod";"VisibleMethod2"]) [] member this.``Method.DefInDiffNameSpace.WithAttributes.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ namespace NS1 module MyModule = [] type ObsoleteType() = member this.TestMethod() = 10 [] type CompilerMesageType() = member this.TestMethod() = 10 type TestType() = member this.TestMethod() = 100 [] member this.ObsoleteMethod() = 100 [] member this.CompilerMesageMethod() = 100 [] member this.HiddenMethod() = 10 [] member this.VisibleMethod() = 10 [] member this.VisibleMethod2() = 10 namespace NS2 module m2 = type x = NS1.MyModule(*MarkerType*) let b = (new NS1.MyModule.TestType())(*MarkerMethod*)""", marker = "(*MarkerMethod*)", list = ["ObsoleteMethod";"CompilerMesageMethod";"HiddenMethod"]) [] member this.``ObjInstance.ExtensionMethods.WithDef.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System type System.Random with member this.NextDice() = true member this.DiceValue = 6 let rnd = new System.Random() rnd(*MWithReference*)""", marker = "(*MWithReference*)", list = ["NextDice";"DiceValue"]) [] member this.``Keywords.If``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ if(*MarkerKeywordIf*) true then () """, marker ="(*MarkerKeywordIf*)") [] member this.``Keywords.Let``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """let(*MarkerKeywordLet*) a = 1""", marker = "(*MarkerKeywordLet*)") [] member this.``Keywords.Match``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ match(*MarkerKeywordMatch*) a with | pattern -> exp""", marker = "(*MarkerKeywordMatch*)") [] member this.``MacroDirectives.nowarn``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """#nowarn(*MarkerPreProcessNowarn*)""", marker = "(*MarkerPreProcessNowarn*)") [] member this.``MacroDirectives.light``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """#light(*MarkerPreProcessLight*)""", marker = "(*MarkerPreProcessLight*)") [] member this.``MacroDirectives.define``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """#define(*MarkerPreProcessDefine*)""", marker = "(*MarkerPreProcessDefine*)") [] member this.``MacroDirectives.PreProcessDefine``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """#define Foo(*MarkerPreProcessDefineConst*)""", marker = "(*MarkerPreProcessDefineConst*)") [] member this.``Identifier.InClass.WithoutDef``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type Type2 = val mutable x(*MarkerValue*) : string""", marker = "(*MarkerValue*)") [] member this.``Identifier.InDiscUnion.WithoutDef``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type DUTag = |Tag(*MarkerDU*) of int""", marker = "(*MarkerDU*)") [] member this.``Identifier.InRecord.WithoutDef``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """type Rec = { X(*MarkerRec*) : int }""", marker = "(*MarkerRec*)") [] member this.``Identifier.AsNamespace``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """namespace Namespace1(*MarkerNamespace*)""", marker = "(*MarkerNamespace*)") [] member this.``Identifier.AsModule``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """module Module1(*MarkerModule*)""", marker = "(*MarkerModule*)") [] member this.``Identifier.WithouDef``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ abcd(*MarkerUndefinedIdentifier*) """, marker = "(*MarkerUndefinedIdentifier*)") [] member this.``Identifier.InMatch.UnderScore``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ let x = 1 match x with |1 -> 1*2 |2 -> 2*2 |_(*MarkerIdentifierIsUnderScore*) -> 0 """, marker = "(*MarkerIdentifierIsUnderScore*)") [] member this.MemberSelf() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type Foo() = member this(*Mmemberself*)""", marker = "(*Mmemberself*)") [] member this.``Expression.InComment``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ //open System //open IO = System(*Mcomment*)""", marker = "(*Mcomment*)") [] member this.``Expression.InString``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """let x = "System.Console(*Minstring*)" """, marker = "(*Minstring*)") // Regression test for 1067 -- Completion lists don't work after generic arguments - for generic functions and for static members of generic types [] member this.``Regression1067.InstanceOfGeniricType``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type GT<'a> = static member P = 12 static member Q = 13 let _ = GT(*Marker1*) type gt_int = GT gt_int(*Marker2*) type D = class end let x = typeof(*Marker3*) let y = typeof y(*Marker4*) """, marker = "(*Marker2*)", list = ["P"; "Q"]) [] member this.``Regression1067.ClassUsingGeniricTypeAsAttribute``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type GT<'a> = static member P = 12 static member Q = 13 let _ = GT(*Marker1*) type gt_int = GT gt_int(*Marker2*) type D = class end let x = typeof(*Marker3*) let y = typeof y(*Marker4*) """, marker = "(*Marker4*)", list = ["Assembly"; "FullName"; "GUID"]) [] member this.NoInfiniteLoopInProperties() = let fileContents = """ open System.Windows.Forms let tn = new TreeNode("") tn.Nodes(*Marker1*)""" let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = ["System.Windows.Forms"]) let completions = DotCompletionAtStartOfMarker file "(*Marker1*)" AssertCompListDoesNotContainAny(completions, ["Nodes"]) // Regression for bug 3225 -- Invalid intellisense when inside of a quotation [] member this.``Regression3225.Identifier.InQuotation``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let _ = <@ let x = "foo" x(*Marker*) @>""", marker = "(*Marker*)", list = ["Chars"; "Length"]) // Regression for bug 1911 -- No completion list of expr in match statement [] member this.``Regression1911.Expression.InMatchStatement``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Thingey = { A : bool; B : int } let test = match (List.head [{A = true; B = 0}; {A = false; B = 1}])(*Marker*)""", marker = "(*Marker*)", list = ["A"; "B"]) // Bug 3627 - Completion lists should be filtered in many contexts // This blocks six testcases and is slated for Dev11, so these will be disabled for some time. [] [] member this.AfterTypeParameter() = let fileContents = """ type Type1 = Tag of string(*MarkerDUTypeParam*) let f x:int -> string(*MarkerParamFunction*) let Type2<'a(*MarkerGenericParam*)> = 1 let type1 = typeof """ let (solution, project, file) = this.CreateSingleFileProject(fileContents) //Completion list Not comes up after DUType parameter let completions = DotCompletionAtStartOfMarker file "(*MarkerDUTypeParam*)" AssertCompListIsEmpty(completions) //Completion list Not comes up after function parameter let completions = DotCompletionAtStartOfMarker file "(*MarkerParamFunction*)" AssertCompListIsEmpty(completions) //Completion list Not comes up after generic parameter let completions = DotCompletionAtStartOfMarker file "(*MarkerGenericParam*)" AssertCompListIsEmpty(completions) //Completion list Not comes up after parameter in typeof let completions = DotCompletionAtStartOfMarker file "(*MarkerParamTypeof*)" AssertCompListIsEmpty(completions) [] member this.``Identifier.AsClassName.Uninitial``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type f1(*MarkerType*) = val field : int""", marker = "(*MarkerType*)") [] member this.``Identifier.AsFunctionName.UnInitial``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """let f2(*MarkerFunctionIndentifier*) x = x+1 """, marker = "(*MarkerFunctionIndentifier*)") [] member this.``Identifier.AsParameter.UnInitial``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ let f3 x(*MarkerParam*) = x+1""", marker = "(*MarkerParam*)") [] member this.``Identifier.AsFunctionName.UsingfunKeyword``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """fun f4(*MarkerFunctionDeclaration*) x -> x+1""", marker = "(*MarkerFunctionDeclaration*)") [] member public this.``Identifier.EqualityConstraint.Bug65730``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """let g3<'a when 'a : equality> (x:'a) = x(*Marker*)""", marker = "(*Marker*)", list = ["Equals"; "GetHashCode"]) // equality constraint should make these show up [] [] member this.``Identifier.InFunctionMatch``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ let f5 = function | 1(*MarkerFunctionMatch*) -> printfn "1" | 2 -> printfn "2" """, marker = "(*MarkerFunctionMatch*)") [] member this.``Identifier.This``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type Type1 = member this(*MarkerMemberThis*).Foo () = 3""", marker = "(*MarkerMemberThis*)") [] member this.``Identifier.AsProperty``() = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type Type2 = member this.Foo(*MarkerMemberThisProperty*) = 1""", marker = "(*MarkerMemberThisProperty*)") [] member this.``ExpressionPropertyAssignment.Bug217051``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type Foo() = member val Prop = 0 with get, set Foo()(*Marker*) <- 4 """, marker = "(*Marker*)", list = ["Prop"]) [] member this.``ExpressionProperty.Bug234687``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ open System.Reflection let x = obj() let a = x.GetType().Assembly(*Marker*) """, marker = "(*Marker*)", list = ["CodeBase"]) // expect instance properties of Assembly, not static Assembly methods [] [] member this.NotShowAttribute() = let fileContents = """ open System [] type testclass() = member x.Name() = "test" [] type testattribute() = member x.Empty = 0 """ let (solution, project, file) = this.CreateSingleFileProject(fileContents) //Completion List----where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mattribute1*)" AssertCompListIsEmpty(completions) //Completion List----type where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mattribute2*)" AssertCompListIsEmpty(completions) [] [] member this.NotShowPInvokeSignature() = let fileContents = """ //open System //open IO = System(*Mcomment*) #if RELEASE System.Console(*Mdisablecode*) #endif let x = "System.Console(*Minstring*)" """ let (solution, project, file) = this.CreateSingleFileProject(fileContents) // description="Completion List----where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mreturntype*)" AssertCompListIsEmpty(completions) // description="Completion List----type where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mfunctionname*)" AssertCompListIsEmpty(completions) // description="Completion List----type where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mparametertype*)" AssertCompListIsEmpty(completions) // description="Completion List----type where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mparameter*)" AssertCompListIsEmpty(completions) // description="Completion List----type where completion list does not come up let completions = DotCompletionAtStartOfMarker file "(*Mparameterlist*)" AssertCompListIsEmpty(completions) (*This test verifies the token after a intenllisense dot is inside the completion list for the Cambridge test suites. When you run the test, please make sure: - Use the retail build for better performance - takes about 40 minutes to run test *) [] [] member this.ExploratoryTestDot() = let triggerChar = '.' let folderLocation = @"D:\VSPro_FSharp\src\qa\md\src\fsh\src\tests\fsharp\core" //let folderLocation = @"d:\VSPro_FSharp\src\fsharp\devdiv\src\tests\fsharp\core" let termChars = [| ' ' '(' ')' '[' ']' '.' '<' '>' ';' ',' '{' '}' '-' '+' '=' ''' '"' ':'|] let blackList = [|"//"; "member"; "override"; "[<"; "default"; "self."; "this."; "get_" "CSharp" "Matrix" "x." "LanguagePrimitives."|] let fshFileExtension = [|".fs";".fsx"|] let expressionchar = [|')';']'|] let references = ["System" "System.Core" "System.Numerics" "mscorlib" "System.Windows.Forms" "System.Xml" "System.Xml.Linq" "System.Security" "System.Configuration" "FSharp.Core"] // create a blackList of the files let ignoredFiles = [| @"D:\VSPro_FSharp\src\qa\md\src\fsh\src\tests\fsharp\core\queriesOverIQueryableLinqToSql\test.fsx" |] // get all fsharp files under the folderlocation let files = System.IO.Directory.GetFiles(folderLocation,"*.*",System.IO.SearchOption.AllDirectories) |> Array.filter( fun x -> fshFileExtension |> Array.exists( fun y -> x.EndsWith(y))) |> Array.filter( fun z -> ignoredFiles |> Array.exists( fun y -> z.ToLower() <> y.ToLower())) |> Array.sort let mutable errorCount = 0 let mutable totalCount = 0 for fileLocation in files do printfn "<---------------------------------------------------------------------------------------------------->" printfn "%s" fileLocation try let fileContents = System.IO.File.ReadAllText(fileLocation) // create a project with a fsh file let (solution, project, file) = if fileLocation.EndsWith(".fs") then let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = references) (solution, project, file) else let (solution, project, file) = this.CreateSingleFileProject(fileContents, fileKind = SourceFileKind.FSX) (solution, project, file) // try to figure out where all the dots are let fileContent = GetAllLines file let count = fileContent |> Seq.length for row in 0 .. count - 1 do let line = fileContent.Item(row) // check if the line is blacklisted let isBlackListed = blackList |> Array.exists (fun x -> line.Trim().Contains(x)) // check if the line contains error let hasWarnnings = GetErrors(project) |> Seq.exists (fun x -> x.Context.iEndLine = row) // get all the dot positions on the line let cols = line.ToCharArray() |> Array.mapi (fun i k -> if k = triggerChar then Some(i) else None) |> Array.filter Option.isSome |> Array.map (fun x -> x.Value) // Verify completion contains the item after the dot let verifyCompletionAtDot (col : int) = try // check if variable is an identifier MoveCursorTo(file,row + 1, col) let tokenType = GetTokenTypeAtCursor(file) let isIdentifier = (tokenType = TokenType.Identifier) // check if variable is an expression let charBeforeDot = line.Chars(col - 1) let isExpression = (expressionchar |> Seq.exists(fun x -> x = charBeforeDot)) && (tokenType <> TokenType.Comment || tokenType <> TokenType.Text) // compute the marker length after the dot let nextSpace = line.IndexOfAny(termChars, col+1) let tokenLength = nextSpace - col - 1 let isValidToken = (tokenLength > 0) // on a valid position if isValidToken && (isIdentifier || isExpression) then // compute marker let marker = line.Substring(col + 1, tokenLength ) // get completion MoveCursorTo(file,row+1, col+2) let completions = AutoCompleteAtCursor(file) // log if the marker is not in the completion let found = completions |> Array.filter(fun (name,_,_,_) -> name = marker ) |> Array.length if found = 0 then printfn " ------------------------------------AtDot" printfn " line = %s" line printfn " marker = %s" marker printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " compList#= %d" completions.Length (1, 1) else (0, 1) else (0, 0) with e -> printfn " ------------------------------------AtDot" printfn " line = %s" line printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " an exception occurred: %s" (e.ToString()) (1, 1) let results = if (not isBlackListed) && (not hasWarnnings) then cols|> Seq.map verifyCompletionAtDot |> Seq.toArray else [|(0,0)|] errorCount <- (results |> Seq.sumBy fst) + errorCount totalCount <- (results |> Seq.sumBy snd) + totalCount System.Console.Out.Flush() //CloseSolution(solution) printfn " ----------------------------------------" printfn "Errors\Total = %A \ %A" errorCount totalCount with e -> printfn " an exception occurred while trying to process the current file: %s" (e.ToString()) let errorPercentage = float errorCount / float totalCount * 100.0 printfn "<====================================================================================================>" printfn "Error Percentage =%A" errorPercentage printfn "Errors\Total = %A \ %A" errorCount totalCount if errorPercentage > 5.85 then Assert.Fail("the error percentage has exceeded 5.85%") [] [] member this.ExploratoryTest() = let triggerChar = '.' let folderLocation = @"D:\VSPro_FSharp\src\qa\md\src\fsh\src\tests\fsharp\core" //let folderLocation = @"d:\VSPro_FSharp\src\fsharp\devdiv\src\tests\fsharp\core" let termChars = [| ' ' '(' ')' '[' ']' '.' '<' '>' ';' ',' '{' '}' '-' '+' '=' ''' '"' ':'|] let blackList = [|"//";"member"; "override";"[<";"default"|] let fshFileExtension = [|".fs";".fsx"|] let expressionchar = [|')';']'|] let references = ["System" "System.Core" "System.Numerics" "mscorlib" "System.Windows.Forms" "System.Xml" "System.Xml.Linq" "System.Security" "System.Configuration" "FSharp.Core"] // get all fsharp files under the folderlocation let files = System.IO.Directory.GetFiles(folderLocation,"*.*",System.IO.SearchOption.AllDirectories) |> Array.filter( fun x -> fshFileExtension |> Array.exists( fun y -> x.EndsWith(y))) for fileLocation in files do printfn "<---------------------------------------------------------------------------------------------------->" printfn "%s" fileLocation // create a project with a fsh file let fileContents = System.IO.File.ReadAllText(fileLocation) let (solution, project, file) = this.CreateSingleFileProject(fileContents, references = references) // try to figure out where all the dots are let fileContent = GetAllLines file let count = fileContent |> Seq.length for row in 0 .. count - 1 do let line = fileContent.Item(row) // check if the line is blacklisted let isBlackListed = blackList |> Array.exists (fun x -> line.Trim().StartsWith(x)) // check if the line contains error let hasWarnnings = GetErrors(project) |> Seq.exists (fun x -> x.Context.iEndLine = row) // get all the dot positions on the line let cols = line.ToCharArray() |> Array.mapi (fun i k -> if k = triggerChar then Some(i) else None) |> Array.filter Option.isSome |> Array.map (fun x -> x.Value) // Verify completion contains the marker after the dot let verifyCompletionAtDot (col : int) = // check if variable is an identifier MoveCursorTo(file,row + 1, col) let tokenType = GetTokenTypeAtCursor(file) let isIdentifier = (tokenType = TokenType.Identifier) // check if variable is an expression let charBeforeDot = line.Chars(col - 1) let isExpression = (expressionchar |> Seq.exists(fun x -> x = charBeforeDot)) && (tokenType <> TokenType.Comment || tokenType <> TokenType.Text) // compute the marker length after the dot let nextSpace = line.IndexOfAny(termChars, col+1) let tokenLength = nextSpace - col - 1 let isValidToken = (tokenLength > 0) // on a valid position if (not isBlackListed) && (not hasWarnnings) && isValidToken && (isIdentifier || isExpression) then // compute marker let marker = line.Substring(col + 1, tokenLength ) // get completion MoveCursorTo(file,row+1, col+2) let completions = AutoCompleteAtCursor(file) // log if the marker is not in the completion let found = completions |> Array.filter(fun (name,_,_,_) -> name = marker ) |> Array.length if found = 0 then printfn " ------------------------------------AtDot" printfn " line = %s" line printfn " marker = %s" marker printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " compList#= %d" completions.Length (false, "") else (true, marker) else (false, "") // verify the prefix code follows with a dot shows the correct marker in completion let verifyCompletionPrefixDot (col : int) marker = // recreated the text before the dot let newFileContent = fileContent |> Seq.take(row) |> Seq.toList let newline = line.Substring(0, col+1) // send the new text to the file ReplaceFileInMemoryWithoutCoffeeBreak file (newFileContent @ [ newline ]) // get completion MoveCursorToEndOfMarker(file, newline) let completions = AutoCompleteAtCursor(file) /// log if the marker is not in the completion let found = completions |> Array.filter(fun (name,_,_,_) -> name = marker ) |> Array.length if found = 0 then printfn " ------------------------------------Prefix" printfn " line = %s" newline printfn " marker = %s" marker printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " compList#= %d" completions.Length // set the code file back to the original content ReplaceFileInMemoryWithoutCoffeeBreak file (fileContent) // verify the prefix following with errors shows the correct marker in completion list let verifyCompletionPrefixDotWithError (col : int) marker = // recreated the text before the dot let newFileContent = fileContent |> Seq.take(row) |> Seq.toList let newline = line.Substring(0, col+1) // col+1 includes the '.' // send the new text to the file ReplaceFileInMemoryWithoutCoffeeBreak file (newFileContent @ [ newline ] @ [" "] @ ["let "]) // get completion MoveCursorToEndOfMarker(file, newline) let completions = AutoCompleteAtCursor(file) // log if the marker is not in the completion let found = completions |> Array.filter(fun (name,_,_,_) -> name = marker ) |> Array.length if found = 0 then printfn " ------------------------------------PrefixError" printfn " line = %s" newline printfn " marker = %s" marker printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " compList#= %d" completions.Length // set the code file back to the original ReplaceFileInMemoryWithoutCoffeeBreak file (fileContent) // Verify completion contains the marker after the dot let verifyCompletionAtIdentifier (col : int) = let identifierBlackList = [|"x";"this"|] // compute the identifier length before the dot let lastWhiteSpace = line.Substring(0, col).LastIndexOfAny(termChars, col-1) let tokenLength = col - lastWhiteSpace - 1 let isValidToken = (tokenLength > 0) // check if the marker is valid if isValidToken then // compute marker let marker = line.Substring(col - tokenLength, tokenLength ) // check if the line is blacklisted let isBlackListedIdentifier = identifierBlackList |> Array.exists (fun x -> x = marker) if not isBlackListedIdentifier then // get completion MoveCursorTo(file,row+1, col + 2 - tokenLength) let completions = CtrlSpaceCompleteAtCursor(file) // log if the marker is not in the completion let found = completions |> Array.filter(fun (name,_,_,_) -> name = marker ) |> Array.length if found = 0 then printfn " ------------------------------------AtIdentifier" printfn " line = %s" line printfn " marker = %s" marker printfn " Line# = %d" (row + 1) printfn " column# = %d" (col + 1) printfn " compList#= %d" completions.Length // driver for all the scenarios let verifyCompletion (col : int) = let tuple = verifyCompletionAtDot(col) // if the marker is in the completion, then verify PreFixDot, Identifier and PreFixDot with an error if fst(tuple) then verifyCompletionAtIdentifier (col) verifyCompletionPrefixDot col (snd tuple) verifyCompletionPrefixDotWithError col (snd tuple) Array.iter verifyCompletion cols [] member this.``Basic.Completion.UnfinishedLet``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let g(x) = x+1 let f() = let r = g(4)(*Marker*) """, marker = "(*Marker*)", list = ["CompareTo"]) [] [] member this.``ShortFormSeqExpr.Bug229610``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module test open System.Text.RegularExpressions let limit = 50 let linkPat = "href=\s*\"[^\"h]*(http://[^&\"]*)\"" let getLinks (txt:string) = [ for m in Regex.Matches(txt,linkPat) -> m.Groups.Item(1)(*Marker*) ] """, marker = "(*Marker*)", list = ["Value"]) //Regression test for bug 69159 Fsharp: dot completion is mission for an array [] member this.``Array.InitialUsing..``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """let x1 = [| 0.0 .. 0.1 .. 10.0 |](*Marker*)""", marker = "(*Marker*)", list = ["Length";"Clone";"ToString"]) //Regression test for bug 65740 Fsharp: dot completion is mission after a '#' statement [] member this.``Identifier.In#Statement``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ # 29 "original-test-file.fs" let argv = System.Environment.GetCommandLineArgs() let SetCulture() = if argv(*Marker*)Length > 2 && argv.[1] = "--culture" then let cultureString = argv.[2] """, marker = "(*Marker*)", list = ["Length";"Clone";"ToString"]) //This test is about CompletionList which should be moved to completionList, it's too special to refactor. //Regression test for bug 72595 typing quickly yields wrong intellisense [] member this.``BadCompletionAfterQuicklyTyping``() = let code = [ " " ] let (_, _, file) = this.CreateSingleFileProject(code) TakeCoffeeBreak(this.VS) let gpatcc = GlobalParseAndTypeCheckCounter.StartNew(this.VS) // In this case, we quickly type "." and then get dot-completions // For "level <- Module" this shows completions from the "Module" (e.g. "Module.Other") // This simulates the case when the user quickly types "dot" after the file has been TCed before. ReplaceFileInMemoryWithoutCoffeeBreak file ([ "[1]." ]) MoveCursorToEndOfMarker(file, ".") TakeCoffeeBreak(this.VS) let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, ["Length"]) AssertCompListDoesNotContainAny(completions, ["AbstractClassAttribute"]) gpatcc.AssertExactly(0,0) [] member this.``SelfParameter.InDoKeywordScope``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ type foo() as this = do this(*Marker*)""", marker = "(*Marker*)", list = ["ToString"]) [] member this.``SelfParameter.InDoKeywordScope.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ type foo() as this = do this(*Marker*)""", marker = "(*Marker*)", list = ["Value";"Contents"]) [] member this.``ReOpenNameSpace.StaticProperties``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ // Static properties & events namespace A type TestType = static member Prop = 0 static member Event = (new Event()).Publish namespace B open A open A TestType(*Marker1*)""", marker = "(*Marker1*)", list = ["Prop";"Event"]) [] member this.``ReOpenNameSpace.EnumTypes``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ // F# declared enum types: namespace A module Test = type A = | Foo = 0 namespace B open A open A Test.A(*Marker2*) """, marker = "(*Marker2*)", list = ["Foo"]) [] member this.``ReOpenNameSpace.SystemLibrary``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest open System.IO open System.IO File(*Marker3*) """, marker = "(*Marker3*)", list = ["Open"]) [] member this.``ReOpenNameSpace.FsharpQuotation``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest open Microsoft.FSharp.Quotations open Microsoft.FSharp.Quotations Expr(*Marker4*) """, marker = "(*Marker4*)", list = ["Value"]) [] member this.``ReOpenNameSpace.MailboxProcessor``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest open Microsoft.FSharp.Control open Microsoft.FSharp.Control let counter = MailboxProcessor(*Marker6*)""", marker = "(*Marker6*)", list = ["Start"]) [] member this.``ReopenNamespace.Module``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ namespace A module Test = let foo n = n + 1 namespace B open A open A Test(*Marker7*)""", marker = "(*Marker7*)", list = ["foo"]) [] member this.``Expression.InLetScope``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let p4 = let isPalindrome x = let chars = (string_of_int x).ToCharArray() let len = chars(*Marker1*) chars |> Array.mapi (fun i c -> (i(*Marker2*), c(*Marker3*))""", marker = "(*Marker1*)", list = ["IsFixedSize";"Initialize"]) [] member this.``Expression.InFunScope.FirstParameter``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let p4 = let isPalindrome x = let chars = (string_of_int x).ToCharArray() let len = chars(*Marker1*) chars |> Array.mapi (fun i c -> (i(*Marker2*), c(*Marker3*))""", marker = "(*Marker2*)", list = ["CompareTo"]) [] member this.``Expression.InFunScope.SecParameter``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let p4 = let isPalindrome x = let chars = (string_of_int x).ToCharArray() let len = chars(*Marker1*) chars |> Array.mapi (fun i c -> (i(*Marker2*), c(*Marker3*))""", marker = "(*Marker3*)", list = ["GetType";"ToString"]) [] member this.``Expression.InMatchWhenClause``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest type DU = X of int let timefilter pkt = match pkt with | X(hdr) when hdr(*MarkerMatch*) -> () | _ -> () """, marker = "(*MarkerMatch*)", list = ["CompareTo";"ToString"]) //Regression test for bug 3223 in PS: No intellisense at point [] member this.``Identifier.InActivePattern.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3223 No intellisense at point open Microsoft.FSharp.Quotations.Patterns open Microsoft.FSharp.Quotations.DerivedPatterns let test1 = <@ 1 + 1 @> let _ = match test1 with | Call(None, methInfo, args) -> if methInfo(*Marker*) """, marker = "(*Marker*)", list = ["Attributes";"CallingConvention";"ContainsGenericParameters"]) [] member this.``Identifier.InActivePattern.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3223 No intellisense at point open Microsoft.FSharp.Quotations.Patterns open Microsoft.FSharp.Quotations.DerivedPatterns let test1 = <@ 1 + 1 @> let _ = match test1 with | Call(None, methInfo, args) -> if methInfo(*Marker*) """, marker = "(*Marker*)", list = ["Head";"ToInt"]) //Regression test of bug 2296:No completion lists on the direct results of a method call [] member this.``Regression2296.DirectResultsOfMethodCall``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) """, marker = "(*Marker1*)", list = ["Attributes";"CallingConvention";"IsFamily"]) [] member this.``Regression2296.DirectResultsOfMethodCall.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) """, marker = "(*Marker1*)", list = ["value__"]) [] member this.``Regression2296.Identifier.String.Reflection01``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*)""", marker = "(*Marker2*)", list = ["CompareTo";"GetType";"ToString"]) [] member this.``Regression2296.Identifier.String.Reflection01.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*)""", marker = "(*Marker2*)", list = ["value__"]) [] member this.``Regression2296.Identifier.String.Reflection02``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*) let _ = x.CompareTo("a")(*Marker3*)""", marker = "(*Marker3*)", list = ["CompareTo";"GetType";"ToString"]) [] member this.``Regression2296.Identifier.String.Reflection02.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*) let _ = x.CompareTo("a")(*Marker3*)""", marker = "(*Marker3*)", list = ["value__"]) [] member this.``Regression2296.System.StaticMethod.Reflection``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*) let _ = x.CompareTo("a")(*Marker3*) open System.IO let GetFileSize filePath = File.GetAttributes(filePath)(*Marker4*)""", marker = "(*Marker4*)", list = ["CompareTo";"GetType";"ToString"]) [] member this.``Regression2296.System.StaticMethod.Reflection.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test of bug 2296: No completion lists on the direct results of a method call // This is a function that has a custom attribute on the return type. let foo(a) : [] int = a + 5 // The rest of the code is a mere verification that the compiler thru reflection let executingAssembly = System.Reflection.Assembly.GetExecutingAssembly() let programType = executingAssembly.GetType("Program") let message = programType.GetMethod("foo")(*Marker1*) let x = "" let _ = x.Contains("a")(*Marker2*) let _ = x.CompareTo("a")(*Marker3*) open System.IO let GetFileSize filePath = File.GetAttributes(filePath)(*Marker4*)""", marker = "(*Marker4*)", list = ["value__"]) [] member this.``Seq.NearTheEndOfFile``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest open Microsoft.FSharp.Math let trianglenumbers = Seq.init_infinite (fun i -> let i = BigInt(i) in i * (i+1I) / 2I) (trianglenumbers |> Seq(*MarkerNearTheEnd*))""", marker = "(*MarkerNearTheEnd*)", list = ["cache";"find"]) //Regression test of bug 3879: intellisense glitch for computation expression [] [] member this.``ComputationExpression.WithClosingBrace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3879: intellisense glitch for computation expression // intellisense does not work in computation expression without the closing brace type System.Net.WebRequest with member x.AsyncGetResponse() = Async.BuildPrimitive(x.BeginGetResponse, x.EndGetResponse) member x.GetResponseAsync() = x.AsyncGetResponse() let http(url:string) = async {let req = System.Net.WebRequest.Create("http://www.yahoo.com") let! rsp = req(*Marker*)} """, marker = "(*Marker*)", list = ["AsyncGetResponse";"GetResponseAsync";"ToString"]) [] [] member this.``ComputationExpression.WithoutClosingBrace``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3879: intellisense glitch for computation expression // intellisense does not work in computation expression without the closing brace type System.Net.WebRequest with member x.AsyncGetResponse() = Async.BuildPrimitive(x.BeginGetResponse, x.EndGetResponse) member x.GetResponseAsync() = x.AsyncGetResponse() let http(url:string) = async { let req = System.Net.WebRequest.Create("http://www.yahoo.com") let! rsp = req(*Marker*) """, marker = "(*Marker*)", list = ["AsyncGetResponse";"GetResponseAsync";"ToString"]) //Regression Test of 4405:intelisense has wrong type for identifier, using most recently bound of same name rather than the one in scope? [] member this.``Regression4405.Identifier.ReBinded``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ let f x = let varA = "string" let varA = if x then varA(*MarkerRebound*) else 2 varA""", marker = "(*MarkerRebound*)", list = ["Chars";"StartsWith"]) //Regression test for FSharp1.0:4702 [] member this.``Regression4702.SystemWord``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = "System(*Marker*)", marker = "(*Marker*)", list = ["Console";"Byte";"ArgumentException"]) [] member this.``TypeAbbreviation.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest Microsoft.FSharp.Core(*Marker1*)""", marker = "(*Marker1*)", list = ["int16";"int32";"int64"]) [] member this.``TypeAbbreviation.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest Microsoft.FSharp.Core(*Marker1*)""", marker = "(*Marker1*)", list = ["Int16";"Int32";"Int64"]) //Regression test of bug 3754:tupe forwarder bug? intellisense bug? [] member this.``Regression3754.TypeOfListForward.Positive``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3754 // tupe forwarder bug? intellisense bug? open System.IO open System.Xml open System.Xml.Linq let xmlStr = @" Blah Blah " let xns = XNamespace.op_Implicit "" let a = xns + "a" let reader = new StringReader(xmlStr) let xdoc = XDocument.Load(reader) let aElements = [for x in xdoc.Root.Elements() do if x.Name = a then yield x] let href = xns + "href" aElements |> List(*Marker*)""", marker = "(*Marker*)", list = ["append";"choose";"isEmpty"]) [] member this.``Regression3754.TypeOfListForward.Negative``() = this.VerifyDotCompListDoesNotContainAnyAtStartOfMarker( fileContents = """ module BasicTest // regression test for bug 3754 // tupe forwarder bug? intellisense bug? open System.IO open System.Xml open System.Xml.Linq let xmlStr = @" Blah Blah " let xns = XNamespace.op_Implicit "" let a = xns + "a" let reader = new StringReader(xmlStr) let xdoc = XDocument.Load(reader) let aElements = [for x in xdoc.Root.Elements() do if x.Name = a then yield x] let href = xns + "href" aElements |> List(*Marker*)""", marker = "Marker", list = [""]) [] member this.``NonApplicableExtensionMembersDoNotAppear.Bug40379``() = let code = [ "open System.Xml.Linq" "type MyType() =" " static member Foo(actual:XElement) = actual.Name " " member public this.Bar1() =" " let actual1 : int[] = failwith \"\"" " actual1.(*Marker*)" " member public this.Bar2() =" " let actual2 : XNode[] = failwith \"\"" " actual2.(*Marker*)" " member public this.Bar3() =" " let actual3 : XElement[] = failwith \"\"" " actual3.(*Marker*)" ] let (_, _, file) = this.CreateSingleFileProject(code, references = ["System.Xml"; "System.Xml.Linq"]) MoveCursorToEndOfMarker(file, "actual1.") let completions = AutoCompleteAtCursor file AssertCompListDoesNotContainAny(completions, [ "Ancestors"; "AncestorsAndSelf"]) MoveCursorToEndOfMarker(file, "actual2.") let completions = AutoCompleteAtCursor file AssertCompListContains(completions, "Ancestors") AssertCompListDoesNotContain(completions, "AncestorsAndSelf") MoveCursorToEndOfMarker(file, "actual3.") let completions = AutoCompleteAtCursor file AssertCompListContainsAll(completions, ["Ancestors"; "AncestorsAndSelf"]) [] member this.``Visibility.InternalMethods.DefInSameAssambly``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module CodeAccessibility open System module Module1 = type Type1()= [] val mutable internal fieldInternal:int member internal x.MethodInternal (x:int) = x+2 let type1 = new Type1() type1(*MarkerSameAssemb*)""", marker = "(*MarkerSameAssemb*)", list = ["fieldInternal";"MethodInternal"]) [] member this.``QueryExpression.DotCompletionSmokeTest1``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module Basic let x2 = query { for x in ["1";"2";"3"] do select x(*Marker*)""", marker = "(*Marker*)", list = ["Chars";"Length"], addtlRefAssy=standard40AssemblyRefs) member this.``QueryExpression.DotCompletionSmokeTest2``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for x in ["1";"2";"3"] do select x(*Marker*)""" , marker = "(*Marker*)", list = ["Chars"; "Length"], addtlRefAssy=standard40AssemblyRefs ) [] member this.``QueryExpression.DotCompletionSmokeTest0``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = seq { for x in ["1";"2";"3"] do yield x(*Marker*) }""" , marker = "(*Marker*)", list = ["Chars";"Length"], addtlRefAssy=standard40AssemblyRefs ) [] member this.``QueryExpression.DotCompletionSmokeTest3``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module BasicTest let x = query { for x in ["1";"2";"3"] do select x(*Marker*) }""" , marker = "(*Marker*)", list = ["Chars";"Length"], addtlRefAssy=standard40AssemblyRefs ) [] member this.``QueryExpression.DotCompletionSystematic1``() = for customOperation in ["select";"sortBy";"where"] do let fileContentsList = [""" module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" x(*Marker*)""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" (x(*Marker*)""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" (x(*Marker*) }""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" (x(*Marker*) select x""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" x(*Marker*) select x }""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" (x(*Marker*))""" """ module Simple let x2 = query { for x in ["1";"2";"3"] do """+customOperation+""" (x.Length + x(*Marker*)""" """ module Simple let x2 = query { for x in [1;2;3] do for y in ["1";"2";"3"] do """+customOperation+""" (x + y(*Marker*)""" """ module Simple let x2 = query { for x in [1;2;3] do for y in ["1";"2";"3"] do """+customOperation+""" (x + y(*Marker*))""" """ module Simple let x2 = query { for x in [1;2;3] do for y in ["1";"2";"3"] do where (x > y.Length) """+customOperation+""" (x + y(*Marker*)""" ] for fileContents in fileContentsList do printfn "customOperation = %s, fileContents = <<<%s>>>" customOperation fileContents this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = fileContents, marker = "(*Marker*)", list = ["Chars";"Length"], addtlRefAssy=standard40AssemblyRefs) [] member public this.``QueryExpression.InsideJoin.Bug204147``() = this.VerifyDotCompListContainAllAtStartOfMarker( fileContents = """ module Simple type T() = member x.GetCollection() = [1;2;3;4] let q = query { for e in [1..10] do join b in T()(*Marker*) select b }""", marker = "(*Marker*)", list = ["GetCollection"], addtlRefAssy=queryAssemblyRefs ) (*------------------------------------------IDE Query automation start -------------------------------------------------*) member private this.AssertDotCompletionListInQuery(fileContents: string, marker : string, list : string list) = let datacode = """ namespace DataSource open System open System.Xml.Linq type Product() = let mutable id = 0 let mutable name = "" let mutable category = "" let mutable price = 0M let mutable unitsInStock = 0 member x.ProductID with get() = id and set(v) = id <- v member x.ProductName with get() = name and set(v) = name <- v member x.Category with get() = category and set(v) = category <- v member x.UnitPrice with get() = price and set(v) = price <- v member x.UnitsInStock with get() = unitsInStock and set(v) = unitsInStock <- v module Products = let getProductList() = [ Product(ProductID = 1, ProductName = "Chai", Category = "Beverages", UnitPrice = 18.0000M, UnitsInStock = 39 ); Product(ProductID = 2, ProductName = "Chang", Category = "Beverages", UnitPrice = 19.0000M, UnitsInStock = 17 ); Product(ProductID = 3, ProductName = "Aniseed Syrup", Category = "Condiments", UnitPrice = 10.0000M, UnitsInStock = 13 ); ] """ use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project = CreateProject(solution,"testproject") this.AddAssemblyReference(project, "System.Xml.Linq") let file1 = AddFileFromTextBlob(project,"File1.fs",datacode) //build let file2 = AddFileFromTextBlob(project,"File2.fs",fileContents) let file1 = OpenFile(project,"File1.fs") let file2 = OpenFile(project,"File2.fs") TakeCoffeeBreak(this.VS) let completions = DotCompletionAtStartOfMarker file2 marker AssertCompListContainsAll(completions, list) [] [] [] // Intellisense still appears on arguments when the operator is used in error member public this.``Query.HasErrors.Bug196230``() = this.AssertDotCompletionListInQuery( fileContents = """ open DataSource // defined in another file; see AssertDotCompletionListInQuery let products = Products.getProductList() let sortedProducts = query { for p in products do let x = p.ProductID + "a" sortBy p(*Marker*) select p }""" , marker = "(*Marker*)", list = ["ProductID";"ProductName"] ) [] [] // Intellisense still appears on arguments when the operator is used in error member public this.``Query.HasErrors2``() = this.AssertDotCompletionListInQuery( fileContents = """ open DataSource let products = Products.getProductList() let sortedProducts = query { for p in products do orderBy (p(*Marker*)) }""" , marker = "(*Marker*)", list = ["ProductID";"ProductName"] ) [] [] // Shadowed variables have correct Intellisense member public this.``Query.ShadowedVariables``() = this.AssertDotCompletionListInQuery( fileContents = """ open DataSource let products = Products.getProductList() let p = 12 let sortedProducts = query { for p in products do select p(*Marker*) }""" , marker = "(*Marker*)", list = ["Category";"ProductName"] ) [] [] // Intellisense works correctly in a nested query member public this.``Query.InNestedQuery``() = let fileContents = """ let tuples = [ (1, 8, 9); (56, 45, 3)] let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let foo = query { for n in numbers do let maxNumber = query {for x in tuples do maxBy x(*Marker1*)} select (n, query {for y in numbers do minBy y(*Marker2*)}) } """ this.VerifyDotCompListContainAllAtStartOfMarker(fileContents, "(*Marker1*)", ["Equals";"GetType"], queryAssemblyRefs ) this.VerifyDotCompListContainAllAtStartOfMarker(fileContents, "(*Marker2*)", ["Equals";"CompareTo"], queryAssemblyRefs ) [] [] // Intellisense works correctly in a nested expression within a lamda member public this.``Query.NestedExpressionWithinLamda``() = let fileContents = """ let numbers = [ 1;2; 8; 9; 15; 23; 3; 42; 4;0; 55;] let f (x : string) = () let foo = query { for n in numbers do let x = 42 |> ignore; numbers |> List.iter( fun n -> f ("1" + "1")(*Marker*)) skipWhile (n < 30) } """ this.VerifyDotCompListContainAllAtStartOfMarker(fileContents, "(*Marker*)", ["Chars";"Length"], queryAssemblyRefs ) // Allow the CompletionListTests run under different context namespace UnitTests.Tests.LanguageService.CompletionList open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``AutoCompletionMSBuild`` = inherit AutoCompletionListTests new() = { inherit AutoCompletionListTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``AutoCompletionProjectSystem`` = inherit AutoCompletionListTests new() = { inherit AutoCompletionListTests(VsOpts = LanguageServiceExtension.ProjectSystem); } // context msbuild [] [] type ``DotCompletionMSBuild`` = inherit DotCompletionListTests new() = { inherit DotCompletionListTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``DotCompletionProjectSystem`` = inherit DotCompletionListTests new() = { inherit DotCompletionListTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.LanguageService.TimeStamp.fs0000775000175000017500000004164712260314606024624 0ustar chrischrisnamespace UnitTests.Tests.LanguageService open System open System.IO open NUnit.Framework open Salsa.Salsa open Salsa.VsOpsUtils open UnitTests.TestLib.Salsa open UnitTests.TestLib.Utils open UnitTests.TestLib.LanguageService type TimeStampTests() = inherit LanguageServiceBaseTests() (* Timings ----------------------------------------------------------------------------- *) let stopWatch = new System.Diagnostics.Stopwatch() let ResetStopWatch() = stopWatch.Reset(); stopWatch.Start() let time1 op a message = ResetStopWatch() let result = op a printf "%s %d ms\n" message stopWatch.ElapsedMilliseconds result let ShowErrors(project:OpenProject) = for error in (GetErrors(project)) do printf "%s\n" (error.ToString()) let AssertNoErrorsOrWarnings(project:OpenProject) = let count = List.length (GetErrors(project)) if count<>0 then printf "Saw %d errors and expected none.\n" count AssertEqual(0,count) let AssertNoErrorSeenContaining(project:OpenProject,text) = let matching = (GetErrors(project)) |> List.filter (fun e->e.ToString().Contains(text)) match matching with | [] -> () | _ -> ShowErrors(project) failwith (sprintf "Error seen containing \"%s\"" text) // In this bug, if you clean the dependent project, the dependee started getting errors again about the unresolved assembly. // The desired behavior is like C#, which is if the assembly disappears from disk, we use cached results of last time it was there. [] member public this.``Regression.NoError.Timestamps.Bug3368b``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() // Handy for this test: //Trace.Log <- "ChangeEvents;IncrementalBuildCommandLineMessages;SyncOp;CompilerServices" // Create the projects/ let project1 = CreateProject(solution,"testproject1") let project2 = CreateProject(solution,"testproject2") SetConfigurationAndPlatform(project1, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences SetConfigurationAndPlatform(project2, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences let file1 = AddFileFromText(project1,"File1.fs", ["#light" "let xx = 42" "printfn \"hi\""]) let file2 = AddFileFromText(project2,"File2.fs", ["#light" "let yy = File1.xx" "printfn \"hi\""]) // Add a project-to-project reference. // WARNING: See bug 4434 - when unit testing this actually goes and builds project1!!!! AddProjectReference(project2,project1) TakeCoffeeBreak(this.VS) // Dependencies between projects get registered for file-watching during OnIdle processing AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) // Now build project1 printfn "building dependent project..." Build project1 |> ignore TakeCoffeeBreak(this.VS) // Open files in editor. let file1 = OpenFile(project1,"File1.fs") let file2 = OpenFile(project2,"File2.fs") // Now clean project1 printfn "cleaning dependent project..." BuildTarget(project1, "Clean") |> ignore TakeCoffeeBreak(this.VS) AssertNoErrorsOrWarnings(project1) AssertNoErrorsOrWarnings(project2) // this is key, project2 remembers what used to be on disk, does not fail due to missing assembly // In this bug, the referenced project output didn't exist yet. Building dependee should cause update in dependant [] member public this.``Regression.NoContainedString.Timestamps.Bug3368a``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() // Handy for this test: Trace.Log <- "ChangeEvents;IncrementalBuildCommandLineMessages" // Create the projects/ let project1 = CreateProject(solution,"testproject1") let project2 = CreateProject(solution,"testproject2") SetConfigurationAndPlatform(project1, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences SetConfigurationAndPlatform(project2, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences let file1 = AddFileFromText(project1,"File1.fs", ["#light"]) let file2 = AddFileFromText(project2,"File2.fs", ["#light"]) // Add a project-to-project reference. // WARNING: See bug 4434 - when unit testing this actually goes and builds project1!!!! AddProjectReference(project2,project1) // Open files in editor. let file1 = OpenFile(project1,"File1.fs") let file2 = OpenFile(project2,"File2.fs") // Wait for things to settle down and make sure there is an error TakeCoffeeBreak(this.VS) // This assert no longer holds because project1 has inadvertently been built - see bug 4434 and comment above //AssertExactlyOneErrorSeenContaining(project2, "project1") // Now build project1 Build project1 |> ignore TakeCoffeeBreak(this.VS) AssertNoErrorSeenContaining(project2, "project1") // FEATURE: OnIdle() will reprocess open dirty files, even if those file do not currently have editor focus // [] TODO This test does not work because the unit tests do not cover product code that implements this feature member public this.``Timestamps.Bug3368c``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() // Handy for this test: //Trace.Log <- "ChangeEvents;IncrementalBuildCommandLineMessages;SyncOp;CompilerServices" // Create the projects/ let project1 = CreateProject(solution,"testproject1") let project2 = CreateProject(solution,"testproject2") let file1 = AddFileFromText(project1,"File1.fs", ["#light" "let xx = 42" "printfn \"hi\""]) let file2 = AddFileFromText(project2,"File2.fs", ["#light" "let yy = File1.xx" "printfn \"hi\""]) // Add an assembly reference between the projects (a P2P would fall victim to 4434) let p1exe = BuildTarget(project1, "Clean") // just a handy way to get the filename of the exe that would be built this.AddAssemblyReference(project2, p1exe.ExecutableOutput) // open a file to see the errors let file2 = OpenFile(project2,"File2.fs") TakeCoffeeBreak(this.VS) let errs = GetErrors(project2) Assert.IsTrue(List.length errs > 0, "There should be errors (unresolved reference)") // switch focus to a different file (to turn off 'focus' idle processing for file2) let file1 = OpenFile(project1,"File1.fs") // Now build project1 printfn "building dependent project..." Build project1 |> ignore let errs = GetErrors(project2) Assert.IsTrue(List.length errs > 0, "There should be errors (unresolved reference)") TakeCoffeeBreak(this.VS) // the code that should clear out the errors is in LanguageService.cs:LanguageService.OnIdle(), // but unit tests do not call this FSharp.LanguageService.Base code; TakeCoffeeBreak(this.VS) just simulates // idle processing for the currently-focused file printfn "after idling, file2 errors should be cleared even though file2 is not focused" AssertNoErrorsOrWarnings(project2) // FEATURE: When a referenced assembly's timestamp changes the reference is reread. [] member public this.``Timestamps.ReferenceAssemblyChangeAbsolute``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution,"testproject1") let file1 = AddFileFromText(project1,"File1.fs", ["#light"] ) let file1 = OpenFile(project1,"File1.fs") let project2 = CreateProject(solution,"testproject2") let file2 = AddFileFromText(project2,"File2.fs", ["#light" "File1.File1." "()"]) let file2 = OpenFile(project2,"File2.fs") // Build project1 which will later have the type being referenced by project2 let project1Dll = time1 Build project1 "Time to build project1" printfn "Output of building project1 was %s" project1Dll.ExecutableOutput printfn "Project2 directory is %s" (ProjectDirectory project2) // Add a new reference project2->project1. There should be no completions because Mary doesn't exist yet. this.AddAssemblyReference(project2,project1Dll.ExecutableOutput) TakeCoffeeBreak(this.VS) // Dependencies between projects get registered for file-watching during OnIdle processing MoveCursorToEndOfMarker(file2,"File1.File1.") let completions = AutoCompleteAtCursor(file2) Assert.AreEqual(0, completions.Length) // Now modify project1's file and rebuild. ReplaceFileInMemory file1 ["#light" "module File1 = " " let Mary x = \"\""] SaveFileToDisk file1 time1 Build project1 "Time to build project1 second time" |> ignore TakeCoffeeBreak(this.VS) // Give enough time to catch up MoveCursorToEndOfMarker(file2,"File1.File1.") TakeCoffeeBreak(this.VS) // Give enough time to catch up let completions = AutoCompleteAtCursor(file2) Assert.AreNotEqual(0, completions.Length) printfn "Completions=%A\n" completions // In this bug, relative paths to referenced assemblies weren't seen. [] member public this.``Timestamps.ReferenceAssemblyChangeRelative``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution,"testproject1") let MakeRelativePath(path1:string, path2) = // Pretend to return a path to path1 relative to path2. let temp = (System.IO.Path.GetTempPath()) let tempLen = temp.Length ".."+(path1.Substring(tempLen-1)) let file1 = AddFileFromText(project1,"File1.fs", ["#light"] ) let file1 = OpenFile(project1,"File1.fs") let project2 = CreateProject(solution,"testproject2") let file2 = AddFileFromText(project2,"File2.fs", ["#light" "File1.File1." "()"]) let file2 = OpenFile(project2,"File2.fs") // Build project1 which will later have the type being referenced by project2 let project1Dll = time1 Build project1 "Time to build project1" printfn "Output of building project1 was %s" project1Dll.ExecutableOutput printfn "Project2 directory is %s" (ProjectDirectory project2) let project1DllRelative = MakeRelativePath(project1Dll.ExecutableOutput, (ProjectDirectory project2)) printfn "Relative output of building project1 was %s" project1DllRelative // Add a new reference project2->project1. There should be no completions because Mary doesn't exist yet. this.AddAssemblyReference(project2,project1DllRelative) TakeCoffeeBreak(this.VS) // Dependencies between projects get registered for file-watching during OnIdle processing MoveCursorToEndOfMarker(file2,"File1.File1.") let completions = AutoCompleteAtCursor(file2) Assert.AreEqual(0, completions.Length) // Now modify project1's file and rebuild. ReplaceFileInMemory file1 ["#light" "module File1 = " " let Mary x = \"\""] SaveFileToDisk file1 time1 Build project1 "Time to build project1 second time" |> ignore TakeCoffeeBreak(this.VS) // Give enough time to catch up MoveCursorToEndOfMarker(file2,"File1.File1.") TakeCoffeeBreak(this.VS) // Give enough time to catch up let completions = AutoCompleteAtCursor(file2) Assert.AreNotEqual(0, completions.Length) printfn "Completions=%A\n" completions // FEATURE: When a referenced project's assembly timestamp changes the reference is reread. [] [] member public this.``Timestamps.ProjectReferenceAssemblyChange``() = use _guard = this.UsingNewVS() let solution = this.CreateSolution() let project1 = CreateProject(solution,"testproject1") let file1 = AddFileFromText(project1,"File1.fs", ["#light"] ) let file1 = OpenFile(project1,"File1.fs") let project2 = CreateProject(solution,"testproject2") let file2 = AddFileFromText(project2,"File2.fs", ["#light" "File1.File1." "()"]) let file2 = OpenFile(project2,"File2.fs") SetConfigurationAndPlatform(project1, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences SetConfigurationAndPlatform(project2, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences // Build project1 which will later have the type being referenced by project2 let project1Dll = time1 Build project1 "Time to build project1" printf "Output of building project1 was %s\n" project1Dll.ExecutableOutput // Add a new reference project2->project1. There should be no completions because Mary doesn't exist yet. // // WARNING: See bug 4434 - when unit testing this actually goes and builds project1!!!! AddProjectReference(project2,project1) TakeCoffeeBreak(this.VS) // Dependencies between projects get registered for file-watching during OnIdle processing SetConfigurationAndPlatform(project1, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences SetConfigurationAndPlatform(project2, "Debug|AnyCPU") // maybe due to msbuild bug on dev10, we must set config/platform when building with ProjectReferences MoveCursorToEndOfMarker(file2,"File1.File1.") let completions = AutoCompleteAtCursor(file2) Assert.AreEqual(0, completions.Length) // Now modify project1's file and rebuild. ReplaceFileInMemory file1 ["#light" "module File1 = " " let Mary x = \"\""] SaveFileToDisk file1 time1 Build project1 "Time to build project1 second time" |> ignore TakeCoffeeBreak(this.VS) // Give enough time to catch up MoveCursorToEndOfMarker(file2,"File1.File1.") TakeCoffeeBreak(this.VS) // Give enough time to catch up let completions = AutoCompleteAtCursor(file2) Assert.AreNotEqual(0, completions.Length) printfn "Completions=%A\n" completions //Allow the TimeStampTests run under different context namespace UnitTests.Tests.LanguageService.TimeStamp open UnitTests.Tests.LanguageService open UnitTests.TestLib.LanguageService open UnitTests.TestLib.ProjectSystem open NUnit.Framework open Salsa.Salsa // context msbuild [] [] type ``MSBuild`` = inherit TimeStampTests new() = { inherit TimeStampTests(VsOpts = fst (Models.MSBuild())); } // Context project system [] [] type ``ProjectSystem`` = inherit TimeStampTests new() = { inherit TimeStampTests(VsOpts = LanguageServiceExtension.ProjectSystem); } fsharp-3.0.34/src/fsharp/unittests/Tests.TaskReporter.fs0000775000175000017500000004217412260314606022277 0ustar chrischrisnamespace UnitTests.Tests open NUnit.Framework open System open System.IO open System.Diagnostics open Microsoft.FSharp.Build open Microsoft.Build.BuildEngine open Microsoft.Build.Framework open Microsoft.Build.Utilities open UnitTests.TestLib.Utils open UnitTests.TestLib.Utils.FilesystemHelpers open Microsoft.VisualStudio.Shell open Salsa.Salsa open Salsa.VsMocks type TextSpan = Microsoft.VisualStudio.TextManager.Interop.TextSpan type DocumentTask = Microsoft.VisualStudio.FSharp.LanguageService.DocumentTask [] type TaskReporter() = static let err(line) : 'a = printfn "err() called on line %s with %s" line System.Environment.StackTrace failwith "not implemented" let mockOleComponentManager = { new Microsoft.VisualStudio.OLE.Interop.IOleComponentManager with member x.FContinueIdle() = 1 member x.FCreateSubComponentManager(piunkOuter, piunkServProv, riid, ppvObj) = err(__LINE__) member x.FGetActiveComponent(dwgac, ppic, pcrinfo, dwReserved) = err(__LINE__) member x.FGetParentComponentManager(ppicm) = err(__LINE__) member x.FInState(uStateID, pvoid) = err(__LINE__) member x.FOnComponentActivate(dwComponentID) = err(__LINE__) member x.FOnComponentExitState(dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude) = err(__LINE__) member x.FPushMessageLoop(dwComponentID, uReason, pvLoopData) = err(__LINE__) member x.FRegisterComponent(piComponent, pcrinfo, pdwComponentID) = err(__LINE__) member x.FReserved1(dwReserved, message, wParam, lParam) = err(__LINE__) member x.FRevokeComponent(dwComponentID) = err(__LINE__) member x.FSetTrackingComponent(dwComponentID, fTrack) = err(__LINE__) member x.FUpdateComponentRegistration(dwComponentID, pcrinfo) = err(__LINE__) member x.OnComponentEnterState(dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude, dwReserved) = err(__LINE__) member x.QueryService(guidService, iid, ppvObj) = err(__LINE__) } (* Asserts ----------------------------------------------------------------------------- *) let AssertEqual expected actual = if expected<>actual then let message = sprintf "Expected\n%A\nbut got\n%A" expected actual printfn "%s" message Assert.Fail(message) let AssertNotEqual expected actual = if expected = actual then let message = sprintf "Did not want\n%A\nbut got it anyway" expected printfn "%s" message Assert.Fail(message) let GetNewDocumentTask filePath subcategory span errorMessage taskPriority taskCategory taskErrorCategory = let dt = new Microsoft.VisualStudio.FSharp.LanguageService.DocumentTask(null, Salsa.VsMocks.Vs.MakeTextLines(), Microsoft.VisualStudio.TextManager.Interop.MARKERTYPE.MARKER_CODESENSE_ERROR, span, filePath, subcategory) dt.Text <- errorMessage ; dt.Priority <- taskPriority ; dt.Category <- taskCategory ; dt.ErrorCategory <- taskErrorCategory ; dt let CreateTaskListProvider() = let tasks : Task array ref = ref [||] { new Microsoft.VisualStudio.FSharp.LanguageService.ITaskListProvider with member tl.Count() = (!tasks).Length member tl.GetTask i = (!tasks).[i] member tl.Add t = tasks := Array.append !tasks [| t |] member tl.SuspendRefresh() = () member tl.ResumeRefresh() = () member tl.Clear() = tasks := [||] member tl.Refresh() = () } let CreateTaskReporter() = UIStuff.SetupSynchronizationContext() let taskReporter = new Microsoft.VisualStudio.FSharp.LanguageService.TaskReporter("unit test (taskreporter.unittests.fs)") taskReporter.TaskListProvider <- CreateTaskListProvider() ; taskReporter // One File Tests // For the next two, add tasks to the task list more than once to ensure that // hashing is occuring correctly [] member public this.``ErrorList.LanguageServiceErrorsProperlyCoalesced``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add a language service error taskReporter.AddTask(documentTask) |> ignore // add the error to the language service again taskReporter.AddTask(documentTask) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 1 () [] member public this.``ErrorList.ProjectSystemErrorsProperlyCoalesced``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add a project system error taskReporter.AddTask(documentTask) |> ignore // add the error to the project system again taskReporter.AddTask(documentTask) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 1 () /// Test for multiple identical errors being properly coalesced in the error list (bug 2151) [] member public this.``ErrorList.ErrorsProperlyCoalesced``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add a language service error taskReporter.AddTask(documentTask) |> ignore // add a project system error taskReporter.AddTask(documentTask) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 1 () // modify the span, and check to see if we have two tasks now instead of one [] member public this.``ErrorList.ProjectSystemErrorsProperlyCoalesced2``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask1 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error span.iStartLine <- 2; span.iEndLine <- 2; let documentTask2 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add the errors taskReporter.AddTask(documentTask1) |> ignore taskReporter.AddTask(documentTask2) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 2 () /// Ensure that text line markers are only created when a task is output to the the task list [] member public this.``ErrorList.TextLineMarkersCreatedOnce``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask2 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // ensure that the tasks don't have a text line marker yet AssertEqual documentTask.TextLineMarker null AssertEqual documentTask2.TextLineMarker null // add a language service error taskReporter.AddTask(documentTask) |> ignore // add a project system error taskReporter.AddTask(documentTask2) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 1 // ensure that the task now has a text line marker AssertNotEqual documentTask.TextLineMarker null // now, make sure that the rejected task does not have a text line marker AssertEqual documentTask2.TextLineMarker null () // Two file tests // both files open // errors in each file, build - no duplicates [] member public this.``ErrorList.TwoFilesBothOpen``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask1 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask2 = GetNewDocumentTask @"c:\bar.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add the errors taskReporter.AddTask(documentTask1) |> ignore taskReporter.AddTask(documentTask2) |> ignore taskReporter.OutputTaskList() // ensure that we now have two distinct tasks in the task list taskReporter.DoIdle(mockOleComponentManager) |> ignore AssertEqual (taskReporter.TaskListProvider.Count()) 2 // are the tasks ordered correctly? let task1 = taskReporter.TaskListProvider.GetTask(0) :?> DocumentTask let task2 = taskReporter.TaskListProvider.GetTask(1) :?> DocumentTask AssertEqual documentTask1 task2 // reordered based on filename AssertEqual documentTask2 task1 () // file open, one file closed // - error in closed file [] member public this.``ErrorList.TwoFilesOneOpenErrorInOpen``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask1 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask2 = GetNewDocumentTask @"c:\bar.fs" "typecheck" span "bar error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask3 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add the background task ("foo.fs" is opened) taskReporter.AddTask(documentTask1) |> ignore // now simulate a build - add task 2, and task 3 (which is the same as task 1) taskReporter.AddTask(documentTask2) |> ignore taskReporter.AddTask(documentTask3) |> ignore // get "all" tasks - if working correctly - the three tasks will have been coalesced into two (tasks 1 and 3 will be the same) taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore // ensure that we now have two distinct tasks in the task list AssertEqual (taskReporter.TaskListProvider.Count()) 2 // are the tasks ordered correctly? let task1 = taskReporter.TaskListProvider.GetTask(0) :?> DocumentTask let task2 = taskReporter.TaskListProvider.GetTask(1) :?> DocumentTask AssertEqual documentTask3 task2 // reordered based on filename AssertEqual documentTask2 task1 () // all files open - build, then fix - no errors left [] member public this.``ErrorList.TwoFilesCorrectError``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let documentTask1 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask2 = GetNewDocumentTask @"c:\bar.fs" "typecheck" span "bar error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask3 = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error let documentTask4 = GetNewDocumentTask @"c:\bar.fs" "typecheck" span "bar error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error // add the background tasks ("foo.fs" and "bar".fs are opened) taskReporter.AddTask(documentTask1) |> ignore taskReporter.AddTask(documentTask2) |> ignore // now simulate a build - add task 3, and task 4 (which are the same as tasks 1 and 2) taskReporter.AddTask(documentTask3) |> ignore taskReporter.AddTask(documentTask4) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore // after the "build", we shouldn't have any build tasks, since they already belong to the LS let backgroundTasks = taskReporter.GetBackgroundTasks(); let buildTasks = taskReporter.GetBuildTasks(); // ensure that we now have two distinct tasks in the task list AssertEqual (taskReporter.TaskListProvider.Count()) 2 AssertEqual (backgroundTasks.GetLength(0)) 2 AssertEqual (buildTasks.GetLength(0)) 0 // are the tasks ordered correctly? let task1 = taskReporter.TaskListProvider.GetTask(0) :?> DocumentTask let task2 = taskReporter.TaskListProvider.GetTask(1) :?> DocumentTask AssertEqual documentTask1 task2 // reordered based on filename AssertEqual documentTask2 task1 // simulate a fix by clearing out the c:\foo.fs errors taskReporter.ClearBackgroundTasksForFile(@"c:\foo.fs") taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore let task1 = taskReporter.TaskListProvider.GetTask(0) :?> DocumentTask AssertEqual (taskReporter.TaskListProvider.Count()) 1 AssertEqual task1 documentTask2 () // Make sure a 'typecheck' is treated as a background task [] member public this.``ErrorList.BackgroundTaskIsClassified``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let dt = GetNewDocumentTask @"c:\foo.fs" "typecheck" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error taskReporter.AddTask(dt) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore let backgroundTasks = taskReporter.GetBackgroundTasks(); let buildTasks = taskReporter.GetBuildTasks(); // There should be one error in the list. AssertEqual (taskReporter.TaskListProvider.Count()) 1 // It should be a background task. AssertEqual (backgroundTasks.GetLength(0)) 1 // There should be no build tasks. AssertEqual (buildTasks.GetLength(0)) 0 () // Make sure a 'ilxgen' is treated as a build task [] member public this.``ErrorList.BuildTaskIsClassified``() = use taskReporter = CreateTaskReporter() let mutable span = new TextSpan(iStartLine = 1, iEndLine = 1, iStartIndex = 1, iEndIndex = 2) let dt = GetNewDocumentTask @"c:\foo.fs" "ilxgen" span "foo error!" TaskPriority.High TaskCategory.BuildCompile TaskErrorCategory.Error taskReporter.AddTask(dt) |> ignore taskReporter.OutputTaskList() taskReporter.DoIdle(mockOleComponentManager) |> ignore let backgroundTasks = taskReporter.GetBackgroundTasks(); let buildTasks = taskReporter.GetBuildTasks(); // There should be one error in the list. AssertEqual (taskReporter.TaskListProvider.Count()) 1 // It should be a build task. AssertEqual (buildTasks.GetLength(0)) 1 // There should be no background tasks. AssertEqual (backgroundTasks.GetLength(0)) 0 () fsharp-3.0.34/src/fsharp/augment.fsi0000775000175000017500000000422312260314606016311 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Generate the hash/compare functions we add to user-defined types by default. module internal Microsoft.FSharp.Compiler.Augment open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Env val CheckAugmentationAttribs : bool -> TcGlobals -> Import.ImportMap -> Tycon -> unit val TyconIsCandidateForAugmentationWithCompare : TcGlobals -> Tycon -> bool val TyconIsCandidateForAugmentationWithEquals : TcGlobals -> Tycon -> bool val TyconIsCandidateForAugmentationWithHash : TcGlobals -> Tycon -> bool val MakeValsForCompareAugmentation : TcGlobals -> TyconRef -> Val * Val val MakeValsForCompareWithComparerAugmentation : TcGlobals -> TyconRef -> Val val MakeValsForEqualsAugmentation : TcGlobals -> TyconRef -> Val * Val val MakeValsForEqualityWithComparerAugmentation : TcGlobals -> TyconRef -> Val * Val * Val val MakeBindingsForCompareAugmentation : TcGlobals -> Tycon -> Binding list val MakeBindingsForCompareWithComparerAugmentation : TcGlobals -> Tycon -> Binding list val MakeBindingsForEqualsAugmentation : TcGlobals -> Tycon -> Binding list val MakeBindingsForEqualityWithComparerAugmentation : TcGlobals -> Tycon -> Binding list /// This predicate can be used once type inference is complete, before then it is an approximation /// that doesn't assert any new constraints val TypeDefinitelyHasEquality : TcGlobals -> TType -> bool fsharp-3.0.34/src/fsharp/est.fsi0000775000175000017500000004372412260314606015455 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Extension typing, validation of extension types, etc. namespace Microsoft.FSharp.Compiler #if EXTENSIONTYPING module internal ExtensionTyping = open System open System.IO open System.Collections.Generic open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Range #if TYPE_PROVIDER_SECURITY // These global variables are used by the VS language service for the type provider security dialog module internal GlobalsTheLanguageServiceCanPoke = //+++ GLOBAL STATE val mutable displayLSTypeProviderSecurityDialogBlockingUI : (string->unit) option val mutable theMostRecentFileNameWeChecked : string option module internal ApprovalIO = val partiallyCanonicalizeFileName : string -> string /// location of approvals data file, e.g. C:\Users\username\AppData\Local\Microsoft\VisualStudio\11.0\type-providers.txt val ApprovalsAbsoluteFileName : string [] type TypeProviderApprovalStatus = /// NotTrusted(absoluteFileName) | NotTrusted of string /// Trusted(absoluteFileName) | Trusted of string /// do a transaction of operations over approvals file under exclusive lock. may throw if trouble with file IO. val doWithApprovalsFile : FileStream option -> (FileStream -> 'a) -> 'a /// read all TP approval data. does not throw, will swallow exceptions and return empty list if there's trouble. val readApprovalsFile : FileStream option -> TypeProviderApprovalStatus list /// replace one piece of TP approval info (or append it, if this is a new filename). may throw if trouble with file IO. val replaceApprovalStatus : FileStream option -> TypeProviderApprovalStatus -> unit #endif type TypeProviderDesignation = TypeProviderDesignation of string /// Raised when a type provider has thrown an exception. exception ProvidedTypeResolution of range * exn /// Raised when an type provider has thrown an exception. exception ProvidedTypeResolutionNoRange of exn /// Carries information about the current extension type resolution environment. type ResolutionEnvironment = { /// The folder from which an extension provider is resolving from. This is typically the project folder. resolutionFolder : string /// Output file name outputFile : string option /// Whether or not the --showextensionresolution flag was supplied to the compiler. showResolutionMessages : bool /// All referenced assemblies, including the type provider itself, and possibly other type providers. referencedAssemblies : string[] /// The folder for temporary files temporaryFolder : string } /// Return the set of extension type resolvers for the given assembly. val GetTypeProvidersOfAssembly : displayPSTypeProviderSecurityDialogBlockingUI : (string->unit) option * validateTypeProviders: bool #if TYPE_PROVIDER_SECURITY * ApprovalIO.TypeProviderApprovalStatus list ref #endif * runtimeAssemblyFilename: string * ilScopeRefOfRuntimeAssembly:ILScopeRef * designerAssemblyName: string * ResolutionEnvironment * bool * isInteractive: bool * systemRuntimeContainsType : (string -> bool) * systemRuntimeAssemblyVersion : System.Version * range -> bool * Tainted list /// Given an extension type resolver, supply a human-readable name suitable for error messages. val DisplayNameOfTypeProvider : Tainted * range -> string val providedSystemTypeComparer : IEqualityComparer /// The context used to interpret information in the closure of System.Type, System.MethodInfo and other /// info objects coming from the type provider. /// /// At the moment this is the "Type --> ILTypeRef" and "Type --> Tycon" remapping /// context for generated types (it is empty for erased types). This is computed from /// while processing the [] declaration related to the type. /// /// Immutable (after type generation for a [] declaration populates the dictionaries). /// /// The 'obj' values are all TyconRef, but obj is used due to a forward reference being required. Not particularly /// pleasant, but better than intertwining the whole "ProvidedType" with the TAST structure. type ProvidedTypeContext = | NoEntries | Entries of Dictionary * Lazy> member TryGetILTypeRef : System.Type -> ILTypeRef option member TryGetTyconRef : System.Type -> obj option static member Empty : ProvidedTypeContext static member Create : Dictionary * Dictionary -> ProvidedTypeContext /// Map the TyconRef objects, if any member RemapTyconRefs : (obj -> obj) -> ProvidedTypeContext #if FX_NO_CUSTOMATTRIBUTEDATA type CustomAttributeData = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeData type CustomAttributeNamedArgument = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeNamedArgument type CustomAttributeTypedArgument = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeTypedArgument #endif type [] ProvidedType = inherit ProvidedMemberInfo member IsSuppressRelocate : bool member IsErased : bool member IsGenericType : bool member Namespace : string member FullName : string member IsArray : bool member GetInterfaces : unit -> ProvidedType[] member Assembly : ProvidedAssembly member BaseType : ProvidedType member GetNestedType : string -> ProvidedType member GetNestedTypes : unit -> ProvidedType[] member GetAllNestedTypes : unit -> ProvidedType[] member GetMethods : unit -> ProvidedMethodInfo[] member GetFields : unit -> ProvidedFieldInfo[] member GetField : string -> ProvidedFieldInfo member GetProperties : unit -> ProvidedPropertyInfo[] member GetProperty : string -> ProvidedPropertyInfo member GetEvents : unit -> ProvidedEventInfo[] member GetEvent : string -> ProvidedEventInfo member GetConstructors : unit -> ProvidedConstructorInfo[] member GetStaticParameters : ITypeProvider -> ProvidedParameterInfo[] member GetGenericTypeDefinition : unit -> ProvidedType member IsVoid : bool member IsGenericParameter : bool member IsValueType : bool member IsByRef : bool member IsPointer : bool member IsEnum : bool member IsInterface : bool member IsClass : bool member IsSealed : bool member IsPublic : bool member IsNestedPublic : bool member GenericParameterPosition : int member GetElementType : unit -> ProvidedType member GetGenericArguments : unit -> ProvidedType[] member GetArrayRank : unit -> int member RawSystemType : System.Type member GetEnumUnderlyingType : unit -> ProvidedType static member Void : ProvidedType static member CreateNoContext : Type -> ProvidedType member TryGetILTypeRef : unit -> ILTypeRef option member TryGetTyconRef : unit -> obj option static member ApplyContext : ProvidedType * ProvidedTypeContext -> ProvidedType member Context : ProvidedTypeContext interface IProvidedCustomAttributeProvider static member TaintedEquals : Tainted * Tainted -> bool and [] IProvidedCustomAttributeProvider = abstract GetHasTypeProviderEditorHideMethodsAttribute : provider:ITypeProvider -> bool abstract GetDefinitionLocationAttribute : provider:ITypeProvider -> (string * int * int) option abstract GetXmlDocAttributes : provider:ITypeProvider -> string[] abstract GetAttributeConstructorArgs: provider:ITypeProvider * attribName:string -> obj option list option and [] ProvidedAssembly = member GetName : unit -> System.Reflection.AssemblyName member FullName : string member GetManifestModuleContents : ITypeProvider -> byte[] member Handle : System.Reflection.Assembly and [] ProvidedMemberInfo = member Name :string member DeclaringType : ProvidedType interface IProvidedCustomAttributeProvider and [] ProvidedMethodBase = inherit ProvidedMemberInfo member IsGenericMethod : bool member IsStatic : bool member IsFamily : bool member IsFamilyAndAssembly : bool member IsFamilyOrAssembly : bool member IsVirtual : bool member IsFinal : bool member IsPublic : bool member IsAbstract : bool member IsHideBySig : bool member IsConstructor : bool member GetParameters : unit -> ProvidedParameterInfo[] member GetGenericArguments : unit -> ProvidedType[] static member TaintedGetHashCode : Tainted -> int static member TaintedEquals : Tainted * Tainted -> bool and [] ProvidedMethodInfo = inherit ProvidedMethodBase member ReturnType : ProvidedType member MetadataToken : int and [] ProvidedParameterInfo = member Name :string member ParameterType : ProvidedType member IsIn : bool member IsOut : bool member IsOptional : bool member RawDefaultValue : obj interface IProvidedCustomAttributeProvider and [] ProvidedFieldInfo = inherit ProvidedMemberInfo member IsInitOnly : bool member IsStatic : bool member IsSpecialName : bool member IsLiteral : bool member GetRawConstantValue : unit -> obj member FieldType : ProvidedType member IsPublic : bool member IsFamily : bool member IsFamilyAndAssembly : bool member IsFamilyOrAssembly : bool member IsPrivate : bool and [] ProvidedPropertyInfo = inherit ProvidedMemberInfo member GetGetMethod : unit -> ProvidedMethodInfo member GetSetMethod : unit -> ProvidedMethodInfo member GetIndexParameters : unit -> ProvidedParameterInfo[] member CanRead : bool member CanWrite : bool member PropertyType : ProvidedType static member TaintedGetHashCode : Tainted -> int static member TaintedEquals : Tainted * Tainted -> bool and [] ProvidedEventInfo = inherit ProvidedMemberInfo member GetAddMethod : unit -> ProvidedMethodInfo member GetRemoveMethod : unit -> ProvidedMethodInfo member EventHandlerType : ProvidedType static member TaintedGetHashCode : Tainted -> int static member TaintedEquals : Tainted * Tainted -> bool and [] ProvidedConstructorInfo = inherit ProvidedMethodBase [] type ProvidedExpr = member Type : ProvidedType /// Convert the expression to a string for diagnostics member UnderlyingExpressionString : string [] type ProvidedVar = member Type : ProvidedType member Name : string member IsMutable : bool static member Fresh : string * ProvidedType -> ProvidedVar override Equals : obj -> bool override GetHashCode : unit -> int //and [] ProvidedBlockExpression = { Expressions: ProvidedExpr[] } val (|ProvidedNewArrayExpr|_|) : ProvidedExpr -> (ProvidedType * ProvidedExpr[]) option #if PROVIDED_ADDRESS_OF val (|ProvidedAddressOfExpr|_|) : ProvidedExpr -> ProvidedExpr option #endif val (|ProvidedNewObjectExpr|_|) : ProvidedExpr -> (ProvidedConstructorInfo * ProvidedExpr[]) option val (|ProvidedWhileLoopExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedExpr) option val (|ProvidedNewDelegateExpr|_|) : ProvidedExpr -> (ProvidedType * ProvidedVar[] * ProvidedExpr) option val (|ProvidedForIntegerRangeLoopExpr|_|) : ProvidedExpr -> (ProvidedVar * ProvidedExpr * ProvidedExpr * ProvidedExpr) option val (|ProvidedSequentialExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedExpr) option val (|ProvidedTryWithExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedVar * ProvidedExpr * ProvidedVar * ProvidedExpr) option val (|ProvidedTryFinallyExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedExpr) option val (|ProvidedLambdaExpr|_|) : ProvidedExpr -> (ProvidedVar * ProvidedExpr) option val (|ProvidedCallExpr|_|) : ProvidedExpr -> (ProvidedExpr option * ProvidedMethodInfo * ProvidedExpr[]) option val (|ProvidedConstantExpr|_|) : ProvidedExpr -> (obj * ProvidedType) option val (|ProvidedDefaultExpr|_|) : ProvidedExpr -> ProvidedType option val (|ProvidedNewTupleExpr|_|) : ProvidedExpr -> ProvidedExpr[] option val (|ProvidedTupleGetExpr|_|) : ProvidedExpr -> (ProvidedExpr * int) option val (|ProvidedTypeAsExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedType) option val (|ProvidedTypeTestExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedType) option val (|ProvidedLetExpr|_|) : ProvidedExpr -> (ProvidedVar * ProvidedExpr * ProvidedExpr) option val (|ProvidedVarSetExpr|_|) : ProvidedExpr -> (ProvidedVar * ProvidedExpr) option val (|ProvidedIfThenElseExpr|_|) : ProvidedExpr -> (ProvidedExpr * ProvidedExpr * ProvidedExpr) option val (|ProvidedVarExpr|_|) : ProvidedExpr -> ProvidedVar option val GetInvokerExpression : ITypeProvider * ProvidedMethodBase * ProvidedVar[] -> ProvidedExpr /// Validate that the given provided type meets some of the rules for F# provided types val ValidateProvidedTypeAfterStaticInstantiation : range * Tainted * expectedPath : string[] * expectedName : string-> unit /// Try to apply a provided type to the given static arguments. If successful also return a function /// to check the type name is as expected (this function is called by the caller of TryApplyProvidedType /// after other checks are made). val TryApplyProvidedType : typeBeforeArguments:Tainted * optGeneratedTypePath: string list option * staticArgs:obj[] * range -> (Tainted * (unit -> unit)) option /// Try to resolve a type in the given extension type resolver val TryResolveProvidedType : ResolutionEnvironment * Tainted * range * string[] * typeName: string -> Tainted option /// Try to resolve a type in the given extension type resolver val TryLinkProvidedType : ResolutionEnvironment * Tainted * string[] * typeLogicalName: string * range: range -> Tainted option /// Decompose a .NET namespace into a list of parts. val GetPartsOfDotNetNamespace : range * Tainted * string -> string list /// Decompose the enclosing name of a type (including any class nestings) into a list of parts. /// e.g. System.Object -> ["System"; "Object"] val GetFSharpPathToProvidedType : Tainted * range:range-> string list /// Get the parts of the name that encloses the .NET type including nested types, using the scheme needed for ILTypeRef /// e.g. System.Object -> ["System.Object"] /// e.g. Something.ClassType.NestedType -> ["Something.ClassType"; "NestedType"] val GetILTypeRefOfProvidedType : Tainted * range:range -> Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef /// Get location of a type before it is relocated by static linking val GetOriginalILTypeRefOfProvidedType : Tainted * range:range -> Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef /// One node in a tree. There is one overall tree for each [] definition. type ProviderGeneratedType = ProviderGeneratedType of (*ilOrigTyRef*)ILTypeRef * (*ilRenamedTyRef*)ILTypeRef * ProviderGeneratedType list /// The mapping information for one [] definition, used to guide static linking. type ProvidedAssemblyStaticLinkingMap = { /// The table of remappings from type names in the provided assembly to type /// names in the statically linked, embedded assembly. ILTypeMap: System.Collections.Generic.Dictionary } /// Create a new static linking map, ready to populate with data. static member CreateNew : unit -> ProvidedAssemblyStaticLinkingMap val IsGeneratedTypeDirectReference : Tainted * range -> bool #endif fsharp-3.0.34/src/fsharp/pickle.fs0000775000175000017500000030743412260314606015761 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Pickle open System.Collections.Generic open System.Text open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Lib.Bits open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.ErrorLogger let verbose = false let ffailwith fileName str = let msg = FSComp.SR.pickleErrorReadingWritingMetadata(fileName, str) System.Diagnostics.Debug.Assert(false, msg) failwith msg // Fixup pickled data w.r.t. a set of CCU thunks indexed by name [] type PickledDataWithReferences<'rawData> = { /// The data that uses a collection of CcuThunks internally RawData: 'rawData; /// The assumptions that need to be fixed up FixupThunks: list } member x.Fixup loader = x.FixupThunks |> List.iter (fun reqd -> reqd.Fixup(loader reqd.AssemblyName)) ; x.RawData /// Like Fixup but loader may return None, in which case there is no fixup. member x.OptionalFixup loader = x.FixupThunks |> List.iter(fun reqd-> match loader reqd.AssemblyName with | Some(loaded) -> reqd.Fixup(loaded) | None -> reqd.FixupOrphaned() ); x.RawData //--------------------------------------------------------------------------- // Basic pickle/unpickle state //--------------------------------------------------------------------------- [] type Table<'T> = { name: string; tbl: Dictionary<'T, int>; mutable rows: ResizeArray<'T>; mutable count: int } member tbl.AsArray = Seq.toArray tbl.rows member tbl.Size = tbl.rows.Count member tbl.Add x = let n = tbl.count tbl.count <- tbl.count + 1; tbl.tbl.[x] <- n; tbl.rows.Add(x); n member tbl.FindOrAdd x = let mutable res = Unchecked.defaultof<_> let ok = tbl.tbl.TryGetValue(x,&res) if ok then res else tbl.Add x static member Create n = { name = n; tbl = new System.Collections.Generic.Dictionary<_,_>(1000, HashIdentity.Structural); rows= new ResizeArray<_>(1000); count=0; } [] type InputTable<'T> = { itbl_name: string; itbl_rows: 'T array } let new_itbl n r = { itbl_name=n; itbl_rows=r } #if INCLUDE_METADATA_WRITER [] type NodeOutTable<'Data,'Node> = { NodeStamp : ('Node -> Stamp) NodeName : ('Node -> string) GetRange : ('Node -> range) Deref: ('Node -> 'Data) Name: string Table: Table } member x.Size = x.Table.Size // inline this to get known-type-information through to the HashMultiMap constructor static member inline Create (stampF,nameF,rangeF,derefF,nm) = { NodeStamp = stampF NodeName = nameF GetRange = rangeF Deref = derefF Name = nm Table = Table<_>.Create nm } [] type WriterState = { os: ByteBuffer; oscope: CcuThunk; occus: Table; otycons: NodeOutTable; otypars: NodeOutTable; ovals: NodeOutTable; ostrings: Table; opubpaths: Table; onlerefs: Table; osimpletyps: Table; oglobals : Env.TcGlobals; ofile : string; } let pfailwith st str = ffailwith st.ofile str #endif [] type NodeInTable<'Data,'Node> = { LinkNode : ('Node -> 'Data -> unit) IsLinked : ('Node -> bool) Name : string Nodes : 'Node[] } member x.Get n = x.Nodes.[n] member x.Count = x.Nodes.Length static member Create (mkEmpty, lnk, isLinked, nm, n) = { LinkNode = lnk; IsLinked = isLinked; Name = nm; Nodes = Array.init n (fun _i -> mkEmpty() ) } [] type ReaderState = { is: ByteStream; iilscope: ILScopeRef; iccus: InputTable; itycons: NodeInTable; itypars: NodeInTable; ivals: NodeInTable; istrings: InputTable; ipubpaths: InputTable; inlerefs: InputTable; isimpletyps: InputTable; ifile: string; iILModule : ILModuleDef // the Abstract IL metadata for the DLL being read } let ufailwith st str = ffailwith st.ifile str //--------------------------------------------------------------------------- // Basic pickle/unpickle operations //--------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER type 'T pickler = 'T -> WriterState -> unit let p_byte b st = st.os.EmitIntAsByte b let p_bool b st = p_byte (if b then 1 else 0) st let prim_p_int32 i st = p_byte (b0 i) st; p_byte (b1 i) st; p_byte (b2 i) st; p_byte (b3 i) st /// Compress integers according to the same scheme used by CLR metadata /// This halves the size of pickled data let p_int32 n st = if n >= 0 && n <= 0x7F then p_byte (b0 n) st else if n >= 0x80 && n <= 0x3FFF then p_byte ( (0x80 ||| (n >>> 8))) st; p_byte ( (n &&& 0xFF)) st else p_byte 0xFF st; prim_p_int32 n st let space = () let p_space n () st = for i = 0 to n - 1 do p_byte 0 st let p_bytes (s:byte[]) st = let len = s.Length p_int32 (len) st; st.os.EmitBytes s let p_prim_string (s:string) st = let bytes = Encoding.UTF8.GetBytes s let len = bytes.Length p_int32 (len) st; st.os.EmitBytes bytes let p_int c st = p_int32 c st let p_int8 (i:sbyte) st = p_int32 (int32 i) st let p_uint8 (i:byte) st = p_byte (int i) st let p_int16 (i:int16) st = p_int32 (int32 i) st let p_uint16 (x:uint16) st = p_int32 (int32 x) st let p_uint32 (x:uint32) st = p_int32 (int32 x) st let p_int64 (i:int64) st = p_int32 (int32 (i &&& 0xFFFFFFFFL)) st; p_int32 (int32 (i >>> 32)) st let p_uint64 (x:uint64) st = p_int64 (int64 x) st let bits_of_float32 (x:float32) = System.BitConverter.ToInt32(System.BitConverter.GetBytes(x),0) let bits_of_float (x:float) = System.BitConverter.DoubleToInt64Bits(x) let p_single i st = p_int32 (bits_of_float32 i) st let p_double i st = p_int64 (bits_of_float i) st let p_ieee64 i st = p_int64 (bits_of_float i) st let p_char i st = p_uint16 (uint16 (int32 i)) st let inline p_tup2 p1 p2 (a,b) (st:WriterState) = (p1 a st : unit); (p2 b st : unit) let inline p_tup3 p1 p2 p3 (a,b,c) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit) let inline p_tup4 p1 p2 p3 p4 (a,b,c,d) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit) let inline p_tup5 p1 p2 p3 p4 p5 (a,b,c,d,e) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit) let inline p_tup6 p1 p2 p3 p4 p5 p6 (a,b,c,d,e,f) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit) let inline p_tup7 p1 p2 p3 p4 p5 p6 p7 (a,b,c,d,e,f,x7) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit) let inline p_tup8 p1 p2 p3 p4 p5 p6 p7 p8 (a,b,c,d,e,f,x7,x8) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit) let inline p_tup9 p1 p2 p3 p4 p5 p6 p7 p8 p9 (a,b,c,d,e,f,x7,x8,x9) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit) let inline p_tup10 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 (a,b,c,d,e,f,x7,x8,x9,x10) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit) let inline p_tup11 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 (a,b,c,d,e,f,x7,x8,x9,x10,x11) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit) let inline p_tup12 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit) let inline p_tup13 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit); (p13 x13 st : unit) let inline p_tup14 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit); (p13 x13 st : unit) ; (p14 x14 st : unit) let inline p_tup15 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit); (p13 x13 st : unit) ; (p14 x14 st : unit); (p15 x15 st : unit) let inline p_tup16 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit); (p13 x13 st : unit) ; (p14 x14 st : unit); (p15 x15 st : unit); (p16 x16 st : unit) let inline p_tup17 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17) (st:WriterState) = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit); (p6 f st : unit); (p7 x7 st : unit); (p8 x8 st : unit); (p9 x9 st : unit); (p10 x10 st : unit); (p11 x11 st : unit); (p12 x12 st : unit); (p13 x13 st : unit) ; (p14 x14 st : unit); (p15 x15 st : unit); (p16 x16 st : unit); (p17 x17 st : unit) #endif let u_byte st = int (st.is.ReadByte()) type unpickler<'T> = ReaderState -> 'T let u_bool st = let b = u_byte st in (b = 1) let prim_u_int32 st = let b0 = (u_byte st) let b1 = (u_byte st) let b2 = (u_byte st) let b3 = (u_byte st) b0 ||| (b1 <<< 8) ||| (b2 <<< 16) ||| (b3 <<< 24) let u_int32 st = let b0 = u_byte st if b0 <= 0x7F then b0 else if b0 <= 0xbf then let b0 = b0 &&& 0x7F let b1 = (u_byte st) (b0 <<< 8) ||| b1 else assert(b0 = 0xFF); prim_u_int32 st let u_bytes st = let n = (u_int32 st) st.is.ReadBytes n let u_prim_string st = let len = (u_int32 st) st.is.ReadUtf8String len let u_int st = u_int32 st let u_int8 st = sbyte (u_int32 st) let u_uint8 st = byte (u_byte st) let u_int16 st = int16 (u_int32 st) let u_uint16 st = uint16 (u_int32 st) let u_uint32 st = uint32 (u_int32 st) let u_int64 st = let b1 = (int64 (u_int32 st)) &&& 0xFFFFFFFFL let b2 = int64 (u_int32 st) b1 ||| (b2 <<< 32) let u_uint64 st = uint64 (u_int64 st) let float32_of_bits (x:int32) = System.BitConverter.ToSingle(System.BitConverter.GetBytes(x),0) let float_of_bits (x:int64) = System.BitConverter.Int64BitsToDouble(x) let u_single st = float32_of_bits (u_int32 st) let u_double st = float_of_bits (u_int64 st) let u_ieee64 st = float_of_bits (u_int64 st) let u_char st = char (int32 (u_uint16 st)) let u_space n st = for i = 0 to n - 1 do u_byte st |> ignore let inline u_tup2 p1 p2 (st:ReaderState) = let a = p1 st in let b = p2 st in (a,b) let inline u_tup3 p1 p2 p3 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in (a,b,c) let inline u_tup4 p1 p2 p3 p4 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in (a,b,c,d) let inline u_tup5 p1 p2 p3 p4 p5 (st:ReaderState) = let a = p1 st let b = p2 st let c = p3 st let d = p4 st let e = p5 st (a,b,c,d,e) let inline u_tup6 p1 p2 p3 p4 p5 p6 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in (a,b,c,d,e,f) let inline u_tup7 p1 p2 p3 p4 p5 p6 p7 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in (a,b,c,d,e,f,x7) let inline u_tup8 p1 p2 p3 p4 p5 p6 p7 p8 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in (a,b,c,d,e,f,x7,x8) let inline u_tup9 p1 p2 p3 p4 p5 p6 p7 p8 p9 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in (a,b,c,d,e,f,x7,x8,x9) let inline u_tup10 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in (a,b,c,d,e,f,x7,x8,x9,x10) let inline u_tup11 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11) let inline u_tup12 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12) let inline u_tup13 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in let x13 = p13 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13) let inline u_tup14 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in let x13 = p13 st in let x14 = p14 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14) let inline u_tup15 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in let x13 = p13 st in let x14 = p14 st in let x15 = p15 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15) let inline u_tup16 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in let x13 = p13 st in let x14 = p14 st in let x15 = p15 st in let x16 = p16 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16) let inline u_tup17 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 (st:ReaderState) = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in let f = p6 st in let x7 = p7 st in let x8 = p8 st in let x9 = p9 st in let x10 = p10 st in let x11 = p11 st in let x12 = p12 st in let x13 = p13 st in let x14 = p14 st in let x15 = p15 st in let x16 = p16 st in let x17 = p17 st in (a,b,c,d,e,f,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17) //--------------------------------------------------------------------------- // Pickle/unpickle operations for observably shared graph nodes //--------------------------------------------------------------------------- // exception Nope // ctxt is for debugging #if INCLUDE_METADATA_WRITER let p_osgn_ref (_ctxt:string) (outMap : NodeOutTable<_,_>) x st = let idx = outMap.Table.FindOrAdd (outMap.NodeStamp x) //if ((idx = 0) && outMap.Name = "otycons") then // System.Diagnostics.Debug.Assert(false, sprintf "idx %d#%d in table %s has name '%s', was defined at '%s' and is referenced from context %s\n" idx (outMap.NodeStamp x) outMap.Name (outMap.NodeName x) (stringOfRange (outMap.GetRange x)) _ctxt) p_int idx st let p_osgn_decl (outMap : NodeOutTable<_,_>) p x st = let stamp = outMap.NodeStamp x let idx = outMap.Table.FindOrAdd stamp //dprintf "decl %d#%d in table %s has name %s\n" idx (outMap.NodeStamp x) outMap.Name (outMap.NodeName x); p_tup2 p_int p (idx,outMap.Deref x) st #endif let u_osgn_ref (inMap: NodeInTable<_,_>) st = let n = u_int st if n < 0 || n >= inMap.Count then ufailwith st ("u_osgn_ref: out of range, table = "+inMap.Name+", n = "+string n); inMap.Get n let u_osgn_decl (inMap: NodeInTable<_,_>) u st = let idx,data = u_tup2 u_int u st // dprintf "unpickling osgn %d in table %s\n" idx nm; let res = inMap.Get idx inMap.LinkNode res data; res //--------------------------------------------------------------------------- // Pickle/unpickle operations for interned nodes //--------------------------------------------------------------------------- let encode_uniq (tbl: Table<_>) key = tbl.FindOrAdd key let lookup_uniq st tbl n = let arr = tbl.itbl_rows if n < 0 || n >= arr.Length then ufailwith st ("lookup_uniq in table "+tbl.itbl_name+" out of range, n = "+string n+ ", sizeof(tab) = " + string (Array.length arr)); arr.[n] //--------------------------------------------------------------------------- // Pickle/unpickle arrays and lists. For lists use the same binary format as arrays so we can switch // between internal representations relatively easily //------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER let p_array f (x: 'T[]) st = p_int x.Length st; for i = 0 to x.Length-1 do f x.[i] st let p_list f x st = p_array f (Array.ofList x) st #if FLAT_LIST_AS_LIST #else let p_FlatList f (x: FlatList<'T>) st = p_list f x st #endif #if FLAT_LIST_AS_ARRAY_STRUCT //#else let p_FlatList f (x: FlatList<'T>) st = p_array f (match x.array with null -> [| |] | _ -> x.array) st #endif #if FLAT_LIST_AS_ARRAY //#else let p_FlatList f (x: FlatList<'T>) st = p_array f x st #endif let p_wrap (f: 'T -> 'U) (p : 'U pickler) : 'T pickler = (fun x st -> p (f x) st) let p_option f x st = match x with | None -> p_byte 0 st | Some h -> p_byte 1 st; f h st // Pickle lazy values in such a way that they can, in some future F# compiler version, be read back // lazily. However, a lazy reader is not used in this version because the value may contain the definitions of some // OSGN nodes. let p_lazy p x st = let v = Lazy.force x let fixupPos1 = st.os.Position // We fix these up after prim_p_int32 0 st; let fixupPos2 = st.os.Position prim_p_int32 0 st; let fixupPos3 = st.os.Position prim_p_int32 0 st; let fixupPos4 = st.os.Position prim_p_int32 0 st; let fixupPos5 = st.os.Position prim_p_int32 0 st; let fixupPos6 = st.os.Position prim_p_int32 0 st; let fixupPos7 = st.os.Position prim_p_int32 0 st; let idx1 = st.os.Position let otyconsIdx1 = st.otycons.Size let otyparsIdx1 = st.otypars.Size let ovalsIdx1 = st.ovals.Size // Run the pickler p v st; // Determine and fixup the length of the pickled data let idx2 = st.os.Position st.os.FixupInt32 fixupPos1 (idx2-idx1); // Determine and fixup the ranges of OSGN nodes defined within the lazy portion let otyconsIdx2 = st.otycons.Size let otyparsIdx2 = st.otypars.Size let ovalsIdx2 = st.ovals.Size st.os.FixupInt32 fixupPos2 otyconsIdx1; st.os.FixupInt32 fixupPos3 otyconsIdx2; st.os.FixupInt32 fixupPos4 otyparsIdx1; st.os.FixupInt32 fixupPos5 otyparsIdx2; st.os.FixupInt32 fixupPos6 ovalsIdx1; st.os.FixupInt32 fixupPos7 ovalsIdx2 let p_hole () = let h = ref (None : 'T pickler option) (fun f -> h := Some f),(fun x st -> match !h with Some f -> f x st | None -> pfailwith st "p_hole: unfilled hole") #endif let u_array f st = let n = u_int st let res = Array.zeroCreate n for i = 0 to n-1 do res.[i] <- f st res let u_list f st = Array.toList (u_array f st) #if FLAT_LIST_AS_LIST #else let u_FlatList f st = u_list f st // new FlatList<_> (u_array f st) #endif #if FLAT_LIST_AS_ARRAY_STRUCT //#else let u_FlatList f st = FlatList(u_array f st) #endif #if FLAT_LIST_AS_ARRAY //#else let u_FlatList f st = u_array f st #endif let u_array_revi f st = let n = u_int st let res = Array.zeroCreate n for i = 0 to n-1 do res.[i] <- f st (n-1-i) res // Mark up default constraints with a priority in reverse order: last gets 0 etc. See comment on TyparConstraint.DefaultsTo let u_list_revi f st = Array.toList (u_array_revi f st) let u_wrap (f: 'U -> 'T) (u : 'U unpickler) : 'T unpickler = (fun st -> f (u st)) let u_option f st = let tag = u_byte st match tag with | 0 -> None | 1 -> Some (f st) | n -> ufailwith st ("u_option: found number " + string n) // Boobytrap an OSGN node with a force of a lazy load of a bunch of pickled data #if LAZY_UNPICKLE let wire (x:osgn<_>) (res:Lazy<_>) = x.osgnTripWire <- Some(fun () -> res.Force() |> ignore) #endif let u_lazy u st = // Read the number of bytes in the record let len = prim_u_int32 st // fixupPos1 // These are the ranges of OSGN nodes defined within the lazily read portion of the graph let otyconsIdx1 = prim_u_int32 st // fixupPos2 let otyconsIdx2 = prim_u_int32 st // fixupPos3 let otyparsIdx1 = prim_u_int32 st // fixupPos4 let otyparsIdx2 = prim_u_int32 st // fixupPos5 let ovalsIdx1 = prim_u_int32 st // fixupPos6 let ovalsIdx2 = prim_u_int32 st // fixupPos7 #if LAZY_UNPICKLE // Record the position in the bytestream to use when forcing the read of the data let idx1 = st.is.Position // Skip the length of data st.is.Skip len; // This is the lazy computation that wil force the unpickling of the term. // This term must contain OSGN definitions of the given nodes. let res = lazy (let st = { st with is = st.is.CloneAndSeek idx1 } u st) /// Force the reading of the data as a "tripwire" for each of the OSGN thunks for i = otyconsIdx1 to otyconsIdx2-1 do wire (st.itycons.Get(i)) res done; for i = ovalsIdx1 to ovalsIdx2-1 do wire (st.ivals.Get(i)) res done; for i = otyparsIdx1 to otyparsIdx2-1 do wire (st.itypars.Get(i)) res done; res #else ignore (len, otyconsIdx1, otyconsIdx2, otyparsIdx1, otyparsIdx2, ovalsIdx1, ovalsIdx2) Lazy.CreateFromValue(u st) #endif let u_hole () = let h = ref (None : 'T unpickler option) (fun f -> h := Some f),(fun st -> match !h with Some f -> f st | None -> ufailwith st "u_hole: unfilled hole") //--------------------------------------------------------------------------- // Pickle/unpickle F# interface data //--------------------------------------------------------------------------- // Strings // A huge number of these occur in pickled F# data, so make them unique let encode_string stringTab x = encode_uniq stringTab x let decode_string x = x let lookup_string st stringTab x = lookup_uniq st stringTab x let u_encoded_string = u_prim_string let u_string st = lookup_uniq st st.istrings (u_int st) let u_strings = u_list u_string let u_ints = u_list u_int #if INCLUDE_METADATA_WRITER let p_encoded_string = p_prim_string let p_string s st = p_int (encode_string st.ostrings s) st let p_strings = p_list p_string let p_ints = p_list p_int #endif // CCU References // A huge number of these occur in pickled F# data, so make them unique let encode_ccuref ccuTab (x:CcuThunk) = encode_uniq ccuTab x.AssemblyName let decode_ccuref x = x let lookup_ccuref st ccuTab x = lookup_uniq st ccuTab x let u_encoded_ccuref st = match u_byte st with | 0 -> u_prim_string st | n -> ufailwith st ("u_encoded_ccuref: found number " + string n) let u_ccuref st = lookup_uniq st st.iccus (u_int st) #if INCLUDE_METADATA_WRITER let p_encoded_ccuref x st = p_byte 0 st // leave a dummy tag to make room for future encodings of ccurefs p_prim_string x st let p_ccuref s st = p_int (encode_ccuref st.occus s) st #endif // References to public items in this module // A huge number of these occur in pickled F# data, so make them unique let decode_pubpath st stringTab a = PubPath(Array.map (lookup_string st stringTab) a) let lookup_pubpath st pubpathTab x = lookup_uniq st pubpathTab x let u_encoded_pubpath = u_array u_int let u_pubpath st = lookup_uniq st st.ipubpaths (u_int st) #if INCLUDE_METADATA_WRITER let encode_pubpath stringTab pubpathTab (PubPath(a)) = encode_uniq pubpathTab (Array.map (encode_string stringTab) a) let p_encoded_pubpath = p_array p_int let p_pubpath x st = p_int (encode_pubpath st.ostrings st.opubpaths x) st #endif // References to other modules // A huge number of these occur in pickled F# data, so make them unique let decode_nleref st ccuTab stringTab (a,b) = mkNonLocalEntityRef (lookup_ccuref st ccuTab a) (Array.map (lookup_string st stringTab) b) let lookup_nleref st nlerefTab x = lookup_uniq st nlerefTab x let u_encoded_nleref = u_tup2 u_int (u_array u_int) let u_nleref st = lookup_uniq st st.inlerefs (u_int st) #if INCLUDE_METADATA_WRITER let encode_nleref ccuTab stringTab nlerefTab thisCcu (nleref: NonLocalEntityRef) = #if EXTENSIONTYPING // Remap references to statically-linked Entity nodes in provider-generated entities to point to the current assembly. // References to these nodes _do_ appear in F# assembly metadata, because they may be public. let nleref = match nleref.Deref.PublicPath with | Some pubpath when nleref.Deref.IsProvidedGeneratedTycon -> if verbose then dprintfn "remapping pickled reference to provider-generated type %s" nleref.Deref.DisplayNameWithStaticParameters rescopePubPath thisCcu pubpath | _ -> nleref #else ignore thisCcu #endif let (NonLocalEntityRef(a,b)) = nleref encode_uniq nlerefTab (encode_ccuref ccuTab a, Array.map (encode_string stringTab) b) let p_encoded_nleref = p_tup2 p_int (p_array p_int) let p_nleref x st = p_int (encode_nleref st.occus st.ostrings st.onlerefs st.oscope x) st #endif // Simple types are types like "int", represented as TType(Ref_nonlocal(...,"int"),[]). // A huge number of these occur in pickled F# data, so make them unique. let decode_simpletyp st _ccuTab _stringTab nlerefTab a = TType_app(ERefNonLocal (lookup_nleref st nlerefTab a),[]) let lookup_simpletyp st simpletypTab x = lookup_uniq st simpletypTab x let u_encoded_simpletyp st = u_int st let u_simpletyp st = lookup_uniq st st.isimpletyps (u_int st) #if INCLUDE_METADATA_WRITER let encode_simpletyp ccuTab stringTab nlerefTab simpletypTab thisCcu a = encode_uniq simpletypTab (encode_nleref ccuTab stringTab nlerefTab thisCcu a) let p_encoded_simpletyp x st = p_int x st let p_simpletyp x st = p_int (encode_simpletyp st.occus st.ostrings st.onlerefs st.osimpletyps st.oscope x) st #endif type sizes = int * int * int #if INCLUDE_METADATA_WRITER let pickleObjWithDanglingCcus file g scope p x = let ccuNameTab,(sizes: sizes),stringTab,pubpathTab,nlerefTab,simpletypTab,phase1bytes = let st1 = { os = ByteBuffer.Create 100000; oscope=scope; occus= Table<_>.Create "occus"; otycons=NodeOutTable<_,_>.Create((fun (tc:Tycon) -> tc.Stamp),(fun tc -> tc.LogicalName),(fun tc -> tc.Range),(fun osgn -> osgn.Data),"otycons"); otypars=NodeOutTable<_,_>.Create((fun (tp:Typar) -> tp.Stamp),(fun tp -> tp.DisplayName),(fun tp -> tp.Range),(fun osgn -> osgn.Data),"otypars"); ovals=NodeOutTable<_,_>.Create((fun (v:Val) -> v.Stamp),(fun v -> v.LogicalName),(fun v -> v.Range),(fun osgn -> osgn.Data),"ovals"); ostrings=Table<_>.Create "ostrings"; onlerefs=Table<_>.Create "onlerefs"; opubpaths=Table<_>.Create "opubpaths"; osimpletyps=Table<_>.Create "osimpletyps"; oglobals=g; ofile=file; (* REINSTATE: odecomps=NodeOutTable.Create stamp_of_decomp name_of_decomp "odecomps"; *) } p x st1; let sizes = st1.otycons.Size, st1.otypars.Size, st1.ovals.Size st1.occus, sizes, st1.ostrings, st1.opubpaths,st1.onlerefs, st1.osimpletyps, st1.os.Close() let phase2data = (ccuNameTab.AsArray,sizes,stringTab.AsArray,pubpathTab.AsArray,nlerefTab.AsArray,simpletypTab.AsArray,phase1bytes) let phase2bytes = let st2 = { os = ByteBuffer.Create 100000; oscope=scope; occus= Table<_>.Create "occus (fake)"; otycons=NodeOutTable<_,_>.Create((fun (tc:Tycon) -> tc.Stamp),(fun tc -> tc.LogicalName),(fun tc -> tc.Range),(fun osgn -> osgn.Data),"otycons"); otypars=NodeOutTable<_,_>.Create((fun (tp:Typar) -> tp.Stamp),(fun tp -> tp.DisplayName),(fun tp -> tp.Range),(fun osgn -> osgn.Data),"otypars"); ovals=NodeOutTable<_,_>.Create((fun (v:Val) -> v.Stamp),(fun v -> v.LogicalName),(fun v -> v.Range),(fun osgn -> osgn.Data),"ovals"); ostrings=Table<_>.Create "ostrings (fake)"; opubpaths=Table<_>.Create "opubpaths (fake)"; onlerefs=Table<_>.Create "onlerefs (fake)"; osimpletyps=Table<_>.Create "osimpletyps (fake)"; oglobals=g; ofile=file; } p_tup7 (p_array p_encoded_ccuref) (p_tup3 p_int p_int p_int) (p_array p_encoded_string) (p_array p_encoded_pubpath) (p_array p_encoded_nleref) (p_array p_encoded_simpletyp) p_bytes phase2data st2; st2.os.Close() phase2bytes #endif #if DEBUG let check (ilscope:ILScopeRef) (inMap : NodeInTable<_,_>) = for i = 0 to inMap.Count - 1 do let n = inMap.Get i if not (inMap.IsLinked n) then System.Diagnostics.Debug.Assert(false, sprintf "*** unpickle: osgn %d in table %s with IL scope %s had no matching declaration (was not fixed up)\nPlease report this warning. (Note for compiler developers: to get information about which item this index relates to, enable the conditional in Pickle.p_osgn_ref to refer to the given index number and recompile an identical copy of the source for the DLL containing the data being unpickled. A message will then be printed indicating the name of the item.\n" i inMap.Name ilscope.QualifiedName) #endif let unpickleObjWithDanglingCcus file ilscope (iILModule:ILModuleDef) u (phase2bytes:byte[]) = let st2 = { is = ByteStream.FromBytes (phase2bytes,0,phase2bytes.Length); iilscope= ilscope; iccus= new_itbl "iccus (fake)" [| |]; itycons= NodeInTable<_,_>.Create (Tycon.NewUnlinked, (fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"itycons",0); itypars= NodeInTable<_,_>.Create (Typar.NewUnlinked, (fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"itypars",0); ivals = NodeInTable<_,_>.Create (Val.NewUnlinked , (fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"ivals",0); istrings = new_itbl "istrings (fake)" [| |]; inlerefs = new_itbl "inlerefs (fake)" [| |]; ipubpaths = new_itbl "ipubpaths (fake)" [| |]; isimpletyps = new_itbl "isimpletyps (fake)" [| |]; ifile=file iILModule = iILModule } let phase2data = u_tup7 (u_array u_encoded_ccuref) (u_tup3 u_int u_int u_int) (u_array u_encoded_string) (u_array u_encoded_pubpath) (u_array u_encoded_nleref) (u_array u_encoded_simpletyp) u_bytes st2 let ccuNameTab,sizes,stringTab,pubpathTab,nlerefTab,simpletypTab,phase1bytes = phase2data let ccuTab = new_itbl "iccus" (Array.map (CcuThunk.CreateDelayed) ccuNameTab) let stringTab = new_itbl "istrings" (Array.map decode_string stringTab) let pubpathTab = new_itbl "ipubpaths" (Array.map (decode_pubpath st2 stringTab) pubpathTab) let nlerefTab = new_itbl "inlerefs" (Array.map (decode_nleref st2 ccuTab stringTab) nlerefTab) let simpletypTab = new_itbl "isimpletyps" (Array.map (decode_simpletyp st2 ccuTab stringTab nlerefTab) simpletypTab) let ((ntycons,ntypars,nvals) : sizes) = sizes let data = let st1 = { is = ByteStream.FromBytes (phase1bytes,0,phase1bytes.Length); iccus= ccuTab; iilscope= ilscope; itycons= NodeInTable<_,_>.Create(Tycon.NewUnlinked,(fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"itycons",ntycons); itypars= NodeInTable<_,_>.Create(Typar.NewUnlinked,(fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"itypars",ntypars); ivals= NodeInTable<_,_>.Create(Val.NewUnlinked ,(fun osgn tg -> osgn.Link tg),(fun osgn -> osgn.IsLinked),"ivals",nvals); istrings = stringTab; ipubpaths = pubpathTab; inlerefs = nlerefTab; isimpletyps = simpletypTab; ifile=file iILModule = iILModule } let res = u st1 #if DEBUG #if LAZY_UNPICKLE #else check ilscope st1.itycons; check ilscope st1.ivals; check ilscope st1.itypars; #endif #endif res {RawData=data; FixupThunks=Array.toList ccuTab.itbl_rows } //========================================================================= // PART II *) //========================================================================= //--------------------------------------------------------------------------- // Pickle/unpickle for Abstract IL data, up to IL instructions //--------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER let p_ILPublicKey x st = match x with | PublicKey b -> p_byte 0 st; p_bytes b st | PublicKeyToken b -> p_byte 1 st; p_bytes b st let p_ILVersion x st = p_tup4 p_uint16 p_uint16 p_uint16 p_uint16 x st let p_ILModuleRef (x:ILModuleRef) st = p_tup3 p_string p_bool (p_option p_bytes) (x.Name,x.HasMetadata,x.Hash) st let p_ILAssemblyRef (x:ILAssemblyRef) st = p_byte 0 st // leave a dummy tag to make room for future encodings of assembly refs p_tup6 p_string (p_option p_bytes) (p_option p_ILPublicKey) p_bool (p_option p_ILVersion) (p_option p_string) ( x.Name,x.Hash,x.PublicKey,x.Retargetable,x.Version,x.Locale) st let p_ILScopeRef x st = match x with | ILScopeRef.Local -> p_byte 0 st | ILScopeRef.Module mref -> p_byte 1 st; p_ILModuleRef mref st | ILScopeRef.Assembly aref -> p_byte 2 st; p_ILAssemblyRef aref st #endif let u_ILPublicKey st = let tag = u_byte st match tag with | 0 -> u_bytes st |> PublicKey | 1 -> u_bytes st |> PublicKeyToken | _ -> ufailwith st "u_ILPublicKey" let u_ILVersion st = u_tup4 u_uint16 u_uint16 u_uint16 u_uint16 st let u_ILModuleRef st = let (a,b,c) = u_tup3 u_string u_bool (u_option u_bytes) st ILModuleRef.Create(a, b, c) let u_ILAssemblyRef st = let tag = u_byte st match tag with | 0 -> let a,b,c,d,e,f = u_tup6 u_string (u_option u_bytes) (u_option u_ILPublicKey) u_bool (u_option u_ILVersion) (u_option u_string) st ILAssemblyRef.Create(a, b, c, d, e, f) | _ -> ufailwith st "u_ILAssemblyRef" // IL scope references are rescoped as they are unpickled. This means // the pickler accepts IL fragments containing ILScopeRef.Local and adjusts them // to be absolute scope references. let u_ILScopeRef st = let res = let tag = u_byte st match tag with | 0 -> ILScopeRef.Local | 1 -> u_ILModuleRef st |> ILScopeRef.Module | 2 -> u_ILAssemblyRef st |> ILScopeRef.Assembly | _ -> ufailwith st "u_ILScopeRef" let res = rescopeILScopeRef st.iilscope res res #if INCLUDE_METADATA_WRITER let p_ILHasThis x st = p_byte (match x with | ILThisConvention.Instance -> 0 | ILThisConvention.InstanceExplicit -> 1 | ILThisConvention.Static -> 2) st let p_ILArrayShape = p_wrap (fun (ILArrayShape x) -> x) (p_list (p_tup2 (p_option p_int32) (p_option p_int32))) let rec p_ILType ty st = match ty with | ILType.Void -> p_byte 0 st | ILType.Array (shape,ty) -> p_byte 1 st; p_tup2 p_ILArrayShape p_ILType (shape,ty) st | ILType.Value tspec -> p_byte 2 st; p_ILTypeSpec tspec st | ILType.Boxed tspec -> p_byte 3 st; p_ILTypeSpec tspec st | ILType.Ptr ty -> p_byte 4 st; p_ILType ty st | ILType.Byref ty -> p_byte 5 st; p_ILType ty st | ILType.FunctionPointer csig -> p_byte 6 st; p_ILCallSig csig st | ILType.TypeVar n -> p_byte 7 st; p_uint16 n st | ILType.Modified (req,tref,ty) -> p_byte 8 st; p_tup3 p_bool p_ILTypeRef p_ILType (req,tref,ty) st and p_ILTypes tys = p_list p_ILType (ILList.toList tys) and p_ILBasicCallConv x st = p_byte (match x with | ILArgConvention.Default -> 0 | ILArgConvention.CDecl -> 1 | ILArgConvention.StdCall -> 2 | ILArgConvention.ThisCall -> 3 | ILArgConvention.FastCall -> 4 | ILArgConvention.VarArg -> 5) st and p_ILCallConv (Callconv(x,y)) st = p_tup2 p_ILHasThis p_ILBasicCallConv (x,y) st and p_ILCallSig x st = p_tup3 p_ILCallConv p_ILTypes p_ILType (x.CallingConv,x.ArgTypes,x.ReturnType) st and p_ILTypeRef (x:ILTypeRef) st = p_tup3 p_ILScopeRef p_strings p_string (x.Scope,x.Enclosing,x.Name) st and p_ILTypeSpec (a:ILTypeSpec) st = p_tup2 p_ILTypeRef p_ILTypes (a.TypeRef,a.GenericArgs) st #endif let u_ILBasicCallConv st = match u_byte st with | 0 -> ILArgConvention.Default | 1 -> ILArgConvention.CDecl | 2 -> ILArgConvention.StdCall | 3 -> ILArgConvention.ThisCall | 4 -> ILArgConvention.FastCall | 5 -> ILArgConvention.VarArg | _ -> ufailwith st "u_ILBasicCallConv" let u_ILHasThis st = match u_byte st with | 0 -> ILThisConvention.Instance | 1 -> ILThisConvention.InstanceExplicit | 2 -> ILThisConvention.Static | _ -> ufailwith st "u_ILHasThis" let u_ILCallConv st = let a,b = u_tup2 u_ILHasThis u_ILBasicCallConv st in Callconv(a,b) let u_ILTypeRef st = let a,b,c = u_tup3 u_ILScopeRef u_strings u_string st in ILTypeRef.Create(a, b, c) let u_ILArrayShape = u_wrap (fun x -> ILArrayShape x) (u_list (u_tup2 (u_option u_int32) (u_option u_int32))) let rec u_ILType st = let tag = u_byte st match tag with | 0 -> ILType.Void | 1 -> u_tup2 u_ILArrayShape u_ILType st |> ILType.Array | 2 -> u_ILTypeSpec st |> ILType.Value | 3 -> u_ILTypeSpec st |> mkILBoxedType | 4 -> u_ILType st |> ILType.Ptr | 5 -> u_ILType st |> ILType.Byref | 6 -> u_ILCallSig st |> ILType.FunctionPointer | 7 -> u_uint16 st |> mkILTyvarTy | 8 -> u_tup3 u_bool u_ILTypeRef u_ILType st |> ILType.Modified | _ -> ufailwith st "u_ILType" and u_ILTypes st = ILList.ofList (u_list u_ILType st) and u_ILCallSig = u_wrap (fun (a,b,c) -> {CallingConv=a; ArgTypes=b; ReturnType=c}) (u_tup3 u_ILCallConv u_ILTypes u_ILType) and u_ILTypeSpec st = let a,b = u_tup2 u_ILTypeRef u_ILTypes st in ILTypeSpec.Create(a,b) #if INCLUDE_METADATA_WRITER let p_ILMethodRef (x: ILMethodRef) st = p_tup6 p_ILTypeRef p_ILCallConv p_int p_string p_ILTypes p_ILType (x.EnclosingTypeRef,x.CallingConv,x.GenericArity,x.Name,x.ArgTypes,x.ReturnType) st let p_ILFieldRef (x: ILFieldRef) st = p_tup3 p_ILTypeRef p_string p_ILType (x.EnclosingTypeRef, x.Name, x.Type) st let p_ILMethodSpec (x: ILMethodSpec) st = p_tup3 p_ILMethodRef p_ILType p_ILTypes (x.MethodRef, x.EnclosingType, x.GenericArgs) st let p_ILFieldSpec (x : ILFieldSpec) st = p_tup2 p_ILFieldRef p_ILType (x.FieldRef, x.EnclosingType) st let p_ILBasicType x st = p_int (match x with | DT_R -> 0 | DT_I1 -> 1 | DT_U1 -> 2 | DT_I2 -> 3 | DT_U2 -> 4 | DT_I4 -> 5 | DT_U4 -> 6 | DT_I8 -> 7 | DT_U8 -> 8 | DT_R4 -> 9 | DT_R8 -> 10 | DT_I -> 11 | DT_U -> 12 | DT_REF -> 13) st let p_ILVolatility x st = p_int (match x with Volatile -> 0 | Nonvolatile -> 1) st let p_ILReadonly x st = p_int (match x with ReadonlyAddress -> 0 | NormalAddress -> 1) st #endif let u_ILMethodRef st = let x1,x2,x3,x4,x5,x6 = u_tup6 u_ILTypeRef u_ILCallConv u_int u_string u_ILTypes u_ILType st ILMethodRef.Create(x1,x2,x4,x3,x5,x6) let u_ILFieldRef st = let x1,x2,x3 = u_tup3 u_ILTypeRef u_string u_ILType st {EnclosingTypeRef=x1;Name=x2;Type=x3} let u_ILMethodSpec st = let x1,x2,x3 = u_tup3 u_ILMethodRef u_ILType u_ILTypes st ILMethodSpec.Create(x2,x1,x3) let u_ILFieldSpec st = let x1,x2 = u_tup2 u_ILFieldRef u_ILType st {FieldRef=x1;EnclosingType=x2} let u_ILBasicType st = match u_int st with | 0 -> DT_R | 1 -> DT_I1 | 2 -> DT_U1 | 3 -> DT_I2 | 4 -> DT_U2 | 5 -> DT_I4 | 6 -> DT_U4 | 7 -> DT_I8 | 8 -> DT_U8 | 9 -> DT_R4 | 10 -> DT_R8 | 11 -> DT_I | 12 -> DT_U | 13 -> DT_REF | _ -> ufailwith st "u_ILBasicType" let u_ILVolatility st = (match u_int st with 0 -> Volatile | 1 -> Nonvolatile | _ -> ufailwith st "u_ILVolatility" ) let u_ILReadonly st = (match u_int st with 0 -> ReadonlyAddress | 1 -> NormalAddress | _ -> ufailwith st "u_ILReadonly" ) let itag_nop = 0 let itag_ldarg = 1 let itag_ldnull = 2 let itag_ilzero = 3 let itag_call = 4 let itag_add = 5 let itag_sub = 6 let itag_mul = 7 let itag_div = 8 let itag_div_un = 9 let itag_rem = 10 let itag_rem_un = 11 let itag_and = 12 let itag_or = 13 let itag_xor = 14 let itag_shl = 15 let itag_shr = 16 let itag_shr_un = 17 let itag_neg = 18 let itag_not = 19 let itag_conv = 20 let itag_conv_un = 21 let itag_conv_ovf = 22 let itag_conv_ovf_un = 23 let itag_callvirt = 24 let itag_ldobj = 25 let itag_ldstr = 26 let itag_castclass = 27 let itag_isinst = 28 let itag_unbox = 29 let itag_throw = 30 let itag_ldfld = 31 let itag_ldflda = 32 let itag_stfld = 33 let itag_ldsfld = 34 let itag_ldsflda = 35 let itag_stsfld = 36 let itag_stobj = 37 let itag_box = 38 let itag_newarr = 39 let itag_ldlen = 40 let itag_ldelema = 41 let itag_ckfinite = 42 let itag_ldtoken = 43 let itag_add_ovf = 44 let itag_add_ovf_un = 45 let itag_mul_ovf = 46 let itag_mul_ovf_un = 47 let itag_sub_ovf = 48 let itag_sub_ovf_un = 49 let itag_ceq = 50 let itag_cgt = 51 let itag_cgt_un = 52 let itag_clt = 53 let itag_clt_un = 54 let itag_ldvirtftn = 55 let itag_localloc = 56 let itag_rethrow = 57 let itag_sizeof = 58 let itag_ldelem_any = 59 let itag_stelem_any = 60 let itag_unbox_any = 61 let itag_ldlen_multi = 62 let simple_instrs = [ itag_add, AI_add; itag_add_ovf, AI_add_ovf; itag_add_ovf_un, AI_add_ovf_un; itag_and, AI_and; itag_div, AI_div; itag_div_un, AI_div_un; itag_ceq, AI_ceq; itag_cgt, AI_cgt ; itag_cgt_un, AI_cgt_un; itag_clt, AI_clt; itag_clt_un, AI_clt_un; itag_mul, AI_mul ; itag_mul_ovf, AI_mul_ovf; itag_mul_ovf_un, AI_mul_ovf_un; itag_rem, AI_rem ; itag_rem_un, AI_rem_un ; itag_shl, AI_shl ; itag_shr, AI_shr ; itag_shr_un, AI_shr_un; itag_sub, AI_sub ; itag_sub_ovf, AI_sub_ovf; itag_sub_ovf_un, AI_sub_ovf_un; itag_xor, AI_xor; itag_or, AI_or; itag_neg, AI_neg; itag_not, AI_not; itag_ldnull, AI_ldnull; itag_ckfinite, AI_ckfinite; itag_nop, AI_nop; itag_localloc, I_localloc; itag_throw, I_throw; itag_ldlen, I_ldlen; itag_rethrow, I_rethrow; ] let encode_table = Dictionary<_,_>(300, HashIdentity.Structural) let _ = List.iter (fun (icode,i) -> encode_table.[i] <- icode) simple_instrs let encode_instr si = encode_table.[si] let isNoArgInstr s = encode_table.ContainsKey s let decoders = [ itag_ldarg, u_uint16 >> mkLdarg; itag_call, u_ILMethodSpec >> (fun a -> I_call (Normalcall,a,None)); itag_callvirt, u_ILMethodSpec >> (fun a -> I_callvirt (Normalcall,a,None)); itag_ldvirtftn, u_ILMethodSpec >> I_ldvirtftn; itag_conv, u_ILBasicType >> (fun a -> (AI_conv a)); itag_conv_ovf, u_ILBasicType >> (fun a -> (AI_conv_ovf a)); itag_conv_ovf_un, u_ILBasicType >> (fun a -> (AI_conv_ovf_un a)); itag_ldfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (b,c) -> I_ldfld (Aligned,b,c)); itag_ldflda, u_ILFieldSpec >> I_ldflda; itag_ldsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (a,b) -> I_ldsfld (a,b)); itag_ldsflda, u_ILFieldSpec >> I_ldsflda; itag_stfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (b,c) -> I_stfld (Aligned,b,c)); itag_stsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (a,b) -> I_stsfld (a,b)); itag_ldtoken, u_ILType >> (fun a -> I_ldtoken (ILToken.ILType a)); itag_ldstr, u_string >> I_ldstr; itag_box, u_ILType >> I_box; itag_unbox, u_ILType >> I_unbox; itag_unbox_any, u_ILType >> I_unbox_any; itag_newarr, u_tup2 u_ILArrayShape u_ILType >> (fun (a,b) -> I_newarr(a,b)); itag_stelem_any, u_tup2 u_ILArrayShape u_ILType >> (fun (a,b) -> I_stelem_any(a,b)); itag_ldelem_any, u_tup2 u_ILArrayShape u_ILType >> (fun (a,b) -> I_ldelem_any(a,b)); itag_ldelema, u_tup3 u_ILReadonly u_ILArrayShape u_ILType >> (fun (a,b,c) -> I_ldelema(a,false,b,c)); itag_castclass, u_ILType >> I_castclass; itag_isinst, u_ILType >> I_isinst; itag_ldobj, u_ILType >> (fun c -> I_ldobj (Aligned,Nonvolatile,c)); itag_stobj, u_ILType >> (fun c -> I_stobj (Aligned,Nonvolatile,c)); itag_sizeof, u_ILType >> I_sizeof; itag_ldlen_multi, u_tup2 u_int32 u_int32 >> (fun (a,b) -> EI_ldlen_multi (a,b)); itag_ilzero, u_ILType >> EI_ilzero; ] let decode_tab = let tab = Array.init 256 (fun n -> (fun st -> ufailwith st ("no decoder for instruction "+string n))) let add_instr (icode,f) = tab.[icode] <- f List.iter add_instr decoders; List.iter (fun (icode,mk) -> add_instr (icode,(fun _ -> mk))) simple_instrs; tab #if INCLUDE_METADATA_WRITER let p_ILInstr x st = match x with | si when isNoArgInstr si -> p_byte (encode_instr si) st | I_call (Normalcall,mspec,None) -> p_byte itag_call st; p_ILMethodSpec mspec st; | I_callvirt (Normalcall,mspec,None) -> p_byte itag_callvirt st; p_ILMethodSpec mspec st; | I_ldvirtftn mspec -> p_byte itag_ldvirtftn st; p_ILMethodSpec mspec st; | I_ldarg x -> p_byte itag_ldarg st; p_uint16 x st | (AI_conv a) -> p_byte itag_conv st; p_ILBasicType a st | (AI_conv_ovf a) -> p_byte itag_conv_ovf st; p_ILBasicType a st | (AI_conv_ovf_un a) -> p_byte itag_conv_ovf_un st; p_ILBasicType a st | I_ldfld (Aligned,b,c) -> p_byte itag_ldfld st; p_tup2 p_ILVolatility p_ILFieldSpec (b,c) st | I_ldsfld (a,b) -> p_byte itag_ldsfld st; p_tup2 p_ILVolatility p_ILFieldSpec (a,b) st | I_stfld (Aligned,b,c) -> p_byte itag_stfld st; p_tup2 p_ILVolatility p_ILFieldSpec (b,c) st | I_stsfld (a,b) -> p_byte itag_stsfld st; p_tup2 p_ILVolatility p_ILFieldSpec (a,b) st | I_ldflda c -> p_byte itag_ldflda st; p_ILFieldSpec c st | I_ldsflda a -> p_byte itag_ldsflda st; p_ILFieldSpec a st | I_ldtoken (ILToken.ILType ty) -> p_byte itag_ldtoken st; p_ILType ty st | I_ldstr s -> p_byte itag_ldstr st; p_string s st | I_box ty -> p_byte itag_box st; p_ILType ty st | I_unbox ty -> p_byte itag_unbox st; p_ILType ty st | I_unbox_any ty -> p_byte itag_unbox_any st; p_ILType ty st | I_newarr (a,b) -> p_byte itag_newarr st; p_tup2 p_ILArrayShape p_ILType (a,b) st | I_stelem_any (a,b) -> p_byte itag_stelem_any st; p_tup2 p_ILArrayShape p_ILType (a,b) st | I_ldelem_any (a,b) -> p_byte itag_ldelem_any st; p_tup2 p_ILArrayShape p_ILType (a,b) st | I_ldelema (a,_,b,c) -> p_byte itag_ldelema st; p_tup3 p_ILReadonly p_ILArrayShape p_ILType (a,b,c) st | I_castclass ty -> p_byte itag_castclass st; p_ILType ty st | I_isinst ty -> p_byte itag_isinst st; p_ILType ty st | I_ldobj (Aligned,Nonvolatile,c) -> p_byte itag_ldobj st; p_ILType c st | I_stobj (Aligned,Nonvolatile,c) -> p_byte itag_stobj st; p_ILType c st | I_sizeof ty -> p_byte itag_sizeof st; p_ILType ty st | EI_ldlen_multi (n,m) -> p_byte itag_ldlen_multi st; p_tup2 p_int32 p_int32 (n,m) st | EI_ilzero a -> p_byte itag_ilzero st; p_ILType a st | i -> pfailwith st (sprintf "the IL instruction '%+A' cannot be emitted" i) #endif let u_ILInstr st = let n = u_byte st decode_tab.[n] st //--------------------------------------------------------------------------- // Pickle/unpickle for F# types and module signatures //--------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER // TODO: remove all pickling of maps let p_Map pk pv = p_wrap Map.toList (p_list (p_tup2 pk pv)) let p_qlist pv = p_wrap QueueList.toList (p_list pv) let p_namemap p = p_Map p_string p #endif // TODO: remove all pickling of maps let u_Map uk uv = u_wrap Map.ofList (u_list (u_tup2 uk uv)) let u_qlist uv = u_wrap QueueList.ofList (u_list uv) let u_namemap u = u_Map u_string u #if INCLUDE_METADATA_WRITER let p_pos (x: pos) st = p_tup2 p_int p_int (x.Line,x.Column) st let p_range (x: range) st = p_tup3 p_string p_pos p_pos (x.FileName, x.Start, x.End) st let p_dummy_range : range pickler = fun _x _st -> () let p_ident (x: Ident) st = p_tup2 p_string p_range (x.idText,x.idRange) st let p_xmldoc (XmlDoc x) st = p_array p_string x st #endif let u_pos st = let a = u_int st in let b = u_int st in mkPos a b let u_range st = let a = u_string st in let b = u_pos st in let c = u_pos st in mkRange a b c // Most ranges (e.g. on optimization expressions) can be elided from stored data let u_dummy_range : range unpickler = fun _st -> range0 let u_ident st = let a = u_string st in let b = u_range st in ident(a,b) let u_xmldoc st = XmlDoc (u_array u_string st) #if INCLUDE_METADATA_WRITER let p_local_item_ref ctxt tab st = p_osgn_ref ctxt tab st let p_tcref ctxt (x:EntityRef) st = match x with | ERefLocal x -> p_byte 0 st; p_local_item_ref ctxt st.otycons x st | ERefNonLocal x -> p_byte 1 st; p_nleref x st let p_ucref (UCRef(a,b)) st = p_tup2 (p_tcref "ucref") p_string (a,b) st let p_rfref (RFRef(a,b)) st = p_tup2 (p_tcref "rfref") p_string (a,b) st let p_tpref x st = p_local_item_ref "typar" st.otypars x st #endif let u_local_item_ref tab st = u_osgn_ref tab st let u_tcref st = let tag = u_byte st match tag with | 0 -> u_local_item_ref st.itycons st |> ERefLocal | 1 -> u_nleref st |> ERefNonLocal | _ -> ufailwith st "u_item_ref" let u_ucref st = let a,b = u_tup2 u_tcref u_string st in UCRef(a,b) let u_rfref st = let a,b = u_tup2 u_tcref u_string st in RFRef(a,b) let u_tpref st = u_local_item_ref st.itypars st #if INCLUDE_METADATA_WRITER // forward reference let fill_p_typ,p_typ = p_hole() let p_typs = (p_list p_typ) let fill_p_attribs,p_attribs = p_hole() let p_nonlocal_val_ref {EnclosingEntity=a;ItemKey= key } st = let pkey = key.PartialKey p_tcref "nlvref" a st; p_option p_string pkey.MemberParentMangledName st; p_bool pkey.MemberIsOverride st; p_string pkey.LogicalName st; p_int pkey.TotalArgCount st; p_option p_typ key.TypeForLinkage st let rec p_vref ctxt x st = match x with | VRefLocal x -> p_byte 0 st; p_local_item_ref ctxt st.ovals x st | VRefNonLocal x -> p_byte 1 st; p_nonlocal_val_ref x st let p_vrefs ctxt = p_list (p_vref ctxt) #endif let fill_u_typ,u_typ = u_hole() let u_typs = (u_list u_typ) let fill_u_attribs,u_attribs = u_hole() let u_nonlocal_val_ref st = let a = u_tcref st let b1 = u_option u_string st let b2 = u_bool st let b3 = u_string st let c = u_int st let d = u_option u_typ st {EnclosingEntity = a; ItemKey=ValLinkageFullKey({ MemberParentMangledName=b1; MemberIsOverride=b2;LogicalName=b3; TotalArgCount=c }, d) } let u_vref st = let tag = u_byte st match tag with | 0 -> u_local_item_ref st.ivals st |> (fun x -> VRefLocal x) | 1 -> u_nonlocal_val_ref st |> (fun x -> VRefNonLocal x) | _ -> ufailwith st "u_item_ref" let u_vrefs = u_list u_vref #if INCLUDE_METADATA_WRITER let p_kind x st = p_byte (match x with | TyparKind.Type -> 0 | TyparKind.Measure -> 1) st let p_member_kind x st = p_byte (match x with | MemberKind.Member -> 0 | MemberKind.PropertyGet -> 1 | MemberKind.PropertySet -> 2 | MemberKind.Constructor -> 3 | MemberKind.ClassConstructor -> 4 | MemberKind.PropertyGetSet -> pfailwith st "pickling: MemberKind.PropertyGetSet only expected in parse trees") st #endif let u_kind st = match u_byte st with | 0 -> TyparKind.Type | 1 -> TyparKind.Measure | _ -> ufailwith st "u_kind" let u_member_kind st = match u_byte st with | 0 -> MemberKind.Member | 1 -> MemberKind.PropertyGet | 2 -> MemberKind.PropertySet | 3 -> MemberKind.Constructor | 4 -> MemberKind.ClassConstructor | _ -> ufailwith st "u_member_kind" #if INCLUDE_METADATA_WRITER let p_MemberFlags x st = p_tup6 p_bool p_bool p_bool p_bool p_bool p_member_kind (x.IsInstance, false (* _x3UnusedBoolInFormat *), x.IsDispatchSlot, x.IsOverrideOrExplicitImpl, x.IsFinal, x.MemberKind) st #endif let u_MemberFlags st = let x2,_x3UnusedBoolInFormat,x4,x5,x6,x7 = u_tup6 u_bool u_bool u_bool u_bool u_bool u_member_kind st { IsInstance=x2; IsDispatchSlot=x4; IsOverrideOrExplicitImpl=x5; IsFinal=x6; MemberKind=x7} let fill_u_expr_fwd,u_expr_fwd = u_hole() #if INCLUDE_METADATA_WRITER let fill_p_expr_fwd,p_expr_fwd = p_hole() let p_trait_sln sln st = match sln with | ILMethSln(a,b,c,d) -> p_byte 0 st; p_tup4 p_typ (p_option p_ILTypeRef) p_ILMethodRef p_typs (a,b,c,d) st | FSMethSln(a,b,c) -> p_byte 1 st; p_tup3 p_typ (p_vref "trait") p_typs (a,b,c) st | BuiltInSln -> p_byte 2 st | ClosedExprSln expr -> p_byte 3 st; p_expr_fwd expr st | FSRecdFieldSln(a,b,c) -> p_byte 4 st; p_tup3 p_typs p_rfref p_bool (a,b,c) st let p_trait (TTrait(a,b,c,d,e,f)) st = p_tup6 p_typs p_string p_MemberFlags p_typs (p_option p_typ) (p_option p_trait_sln) (a,b,c,d,e,!f) st #endif // We have to store trait solutions since they can occur in optimization data let u_trait_sln st = let tag = u_byte st match tag with | 0 -> let (a,b,c,d) = u_tup4 u_typ (u_option u_ILTypeRef) u_ILMethodRef u_typs st ILMethSln(a,b,c,d) | 1 -> let (a,b,c) = u_tup3 u_typ u_vref u_typs st FSMethSln(a,b,c) | 2 -> BuiltInSln | 3 -> ClosedExprSln (u_expr_fwd st) | 4 -> let (a,b,c) = u_tup3 u_typs u_rfref u_bool st FSRecdFieldSln(a,b,c) | _ -> ufailwith st "u_trait_sln" let u_trait st = let a,b,c,d,e,f = u_tup6 u_typs u_string u_MemberFlags u_typs (u_option u_typ) (u_option u_trait_sln) st TTrait (a,b,c,d,e,ref f) #if INCLUDE_METADATA_WRITER let rec p_measure_expr unt st = let unt = stripUnitEqnsAux false unt match unt with | MeasureCon tcref -> p_byte 0 st; p_tcref "measure" tcref st | MeasureInv x -> p_byte 1 st; p_measure_expr x st | MeasureProd(x1,x2) -> p_byte 2 st; p_measure_expr x1 st; p_measure_expr x2 st | MeasureVar(v) -> p_byte 3 st; p_tpref v st | MeasureOne -> p_byte 4 st #endif let rec u_measure_expr st = let tag = u_byte st match tag with | 0 -> let a = u_tcref st in MeasureCon a | 1 -> let a = u_measure_expr st in MeasureInv a | 2 -> let a,b = u_tup2 u_measure_expr u_measure_expr st in MeasureProd (a,b) | 3 -> let a = u_tpref st in MeasureVar a | 4 -> MeasureOne | _ -> ufailwith st "u_measure_expr" #if INCLUDE_METADATA_WRITER let p_typar_constraint x st = match x with | TyparConstraint.CoercesTo (a,_) -> p_byte 0 st; p_typ a st | TyparConstraint.MayResolveMember(traitInfo,_) -> p_byte 1 st; p_trait traitInfo st | TyparConstraint.DefaultsTo(_,rty,_) -> p_byte 2 st; p_typ rty st | TyparConstraint.SupportsNull _ -> p_byte 3 st | TyparConstraint.IsNonNullableStruct _ -> p_byte 4 st | TyparConstraint.IsReferenceType _ -> p_byte 5 st | TyparConstraint.RequiresDefaultConstructor _ -> p_byte 6 st | TyparConstraint.SimpleChoice(tys,_) -> p_byte 7 st; p_typs tys st | TyparConstraint.IsEnum(ty,_) -> p_byte 8 st; p_typ ty st | TyparConstraint.IsDelegate(aty,bty,_) -> p_byte 9 st; p_typ aty st; p_typ bty st | TyparConstraint.SupportsComparison _ -> p_byte 10 st | TyparConstraint.SupportsEquality _ -> p_byte 11 st | TyparConstraint.IsUnmanaged _ -> p_byte 12 st let p_typar_constraints = (p_list p_typar_constraint) #endif let u_typar_constraint st = let tag = u_byte st match tag with | 0 -> u_typ st |> (fun a _ -> TyparConstraint.CoercesTo (a,range0) ) | 1 -> u_trait st |> (fun a _ -> TyparConstraint.MayResolveMember(a,range0)) | 2 -> u_typ st |> (fun a ridx -> TyparConstraint.DefaultsTo(ridx,a,range0)) | 3 -> (fun _ -> TyparConstraint.SupportsNull range0) | 4 -> (fun _ -> TyparConstraint.IsNonNullableStruct range0) | 5 -> (fun _ -> TyparConstraint.IsReferenceType range0) | 6 -> (fun _ -> TyparConstraint.RequiresDefaultConstructor range0) | 7 -> u_typs st |> (fun a _ -> TyparConstraint.SimpleChoice(a,range0)) | 8 -> u_typ st |> (fun a _ -> TyparConstraint.IsEnum(a,range0)) | 9 -> u_tup2 u_typ u_typ st |> (fun (a,b) _ -> TyparConstraint.IsDelegate(a,b,range0)) | 10 -> (fun _ -> TyparConstraint.SupportsComparison range0) | 11 -> (fun _ -> TyparConstraint.SupportsEquality range0) | 12 -> (fun _ -> TyparConstraint.IsUnmanaged range0) | _ -> ufailwith st "u_typar_constraint" let u_typar_constraints = (u_list_revi u_typar_constraint) #if INCLUDE_METADATA_WRITER let p_typar_spec_data (x:TyparData) st = p_tup5 p_ident p_attribs p_int64 p_typar_constraints p_xmldoc (x.typar_id,x.typar_attribs,int64 x.typar_flags.PickledBits,x.typar_constraints,x.typar_xmldoc) st let p_typar_spec (x:Typar) st = //Disabled, workaround for bug 2721: if x.Rigidity <> TyparRigidity.Rigid then warning(Error(sprintf "p_typar_spec: typar#%d is not rigid" x.Stamp, x.Range)); if x.IsFromError then warning(Error((0,"p_typar_spec: from error"), x.Range)); p_osgn_decl st.otypars p_typar_spec_data x st let p_typar_specs = (p_list p_typar_spec) #endif let u_typar_spec_data st = let a,c,d,e,g = u_tup5 u_ident u_attribs u_int64 u_typar_constraints u_xmldoc st { typar_id=a; typar_il_name=None; typar_stamp=newStamp(); typar_attribs=c; typar_flags=TyparFlags(int32 d); typar_constraints=e; typar_solution=None; typar_xmldoc=g } let u_typar_spec st = u_osgn_decl st.itypars u_typar_spec_data st let u_typar_specs = (u_list u_typar_spec) #if INCLUDE_METADATA_WRITER let _ = fill_p_typ (fun ty st -> let ty = stripTyparEqns ty match ty with | TType_tuple l -> p_byte 0 st; p_typs l st | TType_app(ERefNonLocal nleref,[]) -> p_byte 1 st; p_simpletyp nleref st | TType_app (tc,tinst) -> p_byte 2 st; p_tup2 (p_tcref "typ") p_typs (tc,tinst) st | TType_fun (d,r) -> p_byte 3 st; p_tup2 p_typ p_typ (d,r) st | TType_var r -> p_byte 4 st; p_tpref r st | TType_forall (tps,r) -> p_byte 5 st; p_tup2 p_typar_specs p_typ (tps,r) st | TType_measure unt -> p_byte 6 st; p_measure_expr unt st | TType_ucase (uc,tinst) -> p_byte 7 st; p_tup2 p_ucref p_typs (uc,tinst) st) #endif let _ = fill_u_typ (fun st -> let tag = u_byte st match tag with | 0 -> let l = u_typs st in TType_tuple l | 1 -> u_simpletyp st | 2 -> let tc = u_tcref st in let tinst = u_typs st in TType_app (tc,tinst) | 3 -> let d = u_typ st in let r = u_typ st in TType_fun (d,r) | 4 -> let r = u_tpref st in r.AsType | 5 -> let tps = u_typar_specs st in let r = u_typ st in TType_forall (tps,r) | 6 -> let unt = u_measure_expr st in TType_measure unt | 7 -> let uc = u_ucref st in let tinst = u_typs st in TType_ucase (uc,tinst) | _ -> ufailwith st "u_typ") #if INCLUDE_METADATA_WRITER let fill_p_binds,p_binds = p_hole() let fill_p_targets,p_targets = p_hole() let fill_p_Exprs,p_Exprs = p_hole() let fill_p_FlatExprs,p_FlatExprs = p_hole() let fill_p_constraints,p_constraints = p_hole() let fill_p_Vals,p_Vals = p_hole() let fill_p_FlatVals,p_FlatVals = p_hole() #endif let fill_u_binds,u_binds = u_hole() let fill_u_targets,u_targets = u_hole() let fill_u_Exprs,u_Exprs = u_hole() let fill_u_FlatExprs,u_FlatExprs = u_hole() let fill_u_constraints,u_constraints = u_hole() let fill_u_Vals,u_Vals = u_hole() let fill_u_FlatVals,u_FlatVals = u_hole() #if INCLUDE_METADATA_WRITER let p_ArgReprInfo (x:ArgReprInfo) st = p_attribs x.Attribs st; p_option p_ident x.Name st let p_TyparReprInfo (TyparReprInfo(a,b)) st = p_ident a st; p_kind b st let p_ValReprInfo (ValReprInfo (a,args,ret)) st = p_list p_TyparReprInfo a st; p_list (p_list p_ArgReprInfo) args st; p_ArgReprInfo ret st #endif let u_ArgReprInfo st = let a = u_attribs st let b = u_option u_ident st match a,b with | [],None -> ValReprInfo.unnamedTopArg1 | _ -> { Attribs = a; Name = b } let u_TyparReprInfo st = let a = u_ident st let b = u_kind st TyparReprInfo(a,b) let u_ValReprInfo st = let a = u_list u_TyparReprInfo st let b = u_list (u_list u_ArgReprInfo) st let c = u_ArgReprInfo st ValReprInfo (a,b,c) #if INCLUDE_METADATA_WRITER let p_ranges x st = p_option (p_tup2 p_range p_range) x st let p_istype x st = match x with | FSharpModuleWithSuffix -> p_byte 0 st | ModuleOrType -> p_byte 1 st | Namespace -> p_byte 2 st let p_cpath (CompPath(a,b)) st = p_tup2 p_ILScopeRef (p_list (p_tup2 p_string p_istype)) (a,b) st #endif let u_ranges st = u_option (u_tup2 u_range u_range) st let u_istype st = let tag = u_byte st match tag with | 0 -> FSharpModuleWithSuffix | 1 -> ModuleOrType | 2 -> Namespace | _ -> ufailwith st "u_istype" let u_cpath st = let a,b = u_tup2 u_ILScopeRef (u_list (u_tup2 u_string u_istype)) st in (CompPath(a,b)) let rec dummy x = x #if INCLUDE_METADATA_WRITER and p_tycon_repr x st = // The leading "p_byte 1" and "p_byte 0" come from the F# 2.0 format, which used an option value at this point. match x with | TRecdRepr fs -> p_byte 1 st; p_byte 0 st; p_rfield_table fs st; false | TFiniteUnionRepr x -> p_byte 1 st; p_byte 1 st; p_list p_unioncase_spec (Array.toList x.CasesTable.CasesByIndex) st; false | TAsmRepr ilty -> p_byte 1 st; p_byte 2 st; p_ILType ilty st; false | TFsObjModelRepr r -> p_byte 1 st; p_byte 3 st; p_tycon_objmodel_data r st; false | TMeasureableRepr ty -> p_byte 1 st; p_byte 4 st; p_typ ty st; false | TNoRepr -> p_byte 0 st; false #if EXTENSIONTYPING | TProvidedTypeExtensionPoint info -> if info.IsErased then // Pickle erased type definitions as a NoRepr p_byte 0 st; false else // Pickle generated type definitions as a TAsmRepr p_byte 1 st; p_byte 2 st; p_ILType (mkILBoxedType(ILTypeSpec.Create(ExtensionTyping.GetILTypeRefOfProvidedType(info.ProvidedType ,range0),emptyILGenericArgs))) st; true | TProvidedNamespaceExtensionPoint _ -> p_byte 0 st; false #endif | TILObjModelRepr (_,_,td) -> error (Failure("Unexpected IL type definition"+td.Name)) and p_tycon_objmodel_data x st = p_tup3 p_tycon_objmodel_kind (p_vrefs "vslots") p_rfield_table (x.fsobjmodel_kind, x.fsobjmodel_vslots, x.fsobjmodel_rfields) st and p_unioncase_spec x st = p_tup7 p_rfield_table p_typ p_string p_ident p_attribs p_string p_access (x.FieldTable,x.ReturnType,x.CompiledName,x.Id,x.Attribs,x.XmlDocSig,x.Accessibility) st and p_exnc_spec_data x st = p_entity_spec_data x st and p_exnc_repr x st = match x with | TExnAbbrevRepr x -> p_byte 0 st; (p_tcref "exn abbrev") x st | TExnAsmRepr x -> p_byte 1 st; p_ILTypeRef x st | TExnFresh x -> p_byte 2 st; p_rfield_table x st | TExnNone -> p_byte 3 st and p_exnc_spec x st = p_tycon_spec x st and p_access (TAccess n) st = p_list p_cpath n st and p_recdfield_spec x st = p_tup11 p_bool p_bool p_typ p_bool p_bool (p_option p_const) p_ident p_attribs p_attribs p_string p_access (x.rfield_mutable,x.rfield_volatile,x.rfield_type,x.rfield_static,x.rfield_secret,x.rfield_const,x.rfield_id,x.rfield_pattribs,x.rfield_fattribs,x.rfield_xmldocsig,x.rfield_access) st and p_rfield_table x st = p_list p_recdfield_spec (Array.toList x.FieldsByIndex) st and p_entity_spec_data (x:EntityData) st = p_typar_specs (x.entity_typars.Force(x.entity_range)) st p_string x.entity_logical_name st p_option p_string x.entity_compiled_name st p_range x.entity_range st p_option p_pubpath x.entity_pubpath st p_access x.entity_accessiblity st p_access x.entity_tycon_repr_accessibility st p_attribs x.entity_attribs st let flagBit = p_tycon_repr x.entity_tycon_repr st p_option p_typ x.entity_tycon_abbrev st p_tcaug x.entity_tycon_tcaug st p_string x.entity_xmldocsig st p_kind x.entity_kind st p_int64 (x.entity_flags.PickledBits ||| (if flagBit then EntityFlags.ReservedBitForPickleFormatTyconReprFlag else 0L)) st p_option p_cpath x.entity_cpath st p_lazy p_modul_typ x.entity_modul_contents st p_exnc_repr x.entity_exn_info st p_space 1 space st and p_tcaug p st = p_tup9 (p_option (p_tup2 (p_vref "compare_obj") (p_vref "compare"))) (p_option (p_vref "compare_withc")) (p_option (p_tup3 (p_vref "hash_obj") (p_vref "hash_withc") (p_vref "equals_withc"))) (p_option (p_tup2 (p_vref "hash") (p_vref "equals"))) (p_list (p_tup2 p_string (p_vref "adhoc"))) (p_list (p_tup3 p_typ p_bool p_dummy_range)) (p_option p_typ) p_bool (p_space 1) (p.tcaug_compare, p.tcaug_compare_withc, p.tcaug_hash_and_equals_withc, p.tcaug_equals, (p.tcaug_adhoc_list |> ResizeArray.toList // Explicit impls of interfaces only get kept in the adhoc list // in order to get check the well-formedness of an interface. // Keeping them across assembly boundaries is not valid, because relinking their ValRefs // does not work correctly (they may get incorrectly relinked to a default member) |> List.filter (fun (isExplicitImpl,_) -> not isExplicitImpl) |> List.map (fun (_,vref) -> vref.LogicalName, vref)), p.tcaug_interfaces, p.tcaug_super, p.tcaug_abstract, space) st and p_tycon_spec x st = p_osgn_decl st.otycons p_entity_spec_data x st and p_parentref x st = match x with | ParentNone -> p_byte 0 st | Parent x -> p_byte 1 st; p_tcref "parent tycon" x st and p_attribkind x st = match x with | ILAttrib x -> p_byte 0 st; p_ILMethodRef x st | FSAttrib x -> p_byte 1 st; p_vref "attrib" x st and p_attrib (Attrib (a,b,c,d,e,_targets,f)) st = // AttributeTargets are not preserved p_tup6 (p_tcref "attrib") p_attribkind (p_list p_attrib_expr) (p_list p_attrib_arg) p_bool p_dummy_range (a,b,c,d,e,f) st and p_attrib_expr (AttribExpr(e1,e2)) st = p_tup2 p_expr p_expr (e1,e2) st and p_attrib_arg (AttribNamedArg(a,b,c,d)) st = p_tup4 p_string p_typ p_bool p_attrib_expr (a,b,c,d) st and p_member_info x st = p_tup4 (p_tcref "member_info") p_MemberFlags (p_list p_slotsig) p_bool (x.ApparentParent,x.MemberFlags,x.ImplementedSlotSigs,x.IsImplemented) st and p_tycon_objmodel_kind x st = match x with | TTyconClass -> p_byte 0 st | TTyconInterface -> p_byte 1 st | TTyconStruct -> p_byte 2 st | TTyconDelegate ss -> p_byte 3 st; p_slotsig ss st | TTyconEnum -> p_byte 4 st and p_mustinline x st = p_byte (match x with | ValInline.PseudoVal -> 0 | ValInline.Always -> 1 | ValInline.Optional -> 2 | ValInline.Never -> 3) st and p_basethis x st = p_byte (match x with | BaseVal -> 0 | CtorThisVal -> 1 | NormalVal -> 2 | MemberThisVal -> 3) st and p_vrefFlags x st = match x with | NormalValUse -> p_byte 0 st | CtorValUsedAsSuperInit -> p_byte 1 st | CtorValUsedAsSelfInit -> p_byte 2 st | PossibleConstrainedCall ty -> p_byte 3 st; p_typ ty st | VSlotDirectCall -> p_byte 4 st and p_ValData x st = //if verbose then dprintf "p_ValData, nm = %s, stamp #%d, ty = %s\n" x.val_name x.val_stamp (DebugPrint.showType x.val_type); p_tup13 p_string (p_option p_string) p_ranges p_typ p_int64 (p_option p_member_info) p_attribs (p_option p_ValReprInfo) p_string p_access p_parentref (p_option p_const) (p_space 1) ( x.val_logical_name, x.val_compiled_name, // only keep range information on published values, not on optimization data (if x.val_repr_info.IsSome then Some(x.val_range, x.val_defn_range) else None), x.val_type, x.val_flags.PickledBits, x.val_member_info, x.val_attribs, x.val_repr_info, x.val_xmldocsig, x.val_access, x.val_actual_parent, x.val_const, space) st and p_Val x st = p_osgn_decl st.ovals p_ValData x st and p_modul_typ (x: ModuleOrNamespaceType) st = p_tup3 p_istype (p_qlist p_Val) (p_qlist p_tycon_spec) (x.ModuleOrNamespaceKind,x.AllValsAndMembers,x.AllEntities) st #endif and u_tycon_repr st = let tag1 = u_byte st match tag1 with | 0 -> (fun _flagBit -> TNoRepr) | 1 -> let tag2 = u_byte st match tag2 with | 0 -> let v = u_rfield_table st (fun _flagBit -> TRecdRepr v) | 1 -> let v = u_list u_unioncase_spec st (fun _flagBit -> MakeUnionRepr v) | 2 -> let v = u_ILType st // This is the F# 3.0 extension to the format used for F# provider-generated types, which record an ILTypeRef in the format // You can think of an F# 2.0 reader as always taking the path where 'flagBit' is false. Thus the F# 2.0 reader will // interpret provider-generated types as TAsmRepr. (fun flagBit -> if flagBit then let iltref = v.TypeRef try let rec find acc enclosingTypeNames (tdefs:ILTypeDefs) = match enclosingTypeNames with | [] -> List.rev acc, tdefs.FindByName iltref.Name | h::t -> let nestedTypeDef = tdefs.FindByName h find (tdefs.FindByName h :: acc) t nestedTypeDef.NestedTypes let nestedILTypeDefs,ilTypeDef = find [] iltref.Enclosing st.iILModule.TypeDefs TILObjModelRepr(st.iilscope,nestedILTypeDefs,ilTypeDef) with _ -> System.Diagnostics.Debug.Assert(false, sprintf "failed to find IL backing metadata for cross-assembly generated type %s" iltref.FullName) TNoRepr else TAsmRepr v) | 3 -> let v = u_tycon_objmodel_data st (fun _flagBit -> TFsObjModelRepr v) | 4 -> let v = u_typ st (fun _flagBit -> TMeasureableRepr v) | _ -> ufailwith st "u_tycon_repr" | _ -> ufailwith st "u_tycon_repr" and u_tycon_objmodel_data st = let x1,x2,x3 = u_tup3 u_tycon_objmodel_kind u_vrefs u_rfield_table st {fsobjmodel_kind=x1; fsobjmodel_vslots=x2; fsobjmodel_rfields=x3 } and u_unioncase_spec st = let a,b,c,d,e,f,i = u_tup7 u_rfield_table u_typ u_string u_ident u_attribs u_string u_access st {FieldTable=a; ReturnType=b; CompiledName=c; Id=d; Attribs=e;XmlDoc=XmlDoc.Empty;XmlDocSig=f;Accessibility=i } and u_exnc_spec_data st = u_entity_spec_data st and u_exnc_repr st = let tag = u_byte st match tag with | 0 -> u_tcref st |> TExnAbbrevRepr | 1 -> u_ILTypeRef st |> TExnAsmRepr | 2 -> u_rfield_table st |> TExnFresh | 3 -> TExnNone | _ -> ufailwith st "u_exnc_repr" and u_exnc_spec st = u_tycon_spec st and u_access st = match u_list u_cpath st with | [] -> taccessPublic // save unnecessary allocations | res -> TAccess res and u_recdfield_spec st = let a,b,c1,c2,c2b,c3,d,e1,e2,f,g = u_tup11 u_bool u_bool u_typ u_bool u_bool (u_option u_const) u_ident u_attribs u_attribs u_string u_access st { rfield_mutable=a; rfield_volatile=b; rfield_type=c1; rfield_static=c2; rfield_secret=c2b; rfield_const=c3; rfield_id=d; rfield_pattribs=e1; rfield_fattribs=e2; rfield_xmldoc=XmlDoc.Empty; rfield_xmldocsig=f; rfield_access=g } and u_rfield_table st = MakeRecdFieldsTable (u_list u_recdfield_spec st) and u_entity_spec_data st : EntityData = let x1,x2a,x2b,x2c,x3,(x4a,x4b),x6,x7f,x8,x9,x10,x10b,x11,x12,x13,x14,_space = u_tup17 u_typar_specs u_string (u_option u_string) u_range (u_option u_pubpath) (u_tup2 u_access u_access) u_attribs u_tycon_repr (u_option u_typ) u_tcaug u_string u_kind u_int64 (u_option u_cpath ) (u_lazy u_modul_typ) u_exnc_repr (u_space 1) st // We use a bit that was unused in the F# 2.0 format to indicate two possible representations in the F# 3.0 tycon_repr format let x7 = x7f (x11 &&& EntityFlags.ReservedBitForPickleFormatTyconReprFlag <> 0L) let x11 = x11 &&& ~~~EntityFlags.ReservedBitForPickleFormatTyconReprFlag { entity_typars=LazyWithContext.NotLazy x1; entity_stamp=newStamp(); entity_logical_name=x2a; entity_compiled_name=x2b; entity_range=x2c; entity_pubpath=x3; entity_accessiblity=x4a; entity_tycon_repr_accessibility=x4b; entity_attribs=x6; entity_tycon_repr=x7; entity_tycon_abbrev=x8; entity_tycon_tcaug=x9; entity_xmldoc=XmlDoc.Empty; entity_xmldocsig=x10; entity_kind=x10b; entity_flags=EntityFlags(x11); entity_cpath=x12; entity_modul_contents= x13; entity_exn_info=x14; entity_il_repr_cache=newCache(); } and u_tcaug st = let a1,a2,a3,b2,c,d,e,g,_space = u_tup9 (u_option (u_tup2 u_vref u_vref)) (u_option u_vref) (u_option (u_tup3 u_vref u_vref u_vref)) (u_option (u_tup2 u_vref u_vref)) (u_list (u_tup2 u_string u_vref)) (u_list (u_tup3 u_typ u_bool u_dummy_range)) (u_option u_typ) u_bool (u_space 1) st {tcaug_compare=a1; tcaug_compare_withc=a2; tcaug_hash_and_equals_withc=a3; tcaug_equals=b2; // only used for code generation and checking - hence don't care about the values when reading back in tcaug_hasObjectGetHashCode=false; tcaug_adhoc_list= new ResizeArray<_> (c |> List.map (fun (_,vref) -> (false, vref))); tcaug_adhoc=NameMultiMap.ofList c; tcaug_interfaces=d; tcaug_super=e; // pickled type definitions are always closed (i.e. no more intrinsic members allowed) tcaug_closed=true; tcaug_abstract=g} and u_tycon_spec st = u_osgn_decl st.itycons u_entity_spec_data st and u_parentref st = let tag = u_byte st match tag with | 0 -> ParentNone | 1 -> u_tcref st |> Parent | _ -> ufailwith st "u_attribkind" and u_attribkind st = let tag = u_byte st match tag with | 0 -> u_ILMethodRef st |> ILAttrib | 1 -> u_vref st |> FSAttrib | _ -> ufailwith st "u_attribkind" and u_attrib st : Attrib = let a,b,c,d,e,f = u_tup6 u_tcref u_attribkind (u_list u_attrib_expr) (u_list u_attrib_arg) u_bool u_dummy_range st Attrib(a,b,c,d,e,None,f) // AttributeTargets are not preserved and u_attrib_expr st = let a,b = u_tup2 u_expr u_expr st AttribExpr(a,b) and u_attrib_arg st = let a,b,c,d = u_tup4 u_string u_typ u_bool u_attrib_expr st AttribNamedArg(a,b,c,d) and u_member_info st = let x2,x3,x4,x5 = u_tup4 u_tcref u_MemberFlags (u_list u_slotsig) u_bool st { ApparentParent=x2; MemberFlags=x3; ImplementedSlotSigs=x4; IsImplemented=x5 } and u_tycon_objmodel_kind st = let tag = u_byte st match tag with | 0 -> TTyconClass | 1 -> TTyconInterface | 2 -> TTyconStruct | 3 -> u_slotsig st |> TTyconDelegate | 4 -> TTyconEnum | _ -> ufailwith st "u_tycon_objmodel_kind" and u_mustinline st = match u_byte st with | 0 -> ValInline.PseudoVal | 1 -> ValInline.Always | 2 -> ValInline.Optional | 3 -> ValInline.Never | _ -> ufailwith st "u_mustinline" and u_basethis st = match u_byte st with | 0 -> BaseVal | 1 -> CtorThisVal | 2 -> NormalVal | 3 -> MemberThisVal | _ -> ufailwith st "u_basethis" and u_vrefFlags st = match u_byte st with | 0 -> NormalValUse | 1 -> CtorValUsedAsSuperInit | 2 -> CtorValUsedAsSelfInit | 3 -> PossibleConstrainedCall (u_typ st) | 4 -> VSlotDirectCall | _ -> ufailwith st "u_vrefFlags" and u_ValData st = let x1,x1z,x1a,x2,x4,x8,x9,x10,x12,x13,x13b,x14,_space = u_tup13 u_string (u_option u_string) u_ranges u_typ u_int64 (u_option u_member_info) u_attribs (u_option u_ValReprInfo) u_string u_access u_parentref (u_option u_const) (u_space 1) st { val_logical_name=x1; val_compiled_name=x1z; val_range=(match x1a with None -> range0 | Some(a,_) -> a); val_defn_range=(match x1a with None -> range0 | Some(_,b) -> b); val_type=x2; val_stamp=newStamp(); val_flags=ValFlags(x4); val_defn = None; val_member_info=x8; val_attribs=x9; val_repr_info=x10; val_xmldoc=XmlDoc.Empty; val_xmldocsig=x12; val_access=x13; val_actual_parent=x13b; val_const=x14; } and u_Val st = u_osgn_decl st.ivals u_ValData st and u_modul_typ st = let x1,x3,x5 = u_tup3 u_istype (u_qlist u_Val) (u_qlist u_tycon_spec) st ModuleOrNamespaceType(x1,x3,x5) //--------------------------------------------------------------------------- // Pickle/unpickle for F# expressions (for optimization data) //--------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER and p_const x st = match x with | Const.Bool x -> p_byte 0 st; p_bool x st | Const.SByte x -> p_byte 1 st; p_int8 x st | Const.Byte x -> p_byte 2 st; p_uint8 x st | Const.Int16 x -> p_byte 3 st; p_int16 x st | Const.UInt16 x -> p_byte 4 st; p_uint16 x st | Const.Int32 x -> p_byte 5 st; p_int32 x st | Const.UInt32 x -> p_byte 6 st; p_uint32 x st | Const.Int64 x -> p_byte 7 st; p_int64 x st | Const.UInt64 x -> p_byte 8 st; p_uint64 x st | Const.IntPtr x -> p_byte 9 st; p_int64 x st | Const.UIntPtr x -> p_byte 10 st; p_uint64 x st | Const.Single x -> p_byte 11 st; p_single x st | Const.Double x -> p_byte 12 st; p_int64 (bits_of_float x) st | Const.Char c -> p_byte 13 st; p_char c st | Const.String s -> p_byte 14 st; p_string s st | Const.Unit -> p_byte 15 st | Const.Zero -> p_byte 16 st | Const.Decimal s -> p_byte 17 st; p_array p_int32 (System.Decimal.GetBits(s)) st #endif and u_const st = let tag = u_byte st match tag with | 0 -> u_bool st |> Const.Bool | 1 -> u_int8 st |> Const.SByte | 2 -> u_uint8 st |> Const.Byte | 3 -> u_int16 st |> Const.Int16 | 4 -> u_uint16 st |> Const.UInt16 | 5 -> u_int32 st |> Const.Int32 | 6 -> u_uint32 st |> Const.UInt32 | 7 -> u_int64 st |> Const.Int64 | 8 -> u_uint64 st |> Const.UInt64 | 9 -> u_int64 st |> Const.IntPtr | 10 -> u_uint64 st |> Const.UIntPtr | 11 -> u_single st |> Const.Single | 12 -> u_int64 st |> float_of_bits |> Const.Double | 13 -> u_char st |> Const.Char | 14 -> u_string st |> Const.String | 15 -> Const.Unit | 16 -> Const.Zero | 17 -> u_array u_int32 st |> (fun bits -> Const.Decimal (new System.Decimal(bits))) | _ -> ufailwith st "u_const" #if INCLUDE_METADATA_WRITER and p_dtree x st = match x with | TDSwitch (a,b,c,d) -> p_byte 0 st; p_tup4 p_expr (p_list p_dtree_case) (p_option p_dtree) p_dummy_range (a,b,c,d) st | TDSuccess (a,b) -> p_byte 1 st; p_tup2 p_FlatExprs p_int (a,b) st | TDBind (a,b) -> p_byte 2 st; p_tup2 p_bind p_dtree (a,b) st and p_dtree_case (TCase(a,b)) st = p_tup2 p_dtree_discrim p_dtree (a,b) st and p_dtree_discrim x st = match x with | Test.UnionCase (ucref,tinst) -> p_byte 0 st; p_tup2 p_ucref p_typs (ucref,tinst) st | Test.Const c -> p_byte 1 st; p_const c st | Test.IsNull -> p_byte 2 st | Test.IsInst (srcty,tgty) -> p_byte 3 st; p_typ srcty st; p_typ tgty st | Test.ArrayLength (n,ty) -> p_byte 4 st; p_tup2 p_int p_typ (n,ty) st | Test.ActivePatternCase _ -> pfailwith st "Test.ActivePatternCase: only used during pattern match compilation" and p_target (TTarget(a,b,_)) st = p_tup2 p_FlatVals p_expr (a,b) st and p_bind (TBind(a,b,_)) st = p_tup2 p_Val p_expr (a,b) st and p_lval_op_kind x st = p_byte (match x with LGetAddr -> 0 | LByrefGet -> 1 | LSet -> 2 | LByrefSet -> 3) st and p_recdInfo x st = match x with | RecdExpr -> () | RecdExprIsObjInit -> pfailwith st "explicit object constructors can't be inlined and should not have optimization information" #endif and u_dtree st = let tag = u_byte st match tag with | 0 -> u_tup4 u_expr (u_list u_dtree_case) (u_option u_dtree) u_dummy_range st |> TDSwitch | 1 -> u_tup2 u_FlatExprs u_int st |> TDSuccess | 2 -> u_tup2 u_bind u_dtree st |> TDBind | _ -> ufailwith st "u_dtree" and u_dtree_case st = let a,b = u_tup2 u_dtree_discrim u_dtree st in (TCase(a,b)) and u_dtree_discrim st = let tag = u_byte st match tag with | 0 -> u_tup2 u_ucref u_typs st |> Test.UnionCase | 1 -> u_const st |> Test.Const | 2 -> Test.IsNull | 3 -> u_tup2 u_typ u_typ st |> Test.IsInst | 4 -> u_tup2 u_int u_typ st |> Test.ArrayLength | _ -> ufailwith st "u_dtree_discrim" and u_target st = let a,b = u_tup2 u_FlatVals u_expr st in (TTarget(a,b,SuppressSequencePointAtTarget)) and u_bind st = let a = u_Val st in let b = u_expr st in TBind(a,b,NoSequencePointAtStickyBinding) and u_lval_op_kind st = match u_byte st with | 0 -> LGetAddr | 1 -> LByrefGet | 2 -> LSet | 3 -> LByrefSet | _ -> ufailwith st "uval_op_kind" #if INCLUDE_METADATA_WRITER and p_op x st = match x with | TOp.UnionCase c -> p_byte 0 st; p_ucref c st | TOp.ExnConstr c -> p_byte 1 st; p_tcref "op" c st | TOp.Tuple -> p_byte 2 st | TOp.Recd (a,b) -> p_byte 3 st; p_tup2 p_recdInfo (p_tcref "recd op") (a,b) st | TOp.ValFieldSet (a) -> p_byte 4 st; p_rfref a st | TOp.ValFieldGet (a) -> p_byte 5 st; p_rfref a st | TOp.UnionCaseTagGet (a) -> p_byte 6 st; p_tcref "cnstr op" a st | TOp.UnionCaseFieldGet (a,b) -> p_byte 7 st; p_tup2 p_ucref p_int (a,b) st | TOp.UnionCaseFieldSet (a,b) -> p_byte 8 st; p_tup2 p_ucref p_int (a,b) st | TOp.ExnFieldGet (a,b) -> p_byte 9 st; p_tup2 (p_tcref "exn op") p_int (a,b) st | TOp.ExnFieldSet (a,b) -> p_byte 10 st; p_tup2 (p_tcref "exn op") p_int (a,b) st | TOp.TupleFieldGet (a) -> p_byte 11 st; p_int a st | TOp.ILAsm (a,b) -> p_byte 12 st; p_tup2 (p_list p_ILInstr) p_typs (a,b) st | TOp.RefAddrGet -> p_byte 13 st | TOp.UnionCaseProof (a) -> p_byte 14 st; p_ucref a st | TOp.Coerce -> p_byte 15 st | TOp.TraitCall (b) -> p_byte 16 st; p_trait b st | TOp.LValueOp (a,b) -> p_byte 17 st; p_tup2 p_lval_op_kind (p_vref "lval") (a,b) st | TOp.ILCall (a1,a2,a3,a4,a5,a7,a8,a9,b,c,d) -> p_byte 18 st; p_tup11 p_bool p_bool p_bool p_bool p_vrefFlags p_bool p_bool p_ILMethodRef p_typs p_typs p_typs (a1,a2,a3,a4,a5,a7,a8,a9,b,c,d) st | TOp.Array -> p_byte 19 st | TOp.While _ -> p_byte 20 st | TOp.For(_,dir) -> p_byte 21 st; p_int (match dir with FSharpForLoopUp -> 0 | CSharpForLoopUp -> 1 | FSharpForLoopDown -> 2) st | TOp.Bytes bytes -> p_byte 22 st; p_bytes bytes st | TOp.TryCatch _ -> p_byte 23 st | TOp.TryFinally _ -> p_byte 24 st | TOp.ValFieldGetAddr (a) -> p_byte 25 st; p_rfref a st | TOp.UInt16s arr -> p_byte 26 st; p_array p_uint16 arr st | TOp.Reraise -> p_byte 27 st | TOp.Goto _ | TOp.Label _ | TOp.Return -> failwith "unexpected backend construct in pickled TAST" #endif and u_op st = let tag = u_byte st match tag with | 0 -> let a = u_ucref st TOp.UnionCase a | 1 -> let a = u_tcref st TOp.ExnConstr a | 2 -> TOp.Tuple | 3 -> let b = u_tcref st TOp.Recd (RecdExpr,b) | 4 -> let a = u_rfref st TOp.ValFieldSet a | 5 -> let a = u_rfref st TOp.ValFieldGet a | 6 -> let a = u_tcref st TOp.UnionCaseTagGet a | 7 -> let a = u_ucref st let b = u_int st TOp.UnionCaseFieldGet (a,b) | 8 -> let a = u_ucref st let b = u_int st TOp.UnionCaseFieldSet (a,b) | 9 -> let a = u_tcref st let b = u_int st TOp.ExnFieldGet (a,b) | 10 -> let a = u_tcref st let b = u_int st TOp.ExnFieldSet (a,b) | 11 -> let a = u_int st TOp.TupleFieldGet a | 12 -> let a = (u_list u_ILInstr) st let b = u_typs st TOp.ILAsm (a,b) | 13 -> TOp.RefAddrGet | 14 -> let a = u_ucref st TOp.UnionCaseProof a | 15 -> TOp.Coerce | 16 -> let a = u_trait st TOp.TraitCall a | 17 -> let a = u_lval_op_kind st let b = u_vref st TOp.LValueOp (a,b) | 18 -> let (a1,a2,a3,a4,a5,a7,a8,a9) = (u_tup8 u_bool u_bool u_bool u_bool u_vrefFlags u_bool u_bool u_ILMethodRef) st let b = u_typs st let c = u_typs st let d = u_typs st TOp.ILCall (a1,a2,a3,a4,a5,a7,a8,a9,b,c,d) | 19 -> TOp.Array | 20 -> TOp.While (NoSequencePointAtWhileLoop, NoSpecialWhileLoopMarker) | 21 -> let dir = match u_int st with 0 -> FSharpForLoopUp | 1 -> CSharpForLoopUp | 2 -> FSharpForLoopDown | _ -> failwith "unknown for loop" TOp.For (NoSequencePointAtForLoop, dir) | 22 -> TOp.Bytes (u_bytes st) | 23 -> TOp.TryCatch(NoSequencePointAtTry,NoSequencePointAtWith) | 24 -> TOp.TryFinally(NoSequencePointAtTry,NoSequencePointAtFinally) | 25 -> let a = u_rfref st TOp.ValFieldGetAddr a | 26 -> TOp.UInt16s (u_array u_uint16 st) | 27 -> TOp.Reraise | _ -> ufailwith st "u_op" #if INCLUDE_METADATA_WRITER and p_expr expr st = match expr with | Expr.Link e -> p_expr !e st | Expr.Const (x,m,ty) -> p_byte 0 st; p_tup3 p_const p_dummy_range p_typ (x,m,ty) st | Expr.Val (a,b,m) -> p_byte 1 st; p_tup3 (p_vref "val") p_vrefFlags p_dummy_range (a,b,m) st | Expr.Op(a,b,c,d) -> p_byte 2 st; p_tup4 p_op p_typs p_Exprs p_dummy_range (a,b,c,d) st | Expr.Sequential (a,b,c,_,d) -> p_byte 3 st; p_tup4 p_expr p_expr p_int p_dummy_range (a,b,(match c with NormalSeq -> 0 | ThenDoSeq -> 1),d) st | Expr.Lambda (_,a1,b0,b1,c,d,e) -> p_byte 4 st; p_tup6 (p_option p_Val) (p_option p_Val) p_Vals p_expr p_dummy_range p_typ (a1,b0,b1,c,d,e) st | Expr.TyLambda (_,b,c,d,e) -> p_byte 5 st; p_tup4 p_typar_specs p_expr p_dummy_range p_typ (b,c,d,e) st | Expr.App (a1,a2,b,c,d) -> p_byte 6 st; p_tup5 p_expr p_typ p_typs p_Exprs p_dummy_range (a1,a2,b,c,d) st | Expr.LetRec (a,b,c,_) -> p_byte 7 st; p_tup3 p_binds p_expr p_dummy_range (a,b,c) st | Expr.Let (a,b,c,_) -> p_byte 8 st; p_tup3 p_bind p_expr p_dummy_range (a,b,c) st | Expr.Match (_,a,b,c,d,e) -> p_byte 9 st; p_tup5 p_dummy_range p_dtree p_targets p_dummy_range p_typ (a,b,c,d,e) st | Expr.Obj(_,b,c,d,e,f,g) -> p_byte 10 st; p_tup6 p_typ (p_option p_Val) p_expr p_methods p_intfs p_dummy_range (b,c,d,e,f,g) st | Expr.StaticOptimization(a,b,c,d) -> p_byte 11 st; p_tup4 p_constraints p_expr p_expr p_dummy_range (a,b,c,d) st | Expr.TyChoose (a,b,c) -> p_byte 12 st; p_tup3 p_typar_specs p_expr p_dummy_range (a,b,c) st | Expr.Quote(ast,_,_,m,ty) -> p_byte 13 st; p_tup3 p_expr p_dummy_range p_typ (ast,m,ty) st #endif and u_expr st = let tag = u_byte st match tag with | 0 -> let a = u_const st let b = u_dummy_range st let c = u_typ st Expr.Const (a,b,c) | 1 -> let a = u_vref st let b = u_vrefFlags st let c = u_dummy_range st Expr.Val (a,b,c) | 2 -> let a = u_op st let b = u_typs st let c = u_Exprs st let d = u_dummy_range st Expr.Op (a,b,c,d) | 3 -> let a = u_expr st let b = u_expr st let c = u_int st let d = u_dummy_range st Expr.Sequential (a,b,(match c with 0 -> NormalSeq | 1 -> ThenDoSeq | _ -> ufailwith st "specialSeqFlag"),SuppressSequencePointOnExprOfSequential,d) | 4 -> let a0 = u_option u_Val st let b0 = u_option u_Val st let b1 = u_Vals st let c = u_expr st let d = u_dummy_range st let e = u_typ st Expr.Lambda (newUnique(),a0,b0,b1,c,d,e) | 5 -> let b = u_typar_specs st let c = u_expr st let d = u_dummy_range st let e = u_typ st Expr.TyLambda (newUnique(),b,c,d,e) | 6 -> let a1 = u_expr st let a2 = u_typ st let b = u_typs st let c = u_Exprs st let d = u_dummy_range st Expr.App (a1,a2,b,c,d) | 7 -> let a = u_binds st let b = u_expr st let c = u_dummy_range st Expr.LetRec (a,b,c,NewFreeVarsCache()) | 8 -> let a = u_bind st let b = u_expr st let c = u_dummy_range st Expr.Let (a,b,c,NewFreeVarsCache()) | 9 -> let a = u_dummy_range st let b = u_dtree st let c = u_targets st let d = u_dummy_range st let e = u_typ st Expr.Match (NoSequencePointAtStickyBinding,a,b,c,d,e) | 10 -> let b = u_typ st let c = (u_option u_Val) st let d = u_expr st let e = u_methods st let f = u_intfs st let g = u_dummy_range st Expr.Obj (newUnique(),b,c,d,e,f,g) | 11 -> let a = u_constraints st let b = u_expr st let c = u_expr st let d = u_dummy_range st Expr.StaticOptimization (a,b,c,d) | 12 -> let a = u_typar_specs st let b = u_expr st let c = u_dummy_range st Expr.TyChoose (a,b,c) | 13 -> let b = u_expr st let c = u_dummy_range st let d = u_typ st Expr.Quote (b,ref None,false,c,d) // isFromQueryExpression=false | _ -> ufailwith st "u_expr" #if INCLUDE_METADATA_WRITER and p_static_optimization_constraint x st = match x with | TTyconEqualsTycon (a,b) -> p_byte 0 st; p_tup2 p_typ p_typ (a,b) st | TTyconIsStruct(a) -> p_byte 1 st; p_typ a st and p_slotparam (TSlotParam (a,b,c,d,e,f)) st = p_tup6 (p_option p_string) p_typ p_bool p_bool p_bool p_attribs (a,b,c,d,e,f) st and p_slotsig (TSlotSig (a,b,c,d,e,f)) st = p_tup6 p_string p_typ p_typar_specs p_typar_specs (p_list (p_list p_slotparam)) (p_option p_typ) (a,b,c,d,e,f) st and p_method (TObjExprMethod (a,b,c,d,e,f)) st = p_tup6 p_slotsig p_attribs p_typar_specs (p_list p_Vals) p_expr p_dummy_range (a,b,c,d,e,f) st and p_methods x st = p_list p_method x st and p_intf x st = p_tup2 p_typ p_methods x st and p_intfs x st = p_list p_intf x st #endif and u_static_optimization_constraint st = let tag = u_byte st match tag with | 0 -> u_tup2 u_typ u_typ st |> TTyconEqualsTycon | 1 -> u_typ st |> TTyconIsStruct | _ -> ufailwith st "u_static_optimization_constraint" and u_slotparam st = let a,b,c,d,e,f = u_tup6 (u_option u_string) u_typ u_bool u_bool u_bool u_attribs st TSlotParam(a,b,c,d,e,f) and u_slotsig st = let a,b,c,d,e,f = u_tup6 u_string u_typ u_typar_specs u_typar_specs (u_list (u_list u_slotparam)) (u_option u_typ) st TSlotSig(a,b,c,d,e,f) and u_method st = let a,b,c,d,e,f = u_tup6 u_slotsig u_attribs u_typar_specs (u_list u_Vals) u_expr u_dummy_range st TObjExprMethod(a,b,c,d,e,f) and u_methods st = u_list u_method st and u_intf st = u_tup2 u_typ u_methods st and u_intfs st = u_list u_intf st #if INCLUDE_METADATA_WRITER let _ = fill_p_binds (p_FlatList p_bind) let _ = fill_p_targets (p_array p_target) let _ = fill_p_constraints (p_list p_static_optimization_constraint) let _ = fill_p_Exprs (p_list p_expr) let _ = fill_p_expr_fwd p_expr let _ = fill_p_FlatExprs (p_FlatList p_expr) let _ = fill_p_attribs (p_list p_attrib) let _ = fill_p_Vals (p_list p_Val) let _ = fill_p_FlatVals (p_FlatList p_Val) #endif let _ = fill_u_binds (u_FlatList u_bind) let _ = fill_u_targets (u_array u_target) let _ = fill_u_constraints (u_list u_static_optimization_constraint) let _ = fill_u_Exprs (u_list u_expr) let _ = fill_u_expr_fwd u_expr let _ = fill_u_FlatExprs (u_FlatList u_expr) let _ = fill_u_attribs (u_list u_attrib) let _ = fill_u_Vals (u_list u_Val) let _ = fill_u_FlatVals (u_FlatList u_Val) //--------------------------------------------------------------------------- // Pickle/unpickle F# interface data //--------------------------------------------------------------------------- #if INCLUDE_METADATA_WRITER let pickleModuleOrNamespace mspec st = p_tycon_spec mspec st let pickleModuleInfo minfo st = p_tup4 pickleModuleOrNamespace p_string p_bool (p_space 3) (minfo.mspec, minfo.compileTimeWorkingDir, minfo.usesQuotations,()) st #endif let unpickleModuleOrNamespace st = u_tycon_spec st let unpickleModuleInfo st = let a,b,c,_space = u_tup4 unpickleModuleOrNamespace u_string u_bool (u_space 3) st { mspec=a; compileTimeWorkingDir=b; usesQuotations=c } fsharp-3.0.34/src/fsharp/lexfilter.fs0000775000175000017500000034245312260314606016510 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// LexFilter - process the token stream prior to parsing. /// Implements the offside rule and a copule of other lexical transformations. module internal Microsoft.FSharp.Compiler.Lexfilter open Internal.Utilities open Internal.Utilities.Text.Lexing open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Parser open Microsoft.FSharp.Compiler.Lexhelp let debug = false let stringOfPos (p:Position) = sprintf "(%d:%d)" p.OriginalLine p.Column let outputPos os (p:Position) = Printf.fprintf os "(%d:%d)" p.OriginalLine p.Column /// Used for warning strings, which should display columns as 1-based and display /// the lines after taking '# line' directives into account (i.e. do not use /// p.OriginalLine) let warningStringOfPos (p:Position) = sprintf "(%d:%d)" p.Line (p.Column + 1) type Context = // Position is position of keyword. // bool indicates 'LET' is an offside let that's part of a CtxtSeqBlock where the 'in' is optional | CtxtLetDecl of bool * Position | CtxtIf of Position | CtxtTry of Position | CtxtFun of Position | CtxtFunction of Position | CtxtWithAsLet of Position // 'with' when used in an object expression | CtxtWithAsAugment of Position // 'with' as used in a type augmentation | CtxtMatch of Position | CtxtFor of Position | CtxtWhile of Position | CtxtWhen of Position | CtxtVanilla of Position * bool // boolean indicates if vanilla started with 'x = ...' or 'x.y = ...' | CtxtThen of Position | CtxtElse of Position | CtxtDo of Position | CtxtInterfaceHead of Position | CtxtTypeDefns of Position // 'type =', not removed when we find the "=" | CtxtNamespaceHead of Position * token | CtxtModuleHead of Position * token | CtxtMemberHead of Position | CtxtMemberBody of Position // If bool is true then this is "whole file" // module A.B // If bool is false, this is a "module declaration" // module A = ... | CtxtModuleBody of Position * bool | CtxtNamespaceBody of Position | CtxtException of Position | CtxtParen of Parser.token * Position // Position is position of following token | CtxtSeqBlock of FirstInSequence * Position * AddBlockEnd // first bool indicates "was this 'with' followed immediately by a '|'"? | CtxtMatchClauses of bool * Position member c.StartPos = match c with | CtxtNamespaceHead (p,_) | CtxtModuleHead (p,_) | CtxtException p | CtxtModuleBody (p,_) | CtxtNamespaceBody p | CtxtLetDecl (_,p) | CtxtDo p | CtxtInterfaceHead p | CtxtTypeDefns p | CtxtParen (_,p) | CtxtMemberHead p | CtxtMemberBody p | CtxtWithAsLet p | CtxtWithAsAugment p | CtxtMatchClauses (_,p) | CtxtIf p | CtxtMatch p | CtxtFor p | CtxtWhile p | CtxtWhen p | CtxtFunction p | CtxtFun p | CtxtTry p | CtxtThen p | CtxtElse p | CtxtVanilla (p,_) | CtxtSeqBlock (_,p,_) -> p member c.StartCol = c.StartPos.Column override c.ToString() = match c with | CtxtNamespaceHead _ -> "nshead" | CtxtModuleHead _ -> "modhead" | CtxtException _ -> "exception" | CtxtModuleBody _ -> "modbody" | CtxtNamespaceBody _ -> "nsbody" | CtxtLetDecl(b,p) -> sprintf "let(%b,%s)" b (stringOfPos p) | CtxtWithAsLet p -> sprintf "withlet(%s)" (stringOfPos p) | CtxtWithAsAugment _ -> "withaug" | CtxtDo _ -> "do" | CtxtInterfaceHead _ -> "interface-decl" | CtxtTypeDefns _ -> "type" | CtxtParen _ -> "paren" | CtxtMemberHead _ -> "member-head" | CtxtMemberBody _ -> "body" | CtxtSeqBlock (b,p,_addBlockEnd) -> sprintf "seqblock(%s,%s)" (match b with FirstInSeqBlock -> "first" | NotFirstInSeqBlock -> "subsequent") (stringOfPos p) | CtxtMatchClauses _ -> "matching" | CtxtIf _ -> "if" | CtxtMatch _ -> "match" | CtxtFor _ -> "for" | CtxtWhile p -> sprintf "while(%s)" (stringOfPos p) | CtxtWhen _ -> "when" | CtxtTry _ -> "try" | CtxtFun _ -> "fun" | CtxtFunction _ -> "function" | CtxtThen _ -> "then" | CtxtElse p -> sprintf "else(%s)" (stringOfPos p) | CtxtVanilla (p,_) -> sprintf "vanilla(%s)" (stringOfPos p) and AddBlockEnd = AddBlockEnd | NoAddBlockEnd | AddOneSidedBlockEnd and FirstInSequence = FirstInSeqBlock | NotFirstInSeqBlock let isInfix token = match token with | COMMA | BAR_BAR | AMP_AMP | AMP | OR | INFIX_BAR_OP _ | INFIX_AMP_OP _ | INFIX_COMPARE_OP _ | DOLLAR // For the purposes of #light processing, <, > and = are not considered to be infix operators. // This is because treating them as infix conflicts with their role in other parts of the grammar, // e.g. to delimit "f", or for "let f x = ...." // // This has the impact that a SeqBlock does not automatically start on the right of a "<", ">" or "=", // e.g. // let f x = (x = // let a = 1 // no #light block started here, parentheses or 'in' needed // a + x) // LESS | GREATER | EQUALS | INFIX_AT_HAT_OP _ | PLUS_MINUS_OP _ | COLON_COLON | COLON_GREATER | COLON_QMARK_GREATER | COLON_EQUALS | MINUS | STAR | INFIX_STAR_DIV_MOD_OP _ | INFIX_STAR_STAR_OP _ | QMARK_QMARK -> true | _ -> false let isNonAssocInfixToken token = match token with | EQUALS -> true | _ -> false let infixTokenLength token = match token with | COMMA -> 1 | AMP -> 1 | OR -> 1 | DOLLAR -> 1 | MINUS -> 1 | STAR -> 1 | BAR -> 1 | LESS false -> 1 | GREATER false -> 1 | EQUALS -> 1 | QMARK_QMARK -> 2 | COLON_GREATER -> 2 | COLON_COLON -> 2 | COLON_EQUALS -> 2 | BAR_BAR -> 2 | AMP_AMP -> 2 | INFIX_BAR_OP d | INFIX_AMP_OP d | INFIX_COMPARE_OP d | INFIX_AT_HAT_OP d | PLUS_MINUS_OP d | INFIX_STAR_DIV_MOD_OP d | INFIX_STAR_STAR_OP d -> d.Length | COLON_QMARK_GREATER -> 3 | _ -> assert false; 1 /// Determine the tokens that may align with the 'if' of an 'if/then/elif/else' without closing /// the construct let rec isIfBlockContinuator token = match token with // The following tokens may align with the "if" without closing the "if", e.g. // if ... // then ... // elif ... // else ... | THEN | ELSE | ELIF -> true // Likewise // if ... then ( // ) elif begin // end else ... | END | RPAREN -> true // The following arise during reprocessing of the inserted tokens, e.g. when we hit a DONE | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true | ODUMMY(token) -> isIfBlockContinuator(token) | _ -> false /// Determine the token that may align with the 'try' of a 'try/catch' or 'try/finally' without closing /// the construct let rec isTryBlockContinuator token = match token with // These tokens may align with the "try" without closing the construct, e.g. // try ... // with ... | FINALLY | WITH -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true | ODUMMY(token) -> isTryBlockContinuator(token) | _ -> false let rec isThenBlockContinuator token = match token with // The following arise during reprocessing of the inserted tokens when we hit a DONE | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true | ODUMMY(token) -> isThenBlockContinuator(token) | _ -> false let rec isDoContinuator token = match token with // These tokens may align with the "for" without closing the construct, e.g. // for ... // do // ... // done *) | DONE -> true | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isDoContinuator(token) | _ -> false let rec isInterfaceContinuator token = match token with // These tokens may align with the token "interface" without closing the construct, e.g. // interface ... with // ... // end | END -> true | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isInterfaceContinuator(token) | _ -> false let rec isNamespaceContinuator token = match token with // These tokens end the construct, e.g. // namespace A.B.C // ... // namespace <-- here // .... | Parser.EOF _ | NAMESPACE -> false | ODUMMY(token) -> isNamespaceContinuator token | _ -> true // anything else is a namespace continuator let rec isTypeContinuator token = match token with // The following tokens may align with the token "type" without closing the construct, e.g. // type X = // | A // | B // and Y = c <--- 'and' HERE // // type X = { // x: int; // y: int // } <--- '}' HERE // and Y = c // // type Complex = struct // val im : float // end with <--- 'end' HERE // static member M() = 1 // end | RBRACE | WITH | BAR | AND | END -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true | ODUMMY(token) -> isTypeContinuator(token) | _ -> false let rec isForLoopContinuator token = match token with // This token may align with the "for" without closing the construct, e.g. // for ... do // ... // done | DONE -> true | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true// The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isForLoopContinuator(token) | _ -> false let rec isWhileBlockContinuator token = match token with // This token may align with the "while" without closing the construct, e.g. // while ... do // ... // done | DONE -> true | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isWhileBlockContinuator(token) | _ -> false let rec isLetContinuator token = match token with // This token may align with the "let" without closing the construct, e.g. // let ... // and ... | AND -> true | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isLetContinuator(token) | _ -> false let rec isTypeSeqBlockElementContinuator token = match token with // A sequence of items separated by '|' counts as one sequence block element, e.g. // type x = // | A <-- These together count as one element // | B <-- These together count as one element // member x.M1 // member x.M2 | BAR -> true | OBLOCKBEGIN | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY(token) -> isTypeSeqBlockElementContinuator token | _ -> false // Work out when a token doesn't terminate a single item in a sequence definition let rec isSeqBlockElementContinuator token = isInfix token || // Infix tokens may align with the first column of a sequence block without closing a sequence element and starting a new one // e.g. // let f x // h x // |> y <------- NOTE: Not a new element in the sequence match token with // The following tokens may align with the first column of a sequence block without closing a sequence element and starting a new one *) // e.g. // new MenuItem("&Open...", // new EventHandler(fun _ _ -> // ... // ), <------- NOTE RPAREN HERE // Shortcut.CtrlO) | END | AND | WITH | THEN | RPAREN | RBRACE | RBRACK | BAR_RBRACK | RQUOTE _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true | ODUMMY(token) -> isSeqBlockElementContinuator token | _ -> false let rec isWithAugmentBlockContinuator token = match token with // This token may align with "with" of an augmentation block without closing the construct, e.g. // interface Foo // with // member ... // end | END -> true | ODUMMY(token) -> isWithAugmentBlockContinuator(token) | _ -> false let isLongIdentifier token = (match token with IDENT _ | DOT -> true | _ -> false) let isLongIdentifierOrGlobal token = (match token with GLOBAL | IDENT _ | DOT -> true | _ -> false) let isAtomicExprEndToken token = match token with | IDENT _ | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | UNATIVEINT _ | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ | IEEE32 _ | IEEE64 _ | RPAREN | RBRACK | RBRACE | BAR_RBRACK | END | NULL | FALSE | TRUE | UNDERSCORE -> true | _ -> false //---------------------------------------------------------------------------- // give a 'begin' token, does an 'end' token match? //-------------------------------------------------------------------------- let parenTokensBalance t1 t2 = match t1,t2 with | (LPAREN,RPAREN) | (LBRACE,RBRACE) | (LBRACK,RBRACK) | (INTERFACE,END) | (CLASS,END) | (SIG,END) | (STRUCT,END) | (LBRACK_BAR,BAR_RBRACK) | (LESS true,GREATER true) | (BEGIN,END) -> true | (LQUOTE q1,RQUOTE q2) when q1 = q2 -> true | _ -> false /// Used to save some aspects of the lexbuffer state [] type LexbufState(startPos: Position, endPos : Position, pastEOF : bool) = member x.StartPos = startPos member x.EndPos = endPos member x.PastEOF = pastEOF /// Used to save the state related to a token [] type TokenTup = val Token : token val LexbufState : LexbufState val LastTokenPos: Position * Position new (token,state,lastTokenPos) = { Token=token; LexbufState=state;LastTokenPos=lastTokenPos } /// Returns starting position of the token member x.StartPos = x.LexbufState.StartPos /// Returns end position of the token member x.EndPos = x.LexbufState.EndPos /// Returns a token 'tok' with the same position as this token member x.UseLocation(tok) = let tokState = x.LexbufState TokenTup(tok,LexbufState(tokState.StartPos, tokState.EndPos,false),x.LastTokenPos) /// Returns a token 'tok' with the same position as this token, except that /// it is shifted by specified number of characters from the left and from the right /// Note: positive value means shift to the right in both cases member x.UseShiftedLocation(tok, shiftLeft, shiftRight) = let tokState = x.LexbufState TokenTup(tok,LexbufState(tokState.StartPos.ShiftColumnBy(shiftLeft), tokState.EndPos.ShiftColumnBy(shiftRight),false),x.LastTokenPos) //---------------------------------------------------------------------------- // Utilities for the tokenizer that are needed in other opalces //--------------------------------------------------------------------------*) // Strip a bunch of leading '>' of a token, at the end of a typar application // Note: this is used in the 'service.fs' to do limited postprocessing let (|TyparsCloseOp|_|) (txt:string) = let angles = txt |> Seq.takeWhile (fun c -> c = '>') |> Seq.toList let afterAngles = txt |> Seq.skipWhile (fun c -> c = '>') |> Seq.toList if angles.Length = 0 then None else let afterOp = match (new System.String(Array.ofSeq afterAngles)) with | "." -> Some DOT | "]" -> Some RBRACK | "-" -> Some MINUS | ".." -> Some DOT_DOT | "?" -> Some QMARK | "??" -> Some QMARK_QMARK | ":=" -> Some COLON_EQUALS | "::" -> Some COLON_COLON | "*" -> Some STAR | "&" -> Some AMP | "->" -> Some RARROW | "<-" -> Some LARROW | "=" -> Some EQUALS | "<" -> Some (LESS false) | "$" -> Some DOLLAR | "%" -> Some (PERCENT_OP("%") ) | "%%" -> Some (PERCENT_OP("%%")) | "" -> None | s -> match List.ofSeq afterAngles with | ('=' :: _) | ('!' :: '=' :: _) | ('<' :: _) | ('>' :: _) | ('$' :: _) -> Some (INFIX_COMPARE_OP(s)) | ('&' :: _) -> Some (INFIX_AMP_OP(s)) | ('|' :: _) -> Some (INFIX_BAR_OP(s)) | ('!' :: _) | ('?' :: _) | ('~' :: _) -> Some (PREFIX_OP(s)) | ('@' :: _) | ('^' :: _) -> Some (INFIX_AT_HAT_OP(s)) | ('+' :: _) | ('-' :: _) -> Some (PLUS_MINUS_OP(s)) | ('*' :: '*' :: _) -> Some (INFIX_STAR_STAR_OP(s)) | ('*' :: _) | ('/' :: _) | ('%' :: _) -> Some (INFIX_STAR_DIV_MOD_OP(s)) | _ -> None Some([| for _c in angles do yield GREATER |],afterOp) //---------------------------------------------------------------------------- // build a LexFilter //--------------------------------------------------------------------------*) type LexFilterImpl (lightSyntaxStatus:LightSyntaxStatus, compilingFsLib, lexer, lexbuf: UnicodeLexing.Lexbuf) = //---------------------------------------------------------------------------- // Part I. Building a new lex stream from an old // // A lexbuf is a stateful object that can be enticed to emit tokens by calling // 'lexer' functions designed to work with the lexbuf. Here we fake a new stream // coming out of an existing lexbuf. Ideally lexbufs would be abstract interfaces // and we could just build a new abstract interface that wraps an existing one. // However that is not how F# lexbufs currently work. // // Part of the fakery we perform involves buffering a lookahead token which // we eventually pass on to the client. However, this client also looks at // other aspects of the 'state' of lexbuf directly, e.g. F# lexbufs have a triple // (start-pos, end-pos, eof-reached) // // You may ask why the F# parser reads this lexbuf state directly. Well, the // pars.fsy code itself it doesn't, but the parser engines (prim-parsing.fs) // certainly do for F#. e.g. when these parsers read a token // from the lexstream they also read the position information and keep this // a related stack. // // Anyway, this explains the functions getLexbufState(), setLexbufState() etc. //-------------------------------------------------------------------------- // Make sure we don't report 'eof' when inserting a token, and set the positions to the // last reported token position let lexbufStateForInsertedDummyTokens (lastTokenStartPos,lastTokenEndPos) = new LexbufState(lastTokenStartPos,lastTokenEndPos,false) let getLexbufState() = new LexbufState(lexbuf.StartPos, lexbuf.EndPos, lexbuf.IsPastEndOfStream) let setLexbufState (p:LexbufState) = // if debug then dprintf "SET lex state to; %a\n" output_any p; lexbuf.StartPos <- p.StartPos lexbuf.EndPos <- p.EndPos lexbuf.IsPastEndOfStream <- p.PastEOF let startPosOfTokenTup (tokenTup:TokenTup) = match tokenTup.Token with // EOF token is processed as if on column -1 // This forces the closure of all contexts. | Parser.EOF _ -> tokenTup.LexbufState.StartPos.ColumnMinusOne | _ -> tokenTup.LexbufState.StartPos //---------------------------------------------------------------------------- // Part II. The state of the new lex stream object. //-------------------------------------------------------------------------- // Ok, we're going to the wrapped lexbuf. Set the lexstate back so that the lexbuf // appears consistent and correct for the wrapped lexer function. let mutable savedLexbufState = Unchecked.defaultof let mutable haveLexbufState = false let runWrappedLexerInConsistentLexbufState() = let state = if haveLexbufState then savedLexbufState else getLexbufState() setLexbufState state let lastTokenStart = state.StartPos let lastTokenEnd = state.EndPos let token = lexer lexbuf // Now we've got the token, remember the lexbuf state, associating it with the token // and remembering it as the last observed lexbuf state for the wrapped lexer function. let tokenLexbufState = getLexbufState() savedLexbufState <- tokenLexbufState haveLexbufState <- true TokenTup(token,tokenLexbufState,(lastTokenStart,lastTokenEnd)) //---------------------------------------------------------------------------- // Fetch a raw token, either from the old lexer or from our delayedStack //-------------------------------------------------------------------------- let delayedStack = System.Collections.Generic.Stack() let mutable tokensThatNeedNoProcessingCount = 0 let delayToken tokenTup = delayedStack.Push tokenTup let delayTokenNoProcessing tokenTup = delayToken tokenTup; tokensThatNeedNoProcessingCount <- tokensThatNeedNoProcessingCount + 1 let popNextTokenTup() = if delayedStack.Count > 0 then let tokenTup = delayedStack.Pop() if debug then dprintf "popNextTokenTup: delayed token, tokenStartPos = %a\n" outputPos (startPosOfTokenTup tokenTup) tokenTup else if debug then dprintf "popNextTokenTup: no delayed tokens, running lexer...\n" runWrappedLexerInConsistentLexbufState() //---------------------------------------------------------------------------- // Part III. Initial configuration of state. // // We read a token. In F# Interactive the parser thread will be correctly blocking // here. //-------------------------------------------------------------------------- let mutable initialized = false let mutable offsideStack = [] let mutable prevWasAtomicEnd = false let peekInitial() = let initialLookaheadTokenTup = popNextTokenTup() if debug then dprintf "first token: initialLookaheadTokenLexbufState = %a\n" outputPos (startPosOfTokenTup initialLookaheadTokenTup) delayToken initialLookaheadTokenTup initialized <- true offsideStack <- (CtxtSeqBlock(FirstInSeqBlock,startPosOfTokenTup initialLookaheadTokenTup,NoAddBlockEnd)) :: offsideStack initialLookaheadTokenTup let warn (s:TokenTup) msg = warning(Lexhelp.IndentationProblem(msg,mkSynRange (startPosOfTokenTup s) s.LexbufState.EndPos)) // 'query { join x in ys ... }' // 'query { ... // join x in ys ... }' // 'query { for ... do // join x in ys ... }' let detectJoinInCtxt stack = let rec check s = match s with | CtxtParen(LBRACE,_) :: _ -> true | (CtxtSeqBlock _ | CtxtDo _ | CtxtFor _) :: rest -> check rest | _ -> false match stack with | (CtxtVanilla _ :: rest) -> check rest | _ -> false //---------------------------------------------------------------------------- // Part IV. Helper functions for pushing contexts and giving good warnings // if a context is undented. // // Undentation rules //-------------------------------------------------------------------------- let pushCtxt tokenTup (newCtxt:Context) = let rec unindentationLimit strict stack = match newCtxt,stack with | _, [] -> (newCtxt.StartPos, -1) // ignore Vanilla because a SeqBlock is always coming | _, (CtxtVanilla _ :: rest) -> unindentationLimit strict rest | _, (CtxtSeqBlock _ :: rest) when not strict -> unindentationLimit strict rest | _, (CtxtParen _ :: rest) when not strict -> unindentationLimit strict rest // 'begin match' limited by minimum of two // '(match' limited by minimum of two | _,(((CtxtMatch _) as ctxt1) :: CtxtSeqBlock _ :: (CtxtParen ((BEGIN | LPAREN),_) as ctxt2) :: _rest) -> if ctxt1.StartCol <= ctxt2.StartCol then (ctxt1.StartPos,ctxt1.StartCol) else (ctxt2.StartPos,ctxt2.StartCol) // 'let ... = function' limited by 'let', precisely // This covers the common form // // let f x = function // | Case1 -> ... // | Case2 -> ... | (CtxtMatchClauses _), (CtxtFunction _ :: CtxtSeqBlock _ :: (CtxtLetDecl _ as limitCtxt) :: _rest) -> (limitCtxt.StartPos,limitCtxt.StartCol) // Otherwise 'function ...' places no limit until we hit a CtxtLetDecl etc... (Recursive) | (CtxtMatchClauses _), (CtxtFunction _ :: rest) -> unindentationLimit false rest // 'try ... with' limited by 'try' | _,(CtxtMatchClauses _ :: (CtxtTry _ as limitCtxt) :: _rest) -> (limitCtxt.StartPos,limitCtxt.StartCol) // 'fun ->' places no limit until we hit a CtxtLetDecl etc... (Recursive) | _,(CtxtFun _ :: rest) -> unindentationLimit false rest // 'f ...{' places no limit until we hit a CtxtLetDecl etc... | _,(CtxtParen (LBRACE,_) :: CtxtVanilla _ :: CtxtSeqBlock _ :: rest) | _,(CtxtSeqBlock _ :: CtxtParen(LBRACE,_) :: CtxtVanilla _ :: CtxtSeqBlock _ :: rest) -> unindentationLimit false rest // MAJOR PERMITTED UNDENTATION This is allowing: // if x then y else // let x = 3 + 4 // x + x // This is a serious thing to allow, but is required since there is no "return" in this language. // Without it there is no way of escaping special cases in large bits of code without indenting the main case. | CtxtSeqBlock _, (CtxtElse _ :: (CtxtIf _ as limitCtxt) :: _rest) -> (limitCtxt.StartPos,limitCtxt.StartCol) // Permitted inner-construct precise block alighnment: // interface ... // with ... // end // // type ... // with ... // end | CtxtWithAsAugment _,((CtxtInterfaceHead _ | CtxtMemberHead _ | CtxtException _ | CtxtTypeDefns _) as limitCtxt :: _rest) -> (limitCtxt.StartPos,limitCtxt.StartCol) // Permit unindentation via parentheses (or begin/end) following a 'then', 'else' or 'do': // if nr > 0 then ( // nr <- nr - 1; // acc <- d; // i <- i - 1 // ) else ( // i <- -1 // ); // PERMITTED UNDENTATION: Inner construct (then,with,else,do) that dangle, places no limit until we hit the corresponding leading construct CtxtIf, CtxtFor, CtxtWhile, CtxtVanilla etc... *) // e.g. if ... then ... // expr // else // expr // rather than forcing // if ... // then expr // else expr // Also ...... with // ... <-- this is before the "with" // end | _,((CtxtWithAsAugment _ | CtxtThen _ | CtxtElse _ | CtxtDo _ ) :: rest) -> unindentationLimit false rest // '... (function ->' places no limit until we hit a CtxtLetDecl etc.... (Recursive) // // e.g. // let fffffff() = function // | [] -> 0 // | _ -> 1 // // Note this does not allow // let fffffff() = function _ -> // 0 // which is not a permitted undentation. This undentation would make no sense if there are multiple clauses in the 'function', which is, after all, what 'function' is really for // let fffffff() = function 1 -> // 0 // | 2 -> ... <---- not allowed | _,(CtxtFunction _ :: rest) -> unindentationLimit false rest // 'module ... : sig' limited by 'module' // 'module ... : struct' limited by 'module' // 'module ... : begin' limited by 'module' // 'if ... then (' limited by 'if' // 'if ... then {' limited by 'if' // 'if ... then [' limited by 'if' // 'if ... then [|' limited by 'if' // 'if ... else (' limited by 'if' // 'if ... else {' limited by 'if' // 'if ... else [' limited by 'if' // 'if ... else [|' limited by 'if' | _,(CtxtParen ((SIG | STRUCT | BEGIN),_) :: CtxtSeqBlock _ :: (CtxtModuleBody (_,false) as limitCtxt) :: _) | _,(CtxtParen ((BEGIN | LPAREN | LBRACK | LBRACE | LBRACK_BAR) ,_) :: CtxtSeqBlock _ :: CtxtThen _ :: (CtxtIf _ as limitCtxt) :: _) | _,(CtxtParen ((BEGIN | LPAREN | LBRACK | LBRACE | LBRACK_BAR) ,_) :: CtxtSeqBlock _ :: CtxtElse _ :: (CtxtIf _ as limitCtxt) :: _) // 'f ... (' in seqblock limited by 'f' // 'f ... {' in seqblock limited by 'f' NOTE: this is covered by the more generous case above // 'f ... [' in seqblock limited by 'f' // 'f ... [|' in seqblock limited by 'f' // 'f ... Foo<' in seqblock limited by 'f' | _,(CtxtParen ((BEGIN | LPAREN | LESS true | LBRACK | LBRACK_BAR) ,_) :: CtxtVanilla _ :: (CtxtSeqBlock _ as limitCtxt) :: _) // 'type C = class ... ' limited by 'type' // 'type C = interface ... ' limited by 'type' // 'type C = struct ... ' limited by 'type' | _,(CtxtParen ((CLASS | STRUCT | INTERFACE),_) :: CtxtSeqBlock _ :: (CtxtTypeDefns _ as limitCtxt) :: _) -> (limitCtxt.StartPos,limitCtxt.StartCol + 1) // REVIEW: document these | _,(CtxtSeqBlock _ :: CtxtParen((BEGIN | LPAREN | LBRACK | LBRACK_BAR),_) :: CtxtVanilla _ :: (CtxtSeqBlock _ as limitCtxt) :: _) | (CtxtSeqBlock _),(CtxtParen ((BEGIN | LPAREN | LBRACE | LBRACK | LBRACK_BAR) ,_) :: CtxtSeqBlock _ :: ((CtxtTypeDefns _ | CtxtLetDecl _ | CtxtMemberBody _ | CtxtWithAsLet _) as limitCtxt) :: _) -> (limitCtxt.StartPos,limitCtxt.StartCol + 1) // Permitted inner-construct (e.g. "then" block and "else" block in overall // "if-then-else" block ) block alighnment: // if ... // then expr // elif expr // else expr | (CtxtIf _ | CtxtElse _ | CtxtThen _), (CtxtIf _ as limitCtxt) :: _rest -> (limitCtxt.StartPos,limitCtxt.StartCol) // Permitted inner-construct precise block alighnment: // while ... // do expr // done | (CtxtDo _), ((CtxtFor _ | CtxtWhile _) as limitCtxt) :: _rest -> (limitCtxt.StartPos,limitCtxt.StartCol) // These contexts all require indentation by at least one space | _,((CtxtInterfaceHead _ | CtxtNamespaceHead _ | CtxtModuleHead _ | CtxtException _ | CtxtModuleBody (_,false) | CtxtIf _ | CtxtWithAsLet _ | CtxtLetDecl _ | CtxtMemberHead _ | CtxtMemberBody _) as limitCtxt :: _) -> (limitCtxt.StartPos,limitCtxt.StartCol + 1) // These contexts can have their contents exactly aligning | _,((CtxtParen _ | CtxtFor _ | CtxtWhen _ | CtxtWhile _ | CtxtTypeDefns _ | CtxtMatch _ | CtxtModuleBody (_,true) | CtxtNamespaceBody _ | CtxtTry _ | CtxtMatchClauses _ | CtxtSeqBlock _) as limitCtxt :: _) -> (limitCtxt.StartPos,limitCtxt.StartCol) match newCtxt with // Don't bother to check pushes of Vanilla blocks since we've // always already pushed a SeqBlock at this position. | CtxtVanilla _ -> () | _ -> let p1,c1 = unindentationLimit true offsideStack let c2 = newCtxt.StartCol if c2 < c1 then warn tokenTup (if debug then (sprintf "possible incorrect indentation: this token is offside of context at position %s, newCtxt = %A, stack = %A, newCtxtPos = %s, c1 = %d, c2 = %d" (warningStringOfPos p1) newCtxt offsideStack (stringOfPos (newCtxt.StartPos)) c1 c2) else (FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos p1)) ) let newOffsideStack = newCtxt :: offsideStack if debug then dprintf "--> pushing, stack = %A\n" newOffsideStack offsideStack <- newOffsideStack let popCtxt() = match offsideStack with | [] -> () | h :: rest -> if debug then dprintf "<-- popping Context(%A), stack = %A\n" h rest offsideStack <- rest let replaceCtxt p ctxt = popCtxt(); pushCtxt p ctxt //---------------------------------------------------------------------------- // Peek ahead at a token, either from the old lexer or from our delayedStack //-------------------------------------------------------------------------- let peekNextTokenTup() = let tokenTup = popNextTokenTup() delayToken tokenTup tokenTup let peekNextToken() = peekNextTokenTup().Token //---------------------------------------------------------------------------- // Adjacency precedence rule //-------------------------------------------------------------------------- let isAdjacent (leftTokenTup:TokenTup) rightTokenTup = let lparenStartPos = startPosOfTokenTup rightTokenTup let tokenEndPos = leftTokenTup.LexbufState.EndPos (tokenEndPos = lparenStartPos) let nextTokenIsAdjacentLParenOrLBrack (tokenTup:TokenTup) = let lookaheadTokenTup = peekNextTokenTup() match lookaheadTokenTup.Token with | (LPAREN | LBRACK) -> if isAdjacent tokenTup lookaheadTokenTup then Some(lookaheadTokenTup.Token) else None | _ -> None let nextTokenIsAdjacent firstTokenTup = let lookaheadTokenTup = peekNextTokenTup() isAdjacent firstTokenTup lookaheadTokenTup let peekAdjacentTypars indentation (tokenTup:TokenTup) = let lookaheadTokenTup = peekNextTokenTup() match lookaheadTokenTup.Token with | INFIX_COMPARE_OP " let tokenEndPos = tokenTup.LexbufState.EndPos if isAdjacent tokenTup lookaheadTokenTup then let stack = ref [] let rec scanAhead nParen = let lookaheadTokenTup = popNextTokenTup() let lookaheadToken = lookaheadTokenTup.Token stack := (lookaheadTokenTup,true) :: !stack let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup match lookaheadToken with | Parser.EOF _ | SEMICOLON_SEMICOLON -> false | _ when indentation && lookaheadTokenStartPos < tokenEndPos -> false | (RPAREN | RBRACK) -> let nParen = nParen - 1 if nParen > 0 then scanAhead nParen else false | GREATER _ | GREATER_RBRACK | GREATER_BAR_RBRACK -> let nParen = nParen - 1 let hasAfterOp = (match lookaheadToken with GREATER _ -> false | _ -> true) if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren stack := (lookaheadTokenTup,not hasAfterOp) :: (!stack).Tail scanAhead nParen else // On successful parse of a set of type parameters, look for an adjacent (, e.g. // M(args) // and insert a HIGH_PRECEDENCE_PAREN_APP if not hasAfterOp && (match nextTokenIsAdjacentLParenOrLBrack lookaheadTokenTup with Some(LPAREN) -> true | _ -> false) then let dotTokenTup = peekNextTokenTup() stack := (dotTokenTup.UseLocation(HIGH_PRECEDENCE_PAREN_APP),false) :: !stack true | INFIX_COMPARE_OP (TyparsCloseOp(greaters,afterOp)) -> let nParen = nParen - greaters.Length if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren stack := (lookaheadTokenTup,not afterOp.IsSome) :: (!stack).Tail scanAhead nParen else // On successful parse of a set of type parameters, look for an adjacent (, e.g. // M>(args) // and insert a HIGH_PRECEDENCE_PAREN_APP if afterOp.IsNone && (match nextTokenIsAdjacentLParenOrLBrack lookaheadTokenTup with Some LPAREN -> true | _ -> false) then let dotTokenTup = peekNextTokenTup() stack := (dotTokenTup.UseLocation(HIGH_PRECEDENCE_PAREN_APP),false) :: !stack true | (LPAREN | LESS _ | LBRACK | LBRACK_LESS | INFIX_COMPARE_OP " scanAhead (nParen+1) // These tokens CAN occur in non-parenthesized positions in the grammar of types or type parameter definitions // Thus we explicitly DO consider these to be type applications: // fx // fx // fx // fx // fx // fx // fx // f x>x // fx // fx | DEFAULT | COLON | COLON_GREATER | STRUCT | NULL | DELEGATE | AND | WHEN | DOT_DOT | INFIX_AT_HAT_OP "^" | INFIX_AT_HAT_OP "^-" | INFIX_STAR_DIV_MOD_OP "/" | MINUS | GLOBAL | CONST | NULL | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | UNATIVEINT _ | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ | TRUE | FALSE | IEEE32 _ | IEEE64 _ | DOT | UNDERSCORE | EQUALS | IDENT _ | COMMA | RARROW | HASH | STAR | QUOTE -> scanAhead nParen // All other tokens ARE assumed to be part of the grammar of types or type parameter definitions | _ -> if nParen > 1 then scanAhead nParen else false let res = scanAhead 0 // Put the tokens back on and smash them up if needed !stack |> List.iter (fun (tokenTup,smash) -> if smash then match tokenTup.Token with | INFIX_COMPARE_OP " delayToken (tokenTup.UseShiftedLocation(INFIX_STAR_DIV_MOD_OP "/", 1, 0)) delayToken (tokenTup.UseShiftedLocation(LESS res, 0, -1)) | GREATER_BAR_RBRACK -> delayToken (tokenTup.UseShiftedLocation(BAR_RBRACK, 1, 0)) delayToken (tokenTup.UseShiftedLocation(GREATER res, 0, -2)) | GREATER_RBRACK -> delayToken (tokenTup.UseShiftedLocation(RBRACK, 1, 0)) delayToken (tokenTup.UseShiftedLocation(GREATER res, 0, -1)) | GREATER _ -> delayToken (tokenTup.UseLocation(GREATER res)) | (INFIX_COMPARE_OP (TyparsCloseOp(greaters,afterOp) as opstr)) -> match afterOp with | None -> () | Some tok -> delayToken (tokenTup.UseShiftedLocation(tok, greaters.Length, 0)) for i = greaters.Length - 1 downto 0 do delayToken (tokenTup.UseShiftedLocation(greaters.[i] res, i, -opstr.Length + i + 1)) | _ -> delayToken tokenTup else delayToken tokenTup) res else false | _ -> false //---------------------------------------------------------------------------- // End actions //-------------------------------------------------------------------------- let returnToken (tokenLexbufState:LexbufState) tok = setLexbufState(tokenLexbufState) prevWasAtomicEnd <- isAtomicExprEndToken(tok) tok //---------------------------------------------------------------------------- // Parse and transform the stream of tokens coming from popNextTokenTup, pushing // contexts where needed, popping them where things are offside, balancing // parentheses and other constructs. //-------------------------------------------------------------------------- let rec hwTokenFetch (useBlockRule) = let tokenTup = popNextTokenTup() let tokenReplaced = rulesForBothSoftWhiteAndHardWhite(tokenTup) if tokenReplaced then hwTokenFetch(useBlockRule) else let tokenStartPos = (startPosOfTokenTup tokenTup) let token = tokenTup.Token let tokenLexbufState = tokenTup.LexbufState let tokenStartCol = tokenStartPos.Column let isSameLine() = match token with | Parser.EOF _ -> false | _ -> (startPosOfTokenTup (peekNextTokenTup())).OriginalLine = tokenStartPos.OriginalLine let isControlFlowOrNotSameLine() = match token with | Parser.EOF _ -> false | _ -> not (isSameLine()) || (match peekNextToken() with TRY | MATCH | IF | LET _ | FOR | WHILE -> true | _ -> false) // Look for '=' or '.Id.id.id = ' after an identifier let rec isLongIdentEquals token = match token with | Parser.GLOBAL | Parser.IDENT _ -> let rec loop() = let tokenTup = popNextTokenTup() let res = match tokenTup.Token with | Parser.EOF _ -> false | DOT -> let tokenTup = popNextTokenTup() let res = match tokenTup.Token with | Parser.EOF _ -> false | IDENT _ -> loop() | _ -> false delayToken tokenTup res | EQUALS -> true | _ -> false delayToken tokenTup res loop() | _ -> false let reprocess() = delayToken tokenTup hwTokenFetch(useBlockRule) let reprocessWithoutBlockRule() = delayToken tokenTup hwTokenFetch(false) let insertTokenFromPrevPosToCurrentPos tok = delayToken tokenTup if debug then dprintf "inserting %+A\n" tok // span of inserted token lasts from the col + 1 of the prev token // to the beginning of current token let lastTokenPos = let pos = snd tokenTup.LastTokenPos pos.ShiftColumnBy 1 returnToken (lexbufStateForInsertedDummyTokens (lastTokenPos, tokenTup.LexbufState.StartPos)) tok let insertToken tok = delayToken tokenTup if debug then dprintf "inserting %+A\n" tok returnToken (lexbufStateForInsertedDummyTokens (startPosOfTokenTup tokenTup, tokenTup.LexbufState.EndPos)) tok let isSemiSemi = match token with SEMICOLON_SEMICOLON -> true | _ -> false // If you see a 'member' keyword while you are inside the body of another member, then it usually means there is a syntax error inside this method // and the upcoming 'member' is the start of the next member in the class. For better parser recovery and diagnostics, it is best to pop out of the // existing member context so the parser can recover. // // However there are two places where 'member' keywords can appear inside expressions inside the body of a member. The first is object expressions, and // the second is static inline constraints. We must not pop the context stack in those cases, or else legal code will not parse. // // It is impossible to decide for sure if we're in one of those two cases, so we must err conservatively if we might be. let thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack = // a 'member' starter keyword is coming; should we pop? if not(List.exists (function CtxtMemberBody _ -> true | _ -> false) ctxtStack) then false // no member currently on the stack, nothing to pop else // there is a member context if List.exists (function CtxtParen(LBRACE,_) -> true | _ -> false) ctxtStack then false // an LBRACE could mean an object expression, and object expressions can have 'member' tokens in them, so do not pop, to be safe elif List.count (function CtxtParen(LPAREN,_) -> true | _ -> false) ctxtStack >= 2 then false // static member constraints always are embedded in at least two LPARENS, so do not pop, to be safe else true let endTokenForACtxt ctxt = match ctxt with | CtxtFun _ | CtxtMatchClauses _ | CtxtWithAsLet _ -> Some OEND | CtxtWithAsAugment _ -> Some ODECLEND | CtxtDo _ | CtxtLetDecl (true,_) -> Some ODECLEND | CtxtSeqBlock(_,_,AddBlockEnd) -> Some OBLOCKEND | CtxtSeqBlock(_,_,AddOneSidedBlockEnd) -> Some ORIGHT_BLOCK_END | _ -> None let tokenBalancesHeadContext token stack = match token,stack with | END, (CtxtWithAsAugment(_) :: _) | (ELSE | ELIF), (CtxtIf _ :: _) | DONE , (CtxtDo _ :: _) // WITH balances except in the following contexts.... Phew - an overused keyword! | WITH , ( ((CtxtMatch _ | CtxtException _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtTry _ | CtxtTypeDefns _ | CtxtMemberBody _) :: _) // This is the nasty record/object-expression case | (CtxtSeqBlock _ :: CtxtParen(LBRACE,_) :: _) ) | FINALLY , (CtxtTry _ :: _) -> true // for x in ienum ... // let x = ... in | IN , ((CtxtFor _ | CtxtLetDecl _) :: _) -> true // 'query { join x in ys ... }' // 'query { ... // join x in ys ... }' // 'query { for ... do // join x in ys ... }' | IN , stack when detectJoinInCtxt stack -> true // NOTE: ;; does not terminate a 'namespace' body. | SEMICOLON_SEMICOLON, (CtxtSeqBlock _ :: CtxtNamespaceBody _ :: _) -> true | SEMICOLON_SEMICOLON, (CtxtSeqBlock _ :: CtxtModuleBody (_,true) :: _) -> true | t2 , (CtxtParen(t1,_) :: _) -> parenTokensBalance t1 t2 | _ -> false let rec suffixExists p l = match l with [] -> false | _::t -> p t || suffixExists p t // Balancing rule. Every 'in' terminates all surrounding blocks up to a CtxtLetDecl, and will be swallowed by // terminating the corresponding CtxtLetDecl in the rule below. // Balancing rule. Every 'done' terminates all surrounding blocks up to a CtxtDo, and will be swallowed by // terminating the corresponding CtxtDo in the rule below. let tokenForcesHeadContextClosure token stack = nonNil stack && match token with | Parser.EOF _ -> true | SEMICOLON_SEMICOLON -> not (tokenBalancesHeadContext token stack) | END | ELSE | ELIF | DONE | IN | RPAREN | GREATER true | RBRACE | RBRACK | BAR_RBRACK | WITH | FINALLY | RQUOTE _ -> not (tokenBalancesHeadContext token stack) && // Only close the context if some context is going to match at some point in the stack. // If none match, the token will go through, and error recovery will kick in in the parser and report the extra token, // and then parsing will continue. Closing all the contexts will not achieve much except aid in a catastrophic failure. (stack |> suffixExists (tokenBalancesHeadContext token)) | _ -> false // The TYPE and MODULE keywords cannot be used in expressions, but the parser has a hard time recovering on incomplete-expression-code followed by // a TYPE or MODULE. So the lexfiler helps out by looking ahead for these tokens and (1) closing expression contexts and (2) inserting extra 'coming soon' tokens // that the expression rules in the FsYacc parser can 'shift' to make progress parsing the incomplete expressions, without using the 'recover' action. let insertComingSoonTokens(keywordName, comingSoon, isHere) = // compiling the source for FSharp.Core.dll uses crazy syntax like // (# "unbox.any !0" type ('T) x : 'T #) // where the type keyword is used inside an expression, so we must exempt FSharp.Core from some extra failed-parse-diagnostics-recovery-processing of the 'type' keyword let mutable effectsToDo = [] if not compilingFsLib then // ... <<< code with unmatched ( or [ or { or [| >>> ... "type" ... // We want a TYPE or MODULE keyword to close any currently-open "expression" contexts, as though there were close delimiters in the file, so: let rec nextOuterMostInterestingContextIsNamespaceOrModule(offsideStack) = match offsideStack with // next outermost is namespace or module | _ :: (CtxtNamespaceBody _ | CtxtModuleBody _) :: _ -> true // The context pair below is created a namespace/module scope when user explicitly uses 'begin'...'end', // and these can legally contain type definitions, so ignore this combo as uninteresting and recurse deeper | _ :: CtxtParen((BEGIN|STRUCT),_) :: CtxtSeqBlock(_,_,_) :: _ -> nextOuterMostInterestingContextIsNamespaceOrModule(offsideStack.Tail.Tail) // at the top of the stack there is an implicit module | _ :: [] -> true // anything else is a non-namespace/module | _ -> false while not offsideStack.IsEmpty && (not(nextOuterMostInterestingContextIsNamespaceOrModule(offsideStack))) && (match offsideStack.Head with // open-parens of sorts | CtxtParen((LPAREN|LBRACK|LBRACE|LBRACK_BAR),_) -> true // seq blocks | CtxtSeqBlock _ -> true // vanillas | CtxtVanilla _ -> true // preserve all other contexts | _ -> false) do match offsideStack.Head with | CtxtParen _ -> if debug then dprintf "%s at %a terminates CtxtParen()\n" keywordName outputPos tokenStartPos popCtxt() | CtxtSeqBlock(_,_,AddBlockEnd) -> popCtxt() effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting OBLOCKEND\n" keywordName delayTokenNoProcessing (tokenTup.UseLocation(OBLOCKEND))) :: effectsToDo | CtxtSeqBlock(_,_,NoAddBlockEnd) -> if debug then dprintf "--> because %s is coming, popping CtxtSeqBlock\n" keywordName popCtxt() | CtxtSeqBlock(_,_,AddOneSidedBlockEnd) -> popCtxt() effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting ORIGHT_BLOCK_END\n" keywordName delayTokenNoProcessing (tokenTup.UseLocation(ORIGHT_BLOCK_END))) :: effectsToDo | CtxtVanilla _ -> if debug then dprintf "--> because %s is coming, popping CtxtVanilla\n" keywordName popCtxt() | _ -> failwith "impossible, the while loop guard just above prevents this" // See bugs 91609/92107/245850; we turn ...TYPE... into ...TYPE_COMING_SOON(x6),TYPE_IS_HERE... to help the parser recover when it sees "type" in a parenthesized expression. // And we do the same thing for MODULE. // Why _six_ TYPE_COMING_SOON? It's rather arbitrary, this means we can recover from up to six unmatched parens before failing. The unit tests (with 91609 in the name) demonstrate this. // Don't "delayToken tokenTup", we are replacing it, so consume it. if debug then dprintf "inserting 6 copies of %+A before %+A\n" comingSoon isHere delayTokenNoProcessing (tokenTup.UseLocation(isHere)) for i in 1..6 do delayTokenNoProcessing (tokenTup.UseLocation(comingSoon)) for e in List.rev effectsToDo do e() // push any END tokens after pushing the TYPE_IS_HERE and TYPE_COMING_SOON stuff, so that they come before those in the token stream match token,offsideStack with // inserted faux tokens need no other processing | _ when tokensThatNeedNoProcessingCount > 0 -> tokensThatNeedNoProcessingCount <- tokensThatNeedNoProcessingCount - 1 returnToken tokenLexbufState token | _ when tokenForcesHeadContextClosure token offsideStack -> let ctxt = offsideStack.Head if debug then dprintf "IN/ELSE/ELIF/DONE/RPAREN/RBRACE/END at %a terminates context at position %a\n" outputPos tokenStartPos outputPos ctxt.StartPos popCtxt() match endTokenForACtxt ctxt with | Some tok -> if debug then dprintf "--> inserting %+A\n" tok insertToken tok | _ -> reprocess() // reset on ';;' rule. A ';;' terminates ALL entries | SEMICOLON_SEMICOLON, [] -> if debug then dprintf ";; scheduling a reset\n" delayToken(tokenTup.UseLocation(ORESET)) returnToken tokenLexbufState SEMICOLON_SEMICOLON | ORESET, [] -> if debug then dprintf "performing a reset after a ;; has been swallowed\n" // NOTE: The parser thread of F# Interactive will often be blocked on this call, e.g. after an entry has been // processed and we're waiting for the first token of the next entry. peekInitial() |> ignore hwTokenFetch(true) | IN, stack when detectJoinInCtxt stack -> returnToken tokenLexbufState JOIN_IN // Balancing rule. Encountering an 'in' balances with a 'let'. i.e. even a non-offside 'in' closes a 'let' // The 'IN' token is thrown away and becomes an ODECLEND | IN, (CtxtLetDecl (blockLet,offsidePos) :: _) -> if debug then dprintf "IN at %a (becomes %s)\n" outputPos tokenStartPos (if blockLet then "ODECLEND" else "IN") if tokenStartCol < offsidePos.Column then warn tokenTup (FSComp.SR.lexfltIncorrentIndentationOfIn()) popCtxt() // Make sure we queue a dummy token at this position to check if any other pop rules apply delayToken(tokenTup.UseLocation(ODUMMY(token))) returnToken tokenLexbufState (if blockLet then ODECLEND else token) // Balancing rule. Encountering a 'done' balances with a 'do'. i.e. even a non-offside 'done' closes a 'do' // The 'DONE' token is thrown away and becomes an ODECLEND | DONE, (CtxtDo offsidePos :: _) -> if debug then dprintf "DONE at %a terminates CtxtDo(offsidePos=%a)\n" outputPos tokenStartPos outputPos offsidePos popCtxt() // reprocess as the DONE may close a DO context delayToken(tokenTup.UseLocation(ODECLEND)) hwTokenFetch(useBlockRule) // Balancing rule. Encountering a ')' or '}' balances with a '(' or '{', even if not offside | ((END | RPAREN | RBRACE | RBRACK | BAR_RBRACK | RQUOTE _ | GREATER true) as t2), (CtxtParen (t1,_) :: _) when parenTokensBalance t1 t2 -> if debug then dprintf "RPAREN/RBRACE/RBRACK/BAR_RBRACK/RQUOTE/END at %a terminates CtxtParen()\n" outputPos tokenStartPos popCtxt() // Queue a dummy token at this position to check if any closing rules apply delayToken(tokenTup.UseLocation(ODUMMY(token))) returnToken tokenLexbufState token // Balancing rule. Encountering a 'end' can balance with a 'with' but only when not offside | END, (CtxtWithAsAugment(offsidePos) :: _) when not (tokenStartCol + 1 <= offsidePos.Column) -> if debug then dprintf "END at %a terminates CtxtWithAsAugment()\n" outputPos tokenStartPos popCtxt() delayToken(tokenTup.UseLocation(ODUMMY(token))) // make sure we queue a dummy token at this position to check if any closing rules apply returnToken tokenLexbufState OEND // Transition rule. CtxtNamespaceHead ~~~> CtxtSeqBlock // Applied when a token other then a long identifier is seen | _, (CtxtNamespaceHead (namespaceTokenPos, prevToken) :: _) -> match prevToken, token with | NAMESPACE, GLOBAL when namespaceTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtNamespaceHead (namespaceTokenPos, token)) returnToken tokenLexbufState token | (NAMESPACE | DOT), IDENT _ when namespaceTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtNamespaceHead (namespaceTokenPos, token)) returnToken tokenLexbufState token | IDENT _, DOT when namespaceTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtNamespaceHead (namespaceTokenPos, token)) returnToken tokenLexbufState token | _ -> if debug then dprintf "CtxtNamespaceHead: pushing CtxtSeqBlock\n" popCtxt() // Don't push a new context if next token is EOF, since that raises an offside warning match tokenTup.Token with | Parser.EOF _ -> returnToken tokenLexbufState token | _ -> delayToken tokenTup pushCtxt tokenTup (CtxtNamespaceBody namespaceTokenPos) pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) hwTokenFetch(false) // Transition rule. CtxtModuleHead ~~~> push CtxtModuleBody; push CtxtSeqBlock // Applied when a ':' or '=' token is seen // Otherwise it's a 'head' module declaration, so ignore it | _, (CtxtModuleHead (moduleTokenPos,prevToken) :: _) -> match prevToken, token with | MODULE, GLOBAL when moduleTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, token)) returnToken tokenLexbufState token | MODULE, (PUBLIC | PRIVATE | INTERNAL) when moduleTokenPos.Column < tokenStartPos.Column -> returnToken tokenLexbufState token | (MODULE | DOT), IDENT _ when moduleTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, token)) returnToken tokenLexbufState token | IDENT _, DOT when moduleTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, token)) returnToken tokenLexbufState token | _, (EQUALS | COLON) -> if debug then dprintf "CtxtModuleHead: COLON/EQUALS, pushing CtxtModuleBody and CtxtSeqBlock\n" popCtxt() pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos,false)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | _ -> if debug then dprintf "CtxtModuleHead: start of file, CtxtSeqBlock\n" popCtxt() // Don't push a new context if next token is EOF, since that raises an offside warning match tokenTup.Token with | Parser.EOF _ -> returnToken tokenLexbufState token | _ -> delayToken tokenTup pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos,true)) pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) hwTokenFetch(false) // Offside rule for SeqBlock. // f x // g x // ... | _, (CtxtSeqBlock(_,offsidePos,addBlockEnd) :: rest) when // NOTE: ;; does not terminate a 'namespace' body. ((isSemiSemi && not (match rest with (CtxtNamespaceBody _ | CtxtModuleBody (_,true)) :: _ -> true | _ -> false)) || let grace = match token, rest with // When in a type context allow a grace of 2 column positions for '|' tokens, permits // type x = // A of string <-- note missing '|' here - bad style, and perhaps should be disallowed // | B of int | BAR, (CtxtTypeDefns _ :: _) -> 2 // This ensures we close a type context seq block when the '|' marks // of a type definition are aligned with the 'type' token. // // type x = // | A // | B // // <-- close the type context sequence block here *) | _, (CtxtTypeDefns posType :: _) when offsidePos.Column = posType.Column && not (isTypeSeqBlockElementContinuator token) -> -1 // This ensures we close a namespace body when we see the next namespace definition // // namespace A.B.C // ... // // namespace <-- close the namespace body context here | _, (CtxtNamespaceBody posNamespace :: _) when offsidePos.Column = posNamespace.Column && (match token with NAMESPACE -> true | _ -> false) -> -1 | _ -> // Allow a grace of >2 column positions for infix tokens, permits // let x = // expr + expr // + expr + expr // And // let x = // expr // |> f expr // |> f expr // Note you need a semicolon in the following situation: // // let x = // stmt // -expr <-- not allowed, as prefix token is here considered infix // // i.e. // // let x = // stmt; // -expr (if isInfix token then infixTokenLength token + 1 else 0) (tokenStartCol + grace < offsidePos.Column)) -> if debug then dprintf "offside token at column %d indicates end of CtxtSeqBlock started at %a!\n" tokenStartCol outputPos offsidePos popCtxt() if debug then (match addBlockEnd with AddBlockEnd -> dprintf "end of CtxtSeqBlock, insert OBLOCKEND \n" | _ -> ()) match addBlockEnd with | AddBlockEnd -> insertToken OBLOCKEND | AddOneSidedBlockEnd -> insertToken ORIGHT_BLOCK_END | NoAddBlockEnd -> reprocess() // Offside rule for SeqBlock. // fff // eeeee // | _, (CtxtVanilla(offsidePos,_) :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside token at column %d indicates end of CtxtVanilla started at %a!\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() // Offside rule for SeqBlock - special case // [< ... >] // decl | _, (CtxtSeqBlock(NotFirstInSeqBlock,offsidePos,addBlockEnd) :: _) when (match token with GREATER_RBRACK -> true | _ -> false) -> // Attribute-end tokens mean CtxtSeqBlock rule is NOT applied to the next token replaceCtxt tokenTup (CtxtSeqBlock (FirstInSeqBlock,offsidePos,addBlockEnd)) reprocessWithoutBlockRule() // Offside rule for SeqBlock - avoiding inserting OBLOCKSEP on first item in block | _, (CtxtSeqBlock (FirstInSeqBlock,offsidePos,addBlockEnd) :: _) when useBlockRule -> // This is the first token in a block, or a token immediately // following an infix operator (see above). // Return the token, but only after processing any additional rules // applicable for this token. Don't apply the CtxtSeqBlock rule for // this token, but do apply it on subsequent tokens. if debug then dprintf "repull for CtxtSeqBlockStart\n" replaceCtxt tokenTup (CtxtSeqBlock (NotFirstInSeqBlock,offsidePos,addBlockEnd)) reprocessWithoutBlockRule() // Offside rule for SeqBlock - inserting OBLOCKSEP on subsequent items in a block when they are precisely aligned // // let f1 () = // expr // ... // ~~> insert OBLOCKSEP // // let f1 () = // let x = expr // ... // ~~> insert OBLOCKSEP // // let f1 () = // let x1 = expr // let x2 = expr // let x3 = expr // ... // ~~> insert OBLOCKSEP | _, (CtxtSeqBlock (NotFirstInSeqBlock,offsidePos,addBlockEnd) :: rest) when useBlockRule && not (let isTypeCtxt = (match rest with | (CtxtTypeDefns _ :: _) -> true | _ -> false) // Don't insert 'OBLOCKSEP' between namespace declarations let isNamespaceCtxt = (match rest with | (CtxtNamespaceBody _ :: _) -> true | _ -> false) if isNamespaceCtxt then (match token with NAMESPACE -> true | _ -> false) elif isTypeCtxt then isTypeSeqBlockElementContinuator token else isSeqBlockElementContinuator token) && (tokenStartCol = offsidePos.Column) && (tokenStartPos.OriginalLine <> offsidePos.OriginalLine) -> if debug then dprintf "offside at column %d matches start of block(%a)! delaying token, returning OBLOCKSEP\n" tokenStartCol outputPos offsidePos replaceCtxt tokenTup (CtxtSeqBlock (FirstInSeqBlock,offsidePos,addBlockEnd)) // No change to offside stack: another statement block starts... insertTokenFromPrevPosToCurrentPos OBLOCKSEP // Offside rule for CtxtLetDecl // let .... = // ... // // // let .... = // ... // // // let .... = // ... // <*> | _, (CtxtLetDecl (true,offsidePos) :: _) when isSemiSemi || (if isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from LET(offsidePos=%a)! delaying token, returning ODECLEND\n" tokenStartCol outputPos offsidePos popCtxt() insertToken ODECLEND | _, (CtxtDo offsidePos :: _) when isSemiSemi || (if isDoContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from DO(offsidePos=%a)! delaying token, returning ODECLEND\n" tokenStartCol outputPos offsidePos popCtxt() insertToken ODECLEND // class // interface AAA // ... // ... | _, (CtxtInterfaceHead offsidePos :: _) when isSemiSemi || (if isInterfaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from INTERFACE(offsidePos=%a)! pop and reprocess\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() | _, (CtxtTypeDefns offsidePos :: _) when isSemiSemi || (if isTypeContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from TYPE(offsidePos=%a)! pop and reprocess\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() // module A.B.M // ... // module M = ... // end // module M = ... // ... // NOTE: ;; does not terminate a whole file module body. | _, ((CtxtModuleBody (offsidePos,wholeFile)) :: _) when (isSemiSemi && not wholeFile) || tokenStartCol <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MODULE with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() // NOTE: ;; does not terminate a 'namespace' body. | _, ((CtxtNamespaceBody offsidePos) :: _) when (* isSemiSemi || *) (if isNamespaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from NAMESPACE with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() | _, ((CtxtException offsidePos) :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from EXCEPTION with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() // Pop CtxtMemberBody when offside. Insert an ODECLEND to indicate the end of the member | _, ((CtxtMemberBody(offsidePos)) :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MEMBER/OVERRIDE head with offsidePos %a!\n" tokenStartCol outputPos offsidePos popCtxt() insertToken ODECLEND // Pop CtxtMemberHead when offside | _, ((CtxtMemberHead(offsidePos)) :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MEMBER/OVERRIDE head with offsidePos %a!\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() | _, (CtxtIf offsidePos :: _) when isSemiSemi || (if isIfBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtIf\n" popCtxt() reprocess() | _, (CtxtWithAsLet offsidePos :: _) when isSemiSemi || (if isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWithAsLet\n" popCtxt() insertToken OEND | _, (CtxtWithAsAugment(offsidePos) :: _) when isSemiSemi || (if isWithAugmentBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWithAsAugment, isWithAugmentBlockContinuator = %b\n" (isWithAugmentBlockContinuator token) popCtxt() insertToken ODECLEND | _, (CtxtMatch offsidePos :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside from CtxtMatch\n" popCtxt() reprocess() | _, (CtxtFor offsidePos :: _) when isSemiSemi || (if isForLoopContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtFor\n" popCtxt() reprocess() | _, (CtxtWhile offsidePos :: _) when isSemiSemi || (if isWhileBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWhile\n" popCtxt() reprocess() | _, (CtxtWhen offsidePos :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside from CtxtWhen\n" popCtxt() reprocess() | _, (CtxtFun offsidePos :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside from CtxtFun\n" popCtxt() insertToken OEND | _, (CtxtFunction offsidePos :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> popCtxt() reprocess() | _, (CtxtTry offsidePos :: _) when isSemiSemi || (if isTryBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtTry\n" popCtxt() reprocess() // then // ... // else // // then // ... | _, (CtxtThen offsidePos :: _) when isSemiSemi || (if isThenBlockContinuator token then tokenStartCol + 1 else tokenStartCol)<= offsidePos.Column -> if debug then dprintf "offside from CtxtThen, popping\n" popCtxt() reprocess() // else ... // .... // | _, (CtxtElse (offsidePos) :: _) when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside from CtxtElse, popping\n" popCtxt() reprocess() // leadingBar=false permits match patterns without an initial '|' | _, (CtxtMatchClauses (leadingBar,offsidePos) :: _) when (isSemiSemi || (match token with // BAR occurs in pattern matching 'with' blocks | BAR -> let cond1 = tokenStartCol + (if leadingBar then 0 else 2) < offsidePos.Column let cond2 = tokenStartCol + (if leadingBar then 1 else 2) < offsidePos.Column if (cond1 <> cond2) then errorR(Lexhelp.IndentationProblem(FSComp.SR.lexfltSeparatorTokensOfPatternMatchMisaligned(),mkSynRange (startPosOfTokenTup tokenTup) tokenTup.LexbufState.EndPos)) cond1 | END -> tokenStartCol + (if leadingBar then -1 else 1) < offsidePos.Column | _ -> tokenStartCol + (if leadingBar then -1 else 1) < offsidePos.Column)) -> if debug then dprintf "offside from WITH, tokenStartCol = %d, offsidePos = %a, delaying token, returning OEND\n" tokenStartCol outputPos offsidePos popCtxt() insertToken OEND // namespace ... ~~~> CtxtNamespaceHead | NAMESPACE,(_ :: _) -> if debug then dprintf "NAMESPACE: entering CtxtNamespaceHead, awaiting end of long identifier to push CtxtSeqBlock\n" pushCtxt tokenTup (CtxtNamespaceHead (tokenStartPos, token)) returnToken tokenLexbufState token // module ... ~~~> CtxtModuleHead | MODULE,(_ :: _) -> insertComingSoonTokens("MODULE", MODULE_COMING_SOON, MODULE_IS_HERE) if debug then dprintf "MODULE: entering CtxtModuleHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtModuleHead (tokenStartPos, token)) hwTokenFetch(useBlockRule) // exception ... ~~~> CtxtException | EXCEPTION,(_ :: _) -> if debug then dprintf "EXCEPTION: entering CtxtException(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtException tokenStartPos) returnToken tokenLexbufState token // let ... ~~~> CtxtLetDecl // -- this rule only applies to // - 'static let' | LET(isUse), (ctxt :: _) when (match ctxt with CtxtMemberHead _ -> true | _ -> false) -> if debug then dprintf "LET: entering CtxtLetDecl(), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos let startPos = match ctxt with CtxtMemberHead startPos -> startPos | _ -> tokenStartPos popCtxt() // get rid of the CtxtMemberHead pushCtxt tokenTup (CtxtLetDecl(true,startPos)) returnToken tokenLexbufState (OLET(isUse)) // let ... ~~~> CtxtLetDecl // -- this rule only applies to // - 'let' 'right-on' a SeqBlock line // - 'let' in a CtxtMatchClauses, which is a parse error, but we need to treat as OLET to get various O...END tokens to enable parser to recover | LET(isUse), (ctxt :: _) -> let blockLet = match ctxt with | CtxtSeqBlock _ -> true | CtxtMatchClauses _ -> true | _ -> false if debug then dprintf "LET: entering CtxtLetDecl(blockLet=%b), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" blockLet outputPos tokenStartPos pushCtxt tokenTup (CtxtLetDecl(blockLet,tokenStartPos)) returnToken tokenLexbufState (if blockLet then OLET(isUse) else token) // let! ... ~~~> CtxtLetDecl | BINDER b, (ctxt :: _) -> let blockLet = match ctxt with CtxtSeqBlock _ -> true | _ -> false if debug then dprintf "LET: entering CtxtLetDecl(blockLet=%b), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" blockLet outputPos tokenStartPos pushCtxt tokenTup (CtxtLetDecl(blockLet,tokenStartPos)) returnToken tokenLexbufState (if blockLet then OBINDER b else token) | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT), ctxtStack when thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack -> if debug then dprintf "STATIC/MEMBER/OVERRIDE/DEFAULT: already inside CtxtMemberBody, popping all that context before starting next member...\n" // save this token, we'll consume it again later... delayTokenNoProcessing tokenTup // ... after we've popped all contexts and inserted END tokens while (match offsideStack.Head with CtxtMemberBody _ -> false | _ -> true) do match endTokenForACtxt offsideStack.Head with // some contexts require us to insert various END tokens | Some tok -> popCtxt() if debug then dprintf "--> inserting %+A\n" tok delayTokenNoProcessing (tokenTup.UseLocation(tok)) // for the rest, we silently pop them | _ -> popCtxt() popCtxt() // pop CtxtMemberBody if debug then dprintf "...STATIC/MEMBER/OVERRIDE/DEFAULT: finished popping all that context\n" hwTokenFetch(useBlockRule) // static member ... ~~~> CtxtMemberHead // static ... ~~~> CtxtMemberHead // member ... ~~~> CtxtMemberHead // override ... ~~~> CtxtMemberHead // default ... ~~~> CtxtMemberHead // val ... ~~~> CtxtMemberHead | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT),(ctxt :: _) when (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> if debug then dprintf "STATIC/MEMBER/OVERRIDE/DEFAULT: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead(tokenStartPos)) returnToken tokenLexbufState token // public new... ~~~> CtxtMemberHead | (PUBLIC | PRIVATE | INTERNAL),(_ctxt :: _) when (match peekNextToken() with NEW -> true | _ -> false) -> if debug then dprintf "PUBLIC/PRIVATE/INTERNAL NEW: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead(tokenStartPos)) returnToken tokenLexbufState token // new( ~~~> CtxtMemberHead, if not already there because of 'public' | NEW, ctxt :: _ when (match peekNextToken() with LPAREN -> true | _ -> false) && (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> if debug then dprintf "NEW: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead(tokenStartPos)) returnToken tokenLexbufState token // 'let ... = ' ~~~> CtxtSeqBlock | EQUALS, (CtxtLetDecl _ :: _) -> if debug then dprintf "CtxtLetDecl: EQUALS, pushing CtxtSeqBlock\n" pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | EQUALS, (CtxtTypeDefns _ :: _) -> if debug then dprintf "CtxType: EQUALS, pushing CtxtSeqBlock\n" pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | (LAZY | ASSERT), _ -> if isControlFlowOrNotSameLine() then if debug then dprintf "LAZY/ASSERT, pushing CtxtSeqBlock\n" pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState (match token with LAZY -> OLAZY | _ -> OASSERT) else returnToken tokenLexbufState token // 'with id = ' ~~~> CtxtSeqBlock // 'with M.id = ' ~~~> CtxtSeqBlock // 'with id1 = 1 // id2 = ... ~~~> CtxtSeqBlock // 'with id1 = 1 // M.id2 = ... ~~~> CtxtSeqBlock // '{ id = ... ' ~~~> CtxtSeqBlock // '{ M.id = ... ' ~~~> CtxtSeqBlock // '{ id1 = 1 // id2 = ... ' ~~~> CtxtSeqBlock // '{ id1 = 1 // M.id2 = ... ' ~~~> CtxtSeqBlock | EQUALS, ((CtxtWithAsLet _) :: _) // This detects 'with = '. | EQUALS, ((CtxtVanilla (_,true)) :: (CtxtSeqBlock _) :: (CtxtWithAsLet _ | CtxtParen(LBRACE,_)) :: _) -> if debug then dprintf "CtxtLetDecl/CtxtWithAsLet: EQUALS, pushing CtxtSeqBlock\n" // We don't insert begin/end block tokens for single-line bindings since we can't properly distinguish single-line *) // record update expressions such as "{ t with gbuckets=Array.copy t.gbuckets; gcount=t.gcount }" *) // These have a syntactically odd status because of the use of ";" to terminate expressions, so each *) // "=" binding is not properly balanced by "in" or "and" tokens in the single line syntax (unlike other bindings) *) if isControlFlowOrNotSameLine() then pushCtxtSeqBlock(true,AddBlockEnd) else pushCtxtSeqBlock(false,NoAddBlockEnd) returnToken tokenLexbufState token // 'new(... =' ~~~> CtxtMemberBody, CtxtSeqBlock // 'member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock // 'static member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock // 'default ... =' ~~~> CtxtMemberBody, CtxtSeqBlock // 'override ... =' ~~~> CtxtMemberBody, CtxtSeqBlock | EQUALS, ((CtxtMemberHead(offsidePos)) :: _) -> if debug then dprintf "CtxtMemberHead: EQUALS, pushing CtxtSeqBlock\n" replaceCtxt tokenTup (CtxtMemberBody (offsidePos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock | (BEGIN | LPAREN | SIG | LBRACE | LBRACK | LBRACK_BAR | LQUOTE _ | LESS true), _ -> if debug then dprintf "LPAREN etc., pushes CtxtParen, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token,tokenStartPos)) pushCtxtSeqBlock(false,NoAddBlockEnd) returnToken tokenLexbufState token // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock | STRUCT, ctxts when (match ctxts with | CtxtSeqBlock _ :: (CtxtModuleBody _ | CtxtTypeDefns _) :: _ -> // type ... = struct ... end // module ... = struct ... end true | _ -> false) (* type X<'a when 'a : struct> *) -> if debug then dprintf "LPAREN etc., pushes CtxtParen, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token,tokenStartPos)) pushCtxtSeqBlock(false,NoAddBlockEnd) returnToken tokenLexbufState token | RARROW, ctxts // Only treat '->' as a starting a sequence block in certain circumstances when (match ctxts with // comprehension/match | (CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtFun _) :: _ -> true // comprehension | (CtxtSeqBlock _ :: CtxtParen ((LBRACK | LBRACE | LBRACK_BAR), _) :: _) -> true // comprehension | (CtxtSeqBlock _ :: (CtxtDo _ | CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtTry _ | CtxtThen _ | CtxtElse _) :: _) -> true | _ -> false) -> if debug then dprintf "RARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxtSeqBlock(false,AddOneSidedBlockEnd) returnToken tokenLexbufState token | LARROW, _ when isControlFlowOrNotSameLine() -> if debug then dprintf "LARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token // do ~~> CtxtDo;CtxtSeqBlock (unconditionally) | (DO | DO_BANG), _ -> if debug then dprintf "DO: pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtDo (tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState (match token with DO -> ODO | DO_BANG -> ODO_BANG | _ -> failwith "unreachable") // The r.h.s. of an infix token begins a new block. | _, ctxts when (isInfix token && not (isSameLine()) && // This doesn't apply to the use of any infix tokens in a pattern match or 'when' block // For example // // match x with // | _ when true && // false -> // the 'false' token shouldn't start a new block // let x = 1 // x (match ctxts with CtxtMatchClauses _ :: _ -> false | _ -> true)) -> if debug then dprintf "(Infix etc.), pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxtSeqBlock(false,NoAddBlockEnd) returnToken tokenLexbufState token | WITH, ((CtxtTry _ | CtxtMatch _) :: _) -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup let leadingBar = match (peekNextToken()) with BAR -> true | _ -> false if debug then dprintf "WITH, pushing CtxtMatchClauses, lookaheadTokenStartPos = %a, tokenStartPos = %a\n" outputPos lookaheadTokenStartPos outputPos tokenStartPos pushCtxt lookaheadTokenTup (CtxtMatchClauses(leadingBar,lookaheadTokenStartPos)) returnToken tokenLexbufState OWITH | FINALLY, (CtxtTry _ :: _) -> if debug then dprintf "FINALLY, pushing pushCtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | WITH, (((CtxtException _ | CtxtTypeDefns _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtMemberBody _) as limCtxt) :: _) | WITH, ((CtxtSeqBlock _) as limCtxt :: CtxtParen(LBRACE,_) :: _) -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup match lookaheadTokenTup.Token with | RBRACE | IDENT _ // The next clause detects the access annotations after the 'with' in: // member x.PublicGetSetProperty // with public get i = "Ralf" // and private set i v = () // // as well as: // member x.PublicGetSetProperty // with inline get() = "Ralf" // and [] set(v) = () // | PUBLIC | PRIVATE | INTERNAL | INLINE -> let offsidePos = if lookaheadTokenStartPos.Column > tokenTup.LexbufState.EndPos.Column then // This detects: // { new Foo // with M() = 1 // and N() = 2 } // and treats the inner bindings as if they were member bindings. // (HOWEVER: note the above language construct is now deprecated/removed) // // It also happens to detect // { foo with m = 1; // n = 2 } // So we're careful to set the offside column to be the minimum required *) tokenStartPos else // This detects: // { foo with // m = 1; // n = 2 } // So we're careful to set the offside column to be the minimum required *) limCtxt.StartPos if debug then dprintf "WITH, pushing CtxtWithAsLet, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtWithAsLet(offsidePos)) // Detect 'with' bindings of the form // // with x = ... // // Which can only be part of // // { r with x = ... } // // and in this case push a CtxtSeqBlock to cover the sequence let isFollowedByLongIdentEquals = let tokenTup = popNextTokenTup() let res = isLongIdentEquals tokenTup.Token delayToken tokenTup res if isFollowedByLongIdentEquals then pushCtxtSeqBlock(false,NoAddBlockEnd) returnToken tokenLexbufState OWITH | _ -> if debug then dprintf "WITH, pushing CtxtWithAsAugment and CtxtSeqBlock, tokenStartPos = %a, limCtxt = %A\n" outputPos tokenStartPos limCtxt // // For attributes on properties: // member x.PublicGetSetProperty // with [] get() = "Ralf" if (match lookaheadTokenTup.Token with LBRACK_LESS -> true | _ -> false) && (lookaheadTokenStartPos.OriginalLine = tokenTup.StartPos.OriginalLine) then let offsidePos = tokenStartPos pushCtxt tokenTup (CtxtWithAsLet(offsidePos)) returnToken tokenLexbufState OWITH else // In these situations // interface I with // ... // end // exception ... with // ... // end // type ... with // ... // end // member x.P // with get() = ... // and set() = ... // member x.P with // get() = ... // The limit is "interface"/"exception"/"type" let offsidePos = limCtxt.StartPos pushCtxt tokenTup (CtxtWithAsAugment(offsidePos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | WITH, stack -> if debug then dprintf "WITH\n" if debug then dprintf "WITH --> NO MATCH, pushing CtxtWithAsAugment (type augmentation), stack = %A" stack pushCtxt tokenTup (CtxtWithAsAugment(tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | FUNCTION, _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup let leadingBar = match (peekNextToken()) with BAR -> true | _ -> false pushCtxt tokenTup (CtxtFunction(tokenStartPos)) pushCtxt lookaheadTokenTup (CtxtMatchClauses(leadingBar,lookaheadTokenStartPos)) returnToken tokenLexbufState OFUNCTION | THEN,_ -> if debug then dprintf "THEN, replacing THEN with OTHEN, pushing CtxtSeqBlock;CtxtThen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtThen(tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState OTHEN | ELSE, _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup match peekNextToken() with | IF when isSameLine() -> // We convert ELSE IF to ELIF since it then opens the block at the right point, // In particular the case // if e1 then e2 // else if e3 then e4 // else if e5 then e6 let _ = popNextTokenTup() if debug then dprintf "ELSE IF: replacing ELSE IF with ELIF, pushing CtxtIf, CtxtVanilla(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtIf(tokenStartPos)) returnToken tokenLexbufState ELIF | _ -> if debug then dprintf "ELSE: replacing ELSE with OELSE, pushing CtxtSeqBlock, CtxtElse(%a)\n" outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtElse(tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState OELSE | (ELIF | IF), _ -> if debug then dprintf "IF, pushing CtxtIf(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtIf (tokenStartPos)) returnToken tokenLexbufState token | MATCH, _ -> if debug then dprintf "MATCH, pushing CtxtMatch(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMatch (tokenStartPos)) returnToken tokenLexbufState token | FOR, _ -> if debug then dprintf "FOR, pushing CtxtFor(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtFor (tokenStartPos)) returnToken tokenLexbufState token | WHILE, _ -> if debug then dprintf "WHILE, pushing CtxtWhile(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtWhile (tokenStartPos)) returnToken tokenLexbufState token | WHEN, ((CtxtSeqBlock _) :: _) -> if debug then dprintf "WHEN, pushing CtxtWhen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtWhen (tokenStartPos)) returnToken tokenLexbufState token | FUN, _ -> if debug then dprintf "FUN, pushing CtxtFun(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtFun (tokenStartPos)) returnToken tokenLexbufState OFUN | INTERFACE, _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup match lookaheadTokenTup.Token with // type I = interface .... end | DEFAULT | OVERRIDE | INTERFACE | NEW | TYPE | STATIC | END | MEMBER | ABSTRACT | INHERIT | LBRACK_LESS -> if debug then dprintf "INTERFACE, pushing CtxtParen, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtParen (token,tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token // type C with interface .... with // type C = interface .... with | _ -> if debug then dprintf "INTERFACE, pushing CtxtInterfaceHead, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtInterfaceHead(tokenStartPos)) returnToken tokenLexbufState OINTERFACE_MEMBER | CLASS, _ -> if debug then dprintf "CLASS, pushing CtxtParen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token,tokenStartPos)) pushCtxtSeqBlock(true,AddBlockEnd) returnToken tokenLexbufState token | TYPE, _ -> insertComingSoonTokens("TYPE", TYPE_COMING_SOON, TYPE_IS_HERE) if debug then dprintf "TYPE, pushing CtxtTypeDefns(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtTypeDefns(tokenStartPos)) hwTokenFetch(useBlockRule) | TRY, _ -> if debug then dprintf "Try, pushing CtxtTry(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtTry (tokenStartPos)) // The ideal spec would be to push a begin/end block pair here, but we can only do that // if we are able to balance the WITH with the TRY. We can't do that because of the numerous ways // WITH is used in the grammar (see what happens when we hit a WITH below. // This hits in the single line case: "try make ef1 t with _ -> make ef2 t". pushCtxtSeqBlock(false,AddOneSidedBlockEnd) returnToken tokenLexbufState token | OBLOCKBEGIN,_ -> returnToken tokenLexbufState token | ODUMMY(_),_ -> if debug then dprintf "skipping dummy token as no offside rules apply\n" hwTokenFetch (useBlockRule) // Ordinary tokens start a vanilla block | _,CtxtSeqBlock _ :: _ -> pushCtxt tokenTup (CtxtVanilla(tokenStartPos, isLongIdentEquals token)) if debug then dprintf "pushing CtxtVanilla at tokenStartPos = %a\n" outputPos tokenStartPos returnToken tokenLexbufState token | _ -> returnToken tokenLexbufState token and rulesForBothSoftWhiteAndHardWhite(tokenTup:TokenTup) = match tokenTup.Token with // Insert HIGH_PRECEDENCE_PAREN_APP if needed | IDENT _ when (nextTokenIsAdjacentLParenOrLBrack tokenTup).IsSome -> let dotTokenTup = peekNextTokenTup() if debug then dprintf "inserting HIGH_PRECEDENCE_PAREN_APP at dotTokenPos = %a\n" outputPos (startPosOfTokenTup dotTokenTup) let hpa = match nextTokenIsAdjacentLParenOrLBrack tokenTup with | Some(LPAREN) -> HIGH_PRECEDENCE_PAREN_APP | Some(LBRACK) -> HIGH_PRECEDENCE_BRACK_APP | _ -> failwith "unreachable" delayToken(dotTokenTup.UseLocation(hpa)) delayToken(tokenTup) true // Insert HIGH_PRECEDENCE_TYAPP if needed | (DELEGATE | IDENT _ | IEEE64 _ | IEEE32 _ | DECIMAL _ | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | BIGNUM _) when peekAdjacentTypars false tokenTup -> let lessTokenTup = popNextTokenTup() delayToken (lessTokenTup.UseLocation(match lessTokenTup.Token with LESS _ -> LESS true | _ -> failwith "unreachable")) if debug then dprintf "softwhite inserting HIGH_PRECEDENCE_TYAPP at dotTokenPos = %a\n" outputPos (startPosOfTokenTup lessTokenTup) delayToken (lessTokenTup.UseLocation(HIGH_PRECEDENCE_TYAPP)) delayToken (tokenTup) true // Split this token to allow "1..2" for range specification | INT32_DOT_DOT (i,v) -> let dotdotPos = new LexbufState(tokenTup.EndPos.ShiftColumnBy(-2), tokenTup.EndPos, false) delayToken(new TokenTup(DOT_DOT, dotdotPos, tokenTup.LastTokenPos)) delayToken(tokenTup.UseShiftedLocation(INT32(i,v), 0, -2)) true // Split @>. and @@>. into two | RQUOTE_DOT (s,raw) -> let dotPos = new LexbufState(tokenTup.EndPos.ShiftColumnBy(-1), tokenTup.EndPos, false) delayToken(new TokenTup(DOT, dotPos, tokenTup.LastTokenPos)) delayToken(tokenTup.UseShiftedLocation(RQUOTE(s,raw), 0, -1)) true | MINUS | PLUS_MINUS_OP _ | PERCENT_OP _ | AMP | AMP_AMP when ((match tokenTup.Token with | PLUS_MINUS_OP s -> (s = "+") || (s = "+.") || (s = "-.") | PERCENT_OP s -> (s = "%") || (s = "%%") | _ -> true) && nextTokenIsAdjacent tokenTup && not (prevWasAtomicEnd && (snd(tokenTup.LastTokenPos) = startPosOfTokenTup tokenTup))) -> let plus = match tokenTup.Token with | PLUS_MINUS_OP s -> (s = "+") | _ -> false let plusOrMinus = match tokenTup.Token with | PLUS_MINUS_OP s -> (s = "+") | MINUS -> true | _ -> false let nextTokenTup = popNextTokenTup() /// Merge the location of the prefix token and the literal let delayMergedToken tok = delayToken(new TokenTup(tok,new LexbufState(tokenTup.LexbufState.StartPos,nextTokenTup.LexbufState.EndPos,nextTokenTup.LexbufState.PastEOF),tokenTup.LastTokenPos)) let noMerge() = let tokenName = match tokenTup.Token with | PLUS_MINUS_OP s | PERCENT_OP s -> s | AMP -> "&" | AMP_AMP -> "&&" | MINUS -> "-" | _ -> failwith "unreachable" let token = ADJACENT_PREFIX_OP tokenName delayToken nextTokenTup delayToken (tokenTup.UseLocation(token)) if plusOrMinus then match nextTokenTup.Token with | INT8(v,bad) -> delayMergedToken(INT8((if plus then v else -v),(plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT16(v,bad) -> delayMergedToken(INT16((if plus then v else -v),(plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT32(v,bad) -> delayMergedToken(INT32((if plus then v else -v),(plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT32_DOT_DOT(v,bad) -> delayMergedToken(INT32_DOT_DOT((if plus then v else -v),(plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT64(v,bad) -> delayMergedToken(INT64((if plus then v else -v),(plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | NATIVEINT(v) -> delayMergedToken(NATIVEINT(if plus then v else -v)) | IEEE32(v) -> delayMergedToken(IEEE32(if plus then v else -v)) | IEEE64(v) -> delayMergedToken(IEEE64(if plus then v else -v)) | DECIMAL(v) -> delayMergedToken(DECIMAL(if plus then v else System.Decimal.op_UnaryNegation v)) | BIGNUM(v,s) -> delayMergedToken(BIGNUM((if plus then v else "-"^v),s)) | _ -> noMerge() else noMerge() true | _ -> false and pushCtxtSeqBlock(addBlockBegin,addBlockEnd) = pushCtxtSeqBlockAt (peekNextTokenTup(),addBlockBegin,addBlockEnd) and pushCtxtSeqBlockAt(p:TokenTup,addBlockBegin,addBlockEnd) = if addBlockBegin then if debug then dprintf "--> insert OBLOCKBEGIN \n" delayToken(p.UseLocation(OBLOCKBEGIN)) pushCtxt p (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup p,addBlockEnd)) let rec swTokenFetch() = let tokenTup = popNextTokenTup() let tokenReplaced = rulesForBothSoftWhiteAndHardWhite(tokenTup) if tokenReplaced then swTokenFetch() else returnToken tokenTup.LexbufState tokenTup.Token //---------------------------------------------------------------------------- // Part VI. Publish the new lexer function. //-------------------------------------------------------------------------- member __.LexBuffer = lexbuf member __.Lexer _ = if not initialized then let _firstTokenTup = peekInitial() () if lightSyntaxStatus.Status then hwTokenFetch(true) else swTokenFetch() // LexFilterImpl does the majority of the work for offsides rules and other magic. // LexFilter just wraps it with light post-processing that introduces a few more 'coming soon' symbols, to // make it easier for the parser to 'look ahead' and safely shift tokens in a number of recovery scenarios. type LexFilter (lightSyntaxStatus:LightSyntaxStatus, compilingFsLib, lexer, lexbuf: UnicodeLexing.Lexbuf) = let inner = new LexFilterImpl (lightSyntaxStatus, compilingFsLib, lexer, lexbuf) // We don't interact with lexbuf state at all, any inserted tokens have same state/location as the real one read, so // we don't have to do any of the wrapped lexbuf magic that you see in LexFilterImpl. let delayedStack = System.Collections.Generic.Stack() let delayToken tok = delayedStack.Push tok let popNextToken() = if delayedStack.Count > 0 then let tokenTup = delayedStack.Pop() tokenTup else inner.Lexer() let insertComingSoonTokens comingSoon isHere = if debug then dprintf "inserting 6 copies of %+A before %+A\n" comingSoon isHere delayToken(isHere) for i in 1..6 do delayToken(comingSoon) member __.LexBuffer = inner.LexBuffer member __.Lexer _ = let rec loop() = let token = popNextToken() match token with | RBRACE -> insertComingSoonTokens RBRACE_COMING_SOON RBRACE_IS_HERE loop() | RPAREN -> insertComingSoonTokens RPAREN_COMING_SOON RPAREN_IS_HERE loop() | OBLOCKEND -> insertComingSoonTokens OBLOCKEND_COMING_SOON OBLOCKEND_IS_HERE loop() | _ -> token loop() fsharp-3.0.34/src/fsharp/tc.fsi0000775000175000017500000001437012260314606015263 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.TypeChecker open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Env open System.Collections.Generic [] type TcEnv = member DisplayEnv : DisplayEnv member NameEnv : Nameres.NameResolutionEnv (* Incremental construction of environments, e.g. for F# Interactive *) val internal CreateInitialTcEnv : TcGlobals * ImportMap * range * (CcuThunk * string list * bool) list -> TcEnv val internal AddCcuToTcEnv : TcGlobals * ImportMap * range * TcEnv * CcuThunk * autoOpens: string list * bool -> TcEnv val internal AddLocalRootModuleOrNamespace : Nameres.TcResultsSink -> TcGlobals -> ImportMap -> range -> TcEnv -> ModuleOrNamespaceType -> TcEnv val internal TcOpenDecl : Nameres.TcResultsSink -> TcGlobals -> ImportMap -> range -> range -> TcEnv -> Ast.LongIdent -> TcEnv type TopAttribs = { mainMethodAttrs : Attribs; netModuleAttrs : Attribs; assemblyAttrs : Attribs } type ConditionalDefines = string list val internal EmptyTopAttrs : TopAttribs val internal CombineTopAttrs : TopAttribs -> TopAttribs -> TopAttribs val internal TypecheckOneImplFile : TcGlobals * NiceNameGenerator * ImportMap * CcuThunk * (unit -> bool) * ConditionalDefines * Nameres.TcResultsSink -> TcEnv -> Tast.ModuleOrNamespaceType option -> ParsedImplFileInput -> Eventually val internal TypecheckOneSigFile : TcGlobals * NiceNameGenerator * ImportMap * CcuThunk * (unit -> bool) * ConditionalDefines * Nameres.TcResultsSink -> TcEnv -> ParsedSigFileInput -> Eventually //------------------------------------------------------------------------- // exceptions arising from type checking //------------------------------------------------------------------------- exception internal BakedInMemberConstraintName of string * range exception internal FunctionExpected of DisplayEnv * TType * range exception internal NotAFunction of DisplayEnv * TType * range * range exception internal Recursion of DisplayEnv * Ast.Ident * TType * TType * range exception internal RecursiveUseCheckedAtRuntime of DisplayEnv * ValRef * range exception internal LetRecEvaluatedOutOfOrder of DisplayEnv * ValRef * ValRef * range exception internal LetRecCheckedAtRuntime of range exception internal LetRecUnsound of DisplayEnv * ValRef list * range exception internal TyconBadArgs of DisplayEnv * TyconRef * int * range exception internal UnionCaseWrongArguments of DisplayEnv * int * int * range exception internal UnionCaseWrongNumberOfArgs of DisplayEnv * int * int * range exception internal FieldsFromDifferentTypes of DisplayEnv * RecdFieldRef * RecdFieldRef * range exception internal FieldGivenTwice of DisplayEnv * RecdFieldRef * range exception internal MissingFields of string list * range exception internal UnitTypeExpected of DisplayEnv * TType * bool * range exception internal FunctionValueUnexpected of DisplayEnv * TType * range exception internal UnionPatternsBindDifferentNames of range exception internal VarBoundTwice of Ast.Ident exception internal ValueRestriction of DisplayEnv * bool * Val * Typar * range exception internal FieldNotMutable of DisplayEnv * RecdFieldRef * range exception internal ValNotMutable of DisplayEnv * ValRef * range exception internal ValNotLocal of DisplayEnv * ValRef * range exception internal InvalidRuntimeCoercion of DisplayEnv * TType * TType * range exception internal IndeterminateRuntimeCoercion of DisplayEnv * TType * TType * range exception internal IndeterminateStaticCoercion of DisplayEnv * TType * TType * range exception internal StaticCoercionShouldUseBox of DisplayEnv * TType * TType * range exception internal RuntimeCoercionSourceSealed of DisplayEnv * TType * range exception internal CoercionTargetSealed of DisplayEnv * TType * range exception internal UpcastUnnecessary of range exception internal TypeTestUnnecessary of range exception internal SelfRefObjCtor of bool * range exception internal VirtualAugmentationOnNullValuedType of range exception internal NonVirtualAugmentationOnNullValuedType of range exception internal UseOfAddressOfOperator of range exception internal DeprecatedThreadStaticBindingWarning of range exception internal NotUpperCaseConstructor of range exception internal IntfImplInIntrinsicAugmentation of range exception internal IntfImplInExtrinsicAugmentation of range exception internal OverrideInIntrinsicAugmentation of range exception internal OverrideInExtrinsicAugmentation of range exception internal NonUniqueInferredAbstractSlot of TcGlobals * DisplayEnv * string * MethInfo * MethInfo * range exception internal StandardOperatorRedefinitionWarning of string * range exception internal ParameterlessStructCtor of range val internal TcFieldInit : range -> ILFieldInit -> Tast.Const val IsSecurityAttribute : TcGlobals -> ImportMap -> Dictionary -> Attrib -> range -> bool val IsSecurityCriticalAttribute : TcGlobals -> Attrib -> bool val LightweightTcValForUsingInBuildMethodCall : g : TcGlobals -> vref:ValRef -> vrefFlags : ValUseFlag -> vrefTypeInst : TTypes -> m : range -> Expr * TType fsharp-3.0.34/src/fsharp/FSharp.Compiler.Interactive.Settings/0000775000175000017500000000000012260314606023151 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler.Interactive.Settings/Makefile.in0000664000175000017500000000106212260314606025215 0ustar chrischrisNAME=FSharp.Compiler.Interactive.Settings ASSEMBLY = $(NAME).dll TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:library REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:Mono.Security.dll sources = \ ../../assemblyinfo/assemblyinfo.FSharp.Compiler.Interactive.Settings.dll.fs \ ../fsiaux.fsi \ ../fsiaux.fs \ ../fsiattrs.fs include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-lib-4 install-lib-4-5 ././@LongLink0000644000000000000000000000015212266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsprojfsharp-3.0.34/src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.f0000664000175000017500000000441712260314606032335 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug AnyCPU {649FA588-F02E-457C-9FCF-87E46407481E} Library v4.0 EXTENSIONTYPING;$(DefineConstants) FSharp.Compiler.Interactive.Settings 512 FSInteractiveSettings.txt assemblyinfo.FSharp.Compiler.Interactive.Settings.dll.fs fsiaux.fsi fsiaux.fs fsiattrs.fs {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/InternalFileSystemUtils.fsi0000775000175000017500000000143712260314606021457 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.FileSystem [] type internal Path = static member IsInvalidDirectory : path:string -> bool static member IsInvalidPath : path:string -> bool fsharp-3.0.34/src/fsharp/TraceCall.fs0000775000175000017500000001573212260314606016341 0ustar chrischrisnamespace Internal.Utilities.Debug open System open System.IO open System.Threading open System.Diagnostics open System.Runtime.InteropServices module internal TraceInterop = type MessageBeepType = | Default = -1 | Ok = 0x00000000 | Error = 0x00000010 | Question = 0x00000020 | Warning = 0x00000030 | Information = 0x00000040 [] let MessageBeep(_mbt:MessageBeepType):bool=failwith "" [] [] type internal Trace private() = static let mutable log = "" #if DEBUG_WITH_TIME_AND_THREAD_INFO static let TMinusZero = DateTime.Now #endif static let noopDisposable = { new IDisposable with member this.Dispose() = () } static let mutable out = Console.Out [] [] static val mutable private indent:int [] [] static val mutable private threadName:string /// Set to the semicolon-delimited names of the logging classes to be reported. /// Use * to mean all. static member Log with get() = log and set(value) = log<-value /// Output destination. static member Out with get() = out and set(value:TextWriter) = out<-value /// True if the given logging class should be logged. static member ShouldLog(loggingClass) = let result = Trace.Log = "*" || Trace.Log.Contains(loggingClass^";") || Trace.Log.EndsWith(loggingClass,StringComparison.Ordinal) result /// Description of the current thread. static member private CurrentThreadInfo() = if String.IsNullOrEmpty(Trace.threadName) then sprintf "(id=%d)" Thread.CurrentThread.ManagedThreadId else sprintf "(id=%d,name=%s)" Thread.CurrentThread.ManagedThreadId Trace.threadName /// Report the elapsed time since start static member private ElapsedTime(start) = let elapsed : TimeSpan = (DateTime.Now-start) sprintf "%A ms" elapsed.TotalMilliseconds /// Get a string with spaces for indention. static member private IndentSpaces() = new string(' ', Trace.indent) /// Log a message. static member private LogMessage(msg:string) = Trace.Out.Write(sprintf "%s%s" (Trace.IndentSpaces()) msg) Trace.Out.Flush() if Trace.Out<>Console.Out then // Always log to console. Console.Out.Write(sprintf "%s%s" (Trace.IndentSpaces()) msg) /// Name the current thread. static member private NameCurrentThread(threadName) = match threadName with | Some(threadName)-> let current = Trace.threadName if String.IsNullOrEmpty(current) then Trace.threadName <- threadName else if not(current.Contains(threadName)) then Trace.threadName <- current^","^threadName | None -> () /// Base implementation of the call function static member private CallImpl(loggingClass,functionName,descriptionFunc,threadName:string option) : IDisposable = #if DEBUG if Trace.ShouldLog(loggingClass) then Trace.NameCurrentThread(threadName) let description = try descriptionFunc() with e->"No description because of exception" #if DEBUG_WITH_TIME_AND_THREAD_INFO let threadInfo = Trace.CurrentThreadInfo() let indent = Trace.IndentSpaces() let start = DateTime.Now Trace.LogMessage(sprintf "Entering %s(%s) %s t-plus %fms %s\n" functionName loggingClass threadInfo (start-TMinusZero).TotalMilliseconds description) #else Trace.LogMessage(sprintf "Entering %s(%s) %s\n" functionName loggingClass description) #endif Trace.indent<-Trace.indent+1 {new IDisposable with member d.Dispose() = Trace.indent<-Trace.indent-1 #if DEBUG_WITH_TIME_AND_THREAD_INFO Trace.LogMessage(sprintf "Exitting %s %s %s\n" functionName threadInfo (Trace.ElapsedTime(start)))} #else Trace.LogMessage(sprintf "Exitting %s\n" functionName)} #endif else noopDisposable : IDisposable #else ignore(loggingClass,functionName,descriptionFunc,threadName) noopDisposable : IDisposable #endif /// Log a method as its called. static member Call(loggingClass:string,functionName:string,descriptionFunc:unit->string) = Trace.CallImpl(loggingClass,functionName,descriptionFunc,None) /// Log a method as its called. Expected always to be called on the same thread which will be named 'threadName' static member CallByThreadNamed(loggingClass:string,functionName:string,threadName:string,descriptionFunc:unit->string) = Trace.CallImpl(loggingClass,functionName,descriptionFunc,Some(threadName)) /// Log a message by logging class. static member PrintLine(loggingClass:string, messageFunc:unit->string) = #if DEBUG if Trace.ShouldLog(loggingClass) then let message = try messageFunc() with _-> "No message because of exception.\n" Trace.LogMessage(sprintf "%s%s" message System.Environment.NewLine) #else ignore(loggingClass,messageFunc) #endif /// Log a message by logging class. static member Print(loggingClass:string, messageFunc:unit->string) = #if DEBUG if Trace.ShouldLog(loggingClass) then let message = try messageFunc() with _-> "No message because of exception.\n" Trace.LogMessage(message) #else ignore(loggingClass,messageFunc) #endif /// Make a beep when the given loggingClass is matched. static member private BeepHelper(loggingClass,beeptype) = #if DEBUG if Trace.ShouldLog(loggingClass) then TraceInterop.MessageBeep(beeptype) |> ignore #else ignore(loggingClass,beeptype) #endif /// Make the "OK" sound when the given loggingClass is matched. static member BeepOk(loggingClass:string) = Trace.BeepHelper(loggingClass,TraceInterop.MessageBeepType.Ok) /// Make the "Error" sound when the given loggingClass is matched. static member BeepError(loggingClass:string) = Trace.BeepHelper(loggingClass,TraceInterop.MessageBeepType.Error) /// Make the default sound when the given loggingClass is matched. static member Beep(loggingClass:string) = Trace.BeepHelper(loggingClass,TraceInterop.MessageBeepType.Default) fsharp-3.0.34/src/fsharp/sr.fs0000775000175000017500000001764612260314606015141 0ustar chrischris namespace Microsoft.FSharp.Compiler open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Reflection open System.Globalization open System.IO open System.Text open System.Reflection module internal SR = let private resources = lazy (new System.Resources.ResourceManager("fsstrings", System.Reflection.Assembly.GetExecutingAssembly())) let GetString(name:string) = let s = resources.Force().GetString(name, System.Globalization.CultureInfo.CurrentUICulture) #if DEBUG if null = s then System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name) #endif s let GetObject(name:string) = let o = resources.Force().GetObject(name, System.Globalization.CultureInfo.CurrentUICulture) #if DEBUG if null = o then System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name) #endif o module internal DiagnosticMessage = open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Reflection open System.Reflection open Internal.Utilities.StructuredFormat let staticInvokeFlags = BindingFlags.Public ||| BindingFlags.InvokeMethod ||| BindingFlags.Static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) = FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl) let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition() let mkFunTy a b = funTyC.MakeGenericType([| a;b |]) let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer) let isFunctionType (ty1:System.Type) = isNamedType(ty1) && ty1.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC) let rec destFunTy (ty:System.Type) = if isFunctionType ty then ty, ty.GetGenericArguments() else match ty.BaseType with | null -> failwith "destFunTy: not a function type" | b -> destFunTy b let buildFunctionForOneArgPat (ty: System.Type) impl = let _,tys = destFunTy ty let rty = tys.[1] // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"') mkFunctionValue tys (fun inp -> impl rty inp) let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj = match fmt.[i] with | '%' -> go args ty (i+1) | 'd' | 'f' | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | _ -> failwith "bad format specifier" // newlines and tabs get converted to strings when read from a resource file // this will preserve their original intention let postProcessString (s : string) = s.Replace("\\n","\n").Replace("\\t","\t") let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T = let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt let len = fmt.Length /// Function to capture the arguments and then run. let rec capture args ty i = if i >= len || (fmt.[i] = '%' && i+1 >= len) then let b = new System.Text.StringBuilder() b.AppendFormat(messageString, (Array.ofList (List.rev args))) |> ignore box(b.ToString()) // REVIEW: For these purposes, this should be a nop, but I'm leaving it // in incase we ever decide to support labels for the error format string // E.g., "%s%d" elif System.Char.IsSurrogatePair(fmt,i) then capture args ty (i+2) else match fmt.[i] with | '%' -> let i = i+1 capture1 fmt i args ty capture | _ -> capture args ty (i+1) (unbox (capture [] (typeof<'T>) 0) : 'T) type ResourceString<'T>(fmtString : string, fmt : Printf.StringFormat<'T>) = member a.Format = createMessageString fmtString fmt let DeclareResourceString ((messageID : string),(fmt : Printf.StringFormat<'T>)) = let mutable messageString = SR.GetString(messageID) #if DEBUG // validate that the message string exists let fmtString = fmt.Value if null = messageString then System.Diagnostics.Debug.Assert(false, sprintf "**DECLARED MESSAGE ERROR** String resource %s does not exist" messageID) messageString <- "" // validate the formatting specifiers let countFormatHoles (s : string) = // remove escaped format holes let s = s.Replace("{{","").Replace("}}","") let len = s.Length - 2 let mutable pos = 0 let mutable nHoles = 0 let mutable order = Set.empty while pos < len do if s.[pos] = '{' then let mutable pos' = pos+1 while System.Char.IsNumber(s.[pos']) do pos' <- pos' + 1 if pos' > pos+1 && s.[pos'] = '}' then nHoles <- nHoles + 1 let ordern = (int) (s.[(pos+1) .. (pos'-1)]) order <- order.Add(ordern) pos <- pos' pos <- pos + 1 // the sort should be unnecessary, but better safe than sorry nHoles,Set.toList order |> List.sort |> List.rev let countFormatPlaceholders (s : string) = // strip any escaped % characters - yes, this will fail if given %%%... let s = s.Replace("%%","") if s = "" then 0 else let len = s.Length - 1 let mutable pos = 0 let mutable nFmt = 0 while pos < len do if s.[pos] = '%' && (s.[pos+1] = 'd' || s.[pos+1] = 's' || s.[pos+1] = 'f') then nFmt <- nFmt + 1 pos <- pos + 2 ; else pos <- pos + 1 ; nFmt let nHoles,holes = countFormatHoles messageString let nPlaceholders = countFormatPlaceholders fmtString // first, verify that the number of holes in the message string does not exceed the // largest hole reference if holes <> [] && holes.[0] > nHoles - 1 then System.Diagnostics.Debug.Assert(false, sprintf "**DECLARED MESSAGE ERROR** Message string %s contains %d holes, but references hole %d" messageID nHoles holes.[0]) // next, verify that the number of format placeholders is the same as the number of holes if nHoles <> nPlaceholders then System.Diagnostics.Debug.Assert(false, sprintf "**DECLARED MESSAGE ERROR** Message string %s contains %d holes, but its format specifier contains %d placeholders" messageID nHoles nPlaceholders) #endif messageString <- postProcessString messageString new ResourceString<'T>(messageString, fmt) fsharp-3.0.34/src/fsharp/build.fsi0000775000175000017500000006632512260314606015763 0ustar chrischris //---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Loading initial context, reporting errors etc. module internal Microsoft.FSharp.Compiler.Build open System.Text open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.MSBuildResolver open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Core.CompilerServices #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif #if DEBUG #if COMPILED_AS_LANGUAGE_SERVICE_DLL module internal CompilerService = #else module internal FullCompiler = #endif val showAssertForUnexpectedException : bool ref #endif /// Signature file suffixes val sigSuffixes : string list /// Implementation file suffixes val implSuffixes : string list /// Script file suffixes val scriptSuffixes : string list val IsScript : string -> bool /// File suffixes where #light is the default val lightSyntaxDefaultExtensions : string list //---------------------------------------------------------------------------- // Parsing inputs //-------------------------------------------------------------------------- val QualFileNameOfUniquePath : range * string list -> Ast.QualifiedNameOfFile val PrependPathToInput : Ast.Ident list -> Ast.ParsedInput -> Ast.ParsedInput val ParseInput : (UnicodeLexing.Lexbuf -> Parser.token) * ErrorLogger * UnicodeLexing.Lexbuf * string option * string * isLastCompiland: bool -> Ast.ParsedInput //---------------------------------------------------------------------------- // Errors //-------------------------------------------------------------------------- type ErrorStyle = | DefaultErrors | EmacsErrors | TestErrors | VSErrors | GccErrors val RangeOfError : PhasedError -> range option val SplitRelatedErrors : PhasedError -> PhasedError * PhasedError list val OutputPhasedError : StringBuilder -> PhasedError -> bool -> unit val SanitizeFileName : filename:string -> implicitIncludeDir:string -> string val OutputErrorOrWarning : implicitIncludeDir:string * showFullPaths: bool * flattenErrors: bool * errorStyle: ErrorStyle * warning:bool -> StringBuilder -> PhasedError -> unit val OutputErrorOrWarningContext : prefix:string -> fileLineFunction:(string -> int -> string) -> StringBuilder -> PhasedError -> unit //---------------------------------------------------------------------------- // Options and configuration //-------------------------------------------------------------------------- // For command-line options that can be suffixed with +/- type OptionSwitch = | On | Off /// The spec value describes the action of the argument, /// and whether it expects a following parameter. type OptionSpec = | OptionClear of bool ref | OptionFloat of (float -> unit) | OptionInt of (int -> unit) | OptionSwitch of (OptionSwitch -> unit) | OptionIntList of (int -> unit) | OptionIntListSwitch of (int -> OptionSwitch -> unit) | OptionRest of (string -> unit) | OptionSet of bool ref | OptionString of (string -> unit) | OptionStringList of (string -> unit) | OptionStringListSwitch of (string -> OptionSwitch -> unit) | OptionUnit of (unit -> unit) | OptionHelp of (CompilerOptionBlock list -> unit) // like OptionUnit, but given the "options" | OptionGeneral of (string list -> bool) * (string list -> string list) // Applies? * (ApplyReturningResidualArgs) and CompilerOption = /// CompilerOption(name, argumentDescriptionString, actionSpec, exceptionOpt, helpTextOpt CompilerOption of string * string * OptionSpec * Option * string option and CompilerOptionBlock = PublicOptions of string * CompilerOption list | PrivateOptions of CompilerOption list val printCompilerOptionBlocks : CompilerOptionBlock list -> unit // for printing usage val dumpCompilerOptionBlocks : CompilerOptionBlock list -> unit // for QA val filterCompilerOptionBlock : (CompilerOption -> bool) -> CompilerOptionBlock -> CompilerOptionBlock exception AssemblyNotResolved of (*originalName*) string * range exception FileNameNotResolved of (*filename*) string * (*description of searched locations*) string * range exception DeprecatedCommandLineOptionFull of string * range exception DeprecatedCommandLineOptionForHtmlDoc of string * range exception DeprecatedCommandLineOptionSuggestAlternative of string * string * range exception DeprecatedCommandLineOptionNoDescription of string * range exception InternalCommandLineOption of string * range exception HashLoadedSourceHasIssues of (*warnings*) exn list * (*errors*) exn list * range exception HashLoadedScriptConsideredSource of range type AssemblyReference = | AssemblyReference of range * string member Range : range member Text : string type AssemblyResolution = {/// The original reference to the assembly. originalReference : AssemblyReference /// Path to the resolvedFile resolvedPath : string /// Search path used to find this spot. resolvedFrom : ResolvedFrom /// The qualified name of the assembly fusionName : string /// Name of the redist, if any, that the assembly was found in. redist : string /// Whether or not this is an installed system assembly (for example, System.dll) sysdir : bool // Lazily populated ilAssemblyRef for this reference. ilAssemblyRef : ILAssemblyRef option ref } type UnresolvedAssemblyReference = UnresolvedAssemblyReference of string * AssemblyReference list #if EXTENSIONTYPING type ResolvedExtensionReference = ResolvedExtensionReference of string * AssemblyReference list * Tainted list #endif type CompilerTarget = | WinExe | ConsoleExe | Dll | Module member IsExe : bool type ResolveAssemblyReferenceMode = | Speculative | ReportErrors type VersionFlag = | VersionString of string | VersionFile of string | VersionNone member GetVersionInfo : (*implicitIncludeDir:*)string -> ILVersionInfo member GetVersionString : (*implicitIncludeDir:*)string -> string type TcConfigBuilder = { mutable mscorlibAssemblyName: string; mutable autoResolveOpenDirectivesToDlls: bool; mutable noFeedback: bool; mutable stackReserveSize: int32 option; mutable implicitIncludeDir: string; mutable openBinariesInMemory: bool; mutable openDebugInformationForLaterStaticLinking: bool; defaultFSharpBinariesDir: string; mutable compilingFslib: bool; mutable compilingFslib20: string option; mutable compilingFslib40: bool; mutable useIncrementalBuilder: bool; mutable includes: string list; mutable implicitOpens: string list; mutable useFsiAuxLib: bool; mutable framework: bool; mutable resolutionEnvironment : Microsoft.FSharp.Compiler.MSBuildResolver.ResolutionEnvironment mutable implicitlyResolveAssemblies : bool mutable addVersionSpecificFrameworkReferences : bool /// Set if the user has explicitly turned indentation-aware syntax on/off mutable light: bool option; mutable conditionalCompilationDefines: string list; /// Sources added into the build with #load mutable loadedSources: (range * string) list; mutable referencedDLLs: AssemblyReference list; mutable knownUnresolvedReferences : UnresolvedAssemblyReference list; optimizeForMemory: bool; mutable subsystemVersion : int * int mutable useHighEntropyVA : bool mutable inputCodePage: int option; mutable embedResources : string list; mutable globalWarnAsError: bool; mutable globalWarnLevel: int; mutable specificWarnOff: int list; mutable specificWarnOn: int list; mutable specificWarnAsError: int list mutable specificWarnAsWarn : int list mutable mlCompatibility:bool; mutable checkOverflow:bool; mutable showReferenceResolutions:bool; mutable outputFile : string option; mutable resolutionFrameworkRegistryBase : string; mutable resolutionAssemblyFoldersSuffix : string; mutable resolutionAssemblyFoldersConditions : string; mutable platform : ILPlatform option mutable prefer32Bit : bool mutable useMonoResolution : bool mutable target : CompilerTarget mutable debuginfo : bool mutable testFlagEmitFeeFeeAs100001 : bool mutable dumpDebugInfo : bool mutable debugSymbolFile : string option mutable typeCheckOnly : bool mutable parseOnly : bool mutable importAllReferencesOnly : bool mutable simulateException : string option mutable printAst : bool mutable tokenizeOnly : bool mutable testInteractionParser : bool mutable reportNumDecls : bool mutable printSignature : bool mutable printSignatureFile : string mutable xmlDocOutputFile : string option mutable stats : bool mutable generateFilterBlocks : bool mutable signer : string option mutable container : string option mutable delaysign : bool mutable version : VersionFlag mutable metadataVersion : string option mutable standalone : bool mutable extraStaticLinkRoots : string list mutable noSignatureData : bool mutable onlyEssentialOptimizationData : bool mutable useOptimizationDataFile : bool mutable useSignatureDataFile : bool mutable jitTracking : bool mutable ignoreSymbolStoreSequencePoints : bool mutable internConstantStrings : bool mutable extraOptimizationIterations : int mutable win32res : string mutable win32manifest : string mutable includewin32manifest : bool mutable linkResources : string list mutable showFullPaths : bool mutable errorStyle : ErrorStyle mutable validateTypeProviders : bool mutable utf8output : bool mutable flatErrors : bool mutable maxErrors : int mutable abortOnError : bool mutable baseAddress : int32 option #if DEBUG mutable writeGeneratedILFiles : bool (* write il files? *) mutable showOptimizationData : bool #endif mutable showTerms : bool mutable writeTermsToFiles : bool mutable doDetuple : bool mutable doTLR : bool mutable doFinalSimplify : bool mutable optsOn : bool mutable optSettings : Opt.OptimizationSettings mutable emitTailcalls : bool mutable lcid : int option mutable productNameForBannerText : string mutable showBanner : bool mutable showTimes : bool mutable showLoadedAssemblies : bool mutable continueAfterParseFailure : bool #if EXTENSIONTYPING mutable showExtensionTypeMessages : bool #endif mutable pause : bool mutable indirectCallArrayMethods : bool mutable alwaysCallVirt : bool mutable noDebugData : bool /// If true, indicates all type checking and code generation is in the context of fsi.exe isInteractive : bool isInvalidationSupported : bool } static member CreateNew : defaultFSharpBinariesDir: string * optimizeForMemory: bool * implicitIncludeDir: string * isInteractive: bool * isInvalidationSupported: bool -> TcConfigBuilder member DecideNames : string list -> outfile: string * pdbfile: string option * assemblyName: string member TurnWarningOff : range * string -> unit member TurnWarningOn : range * string -> unit member AddIncludePath : range * string * string -> unit member AddReferencedAssemblyByPath : range * string -> unit member RemoveReferencedAssemblyByPath : range * string -> unit member AddEmbeddedResource : string -> unit static member SplitCommandLineResourceInfo : string -> string * string * ILResourceAccess [] // Immutable TcConfig type TcConfig = member mscorlibAssemblyName: string; member autoResolveOpenDirectivesToDlls: bool; member noFeedback: bool; member stackReserveSize: int32 option; member implicitIncludeDir: string; member openBinariesInMemory: bool; member openDebugInformationForLaterStaticLinking: bool; member fsharpBinariesDir: string; member compilingFslib: bool; member compilingFslib20: string option; member compilingFslib40: bool; member useIncrementalBuilder: bool; member includes: string list; member implicitOpens: string list; member useFsiAuxLib: bool; member framework: bool; member implicitlyResolveAssemblies : bool /// Set if the user has explicitly turned indentation-aware syntax on/off member light: bool option; member conditionalCompilationDefines: string list; member subsystemVersion : int * int member useHighEntropyVA : bool member referencedDLLs: AssemblyReference list; member optimizeForMemory: bool; member inputCodePage: int option; member embedResources : string list; member globalWarnAsError: bool; member globalWarnLevel: int; member specificWarnOn: int list; member specificWarnOff: int list; member specificWarnAsError: int list member specificWarnAsWarn : int list member mlCompatibility:bool; member checkOverflow:bool; member showReferenceResolutions:bool; member outputFile : string option; member resolutionFrameworkRegistryBase : string; member resolutionAssemblyFoldersSuffix : string; member resolutionAssemblyFoldersConditions : string; member platform : ILPlatform option member prefer32Bit : bool member useMonoResolution : bool member target : CompilerTarget member debuginfo : bool member testFlagEmitFeeFeeAs100001 : bool member dumpDebugInfo : bool member debugSymbolFile : string option member typeCheckOnly : bool member parseOnly : bool member importAllReferencesOnly : bool member simulateException : string option member printAst : bool member tokenizeOnly : bool member testInteractionParser : bool member reportNumDecls : bool member printSignature : bool member printSignatureFile : string member xmlDocOutputFile : string option member stats : bool member generateFilterBlocks : bool member signer : string option member container : string option member delaysign : bool member version : VersionFlag member metadataVersion : string option member standalone : bool member extraStaticLinkRoots : string list member noSignatureData : bool member onlyEssentialOptimizationData : bool member useOptimizationDataFile : bool member useSignatureDataFile : bool member jitTracking : bool member ignoreSymbolStoreSequencePoints : bool member internConstantStrings : bool member extraOptimizationIterations : int member win32res : string member win32manifest : string member includewin32manifest : bool member linkResources : string list member showFullPaths : bool member errorStyle : ErrorStyle member validateTypeProviders : bool member utf8output : bool member flatErrors : bool member maxErrors : int member baseAddress : int32 option #if DEBUG member writeGeneratedILFiles : bool (* write il files? *) member showOptimizationData : bool #endif member showTerms : bool member writeTermsToFiles : bool member doDetuple : bool member doTLR : bool member doFinalSimplify : bool member optSettings : Opt.OptimizationSettings member emitTailcalls : bool member lcid : int option member optsOn : bool member productNameForBannerText : string member showBanner : bool member showTimes : bool member showLoadedAssemblies : bool member continueAfterParseFailure : bool #if EXTENSIONTYPING member showExtensionTypeMessages : bool #endif member pause : bool member indirectCallArrayMethods : bool member alwaysCallVirt : bool member noDebugData : bool /// If true, indicates all type checking and code generation is in the context of fsi.exe member isInteractive : bool member isInvalidationSupported : bool member ComputeLightSyntaxInitialStatus : string -> bool member ClrRoot : string list /// Get the loaded sources that exist and issue a warning for the ones that don't member GetAvailableLoadedSources : unit -> (range*string) list member ComputeCanContainEntryPoint : sourceFiles:string list -> bool list /// File system query based on TcConfig settings member ResolveSourceFile : range * string * string -> string /// File system query based on TcConfig settings member MakePathAbsolute : string -> string static member Create : TcConfigBuilder * validate: bool -> TcConfig member TargetMscorlibVersion : System.Version member TargetIsSilverlight : bool //---------------------------------------------------------------------------- // Tables of referenced DLLs //-------------------------------------------------------------------------- type ImportedBinary = { FileName: string; RawMetadata: ILModuleDef #if EXTENSIONTYPING ProviderGeneratedAssembly: System.Reflection.Assembly option IsProviderGenerated: bool ProviderGeneratedStaticLinkMap : ProvidedAssemblyStaticLinkingMap option #endif ILAssemblyRefs : ILAssemblyRef list ILScopeRef: ILScopeRef} type ImportedAssembly = { ILScopeRef: ILScopeRef; FSharpViewOfMetadata: CcuThunk; AssemblyAutoOpenAttributes: string list; AssemblyInternalsVisibleToAttributes: string list; #if EXTENSIONTYPING IsProviderGenerated: bool; mutable TypeProviders: Tainted list; #endif FSharpOptimizationData : Lazy> } [] type TcAssemblyResolutions = member GetAssemblyResolutions : unit -> AssemblyResolution list static member SplitNonFoundationalResolutions : TcConfig -> AssemblyResolution list * AssemblyResolution list * UnresolvedAssemblyReference list static member BuildFromPriorResolutions : TcConfig * AssemblyResolution list * UnresolvedAssemblyReference list -> TcAssemblyResolutions [] type TcConfigProvider = static member Constant : TcConfig -> TcConfigProvider static member BasedOnMutableBuilder : TcConfigBuilder -> TcConfigProvider [] type TcImports = interface System.IDisposable //new : TcImports option -> TcImports member SetBase : TcImports -> unit member DllTable : NameMap with get member GetImportedAssemblies : unit -> ImportedAssembly list member GetCcusInDeclOrder : unit -> CcuThunk list /// This excludes any framework imports (which may be shared between multiple builds) member GetCcusExcludingBase : unit -> CcuThunk list member FindDllInfo : range * string -> ImportedBinary member TryFindDllInfo : range * string * lookupOnly: bool -> option member FindCcuFromAssemblyRef : range * ILAssemblyRef -> Tast.CcuResolutionResult #if EXTENSIONTYPING member ProviderGeneratedTypeRoots : ProviderGeneratedType list #endif member GetImportMap : unit -> Import.ImportMap /// Try to resolve a referenced assembly based on TcConfig settings. member TryResolveAssemblyReference : AssemblyReference * ResolveAssemblyReferenceMode -> OperationResult /// Resolve a referenced assembly and report an error if the resolution fails. member ResolveAssemblyReference : AssemblyReference * ResolveAssemblyReferenceMode -> AssemblyResolution list /// Try to find the given assembly reference. member TryFindExistingFullyQualifiedPathFromAssemblyRef : ILAssemblyRef -> string option #if EXTENSIONTYPING /// Try to find a provider-generated assembly member TryFindProviderGeneratedAssemblyByName : assemblyName:string -> System.Reflection.Assembly option #endif /// Report unresolved references that also weren't consumed by any type providers. member ReportUnresolvedAssemblyReferences : UnresolvedAssemblyReference list -> unit member SystemRuntimeContainsType : string -> bool static member BuildFrameworkTcImports : TcConfigProvider * AssemblyResolution list * AssemblyResolution list -> TcGlobals * TcImports static member BuildNonFrameworkTcImports : (string->unit) option * TcConfigProvider * TcGlobals * TcImports * AssemblyResolution list * UnresolvedAssemblyReference list -> TcImports static member BuildTcImports : TcConfigProvider -> TcGlobals * TcImports //---------------------------------------------------------------------------- // Special resources in DLLs //-------------------------------------------------------------------------- val IsSignatureDataResource : ILResource -> bool val IsOptimizationDataResource : ILResource -> bool val IsReflectedDefinitionsResource : ILResource -> bool #if NO_COMPILER_BACKEND #else val WriteSignatureData : TcConfig * TcGlobals * Tastops.Remap * CcuThunk * string -> ILResource val WriteOptimizationData : TcGlobals * string * CcuThunk * Opt.LazyModuleInfo -> ILResource #endif val GetNameOfILModule : ILModuleDef -> string val GetFSharpCoreLibraryName : unit -> string //---------------------------------------------------------------------------- // Finding and requiring DLLs //-------------------------------------------------------------------------- val RequireDLL : TcImports -> TcEnv -> range -> string -> TcEnv * (ImportedBinary list * ImportedAssembly list) //---------------------------------------------------------------------------- // Processing # commands //-------------------------------------------------------------------------- val ProcessMetaCommandsFromInput : ('T -> range * string -> 'T) * ('T -> range * string -> 'T) * ('T -> range * string -> unit) -> TcConfigBuilder -> Ast.ParsedInput -> string -> 'T -> 'T val GetScopedPragmasForInput : Ast.ParsedInput -> ScopedPragma list val GetErrorLoggerFilteringByScopedPragmas : checkFile:bool * ScopedPragma list * ErrorLogger -> ErrorLogger val ApplyNoWarnsToTcConfig : TcConfig -> (Ast.ParsedInput*string) -> TcConfig val ApplyMetaCommandsFromInputToTcConfig : TcConfig -> (Ast.ParsedInput * string) -> TcConfig val GetAssemblyResolutionInformation : TcConfig -> AssemblyResolution list * UnresolvedAssemblyReference list //---------------------------------------------------------------------------- // Loading the default library sets //-------------------------------------------------------------------------- val DefaultBasicReferencesForOutOfProjectSources : string list //---------------------------------------------------------------------------- // Parsing inputs //-------------------------------------------------------------------------- val ParseOneInputFile : TcConfig * Lexhelp.LexResourceManager * string list * string * isLastCompiland: bool * ErrorLogger * (*retryLocked*) bool -> ParsedInput option //---------------------------------------------------------------------------- // Type checking and querying the type checking state //-------------------------------------------------------------------------- val GetInitialTypecheckerEnv : string option -> range -> TcConfig -> TcImports -> TcGlobals -> TcEnv [] type TcState = member NiceNameGenerator : Ast.NiceNameGenerator member Ccu : CcuThunk member TcEnvFromSignatures : TcEnv member NextStateAfterIncrementalFragment : TcEnv -> TcState member TcEnvFromImpls : TcEnv val TypecheckInitialState : range * string * TcConfig * TcGlobals * TcImports * Ast.NiceNameGenerator * TcEnv -> TcState val TypecheckOneInputEventually : (unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * Nameres.TcResultsSink * TcState * Ast.ParsedInput -> Eventually<(TcEnv * TopAttribs * Tast.TypedImplFile list) * TcState> val TypecheckMultipleInputsFinish : (TcEnv * TopAttribs * 'T list) list * TcState -> (TcEnv * TopAttribs * 'T list) * TcState val TypecheckClosedInputSetFinish : TypedImplFile list * TcState -> TcState * TypedAssembly val TypecheckClosedInputSet : (unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * TcState * Ast.ParsedInput list -> TcState * TopAttribs * Tast.TypedAssembly * TcEnv val TypecheckSingleInputAndFinishEventually : (unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * Nameres.TcResultsSink * TcState * Ast.ParsedInput -> Eventually<(TcEnv * TopAttribs * Tast.TypedImplFile list) * TcState> val ParseCompilerOptions : (string -> unit) -> CompilerOptionBlock list -> string list -> unit val ReportWarning : int -> int list -> int list -> PhasedError -> bool val ReportWarningAsError : int -> int list -> int list -> int list -> int list -> bool -> PhasedError -> bool val highestInstalledNetFrameworkVersionMajorMinor : unit -> System.Version * string //---------------------------------------------------------------------------- // #load closure //-------------------------------------------------------------------------- type CodeContext = | Evaluation | Compilation | Editing type LoadClosure = { /// The source files along with the ranges of the #load positions in each file. SourceFiles: (string * range list) list /// The resolved references along with the ranges of the #r positions in each file. References: (string * AssemblyResolution list) list /// The list of references that were not resolved during load closure. These may still be extension references. UnresolvedReferences : UnresolvedAssemblyReference list /// The list of all sources in the closure with inputs when available Inputs: (string * ParsedInput option) list /// The #nowarns NoWarns: (string * range list) list /// *Parse* errors seen while parsing root of closure RootErrors : PhasedError list /// *Parse* warnings seen while parsing root of closure RootWarnings : PhasedError list } static member ComputeClosureOfSourceText : filename : string * source : string * implicitDefines:CodeContext * lexResourceManager : Lexhelp.LexResourceManager -> LoadClosure static member ComputeClosureOfSourceFiles : tcConfig:TcConfig * (string * range) list * implicitDefines:CodeContext * useDefaultScriptingReferences : bool * lexResourceManager : Lexhelp.LexResourceManager -> LoadClosure fsharp-3.0.34/src/fsharp/ExtensibleDumper.fsi0000775000175000017500000000051612260314606020131 0ustar chrischrisnamespace Internal.Utilities.Diagnostic open System open System.Diagnostics open System.Reflection open System.Collections.Generic #if EXTENSIBLE_DUMPER #if DEBUG type internal ExtensibleDumper = class new : x:obj -> ExtensibleDumper member Debug : string static member Dump : o:obj -> string end #endif #endif fsharp-3.0.34/src/fsharp/InternalFileSystemUtils.fs0000775000175000017500000000461512260314606021307 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // This module related to bugs 4577 and 4651. // Briefly, there are lots of .Net APIs that take a 'string filename' and if the // filename is 'relative', they'll use Directory.GetCurrentDirectory() to 'base' the file. // Since that involves mutable global state, it's anathema to call any of these methods // with a non-absolute filename inside the VS process, since you never know what the // current working directory may be. // Thus the idea is to replace all calls to e.g. File.Exists() with calls to File.SafeExists, // which asserts that we are passing an 'absolute' filename and thus not relying on the // (unreliable) current working directory. // At this point, we have done 'just enough' work to feel confident about the behavior of // the product, but in an ideal world (perhaps with 4651) we should ensure that we never // call unsafe .Net APIs and always call the 'safe' equivalents below, instead. namespace Internal.Utilities.FileSystem open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System open System.IO open System.Diagnostics type internal Path() = static member IsInvalidDirectory(path:string) = path=null || path.IndexOfAny(Path.GetInvalidPathChars()) <> -1 static member IsInvalidPath(path:string) = if String.IsNullOrEmpty(path) then true else if path.IndexOfAny(Path.GetInvalidPathChars()) <> - 1 then true // broken out into branch for ease of setting break points else let directory = Path.GetDirectoryName(path) let filename = Path.GetFileName(path) if Path.IsInvalidDirectory(directory) then true elif FileSystem.IsInvalidFilename(filename) then true else false fsharp-3.0.34/src/fsharp/formats.fs0000775000175000017500000002432512260314606016160 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Formats open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.ConstraintSolver type FormatItem = Simple of TType | FuncAndVal let copyAndFixupFormatTypar m tp = let _,_,tinst = FreshenAndFixupTypars m TyparRigidity.Flexible [] [] [tp] List.head tinst let lowestDefaultPriority = 0 (* See comment on TyparConstraint.DefaultsTo *) let mkFlexibleFormatTypar m tys dflt = let tp = NewTypar (TyparKind.Type,TyparRigidity.Rigid,Typar(mkSynId m "fmt",HeadTypeStaticReq,true),false,TyparDynamicReq.Yes,[],false,false) tp.FixupConstraints [ TyparConstraint.SimpleChoice (tys,m); TyparConstraint.DefaultsTo (lowestDefaultPriority,dflt,m)]; copyAndFixupFormatTypar m tp let mkFlexibleIntFormatTypar g m = mkFlexibleFormatTypar m [ g.byte_ty; g.int16_ty; g.int32_ty; g.int64_ty; g.sbyte_ty; g.uint16_ty; g.uint32_ty; g.uint64_ty;g.nativeint_ty;g.unativeint_ty; ] g.int_ty let mkFlexibleFloatFormatTypar g m = mkFlexibleFormatTypar m [ g.float_ty; g.float32_ty; g.decimal_ty ] g.float_ty let isDigit c = ('0' <= c && c <= '9') type FormatInfoRegister = { mutable leftJustify : bool; mutable numPrefixIfPos : char option; mutable addZeros : bool; mutable precision : bool} let newInfo ()= { leftJustify = false; numPrefixIfPos = None; addZeros = false; precision = false} let ParseFormatString m g fmt bty cty dty = let len = String.length fmt let rec parseLoop acc i = if i >= len then let argtys = if acc |> List.forall (fun (p, _) -> p = None) then // without positional specifiers acc |> List.map snd |> List.rev else failwithf "%s" <| FSComp.SR.forPositionalSpecifiersNotPermitted() let aty = List.foldBack (-->) argtys dty let ety = mkTupledTy g argtys aty,ety elif System.Char.IsSurrogatePair(fmt,i) then parseLoop acc (i+2) else let c = fmt.[i] match c with | '%' -> let i = i+1 if i >= len then failwithf "%s" <| FSComp.SR.forMissingFormatSpecifier() let info = newInfo() let rec flags i = if i >= len then failwithf "%s" <| FSComp.SR.forMissingFormatSpecifier() match fmt.[i] with | '-' -> if info.leftJustify then failwithf "%s" <| FSComp.SR.forFlagSetTwice("-"); info.leftJustify <- true; flags(i+1) | '+' -> if info.numPrefixIfPos <> None then failwithf "%s" <| FSComp.SR.forPrefixFlagSpacePlusSetTwice() info.numPrefixIfPos <- Some '+'; flags(i+1) | '0' -> if info.addZeros then failwithf "%s" <| FSComp.SR.forFlagSetTwice("0"); info.addZeros <- true; flags(i+1) | ' ' -> if info.numPrefixIfPos <> None then failwithf "%s" <| FSComp.SR.forPrefixFlagSpacePlusSetTwice(); info.numPrefixIfPos <- Some ' '; flags(i+1) | '#' -> failwithf "%s" <| FSComp.SR.forHashSpecifierIsInvalid(); | _ -> i let rec digitsPrecision i = if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); match fmt.[i] with | c when isDigit c -> digitsPrecision (i+1) | _ -> i let precision i = if i >= len then failwithf "%s" <| FSComp.SR.forBadWidth(); match fmt.[i] with | c when isDigit c -> info.precision <- true; false,digitsPrecision (i+1) | '*' -> info.precision <- true; true,(i+1) | _ -> failwithf "%s" <| FSComp.SR.forPrecisionMissingAfterDot() let optionalDotAndPrecision i = if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); match fmt.[i] with | '.' -> precision (i+1) | _ -> false,i let rec digitsWidthAndPrecision i = if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); match fmt.[i] with | c when isDigit c -> digitsWidthAndPrecision (i+1) | _ -> optionalDotAndPrecision i let widthAndPrecision i = if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); match fmt.[i] with | c when isDigit c -> false,digitsWidthAndPrecision i | '*' -> true,optionalDotAndPrecision (i+1) | _ -> false,optionalDotAndPrecision i let rec digitsPosition n i = if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); match fmt.[i] with | c when isDigit c -> digitsPosition (n*10 + int c - int '0') (i+1) | '$' -> Some n, i+1 | _ -> None, i let position i = match fmt.[i] with | c when c >= '1' && c <= '9' -> let p, i' = digitsPosition (int c - int '0') (i+1) if p = None then None, i else p, i' | _ -> None, i let posi, i = position i let i = flags i let widthArg,(precisionArg,i) = widthAndPrecision i if i >= len then failwithf "%s" <| FSComp.SR.forBadPrecision(); let acc = if precisionArg then (Option.map ((+)1) posi, g.int_ty) :: acc else acc let acc = if widthArg then (Option.map ((+)1) posi, g.int_ty) :: acc else acc let checkNoPrecision c = if info.precision then failwithf "%s" <| FSComp.SR.forFormatDoesntSupportPrecision(c.ToString()) let checkNoZeroFlag c = if info.addZeros then failwithf "%s" <| FSComp.SR.forDoesNotSupportZeroFlag(c.ToString()) let checkNoNumericPrefix c = if info.numPrefixIfPos <> None then failwithf "%s" <| FSComp.SR.forDoesNotSupportPrefixFlag(c.ToString(), (Option.get info.numPrefixIfPos).ToString()) let checkOtherFlags c = checkNoPrecision c; checkNoZeroFlag c; checkNoNumericPrefix c let ch = fmt.[i] match ch with | '%' -> parseLoop acc (i+1) | ('d' | 'i' | 'o' | 'u' | 'x' | 'X') -> if info.precision then failwithf "%s" <| FSComp.SR.forFormatDoesntSupportPrecision(ch.ToString()); parseLoop ((posi, mkFlexibleIntFormatTypar g m) :: acc) (i+1) | ('l' | 'L') -> if info.precision then failwithf "%s" <| FSComp.SR.forFormatDoesntSupportPrecision(ch.ToString()); let i = i+1 // "bad format specifier ... In F# code you can use %d, %x, %o or %u instead ..." if i >= len then failwithf "%s" <| FSComp.SR.forBadFormatSpecifier() // Always error for %l and %Lx failwithf "%s" <| FSComp.SR.forLIsUnnecessary() match fmt.[i] with | ('d' | 'i' | 'o' | 'u' | 'x' | 'X') -> parseLoop ((posi, mkFlexibleIntFormatTypar g m) :: acc) (i+1) | _ -> failwithf "%s" <| FSComp.SR.forBadFormatSpecifier() | ('h' | 'H') -> failwithf "%s" <| FSComp.SR.forHIsUnnecessary() | 'M' -> parseLoop ((posi, g.decimal_ty) :: acc) (i+1) | ('f' | 'F' | 'e' | 'E' | 'g' | 'G') -> parseLoop ((posi, mkFlexibleFloatFormatTypar g m) :: acc) (i+1) | 'b' -> checkOtherFlags ch; parseLoop ((posi, g.bool_ty) :: acc) (i+1) | 'c' -> checkOtherFlags ch; parseLoop ((posi, g.char_ty) :: acc) (i+1) | 's' -> checkOtherFlags ch; parseLoop ((posi, g.string_ty) :: acc) (i+1) | 'O' -> checkOtherFlags ch; parseLoop ((posi, NewInferenceType ()) :: acc) (i+1) | 'A' -> match info.numPrefixIfPos with | None // %A has BindingFlags=Public, %+A has BindingFlags=Public | NonPublic | Some '+' -> parseLoop ((posi, NewInferenceType ()) :: acc) (i+1) | Some _ -> failwithf "%s" <| FSComp.SR.forDoesNotSupportPrefixFlag(ch.ToString(), (Option.get info.numPrefixIfPos).ToString()) | 'a' -> checkOtherFlags ch; let xty = NewInferenceType () let fty = bty --> (xty --> cty) parseLoop ((Option.map ((+)1) posi, xty) :: (posi, fty) :: acc) (i+1) | 't' -> checkOtherFlags ch; parseLoop ((posi, bty --> cty) :: acc) (i+1) | c -> failwithf "%s" <| FSComp.SR.forBadFormatSpecifierGeneral(String.make 1 c) | _ -> parseLoop acc (i+1) parseLoop [] 0 fsharp-3.0.34/src/fsharp/est.fs0000775000175000017500000023660412260314606015305 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Type providers, validation of provided types, etc. namespace Microsoft.FSharp.Compiler #if EXTENSIONTYPING module internal ExtensionTyping = open System open System.IO open System.Reflection open System.Collections.Generic open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics // dprintfn open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library // frontAndBack open Internal.Utilities.FileSystem #if TYPE_PROVIDER_SECURITY module internal GlobalsTheLanguageServiceCanPoke = //+++ GLOBAL STATE // This is the LS dialog, it is only poked once, when the LS is first constructed. It lives here so the compiler can invoke it at the right moment in time. let mutable displayLSTypeProviderSecurityDialogBlockingUI = None : (string -> unit) option // This is poked by the LS (service.fs:UntypedParseImpl) and read later when the LS dialog pops up (code in servicem.fs:CreateService), called via displayLSTypeProviderSecurityDialogBlockingUI. // It would be complicated to plumb this info through end-to-end, so we use a global. Since the LS only checks one file at a time, it is safe from race conditions. let mutable theMostRecentFileNameWeChecked = None : string option module internal ApprovalIO = let ApprovalsAbsoluteFileName = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), @"Microsoft\FSharp\3.0\type-providers.txt") let partiallyCanonicalizeFileName fn = (new FileInfo(fn)).FullName // avoid some trivialities like double backslashes or spaces before slashes (but preserves others like casing distinctions), see also bug 206595 [] type TypeProviderApprovalStatus = | NotTrusted of string | Trusted of string member this.FileName = #if DEBUG let verifyIsPartiallyCanonicalized(fn) = assert(partiallyCanonicalizeFileName fn = fn) fn #else let verifyIsPartiallyCanonicalized = id #endif match this with | TypeProviderApprovalStatus.NotTrusted(fn) -> verifyIsPartiallyCanonicalized fn | TypeProviderApprovalStatus.Trusted(fn) -> verifyIsPartiallyCanonicalized fn member this.isTrusted = match this with | TypeProviderApprovalStatus.NotTrusted(_) -> false | TypeProviderApprovalStatus.Trusted(_) -> true let tryDoWithFileStreamUnderExclusiveLock(filename, f) = use file = File.Open(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite) file.Lock(0L, 0L) f file // will retry 5 times with 100ms sleeps in between // may throw System.IO.IOException if it fails after that let tryDoWithFileStreamUnderExclusiveLockWithRetryFor500ms(filename, f) = let SLEEP_PER_TRY = 100 let MAX_TRIES = 5 let mutable retryCount = 0 let mutable ok = false let mutable result = Unchecked.defaultof<_> while not(ok) do try let r = tryDoWithFileStreamUnderExclusiveLock(filename, f) ok <- true result <- r with | :? IOException when retryCount < MAX_TRIES -> retryCount <- retryCount + 1 System.Threading.Thread.Sleep(SLEEP_PER_TRY) result let doWithApprovalsFile (fileStreamOpt : FileStream option) f = match fileStreamOpt with | None -> if not(FileSystem.SafeExists(ApprovalsAbsoluteFileName)) then assert(fileStreamOpt = None) let directoryName = Path.GetDirectoryName(ApprovalsAbsoluteFileName) if not(Directory.Exists(directoryName)) then Directory.CreateDirectory(directoryName) |> ignore // this creates multiple directory levels if needed tryDoWithFileStreamUnderExclusiveLockWithRetryFor500ms(ApprovalsAbsoluteFileName, fun file -> let text = #if DEBUG System.String.Join(System.Environment.NewLine, ["""# This file is normally edited by Visual Studio, via Tools\Options\F# Tools\Type Provider Approvals""" """# or by referencing a Type Provider from F# code for the first time.""" """# Each line should be one of these general forms:""" """# NOT_TRUSTED c:\path\filename.dll""" """# TRUSTED c:\path\filename.dll""" """# Lines starting with a '#' are ignored as comments.""" ]) + System.Environment.NewLine #else "" #endif let bytes = System.Text.Encoding.UTF8.GetBytes(text) file.Write(bytes, 0, bytes.Length) f file) else tryDoWithFileStreamUnderExclusiveLockWithRetryFor500ms(ApprovalsAbsoluteFileName, f) | Some fs -> f fs /// read all TP approval data. does not throw, will swallow exceptions and return empty list if there's trouble. let readApprovalsFile fileStreamOpt : TypeProviderApprovalStatus list = try doWithApprovalsFile fileStreamOpt (fun file -> file.Seek(0L, SeekOrigin.Begin) |> ignore let sr = new StreamReader(file, System.Text.Encoding.UTF8) // Note: we use 'let', not 'use' here, as closing the reader would close the file, and we don't want that let lines = let text = sr.ReadToEnd() text.Split([| System.Environment.NewLine |], StringSplitOptions.RemoveEmptyEntries) |> Array.filter (fun s -> not(s.StartsWith("#"))) let result = ResizeArray() let mutable bad = false for s in lines do if s.StartsWith("NOT_TRUSTED ") then let partiallyCanonicalizedFileName = partiallyCanonicalizeFileName(s.Substring(12)) match result |> Seq.tryFind (fun r -> String.Compare(r.FileName, partiallyCanonicalizedFileName, StringComparison.CurrentCultureIgnoreCase) = 0) with | None -> result.Add(TypeProviderApprovalStatus.NotTrusted(partiallyCanonicalizedFileName)) | Some(r) -> // there is another line of the file with the same filename if r.isTrusted then bad <- true // if conflicting status, then declare the file to be bad; if just duplicating same info, is ok elif s.StartsWith("TRUSTED ") then let partiallyCanonicalizedFileName = partiallyCanonicalizeFileName(s.Substring(8)) match result |> Seq.tryFind (fun r -> String.Compare(r.FileName, partiallyCanonicalizedFileName, StringComparison.CurrentCultureIgnoreCase) = 0) with | None -> result.Add(TypeProviderApprovalStatus.Trusted(partiallyCanonicalizedFileName)) | Some(r) -> // there is another line of the file with the same filename if not(r.isTrusted) then bad <- true // if conflicting status, then declare the file to be bad; if just duplicating same info, is ok else bad <- true if bad then // The file is corrupt, just delete it file.SetLength(0L) result.Clear() try failwith "approvals file is corrupt, deleting" // just to produce a first-chance exception for debugging with _ -> () result |> List.ofSeq) with | :? System.IO.IOException -> [] | e -> System.Diagnostics.Debug.Assert(false, e.ToString()) // what other exceptions might occur? [] /// append one piece of TP approval info. may throw if trouble with file IO. let appendApprovalStatus fileStreamOpt (status:TypeProviderApprovalStatus) = let ok,line = let partiallyCanonicalizedFileName = partiallyCanonicalizeFileName status.FileName match status with | TypeProviderApprovalStatus.NotTrusted(_) -> if Path.IsInvalidPath(partiallyCanonicalizedFileName) then assert(false) false, "" else true, "NOT_TRUSTED "+partiallyCanonicalizedFileName | TypeProviderApprovalStatus.Trusted(_) -> if Path.IsInvalidPath(partiallyCanonicalizedFileName) then assert(false) false, "" else true, "TRUSTED "+partiallyCanonicalizedFileName if ok then doWithApprovalsFile fileStreamOpt (fun file -> let bytes = System.Text.Encoding.UTF8.GetBytes(line + System.Environment.NewLine) file.Seek(0L, SeekOrigin.End) |> ignore file.Write(bytes, 0, bytes.Length) ) /// replace one piece of TP approval info. may throw if trouble with file IO. let replaceApprovalStatus fileStreamOpt (status : TypeProviderApprovalStatus) = let partiallyCanonicalizedFileName = partiallyCanonicalizeFileName status.FileName doWithApprovalsFile fileStreamOpt (fun file -> let priorApprovals = readApprovalsFile(Some file) let keepers = priorApprovals |> List.filter (fun app -> String.Compare(app.FileName, partiallyCanonicalizedFileName, StringComparison.CurrentCultureIgnoreCase) <> 0) file.SetLength(0L) // delete file keepers |> List.iter (appendApprovalStatus (Some file)) appendApprovalStatus (Some file) status ) module internal ApprovalsChecking = let discoverIfIsApprovedAndPopupDialogIfUnknown(runTimeAssemblyFileName : string, approvals : ApprovalIO.TypeProviderApprovalStatus list ref, popupDialogCallback : (string->unit) option) : bool= let partiallyCanonicalizedFileName = ApprovalIO.partiallyCanonicalizeFileName runTimeAssemblyFileName let rec coreLogic(whatToDoIfAssemblyIsUnknown) = match !approvals |> List.tryFind (function | ApprovalIO.TypeProviderApprovalStatus.Trusted(s) -> String.Compare(partiallyCanonicalizedFileName,s,StringComparison.CurrentCultureIgnoreCase)=0 | ApprovalIO.TypeProviderApprovalStatus.NotTrusted(s) -> String.Compare(partiallyCanonicalizedFileName,s,StringComparison.CurrentCultureIgnoreCase)=0) with | Some(ApprovalIO.TypeProviderApprovalStatus.Trusted _) -> true | Some(ApprovalIO.TypeProviderApprovalStatus.NotTrusted _) -> false | None -> whatToDoIfAssemblyIsUnknown() coreLogic(fun() -> // This assembly is unknown. If we're in VS, pop up the dialog match popupDialogCallback with | None -> () | Some callback -> // The callback had UI thread affinity. But this code path runs as part of the VS background interactive checker, which must never block on the UI // thread (or else it may deadlock, see bug 380608). System.Threading.ThreadPool.QueueUserWorkItem(fun _ -> // the callback will pop up the dialog callback(runTimeAssemblyFileName) ) |> ignore // Behave like a 'NotTrusted'. If the user trusts the assembly via the UI in a moment, the callback is responsible for requesting a re-typecheck. false) #endif type TypeProviderDesignation = TypeProviderDesignation of string exception ProvidedTypeResolution of range * System.Exception exception ProvidedTypeResolutionNoRange of System.Exception type ResolutionEnvironment = { resolutionFolder : string outputFile : string option showResolutionMessages : bool referencedAssemblies : string[] temporaryFolder : string } let private getTypeProviderImplementationTypes (runTimeAssemblyFileName:string, designTimeAssemblyNameString:string, m:range) : Type list = let raiseError (e:exn) = raise <| TypeProviderError(FSComp.SR.etProviderHasWrongDesignerAssembly(typeof.Name, designTimeAssemblyNameString,e.Message), runTimeAssemblyFileName, m) let designTimeAssemblyOpt = // Designer assembly resolution logic: // If the assembly name ends with .dll, or is just a simple name, we look in the directory next to runtime assembly // Else we only look in the GAC let loadFromDir fileName = let runTimeAssemblyPath = Path.GetDirectoryName runTimeAssemblyFileName let designTimeAssemblyPath = Path.Combine (runTimeAssemblyPath, fileName) try Some (FileSystem.AssemblyLoadFrom designTimeAssemblyPath) with e -> raiseError e let loadFromGac () = try let asmName = System.Reflection.AssemblyName designTimeAssemblyNameString Some (FileSystem.AssemblyLoad (asmName)) with e -> raiseError e if designTimeAssemblyNameString.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) then loadFromDir designTimeAssemblyNameString else let name = AssemblyName designTimeAssemblyNameString if name.Name.Equals(name.FullName, StringComparison.OrdinalIgnoreCase) then let fileName = designTimeAssemblyNameString+".dll" loadFromDir fileName else loadFromGac() match designTimeAssemblyOpt with | Some loadedDesignTimeAssembly -> try let exportedTypes = loadedDesignTimeAssembly.GetExportedTypes() let filtered = [ for t in exportedTypes do let ca = t.GetCustomAttributes(typeof, true) if ca <> null && ca.Length > 0 then yield t ] filtered with e -> raiseError e | None -> [] /// Create an instance of a type provider from the implementation type for the type provider in the /// design-time assembly by using reflection-invoke on a constructor for the type provider. let createTypeProvider (typeProviderImplementationType:System.Type, runtimeAssemblyPath, resolutionEnvironment:ResolutionEnvironment, isInvalidationSupported:bool, isInteractive:bool, systemRuntimeContainsType : string -> bool, systemRuntimeAssemblyVersion : System.Version, m:range) = let protect f = try f () with | err -> let strip (e:exn) = match e with | :? TargetInvocationException as e -> e.InnerException | :? TypeInitializationException as e -> e.InnerException | _ -> e let e = strip (strip err) raise <| TypeProviderError(FSComp.SR.etTypeProviderConstructorException(e.Message), typeProviderImplementationType.FullName, m) if typeProviderImplementationType.GetConstructor([| typeof |]) <> null then let e = new TypeProviderConfig(systemRuntimeContainsType, ResolutionFolder=resolutionEnvironment.resolutionFolder, RuntimeAssembly=runtimeAssemblyPath, ReferencedAssemblies=Array.copy resolutionEnvironment.referencedAssemblies, TemporaryFolder=resolutionEnvironment.temporaryFolder, IsInvalidationSupported=isInvalidationSupported, IsHostedExecution= isInteractive, SystemRuntimeAssemblyVersion = systemRuntimeAssemblyVersion) protect (fun () -> Activator.CreateInstance(typeProviderImplementationType, [| box e|]) :?> ITypeProvider ) elif typeProviderImplementationType.GetConstructor [| |] <> null then protect (fun () -> Activator.CreateInstance(typeProviderImplementationType) :?> ITypeProvider ) else raise (TypeProviderError(FSComp.SR.etProviderDoesNotHaveValidConstructor(), typeProviderImplementationType.FullName, m)) let GetTypeProvidersOfAssembly(displayPSTypeProviderSecurityDialogBlockingUI : (string->unit) option, validateTypeProviders:bool, #if TYPE_PROVIDER_SECURITY approvals, #endif runTimeAssemblyFileName:string, ilScopeRefOfRuntimeAssembly:ILScopeRef, designTimeAssemblyNameString:string, resolutionEnvironment:ResolutionEnvironment, isInvalidationSupported:bool, isInteractive:bool, systemRuntimeContainsType : string -> bool, systemRuntimeAssemblyVersion : System.Version, m:range) : bool * Tainted list = let ok = #if TYPE_PROVIDER_SECURITY if not validateTypeProviders then true // if not validating, then everything is ok else // pick the PS dialog if available (if so, we are definitely being called from a 'Build' from the PS), else use the LS one if available let dialog = match displayPSTypeProviderSecurityDialogBlockingUI with | None -> GlobalsTheLanguageServiceCanPoke.displayLSTypeProviderSecurityDialogBlockingUI | _ -> displayPSTypeProviderSecurityDialogBlockingUI let r = ApprovalsChecking.discoverIfIsApprovedAndPopupDialogIfUnknown(runTimeAssemblyFileName, approvals, dialog) if not r then warning(Error(FSComp.SR.etTypeProviderNotApproved(runTimeAssemblyFileName), m)) r #else true #endif let providerSpecs = if ok then try let designTimeAssemblyName = try AssemblyName designTimeAssemblyNameString |> Some with | :? ArgumentException -> errorR(Error(FSComp.SR.etInvalidTypeProviderAssemblyName(runTimeAssemblyFileName,designTimeAssemblyNameString),m)) None match designTimeAssemblyName,resolutionEnvironment.outputFile with | Some designTimeAssemblyName, Some path when String.Compare(designTimeAssemblyName.Name, Path.GetFileNameWithoutExtension path, StringComparison.OrdinalIgnoreCase) = 0 -> [] | Some _, _ -> [ for t in getTypeProviderImplementationTypes (runTimeAssemblyFileName,designTimeAssemblyNameString,m) do let resolver = createTypeProvider (t, runTimeAssemblyFileName, resolutionEnvironment, isInvalidationSupported, isInteractive, systemRuntimeContainsType, systemRuntimeAssemblyVersion, m) match box resolver with | null -> () | _ -> yield (resolver,ilScopeRefOfRuntimeAssembly) ] | None, _ -> [] with | :? TypeProviderError as tpe -> tpe.Iter(fun e -> errorR(NumberedError((e.Number,e.ContextualErrorMessage),m)) ) [] else [] let providers = Tainted<_>.CreateAll(providerSpecs) ok,providers let private unmarshal (t:Tainted<_>) = t.PUntaintNoFailure id let private tryTypeMember(st:Tainted<_>, fullName,memberName,m,recover,f) = try st.PApply (f,m) with :? TypeProviderError as tpe -> tpe.Iter (fun e -> errorR(Error(FSComp.SR.etUnexpectedExceptionFromProvidedTypeMember(fullName,memberName,e.ContextualErrorMessage),m)) ) st.PApplyNoFailure(fun _ -> recover) let private tryTypeMemberArray(st:Tainted<_>, fullName,memberName,m,f) = let result = try st.PApplyArray(f, memberName,m) with :? TypeProviderError as tpe -> tpe.Iter (fun e -> errorR(Error(FSComp.SR.etUnexpectedExceptionFromProvidedTypeMember(fullName,memberName,e.ContextualErrorMessage),m)) ) [||] match result with | null -> errorR(Error(FSComp.SR.etUnexpectedNullFromProvidedTypeMember(fullName,memberName),m)); [||] | r -> r let private tryTypeMemberNonNull(st:Tainted<_>, fullName,memberName,m,recover,f) = match tryTypeMember(st,fullName,memberName,m,recover,f) with | Tainted.Null -> errorR(Error(FSComp.SR.etUnexpectedNullFromProvidedTypeMember(fullName,memberName),m)); st.PApplyNoFailure(fun _ -> recover) | r -> r let tryMemberMember(mi:Tainted<_>,typeName,memberName,memberMemberName,m,recover,f) = try mi.PApply (f,m) with :? TypeProviderError as tpe -> tpe.Iter (fun e -> errorR(Error(FSComp.SR.etUnexpectedExceptionFromProvidedMemberMember(memberMemberName,typeName,memberName,e.ContextualErrorMessage),m)) ) mi.PApplyNoFailure(fun _ -> recover) let DisplayNameOfTypeProvider(resolver:Tainted, m:range) = resolver.PUntaint((fun tp -> tp.GetType().Name),m) let isWhitespace (s:string) = s |> Seq.forall (fun c -> Char.IsWhiteSpace(c)) let private validateNamespaceName(name,typeProvider:Tainted,m,``namespace``:string) = if ``namespace``<>null then // Null namespace designates the global namespace. if isWhitespace(``namespace``) then // Empty namespace is not allowed errorR(Error(FSComp.SR.etEmptyNamespaceOfTypeNotAllowed(name,typeProvider.PUntaint((fun tp -> tp.GetType().Name),m)),m)) else for s in ``namespace``.Split([|'.'|]) do match s.IndexOfAny(PrettyNaming.IllegalCharactersInTypeAndNamespaceNames) with | -1 -> () | n -> errorR(Error(FSComp.SR.etIllegalCharactersInNamespaceName(string s.[n],s),m)) let bindingFlags = BindingFlags.DeclaredOnly ||| BindingFlags.Static ||| BindingFlags.Instance ||| BindingFlags.Public // NOTE: for the purposes of remapping the closure of generated types, the FullName is sufficient. // We do _not_ rely on object identity or any other notion of equivalence provided by System.Type itself. let providedSystemTypeComparer = let key (ty:System.Type) = (ty.Assembly.FullName, ty.FullName) { new IEqualityComparer with member __.GetHashCode(ty:Type) = hash (key ty) member __.Equals(ty1:Type,ty2:Type) = (key ty1 = key ty2) } /// The context used to interpret information in the closure of System.Type, System.MethodInfo and other /// info objects coming from the type provider. /// /// At the moment this is the "Type --> Tycon" remapping context of the type. This is only present if generated, and contains /// all the entries in the remappings for the [] declaration containing the definition. /// /// At later points this could be expanded to contain more context information specific to the [] declaration /// if needed. /// /// (Lazy to prevent needless computation for every type during remapping.) type ProvidedTypeContext = | NoEntries | Entries of Dictionary * Lazy> static member Empty = NoEntries static member Create(d1,d2) = Entries(d1,notlazy d2) member ctxt.TryGetILTypeRef st = match ctxt with | NoEntries -> None | Entries(d,_) -> let mutable res = Unchecked.defaultof<_> if d.TryGetValue(st,&res) then Some res else None member ctxt.TryGetTyconRef(st) = match ctxt with | NoEntries -> None | Entries(_,d) -> let d = d.Force() let mutable res = Unchecked.defaultof<_> if d.TryGetValue(st,&res) then Some res else None member ctxt.RemapTyconRefs (f:obj->obj) = match ctxt with | NoEntries -> NoEntries | Entries(d1,d2) -> Entries(d1, lazy (let dict = new Dictionary(providedSystemTypeComparer) for KeyValue (st, tcref) in d2.Force() do dict.Add(st, f tcref) dict)) #if FX_NO_CUSTOMATTRIBUTEDATA type CustomAttributeData = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeData type CustomAttributeNamedArgument = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeNamedArgument type CustomAttributeTypedArgument = Microsoft.FSharp.Core.CompilerServices.IProvidedCustomAttributeTypedArgument #endif [] type ProvidedType private (x:System.Type, ctxt: ProvidedTypeContext) = inherit ProvidedMemberInfo(x,ctxt) #if FX_NO_CUSTOMATTRIBUTEDATA let provide () = ProvidedCustomAttributeProvider.Create (fun provider -> provider.GetMemberCustomAttributesData(x)) #else let provide () = ProvidedCustomAttributeProvider.Create (fun _provider -> x.GetCustomAttributesData()) #endif interface IProvidedCustomAttributeProvider with member __.GetHasTypeProviderEditorHideMethodsAttribute(provider) = provide().GetHasTypeProviderEditorHideMethodsAttribute(provider) member __.GetDefinitionLocationAttribute(provider) = provide().GetDefinitionLocationAttribute(provider) member __.GetXmlDocAttributes(provider) = provide().GetXmlDocAttributes(provider) // The type provider spec distinguishes between // - calls that can be made on provided types (i.e. types given by ReturnType, ParameterType, and generic argument types) // - calls that can be made on provided type definitions (types returned by ResolveTypeName, GetTypes etc.) // Ideally we would enforce this decision structurally by having both ProvidedType and ProvidedTypeDefinition. // Alternatively we could use assertions to enforce this. // Suppress relocation of generated types member __.IsSuppressRelocate = (x.Attributes &&& enum (int32 TypeProviderTypeAttributes.SuppressRelocate)) <> enum 0 member __.IsErased = (x.Attributes &&& enum (int32 TypeProviderTypeAttributes.IsErased)) <> enum 0 member __.IsGenericType = x.IsGenericType member __.Namespace = x.Namespace member pt.FullName = x.FullName member __.IsArray = x.IsArray member __.Assembly = x.Assembly |> ProvidedAssembly.Create ctxt member __.GetInterfaces() = x.GetInterfaces() |> ProvidedType.CreateArray ctxt member __.GetMethods() = x.GetMethods(bindingFlags) |> ProvidedMethodInfo.CreateArray ctxt member __.GetEvents() = x.GetEvents(bindingFlags) |> ProvidedEventInfo.CreateArray ctxt member __.GetEvent nm = x.GetEvent(nm, bindingFlags) |> ProvidedEventInfo.Create ctxt member __.GetProperties() = x.GetProperties(bindingFlags) |> ProvidedPropertyInfo.CreateArray ctxt member __.GetProperty nm = x.GetProperty(nm, bindingFlags) |> ProvidedPropertyInfo.Create ctxt member __.GetConstructors() = x.GetConstructors(bindingFlags) |> ProvidedConstructorInfo.CreateArray ctxt member __.GetFields() = x.GetFields(bindingFlags) |> ProvidedFieldInfo.CreateArray ctxt member __.GetField nm = x.GetField(nm, bindingFlags) |> ProvidedFieldInfo.Create ctxt member __.GetAllNestedTypes() = x.GetNestedTypes(bindingFlags ||| System.Reflection.BindingFlags.NonPublic) |> ProvidedType.CreateArray ctxt member __.GetNestedTypes() = x.GetNestedTypes(bindingFlags) |> ProvidedType.CreateArray ctxt /// Type.GetNestedType(string) can return null if there is no nested type with given name member __.GetNestedType nm = x.GetNestedType (nm, bindingFlags) |> ProvidedType.Create ctxt /// Type.GetGenericTypeDefinition() either returns type or throws exception, null is not permitted member __.GetGenericTypeDefinition() = x.GetGenericTypeDefinition() |> ProvidedType.CreateWithNullCheck ctxt "GenericTypeDefinition" /// Type.BaseType can be null when Type is interface or object member __.BaseType = x.BaseType |> ProvidedType.Create ctxt member __.GetStaticParameters(provider: ITypeProvider) = provider.GetStaticParameters(x) |> ProvidedParameterInfo.CreateArray ctxt /// Type.GetElementType can be null if i.e. Type is not array\pointer\byref type member __.GetElementType() = x.GetElementType() |> ProvidedType.Create ctxt member __.GetGenericArguments() = x.GetGenericArguments() |> ProvidedType.CreateArray ctxt member __.ApplyStaticArguments(provider: ITypeProvider, fullTypePathAfterArguments, staticArgs: obj[]) = provider.ApplyStaticArguments(x, fullTypePathAfterArguments, staticArgs) |> ProvidedType.Create ctxt member __.IsVoid = (typeof.Equals(x)) member __.IsGenericParameter = x.IsGenericParameter member __.IsValueType = x.IsValueType member __.IsByRef = x.IsByRef member __.IsPointer = x.IsPointer member __.IsPublic = x.IsPublic member __.IsNestedPublic = x.IsNestedPublic member __.IsEnum = x.IsEnum member __.IsClass = x.IsClass member __.IsSealed = x.IsSealed member __.IsInterface = x.IsInterface member __.GetArrayRank() = x.GetArrayRank() member __.GenericParameterPosition = x.GenericParameterPosition member __.RawSystemType = x /// Type.GetEnumUnderlyingType either returns type or raises exception, null is not permitted member __.GetEnumUnderlyingType() = #if SILVERLIGHT x.UnderlyingSystemType #else x.GetEnumUnderlyingType() #endif |> ProvidedType.CreateWithNullCheck ctxt "EnumUnderlyingType" static member Create ctxt x = match x with null -> null | t -> ProvidedType (t,ctxt) static member CreateWithNullCheck ctxt name x = match x with null -> nullArg name | t -> ProvidedType (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedType.Create ctxt) static member CreateNoContext (x:Type) = ProvidedType.Create ProvidedTypeContext.Empty x static member Void = ProvidedType.CreateNoContext typeof member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedType as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() member __.TryGetILTypeRef() = ctxt.TryGetILTypeRef x member __.TryGetTyconRef() = ctxt.TryGetTyconRef x member __.Context = ctxt static member ApplyContext (pt:ProvidedType, ctxt) = ProvidedType(pt.Handle, ctxt) static member TaintedEquals (pt1:Tainted, pt2:Tainted) = Tainted.EqTainted (pt1.PApplyNoFailure(fun st -> st.Handle)) (pt2.PApplyNoFailure(fun st -> st.Handle)) and [] IProvidedCustomAttributeProvider = abstract GetDefinitionLocationAttribute : provider:ITypeProvider -> (string * int * int) option abstract GetXmlDocAttributes : provider:ITypeProvider -> string[] abstract GetHasTypeProviderEditorHideMethodsAttribute : provider:ITypeProvider -> bool abstract GetAttributeConstructorArgs: provider:ITypeProvider * attribName:string -> obj option list option and ProvidedCustomAttributeProvider = static member Create (attributes :(ITypeProvider -> System.Collections.Generic.IList)) : IProvidedCustomAttributeProvider = let (|Member|_|) (s:string) (x: CustomAttributeNamedArgument) = if x.MemberInfo.Name = s then Some x.TypedValue else None let (|Arg|_|) (x: CustomAttributeTypedArgument) = match x.Value with null -> None | v -> Some v let findAttribByName tyFullName (a:CustomAttributeData) = (a.Constructor.DeclaringType.FullName = tyFullName) let findAttrib (ty:System.Type) a = findAttribByName ty.FullName a { new IProvidedCustomAttributeProvider with member __.GetAttributeConstructorArgs (provider,attribName) = attributes(provider) |> Seq.tryFind (findAttribByName attribName) |> Option.map (fun a -> a.ConstructorArguments |> Seq.toList |> List.map (function Arg null -> None | Arg obj -> Some obj | _ -> None)) member __.GetHasTypeProviderEditorHideMethodsAttribute provider = attributes(provider) |> Seq.exists (findAttrib typeof) member __.GetDefinitionLocationAttribute(provider) = attributes(provider) |> Seq.tryFind (findAttrib typeof) |> Option.map (fun a -> (defaultArg (a.NamedArguments |> Seq.tryPick (function Member "FilePath" (Arg (:? string as v)) -> Some v | _ -> None)) null, defaultArg (a.NamedArguments |> Seq.tryPick (function Member "Line" (Arg (:? int as v)) -> Some v | _ -> None)) 0, defaultArg (a.NamedArguments |> Seq.tryPick (function Member "Column" (Arg (:? int as v)) -> Some v | _ -> None)) 0)) member __.GetXmlDocAttributes(provider) = attributes(provider) |> Seq.choose (fun a -> if findAttrib typeof a then match a.ConstructorArguments |> Seq.toList with | [ Arg(:? string as s) ] -> Some s | _ -> None else None) |> Seq.toArray } and [] ProvidedMemberInfo (x: System.Reflection.MemberInfo, ctxt) = #if FX_NO_CUSTOMATTRIBUTEDATA let provide () = ProvidedCustomAttributeProvider.Create (fun provider -> provider.GetMemberCustomAttributesData(x)) #else let provide () = ProvidedCustomAttributeProvider.Create (fun _provider -> x.GetCustomAttributesData()) #endif member __.Name = x.Name /// DeclaringType can be null if MemberInfo belongs to Module, not to Type member __.DeclaringType = ProvidedType.Create ctxt x.DeclaringType interface IProvidedCustomAttributeProvider with member __.GetHasTypeProviderEditorHideMethodsAttribute(provider) = provide().GetHasTypeProviderEditorHideMethodsAttribute(provider) member __.GetDefinitionLocationAttribute(provider) = provide().GetDefinitionLocationAttribute(provider) member __.GetXmlDocAttributes(provider) = provide().GetXmlDocAttributes(provider) member __.GetAttributeConstructorArgs (provider,attribName) = provide().GetAttributeConstructorArgs (provider,attribName) and [] ProvidedParameterInfo private (x: System.Reflection.ParameterInfo, ctxt) = #if FX_NO_CUSTOMATTRIBUTEDATA let provide () = ProvidedCustomAttributeProvider.Create (fun provider -> provider.GetParameterCustomAttributesData(x)) #else let provide () = ProvidedCustomAttributeProvider.Create (fun _provider -> x.GetCustomAttributesData()) #endif member __.Name = x.Name member __.IsOut = x.IsOut #if FX_NO_ISIN_ON_PARAMETER_INFO member __.IsIn = not x.IsOut #else member __.IsIn = x.IsIn #endif member __.IsOptional = x.IsOptional member __.RawDefaultValue = x.RawDefaultValue /// ParameterInfo.ParameterType cannot be null member __.ParameterType = ProvidedType.CreateWithNullCheck ctxt "ParameterType" x.ParameterType static member Create ctxt x = match x with null -> null | t -> ProvidedParameterInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedParameterInfo.Create ctxt) // TODO null wrong? interface IProvidedCustomAttributeProvider with member __.GetHasTypeProviderEditorHideMethodsAttribute(provider) = provide().GetHasTypeProviderEditorHideMethodsAttribute(provider) member __.GetDefinitionLocationAttribute(provider) = provide().GetDefinitionLocationAttribute(provider) member __.GetXmlDocAttributes(provider) = provide().GetXmlDocAttributes(provider) member __.GetAttributeConstructorArgs (provider,attribName) = provide().GetAttributeConstructorArgs (provider,attribName) member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedParameterInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() and [] ProvidedAssembly private (x: System.Reflection.Assembly, _ctxt) = #if SILVERLIGHT member __.GetName() = System.Reflection.AssemblyName(x.FullName) #else member __.GetName() = x.GetName() #endif member __.FullName = x.FullName member __.GetManifestModuleContents(provider: ITypeProvider) = provider.GetGeneratedAssemblyContents(x) static member Create ctxt x = match x with null -> null | t -> ProvidedAssembly (t,ctxt) member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedAssembly as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() and [] ProvidedMethodBase (x: System.Reflection.MethodBase, ctxt) = inherit ProvidedMemberInfo(x, ctxt) member __.Context = ctxt member __.IsGenericMethod = x.IsGenericMethod member __.IsStatic = x.IsStatic member __.IsFamily = x.IsFamily member __.IsFamilyOrAssembly = x.IsFamilyOrAssembly member __.IsFamilyAndAssembly = x.IsFamilyAndAssembly member __.IsVirtual = x.IsVirtual member __.IsFinal = x.IsFinal member __.IsPublic = x.IsPublic member __.IsAbstract = x.IsAbstract member __.IsHideBySig = x.IsHideBySig member __.IsConstructor = x.IsConstructor member __.GetParameters() = x.GetParameters() |> ProvidedParameterInfo.CreateArray ctxt member __.GetGenericArguments() = x.GetGenericArguments() |> ProvidedType.CreateArray ctxt member __.Handle = x static member TaintedGetHashCode (x:Tainted) = Tainted.GetHashCodeTainted (x.PApplyNoFailure(fun st -> (st.Name, st.DeclaringType.Assembly.FullName, st.DeclaringType.FullName))) static member TaintedEquals (pt1:Tainted, pt2:Tainted) = Tainted.EqTainted (pt1.PApplyNoFailure(fun st -> st.Handle)) (pt2.PApplyNoFailure(fun st -> st.Handle)) and [] ProvidedFieldInfo private (x: System.Reflection.FieldInfo,ctxt) = inherit ProvidedMemberInfo(x,ctxt) static member Create ctxt x = match x with null -> null | t -> ProvidedFieldInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedFieldInfo.Create ctxt) member __.IsInitOnly = x.IsInitOnly member __.IsStatic = x.IsStatic member __.IsSpecialName = x.IsSpecialName member __.IsLiteral = x.IsLiteral member __.GetRawConstantValue() = x.GetRawConstantValue() /// FieldInfo.FieldType cannot be null member __.FieldType = x.FieldType |> ProvidedType.CreateWithNullCheck ctxt "FieldType" member __.Handle = x member __.IsPublic = x.IsPublic member __.IsFamily = x.IsFamily member __.IsPrivate = x.IsPrivate member __.IsFamilyOrAssembly = x.IsFamilyOrAssembly member __.IsFamilyAndAssembly = x.IsFamilyAndAssembly override __.Equals y = assert false; match y with :? ProvidedFieldInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() and [] ProvidedMethodInfo private (x: System.Reflection.MethodInfo, ctxt) = inherit ProvidedMethodBase(x,ctxt) /// MethodInfo.ReturnType cannot be null member __.ReturnType = x.ReturnType |> ProvidedType.CreateWithNullCheck ctxt "ReturnType" static member Create ctxt x = match x with null -> null | t -> ProvidedMethodInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedMethodInfo.Create ctxt) member __.Handle = x member __.MetadataToken = x.MetadataToken override __.Equals y = assert false; match y with :? ProvidedMethodInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() and [] ProvidedPropertyInfo private (x: System.Reflection.PropertyInfo,ctxt) = inherit ProvidedMemberInfo(x,ctxt) member __.GetGetMethod() = x.GetGetMethod() |> ProvidedMethodInfo.Create ctxt member __.GetSetMethod() = x.GetSetMethod() |> ProvidedMethodInfo.Create ctxt member __.CanRead = x.CanRead member __.CanWrite = x.CanWrite member __.GetIndexParameters() = x.GetIndexParameters() |> ProvidedParameterInfo.CreateArray ctxt /// PropertyInfo.PropertyType cannot be null member __.PropertyType = x.PropertyType |> ProvidedType.CreateWithNullCheck ctxt "PropertyType" static member Create ctxt x = match x with null -> null | t -> ProvidedPropertyInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedPropertyInfo.Create ctxt) member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedPropertyInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() static member TaintedGetHashCode (x:Tainted) = Tainted.GetHashCodeTainted (x.PApplyNoFailure(fun st -> (st.Name, st.DeclaringType.Assembly.FullName, st.DeclaringType.FullName))) static member TaintedEquals (pt1:Tainted, pt2:Tainted) = Tainted.EqTainted (pt1.PApplyNoFailure(fun st -> st.Handle)) (pt2.PApplyNoFailure(fun st -> st.Handle)) and [] ProvidedEventInfo private (x: System.Reflection.EventInfo,ctxt) = inherit ProvidedMemberInfo(x,ctxt) member __.GetAddMethod() = x.GetAddMethod() |> ProvidedMethodInfo.Create ctxt member __.GetRemoveMethod() = x.GetRemoveMethod() |> ProvidedMethodInfo.Create ctxt /// EventInfo.EventHandlerType cannot be null member __.EventHandlerType = x.EventHandlerType |> ProvidedType.CreateWithNullCheck ctxt "EventHandlerType" static member Create ctxt x = match x with null -> null | t -> ProvidedEventInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedEventInfo.Create ctxt) member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedEventInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() static member TaintedGetHashCode (x:Tainted) = Tainted.GetHashCodeTainted (x.PApplyNoFailure(fun st -> (st.Name, st.DeclaringType.Assembly.FullName, st.DeclaringType.FullName))) static member TaintedEquals (pt1:Tainted, pt2:Tainted) = Tainted.EqTainted (pt1.PApplyNoFailure(fun st -> st.Handle)) (pt2.PApplyNoFailure(fun st -> st.Handle)) and [] ProvidedConstructorInfo private (x: System.Reflection.ConstructorInfo, ctxt) = inherit ProvidedMethodBase(x,ctxt) static member Create ctxt x = match x with null -> null | t -> ProvidedConstructorInfo (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedConstructorInfo.Create ctxt) member __.Handle = x override __.Equals y = assert false; match y with :? ProvidedConstructorInfo as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = assert false; x.GetHashCode() [] type ProvidedExpr private (x:Quotations.Expr, ctxt) = member __.Type = x.Type |> ProvidedType.Create ctxt member __.Handle = x member __.Context = ctxt member __.UnderlyingExpressionString = x.ToString() static member Create ctxt t = match box t with null -> null | _ -> ProvidedExpr (t,ctxt) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedExpr.Create ctxt) override __.Equals y = match y with :? ProvidedExpr as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = x.GetHashCode() [] type ProvidedVar private (x:Quotations.Var, ctxt) = member __.Type = x.Type |> ProvidedType.Create ctxt member __.Name = x.Name member __.IsMutable = x.IsMutable member __.Handle = x member __.Context = ctxt static member Create ctxt t = match box t with null -> null | _ -> ProvidedVar (t,ctxt) static member Fresh (nm,ty:ProvidedType) = ProvidedVar.Create ty.Context (new Quotations.Var(nm,ty.Handle)) static member CreateArray ctxt xs = match xs with null -> null | _ -> xs |> Array.map (ProvidedVar.Create ctxt) override __.Equals y = match y with :? ProvidedVar as y -> x.Equals y.Handle | _ -> false override __.GetHashCode() = x.GetHashCode() let (|ProvidedNewObjectExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.NewObject(ctor,args) -> Some (ProvidedConstructorInfo.Create x.Context ctor, [| for a in args -> ProvidedExpr.Create x.Context a |]) | _ -> None let (|ProvidedWhileLoopExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.WhileLoop(guardExpr,bodyExpr) -> Some (ProvidedExpr.Create x.Context guardExpr,ProvidedExpr.Create x.Context bodyExpr) | _ -> None let (|ProvidedNewDelegateExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.NewDelegate(ty,vs,expr) -> Some (ProvidedType.Create x.Context ty,ProvidedVar.CreateArray x.Context (List.toArray vs), ProvidedExpr.Create x.Context expr) | _ -> None let (|ProvidedCallExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Call(objOpt,meth,args) -> Some ((match objOpt with None -> None | Some obj -> Some (ProvidedExpr.Create x.Context obj)), ProvidedMethodInfo.Create x.Context meth, [| for a in args -> ProvidedExpr.Create x.Context a |]) | _ -> None let (|ProvidedDefaultExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.DefaultValue ty -> Some (ProvidedType.Create x.Context ty) | _ -> None let (|ProvidedConstantExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Value(obj,ty) -> Some (obj, ProvidedType.Create x.Context ty) | _ -> None let (|ProvidedTypeAsExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Coerce(arg,ty) -> Some (ProvidedExpr.Create x.Context arg, ProvidedType.Create x.Context ty) | _ -> None let (|ProvidedNewTupleExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.NewTuple(args) -> Some (ProvidedExpr.CreateArray x.Context (Array.ofList args)) | _ -> None let (|ProvidedTupleGetExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.TupleGet(arg,n) -> Some (ProvidedExpr.Create x.Context arg, n) | _ -> None let (|ProvidedNewArrayExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.NewArray(ty,args) -> Some (ProvidedType.Create x.Context ty, ProvidedExpr.CreateArray x.Context (Array.ofList args)) | _ -> None let (|ProvidedSequentialExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Sequential(e1,e2) -> Some (ProvidedExpr.Create x.Context e1, ProvidedExpr.Create x.Context e2) | _ -> None let (|ProvidedLambdaExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Lambda(v,body) -> Some (ProvidedVar.Create x.Context v, ProvidedExpr.Create x.Context body) | _ -> None let (|ProvidedTryFinallyExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.TryFinally(b1,b2) -> Some (ProvidedExpr.Create x.Context b1, ProvidedExpr.Create x.Context b2) | _ -> None let (|ProvidedTryWithExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.TryWith(b,v1,e1,v2,e2) -> Some (ProvidedExpr.Create x.Context b, ProvidedVar.Create x.Context v1, ProvidedExpr.Create x.Context e1, ProvidedVar.Create x.Context v2, ProvidedExpr.Create x.Context e2) | _ -> None #if PROVIDED_ADDRESS_OF let (|ProvidedAddressOfExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.AddressOf(e) -> Some (ProvidedExpr.Create x.Context e) | _ -> None #endif let (|ProvidedTypeTestExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.TypeTest(e,ty) -> Some (ProvidedExpr.Create x.Context e, ProvidedType.Create x.Context ty) | _ -> None let (|ProvidedLetExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Let(v,e,b) -> Some (ProvidedVar.Create x.Context v, ProvidedExpr.Create x.Context e, ProvidedExpr.Create x.Context b) | _ -> None let (|ProvidedForIntegerRangeLoopExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.ForIntegerRangeLoop (v,e1,e2,e3) -> Some (ProvidedVar.Create x.Context v, ProvidedExpr.Create x.Context e1, ProvidedExpr.Create x.Context e2, ProvidedExpr.Create x.Context e3) | _ -> None let (|ProvidedVarSetExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.VarSet(v,e) -> Some (ProvidedVar.Create x.Context v, ProvidedExpr.Create x.Context e) | _ -> None //Quotations.Patterns.WhileLoop let (|ProvidedIfThenElseExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.IfThenElse(g,t,e) -> Some (ProvidedExpr.Create x.Context g, ProvidedExpr.Create x.Context t, ProvidedExpr.Create x.Context e) | _ -> None let (|ProvidedVarExpr|_|) (x:ProvidedExpr) = match x.Handle with | Quotations.Patterns.Var v -> Some (ProvidedVar.Create x.Context v) | _ -> None let GetInvokerExpression (provider: ITypeProvider, methodBase: ProvidedMethodBase, paramExprs: ProvidedVar[]) = provider.GetInvokerExpression(methodBase.Handle,[| for p in paramExprs -> Quotations.Expr.Var(p.Handle) |]) |> ProvidedExpr.Create methodBase.Context let private computeName(m,st:Tainted,proj,propertyString) = let name = try st.PUntaint(proj,m) with :? TypeProviderError as tpe -> let newError = tpe.MapText((fun msg -> FSComp.SR.etProvidedTypeWithNameException(propertyString, msg)), st.TypeProviderDesignation, m) raise newError if System.String.IsNullOrEmpty name then raise <| TypeProviderError(FSComp.SR.etProvidedTypeWithNullOrEmptyName(propertyString), st.TypeProviderDesignation, m) name /// Verify that this type provider has supported attributes let private validateAttributesOfProvidedType(m,st:Tainted) = let fullName = computeName(m, st, (fun st -> st.FullName), "FullName") if tryTypeMember(st,fullName,"IsGenericType", m, false, fun st->st.IsGenericType) |> unmarshal then errorR(Error(FSComp.SR.etMustNotBeGeneric(fullName),m)) if tryTypeMember(st,fullName,"IsArray", m, false, fun st->st.IsArray) |> unmarshal then errorR(Error(FSComp.SR.etMustNotBeAnArray(fullName),m)) tryTypeMemberNonNull(st, fullName,"GetInterfaces", m, [||], fun st -> st.GetInterfaces()) |> ignore let private validateExpectedName m expectedPath expectedName (st : Tainted) = let name = computeName(m, st, (fun st -> st.Name), "Name") if name <> expectedName then raise <| TypeProviderError(FSComp.SR.etProvidedTypeHasUnexpectedName(expectedName,name), st.TypeProviderDesignation, m) let namespaceName = tryTypeMember(st, name,"Namespace",m,"",fun st -> st.Namespace) |> unmarshal let rec declaringTypes (st:Tainted) accu = match tryTypeMember(st,name,"DeclaringType",m,null,fun st -> st.DeclaringType) with | Tainted.Null -> accu | dt -> declaringTypes dt (computeName(m, dt, (fun dt -> dt.Name), "Name")::accu) let path = [| match namespaceName with | null -> () | _ -> yield! namespaceName.Split([|'.'|]) yield! declaringTypes st [] |] if path <> expectedPath then let expectedPath = String.Join(".",expectedPath) let path = String.Join(".",path) errorR(Error(FSComp.SR.etProvidedTypeHasUnexpectedPath(expectedPath,path), m)) let ValidateProvidedTypeAfterStaticInstantiation(m,st:Tainted, expectedPath : string[], expectedName : string) = // Do all the calling into st up front with recovery let fullName, namespaceName, usedMembers = let name = computeName(m, st, (fun st -> st.Name), "Name") let namespaceName = tryTypeMember(st,name,"Namespace",m,FSComp.SR.invalidNamespaceForProvidedType(),fun st -> st.Namespace) |> unmarshal let fullName = tryTypeMemberNonNull(st,name,"FullName",m,FSComp.SR.invalidFullNameForProvidedType(),fun st -> st.FullName) |> unmarshal validateExpectedName m expectedPath expectedName st // Must be able to call (GetMethods|GetEvents|GetPropeties|GetNestedTypes|GetConstructors)(bindingFlags). let usedMembers : Tainted[] = // These are the members the compiler will actually use [| for x in tryTypeMemberArray(st,fullName,"GetMethods",m,fun st -> st.GetMethods()) -> x.Coerce(m) for x in tryTypeMemberArray(st,fullName,"GetEvents",m,fun st -> st.GetEvents()) -> x.Coerce(m) for x in tryTypeMemberArray(st,fullName,"GetFields",m,fun st -> st.GetFields()) -> x.Coerce(m) for x in tryTypeMemberArray(st,fullName,"GetProperties",m,fun st -> st.GetProperties()) -> x.Coerce(m) // These will be validated on-demand //for x in tryTypeMemberArray(st,fullName,"GetNestedTypes",m,fun st -> st.GetNestedTypes(bindingFlags)) -> x.Coerce() for x in tryTypeMemberArray(st,fullName,"GetConstructors",m,fun st -> st.GetConstructors()) -> x.Coerce(m) |] fullName, namespaceName, usedMembers // We scrutinize namespaces for invalid characters on open, but this provides better diagnostics validateNamespaceName(fullName,st.TypeProvider,m,namespaceName) validateAttributesOfProvidedType(m,st) // Those members must have this type. // This needs to be a *shallow* exploration. Otherwise, as in Freebase sample the entire database could be explored. for mi in usedMembers do match mi with | Tainted.Null -> errorR(Error(FSComp.SR.etNullMember(fullName),m)) | _ -> let memberName = tryMemberMember(mi,fullName,"Name","Name",m,"invalid provided type member name",fun mi -> mi.Name) |> unmarshal if String.IsNullOrEmpty(memberName) then errorR(Error(FSComp.SR.etNullOrEmptyMemberName(fullName),m)) else let miDeclaringType = tryMemberMember(mi,fullName,memberName,"DeclaringType",m,ProvidedType.CreateNoContext(typeof),fun mi -> mi.DeclaringType) match miDeclaringType with // Generated nested types may have null DeclaringType | Tainted.Null when (mi.OfType().IsSome) -> () | Tainted.Null -> errorR(Error(FSComp.SR.etNullMemberDeclaringType(fullName,memberName),m)) | _ -> let miDeclaringTypeFullName = tryMemberMember(miDeclaringType,fullName,memberName,"FullName",m,"invalid declaring type full name",fun miDeclaringType -> miDeclaringType.FullName) |> unmarshal if not (ProvidedType.TaintedEquals (st, miDeclaringType)) then errorR(Error(FSComp.SR.etNullMemberDeclaringTypeDifferentFromProvidedType(fullName,memberName,miDeclaringTypeFullName),m)) match mi.OfType() with | Some mi -> let isPublic = tryMemberMember(mi,fullName,memberName,"IsPublic",m,true,fun mi->mi.IsPublic) |> unmarshal let isGenericMethod = tryMemberMember(mi,fullName,memberName,"IsGenericMethod",m,true,fun mi->mi.IsGenericMethod) |> unmarshal if not isPublic || isGenericMethod then errorR(Error(FSComp.SR.etMethodHasRequirements(fullName,memberName),m)) | None -> match mi.OfType() with | Some subType -> validateAttributesOfProvidedType(m,subType) | None -> match mi.OfType() with | Some pi -> // Property must have a getter or setter // TODO: Property must be public etc. let expectRead = match tryMemberMember(pi,fullName,memberName,"GetGetMethod",m,null,fun pi -> pi.GetGetMethod()) with | Tainted.Null -> false | _ -> true let expectWrite = match tryMemberMember(pi, fullName,memberName,"GetSetMethod",m,null,fun pi-> pi.GetSetMethod()) with | Tainted.Null -> false | _ -> true let canRead = tryMemberMember(pi,fullName,memberName,"CanRead",m,expectRead,fun pi-> pi.CanRead) |> unmarshal let canWrite = tryMemberMember(pi,fullName,memberName,"CanWrite",m,expectWrite,fun pi-> pi.CanWrite) |> unmarshal match expectRead,canRead with | false,false | true,true-> () | false,true -> errorR(Error(FSComp.SR.etPropertyCanReadButHasNoGetter(memberName,fullName),m)) | true,false -> errorR(Error(FSComp.SR.etPropertyHasGetterButNoCanRead(memberName,fullName),m)) match expectWrite,canWrite with | false,false | true,true-> () | false,true -> errorR(Error(FSComp.SR.etPropertyCanWriteButHasNoSetter(memberName,fullName),m)) | true,false -> errorR(Error(FSComp.SR.etPropertyHasSetterButNoCanWrite(memberName,fullName),m)) if not canRead && not canWrite then errorR(Error(FSComp.SR.etPropertyNeedsCanWriteOrCanRead(memberName,fullName),m)) | None -> match mi.OfType() with | Some ei -> // Event must have adder and remover // TODO: Event must be public etc. let adder = tryMemberMember(ei,fullName,memberName,"GetAddMethod",m,null,fun ei-> ei.GetAddMethod()) let remover = tryMemberMember(ei,fullName,memberName,"GetRemoveMethod",m,null,fun ei-> ei.GetRemoveMethod()) match adder, remover with | Tainted.Null,_ -> errorR(Error(FSComp.SR.etEventNoAdd(memberName,fullName),m)) | _,Tainted.Null -> errorR(Error(FSComp.SR.etEventNoRemove(memberName,fullName),m)) | _,_ -> () | None -> match mi.OfType() with | Some _ -> () // TODO: Constructors must be public etc. | None -> match mi.OfType() with | Some _ -> () // TODO: Fields must be public, literals must have a value etc. | None -> errorR(Error(FSComp.SR.etUnsupportedMemberKind(memberName,fullName),m)) let ValidateProvidedTypeDefinition(m,st:Tainted, expectedPath : string[], expectedName : string) = begin let name = computeName(m, st, (fun st -> st.Name), "Name") let _namespaceName = tryTypeMember(st,name,"Namespace",m,FSComp.SR.invalidNamespaceForProvidedType(),fun st -> st.Namespace) |> unmarshal let _fullname = tryTypeMemberNonNull(st,name,"FullName",m,FSComp.SR.invalidFullNameForProvidedType(),fun st -> st.FullName) |> unmarshal validateExpectedName m expectedPath expectedName st end validateAttributesOfProvidedType(m,st) // This excludes, for example, types with '.' in them which would not be resolvable during name resolution. match expectedName.IndexOfAny(PrettyNaming.IllegalCharactersInTypeAndNamespaceNames) with | -1 -> () | n -> errorR(Error(FSComp.SR.etIllegalCharactersInTypeName(string expectedName.[n],expectedName),m)) let staticParameters = st.PApplyWithProvider((fun (st,provider) -> st.GetStaticParameters(provider)), range=m) if staticParameters.PUntaint((fun a -> a.Length),m) = 0 then ValidateProvidedTypeAfterStaticInstantiation(m, st, expectedPath, expectedName) /// Get a simple display name for the resolver. let private displayNameOfModuleOrNamespace(moduleOrNamespace:string array) = String.Join(".", moduleOrNamespace) /// Resolve a (non-nested) provided type given a full namespace name and a type name. /// May throw an exception which will be turned into an error message by one of the 'Try' function below. /// If resolution is successful the type is then validated. let private resolveType(resolutionEnvironment:ResolutionEnvironment,resolver:Tainted,m,moduleOrNamespace,typeName) = let displayName = displayNameOfModuleOrNamespace moduleOrNamespace let rec tryNamespace (providedNamespace: Tainted) = let resolverNamespaceName = providedNamespace.PUntaint((fun providedNamespace -> providedNamespace.NamespaceName), range=m) if displayName = resolverNamespaceName then let resolvedType = providedNamespace.PApply((fun providedNamespace -> ProvidedType.CreateNoContext(providedNamespace.ResolveTypeName typeName)), range=m) match resolvedType with | Tainted.Null -> if resolutionEnvironment.showResolutionMessages then dprintfn " resolution via GetType(typeName=%s) in %s failed" typeName displayName None | result -> if resolutionEnvironment.showResolutionMessages then dprintfn " provided type '%s' was resolved" (result.PUntaint((fun r -> r.FullName), range=m)) ValidateProvidedTypeDefinition(m, result, moduleOrNamespace, typeName) Some result else let providedNamespaces = providedNamespace.PApplyArray((fun providedNamespace -> providedNamespace.GetNestedNamespaces()), "GetNestedNamespaces", range=m) tryNamespaces providedNamespaces and tryNamespaces (providedNamespaces: Tainted[]) = providedNamespaces |> Array.tryPick tryNamespace let providedNamespaces = resolver.PApplyArray((fun resolver -> resolver.GetNamespaces()), "GetNamespaces", range=m) match tryNamespaces providedNamespaces with | None -> resolver.PApply((fun _ -> null),m) | Some res -> res /// Try to resolve a type against the given host with the given resolution environment. let TryResolveProvidedType(resolutionEnvironment:ResolutionEnvironment,resolver:Tainted,m,moduleOrNamespace,typeName) = try match resolveType(resolutionEnvironment,resolver,m,moduleOrNamespace,typeName) with | Tainted.Null -> None | typ -> Some typ with e -> errorRecovery e m None let ILPathToProvidedType (st:Tainted,m) = let nameContrib (st:Tainted) = let typeName = st.PUntaint((fun st -> st.Name),m) match st.PApply((fun st -> st.DeclaringType),m) with | Tainted.Null -> match st.PUntaint((fun st -> st.Namespace),m) with | null -> typeName | ns -> ns + "." + typeName | _ -> typeName let rec encContrib (st:Tainted) = match st.PApply((fun st ->st.DeclaringType),m) with | Tainted.Null -> [] | enc -> encContrib enc @ [ nameContrib enc ] encContrib st, nameContrib st /// Apply the given provided type to the given static arguments (the arguments are assumed to have been sorted into application order let TryApplyProvidedType(typeBeforeArguments:Tainted, (optGeneratedTypePath: string list option), staticArgs:obj[], m:range) = if staticArgs.Length = 0 then Some (typeBeforeArguments , (fun () -> ())) else let fullTypePathAfterArguments = // If there is a generated type name, then use that match optGeneratedTypePath with | Some path -> path | None -> // Otherwise, use the full path of the erased type, including mangled arguments let nm = typeBeforeArguments.PUntaint((fun x -> x.Name),m) let enc,_ = ILPathToProvidedType (typeBeforeArguments,m) let defaultArgValues = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments,resolver) -> typeBeforeArguments.GetStaticParameters(resolver) |> Array.map (fun sp -> sp.Name, (if sp.IsOptional then Some (string sp.RawDefaultValue) else None ))),range=m) let defaultArgValues = defaultArgValues.PUntaint(id,m) let nonDefaultArgs = (staticArgs,defaultArgValues) ||> Array.zip |> Array.choose (fun (staticArg, (defaultArgName, defaultArgValue)) -> let actualArgValue = string staticArg match defaultArgValue with | Some v when v = actualArgValue -> None | _ -> Some (defaultArgName, actualArgValue)) let mangledName = PrettyNaming.mangleProvidedTypeName (nm, nonDefaultArgs) enc @ [ mangledName ] match typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments,provider) -> typeBeforeArguments.ApplyStaticArguments(provider, Array.ofList fullTypePathAfterArguments, staticArgs)),range=m) with | Tainted.Null -> None | typeWithArguments -> let actualName = typeWithArguments.PUntaint((fun x -> x.Name),m) let checkTypeName() = let expectedTypeNameAfterArguments = fullTypePathAfterArguments.[fullTypePathAfterArguments.Length-1] if actualName <> expectedTypeNameAfterArguments then error(Error(FSComp.SR.etProvidedAppliedTypeHadWrongName(typeWithArguments.TypeProviderDesignation, expectedTypeNameAfterArguments, actualName),m)) Some (typeWithArguments, checkTypeName) /// Given a mangled name reference to a non-nested provided type, resolve it. /// If necessary, demangle its static arguments before applying them. let TryLinkProvidedType(resolutionEnvironment:ResolutionEnvironment,resolver:Tainted,moduleOrNamespace:string[],typeLogicalName:string,m:range) = // Demangle the static parameters let typeName, argNamesAndValues = try PrettyNaming.demangleProvidedTypeName typeLogicalName with PrettyNaming.InvalidMangledStaticArg piece -> error(Error(FSComp.SR.etProvidedTypeReferenceInvalidText(piece),range0)) let argSpecsTable = dict argNamesAndValues let typeBeforeArguments = resolveType(resolutionEnvironment,resolver,range0,moduleOrNamespace,typeName) match typeBeforeArguments with | Tainted.Null -> None | _ -> // Take the static arguments (as strings, taken from the text in the reference we're relinking), // and convert them to objects of the appropriate type, based on the expected kind. let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments,resolver) -> typeBeforeArguments.GetStaticParameters(resolver)),range=range0) let staticParameters = staticParameters.PApplyArray(id, "",m) let staticArgs = staticParameters |> Array.map (fun sp -> let typeBeforeArgumentsName = typeBeforeArguments.PUntaint ((fun st -> st.Name),m) let spName = sp.PUntaint ((fun sp -> sp.Name),m) if not (argSpecsTable.ContainsKey spName) then if sp.PUntaint ((fun sp -> sp.IsOptional),m) then match sp.PUntaint((fun sp -> sp.RawDefaultValue),m) with | null -> error (Error(FSComp.SR.etStaticParameterRequiresAValue (spName, typeBeforeArgumentsName, typeBeforeArgumentsName, spName),range0)) | v -> v else error(Error(FSComp.SR.etProvidedTypeReferenceMissingArgument(spName),range0)) else let arg = argSpecsTable.[spName] /// Find the name of the representation type for the static parameter let spReprTypeName = sp.PUntaint((fun sp -> let pt = sp.ParameterType let ut = pt.RawSystemType #if SILVERLIGHT let uet = if pt.IsEnum then ut.UnderlyingSystemType else ut #else let uet = if pt.IsEnum then ut.GetEnumUnderlyingType() else ut #endif uet.FullName),m) match spReprTypeName with | "System.SByte" -> box (sbyte arg) | "System.Int16" -> box (int16 arg) | "System.Int32" -> box (int32 arg) | "System.Int64" -> box (int64 arg) | "System.Byte" -> box (byte arg) | "System.UInt16" -> box (uint16 arg) | "System.UInt32" -> box (uint32 arg) | "System.UInt64" -> box (uint64 arg) | "System.Decimal" -> box (decimal arg) | "System.Single" -> box (single arg) | "System.Double" -> box (double arg) | "System.Char" -> box (char arg) | "System.Boolean" -> box (arg = "True") | "System.String" -> box (string arg) | s -> error(Error(FSComp.SR.etUnknownStaticArgumentKind(s,typeLogicalName),range0))) match TryApplyProvidedType(typeBeforeArguments, None, staticArgs,range0) with | Some (typeWithArguments, checkTypeName) -> checkTypeName() Some typeWithArguments | None -> None /// Get the parts of a .NET namespace. Special rules: null means global, empty is not allowed. let getPartsOfDotNetNamespaceRecover(namespaceName:string) = if namespaceName=null then [] elif namespaceName.Length = 0 then [""] else splitNamespace namespaceName /// Get the parts of a .NET namespace. Special rules: null means global, empty is not allowed. let GetPartsOfDotNetNamespace(m,resolver:Tainted,namespaceName:string) = if namespaceName<>null && namespaceName.Length = 0 then errorR(Error(FSComp.SR.etEmptyNamespaceNotAllowed(DisplayNameOfTypeProvider(resolver.TypeProvider,m)),m)) getPartsOfDotNetNamespaceRecover namespaceName /// Get the parts of the name that encloses the .NET type including nested types. let GetFSharpPathToProvidedType (st:Tainted,m) = // Can't use st.Fullname because it may be like IEnumerable // We want [System;Collections;Generic] let namespaceParts = getPartsOfDotNetNamespaceRecover(st.PUntaint((fun st -> st.Namespace),m)) let rec walkUpNestedClasses(st:Tainted,soFar) = match st with | Tainted.Null -> soFar | st -> walkUpNestedClasses(st.PApply((fun st ->st.DeclaringType),m),soFar) @ [st.PUntaint((fun st -> st.Name),m)] walkUpNestedClasses(st.PApply((fun st ->st.DeclaringType),m),namespaceParts) let ILAssemblyRefFromProvidedAssembly (assembly:Tainted, m) = let aname = assembly.PUntaint((fun assembly -> assembly.GetName()),m) ILAssemblyRef.FromAssemblyName aname /// Get the ILTypeRef for the provided type (including for nested types). Do not take into account /// any type relocations or static linking for generated types. let GetOriginalILTypeRefOfProvidedType (st:Tainted,m) = let aref = ILAssemblyRefFromProvidedAssembly (st.PApply((fun st -> st.Assembly),m),m) let scoperef = ILScopeRef.Assembly aref let enc, nm = ILPathToProvidedType (st, m) let tref = ILTypeRef.Create(scoperef, enc, nm) tref /// Get the ILTypeRef for the provided type (including for nested types). Do not take into account /// any type relocations or static linking for generated types. let GetILTypeRefOfProvidedType (st:Tainted,m) = match st.PUntaint((fun st -> st.TryGetILTypeRef()),m) with | Some ilTypeRef -> ilTypeRef | None -> GetOriginalILTypeRefOfProvidedType (st, m) type ProviderGeneratedType = ProviderGeneratedType of (*ilOrigTyRef*)ILTypeRef * (*ilRenamedTyRef*)ILTypeRef * ProviderGeneratedType list /// The table of information recording remappings from type names in the provided assembly to type /// names in the statically linked, embedded assembly, plus what types are nested in side what types. type ProvidedAssemblyStaticLinkingMap = { ILTypeMap: System.Collections.Generic.Dictionary } static member CreateNew() = { ILTypeMap = System.Collections.Generic.Dictionary() } /// Check if this is a direct reference to a non-embedded generated type. This is not permitted at any name resolution. /// We check by seeing if the type is absent from the remapping context. let IsGeneratedTypeDirectReference (st: Tainted, m) = st.PUntaint((fun st -> st.TryGetTyconRef() |> isNone), m) #endif fsharp-3.0.34/src/fsharp/formats.fsi0000775000175000017500000000213712260314606016326 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Parse "printf-style" format specifiers at compile time, producing /// a list of items that specify the types of the things that follow. /// /// Must be updated if the Printf runtime component is updated. module internal Microsoft.FSharp.Compiler.Formats open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.AbstractIL.Internal val ParseFormatString : Range.range -> Env.TcGlobals -> string -> TType -> TType -> TType -> TType * TType fsharp-3.0.34/src/fsharp/fscopts.fsi0000775000175000017500000000615712260314606016342 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Fscopts open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.Tast #if NO_COMPILER_BACKEND #else open Microsoft.FSharp.Compiler.Ilxgen #endif open Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Opt open Microsoft.FSharp.Compiler.Env val DisplayBannerText : TcConfigBuilder -> unit //val GetCompilerOptions : TcConfigBuilder -> CompilerOption list -> CompilerOption list val GetCoreFscCompilerOptions : TcConfigBuilder -> CompilerOptionBlock list val GetCoreFsiCompilerOptions : TcConfigBuilder -> CompilerOptionBlock list val GetCoreServiceCompilerOptions : TcConfigBuilder -> CompilerOptionBlock list // Expose the "setters" for some user switches, to enable setting of defaults val SetOptimizeSwitch : TcConfigBuilder -> OptionSwitch -> unit val SetTailcallSwitch : TcConfigBuilder -> OptionSwitch -> unit val SetDebugSwitch : TcConfigBuilder -> string option -> OptionSwitch -> unit val PrintOptionInfo : TcConfigBuilder -> unit val fsharpModuleName : CompilerTarget -> string -> string #if NO_COMPILER_BACKEND #else val InitialOptimizationEnv : TcImports -> TcGlobals -> IncrementalOptimizationEnv val AddExternalCcuToOpimizationEnv : TcGlobals -> IncrementalOptimizationEnv -> ImportedAssembly -> IncrementalOptimizationEnv val ApplyAllOptimizations : TcConfig * TcGlobals * ConstraintSolver.TcValF * string * ImportMap * bool * IncrementalOptimizationEnv * CcuThunk * TypedAssembly -> TypedAssembly * Opt.LazyModuleInfo * IncrementalOptimizationEnv val CreateIlxAssemblyGenerator : TcConfig * TcImports * TcGlobals * ConstraintSolver.TcValF * CcuThunk -> IlxAssemblyGenerator val GenerateIlxCode : IlxGenBackend * bool * bool * TcConfig * TypeChecker.TopAttribs * TypedAssembly * string * bool * IlxAssemblyGenerator -> IlxGenResults #endif // Used during static linking val NormalizeAssemblyRefs : TcImports -> (AbstractIL.IL.ILScopeRef -> AbstractIL.IL.ILScopeRef) // Miscellany val ignoreFailureOnMono1_1_16 : (unit -> unit) -> unit val mutable enableConsoleColoring : bool val DoWithErrorColor : bool -> (unit -> 'a) -> 'a val ReportTime : TcConfig -> string -> unit val abbrevFlagSet : TcConfigBuilder -> bool -> Set val PostProcessCompilerArgs : string Set -> string [] -> string list fsharp-3.0.34/src/fsharp/vs/0000775000175000017500000000000012260314606014572 5ustar chrischrisfsharp-3.0.34/src/fsharp/vs/ServiceUntypedParse.fs0000775000175000017500000012134512260314606021101 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open System open System.IO open System.Collections.Generic open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Internal.Utilities.Debug open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Lib /// Methods for dealing with F# sources files. module internal SourceFile = /// Source file extensions let private compilableExtensions = Build.sigSuffixes @ Build.implSuffixes @ Build.scriptSuffixes /// Single file projects extensions let private singleFileProjectExtensions = Build.scriptSuffixes /// Whether or not this file is compilable let IsCompilable file = let ext = Path.GetExtension(file) compilableExtensions |> List.exists(fun e->0 = String.Compare(e,ext,StringComparison.OrdinalIgnoreCase)) /// Whether or not this file should be a single-file project let MustBeSingleFileProject file = let ext = Path.GetExtension(file) singleFileProjectExtensions |> List.exists(fun e-> 0 = String.Compare(e,ext,StringComparison.OrdinalIgnoreCase)) module internal SourceFileImpl = let IsInterfaceFile file = let ext = Path.GetExtension(file) 0 = String.Compare(".fsi",ext,StringComparison.OrdinalIgnoreCase) /// Additonal #defines that should be in place when editing a file in a file editor such as VS. let AdditionalDefinesForUseInEditor(filename) = if Build.IsScript(filename) then ["INTERACTIVE";"EDITING"] // This is still used by the foreground parse else ["COMPILED";"EDITING"] type CompletionPath = string list * string option // plid * residue type InheritanceOrigin = | Class | Interface | Unknown type internal InheritanceContext = | Class | Interface | Unknown type internal RecordContext = | CopyOnUpdate of range * CompletionPath // range of copy-expr + current field | Constructor of string // typename | New of CompletionPath type internal CompletionContext = // completion context cannot be determined due to errors | Invalid // completing something after the inherit keyword | Inherit of InheritanceContext * CompletionPath // completing records field | RecordField of RecordContext | RangeOperator //---------------------------------------------------------------------------- // Untyped scope //---------------------------------------------------------------------------- [] type internal UntypedParseResults = { // Error infos Errors : ErrorInfo[] // Untyped AST Input : ParsedInput option // Do not report errors from the type checker ParseHadErrors : bool /// When these files change then the build is invalid DependencyFiles : string list } [] type (* internal *) UntypedParseInfo internal (parsed:UntypedParseResults) = member internal scope.ParseTree = match parsed with | { Input=x } -> x member internal scope.Results = parsed member internal scope.FindNoteworthyParamInfoLocations(line,col) = match parsed with | { Input=Some(input) } -> // Why don't we traverse the AST under a syncop? We don't need to, because the AST is an _immutable_ DU of DUs of ints and strings and whatnot. And a SyncOp really does slow it down in practice. //let result = ref None //syncop (fun () -> result := Some(AstHelpers.FindNoteworthyParamInfoLocations(line,col,input))) //Option.get !result NoteworthyParamInfoLocationsImpl.FindNoteworthyParamInfoLocations(line,col,input) | _ -> None /// Get declared items and the selected item at the specified location member private scope.GetNavigationItemsImpl() = ErrorScope.Protect Range.range0 (fun () -> use t = Trace.Call("CompilerServices", "GetNavigationItems", fun _ -> "") match parsed.Input with | Some(ParsedInput.ImplFile(ParsedImplFileInput(_modname,_isScript,_qualName,_pragmas,_hashDirectives,modules,_isLastCompiland))) -> NavigationImpl.getNavigationFromImplFile modules | Some(ParsedInput.SigFile(ParsedSigFileInput(_modname,_qualName,_pragmas,_hashDirectives,_modules))) -> NavigationImpl.empty | _ -> NavigationImpl.empty ) (fun _ -> NavigationImpl.empty) member private scope.ValidateBreakpointLocationImpl((line,col)) = let pos = Pos.fromVS line col // Process let-binding let findBreakPoints allowSameLine = let checkRange m = [ if rangeContainsPos m pos || (allowSameLine && m.StartLine = pos.Line) then yield Range.toVS m ] let walkBindSeqPt sp = [ match sp with SequencePointAtBinding m -> yield! checkRange m | _ -> () ] let walkForSeqPt sp = [ match sp with SequencePointAtForLoop m -> yield! checkRange m | _ -> () ] let walkWhileSeqPt sp = [ match sp with SequencePointAtWhileLoop m -> yield! checkRange m | _ -> () ] let walkTrySeqPt sp = [ match sp with SequencePointAtTry m -> yield! checkRange m | _ -> () ] let walkWithSeqPt sp = [ match sp with SequencePointAtWith m -> yield! checkRange m | _ -> () ] let walkFinallySeqPt sp = [ match sp with SequencePointAtFinally m -> yield! checkRange m | _ -> () ] let rec walkBind (Binding(_, _, _, _, _, _, SynValData(memFlagsOpt,_,_), synPat, _, synExpr, _, spInfo)) = [ // Don't yield the binding sequence point if there are any arguments, i.e. we're defining a function or a method let isFunction = isSome memFlagsOpt || match synPat with | SynPat.LongIdent (_,_,_,args,_,_) when nonNil args -> true | _ -> false if not isFunction then yield! walkBindSeqPt spInfo yield! walkExpr (isFunction || (match spInfo with SequencePointAtBinding _ -> false | _-> true)) synExpr ] and walkExprs es = [ for e in es do yield! walkExpr false e ] and walkBinds es = [ for e in es do yield! walkBind e ] and walkMatchClauses cl = [ for (Clause(_,whenExpr,e,_,_)) in cl do match whenExpr with Some e -> yield! walkExpr false e | _ -> () yield! walkExpr true e; ] and walkExprOpt (spAlways:bool) eOpt = [ match eOpt with Some e -> yield! walkExpr spAlways e | _ -> () ] // Determine the breakpoint locations for an expression. spAlways indicates we always // emit a breakpoint location for the expression unless it is a syntactic control flow construct and walkExpr (spAlways:bool) e = [ if spAlways && not (IsControlFlowExpression e) then yield! checkRange e.Range match e with | SynExpr.ArbitraryAfterError _ | SynExpr.LongIdent _ | SynExpr.Quote _ | SynExpr.LibraryOnlyILAssembly _ | SynExpr.LibraryOnlyStaticOptimization _ | SynExpr.Null _ | SynExpr.Ident _ | SynExpr.ImplicitZero _ | SynExpr.Const _ -> () | SynExpr.TypeTest (e,_,_) | SynExpr.Upcast (e,_,_) | SynExpr.AddressOf (_,e,_,_) | SynExpr.CompExpr (_,_,e,_) | SynExpr.ArrayOrListOfSeqExpr (_,e,_) | SynExpr.Typed (e,_,_) | SynExpr.FromParseError (e,_) | SynExpr.DiscardAfterMissingQualificationAfterDot (e,_) | SynExpr.Do (e,_) | SynExpr.Assert (e,_) | SynExpr.DotGet (e,_,_,_) | SynExpr.LongIdentSet (_,e,_) | SynExpr.New (_,_,e,_) | SynExpr.TypeApp (e,_,_,_,_,_,_) | SynExpr.LibraryOnlyUnionCaseFieldGet (e,_,_,_) | SynExpr.Downcast (e,_,_) | SynExpr.InferredUpcast (e,_) | SynExpr.InferredDowncast (e,_) | SynExpr.Lazy (e, _) | SynExpr.TraitCall(_,_,e,_) | SynExpr.Paren(e,_,_,_) -> yield! walkExpr false e | SynExpr.YieldOrReturn (_,e,_) | SynExpr.YieldOrReturnFrom (_,e,_) | SynExpr.DoBang (e,_) -> yield! checkRange e.Range yield! walkExpr false e | SynExpr.NamedIndexedPropertySet (_,e1,e2,_) | SynExpr.DotSet (e1,_,e2,_) | SynExpr.LibraryOnlyUnionCaseFieldSet (e1,_,_,e2,_) | SynExpr.App (_,_,e1,e2,_) -> yield! walkExpr false e1; yield! walkExpr false e2; | SynExpr.ArrayOrList (_,es,_) | SynExpr.Tuple (es,_,_) -> yield! walkExprs es | SynExpr.Record (_,_,fs,_) -> yield! walkExprs (List.map (fun (_, v, _) -> v) fs |> List.choose id) | SynExpr.ObjExpr (_,_,bs,is,_,_) -> yield! walkBinds bs ; for (InterfaceImpl(_,bs,_)) in is do yield! walkBinds bs | SynExpr.While (spWhile,e1,e2,_) -> yield! walkWhileSeqPt spWhile yield! walkExpr false e1; yield! walkExpr true e2; | SynExpr.JoinIn(e1, _range, e2, _range2) -> yield! walkExpr false e1; yield! walkExpr false e2; | SynExpr.For (spFor,_,e1,_,e2,e3,_) -> yield! walkForSeqPt spFor yield! walkExpr false e1; yield! walkExpr true e2; yield! walkExpr true e3; | SynExpr.ForEach (spFor,_,_,_,e1,e2,_) -> yield! walkForSeqPt spFor yield! walkExpr false e1; yield! walkExpr true e2; | SynExpr.MatchLambda(_isExnMatch,_argm,cl,spBind,_wholem) -> yield! walkBindSeqPt spBind for (Clause(_,whenExpr,e,_,_)) in cl do yield! walkExprOpt false whenExpr yield! walkExpr true e; | SynExpr.Lambda (_,_,_,e,_) -> yield! walkExpr true e; | SynExpr.Match (spBind,e,cl,_,_) -> yield! walkBindSeqPt spBind yield! walkExpr false e; for (Clause(_,whenExpr,e,_,_)) in cl do yield! walkExprOpt false whenExpr yield! walkExpr true e; | SynExpr.LetOrUse (_,_,bs,e,_) -> yield! walkBinds bs ; yield! walkExpr true e; | SynExpr.TryWith (e,_,cl,_,_,spTry,spWith) -> yield! walkTrySeqPt spTry yield! walkWithSeqPt spWith yield! walkExpr true e yield! walkMatchClauses cl | SynExpr.TryFinally (e1,e2,_,spTry,spFinally) -> yield! walkExpr true e1 yield! walkExpr true e2 yield! walkTrySeqPt spTry yield! walkFinallySeqPt spFinally | SynExpr.Sequential (spSeq,_,e1,e2,_) -> yield! walkExpr (match spSeq with SuppressSequencePointOnStmtOfSequential -> false | _ -> true) e1 yield! walkExpr (match spSeq with SuppressSequencePointOnExprOfSequential -> false | _ -> true) e2 | SynExpr.IfThenElse (e1,e2,e3opt,spBind,_,_,_) -> yield! walkBindSeqPt spBind yield! walkExpr false e1 yield! walkExpr true e2 yield! walkExprOpt true e3opt | SynExpr.DotIndexedGet (e1,es,_,_) -> yield! walkExpr false e1; yield! walkExprs es; | SynExpr.DotIndexedSet (e1,es,e2,_,_,_) -> yield! walkExpr false e1; yield! walkExprs es; yield! walkExpr false e2; | SynExpr.DotNamedIndexedPropertySet (e1,_,e2,e3,_) -> yield! walkExpr false e1; yield! walkExpr false e2; yield! walkExpr false e3; | SynExpr.LetOrUseBang (spBind,_,_,_,e1,e2,_) -> yield! walkBindSeqPt spBind yield! walkExpr true e1 yield! walkExpr true e2 ] // Process a class declaration or F# type declaration let rec walkTycon (TypeDefn(ComponentInfo(_, _, _, _, _, _, _, _), repr, membDefns, _)) = [ for m in membDefns do yield! walkMember m match repr with | SynTypeDefnRepr.ObjectModel(_, membDefns, _) -> for m in membDefns do yield! walkMember m | _ -> () ] // Returns class-members for the right dropdown and walkMember memb = [ match memb with | SynMemberDefn.LetBindings(binds, _, _, _) -> yield! walkBinds binds | SynMemberDefn.AutoProperty(_attribs, _isStatic, _id, _tyOpt, _propKind, _, _xmlDoc, _access, synExpr, _, _) -> yield! walkExpr true synExpr | SynMemberDefn.ImplicitCtor(_,_,_,_,m) -> yield! checkRange m | SynMemberDefn.Member(bind, _) -> yield! walkBind bind | SynMemberDefn.Interface(_synty, Some(membs), _) -> for m in membs do yield! walkMember m | SynMemberDefn.Inherit(_, _, m) -> // can break on the "inherit" clause yield! checkRange m | _ -> () ] // Process declarations nested in a module that should be displayed in the left dropdown // (such as type declarations, nested modules etc.) let rec walkDecl decl = [ match decl with | SynModuleDecl.Let(_, binds, m) -> if rangeContainsPos m pos then yield! walkBinds binds | SynModuleDecl.DoExpr(spExpr,expr, _) -> yield! walkBindSeqPt spExpr yield! walkExpr false expr | SynModuleDecl.ModuleAbbrev _ -> () | SynModuleDecl.NestedModule(_, decls, _, m) -> if rangeContainsPos m pos then for d in decls do yield! walkDecl d | SynModuleDecl.Types(tydefs, m) -> if rangeContainsPos m pos then for d in tydefs do yield! walkTycon d | SynModuleDecl.Exception(ExceptionDefn(ExceptionDefnRepr(_, _, _, _, _, _), membDefns, _), m) -> if rangeContainsPos m pos then for m in membDefns do yield! walkMember m | _ -> () ] // Collect all the items let walkModule (SynModuleOrNamespace(_,_,decls,_,_,_,m)) = if rangeContainsPos m pos then [ for d in decls do yield! walkDecl d ] else [] /// Get information for implementation file let walkImplFile (modules:SynModuleOrNamespace list) = [ for x in modules do yield! walkModule x ] match parsed.Input with | Some(ParsedInput.ImplFile(ParsedImplFileInput(_,_,_,_,_,modules,_))) -> walkImplFile modules | _ -> [] ErrorScope.Protect Range.range0 (fun () -> // Find the last breakpoint reported where the position is inside the region match findBreakPoints false |> List.rev with | h::_ -> Some(h) | _ -> // If there is no such breakpoint, look for any breakpoint beginning on this line match findBreakPoints true with | h::_ -> Some(h) | _ -> None) (fun _msg -> None) /// When these files appear or disappear the configuration for the current project is invalidated. member scope.DependencyFiles() : string list = parsed.DependencyFiles member scope.FileName = match parsed.Input with | Some(ParsedInput.ImplFile(ParsedImplFileInput(modname, _, _, _, _, _, _))) | Some(ParsedInput.SigFile(ParsedSigFileInput(modname, _, _, _, _))) -> modname | _ -> "" // Get items for the navigation drop down bar member scope.GetNavigationItems() = use t = Trace.Call("SyncOp","GetNavigationItems", fun _->"") // This does not need to be run on the background thread scope.GetNavigationItemsImpl() member scope.ValidateBreakpointLocation(pos:Position) = use t = Trace.Call("SyncOp","ValidateBreakpointLocation", fun _->"") // This does not need to be run on the background thread scope.ValidateBreakpointLocationImpl(pos) module internal UntypedParseInfoImpl = let GetUntypedParseResults (upi : UntypedParseInfo) = upi.Results let GetRangeOfExprLeftOfDot(line,col,parseTreeOpt) = match parseTreeOpt with | None -> None | Some(parseTree) -> let pos = Pos.fromVS line col // line was 0-based, need 1-based let ResultOfRange range = Range.toVS range let CheckLongIdent(longIdent:LongIdent) = // find the longest prefix before the "pos" dot let mutable r = (List.head longIdent).idRange let mutable couldBeBeforeFront = true for i in longIdent do if posGeq pos i.idRange.End then r <- unionRanges r i.idRange couldBeBeforeFront <- false couldBeBeforeFront, r AstTraversal.Traverse(line,col,parseTree, { new AstTraversal.AstVisitorBase<_>() with member this.VisitExpr(_path, traverseSynExpr, defaultTraverse, expr) = let expr = expr // fix debugger locals match expr with | SynExpr.LongIdent(_, LongIdentWithDots(longIdent,_), _altNameRefCell, _range) -> let _,r = CheckLongIdent(longIdent) Some(ResultOfRange r) | SynExpr.LongIdentSet(LongIdentWithDots(longIdent,_), synExpr, _range) -> if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else let _,r = CheckLongIdent(longIdent) Some(ResultOfRange r) | SynExpr.DotGet(synExpr, _dotm, LongIdentWithDots(longIdent,_), _range) -> if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else let inFront,r = CheckLongIdent(longIdent) if inFront then Some(ResultOfRange synExpr.Range) else // see comment below for SynExpr.DotSet Some(ResultOfRange (unionRanges synExpr.Range r)) | SynExpr.DotSet(synExpr, LongIdentWithDots(longIdent,_), synExpr2, _range) -> if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr elif AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr2.Range pos then traverseSynExpr synExpr2 else let inFront,r = CheckLongIdent(longIdent) if inFront then Some(ResultOfRange synExpr.Range) else // f(0).X.Y.Z // ^ // - r has this value // ---- synExpr.Range has this value // ------ we want this value Some(ResultOfRange (unionRanges synExpr.Range r)) | SynExpr.DotNamedIndexedPropertySet(synExpr, LongIdentWithDots(longIdent,_), synExpr2, synExpr3, _range) -> if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr elif AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr2.Range pos then traverseSynExpr synExpr2 elif AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr3.Range pos then traverseSynExpr synExpr3 else let inFront,r = CheckLongIdent(longIdent) if inFront then Some(ResultOfRange synExpr.Range) else Some(ResultOfRange (unionRanges synExpr.Range r)) | SynExpr.DiscardAfterMissingQualificationAfterDot(synExpr, _range) -> // get this for e.g. "bar()." if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else Some(ResultOfRange synExpr.Range) | SynExpr.FromParseError(synExpr, range) -> if AstTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else Some(ResultOfRange range) | SynExpr.App(ExprAtomicFlag.NonAtomic, true, (SynExpr.Ident(ident)), rhs, _) when ident.idText = "op_ArrayLookup" && not(AstTraversal.rangeContainsPosLeftEdgeInclusive rhs.Range pos) -> match defaultTraverse expr with | None -> // (expr).(expr) is an ML-deprecated array lookup, but we want intellisense on the dot // also want it for e.g. [|arr|].(0) Some(ResultOfRange expr.Range) | x -> x // we found the answer deeper somewhere in the lhs | _ -> defaultTraverse expr }) /// searches for the expression island suitable for the evaluation by the debugger let TryFindExpressionIslandInPosition(line,col,parseTreeOpt) = match parseTreeOpt with | None -> None | Some(parseTree) -> let pos = Pos.fromVS line col // line was 0-based, need 1-based let getLidParts (lid : LongIdent) = lid |> Seq.takeWhile (fun i -> posGeq pos i.idRange.Start) |> Seq.map (fun i -> i.idText) |> Seq.toList // tries to locate simple expression island // foundCandidate = false means that we are looking for the candidate expression // foundCandidate = true - we found candidate (DotGet) and now drill down to the left part let rec TryGetExpression foundCandidate expr = match expr with | SynExpr.Paren(e, _, _, _) when foundCandidate -> TryGetExpression foundCandidate e | SynExpr.LongIdent(_isOptional, LongIdentWithDots(lid,_), _altNameRefCell, _m) -> getLidParts lid |> Some | SynExpr.DotGet(leftPart, _, LongIdentWithDots(lid,_), _) when (rangeContainsPos (rangeOfLid lid) pos) || foundCandidate -> // requested position is at the lid part of the DotGet // process left part and append result to the result of processing lid let leftPartResult = TryGetExpression true leftPart match leftPartResult with | Some leftPartResult -> [ yield! leftPartResult yield! getLidParts lid ] |> Some | None -> None | SynExpr.FromParseError(synExpr, _range) -> TryGetExpression foundCandidate synExpr | _ -> None let rec walker = { new AstTraversal.AstVisitorBase<_>() with member this.VisitExpr(_path, traverseSynExpr, defaultTraverse, expr) = if rangeContainsPos expr.Range pos then match TryGetExpression false expr with | (Some parts) -> parts |> String.concat "." |> Some | _ -> defaultTraverse(expr) else None } AstTraversal.Traverse(line, col, parseTree, walker) // Given a cursor position here: // f(x) . iden // ^ // walk the AST to find the position here: // f(x) . iden // ^ // On success, return Some(thatPos, boolTrueIfCursorIsAfterTheDotButBeforeTheIdentifier) // If there's no dot, return None, so for example // foo // ^ // would return None // TODO would be great to unify this with GetRangeOfExprLeftOfDot above, if possible, as they are similar let TryFindExpressionASTLeftOfDotLeftOfCursor(line,col,parseTreeOpt) = match parseTreeOpt with | None -> None | Some(parseTree) -> let dive x = AstTraversal.dive x let pos = Pos.fromVS line col // line was 0-based, need 1-based let pick x = AstTraversal.pick pos line col x let walker = { new AstTraversal.AstVisitorBase<_>() with member this.VisitExpr(_path, traverseSynExpr, defaultTraverse, expr) = let pick = pick expr.Range let traverseSynExpr, defaultTraverse, expr = traverseSynExpr, defaultTraverse, expr // for debugging: debugger does not get object expression params as local vars if not(rangeContainsPos expr.Range pos) then match expr with | SynExpr.DiscardAfterMissingQualificationAfterDot(e,_m) -> // This happens with e.g. "f(x) . $" when you bring up a completion list a few spaces after a dot. The cursor is not 'in the parse tree', // but the dive algorithm will dive down into this node, and this is the one case where we do want to give a result despite the cursor // not properly being in a node. match traverseSynExpr(e) with | None -> Some(e.Range.End, false) | r -> r | _ -> // This happens for e.g. "System.Console.[]$", where the ".[]" token is thrown away by the parser and we dive into the System.Console longId // even though the cursor/dot is not in there. In those cases we want to return None, because there is not really a dot completion before // the cursor location. None else let rec traverseLidOrElse (optExprIfLeftOfLongId : SynExpr option) (LongIdentWithDots(lid,dots) as lidwd) = let resultIfLeftOfLongId = match optExprIfLeftOfLongId with | None -> None | Some e -> Some(e.Range.End, posGeq lidwd.Range.Start pos) match dots |> List.mapi (fun i x -> i,x) |> List.rev |> List.tryFind (fun (_,m) -> posGt pos m.Start) with | None -> resultIfLeftOfLongId | Some(n,_) -> Some((List.nth lid n).idRange.End, (List.length lid = n+1) // foo.$ || (posGeq (List.nth lid (n+1)).idRange.Start pos)) // foo.$bar match expr with | SynExpr.LongIdent(_isOptional, lidwd, _altNameRefCell, _m) -> traverseLidOrElse None lidwd | SynExpr.LongIdentSet(lidwd, exprRhs, _m) -> [ dive lidwd lidwd.Range (traverseLidOrElse None) dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr | SynExpr.DotGet(exprLeft, dotm, lidwd, _m) -> let afterDotBeforeLid = mkRange dotm.FileName dotm.End lidwd.Range.Start [ dive exprLeft exprLeft.Range traverseSynExpr dive exprLeft afterDotBeforeLid (fun e -> Some(e.Range.End, true)) dive lidwd lidwd.Range (traverseLidOrElse (Some exprLeft)) ] |> pick expr | SynExpr.DotSet(exprLeft, lidwd, exprRhs, _m) -> [ dive exprLeft exprLeft.Range traverseSynExpr dive lidwd lidwd.Range (traverseLidOrElse(Some exprLeft)) dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr | SynExpr.NamedIndexedPropertySet(lidwd, exprIndexer, exprRhs, _m) -> [ dive lidwd lidwd.Range (traverseLidOrElse None) dive exprIndexer exprIndexer.Range traverseSynExpr dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr | SynExpr.DotNamedIndexedPropertySet(exprLeft, lidwd, exprIndexer, exprRhs, _m) -> [ dive exprLeft exprLeft.Range traverseSynExpr dive lidwd lidwd.Range (traverseLidOrElse(Some exprLeft)) dive exprIndexer exprIndexer.Range traverseSynExpr dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr | SynExpr.DiscardAfterMissingQualificationAfterDot(e,m) -> match traverseSynExpr(e) with | None -> if posEq m.End pos then // the cursor is at the dot Some(e.Range.End, false) else // the cursor is left of the dot None | r -> r | SynExpr.App(ExprAtomicFlag.NonAtomic, true, (SynExpr.Ident(ident)), lhs, _m) when ident.idText = "op_ArrayLookup" && not(AstTraversal.rangeContainsPosLeftEdgeInclusive lhs.Range pos) -> match defaultTraverse expr with | None -> // (expr).(expr) is an ML-deprecated array lookup, but we want intellisense on the dot // also want it for e.g. [|arr|].(0) Some(lhs.Range.End, false) | x -> x // we found the answer deeper somewhere in the lhs | _ -> defaultTraverse(expr) } AstTraversal.Traverse(line, col, parseTree, walker) type TS = AstTraversal.TraverseStep /// try to determine completion context for the given pair (row, columns) let TryGetCompletionContext (line : int, col : int, untypedParseInfoOpt : UntypedParseInfo option) : CompletionContext option = let parsedInputOpt = match untypedParseInfoOpt with | Some upi -> upi.ParseTree | None -> None match parsedInputOpt with | None -> None | Some pt -> let pos = Pos.fromVS line col // line was 0-based, need 1-based let parseLid (LongIdentWithDots(lid, dots)) = let rec collect plid (parts : Ident list) (dots : range list) = match parts, dots with | [],_ -> Some (plid, None) | x::xs, ds -> if rangeContainsPos x.idRange pos then // pos lies with the range of current identifier let s = x.idText.Substring(0, pos.Column - x.idRange.Start.Column) let residue = if s.Length <> 0 then Some s else None Some(plid, residue) elif posGt x.idRange.Start pos then // can happen if caret is placed after dot but before the exising identifier A. $ B // return accumulated plid with no residue Some (plid, None) else match ds with | [] -> // pos lies after the id and no dots found - return accumulated plid and current id as residue Some(plid, Some(x.idText)) | d::ds -> if posGeq pos d.End then // pos lies after the dot - proceed to the next identifier collect ((x.idText)::plid) xs ds else // pos after the id but before the dot // A $.B - return nothing None match collect [] lid dots with | Some (parts, residue) -> Some((List.rev parts), residue) | None -> None let (|Class|Interface|Struct|Unknown|Invalid|) synAttributes = let (|SynAttr|_|) name (attr : SynAttribute) = match attr with | {TypeName = LongIdentWithDots([x], _)} when x.idText = name -> Some () | _ -> None let rec getKind isClass isInterface isStruct = function | [] -> isClass, isInterface, isStruct | (SynAttr "Class")::xs -> getKind true isInterface isStruct xs | (SynAttr "AbstractClass")::xs -> getKind true isInterface isStruct xs | (SynAttr "Interface")::xs -> getKind isClass true isStruct xs | (SynAttr "Struct")::xs -> getKind isClass isInterface true xs | _::xs -> getKind isClass isInterface isInterface xs match getKind false false false synAttributes with | false, false, false -> Unknown | true, false, false -> Class | false, true, false -> Interface | false, false, true -> Struct | _ -> Invalid let getCompletionContextForInheritSynMember ((ComponentInfo(synAttributes, _, _, _,_, _, _, _)), typeDefnKind : SynTypeDefnKind, completionPath) = let success k = Some (Inherit (k, completionPath)) // if kind is specified - take it // if kind is non-specified // - try to obtain it from attribute // - if no attributes present - infer kind from members match typeDefnKind with | TyconClass -> match synAttributes with | Class | Unknown -> success Class | _ -> Some CompletionContext.Invalid // non-matching attributes | TyconInterface -> match synAttributes with | Interface | Unknown -> success Interface | _ -> Some CompletionContext.Invalid // non-matching attributes | TyconStruct -> // display nothing for structs Some CompletionContext.Invalid | TyconUnspecified -> match synAttributes with | Class -> success Class | Interface -> success Interface | Unknown -> // user do not specify kind explicitly or via attributes success Unknown | _ -> // unable to uniquely detect kind from the attributes - return invalid context Some CompletionContext.Invalid | _ -> None // checks if we are in rhs of the range operator let isInRhsOfRangeOp (p : AstTraversal.TraversePath) = match p with | TS.Expr(SynExpr.App(ExprAtomicFlag.NonAtomic, false, SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.Ident(ident), _, _), _, _))::_ when ident.idText = "op_Range"-> true | _ -> false let walker = { new AstTraversal.AstVisitorBase<_>() with member this.VisitExpr(path, traverseSynExpr, defaultTraverse, expr) = if isInRhsOfRangeOp path then match defaultTraverse expr with | None -> Some (CompletionContext.RangeOperator) // nothing was found - report that we were in the context of range operator | x -> x // ok, we found something - return it else defaultTraverse expr member this.VisitRecordField(path, copyOpt, field) = let contextFromTreePath completionPath = // detect records usage in constructor match path with | TS.Expr(_)::TS.Binding(_):: TS.MemberDefn(_)::TS.TypeDefn(SynTypeDefn.TypeDefn(ComponentInfo(_, _, _, [id], _, _, _, _), _, _, _))::_ -> RecordContext.Constructor(id.idText) | _ -> RecordContext.New (completionPath) match field with | Some field -> match parseLid field with | Some (completionPath) -> let recordContext = match copyOpt with | Some (s : SynExpr) -> RecordContext.CopyOnUpdate(s.Range, completionPath) | None -> contextFromTreePath completionPath Some (CompletionContext.RecordField recordContext) | None -> None | None -> let recordContext = match copyOpt with | Some s -> RecordContext.CopyOnUpdate(s.Range, ([], None)) | None -> contextFromTreePath ([], None) Some (CompletionContext.RecordField recordContext) member this.VisitInheritSynMemberDefn(componentInfo, typeDefnKind, synType, _members, _range) = match synType with | SynType.LongIdent lidwd -> match parseLid lidwd with | Some (completionPath) -> getCompletionContextForInheritSynMember (componentInfo, typeDefnKind, completionPath) | None -> Some (CompletionContext.Invalid) // A $ .B -> no completion list | _ -> None } AstTraversal.Traverse(line, col, pt, walker)fsharp-3.0.34/src/fsharp/vs/IncrementalBuild.fsi0000775000175000017500000002050112260314606020517 0ustar chrischrisnamespace Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Build [] type (* internal *) Severity = | Warning | Error type (* internal *) ErrorInfo = { FileName:string StartLine:int EndLine:int StartColumn:int EndColumn:int Severity:Severity Message:string Subcategory:string } static member internal CreateFromExceptionAndAdjustEof : PhasedError * bool * bool * range * (int*int) -> ErrorInfo static member internal CreateFromException : PhasedError * bool * bool * range -> ErrorInfo // implementation details used by other code in the compiler [] type (* internal *) ErrorScope = interface System.IDisposable new : unit -> ErrorScope member ErrorsAndWarnings : ErrorInfo list static member Protect<'a> : range -> (unit->'a) -> (string->'a) -> 'a static member ProtectWithDefault<'a> : range -> (unit -> 'a) -> 'a -> 'a static member ProtectAndDiscard : range -> (unit -> unit) -> unit /// Generalized Incremental Builder. This is exposed only for unittesting purposes. module internal IncrementalBuild = // A build scalar. type Scalar<'T> = interface end /// A build vector. type Vector<'T> = interface end /// A set of build rules and the corresponding, possibly partial, results from building. type PartialBuild /// Declares a vector build input. /// Only required for unit testing. val InputScalar : string -> Scalar<'T> /// Declares a scalar build input. /// Only required for unit testing. val InputVector : string -> Vector<'T> /// Methods for acting on build Scalars /// Only required for unit testing. module Scalar = /// Apply a function to one scalar to produce another. val Map : string -> ('I -> 'O) -> Scalar<'I> -> Scalar<'O> /// Apply a function to scalar value to produce a vector. val Multiplex : string -> ('I -> 'O[])->Scalar<'I> -> Vector<'O> /// Methods for acting on build Vectors /// Only required for unit testing. module Vector = /// Maps one vector to another using the given function. val Map : string -> ('I -> 'O) -> Vector<'I> -> Vector<'O> /// Updates the creates a new vector with the same items but with /// timestamp specified by the passed-in function. val Stamp : string -> ('I -> System.DateTime) -> Vector<'I> -> Vector<'I> /// Apply a function to each element of the vector, threading an accumulator argument /// through the computation. Returns intermediate results in a vector. val ScanLeft : string -> ('A -> 'I -> Eventually<'A>) -> Scalar<'A> -> Vector<'I> -> Vector<'A> /// Apply a function to a vector to get a scalar value. val Demultiplex : string -> ('I[] -> 'O)->Vector<'I> -> Scalar<'O> /// Convert a Vector into a Scalar. val AsScalar: string -> Vector<'I> -> Scalar<'I[]> /// Evaluate a build. Only required for unit testing. val Eval : string -> PartialBuild -> PartialBuild /// Do one step in the build. Only required for unit testing. val Step : (string -> PartialBuild -> PartialBuild option) /// Get a scalar vector. Result must be available. Only required for unit testing. val GetScalarResult<'T> : string * PartialBuild -> ('T * System.DateTime) option /// Get a result vector. All results must be available or thrown an exception. Only required for unit testing. val GetVectorResult<'T> : string * PartialBuild -> 'T[] /// Get an element of vector result or None if there were no results. Only required for unit testing. val GetVectorResultBySlot<'T> : string*int*PartialBuild -> ('T * System.DateTime) option /// Declare build outputs and bind them to real values. /// Only required for unit testing. type BuildDescriptionScope = new : unit -> BuildDescriptionScope /// Declare a named scalar output. member DeclareScalarOutput : name:string * output:Scalar<'T> -> unit /// Declare a named vector output. member DeclareVectorOutput : name:string * output:Vector<'T> -> unit /// Set the conrete inputs for this build. member GetInitialPartialBuild : vectorinputs:(string * int * obj list) list * scalarinputs:(string*obj) list -> PartialBuild /// Incremental builder for F# parsing and type checking. module internal IncrementalFSharpBuild = /// Used for unit testing type IBEvent = | IBEParsed of string // filename | IBETypechecked of string // filename | IBENuked /// Used for unit testing val GetMostRecentIncrementalBuildEvents : int -> IBEvent list /// Used for unit testing val GetCurrentIncrementalBuildEventNum : unit -> int type FileDependency = { // Name of the file Filename : string // If true, then deletion or creation of this file should trigger an entirely fresh build ExistenceDependency : bool // If true, then changing this file should trigger an incremental rebuild IncrementalBuildDependency : bool } type IncrementalBuilder = new : tcConfig : Build.TcConfig * projectDirectory : string * assemblyName : string * niceNameGen : Microsoft.FSharp.Compiler.Ast.NiceNameGenerator * lexResourceManager : Microsoft.FSharp.Compiler.Lexhelp.LexResourceManager * sourceFiles : string list * ensureReactive : bool * errorLogger : ErrorLogger * keepGeneratedTypedAssembly:bool -> IncrementalBuilder /// Increment the usage count on the IncrementalBuilder by 1. Ths initial usage count is 0. The returns an IDisposable which will /// decrement the usage count on the entire build by 1 and dispose if it is no longer used by anyone. member IncrementUsageCount : unit -> System.IDisposable /// Check if the builder is not disposed member IsAlive : bool /// The TcConfig passed in to the builder creation. member TcConfig : Build.TcConfig /// Raised just before a file is type-checked, to invalidate the state of the file in VS and force VS to request a new direct typecheck of the file. /// The incremental builder also typechecks the file (error and intellisense results from the backgroud builder are not /// used by VS). member BeforeTypeCheckFile : IEvent /// Raised when a type provider invalidates the build. member ImportedCcusInvalidated : IEvent /// The list of files the build depends on member Dependencies : FileDependency list #if EXTENSIONTYPING /// Whether there are any 'live' type providers that may need a refresh when a project is Cleaned member ThereAreLiveTypeProviders : bool #endif /// Perform one step in the F# build. member Step : unit -> bool /// Ensure that the given file has been typechecked. /// Get the preceding typecheck state of a slot, allow stale results. member GetAntecedentTypeCheckResultsBySlot : int -> (Build.TcState * Build.TcImports * Microsoft.FSharp.Compiler.Env.TcGlobals * Build.TcConfig * (PhasedError * bool) list * System.DateTime) option /// Get the final typecheck result. Only allowed when 'generateTypedImplFiles' was set on Create, otherwise the TypedAssembly will have not implementations. member TypeCheck : unit -> Build.TcState * TypeChecker.TopAttribs * Tast.TypedAssembly * TypeChecker.TcEnv * Build.TcImports * Env.TcGlobals * Build.TcConfig /// Attempts to find the slot of the given input file name. Throws an exception if it couldn't find it. member GetSlotOfFileName : string -> int #if NO_QUICK_SEARCH_HELPERS // only used in QuickSearch prototype #else /// Get the number of slots on the vector of parse results member GetSlotsCount : unit -> int /// Await the untyped parse results for a particular slot in the vector of parse results. member GetParseResultsBySlot : int -> Ast.ParsedInput option * Range.range * string #endif // QUICK_SEARCH static member CreateBackgroundBuilderForProjectOptions : scriptClosureOptions:LoadClosure option * sourceFiles:string list * commandLineArgs:string list * projectDirectory:string * useScriptResolutionRules:bool * isIncompleteTypeCheckEnvironment : bool -> IncrementalBuilder * ErrorInfo list fsharp-3.0.34/src/fsharp/vs/ServiceLexing.fs0000775000175000017500000012273412260314606017707 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for lexing. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open System open System.IO open System.Collections.Generic open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Internal.Utilities.Debug open Microsoft.FSharp.Compiler.Parser open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Lexhelp open Microsoft.FSharp.Compiler.Lib type Position = int * int type Range = Position * Position /// This corresponds to a token categorization originally used in Visual Studio 2003. /// /// NOTE: This corresponds to a token categorization originally used in Visual Studio 2003 and the original Babel source code. /// It is not clear it is a primary logical classification that should be being used in the /// more recent language service work. type TokenColorKind = Default = 0 | Text = 0 | Keyword = 1 | Comment = 2 | Identifier = 3 | String = 4 | UpperIdentifier = 5 | InactiveCode = 7 | PreprocessorKeyword = 8 | Number = 9 | Operator = 10 #if COLORIZE_TYPES | TypeName = 11 #endif /// Categorize an action the editor should take in respons to a token, e.g. brace matching /// /// NOTE: This corresponds to a token categorization originally used in Visual Studio 2003 and the original Babel source code. /// It is not clear it is a primary logical classification that should be being used in the /// more recent language service work. type TriggerClass = None = 0x00000000 | MemberSelect = 0x00000001 | MatchBraces = 0x00000002 | ChoiceSelect = 0x00000004 | MethodTip = 0x000000F0 | ParamStart = 0x00000010 | ParamNext = 0x00000020 | ParamEnd = 0x00000040 /// This corresponds to a token categorization originally used in Visual Studio 2003. /// /// NOTE: This corresponds to a token categorization originally used in Visual Studio 2003 and the original Babel source code. /// It is not clear it is a primary logical classification that should be being used in the /// more recent language service work. type TokenCharKind = Default = 0x00000000 | Text = 0x00000000 | Keyword = 0x00000001 | Identifier = 0x00000002 | String = 0x00000003 | Literal = 0x00000004 | Operator = 0x00000005 | Delimiter = 0x00000006 | WhiteSpace = 0x00000008 | LineComment = 0x00000009 | Comment = 0x0000000A /// Information about a particular token from the tokenizer type TokenInformation = { LeftColumn:int; RightColumn:int; ColorClass:TokenColorKind; CharClass:TokenCharKind; TriggerClass:TriggerClass; Tag:int TokenName:string; FullMatchedLength: int } //---------------------------------------------------------------------------- // Flags //-------------------------------------------------------------------------- module internal Flags = #if SILVERLIGHT let init ()= () #else #if DEBUG let loggingTypes = System.Environment.GetEnvironmentVariable("mFSharp_Logging") let logging = not (String.IsNullOrEmpty(loggingTypes)) let initialLoggingGUITypes = loggingTypes let loggingGUI = not (String.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("mFSharp_LogToWinForm"))) let loggingStdOut = not (String.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("mFSharp_LogToStdOut"))) #else let loggingTypes = "" let logging = false let initialLoggingGUITypes = "" let loggingGUI = false let loggingStdOut = false #endif let doInit = if logging && not loggingGUI && not loggingStdOut then let logFile = ("c:\\fsharp\\log-m"+System.IO.Path.GetFileName(System.AppDomain.CurrentDomain.FriendlyName)+".log") let traceFile = ("c:\\fsharp\\trace-m"+System.IO.Path.GetFileName(System.AppDomain.CurrentDomain.FriendlyName)+".txt") try let log = (File.CreateText logFile :> TextWriter) setDiagnosticsChannel(Some(log)); progress := true; with e-> // Don't kill the language service just because we couldn't log. System.Diagnostics.Debug.Assert(false, e.ToString()) () if logging then dprintf "Opened log file %s for ML, config follows\n" logFile dprintf "logging types = %s\n" loggingTypes Trace.Log <- loggingTypes Trace.Out <- try new StreamWriter(traceFile,append=false,encoding=System.Text.Encoding.UTF8) :> TextWriter with e -> // Don't kill the language service just because we couldn't log. System.Diagnostics.Debug.Assert(false, e.ToString()) System.Console.Out elif loggingStdOut then Trace.Log <- initialLoggingGUITypes Trace.Out <- System.Console.Out elif loggingGUI then let f = new System.Windows.Forms.Form(Visible=true,TopMost=true,Width=600,Height=600) let memoryText = new System.Windows.Forms.TextBox(Text = "?? Kb", Width = 200) let memoryButton = new System.Windows.Forms.Button(Text = "GC and update Mem", Left = 200) memoryButton.Click.AddHandler(fun _ _ -> GC.Collect() GC.WaitForPendingFinalizers() memoryText.Text <- sprintf "%d Kb" (GC.GetTotalMemory(false) / 1024L) ) f.Controls.Add(memoryText) f.Controls.Add(memoryButton) let rb = new System.Windows.Forms.RichTextBox(Dock=System.Windows.Forms.DockStyle.Fill, Font=new System.Drawing.Font("courier new",8.0f), Top = memoryButton.Height) f.Controls.Add(rb) rb.DoubleClick.Add(fun _ -> rb.Clear()) let lab = new System.Windows.Forms.Label(Dock=System.Windows.Forms.DockStyle.Top, Font=new System.Drawing.Font("courier new",8.0f)) f.Controls.Add(lab) let tb = new System.Windows.Forms.TextBox(Text=initialLoggingGUITypes,Height=10,Multiline=false,Dock=System.Windows.Forms.DockStyle.Top, Font=new System.Drawing.Font("courier new",8.0f)) f.Controls.Add(tb) tb.TextChanged.Add (fun _ -> Trace.Log <- tb.Text) let log = let addTextOnGuiThread text = if not rb.IsDisposed then rb.AppendText(text); if text.Contains "\n" then rb.ScrollToCaret(); if rb.TextLength > 200000 then let s = rb.Text rb.Text <- s.[s.Length - 100000..s.Length-1] let addText text = if f.InvokeRequired then f.BeginInvoke(new System.Windows.Forms.MethodInvoker(fun () -> addTextOnGuiThread text)) |> ignore else addTextOnGuiThread text { new System.IO.TextWriter() with member x.Write(c:char) = addText (string c) member x.Write(s:string) = addText s member x.Encoding = System.Text.Encoding.Unicode } setDiagnosticsChannel(Some(log)); Trace.Log <- if initialLoggingGUITypes <> null then initialLoggingGUITypes else "" Trace.Out <- log else // Would be nice to leave this at whatever channel was originally assigned. // This currently defeats NUnit's ability to capture logging output. setDiagnosticsChannel(None) (* VS does not support stderr! *) //let stripFSharpCoreReferences = not (String.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("mFSharp_StripFSharpCoreReferences"))) let init() = doInit #endif open Flags //---------------------------------------------------------------------------- // Babel flags //-------------------------------------------------------------------------- module internal TokenClassifications = //---------------------------------------------------------------------------- //From tokens to flags //-------------------------------------------------------------------------- let tokenInfo token = match token with | IDENT s -> if s.Length <= 0 then System.Diagnostics.Debug.Assert(false, "BUG:Received zero length IDENT token.") // This is related to 4783. Recover by treating as lower case identifier. (TokenColorKind.Identifier,TokenCharKind.Identifier,TriggerClass.None) else if System.Char.ToUpperInvariant s.[0] = s.[0] then (TokenColorKind.UpperIdentifier,TokenCharKind.Identifier,TriggerClass.None) else (TokenColorKind.Identifier,TokenCharKind.Identifier,TriggerClass.None) // 'in' when used in a 'join' in a query expression | JOIN_IN -> (TokenColorKind.Identifier,TokenCharKind.Identifier,TriggerClass.None) | DECIMAL _ | BIGNUM _ | INT8 _ | UINT8 _ | INT16 _ | UINT16 _ | INT32 _ | UINT32 _ | INT64 _ | UINT64 _ | UNATIVEINT _ | NATIVEINT _ | IEEE32 _ | IEEE64 _ -> (TokenColorKind.Number,TokenCharKind.Literal,TriggerClass.None) | INT32_DOT_DOT _ // This will color the whole "1.." expression in a 'number' color // (this isn't entirely correct, but it'll work for now - see bug 3727) -> (TokenColorKind.Number,TokenCharKind.Operator,TriggerClass.None) | INFIX_STAR_DIV_MOD_OP ("mod" | "land" | "lor" | "lxor") | INFIX_STAR_STAR_OP ("lsl" | "lsr" | "asr") -> (TokenColorKind.Keyword,TokenCharKind.Keyword,TriggerClass.None) | LPAREN_STAR_RPAREN | DOLLAR | COLON_GREATER | COLON_COLON | PERCENT_OP _ | PLUS_MINUS_OP _ | PREFIX_OP _ | COLON_QMARK_GREATER | AMP | AMP_AMP | BAR_BAR | QMARK | QMARK_QMARK | COLON_QMARK | QUOTE | STAR | HIGH_PRECEDENCE_TYAPP | COLON | COLON_EQUALS | LARROW | EQUALS | RQUOTE_DOT _ | MINUS | ADJACENT_PREFIX_OP _ -> (TokenColorKind.Operator,TokenCharKind.Operator,TriggerClass.None) | INFIX_COMPARE_OP _ // This is a whole family: .< .> .= .!= .$ | FUNKY_OPERATOR_NAME _ // This is another whole family, including: .[] and .() | INFIX_AT_HAT_OP _ | INFIX_STAR_STAR_OP _ | INFIX_AMP_OP _ | INFIX_BAR_OP _ | INFIX_STAR_DIV_MOD_OP _ | INFIX_AMP_OP _ -> (TokenColorKind.Operator,TokenCharKind.Operator,TriggerClass.None) | DOT_DOT -> (TokenColorKind.Operator,TokenCharKind.Operator,TriggerClass.MemberSelect) | COMMA -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.ParamNext) | DOT -> (TokenColorKind.Operator,TokenCharKind.Delimiter,TriggerClass.MemberSelect) | BAR -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.None (* TriggerClass.ChoiceSelect *)) | HASH | UNDERSCORE | SEMICOLON | SEMICOLON_SEMICOLON -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.None) | LESS _ -> (TokenColorKind.Operator,TokenCharKind.Operator,TriggerClass.ParamStart) // for type provider static arguments | GREATER _ -> (TokenColorKind.Operator,TokenCharKind.Operator,TriggerClass.ParamEnd) // for type provider static arguments | LPAREN // We need 'ParamStart' to trigger the 'GetDeclarations' method to show param info automatically // this is needed even if we don't use MPF for determining information about params -> (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.ParamStart ||| TriggerClass.MatchBraces) | RPAREN | RPAREN_COMING_SOON | RPAREN_IS_HERE -> (TokenColorKind.Text,TokenCharKind.Delimiter, TriggerClass.ParamEnd ||| TriggerClass.MatchBraces) | LBRACK_LESS | LBRACE_LESS -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.None ) | LQUOTE _ | LBRACK | LBRACE | LBRACK_BAR -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.MatchBraces ) | GREATER_RBRACE | GREATER_RBRACK | GREATER_BAR_RBRACK -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.None ) | RQUOTE _ | RBRACK | RBRACE | RBRACE_COMING_SOON | RBRACE_IS_HERE | BAR_RBRACK -> (TokenColorKind.Text,TokenCharKind.Delimiter,TriggerClass.MatchBraces ) | PUBLIC | PRIVATE | INTERNAL | BASE | GLOBAL | CONSTRAINT | INSTANCE | DELEGATE | INHERIT|CONSTRUCTOR|DEFAULT|OVERRIDE|ABSTRACT|CLASS | MEMBER | STATIC | NAMESPACE | OASSERT | OLAZY | ODECLEND | OBLOCKSEP | OEND | OBLOCKBEGIN | ORIGHT_BLOCK_END | OBLOCKEND | OBLOCKEND_COMING_SOON | OBLOCKEND_IS_HERE | OTHEN | OELSE | OLET(_) | OBINDER _ | BINDER _ | ODO | OWITH | OFUNCTION | OFUN | ORESET | ODUMMY _ | DO_BANG | ODO_BANG | YIELD _ | YIELD_BANG _ | OINTERFACE_MEMBER | ELIF | RARROW | SIG | STRUCT | UPCAST | DOWNCAST | NULL | RESERVED | MODULE | AND | AS | ASSERT | ASR | DOWNTO | EXCEPTION | FALSE | FOR | FUN | FUNCTION | FINALLY | LAZY | MATCH | MUTABLE | NEW | OF | OPEN | OR | VOID | EXTERN | INTERFACE | REC | TO | TRUE | TRY | TYPE | VAL | INLINE | WHEN | WHILE | WITH | IF | THEN | ELSE | DO | DONE | LET(_) | IN (*| NAMESPACE*) | CONST | HIGH_PRECEDENCE_PAREN_APP | HIGH_PRECEDENCE_BRACK_APP | TYPE_COMING_SOON | TYPE_IS_HERE | MODULE_COMING_SOON | MODULE_IS_HERE -> (TokenColorKind.Keyword,TokenCharKind.Keyword,TriggerClass.None) | BEGIN -> (TokenColorKind.Keyword,TokenCharKind.Keyword,TriggerClass.None) | END -> (TokenColorKind.Keyword,TokenCharKind.Keyword,TriggerClass.None) | HASH_LIGHT _ | HASH_LINE _ | HASH_IF _ | HASH_ELSE _ | HASH_ENDIF _ -> (TokenColorKind.PreprocessorKeyword,TokenCharKind.WhiteSpace,TriggerClass.None) | INACTIVECODE _ -> (TokenColorKind.InactiveCode,TokenCharKind.WhiteSpace,TriggerClass.None) | LEX_FAILURE _ | WHITESPACE _ -> (TokenColorKind.Default,TokenCharKind.WhiteSpace,TriggerClass.None) | COMMENT _ -> (TokenColorKind.Comment,TokenCharKind.Comment,TriggerClass.None) | LINE_COMMENT _ -> (TokenColorKind.Comment,TokenCharKind.LineComment,TriggerClass.None) | STRING_TEXT _ -> (TokenColorKind.String,TokenCharKind.String,TriggerClass.None) | KEYWORD_STRING _ -> (TokenColorKind.Keyword,TokenCharKind.Keyword,TriggerClass.None) | BYTEARRAY _ | STRING _ | CHAR _ (* bug://2863 asks to color 'char' as "string" *) -> (TokenColorKind.String,TokenCharKind.String,TriggerClass.None) | EOF _ -> failwith "tokenInfo" module internal TestExpose = let TokenInfo tok = TokenClassifications.tokenInfo tok //---------------------------------------------------------------------------- // Lexer states encoded to/from integers //-------------------------------------------------------------------------- type LexState = int64 type ColorState = | Token = 1 | IfDefSkip = 3 | String = 4 | Comment = 5 | StringInComment = 6 | VerbatimStringInComment = 7 | CamlOnly = 8 | VerbatimString = 9 | SingleLineComment = 10 | EndLineThenSkip = 11 | EndLineThenToken = 12 | TripleQuoteString = 13 | TripleQuoteStringInComment = 14 | InitialState = 0 module internal LexerStateEncoding = let computeNextLexState token (prevLexcont:LexerWhitespaceContinuation) = match token with | HASH_LINE s | HASH_LIGHT s | HASH_IF(_, _, s) | HASH_ELSE(_, _, s) | HASH_ENDIF(_, _, s) | INACTIVECODE s | WHITESPACE s | COMMENT s | LINE_COMMENT s | STRING_TEXT s | EOF s -> s | BYTEARRAY _ | STRING _ -> LexCont.Token(prevLexcont.LexerIfdefStack) | _ -> prevLexcont // Note that this will discard all lexcont state, including the ifdefStack. let revertToDefaultLexCont = LexCont.Token [] let resize32 (i:int32) : LexState = int64 i let lexstateNumBits = 4 let ncommentsNumBits = 2 let startPosNumBits = pos.EncodingSize let hardwhiteNumBits = 1 let ifdefstackCountNumBits = 4 let ifdefstackNumBits = 16 // 0 means if, 1 means else let _ = assert (lexstateNumBits + ncommentsNumBits + startPosNumBits + hardwhiteNumBits + ifdefstackCountNumBits + ifdefstackNumBits <= 64) let lexstateStart = 0 let ncommentsStart = lexstateNumBits let startPosStart = lexstateNumBits+ncommentsNumBits let hardwhitePosStart = lexstateNumBits+ncommentsNumBits+startPosNumBits let ifdefstackCountStart = lexstateNumBits+ncommentsNumBits+startPosNumBits+hardwhiteNumBits let ifdefstackStart = lexstateNumBits+ncommentsNumBits+startPosNumBits+hardwhiteNumBits+ifdefstackCountNumBits let lexstateMask = Bits.mask64 lexstateStart lexstateNumBits let ncommentsMask = Bits.mask64 ncommentsStart ncommentsNumBits let startPosMask = Bits.mask64 startPosStart startPosNumBits let hardwhitePosMask = Bits.mask64 hardwhitePosStart hardwhiteNumBits let ifdefstackCountMask = Bits.mask64 ifdefstackCountStart ifdefstackCountNumBits let ifdefstackMask = Bits.mask64 ifdefstackStart ifdefstackNumBits let bitOfBool b = if b then 1 else 0 let boolOfBit n = (n = 1L) let encodeLexCont (colorState:ColorState) ncomments (b:pos) ifdefStack light = let mutable ifdefStackCount = 0 let mutable ifdefStackBits = 0 for ifOrElse in ifdefStack do match ifOrElse with | (IfDefIf,_) -> () | (IfDefElse,_) -> ifdefStackBits <- (ifdefStackBits ||| (1 <<< ifdefStackCount)) ifdefStackCount <- ifdefStackCount + 1 let lexstate = int64 colorState ((lexstate <<< lexstateStart) &&& lexstateMask) ||| ((ncomments <<< ncommentsStart) &&& ncommentsMask) ||| ((resize32 b.Encoding <<< startPosStart) &&& startPosMask) ||| ((resize32 (bitOfBool light) <<< hardwhitePosStart) &&& hardwhitePosMask) ||| ((resize32 ifdefStackCount <<< ifdefstackCountStart) &&& ifdefstackCountMask) ||| ((resize32 ifdefStackBits <<< ifdefstackStart) &&& ifdefstackMask) let decodeLexCont (state:LexState) = let mutable ifDefs = [] let ifdefStackCount = (int32) ((state &&& ifdefstackCountMask) >>> ifdefstackCountStart) if ifdefStackCount>0 then let ifdefStack = (int32) ((state &&& ifdefstackMask) >>> ifdefstackStart) for i in 1..ifdefStackCount do let bit = ifdefStackCount-i let mask = 1 <<< bit let ifDef = (if ifdefStack &&& mask = 0 then IfDefIf else IfDefElse) ifDefs<-(ifDef,range0)::ifDefs enum (int32 ((state &&& lexstateMask) >>> lexstateStart)), (int32) ((state &&& ncommentsMask) >>> ncommentsStart), pos.Decode (int32 ((state &&& startPosMask) >>> startPosStart)), ifDefs, boolOfBit ((state &&& hardwhitePosMask) >>> hardwhitePosStart) let encodeLexInt lightSyntaxStatus (lexcont:LexerWhitespaceContinuation) = let tag,n1,p1,ifd = match lexcont with | LexCont.Token ifd -> ColorState.Token, 0L, pos0, ifd | LexCont.IfDefSkip (ifd,n,m) -> ColorState.IfDefSkip, resize32 n, m.Start, ifd | LexCont.EndLine(LexerEndlineContinuation.Skip(ifd,n,m)) -> ColorState.EndLineThenSkip, resize32 n, m.Start, ifd | LexCont.EndLine(LexerEndlineContinuation.Token(ifd)) -> ColorState.EndLineThenToken, 0L, pos0, ifd | LexCont.String (ifd,m) -> ColorState.String, 0L, m.Start, ifd | LexCont.Comment (ifd,n,m) -> ColorState.Comment, resize32 n, m.Start, ifd | LexCont.SingleLineComment (ifd,n,m) -> ColorState.SingleLineComment, resize32 n, m.Start, ifd | LexCont.StringInComment (ifd,n,m) -> ColorState.StringInComment, resize32 n, m.Start, ifd | LexCont.VerbatimStringInComment (ifd,n,m) -> ColorState.VerbatimStringInComment, resize32 n, m.Start, ifd | LexCont.TripleQuoteStringInComment (ifd,n,m) -> ColorState.TripleQuoteStringInComment,resize32 n, m.Start, ifd | LexCont.MLOnly (ifd,m) -> ColorState.CamlOnly, 0L, m.Start, ifd | LexCont.VerbatimString (ifd,m) -> ColorState.VerbatimString, 0L, m.Start, ifd | LexCont.TripleQuoteString (ifd,m) -> ColorState.TripleQuoteString, 0L, m.Start, ifd encodeLexCont tag n1 p1 ifd lightSyntaxStatus let decodeLexInt (state:LexState) = let tag,n1,p1,ifd,lightSyntaxStatusInital = decodeLexCont state let lexcont = match tag with | ColorState.Token -> LexCont.Token ifd | ColorState.IfDefSkip -> LexCont.IfDefSkip (ifd,n1,mkRange "file" p1 p1) | ColorState.String -> LexCont.String (ifd,mkRange "file" p1 p1) | ColorState.Comment -> LexCont.Comment (ifd,n1,mkRange "file" p1 p1) | ColorState.SingleLineComment -> LexCont.SingleLineComment (ifd,n1,mkRange "file" p1 p1) | ColorState.StringInComment -> LexCont.StringInComment (ifd,n1,mkRange "file" p1 p1) | ColorState.VerbatimStringInComment -> LexCont.VerbatimStringInComment (ifd,n1,mkRange "file" p1 p1) | ColorState.TripleQuoteStringInComment -> LexCont.TripleQuoteStringInComment (ifd,n1,mkRange "file" p1 p1) | ColorState.CamlOnly -> LexCont.MLOnly (ifd,mkRange "file" p1 p1) | ColorState.VerbatimString -> LexCont.VerbatimString (ifd,mkRange "file" p1 p1) | ColorState.TripleQuoteString -> LexCont.TripleQuoteString (ifd,mkRange "file" p1 p1) | ColorState.EndLineThenSkip -> LexCont.EndLine(LexerEndlineContinuation.Skip(ifd,n1,mkRange "file" p1 p1)) | ColorState.EndLineThenToken -> LexCont.EndLine(LexerEndlineContinuation.Token(ifd)) | _ -> LexCont.Token [] lightSyntaxStatusInital,lexcont let callLexCont lexcont args skip lexbuf = let argsWithIfDefs ifd = if !args.ifdefStack = ifd then args else {args with ifdefStack = ref ifd} match lexcont with | LexCont.EndLine cont -> Lexer.endline cont args skip lexbuf | LexCont.Token ifd -> Lexer.token (argsWithIfDefs ifd) skip lexbuf | LexCont.IfDefSkip (ifd,n,m) -> Lexer.ifdefSkip n m (argsWithIfDefs ifd) skip lexbuf // Q: What's this magic 100 number for? Q: it's just an initial buffer size. | LexCont.String (ifd,m) -> Lexer.string (ByteBuffer.Create 100,defaultStringFinisher,m,(argsWithIfDefs ifd)) skip lexbuf | LexCont.Comment (ifd,n,m) -> Lexer.comment (n,m,(argsWithIfDefs ifd)) skip lexbuf // The first argument is 'None' because we don't need XML comments when called from VS | LexCont.SingleLineComment (ifd,n,m) -> Lexer.singleLineComment (None,n,m,(argsWithIfDefs ifd)) skip lexbuf | LexCont.StringInComment (ifd,n,m) -> Lexer.stringInComment n m (argsWithIfDefs ifd) skip lexbuf | LexCont.VerbatimStringInComment (ifd,n,m) -> Lexer.verbatimStringInComment n m (argsWithIfDefs ifd) skip lexbuf | LexCont.TripleQuoteStringInComment (ifd,n,m) -> Lexer.tripleQuoteStringInComment n m (argsWithIfDefs ifd) skip lexbuf | LexCont.MLOnly (ifd,m) -> Lexer.mlOnly m (argsWithIfDefs ifd) skip lexbuf | LexCont.VerbatimString (ifd,m) -> Lexer.verbatimString (ByteBuffer.Create 100,defaultStringFinisher,m,(argsWithIfDefs ifd)) skip lexbuf | LexCont.TripleQuoteString (ifd,m) -> Lexer.tripleQuoteString (ByteBuffer.Create 100,defaultStringFinisher,m,(argsWithIfDefs ifd)) skip lexbuf //---------------------------------------------------------------------------- // Colorization //---------------------------------------------------------------------------- // Information beyond just tokens that can be derived by looking at just a single line. // For example metacommands like #load. type SingleLineTokenState = | BeforeHash = 0 | NoFurtherMatchPossible = 1 /// Split a line into tokens and attach information about the tokens. This information is used by Visual Studio. [] type (* internal *) LineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, filename : string, lexArgsLightOn : lexargs, lexArgsLightOff : lexargs) = let skip = false // don't skip whitespace in the lexer let mutable singleLineTokenState = SingleLineTokenState.BeforeHash let fsx = Build.IsScript(filename) // ---------------------------------------------------------------------------------- // This implements post-processing of #directive tokens - not very elegant, but it works... // We get the whole " #if IDENT // .. .. " thing as a single token from the lexer, // so we need to split it into tokens that are used by VS for colorization // Stack for tokens that are split during postrpocessing let mutable tokenStack = new Stack<_>() let delayToken tok = tokenStack.Push(tok) // Process: anywhite* # let processDirective (str:string) directiveLength delay cont = let hashIdx = str.IndexOf("#") if (hashIdx <> 0) then delay(WHITESPACE cont, 0, hashIdx - 1) delay(HASH_IF(range0, "", cont), hashIdx, hashIdx + directiveLength) hashIdx + directiveLength + 1 // Process: anywhite* ("//" [^'\n''\r']*)? let processWhiteAndComment (str:string) offset delay cont = let rest = str.Substring(offset, str.Length - offset) let comment = rest.IndexOf('/') let spaceLength = if comment = -1 then rest.Length else comment if (spaceLength > 0) then delay(WHITESPACE cont, offset, offset + spaceLength - 1) if (comment <> -1) then delay(COMMENT(cont), offset + comment, offset + rest.Length - 1) // Split a directive line from lexer into tokens usable in VS let processDirectiveLine ofs f = let delayed = new ResizeArray<_>() f (fun (tok, s, e) -> delayed.Add (tok, s + ofs, e + ofs) ) // delay all the tokens and return the remaining one for i = delayed.Count - 1 downto 1 do delayToken delayed.[i] delayed.[0] // Split the following line: // anywhite* ("#else"|"#endif") anywhite* ("//" [^'\n''\r']*)? let processHashEndElse ofs (str:string) length cont = processDirectiveLine ofs (fun delay -> // Process: anywhite* "#else" / anywhite* "#endif" let offset = processDirective str length delay cont // Process: anywhite* ("//" [^'\n''\r']*)? processWhiteAndComment str offset delay cont ) // Split the following line: // anywhite* "#if" anywhite+ ident anywhite* ("//" [^'\n''\r']*)? let processHashIfLine ofs (str:string) cont = let With n m = if (n < 0) then m else n processDirectiveLine ofs (fun delay -> // Process: anywhite* "#if" let offset = processDirective str 2 delay cont // Process: anywhite+ ident let rest, spaces = let w = str.Substring(offset) let r = w.TrimStart [| ' '; '\t' |] r, w.Length - r.Length let beforeIdent = offset + spaces let identLength = With (rest.IndexOfAny([| '/'; '\t'; ' ' |])) rest.Length delay(WHITESPACE cont, offset, beforeIdent - 1) delay(IDENT(rest.Substring(0, identLength)), beforeIdent, beforeIdent + identLength - 1) // Process: anywhite* ("//" [^'\n''\r']*)? let offset = beforeIdent + identLength processWhiteAndComment str offset delay cont ) // ---------------------------------------------------------------------------------- do resetLexbufPos filename lexbuf member x.ScanToken(lexintInitial) : Option * LexState = use unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) use unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> DiscardErrorsLogger) let lightSyntaxStatusInital, lexcontInitial = LexerStateEncoding.decodeLexInt lexintInitial let lightSyntaxStatus = LightSyntaxStatus(lightSyntaxStatusInital,false) // Build the arguments to the lexer function let lexargs = if lightSyntaxStatusInital then lexArgsLightOn else lexArgsLightOff let GetTokenWithPosition(lexcontInitial) = // Column of token let ColumnsOfCurrentToken() = let leftp = lexbuf.StartPos let rightp = lexbuf.EndPos let leftc = leftp.Column let rightc = match maxLength with | Some mx when rightp.Line > leftp.Line -> mx | _ -> rightp.Column let rightc = rightc - 1 leftc,rightc // Get the token & position - either from a stack or from the lexer try if (tokenStack.Count > 0) then true, tokenStack.Pop() else // Choose which lexer entrypoint to call and call it let token = LexerStateEncoding.callLexCont lexcontInitial lexargs skip lexbuf let leftc, rightc = ColumnsOfCurrentToken() // Splits tokens like ">." into multiple tokens - this duplicates behavior from the 'lexfilter' // which cannot be (easily) used from the langauge service. The rules here are not always valid, // because sometimes token shouldn't be split. However it is just for colorization & // for VS (which needs to recognize when user types "."). match token with | HASH_IF(m, lineStr, cont) when lineStr <> "" -> false, processHashIfLine m.StartColumn lineStr cont | HASH_ELSE(m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 4 cont | HASH_ENDIF(m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 5 cont | RQUOTE_DOT (s,raw) -> delayToken(DOT, rightc, rightc) false, (RQUOTE (s,raw), leftc, rightc - 1) | INFIX_COMPARE_OP (Lexfilter.TyparsCloseOp(greaters,afterOp) as opstr) -> match afterOp with | None -> () | Some tok -> delayToken(tok, leftc + greaters.Length, rightc) for i = greaters.Length - 1 downto 1 do delayToken(greaters.[i] false, leftc + i, rightc - opstr.Length + i + 1) false, (greaters.[0] false, leftc, rightc - opstr.Length + 1) // break up any operators that start with '.' so that we can get auto-popup-completion for e.g. "x.+1" when typing the dot | INFIX_STAR_STAR_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_STAR_STAR_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | PLUS_MINUS_OP opstr when opstr.StartsWith(".") -> delayToken(PLUS_MINUS_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | INFIX_COMPARE_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_COMPARE_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | INFIX_AT_HAT_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_AT_HAT_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | INFIX_BAR_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_BAR_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | PREFIX_OP opstr when opstr.StartsWith(".") -> delayToken(PREFIX_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | INFIX_STAR_DIV_MOD_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_STAR_DIV_MOD_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | INFIX_AMP_OP opstr when opstr.StartsWith(".") -> delayToken(INFIX_AMP_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | ADJACENT_PREFIX_OP opstr when opstr.StartsWith(".") -> delayToken(ADJACENT_PREFIX_OP(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | FUNKY_OPERATOR_NAME opstr when opstr.StartsWith(".") -> delayToken(FUNKY_OPERATOR_NAME(opstr.Substring(1)), leftc+1, rightc) false, (DOT, leftc, leftc) | _ -> false, (token, leftc, rightc) with | e -> false, (EOF LexerStateEncoding.revertToDefaultLexCont, 0, 0) // REVIEW: report lex failure here // Grab a token let isCached, (token, leftc, rightc) = GetTokenWithPosition(lexcontInitial) // Check for end-of-string and failure let tokenDataOption, lexcontFinal, tokenTag = match token with | EOF lexcont -> // End of text! No more tokens. None,lexcont,0 | LEX_FAILURE s -> // REVIEW: report this error Trace.PrintLine("Lexing", fun _ -> sprintf "LEX_FAILURE:%s\n" s) None, LexerStateEncoding.revertToDefaultLexCont, 0 | _ -> // Get the information about the token let (colorClass,charClass,triggerClass) = TokenClassifications.tokenInfo token let lexcontFinal = // If we're using token from cache, we don't move forward with lexing if isCached then lexcontInitial else LexerStateEncoding.computeNextLexState token lexcontInitial let tokenTag = tagOfToken token let fullMatchedLength = lexbuf.EndPos.AbsoluteOffset - lexbuf.StartPos.AbsoluteOffset let tokenData = { TokenName = token_to_string token; LeftColumn=leftc; RightColumn=rightc; ColorClass=colorClass; CharClass=charClass; TriggerClass=triggerClass; Tag=tokenTag; FullMatchedLength=fullMatchedLength} Some(tokenData), lexcontFinal, tokenTag // Get the final lex int and color state let FinalState(lexcontFinal) = LexerStateEncoding.encodeLexInt lightSyntaxStatus.Status lexcontFinal // Check for patterns like #-IDENT and see if they look like meta commands for .fsx files. If they do then merge them into a single token. let tokenDataOption,lexintFinal = let lexintFinal = FinalState(lexcontFinal) match tokenDataOption, singleLineTokenState, tokenTagToTokenId tokenTag with | Some(tokenData), SingleLineTokenState.BeforeHash, TOKEN_HASH -> // Don't allow further matches. singleLineTokenState <- SingleLineTokenState.NoFurtherMatchPossible // Peek at the next token let isCached, (nextToken, _, rightc) = GetTokenWithPosition(lexcontInitial) match nextToken with | IDENT possibleMetacommand -> match fsx,possibleMetacommand with // These are for script (.fsx and .fsscript) files. | true,"r" | true,"reference" | true,"I" | true,"load" | true,"time" | true,"cd" #if DEBUG | true,"terms" | true,"types" | true,"savedll" | true,"nosavedll" #endif | true,"silentCd" | true,"q" | true,"quit" | true,"help" // These are for script and non-script | _,"nowarn" -> // Merge both tokens into one. let lexcontFinal = if (isCached) then lexcontInitial else LexerStateEncoding.computeNextLexState token lexcontInitial let tokenData = {tokenData with RightColumn=rightc;ColorClass=TokenColorKind.PreprocessorKeyword;CharClass=TokenCharKind.Keyword;TriggerClass=TriggerClass.None} let lexintFinal = FinalState(lexcontFinal) Some(tokenData),lexintFinal | _ -> tokenDataOption,lexintFinal | _ -> tokenDataOption,lexintFinal | _, SingleLineTokenState.BeforeHash, TOKEN_WHITESPACE -> // Allow leading whitespace. tokenDataOption,lexintFinal | _ -> singleLineTokenState <- SingleLineTokenState.NoFurtherMatchPossible tokenDataOption,lexintFinal tokenDataOption, lexintFinal static member ColorStateOfLexState (lexState: LexState) = let tag,_ncomments,_position,_ifdefStack,_lightSyntaxStatusInital = LexerStateEncoding.decodeLexCont lexState tag static member LexStateOfColorState (colorState: ColorState) = let ncomments = 0L let position = pos0 let ifdefStack = [] let light = true LexerStateEncoding.encodeLexCont colorState ncomments position ifdefStack light [] type SourceTokenizer(defineConstants : string list, filename : string) = let lexResourceManager = new Lexhelp.LexResourceManager() let lexArgsLightOn = mkLexargs(filename,defineConstants,LightSyntaxStatus(true,false),lexResourceManager, ref [],DiscardErrorsLogger) let lexArgsLightOff = mkLexargs(filename,defineConstants,LightSyntaxStatus(false,false),lexResourceManager, ref [],DiscardErrorsLogger) member this.CreateLineTokenizer(lineText: string) = let lexbuf = UnicodeLexing.StringAsLexbuf lineText LineTokenizer(lexbuf, Some lineText.Length, filename, lexArgsLightOn, lexArgsLightOff) member this.CreateBufferTokenizer(bufferFiller) = let lexbuf = UnicodeLexing.FunctionAsLexbuf bufferFiller LineTokenizer(lexbuf, None, filename, lexArgsLightOn, lexArgsLightOff) fsharp-3.0.34/src/fsharp/vs/SimpleServices.fs0000775000175000017500000003117212260314606020070 0ustar chrischris #if SILVERLIGHT namespace Microsoft.FSharp.Compiler.Interactive module Runner = type public InteractiveConsole(argv:string[],reader:System.IO.TextReader, writer:System.IO.TextWriter, error:System.IO.TextWriter) = do Microsoft.FSharp.Core.Printf.setWriter writer Microsoft.FSharp.Core.Printf.setError error let session = Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession(argv, reader, writer, error) member x.Run() = session.Run() member x.Interrupt() = session.Interrupt() #endif namespace Microsoft.FSharp.Compiler.SimpleSourceCodeServices open System open System.IO open System.Text open Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler.Driver open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.ErrorLogger [] module private Utils = let buildFormatComment (xmlCommentRetriever: string * string -> string) cmt (sb: StringBuilder) = match cmt with | XmlCommentText(s) -> sb.AppendLine(s) |> ignore | XmlCommentSignature(file, signature) -> let comment = xmlCommentRetriever (file, signature) if (not (comment.Equals(null))) && comment.Length > 0 then sb.AppendLine(comment) |> ignore | XmlCommentNone -> () let buildFormatElement isSingle el (sb: StringBuilder) xmlCommentRetriever = match el with | DataTipElementNone -> () | DataTipElement(it, comment) -> sb.AppendLine(it) |> buildFormatComment xmlCommentRetriever comment | DataTipElementGroup(items) -> let items, msg = if items.Length > 10 then (items |> Seq.take 10 |> List.ofSeq), sprintf " (+%d other overloads)" (items.Length - 10) else items, null if isSingle && items.Length > 1 then sb.AppendLine("Multiple overloads") |> ignore for (it, comment) in items do sb.AppendLine(it) |> buildFormatComment xmlCommentRetriever comment if msg <> null then sb.AppendFormat(msg) |> ignore | DataTipElementCompositionError(err) -> sb.Append("Composition error: " + err) |> ignore // Convert DataTipText to string let formatTip tip xmlCommentRetriever = let commentRetriever = defaultArg xmlCommentRetriever (fun _ -> "") let sb = new StringBuilder() match tip with | DataTipText([single]) -> buildFormatElement true single sb commentRetriever | DataTipText(its) -> for item in its do buildFormatElement false item sb commentRetriever sb.ToString().Trim('\n', '\r') /// Represents a declaration returned by GetDeclarations type Declaration internal (name: string, description: unit -> string) = /// Get the name of a declaration member x.Name = name /// Compute the description for a declaration member x.GetDescription() = description() /// Represents the results of type checking type TypeCheckResults internal (info: Microsoft.FSharp.Compiler.SourceCodeServices.UntypedParseInfo, results:Microsoft.FSharp.Compiler.SourceCodeServices.TypeCheckResults, source: string[]) = let identToken = Microsoft.FSharp.Compiler.Parser.tagOfToken (Microsoft.FSharp.Compiler.Parser.IDENT "") let hasChangedSinceLastTypeCheck _ = false /// Return the errors resulting from the type-checking member x.Errors = results.Errors /// Get the declarations at the given code location. member x.GetDeclarations(line, col, names, residue, ?xmlCommentRetriever) = async { let! items = results.GetDeclarations(Some info, (line, col), source.[line], (names, residue), hasChangedSinceLastTypeCheck) return [| for i in items.Items -> Declaration(i.Name, (fun () -> formatTip i.DescriptionText xmlCommentRetriever)) |] } /// Get the Visual Studio F1-help keyword for the item at the given position member x.GetF1Keyword(line, col, names) = results.GetF1Keyword((line, col), source.[line], names) /// Get the data tip text at the given position member x.GetDataTipText(line, col, names, ?xmlCommentRetriever) = let tip = results.GetDataTipText((line, col), source.[line], names, identToken) formatTip tip xmlCommentRetriever /// Get the location of the declaration at the given position member x.GetDeclarationLocation(line: int, col: int, names, isDecl) = results.GetDeclarationLocation((line, col), source.[line], names, identToken, isDecl) /// Get the full type checking results member x.FullResults = results /// Provides simple services for checking and compiling F# scripts type public SimpleSourceCodeServices() = let checker = InteractiveChecker.Create(NotifyFileTypeCheckStateIsDirty(fun _ -> ())) let fileversion = 0 let loadTime = DateTime.Now /// Tokenize a single line, returning token information and a tokenization state represented by an integer member x.TokenizeLine (line: string, state: int64) : TokenInformation[] * int64 = let tokenizer = SourceTokenizer([], "example.fsx") let lineTokenizer = tokenizer.CreateLineTokenizer line let state = ref (None, state) let tokens = [| while (state := lineTokenizer.ScanToken (snd !state); (fst !state).IsSome) do yield (fst !state).Value |] tokens, snd !state /// Tokenize an entire file, line by line member x.TokenizeFile (source: string) : TokenInformation[][] = let lines = source.Split('\n') let tokens = [| let state = ref 0L for line in lines do let tokens, n = x.TokenizeLine(line, !state) state := n; yield tokens |] tokens /// Return information about matching braces in a single file. member x.MatchBraces (filename, source: string) : (Range * Range) [] = let options = checker.GetCheckOptionsFromScriptRoot(filename, source, loadTime) checker.MatchBraces(filename, source, options) /// For errors, quick info, goto-definition, declaration list intellisense, method overload intellisense member x.TypeCheckScript (filename:string,source:string,otherFlags:string[]) = let options = checker.GetCheckOptionsFromScriptRoot(filename, source, loadTime, otherFlags) checker.StartBackgroundCompile options // wait for the antecedent to appear checker.WaitForBackgroundCompile() // do an untyped parse let info = checker.UntypedParse(filename, source, options) // do an typecheck let textSnapshotInfo = "" // TODO let typedInfo = checker.TypeCheckSource(info, filename, fileversion, source, options, IsResultObsolete (fun _ -> false), textSnapshotInfo) // return the info match typedInfo with | NoAntecedant -> invalidOp "no antecedant" | Aborted -> invalidOp "aborted" | TypeCheckSucceeded res -> TypeCheckResults(info, res, source.Split('\n')) /// Compile using the given flags. Source files names are resolved via the FileSystem API. The output file must be given by a -o flag. member x.Compile (argv: string[]) = let errors = ResizeArray<_>() let errorSink warn exn = let mainError,relatedErrors = Build.SplitRelatedErrors exn let oneError trim e = errors.Add(ErrorInfo.CreateFromException (e, warn, trim, Range.range0)) oneError false mainError List.iter (oneError true) relatedErrors let errorLogger = { new ErrorLogger("CompileAPI") with member x.WarnSinkImpl(exn) = errorSink true exn member x.ErrorSinkImpl(exn) = errorSink false exn member x.ErrorCount = errors |> Seq.filter (fun e -> e.Severity = Severity.Error) |> Seq.length } let createErrorLogger _ = errorLogger let result = use unwindParsePhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) use unwindEL_2 = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) let exiter = { new Exiter with member x.Exit n = raise StopProcessing } try mainCompile (argv, true, exiter, createErrorLogger); 0 with e -> stopProcessingRecovery e Range.range0 1 errors.ToArray(), result /// Compiles to a dynamic assembly usinng the given flags. Any source files names /// are resolved via the FileSystem API. An output file name must be given by a -o flag, but this will not /// be written - instead a dynamic assembly will be created and loaded. /// /// If the 'execute' parameter is given the entry points for the code are executed and /// the given TextWriters are used for the stdout and stderr streams respectively. In this /// case, a global setting is modified during the execution. member x.CompileToDynamicAssembly (otherFlags: string[], execute: (TextWriter * TextWriter) option) = match execute with | Some (writer,error) -> #if SILVERLIGHT Microsoft.FSharp.Core.Printf.setWriter writer Microsoft.FSharp.Core.Printf.setError error #else System.Console.SetOut writer System.Console.SetError error #endif | None -> () let tcImportsRef = ref None let res = ref None tcImportsCapture <- Some (fun tcImports -> tcImportsRef := Some tcImports) dynamicAssemblyCreator <- Some (fun (_tcConfig,ilGlobals,_errorLogger,outfile,_pdbfile,ilxMainModule,_signingInfo) -> let assemblyBuilder = System.AppDomain.CurrentDomain.DefineDynamicAssembly(System.Reflection.AssemblyName(System.IO.Path.GetFileNameWithoutExtension outfile),System.Reflection.Emit.AssemblyBuilderAccess.Run) let debugInfo = false let moduleBuilder = assemblyBuilder.DefineDynamicModule("IncrementalModule",debugInfo) let _emEnv,execs = Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emitModuleFragment (ilGlobals , Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv0, assemblyBuilder,moduleBuilder, // Omit resources in dynamic assemblies, because the module builder is constructed without a filename the module // is tagged as transient and as such DefineManifestResource will throw an invalid operation if resources are present { ilxMainModule with Resources=Microsoft.FSharp.Compiler.AbstractIL.IL.mkILResources [] }, debugInfo, (fun s -> match tcImportsRef.Value.Value.TryFindExistingFullyQualifiedPathFromAssemblyRef s with | Some res -> Some (Choice1Of2 res) | None -> None)) if execute.IsSome then for exec in execs do match exec() with | None -> () | Some exn -> raise exn for resource in ilxMainModule.Resources.AsList do if Build.IsReflectedDefinitionsResource resource then Quotations.Expr.RegisterReflectedDefinitions(assemblyBuilder, moduleBuilder.Name, resource.Bytes); res := Some assemblyBuilder) try let errorsAndWarnings, result = x.Compile otherFlags let assemblyOpt = match res.Value with | None -> None | Some a -> Some (a :> System.Reflection.Assembly) errorsAndWarnings, result, assemblyOpt finally tcImportsCapture <- None dynamicAssemblyCreator <- None fsharp-3.0.34/src/fsharp/vs/ServiceDeclarations.fsi0000775000175000017500000000762512260314606021243 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open System.Collections.Generic open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Nameres open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops /// Describe a comment as either a block of text or a file+signature reference into an intellidoc file. // // Note: instances of this type do not hold any references to any compiler resources. type (* internal *) XmlComment = | XmlCommentNone | XmlCommentText of string | XmlCommentSignature of (*File:*) string * (*Signature:*)string /// A single data tip display element // // Note: instances of this type do not hold any references to any compiler resources. type (* internal *) DataTipElement = | DataTipElementNone /// A single type, method, etc with comment. | DataTipElement of (* text *) string * XmlComment /// For example, a method overload group. | DataTipElementGroup of ((* text *) string * XmlComment) list /// An error occurred formatting this element | DataTipElementCompositionError of string /// Information for building a data tip box. // // Note: instances of this type do not hold any references to any compiler resources. type (* internal *) DataTipText = /// A list of data tip elements to display. | DataTipText of DataTipElement list [] // Note: this type holds a weak reference to compiler resources. type (* internal *) Declaration = member Name : string member DescriptionText : DataTipText member Glyph : int [] // Note: this type holds a weak reference to compiler resources. type (* internal *) DeclarationSet = member Items : Declaration[] // Implementation details used by other code in the compiler static member internal Create : infoReader:InfoReader * m:range * denv:DisplayEnv * items:Item list * syncop:((unit->unit)->unit) * checkAlive:(unit -> bool) -> DeclarationSet static member internal Error : message:string -> DeclarationSet static member internal Empty : DeclarationSet module internal TestHooks = val FormatOverloadsToListScope : (DataTipElement->DataTipElement) -> System.IDisposable // implementation details used by other code in the compiler module internal ItemDescriptionsImpl = val isFunction : TcGlobals -> TType -> bool val ParamNameAndTypesOfUnaryCustomOperation : TcGlobals -> MethInfo -> ParamNameAndType list val FormatDescriptionOfItem : bool -> InfoReader -> range -> DisplayEnv -> Item -> DataTipElement val FormatReturnTypeOfItem : InfoReader -> range -> DisplayEnv -> Item -> string val RemoveDuplicateItems : TcGlobals -> Item list -> Item list val RemoveExplicitlySuppressed : TcGlobals -> Item list -> Item list val GetF1Keyword : Item -> string option val rangeOfItem : TcGlobals -> bool -> Item -> range option val fileNameOfItem : TcGlobals -> string option -> range -> Item -> string fsharp-3.0.34/src/fsharp/vs/IncrementalBuild.fs0000775000175000017500000027352712260314606020370 0ustar chrischris namespace Microsoft.FSharp.Compiler #nowarn "57" open Internal.Utilities.Debug open Internal.Utilities.FileSystem open System open System.IO open System.Reflection open System.Diagnostics open System.Collections.Generic open System open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library module internal IncrementalBuild = /// A particular node in the Expr language. Use an int for keys instead of the entire Expr to avoid extra hashing. type Id = | Id of int static member toInt (Id id) = id override id.ToString() = match id with Id(n) ->sprintf "Id(%d)" n [] /// A build rule representing a single output type ScalarBuildRule = /// ScalarInput (uniqueRuleId, outputName) /// /// A build rule representing a single input, producing the input as its single scalar result | ScalarInput of Id * string /// ScalarDemultiplex (uniqueRuleId, outputName, input, taskFunction) /// /// A build rule representing the merge of a set of inputs to a single output | ScalarDemultiplex of Id * string * VectorBuildRule * (obj[] -> obj) /// ScalarMap (uniqueRuleId, outputName, input, taskFunction) /// /// A build rule representing the transformation of a single input to a single output | ScalarMap of Id * string * ScalarBuildRule * (obj->obj) /// Get the Id for the given ScalarBuildRule. static member GetId = function | ScalarInput(id,_) ->id | ScalarDemultiplex(id,_,_,_) ->id | ScalarMap(id,_,_,_) ->id /// Get the Name for the givenScalarExpr. static member GetName = function | ScalarInput(_,n) ->n | ScalarDemultiplex(_,n,_,_) ->n | ScalarMap(_,n,_,_) ->n override ve.ToString() = match ve with | ScalarInput(Id id,name) ->sprintf "InputScalar(%d,%s)" id name | ScalarDemultiplex(Id id,name,_,_) ->sprintf "ScalarDemultiplex(%d,%s)" id name | ScalarMap(Id id,name,_,_) ->sprintf "ScalarMap(%d,%s)" id name /// A build rule with a vector of outputs and VectorBuildRule = /// VectorInput (uniqueRuleId, outputName) /// /// A build rule representing the transformation of a single input to a single output | VectorInput of Id * string /// VectorInput (uniqueRuleId, outputName, initialAccumulator, inputs, taskFunction) /// /// A build rule representing the scan-left combinining a single scalar accumulator input with a vector of inputs | VectorScanLeft of Id * string * ScalarBuildRule * VectorBuildRule * (obj->obj->Eventually) /// VectorMap (uniqueRuleId, outputName, inputs, taskFunction) /// /// A build rule representing the parallel map of the inputs to outputs | VectorMap of Id * string * VectorBuildRule * (obj->obj) /// VectorStamp (uniqueRuleId, outputName, inputs, stampFunction) /// /// A build rule representing pairing the inputs with a timestamp specified by the given function. | VectorStamp of Id * string * VectorBuildRule * (obj->DateTime) /// VectorMultiplex (uniqueRuleId, outputName, input, taskFunction) /// /// A build rule representing taking a single input and transforming it to a vector of outputs | VectorMultiplex of Id * string * ScalarBuildRule * (obj->obj[]) /// Get the Id for the given VectorBuildRule. static member GetId = function | VectorInput(id,_) ->id | VectorScanLeft(id,_,_,_,_) ->id | VectorMap(id,_,_,_) ->id | VectorStamp(id,_,_,_) ->id | VectorMultiplex(id,_,_,_) ->id /// Get the Name for the given VectorBuildRule. static member GetName = function | VectorInput(_,n) ->n | VectorScanLeft(_,n,_,_,_) ->n | VectorMap(_,n,_,_) ->n | VectorStamp(_,n,_,_) ->n | VectorMultiplex(_,n,_,_) ->n override ve.ToString() = match ve with | VectorInput(Id id,name) ->sprintf "VectorInput(%d,%s)" id name | VectorScanLeft(Id id,name,_,_,_) ->sprintf "VectorScanLeft(%d,%s)" id name | VectorMap(Id id,name,_,_) ->sprintf "VectorMap(%d,%s)" id name | VectorStamp(Id id,name,_,_) ->sprintf "VectorStamp(%d,%s)" id name | VectorMultiplex(Id id,name,_,_) ->sprintf "VectorMultiplex(%d,%s)" id name [] type BuildRuleExpr = | ScalarBuildRule of ScalarBuildRule | VectorBuildRule of VectorBuildRule /// Get the Id for the given Expr. static member GetId = function | ScalarBuildRule se ->ScalarBuildRule.GetId se | VectorBuildRule ve ->VectorBuildRule.GetId ve /// Get the Name for the given Expr. static member GetName= function | ScalarBuildRule se ->ScalarBuildRule.GetName se | VectorBuildRule ve ->VectorBuildRule.GetName ve override e.ToString() = match e with | ScalarBuildRule _ -> sprintf "ScalarBuildRule se" | VectorBuildRule _ -> sprintf "VectorBuildRule ve" // Ids of exprs let nextid = ref 999 // Number ids starting with 1000 to discern them let NextId() = nextid:=!nextid+1 Id(!nextid) type IScalar = abstract GetScalarExpr : unit -> ScalarBuildRule type IVector = abstract GetVectorExpr : unit-> VectorBuildRule type Scalar<'T> = interface end type Vector<'T> = interface end /// The outputs of a build [] type NamedOutput = | NamedVectorOutput of string * IVector | NamedScalarOutput of string * IScalar type BuildRules = { RuleList : (string * BuildRuleExpr) list } /// Visit each task and call op with the given accumulator. let FoldOverBuildRules(rules:BuildRules, op, acc)= let rec VisitVector (ve:VectorBuildRule) acc = match ve with | VectorInput _ ->op (VectorBuildRule ve) acc | VectorScanLeft(_,_,a,i,_) ->op (VectorBuildRule ve) (VisitVector i (VisitScalar a acc)) | VectorMap(_,_,i,_) | VectorStamp(_,_,i,_) ->op (VectorBuildRule ve) (VisitVector i acc) | VectorMultiplex(_,_,i,_) ->op (VectorBuildRule ve) (VisitScalar i acc) and VisitScalar (se:ScalarBuildRule) acc = match se with | ScalarInput _ ->op (ScalarBuildRule se) acc | ScalarDemultiplex(_,_,i,_) ->op (ScalarBuildRule se) (VisitVector i acc) | ScalarMap(_,_,i,_) ->op (ScalarBuildRule se) (VisitScalar i acc) let rec VisitRule (expr:BuildRuleExpr) acc = match expr with | ScalarBuildRule se ->VisitScalar se acc | VectorBuildRule ve ->VisitVector ve acc List.foldBack VisitRule (rules.RuleList |> List.map snd) acc /// Convert from interfaces into discriminated union. let ToBuild (names:NamedOutput list) : BuildRules = // Create the rules. let CreateRules() = { RuleList = names |> List.map(function NamedVectorOutput(n,v) -> n,VectorBuildRule(v.GetVectorExpr()) | NamedScalarOutput(n,s) -> n,ScalarBuildRule(s.GetScalarExpr())) } // Ensure that all names are unique. let EnsureUniqueNames (expr:BuildRuleExpr) (acc:Map) = let AddUniqueIdToNameMapping(id,name)= match acc.TryFind name with | Some(priorId) -> if id<>priorId then failwith (sprintf "Two build expressions had the same name: %s" name) else acc | None-> Map.add name id acc let id = BuildRuleExpr.GetId(expr) let name = BuildRuleExpr.GetName(expr) AddUniqueIdToNameMapping(id,name) // Validate the rule tree let ValidateRules (rules:BuildRules) = FoldOverBuildRules(rules,EnsureUniqueNames,Map.empty) |> ignore // Convert and validate let rules = CreateRules() ValidateRules rules rules /// These describe the input conditions for a result. If conditions change then the result is invalid. type InputSignature = | SingleMappedVectorInput of InputSignature[] | EmptyTimeStampedInput of DateTime | BoundInputScalar // An external input into the build | BoundInputVector // An external input into the build | IndexedValueElement of DateTime | UnevaluatedInput /// Return true if the result is fully evaluated member is.IsEvaluated() = let rec IsEvaluated(is) = match is with | UnevaluatedInput -> false | SingleMappedVectorInput iss -> iss |> Array.forall IsEvaluated | _ -> true IsEvaluated(is) override is.ToString() = sprintf "%A" is /// A slot for holding a single result. type Result = | NotAvailable | InProgress of (unit -> Eventually) * DateTime | Available of obj * DateTime * InputSignature /// Get the available result. Throw an exception if not available. static member GetAvailable = function Available(o,_,_) ->o | _->failwith "No available result" /// Get the time stamp if available. Otheriwse MaxValue. static member Timestamp = function Available(_,ts,_) ->ts | InProgress(_,ts) -> ts | _-> DateTime.MaxValue /// Get the time stamp if available. Otheriwse MaxValue. static member InputSignature = function Available(_,_,signature) ->signature | _-> UnevaluatedInput member x.ResultIsInProgress = match x with | InProgress _ -> true | _ -> false member x.GetInProgressContinuation() = match x with | InProgress (f,_) -> f() | _ -> failwith "not in progress" member x.TryGetAvailable() = match x with | InProgress _ | NotAvailable -> None | Available(obj,dt,i) -> Some(obj,dt,i) override r.ToString() = match r with | NotAvailable -> "NotAvailable" | InProgress _ -> "InProgress" | Available(o, ts, _) -> sprintf "Available('%s' as of %A)" (o.ToString()) ts /// An immutable sparse vector of results. type ResultVector(size,zeroElementTimestamp,map) = let get slot = match Map.tryFind slot map with | Some(result) ->result | None->NotAvailable let asList = lazy List.map (fun i->i,get i) [0..size-1] static member OfSize(size) = ResultVector(size,DateTime.MinValue,Map.empty) member rv.Size = size member rv.Get slot = get slot member rv.Resize(newsize) = if size<>newsize then ResultVector(newsize, zeroElementTimestamp, map |> Map.filter(fun s _ -> s < newsize)) else rv member rv.Set(slot,value) = #if DEBUG if slot<0 then failwith "ResultVector slot less than zero" if slot>=size then failwith "ResultVector slot too big" #endif ResultVector(size, zeroElementTimestamp, Map.add slot value map) member rv.MaxTimestamp() = // use t = Trace.Call("IncrementalBuildVerbose", "MaxTimestamp", fun _->sprintf "vector of size=%d" size) let Maximize (lasttimestamp:DateTime) (_,result) = let thistimestamp = Result.Timestamp result let m = max lasttimestamp thistimestamp // use t = Trace.Call("IncrementalBuildVerbose", "Maximize", fun _->sprintf "last=%s this=%s max=%s" (lasttimestamp.ToString()) (thistimestamp.ToString()) (m.ToString())) m List.fold Maximize zeroElementTimestamp (asList.Force()) member rv.Signature() = let l = asList.Force() let l = l |> List.map(fun (_,result) ->Result.InputSignature result) SingleMappedVectorInput (l|>List.toArray) member rv.FoldLeft f s : 'a = List.fold f s (asList.Force()) override rv.ToString() = asList.ToString() // NOTE: Force()ing this inside ToString() leads to StackOverflowException and very undesirable debugging behavior for all of F# /// A result of performing build actions [] type ResultSet = | ScalarResult of Result | VectorResult of ResultVector override rs.ToString() = match rs with | ScalarResult(sr) ->sprintf "ScalarResult(%s)" (sr.ToString()) | VectorResult(rs) ->sprintf "VectorResult(%s)" (rs.ToString()) /// Action timing module Time = #if SILVERLIGHT let Action<'T> taskname slot func : 'T = func() #else let sw = new Stopwatch() let Action<'T> taskname slot func : 'T= if Trace.ShouldLog("IncrementalBuildWorkUnits") then let slotMessage = if slot= -1 then sprintf "%s" taskname else sprintf "%s over slot %d" taskname slot // Timings and memory let maxGen = System.GC.MaxGeneration let ptime = System.Diagnostics.Process.GetCurrentProcess() let timePrev = ptime.UserProcessorTime.TotalSeconds let gcPrev = [| for i in 0 .. maxGen -> System.GC.CollectionCount i |] let pbPrev = ptime.PrivateMemorySize64 in // Call the function let result = func() // Report. let timeNow = ptime.UserProcessorTime.TotalSeconds let pbNow = ptime.PrivateMemorySize64 let spanGC = [| for i in 0 .. maxGen -> System.GC.CollectionCount i - gcPrev.[i] |] Trace.PrintLine("IncrementalBuildWorkUnits", fun _ -> sprintf "%s TIME: %4.3f MEM: %3d (delta) G0: %3d G1: %2d G2: %2d" slotMessage (timeNow - timePrev) (pbNow - pbPrev) spanGC.[min 0 maxGen] spanGC.[min 1 maxGen] spanGC.[min 2 maxGen]) result else func() #endif /// Result of a particular action over the bound build tree [] type ActionResult = | IndexedResult of Id * int * (*slotcount*) int * Eventually * DateTime | ScalarValuedResult of Id * obj * DateTime * InputSignature | VectorValuedResult of Id * obj[] * DateTime * InputSignature | ResizeResult of Id * (*slotcount*) int override ar.ToString() = match ar with | IndexedResult(id,slot,slotcount,_,dt) ->sprintf "IndexedResult(%d,%d,%d,obj,%A)" (Id.toInt id) slot slotcount dt | ScalarValuedResult(id,_,dt,inputsig) ->sprintf "ScalarValuedResult(%d,obj,%A,%A)" (Id.toInt id) dt inputsig | VectorValuedResult(id,_,dt,inputsig) ->sprintf "VectorValuedResult(%d,obj[],%A,%A)" (Id.toInt id) dt inputsig | ResizeResult(id,slotcount) ->sprintf "ResizeResult(%d,%d)" (Id.toInt id) slotcount /// A pending action over the bound build tree [] type Action = | IndexedAction of Id * (*taskname*)string * int * (*slotcount*) int * DateTime * (unit->Eventually) | ScalarAction of Id * (*taskname*)string * DateTime * InputSignature * (unit->obj) | VectorAction of Id * (*taskname*)string * DateTime * InputSignature * (unit->obj[]) | ResizeResultAction of Id * (*slotcount*) int /// Execute one action and return a corresponding result. static member Execute action = match action with | IndexedAction(id,taskname,slot,slotcount,timestamp,func) -> IndexedResult(id,slot,slotcount,Time.Action taskname slot func,timestamp) | ScalarAction(id,taskname,timestamp,inputsig,func) -> ScalarValuedResult(id,Time.Action taskname (-1) func,timestamp,inputsig) | VectorAction(id,taskname,timestamp,inputsig,func) -> VectorValuedResult(id,Time.Action taskname (-1) func,timestamp,inputsig) | ResizeResultAction(id,slotcount) -> ResizeResult(id,slotcount) /// String helper functions for when there's no %A type String = static member OfList2 l = " ["^String.Join(",\n ", List.toArray (l|>List.map (fun (v1,v2) ->((box v1).ToString()) + ";" + ((box v2).ToString())))) + " ]" /// A set of build rules and the corresponding, possibly partial, results from building. [] type PartialBuild(rules:BuildRules, results:Map) = member bt.Rules = rules member bt.Results = results override bt.ToString() = let sb = new System.Text.StringBuilder() results |> Map.iter(fun id result-> let id = Id.toInt id let s = sprintf "\n {Id=%d,ResultSet=%s}" id (result.ToString()) let _ = sb.Append(s) ()) sprintf "{Rules={%s}\n Results={%s}}" (String.OfList2 rules.RuleList) (sb.ToString()) /// Given an expression, find the expected width. let rec GetVectorWidthByExpr(bt:PartialBuild,ve:VectorBuildRule) = let KnownValue ve = match bt.Results.TryFind(VectorBuildRule.GetId ve) with | Some(resultSet) -> match resultSet with | VectorResult rv ->Some(rv.Size) | _ -> failwith "Expected vector to have vector result." | None-> None match ve with | VectorScanLeft(_,_,_,i,_) | VectorMap(_,_,i,_) | VectorStamp(_,_,i,_) -> match GetVectorWidthByExpr(bt,i) with | Some _ as r -> r | None->KnownValue ve | VectorInput _ | VectorMultiplex _ -> KnownValue ve /// Given an expression name, get the corresponding expression. let GetTopLevelExprByName(bt:PartialBuild, seek:string) = bt.Rules.RuleList |> List.filter(fun(name,_) ->name=seek) |> List.map(fun(_,root) ->root) |> List.head /// Get an expression matching the given name. let GetExprByName(bt:PartialBuild, seek:string) : BuildRuleExpr = let MatchName (expr:BuildRuleExpr) (acc:BuildRuleExpr option) : BuildRuleExpr option = let name = BuildRuleExpr.GetName(expr) if name = seek then Some(expr) else acc let matchOption = FoldOverBuildRules(bt.Rules,MatchName,None) Option.get matchOption // Given an Id, find the corresponding expression. let GetExprById(bt:PartialBuild, seek:Id) : BuildRuleExpr= let rec VectorExprOfId ve = match ve with | VectorInput(id,_) ->if seek=id then Some(VectorBuildRule ve) else None | VectorScanLeft(id,_,a,i,_) -> if seek=id then Some(VectorBuildRule ve) else let result = ScalarExprOfId(a) match result with Some _ -> result | None->VectorExprOfId i | VectorMap(id,_,i,_) ->if seek=id then Some(VectorBuildRule ve) else VectorExprOfId i | VectorStamp(id,_,i,_) ->if seek=id then Some(VectorBuildRule ve) else VectorExprOfId i | VectorMultiplex(id,_,i,_) ->if seek=id then Some(VectorBuildRule ve) else ScalarExprOfId i and ScalarExprOfId se = match se with | ScalarInput(id,_) ->if seek=id then Some(ScalarBuildRule se) else None | ScalarDemultiplex(id,_,i,_) ->if seek=id then Some(ScalarBuildRule se) else VectorExprOfId i | ScalarMap(id,_,i,_) ->if seek=id then Some(ScalarBuildRule se) else ScalarExprOfId i let ExprOfId(expr:BuildRuleExpr) = match expr with | ScalarBuildRule se ->ScalarExprOfId se | VectorBuildRule ve ->VectorExprOfId ve let exprs = bt.Rules.RuleList |> List.map(fun(_,root) ->ExprOfId(root)) |> List.filter Option.isSome match exprs with | Some(expr)::_ -> expr | _ -> failwith (sprintf "GetExprById did not find an expression for Id %d" (Id.toInt seek)) let GetVectorWidthById (bt:PartialBuild) seek = match GetExprById(bt,seek) with | ScalarBuildRule _ ->failwith "Attempt to get width of scalar." | VectorBuildRule ve ->Option.get (GetVectorWidthByExpr(bt,ve)) let GetScalarExprResult(bt:PartialBuild, se:ScalarBuildRule) = match bt.Results.TryFind(ScalarBuildRule.GetId se) with | Some(resultSet) -> match se,resultSet with | ScalarInput _,ScalarResult(r) | ScalarMap _,ScalarResult(r) | ScalarDemultiplex _,ScalarResult(r) ->r | se,result->failwith (sprintf "GetScalarExprResult had no match for %A,%A" se result) | None->NotAvailable let GetVectorExprResultVector(bt:PartialBuild, ve:VectorBuildRule) = match bt.Results.TryFind(VectorBuildRule.GetId ve) with | Some(resultSet) -> match ve,resultSet with | VectorScanLeft _,VectorResult rv | VectorMap _,VectorResult rv | VectorInput _,VectorResult rv | VectorStamp _,VectorResult rv | VectorMultiplex _,VectorResult rv -> Some rv | ve,result->failwith (sprintf "GetVectorExprResultVector had no match for %A,%A" ve result) | None->None let GetVectorExprResult(bt:PartialBuild, ve:VectorBuildRule, slot) = match bt.Results.TryFind(VectorBuildRule.GetId ve) with | Some(resultSet) -> match ve,resultSet with | VectorScanLeft _,VectorResult rv | VectorMap _,VectorResult rv | VectorInput _,VectorResult rv | VectorStamp _,VectorResult rv -> rv.Get slot | VectorMultiplex _,VectorResult rv -> rv.Get slot | ve,result->failwith (sprintf "GetVectorExprResult had no match for %A,%A" ve result) | None->NotAvailable /// Get the maximum build stamp for an output. let MaxTimestamp(bt:PartialBuild,id,_inputstamp) = match bt.Results.TryFind(id) with | Some(resultset) -> match resultset with | ScalarResult(rs) -> Result.Timestamp rs | VectorResult rv -> rv.MaxTimestamp() | None -> DateTime.MaxValue let Signature(bt:PartialBuild,id) = match bt.Results.TryFind(id) with | Some(resultset) -> match resultset with | ScalarResult(rs) -> Result.InputSignature rs | VectorResult rv -> rv.Signature() | None -> UnevaluatedInput /// Get all the results for the given expr. let AllResultsOfExpr extractor (bt:PartialBuild) expr = let GetAvailable (rv:ResultVector) = let Extract acc (_, result) = (extractor result)::acc List.rev (rv.FoldLeft Extract []) let GetVectorResultById id = match bt.Results.TryFind(id) with | Some(found) -> match found with | VectorResult rv ->GetAvailable rv | _ -> failwith "wrong result type" | None -> [] GetVectorResultById(VectorBuildRule.GetId(expr)) let AvailableAllResultsOfExpr bt expr = let msg = "Expected all results to be available" AllResultsOfExpr (function Available(o,_,_) -> o | _ -> failwith msg) bt expr /// Bind a set of build rules to a set of input values. let ToBound(buildRules:BuildRules, vectorinputs, scalarinputs) = let now = DateTime.Now let rec ApplyScalarExpr(se,results) = match se with | ScalarInput(id,n) -> let matches = scalarinputs |> List.filter (fun (inputname,_) ->inputname=n) |> List.map (fun (_,inputvalue:obj) -> ScalarResult(Available(inputvalue,now,BoundInputScalar))) List.foldBack (Map.add id) matches results | ScalarMap(_,_,se,_) ->ApplyScalarExpr(se,results) | ScalarDemultiplex(_,_,ve,_) ->ApplyVectorExpr(ve,results) and ApplyVectorExpr(ve,results) = match ve with | VectorInput(id,n) -> let matches = vectorinputs |> List.filter (fun (inputname,_,_) ->inputname=n) |> List.map (fun (_,size,inputvalues:obj list) -> let results = inputvalues|>List.mapi(fun i value->i,Available(value,now,BoundInputVector)) VectorResult(ResultVector(size,DateTime.MinValue,results|>Map.ofList)) ) List.foldBack (Map.add id) matches results | VectorScanLeft(_,_,a,i,_) ->ApplyVectorExpr(i,ApplyScalarExpr(a,results)) | VectorMap(_,_,i,_) | VectorStamp(_,_,i,_) ->ApplyVectorExpr(i,results) | VectorMultiplex(_,_,i,_) ->ApplyScalarExpr(i,results) let ApplyExpr expr results = match expr with | ScalarBuildRule se ->ApplyScalarExpr(se,results) | VectorBuildRule ve ->ApplyVectorExpr(ve,results) // Place vector inputs into results map. let results = List.foldBack ApplyExpr (buildRules.RuleList |> List.map snd) Map.empty PartialBuild(buildRules,results) /// Visit each executable action and call actionFunc with the given accumulator. let ForeachAction output bt (actionFunc:Action->'acc->'acc) (acc:'acc) = use t = Trace.Call("IncrementalBuildVerbose", "ForeachAction", fun _->sprintf "name=%s" output) let seen = Dictionary<_,_>() let Seen(id) = if seen.ContainsKey(id) then true else seen.[id]<-true false let HasChanged(inputtimestamp,outputtimestamp) = if inputtimestamp<>outputtimestamp then Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "Input timestamp is %A. Output timestamp is %A." inputtimestamp outputtimestamp) true else false let ShouldEvaluate(bt,currentsig:InputSignature,id) = let isAvailable = currentsig.IsEvaluated() if isAvailable then let priorsig = Signature(bt,id) currentsig<>priorsig else false /// Make sure the result vector saved matches the size of expr let ResizeVectorExpr(ve:VectorBuildRule,acc) = let id = VectorBuildRule.GetId ve match GetVectorWidthByExpr(bt,ve) with | Some(expectedWidth) -> match bt.Results.TryFind(id) with | Some(found) -> match found with | VectorResult rv -> if rv.Size<> expectedWidth then actionFunc (ResizeResultAction(id,expectedWidth)) acc else acc | _ -> acc | None -> acc | None -> acc let rec VisitVector ve acc = if Seen(VectorBuildRule.GetId ve) then acc else Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "In ForeachAction at vector expression %s" (ve.ToString())) let acc = ResizeVectorExpr(ve,acc) match ve with | VectorInput _ ->acc | VectorScanLeft(id,taskname,accumulatorExpr,inputExpr,func) -> let acc = match GetVectorWidthByExpr(bt,ve) with | Some(cardinality) -> let GetInputAccumulator slot = if slot=0 then GetScalarExprResult(bt,accumulatorExpr) else GetVectorExprResult(bt,ve,slot-1) let Scan slot = let accumulatorResult = GetInputAccumulator slot let inputResult = GetVectorExprResult(bt,inputExpr,slot) match accumulatorResult,inputResult with | Available(accumulator,accumulatortimesamp,_accumulatorInputSig),Available(input,inputtimestamp,_inputSig) -> let inputtimestamp = max inputtimestamp accumulatortimesamp let prevoutput = GetVectorExprResult(bt,ve,slot) let outputtimestamp = Result.Timestamp prevoutput let scanOp = if HasChanged(inputtimestamp,outputtimestamp) then Some (fun () -> func accumulator input) elif prevoutput.ResultIsInProgress then Some prevoutput.GetInProgressContinuation else // up-to-date and complete, no work required None match scanOp with | Some scanOp -> Some(actionFunc (IndexedAction(id,taskname,slot,cardinality,inputtimestamp,scanOp)) acc) | None -> None | _ -> None match ([0..cardinality-1]|>List.tryPick Scan) with Some(acc) ->acc | None->acc | None -> acc // Check each slot for an action that may be performed. VisitVector inputExpr (VisitScalar accumulatorExpr acc) | VectorMap(id, taskname, inputExpr, func) -> let acc = match GetVectorWidthByExpr(bt,ve) with | Some(cardinality) -> if cardinality=0 then // For vector length zero, just propagate the prior timestamp. let inputtimestamp = MaxTimestamp(bt,VectorBuildRule.GetId(inputExpr),DateTime.MinValue) let outputtimestamp = MaxTimestamp(bt,id,DateTime.MinValue) if HasChanged(inputtimestamp,outputtimestamp) then Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "Vector Map with cardinality zero setting output timestamp to %A." inputtimestamp) actionFunc (VectorAction(id,taskname,inputtimestamp,EmptyTimeStampedInput inputtimestamp, fun _ ->[||])) acc else acc else let MapResults acc slot = let inputtimestamp = Result.Timestamp (GetVectorExprResult(bt,inputExpr,slot)) let outputtimestamp = Result.Timestamp (GetVectorExprResult(bt,ve,slot)) if HasChanged(inputtimestamp,outputtimestamp) then let OneToOneOp() = Eventually.Done (func (Result.GetAvailable (GetVectorExprResult(bt,inputExpr,slot)))) actionFunc (IndexedAction(id,taskname,slot,cardinality,inputtimestamp,OneToOneOp)) acc else acc [0..cardinality-1] |> List.fold MapResults acc | None -> acc VisitVector inputExpr acc | VectorStamp(id, taskname, inputExpr, func) -> // For every result that is available, check time stamps. let acc = match GetVectorWidthByExpr(bt,ve) with | Some(cardinality) -> if cardinality=0 then // For vector length zero, just propagate the prior timestamp. let inputtimestamp = MaxTimestamp(bt,VectorBuildRule.GetId(inputExpr),DateTime.MinValue) let outputtimestamp = MaxTimestamp(bt,id,DateTime.MinValue) if HasChanged(inputtimestamp,outputtimestamp) then Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "Vector Stamp with cardinality zero setting output timestamp to %A." inputtimestamp) actionFunc (VectorAction(id,taskname,inputtimestamp,EmptyTimeStampedInput inputtimestamp,fun _ ->[||])) acc else acc else let CheckStamp acc slot = let inputresult = GetVectorExprResult(bt,inputExpr,slot) match inputresult with | Available(ires,_,_) -> let oldtimestamp = Result.Timestamp (GetVectorExprResult(bt,ve,slot)) let newtimestamp = func ires if newtimestamp<>oldtimestamp then Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "Old timestamp was %A. New timestamp is %A." oldtimestamp newtimestamp) actionFunc (IndexedAction(id,taskname,slot,cardinality,newtimestamp, fun _ -> Eventually.Done ires)) acc else acc | _ -> acc [0..cardinality-1] |> List.fold CheckStamp acc | None -> acc VisitVector inputExpr acc | VectorMultiplex(id, taskname, inputExpr, func) -> VisitScalar inputExpr (match GetScalarExprResult(bt,inputExpr) with | Available(inp,inputtimestamp,inputsig) -> let outputtimestamp = MaxTimestamp(bt,id,inputtimestamp) if HasChanged(inputtimestamp,outputtimestamp) then let MultiplexOp() = func inp actionFunc (VectorAction(id,taskname,inputtimestamp,inputsig,MultiplexOp)) acc else acc | _->acc) and VisitScalar se acc = if Seen(ScalarBuildRule.GetId se) then acc else Trace.PrintLine("IncrementalBuildVerbose", fun _ -> sprintf "In ForeachAction at scalar expression %s" (se.ToString())) match se with | ScalarInput _ ->acc | ScalarDemultiplex(id,taskname,inputExpr,func) -> VisitVector inputExpr ( match GetVectorExprResultVector(bt,inputExpr) with | Some(inputresult) -> let currentsig = inputresult.Signature() if ShouldEvaluate(bt,currentsig,id) then let inputtimestamp = MaxTimestamp(bt, VectorBuildRule.GetId(inputExpr), DateTime.MaxValue) let DemultiplexOp() = let input = AvailableAllResultsOfExpr bt inputExpr |> List.toArray func input actionFunc (ScalarAction(id,taskname,inputtimestamp,currentsig,DemultiplexOp)) acc else acc | None -> acc ) | ScalarMap(id,taskname,inputExpr,func) -> VisitScalar inputExpr (match GetScalarExprResult(bt,inputExpr) with | Available(inp,inputtimestamp,inputsig) -> let outputtimestamp = MaxTimestamp(bt, id, inputtimestamp) if HasChanged(inputtimestamp,outputtimestamp) then let MapOp() = func inp actionFunc (ScalarAction(id,taskname,inputtimestamp,inputsig,MapOp)) acc else acc | _->acc) let Visit expr acc = match expr with | ScalarBuildRule se ->VisitScalar se acc | VectorBuildRule ve ->VisitVector ve acc let filtered = bt.Rules.RuleList |> List.filter (fun (s,_) -> s = output) |> List.map snd List.foldBack Visit filtered acc /// Given the result of a single action, apply that action to the Build let ApplyResult(actionResult:ActionResult,bt:PartialBuild) = use t = Trace.Call("IncrementalBuildVerbose", "ApplyResult", fun _ -> "") let result = match actionResult with | ResizeResult(id,slotcount) -> match bt.Results.TryFind(id) with | Some(resultSet) -> match resultSet with | VectorResult rv -> let rv = rv.Resize(slotcount) let results = Map.add id (VectorResult rv) bt.Results PartialBuild(bt.Rules,results) | _ -> failwith "Unexpected" | None -> failwith "Unexpected" | ScalarValuedResult(id,value,timestamp,inputsig) -> PartialBuild(bt.Rules, Map.add id (ScalarResult(Available(value,timestamp,inputsig))) bt.Results) | VectorValuedResult(id,values,timestamp,inputsig) -> let Append acc slot = Map.add slot (Available(values.[slot],timestamp,inputsig)) acc let results = [0..values.Length-1]|>List.fold Append (Map.empty) let results = VectorResult(ResultVector(values.Length,timestamp,results)) let bt = PartialBuild(bt.Rules, Map.add id results bt.Results) bt | IndexedResult(id,index,slotcount,value,timestamp) -> let width = (GetVectorWidthById bt id) let priorResults = bt.Results.TryFind(id) let prior = match priorResults with | Some(prior) ->prior | None->VectorResult(ResultVector.OfSize width) match prior with | VectorResult rv -> let result = match value with | Eventually.Done res -> Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> "Eventually.Done...") Available(res,timestamp, IndexedValueElement timestamp) | Eventually.NotYetDone f -> Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> "Eventually.NotYetDone...") InProgress (f,timestamp) let results = rv.Resize(slotcount).Set(index,result) PartialBuild(bt.Rules, Map.add id (VectorResult(results)) bt.Results) | _->failwith "Unexpected" result /// Evaluate the result of a single output let EvalLeafsFirst output bt = use t = Trace.Call("IncrementalBuildVerbose", "EvalLeafsFirst", fun _->sprintf "name=%s" output) let ExecuteApply action bt = let actionResult = Action.Execute(action) ApplyResult(actionResult,bt) let rec Eval(bt,gen) = Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "---- Build generation %d ----" gen) #if DEBUG // This can happen, for example, if there is a task whose timestamp never stops increasing. // Possibly could detect this case directly. if gen>5000 then failwith "Infinite loop in incremental builder?" #endif let newBt = ForeachAction output bt ExecuteApply bt if newBt=bt then bt else Eval(newBt,gen+1) Eval(bt,0) let Step output (bt:PartialBuild) = use t = Trace.Call("IncrementalBuildVerbose", "Step", fun _->sprintf "name=%s" output) let BuildActionList() = use t = Trace.Call("IncrementalBuildVerbose", "BuildActionList", fun _->sprintf "name=%s" output) let Cons action list = action :: list // Hey look, we're building up the whole list, executing one thing and then throwing // the list away. What about saving the list inside the Build instance? ForeachAction output bt Cons [] let ExecuteOneAction(worklist) = use t = Trace.Call("IncrementalBuildVerbose", "ExecuteOneAction", fun _->sprintf "name=%s" output) match worklist with | action::_ -> let actionResult = Action.Execute(action) Some(ApplyResult(actionResult,bt)) | _->None ExecuteOneAction(BuildActionList()) /// Eval by calling step over and over until done. let rec EvalStepwise output bt = use t = Trace.Call("IncrementalBuildVerbose", "EvalStepwise", fun _->sprintf "name=%s" output) let rec Evaluate(output,bt)= let newBt = Step output bt match newBt with | Some(newBt) -> Evaluate(output,newBt) | None->bt Evaluate(output,bt) /// Evaluate a build. let Eval output bt = EvalLeafsFirst output bt /// Get a scalar vector. Result must be available let GetScalarResult<'T>(name,bt) : ('T*DateTime) option = use t = Trace.Call("IncrementalBuildVerbose", "GetScalarResult", fun _->sprintf "name=%s" name) match GetTopLevelExprByName(bt,name) with | ScalarBuildRule se -> let id = ScalarBuildRule.GetId se match bt.Results.TryFind(id) with | Some(result) -> match result with | ScalarResult(sr) -> match sr.TryGetAvailable() with | Some(r,timestamp,_) -> Some(downcast r, timestamp) | None -> None | _ ->failwith "Expected a scalar result." | None->None | VectorBuildRule _ -> failwith "Expected scalar." /// Get a result vector. All results must be available or thrown an exception. let GetVectorResult<'T>(name,bt) : 'T[] = match GetTopLevelExprByName(bt,name) with | ScalarBuildRule _ -> failwith "Expected vector." | VectorBuildRule ve -> AvailableAllResultsOfExpr bt ve |> List.map(unbox) |> Array.ofList /// Get an element of vector result or None if there were no results. let GetVectorResultBySlot<'T>(name,slot,bt) : ('T*DateTime) option = match GetTopLevelExprByName(bt,name) with | ScalarBuildRule _ -> failwith "Expected vector expression" | VectorBuildRule ve -> match GetVectorExprResult(bt,ve,slot).TryGetAvailable() with | Some(o,timestamp,_) -> Some(downcast o,timestamp) | None->None /// Given an input value, find the corresponding slot. let GetSlotByInput<'T>(name:string,input:'T,build:PartialBuild,equals:'T->'T->bool) : int = let expr = GetExprByName(build,name) let id = BuildRuleExpr.GetId(expr) let resultSet = Option.get ( build.Results.TryFind(id)) match resultSet with | VectorResult rv -> let MatchNames acc (slot,result) = match result with | Available(o,_,_) -> let o = o :?> 'T if equals o input then Some slot else acc | _ -> acc let slotOption = rv.FoldLeft MatchNames None match slotOption with | Some slot -> slot | _ -> failwith (sprintf "Could not find requested input '%A' named '%s' in set %+A" input name rv) | _ -> failwith (sprintf "Could not find requested input: %A" input) // Redeclare functions in the incremental build scope----------------------------------------------------------------------- // Methods for declaring inputs and outputs /// Declares a vector build input. let InputVector<'T> name = let expr = VectorInput(NextId(),name) { new Vector<'T> interface IVector with override pe.GetVectorExpr() = expr } /// Declares a scalar build input. let InputScalar<'T> name = let expr = ScalarInput(NextId(),name) { new Scalar<'T> interface IScalar with override pe.GetScalarExpr() = expr } module Scalar = let Map (taskname:string) (task:'I->'O) (input:Scalar<'I>) : Scalar<'O> = let BoxingMap i = box(task(unbox(i))) let input = (input:?>IScalar).GetScalarExpr() let expr = ScalarMap(NextId(),taskname,input,BoxingMap) { new Scalar<'O> interface IScalar with override pe.GetScalarExpr() = expr} let Multiplex (taskname:string) (task:'I -> 'O array) (input:Scalar<'I>) : Vector<'O> = let BoxingMultiplex i = Array.map box (task(unbox(i))) let input = (input:?>IScalar).GetScalarExpr() let expr = VectorMultiplex(NextId(),taskname,input,BoxingMultiplex) { new Vector<'O> interface IVector with override pe.GetVectorExpr() = expr} module Vector = /// Maps one vector to another using the given function. let Map (taskname:string) (task:'I ->'O) (input:Vector<'I>) : Vector<'O> = let BoxingMapVector i = box(task(unbox i)) let input = (input:?>IVector).GetVectorExpr() let expr = VectorMap(NextId(),taskname,input,BoxingMapVector) { new Vector<'O> interface IVector with override pe.GetVectorExpr() = expr } /// Apply a function to each element of the vector, threading an accumulator argument /// through the computation. Returns intermediate results in a vector. let ScanLeft (taskname:string) (task:'A -> 'I -> Eventually<'A>) (acc:Scalar<'A>) (input:Vector<'I>) : Vector<'A> = let BoxingScanLeft a i = Eventually.box(task (unbox a) (unbox i)) let acc = (acc:?>IScalar).GetScalarExpr() let input = (input:?>IVector).GetVectorExpr() let expr = VectorScanLeft(NextId(),taskname,acc,input,BoxingScanLeft) { new Vector<'A> interface IVector with override pe.GetVectorExpr() = expr } /// Apply a function to a vector to get a scalar value. let Demultiplex (taskname:string) (task:'I[] -> 'O) (input:Vector<'I>) : Scalar<'O> = let BoxingDemultiplex i = box(task (Array.map unbox i) ) let input = (input:?>IVector).GetVectorExpr() let expr = ScalarDemultiplex(NextId(),taskname,input,BoxingDemultiplex) { new Scalar<'O> interface IScalar with override pe.GetScalarExpr() = expr } /// Creates a new vector with the same items but with /// timestamp specified by the passed-in function. let Stamp (taskname:string) (task:'I -> DateTime) (input:Vector<'I>) : Vector<'I> = let BoxingTouch i = task(unbox i) let input = (input:?>IVector).GetVectorExpr() let expr = VectorStamp(NextId(),taskname,input,BoxingTouch) { new Vector<'I> interface IVector with override pe.GetVectorExpr() = expr } let AsScalar (taskname:string) (input:Vector<'I>) : Scalar<'I array> = Demultiplex taskname (fun v->v) input /// Declare build outputs and bind them to real values. type BuildDescriptionScope() = let mutable outputs = [] /// Declare a named scalar output. member b.DeclareScalarOutput(name,output:Scalar<'t>)= let output:IScalar = output:?>IScalar outputs <- NamedScalarOutput(name,output) :: outputs /// Declare a named vector output. member b.DeclareVectorOutput(name,output:Vector<'t>)= let output:IVector = output:?>IVector outputs <- NamedVectorOutput(name,output) :: outputs /// Set the conrete inputs for this build member b.GetInitialPartialBuild(vectorinputs,scalarinputs) = ToBound(ToBuild outputs,vectorinputs,scalarinputs) [] type Severity = | Warning | Error type ErrorInfo = { FileName:string StartLine:int EndLine:int StartColumn:int EndColumn:int Severity:Severity Message:string Subcategory:string } with override e.ToString()= sprintf "%s (%d,%d)-(%d,%d) %s %s %s" e.FileName e.StartLine e.StartColumn e.EndLine e.EndColumn e.Subcategory (if e.Severity=Severity.Warning then "warning" else "error") e.Message /// Decompose a warning or error into parts: position, severity, message static member internal CreateFromExceptionAndAdjustEof(exn,warn,trim:bool,fallbackRange:range, (linesCount:int, lastLength:int)) = let r = ErrorInfo.CreateFromException(exn,warn,trim,fallbackRange) // Adjust to make sure that errors reported at Eof are shown at the linesCount let startline, schange = min (r.StartLine, false) (linesCount, true) let endline, echange = min (r.EndLine, false) (linesCount, true) if not (schange || echange) then r else let r = if schange then { r with StartLine = startline; StartColumn = lastLength } else r if echange then { r with EndLine = endline; EndColumn = 1 + lastLength } else r /// Decompose a warning or error into parts: position, severity, message static member internal CreateFromException(exn,warn,trim:bool,fallbackRange:range) = let m = match RangeOfError exn with Some m -> m | None -> fallbackRange let (s1:int),(s2:int) = Pos.toVS m.Start let (s3:int),(s4:int) = Pos.toVS (if trim then m.Start else m.End) let msg = bufs (fun buf -> OutputPhasedError buf exn false) {FileName=m.FileName; StartLine=s1; StartColumn=s2; EndLine=s3; EndColumn=s4; Severity=(if warn then Severity.Warning else Severity.Error); Subcategory=exn.Subcategory(); Message=msg} /// Use to reset error and warning handlers [] type ErrorScope() = let mutable errors = [] static let mutable mostRecentError = None let unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.TypeCheck) let unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _oldLogger -> { new ErrorLogger("ErrorScope") with member x.WarnSinkImpl(exn) = errors <- ErrorInfo.CreateFromException(exn,true,false,range.Zero):: errors member x.ErrorSinkImpl(exn) = let err = ErrorInfo.CreateFromException(exn,false,false,range.Zero) errors <- err :: errors mostRecentError <- Some(err) member x.ErrorCount = errors.Length }) member x.Errors = errors |> List.filter (fun error -> error.Severity = Severity.Error) member x.Warnings = errors |> List.filter (fun error -> error.Severity = Severity.Warning) member x.ErrorsAndWarnings = errors member x.TryGetFirstErrorText() = match x.Errors with | error :: _ -> Some(error.Message) | [] -> None interface IDisposable with member d.Dispose() = unwindEL.Dispose() (* unwind pushes when ErrorScope disposes *) unwindBP.Dispose() static member MostRecentError = mostRecentError static member Protect<'a> (m:range) (f:unit->'a) (err:string->'a) : 'a = use errorScope = new ErrorScope() let res = try Some(f()) with e -> errorRecovery e m; None match res with | Some(res) ->res | None -> match errorScope.TryGetFirstErrorText() with | Some text -> err text | None -> err "" static member ProtectWithDefault m f dflt = ErrorScope.Protect m f (fun _ -> dflt) static member ProtectAndDiscard m f = ErrorScope.Protect m f (fun _ -> ()) // ------------------------------------------------------------------------------------------ // The incremental build definition for parsing and typechecking F# // ------------------------------------------------------------------------------------------ module internal IncrementalFSharpBuild = open Internal.Utilities open Internal.Utilities.Collections open IncrementalBuild open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Fscopts open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Internal module Tc = Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Internal.Utilities.Debug // This type is designed to be a lightweight way to instrument the most recent filenames that the // IncrementalBuilder did a parse/typecheck of, so we can more easily unittest/debug the // 'incremental' behavior of the product. type internal FixedLengthMRU<'T>() = let MAX = 40 // Length of the MRU. For our current unit tests, 40 is enough. let data : ('T option)[] = Array.create MAX None let mutable curIndex = 0 let mutable numAdds = 0 // called by the product, to note when a parse/typecheck happens for a file member this.Add(filename:'T) = numAdds <- numAdds + 1 data.[curIndex] <- Some filename curIndex <- curIndex + 1 if curIndex = MAX then curIndex <- 0 member this.CurrentEventNum = numAdds // called by unit tests, returns 'n' most recent additions. member this.MostRecentList(n:int) : list<'T> = if n < 0 || n > MAX then raise <| new System.ArgumentOutOfRangeException("n", sprintf "n must be between 0 and %d, inclusive, but got %d" MAX n) let mutable remaining = n let mutable s = [] let mutable i = curIndex - 1 while remaining <> 0 do if i < 0 then i <- MAX - 1 match data.[i] with | None -> () | Some x -> s <- x :: s i <- i - 1 remaining <- remaining - 1 List.rev s type IBEvent = | IBEParsed of string // filename | IBETypechecked of string // filename | IBENuked let IncrementalBuilderEventsMRU = new FixedLengthMRU() let GetMostRecentIncrementalBuildEvents(n) = IncrementalBuilderEventsMRU.MostRecentList(n) let GetCurrentIncrementalBuildEventNum() = IncrementalBuilderEventsMRU.CurrentEventNum type FileDependency = { // Name of the file Filename : string // If true, then deletion or creation of this file should trigger an entirely fresh build ExistenceDependency : bool // If true, then changing this file should trigger and call to incrementally build IncrementalBuildDependency : bool } with override this.ToString() = sprintf "FileDependency(%s,existence=%A,incremental=%A)" this.Filename this.ExistenceDependency this.IncrementalBuildDependency /// Accumulated results of type checking. [] type TypeCheckAccumulator = { tcState: TcState tcImports:TcImports tcGlobals:TcGlobals tcConfig:TcConfig tcEnv: TcEnv topAttribs:TopAttribs option typedImplFiles:TypedImplFile list errors:(PhasedError * bool) list } // errors=true, warnings=false /// Maximum time share for a piece of background work before it should (cooperatively) yield /// to enable other requests to be serviced. Yielding means returning a continuation function /// (via an Eventually<_> value of case NotYetDone) that can be called as the next piece of work. let maxTimeShareMilliseconds = #if SILVERLIGHT 50L #else match System.Environment.GetEnvironmentVariable("mFSharp_MaxTimeShare") with | null | "" -> 50L | s -> int64 s #endif /// Global service state type FrameworkImportsCacheKey = (*resolvedpath*)string list * string * (*ClrRoot*)string list* (*fsharpBinaries*)string let private frameworkTcImportsCache = AgedLookup(8, areSame=(fun (x,y) -> x = y)) /// This function strips the "System" assemblies from the tcConfig and returns a age-cached TcImports for them. let GetFrameworkTcImports(tcConfig:TcConfig) = // Split into installed and not installed. let frameworkDLLs,nonFrameworkResolutions,unresolved = TcAssemblyResolutions.SplitNonFoundationalResolutions(tcConfig) let frameworkDLLsKey = frameworkDLLs |> List.map(fun ar->ar.resolvedPath) // The cache key. Just the minimal data. |> List.sort // Sort to promote cache hits. let tcGlobals,frameworkTcImports = // Prepare the frameworkTcImportsCache // // The data elements in this key are very important. There should be nothing else in the TcConfig that logically affects // the import of a set of framework DLLs into F# CCUs. That is, the F# CCUs that result from a set of DLLs (including // FSharp.Core.dll andb mscorlib.dll) must be logically invariant of all the other compiler configuration parameters. let key = (frameworkDLLsKey, tcConfig.mscorlibAssemblyName, tcConfig.ClrRoot, tcConfig.fsharpBinariesDir) match frameworkTcImportsCache.TryGet key with | Some res -> res | None -> let tcConfigP = TcConfigProvider.Constant(tcConfig) let ((tcGlobals,tcImports) as res) = TcImports.BuildFrameworkTcImports (tcConfigP, frameworkDLLs, nonFrameworkResolutions) frameworkTcImportsCache.Put(key,res) tcGlobals,tcImports tcGlobals,frameworkTcImports,nonFrameworkResolutions,unresolved /// An error logger that captures errors and eventually sends a single error or warning for all the errors and warning in a file type CompilationErrorLogger (debugName:string, tcConfig:TcConfig, errorLogger:ErrorLogger) = inherit ErrorLogger("CompilationErrorLogger("+debugName+")") let warningsSeenInScope = new ResizeArray<_>() let errorsSeenInScope = new ResizeArray<_>() let warningOrError warn exn = let warn = warn && not (ReportWarningAsError tcConfig.globalWarnLevel tcConfig.specificWarnOff tcConfig.specificWarnOn tcConfig.specificWarnAsError tcConfig.specificWarnAsWarn tcConfig.globalWarnAsError exn) if not warn then errorsSeenInScope.Add(exn) errorLogger.ErrorSink(exn) else if ReportWarning tcConfig.globalWarnLevel tcConfig.specificWarnOff tcConfig.specificWarnOn exn then warningsSeenInScope.Add(exn) errorLogger.WarnSink(exn) override x.WarnSinkImpl(exn) = warningOrError true exn override x.ErrorSinkImpl(exn) = warningOrError false exn override x.ErrorCount = errorLogger.ErrorCount member x.GetErrors() = let errorsAndWarnings = (errorsSeenInScope |> ResizeArray.toList |> List.map(fun e->e,true)) @ (warningsSeenInScope |> ResizeArray.toList |> List.map(fun e->e,false)) errorsAndWarnings /// This represents the global state established as each task function runs as part of the build /// /// Use to reset error and warning handlers type CompilationGlobalsScope(errorLogger:ErrorLogger,phase,projectDirectory) = do ignore projectDirectory let unwindEL = PushErrorLoggerPhaseUntilUnwind(fun _ -> errorLogger) let unwindBP = PushThreadBuildPhaseUntilUnwind (phase) // Return the disposable object that cleans up interface IDisposable with member d.Dispose() = unwindBP.Dispose() unwindEL.Dispose() //------------------------------------------------------------------------------------ // Rules for reactive building. // // This phrases the compile as a series of vector functions and vector manipulations. // Rules written in this language are then transformed into a plan to execute the // various steps of the process. //----------------------------------------------------------------------------------- type IncrementalBuilder(tcConfig : TcConfig, projectDirectory : string, assemblyName, niceNameGen : Ast.NiceNameGenerator, lexResourceManager, sourceFiles:string list, ensureReactive, errorLogger:ErrorLogger, keepGeneratedTypedAssembly:bool) = //use t = Trace.Call("IncrementalBuildVerbose", "Create", fun _ -> sprintf " tcConfig.includes = %A" tcConfig.includes) let tcConfigP = TcConfigProvider.Constant(tcConfig) let importsInvalidated = new Event() let beforeTypeCheckFile = new Event<_>() // Resolve assemblies and create the framework TcImports. This is done when constructing the // builder itself, rather than as an incremental task. This caches a level of "system" references. No type providers are // included in these references. let (tcGlobals,frameworkTcImports,nonFrameworkResolutions,unresolvedReferences) = GetFrameworkTcImports tcConfig // Check for the existence of loaded sources and prepend them to the sources list if present. let sourceFiles = tcConfig.GetAvailableLoadedSources() @ (sourceFiles|>List.map(fun s -> rangeStartup,s)) // Mark up the source files with an indicator flag indicating if they are the last source file in the project let sourceFiles = let flags = tcConfig.ComputeCanContainEntryPoint(sourceFiles |> List.map snd) (sourceFiles,flags) ||> List.map2 (fun (m,nm) flag -> (m,nm,flag)) // Get the original referenced assembly names // do System.Diagnostics.Debug.Assert(not((sprintf "%A" nonFrameworkResolutions).Contains("System.dll")),sprintf "Did not expect a system import here. %A" nonFrameworkResolutions) // Get the names and time stamps of all the non-framework referenced assemblies, which will act // as inputs to one of the nodes in the build. // // This operation is done when constructing the builder itself, rather than as an incremental task. let nonFrameworkAssemblyInputs = // Note we are not calling errorLogger.GetErrors() anywhere for this task. // REVIEW: Consider if this is ok. I believe so, because this is a background build and we aren't currently reporting errors from the background build. let errorLogger = CompilationErrorLogger("nonFrameworkAssemblyInputs", tcConfig, errorLogger) // Return the disposable object that cleans up use _holder = new CompilationGlobalsScope(errorLogger,BuildPhase.Parameter, projectDirectory) [ for r in nonFrameworkResolutions do let originalTimeStamp = try if FileSystem.SafeExists(r.resolvedPath) then let result = FileSystem.GetLastWriteTimeShim(r.resolvedPath) Trace.Print("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Found referenced assembly '%s'.\n" r.resolvedPath) result else Trace.Print("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Did not find referenced assembly '%s' on disk.\n" r.resolvedPath) DateTime.Now with e -> Trace.Print("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Did not find referenced assembly '%s' due to exception.\n" r.resolvedPath) // Note we are not calling errorLogger.GetErrors() anywhere for this task. This warning will not be reported... // REVIEW: Consider if this is ok. I believe so, because this is a background build and we aren't currently reporting errors from the background build. errorLogger.Warning(e) DateTime.Now yield (r.originalReference.Range,r.resolvedPath,originalTimeStamp) ] // The IncrementalBuilder needs to hold up to one item that needs to be disposed, which is the tcImports for the incremental // build. let mutable cleanupItem = None : TcImports option let disposeCleanupItem() = match cleanupItem with | None -> () | Some item -> cleanupItem <- None dispose item let setCleanupItem x = assert cleanupItem.IsNone cleanupItem <- Some x let mutable disposed = false let assertNotDisposed() = if disposed then System.Diagnostics.Debug.Assert(false, "IncrementalBuild object has already been disposed!") let mutable referenceCount = 0 ///---------------------------------------------------- /// START OF BUILD TASK FUNCTIONS /// This is a build task function that gets placed into the build rules as the computation for a VectorStamp /// /// Get the timestamp of the given file name. let StampFileNameTask (_m:range, filename:string, _isLastCompiland:bool) = assertNotDisposed() FileSystem.GetLastWriteTimeShim(filename) /// This is a build task function that gets placed into the build rules as the computation for a VectorMap /// /// Parse the given files and return the given inputs. This function is expected to be /// able to be called with a subset of sourceFiles and return the corresponding subset of /// parsed inputs. let ParseTask (sourceRange:range,filename:string,isLastCompiland) = assertNotDisposed() let errorLogger = CompilationErrorLogger("ParseTask", tcConfig, errorLogger) // Return the disposable object that cleans up use _holder = new CompilationGlobalsScope(errorLogger, BuildPhase.Parse, projectDirectory) Trace.Print("FSharpBackgroundBuild", fun _ -> sprintf "Parsing %s..." filename) try IncrementalBuilderEventsMRU.Add(IBEParsed filename) let result = ParseOneInputFile(tcConfig,lexResourceManager,[],filename ,isLastCompiland,errorLogger,(*retryLocked*)true) Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "done.") result,sourceRange,filename,errorLogger.GetErrors () with exn -> System.Diagnostics.Debug.Assert(false, sprintf "unexpected failure in IncrementalFSharpBuild.Parse\nerror = %s" (exn.ToString())) failwith "last chance failure" /// This is a build task function that gets placed into the build rules as the computation for a Vector.Stamp /// /// Timestamps of referenced assemblies are taken from the file's timestamp. let TimestampReferencedAssemblyTask (_range, filename, originalTimeStamp) = assertNotDisposed() // Note: we are not calling errorLogger.GetErrors() anywhere. Is this a problem? let errorLogger = CompilationErrorLogger("TimestampReferencedAssemblyTask", tcConfig, errorLogger) // Return the disposable object that cleans up use _holder = new CompilationGlobalsScope(errorLogger, BuildPhase.Parameter, projectDirectory) // Parameter because -r reference let timestamp = try if FileSystem.SafeExists(filename) then let ts = FileSystem.GetLastWriteTimeShim(filename) if ts<>originalTimeStamp then Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Noticing change in timestamp of file %s from %A to %A" filename originalTimeStamp ts) else Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Noticing no change in timestamp of file %s (still %A)" filename originalTimeStamp) ts else Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Noticing that file %s was deleted, but ignoring that for timestamp checking" filename) originalTimeStamp with exn -> // For example, malformed filename Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Exception when checking stamp of file %s, using old stamp %A" filename originalTimeStamp) // Note we are not calling errorLogger.GetErrors() anywhere for this task. This warning will not be reported... // REVIEW: Consider if this is ok. I believe so, because this is a background build and we aren't currently reporting errors from the background build. errorLogger.Warning exn originalTimeStamp timestamp /// This is a build task function that gets placed into the build rules as the computation for a Vector.Demultiplex /// // Link all the assemblies together and produce the input typecheck accumulator let CombineImportedAssembliesTask _ : TypeCheckAccumulator = assertNotDisposed() let errorLogger = CompilationErrorLogger("CombineImportedAssembliesTask", tcConfig, errorLogger) // Return the disposable object that cleans up use _holder = new CompilationGlobalsScope(errorLogger, BuildPhase.Parameter, projectDirectory) let tcImports = try // We dispose any previous tcImports, for the case where a dependency changed which caused this part // of the partial build to be re-evaluated. disposeCleanupItem() Trace.PrintLine("FSharpBackgroundBuild", fun _ -> "About to (re)create tcImports") let tcImports = TcImports.BuildNonFrameworkTcImports(None,tcConfigP,tcGlobals,frameworkTcImports,nonFrameworkResolutions,unresolvedReferences) #if EXTENSIONTYPING for ccu in tcImports.GetCcusExcludingBase() do // When a CCU reports an invalidation, merge them together and just report a // general "imports invalidated". This triggers a rebuild. ccu.Deref.InvalidateEvent.Add(fun msg -> importsInvalidated.Trigger msg) #endif Trace.PrintLine("FSharpBackgroundBuild", fun _ -> "(Re)created tcImports") // The tcImports must be cleaned up if this builder ever gets disposed. We also dispose any previous // tcImports should we be re-creating an entry because a dependency changed which caused this part // of the partial build to be re-evaluated. setCleanupItem tcImports tcImports with e -> System.Diagnostics.Debug.Assert(false, sprintf "Could not BuildAllReferencedDllTcImports %A" e) Trace.PrintLine("FSharpBackgroundBuild", fun _ -> "Failed to recreate tcImports\n %A") errorLogger.Warning(e) frameworkTcImports let tcEnv0 = GetInitialTypecheckerEnv (Some assemblyName) rangeStartup tcConfig tcImports tcGlobals let tcState0 = TypecheckInitialState (rangeStartup,assemblyName,tcConfig,tcGlobals,tcImports,niceNameGen,tcEnv0) let tcAcc = { tcGlobals=tcGlobals tcImports=tcImports tcState=tcState0 tcConfig=tcConfig tcEnv=tcEnv0 topAttribs=None typedImplFiles=[] errors=errorLogger.GetErrors() } tcAcc /// This is a build task function that gets placed into the build rules as the computation for a Vector.ScanLeft /// /// Type check all files. let TypeCheckTask (tcAcc:TypeCheckAccumulator) input : Eventually = assertNotDisposed() match input with | Some input, _sourceRange, filename, parseErrors-> IncrementalBuilderEventsMRU.Add(IBETypechecked filename) let capturingErrorLogger = CompilationErrorLogger("TypeCheckTask", tcConfig, errorLogger) let errorLogger = GetErrorLoggerFilteringByScopedPragmas(false,GetScopedPragmasForInput(input),capturingErrorLogger) let tcAcc = {tcAcc with errors = tcAcc.errors @ parseErrors} let fullComputation = eventually { Trace.PrintLine("FSharpBackgroundBuild", fun _ -> sprintf "Typechecking %s..." filename) beforeTypeCheckFile.Trigger filename let! (tcEnv,topAttribs,typedImplFiles),tcState = TypecheckOneInputEventually ((fun () -> errorLogger.ErrorCount > 0), tcConfig,tcAcc.tcImports, tcAcc.tcGlobals, None, Nameres.TcResultsSink.NoSink, tcAcc.tcState,input) /// Only keep the typed interface files when doing a "full" build for fsc.exe, otherwise just throw them away let typedImplFiles = if keepGeneratedTypedAssembly then typedImplFiles else [] Trace.PrintLine("FSharpBackgroundBuild", fun _ -> sprintf "done.") return {tcAcc with tcState=tcState tcEnv=tcEnv topAttribs=Some topAttribs typedImplFiles=typedImplFiles errors = tcAcc.errors @ capturingErrorLogger.GetErrors() } } // Run part of the Eventually<_> computation until a timeout is reached. If not complete, // return a new Eventually<_> computation which recursively runs more of the computation. // - When the whole thing is finished commit the error results sent through the errorLogger. // - Each time we do real work we reinstall the CompilationGlobalsScope if ensureReactive then let timeSlicedComputation = fullComputation |> Eventually.repeatedlyProgressUntilDoneOrTimeShareOver maxTimeShareMilliseconds (fun f -> // Reinstall the compilation globals each time we start or restart use unwind = new CompilationGlobalsScope (errorLogger, BuildPhase.TypeCheck, projectDirectory) Trace.Print("FSharpBackgroundBuildVerbose", fun _ -> sprintf "continuing %s.\n" filename) f() (* unwind dispose *) ) timeSlicedComputation else use unwind = new CompilationGlobalsScope (errorLogger, BuildPhase.TypeCheck, projectDirectory) fullComputation |> Eventually.force |> Eventually.Done | _ -> Eventually.Done tcAcc /// This is a build task function that gets placed into the build rules as the computation for a Vector.Demultiplex /// /// Finish up the typechecking to produce outputs for the rest of the compilation process let FinalizeTypeCheckTask (tcStates:TypeCheckAccumulator[]) = assertNotDisposed() Trace.PrintLine("FSharpBackgroundBuildVerbose", fun _ -> sprintf "Finalizing Type Check" ) let finalAcc = tcStates.[tcStates.Length-1] let results = tcStates |> List.ofArray |> List.map (fun acc-> acc.tcEnv, (Option.get acc.topAttribs), acc.typedImplFiles) let (tcEnvAtEndOfLastFile,topAttrs,mimpls),tcState = TypecheckMultipleInputsFinish (results,finalAcc.tcState) let tcState,tassembly = TypecheckClosedInputSetFinish (mimpls,tcState) tcState, topAttrs, tassembly, tcEnvAtEndOfLastFile, finalAcc.tcImports, finalAcc.tcGlobals, finalAcc.tcConfig // END OF BUILD TASK FUNCTIONS // --------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------- // START OF BUILD DESCRIPTION let buildDescription = new BuildDescriptionScope () // Inputs let filenames = InputVector "FileNames" let referencedAssemblies = InputVector "ReferencedAssemblies" // Build let stampedFileNames = Vector.Stamp "SourceFileTimeStamps" StampFileNameTask filenames let parseTrees = Vector.Map "Parse" ParseTask stampedFileNames let stampedReferencedAssemblies = Vector.Stamp "TimestampReferencedAssembly" TimestampReferencedAssemblyTask referencedAssemblies let initialTcAcc = Vector.Demultiplex "CombineImportedAssemblies" CombineImportedAssembliesTask stampedReferencedAssemblies let tcStates = Vector.ScanLeft "TypeCheck" TypeCheckTask initialTcAcc parseTrees let finalizedTypeCheck = Vector.Demultiplex "FinalizeTypeCheck" FinalizeTypeCheckTask tcStates // Outputs do buildDescription.DeclareVectorOutput ("ParseTrees", parseTrees) do buildDescription.DeclareVectorOutput ("TypeCheckingStates",tcStates) do buildDescription.DeclareScalarOutput ("InitialTcAcc", initialTcAcc) do buildDescription.DeclareScalarOutput ("FinalizeTypeCheck", finalizedTypeCheck) // END OF BUILD DESCRIPTION // --------------------------------------------------------------------------------------------- let fileDependencies = let unresolvedFileDependencies = unresolvedReferences |> List.map (function Microsoft.FSharp.Compiler.Build.UnresolvedAssemblyReference(referenceText, _) -> referenceText) |> List.filter(fun referenceText->not(Path.IsInvalidPath(referenceText))) // Exclude things that are definitely not a file name |> List.map(fun referenceText -> if FileSystem.IsPathRootedShim(referenceText) then referenceText else System.IO.Path.Combine(projectDirectory,referenceText)) |> List.map (fun file->{Filename = file; ExistenceDependency = true; IncrementalBuildDependency = true }) let resolvedFileDependencies = nonFrameworkResolutions |> List.map (fun r -> {Filename = r.resolvedPath ; ExistenceDependency = true; IncrementalBuildDependency = true }) #if DEBUG do resolvedFileDependencies |> List.iter (fun x -> System.Diagnostics.Debug.Assert(FileSystem.IsPathRootedShim(x.Filename), sprintf "file dependency should be absolute path: '%s'" x.Filename)) #endif let sourceFileDependencies = sourceFiles |> List.map (fun (_,f,_) -> {Filename = f ; ExistenceDependency = true; IncrementalBuildDependency = true }) List.concat [unresolvedFileDependencies;resolvedFileDependencies;sourceFileDependencies] #if TRACK_DOWN_EXTRA_BACKSLASHES do fileDependencies |> List.iter(fun dep -> Debug.Assert(not(dep.Filename.Contains(@"\\")), "IncrementalBuild.Create results in a non-canonical filename with extra backslashes: "^dep.Filename) ) #endif do IncrementalBuilderEventsMRU.Add(IBENuked) let buildInputs = ["FileNames", sourceFiles.Length, sourceFiles |> List.map box "ReferencedAssemblies", nonFrameworkAssemblyInputs.Length, nonFrameworkAssemblyInputs |> List.map box ] // This is the intial representation of progress through the build, i.e. we have made no progress. let mutable partialBuild = buildDescription.GetInitialPartialBuild (buildInputs, []) member this.IncrementUsageCount() = assertNotDisposed() referenceCount <- referenceCount + 1 { new System.IDisposable with member x.Dispose() = this.DecrementUsageCount() } member this.DecrementUsageCount() = assertNotDisposed() referenceCount <- referenceCount - 1 if referenceCount = 0 then disposed <- true disposeCleanupItem() member __.IsAlive = referenceCount > 0 member __.TcConfig = tcConfig member __.BeforeTypeCheckFile = beforeTypeCheckFile.Publish member __.ImportedCcusInvalidated = importsInvalidated.Publish member __.Dependencies = fileDependencies #if EXTENSIONTYPING member __.ThereAreLiveTypeProviders = let liveTPs = match cleanupItem with | None -> [] | Some tcImports -> [for ia in tcImports.GetImportedAssemblies() do yield! ia.TypeProviders] match liveTPs with | [] -> false | _ -> true #endif member __.Step () = match IncrementalBuild.Step "TypeCheckingStates" partialBuild with | None -> false | Some newPartialBuild -> partialBuild <- newPartialBuild true member __.GetAntecedentTypeCheckResultsBySlot slotOfFile = let result = match slotOfFile with | (*first file*) 0 -> GetScalarResult("InitialTcAcc",partialBuild) | _ -> GetVectorResultBySlot("TypeCheckingStates",slotOfFile-1,partialBuild) match result with | Some({tcState=tcState; tcGlobals=tcGlobals; tcConfig=tcConfig; tcImports=tcImports; errors=errors},timestamp) -> Some(tcState,tcImports,tcGlobals,tcConfig,errors,timestamp) | _->None member __.TypeCheck() = let newPartialBuild = IncrementalBuild.Eval "FinalizeTypeCheck" partialBuild partialBuild <- newPartialBuild match GetScalarResult("FinalizeTypeCheck",partialBuild) with | Some((tcState,topAttribs,typedAssembly,tcEnv,tcImports,tcGlobals,tcConfig),_) -> tcState,topAttribs,typedAssembly,tcEnv,tcImports,tcGlobals,tcConfig | None -> failwith "Build was not evaluated." member __.GetSlotOfFileName(filename:string) = // Get the slot of the given file and force it to build. let CompareFileNames (_,f1,_) (_,f2,_) = let result = System.String.Compare(f1,f2,StringComparison.CurrentCultureIgnoreCase)=0 || System.String.Compare(FileSystem.GetFullPathShim(f1),FileSystem.GetFullPathShim(f2),StringComparison.CurrentCultureIgnoreCase)=0 result GetSlotByInput("FileNames",(rangeStartup,filename,false),partialBuild,CompareFileNames) #if NO_QUICK_SEARCH_HELPERS // only used in QuickSearch prototype #else member __.GetSlotsCount () = let expr = GetExprByName(partialBuild,"FileNames") let id = BuildRuleExpr.GetId(expr) match partialBuild.Results.TryFind(id) with | Some(VectorResult vr) -> vr.Size | _ -> failwith "Cannot know sizes" member this.GetParseResultsBySlot slot = let result = GetVectorResultBySlot("ParseTrees",slot,partialBuild) match result with | Some ((inputOpt,range,fileName), _) -> inputOpt, range, fileName | None -> let newPartialBuild = IncrementalBuild.Eval "ParseTrees" partialBuild partialBuild <- newPartialBuild this.GetParseResultsBySlot slot #endif // //------------------------------------------------------------------------------------ // CreateIncrementalBuilder (for background type checking). Note that fsc.fs also // creates an incremental builder used by the command line compiler. //----------------------------------------------------------------------------------- static member CreateBackgroundBuilderForProjectOptions (scriptClosureOptions:LoadClosure option, sourceFiles:string list, commandLineArgs:string list, projectDirectory, useScriptResolutionRules, isIncompleteTypeCheckEnvironment) = // Trap and report warnings and errors from creation. use errorScope = new ErrorScope() // Create the builder. // Share intern'd strings across all lexing/parsing let resourceManager = new Lexhelp.LexResourceManager() /// Create a type-check configuration let tcConfigB = let defaultFSharpBinariesDir = Internal.Utilities.FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(None).Value // see also fsc.fs:runFromCommandLineToImportingAssemblies(), as there are many similarities to where the PS creates a tcConfigB let tcConfigB = TcConfigBuilder.CreateNew(defaultFSharpBinariesDir, implicitIncludeDir=projectDirectory, optimizeForMemory=true, isInteractive=false, isInvalidationSupported=true) // The following uses more memory but means we don't take read-exclusions on the DLLs we reference // Could detect well-known assemblies--ie System.dll--and open them with read-locks tcConfigB.openBinariesInMemory <- true tcConfigB.resolutionEnvironment <- if useScriptResolutionRules then MSBuildResolver.DesigntimeLike else MSBuildResolver.CompileTimeLike // Apply command-line arguments. try ParseCompilerOptions (fun _sourceOrDll -> () ) (Fscopts.GetCoreServiceCompilerOptions tcConfigB) commandLineArgs with e -> errorRecovery e range0 // Never open PDB files for the language service, even if --standalone is specified tcConfigB.openDebugInformationForLaterStaticLinking <- false if tcConfigB.framework then // ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- // If you see a failure here running unittests consider whether it it caused by // a mismatched version of Microsoft.Build.Framework. Run unittests under a debugger. If // you see an old version of Microsoft.Build.*.dll getting loaded it it is likely caused by // using an old ITask or ITaskItem from some tasks assembly. // I solved this problem by adding a Unittests.config.dll which has a binding redirect to // the current (right now, 4.0.0.0) version of the tasks assembly. // ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- System.Diagnostics.Debug.Assert(false, "Language service requires --noframework flag") tcConfigB.framework<-false tcConfigB match scriptClosureOptions with | Some closure -> let dllReferences = [for reference in tcConfigB.referencedDLLs do // If there's (one or more) resolutions of closure references then yield them all match closure.References |> List.tryFind (fun (resolved,_)->resolved=reference.Text) with | Some(resolved,closureReferences) -> for closureReference in closureReferences do yield AssemblyReference(closureReference.originalReference.Range, resolved) | None -> yield reference] tcConfigB.referencedDLLs<-[] // Add one by one to remove duplicates for dllReference in dllReferences do tcConfigB.AddReferencedAssemblyByPath(dllReference.Range,dllReference.Text) tcConfigB.knownUnresolvedReferences<-closure.UnresolvedReferences | None -> () // Make sure System.Numerics is referenced for out-of-project .fs files if isIncompleteTypeCheckEnvironment then tcConfigB.addVersionSpecificFrameworkReferences <- true let _, _, assemblyName = tcConfigB.DecideNames sourceFiles let tcConfig = TcConfig.Create(tcConfigB,validate=true) let niceNameGen = NiceNameGenerator() // Sink internal errors and warnings. // Q: Why is it ok to ignore these? // jomof: These are errors from the background build of files the user doesn't see. Squiggles will appear in the editted file via the foreground parse\typecheck let warnSink (exn:PhasedError) = Trace.PrintLine("IncrementalBuild", (exn.ToString >> sprintf "Background warning: %s")) let errorSink (exn:PhasedError) = Trace.PrintLine("IncrementalBuild", (exn.ToString >> sprintf "Background error: %s")) let errorLogger = { new ErrorLogger("CreateIncrementalBuilder") with member x.ErrorCount=0 member x.WarnSinkImpl e = warnSink e member x.ErrorSinkImpl e = errorSink e } let builder = new IncrementalBuilder (tcConfig, projectDirectory, assemblyName, niceNameGen, resourceManager, sourceFiles, true, // stay reactive errorLogger, false // please discard implementation results ) Trace.PrintLine("IncrementalBuild", fun () -> sprintf "CreateIncrementalBuilder: %A" builder.Dependencies) #if DEBUG builder.Dependencies|> List.iter (fun df -> System.Diagnostics.Debug.Assert(FileSystem.IsPathRootedShim(df.Filename), sprintf "dependency file was not absolute: '%s'" df.Filename)) #endif (builder, errorScope.ErrorsAndWarnings) fsharp-3.0.34/src/fsharp/vs/ServiceConstants.fs0000775000175000017500000000534112260314606020427 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices module internal ItemDescriptionIcons = // Hardwired constants from older versions of Visual Studio. These constants were used with Babel and VS internals. let iIconGroupClass = 0x0000 let iIconGroupConstant = 0x0001 let iIconGroupDelegate = 0x0002 let iIconGroupEnum = 0x0003 let iIconGroupEnumMember = 0x0004 let iIconGroupEvent = 0x0005 let iIconGroupException = 0x0006 let iIconGroupFieldBlue = 0x0007 let iIconGroupInterface = 0x0008 // Absolute = 48 let iIconGroupTextLine = 0x0009 let iIconGroupScript = 0x000a let iIconGroupScript2 = 0x000b let iIconGroupMethod = 0x000c let iIconGroupMethod2 = 0x000d let iIconGroupModule = 0x000e let iIconGroupNameSpace = 0x000f // Absolute = 90 let iIconGroupFormula = 0x0010 let iIconGroupProperty = 0x00011 let iIconGroupStruct = 0x00012 let iIconGroupTemplate = 0x00013 let iIconGroupTypedef = 0x00014 let iIconGroupType = 0x00015 let iIconGroupUnion = 0x00016 let iIconGroupVariable = 0x00017 let iIconGroupValueType = 0x00018 // Absolute = 144 let iIconGroupIntrinsic = 0x00019 let iIconGroupError = 0x0001f let iIconGroupFieldYellow = 0x0020 let iIconGroupMisc1 = 0x00021 let iIconGroupMisc2 = 0x0022 let iIconGroupMisc3 = 0x00023 let iIconItemPublic = 0x0000 let iIconItemInternal = 0x0001 let iIconItemSpecial = 0x0002 let iIconItemProtected = 0x0003 let iIconItemPrivate = 0x0004 let iIconItemShortCut = 0x0005 let iIconItemNormal = iIconItemPublic let iIconBlackBox = 162 let iIconLibrary = 163 let iIconProgram = 164 let iIconWebProgram = 165 let iIconProgramEmpty = 166 let iIconWebProgramEmpty = 167 let iIconComponents = 168 let iIconEnvironment = 169 let iIconWindow = 170 let iIconFolderOpen = 171 let iIconFolder = 172 let iIconArrowRight = 173 let iIconAmbigious = 174 let iIconShadowClass = 175 let iIconShadowMethodPrivate = 176 let iIconShadowMethodProtected = 177 let iIconShadowMethod = 178 let iIconInCompleteSource = 179 fsharp-3.0.34/src/fsharp/vs/ServiceUntypedParse.fsi0000775000175000017500000000777512260314606021264 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.ErrorLogger open System.Collections.Generic // implementation details used by other code in the compiler [] type internal UntypedParseResults = { // Error infos Errors : ErrorInfo[] // Untyped AST Input : Ast.ParsedInput option // Do not report errors from the type checker ParseHadErrors : bool // When these files change then the build is invalid DependencyFiles : string list } [] type (* internal *) UntypedParseInfo = member internal ParseTree : Ast.ParsedInput option /// Notable parse info for ParameterInfo at a given location member internal FindNoteworthyParamInfoLocations : line:int * col:int -> NoteworthyParamInfoLocations option /// Name of the file for which this information were created member internal FileName : string /// Get declared items and the selected item at the specified location member internal GetNavigationItems : unit -> NavigationItems /// Return the inner-most range associated with a possible breakpoint location member internal ValidateBreakpointLocation : Position -> Range option /// When these files change then the build is invalid member internal DependencyFiles : unit -> string list internal new : parsed:UntypedParseResults -> UntypedParseInfo /// Information about F# source file names module internal SourceFile = /// Whether or not this file is compilable val IsCompilable : string -> bool /// Whether or not this file should be a single-file project val MustBeSingleFileProject : string -> bool type internal CompletionPath = string list * string option // plid * residue type internal InheritanceContext = | Class | Interface | Unknown type internal RecordContext = | CopyOnUpdate of range * CompletionPath // range | Constructor of string // typename | New of CompletionPath type internal CompletionContext = // completion context cannot be determined due to errors | Invalid // completing something after the inherit keyword | Inherit of InheritanceContext * CompletionPath // completing records field | RecordField of RecordContext | RangeOperator // implementation details used by other code in the compiler module internal UntypedParseInfoImpl = open Microsoft.FSharp.Compiler.Ast val GetUntypedParseResults : UntypedParseInfo -> UntypedParseResults val TryFindExpressionASTLeftOfDotLeftOfCursor : int * int * ParsedInput option -> (pos * bool) option val GetRangeOfExprLeftOfDot : int * int * ParsedInput option -> ((int*int) * (int*int)) option val TryFindExpressionIslandInPosition : int * int * ParsedInput option -> string option val TryGetCompletionContext : int * int * UntypedParseInfo option -> CompletionContext option // implementation details used by other code in the compiler module internal SourceFileImpl = val IsInterfaceFile : string -> bool val AdditionalDefinesForUseInEditor : string -> string list fsharp-3.0.34/src/fsharp/vs/service.fs0000775000175000017500000036601312260314606016600 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. namespace Microsoft.FSharp.Compiler.SourceCodeServices open Internal.Utilities open System open System.IO open System.Text open System.Threading open System.Collections.Generic open Microsoft.FSharp.Core.Printf open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.MSBuildResolver open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.PrettyNaming open Internal.Utilities.Collections open Internal.Utilities.Debug open System.Security.Permissions open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Parser open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Lexhelp open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Nameres open Internal.Utilities.StructuredFormat open ItemDescriptionIcons open ItemDescriptionsImpl [] module EnvMisc = #if SILVERLIGHT let GetEnvInteger e dflt = dflt #else let GetEnvInteger e dflt = match System.Environment.GetEnvironmentVariable(e) with null -> dflt | t -> try int t with _ -> dflt #endif let buildCacheSize = GetEnvInteger "mFSharp_BuildCacheSize" 3 let recentForgroundTypeCheckLookupSize = GetEnvInteger "mFSharp_RecentForegroundTypeCheckCacheSize" 5 let braceMatchCacheSize = GetEnvInteger "mFSharp_BraceMatchCacheSize" 5 let untypedCheckMruSize = GetEnvInteger "mFSharp_UntypedCheckMruCacheSize" 2 let maxTypeCheckErrorsOutOfProjectContext = GetEnvInteger "mFSharp_MaxErrorsOutOfProjectContext" 3 //---------------------------------------------------------------------------- // Methods //-------------------------------------------------------------------------- type Param = { Name: string CanonicalTypeTextForSorting: string Display: string Description: string } /// Format parameters for Intellisense completion module internal Params = let printCanonicalizedTypeName g (denv:DisplayEnv) tau = // get rid of F# abbreviations and such let strippedType = stripTyEqnsWrtErasure EraseAll g tau // pretend no namespaces are open let denv = denv.SetOpenPaths([]) // now printing will see a .NET-like canonical representation, that is good for sorting overloads into a reasonable order (see bug 94520) NicePrint.stringOfTy denv strippedType let ParamOfRecdField g denv f = { Name = f.rfield_id.idText CanonicalTypeTextForSorting = printCanonicalizedTypeName g denv f.rfield_type Display = NicePrint.prettyStringOfTy denv f.rfield_type Description = "" } let ParamOfParamData g denv (ParamData(_isParamArrayArg,_isOutArg,_optArgInfo,nmOpt,pty) as paramData) = { Name = match nmOpt with None -> "" | Some pn -> pn CanonicalTypeTextForSorting = printCanonicalizedTypeName g denv pty Display = NicePrint.stringOfParamData denv paramData Description = "" } // TODO this code is similar to NicePrint.fs:formatParamDataToBuffer, refactor or figure out why different? let ParamsOfParamDatas g denv (paramDatas:ParamData list) rty = let paramNames,paramPrefixes,paramTypes = paramDatas |> List.map (fun (ParamData(isParamArrayArg,_,optArgInfo,nmOpt,pty)) -> let isOptArg = optArgInfo.IsOptional match nmOpt, isOptArg, tryDestOptionTy denv.g pty with // Layout an optional argument | Some(nm), true, ptyOpt -> // detect parameter type, if ptyOpt is None - this is .NET style optional argument let pty = defaultArg ptyOpt pty nm, (sprintf "?%s:" nm), pty // Layout an unnamed argument | None, _,_ -> "", "", pty // Layout a named argument | Some nm,_,_ -> let prefix = if isParamArrayArg then sprintf "params %s: " nm else sprintf "%s: " nm nm, prefix,pty) |> List.unzip3 let paramTypeAndRetLs,_ = NicePrint.layoutPrettifiedTypes denv (paramTypes@[rty]) let paramTypeLs,_ = List.frontAndBack paramTypeAndRetLs (paramNames,paramPrefixes,(paramTypes,paramTypeLs)||>List.zip) |||> List.map3 (fun nm paramPrefix (tau,tyL) -> { Name = nm CanonicalTypeTextForSorting = printCanonicalizedTypeName g denv tau Display = paramPrefix+(showL tyL) Description = "" }) let ParamsOfTypes g denv args rtau = (*let arg,rtau = destFunTy rtau let args = tryDestTupleTy arg *) // Review, use tpcsL here let ptausL, _ = NicePrint.layoutPrettifiedTypes denv (args@[rtau]) let argsL,_ = List.frontAndBack ptausL let mkParam (tau,tyL) = { Name = "" CanonicalTypeTextForSorting = printCanonicalizedTypeName g denv tau Display = Layout.showL tyL Description = "" } (args,argsL) ||> List.zip |> List.map mkParam #if EXTENSIONTYPING let (|ItemIsTypeWithStaticArguments|_|) g item = match item with | Item.Types(_name,tys) -> match tys with | [Microsoft.FSharp.Compiler.Tastops.AppTy g (tyconRef,_typeInst)] -> if tyconRef.IsProvidedErasedTycon || tyconRef.IsProvidedGeneratedTycon then Some tyconRef else None | _ -> None | _ -> None #endif let rec ParamsOfItem (infoReader:InfoReader) m denv d = let amap = infoReader.amap let g = infoReader.g match d with | Item.Value vref -> let getParamsOfTypes() = let _, tau = vref.TypeScheme if isFunTy denv.g tau then let arg,rtau = destFunTy denv.g tau let args = tryDestTupleTy denv.g arg ParamsOfTypes g denv args rtau else [] match vref.ValReprInfo with | None -> // ValReprInfo = None i.e. in let bindings defined in types or in local functions // in this case use old approach and return only information about types getParamsOfTypes () | Some valRefInfo -> // ValReprInfo will exist for top-level syntactic functions // per spec: binding is considered to define a syntactic function if it is either a function or its immediate right-hand-side is a anonymous function let (_, argInfos, returnTy, _) = GetTopValTypeInFSharpForm g valRefInfo vref.Type m match argInfos with | [] -> // handles cases like 'let foo = List.map' getParamsOfTypes() | argInfo::_ -> // result 'paramDatas' collection corresponds to the first argument of curried function // i.e. let func (a : int) (b : int) = a + b // paramDatas will contain information about a and returnTy will be: int -> int // This is good enough as we don't provide ways to display info for the second curried argument let paramDatas = argInfo |> List.map ParamNameAndTypeOfArgInfo |> List.map (fun (ParamNameAndType(nm,pty)) -> ParamData(false, false, NotOptional, nm, pty)) ParamsOfParamDatas g denv paramDatas returnTy | Item.UnionCase(ucr) -> ucr.UnionCase.RecdFields |> List.map (ParamOfRecdField g denv) | Item.ActivePatternCase(apref) -> let v = apref.ActivePatternVal let _,tau = v.TypeScheme let args, _ = stripFunTy denv.g tau ParamsOfTypes g denv args tau | Item.ExnCase(ecref) -> ecref |> recdFieldsOfExnDefRef |> List.map (ParamOfRecdField g denv) | Item.Property(_,pinfo :: _) -> let paramDatas = pinfo.GetParamDatas(amap,m) let rty = pinfo.GetPropertyType(amap,m) ParamsOfParamDatas g denv paramDatas rty | Item.CtorGroup(_,(minfo :: _)) | Item.MethodGroup(_,(minfo :: _)) -> let paramDatas = minfo.GetParamDatas(amap, m, minfo.FormalMethodInst) |> List.head let rty = minfo.GetFSharpReturnTy(amap, m, minfo.FormalMethodInst) ParamsOfParamDatas g denv paramDatas rty | Item.CustomBuilder (_,vref) -> ParamsOfItem infoReader m denv (Item.Value vref) | Item.TypeVar _ -> [] | Item.CustomOperation (_,usageText, Some minfo) -> match usageText() with | None -> let argNamesAndTys = ItemDescriptionsImpl.ParamNameAndTypesOfUnaryCustomOperation g minfo let _, argTys, _ = PrettyTypes.PrettifyTypesN g (argNamesAndTys |> List.map (fun (ParamNameAndType(_,ty)) -> ty)) let paramDatas = (argNamesAndTys, argTys) ||> List.map2 (fun (ParamNameAndType(nm,_)) argTy -> ParamData(false,false,NotOptional,nm,argTy)) let rty = minfo.GetFSharpReturnTy(amap, m, minfo.FormalMethodInst) ParamsOfParamDatas g denv paramDatas rty | Some _ -> [] // no parameter data available for binary operators like 'zip', 'join' and 'groupJoin' since they use bespoke syntax | Item.FakeInterfaceCtor _ -> [] | Item.DelegateCtor delty -> let (SigOfFunctionForDelegate(_, _, _, fty)) = GetSigOfFunctionForDelegate infoReader delty m AccessibleFromSomeFSharpCode ParamsOfParamDatas g denv [ParamData(false,false,NotOptional,None, fty)] delty #if EXTENSIONTYPING | ItemIsTypeWithStaticArguments g tyconRef -> // similar code to TcProvidedTypeAppToStaticConstantArgs let typeBeforeArguments = match tyconRef.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.ProvidedType | _ -> failwith "unreachable" let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments,provider) -> typeBeforeArguments.GetStaticParameters(provider)), range=m) let staticParameters = staticParameters.PApplyArray(id, "GetStaticParameters",m) staticParameters |> Array.map (fun sp -> let typ = Import.ImportProvidedType amap m (sp.PApply((fun x -> x.ParameterType),m)) let spKind = NicePrint.stringOfTy denv typ let spName = sp.PUntaint((fun sp -> sp.Name), m) let spOpt = sp.PUntaint((fun sp -> sp.IsOptional), m) { Name = spName CanonicalTypeTextForSorting = spKind Display = sprintf "%s%s: %s" (if spOpt then "?" else "") spName spKind Description = "" }) |> Array.toList #endif | _ -> [] /// A single method for Intellisense completion [] // Note: instances of this type do not hold any references to any compiler resources. type (* internal *) Method = { Description: DataTipText Type: string Parameters: Param[] IsStaticArguments: bool // is this not really a method, but actually a static arguments list, like TP<42,"foo"> ? } /// A table of methods for Intellisense completion // // Note: this type does not hold any references to any compiler resources, nor does evaluating any of the properties execute any // code on the compiler thread. [] type MethodOverloads( name: string, unsortedMethods: Method[] ) = // BUG 413009 : [ParameterInfo] takes about 3 seconds to move from one overload parameter to another // cache allows to avoid recomputing parameterinfo for the same item #if FX_ATLEAST_40 static let methodOverloadsCache = System.Runtime.CompilerServices.ConditionalWeakTable() #endif let methods = unsortedMethods // Methods with zero arguments show up here as taking a single argument of type 'unit'. Patch them now to appear as having zero arguments. |> Array.map (fun ({Parameters=parms} as meth) -> if parms.Length = 1 && parms.[0].CanonicalTypeTextForSorting="Microsoft.FSharp.Core.Unit" then {meth with Parameters=[||]} else meth) // Fix the order of methods, to be stable for unit testing. |> Array.sortBy (fun {Parameters=parms} -> parms.Length, (parms |> Array.map (fun p -> p.CanonicalTypeTextForSorting))) member x.Name = name member x.Methods = methods static member Create(infoReader:InfoReader,m,denv,items) = let g = infoReader.g if verbose then dprintf "mkMethods: %d items on input\n" (List.length items) if isNil items then new MethodOverloads("", [| |]) else let name = DisplayNameOfItem g items.Head let getOverloadsForItem item = #if FX_ATLEAST_40 match methodOverloadsCache.TryGetValue item with | true, overloads -> overloads | false, _ -> #endif let items = match item with | Item.MethodGroup(nm,minfos) -> List.map (fun minfo -> Item.MethodGroup(nm,[minfo])) minfos | Item.CtorGroup(nm,cinfos) -> List.map (fun minfo -> Item.CtorGroup(nm,[minfo])) cinfos | Item.FakeInterfaceCtor _ | Item.DelegateCtor _ -> [item] | Item.NewDef _ | Item.ILField _ -> [] | Item.Event _ -> [] | Item.RecdField(rfinfo) -> if isFunction g rfinfo.FieldType then [item] else [] | Item.Value v -> if isFunction g v.Type then [item] else [] | Item.UnionCase(ucr) -> if not ucr.UnionCase.IsNullary then [item] else [] | Item.ExnCase(ecr) -> if recdFieldsOfExnDefRef ecr |> nonNil then [item] else [] | Item.Property(_,pinfos) -> let pinfo = List.head pinfos if pinfo.IsIndexer then [item] else [] #if EXTENSIONTYPING | Params.ItemIsTypeWithStaticArguments g _ -> [item] // we pretend that provided-types-with-static-args are method-like in order to get ParamInfo for them #endif | Item.CustomOperation(_name, _helpText, _minfo) -> [item] | Item.TypeVar _ -> [] | Item.CustomBuilder _ -> [] | _ -> [] if verbose then dprintf "mkMethods: %d items after filtering for methodness\n" (List.length items) let methods = items |> Array.ofList |> Array.map (fun item -> { Description= DataTipText [FormatDescriptionOfItem true infoReader m denv item] Type= (FormatReturnTypeOfItem infoReader m denv item) Parameters = Array.ofList (Params.ParamsOfItem infoReader m denv item) IsStaticArguments = match item with | Item.Types _ -> true | _ -> false }) #if FX_ATLEAST_40 methodOverloadsCache.Add(item, methods) #endif methods let methods = [| for item in items do yield! getOverloadsForItem item |] new MethodOverloads(name, methods) //---------------------------------------------------------------------------- // Scopes. //-------------------------------------------------------------------------- [] type (* internal *) FindDeclFailureReason = // generic reason: no particular information about error | Unknown // source code file is not available | NoSourceCode // trying to find declaration of ProvidedType without TypeProviderDefinitionLocationAttribute | ProvidedType of string // trying to find declaration of ProvidedMember without TypeProviderDefinitionLocationAttribute | ProvidedMember of string [] type (* internal *) FindDeclResult = /// declaration not found + reason | DeclNotFound of FindDeclFailureReason /// found declaration; return (position-in-file, name-of-file) | DeclFound of Position * string /// This type is used to describe what was found during the name resolution. /// (Depending on the kind of the items, we may stop processing or continue to find better items) [] [] type (* internal *) NameResResult = | Members of (Item list * DisplayEnv * range) | Cancel of DisplayEnv * range | Empty | TypecheckStaleAndTextChanged [] type ResolveOverloads = | Yes | No [] type GetPreciseCompletionListFromExprTypingsResult = | NoneBecauseTypecheckIsStaleAndTextChanged | NoneBecauseThereWereTypeErrors | None | Some of (Item list * DisplayEnv * range) type Names = string list type NamesWithResidue = Names * string [] type CapturedNameResolution(p:pos, i:Item, io:ItemOccurence, de:DisplayEnv, nre:Nameres.NameResolutionEnv, ad:AccessorDomain, m:range) = member this.Pos = p member this.Item = i member this.ItemOccurence = io member this.DisplayEnv = de member this.NameResolutionEnv = nre member this.AccessorDomain = ad member this.Range = m member this.DebugToString() = sprintf "%A: %+A" (p.Line, p.Column) i // A scope represents everything we get back from the typecheck of a file. // It acts like an in-memory database about the file. // It is effectively immutable and not updated: when we re-typecheck we just drop the previous // scope object on the floor and make a new one. [] type TypeCheckInfo (/// Information corresponding to miscellaneous command-line options (--define, etc). sTcConfig: Build.TcConfig, g: Env.TcGlobals, /// AssemblyName -> IL-Module amap: Import.ImportMap, /// project directory, or directory containing the file that generated this scope if no project directory given sProjectDir: string , sFile:string, /// Name resolution environments for every interesting region in the file. These regions may /// overlap, in which case the smallest region applicable should be used. sEnvs: ResizeArray, /// This is a name resolution environment to use if no better match can be found. sFallback:Nameres.NameResolutionEnv, /// Information of exact types found for expressions, that can be to the left of a dot. /// Also for exact name resolutions /// pos -- line and column /// typ - the inferred type for an expression /// Item -- named item /// DisplayEnv -- information about printing. For example, should redundant keywords be hidden? /// NameResolutionEnv -- naming environment--for example, currently open namespaces. /// range -- the starting and ending position capturedExprTypings: ResizeArray<(pos * TType * DisplayEnv * Nameres.NameResolutionEnv * AccessorDomain * range)>, capturedNameResolutions: ResizeArray<(pos * Item * ItemOccurence * DisplayEnv * Nameres.NameResolutionEnv * AccessorDomain * range)>, capturedResolutionsWithMethodGroups: ResizeArray<(pos * Item * ItemOccurence * DisplayEnv * Nameres.NameResolutionEnv * AccessorDomain * range)>, loadClosure : LoadClosure option, syncop:(unit->unit)->unit, checkAlive : (unit -> bool), textSnapshotInfo:obj) = let capturedNameResolutions = capturedNameResolutions |> ResizeArray.map (fun (a,b,c,d,e,f,g) -> new CapturedNameResolution(a,b,c,d,e,f,g)) let capturedResolutionsWithMethodGroups = capturedResolutionsWithMethodGroups |> ResizeArray.map (fun (a,b,c,d,e,f,g) -> new CapturedNameResolution(a,b,c,d,e,f,g)) let (|CNR|) (cnr:CapturedNameResolution) = (cnr.Pos, cnr.Item, cnr.ItemOccurence, cnr.DisplayEnv, cnr.NameResolutionEnv, cnr.AccessorDomain, cnr.Range) // These strings are potentially large and the editor may choose to hold them for a while. // Use this cache to fold together data tip text results that are the same. // Is not keyed on 'Names' collection because this is invariant for the current position in // this unchanged file. Keyed on lineStr though to prevent a change to the currently line // being available against a stale scope. let getDataTipTextCache = AgedLookup(recentForgroundTypeCheckLookupSize,areSame=(fun (x,y) -> x = y)) let infoReader = new InfoReader(g,amap) let ncenv = new NameResolver(g,amap,infoReader,Nameres.FakeInstantiationGenerator) /// Find the most precise naming environment for the given line and column let GetBestEnvForPos cursorPos = let bestSoFar = ref None // Find the most deeply nested enclosing scope that contains given position sEnvs |> ResizeArray.iter (fun (possm,env,ad) -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Examining range %s for strict inclusion\n" (stringOfRange possm)) if rangeContainsPos possm cursorPos then match !bestSoFar with | Some (bestm,_,_) -> if rangeContainsRange bestm possm then bestSoFar := Some (possm,env,ad) | None -> bestSoFar := Some (possm,env,ad)) let mostDeeplyNestedEnclosingScope = !bestSoFar match mostDeeplyNestedEnclosingScope with | Some (m,_,_) -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Strict Inclusion found env for range %s\n" (stringOfRange m)) | None ->Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Strict Inclusion found no environment, cursorPos = %s\n" (stringOfPos cursorPos)) // Look for better subtrees on the r.h.s. of the subtree to the left of where we are // Should really go all the way down the r.h.s. of the subtree to the left of where we are // This is all needed when the index is floating free in the area just after the environment we really want to capture // We guarantee to only refine to a more nested environment. It may not be strictly // the right environment, but will alwauys be at least as rich let bestAlmostIncludedSoFar = ref None sEnvs |> ResizeArray.iter (fun (possm,env,ad) -> // take only ranges that strictly do not include cursorPos (all ranges that touch cursorPos were processed during 'Strict Inclusion' part) if rangeBeforePos possm cursorPos && not (posEq possm.End cursorPos) then let contained = match mostDeeplyNestedEnclosingScope with | Some (bestm,_,_) -> rangeContainsRange bestm possm | None -> true if contained then match !bestAlmostIncludedSoFar with | Some (rightm:range,_,_) -> if posGt possm.End rightm.End || (posEq possm.End rightm.End && posGt possm.Start rightm.Start) then bestAlmostIncludedSoFar := Some (possm,env,ad) | _ -> bestAlmostIncludedSoFar := Some (possm,env,ad)) let resEnv = match !bestAlmostIncludedSoFar with | Some (m,env,ad) -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Chose refined-rightmost env covering range %s\n" (stringOfRange m)) env,ad | None -> match mostDeeplyNestedEnclosingScope with | Some (m,env,ad) -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Chose refined env covering range %s\n" (stringOfRange m)) env,ad | None -> Trace.PrintLine("CompilerServicesVerbose", fun () -> "Using fallback global env\n") (sFallback,AccessibleFromSomeFSharpCode) let pm = mkRange sFile cursorPos cursorPos resEnv,pm /// The items that come back from ResolveCompletionsInType are a bit /// noisy. Filter a few things out. /// /// e.g. prefer types to constructors for DataTipText let FilterItemsForCtors filterCtors items = let items = items |> List.filter (function (Item.CtorGroup _) when filterCtors = ResolveTypeNamesToTypeRefs -> false | _ -> true) items /// Looks at the exact name resolutions that occurred during type checking /// If 'membersByResidue' is specified, we look for members of the item obtained /// from the name resolution and filter them by the specified residue (?) let GetPreciseItemsFromNameResolution(line,colAtEndOfNames,membersByResidue,filterCtors, resolveOverloads, hasTextChangedSinceLastTypecheck) = let endOfNamesPos = Pos.fromVS line colAtEndOfNames Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseItemsFromNameResolution: line = %d, colAtEndOfNames = %d, endOfNamesPos = %s\n" line colAtEndOfNames (stringOfPos endOfNamesPos)) let quals = (match resolveOverloads with ResolveOverloads.Yes -> capturedNameResolutions | ResolveOverloads.No -> capturedResolutionsWithMethodGroups) |> ResizeArray.filter (fun cnr -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "Checking position %s = %s\n" (stringOfPos endOfNamesPos) (stringOfPos cnr.Pos)) posEq cnr.Pos endOfNamesPos) Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseItemsFromNameResolution: Found %d relevant quals\n" quals.Count) let items = quals |> ResizeArray.toList |> List.rev // Logic below expects the list to be in reverse order of resolution // Filter items to show only valid & return Some if there are any let returnItemsOfType items g denv (m:range) f = let items = items |> RemoveDuplicateItems g let items = items |> RemoveExplicitlySuppressed g let items = items |> FilterItemsForCtors filterCtors if nonNil items then Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseItemsFromNameResolution: Results in %d items!\n" items.Length) if hasTextChangedSinceLastTypecheck(textSnapshotInfo, Range.toVS m) then NameResResult.TypecheckStaleAndTextChanged // typecheck is stale, wait for second-chance IntelliSense to bring up right result else f(items, denv, m) else NameResResult.Empty match items, membersByResidue with // If we're looking for members using a residue, we'd expect only // a single item (pick the first one) and we need the residue (which may be "") | CNR(_,Item.Types(_,(typ::_)),_,denv,nenv,ad,m)::_, Some _ -> let items = ResolveCompletionsInType ncenv nenv (ConstraintSolver.IsApplicableMethApprox g amap m) m ad true typ returnItemsOfType items g denv m NameResResult.Members // Value reference from the name resolution. Primarilly to disallow "let x.$ = 1" // In most of the cases, value references can be obtained from expression typings or from environment, // so we wouldn't have to handle values here. However, if we have something like: // let varA = "string" // let varA = if b then 0 else varA. // then the expression typings get confused (thinking 'varA:int'), so we use name resolution even for usual values. | CNR(_, Item.Value(vref), occurence, denv, nenv, ad, m)::_, Some _ -> if (occurence = ItemOccurence.Binding || occurence = ItemOccurence.Pattern) then // Return empty list to stop further lookup - for value declarations NameResResult.Cancel(denv, m) else // If we have any valid items for the value, then return completions for its type now. // Adjust the type in case this is the 'this' pointer stored in a reference cell. let ty = StripSelfRefCell(g, vref.BaseOrThisInfo, vref.TauType) // patch accessibility domain to remove protected members if accessing NormalVal let ad = match vref.BaseOrThisInfo, ad with | ValBaseOrThisInfo.NormalVal, AccessibleFrom(paths, Some tcref) -> let tcref = generalizedTyconRef tcref // check that type of value is the same or subtype of tcref // yes - allow access to protected members // no - strip ability to access protected members if Microsoft.FSharp.Compiler.Typrelns.TypeFeasiblySubsumesType 0 g amap m tcref Microsoft.FSharp.Compiler.Typrelns.CanCoerce ty then ad else AccessibleFrom(paths, None) | _ -> ad let items = ResolveCompletionsInType ncenv nenv (ConstraintSolver.IsApplicableMethApprox g amap m) m ad false ty returnItemsOfType items g denv m NameResResult.Members // No residue, so the items are the full resolution of the name | CNR(_,_,_,denv,_,_,m) :: _, None -> Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseItemsFromNameResolution: No residue, precise results found\n") let items = items |> List.map (fun (CNR(_,item,_,_,_,_,_)) -> item) // "into" is special magic syntax, not an identifier or a library call. It is part of capturedNameResolutions as an // implementation detail of syntax coloring, but we should not report name resolution results for it, to prevent spurious QuickInfo. |> List.filter (function Item.CustomOperation(CustomOperations.Into,_,_) -> false | _ -> true) returnItemsOfType items g denv m NameResResult.Members | _ , _ -> NameResResult.Empty /// finds captured typing for the given position let GetExprTypingForPosition(endOfExprPos) = let quals = capturedExprTypings |> Seq.filter (fun (pos,typ,denv,_,_,_) -> // We only want expression types that end at the particular position in the file we are looking at. let isLocationWeCareAbout = posEq pos endOfExprPos // Get rid of function types. True, given a 2-arg curried function "f x y", it is legal to do "(f x).GetType()", // but you almost never want to do this in practice, and we choose not to offer up any intellisense for // F# function types. let isFunction = isFunTy denv.g typ Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseCompletionListFromExprTypings: isFunction=%A, isLocationWeCareAbout=%A\n" isFunction isLocationWeCareAbout) isLocationWeCareAbout && not isFunction) |> Seq.toArray let thereWereSomeQuals = not (Array.isEmpty quals) // filter out errors let quals = quals |> Array.filter (fun (_,typ,denv,_,_,_) -> not (isTyparTy denv.g typ && (destTyparTy denv.g typ).IsFromError)) thereWereSomeQuals, quals /// obtains captured typing for the given position /// if type of captured typing is record - returns list of record fields let GetRecdFieldsForExpr(r : range) = let _, quals = GetExprTypingForPosition(r.End) let bestQual = match quals with | [||] -> None | quals -> quals |> Array.tryFind (fun (_,_,_,_,_,rq) -> ignore(r) // for breakpoint posEq r.Start rq.Start) match bestQual with | Some (_,typ,denv,_nenv,ad,m) when isRecdTy denv.g typ -> let items = Nameres.ResolveRecordOrClassFieldsOfType ncenv m ad typ false Some (items, denv, m) | _ -> None /// Looks at the exact expression types at the position to the left of the /// residue then the source when it was typechecked. let GetPreciseCompletionListFromExprTypings(untypedParseInfo:UntypedParseInfo, line, colAtEndOfNames, filterCtors, hasTextChangedSinceLastTypecheck: (obj * Range -> bool)) = let endOfExprPos = Pos.fromVS line colAtEndOfNames Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseCompletionListFromExprTypings: line = %d, colAtEndOfNames = %d, endOfExprPos = %s\n" line colAtEndOfNames (stringOfPos endOfExprPos)) let thereWereSomeQuals, quals = GetExprTypingForPosition(endOfExprPos) match quals with | [| |] -> if thereWereSomeQuals then GetPreciseCompletionListFromExprTypingsResult.NoneBecauseThereWereTypeErrors else GetPreciseCompletionListFromExprTypingsResult.None | _ -> let bestQual, textChanged = match UntypedParseInfoImpl.GetUntypedParseResults untypedParseInfo with | { Input=Some(input) } -> match UntypedParseInfoImpl.GetRangeOfExprLeftOfDot(line,colAtEndOfNames,Some(input)) with // TODO we say "colAtEndOfNames" everywhere, but that's not really a good name ("foo . $" hit Ctrl-Space at $) | Some( ((sl,sc),_) as exprRange) -> if hasTextChangedSinceLastTypecheck(textSnapshotInfo, exprRange) then None, true // typecheck is stale, wait for second-chance IntelliSense to bring up right result else // See bug 130733. We have an up-to-date sync parse, and know the exact range of the prior expression. // The quals all already have the same ending position, so find one with a matching starting position, if it exists. // If not, then the stale typecheck info does not have a capturedExpressionTyping for this exact expression, and the // user can wait for typechecking to catch up and second-chance intellisense to give the right result. let qual = quals |> Array.tryFind (fun (_,_,_,_,_,r) -> ignore(r) // for breakpoint posEq (Pos.fromVS sl sc) r.Start) qual, false | None -> // TODO In theory I think we should never get to this code path; it would be nice to add an assert. // In practice, we do get here in some weird cases like "2.0 .. 3.0" and hitting Ctrl-Space in between the two dots of the range operator. // I wasn't able to track down what was happening in those werid cases, not worth worrying about, it doesn't manifest as a product bug or anything. None, false | _ -> None, false match bestQual with | Some bestQual -> let (_,typ,denv,nenv,ad,m) = bestQual let items = ResolveCompletionsInType ncenv nenv (ConstraintSolver.IsApplicableMethApprox g amap m) m ad false typ Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetPreciseCompletionListFromExprTypings: Results in %d items!\n" items.Length) let items = items |> RemoveDuplicateItems g let items = items |> RemoveExplicitlySuppressed g let items = items |> FilterItemsForCtors filterCtors GetPreciseCompletionListFromExprTypingsResult.Some(items,denv,m) | None -> if textChanged then GetPreciseCompletionListFromExprTypingsResult.NoneBecauseTypecheckIsStaleAndTextChanged else GetPreciseCompletionListFromExprTypingsResult.None /// Find items in the best naming environment. let GetEnvironmentLookupResolutions(line,colAtEndOfNamesAndResidue,plid,filterCtors,showObsolete) = Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetEnvironmentLookupResolutions: line = %d, colAtEndOfNamesAndResidue = %d, plid = %+A, showObsolete = %b\n" line colAtEndOfNamesAndResidue plid showObsolete) let cursorPos = Pos.fromVS line colAtEndOfNamesAndResidue let (nenv,ad),m = GetBestEnvForPos cursorPos let items = Nameres.ResolvePartialLongIdent ncenv nenv (ConstraintSolver.IsApplicableMethApprox g amap m) m ad plid showObsolete let items = items |> RemoveDuplicateItems g let items = items |> RemoveExplicitlySuppressed g let items = items |> FilterItemsForCtors filterCtors Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "GetEnvironmentLookupResolutions: found %d item groups by looking up long identifier chain in environment\n" (List.length items)) items, nenv.DisplayEnv, m /// Find record fields in the best naming environment. let GetClassOrRecordFieldsEnvironmentLookupResolutions(line,colAtEndOfNamesAndResidue, plid, (_residue : string option)) = let cursorPos = Pos.fromVS line colAtEndOfNamesAndResidue let (nenv, ad),m = GetBestEnvForPos cursorPos let items = Nameres.ResolvePartialLongIdentToClassOrRecdFields ncenv nenv m ad plid false let items = items |> RemoveDuplicateItems g let items = items |> RemoveExplicitlySuppressed g items, nenv.DisplayEnv,m /// Resolve a location and/or text to items. // Three techniques are used // - look for an exact known name resolution from type checking // - use the known type of an expression, e.g. (expr).Name, to generate an item list // - lookup an entire name in the name resolution environment, e.g. A.B.Name, to generate an item list // // The overall aim is to resolve as accurately as possible based on what we know from type inference let GetDeclItemsForNamesAtPosition(untypedParseInfoOpt : UntypedParseInfo option, origLongIdentOpt: string list option, residueOpt, line, lineStr:string, colAtEndOfNamesAndResidue, filterCtors, resolveOverloads, hasTextChangedSinceLastTypecheck: (obj * Range -> bool)) = use t = Trace.Call("CompilerServices","GetDeclItemsForNamesAtPosition", fun _->sprintf " plid=%+A residueOpt=%+A line=%d colAtEndOfNames=%d" origLongIdentOpt (residueOpt:option) line colAtEndOfNamesAndResidue) let GetBaseClassCandidates (denv : DisplayEnv) = function | Item.ModuleOrNamespaces _ -> true | Item.Types(_, ty::_) when (isClassTy denv.g ty) && not (isSealedTy denv.g ty) -> true | _ -> false let GetInterfaceCandidates (denv : DisplayEnv) = function | Item.ModuleOrNamespaces _ -> true | Item.Types(_, ty::_) when (isInterfaceTy denv.g ty) -> true | _ -> false /// Post-filter items to make sure they have precisely the right name /// This also checks that there are some remaining results /// exactMatchResidue = Some _ -- means that we are looking for exact matches let FilterRelevantItemsBy (exactMatchResidue : _ option) f (items, denv, m) = // can throw if type is in located in non-resolved CCU: i.e. bigint if reference to System.Numerics is absent let f denv item = try f denv item with _ -> false // Return only items with the specified name let filterDeclItemsByResidue residue items = items |> List.filter (fun item -> let n1 = DisplayNameOfItem g item Trace.PrintLine("CompilerServicesVerbose", fun () -> sprintf "\nn1 = <<<%s>>>\nn2 = <<<%s>>>\n" n1 residue) if not (f denv item) then false else match item with | Item.Types _ | Item.CtorGroup _ -> residue + "Attribute" = n1 || residue = n1 | _ -> residue = n1 ) // Are we looking for items with precisely the given name? if nonNil items && exactMatchResidue.IsSome then Trace.PrintLine("CompilerServices", fun _ -> sprintf "looking through %d items before filtering by residue\n" (List.length items)) let items = items |> filterDeclItemsByResidue exactMatchResidue.Value if nonNil items then Some(items,denv,m) else None else // When (items = []) we must returns Some([],..) and not None // because this value is used if we want to stop further processing (e.g. let x.$ = ...) let items = List.filter (f denv) items Some(items, denv, m) let loc = match colAtEndOfNamesAndResidue with | pastEndOfLine when pastEndOfLine >= lineStr.Length -> lineStr.Length | atDot when lineStr.[atDot] = '.' -> atDot + 1 | atStart when atStart = 0 -> 0 | otherwise -> otherwise - 1 let FindInEnv(plid, showObsolete) = GetEnvironmentLookupResolutions(line,loc,plid,filterCtors, showObsolete) let FindRecordFieldsInEnv(plid, residue) = GetClassOrRecordFieldsEnvironmentLookupResolutions(line, loc, plid, residue) match UntypedParseInfoImpl.TryGetCompletionContext(line, colAtEndOfNamesAndResidue, untypedParseInfoOpt) with | Some Invalid -> None | Some (CompletionContext.Inherit(InheritanceContext.Class, (plid, _))) -> FindInEnv(plid, false) |> FilterRelevantItemsBy None GetBaseClassCandidates | Some (CompletionContext.Inherit(InheritanceContext.Interface, (plid, _))) -> FindInEnv(plid, false) |> FilterRelevantItemsBy None GetInterfaceCandidates | Some (CompletionContext.Inherit(InheritanceContext.Unknown, (plid, _))) -> FindInEnv(plid, false) |> FilterRelevantItemsBy None (fun denv t -> (GetBaseClassCandidates denv t) || (GetInterfaceCandidates denv t)) | Some(CompletionContext.RecordField(RecordContext.New(plid, residue))) -> FindRecordFieldsInEnv(plid, residue) |> Some | Some(CompletionContext.RecordField(RecordContext.CopyOnUpdate(r, (plid, residue)))) -> match GetRecdFieldsForExpr(r) with | None -> FindRecordFieldsInEnv(plid, residue) |> Some | x -> x | Some(CompletionContext.RecordField(RecordContext.Constructor(typeName))) -> FindRecordFieldsInEnv([typeName], None) |> Some | cc -> let findFirstNonWsPos i = if i >= lineStr.Length then None else let mutable p = i while p >= 0 && System.Char.IsWhiteSpace(lineStr.[p]) do p <- p - 1 if p >= 0 then Some p else None // are last two chars (except whitespaces) = ".." let isLikeRangeOp = match findFirstNonWsPos (colAtEndOfNamesAndResidue - 1) with | Some x when x >= 1 && lineStr.[x] = '.' && lineStr.[x - 1] = '.' -> true | _ -> false // if last two chars are .. and we are not in range operator context - no completion if isLikeRangeOp && not (cc = Some (CompletionContext.RangeOperator)) then None else // Try to use the exact results of name resolution during type checking to generate the results // This is based on position (i.e. colAtEndOfNamesAndResidue). This is not used if a residueOpt is given. let nameResItems = match residueOpt with | None -> GetPreciseItemsFromNameResolution(line, colAtEndOfNamesAndResidue, None, filterCtors,resolveOverloads, hasTextChangedSinceLastTypecheck) | Some residue -> // deals with cases when we have spaces between dot and\or identifier, like A . $ // if this is our case - then wen need to locate end position of the name skipping whitespaces // this allows us to handle cases like: let x . $ = 1 // colAtEndOfNamesAndResidue is 1-based so at first we need to convert it to 0-based match findFirstNonWsPos (colAtEndOfNamesAndResidue - 1) with | Some p when lineStr.[p] = '.' -> match findFirstNonWsPos (p - 1) with | Some colAtEndOfNames -> let colAtEndOfNames = colAtEndOfNames + 1 // convert 0-based to 1-based GetPreciseItemsFromNameResolution(line, colAtEndOfNames, Some(residue), filterCtors,resolveOverloads, hasTextChangedSinceLastTypecheck) | None -> NameResResult.Empty | _ -> NameResResult.Empty // Normalize to form A.B.C.D where D is the residue. It may be empty for "A.B.C." // residueOpt = Some when we are looking for the exact match let plid, exactMatchResidueOpt = match origLongIdentOpt, residueOpt with | None, _ -> [], None | Some(origLongIdent), Some _ -> origLongIdent, None | Some(origLongIdent), None -> assert (nonNil origLongIdent) // note: as above, this happens when we are called for "precise" resolution - (F1 keyword, data tip etc..) let plid, residue = List.frontAndBack origLongIdent plid, Some residue /// Post-filter items to make sure they have precisely the right name /// This also checks that there are some remaining results let (|FilterRelevantItems|_|) orig = FilterRelevantItemsBy exactMatchResidueOpt (fun _ _ -> true) orig match nameResItems with | NameResResult.TypecheckStaleAndTextChanged -> None // second-chance intellisense will try again | NameResResult.Cancel(denv,m) -> Some([], denv, m) | NameResResult.Members(FilterRelevantItems(items)) -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "GetDeclItemsForNamesAtPosition: lookup based on name resolution results successful, #items = %d, exists ctor = %b\n" (p13 items).Length (items |> p13 |> List.exists (function Item.CtorGroup _ -> true | _ -> false))) Some items | _ -> match origLongIdentOpt with | None -> None | Some _ -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "GetDeclItemsForNamesAtPosition: plid = %+A, residue = %+A, colAtEndOfNamesAndResidue = %+A\n" plid exactMatchResidueOpt colAtEndOfNamesAndResidue) // Try to use the type of the expression on the left to help generate a completion list let mutable thereIsADotInvolved = false let qualItems = match untypedParseInfoOpt with | None -> // Note, you will get here if the 'reason' is not CompleteWord/MemberSelect/DisplayMemberList, as those are currently the // only reasons we do a sync parse to have the most precise and likely-to-be-correct-and-up-to-date info. So for example, // if you do QuickInfo hovering over A in "f(x).A()", you will only get a tip if typechecking has a name-resolution recorded // for A, not if merely we know the capturedExpressionTyping of f(x) and you very recently typed ".A()" - in that case, // you won't won't get a tip until the typechecking catches back up. GetPreciseCompletionListFromExprTypingsResult.None | Some(upi) -> // See ServiceUntypedParse - GetRangeOfExprLeftOfDot and TryFindExpressionASTLeftOfDotLeftOfCursor are similar, but different, can we refactor commonality? // match UntypedParseInfoImpl.GetRangeOfExprLeftOfDot(line,colAtEndOfNamesAndResidue,upi.ParseTree) with // | Some((_,_),(el,ec)) -> // thereIsADotInvolved <- true // GetPreciseCompletionListFromExprTypings(upi, el-1, ec, filterCtors) match UntypedParseInfoImpl.TryFindExpressionASTLeftOfDotLeftOfCursor(line,colAtEndOfNamesAndResidue,upi.ParseTree) with | Some(pos,_) -> thereIsADotInvolved <- true GetPreciseCompletionListFromExprTypings(upi, pos.Line-1, pos.Column, filterCtors, hasTextChangedSinceLastTypecheck) | None -> // Can get here in a case like: if "f xxx yyy" is legal, and we do "f xxx y" // We have no interest in expression typings, those are only useful for dot-completion. We want to fallback // to "Use an environment lookup as the last resort" below GetPreciseCompletionListFromExprTypingsResult.None match qualItems,thereIsADotInvolved with | GetPreciseCompletionListFromExprTypingsResult.Some(FilterRelevantItems(items)), _ // Initially we only use the expression typings when looking up, e.g. (expr).Nam or (expr).Name1.Nam // These come through as an empty plid and residue "". Otherwise we try an environment lookup // and then return to the qualItems. This is because the expression typings are a little inaccurate, primarily because // it appears we're getting some typings recorded for non-atomic expressions like "f x" when (match plid with [] -> true | _ -> false) -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "GetDeclItemsForNamesAtPosition: lookup based on expression typings successful\n") Some items | GetPreciseCompletionListFromExprTypingsResult.NoneBecauseThereWereTypeErrors, _ -> // There was an error, e.g. we have "." and there is an error determining the type of // In this case, we don't want any of the fallback logic, rather, we want to produce zero results. None | GetPreciseCompletionListFromExprTypingsResult.NoneBecauseTypecheckIsStaleAndTextChanged, _ -> // we want to report no result and let second-chance intellisense kick in None | _, true when (match plid with [] -> true | _ -> false) -> // If the user just pressed '.' after an _expression_ (not a plid), it is never right to show environment-lookup top-level completions. // The user might by typing quickly, and the LS didn't have an expression type right before the dot yet. // Second-chance intellisense will bring up the correct list in a moment. None | _ -> // Use an environment lookup as the last resort let envItems = FindInEnv(plid, residueOpt.IsSome) match nameResItems, envItems, qualItems with // First, use unfiltered name resolution items, if they're not empty | NameResResult.Members(items, denv, m), _, _ when nonNil items -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "GetDeclItemsForNamesAtPosition: lookup based on name resolution results successful, #items = %d, exists ctor = %b\n" (items).Length (items |> List.exists (function Item.CtorGroup _ -> true | _ -> false))) Some(items, denv, m) // If we have nonempty items from environment that were resolved from a type, then use them... // (that's better than the next case - here we'd return 'int' as a type) | _, FilterRelevantItems(items, denv, m), _ when nonNil items -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "GetDeclItemsForNamesAtPosition: lookup based on name and environment successful\n") Some(items, denv, m) // Try again with the qualItems | _, _, GetPreciseCompletionListFromExprTypingsResult.Some(FilterRelevantItems(items)) -> Some(items) | _ -> None // Return 'false' if this is not a completion item valid in an interface file. let IsValidSignatureFileItem item = match item with | Item.Types _ | Item.ModuleOrNamespaces _ -> true | _ -> false let filterIntellisenseCompletionsBasedOnParseContext untypedParseInfoOpt line col items = match untypedParseInfoOpt with | None -> items | Some t -> // visitor to see if we are in an "open" declaration in the parse tree let visitor = { new AstTraversal.AstVisitorBase() with override this.VisitExpr(_path, _traverseSynExpr, defaultTraverse, expr) = None // don't need to keep going, 'open' declarations never appear inside Exprs override this.VisitModuleDecl(defaultTraverse, decl) = match decl with | SynModuleDecl.Open(_longIdent, m) -> // in theory, this means we're "in an open" // in practice, because the parse tree/walkers do not handle attributes well yet, need extra check below to ensure not e.g. $here$ // open System // [ defaultTraverse decl } match AstTraversal.Traverse(line, col, t, visitor) with | None -> items | Some _ -> items |> List.filter (function | Item.ModuleOrNamespaces _ -> true | _ -> false) member x.GetDeclarations (untypedParseInfoOpt:UntypedParseInfo option, line, lineStr, colAtEndOfNames, (names,residue):NamesWithResidue, hasTextChangedSinceLastTypecheck: (obj * Range -> bool)) : DeclarationSet = use t = Trace.Call("CompilerServices","GetDeclarations", fun _->sprintf " line=%+A,colAtEndOfNames=%+A,names=%+A" line colAtEndOfNames names) let isInterfaceFile = SourceFileImpl.IsInterfaceFile sFile ErrorScope.Protect Range.range0 (fun () -> match GetDeclItemsForNamesAtPosition(untypedParseInfoOpt, Some names, Some residue, line, lineStr, colAtEndOfNames, ResolveTypeNamesToCtors, ResolveOverloads.Yes, hasTextChangedSinceLastTypecheck) with | None -> DeclarationSet.Empty | Some(items,denv,m) -> let items = items |> filterIntellisenseCompletionsBasedOnParseContext (untypedParseInfoOpt |> Option.bind (fun x -> x.ParseTree)) line colAtEndOfNames let items = if isInterfaceFile then items |> List.filter IsValidSignatureFileItem else items DeclarationSet.Create(infoReader,m,denv,items,syncop,checkAlive)) (fun msg -> DeclarationSet.Error msg) member scope.GetReferenceResolutionDataTipText(line,col) : DataTipText = let pos = Pos.fromVS line col let lineIfExists(append) = if not(String.IsNullOrEmpty(append)) then append.Trim([|' '|])+"\n" else "" let isPosMatch(pos, ar:AssemblyReference) : bool = let isRangeMatch = (Range.rangeContainsPos ar.Range pos) let isNotSpecialRange = (ar.Range <> rangeStartup) && (ar.Range <> range0) && (ar.Range <> rangeCmdArgs) let isMatch = isRangeMatch && isNotSpecialRange isMatch let dataTipOfReferences() = let matches = match loadClosure with | None -> [] | Some(loadClosure) -> loadClosure.References |> List.map snd |> List.concat |> List.filter(fun ar->isPosMatch(pos, ar.originalReference)) match matches with | resolved::_ // Take the first seen | [resolved] -> let originalReferenceName = match resolved.originalReference with AssemblyReference (_,nm) -> nm let resolvedPath = // Don't show the resolved path if it is identical to what was referenced. if originalReferenceName = resolved.resolvedPath then String.Empty else resolved.resolvedPath let tip = match resolved.resolvedFrom with | AssemblyFolders -> lineIfExists(resolvedPath) + lineIfExists(resolved.fusionName) + (FSComp.SR.assemblyResolutionFoundByAssemblyFoldersKey()) | AssemblyFoldersEx -> lineIfExists(resolvedPath) + lineIfExists(resolved.fusionName) + (FSComp.SR.assemblyResolutionFoundByAssemblyFoldersExKey()) | TargetFrameworkDirectory -> lineIfExists(resolvedPath) + lineIfExists(resolved.fusionName) + (FSComp.SR.assemblyResolutionNetFramework()) | Unknown -> // Unknown when resolved by plain directory search without help from MSBuild resolver. lineIfExists(resolvedPath) + lineIfExists(resolved.fusionName) | RawFileName -> lineIfExists(resolved.fusionName) | GlobalAssemblyCache -> lineIfExists(resolved.fusionName) + (FSComp.SR.assemblyResolutionGAC())+ "\n" + lineIfExists(resolved.redist) | Path _ -> lineIfExists(resolvedPath) + lineIfExists(resolved.fusionName) DataTipText [DataTipElement(tip.TrimEnd([|'\n'|]) ,XmlCommentNone)] | [] -> DataTipText [] ErrorScope.Protect Range.range0 dataTipOfReferences (fun err -> DataTipText [DataTipElementCompositionError err]) // GetDataTipText: return the "pop up" (or "Quick Info") text given a certain context. member x.GetDataTipText line lineStr colAtEndOfNames names : DataTipText = use t = Trace.Call("CompilerServices","GetDataTipText", fun _->sprintf " line=%+A,idx=%+A,names=%+A" line colAtEndOfNames names) let Compute() = ErrorScope.Protect Range.range0 (fun () -> match GetDeclItemsForNamesAtPosition(None,Some(names),None,line,lineStr,colAtEndOfNames,ResolveTypeNamesToCtors,ResolveOverloads.Yes,fun _ -> false) with | None -> DataTipText [] | Some(items,denv,m) -> DataTipText(items |> List.map (FormatDescriptionOfItem false infoReader m denv ))) (fun err -> DataTipText [DataTipElementCompositionError err]) // See devdiv bug 646520 for rationale behind truncating and caching these quick infos (they can be big!) let key = line,colAtEndOfNames,lineStr match getDataTipTextCache.TryGet key with | Some res -> res | None -> let res = Compute() getDataTipTextCache.Put(key,res) res member x.GetF1Keyword (line, lineStr, colAtEndOfNames, names) : string option = use t = Trace.Call("CompilerServices","GetF1Keyword", fun _->sprintf " line=%+A,idx=%+A,names=%+A" line colAtEndOfNames names) ErrorScope.Protect Range.range0 (fun () -> match GetDeclItemsForNamesAtPosition(None, Some names, None, line, lineStr, colAtEndOfNames, ResolveTypeNamesToCtors, ResolveOverloads.No, fun _ -> false) with // F1 Keywords do not distiguish between overloads | None -> None | Some(items,_,_) -> match items with | [] -> None | [item] -> GetF1Keyword item | _ -> // handle new Type() let allTypes, constr, typ = List.fold (fun (allTypes,constr,typ) item -> match item, constr, typ with | (Item.Types _) as t, _, None -> allTypes, constr, Some t | (Item.Types _), _, _ -> allTypes, constr, typ | (Item.CtorGroup _), None, _ -> allTypes, Some item, typ | _ -> false, None, None) (true,None,None) items match allTypes, constr, typ with | true, Some (Item.CtorGroup(_, _) as item), _ -> GetF1Keyword item | true, _, Some typ -> GetF1Keyword typ | _ -> None ) (fun _ -> None) member scope.GetMethods (line, lineStr, colAtEndOfNames, namesOpt) : MethodOverloads = ErrorScope.Protect Range.range0 (fun () -> use t = Trace.Call("CompilerServices", "GetMethods", fun _ -> sprintf "line = %d, idx = %d, names = %+A" line colAtEndOfNames namesOpt) match GetDeclItemsForNamesAtPosition(None,namesOpt,None,line,lineStr,colAtEndOfNames,ResolveTypeNamesToCtors,ResolveOverloads.No, fun _ -> false) with | None -> MethodOverloads("",[| |]) | Some(items,denv,m) -> MethodOverloads.Create(infoReader,m,denv,items)) (fun msg -> MethodOverloads(msg,[| |])) member scope.GetDeclarationLocation (line : int, lineStr : string, idx : int, names : Names, tag : tokenId, isDecl : bool) : FindDeclResult = match tag with | TOKEN_IDENT -> match GetDeclItemsForNamesAtPosition (None,Some(names), None, line, lineStr, idx, ResolveTypeNamesToCtors,ResolveOverloads.Yes, fun _ -> false) with | None | Some ([], _, _) -> FindDeclResult.DeclNotFound FindDeclFailureReason.Unknown | Some (h :: _ , _, _) -> let h' = match h with | Item.MethodGroup (_, (ILMeth (_,ilinfo,_)) :: _) // rangeOfItem, ccuOfItem don't work on IL methods or fields; we'll be okay, though, looking up the method's *type* instead because they've the same CCU / source file | Item.CtorGroup (_, (ILMeth (_,ilinfo,_)) :: _) -> let ty = match ilinfo with ILMethInfo (typeInfo,_,_,_) -> typeInfo.ToType | ILFSMethInfo (t,_,_,_) -> TType_app(t,[]) Item.Types ("", [ ty ]) | Item.ILField (ILFieldInfo (typeInfo, _)) -> Item.Types ("", [ typeInfo.ToType ]) | _ -> h let fail defaultReason h = match h with #if EXTENSIONTYPING | Params.ItemIsTypeWithStaticArguments g (tcref) -> FindDeclResult.DeclNotFound (FindDeclFailureReason.ProvidedType(tcref.DisplayName)) | Item.CtorGroup(name, ProvidedMeth(_)::_) | Item.MethodGroup(name, ProvidedMeth(_)::_) | Item.Property(name, ProvidedProp(_)::_) -> FindDeclResult.DeclNotFound (FindDeclFailureReason.ProvidedMember(name)) | Item.Event(ProvidedEvent(_) as e) -> FindDeclResult.DeclNotFound (FindDeclFailureReason.ProvidedMember(e.EventName)) | Item.ILField(ProvidedField(_) as f) -> FindDeclResult.DeclNotFound (FindDeclFailureReason.ProvidedMember(f.FieldName)) #endif | _ -> FindDeclResult.DeclNotFound defaultReason match rangeOfItem g isDecl h' with | None -> fail FindDeclFailureReason.Unknown h' | Some m -> if verbose then dprintf "tcConfig.fsharpBinariesDir = '%s'\n" sTcConfig.fsharpBinariesDir let filename = fileNameOfItem g (Some sProjectDir) m h' if FileSystem.SafeExists filename then FindDeclResult.DeclFound ((m.StartLine - 1, m.StartColumn), filename) else fail FindDeclFailureReason.NoSourceCode h' // provided items may have TypeProviderDefinitionLocationAttribute that binds them to some location | _ -> FindDeclResult.DeclNotFound FindDeclFailureReason.Unknown // Not, this does not have to be a SyncOp, it can be called from any thread member scope.GetExtraColorizations() = [| for cnr in capturedNameResolutions do match cnr with /// 'seq' in 'seq { ... }' gets colored as keywords | CNR(_, (Item.Value vref), ItemOccurence.Use, _, _, _, m) when valRefEq g g.seq_vref vref -> yield ((Pos.toVS m.Start, Pos.toVS m.End), TokenColorKind.Keyword) /// custom builders, custom operations get colored as keywords | CNR(_, (Item.CustomBuilder _ | Item.CustomOperation _), ItemOccurence.Use, _, _, _, m) -> yield ((Pos.toVS m.Start, Pos.toVS m.End), TokenColorKind.Keyword) #if COLORIZE_TYPES /// types get colored as types when they occur in syntactic types or custom attributes /// typevariables get colored as types when they occur in syntactic types custom builders, custom operations get colored as keywords | CNR(_, (Item.TypeVar _ | Item.Types _ | Item.UnqualifiedType _) , (ItemOccurence.UseInType | ItemOccurence.UseInAttribute), _, _, _, m) -> yield ((Pos.toVS m.Start, Pos.toVS m.End), TokenColorKind.TypeName) #endif | _ -> () |] module internal Parser = /// Error handler for parsing & type checking type ErrorHandler(reportErrors, mainInputFileName, tcConfig: TcConfig, source: string) = let mutable tcConfig = tcConfig let errorsAndWarningsCollector = new ResizeArray<_>() let mutable errorCount = 0 // We'll need number of lines for adjusting error messages at EOF let fileInfo = (source |> Seq.sumBy (fun c -> if c = '\n' then 1 else 0), // number of lines in the source file source.Length - source.LastIndexOf("\n",StringComparison.Ordinal) - 1) // length of the last line // This function gets called whenever an error happens during parsing or checking let errorSink warn (exn:PhasedError) = // Sanity check here. The phase of an error should be in a phase known to the language service. let exn = if not(exn.IsPhaseInCompile()) then // Reaching this point means that the error would be sticky if we let it prop up to the language service. // Assert and recover by replacing phase with one known to the language service. System.Diagnostics.Debug.Assert(false, sprintf "The subcategory '%s' seen in an error should not be seen by the language service" (exn.Subcategory())) {exn with Phase=BuildPhase.TypeCheck} else exn if reportErrors then let report exn = let warn = warn && not (ReportWarningAsError tcConfig.globalWarnLevel tcConfig.specificWarnOff tcConfig.specificWarnOn tcConfig.specificWarnAsError tcConfig.specificWarnAsWarn tcConfig.globalWarnAsError exn) if (not warn || ReportWarning tcConfig.globalWarnLevel tcConfig.specificWarnOff tcConfig.specificWarnOn exn) then let oneError trim exn = // We use the first line of the file as a fallbackRange for reporting unexpected errors. // Not ideal, but it's hard to see what else to do. let fallbackRange = rangeN mainInputFileName 1 let ei = ErrorInfo.CreateFromExceptionAndAdjustEof(exn,warn,trim,fallbackRange,fileInfo) if (ei.FileName=mainInputFileName) || (ei.FileName=Microsoft.FSharp.Compiler.Env.DummyFileNameForRangesWithoutASpecificLocation) then Trace.PrintLine("UntypedParseAux", fun _ -> sprintf "Reporting one error: %s\n" (ei.ToString())) errorsAndWarningsCollector.Add ei if not warn then errorCount <- errorCount + 1 let mainError,relatedErrors = Build.SplitRelatedErrors exn oneError false mainError List.iter (oneError true) relatedErrors match exn with #if EXTENSIONTYPING | {Exception = (:? TypeProviderError as tpe)} -> tpe.Iter (fun e -> let newExn = {exn with Exception = e} report newExn ) #endif | e -> report e let errorLogger = { new ErrorLogger("ErrorHandler") with member x.WarnSinkImpl exn = errorSink true exn member x.ErrorSinkImpl exn = errorSink false exn member x.ErrorCount = errorCount } // Public members member x.ErrorLogger = errorLogger member x.CollectedErrorsAndWarnings = errorsAndWarningsCollector.ToArray() member x.ErrorCount = errorCount member x.TcConfig with set tc = tcConfig <- tc member x.AnyErrors = errorCount > 0 /// Report an unexpect (bug) exception. let ReportUnexpectedException exn = match exn with | WrappedError(wrappedExn,_) -> System.Diagnostics.Debug.Assert(false, sprintf "Bug seen in service-level request. Underlying wrapped exception was %s\n" (wrappedExn.ToString())) Trace.PrintLine("CompilerServices", fun _ -> sprintf "Underlying wrapped exception was %s\n" (wrappedExn.ToString())) | _ -> () System.Diagnostics.Debug.Assert(false, sprintf "Bug seen in service-level request: %s\n" (exn.ToString())) Trace.PrintLine("CompilerServices", fun _ -> sprintf "Unexpected error %s\n" (exn.ToString())) /// ParseSource builds all the information necessary to report errors, match braces and build scopes let ParseSource (source: string, matchBracesOnly: bool, reportErrors: bool, mainInputFileName: string, projectSourceFiles: string list, tcConfig: TcConfig) = try Trace.PrintLine("CompilerServices", fun _ -> sprintf "Service.parseSource %s, matchBraces = %b, reportErrors = %b" mainInputFileName matchBracesOnly reportErrors) // Initialize the error handler let errHandler = new ErrorHandler(reportErrors, mainInputFileName, tcConfig, source) // Very old comment: This helps reason=MethodTip to work. reason=MethodTip // calls with only partial text. Preumably adding this causes the final EndParameters // call to refer to a different line than the StartParameters call we're really interested in // Or something like that. let source = source + "\n\n\n" let lexbuf = UnicodeLexing.StringAsLexbuf source // Colelctor for parens matching let matchPairRef = new ResizeArray<_>() use unwindEL = PushErrorLoggerPhaseUntilUnwind(fun _oldLogger -> errHandler.ErrorLogger) use unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) // Errors on while parsing project arguments let parseResult = if verbose then dprintf "Parsing, text = \n<<<\n%s\n>>>\n" source // If we're editing a script then we define INTERACTIVE otherwise COMPILED. Since this parsing for intellisense we always // define EDITING let conditionalCompilationDefines = SourceFileImpl.AdditionalDefinesForUseInEditor(mainInputFileName) @ tcConfig.conditionalCompilationDefines let lightSyntaxStatusInital = tcConfig.ComputeLightSyntaxInitialStatus mainInputFileName let lightSyntaxStatus = LightSyntaxStatus(lightSyntaxStatusInital,true) // Note: we don't really attempt to intern strings across a large scope let lexResourceManager = new Lexhelp.LexResourceManager() let lexargs = mkLexargs(mainInputFileName, conditionalCompilationDefines, lightSyntaxStatus, lexResourceManager, ref [], errHandler.ErrorLogger) Lexhelp.usingLexbufForParsing (lexbuf, mainInputFileName) (fun lexbuf -> try let skip = true let tokenizer = Lexfilter.LexFilter (lightSyntaxStatus, tcConfig.compilingFslib, Lexer.token lexargs skip, lexbuf) let lexfun = tokenizer.Lexer if matchBracesOnly then // Quick bracket matching parse let parenTokensBalance t1 t2 = match t1,t2 with | (LPAREN,RPAREN) | (LPAREN,RPAREN_IS_HERE) | (LBRACE,RBRACE) | (LBRACE,RBRACE_IS_HERE) | (SIG,END) | (STRUCT,END) | (LBRACK_BAR,BAR_RBRACK) | (LBRACK,RBRACK) | (LBRACK_LESS,GREATER_RBRACK) | (BEGIN,END) -> true | (LQUOTE q1,RQUOTE q2) when q1 = q2 -> true | _ -> false let rec matchBraces stack = match lexfun lexbuf,stack with | tok2,((tok1,m1) :: stack') when parenTokensBalance tok1 tok2-> if matchBracesOnly then matchPairRef.Add (Range.toVS m1, Range.toVS lexbuf.LexemeRange) matchBraces stack' | ((LPAREN | LBRACE | LBRACK | LBRACK_BAR | LQUOTE _ | LBRACK_LESS) as tok),_ -> matchBraces ((tok,lexbuf.LexemeRange) :: stack) | (EOF _ | LEX_FAILURE _),_ -> () | _ -> matchBraces stack matchBraces [] None else let isLastCompiland = tcConfig.target.IsExe && projectSourceFiles.Length >= 1 && System.String.Compare(List.last projectSourceFiles,mainInputFileName,StringComparison.CurrentCultureIgnoreCase)=0 let isLastCompiland = isLastCompiland || Build.IsScript(mainInputFileName) let parseResult = ParseInput(lexfun,errHandler.ErrorLogger,lexbuf,None,mainInputFileName,isLastCompiland) Some parseResult with e -> Trace.PrintLine("CompilerServices", fun _ -> sprintf "Could not recover from errors while parsing: %s\n" (e.ToString())) errHandler.ErrorLogger.ErrorR(e) None) Trace.PrintLine("CompilerServices", fun _ -> sprintf "#errors = %d\n" errHandler.CollectedErrorsAndWarnings.Length) errHandler.CollectedErrorsAndWarnings, matchPairRef.ToArray(), parseResult, errHandler.AnyErrors with exn -> ReportUnexpectedException exn reraise() /// An accumulator for the results being emitted into the tcSink. type TcResultsSinkImpl() = let capturedEnvs = new ResizeArray<_>(100) let capturedExprTypings = new ResizeArray<_>(100) let capturedNameResolutions = new ResizeArray<_>(100) let capturedNameResolutionIdentifiers = new HashSet( { new IEqualityComparer<_> with member __.GetHashCode((p:pos,i)) = p.Line + 101 * p.Column + hash i member __.Equals((p1,i1),(p2,i2)) = posEq p1 p2 && i1 = i2 } ) let capturedMethodGroupResolutions = new ResizeArray<_>(100) let allowedRange (m:range) = not m.IsSynthetic interface Nameres.ITypecheckResultsSink with member sink.NotifyEnvWithScope(m,nenv,ad) = if allowedRange m then capturedEnvs.Add((m,nenv,ad)) member sink.NotifyExprHasType(endPos,ty,denv,nenv,ad,m) = if allowedRange m then capturedExprTypings.Add((endPos,ty,denv,nenv,ad,m)) member sink.NotifyNameResolution(endPos,item,itemMethodGroup,occurenceType,denv,nenv,ad,m) = // Desugaring some F# constructs (notably computation expressions with custom operators) // results in duplication of textual variables. So we ensure we never record two name resolutions // for the same identifier at the same location. if allowedRange m then let alreadyDone = match item with | Item.Value vref -> let key = (endPos, vref.DisplayName) let res = capturedNameResolutionIdentifiers.Contains key if not res then capturedNameResolutionIdentifiers.Add key |> ignore res | _ -> false if not alreadyDone then capturedNameResolutions.Add((endPos,item,occurenceType,denv,nenv,ad,m)) capturedMethodGroupResolutions.Add((endPos,itemMethodGroup,occurenceType,denv,nenv,ad,m)) member x.CapturedEnvs = capturedEnvs member x.CapturedExprTypings = capturedExprTypings member x.CapturedNameResolutions = capturedNameResolutions member x.CapturedMethodGroupResolutions = capturedMethodGroupResolutions /// Indicates if the type check got aborted because it is no longer relevant. type TypeCheckAborted = Yes | No // Type check a single file against an initial context, gleaning both errors and intellisense information. let TypeCheckSource (parseResult: ParsedInput option, source: string, mainInputFileName: string, projectFileName: string, tcConfig: TcConfig, tcGlobals: TcGlobals, tcImports: TcImports, tcState: TcState, loadClosure: LoadClosure option, // These are the errors and warnings seen by the background compiler for the entire antecedant backgroundErrors: (PhasedError * bool) list, syncop: (unit->unit)->unit, checkAlive : (unit -> bool), isResultObsolete: unit->bool, parseHadErrors : bool, textSnapshotInfo : obj) = try let projectDir = Filename.directoryName (if projectFileName = "" then mainInputFileName else projectFileName) Trace.PrintLine("CompilerServices", fun _ -> sprintf "Parser.TypeCheckSource %s, projectDir = %s" mainInputFileName projectDir) match parseResult with // When processing the following cases, we don't need to type-check | None -> [| |], None, TypeCheckAborted.Yes // Run the type checker... | Some parsedMainInput -> // Initialize the error handler let errHandler = new ErrorHandler(true,mainInputFileName,tcConfig, source) use unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _oldLogger -> errHandler.ErrorLogger) use unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.TypeCheck) // Apply nowarns to tcConfig (may generate errors, so ensure errorLogger is installed) let tcConfig = ApplyNoWarnsToTcConfig tcConfig (parsedMainInput,Path.GetDirectoryName mainInputFileName) // update the error handler with the modified tcConfig errHandler.TcConfig <- tcConfig // Play background errors and warnings for this file. backgroundErrors |> List.iter(fun (err,iserr) ->if iserr then errorSink err else warnSink err) // If additional references were brought in by the preprocessor then we need to process them match loadClosure with | Some loadClosure -> // Play unresolved references for this file. tcImports.ReportUnresolvedAssemblyReferences(loadClosure.UnresolvedReferences) // If there was a loadClosure, replay the errors and warnings loadClosure.RootErrors |> List.iter errorSink loadClosure.RootWarnings |> List.iter warnSink let fileOfBackgroundError err = (match RangeOfError (fst err) with Some m-> m.FileName | None -> null) let sameFile file hashLoadInFile = (0 = String.Compare(fst hashLoadInFile, file, StringComparison.OrdinalIgnoreCase)) // walk the list of #loads and keep the ones for this file. let hashLoadsInFile = loadClosure.SourceFiles |> List.filter(fun (_,ms) -> ms<>[]) // #loaded file, ranges of #load let hashLoadBackgroundErrors, otherBackgroundErrors = backgroundErrors |> List.partition (fun backgroundError -> hashLoadsInFile |> List.exists (sameFile (fileOfBackgroundError backgroundError))) // Create single errors for the #load-ed files. // Group errors and warnings by file name. let hashLoadBackgroundErrorsGroupedByFileName = hashLoadBackgroundErrors |> List.map(fun err -> fileOfBackgroundError err,err) |> List.groupByFirst // fileWithErrors, error list // Join the sets and report errors. // It is by-design that these messages are only present in the language service. A true build would report the errors at their // spots in the individual source files. for hashLoadInFile in hashLoadsInFile do for errorGroupedByFileName in hashLoadBackgroundErrorsGroupedByFileName do if sameFile (fst errorGroupedByFileName) hashLoadInFile then for rangeOfHashLoad in snd hashLoadInFile do // Handle the case of two #loads of the same file let errorsAndWarnings = snd errorGroupedByFileName |> List.map(fun (pe,f)->pe.Exception,f) // Strip the build phase here. It will be replaced, in total, with TypeCheck let errors,warnings = errorsAndWarnings |> List.partition snd let errors,warnings = errors |> List.map fst, warnings |> List.map fst let message = HashLoadedSourceHasIssues(warnings,errors,rangeOfHashLoad) if errors=[] then warning(message) else errorR(message) // Replay other background errors. for (phasedError,isWarning) in otherBackgroundErrors do if isWarning then warning phasedError.Exception else errorR phasedError.Exception | None -> // For non-scripts, check for disallow #r and #load. ApplyMetaCommandsFromInputToTcConfig tcConfig (parsedMainInput,Path.GetDirectoryName mainInputFileName) |> ignore if verbose then tcConfig.includes |> List.iter (fun p -> Trace.PrintLine("CompilerServicesVerbose", fun _ -> sprintf "include directory '%s'\n" p)) tcConfig.implicitOpens |> List.iter (fun p -> Trace.PrintLine("CompilerServicesVerbose", fun _ -> sprintf "implicit open '%s'\n" p)) tcConfig.referencedDLLs |> List.iter (fun r -> Trace.PrintLine("CompilerServicesVerbose", fun _ -> sprintf "dll from flags '%s'\n" r.Text)) // A problem arises with nice name generation, which really should only // be done in the backend, but is also done in the typechecker for better or worse. // If we don't do this the NNG accumulates data and we get a memory leak. tcState.NiceNameGenerator.Reset() // Typecheck the real input. let sink = TcResultsSinkImpl() let amap = tcImports.GetImportMap() let tcEnvAtEndOpt = try let checkForErrors() = (parseHadErrors || errHandler.ErrorCount > 0) // Typecheck is potentially a long running operation. We chop it up here with an Eventually continuation and, at each slice, give a chance // for the client to claim the result as obsolete and have the typecheck abort. let computation = TypecheckSingleInputAndFinishEventually(checkForErrors,tcConfig, tcImports, tcGlobals, None, TcResultsSink.WithSink sink, tcState, parsedMainInput) match computation |> Eventually.forceWhile (fun () -> not (isResultObsolete())) with | Some((tcEnvAtEnd,_,_),_) -> Some tcEnvAtEnd | None -> None // Means 'aborted' with | e -> errorR e Some(tcState.TcEnvFromSignatures) let errors = errHandler.CollectedErrorsAndWarnings match tcEnvAtEndOpt with | Some tcEnvAtEnd -> let scope = TypeCheckInfo(tcConfig, tcGlobals, amap, projectDir, mainInputFileName, sink.CapturedEnvs, tcEnvAtEnd.NameEnv, sink.CapturedExprTypings, sink.CapturedNameResolutions, sink.CapturedMethodGroupResolutions, loadClosure, syncop, checkAlive, textSnapshotInfo) errors, Some scope, TypeCheckAborted.No | None -> errors, None, TypeCheckAborted.Yes with | e -> ReportUnexpectedException(e) reraise() type UnresolvedReferencesSet = val private set : System.Collections.Generic.HashSet new(unresolved) = {set = System.Collections.Generic.HashSet(unresolved, HashIdentity.Structural)} override this.Equals(o) = match o with | :? UnresolvedReferencesSet as urs -> this.set.SetEquals(urs.set) | _ -> false override this.GetHashCode() = // this code is copy from prim-types.fs: family of GenericHash...Array functions // it seems that it is never called, but we implement GetHashCode just to make the compiler happy let inline HashCombine nr x y = (x <<< 1) + y + 631 * nr ((0,0), this.set) ||> Seq.fold (fun (acc, n) v -> (HashCombine n acc (hash v)), (n + 1)) |> fst // NOTE: may be better just to move to optional arguments here type CheckOptions = { ProjectFileName: string ProjectFileNames: string[] ProjectOptions: string[] IsIncompleteTypeCheckEnvironment : bool UseScriptResolutionRules : bool LoadTime : System.DateTime UnresolvedReferences : UnresolvedReferencesSet option } /// Whether the two parse options refer to the same project. static member AreSameProjectName(options1,options2) = options1.ProjectFileName = options2.ProjectFileName /// Compare two options sets with respect to the parts of the options that are important to parsing. static member AreSameProjectForParsing(options1,options2) = CheckOptions.AreSameProjectName(options1,options2) && options1.ProjectOptions = options2.ProjectOptions && ( match options1.UnresolvedReferences, options2.UnresolvedReferences with | None, None -> true | (Some r1), (Some r2) -> r1.Equals(r2) | _ -> false ) /// Compare two options sets with respect to the parts of the options that are important to building. static member AreSameProjectForBuilding(options1,options2) = CheckOptions.AreSameProjectForParsing(options1,options2) && options1.ProjectFileNames = options2.ProjectFileNames && options1.LoadTime = options2.LoadTime /// Compute the project directory. member po.ProjectDirectory = System.IO.Path.GetDirectoryName(po.ProjectFileName) override this.ToString() = let files = let sb = new StringBuilder() this.ProjectFileNames |> Array.iter (fun file -> sb.AppendFormat(" {0}\n", file) |> ignore) sb.ToString() let options = let sb = new StringBuilder() this.ProjectOptions |> Array.iter (fun op -> sb.AppendFormat("{0} ", op) |> ignore) sb.ToString() sprintf "CheckOptions(%s)\n Files:\n%s Options: %s" this.ProjectFileName files options [] /// A live object of this type keeps the background corresponding background builder (and type providers) alive (through reference-counting). // // There is an important property of all the objects returned by the methods of this type: they do not require // the corresponding background builder to be alive. That is, they are simply plain-old-data through pre-formatting of all result text. type TypeCheckResults(errors: ErrorInfo[], details: (TypeCheckInfo * IncrementalFSharpBuild.IncrementalBuilder * Reactor.Reactor) option ) = // This may be None initially, or may be set to None when the object is disposed or finalized let mutable details = details let decrementer = match details with | None -> { new System.IDisposable with member x.Dispose() = () } | Some (_,builder,_) -> // Increment the usage count on the IncrementalBuilder. We want to keep the IncrementalBuilder and all associated // resources and type providers alive for the duration of the lifetime of this object. builder.IncrementUsageCount() let mutable disposed = false let dispose() = if not disposed then disposed <- true match details with | None -> () | Some (_,_,reactor) -> // Make sure we run disposal in the reactor thread, since it may trigger type provider disposals etc. details <- None reactor.AsyncOp (fun () -> decrementer.Dispose()) let checkBuilder dflt f = match details with | None -> dflt | Some (_ , builder, _) when not builder.IsAlive -> System.Diagnostics.Debug.Assert(false,"unexpected dead builder") dflt | Some (scope, builder, reactor) -> f(scope, builder, reactor) // At the moment we only dispose on finalize - we never explicitly dispose these objects. Explicitly disposing is not // really worth much since the underlying project builds are likely to still be in the incrementalBuilder cache. override info.Finalize() = dispose() member info.Errors = errors member info.HasFullTypeCheckInfo = details.IsSome /// Intellisense autocompletions member info.GetDeclarations(untypedParseInfoOpt:UntypedParseInfo option, (line,colAtEndOfNames), lineStr, names:NamesWithResidue, hasTextChangedSinceLastTypecheck: (obj * Range -> bool)) = checkBuilder (async.Return DeclarationSet.Empty) (fun (scope, builder, reactor) -> async { // Ensure the builder doesn't get released while running GetDeclarations asynchronously. In synchronous operations, // the builder is kept alive at least because the TypeCheckResults object itself is alive (note it is almsot certain to // be alive for other reasons too anyway, e.g. in the incrementalBuildersCache). use _unwind = builder.IncrementUsageCount() return! reactor.RunAsyncOp(fun () -> scope.GetDeclarations(untypedParseInfoOpt, line, lineStr, colAtEndOfNames, names, hasTextChangedSinceLastTypecheck)) }) /// Resolve the names at the given location to give a data tip member info.GetDataTipText((x1,x2),lineStr,names:Names,tokenTag:int) : DataTipText = use t = Trace.Call("SyncOp","GetDataTipText", fun _->sprintf " at=(%d:%d),names=%+A tag=%d tokenId=%+A" x1 x2 names tokenTag (tokenTagToTokenId tokenTag)) let dflt = DataTipText [] checkBuilder dflt (fun (scope, _builder, reactor) -> match tokenTagToTokenId tokenTag with | TOKEN_IDENT -> reactor.RunSyncOp (fun () -> scope.GetDataTipText x1 lineStr x2 names) | TOKEN_STRING | TOKEN_STRING_TEXT -> reactor.RunSyncOp (fun () -> scope.GetReferenceResolutionDataTipText(x1,x2)) | _ -> DataTipText []) member info.GetF1Keyword ((line,colAtEndOfNames),lineStr,names) : string option = use t = Trace.Call("SyncOp","GetF1Keyword", fun _->sprintf " at=(%d:%d),names=%+A" line colAtEndOfNames names) checkBuilder None (fun (scope, _builder, reactor) -> reactor.RunSyncOp (fun () -> scope.GetF1Keyword (line, lineStr, colAtEndOfNames, names))) // Resolve the names at the given location to a set of methods member info.GetMethods((x1,x2):Position,lineStr:string,names:Names option) = use t = Trace.Call("SyncOp","GetMethods", fun _->sprintf " at=(%d:%d),names=%+A" x1 x2 names) let dflt = MethodOverloads("",[| |]) checkBuilder dflt (fun (scope, _builder, reactor) -> reactor.RunSyncOp (fun () -> scope.GetMethods (x1, lineStr, x2, names))) member info.GetDeclarationLocation ((x1, x2) : Position, lineStr:string, names : Names, tokenTag : int, flag : bool) = use t = Trace.Call("SyncOp","GetDeclarationLocation", fun _->sprintf " at=(%d:%d),names=%+A,flag=%+A" x1 x2 names flag) let dflt = FindDeclResult.DeclNotFound FindDeclFailureReason.Unknown checkBuilder dflt (fun (scope, _builder, reactor) -> reactor.RunSyncOp (fun () -> scope.GetDeclarationLocation (x1, lineStr, x2, names, tokenTagToTokenId tokenTag, flag))) member info.GetExtraColorizations() = use t = Trace.Call("SyncOp","GetExtraColorizations", fun _->sprintf "") checkBuilder [| |] (fun (scope, _builder, _reactor) -> scope.GetExtraColorizations()) /// Information about the compilation environment module internal CompilerEnvironment = /// These are the names of assemblies that should be referenced for .fs, .ml, .fsi, .mli files that /// are not asscociated with a project let DefaultReferencesForOrphanSources = DefaultBasicReferencesForOutOfProjectSources /// Publish compiler-flags parsing logic. Must be fast because its used by the colorizer. let GetCompilationDefinesForEditing(filename:string, compilerFlags : string list) = let defines = ref(SourceFileImpl.AdditionalDefinesForUseInEditor(filename)) let MatchAndExtract(flag:string,prefix:string) = if flag.StartsWith(prefix) then let sub = flag.Substring(prefix.Length) let trimmed = sub.Trim() defines := trimmed :: !defines let rec QuickParseDefines = function | hd :: tail -> MatchAndExtract(hd,"-d:") MatchAndExtract(hd,"--define:") QuickParseDefines tail | _ -> () QuickParseDefines compilerFlags !defines /// Return true if this is a subcategory of error or warning message that the language service can emit let IsCheckerSupportedSubcategory(subcategory:string) = // Beware: This code logic is duplicated in DocumentTask.cs in the language service PhasedError.IsSubcategoryOfCompile(subcategory) /// Information about the debugging environment module internal DebuggerEnvironment = /// Return the language ID, which is the expression evaluator id that the /// debugger will use. let GetLanguageID() = #if SILVERLIGHT System.Guid(0xAB4F38C9, 0xB6E6s, 0x43bas, 0xBEuy, 0x3Buy, 0x58uy, 0x08uy, 0x0Buy, 0x2Cuy, 0xCCuy, 0xE3uy) #else System.Guid(0xAB4F38C9u, 0xB6E6us, 0x43baus, 0xBEuy, 0x3Buy, 0x58uy, 0x08uy, 0x0Buy, 0x2Cuy, 0xCCuy, 0xE3uy) #endif [] type (* internal *) TypeCheckAnswer = | NoAntecedant | Aborted | TypeCheckSucceeded of TypeCheckResults /// This file has become eligible to be re-typechecked. type (* internal *) NotifyFileTypeCheckStateIsDirty = NotifyFileTypeCheckStateIsDirty of (string -> unit) // Identical to _VSFILECHANGEFLAGS in vsshell.idl type (* internal *) DependencyChangeCode = | NoChange = 0x00000000 | FileChanged = 0x00000001 | TimeChanged = 0x00000002 | Size = 0x00000004 | Deleted = 0x00000008 | Added = 0x00000010 /// Callback that indicates whether a requested result has become obsolete. [] type (* internal *) IsResultObsolete = | IsResultObsolete of (unit->bool) // There is only one instance of this type, held in InteractiveChecker type BackgroundCompiler(notifyFileTypeCheckStateIsDirty:NotifyFileTypeCheckStateIsDirty) as self = // STATIC ROOT: LanguageServiceState.InteractiveChecker.backgroundCompiler.reactor: The one and only Reactor let reactor = Reactor.Reactor() // STATIC ROOT: LanguageServiceState.InteractiveChecker.backgroundCompiler.scriptClosure /// Information about the derived script closure. let scriptClosure = AgedLookup(buildCacheSize, areSame=CheckOptions.AreSameProjectForBuilding) /// CreateOneIncrementalBuilder (for background type checking). Note that fsc.fs also /// creates an incremental builder used by the command line compiler. let CreateOneIncrementalBuilder (options:CheckOptions) = use t = Trace.Call("Reactor","CreateOneIncrementalBuilder", fun () -> sprintf "options = %+A" options) let builder, errorsAndWarnings = // PROBLEM: This call can currently fail if an error happens while setting up the TcConfig // This leaves us completely horked. IncrementalFSharpBuild.IncrementalBuilder.CreateBackgroundBuilderForProjectOptions (scriptClosure.TryGet options, Array.toList options.ProjectFileNames, Array.toList options.ProjectOptions, options.ProjectDirectory, options.UseScriptResolutionRules, options.IsIncompleteTypeCheckEnvironment) // We're putting the builder in the cache, so increment its count. let decrement = builder.IncrementUsageCount() // Register the behaviour that responds to CCUs being invalidated because of type // provider Invalidate events. This invalidates the configuration in the build. builder.ImportedCcusInvalidated.Add (fun msg -> System.Diagnostics.Debugger.Log(100, "service", sprintf "A build cache entry is being invalidated because of a : %s" msg) self.InvalidateConfiguration options) // Register the callback called just before a file is typechecked by the background builder (without recording // errors or intellisense information). // // This indicates to the UI that the file type check state is dirty. If the file is open and visible then // the UI will sooner or later request a typecheck of the file, recording errors and intellisense information. builder.BeforeTypeCheckFile.Add (fun msg -> match notifyFileTypeCheckStateIsDirty with NotifyFileTypeCheckStateIsDirty f -> f msg) (builder, errorsAndWarnings, decrement) // STATIC ROOT: LanguageServiceState.InteractiveChecker.backgroundCompiler.incrementalBuildersCache. This root typically holds more // live information than anything else in the F# Language Service, since it holds up to 3 (buildCacheSize) background project builds // strongly. // /// Cache of builds keyed by options. let incrementalBuildersCache = MruCache(keepStrongly=buildCacheSize, keepMax=buildCacheSize, compute=CreateOneIncrementalBuilder, areSame = CheckOptions.AreSameProjectForBuilding, areSameForSubsumption = CheckOptions.AreSameProjectName, onDiscard = (fun (_, _, decrement) -> decrement.Dispose())) /// Helper: get the antecedant typecheck state for the give file (in the options). Return none if not available. let GetAntecendantResultWithoutSideEffects(filename:string, options:CheckOptions) = match incrementalBuildersCache.GetAvailable options with | Some(builder, createErrors, _) -> let slotOfFile = builder.GetSlotOfFileName(filename) Some (builder, createErrors, builder.GetAntecedentTypeCheckResultsBySlot slotOfFile) | None-> None /// Helper: do one step of the build for the given options. let DoStep(options:CheckOptions) = // Do the step. let builder,_,_ = incrementalBuildersCache.Get(options) if builder.Step() then Trace.PrintLine("ChangeEvents", fun _ -> sprintf "CheckOptions(%s) now maps to Build(%s)" (options.ToString()) (builder.ToString())) true else false /// Parses the source file and returns untyped AST member bc.UntypedParse(filename:string, source,options:CheckOptions)= use t = Trace.Call("SyncOp","UntypedParse", fun _->"") reactor.RunSyncOp (fun () -> Trace.PrintLine("CompilerServices", fun _ -> "Service.UntypedParseImpl") use t = Trace.CallByThreadNamed("Reactor", "UntypedParseImpl", "ThreadPool", fun _->"") #if TYPE_PROVIDER_SECURITY ExtensionTyping.GlobalsTheLanguageServiceCanPoke.theMostRecentFileNameWeChecked <- Some filename #endif let builder,_,_ = incrementalBuildersCache.Get(options) // Q: Whis it it ok to ignore createErrors in the build cache? A: These errors will be appended into the typecheck results // Do the parsing. // REVIEW: _matchPairs is being ignored here let parseErrors, _matchPairs, inputOpt, anyErrors = Parser.ParseSource (source, false, true, filename, (options.ProjectFileNames |> Array.toList), builder.TcConfig) // Strip everything but the file name. let dependencyFiles = builder.Dependencies |> List.map (fun dep->dep.Filename) UntypedParseInfo(parsed = { Errors = parseErrors Input = inputOpt ParseHadErrors = anyErrors DependencyFiles = dependencyFiles})) #if NO_QUICK_SEARCH_HELPERS // only used in QuickSearch prototype #else member bc.UntypedParseForSlot(slot,options) = use t = Trace.Call("SyncOp","UntypedParseForSlot", fun _->"") reactor.RunSyncOp (fun () -> Trace.PrintLine("CompilerServices", fun _ -> "Service.UntypedParseForSlotImpl") use t = Trace.CallByThreadNamed("Reactor", "UntypedParseImpl", "ThreadPool", fun _->"") let builder,_,_= incrementalBuildersCache.Get(options) let inputOpt,_,_ = builder.GetParseResultsBySlot slot Trace.PrintLine("ChangeEvents", fun _ -> sprintf "CheckOptions(%s) now maps to Build(%s)" (options.ToString()) (builder.ToString())) // Strip everything but the file name. let dependencyFiles = builder.Dependencies |> List.map (fun dep->dep.Filename) UntypedParseInfo(parsed = { Errors = [| |] Input = inputOpt ParseHadErrors = false DependencyFiles = dependencyFiles})) member bc.GetSlotsCount(options) = use t = Trace.Call("SyncOp","GetSlotsCount", fun _->"") reactor.RunSyncOp (fun () -> Trace.PrintLine("CompilerServices", fun _ -> "Service.GetSlotsCountImpl") use t = Trace.CallByThreadNamed("Reactor", "GetSlotsCountImpl", "ThreadPool", fun _->"") let builder,_,_ = incrementalBuildersCache.Get options builder.GetSlotsCount ()) #endif // QUICK_SEARCH member bc.MatchBraces(filename:string, source,options)= use t = Trace.Call("SyncOp","MatchBraces", fun _->"") reactor.RunSyncOp (fun () -> Trace.PrintLine("CompilerServices", fun _ -> "Service.MatchBracesImpl") use t = Trace.CallByThreadNamed("Reactor", "MatchBracesImpl", "ThreadPool", fun _->"") let builder,_,_ = incrementalBuildersCache.Get(options) // Do the parsing. let _parseErrors, matchPairs, _inputOpt, _anyErrors = Parser.ParseSource (source, true, false, filename, (options.ProjectFileNames |> Array.toList), builder.TcConfig) matchPairs) /// Type-check the result obtained by parsing /// The input should be first parsed using 'UntypedParseImpl' member bc.TypeCheckSource(parseResult,filename:string,source,options,isResultObsolete:unit->bool,textSnapshotInfo)= use t = Trace.Call("SyncOp","TypeCheckSource", fun _->"") reactor.RunSyncOp (fun () -> use t = Trace.CallByThreadNamed("Reactor", "TypeCheckSourceImpl", "ThreadPool", fun _->"") match GetAntecendantResultWithoutSideEffects(filename,options) with | Some(builder,createErrors,Some(tcPriorState,tcImports,tcGlobals,tcConfig,backgroundErrors,_antecedantTimeStamp)) -> // Get additional script #load closure information if applicable. // For scripts, this will have been recorded by GetCheckOptionsFromScriptRoot. let loadClosure = scriptClosure.TryGet options let parseHadErrors = parseResult.ParseHadErrors // Run the type checking. let tcErrors, scopeOpt, aborted = Parser.TypeCheckSource(parseResult.Input,source,filename,options.ProjectFileName,tcConfig,tcGlobals,tcImports, tcPriorState, loadClosure,backgroundErrors,reactor.SyncOp,(fun () -> builder.IsAlive),isResultObsolete,parseHadErrors,textSnapshotInfo) if aborted = Parser.TypeCheckAborted.No then // Append all the errors together. let errors = [| yield! createErrors yield! parseResult.Errors if options.IsIncompleteTypeCheckEnvironment then yield! Seq.truncate maxTypeCheckErrorsOutOfProjectContext tcErrors else yield! tcErrors |] let res = TypeCheckResults (errors,(match scopeOpt with None -> None | Some scope -> Some (scope, builder, reactor))) TypeCheckSucceeded res else Aborted | _ -> // Either the builder did not exist or the antecedent to the slot was not ready. Return 'None'. // The caller will send a request for a background build of this project. This // will create the builder and notify the UI when the antecedent to the slot is ready. NoAntecedant) member bc.GetCheckOptionsFromScriptRoot(filename, source, loadedTimestamp, otherFlags) = reactor.RunSyncOp (fun () -> // REVIEW: Opportunity to cache by filename, version? // REVIEW: Opportunity to save script 'input' which is about to be generated including children. let fas = LoadClosure.ComputeClosureOfSourceText(filename, source, CodeContext.Editing, new Lexhelp.LexResourceManager()) let baseFlags = ["--noframework"; "--warn:3"] @ Array.toList otherFlags let references = fas.References |> List.map (fun r->"-r:" + fst r) let nowarns = fas.NoWarns |> List.map (fun (code,_)->"--nowarn:" + code) let allFlags = baseFlags @ references @ nowarns @ Array.toList otherFlags let co = { ProjectFileName = filename + ".fsproj" // Make a name that is unique in this directory. ProjectFileNames = fas.SourceFiles |> List.map(fun s->fst s) |> List.toArray ProjectOptions = allFlags |> List.toArray IsIncompleteTypeCheckEnvironment = false UseScriptResolutionRules = true LoadTime = loadedTimestamp UnresolvedReferences = Some (UnresolvedReferencesSet(fas.UnresolvedReferences)) } scriptClosure.Put(co,fas) // Save the full load closure for later correlation. co) member bc.InvalidateConfiguration(options : CheckOptions) = use t = Trace.Call("SyncOp","InvalidateConfiguration", fun _->"") reactor.AsyncOp (fun () -> use t = Trace.Call("ChangeEvents","InvalidateBuildCacheEntry", fun _ -> sprintf "Received notification to invalidate build for options: %A" options) match incrementalBuildersCache.GetAvailable options with | None -> () | Some (_oldBuilder, _, _) -> // We do not need to decrement here - the onDiscard function is called each time an entry is pushed out of the build cache, // including by SetAlternate. Trace.PrintLine("ChangeEvents", fun _ -> "Refreshing configuration") let builderB, errorsB, decrementB = CreateOneIncrementalBuilder options Trace.PrintLine("ChangeEvents", fun _ -> sprintf "CheckOptions(%s) now maps to Build(%s)" (options.ToString()) (builderB.ToString())) incrementalBuildersCache.SetAlternate(options, (builderB, errorsB, decrementB))) reactor.StartBuilding(fun () -> DoStep options) member bc.NotifyProjectCleaned(options : CheckOptions) = match incrementalBuildersCache.GetAvailable options with | None -> () | Some (incrementalBuilder, _, _) -> #if EXTENSIONTYPING if incrementalBuilder.ThereAreLiveTypeProviders then bc.InvalidateConfiguration(options) #else () #endif member bc.InvalidateAll() = use t = Trace.Call("SyncOp","InvalidateAll", fun _->"") reactor.AsyncOp (fun () -> incrementalBuildersCache.Clear()) member bc.StartBuilding(options) = reactor.StartBuilding(fun () -> DoStep options) member bc.StopBuilding() = reactor.StopBuilding() // This is for unit testing only member bc.WaitForBackgroundCompile() = reactor.WaitForBackgroundCompile() [] [] // There is typically only one instance of this type in a Visual Studio process. type (* internal *) InteractiveChecker(notifyFileTypeCheckStateIsDirty) = // STATIC ROOT: LanguageServiceState.InteractiveChecker.backgroundCompiler. See BackgroundCompiler above. let backgroundCompiler = BackgroundCompiler(notifyFileTypeCheckStateIsDirty) static let mutable foregroundParseCount = 0 static let mutable foregroundTypeCheckCount = 0 /// Determine whether two sets of sources and parse options are the same. let AreSameForParsing((f1: string, s1: string, o1: CheckOptions), (f2, s2, o2)) = (f1 = f2) && CheckOptions.AreSameProjectForParsing(o1,o2) && (s1 = s2) /// Determine whether two sets of sources and parse options should be subsumed under the same project. let AreSubsumableForParsing((_,_,o1:CheckOptions),(_,_,o2:CheckOptions)) = CheckOptions.AreSameProjectName(o1,o2) // Parse using backgroundCompiler let ComputeBraceMatching(filename:string,source,options:CheckOptions) = Trace.PrintLine("CompilerServices", fun () -> sprintf "ComputeBraceMatching, FileName = %s\n " filename) backgroundCompiler.MatchBraces(filename,source,options) /// Parse a source code file, returning an information about the untyped results /// and the results needed for further processing using 'TypeCheckSource' let ComputeUntypedParse(filename: string, source, options) = Trace.PrintLine("CompilerServices", fun () -> sprintf "UntypedParse, FileName = %s\n " filename) foregroundParseCount <- foregroundParseCount + 1 backgroundCompiler.UntypedParse(filename, source, options) // STATIC ROOT: LanguageServiceState.InteractiveChecker.braceMatchMru. Most recently used cache for brace matching. Accessed on the // background UI thread, not on the compiler thread. let braceMatchMru = MruCache<_,_>(braceMatchCacheSize,ComputeBraceMatching,areSame=AreSameForParsing,areSameForSubsumption=AreSubsumableForParsing,isStillValid=(fun _ -> true)) // STATIC ROOT: LanguageServiceState.InteractiveChecker.untypedCheckMru. Most recently used cache for parsing files. let untypedCheckMru = MruCache<_, _>(untypedCheckMruSize, ComputeUntypedParse, areSame=AreSameForParsing,areSameForSubsumption=AreSubsumableForParsing,isStillValid=(fun _ -> true)) // STATIC ROOT: LanguageServiceState.InteractiveChecker.typeCheckLookup. // /// Cache which holds recently seen type-checks, no more than one for each file. /// This cache may hold out-of-date entries, in two senses /// - there may be a more recent antecedent state available because the background build has made it available /// - the source for the file may have changed let typeCheckLookup = AgedLookup(keepStrongly=recentForgroundTypeCheckLookupSize, areSame=fun (x,y)->x=y) /// Instantiate an interactive checker. static member Create(notifyFileTypeCheckStateIsDirty) = new InteractiveChecker(notifyFileTypeCheckStateIsDirty) /// Parse a source code file, returning an information about the untyped results /// and the results needed for further processing using 'TypeCheckSource' member ic.MatchBraces(filename, source, options) = braceMatchMru.Get((filename, source, options)) /// Parse a source code file, returning an information about the untyped results /// and the results needed for further processing using 'TypeCheckSource' member ic.UntypedParse(filename, source, options) = untypedCheckMru.Get((filename, source, options)) #if NO_QUICK_SEARCH_HELPERS // only used in QuickSearch prototype #else member ic.GetSlotsCount options = Trace.PrintLine("CompilerServices", fun () -> sprintf "GetSlotsCount, ProjectName = %s\n " options.ProjectFileName) backgroundCompiler.GetSlotsCount(options) member ic.UntypedParseForSlot (slot,options) = Trace.PrintLine("CompilerServices", fun () -> sprintf "UntypedParseForSlot, ProjectName = %s, slot = %d\n " options.ProjectFileName slot) backgroundCompiler.UntypedParseForSlot(slot,options) #endif // QUICK_SEARCH /// Try to get recent approximate type check results for a file. member ic.TryGetRecentTypeCheckResultsForFile(filename: string, options:CheckOptions) = match typeCheckLookup.TryGet((filename,options)) with | Some res -> Some res | _ -> None /// This function is called when the entire environment is known to have changed for reasons not encoded in the CheckOptions of any project/compilation. /// For example, the type provider approvals file may have changed. member ic.InvalidateAll() = backgroundCompiler.InvalidateAll() /// This function is called when the entire environment is known to have changed for reasons not encoded in the CheckOptions of any project/compilation. /// For example, the type provider approvals file may have changed. // // This is for unit testing only member ic.ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients() = ic.InvalidateAll() typeCheckLookup.Clear() braceMatchMru.Clear() untypedCheckMru.Clear() for i in 0 .. 2 do System.GC.Collect() System.GC.WaitForPendingFinalizers() backgroundCompiler.WaitForBackgroundCompile() // flush AsyncOp /// This function is called when the configuration is known to have changed for reasons not encoded in the CheckOptions. /// For example, dependent references may have been deleted or created. member ic.InvalidateConfiguration(options: CheckOptions) = backgroundCompiler.InvalidateConfiguration options /// This function is called when a project has been cleaned, and thus type providers should be refreshed. member ic.NotifyProjectCleaned(options: CheckOptions) = backgroundCompiler.NotifyProjectCleaned options /// TypeCheck a source code file, returning a handle to the results of the /// parse including the reconstructed types in the file. member ic.TypeCheckSource(parsed:UntypedParseInfo, filename:string, fileVersion:int, source:string, options:CheckOptions, IsResultObsolete(isResultObsolete), textSnapshotInfo:obj) = Trace.PrintLine("CompilerServices", fun () -> sprintf "TypeCheckSource, FileName = %s\n " filename) let answer = backgroundCompiler.TypeCheckSource(UntypedParseInfoImpl.GetUntypedParseResults parsed,filename,source,options,isResultObsolete,textSnapshotInfo) match answer with | Aborted | NoAntecedant -> backgroundCompiler.StartBuilding(options) answer | TypeCheckSucceeded typedResults -> foregroundTypeCheckCount <- foregroundTypeCheckCount + 1 typeCheckLookup.Put((filename,options),(parsed,typedResults,fileVersion)) // JAF: Why don't we kick the backgroundCompiler off here like we do for Aborted and NoAntecedant? // Because we expect the second half of the request (GetMethods or whatever) soon and would like that to have a chance to start that request quickly answer /// For a given script file, get the CheckOptions implied by the #load closure member ic.GetCheckOptionsFromScriptRoot(filename, source, loadedTimestamp) = ic.GetCheckOptionsFromScriptRoot(filename, source, loadedTimestamp, [| |]) member ic.GetCheckOptionsFromScriptRoot(filename : string, source : string, loadedTimestamp : DateTime, otherFlags) : CheckOptions = backgroundCompiler.GetCheckOptionsFromScriptRoot(filename,source,loadedTimestamp, otherFlags) /// Begin background parsing the given project. member ic.StartBackgroundCompile(options) = backgroundCompiler.StartBuilding(options) /// Stop the background compile. member ic.StopBackgroundCompile() = backgroundCompiler.StopBuilding() /// Block until the background compile finishes. // // This is for unit testing only member ic.WaitForBackgroundCompile() = backgroundCompiler.WaitForBackgroundCompile() static member GlobalForegroundParseCountStatistic = foregroundParseCount static member GlobalForegroundTypeCheckCountStatistic = foregroundTypeCheckCount module internal PrettyNaming = let IsIdentifierPartCharacter = Microsoft.FSharp.Compiler.PrettyNaming.IsIdentifierPartCharacter let IsLongIdentifierPartCharacter = Microsoft.FSharp.Compiler.PrettyNaming.IsLongIdentifierPartCharacter let GetLongNameFromString = Microsoft.FSharp.Compiler.PrettyNaming.SplitNamesForILPath let FormatAndOtherOverloadsString(remainingOverloads) = FSComp.SR.typeInfoOtherOverloads(remainingOverloads) #if EXTENSIBLE_DUMPER #if DEBUG namespace Internal.Utilities.Diagnostic open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler open System.Text type (* internal *) typDumper(dumpTarget:Microsoft.FSharp.Compiler.Tast.TType) = override self.ToString() = match !global_g with | Some g -> let denv = DisplayEnv.Empty g let sb = StringBuilder() NicePrint.outputTy denv sb dumpTarget sb.ToString() | None -> "No global environment" #endif #endif fsharp-3.0.34/src/fsharp/vs/Reactor.fs0000775000175000017500000002660112260314606016533 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open System open Microsoft.FSharp.Control open Microsoft.FSharp.Compiler.Lib module internal Reactor = type BuildStepper = (unit -> (*keep building*)bool) type Operation = unit -> unit type ResultOrException<'TResult> = | Result of 'TResult | Exception of System.Exception [] type ReactorCommands = /// Kick off a build. | StartBuild of BuildStepper /// Kick off the most recently known build. | StartRecentBuild /// Do a bit of work on the given build. | Step /// Do some work synchronized in the mailbox. | SyncOp of Operation * AsyncReplyChannel> /// Do some work not synchronized in the mailbox. | AsyncOp of Operation /// Stop building after finishing the current unit of work. | StopBuild of AsyncReplyChannel> /// Finish building. | FinishBuild of AsyncReplyChannel> override rc.ToString() = match rc with | StartBuild _->"StartBuild" | StartRecentBuild -> "StartRecentBuild" | Step->"Step" | SyncOp _->"SyncOp" | AsyncOp _->"AsyncOp" | StopBuild _->"StopBuild" | FinishBuild _->"FinishBuild" [] type ReactorState = | Idling | ActivelyBuilding of BuildStepper | FinishingBuild of BuildStepper * AsyncReplyChannel> /// An exception was seen in a prior state. The exception is preserved so it can be thrown back to the calling thread. | BackgroundError of Exception override rs.ToString() = match rs with | Idling->"Idling" | ActivelyBuilding _->"ActivelyBuilding" | FinishingBuild _->"FinishingBuild" | BackgroundError _->"BackgroundError" [] /// There is one global Reactor for the entire language service, no matter how many projects or files /// are open. type Reactor() = // We need to store the culture for the VS thread that is executing now, // so that when the reactor picks up a thread from the threadpool we can set the culture #if SILVERLIGHT let culture = System.Threading.Thread.CurrentThread.CurrentCulture #else let culture = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID) #endif let mutable recentBuild : BuildStepper option = None /// Mailbox dispatch function. let Dispatch (inbox: MailboxProcessor<_>) = // Post an exception back to FinishingBuild channel. let UnexpectedFinishingBuild commandName (channel: AsyncReplyChannel<_>) = channel.Reply(Exception (new Exception(sprintf "[Bug]Did not expect %s during FinishingBuild." commandName))) // Kick off a build. let HandleStartBuild build state = inbox.Post Step match state with | ActivelyBuilding(_) | Idling -> ActivelyBuilding build | FinishingBuild(_) -> state | BackgroundError(_)-> state // Kick off a build of the most recently known build if there is one. let HandleStartRecentBuild = function | Idling -> match recentBuild with | None -> Idling | Some mostRecent -> HandleStartBuild mostRecent Idling | state -> state // Stop the build. let HandleStopBuild (channel:AsyncReplyChannel<_>) state = recentBuild<-None match state with | ActivelyBuilding(_) | Idling -> channel.Reply(Result ()) | FinishingBuild(_, channel) -> UnexpectedFinishingBuild "StopBuild" channel | BackgroundError e-> channel.Reply(Exception e) Idling // Do the given operation let HandleAsyncOp op state = try op() state with | e-> System.Diagnostics.Debug.Assert(false, sprintf "Bug in target of HandleAsyncOp: %A: %s\nThe most recent error reported to an error scope: %+A\n" (e.GetType()) e.Message e.StackTrace) state // Do the given operation and reply let HandleSyncOp op (channel:AsyncReplyChannel<_>) state = match state with | ActivelyBuilding(_) | FinishingBuild(_) | Idling -> try op() channel.Reply(Result ()) state with | e-> channel.Reply(Exception e) state | BackgroundError(e)-> channel.Reply(Exception e) Idling // Do a step in the build. let HandleStep state = match state with | FinishingBuild(build,_) | ActivelyBuilding(build) -> recentBuild <- Some(build) // Gather any required reply channel. let replyChannel = match state with | Idling | ActivelyBuilding(_) | BackgroundError(_)->None | FinishingBuild(_,channel)->Some(channel) try if build() then // More work inbox.Post Step state else // Work is done. Reply if there is a channel for it. match replyChannel with | Some(replyChannel)-> replyChannel.Reply(Result ()) | None->() // Switch to idle state. Idling with e-> System.Diagnostics.Debug.Assert(false, sprintf "[Bug]Failure in HandleStep: %s" (e.ToString())) match replyChannel with | Some(replyChannel)-> replyChannel.Reply(Exception e) Idling | None->BackgroundError e | Idling -> Idling | BackgroundError _ -> state let HandleFinishBuilding (channel:AsyncReplyChannel<_>) = function | ActivelyBuilding(build)-> inbox.Post Step FinishingBuild(build,channel) | FinishingBuild(_, channelOld)-> // Don't expect to get here. If this is required then we need to keep all channels and post back to each // when the build finishes. For now, throw an exception back. UnexpectedFinishingBuild "FinishBuilding" channel UnexpectedFinishingBuild "FinishBuilding" channelOld Idling | Idling-> channel.Reply(Result ()) Idling | BackgroundError e-> // We have a waiting channel to post our exception to. channel.Reply(Exception e) Idling // Async workflow which receives messages and dispatches to worker functions. let rec Loop (state: ReactorState) = async { let! msg = inbox.Receive() System.Threading.Thread.CurrentThread.CurrentUICulture <- culture match msg with | StartBuild build -> return! Loop(HandleStartBuild build state) | StartRecentBuild -> return! Loop(HandleStartRecentBuild state) | Step -> return! Loop(HandleStep state) | SyncOp(op,channel) -> return! Loop(HandleSyncOp op channel state) | AsyncOp(op) -> return! Loop(HandleAsyncOp op state) | StopBuild(channel) -> return! Loop(HandleStopBuild channel state) | FinishBuild(channel) -> return! Loop(HandleFinishBuilding channel state) } Loop Idling let builder = MailboxProcessor<_>.Start(Dispatch) // [Foreground Mailbox Accessors] ----------------------------------------------------------- member r.StartBuilding(build) = builder.Post(StartBuild build) member r.StartBuildingRecent() = builder.Post(StartRecentBuild) member r.StopBuilding() = match builder.PostAndReply(fun replyChannel->StopBuild(replyChannel)) with | Result result->result | Exception excn-> raise excn member r.SyncOp(op) = match builder.PostAndReply(fun replyChannel->SyncOp(op,replyChannel)) with | Result result->result | Exception excn-> raise excn member r.AsyncOp(op) = builder.Post(AsyncOp(op)) // This is for testing only member r.WaitForBackgroundCompile() = match builder.PostAndReply(fun replyChannel->FinishBuild(replyChannel)) with | Result result->result | Exception excn->raise excn member r.RunSyncOp f = let result = ref None r.SyncOp (fun () -> result := Some(f())) Option.get !result member r.RunAsyncOp f = let resultCell = AsyncUtil.AsyncResultCell<_>() r.AsyncOp( fun () -> let result = try f () |> AsyncUtil.AsyncOk with | e -> e |> AsyncUtil.AsyncException resultCell.RegisterResult(result) ) resultCell.AsyncResult let mutable theReactor = Reactor() let Reactor() = theReactor fsharp-3.0.34/src/fsharp/vs/service.fsi0000775000175000017500000003012012260314606016734 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open System.Collections.Generic type (* internal *) Param = { Name: string CanonicalTypeTextForSorting: string Display: string Description: string } [] // Note: this type does not hold any handles to compiler data structure. type (* internal *) Method = { Description : DataTipText Type: string Parameters: Param[] /// Indicates that this not really a method, but actually a static arguments list, like TP<42,"foo"> ? IsStaticArguments: bool } [] // Note: this type does not hold any handles to compiler data structure. All data has been pre-formatted. type (* internal *) MethodOverloads = member Name: string member Methods: Method[] [] type (* internal *) FindDeclFailureReason = // generic reason: no particular information about error | Unknown // source code file is not available | NoSourceCode // trying to find declaration of ProvidedType without TypeProviderDefinitionLocationAttribute | ProvidedType of string // trying to find declaration of ProvidedMember without TypeProviderDefinitionLocationAttribute | ProvidedMember of string [] type (* internal *) FindDeclResult = /// declaration not found + reason | DeclNotFound of FindDeclFailureReason /// found declaration; return (position-in-file, name-of-file) | DeclFound of Position * string type (* internal *) Names = string list type (* internal *) NamesWithResidue = Names * string [] /// A handle to the results of TypeCheckSource. /// A live object of this type keeps the background corresponding background builder (and type providers) alive (through reference-counting) type (* internal *) TypeCheckResults = /// The errors returned by parsing a source file member Errors : ErrorInfo[] member HasFullTypeCheckInfo: bool /// Intellisense autocompletions member GetDeclarations : untypedParseInfoOpt:UntypedParseInfo option * position:Position * lineText:string * names:NamesWithResidue * hasTextChangedSinceLastTypecheck: (obj * Range -> bool) -> Async /// Resolve the names at the given location to give a data tip member GetDataTipText : position:Position * lineText:string * names:Names * tokenTag:int -> DataTipText /// Resolve the names at the given location to give F1 keyword member GetF1Keyword : position:Position * lineText:string * names:Names -> string option /// Resolve the names at the given location to a set of methods member GetMethods : position:Position * lineText:string * names:Names option -> MethodOverloads /// Resolve the names at the given location to the declaration location of the corresponding construct member GetDeclarationLocation : position:Position * lineText:string * names:Names * tokenTag:int * isDeclaration:bool -> FindDeclResult /// Get any extra colorization info that is available after the typecheck member GetExtraColorizations : unit -> (Range * TokenColorKind)[] /// wraps the set of unresolved references providing implementations of Equals\GetHashCode /// of this objects of this type can be used as parts of types with generated Equals\GetHashCode /// i.e. records or DUs type (* internal *) UnresolvedReferencesSet = class end /// A set of key information for the language service's internal caches of project/script build information for a particular source file type (* internal *) CheckOptions = { // Note that this may not reduce to just the project directory, because there may be two projects in the same directory. ProjectFileName: string ProjectFileNames: string[] ProjectOptions: string[] /// When true, the typechecking environment is known a priori to be incomplete. /// This can happen, for example, when a .fs file is opened outside of a project. /// It may be appropriate, then, to not show error messages related to type checking /// since they will just be noise. IsIncompleteTypeCheckEnvironment : bool /// When true, use the reference resolution rules for scripts rather than the rules for compiler. UseScriptResolutionRules : bool /// Timestamp of project/script load LoadTime : System.DateTime UnresolvedReferences : UnresolvedReferencesSet option } /// Information about the compilation environment module internal CompilerEnvironment = /// These are the names of assemblies that should be referenced for .fs, .ml, .fsi, .mli files that /// are not asscociated with a project. val DefaultReferencesForOrphanSources : string list /// Return the compilation defines that should be used when editing the given file. val GetCompilationDefinesForEditing : filename : string * compilerFlags : string list -> string list /// Return true if this is a subcategory of error or warning message that the language service can emit val IsCheckerSupportedSubcategory : string -> bool /// Information about the debugging environment module internal DebuggerEnvironment = /// Return the language ID, which is the expression evaluator id that the /// debugger will use. val GetLanguageID : unit -> System.Guid /// This file has become eligible to be re-typechecked. /// This notifies the language service that it needs to set the dirty flag on files whose typecheck antecedents have changed. type (* internal *) NotifyFileTypeCheckStateIsDirty = NotifyFileTypeCheckStateIsDirty of (string -> unit) /// Identical to _VSFILECHANGEFLAGS in vsshell.idl type (* internal *) DependencyChangeCode = | NoChange = 0x0 | FileChanged = 0x00000001 | TimeChanged = 0x00000002 | Deleted = 0x00000008 | Added = 0x00000010 /// Callback that indicates whether a requested result has become obsolete. [] type (* internal *) IsResultObsolete = | IsResultObsolete of (unit->bool) /// The result of calling TypeCheckResult including the possibility of abort and background compiler not caught up. [] type (* internal *) TypeCheckAnswer = | NoAntecedant | Aborted // because result was obsolete | TypeCheckSucceeded of TypeCheckResults [] [] type (* internal *) InteractiveChecker = /// Create an instance of an InteractiveChecker. Currently resources are not reclaimed. static member Create : NotifyFileTypeCheckStateIsDirty -> InteractiveChecker /// Parse a source code file, returning information about brace matching in the file /// Return an enumeration of the matching parethetical tokens in the file member MatchBraces : filename : string * source: string * options: CheckOptions -> (Range * Range)[] /// Parse a source code file, returning a handle that can be used for obtaining navigation bar information /// To get the full information, call 'TypeCheckSource' method on the result member UntypedParse : filename: string * source: string * options: CheckOptions -> UntypedParseInfo /// Typecheck a source code file, returning a handle to the results of the parse including /// the reconstructed types in the file. /// /// Return None if the background builder is not yet done prepring the type check results for the antecedent to the /// file. member TypeCheckSource : parsed: UntypedParseInfo * filename: string * fileversion: int * source: string * options: CheckOptions * isResultObsolete: IsResultObsolete * textSnapshotInfo: obj -> TypeCheckAnswer /// For a given script file, get the CheckOptions implied by the #load closure /// We keep this around for now as this is the API entry point expected by the MonoDevelop 3.0 support member GetCheckOptionsFromScriptRoot : filename : string * source : string * loadedTimestamp : System.DateTime -> CheckOptions /// For a given script file, get the CheckOptions implied by the #load closure. Optional 'otherFlags' member GetCheckOptionsFromScriptRoot : filename : string * source : string * loadedTimestamp : System.DateTime * otherFlags : string[] -> CheckOptions #if NO_QUICK_SEARCH_HELPERS // only used in QuickSearch prototype #else /// For QuickSearch index - not used by VS2008/VS2010/VS11 member GetSlotsCount : options : CheckOptions -> int /// For QuickSearch index - not used by VS2008/VS2010/VS11 member UntypedParseForSlot : slot:int * options : CheckOptions -> UntypedParseInfo #endif // QUICK_SEARCH /// Try to get recent type check results for a file. This may arbitrarily refuse to return any /// results if the InteractiveChecker would like a chance to recheck the file, in which case /// UntypedParse and TypeCheckSource should be called. If the source of the file /// has changed the results returned by this function may be out of date, though may /// still be usable for generating intellsense menus and information. member TryGetRecentTypeCheckResultsForFile : filename: string * options:CheckOptions -> (UntypedParseInfo * TypeCheckResults * (*version*)int) option /// This function is called when the entire environment is known to have changed for reasons not encoded in the CheckOptions of any project/compilation. /// For example, the type provider approvals file may have changed. member InvalidateAll : unit -> unit /// This function is called when the configuration is known to have changed for reasons not encoded in the CheckOptions. /// For example, dependent references may have been deleted or created. member InvalidateConfiguration: options: CheckOptions -> unit /// Begin background parsing the given project. member StartBackgroundCompile: options: CheckOptions -> unit /// Stop the background compile. member StopBackgroundCompile : unit -> unit /// Block until the background compile finishes. member WaitForBackgroundCompile : unit -> unit /// Report a statistic for testability static member GlobalForegroundParseCountStatistic : int /// Report a statistic for testability static member GlobalForegroundTypeCheckCountStatistic : int /// Flush all caches and garbage collect member ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients : unit -> unit /// This function is called when a project has been cleaned/rebuilt, and thus any live type providers should be refreshed. member NotifyProjectCleaned: options: CheckOptions -> unit #if FSI_SERVER_INTELLISENSE // These functions determine all declarations, called by fsi.fs for fsi-server requests. module internal FsiIntelisense = val getDeclarations : Build.TcConfig * Env.TcGlobals * Build.TcImports * Build.TcState -> string -> string[] -> (string * string * string * int)[] #endif module internal PrettyNaming = val IsIdentifierPartCharacter : (char -> bool) val IsLongIdentifierPartCharacter : (char -> bool) val GetLongNameFromString : (string -> Names) // Temporary workaround for no localized resources in FSharp.LanguageService.dll val FormatAndOtherOverloadsString : (int -> string) fsharp-3.0.34/src/fsharp/vs/ServiceDeclarations.fs0000664000175000017500000020573512260314606021071 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Internal.Utilities open System open System.IO open System.Text open System.Collections.Generic open Microsoft.FSharp.Core.Printf open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Parser open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Nameres open ItemDescriptionIcons module EnvMisc2 = #if SILVERLIGHT let GetEnvInteger e dflt = dflt #else let GetEnvInteger e dflt = match System.Environment.GetEnvironmentVariable(e) with null -> dflt | t -> try int t with _ -> dflt #endif let maxMembers = GetEnvInteger "mFSharp_MaxMembersInQuickInfo" 10 /// dataTipSpinWaitTime limits how long we block the UI thread while a tooltip pops up next to a selected item in an IntelliSense completion list. /// This time appears to be somewhat amortized by the time it takes the VS completion UI to actually bring up the tooltip after selecting an item in the first place. let dataTipSpinWaitTime = GetEnvInteger "mFSharp_DataTipSpinWaitTime" 300 //---------------------------------------------------------------------------- // Display characteristics of typechecking items //-------------------------------------------------------------------------- /// Interface that defines methods for comparing objects using partial equality relation type IPartialEqualityComparer<'T> = inherit IEqualityComparer<'T> /// Can the specified object be tested for equality? abstract InEqualityRelation : 'T -> bool type iDeclarationSet = int /// Describe a comment as either a block of text or a file+signature reference into an intellidoc file. type (* internal *) XmlComment = | XmlCommentNone | XmlCommentText of string | XmlCommentSignature of (*File and Signature*) string * string /// A single data tip display element type (* internal *) DataTipElement = | DataTipElementNone /// A single type, method, etc with comment. | DataTipElement of (* text *) string * XmlComment /// For example, a method overload group. | DataTipElementGroup of ((* text *) string * XmlComment) list /// An error occurred formatting this element | DataTipElementCompositionError of string /// Information for building a data tip box. // // Note: this type does not hold any handles to compiler data structure. type (* internal *) DataTipText = /// A list of data tip elements to display. | DataTipText of DataTipElement list /// Test hooks for tweaking internals module internal TestHooks = /// Function used to construct member info text in data tips. let FormatOverloadsToList: (DataTipElement->DataTipElement) option ref = ref None let FormatOverloadsToListScope(hook:(DataTipElement->DataTipElement)) : System.IDisposable = FormatOverloadsToList := Some(hook) {new IDisposable with member d.Dispose() = FormatOverloadsToList := None} module internal ItemDescriptionsImpl = let isFunction g typ = let _,tau = tryDestForallTy g typ isFunTy g tau let OutputFullName isDeclInfo ppF fnF os r = // Only display full names in quick info, not declaration text if not isDeclInfo then match ppF r with | None -> () | Some _ -> bprintf os "\n\n%s: %s" (FSComp.SR.typeInfoFullName()) (fnF r) // Format the supertypes and other useful information about a type to a buffer let OutputUsefulTypeInfo _isDeclInfo (_infoReader:InfoReader) _m _denv _os _ty = () #if DISABLED if false then ErrorScope.ProtectAndDiscard m (fun () -> let g = infoReader.g let amap = infoReader.amap let supertypes = let supertypes = AllSuperTypesOfType g amap m AllowMultiIntfInstantiations.Yes ty let supertypes = supertypes |> List.filter (AccessibilityLogic.IsTypeAccessible g AccessibleFromSomewhere) let supertypes = supertypes |> List.filter (typeEquiv g g.obj_ty >> not) let selfs,supertypes = supertypes |> List.partition (typeEquiv g ty) let supertypesC,supertypesI = supertypes |> List.partition (isInterfaceTy g) let supertypes = selfs @ supertypesC @ supertypesI supertypes let supertypeLs,_ = NicePrint.layoutPrettifiedTypes denv supertypes // Suppress printing supertypes for enums, delegates, exceptions and attributes if supertypes.Length > 1 // more then self && not (isEnumTy g ty) && not (isUnionTy g ty) && not (isRecdTy g ty) && not (isDelegateTy g ty) && not (ExistsHeadTypeInEntireHierarchy g amap m ty g.exn_tcr) && not (ExistsHeadTypeInEntireHierarchy g amap m ty g.tcref_System_Attribute) then bprintf os "\n\n"; List.zip supertypes supertypeLs |> List.iter (fun (superty,supertyL) -> if typeEquiv g superty ty then bprintf os " %s: %a\n" (FSComp.SR.typeInfoType()) bufferL supertyL elif isClassTy g superty || isInterfaceTy g ty then bprintf os " %s: %a\n" (FSComp.SR.typeInfoInherits()) bufferL supertyL else bprintf os " %s: %a\n" (FSComp.SR.typeInfoImplements()) bufferL supertyL)) #endif let rangeOfPropInfo (pinfo:PropInfo) = match pinfo with #if EXTENSIONTYPING | ProvidedProp(_,pi,_,_) -> definitionLocationOfProvidedItem pi #endif | _ -> pinfo.ArbitraryValRef |> Option.map (fun v -> v.Range) let rangeOfMethInfo (minfo:MethInfo) = match minfo with #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,_) -> definitionLocationOfProvidedItem mi #endif | _ -> minfo.ArbitraryValRef |> Option.map (fun v -> v.Range) let rangeOfEventInfo (einfo:EventInfo) = match einfo with #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,_) -> definitionLocationOfProvidedItem ei #endif | _ -> einfo.ArbitraryValRef |> Option.map (fun v -> v.Range) // skip all default generated constructors for structs let (|FilterDefaultStructCtors|) ctors = ctors |> List.filter (function DefaultStructCtor _ -> false | _ -> true) let rec rangeOfItem (g:TcGlobals) isDeclInfo d = match d with | Item.Value vref | Item.CustomBuilder (_,vref) -> Some (if isDeclInfo then vref.Range else vref.DefinitionRange) | Item.UnionCase ucinfo -> Some ucinfo.UnionCase.Range | Item.ActivePatternCase apref -> Some apref.ActivePatternVal.Range | Item.ExnCase tcref -> Some tcref.Range | Item.RecdField rfinfo -> Some rfinfo.RecdFieldRef.Range | Item.Event einfo -> rangeOfEventInfo einfo | Item.ILField _ -> None | Item.Property(_,pinfos) -> rangeOfPropInfo pinfos.Head | Item.Types(_,(typ :: _)) -> tryNiceEntityRefOfTy typ |> Option.map (fun tcref -> tcref.Range) | Item.CustomOperation (_,_,Some minfo) -> rangeOfMethInfo minfo | Item.TypeVar _ -> None | Item.ModuleOrNamespaces(modref :: _) -> Some modref.Range | Item.MethodGroup(_,(minfo :: _)) | Item.CtorGroup(_,FilterDefaultStructCtors(minfo :: _)) -> rangeOfMethInfo minfo | Item.ActivePatternResult(APInfo _,_, _, m) -> Some m | Item.SetterArg (_,item) -> rangeOfItem g isDeclInfo item | Item.ArgName _ -> None | _ -> None // Provided type definitions do not have a useful F# CCU for the purposes of goto-definition. let computeCcuOfTyconRef (tcref:TyconRef) = #if EXTENSIONTYPING if tcref.IsProvided then None else #endif ccuOfTyconRef tcref let rec ccuOfItem g d = match d with | Item.Value vref | Item.CustomBuilder (_,vref) -> ccuOfValRef vref | Item.UnionCase ucinfo -> computeCcuOfTyconRef ucinfo.TyconRef | Item.ActivePatternCase apref -> ccuOfValRef apref.ActivePatternVal | Item.ExnCase tcref -> computeCcuOfTyconRef tcref | Item.RecdField rfinfo -> computeCcuOfTyconRef rfinfo.RecdFieldRef.TyconRef | Item.Event einfo -> einfo.ArbitraryValRef |> Option.bind ccuOfValRef | Item.ILField _ -> None | Item.Property(_,pinfos) -> pinfos.Head.ArbitraryValRef |> Option.bind ccuOfValRef | Item.MethodGroup(_,(minfo :: _)) | Item.CtorGroup(_,FilterDefaultStructCtors(minfo :: _)) -> minfo.ArbitraryValRef |> Option.bind ccuOfValRef | Item.Types(_,(typ :: _)) -> tryNiceEntityRefOfTy typ |> Option.bind (fun tcref -> computeCcuOfTyconRef tcref) | Item.TypeVar _ -> None | Item.CustomOperation (_,_,Some minfo) -> minfo.ArbitraryValRef |> Option.bind ccuOfValRef | Item.ModuleOrNamespaces(modref :: _) -> computeCcuOfTyconRef modref | Item.SetterArg (_,item) -> ccuOfItem g item | Item.ArgName _ -> None | _ -> None /// Work out the likely source file for an item let fileNameOfItem (g:TcGlobals) qualProjectDir (m:range) h = let file = m.FileName dprintf "file stored in metadata is '%s'\n" file if not (FileSystem.IsPathRootedShim file) then match (ccuOfItem g h) with | Some ccu -> // Note: For F# library DLLs, the code in build.ml fixes uo the SourceCodeDirectory (compileTimeWorkingDir) // to be defaultFSharpBinariesDir\..\lib\, i.e. the location of the source for the // file in the F# installation location Path.Combine(ccu.SourceCodeDirectory, file) | None -> match qualProjectDir with | None -> file | Some dir -> Path.Combine(dir, file) else file /// Cut long filenames to make them visually appealing let cutFileName s = if String.length s > 40 then String.sub s 0 10 + "..."+String.sub s (String.length s - 27) 27 else s let libFileOfEntityRef x = match x with | ERefLocal _ -> None | ERefNonLocal nlref -> nlref.Ccu.FileName let ParamNameAndTypesOfUnaryCustomOperation g minfo = match minfo with | FSMeth(_,_,vref,_) -> let argInfos = ArgInfosOfMember g vref |> List.concat // Drop the first 'seq' argument representing the computation space let argInfos = if argInfos.IsEmpty then [] else argInfos.Tail [ for (ty,argInfo) in argInfos do let isPP = HasFSharpAttribute g g.attrib_ProjectionParameterAttribute argInfo.Attribs // Strip the tuple space type of the type of projection parameters let ty = if isPP && isFunTy g ty then rangeOfFunTy g ty else ty yield ParamNameAndType(argInfo.Name |> Option.map (fun id -> id.idText), ty) ] | _ -> [] // Find the name of the metadata file for this external definition let metaInfoOfEntityRef (infoReader:InfoReader) m tcref = let g = infoReader.g match tcref with | ERefLocal _ -> None | ERefNonLocal nlref -> match nlref.Ccu.FileName with | None -> None | Some ccuFileName -> // Generalize to get a formal signature let formalTypars = tcref.Typars(m) let formalTypeInst = generalizeTypars formalTypars let formalTypeInfo = ILTypeInfo.FromType g (TType_app(tcref,formalTypeInst)) Some(ccuFileName,formalTypars,formalTypeInfo) let GetXmlDocSigOfEntityRef infoReader m (eref:EntityRef) = if eref.IsILTycon then match metaInfoOfEntityRef infoReader m eref with | None -> XmlCommentNone | Some (ccuFileName,_,formalTypeInfo) -> XmlCommentSignature(ccuFileName,"T:"+formalTypeInfo.ILTypeRef.FullName) else match libFileOfEntityRef eref with | None -> XmlCommentNone | Some ccuFileName -> let m = eref.Deref if m.XmlDocSig = "" then m.XmlDocSig <- XmlDocSigOfEntity eref XmlCommentSignature (ccuFileName, m.XmlDocSig) let GetXmlDocSigOfValRef g (tcref:TyconRef) (vref:ValRef) = match libFileOfEntityRef tcref with | None -> XmlCommentNone | Some ccuFileName -> let v = vref.Deref if v.XmlDocSig = "" then v.XmlDocSig <- XmlDocSigOfVal g (buildAccessPath vref.TopValActualParent.CompilationPathOpt) v XmlCommentSignature (ccuFileName, v.XmlDocSig) let GetXmlDocSigOfRecdFieldInfo (rfinfo:RecdFieldInfo) = let tcref = rfinfo.TyconRef match libFileOfEntityRef tcref with | None -> XmlCommentNone | Some ccuFileName -> if rfinfo.RecdField.XmlDocSig = "" then rfinfo.RecdField.XmlDocSig <- XmlDocSigOfField "" rfinfo.Name tcref.CompiledRepresentationForNamedType.FullName XmlCommentSignature (ccuFileName, rfinfo.RecdField.XmlDocSig) let GetXmlDocSigOfUnionCaseInfo (ucinfo:UnionCaseInfo) = let tcref = ucinfo.TyconRef match libFileOfEntityRef tcref with | None -> XmlCommentNone | Some ccuFileName -> if ucinfo.UnionCase.XmlDocSig = "" then ucinfo.UnionCase.XmlDocSig <- XmlDocSigOfUnionCase "" ucinfo.Name tcref.CompiledRepresentationForNamedType.FullName XmlCommentSignature (ccuFileName, ucinfo.UnionCase.XmlDocSig) let GetXmlDocSigOfMethInfo (infoReader:InfoReader) m (minfo:MethInfo) = let amap = infoReader.amap match minfo with | FSMeth (g,typ,vref,_) -> let tcref = tcrefOfAppTy g typ GetXmlDocSigOfValRef g tcref vref | ILMeth (g,ilminfo,_) -> let tinfo,isExt,mdef,fmtps= match ilminfo with | ILMethInfo(tinfo,isExt,mdef,fmtps) -> Some tinfo,isExt,mdef,fmtps | ILFSMethInfo(_,_,isExt,mdef) -> None,isExt,mdef,[] let actualTypeName,tcref = match tinfo,isExt with | _,Some ext -> ext.FullName, Import.ImportILTypeRef amap m ext | Some tinfo,None -> tinfo.ILTypeRef.FullName, tinfo.TyconRef | _ -> failwith "cannot happen" let genArity = if fmtps.Length=0 then "" else sprintf "``%d" fmtps.Length match metaInfoOfEntityRef infoReader m tcref with | None -> XmlCommentNone | Some (ccuFileName,formalTypars,formalTypeInfo) -> let filminfo = ILMethInfo(formalTypeInfo,isExt,mdef,fmtps) let args = match isExt with | Some _ -> filminfo.GetRawArgTypes(amap,m,minfo.FormalMethodInst) | None -> filminfo.GetParamTypes(amap,m,minfo.FormalMethodInst) // http://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx // If the name of the item itself has periods, they are replaced by the hash-sign ('#'). It is assumed that no item has a hash-sign directly in its name. For example, the fully qualified name of the String constructor would be "System.String.#ctor". let normalizedName = mdef.Name.Replace(".","#") XmlCommentSignature (ccuFileName,"M:"+actualTypeName+"."+normalizedName+genArity+XmlDocArgsEnc g (formalTypars,fmtps) args) | DefaultStructCtor _ -> XmlCommentNone #if EXTENSIONTYPING | ProvidedMeth _ -> XmlCommentNone #endif /// This function gets the signature to pass to Visual Studio to use its lookup functions for .NET stuff. let rec GetXmlDocHelpSigOfItemForLookup (infoReader:InfoReader) m d = let amap = infoReader.amap let g = infoReader.g match d with | Item.ActivePatternCase (APElemRef(_, vref, _)) | Item.Value vref | Item.CustomBuilder (_,vref) -> if not vref.IsLocalRef then match vref.nlr.Ccu.FileName with | Some ccuFileName -> let v = vref.Deref if v.XmlDocSig = "" then v.XmlDocSig <- XmlDocSigOfVal g vref.TopValActualParent.CompiledRepresentationForNamedType.Name v XmlCommentSignature (ccuFileName, v.XmlDocSig) | None -> XmlCommentNone else XmlCommentNone | Item.UnionCase ucinfo -> GetXmlDocSigOfUnionCaseInfo ucinfo | Item.ExnCase tcref -> GetXmlDocSigOfEntityRef infoReader m tcref | Item.RecdField rfinfo -> GetXmlDocSigOfRecdFieldInfo rfinfo | Item.NewDef _ -> XmlCommentNone | Item.ILField(ILFieldInfo(tinfo, fdef)) -> match metaInfoOfEntityRef infoReader m tinfo.TyconRef with | None -> XmlCommentNone | Some (ccuFileName,_,formalTypeInfo) -> XmlCommentSignature(ccuFileName,"F:"+formalTypeInfo.ILTypeRef.FullName+"."+fdef.Name) | Item.Types(_,((TType_app(tcref,_)) :: _)) -> GetXmlDocSigOfEntityRef infoReader m tcref | Item.CustomOperation (_,_,Some minfo) -> GetXmlDocSigOfMethInfo infoReader m minfo | Item.TypeVar _ -> XmlCommentNone | Item.ModuleOrNamespaces(modref :: _) -> GetXmlDocSigOfEntityRef infoReader m modref | Item.Property(_,(pinfo :: _)) -> match pinfo with #if EXTENSIONTYPING | ProvidedProp _ -> XmlCommentNone // No signature is possible. If an xml comment existed it would have been returned by PropInfo.XmlDoc in infos.fs #endif | FSProp (g,typ,_,_) as fspinfo -> let tcref = tcrefOfAppTy g typ match fspinfo.ArbitraryValRef with | None -> XmlCommentNone | Some vref -> GetXmlDocSigOfValRef g tcref vref | ILProp(g, (ILPropInfo(tinfo,pdef))) -> let tcref = tinfo.TyconRef match metaInfoOfEntityRef infoReader m tcref with | None -> XmlCommentNone | Some (ccuFileName,formalTypars,formalTypeInfo) -> let filpinfo = ILPropInfo(formalTypeInfo,pdef) XmlCommentSignature (ccuFileName,"P:"+formalTypeInfo.ILTypeRef.FullName+"."+pdef.Name+XmlDocArgsEnc g (formalTypars,[]) (filpinfo.GetParamTypes(amap,m))) | Item.Event(ILEvent(_,ilEventInfo) as einfo) -> let tinfo = ilEventInfo.ILTypeInfo let tcref = tinfo.TyconRef match metaInfoOfEntityRef infoReader m tcref with | None -> XmlCommentNone | Some (ccuFileName,_,formalTypeInfo) -> XmlCommentSignature(ccuFileName,"E:"+formalTypeInfo.ILTypeRef.FullName+"."+einfo.EventName) | Item.MethodGroup(_,minfo :: _) -> GetXmlDocSigOfMethInfo infoReader m minfo | Item.CtorGroup(_,minfo :: _) -> GetXmlDocSigOfMethInfo infoReader m minfo | _ -> XmlCommentNone /// Produce an XmlComment with a signature or raw text. let GetXmlComment (xmlDoc:XmlDoc) (infoReader:InfoReader) m d : XmlComment = let result = match xmlDoc with | XmlDoc [| |] -> "" | XmlDoc l -> bufs (fun os -> bprintf os "\n"; l |> Array.iter (fun (s:string) -> // Note: this code runs for local/within-project xmldoc tooltips, but not for cross-project or .XML bprintf os "\n%s" s)) let xml = if String.IsNullOrEmpty result then XmlCommentNone else XmlCommentText result match xml with | XmlCommentNone -> GetXmlDocHelpSigOfItemForLookup infoReader m d | _ -> xml /// Output a method info let FormatOverloadsToList (infoReader:InfoReader) m denv d minfos : DataTipElement = let formatOne minfo = let text = bufs (fun os -> NicePrint.formatMethInfoToBufferFreeStyle infoReader.amap m denv os minfo) let xml = GetXmlComment (if minfo.HasDirectXmlComment then minfo.XmlDoc else XmlDoc [||]) infoReader m d text,xml let result = DataTipElementGroup(minfos |> List.map formatOne) match !TestHooks.FormatOverloadsToList with | Some hook -> hook result | None -> result let pubpath_of_vref (v:ValRef) = v.PublicPath let pubpath_of_tcref (x:TyconRef) = x.PublicPath // Wrapper type for use by the 'partialDistinctBy' function [] type WrapType<'T> = Wrap of 'T // Like Seq.distinctBy but only filters out duplicates for some of the elements let partialDistinctBy (per:IPartialEqualityComparer<_>) seq = // Wrap a Wrap _ aroud all keys in case the key type is itself a type using null as a representation let dict = new Dictionary,obj>(per) seq |> List.filter (fun v -> let v = Wrap(v) if (per.InEqualityRelation(v)) then if dict.ContainsKey(v) then false else (dict.[v] <- null; true) else true) let (|ItemWhereTypIsPreferred|_|) item = match item with | Item.DelegateCtor ty | Item.CtorGroup(_, [DefaultStructCtor(_,ty)]) | Item.FakeInterfaceCtor ty | Item.Types(_,[ty]) -> Some ty | _ -> None /// Specifies functions for comparing 'Item' objects with respect to the user /// (this means that some values that are not technically equal are treated as equal /// if this is what we want to show to the user, because we're comparing just the name // for some cases e.g. when using 'fullDisplayTextOfModRef') let ItemDisplayPartialEquality g = { new IPartialEqualityComparer<_> with member x.InEqualityRelation item = match item with | Wrap(Item.Types(_,[_])) -> true | Wrap(Item.ILField(ILFieldInfo _)) -> true | Wrap(Item.RecdField _) -> true | Wrap(Item.SetterArg _) -> true | Wrap(Item.TypeVar _) -> true | Wrap(Item.CustomOperation _) -> true | Wrap(Item.ModuleOrNamespaces(_ :: _)) -> true | Wrap(Item.MethodGroup _) -> true | Wrap(Item.Value _ | Item.CustomBuilder _) -> true | Wrap(Item.ActivePatternCase _) -> true | Wrap(Item.DelegateCtor _) -> true | Wrap(Item.UnionCase _) -> true | Wrap(Item.ExnCase _) -> true | Wrap(Item.Event _) -> true | Wrap(Item.Property _) -> true | Wrap(Item.CtorGroup _) -> true | _ -> false member x.Equals(item1, item2) = // This may explore assemblies that are not in the reference set. // In this case just bail out and assume items are not equal protectAssemblyExploration false (fun () -> let equalTypes(ty1, ty2) = if isAppTy g ty1 && isAppTy g ty2 then tyconRefEq g (tcrefOfAppTy g ty1) (tcrefOfAppTy g ty2) else typeEquiv g ty1 ty2 match item1,item2 with | Wrap(Item.DelegateCtor(ty1)), Wrap(Item.DelegateCtor(ty2)) -> equalTypes(ty1, ty2) | Wrap(Item.Types(dn1,[ty1])), Wrap(Item.Types(dn2,[ty2])) -> // Bug 4403: We need to compare names as well, because 'int' and 'Int32' are physically the same type, but we want to show both dn1 = dn2 && equalTypes(ty1, ty2) // Prefer a type to a DefaultStructCtor, a DelegateCtor and a FakeInterfaceCtor | Wrap(ItemWhereTypIsPreferred(ty1)), Wrap(ItemWhereTypIsPreferred(ty2)) -> equalTypes(ty1, ty2) | Wrap(Item.ExnCase(tcref1)), Wrap(Item.ExnCase(tcref2)) -> tyconRefEq g tcref1 tcref2 | Wrap(Item.ILField(ILFieldInfo(_, fld1))), Wrap(Item.ILField(ILFieldInfo(_, fld2))) -> fld1 === fld2 // reference equality on the object identity of the AbstractIL metadata blobs for the fields | Wrap(Item.CustomOperation (_,_,Some minfo1)), Wrap(Item.CustomOperation (_,_,Some minfo2)) -> Infos.MethInfosUseIdenticalDefinitions () minfo1 minfo2 | Wrap(Item.TypeVar nm1), Wrap(Item.TypeVar nm2) -> (nm1 = nm2) | Wrap(Item.ModuleOrNamespaces(modref1 :: _)), Wrap(Item.ModuleOrNamespaces(modref2 :: _)) -> fullDisplayTextOfModRef modref1 = fullDisplayTextOfModRef modref2 | Wrap(Item.SetterArg(id1,_)), Wrap(Item.SetterArg(id2,_)) -> (id1.idRange, id1.idText) = (id2.idRange, id2.idText) | Wrap(Item.MethodGroup(_, meths1)), Wrap(Item.MethodGroup(_, meths2)) -> Seq.zip meths1 meths2 |> Seq.forall (fun (minfo1, minfo2) -> Infos.MethInfosUseIdenticalDefinitions () minfo1 minfo2) | Wrap(Item.Value vref1 | Item.CustomBuilder (_,vref1)), Wrap(Item.Value vref2 | Item.CustomBuilder (_,vref2)) -> valRefEq g vref1 vref2 | Wrap(Item.ActivePatternCase(APElemRef(_apinfo1, vref1, idx1))), Wrap(Item.ActivePatternCase(APElemRef(_apinfo2, vref2, idx2))) -> idx1 = idx2 && valRefEq g vref1 vref2 | Wrap(Item.UnionCase(UnionCaseInfo(_, ur1))), Wrap(Item.UnionCase(UnionCaseInfo(_, ur2))) -> g.unionCaseRefEq ur1 ur2 | Wrap(Item.RecdField(RecdFieldInfo(_, RFRef(tcref1, n1)))), Wrap(Item.RecdField(RecdFieldInfo(_, RFRef(tcref2, n2)))) -> (tyconRefEq g tcref1 tcref2) && (n1 = n2) // there is no direct function as in the previous case | Wrap(Item.Property(_, pi1s)), Wrap(Item.Property(_, pi2s)) -> List.zip pi1s pi2s |> List.forall(fun (pi1, pi2) -> Infos.PropInfosUseIdenticalDefinitions pi1 pi2) | Wrap(Item.Event(evt1)), Wrap(Item.Event(evt2)) -> Infos.EventInfosUseIdenticalDefintions evt1 evt2 | Wrap(Item.CtorGroup(_, meths1)), Wrap(Item.CtorGroup(_, meths2)) -> Seq.zip meths1 meths2 |> Seq.forall (fun (minfo1, minfo2) -> Infos.MethInfosUseIdenticalDefinitions () minfo1 minfo2) | _ -> false) member x.GetHashCode item = // This may explore assemblies that are not in the reference set. // In this case just bail out and use a random hash code protectAssemblyExploration 1027 (fun () -> match item with | Wrap(ItemWhereTypIsPreferred ty) -> if isAppTy g ty then hash (tcrefOfAppTy g ty).Stamp else 1010 | Wrap(Item.ILField(ILFieldInfo(_, fld))) -> System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode fld // hash on the object identity of the AbstractIL metadata blob for the field | Wrap(Item.TypeVar nm) -> hash nm | Wrap(Item.CustomOperation (_,_,Some minfo)) -> Infos.GetMethInfoHashCode minfo | Wrap(Item.CustomOperation (_,_,None)) -> 1 | Wrap(Item.ModuleOrNamespaces(modref :: _)) -> hash (fullDisplayTextOfModRef modref) | Wrap(Item.SetterArg(id,_)) -> hash (id.idRange, id.idText) | Wrap(Item.MethodGroup(_, meths)) -> meths |> List.fold (fun st a -> st + (Infos.GetMethInfoHashCode(a))) 0 | Wrap(Item.CtorGroup(name, meths)) -> name.GetHashCode() + (meths |> List.fold (fun st a -> st + (Infos.GetMethInfoHashCode(a))) 0) | Wrap(Item.Value vref | Item.CustomBuilder (_,vref)) -> hash vref.LogicalName | Wrap(Item.ActivePatternCase(APElemRef(_apinfo, vref, idx))) -> hash (vref.LogicalName, idx) | Wrap(Item.ExnCase(tcref)) -> hash tcref.Stamp | Wrap(Item.UnionCase(UnionCaseInfo(_, UCRef(tcref, n)))) -> hash(tcref.Stamp, n) | Wrap(Item.RecdField(RecdFieldInfo(_, RFRef(tcref, n)))) -> hash(tcref.Stamp, n) | Wrap(Item.Event evt) -> Infos.GetEventInfoHashCode(evt) | Wrap(Item.Property(_name, pis)) -> hash (pis |> List.map Infos.GetPropInfoHashCode) | _ -> failwith "unreachable") } // Remove items containing the same module references let RemoveDuplicateModuleRefs modrefs = modrefs |> partialDistinctBy { new IPartialEqualityComparer> with member x.InEqualityRelation _ = true member x.Equals(Wrap(item1), Wrap(item2)) = (fullDisplayTextOfModRef item1 = fullDisplayTextOfModRef item2) member x.GetHashCode(Wrap(item)) = hash item.Stamp } /// Remove all duplicate items let RemoveDuplicateItems g items = items |> partialDistinctBy (ItemDisplayPartialEquality g) /// Filter types that are explicitly suppressed from the IntelliSense (such as uppercase "FSharpList", "Option", etc.) let RemoveExplicitlySuppressed g items = items |> List.filter (fun item -> // This may explore assemblies that are not in the reference set. // In this case just assume the item is not suppressed. protectAssemblyExploration true (fun () -> match item with | Item.Types(it, [ty]) -> g.suppressed_types |> List.forall (fun supp -> if isAppTy g ty then // check if they are the same logical type (after removing all abbreviations) let tcr1 = tcrefOfAppTy g ty let tcr2 = tcrefOfAppTy g (generalizedTyconRef supp) not(tyconRefEq g tcr1 tcr2 && // check the display name is precisely the one we're suppressing it = supp.DisplayName) else true ) | _ -> true )) let SimplerDisplayEnv denv _isDeclInfo = { denv with suppressInlineKeyword=true; shortConstraints=true; showConstraintTyparAnnotations=false; abbreviateAdditionalConstraints=false; suppressNestedTypes=true; maxMembers=Some EnvMisc2.maxMembers } /// Output a the description of a language item let rec FormatItemDescriptionToDataTipElement isDeclInfo (infoReader:InfoReader) m denv d = let g = infoReader.g let amap = infoReader.amap let denv = SimplerDisplayEnv denv isDeclInfo match d with | Item.Value vref | Item.CustomBuilder (_,vref) -> let text = bufs (fun os -> NicePrint.outputQualifiedValOrMember denv os vref.Deref OutputFullName isDeclInfo pubpath_of_vref fullDisplayTextOfValRef os vref; // adjust the type in case this is the 'this' pointer stored in a reference cell let ty = StripSelfRefCell(g, vref.BaseOrThisInfo, vref.Type) OutputUsefulTypeInfo isDeclInfo infoReader m denv os ty) let xml = GetXmlComment (if (valRefInThisAssembly g.compilingFslib vref) then vref.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Union tags (constructors) | Item.UnionCase ucinfo -> let uc = ucinfo.UnionCase let rty = generalizedTyconRef ucinfo.TyconRef let recd = uc.RecdFields let ty = if isNil recd then rty else (mkTupledTy g (recd |> List.map (fun rfld -> rfld.FormalType))) --> rty let text = bufs (fun os -> bprintf os "%s " (FSComp.SR.typeInfoUnionCase()) NicePrint.outputTyconRef denv os ucinfo.TyconRef bprintf os ".%s: " (DecompileOpName uc.Id.idText) NicePrint.outputTy denv os ty) let xml = GetXmlComment (if (tyconRefUsesLocalXmlDoc g.compilingFslib ucinfo.TyconRef) then uc.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Active pattern tag inside the declaration (result) | Item.ActivePatternResult(APInfo(_, items), ty, idx, _) -> let text = bufs (fun os -> bprintf os "%s %s: " (FSComp.SR.typeInfoActivePatternResult()) (List.nth items idx) NicePrint.outputTy denv os ty) let xml = GetXmlComment (XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Active pattern tags // XmlDoc is never emitted to xml doc files for these | Item.ActivePatternCase apref -> let v = apref.ActivePatternVal // Format the type parameters to get e.g. ('a -> 'a) rather than ('?1234 -> '?1234) let _,tau = v.TypeScheme // REVIEW: use _cxs here let _, ptau, _cxs = PrettyTypes.PrettifyTypes1 denv.g tau let text = bufs (fun os -> bprintf os "%s %s: " (FSComp.SR.typeInfoActiveRecognizer()) apref.Name NicePrint.outputTy denv os ptau OutputFullName isDeclInfo pubpath_of_vref fullDisplayTextOfValRef os v) let xml = GetXmlComment v.XmlDoc infoReader m d DataTipElement(text, xml) // F# exception names | Item.ExnCase ecref -> let text = bufs (fun os -> NicePrint.outputExnDef denv os ecref.Deref OutputFullName isDeclInfo pubpath_of_tcref fullDisplayTextOfExnRef os ecref) let xml = GetXmlComment (if (tyconRefUsesLocalXmlDoc g.compilingFslib ecref) then ecref.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // F# record field names | Item.RecdField rfinfo -> let rfield = rfinfo.RecdField let _, ty, _cxs = PrettyTypes.PrettifyTypes1 g rfinfo.FieldType let text = bufs (fun os -> NicePrint.outputTyconRef denv os rfinfo.TyconRef bprintf os ".%s: " (DecompileOpName rfield.Name) NicePrint.outputTy denv os ty; match rfinfo.LiteralValue with | None -> () | Some lit -> try bprintf os " = %s" (Layout.showL ( NicePrint.layoutConst denv.g ty lit )) with _ -> ()) let xml = GetXmlComment (if (tyconRefUsesLocalXmlDoc g.compilingFslib rfinfo.TyconRef) then rfield.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Not used | Item.NewDef id -> let dataTip = bufs (fun os -> bprintf os "%s %s" (FSComp.SR.typeInfoPatternVariable()) id.idText) DataTipElement(dataTip, GetXmlComment (XmlDoc [||]) infoReader m d) // .NET fields | Item.ILField finfo -> let dataTip = bufs (fun os -> bprintf os "%s " (FSComp.SR.typeInfoField()) NicePrint.outputILTypeRef denv os finfo.ILTypeRef bprintf os "%s" finfo.FieldName; match finfo.LiteralValue with | None -> () | Some v -> try bprintf os " = %s" (Layout.showL ( NicePrint.layoutConst denv.g (finfo.FieldType(infoReader.amap, m)) (TypeChecker.TcFieldInit m v) )) with _ -> ()) DataTipElement(dataTip, GetXmlComment (XmlDoc [||]) infoReader m d) // .NET events | Item.Event einfo -> let rty = PropTypOfEventInfo infoReader m AccessibleFromSomewhere einfo let _,rty, _cxs = PrettyTypes.PrettifyTypes1 g rty let text = bufs (fun os -> // REVIEW: use _cxs here bprintf os "%s " (FSComp.SR.typeInfoEvent()) NicePrint.outputTyconRef denv os (tcrefOfAppTy g einfo.EnclosingType) bprintf os ".%s: " einfo.EventName NicePrint.outputTy denv os rty) // Hosted comments are simulated by hanging them off of the property with // a TypeProviderXmlDocAttribute let xml = GetXmlComment (if einfo.HasDirectXmlComment then einfo.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // F# and .NET properties | Item.Property(_,pinfos) -> let pinfo = pinfos.Head let rty = pinfo.GetPropertyType(amap,m) let rty = if pinfo.IsIndexer then mkTupledTy g (pinfo.GetParamTypes(amap, m)) --> rty else rty let _, rty, _ = PrettyTypes.PrettifyTypes1 g rty let text = bufs (fun os -> // REVIEW: use _cxs here bprintf os "%s " (FSComp.SR.typeInfoProperty()) NicePrint.outputTyconRef denv os (tcrefOfAppTy g pinfo.EnclosingType) bprintf os ".%s: " pinfo.PropertyName NicePrint.outputTy denv os rty) let xml = GetXmlComment (if pinfo.HasDirectXmlComment then pinfo.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Custom operations in queries | Item.CustomOperation (customOpName,usageText,Some minfo) -> // Some fragments if we want the return type and/or parameter names //let rty = minfo.GetFSharpReturnTy(amap, m, minfo.FormalMethodInst) //let _, tys, _= PrettyTypes.PrettifyTypesN g ([ for (_,argTy) in argNamesAndTys -> argTy] @ [rty]) //let argTys, rty = List.frontAndBack tys //let paramDatas = (argNames,argTys) ||> List.map2 (fun argName argTy -> ParamData(false,false,OptionalArgInfo.NotOptional,argName |> Option.map (fun i -> i.idText),argTy)) // Build 'custom operation: where (bool) // // Calls QueryBuilder.Where' let text = bufs (fun os -> bprintf os "%s: " (FSComp.SR.typeInfoCustomOperation()) match usageText() with | Some t -> bprintf os "%s" t | None -> let argTys = ParamNameAndTypesOfUnaryCustomOperation g minfo |> List.map (fun (ParamNameAndType(_,ty)) -> ty) let _, argTys, _ = PrettyTypes.PrettifyTypesN g argTys bprintf os "%s" customOpName for argTy in argTys do bprintf os " (" NicePrint.outputTy denv os argTy bprintf os ")" bprintf os "\n\n%s " (FSComp.SR.typeInfoCallsWord()) NicePrint.outputTyconRef denv os (tcrefOfAppTy g minfo.EnclosingType) bprintf os ".%s " minfo.DisplayName) let xml = GetXmlComment (if minfo.HasDirectXmlComment then minfo.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // F# constructors and methods | Item.CtorGroup(_,minfos) | Item.MethodGroup(_,minfos) -> FormatOverloadsToList infoReader m denv d minfos // The 'fake' zero-argument constructors of .NET interfaces. // This ideally should never appear in intellisense, but we do get here in repros like: // type IFoo = abstract F : int // type II = IFoo // remove 'type II = ' and quickly hover over IFoo before it gets squiggled for 'invalid use of interface type' // and in that case we'll just show the interface type name. | Item.FakeInterfaceCtor typ -> let _, typ, _ = PrettyTypes.PrettifyTypes1 g typ let text = bufs (fun os -> NicePrint.outputTyconRef denv os (tcrefOfAppTy g typ)) DataTipElement(text, GetXmlComment (XmlDoc [||]) infoReader m d) // The 'fake' representation of constructors of .NET delegate types | Item.DelegateCtor delty -> let _, delty, _cxs = PrettyTypes.PrettifyTypes1 g delty let (SigOfFunctionForDelegate(_, _, _, fty)) = GetSigOfFunctionForDelegate infoReader delty m AccessibleFromSomewhere let text = bufs (fun os -> NicePrint.outputTyconRef denv os (tcrefOfAppTy g delty) bprintf os "(" NicePrint.outputTy denv os fty bprintf os ")") let xml = GetXmlComment (XmlDoc [||]) infoReader m d DataTipElement(text, xml) // Types. | Item.Types(_,((TType_app(tcref,_) as typ):: _)) -> let text = bufs (fun os -> //let width = 100 let denv = { denv with shortTypeNames = true } NicePrint.outputTycon denv infoReader AccessibleFromSomewhere m (* width *) os tcref.Deref; OutputFullName isDeclInfo pubpath_of_tcref fullDisplayTextOfTyconRef os tcref; OutputUsefulTypeInfo isDeclInfo infoReader m denv os typ) let xml = GetXmlComment (if (tyconRefUsesLocalXmlDoc g.compilingFslib tcref) then tcref.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(text, xml) // F# Modules and namespaces | Item.ModuleOrNamespaces((modref :: _) as modrefs) -> let os = StringBuilder() let modrefs = modrefs |> RemoveDuplicateModuleRefs let definiteNamespace = modrefs |> List.forall (fun modref -> modref.IsNamespace) let kind = if definiteNamespace then FSComp.SR.typeInfoNamespace() elif modrefs |> List.forall (fun modref -> modref.IsModule) then FSComp.SR.typeInfoModule() else FSComp.SR.typeInfoNamespaceOrModule() bprintf os "%s %s" kind (if definiteNamespace then fullDisplayTextOfModRef modref else modref.DemangledModuleOrNamespaceName) if not definiteNamespace then let namesToAdd = ([],modrefs) ||> Seq.fold (fun st modref -> match fullDisplayTextOfParentOfModRef modref with | Some(txt) -> txt::st | _ -> st) |> Seq.mapi (fun i x -> i,x) |> Seq.toList if nonNil namesToAdd then bprintf os "\n" for i, txt in namesToAdd do bprintf os "\n%s" ((if i = 0 then FSComp.SR.typeInfoFromFirst else FSComp.SR.typeInfoFromNext) txt) let xml = GetXmlComment (if (entityRefInThisAssembly g.compilingFslib modref) then modref.XmlDoc else XmlDoc [||]) infoReader m d DataTipElement(os.ToString(), xml) else DataTipElement(os.ToString(), GetXmlComment (XmlDoc [||]) infoReader m d) // Named parameters | Item.ArgName (id, argTy) -> let _, argTy, _ = PrettyTypes.PrettifyTypes1 g argTy let text = bufs (fun os -> bprintf os "%s %s : " (FSComp.SR.typeInfoArgument()) id.idText NicePrint.outputTy denv os argTy) let xml = GetXmlComment (XmlDoc [||]) infoReader m d DataTipElement(text, xml) | Item.SetterArg (_, item) -> FormatItemDescriptionToDataTipElement isDeclInfo infoReader m denv item | _ -> DataTipElementNone // Format the return type of an item let rec FormatItemReturnTypeToBuffer (infoReader:InfoReader) m denv os d = let isDeclInfo = false let g = infoReader.g let amap = infoReader.amap let denv = {SimplerDisplayEnv denv isDeclInfo with useColonForReturnType=true} match d with | Item.Value vref | Item.CustomBuilder (_,vref) -> let _, tau = vref.TypeScheme (* Note: prettify BEFORE we strip to make sure params look the same as types *) if isFunTy g tau then let dtau,rtau = destFunTy g tau let ptausL,tpcsL = NicePrint.layoutPrettifiedTypes denv [dtau;rtau] let _,prtauL = List.frontAndBack ptausL bprintf os ": " bufferL os prtauL bprintf os " " bufferL os tpcsL else bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] tau) | Item.UnionCase ucinfo -> let rty = generalizedTyconRef ucinfo.TyconRef NicePrint.outputTy denv os rty | Item.ActivePatternCase(apref) -> let v = apref.ActivePatternVal let _, tau = v.TypeScheme let _, res = stripFunTy g tau let apinfo = Option.get (TryGetActivePatternInfo v) let apnames = apinfo.Names let aparity = apnames.Length let rty = if aparity <= 1 then res else List.nth (argsOfAppTy g res) apref.CaseIndex NicePrint.outputTy denv os rty | Item.ExnCase _ -> bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] g.exn_ty) | Item.RecdField(rfinfo) -> bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] rfinfo.FieldType); | Item.ILField(finfo) -> bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] (finfo.FieldType(amap,m))) | Item.Event(einfo) -> bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] (PropTypOfEventInfo infoReader m AccessibleFromSomewhere einfo)) | Item.Property(_,pinfos) -> let pinfo = List.head pinfos let rty = pinfo.GetPropertyType(amap,m) let layout = (NicePrint.layoutPrettifiedTypeAndConstraints denv [] rty) bufferL os layout | Item.CustomOperation (_,_,Some minfo) | Item.MethodGroup(_,(minfo :: _)) | Item.CtorGroup(_,(minfo :: _)) -> let rty = minfo.GetFSharpReturnTy(amap, m, minfo.FormalMethodInst) bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] rty) | Item.FakeInterfaceCtor typ | Item.DelegateCtor typ -> bufferL os (NicePrint.layoutPrettifiedTypeAndConstraints denv [] typ) | Item.TypeVar _ -> () | _ -> () let rec GetF1Keyword d : string option = let rec unwindTypeAbbrev (tcref : TyconRef) = match tcref.TypeAbbrev with | None -> Some tcref | Some typ -> match typ with | TType_app(tcref, _) -> unwindTypeAbbrev tcref | _ -> None let getKeywordForValRef (vref : ValRef) = let v = vref.Deref if v.IsModuleBinding then let tyconRef = v.TopValActualParent let paramsString = match v.Typars with | [] -> "" | l -> "``"+(List.length l).ToString() sprintf "%s.%s%s" (tyconRef |> ticksAndArgCountTextOfTyconRef) v.CompiledName paramsString |> Some else None let getKeywordForMethInfo (minfo : MethInfo) = match minfo with | FSMeth(_, _, vref, _) -> match vref.ActualParent with | Parent tcref -> (tcref |> ticksAndArgCountTextOfTyconRef)+"."+vref.CompiledName|> Some | ParentNone -> None | ILMeth (_,minfo,_) -> let tcref,isExt,mdef = match minfo with ILMethInfo(tinfo,isExt,mdef,_) -> tinfo.TyconRef,isExt,mdef | ILFSMethInfo(tcref,_,isExt,mdef) -> tcref,isExt,mdef let typeString = // Extension methods cannot appear in generic classes, so we do not need any ticks match isExt with | None -> tcref |> ticksAndArgCountTextOfTyconRef | Some iltyperef -> iltyperef.Name let paramString = let nGenericParams = mdef.GenericParams.Length if nGenericParams > 0 then "``"+(nGenericParams.ToString()) else "" sprintf "%s.%s%s" typeString mdef.Name paramString |> Some | DefaultStructCtor _ -> None #if EXTENSIONTYPING | ProvidedMeth _ -> None #endif match d with | Item.Value vref | Item.CustomBuilder (_,vref) -> getKeywordForValRef vref | Item.ActivePatternCase apref -> apref.ActivePatternVal |> getKeywordForValRef | Item.UnionCase ucinfo -> (ucinfo.TyconRef |> ticksAndArgCountTextOfTyconRef)+"."+ucinfo.Name |> Some | Item.RecdField rfi -> (rfi.TyconRef |> ticksAndArgCountTextOfTyconRef)+"."+rfi.Name |> Some | Item.ILField finfo -> match finfo with | ILFieldInfo(tinfo, fdef) -> (tinfo.TyconRef |> ticksAndArgCountTextOfTyconRef)+"."+fdef.Name |> Some #if EXTENSIONTYPING | ProvidedField _ -> None #endif | Item.Types(_,((TType_app(tcref,_)) :: _)) | Item.DelegateCtor(TType_app(tcref,_)) | Item.FakeInterfaceCtor(TType_app(tcref,_)) | Item.UnqualifiedType (tcref::_) | Item.ExnCase tcref -> unwindTypeAbbrev tcref |> Option.map ticksAndArgCountTextOfTyconRef // Pathological cases of the above | Item.Types _ | Item.DelegateCtor _ | Item.FakeInterfaceCtor _ | Item.UnqualifiedType [] -> None | Item.ModuleOrNamespaces modrefs -> match modrefs with | modref :: _ -> // namespaces from type providers need to be handled separately because they don't have compiled representation // otherwise we'll fail at tast.fs match modref.Deref.TypeReprInfo with #if EXTENSIONTYPING | TProvidedNamespaceExtensionPoint _ -> modref.CompilationPathOpt |> Option.bind (fun path -> // works similar to generation of xml-docs at tastops.fs, probably too similar // TODO: check if this code can be implemented using xml-doc generation functionality let prefix = path.AccessPath |> Seq.map fst |> String.concat "." let fullName = if prefix = "" then modref.CompiledName else prefix + "." + modref.CompiledName Some fullName ) #endif | _ -> modref.Deref.CompiledRepresentationForNamedType.FullName |> Some | [] -> None // Pathological case of the above | Item.Property(_,(pinfo :: _)) -> match pinfo with | FSProp(_, _, Some vref, _) | FSProp(_, _, _, Some vref) -> // per spec, extension members in F1 keywords are qualified with definition class match vref.ActualParent with | Parent tcref -> (tcref |> ticksAndArgCountTextOfTyconRef)+"."+vref.PropertyName|> Some | ParentNone -> None | ILProp(_, (ILPropInfo(tinfo,pdef))) -> let tcref = tinfo.TyconRef (tcref |> ticksAndArgCountTextOfTyconRef)+"."+pdef.Name |> Some | FSProp _ -> None #if EXTENSIONTYPING | ProvidedProp _ -> None #endif | Item.Property(_,[]) -> None // Pathological case of the above | Item.Event einfo -> match einfo with | ILEvent(_,ilEventInfo) -> let tinfo = ilEventInfo.ILTypeInfo let tcref = tinfo.TyconRef (tcref |> ticksAndArgCountTextOfTyconRef)+"."+einfo.EventName |> Some | FSEvent(_,pinfo,_,_) -> match pinfo.ArbitraryValRef with | Some vref -> // per spec, extension members in F1 keywords are qualified with definition class match vref.ActualParent with | Parent tcref -> (tcref |> ticksAndArgCountTextOfTyconRef)+"."+vref.PropertyName|> Some | ParentNone -> None | None -> None #if EXTENSIONTYPING | ProvidedEvent _ -> None #endif | Item.CtorGroup(_,minfos) -> match minfos with | [] -> None | FSMeth(_, _, vref, _) :: _ -> // per spec, extension members in F1 keywords are qualified with definition class match vref.ActualParent with | Parent tcref -> (tcref |> ticksAndArgCountTextOfTyconRef) + ".#ctor"|> Some | ParentNone -> None | (ILMeth (_,minfo,_)) :: _ -> let tcref = match minfo with ILMethInfo(tinfo,_,_,_) -> tinfo.TyconRef | ILFSMethInfo(tcref,_,_,_) -> tcref (tcref |> ticksAndArgCountTextOfTyconRef)+".#ctor" |> Some | (DefaultStructCtor (g,typ) :: _) -> let tcref = tcrefOfAppTy g typ (ticksAndArgCountTextOfTyconRef tcref) + ".#ctor" |> Some #if EXTENSIONTYPING | ProvidedMeth _::_ -> None #endif | Item.CustomOperation (_,_,Some minfo) -> getKeywordForMethInfo minfo | Item.MethodGroup(_,minfo :: _) -> getKeywordForMethInfo minfo | Item.SetterArg (_, propOrField) -> GetF1Keyword propOrField | Item.MethodGroup(_,[]) | Item.CustomOperation (_,_,None) // "into" | Item.NewDef _ // "let x$yz = ..." - no keyword | Item.ArgName _ // no keyword on named parameters | Item.TypeVar _ | Item.ImplicitOp _ | Item.ActivePatternResult _ // "let (|Foo|Bar|) = .. Fo$o ..." - no keyword -> None let FormatDescriptionOfItem isDeclInfo (infoReader:InfoReader) m denv d : DataTipElement = ErrorScope.Protect m (fun () -> FormatItemDescriptionToDataTipElement isDeclInfo infoReader m denv d) (fun err -> DataTipElementCompositionError(err)) let FormatReturnTypeOfItem (infoReader:InfoReader) m denv d = ErrorScope.Protect m (fun () -> bufs (fun buf -> FormatItemReturnTypeToBuffer infoReader m denv buf d)) (fun err -> err) // Compute the index of the VS glyph shown with an item in the Intellisense menu let GlyphOfItem(denv,d) = /// Find the glyph for the given representation. let ReprToGlyph(repr) = match repr with | TFsObjModelRepr om -> match om.fsobjmodel_kind with | TTyconClass -> iIconGroupClass | TTyconInterface -> iIconGroupInterface | TTyconStruct -> iIconGroupStruct | TTyconDelegate _ -> iIconGroupDelegate | TTyconEnum _ -> iIconGroupEnum | TRecdRepr _ -> iIconGroupType | TFiniteUnionRepr _ -> iIconGroupUnion | TILObjModelRepr(_,_,{tdKind=kind}) -> match kind with | ILTypeDefKind.Class -> iIconGroupClass | ILTypeDefKind.ValueType -> iIconGroupStruct | ILTypeDefKind.Interface -> iIconGroupInterface | ILTypeDefKind.Enum -> iIconGroupEnum | ILTypeDefKind.Delegate -> iIconGroupDelegate | ILTypeDefKind.Other _ -> iIconGroupTypedef | TAsmRepr _ -> iIconGroupTypedef | TMeasureableRepr _-> iIconGroupTypedef // $$$$ TODO: glyph for units-of-measure #if EXTENSIONTYPING | TProvidedTypeExtensionPoint _-> iIconGroupTypedef | TProvidedNamespaceExtensionPoint _-> iIconGroupTypedef #endif | TNoRepr -> iIconGroupClass // $$$$ TODO: glyph for abstract (no-representation) types /// Find the glyph for the given type representation. let rec TypToGlyph(typ) = if isAppTy denv.g typ then let tcref = tcrefOfAppTy denv.g typ tcref.TypeReprInfo |> ReprToGlyph elif isTupleTy denv.g typ then iIconGroupStruct elif isFunction denv.g typ then iIconGroupDelegate elif isTyparTy denv.g typ then iIconGroupStruct else iIconGroupTypedef /// Find the glyph for the given value representation. let ValueToGlyph(typ) = if isFunction denv.g typ then iIconGroupMethod else iIconGroupConstant /// Find the major glyph of the given named item. let NamedItemToMajorGlyph item = // This may explore assemblies that are not in the reference set, // e.g. for type abbreviations to types not in the reference set. // In this case just use iIconGroupClass. protectAssemblyExploration iIconGroupClass (fun () -> match item with | Item.Value(vref) | Item.CustomBuilder (_,vref) -> ValueToGlyph(vref.Type) | Item.Types(_,typ::_) -> TypToGlyph(stripTyEqns denv.g typ) | Item.UnionCase _ | Item.ActivePatternCase _ -> iIconGroupEnumMember | Item.ExnCase _ -> iIconGroupException | Item.RecdField _ -> iIconGroupFieldBlue | Item.ILField _ -> iIconGroupFieldBlue | Item.Event _ -> iIconGroupEvent | Item.Property _ -> iIconGroupProperty | Item.CtorGroup _ | Item.DelegateCtor _ | Item.FakeInterfaceCtor _ | Item.CustomOperation _ | Item.MethodGroup _ -> iIconGroupMethod | Item.TypeVar _ | Item.Types _ -> iIconGroupClass | Item.ModuleOrNamespaces(modref::_) -> if modref.IsNamespace then iIconGroupNameSpace else iIconGroupModule | Item.ArgName _ -> iIconGroupVariable | Item.SetterArg _ -> iIconGroupVariable | _ -> iIconGroupError) /// Find the minor glyph of the given named item. let NamedItemToMinorGlyph item = // This may explore assemblies that are not in the reference set, // e.g. for type abbreviations to types not in the reference set. // In this case just use iIconItemNormal. protectAssemblyExploration iIconItemNormal (fun () -> match item with | Item.Value(vref) when isFunction denv.g vref.Type -> iIconItemSpecial | _ -> iIconItemNormal) (6 * NamedItemToMajorGlyph(d)) + NamedItemToMinorGlyph(d) let string_is_prefix_of m n = String.length n >= String.length m && String.sub n 0 (String.length m) = m open ItemDescriptionsImpl //---------------------------------------------------------------------------- // Declarations //---------------------------------------------------------------------------- /// An intellisense declaration [] type Declaration(name, glyph:int, info) = let mutable descriptionTextHolder:DataTipText option = None let mutable task = null member decl.Name = name member decl.DescriptionText = match descriptionTextHolder with | Some descriptionText -> descriptionText | None -> match info with | Choice1Of2 (items, infoReader, m, denv, syncop, checkAlive) -> let work() = // syncop "Synchronous Operation" causes the lambda to execute on the background compiler thread, through the Reactor syncop (fun () -> // This is where we do some work which may touch TAST data structures owned by the IncrementalBuilder - infoReader, item etc. // It is written to be robust to a disposal of an IncrementalBuilder, in which case it will just return the empty string. // It is best to think of this as a "weak reference" to the IncrementalBuilder, i.e. this code is written to be robust to its // disposal. Yes, you are right to scratch your head here, but this is ok. let description = if checkAlive() then DataTipText(items |> Seq.toList |> List.map (FormatDescriptionOfItem true infoReader m denv)) else DataTipText [ DataTipElement(FSComp.SR.descriptionUnavailable(), XmlCommentNone) ] descriptionTextHolder<-Some description) // The dataTipSpinWaitTime limits how long we block the UI thread while a tooltip pops up next to a selected item in an IntelliSense completion list. // This time appears to be somewhat amortized by the time it takes the VS completion UI to actually bring up the tooltip after selecting an item in the first place. #if FX_NO_TASK if task = null then Async.Start (async { do work() }) task <- obj() let mutable wait = 0 while (wait < EnvMisc2.dataTipSpinWaitTime) && descriptionTextHolder.IsNone do System.Threading.Thread.Sleep 10 #else if task = null then // kick off the actual (non-cooperative) work task <- System.Threading.Tasks.Task.Factory.StartNew(fun() -> work()) // The dataTipSpinWaitTime limits how long we block the UI thread while a tooltip pops up next to a selected item in an IntelliSense completion list. // This time appears to be somewhat amortized by the time it takes the VS completion UI to actually bring up the tooltip after selecting an item in the first place. task.Wait EnvMisc2.dataTipSpinWaitTime |> ignore #endif match descriptionTextHolder with | Some text -> text | None -> DataTipText [ DataTipElement(FSComp.SR.loadingDescription(), XmlCommentNone) ] | Choice2Of2 result -> result member decl.Glyph = glyph /// A table of declarations for Intellisense completion [] type DeclarationSet(declarations: Declaration[]) = member self.Items = declarations member self.Count = declarations.Length member self.Name i = declarations.[i].Name member self.Description i : DataTipText = ErrorScope.Protect Range.range0 (fun () -> declarations.[i].DescriptionText) (fun err -> DataTipText [DataTipElementCompositionError err]) member self.Glyph i = declarations.[i].Glyph // Make a 'Declarations' object for a set of selected items static member Create(infoReader:InfoReader, m, denv, items, syncop:(unit->unit)->unit, checkAlive : unit -> bool) = let g = infoReader.g let items = items |> RemoveExplicitlySuppressed g // Sort by name. For things with the same name, // - show types with fewer generic parameters first // - show types before over other related items - they usually have very useful XmlDocs let items = items |> List.sortBy (fun d -> let n = match d with | Item.Types (_,(TType_app(tcref,_) :: _)) -> 1 + tcref.TyparsNoRange.Length // Put delegate ctors after types, sorted by #typars. RemoveDuplicateItems will remove FakeInterfaceCtor and DelegateCtor if an earlier type is also reported with this name | Item.FakeInterfaceCtor (TType_app(tcref,_)) | Item.DelegateCtor (TType_app(tcref,_)) -> 1000 + tcref.TyparsNoRange.Length // Put type ctors after types, sorted by #typars. RemoveDuplicateItems will remove DefaultStructCtors if a type is also reported with this name | Item.CtorGroup (_, (cinfo :: _)) -> 1000 + 10 * (tcrefOfAppTy g cinfo.EnclosingType).TyparsNoRange.Length | _ -> 0 (DisplayNameOfItem g d,n)) // Remove all duplicates. We've put the types first, so this removes the DelegateCtor and DefaultStructCtor's. let items = items |> RemoveDuplicateItems g if verbose then dprintf "service.ml: mkDecls: %d found groups after filtering\n" (List.length items); // Group by display name let items = items |> List.groupBy (fun d -> DisplayNameOfItem g d) // Filter out operators (and list) let items = // Check whether this item looks like an operator. let isOpItem(nm,item) = match item with | [Item.Value _] | [Item.MethodGroup(_,[_])] -> (IsOpName nm) && nm.[0]='(' && nm.[nm.Length-1]=')' | [Item.UnionCase _] -> IsOpName nm | _ -> false let isFSharpList nm = (nm = "[]") // list shows up as a Type and a UnionCase, only such entity with a symbolic name, but want to filter out of intellisense items |> List.filter (fun (nm,items) -> not (isOpItem(nm,items)) && not(isFSharpList nm)) let decls = // Filter out duplicate names items |> List.map (fun (nm,itemsWithSameName) -> match itemsWithSameName with | [] -> failwith "Unexpected empty bag" | items -> new Declaration(nm, GlyphOfItem(denv,items.Head), Choice1Of2 (items, infoReader, m, denv, syncop, checkAlive))) new DeclarationSet(Array.ofList decls) static member Error msg = new DeclarationSet([| new Declaration("", 0, Choice2Of2 (DataTipText [DataTipElementCompositionError msg])) |] ) static member Empty = new DeclarationSet([| |]) fsharp-3.0.34/src/fsharp/vs/ServiceLexing.fsi0000775000175000017500000001121012260314606020042 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for lexing. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open System.Collections.Generic /// Represents encoded information for the end-of-line continutation of lexing type (* internal *) LexState = int64 type ColorState = | Token = 1 | IfDefSkip = 3 | String = 4 | Comment = 5 | StringInComment = 6 | VerbatimStringInComment = 7 | CamlOnly = 8 | VerbatimString = 9 | SingleLineComment = 10 | EndLineThenSkip = 11 | EndLineThenToken = 12 | TripleQuoteString = 13 | TripleQuoteStringInComment = 14 | InitialState = 0 /// A line/column pair type (* internal *) Position = int * int /// A start-position/end-position pair type (* internal *) Range = Position * Position type (* internal *) TokenColorKind = | Default = 0 | Text = 0 | Keyword = 1 | Comment = 2 | Identifier = 3 | String = 4 | UpperIdentifier = 5 | InactiveCode = 7 | PreprocessorKeyword = 8 | Number = 9 | Operator = 10 #if COLORIZE_TYPES | TypeName = 11 #endif type (* internal *) TriggerClass = | None = 0x00000000 | MemberSelect = 0x00000001 | MatchBraces = 0x00000002 | ChoiceSelect = 0x00000004 | MethodTip = 0x000000F0 | ParamStart = 0x00000010 | ParamNext = 0x00000020 | ParamEnd = 0x00000040 type (* internal *) TokenCharKind = | Default = 0x00000000 | Text = 0x00000000 | Keyword = 0x00000001 | Identifier = 0x00000002 | String = 0x00000003 | Literal = 0x00000004 | Operator = 0x00000005 | Delimiter = 0x00000006 | WhiteSpace = 0x00000008 | LineComment = 0x00000009 | Comment = 0x0000000A /// Information about a particular token from the tokenizer type (* internal *) TokenInformation = { /// Left column of the token. LeftColumn:int /// Right column of the token. RightColumn:int ColorClass:TokenColorKind CharClass:TokenCharKind /// Actions taken when the token is typed TriggerClass:TriggerClass /// The tag is an integer identifier for the token Tag:int /// Provides additional information about the token TokenName:string; /// The full length consumed by this match, including delayed tokens (which can be ignored in naive lexers) FullMatchedLength: int } /// Object to tokenize a line of F# source code, starting with the given lexState. The lexState should be 0 for /// the first line of text. Returns an array of ranges of the text and two enumerations categorizing the /// tokens and characters covered by that range, i.e. TokenColorKind and TokenCharKind. The enumerations /// are somewhat adhoc but useful enough to give good colorization options to the user in an IDE. /// /// A new lexState is also returned. An IDE-plugin should in general cache the lexState /// values for each line of the edited code. [] type (* internal *) LineTokenizer = /// Scan one token from the line member ScanToken : lexState:LexState -> TokenInformation option * LexState static member ColorStateOfLexState : LexState -> ColorState static member LexStateOfColorState : ColorState -> LexState /// Tokenizer for a source file. Holds some expensive-to-compute resources at the scope of the file. [] type (* internal *) SourceTokenizer = new : conditionalDefines:string list * fileName:string -> SourceTokenizer member CreateLineTokenizer : lineText:string -> LineTokenizer member CreateBufferTokenizer : bufferFiller:(char[] * int * int -> int) -> LineTokenizer module internal TestExpose = val TokenInfo : Parser.token -> (TokenColorKind * TokenCharKind * TriggerClass) module internal Flags = val init : unit -> unitfsharp-3.0.34/src/fsharp/vs/Reactor.fsi0000775000175000017500000000332212260314606016677 0ustar chrischrisnamespace Microsoft.FSharp.Compiler.SourceCodeServices /// Reactor is intended to long-running, but interruptible operations to be interleaved /// with one-off synchronous or asynchronous operations. /// /// It is used to guard the global compiler state while maintaining responsiveness on /// the UI thread. module internal Reactor = /// Does one unit of work and returns true if there is more work to do. type BuildStepper = unit -> (* keep building *) bool /// A synchronous or asynchronous operation to perform type Operation = unit -> unit /// Reactor operations [] type Reactor = /// Start building. The build function will return true if there is more work to do. member StartBuilding : build:BuildStepper -> unit /// Start building the most recently building thing. member StartBuildingRecent : unit -> unit /// Halt the current build. member StopBuilding : unit -> unit /// Block until the current build is complete. member WaitForBackgroundCompile : unit -> unit /// Block while performing and operation. Restart the most recent build afterward. member SyncOp : op:Operation -> unit /// Start an operation and return immediately. Restart the most recent build after the operation is complete. member AsyncOp : op:Operation -> unit /// Block while performing and operation. Restart the most recent build afterward. member RunSyncOp : (unit -> 'T) -> 'T /// Start an operation and return an async handle to its result. member RunAsyncOp : (unit -> 'T) -> Async<'T> /// Get the reactor for FSharp.Compiler.dll val Reactor : unit -> Reactor fsharp-3.0.34/src/fsharp/vs/ServiceParseTreeWalk.fs0000775000175000017500000010230412260314606021161 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Internal.Utilities open System open System.Collections.Generic open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast module internal AstTraversal = // treat ranges as though they are half-open: [,) let rangeContainsPosLeftEdgeInclusive (m1:range) p = if posEq m1.Start m1.End then // the parser doesn't produce zero-width ranges, except in one case, for e.g. a block of lets that lacks a body // we treat the range [n,n) as containing position n posGeq p m1.Start && posGeq m1.End p else posGeq p m1.Start && // [ posGt m1.End p // ) // treat ranges as though they are fully open: (,) let rangeContainsPosEdgesExclusive (m1:range) p = posGt p m1.Start && posGt m1.End p /// used to track route during traversal AST [] type TraverseStep = | Expr of SynExpr | Module of SynModuleDecl | ModuleOrNamespace of SynModuleOrNamespace | TypeDefn of SynTypeDefn | MemberDefn of SynMemberDefn | MatchClause of SynMatchClause | Binding of SynBinding type TraversePath = TraverseStep list [] type AstVisitorBase<'T>() = /// VisitExpr(path, traverseSynExpr, defaultTraverse, expr) /// controls the behavior when a SynExpr is reached; it can just do /// defaultTraverse(expr) if you have no special logic for this node, and want the default processing to pick which sub-node to dive deeper into /// or can inject non-default behavior, which might incorporate: /// traverseSynExpr(subExpr) to recurse deeper on some particular sub-expression based on your own logic /// path helps to track AST nodes that were passed during traversal abstract VisitExpr : TraversePath * (SynExpr -> 'T option) * (SynExpr -> 'T option) * SynExpr -> 'T option /// VisitTypeAbbrev(ty,m), defaults to ignoring this leaf of the AST abstract VisitTypeAbbrev : SynType * range -> 'T option default this.VisitTypeAbbrev(_ty,_m) = None /// VisitImplicitInherit(defaultTraverse,ty,expr,m), defaults to just visiting expr abstract VisitImplicitInherit : (SynExpr -> 'T option) * SynType * SynExpr * range -> 'T option default this.VisitImplicitInherit(defaultTraverse, _ty, expr, _m) = defaultTraverse expr /// VisitModuleDecl allows overriding module declaration behavior abstract VisitModuleDecl : (SynModuleDecl -> 'T option) * SynModuleDecl -> 'T option default this.VisitModuleDecl(defaultTraverse, decl) = defaultTraverse decl /// VisitBinding allows overriding binding behavior (note: by default it would defaultTraverse expression) abstract VisitBinding : (SynBinding -> 'T option) * SynBinding -> 'T option default this.VisitBinding(defaultTraverse, binding) = defaultTraverse binding /// VisitMatchClause allows overriding clause behavior (note: by default it would defaultTraverse expression) abstract VisitMatchClause : (SynMatchClause -> 'T option) * SynMatchClause -> 'T option default this.VisitMatchClause(defaultTraverse, mc) = defaultTraverse mc // VisitInheritSynMemberDefn allows overriding inherit behavior (by default do nothing) abstract VisitInheritSynMemberDefn : SynComponentInfo * SynTypeDefnKind * SynType * SynMemberDefns * range -> 'T option default this.VisitInheritSynMemberDefn(_componentInfo, _typeDefnKind, _synType, _members, _range) = None // VisitInterfaceSynMemberDefnType allows overriding behavior for visiting interface member in types (by default - do nothing) abstract VisitInterfaceSynMemberDefnType : SynType -> 'T option default this.VisitInterfaceSynMemberDefnType(_synType) = None // VisitRecordField allows overriding behavior when visiting l.h.s. of constructed record instances abstract VisitRecordField : TraversePath * SynExpr option * LongIdentWithDots option -> 'T option default this.VisitRecordField (_path, _copyOpt, _recordField) = None let dive node range project = range,(fun() -> project node) let pick pos _line _col (outerRange:range) (_debugObj:obj) (diveResults:list) = match diveResults with | [] -> None | _ -> let isOrdered = #if DEBUG // ranges in a dive-and-pick group should be ordered diveResults |> Seq.pairwise |> Seq.forall (fun ((r1,_),(r2,_)) -> posGeq r2.Start r1.End) #else true #endif if not isOrdered then let s = sprintf "ServiceParseTreeWalk: not isOrdered: %A" (diveResults |> List.map (fun (r,_) -> r.ToShortString())) ignore s //System.Diagnostics.Debug.Assert(false, s) let outerContainsInner = #if DEBUG // ranges in a dive-and-pick group should be "under" the thing that contains them let innerTotalRange = diveResults |> List.map fst |> List.reduce unionRanges rangeContainsRange outerRange innerTotalRange #else ignore(outerRange) true #endif if not outerContainsInner then let s = sprintf "ServiceParseTreeWalk: not outerContainsInner: %A : %A" (outerRange.ToShortString()) (diveResults |> List.map (fun (r,_) -> r.ToShortString())) ignore s //System.Diagnostics.Debug.Assert(false, s) let isZeroWidth(r:range) = posEq r.Start r.End // the parser inserts some zero-width elements to represent the completions of incomplete constructs, but we should never 'dive' into them, since they don't represent actual user code match List.choose (fun (r,f) -> if rangeContainsPosLeftEdgeInclusive r pos && not(isZeroWidth r) then Some(f) else None) diveResults with | [] -> // No entity's range contained the desired position. However the ranges in the parse tree only span actual characters present in the file. // The cursor may be at whitespace between entities or after everything, so find the nearest entity with the range left of the position. let mutable e = diveResults.Head for r in diveResults do if posGt pos (fst r).Start then e <- r snd(e)() | [x] -> x() | _ -> #if DEBUG assert(false) failwithf "multiple disjoint AST node ranges claimed to contain (%d,%d) from %+A" _line _col _debugObj #else None #endif /// traverse an implementation file walking all the way down to SynExpr or TypeAbbrev at a particular location /// let internal Traverse(line, col, parseTree, visitor:AstVisitorBase<'T>) = let pos = Pos.fromVS line col // line was 0-based, need 1-based let pick x = pick pos line col x let rec traverseSynModuleDecl path (decl:SynModuleDecl) = let pick = pick decl.Range let defaultTraverse m = let path = TraverseStep.Module m :: path match m with | SynModuleDecl.ModuleAbbrev(_ident, _longIdent, _range) -> None | SynModuleDecl.NestedModule(_synComponentInfo, synModuleDecls, _, _range) -> synModuleDecls |> List.map (fun x -> dive x x.Range (traverseSynModuleDecl path)) |> pick decl | SynModuleDecl.Let(_, synBindingList, _range) -> synBindingList |> List.map (fun x -> dive x x.RangeOfBindingAndRhs (traverseSynBinding path)) |> pick decl | SynModuleDecl.DoExpr(_sequencePointInfoForBinding, synExpr, _range) -> traverseSynExpr path synExpr | SynModuleDecl.Types(synTypeDefnList, _range) -> synTypeDefnList |> List.map (fun x -> dive x x.Range (traverseSynTypeDefn path)) |> pick decl | SynModuleDecl.Exception(_synExceptionDefn, _range) -> None | SynModuleDecl.Open(_longIdent, _range) -> None | SynModuleDecl.Attributes(_synAttributes, _range) -> None | SynModuleDecl.HashDirective(_parsedHashDirective, _range) -> None | SynModuleDecl.NamespaceFragment(synModuleOrNamespace) -> traverseSynModuleOrNamespace path synModuleOrNamespace visitor.VisitModuleDecl(defaultTraverse, decl) and traverseSynModuleOrNamespace path (SynModuleOrNamespace(_longIdent, _isModule, synModuleDecls, _preXmlDoc, _synAttributes, _synAccessOpt, range) as mors) = let path = TraverseStep.ModuleOrNamespace mors :: path synModuleDecls |> List.map (fun x -> dive x x.Range (traverseSynModuleDecl path)) |> pick range mors and traverseSynExpr path (expr:SynExpr) = let pick = pick expr.Range let defaultTraverse e = let origPath = path let path = TraverseStep.Expr e :: path let traverseSynExpr = traverseSynExpr path match e with | SynExpr.Paren(synExpr, _, _, _parenRange) -> traverseSynExpr synExpr | SynExpr.Quote(_synExpr, _, synExpr2, _, _range) -> [//dive synExpr synExpr.Range traverseSynExpr // TODO, what is this? dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.Const(_synConst, _range) -> None | SynExpr.Typed(synExpr, _synType, _range) -> traverseSynExpr synExpr | SynExpr.Tuple(synExprList, _, _range) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr | SynExpr.ArrayOrList(_, synExprList, _range) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr | SynExpr.Record(inheritOpt,copyOpt,fields, _range) -> [ let diveIntoSeparator offsideColumn scPosOpt copyOpt = match scPosOpt with | Some scPos -> if posGeq pos scPos then visitor.VisitRecordField(path, copyOpt, None) // empty field after the inherits else None | None -> //semicolon position is not available - use offside rule if pos.Column = offsideColumn then visitor.VisitRecordField(path, copyOpt, None) // empty field after the inherits else None match inheritOpt with | Some(_ty,expr, _range, sepOpt, inheritRange) -> // dive into argument yield dive expr expr.Range (fun expr -> // special-case:caret is located in the offside position below inherit // inherit A() // $ if not (rangeContainsPos expr.Range pos) && sepOpt.IsNone && pos.Column = inheritRange.StartColumn then visitor.VisitRecordField(path, None, None) else traverseSynExpr expr ) match sepOpt with | Some (sep, scPosOpt) -> yield dive () sep (fun () -> // special case: caret is below 'inherit' + one or more fields are already defined // inherit A() // $ // field1 = 5 diveIntoSeparator inheritRange.StartColumn scPosOpt None ) | None -> () | _ -> () match copyOpt with | Some(expr, (withRange, _)) -> yield dive expr expr.Range traverseSynExpr yield dive () withRange (fun () -> if posGeq pos withRange.End then // special case: caret is after WITH // { x with $ } visitor.VisitRecordField (path, Some expr, None) else None ) | _ -> () let copyOpt = Option.map fst copyOpt for (field, _), e, sepOpt in fields do yield dive (path, copyOpt, Some field) field.Range (fun r -> if rangeContainsPos field.Range pos then visitor.VisitRecordField r else None ) let offsideColumn = match inheritOpt with | Some(_,_, _, _, inheritRange) -> inheritRange.StartColumn | None -> field.Range.StartColumn match e with | Some e -> yield dive e e.Range (fun expr -> // special case: caret is below field binding // field x = 5 // $ if not (rangeContainsPos e.Range pos) && sepOpt.IsNone && pos.Column = offsideColumn then visitor.VisitRecordField(path, copyOpt, None) else traverseSynExpr expr ) | None -> () match sepOpt with | Some (sep, scPosOpt) -> yield dive () sep (fun () -> // special case: caret is between field bindings // field1 = 5 // $ // field2 = 5 diveIntoSeparator offsideColumn scPosOpt copyOpt ) | _ -> () ] |> pick expr | SynExpr.New(_, _synType, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.ObjExpr(ty,baseCallOpt,binds,ifaces,_range1,_range2) -> let result = ifaces |> Seq.map (fun (InterfaceImpl(ty, _, _)) -> ty) |> Seq.tryPick visitor.VisitInterfaceSynMemberDefnType if result.IsSome then result else [ match baseCallOpt with | Some(expr,_) -> // this is like a call to 'new', so mock up a 'new' so we can recurse and use that existing logic let newCall = SynExpr.New(false, ty, expr, unionRanges ty.Range expr.Range) yield dive newCall newCall.Range traverseSynExpr | _ -> () for b in binds do yield dive b b.RangeOfBindingAndRhs (traverseSynBinding path) for InterfaceImpl(_ty, binds, _range) in ifaces do for b in binds do yield dive b b.RangeOfBindingAndRhs (traverseSynBinding path) ] |> pick expr | SynExpr.While(_sequencePointInfoForWhileLoop, synExpr, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.For(_sequencePointInfoForForLoop, _ident, synExpr, _, synExpr2, synExpr3, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr dive synExpr3 synExpr3.Range traverseSynExpr] |> pick expr | SynExpr.ForEach(_sequencePointInfoForForLoop, _seqExprOnly, _isFromSource, _synPat, synExpr, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.ArrayOrListOfSeqExpr(_, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.CompExpr(_, _, synExpr, _range) -> // now parser treats this syntactic expression as computation expression // { identifier } // here we detect this situation and treat CompExpr { Identifier } as attempt to create record // note: sequence expressions use SynExpr.CompExpr too - they need to be filtered out let isPartOfArrayOrList = match origPath with | TraverseStep.Expr(SynExpr.ArrayOrListOfSeqExpr(_, _, _)) :: _ -> true | _ -> false let ok = match isPartOfArrayOrList, synExpr with | false, SynExpr.Ident ident -> visitor.VisitRecordField(path, None, Some (LongIdentWithDots([ident], []))) | false, SynExpr.LongIdent(false, lidwd, _, _) -> visitor.VisitRecordField(path, None, Some lidwd) | _ -> None if ok.IsSome then ok else traverseSynExpr synExpr | SynExpr.Lambda(_, _, _synSimplePats, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.MatchLambda(_isExnMatch,_argm,synMatchClauseList,_spBind,_wholem) -> synMatchClauseList |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path)) |> pick expr | SynExpr.Match(_sequencePointInfoForBinding, synExpr, synMatchClauseList, _, _range) -> [yield dive synExpr synExpr.Range traverseSynExpr yield! synMatchClauseList |> List.map (fun x -> dive x x.RangeOfGuardAndRhs (traverseSynMatchClause path))] |> pick expr | SynExpr.Do(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.Assert(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.App(_exprAtomicFlag, isInfix, synExpr, synExpr2, _range) -> if isInfix then [dive synExpr2 synExpr2.Range traverseSynExpr dive synExpr synExpr.Range traverseSynExpr] // reverse the args |> pick expr else [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.TypeApp(synExpr, _, _synTypeList, _commas, _, _, _range) -> traverseSynExpr synExpr | SynExpr.LetOrUse(_, _, synBindingList, synExpr, _range) -> [yield! synBindingList |> List.map (fun x -> dive x x.RangeOfBindingAndRhs (traverseSynBinding path)) yield dive synExpr synExpr.Range traverseSynExpr] |> pick expr | SynExpr.TryWith(synExpr, _range, synMatchClauseList, _range2, _range3, _sequencePointInfoForTry, _sequencePointInfoForWith) -> [yield dive synExpr synExpr.Range traverseSynExpr yield! synMatchClauseList |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path))] |> pick expr | SynExpr.TryFinally(synExpr, synExpr2, _range, _sequencePointInfoForTry, _sequencePointInfoForFinally) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.Lazy(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.Sequential(_sequencePointInfoForSeq, _, synExpr, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.IfThenElse(synExpr, synExpr2, synExprOpt, _sequencePointInfoForBinding, _isRecovery, _range, _range2) -> [yield dive synExpr synExpr.Range traverseSynExpr yield dive synExpr2 synExpr2.Range traverseSynExpr match synExprOpt with | None -> () | Some(x) -> yield dive x x.Range traverseSynExpr] |> pick expr | SynExpr.Ident(_ident) -> None | SynExpr.LongIdent(_, _longIdent, _altNameRefCell, _range) -> None | SynExpr.LongIdentSet(_longIdent, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.DotGet(synExpr, _dotm, _longIdent, _range) -> traverseSynExpr synExpr | SynExpr.DotSet(synExpr, _longIdent, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.DotIndexedGet(synExpr, synExprList, _range, _range2) -> [yield dive synExpr synExpr.Range traverseSynExpr yield! synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr)] |> pick expr | SynExpr.DotIndexedSet(synExpr, synExprList, synExpr2, _, _range, _range2) -> [yield dive synExpr synExpr.Range traverseSynExpr yield! synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) yield dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.JoinIn(synExpr1, _range, synExpr2, _range2) -> [dive synExpr1 synExpr1.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.NamedIndexedPropertySet(_longIdent, synExpr, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.DotNamedIndexedPropertySet(synExpr, _longIdent, synExpr2, synExpr3, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr dive synExpr3 synExpr3.Range traverseSynExpr] |> pick expr | SynExpr.TypeTest(synExpr, _synType, _range) -> traverseSynExpr synExpr | SynExpr.Upcast(synExpr, _synType, _range) -> traverseSynExpr synExpr | SynExpr.Downcast(synExpr, _synType, _range) -> traverseSynExpr synExpr | SynExpr.InferredUpcast(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.InferredDowncast(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.Null(_range) -> None | SynExpr.AddressOf(_, synExpr, _range, _range2) -> traverseSynExpr synExpr | SynExpr.TraitCall(_synTyparList, _synMemberSig, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.ImplicitZero(_range) -> None | SynExpr.YieldOrReturn(_, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.YieldOrReturnFrom(_, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.LetOrUseBang(_sequencePointInfoForBinding, _, _, _synPat, synExpr, synExpr2, _range) -> [dive synExpr synExpr.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr] |> pick expr | SynExpr.DoBang(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.LibraryOnlyILAssembly _ -> None | SynExpr.LibraryOnlyStaticOptimization _ -> None | SynExpr.LibraryOnlyUnionCaseFieldGet _ -> None | SynExpr.LibraryOnlyUnionCaseFieldSet _ -> None | SynExpr.ArbitraryAfterError(_debugStr, _range) -> None | SynExpr.FromParseError(synExpr, _range) -> traverseSynExpr synExpr | SynExpr.DiscardAfterMissingQualificationAfterDot(synExpr, _range) -> traverseSynExpr synExpr visitor.VisitExpr(path, traverseSynExpr path, defaultTraverse, expr) and normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path traverseInherit (synMemberDefns:SynMemberDefns) = synMemberDefns // property getters are setters are two members that can have the same range, so do some somersaults to deal with this |> Seq.groupBy (fun x -> x.Range) |> Seq.choose (fun (r, mems) -> match mems |> Seq.toList with | [mem] -> // the typical case, a single member has this range 'r' Some (dive mem r (traverseSynMemberDefn path traverseInherit)) | [SynMemberDefn.Member(Binding(_,_,_,_,_,_,_,SynPat.LongIdent(lid1,Some(info1),_,_,_,_),_,_,_,_),_) as mem1 SynMemberDefn.Member(Binding(_,_,_,_,_,_,_,SynPat.LongIdent(lid2,Some(info2),_,_,_,_),_,_,_,_),_) as mem2] -> // can happen if one is a getter and one is a setter // ensure same long id assert( (lid1.Lid,lid2.Lid) ||> List.forall2 (fun x y -> x.idText = y.idText) ) // ensure one is getter, other is setter assert( (info1.idText="set" && info2.idText="get") || (info2.idText="set" && info1.idText="get") ) Some ( r,(fun() -> // both mem1 and mem2 have same range, would violate dive-and-pick assertions, so just try the first one, else try the second one: match traverseSynMemberDefn path (fun _ -> None) mem1 with | Some _ as x -> x | _ -> traverseSynMemberDefn path (fun _ -> None) mem2 ) ) | [] -> #if DEBUG assert(false) failwith "impossible, Seq.groupBy never returns empty results" #else // swallow AST error and recover silently None #endif | _ -> #if DEBUG assert(false) // more than 2 members claim to have the same range, this indicates a bug in the AST failwith "bug in AST" #else // swallow AST error and recover silently None #endif ) and traverseSynTypeDefn path (SynTypeDefn.TypeDefn(synComponentInfo, synTypeDefnRepr, synMemberDefns, tRange) as tydef) = let path = TraverseStep.TypeDefn tydef :: path [ match synTypeDefnRepr with | ObjectModel(synTypeDefnKind, synMemberDefns, _oRange) -> // traverse inherit function is used to capture type specific data required for processing Inherit part let traverseInherit (synType : SynType, range : range) = visitor.VisitInheritSynMemberDefn(synComponentInfo, synTypeDefnKind, synType, synMemberDefns, range) yield! synMemberDefns |> normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path traverseInherit | Simple(synTypeDefnSimpleRepr, _range) -> match synTypeDefnSimpleRepr with | SynTypeDefnSimpleRepr.TypeAbbrev(_,synType,m) -> yield dive synTypeDefnRepr synTypeDefnRepr.Range (fun _ -> visitor.VisitTypeAbbrev(synType,m)) | _ -> () // enums/DUs/record definitions don't have any SynExprs inside them yield! synMemberDefns |> normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path (fun _ -> None) ] |> pick tRange tydef and traverseSynMemberDefn path traverseInherit (m:SynMemberDefn) = let pick (debugObj:obj) = pick m.Range debugObj let path = TraverseStep.MemberDefn m :: path match m with | SynMemberDefn.Open(_longIdent, _range) -> None | SynMemberDefn.Member(synBinding, _range) -> traverseSynBinding path synBinding | SynMemberDefn.ImplicitCtor(_synAccessOption, _synAttributes, _synSimplePatList, _identOption, _range) -> None | SynMemberDefn.ImplicitInherit(synType, synExpr, _identOption, range) -> [ dive () synType.Range (fun () -> match traverseInherit (synType, range) with | None -> visitor.VisitImplicitInherit(traverseSynExpr path, synType, synExpr, range) | x -> x) dive () synExpr.Range (fun() -> visitor.VisitImplicitInherit(traverseSynExpr path, synType, synExpr, range) ) ] |> pick m | SynMemberDefn.AutoProperty(_attribs, _isStatic, _id, _tyOpt, _propKind, _, _xmlDoc, _access, synExpr, _, _) -> traverseSynExpr path synExpr | SynMemberDefn.LetBindings(synBindingList, _, _, _range) -> synBindingList |> List.map (fun x -> dive x x.RangeOfBindingAndRhs (traverseSynBinding path)) |> pick m | SynMemberDefn.AbstractSlot(_synValSig, _memberFlags, _range) -> None | SynMemberDefn.Interface(synType, synMemberDefnsOption, _range) -> match visitor.VisitInterfaceSynMemberDefnType(synType) with | None -> match synMemberDefnsOption with | None -> None | Some(x) -> [ yield! x |> normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path (fun _ -> None) ] |> pick x | ok -> ok | SynMemberDefn.Inherit(synType, _identOption, range) -> traverseInherit (synType, range) | SynMemberDefn.ValField(_synField, _range) -> None | SynMemberDefn.NestedType(synTypeDefn, _synAccessOption, _range) -> traverseSynTypeDefn path synTypeDefn and traverseSynMatchClause path mc = let path = TraverseStep.MatchClause mc :: path let defaultTraverse mc = match mc with | (SynMatchClause.Clause(_synPat, synExprOption, synExpr, _range, _sequencePointInfoForTarget) as all) -> [ match synExprOption with | None -> () | Some guard -> yield guard yield synExpr ] |> List.map (fun x -> dive x x.Range (traverseSynExpr path)) |> pick all.Range all visitor.VisitMatchClause(defaultTraverse,mc) and traverseSynBinding path b = let defaultTraverse b = let path = TraverseStep.Binding b :: path match b with | (SynBinding.Binding(_synAccessOption, _synBindingKind, _, _, _synAttributes, _preXmlDoc, _synValData, _synPat, _synBindingReturnInfoOption, synExpr, _range, _sequencePointInfoForBinding)) -> traverseSynExpr path synExpr visitor.VisitBinding(defaultTraverse,b) match parseTree with | ParsedInput.ImplFile(ParsedImplFileInput(_,_,_,_,_,l,_))-> let fileRange = #if DEBUG match l with [] -> range0 | _ -> l |> List.map (fun x -> x.Range) |> List.reduce unionRanges #else range0 // only used for asserting, does not matter in non-debug #endif l |> List.map (fun x -> dive x x.Range (traverseSynModuleOrNamespace [])) |> pick fileRange l | ParsedInput.SigFile _sigFile -> None fsharp-3.0.34/src/fsharp/vs/ServiceNavigation.fsi0000775000175000017500000000437612260314606020732 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler type internal DeclarationItemKind = | NamespaceDecl | ModuleFileDecl | ExnDecl | ModuleDecl | TypeDecl | MethodDecl | PropertyDecl | FieldDecl | OtherDecl /// Represents an item to be displayed in the navigation bar [] type internal DeclarationItem = member Name : string member UniqueName : string member Glyph : int member Kind : DeclarationItemKind member Range : Range member BodyRange : Range member IsSingleTopLevel : bool /// Represents top-level declarations (that should be in the type drop-down) /// with nested declarations (that can be shown in the member drop-down) [] type internal TopLevelDeclaration = { Declaration : DeclarationItem Nested : DeclarationItem[] } /// Represents result of 'GetNavigationItems' operation - this contains /// all the members and currently selected indices. First level correspond to /// types & modules and second level are methods etc. [] type internal NavigationItems = member Declarations : TopLevelDeclaration[] // implementation details used by other code in the compiler module internal NavigationImpl = val internal getNavigationFromImplFile : Ast.SynModuleOrNamespace list -> NavigationItems val internal empty : NavigationItems fsharp-3.0.34/src/fsharp/vs/ServiceParamInfoLocations.fsi0000775000175000017500000000345512260314606022360 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // API to the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler [] type internal NoteworthyParamInfoLocations = member LongId : string list member LongIdStartLocation : int * int member LongIdEndLocation : int * int member OpenParenLocation : int * int member TupleEndLocations : (int * int)[] // locations of commas and close parenthesis (or, last char of last arg, if no final close parenthesis) member IsThereACloseParen : bool // false if either this is a call without parens "f x" or the parser recovered as in "f(x,y" member NamedParamNames : string[] // null, or a name if an actual named parameter; f(0,a=4,?b=None) would be [|null;"a";"b"|] // implementation details used by other code in the compiler module internal NoteworthyParamInfoLocationsImpl = val internal FindNoteworthyParamInfoLocations : int * int * Ast.ParsedInput -> NoteworthyParamInfoLocations option fsharp-3.0.34/src/fsharp/vs/ServiceParamInfoLocations.fs0000775000175000017500000005036112260314606022205 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Internal.Utilities.Debug open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast [] type internal NoteworthyParamInfoLocations(longId : string list, longIdStartLocation : int*int, longIdEndLocation : int*int, openParenLocation : int*int, tupleEndLocations : (int*int)[], isThereACloseParen : bool, namedParamNames : string[]) = let namedParamNames = if (tupleEndLocations.Length = namedParamNames.Length) then namedParamNames else // in cases like TP< or TP<42, there is no 'arbitrary type' that represents the last missing static argument // this is ok, but later code in the UI layer will expect these lengths to match // so just fill in a blank named param to represent the final missing param // (compare to f( or f(42, where the parser injects a fake "AbrExpr" to represent the missing argument) assert(tupleEndLocations.Length = namedParamNames.Length + 1) [| yield! namedParamNames; yield null |] // "null" is representation of a non-named param member this.LongId = longId member this.LongIdStartLocation = longIdStartLocation member this.LongIdEndLocation = longIdEndLocation member this.OpenParenLocation = openParenLocation member this.TupleEndLocations = tupleEndLocations member this.IsThereACloseParen = isThereACloseParen member this.NamedParamNames = namedParamNames module internal NoteworthyParamInfoLocationsImpl = let isStaticArg a = match a with | SynType.StaticConstant _ | SynType.StaticConstantExpr _ | SynType.StaticConstantNamed _ -> true | SynType.LongIdent _ -> true // NOTE: this is not a static constant, but it is a prefix of incomplete code, e.g. "TP<42,Arg3" is a prefix of "TP<42,Arg3=6>" and Arg3 shows up as a LongId | _ -> false let traverseInput(line,col,parseTree) : NoteworthyParamInfoLocations option = let pos = Pos.fromVS line col // line was 0-based, need 1-based let rec digOutIdentStartEndFromAnApp synExpr = // we found it, dig out ident match synExpr with | SynExpr.Ident(id) -> let r = [id.idText], [(id.idRange.StartLine, id.idRange.StartColumn+1); (id.idRange.EndLine, id.idRange.EndColumn+1)] // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Dug out ident at range %+A from %+A" r synExpr) Some r | SynExpr.LongIdent(_, LongIdentWithDots(lid,_), _, lidRange) -> let r = (lid |> List.map (fun id -> id.idText)), [(lidRange.StartLine, lidRange.StartColumn+1); (lidRange.EndLine, lidRange.EndColumn+1)] // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Dug out ident at range %+A from %+A" r synExpr) Some r | SynExpr.DotGet(_expr, _dotm, LongIdentWithDots(lid,_), range) -> let r = (lid |> List.map (fun id -> id.idText)), [(range.StartLine, range.StartColumn+1); (range.EndLine, range.EndColumn+1)] // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Dug out ident at range %+A from %+A" r synExpr) Some r | SynExpr.TypeApp(synExpr, _, _synTypeList, _commas, _, _, _range) -> // TODO? match digOutIdentStartEndFromAnApp synExpr with | Some(_lid, [(_sl,_sc); (_el,_ec)]) as r-> r // Note: we record the ident-end after the ident but before the typeargs, e.g. $ not ^ in "foo$^(" | x -> ignore(x) None | x -> ignore(x) None let getNamedParamName e = match e with // f(x=4) | SynExpr.App(ExprAtomicFlag.NonAtomic, _, SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.Ident op, SynExpr.Ident n, _range), _, _) when op.idText="op_Equality" -> n.idText // f(?x=4) | SynExpr.App(ExprAtomicFlag.NonAtomic, _, SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.Ident op, SynExpr.LongIdent(true(*isOptional*),LongIdentWithDots([n],_),_ref,_lidrange), _range), _, _) when op.idText="op_Equality" -> n.idText | _ -> null let rec astFindNoteworthyParamInfoLocationsSynExprExactParen traverseSynExpr expr = // This method returns a tuple, where the second element is // Some(cache) if the implementation called 'traverseSynExpr expr', then 'cache' is the result of that call // None otherwise // so that callers can avoid recomputing 'traverseSynExpr expr' if it's already been done. This is very important for perf, // see bug 345385. let handleSingleArg(synExpr, parenRange, rpRangeOpt : _ option) = let inner = traverseSynExpr synExpr match inner with | None -> if AstTraversal.rangeContainsPosEdgesExclusive parenRange pos then let r = (parenRange.StartLine, parenRange.StartColumn+1), [parenRange.EndLine, parenRange.EndColumn+1, getNamedParamName synExpr], // +1 because col are 0-based, but want 1-based rpRangeOpt.IsSome Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found single arg paren range %+A from %+A" r expr) Some r, None else None, None | _ -> None, None match expr with | SynExprParen((SynExpr.Tuple(synExprList, commaRanges, _tupleRange) as synExpr), _lpRange, rpRangeOpt, parenRange) -> // tuple argument let inner = traverseSynExpr synExpr match inner with | None -> if AstTraversal.rangeContainsPosEdgesExclusive parenRange pos then let r = (parenRange.StartLine, parenRange.StartColumn+1), ((synExprList,commaRanges@[parenRange]) ||> List.map2 (fun e c -> c.EndLine, c.EndColumn+1, getNamedParamName e)), // +1 because col are 0-based, but want 1-based rpRangeOpt.IsSome Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found paren tuple ranges %+A from %+A" r expr) Some r, None else None, None | _ -> None, None | SynExprParen(SynExprParen(SynExpr.Tuple(_,_,_),_,_,_) as synExpr, _, rpRangeOpt, parenRange) -> // f((x,y)) is special, single tuple arg handleSingleArg(synExpr,parenRange,rpRangeOpt) | SynExprParen(SynExprParen(_,_,_,_) as synExpr, _, _, _parenRange) -> // dig into multiple parens let r,_cacheOpt = astFindNoteworthyParamInfoLocationsSynExprExactParen traverseSynExpr synExpr r, None | SynExprParen(synExpr, _lpRange, rpRangeOpt, parenRange) -> // single argument handleSingleArg(synExpr,parenRange,rpRangeOpt) | SynExpr.ArbitraryAfterError(_debugStr, range) -> // single argument when e.g. after open paren you hit EOF if AstTraversal.rangeContainsPosEdgesExclusive range pos then let r = (range.StartLine, range.StartColumn+1), [range.EndLine, range.EndColumn+1, null], false // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found ArbitraryAfterError range %+A from %+A" r expr) Some r, None else None, None | SynExpr.Const(SynConst.Unit, unitRange) -> if AstTraversal.rangeContainsPosEdgesExclusive unitRange pos then let r = (unitRange.StartLine, unitRange.StartColumn+1), [unitRange.EndLine, unitRange.EndColumn+1, null], true // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found unit range %+A from %+A" r expr) Some r, None else None, None | e -> let inner = traverseSynExpr e match inner with | None -> if AstTraversal.rangeContainsPosEdgesExclusive e.Range pos then // any other expression doesn't start with parens, so if it was the target of an App, then it must be a single argument e.g. "f x" let r = (e.Range.StartLine, e.Range.StartColumn+1), [e.Range.EndLine, e.Range.EndColumn+1, null], false // +1 because col are 0-based, but want 1-based Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found non-parenthesized single arg range %+A from %+A" r expr) Some r, Some inner else None, Some inner | _ -> None, Some inner let getTypeName(synType) = match synType with | SynType.LongIdent(LongIdentWithDots(ids,_)) -> ids |> List.map (fun id -> id.idText) | _ -> [""] // TODO type name for other cases, see also unit test named "ParameterInfo.LocationOfParams.AfterQuicklyTyping.CallConstructorViaLongId.Bug94333" AstTraversal.Traverse(line,col,parseTree, { new AstTraversal.AstVisitorBase<_>() with member this.VisitExpr(_path, traverseSynExpr, defaultTraverse, expr) = let expr = expr // fix debug locals match expr with | SynExpr.New(_, synType, synExpr, _range) -> // TODO walk SynType let constrArgsResult,cacheOpt = astFindNoteworthyParamInfoLocationsSynExprExactParen traverseSynExpr synExpr match constrArgsResult,cacheOpt with | Some(parenLoc,args,isThereACloseParen), _ -> let typename = getTypeName synType let r = NoteworthyParamInfoLocations(typename, (synType.Range.StartLine, synType.Range.StartColumn+1), (synType.Range.EndLine, synType.Range.EndColumn+1), // +1 because col are 0-based, but want 1-based parenLoc, args |> Seq.map (fun (l,c,_n) -> l,c) |> Seq.toArray, isThereACloseParen, args |> Seq.map (fun (_l,_c,n) -> n) |> Seq.toArray) Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found 'new' call with ranges %+A from %+A" r expr) Some(r) | None, Some(cache) -> cache | _ -> traverseSynExpr synExpr | SynExpr.App(_exprAtomicFlag, isInfix, synExpr, synExpr2, _range) -> let fResult = traverseSynExpr synExpr match fResult with | Some(_) -> fResult | _ -> let xResult,cacheOpt = astFindNoteworthyParamInfoLocationsSynExprExactParen traverseSynExpr synExpr2 match xResult,cacheOpt with | Some(parenLoc,args,isThereACloseParen),_ -> // we found it, dig out ident match digOutIdentStartEndFromAnApp synExpr with | Some(lid,[lidStart; lidEnd]) -> assert(isInfix = (parenLoc < lidEnd)) if isInfix then // This seems to be an infix operator, since the start of the argument is a position earlier than the end of the long-id being applied to it. // For now, we don't support infix operators. Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found apparent infix operator, ignoring dug-out ident from %+A" expr) None else let r = NoteworthyParamInfoLocations(lid, lidStart, lidEnd, parenLoc, args |> Seq.map (fun (l,c,_n) -> l,c) |> Seq.toArray, isThereACloseParen, args |> Seq.map (fun (_l,_c,n) -> n) |> Seq.toArray) Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found app with ranges %+A from %+A" r expr) Some r | x -> ignore(x) None | None, Some(cache) -> cache | _ -> traverseSynExpr synExpr2 | SynExpr.TypeApp(synExpr, openm, tyArgs, commas, closemOpt, _, wholem) as seta -> match traverseSynExpr synExpr with | Some _ as r -> r | None -> let typeArgsm = mkRange openm.FileName openm.Start wholem.End if AstTraversal.rangeContainsPosEdgesExclusive typeArgsm pos && tyArgs |> List.forall isStaticArg then // +1s because col are 0-based, but want 1-based let r = NoteworthyParamInfoLocations(["dummy"], // TODO synExpr, but LongId? (synExpr.Range.StartLine, synExpr.Range.StartColumn+1), (synExpr.Range.EndLine, synExpr.Range.EndColumn+1), (openm.StartLine, openm.StartColumn+1), commas |> Seq.map (fun c -> c.EndLine, c.EndColumn+1) |> (fun cs -> Seq.append cs [(wholem.EndLine, wholem.EndColumn+1)] ) |> Seq.toArray, Option.isSome closemOpt, tyArgs |> Seq.map (function | SynType.StaticConstantNamed(SynType.LongIdent(LongIdentWithDots([id],_)),_,_) -> id.idText | SynType.LongIdent(LongIdentWithDots([id],_)) -> id.idText // NOTE: again, not a static constant, but may be a prefix of a Named in incomplete code | _ -> null ) |> Seq.toArray) Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found SynExpr.TypeApp with ranges %+A from %+A" r seta) Some r else None | _ -> defaultTraverse expr member this.VisitTypeAbbrev(tyAbbrevRhs,_m) = match tyAbbrevRhs with | SynType.App(SynType.LongIdent(LongIdentWithDots(lid,_) as lidwd), Some(openm), args, commas, closemOpt, _pf, wholem) -> let lidm = lidwd.Range let betweenTheBrackets = mkRange wholem.FileName openm.Start wholem.End if AstTraversal.rangeContainsPosEdgesExclusive betweenTheBrackets pos && args |> List.forall isStaticArg then // +1s because col are 0-based, but want 1-based let r = NoteworthyParamInfoLocations(lid |> List.map (fun id -> id.idText), (lidm.StartLine, lidm.StartColumn+1), (lidm.EndLine, lidm.EndColumn+1), (openm.StartLine, openm.StartColumn+1), commas |> Seq.map (fun c -> c.EndLine, c.EndColumn+1) |> (fun cs -> Seq.append cs [(wholem.EndLine, wholem.EndColumn+1)] ) |> Seq.toArray, Option.isSome closemOpt, args |> Seq.map (function | SynType.StaticConstantNamed(SynType.LongIdent(LongIdentWithDots([id],_)),_,_) -> id.idText | SynType.LongIdent(LongIdentWithDots([id],_)) -> id.idText // NOTE: again, not a static constant, but may be a prefix of a Named in incomplete code | _ -> null ) |> Seq.toArray) Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found type abbrev ty-app with ranges %+A from %+A" r tyAbbrevRhs) Some r else None | _ -> None member this.VisitImplicitInherit(defaultTraverse, ty, expr, m) = match defaultTraverse expr with | Some _ as r -> r | None -> let inheritm = mkRange m.FileName m.Start m.End if AstTraversal.rangeContainsPosEdgesExclusive inheritm pos then // inherit ty(expr) --- treate it like an application (constructor call) let xResult,_cacheOpt = astFindNoteworthyParamInfoLocationsSynExprExactParen defaultTraverse expr match xResult with | Some(parenLoc,args,isThereACloseParen) -> // we found it, dig out ident let typename = getTypeName ty let r = NoteworthyParamInfoLocations(typename, (ty.Range.StartLine, ty.Range.StartColumn+1), (ty.Range.EndLine, ty.Range.EndColumn+1), // +1 because col are 0-based, but want 1-based parenLoc, args |> Seq.map (fun (l,c,_n) -> l,c) |> Seq.toArray, isThereACloseParen, args |> Seq.map (fun (_l,_c,n) -> n) |> Seq.toArray) Trace.PrintLine("LanguageServiceParamInfo", fun () -> sprintf "Found app with ranges %+A from %+A" r expr) Some r | _ -> None else None }) let FindNoteworthyParamInfoLocations(line,col,parseTree) = match traverseInput(line,col,parseTree) with | Some(nwpl) as r-> #if DEBUG let ranges = nwpl.LongIdStartLocation :: nwpl.LongIdEndLocation :: nwpl.OpenParenLocation :: (nwpl.TupleEndLocations |> Array.toList) let sorted = ranges |> Seq.sort |> Seq.toList assert(ranges = sorted) #else ignore nwpl #endif r | _ -> None fsharp-3.0.34/src/fsharp/vs/ServiceNavigation.fs0000775000175000017500000003505012260314606020552 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Open up the compiler as an incremental service for parsing, // type checking and intellisense-like environment-reporting. //-------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.SourceCodeServices open Microsoft.FSharp.Compiler open Internal.Utilities.Debug open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast //---------------------------------------------------------------------------- // Navigation items. //-------------------------------------------------------------------------- type DeclarationItemKind = | NamespaceDecl | ModuleFileDecl | ExnDecl | ModuleDecl | TypeDecl | MethodDecl | PropertyDecl | FieldDecl | OtherDecl /// Represents an item to be displayed in the navigation bar [] type DeclarationItem(uniqueName : string, name : string, kind : DeclarationItemKind, glyph : int, range : range, bodyRange : range, singleTopLevel:bool) = let range_of_m (m:range) = ((m.StartColumn, m.StartLine), (m.EndColumn, m.EndLine)) member x.bodyRange = bodyRange member x.UniqueName = uniqueName member x.Name = name member x.Glyph = glyph member x.Kind = kind member x.Range = range_of_m range member x.BodyRange = range_of_m bodyRange member x.IsSingleTopLevel = singleTopLevel member x.WithUniqueName(uniqueName : string) = DeclarationItem(uniqueName, name, kind, glyph, range, bodyRange, singleTopLevel) static member Create(name : string, kind, glyph : int, range : range, bodyRange : range, singleTopLevel:bool) = DeclarationItem("", name, kind, glyph, range, bodyRange, singleTopLevel) /// Represents top-level declarations (that should be in the type drop-down) /// with nested declarations (that can be shown in the member drop-down) [] type TopLevelDeclaration = { Declaration : DeclarationItem Nested : DeclarationItem[] } /// Represents result of 'GetNavigationItems' operation - this contains /// all the members and currently selected indices. First level correspond to /// types & modules and second level are methods etc. [] type NavigationItems(declarations:TopLevelDeclaration[]) = member x.Declarations = declarations open ItemDescriptionIcons module NavigationImpl = let union_ranges_checked r1 r2 = if r1 = range.Zero then r2 elif r2 = range.Zero then r1 else unionRanges r1 r2 let range_of_decls' f decls = match (decls |> List.map (f >> (fun (d:DeclarationItem) -> d.bodyRange))) with | hd::tl -> tl |> List.fold (union_ranges_checked) hd | [] -> range.Zero let range_of_decls = range_of_decls' fst let moduleRange (idm:range) others = union_ranges_checked idm.EndRange (range_of_decls' (fun (a, _, _) -> a) others) let fldspec_range fldspec = match fldspec with | UnionCaseFields(flds) -> flds |> List.fold (fun st (Field(_, _, _, _, _, _, _, m)) -> union_ranges_checked m st) range.Zero | UnionCaseFullType(ty, _) -> ty.Range let bodyRange mb decls = union_ranges_checked (range_of_decls decls) mb /// Get information for implementation file let getNavigationFromImplFile (modules:SynModuleOrNamespace list) = // Map for dealing with name conflicts let nameMap = ref Map.empty let addItemName name = let count = defaultArg (!nameMap |> Map.tryFind name) 0 nameMap := (Map.add name (count + 1) (!nameMap)) (count + 1) let uniqueName name idx = let total = Map.find name (!nameMap) sprintf "%s_%d_of_%d" name idx total // Create declaration (for the left dropdown) let createDeclLid(baseName, lid, kind, baseGlyph, m, bodym, nested) = let name = (if baseName <> "" then baseName + "." else "") + (textOfLid lid) DeclarationItem.Create (name, kind, baseGlyph * 6, m, bodym, false), (addItemName name), nested let createDecl(baseName, (id:Ident), kind, baseGlyph, m, bodym, nested) = let name = (if baseName <> "" then baseName + "." else "") + (id.idText) DeclarationItem.Create (name, kind, baseGlyph * 6, m, bodym, false), (addItemName name), nested // Create member-kind-of-thing for the right dropdown let createMemberLid(lid, kind, baseGlyph, m) = DeclarationItem.Create(textOfLid lid, kind, baseGlyph * 6, m, m, false), (addItemName(textOfLid lid)) let createMember((id:Ident), kind, baseGlyph, m) = DeclarationItem.Create(id.idText, kind, baseGlyph * 6, m, m, false), (addItemName(id.idText)) // Process let-binding let processBinding isMember (Binding(_, _, _, _, _, _, SynValData(memebrOpt, _, _), synPat, _, synExpr, _, _)) = let m = match synExpr with | SynExpr.Typed(e, _, _) -> e.Range // fix range for properties with type annotations | _ -> synExpr.Range match synPat, memebrOpt with | SynPat.LongIdent(LongIdentWithDots(lid,_), _,_, _, _, _), Some(flags) when isMember -> let icon, kind = match flags.MemberKind with | MemberKind.ClassConstructor | MemberKind.Constructor | MemberKind.Member -> (if flags.IsOverrideOrExplicitImpl then iIconGroupMethod2 else iIconGroupMethod), MethodDecl | MemberKind.PropertyGetSet | MemberKind.PropertySet | MemberKind.PropertyGet -> iIconGroupProperty, PropertyDecl let lidShow, rangeMerge = match lid with | _thisVar::nm::_ -> (List.tail lid, nm.idRange) | hd::_ -> (lid, hd.idRange) | _ -> (lid, m) [ createMemberLid(lidShow, kind, icon, unionRanges rangeMerge m) ] | SynPat.LongIdent(LongIdentWithDots(lid,_), _,_, _, _, _), _ -> [ createMemberLid(lid, FieldDecl, iIconGroupConstant, unionRanges (List.head lid).idRange m) ] | _ -> [] // Process a class declaration or F# type declaration let rec processTycon baseName (TypeDefn(ComponentInfo(_, _, _, lid, _, _, _, _), repr, membDefns, m)) = let topMembers = processMembers membDefns |> snd match repr with | SynTypeDefnRepr.ObjectModel(_, membDefns, mb) -> // F# class declaration let members = processMembers membDefns |> snd let nested = members@topMembers ([ createDeclLid(baseName, lid, TypeDecl, iIconGroupClass, m, bodyRange mb nested, nested) ] : ((DeclarationItem * int * _) list)) | SynTypeDefnRepr.Simple(simple, _) -> // F# type declaration match simple with | SynTypeDefnSimpleRepr.Union(_, cases, mb) -> let cases = [ for (UnionCase(_, id, fldspec, _, _, _)) in cases -> createMember(id, OtherDecl, iIconGroupValueType, unionRanges (fldspec_range fldspec) id.idRange) ] let nested = cases@topMembers [ createDeclLid(baseName, lid, TypeDecl, iIconGroupUnion, m, bodyRange mb nested, nested) ] | SynTypeDefnSimpleRepr.Enum(cases, mb) -> let cases = [ for (EnumCase(_, id, _, _, m)) in cases -> createMember(id, FieldDecl, iIconGroupEnumMember, m) ] let nested = cases@topMembers [ createDeclLid(baseName, lid, TypeDecl, iIconGroupEnum, m, bodyRange mb nested, nested) ] | SynTypeDefnSimpleRepr.Record(_, fields, mb) -> let fields = [ for (Field(_, _, id, _, _, _, _, m)) in fields do if (id.IsSome) then yield createMember(id.Value, FieldDecl, iIconGroupFieldBlue, m) ] let nested = fields@topMembers [ createDeclLid(baseName, lid, TypeDecl, iIconGroupType, m, bodyRange mb nested, nested) ] | SynTypeDefnSimpleRepr.TypeAbbrev(_, _, mb) -> [ createDeclLid(baseName, lid, TypeDecl, iIconGroupTypedef, m, bodyRange mb topMembers, topMembers) ] //| SynTypeDefnSimpleRepr.General of TyconKind * (SynType * range * ident option) list * (valSpfn * MemberFlags) list * fieldDecls * bool * bool * range //| SynTypeDefnSimpleRepr.LibraryOnlyILAssembly of ILType * range //| TyconCore_repr_hidden of range | _ -> [] // Returns class-members for the right dropdown and processMembers members : (range * list) = let members = members |> List.map (fun memb -> (memb.Range, match memb with | SynMemberDefn.LetBindings(binds, _, _, _) -> List.collect (processBinding false) binds | SynMemberDefn.Member(bind, _) -> processBinding true bind | SynMemberDefn.ValField(Field(_, _, Some(rcid), ty, _, _, _, _), _) -> [ createMember(rcid, FieldDecl, iIconGroupFieldBlue, ty.Range) ] | SynMemberDefn.AutoProperty(_attribs,_isStatic,id,_tyOpt,_propKind,_,_xmlDoc,_access,_synExpr, _, _) -> [ createMember(id, FieldDecl, iIconGroupFieldBlue, id.idRange) ] | SynMemberDefn.AbstractSlot(ValSpfn(_, id, _, ty, _, _, _, _, _, _, _), _, _) -> [ createMember(id, MethodDecl, iIconGroupMethod2, ty.Range) ] | SynMemberDefn.NestedType _ -> failwith "tycon as member????" //processTycon tycon | SynMemberDefn.Interface(_, Some(membs), _) -> processMembers membs |> snd | _ -> [] )) ((members |> Seq.map fst |> Seq.fold union_ranges_checked range.Zero), (members |> List.map snd |> List.concat)) // Process declarations in a module that belong to the right drop-down (let bindings) let processNestedDeclarations decls = decls |> List.collect (function | SynModuleDecl.Let(_, binds, _) -> List.collect (processBinding false) binds | _ -> [] ) // Process declarations nested in a module that should be displayed in the left dropdown // (such as type declarations, nested modules etc.) let rec processTopLevelDeclarations(baseName, decls) = decls |> List.collect (function | SynModuleDecl.ModuleAbbrev(id, lid, m) -> [ createDecl(baseName, id, ModuleDecl, iIconGroupModule, m, rangeOfLid lid, []) ] | SynModuleDecl.NestedModule(ComponentInfo(_, _, _, lid, _, _, _, _), decls, _, m) -> // Find let bindings (for the right dropdown) let nested = processNestedDeclarations(decls) let newBaseName = (if (baseName = "") then "" else baseName+".") + (textOfLid lid) // Get nested modules and types (for the left dropdown) let other = processTopLevelDeclarations(newBaseName, decls) createDeclLid(baseName, lid, ModuleDecl, iIconGroupModule, m, union_ranges_checked (range_of_decls nested) (moduleRange (rangeOfLid lid) other), nested)::other | SynModuleDecl.Types(tydefs, _) -> tydefs |> List.collect (processTycon baseName) | SynModuleDecl.Exception(ExceptionDefn(ExceptionDefnRepr(_, (UnionCase(_, id, fldspec, _, _, _)), _, _, _, _), membDefns, _), m) -> // Exception declaraton let nested = processMembers membDefns |> snd [ createDecl(baseName, id, ExnDecl, iIconGroupException, m, fldspec_range fldspec, nested) ] | _ -> [] ) // Collect all the items let items = // Show base name for this module only if it's not the root one let singleTopLevel = (modules.Length = 1) modules |> List.collect (fun (SynModuleOrNamespace(id,isModule,decls,_,_,_,m)) -> let baseName = if (not singleTopLevel) then textOfLid id else "" // Find let bindings (for the right dropdown) let nested = processNestedDeclarations(decls) // Get nested modules and types (for the left dropdown) let other = processTopLevelDeclarations(baseName, decls) // Create explicitly - it can be 'single top level' thing that is hidden let decl = DeclarationItem.Create (textOfLid id, (if isModule then ModuleFileDecl else NamespaceDecl), iIconGroupModule * 6, m, union_ranges_checked (range_of_decls nested) (moduleRange (rangeOfLid id) other), singleTopLevel), (addItemName(textOfLid id)), nested decl::other ) let items = items |> Array.ofList |> Array.map (fun (d, idx, nest) -> let nest = nest |> Array.ofList |> Array.map (fun (decl, idx) -> decl.WithUniqueName(uniqueName d.Name idx)) nest |> Array.sortInPlaceWith (fun a b -> compare a.Name b.Name) { Declaration = d.WithUniqueName(uniqueName d.Name idx); Nested = nest } ) items |> Array.sortInPlaceWith (fun a b -> compare a.Declaration.Name b.Declaration.Name) new NavigationItems(items) let empty = new NavigationItems([| |]) fsharp-3.0.34/src/fsharp/nameres.fsi0000775000175000017500000003022012260314606016277 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Nameres open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Outcome open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.PrettyNaming /// A NameResolver primarily holds an InfoReader type NameResolver = new : g:TcGlobals * amap:ImportMap * infoReader:InfoReader * instantiationGenerator:(range -> Typars -> TypeInst) -> NameResolver member InfoReader : InfoReader member amap : ImportMap member g : TcGlobals //--------------------------------------------------------------------------- // //------------------------------------------------------------------------- [] type Item = // These exist in the "eUnqualifiedItems" List.map in the type environment. | Value of ValRef | UnionCase of UnionCaseInfo | ActivePatternResult of ActivePatternInfo * TType * int * range | ActivePatternCase of ActivePatternElemRef | ExnCase of TyconRef | RecdField of RecdFieldInfo // The following are never in the items table but are valid results of binding // an identitifer in different circumstances. | NewDef of Ident | ILField of ILFieldInfo | Event of EventInfo | Property of string * PropInfo list | MethodGroup of string * MethInfo list | CtorGroup of string * MethInfo list | FakeInterfaceCtor of TType | DelegateCtor of TType | Types of string * TType list /// CustomOperation(operationName, operationHelpText, operationImplementation). /// /// Used to indicate the availability or resolution of a custom query operation such as 'sortBy' or 'where' in computation expression syntax | CustomOperation of string * (unit -> string option) * MethInfo option | CustomBuilder of string * ValRef | TypeVar of string | ModuleOrNamespaces of Tast.ModuleOrNamespaceRef list /// Represents the resolution of a source identifier to an implicit use of an infix operator | ImplicitOp of Ident /// Represents the resolution of a source identifier to a named argument | ArgName of Ident * TType | SetterArg of Ident * Item | UnqualifiedType of TyconRef list [] type ExtensionMember [] type NameResolutionEnv = {eDisplayEnv: DisplayEnv; eUnqualifiedItems: LayeredMap; ePatItems: NameMap; eModulesAndNamespaces: NameMultiMap; eFullyQualifiedModulesAndNamespaces: NameMultiMap; eFieldLabels: NameMultiMap; eTyconsByAccessNames: LayeredMultiMap; eFullyQualifiedTyconsByAccessNames: LayeredMultiMap; eTyconsByDemangledNameAndArity: LayeredMap; eFullyQualifiedTyconsByDemangledNameAndArity: LayeredMap; eExtensionMembers: TyconRefMultiMap; eTypars: NameMap;} static member Empty : g:TcGlobals -> NameResolutionEnv member DisplayEnv : DisplayEnv member FindUnqualifiedItem : string -> Item type FullyQualifiedFlag = | FullyQualified | OpenQualified [] type BulkAdd = Yes | No val public DisplayNameOfItem : TcGlobals -> Item -> string val internal AddFakeNamedValRefToNameEnv : string -> NameResolutionEnv -> ValRef -> NameResolutionEnv val internal AddFakeNameToNameEnv : string -> NameResolutionEnv -> Item -> NameResolutionEnv val internal AddValRefToNameEnv : NameResolutionEnv -> ValRef -> NameResolutionEnv val internal AddActivePatternResultTagsToNameEnv : ActivePatternInfo -> NameResolutionEnv -> TType -> range -> NameResolutionEnv val internal AddTyconRefsToNameEnv : BulkAdd -> bool -> TcGlobals -> ImportMap -> range -> bool -> NameResolutionEnv -> TyconRef list -> NameResolutionEnv val internal AddExceptionDeclsToNameEnv : BulkAdd -> NameResolutionEnv -> TyconRef -> NameResolutionEnv val internal AddModuleAbbrevToNameEnv : Ident -> NameResolutionEnv -> ModuleOrNamespaceRef list -> NameResolutionEnv val internal AddModuleOrNamespaceRefsToNameEnv : TcGlobals -> ImportMap -> range -> bool -> AccessorDomain -> NameResolutionEnv -> ModuleOrNamespaceRef list -> NameResolutionEnv val internal AddModrefToNameEnv : TcGlobals -> ImportMap -> range -> bool -> AccessorDomain -> NameResolutionEnv -> ModuleOrNamespaceRef -> NameResolutionEnv val internal AddModulesAndNamespacesContentsToNameEnv : TcGlobals -> ImportMap -> AccessorDomain -> range -> NameResolutionEnv -> ModuleOrNamespaceRef list -> NameResolutionEnv type CheckForDuplicateTyparFlag = | CheckForDuplicateTypars | NoCheckForDuplicateTypars val internal AddDeclaredTyparsToNameEnv : CheckForDuplicateTyparFlag -> NameResolutionEnv -> Typar list -> NameResolutionEnv val internal LookupTypeNameInEnvNoArity : FullyQualifiedFlag -> string -> NameResolutionEnv -> TyconRef list type TypeNameResolutionFlag = | ResolveTypeNamesToCtors | ResolveTypeNamesToTypeRefs [] [] type TypeNameResolutionStaticArgsInfo = /// Indicates definite knowledge of empty type arguments, i.e. the logical equivalent of name< > static member DefiniteEmpty : TypeNameResolutionStaticArgsInfo /// Deduce definite knowledge of type arguments static member FromTyArgs : SynType list -> TypeNameResolutionStaticArgsInfo [] type TypeNameResolutionInfo = | TypeNameResolutionInfo of TypeNameResolutionFlag * TypeNameResolutionStaticArgsInfo static member Default : TypeNameResolutionInfo static member ResolveToTypeRefs : TypeNameResolutionStaticArgsInfo -> TypeNameResolutionInfo [] type internal ItemOccurence = | Binding = 0 | Use = 1 | UseInType = 2 | UseInAttribute = 3 | Pattern = 4 type ITypecheckResultsSink = abstract NotifyEnvWithScope : range * NameResolutionEnv * AccessorDomain -> unit abstract NotifyExprHasType : pos * TType * DisplayEnv * NameResolutionEnv * AccessorDomain * range -> unit abstract NotifyNameResolution : pos * Item * Item * ItemOccurence * DisplayEnv * NameResolutionEnv * AccessorDomain * range -> unit type TcResultsSink = { mutable CurrentSink : ITypecheckResultsSink option } static member NoSink : TcResultsSink static member WithSink : ITypecheckResultsSink -> TcResultsSink val internal WithNewTypecheckResultsSink : ITypecheckResultsSink * TcResultsSink -> System.IDisposable val internal TemporarilySuspendReportingTypecheckResultsToSink : TcResultsSink -> System.IDisposable val internal CallEnvSink : TcResultsSink -> range * NameResolutionEnv * AccessorDomain -> unit val internal CallNameResolutionSink : TcResultsSink -> range * NameResolutionEnv * Item * Item * ItemOccurence * DisplayEnv * AccessorDomain -> unit val internal CallExprHasTypeSink : TcResultsSink -> range * NameResolutionEnv * TType * DisplayEnv * AccessorDomain -> unit val internal AllPropInfosOfTypeInScope : InfoReader -> TyconRefMultiMap -> string option * AccessorDomain -> FindMemberFlag -> range -> TType -> PropInfo list val internal AllMethInfosOfTypeInScope : InfoReader -> TyconRefMultiMap -> string option * AccessorDomain -> FindMemberFlag -> range -> TType -> MethInfo list exception internal IndeterminateType of range exception internal UpperCaseIdentifierInPattern of range val FreshenRecdFieldRef :NameResolver -> Range.range -> Tast.RecdFieldRef -> Item type LookupKind = | RecdField | Pattern | Expr | Type | Ctor type WarnOnUpperFlag = | WarnOnUpperCase | AllIdsOK [] /// Indicates whether we permit a direct reference to a type generator. Only set when resolving the /// right-hand-side of a [] declaration. type PermitDirectReferenceToGeneratedType = | Yes | No val internal ResolveLongIndentAsModuleOrNamespace : FullyQualifiedFlag -> NameResolutionEnv -> AccessorDomain -> Ident list -> ResultOrException<(int * ModuleOrNamespaceRef * ModuleOrNamespaceType) list > val internal ResolveObjectConstructor : NameResolver -> DisplayEnv -> range -> AccessorDomain -> TType -> ResultOrException val internal ResolveLongIdentInType : TcResultsSink -> NameResolver -> NameResolutionEnv -> LookupKind -> range -> AccessorDomain -> Ident list -> FindMemberFlag -> TypeNameResolutionInfo -> TType -> Item * Ident list val internal ResolvePatternLongIdent : TcResultsSink -> NameResolver -> WarnOnUpperFlag -> bool -> range -> AccessorDomain -> NameResolutionEnv -> TypeNameResolutionInfo -> Ident list -> Item val internal ResolveTypeLongIdentInTyconRef : TcResultsSink -> NameResolver -> NameResolutionEnv -> TypeNameResolutionInfo -> AccessorDomain -> range -> ModuleOrNamespaceRef -> Ident list -> TyconRef val internal ResolveTypeLongIdent : TcResultsSink -> NameResolver -> ItemOccurence -> FullyQualifiedFlag -> NameResolutionEnv -> AccessorDomain -> Ident list -> TypeNameResolutionStaticArgsInfo -> PermitDirectReferenceToGeneratedType -> ResultOrException val internal ResolveField : NameResolver -> NameResolutionEnv -> AccessorDomain -> TType -> Ident list * Ident -> RecdFieldRef list val internal ResolveExprLongIdent : TcResultsSink -> NameResolver -> range -> AccessorDomain -> NameResolutionEnv -> TypeNameResolutionInfo -> Ident list -> Item * Ident list val internal ResolvePartialLongIdentToClassOrRecdFields : NameResolver -> NameResolutionEnv -> range -> AccessorDomain -> string list -> bool -> Item list val internal ResolveRecordOrClassFieldsOfType : NameResolver -> range -> AccessorDomain -> TType -> bool -> Item list type IfOverloadResolutionFails = IfOverloadResolutionFails of (unit -> unit) // Specifies if overload resolution needs to notify Language Service of overload resolution [] type AfterOverloadResolution = // Notfication is not needed | DoNothing // Notfy the sink | SendToSink of (Item -> unit) * IfOverloadResolutionFails // overload resolution failure fallback // Find override among given overrides and notify the sink // 'Item' contains the candidate overrides. | ReplaceWithOverrideAndSendToSink of Item * (Item -> unit) * IfOverloadResolutionFails // overload resolution failure fallback val internal ResolveLongIdentAsExprAndComputeRange : TcResultsSink -> NameResolver -> range -> AccessorDomain -> NameResolutionEnv -> TypeNameResolutionInfo -> Ident list -> Item * range * Ident list * AfterOverloadResolution val internal ResolveExprDotLongIdentAndComputeRange : TcResultsSink -> NameResolver -> range -> AccessorDomain -> NameResolutionEnv -> TType -> Ident list -> FindMemberFlag -> bool -> Item * range * Ident list * AfterOverloadResolution val FakeInstantiationGenerator : range -> Typar list -> TType list val ResolvePartialLongIdent : NameResolver -> NameResolutionEnv -> (MethInfo -> TType -> bool) -> range -> AccessorDomain -> string list -> bool -> Item list val ResolveCompletionsInType : NameResolver -> NameResolutionEnv -> (MethInfo -> TType -> bool) -> Range.range -> Infos.AccessorDomain -> bool -> TType -> Item list fsharp-3.0.34/src/fsharp/fsiserver/0000775000175000017500000000000012260314606016152 5ustar chrischrisfsharp-3.0.34/src/fsharp/fsiserver/fsiserver.fs0000664000175000017500000000510612260314606020516 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //[] // avoid calling the type "Shared" which is keyword in some languages namespace Microsoft.FSharp.Compiler.Server.Shared // For FSI VS plugin, require FSI to provide services: // e.g. // - interrupt // - intelisense completion // // This is done via remoting. // Here we define the service class. // This dll is required for both client (fsi-vs plugin) and server (spawned fsi). //[] [] [] do() open System open System.Diagnostics open System.Runtime.Remoting.Channels open System.Runtime.Remoting open System.Runtime.Remoting.Lifetime [] type internal FSharpInteractiveServer() = inherit System.MarshalByRefObject() abstract Interrupt : unit -> unit #if FSI_SERVER_INTELLISENSE abstract Completions : prefix:string -> string array abstract GetDeclarations : text:string * names:string array -> (string * string * string * int) array #endif default x.Interrupt() = () [] static member StartServer(channelName:string,server:FSharpInteractiveServer) = let chan = new Ipc.IpcChannel(channelName) LifetimeServices.LeaseTime <- TimeSpan(7,0,0,0); // days,hours,mins,secs LifetimeServices.LeaseManagerPollTime <- TimeSpan(7,0,0,0); LifetimeServices.RenewOnCallTime <- TimeSpan(7,0,0,0); LifetimeServices.SponsorshipTimeout <- TimeSpan(7,0,0,0); ChannelServices.RegisterChannel(chan,false); let objRef = RemotingServices.Marshal(server,"FSIServer") () static member StartClient(channelName) = let T = Activator.GetObject(typeof,"ipc://" + channelName + "/FSIServer") let x = T :?> FSharpInteractiveServer x fsharp-3.0.34/src/fsharp/fsiserver/FSServerShared.txt0000775000175000017500000000004312260314606021541 0ustar chrischris# FS Server.Shared resource stringsfsharp-3.0.34/src/fsharp/unilex.fsi0000775000175000017500000000166612260314606016165 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module Microsoft.FSharp.Compiler.UnicodeLexing open Microsoft.FSharp.Text open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer val internal StringAsLexbuf : string -> Lexbuf val public FunctionAsLexbuf : (char [] * int * int -> int) -> Lexbuf val public UnicodeFileAsLexbuf :string * int option * (*retryLocked*) bool -> Lexbuf fsharp-3.0.34/src/fsharp/opt.fsi0000775000175000017500000000537712260314606015466 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Opt open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal type OptimizationSettings = { abstractBigTargets : bool jitOptUser : bool option localOptUser : bool option crossModuleOptUser : bool option bigTargetSize : int veryBigExprSize : int lambdaInlineThreshold : int reportingPhase : bool; reportNoNeedToTailcall: bool reportFunctionSizes : bool reportHasEffect : bool reportTotalSizes : bool } member jitOpt : unit -> bool member localOpt : unit -> bool static member Defaults : OptimizationSettings /// Optimization information type ModuleInfo type LazyModuleInfo = Lazy #if NO_COMPILER_BACKEND #else [] type IncrementalOptimizationEnv = static member Empty : IncrementalOptimizationEnv /// For building optimization environments incrementally val internal BindCcu : CcuThunk -> LazyModuleInfo -> IncrementalOptimizationEnv -> TcGlobals -> IncrementalOptimizationEnv /// The entry point. Boolean indicates 'incremental extension' in FSI val internal OptimizeImplFile : OptimizationSettings * CcuThunk (* scope *) * Env.TcGlobals * ConstraintSolver.TcValF * Import.ImportMap * IncrementalOptimizationEnv * isIncrementalFragment: bool * emitTaicalls: bool * TypedImplFile -> IncrementalOptimizationEnv * TypedImplFile * LazyModuleInfo /// Displaying optimization data val internal moduleInfoL : TcGlobals -> LazyModuleInfo -> Layout.layout /// Saving and re-reading optimization information val p_LazyModuleInfo : LazyModuleInfo -> Pickle.WriterState -> unit /// Rewrite the modul info using the export remapping val RemapLazyModulInfo : Env.TcGlobals -> Tastops.Remap -> (LazyModuleInfo -> LazyModuleInfo) val AbstractLazyModulInfoToEssentials : (LazyModuleInfo -> LazyModuleInfo) val UnionModuleInfos: seq -> LazyModuleInfo val ExprHasEffect: Env.TcGlobals -> Expr -> bool #endif val internal u_LazyModuleInfo : Pickle.ReaderState -> LazyModuleInfo fsharp-3.0.34/src/fsharp/QueueList.fs0000775000175000017500000000773312260314606016431 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities open System.Collections open System.Collections.Generic /// Iterable functional collection with O(1) append-1 time. Useful for data structures where elements get added at the /// end but the collection must occadionally be iterated. Iteration is slower and may allocate because /// a suffix of elements is stored in reverse order. /// /// The type doesn't support structural hashing or comparison. type internal QueueList<'T>(firstElementsIn: FlatList<'T>, lastElementsRevIn: 'T list, numLastElementsIn: int) = let numFirstElements = firstElementsIn.Length // Push the lastElementsRev onto the firstElements every so often let push = numLastElementsIn > numFirstElements / 5 // Compute the contents after pushing. let firstElements = if push then FlatList.append firstElementsIn (FlatList.ofList (List.rev lastElementsRevIn)) else firstElementsIn let lastElementsRev = if push then [] else lastElementsRevIn let numLastElements = if push then 0 else numLastElementsIn // Compute the last elements on demand let lastElements() = if push then [] else List.rev lastElementsRev static let empty = QueueList<'T>(FlatList.empty, [], 0) static member Empty : QueueList<'T> = empty new (xs:FlatList<'T>) = QueueList(xs,[],0) member x.ToFlatList() = if push then firstElements else FlatList.append firstElements (FlatList.ofList (lastElements())) member internal x.FirstElements = firstElements member internal x.LastElements = lastElements() /// Note this operation is O(1), unless a push happens, which is rare member x.AppendOne(y) = QueueList(firstElements, y :: lastElementsRev, numLastElements+1) member x.Append(ys:seq<_>) = QueueList(firstElements, (List.rev (Seq.toList ys) @ lastElementsRev), numLastElements+1) /// Note this operation is O(n) anyway, so executing ToFlatList() here is OK interface IEnumerable<'T> with member x.GetEnumerator() : IEnumerator<'T> = (x.ToFlatList() :> IEnumerable<_>).GetEnumerator() interface IEnumerable with member x.GetEnumerator() : IEnumerator = ((x :> IEnumerable<'T>).GetEnumerator() :> IEnumerator) [] module internal QueueList = let empty<'T> : QueueList<'T> = QueueList<'T>.Empty let ofSeq (x:seq<_>) = QueueList(FlatList.ofSeq x) let rec iter f (x:QueueList<_>) = Seq.iter f x let rec map f (x:QueueList<_>) = ofSeq (Seq.map f x) let rec exists f (x:QueueList<_>) = Seq.exists f x let rec filter f (x:QueueList<_>) = ofSeq (Seq.filter f x) let rec foldBack f (x:QueueList<_>) acc = FlatList.foldBack f x.FirstElements (List.foldBack f x.LastElements acc) let forall f (x:QueueList<_>) = Seq.forall f x let ofList (x:list<_>) = QueueList(FlatList.ofList x) let toList (x:QueueList<_>) = Seq.toList x let tryFind f (x:QueueList<_>) = Seq.tryFind f x let one(x) = QueueList (FlatList.one x) let appendOne (x:QueueList<_>) y = x.AppendOne(y) let append (x:QueueList<_>) (ys:QueueList<_>) = x.Append(ys) #if QUEUE_LIST_UNITTESTS module internal Test = let mutable q = QueueList.empty for i = 0 to 100 do if q |> QueueList.toList <> [0..i-1] then printfn "fail pre check, i = %d" i q <- q.AppendOne(i) if q |> QueueList.toList <> [0..i] then printfn "fail post check, i = %d" i *) #endif fsharp-3.0.34/src/fsharp/import.fsi0000775000175000017500000000642212260314606016166 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Import open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.AbstractIL.IL #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif type AssemblyLoader = abstract LoadAssembly : range * ILAssemblyRef -> CcuResolutionResult #if EXTENSIONTYPING /// Get a flag indicating if an assembly is a provided assembly, plus the /// table of information recording remappings from type names in the provided assembly to type /// names in the statically linked, embedded assembly. abstract GetProvidedAssemblyInfo : range * Tainted -> bool * ProvidedAssemblyStaticLinkingMap option /// Record a root for a [] type to help guide static linking & type relocation abstract RecordGeneratedTypeRoot : ProviderGeneratedType -> unit #endif [] /// This is the context used for converting AbstractIL .NET and provided types to F# internal compiler data structures. /// We currently cache the conversion of AbstractIL ILTypeRef nodes, based on hashes of these. /// /// There is normally only one ImportMap for any assembly compilation, though additional instances can be created /// using tcImports.GetImportMap() if needed, and it is not harmful if multiple instances are used. The object /// serves as an interface through to the tables stored in the primary TcImports structures defined in build.fs. type ImportMap = new : g:Env.TcGlobals * assemblyLoader:AssemblyLoader -> ImportMap member assemblyLoader : AssemblyLoader member g : Env.TcGlobals val internal ImportILTypeRef : ImportMap -> range -> ILTypeRef -> TyconRef val internal ImportILType : ImportMap -> range -> TType list -> ILType -> TType #if EXTENSIONTYPING val internal ImportProvidedType : ImportMap -> range -> (* TType list -> *) Tainted -> TType val internal ImportProvidedNamedType : ImportMap -> range -> (* TType list -> *) Tainted -> TyconRef val internal ImportProvidedTypeAsILType : ImportMap -> range -> Tainted -> ILType val internal ImportProvidedMethodBaseAsILMethodRef : ImportMap -> range -> Tainted -> ILMethodRef #endif val internal ImportILGenericParameters : (unit -> ImportMap) -> range -> ILScopeRef -> TType list -> ILGenericParameterDef list -> Typar list val internal ImportILAssembly : (unit -> ImportMap) * range * (ILScopeRef -> ILModuleDef) * ILScopeRef * sourceDir:string * filename: string option * ILModuleDef * IEvent -> CcuThunk val internal ImportILAssemblyTypeForwarders : (unit -> ImportMap) * range * ILExportedTypesAndForwarders -> Lazy> fsharp-3.0.34/src/fsharp/unilex.fs0000775000175000017500000000721312260314606016006 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module Microsoft.FSharp.Compiler.UnicodeLexing //------------------------------------------------------------------ // Functions for Unicode char-based lexing (new code). // open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Internal.Utilities open System.IO open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer let StringAsLexbuf (s:string) : Lexbuf = LexBuffer<_>.FromChars (s.ToCharArray()) let FunctionAsLexbuf (bufferFiller: char[] * int * int -> int) : Lexbuf = LexBuffer<_>.FromFunction bufferFiller // The choice of 60 retries times 50 ms is not arbitrary. The NTFS FILETIME structure // uses 2 second resolution for LastWriteTime. We retry long enough to surpass this threshold // plus 1 second. Once past the threshold the incremental builder will be able to retry asynchronously based // on plain old timestamp checking. // // The sleep time of 50ms is chosen so that we can respond to the user more quickly for Intellisense operations. // // This is not run on the UI thread for VS but it is on a thread that must be stopped before Intellisense // can return any result except for pending. let retryDelayMilliseconds = 50 let numRetries = 60 /// Standard utility to create a Unicode LexBuffer /// /// One small annoyance is that LexBuffers and not IDisposable. This means /// we can't just return the LexBuffer object, since the file it wraps wouldn't /// get closed when we're finished with the LexBuffer. Hence we return the stream, /// the reader and the LexBuffer. The caller should dispose the first two when done. let UnicodeFileAsLexbuf (filename,codePage : int option, retryLocked:bool) : Lexbuf = // Retry multiple times since other processes may be writing to this file. let rec getSource retryNumber = try // Use the .NET functionality to auto-detect the unicode encoding use stream = FileSystem.FileStreamReadShim(filename) use reader = match codePage with | None -> new StreamReader(stream,true) | Some n -> new StreamReader(stream,System.Text.Encoding.GetEncodingShim(n)) reader.ReadToEnd() with // We can get here if the file is locked--like when VS is saving a file--we don't have direct // access to the HRESULT to see that this is EONOACCESS. | :? System.IO.IOException as err when retryLocked && err.GetType() = typeof -> // This second check is to make sure the exception is exactly IOException and none of these for example: // DirectoryNotFoundException // EndOfStreamException // FileNotFoundException // FileLoadException // PathTooLongException if retryNumber < numRetries then System.Threading.Thread.Sleep (retryDelayMilliseconds) getSource (retryNumber + 1) else reraise() let source = getSource 0 let lexbuf = LexBuffer<_>.FromChars(source.ToCharArray()) lexbuf fsharp-3.0.34/src/fsharp/env.fs0000775000175000017500000030356112260314606015277 0ustar chrischris(* (c) Microsoft Corporation 2005-2008. *) //------------------------------------------------------------------------- // Define Initial Environment. A bunch of types and values are hard-wired // into the compiler. This lets the compiler perform particular optimizations // for these types and values, for example emitting optimized calls for // comparison and hashing functions. The compiler generates the compiled code // for these types and values when the the --compiling-fslib switch is // provided when linking the FSharp.Core.dll assembly. //------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Env open Internal.Utilities open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.PrettyNaming open System.Collections.Generic let internal DummyFileNameForRangesWithoutASpecificLocation = "startup" let private envRange = rangeN DummyFileNameForRangesWithoutASpecificLocation 0 let vara = NewRigidTypar "a" envRange let varb = NewRigidTypar "b" envRange let private varc = NewRigidTypar "c" envRange let private vard = NewRigidTypar "d" envRange let private vare = NewRigidTypar "e" envRange let private varf = NewRigidTypar "f" envRange let private varg = NewRigidTypar "g" envRange let varaTy = mkTyparTy vara let varbTy = mkTyparTy varb let private varcTy = mkTyparTy varc let private vardTy = mkTyparTy vard let private vareTy = mkTyparTy vare type public IntrinsicValRef = IntrinsicValRef of NonLocalEntityRef * string * bool * TType * ValLinkageFullKey let ValRefForIntrinsic (IntrinsicValRef(mvr,_,_,_,key)) = mkNonLocalValRef mvr key //------------------------------------------------------------------------- // Access the initial environment: names //------------------------------------------------------------------------- [] module FSharpLib = let CoreOperatorsName = FSharpLib.Root + ".Core.Operators" let CoreOperatorsCheckedName = FSharpLib.Root + ".Core.Operators.Checked" let ControlName = FSharpLib.Root + ".Control" let LinqName = FSharpLib.Root + ".Linq" let CollectionsName = FSharpLib.Root + ".Collections" let LanguagePrimitivesName = FSharpLib.Root + ".Core.LanguagePrimitives" let CompilerServicesName = FSharpLib.Root + ".Core.CompilerServices" let LinqRuntimeHelpersName = FSharpLib.Root + ".Linq.RuntimeHelpers" let RuntimeHelpersName = FSharpLib.Root + ".Core.CompilerServices.RuntimeHelpers" let ExtraTopLevelOperatorsName = FSharpLib.Root + ".Core.ExtraTopLevelOperators" let HashCompareName = FSharpLib.Root + ".Core.LanguagePrimitives.HashCompare" let QuotationsName = FSharpLib.Root + ".Quotations" let OperatorsPath = IL.splitNamespace CoreOperatorsName |> Array.ofList let OperatorsCheckedPath = IL.splitNamespace CoreOperatorsCheckedName |> Array.ofList let ControlPath = IL.splitNamespace ControlName let LinqPath = IL.splitNamespace LinqName let CollectionsPath = IL.splitNamespace CollectionsName let LanguagePrimitivesPath = IL.splitNamespace LanguagePrimitivesName |> Array.ofList let HashComparePath = IL.splitNamespace HashCompareName |> Array.ofList let CompilerServicesPath = IL.splitNamespace CompilerServicesName |> Array.ofList let LinqRuntimeHelpersPath = IL.splitNamespace LinqRuntimeHelpersName |> Array.ofList let RuntimeHelpersPath = IL.splitNamespace RuntimeHelpersName |> Array.ofList let QuotationsPath = IL.splitNamespace QuotationsName |> Array.ofList let ExtraTopLevelOperatorsPath = IL.splitNamespace ExtraTopLevelOperatorsName |> Array.ofList let RootPathArray = FSharpLib.RootPath |> Array.ofList let CorePathArray = FSharpLib.CorePath |> Array.ofList let LinqPathArray = LinqPath |> Array.ofList let ControlPathArray = ControlPath |> Array.ofList let CollectionsPathArray = CollectionsPath |> Array.ofList //------------------------------------------------------------------------- // Access the initial environment: helpers to build references //------------------------------------------------------------------------- let private mkNonGenericTy tcref = TType_app(tcref,[]) let mkNonLocalTyconRef2 ccu path n = mkNonLocalTyconRef (mkNonLocalEntityRef ccu path) n let mk_MFCore_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.CorePathArray n let mk_MFQuotations_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.QuotationsPath n let mk_MFLinq_tcref ccu n = mkNonLocalTyconRef2 ccu LinqPathArray n let mk_MFCollections_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.CollectionsPathArray n let mk_MFCompilerServices_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.CompilerServicesPath n let mk_MFRuntimeHelpers_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.RuntimeHelpersPath n let mk_MFControl_tcref ccu n = mkNonLocalTyconRef2 ccu FSharpLib.ControlPathArray n type public BuiltinAttribInfo = | AttribInfo of ILTypeRef * TyconRef member this.TyconRef = let (AttribInfo(_,tcref)) = this in tcref member this.TypeRef = let (AttribInfo(tref,_)) = this in tref //------------------------------------------------------------------------- // Table of all these "globals" //------------------------------------------------------------------------- [] type public TcGlobals = { ilg : ILGlobals; #if NO_COMPILER_BACKEND #else ilxPubCloEnv : EraseIlxFuncs.cenv; #endif compilingFslib: bool; mlCompatibility : bool; directoryToResolveRelativePaths : string; fslibCcu: CcuThunk; sysCcu: CcuThunk; using40environment: bool; indirectCallArrayMethods: bool; better_tcref_map: TyconRef -> TypeInst -> TType option; refcell_tcr_canon: TyconRef; option_tcr_canon : TyconRef; choice2_tcr : TyconRef; choice3_tcr : TyconRef; choice4_tcr : TyconRef; choice5_tcr : TyconRef; choice6_tcr : TyconRef; choice7_tcr : TyconRef; list_tcr_canon : TyconRef; set_tcr_canon : TyconRef; map_tcr_canon : TyconRef; lazy_tcr_canon : TyconRef; // These have a slightly different behaviour when compiling GetFSharpCoreLibraryName // hence they are 'methods' on the TcGlobals structure. unionCaseRefEq : UnionCaseRef -> UnionCaseRef -> bool; valRefEq : ValRef -> ValRef -> bool; refcell_tcr_nice: TyconRef; option_tcr_nice : TyconRef; list_tcr_nice : TyconRef; lazy_tcr_nice : TyconRef; format_tcr : TyconRef; expr_tcr : TyconRef; raw_expr_tcr : TyconRef; nativeint_tcr : TyconRef; int32_tcr : TyconRef; int16_tcr : TyconRef; int64_tcr : TyconRef; uint16_tcr : TyconRef; uint32_tcr : TyconRef; uint64_tcr : TyconRef; sbyte_tcr : TyconRef; decimal_tcr : TyconRef; date_tcr : TyconRef; pdecimal_tcr : TyconRef; byte_tcr : TyconRef; bool_tcr : TyconRef; unit_tcr_canon : TyconRef; unit_tcr_nice : TyconRef; exn_tcr : TyconRef; char_tcr : TyconRef; float_tcr : TyconRef; float32_tcr : TyconRef; pfloat_tcr : TyconRef; pfloat32_tcr : TyconRef; pint_tcr : TyconRef; pint8_tcr : TyconRef; pint16_tcr : TyconRef; pint64_tcr : TyconRef; byref_tcr : TyconRef; nativeptr_tcr : TyconRef; ilsigptr_tcr : TyconRef; fastFunc_tcr : TyconRef; array_tcr_nice : TyconRef; seq_tcr : TyconRef; seq_base_tcr : TyconRef; measureproduct_tcr : TyconRef measureinverse_tcr : TyconRef measureone_tcr : TyconRef il_arr1_tcr : TyconRef; il_arr2_tcr : TyconRef; il_arr3_tcr : TyconRef; il_arr4_tcr : TyconRef; tuple1_tcr : TyconRef; tuple2_tcr : TyconRef; tuple3_tcr : TyconRef; tuple4_tcr : TyconRef; tuple5_tcr : TyconRef; tuple6_tcr : TyconRef; tuple7_tcr : TyconRef; tuple8_tcr : TyconRef; tcref_IQueryable : TyconRef; tcref_IObservable : TyconRef; tcref_IObserver : TyconRef; fslib_IEvent2_tcr : TyconRef; fslib_IDelegateEvent_tcr: TyconRef; system_Nullable_tcref : TyconRef; system_GenericIComparable_tcref : TyconRef; system_GenericIEquatable_tcref : TyconRef; system_IndexOutOfRangeException_tcref : TyconRef; int_ty : TType; nativeint_ty : TType; unativeint_ty : TType; int32_ty : TType; int16_ty : TType; int64_ty : TType; uint16_ty : TType; uint32_ty : TType; uint64_ty : TType; sbyte_ty : TType; byte_ty : TType; bool_ty : TType; string_ty : TType; obj_ty : TType; unit_ty : TType; exn_ty : TType; char_ty : TType; decimal_ty : TType; float_ty : TType; float32_ty : TType; system_Array_typ : TType; system_Object_typ : TType; system_IDisposable_typ : TType; system_Value_typ : TType; system_Delegate_typ : TType; system_MulticastDelegate_typ : TType; system_Enum_typ : TType; system_Exception_typ : TType; system_Int32_typ : TType; system_String_typ : TType; system_Type_typ : TType; system_TypedReference_tcref : TyconRef; system_ArgIterator_tcref : TyconRef; system_Decimal_tcref : TyconRef; system_SByte_tcref : TyconRef; system_Int16_tcref : TyconRef; system_Int32_tcref : TyconRef; system_Int64_tcref : TyconRef; system_IntPtr_tcref : TyconRef; system_Bool_tcref : TyconRef; system_Char_tcref : TyconRef; system_Byte_tcref : TyconRef; system_UInt16_tcref : TyconRef; system_UInt32_tcref : TyconRef; system_UInt64_tcref : TyconRef; system_UIntPtr_tcref : TyconRef; system_Single_tcref : TyconRef; system_Double_tcref : TyconRef; system_RuntimeArgumentHandle_tcref : TyconRef; system_RuntimeTypeHandle_typ : TType; system_RuntimeMethodHandle_typ : TType; system_MarshalByRefObject_tcref : TyconRef; system_MarshalByRefObject_typ : TType; system_Reflection_MethodInfo_typ : TType; system_Array_tcref : TyconRef; system_Object_tcref : TyconRef; system_Void_tcref : TyconRef; system_LinqExpression_tcref : TyconRef; mk_IComparable_ty : TType; mk_IStructuralComparable_ty : TType; mk_IStructuralEquatable_ty : TType; mk_IComparer_ty : TType; mk_IEqualityComparer_ty : TType; tcref_System_Collections_IComparer : TyconRef; tcref_System_Collections_IEqualityComparer : TyconRef; tcref_System_Collections_Generic_IEqualityComparer : TyconRef; tcref_System_Collections_Generic_Dictionary : TyconRef; tcref_System_IComparable : TyconRef; tcref_System_IStructuralComparable : TyconRef; tcref_System_IStructuralEquatable : TyconRef; tcref_LanguagePrimitives : TyconRef; attrib_CustomOperationAttribute : BuiltinAttribInfo; attrib_ProjectionParameterAttribute : BuiltinAttribInfo; attrib_AttributeUsageAttribute : BuiltinAttribInfo; attrib_ParamArrayAttribute : BuiltinAttribInfo; attrib_IDispatchConstantAttribute : BuiltinAttribInfo; attrib_IUnknownConstantAttribute : BuiltinAttribInfo; attrib_SystemObsolete : BuiltinAttribInfo; attrib_DllImportAttribute : BuiltinAttribInfo; attrib_CompiledNameAttribute : BuiltinAttribInfo; attrib_NonSerializedAttribute : BuiltinAttribInfo; attrib_AutoSerializableAttribute : BuiltinAttribInfo; attrib_StructLayoutAttribute : BuiltinAttribInfo; attrib_TypeForwardedToAttribute : BuiltinAttribInfo; attrib_ComVisibleAttribute : BuiltinAttribInfo; attrib_ComImportAttribute : BuiltinAttribInfo; attrib_FieldOffsetAttribute : BuiltinAttribInfo; attrib_MarshalAsAttribute : BuiltinAttribInfo; attrib_InAttribute : BuiltinAttribInfo; attrib_OutAttribute : BuiltinAttribInfo; attrib_OptionalAttribute : BuiltinAttribInfo; attrib_ThreadStaticAttribute : BuiltinAttribInfo; attrib_SpecialNameAttribute : BuiltinAttribInfo; attrib_VolatileFieldAttribute : BuiltinAttribInfo; attrib_ContextStaticAttribute : BuiltinAttribInfo; attrib_FlagsAttribute : BuiltinAttribInfo; attrib_DefaultMemberAttribute : BuiltinAttribInfo; attrib_DebuggerDisplayAttribute : BuiltinAttribInfo; attrib_DebuggerTypeProxyAttribute : BuiltinAttribInfo; attrib_PreserveSigAttribute : BuiltinAttribInfo; attrib_MethodImplAttribute : BuiltinAttribInfo; tcref_System_Collections_Generic_IList : TyconRef; tcref_System_Collections_Generic_ICollection : TyconRef; tcref_System_Collections_Generic_IEnumerable : TyconRef; tcref_System_Collections_IEnumerable : TyconRef; tcref_System_Collections_Generic_IEnumerator : TyconRef; tcref_System_Attribute : TyconRef; attrib_RequireQualifiedAccessAttribute : BuiltinAttribInfo; attrib_EntryPointAttribute : BuiltinAttribInfo; attrib_DefaultAugmentationAttribute : BuiltinAttribInfo; attrib_CompilerMessageAttribute : BuiltinAttribInfo; attrib_ExperimentalAttribute : BuiltinAttribInfo; attrib_UnverifiableAttribute : BuiltinAttribInfo; attrib_LiteralAttribute : BuiltinAttribInfo; attrib_ConditionalAttribute : BuiltinAttribInfo; attrib_OptionalArgumentAttribute : BuiltinAttribInfo; attrib_RequiresExplicitTypeArgumentsAttribute : BuiltinAttribInfo; attrib_DefaultValueAttribute : BuiltinAttribInfo; attrib_ClassAttribute : BuiltinAttribInfo; attrib_InterfaceAttribute : BuiltinAttribInfo; attrib_StructAttribute : BuiltinAttribInfo; attrib_ReflectedDefinitionAttribute : BuiltinAttribInfo; attrib_AutoOpenAttribute : BuiltinAttribInfo; attrib_CompilationRepresentationAttribute : BuiltinAttribInfo; attrib_CompilationArgumentCountsAttribute : BuiltinAttribInfo; attrib_CompilationMappingAttribute : BuiltinAttribInfo; attrib_CLIEventAttribute : BuiltinAttribInfo; attrib_AllowNullLiteralAttribute : BuiltinAttribInfo; attrib_CLIMutableAttribute : BuiltinAttribInfo; attrib_NoComparisonAttribute : BuiltinAttribInfo; attrib_NoEqualityAttribute : BuiltinAttribInfo; attrib_CustomComparisonAttribute : BuiltinAttribInfo; attrib_CustomEqualityAttribute : BuiltinAttribInfo; attrib_EqualityConditionalOnAttribute : BuiltinAttribInfo; attrib_ComparisonConditionalOnAttribute : BuiltinAttribInfo; attrib_ReferenceEqualityAttribute : BuiltinAttribInfo; attrib_StructuralEqualityAttribute : BuiltinAttribInfo; attrib_StructuralComparisonAttribute : BuiltinAttribInfo; attrib_SealedAttribute : BuiltinAttribInfo; attrib_AbstractClassAttribute : BuiltinAttribInfo; attrib_GeneralizableValueAttribute : BuiltinAttribInfo; attrib_MeasureAttribute : BuiltinAttribInfo; attrib_MeasureableAttribute : BuiltinAttribInfo; attrib_NoDynamicInvocationAttribute : BuiltinAttribInfo; attrib_SecurityAttribute : BuiltinAttribInfo; attrib_SecurityCriticalAttribute : BuiltinAttribInfo; attrib_SecuritySafeCriticalAttribute : BuiltinAttribInfo; cons_ucref : UnionCaseRef; nil_ucref : UnionCaseRef; (* These are the library values the compiler needs to know about *) seq_vref : ValRef; and_vref : ValRef; and2_vref : ValRef; addrof_vref : ValRef; addrof2_vref : ValRef; or_vref : ValRef; or2_vref : ValRef; // 'inner' refers to "after optimization boils away inlined functions" generic_equality_er_inner_vref : ValRef; generic_equality_per_inner_vref : ValRef; generic_equality_withc_inner_vref : ValRef; generic_comparison_inner_vref : ValRef; generic_comparison_withc_inner_vref : ValRef; generic_hash_inner_vref : ValRef; generic_hash_withc_inner_vref : ValRef; reference_equality_inner_vref : ValRef; compare_operator_vref : ValRef; equals_operator_vref : ValRef; equals_nullable_operator_vref : ValRef; nullable_equals_nullable_operator_vref : ValRef; nullable_equals_operator_vref : ValRef; not_equals_operator_vref : ValRef; less_than_operator_vref : ValRef; less_than_or_equals_operator_vref : ValRef; greater_than_operator_vref : ValRef; greater_than_or_equals_operator_vref : ValRef; bitwise_or_vref : ValRef; bitwise_and_vref : ValRef; bitwise_xor_vref : ValRef; bitwise_unary_not_vref : ValRef; bitwise_shift_left_vref : ValRef; bitwise_shift_right_vref : ValRef; unchecked_addition_vref : ValRef; unchecked_unary_plus_vref : ValRef; unchecked_unary_minus_vref : ValRef; unchecked_unary_not_vref : ValRef; unchecked_subtraction_vref : ValRef; unchecked_multiply_vref : ValRef; unchecked_defaultof_vref : ValRef; seq_info : IntrinsicValRef; reraise_info : IntrinsicValRef; reraise_vref : ValRef; typeof_info : IntrinsicValRef; typeof_vref : ValRef; methodhandleof_info : IntrinsicValRef; methodhandleof_vref : ValRef; sizeof_vref : ValRef; typedefof_info : IntrinsicValRef; typedefof_vref : ValRef; enum_vref : ValRef; new_decimal_info : IntrinsicValRef; // 'outer' refers to 'before optimization has boiled away inlined functions' // Augmentation generation generates calls to these functions // Optimization generates calls to these functions generic_comparison_withc_outer_info : IntrinsicValRef; generic_equality_er_outer_info : IntrinsicValRef; generic_equality_withc_outer_info : IntrinsicValRef; generic_hash_withc_outer_info : IntrinsicValRef; // Augmentation generation and pattern match compilation generates calls to this function equals_operator_info : IntrinsicValRef; query_source_vref : ValRef; query_value_vref : ValRef; query_run_value_vref : ValRef; query_run_enumerable_vref : ValRef; query_for_vref : ValRef; query_yield_vref : ValRef; query_yield_from_vref : ValRef; query_select_vref : ValRef; query_where_vref : ValRef; query_zero_vref : ValRef; query_builder_tcref : TyconRef; generic_hash_withc_tuple2_vref : ValRef; generic_hash_withc_tuple3_vref : ValRef; generic_hash_withc_tuple4_vref : ValRef; generic_hash_withc_tuple5_vref : ValRef; generic_equals_withc_tuple2_vref : ValRef; generic_equals_withc_tuple3_vref : ValRef; generic_equals_withc_tuple4_vref : ValRef; generic_equals_withc_tuple5_vref : ValRef; generic_compare_withc_tuple2_vref : ValRef; generic_compare_withc_tuple3_vref : ValRef; generic_compare_withc_tuple4_vref : ValRef; generic_compare_withc_tuple5_vref : ValRef; generic_equality_withc_outer_vref : ValRef; create_instance_info : IntrinsicValRef; create_event_info : IntrinsicValRef; unbox_vref : ValRef; unbox_fast_vref : ValRef; istype_vref : ValRef; istype_fast_vref : ValRef; get_generic_comparer_info : IntrinsicValRef; get_generic_er_equality_comparer_info : IntrinsicValRef; get_generic_per_equality_comparer_info : IntrinsicValRef; unbox_info : IntrinsicValRef; unbox_fast_info : IntrinsicValRef; istype_info : IntrinsicValRef; istype_fast_info : IntrinsicValRef; dispose_info : IntrinsicValRef; range_op_vref : ValRef; range_int32_op_vref : ValRef; //range_step_op_vref : ValRef; array_get_vref : ValRef; array2D_get_vref : ValRef; array3D_get_vref : ValRef; array4D_get_vref : ValRef; seq_collect_vref : ValRef; seq_collect_info : IntrinsicValRef; seq_using_info : IntrinsicValRef; seq_using_vref : ValRef; seq_delay_info : IntrinsicValRef; seq_delay_vref : ValRef; seq_append_info : IntrinsicValRef; seq_append_vref : ValRef; seq_generated_info : IntrinsicValRef; seq_generated_vref : ValRef; seq_finally_info : IntrinsicValRef; seq_finally_vref : ValRef; seq_of_functions_info : IntrinsicValRef; seq_of_functions_vref : ValRef; seq_to_array_info : IntrinsicValRef; seq_to_list_info : IntrinsicValRef; seq_map_info : IntrinsicValRef; seq_map_vref : ValRef; seq_singleton_info : IntrinsicValRef; seq_singleton_vref : ValRef; seq_empty_info : IntrinsicValRef; seq_empty_vref : ValRef; new_format_info : IntrinsicValRef; raise_info : IntrinsicValRef; lazy_force_info : IntrinsicValRef; lazy_create_info : IntrinsicValRef; array_get_info : IntrinsicValRef; array2D_get_info : IntrinsicValRef; array3D_get_info : IntrinsicValRef; array4D_get_info : IntrinsicValRef; unpickle_quoted_info : IntrinsicValRef; cast_quotation_info : IntrinsicValRef; lift_value_info : IntrinsicValRef; query_source_as_enum_info : IntrinsicValRef; new_query_source_info : IntrinsicValRef; fail_init_info : IntrinsicValRef; fail_static_init_info : IntrinsicValRef; check_this_info : IntrinsicValRef; quote_to_linq_lambda_info : IntrinsicValRef; sprintf_vref : ValRef; splice_expr_vref : ValRef; splice_raw_expr_vref : ValRef; new_format_vref : ValRef; mkSysTyconRef : string list -> string -> TyconRef; // A list of types that are explicitly suppressed from the F# intellisense // Note that the suppression checks for the precise name of the type // so the lowercase versions are visible suppressed_types : TyconRef list; /// Memoization table to help minimize the number of ILSourceDocument objects we create memoize_file : int -> IL.ILSourceDocument; // Are we assuming all code gen is for F# interactive, with no static linking isInteractive : bool // A table of all intrinsics that the compiler cares about knownIntrinsics : IDictionary<(string * string), ValRef> // A table of known modules in FSharp.Core. Not all modules are necessarily listed, but the more we list the // better the job we do of mapping from provided expressions back to FSharp.Core F# functions and values. knownFSharpCoreModules : IDictionary } override x.ToString() = "" #if DEBUG // This global is only used during debug output let global_g = ref (None : TcGlobals option) #endif let mkTcGlobals (compilingFslib,sysCcu,ilg,fslibCcu,directoryToResolveRelativePaths,mlCompatibility, using40environment,indirectCallArrayMethods,isInteractive,getTypeCcu) = let int_tcr = mk_MFCore_tcref fslibCcu "int" let nativeint_tcr = mk_MFCore_tcref fslibCcu "nativeint" let unativeint_tcr = mk_MFCore_tcref fslibCcu "unativeint" let int32_tcr = mk_MFCore_tcref fslibCcu "int32" let int16_tcr = mk_MFCore_tcref fslibCcu "int16" let int64_tcr = mk_MFCore_tcref fslibCcu "int64" let uint16_tcr = mk_MFCore_tcref fslibCcu "uint16" let uint32_tcr = mk_MFCore_tcref fslibCcu "uint32" let uint64_tcr = mk_MFCore_tcref fslibCcu "uint64" let sbyte_tcr = mk_MFCore_tcref fslibCcu "sbyte" let decimal_tcr = mk_MFCore_tcref fslibCcu "decimal" let pdecimal_tcr = mk_MFCore_tcref fslibCcu "decimal`1" let byte_tcr = mk_MFCore_tcref fslibCcu "byte" let bool_tcr = mk_MFCore_tcref fslibCcu "bool" let string_tcr = mk_MFCore_tcref fslibCcu "string" let obj_tcr = mk_MFCore_tcref fslibCcu "obj" let unit_tcr_canon = mk_MFCore_tcref fslibCcu "Unit" let unit_tcr_nice = mk_MFCore_tcref fslibCcu "unit" let exn_tcr = mk_MFCore_tcref fslibCcu "exn" let char_tcr = mk_MFCore_tcref fslibCcu "char" let float_tcr = mk_MFCore_tcref fslibCcu "float" let float32_tcr = mk_MFCore_tcref fslibCcu "float32" let pfloat_tcr = mk_MFCore_tcref fslibCcu "float`1" let pfloat32_tcr = mk_MFCore_tcref fslibCcu "float32`1" let pint_tcr = mk_MFCore_tcref fslibCcu "int`1" let pint8_tcr = mk_MFCore_tcref fslibCcu "sbyte`1" let pint16_tcr = mk_MFCore_tcref fslibCcu "int16`1" let pint64_tcr = mk_MFCore_tcref fslibCcu "int64`1" let byref_tcr = mk_MFCore_tcref fslibCcu "byref`1" let nativeptr_tcr = mk_MFCore_tcref fslibCcu "nativeptr`1" let ilsigptr_tcr = mk_MFCore_tcref fslibCcu "ilsigptr`1" let fastFunc_tcr = mk_MFCore_tcref fslibCcu "FSharpFunc`2" let mkSysTyconRef path nm = let ccu = getTypeCcu path nm mkNonLocalTyconRef2 ccu (Array.ofList path) nm let mkSysNonGenericTy path n = mkNonGenericTy(mkSysTyconRef path n) let sys = ["System"] let sysLinq = ["System";"Linq"] let sysCollections = ["System";"Collections"] let sysGenerics = ["System";"Collections";"Generic"] let lazy_tcr = mkSysTyconRef sys "Lazy`1" let fslib_IEvent2_tcr = mk_MFControl_tcref fslibCcu "IEvent`2" let tcref_IQueryable = mkSysTyconRef sysLinq "IQueryable`1" let tcref_IObservable = mkSysTyconRef sys "IObservable`1" let tcref_IObserver = mkSysTyconRef sys "IObserver`1" let fslib_IDelegateEvent_tcr = mk_MFControl_tcref fslibCcu "IDelegateEvent`1" let option_tcr_nice = mk_MFCore_tcref fslibCcu "option`1" let list_tcr_canon = mk_MFCollections_tcref fslibCcu "List`1" let list_tcr_nice = mk_MFCollections_tcref fslibCcu "list`1" let lazy_tcr_nice = mk_MFControl_tcref fslibCcu "Lazy`1" let seq_tcr = mk_MFCollections_tcref fslibCcu "seq`1" let format_tcr = mk_MFCore_tcref fslibCcu "PrintfFormat`5" let format4_tcr = mk_MFCore_tcref fslibCcu "PrintfFormat`4" let date_tcr = mkSysTyconRef sys "DateTime" let IEnumerable_tcr = mkSysTyconRef sysGenerics "IEnumerable`1" let IEnumerator_tcr = mkSysTyconRef sysGenerics "IEnumerator`1" let System_Attribute_tcr = mkSysTyconRef sys "Attribute" let expr_tcr = mk_MFQuotations_tcref fslibCcu "Expr`1" let raw_expr_tcr = mk_MFQuotations_tcref fslibCcu "Expr" let query_builder_tcref = mk_MFLinq_tcref fslibCcu "QueryBuilder" let querySource_tcr = mk_MFLinq_tcref fslibCcu "QuerySource`2" let linqExpression_tcr = mkSysTyconRef ["System";"Linq";"Expressions"] "Expression`1" let il_arr1_tcr = mk_MFCore_tcref fslibCcu "[]`1" let il_arr2_tcr = mk_MFCore_tcref fslibCcu "[,]`1"; let il_arr3_tcr = mk_MFCore_tcref fslibCcu "[,,]`1"; let il_arr4_tcr = mk_MFCore_tcref fslibCcu "[,,,]`1"; let bool_ty = mkNonGenericTy bool_tcr let int_ty = mkNonGenericTy int_tcr let obj_ty = mkNonGenericTy obj_tcr let string_ty = mkNonGenericTy string_tcr let byte_ty = mkNonGenericTy byte_tcr let decimal_ty = mkSysNonGenericTy sys "Decimal" let unit_ty = mkNonGenericTy unit_tcr_nice let system_Type_typ = mkSysNonGenericTy sys "Type" let system_Reflection_MethodInfo_typ = mkSysNonGenericTy ["System";"Reflection"] "MethodInfo" let nullable_tcr = mkSysTyconRef sys "Nullable`1" (* local helpers to build value infos *) let mkNullableTy ty = TType_app(nullable_tcr, [ty]) let mkByrefTy ty = TType_app(byref_tcr, [ty]) let mkNativePtrType ty = TType_app(nativeptr_tcr, [ty]) let mkFunTy d r = TType_fun (d,r) let (-->) d r = mkFunTy d r let mkIteratedFunTy dl r = List.foldBack (-->) dl r let mkSmallTupledTy l = match l with [] -> unit_ty | [h] -> h | tys -> TType_tuple tys let tryMkForallTy d r = match d with [] -> r | tps -> TType_forall(tps,r) let knownIntrinsics = Dictionary<(string*string), ValRef>(HashIdentity.Structural) let makeIntrinsicValRef (enclosingEntity, logicalName, memberParentName, compiledNameOpt, typars, (argtys,rty)) = let ty = tryMkForallTy typars (mkIteratedFunTy (List.map mkSmallTupledTy argtys) rty) let isMember = isSome memberParentName let argCount = if isMember then List.sum (List.map List.length argtys) else 0 let linkageType = if isMember then Some ty else None let key = ValLinkageFullKey({ MemberParentMangledName=memberParentName; MemberIsOverride=false; LogicalName=logicalName; TotalArgCount= argCount },linkageType) let vref = IntrinsicValRef(enclosingEntity,logicalName,isMember,ty,key) let compiledName = defaultArg compiledNameOpt logicalName knownIntrinsics.Add((enclosingEntity.LastItemMangledName, compiledName), ValRefForIntrinsic vref) vref let mk_IComparer_ty = mkSysNonGenericTy sysCollections "IComparer" let mk_IEqualityComparer_ty = mkSysNonGenericTy sysCollections "IEqualityComparer" let system_RuntimeMethodHandle_typ = mkSysNonGenericTy sys "RuntimeMethodHandle" let mk_unop_ty ty = [[ty]], ty let mk_binop_ty ty = [[ty]; [ty]], ty let mk_shiftop_ty ty = [[ty]; [int_ty]], ty let mk_binop_ty3 ty1 ty2 ty3 = [[ty1]; [ty2]], ty3 let mk_rel_sig ty = [[ty];[ty]],bool_ty let mk_compare_sig ty = [[ty];[ty]],int_ty let mk_hash_sig ty = [[ty]], int_ty let mk_compare_withc_sig ty = [[mk_IComparer_ty];[ty]; [ty]], int_ty let mk_equality_withc_sig ty = [[mk_IEqualityComparer_ty];[ty];[ty]], bool_ty let mk_hash_withc_sig ty = [[mk_IEqualityComparer_ty]; [ty]], int_ty let mkListTy ty = TType_app(list_tcr_nice,[ty]) let mkSeqTy ty1 = TType_app(seq_tcr,[ty1]) let mkQuerySourceTy ty1 ty2 = TType_app(querySource_tcr,[ty1; ty2]) let tcref_System_Collections_IEnumerable = mkSysTyconRef sysCollections "IEnumerable"; let mkArrayType ty = TType_app(il_arr1_tcr, [ty]) let mk_array2_typ ty = TType_app(il_arr2_tcr, [ty]) let mk_array3_typ ty = TType_app(il_arr3_tcr, [ty]) let mk_array4_typ ty = TType_app(il_arr4_tcr, [ty]) let mkLazyTy ty = TType_app(lazy_tcr, [ty]) let mkPrintfFormatTy aty bty cty dty ety = TType_app(format_tcr, [aty;bty;cty;dty; ety]) let mk_format4_ty aty bty cty dty = TType_app(format4_tcr, [aty;bty;cty;dty]) let mkQuotedExprTy aty = TType_app(expr_tcr, [aty]) let mkRawQuotedExprTy = TType_app(raw_expr_tcr, []) let mkQueryBuilderTy = TType_app(query_builder_tcref, []) let mkLinqExpressionTy aty = TType_app(linqExpression_tcr, [aty]) let cons_ucref = mkUnionCaseRef list_tcr_canon "op_ColonColon" let nil_ucref = mkUnionCaseRef list_tcr_canon "op_Nil" let fslib_MF_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.RootPathArray let fslib_MFCore_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.CorePathArray let fslib_MFLinq_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.LinqPathArray let fslib_MFCollections_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.CollectionsPathArray let fslib_MFCompilerServices_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.CompilerServicesPath let fslib_MFLinqRuntimeHelpers_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.LinqRuntimeHelpersPath let fslib_MFControl_nleref = mkNonLocalEntityRef fslibCcu FSharpLib.ControlPathArray let fslib_MFLanguagePrimitives_nleref = mkNestedNonLocalEntityRef fslib_MFCore_nleref "LanguagePrimitives" let fslib_MFIntrinsicOperators_nleref = mkNestedNonLocalEntityRef fslib_MFLanguagePrimitives_nleref "IntrinsicOperators" let fslib_MFIntrinsicFunctions_nleref = mkNestedNonLocalEntityRef fslib_MFLanguagePrimitives_nleref "IntrinsicFunctions" let fslib_MFHashCompare_nleref = mkNestedNonLocalEntityRef fslib_MFLanguagePrimitives_nleref "HashCompare" let fslib_MFOperators_nleref = mkNestedNonLocalEntityRef fslib_MFCore_nleref "Operators" let fslib_MFOperatorIntrinsics_nleref = mkNestedNonLocalEntityRef fslib_MFOperators_nleref "OperatorIntrinsics" let fslib_MFOperatorsUnchecked_nleref = mkNestedNonLocalEntityRef fslib_MFOperators_nleref "Unchecked" let fslib_MFOperatorsChecked_nleref = mkNestedNonLocalEntityRef fslib_MFOperators_nleref "Checked" let fslib_MFExtraTopLevelOperators_nleref = mkNestedNonLocalEntityRef fslib_MFCore_nleref "ExtraTopLevelOperators" let fslib_MFNullableOperators_nleref = mkNestedNonLocalEntityRef fslib_MFLinq_nleref "NullableOperators" let fslib_MFQueryRunExtensions_nleref = mkNestedNonLocalEntityRef fslib_MFLinq_nleref "QueryRunExtensions" let fslib_MFQueryRunExtensionsLowPriority_nleref = mkNestedNonLocalEntityRef fslib_MFQueryRunExtensions_nleref "LowPriority" let fslib_MFQueryRunExtensionsHighPriority_nleref = mkNestedNonLocalEntityRef fslib_MFQueryRunExtensions_nleref "HighPriority" let fslib_MFSeqModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "SeqModule" let fslib_MFListModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "ListModule" let fslib_MFArrayModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "ArrayModule" let fslib_MFArray2DModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "Array2DModule" let fslib_MFArray3DModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "Array3DModule" let fslib_MFArray4DModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "Array4DModule" let fslib_MFSetModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "SetModule" let fslib_MFMapModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "MapModule" let fslib_MFStringModule_nleref = mkNestedNonLocalEntityRef fslib_MFCollections_nleref "StringModule" let fslib_MFOptionModule_nleref = mkNestedNonLocalEntityRef fslib_MFCore_nleref "OptionModule" let fslib_MFRuntimeHelpers_nleref = mkNestedNonLocalEntityRef fslib_MFCompilerServices_nleref "RuntimeHelpers" let fslib_MFQuotations_nleref = mkNestedNonLocalEntityRef fslib_MF_nleref "Quotations" let fslib_MFLinqRuntimeHelpersQuotationConverter_nleref = mkNestedNonLocalEntityRef fslib_MFLinqRuntimeHelpers_nleref "LeafExpressionConverter" let fslib_MFLazyExtensions_nleref = mkNestedNonLocalEntityRef fslib_MFControl_nleref "LazyExtensions" let tuple1_tcr = mkSysTyconRef sys "Tuple`1" let tuple2_tcr = mkSysTyconRef sys "Tuple`2" let tuple3_tcr = mkSysTyconRef sys "Tuple`3" let tuple4_tcr = mkSysTyconRef sys "Tuple`4" let tuple5_tcr = mkSysTyconRef sys "Tuple`5" let tuple6_tcr = mkSysTyconRef sys "Tuple`6" let tuple7_tcr = mkSysTyconRef sys "Tuple`7" let tuple8_tcr = mkSysTyconRef sys "Tuple`8" let choice2_tcr = mk_MFCore_tcref fslibCcu "Choice`2" let choice3_tcr = mk_MFCore_tcref fslibCcu "Choice`3" let choice4_tcr = mk_MFCore_tcref fslibCcu "Choice`4" let choice5_tcr = mk_MFCore_tcref fslibCcu "Choice`5" let choice6_tcr = mk_MFCore_tcref fslibCcu "Choice`6" let choice7_tcr = mk_MFCore_tcref fslibCcu "Choice`7" let tyconRefEq x y = primEntityRefEq compilingFslib fslibCcu x y let valRefEq x y = primValRefEq compilingFslib fslibCcu x y let unionCaseRefEq x y = primUnionCaseRefEq compilingFslib fslibCcu x y let suppressed_types = [ mk_MFCore_tcref fslibCcu "Option`1"; mk_MFCore_tcref fslibCcu "Ref`1"; mk_MFCore_tcref fslibCcu "FSharpTypeFunc"; mk_MFCore_tcref fslibCcu "FSharpFunc`2"; mk_MFCore_tcref fslibCcu "Unit" ] let knownFSharpCoreModules = dict [ for nleref in [ fslib_MFLanguagePrimitives_nleref fslib_MFIntrinsicOperators_nleref fslib_MFIntrinsicFunctions_nleref fslib_MFHashCompare_nleref fslib_MFOperators_nleref fslib_MFOperatorIntrinsics_nleref fslib_MFOperatorsUnchecked_nleref fslib_MFOperatorsChecked_nleref fslib_MFExtraTopLevelOperators_nleref fslib_MFNullableOperators_nleref fslib_MFQueryRunExtensions_nleref fslib_MFQueryRunExtensionsLowPriority_nleref fslib_MFQueryRunExtensionsHighPriority_nleref fslib_MFSeqModule_nleref fslib_MFListModule_nleref fslib_MFArrayModule_nleref fslib_MFArray2DModule_nleref fslib_MFArray3DModule_nleref fslib_MFArray4DModule_nleref fslib_MFSetModule_nleref fslib_MFMapModule_nleref fslib_MFStringModule_nleref fslib_MFOptionModule_nleref fslib_MFRuntimeHelpers_nleref ] do yield nleref.LastItemMangledName, ERefNonLocal nleref ] let decodeTupleTy l = match l with | [t1;t2;t3;t4;t5;t6;t7;marker] -> match marker with | TType_app(tcref,[t8]) when tyconRefEq tcref tuple1_tcr -> TType_tuple [t1;t2;t3;t4;t5;t6;t7;t8] | TType_tuple t8plus -> TType_tuple ([t1;t2;t3;t4;t5;t6;t7] @ t8plus) | _ -> TType_tuple l | _ -> TType_tuple l let mk_MFCore_attrib nm : BuiltinAttribInfo = AttribInfo(mkILTyRef(IlxSettings.ilxFsharpCoreLibScopeRef (), nm),mk_MFCore_tcref fslibCcu nm) let mkMscorlibAttrib (nm:string) : BuiltinAttribInfo = let path, typeName = splitILTypeName nm AttribInfo(mkILTyRef (ilg.mscorlibScopeRef,nm), mkSysTyconRef path typeName) let mk_doc filename = ILSourceDocument.Create(language=None, vendor=None, documentType=None, file=filename) // Build the memoization table for files let memoize_file = new MemoizationTable ((fileOfFileIndex >> Filename.fullpath directoryToResolveRelativePaths >> mk_doc), keyComparer=HashIdentity.Structural) let and_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, CompileOpName "&" ,None ,None ,[], mk_rel_sig bool_ty) let addrof_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, CompileOpName "~&" ,None ,None ,[vara], ([[varaTy]], mkByrefTy varaTy)) let addrof2_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, CompileOpName "~&&" ,None ,None ,[vara], ([[varaTy]], mkNativePtrType varaTy)) let and2_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, CompileOpName "&&" ,None ,None ,[], mk_rel_sig bool_ty) let or_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, "or" ,None ,Some "Or" ,[], mk_rel_sig bool_ty) let or2_info = makeIntrinsicValRef(fslib_MFIntrinsicOperators_nleref, CompileOpName "||" ,None ,None ,[], mk_rel_sig bool_ty) let compare_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "compare" ,None ,Some "Compare",[vara], mk_compare_sig varaTy) let equals_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName "=" ,None ,None ,[vara], mk_rel_sig varaTy) let equals_nullable_operator_info = makeIntrinsicValRef(fslib_MFNullableOperators_nleref, CompileOpName "=?" ,None ,None ,[vara], ([[varaTy];[mkNullableTy varaTy]],bool_ty)) let nullable_equals_operator_info = makeIntrinsicValRef(fslib_MFNullableOperators_nleref, CompileOpName "?=" ,None ,None ,[vara], ([[mkNullableTy varaTy];[varaTy]],bool_ty)) let nullable_equals_nullable_operator_info = makeIntrinsicValRef(fslib_MFNullableOperators_nleref, CompileOpName "?=?" ,None ,None ,[vara], ([[mkNullableTy varaTy];[mkNullableTy varaTy]],bool_ty)) let not_equals_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName "<>" ,None ,None ,[vara], mk_rel_sig varaTy) let less_than_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName "<" ,None ,None ,[vara], mk_rel_sig varaTy) let less_than_or_equals_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName "<=" ,None ,None ,[vara], mk_rel_sig varaTy) let greater_than_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName ">" ,None ,None ,[vara], mk_rel_sig varaTy) let greater_than_or_equals_operator_info = makeIntrinsicValRef(fslib_MFOperators_nleref, CompileOpName ">=" ,None ,None ,[vara], mk_rel_sig varaTy) let generic_comparison_withc_outer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericComparisonWithComparer" ,None ,None ,[vara], mk_compare_withc_sig varaTy) let generic_hash_withc_tuple2_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastHashTuple2" ,None ,None ,[vara;varb], mk_hash_withc_sig (decodeTupleTy [varaTy; varbTy])) let generic_hash_withc_tuple3_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastHashTuple3" ,None ,None ,[vara;varb;varc], mk_hash_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy])) let generic_hash_withc_tuple4_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastHashTuple4" ,None ,None ,[vara;varb;varc;vard], mk_hash_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy])) let generic_hash_withc_tuple5_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastHashTuple5" ,None ,None ,[vara;varb;varc;vard;vare],mk_hash_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy; vareTy])) let generic_equals_withc_tuple2_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastEqualsTuple2" ,None ,None ,[vara;varb], mk_equality_withc_sig (decodeTupleTy [varaTy; varbTy])) let generic_equals_withc_tuple3_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastEqualsTuple3" ,None ,None ,[vara;varb;varc], mk_equality_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy])) let generic_equals_withc_tuple4_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastEqualsTuple4" ,None ,None ,[vara;varb;varc;vard], mk_equality_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy])) let generic_equals_withc_tuple5_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastEqualsTuple5" ,None ,None ,[vara;varb;varc;vard;vare],mk_equality_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy; vareTy])) let generic_compare_withc_tuple2_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastCompareTuple2" ,None ,None ,[vara;varb], mk_compare_withc_sig (decodeTupleTy [varaTy; varbTy])) let generic_compare_withc_tuple3_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastCompareTuple3" ,None ,None ,[vara;varb;varc], mk_compare_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy])) let generic_compare_withc_tuple4_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastCompareTuple4" ,None ,None ,[vara;varb;varc;vard], mk_compare_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy])) let generic_compare_withc_tuple5_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "FastCompareTuple5" ,None ,None ,[vara;varb;varc;vard;vare],mk_compare_withc_sig (decodeTupleTy [varaTy; varbTy; varcTy; vardTy; vareTy])) let generic_equality_er_outer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericEqualityER" ,None ,None ,[vara], mk_rel_sig varaTy) let get_generic_comparer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericComparer" ,None ,None ,[], ([], mk_IComparer_ty)) let get_generic_er_equality_comparer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericEqualityERComparer" ,None ,None ,[], ([], mk_IEqualityComparer_ty)) let get_generic_per_equality_comparer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericEqualityComparer" ,None ,None ,[], ([], mk_IEqualityComparer_ty)) let generic_equality_withc_outer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericEqualityWithComparer" ,None ,None ,[vara], mk_equality_withc_sig varaTy) let generic_hash_withc_outer_info = makeIntrinsicValRef(fslib_MFLanguagePrimitives_nleref, "GenericHashWithComparer" ,None ,None ,[vara], mk_hash_withc_sig varaTy) let generic_equality_er_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericEqualityERIntrinsic" ,None ,None ,[vara], mk_rel_sig varaTy) let generic_equality_per_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericEqualityIntrinsic" ,None ,None ,[vara], mk_rel_sig varaTy) let generic_equality_withc_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericEqualityWithComparerIntrinsic" ,None ,None ,[vara], mk_equality_withc_sig varaTy) let generic_comparison_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericComparisonIntrinsic" ,None ,None ,[vara], mk_compare_sig varaTy) let generic_comparison_withc_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericComparisonWithComparerIntrinsic",None ,None ,[vara], mk_compare_withc_sig varaTy) let generic_hash_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericHashIntrinsic" ,None ,None ,[vara], mk_hash_sig varaTy) let generic_hash_withc_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "GenericHashWithComparerIntrinsic" ,None ,None ,[vara], mk_hash_withc_sig varaTy) let create_instance_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "CreateInstance" ,None ,None ,[vara], ([[unit_ty]], varaTy)) let unbox_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "UnboxGeneric" ,None ,None ,[vara], ([[obj_ty]], varaTy)) let unbox_fast_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "UnboxFast" ,None ,None ,[vara], ([[obj_ty]], varaTy)) let istype_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "TypeTestGeneric" ,None ,None ,[vara], ([[obj_ty]], bool_ty)) let istype_fast_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "TypeTestFast" ,None ,None ,[vara], ([[obj_ty]], bool_ty)) let dispose_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "Dispose" ,None ,None ,[vara], ([[varaTy]],unit_ty)) let reference_equality_inner_info = makeIntrinsicValRef(fslib_MFHashCompare_nleref, "PhysicalEqualityIntrinsic" ,None ,None ,[vara], mk_rel_sig varaTy) let bitwise_or_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_BitwiseOr" ,None ,None ,[vara], mk_binop_ty varaTy) let bitwise_and_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_BitwiseAnd" ,None ,None ,[vara], mk_binop_ty varaTy) let bitwise_xor_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_ExclusiveOr" ,None ,None ,[vara], mk_binop_ty varaTy) let bitwise_unary_not_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_LogicalNot" ,None ,None ,[vara], mk_unop_ty varaTy) let bitwise_shift_left_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_LeftShift" ,None ,None ,[vara], mk_shiftop_ty varaTy) let bitwise_shift_right_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_RightShift" ,None ,None ,[vara], mk_shiftop_ty varaTy) let unchecked_addition_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Addition" ,None ,None ,[vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) let unchecked_subtraction_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Subtraction" ,None ,None ,[vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) let unchecked_multiply_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Multiply" ,None ,None ,[vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) let unchecked_unary_plus_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_UnaryPlus" ,None ,None ,[vara], mk_unop_ty varaTy) let unchecked_unary_minus_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_UnaryNegation" ,None ,None ,[vara], mk_unop_ty varaTy) let unchecked_unary_not_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "not" ,None ,Some "Not" ,[], mk_unop_ty bool_ty) let raise_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "raise" ,None ,Some "Raise" ,[vara],([[mkSysNonGenericTy sys "Exception"]],varaTy)) let reraise_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "reraise" ,None ,Some "Reraise",[vara], ([[unit_ty]],varaTy)) let typeof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "typeof" ,None ,Some "TypeOf" ,[vara], ([],system_Type_typ)) let methodhandleof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "methodhandleof" ,None ,Some "MethodHandleOf",[vara;varb],([[varaTy --> varbTy]],system_RuntimeMethodHandle_typ)) let sizeof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "sizeof" ,None ,Some "SizeOf" ,[vara], ([],int_ty)) let unchecked_defaultof_info = makeIntrinsicValRef(fslib_MFOperatorsUnchecked_nleref, "defaultof" ,None ,Some "DefaultOf",[vara], ([],varaTy)) let typedefof_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "typedefof" ,None ,Some "TypeDefOf",[vara], ([],system_Type_typ)) let enum_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "enum" ,None ,Some "ToEnum" ,[vara], ([[int_ty]],varaTy)) let range_op_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Range" ,None ,None ,[vara], ([[varaTy];[varaTy]],mkSeqTy varaTy)) let range_int32_op_info = makeIntrinsicValRef(fslib_MFOperatorIntrinsics_nleref, "RangeInt32" ,None ,None ,[], ([[int_ty];[int_ty];[int_ty]],mkSeqTy int_ty)) let array2D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray2D" ,None ,None ,[vara], ([[mk_array2_typ varaTy];[int_ty]; [int_ty]],varaTy)) let array3D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray3D" ,None ,None ,[vara], ([[mk_array3_typ varaTy];[int_ty]; [int_ty]; [int_ty]],varaTy)) let array4D_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray4D" ,None ,None ,[vara], ([[mk_array4_typ varaTy];[int_ty]; [int_ty]; [int_ty]; [int_ty]],varaTy)) let seq_collect_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "collect" ,None ,Some "Collect",[vara;varb;varc],([[varaTy --> varbTy]; [mkSeqTy varaTy]], mkSeqTy varcTy)) let seq_delay_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "delay" ,None ,Some "Delay" ,[varb], ([[unit_ty --> mkSeqTy varbTy]], mkSeqTy varbTy)) let seq_append_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "append" ,None ,Some "Append" ,[varb], ([[mkSeqTy varbTy]; [mkSeqTy varbTy]], mkSeqTy varbTy)) let seq_using_info = makeIntrinsicValRef(fslib_MFRuntimeHelpers_nleref, "EnumerateUsing" ,None ,None ,[vara;varb;varc], ([[varaTy];[(varaTy --> varbTy)]],mkSeqTy varcTy)) let seq_generated_info = makeIntrinsicValRef(fslib_MFRuntimeHelpers_nleref, "EnumerateWhile" ,None ,None ,[varb], ([[unit_ty --> bool_ty]; [mkSeqTy varbTy]], mkSeqTy varbTy)) let seq_finally_info = makeIntrinsicValRef(fslib_MFRuntimeHelpers_nleref, "EnumerateThenFinally" ,None ,None ,[varb], ([[mkSeqTy varbTy]; [unit_ty --> unit_ty]], mkSeqTy varbTy)) let seq_of_functions_info = makeIntrinsicValRef(fslib_MFRuntimeHelpers_nleref, "EnumerateFromFunctions" ,None ,None ,[vara;varb],([[unit_ty --> varaTy]; [varaTy --> bool_ty]; [varaTy --> varbTy]], mkSeqTy varbTy)) let create_event_info = makeIntrinsicValRef(fslib_MFRuntimeHelpers_nleref, "CreateEvent" ,None ,None ,[vara;varb],([[varaTy --> unit_ty]; [varaTy --> unit_ty]; [(obj_ty --> (varbTy --> unit_ty)) --> varaTy]], TType_app (fslib_IEvent2_tcr, [varaTy;varbTy]))) let seq_to_array_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "toArray" ,None ,Some "ToArray",[varb], ([[mkSeqTy varbTy]], mkArrayType varbTy)) let seq_to_list_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "toList" ,None ,Some "ToList" ,[varb], ([[mkSeqTy varbTy]], mkListTy varbTy)) let seq_map_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "map" ,None ,Some "Map" ,[vara;varb],([[varaTy --> varbTy]; [mkSeqTy varaTy]], mkSeqTy varbTy)) let seq_singleton_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "singleton" ,None ,Some "Singleton" ,[vara], ([[varaTy]], mkSeqTy varaTy)) let seq_empty_info = makeIntrinsicValRef(fslib_MFSeqModule_nleref, "empty" ,None ,Some "Empty" ,[vara], ([], mkSeqTy varaTy)) let new_format_info = makeIntrinsicValRef(fslib_MFCore_nleref, ".ctor" ,Some "PrintfFormat`5",None ,[vara;varb;varc;vard;vare], ([[string_ty]], mkPrintfFormatTy varaTy varbTy varcTy vardTy vareTy)) let sprintf_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "sprintf" ,None ,Some "PrintFormatToStringThen",[vara], ([[mk_format4_ty varaTy unit_ty string_ty string_ty]], varaTy)) let lazy_force_info = // Lazy\Value for > 4.0 makeIntrinsicValRef(fslib_MFLazyExtensions_nleref, "Force" ,Some "Lazy`1" ,None ,[vara], ([[mkLazyTy varaTy]; []], varaTy)) let lazy_create_info = makeIntrinsicValRef(fslib_MFLazyExtensions_nleref, "Create" ,Some "Lazy`1" ,None ,[vara], ([[unit_ty --> varaTy]], mkLazyTy varaTy)) let seq_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "seq" ,None ,Some "CreateSequence" ,[vara], ([[mkSeqTy varaTy]], mkSeqTy varaTy)) let splice_expr_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "op_Splice" ,None ,None ,[vara], ([[mkQuotedExprTy varaTy]], varaTy)) let splice_raw_expr_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "op_SpliceUntyped" ,None ,None ,[vara], ([[mkRawQuotedExprTy]], varaTy)) let new_decimal_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "MakeDecimal" ,None ,None ,[], ([[int_ty]; [int_ty]; [int_ty]; [bool_ty]; [byte_ty]], decimal_ty)) let array_get_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "GetArray" ,None ,None ,[vara], ([[mkArrayType varaTy]; [int_ty]], varaTy)) let unpickle_quoted_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Deserialize" ,Some "Expr" ,None ,[], ([[system_Type_typ ;mkListTy system_Type_typ ;mkListTy mkRawQuotedExprTy ; mkArrayType byte_ty]], mkRawQuotedExprTy )) let cast_quotation_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Cast" ,Some "Expr" ,None ,[vara], ([[mkRawQuotedExprTy]], mkQuotedExprTy varaTy)) let lift_value_info = makeIntrinsicValRef(fslib_MFQuotations_nleref, "Value" ,Some "Expr" ,None ,[vara], ([[varaTy]], mkRawQuotedExprTy)) let query_value_info = makeIntrinsicValRef(fslib_MFExtraTopLevelOperators_nleref, "query" ,None ,None ,[], ([], mkQueryBuilderTy) ) let query_run_value_info = makeIntrinsicValRef(fslib_MFQueryRunExtensionsLowPriority_nleref, "Run" ,Some "QueryBuilder" ,None ,[vara], ([[mkQueryBuilderTy];[mkQuotedExprTy varaTy]], varaTy) ) let query_run_enumerable_info = makeIntrinsicValRef(fslib_MFQueryRunExtensionsHighPriority_nleref, "Run" ,Some "QueryBuilder" ,None ,[vara], ([[mkQueryBuilderTy];[mkQuotedExprTy (mkQuerySourceTy varaTy (mkNonGenericTy tcref_System_Collections_IEnumerable)) ]], mkSeqTy varaTy) ) let query_for_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "For" ,Some "QueryBuilder" ,None ,[vara; vard; varb; vare], ([[mkQueryBuilderTy];[mkQuerySourceTy varaTy vardTy;varaTy --> mkQuerySourceTy varbTy vareTy]], mkQuerySourceTy varbTy vardTy) ) let query_select_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "Select" ,Some "QueryBuilder" ,None ,[vara; vare; varb], ([[mkQueryBuilderTy];[mkQuerySourceTy varaTy vareTy;varaTy --> varbTy]], mkQuerySourceTy varbTy vareTy) ) let query_yield_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "Yield" ,Some "QueryBuilder" ,None ,[vara; vare], ([[mkQueryBuilderTy];[varaTy]], mkQuerySourceTy varaTy vareTy) ) let query_yield_from_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "YieldFrom" ,Some "QueryBuilder" ,None ,[vara; vare], ([[mkQueryBuilderTy];[mkQuerySourceTy varaTy vareTy]], mkQuerySourceTy varaTy vareTy) ) let query_source_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "Source" ,Some "QueryBuilder" ,None ,[vara], ([[mkQueryBuilderTy];[mkSeqTy varaTy ]], mkQuerySourceTy varaTy (mkNonGenericTy tcref_System_Collections_IEnumerable)) ) let query_source_as_enum_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "get_Source" ,Some "QuerySource`2" ,None ,[vara; vare], ([[mkQuerySourceTy varaTy vareTy];[]], mkSeqTy varaTy) ) let new_query_source_info = makeIntrinsicValRef(fslib_MFLinq_nleref, ".ctor" ,Some "QuerySource`2" ,None ,[vara; vare], ([[mkSeqTy varaTy]], mkQuerySourceTy varaTy vareTy) ) let query_where_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "Where" ,Some "QueryBuilder" ,None ,[vara; vare], ([[mkQueryBuilderTy];[mkQuerySourceTy varaTy vareTy;varaTy --> bool_ty]], mkQuerySourceTy varaTy vareTy) ) let query_zero_value_info = makeIntrinsicValRef(fslib_MFLinq_nleref, "Zero" ,Some "QueryBuilder" ,None ,[vara; vare], ([[mkQueryBuilderTy];[]], mkQuerySourceTy varaTy vareTy) ) let fail_init_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "FailInit" ,None ,None ,[], ([[unit_ty]], unit_ty)) let fail_static_init_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "FailStaticInit" ,None ,None ,[], ([[unit_ty]], unit_ty)) let check_this_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "CheckThis" ,None ,None ,[vara], ([[varaTy]], varaTy)) let quote_to_linq_lambda_info = makeIntrinsicValRef(fslib_MFLinqRuntimeHelpersQuotationConverter_nleref, "QuotationToLambdaExpression" ,None ,None ,[vara], ([[mkQuotedExprTy varaTy]], mkLinqExpressionTy varaTy)) { ilg=ilg; #if NO_COMPILER_BACKEND #else ilxPubCloEnv=EraseIlxFuncs.new_cenv(ilg) #endif knownIntrinsics = knownIntrinsics knownFSharpCoreModules = knownFSharpCoreModules compilingFslib = compilingFslib; mlCompatibility = mlCompatibility; directoryToResolveRelativePaths= directoryToResolveRelativePaths; unionCaseRefEq = unionCaseRefEq; valRefEq = valRefEq; fslibCcu = fslibCcu; using40environment = using40environment; indirectCallArrayMethods = indirectCallArrayMethods; sysCcu = sysCcu; refcell_tcr_canon = mk_MFCore_tcref fslibCcu "Ref`1"; option_tcr_canon = mk_MFCore_tcref fslibCcu "Option`1"; list_tcr_canon = mk_MFCollections_tcref fslibCcu "List`1"; set_tcr_canon = mk_MFCollections_tcref fslibCcu "Set`1"; map_tcr_canon = mk_MFCollections_tcref fslibCcu "Map`2"; lazy_tcr_canon = lazy_tcr; refcell_tcr_nice = mk_MFCore_tcref fslibCcu "ref`1"; array_tcr_nice = il_arr1_tcr; option_tcr_nice = option_tcr_nice; list_tcr_nice = list_tcr_nice; lazy_tcr_nice = lazy_tcr_nice; format_tcr = format_tcr; expr_tcr = expr_tcr; raw_expr_tcr = raw_expr_tcr; nativeint_tcr = nativeint_tcr; int32_tcr = int32_tcr; int16_tcr = int16_tcr; int64_tcr = int64_tcr; uint16_tcr = uint16_tcr; uint32_tcr = uint32_tcr; uint64_tcr = uint64_tcr; sbyte_tcr = sbyte_tcr; decimal_tcr = decimal_tcr; date_tcr = date_tcr; pdecimal_tcr = pdecimal_tcr; byte_tcr = byte_tcr; bool_tcr = bool_tcr; unit_tcr_canon = unit_tcr_canon; unit_tcr_nice = unit_tcr_nice; exn_tcr = exn_tcr; char_tcr = char_tcr; float_tcr = float_tcr; float32_tcr = float32_tcr; pfloat_tcr = pfloat_tcr; pfloat32_tcr = pfloat32_tcr; pint_tcr = pint_tcr; pint8_tcr = pint8_tcr; pint16_tcr = pint16_tcr; pint64_tcr = pint64_tcr; byref_tcr = byref_tcr; nativeptr_tcr = nativeptr_tcr; ilsigptr_tcr = ilsigptr_tcr; fastFunc_tcr = fastFunc_tcr; tcref_IQueryable = tcref_IQueryable tcref_IObservable = tcref_IObservable; tcref_IObserver = tcref_IObserver; fslib_IEvent2_tcr = fslib_IEvent2_tcr; fslib_IDelegateEvent_tcr = fslib_IDelegateEvent_tcr; seq_tcr = seq_tcr; seq_base_tcr = mk_MFCompilerServices_tcref fslibCcu "GeneratedSequenceBase`1"; measureproduct_tcr = mk_MFCompilerServices_tcref fslibCcu "MeasureProduct`2"; measureinverse_tcr = mk_MFCompilerServices_tcref fslibCcu "MeasureInverse`1"; measureone_tcr = mk_MFCompilerServices_tcref fslibCcu "MeasureOne"; il_arr1_tcr = il_arr1_tcr; il_arr2_tcr = il_arr2_tcr; il_arr3_tcr = il_arr3_tcr; il_arr4_tcr = il_arr4_tcr; tuple1_tcr = tuple1_tcr; tuple2_tcr = tuple2_tcr; tuple3_tcr = tuple3_tcr; tuple4_tcr = tuple4_tcr; tuple5_tcr = tuple5_tcr; tuple6_tcr = tuple6_tcr; tuple7_tcr = tuple7_tcr; tuple8_tcr = tuple8_tcr; choice2_tcr = choice2_tcr; choice3_tcr = choice3_tcr; choice4_tcr = choice4_tcr; choice5_tcr = choice5_tcr; choice6_tcr = choice6_tcr; choice7_tcr = choice7_tcr; nativeint_ty = mkNonGenericTy nativeint_tcr; unativeint_ty = mkNonGenericTy unativeint_tcr; int32_ty = mkNonGenericTy int32_tcr; int16_ty = mkNonGenericTy int16_tcr; int64_ty = mkNonGenericTy int64_tcr; uint16_ty = mkNonGenericTy uint16_tcr; uint32_ty = mkNonGenericTy uint32_tcr; uint64_ty = mkNonGenericTy uint64_tcr; sbyte_ty = mkNonGenericTy sbyte_tcr; byte_ty = byte_ty; bool_ty = bool_ty; int_ty = int_ty; string_ty = string_ty; obj_ty = mkNonGenericTy obj_tcr; unit_ty = unit_ty; exn_ty = mkNonGenericTy exn_tcr; char_ty = mkNonGenericTy char_tcr; decimal_ty = mkNonGenericTy decimal_tcr; float_ty = mkNonGenericTy float_tcr; float32_ty = mkNonGenericTy float32_tcr; memoize_file = memoize_file.Apply; system_Array_typ = mkSysNonGenericTy sys "Array"; system_Object_typ = mkSysNonGenericTy sys "Object"; system_IDisposable_typ = mkSysNonGenericTy sys "IDisposable"; system_Value_typ = mkSysNonGenericTy sys "ValueType"; system_Delegate_typ = mkSysNonGenericTy sys "Delegate"; system_MulticastDelegate_typ = mkSysNonGenericTy sys "MulticastDelegate"; system_Enum_typ = mkSysNonGenericTy sys "Enum"; system_Exception_typ = mkSysNonGenericTy sys "Exception"; system_String_typ = mkSysNonGenericTy sys "String"; system_Int32_typ = mkSysNonGenericTy sys "Int32"; system_Type_typ = system_Type_typ; system_TypedReference_tcref = mkSysTyconRef sys "TypedReference" ; system_ArgIterator_tcref = mkSysTyconRef sys "ArgIterator" ; system_RuntimeArgumentHandle_tcref = mkSysTyconRef sys "RuntimeArgumentHandle"; system_SByte_tcref = mkSysTyconRef sys "SByte"; system_Decimal_tcref = mkSysTyconRef sys "Decimal"; system_Int16_tcref = mkSysTyconRef sys "Int16"; system_Int32_tcref = mkSysTyconRef sys "Int32"; system_Int64_tcref = mkSysTyconRef sys "Int64"; system_IntPtr_tcref = mkSysTyconRef sys "IntPtr"; system_Bool_tcref = mkSysTyconRef sys "Boolean"; system_Byte_tcref = mkSysTyconRef sys "Byte"; system_UInt16_tcref = mkSysTyconRef sys "UInt16"; system_Char_tcref = mkSysTyconRef sys "Char"; system_UInt32_tcref = mkSysTyconRef sys "UInt32"; system_UInt64_tcref = mkSysTyconRef sys "UInt64"; system_UIntPtr_tcref = mkSysTyconRef sys "UIntPtr"; system_Single_tcref = mkSysTyconRef sys "Single"; system_Double_tcref = mkSysTyconRef sys "Double"; system_RuntimeTypeHandle_typ = mkSysNonGenericTy sys "RuntimeTypeHandle"; system_RuntimeMethodHandle_typ = system_RuntimeMethodHandle_typ; system_MarshalByRefObject_tcref = mkSysTyconRef sys "MarshalByRefObject"; system_MarshalByRefObject_typ = mkSysNonGenericTy sys "MarshalByRefObject"; system_Reflection_MethodInfo_typ = system_Reflection_MethodInfo_typ; system_Array_tcref = mkSysTyconRef sys "Array"; system_Object_tcref = mkSysTyconRef sys "Object"; system_Void_tcref = mkSysTyconRef sys "Void"; system_IndexOutOfRangeException_tcref = mkSysTyconRef sys "IndexOutOfRangeException"; system_Nullable_tcref = nullable_tcr; system_GenericIComparable_tcref = mkSysTyconRef sys "IComparable`1"; system_GenericIEquatable_tcref = mkSysTyconRef sys "IEquatable`1"; mk_IComparable_ty = mkSysNonGenericTy sys "IComparable"; system_LinqExpression_tcref = linqExpression_tcr; mk_IStructuralComparable_ty = mkSysNonGenericTy sysCollections "IStructuralComparable"; mk_IStructuralEquatable_ty = mkSysNonGenericTy sysCollections "IStructuralEquatable"; mk_IComparer_ty = mk_IComparer_ty; mk_IEqualityComparer_ty = mk_IEqualityComparer_ty; tcref_System_Collections_IComparer = mkSysTyconRef sysCollections "IComparer"; tcref_System_Collections_IEqualityComparer = mkSysTyconRef sysCollections "IEqualityComparer"; tcref_System_Collections_Generic_IEqualityComparer = mkSysTyconRef sysGenerics "IEqualityComparer`1"; tcref_System_Collections_Generic_Dictionary = mkSysTyconRef sysGenerics "Dictionary`2"; tcref_System_IComparable = mkSysTyconRef sys "IComparable" tcref_System_IStructuralComparable = mkSysTyconRef sysCollections "IStructuralComparable" tcref_System_IStructuralEquatable = mkSysTyconRef sysCollections "IStructuralEquatable"; tcref_LanguagePrimitives = mk_MFCore_tcref fslibCcu "LanguagePrimitives"; tcref_System_Collections_Generic_IList = mkSysTyconRef sysGenerics "IList`1"; tcref_System_Collections_Generic_ICollection = mkSysTyconRef sysGenerics "ICollection`1"; tcref_System_Collections_IEnumerable = tcref_System_Collections_IEnumerable tcref_System_Collections_Generic_IEnumerable = IEnumerable_tcr; tcref_System_Collections_Generic_IEnumerator = IEnumerator_tcr; tcref_System_Attribute = System_Attribute_tcr; attrib_AttributeUsageAttribute = mkMscorlibAttrib "System.AttributeUsageAttribute"; attrib_ParamArrayAttribute = mkMscorlibAttrib "System.ParamArrayAttribute"; attrib_IDispatchConstantAttribute = mkMscorlibAttrib "System.Runtime.CompilerServices.IDispatchConstantAttribute"; attrib_IUnknownConstantAttribute = mkMscorlibAttrib "System.Runtime.CompilerServices.IUnknownConstantAttribute"; attrib_SystemObsolete = mkMscorlibAttrib "System.ObsoleteAttribute"; attrib_DllImportAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.DllImportAttribute"; attrib_StructLayoutAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.StructLayoutAttribute"; attrib_TypeForwardedToAttribute = mkMscorlibAttrib "System.Runtime.CompilerServices.TypeForwardedToAttribute"; attrib_ComVisibleAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.ComVisibleAttribute"; attrib_ComImportAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.ComImportAttribute"; attrib_FieldOffsetAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.FieldOffsetAttribute" ; attrib_MarshalAsAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.MarshalAsAttribute"; attrib_InAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.InAttribute" ; attrib_OutAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.OutAttribute" ; attrib_OptionalAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.OptionalAttribute" ; attrib_ThreadStaticAttribute = mkMscorlibAttrib "System.ThreadStaticAttribute"; attrib_SpecialNameAttribute = mkMscorlibAttrib "System.Runtime.CompilerServices.SpecialNameAttribute"; attrib_VolatileFieldAttribute = mk_MFCore_attrib "VolatileFieldAttribute"; attrib_ContextStaticAttribute = mkMscorlibAttrib "System.ContextStaticAttribute"; attrib_FlagsAttribute = mkMscorlibAttrib "System.FlagsAttribute"; attrib_DefaultMemberAttribute = mkMscorlibAttrib "System.Reflection.DefaultMemberAttribute"; attrib_DebuggerDisplayAttribute = mkMscorlibAttrib "System.Diagnostics.DebuggerDisplayAttribute"; attrib_DebuggerTypeProxyAttribute = mkMscorlibAttrib "System.Diagnostics.DebuggerTypeProxyAttribute"; attrib_PreserveSigAttribute = mkMscorlibAttrib "System.Runtime.InteropServices.PreserveSigAttribute"; attrib_MethodImplAttribute = mkMscorlibAttrib "System.Runtime.CompilerServices.MethodImplAttribute"; attrib_ProjectionParameterAttribute = mk_MFCore_attrib "ProjectionParameterAttribute"; attrib_CustomOperationAttribute = mk_MFCore_attrib "CustomOperationAttribute"; attrib_NonSerializedAttribute = mkMscorlibAttrib "System.NonSerializedAttribute"; attrib_AutoSerializableAttribute = mk_MFCore_attrib "AutoSerializableAttribute"; attrib_RequireQualifiedAccessAttribute = mk_MFCore_attrib "RequireQualifiedAccessAttribute"; attrib_EntryPointAttribute = mk_MFCore_attrib "EntryPointAttribute"; attrib_DefaultAugmentationAttribute = mk_MFCore_attrib "DefaultAugmentationAttribute"; attrib_CompilerMessageAttribute = mk_MFCore_attrib "CompilerMessageAttribute"; attrib_ExperimentalAttribute = mk_MFCore_attrib "ExperimentalAttribute"; attrib_UnverifiableAttribute = mk_MFCore_attrib "UnverifiableAttribute"; attrib_LiteralAttribute = mk_MFCore_attrib "LiteralAttribute"; attrib_ConditionalAttribute = mkMscorlibAttrib "System.Diagnostics.ConditionalAttribute"; attrib_OptionalArgumentAttribute = mk_MFCore_attrib "OptionalArgumentAttribute"; attrib_RequiresExplicitTypeArgumentsAttribute = mk_MFCore_attrib "RequiresExplicitTypeArgumentsAttribute"; attrib_DefaultValueAttribute = mk_MFCore_attrib "DefaultValueAttribute"; attrib_ClassAttribute = mk_MFCore_attrib "ClassAttribute"; attrib_InterfaceAttribute = mk_MFCore_attrib "InterfaceAttribute"; attrib_StructAttribute = mk_MFCore_attrib "StructAttribute"; attrib_ReflectedDefinitionAttribute = mk_MFCore_attrib "ReflectedDefinitionAttribute"; attrib_CompiledNameAttribute = mk_MFCore_attrib "CompiledNameAttribute"; attrib_AutoOpenAttribute = mk_MFCore_attrib "AutoOpenAttribute"; attrib_CompilationRepresentationAttribute = mk_MFCore_attrib "CompilationRepresentationAttribute"; attrib_CompilationArgumentCountsAttribute = mk_MFCore_attrib "CompilationArgumentCountsAttribute"; attrib_CompilationMappingAttribute = mk_MFCore_attrib "CompilationMappingAttribute"; attrib_CLIEventAttribute = mk_MFCore_attrib "CLIEventAttribute"; attrib_CLIMutableAttribute = mk_MFCore_attrib "CLIMutableAttribute"; attrib_AllowNullLiteralAttribute = mk_MFCore_attrib "AllowNullLiteralAttribute"; attrib_NoEqualityAttribute = mk_MFCore_attrib "NoEqualityAttribute"; attrib_NoComparisonAttribute = mk_MFCore_attrib "NoComparisonAttribute"; attrib_CustomEqualityAttribute = mk_MFCore_attrib "CustomEqualityAttribute"; attrib_CustomComparisonAttribute = mk_MFCore_attrib "CustomComparisonAttribute"; attrib_EqualityConditionalOnAttribute = mk_MFCore_attrib "EqualityConditionalOnAttribute"; attrib_ComparisonConditionalOnAttribute = mk_MFCore_attrib "ComparisonConditionalOnAttribute"; attrib_ReferenceEqualityAttribute = mk_MFCore_attrib "ReferenceEqualityAttribute"; attrib_StructuralEqualityAttribute = mk_MFCore_attrib "StructuralEqualityAttribute"; attrib_StructuralComparisonAttribute = mk_MFCore_attrib "StructuralComparisonAttribute"; attrib_SealedAttribute = mk_MFCore_attrib "SealedAttribute"; attrib_AbstractClassAttribute = mk_MFCore_attrib "AbstractClassAttribute"; attrib_GeneralizableValueAttribute = mk_MFCore_attrib "GeneralizableValueAttribute"; attrib_MeasureAttribute = mk_MFCore_attrib "MeasureAttribute"; attrib_MeasureableAttribute = mk_MFCore_attrib "MeasureAnnotatedAbbreviationAttribute"; attrib_NoDynamicInvocationAttribute = mk_MFCore_attrib "NoDynamicInvocationAttribute"; attrib_SecurityAttribute = mkMscorlibAttrib "System.Security.Permissions.SecurityAttribute" attrib_SecurityCriticalAttribute = mkMscorlibAttrib "System.Security.SecurityCriticalAttribute" attrib_SecuritySafeCriticalAttribute = mkMscorlibAttrib "System.Security.SecuritySafeCriticalAttribute" // Build a map that uses the "canonical" F# type names and TyconRef's for these // in preference to the .NET type names. Doing this normalization is a fairly performance critical // piece of code as it is frequently invoked in the process of converting .NET metadata to F# internal // compiler data structures (see import.fs). better_tcref_map = begin let entries1 = [ "Int32", int_tcr; "IntPtr", nativeint_tcr; "UIntPtr", unativeint_tcr; "Int16",int16_tcr; "Int64",int64_tcr; "UInt16",uint16_tcr; "UInt32",uint32_tcr; "UInt64",uint64_tcr; "SByte",sbyte_tcr; "Decimal",decimal_tcr; "Byte",byte_tcr; "Boolean",bool_tcr; "String",string_tcr; "Object",obj_tcr; "Exception",exn_tcr; "Char",char_tcr; "Double",float_tcr; "Single",float32_tcr;] |> List.map (fun (nm,tcr) -> let ty = mkNonGenericTy tcr nm, mkSysTyconRef sys nm, (fun _ -> ty)) let entries2 = [ "FSharpFunc`2", fastFunc_tcr, (fun tinst -> mkFunTy (List.nth tinst 0) (List.nth tinst 1)); "Tuple`2", tuple2_tcr, decodeTupleTy; "Tuple`3", tuple3_tcr, decodeTupleTy; "Tuple`4", tuple4_tcr, decodeTupleTy; "Tuple`5", tuple5_tcr, decodeTupleTy; "Tuple`6", tuple6_tcr, decodeTupleTy; "Tuple`7", tuple7_tcr, decodeTupleTy; "Tuple`8", tuple8_tcr, decodeTupleTy;] let entries = (entries1 @ entries2) if compilingFslib then // This map is for use when building FSharp.Core.dll. The backing Tycon's may not yet exist for // the TyconRef's we have inour hands, hence we can't dereference them to find their stamps. // So this dictionary is indexed by names. let dict = entries |> List.map (fun (nm,tcref,builder) -> nm, (fun tcref2 tinst -> if tyconRefEq tcref tcref2 then Some(builder tinst) else None)) |> Dictionary.ofList (fun tcref tinst -> if dict.ContainsKey tcref.LogicalName then dict.[tcref.LogicalName] tcref tinst else None ) else // This map is for use in normal times (not building FSharp.Core.dll). It is indexed by tcref stamp which is // faster than the indexing technique used in the case above. // // So this dictionary is indexed by integers. let dict = entries |> List.map (fun (_,tcref,builder) -> tcref.Stamp, builder) |> Dictionary.ofList (fun tcref2 tinst -> if dict.ContainsKey tcref2.Stamp then Some(dict.[tcref2.Stamp] tinst) else None) end; new_decimal_info = new_decimal_info; seq_info = seq_info; seq_vref = (ValRefForIntrinsic seq_info) ; and_vref = (ValRefForIntrinsic and_info) ; and2_vref = (ValRefForIntrinsic and2_info); addrof_vref = (ValRefForIntrinsic addrof_info); addrof2_vref = (ValRefForIntrinsic addrof2_info); or_vref = (ValRefForIntrinsic or_info); //splice_vref = (ValRefForIntrinsic splice_info); splice_expr_vref = (ValRefForIntrinsic splice_expr_info); splice_raw_expr_vref = (ValRefForIntrinsic splice_raw_expr_info); or2_vref = (ValRefForIntrinsic or2_info); generic_equality_er_inner_vref = ValRefForIntrinsic generic_equality_er_inner_info; generic_equality_per_inner_vref = ValRefForIntrinsic generic_equality_per_inner_info; generic_equality_withc_inner_vref = ValRefForIntrinsic generic_equality_withc_inner_info; generic_comparison_inner_vref = ValRefForIntrinsic generic_comparison_inner_info; generic_comparison_withc_inner_vref = ValRefForIntrinsic generic_comparison_withc_inner_info; generic_comparison_withc_outer_info = generic_comparison_withc_outer_info; generic_equality_er_outer_info = generic_equality_er_outer_info; generic_equality_withc_outer_info = generic_equality_withc_outer_info; generic_hash_withc_outer_info = generic_hash_withc_outer_info; generic_hash_inner_vref = ValRefForIntrinsic generic_hash_inner_info; generic_hash_withc_inner_vref = ValRefForIntrinsic generic_hash_withc_inner_info; reference_equality_inner_vref = ValRefForIntrinsic reference_equality_inner_info; bitwise_or_vref = ValRefForIntrinsic bitwise_or_info; bitwise_and_vref = ValRefForIntrinsic bitwise_and_info; bitwise_xor_vref = ValRefForIntrinsic bitwise_xor_info; bitwise_unary_not_vref = ValRefForIntrinsic bitwise_unary_not_info; bitwise_shift_left_vref = ValRefForIntrinsic bitwise_shift_left_info; bitwise_shift_right_vref = ValRefForIntrinsic bitwise_shift_right_info; unchecked_addition_vref = ValRefForIntrinsic unchecked_addition_info; unchecked_unary_plus_vref = ValRefForIntrinsic unchecked_unary_plus_info; unchecked_unary_minus_vref = ValRefForIntrinsic unchecked_unary_minus_info; unchecked_unary_not_vref = ValRefForIntrinsic unchecked_unary_not_info; unchecked_subtraction_vref = ValRefForIntrinsic unchecked_subtraction_info; unchecked_multiply_vref = ValRefForIntrinsic unchecked_multiply_info; unchecked_defaultof_vref = ValRefForIntrinsic unchecked_defaultof_info; compare_operator_vref = ValRefForIntrinsic compare_operator_info; equals_operator_vref = ValRefForIntrinsic equals_operator_info; equals_nullable_operator_vref = ValRefForIntrinsic equals_nullable_operator_info; nullable_equals_nullable_operator_vref = ValRefForIntrinsic nullable_equals_nullable_operator_info; nullable_equals_operator_vref = ValRefForIntrinsic nullable_equals_operator_info; not_equals_operator_vref = ValRefForIntrinsic not_equals_operator_info; less_than_operator_vref = ValRefForIntrinsic less_than_operator_info; less_than_or_equals_operator_vref = ValRefForIntrinsic less_than_or_equals_operator_info; greater_than_operator_vref = ValRefForIntrinsic greater_than_operator_info; greater_than_or_equals_operator_vref = ValRefForIntrinsic greater_than_or_equals_operator_info; equals_operator_info = equals_operator_info; raise_info = raise_info; reraise_info = reraise_info; reraise_vref = ValRefForIntrinsic reraise_info; methodhandleof_info = methodhandleof_info; methodhandleof_vref = ValRefForIntrinsic methodhandleof_info; typeof_info = typeof_info; typeof_vref = ValRefForIntrinsic typeof_info; sizeof_vref = ValRefForIntrinsic sizeof_info; typedefof_info = typedefof_info; typedefof_vref = ValRefForIntrinsic typedefof_info; enum_vref = ValRefForIntrinsic enum_info; range_op_vref = ValRefForIntrinsic range_op_info; range_int32_op_vref = ValRefForIntrinsic range_int32_op_info; //range_step_op_vref = ValRefForIntrinsic range_step_op_info; array_get_vref = ValRefForIntrinsic array_get_info; array2D_get_vref = ValRefForIntrinsic array2D_get_info; array3D_get_vref = ValRefForIntrinsic array3D_get_info; array4D_get_vref = ValRefForIntrinsic array4D_get_info; seq_singleton_vref = ValRefForIntrinsic seq_singleton_info; seq_collect_vref = ValRefForIntrinsic seq_collect_info; seq_collect_info = seq_collect_info; seq_using_info = seq_using_info; seq_using_vref = ValRefForIntrinsic seq_using_info; seq_delay_info = seq_delay_info; seq_delay_vref = ValRefForIntrinsic seq_delay_info; seq_append_info = seq_append_info; seq_append_vref = ValRefForIntrinsic seq_append_info; seq_generated_info = seq_generated_info; seq_generated_vref = ValRefForIntrinsic seq_generated_info; seq_finally_info = seq_finally_info; seq_finally_vref = ValRefForIntrinsic seq_finally_info; seq_of_functions_info = seq_of_functions_info; seq_of_functions_vref = ValRefForIntrinsic seq_of_functions_info; seq_map_info = seq_map_info; seq_map_vref = ValRefForIntrinsic seq_map_info; seq_singleton_info = seq_singleton_info; seq_empty_info = seq_empty_info; seq_empty_vref = ValRefForIntrinsic seq_empty_info; new_format_info = new_format_info; new_format_vref = ValRefForIntrinsic new_format_info; sprintf_vref = ValRefForIntrinsic sprintf_info; unbox_vref = ValRefForIntrinsic unbox_info; unbox_fast_vref = ValRefForIntrinsic unbox_fast_info; istype_vref = ValRefForIntrinsic istype_info; istype_fast_vref = ValRefForIntrinsic istype_fast_info; unbox_info = unbox_info; get_generic_comparer_info = get_generic_comparer_info; get_generic_er_equality_comparer_info = get_generic_er_equality_comparer_info; get_generic_per_equality_comparer_info = get_generic_per_equality_comparer_info; dispose_info = dispose_info; unbox_fast_info = unbox_fast_info; istype_info = istype_info; istype_fast_info = istype_fast_info; lazy_force_info = lazy_force_info; lazy_create_info = lazy_create_info; create_instance_info = create_instance_info; create_event_info = create_event_info; seq_to_list_info = seq_to_list_info; seq_to_array_info = seq_to_array_info; array_get_info = array_get_info; array2D_get_info = array2D_get_info; array3D_get_info = array3D_get_info; array4D_get_info = array4D_get_info; unpickle_quoted_info = unpickle_quoted_info; cast_quotation_info = cast_quotation_info; lift_value_info = lift_value_info; query_source_as_enum_info = query_source_as_enum_info; new_query_source_info = new_query_source_info; query_source_vref = ValRefForIntrinsic query_source_info; query_value_vref = ValRefForIntrinsic query_value_info; query_run_value_vref = ValRefForIntrinsic query_run_value_info; query_run_enumerable_vref = ValRefForIntrinsic query_run_enumerable_info; query_for_vref = ValRefForIntrinsic query_for_value_info; query_yield_vref = ValRefForIntrinsic query_yield_value_info; query_yield_from_vref = ValRefForIntrinsic query_yield_from_value_info; query_select_vref = ValRefForIntrinsic query_select_value_info; query_where_vref = ValRefForIntrinsic query_where_value_info; query_zero_vref = ValRefForIntrinsic query_zero_value_info; query_builder_tcref = query_builder_tcref; fail_init_info = fail_init_info; fail_static_init_info = fail_static_init_info; check_this_info = check_this_info; quote_to_linq_lambda_info = quote_to_linq_lambda_info; generic_hash_withc_tuple2_vref = ValRefForIntrinsic generic_hash_withc_tuple2_info; generic_hash_withc_tuple3_vref = ValRefForIntrinsic generic_hash_withc_tuple3_info; generic_hash_withc_tuple4_vref = ValRefForIntrinsic generic_hash_withc_tuple4_info; generic_hash_withc_tuple5_vref = ValRefForIntrinsic generic_hash_withc_tuple5_info; generic_equals_withc_tuple2_vref = ValRefForIntrinsic generic_equals_withc_tuple2_info; generic_equals_withc_tuple3_vref = ValRefForIntrinsic generic_equals_withc_tuple3_info; generic_equals_withc_tuple4_vref = ValRefForIntrinsic generic_equals_withc_tuple4_info; generic_equals_withc_tuple5_vref = ValRefForIntrinsic generic_equals_withc_tuple5_info; generic_compare_withc_tuple2_vref = ValRefForIntrinsic generic_compare_withc_tuple2_info; generic_compare_withc_tuple3_vref = ValRefForIntrinsic generic_compare_withc_tuple3_info; generic_compare_withc_tuple4_vref = ValRefForIntrinsic generic_compare_withc_tuple4_info; generic_compare_withc_tuple5_vref = ValRefForIntrinsic generic_compare_withc_tuple5_info; generic_equality_withc_outer_vref = ValRefForIntrinsic generic_equality_withc_outer_info; cons_ucref = cons_ucref; nil_ucref = nil_ucref; suppressed_types = suppressed_types; isInteractive=isInteractive mkSysTyconRef=mkSysTyconRef } let public mkMscorlibAttrib g nm : BuiltinAttribInfo = let path, typeName = splitILTypeName nm AttribInfo(mkILTyRef (g.ilg.mscorlibScopeRef,nm), g.mkSysTyconRef path typeName) fsharp-3.0.34/src/fsharp/fsi/0000775000175000017500000000000012260314606014723 5ustar chrischrisfsharp-3.0.34/src/fsharp/fsi/FSIstrings.txt0000775000175000017500000000571412260314606017531 0ustar chrischris# fsi.exe resource strings stoppedDueToError,"Stopped due to error\n" fsiUsage,"Usage: %s [script.fsx []]" fsiInputFiles,"- INPUT FILES -" fsiCodeGeneration,"- CODE GENERATION -" fsiErrorsAndWarnings,"- ERRORS AND WARNINGS -" fsiLanguage,"- LANGUAGE -" fsiMiscellaneous,"- MISCELLANEOUS -" fsiAdvanced,"- ADVANCED -" fsiExceptionRaisedStartingServer,"Exception raised when starting remoting server.\n%s" fsiUse,"Use the given file on startup as initial input" fsiLoad,"#load the given file on startup" fsiRemaining,"Treat remaining arguments as command line arguments, accessed using fsi.CommandLineArgs" fsiHelp,"Display this usage message (Short form: -?)" fsiExec,"Exit fsi after loading the files or running the .fsx script given on the command line" fsiGui,"Execute interactions on a Windows Forms event loop (on by default)" fsiQuiet,"Suppress fsi writing to stdout" fsiReadline,"Support TAB completion in console (on by default)" fsiBanner3,"For help type #help;;" fsiConsoleProblem,"A problem occurred starting the F# Interactive process. This may be due to a known problem with background process console support for Unicode-enabled applications on some Windows systems. Try selecting Tools->Options->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'." 2301,fsiInvalidAssembly,"'%s' is not a valid assembly name" 2302,fsiDirectoryDoesNotExist,"Directory '%s' doesn't exist" fsiInvalidDirective,"Invalid directive '#%s %s'" fsiLineTooLong,"Warning: line too long, ignoring some characters\n" fsiTimeInfoMainString,"Real: %s, CPU: %s, GC %s" fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGeneration,"gen" fsiExceptionDuringPrettyPrinting,"\n\nException raised during pretty printing.\nPlease report this so it can be fixed.\nTrace: %s\n" fsiIntroTextHeader1directives," F# Interactive directives:" fsiIntroTextHashrInfo,"Reference (dynamically load) the given DLL" fsiIntroTextHashIInfo,"Add the given search path for referenced DLLs" fsiIntroTextHashloadInfo,"Load the given file(s) as if compiled and referenced" fsiIntroTextHashtimeInfo,"Toggle timing on/off" fsiIntroTextHashhelpInfo,"Display help" fsiIntroTextHashquitInfo,"Exit" fsiIntroTextHeader2commandLine," F# Interactive command line options:" fsiIntroTextHeader3," See '%s' for options" fsiLoadingFilesPrefixText,"Loading" fsiInterrupt,"\n- Interrupt\n" fsiExit,"\n- Exit...\n" fsiAbortingMainThread,"- Aborting main thread..." fsiCouldNotInstallCtrlCHandler,"Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was:\n\t%s" fsiDidAHashr,"--> Referenced '%s'" fsiDidAHashI,"--> Added '%s' to library include path" fsiTurnedTimingOn,"--> Timing now on" fsiTurnedTimingOff,"--> Timing now off" fsiUnexpectedThreadAbortException,"- Unexpected ThreadAbortException (Ctrl-C) during event handling: Trying to restart..." fsiFailedToResolveAssembly,"Failed to resolve assembly '%s'" fsiBindingSessionTo,"Binding session to '%s'..." fsiProductName,"F# Interactive for F# 3.0 %s" fsharp-3.0.34/src/fsharp/fsi/fsi.exe.config0000775000175000017500000000140712260314606017460 0ustar chrischris fsharp-3.0.34/src/fsharp/fsi/Makefile.in0000664000175000017500000000200712260314606016767 0ustar chrischrisNAME=fsi ASSEMBLY = $(NAME).exe TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:exe REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:$(outdir)FSharp.Compiler.dll \ -r:$(outdir)FSharp.Compiler.Interactive.Settings.dll \ -r:$(outdir)FSharp.Compiler.Server.Shared.dll \ -r:$(monogacdirXX)/System.Windows.Forms.dll \ -r:$(monogacdirXX)/System.Drawing.dll sources = \ $(tmpdir)FSIstrings.fs \ ../../assemblyinfo/assemblyinfo.fsi.exe.fs \ ../InternalCollections.fsi \ ../InternalCollections.fs \ console.fs \ fsi.fs \ fsimain.fs RESOURCES = \ $(tmpdir)FSIstrings.resources $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resources: FSIstrings.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resx resgen $(tmpdir)FSIstrings.resx $(tmpdir)FSIstrings.resources include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-bin-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/fsi/console.fs0000775000175000017500000004260012260314606016724 0ustar chrischris// Copyright (c) Microsoft Corporation. Apache 2.0 License. namespace Microsoft.FSharp.Compiler.Interactive open System open System.Text open System.Collections.Generic open Internal.Utilities /// System.Console.ReadKey appears to return an ANSI character (not the expected the unicode character). /// When this fix flag is true, this byte is converted to a char using the System.Console.InputEncoding. /// This is a code-around for bug://1345. /// Fixes to System.Console.ReadKey may break this code around, hence the option here. module internal ConsoleOptions = // Bug 4254 was fixed in Dev11 (Net4.5), so this flag tracks making this fix up version specific. let fixupRequired = not FSharpEnvironment.IsRunningOnNetFx45OrAbove let fixNonUnicodeSystemConsoleReadKey = ref fixupRequired let readKeyFixup (c:char) = if !fixNonUnicodeSystemConsoleReadKey then // Assumes the c:char is actually a byte in the System.Console.InputEncoding. // Convert it to a Unicode char through the encoding. if 0 <= int c && int c <= 255 then let chars = System.Console.InputEncoding.GetChars [| byte c |] if chars.Length = 1 then chars.[0] // fixed up char else assert("readKeyFixHook: InputEncoding.GetChars(single-byte) returned multiple chars" = "") c // no fix up else assert("readKeyFixHook: given char is outside the 0..255 byte range" = "") c // no fix up else c type internal Style = Prompt | Out | Error /// Class managing the command History. type internal History() = let list = new List() let mutable current = 0 member x.Count = list.Count member x.Current = if current >= 0 && current < list.Count then list.[current] else String.Empty member x.Clear() = list.Clear(); current <- -1 member x.Add line = match line with | null | "" -> () | _ -> list.Add(line) member x.AddLast line = match line with | null | "" -> () | _ -> list.Add(line); current <- list.Count // Dead code // member x.First() = current <- 0; x.Current // member x.Last() = current <- list.Count - 1; x.Current; member x.Previous() = if (list.Count > 0) then current <- ((current - 1) + list.Count) % list.Count x.Current member x.Next() = if (list.Count > 0) then current <- (current + 1) % list.Count x.Current /// List of available optionsCache type internal Options() = inherit History() let mutable root = "" member x.Root with get() = root and set(v) = (root <- v) /// Cursor position management module internal Utils = open System open System.Reflection open Microsoft.FSharp.Core open Microsoft.FSharp.Collections let guard(f) = try f() with e -> Microsoft.FSharp.Compiler.ErrorLogger.warning(Failure(sprintf "Note: an unexpected exception in fsi.exe readline console support. Consider starting fsi.exe with the --no-readline option and report the stack trace below to the .NET or Mono implementors\n%s\n%s\n" e.Message e.StackTrace)); // Quick and dirty dirty method lookup for inlined IL // In some situations, we can't use ldtoken to obtain a RuntimeMethodHandle, since the method // in question's token may contain typars from an external type environment. Such a token would // cause the PE file to be flagged as invalid. // In such a situation, we'll want to search out the MethodRef in a similar fashion to bindMethodBySearch // but since we can't use ldtoken to obtain System.Type objects, we'll need to do everything with strings. // This is the least fool-proof method for resolving the binding, but since the scenarios it's used in are // so constrained, (fsi 2.0, methods with generic multi-dimensional arrays in their signatures), it's // acceptable let findMethod (parentT:Type,nm,marity,argtys : string [],rty : string) = let staticOrInstanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let methInfos = parentT.GetMethods(staticOrInstanceBindingFlags) |> Array.toList let methInfos = methInfos |> List.filter (fun methInfo -> methInfo.Name = nm) match methInfos with | [methInfo] -> methInfo | _ -> let select (methInfo:MethodInfo) = let mtyargTIs = if methInfo.IsGenericMethod then methInfo.GetGenericArguments() else [| |] if mtyargTIs.Length <> marity then false else let haveArgTs = let parameters = Array.toList (methInfo.GetParameters()) parameters |> List.map (fun param -> param.ParameterType) let haveResT = methInfo.ReturnType if argtys.Length <> haveArgTs.Length then false else let res = rty :: (Array.toList argtys) = (List.map (fun (t : System.Type) -> t.Name) (haveResT::haveArgTs)) res match List.tryFind select methInfos with | None -> failwith "Internal Error: cannot bind to method" | Some methInfo -> methInfo [] type internal Cursor = static member ResetTo(top,left) = Utils.guard(fun () -> Console.CursorTop <- top; Console.CursorLeft <- left) static member Move(inset, delta) = let position = Console.CursorTop * (Console.BufferWidth - inset) + (Console.CursorLeft - inset) + delta let top = position / (Console.BufferWidth - inset) let left = inset + position % (Console.BufferWidth - inset) Cursor.ResetTo(top,left) type internal Anchor = {top:int; left:int} static member Current(inset) = {top=Console.CursorTop;left= max inset Console.CursorLeft} member p.PlaceAt(inset, index) = //printf "p.top = %d, p.left = %d, inset = %d, index = %d\n" p.top p.left inset index; let left = inset + (( (p.left - inset) + index) % (Console.BufferWidth - inset)) let top = p.top + ( (p.left - inset) + index) / (Console.BufferWidth - inset) Cursor.ResetTo(top,left) type internal ReadLineConsole() = let history = new History() let mutable complete : (string option * string -> seq) = fun (_s1,_s2) -> Seq.empty member x.SetCompletionFunction f = complete <- f /// Inset all inputs by this amount member x.Prompt = "> " member x.Prompt2 = "- " member x.Inset = x.Prompt.Length member x.GetOptions(input:string) = /// Tab optionsCache available in current context let optionsCache = new Options() let rec look parenCount i = if i <= 0 then i else match input.Chars(i - 1) with | c when Char.IsLetterOrDigit(c) (* or Char.IsWhiteSpace(c) *) -> look parenCount (i-1) | '.' | '_' -> look parenCount (i-1) | '}' | ')' | ']' -> look (parenCount+1) (i-1) | '(' | '{' | '[' -> look (parenCount-1) (i-1) | _ when parenCount > 0 -> look parenCount (i-1) | _ -> i let start = look 0 input.Length let name = input.Substring(start, input.Length - start); if (name.Trim().Length > 0) then let lastDot = name.LastIndexOf('.'); let attr, pref, root = if (lastDot < 0) then None, name, input.Substring(0, start) else Some(name.Substring(0, lastDot)), name.Substring(lastDot + 1), input.Substring(0, start + lastDot + 1) //printf "attr, pref, root = %s\n" (any_to_string (attr, pref, root)) try complete(attr,pref) |> Seq.filter(fun option -> option.StartsWith(pref,StringComparison.Ordinal)) |> Seq.iter (fun option -> optionsCache.Add(option)) // engine.Evaluate(String.Format("dir({0})", attr)) as IEnumerable; optionsCache.Root <-root; with e -> optionsCache.Clear(); optionsCache,true; else optionsCache,false; member x.MapCharacter(c) : string = match c with | '\x1A'-> "^Z"; | _ -> "^?" member x.GetCharacterSize(c) = if (Char.IsControl(c)) then x.MapCharacter(c).Length else 1 static member TabSize = 4; member x.ReadLine() = let checkLeftEdge(prompt) = let currLeft = Console.CursorLeft if currLeft < x.Inset then if currLeft = 0 then Console.Write (if prompt then x.Prompt2 else String(' ',x.Inset)) Utils.guard(fun () -> Console.CursorLeft <- x.Inset); // The caller writes the primary prompt. If we are reading the 2nd and subsequent lines of the // input we're responsible for writing the secondary prompt. checkLeftEdge true /// Cursor anchor - position of !anchor when the routine was called let anchor = ref (Anchor.Current(x.Inset)); /// Length of the output currently rendered on screen. let rendered = ref 0 /// Input has changed, therefore options cache is invalidated. let changed = ref false /// Cache of optionsCache let optionsCache = ref (new Options()) let writeBlank() = Console.Write(' '); checkLeftEdge false let writeChar(c) = if Console.CursorTop = Console.BufferHeight - 1 && Console.CursorLeft = Console.BufferWidth - 1 then //printf "bottom right!\n"; anchor := { !anchor with top = (!anchor).top - 1 }; checkLeftEdge true if (Char.IsControl(c)) then let s = x.MapCharacter(c) Console.Write(s); rendered := !rendered + s.Length; else Console.Write(c); rendered := !rendered + 1; checkLeftEdge true /// The console input buffer. let input = new StringBuilder() /// Current position - index into the input buffer let current = ref 0; let render() = //printf "render\n"; let curr = !current (!anchor).PlaceAt(x.Inset,0); let output = new StringBuilder() let mutable position = -1 for i = 0 to input.Length - 1 do if (i = curr) then position <- output.Length let c = input.Chars(i) if (Char.IsControl(c)) then output.Append(x.MapCharacter(c)) |> ignore; else output.Append(c) |> ignore; if (curr = input.Length) then position <- output.Length; // render the current text, computing a new value for "rendered" let old_rendered = !rendered rendered := 0; for i = 0 to input.Length - 1 do writeChar(input.Chars(i)); // blank out any dangling old text for i = !rendered to old_rendered - 1 do writeBlank(); (!anchor).PlaceAt(x.Inset,position); render(); let insertChar(c:char) = if (!current = input.Length) then current := !current + 1; input.Append(c) |> ignore; writeChar(c) else input.Insert(!current, c) |> ignore; current := !current + 1; render(); let insertTab() = for i = ReadLineConsole.TabSize - (!current % ReadLineConsole.TabSize) downto 1 do insertChar(' ') let moveLeft() = if (!current > 0 && (!current - 1 < input.Length)) then current := !current - 1 let c = input.Chars(!current) Cursor.Move(x.Inset, - x.GetCharacterSize(c)) let moveRight() = if (!current < input.Length) then let c = input.Chars(!current); current := !current + 1; Cursor.Move(x.Inset, x.GetCharacterSize(c)); let setInput(line:string) = input.Length <- 0; input.Append(line) |> ignore; current := input.Length; render() let tabPress(shift) = let opts,prefix = if !changed then changed := false; x.GetOptions(input.ToString()); else !optionsCache,false optionsCache := opts; if (opts.Count > 0) then let part = if shift then opts.Previous() else opts.Next(); setInput(opts.Root + part); else if (prefix) then Console.Beep(); else insertTab(); let delete() = if (input.Length > 0 && !current < input.Length) then input.Remove(!current, 1) |> ignore; render(); let deleteToEndOfLine() = if (!current < input.Length) then input.Remove (!current, input.Length - !current) |> ignore; render(); let insert(key: ConsoleKeyInfo) = // REVIEW: is this F6 rewrite required? 0x1A looks like Ctrl-Z. // REVIEW: the Ctrl-Z code is not recognised as EOF by the lexer. // REVIEW: looks like a relic of the port of readline, which is currently removable. let c = if (key.Key = ConsoleKey.F6) then '\x1A' else key.KeyChar let c = ConsoleOptions.readKeyFixup c insertChar(c); let backspace() = if (input.Length > 0 && !current > 0) then input.Remove(!current - 1, 1) |> ignore; current := !current - 1; render(); let enter() = Console.Write("\n"); let line = input.ToString(); if (line = "\x1A") then null else if (line.Length > 0) then history.AddLast(line); line; let rec read() = let key = Console.ReadKey true match key.Key with | ConsoleKey.Backspace -> backspace(); change() | ConsoleKey.Delete -> delete(); change() | ConsoleKey.Enter -> enter() | ConsoleKey.Tab -> tabPress(key.Modifiers &&& ConsoleModifiers.Shift <> enum 0); read() | ConsoleKey.UpArrow -> setInput(history.Previous()); change() | ConsoleKey.DownArrow -> setInput(history.Next()); change() | ConsoleKey.RightArrow -> moveRight() change() | ConsoleKey.LeftArrow -> moveLeft() change() | ConsoleKey.Escape -> setInput(String.Empty); change() | ConsoleKey.Home -> current := 0; (!anchor).PlaceAt(x.Inset,0) change() | ConsoleKey.End -> current := input.Length; (!anchor).PlaceAt(x.Inset,!rendered); change() | _ -> match (key.Modifiers, key.KeyChar) with // Control-A | (ConsoleModifiers.Control, '\001') -> current := 0; (!anchor).PlaceAt(x.Inset,0) change () // Control-E | (ConsoleModifiers.Control, '\005') -> current := input.Length; (!anchor).PlaceAt(x.Inset,!rendered) change () // Control-B | (ConsoleModifiers.Control, '\002') -> moveLeft() change () // Control-f | (ConsoleModifiers.Control, '\006') -> moveRight() change () // Control-k delete to end of line | (ConsoleModifiers.Control, '\011') -> deleteToEndOfLine() change() // Control-P | (ConsoleModifiers.Control, '\016') -> setInput(history.Previous()); change() // Control-n | (ConsoleModifiers.Control, '\014') -> setInput(history.Next()); change() // Control-d | (ConsoleModifiers.Control, '\004') -> exit 0 //quit | _ -> // Note: If KeyChar=0, the not a proper char, e.g. it could be part of a multi key-press character, // e.g. e-acute is ' and e with the French (Belgium) IME and US Intl KB. // Here: skip KeyChar=0 (except for F6 which maps to 0x1A (ctrl-Z?)). if key.KeyChar <> '\000' || key.Key = ConsoleKey.F6 then insert(key); change() else // Skip and read again. read() and change() = changed := true; read() read() fsharp-3.0.34/src/fsharp/fsi/Fsi.fsproj0000664000175000017500000000711312260314606016673 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug x86 {d0e98c0d-490b-4c61-9329-0862f6e87645} Exe $(NoWarn);62;44 fsi 0x0A000000 EXTENSIONTYPING;COMPILER;$(DefineConstants) true $(OtherFlags) --warnon:1182 FSIstrings.txt assemblyinfo.fsi.exe.fs InternalCollections.fsi InternalCollections.fs console.fs fsi.fs fsimain.fs PreserveNewest FSharp.Compiler.Interactive.Settings {649FA588-F02E-457C-9FCF-87E46407481E} FSharp.Compiler.Server.Shared {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06} {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} FSharp.Compiler {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/fsi/fsi.fs0000664000175000017500000040632312260314606016046 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module Microsoft.FSharp.Compiler.Interactive.Shell #nowarn "55" [] [] do() open Internal.Utilities module Tc = Microsoft.FSharp.Compiler.TypeChecker open System open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Runtime.InteropServices open System.Runtime.CompilerServices open System.IO open System.Text open System.Threading open System.Reflection #if SILVERLIGHT #else open System.Windows.Forms #endif open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter open Microsoft.FSharp.Compiler.Interactive.Settings open Microsoft.FSharp.Compiler.Interactive.RuntimeHelpers open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Fscopts open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Ilxgen open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Opt open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Lexhelp open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.PostTypecheckSemanticChecks open Internal.Utilities.Collections open Internal.Utilities.StructuredFormat open Internal.Utilities.FileSystem #if SILVERLIGHT let internal exit (_ : int) = () #endif //---------------------------------------------------------------------------- // Hardbinding dependencies should we NGEN fsi.exe //---------------------------------------------------------------------------- #if SILVERLIGHT #else open System.Runtime.CompilerServices [] do () [] do () #endif module internal Utilities = let callStaticMethod (ty:Type) name args = #if SILVERLIGHT ty.InvokeMember(name, (BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic), null, null, Array.ofList args) #else ty.InvokeMember(name, (BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic), null, null, Array.ofList args,Globalization.CultureInfo.InvariantCulture) #endif let callGenericStaticMethod (ty:Type) name tyargs args = let m = ty.GetMethod(name,(BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic)) let m = m.MakeGenericMethod(Array.ofList tyargs) m.Invoke(null,Array.ofList args) let ignoreAllErrors f = try f() with _ -> () //---------------------------------------------------------------------------- // Timing support //---------------------------------------------------------------------------- #if SILVERLIGHT type internal FsiTimeReporter(outWriter: TextWriter) = member tr.TimeOp(f) = let start = System.DateTime.Now let res = f() let stop = System.DateTime.Now fprintfn outWriter "Real: %s" ((stop - start).ToString()) res member tr.TimeOpIf flag f = if flag then tr.TimeOp f else f () #else [] type internal FsiTimeReporter(outWriter: TextWriter) = let stopwatch = new System.Diagnostics.Stopwatch() let ptime = System.Diagnostics.Process.GetCurrentProcess() let numGC = System.GC.MaxGeneration member tr.TimeOp(f) = let startTotal = ptime.TotalProcessorTime let startGC = [| for i in 0 .. numGC -> System.GC.CollectionCount(i) |] stopwatch.Reset() stopwatch.Start() let res = f () stopwatch.Stop() let total = ptime.TotalProcessorTime - startTotal let spanGC = [ for i in 0 .. numGC-> System.GC.CollectionCount(i) - startGC.[i] ] let elapsed = stopwatch.Elapsed fprintfn outWriter "%s" (FSIstrings.SR.fsiTimeInfoMainString((sprintf "%02d:%02d:%02d.%03d" elapsed.Hours elapsed.Minutes elapsed.Seconds elapsed.Milliseconds),(sprintf "%02d:%02d:%02d.%03d" total.Hours total.Minutes total.Seconds total.Milliseconds),(String.concat ", " (List.mapi (sprintf "%s%d: %d" (FSIstrings.SR.fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGeneration())) spanGC)))) res member tr.TimeOpIf flag f = if flag then tr.TimeOp f else f () #endif //---------------------------------------------------------------------------- // value printing //---------------------------------------------------------------------------- type internal FsiValuePrinterMode = | PrintExpr | PrintDecl /// Used to print value signatures along with their values, according to the current /// set of pretty printers installed in the system, and default printing rules. type internal FsiValuePrinter(ilGlobals, generateDebugInfo, resolvePath, outWriter) = /// This printer is used by F# Interactive if no other printers apply. let DefaultPrintingIntercept (ienv: Internal.Utilities.StructuredFormat.IEnvironment) (obj:obj) = match obj with | null -> None | :? System.Collections.IDictionary as ie -> let it = ie.GetEnumerator() try let itemLs = Internal.Utilities.StructuredFormat.LayoutOps.unfoldL // the function to layout each object in the unfold (fun obj -> ienv.GetLayout obj) // the function to call at each step of the unfold (fun () -> if it.MoveNext() then Some((it.Key, it.Value),()) else None) () // the maximum length (1+fsi.PrintLength/3) let makeListL itemLs = (leftL "[") ^^ sepListL (rightL ";") itemLs ^^ (rightL "]") Some(wordL "dict" --- makeListL itemLs) finally match it with | :? System.IDisposable as d -> d.Dispose() | _ -> () | _ -> None /// Get the print options used when formatting output using the structured printer. member __.GetFsiPrintOptions() = { Internal.Utilities.StructuredFormat.FormatOptions.Default with FormatProvider = fsi.FormatProvider; PrintIntercepts = // The fsi object supports the addition of two kinds of printers, one which converts to a string // and one which converts to another object that is recursively formatted. // The internal AddedPrinters reports these to FSI.EXE and we pick them up here to produce a layout [ for x in fsi.AddedPrinters do match x with | Choice1Of2 (aty: System.Type, printer) -> yield (fun _ienv (obj:obj) -> match obj with | null -> None | _ when aty.IsAssignableFrom(obj.GetType()) -> match printer obj with | null -> None | s -> Some (wordL s) | _ -> None) | Choice2Of2 (aty: System.Type, converter) -> yield (fun ienv (obj:obj) -> match obj with | null -> None | _ when aty.IsAssignableFrom(obj.GetType()) -> match converter obj with | null -> None | res -> Some (ienv.GetLayout res) | _ -> None) yield DefaultPrintingIntercept]; FloatingPointFormat = fsi.FloatingPointFormat; PrintWidth = fsi.PrintWidth; PrintDepth = fsi.PrintDepth; PrintLength = fsi.PrintLength; PrintSize = fsi.PrintSize; ShowProperties = fsi.ShowProperties; ShowIEnumerable = fsi.ShowIEnumerable; } /// Get the evaluation context used when inverting the storage mapping of the ILRuntimeWriter. member __.GetEvaluationContext emEnv = { LookupFieldRef = ILRuntimeWriter.LookupFieldRef emEnv >> Option.get LookupMethodRef = ILRuntimeWriter.LookupMethodRef emEnv >> Option.get LookupTypeRef = ILRuntimeWriter.LookupTypeRef emEnv >> Option.get LookupType = ILRuntimeWriter.LookupType { ilg = ilGlobals ; generatePdb = generateDebugInfo; resolvePath=resolvePath } emEnv } /// Generate a layout for an actual F# value, where we know the value has the given static type. member __.PrintValue (printMode, opts:FormatOptions, x:obj, ty:System.Type) = // We do a dynamic invoke of any_to_layout with the right System.Type parameter for the static type of the saved value. // In principle this helps any_to_layout do the right thing as it descends through terms. In practice it means // it at least does the right thing for top level 'null' list and option values (but not for nested ones). // // The static type was saved into the location used by RuntimeHelpers.GetSavedItType when RuntimeHelpers.SaveIt was called. // RuntimeHelpers.SaveIt has type ('a -> unit), and fetches the System.Type for 'a by using a typeof<'a> call. // The funny thing here is that you might think that the driver (this file) knows more about the static types // than the compiled code does. But it doesn't! In particular, it's not that easy to get a System.Type value based on the // static type information we do have: we have no direct way to bind a F# TAST type or even an AbstractIL type to // a System.Type value (I guess that functionality should be in ilreflect.fs). // // This will be more significant when we print values other then 'it' // try let ass = typeof.Assembly let displayModule = ass.GetType("Internal.Utilities.StructuredFormat.Display") match printMode with | PrintDecl -> // When printing rhs of fsi declarations, use "fsi_any_to_layout". // This will suppress some less informative values, by returning an empty layout. [fix 4343]. Internal.Utilities.StructuredFormat.Display.fsi_any_to_layout |> ignore; // if you adjust this then adjust the dynamic reference too Utilities.callGenericStaticMethod displayModule "fsi_any_to_layout" [ty] [box opts; box x] |> unbox | PrintExpr -> Internal.Utilities.StructuredFormat.Display.any_to_layout |> ignore; // if you adjust this then adjust the dynamic reference too Utilities.callGenericStaticMethod displayModule "any_to_layout" [ty] [box opts; box x] |> unbox with | :? ThreadAbortException -> Layout.wordL "" | e -> #if DEBUG printf "\n\nPrintValue: x = %+A and ty=%s\n" x (ty.FullName) #endif printf "%s" (FSIstrings.SR.fsiExceptionDuringPrettyPrinting(e.ToString())); Layout.wordL "" /// Display the signature of an F# value declaration, along with its actual value. member valuePrinter.InvokeDeclLayout (emEnv, ilxGenerator: Ilxgen.IlxAssemblyGenerator, v:Val) = // Implemented via a lookup from v to a concrete (System.Object,System.Type). // This (obj,objTy) pair can then be fed to the fsi value printer. // Note: The value may be (null:Object). // Note: A System.Type allows the value printer guide printing of nulls, e.g. as None or []. //------- // Ilxgen knows what the v:Val was converted to w.r.t. AbsIL datastructures. // Ilreflect knows what the AbsIL was generated to. // Combining these allows for obtaining the (obj,objTy) by reflection where possible. // This assumes the v:Val was given appropriate storage, e.g. StaticField. if fsi.ShowDeclarationValues then // Adjust "opts" for printing for "declared-values": // - No sequences, because they may have effects or time cost. // - No properties, since they may have unexpected effects. // - Limit strings to roughly one line, since huge strings (e.g. 1 million chars without \n are slow in vfsi). // - Limit PrintSize which is a count on nodes. let declaredValueReductionFactor = 10 (* reduce PrintSize for declared values, e.g. see less of large terms *) let opts = valuePrinter.GetFsiPrintOptions() let opts = {opts with ShowProperties = false // properties off, motivated by Form props ShowIEnumerable = false // seq off, motivated by db query concerns StringLimit = max 0 (opts.PrintWidth-4) // 4 allows for an indent of 2 and 2 quotes (rough) PrintSize = opts.PrintSize / declaredValueReductionFactor } // print less let res = try ilxGenerator.LookupGeneratedValue (valuePrinter.GetEvaluationContext emEnv, v) with e -> assert false #if DEBUG //fprintfn fsiConsoleOutput.Out "lookGenerateVal: failed on v=%+A v.Name=%s" v v.LogicalName #endif None // lookup may fail match res with | None -> None | Some (obj,objTy) -> let lay = valuePrinter.PrintValue (FsiValuePrinterMode.PrintDecl, opts, obj, objTy) if isEmptyL lay then None else Some lay // suppress empty layout else None /// Fetch the saved value of an expression out of the 'it' register and show it. member valuePrinter.InvokeExprPrinter (denv, vref) = let opts = valuePrinter.GetFsiPrintOptions() let savedIt = Microsoft.FSharp.Compiler.Interactive.RuntimeHelpers.GetSavedIt() let savedItType = Microsoft.FSharp.Compiler.Interactive.RuntimeHelpers.GetSavedItType() let rhsL = valuePrinter.PrintValue (FsiValuePrinterMode.PrintExpr, opts, savedIt, savedItType) let denv = { denv with suppressMutableKeyword = true } // suppress 'mutable' in 'val mutable it = ...' let fullL = if isEmptyL rhsL then NicePrint.layoutValOrMember denv vref (* the rhs was suppressed by the printer, so no value to print *) else (NicePrint.layoutValOrMember denv vref ++ wordL "=") --- rhsL Internal.Utilities.StructuredFormat.Display.output_layout opts outWriter fullL; outWriter.WriteLine() /// Used to make a copy of input in order to include the input when displaying the error text. type internal FsiStdinSyphon(errorWriter: TextWriter) = let syphonText = new StringBuilder() /// Clears the syphon text member x.Reset () = #if FX_ATLEAST_40 syphonText.Clear() |> ignore #else syphonText.Remove(0,syphonText.Length) |> ignore #endif /// Adds a new line to the syphon text member x.Add (str:string) = syphonText.Append str |> ignore /// Gets the indicated line in the syphon text member x.GetLine filename i = if filename <> Lexhelp.stdinMockFilename then "" else let text = syphonText.ToString() // In Visual Studio, when sending a block of text, it prefixes with '# "filename"\n' // and postfixes with '# 1 "stdin"\n'. To first, get errors filename context, // and second to get them back into stdin context (no position stack...). // To find an error line, trim upto the last stdinReset string the syphoned text. //printf "PrePrune:-->%s<--\n\n" text; let rec prune (text:string) = let stdinReset = "# 1 \"stdin\"\n" let idx = text.IndexOf(stdinReset,StringComparison.Ordinal) if idx <> -1 then prune (text.Substring(idx + stdinReset.Length)) else text let text = prune text let lines = text.Split '\n' if 0 < i && i <= lines.Length then lines.[i-1] else "" /// Display the given error. member syphon.PrintError (tcConfig:TcConfigBuilder, isWarn, err) = Utilities.ignoreAllErrors (fun () -> DoWithErrorColor isWarn (fun () -> errorWriter.WriteLine(); writeViaBufferWithEnvironmentNewLines errorWriter (OutputErrorOrWarningContext " " syphon.GetLine) err; writeViaBufferWithEnvironmentNewLines errorWriter (OutputErrorOrWarning (tcConfig.implicitIncludeDir,tcConfig.showFullPaths,tcConfig.flatErrors,tcConfig.errorStyle,false)) err; errorWriter.WriteLine())) /// Encapsulates functions used to write to outWriter and errorWriter type internal FsiConsoleOutput(tcConfigB, outWriter:TextWriter, errorWriter:TextWriter) = let nullOut = new StreamWriter(Stream.Null) :> TextWriter let fprintfnn (os: TextWriter) fmt = Printf.kfprintf (fun _ -> os.WriteLine(); os.WriteLine()) os fmt /// uprintf to write usual responses to stdout (suppressed by --quiet), with various pre/post newlines member out.uprintf fmt = fprintf (if tcConfigB.noFeedback then nullOut else outWriter) fmt member out.uprintfn fmt = fprintfn (if tcConfigB.noFeedback then nullOut else outWriter) fmt member out.uprintfnn fmt = fprintfnn (if tcConfigB.noFeedback then nullOut else outWriter) fmt member out.uprintnf fmt = out.uprintfn ""; out.uprintf fmt member out.uprintnfn fmt = out.uprintfn ""; out.uprintfn fmt member out.uprintnfnn fmt = out.uprintfn ""; out.uprintfnn fmt member out.Out = outWriter member out.Error = errorWriter /// This ErrorLogger reports all warnings, but raises StopProcessing on first error or early exit type internal ErrorLoggerThatStopsOnFirstError(tcConfigB:TcConfigBuilder, fsiStdinSyphon:FsiStdinSyphon, fsiConsoleOutput: FsiConsoleOutput) = inherit ErrorLogger("ErrorLoggerThatStopsOnFirstError") let mutable errors = 0 member x.SetError() = errors <- 1 member x.ErrorSinkHelper(err) = fsiStdinSyphon.PrintError(tcConfigB,false,err) errors <- errors + 1 if tcConfigB.abortOnError then exit 1 (* non-zero exit code *) // STOP ON FIRST ERROR (AVOIDS PARSER ERROR RECOVERY) raise StopProcessing member x.CheckForErrors() = (errors > 0) member x.ResetErrorCount() = (errors <- 0) override x.WarnSinkImpl(err) = DoWithErrorColor true (fun () -> if ReportWarningAsError tcConfigB.globalWarnLevel tcConfigB.specificWarnOff tcConfigB.specificWarnOn tcConfigB.specificWarnAsError tcConfigB.specificWarnAsWarn tcConfigB.globalWarnAsError err then x.ErrorSinkHelper err elif ReportWarning tcConfigB.globalWarnLevel tcConfigB.specificWarnOff tcConfigB.specificWarnOn err then fsiConsoleOutput.Error.WriteLine() writeViaBufferWithEnvironmentNewLines fsiConsoleOutput.Error (OutputErrorOrWarningContext " " fsiStdinSyphon.GetLine) err writeViaBufferWithEnvironmentNewLines fsiConsoleOutput.Error (OutputErrorOrWarning (tcConfigB.implicitIncludeDir,tcConfigB.showFullPaths,tcConfigB.flatErrors,tcConfigB.errorStyle,true)) err fsiConsoleOutput.Error.WriteLine()) override x.ErrorSinkImpl err = x.ErrorSinkHelper err override x.ErrorCount = errors /// A helper function to check if its time to abort member x.AbortOnError() = if errors > 0 then fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.stoppedDueToError()) fsiConsoleOutput.Error.Flush() raise StopProcessing /// Get the directory name from a string, with some defaults if it doesn't have one let internal directoryName (s:string) = if s = "" then "." else match Path.GetDirectoryName s with | null -> if FileSystem.IsPathRootedShim s then s else "." | res -> if res = "" then "." else res //---------------------------------------------------------------------------- // cmd line - state for options //---------------------------------------------------------------------------- /// Process the command line options type internal FsiCommandLineOptions(argv: string[], tcConfigB, fsiConsoleOutput: FsiConsoleOutput) = let mutable enableConsoleKeyProcessing = // Mono on Win32 doesn't implement correct console processing not (runningOnMono && System.Environment.OSVersion.Platform = System.PlatformID.Win32NT) // In the cross-platform edition of F#, 'gui' support is currently off by default #if CROSS_PLATFORM_COMPILER let mutable gui = false // override via "--gui", off by default #else let mutable gui = true // override via "--gui", on by default #endif #if DEBUG let mutable showILCode = false // show modul il code #endif let mutable showTypes = true // show types after each interaction? let mutable fsiServerName = "" let mutable interact = true let mutable explicitArgs = [] let mutable inputFilesAcc = [] let mutable fsiServerInputCodePage = None let mutable fsiServerOutputCodePage = None let mutable fsiLCID = None // internal options let mutable probeToSeeIfConsoleWorks = true let mutable peekAheadOnConsoleToPermitTyping = true let isInteractiveServer() = fsiServerName <> "" let recordExplicitArg arg = explicitArgs <- explicitArgs @ [arg] let executableFileName = lazy #if SILVERLIGHT "fsi.exe" #else let currentProcess = System.Diagnostics.Process.GetCurrentProcess() Path.GetFileName(currentProcess.MainModule.FileName) #endif // Additional fsi options are list below. // In the "--help", these options can be printed either before (fsiUsagePrefix) or after (fsiUsageSuffix) the core options. let displayHelpFsi tcConfigB (blocks:CompilerOptionBlock list) = DisplayBannerText tcConfigB; fprintfn fsiConsoleOutput.Out "" fprintfn fsiConsoleOutput.Out "%s" (FSIstrings.SR.fsiUsage(executableFileName.Value)) printCompilerOptionBlocks blocks exit 0 // option tags let tagFile = "" let tagNone = "" /// These options preceed the FsiCoreCompilerOptions in the help blocks let fsiUsagePrefix tcConfigB = [PublicOptions(FSIstrings.SR.fsiInputFiles(), [CompilerOption("use",tagFile, OptionString (fun s -> inputFilesAcc <- inputFilesAcc @ [(s,true)]), None, Some (FSIstrings.SR.fsiUse())); CompilerOption("load",tagFile, OptionString (fun s -> inputFilesAcc <- inputFilesAcc @ [(s,false)]), None, Some (FSIstrings.SR.fsiLoad())); ]); PublicOptions(FSIstrings.SR.fsiCodeGeneration(),[]); PublicOptions(FSIstrings.SR.fsiErrorsAndWarnings(),[]); PublicOptions(FSIstrings.SR.fsiLanguage(),[]); PublicOptions(FSIstrings.SR.fsiMiscellaneous(),[]); PublicOptions(FSIstrings.SR.fsiAdvanced(),[]); PrivateOptions( [// Make internal fsi-server* options. Do not print in the help. They are used by VFSI. CompilerOption("fsi-server","", OptionString (fun s -> fsiServerName <- s), None, None); // "FSI server mode on given named channel"); CompilerOption("fsi-server-input-codepage","",OptionInt (fun n -> fsiServerInputCodePage <- Some(n)), None, None); // " Set the input codepage for the console"); CompilerOption("fsi-server-output-codepage","",OptionInt (fun n -> fsiServerOutputCodePage <- Some(n)), None, None); // " Set the output codepage for the console"); CompilerOption("fsi-server-no-unicode","", OptionUnit (fun () -> fsiServerOutputCodePage <- None; fsiServerInputCodePage <- None), None, None); // "Do not set the codepages for the console"); CompilerOption("fsi-server-lcid","", OptionInt (fun n -> fsiLCID <- Some(n)), None, None); // "LCID from Visual Studio" // We do not want to print the "script.fsx arg2..." as part of the options CompilerOption("script.fsx arg1 arg2 ...","", OptionGeneral((fun args -> args.Length > 0 && IsScript args.[0]), (fun args -> let scriptFile = args.[0] let scriptArgs = List.tail args inputFilesAcc <- inputFilesAcc @ [(scriptFile,true)] (* record script.fsx for evaluation *) List.iter recordExplicitArg scriptArgs (* record rest of line as explicit arguments *) tcConfigB.noFeedback <- true (* "quiet", no banners responses etc *) interact <- false (* --exec, exit after eval *) [] (* no arguments passed on, all consumed here *) )),None,None); // "Run script.fsx with the follow command line arguments: arg1 arg2 ..."); ]); PrivateOptions( [ // Private options, related to diagnostics around console probing CompilerOption("probeconsole","", OptionSwitch (fun flag -> probeToSeeIfConsoleWorks <- flag=On), None, None); // "Probe to see if Console looks functional"); CompilerOption("peekahead","", OptionSwitch (fun flag -> peekAheadOnConsoleToPermitTyping <- flag=On), None, None); // "Probe to see if Console looks functional"); ]) ] /// These options follow the FsiCoreCompilerOptions in the help blocks let fsiUsageSuffix tcConfigB = [PublicOptions(FSComp.SR.optsHelpBannerInputFiles(), [CompilerOption("--","", OptionRest recordExplicitArg, None, Some (FSIstrings.SR.fsiRemaining())); ]); PublicOptions(FSComp.SR.optsHelpBannerMisc(), [ CompilerOption("help", tagNone, OptionHelp (fun blocks -> displayHelpFsi tcConfigB blocks),None, Some (FSIstrings.SR.fsiHelp())) ]); PrivateOptions( [ CompilerOption("?" , tagNone, OptionHelp (fun blocks -> displayHelpFsi tcConfigB blocks), None, None); // "Short form of --help"); CompilerOption("help" , tagNone, OptionHelp (fun blocks -> displayHelpFsi tcConfigB blocks), None, None); // "Short form of --help"); CompilerOption("full-help", tagNone, OptionHelp (fun blocks -> displayHelpFsi tcConfigB blocks), None, None); // "Short form of --help"); ]); PublicOptions(FSComp.SR.optsHelpBannerAdvanced(), [CompilerOption("exec","", OptionUnit (fun () -> interact <- false), None, Some (FSIstrings.SR.fsiExec())); CompilerOption("gui", tagNone, OptionSwitch (fun flag -> gui <- (flag = On)),None, Some (FSIstrings.SR.fsiGui())); CompilerOption("quiet","", OptionUnit (fun () -> tcConfigB.noFeedback <- true), None, Some (FSIstrings.SR.fsiQuiet())); (* Renamed --readline and --no-readline to --tabcompletion:+|- *) CompilerOption("readline",tagNone, OptionSwitch (function flag -> enableConsoleKeyProcessing <- (flag = On)),None, Some (FSIstrings.SR.fsiReadline())); ]); ] /// Process command line, flags and collect filenames. /// The ParseCompilerOptions function calls imperative function to process "real" args /// Rather than start processing, just collect names, then process them. let sourceFiles = let collect name = let fsx = Build.IsScript name inputFilesAcc <- inputFilesAcc @ [(name,fsx)] // O(n^2), but n small... try let fsiCompilerOptions = fsiUsagePrefix tcConfigB @ GetCoreFsiCompilerOptions tcConfigB @ fsiUsageSuffix tcConfigB let abbrevArgs = abbrevFlagSet tcConfigB false ParseCompilerOptions collect fsiCompilerOptions (List.tail (PostProcessCompilerArgs abbrevArgs argv)) with e -> stopProcessingRecovery e range0; exit 1; inputFilesAcc #if SILVERLIGHT #else do if tcConfigB.utf8output then let prev = Console.OutputEncoding Console.OutputEncoding <- System.Text.Encoding.UTF8 System.AppDomain.CurrentDomain.ProcessExit.Add(fun _ -> Console.OutputEncoding <- prev) #endif do let firstArg = match sourceFiles with | [] -> argv.[0] | _ -> fst (List.head (List.rev sourceFiles) ) let args = Array.ofList (firstArg :: explicitArgs) fsi.CommandLineArgs <- args //---------------------------------------------------------------------------- // Banner //---------------------------------------------------------------------------- member __.ShowBanner() = fsiConsoleOutput.uprintnfn "%s" (tcConfigB.productNameForBannerText) fsiConsoleOutput.uprintfnn "%s" (FSComp.SR.optsCopyright()) fsiConsoleOutput.uprintfn "%s" (FSIstrings.SR.fsiBanner3()) member __.ShowHelp() = #if SILVERLIGHT fsiConsoleOutput.uprintfnn "%s" (FSIstrings.SR.fsiIntroTextHeader1directives()) fsiConsoleOutput.uprintfn " #r \"file.dll\" %s" (FSIstrings.SR.fsiIntroTextHashrInfo()) fsiConsoleOutput.uprintfn " #time [\"on\"|\"off\"] %s" (FSIstrings.SR.fsiIntroTextHashtimeInfo()) fsiConsoleOutput.uprintfn " #help %s" (FSIstrings.SR.fsiIntroTextHashhelpInfo()) #else let helpLine = sprintf "%s --help" (Path.GetFileNameWithoutExtension executableFileName.Value) fsiConsoleOutput.uprintfn "" fsiConsoleOutput.uprintfnn "%s" (FSIstrings.SR.fsiIntroTextHeader1directives()); fsiConsoleOutput.uprintfn " #r \"file.dll\";; %s" (FSIstrings.SR.fsiIntroTextHashrInfo()); fsiConsoleOutput.uprintfn " #I \"path\";; %s" (FSIstrings.SR.fsiIntroTextHashIInfo()); fsiConsoleOutput.uprintfn " #load \"file.fs\" ...;; %s" (FSIstrings.SR.fsiIntroTextHashloadInfo()); fsiConsoleOutput.uprintfn " #time [\"on\"|\"off\"];; %s" (FSIstrings.SR.fsiIntroTextHashtimeInfo()); fsiConsoleOutput.uprintfn " #help;; %s" (FSIstrings.SR.fsiIntroTextHashhelpInfo()); fsiConsoleOutput.uprintfn " #quit;; %s" (FSIstrings.SR.fsiIntroTextHashquitInfo()); (* last thing you want to do, last thing in the list - stands out more *) fsiConsoleOutput.uprintfn ""; fsiConsoleOutput.uprintfnn "%s" (FSIstrings.SR.fsiIntroTextHeader2commandLine()); fsiConsoleOutput.uprintfn "%s" (FSIstrings.SR.fsiIntroTextHeader3(helpLine)); fsiConsoleOutput.uprintfn ""; fsiConsoleOutput.uprintfn ""; #endif #if DEBUG member __.ShowILCode with get() = showILCode and set v = showILCode <- v #endif member __.ShowTypes with get() = showTypes and set v = showTypes <- v member __.FsiServerName = fsiServerName member __.FsiServerInputCodePage = fsiServerInputCodePage member __.FsiServerOutputCodePage = fsiServerOutputCodePage member __.FsiLCID with get() = fsiLCID and set v = fsiLCID <- v member __.IsInteractiveServer = isInteractiveServer() member __.ProbeToSeeIfConsoleWorks = probeToSeeIfConsoleWorks member __.EnableConsoleKeyProcessing = enableConsoleKeyProcessing member __.Interact = interact member __.PeekAheadOnConsoleToPermitTyping = peekAheadOnConsoleToPermitTyping member __.SourceFiles = sourceFiles member __.Gui = gui /// Set the current ui culture for the current thread. let internal SetCurrentUICultureForThread (lcid : int option) = match lcid with | Some n -> Thread.CurrentThread.CurrentUICulture <- #if SILVERLIGHT new CultureInfo(n.ToString()) #else new CultureInfo(n) #endif | None -> () //---------------------------------------------------------------------------- // Reporting - warnings, errors //---------------------------------------------------------------------------- let internal InstallErrorLoggingOnThisThread errorLogger = if !progress then dprintfn "Installing logger on id=%d name=%s" Thread.CurrentThread.ManagedThreadId Thread.CurrentThread.Name SetThreadErrorLoggerNoUnwind(errorLogger) SetThreadBuildPhaseNoUnwind(BuildPhase.Interactive) /// Set the input/output encoding. The use of a thread is due to a known bug on /// on Vista where calls to Console.InputEncoding can block the process. let internal SetServerCodePages(fsiOptions: FsiCommandLineOptions) = #if SILVERLIGHT ignore fsiOptions #else match fsiOptions.FsiServerInputCodePage, fsiOptions.FsiServerOutputCodePage with | None,None -> () | inputCodePageOpt,outputCodePageOpt -> let successful = ref false Async.Start (async { do match inputCodePageOpt with | None -> () | Some(n:int) -> let encoding = System.Text.Encoding.GetEncodingShim n // Note this modifies the real honest-to-goodness settings for the current shell. // and the modifiations hang around even after the process has exited. Console.InputEncoding <- encoding do match outputCodePageOpt with | None -> () | Some(n:int) -> let encoding = System.Text.Encoding.GetEncodingShim n // Note this modifies the real honest-to-goodness settings for the current shell. // and the modifiations hang around even after the process has exited. Console.OutputEncoding <- encoding do successful := true }); for pause in [10;50;100;1000;2000;10000] do if not !successful then Thread.Sleep(pause); if not !successful then System.Windows.Forms.MessageBox.Show(FSIstrings.SR.fsiConsoleProblem()) |> ignore #endif //---------------------------------------------------------------------------- // Prompt printing //---------------------------------------------------------------------------- type internal FsiConsolePrompt(fsiOptions: FsiCommandLineOptions, fsiConsoleOutput: FsiConsoleOutput) = // A prompt gets "printed ahead" at start up. Tells users to start type while initialisation completes. // A prompt can be skipped by "silent directives", e.g. ones sent to FSI by VS. let mutable dropPrompt = 0 // NOTE: SERVER-PROMPT is not user displayed, rather it's a prefix that code elsewhere // uses to identify the prompt, see vs\FsPkgs\FSharp.VS.FSI\fsiSessionToolWindow.fs let prompt = if fsiOptions.IsInteractiveServer then "SERVER-PROMPT>\n" else "> " member __.Print() = if dropPrompt = 0 then fsiConsoleOutput.uprintf "%s" prompt else dropPrompt <- dropPrompt - 1 member __.PrintAhead() = dropPrompt <- dropPrompt + 1; fsiConsoleOutput.uprintf "%s" prompt member __.SkipNext() = dropPrompt <- dropPrompt + 1 member __.FsiOptions = fsiOptions //---------------------------------------------------------------------------- // Startup processing //---------------------------------------------------------------------------- type internal FsiConsoleInput(fsiOptions: FsiCommandLineOptions, inReader: TextReader, outWriter: TextWriter) = #if SILVERLIGHT #else let consoleLooksOperational() = if fsiOptions.ProbeToSeeIfConsoleWorks then if !progress then fprintfn outWriter "probing to see if console works..." try // Probe to see if the console looks functional on this version of .NET let _ = Console.KeyAvailable let c1 = Console.ForegroundColor let c2 = Console.BackgroundColor let _ = Console.CursorLeft <- Console.CursorLeft if !progress then fprintfn outWriter "probe succeeded, we might have a console, comparing foreground (%A) and background (%A) colors, if they are the same then we're running in emacs or VS on unix and we turn off readline by default..." c1 c2 c1 <> c2 with _ -> if !progress then fprintfn outWriter "probe failed, we have no console..." (* warning(Failure("Note: there was a problem setting up custom readline console support. Consider starting fsi.exe with the --no-readline option")); *) false else true #endif let consoleOpt = #if SILVERLIGHT None #else // The "console.fs" code does a limited form of "TAB-completion". // Currently, it turns on if it looks like we have a console. if fsiOptions.EnableConsoleKeyProcessing && consoleLooksOperational() then Some(new Microsoft.FSharp.Compiler.Interactive.ReadLineConsole()) else None #endif // When VFSI is running, there should be no "console", and in particular the console.fs readline code should not to run. do if fsiOptions.IsInteractiveServer then assert(consoleOpt = None) /// This threading event gets set after the first-line-reader has finished its work let consoleReaderStartupDone = new ManualResetEvent(false) /// When using a key-reading console this holds the first line after it is read let mutable firstLine = None /// Peek on the standard input so that the user can type into it from a console window. do if fsiOptions.Interact then #if SILVERLIGHT #else if fsiOptions.PeekAheadOnConsoleToPermitTyping then (new Thread(fun () -> match consoleOpt with | Some console when fsiOptions.EnableConsoleKeyProcessing && not fsiOptions.IsInteractiveServer -> if isNil fsiOptions.SourceFiles then if !progress then fprintfn outWriter "first-line-reader-thread reading first line..."; firstLine <- Some(console.ReadLine()); if !progress then fprintfn outWriter "first-line-reader-thread got first line = %A..." firstLine; consoleReaderStartupDone.Set() |> ignore if !progress then fprintfn outWriter "first-line-reader-thread has set signal and exited." ; | _ -> ignore(inReader.Peek()); consoleReaderStartupDone.Set() |> ignore )).Start() else #endif if !progress then fprintfn outWriter "first-line-reader-thread not in use." consoleReaderStartupDone.Set() |> ignore /// Try to get the first line, if we snarfed it while probing. member __.TryGetFirstLine() = let r = firstLine in firstLine <- None; r /// Try to get the console, if it appears operational. member __.TryGetConsole() = consoleOpt member __.In = inReader member __.WaitForInitialConsoleInput() = WaitHandle.WaitAll [| consoleReaderStartupDone |] |> ignore; //---------------------------------------------------------------------------- // FsiDynamicCompilerState //---------------------------------------------------------------------------- [] [] type internal FsiDynamicCompilerState = { optEnv : Opt.IncrementalOptimizationEnv emEnv : ILRuntimeWriter.emEnv tcGlobals : Env.TcGlobals tcState : Build.TcState ilxGenerator : Ilxgen.IlxAssemblyGenerator // Why is this not in FsiOptions? timing : bool } let internal WithImplicitHome (tcConfigB, dir) f = let old = tcConfigB.implicitIncludeDir tcConfigB.implicitIncludeDir <- dir; try f() finally tcConfigB.implicitIncludeDir <- old /// Encapsulates the coordination of the typechecking, optimization and code generation /// components of the F# compiler for interactively executed fragments of code. /// /// A single instance of this object is created per interactive session. type internal FsiDynamicCompiler (timeReporter : FsiTimeReporter, tcConfigB, tcLockObject : obj, errorLogger: ErrorLoggerThatStopsOnFirstError, outWriter: TextWriter, tcImports: TcImports, tcGlobals: TcGlobals, ilGlobals: ILGlobals, fsiOptions : FsiCommandLineOptions, fsiConsoleOutput : FsiConsoleOutput, niceNameGen, resolvePath) = let outfile = "TMPFSCI.exe" let assemblyName = "FSI-ASSEMBLY" let mutable fragmentId = 0 let mutable prevIt : ValRef option = None let generateDebugInfo = tcConfigB.debuginfo let valuePrinter = FsiValuePrinter(ilGlobals, generateDebugInfo, resolvePath, outWriter) let assemblyBuilder,moduleBuilder = ILRuntimeWriter.mkDynamicAssemblyAndModule (assemblyName, tcConfigB.optSettings.localOpt(), generateDebugInfo) let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 #if SILVERLIGHT #else let _writer = moduleBuilder.GetSymWriter() #endif let infoReader = InfoReader(tcGlobals,tcImports.GetImportMap()) /// Add attributes let CreateModuleFragment (tcConfigB, assemblyName, codegenResults) = if !progress then fprintfn fsiConsoleOutput.Out "Creating main module..."; let mainModule = mkILSimpleModule assemblyName (fsharpModuleName tcConfigB.target assemblyName) (tcConfigB.target = Dll) tcConfigB.subsystemVersion tcConfigB.useHighEntropyVA (mkILTypeDefs codegenResults.ilTypeDefs) None None 0x0 (mkILExportedTypes []) "" { mainModule with Manifest = (let man = mainModule.ManifestOfAssembly Some { man with CustomAttrs = mkILCustomAttrs codegenResults.ilAssemAttrs }); } let ProcessInputs(istate: FsiDynamicCompilerState, inputs: ParsedInput list, showTypes: bool, isIncrementalFragment: bool, isInteractiveItExpr: bool, prefixPath: LongIdent) = let optEnv = istate.optEnv let emEnv = istate.emEnv let tcState = istate.tcState let ilxGenerator = istate.ilxGenerator let tcConfig = TcConfig.Create(tcConfigB,validate=false) // Typecheck. The lock stops the type checker running at the same time as the // server intellisense implementation (which is currently incomplete and #if disabled) let (tcState:TcState),topCustomAttrs,declaredImpls,tcEnvAtEndOfLastInput = lock tcLockObject (fun _ -> TypecheckClosedInputSet(errorLogger.CheckForErrors,tcConfig,tcImports,tcGlobals, Some prefixPath,tcState,inputs)) #if DEBUG // Logging/debugging if tcConfig.printAst then let (TAssembly(declaredImpls)) = declaredImpls for input in declaredImpls do fprintfn fsiConsoleOutput.Out "AST:" fprintfn fsiConsoleOutput.Out "%+A" input #endif errorLogger.AbortOnError(); let importMap = tcImports.GetImportMap() // optimize: note we collect the incremental optimization environment let optimizedImpls, _optData, optEnv = ApplyAllOptimizations (tcConfig, tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), outfile, importMap, isIncrementalFragment, optEnv, tcState.Ccu, declaredImpls) errorLogger.AbortOnError(); let fragName = textOfLid prefixPath let codegenResults = GenerateIlxCode (IlReflectBackend, isInteractiveItExpr, runningOnMono, tcConfig, topCustomAttrs, optimizedImpls, fragName, true, ilxGenerator) errorLogger.AbortOnError(); // Each input is like a small separately compiled extension to a single source file. // The incremental extension to the environment is dictated by the "signature" of the values as they come out // of the type checker. Hence we add the declaredImpls (unoptimized) to the environment, rather than the // optimizedImpls. ilxGenerator.AddIncrementalLocalAssemblyFragment (isIncrementalFragment, fragName, declaredImpls) ReportTime tcConfig "TAST -> ILX"; errorLogger.AbortOnError(); ReportTime tcConfig "Linking"; let ilxMainModule = CreateModuleFragment (tcConfigB, assemblyName, codegenResults) errorLogger.AbortOnError(); ReportTime tcConfig "ILX -> IL (Unions)"; let ilxMainModule = EraseIlxUnions.ConvModule ilGlobals ilxMainModule ReportTime tcConfig "ILX -> IL (Funcs)"; let ilxMainModule = EraseIlxFuncs.ConvModule ilGlobals ilxMainModule errorLogger.AbortOnError(); ReportTime tcConfig "Assembly refs Normalised"; let mainmod3 = Morphs.morphILScopeRefsInILModuleMemoized ilGlobals (NormalizeAssemblyRefs tcImports) ilxMainModule errorLogger.AbortOnError(); #if SILVERLIGHT #else #if DEBUG if fsiOptions.ShowILCode then fsiConsoleOutput.uprintnfn "--------------------"; ILAsciiWriter.output_module outWriter mainmod3; fsiConsoleOutput.uprintnfn "--------------------" #endif #endif ignore fsiOptions ReportTime tcConfig "Reflection.Emit"; let emEnv,execs = ILRuntimeWriter.emitModuleFragment(ilGlobals, emEnv, assemblyBuilder, moduleBuilder, mainmod3, generateDebugInfo, resolvePath) errorLogger.AbortOnError(); // Explicitly register the resources with the QuotationPickler module // We would save them as resources into the dynamic assembly but there is missing // functionality System.Reflection for dynamic modules that means they can't be read back out for bytes in codegenResults.quotationResourceBytes do Microsoft.FSharp.Quotations.Expr.RegisterReflectedDefinitions (assemblyBuilder, fragName, bytes); ReportTime tcConfig "Run Bindings"; timeReporter.TimeOpIf istate.timing (fun () -> execs |> List.iter (fun exec -> match exec() with | Some err -> fprintfn fsiConsoleOutput.Error "%s" (err.ToString()) errorLogger.SetError() errorLogger.AbortOnError() | None -> ())) ; errorLogger.AbortOnError(); // Echo the decls (reach inside wrapping) // This code occurs AFTER the execution of the declarations. // So stored values will have been initialised, modified etc. if showTypes && not tcConfig.noFeedback then let denv = tcState.TcEnvFromImpls.DisplayEnv let denv = if isIncrementalFragment then // Extend denv with a (Val -> layout option) function for printing of val bindings. {denv with generatedValueLayout = (fun v -> valuePrinter.InvokeDeclLayout (emEnv, ilxGenerator, v)) } else // With #load items, the vals in the inferred signature do not tie up with those generated. Disable printing. denv // 'Open' the path for the fragment we just compiled for any future printing. let denv = denv.AddOpenPath (pathOfLid prefixPath) let (TAssembly(declaredImpls)) = declaredImpls for (TImplFile(_qname,_,mexpr,_,_)) in declaredImpls do let responseL = NicePrint.layoutInferredSigOfModuleExpr false denv infoReader AccessibleFromSomewhere rangeStdin mexpr if not (Layout.isEmptyL responseL) then fsiConsoleOutput.uprintfn ""; let opts = valuePrinter.GetFsiPrintOptions() let responseL = Internal.Utilities.StructuredFormat.Display.squash_layout opts responseL Layout.renderL (Layout.channelR outWriter) responseL |> ignore fsiConsoleOutput.uprintfnn "" // Build the new incremental state. let istate = {istate with optEnv = optEnv; emEnv = emEnv; ilxGenerator = ilxGenerator; tcState = tcState } // Return the new state and the environment at the end of the last input, ready for further inputs. (istate,tcEnvAtEndOfLastInput) let nextFragmentId() = fragmentId <- fragmentId + 1; fragmentId let mkFragmentPath i = // NOTE: this text shows in exn traces and type names. Make it clear and fixed width [mkSynId rangeStdin (FsiDynamicModulePrefix + sprintf "%04d" i)] member __.DynamicAssemblyName = assemblyName member __.DynamicAssembly = (assemblyBuilder :> Assembly) member __.EvalParsedSourceFiles (istate, inputs) = let i = nextFragmentId() let prefix = mkFragmentPath i // Ensure the path includes the qualifying name let inputs = inputs |> List.map (PrependPathToInput prefix) let istate,_ = ProcessInputs (istate, inputs, true, false, false, prefix) istate /// Evaluate the given definitions and produce a new interactive state. member __.EvalParsedDefinitions (istate, showTypes, isInteractiveItExpr, defs: SynModuleDecls) = let filename = Lexhelp.stdinMockFilename let i = nextFragmentId() let prefix = mkFragmentPath i let prefixPath = pathOfLid prefix let impl = SynModuleOrNamespace(prefix,(* isModule: *) true,defs,PreXmlDoc.Empty,[],None,rangeStdin) let input = ParsedInput.ImplFile(ParsedImplFileInput(filename,true, QualFileNameOfUniquePath (rangeStdin,prefixPath),[],[],[impl],true (* isLastCompiland *) )) let istate,tcEnvAtEndOfLastInput = ProcessInputs (istate, [input], showTypes, true, isInteractiveItExpr, prefix) let tcState = istate.tcState { istate with tcState = tcState.NextStateAfterIncrementalFragment(tcEnvAtEndOfLastInput) } /// Evaluate the given expression and produce a new interactive state. member fsiDynamicCompiler.EvalParsedExpression (istate, expr: SynExpr) = let tcConfig = TcConfig.Create (tcConfigB, validate=false) let itName = "it" // Construct the code that saves the 'it' value into the 'SaveIt' register. let defs = fsiDynamicCompiler.BuildItBinding expr // Evaluate the overall definitions. let istate = fsiDynamicCompiler.EvalParsedDefinitions (istate, false, true, defs) // Snarf the type for 'it' via the binding match istate.tcState.TcEnvFromImpls.NameEnv.FindUnqualifiedItem itName with | Nameres.Item.Value vref -> if not tcConfig.noFeedback then valuePrinter.InvokeExprPrinter (istate.tcState.TcEnvFromImpls.DisplayEnv, vref.Deref) /// Clear the value held in the previous "it" binding, if any, as long as it has never been referenced. match prevIt with | Some prevVal when not prevVal.Deref.HasBeenReferenced -> istate.ilxGenerator.ClearGeneratedValue (valuePrinter.GetEvaluationContext istate.emEnv, prevVal.Deref) | _ -> () prevIt <- Some vref | _ -> () // Return the interactive state. istate // Construct the code that saves the 'it' value into the 'SaveIt' register. member __.BuildItBinding (expr: SynExpr) = let m = expr.Range let itName = "it" let itID = mkSynId m itName let itExp = SynExpr.Ident itID let mkBind pat expr = Binding (None, DoBinding, false, (*mutable*)false, [], PreXmlDoc.Empty, SynInfo.emptySynValData, pat, None, expr, m, NoSequencePointAtInvisibleBinding) let bindingA = mkBind (mkSynPatVar None itID) expr (* let it = *) // NOTE: the generalizability of 'expr' must not be damaged, e.g. this can't be an application let saverPath = ["Microsoft";"FSharp";"Compiler";"Interactive";"RuntimeHelpers";"SaveIt"] let dots = List.replicate (saverPath.Length - 1) rangeStdin let bindingB = mkBind (SynPat.Wild m) (SynExpr.App(ExprAtomicFlag.NonAtomic, false, SynExpr.LongIdent(false, LongIdentWithDots(List.map (mkSynId rangeStdin) saverPath,dots),None,m), itExp,m)) (* let _ = saverPath it *) let defA = SynModuleDecl.Let (false, [bindingA], m) let defB = SynModuleDecl.Let (false, [bindingB], m) [defA; defB] member __.EvalRequireReference istate m path = if Path.IsInvalidPath(path) then error(Error(FSIstrings.SR.fsiInvalidAssembly(path),m)) // Check the file can be resolved before calling requireDLLReference let resolutions = tcImports.ResolveAssemblyReference(AssemblyReference(m,path),ResolveAssemblyReferenceMode.ReportErrors) tcConfigB.AddReferencedAssemblyByPath(m,path) let tcState = istate.tcState let tcEnv,(_dllinfos,ccuinfos) = try RequireDLL tcImports tcState.TcEnvFromImpls m path with e -> tcConfigB.RemoveReferencedAssemblyByPath(m,path) reraise() let optEnv = List.fold (AddExternalCcuToOpimizationEnv tcGlobals) istate.optEnv ccuinfos istate.ilxGenerator.AddExternalCcus (ccuinfos |> List.map (fun ccuinfo -> ccuinfo.FSharpViewOfMetadata)) resolutions, { istate with tcState = tcState.NextStateAfterIncrementalFragment(tcEnv); optEnv = optEnv } member fsiDynamicCompiler.ProcessMetaCommandsFromInputAsInteractiveCommands istate sourceFile inp = WithImplicitHome (tcConfigB, directoryName sourceFile) (fun () -> ProcessMetaCommandsFromInput ((fun st (m,nm) -> tcConfigB.TurnWarningOff(m,nm); st), (fun st (m,nm) -> snd (fsiDynamicCompiler.EvalRequireReference st m nm)), (fun _ _ -> ())) tcConfigB inp (Path.GetDirectoryName sourceFile) istate) member fsiDynamicCompiler.EvalSourceFiles(istate, m, sourceFiles, lexResourceManager) = let tcConfig = TcConfig.Create(tcConfigB,validate=false) match sourceFiles with | [] -> istate | _ -> // use a set of source files as though they were command line inputs let sourceFiles = sourceFiles |> List.map (fun nm -> tcConfig.ResolveSourceFile(m,nm,tcConfig.implicitIncludeDir),m) // Close the #load graph on each file and gather the inputs from the scripts. let closure = LoadClosure.ComputeClosureOfSourceFiles(TcConfig.Create(tcConfigB,validate=false),sourceFiles,CodeContext.Evaluation,lexResourceManager=lexResourceManager,useDefaultScriptingReferences=true) // Intent "[Loading %s]\n" (String.concat "\n and " sourceFiles) fsiConsoleOutput.uprintf "[%s " (FSIstrings.SR.fsiLoadingFilesPrefixText()) closure.Inputs |> List.iteri (fun i (sourceFile,_) -> if i=0 then fsiConsoleOutput.uprintf "%s" sourceFile else fsiConsoleOutput.uprintnf " %s %s" (FSIstrings.SR.fsiLoadingFilesPrefixText()) sourceFile) fsiConsoleOutput.uprintfn "]" // Play errors and warnings from closures of the surface (root) script files. closure.RootErrors |> List.iter errorSink closure.RootWarnings |> List.iter warnSink // Non-scripts will not have been parsed during #load closure so parse them now let sourceFiles,inputs = closure.Inputs |> List.map (fun (filename, input)-> let parsedInput = match input with | None -> ParseOneInputFile(tcConfig,lexResourceManager,["INTERACTIVE"],filename,true,errorLogger,(*retryLocked*)false) | _-> input filename, parsedInput) |> List.unzip errorLogger.AbortOnError(); if inputs |> List.exists isNone then failwith "parse error"; let inputs = List.map Option.get inputs let istate = List.fold2 fsiDynamicCompiler.ProcessMetaCommandsFromInputAsInteractiveCommands istate sourceFiles inputs fsiDynamicCompiler.EvalParsedSourceFiles (istate, inputs) member __.GetInitialInteractiveState () = let tcConfig = TcConfig.Create(tcConfigB,validate=false) let optEnv0 = InitialOptimizationEnv tcImports tcGlobals let emEnv = ILRuntimeWriter.emEnv0 let tcEnv = GetInitialTypecheckerEnv None rangeStdin tcConfig tcImports tcGlobals let ccuName = assemblyName let tcState = TypecheckInitialState (rangeStdin,ccuName,tcConfig,tcGlobals,tcImports,niceNameGen,tcEnv) let ilxGenerator = CreateIlxAssemblyGenerator(tcConfig,tcImports,tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), tcState.Ccu ) {optEnv = optEnv0; emEnv = emEnv; tcGlobals = tcGlobals; tcState = tcState; ilxGenerator = ilxGenerator; timing = false; } type internal FsiIntellisenseProvider(tcGlobals, tcImports: TcImports) = let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 //---------------------------------------------------------------------------- // FsiIntellisense - v1 - identifier completion - namedItemInEnvL //---------------------------------------------------------------------------- member __.CompletionsForPartialLID istate (prefix:string) = let lid,stem = if prefix.IndexOf(".",StringComparison.Ordinal) >= 0 then let parts = prefix.Split(Array.ofList ['.']) let n = parts.Length Array.sub parts 0 (n-1) |> Array.toList,parts.[n-1] else [],prefix let tcState = istate.tcState (* folded through now? *) let amap = tcImports.GetImportMap() let infoReader = new Infos.InfoReader(tcGlobals,amap) let ncenv = new Nameres.NameResolver(tcGlobals,amap,infoReader,Nameres.FakeInstantiationGenerator) // Note: for the accessor domain we should use (AccessRightsOfEnv tcState.TcEnvFromImpls) let ad = Infos.AccessibleFromSomeFSharpCode let nItems = Nameres.ResolvePartialLongIdent ncenv tcState.TcEnvFromImpls.NameEnv (ConstraintSolver.IsApplicableMethApprox tcGlobals amap rangeStdin) rangeStdin ad lid false let names = nItems |> List.map (Nameres.DisplayNameOfItem tcGlobals) let names = names |> List.filter (fun (name:string) -> name.StartsWith(stem,StringComparison.Ordinal)) names #if FSI_SERVER_INTELLISENSE //---------------------------------------------------------------------------- // FsiIntellisense (posible feature for v2) - GetDeclarations //---------------------------------------------------------------------------- member __.FsiGetDeclarations istate (text:string) (names:string[]) = try let tcConfig = TcConfig.Create(tcConfigB,validate=false) Microsoft.FSharp.Compiler.SourceCodeServices.FsiIntelisense.getDeclarations (tcConfig, tcGlobals, tcImports, istate.tcState) text names with e -> System.Windows.Forms.MessageBox.Show("FsiGetDeclarations: throws:\n" ^ e.ToString()) |> ignore; [| |] #endif //---------------------------------------------------------------------------- // ctrl-c handling //---------------------------------------------------------------------------- module internal NativeMethods = type ControlEventHandler = delegate of int -> bool [] extern bool SetConsoleCtrlHandler(ControlEventHandler _callback,bool _add) // One strange case: when a TAE happens a strange thing // occurs the next read from stdin always returns // 0 bytes, i.e. the channel will look as if it has been closed. So we check // for this condition explicitly. We also recreate the lexbuf whenever CtrlC kicks. type internal FsiInterruptStdinState = | StdinEOFPermittedBecauseCtrlCRecentlyPressed | StdinNormal type internal FsiInterruptControllerState = | InterruptCanRaiseException | InterruptIgnored type internal FsiInterruptControllerKillerThreadRequest = | ThreadAbortRequest | NoRequest | ExitRequest | PrintInterruptRequest type internal FsiInterruptController(fsiOptions : FsiCommandLineOptions, fsiConsoleOutput: FsiConsoleOutput) = let mutable stdinInterruptState = StdinNormal let CTRL_C = 0 let mutable interruptAllowed = InterruptIgnored let mutable killThreadRequest = NoRequest let mutable ctrlEventHandlers = [] : NativeMethods.ControlEventHandler list let mutable ctrlEventActions = [] : (unit -> unit) list let mutable posixReinstate = (fun () -> ()) member __.FsiInterruptStdinState with get () = stdinInterruptState and set v = stdinInterruptState <- v member __.InterruptRequest with set req = killThreadRequest <- req member __.InterruptAllowed with get () = interruptAllowed and set v = interruptAllowed <- v member __.Interrupt() = ctrlEventActions |> List.iter (fun act -> act()) member __.EventHandlers = ctrlEventHandlers // REVIEW: streamline all this code to use the same code on Windows and Posix. member controller.InstallKillThread(threadToKill:Thread, pauseMilliseconds:int) = #if SILVERLIGHT let action() = Microsoft.FSharp.Silverlight.InterruptThread(threadToKill.ManagedThreadId) ctrlEventActions <- action :: ctrlEventActions; #else if !progress then fprintfn fsiConsoleOutput.Out "installing CtrlC handler"; // WINDOWS TECHNIQUE: .NET has more safe points, and you can do more when a safe point. // Hence we actually start up the killer thread within the handler. try let raiseCtrlC() = SetCurrentUICultureForThread fsiOptions.FsiLCID fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiInterrupt()); stdinInterruptState <- StdinEOFPermittedBecauseCtrlCRecentlyPressed; if (interruptAllowed = InterruptCanRaiseException) then killThreadRequest <- ThreadAbortRequest; let killerThread = new Thread(new ThreadStart(fun () -> SetCurrentUICultureForThread fsiOptions.FsiLCID // sleep long enough to allow ControlEventHandler handler on main thread to return // Also sleep to give computations a bit of time to terminate Thread.Sleep(pauseMilliseconds); if (killThreadRequest = ThreadAbortRequest) then if !progress then fsiConsoleOutput.uprintnfn "%s" (FSIstrings.SR.fsiAbortingMainThread()); killThreadRequest <- NoRequest; threadToKill.Abort(); ()),Name="ControlCAbortThread") killerThread.IsBackground <- true; killerThread.Start() let ctrlEventHandler = new NativeMethods.ControlEventHandler(fun i -> if i = CTRL_C then (raiseCtrlC(); true) else false ) ctrlEventHandlers <- ctrlEventHandler :: ctrlEventHandlers; ctrlEventActions <- raiseCtrlC :: ctrlEventActions; let _resultOK = NativeMethods.SetConsoleCtrlHandler(ctrlEventHandler,true) false // don't exit via kill thread with e -> if !progress then fprintfn fsiConsoleOutput.Error "Failed to install ctrl-c handler using Windows technique - trying to install one using Unix signal handling..."; // UNIX TECHNIQUE: We start up a killer thread, and it watches the mutable reference location. // We can't have a dependency on Mono DLLs (indeed we don't even have them!) // So SOFT BIND the following code: // Mono.Unix.Native.Stdlib.signal(Mono.Unix.Native.Signum.SIGINT,new Mono.Unix.Native.SignalHandler(fun n -> PosixSignalProcessor.PosixInvoke(n))) |> ignore; match (try Choice1Of2(Assembly.Load("Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756")) with e -> Choice2Of2 e) with | Choice1Of2(monoPosix) -> try if !progress then fprintfn fsiConsoleOutput.Error "loading type Mono.Unix.Native.Stdlib..."; let monoUnixStdlib = monoPosix.GetType("Mono.Unix.Native.Stdlib") if !progress then fprintfn fsiConsoleOutput.Error "loading type Mono.Unix.Native.SignalHandler..."; let monoUnixSignalHandler = monoPosix.GetType("Mono.Unix.Native.SignalHandler") if !progress then fprintfn fsiConsoleOutput.Error "creating delegate..."; controller.PosixInvoke(-1); let monoHandler = System.Delegate.CreateDelegate(monoUnixSignalHandler,controller,"PosixInvoke") if !progress then fprintfn fsiConsoleOutput.Error "registering signal handler..."; let monoSignalNumber = System.Enum.Parse(monoPosix.GetType("Mono.Unix.Native.Signum"),"SIGINT") let register () = Utilities.callStaticMethod monoUnixStdlib "signal" [ monoSignalNumber; box monoHandler ] |> ignore posixReinstate <- register; register(); let killerThread = new Thread(new ThreadStart(fun () -> SetCurrentUICultureForThread fsiOptions.FsiLCID while true do //fprintf fsiConsoleOutput.Error "\n- kill thread loop...\n"; errorWriter.Flush(); Thread.Sleep(pauseMilliseconds*2); match killThreadRequest with | PrintInterruptRequest -> fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiInterrupt()); fsiConsoleOutput.Error.Flush(); killThreadRequest <- NoRequest; | ThreadAbortRequest -> fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiInterrupt()); fsiConsoleOutput.Error.Flush(); if !progress then fsiConsoleOutput.uprintnfn "%s" (FSIstrings.SR.fsiAbortingMainThread()); killThreadRequest <- NoRequest; threadToKill.Abort() | ExitRequest -> // Mono has some wierd behaviour where it blocks on exit // once CtrlC has ever been pressed. Who knows why? Perhaps something // to do with having a signal handler installed, but it only happens _after_ // at least one CtrLC has been pressed. Maybe raising a ThreadAbort causes // exiting to have problems. // // Anyway, we make "#q" work this case by setting ExitRequest and brutally calling // the process-wide 'exit' fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiExit()); fsiConsoleOutput.Error.Flush(); Utilities.callStaticMethod monoUnixStdlib "exit" [ box 0 ] |> ignore | _ -> () done),Name="ControlCAbortAlternativeThread") killerThread.IsBackground <- true; killerThread.Start(); true // exit via kill thread to workaround block-on-exit bugs with Mono once a CtrlC has been pressed with e -> fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiCouldNotInstallCtrlCHandler(e.Message)) false | Choice2Of2 e -> fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiCouldNotInstallCtrlCHandler(e.Message)) false member x.PosixInvoke(n:int) = // we run this code once with n = -1 to make sure it is JITted before execution begins // since we are not allowed to JIT a signal handler. THis also ensures the "PosixInvoke" // method is not eliminated by dead-code elimination if n >= 0 then posixReinstate(); stdinInterruptState <- StdinEOFPermittedBecauseCtrlCRecentlyPressed; killThreadRequest <- if (interruptAllowed = InterruptCanRaiseException) then ThreadAbortRequest else PrintInterruptRequest #endif //---------------------------------------------------------------------------- // assembly finder //---------------------------------------------------------------------------- #nowarn "40" // From http://msdn.microsoft.com/en-us/library/ff527268.aspx // What the Event Handler Does // // The handler for the AssemblyResolve event receives the display name of the assembly to // be loaded, in the ResolveEventArgs.Name property. If the handler does not recognize the // assembly name, it returns null (Nothing in Visual Basic, nullptr in Visual C++). // // - If the handler recognizes the assembly name, it can load and return an assembly that // satisfies the request. The following list describes some sample scenarios. // // - If the handler knows the location of a version of the assembly, it can load the assembly by // using the Assembly.LoadFrom or Assembly.LoadFile method, and can return the loaded assembly if successful. // // - If the handler has access to a database of assemblies stored as byte arrays, it can load a byte array by // using one of the Assembly.Load method overloads that take a byte array. // // - The handler can generate a dynamic assembly and return it. // // It is the responsibility of the event handler to return a suitable assembly. The handler can parse the display // name of the requested assembly by passing the ResolveEventArgs.Name property value to the AssemblyName(String) // constructor. Beginning with the .NET Framework version 4, the handler can use the ResolveEventArgs.RequestingAssembly // property to determine whether the current request is a dependency of another assembly. This information can help // identify an assembly that will satisfy the dependency. // // The event handler can return a different version of the assembly than the version that was requested. // // In most cases, the assembly that is returned by the handler appears in the load context, regardless of the context // the handler loads it into. For example, if the handler uses the Assembly.LoadFrom method to load an assembly into // the load-from context, the assembly appears in the load context when the handler returns it. However, in the following // case the assembly appears without context when the handler returns it: // // - The handler loads an assembly without context. // - The ResolveEventArgs.RequestingAssembly property is not null. // - The requesting assembly (that is, the assembly that is returned by the ResolveEventArgs.RequestingAssembly property) // was loaded without context. // // For information about contexts, see the Assembly.LoadFrom(String) method overload. module internal MagicAssemblyResolution = // FxCop identifies Assembly.LoadFrom. [] let private assemblyLoadFrom (path:string) = #if SILVERLIGHT FileSystem.AssemblyLoadFrom(path) #else // See bug 5501 for details on decision to use UnsafeLoadFrom here. // Summary: // It is an explicit user trust decision to load an assembly with #r. Scripts are not run automatically (for example, by double-clicking in explorer). // We considered setting loadFromRemoteSources in fsi.exe.config but this would transitively confer unsafe loading to the code in the referenced // assemblies. Better to let those assemblies decide for themselves which is safer. #if FX_ATLEAST_40 Assembly.UnsafeLoadFrom(path) #else Assembly.LoadFrom(path) #endif #endif // SILVERLIGHT let ResolveAssembly(m,tcConfigB, tcImports: TcImports, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsoleOutput: FsiConsoleOutput, fullAssemName:string) = try // Grab the name of the assembly let tcConfig = TcConfig.Create(tcConfigB,validate=false) let simpleAssemName = fullAssemName.Split([| ',' |]).[0] if !progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON ASSEMBLY, simpleAssemName = %s" simpleAssemName; // "Attempting to load a dynamically required assembly in response to an AssemblyResolve event by using known static assembly references..." // Special case: Mono Windows Forms attempts to load an assembly called something like "Windows.Forms.resources" // We can't resolve this, so don't try. // REVIEW: Suggest 4481, delete this special case. if simpleAssemName.EndsWith(".resources",StringComparison.OrdinalIgnoreCase) || // See F# 1.0 Product Studio bug 1171 simpleAssemName.EndsWith(".XmlSerializers",StringComparison.OrdinalIgnoreCase) || (runningOnMono && simpleAssemName = "UIAutomationWinforms") then null else // Special case: Is this the global unique dynamic assembly for FSI code? In this case just // return the dynamic assembly itself. if fsiDynamicCompiler.DynamicAssemblyName = simpleAssemName then fsiDynamicCompiler.DynamicAssembly else // Otherwise continue let assemblyReferenceTextDll = (simpleAssemName + ".dll") let assemblyReferenceTextExe = (simpleAssemName + ".exe") let overallSearchResult = // OK, try to resolve as a .dll let searchResult = tcImports.TryResolveAssemblyReference (AssemblyReference(m,assemblyReferenceTextDll),ResolveAssemblyReferenceMode.Speculative) match searchResult with | OkResult (warns,[r]) -> OkResult (warns, Choice1Of2 r.resolvedPath) | _ -> // OK, try to resolve as a .exe let searchResult = tcImports.TryResolveAssemblyReference (AssemblyReference(m,assemblyReferenceTextExe),ResolveAssemblyReferenceMode.Speculative) match searchResult with | OkResult (warns, [r]) -> OkResult (warns, Choice1Of2 r.resolvedPath) | _ -> if !progress then fsiConsoleOutput.uprintfn "ATTEMPT LOAD, assemblyReferenceTextDll = %s" assemblyReferenceTextDll; /// Take a look through the files quoted, perhaps with explicit paths let searchResult = (tcConfig.referencedDLLs |> List.tryPick (fun assemblyReference -> if !progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON FILE, referencedDLL = %s" assemblyReference.Text; if System.String.Compare(Filename.fileNameOfPath assemblyReference.Text, assemblyReferenceTextDll,StringComparison.OrdinalIgnoreCase) = 0 || System.String.Compare(Filename.fileNameOfPath assemblyReference.Text, assemblyReferenceTextExe,StringComparison.OrdinalIgnoreCase) = 0 then Some(tcImports.TryResolveAssemblyReference(assemblyReference,ResolveAssemblyReferenceMode.Speculative)) else None )) match searchResult with | Some (OkResult (warns,[r])) -> OkResult (warns, Choice1Of2 r.resolvedPath) | _ -> #if EXTENSIONTYPING match tcImports.TryFindProviderGeneratedAssemblyByName(simpleAssemName) with | Some(assembly) -> OkResult([],Choice2Of2 assembly) | None -> #endif // Try to find the reference without an extension match tcImports.TryFindExistingFullyQualifiedPathFromAssemblyRef(ILAssemblyRef.Create(simpleAssemName,None,None,false,None,None)) with | Some(resolvedPath) -> OkResult([],Choice1Of2 resolvedPath) | None -> ErrorResult([],Failure (FSIstrings.SR.fsiFailedToResolveAssembly(simpleAssemName))) match overallSearchResult with | ErrorResult _ -> null | OkResult _ -> let res = CommitOperationResult overallSearchResult match res with | Choice1Of2 assemblyName -> if simpleAssemName <> "Mono.Posix" then fsiConsoleOutput.uprintfn "%s" (FSIstrings.SR.fsiBindingSessionTo(assemblyName)); assemblyLoadFrom assemblyName | Choice2Of2 assembly -> assembly with e -> stopProcessingRecovery e range0; null #if SILVERLIGHT let Install(_tcConfigB, _tcImports: TcImports, _fsiDynamicCompiler: FsiDynamicCompiler, _fsiConsoleOutput: FsiConsoleOutput) = () // // Look through the already loaded assemblies by hand. For some reason Assembly.Load // // doesn't find dynamically generated assemblies in Silverlight // System.AppDomain.CurrentDomain.add_AssemblyResolve(new System.ResolveEventHandler(fun _ args -> // System.AppDomain.CurrentDomain.GetAssemblies() // |> Array.tryFind (fun x -> printfn "args.Name = '%s', x.FullName = '%d'"; args.Name = x.FullName) // |> function None -> null | Some a -> a)) #else let Install(tcConfigB, tcImports: TcImports, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsoleOutput: FsiConsoleOutput) = let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 AppDomain.CurrentDomain.add_AssemblyResolve(new ResolveEventHandler(fun _ args -> ResolveAssembly (rangeStdin, tcConfigB, tcImports, fsiDynamicCompiler, fsiConsoleOutput, args.Name))) #endif // SILVERLIGHT //---------------------------------------------------------------------------- // Reading stdin //---------------------------------------------------------------------------- type internal FsiStdinLexerProvider(tcConfigB, fsiStdinSyphon, fsiConsoleInput : FsiConsoleInput, fsiConsoleOutput : FsiConsoleOutput, fsiOptions : FsiCommandLineOptions, lexResourceManager : LexResourceManager, errorLogger) = // #light is the default for FSI let interactiveInputLightSyntaxStatus = let initialLightSyntaxStatus = tcConfigB.light <> Some false LightSyntaxStatus (initialLightSyntaxStatus, false (* no warnings *)) let LexbufFromLineReader (fsiStdinSyphon: FsiStdinSyphon) readf = UnicodeLexing.FunctionAsLexbuf (fun (buf: char[], start, len) -> if !progress then printfn "calling readf..." //fprintf fsiConsoleOutput.Out "Calling ReadLine\n"; let inputOption = try Some(readf()) with :? EndOfStreamException -> None inputOption |> Option.iter (fun t -> fsiStdinSyphon.Add (t + "\n")); match inputOption with | Some(null) | None -> if !progress then fprintfn fsiConsoleOutput.Out "End of file from TextReader.ReadLine"; 0 | Some (input:string) -> let input = input + "\n" let ninput = input.Length if ninput > len then fprintf fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiLineTooLong()); let ntrimmed = min len ninput for i = 0 to ntrimmed-1 do buf.[i+start] <- input.[i] ntrimmed ) //---------------------------------------------------------------------------- // Reading stdin as a lex stream //---------------------------------------------------------------------------- let removeZeroCharsFromString (str:string) = (* bug://4466 *) if str<>null && str.Contains("\000") then System.String(str |> Seq.filter (fun c -> c<>'\000') |> Seq.toArray) else str let CreateLexerForLexBuffer (sourceFileName, lexbuf) = Lexhelp.resetLexbufPos sourceFileName lexbuf; let skip = true // don't report whitespace from lexer let defines = "INTERACTIVE"::tcConfigB.conditionalCompilationDefines let lexargs = mkLexargs (sourceFileName,defines, interactiveInputLightSyntaxStatus, lexResourceManager, ref [], errorLogger) let tokenizer = Lexfilter.LexFilter(interactiveInputLightSyntaxStatus, tcConfigB.compilingFslib, Lexer.token lexargs skip, lexbuf) tokenizer // Create a new lexer to read stdin member __.CreateStdinLexer () = let lexbuf = #if SILVERLIGHT LexbufFromLineReader fsiStdinSyphon (fun () -> fsiConsoleInput.In.ReadLine() |> removeZeroCharsFromString) #else match fsiConsoleInput.TryGetConsole() with | Some console when fsiOptions.EnableConsoleKeyProcessing && not fsiOptions.IsInteractiveServer -> LexbufFromLineReader fsiStdinSyphon (fun () -> match fsiConsoleInput.TryGetFirstLine() with | Some firstLine -> firstLine | None -> if !progress then printfn "have console... calling ReadLine..." console.ReadLine()) | _ -> LexbufFromLineReader fsiStdinSyphon (fun () -> if !progress then printfn "no console... calling ReadLine..." fsiConsoleInput.In.ReadLine() |> removeZeroCharsFromString) #endif fsiStdinSyphon.Reset(); CreateLexerForLexBuffer (Lexhelp.stdinMockFilename, lexbuf) // Create a new lexer to read an "included" script file member __.CreateIncludedScriptLexer sourceFileName = let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(sourceFileName,tcConfigB.inputCodePage,(*retryLocked*)false) CreateLexerForLexBuffer (sourceFileName, lexbuf) //---------------------------------------------------------------------------- // Process one parsed interaction. This runs on the GUI thread. // It might be simpler if it ran on the parser thread. //---------------------------------------------------------------------------- type internal FsiInteractionStepStatus = | CtrlC | EndOfFile | Completed | CompletedWithReportedError type internal FsiInteractionProcessor (tcConfigB, errorLogger : ErrorLoggerThatStopsOnFirstError, fsiOptions: FsiCommandLineOptions, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsolePrompt : FsiConsolePrompt, fsiConsoleOutput : FsiConsoleOutput, fsiInterruptController : FsiInterruptController, fsiStdinLexerProvider : FsiStdinLexerProvider, lexResourceManager : LexResourceManager) = let InteractiveCatch f istate = try // reset error count errorLogger.ResetErrorCount(); f istate with e -> stopProcessingRecovery e range0; istate,CompletedWithReportedError let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 let ChangeDirectory (path:string) m = let tcConfig = TcConfig.Create(tcConfigB,validate=false) let path = tcConfig.MakePathAbsolute path if Directory.Exists(path) then tcConfigB.implicitIncludeDir <- path else error(Error(FSIstrings.SR.fsiDirectoryDoesNotExist(path),m)) /// Parse one interaction. Called on the parser thread. let ParseInteraction (tokenizer:Lexfilter.LexFilter) = let lastToken = ref Parser.ELSE // Any token besides SEMICOLON_SEMICOLON will do for initial value try if !progress then fprintfn fsiConsoleOutput.Out "In ParseInteraction..."; let input = Lexhelp.reusingLexbufForParsing tokenizer.LexBuffer (fun () -> let lexerWhichSavesLastToken lexbuf = let tok = tokenizer.Lexer lexbuf lastToken := tok tok Parser.interaction lexerWhichSavesLastToken tokenizer.LexBuffer) Some input with e -> if !progress then fprintfn fsiConsoleOutput.Out "Error in ParseInteraction: %s" (e.ToString()) // On error, consume tokens until to ;; or EOF. // Caveat: Unless the error parse ended on ;; - so check the lastToken returned by the lexer function. // Caveat: What if this was a look-ahead? That's fine! Since we need to skip to the ;; anyway. if (match !lastToken with Parser.SEMICOLON_SEMICOLON -> false | _ -> true) then let mutable tok = Parser.ELSE (* <-- any token <> SEMICOLON_SEMICOLON will do *) while (match tok with Parser.SEMICOLON_SEMICOLON -> false | _ -> true) && not tokenizer.LexBuffer.IsPastEndOfStream do tok <- tokenizer.Lexer tokenizer.LexBuffer stopProcessingRecovery e range0; None /// Execute a single parsed interaction. Called on the GUI/execute/main thread. let ExecInteraction (exitViaKillThread:bool, tcConfig:TcConfig, istate, action:ParsedFsiInteraction) = istate |> InteractiveCatch (fun istate -> match action with | IDefns ([ ],_) -> istate,Completed | IDefns ([ SynModuleDecl.DoExpr(_,expr,_)],_) -> fsiDynamicCompiler.EvalParsedExpression (istate, expr), Completed | IDefns (defs,_) -> fsiDynamicCompiler.EvalParsedDefinitions (istate, true, false, defs), Completed | IHash (ParsedHashDirective("load",sourceFiles,m),_) -> fsiDynamicCompiler.EvalSourceFiles (istate, m, sourceFiles, lexResourceManager),Completed | IHash (ParsedHashDirective(("reference" | "r"),[path],m),_) -> let resolutions,istate = fsiDynamicCompiler.EvalRequireReference istate m path resolutions |> List.iter (fun ar -> fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiDidAHashr(ar.resolvedPath))) istate,Completed | IHash (ParsedHashDirective("I",[path],m),_) -> tcConfigB.AddIncludePath (m,path, tcConfig.implicitIncludeDir) fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiDidAHashI(tcConfig.MakePathAbsolute path)); istate,Completed | IHash (ParsedHashDirective("cd",[path],m),_) -> ChangeDirectory path m; istate,Completed | IHash (ParsedHashDirective("silentCd",[path],m),_) -> ChangeDirectory path m; fsiConsolePrompt.SkipNext(); (* "silent" directive *) istate,Completed | IHash (ParsedHashDirective("time",[],_),_) -> if istate.timing then fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOff()) else fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOn()) {istate with timing = not istate.timing},Completed | IHash (ParsedHashDirective("time",[("on" | "off") as v],_),_) -> if v <> "on" then fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOff()) else fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOn()) {istate with timing = (v = "on")},Completed | IHash (ParsedHashDirective("nowarn",numbers,m),_) -> List.iter (fun (d:string) -> tcConfigB.TurnWarningOff(m,d)) numbers; istate,Completed | IHash (ParsedHashDirective("terms",[],_),_) -> tcConfigB.showTerms <- not tcConfig.showTerms; istate,Completed | IHash (ParsedHashDirective("types",[],_),_) -> fsiOptions.ShowTypes <- not fsiOptions.ShowTypes; istate,Completed #if DEBUG | IHash (ParsedHashDirective("ilcode",[],_m),_) -> fsiOptions.ShowILCode <- not fsiOptions.ShowILCode; istate,Completed | IHash (ParsedHashDirective("info",[],_m),_) -> PrintOptionInfo tcConfigB istate,Completed #endif #if SILVERLIGHT #else | IHash (ParsedHashDirective(("q" | "quit"),[],_),_) -> if exitViaKillThread then fsiInterruptController.InterruptRequest <- ExitRequest; Thread.Sleep(1000) exit 0; #endif | IHash (ParsedHashDirective("help",[],_),_) -> fsiOptions.ShowHelp(); istate,Completed | IHash (ParsedHashDirective(c,arg,_),_) -> fsiConsoleOutput.uprintfn "%s" (FSIstrings.SR.fsiInvalidDirective(c, String.concat " " arg)); // REVIEW: uprintnfnn - like other directives above istate,Completed (* REVIEW: cont = CompletedWithReportedError *) ) /// Execute a single parsed interaction which may contain multiple items to be executed /// independently, because some are #directives. Called on the GUI/execute/main thread. /// /// #directive comes through with other definitions as a SynModuleDecl.HashDirective. /// We split these out for individual processing. let rec ExecInteractions (exitViaKillThread, tcConfig, istate, action:ParsedFsiInteraction option) = let action,nextAction = match action with | None -> None ,None | Some (IHash _) -> action,None | Some (IDefns ([],_)) -> None ,None | Some (IDefns (SynModuleDecl.HashDirective(hash,mh)::defs,m)) -> Some (IHash(hash,mh)),Some (IDefns(defs,m)) | Some (IDefns (defs,m)) -> let isDefHash = function SynModuleDecl.HashDirective(_,_) -> true | _ -> false let defsA = Seq.takeWhile (isDefHash >> not) defs |> Seq.toList let defsB = Seq.skipWhile (isDefHash >> not) defs |> Seq.toList // When the last declaration has a shape of DoExp (i.e., non-binding), // transform it to a shape of "let it = ", so we can refer it. let defsA = if defsA.Length <= 1 || defsB.Length > 0 then defsA else match List.headAndTail (List.rev defsA) with | SynModuleDecl.DoExpr(_,exp,_), rest -> (rest |> List.rev) @ (fsiDynamicCompiler.BuildItBinding exp) | _ -> defsA Some (IDefns(defsA,m)),Some (IDefns(defsB,m)) match action with | None -> assert(nextAction.IsNone); istate,Completed | Some action -> let istate,cont = ExecInteraction (exitViaKillThread, tcConfig, istate, action) match cont with | Completed -> ExecInteractions (exitViaKillThread, tcConfig, istate, nextAction) | CompletedWithReportedError -> istate,CompletedWithReportedError (* drop nextAction on error *) | EndOfFile -> istate,Completed (* drop nextAction on EOF *) | CtrlC -> istate,CtrlC (* drop nextAction on CtrlC *) /// Execute a single parsed interaction on the parser/execute thread. let MainThreadProcessParsedInteraction (exitViaKillThread, action, istate) = try let tcConfig = TcConfig.Create(tcConfigB,validate=false) #if SILVERLIGHT Microsoft.FSharp.Silverlight.ResumeThread(Threading.Thread.CurrentThread.ManagedThreadId) ExecInteractions (exitViaKillThread, tcConfig, istate, action) with | :? ThreadAbortException -> (istate,CtrlC) | e -> stopProcessingRecovery e range0; istate,CompletedWithReportedError #else if !progress then fprintfn fsiConsoleOutput.Out "In MainThreadProcessParsedInteraction..."; fsiInterruptController.InterruptAllowed <- InterruptCanRaiseException; let res = ExecInteractions (exitViaKillThread, tcConfig, istate, action) fsiInterruptController.InterruptRequest <- NoRequest; fsiInterruptController.InterruptAllowed <- InterruptIgnored; res with | :? ThreadAbortException -> fsiInterruptController.InterruptRequest <- NoRequest; fsiInterruptController.InterruptAllowed <- InterruptIgnored; (try Thread.ResetAbort() with _ -> ()); (istate,CtrlC) | e -> fsiInterruptController.InterruptRequest <- NoRequest; fsiInterruptController.InterruptAllowed <- InterruptIgnored; stopProcessingRecovery e range0; istate,CompletedWithReportedError #endif /// Parse then process one parsed interaction. /// /// During normal execution, this initially runs on the parser /// thread, then calls runCodeOnMainThread when it has completed /// parsing and needs to typecheck and execute a definition. This blocks the parser thread /// until execution has competed on the GUI thread. /// /// During processing of startup scripts, this runs on the main thread. member __.ParseAndProcessAndEvalOneInteractionFromLexbuf (exitViaKillThread, runCodeOnMainThread, istate:FsiDynamicCompilerState, tokenizer:Lexfilter.LexFilter) = if tokenizer.LexBuffer.IsPastEndOfStream then let stepStatus = #if SILVERLIGHT #else if fsiInterruptController.FsiInterruptStdinState = StdinEOFPermittedBecauseCtrlCRecentlyPressed then fsiInterruptController.FsiInterruptStdinState <- StdinNormal; CtrlC else #endif EndOfFile istate,stepStatus else fsiConsolePrompt.Print(); istate |> InteractiveCatch (fun istate -> if !progress then fprintfn fsiConsoleOutput.Out "entering ParseInteraction..."; // Parse the interaction. When FSI.EXE is waiting for input from the console the // parser thread is blocked somewhere deep this call. let action = ParseInteraction tokenizer if !progress then fprintfn fsiConsoleOutput.Out "returned from ParseInteraction...calling runCodeOnMainThread..."; // After we've unblocked and got something to run we switch // over to the run-thread (e.g. the GUI thread) let res = istate |> runCodeOnMainThread (fun istate -> MainThreadProcessParsedInteraction (exitViaKillThread, action, istate)) if !progress then fprintfn fsiConsoleOutput.Out "Just called runCodeOnMainThread, res = %O..." res; res) /// Perform an "include" on a script file (i.e. a script file specified on the command line) member processor.EvalIncludedScript (exitViaKillThread, istate, sourceFile, m) = let tcConfig = TcConfig.Create(tcConfigB, validate=false) // Resolve the filename to an absolute filename let sourceFile = tcConfig.ResolveSourceFile(m,sourceFile,tcConfig.implicitIncludeDir) // During the processing of the file, further filenames are // resolved relative to the home directory of the loaded file. WithImplicitHome (tcConfigB, directoryName sourceFile) (fun () -> // An included script file may contain maybe several interaction blocks. // We repeatedly parse and process these, until an error occurs. let tokenizer = fsiStdinLexerProvider.CreateIncludedScriptLexer sourceFile let rec run istate = let istate,cont = processor.ParseAndProcessAndEvalOneInteractionFromLexbuf (exitViaKillThread, (fun f istate -> f istate), istate, tokenizer) if cont = Completed then run istate else istate,cont let istate,cont = run istate match cont with | Completed -> failwith "EvalIncludedScript: Completed expected to have relooped" | CompletedWithReportedError -> istate,CompletedWithReportedError | EndOfFile -> istate,Completed // here file-EOF is normal, continue required | CtrlC -> istate,CtrlC ) /// Load the source files, one by one. Called on the main thread. member processor.EvalIncludedScripts (istate, exitViaKillThread, sourceFiles) = match sourceFiles with | [] -> istate | sourceFile :: moreSourceFiles -> // Catch errors on a per-file basis, so results/bindings from pre-error files can be kept. let istate,cont = InteractiveCatch (fun istate -> processor.EvalIncludedScript (exitViaKillThread, istate, sourceFile, rangeStdin)) istate match cont with | Completed -> processor.EvalIncludedScripts (istate, exitViaKillThread, moreSourceFiles) | CompletedWithReportedError -> istate // do not process any more files | CtrlC -> istate // do not process any more files | EndOfFile -> assert false; istate // This is unexpected. EndOfFile is replaced by Completed in the called function member processor.LoadInitialFiles (exitViaKillThread, istate) = /// Consume initial source files in chunks of scripts or non-scripts let rec consume istate sourceFiles = match sourceFiles with | [] -> istate | (_,isScript1) :: _ -> let sourceFiles,rest = List.takeUntil (fun (_,isScript2) -> isScript1 <> isScript2) sourceFiles let sourceFiles = List.map fst sourceFiles let istate = if isScript1 then processor.EvalIncludedScripts (istate, exitViaKillThread, sourceFiles) else istate |> InteractiveCatch (fun istate -> fsiDynamicCompiler.EvalSourceFiles(istate, rangeStdin, sourceFiles, lexResourceManager), Completed) |> fst consume istate rest let istate = consume istate fsiOptions.SourceFiles if nonNil fsiOptions.SourceFiles then fsiConsolePrompt.PrintAhead(); // Seems required. I expected this could be deleted. Why not? istate /// Send a dummy interaction through F# Interactive, to ensure all the most common code generation paths are /// JIT'ed and ready for use. member processor.LoadDummyInteraction istate = istate |> InteractiveCatch (fun istate -> fsiDynamicCompiler.EvalParsedDefinitions (istate, true, false, []), Completed) |> fst member processor.FsiOptions = fsiOptions //---------------------------------------------------------------------------- // GUI runCodeOnMainThread //---------------------------------------------------------------------------- //type InteractionStateConverter = delegate of FsiDynamicCompilerState -> FsiDynamicCompilerState * stepStatus #if SILVERLIGHT #else ///Use a dummy to access protected member type internal DummyForm() = inherit Form() member x.DoCreateHandle() = x.CreateHandle() /// Creating the dummy form object can crash on Mono Mac, and then prints a nasty background /// error during finalization of the half-initialized object... override x.Finalize() = () /// This is the event loop implementation for winforms type internal WinFormsEventLoop(fsiConsoleOutput: FsiConsoleOutput, lcid : int option) = let mainForm = new DummyForm() do mainForm.DoCreateHandle(); // Set the default thread exception handler let restart = ref false interface Microsoft.FSharp.Compiler.Interactive.IEventLoop with member x.Run() = restart := false; if !progress then fprintfn fsiConsoleOutput.Out "MAIN: Calling Application.Run..."; Application.Run() if !progress then fprintfn fsiConsoleOutput.Out "MAIN: Returned from Application.Run..."; !restart member x.Invoke (f: unit -> 'T) : 'T = if !progress then fprintfn fsiConsoleOutput.Out "RunCodeOnWinFormsMainThread: entry..."; if not mainForm.InvokeRequired then f() else // Workaround: Mono's Control.Invoke returns a null result. Hence avoid the problem by // transferring the resulting state using a mutable location. let mainFormInvokeResultHolder = ref None // Actually, Mono's Control.Invoke isn't even blocking (or wasn't on 1.1.15)! So use a signal to indicate completion. // Indeed, we should probably do this anyway with a timeout so we can report progress from // the GUI thread. use doneSignal = new AutoResetEvent(false) if !progress then fprintfn fsiConsoleOutput.Out "RunCodeOnWinFormsMainThread: invoking..."; // BLOCKING: This blocks the stdin-reader thread until the // form invocation has completed. NOTE: does not block on Mono, or did not on 1.1.15 mainForm.Invoke(new MethodInvoker(fun () -> try // When we get called back, someone may jack our culture // So we must reset our UI culture every time SetCurrentUICultureForThread lcid; mainFormInvokeResultHolder := Some(f ()); finally doneSignal.Set() |> ignore)) |> ignore; if !progress then fprintfn fsiConsoleOutput.Out "RunCodeOnWinFormsMainThread: Waiting for completion signal...."; while not (doneSignal.WaitOne(new TimeSpan(0,0,1),true)) do if !progress then fprintf fsiConsoleOutput.Out "."; fsiConsoleOutput.Out.Flush() if !progress then fprintfn fsiConsoleOutput.Out "RunCodeOnWinFormsMainThread: Got completion signal, res = %b" (Option.isSome !mainFormInvokeResultHolder); !mainFormInvokeResultHolder |> Option.get member x.ScheduleRestart() = restart := true; Application.Exit() let internal TrySetUnhandledExceptionMode() = let i = ref 0 // stop inlining try Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) incr i;incr i;incr i;incr i;incr i;incr i; with _ -> decr i;decr i;decr i;decr i;() #endif // SILVERLIGHT //---------------------------------------------------------------------------- // Server mode: //---------------------------------------------------------------------------- #if SILVERLIGHT #else let internal SpawnThread name f = let th = new Thread(new ThreadStart(f),Name=name) th.IsBackground <- true; th.Start() let internal SpawnInteractiveServer (fsiOptions : FsiCommandLineOptions, fsiConsoleOutput: FsiConsoleOutput, fsiInterruptController : FsiInterruptController) = //printf "Spawning fsi server on channel '%s'" !fsiServerName; SpawnThread "ServerThread" (fun () -> SetCurrentUICultureForThread fsiOptions.FsiLCID try let server = {new Server.Shared.FSharpInteractiveServer() with member this.Interrupt() = //printf "FSI-SERVER: received CTRL-C request...\n"; try fsiInterruptController.Interrupt() with e -> // Final sanity check! - catch all exns - but not expected assert false () #if FSI_SERVER_INTELLISENSE member this.Completions(prefix) = try fsiIntellisenseProvider.CompletionsForPartialLID !istateRef prefix |> List.toArray with e -> // Final sanity check! - catch all exns - but not expected assert false [| |] member this.GetDeclarations(text,names) = try // Stop the type checker running at the same time as the intellisense provider. lock tcLockObject (fun () -> fsiIntellisenseProvider.FsiGetDeclarations !istateRef text names) with e -> // Final sanity check! - catch all exns - but not expected assert false [| |] #endif } Server.Shared.FSharpInteractiveServer.StartServer(fsiOptions.FsiServerName,server) with e -> fprintfn fsiConsoleOutput.Error "%s" (FSIstrings.SR.fsiExceptionRaisedStartingServer(e.ToString()))) #endif // SILVERLIGHT let internal StartStdinReadAndProcessThread (lcid, istateRef, errorLogger, fsiConsoleInput: FsiConsoleInput, fsiConsoleOutput: FsiConsoleOutput, fsiStdinLexerProvider: FsiStdinLexerProvider, fsiInteractionProcessor : FsiInteractionProcessor, exitViaKillThread) = if !progress then fprintfn fsiConsoleOutput.Out "creating stdinReaderThread"; let cont = ref Completed let tokenizerRef = ref (fsiStdinLexerProvider.CreateStdinLexer()) let culture = Thread.CurrentThread.CurrentUICulture let stdinReaderThread = new Thread(new ThreadStart(fun () -> InstallErrorLoggingOnThisThread errorLogger // FSI error logging on stdinReaderThread, e.g. parse errors. SetCurrentUICultureForThread lcid try try if !progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread started..."; // Delay until we've peeked the input or read the entire first line fsiConsoleInput.WaitForInitialConsoleInput() if !progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread got first line..."; // The main stdin loop, running on the stdinReaderThread. // // The function 'ParseAndProcessAndEvalOneInteractionFromLexbuf' is blocking: it reads stdin // until one or more real chunks of input have been received. // // We run the actual computations for each action on the main GUI thread by using // mainForm.Invoke to pipe a message back through the form's main event loop. (The message // is a delegate to execute on the main Thread) // while (!cont = CompletedWithReportedError || !cont = Completed || !cont = CtrlC) do if (!cont = CtrlC) then tokenizerRef := fsiStdinLexerProvider.CreateStdinLexer(); let runCodeOnMainThread f istate = try fsi.EventLoop.Invoke (fun () -> InstallErrorLoggingOnThisThread errorLogger; SetCurrentUICultureForThread lcid; f istate) // FSI error logging on switched to thread with _ -> (istate,Completed) let istateNew,contNew = fsiInteractionProcessor.ParseAndProcessAndEvalOneInteractionFromLexbuf (exitViaKillThread, runCodeOnMainThread, !istateRef, !tokenizerRef) istateRef := istateNew; cont := contNew; if !progress then fprintfn fsiConsoleOutput.Out "READER: cont = %O" !cont; if !progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting stdinReaderThread"; with e -> stopProcessingRecovery e range0; finally // Reset the Culture code Thread.CurrentThread.CurrentCulture <- culture if !progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting process because of failure/exit on stdinReaderThread"; // REVIEW: On some flavors of Mono, calling exit may freeze the process if we're using the WinForms event handler // Basically, on Mono 2.6.3, the GUI thread may be left dangling on exit. At that point: // -- System.Environment.Exit will cause the process to hang // -- Calling Application.Exit() will leave the GUI thread up and running, creating a Zombie process // -- Calling Abort() on the Main thread or the GUI thread will have no effect, and the process will remain hung // Also, even the the GUI thread is up and running, the WinForms event loop will be listed as closed // In this case, killing the process is harmless, since we've already cleaned up after ourselves and FSI is responding // to an error. (CTRL-C is handled elsewhere.) // We'll only do this if we're running on Mono, "--gui" is specified and our input is piped in from stdin, so it's still // fairly constrained. #if SILVERLIGHT #else if runningOnMono && fsiInteractionProcessor.FsiOptions.Gui then System.Environment.ExitCode <- 1 Process.GetCurrentProcess().Kill() else exit 1 #endif ),Name="StdinReaderThread") // stdinReaderThread.IsBackground <- true; if !progress then fprintfn fsiConsoleOutput.Out "MAIN: starting stdin thread..."; stdinReaderThread.Start(); let internal DriveFsiEventLoop (fsiConsoleOutput: FsiConsoleOutput) = let rec runLoop() = if !progress then fprintfn fsiConsoleOutput.Out "GUI thread runLoop"; let restart = try // BLOCKING POINT: The GUI Thread spends most (all) of its time this event loop if !progress then fprintfn fsiConsoleOutput.Out "MAIN: entering event loop..."; fsi.EventLoop.Run() with | :? ThreadAbortException -> // If this TAE handler kicks it's almost certainly too late to save the // state of the process - the state of the message loop may have been corrupted fsiConsoleOutput.uprintnfn "%s" (FSIstrings.SR.fsiUnexpectedThreadAbortException()); #if SILVERLIGHT #else (try Thread.ResetAbort() with _ -> ()); #endif true // Try again, just case we can restart | e -> stopProcessingRecovery e range0; true // Try again, just case we can restart if !progress then fprintfn fsiConsoleOutput.Out "MAIN: exited event loop..."; if restart then runLoop() runLoop(); /// The primary type, representing a full F# Interactive session, reading from the given /// text input, writing to the given text output and error writers. type FsiEvaluationSession (argv:string[], inReader:TextReader, outWriter:TextWriter, errorWriter: TextWriter) = #if SILVERLIGHT do Microsoft.FSharp.Core.Printf.setWriter outWriter Microsoft.FSharp.Core.Printf.setError errorWriter #endif do if not runningOnMono then Lib.UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() (* SDL recommendation *) // See Bug 735819 let lcidFromCodePage = #if SILVERLIGHT #else if (Console.OutputEncoding.CodePage <> 65001) && (Console.OutputEncoding.CodePage <> Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage) && (Console.OutputEncoding.CodePage <> Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage) then Thread.CurrentThread.CurrentUICulture <- new CultureInfo("en-US") Some 1033 else #endif None let timeReporter = FsiTimeReporter(outWriter) //---------------------------------------------------------------------------- // Console coloring //---------------------------------------------------------------------------- // Testing shows "console coloring" is broken on some Mono configurations (e.g. Mono 2.4 Suse LiveCD). // To support fsi usage, the console coloring is switched off by default on Mono. do if runningOnMono then enableConsoleColoring <- false do SetUninitializedErrorLoggerFallback AssertFalseErrorLogger //---------------------------------------------------------------------------- // tcConfig - build the initial config //---------------------------------------------------------------------------- #if SILVERLIGHT let defaultFSharpBinariesDir = "." let currentDirectory = "." #else let defaultFSharpBinariesDir = System.AppDomain.CurrentDomain.BaseDirectory let currentDirectory = Directory.GetCurrentDirectory() #endif let tcConfigB = Build.TcConfigBuilder.CreateNew(defaultFSharpBinariesDir, true, // long running: optimizeForMemory currentDirectory,isInteractive=true, isInvalidationSupported=false) let tcConfigP = TcConfigProvider.BasedOnMutableBuilder(tcConfigB) do tcConfigB.resolutionEnvironment <- MSBuildResolver.RuntimeLike // See Bug 3608 do tcConfigB.useFsiAuxLib <- true // Preset: --optimize+ -g --tailcalls+ (see 4505) do SetOptimizeSwitch tcConfigB On do SetDebugSwitch tcConfigB (Some "pdbonly") On do SetTailcallSwitch tcConfigB On #if SILVERLIGHT #else #if FX_ATLEAST_40 // set platform depending on whether the current process is a 64-bit process. // BUG 429882 : FsiAnyCPU.exe issues warnings (x64 v MSIL) when referencing 64-bit assemblies do tcConfigB.platform <- if System.Environment.Is64BitProcess then Some AMD64 else Some X86 #endif #endif let fsiStdinSyphon = new FsiStdinSyphon(errorWriter) let fsiConsoleOutput = FsiConsoleOutput(tcConfigB, outWriter, errorWriter) let errorLogger = ErrorLoggerThatStopsOnFirstError(tcConfigB, fsiStdinSyphon, fsiConsoleOutput) do InstallErrorLoggingOnThisThread errorLogger // FSI error logging on main thread. let updateBannerText() = tcConfigB.productNameForBannerText <- FSIstrings.SR.fsiProductName(FSharpEnvironment.DotNetBuildString) do updateBannerText() // setting the correct banner so that 'fsi -?' display the right thing let fsiOptions = FsiCommandLineOptions(argv, tcConfigB, fsiConsoleOutput) let fsiConsolePrompt = FsiConsolePrompt(fsiOptions, fsiConsoleOutput) // Check if we have a codepage from the console do match fsiOptions.FsiLCID with | Some _ -> () | None -> tcConfigB.lcid <- lcidFromCodePage // Set the ui culture do match fsiOptions.FsiLCID with | Some(n) -> #if SILVERLIGHT System.Threading.Thread.CurrentThread.CurrentUICulture <- new CultureInfo(n.ToString()) #else System.Threading.Thread.CurrentThread.CurrentUICulture <- new CultureInfo(n) #endif | None -> () do try SetServerCodePages fsiOptions with e -> warning(e) do updateBannerText() // resetting banner text after parsing options if tcConfigB.showBanner then fsiOptions.ShowBanner() do fsiConsoleOutput.uprintfn "" // When no source files to load, print ahead prompt here do if isNil fsiOptions.SourceFiles then fsiConsolePrompt.PrintAhead() let fsiConsoleInput = FsiConsoleInput(fsiOptions, inReader, outWriter) let tcGlobals,tcImports = #if SILVERLIGHT TcImports.BuildTcImports(tcConfigP) #else try TcImports.BuildTcImports(tcConfigP) with e -> stopProcessingRecovery e range0; exit 1 #endif let ilGlobals = tcGlobals.ilg let niceNameGen = NiceNameGenerator() // Share intern'd strings across all lexing/parsing let lexResourceManager = new Lexhelp.LexResourceManager() /// The lock stops the type checker running at the same time as the server intellisense implementation. let tcLockObject = box 7 // any new object will do // NOTE: this should probably be memoized in the .NET version #if SILVERLIGHT // Silverlight has no magic assembly resolution. So we load assemblies here if needed, and memoize the results. let resolveType fsiDynamicCompiler = Tables.memoize (fun (aref: ILAssemblyRef) -> match tcImports.TryFindProviderGeneratedAssemblyByName aref.Name with | Some assembly -> Some (Choice2Of2 assembly) | None -> //match tcImports.TryFindExistingFullyQualifiedPathFromAssemblyRef aref with //| Some resolvedPath -> Some (Choice1Of2 resolvedPath) //| None -> let loadAttempt = try match Assembly.Load(aref.QualifiedName) with | null -> None | res -> Some (Choice2Of2 res) with _ -> None match loadAttempt with | Some res -> Some res | None -> let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 let finalAttempt = MagicAssemblyResolution.ResolveAssembly (rangeStdin, tcConfigB, tcImports, fsiDynamicCompiler(), fsiConsoleOutput, aref.QualifiedName) match finalAttempt with | null -> None | res -> Some (Choice2Of2 res)) #else let resolveType _fsiDynamicCompiler (aref: ILAssemblyRef) = #if EXTENSIONTYPING match tcImports.TryFindProviderGeneratedAssemblyByName aref.Name with | Some assembly -> Some (Choice2Of2 assembly) | None -> #endif match tcImports.TryFindExistingFullyQualifiedPathFromAssemblyRef aref with | Some resolvedPath -> Some (Choice1Of2 resolvedPath) | None -> None #endif let rec fsiDynamicCompiler = FsiDynamicCompiler(timeReporter, tcConfigB, tcLockObject, errorLogger, outWriter, tcImports, tcGlobals, ilGlobals, fsiOptions, fsiConsoleOutput, niceNameGen, resolveType (fun () -> fsiDynamicCompiler) ) let fsiInterruptController = FsiInterruptController(fsiOptions, fsiConsoleOutput) do MagicAssemblyResolution.Install(tcConfigB, tcImports, fsiDynamicCompiler, fsiConsoleOutput) /// This reference cell holds the most recent interactive state let initialInteractiveState = fsiDynamicCompiler.GetInitialInteractiveState () let istateRef = ref initialInteractiveState let fsiStdinLexerProvider = FsiStdinLexerProvider(tcConfigB, fsiStdinSyphon, fsiConsoleInput, fsiConsoleOutput, fsiOptions, lexResourceManager, errorLogger) let fsiIntellisenseProvider = FsiIntellisenseProvider(tcGlobals, tcImports) let fsiInteractionProcessor = FsiInteractionProcessor(tcConfigB, errorLogger, fsiOptions, fsiDynamicCompiler, fsiConsolePrompt, fsiConsoleOutput, fsiInterruptController, fsiStdinLexerProvider, lexResourceManager) /// Load the dummy interaction, load the initial files, and, /// if interacting, start the background thread to read the standard input. member x.Interrupt() = fsiInterruptController.Interrupt() /// Performs these steps: /// - Load the dummy interaction, if any /// - Set up exception handling, if any /// - Load the initial files, if any /// - Start the background thread to read the standard input, if any /// - Sit in the GUI event loop indefinitely, if needed [] member x.Run() = #if SILVERLIGHT let _ = fsiInterruptController.InstallKillThread(Thread.CurrentThread, 100) let istate = initialInteractiveState fsi.EventLoop <- Microsoft.FSharp.Compiler.Interactive.RuntimeHelpers.GetSimpleEventLoop() let istate = fsiInteractionProcessor.LoadInitialFiles(false, istate) istateRef := istate StartStdinReadAndProcessThread(fsiOptions.FsiLCID, istateRef, errorLogger, fsiConsoleInput, fsiConsoleOutput, fsiStdinLexerProvider, fsiInteractionProcessor, true) DriveFsiEventLoop fsiConsoleOutput #else progress := condition "FSHARP_INTERACTIVE_PROGRESS" // Update the console completion function now we've got an initial type checking state. // This means completion doesn't work until the initial type checking state has finished loading - fair enough! if !progress then fprintfn fsiConsoleOutput.Out "Run: Calling TryGetConsole" match fsiConsoleInput.TryGetConsole() with | Some console when fsiOptions.EnableConsoleKeyProcessing -> console.SetCompletionFunction(fun (s1,s2) -> fsiIntellisenseProvider.CompletionsForPartialLID !istateRef (match s1 with | Some s -> s + "." + s2 | None -> s2) |> Seq.ofList) | _ -> () if not runningOnMono && fsiOptions.IsInteractiveServer then SpawnInteractiveServer (fsiOptions, fsiConsoleOutput, fsiInterruptController) use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Interactive) let threadException exn = fsi.EventLoop.Invoke ( fun () -> fprintfn fsiConsoleOutput.Error "%s" (exn.ToString()) errorLogger.SetError() errorLogger.AbortOnError() ) if fsiOptions.Interact then if !progress then fprintfn fsiConsoleOutput.Out "Run: Interact..." // page in the type check env istateRef := fsiInteractionProcessor.LoadDummyInteraction !istateRef if !progress then fprintfn fsiConsoleOutput.Out "MAIN: InstallKillThread!"; // Compute how long to pause before a ThreadAbort is actually executed. // A somewhat arbitrary choice. let pauseMilliseconds = (if fsiOptions.Gui then 400 else 100) let exitViaKillThread = fsiInterruptController.InstallKillThread(Thread.CurrentThread, pauseMilliseconds) if !progress then fprintfn fsiConsoleOutput.Out "MAIN: got initial state, creating form"; // Route background exceptions to the exception handlers AppDomain.CurrentDomain.UnhandledException.Add (fun args -> match args.ExceptionObject with | :? System.Exception as err -> threadException err | _ -> ()); if fsiOptions.Gui then try Application.EnableVisualStyles() with _ -> () // Route GUI application exceptions to the exception handlers Application.add_ThreadException(new ThreadExceptionEventHandler(fun _ args -> threadException args.Exception)); if not runningOnMono then try TrySetUnhandledExceptionMode() with _ -> (); // This is the event loop for winforms try fsi.EventLoop <- WinFormsEventLoop(fsiConsoleOutput, fsiOptions.FsiLCID) with e -> printfn "Your system doesn't seem to support WinForms correctly. You will" printfn "need to set fsi.EventLoop use GUI windows from F# Interactive." printfn "You can set different event loops for MonoMac, Gtk#, WinForms and other" printfn "UI toolkits. Drop the --gui argument if no event loop is required." istateRef := fsiInteractionProcessor.LoadInitialFiles (exitViaKillThread, !istateRef) StartStdinReadAndProcessThread(fsiOptions.FsiLCID, istateRef, errorLogger, fsiConsoleInput, fsiConsoleOutput, fsiStdinLexerProvider, fsiInteractionProcessor, exitViaKillThread) DriveFsiEventLoop fsiConsoleOutput else // not interact if !progress then fprintfn fsiConsoleOutput.Out "Run: not interact, loading intitial files..." istateRef := fsiInteractionProcessor.LoadInitialFiles (false, !istateRef) if !progress then fprintfn fsiConsoleOutput.Out "Run: done..." exit (min errorLogger.ErrorCount 1) // The Ctrl-C exception handler that we've passed to native code has // to be explicitly kept alive. GC.KeepAlive fsiInterruptController.EventHandlers #endif // SILVERLIGHT /// Defines a read-only input stream used to feed content to the hosted F# Interactive dynamic compiler. [] type CompilerInputStream() = inherit Stream() // Duration (in milliseconds) of the pause in the loop of waitForAtLeastOneByte. let pauseDuration = 100 // Queue of characters waiting to be read. let readQueue = new Queue() let waitForAtLeastOneByte(count : int) = let rec loop() = let attempt = lock readQueue (fun () -> let n = readQueue.Count if (n >= 1) then let lengthToRead = if (n < count) then n else count let ret = Array.zeroCreate lengthToRead for i in 0 .. lengthToRead - 1 do ret.[i] <- readQueue.Dequeue() Some ret else None) match attempt with | None -> System.Threading.Thread.Sleep(pauseDuration); loop() | Some res -> res loop() override x.CanRead = true override x.CanWrite = false override x.CanSeek = false override x.Position with get() = raise (NotSupportedException()) and set _v = raise (NotSupportedException()) override x.Length = raise (NotSupportedException()) override x.Flush() = () override x.Seek(_offset, _origin) = raise (NotSupportedException()) override x.SetLength(_value) = raise (NotSupportedException()) override x.Write(_buffer, _offset, _count) = raise (NotSupportedException("Cannot write to input stream")) override x.Read(buffer, offset, count) = let bytes = waitForAtLeastOneByte count Array.Copy(bytes, 0, buffer, offset, bytes.Length) bytes.Length /// Feeds content into the stream. member x.Add(str:string) = if (System.String.IsNullOrEmpty(str)) then () else lock readQueue (fun () -> let bytes = System.Text.Encoding.UTF8.GetBytes(str) for i in 0 .. bytes.Length - 1 do readQueue.Enqueue(bytes.[i])) /// Defines a write-only stream used to capture output of the hosted F# Interactive dynamic compiler. [] type CompilerOutputStream() = inherit Stream() // Queue of characters waiting to be read. let contentQueue = new Queue() let nyi() = raise (NotSupportedException()) override x.CanRead = false override x.CanWrite = true override x.CanSeek = false override x.Position with get() = nyi() and set _v = nyi() override x.Length = nyi() override x.Flush() = () override x.Seek(_offset, _origin) = nyi() override x.SetLength(_value) = nyi() override x.Read(_buffer, _offset, _count) = raise (NotSupportedException("Cannot write to input stream")) override x.Write(buffer, offset, count) = let stop = offset + count if (stop > buffer.Length) then raise (ArgumentException("offset,count")) lock contentQueue (fun () -> for i in offset .. stop - 1 do contentQueue.Enqueue(buffer.[i])) member x.Read() = lock contentQueue (fun () -> let n = contentQueue.Count if (n > 0) then let bytes = Array.zeroCreate n for i in 0 .. n-1 do bytes.[i] <- contentQueue.Dequeue() System.Text.Encoding.UTF8.GetString(bytes, 0, n) else "") fsharp-3.0.34/src/fsharp/fsi/fsimain.fs0000775000175000017500000000375712260314606016722 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Interactive.Main open System open Microsoft.FSharp.Compiler.Interactive.Shell open Internal.Utilities #nowarn "55" [] [] do() #if SILVERLIGHT #else // Mark the main thread as STAThread since it is a GUI thread [] [] let MainMain argv = ignore argv let argv = System.Environment.GetCommandLineArgs() // When VFSI is running, set the input/output encoding to UTF8. // Otherwise, unicode gets lost during redirection. // It is required only under Net4.5 or above (with unicode console feature). if FSharpEnvironment.IsRunningOnNetFx45OrAbove && argv |> Array.exists (fun x -> x.Contains "fsi-server") then Console.InputEncoding <- System.Text.Encoding.UTF8 Console.OutputEncoding <- System.Text.Encoding.UTF8 #if DEBUG if argv |> Array.exists (fun x -> x = "/pause" || x = "--pause") then Console.WriteLine("Press any key to continue...") Console.ReadKey() |> ignore try let fsi = FsiEvaluationSession (argv, Console.In, Console.Out, Console.Error) fsi.Run() with e -> printf "Exception by fsi.exe:\n%+A\n" e #else let fsi = FsiEvaluationSession (argv, Console.In, Console.Out, Console.Error) fsi.Run() #endif 0 #endif // SILVERLIGHT fsharp-3.0.34/src/fsharp/test.snk0000775000175000017500000000112412260314606015637 0ustar chrischris$RSA2wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî+qöS´Ïë ÷•á;ä¨>T| ´84ô–SNï•zMɺÇR Œà Š ¶Šé{HZÿÕGح®Ç%÷ T“i4úåÈöcîD<õ×ÙÄùz—”¨÷ez\þ)7̶øÙ»2ds?…wXzUæøs:oà†û'Öñ®5ûŒïó­“œmá­Lñü⨥ƒ4Ôáƒ>ž¥5ßÛ¡ï<Å¿,)ñN;yóG³`ÉEÿ)øÏw¤ÿ³òÒ@2Í²ÏÆÀ‹uÞON­›U±Ž „=ÛܵŽpyoú—ÈR{Hw‚p‚yý¬Öí{(fuïòêì+X¤ÿú ]X©§–ÕreÚó˜úb›ìKÃÊnåcG9ÖÇ´Qƒ=‘¶Qœ£;ÂÆ”:æq¶“ÖY–—òýËáesm,††Ø:­ÝAÍýŒ,:…¹[|43ê;à†Ö?‘,ê† OÅþu®º¨§B”$¥*Œ±#º.¤ÀK|3ëLÜ^bIK(“Ö)«ÂKfÖ ~úy›P(iÌ^‡¨T =ª;€r y í<|·]PÓ¡’Üî>\f4]å=«¯ yD‘¦)äö=´µR…!99Jfsharp-3.0.34/src/fsharp/lexhelp.fs0000775000175000017500000003341612260314606016147 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Helper functions for the F# lexer lex.mll module internal Microsoft.FSharp.Compiler.Lexhelp open System.Text open Internal.Utilities open Internal.Utilities.Collections open Internal.Utilities.Text open Internal.Utilities.Text.Lexing open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Parser // The "mock" filename used by fsi.exe when reading from stdin. // Has special treatment by the lexer, i.e. __SOURCE_DIRECTORY__ becomes GetCurrentDirectory() let stdinMockFilename = "stdin" /// Lexer args: status of #light processing. Mutated when a #light /// directive is processed. This alters the behaviour of the lexfilter. [] type LightSyntaxStatus(initial:bool,warn:bool) = let mutable status = None member x.Status with get() = match status with None -> initial | Some v -> v and set v = status <- Some(v) member x.ExplicitlySet = status.IsSome member x.WarnOnMultipleTokens = warn /// Manage lexer resources (string interning) [] type LexResourceManager() = let strings = new System.Collections.Generic.Dictionary(100) member x.InternIdentifierToken(s) = let mutable res = Unchecked.defaultof<_> let ok = strings.TryGetValue(s,&res) if ok then res else let res = IDENT s (strings.[s] <- res; res) /// Lexer parameters type lexargs = { defines: string list; ifdefStack: LexerIfdefStack; resourceManager: LexResourceManager; lightSyntaxStatus : LightSyntaxStatus; errorLogger: ErrorLogger } let mkLexargs (_filename,defines,lightSyntaxStatus,resourceManager,ifdefStack,errorLogger) = { defines = defines; ifdefStack= ifdefStack; lightSyntaxStatus=lightSyntaxStatus; resourceManager=resourceManager; errorLogger=errorLogger } /// Register the lexbuf and call the given function let reusingLexbufForParsing lexbuf f = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) LexbufLocalXmlDocStore.ClearXmlDoc lexbuf; try f () with e -> raise (WrappedError(e,(try lexbuf.LexemeRange with _ -> range0))) let resetLexbufPos filename (lexbuf: UnicodeLexing.Lexbuf) = lexbuf.EndPos <- Position.FirstLine (fileIndexOfFile filename) /// Reset the lexbuf, configure the initial position with the given filename and call the given function let usingLexbufForParsing (lexbuf:UnicodeLexing.Lexbuf,filename) f = resetLexbufPos filename lexbuf; reusingLexbufForParsing lexbuf (fun () -> f lexbuf) //------------------------------------------------------------------------ // Functions to manipulate lexer transient state //----------------------------------------------------------------------- let defaultStringFinisher = (fun _endm _b s -> STRING (Encoding.Unicode.GetString(s,0,s.Length))) let callStringFinisher fin (buf: ByteBuffer) endm b = fin endm b (buf.Close()) let addUnicodeString (buf: ByteBuffer) (x:string) = buf.EmitBytes (Encoding.Unicode.GetBytes x) let addIntChar (buf: ByteBuffer) c = buf.EmitIntAsByte (c % 256); buf.EmitIntAsByte (c / 256) let addUnicodeChar buf c = addIntChar buf (int c) let addByteChar buf (c:char) = addIntChar buf (int32 c % 256) /// When lexing bytearrays we don't expect to see any unicode stuff. /// Likewise when lexing string constants we shouldn't see any trigraphs > 127 /// So to turn the bytes collected in the string buffer back into a bytearray /// we just take every second byte we stored. Note all bytes > 127 should have been /// stored using addIntChar let stringBufferAsBytes (buf: ByteBuffer) = let bytes = buf.Close() Array.init (bytes.Length / 2) (fun i -> bytes.[i*2]) /// Sanity check that high bytes are zeros. Further check each low byte <= 127 let stringBufferIsBytes (buf: ByteBuffer) = let bytes = buf.Close() let mutable ok = true for i = 0 to bytes.Length / 2-1 do if bytes.[i*2+1] <> 0uy then ok <- false ok let newline (lexbuf:LexBuffer<_>) = lexbuf.EndPos <- lexbuf.EndPos.NextLine let trigraph c1 c2 c3 = let digit (c:char) = int c - int '0' char (digit c1 * 100 + digit c2 * 10 + digit c3) let digit d = if d >= '0' && d <= '9' then int32 d - int32 '0' else failwith "digit" let hexdigit d = if d >= '0' && d <= '9' then digit d elif d >= 'a' && d <= 'f' then int32 d - int32 'a' + 10 elif d >= 'A' && d <= 'F' then int32 d - int32 'A' + 10 else failwith "hexdigit" let unicodeGraphShort (s:string) = if s.Length <> 4 then failwith "unicodegraph"; uint16 (hexdigit s.[0] * 4096 + hexdigit s.[1] * 256 + hexdigit s.[2] * 16 + hexdigit s.[3]) let hexGraphShort (s:string) = if s.Length <> 2 then failwith "hexgraph"; uint16 (hexdigit s.[0] * 16 + hexdigit s.[1]) let unicodeGraphLong (s:string) = if s.Length <> 8 then failwith "unicodeGraphLong"; let high = hexdigit s.[0] * 4096 + hexdigit s.[1] * 256 + hexdigit s.[2] * 16 + hexdigit s.[3] in let low = hexdigit s.[4] * 4096 + hexdigit s.[5] * 256 + hexdigit s.[6] * 16 + hexdigit s.[7] in if high = 0 then None, uint16 low else (* A surrogate pair - see http://www.unicode.org/unicode/uni2book/ch03.pdf, section 3.7 *) Some (uint16 (0xD800 + ((high * 0x10000 + low - 0x10000) / 0x400))), uint16 (0xDC00 + ((high * 0x10000 + low - 0x10000) % 0x400)) let escape c = match c with | '\\' -> '\\' | '\'' -> '\'' | 'a' -> char 7 | 'f' -> char 12 | 'v' -> char 11 | 'n' -> '\n' | 't' -> '\t' | 'b' -> '\b' | 'r' -> '\r' | c -> c //------------------------------------------------------------------------ // Keyword table //----------------------------------------------------------------------- exception ReservedKeyword of string * range exception IndentationProblem of string * range module Keywords = type private compatibilityMode = | ALWAYS (* keyword *) | FSHARP (* keyword, but an identifier under --ml-compatibility mode *) let private keywordList = [ FSHARP, "abstract", ABSTRACT; ALWAYS, "and" ,AND; ALWAYS, "as" ,AS; ALWAYS, "assert" ,ASSERT; ALWAYS, "asr" ,INFIX_STAR_STAR_OP "asr"; ALWAYS, "base" ,BASE; ALWAYS, "begin" ,BEGIN; ALWAYS, "class" ,CLASS; FSHARP, "const" ,CONST; FSHARP, "default" ,DEFAULT; FSHARP, "delegate" ,DELEGATE; ALWAYS, "do" ,DO; ALWAYS, "done" ,DONE; FSHARP, "downcast" ,DOWNCAST; ALWAYS, "downto" ,DOWNTO; FSHARP, "elif" ,ELIF; ALWAYS, "else" ,ELSE; ALWAYS, "end" ,END; ALWAYS, "exception" ,EXCEPTION; FSHARP, "extern" ,EXTERN; ALWAYS, "false" ,FALSE; ALWAYS, "finally" ,FINALLY; ALWAYS, "for" ,FOR; ALWAYS, "fun" ,FUN; ALWAYS, "function" ,FUNCTION; FSHARP, "global" ,GLOBAL; ALWAYS, "if" ,IF; ALWAYS, "in" ,IN; ALWAYS, "inherit" ,INHERIT; FSHARP, "inline" ,INLINE; FSHARP, "interface" ,INTERFACE; FSHARP, "internal" ,INTERNAL; ALWAYS, "land" ,INFIX_STAR_DIV_MOD_OP "land"; ALWAYS, "lazy" ,LAZY; ALWAYS, "let" ,LET(false); ALWAYS, "lor" ,INFIX_STAR_DIV_MOD_OP "lor"; ALWAYS, "lsl" ,INFIX_STAR_STAR_OP "lsl"; ALWAYS, "lsr" ,INFIX_STAR_STAR_OP "lsr"; ALWAYS, "lxor" ,INFIX_STAR_DIV_MOD_OP "lxor"; ALWAYS, "match" ,MATCH; FSHARP, "member" ,MEMBER; ALWAYS, "mod" ,INFIX_STAR_DIV_MOD_OP "mod"; ALWAYS, "module" ,MODULE; ALWAYS, "mutable" ,MUTABLE; FSHARP, "namespace" ,NAMESPACE; ALWAYS, "new" ,NEW; FSHARP, "null" ,NULL; ALWAYS, "of" ,OF; ALWAYS, "open" ,OPEN; ALWAYS, "or" ,OR; FSHARP, "override" ,OVERRIDE; ALWAYS, "private" ,PRIVATE; FSHARP, "public" ,PUBLIC; ALWAYS, "rec" ,REC; FSHARP, "return" ,YIELD(false); ALWAYS, "sig" ,SIG; FSHARP, "static" ,STATIC; ALWAYS, "struct" ,STRUCT; ALWAYS, "then" ,THEN; ALWAYS, "to" ,TO; ALWAYS, "true" ,TRUE; ALWAYS, "try" ,TRY; ALWAYS, "type" ,TYPE; FSHARP, "upcast" ,UPCAST; FSHARP, "use" ,LET(true); ALWAYS, "val" ,VAL; FSHARP, "void" ,VOID; ALWAYS, "when" ,WHEN; ALWAYS, "while" ,WHILE; ALWAYS, "with" ,WITH; FSHARP, "yield" ,YIELD(true); ALWAYS, "_" ,UNDERSCORE; (*------- for prototyping and explaining offside rule *) FSHARP, "__token_OBLOCKSEP" ,OBLOCKSEP; FSHARP, "__token_OWITH" ,OWITH; FSHARP, "__token_ODECLEND" ,ODECLEND; FSHARP, "__token_OTHEN" ,OTHEN; FSHARP, "__token_OELSE" ,OELSE; FSHARP, "__token_OEND" ,OEND; FSHARP, "__token_ODO" ,ODO; FSHARP, "__token_OLET" ,OLET(true); FSHARP, "__token_constraint",CONSTRAINT; ] (*------- reserved keywords which are ml-compatibility ids *) @ List.map (fun s -> (FSHARP,s,RESERVED)) [ "atomic"; "break"; "checked"; "component"; "constraint"; "constructor"; "continue"; "eager"; "fixed"; "fori"; "functor"; "include"; "measure"; "method"; "mixin"; "object"; "parallel"; "params"; "process"; "protected"; "pure"; "recursive"; "sealed"; "trait"; "tailcall"; "virtual"; "volatile"; ] let private unreserveWords = keywordList |> List.choose (function (mode,keyword,_) -> if mode = FSHARP then Some keyword else None) //------------------------------------------------------------------------ // Keywords //----------------------------------------------------------------------- let keywordNames = keywordList |> List.map (fun (_, w, _) -> w) let keywordTable = // TODO: this doesn't need to be a multi-map, a dictionary will do let tab = System.Collections.Generic.Dictionary(100) for (_mode,keyword,token) in keywordList do tab.Add(keyword,token) tab let KeywordToken s = keywordTable.[s] /// ++GLOBAL MUTABLE STATE. Note this is a deprecated, undocumented command line option anyway, we can ignore it. let mutable permitFsharpKeywords = true let IdentifierToken args (lexbuf:UnicodeLexing.Lexbuf) (s:string) = if IsCompilerGeneratedName s then warning(Error(FSComp.SR.lexhlpIdentifiersContainingAtSymbolReserved(), lexbuf.LexemeRange)); args.resourceManager.InternIdentifierToken s let KeywordOrIdentifierToken args (lexbuf:UnicodeLexing.Lexbuf) s = if not permitFsharpKeywords && List.mem s unreserveWords then // You can assume this condition never fires - this is a deprecated, undocumented command line option anyway, we can ignore it. IdentifierToken args lexbuf s else let mutable v = Unchecked.defaultof<_> if keywordTable.TryGetValue(s, &v) then if (match v with RESERVED -> true | _ -> false) then warning(ReservedKeyword(FSComp.SR.lexhlpIdentifierReserved(s), lexbuf.LexemeRange)); IdentifierToken args lexbuf s else v else match s with | "__SOURCE_DIRECTORY__" -> let filename = fileOfFileIndex lexbuf.StartPos.FileIndex let dirname = if filename = stdinMockFilename then System.IO.Directory.GetCurrentDirectory() // TODO: is this right for Silverlight? else filename |> FileSystem.SafeGetFullPath (* asserts that path is already absolute *) |> System.IO.Path.GetDirectoryName KEYWORD_STRING dirname | "__SOURCE_FILE__" -> KEYWORD_STRING (System.IO.Path.GetFileName((fileOfFileIndex lexbuf.StartPos.FileIndex))) | "__LINE__" -> KEYWORD_STRING (string lexbuf.StartPos.Line) | _ -> IdentifierToken args lexbuf s /// A utility to help determine if an identifier needs to be quoted let QuoteIdentifierIfNeeded (s : string) : string = if not (String.forall IsIdentifierPartCharacter s) // if it has funky chars || s.Length > 0 && (not(IsIdentifierFirstCharacter s.[0])) // or if it starts with a non-(letter-or-underscore) || keywordTable.ContainsKey s // or if it's a language keyword like "type" then "``"+s+"``" // then it needs to be ``quoted`` else s fsharp-3.0.34/src/fsharp/typrelns.fs0000775000175000017500000044074212260314606016372 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Primary relations on types and signatures, with the exception of /// constraint solving and method overload resolution. module internal Microsoft.FSharp.Compiler.Typrelns open Internal.Utilities open System.Text open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Infos.AccessibilityLogic #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif //------------------------------------------------------------------------- // a :> b without coercion based on finalized (no type variable) types //------------------------------------------------------------------------- // QUERY: This relation is approximate and not part of the language specification. // // Some appropriate uses: // patcompile.fs: IsDiscrimSubsumedBy (approximate warning for redundancy of 'isinst' patterns) // tc.fs: TcRuntimeTypeTest (approximate warning for redundant runtime type tests) // tc.fs: TcExnDefnCore (error for bad exception abbreviation) // ilxgen.fs: GenCoerce (omit unecessary castclass or isinst instruction) // let rec TypeDefinitelySubsumesTypeNoCoercion ndeep g amap m ty1 ty2 = if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeDefinitelySubsumesTypeNoCoercion), ty1 = "^(DebugPrint.showType ty1),m)); if ty1 === ty2 then true // QUERY : quadratic elif typeEquiv g ty1 ty2 then true else let ty1 = stripTyEqns g ty1 let ty2 = stripTyEqns g ty2 match ty1,ty2 with | TType_app (tc1,l1) ,TType_app (tc2,l2) when tyconRefEq g tc1 tc2 -> List.lengthsEqAndForall2 (typeEquiv g) l1 l2 | TType_ucase (tc1,l1) ,TType_ucase (tc2,l2) when g.unionCaseRefEq tc1 tc2 -> List.lengthsEqAndForall2 (typeEquiv g) l1 l2 | TType_tuple l1 ,TType_tuple l2 -> List.lengthsEqAndForall2 (typeEquiv g) l1 l2 | TType_fun (d1,r1) ,TType_fun (d2,r2) -> typeEquiv g d1 d2 && typeEquiv g r1 r2 | TType_measure measure1, TType_measure measure2 -> measureEquiv g measure1 measure2 | _ -> (typeEquiv g ty1 g.obj_ty && isRefTy g ty2) || (* F# reference types are subtypes of type 'obj' *) (isAppTy g ty2 && isRefTy g ty2 && ((match GetSuperTypeOfType g amap m ty2 with | None -> false | Some ty -> TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1 ty) || (isInterfaceTy g ty1 && ty2 |> GetImmediateInterfacesOfType g amap m |> List.exists (TypeDefinitelySubsumesTypeNoCoercion (ndeep+1) g amap m ty1)))) type CanCoerce = CanCoerce | NoCoerce /// The feasible equivalence relation. Part of the language spec. let rec TypesFeasiblyEquiv ndeep g amap m ty1 ty2 = if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = "^(DebugPrint.showType ty1),m)); let ty1 = stripTyEqns g ty1 let ty2 = stripTyEqns g ty2 match ty1,ty2 with // QUERY: should these be false for non-equal rigid typars? warn-if-not-rigid typars? | TType_var _ , _ | _, TType_var _ -> true | TType_app (tc1,l1) ,TType_app (tc2,l2) when tyconRefEq g tc1 tc2 -> List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2 | TType_tuple l1 ,TType_tuple l2 -> List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2 | TType_fun (d1,r1) ,TType_fun (d2,r2) -> (TypesFeasiblyEquiv ndeep g amap m) d1 d2 && (TypesFeasiblyEquiv ndeep g amap m) r1 r2 | TType_measure _, TType_measure _ -> true | _ -> false /// The feasible coercion relation. Part of the language spec. let rec TypeFeasiblySubsumesType ndeep g amap m ty1 canCoerce ty2 = if ndeep > 100 then error(InternalError("recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = "^(DebugPrint.showType ty1),m)); let ty1 = stripTyEqns g ty1 let ty2 = stripTyEqns g ty2 match ty1,ty2 with // QUERY: should these be false for non-equal rigid typars? warn-if-not-rigid typars? | TType_var _ , _ | _, TType_var _ -> true | TType_app (tc1,l1) ,TType_app (tc2,l2) when tyconRefEq g tc1 tc2 -> List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2 | TType_tuple l1 ,TType_tuple l2 -> List.lengthsEqAndForall2 (TypesFeasiblyEquiv ndeep g amap m) l1 l2 | TType_fun (d1,r1) ,TType_fun (d2,r2) -> (TypesFeasiblyEquiv ndeep g amap m) d1 d2 && (TypesFeasiblyEquiv ndeep g amap m) r1 r2 | TType_measure _, TType_measure _ -> true | _ -> // F# reference types are subtypes of type 'obj' (isObjTy g ty1 && (canCoerce = CanCoerce || isRefTy g ty2)) || (isAppTy g ty2 && (canCoerce = CanCoerce || isRefTy g ty2) && begin match GetSuperTypeOfType g amap m ty2 with | None -> false | Some ty -> TypeFeasiblySubsumesType (ndeep+1) g amap m ty1 NoCoerce ty end || ty2 |> GetImmediateInterfacesOfType g amap m |> List.exists (TypeFeasiblySubsumesType (ndeep+1) g amap m ty1 NoCoerce)) /// Choose solutions for Expr.TyChoose type "hidden" variables introduced /// by letrec nodes. Also used by the pattern match compiler to choose type /// variables when compiling patterns at generalized bindings. /// e.g. let ([],x) = ([],[]) /// Here x gets a generalized type "list<'T>". let ChooseTyparSolutionAndRange g amap (tp:Typar) = let m = tp.Range let max,m = let initial = match tp.Kind with | TyparKind.Type -> g.obj_ty | TyparKind.Measure -> TType_measure MeasureOne // Loop through the constraints computing the lub ((initial,m), tp.Constraints) ||> List.fold (fun (maxSoFar,_) tpc -> let join m x = if TypeFeasiblySubsumesType 0 g amap m x CanCoerce maxSoFar then maxSoFar elif TypeFeasiblySubsumesType 0 g amap m maxSoFar CanCoerce x then x else errorR(Error(FSComp.SR.typrelCannotResolveImplicitGenericInstantiation((DebugPrint.showType x), (DebugPrint.showType maxSoFar)),m)); maxSoFar // Don't continue if an error occurred and we set the value eagerly if tp.IsSolved then maxSoFar,m else match tpc with | TyparConstraint.CoercesTo(x,m) -> join m x,m | TyparConstraint.MayResolveMember(TTrait(_,nm,_,_,_,_),m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInOverloadedOperator(DemangleOperatorName nm),m)); maxSoFar,m | TyparConstraint.SimpleChoice(_,m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInPrintf(),m)); maxSoFar,m | TyparConstraint.SupportsNull m -> maxSoFar,m | TyparConstraint.SupportsComparison m -> join m g.mk_IComparable_ty,m | TyparConstraint.SupportsEquality m -> maxSoFar,m | TyparConstraint.IsEnum(_,m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInEnum(),m)); maxSoFar,m | TyparConstraint.IsDelegate(_,_,m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInDelegate(),m)); maxSoFar,m | TyparConstraint.IsNonNullableStruct m -> join m g.int_ty,m | TyparConstraint.IsUnmanaged m -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInUnmanaged(),m)) maxSoFar,m | TyparConstraint.RequiresDefaultConstructor m -> maxSoFar,m | TyparConstraint.IsReferenceType m -> maxSoFar,m | TyparConstraint.DefaultsTo(_priority,_ty,m) -> maxSoFar,m) max,m let ChooseTyparSolution g amap tp = let ty,_m = ChooseTyparSolutionAndRange g amap tp if tp.Rigidity = TyparRigidity.Anon && typeEquiv g ty (TType_measure MeasureOne) then warning(Error(FSComp.SR.csCodeLessGeneric(),tp.Range)); ty // Solutions can, in theory, refer to each other // For example // 'a = Expr<'b> // 'b = int // In this case the solutions are // 'a = Expr // 'b = int // We ground out the solutions by repeatedly instantiating let IterativelySubstituteTyparSolutions g tps solutions = let tpenv = mkTyparInst tps solutions let rec loop n curr = let curr' = curr |> instTypes tpenv // We cut out at n > 40 just in case this loops. It shouldn't, since there should be no cycles in the // solution equations, and we've only ever seen one example where even n = 2 was required. // Perhaps it's possible in error recovery some strange situations could occur where cycles // arise, so it's better to be on the safe side. // // We don't give an error if we hit the limit since it's feasible that the solutions of unknowns // is not actually relevant to the rest of type checking or compilation. if n > 40 || List.forall2 (typeEquiv g) curr curr' then curr else loop (n+1) curr' loop 0 solutions let ChooseTyparSolutionsForFreeChoiceTypars g amap e = match e with | Expr.TyChoose(tps,e1,_m) -> /// Only make choices for variables that are actually used in the expression let ftvs = (freeInExpr CollectTyparsNoCaching e1).FreeTyvars.FreeTypars let tps = tps |> List.filter (Zset.memberOf ftvs) let solutions = tps |> List.map (ChooseTyparSolution g amap) |> IterativelySubstituteTyparSolutions g tps let tpenv = mkTyparInst tps solutions instExpr g tpenv e1 | _ -> e /// Break apart lambdas. Needs ChooseTyparSolutionsForFreeChoiceTypars because it's used in /// PostTypecheckSemanticChecks before we've eliminated these nodes. let tryDestTopLambda g amap (ValReprInfo (tpNames,_,_) as tvd) (e,ty) = let rec stripLambdaUpto n (e,ty) = match e with | Expr.Lambda (_,None,None,v,b,_,retTy) when n > 0 -> let (vs',b',retTy') = stripLambdaUpto (n-1) (b,retTy) (v :: vs', b', retTy') | _ -> ([],e,ty) let rec startStripLambdaUpto n (e,ty) = match e with | Expr.Lambda (_,ctorThisValOpt,baseValOpt,v,b,_,retTy) when n > 0 -> let (vs',b',retTy') = stripLambdaUpto (n-1) (b,retTy) (ctorThisValOpt,baseValOpt, (v :: vs'), b', retTy') | Expr.TyChoose (_tps,_b,_) -> startStripLambdaUpto n (ChooseTyparSolutionsForFreeChoiceTypars g amap e, ty) | _ -> (None,None,[],e,ty) let n = tvd.NumCurriedArgs let tps,taue,tauty = match e with | Expr.TyLambda (_,tps,b,_,retTy) when nonNil tpNames -> tps,b,retTy | _ -> [],e,ty let ctorThisValOpt,baseValOpt,vsl,body,retTy = startStripLambdaUpto n (taue,tauty) if vsl.Length <> n then None else Some (tps,ctorThisValOpt,baseValOpt,vsl,body,retTy) let destTopLambda g amap topValInfo (e,ty) = match tryDestTopLambda g amap topValInfo (e,ty) with | None -> error(Error(FSComp.SR.typrelInvalidValue(), e.Range)); | Some res -> res let IteratedAdjustArityOfLambdaBody g arities vsl body = (arities, vsl, ([],body)) |||> List.foldBack2 (fun arities vs (allvs,body) -> let vs,body = AdjustArityOfLambdaBody g arities vs body vs :: allvs, body) /// Do AdjustArityOfLambdaBody for a series of /// iterated lambdas, producing one method. /// The required iterated function arity (List.length topValInfo) must be identical /// to the iterated function arity of the input lambda (List.length vsl) let IteratedAdjustArityOfLambda g amap topValInfo e = let tps,ctorThisValOpt,baseValOpt,vsl,body,bodyty = destTopLambda g amap topValInfo (e, tyOfExpr g e) let arities = topValInfo.AritiesOfArgs if arities.Length <> vsl.Length then errorR(InternalError(sprintf "IteratedAdjustArityOfLambda, List.length arities = %d, List.length vsl = %d" (List.length arities) (List.length vsl), body.Range)) let vsl,body = IteratedAdjustArityOfLambdaBody g arities vsl body tps,ctorThisValOpt,baseValOpt,vsl,body,bodyty exception RequiredButNotSpecified of DisplayEnv * Tast.ModuleOrNamespaceRef * string * (StringBuilder -> unit) * range exception ValueNotContained of DisplayEnv * Tast.ModuleOrNamespaceRef * Val * Val * (string * string * string -> string) exception ConstrNotContained of DisplayEnv * UnionCase * UnionCase * (string * string -> string) exception ExnconstrNotContained of DisplayEnv * Tycon * Tycon * (string * string -> string) exception FieldNotContained of DisplayEnv * RecdField * RecdField * (string * string -> string) exception InterfaceNotRevealed of DisplayEnv * TType * range /// Containment relation for module types module SignatureConformance = begin // Use a type to capture the constant, common parameters type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = // Build a remap that maps tcrefs in the signature to tcrefs in the implementation // Used when checking attributes. let sigToImplRemap = let remap = Remap.Empty let remap = (remapInfo.mrpiEntities,remap) ||> List.foldBack (fun (implTcref ,signTcref) acc -> addTyconRefRemap signTcref implTcref acc) let remap = (remapInfo.mrpiVals ,remap) ||> List.foldBack (fun (implValRef,signValRef) acc -> addValRemap signValRef.Deref implValRef.Deref acc) remap // For all attributable elements (types, modules, exceptions, record fields, unions, parameters, generic type parameters) // // (a) Start with lists AImpl and ASig containing the attributes in the implementation and signature, in declaration order // (b) Each attribute in AImpl is checked against the available attributes in ASig. // a. If an attribute is found in ASig which is an exact match (after evaluating attribute arguments), then the attribute in the implementation is ignored, the attribute is removed from ASig, and checking continues // b. If an attribute is found in ASig that has the same attribute type, then a warning is given and the attribute in the implementation is ignored // c. Otherwise, the attribute in the implementation is kept // (c) The attributes appearing in the compiled element are the compiled forms of the attributes from the signature and the kept attributes from the implementation let checkAttribs _aenv (implAttribs:Attribs) (sigAttribs:Attribs) fixup = // Remap the signature attributes to make them look as if they were declared in // the implementation. This allows us to compare them and propagate them to the implementation // if needed. let sigAttribs = sigAttribs |> List.map (remapAttrib g sigToImplRemap) // Helper to check for equality of evaluated attribute expressions let attribExprEq (AttribExpr(_,e1)) (AttribExpr(_,e2)) = EvaledAttribExprEquality g e1 e2 // Helper to check for equality of evaluated named attribute arguments let attribNamedArgEq (AttribNamedArg(nm1,ty1,isProp1,e1)) (AttribNamedArg(nm2,ty2,isProp2,e2)) = (nm1 = nm2) && typeEquiv g ty1 ty2 && (isProp1 = isProp2) && attribExprEq e1 e2 let attribsEq attrib1 attrib2 = let (Attrib(implTcref,_,implArgs,implNamedArgs,_,_,_implRange)) = attrib1 let (Attrib(signTcref,_,signArgs,signNamedArgs,_,_,_signRange)) = attrib2 tyconRefEq g signTcref implTcref && (implArgs,signArgs) ||> List.lengthsEqAndForall2 attribExprEq && (implNamedArgs, signNamedArgs) ||> List.lengthsEqAndForall2 attribNamedArgEq let attribsHaveSameTycon attrib1 attrib2 = let (Attrib(implTcref,_,_,_,_,_,_)) = attrib1 let (Attrib(signTcref,_,_,_,_,_,_)) = attrib2 tyconRefEq g signTcref implTcref // For each implementation attribute, only keep if it it is not mentioned in the signature. // Emit a warning if it is mentioned in the signature and the arguments to the attributes are // not identical. let rec check keptImplAttribsRev implAttribs sigAttribs = match implAttribs with | [] -> keptImplAttribsRev |> List.rev | implAttrib :: remainingImplAttribs -> // Look for an attribute in the signature that matches precisely. If so, remove it let lookForMatchingAttrib = sigAttribs |> List.tryRemove (attribsEq implAttrib) match lookForMatchingAttrib with | Some (_, remainingSigAttribs) -> check keptImplAttribsRev remainingImplAttribs remainingSigAttribs | None -> // Look for an attribute in the signature that has the same type. If so, give a warning let existsSimilarAttrib = sigAttribs |> List.exists (attribsHaveSameTycon implAttrib) if existsSimilarAttrib then let (Attrib(implTcref,_,_,_,_,_,implRange)) = implAttrib warning(Error(FSComp.SR.tcAttribArgsDiffer(implTcref.DisplayName), implRange)) check keptImplAttribsRev remainingImplAttribs sigAttribs else check (implAttrib :: keptImplAttribsRev) remainingImplAttribs sigAttribs let keptImplAttribs = check [] implAttribs sigAttribs fixup (sigAttribs @ keptImplAttribs) true let rec checkTypars m (aenv: TypeEquivEnv) (implTypars:Typars) (sigTypars:Typars) = if implTypars.Length <> sigTypars.Length then errorR (Error(FSComp.SR.typrelSigImplNotCompatibleParamCountsDiffer(),m)); false else let aenv = aenv.BindEquivTypars implTypars sigTypars (implTypars,sigTypars) ||> List.forall2 (fun implTypar sigTypar -> let m = sigTypar.Range if implTypar.StaticReq <> sigTypar.StaticReq then errorR (Error(FSComp.SR.typrelSigImplNotCompatibleCompileTimeRequirementsDiffer(), m)); // Adjust the actual type parameter name to look look like the signature implTypar.SetIdent (mkSynId implTypar.Range sigTypar.Id.idText) // Mark it as "not compiler generated", now that we've got a good name for it implTypar.SetCompilerGenerated false // Check the constraints in the implementation are present in the signature implTypar.Constraints |> List.forall (fun implTyparCx -> match implTyparCx with // defaults can be dropped in the signature | TyparConstraint.DefaultsTo(_,_acty,_) -> true | _ -> if not (List.exists (typarConstraintsAEquiv g aenv implTyparCx) sigTypar.Constraints) then (errorR(Error(FSComp.SR.typrelSigImplNotCompatibleConstraintsDiffer(sigTypar.Name, Layout.showL(NicePrint.layoutTyparConstraint denv (implTypar,implTyparCx))),m)); false) else true) && // Check the constraints in the signature are present in the implementation sigTypar.Constraints |> List.forall (fun sigTyparCx -> match sigTyparCx with // defaults can be present in the signature and not in the implementation because they are erased | TyparConstraint.DefaultsTo(_,_acty,_) -> true // 'comparison' and 'equality' constraints can be present in the signature and not in the implementation because they are erased | TyparConstraint.SupportsComparison _ -> true | TyparConstraint.SupportsEquality _ -> true | _ -> if not (List.exists (fun implTyparCx -> typarConstraintsAEquiv g aenv implTyparCx sigTyparCx) implTypar.Constraints) then (errorR(Error(FSComp.SR.typrelSigImplNotCompatibleConstraintsDifferRemove(sigTypar.Name, Layout.showL(NicePrint.layoutTyparConstraint denv (sigTypar,sigTyparCx))),m)); false) else true) && (not checkingSig || checkAttribs aenv implTypar.Attribs sigTypar.Attribs (fun attribs -> implTypar.Data.typar_attribs <- attribs))) and checkTypeDef (aenv: TypeEquivEnv) (implTycon:Tycon) (sigTycon:Tycon) = let m = implTycon.Range let err f = Error(f(implTycon.TypeOrMeasureKind.ToString()), m) if implTycon.LogicalName <> sigTycon.LogicalName then (errorR (err (FSComp.SR.DefinitionsInSigAndImplNotCompatibleNamesDiffer)); false) else if implTycon.CompiledName <> sigTycon.CompiledName then (errorR (err (FSComp.SR.DefinitionsInSigAndImplNotCompatibleNamesDiffer)); false) else checkExnInfo (fun f -> ExnconstrNotContained(denv,implTycon,sigTycon,f)) aenv implTycon.ExceptionInfo sigTycon.ExceptionInfo && let implTypars = implTycon.Typars m let sigTypars = sigTycon.Typars m if implTypars.Length <> sigTypars.Length then errorR (err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer)); false elif isLessAccessible implTycon.Accessibility sigTycon.Accessibility then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer)); false else let aenv = aenv.BindEquivTypars implTypars sigTypars let aintfs = implTycon.ImmediateInterfaceTypesOfFSharpTycon let fintfs = sigTycon.ImmediateInterfaceTypesOfFSharpTycon let aintfsUser = implTycon.TypeContents.tcaug_interfaces |> List.filter (fun (_,compgen,_) -> not compgen) |> List.map p13 let flatten tys = tys |> List.collect (AllSuperTypesOfType g amap m AllowMultiIntfInstantiations.Yes) |> ListSet.setify (typeEquiv g) |> List.filter (isInterfaceTy g) let aintfs = flatten aintfs let aintfsUser = flatten aintfsUser let fintfs = flatten fintfs let unimpl = ListSet.subtract (fun fity aity -> typeAEquiv g aenv aity fity) fintfs aintfs (unimpl |> List.forall (fun ity -> errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleMissingInterface(x, NicePrint.minimalStringOfType denv ity))); false)) && let hidden = ListSet.subtract (typeAEquiv g aenv) aintfsUser fintfs hidden |> List.iter (fun ity -> (if implTycon.IsFSharpInterfaceTycon then error else warning) (InterfaceNotRevealed(denv,ity,implTycon.Range))); let aNull = IsUnionTypeWithNullAsTrueValue g implTycon let fNull = IsUnionTypeWithNullAsTrueValue g sigTycon if aNull && not fNull then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationSaysNull)) elif fNull && not aNull then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureSaysNull)); let aNull2 = TypeNullIsExtraValue g (generalizedTyconRef (mkLocalTyconRef implTycon)) let fNull2 = TypeNullIsExtraValue g (generalizedTyconRef (mkLocalTyconRef implTycon)) if aNull2 && not fNull2 then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2)) elif fNull2 && not aNull2 then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2)); let aSealed = isSealedTy g (generalizedTyconRef (mkLocalTyconRef implTycon)) let fSealed = isSealedTy g (generalizedTyconRef (mkLocalTyconRef sigTycon)) if aSealed && not fSealed then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationSealed)); if not aSealed && fSealed then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed)); let aPartial = isAbstractTycon implTycon let fPartial = isAbstractTycon sigTycon if aPartial && not fPartial then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract)); if not aPartial && fPartial then errorR(err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract)); if not (typeAEquiv g aenv (superOfTycon g implTycon) (superOfTycon g sigTycon)) then errorR (err(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes)); checkTypars m aenv implTypars sigTypars && checkTypeRepr err aenv implTycon.TypeReprInfo sigTycon.TypeReprInfo && checkTypeAbbrev err aenv implTycon.TypeOrMeasureKind sigTycon.TypeOrMeasureKind implTycon.TypeAbbrev sigTycon.TypeAbbrev && checkAttribs aenv implTycon.Attribs sigTycon.Attribs (fun attribs -> implTycon.Data.entity_attribs <- attribs) && checkModuleOrNamespaceContents implTycon.Range aenv (mkLocalEntityRef implTycon) sigTycon.ModuleOrNamespaceType and checkValInfo aenv err (implVal : Val) (sigVal : Val) = let id = implVal.Id match implVal.ValReprInfo, sigVal.ValReprInfo with | _,None -> true | None, Some _ -> err(FSComp.SR.ValueNotContainedMutabilityArityNotInferred) | Some (ValReprInfo (implTyparNames,implArgInfos,implRetInfo) as implValInfo), Some (ValReprInfo (sigTyparNames,sigArgInfos,sigRetInfo) as sigValInfo) -> let ntps = implTyparNames.Length let mtps = sigTyparNames.Length if ntps <> mtps then err(fun(x, y, z) -> FSComp.SR.ValueNotContainedMutabilityGenericParametersDiffer(x, y, z, string mtps, string ntps)) elif implValInfo.KindsOfTypars <> sigValInfo.KindsOfTypars then err(FSComp.SR.ValueNotContainedMutabilityGenericParametersAreDifferentKinds) elif not (sigArgInfos.Length <= implArgInfos.Length && List.forall2 (fun x y -> List.length x <= List.length y) sigArgInfos (fst (List.chop sigArgInfos.Length implArgInfos))) then err(fun(x, y, z) -> FSComp.SR.ValueNotContainedMutabilityAritiesDiffer(x, y, z, id.idText, string sigArgInfos.Length, id.idText, id.idText)) else let implArgInfos = implArgInfos |> List.take sigArgInfos.Length let implArgInfos = (implArgInfos, sigArgInfos) ||> List.map2 (fun l1 l2 -> l1 |> List.take l2.Length) // Propagate some information signature to implementation. // Check the attributes on each argument, and update the ValReprInfo for // the value to reflect the information in the the signature. // This ensures that the compiled form of the value matches the signature rather than // the implementation. This also propagates argument names from signature to implementation let res = (implArgInfos,sigArgInfos) ||> List.forall2 (List.forall2 (fun implArgInfo sigArgInfo -> checkAttribs aenv implArgInfo.Attribs sigArgInfo.Attribs (fun attribs -> implArgInfo.Name <- sigArgInfo.Name implArgInfo.Attribs <- attribs))) && checkAttribs aenv implRetInfo.Attribs sigRetInfo.Attribs (fun attribs -> implRetInfo.Name <- sigRetInfo.Name implRetInfo.Attribs <- attribs) implVal.SetValReprInfo (Some (ValReprInfo (sigTyparNames,implArgInfos,implRetInfo))) res and checkVal implModRef (aenv:TypeEquivEnv) (implVal:Val) (sigVal:Val) = // Propagate defn location information from implementation to signature . sigVal.SetDefnRange implVal.DefinitionRange if verbose then dprintf "checking value %s, %d, %d\n" implVal.DisplayName implVal.Stamp sigVal.Stamp; let mk_err denv f = ValueNotContained(denv,implModRef,implVal,sigVal,f) let err denv f = errorR(mk_err denv f); false let m = implVal.Range if implVal.IsMutable <> sigVal.IsMutable then (err denv FSComp.SR.ValueNotContainedMutabilityAttributesDiffer) elif implVal.LogicalName <> sigVal.LogicalName then (err denv FSComp.SR.ValueNotContainedMutabilityNamesDiffer) elif implVal.CompiledName <> sigVal.CompiledName then (err denv FSComp.SR.ValueNotContainedMutabilityCompiledNamesDiffer) elif implVal.DisplayName <> sigVal.DisplayName then (err denv FSComp.SR.ValueNotContainedMutabilityDisplayNamesDiffer) elif isLessAccessible implVal.Accessibility sigVal.Accessibility then (err denv FSComp.SR.ValueNotContainedMutabilityAccessibilityMore) elif implVal.MustInline <> sigVal.MustInline then (err denv FSComp.SR.ValueNotContainedMutabilityInlineFlagsDiffer) elif implVal.LiteralValue <> sigVal.LiteralValue then (err denv FSComp.SR.ValueNotContainedMutabilityLiteralConstantValuesDiffer) elif implVal.IsTypeFunction <> sigVal.IsTypeFunction then (err denv FSComp.SR.ValueNotContainedMutabilityOneIsTypeFunction) else let implTypars,atau = implVal.TypeScheme let sigTypars,ftau = sigVal.TypeScheme if implTypars.Length <> sigTypars.Length then (err {denv with showTyparBinding=true} FSComp.SR.ValueNotContainedMutabilityParameterCountsDiffer) else let aenv = aenv.BindEquivTypars implTypars sigTypars checkTypars m aenv implTypars sigTypars && if not (typeAEquiv g aenv atau ftau) then err denv (FSComp.SR.ValueNotContainedMutabilityTypesDiffer) elif not (checkValInfo aenv (err denv) implVal sigVal) then false elif not (implVal.IsExtensionMember = sigVal.IsExtensionMember) then err denv (FSComp.SR.ValueNotContainedMutabilityExtensionsDiffer) elif not (checkMemberDatasConform (err denv) (implVal.Attribs, implVal,implVal.MemberInfo) (sigVal.Attribs,sigVal,sigVal.MemberInfo)) then false else checkAttribs aenv implVal.Attribs sigVal.Attribs (fun attribs -> implVal.Data.val_attribs <- attribs) and checkExnInfo err aenv implTypeRepr sigTypeRepr = match implTypeRepr,sigTypeRepr with | TExnAsmRepr _, TExnFresh _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleHiddenBySignature); false) | TExnAsmRepr tcr1, TExnAsmRepr tcr2 -> if tcr1 <> tcr2 then (errorR (err FSComp.SR.ExceptionDefsNotCompatibleDotNetRepresentationsDiffer); false) else true | TExnAbbrevRepr _, TExnFresh _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleAbbreviationHiddenBySignature); false) | TExnAbbrevRepr ecr1, TExnAbbrevRepr ecr2 -> if not (tcrefAEquiv g aenv ecr1 ecr2) then (errorR (err FSComp.SR.ExceptionDefsNotCompatibleSignaturesDiffer); false) else true | TExnFresh r1, TExnFresh r2-> checkRecordFieldsForExn g denv err aenv r1 r2 | TExnNone,TExnNone -> true | _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleExceptionDeclarationsDiffer); false) and checkUnionCase aenv implUnionCase sigUnionCase = let err f = errorR(ConstrNotContained(denv,implUnionCase,sigUnionCase,f));false if implUnionCase.Id.idText <> sigUnionCase.Id.idText then err FSComp.SR.ModuleContainsConstructorButNamesDiffer elif implUnionCase.RecdFields.Length <> sigUnionCase.RecdFields.Length then err FSComp.SR.ModuleContainsConstructorButDataFieldsDiffer elif not (List.forall2 (checkField aenv) implUnionCase.RecdFields sigUnionCase.RecdFields) then err FSComp.SR.ModuleContainsConstructorButTypesOfFieldsDiffer elif isLessAccessible implUnionCase.Accessibility sigUnionCase.Accessibility then err FSComp.SR.ModuleContainsConstructorButAccessibilityDiffers else checkAttribs aenv implUnionCase.Attribs sigUnionCase.Attribs (fun attribs -> implUnionCase.Attribs <- attribs) and checkField aenv implField sigField = let err f = errorR(FieldNotContained(denv,implField,sigField,f)); false if implField.rfield_id.idText <> sigField.rfield_id.idText then err FSComp.SR.FieldNotContainedNamesDiffer elif isLessAccessible implField.Accessibility sigField.Accessibility then err FSComp.SR.FieldNotContainedAccessibilitiesDiffer elif implField.IsStatic <> sigField.IsStatic then err FSComp.SR.FieldNotContainedStaticsDiffer elif implField.IsMutable <> sigField.IsMutable then err FSComp.SR.FieldNotContainedMutablesDiffer elif implField.LiteralValue <> sigField.LiteralValue then err FSComp.SR.FieldNotContainedLiteralsDiffer elif not (typeAEquiv g aenv implField.FormalType sigField.FormalType) then err FSComp.SR.FieldNotContainedTypesDiffer else checkAttribs aenv implField.FieldAttribs sigField.FieldAttribs (fun attribs -> implField.rfield_fattribs <- attribs) && checkAttribs aenv implField.PropertyAttribs sigField.PropertyAttribs (fun attribs -> implField.rfield_pattribs <- attribs) and checkMemberDatasConform err (_implAttrs,implVal,implMemberInfo) (_sigAttrs, sigVal,sigMemberInfo) = match implMemberInfo,sigMemberInfo with | None,None -> true | Some implMembInfo, Some sigMembInfo -> if not (implVal.CompiledName = sigVal.CompiledName) then err(FSComp.SR.ValueNotContainedMutabilityDotNetNamesDiffer) elif not (implMembInfo.MemberFlags.IsInstance = sigMembInfo.MemberFlags.IsInstance) then err(FSComp.SR.ValueNotContainedMutabilityStaticsDiffer) elif false then err(FSComp.SR.ValueNotContainedMutabilityVirtualsDiffer) elif not (implMembInfo.MemberFlags.IsDispatchSlot = sigMembInfo.MemberFlags.IsDispatchSlot) then err(FSComp.SR.ValueNotContainedMutabilityAbstractsDiffer) // The final check is an implication: // classes have non-final CompareTo/Hash methods // abstract have non-final CompareTo/Hash methods // records have final CompareTo/Hash methods // unions have final CompareTo/Hash methods // This is an example where it is OK for the signaure to say 'non-final' when the implementation says 'final' elif not implMembInfo.MemberFlags.IsFinal && sigMembInfo.MemberFlags.IsFinal then err(FSComp.SR.ValueNotContainedMutabilityFinalsDiffer) elif not (implMembInfo.MemberFlags.IsOverrideOrExplicitImpl = sigMembInfo.MemberFlags.IsOverrideOrExplicitImpl) then err(FSComp.SR.ValueNotContainedMutabilityOverridesDiffer) elif not (implMembInfo.MemberFlags.MemberKind = sigMembInfo.MemberFlags.MemberKind) then err(FSComp.SR.ValueNotContainedMutabilityOneIsConstructor) else let finstance = ValSpecIsCompiledAsInstance g sigVal let ainstance = ValSpecIsCompiledAsInstance g implVal if finstance && not ainstance then err(FSComp.SR.ValueNotContainedMutabilityStaticButInstance) elif not finstance && ainstance then err(FSComp.SR.ValueNotContainedMutabilityInstanceButStatic) else true | _ -> false // ------------------------------------------------------------------------------- // WARNING!!!! // checkRecordFields and checkRecordFieldsForExn are the EXACT SAME FUNCTION. // The only difference is the signature for err - this is because err is a function // that reports errors, and checkRecordFields is called with a different // sig for err then checkRecordFieldsForExn. // ------------------------------------------------------------------------------- and checkRecordFields _g _amap _denv err aenv (implFields:TyconRecdFields) (sigFields:TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) NameMap.suball2 (fun s _ -> errorR(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(x, s))); false) (checkField aenv) m1 m2 && NameMap.suball2 (fun s _ -> errorR(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldWasPresent(x, s))); false) (fun x y -> checkField aenv y x) m2 m1 && // This check is required because constructors etc. are externally visible // and thus compiled representations do pick up dependencies on the field order (if List.forall2 (checkField aenv) implFields sigFields then true else (errorR(err (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer)); false)) and checkRecordFieldsForExn _g _denv err aenv (implFields:TyconRecdFields) (sigFields:TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInSigButNotImpl(s, x, y))); false) (checkField aenv) m1 m2 && NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInImplButNotSig(s, x, y))); false) (fun x y -> checkField aenv y x) m2 m1 && // This check is required because constructors etc. are externally visible // and thus compiled representations do pick up dependencies on the field order (if List.forall2 (checkField aenv) implFields sigFields then true else (errorR(err (FSComp.SR.ExceptionDefsNotCompatibleFieldOrderDiffers)); false)) and checkVirtualSlots _g denv err _aenv implAbstractSlots sigAbstractSlots = let m1 = NameMap.ofKeyedList (fun (v:ValRef) -> v.DisplayName) implAbstractSlots let m2 = NameMap.ofKeyedList (fun (v:ValRef) -> v.DisplayName) sigAbstractSlots (m1,m2) ||> NameMap.suball2 (fun _s vref -> errorR(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl(x, NicePrint.stringValOrMember denv vref.Deref))); false) (fun _x _y -> true) && (m2,m1) ||> NameMap.suball2 (fun _s vref -> errorR(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig(x, NicePrint.stringValOrMember denv vref.Deref))); false) (fun _x _y -> true) and checkClassFields isStruct _g _amap _denv err aenv (implFields:TyconRecdFields) (sigFields:TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) NameMap.suball2 (fun s _ -> errorR(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(x, s))); false) (checkField aenv) m1 m2 && (if isStruct then NameMap.suball2 (fun s _ -> warning(err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig(x, s))); true) (fun x y -> checkField aenv y x) m2 m1 else true) and checkTypeRepr err aenv implTypeRepr sigTypeRepr = let reportNiceError k s1 s2 = let aset = NameSet.ofList s1 let fset = NameSet.ofList s2 match Zset.elements (Zset.diff aset fset) with | [] -> match Zset.elements (Zset.diff fset aset) with | [] -> (errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleNumbersDiffer(x, k))); false) | l -> (errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot(x, k, String.concat ";" l))); false) | l -> (errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot(x, k, String.concat ";" l))); false) match implTypeRepr,sigTypeRepr with | (TRecdRepr _ | TFiniteUnionRepr _ | TILObjModelRepr _ #if EXTENSIONTYPING | TProvidedTypeExtensionPoint _ | TProvidedNamespaceExtensionPoint _ #endif ), TNoRepr -> true | (TFsObjModelRepr r), TNoRepr -> match r.fsobjmodel_kind with | TTyconStruct | TTyconEnum -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesStruct); false) | _ -> true | (TAsmRepr _), TNoRepr -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden); false) | (TMeasureableRepr _), TNoRepr -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsHidden); false) | (TFiniteUnionRepr r1), (TFiniteUnionRepr r2) -> let ucases1 = r1.UnionCasesAsList let ucases2 = r2.UnionCasesAsList if ucases1.Length <> ucases2.Length then let names l = List.map (fun c -> c.Id.idText) l reportNiceError "union case" (names ucases1) (names ucases2) else List.forall2 (checkUnionCase aenv) ucases1 ucases2 | (TRecdRepr implFields), (TRecdRepr sigFields) -> checkRecordFields g amap denv err aenv implFields sigFields | (TFsObjModelRepr r1), (TFsObjModelRepr r2) -> if not (match r1.fsobjmodel_kind,r2.fsobjmodel_kind with | TTyconClass,TTyconClass -> true | TTyconInterface,TTyconInterface -> true | TTyconStruct,TTyconStruct -> true | TTyconEnum, TTyconEnum -> true | TTyconDelegate (TSlotSig(_,typ1,ctps1,mtps1,ps1, rty1)), TTyconDelegate (TSlotSig(_,typ2,ctps2,mtps2,ps2, rty2)) -> (typeAEquiv g aenv typ1 typ2) && (ctps1.Length = ctps2.Length) && (let aenv = aenv.BindEquivTypars ctps1 ctps2 (typarsAEquiv g aenv ctps1 ctps2) && (mtps1.Length = mtps2.Length) && (let aenv = aenv.BindEquivTypars mtps1 mtps2 (typarsAEquiv g aenv mtps1 mtps2) && ((ps1,ps2) ||> List.lengthsEqAndForall2 (List.lengthsEqAndForall2 (fun p1 p2 -> typeAEquiv g aenv p1.Type p2.Type))) && (returnTypesAEquiv g aenv rty1 rty2))) | _,_ -> false) then (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind); false) else let isStruct = (match r1.fsobjmodel_kind with TTyconStruct -> true | _ -> false) checkClassFields isStruct g amap denv err aenv r1.fsobjmodel_rfields r2.fsobjmodel_rfields && checkVirtualSlots g denv err aenv r1.fsobjmodel_vslots r2.fsobjmodel_vslots | (TAsmRepr tcr1), (TAsmRepr tcr2) -> if tcr1 <> tcr2 then (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleILDiffer); false) else true | (TMeasureableRepr ty1), (TMeasureableRepr ty2) -> if typeAEquiv g aenv ty1 ty2 then true else (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer); false) | TNoRepr, TNoRepr -> true #if EXTENSIONTYPING | TProvidedTypeExtensionPoint info1 , TProvidedTypeExtensionPoint info2 -> Tainted.EqTainted info1.ProvidedType.TypeProvider info2.ProvidedType.TypeProvider && ProvidedType.TaintedEquals(info1.ProvidedType,info2.ProvidedType) | TProvidedNamespaceExtensionPoint _, TProvidedNamespaceExtensionPoint _ -> System.Diagnostics.Debug.Assert(false, "unreachable: TProvidedNamespaceExtensionPoint only on namespaces, not types" ) true #endif | TNoRepr, _ -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer); false) | _, _ -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer); false) and checkTypeAbbrev err aenv kind1 kind2 implTypeAbbrev sigTypeAbbrev = if kind1 <> kind2 then (errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer(x, kind2.ToString(), kind1.ToString()))); false) else match implTypeAbbrev,sigTypeAbbrev with | Some ty1, Some ty2 -> if not (typeAEquiv g aenv ty1 ty2) then let s1, s2, _ = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 errorR (err (fun x -> FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(x, s1, s2))); false else true | None,None -> true | Some _, None -> (errorR (err (FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig)); false) | None, Some _ -> (errorR (err FSComp.SR.DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation); false) and checkModuleOrNamespaceContents m aenv (implModRef:ModuleOrNamespaceRef) (signModType:ModuleOrNamespaceType) = let implModType = implModRef.ModuleOrNamespaceType (if implModType.ModuleOrNamespaceKind <> signModType.ModuleOrNamespaceKind then errorR(Error(FSComp.SR.typrelModuleNamespaceAttributesDifferInSigAndImpl(),m))); (implModType.TypesByMangledName , signModType.TypesByMangledName) ||> NameMap.suball2 (fun s _fx -> errorR(RequiredButNotSpecified(denv,implModRef,"type",(fun os -> Printf.bprintf os "%s" s),m)); false) (checkTypeDef aenv) && (implModType.ModulesAndNamespacesByDemangledName, signModType.ModulesAndNamespacesByDemangledName ) ||> NameMap.suball2 (fun s fx -> errorR(RequiredButNotSpecified(denv,implModRef,(if fx.IsModule then "module" else "namespace"),(fun os -> Printf.bprintf os "%s" s),m)); false) (fun x1 x2 -> checkModuleOrNamespace aenv (mkLocalModRef x1) x2) && let sigValHadNoMatchingImplementation (fx:Val) (_closeActualVal: Val option) = errorR(RequiredButNotSpecified(denv,implModRef,"value",(fun os -> (* In the case of missing members show the full required enclosing type and signature *) if fx.IsMember then NicePrint.outputQualifiedValOrMember denv os fx else Printf.bprintf os "%s" fx.DisplayName),m)) let valuesPartiallyMatch (av:Val) (fv:Val) = (av.LinkagePartialKey.MemberParentMangledName = fv.LinkagePartialKey.MemberParentMangledName) && (av.LinkagePartialKey.LogicalName = fv.LinkagePartialKey.LogicalName) && (av.LinkagePartialKey.TotalArgCount = fv.LinkagePartialKey.TotalArgCount) (implModType.AllValsAndMembersByLogicalNameUncached, signModType.AllValsAndMembersByLogicalNameUncached) ||> NameMap.suball2 (fun _s (fxs:Val list) -> sigValHadNoMatchingImplementation fxs.Head None; false) (fun avs fvs -> match avs,fvs with | [],_ | _,[] -> failwith "unreachable" | [av],[fv] -> if valuesPartiallyMatch av fv then checkVal implModRef aenv av fv else sigValHadNoMatchingImplementation fv None false | _ -> // for each formal requirement, try to find a precisely matching actual requirement let matchingPairs = fvs |> List.choose (fun fv -> match avs |> List.tryFind (fun av -> let res = valLinkageAEquiv g aenv av fv //if res then printfn "%s" (bufs (fun buf -> Printf.bprintf buf "YES MATCH: fv '%a', av '%a'" (NicePrint.outputQualifiedValOrMember denv) fv (NicePrint.outputQualifiedValOrMember denv) av)) //else printfn "%s" (bufs (fun buf -> Printf.bprintf buf "NO MATCH: fv '%a', av '%a'" (NicePrint.outputQualifiedValOrMember denv) fv (NicePrint.outputQualifiedValOrMember denv) av)) res) with | None -> None | Some av -> Some(fv,av)) // Check the ones with matching linkage let allPairsOk = matchingPairs |> List.map (fun (fv,av) -> checkVal implModRef aenv av fv) |> List.forall id let someNotOk = matchingPairs.Length < fvs.Length // Report an error for those that don't. Try pairing up by enclosing-type/name if someNotOk then let noMatches,partialMatchingPairs = fvs |> List.splitChoose (fun fv -> match avs |> List.tryFind (fun av -> valuesPartiallyMatch av fv) with | None -> Choice1Of2 fv | Some av -> Choice2Of2(fv,av)) for (fv,av) in partialMatchingPairs do checkVal implModRef aenv av fv |> ignore for fv in noMatches do sigValHadNoMatchingImplementation fv None allPairsOk && not someNotOk) and checkModuleOrNamespace aenv implModRef sigModRef = checkModuleOrNamespaceContents implModRef.Range aenv implModRef sigModRef.ModuleOrNamespaceType && checkAttribs aenv implModRef.Attribs sigModRef.Attribs implModRef.Deref.SetAttribs member __.CheckSignature aenv (implModRef:ModuleOrNamespaceRef) (signModType:ModuleOrNamespaceType) = checkModuleOrNamespaceContents implModRef.Range aenv implModRef signModType member __.CheckTypars m aenv (implTypars: Typars) (signTypars: Typars) = checkTypars m aenv implTypars signTypars /// Check the names add up between a signature and its implementation. We check this first. let rec CheckNamesOfModuleOrNamespaceContents denv (implModRef:ModuleOrNamespaceRef) (signModType:ModuleOrNamespaceType) = let m = implModRef.Range let implModType = implModRef.ModuleOrNamespaceType NameMap.suball2 (fun s _fx -> errorR(RequiredButNotSpecified(denv,implModRef,"type",(fun os -> Printf.bprintf os "%s" s),m)); false) (fun _ _ -> true) implModType.TypesByMangledName signModType.TypesByMangledName && (implModType.ModulesAndNamespacesByDemangledName, signModType.ModulesAndNamespacesByDemangledName ) ||> NameMap.suball2 (fun s fx -> errorR(RequiredButNotSpecified(denv,implModRef,(if fx.IsModule then "module" else "namespace"),(fun os -> Printf.bprintf os "%s" s),m)); false) (fun x1 (x2:ModuleOrNamespace) -> CheckNamesOfModuleOrNamespace denv (mkLocalModRef x1) x2.ModuleOrNamespaceType) && (implModType.AllValsAndMembersByLogicalNameUncached , signModType.AllValsAndMembersByLogicalNameUncached) ||> NameMap.suball2 (fun _s (fxs:Val list) -> let fx = fxs.Head errorR(RequiredButNotSpecified(denv,implModRef,"value",(fun os -> // In the case of missing members show the full required enclosing type and signature if isSome fx.MemberInfo then NicePrint.outputQualifiedValOrMember denv os fx else Printf.bprintf os "%s" fx.DisplayName),m)); false) (fun _ _ -> true) and CheckNamesOfModuleOrNamespace denv (implModRef:ModuleOrNamespaceRef) signModType = CheckNamesOfModuleOrNamespaceContents denv implModRef signModType end //------------------------------------------------------------------------- // Completeness of classes //------------------------------------------------------------------------- type OverrideCanImplement = | CanImplementAnyInterfaceSlot | CanImplementAnyClassHierarchySlot | CanImplementAnySlot | CanImplementNoSlots /// The overall information about a method implementation in a class or object expression type OverrideInfo = | Override of OverrideCanImplement * TyconRef * Ident * (Typars * TyparInst) * (*argTypes:*)TType list list * (*Type:*)TType option * (*isFakeEventProperty:*)bool member x.IsFakeEventProperty = let (Override(_,_,_,_,_,_,b)) = x in b member x.LogicalName = let (Override(_,_,id,_,_,_,_)) = x in id.idText member x.Range = let (Override(_,_,id,_,_,_,_)) = x in id.idRange member x.BoundingTyconRef = let (Override(_,ty,_,_,_,_,_)) = x in ty // If the bool is true then the slot is optional, i.e. is an interface slot // which does not _have_ to be implemented, because an inherited implementation // is available. type RequiredSlot = RequiredSlot of MethInfo * (* isOptional: *) bool type SlotImplSet = SlotImplSet of RequiredSlot list * NameMultiMap * OverrideInfo list * PropInfo list exception TypeIsImplicitlyAbstract of range exception OverrideDoesntOverride of DisplayEnv * OverrideInfo * MethInfo option * TcGlobals * Import.ImportMap * range module DispatchSlotChecking = let PrintOverrideToBuffer denv os (Override(_,_,id,(mtps,memberToParentInst),argTys,retTy,_)) = let denv = { denv with showTyparBinding = true } let retTy = (retTy |> GetFSharpViewOfReturnType denv.g) let argInfos = match argTys with | [] -> [[(denv.g.unit_ty,ValReprInfo.unnamedTopArg1)]] | _ -> argTys |> List.mapSquared (fun ty -> (ty, ValReprInfo.unnamedTopArg1)) Layout.bufferL os (NicePrint.layoutMemberSig denv (memberToParentInst,id.idText,mtps, argInfos, retTy)) let PrintMethInfoSigToBuffer g amap m denv os minfo = let denv = { denv with showTyparBinding = true } let (CompiledSig(argTys,retTy,fmtps,ttpinst)) = CompiledSigOfMeth g amap m minfo let retTy = (retTy |> GetFSharpViewOfReturnType g) let argInfos = argTys |> List.mapSquared (fun ty -> (ty, ValReprInfo.unnamedTopArg1)) let nm = minfo.LogicalName Layout.bufferL os (NicePrint.layoutMemberSig denv (ttpinst,nm,fmtps, argInfos, retTy)) let FormatOverride denv d = bufs (fun buf -> PrintOverrideToBuffer denv buf d) let FormatMethInfoSig g amap m denv d = bufs (fun buf -> PrintMethInfoSigToBuffer g amap m denv buf d) let GetInheritedMemberOverrideInfo g amap m parentType (minfo:MethInfo) = let nm = minfo.LogicalName let (CompiledSig (argTys,retTy,fmtps,ttpinst)) = CompiledSigOfMeth g amap m minfo let isFakeEventProperty = minfo.IsFSharpEventProperty Override(parentType,tcrefOfAppTy g minfo.EnclosingType,mkSynId m nm, (fmtps,ttpinst),argTys,retTy,isFakeEventProperty) let GetTypeMemberOverrideInfo g reqdTy (overrideBy:ValRef) = let _,argInfos,retTy,_ = GetTypeOfMemberInMemberForm g overrideBy let nm = overrideBy.LogicalName let argTys = argInfos |> List.mapSquared fst let memberMethodTypars,memberToParentInst,argTys,retTy = match PartitionValRefTypars g overrideBy with | Some(_,_,memberMethodTypars,memberToParentInst,_tinst) -> let argTys = argTys |> List.mapSquared (instType memberToParentInst) let retTy = retTy |> Option.map (instType memberToParentInst) memberMethodTypars, memberToParentInst,argTys, retTy | None -> error(Error(FSComp.SR.typrelMethodIsOverconstrained(),overrideBy.Range)) let implKind = if ValRefIsExplicitImpl g overrideBy then let belongsToReqdTy = match overrideBy.MemberInfo.Value.ImplementedSlotSigs with | [] -> false | ss :: _ -> isInterfaceTy g ss.ImplementedType && typeEquiv g reqdTy ss.ImplementedType if belongsToReqdTy then CanImplementAnyInterfaceSlot else CanImplementNoSlots else if MemberRefIsDispatchSlot overrideBy then CanImplementNoSlots // abstract slots can only implement interface slots //CanImplementAnyInterfaceSlot <<----- Change to this to enable implicit interface implementation else CanImplementAnyClassHierarchySlot //CanImplementAnySlot <<----- Change to this to enable implicit interface implementation let isFakeEventProperty = overrideBy.IsFSharpEventProperty(g) Override(implKind,overrideBy.MemberApparentParent, mkSynId overrideBy.Range nm, (memberMethodTypars,memberToParentInst),argTys,retTy,isFakeEventProperty) let GetObjectExprOverrideInfo g amap (implty, id:Ident, memberFlags, ty, arityInfo, bindingAttribs, rhsExpr) = // Dissect the type let tps, argInfos, retTy, _ = GetMemberTypeInMemberForm g memberFlags arityInfo ty id.idRange let argTys = argInfos |> List.mapSquared fst // Dissect the implementation let _, ctorThisValOpt, baseValOpt, vsl, rhsExpr,_ = destTopLambda g amap arityInfo (rhsExpr,ty) assert ctorThisValOpt.IsNone // Drop 'this' match vsl with | [thisv]::vs -> // Check for empty variable list from a () arg let vs = if vs.Length = 1 && argInfos.IsEmpty then [] else vs let implKind = if isInterfaceTy g implty then CanImplementAnyInterfaceSlot else CanImplementAnyClassHierarchySlot //CanImplementAnySlot <<----- Change to this to enable implicit interface implementation let isFakeEventProperty = CompileAsEvent g bindingAttribs let overrideByInfo = Override(implKind, tcrefOfAppTy g implty, id, (tps,[]), argTys, retTy, isFakeEventProperty) overrideByInfo, (baseValOpt, thisv, vs, bindingAttribs, rhsExpr) | _ -> error(InternalError("Unexpected shape for object expression override",id.idRange)) let IsNameMatch (dispatchSlot:MethInfo) (overrideBy: OverrideInfo) = (overrideBy.LogicalName = dispatchSlot.LogicalName) let IsImplMatch g (dispatchSlot:MethInfo) (Override(implKind,_,_,_,_,_,_)) = // If the override is listed as only relevant to one type, and we're matching it against an abstract slot of an interface type, // then check that interface type is the right type. (match implKind with | CanImplementNoSlots -> false | CanImplementAnySlot -> true | CanImplementAnyClassHierarchySlot -> not (isInterfaceTy g dispatchSlot.EnclosingType) //| CanImplementSpecificInterfaceSlot parentTy -> isInterfaceTy g dispatchSlot.EnclosingType && typeEquiv g parentTy dispatchSlot.EnclosingType | CanImplementAnyInterfaceSlot -> isInterfaceTy g dispatchSlot.EnclosingType) let IsTyparKindMatch g amap m (dispatchSlot:MethInfo) (Override(_,_,_,(mtps,_),_,_,_)) = let (CompiledSig(_,_,fvmtps,_)) = CompiledSigOfMeth g amap m dispatchSlot List.lengthsEqAndForall2 (fun (tp1:Typar) (tp2:Typar) -> tp1.Kind = tp2.Kind) mtps fvmtps let IsPartialMatch g amap m (dispatchSlot:MethInfo) (Override(_,_,_,(mtps,_),argTys,_retTy,_) as overrideBy) = IsNameMatch dispatchSlot overrideBy && let (CompiledSig (vargtys,_,fvmtps,_)) = CompiledSigOfMeth g amap m dispatchSlot mtps.Length = fvmtps.Length && IsTyparKindMatch g amap m dispatchSlot overrideBy && argTys.Length = vargtys.Length && IsImplMatch g dispatchSlot overrideBy let reverseTyparRenaming g tinst = tinst |> List.map (fun (tp,ty) -> (destTyparTy g ty, mkTyparTy tp)) let composeTyparInsts inst1 inst2 = inst1 |> List.map (map2Of2 (instType inst2)) let IsExactMatch g amap m dispatchSlot (Override(_,_,_,(mtps,mtpinst),argTys,retTy,_) as overrideBy) = IsPartialMatch g amap m dispatchSlot overrideBy && let (CompiledSig (vargtys,vrty,fvmtps,ttpinst)) = CompiledSigOfMeth g amap m dispatchSlot // Compare the types. CompiledSigOfMeth, GetObjectExprOverrideInfo and GetTypeMemberOverrideInfo have already // applied all relevant substitutions except the renamings from fvtmps <-> mtps let aenv = TypeEquivEnv.FromEquivTypars fvmtps mtps List.forall2 (List.lengthsEqAndForall2 (typeAEquiv g aenv)) vargtys argTys && returnTypesAEquiv g aenv vrty retTy && // Comparing the method typars and their constraints is much trickier since the substitutions have not been applied // to the constraints of these babies. This is partly because constraints are directly attached to typars so it's // difficult to apply substitutions to them unless we separate them off at some point, which we don't as yet. // // Given C // D // dispatchSlot : C.M(...) // overrideBy: parent: D value: ! (...) // // where X[dtps] indicates that X may involve free type variables dtps // // we have // ttpinst maps ctps --> ctys[dtps] // mtpinst maps ttps --> dtps // // compare fvtmps[ctps] and mtps[ttps] by // fvtmps[ctps] @ ttpinst -- gives fvtmps[dtps] // fvtmps[dtps] @ rev(mtpinst) -- gives fvtmps[ttps] // // Now fvtmps[ttps] and mtpinst[ttps] are comparable, i.e. have contraints w.r.t. the same set of type variables // // i.e. Compose the substitutions ttpinst and rev(mtpinst) let ttpinst = // check we can reverse - in some error recovery situations we can't if mtpinst |> List.exists (snd >> isTyparTy g >> not) then ttpinst else composeTyparInsts ttpinst (reverseTyparRenaming g mtpinst) // Compare under the composed substitutions let aenv = TypeEquivEnv.FromTyparInst ttpinst typarsAEquiv g aenv fvmtps mtps let OverrideImplementsDispatchSlot g amap m dispatchSlot availPriorOverride = IsExactMatch g amap m dispatchSlot availPriorOverride && // The override has to actually be in some subtype of the dispatch slot ExistsHeadTypeInEntireHierarchy g amap m (generalizedTyconRef availPriorOverride.BoundingTyconRef) (tcrefOfAppTy g dispatchSlot.EnclosingType) let DispatchSlotIsAlreadyImplemented g amap m availPriorOverridesKeyed (dispatchSlot: MethInfo) = availPriorOverridesKeyed |> NameMultiMap.find dispatchSlot.LogicalName |> List.exists (OverrideImplementsDispatchSlot g amap m dispatchSlot) /// 6a. check all interface and abstract methods are implemented let CheckDispatchSlotsAreImplemented (denv,g,amap,m, isOverallTyAbstract, reqdTy, dispatchSlots:RequiredSlot list, availPriorOverrides:OverrideInfo list, overrides:OverrideInfo list) = let isReqdTyInterface = isInterfaceTy g reqdTy let showMissingMethodsAndRaiseErrors = (isReqdTyInterface || not isOverallTyAbstract) let res = ref true let fail exn = (res := false ; if showMissingMethodsAndRaiseErrors then errorR exn) // Index the availPriorOverrides and overrides by name let availPriorOverridesKeyed = availPriorOverrides |> NameMultiMap.initBy (fun ov -> ov.LogicalName) let overridesKeyed = overrides |> NameMultiMap.initBy (fun ov -> ov.LogicalName) dispatchSlots |> List.iter (fun (RequiredSlot(dispatchSlot,isOptional)) -> match NameMultiMap.find dispatchSlot.LogicalName overridesKeyed |> List.filter (OverrideImplementsDispatchSlot g amap m dispatchSlot) with | [_] -> () | [] -> if not isOptional && // Check that no available prior override implements this dispatch slot not (DispatchSlotIsAlreadyImplemented g amap m availPriorOverridesKeyed dispatchSlot) then // error reporting path let (CompiledSig (vargtys,_vrty,fvmtps,_)) = CompiledSigOfMeth g amap m dispatchSlot let noimpl() = if isReqdTyInterface then fail(Error(FSComp.SR.typrelNoImplementationGivenWithSuggestion(NicePrint.stringOfMethInfo amap m denv dispatchSlot), m)) else fail(Error(FSComp.SR.typrelNoImplementationGiven(NicePrint.stringOfMethInfo amap m denv dispatchSlot), m)) match overrides |> List.filter (IsPartialMatch g amap m dispatchSlot) with | [] -> match overrides |> List.filter (fun overrideBy -> IsNameMatch dispatchSlot overrideBy && IsImplMatch g dispatchSlot overrideBy) with | [] -> noimpl() | [ Override(_,_,_,(mtps,_),argTys,_,_) as overrideBy ] -> let error_msg = if argTys.Length <> vargtys.Length then FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot) elif mtps.Length <> fvmtps.Length then FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot) elif not (IsTyparKindMatch g amap m dispatchSlot overrideBy) then FSComp.SR.typrelMemberDoesNotHaveCorrectKindsOfGenericParameters(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot) else FSComp.SR.typrelMemberCannotImplement(FormatOverride denv overrideBy, NicePrint.stringOfMethInfo amap m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot) fail(Error(error_msg, overrideBy.Range)) | overrideBy :: _ -> errorR(Error(FSComp.SR.typrelOverloadNotFound(FormatMethInfoSig g amap m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot),overrideBy.Range)) | [ overrideBy ] -> match dispatchSlots |> List.filter (fun (RequiredSlot(dispatchSlot,_)) -> OverrideImplementsDispatchSlot g amap m dispatchSlot overrideBy) with | [] -> // Error will be reported below in CheckOverridesAreAllUsedOnce () | _ -> noimpl() | _ -> fail(Error(FSComp.SR.typrelOverrideWasAmbiguous(FormatMethInfoSig g amap m denv dispatchSlot),m)) | _ -> fail(Error(FSComp.SR.typrelMoreThenOneOverride(FormatMethInfoSig g amap m denv dispatchSlot),m))); !res /// 6b. check all implementations implement some virtual method let CheckOverridesAreAllUsedOnce denv g amap (isObjExpr, reqdTy, dispatchSlotsKeyed: NameMultiMap, availPriorOverrides: OverrideInfo list, overrides ) = let availPriorOverridesKeyed = availPriorOverrides |> NameMultiMap.initBy (fun ov -> ov.LogicalName) for (Override _ as overrideBy) in overrides do if not overrideBy.IsFakeEventProperty then let m = overrideBy.Range let relevantVirts = NameMultiMap.find overrideBy.LogicalName dispatchSlotsKeyed let relevantVirts = relevantVirts |> List.map (fun (RequiredSlot(dispatchSlot,_)) -> dispatchSlot) match relevantVirts |> List.filter (fun dispatchSlot -> OverrideImplementsDispatchSlot g amap m dispatchSlot overrideBy) with | [] -> // This is all error reporting match relevantVirts |> List.filter (fun dispatchSlot -> IsPartialMatch g amap m dispatchSlot overrideBy) with | [dispatchSlot] -> errorR(OverrideDoesntOverride(denv,overrideBy,Some dispatchSlot,g,amap,m)) | _ -> match relevantVirts |> List.filter (fun dispatchSlot -> IsNameMatch dispatchSlot overrideBy) with | [dispatchSlot] -> errorR(OverrideDoesntOverride(denv, overrideBy, Some dispatchSlot, g, amap, m)) | _ -> errorR(OverrideDoesntOverride(denv,overrideBy,None,g,amap,m)) | [dispatchSlot] -> if dispatchSlot.IsFinal && (isObjExpr || not (typeEquiv g reqdTy dispatchSlot.EnclosingType)) then errorR(Error(FSComp.SR.typrelMethodIsSealed(NicePrint.stringOfMethInfo amap m denv dispatchSlot),m)) | dispatchSlots -> match dispatchSlots |> List.filter (fun dispatchSlot -> isInterfaceTy g dispatchSlot.EnclosingType || not (DispatchSlotIsAlreadyImplemented g amap m availPriorOverridesKeyed dispatchSlot)) with | h1 :: h2 :: _ -> errorR(Error(FSComp.SR.typrelOverrideImplementsMoreThenOneSlot((FormatOverride denv overrideBy), (NicePrint.stringOfMethInfo amap m denv h1), (NicePrint.stringOfMethInfo amap m denv h2)),m)) | _ -> // dispatch slots are ordered from the derived classes to base // so we can check the topmost dispatch slot if it is final match dispatchSlots with | meth::_ when meth.IsFinal -> errorR(Error(FSComp.SR.tcCannotOverrideSealedMethod((sprintf "%s::%s" (meth.EnclosingType.ToString()) (meth.LogicalName))), m)); () | _ -> () /// Get the slots of a type that can or must be implemented. This depends /// partly on the full set of interface types that are being implemented /// simultaneously, e.g. /// { new C with interface I2 = ... interface I3 = ... } /// allReqdTys = {C;I2;I3} /// /// allReqdTys can include one class/record/union type. let GetSlotImplSets (infoReader:InfoReader) denv isObjExpr allReqdTys = let g = infoReader.g let amap = infoReader.amap let availImpliedInterfaces : TType list = [ for (reqdTy,m) in allReqdTys do if not (isInterfaceTy g reqdTy) then let baseTyOpt = if isObjExpr then Some reqdTy else GetSuperTypeOfType g amap m reqdTy match baseTyOpt with | None -> () | Some baseTy -> yield! AllInterfacesOfType g amap m AllowMultiIntfInstantiations.Yes baseTy ] // For each implemented type, get a list containing the transitive closure of // interface types implied by the type. This includes the implemented type itself if the implemented type // is an interface type. let intfSets = allReqdTys |> List.mapi (fun i (reqdTy,m) -> let interfaces = AllInterfacesOfType g amap m AllowMultiIntfInstantiations.Yes reqdTy let impliedTys = (if isInterfaceTy g reqdTy then interfaces else reqdTy :: interfaces) (i, reqdTy, impliedTys,m)) // For each implemented type, reduce its list of implied interfaces by subtracting out those implied // by another implemented interface type. // // REVIEW: Note complexity O(ity*jty) let reqdTyInfos = intfSets |> List.map (fun (i,reqdTy,impliedTys,m) -> let reduced = (impliedTys,intfSets) ||> List.fold (fun acc (j,jty,impliedTys2,m) -> if i <> j && TypeFeasiblySubsumesType 0 g amap m jty CanCoerce reqdTy then ListSet.subtract (TypesFeasiblyEquiv 0 g amap m) acc impliedTys2 else acc ) (i, reqdTy, m, reduced)) // Check that, for each implemented type, at least one implemented type is implied. This is enough to capture // duplicates. for (_i, reqdTy, m, impliedTys) in reqdTyInfos do if isInterfaceTy g reqdTy && isNil impliedTys then errorR(Error(FSComp.SR.typrelDuplicateInterface(),m)); // Check that no interface type is implied twice // // Note complexity O(reqdTy*reqdTy) for (i, _reqdTy, reqdTyRange, impliedTys) in reqdTyInfos do for (j,_,_,impliedTys2) in reqdTyInfos do if i > j then let overlap = ListSet.intersect (TypesFeasiblyEquiv 0 g amap reqdTyRange) impliedTys impliedTys2 overlap |> List.iter (fun overlappingTy -> if nonNil(GetImmediateIntrinsicMethInfosOfType (None,AccessibleFromSomewhere) g amap reqdTyRange overlappingTy |> List.filter (fun minfo -> minfo.IsVirtual)) then errorR(Error(FSComp.SR.typrelNeedExplicitImplementation(NicePrint.minimalStringOfType denv (List.head overlap)),reqdTyRange))); // Get the SlotImplSet for each implemented type // This contains the list of required members and the list of available members [ for (_,reqdTy,reqdTyRange,impliedTys) in reqdTyInfos do // Build a table of the implied interface types, for quicker lookup let isImpliedInterfaceTable = impliedTys |> List.filter (isInterfaceTy g) |> List.map (fun ty -> tcrefOfAppTy g ty, ()) |> TyconRefMap.OfList // Is a member an abstract slot of one of the implied interface types? let isImpliedInterfaceType ty = isImpliedInterfaceTable.ContainsKey (tcrefOfAppTy g ty) && impliedTys |> List.exists (TypesFeasiblyEquiv 0 g amap reqdTyRange ty) //let isSlotImpl (minfo:MethInfo) = // not minfo.IsAbstract && minfo.IsVirtual // Compute the abstract slots that require implementations let dispatchSlots = [ if isInterfaceTy g reqdTy then for impliedTy in impliedTys do // Check if the interface has an inherited implementation // If so, you do not have to implement all the methods - each // specific method is "optionally" implemented. let isOptional = ListSet.contains (typeEquiv g) impliedTy availImpliedInterfaces for reqdSlot in GetImmediateIntrinsicMethInfosOfType (None,AccessibleFromSomewhere) g amap reqdTyRange impliedTy do yield RequiredSlot(reqdSlot, isOptional) else // In the normal case, the requirements for a class are precisely all the abstract slots up the whole hierarchy. // So here we get and yield all of those. for minfo in reqdTy |> GetIntrinsicMethInfosOfType infoReader (None,AccessibleFromSomewhere,AllowMultiIntfInstantiations.Yes) IgnoreOverrides reqdTyRange do if minfo.IsDispatchSlot then yield RequiredSlot(minfo,(*isOptional=*)false) ] // Compute the methods that are available to implement abstract slots from the base class // // This is used in CheckDispatchSlotsAreImplemented when we think a dispatch slot may not // have been implemented. let availPriorOverrides : OverrideInfo list = if isInterfaceTy g reqdTy then [] else let reqdTy = let baseTyOpt = if isObjExpr then Some reqdTy else GetSuperTypeOfType g amap reqdTyRange reqdTy match baseTyOpt with | None -> reqdTy | Some baseTy -> baseTy [ // Get any class hierarchy methods on this type // // NOTE: What we have below is an over-approximation that will get too many methods // and not always correctly relate them to the slots they implement. For example, // we may get an override from a base class and believe it implements a fresh, new abstract // slot in a subclass. for minfos in infoReader.GetRawIntrinsicMethodSetsOfType(None,AccessibleFromSomewhere,AllowMultiIntfInstantiations.Yes,reqdTyRange,reqdTy) do for minfo in minfos do if not minfo.IsAbstract then yield GetInheritedMemberOverrideInfo g amap reqdTyRange CanImplementAnyClassHierarchySlot minfo ] // We also collect up the properties. This is used for abstract slot inference when overriding properties let isRelevantRequiredProperty (x:PropInfo) = (x.IsVirtualProperty && not (isInterfaceTy g reqdTy)) || isImpliedInterfaceType x.EnclosingType let reqdProperties = GetIntrinsicPropInfosOfType infoReader (None,AccessibleFromSomewhere,AllowMultiIntfInstantiations.Yes) IgnoreOverrides reqdTyRange reqdTy |> List.filter isRelevantRequiredProperty let dispatchSlotsKeyed = dispatchSlots |> NameMultiMap.initBy (fun (RequiredSlot(v,_)) -> v.LogicalName) yield SlotImplSet(dispatchSlots, dispatchSlotsKeyed, availPriorOverrides, reqdProperties) ] let CheckImplementationRelationAtEndOfInferenceScope (infoReader:InfoReader,denv,tycon:Tycon,isImplementation) = let g = infoReader.g let amap = infoReader.amap let tcaug = tycon.TypeContents let interfaces = tycon.ImmediateInterfacesOfFSharpTycon let interfaces = interfaces |> List.map (fun (ity,_compgen,m) -> (ity,m)) let overallTy = generalizedTyconRef (mkLocalTyconRef tycon) let allReqdTys = (overallTy,tycon.Range) :: interfaces // Get all the members that are immediately part of this type // Include the auto-generated members let allImmediateMembers = tycon.MembersOfFSharpTyconSorted @ tycon.AllGeneratedValues // Get all the members we have to implement, organized by each type we explicitly implement let slotImplSets = GetSlotImplSets infoReader denv false allReqdTys let allImpls = List.zip allReqdTys slotImplSets // Find the methods relevant to implementing the abstract slots listed under the reqdType being checked. let allImmediateMembersThatMightImplementDispatchSlots = allImmediateMembers |> List.filter (fun overrideBy -> overrideBy.IsInstanceMember && // exclude static MemberRefIsVirtual overrideBy && // exclude non virtual (e.g. keep override/default). [4469] not (MemberRefIsDispatchSlot overrideBy)) let mustOverrideSomething reqdTy (overrideBy:ValRef) = let memberInfo = overrideBy.MemberInfo.Value not (overrideBy.IsFSharpEventProperty(g)) && memberInfo.MemberFlags.IsOverrideOrExplicitImpl && match memberInfo.ImplementedSlotSigs with | [] -> // Are we looking at the implementation of the class hierarchy? If so include all the override members not (isInterfaceTy g reqdTy) | ss -> ss |> List.forall (fun ss -> let ty = ss.ImplementedType if isInterfaceTy g ty then // Is this a method impl listed under the reqdTy? typeEquiv g ty reqdTy else not (isInterfaceTy g reqdTy) ) // We check all the abstracts related to the class hierarchy and then check each interface implementation for ((reqdTy,m),slotImplSet) in allImpls do let (SlotImplSet(dispatchSlots, dispatchSlotsKeyed, availPriorOverrides,_)) = slotImplSet try // Now extract the information about each overriding method relevant to this SlotImplSet let allImmediateMembersThatMightImplementDispatchSlots = allImmediateMembersThatMightImplementDispatchSlots |> List.map (fun overrideBy -> overrideBy,GetTypeMemberOverrideInfo g reqdTy overrideBy) // Now check the implementation // We don't give missing method errors for abstract classes if isImplementation && not (isInterfaceTy g overallTy) then let overrides = allImmediateMembersThatMightImplementDispatchSlots |> List.map snd let allCorrect = CheckDispatchSlotsAreImplemented (denv,g,amap,m,tcaug.tcaug_abstract,reqdTy,dispatchSlots,availPriorOverrides,overrides) // Tell the user to mark the thing abstract if it was missing implementations if not allCorrect && not tcaug.tcaug_abstract && not (isInterfaceTy g reqdTy) then errorR(TypeIsImplicitlyAbstract(m)); let overridesToCheck = allImmediateMembersThatMightImplementDispatchSlots |> List.filter (fst >> mustOverrideSomething reqdTy) |> List.map snd CheckOverridesAreAllUsedOnce denv g amap (false, reqdTy, dispatchSlotsKeyed, availPriorOverrides, overridesToCheck); with e -> errorRecovery e m; () // Now record the full slotsigs of the abstract members implemented by each override. // This is used to generate IL MethodImpls in the code generator. allImmediateMembersThatMightImplementDispatchSlots |> List.iter (fun overrideBy -> let isFakeEventProperty = overrideBy.IsFSharpEventProperty(g) if not isFakeEventProperty then let overriden = [ for ((reqdTy,m),(SlotImplSet(_dispatchSlots,dispatchSlotsKeyed,_,_))) in allImpls do let overrideByInfo = GetTypeMemberOverrideInfo g reqdTy overrideBy let overridenForThisSlotImplSet = [ for (RequiredSlot(dispatchSlot,_)) in NameMultiMap.find overrideByInfo.LogicalName dispatchSlotsKeyed do if OverrideImplementsDispatchSlot g amap m dispatchSlot overrideByInfo then if tyconRefEq g overrideByInfo.BoundingTyconRef (tcrefOfAppTy g dispatchSlot.EnclosingType) then match dispatchSlot.ArbitraryValRef with | Some virtMember -> if virtMember.MemberInfo.Value.IsImplemented then errorR(Error(FSComp.SR.tcDefaultImplementationAlreadyExists(),overrideByInfo.Range)); virtMember.MemberInfo.Value.IsImplemented <- true | None -> () // not an F# slot // Get the slotsig of the overriden method let slotsig = dispatchSlot.GetSlotSig(amap, m) // The slotsig from the overriden method is in terms of the type parameters on the parent type of the overriding method, // Modify map the slotsig so it is in terms of the type parameters for the overriding method let slotsig = ReparentSlotSigToUseMethodTypars g m overrideBy slotsig // Record the slotsig via mutation yield slotsig ] //if mustOverrideSomething reqdTy overrideBy then // assert nonNil overridenForThisSlotImplSet yield! overridenForThisSlotImplSet ] overrideBy.MemberInfo.Value.ImplementedSlotSigs <- overriden); //------------------------------------------------------------------------- // Sets of methods involved in overload resolution and trait constraint // satisfaction. //------------------------------------------------------------------------- /// In the following, 'T gets instantiated to: /// 1. the expression being supplied for an argument /// 2. "unit", when simply checking for the existence of an overload that satisfies /// a signature, or when finding the corresponding witness. /// Note the parametricity helps ensure that overload resolution doesn't depend on the /// expression on the callside (though it is in some circumstances allowed /// to depend on some type information inferred syntactically from that /// expression, e.g. a lambda expression may be converted to a delegate as /// an adhoc conversion. /// /// The bool indicates if named using a '?' type CallerArg<'T> = | CallerArg of TType * range * bool * 'T member x.Type = (let (CallerArg(ty,_,_,_)) = x in ty) /// CalledArg(pos,isParamArray,optArgInfo,isOutArg,nmOpt,argType) type CalledArg = | CalledArg of (int * int) * bool (* isParamArray *) * OptionalArgInfo * bool (* isOutArg *) * string option * TType member x.Type = (let (CalledArg(_,_,_,_,_,ty)) = x in ty) member x.Position = (let (CalledArg(i,_,_,_,_,_)) = x in i) type AssignedCalledArg<'T> = | AssignedCalledArg of Ident option * CalledArg * CallerArg<'T> member x.CalledArg = (let (AssignedCalledArg(_,calledArg,_)) = x in calledArg) member x.Position = x.CalledArg.Position type AssignedItemSetterTarget = | AssignedPropSetter of PropInfo * MethInfo * TypeInst (* the MethInfo is a non-indexer setter property *) | AssignedIlFieldSetter of ILFieldInfo | AssignedRecdFieldSetter of RecdFieldInfo type AssignedItemSetter<'T> = AssignedItemSetter of Ident * AssignedItemSetterTarget * CallerArg<'T> type CallerNamedArg<'T> = | CallerNamedArg of Ident * CallerArg<'T> member x.Ident = (let (CallerNamedArg(id,_carg)) = x in id) member x.Name = x.Ident.idText type CalledMethArgSet<'T> = | CalledMethArgSet of // The called arguments corresponding to "unnamed" arguments CalledArg list * // Any unnamed caller arguments not otherwise assigned CallerArg<'T> list * // The called "ParamArray" argument, if any CalledArg option * // Any unnamed caller arguments assigned to a "param array" argument CallerArg<'T> list * // named args AssignedCalledArg<'T> list member x.UnnamedCalledArgs = match x with (CalledMethArgSet(unnamedCalledArgs,_,_,_,_)) -> unnamedCalledArgs member x.UnnamedCallerArgs = match x with (CalledMethArgSet(_,unnamedCallerArgs,_,_,_)) -> unnamedCallerArgs member x.ParamArrayCalledArgOpt = match x with (CalledMethArgSet(_,_,paramArrayCalledArgOpt,_,_)) -> paramArrayCalledArgOpt member x.ParamArrayCallerArgs = match x with (CalledMethArgSet(_,_,_,paramArrayCallerArgs,_)) -> paramArrayCallerArgs member x.AssignedNamedArgs = match x with (CalledMethArgSet(_,_,_,_,namedArgs)) -> namedArgs member x.NumUnnamedCallerArgs = x.UnnamedCallerArgs.Length member x.NumAssignedNamedArgs = x.AssignedNamedArgs.Length member x.NumUnnamedCalledArgs = x.UnnamedCalledArgs.Length // CLEANUP: make this a record or class type CalledMeth<'T> = | CalledMeth of // the method we're attempting to call MethInfo * // the instantiation of the method we're attempting to call TypeInst * // the formal instantiation of the method we're attempting to call TypeInst * // The types of the actual object arguments, if any TType list * // The argument analysis for each set of curried arguments CalledMethArgSet<'T> list * // return type TType * // named property setters AssignedItemSetter<'T> list * // the property related to the method we're attempting to call, if any PropInfo option * // unassigned args CallerNamedArg<'T> list * // args assigned to specifiy values for attribute fields and properties (these are not necessarily "property sets") CallerNamedArg<'T> list * // unnamed called optional args: pass defaults for these CalledArg list * // unnamed called out args: return these as part of the return tuple CalledArg list member x.Method = match x with (CalledMeth(minfo,_,_,_,_,_,_,_,_,_,_,_)) -> minfo static member GetMethod (x:CalledMeth<'T>) = x.Method member x.CalledTyArgs = match x with (CalledMeth(_,minst,_,_,_,_,_,_,_,_,_,_)) -> minst member x.CallerTyArgs = match x with (CalledMeth(_,_,userTypeArgs,_,_,_,_,_,_,_,_,_)) -> userTypeArgs member x.CallerObjArgTys = match x with (CalledMeth(_,_,_,callerObjArgTys,_,_,_,_,_,_,_,_)) -> callerObjArgTys member x.ArgSets = match x with (CalledMeth(_,_,_,_,argSets,_,_,_,_,_,_,_)) -> argSets member x.NumArgSets = x.ArgSets.Length member x.AssignedProps = match x with (CalledMeth(_,_,_,_,_,_,namedProps,_,_,_,_,_)) -> namedProps member x.AssociatedPropertyInfo = match x with (CalledMeth(_,_,_,_,_,_,_,x,_,_,_,_)) -> x member x.UnassignedNamedArgs = match x with (CalledMeth(_,_,_,_,_,_,_,_,unassignedNamedItems,_,_,_)) -> unassignedNamedItems member x.AttributeAssignedNamedArgs = match x with (CalledMeth(_,_,_,_,_,_,_,_,_,x,_,_)) -> x member x.HasOptArgs = match x with (CalledMeth(_,_,_,_,_,_,_,_,_,_,unnamedCalledOptArgs,_)) -> nonNil unnamedCalledOptArgs member x.HasOutArgs = match x with (CalledMeth(_,_,_,_,_,_,_,_,_,_,_,unnamedCalledOutArgs)) -> nonNil unnamedCalledOutArgs member x.UsesParamArrayConversion = x.ArgSets |> List.exists (fun argSet -> argSet.ParamArrayCalledArgOpt.IsSome) member x.ParamArrayCalledArgOpt = x.ArgSets |> List.tryPick (fun argSet -> argSet.ParamArrayCalledArgOpt) member x.ParamArrayCallerArgs = x.ArgSets |> List.tryPick (fun argSet -> if isSome argSet.ParamArrayCalledArgOpt then Some argSet.ParamArrayCallerArgs else None ) member x.ParamArrayElementType(g) = assert (x.UsesParamArrayConversion) x.ParamArrayCalledArgOpt.Value.Type |> destArrayTy g member x.NumAssignedProps = x.AssignedProps.Length member x.CalledObjArgTys(amap,m) = x.Method.GetObjArgTypes(amap, m, x.CalledTyArgs) member x.NumCalledTyArgs = x.CalledTyArgs.Length member x.NumCallerTyArgs = x.CallerTyArgs.Length member x.AssignsAllNamedArgs = isNil x.UnassignedNamedArgs member x.HasCorrectArity = (x.NumCalledTyArgs = x.NumCallerTyArgs) && x.ArgSets |> List.forall (fun argSet -> argSet.NumUnnamedCalledArgs = argSet.NumUnnamedCallerArgs) member x.HasCorrectGenericArity = (x.NumCalledTyArgs = x.NumCallerTyArgs) member x.IsAccessible(amap,m,ad) = IsMethInfoAccessible amap m ad x.Method member x.HasCorrectObjArgs(amap,m,_ad) = x.CalledObjArgTys(amap,m).Length = x.CallerObjArgTys.Length member x.IsCandidate(_g,amap,m,ad) = x.IsAccessible(amap,m,ad) && x.HasCorrectArity && x.HasCorrectObjArgs(amap,m,ad) && x.AssignsAllNamedArgs member x.AllUnnamedCalledArgs = x.ArgSets |> List.collect (fun x -> x.UnnamedCalledArgs) member x.TotalNumUnnamedCalledArgs = x.ArgSets |> List.sumBy (fun x -> x.NumUnnamedCalledArgs) member x.TotalNumUnnamedCallerArgs = x.ArgSets |> List.sumBy (fun x -> x.NumUnnamedCallerArgs) member x.TotalNumAssignedNamedArgs = x.ArgSets |> List.sumBy (fun x -> x.NumAssignedNamedArgs) let MakeCalledArgs amap m (minfo:MethInfo) minst = // Mark up the arguments with their position, so we can sort them back into order later let paramDatas = minfo.GetParamDatas(amap, m, minst) paramDatas |> List.mapiSquared (fun i j (ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,typeOfCalledArg)) -> CalledArg((i,j),isParamArrayArg,optArgInfo,isOutArg,nmOpt,typeOfCalledArg)) let MakeCalledMeth (infoReader:InfoReader, checkingAttributeCall, freshenMethInfo,// a function to help generate fresh type variables the property setters methods in generic classes m, ad, // the access domain of the place where the call is taking place minfo:MethInfo, // the method we're attempting to call minst, // the instantiation of the method we're attempting to call uminst, // the formal instantiation of the method we're attempting to call pinfoOpt, // the property related to the method we're attempting to call, if any objArgs, // the types of the actual object argument, if any callerArgs: (CallerArg<_> list * CallerNamedArg<_> list) list, // the data about any arguments supplied by the caller allowParamArgs:bool, // do we allow the use of a param args method in its "expanded" form? allowOutAndOptArgs: bool) // do we allow the use of the transformation that converts out arguments as tuple returns? = let g = infoReader.g let amap = infoReader.amap let methodRetTy = minfo.GetFSharpReturnTy(amap, m, minst) let fullCalledArgs = MakeCalledArgs amap m minfo minst assert (callerArgs.Length = fullCalledArgs.Length) let argSetInfos = (callerArgs, fullCalledArgs) ||> List.map2 (fun (unnamedCallerArgs,namedCallerArgs) fullCalledArgs -> // Find the arguments not given by name let unnamedCalledArgs = fullCalledArgs |> List.filter (function | (CalledArg(_,_,_,_,Some nm,_)) -> namedCallerArgs |> List.forall (fun (CallerNamedArg(nm2,_e)) -> nm <> nm2.idText) | _ -> true) // See if any of them are 'out' arguments being returned as part of a return tuple let unnamedCalledArgs, unnamedCalledOptArgs, unnamedCalledOutArgs = let nUnnamedCallerArgs = unnamedCallerArgs.Length if allowOutAndOptArgs && nUnnamedCallerArgs < unnamedCalledArgs.Length then let unnamedCalledArgsTrimmed,unnamedCalledOptOrOutArgs = List.chop nUnnamedCallerArgs unnamedCalledArgs // Check if all optional/out arguments are byref-out args if unnamedCalledOptOrOutArgs |> List.forall (fun (CalledArg(_i,_,_,isOutArg,_,typeOfCalledArg)) -> isOutArg && isByrefTy g typeOfCalledArg) then let unnamedCalledOutArgs = unnamedCalledOptOrOutArgs |> List.map (fun (CalledArg(i,isParamArrayArg,optArgInfo,isOutArg,nmOpt,typeOfCalledArg)) -> (CalledArg(i,isParamArrayArg,optArgInfo,isOutArg,nmOpt,typeOfCalledArg))) unnamedCalledArgsTrimmed,[],unnamedCalledOutArgs // Check if all optional/out arguments are optional args elif unnamedCalledOptOrOutArgs |> List.forall (fun (CalledArg(_i,_,optArgInfo,_isOutArg,_,_typeOfCalledArg)) -> optArgInfo.IsOptional) then let unnamedCalledOptArgs = unnamedCalledOptOrOutArgs unnamedCalledArgsTrimmed,unnamedCalledOptArgs,[] // Otherwise drop them on the floor else unnamedCalledArgs,[],[] else unnamedCalledArgs,[],[] let (unnamedCallerArgs,paramArrayCallerArgs),unnamedCalledArgs,paramArrayCalledArgOpt = let minArgs = unnamedCalledArgs.Length - 1 let supportsParamArgs = allowParamArgs && minArgs >= 0 && unnamedCalledArgs |> List.last |> (fun (CalledArg(_,isParamArray,_,_,_,ty)) -> isParamArray && isArray1DTy g ty) if supportsParamArgs && unnamedCallerArgs.Length >= minArgs then let a,b = List.frontAndBack unnamedCalledArgs List.chop minArgs unnamedCallerArgs, a, Some(b) else (unnamedCallerArgs, []),unnamedCalledArgs, None //dprintfn "Calling %s: paramArrayCallerArgs = %d, paramArrayCalledArgOpt = %d" minfo.LogicalName paramArrayCallerArgs.Length (Option.length paramArrayCalledArgOpt) let assignedNamedArgs = fullCalledArgs |> List.choose (function CalledArg(_,_,_,_,Some nm,_) as arg -> List.tryPick (fun (CallerNamedArg(nm2,arg2)) -> if nm = nm2.idText then Some (AssignedCalledArg(Some(nm2),arg,arg2)) else None) namedCallerArgs | _ -> None) let unassignedNamedItem = namedCallerArgs |> List.filter (fun (CallerNamedArg(nm,_e)) -> List.forall (function CalledArg(_,_,_,_,Some nm2,_) -> nm.idText <> nm2 | _ -> true) fullCalledArgs) let attributeAssignedNamedItems,unassignedNamedItem = if checkingAttributeCall then // the assignment of names to properties is substantially for attribute specifications // permits bindings of names to non-mutable fields and properties, so we do that using the old // reliable code for this later on. unassignedNamedItem,[] else [],unassignedNamedItem let assignedNamedProps,unassignedNamedItem = let returnedObjTy = if minfo.IsConstructor then minfo.EnclosingType else methodRetTy unassignedNamedItem |> List.splitChoose (fun (CallerNamedArg(id,e) as arg) -> let nm = id.idText let pinfos = GetIntrinsicPropInfoSetsOfType infoReader (Some(nm),ad,AllowMultiIntfInstantiations.No) IgnoreOverrides id.idRange returnedObjTy let pinfos = pinfos |> ExcludeHiddenOfPropInfos g amap m match pinfos with | [pinfo] when pinfo.HasSetter && not pinfo.IsIndexer -> let pminfo = pinfo.SetterMethod let pminst = freshenMethInfo m pminfo Choice1Of2(AssignedItemSetter(id,AssignedPropSetter(pinfo,pminfo, pminst), e)) | _ -> match infoReader.GetILFieldInfosOfType(Some(nm),ad,m,returnedObjTy) with | finfo :: _ -> Choice1Of2(AssignedItemSetter(id,AssignedIlFieldSetter(finfo), e)) | _ -> match infoReader.TryFindRecdOrClassFieldInfoOfType(nm,m,returnedObjTy) with | Some rfinfo -> Choice1Of2(AssignedItemSetter(id,AssignedRecdFieldSetter(rfinfo), e)) | None -> Choice2Of2(arg)) let names = namedCallerArgs |> List.map (function CallerNamedArg(nm,_) -> nm.idText) if (List.noRepeats String.order names).Length <> namedCallerArgs.Length then errorR(Error(FSComp.SR.typrelNamedArgumentHasBeenAssignedMoreThenOnce(),m)); if verbose then dprintf "#fullCalledArgs = %d, #unnamedCalledArgs = %d, #assignedNamedArgs = %d, #residueNamedArgs = %d, #attributeAssignedNamedItems = %d\n" fullCalledArgs.Length unnamedCalledArgs.Length assignedNamedArgs.Length unassignedNamedItem.Length attributeAssignedNamedItems.Length; let argSet = CalledMethArgSet(unnamedCalledArgs,unnamedCallerArgs,paramArrayCalledArgOpt,paramArrayCallerArgs,assignedNamedArgs) (argSet,assignedNamedProps,unassignedNamedItem,attributeAssignedNamedItems,unnamedCalledOptArgs,unnamedCalledOutArgs)) let argSets = argSetInfos |> List.map (fun (x,_,_,_,_,_) -> x) let assignedNamedProps = argSetInfos |> List.collect (fun (_,x,_,_,_,_) -> x) let unassignedNamedItems = argSetInfos |> List.collect (fun (_,_,x,_,_,_) -> x) let attributeAssignedNamedItems = argSetInfos |> List.collect (fun (_,_,_,x,_,_) -> x) let unnamedCalledOptArgs = argSetInfos |> List.collect (fun (_,_,_,_,x,_) -> x) let unnamedCalledOutArgs = argSetInfos |> List.collect (fun (_,_,_,_,_,x) -> x) CalledMeth(minfo,minst,uminst,objArgs,argSets,methodRetTy,assignedNamedProps,pinfoOpt,unassignedNamedItems,attributeAssignedNamedItems,unnamedCalledOptArgs,unnamedCalledOutArgs) let NamesOfCalledArgs calledArgs = calledArgs |> List.choose (fun (CalledArg(_,_,_,_,nmOpt,_)) -> nmOpt) let showAccessDomain ad = match ad with | AccessibleFromEverywhere -> "public" | AccessibleFrom(_,_) -> "accessible" | AccessibleFromSomeFSharpCode -> "public, protected or internal" | AccessibleFromSomewhere -> "" /// "Type Completion" inference and a few other checks at the end of the /// inference scope let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader:InfoReader) isImplementation denv (tycon:Tycon) = let g = infoReader.g let amap = infoReader.amap let tcaug = tycon.TypeContents tcaug.tcaug_closed <- true // Note you only have to explicitly implement 'System.IComparable' to customize structural comparison AND equality on F# types if isImplementation && #if EXTENSIONTYPING not tycon.IsProvidedGeneratedTycon && #endif isNone tycon.GeneratedCompareToValues && tycon.HasInterface g g.mk_IComparable_ty && not (tycon.HasOverride g "Equals" [g.obj_ty]) && not tycon.IsFSharpInterfaceTycon then (* Warn when we're doing this for class types *) if Augment.TyconIsCandidateForAugmentationWithEquals g tycon then warning(Error(FSComp.SR.typrelTypeImplementsIComparableShouldOverrideObjectEquals(tycon.DisplayName),tycon.Range)) else warning(Error(FSComp.SR.typrelTypeImplementsIComparableDefaultObjectEqualsProvided(tycon.DisplayName),tycon.Range)) Augment.CheckAugmentationAttribs isImplementation g amap tycon; // Check some conditions about generic comparison and hashing. We can only check this condition after we've done the augmentation if isImplementation #if EXTENSIONTYPING && not tycon.IsProvidedGeneratedTycon #endif then let tcaug = tycon.TypeContents let m = tycon.Range let hasExplicitObjectGetHashCode = tycon.HasOverride g "GetHashCode" [] let hasExplicitObjectEqualsOverride = tycon.HasOverride g "Equals" [g.obj_ty] if (isSome tycon.GeneratedHashAndEqualsWithComparerValues) && (hasExplicitObjectGetHashCode || hasExplicitObjectEqualsOverride) then errorR(Error(FSComp.SR.typrelExplicitImplementationOfGetHashCodeOrEquals(tycon.DisplayName),m)); if not hasExplicitObjectEqualsOverride && hasExplicitObjectGetHashCode then warning(Error(FSComp.SR.typrelExplicitImplementationOfGetHashCode(tycon.DisplayName),m)); if hasExplicitObjectEqualsOverride && not hasExplicitObjectGetHashCode then warning(Error(FSComp.SR.typrelExplicitImplementationOfEquals(tycon.DisplayName),m)); // remember these values to ensure we don't generate these methods during codegen tcaug.SetHasObjectGetHashCode hasExplicitObjectGetHashCode; if not tycon.IsHiddenReprTycon && not tycon.IsTypeAbbrev && not tycon.IsMeasureableReprTycon && not tycon.IsAsmReprTycon && not tycon.IsFSharpInterfaceTycon && not tycon.IsFSharpDelegateTycon then DispatchSlotChecking.CheckImplementationRelationAtEndOfInferenceScope (infoReader,denv,tycon,isImplementation) /// "Single Feasible Type" inference /// Look for the unique supertype of ty2 for which ty2 :> ty1 might feasibly hold let FindUniqueFeasibleSupertype g amap m ty1 ty2 = if not (isAppTy g ty2) then None else let supertypes = Option.toList (GetSuperTypeOfType g amap m ty2) @ (GetImmediateInterfacesOfType g amap m ty2) supertypes |> List.tryFind (TypeFeasiblySubsumesType 0 g amap m ty1 NoCoerce) /// Get the methods relevant to deterimining if a uniquely-identified-override exists based on the syntactic information /// at the member signature prior to type inference. This is used to pre-assign type information if it does let GetAbstractMethInfosForSynMethodDecl(infoReader:InfoReader,ad,memberName:Ident,bindm,typToSearchForAbstractMembers,valSynData) = let minfos = match typToSearchForAbstractMembers with | _,Some(SlotImplSet(_, dispatchSlotsKeyed,_,_)) -> NameMultiMap.find memberName.idText dispatchSlotsKeyed |> List.map (fun (RequiredSlot(dispatchSlot,_)) -> dispatchSlot) | ty, None -> GetIntrinsicMethInfosOfType infoReader (Some(memberName.idText), ad, AllowMultiIntfInstantiations.Yes) IgnoreOverrides bindm ty let dispatchSlots = minfos |> List.filter (fun minfo -> minfo.IsDispatchSlot) let topValSynArities = SynInfo.AritiesOfArgs valSynData let topValSynArities = if topValSynArities.Length > 0 then topValSynArities.Tail else topValSynArities let dispatchSlotsArityMatch = dispatchSlots |> List.filter (fun minfo -> minfo.NumArgs = topValSynArities) dispatchSlots,dispatchSlotsArityMatch /// Get the proeprties relevant to deterimining if a uniquely-identified-override exists based on the syntactic information /// at the member signature prior to type inference. This is used to pre-assign type information if it does let GetAbstractPropInfosForSynPropertyDecl(infoReader:InfoReader,ad,memberName:Ident,bindm,typToSearchForAbstractMembers,_k,_valSynData) = let pinfos = match typToSearchForAbstractMembers with | _,Some(SlotImplSet(_,_,_,reqdProps)) -> reqdProps |> List.filter (fun pinfo -> pinfo.PropertyName = memberName.idText) | ty, None -> GetIntrinsicPropInfosOfType infoReader (Some(memberName.idText), ad, AllowMultiIntfInstantiations.Yes) IgnoreOverrides bindm ty let dispatchSlots = pinfos |> List.filter (fun pinfo -> pinfo.IsVirtualProperty) dispatchSlots /// Is this a 'base' call (in the sense of C#) let IsBaseCall objArgs = match objArgs with | [Expr.Val(v,_,_)] when v.BaseOrThisInfo = BaseVal -> true | _ -> false /// Compute whether we insert a 'coerce' on the 'this' pointer for an object model call /// For example, when calling an interface method on a struct, or a method on a constrained /// variable type. let ComputeConstrainedCallInfo g amap m (objArgs,minfo:MethInfo) = match objArgs with | [objArgExpr] when not minfo.IsExtensionMember -> let methObjTy = minfo.EnclosingType let objArgTy = tyOfExpr g objArgExpr if TypeDefinitelySubsumesTypeNoCoercion 0 g amap m methObjTy objArgTy // Constrained calls to class types can only ever be needed for the three class types that // are base types of value types || (isClassTy g methObjTy && (not (typeEquiv g methObjTy g.system_Object_typ || typeEquiv g methObjTy g.system_Value_typ || typeEquiv g methObjTy g.system_Enum_typ))) then None else // The object argument is a value type or variable type and the target method is an interface or System.Object // type. A .NET 2.0 generic constrained call is required Some objArgTy | _ -> None /// Adjust the 'this' pointer before making a call /// Take the address of a struct, and coerce to an interface/base/constraint type if necessary let TakeObjAddrForMethodCall g amap (minfo:MethInfo) isMutable m objArgs f = let ccallInfo = ComputeConstrainedCallInfo g amap m (objArgs,minfo) let mustTakeAddress = (minfo.IsStruct && not minfo.IsExtensionMember) // don't take the address of a struct when passing to an extension member || (match ccallInfo with | Some _ -> true | None -> false) let wrap,objArgs = match objArgs with | [objArgExpr] -> let objArgTy = tyOfExpr g objArgExpr let wrap,objArgExpr' = mkExprAddrOfExpr g mustTakeAddress (isSome ccallInfo) isMutable objArgExpr None m // Extension members and calls to class constraints may need a coercion for their object argument let objArgExpr' = if isNone ccallInfo && // minfo.IsExtensionMember && minfo.IsStruct && not (TypeDefinitelySubsumesTypeNoCoercion 0 g amap m minfo.EnclosingType objArgTy) then mkCoerceExpr(objArgExpr',minfo.EnclosingType,m,objArgTy) else objArgExpr' wrap,[objArgExpr'] | _ -> (fun x -> x), objArgs let e,ety = f ccallInfo objArgs wrap e,ety //------------------------------------------------------------------------- // Build method calls. //------------------------------------------------------------------------- #if EXTENSIONTYPING // This imports a provided method, and checks if it is a known compiler intrinsic like "1 + 2" let TryImportProvidedMethodBaseAsLibraryIntrinsic (amap:Import.ImportMap, m:range, mbase: Tainted) = let methodName = mbase.PUntaint((fun x -> x.Name),m) let declaringType = Import.ImportProvidedType amap m (mbase.PApply((fun x -> x.DeclaringType),m)) if isAppTy amap.g declaringType then let declaringEntity = tcrefOfAppTy amap.g declaringType if not declaringEntity.IsLocalRef && ccuEq declaringEntity.nlr.Ccu amap.g.fslibCcu then match amap.g.knownIntrinsics.TryGetValue ((declaringEntity.LogicalName, methodName)) with | true,vref -> Some vref | _ -> match amap.g.knownFSharpCoreModules.TryGetValue(declaringEntity.LogicalName) with | true,modRef -> match modRef.ModuleOrNamespaceType.AllValsByLogicalName |> Seq.tryPick (fun (KeyValue(_,v)) -> if v.CompiledName = methodName then Some v else None) with | Some v -> Some (mkNestedValRef modRef v) | None -> None | _ -> None else None else None #endif /// Build an expression that calls a given method info. /// This is called after overload resolution, and also to call other /// methods such as 'setters' for properties. // tcVal: used to convert an F# value into an expression. See tc.fs. // isProp: is it a property get? // minst: the instantiation to apply for a generic method // objArgs: the 'this' argument, if any // args: the arguments, if any let BuildMethodCall tcVal g amap isMutable m isProp minfo valUseFlags minst objArgs args = let direct = IsBaseCall objArgs TakeObjAddrForMethodCall g amap minfo isMutable m objArgs (fun ccallInfo objArgs -> let allArgs = (objArgs @ args) let valUseFlags = if (direct && (match valUseFlags with NormalValUse -> true | _ -> false)) then VSlotDirectCall else match ccallInfo with | Some ty -> // printfn "possible constrained call to '%s' at %A" minfo.LogicalName m PossibleConstrainedCall ty | None -> valUseFlags match minfo with #if EXTENSIONTYPING // By this time this is an erased method info, e.g. one returned from an expression // REVIEW: copied from tastops, which doesn't allow protected methods | ProvidedMeth (g,providedMeth,amap,_) -> // TODO: there is a fair bit of duplication here with mk_il_minfo_call. We should be able to merge these /// Build an expression node that is a call to a extension method in a generated assembly let enclTy = minfo.EnclosingType // prohibit calls to methods that are declared in specific array types (Get,Set,Address) // these calls are provided by the runtime and should not be called from the user code if isArrayTy g enclTy then let tpe = TypeProviderError(FSComp.SR.tcRuntimeSuppliedMethodCannotBeUsedInUserCode(minfo.DisplayName), providedMeth.TypeProviderDesignation, m) error (tpe) let valu = isStructTy g enclTy let isCtor = minfo.IsConstructor if minfo.IsClassConstructor then error (InternalError (minfo.LogicalName ^": cannot call a class constructor",m)); let useCallvirt = not valu && not direct && minfo.IsVirtual let isProtected = minfo.IsProtectedAccessiblity let exprTy = if isCtor then enclTy else minfo.GetFSharpReturnTy(amap, m, minst) match TryImportProvidedMethodBaseAsLibraryIntrinsic (amap, m, providedMeth) with | Some fsValRef -> //reraise() calls are converted to TOp.Reraise in the type checker. So if a provided expression includes a reraise call // we must put it in that form here. if valRefEq amap.g fsValRef amap.g.reraise_vref then mkReraise m exprTy, exprTy else let vexp, vexpty = tcVal fsValRef valUseFlags (minfo.ActualTypeInst @ minst) m BuildFSharpMethodApp g m fsValRef vexp vexpty allArgs | None -> let ilMethRef = Import.ImportProvidedMethodBaseAsILMethodRef amap m providedMeth let isNewObj = isCtor && (match valUseFlags with NormalValUse -> true | _ -> false) let actualTypeInst = if isTupleTy g enclTy then argsOfAppTy g (mkCompiledTupleTy g (destTupleTy g enclTy)) // provided expressions can include method calls that get properties of tuple types elif isFunTy g enclTy then [ domainOfFunTy g enclTy; rangeOfFunTy g enclTy ] // provided expressions can call Invoke else minfo.ActualTypeInst let actualMethInst = minst let retTy = (if not isCtor && (ilMethRef.ReturnType = ILType.Void) then [] else [exprTy]) let noTailCall = false let expr = Expr.Op(TOp.ILCall(useCallvirt,isProtected,valu,isNewObj,valUseFlags,isProp,noTailCall,ilMethRef,actualTypeInst,actualMethInst, retTy),[],allArgs,m) expr,exprTy #endif // Build a call to a .NET method | ILMeth(_,ilMethInfo,_) -> BuildILMethInfoCall g amap m isProp ilMethInfo valUseFlags minst direct allArgs // Build a call to an F# method | FSMeth(_,typ,vref,_) -> // Go see if this is a use of a recursive definition... Note we know the value instantiation // we want to use so we pass that in in order not to create a new one. let vexp, vexpty = tcVal vref valUseFlags (argsOfAppTy g typ @ minst) m BuildFSharpMethodApp g m vref vexp vexpty allArgs // Build a 'call' to a struct default constructor | DefaultStructCtor (g,typ) -> if not (TypeHasDefaultValue g typ) then errorR(Error(FSComp.SR.tcDefaultStructConstructorCall(),m)); mkDefault (m,typ), typ) //------------------------------------------------------------------------- // Build delegate constructions (lambdas/functions to delegates) //------------------------------------------------------------------------- /// Implements the elaborated form of adhoc conversions from functions to delegates at member callsites let BuildNewDelegateExpr (eventInfoOpt:EventInfo option, g, amap, delegateTy, invokeMethInfo:MethInfo, delArgTys, f, fty, m) = let slotsig = invokeMethInfo.GetSlotSig(amap, m) let delArgVals,expr = let topValInfo = ValReprInfo([],List.replicate (List.length delArgTys) ValReprInfo.unnamedTopArg, ValReprInfo.unnamedRetVal) // Try to pull apart an explicit lambda and use it directly // Don't do this in the case where we're adjusting the arguments of a function used to build a .NET-compatible event handler let lambdaContents = if isSome eventInfoOpt then None else tryDestTopLambda g amap topValInfo (f, fty) match lambdaContents with | None -> if List.exists (isByrefTy g) delArgTys then error(Error(FSComp.SR.tcFunctionRequiresExplicitLambda(List.length delArgTys),m)); let delArgVals = delArgTys |> List.map (fun argty -> fst (mkCompGenLocal m "delegateArg" argty)) let expr = let args = match eventInfoOpt with | Some einfo -> match delArgVals with | [] -> error(nonStandardEventError einfo.EventName m) | h :: _ when not (isObjTy g h.Type) -> error(nonStandardEventError einfo.EventName m) | h :: t -> [exprForVal m h; mkTupledVars g m t] | None -> if isNil delArgTys then [mkUnit g m] else List.map (exprForVal m) delArgVals mkApps g ((f,fty),[],args,m) delArgVals,expr | Some _ -> if isNil delArgTys then [], mkApps g ((f,fty),[],[mkUnit g m],m) else let _,_,_,vsl,body,_ = IteratedAdjustArityOfLambda g amap topValInfo f List.concat vsl, body let meth = TObjExprMethod(slotsig, [], [], [delArgVals], expr, m) mkObjExpr(delegateTy,None,BuildObjCtorCall g m,[meth],[],m) let CoerceFromFSharpFuncToDelegate g amap infoReader ad callerArgTy m callerArgExpr delegateTy = let (SigOfFunctionForDelegate(invokeMethInfo,delArgTys,_,_)) = GetSigOfFunctionForDelegate infoReader delegateTy m ad BuildNewDelegateExpr (None, g, amap, delegateTy, invokeMethInfo, delArgTys, callerArgExpr, callerArgTy, m) //------------------------------------------------------------------------- // Import provided expressions //------------------------------------------------------------------------- #if EXTENSIONTYPING // This file is not a great place for this functionality to sit, it's here because of BuildMethodCall module ProvidedMethodCalls = let private convertConstExpr g amap m (constant : Tainted) = let (obj,objTy) = constant.PApply2(id,m) let ty = Import.ImportProvidedType amap m objTy let normTy = normalizeEnumTy g ty obj.PUntaint((fun v -> let fail() = raise <| TypeProviderError(FSComp.SR.etUnsupportedConstantType(v.GetType().ToString()), constant.TypeProviderDesignation, m) try match v with | null -> mkNull m ty | _ when typeEquiv g normTy g.bool_ty -> Expr.Const(Const.Bool(v :?> bool), m, ty) | _ when typeEquiv g normTy g.sbyte_ty -> Expr.Const(Const.SByte(v :?> sbyte), m, ty) | _ when typeEquiv g normTy g.byte_ty -> Expr.Const(Const.Byte(v :?> byte), m, ty) | _ when typeEquiv g normTy g.int16_ty -> Expr.Const(Const.Int16(v :?> int16), m, ty) | _ when typeEquiv g normTy g.uint16_ty -> Expr.Const(Const.UInt16(v :?> uint16), m, ty) | _ when typeEquiv g normTy g.int32_ty -> Expr.Const(Const.Int32(v :?> int32), m, ty) | _ when typeEquiv g normTy g.uint32_ty -> Expr.Const(Const.UInt32(v :?> uint32), m, ty) | _ when typeEquiv g normTy g.int64_ty -> Expr.Const(Const.Int64(v :?> int64), m, ty) | _ when typeEquiv g normTy g.uint64_ty -> Expr.Const(Const.UInt64(v :?> uint64), m, ty) | _ when typeEquiv g normTy g.nativeint_ty -> Expr.Const(Const.IntPtr(v :?> int64), m, ty) | _ when typeEquiv g normTy g.unativeint_ty -> Expr.Const(Const.UIntPtr(v :?> uint64), m, ty) | _ when typeEquiv g normTy g.float32_ty -> Expr.Const(Const.Single(v :?> float32), m, ty) | _ when typeEquiv g normTy g.float_ty -> Expr.Const(Const.Double(v :?> float), m, ty) | _ when typeEquiv g normTy g.char_ty -> Expr.Const(Const.Char(v :?> char), m, ty) | _ when typeEquiv g normTy g.string_ty -> Expr.Const(Const.String(v :?> string), m, ty) | _ when typeEquiv g normTy g.decimal_ty -> Expr.Const(Const.Decimal(v :?> decimal), m, ty) | _ when typeEquiv g normTy g.unit_ty -> Expr.Const(Const.Unit, m, ty) | _ -> fail() with _ -> fail() ), range=m) /// Erasure over System.Type. /// /// This is a reimplementation of the logic of provided-type erasure, working entirely over (tainted, provided) System.Type /// values. This is used when preparing ParameterInfo objects to give to the provider in GetInvokerExpression. /// These ParameterInfo have erased ParameterType - giving the provider an erased type makes it considerably easier /// to implement a correct GetInvokerExpression. /// /// Ideally we would implement this operation by converting to an F# TType using ImportSystemType, and then erasing, and then converting /// back to System.Type. However, there is currently no way to get from an arbitrary F# TType (even the TType for /// System.Object) to a System.Type to give to the type provider. let eraseSystemType (amap,m,inputType) = let rec loop (st:Tainted) = if st.PUntaint((fun st -> st.IsGenericParameter),m) then st elif st.PUntaint((fun st -> st.IsArray),m) then let et = st.PApply((fun st -> st.GetElementType()),m) let rank = st.PUntaint((fun st -> st.GetArrayRank()),m) (loop et).PApply((fun st -> ProvidedType.CreateNoContext(if rank = 1 then st.RawSystemType.MakeArrayType() else st.RawSystemType.MakeArrayType(rank))),m) elif st.PUntaint((fun st -> st.IsByRef),m) then let et = st.PApply((fun st -> st.GetElementType()),m) (loop et).PApply((fun st -> ProvidedType.CreateNoContext(st.RawSystemType.MakeByRefType())),m) elif st.PUntaint((fun st -> st.IsPointer),m) then let et = st.PApply((fun st -> st.GetElementType()),m) (loop et).PApply((fun st -> ProvidedType.CreateNoContext(st.RawSystemType.MakePointerType())),m) else let isGeneric = st.PUntaint((fun st -> st.IsGenericType),m) let headType = if isGeneric then st.PApply((fun st -> st.GetGenericTypeDefinition()),m) else st // We import in order to use IsProvidedErasedTycon, to make sure we at least don't reinvent that let headTypeAsFSharpType = Import.ImportProvidedNamedType amap m headType if headTypeAsFSharpType.IsProvidedErasedTycon then let baseType = st.PApply((fun st -> match st.BaseType with | null -> ProvidedType.CreateNoContext(typeof) // it might be an interface | st -> st),m) loop baseType else if isGeneric then let genericArgs = st.PApplyArray((fun st -> st.GetGenericArguments()),"GetGenericArguments",m) let typars = headTypeAsFSharpType.Typars(m) // Drop the generic arguments that don't correspond to type arguments, i.e. are units-of-measure let genericArgs = [| for (genericArg,tp) in Seq.zip genericArgs typars do if tp.Kind = TyparKind.Type then yield genericArg |] if genericArgs.Length = 0 then headType else let erasedArgTys = genericArgs |> Array.map loop headType.PApply((fun st -> let erasedArgTys = erasedArgTys |> Array.map (fun a -> a.PUntaintNoFailure (fun x -> x.RawSystemType)) ProvidedType.CreateNoContext(st.RawSystemType.MakeGenericType erasedArgTys)),m) else st loop inputType let convertProvidedExpressionToExprAndWitness tcVal (thisArg:Expr option, allArgs:Exprs, paramVars:Tainted[], g,amap,mut,isProp,isSuperInit,m, expr:Tainted) = let varConv = [ for (v,e) in Seq.zip (paramVars |> Seq.map (fun x -> x.PUntaint(id,m))) (Option.toList thisArg @ allArgs) do yield (v,(None,e)) ] |> Dictionary.ofList let rec exprToExprAndWitness top (ea:Tainted) = let fail() = error(Error(FSComp.SR.etUnsupportedProvidedExpression(ea.PUntaint((fun etree -> etree.UnderlyingExpressionString), m)),m)) match ea with | Tainted.Null -> error(Error(FSComp.SR.etNullProvidedExpression(ea.TypeProviderDesignation),m)) | _ -> match ea.PApplyOption((function ProvidedTypeAsExpr x -> Some x | _ -> None), m) with | Some info -> let (expr,targetTy) = info.PApply2(id,m) let srcExpr = exprToExpr expr let targetTy = Import.ImportProvidedType amap m (targetTy.PApply(id,m)) let sourceTy = Import.ImportProvidedType amap m (expr.PApply((fun e -> e.Type),m)) let te = mkCoerceIfNeeded g targetTy sourceTy srcExpr None, (te, tyOfExpr g te) | None -> match ea.PApplyOption((function ProvidedTypeTestExpr x -> Some x | _ -> None), m) with | Some info -> let (expr,targetTy) = info.PApply2(id,m) let srcExpr = exprToExpr expr let targetTy = Import.ImportProvidedType amap m (targetTy.PApply(id,m)) let te = mkCallTypeTest g m targetTy srcExpr None, (te, tyOfExpr g te) | None -> match ea.PApplyOption((function ProvidedIfThenElseExpr x -> Some x | _ -> None), m) with | Some info -> let test,thenBranch,elseBranch = info.PApply3(id,m) let testExpr = exprToExpr test let ifTrueExpr = exprToExpr thenBranch let ifFalseExpr = exprToExpr elseBranch let te = mkCond NoSequencePointAtStickyBinding SuppressSequencePointAtTarget m (tyOfExpr g ifTrueExpr) testExpr ifTrueExpr ifFalseExpr None, (te, tyOfExpr g te) | None -> match ea.PApplyOption((function ProvidedVarExpr x -> Some x | _ -> None), m) with | Some info -> let _,vTe = varToExpr info None, (vTe, tyOfExpr g vTe) | None -> match ea.PApplyOption((function ProvidedConstantExpr x -> Some x | _ -> None), m) with | Some info -> let ce = convertConstExpr g amap m info None, (ce, tyOfExpr g ce) | None -> match ea.PApplyOption((function ProvidedNewTupleExpr x -> Some x | _ -> None), m) with | Some info -> let elems = info.PApplyArray(id, "GetInvokerExpresson",m) let elemsT = elems |> Array.map exprToExpr |> Array.toList let exprT = mkTupledNoTypes g m elemsT None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedNewArrayExpr x -> Some x | _ -> None), m) with | Some info -> let ty,elems = info.PApply2(id,m) let tyT = Import.ImportProvidedType amap m ty let elems = elems.PApplyArray(id, "GetInvokerExpresson",m) let elemsT = elems |> Array.map exprToExpr |> Array.toList let exprT = Expr.Op(TOp.Array, [tyT],elemsT,m) None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedTupleGetExpr x -> Some x | _ -> None), m) with | Some info -> let inp,n = info.PApply2(id, m) let inpT = inp |> exprToExpr // if type of expression is erased type then we need convert it to the underlying base type let typeOfExpr = let t = tyOfExpr g inpT stripTyEqnsWrtErasure EraseMeasures g t let tysT = tryDestTupleTy g typeOfExpr let exprT = mkTupleFieldGet (inpT, tysT, n.PUntaint(id,m), m) None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedLambdaExpr x -> Some x | _ -> None), m) with | Some info -> let v,b = info.PApply2(id, m) let vT = addVar v let bT = exprToExpr b removeVar v let exprT = mkLambda m vT (bT, tyOfExpr g bT) None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedLetExpr x -> Some x | _ -> None), m) with | Some info -> let v,e,b = info.PApply3(id, m) let eT = exprToExpr e let vT = addVar v let bT = exprToExpr b removeVar v let exprT = mkCompGenLet m vT eT bT None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedVarSetExpr x -> Some x | _ -> None), m) with | Some info -> let v,e = info.PApply2(id, m) let eT = exprToExpr e let vTopt,_ = varToExpr v match vTopt with | None -> fail() | Some vT -> let exprT = mkValSet m (mkLocalValRef vT) eT None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedWhileLoopExpr x -> Some x | _ -> None), m) with | Some info -> let guardExpr,bodyExpr = info.PApply2(id, m) let guardExprT = exprToExpr guardExpr let bodyExprT = exprToExpr bodyExpr let exprT = mkWhile g (SequencePointInfoForWhileLoop.NoSequencePointAtWhileLoop,SpecialWhileLoopMarker.NoSpecialWhileLoopMarker, guardExprT, bodyExprT, m) None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedForIntegerRangeLoopExpr x -> Some x | _ -> None), m) with | Some info -> let v,e1,e2,e3 = info.PApply4(id, m) let e1T = exprToExpr e1 let e2T = exprToExpr e2 let vT = addVar v let e3T = exprToExpr e3 removeVar v let exprT = mkFastForLoop g (SequencePointInfoForForLoop.NoSequencePointAtForLoop,m,vT,e1T,true,e2T,e3T) None, (exprT, tyOfExpr g exprT) | None -> match ea.PApplyOption((function ProvidedNewDelegateExpr x -> Some x | _ -> None), m) with | Some info -> let delegateTy,boundVars,delegateBodyExpr = info.PApply3(id, m) let delegateTyT = Import.ImportProvidedType amap m delegateTy let vs = boundVars.PApplyArray(id, "GetInvokerExpresson",m) |> Array.toList let vsT = List.map addVar vs let delegateBodyExprT = exprToExpr delegateBodyExpr List.iter removeVar vs let lambdaExpr = mkLambdas m [] vsT (delegateBodyExprT, tyOfExpr g delegateBodyExprT) let lambdaExprTy = tyOfExpr g lambdaExpr let infoReader = InfoReader(g, amap) let exprT = CoerceFromFSharpFuncToDelegate g amap infoReader AccessorDomain.AccessibleFromSomewhere lambdaExprTy m lambdaExpr delegateTyT None, (exprT, tyOfExpr g exprT) | None -> #if PROVIDED_ADDRESS_OF match ea.PApplyOption((function ProvidedAddressOfExpr x -> Some x | _ -> None), m) with | Some e -> let eT = exprToExpr e let wrap,ce = mkExprAddrOfExpr g true false DefinitelyMutates eT None m let ce = wrap ce None, (ce, tyOfExpr g ce) | None -> #endif match ea.PApplyOption((function ProvidedDefaultExpr x -> Some x | _ -> None), m) with | Some pty -> let ty = Import.ImportProvidedType amap m pty let ce = mkDefault (m, ty) None, (ce, tyOfExpr g ce) | None -> match ea.PApplyOption((function ProvidedCallExpr c -> Some c | _ -> None), m) with | Some info -> methodCallToExpr top ea info | None -> match ea.PApplyOption((function ProvidedSequentialExpr c -> Some c | _ -> None), m) with | Some info -> let e1,e2 = info.PApply2(id, m) let e1T = exprToExpr e1 let e2T = exprToExpr e2 let ce = mkCompGenSequential m e1T e2T None, (ce, tyOfExpr g ce) | None -> match ea.PApplyOption((function ProvidedTryFinallyExpr c -> Some c | _ -> None), m) with | Some info -> let e1,e2 = info.PApply2(id, m) let e1T = exprToExpr e1 let e2T = exprToExpr e2 let ce = mkTryFinally g (e1T,e2T,m,tyOfExpr g e1T,SequencePointInfoForTry.NoSequencePointAtTry,SequencePointInfoForFinally.NoSequencePointAtFinally) None, (ce, tyOfExpr g ce) | None -> match ea.PApplyOption((function ProvidedTryWithExpr c -> Some c | _ -> None), m) with | Some info -> let bT = exprToExpr (info.PApply((fun (x,_,_,_,_) -> x), m)) let v1 = info.PApply((fun (_,x,_,_,_) -> x), m) let v1T = addVar v1 let e1T = exprToExpr (info.PApply((fun (_,_,x,_,_) -> x), m)) removeVar v1 let v2 = info.PApply((fun (_,_,_,x,_) -> x), m) let v2T = addVar v2 let e2T = exprToExpr (info.PApply((fun (_,_,_,_,x) -> x), m)) removeVar v2 let ce = mkTryWith g (bT,v1T,e1T,v2T,e2T,m,tyOfExpr g bT,SequencePointInfoForTry.NoSequencePointAtTry,SequencePointInfoForWith.NoSequencePointAtWith) None, (ce, tyOfExpr g ce) | None -> match ea.PApplyOption((function ProvidedNewObjectExpr c -> Some c | _ -> None), m) with | Some info -> None, ctorCallToExpr info | None -> fail() and ctorCallToExpr (ne:Tainted<_>) = let (ctor,args) = ne.PApply2(id,m) let targetMethInfo = ProvidedMeth(g,ctor.PApply((fun ne -> upcast ne),m),amap,m) let objArgs = [] let arguments = [ for ea in args.PApplyArray(id, "GetInvokerExpresson", m) -> exprToExpr ea ] let callExpr = BuildMethodCall tcVal g amap Mutates.PossiblyMutates m false targetMethInfo isSuperInit [] objArgs arguments callExpr and addVar (v:Tainted) = let nm = v.PUntaint ((fun v -> v.Name),m) let mut = v.PUntaint ((fun v -> v.IsMutable),m) let vRaw = v.PUntaint (id,m) let tyT = Import.ImportProvidedType amap m (v.PApply ((fun v -> v.Type),m)) let vT,vTe = if mut then mkMutableCompGenLocal m nm tyT else mkCompGenLocal m nm tyT varConv.[vRaw] <- (Some vT,vTe) vT and removeVar (v:Tainted) = let vRaw = v.PUntaint (id,m) varConv.Remove vRaw |> ignore and methodCallToExpr top _origExpr (mce:Tainted<_>) = let (objOpt,meth,args) = mce.PApply3(id,m) let targetMethInfo = ProvidedMeth(g,meth.PApply((fun mce -> upcast mce), m),amap,m) let objArgs = match objOpt.PApplyOption(id, m) with | None -> [] | Some objExpr -> [exprToExpr objExpr] let arguments = [ for ea in args.PApplyArray(id, "GetInvokerExpresson", m) -> exprToExpr ea ] let genericArguments = if meth.PUntaint((fun m -> m.IsGenericMethod), m) then meth.PApplyArray((fun m -> m.GetGenericArguments()), "GetGenericArguments", m) else [| |] let replacementGenericArguments = genericArguments |> Array.map (fun t->Import.ImportProvidedType amap m t) |> List.ofArray let mut = if top then mut else PossiblyMutates let isSuperInit = if top then isSuperInit else ValUseFlag.NormalValUse let isProp = if top then isProp else false let callExpr = BuildMethodCall tcVal g amap mut m isProp targetMethInfo isSuperInit replacementGenericArguments objArgs arguments Some meth, callExpr and varToExpr (pe:Tainted) = // sub in the appropriate argument // REVIEW: "thisArg" pointer should be first, if present let vRaw = pe.PUntaint(id,m) if not (varConv.ContainsKey vRaw) then let typeProviderDesignation = ExtensionTyping.DisplayNameOfTypeProvider (pe.TypeProvider, m) error(NumberedError(FSComp.SR.etIncorrectParameterExpression(typeProviderDesignation,vRaw.Name), m)) varConv.[vRaw] and exprToExpr expr = let _, (resExpr, _) = exprToExprAndWitness false expr resExpr exprToExprAndWitness true expr // fill in parameter holes in the expression let TranslateInvokerExpressionForProvidedMethodCall tcVal (g, amap, mut, isProp, isSuperInit, mi:Tainted, objArgs, allArgs, m) = let parameters = mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) let paramTys = parameters |> Array.map (fun p -> p.PApply((fun st -> st.ParameterType),m)) let erasedParamTys = paramTys |> Array.map (fun pty -> eraseSystemType (amap,m,pty)) let paramVars = erasedParamTys |> Array.mapi (fun i erasedParamTy -> erasedParamTy.PApply((fun ty -> ProvidedVar.Fresh("arg" + i.ToString(),ty)),m)) // encode "this" as the first ParameterExpression, if applicable let thisArg, paramVars = match objArgs with | [objArg] -> let erasedThisTy = eraseSystemType (amap,m,mi.PApply((fun mi -> mi.DeclaringType),m)) let thisVar = erasedThisTy.PApply((fun ty -> ProvidedVar.Fresh("this", ty)), m) Some objArg , Array.append [| thisVar |] paramVars | [] -> None , paramVars | _ -> failwith "multiple objArgs?" let ea = mi.PApplyWithProvider((fun (methodInfo,provider) -> ExtensionTyping.GetInvokerExpression(provider, methodInfo, [| for p in paramVars -> p.PUntaintNoFailure id |])), m) convertProvidedExpressionToExprAndWitness tcVal (thisArg,allArgs,paramVars,g,amap,mut,isProp,isSuperInit,m,ea) let BuildInvokerExpressionForProvidedMethodCall tcVal (g, amap, mi:Tainted, objArgs, mut, isProp, isSuperInit, allArgs, m) = try let methInfoOpt, (expr, retTy) = TranslateInvokerExpressionForProvidedMethodCall tcVal (g, amap, mut, isProp, isSuperInit, mi, objArgs, allArgs, m) let exprty = GetCompiledReturnTyOfProvidedMethodInfo amap m mi |> GetFSharpViewOfReturnType g let expr = mkCoerceIfNeeded g exprty retTy expr methInfoOpt, expr, exprty with | :? TypeProviderError as tpe -> let typeName = mi.PUntaint((fun mb -> mb.DeclaringType.FullName), m) let methName = mi.PUntaint((fun mb -> mb.Name), m) raise( tpe.WithContext(typeName, methName) ) // loses original stack trace #endif fsharp-3.0.34/src/fsharp/NicePrint.fs0000775000175000017500000027742012260314606016406 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //-------------------------------------------------------------------------- // Print Signatures/Types, for signatures, intellisense, quick info, FSI responses //-------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.NicePrint open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.AbstractIL.IL (* Abstract IL *) open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Core.Printf #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping open Microsoft.FSharp.Core.CompilerServices #endif open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.PrettyNaming [] module private PrintUtilities = let bracketIfL x lyt = if x then bracketL lyt else lyt let squareAngleL x = leftL "[<" ^^ x ^^ rightL ">]" let angleL x = sepL "<" ^^ x ^^ rightL ">" let braceL x = leftL "{" ^^ x ^^ rightL "}" let commentL l = wordL "(*" ++ l ++ wordL "*)" let comment str = str |> wordL |> commentL let layoutsL (ls : layout list) : layout = match ls with | [] -> emptyL | [x] -> x | x :: xs -> List.fold (^^) x xs let suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty = isEnumTy g ty || isDelegateTy g ty || ExistsHeadTypeInEntireHierarchy g amap m ty g.exn_tcr || ExistsHeadTypeInEntireHierarchy g amap m ty g.tcref_System_Attribute let applyMaxMembers maxMembers (alldecls : _ list) = match maxMembers with | Some n when alldecls.Length > n -> (alldecls |> Seq.truncate n |> Seq.toList) @ [wordL "..."] | _ -> alldecls /// fix up a name coming from IL metadata by quoting "funny" names (keywords, otherwise invalid identifiers) let adjustILName n = n |> Lexhelp.Keywords.QuoteIdentifierIfNeeded // Put the "+ N overloads" into the layout let shrinkOverloads layoutFunction resultFunction group = match group with | [x] -> [resultFunction x (layoutFunction x)] | (x:: rest) -> [ resultFunction x (layoutFunction x -- leftL (match rest.Length with 1 -> FSComp.SR.nicePrintOtherOverloads1() | n -> FSComp.SR.nicePrintOtherOverloadsN(n))) ] | _ -> [] module private PrintIL = open Microsoft.FSharp.Compiler.AbstractIL.IL let fullySplitILTypeRef (tref:ILTypeRef) = (List.collect IL.splitNamespace (tref.Enclosing @ [IL.ungenericizeTypeName tref.Name])) let layoutILTypeRefName denv path = let path = match path with | [ "System"; "Void" ] -> ["unit"] | [ "System"; "Object" ] -> ["obj"] | [ "System"; "String" ] -> ["string"] | [ "System"; "Single" ] -> ["float32"] | [ "System"; "Double" ] -> ["float"] | [ "System"; "Decimal"] -> ["decimal"] | [ "System"; "Char" ] -> ["char"] | [ "System"; "Byte" ] -> ["byte"] | [ "System"; "SByte" ] -> ["sbyte"] | [ "System"; "Int16" ] -> ["int16"] | [ "System"; "Int32" ] -> ["int" ] | [ "System"; "Int64" ] -> ["int64" ] | [ "System"; "UInt16" ] -> ["uint16" ] | [ "System"; "UInt32" ] -> ["uint32" ] | [ "System"; "UInt64" ] -> ["uint64" ] | [ "System"; "IntPtr" ] -> ["nativeint" ] | [ "System"; "UIntPtr" ] -> ["unativeint" ] | [ "System"; "Boolean"] -> ["bool"] | _ -> path let p2,n = List.frontAndBack path if denv.shortTypeNames then wordL n else leftL (trimPathByDisplayEnv denv p2) ^^ wordL n let layoutILTypeRef denv tref = let path = fullySplitILTypeRef tref layoutILTypeRefName denv path /// this fixes up a name just like adjustILName but also handles F# /// operators let private adjustILMethodName n = let demangleOperatorNameIfNeeded s = if IsMangledOpName s then DemangleOperatorName s else s n |> Lexhelp.Keywords.QuoteIdentifierIfNeeded |> demangleOperatorNameIfNeeded let private isStaticILEvent (e: ILEventDef) = e.AddMethod.CallingSignature.CallingConv.IsStatic || e.RemoveMethod.CallingSignature.CallingConv.IsStatic let private layoutILArrayShape (ILArrayShape sh) = sepL "[" ^^ wordL (sh |> List.tail |> List.map (fun _ -> ",") |> String.concat "") ^^ rightL "]" // drop off one "," so that a n-dimensional array has n - 1 ","'s let private layoutILGenericParameterDefs (ps: ILGenericParameterDefs) = ps |> List.map (fun x -> "'" + x.Name |> wordL) let private paramsL (ps: layout list) : layout = match ps with | [] -> emptyL | _ -> let body = Layout.commaListL ps sepL "<" ^^ body ^^ rightL ">" let private pruneParms (className: string) (ilTyparSubst: layout list) = let numParms = // can't find a way to see the number of generic parameters for *this* class (the GenericParams also include type variables for enclosing classes); this will have to do let rightMost = className |> SplitNamesForILPath |> List.last match System.Int32.TryParse(rightMost, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture) with | true, n -> n | false, _ -> 0 // looks like it's non-generic ilTyparSubst |> List.rev |> List.take numParms |> List.rev let rec layoutILType (denv: DisplayEnv) (ilTyparSubst: layout list) (typ : ILType) : layout = match typ with | ILType.Void -> wordL "unit" // These are type-theoretically totally different type-theoretically `void` is Fin 0 and `unit` is Fin (S 0) ... but, this looks like as close as we can get. | ILType.Array (sh, t) -> layoutILType denv ilTyparSubst t ^^ layoutILArrayShape sh | ILType.Value t | ILType.Boxed t -> layoutILTypeRef denv t.TypeRef ^^ (t.GenericArgs |> ILList.toList |> List.map (layoutILType denv ilTyparSubst) |> paramsL) | ILType.Ptr t | ILType.Byref t -> layoutILType denv ilTyparSubst t | ILType.FunctionPointer t -> layoutILCallingSignature denv ilTyparSubst None t | ILType.TypeVar n -> List.nth ilTyparSubst (int n) | ILType.Modified (_, _, t) -> layoutILType denv ilTyparSubst t // "Just recurse through them to the contained ILType"--Don /// Layout a function pointer signature using type-only-F#-style. No argument names are printed. and private layoutILCallingSignature denv ilTyparSubst cons (signatur : ILCallingSignature) = // We need a special case for // constructors (Their return types are reported as `void`, but this is // incorrect; so if we're dealing with a constructor we require that the // return type be passed along as the `cons` parameter.) let args = signatur.ArgTypes |> ILList.toList |> List.map (layoutILType denv ilTyparSubst) let res = match cons with | Some className -> layoutILTypeRefName denv (SplitNamesForILPath (ungenericizeTypeName className)) ^^ (pruneParms className ilTyparSubst |> paramsL) // special case for constructor return-type (viz., the class itself) | None -> signatur.ReturnType |> layoutILType denv ilTyparSubst match args with | [] -> wordL "unit" ^^ wordL "->" ^^ res | [x] -> x ^^ wordL "->" ^^ res | _ -> sepListL (wordL "*") args ^^ wordL "->" ^^ res /// Layout a function pointer signature using type-only-F#-style. No argument names are printed. // // Note, this duplicates functionality in formatParamDataToBuffer and private layoutILParameter denv ilTyparSubst (p: ILParameter) = let preL = let isParamArray = TryFindILAttribute denv.g.attrib_ParamArrayAttribute p.CustomAttrs match isParamArray, p.Name, p.IsOptional with // Layout an optional argument | _, Some nm, true -> leftL ("?" + nm + ":") // Layout an unnamed argument | _, None, _ -> leftL ":" // Layout a named argument | true, Some nm,_ -> wordL "params" ^^ leftL (nm+":") | false, Some nm,_ -> leftL (nm+":") preL ^^ (layoutILType denv ilTyparSubst p.Type) /// Layout a function pointer signature using type-only-F#-style. No argument names are printed. and private layoutILParameters denv ilTyparSubst cons (parameters: ILParameters, retType: ILType) = // We need a special case for // constructors (Their return types are reported as `void`, but this is // incorrect; so if we're dealing with a constructor we require that the // return type be passed along as the `cons` parameter.) let res = match cons with | Some className -> layoutILTypeRefName denv (SplitNamesForILPath (ungenericizeTypeName className)) ^^ (pruneParms className ilTyparSubst |> paramsL) // special case for constructor return-type (viz., the class itself) | None -> retType |> layoutILType denv ilTyparSubst match parameters |> ILList.toList with | [] -> wordL "unit" ^^ wordL "->" ^^ res | [x] -> layoutILParameter denv ilTyparSubst x ^^ wordL "->" ^^ res | args -> sepListL (wordL "*") (List.map (layoutILParameter denv ilTyparSubst) args) ^^ wordL "->" ^^ res /// Layout a method's signature using type-only-F#-style. No argument names are printed. /// /// In the case that we've a constructor, we /// pull off the class name from the `path`; naturally, it's the /// most-deeply-nested element. // // For C# and provided members: // new : argType1 * ... * argTypeN -> retType // Method : argType1 * ... * argTypeN -> retType // let private layoutILMethodDef denv ilTyparSubst className (m: ILMethodDef) = let myParms = m.GenericParams |> layoutILGenericParameterDefs let ilTyparSubst = ilTyparSubst @ myParms let name = adjustILMethodName m.Name let (nameL, isCons) = match () with | _ when m.IsConstructor -> (wordL "new", Some className) // we need the unadjusted name here to be able to grab the number of generic parameters | _ when m.IsStatic -> (wordL "static" ^^ wordL "member" ^^ wordL name ^^ (myParms |> paramsL), None) | _ -> (wordL "member" ^^ wordL name ^^ (myParms |> paramsL), None) let signaturL = (m.Parameters, m.Return.Type) |> layoutILParameters denv ilTyparSubst isCons nameL ^^ wordL ":" ^^ signaturL let private layoutILFieldDef (denv: DisplayEnv) (ilTyparSubst: layout list) (f: ILFieldDef) = let staticL = if f.IsStatic then wordL "static" else emptyL let name = adjustILName f.Name let nameL = wordL name let typL = layoutILType denv ilTyparSubst f.Type staticL ^^ wordL "val" ^^ nameL ^^ wordL ":" ^^ typL let private layoutILEventDef denv ilTyparSubst (e: ILEventDef) = let staticL = if isStaticILEvent e then wordL "static" else emptyL let name = adjustILName e.Name let nameL = wordL name let typL = match e.Type with | Some t -> layoutILType denv ilTyparSubst t | _ -> emptyL staticL ^^ wordL "event" ^^ nameL ^^ wordL ":" ^^ typL let private layoutILPropertyDef denv ilTyparSubst (p : ILPropertyDef) = let staticL = if p.CallingConv = ILThisConvention.Static then wordL "static" else emptyL let name = adjustILName p.Name let nameL = wordL name let layoutGetterType (getterRef:ILMethodRef) = if ILList.isEmpty getterRef.ArgTypes then layoutILType denv ilTyparSubst getterRef.ReturnType else layoutILCallingSignature denv ilTyparSubst None getterRef.CallingSignature let layoutSetterType (setterRef:ILMethodRef) = let argTypes = setterRef.ArgTypes |> ILList.toList if isNil argTypes then emptyL // shouldn't happen else let frontArgs, lastArg = List.frontAndBack argTypes let argsL = frontArgs |> List.map (layoutILType denv ilTyparSubst) |> sepListL (wordL "*") argsL ^^ wordL "->" ^^ (layoutILType denv ilTyparSubst lastArg) let typL = match p.GetMethod, p.SetMethod with | None, None -> layoutILType denv ilTyparSubst p.Type // shouldn't happen | Some getterRef, _ -> layoutGetterType getterRef | None, Some setterRef -> layoutSetterType setterRef let specGetSetL = match p.GetMethod, p.SetMethod with | None,None | Some _, None -> emptyL | None, Some _ -> wordL "with" ^^ wordL " set" | Some _, Some _ -> wordL "with" ^^ wordL "get," ^^ wordL "set" staticL ^^ wordL "member" ^^ nameL ^^ wordL ":" ^^ typL ^^ specGetSetL let layoutILFieldInit x = let textOpt = match x with | Some init -> match init with | ILFieldInit.Bool x -> if x then Some "true" else Some "false" | ILFieldInit.Char c -> Some ("'" + (char c).ToString () + "'") | ILFieldInit.Int16 x -> Some ((x |> int32 |> string) + "s") | ILFieldInit.Int32 x -> Some (x |> string) | ILFieldInit.Int64 x -> Some ((x |> string) + "L") | ILFieldInit.UInt16 x -> Some ((x |> int32 |> string) + "us") | ILFieldInit.UInt32 x -> Some ((x |> int64 |> string) + "u") | ILFieldInit.UInt64 x -> Some ((x |> int64 |> string) + "UL") | ILFieldInit.Single d -> let s = d.ToString ("g12", System.Globalization.CultureInfo.InvariantCulture) let s = if String.forall (fun c -> System.Char.IsDigit c || c = '-') s then s + ".0" else s Some (s + "f") | ILFieldInit.Double d -> let s = d.ToString ("g12", System.Globalization.CultureInfo.InvariantCulture) if String.forall (fun c -> System.Char.IsDigit c || c = '-') s then Some (s + ".0") else Some s | _ -> None | None -> None match textOpt with | None -> wordL "=" ^^ (comment "value unavailable") | Some s -> wordL "=" ^^ wordL s let layoutILEnumDefParts nm litVal = wordL "|" ^^ wordL (adjustILName nm) ^^ layoutILFieldInit litVal let private layoutILEnumDef (f : ILFieldDef) = layoutILEnumDefParts f.Name f.LiteralValue // filtering methods for hiding things we oughtn't show let private isStaticILProperty (p : ILPropertyDef) = match p.GetMethod,p.SetMethod with | Some getter, _ -> getter.CallingSignature.CallingConv.IsStatic | None, Some setter -> setter.CallingSignature.CallingConv.IsStatic | None, None -> true let private isPublicILMethod (m : ILMethodDef) = (m.Access = ILMemberAccess.Public) let private isPublicILEvent typeDef (e: ILEventDef) = try isPublicILMethod(resolveILMethodRef typeDef e.AddMethod) && isPublicILMethod(resolveILMethodRef typeDef e.RemoveMethod) with _ -> false let private isPublicILProperty typeDef (m : ILPropertyDef) = try match m.GetMethod with | Some ilMethRef -> isPublicILMethod (resolveILMethodRef typeDef ilMethRef) | None -> match m.SetMethod with | None -> false | Some ilMethRef -> isPublicILMethod (resolveILMethodRef typeDef ilMethRef) // resolveILMethodRef is a possible point of failure if Abstract IL type equality checking fails // to link the method ref to a method def for some reason, e.g. some feature of IL type // equality checking has not been implemented. Since this is just intellisense pretty printing code // it is better to swallow the exception here, though we don't know of any // specific cases where this happens with _ -> false let private isPublicILCtor (m : ILMethodDef) = (m.Access = ILMemberAccess.Public && m.IsConstructor) let private isNotSpecialName (m : ILMethodDef) = not m.IsSpecialName let private isPublicILField (f : ILFieldDef) = (f.Access = ILMemberAccess.Public) let private isPublicILTypeDef (c : ILTypeDef) : bool = match c.Access with | ILTypeDefAccess.Public | ILTypeDefAccess.Nested ILMemberAccess.Public -> true | _ -> false let private isShowEnumField (f : ILFieldDef) : bool = f.Name <> "value__" // this appears to be the hard-coded underlying storage field let private noShow = set [ "System.Object" ; "Object"; "System.ValueType" ; "ValueType"; "obj" ] // hide certain 'obvious' base classes let private isShowBase (n : layout) : bool = not (noShow.Contains(showL n)) let rec layoutILTypeDef (denv: DisplayEnv) (typeDef : ILTypeDef) : layout = let ilTyparSubst = typeDef.GenericParams |> layoutILGenericParameterDefs let renderL pre body post = match pre with | Some pre -> match body with | [] -> emptyL // empty type | _ -> (pre @@-- aboveListL body) @@ post | None -> aboveListL body match typeDef.tdKind with | ILTypeDefKind.Class | ILTypeDefKind.ValueType | ILTypeDefKind.Interface -> let pre = match typeDef.tdKind with | ILTypeDefKind.Class -> None | ILTypeDefKind.ValueType -> Some (wordL "struct") | ILTypeDefKind.Interface -> None | _ -> failwith "unreachable" let baseT = match typeDef.Extends with | Some b -> let baseName = layoutILType denv ilTyparSubst b if isShowBase baseName then [ wordL "inherit" ^^ baseName ] else [] | None -> [] let memberBlockLs (fieldDefs:ILFieldDefs, methodDefs:ILMethodDefs, propertyDefs:ILPropertyDefs, eventDefs:ILEventDefs) = let ctors = methodDefs.AsList |> List.filter isPublicILCtor |> List.sortBy (fun md -> md.Parameters.Length) |> shrinkOverloads (layoutILMethodDef denv ilTyparSubst typeDef.Name) (fun _ xL -> xL) let fields = fieldDefs.AsList |> List.filter isPublicILField |> List.map (layoutILFieldDef denv ilTyparSubst) let props = propertyDefs.AsList |> List.filter (isPublicILProperty typeDef) |> List.map (fun pd -> (pd.Name, pd.Args.Length), layoutILPropertyDef denv ilTyparSubst pd) let events = eventDefs.AsList |> List.filter (isPublicILEvent typeDef) |> List.map (layoutILEventDef denv ilTyparSubst) let meths = methodDefs.AsList |> List.filter isPublicILMethod |> List.filter isNotSpecialName |> List.map (fun md -> (md.Name, md.Parameters.Length), md) // collect into overload groups |> List.groupBy (fst >> fst) |> List.collect (fun (_,group) -> group |> List.sortBy fst |> shrinkOverloads (snd >> layoutILMethodDef denv ilTyparSubst typeDef.Name) (fun x xL -> (fst x,xL))) let members = (props @ meths) |> List.sortBy fst |> List.map snd // (properties and members) are sorted by name/arity ctors @ fields @ members @ events let bodyStatic = memberBlockLs (typeDef.Fields.AsList |> List.filter (fun fd -> fd.IsStatic) |> mkILFields, typeDef.Methods.AsList |> List.filter (fun md -> md.IsStatic) |> mkILMethods, typeDef.Properties.AsList |> List.filter (fun pd -> isStaticILProperty pd) |> mkILProperties, typeDef.Events.AsList |> List.filter (fun ed -> isStaticILEvent ed) |> mkILEvents) let bodyInstance = memberBlockLs (typeDef.Fields.AsList |> List.filter (fun fd -> not(fd.IsStatic)) |> mkILFields, typeDef.Methods.AsList |> List.filter (fun md -> not(md.IsStatic)) |> mkILMethods, typeDef.Properties.AsList |> List.filter (fun pd -> not(isStaticILProperty pd)) |> mkILProperties, typeDef.Events.AsList |> List.filter (fun ed -> not(isStaticILEvent ed)) |> mkILEvents ) let body = bodyInstance @ bodyStatic // instance "member" before "static member" // Only show at most maxMembers members... let body = applyMaxMembers denv.maxMembers body let types = typeDef.NestedTypes.AsList |> List.filter isPublicILTypeDef |> List.sortBy(fun t -> adjustILName t.Name) |> List.map (layoutILNestedClassDef denv) let post = wordL "end" renderL pre (baseT @ body @ types ) post | ILTypeDefKind.Enum -> let fldsL = typeDef.Fields.AsList |> List.filter isShowEnumField |> List.map layoutILEnumDef |> applyMaxMembers denv.maxMembers renderL None fldsL emptyL | ILTypeDefKind.Delegate -> let rhs = match typeDef.Methods.AsList |> List.filter (fun m -> m.Name = "Invoke") with // the delegate delegates to the type of `Invoke` | m :: _ -> layoutILCallingSignature denv ilTyparSubst None m.CallingSignature | _ -> comment "`Invoke` method could not be found" wordL "delegate" ^^ wordL "of" ^^ rhs | ILTypeDefKind.Other _ -> comment "cannot show type" and layoutILNestedClassDef (denv: DisplayEnv) (typeDef : ILTypeDef) = let name = adjustILName typeDef.Name let nameL = wordL name let ilTyparSubst = typeDef.GenericParams |> layoutILGenericParameterDefs let paramsL = pruneParms typeDef.Name ilTyparSubst |> paramsL if denv.suppressNestedTypes then wordL "nested" ^^ wordL "type" ^^ nameL ^^ paramsL else let pre = wordL "nested" ^^ wordL "type" ^^ nameL ^^ paramsL let body = layoutILTypeDef denv typeDef (pre ^^ wordL "=") @@-- body module private PrintTypes = // Note: We need nice printing of constants in order to print literals and attributes let layoutConst g ty c = let str = match c with | Const.Bool x -> if x then "true" else "false" | Const.SByte x -> (x |> string)+"y" | Const.Byte x -> (x |> string)+"uy" | Const.Int16 x -> (x |> string)+"s" | Const.UInt16 x -> (x |> string)+"us" | Const.Int32 x -> (x |> string) | Const.UInt32 x -> (x |> string)+"u" | Const.Int64 x -> (x |> string)+"L" | Const.UInt64 x -> (x |> string)+"UL" | Const.IntPtr x -> (x |> string)+"n" | Const.UIntPtr x -> (x |> string)+"un" | Const.Single d -> (let s = d.ToString("g12",System.Globalization.CultureInfo.InvariantCulture) if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s then s + ".0" else s) + "f" | Const.Double d -> let s = d.ToString("g12",System.Globalization.CultureInfo.InvariantCulture) if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s then s + ".0" else s | Const.Char c -> "'" + c.ToString() + "'" | Const.String bs -> "\"" + bs + "\"" | Const.Unit -> "()" | Const.Decimal bs -> string bs + "M" // either "null" or "the defaut value for a struct" | Const.Zero -> if isRefTy g ty then "null" else "default" wordL str let layoutAccessibility (denv:DisplayEnv) accessibility itemL = let isInternalCompPath x = match x with | CompPath(ILScopeRef.Local,[]) -> true | _ -> false let (|Public|Internal|Private|) (TAccess p) = match p with | [] -> Public | _ when List.forall isInternalCompPath p -> Internal | _ -> Private match denv.contextAccessibility,accessibility with | Public,Internal -> wordL "internal" ++ itemL // print modifier, since more specific than context | Public,Private -> wordL "private" ++ itemL // print modifier, since more specific than context | Internal,Private -> wordL "private" ++ itemL // print modifier, since more specific than context | _ -> itemL /// Layout a reference to a type let layoutTyconRef (denv: DisplayEnv) (tcref:TyconRef) = let demangled = if denv.includeStaticParametersInTypeNames then tcref.DisplayNameWithStaticParameters elif tcref.DisplayName = tcref.DisplayNameWithStaticParameters then tcref.DisplayName // has no static params else tcref.DisplayName+"<...>" // shorten let tyconTextL = wordL demangled if denv.shortTypeNames then tyconTextL else let path = demangledPathOfCompPath tcref.CompilationPath let path = if denv.includeStaticParametersInTypeNames then path else path |> List.map (fun s -> let i = s.IndexOf(',') if i <> -1 then s.Substring(0,i)+"<...>" // apparently has static params, shorten else s) let pathText = trimPathByDisplayEnv denv path if pathText = "" then tyconTextL else leftL pathText ^^ tyconTextL /// Layout the flags of a member let layoutMemberFlags memFlags = let stat = if memFlags.IsInstance || (memFlags.MemberKind = MemberKind.Constructor) then emptyL else wordL "static" let stat = if memFlags.IsDispatchSlot then stat ++ wordL "abstract" elif memFlags.IsOverrideOrExplicitImpl then stat ++ wordL "override" else stat let stat = if memFlags.IsOverrideOrExplicitImpl then stat else match memFlags.MemberKind with | MemberKind.ClassConstructor | MemberKind.Constructor | MemberKind.PropertyGetSet -> stat | MemberKind.Member | MemberKind.PropertyGet | MemberKind.PropertySet -> stat ++ wordL "member" // let stat = if memFlags.IsFinal then stat ++ wordL "final" else stat in stat /// Layout a single attibute arg, following the cases of 'gen_attr_arg' in ilxgen.fs /// This is the subset of expressions we display in the NicePrint pretty printer /// See also dataExprL - there is overlap between these that should be removed let rec private layoutAttribArg denv arg = match arg with | Expr.Const(c,_,ty) -> if isEnumTy denv.g ty then wordL "enum" ^^ angleL (layoutType denv ty) ^^ bracketL (layoutConst denv.g ty c) else layoutConst denv.g ty c | Expr.Op (TOp.Array,[_elemTy],args,_) -> leftL "[|" ^^ semiListL (List.map (layoutAttribArg denv) args) ^^ rightL "|]" // Detect 'typeof' calls | TypeOfExpr denv.g ty -> leftL "typeof<" ^^ layoutType denv ty ^^ rightL ">" // Detect 'typedefof' calls | TypeDefOfExpr denv.g ty -> leftL "typedefof<" ^^ layoutType denv ty ^^ rightL ">" | Expr.Op (TOp.Coerce,[tgTy;_],[arg2],_) -> leftL "(" ^^ layoutAttribArg denv arg2 ^^ wordL ":>" ^^ layoutType denv tgTy ^^ rightL ")" | AttribBitwiseOrExpr denv.g (arg1, arg2) -> layoutAttribArg denv arg1 ^^ wordL "|||" ^^ layoutAttribArg denv arg2 // Detect explicit enum values | EnumExpr denv.g arg1 -> wordL "enum" ++ bracketL (layoutAttribArg denv arg1) | _ -> wordL "(* unsupported attribute argument *)" /// Layout arguments of an attribute 'arg1, ..., argN' and private layoutAttribArgs denv args = sepListL (rightL ",") (List.map (fun (AttribExpr(e1,_)) -> layoutAttribArg denv e1) args) /// Layout an attribute 'Type(arg1, ..., argN)' // // REVIEW: we are ignoring "props" here and private layoutAttrib denv (Attrib(_,k,args,_props,_,_,_)) = let argsL = bracketL (layoutAttribArgs denv args) match k with | (ILAttrib(ilMethRef)) -> let trimmedName = let name = ilMethRef.EnclosingTypeRef.Name match String.tryDropSuffix name "Attribute" with | Some shortName -> shortName | None -> name let tref = ilMethRef.EnclosingTypeRef let tref = ILTypeRef.Create(scope= tref.Scope, enclosing=tref.Enclosing, name=trimmedName) PrintIL.layoutILTypeRef denv tref ++ argsL | (FSAttrib(vref)) -> // REVIEW: this is not trimming "Attribute" let _,_,rty,_ = GetTypeOfMemberInMemberForm denv.g vref let rty = GetFSharpViewOfReturnType denv.g rty let tcref = tcrefOfAppTy denv.g rty layoutTyconRef denv tcref ++ argsL /// Layout '[]' above another block and layoutAttribs denv kind attrs restL = if denv.showAttributes then // Don't display DllImport attributes in generated signatures let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_DllImportAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ContextStaticAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ThreadStaticAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_EntryPointAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_MarshalAsAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ReflectedDefinitionAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_StructLayoutAttribute >> not) let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_AutoSerializableAttribute >> not) match attrs with | [] -> restL | _ -> squareAngleL (sepListL (rightL ";") (List.map (layoutAttrib denv) attrs)) @@ restL else match kind with | TyparKind.Type -> restL | TyparKind.Measure -> squareAngleL (wordL "Measure") @@ restL and private layoutTyparAttribs denv kind attrs restL = match attrs, kind with | [], TyparKind.Type -> restL | _, _ -> squareAngleL (sepListL (rightL ";") ((match kind with TyparKind.Type -> [] | TyparKind.Measure -> [wordL "Measure"]) @ List.map (layoutAttrib denv) attrs)) ^^ restL and private layoutTyparRef denv (typar:Typar) = wordL (sprintf "%s%s%s" (if denv.showConstraintTyparAnnotations then prefixOfStaticReq typar.StaticReq else "'") (if denv.showImperativeTyparAnnotations then prefixOfRigidTypar typar else "") typar.DisplayName) /// Layout a single type parameter declaration, taking TypeSimplificationInfo into account /// There are several printing-cases for a typar: /// /// 'a - is multiple occurance. /// _ - singleton occurrence, an underscore prefered over 'b. (OCAML accepts but does not print) /// #Type - inplace coercion constraint and singleton. /// ('a :> Type) - inplace coercion constraint not singleton. /// ('a.opM : S->T) - inplace operator constraint. /// and private layoutTyparRefWithInfo denv (env:SimplifyTypes.TypeSimplificationInfo) (typar:Typar) = let varL = layoutTyparRef denv typar let varL = if denv.showAttributes then layoutTyparAttribs denv typar.Kind typar.Attribs varL else varL match Zmap.tryFind typar env.inplaceConstraints with | Some (typarConstrTyp) -> if Zset.contains typar env.singletons then leftL "#" ^^ layoutTypeWithInfo denv env typarConstrTyp else (varL ^^ sepL ":>" ^^ layoutTypeWithInfo denv env typarConstrTyp) |> bracketL | _ -> varL /// Layout type parameter constraints, taking TypeSimplificationInfo into account and layoutConstraintsWithInfo denv env cxs = // Internally member constraints get attached to each type variable in their support. // This means we get too many constraints being printed. // So we normalize the constraints to eliminate duplicate member constraints let cxs = cxs |> ListSet.setify (fun (_,cx1) (_,cx2) -> match cx1,cx2 with | TyparConstraint.MayResolveMember(traitInfo1,_), TyparConstraint.MayResolveMember(traitInfo2,_) -> traitsAEquiv denv.g TypeEquivEnv.Empty traitInfo1 traitInfo2 | _ -> false) let cxsL = List.collect (layoutConstraintWithInfo denv env) cxs match cxsL with | [] -> emptyL | _ -> if denv.abbreviateAdditionalConstraints then wordL "when " elif denv.shortConstraints then leftL "(" ^^ wordL "requires" ^^ sepListL (wordL "and") cxsL ^^ rightL ")" else wordL "when" ^^ sepListL (wordL "and") cxsL /// Layout constraints, taking TypeSimplificationInfo into account and private layoutConstraintWithInfo denv env (tp,tpc) = let longConstraintPrefix l = layoutTyparRefWithInfo denv env tp ^^ wordL ":" ^^ l match tpc with | TyparConstraint.CoercesTo(tpct,_) -> [layoutTyparRefWithInfo denv env tp ^^ wordL ":>" --- layoutTypeWithInfo denv env tpct] | TyparConstraint.MayResolveMember(traitInfo,_) -> [layoutTraitWithInfo denv env traitInfo] | TyparConstraint.DefaultsTo(_,ty,_) -> if denv.showTyparDefaultConstraints then [wordL "default" ^^ layoutTyparRefWithInfo denv env tp ^^ wordL " :" ^^ layoutTypeWithInfo denv env ty] else [] | TyparConstraint.IsEnum(ty,_) -> if denv.shortConstraints then [wordL "enum"] else [longConstraintPrefix (layoutTypeAppWithInfoAndPrec denv env (wordL "enum") 2 true [ty])] | TyparConstraint.SupportsComparison _ -> if denv.shortConstraints then [wordL "comparison"] else [wordL "comparison" |> longConstraintPrefix] | TyparConstraint.SupportsEquality _ -> if denv.shortConstraints then [wordL "equality"] else [wordL "equality" |> longConstraintPrefix] | TyparConstraint.IsDelegate(aty,bty,_) -> if denv.shortConstraints then [wordL "delegate"] else [layoutTypeAppWithInfoAndPrec denv env (wordL "delegate") 2 true [aty;bty] |> longConstraintPrefix] | TyparConstraint.SupportsNull _ -> [wordL "null" |> longConstraintPrefix] | TyparConstraint.IsNonNullableStruct _ -> if denv.shortConstraints then [wordL "value type"] else [wordL "struct" |> longConstraintPrefix] | TyparConstraint.IsUnmanaged _ -> if denv.shortConstraints then [wordL "unmanaged"] else [wordL "unmanaged" |> longConstraintPrefix] | TyparConstraint.IsReferenceType _ -> if denv.shortConstraints then [wordL "reference type"] else [wordL "not struct" |> longConstraintPrefix] | TyparConstraint.SimpleChoice(tys,_) -> [bracketL (sepListL (sepL "|") (List.map (layoutTypeWithInfo denv env) tys)) |> longConstraintPrefix] | TyparConstraint.RequiresDefaultConstructor _ -> if denv.shortConstraints then [wordL "default constructor"] else [bracketL (wordL "new : unit -> " ^^ (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] and private layoutTraitWithInfo denv env (TTrait(tys,nm,memFlags,argtys,rty,_)) = let nm = DemangleOperatorName nm if denv.shortConstraints then wordL ("member "^nm) else let rty = GetFSharpViewOfReturnType denv.g rty let stat = layoutMemberFlags memFlags let tys = ListSet.setify (typeEquiv denv.g) tys let tysL = match tys with | [ty] -> layoutTypeWithInfo denv env ty | tys -> bracketL (layoutTypesWithInfoAndPrec denv env 2 (wordL "or") tys) tysL ^^ wordL ":" --- bracketL (stat ++ wordL nm ^^ wordL ":" --- ((layoutTypesWithInfoAndPrec denv env 2 (wordL "*") argtys --- wordL "->") --- (layoutTypeWithInfo denv env rty))) /// Layout a unit expression and private layoutMeasure denv unt = let sortVars vs = vs |> List.sortBy (fun (v:Typar,_) -> v.DisplayName) let sortCons cs = cs |> List.sortBy (fun (c:TyconRef,_) -> c.DisplayName) let negvs,posvs = ListMeasureVarOccsWithNonZeroExponents unt |> sortVars |> List.partition (fun (_,e) -> e<0) let negcs,poscs = ListMeasureConOccsWithNonZeroExponents denv.g false unt |> sortCons |> List.partition (fun (_,e) -> e<0) let unparL uv = layoutTyparRef denv uv let unconL tc = layoutTyconRef denv tc let prefix = spaceListL (List.map (fun (v,e) -> if e=1 then unparL v else unparL v -- wordL (sprintf "^ %d" e)) posvs @ List.map (fun (c,e) -> if e=1 then unconL c else unconL c -- wordL (sprintf "^ %d" e)) poscs) let postfix = spaceListL (List.map (fun (v,e) -> if e= -1 then unparL v else unparL v -- wordL (sprintf "^ %d" (-e))) negvs @ List.map (fun (c,e) -> if e= -1 then unconL c else unconL c -- wordL (sprintf "^ %d" (-e))) negcs) match (negvs,negcs) with | [],[] -> (match posvs,poscs with [],[] -> wordL "1" | _ -> prefix) | _ -> prefix ^^ sepL "/" ^^ (if List.length negvs + List.length negcs > 1 then sepL "(" ^^ postfix ^^ sepL ")" else postfix) /// Layout type arguments, either NAME or (ty,...,ty) NAME *) and private layoutTypeAppWithInfoAndPrec denv env tcL prec prefix args = if prefix then match args with | [] -> tcL | [arg] -> tcL ^^ sepL "<" ^^ (layoutTypeWithInfoAndPrec denv env 4 arg) ^^ rightL ">" | args -> bracketIfL (prec <= 1) (tcL ^^ angleL (layoutTypesWithInfoAndPrec denv env 2 (sepL ",") args)) else match args with | [] -> tcL | [arg] -> layoutTypeWithInfoAndPrec denv env 2 arg ^^ tcL | args -> bracketIfL (prec <= 1) (bracketL (layoutTypesWithInfoAndPrec denv env 2 (sepL ",") args) --- tcL) /// Layout a type, taking precedence into account to insert brackets where needed *) and layoutTypeWithInfoAndPrec denv env prec typ = match stripTyparEqns typ with // Layout a type application | TType_app (tc,args) when tc.IsMeasureableReprTycon && List.forall (isDimensionless denv.g) args -> layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided denv.g tc args) | TType_app (tc,args) -> layoutTypeAppWithInfoAndPrec denv env (layoutTyconRef denv tc) prec tc.IsPrefixDisplay args | TType_ucase (UCRef(tc,_),args) -> layoutTypeAppWithInfoAndPrec denv env (layoutTyconRef denv tc) prec tc.IsPrefixDisplay args // Layout a tuple type | TType_tuple t -> bracketIfL (prec <= 2) (layoutTypesWithInfoAndPrec denv env 2 (wordL "*") t) // Layout a first-class generic type. | TType_forall (tps,tau) -> let tauL = layoutTypeWithInfoAndPrec denv env prec tau match tps with | [] -> tauL | [h] -> layoutTyparRefWithInfo denv env h ^^ rightL "." --- tauL | (h::t) -> spaceListL (List.map (layoutTyparRefWithInfo denv env) (h::t)) ^^ rightL "." --- tauL // Layout a function type. | TType_fun _ -> let rec loop soFarL ty = match stripTyparEqns ty with | TType_fun (dty,rty) -> loop (soFarL --- (layoutTypeWithInfoAndPrec denv env 4 dty ^^ wordL "->")) rty | rty -> soFarL --- layoutTypeWithInfoAndPrec denv env 5 rty bracketIfL (prec <= 4) (loop emptyL typ) // Layout a type variable . | TType_var r -> layoutTyparRefWithInfo denv env r | TType_measure unt -> layoutMeasure denv unt /// Layout a list of types, separated with the given separator, either '*' or ',' and private layoutTypesWithInfoAndPrec denv env prec sep typl = sepListL sep (List.map (layoutTypeWithInfoAndPrec denv env prec) typl) /// Layout a single type, taking TypeSimplificationInfo into account and private layoutTypeWithInfo denv env typ = layoutTypeWithInfoAndPrec denv env 5 typ and layoutType denv typ = layoutTypeWithInfo denv SimplifyTypes.typeSimplificationInfo0 typ /// Layout a single type used as the type of a member or value let layoutTopType denv env argInfos rty cxs = // Parenthesize the return type to match the topValInfo let rtyL = layoutTypeWithInfoAndPrec denv env 4 rty let cxsL = layoutConstraintsWithInfo denv env cxs match argInfos with | [] -> rtyL --- cxsL | _ -> // Format each argument, including its name and type let argL (ty,argInfo: ArgReprInfo) = // Detect an optional argument let isOptionalArg = HasFSharpAttribute denv.g denv.g.attrib_OptionalArgumentAttribute argInfo.Attribs let isParamArray = HasFSharpAttribute denv.g denv.g.attrib_ParamArrayAttribute argInfo.Attribs match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy denv.g ty with // Layout an optional argument | Some(id), true, _, Some ty -> leftL ("?"^id.idText) ^^ sepL ":" ^^ layoutTypeWithInfoAndPrec denv env 2 ty // Layout an unnamed argument | None, _,_, _ -> layoutTypeWithInfoAndPrec denv env 2 ty // Layout a named argument | Some id,_,isParamArray,_ -> leftL ((if isParamArray then "params " else "") + id.idText) ^^ sepL ":" ^^ layoutTypeWithInfoAndPrec denv env 2 ty let delimitReturnValue = if denv.useColonForReturnType then ":" else "->" let allArgsL = argInfos |> List.mapSquared argL |> List.map (sepListL (wordL "*")) |> List.map (fun x -> (x ^^ wordL delimitReturnValue)) (List.foldBack (---) allArgsL rtyL) --- cxsL /// Layout type parameters let layoutTyparDecls denv nmL prefix (typars: Typars) = let env = SimplifyTypes.typeSimplificationInfo0 let tpcs = typars |> List.collect (fun tp -> List.map (fun tpc -> tp,tpc) tp.Constraints) match typars,tpcs with | [],[] -> nmL | [h],[] when not prefix -> layoutTyparRefWithInfo denv env h --- nmL | _ -> let tpcsL = layoutConstraintsWithInfo denv env tpcs let coreL = sepListL (sepL ",") (List.map (layoutTyparRefWithInfo denv env) typars) (if prefix || nonNil(tpcs) then nmL ^^ angleL (coreL --- tpcsL) else bracketL coreL --- nmL) let layoutTyparConstraint denv typars = match layoutConstraintWithInfo denv SimplifyTypes.typeSimplificationInfo0 typars with | h::_ -> h | [] -> emptyL let layoutPrettifiedTypes denv taus = let _,ptaus,cxs = PrettyTypes.PrettifyTypesN denv.g taus let env = SimplifyTypes.CollectInfo true ptaus cxs List.map (layoutTypeWithInfo denv env) ptaus,layoutConstraintsWithInfo denv env env.postfixConstraints let layoutPrettifiedTypesAndConstraints denv argInfos tau cxs = let env = SimplifyTypes.CollectInfo true (tau:: List.collect (List.map fst) argInfos) cxs layoutTopType denv env argInfos tau env.postfixConstraints let layoutPrettifiedTypeAndConstraints denv argInfos tau = let _,(argInfos,tau),cxs = PrettyTypes.PrettifyTypesN1 denv.g (argInfos,tau) layoutPrettifiedTypesAndConstraints denv [argInfos] tau cxs let layoutMemberTypeAndConstraints denv argInfos retTy parentTyparTys = let _,(parentTyparTys,argInfos,retTy),cxs = PrettyTypes.PrettifyTypesNM1 denv.g (parentTyparTys,argInfos,retTy) // Filter out the parent typars, which don't get shown in the member signature let cxs = cxs |> List.filter (fun (tp,_) -> not (parentTyparTys |> List.exists (fun ty -> isTyparTy denv.g ty && typarEq tp (destTyparTy denv.g ty)))) layoutPrettifiedTypesAndConstraints denv argInfos retTy cxs // Layout: type spec - class, datatype, record, abbrev let private layoutMemberTypeCore denv memberToParentInst (methTypars: Typars,argInfos,retTy) = let niceMethodTypars, allTyparInst = let methTyparNames = methTypars |> List.mapi (fun i tp -> if (PrettyTypes.NeedsPrettyTyparName tp) then sprintf "a%d" (List.length memberToParentInst + i) else tp.Name) PrettyTypes.NewPrettyTypars memberToParentInst methTypars methTyparNames let retTy = instType allTyparInst retTy let argInfos = argInfos |> List.map (fun infos -> if isNil infos then [(denv.g.unit_ty,ValReprInfo.unnamedTopArg1)] else infos |> List.map (map1Of2 (instType allTyparInst))) // Also format dummy types corresponding to any type variables on the container to make sure they // aren't chosen as names for displayed variables. let memberParentTypars = List.map fst memberToParentInst let parentTyparTys = List.map (mkTyparTy >> instType allTyparInst) memberParentTypars niceMethodTypars,layoutMemberTypeAndConstraints denv argInfos retTy parentTyparTys let layoutMemberType denv v argInfos retTy = match PartitionValRefTypars denv.g v with | Some(_,_,memberMethodTypars,memberToParentInst,_) -> layoutMemberTypeCore denv memberToParentInst (memberMethodTypars, argInfos, retTy) | None -> [],layoutPrettifiedTypeAndConstraints denv (List.concat argInfos) retTy let layoutMemberSig denv (memberToParentInst,nm,methTypars,argInfos,retTy) = let niceMethodTypars,tauL = layoutMemberTypeCore denv memberToParentInst (methTypars, argInfos, retTy) let nameL = let nameL = wordL (DemangleOperatorName nm) let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL nameL nameL ^^ wordL ":" ^^ tauL let layoutPrettyType denv typ = let _,typ,cxs = PrettyTypes.PrettifyTypes1 denv.g typ let env = SimplifyTypes.CollectInfo true [typ] cxs let cxsL = layoutConstraintsWithInfo denv env env.postfixConstraints layoutTypeWithInfoAndPrec denv env 2 typ --- cxsL /// Printing TAST objects module private PrintTastMemberOrVals = open PrintTypes let private layoutMember denv (v:Val) = let v = mkLocalValRef v let membInfo = Option.get v.MemberInfo let stat = PrintTypes.layoutMemberFlags membInfo.MemberFlags let _tps,argInfos,rty,_ = GetTypeOfMemberInFSharpForm denv.g v let mkNameL niceMethodTypars name = let name = DemangleOperatorName name let nameL = wordL name let nameL = if denv.showMemberContainers then layoutTyconRef denv v.MemberApparentParent ^^ sepL "." ^^ nameL else nameL let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL let nameL = layoutAccessibility denv v.Accessibility nameL nameL match membInfo.MemberFlags.MemberKind with | MemberKind.Member -> let niceMethodTypars,tauL = layoutMemberType denv v argInfos rty let nameL = mkNameL niceMethodTypars v.LogicalName stat --- (nameL ^^ wordL ":" ^^ tauL) | MemberKind.ClassConstructor | MemberKind.Constructor -> let _,tauL = layoutMemberType denv v argInfos rty let newL = layoutAccessibility denv v.Accessibility (wordL "new") stat ++ newL ^^ wordL ":" ^^ tauL | MemberKind.PropertyGetSet -> stat | MemberKind.PropertyGet -> if isNil argInfos then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertyGetter(),v.Id.idRange)); stat --- wordL v.PropertyName --- wordL "with get" else let argInfos = match argInfos with | [[(ty,_)]] when isUnitTy denv.g ty -> [] | _ -> argInfos let niceMethodTypars,tauL = layoutMemberType denv v argInfos rty let nameL = mkNameL niceMethodTypars v.PropertyName stat --- (nameL ^^ wordL ":" ^^ (if isNil argInfos then tauL else tauL --- wordL "with get")) | MemberKind.PropertySet -> if argInfos.Length <> 1 || isNil argInfos.Head then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertySetter(),v.Id.idRange)); stat --- wordL v.PropertyName --- wordL "with set" else let argInfos,valueInfo = List.frontAndBack argInfos.Head let niceMethodTypars,tauL = layoutMemberType denv v (if isNil argInfos then [] else [argInfos]) (fst valueInfo) let nameL = mkNameL niceMethodTypars v.PropertyName stat --- (nameL ^^ wordL ":" ^^ (tauL --- wordL "with set")) let private layoutNonMemberVal denv (tps,v:Val,tau,cxs) = let env = SimplifyTypes.CollectInfo true [tau] cxs let cxs = env.postfixConstraints let argInfos,rty = GetTopTauTypeInFSharpForm denv.g (arityOfVal v).ArgInfos tau v.Range let nameL = wordL v.DisplayName let nameL = layoutAccessibility denv v.Accessibility nameL let nameL = if v.IsMutable && not denv.suppressMutableKeyword then wordL "mutable" ++ nameL else nameL let nameL = if v.MustInline && not denv.suppressInlineKeyword then wordL "inline" ++ nameL else nameL let isOverGeneric = List.length (Zset.elements (freeInType CollectTyparsNoCaching tau).FreeTypars) < List.length tps // Bug: 1143 let isTyFunction = v.IsTypeFunction // Bug: 1143, and innerpoly tests let typarBindingsL = if isTyFunction || isOverGeneric || denv.showTyparBinding then layoutTyparDecls denv nameL true tps else nameL let valAndTypeL = (wordL "val" ^^ typarBindingsL --- wordL ":") --- layoutTopType denv env argInfos rty cxs match denv.generatedValueLayout v with | None -> valAndTypeL | Some rhsL -> (valAndTypeL ++ wordL "=") --- rhsL let layoutValOrMember denv (v:Val) = let vL = match v.MemberInfo with | None -> let tps,tau = v.TypeScheme // adjust the type in case this is the 'this' pointer stored in a reference cell let tau = StripSelfRefCell(denv.g, v.BaseOrThisInfo, tau) let tprenaming,ptau,cxs = PrettyTypes.PrettifyTypes1 denv.g tau let ptps = tps |> generalizeTypars // Badly formed code may instantiate rigid declared typars to types, e.g. see bug // Hence we double check here that the thing is really a type variable |> List.map (instType tprenaming) |> List.filter (isAnyParTy denv.g) |> List.map (destAnyParTy denv.g) layoutNonMemberVal denv (ptps,v,ptau,cxs) | Some _ -> layoutMember denv v layoutAttribs denv TyparKind.Type v.Attribs vL let layoutMemberSig denv x = x |> PrintTypes.layoutMemberSig denv let layoutTyparConstraint denv x = x |> PrintTypes.layoutTyparConstraint denv let outputTy denv os x = x |> PrintTypes.layoutType denv |> bufferL os let outputTypars denv nm os x = x |> PrintTypes.layoutTyparDecls denv (wordL nm) true |> bufferL os let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRef denv |> bufferL os let layoutConst g ty c = PrintTypes.layoutConst g ty c let layoutPrettifiedTypeAndConstraints denv argInfos tau = PrintTypes.layoutPrettifiedTypeAndConstraints denv argInfos tau //------------------------------------------------------------------------- /// Printing info objects module InfoMemberPrinting = /// Format the arguments of a method to a buffer. /// /// This uses somewhat "old fashioned" printf-style buffer printing. let formatParamDataToBuffer denv os (ParamData(isParamArray,_isOutArg,optArgInfo,nmOpt,pty)) = let isOptArg = optArgInfo.IsOptional match isParamArray, nmOpt, isOptArg, tryDestOptionTy denv.g pty with // Layout an optional argument | _, Some nm, true, ptyOpt -> // detect parameter type, if ptyOpt is None - this is .NET style optional argument let pty = defaultArg ptyOpt pty bprintf os "?%s: " nm outputTy denv os pty // Layout an unnamed argument | _, None, _,_ -> outputTy denv os pty; // Layout a named argument | true, Some nm,_,_ -> bprintf os "params %s: " nm outputTy denv os pty | false, Some nm,_,_ -> bprintf os "%s: " nm outputTy denv os pty /// Format a method info using "F# style". // // That is, this style: // new : argName1:argType1 * ... * argNameN:argTypeN -> retType // Method : argName1:argType1 * ... * argNameN:argTypeN -> retType let private formatMethInfoToBufferFSharpStyle amap m denv os (minfo:MethInfo) minst = if not minfo.IsConstructor && not minfo.IsInstance then bprintf os "static " if minfo.IsConstructor then bprintf os "new : " else bprintf os "member " outputTypars denv minfo.LogicalName os minfo.FormalMethodTypars; bprintf os " : " let paramDatas = minfo.GetParamDatas(amap, m, minst) if (List.concat paramDatas).Length = 0 then bprintf os "unit" paramDatas |> List.iteri (fun i datas -> if i > 0 then bprintf os " -> "; datas |> List.iteri (fun j arg -> if j > 0 then bprintf os " * "; formatParamDataToBuffer denv os arg)) let retTy = minfo.GetFSharpReturnTy(amap, m, minst) bprintf os " -> " outputTy denv os retTy /// Format a method info using "half C# style". // // That is, this style: // Container(argName1:argType1, ..., argNameN:argTypeN) : retType // Container.Method(argName1:argType1, ..., argNameN:argTypeN) : retType let private formatMethInfoToBufferCSharpStyle amap m denv os (minfo:MethInfo) minst = let retTy = minfo.GetFSharpReturnTy(amap, m, minst) outputTyconRef denv os (tcrefOfAppTy amap.g minfo.EnclosingType); if minfo.IsConstructor then bprintf os "(" else bprintf os "." outputTypars denv minfo.LogicalName os minfo.FormalMethodTypars; bprintf os "(" let paramDatas = minfo.GetParamDatas (amap, m, minst) paramDatas |> List.iter (List.iteri (fun i arg -> if i > 0 then bprintf os ", "; formatParamDataToBuffer denv os arg)) bprintf os ") : " outputTy denv os retTy // Prettify this baby let prettifyILMethInfo (amap:Import.ImportMap) m (minfo:MethInfo) = function | ILMethInfo(ILTypeInfo(tcref,tref,tinst,tdef),extInfo,mdef,_) -> let _,tys,_ = PrettyTypes.PrettifyTypesN amap.g (tinst @ minfo.FormalMethodInst) let tinst,minst = List.chop tinst.Length tys let minfo = ILMethInfo.Create (amap, m, ILTypeInfo(tcref,tref,tinst,tdef), extInfo, None, mdef) minfo,minst | ILFSMethInfo _ as ilminfo -> ILMeth(amap.g,ilminfo,None),[] /// Format a method to a buffer using "standalone" display style. /// For example, these are the formats used when printing signatures of methods that have not been overriden, /// and the format used when showing the individual member in QuickInfo and DeclarationInfo. /// The formats differ between .NET/provided methods and F# methods. Surprisingly people don't really seem /// to notice this, or they find it helpful. It feels that moving from this position should not be done lightly. // // For F# members, we use layoutValOrMemberm which gives: // new : unit -> retType // new : argName1:argType1 * ... * argNameN:argTypeN -> retType // Container.Method : unit -> retType // Container.Method : argName1:argType1 * ... * argNameN:argTypeN -> retType // // For C# and provided members: // Container(argName1:argType1, ..., argNameN:argTypeN) : retType // Container.Method(argName1:argType1, ..., argNameN:argTypeN) : retType // let formatMethInfoToBufferFreeStyle amap m denv os minfo = match minfo with | DefaultStructCtor(g,_typ) -> outputTyconRef denv os (tcrefOfAppTy g minfo.EnclosingType) bprintf os "()" | FSMeth(_,_,vref,_) -> vref.Deref |> PrintTastMemberOrVals.layoutValOrMember { denv with showMemberContainers=true; } |> bufferL os | ILMeth(_,ilminfo,_) -> // Prettify first let minfo,minst = prettifyILMethInfo amap m minfo ilminfo formatMethInfoToBufferCSharpStyle amap m denv os minfo minst #if EXTENSIONTYPING | ProvidedMeth _ -> formatMethInfoToBufferCSharpStyle amap m denv os minfo minfo.FormalMethodInst #endif /// Format a method to a layotu (actually just containing a string) using "free style" (aka "standalone"). let layoutMethInfoFSharpStyle amap m denv (minfo: MethInfo) = wordL (bufs (fun buf -> formatMethInfoToBufferFSharpStyle amap m denv buf minfo minfo.FormalMethodInst)) //------------------------------------------------------------------------- /// Printing TAST objects module private TastDefinitionPrinting = open PrintTypes let layoutExtensionMember denv (v:Val) = let tycon = v.MemberApparentParent.Deref let nameL = wordL tycon.DisplayName let nameL = layoutAccessibility denv tycon.Accessibility nameL // "type-accessibility" let tps = match PartitionValTypars denv.g v with | Some(_,memberParentTypars,_,_,_) -> memberParentTypars | None -> [] let lhsL = wordL "type" ^^ layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps (lhsL ^^ wordL "with") @@-- (PrintTastMemberOrVals.layoutValOrMember denv v) let layoutExtensionMembers denv vs = aboveListL (List.map (layoutExtensionMember denv) vs) let layoutUnionCaseArgTypes denv argtys = sepListL (wordL "*") (List.map (layoutTypeWithInfoAndPrec denv SimplifyTypes.typeSimplificationInfo0 2) argtys) let layoutUnionCase denv prefixL ucase = let nmL = wordL (DemangleOperatorName ucase.Id.idText) //let nmL = layoutAccessibility denv ucase.Accessibility nmL match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL "of") --- layoutUnionCaseArgTypes denv argtys let layoutUnionCases denv ucases = let prefixL = wordL "|" // See bug://2964 - always prefix in case preceeded by accessibility modifier List.map (layoutUnionCase denv prefixL) ucases let layoutRecdField addAccess denv (fld:RecdField) = let lhs = wordL fld.Name let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) let lhs = if fld.IsMutable then wordL "mutable" --- lhs else lhs (lhs ^^ rightL ":") --- layoutType denv fld.FormalType /// When to force a break? "type tyname = repn" /// When repn is class or datatype constructors (not single one). let breakTypeDefnEqn repr = match repr with | TFsObjModelRepr _ -> true | TFiniteUnionRepr r -> r.CasesTable.UnionCasesAsList.Length > 1 | TRecdRepr _ -> true | TAsmRepr _ | TILObjModelRepr _ | TMeasureableRepr _ #if EXTENSIONTYPING | TProvidedTypeExtensionPoint _ | TProvidedNamespaceExtensionPoint _ #endif | TNoRepr -> false #if EXTENSIONTYPING let private layoutILFieldInfo denv amap m (e: ILFieldInfo) = let staticL = if e.IsStatic then wordL "static" else emptyL let nameL = wordL (adjustILName e.FieldName) let typL = layoutType denv (e.FieldType(amap,m)) staticL ^^ wordL "val" ^^ nameL ^^ wordL ":" ^^ typL let private layoutEventInfo denv amap m (e: EventInfo) = let staticL = if e.IsStatic then wordL "static" else emptyL let nameL = wordL (adjustILName e.EventName) let typL = layoutType denv (e.GetDelegateType(amap,m)) staticL ^^ wordL "event" ^^ nameL ^^ wordL ":" ^^ typL let private layoutPropInfo denv amap m (p : PropInfo) = let staticL = if p.IsStatic then wordL "static" else emptyL let nameL = wordL (adjustILName p.PropertyName) let typL = layoutType denv (p.GetPropertyType(amap,m)) // shouldn't happen let specGetSetL = match p.HasGetter, p.HasSetter with | false,false | true,false -> emptyL | false, true -> wordL "with" ^^ wordL " set" | true, true -> wordL "with" ^^ wordL "get," ^^ wordL "set" staticL ^^ wordL "member" ^^ nameL ^^ wordL ":" ^^ typL ^^ specGetSetL /// Another re-implementation of type printing, this time based off provided info objects. let layoutProvidedTycon (denv:DisplayEnv) (infoReader:InfoReader) ad m start lhsL ty = let g = denv.g let tcref,_ = destAppTy g ty if isEnumTy g ty then let fieldLs = infoReader.GetILFieldInfosOfType (None,ad,m,ty) |> List.filter (fun x -> x.FieldName <> "value__") |> List.map (fun x -> PrintIL.layoutILEnumDefParts x.FieldName x.LiteralValue) |> aboveListL (lhsL ^^ wordL "=") @@-- fieldLs else let amap = infoReader.amap let sortKey (v:MethInfo) = (not v.IsConstructor, not v.IsInstance, // instance first v.DisplayName, // sort by name List.sum v.NumArgs , // sort by #curried v.NumArgs.Length) // sort by arity let ctors = GetIntrinsicConstructorInfosOfType infoReader m ty let meths = GetImmediateIntrinsicMethInfosOfType (None,ad) g amap m ty let iimplsLs = if suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty then [] else GetImmediateInterfacesOfType g amap m ty |> List.map (fun ity -> wordL (if isInterfaceTy g ty then "inherit" else "interface") --- layoutType denv ity) let props = //GetImmediateIntrinsicPropInfosOfType (None,ad) g amap m ty GetIntrinsicPropInfosOfType infoReader (None,ad,AllowMultiIntfInstantiations.No) PreferOverrides m ty let events = infoReader.GetEventInfosOfType(None,ad,m,ty) let impliedNames = try Set.ofList [ for p in props do if p.HasGetter then yield p.GetterMethod.DisplayName if p.HasSetter then yield p.SetterMethod.DisplayName for e in events do yield e.GetAddMethod().DisplayName yield e.GetRemoveMethod().DisplayName ] with _ -> Set.empty let ctorLs = ctors |> shrinkOverloads (InfoMemberPrinting.layoutMethInfoFSharpStyle amap m denv) (fun _ xL -> xL) let methLs = meths |> List.filter (fun md -> not (impliedNames.Contains md.DisplayName)) |> List.groupBy (fun md -> md.DisplayName) |> List.collect (fun (_,group) -> shrinkOverloads (InfoMemberPrinting.layoutMethInfoFSharpStyle amap m denv) (fun x xL -> (sortKey x, xL)) group) let fieldLs = infoReader.GetILFieldInfosOfType (None,ad,m,ty) |> List.map (fun x -> (true,x.IsStatic,x.FieldName,0,0),layoutILFieldInfo denv amap m x) let propLs = props |> List.map (fun x -> (true,x.IsStatic,x.PropertyName,0,0),layoutPropInfo denv amap m x) let eventLs = events |> List.map (fun x -> (true,x.IsStatic,x.EventName,0,0), layoutEventInfo denv amap m x) let membLs = (methLs @ fieldLs @ propLs @ eventLs) |> List.sortBy fst |> List.map snd let nestedTypeLs = match tcref.TypeReprInfo with | TProvidedTypeExtensionPoint info -> [ for nestedType in info.ProvidedType.PApplyArray((fun sty -> sty.GetNestedTypes()), "GetNestedTypes", m) do yield nestedType.PUntaint((fun t -> t.Name), m) ] |> List.sort |> List.map (fun t -> wordL "nested" ^^ wordL "type" ^^ wordL t) | _ -> [] let inherits = if suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty then [] else match GetSuperTypeOfType g amap m ty with | Some super when not (isObjTy g super) -> [wordL "inherit" ^^ (layoutType denv super)] | _ -> [] let erasedL = #if SHOW_ERASURE if tcref.IsProvidedErasedTycon then [ wordL ""; wordL (FSComp.SR.erasedTo()) ^^ PrintIL.layoutILTypeRef { denv with shortTypeNames = false } tcref.CompiledRepresentationForNamedType; wordL "" ] else #endif [] let decls = inherits @ iimplsLs @ ctorLs @ membLs @ nestedTypeLs @ erasedL if List.isEmpty decls then lhsL else let declsL = (inherits @ iimplsLs @ ctorLs @ membLs @ nestedTypeLs @ erasedL) |> applyMaxMembers denv.maxMembers |> aboveListL let rhsL = match start with Some s -> (wordL s @@-- declsL) @@ wordL "end" | None -> declsL (lhsL ^^ wordL "=") @@-- rhsL #endif let layoutTycon (denv:DisplayEnv) (infoReader:InfoReader) ad m simplified typewordL (tycon:Tycon) = let g = denv.g let nameL = wordL tycon.DisplayName let nameL = layoutAccessibility denv tycon.Accessibility nameL let denv = denv.AddAccessibility tycon.Accessibility let lhsL = let tps = tycon.TyparsNoRange let tpsL = layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps typewordL ^^ tpsL let _,ty = generalizeTyconRef (mkLocalTyconRef tycon) let start = if isClassTy g ty then (if simplified then None else Some "class" ) elif isInterfaceTy g ty then Some "interface" elif isStructTy g ty then Some "struct" else None #if EXTENSIONTYPING match tycon.IsProvided with | true -> layoutProvidedTycon denv infoReader ad m start lhsL ty | false -> #else ignore (infoReader, ad, m) #endif let memberImplementLs,memberCtorLs,memberInstanceLs,memberStaticLs = let adhoc = tycon.MembersOfFSharpTyconSorted |> List.filter (fun v -> not v.IsDispatchSlot) |> List.filter (fun v -> not v.Deref.IsClassConstructor) |> List.filter (fun v -> match v.MemberInfo.Value.ImplementedSlotSigs with | TSlotSig(_,oty,_,_,_,_) :: _ -> // Don't print overrides in HTML docs denv.showOverrides && // Don't print individual methods forming interface implementations - these are currently never exported not (isInterfaceTy denv.g oty) | [] -> true) |> List.filter (fun v -> denv.showObsoleteMembers || not (HasFSharpAttribute denv.g denv.g.attrib_SystemObsolete v.Attribs)) // sort let sortKey (v:ValRef) = (not v.IsConstructor, // constructors before others v.Id.idText, // sort by name (if v.IsCompiledAsTopLevel then v.ValReprInfo.Value.NumCurriedArgs else 0), // sort by #curried (if v.IsCompiledAsTopLevel then v.ValReprInfo.Value.AritiesOfArgs else []) // sort by arity ) let adhoc = adhoc |> List.sortBy sortKey let iimpls = match tycon.TypeReprInfo with | TFsObjModelRepr r when (match r.fsobjmodel_kind with TTyconInterface -> true | _ -> false) -> [] | _ -> tycon.ImmediateInterfacesOfFSharpTycon let iimpls = iimpls |> List.filter (fun (_,compgen,_) -> not compgen) // if TTyconInterface, the iimpls should be printed as inheritted interfaces let iimplsLs = iimpls |> List.map (fun (ty,_,_) -> wordL "interface" --- layoutType denv ty) let adhocCtorsLs = adhoc |> List.filter (fun v -> v.IsConstructor) |> List.map (fun vref -> PrintTastMemberOrVals.layoutValOrMember denv vref.Deref) let adhocInstanceLs = adhoc |> List.filter (fun v -> not v.IsConstructor && v.IsInstanceMember) |> List.map (fun vref -> PrintTastMemberOrVals.layoutValOrMember denv vref.Deref) let adhocStaticLs = adhoc |> List.filter (fun v -> not v.IsConstructor && not v.IsInstanceMember) |> List.map (fun vref -> PrintTastMemberOrVals.layoutValOrMember denv vref.Deref) iimplsLs,adhocCtorsLs,adhocInstanceLs,adhocStaticLs let memberLs = memberImplementLs @ memberCtorLs @ memberInstanceLs @ memberStaticLs let addMembersAsWithEnd reprL = if isNil memberLs then reprL elif simplified then reprL @@ aboveListL memberLs else reprL @@ (wordL "with" @@-- aboveListL memberLs) @@ wordL "end" let reprL = let repr = tycon.TypeReprInfo match repr with | TRecdRepr _ | TFiniteUnionRepr _ | TFsObjModelRepr _ | TAsmRepr _ | TMeasureableRepr _ | TILObjModelRepr _ -> let brk = nonNil memberLs || breakTypeDefnEqn repr let rhsL = let addReprAccessL l = layoutAccessibility denv tycon.TypeReprAccessibility l let denv = denv.AddAccessibility tycon.TypeReprAccessibility match repr with | TRecdRepr _ -> let recdFieldRefL fld = layoutRecdField false denv fld ^^ rightL ";" let recdL = tycon.TrueFieldsAsList |> List.map recdFieldRefL |> applyMaxMembers denv.maxMembers |> aboveListL |> braceL Some (addMembersAsWithEnd (addReprAccessL recdL)) | TFsObjModelRepr r -> match r.fsobjmodel_kind with | TTyconDelegate (TSlotSig(_,_, _,_,paraml, rty)) -> let rty = GetFSharpViewOfReturnType denv.g rty Some (wordL "delegate of" --- layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty []) | _ -> match r.fsobjmodel_kind with | TTyconEnum -> tycon.TrueFieldsAsList |> List.map (fun f -> match f.LiteralValue with | None -> emptyL | Some c -> wordL "| " ^^ wordL f.Name ^^ wordL " = " ^^ layoutConst denv.g ty c) |> aboveListL |> Some | _ -> let inherits = match r.fsobjmodel_kind, tycon.TypeContents.tcaug_super with | TTyconClass,Some super -> [wordL "inherit" ^^ (layoutType denv super)] | TTyconInterface,_ -> tycon.ImmediateInterfacesOfFSharpTycon |> List.filter (fun (_,compgen,_) -> not compgen) |> List.map (fun (ity,_,_) -> wordL "inherit" ^^ (layoutType denv ity)) | _ -> [] let vsprs = tycon.MembersOfFSharpTyconSorted |> List.filter (fun v -> isNil (Option.get v.MemberInfo).ImplementedSlotSigs) |> List.filter (fun v -> v.IsDispatchSlot) |> List.map (fun vref -> PrintTastMemberOrVals.layoutValOrMember denv vref.Deref) let staticValsLs = tycon.TrueFieldsAsList |> List.filter (fun f -> f.IsStatic) |> List.map (fun f -> wordL "static" ^^ wordL "val" ^^ layoutRecdField true denv f) let instanceValsLs = tycon.TrueFieldsAsList |> List.filter (fun f -> not f.IsStatic) |> List.map (fun f -> wordL "val" ^^ layoutRecdField true denv f) let alldecls = inherits @ memberImplementLs @ memberCtorLs @ instanceValsLs @ vsprs @ memberInstanceLs @ staticValsLs @ memberStaticLs if List.isEmpty alldecls then None else let alldecls = applyMaxMembers denv.maxMembers alldecls let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil alldecls | _ -> false if emptyMeasure then None else let declsL = aboveListL alldecls let declsL = match start with Some s -> (wordL s @@-- declsL) @@ wordL "end" | None -> declsL Some declsL | TFiniteUnionRepr _ -> let layoutUnionCases = tycon.UnionCasesAsList |> layoutUnionCases denv |> applyMaxMembers denv.maxMembers |> aboveListL Some (addMembersAsWithEnd (addReprAccessL layoutUnionCases)) | TAsmRepr _ -> Some (wordL "(# \"\" #)") | TMeasureableRepr ty -> Some (layoutType denv ty) | TILObjModelRepr (_,_,td) -> Some (PrintIL.layoutILTypeDef denv td) | _ -> None let brk = match tycon.TypeReprInfo with | TILObjModelRepr _ -> true | _ -> brk match rhsL with | None -> lhsL | Some rhsL -> if brk then (lhsL ^^ wordL "=") @@-- rhsL else (lhsL ^^ wordL "=") --- rhsL | _ -> match tycon.TypeAbbrev with | None -> addMembersAsWithEnd lhsL | Some a -> (lhsL ^^ wordL "=") --- (layoutType { denv with shortTypeNames = false } a) layoutAttribs denv tycon.TypeOrMeasureKind tycon.Attribs reprL // Layout: exception definition let layoutExnDefn denv (exnc:Entity) = let nm = exnc.LogicalName let nmL = wordL nm let nmL = layoutAccessibility denv exnc.TypeReprAccessibility nmL let exnL = wordL "exception" ^^ nmL // need to tack on the Exception at the right of the name for goto definition let reprL = match exnc.ExceptionInfo with | TExnAbbrevRepr ecref -> wordL "=" --- layoutTyconRef denv ecref | TExnAsmRepr _ -> wordL "=" --- wordL "(# ... #)" | TExnNone -> emptyL | TExnFresh r -> match r.TrueFieldsAsList with | [] -> emptyL | r -> wordL "of" --- layoutUnionCaseArgTypes denv (r |> List.map (fun rfld -> rfld.FormalType)) exnL ^^ reprL // Layout: module spec let layoutTyconDefns denv infoReader ad m (tycons:Tycon list) = match tycons with | [] -> emptyL | [h] when h.IsExceptionDecl -> layoutExnDefn denv h | h :: t -> let x = layoutTycon denv infoReader ad m false (wordL "type") h let xs = List.map (layoutTycon denv infoReader ad m false (wordL "and")) t aboveListL (x::xs) //-------------------------------------------------------------------------- module private InferredSigPrinting = open PrintTypes /// Layout the inferred signature of a compilation unit let layoutInferredSigOfModuleExpr showHeader denv infoReader ad m expr = let rec isConcreteNamespace x = match x with | TMDefRec(tycons,binds,mbinds,_) -> nonNil tycons || not (FlatList.isEmpty binds) || (mbinds |> List.exists (fun (ModuleOrNamespaceBinding(x,_)) -> not x.IsNamespace)) | TMDefLet _ -> true | TMDefDo _ -> true | TMDefs defs -> defs |> List.exists isConcreteNamespace | TMAbstract(ModuleOrNamespaceExprWithSig(_,def,_)) -> isConcreteNamespace def let rec imexprLP denv (ModuleOrNamespaceExprWithSig(_,def,_)) = imdefL denv def and imexprL denv (ModuleOrNamespaceExprWithSig(mty,def,m)) = imexprLP denv (ModuleOrNamespaceExprWithSig(mty,def,m)) and imdefsL denv x = aboveListL (x |> List.map (imdefL denv)) and imdefL denv x = let filterVal (v:Val) = not v.IsCompilerGenerated && isNone v.MemberInfo let filterExtMem (v:Val) = v.IsExtensionMember match x with | TMDefRec(tycons,binds,mbinds,_) -> TastDefinitionPrinting.layoutTyconDefns denv infoReader ad m tycons @@ (binds |> valsOfBinds |> List.filter filterExtMem |> TastDefinitionPrinting.layoutExtensionMembers denv) @@ (binds |> valsOfBinds |> List.filter filterVal |> List.map (PrintTastMemberOrVals.layoutValOrMember denv) |> aboveListL) @@ (mbinds |> List.map (imbindL denv) |> aboveListL) | TMDefLet(bind,_) -> ([bind.Var] |> List.filter filterVal |> List.map (PrintTastMemberOrVals.layoutValOrMember denv) |> aboveListL) | TMDefs defs -> imdefsL denv defs | TMDefDo _ -> emptyL | TMAbstract mexpr -> imexprLP denv mexpr and imbindL denv (ModuleOrNamespaceBinding(mspec, def)) = let nm = mspec.DemangledModuleOrNamespaceName let innerPath = (fullCompPathOfModuleOrNamespace mspec).AccessPath let outerPath = mspec.CompilationPath.AccessPath let denv = denv.AddOpenPath (List.map fst innerPath) if mspec.IsNamespace then let basic = imdefL denv def // Check if this namespace contains anything interesting if isConcreteNamespace def then // This is a container namespace. We print the header when we get to the first concrete module. let headerL = wordL ("namespace " ^ (String.concat "." (innerPath |> List.map fst))) headerL @@-- basic else // This is a namespace that only contains namespaces. Skipt the header basic else // This is a module let nmL = layoutAccessibility denv mspec.Accessibility (wordL nm) let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def // Check if its an outer module or a nested module if (outerPath |> List.forall (fun (_,istype) -> istype = Namespace) ) then // OK, this is an outer module if showHeader then // OK, we're not in F# Interactive // Check if this is an outer module with no namespace if isNil outerPath then // If so print a "module" declaration (wordL "module" ^^ nmL) @@ basic else // Otherwise this is an outer module contained immediately in a namespace // We already printed the namespace declaration earlier. So just print the // module now. ((wordL "module" ^^ nmL ^^ wordL "=" ^^ wordL "begin") @@-- basic) @@ wordL "end" else // OK, wer'e in F# Interactive, presumably the implicit module for each interaction. basic else // OK, this is a nested module ((wordL "module" ^^ nmL ^^ wordL "=" ^^ wordL "begin") @@-- basic) @@ wordL "end" imexprL denv expr //-------------------------------------------------------------------------- module private PrintData = open PrintTypes /// Nice printing of a subset of expressions, e.g. for refutations in pattern matching let rec dataExprL denv expr = dataExprWrapL denv false expr and private dataExprWrapL denv isAtomic expr = match expr with | Expr.Const (c,_,ty) -> if isEnumTy denv.g ty then wordL "enum" ^^ angleL (layoutType denv ty) ^^ bracketL (layoutConst denv.g ty c) else layoutConst denv.g ty c | Expr.Val (v,_,_) -> wordL (v.DisplayName) | Expr.Link rX -> dataExprWrapL denv isAtomic (!rX) | Expr.Op (TOp.UnionCase(c),_,args,_) -> if denv.g.unionCaseRefEq c denv.g.nil_ucref then wordL "[]" elif denv.g.unionCaseRefEq c denv.g.cons_ucref then let rec strip = function (Expr.Op (TOp.UnionCase _,_,[h;t],_)) -> h::strip t | _ -> [] listL (dataExprL denv) (strip expr) elif isNil(args) then wordL c.CaseName else (wordL c.CaseName ++ bracketL (commaListL (dataExprsL denv args))) | Expr.Op (TOp.ExnConstr(c),_,args,_) -> (wordL c.LogicalName ++ bracketL (commaListL (dataExprsL denv args))) | Expr.Op (TOp.Tuple,_,xs,_) -> tupleL (dataExprsL denv xs) | Expr.Op (TOp.Recd (_,tc),_,xs,_) -> let fields = tc.TrueInstanceFieldsAsList let lay fs x = (wordL fs.rfield_id.idText ^^ sepL "=") --- (dataExprL denv x) leftL "{" ^^ semiListL (List.map2 lay fields xs) ^^ rightL "}" | Expr.Op (TOp.Array,[_],xs,_) -> leftL "[|" ^^ semiListL (dataExprsL denv xs) ^^ rightL "|]" | _ -> wordL "?" and private dataExprsL denv xs = List.map (dataExprL denv) xs let dataExprL denv expr = PrintData.dataExprL denv expr //-------------------------------------------------------------------------- // Print Signatures/Types - output functions //-------------------------------------------------------------------------- let outputValOrMember denv os x = x |> PrintTastMemberOrVals.layoutValOrMember denv |> bufferL os let stringValOrMember denv x = x |> PrintTastMemberOrVals.layoutValOrMember denv |> showL /// Print members with a qualification showing the type they are contained in let outputQualifiedValOrMember denv os v = outputValOrMember { denv with showMemberContainers=true; } os v let outputQualifiedValSpec denv os v = outputQualifiedValOrMember denv os v let stringOfQualifiedValOrMember denv v = PrintTastMemberOrVals.layoutValOrMember { denv with showMemberContainers=true; } v |> showL /// Convert a MethInfo to a string let formatMethInfoToBufferFreeStyle amap m denv buf d = InfoMemberPrinting.formatMethInfoToBufferFreeStyle amap m denv buf d /// Convert a MethInfo to a string let stringOfMethInfo amap m denv d = bufs (fun buf -> InfoMemberPrinting.formatMethInfoToBufferFreeStyle amap m denv buf d) /// Convert a ParamData to a string let stringOfParamData denv paramData = bufs (fun buf -> InfoMemberPrinting.formatParamDataToBuffer denv buf paramData) let outputILTypeRef denv os x = x |> PrintIL.layoutILTypeRef denv |> bufferL os let outputExnDef denv os x = x |> TastDefinitionPrinting.layoutExnDefn denv |> bufferL os let stringOfTyparConstraints denv x = x |> PrintTypes.layoutConstraintsWithInfo denv SimplifyTypes.typeSimplificationInfo0 |> showL let outputTycon denv infoReader ad m (* width *) os x = TastDefinitionPrinting.layoutTycon denv infoReader ad m true (wordL "type") x (* |> Layout.squashTo width *) |> bufferL os let stringOfTyparConstraint denv tpc = stringOfTyparConstraints denv [tpc] let stringOfTy denv x = x |> PrintTypes.layoutType denv |> showL let prettyStringOfTy denv x = x |> PrintTypes.layoutPrettyType denv |> showL let stringOfRecdField denv x = x |> TastDefinitionPrinting.layoutRecdField false denv |> showL let stringOfUnionCase denv x = x |> TastDefinitionPrinting.layoutUnionCase denv (wordL "|") |> showL let stringOfExnDef denv x = x |> TastDefinitionPrinting.layoutExnDefn denv |> showL let layoutInferredSigOfModuleExpr showHeader denv infoReader ad m expr = InferredSigPrinting.layoutInferredSigOfModuleExpr showHeader denv infoReader ad m expr let layoutValOrMember denv v = PrintTastMemberOrVals.layoutValOrMember denv v let layoutPrettifiedTypes denv taus = PrintTypes.layoutPrettifiedTypes denv taus /// Generate text for comparing two types. /// /// If the output text is different without showing constraints and/or imperative type variable /// annotations and/or fully qualifying paths then don't show them! let minimalStringsOfTwoTypes denv t1 t2= let _renamings,(t1,t2),tpcs = PrettyTypes.PrettifyTypes2 denv.g (t1,t2) // try denv + no type annotations let attempt1 = let denv = { denv with showImperativeTyparAnnotations=false; showConstraintTyparAnnotations=false } let min1 = stringOfTy denv t1 let min2 = stringOfTy denv t2 if min1 <> min2 then Some (min1,min2,"") else None match attempt1 with | Some res -> res | None -> // try denv + no type annotations + show full paths let attempt2 = let denv = { denv with showImperativeTyparAnnotations=false; showConstraintTyparAnnotations=false }.SetOpenPaths [] let min1 = stringOfTy denv t1 let min2 = stringOfTy denv t2 if min1 <> min2 then Some (min1,min2,"") else None // try denv match attempt2 with | Some res -> res | None -> let attempt3 = let min1 = stringOfTy denv t1 let min2 = stringOfTy denv t2 if min1 <> min2 then Some (min1,min2,stringOfTyparConstraints denv tpcs) else None match attempt3 with | Some res -> res | None -> let lastAttempt = // try denv + show full paths + static parameters let denv = denv.SetOpenPaths [] let denv = { denv with includeStaticParametersInTypeNames=true } let min1 = stringOfTy denv t1 let min2 = stringOfTy denv t2 (min1,min2,stringOfTyparConstraints denv tpcs) lastAttempt // Note: Always show imperative annotations when comparing value signatures let minimalStringsOfTwoValues denv v1 v2= let denvMin = { denv with showImperativeTyparAnnotations=true; showConstraintTyparAnnotations=false } let min1 = bufs (fun buf -> outputQualifiedValOrMember denvMin buf v1) let min2 = bufs (fun buf -> outputQualifiedValOrMember denvMin buf v2) if min1 <> min2 then (min1,min2) else let denvMax = { denv with showImperativeTyparAnnotations=true; showConstraintTyparAnnotations=true } let max1 = bufs (fun buf -> outputQualifiedValOrMember denvMax buf v1) let max2 = bufs (fun buf -> outputQualifiedValOrMember denvMax buf v2) max1,max2 let minimalStringOfType denv ty = let _, ty, _cxs = PrettyTypes.PrettifyTypes1 denv.g ty let denvMin = { denv with showImperativeTyparAnnotations=false; showConstraintTyparAnnotations=false } showL (PrintTypes.layoutTypeWithInfoAndPrec denvMin SimplifyTypes.typeSimplificationInfo0 2 ty) #if ASSEMBLY_AND_MODULE_SIGNATURE_PRINTING type DeclSpec = | DVal of Val | DTycon of Tycon | DException of Tycon | DModul of ModuleOrNamespace let rangeOfDeclSpec = function | DVal v -> v.Range | DTycon t -> t.Range | DException t -> t.Range | DModul m -> m.Range /// modul - provides (valspec)* - and also types, exns and submodules. /// Each defines a decl block on a given range. /// Can sort on the ranges to recover the original declaration order. let rec moduleOrNamespaceTypeLP (topLevel : bool) (denv: DisplayEnv) (mtype : ModuleOrNamespaceType) = // REVIEW: consider a better way to keep decls in order. let declSpecs : DeclSpec list = List.concat [mtype.AllValsAndMembers |> Seq.toList |> List.filter (fun v -> not v.IsCompilerGenerated && v.MemberInfo.IsNone) |> List.map DVal; mtype.TypeDefinitions |> List.map DTycon; mtype.ExceptionDefinitions |> List.map DException; mtype.ModuleAndNamespaceDefinitions |> List.map DModul; ] let declSpecs = List.sortWithOrder (Order.orderOn rangeOfDeclSpec rangeOrder) declSpecs let declSpecL = function // only show namespaces / modules at the top level; this is because we've no global namespace | DVal vspec when not topLevel -> layoutValOrMember denv vspec | DTycon tycon when not topLevel -> tyconL denv (wordL "type") tycon | DException tycon when not topLevel -> layoutExnDefn denv tycon | DModul mspec -> moduleOrNamespaceLP false denv mspec | _ -> emptyL // this catches non-namespace / modules at the top-level aboveListL (List.map declSpecL declSpecs) and moduleOrNamespaceLP (topLevel: bool) (denv: DisplayEnv) (mspec: ModuleOrNamespace) = let istype = mspec.ModuleOrNamespaceType.ModuleOrNamespaceKind let nm = mspec.DemangledModuleOrNamespaceName let denv = denv.AddOpenModuleOrNamespace (mkLocalModRef mspec) let nmL = layoutAccessibility denv mspec.Accessibility (wordL nm) let denv = denv.AddAccessibility mspec.Accessibility let path = path.Add nm // tack on the current module to be used in calls to linearise all subterms let body = moduleOrNamespaceTypeLP topLevel denv path mspec.ModuleOrNamespaceType if istype = Namespace then (wordL "namespace" ^^ nmL) @@-- body else (wordL "module" ^^ nmL ^^ wordL "= begin") @@-- body @@ wordL "end" let moduleOrNamespaceTypeL (denv: DisplayEnv) (mtype : ModuleOrNamespaceType) = moduleOrNamespaceTypeLP false denv Path.Empty mtype let moduleOrNamespaceL denv mspec = moduleOrNamespaceLP false denv Path.Empty mspec let assemblyL denv (mspec : ModuleOrNamespace) = moduleOrNamespaceTypeLP true denv Path.Empty mspec.ModuleOrNamespaceType // we seem to get the *assembly* name as an outer module, this strips this off #endif fsharp-3.0.34/src/fsharp/tlr.fsi0000775000175000017500000000147412260314606015457 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Tlr open Microsoft.FSharp.Compiler val MakeTLRDecisions : Tast.CcuThunk -> Env.TcGlobals -> Tast.TypedImplFile -> Tast.TypedImplFile #if TLR_LIFT val liftTLR : bool ref #endif fsharp-3.0.34/src/fsharp/policy.2.0.FSharp.Core/0000775000175000017500000000000012260314606020010 5ustar chrischrisfsharp-3.0.34/src/fsharp/policy.2.0.FSharp.Core/Makefile.in0000664000175000017500000000151012260314606022052 0ustar chrischrisNAME=policy.2.0.FSharp.Core ASSEMBLY = $(NAME).dll DELAY_SIGN=1 srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make include $(topdir)/src/fsharp/targets.make #override the method to build the assembly $(objdir)$(TARGET_2_0)/policy.2.0.FSharp.Core.dll: policy.2.0.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.2.0.FSharp.Core.dll.config $(@D) al /link:policy.2.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0) $(objdir)$(TARGET_4_0)/policy.2.0.FSharp.Core.dll: policy.2.0.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.2.0.FSharp.Core.dll.config $(@D) al /link:policy.2.0.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0) do-final: do-2-0 do-4-0 clean: clean-2-0 clean-4-0 install: install-lib-2 install-lib-4 fsharp-3.0.34/src/fsharp/policy.2.0.FSharp.Core/policy.2.0.FSharp.Core.dll.config0000664000175000017500000000153312260314606025621 0ustar chrischris fsharp-3.0.34/src/fsharp/sreflect.fs0000775000175000017500000004022212260314606016306 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //------------------------------------------------------------------------- // Expression and Type Specifications. These are what we save //------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.QuotationPickler open System.Text open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Lib let mkRLinear mk (vs,body) = List.foldBack (fun v acc -> mk (v,acc)) vs body type TypeVarData = { tvName: string; } type NamedTypeData = { tcName: string; tcAssembly: string } type TypeCombOp = | ArrayTyOp of int (* rank *) | FunTyOp | NamedTyOp of NamedTypeData type TypeData = | VarType of int | AppType of TypeCombOp * TypeData list let mkVarTy v = VarType v let mkFunTy (x1,x2) = AppType(FunTyOp, [x1; x2]) let mkArrayTy (n,x) = AppType(ArrayTyOp n, [x]) let mkILNamedTy (r,l) = AppType(NamedTyOp r,l) type CtorData = { ctorParent: NamedTypeData; ctorArgTypes: TypeData list; } type MethodData = { methParent: NamedTypeData; methName: string; methArgTypes: TypeData list; methRetType: TypeData; numGenericArgs: int } type VarData = { vText: string; vType: TypeData; vMutable: bool } type FieldData = NamedTypeData * string type RecdFieldData = NamedTypeData * string type PropInfoData = NamedTypeData * string * TypeData * TypeData list type CombOp = | AppOp | CondOp | ModuleValueOp of NamedTypeData * string * bool | LetRecOp | LetRecCombOp | LetOp | RecdMkOp of NamedTypeData | RecdGetOp of NamedTypeData * string | RecdSetOp of NamedTypeData * string | SumMkOp of NamedTypeData * string | SumFieldGetOp of NamedTypeData * string * int | SumTagTestOp of NamedTypeData * string | TupleMkOp | TupleGetOp of int | UnitOp | BoolOp of bool | StringOp of string | SingleOp of float32 | DoubleOp of float | CharOp of char | SByteOp of sbyte | ByteOp of byte | Int16Op of int16 | UInt16Op of uint16 | Int32Op of int32 | UInt32Op of uint32 | Int64Op of int64 | UInt64Op of uint64 | PropGetOp of PropInfoData | FieldGetOp of NamedTypeData * string | CtorCallOp of CtorData | MethodCallOp of MethodData | CoerceOp | NewArrayOp | DelegateOp | SeqOp | ForLoopOp | WhileLoopOp | NullOp | DefaultValueOp | PropSetOp of PropInfoData | FieldSetOp of NamedTypeData * string | AddressOfOp | ExprSetOp | AddressSetOp | TypeTestOp | TryFinallyOp | TryWithOp /// Represents specifications of a subset of F# expressions type ExprData = | AttrExpr of ExprData * ExprData list | CombExpr of CombOp * TypeData list * ExprData list | VarExpr of int | QuoteExpr of ExprData | LambdaExpr of VarData * ExprData | HoleExpr of TypeData * int | ThisVarExpr of TypeData let mkVar v = VarExpr v let mkHole (v,idx) = HoleExpr (v ,idx) let mkApp (a,b) = CombExpr(AppOp, [], [a; b]) let mkLambda (a,b) = LambdaExpr (a,b) let mkQuote (a) = QuoteExpr (a) let mkCond (x1,x2,x3) = CombExpr(CondOp,[], [x1;x2;x3]) let mkModuleValueApp (tcref,nm,isProp,tyargs,args: ExprData list list) = CombExpr(ModuleValueOp(tcref,nm,isProp),tyargs,List.concat args) let mkTuple (ty,x) = CombExpr(TupleMkOp,[ty],x) let mkLet ((v,e),b) = CombExpr(LetOp,[],[e;mkLambda (v,b)]) (* nb. order preserves source order *) let mkUnit () = CombExpr(UnitOp, [], []) let mkNull ty = CombExpr(NullOp, [ty], []) let mkLetRecRaw e1 = CombExpr(LetRecOp,[],[e1]) let mkLetRecCombRaw args = CombExpr(LetRecCombOp,[], args) let mkLetRec (ves,body) = let vs,es = List.unzip ves mkLetRecRaw(mkRLinear mkLambda (vs, mkLetRecCombRaw (body::es))) let mkRecdMk (n,tys,args) = CombExpr(RecdMkOp n,tys,args) let mkRecdGet ((d1,d2),tyargs,args) = CombExpr(RecdGetOp(d1,d2),tyargs,args) let mkRecdSet ((d1,d2),tyargs,args) = CombExpr(RecdSetOp(d1,d2),tyargs,args) let mkSum ((d1,d2),tyargs,args) = CombExpr(SumMkOp(d1,d2),tyargs,args) let mkSumFieldGet ((d1,d2,d3),tyargs,arg) = CombExpr(SumFieldGetOp(d1,d2,d3),tyargs,[arg]) let mkSumTagTest ((d1,d2),tyargs,arg) = CombExpr(SumTagTestOp(d1,d2),tyargs,[arg]) let mkTupleGet (ty,n,e) = CombExpr(TupleGetOp n,[ty],[e]) let mkCoerce (ty,arg) = CombExpr(CoerceOp,[ty],[arg]) let mkTypeTest (ty,arg) = CombExpr(TypeTestOp,[ty],[arg]) let mkAddressOf (arg) = CombExpr(AddressOfOp,[],[arg]) let mkAddressSet (arg1,arg2) = CombExpr(AddressSetOp,[],[arg1;arg2]) let mkVarSet (arg1,arg2) = CombExpr(ExprSetOp,[],[arg1;arg2]) let mkDefaultValue (ty) = CombExpr(DefaultValueOp,[ty],[]) let mkThisVar (ty) = ThisVarExpr(ty) let mkNewArray (ty,args) = CombExpr(NewArrayOp,[ty],args) let mkBool (v, ty) = CombExpr(BoolOp v,[ty],[]) let mkString (v, ty) = CombExpr(StringOp v,[ty],[]) let mkSingle (v, ty) = CombExpr(SingleOp v,[ty],[]) let mkDouble (v, ty) = CombExpr(DoubleOp v,[ty],[]) let mkChar (v, ty) = CombExpr(CharOp v,[ty],[]) let mkSByte (v, ty) = CombExpr(SByteOp v,[ty],[]) let mkByte (v, ty) = CombExpr(ByteOp v,[ty],[]) let mkInt16 (v, ty) = CombExpr(Int16Op v,[ty],[]) let mkUInt16 (v, ty) = CombExpr(UInt16Op v,[ty],[]) let mkInt32 (v, ty) = CombExpr(Int32Op v,[ty],[]) let mkUInt32 (v, ty) = CombExpr(UInt32Op v,[ty],[]) let mkInt64 (v, ty) = CombExpr(Int64Op v,[ty],[]) let mkUInt64 (v, ty) = CombExpr(UInt64Op v,[ty],[]) let mkSequential (e1,e2) = CombExpr(SeqOp,[],[e1;e2]) let mkForLoop (x1,x2,x3) = CombExpr(ForLoopOp,[], [x1;x2;x3]) let mkWhileLoop (e1,e2) = CombExpr(WhileLoopOp,[],[e1;e2]) let mkTryFinally(e1,e2) = CombExpr(TryFinallyOp,[],[e1;e2]) let mkTryWith(e1,vf,ef,vh,eh) = CombExpr(TryWithOp,[],[e1;mkLambda(vf,ef);mkLambda(vh,eh)]) let mkDelegate (ty,e) = CombExpr(DelegateOp,[ty],[e]) let mkPropGet (d,tyargs,args) = CombExpr(PropGetOp(d),tyargs,args) let mkPropSet (d,tyargs,args) = CombExpr(PropSetOp(d),tyargs,args) let mkFieldGet ((d1,d2),tyargs,args) = CombExpr(FieldGetOp(d1,d2),tyargs,args) let mkFieldSet ((d1,d2),tyargs,args) = CombExpr(FieldSetOp(d1,d2),tyargs,args) let mkCtorCall (d,tyargs,args) = CombExpr(CtorCallOp(d),tyargs,args) let mkMethodCall (d,tyargs,args) = CombExpr(MethodCallOp(d),tyargs,args) let mkAttributedExpression(e,attr) = AttrExpr(e,[attr]) //--------------------------------------------------------------------------- // Pickle/unpickle expression and type specifications in a stable format // compatible with those read by Microsoft.FSharp.Quotations //--------------------------------------------------------------------------- let pickledDefinitionsResourceNameBase = "ReflectedDefinitions" let freshVar (n, ty, mut) = { vText=n; vType=ty; vMutable=mut } module SimplePickle = type Table<'T> = { tbl: HashMultiMap<'T,int>; // This should be "Dictionary" mutable rows: 'T list; mutable count: int } static member Create () = { tbl = HashMultiMap(20, HashIdentity.Structural) rows=[]; count=0; } member tbl.AsList = List.rev tbl.rows member tbl.Count = tbl.rows.Length member tbl.Add x = let n = tbl.count tbl.count <- tbl.count + 1; tbl.tbl.Add(x,n) tbl.rows <- x :: tbl.rows; n member tbl.FindOrAdd x = if tbl.tbl.ContainsKey x then tbl.tbl.[x] else tbl.Add x member tbl.Find x = tbl.tbl.[x] member tbl.ContainsKey x = tbl.tbl.ContainsKey x type QuotationPickleOutState = { os: ByteBuffer; ostrings: Table } let p_byte b st = st.os.EmitIntAsByte b let p_bool b st = p_byte (if b then 1 else 0) st let p_void (_os: QuotationPickleOutState) = () let p_unit () (_os: QuotationPickleOutState) = () let prim_pint32 i st = p_byte (Bits.b0 i) st; p_byte (Bits.b1 i) st; p_byte (Bits.b2 i) st; p_byte (Bits.b3 i) st // compress integers according to the same scheme used by CLR metadata // This halves the size of pickled data let p_int32 n st = if n >= 0 && n <= 0x7F then p_byte (Bits.b0 n) st else if n >= 0x80 && n <= 0x3FFF then p_byte (0x80 ||| (n >>> 8)) st; p_byte (n &&& 0xFF) st else p_byte 0xFF st; prim_pint32 n st let p_bytes (s:byte[]) st = let len = s.Length p_int32 (len) st; st.os.EmitBytes s let prim_pstring (s:string) st = let bytes = Encoding.UTF8.GetBytes s let len = bytes.Length p_int32 (len) st; st.os.EmitBytes bytes let p_int (c:int) st = p_int32 c st let p_int8 (i:int8) st = p_int32 (int32 i) st let p_uint8 (i:uint8) st = p_byte (int i) st let p_int16 (i:int16) st = p_int32 (int32 i) st let p_uint16 (x:uint16) st = p_int32 (int32 x) st let puint32 (x:uint32) st = p_int32 (int32 x) st let p_int64 i st = p_int32 (int32 (i &&& 0xFFFFFFFFL)) st; p_int32 (int32 (i >>> 32)) st let bits_of_float32 (x:float32) = System.BitConverter.ToInt32(System.BitConverter.GetBytes(x),0) let bits_of_float (x:float) = System.BitConverter.ToInt64(System.BitConverter.GetBytes(x),0) let p_uint64 x st = p_int64 (int64 x) st let p_double i st = p_int64 (bits_of_float i) st let p_single i st = p_int32 (bits_of_float32 i) st let p_char i st = p_uint16 (uint16 (int32 i)) st let inline p_tup2 p1 p2 (a,b) (st:QuotationPickleOutState) = (p1 a st : unit); (p2 b st : unit) let inline p_tup3 p1 p2 p3 (a,b,c) st = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit) let inline p_tup4 p1 p2 p3 p4 (a,b,c,d) st = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit) let inline p_tup5 p1 p2 p3 p4 p5 (a,b,c,d,e) st = (p1 a st : unit); (p2 b st : unit); (p3 c st : unit); (p4 d st : unit); (p5 e st : unit) let puniq (tbl: Table<_>) key st = p_int (tbl.FindOrAdd key) st let p_string s st = puniq st.ostrings s st let rec p_list f x st = match x with | [] -> p_byte 0 st | h :: t -> p_byte 1 st; f h st; p_list f t st let pickle_obj p x = let stringTab,phase1bytes = let st1 = { os = ByteBuffer.Create 100000; ostrings=Table<_>.Create(); } p x st1; st1.ostrings.AsList, st1.os.Close() let phase2data = (stringTab,phase1bytes) let phase2bytes = let st2 = { os = ByteBuffer.Create 100000; ostrings=Table<_>.Create();} p_tup2 (p_list prim_pstring) p_bytes phase2data st2; st2.os.Close() phase2bytes open SimplePickle let p_assref x st = p_string x st let p_NamedType x st = p_tup2 p_string p_assref (x.tcName, x.tcAssembly) st let p_tycon x st = match x with | FunTyOp -> p_byte 1 st | NamedTyOp a -> p_byte 2 st; p_NamedType a st | ArrayTyOp a -> p_byte 3 st; p_int a st let rec p_type x st = match x with | VarType v -> p_byte 0 st; p_int v st | AppType(c,ts) -> p_byte 1 st; p_tup2 p_tycon p_types (c,ts) st and p_types x st = p_list p_type x st let p_varDecl v st = p_tup3 p_string p_type p_bool (v.vText, v.vType, v.vMutable) st let p_recdFieldSpec v st = p_tup2 p_NamedType p_string v st let p_ucaseSpec v st = p_tup2 p_NamedType p_string v st let p_MethodData a st = p_tup5 p_NamedType p_types p_type p_string p_int (a.methParent,a.methArgTypes,a.methRetType, a.methName, a.numGenericArgs) st let p_CtorData a st = p_tup2 p_NamedType p_types (a.ctorParent,a.ctorArgTypes) st let p_PropInfoData a st = p_tup4 p_NamedType p_string p_type p_types a st let p_CombOp x st = match x with | CondOp -> p_byte 0 st | ModuleValueOp (x,y,z) -> p_byte 1 st; p_tup3 p_NamedType p_string p_bool (x,y,z) st | LetRecOp -> p_byte 2 st | RecdMkOp a -> p_byte 3 st; p_NamedType a st | RecdGetOp (x,y) -> p_byte 4 st; p_recdFieldSpec (x,y) st | SumMkOp (x,y) -> p_byte 5 st; p_ucaseSpec (x,y) st | SumFieldGetOp (a,b,c) -> p_byte 6 st; p_tup2 p_ucaseSpec p_int ((a,b),c) st | SumTagTestOp (x,y) -> p_byte 7 st; p_ucaseSpec (x,y) st | TupleMkOp -> p_byte 8 st | TupleGetOp a -> p_byte 9 st; p_int a st | BoolOp a -> p_byte 11 st; p_bool a st | StringOp a -> p_byte 12 st; p_string a st | SingleOp a -> p_byte 13 st; p_single a st | DoubleOp a -> p_byte 14 st; p_double a st | CharOp a -> p_byte 15 st; p_char a st | SByteOp a -> p_byte 16 st; p_int8 a st | ByteOp a -> p_byte 17 st; p_uint8 a st | Int16Op a -> p_byte 18 st; p_int16 a st | UInt16Op a -> p_byte 19 st; p_uint16 a st | Int32Op a -> p_byte 20 st; p_int32 a st | UInt32Op a -> p_byte 21 st; puint32 a st | Int64Op a -> p_byte 22 st; p_int64 a st | UInt64Op a -> p_byte 23 st; p_uint64 a st | UnitOp -> p_byte 24 st | PropGetOp d -> p_byte 25 st; p_PropInfoData d st | CtorCallOp a -> p_byte 26 st; p_CtorData a st | CoerceOp -> p_byte 28 st | SeqOp -> p_byte 29 st | ForLoopOp -> p_byte 30 st | MethodCallOp a -> p_byte 31 st; p_MethodData a st | NewArrayOp -> p_byte 32 st | DelegateOp -> p_byte 33 st | WhileLoopOp -> p_byte 34 st | LetOp -> p_byte 35 st | RecdSetOp (x,y) -> p_byte 36 st; p_recdFieldSpec (x,y) st | FieldGetOp (a,b) -> p_byte 37 st; p_tup2 p_NamedType p_string (a, b) st | LetRecCombOp -> p_byte 38 st | AppOp -> p_byte 39 st | NullOp -> p_byte 40 st | DefaultValueOp -> p_byte 41 st | PropSetOp d -> p_byte 42 st; p_PropInfoData d st | FieldSetOp (a,b) -> p_byte 43 st; p_tup2 p_NamedType p_string (a, b) st | AddressOfOp -> p_byte 44 st | AddressSetOp -> p_byte 45 st | TypeTestOp -> p_byte 46 st | TryFinallyOp -> p_byte 47 st | TryWithOp -> p_byte 48 st | ExprSetOp -> p_byte 49 st let rec p_expr x st = match x with | CombExpr(c,ts,args) -> p_byte 0 st; p_tup3 p_CombOp p_types (p_list p_expr) (c,ts,args) st | VarExpr v -> p_byte 1 st; p_int v st | LambdaExpr(v,e) -> p_byte 2 st; p_tup2 p_varDecl p_expr (v,e) st | HoleExpr(ty,idx) -> p_byte 3 st; p_type ty st; p_int idx st | QuoteExpr(tm) -> p_byte 4 st; p_expr tm st | AttrExpr(e,attrs) -> p_byte 5 st; p_tup2 p_expr (p_list p_expr) (e,attrs) st | ThisVarExpr(ty) -> p_byte 6 st; p_type ty st type ModuleDefnData = { Module: NamedTypeData; Name: string; IsProperty: bool } type MethodBaseData = | ModuleDefn of ModuleDefnData | Method of MethodData | Ctor of CtorData let pickle = pickle_obj p_expr let p_MethodBase x st = match x with | ModuleDefn md -> p_byte 0 st; p_NamedType md.Module st; p_string md.Name st; p_bool md.IsProperty st | Method md -> p_byte 1 st; p_MethodData md st | Ctor md -> p_byte 2 st; p_CtorData md st let PickleDefns = pickle_obj (p_list (p_tup2 p_MethodBase p_expr)) fsharp-3.0.34/src/fsharp/outcome.fsi0000775000175000017500000000213012260314606016317 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Outcome open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library val success : 'T -> ResultOrException<'T> val raze : exn -> ResultOrException<'T> val ( ||?> ) : ResultOrException<'T> -> ('T -> ResultOrException<'U>) -> ResultOrException<'U> val ( |?> ) : ResultOrException<'T> -> ('T -> 'U) -> ResultOrException<'U> val ForceRaise : ResultOrException<'T> -> 'T val otherwise : (unit -> ResultOrException<'T>) -> ResultOrException<'T> -> ResultOrException<'T> fsharp-3.0.34/src/fsharp/fsc.fs0000775000175000017500000033664212260314606015270 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Driver for F# compiler. // // Roughly divides into: // - Parsing // - Flags // - Importing IL assemblies // - Compiling (including optimizing) // - Linking (including ILX-IL transformation) module internal Microsoft.FSharp.Compiler.Driver open System.IO open System.Reflection open System.Collections.Generic open System.Runtime.CompilerServices open System.Text open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.IL #if NO_COMPILER_BACKEND #else open Microsoft.FSharp.Compiler.Ilxgen #endif open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Infos.AccessibilityLogic open Microsoft.FSharp.Compiler.Infos.AttributeChecking open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Opt open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Fscopts open Microsoft.FSharp.Compiler.DiagnosticMessage #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif #nowarn "45" // This method will be made public in the underlying IL because it may implement an interface or override a method /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // This code has logic for a prefix of the compile that is also used by the project system to do the front-end // logic that starts at command-line arguments and gets as far as importing all references (used for deciding // to pop up the type provider security dialog). /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //---------------------------------------------------------------------------- // Reporting - warnings, errors //---------------------------------------------------------------------------- /// Create an error logger that counts and prints errors let ErrorLoggerThatQuitsAfterMaxErrors (tcConfigB:TcConfigBuilder, exiter : Exiter) = let errors = ref 0 { new ErrorLogger("ErrorLoggerThatQuitsAfterMaxErrors") with member x.ErrorSinkImpl(err) = if !errors >= tcConfigB.maxErrors then DoWithErrorColor true (fun () -> Printf.eprintfn "%s" (FSComp.SR.fscTooManyErrors())) exiter.Exit 1 DoWithErrorColor false (fun () -> (writeViaBufferWithEnvironmentNewLines stderr (OutputErrorOrWarning (tcConfigB.implicitIncludeDir,tcConfigB.showFullPaths,tcConfigB.flatErrors,tcConfigB.errorStyle,false)) err; stderr.WriteLine())); incr errors match err.Exception with | InternalError _ | Failure _ | :? KeyNotFoundException -> match tcConfigB.simulateException with | Some _ -> () // Don't show an assert for simulateException case so that unittests can run without an assert dialog. | None -> System.Diagnostics.Debug.Assert(false,sprintf "Bug seen in compiler: %s" (err.ToString())) | _ -> () member x.WarnSinkImpl(err) = DoWithErrorColor true (fun () -> if (ReportWarningAsError tcConfigB.globalWarnLevel tcConfigB.specificWarnOff tcConfigB.specificWarnOn tcConfigB.specificWarnAsError tcConfigB.specificWarnAsWarn tcConfigB.globalWarnAsError err) then x.ErrorSink(err) elif ReportWarning tcConfigB.globalWarnLevel tcConfigB.specificWarnOff tcConfigB.specificWarnOn err then writeViaBufferWithEnvironmentNewLines stderr (OutputErrorOrWarning (tcConfigB.implicitIncludeDir,tcConfigB.showFullPaths,tcConfigB.flatErrors,tcConfigB.errorStyle,true)) err; stderr.WriteLine()) member x.ErrorCount = !errors } let ErrorLoggerInitial (tcConfigB:TcConfigBuilder, exiter : Exiter) = ErrorLoggerThatQuitsAfterMaxErrors(tcConfigB, exiter) // val TypeCheck : TcConfig * TcImports * TcGlobals * ErrorLogger * string * NiceNameGenerator * TypeChecker.TcEnv * Input list * Exiter -> // TcState * TypeChecker.TopAttribs * Tast.TypedAssembly * TypeChecker.TcEnv let TypeCheck (tcConfig,tcImports,tcGlobals,errorLogger:ErrorLogger,assemblyName,niceNameGen,tcEnv0,inputs, exiter : Exiter) = try if isNil inputs then error(Error(FSComp.SR.fscNoImplementationFiles(),Range.rangeStartup)) let ccuName = assemblyName let tcInitialState = TypecheckInitialState (rangeStartup,ccuName,tcConfig,tcGlobals,tcImports,niceNameGen,tcEnv0) TypecheckClosedInputSet ((fun () -> errorLogger.ErrorCount > 0),tcConfig,tcImports,tcGlobals,None,tcInitialState,inputs) with e -> errorRecovery e rangeStartup exiter.Exit 1 /// This error logger delays the messages it recieves. At the end, call ForwardDelayedErrorsAndWarnings /// to send the held messages. type DelayAndForwardErrorLogger(exiter : Exiter) = inherit ErrorLogger("DelayAndForwardErrorLogger") let delayed = new ResizeArray<_>() let errors = ref 0 override x.ErrorSinkImpl(e) = errors := !errors + 1 delayed.Add (e,true) override x.ErrorCount = delayed |> Seq.filter snd |> Seq.length override x.WarnSinkImpl(e) = delayed.Add(e,false) member x.ForwardDelayedErrorsAndWarnings(errorLogger:ErrorLogger) = // Eagerly grab all the errors and warnings from the mutable collection let errors = delayed |> Seq.toList // Now report them for (e,isError) in errors do if isError then errorLogger.ErrorSink(e) else errorLogger.WarnSink(e) // Clear errors just reported. Keep errors count. delayed.Clear() member x.ForwardDelayedErrorsAndWarnings(tcConfigB:TcConfigBuilder) = let errorLogger = ErrorLoggerInitial(tcConfigB, exiter) x.ForwardDelayedErrorsAndWarnings(errorLogger) member x.FullErrorCount = !errors /// Check for .fsx and, if present, compute the load closure for of #loaded files. let AdjustForScriptCompile(tcConfigB:TcConfigBuilder,commandLineSourceFiles,lexResourceManager) = let combineFilePath file = try if FileSystem.IsPathRootedShim(file) then file else Path.Combine(tcConfigB.implicitIncludeDir, file) with _ -> error (Error(FSComp.SR.pathIsInvalid(file),rangeStartup)) let commandLineSourceFiles = commandLineSourceFiles |> List.map combineFilePath let allSources = ref [] let tcConfig = TcConfig.Create(tcConfigB,validate=false) let AddIfNotPresent(filename:string) = if not(!allSources |> List.mem filename) then allSources := filename::!allSources let AppendClosureInformation(filename) = if IsScript filename then let closure = LoadClosure.ComputeClosureOfSourceFiles(tcConfig,[filename,rangeStartup],CodeContext.Compilation,lexResourceManager=lexResourceManager,useDefaultScriptingReferences=false) // Record the references from the analysis of the script. The full resolutions are recorded as the corresponding #I paths used to resolve them // are local to the scripts and not added to the tcConfigB (they are added to localized clones of the tcConfigB). let references = closure.References |> List.map snd |> List.concat |> List.filter (fun r->r.originalReference.Range<>range0) references |> List.iter (fun r-> tcConfigB.AddReferencedAssemblyByPath(r.originalReference.Range,r.resolvedPath)) closure.NoWarns |> List.map(fun (n,ms)->ms|>List.map(fun m->m,n)) |> List.concat |> List.iter tcConfigB.TurnWarningOff closure.SourceFiles |> List.map fst |> List.iter AddIfNotPresent closure.RootWarnings |> List.iter warnSink closure.RootErrors |> List.iter errorSink else AddIfNotPresent(filename) // Find closure of .fsx files. commandLineSourceFiles |> List.iter AppendClosureInformation List.rev !allSources let abortOnError (errorLogger:ErrorLogger, exiter : Exiter) = if errorLogger.ErrorCount > 0 then exiter.Exit 1 // The project system needs to be able to somehow crack open assemblies to look for type providers in order to pop up the security dialog when necessary when a user does 'Build'. // Rather than have the PS re-code that logic, it re-uses the existing code in the very front end of the compiler that parses the command-line and imports the referenced assemblies. // This code used to be in fsc.exe. The PS only references FSharp.LanguageService.Compiler, so this code moved from fsc.exe to FS.C.S.dll so that the PS can re-use it. // A great deal of the logic of this function is repeated in fsi.fs, so maybe should refactor fsi.fs to call into this as well. let getTcImportsFromCommandLine(displayPSTypeProviderSecurityDialogBlockingUI : (string->unit) option, argv : string[], defaultFSharpBinariesDir : string, directoryBuildingFrom : string, lcidFromCodePage : int option, setProcessThreadLocals : TcConfigBuilder -> unit, displayBannerIfNeeded : TcConfigBuilder -> unit, optimizeForMemory : bool, exiter : Exiter, createErrorLogger: (TcConfigBuilder -> ErrorLogger)) : TcGlobals * TcImports * TcImports * Tast.CcuThunk * Tast.TypedAssembly * TypeChecker.TopAttribs * TcConfig * string * string option * string * ErrorLogger = let tcConfigB = Build.TcConfigBuilder.CreateNew(defaultFSharpBinariesDir, optimizeForMemory, directoryBuildingFrom, isInteractive=false, isInvalidationSupported=false) // Preset: --optimize+ -g --tailcalls+ (see 4505) SetOptimizeSwitch tcConfigB On SetDebugSwitch tcConfigB None Off SetTailcallSwitch tcConfigB On // Now install a delayed logger to hold all errors from flags until after all flags have been parsed (for example, --vserrors) let delayForFlagsLogger = DelayAndForwardErrorLogger(exiter) let _unwindEL_1 = PushErrorLoggerPhaseUntilUnwind (fun _ -> delayForFlagsLogger) // Share intern'd strings across all lexing/parsing let lexResourceManager = new Lexhelp.LexResourceManager() // process command line, flags and collect filenames let sourceFiles = // The ParseCompilerOptions function calls imperative function to process "real" args // Rather than start processing, just collect names, then process them. try let inputFilesRef = ref ([] : string list) let collect name = let lower = String.lowercase name if List.exists (Filename.checkSuffix lower) [".resx"] then warning(Error(FSComp.SR.fscResxSourceFileDeprecated name,rangeStartup)) tcConfigB.AddEmbeddedResource name else inputFilesRef := name :: !inputFilesRef let abbrevArgs = abbrevFlagSet tcConfigB true // This is where flags are interpreted by the command line fsc.exe. ParseCompilerOptions collect (GetCoreFscCompilerOptions tcConfigB) (List.tail (PostProcessCompilerArgs abbrevArgs argv)) let inputFiles = List.rev !inputFilesRef #if SILVERLIGHT #else // Check if we have a codepage from the console match tcConfigB.lcid with | Some _ -> () | None -> tcConfigB.lcid <- lcidFromCodePage #endif setProcessThreadLocals(tcConfigB) (* step - get dll references *) let dllFiles,sourceFiles = List.partition Filename.isDll inputFiles match dllFiles with | [] -> () | h::_ -> errorR (Error(FSComp.SR.fscReferenceOnCommandLine(h),rangeStartup)) dllFiles |> List.iter (fun f->tcConfigB.AddReferencedAssemblyByPath(rangeStartup,f)) let sourceFiles = AdjustForScriptCompile(tcConfigB,sourceFiles,lexResourceManager) sourceFiles with e -> errorRecovery e rangeStartup delayForFlagsLogger.ForwardDelayedErrorsAndWarnings(tcConfigB) exiter.Exit 1 tcConfigB.conditionalCompilationDefines <- "COMPILED" :: tcConfigB.conditionalCompilationDefines displayBannerIfNeeded tcConfigB // Create tcGlobals and frameworkTcImports let outfile,pdbfile,assemblyName = try tcConfigB.DecideNames sourceFiles with e -> errorRecovery e rangeStartup delayForFlagsLogger.ForwardDelayedErrorsAndWarnings(tcConfigB) exiter.Exit 1 // DecideNames may give "no inputs" error. Abort on error at this point. bug://3911 if not tcConfigB.continueAfterParseFailure && delayForFlagsLogger.FullErrorCount > 0 then delayForFlagsLogger.ForwardDelayedErrorsAndWarnings(tcConfigB) exiter.Exit 1 // If there's a problem building TcConfig, abort let tcConfig = try TcConfig.Create(tcConfigB,validate=false) with e -> delayForFlagsLogger.ForwardDelayedErrorsAndWarnings(tcConfigB) exiter.Exit 1 // Create the real errorLogger now we know the --vserrors flag let errorLogger = createErrorLogger tcConfigB // Install the global error logger and never remove it. This logger does have all command-line flags considered. let _unwindEL_2 = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) // Forward all errors from flags delayForFlagsLogger.ForwardDelayedErrorsAndWarnings(errorLogger) // step - decideNames if not tcConfigB.continueAfterParseFailure then abortOnError(errorLogger, exiter) let tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig = ReportTime tcConfig "Import mscorlib" if tcConfig.useIncrementalBuilder then ReportTime tcConfig "Incremental Parse and Typecheck" let builder = new IncrementalFSharpBuild.IncrementalBuilder(tcConfig, directoryBuildingFrom, assemblyName, NiceNameGenerator(), lexResourceManager, sourceFiles, ensureReactive=false, errorLogger=errorLogger, keepGeneratedTypedAssembly=true) let tcState,topAttribs,typedAssembly,_tcEnv,tcImports,tcGlobals,tcConfig = builder.TypeCheck() tcGlobals,tcImports,tcImports,tcState.Ccu,typedAssembly,topAttribs,tcConfig else ReportTime tcConfig "Import mscorlib and FSharp.Core.dll" ReportTime tcConfig "Import system references" let foundationalTcConfigP = TcConfigProvider.Constant(tcConfig) let sysRes,otherRes,knownUnresolved = TcAssemblyResolutions.SplitNonFoundationalResolutions(tcConfig) let tcGlobals,frameworkTcImports = TcImports.BuildFrameworkTcImports (foundationalTcConfigP, sysRes, otherRes) // step - parse sourceFiles ReportTime tcConfig "Parse inputs" use unwindParsePhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) let inputs : (ParsedInput * string) list = try sourceFiles |> tcConfig.ComputeCanContainEntryPoint |> List.zip sourceFiles // PERF: consider making this parallel, once uses of global state relevant to parsing are cleaned up |> List.choose (fun (filename:string,isLastCompiland:bool) -> let pathOfMetaCommandSource = Path.GetDirectoryName(filename) match ParseOneInputFile(tcConfig,lexResourceManager,["COMPILED"],filename,isLastCompiland,errorLogger,(*retryLocked*)false) with | Some(input)->Some(input,pathOfMetaCommandSource) | None -> None ) with e -> errorRecoveryNoRange e exiter.Exit 1 if tcConfig.parseOnly then exiter.Exit 0 if not tcConfig.continueAfterParseFailure then abortOnError(errorLogger, exiter) if tcConfig.printAst then inputs |> List.iter (fun (input,_filename) -> printf "AST:\n"; printfn "%+A" input; printf "\n") let tcConfig = (tcConfig,inputs) ||> List.fold ApplyMetaCommandsFromInputToTcConfig let tcConfigP = TcConfigProvider.Constant(tcConfig) ReportTime tcConfig "Import non-system references" let tcGlobals,tcImports = let tcImports = TcImports.BuildNonFrameworkTcImports(displayPSTypeProviderSecurityDialogBlockingUI,tcConfigP,tcGlobals,frameworkTcImports,otherRes,knownUnresolved) tcGlobals,tcImports if not tcConfig.continueAfterParseFailure then abortOnError(errorLogger, exiter) if tcConfig.importAllReferencesOnly then exiter.Exit 0 ReportTime tcConfig "Typecheck" use unwindParsePhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.TypeCheck) let tcEnv0 = GetInitialTypecheckerEnv (Some assemblyName) rangeStartup tcConfig tcImports tcGlobals // typecheck let inputs : ParsedInput list = inputs |> List.map fst let tcState,topAttrs,typedAssembly,_tcEnvAtEnd = TypeCheck(tcConfig,tcImports,tcGlobals,errorLogger,assemblyName,NiceNameGenerator(),tcEnv0,inputs,exiter) let generatedCcu = tcState.Ccu abortOnError(errorLogger, exiter) ReportTime tcConfig "Typechecked" (tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig) tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig,outfile,pdbfile,assemblyName,errorLogger // only called from the project system, as a way to run the front end of the compiler far enough to determine if we need to pop up the dialog (and do so if necessary) let runFromCommandLineToImportingAssemblies(displayPSTypeProviderSecurityDialogBlockingUI : (string -> unit), argv : string[], defaultFSharpBinariesDir : string, directoryBuildingFrom : string, exiter : Exiter) = let createErrorLogger = (fun tcConfigB -> ErrorLoggerThatQuitsAfterMaxErrors(tcConfigB, exiter)) let tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig,outfile,pdbfile,assemblyName,errorLogger = getTcImportsFromCommandLine(Some displayPSTypeProviderSecurityDialogBlockingUI, argv, defaultFSharpBinariesDir, directoryBuildingFrom, None, (fun _ -> ()), (fun tcConfigB -> // (kind of abusing this lambda for an unintended purpose, but this is a convenient and correctly-timed place to poke the tcConfigB) tcConfigB.importAllReferencesOnly <- true // stop after importing assemblies (do not typecheck, we don't need typechecking) // for flags below, see IncrementalBuilder.fs:CreateBackgroundBuilderForProjectOptions, as there are many similarities, as these are the two places that we create this from VS code-paths tcConfigB.openBinariesInMemory <- true // uses more memory but means we don't take read-exclusions on the DLLs we reference (important for VS code path) tcConfigB.openDebugInformationForLaterStaticLinking <- false // Never open PDB files for the PS, even if --standalone is specified if tcConfigB.framework then System.Diagnostics.Debug.Assert(false, "Project system requires --noframework flag") tcConfigB.framework<-false ), true, // optimizeForMemory - want small memory footprint in VS exiter, createErrorLogger) // we don't care about the result, we just called 'getTcImportsFromCommandLine' to have the effect of popping up the dialog if the TP is unknown ignore(tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig,outfile,pdbfile,assemblyName,errorLogger) #if NO_COMPILER_BACKEND #else /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Code from here on down is just used by fsc.exe /////////////////////////////////////////////////////////////////////////////////////////////////////////////// let BuildInitialDisplayEnvForDocGeneration tcGlobals = let denv = DisplayEnv.Empty tcGlobals let denv = { denv with showImperativeTyparAnnotations=true; showAttributes=true; } denv.SetOpenPaths [ FSharpLib.RootPath FSharpLib.CorePath FSharpLib.CollectionsPath FSharpLib.ControlPath (IL.splitNamespace FSharpLib.ExtraTopLevelOperatorsName); ] module InterfaceFileWriter = let WriteInterfaceFile (tcGlobals, tcConfig:TcConfig, infoReader, typedAssembly) = let (TAssembly declaredImpls) = typedAssembly /// Use a UTF-8 Encoding with no Byte Order Mark let os = if tcConfig.printSignatureFile="" then System.Console.Out else (File.CreateText tcConfig.printSignatureFile :> TextWriter) if tcConfig.printSignatureFile <> "" && not (List.exists (Filename.checkSuffix tcConfig.printSignatureFile) lightSyntaxDefaultExtensions) then fprintfn os "#light" fprintfn os "" for (TImplFile(_,_,mexpr,_,_)) in declaredImpls do let denv = BuildInitialDisplayEnvForDocGeneration tcGlobals writeViaBufferWithEnvironmentNewLines os (fun os s -> Printf.bprintf os "%s\n\n" s) (NicePrint.layoutInferredSigOfModuleExpr true denv infoReader AccessibleFromSomewhere range0 mexpr |> Layout.squashTo 80 |> Layout.showL) if tcConfig.printSignatureFile <> "" then os.Close() module XmlDocWriter = let getDoc xmlDoc = match XmlDoc.Process xmlDoc with | XmlDoc [| |] -> "" | XmlDoc strs -> strs |> Array.toList |> String.concat System.Environment.NewLine let hasDoc xmlDoc = // No need to process the xml doc - just need to know if there's anything there match xmlDoc with | XmlDoc [| |] -> false | _ -> true let computeXmlDocSigs (tcGlobals,generatedCcu:CcuThunk) = (* the xmlDocSigOf* functions encode type into string to be used in "id" *) let g = tcGlobals let doValSig ptext (v:Val) = if (hasDoc v.XmlDoc) then v.XmlDocSig <- XmlDocSigOfVal g ptext v let doTyconSig ptext (tc:Tycon) = if (hasDoc tc.XmlDoc) then tc.XmlDocSig <- XmlDocSigOfTycon ptext tc for vref in tc.MembersOfFSharpTyconSorted do doValSig ptext vref.Deref for uc in tc.UnionCasesAsList do if (hasDoc uc.XmlDoc) then uc.XmlDocSig <- XmlDocSigOfUnionCase ptext uc.Id.idText tc.CompiledName for rf in tc.AllFieldsAsList do if (hasDoc rf.XmlDoc) then rf.XmlDocSig <- XmlDocSigOfField ptext rf.Id.idText (if tc.IsEnumTycon then tc.CompiledName else tc.CompiledRepresentationForNamedType.Name) let doModuleMemberSig path (m:ModuleOrNamespace) = m.XmlDocSig <- XmlDocSigOfSubModul path (* moduleSpec - recurses *) let rec doModuleSig path (mspec:ModuleOrNamespace) = let mtype = mspec.ModuleOrNamespaceType let path = (* skip the first item in the path which is the assembly name *) match path with | None -> Some "" | Some "" -> Some mspec.LogicalName | Some p -> Some (p+"."+mspec.LogicalName) let ptext = match path with None -> "" | Some t -> t if mspec.IsModule then doModuleMemberSig ptext mspec; let vals = mtype.AllValsAndMembers |> Seq.toList |> List.filter (fun x -> not x.IsCompilerGenerated) |> List.filter (fun x -> x.MemberInfo.IsNone || x.IsExtensionMember) List.iter (doModuleSig path) mtype.ModuleAndNamespaceDefinitions; List.iter (doTyconSig ptext) mtype.ExceptionDefinitions; List.iter (doValSig ptext) vals; List.iter (doTyconSig ptext) mtype.TypeDefinitions doModuleSig None generatedCcu.Contents; let writeXmlDoc (assemblyName,generatedCcu:CcuThunk,xmlfile) = if not (Filename.hasSuffixCaseInsensitive "xml" xmlfile ) then error(Error(FSComp.SR.docfileNoXmlSuffix(), Range.rangeStartup)); (* the xmlDocSigOf* functions encode type into string to be used in "id" *) let members = ref [] let addMember id xmlDoc = let doc = getDoc xmlDoc members := (id,doc) :: !members let doVal (v:Val) = addMember v.XmlDocSig v.XmlDoc let doUnionCase (uc:UnionCase) = addMember uc.XmlDocSig uc.XmlDoc let doField (rf:RecdField) = addMember rf.XmlDocSig rf.XmlDoc let doTycon (tc:Tycon) = addMember tc.XmlDocSig tc.XmlDoc; for vref in tc.MembersOfFSharpTyconSorted do doVal vref.Deref for uc in tc.UnionCasesAsList do doUnionCase uc for rf in tc.AllFieldsAsList do doField rf let modulMember (m:ModuleOrNamespace) = addMember m.XmlDocSig m.XmlDoc (* moduleSpec - recurses *) let rec doModule (mspec:ModuleOrNamespace) = let mtype = mspec.ModuleOrNamespaceType if mspec.IsModule then modulMember mspec; let vals = mtype.AllValsAndMembers |> Seq.toList |> List.filter (fun x -> not x.IsCompilerGenerated) |> List.filter (fun x -> x.MemberInfo.IsNone || x.IsExtensionMember) List.iter doModule mtype.ModuleAndNamespaceDefinitions; List.iter doTycon mtype.ExceptionDefinitions; List.iter doVal vals; List.iter doTycon mtype.TypeDefinitions doModule generatedCcu.Contents; use os = File.CreateText(xmlfile) fprintfn os (""); fprintfn os (""); fprintfn os ("%s") assemblyName; fprintfn os (""); !members |> List.iter (fun (id,doc) -> fprintfn os "" id fprintfn os "%s" doc fprintfn os ""); fprintfn os ""; fprintfn os ""; //---------------------------------------------------------------------------- // cmd line - option state //---------------------------------------------------------------------------- #if SILVERLIGHT let defaultFSharpBinariesDir = "." #else let getModuleFileName() = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.FriendlyName) let defaultFSharpBinariesDir = Filename.directoryName (getModuleFileName()) #endif let outpath outfile extn = String.concat "." (["out"; Filename.chopExtension (Filename.fileNameOfPath outfile); extn]) let GenerateInterfaceData(tcConfig:TcConfig) = (* (tcConfig.target = Dll || tcConfig.target = Module) && *) not tcConfig.standalone && not tcConfig.noSignatureData type ILResource with /// Read the bytes from a resource local to an assembly member r.Bytes = match r.Location with | ILResourceLocation.Local b -> b() | _-> error(InternalError("Bytes",rangeStartup)) let EncodeInterfaceData(tcConfig:TcConfig,tcGlobals,exportRemapping,generatedCcu,outfile,exiter:Exiter) = try if GenerateInterfaceData(tcConfig) then if verbose then dprintfn "Generating interface data attribute..."; let resource = WriteSignatureData (tcConfig,tcGlobals,exportRemapping,generatedCcu,outfile) if verbose then dprintf "Generated interface data attribute!\n"; // REVIEW: need a better test for this let outFileNoExtension = Filename.chopExtension outfile let isCompilerServiceDll = outFileNoExtension.Contains("FSharp.LanguageService.Compiler") if tcConfig.useOptimizationDataFile || tcGlobals.compilingFslib || isCompilerServiceDll then let sigDataFileName = (Filename.chopExtension outfile)+".sigdata" File.WriteAllBytes(sigDataFileName,resource.Bytes); let sigAttr = mkSignatureDataVersionAttr tcGlobals (IL.parseILVersion Internal.Utilities.FSharpEnvironment.FSharpBinaryMetadataFormatRevision) // The resource gets written to a file for FSharp.Core let resources = [ if not tcGlobals.compilingFslib && not isCompilerServiceDll then yield resource ] [sigAttr], resources else [],[] with e -> errorRecoveryNoRange e; exiter.Exit 1 //---------------------------------------------------------------------------- // EncodeOptimizationData //---------------------------------------------------------------------------- let GenerateOptimizationData(tcConfig) = (* (tcConfig.target =Dll || tcConfig.target = Module) && *) GenerateInterfaceData(tcConfig) let EncodeOptimizationData(tcGlobals,tcConfig,outfile,exportRemapping,data) = if GenerateOptimizationData tcConfig then let data = map2Of2 (Opt.RemapLazyModulInfo tcGlobals exportRemapping) data if verbose then dprintn "Generating optimization data attribute..."; // REVIEW: need a better test for this let outFileNoExtension = Filename.chopExtension outfile let isCompilerServiceDll = outFileNoExtension.Contains("FSharp.LanguageService.Compiler") if tcConfig.useOptimizationDataFile || tcGlobals.compilingFslib || isCompilerServiceDll then let ccu,modulInfo = data let bytes = Pickle.pickleObjWithDanglingCcus outfile tcGlobals ccu Opt.p_LazyModuleInfo modulInfo let optDataFileName = (Filename.chopExtension outfile)+".optdata" File.WriteAllBytes(optDataFileName,bytes); // As with the sigdata file, the optdata gets written to a file for FSharp.Core, FSharp.Compiler.Silverlight and FSharp.LanguageService.Compiler if tcGlobals.compilingFslib || isCompilerServiceDll then [] else let (ccu, optData) = if tcConfig.onlyEssentialOptimizationData || tcConfig.useOptimizationDataFile then map2Of2 Opt.AbstractLazyModulInfoToEssentials data else data [ WriteOptimizationData (tcGlobals, outfile, ccu, optData) ] else [ ] //---------------------------------------------------------------------------- // .res file format, for encoding the assembly version attribute. //-------------------------------------------------------------------------- // Helpers for generating binary blobs module BinaryGenerationUtilities = // Little-endian encoding of int32 let b0 n = byte (n &&& 0xFF) let b1 n = byte ((n >>> 8) &&& 0xFF) let b2 n = byte ((n >>> 16) &&& 0xFF) let b3 n = byte ((n >>> 24) &&& 0xFF) let i16 (i:int32) = [| b0 i; b1 i |] let i32 (i:int32) = [| b0 i; b1 i; b2 i; b3 i |] // Emit the bytes and pad to a 32-bit alignment let Padded initialAlignment (v:byte[]) = [| yield! v for _ in 1..(4 - (initialAlignment + v.Length) % 4) % 4 do yield 0x0uy |] // Generate nodes in a .res file format. These are then linked by Abstract IL using the // linkNativeResources function, which invokes the cvtres.exe utility module ResFileFormat = open BinaryGenerationUtilities let ResFileNode(dwTypeID,dwNameID,wMemFlags,wLangID,data:byte[]) = [| yield! i32 data.Length // DWORD ResHdr.dwDataSize yield! i32 0x00000020 // dwHeaderSize yield! i32 ((dwTypeID <<< 16) ||| 0x0000FFFF) // dwTypeID,sizeof(DWORD) yield! i32 ((dwNameID <<< 16) ||| 0x0000FFFF) // dwNameID,sizeof(DWORD) yield! i32 0x00000000 // DWORD dwDataVersion yield! i16 wMemFlags // WORD wMemFlags yield! i16 wLangID // WORD wLangID yield! i32 0x00000000 // DWORD dwVersion yield! i32 0x00000000 // DWORD dwCharacteristics yield! Padded 0 data |] let ResFileHeader() = ResFileNode(0x0,0x0,0x0,0x0,[| |]) // Generate the VS_VERSION_INFO structure held in a Win32 Version Resource in a PE file // // Web reference: http://www.piclist.com/tecHREF/os/win/api/win32/struc/src/str24_5.htm module VersionResourceFormat = open BinaryGenerationUtilities let VersionInfoNode(data:byte[]) = [| yield! i16 (data.Length + 2) // wLength : int16; // Specifies the length, in bytes, of the VS_VERSION_INFO structure. This length does not include any padding that aligns any subsequent version resource data on a 32-bit boundary. yield! data |] let VersionInfoElement(wType, szKey, valueOpt: byte[] option, children:byte[][], isString) = // for String structs, wValueLength represents the word count, not the byte count let wValueLength = (match valueOpt with None -> 0 | Some value -> (if isString then value.Length / 2 else value.Length)) VersionInfoNode [| yield! i16 wValueLength // wValueLength: int16. Specifies the length, in words, of the Value member. This value is zero if there is no Value member associated with the current version structure. yield! i16 wType // wType : int16; Specifies the type of data in the version resource. This member is 1 if the version resource contains text data and 0 if the version resource contains binary data. yield! Padded 2 szKey match valueOpt with | None -> yield! [] | Some value -> yield! Padded 0 value for child in children do yield! child |] let Version((v1,v2,v3,v4):ILVersionInfo) = [| yield! i32 (int32 v1 <<< 16 ||| int32 v2) // DWORD dwFileVersionMS; // Specifies the most significant 32 bits of the file's binary version number. This member is used with dwFileVersionLS to form a 64-bit value used for numeric comparisons. yield! i32 (int32 v3 <<< 16 ||| int32 v4) // DWORD dwFileVersionLS; // Specifies the least significant 32 bits of the file's binary version number. This member is used with dwFileVersionMS to form a 64-bit value used for numeric comparisons. |] let String(string,value) = let wType = 0x1 // Specifies the type of data in the version resource. This member is 1 if the version resource contains text data and 0 if the version resource contains binary data. let szKey = Bytes.stringAsUnicodeNullTerminated string VersionInfoElement(wType, szKey, Some(Bytes.stringAsUnicodeNullTerminated value),[| |],true) let StringTable(language,strings) = let wType = 0x1 // Specifies the type of data in the version resource. This member is 1 if the version resource contains text data and 0 if the version resource contains binary data. let szKey = Bytes.stringAsUnicodeNullTerminated language // Specifies an 8-digit hexadecimal number stored as a Unicode string. The four most significant digits represent the language identifier. The four least significant digits represent the code page for which the data is formatted. // Each Microsoft Standard Language identifier contains two parts: the low-order 10 bits specify the major language, and the high-order 6 bits specify the sublanguage. For a table of valid identifiers see Language Identifiers. let children = [| for string in strings do yield String(string) |] VersionInfoElement(wType, szKey, None,children,false) let StringFileInfo(stringTables: #seq >) = let wType = 0x1 // Specifies the type of data in the version resource. This member is 1 if the version resource contains text data and 0 if the version resource contains binary data. let szKey = Bytes.stringAsUnicodeNullTerminated "StringFileInfo" // Contains the Unicode string StringFileInfo // Contains an array of one or more StringTable structures. Each StringTable structures szKey member indicates the appropriate language and code page for displaying the text in that StringTable structure. let children = [| for stringTable in stringTables do yield StringTable(stringTable) |] VersionInfoElement(wType, szKey, None,children,false) let VarFileInfo(vars: #seq) = let wType = 0x1 // Specifies the type of data in the version resource. This member is 1 if the version resource contains text data and 0 if the version resource contains binary data. let szKey = Bytes.stringAsUnicodeNullTerminated "VarFileInfo" // Contains the Unicode string StringFileInfo // Contains an array of one or more StringTable structures. Each StringTable structures szKey member indicates the appropriate language and code page for displaying the text in that StringTable structure. let children = [| for (lang,codePage) in vars do let szKey = Bytes.stringAsUnicodeNullTerminated "Translation" yield VersionInfoElement(0x0,szKey, Some([| yield! i16 lang yield! i16 codePage |]), [| |],false) |] VersionInfoElement(wType, szKey, None,children,false) let VS_FIXEDFILEINFO(fileVersion:ILVersionInfo, productVersion:ILVersionInfo, dwFileFlagsMask, dwFileFlags,dwFileOS, dwFileType,dwFileSubtype, lwFileDate:int64) = let dwStrucVersion = 0x00010000 [| yield! i32 0xFEEF04BD // DWORD dwSignature; // Contains the value 0xFEEFO4BD. This is used with the szKey member of the VS_VERSION_INFO structure when searching a file for the VS_FIXEDFILEINFO structure. yield! i32 dwStrucVersion // DWORD dwStrucVersion; // Specifies the binary version number of this structure. The high-order word of this member contains the major version number, and the low-order word contains the minor version number. yield! Version fileVersion // DWORD dwFileVersionMS,dwFileVersionLS; // Specifies the most/least significant 32 bits of the file's binary version number. This member is used with dwFileVersionLS to form a 64-bit value used for numeric comparisons. yield! Version productVersion // DWORD dwProductVersionMS,dwProductVersionLS; // Specifies the most/least significant 32 bits of the file's binary version number. This member is used with dwFileVersionLS to form a 64-bit value used for numeric comparisons. yield! i32 dwFileFlagsMask // DWORD dwFileFlagsMask; // Contains a bitmask that specifies the valid bits in dwFileFlags. A bit is valid only if it was defined when the file was created. yield! i32 dwFileFlags // DWORD dwFileFlags; // Contains a bitmask that specifies the Boolean attributes of the file. This member can include one or more of the following values: // VS_FF_DEBUG 0x1L The file contains debugging information or is compiled with debugging features enabled. // VS_FF_INFOINFERRED The file's version structure was created dynamically; therefore, some of the members in this structure may be empty or incorrect. This flag should never be set in a file's VS_VERSION_INFO data. // VS_FF_PATCHED The file has been modified and is not identical to the original shipping file of the same version number. // VS_FF_PRERELEASE The file is a development version, not a commercially released product. // VS_FF_PRIVATEBUILD The file was not built using standard release procedures. If this flag is set, the StringFileInfo structure should contain a PrivateBuild entry. // VS_FF_SPECIALBUILD The file was built by the original company using standard release procedures but is a variation of the normal file of the same version number. If this flag is set, the StringFileInfo structure should contain a SpecialBuild entry. yield! i32 dwFileOS //Specifies the operating system for which this file was designed. This member can be one of the following values: Flag //VOS_DOS 0x0001L The file was designed for MS-DOS. //VOS_NT 0x0004L The file was designed for Windows NT. //VOS__WINDOWS16 The file was designed for 16-bit Windows. //VOS__WINDOWS32 The file was designed for the Win32 API. //VOS_OS216 0x00020000L The file was designed for 16-bit OS/2. //VOS_OS232 0x00030000L The file was designed for 32-bit OS/2. //VOS__PM16 The file was designed for 16-bit Presentation Manager. //VOS__PM32 The file was designed for 32-bit Presentation Manager. //VOS_UNKNOWN The operating system for which the file was designed is unknown to Windows. yield! i32 dwFileType // Specifies the general type of file. This member can be one of the following values: //VFT_UNKNOWN The file type is unknown to Windows. //VFT_APP The file contains an application. //VFT_DLL The file contains a dynamic-link library (DLL). //VFT_DRV The file contains a device driver. If dwFileType is VFT_DRV, dwFileSubtype contains a more specific description of the driver. //VFT_FONT The file contains a font. If dwFileType is VFT_FONT, dwFileSubtype contains a more specific description of the font file. //VFT_VXD The file contains a virtual device. //VFT_STATIC_LIB The file contains a static-link library. yield! i32 dwFileSubtype // Specifies the function of the file. The possible values depend on the value of dwFileType. For all values of dwFileType not described in the following list, dwFileSubtype is zero. If dwFileType is VFT_DRV, dwFileSubtype can be one of the following values: //VFT2_UNKNOWN The driver type is unknown by Windows. //VFT2_DRV_COMM The file contains a communications driver. //VFT2_DRV_PRINTER The file contains a printer driver. //VFT2_DRV_KEYBOARD The file contains a keyboard driver. //VFT2_DRV_LANGUAGE The file contains a language driver. //VFT2_DRV_DISPLAY The file contains a display driver. //VFT2_DRV_MOUSE The file contains a mouse driver. //VFT2_DRV_NETWORK The file contains a network driver. //VFT2_DRV_SYSTEM The file contains a system driver. //VFT2_DRV_INSTALLABLE The file contains an installable driver. //VFT2_DRV_SOUND The file contains a sound driver. // //If dwFileType is VFT_FONT, dwFileSubtype can be one of the following values: // //VFT2_UNKNOWN The font type is unknown by Windows. //VFT2_FONT_RASTER The file contains a raster font. //VFT2_FONT_VECTOR The file contains a vector font. //VFT2_FONT_TRUETYPE The file contains a TrueType font. // //If dwFileType is VFT_VXD, dwFileSubtype contains the virtual device identifier included in the virtual device control block. yield! i32 (int32 (lwFileDate >>> 32)) // Specifies the most significant 32 bits of the file's 64-bit binary creation date and time stamp. yield! i32 (int32 lwFileDate) //Specifies the least significant 32 bits of the file's 64-bit binary creation date and time stamp. |] let VS_VERSION_INFO(fixedFileInfo,stringFileInfo,varFileInfo) = let wType = 0x0 let szKey = Bytes.stringAsUnicodeNullTerminated "VS_VERSION_INFO" // Contains the Unicode string VS_VERSION_INFO let value = VS_FIXEDFILEINFO (fixedFileInfo) let children = [| yield StringFileInfo(stringFileInfo) yield VarFileInfo(varFileInfo) |] VersionInfoElement(wType, szKey, Some(value),children,false) let VS_VERSION_INFO_RESOURCE(data) = let dwTypeID = 0x0010 let dwNameID = 0x0001 let wMemFlags = 0x0030 // REVIEW: HARDWIRED TO ENGLISH let wLangID = 0x0 ResFileFormat.ResFileNode(dwTypeID, dwNameID,wMemFlags,wLangID,VS_VERSION_INFO(data)) module ManifestResourceFormat = let VS_MANIFEST_RESOURCE(data, isLibrary) = let dwTypeID = 0x0018 let dwNameID = if isLibrary then 0x2 else 0x1 let wMemFlags = 0x0 let wLangID = 0x0 ResFileFormat.ResFileNode(dwTypeID, dwNameID, wMemFlags, wLangID, data) /// Helpers for finding attributes module AttributeHelpers = /// Try to find an attribute that takes a string argument let TryFindStringAttribute tcGlobals attrib attribs = match TryFindFSharpAttribute tcGlobals (mkMscorlibAttrib tcGlobals attrib) attribs with | Some (Attrib(_,_,[ AttribStringArg(s) ],_,_,_,_)) -> Some (s) | _ -> None let TryFindIntAttribute tcGlobals attrib attribs = match TryFindFSharpAttribute tcGlobals (mkMscorlibAttrib tcGlobals attrib) attribs with | Some (Attrib(_,_,[ AttribInt32Arg(i) ],_,_,_,_)) -> Some (i) | _ -> None let TryFindBoolAttribute tcGlobals attrib attribs = match TryFindFSharpAttribute tcGlobals (mkMscorlibAttrib tcGlobals attrib) attribs with | Some (Attrib(_,_,[ AttribBoolArg(p) ],_,_,_,_)) -> Some (p) | _ -> None // Try to find an AssemblyVersion attribute let TryFindVersionAttribute tcGlobals attrib attribs = match TryFindStringAttribute tcGlobals attrib attribs with | Some versionString -> try Some(IL.parseILVersion versionString) with e -> warning(Error(FSComp.SR.fscBadAssemblyVersion(versionString),Range.rangeStartup)); None | _ -> None let injectedCompatTypes = set [ "System.Tuple`1"; "System.Tuple`2" ; "System.Tuple`3" ; "System.Tuple`4"; "System.Tuple`5"; "System.Tuple`6"; "System.Tuple`7"; "System.Tuple`8"; "System.ITuple"; "System.Tuple"; //"System.System_LazyDebugView`1"; //"System.Threading.LazyExecutionMode"; //"System.Threading.LazyInternalExceptionHolder"; //"System.Threading.LazyBlock`1"; "System.Collections.IStructuralComparable"; "System.Collections.IStructuralEquatable"; ] let typesForwardedToMscorlib = set [ "System.AggregateException"; "System.Threading.CancellationTokenRegistration"; "System.Threading.CancellationToken"; "System.Threading.CancellationTokenSource"; "System.Lazy`1"; "System.IObservable`1"; "System.IObserver`1"; ] let typesForwardedToSystemNumerics = set [ "System.Numerics.BigInteger"; ] let createMscorlibExportList tcGlobals = // We want to write forwarders out for all injected types except for System.ITuple, which is internal // Forwarding System.ITuple will cause FxCop failures on 4.0 Set.union (Set.filter (fun t -> t <> "System.ITuple") injectedCompatTypes) typesForwardedToMscorlib |> Seq.map (fun t -> { ScopeRef = tcGlobals.sysCcu.ILScopeRef ; Name = t ; IsForwarder = true ; Access = ILTypeDefAccess.Public ; Nested = mkILNestedExportedTypes List.empty ; CustomAttrs = mkILCustomAttrs List.empty }) |> Seq.toList let createSystemNumericsExportList tcGlobals = let sysAssemblyRef = tcGlobals.sysCcu.ILScopeRef.AssemblyRef let systemNumericsAssemblyRef = ILAssemblyRef.Create("System.Numerics", sysAssemblyRef.Hash, sysAssemblyRef.PublicKey, sysAssemblyRef.Retargetable, sysAssemblyRef.Version, sysAssemblyRef.Locale) typesForwardedToSystemNumerics |> Seq.map (fun t -> { ScopeRef = ILScopeRef.Assembly(systemNumericsAssemblyRef) Name = t; IsForwarder = true ; Access = ILTypeDefAccess.Public ; Nested = mkILNestedExportedTypes List.empty ; CustomAttrs = mkILCustomAttrs List.empty }) |> Seq.toList module MainModuleBuilder = let CreateMainModule (tcConfig:TcConfig,tcGlobals, pdbfile,assemblyName,outfile,topAttrs, (iattrs,intfDataResources),optDataResources, codegenResults,assemVerFromAttrib,metadataVersion,secDecls) = if !progress then dprintf "Creating main module...\n"; let ilTypeDefs = //let topTypeDef = mkILTypeDefForGlobalFunctions tcGlobals.ilg (mkILMethods [], emptyILFields) mkILTypeDefs codegenResults.ilTypeDefs let mainModule = let hashAlg = AttributeHelpers.TryFindIntAttribute tcGlobals "System.Reflection.AssemblyAlgorithmIdAttribute" topAttrs.assemblyAttrs let locale = AttributeHelpers.TryFindStringAttribute tcGlobals "System.Reflection.AssemblyCultureAttribute" topAttrs.assemblyAttrs let flags = match AttributeHelpers.TryFindIntAttribute tcGlobals "System.Reflection.AssemblyFlagsAttribute" topAttrs.assemblyAttrs with | Some(f) -> f | _ -> 0x0 // You're only allowed to set a locale if the assembly is a library if (locale <> None && locale.Value <> "") && tcConfig.target <> Dll then error(Error(FSComp.SR.fscAssemblyCultureAttributeError(),rangeCmdArgs)) // Add the type forwarders to any .NET DLL post-.NET-2.0, to give binary compatibility let exportedTypesList = if (tcConfig.compilingFslib && tcConfig.compilingFslib40) then (List.append (createMscorlibExportList tcGlobals) (createSystemNumericsExportList tcGlobals)) else [] mkILSimpleModule assemblyName (fsharpModuleName tcConfig.target assemblyName) (tcConfig.target = Dll || tcConfig.target = Module) tcConfig.subsystemVersion tcConfig.useHighEntropyVA ilTypeDefs hashAlg locale flags (mkILExportedTypes exportedTypesList) metadataVersion let disableJitOptimizations = not (tcConfig.optSettings.jitOpt()) let manifestAttrs = mkILCustomAttrs [ if not tcConfig.internConstantStrings then yield mkILCustomAttribute tcGlobals.ilg (mkILTyRef (tcGlobals.ilg.mscorlibScopeRef, "System.Runtime.CompilerServices.CompilationRelaxationsAttribute"), [tcGlobals.ilg.typ_Int32],[ILAttribElem.Int32( 8)], []) yield! iattrs yield! codegenResults.ilAssemAttrs if Option.isSome pdbfile then yield (mkDebuggableAttributeV2 tcGlobals.ilg (tcConfig.jitTracking, tcConfig.ignoreSymbolStoreSequencePoints, disableJitOptimizations, false (* enableEnC *) )) ] let tcVersion = tcConfig.version.GetVersionInfo(tcConfig.implicitIncludeDir) let manifest = if tcConfig.target = Module then None else let man = mainModule.ManifestOfAssembly let ver = match assemVerFromAttrib with | None -> tcVersion | Some v -> v Some { man with Version= Some(ver); CustomAttrs = manifestAttrs; DisableJitOptimizations=disableJitOptimizations; JitTracking= tcConfig.jitTracking; SecurityDecls=secDecls } let quotDataResources = codegenResults.quotationResourceBytes |> List.map (fun bytes -> { Name=QuotationPickler.pickledDefinitionsResourceNameBase+string(newUnique()); Location = ILResourceLocation.Local (fun () -> bytes); Access= ILResourceAccess.Public; CustomAttrs = emptyILCustomAttrs }) let resources = mkILResources [ for file in tcConfig.embedResources do let name,bytes,pub = let lower = String.lowercase file if List.exists (Filename.checkSuffix lower) [".resx"] then #if SILVERLIGHT failwith "resx files not supported as legacy compiler inputs" #else let file = tcConfig.ResolveSourceFile(rangeStartup,file,tcConfig.implicitIncludeDir) let outfile = (file |> Filename.chopExtension) + ".resources" let readResX(f:string) = use rsxr = new System.Resources.ResXResourceReader(f) rsxr |> Seq.cast |> Seq.toList |> List.map (fun (d:System.Collections.DictionaryEntry) -> (d.Key :?> string), d.Value) let writeResources((r:(string * obj) list),(f:string)) = use writer = new System.Resources.ResourceWriter(f) r |> List.iter (fun (k,v) -> writer.AddResource(k,v)) writeResources(readResX(file),outfile); let file,name,pub = TcConfigBuilder.SplitCommandLineResourceInfo outfile let file = tcConfig.ResolveSourceFile(rangeStartup,file,tcConfig.implicitIncludeDir) let bytes = FileSystem.ReadAllBytesShim file FileSystem.FileDelete outfile name,bytes,pub #endif else let file,name,pub = TcConfigBuilder.SplitCommandLineResourceInfo file let file = tcConfig.ResolveSourceFile(rangeStartup,file,tcConfig.implicitIncludeDir) let bytes = FileSystem.ReadAllBytesShim file name,bytes,pub yield { Name=name; Location=ILResourceLocation.Local (fun () -> bytes); Access=pub; CustomAttrs=emptyILCustomAttrs } yield! quotDataResources yield! intfDataResources yield! optDataResources for ri in tcConfig.linkResources do let file,name,pub = TcConfigBuilder.SplitCommandLineResourceInfo ri yield { Name=name; Location=ILResourceLocation.File(ILModuleRef.Create(name=file, hasMetadata=false, hash=Some (sha1HashBytes (FileSystem.ReadAllBytesShim file))), 0); Access=pub; CustomAttrs=emptyILCustomAttrs } ] //NOTE: the culture string can be turned into a number using this: // sprintf "%04x" (System.Globalization.CultureInfo.GetCultureInfo("en").KeyboardLayoutId ) let assemblyVersionResources = let assemblyVersion = match tcConfig.version with | VersionNone ->assemVerFromAttrib | _ -> Some(tcVersion) match assemblyVersion with | None -> [] | Some(assemblyVersion) -> let FindAttribute key attrib = match AttributeHelpers.TryFindStringAttribute tcGlobals attrib topAttrs.assemblyAttrs with | Some text -> [(key,text)] | _ -> [] let fileVersion = match AttributeHelpers.TryFindVersionAttribute tcGlobals "System.Reflection.AssemblyFileVersionAttribute" topAttrs.assemblyAttrs with | Some v -> v | None -> assemblyVersion let productVersion = match AttributeHelpers.TryFindVersionAttribute tcGlobals "System.Reflection.AssemblyInformationalVersionAttribute" topAttrs.assemblyAttrs with | Some v -> v | None -> assemblyVersion let stringFileInfo = // 000004b0: // Specifies an 8-digit hexadecimal number stored as a Unicode string. The four most significant digits represent the language identifier. The four least significant digits represent the code page for which the data is formatted. // Each Microsoft Standard Language identifier contains two parts: the low-order 10 bits specify the major language, and the high-order 6 bits specify the sublanguage. For a table of valid identifiers see Language Identifiers. // // see e.g. http://msdn.microsoft.com/en-us/library/aa912040.aspx 0000 is neutral and 04b0(hex)=1252(dec) is the code page. [ ("000004b0", [ yield ("Assembly Version", (let v1,v2,v3,v4 = assemblyVersion in sprintf "%d.%d.%d.%d" v1 v2 v3 v4)) yield ("FileVersion", (let v1,v2,v3,v4 = fileVersion in sprintf "%d.%d.%d.%d" v1 v2 v3 v4)) yield ("ProductVersion", (let v1,v2,v3,v4 = productVersion in sprintf "%d.%d.%d.%d" v1 v2 v3 v4)) yield! FindAttribute "Comments" "System.Reflection.AssemblyDescriptionAttribute" yield! FindAttribute "FileDescription" "System.Reflection.AssemblyTitleAttribute" yield! FindAttribute "ProductName" "System.Reflection.AssemblyProductAttribute" yield! FindAttribute "CompanyName" "System.Reflection.AssemblyCompanyAttribute" yield! FindAttribute "LegalCopyright" "System.Reflection.AssemblyCopyrightAttribute" yield! FindAttribute "LegalTrademarks" "System.Reflection.AssemblyTrademarkAttribute" ]) ] // These entries listed in the MSDN documentation as "standard" string entries are not yet settable // InternalName: The Value member identifies the file's internal name, if one exists. For example, this string could contain the module name for Windows dynamic-link libraries (DLLs), a virtual device name for Windows virtual devices, or a device name for MS-DOS device drivers. // OriginalFilename: The Value member identifies the original name of the file, not including a path. This enables an application to determine whether a file has been renamed by a user. This name may not be MS-DOS 8.3-format if the file is specific to a non-FAT file system. // PrivateBuild: The Value member describes by whom, where, and why this private version of the file was built. This string should only be present if the VS_FF_PRIVATEBUILD flag is set in the dwFileFlags member of the VS_FIXEDFILEINFO structure. For example, Value could be 'Built by OSCAR on \OSCAR2'. // SpecialBuild: The Value member describes how this version of the file differs from the normal version. This entry should only be present if the VS_FF_SPECIALBUILD flag is set in the dwFileFlags member of the VS_FIXEDFILEINFO structure. For example, Value could be 'Private build for Olivetti solving mouse problems on M250 and M250E computers'. // "If you use the Var structure to list the languages your application // or DLL supports instead of using multiple version resources, // use the Value member to contain an array of DWORD values indicating the // language and code page combinations supported by this file. The // low-order word of each DWORD must contain a Microsoft language identifier, // and the high-order word must contain the IBM code page number. // Either high-order or low-order word can be zero, indicating that // the file is language or code page independent. If the Var structure is // omitted, the file will be interpreted as both language and code page independent. " let varFileInfo = [ (0x0, 0x04b0) ] let fixedFileInfo = let dwFileFlagsMask = 0x3f // REVIEW: HARDWIRED let dwFileFlags = 0x00 // REVIEW: HARDWIRED let dwFileOS = 0x04 // REVIEW: HARDWIRED let dwFileType = 0x01 // REVIEW: HARDWIRED let dwFileSubtype = 0x00 // REVIEW: HARDWIRED let lwFileDate = 0x00L // REVIEW: HARDWIRED (fileVersion,productVersion,dwFileFlagsMask,dwFileFlags,dwFileOS,dwFileType,dwFileSubtype,lwFileDate) let vsVersionInfoResource = VersionResourceFormat.VS_VERSION_INFO_RESOURCE(fixedFileInfo,stringFileInfo,varFileInfo) let resource = [| yield! ResFileFormat.ResFileHeader() yield! vsVersionInfoResource |] #if DUMP_ASSEMBLY_RESOURCE for i in 0..(resource.Length+15)/16 - 1 do for j in 0..15 do if j % 2 = 0 then printf " " printf "%02x" resource.[min (i*16+j) (resource.Length - 1)] printf " " for j in 0..15 do printf "%c" (let c = char resource.[min (i*16+j) (resource.Length - 1)] in if c > ' ' && c < '~' then c else '.') printfn "" #endif [ resource ] // a user cannot specify both win32res and win32manifest if not(tcConfig.win32manifest = "") && not(tcConfig.win32res = "") then error(Error(FSComp.SR.fscTwoResourceManifests(),rangeCmdArgs)); let win32Manifest = #if SILVERLIGHT "" #else if not(tcConfig.win32manifest = "") then tcConfig.win32manifest elif not(tcConfig.includewin32manifest) || not(tcConfig.win32res = "") || runningOnMono then // don't embed a manifest if a native resource is being included "" else match Build.highestInstalledNetFrameworkVersionMajorMinor() with | _,"v4.0" -> System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + @"default.win32manifest" | _,"v3.5" -> System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + @"..\v3.5\default.win32manifest" | _,_ -> "" // only have default manifests for 3.5 and 4.0 #endif let nativeResources = #if SILVERLIGHT [] #else [ for av in assemblyVersionResources do yield Lazy.CreateFromValue av if not(tcConfig.win32res = "") then yield Lazy.CreateFromValue (FileSystem.ReadAllBytesShim tcConfig.win32res) if tcConfig.includewin32manifest && not(win32Manifest = "") && not(runningOnMono) then yield Lazy.CreateFromValue [| yield! ResFileFormat.ResFileHeader() yield! (ManifestResourceFormat.VS_MANIFEST_RESOURCE((FileSystem.ReadAllBytesShim win32Manifest), tcConfig.target = Dll))|]] #endif // Add attributes, version number, resources etc. {mainModule with StackReserveSize = tcConfig.stackReserveSize Name = (if tcConfig.target = Module then Filename.fileNameOfPath outfile else mainModule.Name); SubSystemFlags = (if tcConfig.target = WinExe then 2 else 3) ; Resources= resources; ImageBase = (match tcConfig.baseAddress with None -> 0x00400000l | Some b -> b); IsDLL=(tcConfig.target = Dll || tcConfig.target=Module); Platform = tcConfig.platform ; Is32Bit=(match tcConfig.platform with Some X86 -> true | _ -> false); Is64Bit=(match tcConfig.platform with Some AMD64 | Some IA64 -> true | _ -> false); Is32BitPreferred = if tcConfig.prefer32Bit && not tcConfig.target.IsExe then (error(Error(FSComp.SR.invalidPlatformTarget(),rangeCmdArgs))) else tcConfig.prefer32Bit; CustomAttrs= mkILCustomAttrs ((if tcConfig.target = Module then iattrs else []) @ codegenResults.ilNetModuleAttrs); NativeResources=nativeResources; Manifest = manifest } /// OPTIONAL STATIC LINKING OF ALL DLLs THAT DEPEND ON THE F# LIBRARY module StaticLinker = let debugStaticLinking = condition "FSHARP_DEBUG_STATIC_LINKING" let StaticLinkILModules (tcConfig, ilGlobals, ilxMainModule, dependentILModules: (CcuThunk option * ILModuleDef) list) = if isNil dependentILModules then ilxMainModule,(fun x -> x) else // Check no dependent assemblies use quotations let dependentCcuUsingQuotations = dependentILModules |> List.tryPick (function (Some ccu,_) when ccu.UsesQuotations -> Some ccu | _ -> None) match dependentCcuUsingQuotations with | Some ccu -> error(Error(FSComp.SR.fscQuotationLiteralsStaticLinking(ccu.AssemblyName),rangeStartup)); | None -> () // Check we're not static linking a .EXE if dependentILModules |> List.exists (fun (_,x) -> not x.IsDLL) then error(Error(FSComp.SR.fscStaticLinkingNoEXE(),rangeStartup)) // Check we're not static linking something that is not pure IL if dependentILModules |> List.exists (fun (_,x) -> not x.IsILOnly) then error(Error(FSComp.SR.fscStaticLinkingNoMixedDLL(),rangeStartup)) // The set of short names for the all dependent assemblies let assems = set [ for (_,m) in dependentILModules do match m.Manifest with | Some m -> yield m.Name | _ -> () ] // A rewriter which rewrites scope references to things in dependent assemblies to be local references let rewriteExternalRefsToLocalRefs x = if assems.Contains(getNameOfScopeRef x) then ILScopeRef.Local else x let savedResources = let allResources = [ for (ccu,m) in dependentILModules do for r in m.Resources.AsList do yield (ccu, r) ] // Don't save interface, optimization or resource definitions for provider-generated assemblies. // These are "fake". let isProvided (ccu: CcuThunk option) = #if EXTENSIONTYPING match ccu with | Some c -> c.IsProviderGenerated | None -> false #else ignore ccu false #endif // Save only the interface/optimization attributes of generated data let intfDataResources,others = allResources |> List.partition (snd >> IsSignatureDataResource) let intfDataResources = [ for (ccu,r) in intfDataResources do if GenerateInterfaceData tcConfig && not (isProvided ccu) then yield r ] let optDataResources,others = others |> List.partition (snd >> IsOptimizationDataResource) let optDataResources = [ for (ccu,r) in optDataResources do if GenerateOptimizationData tcConfig && not (isProvided ccu) then yield r ] let reflectedDefinitionResources,others = others |> List.partition (snd >> IsReflectedDefinitionsResource) let reflectedDefinitionResources = reflectedDefinitionResources |> List.mapi (fun i (_,r) -> {r with Name = QuotationPickler.pickledDefinitionsResourceNameBase+string (i+1)}) let otherResources = others |> List.map snd if verbose then dprintf "#intfDataResources = %d, #optDataResources = %d, #reflectedDefinitionResources = %d\n" intfDataResources.Length optDataResources.Length reflectedDefinitionResources.Length; let result = intfDataResources@optDataResources@reflectedDefinitionResources@otherResources result let moduls = ilxMainModule :: (List.map snd dependentILModules) // NOTE: version resources from statically linked DLLs are dropped in the binary reader/writer let savedNativeResources = [ //yield! ilxMainModule.NativeResources for m in moduls do yield! m.NativeResources ] let topTypeDefs,normalTypeDefs = moduls |> List.map (fun m -> m.TypeDefs.AsList |> List.partition (fun td -> isTypeNameForGlobalFunctions td.Name)) |> List.unzip let topTypeDef = let topTypeDefs = List.concat topTypeDefs mkILTypeDefForGlobalFunctions ilGlobals (mkILMethods (topTypeDefs |> List.collect (fun td -> td.Methods.AsList)), mkILFields (topTypeDefs |> List.collect (fun td -> td.Fields.AsList))) let ilxMainModule = { ilxMainModule with Manifest = (let m = ilxMainModule.ManifestOfAssembly in Some {m with CustomAttrs = mkILCustomAttrs m.CustomAttrs.AsList }); CustomAttrs = mkILCustomAttrs [ for m in moduls do yield! m.CustomAttrs.AsList ]; TypeDefs = mkILTypeDefs (topTypeDef :: List.concat normalTypeDefs); Resources = mkILResources (savedResources @ ilxMainModule.Resources.AsList); NativeResources = savedNativeResources } ilxMainModule, rewriteExternalRefsToLocalRefs #if DEBUG let PrintModule outfile x = #if SILVERLIGHT () #else use os = File.CreateText(outfile) :> TextWriter ILAsciiWriter.output_module os x #endif #endif // Find all IL modules that are to be statically linked given the static linking roots. let FindAndAddMscorlibTypesForStaticLinkingIntoFSharpCoreLibrary (tcConfig:TcConfig, ilGlobals:ILGlobals, ilxMainModule) = let mscorlib40 = tcConfig.compilingFslib20.Value // + @"\..\.NET Framework 4.0 Pre Beta\mscorlib.dll" let ilBinaryReader = let opts = { ILBinaryReader.defaults with ilGlobals=mkILGlobals ILScopeRef.Local (Some tcConfig.mscorlibAssemblyName) (tcConfig.noDebugData,false) ; optimizeForMemory=tcConfig.optimizeForMemory; pdbPath = None; } ILBinaryReader.OpenILModuleReader mscorlib40 opts let tdefs1 = ilxMainModule.TypeDefs.AsList |> List.filter (fun td -> not (injectedCompatTypes.Contains(td.Name))) let tdefs2 = ilBinaryReader.ILModuleDef.TypeDefs.AsList |> List.filter (fun td -> injectedCompatTypes.Contains(td.Name)) //printfn "tdefs2 = %A" (tdefs2 |> List.map (fun tdef -> tdef.Name)) // rewrite the mscorlib references let tdefs2 = let fakeModule = mkILSimpleModule "" "" true (4, 0) false (mkILTypeDefs tdefs2) None None 0 (mkILExportedTypes []) "" let fakeModule = fakeModule |> Morphs.morphILTypeRefsInILModuleMemoized ilGlobals (fun tref -> if injectedCompatTypes.Contains(tref.Name) || (tref.Enclosing |> List.exists (fun x -> injectedCompatTypes.Contains(x))) then tref //|> Morphs.morphILScopeRefsInILTypeRef (function ILScopeRef.Local -> ilGlobals.mscorlibScopeRef | x -> x) // The implementations of Tuple use two private methods from System.Environment to get a resource string. Remap it elif tref.Name = "System.Environment" then ILTypeRef.Create(ILScopeRef.Local, [], "Microsoft.FSharp.Core.PrivateEnvironment") //|> Morphs.morphILScopeRefsInILTypeRef (function ILScopeRef.Local -> ilGlobals.mscorlibScopeRef | x -> x) else tref |> Morphs.morphILScopeRefsInILTypeRef (fun _ -> ilGlobals.mscorlibScopeRef) ) // strip out System.Runtime.TargetedPatchingOptOutAttribute, which doesn't exist for 2.0 let fakeModule = {fakeModule with TypeDefs = mkILTypeDefs ([ for td in fakeModule.TypeDefs do yield {td with Methods = mkILMethods (List.map (fun (md:ILMethodDef) -> {md with CustomAttrs = mkILCustomAttrs (td.CustomAttrs.AsList |> List.filter (fun ilattr -> ilattr.Method.EnclosingType.TypeRef.FullName <> "System.Runtime.TargetedPatchingOptOutAttribute") )}) (td.Methods.AsList))}])} //ILAsciiWriter.output_module stdout fakeModule fakeModule.TypeDefs.AsList let ilxMainModule = { ilxMainModule with TypeDefs = mkILTypeDefs (tdefs1 @ tdefs2); } ilxMainModule [] type Node = { name: string; data: ILModuleDef; ccu: option; refs: ILReferences; mutable edges: list; mutable visited: bool } // Find all IL modules that are to be statically linked given the static linking roots. let FindDependentILModulesForStaticLinking (tcConfig:TcConfig, tcImports:TcImports,ilxMainModule) = if not tcConfig.standalone && tcConfig.extraStaticLinkRoots.IsEmpty then [] else // Recursively find all referenced modules and add them to a module graph let depModuleTable = HashMultiMap(0, HashIdentity.Structural) let dummyEntry nm = { refs = IL.emptyILRefs ; name=nm; ccu=None; data=ilxMainModule; // any old module edges = []; visited = true } let assumedIndependentSet = set [ "mscorlib"; "System"; "System.Core"; "System.Xml"; "Microsoft.Build.Framework"; "Microsoft.Build.Utilities" ] begin let remaining = ref (computeILRefs ilxMainModule).AssemblyReferences while nonNil !remaining do let ilAssemRef = List.head !remaining remaining := List.tail !remaining; if assumedIndependentSet.Contains ilAssemRef.Name || (ilAssemRef.PublicKey = Some ecmaPublicKey) then depModuleTable.[ilAssemRef.Name] <- dummyEntry ilAssemRef.Name else if not (depModuleTable.ContainsKey ilAssemRef.Name) then match tcImports.TryFindDllInfo(Range.rangeStartup,ilAssemRef.Name,lookupOnly=false) with | Some dllInfo -> let ccu = match tcImports.FindCcuFromAssemblyRef (Range.rangeStartup, ilAssemRef) with | ResolvedCcu ccu -> Some ccu | UnresolvedCcu(_ccuName) -> None let modul = dllInfo.RawMetadata let refs = if ilAssemRef.Name = GetFSharpCoreLibraryName() then IL.emptyILRefs elif not modul.IsILOnly then warning(Error(FSComp.SR.fscIgnoringMixedWhenLinking ilAssemRef.Name,rangeStartup)) IL.emptyILRefs else { AssemblyReferences = dllInfo.ILAssemblyRefs; ModuleReferences = [] } depModuleTable.[ilAssemRef.Name] <- { refs=refs; name=ilAssemRef.Name; ccu=ccu; data=modul; edges = []; visited = false }; // Push the new work items remaining := refs.AssemblyReferences @ !remaining; | None -> warning(Error(FSComp.SR.fscAssumeStaticLinkContainsNoDependencies(ilAssemRef.Name),rangeStartup)); depModuleTable.[ilAssemRef.Name] <- dummyEntry ilAssemRef.Name done; end; ReportTime tcConfig "Find dependencies"; // Add edges from modules to the modules that depend on them for (KeyValue(_,n)) in depModuleTable do for aref in n.refs.AssemblyReferences do let n2 = depModuleTable.[aref.Name] n2.edges <- n :: n2.edges // Find everything that depends on FSharp.Core let roots = [ if tcConfig.standalone && depModuleTable.ContainsKey (GetFSharpCoreLibraryName()) then yield depModuleTable.[GetFSharpCoreLibraryName()] for n in tcConfig.extraStaticLinkRoots do match depModuleTable.TryFind n with | Some x -> yield x | None -> error(Error(FSComp.SR.fscAssemblyNotFoundInDependencySet(n),rangeStartup)); ] let remaining = ref roots [ while nonNil !remaining do let n = List.head !remaining remaining := List.tail !remaining; if not n.visited then if verbose then dprintn ("Module "+n.name+" depends on "+GetFSharpCoreLibraryName()); n.visited <- true; remaining := n.edges @ !remaining yield (n.ccu, n.data); ] // Add all provider-generated assemblies into the static linking set let FindProviderGeneratedILModules (tcImports:TcImports, providerGeneratedAssemblies: (ImportedBinary * _) list) = [ for (importedBinary,provAssemStaticLinkInfo) in providerGeneratedAssemblies do let ilAssemRef = importedBinary.ILScopeRef.AssemblyRef if debugStaticLinking then printfn "adding provider-generated assembly '%s' into static linking set" ilAssemRef.Name match tcImports.TryFindDllInfo(Range.rangeStartup,ilAssemRef.Name,lookupOnly=false) with | Some dllInfo -> let ccu = match tcImports.FindCcuFromAssemblyRef (Range.rangeStartup, ilAssemRef) with | ResolvedCcu ccu -> Some ccu | UnresolvedCcu(_ccuName) -> None let modul = dllInfo.RawMetadata yield (ccu, dllInfo.ILScopeRef, modul), (ilAssemRef.Name, provAssemStaticLinkInfo) | None -> () ] // Compute a static linker. This only captures tcImports (a large data structure) if // static linking is enabled. Normally this is not the case, which lets us collect tcImports // prior to this point. let StaticLink (tcConfig:TcConfig, tcImports:TcImports, ilGlobals:ILGlobals) = #if EXTENSIONTYPING let providerGeneratedAssemblies = [ // Add all EST-generated assemblies into the static linking set for KeyValue(_,importedBinary:ImportedBinary) in tcImports.DllTable do if importedBinary.IsProviderGenerated then match importedBinary.ProviderGeneratedStaticLinkMap with | None -> () | Some provAssemStaticLinkInfo -> yield (importedBinary,provAssemStaticLinkInfo) ] #endif if tcConfig.compilingFslib && tcConfig.compilingFslib20.IsSome then (fun (ilxMainModule,_) -> FindAndAddMscorlibTypesForStaticLinkingIntoFSharpCoreLibrary (tcConfig, ilGlobals, ilxMainModule)) elif not tcConfig.standalone && tcConfig.extraStaticLinkRoots.IsEmpty #if EXTENSIONTYPING && providerGeneratedAssemblies.IsEmpty #endif then (fun (ilxMainModule,_outfile) -> ilxMainModule) else (fun (ilxMainModule,outfile) -> ReportTime tcConfig "Find assembly references"; let dependentILModules = FindDependentILModulesForStaticLinking (tcConfig, tcImports,ilxMainModule) ReportTime tcConfig "Static link"; #if EXTENSIONTYPING Morphs.enablemorphCustomAttributeData() let providerGeneratedILModules = FindProviderGeneratedILModules (tcImports, providerGeneratedAssemblies) // Transform the ILTypeRefs references in the IL of all provider-generated assemblies so that the references // are now local. let providerGeneratedILModules = providerGeneratedILModules |> List.map (fun ((ccu,ilOrigScopeRef,ilModule),(_,localProvAssemStaticLinkInfo)) -> let ilAssemStaticLinkMap = dict [ for (_,(_,provAssemStaticLinkInfo)) in providerGeneratedILModules do for KeyValue(k,v) in provAssemStaticLinkInfo.ILTypeMap do yield (k,v) for KeyValue(k,v) in localProvAssemStaticLinkInfo.ILTypeMap do yield (ILTypeRef.Create(ILScopeRef.Local, k.Enclosing, k.Name), v) ] let ilModule = ilModule |> Morphs.morphILTypeRefsInILModuleMemoized ilGlobals (fun tref -> if debugStaticLinking then printfn "deciding whether to rewrite type ref %A" tref.QualifiedName let ok,v = ilAssemStaticLinkMap.TryGetValue tref if ok then if debugStaticLinking then printfn "rewriting type ref %A to %A" tref.QualifiedName v.QualifiedName v else tref) (ccu,ilOrigScopeRef,ilModule)) // Relocate provider generated type definitions into the expected shape for the [] declarations in an assembly let providerGeneratedILModules, ilxMainModule = // Build a dictionary of all remapped IL type defs let ilOrigTyRefsForProviderGeneratedTypesToRelocate = let rec walk acc (ProviderGeneratedType(ilOrigTyRef,_,xs) as node) = List.fold walk ((ilOrigTyRef,node)::acc) xs dict (Seq.fold walk [] tcImports.ProviderGeneratedTypeRoots) // Build a dictionary of all IL type defs, mapping ilOrigTyRef --> ilTypeDef let allTypeDefsInProviderGeneratedAssemblies = let rec loop ilOrigTyRef (ilTypeDef:ILTypeDef) = seq { yield (ilOrigTyRef,ilTypeDef); for ntdef in ilTypeDef.NestedTypes do yield! loop (mkILTyRefInTyRef (ilOrigTyRef, ntdef.Name)) ntdef } dict [ for (_ccu,ilOrigScopeRef,ilModule) in providerGeneratedILModules do for td in ilModule.TypeDefs do yield! loop (mkILTyRef (ilOrigScopeRef, td.Name)) td ] // Debugging output if debugStaticLinking then for (ProviderGeneratedType(ilOrigTyRef, _, _)) in tcImports.ProviderGeneratedTypeRoots do printfn "Have [] root '%s'" ilOrigTyRef.QualifiedName // Build the ILTypeDefs for generated types, starting with the roots let generatedILTypeDefs = let rec buildRelocatedGeneratedType (ProviderGeneratedType(ilOrigTyRef, ilTgtTyRef, ch)) = let isNested = ilTgtTyRef.Enclosing |> nonNil if allTypeDefsInProviderGeneratedAssemblies.ContainsKey ilOrigTyRef then let ilOrigTypeDef = allTypeDefsInProviderGeneratedAssemblies.[ilOrigTyRef] if debugStaticLinking then printfn "Relocating %s to %s " ilOrigTyRef.QualifiedName ilTgtTyRef.QualifiedName { ilOrigTypeDef with Name = ilTgtTyRef.Name Access = (match ilOrigTypeDef.Access with | ILTypeDefAccess.Public when isNested -> ILTypeDefAccess.Nested ILMemberAccess.Public | ILTypeDefAccess.Private when isNested -> ILTypeDefAccess.Nested ILMemberAccess.Assembly | x -> x) NestedTypes = mkILTypeDefs (List.map buildRelocatedGeneratedType ch) } else // If there is no matching IL type definition, then make a simple container class if debugStaticLinking then printfn "Generating simple class '%s' because we didn't find an original type '%s' in a provider generated assembly" ilTgtTyRef.QualifiedName ilOrigTyRef.QualifiedName mkILSimpleClass ilGlobals (ilTgtTyRef.Name, (if isNested then ILTypeDefAccess.Nested ILMemberAccess.Public else ILTypeDefAccess.Public), emptyILMethods, emptyILFields, mkILTypeDefs (List.map buildRelocatedGeneratedType ch) , emptyILProperties, emptyILEvents, emptyILCustomAttrs, ILTypeInit.OnAny) [ for (ProviderGeneratedType(_, ilTgtTyRef, _) as node) in tcImports.ProviderGeneratedTypeRoots do yield (ilTgtTyRef, buildRelocatedGeneratedType node) ] // Implant all the generated type definitions into the ilxMainModule (generating a new ilxMainModule) let ilxMainModule = /// Split the list into left, middle and right parts at the first element satisfying 'p'. If no element matches return /// 'None' for the middle part. let trySplitFind p xs = let rec loop xs acc = match xs with | [] -> List.rev acc, None, [] | h::t -> if p h then List.rev acc, Some h, t else loop t (h::acc) loop xs [] /// Implant the (nested) type definition 'td' at path 'enc' in 'tdefs'. let rec implantTypeDef isNested (tdefs: ILTypeDefs) (enc:string list) (td: ILTypeDef) = match enc with | [] -> addILTypeDef td tdefs | h::t -> let tdefs = tdefs.AsList let (ltdefs,htd,rtdefs) = match tdefs |> trySplitFind (fun td -> td.Name = h) with | (ltdefs,None,rtdefs) -> let fresh = mkILSimpleClass ilGlobals (h, (if isNested then ILTypeDefAccess.Nested ILMemberAccess.Public else ILTypeDefAccess.Public), emptyILMethods, emptyILFields, emptyILTypeDefs, emptyILProperties, emptyILEvents, emptyILCustomAttrs, ILTypeInit.OnAny) (ltdefs, fresh, rtdefs) | (ltdefs, Some htd, rtdefs) -> (ltdefs, htd, rtdefs) let htd = { htd with NestedTypes = implantTypeDef true htd.NestedTypes t td } mkILTypeDefs (ltdefs @ [htd] @ rtdefs) let newTypeDefs = (ilxMainModule.TypeDefs, generatedILTypeDefs) ||> List.fold (fun acc (ilTgtTyRef,td) -> if debugStaticLinking then printfn "implanting '%s' at '%s'" td.Name ilTgtTyRef.QualifiedName implantTypeDef false acc ilTgtTyRef.Enclosing td) { ilxMainModule with TypeDefs = newTypeDefs } // Remove any ILTypeDefs from the provider generated modules if they have been relocated because of a [] declaration. let providerGeneratedILModules = providerGeneratedILModules |> List.map (fun (ccu,ilOrigScopeRef,ilModule) -> let ilTypeDefsAfterRemovingRelocatedTypes = let rec rw enc (tdefs: ILTypeDefs) = mkILTypeDefs [ for tdef in tdefs do let ilOrigTyRef = mkILNestedTyRef (ilOrigScopeRef, enc, tdef.Name) if not (ilOrigTyRefsForProviderGeneratedTypesToRelocate.ContainsKey ilOrigTyRef) then if debugStaticLinking then printfn "Keep provided type %s in place because it wasn't relocated" ilOrigTyRef.QualifiedName yield { tdef with NestedTypes = rw (enc@[tdef.Name]) tdef.NestedTypes } ] rw [] ilModule.TypeDefs (ccu, { ilModule with TypeDefs = ilTypeDefsAfterRemovingRelocatedTypes })) providerGeneratedILModules, ilxMainModule Morphs.disablemorphCustomAttributeData() #else let providerGeneratedILModules = [] #endif // Glue all this stuff into ilxMainModule let ilxMainModule,rewriteExternalRefsToLocalRefs = StaticLinkILModules (tcConfig, ilGlobals, ilxMainModule, dependentILModules @ providerGeneratedILModules) // Rewrite type and assembly references let ilxMainModule = let rewriteAssemblyRefsToMatchLibraries = NormalizeAssemblyRefs tcImports Morphs.morphILTypeRefsInILModuleMemoized ilGlobals (Morphs.morphILScopeRefsInILTypeRef (rewriteExternalRefsToLocalRefs >> rewriteAssemblyRefsToMatchLibraries)) ilxMainModule #if DEBUG // Print it out if requested if tcConfig.writeGeneratedILFiles then (let _ = PrintModule (outpath outfile "ilx.main") ilxMainModule in ()); #else ignore outfile #endif ilxMainModule) //---------------------------------------------------------------------------- // EMIT IL //---------------------------------------------------------------------------- type SigningInfo = SigningInfo of (* delaysign:*) bool * (*signer:*) string option * (*container:*) string option module FileWriter = let EmitIL (tcConfig:TcConfig,ilGlobals,_errorLogger:ErrorLogger,outfile,pdbfile,ilxMainModule,signingInfo:SigningInfo,exiter:Exiter) = let (SigningInfo(delaysign,signer,container)) = signingInfo try #if DEBUG if tcConfig.writeGeneratedILFiles then dprintn "Printing module..."; if tcConfig.writeGeneratedILFiles then StaticLinker.PrintModule (outpath outfile "il.txt") ilxMainModule; #endif if !progress then dprintn "Writing assembly..."; try ILBinaryWriter.WriteILBinary outfile { mscorlib=ilGlobals.mscorlibScopeRef; pdbfile=pdbfile; emitTailcalls= tcConfig.emitTailcalls; showTimes=tcConfig.showTimes; signer = begin // REVIEW: favor the container over the key file - C# appears to do this if isSome container then Some(ILBinaryWriter.ILStrongNameSigner.OpenKeyContainer container.Value) else match signer with | None -> None | Some(s) -> try if delaysign then Some (ILBinaryWriter.ILStrongNameSigner.OpenPublicKeyFile s) else Some (ILBinaryWriter.ILStrongNameSigner.OpenKeyPairFile s) with e -> // Note:: don't use errorR here since we really want to fail and not produce a binary error(Error(FSComp.SR.fscKeyFileCouldNotBeOpened(s),rangeCmdArgs)) end; fixupOverlappingSequencePoints = false; dumpDebugInfo =tcConfig.dumpDebugInfo } ilxMainModule tcConfig.noDebugData with Failure msg -> error(Error(FSComp.SR.fscProblemWritingBinary(outfile,msg), rangeCmdArgs)) with e -> errorRecoveryNoRange e; exiter.Exit 1 let WriteStatsFile (tcConfig:TcConfig,outfile) = if tcConfig.stats then try use oc = new StreamWriter((outpath outfile "stats.txt"),append=false,encoding=Encoding.UTF8) :> TextWriter #if STATISTICS Ilread.report oc; #endif Ilxgen.ReportStatistics oc; with _ -> () let ValidateKeySigningAttributes (tcConfig : TcConfig) tcGlobals topAttrs = let delaySignAttrib = AttributeHelpers.TryFindBoolAttribute tcGlobals "System.Reflection.AssemblyDelaySignAttribute" topAttrs.assemblyAttrs let signerAttrib = AttributeHelpers.TryFindStringAttribute tcGlobals "System.Reflection.AssemblyKeyFileAttribute" topAttrs.assemblyAttrs let containerAttrib = AttributeHelpers.TryFindStringAttribute tcGlobals "System.Reflection.AssemblyKeyNameAttribute" topAttrs.assemblyAttrs // REVIEW: C# throws a warning when these attributes are used - should we? // if delaySign is set via an attribute, validate that it wasn't set via an option let delaysign = match delaySignAttrib with | Some delaysign -> if tcConfig.delaysign then warning(Error(FSComp.SR.fscDelaySignWarning(),rangeCmdArgs)) ; tcConfig.delaysign else delaysign | _ -> tcConfig.delaysign // if signer is set via an attribute, validate that it wasn't set via an option let signer = match signerAttrib with | Some signer -> if tcConfig.signer.IsSome && tcConfig.signer <> Some signer then warning(Error(FSComp.SR.fscKeyFileWarning(),rangeCmdArgs)) ; tcConfig.signer else Some signer | None -> tcConfig.signer // if container is set via an attribute, validate that it wasn't set via an option, and that they keyfile wasn't set // if keyfile was set, use that instead (silently) // REVIEW: This is C# behavior, but it seems kind of sketchy that we fail silently let container = match containerAttrib with | Some container -> if tcConfig.container.IsSome && tcConfig.container <> Some container then warning(Error(FSComp.SR.fscKeyNameWarning(),rangeCmdArgs)) ; tcConfig.container else Some container | None -> tcConfig.container SigningInfo (delaysign,signer,container) //---------------------------------------------------------------------------- // main - split up to make sure that we can GC the // dead data at the end of each phase. We explicitly communicate arguments // from one phase to the next. //----------------------------------------------------------------------------- [] type Args<'a> = Args of 'a let main1(argv,bannerAlreadyPrinted,exiter:Exiter,createErrorLogger) = // See Bug 735819 let lcidFromCodePage = #if SILVERLIGHT None #else if (System.Console.OutputEncoding.CodePage <> 65001) && (System.Console.OutputEncoding.CodePage <> System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage) && (System.Console.OutputEncoding.CodePage <> System.Threading.Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage) then System.Threading.Thread.CurrentThread.CurrentUICulture <- new System.Globalization.CultureInfo("en-US") Some(1033) else None #endif let tcGlobals,tcImports,frameworkTcImports,generatedCcu,typedAssembly,topAttrs,tcConfig,outfile,pdbfile,assemblyName,errorLogger = #if SILVERLIGHT let curDir = "." #else let curDir = Directory.GetCurrentDirectory() #endif getTcImportsFromCommandLine(None, argv, defaultFSharpBinariesDir, curDir, lcidFromCodePage, (fun tcConfigB -> #if SILVERLIGHT () #else match tcConfigB.lcid with | Some(n) -> System.Threading.Thread.CurrentThread.CurrentUICulture <- new System.Globalization.CultureInfo(n) | None -> () if tcConfigB.utf8output then let prev = System.Console.OutputEncoding System.Console.OutputEncoding <- Encoding.UTF8 System.AppDomain.CurrentDomain.ProcessExit.Add(fun _ -> System.Console.OutputEncoding <- prev) #endif ), (fun tcConfigB -> // display the banner text, if necessary if not bannerAlreadyPrinted then Microsoft.FSharp.Compiler.Fscopts.DisplayBannerText tcConfigB ), false, // optimizeForMemory - fsc.exe can use as much memory as it likes to try to compile as fast as possible exiter, createErrorLogger ) if tcConfig.typeCheckOnly then exiter.Exit 0 use unwindPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.CodeGen) let signingInfo = ValidateKeySigningAttributes tcConfig tcGlobals topAttrs abortOnError(errorLogger,exiter) // Build an updated errorLogger that filters according to the scopedPragmas. Then install // it as the updated global error logger and never remove it let oldLogger = errorLogger let errorLogger = let scopedPragmas = let (TAssembly(impls)) = typedAssembly [ for (TImplFile(_,pragmas,_,_,_)) in impls do yield! pragmas ] GetErrorLoggerFilteringByScopedPragmas(true,scopedPragmas,oldLogger) let _unwindEL_3 = PushErrorLoggerPhaseUntilUnwind(fun _ -> errorLogger) // Try to find an AssemblyVersion attribute let assemVerFromAttrib = match AttributeHelpers.TryFindVersionAttribute tcGlobals "System.Reflection.AssemblyVersionAttribute" topAttrs.assemblyAttrs with | Some v -> match tcConfig.version with | VersionNone -> Some v | _ -> warning(Error(FSComp.SR.fscAssemblyVersionAttributeIgnored(),Range.rangeStartup)); None | _ -> None // write interface, xmldoc begin ReportTime tcConfig ("Write Interface File"); use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Output) if tcConfig.printSignature then InterfaceFileWriter.WriteInterfaceFile (tcGlobals,tcConfig, InfoReader(tcGlobals,tcImports.GetImportMap()), typedAssembly); ReportTime tcConfig ("Write XML document signatures") if tcConfig.xmlDocOutputFile.IsSome then XmlDocWriter.computeXmlDocSigs (tcGlobals,generatedCcu) ReportTime tcConfig ("Write XML docs"); tcConfig.xmlDocOutputFile |> Option.iter (fun xmlFile -> XmlDocWriter.writeXmlDoc (assemblyName,generatedCcu,xmlFile)) ReportTime tcConfig ("Write HTML docs"); end; // Pass on only the minimimum information required for the next phase to ensure GC kicks in. // In principle the JIT should be able to do good liveness analysis to clean things up, but the // data structures involved here are so large we can't take the risk. Args(tcConfig,tcImports,frameworkTcImports,tcGlobals,errorLogger,generatedCcu,outfile,typedAssembly,topAttrs,pdbfile,assemblyName,assemVerFromAttrib,signingInfo,exiter) let main2(Args(tcConfig,tcImports,frameworkTcImports : TcImports,tcGlobals,errorLogger,generatedCcu:CcuThunk,outfile,typedAssembly,topAttrs,pdbfile,assemblyName,assemVerFromAttrib,signingInfo,exiter:Exiter)) = ReportTime tcConfig ("Encode Interface Data"); #if DEBUG if !verboseStamps then dprintf "---------------------- START MAKE EXPORT REMAPPING ------------\n"; #endif let exportRemapping = MakeExportRemapping generatedCcu generatedCcu.Contents #if DEBUG if !verboseStamps then dprintf "---------------------- END MAKE EXPORT REMAPPING ------------\n"; #endif let sigDataAttributes,sigDataResources = EncodeInterfaceData(tcConfig,tcGlobals,exportRemapping,generatedCcu,outfile,exiter) if !progress && tcConfig.optSettings.jitOptUser = Some false then dprintf "Note, optimizations are off.\n"; (* optimize *) use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Optimize) let optEnv0 = InitialOptimizationEnv tcImports tcGlobals let importMap = tcImports.GetImportMap() let metadataVersion = match tcConfig.metadataVersion with | Some(v) -> v | _ -> match (frameworkTcImports.DllTable.TryFind tcConfig.mscorlibAssemblyName) with | Some(ib) -> ib.RawMetadata.MetadataVersion | _ -> "" let optimizedImpls,optimizationData,_ = ApplyAllOptimizations (tcConfig, tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), outfile, importMap, false, optEnv0, generatedCcu, typedAssembly) abortOnError(errorLogger,exiter) ReportTime tcConfig ("Encoding OptData"); let generatedOptData = EncodeOptimizationData(tcGlobals,tcConfig,outfile,exportRemapping,(generatedCcu,optimizationData)) let sigDataResources, _optimizationData = if tcConfig.useSignatureDataFile then let bytes = [| yield! BinaryGenerationUtilities.i32 0x7846ce27 yield! BinaryGenerationUtilities.i32 (sigDataResources.Length + generatedOptData.Length) for r in (sigDataResources @ generatedOptData) do match r.Location with | ILResourceLocation.Local f -> let bytes = f() yield! BinaryGenerationUtilities.i32 bytes.Length yield! bytes | _ -> failwith "unreachable: expected a local resource" |] let sigDataFileName = (Filename.chopExtension outfile)+".fsdata" File.WriteAllBytes(sigDataFileName,bytes) [], [] else sigDataResources, generatedOptData // Pass on only the minimimum information required for the next phase to ensure GC kicks in. // In principle the JIT should be able to do good liveness analysis to clean things up, but the // data structures involved here are so large we can't take the risk. Args(tcConfig,tcImports,tcGlobals,errorLogger,generatedCcu,outfile,optimizedImpls,topAttrs,pdbfile,assemblyName, (sigDataAttributes, sigDataResources), generatedOptData,assemVerFromAttrib,signingInfo,metadataVersion,exiter) let mutable tcImportsCapture = None let mutable dynamicAssemblyCreator = None let main2b(Args(tcConfig:TcConfig,tcImports,tcGlobals,errorLogger,generatedCcu:CcuThunk,outfile,optimizedImpls,topAttrs,pdbfile,assemblyName,idata,generatedOptData,assemVerFromAttrib,signingInfo,metadataVersion,exiter:Exiter)) = match tcImportsCapture with | None -> () | Some f -> f tcImports // Compute a static linker. let ilGlobals = tcGlobals.ilg if tcConfig.standalone && generatedCcu.UsesQuotations then error(Error(FSComp.SR.fscQuotationLiteralsStaticLinking0(),rangeStartup)); let staticLinker = StaticLinker.StaticLink (tcConfig,tcImports,ilGlobals) ReportTime tcConfig "TAST -> ILX"; use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.IlxGen) let ilxGenerator = CreateIlxAssemblyGenerator (tcConfig,tcImports,tcGlobals, (LightweightTcValForUsingInBuildMethodCall tcGlobals), generatedCcu) // Check if System.SerializableAttribute exists in mscorlib.dll, // so that make sure the compiler only emits "serializable" bit into IL metadata when it is available. // Note that SerializableAttribute may be relocated in the future but now resides in mscorlib. let netFxHasSerializableAttribute = tcImports.SystemRuntimeContainsType "System.SerializableAttribute" let codegenResults = match dynamicAssemblyCreator with | None -> GenerateIlxCode (IlWriteBackend, false, false, tcConfig, topAttrs, optimizedImpls, generatedCcu.AssemblyName, netFxHasSerializableAttribute, ilxGenerator) | Some _ -> GenerateIlxCode (IlReflectBackend, true, false, tcConfig, topAttrs, optimizedImpls, generatedCcu.AssemblyName, netFxHasSerializableAttribute, ilxGenerator) let casApplied = new Dictionary() let securityAttrs,topAssemblyAttrs = topAttrs.assemblyAttrs |> List.partition (fun a -> TypeChecker.IsSecurityAttribute tcGlobals (tcImports.GetImportMap()) casApplied a rangeStartup) // remove any security attributes from the top-level assembly attribute list let topAttrs = {topAttrs with assemblyAttrs=topAssemblyAttrs} let permissionSets = ilxGenerator.CreatePermissionSets securityAttrs let secDecls = if securityAttrs.Length > 0 then mkILSecurityDecls permissionSets else emptyILSecurityDecls let ilxMainModule = MainModuleBuilder.CreateMainModule (tcConfig,tcGlobals,pdbfile,assemblyName,outfile,topAttrs,idata,generatedOptData,codegenResults,assemVerFromAttrib,metadataVersion,secDecls) #if DEBUG // Print code before bailing out from the compiler due to errors // in the backend of the compiler. The partially-generated // ILX code often contains useful information. if tcConfig.writeGeneratedILFiles then StaticLinker.PrintModule (outpath outfile "ilx.txt") ilxMainModule; #endif abortOnError(errorLogger,exiter) Args (tcConfig,errorLogger,staticLinker,ilGlobals,outfile,pdbfile,ilxMainModule,signingInfo,exiter) let main2c(Args(tcConfig,errorLogger,staticLinker,ilGlobals,outfile,pdbfile,ilxMainModule,signingInfo,exiter:Exiter)) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.IlGen) ReportTime tcConfig "ILX -> IL (Unions)"; let ilxMainModule = EraseIlxUnions.ConvModule ilGlobals ilxMainModule ReportTime tcConfig "ILX -> IL (Funcs)"; let ilxMainModule = EraseIlxFuncs.ConvModule ilGlobals ilxMainModule abortOnError(errorLogger,exiter) Args(tcConfig,errorLogger,staticLinker,ilGlobals,ilxMainModule,outfile,pdbfile,signingInfo,exiter) let main3(Args(tcConfig,errorLogger:ErrorLogger,staticLinker,ilGlobals,ilxMainModule,outfile,pdbfile,signingInfo,exiter:Exiter)) = let ilxMainModule = try staticLinker (ilxMainModule,outfile) with e -> errorRecoveryNoRange e; exiter.Exit 1 abortOnError(errorLogger,exiter) Args (tcConfig,errorLogger,ilGlobals,ilxMainModule,outfile,pdbfile,signingInfo,exiter) let main4(Args(tcConfig,errorLogger,ilGlobals,ilxMainModule,outfile,pdbfile,signingInfo,exiter)) = ReportTime tcConfig "Write .NET Binary" use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Output) let pdbfile = pdbfile |> Option.map FileSystem.GetFullPathShim match dynamicAssemblyCreator with | None -> FileWriter.EmitIL (tcConfig,ilGlobals,errorLogger,outfile,pdbfile,ilxMainModule,signingInfo,exiter) | Some da -> da (tcConfig,ilGlobals,errorLogger,outfile,pdbfile,ilxMainModule,signingInfo); ReportTime tcConfig "Write Stats File" FileWriter.WriteStatsFile (tcConfig,outfile) abortOnError(errorLogger,exiter) #if SILVERLIGHT #else if tcConfig.showLoadedAssemblies then for a in System.AppDomain.CurrentDomain.GetAssemblies() do dprintfn "%s" a.FullName #endif ReportTime tcConfig "Exiting" let mainCompile (argv,bannerAlreadyPrinted,exiter:Exiter,createErrorLogger) = // Don's note: "GC of intermediate data is really, really important here" main1 (argv,bannerAlreadyPrinted,exiter,createErrorLogger) |> main2 |> main2b |> main2c |> main3 |> main4 #endif //NO_COMPILER_BACKEND fsharp-3.0.34/src/fsharp/fsiattrs.fs0000775000175000017500000000134212260314606016336 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module Microsoft.FSharp.Compiler.Interactive.Attributes [] do() fsharp-3.0.34/src/fsharp/lowertop.fs0000775000175000017500000010470512260314606016361 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Lowertop open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.PrettyNaming //---------------------------------------------------------------------------- // Eta-expansion of calls to top-level-methods let InterceptExpr g cont expr = match expr with | Expr.Val(vref,flags,m) -> match vref.ValReprInfo with | Some arity -> Some (fst (AdjustValForExpectedArity g m vref flags arity)) | None -> None // App (Val v,tys,args) | Expr.App((Expr.Val (vref,flags,_) as f0),f0ty,tyargsl,argsl,m) -> // Only transform if necessary, i.e. there are not enough arguments match vref.ValReprInfo with | Some(topValInfo) -> let argsl = List.map cont argsl let f0 = if topValInfo.AritiesOfArgs.Length > argsl.Length then fst(AdjustValForExpectedArity g m vref flags topValInfo) else f0 Some (MakeApplicationAndBetaReduce g (f0,f0ty,[tyargsl],argsl,m)) | None -> None | Expr.App(f0,f0ty,tyargsl,argsl,m) -> Some (MakeApplicationAndBetaReduce g (f0,f0ty, [tyargsl],argsl,m) ) | _ -> None /// An "expr -> expr" pass that eta-expands under-applied values of /// known arity to lambda expressions and beta-var-reduces to bind /// any known arguments. The results are later optimized by the peephole /// optimizer in opt.fs let LowerImplFile g ass = RewriteImplFile { PreIntercept = Some(InterceptExpr g); PostTransform= (fun _ -> None); IsUnderQuotations=false } ass //---------------------------------------------------------------------------- // State machine compilation for sequence expressions let mkLambdaNoType g m uv e = mkLambda m uv (e,tyOfExpr g e) let mkUnitDelayLambda g m e = let uv,_ue = mkCompGenLocal m "unitVar" g.unit_ty mkLambdaNoType g m uv e let callNonOverloadedMethod g amap m methName ty args = match TryFindIntrinsicMethInfo (InfoReader(g,amap)) m AccessibleFromSomeFSharpCode methName ty with | [] -> error(InternalError("No method called '"^methName^"' was found",m)); | ILMeth(g,ilMethInfo,_) :: _ -> // REVIEW: consider if this should ever be a constrained call. At the moment typecheck limitations in the F# typechecker // ensure the enumerator type used within computation expressions is not a struct type BuildILMethInfoCall g amap m false ilMethInfo NormalValUse [] false args |> fst | _ -> error(InternalError("The method called '"^methName^"' resolved to a non-IL type",m)) type LoweredSeqFirstPhaseResult = { /// The code to run in the second phase, to rebuild the expressions, once all code labels and their mapping to program counters have been determined /// 'nextVar' is the argument variable for the GenerateNext method that represents the byref argument that holds the "goto" destination for a tailcalling sequence expression phase2 : ((* pc: *) ValRef * (* current: *) ValRef * (* nextVar: *) ValRef * Map -> Expr * Expr * Expr) /// The labels allocated for one portion of the sequence expression labels : int list /// any actual work done in Close significantClose : bool /// The state variables allocated for one portion of the sequence expression (i.e. the local let-bound variables which become state variables) stateVars: ValRef list } let isVarFreeInExpr v e = Zset.contains v (freeInExpr CollectTyparsAndLocals e).FreeLocals /// Analyze a TAST expression to detect the elaborated form of a sequence expression. /// Then compile it to a state machine represented as a TAST containing goto, return and label nodes. /// The returned state machine will also contain references to state variables (from internal 'let' bindings), /// a program counter (pc) that records the current state, and a current generated value (current). /// All these variables are then represented as fields in a hosting closure object along with any additional /// free variables of the sequence expression. /// /// The analysis is done in two phases. The first phase determines the state variables and state labels (as Abstract IL code labels). /// We then allocate an integer pc for each state label and proceed with the second phase, which builds two related state machine /// expressions: one for 'MoveNext' and one for 'Dispose'. let LowerSeqExpr g amap overallExpr = /// Detect a 'yield x' within a 'seq { ... }' let (|SeqYield|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,_tyargsl,[arg],m) when valRefEq g vref g.seq_singleton_vref -> Some (arg,m) | _ -> None /// Detect a 'expr; expr' within a 'seq { ... }' let (|SeqAppend|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,_tyargsl,[arg1;arg2],m) when valRefEq g vref g.seq_append_vref -> Some (arg1,arg2,m) | _ -> None /// Detect a 'while gd do expr' within a 'seq { ... }' let (|SeqWhile|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,_tyargsl,[Expr.Lambda(_,_,_,[dummyv],gd,_,_);arg2],m) when valRefEq g vref g.seq_generated_vref && not (isVarFreeInExpr dummyv gd) -> Some (gd,arg2,m) | _ -> None let (|SeqTryFinally|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,_tyargsl,[arg1;Expr.Lambda(_,_,_,[dummyv],compensation,_,_)],m) when valRefEq g vref g.seq_finally_vref && not (isVarFreeInExpr dummyv compensation) -> Some (arg1,compensation,m) | _ -> None let (|SeqUsing|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,[_;_;elemTy],[resource;Expr.Lambda(_,_,_,[v],body,_,_)],m) when valRefEq g vref g.seq_using_vref -> Some (resource,v,body,elemTy,m) | _ -> None let (|SeqFor|_|) expr = match expr with // Nested for loops are represented by calls to Seq.collect | Expr.App(Expr.Val (vref,_,_),_f0ty,[_inpElemTy;_enumty2;genElemTy],[Expr.Lambda(_,_,_,[v],body,_,_); inp],m) when valRefEq g vref g.seq_collect_vref -> Some (inp,v,body,genElemTy,m) // "for x in e -> e2" is converted to a call to Seq.map by the F# type checker. This could be removed, except it is also visible in F# quotations. | Expr.App(Expr.Val (vref,_,_),_f0ty,[_inpElemTy;genElemTy],[Expr.Lambda(_,_,_,[v],body,_,_); inp],m) when valRefEq g vref g.seq_map_vref -> Some (inp,v,mkCallSeqSingleton g body.Range genElemTy body,genElemTy,m) | _ -> None let (|SeqDelay|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,[elemTy],[Expr.Lambda(_,_,_,[v],e,_,_)],_m) when valRefEq g vref g.seq_delay_vref && not (isVarFreeInExpr v e) -> Some (e,elemTy) | _ -> None let (|SeqEmpty|_|) expr = match expr with | Expr.App(Expr.Val (vref,_,_),_f0ty,_tyargsl,[],m) when valRefEq g vref g.seq_empty_vref -> Some (m) | _ -> None let (|Seq|_|) expr = match expr with // use 'seq { ... }' as an indicator | Expr.App(Expr.Val (vref,_,_),_f0ty,[elemTy],[e],_m) when valRefEq g vref g.seq_vref -> Some (e,elemTy) | _ -> None let rec Lower isWholeExpr isTailCall // is this sequence in tailcall position? noDisposeContinuationLabel // represents the label for the code where there is effectively nothig to do to dispose the iterator for the current state currentDisposeContinuationLabel // represents the label for the code we have to run to dispose the iterator given the current state expr = match expr with | SeqYield(e,m) -> // printfn "found Seq.singleton" //this.pc <- NEXT; //curr <- e; //return true; //NEXT: let label = IL.generateCodeLabel() Some { phase2 = (fun (pcv,currv,_nextv,pcMap) -> let generate = mkCompGenSequential m (mkValSet m pcv (mkInt32 g m pcMap.[label])) (mkSequential SequencePointsAtSeq m (mkValSet m currv e) (mkCompGenSequential m (Expr.Op(TOp.Return,[],[mkOne g m],m)) (Expr.Op(TOp.Label label,[],[],m)))) let dispose = mkCompGenSequential m (Expr.Op(TOp.Label label,[],[],m)) (Expr.Op(TOp.Goto currentDisposeContinuationLabel,[],[],m)) let checkDispose = mkCompGenSequential m (Expr.Op(TOp.Label label,[],[],m)) (Expr.Op(TOp.Return,[],[mkBool g m (not (noDisposeContinuationLabel = currentDisposeContinuationLabel))],m)) generate,dispose,checkDispose); labels=[label]; stateVars=[]; significantClose = false } | SeqDelay(e,_elemTy) -> // printfn "found Seq.delay" Lower isWholeExpr isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel e // note, using 'isWholeExpr' here prevents 'seq { yield! e }' and 'seq { 0 .. 1000 }' from being compiled | SeqAppend(e1,e2,m) -> // printfn "found Seq.append" match Lower false false noDisposeContinuationLabel currentDisposeContinuationLabel e1, Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel e2 with | Some res1, Some res2 -> Some { phase2 = (fun ctxt -> let generate1,dispose1,checkDispose1 = res1.phase2 ctxt let generate2,dispose2,checkDispose2 = res2.phase2 ctxt let generate = mkCompGenSequential m generate1 generate2 // Order shouldn't matter here, since disposals actions are linked together by goto's (each ends in a goto). // However leaving as is for now. let dispose = mkCompGenSequential m dispose2 dispose1 let checkDispose = mkCompGenSequential m checkDispose2 checkDispose1 generate,dispose,checkDispose); labels= res1.labels @ res2.labels; stateVars = res1.stateVars @ res2.stateVars significantClose = res1.significantClose || res2.significantClose } | _ -> None | SeqWhile(e1,e2,m) -> // printfn "found Seq.while" match Lower false false noDisposeContinuationLabel currentDisposeContinuationLabel e2 with | Some res2 -> Some { phase2 = (fun ctxt -> let generate2,dispose2,checkDispose2 = res2.phase2 ctxt let generate = mkWhile g (SequencePointAtWhileLoop e1.Range,NoSpecialWhileLoopMarker,e1,generate2,m) let dispose = dispose2 let checkDispose = checkDispose2 generate,dispose,checkDispose); labels = res2.labels; stateVars = res2.stateVars significantClose = res2.significantClose } | _ -> None | SeqUsing(resource,v,body,elemTy,m) -> // printfn "found Seq.using" Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel (mkLet (SequencePointAtBinding body.Range) m v resource (mkCallSeqFinally g m elemTy body (mkUnitDelayLambda g m (mkCallDispose g m v.Type (exprForVal m v))))) | SeqFor(inp,v,body,genElemTy,m) -> // printfn "found Seq.for" let inpElemTy = v.Type let inpEnumTy = mkIEnumeratorTy g inpElemTy let enumv, enume = mkCompGenLocal m "enum" inpEnumTy // [[ use enum = inp.GetEnumerator() // while enum.MoveNext() do // let v = enum.Current // body ]] Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel (mkCallSeqUsing g m inpEnumTy genElemTy (callNonOverloadedMethod g amap m "GetEnumerator" (mkSeqTy g inpElemTy) [inp]) (mkLambdaNoType g m enumv (mkCallSeqGenerated g m genElemTy (mkUnitDelayLambda g m (callNonOverloadedMethod g amap m "MoveNext" inpEnumTy [enume])) (mkInvisibleLet m v (callNonOverloadedMethod g amap m "get_Current" inpEnumTy [enume]) body)))) | SeqTryFinally(e1,compensation,m) -> // printfn "found Seq.try/finally" let innerDisposeContinuationLabel = IL.generateCodeLabel() match Lower false false noDisposeContinuationLabel innerDisposeContinuationLabel e1 with | Some res1 -> Some { phase2 = (fun ((pcv,_currv,_,pcMap) as ctxt) -> let generate1,dispose1,checkDispose1 = res1.phase2 ctxt let generate = // copy the compensation expression - one copy for the success continuation and one for the exception let compensation = copyExpr g CloneAllAndMarkExprValsAsCompilerGenerated compensation mkCompGenSequential m // set the PC to the inner finally, so that if an exception happens we run the right finally (mkCompGenSequential m (mkValSet m pcv (mkInt32 g m pcMap.[innerDisposeContinuationLabel])) generate1 ) // set the PC past the try/finally before trying to run it, to make sure we only run it once (mkCompGenSequential m (Expr.Op(TOp.Label innerDisposeContinuationLabel,[],[],m)) (mkCompGenSequential m (mkValSet m pcv (mkInt32 g m pcMap.[currentDisposeContinuationLabel])) compensation)) let dispose = // generate inner try/finallys, then outer try/finallys mkCompGenSequential m dispose1 // set the PC past the try/finally before trying to run it, to make sure we only run it once (mkCompGenSequential m (Expr.Op(TOp.Label innerDisposeContinuationLabel,[],[],m)) (mkCompGenSequential m (mkValSet m pcv (mkInt32 g m pcMap.[currentDisposeContinuationLabel])) (mkCompGenSequential m compensation (Expr.Op(TOp.Goto currentDisposeContinuationLabel,[],[],m))))) let checkDispose = mkCompGenSequential m checkDispose1 (mkCompGenSequential m (Expr.Op(TOp.Label innerDisposeContinuationLabel,[],[],m)) (Expr.Op(TOp.Return,[],[mkTrue g m (* yes, we must dispose!!! *) ],m))) generate,dispose,checkDispose); labels = innerDisposeContinuationLabel :: res1.labels; stateVars = res1.stateVars significantClose = true } | _ -> None | SeqEmpty m -> // printfn "found Seq.empty" Some { phase2 = (fun _ -> let generate = mkUnit g m let dispose = Expr.Op(TOp.Goto currentDisposeContinuationLabel,[],[],m) let checkDispose = Expr.Op(TOp.Goto currentDisposeContinuationLabel,[],[],m) generate,dispose,checkDispose); labels = [] stateVars = [] significantClose = false } | Expr.Sequential(x1,x2,NormalSeq,ty,m) -> match Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel x2 with | Some res2-> // printfn "found sequential execution" Some { res2 with phase2 = (fun ctxt -> let generate2,dispose2,checkDispose2 = res2.phase2 ctxt let generate = Expr.Sequential(x1,generate2,NormalSeq,ty,m) let dispose = dispose2 let checkDispose = checkDispose2 generate,dispose,checkDispose) } | None -> None | Expr.Let(bind,e2,m,_) // Restriction: compilation of sequence expressions containing non-toplevel constrained generic functions is not supported when not bind.Var.IsCompiledAsTopLevel && not (IsGenericValWithGenericContraints g bind.Var) -> match Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel e2 with | Some res2 -> if bind.Var.IsCompiledAsTopLevel then // printfn "found top level let " Some { res2 with phase2 = (fun ctxt -> let generate2,dispose2,checkDispose2 = res2.phase2 ctxt let generate = mkLetBind m bind generate2 let dispose = dispose2 let checkDispose = checkDispose2 generate,dispose, checkDispose) } else // printfn "found state variable %s" bind.Var.DisplayName let (TBind(v,e,sp)) = bind let sp,spm = match sp with | SequencePointAtBinding m -> SequencePointsAtSeq,m | _ -> SuppressSequencePointOnExprOfSequential,e.Range let vref = mkLocalValRef v Some { res2 with phase2 = (fun ctxt -> let generate2,dispose2,checkDispose2 = res2.phase2 ctxt let generate = mkCompGenSequential m (mkSequential sp m (mkValSet spm vref e) generate2) // zero out the current value to free up its memory (mkValSet m vref (mkDefault (m,vref.Type))) let dispose = dispose2 let checkDispose = checkDispose2 generate,dispose,checkDispose); stateVars = vref::res2.stateVars } | None -> None | Expr.Match (spBind,exprm,pt,targets,m,ty) when targets |> Array.forall (fun (TTarget(vs,_e,_spTarget)) -> FlatList.isEmpty vs) -> // lower all the targets. abandon if any fail to lower let tgl = targets |> Array.map (fun (TTarget(_vs,e,_spTarget)) -> Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel e) |> Array.toList // LIMITATION: non-trivial pattern matches involving or-patterns or active patterns where bindings can't be // transferred to the r.h.s. are not yet compiled. if tgl |> List.forall isSome then let tgl = List.map Option.get tgl let labs = tgl |> List.collect (fun res -> res.labels) let stateVars = tgl |> List.collect (fun res -> res.stateVars) let significantClose = tgl |> List.exists (fun res -> res.significantClose) Some { phase2 = (fun ctxt -> let gtgs,disposals,checkDisposes = (Array.toList targets,tgl) ||> List.map2 (fun (TTarget(vs,_,spTarget)) res -> let generate,dispose,checkDispose = res.phase2 ctxt let gtg = TTarget(vs,generate,spTarget) gtg,dispose,checkDispose) |> List.unzip3 let generate = primMkMatch (spBind,exprm,pt,Array.ofList gtgs,m,ty) let dispose = if isNil disposals then mkUnit g m else List.reduce (mkCompGenSequential m) disposals let checkDispose = if isNil checkDisposes then mkFalse g m else List.reduce (mkCompGenSequential m) checkDisposes generate,dispose,checkDispose); labels=labs; stateVars = stateVars significantClose = significantClose } else None // yield! e ---> (for x in e -> x) // // Design choice: we compile 'yield! e' as 'for x in e do yield x'. // // Note, however, this leads to a loss of tailcalls: the case not // handled correctly yet is sequence expressions that use yield! in the last position // This can give rise to infinite iterator chains when implemented by the naive expansion to // “for x in e yield e”. For example consider this: // // let rec rwalk x = { yield x; // yield! rwalk (x + rand()) } // // This is the moral equivalent of a tailcall optimization. These also don’t compile well // in the C# compilation model | arbitrarySeqExpr -> let m = arbitrarySeqExpr.Range if isWholeExpr then // printfn "FAILED - not worth compiling an unrecognized immediate yield! %s " (stringOfRange m) None else let tyConfirmsToSeq g ty = isAppTy g ty && tyconRefEq g (tcrefOfAppTy g ty) g.tcref_System_Collections_Generic_IEnumerable match SearchEntireHierarchyOfType (tyConfirmsToSeq g) g amap m (tyOfExpr g arbitrarySeqExpr) with | None -> // printfn "FAILED - yield! did not yield a sequence! %s" (stringOfRange m) None | Some ty -> // printfn "found yield!" let inpElemTy = List.head (argsOfAppTy g ty) if isTailCall then //this.pc <- NEXT; //nextEnumerator <- e; //return 2; //NEXT: let label = IL.generateCodeLabel() Some { phase2 = (fun (pcv,_currv,nextv,pcMap) -> let generate = mkCompGenSequential m (mkValSet m pcv (mkInt32 g m pcMap.[label])) (mkSequential SequencePointsAtSeq m (mkAddrSet m nextv arbitrarySeqExpr) (mkCompGenSequential m (Expr.Op(TOp.Return,[],[mkTwo g m],m)) (Expr.Op(TOp.Label label,[],[],m)))) let dispose = mkCompGenSequential m (Expr.Op(TOp.Label label,[],[],m)) (Expr.Op(TOp.Goto currentDisposeContinuationLabel,[],[],m)) let checkDispose = mkCompGenSequential m (Expr.Op(TOp.Label label,[],[],m)) (Expr.Op(TOp.Return,[],[mkFalse g m],m)) generate,dispose,checkDispose); labels=[label] stateVars=[] significantClose = false } else let v,ve = mkCompGenLocal m "v" inpElemTy Lower false isTailCall noDisposeContinuationLabel currentDisposeContinuationLabel (mkCallSeqCollect g m inpElemTy inpElemTy (mkLambdaNoType g m v (mkCallSeqSingleton g m inpElemTy ve)) arbitrarySeqExpr) match overallExpr with | Seq(e,ty) -> // printfn "found seq { ... } or Seq.delay (fun () -> ...) in FSharp.Core.dll" let m = e.Range let initLabel = IL.generateCodeLabel() let noDisposeContinuationLabel = IL.generateCodeLabel() match Lower true true noDisposeContinuationLabel noDisposeContinuationLabel e with | Some res -> let labs = res.labels let stateVars = res.stateVars // printfn "successfully lowered, found %d state variables and %d labels!" stateVars.Length labs.Length let pcv,pce = mkMutableCompGenLocal m "pc" g.int32_ty let currv,_curre = mkMutableCompGenLocal m "current" ty let nextv,_nexte = mkMutableCompGenLocal m "next" (mkByrefTy g (mkSeqTy g ty)) let nextvref = mkLocalValRef nextv let pcvref = mkLocalValRef pcv let currvref = mkLocalValRef currv let pcs = labs |> List.mapi (fun i _ -> i + 1) let pcDone = labs.Length + 1 let pcInit = 0 let pc2lab = Map.ofList ((pcInit,initLabel) :: (pcDone,noDisposeContinuationLabel) :: List.zip pcs labs) let lab2pc = Map.ofList ((initLabel,pcInit) :: (noDisposeContinuationLabel,pcDone) :: List.zip labs pcs) let stateMachineExpr,disposalExpr, checkDisposeExpr = res.phase2 (pcvref,currvref,nextvref,lab2pc) // Add on the final 'return false' to indicate the iteration is complete let stateMachineExpr = mkCompGenSequential m stateMachineExpr (mkCompGenSequential m // set the pc to "finished" (mkValSet m pcvref (mkInt32 g m pcDone)) (mkCompGenSequential m (Expr.Op(TOp.Label noDisposeContinuationLabel,[],[],m)) (mkCompGenSequential m // zero out the current value to free up its memory (mkValSet m currvref (mkDefault (m,currvref.Type))) (Expr.Op(TOp.Return,[],[mkZero g m],m))))) let checkDisposeExpr = mkCompGenSequential m checkDisposeExpr (mkCompGenSequential m (Expr.Op(TOp.Label noDisposeContinuationLabel,[],[],m)) (Expr.Op(TOp.Return,[],[mkFalse g m],m))) let addJumpTable isDisposal expr = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m ) let mkGotoLabelTarget lab = mbuilder.AddResultTarget(Expr.Op(TOp.Goto lab,[],[],m),SuppressSequencePointAtTarget) let dtree = TDSwitch(pce, [ // no disposal action for the initial state (pc = 0) if isDisposal then yield mkCase(Test.Const(Const.Int32 pcInit),mkGotoLabelTarget noDisposeContinuationLabel) for pc in pcs do yield mkCase(Test.Const(Const.Int32 pc),mkGotoLabelTarget pc2lab.[pc]) yield mkCase(Test.Const(Const.Int32 pcDone),mkGotoLabelTarget noDisposeContinuationLabel) ], Some(mkGotoLabelTarget pc2lab.[pcInit]), m) let table = mbuilder.Close(dtree,m,g.int_ty) mkCompGenSequential m table (mkCompGenSequential m (Expr.Op(TOp.Label initLabel,[],[],m)) expr) let handleExeceptionsInDispose disposalExpr = // let mutable exn : exn = null // while(this.pc <> END_STATE) do // try // ``disposalExpr'' // with e -> exn <- e // if exn <> null then raise exn let exnV,exnE = mkMutableCompGenLocal m "exn" g.exn_ty let exnVref = mkLocalValRef exnV let startLabel = IL.generateCodeLabel() let doneLabel = IL.generateCodeLabel () // try ``disposalExpr'' with e -> exn <- e let eV,eE = mkLocal m "e" g.exn_ty let efV,_ = mkLocal m "ef" g.exn_ty let assignToExn = Expr.Op(TOp.LValueOp(LValueOperation.LSet,exnVref),[],[eE],m) let exceptionCatcher = mkTryWith g (disposalExpr, efV, Expr.Const((Const.Bool true), m, g.bool_ty), eV, assignToExn, m, g.unit_ty, NoSequencePointAtTry, NoSequencePointAtWith) // while(this.pc != END_STATE) let whileLoop = let mbuilder = new MatchBuilder(NoSequencePointAtInvisibleBinding,m) let addResultTarget e = mbuilder.AddResultTarget(e, SuppressSequencePointAtTarget) let dtree = TDSwitch(pce, [ mkCase((Test.Const(Const.Int32 pcDone)), addResultTarget (Expr.Op(TOp.Goto doneLabel, [], [], m)) ) ], Some (addResultTarget (mkUnit g m)), m) let pcIsEndStateComparison = mbuilder.Close(dtree,m,g.unit_ty) mkCompGenSequential m (Expr.Op((TOp.Label startLabel),[],[],m)) (mkCompGenSequential m pcIsEndStateComparison (mkCompGenSequential m exceptionCatcher (mkCompGenSequential m (Expr.Op((TOp.Goto startLabel),[],[],m)) (Expr.Op((TOp.Label doneLabel),[],[],m)) ) ) ) // if exn != null then raise exn let doRaise = mkNonNullCond g m g.unit_ty exnE (mkThrow m g.unit_ty exnE) (Expr.Const(Const.Unit, m, g.unit_ty)) mkLet NoSequencePointAtLetBinding m exnV (Expr.Const(Const.Zero, m,g.exn_ty)) (mkCompGenSequential m whileLoop doRaise) let stateMachineExprWithJumpTable = addJumpTable false stateMachineExpr let disposalExpr = if res.significantClose then let disposalExpr = mkCompGenSequential m disposalExpr (mkCompGenSequential m (Expr.Op(TOp.Label noDisposeContinuationLabel,[],[],m)) (mkCompGenSequential m // set the pc to "finished" (mkValSet m pcvref (mkInt32 g m pcDone)) // zero out the current value to free up its memory (mkValSet m currvref (mkDefault (m,currvref.Type))))) disposalExpr |> addJumpTable true |> handleExeceptionsInDispose else (mkValSet m pcvref (mkInt32 g m pcDone)) let checkDisposeExprWithJumpTable = addJumpTable true checkDisposeExpr // all done, no return the results Some (nextvref, pcvref,currvref,stateVars,stateMachineExprWithJumpTable,disposalExpr,checkDisposeExprWithJumpTable,ty,m) | None -> // printfn "FAILED: no compilation found! %s" (stringOfRange m) None | _ -> None fsharp-3.0.34/src/fsharp/fsiaux.fs0000775000175000017500000001357212260314606016006 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Compiler.Interactive open System open System.Diagnostics open System.Threading [] [] do() type IEventLoop = abstract Run : unit -> bool abstract Invoke : (unit -> 'T) -> 'T abstract ScheduleRestart : unit -> unit // An implementation of IEventLoop suitable for the command-line console [] type internal SimpleEventLoop() = let runSignal = new AutoResetEvent(false) let exitSignal = new AutoResetEvent(false) let doneSignal = new AutoResetEvent(false) let queue = ref ([] : (unit -> obj) list) let result = ref (None : obj option) let setSignal(signal : AutoResetEvent) = while not (signal.Set()) do Thread.Sleep(1); done let waitSignal signal = WaitHandle.WaitAll([| (signal :> WaitHandle) |]) |> ignore let waitSignal2 signal1 signal2 = WaitHandle.WaitAny([| (signal1 :> WaitHandle); (signal2 :> WaitHandle) |]) let running = ref false let restart = ref false interface IEventLoop with member x.Run() = running := true; let rec run() = match waitSignal2 runSignal exitSignal with | 0 -> !queue |> List.iter (fun f -> result := try Some(f()) with _ -> None); setSignal doneSignal; run() | 1 -> running := false; !restart | _ -> run() run(); member x.Invoke(f : unit -> 'T) : 'T = queue := [f >> box]; setSignal runSignal; waitSignal doneSignal !result |> Option.get |> unbox member x.ScheduleRestart() = // nb. very minor race condition here on running here, but totally // unproblematic as ScheduleRestart and Exit are almost never called. if !running then restart := true; setSignal exitSignal interface System.IDisposable with member x.Dispose() = runSignal.Close(); exitSignal.Close(); doneSignal.Close(); [] type InteractiveSession() = let mutable evLoop = (new SimpleEventLoop() :> IEventLoop) let mutable showIDictionary = true let mutable showDeclarationValues = true let mutable args = #if SILVERLIGHT [|"fsi.exe"|] #else System.Environment.GetCommandLineArgs() #endif let mutable fpfmt = "g10" let mutable fp = (System.Globalization.CultureInfo.InvariantCulture :> System.IFormatProvider) let mutable printWidth = 78 let mutable printDepth = 100 let mutable printLength = 100 let mutable printSize = 10000 let mutable showIEnumerable = true let mutable showProperties = true let mutable addedPrinters = [] member self.FloatingPointFormat with get() = fpfmt and set v = fpfmt <- v member self.FormatProvider with get() = fp and set v = fp <- v member self.PrintWidth with get() = printWidth and set v = printWidth <- v member self.PrintDepth with get() = printDepth and set v = printDepth <- v member self.PrintLength with get() = printLength and set v = printLength <- v member self.PrintSize with get() = printSize and set v = printSize <- v member self.ShowDeclarationValues with get() = showDeclarationValues and set v = showDeclarationValues <- v member self.ShowProperties with get() = showProperties and set v = showProperties <- v member self.ShowIEnumerable with get() = showIEnumerable and set v = showIEnumerable <- v member self.ShowIDictionary with get() = showIDictionary and set v = showIDictionary <- v member self.AddedPrinters with get() = addedPrinters and set v = addedPrinters <- v [] member self.CommandLineArgs with get() = args and set v = args <- v member self.AddPrinter(printer : 'T -> string) = addedPrinters <- Choice1Of2 (typeof<'T>, (fun (x:obj) -> printer (unbox x))) :: addedPrinters member self.EventLoop with get () = evLoop and set (x:IEventLoop) = evLoop.ScheduleRestart(); evLoop <- x member self.AddPrintTransformer(printer : 'T -> obj) = addedPrinters <- Choice2Of2 (typeof<'T>, (fun (x:obj) -> printer (unbox x))) :: addedPrinters #if SILVERLIGHT #else [] do() #endif module Settings = let fsi = new InteractiveSession() #if SILVERLIGHT #else [] do() #endif module RuntimeHelpers = open System open System.Reflection let internal savedIt = ref (typeof,box 0) let SaveIt (x:'T) = (savedIt := (typeof<'T>, box x)) let internal GetSavedIt () = snd !savedIt let internal GetSavedItType () = fst !savedIt #if SILVERLIGHT let GetSimpleEventLoop() = new SimpleEventLoop() :> IEventLoop #endif fsharp-3.0.34/src/fsharp/FSharp.Compiler/0000775000175000017500000000000012260314606017076 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler/Makefile.in0000664000175000017500000001163612260314606021152 0ustar chrischrisNAME=FSharp.Compiler ASSEMBLY = $(NAME).dll TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:library DEFINES += \ --define:COMPILER \ --define:INCLUDE_METADATA_READER \ --define:INCLUDE_METADATA_WRITER DEFINES_4_0 += \ --define:EXTENSIONTYPING REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:$(monogacdirXX)/System.Drawing.dll \ -r:$(monogacdirXX)/System.Windows.Forms.dll sources = \ $(tmpdir)FSComp.fs \ ../../assemblyinfo/assemblyinfo.FSharp.Compiler.dll.fs \ ../../utils/sformat.fsi \ ../../utils/sformat.fs \ ../sr.fsi \ ../sr.fs \ ../../utils/prim-lexing.fsi \ ../../utils/prim-lexing.fs \ ../../utils/prim-parsing.fsi \ ../../utils/prim-parsing.fs \ ../../utils/resizearray.fsi \ ../../utils/resizearray.fs \ ../../utils/HashMultiMap.fsi \ ../../utils/HashMultiMap.fs \ ../../utils/TaggedCollections.fsi \ ../../utils/TaggedCollections.fs \ ../FlatList.fs \ ../../absil/illib.fs \ ../../utils/filename.fsi \ ../../utils/filename.fs \ ../../absil/zmap.fsi \ ../../absil/zmap.fs \ ../../absil/zset.fsi \ ../../absil/zset.fs \ ../../absil/bytes.fsi \ ../../absil/bytes.fs \ ../../absil/ildiag.fsi \ ../../absil/ildiag.fs \ ../ReferenceResolution.fs \ ../../absil/il.fsi \ ../../absil/il.fs \ ../../absil/ilx.fsi \ ../../absil/ilx.fs \ ../../absil/ilascii.fsi \ ../../absil/ilascii.fs \ ../../absil/ilprint.fsi \ ../../absil/ilprint.fs \ ../../absil/ilmorph.fsi \ ../../absil/ilmorph.fs \ ../../absil/ilsupp.fsi \ ../../absil/ilsupp.fs \ $(tmpdir)ilpars.fs \ $(tmpdir)illex.fs \ ../../absil/ilbinary.fsi \ ../../absil/ilbinary.fs \ ../lib.fs \ ../range.fsi \ ../range.fs \ ../ErrorLogger.fs \ ../tainted.fsi \ ../tainted.fs \ ../InternalCollections.fsi \ ../InternalCollections.fs \ ../../absil/ilread.fsi \ ../../absil/ilread.fs \ ../../absil/ilwrite.fsi \ ../../absil/ilwrite.fs \ ../../absil/ilreflect.fs \ ../../utils/CompilerLocationUtils.fs \ ../PrettyNaming.fs \ ../../ilx/ilxsettings.fs \ ../../ilx/pubclo.fsi \ ../../ilx/pubclo.fs \ ../../ilx/cu_erase.fsi \ ../../ilx/cu_erase.fs \ ../InternalFileSystemUtils.fsi \ ../InternalFileSystemUtils.fs \ ../unilex.fsi \ ../unilex.fs \ ../layout.fsi \ ../layout.fs \ ../ast.fs \ ../est.fsi \ ../est.fs \ $(tmpdir)pars.fs \ ../lexhelp.fsi \ ../lexhelp.fs \ $(tmpdir)lex.fs \ ../sreflect.fsi \ ../sreflect.fs \ ../QueueList.fs \ ../tast.fs \ ../env.fs \ ../tastops.fsi \ ../tastops.fs \ ../pickle.fsi \ ../pickle.fs \ ../lexfilter.fs \ ../import.fsi \ ../import.fs \ ../infos.fs \ ../NicePrint.fs \ ../augment.fsi \ ../augment.fs \ ../typrelns.fs \ ../patcompile.fsi \ ../patcompile.fs \ ../outcome.fsi \ ../outcome.fs \ ../csolve.fsi \ ../csolve.fs \ ../formats.fsi \ ../formats.fs \ ../nameres.fsi \ ../nameres.fs \ ../unsolved.fs \ ../creflect.fsi \ ../creflect.fs \ ../check.fsi \ ../check.fs \ ../tc.fsi \ ../tc.fs \ ../opt.fsi \ ../opt.fs \ ../detuple.fsi \ ../detuple.fs \ ../tlr.fsi \ ../tlr.fs \ ../lowertop.fs \ ../ilxgen.fsi \ ../ilxgen.fs \ ../TraceCall.fs \ ../build.fsi \ ../build.fs \ ../fscopts.fsi \ ../fscopts.fs \ ../vs/IncrementalBuild.fsi \ ../vs/IncrementalBuild.fs \ ../vs/Reactor.fsi \ ../vs/Reactor.fs \ ../vs/ServiceLexing.fsi \ ../vs/ServiceLexing.fs \ ../vs/ServiceConstants.fs \ ../vs/ServiceParseTreeWalk.fs \ ../vs/ServiceNavigation.fsi \ ../vs/ServiceNavigation.fs \ ../vs/ServiceParamInfoLocations.fsi \ ../vs/ServiceParamInfoLocations.fs \ ../vs/ServiceUntypedParse.fsi \ ../vs/ServiceUntypedParse.fs \ ../vs/ServiceDeclarations.fsi \ ../vs/ServiceDeclarations.fs \ ../vs/service.fsi \ ../vs/service.fs \ ../fsc.fs RESOURCES= \ $(tmpdir)FSStrings.resources \ $(tmpdir)FSComp.resources $(tmpdir)FSComp.fs $(tmpdir)FSComp.resources: ../FSComp.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSComp.fs $(tmpdir)FSComp.resx resgen $(tmpdir)FSComp.resx $(tmpdir)FSComp.resources $(tmpdir)FSStrings.resources: ../FSStrings.resx resgen $< $@ $(tmpdir)lex.fs: ../lex.fsl mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode $(tmpdir)illex.fs: ../../absil/illex.fsl mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode $(tmpdir)pars.fs: ../pars.fsy mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --open Microsoft.FSharp.Compiler --module Microsoft.FSharp.Compiler.Parser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time" $(tmpdir)ilpars.fs: ../../absil/ilpars.fsy mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time" include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-lib-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/FSharp.Compiler/FSharp.Compiler.fsproj0000664000175000017500000004127612260314606023271 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug AnyCPU Library FSharp.Compiler EXTENSIONTYPING;COMPILER;INCLUDE_METADATA_READER;INCLUDE_METADATA_WRITER;EXTENSIBLE_DUMPER;TYPE_PROVIDER_SECURITY;$(DefineConstants) $(NoWarn);44;62;9 {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} true 0x06800000 $(OtherFlags) /warnon:1182 FSComp.txt FSStrings.resx assemblyinfo.FSharp.Compiler.dll.fs --lexlib Internal.Utilities.Text.Lexing lex.fsl --lexlib Internal.Utilities.Text.Lexing illex.fsl Microsoft.FSharp.Compiler.Parser Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing pars.fsy Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser Microsoft.FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing ilpars.fsy ExtensibleDumper.fsi ExtensibleDumper.fs sformat.fsi sformat.fs sr.fsi sr.fs prim-lexing.fsi prim-lexing.fs prim-parsing.fsi prim-parsing.fs resizearray.fsi resizearray.fs HashMultiMap.fsi HashMultiMap.fs TaggedCollections.fsi TaggedCollections.fs FlatList.fs illib.fs filename.fsi filename.fs zmap.fsi zmap.fs zset.fsi zset.fs bytes.fsi bytes.fs ildiag.fsi ildiag.fs ReferenceResolution.fs il.fsi il.fs ilx.fsi ilx.fs ilascii.fsi ilascii.fs ilprint.fsi ilprint.fs ilmorph.fsi ilmorph.fs ilsupp.fsi ilsupp.fs ilbinary.fsi ilbinary.fs lib.fs range.fsi range.fs ErrorLogger.fs tainted.fsi tainted.fs InternalCollections.fsi InternalCollections.fs ilread.fsi ilread.fs ilwrite.fsi ilwrite.fs ilreflect.fs CompilerLocationUtils.fs PrettyNaming.fs ilxsettings.fs pubclo.fsi pubclo.fs cu_erase.fsi cu_erase.fs InternalFileSystemUtils.fsi InternalFileSystemUtils.fs unilex.fsi unilex.fs layout.fsi layout.fs ast.fs est.fsi est.fs lexhelp.fsi lexhelp.fs sreflect.fsi sreflect.fs QueueList.fs tast.fs env.fs tastops.fsi tastops.fs pickle.fsi pickle.fs lexfilter.fs import.fsi import.fs infos.fs NicePrint.fs augment.fsi augment.fs outcome.fsi outcome.fs nameres.fsi nameres.fs typrelns.fs patcompile.fsi patcompile.fs csolve.fsi csolve.fs formats.fsi formats.fs unsolved.fs creflect.fsi creflect.fs check.fsi check.fs tc.fsi tc.fs opt.fsi opt.fs detuple.fsi detuple.fs tlr.fsi tlr.fs lowertop.fs ilxgen.fsi ilxgen.fs TraceCall.fsi TraceCall.fs build.fsi build.fs fscopts.fsi fscopts.fs IncrementalBuild.fsi IncrementalBuild.fs fsc.fs Reactor.fsi Reactor.fs ServiceLexing.fsi ServiceLexing.fs ServiceConstants.fs ServiceParseTreeWalk.fs ServiceNavigation.fsi ServiceNavigation.fs ServiceParamInfoLocations.fsi ServiceParamInfoLocations.fs ServiceUntypedParse.fsi ServiceUntypedParse.fs ServiceDeclarations.fsi ServiceDeclarations.fs service.fsi service.fs SimpleServices.fs {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/range.fs0000775000175000017500000002424112260314606015576 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Anything to do with special names of identifiers and other lexical rules module (* internal *) Microsoft.FSharp.Compiler.Range open System.IO open System.Collections.Generic open Microsoft.FSharp.Core.Printf open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Lib.Bits type FileIndex = int32 [] let columnBitCount = 9 [] let lineBitCount = 16 let posBitCount = lineBitCount + columnBitCount let _ = assert (posBitCount <= 32) let posColumnMask = mask32 0 columnBitCount let lineColumnMask = mask32 columnBitCount lineBitCount let inline (lsr) (x:int) (y:int) = int32 (uint32 x >>> y) [] [] type pos(code:int32) = new (l,c) = let l = max 0 l let c = max 0 c let p = ( c &&& posColumnMask) ||| ((l <<< columnBitCount) &&& lineColumnMask) pos p member p.Line = (code lsr columnBitCount) member p.Column = (code &&& posColumnMask) member r.Encoding = code static member EncodingSize = posBitCount static member Decode (code:int32) : pos = pos code override p.Equals(obj) = match obj with :? pos as p2 -> code = p2.Encoding | _ -> false override p.GetHashCode() = hash code [] let fileIndexBitCount = 14 [] let startLineBitCount = lineBitCount [] let startColumnBitCount = columnBitCount [] let heightBitCount = 15 // If necessary, could probably deduct one or two bits here without ill effect. [] let endColumnBitCount = columnBitCount [] let isSyntheticBitCount = 1 #if DEBUG let _ = assert (fileIndexBitCount + startLineBitCount + startColumnBitCount + heightBitCount + endColumnBitCount + isSyntheticBitCount = 64) #endif [] let fileIndexShift = 0 [] let startLineShift = 14 [] let startColumnShift = 30 [] let heightShift = 39 [] let endColumnShift = 54 [] let isSyntheticShift = 63 [] let fileIndexMask = 0b0000000000000000000000000000000000000000000000000011111111111111L [] let startLineMask = 0b0000000000000000000000000000000000111111111111111100000000000000L [] let startColumnMask = 0b0000000000000000000000000111111111000000000000000000000000000000L [] let heightMask = 0b0000000000111111111111111000000000000000000000000000000000000000L [] let endColumnMask = 0b0111111111000000000000000000000000000000000000000000000000000000L [] let isSyntheticMask = 0b1000000000000000000000000000000000000000000000000000000000000000L #if DEBUG let _ = assert (startLineShift = fileIndexShift + fileIndexBitCount) let _ = assert (startColumnShift = startLineShift + startLineBitCount) let _ = assert (heightShift = startColumnShift + startColumnBitCount) let _ = assert (endColumnShift = heightShift + heightBitCount) let _ = assert (isSyntheticShift = endColumnShift + endColumnBitCount) let _ = assert (fileIndexMask = mask64 0 fileIndexBitCount) let _ = assert (startLineMask = mask64 startLineShift startLineBitCount) let _ = assert (startColumnMask = mask64 startColumnShift startColumnBitCount) let _ = assert (heightMask = mask64 heightShift heightBitCount) let _ = assert (endColumnMask = mask64 endColumnShift endColumnBitCount) let _ = assert (isSyntheticMask = mask64 isSyntheticShift isSyntheticBitCount) #endif // This is just a standard unique-index table type FileIndexTable() = let indexToFileTable = new ResizeArray<_>(11) let fileToIndexTable = new Dictionary(11) member t.FileToIndex f = let mutable res = 0 let ok = fileToIndexTable.TryGetValue(f,&res) if ok then res else lock fileToIndexTable (fun () -> let mutable res = 0 in let ok = fileToIndexTable.TryGetValue(f,&res) in if ok then res else let n = indexToFileTable.Count in indexToFileTable.Add(f) fileToIndexTable.[f] <- n n) member t.IndexToFile n = (if n < 0 then failwithf "fileOfFileIndex: negative argument: n = %d\n" n) (if n >= indexToFileTable.Count then failwithf "fileOfFileIndex: invalid argument: n = %d\n" n) indexToFileTable.[n] let maxFileIndex = pown32 fileIndexBitCount // ++GLOBAL MUTBALE STATE // WARNING: Global Mutable State, holding a mapping between integers and filenames let fileIndexTable = new FileIndexTable() // Note if we exceed the maximum number of files we'll start to report incorrect file names let fileIndexOfFile f = fileIndexTable.FileToIndex(f) % maxFileIndex let fileOfFileIndex n = fileIndexTable.IndexToFile(n) let mkPos l c = pos (l,c) [] [] type range(code:int64) = static member Zero = range(0L) new (fidx,bl,bc,el,ec) = range( int64 fidx ||| (int64 bl <<< startLineShift) ||| (int64 bc <<< startColumnShift) ||| (int64 (el-bl) <<< heightShift) ||| (int64 ec <<< endColumnShift) ) new (fidx, b:pos, e:pos) = range(fidx,b.Line,b.Column,e.Line,e.Column) member r.StartLine = int32((code &&& startLineMask) >>> startLineShift) member r.StartColumn = int32((code &&& startColumnMask) >>> startColumnShift) member r.EndLine = int32((code &&& heightMask) >>> heightShift) + r.StartLine member r.EndColumn = int32((code &&& endColumnMask) >>> endColumnShift) member r.IsSynthetic = int32((code &&& isSyntheticMask) >>> isSyntheticShift) <> 0 member r.Start = pos (r.StartLine, r.StartColumn) member r.End = pos (r.EndLine, r.EndColumn) member r.FileIndex = int32(code &&& fileIndexMask) member m.StartRange = range (m.FileIndex, m.Start, m.Start) member m.EndRange = range (m.FileIndex, m.End, m.End) member r.FileName = fileOfFileIndex r.FileIndex member r.MakeSynthetic() = range(code ||| isSyntheticMask) override r.ToString() = sprintf "%s (%d,%d--%d,%d) IsSynthetic=%b" r.FileName r.StartLine r.StartColumn r.EndLine r.EndColumn r.IsSynthetic member r.ToShortString() = sprintf "(%d,%d--%d,%d)" r.StartLine r.StartColumn r.EndLine r.EndColumn member r.Code = code override r.Equals(obj) = match obj with :? range as r2 -> code = r2.Code | _ -> false override r.GetHashCode() = hash code let mkRange f b e = range (fileIndexOfFile f, b, e) let mkFileIndexRange fi b e = range (fi, b, e) (* end representation, start derived ops *) let posOrder = Order.orderOn (fun (p:pos) -> p.Line, p.Column) (Pair.order (Int32.order,Int32.order)) (* rangeOrder: not a total order, but enough to sort on ranges *) let rangeOrder = Order.orderOn (fun (r:range) -> r.FileName, r.Start) (Pair.order (String.order,posOrder)) let outputPos (os:TextWriter) (m:pos) = fprintf os "(%d,%d)" m.Line m.Column let outputRange (os:TextWriter) (m:range) = fprintf os "%s%a-%a" m.FileName outputPos m.Start outputPos m.End let boutputPos os (m:pos) = bprintf os "(%d,%d)" m.Line m.Column let boutputRange os (m:range) = bprintf os "%s%a-%a" m.FileName boutputPos m.Start boutputPos m.End let posGt (p1:pos) (p2:pos) = (p1.Line > p2.Line || (p1.Line = p2.Line && p1.Column > p2.Column)) let posEq (p1:pos) (p2:pos) = (p1.Line = p2.Line && p1.Column = p2.Column) let posGeq p1 p2 = posEq p1 p2 || posGt p1 p2 let posLt p1 p2 = posGt p2 p1 // Note, this is deliberately written in an allocation-free way, i.e. m1.Start, m1.End etc. are not called let unionRanges (m1:range) (m2:range) = if m1.FileIndex <> m2.FileIndex then m2 else let b = if (m1.StartLine > m2.StartLine || (m1.StartLine = m2.StartLine && m1.StartColumn > m2.StartColumn)) then m2 else m1 let e = if (m1.EndLine > m2.EndLine || (m1.EndLine = m2.EndLine && m1.EndColumn > m2.EndColumn)) then m1 else m2 range (m1.FileIndex, b.StartLine, b.StartColumn, e.EndLine, e.EndColumn) let rangeContainsRange (m1:range) (m2:range) = m1.FileIndex = m2.FileIndex && posGeq m2.Start m1.Start && posGeq m1.End m2.End let rangeContainsPos (m1:range) p = posGeq p m1.Start && posGeq m1.End p let rangeBeforePos (m1:range) p = posGeq p m1.End let rangeN filename line = mkRange filename (mkPos line 0) (mkPos line 80) let pos0 = mkPos 1 0 let range0 = rangeN "unknown" 1 let rangeStartup = rangeN "startup" 1 let rangeCmdArgs = rangeN "commandLineArgs" 0 let trimRangeToLine (r:range) = let startL,startC = r.StartLine,r.StartColumn let endL ,_endC = r.EndLine,r.EndColumn if endL <= startL then r else let endL,endC = startL+1,0 (* Trim to the start of the next line (we do not know the end of the current line) *) range (r.FileIndex, startL, startC, endL, endC) (* For Diagnostics *) let stringOfPos (pos:pos) = sprintf "(%d,%d)" pos.Line pos.Column let stringOfRange (r:range) = sprintf "%s%s-%s" r.FileName (stringOfPos r.Start) (stringOfPos r.End) module Pos = // Visual Studio uses line counts starting at 0, F# uses them starting at 1 let fromVS line idx = mkPos (line+1) idx let toVS (p:pos) = (p.Line - 1, p.Column) module Range = let toVS (m:range) = Pos.toVS m.Start, Pos.toVS m.End fsharp-3.0.34/src/fsharp/tainted.fsi0000775000175000017500000001212412260314606016300 0ustar chrischrisnamespace Microsoft.FSharp.Compiler #if EXTENSIONTYPING open System open System.Reflection open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.AbstractIL.IL /// Stores and transports aggregated list of errors reported by the type provider type internal TypeProviderError = inherit System.Exception /// creates new instance of TypeProviderError that represents one error new : (int * string) * string * range -> TypeProviderError /// creates new instance of TypeProviderError that represents collection of errors new : int * string * range * seq -> TypeProviderError member Number : int member Range : range member ContextualErrorMessage : string /// creates new instance of TypeProviderError with specified type\method names member WithContext : string * string -> TypeProviderError /// creates new instance of TypeProviderError based on current instance information(message) member MapText : (string -> int * string) * string * range -> TypeProviderError /// provides uniform way to process aggregated errors member Iter : (TypeProviderError -> unit) -> unit /// This struct wraps a value produced by a type provider to properly attribute any failures. [] type internal Tainted<'T> = /// Create an initial tainted value static member CreateAll : (ITypeProvider * ILScopeRef) list -> Tainted list /// A type provider that produced the value member TypeProvider : Tainted /// Test to report for the name of the type provider that produced the value member TypeProviderDesignation : string /// The ILScopeRef of the runtime assembly reference for type provider that produced the value member TypeProviderAssemblyRef : ILScopeRef /// Apply an operation. Any exception will be attributed to the type provider with an error located at the given range member PApply : ('T -> 'U) * range:range -> Tainted<'U> /// Apply an operation. Any exception will be attributed to the type provider with an error located at the given range member PApply2 : ('T -> 'U1 * 'U2) * range:range -> Tainted<'U1> * Tainted<'U2> /// Apply an operation. Any exception will be attributed to the type provider with an error located at the given range member PApply3 : ('T -> 'U1 * 'U2 * 'U3) * range:range -> Tainted<'U1> * Tainted<'U2> * Tainted<'U3> /// Apply an operation. Any exception will be attributed to the type provider with an error located at the given range member PApply4 : ('T -> 'U1 * 'U2 * 'U3 * 'U4) * range:range -> Tainted<'U1> * Tainted<'U2> * Tainted<'U3> * Tainted<'U4> /// Apply an operation. No exception may be raised by 'f' member PApplyNoFailure : f: ('T -> 'U) -> Tainted<'U> /// Apply an operation. Any exception will be attributed to the type provider with an error located at the given range member PApplyWithProvider : ('T * ITypeProvider -> 'U) * range:range -> Tainted<'U> /// Apply an operation that returns an array. Unwrap array. Any exception will be attributed to the type provider with an error located at the given range. String is method name of thing-returning-array, to diagnostically attribute if it is null member PApplyArray : ('T -> 'U[]) * string * range:range -> Tainted<'U>[] /// Apply an operation that returns an option. Unwrap option. Any exception will be attributed to the type provider with an error located at the given range member PApplyOption : ('T -> 'U option) * range:range -> Tainted<'U> option /// Apply an operation and 'untaint' the result. The result must be marshalable. Any exception will be attributed to the type provider with an error located at the given range member PUntaint : ('T -> 'U) * range:range -> 'U /// Apply an operation and 'untaint' the result. This can be used if the return type /// is guaranteed not to be implemented by a type provider member PUntaintNoFailure : ('T -> 'U) -> 'U /// Conditionally coerce the value member OfType<'U> : unit -> Tainted<'U> option /// Assert that the value is of 'U and coerce the value. /// If corecion fails, the failuer will be blamed on a type provider member Coerce<'U> : range:range -> Tainted<'U> [] module internal Tainted = /// Test whether the tainted value is null val (|Null|_|) : Tainted<'T> -> unit option when 'T : null /// Test whether the tainted value equals given value. /// Failure in call to equality operation will be blamed on type provider of first operand val Eq : Tainted<'T> -> 'T -> bool when 'T : equality /// Test whether the tainted value equals given value. Type providers are ignored (equal tainted values produced by different type providers are equal) /// Failure in call to equality operation will be blamed on type provider of first operand val EqTainted : Tainted<'T> -> Tainted<'T> -> bool when 'T : equality and 'T : not struct /// Compute the hash value for the tainted value val GetHashCodeTainted : Tainted<'T> -> int when 'T : equality #endif fsharp-3.0.34/src/fsharp/infos.fs0000775000175000017500000046715612260314606015640 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// tinfos, minfos, finfos, pinfos - summaries of information for references /// to .NET and F# constructs. module internal Microsoft.FSharp.Compiler.Infos open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Core.Printf #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping open Microsoft.FSharp.Core.CompilerServices #endif //------------------------------------------------------------------------- // From IL types to F# types //------------------------------------------------------------------------- /// importInst gives the context for interpreting type variables let ImportType scoref amap m importInst ilty = ilty |> rescopeILType scoref |> Import.ImportILType amap m importInst //------------------------------------------------------------------------- // Fold the hierarchy. // REVIEW: this code generalizes the iteration used below for member lookup. //------------------------------------------------------------------------- let isExnDeclTy g typ = isAppTy g typ && (tcrefOfAppTy g typ).IsExceptionDecl let GetSuperTypeOfType g amap m typ = #if EXTENSIONTYPING let typ = (if isAppTy g typ && (tcrefOfAppTy g typ).IsProvided then stripTyEqns g typ else stripTyEqnsAndMeasureEqns g typ) #else let typ = stripTyEqns g typ #endif match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType let superOpt = st.PApplyOption((fun st -> match st.BaseType with null -> None | t -> Some t),m) match superOpt with | None -> None | Some super -> Some(Import.ImportProvidedType amap m super) #endif | ILTypeMetadata (scoref,tdef) -> let _,tinst = destAppTy g typ match tdef.Extends with | None -> None | Some ilty -> Some (ImportType scoref amap m tinst ilty) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> if isFSharpObjModelTy g typ || isExnDeclTy g typ then let tcref,_tinst = destAppTy g typ Some (instType (mkInstForAppTy g typ) (superOfTycon g tcref.Deref)) elif isArrayTy g typ then Some g.system_Array_typ elif isRefTy g typ && not (isObjTy g typ) then Some g.obj_ty elif isTupleStructTy g typ then Some g.obj_ty else None let mkSystemCollectionsGenericIListTy g ty = TType_app(g.tcref_System_Collections_Generic_IList,[ty]) /// Collect the set of interface types supported by an F# type let rec GetImmediateInterfacesOfType g amap m typ = let itys = if isAppTy g typ then let tcref,tinst = destAppTy g typ if tcref.IsMeasureableReprTycon then [ match tcref.TypeReprInfo with | TMeasureableRepr reprTy -> for ity in GetImmediateInterfacesOfType g amap m reprTy do if isAppTy g ity then let itcref = tcrefOfAppTy g ity if not (tyconRefEq g itcref g.system_GenericIComparable_tcref) && not (tyconRefEq g itcref g.system_GenericIEquatable_tcref) then yield ity | _ -> () yield mkAppTy g.system_GenericIComparable_tcref [typ]; yield mkAppTy g.system_GenericIEquatable_tcref [typ]] else match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> [ for ity in info.ProvidedType.PApplyArray((fun st -> st.GetInterfaces()), "GetInterfaces", m) do yield Import.ImportProvidedType amap m ity ] #endif | ILTypeMetadata (scoref,tdef) -> tdef.Implements |> ILList.toList |> List.map (ImportType scoref amap m tinst) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> tcref.ImmediateInterfaceTypesOfFSharpTycon |> List.map (instType (mkInstForAppTy g typ)) else [] // .NET array types are considered to implement IList let itys = if isArray1DTy g typ then mkSystemCollectionsGenericIListTy g (destArrayTy g typ) :: itys else itys itys [] /// Indicates whether we should visit multiple instantiations of the same generic interface or not type AllowMultiIntfInstantiations = Yes | No /// Traverse the type hierarchy, e.g. f D (f C (f System.Object acc)). /// Visit base types and interfaces first. let private FoldHierarchyOfTypeAux followInterfaces allowMultiIntfInst visitor g amap m typ acc = let rec loop ndeep typ ((visitedTycon,visited:TyconRefMultiMap<_>,acc) as state) = let seenThisTycon = isAppTy g typ && Set.contains (tcrefOfAppTy g typ).Stamp visitedTycon // Do not visit the same type twice. Could only be doing this if we've seen this tycon if seenThisTycon && List.exists (typeEquiv g typ) (visited.Find (tcrefOfAppTy g typ)) then state else // Do not visit the same tycon twice, e.g. I and I, collect I only, unless directed to allow this if seenThisTycon && allowMultiIntfInst = AllowMultiIntfInstantiations.No then state else let state = if isAppTy g typ then let tcref = tcrefOfAppTy g typ let visitedTycon = Set.add tcref.Stamp visitedTycon visitedTycon, visited.Add (tcref,typ), acc else state if ndeep > 100 then (errorR(Error((FSComp.SR.recursiveClassHierarchy (showType typ)),m)); (visitedTycon,visited,acc)) else let visitedTycon,visited,acc = if isInterfaceTy g typ then List.foldBack (loop (ndeep+1)) (GetImmediateInterfacesOfType g amap m typ) (loop ndeep g.obj_ty state) elif isTyparTy g typ then let tp = destTyparTy g typ let state = loop (ndeep+1) g.obj_ty state List.foldBack (fun x vacc -> match x with | TyparConstraint.MayResolveMember _ | TyparConstraint.DefaultsTo _ | TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _ | TyparConstraint.IsEnum _ | TyparConstraint.IsDelegate _ | TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _ | TyparConstraint.IsReferenceType _ | TyparConstraint.SimpleChoice _ | TyparConstraint.RequiresDefaultConstructor _ -> vacc | TyparConstraint.CoercesTo(cty,_) -> loop (ndeep + 1) cty vacc) tp.Constraints state else let state = if followInterfaces then List.foldBack (loop (ndeep+1)) (GetImmediateInterfacesOfType g amap m typ) state else state let state = Option.foldBack (loop (ndeep+1)) (GetSuperTypeOfType g amap m typ) state state let acc = visitor typ acc (visitedTycon,visited,acc) loop 0 typ (Set.empty,TyconRefMultiMap<_>.Empty,acc) |> p33 /// Fold, do not follow interfaces let FoldPrimaryHierarchyOfType f g amap m allowMultiIntfInst typ acc = FoldHierarchyOfTypeAux false allowMultiIntfInst f g amap m typ acc /// Fold, following interfaces let FoldEntireHierarchyOfType f g amap m allowMultiIntfInst typ acc = FoldHierarchyOfTypeAux true allowMultiIntfInst f g amap m typ acc /// Iterate, following interfaces let IterateEntireHierarchyOfType f g amap m allowMultiIntfInst typ = FoldHierarchyOfTypeAux true allowMultiIntfInst (fun ty () -> f ty) g amap m typ () /// Search for one element satisfying a predicate, following interfaces let ExistsInEntireHierarchyOfType f g amap m allowMultiIntfInst typ = FoldHierarchyOfTypeAux true allowMultiIntfInst (fun ty acc -> acc || f ty ) g amap m typ false /// Search for one element where a function returns a 'Some' result, following interfaces let SearchEntireHierarchyOfType f g amap m typ = FoldHierarchyOfTypeAux true AllowMultiIntfInstantiations.No (fun ty acc -> match acc with | None -> if f ty then Some(ty) else None | Some _ -> acc) g amap m typ None /// Get all super types of the type, including the type itself let AllSuperTypesOfType g amap m allowMultiIntfInst ty = FoldHierarchyOfTypeAux true allowMultiIntfInst (ListSet.insert (typeEquiv g)) g amap m ty [] /// Get all interfaces of a type, including the type itself if it is an interface let AllInterfacesOfType g amap m allowMultiIntfInst ty = AllSuperTypesOfType g amap m allowMultiIntfInst ty |> List.filter (isInterfaceTy g) /// Check if two types have the same nominal head type let HaveSameHeadType g ty1 ty2 = isAppTy g ty1 && isAppTy g ty2 && tyconRefEq g (tcrefOfAppTy g ty1) (tcrefOfAppTy g ty2) /// Check if a type has a particular head type let HasHeadType g tcref ty2 = isAppTy g ty2 && tyconRefEq g tcref (tcrefOfAppTy g ty2) /// Check if a type exists somewhere in the hierarchy which has the same head type as the given type (note, the given type need not have a head type at all) let ExistsSameHeadTypeInHierarchy g amap m typeToSearchFrom typeToLookFor = ExistsInEntireHierarchyOfType (HaveSameHeadType g typeToLookFor) g amap m AllowMultiIntfInstantiations.No typeToSearchFrom /// Check if a type exists somewhere in the hierarchy which has the given head type. let ExistsHeadTypeInEntireHierarchy g amap m typeToSearchFrom tcrefToLookFor = ExistsInEntireHierarchyOfType (HasHeadType g tcrefToLookFor) g amap m AllowMultiIntfInstantiations.No typeToSearchFrom /// Read an Abstract IL type from metadata and convert to an F# type. let ImportTypeFromMetadata amap m scoref tinst minst ilty = ImportType scoref amap m (tinst@minst) ilty /// Get the return type of an IL method, taking into account instantiations for type and method generic parameters, and /// translating 'void' to 'None'. let ImportReturnTypeFromMetaData amap m ty scoref tinst minst = match ty with | ILType.Void -> None | retTy -> Some (ImportTypeFromMetadata amap m scoref tinst minst retTy) /// Copy constraints. If the constraint comes from a type parameter associated /// with a type constructor then we are simply renaming type variables. If it comes /// from a generic method in a generic class (e.g. typ.M<_>) then we may be both substituting the /// instantiation associated with 'typ' as well as copying the type parameters associated with /// M and instantiating their constraints /// /// Note: this now looks identical to constraint instantiation. let CopyTyparConstraints m tprefInst (tporig:Typar) = tporig.Constraints |> List.map (fun tpc -> match tpc with | TyparConstraint.CoercesTo(ty,_) -> TyparConstraint.CoercesTo (instType tprefInst ty,m) | TyparConstraint.DefaultsTo(priority,ty,_) -> TyparConstraint.DefaultsTo (priority,instType tprefInst ty,m) | TyparConstraint.SupportsNull _ -> TyparConstraint.SupportsNull m | TyparConstraint.IsEnum (uty,_) -> TyparConstraint.IsEnum (instType tprefInst uty,m) | TyparConstraint.SupportsComparison _ -> TyparConstraint.SupportsComparison m | TyparConstraint.SupportsEquality _ -> TyparConstraint.SupportsEquality m | TyparConstraint.IsDelegate(aty, bty,_) -> TyparConstraint.IsDelegate (instType tprefInst aty,instType tprefInst bty,m) | TyparConstraint.IsNonNullableStruct _ -> TyparConstraint.IsNonNullableStruct m | TyparConstraint.IsUnmanaged _ -> TyparConstraint.IsUnmanaged m | TyparConstraint.IsReferenceType _ -> TyparConstraint.IsReferenceType m | TyparConstraint.SimpleChoice (tys,_) -> TyparConstraint.SimpleChoice (List.map (instType tprefInst) tys,m) | TyparConstraint.RequiresDefaultConstructor _ -> TyparConstraint.RequiresDefaultConstructor m | TyparConstraint.MayResolveMember(traitInfo,_) -> TyparConstraint.MayResolveMember (instTrait tprefInst traitInfo,m)) /// The constraints for each typar copied from another typar can only be fixed up once /// we have generated all the new constraints, e.g. f List, B :> List> ... let FixupNewTypars m (formalEnclosingTypars:Typars) (tinst: TType list) (tpsorig: Typars) (tps: Typars) = // Checks.. These are defensive programming against early reported errors. let n0 = formalEnclosingTypars.Length let n1 = tinst.Length let n2 = tpsorig.Length let n3 = tps.Length if n0 <> n1 then error(Error((FSComp.SR.tcInvalidTypeArgumentCount(n0,n1)),m)); if n2 <> n3 then error(Error((FSComp.SR.tcInvalidTypeArgumentCount(n2,n3)),m)); // The real code.. let renaming,tptys = mkTyparToTyparRenaming tpsorig tps let tprefInst = mkTyparInst formalEnclosingTypars tinst @ renaming (tpsorig,tps) ||> List.iter2 (fun tporig tp -> tp.FixupConstraints (CopyTyparConstraints m tprefInst tporig)) ; renaming,tptys //------------------------------------------------------------------------- // Predicates and properties on values and members /// Check if an F#-declared member value is a virtual method let MemberRefIsVirtual (vref:ValRef) = let flags = vref.MemberInfo.Value.MemberFlags flags.IsDispatchSlot || flags.IsOverrideOrExplicitImpl /// Check if an F#-declared member value is an 'override' or explicit member implementation // REVIEW: We should not need the notion of "DefiniteFSharpOverride" at all // REVIEW: MemberRefIsVirtual (vref:ValRef) = IsDispatchSlot || IsOverrideOrExplicitImpl. // So not IsDispatchSlot implies IsOverrideOrExplicitImpl // Q: why is this not "flags.IsOverrideOrExplicitImpl"? // Q: could an override (with nonNil membInfo.ImplementedSlotSigs) ever have flags.IsOverrideOrExplicitImpl = false? let private MemberRefIsDefiniteFSharpOverride (vref:ValRef) = let membInfo = vref.MemberInfo.Value let flags = membInfo.MemberFlags not flags.IsDispatchSlot && (flags.IsOverrideOrExplicitImpl || nonNil membInfo.ImplementedSlotSigs) /// Check if an F#-declared member value is a dispatch slot let MemberRefIsDispatchSlot (vref:ValRef) = let membInfo = vref.MemberInfo.Value membInfo.MemberFlags.IsDispatchSlot type ValRef with /// Indicates if an F#-declared function or member value is a CLIEvent property compiled as a .NET event member x.IsFSharpEventProperty g = x.IsMember && CompileAsEvent g x.Attribs && not x.IsExtensionMember //------------------------------------------------------------------------- // ILTypeInfo /// Describes an F# use of an IL type, including the type instantiation associated with the type at a particular usage point. [] type ILTypeInfo = /// ILTypeInfo (tyconRef, ilTypeRef, typeArgs, ilTypeDef). | ILTypeInfo of TyconRef * ILTypeRef * TypeInst * ILTypeDef member x.TyconRef = let (ILTypeInfo(tcref,_,_,_)) = x in tcref member x.ILTypeRef = let (ILTypeInfo(_,tref,_,_)) = x in tref member x.TypeInst = let (ILTypeInfo(_,_,tinst,_)) = x in tinst member x.RawMetadata = let (ILTypeInfo(_,_,_,tdef)) = x in tdef member x.ToType = TType_app(x.TyconRef,x.TypeInst) member x.ILScopeRef = x.ILTypeRef.Scope member x.Name = x.ILTypeRef.Name member x.IsValueType = x.RawMetadata.IsStructOrEnum member x.Instantiate inst = let (ILTypeInfo(tcref,tref,tinst,tdef)) = x ILTypeInfo(tcref,tref,instTypes inst tinst,tdef) member x.FormalTypars m = x.TyconRef.Typars m static member FromType g ty = if isILAppTy g ty then let tcref,tinst = destAppTy g ty let scoref,enc,tdef = tcref.ILTyconInfo let tref = mkRefForNestedILTypeDef scoref (enc,tdef) ILTypeInfo(tcref,tref,tinst,tdef) else failwith "ILTypeInfo.FromType" //------------------------------------------------------------------------- // ParamNameAndType, ParamData [] type ParamNameAndType = ParamNameAndType of string option * TType let ParamNameAndTypeOfArgInfo (ty,argInfo : ArgReprInfo) = ParamNameAndType(Option.map textOfId argInfo.Name, ty) let ParamNameAndTypesOfMember g vref = ArgInfosOfMember g vref |> List.mapSquared ParamNameAndTypeOfArgInfo let InstParamNameAndType inst (ParamNameAndType(nm,ty)) = ParamNameAndType(nm, instType inst ty) let InstParamNameAndTypes inst paramTypes = paramTypes |> List.mapSquared (InstParamNameAndType inst) /// The caller-side value for the optional arg, is any type OptionalArgCallerSideValue = | Constant of IL.ILFieldInit | DefaultValue | MissingValue | WrapperForIDispatch | WrapperForIUnknown | PassByRef of TType * OptionalArgCallerSideValue type OptionalArgInfo = /// The argument is not optional | NotOptional /// The argument is optional, and is an F# callee-side optional arg | CalleeSide /// The argument is optional, and is a caller-side .NET optional or default arg | CallerSide of OptionalArgCallerSideValue member x.IsOptional = match x with CalleeSide | CallerSide _ -> true | NotOptional -> false [] type ParamData = /// ParamData(isParamArray, isOut, optArgInfo, nameOpt, ttype) ParamData of bool * bool * OptionalArgInfo * string option * TType // Compute the OptionalArgInfo for an IL parameter let OptionalArgInfoOfILParameter g amap m ilScope ilTypeInst (ilParam: ILParameter) = if ilParam.IsOptional then match ilParam.Default with | None -> // Do a type-directed analysis of the IL type to determine the default value to pass. // The same rules as Visual Basic are applied here. let rec analyze ty = if isByrefTy g ty then let ty = destByrefTy g ty PassByRef (ty, analyze ty) elif isObjTy g ty then if TryFindILAttribute g.attrib_IDispatchConstantAttribute ilParam.CustomAttrs then WrapperForIDispatch elif TryFindILAttribute g.attrib_IUnknownConstantAttribute ilParam.CustomAttrs then WrapperForIUnknown else MissingValue else DefaultValue CallerSide (analyze (ImportTypeFromMetadata amap m ilScope ilTypeInst [] ilParam.Type)) | Some v -> CallerSide (Constant v) else NotOptional let ConstantObjToILFieldInit m (v:obj) = if v = null then ILFieldInit.Null else let objTy = v.GetType() let v = if objTy.IsEnum then let fi = objTy.GetField("value__") fi.GetValue(v) else v match v with | :? single as i -> ILFieldInit.Single i | :? double as i -> ILFieldInit.Double i | :? bool as i -> ILFieldInit.Bool i | :? char as i -> ILFieldInit.Char (uint16 i) | :? string as i -> ILFieldInit.String i | :? sbyte as i -> ILFieldInit.Int8 i | :? byte as i -> ILFieldInit.UInt8 i | :? int16 as i -> ILFieldInit.Int16 i | :? uint16 as i -> ILFieldInit.UInt16 i | :? int as i -> ILFieldInit.Int32 i | :? uint32 as i -> ILFieldInit.UInt32 i | :? int64 as i -> ILFieldInit.Int64 i | :? uint64 as i -> ILFieldInit.UInt64 i | _ -> error(Error(FSComp.SR.infosInvalidProvidedLiteralValue(try v.ToString() with _ -> "?"),m)) #if EXTENSIONTYPING // Compute the OptionalArgInfo for a provided parameter. Same logic as OptionalArgInfoOfILParameter // except we do not aply the Visual Basic rules for IDispatchConstant and IUnknownConstant to optional // provided parameters. let OptionalArgInfoOfProvidedParameter g amap m (provParam : Tainted) = if provParam.PUntaint((fun p -> p.IsOptional),m) then match provParam.PUntaint((fun p -> p.RawDefaultValue),m) with | null -> // Do a type-directed analysis of the IL type to determine the default value to pass. let rec analyze ty = if isByrefTy g ty then let ty = destByrefTy g ty PassByRef (ty, analyze ty) elif isObjTy g ty then MissingValue else DefaultValue let pty = Import.ImportProvidedType amap m (provParam.PApply((fun p -> p.ParameterType),m)) CallerSide (analyze pty) | v -> CallerSide (Constant (ConstantObjToILFieldInit m v)) else NotOptional //------------------------------------------------------------------------- // Some helper functions let GetAndSanityCheckProviderMethod m (mi: Tainted<'T :> ProvidedMemberInfo>) (get : 'T -> ProvidedMethodInfo) err = match mi.PApply((fun mi -> (get mi :> ProvidedMethodBase)),m) with | Tainted.Null -> error(Error(err(mi.PUntaint((fun mi -> mi.Name),m),mi.PUntaint((fun mi -> mi.DeclaringType.Name),m)),m)) | meth -> meth let RepresentativeMethodInfoOfPropertyInfo (pi:Tainted) m = if pi.PUntaint((fun pi -> pi.CanRead), m) then GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetGetMethod()) FSComp.SR.etPropertyCanReadButHasNoGetter elif pi.PUntaint((fun pi -> pi.CanWrite), m) then GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetSetMethod()) FSComp.SR.etPropertyCanWriteButHasNoSetter else error(Error(FSComp.SR.etPropertyNeedsCanWriteOrCanRead(pi.PUntaint((fun mi -> mi.Name),m),pi.PUntaint((fun mi -> mi.DeclaringType.Name),m)),m)) #endif /// Split the type of an F# member value into /// - the type parameters associated with method but matching those of the enclosing type /// - the type parameters associated with a generic method /// - the return type of the method /// - the actual type arguments of the enclosing type. let AnalyzeTypeOfMemberVal g (typ,vref) = let mamberAllTypars,_,retTy,_ = GetTypeOfMemberInMemberForm g vref let parentTyArgs = argsOfAppTy g typ let memberParentTypars,memberMethodTypars = List.chop parentTyArgs.Length mamberAllTypars memberParentTypars,memberMethodTypars,retTy,parentTyArgs //------------------------------------------------------------------------- // ILMethInfo /// Describes an F# use of an IL method. [] type ILMethInfo = /// ILMethInfo(ilDeclaringTypeInfo, extensionMethodInfo, ilMethodDef, ilGenericMethodTyArgs) /// /// Describes an F# use of an IL method. | ILMethInfo of ILTypeInfo * ILTypeRef option * ILMethodDef * Typars /// ILFSMethInfo(DeclaringType, FSharpObjKind, extensionMethodInfo, ilMethodDef) /// - DeclaringType refers apparent parent type /// - FSharpObjKind Indicates whether the type declaration is a class, interface, enum, delegate or struct /// Describes an F# use of an IL extension method on F# object. | ILFSMethInfo of TyconRef * TyconObjModelKind * ILTypeRef option * ILMethodDef /// Get the declaring type of the method as an ILTypeInfo. If this is an extension method, this is apparent type, i.e. the /// logical type being extended. If this is an extension method on a F# type, nothing returns. member x.ILTypeInfo = match x with ILMethInfo(tinfo,_,_,_) -> Some tinfo | ILFSMethInfo _ -> None /// Get the Abstract IL metadata associated with the method. member x.RawMetadata = match x with ILMethInfo(_,_,md,_) -> md | ILFSMethInfo(_,_,_,md) -> md /// Get the actual IL parent of a C#-style extension member with IL backing metadata member x.ExtensionMethodInfo = match x with ILMethInfo(_,extInfo,_,_) -> extInfo | ILFSMethInfo(_,_,extInfo,_) -> extInfo /// Get a reference to the named declaring type associated with the method, as an ILTypeRef member x.ILTypeRef = match x with ILMethInfo(tinfo,_,_,_) -> tinfo.ILTypeRef | ILFSMethInfo _ -> failwith "cannot happen" /// Get the IL name of the method member x.ILName = x.RawMetadata.Name /// Indicates if the method is an extension method member x.IsCSharpExtensionMethod = x.ExtensionMethodInfo.IsSome /// Get the declaring type of the method. If this is a C# extension method then this is the C# type /// holding the static member that is the extension method. member x.ActualILTypeRef = match x.ExtensionMethodInfo with | None -> x.ILTypeRef | Some info -> info /// Get the instantiation of the declaring type of the method. If this is a C# extension method then this is empty. member x.ActualTypeInst = match x.ExtensionMethodInfo with | None -> match x.ILTypeInfo with Some(tinfo) -> tinfo.TypeInst | None -> [] | Some _info -> [] /// Get the Abstract IL scope information associated with interpreting the Abstract IL metadata that backs this method. member x.MetadataScope = x.ActualILTypeRef.Scope /// Get the Abstract IL metadata corresponding to the parameters of the method. If this is a C# extension /// method then drop the object argument. member x.ParamMetadata = let ps = x.RawMetadata.Parameters |> ILList.toList if x.IsCSharpExtensionMethod then List.tail ps else ps /// Get the number of parameters of the method member x.NumParams = x.ParamMetadata.Length /// Get the number of generic parameters of the method. This includes all type parameters even if this is a C# extension method extending a generic type. member x.GenericArity = x.RawMetadata.GenericParams.Length /// Indicates if the method is a constructor member x.IsConstructor = x.RawMetadata.IsConstructor /// Indicates if the method is a class initializer. member x.IsClassConstructor = x.RawMetadata.IsClassInitializer /// Indicates if the method has protected accessibility, member x.IsProtectedAccessibility = let md = x.RawMetadata not md.IsConstructor && not md.IsClassInitializer && (md.Access = ILMemberAccess.Family) /// Indicates if the IL method is marked virtual. member x.IsVirtual = x.RawMetadata.IsVirtual /// Indicates if the IL method is marked final. member x.IsFinal = x.RawMetadata.IsFinal /// Indicates if the IL method is marked abstract. member x.IsAbstract = match x.RawMetadata.mdKind with | MethodKind.Virtual vinfo -> vinfo.IsAbstract | _ -> false /// Does it appear to the user as a static method? member x.IsStatic = not x.IsCSharpExtensionMethod && // all C# extension methods are instance x.RawMetadata.CallingConv.IsStatic /// Does it have the .NET IL 'newslot' flag set, and is also a virtual? member x.IsNewSlot = match x.RawMetadata.mdKind with | MethodKind.Virtual vinfo -> vinfo.IsNewSlot | _ -> false /// Does it appear to the user as an instance method? member x.IsInstance = not x.IsConstructor && not x.IsStatic /// Get the argument types of the the IL method. If this is a C# extension method then drop the object argument. member x.GetParamTypes(amap,m,minst) = x.ParamMetadata |> List.map (fun p -> ImportTypeFromMetadata amap m x.MetadataScope x.ActualTypeInst minst p.Type) /// Get all the argument types of the IL method. Include the object argument even if this is a C# extension method. member x.GetRawArgTypes(amap,m,minst) = // This includes, for example, C# extension methods. x.RawMetadata.Parameters |> ILList.toList |> List.map (fun p -> ImportTypeFromMetadata amap m x.MetadataScope x.ActualTypeInst minst p.Type) /// Get info about the arguments of the IL method. If this is a C# extension method then drop the object argument. member x.GetParamNamesAndTypes(amap,m,minst) = x.ParamMetadata |> List.map (fun p -> ParamNameAndType(p.Name, ImportTypeFromMetadata amap m x.MetadataScope x.ActualTypeInst minst p.Type) ) /// Get the declaring type of the method as an F# type. member x.EnclosingType = match x with ILMethInfo(tinfo,_,_,_) -> tinfo.ToType | ILFSMethInfo(t,_,_,_) -> TType_app(t,[]) /// Get a reference to the method (dropping all generic instantiations), as an Abstract IL ILMethodRef. member minfo.ILMethodRef = let mref = mkRefToILMethod (minfo.ActualILTypeRef,minfo.RawMetadata) rescopeILMethodRef minfo.MetadataScope mref /// Indicates if the method is marked as a DllImport (a PInvoke). This is done by looking at the IL custom attributes on /// the method. member minfo.IsDllImport g = let (AttribInfo(tref,_)) = g.attrib_DllImportAttribute minfo.RawMetadata.CustomAttrs |> TryDecodeILAttribute g tref (Some(tref.Scope)) |> isSome /// Get the (zero or one) 'self'/'this'/'object' arguments associated with an IL method. An instance extension method returns /// one object argument. member x.GetObjArgTypes(amap, m, minst) = // all C# extension methods are instance if x.IsCSharpExtensionMethod then x.RawMetadata.Parameters |> ILList.toList |> List.head |> (fun p -> [ImportTypeFromMetadata amap m x.MetadataScope x.ActualTypeInst minst p.Type]) elif x.IsInstance then [x.EnclosingType] else [] /// Get the compiled return type of an ILMethInfo, where 'void' is None. member minfo.GetCompiledReturnTy (amap, m, minst) = ImportReturnTypeFromMetaData amap m minfo.RawMetadata.Return.Type minfo.MetadataScope minfo.ActualTypeInst minst /// Get the F# view of the return type of an ILMethInfo, where 'void' is 'unit'. member minfo.GetFSharpReturnTy (amap, m, minst) = minfo.GetCompiledReturnTy(amap, m, minst) |> GetFSharpViewOfReturnType amap.g //------------------------------------------------------------------------- // ExtensionMethodPriority /// Describes the sequence order of the introduction of an extension method. Extension methods that are introduced /// later through 'open' get priority in overload resolution. type ExtensionMethodPriority = uint64 //------------------------------------------------------------------------- // MethInfo #if DEBUG [] #endif /// Describes an F# use of a method [] type MethInfo = /// FSMeth(tcGlobals, declaringType, valRef, extensionMethodPriority). /// /// Describes a use of a method declared in F# code and backed by F# metadata. | FSMeth of TcGlobals * TType * ValRef * ExtensionMethodPriority option /// ILMeth(tcGlobals, ilMethInfo, extensionMethodPriority). /// /// Describes a use of a method backed by Abstract IL # metadata | ILMeth of TcGlobals * ILMethInfo * ExtensionMethodPriority option /// Describes a use of a pseudo-method corresponding to the default constructor for a .NET struct type | DefaultStructCtor of TcGlobals * TType #if EXTENSIONTYPING /// Describes a use of a method backed by provided metadata | ProvidedMeth of TcGlobals * Tainted * Import.ImportMap * range #endif /// Get the enclosing ("parent"/"declaring") type of the method info. If this is an extension member, /// then this is the apparent parent. member x.EnclosingType = match x with | ILMeth(_g,x,_) -> x.EnclosingType | FSMeth(_g,typ,_,_) -> typ | DefaultStructCtor(_g,typ) -> typ #if EXTENSIONTYPING | ProvidedMeth(_,mi,amap,m) -> Import.ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType),m)) #endif /// Get the extension method priority of the method, if it has one. member x.Priority = match x with | ILMeth(_,_,Some pri) -> pri | FSMeth(_,_,_,Some pri) -> pri | _ -> System.UInt64.MaxValue // all others take prioity over extension members #if DEBUG /// Get the method name in DebuggerDisplayForm member x.DebuggerDisplayName = match x with | ILMeth(_,y,_) -> "ILMeth: " + y.ILName | FSMeth(_,_,vref,_) -> "FSMeth: " + vref.LogicalName #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> "ProvidedMeth: " + mi.PUntaint((fun mi -> mi.Name),m) #endif | DefaultStructCtor _ -> ".ctor" #endif /// Get the method name in LogicalName form, i.e. the name as it would be stored in .NET metadata member x.LogicalName = match x with | ILMeth(_,y,_) -> y.ILName | FSMeth(_,_,vref,_) -> vref.LogicalName #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.Name),m) #endif | DefaultStructCtor _ -> ".ctor" /// Get the method name in DisplayName form member x.DisplayName = match x with | FSMeth(_,_,vref,_) -> vref.DisplayName | _ -> x.LogicalName /// Indicates if this is a method defined in this assembly with an internal XML comment member x.HasDirectXmlComment = match x with | FSMeth(g,_,vref,_) -> valRefInThisAssembly g.compilingFslib vref #if EXTENSIONTYPING | ProvidedMeth _ -> true #endif | _ -> false override x.ToString() = x.EnclosingType.ToString() + x.LogicalName /// Get the actual type instantiation of the declaring type associated with this use of the method. /// If this is an extension member, then this is the actual instantiation of the apparent parent /// of the member. member x.ActualTypeInst = match x with | ILMeth(_g,y,_) -> y.ActualTypeInst | FSMeth(g,_,_,_) | DefaultStructCtor(g,_) -> argsOfAppTy g x.EnclosingType #if EXTENSIONTYPING | ProvidedMeth(g,_,_,_) -> argsOfAppTy g x.EnclosingType #endif /// Get the TcGlobals value that governs the method declaration member x.TcGlobals = match x with | ILMeth(g,_,_) -> g | FSMeth(g,_,_,_) -> g | DefaultStructCtor (g,_) -> g #if EXTENSIONTYPING | ProvidedMeth(g,_,_,_) -> g #endif /// Get the formal generic method parameters for the method as a list of type variables. member x.FormalMethodTypars = match x with | ILMeth(_,tinfo,_) -> match tinfo with ILMethInfo(_,_,_,mtps) -> mtps | _ -> [] | FSMeth(g,typ,vref,_) -> let allTypars,_ = destTopForallTy g vref.ValReprInfo.Value vref.Type let parentTyArgs = argsOfAppTy g typ let methodTypars = List.drop parentTyArgs.Length allTypars methodTypars | DefaultStructCtor _ -> [] #if EXTENSIONTYPING | ProvidedMeth _ -> [] // There will already have been an error if there are generic parameters here. #endif /// Get the formal generic method parameters for the method as a list of variable types. member x.FormalMethodInst = generalizeTypars x.FormalMethodTypars /// Get the XML documentation associated with the method member x.XmlDoc = match x with | ILMeth(_,_,_) -> XmlDoc.Empty | FSMeth(_,_,vref,_) -> vref.XmlDoc | DefaultStructCtor _ -> XmlDoc.Empty #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m)-> XmlDoc (mi.PUntaint((fun mix -> (mix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(mi.TypeProvider.PUntaintNoFailure(id))),m)) #endif /// Try to get an F# ValRef for the method member x.ArbitraryValRef = match x with | FSMeth(_g,_,vref,_) -> Some vref | _ -> None member x.NumArgs = match x with | ILMeth(_g,x,_) -> [x.NumParams] | FSMeth(g,_,vref,_) -> ArgInfosOfMember g vref |> List.map List.length | DefaultStructCtor _ -> [0] #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> [mi.PUntaint((fun mi -> mi.GetParameters().Length),m)] // Why is this a list? Answer: because the method might be curried #endif member x.IsCurried = x.NumArgs.Length > 1 /// Does the method appear to the user as an instance method? member x.IsInstance = match x with | ILMeth(_,x,_) -> x.IsInstance | FSMeth(_,_,vref,_) -> vref.IsInstanceMember | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> not mi.IsConstructor && not mi.IsStatic),m) #endif member x.GenericArity = match x with | ILMeth(_g,x,_) -> x.GenericArity | FSMeth(g,typ,vref,_) -> let _,memberMethodTypars,_,_ = AnalyzeTypeOfMemberVal g (typ,vref) memberMethodTypars.Length | DefaultStructCtor _ -> 0 #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> if mi.IsGenericMethod then mi.GetGenericArguments().Length else 0),m) #endif member x.IsProtectedAccessiblity = match x with | ILMeth(_g,x,_) -> x.IsProtectedAccessibility | FSMeth _ -> false | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsFamily), m) #endif member x.IsVirtual = match x with | ILMeth(_,x,_) -> x.IsVirtual | FSMeth(_,_,vref,_) -> MemberRefIsVirtual vref | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsVirtual), m) #endif member x.IsConstructor = match x with | ILMeth(_g,x,_) -> x.IsConstructor | FSMeth(_g,_,vref,_) -> let flags = (Option.get vref.MemberInfo).MemberFlags (flags.MemberKind = MemberKind.Constructor) | DefaultStructCtor _ -> true #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsConstructor), m) #endif member x.IsClassConstructor = match x with | ILMeth(_g,x,_) -> x.IsClassConstructor | FSMeth _ -> false | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsConstructor && mi.IsStatic), m) // Note: these are never public anyway #endif member meth.IsDispatchSlot = match meth with | ILMeth(_g,x,_) -> x.IsVirtual | FSMeth(g,_,vref,_) as x -> isInterfaceTy g x.EnclosingType || vref.MemberInfo.Value.MemberFlags.IsDispatchSlot | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth _ -> meth.IsVirtual // Note: follow same implementation as ILMeth #endif member x.IsFinal = not x.IsVirtual || match x with | ILMeth(_g,x,_) -> x.IsFinal | FSMeth(_g,_,_vref,_) -> false | DefaultStructCtor _ -> true #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsFinal), m) #endif // This means 'is this particular MethInfo one that doesn't provide an implementation?'. // For F# methods, this is 'true' for the MethInfos corresponding to 'abstract' declarations, // and false for the (potentially) matching 'default' implementation MethInfos that eventually // provide an implementation for the dispatch slot. // // For IL methods, this is 'true' for abstract methods, and 'false' for virtual methods member minfo.IsAbstract = match minfo with | ILMeth(_g,x,_) -> x.IsAbstract | FSMeth(g,_,vref,_) -> isInterfaceTy g minfo.EnclosingType || MemberRefIsDispatchSlot vref | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsAbstract), m) #endif member x.IsNewSlot = isInterfaceTy x.TcGlobals x.EnclosingType || (x.IsVirtual && (match x with | ILMeth(_,x,_) -> x.IsNewSlot | FSMeth(_,_,vref,_) -> MemberRefIsDispatchSlot vref #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,m) -> mi.PUntaint((fun mi -> mi.IsHideBySig), m) // REVIEW: Check this is correct #endif | DefaultStructCtor _ -> false)) member x.IsDefiniteFSharpOverride = match x with | ILMeth(_,_,_) -> false | FSMeth(_,_,vref,_) -> MemberRefIsDefiniteFSharpOverride vref | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth _ -> false #endif member x.IsExtensionMember = match x with | ILMeth(_,x,_) -> x.ExtensionMethodInfo.IsSome | FSMeth(_,_,vref,_) -> vref.IsExtensionMember | DefaultStructCtor _ -> false #if EXTENSIONTYPING | ProvidedMeth _ -> false // We don't support provided extension members. #endif member x.IsFSharpEventProperty = match x with | FSMeth(g,_,vref,_) -> vref.IsFSharpEventProperty(g) #if EXTENSIONTYPING | ProvidedMeth _ -> false #endif | _ -> false member x.IsNullary = (x.NumArgs = [0]) member x.IsStruct = isStructTy x.TcGlobals x.EnclosingType //------------------------------------------------------------------------- // ILFieldInfo /// Represents a single use of a IL or provided field from one point in an F# program [] type ILFieldInfo = /// Represents a single use of a field backed by Abstract IL metadata | ILFieldInfo of ILTypeInfo * ILFieldDef // .NET IL fields #if EXTENSIONTYPING /// Represents a single use of a field backed by provided metadata | ProvidedField of TcGlobals * Tainted * Import.ImportMap * range #endif /// Get the enclosing ("parent"/"declaring") type of the field. member x.EnclosingType = match x with | ILFieldInfo(tinfo,_) -> tinfo.ToType #if EXTENSIONTYPING | ProvidedField(_,fi,amap,m) -> (Import.ImportProvidedType amap m (fi.PApply((fun fi -> fi.DeclaringType),m))) #endif /// Get a reference to the declaring type of the field as an ILTypeRef member x.ILTypeRef = match x with | ILFieldInfo(tinfo,_) -> tinfo.ILTypeRef #if EXTENSIONTYPING | ProvidedField(_,fi,amap,m) -> (Import.ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> fi.DeclaringType),m))).TypeRef #endif /// Get the scope used to interpret IL metadata member x.ScopeRef = x.ILTypeRef.Scope /// Get the type instantiation of the declaring type of the field member x.TypeInst = match x with | ILFieldInfo(tinfo,_) -> tinfo.TypeInst #if EXTENSIONTYPING | ProvidedField _ -> [] /// GENERIC TYPE PROVIDERS #endif /// Get the name of the field member x.FieldName = match x with | ILFieldInfo(_,pd) -> pd.Name #if EXTENSIONTYPING | ProvidedField(_,fi,_,m) -> fi.PUntaint((fun fi -> fi.Name),m) #endif /// Indicates if the field is readonly (in the .NET/C# sense of readonly) member x.IsInitOnly = match x with | ILFieldInfo(_,pd) -> pd.IsInitOnly #if EXTENSIONTYPING | ProvidedField(_,fi,_,m) -> fi.PUntaint((fun fi -> fi.IsInitOnly),m) #endif /// Indicates if the field is a member of a struct or enum type member x.IsValueType = match x with | ILFieldInfo(tinfo,_) -> tinfo.IsValueType #if EXTENSIONTYPING | ProvidedField(g,_,_,_) -> isStructTy g x.EnclosingType #endif /// Indicates if the field is static member x.IsStatic = match x with | ILFieldInfo(_,pd) -> pd.IsStatic #if EXTENSIONTYPING | ProvidedField(_,fi,_,m) -> fi.PUntaint((fun fi -> fi.IsStatic),m) #endif /// Indicates if the field has the 'specialname' property in the .NET IL member x.IsSpecialName = match x with | ILFieldInfo(_,pd) -> pd.IsSpecialName #if EXTENSIONTYPING | ProvidedField(_,fi,_,m) -> fi.PUntaint((fun fi -> fi.IsSpecialName),m) #endif /// Indicates if the field is a literal field with an associated literal value member x.LiteralValue = match x with | ILFieldInfo(_,pd) -> if pd.IsLiteral then pd.LiteralValue else None #if EXTENSIONTYPING | ProvidedField(_,fi,_,m) -> if fi.PUntaint((fun fi -> fi.IsLiteral),m) then Some (ConstantObjToILFieldInit m (fi.PUntaint((fun fi -> fi.GetRawConstantValue()),m))) else None #endif /// Get the type of the field as an IL type member x.ILFieldType = match x with | ILFieldInfo (_,fdef) -> fdef.Type #if EXTENSIONTYPING | ProvidedField(_,fi,amap,m) -> Import.ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> fi.FieldType),m)) #endif /// Get the type of the field as an F# type member x.FieldType(amap,m) = match x with | ILFieldInfo (tinfo,fdef) -> ImportTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] fdef.Type #if EXTENSIONTYPING | ProvidedField(_,fi,amap,m) -> Import.ImportProvidedType amap m (fi.PApply((fun fi -> fi.FieldType),m)) #endif /// Get an (uninstantiated) reference to the field as an Abstract IL ILFieldRef member x.ILFieldRef = rescopeILFieldRef x.ScopeRef (mkILFieldRef(x.ILTypeRef,x.FieldName,x.ILFieldType)) override x.ToString() = x.FieldName //------------------------------------------------------------------------- // RecdFieldInfo /// Describes an F# use of a field in an F#-declared record, class or struct type [] type RecdFieldInfo = | RecdFieldInfo of TypeInst * Tast.RecdFieldRef /// Get the generic instantiation of the declaring type of the field member x.TypeInst = let (RecdFieldInfo(tinst,_)) = x in tinst /// Get a reference to the F# metadata for the uninstantiated field member x.RecdFieldRef = let (RecdFieldInfo(_,rfref)) = x in rfref /// Get the F# metadata for the uninstantiated field member x.RecdField = x.RecdFieldRef.RecdField /// Indicate if the field is a static field in an F#-declared record, class or struct type member x.IsStatic = x.RecdField.IsStatic /// Indicate if the field is a literal field in an F#-declared record, class or struct type member x.LiteralValue = x.RecdField.LiteralValue /// Get a reference to the F# metadata for the F#-declared record, class or struct type member x.TyconRef = x.RecdFieldRef.TyconRef /// Get the F# metadata for the F#-declared record, class or struct type member x.Tycon = x.RecdFieldRef.Tycon /// Get the name of the field in an F#-declared record, class or struct type member x.Name = x.RecdField.Name /// Get the (instantiated) type of the field in an F#-declared record, class or struct type member x.FieldType = actualTyOfRecdFieldRef x.RecdFieldRef x.TypeInst /// Get the enclosing (declaring) type of the field in an F#-declared record, class or struct type member x.EnclosingType = TType_app (x.RecdFieldRef.TyconRef,x.TypeInst) override x.ToString() = x.TyconRef.ToString() + "::" + x.Name //------------------------------------------------------------------------- // UnionCaseInfo /// Describes an F# use of a union case [] type UnionCaseInfo = | UnionCaseInfo of TypeInst * Tast.UnionCaseRef /// Get the generic instantiation of the declaring type of the union case member x.TypeInst = let (UnionCaseInfo(tinst,_)) = x in tinst /// Get a reference to the F# metadata for the uninstantiated union case member x.UnionCaseRef = let (UnionCaseInfo(_,ucref)) = x in ucref /// Get the F# metadata for the uninstantiated union case member x.UnionCase = x.UnionCaseRef.UnionCase /// Get a reference to the F# metadata for the declaring union type member x.TyconRef = x.UnionCaseRef.TyconRef /// Get the F# metadata for the declaring union type member x.Tycon = x.UnionCaseRef.Tycon /// Get the name of the union case member x.Name = x.UnionCase.DisplayName override x.ToString() = x.TyconRef.ToString() + "::" + x.Name //------------------------------------------------------------------------- // ILPropInfo /// Describes an F# use of a property backed by Abstract IL metadata [] type ILPropInfo = | ILPropInfo of ILTypeInfo * ILPropertyDef /// Get the declaring IL type of the property, including any generic instantiation member x.ILTypeInfo = match x with (ILPropInfo(tinfo,_)) -> tinfo /// Get the raw Abstract IL metadata for the property member x.RawMetadata = match x with (ILPropInfo(_,pd)) -> pd /// Get the name of the property member x.PropertyName = x.RawMetadata.Name /// Gets the ILMethInfo of the 'get' method for the property member x.GetterMethod = assert x.HasGetter let mdef = resolveILMethodRef x.ILTypeInfo.RawMetadata (Option.get x.RawMetadata.GetMethod) ILMethInfo(x.ILTypeInfo,None,mdef,[]) /// Gets the ILMethInfo of the 'set' method for the property member x.SetterMethod = assert x.HasSetter let mdef = resolveILMethodRef x.ILTypeInfo.RawMetadata (Option.get x.RawMetadata.SetMethod) ILMethInfo(x.ILTypeInfo,None,mdef,[]) /// Indicates if the property has a 'get' method member x.HasGetter = isSome x.RawMetadata.GetMethod /// Indicates if the property has a 'set' method member x.HasSetter = isSome x.RawMetadata.SetMethod /// Indicates if the property is static member x.IsStatic = (x.RawMetadata.CallingConv = ILThisConvention.Static) member x.IsVirtual = (x.HasGetter && x.GetterMethod.IsVirtual) || (x.HasSetter && x.SetterMethod.IsVirtual) member x.IsNewSlot = (x.HasGetter && x.GetterMethod.IsNewSlot) || (x.HasSetter && x.SetterMethod.IsNewSlot) member x.GetParamNamesAndTypes(amap,m) = let (ILPropInfo (tinfo,pdef)) = x pdef.Args |> ILList.toList |> List.map (fun ty -> ParamNameAndType(None, ImportTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] ty) ) member x.GetParamTypes(amap,m) = let (ILPropInfo (tinfo,pdef)) = x pdef.Args |> ILList.toList |> List.map (fun ty -> ImportTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] ty) member x.GetPropertyType (amap,m) = let (ILPropInfo (tinfo,pdef)) = x ImportTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] pdef.Type override x.ToString() = x.ILTypeInfo.ToString() + "::" + x.PropertyName //------------------------------------------------------------------------- // PropInfo /// Describes an F# use of a property [] type PropInfo = /// An F# use of a property backed by F#-declared metadata | FSProp of TcGlobals * TType * ValRef option * ValRef option /// An F# use of a property backed by Abstract IL metadata | ILProp of TcGlobals * ILPropInfo #if EXTENSIONTYPING /// An F# use of a property backed by provided metadata | ProvidedProp of TcGlobals * Tainted * Import.ImportMap * range #endif member x.HasDirectXmlComment = match x with | FSProp(g,_,Some(vref),_) | FSProp(g,_,_,Some(vref)) -> valRefInThisAssembly g.compilingFslib vref #if EXTENSIONTYPING | ProvidedProp _ -> true #endif | _ -> false member x.PropertyName = match x with | ILProp(_,x) -> x.PropertyName | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> vref.PropertyName #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> pi.PUntaint((fun pi -> pi.Name),m) #endif | FSProp _ -> failwith "unreachable" member x.HasGetter = match x with | ILProp(_,x) -> x.HasGetter | FSProp(_,_,x,_) -> isSome x #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> pi.PUntaint((fun pi -> pi.CanRead),m) #endif member x.HasSetter = match x with | ILProp(_,x) -> x.HasSetter | FSProp(_,_,_,x) -> isSome x #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> pi.PUntaint((fun pi -> pi.CanWrite),m) #endif member x.EnclosingType = match x with | ILProp(_,x) -> x.ILTypeInfo.ToType | FSProp(_,typ,_,_) -> typ #if EXTENSIONTYPING | ProvidedProp(_,pi,amap,m) -> Import.ImportProvidedType amap m (pi.PApply((fun pi -> pi.DeclaringType),m)) #endif /// True if the getter (or, if absent, the setter) is a virtual method // REVIEW: for IL properties this is getter OR setter. For F# properties it is getter ELSE setter member x.IsVirtualProperty = match x with | ILProp(_,x) -> x.IsVirtual | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> MemberRefIsVirtual vref | FSProp _-> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> let mi = RepresentativeMethodInfoOfPropertyInfo pi m mi.PUntaint((fun mi -> mi.IsVirtual), m) #endif // REVIEW: this doesn't accord precisely with the IsNewSlot definition for members member x.IsNewSlot = match x with | ILProp(_,x) -> x.IsNewSlot | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> MemberRefIsDispatchSlot vref | FSProp(_,_,None,None) -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> let mi = RepresentativeMethodInfoOfPropertyInfo pi m mi.PUntaint((fun mi -> mi.IsHideBySig), m) #endif /// True if the getter (or, if absent, the setter) for the property is a dispatch slot // REVIEW: for IL properties this is getter OR setter. For F# properties it is getter ELSE setter member x.IsDispatchSlot = match x with | ILProp(_,x) -> x.IsVirtual | FSProp(g,typ,Some vref,_) | FSProp(g,typ,_, Some vref) -> isInterfaceTy g typ || (let membInfo = (Option.get vref.MemberInfo) membInfo.MemberFlags.IsDispatchSlot) | FSProp _ -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> let mi = RepresentativeMethodInfoOfPropertyInfo pi m mi.PUntaint((fun mi -> mi.IsVirtual), m) #endif member x.IsStatic = match x with | ILProp(_,x) -> x.IsStatic | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> not vref.IsInstanceMember | FSProp(_,_,None,None) -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> (RepresentativeMethodInfoOfPropertyInfo pi m).PUntaint((fun mi -> mi.IsStatic), m) #endif member x.IsDefiniteFSharpOverride = match x with | ILProp _ -> false | FSProp(_,_,Some vref,_) | FSProp(_,_,_,Some vref) -> MemberRefIsDefiniteFSharpOverride vref | FSProp(_,_,None,None) -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp _ -> false #endif member x.IsIndexer = match x with | ILProp(_,ILPropInfo(_,pdef)) -> pdef.Args.Length <> 0 | FSProp(g,_,Some vref,_) -> // A getter has signature { OptionalObjectType } -> Unit -> PropertyType // A getter indexer has signature { OptionalObjectType } -> TupledIndexerArguments -> PropertyType let arginfos = ArgInfosOfMember g vref arginfos.Length = 1 && arginfos.Head.Length >= 1 | FSProp(g,_,_, Some vref) -> // A setter has signature { OptionalObjectType } -> PropertyType -> Void // A setter indexer has signature { OptionalObjectType } -> TupledIndexerArguments -> PropertyType -> Void let arginfos = ArgInfosOfMember g vref arginfos.Length = 1 && arginfos.Head.Length >= 2 | FSProp(_,_,None,None) -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> pi.PUntaint((fun pi -> pi.GetIndexParameters().Length), m)>0 #endif member x.IsFSharpEventProperty = match x with | FSProp(g,_,Some vref,None) -> vref.IsFSharpEventProperty(g) #if EXTENSIONTYPING | ProvidedProp _ -> false #endif | _ -> false // Property infos can combine getters and setters, assuming they are consistent w.r.t. 'virtual', indexer argument types etc. // When checking consistency we split these apart member x.DropSetter = match x with | FSProp(g,typ,Some vref,_) -> FSProp(g,typ,Some vref,None) | _ -> x member x.DropGetter = match x with | FSProp(g,typ,_,Some vref) -> FSProp(g,typ,None,Some vref) | _ -> x member x.XmlDoc = match x with | ILProp _ -> XmlDoc.Empty | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> vref.XmlDoc | FSProp(_,_,None,None) -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> XmlDoc (pi.PUntaint((fun pix -> (pix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(pi.TypeProvider.PUntaintNoFailure(id))), m)) #endif member x.TcGlobals = match x with | ILProp(g,_) -> g | FSProp(g,_,_,_) -> g #if EXTENSIONTYPING | ProvidedProp(g,_,_,_) -> g #endif member x.IsValueType = isStructTy x.TcGlobals x.EnclosingType member x.ArbitraryValRef = match x with | FSProp(_,_,Some vref,_) | FSProp(_,_,_, Some vref) -> Some vref | FSProp(_,_,None,None) -> failwith "unreachable" | _ -> None member x.GetParamNamesAndTypes(amap,m) = match x with | ILProp (_,ilpinfo) -> ilpinfo.GetParamNamesAndTypes(amap,m) | FSProp (g,typ,Some vref,_) | FSProp (g,typ,_,Some vref) -> let memberParentTypars,_mtps,_retTy,parentTyArgs = AnalyzeTypeOfMemberVal amap.g (typ,vref) let inst = mkTyparInst memberParentTypars parentTyArgs ArgInfosOfPropertyVal g vref.Deref |> List.map (ParamNameAndTypeOfArgInfo >> InstParamNameAndType inst) | FSProp _ -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp (_,pi,_,m) -> [ for p in pi.PApplyArray((fun pi -> pi.GetIndexParameters()), "GetIndexParameters", m) do let paramName = p.PUntaint((fun p -> match p.Name with null -> None | s -> Some s), m) let paramType = Import.ImportProvidedType amap m (p.PApply((fun p -> p.ParameterType), m)) yield ParamNameAndType(paramName, paramType) ] #endif member x.GetPropertyType (amap,m) = match x with | ILProp (_,ilpinfo) -> ilpinfo.GetPropertyType (amap,m) | FSProp (g,typ,Some vref,_) | FSProp (g,typ,_,Some vref) -> let memberParentTypars,_,_,parentTyArgs = AnalyzeTypeOfMemberVal amap.g (typ,vref) let inst = mkTyparInst memberParentTypars parentTyArgs ReturnTypeOfPropertyVal g vref.Deref |> instType inst | FSProp _ -> failwith "unreachable" #if EXTENSIONTYPING | ProvidedProp(_,pi,_,m) -> Import.ImportProvidedType amap m (pi.PApply((fun pi -> pi.PropertyType),m)) #endif member x.GetParamDatas(amap,m) = x.GetParamNamesAndTypes(amap,m) |> List.map (fun (ParamNameAndType(nm,pty)) -> ParamData(false,false,NotOptional,nm, pty)) member x.GetParamTypes(amap,m) = x.GetParamNamesAndTypes(amap,m) |> List.map (fun (ParamNameAndType(_,ty)) -> ty) member x.GetterMethod = match x with | ILProp(g,x) -> ILMeth(g,x.GetterMethod,None) | FSProp(g,typ,Some vref,_) -> FSMeth(g,typ,vref,None) #if EXTENSIONTYPING | ProvidedProp(g,pi,amap,m) -> let meth = GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetGetMethod()) FSComp.SR.etPropertyCanReadButHasNoGetter ProvidedMeth(g, meth, amap, m) #endif | FSProp _ -> failwith "no getter method" member x.SetterMethod = match x with | ILProp(g,x) -> ILMeth(g,x.SetterMethod,None) | FSProp(g,typ,_,Some vref) -> FSMeth(g,typ,vref,None) #if EXTENSIONTYPING | ProvidedProp(g,pi,amap,m) -> let meth = GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetSetMethod()) FSComp.SR.etPropertyCanWriteButHasNoSetter ProvidedMeth(g, meth, amap, m) #endif | FSProp _ -> failwith "no setter method" //------------------------------------------------------------------------- // ILEventInfo /// Describes an F# use of an event backed by Abstract IL metadata [] type ILEventInfo = | ILEventInfo of ILTypeInfo * ILEventDef /// Get the raw Abstract IL metadata for the event member x.RawMetadata = match x with (ILEventInfo(_,ed)) -> ed /// Get the declaring IL type of the event as an ILTypeInfo member x.ILTypeInfo = match x with (ILEventInfo(tinfo,_)) -> tinfo /// Get the ILMethInfo describing the 'add' method associated with the event member x.AddMethod = let mdef = resolveILMethodRef x.ILTypeInfo.RawMetadata x.RawMetadata.AddMethod ILMethInfo(x.ILTypeInfo,None,mdef,[]) /// Get the ILMethInfo describing the 'remove' method associated with the event member x.RemoveMethod = let mdef = resolveILMethodRef x.ILTypeInfo.RawMetadata x.RawMetadata.RemoveMethod ILMethInfo(x.ILTypeInfo,None,mdef,[]) /// Get the declaring type of the event as an ILTypeRef member x.TypeRef = x.ILTypeInfo.ILTypeRef /// Get the name of the event member x.Name = x.RawMetadata.Name /// Indicates if the property is static member x.IsStatic = x.AddMethod.IsStatic override x.ToString() = x.ILTypeInfo.ToString() + "::" + x.Name //------------------------------------------------------------------------- // Helpers for EventInfo exception BadEventTransformation of range /// Properties compatible with type IDelegateEvent and atributed with CLIEvent are special: we generate metadata and add/remove methods /// to make them into a .NET event, and mangle the name of a property. /// We don't handle static, indexer or abstract properties correctly. /// Note the name mangling doesn't affect the name of the get/set methods for the property /// and so doesn't affect how we compile F# accesses to the property. let private tyConformsToIDelegateEvent g ty = isIDelegateEventType g ty && isDelegateTy g (destIDelegateEventType g ty) /// Create an error object to raise should an event not have the shape expected by the .NET idiom described further below let nonStandardEventError nm m = Error ((FSComp.SR.eventHasNonStandardType(nm,("add_"+nm),("remove_"+nm))),m) /// Find the delegate type that an F# event property implements by looking through the type hierarchy of the type of the property /// for the first instantiation of IDelegateEvent. let FindDelegateTypeOfPropertyEvent g amap nm m ty = match SearchEntireHierarchyOfType (tyConformsToIDelegateEvent g) g amap m ty with | None -> error(nonStandardEventError nm m) | Some ty -> destIDelegateEventType g ty //------------------------------------------------------------------------- // EventInfo /// Describes an F# use of an event [] type EventInfo = /// An F# use of an event backed by F#-declared metadata | FSEvent of TcGlobals * PropInfo * ValRef * ValRef /// An F# use of an event backed by .NET metadata | ILEvent of TcGlobals * ILEventInfo #if EXTENSIONTYPING /// An F# use of an event backed by provided metadata | ProvidedEvent of TcGlobals * Import.ImportMap * Tainted * range #endif member x.EnclosingType = match x with | ILEvent(_,e) -> e.ILTypeInfo.ToType | FSEvent (_,p,_,_) -> p.EnclosingType #if EXTENSIONTYPING | ProvidedEvent (_,amap,ei,m) -> Import.ImportProvidedType amap m (ei.PApply((fun ei -> ei.DeclaringType),m)) #endif member x.HasDirectXmlComment = match x with | FSEvent (_,p,_,_) -> p.HasDirectXmlComment #if EXTENSIONTYPING | ProvidedEvent _ -> true #endif | _ -> false member x.XmlDoc = match x with | ILEvent _ -> XmlDoc.Empty | FSEvent (_,p,_,_) -> p.XmlDoc #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,m) -> XmlDoc (ei.PUntaint((fun eix -> (eix :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(ei.TypeProvider.PUntaintNoFailure(id))), m)) #endif member x.EventName = match x with | ILEvent(_,e) -> e.Name | FSEvent (_,p,_,_) -> p.PropertyName #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,m) -> ei.PUntaint((fun ei -> ei.Name), m) #endif member x.IsStatic = match x with | ILEvent(_,e) -> e.IsStatic | FSEvent (_,p,_,_) -> p.IsStatic #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,m) -> let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetAddMethod()) FSComp.SR.etEventNoAdd meth.PUntaint((fun mi -> mi.IsStatic), m) #endif member x.TcGlobals = match x with | ILEvent(g,_) -> g | FSEvent(g,_,_,_) -> g #if EXTENSIONTYPING | ProvidedEvent (g,_,_,_) -> g #endif member x.IsValueType = isStructTy x.TcGlobals x.EnclosingType member x.GetAddMethod() = match x with | ILEvent(g,e) -> ILMeth(g,e.AddMethod,None) | FSEvent(g,p,addValRef,_) -> FSMeth(g,p.EnclosingType,addValRef,None) #if EXTENSIONTYPING | ProvidedEvent (g,amap,ei,m) -> let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetAddMethod()) FSComp.SR.etEventNoAdd ProvidedMeth(g, meth, amap, m) #endif member x.GetRemoveMethod() = match x with | ILEvent(g,e) -> ILMeth(g,e.RemoveMethod,None) | FSEvent(g,p,_,removeValRef) -> FSMeth(g,p.EnclosingType,removeValRef,None) #if EXTENSIONTYPING | ProvidedEvent (g,amap,ei,m) -> let meth = GetAndSanityCheckProviderMethod m ei (fun ei -> ei.GetRemoveMethod()) FSComp.SR.etEventNoRemove ProvidedMeth(g, meth, amap, m) #endif member x.ArbitraryValRef = match x with | FSEvent(_,_,addValRef,_) -> Some addValRef | _ -> None member x.GetDelegateType(amap,m) = match x with | ILEvent(_,ILEventInfo(tinfo,edef)) -> // Get the delegate type associated with an IL event, taking into account the instantiation of the // declaring type. if isNone edef.Type then error (nonStandardEventError x.EventName m); ImportTypeFromMetadata amap m tinfo.ILScopeRef tinfo.TypeInst [] edef.Type.Value | FSEvent(g,p,_,_) -> FindDelegateTypeOfPropertyEvent g amap x.EventName m (p.GetPropertyType(amap,m)) #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,_) -> Import.ImportProvidedType amap m (ei.PApply((fun ei -> ei.EventHandlerType), m)) #endif type ILMethInfo with /// Build IL method infos. static member Create (amap, m, tinfo:ILTypeInfo, extInfo:ILTypeRef option, extMethPri, md: ILMethodDef) = let tinst,scoref = match extInfo with | None -> tinfo.TypeInst,tinfo.ILScopeRef | Some tref -> // C# extension methods have no type typars [], tref.Scope let mtps = Import.ImportILGenericParameters (fun () -> amap) m scoref tinst md.GenericParams ILMeth (amap.g,ILMethInfo(tinfo,extInfo, md,mtps),extMethPri) /// Tests whether two method infos have the same underlying definition. /// Used to merge operator overloads collected from left and right of an operator constraint. let MethInfosUseIdenticalDefinitions _g x1 x2 = match x1,x2 with | ILMeth(_,x1,_), ILMeth(_,x2,_) -> (x1.RawMetadata === x2.RawMetadata) | FSMeth(g,_,vref1,_), FSMeth(_,_,vref2,_) -> valRefEq g vref1 vref2 | DefaultStructCtor(g,ty1), DefaultStructCtor(_,ty2) -> tyconRefEq g (tcrefOfAppTy g ty1) (tcrefOfAppTy g ty2) #if EXTENSIONTYPING | ProvidedMeth(_,mi1,_,_),ProvidedMeth(_,mi2,_,_) -> ProvidedMethodBase.TaintedEquals (mi1, mi2) #endif | _ -> false /// Tests whether two property infos have the same underlying definition. /// Uses the same techniques as pervious 'MethInfosUseIdenticalDefinitions'. let PropInfosUseIdenticalDefinitions x1 x2 = let optVrefEq g = function | Some(v1), Some(v2) -> valRefEq g v1 v2 | None, None -> true | _ -> false match x1,x2 with | ILProp(_, x1), ILProp(_, x2) -> (x1.RawMetadata === x2.RawMetadata) | FSProp(g, _, vrefa1, vrefb1), FSProp(_, _, vrefa2, vrefb2) -> (optVrefEq g (vrefa1, vrefa2)) && (optVrefEq g (vrefb1, vrefb2)) #if EXTENSIONTYPING | ProvidedProp(_,pi1,_,_), ProvidedProp(_,pi2,_,_) -> ProvidedPropertyInfo.TaintedEquals (pi1, pi2) #endif | _ -> false /// Test whether two event infos have the same underlying definition. let EventInfosUseIdenticalDefintions x1 x2 = match x1, x2 with | FSEvent(g, pi1, vrefa1, vrefb1), FSEvent(_, pi2, vrefa2, vrefb2) -> PropInfosUseIdenticalDefinitions pi1 pi2 && valRefEq g vrefa1 vrefa2 && valRefEq g vrefb1 vrefb2 | ILEvent(_, x1), ILEvent(_, x2) -> (x1.RawMetadata === x2.RawMetadata) #if EXTENSIONTYPING | ProvidedEvent (_,_,ei1,_), ProvidedEvent (_,_,ei2,_) -> ProvidedEventInfo.TaintedEquals (ei1, ei2) #endif | _ -> false /// Calculates a hash code of method info. Note: this is a very imperfect implementation, /// but it works decently for comparing methods in the language service... let GetMethInfoHashCode mi = match mi with | ILMeth(_,x1,_) -> hash x1.RawMetadata.Name | FSMeth(_,_,vref,_) -> hash vref.LogicalName | DefaultStructCtor(_,_ty) -> 34892 // "ty" doesn't support hashing. We could use "hash (tcrefOfAppTy g ty).CompiledName" or // something but we don't have a "g" parameter here yet. But this hash need only be very approximate anyway #if EXTENSIONTYPING | ProvidedMeth(_,mi,_,_) -> ProvidedMethodInfo.TaintedGetHashCode(mi) #endif /// Calculates a hash code of property info (similar as previous) let GetPropInfoHashCode mi = match mi with | ILProp(_, x1) -> hash x1.RawMetadata.Name | FSProp(_,_,vrefOpt1, vrefOpt2) -> // Value to hash is option*option, which can be hashed efficiently let vth = (vrefOpt1 |> Option.map (fun vr -> vr.LogicalName), vrefOpt2 |> Option.map (fun vr -> vr.LogicalName)) hash vth #if EXTENSIONTYPING | ProvidedProp(_,pi,_,_) -> ProvidedPropertyInfo.TaintedGetHashCode(pi) #endif /// Calculates a hash code of event info (similar as previous) let GetEventInfoHashCode mi = match mi with | ILEvent(_, x1) -> hash x1.RawMetadata.Name | FSEvent(_, pi, vref1, vref2) -> hash (GetPropInfoHashCode pi, vref1.LogicalName, vref2.LogicalName) #if EXTENSIONTYPING | ProvidedEvent (_,_,ei,_) -> ProvidedEventInfo.TaintedGetHashCode(ei) #endif /// Apply a type instantiation to a method info, i.e. apply the instantiation to the enclosing type. let InstMethInfo amap m inst meth = match meth with | ILMeth(_g,x,pri) -> match x with | ILMethInfo(tinfo,_,_,_) -> ILMethInfo.Create(amap, m, tinfo.Instantiate inst, x.ExtensionMethodInfo, pri, x.RawMetadata) | _ -> failwith "not supported" | FSMeth(g,typ,vref,pri) -> FSMeth(g,instType inst typ,vref,pri) | DefaultStructCtor(g,typ) -> DefaultStructCtor(g,instType inst typ) #if EXTENSIONTYPING | ProvidedMeth _ -> match inst with | [] -> meth | _ -> assert false; failwith "Not supported" #endif /// Combine the type instantiation and generic method instantiation let CombineMethInsts ttps mtps tinst minst = (mkTyparInst ttps tinst @ mkTyparInst mtps minst) #if EXTENSIONTYPING /// Get the return type of a provided method, where 'void' is returned as 'None' let GetCompiledReturnTyOfProvidedMethodInfo amap m (mi:Tainted) = let returnType = if mi.PUntaint((fun mi -> mi.IsConstructor),m) then mi.PApply((fun mi -> mi.DeclaringType),m) else mi.Coerce(m).PApply((fun mi -> mi.ReturnType),m) let typ = Import.ImportProvidedType amap m returnType if isVoidTy amap.g typ then None else Some typ #endif /// The slotsig returned by methInfo.GetSlotSig is in terms of the type parameters on the parent type of the overriding method. /// Reverse-map the slotsig so it is in terms of the type parameters for the overriding method let ReparentSlotSigToUseMethodTypars g m ovByMethValRef slotsig = match PartitionValRefTypars g ovByMethValRef with | Some(_,enclosingTypars,_,_,_) -> let parentToMemberInst,_ = mkTyparToTyparRenaming (ovByMethValRef.MemberApparentParent.Typars(m)) enclosingTypars let res = instSlotSig parentToMemberInst slotsig res | None -> // Note: it appears PartitionValRefTypars should never return 'None' slotsig /// Construct the data representing a parameter in the signature of an abstract method slot let mkSlotParam (ty,argInfo:ArgReprInfo) = TSlotParam(Option.map textOfId argInfo.Name, ty, false,false,false,argInfo.Attribs) /// Construct the data representing the signature of an abstract method slot let mkSlotSig (nm,typ,ctps,mtps,paraml,retTy) = copySlotSig (TSlotSig(nm,typ,ctps,mtps,paraml,retTy)) type MethInfo with /// Get the return type of a method info, where 'void' is returned as 'None' member minfo.GetCompiledReturnTy (amap, m, minst) = match minfo with | ILMeth(_g,ilminfo,_) -> ilminfo.GetCompiledReturnTy(amap, m, minst) | FSMeth(g,typ,vref,_) -> let memberParentTypars,memberMethodTypars,retTy,parentTyArgs = AnalyzeTypeOfMemberVal g (typ,vref) retTy |> Option.map (instType (CombineMethInsts memberParentTypars memberMethodTypars parentTyArgs minst)) | DefaultStructCtor _ -> None #if EXTENSIONTYPING | ProvidedMeth(_,mi,amap,m) -> GetCompiledReturnTyOfProvidedMethodInfo amap m mi #endif /// Get the return type of a method info, where 'void' is returned as 'unit' member minfo.GetFSharpReturnTy(amap, m, minst) = minfo.GetCompiledReturnTy(amap, m, minst) |> GetFSharpViewOfReturnType amap.g /// Get the parameter types of a method info member minfo.GetParamTypes(amap, m, minst) = match minfo with | ILMeth(_g,ilminfo,_) -> // A single group of tupled arguments [ ilminfo.GetParamTypes(amap,m,minst) ] | FSMeth(g,typ,vref,_) -> let memberParentTypars,memberMethodTypars,_,parentTyArgs = AnalyzeTypeOfMemberVal g (typ,vref) let paramTypes = ParamNameAndTypesOfMember g vref let inst = CombineMethInsts memberParentTypars memberMethodTypars parentTyArgs minst paramTypes |> List.mapSquared (fun (ParamNameAndType(_,ty)) -> instType inst ty) | DefaultStructCtor _ -> [] #if EXTENSIONTYPING | ProvidedMeth(_,mi,amap,m) -> // A single group of tupled arguments [ [ for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters",m) do yield Import.ImportProvidedType amap m (p.PApply((fun p -> p.ParameterType),m)) ] ] #endif /// Get the (zero or one) 'self'/'this'/'object' arguments associated with a method. An instance extension method returns /// one object argument. member minfo.GetObjArgTypes (amap, m, minst) = match minfo with | ILMeth(_g,ilminfo,_) -> ilminfo.GetObjArgTypes(amap, m, minst) | FSMeth(_g,typ,vref,_) -> if vref.IsInstanceMember then [typ] else [] | DefaultStructCtor _ -> [] #if EXTENSIONTYPING | ProvidedMeth(_,mi,amap,m) -> if mi.PUntaint((fun mi -> mi.IsStatic || mi.IsConstructor),m) then [] // no 'this' argument else [ Import.ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType),m)) ] // find the type of the 'this' argument #endif /// Get the parameter attributes of a method info, which get combined with the parameter names and types member minfo.GetParamAttribs(amap, m) = match minfo with | ILMeth(g,ilMethInfo,_) -> [ [ for p in ilMethInfo.ParamMetadata do let isParamArrayArg = TryFindILAttribute g.attrib_ParamArrayAttribute p.CustomAttrs let isOutArg = (p.IsOut && not p.IsIn) // Note: we get default argument values from VB and other .NET language metadata let optArgInfo = OptionalArgInfoOfILParameter g amap m ilMethInfo.MetadataScope ilMethInfo.ActualTypeInst p yield (isParamArrayArg, isOutArg, optArgInfo) ] ] | FSMeth(g,_,vref,_) -> vref |> ArgInfosOfMember g |> List.mapSquared (fun (ty,argInfo) -> let isParamArrayArg = HasFSharpAttribute g g.attrib_ParamArrayAttribute argInfo.Attribs let isOutArg = HasFSharpAttribute g g.attrib_OutAttribute argInfo.Attribs && isByrefTy g ty let isOptArg = HasFSharpAttribute g g.attrib_OptionalArgumentAttribute argInfo.Attribs // Note: can't specify caller-side default arguments in F#, by design (default is specified on the callee-side) let optArgInfo = if isOptArg then CalleeSide else NotOptional (isParamArrayArg,isOutArg,optArgInfo)) | DefaultStructCtor _ -> [[]] #if EXTENSIONTYPING | ProvidedMeth(g,mi,_,_) -> // A single group of tupled arguments [ [for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do let isParamArrayArg = p.PUntaint((fun px -> (px :> IProvidedCustomAttributeProvider).GetAttributeConstructorArgs(p.TypeProvider.PUntaintNoFailure(id), typeof.FullName).IsSome),m) let optArgInfo = OptionalArgInfoOfProvidedParameter g amap m p yield (isParamArrayArg, p.PUntaint((fun p -> p.IsOut), m), optArgInfo)] ] #endif /// Get the signature of an abstract method slot. // // This code has grown organically over time. We've managed to unify the ILMeth+ProvidedMeth paths. // The FSMeth, ILMeth+ProvidedMeth paths can probably be unified too. member minfo.GetSlotSig(amap, m) = match minfo with | FSMeth(g,typ,vref,_) -> match vref.RecursiveValInfo with | ValInRecScope(false) -> error(Error((FSComp.SR.InvalidRecursiveReferenceToAbstractSlot()),m)); | _ -> () let allTyparsFromMethod,_,retTy,_ = GetTypeOfMemberInMemberForm g vref // A slot signature is w.r.t. the type variables of the type it is associated with. // So we have to rename from the member type variables to the type variables of the type. let formalEnclosingTypars = (tcrefOfAppTy g typ).Typars(m) let formalEnclosingTyparsFromMethod,formalMethTypars = List.chop formalEnclosingTypars.Length allTyparsFromMethod let methodToParentRenaming,_ = mkTyparToTyparRenaming formalEnclosingTyparsFromMethod formalEnclosingTypars let formalParams = vref |> ArgInfosOfMember g |> List.mapSquared (map1Of2 (instType methodToParentRenaming) >> mkSlotParam ) let formalRetTy = Option.map (instType methodToParentRenaming) retTy mkSlotSig(minfo.LogicalName, minfo.EnclosingType, formalEnclosingTypars, formalMethTypars, formalParams, formalRetTy) | DefaultStructCtor _ -> error(InternalError("no slotsig for DefaultStructCtor",m)) | _ -> let g = minfo.TcGlobals // slotsigs must contain the formal types for the arguments and return type // a _formal_ 'void' return type is represented as a 'unit' type. // slotsigs are independent of instantiation: if an instantiation // happens to make the return type 'unit' (i.e. it was originally a variable type // then that does not correspond to a slotsig compiled as a 'void' return type. // REVIEW: should we copy down attributes to slot params? let tcref = tcrefOfAppTy g minfo.EnclosingType let formalEnclosingTyparsOrig = tcref.Typars(m) let formalEnclosingTypars = copyTypars formalEnclosingTyparsOrig let _,formalEnclosingTyparTys = FixupNewTypars m [] [] formalEnclosingTyparsOrig formalEnclosingTypars let formalMethTypars = copyTypars minfo.FormalMethodTypars let _,formalMethTyparTys = FixupNewTypars m formalEnclosingTypars formalEnclosingTyparTys minfo.FormalMethodTypars formalMethTypars let formalRetTy, formalParams = match minfo with | ILMeth(_,ilminfo,_) -> let ftinfo = ILTypeInfo.FromType g (TType_app(tcref,formalEnclosingTyparTys)) let formalRetTy = ImportReturnTypeFromMetaData amap m ilminfo.RawMetadata.Return.Type ftinfo.ILScopeRef ftinfo.TypeInst formalMethTyparTys let formalParams = [ [ for p in ilminfo.RawMetadata.Parameters do let paramType = ImportTypeFromMetadata amap m ftinfo.ILScopeRef ftinfo.TypeInst formalMethTyparTys p.Type yield TSlotParam(p.Name, paramType, p.IsIn, p.IsOut, p.IsOptional, []) ] ] formalRetTy, formalParams #if EXTENSIONTYPING | ProvidedMeth (_,mi,_,_) -> // GENERIC TYPE PROVIDERS: for generics, formal types should be generated here, not the actual types // For non-generic type providers there is no difference let formalRetTy = minfo.GetCompiledReturnTy(amap, m, formalMethTyparTys) // GENERIC TYPE PROVIDERS: formal types should be generated here, not the actual types // For non-generic type providers there is no difference let formalParams = [ [ for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do let paramName = p.PUntaint((fun p -> match p.Name with null -> None | s -> Some s),m) let paramType = Import.ImportProvidedType amap m (p.PApply((fun p -> p.ParameterType),m)) let isIn, isOut,isOptional = p.PUntaint((fun p -> p.IsIn, p.IsOut, p.IsOptional),m) yield TSlotParam(paramName, paramType, isIn, isOut, isOptional, []) ] ] formalRetTy, formalParams #endif | _ -> failwith "unreachable" mkSlotSig(minfo.LogicalName, minfo.EnclosingType, formalEnclosingTypars, formalMethTypars,formalParams, formalRetTy) /// Get the ParamData objects for the parameters of a MethInfo member minfo.GetParamDatas(amap, m, minst) = let paramNamesAndTypes = match minfo with | ILMeth(_g,ilminfo,_) -> [ ilminfo.GetParamNamesAndTypes(amap,m,minst) ] | FSMeth(g,typ,vref,_) -> let memberParentTypars,memberMethodTypars,_,parentTyArgs = AnalyzeTypeOfMemberVal g (typ,vref) let items = ParamNameAndTypesOfMember g vref let inst = CombineMethInsts memberParentTypars memberMethodTypars parentTyArgs minst items |> InstParamNameAndTypes inst | DefaultStructCtor _ -> [[]] #if EXTENSIONTYPING | ProvidedMeth(_g,mi,amap,_) -> // A single set of tupled parameters [ [for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do let pname = match p.PUntaint((fun p -> p.Name), m) with | null -> None | name -> Some name let ptyp = match p.PApply((fun p -> p.ParameterType), m) with | Tainted.Null -> amap.g.unit_ty | parameterType -> Import.ImportProvidedType amap m parameterType yield ParamNameAndType(pname,ptyp) ] ] #endif let paramAttribs = minfo.GetParamAttribs(amap, m) (paramAttribs,paramNamesAndTypes) ||> List.map2 (List.map2 (fun (isParamArrayArg,isOutArg,optArgInfo) (ParamNameAndType(nmOpt,pty)) -> ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,pty))) /// Select all the type parameters of the declaring type of a method. /// /// For extension methods, no type parameters are returned, /// because all the type parameters are considered to be associated with the method, rather than the declaring type, even for extension /// methods extending generic types. member minfo.GetFormalTyparsOfEnclosingType m = match minfo with | ILMeth(_,ilminfo,_) -> match ilminfo with | ILMethInfo(tinfo,_,_,_) when not ilminfo.IsCSharpExtensionMethod -> tinfo.FormalTypars m | _ -> [] // For extension methods all type variables are on the method | FSMeth(g,typ,vref,_) -> let memberParentTypars,_,_,_ = AnalyzeTypeOfMemberVal g (typ,vref) memberParentTypars | DefaultStructCtor(g,typ) -> (tcrefOfAppTy g typ).Typars(m) #if EXTENSIONTYPING | ProvidedMeth (g,_,_,_) -> (tcrefOfAppTy g minfo.EnclosingType).Typars(m) #endif //------------------------------------------------------------------------- // Method signatures //------------------------------------------------------------------------- /// Represents the information about the compiled form of a method signature. Used when analyzing implementation /// relations between members and abstract slots. type CompiledSig = CompiledSig of TType list list * TType option * Typars * TyparInst /// Get the information about the compiled form of a method signature. Used when analyzing implementation /// relations between members and abstract slots. let CompiledSigOfMeth g amap m (minfo:MethInfo) = let formalMethTypars = minfo.FormalMethodTypars let fminst = generalizeTypars formalMethTypars let vargtys = minfo.GetParamTypes(amap, m, fminst) let vrty = minfo.GetCompiledReturnTy(amap, m, fminst) // The formal method typars returned are completely formal - they don't take into account the instantiation // of the enclosing type. For example, they may have constraints involving the _formal_ type parameters // of the enclosing type. This instaniations can be used to interpret those type parameters let fmtpinst = let parentTyArgs = argsOfAppTy g minfo.EnclosingType let memberParentTypars = minfo.GetFormalTyparsOfEnclosingType m mkTyparInst memberParentTypars parentTyArgs CompiledSig(vargtys,vrty,formalMethTypars,fmtpinst) /// Used to hide/filter members from super classes based on signature let MethInfosEquivByNameAndPartialSig erasureFlag ignoreFinal g amap m (minfo:MethInfo) (minfo2:MethInfo) = (minfo.LogicalName = minfo2.LogicalName) && (minfo.GenericArity = minfo2.GenericArity) && (ignoreFinal || minfo.IsFinal = minfo2.IsFinal) && let formalMethTypars = minfo.FormalMethodTypars let fminst = generalizeTypars formalMethTypars let formalMethTypars2 = minfo2.FormalMethodTypars let fminst2 = generalizeTypars formalMethTypars2 let argtys = minfo.GetParamTypes(amap, m, fminst) let argtys2 = minfo2.GetParamTypes(amap, m, fminst2) (argtys,argtys2) ||> List.lengthsEqAndForall2 (List.lengthsEqAndForall2 (typeAEquivAux erasureFlag g (TypeEquivEnv.FromEquivTypars formalMethTypars formalMethTypars2))) /// Used to hide/filter members from super classes based on signature let PropInfosEquivByNameAndPartialSig erasureFlag g amap m (pinfo:PropInfo) (pinfo2:PropInfo) = pinfo.PropertyName = pinfo2.PropertyName && let argtys = pinfo.GetParamTypes(amap,m) let argtys2 = pinfo2.GetParamTypes(amap,m) List.lengthsEqAndForall2 (typeEquivAux erasureFlag g) argtys argtys2 /// Used to hide/filter members from super classes based on signature let MethInfosEquivByNameAndSig erasureFlag ignoreFinal g amap m minfo minfo2 = MethInfosEquivByNameAndPartialSig erasureFlag ignoreFinal g amap m minfo minfo2 && let (CompiledSig(_,retTy,formalMethTypars,_)) = CompiledSigOfMeth g amap m minfo let (CompiledSig(_,retTy2,formalMethTypars2,_)) = CompiledSigOfMeth g amap m minfo2 match retTy,retTy2 with | None,None -> true | Some retTy,Some retTy2 -> typeAEquivAux erasureFlag g (TypeEquivEnv.FromEquivTypars formalMethTypars formalMethTypars2) retTy retTy2 | _ -> false /// Used to hide/filter members from super classes based on signature let PropInfosEquivByNameAndSig erasureFlag g amap m (pinfo:PropInfo) (pinfo2:PropInfo) = PropInfosEquivByNameAndPartialSig erasureFlag g amap m pinfo pinfo2 && let retTy = pinfo.GetPropertyType(amap,m) let retTy2 = pinfo2.GetPropertyType(amap,m) typeEquivAux erasureFlag g retTy retTy2 //------------------------------------------------------------------------- // Basic accessibility logic //------------------------------------------------------------------------- /// Represents the 'keys' a particular piece of code can use to access other constructs?. [] type AccessorDomain = /// AccessibleFrom(cpaths, tyconRefOpt) /// /// cpaths: indicates we have the keys to access any members private to the given paths // tyconRefOpt: indicates we have the keys to access any protected members of the super types of 'TyconRef' | AccessibleFrom of CompilationPath list * TyconRef option | AccessibleFromEverywhere /// An AccessorDomain which returns everything but .NET private/internal items /// This is used /// - when solving member trait constraints, which are solved independently of accessibility /// - for failure paths in error reporting, e.g. to produce an error that an F# item is not accessible /// - an adhoc use in service.fs to look up a delegate signature | AccessibleFromSomeFSharpCode /// Can access everything | AccessibleFromSomewhere // Hashing and comparison is used for the memoization tables keyed by an accessor domain. // It is dependent on a TcGlobals because of the TyconRef in the data structure static member CustomGetHashCode(ad:AccessorDomain) = match ad with | AccessibleFrom _ -> 1 | AccessibleFromEverywhere -> 2 | AccessibleFromSomeFSharpCode -> 3 | AccessibleFromSomewhere -> 4 static member CustomEquals(g:TcGlobals, ad1:AccessorDomain, ad2:AccessorDomain) = match ad1, ad2 with | AccessibleFrom(cs1,tc1), AccessibleFrom(cs2,tc2) -> (cs1 = cs2) && (match tc1,tc2 with None,None -> true | Some tc1, Some tc2 -> tyconRefEq g tc1 tc2 | _ -> false) | AccessibleFromEverywhere, AccessibleFromEverywhere -> true | AccessibleFromSomeFSharpCode, AccessibleFromSomeFSharpCode -> true | AccessibleFromSomewhere, AccessibleFromSomewhere -> true | _ -> false module AccessibilityLogic = let IsAccessible ad taccess = match ad with | AccessibleFromEverywhere -> canAccessFromEverywhere taccess | AccessibleFromSomeFSharpCode -> canAccessFromSomewhere taccess | AccessibleFromSomewhere -> true | AccessibleFrom (cpaths,_tcrefViewedFromOption) -> List.exists (canAccessFrom taccess) cpaths let private CheckILMemberAccess g amap m (tcrefOfViewedItem : TyconRef) ad access = match ad with | AccessibleFromEverywhere -> access = ILMemberAccess.Public | AccessibleFromSomeFSharpCode -> (access = ILMemberAccess.Public || access = ILMemberAccess.Family || access = ILMemberAccess.FamilyOrAssembly) | AccessibleFrom (cpaths,tcrefViewedFromOption) -> let accessibleByFamily = ((access = ILMemberAccess.Family || access = ILMemberAccess.FamilyOrAssembly) && match tcrefViewedFromOption with | None -> false | Some tcrefViewedFrom -> ExistsHeadTypeInEntireHierarchy g amap m (generalizedTyconRef tcrefViewedFrom) tcrefOfViewedItem) let accessibleByInternalsVisibleTo = (access = ILMemberAccess.Assembly && canAccessFromOneOf cpaths tcrefOfViewedItem.CompilationPath) (access = ILMemberAccess.Public) || accessibleByFamily || accessibleByInternalsVisibleTo | AccessibleFromSomewhere -> true let private isILTypeDefAccessible ad (tdef: ILTypeDef) = match ad with | AccessibleFromSomewhere -> true | AccessibleFromEverywhere | AccessibleFromSomeFSharpCode | AccessibleFrom _ -> tdef.Access = ILTypeDefAccess.Public || tdef.Access = ILTypeDefAccess.Nested ILMemberAccess.Public // is tcref visible through the AccessibleFrom(cpaths,_)? note: InternalsVisibleTo extends those cpaths. let private isTyconAccessibleViaVisibleTo ad (tcrefOfViewedItem:TyconRef) = match ad with | AccessibleFromEverywhere | AccessibleFromSomewhere | AccessibleFromSomeFSharpCode -> false | AccessibleFrom (cpaths,_tcrefViewedFromOption) -> canAccessFromOneOf cpaths tcrefOfViewedItem.CompilationPath let private isILTypeInfoAccessible ad (ILTypeInfo(tcrefOfViewedItem,_,_tinst,tdef)) = isILTypeDefAccessible ad tdef || isTyconAccessibleViaVisibleTo ad tcrefOfViewedItem let private isILMemberAccessible g amap m ad tinfo access = isILTypeInfoAccessible ad tinfo && CheckILMemberAccess g amap m tinfo.TyconRef ad access let IsEntityAccessible ad (tcref:TyconRef) = if tcref.IsILTycon then (isTyconAccessibleViaVisibleTo ad tcref) || // either: visibleTo (e.g. InternalsVisibleTo) (let _scoref,enc,tdef = tcref.ILTyconInfo // or: accessible, along with all enclosing types List.forall (isILTypeDefAccessible ad) enc && isILTypeDefAccessible ad tdef) else tcref.Accessibility |> IsAccessible ad let CheckTyconAccessible m ad tcref = let res = IsEntityAccessible ad tcref if not res then errorR(Error(FSComp.SR.typeIsNotAccessible tcref.DisplayName,m)) res let IsTyconReprAccessible ad tcref = IsEntityAccessible ad tcref && IsAccessible ad tcref.TypeReprAccessibility let CheckTyconReprAccessible m ad tcref = CheckTyconAccessible m ad tcref && (let res = IsAccessible ad tcref.TypeReprAccessibility if not res then errorR (Error (FSComp.SR.unionCasesAreNotAccessible tcref.DisplayName,m)); res) let rec IsTypeAccessible g ad ty = not (isAppTy g ty) || let tcref,tinst = destAppTy g ty IsEntityAccessible ad tcref && IsTypeInstAccessible g ad tinst and IsProvidedMemberAccessible g amap m ad ty access = let isTyAccessible = IsTypeAccessible g ad ty if not isTyAccessible then false else not (isAppTy g ty) || let tcrefOfViewedItem,_ = destAppTy g ty CheckILMemberAccess g amap m tcrefOfViewedItem ad access and IsTypeInstAccessible g ad tinst = match tinst with | [] -> true | _ -> List.forall (IsTypeAccessible g ad) tinst let getILAccess isPublic isFamily isFamilyOrAssembly isFamilyAndAssembly = if isPublic then ILMemberAccess.Public elif isFamily then ILMemberAccess.Family elif isFamilyOrAssembly then ILMemberAccess.FamilyOrAssembly elif isFamilyAndAssembly then ILMemberAccess.FamilyAndAssembly else ILMemberAccess.Private let IsILFieldInfoAccessible g amap m ad x = match x with | ILFieldInfo (tinfo,fd) -> isILMemberAccessible g amap m ad tinfo fd.Access #if EXTENSIONTYPING | ProvidedField (g, tpfi, amap, m) as pfi -> let access = tpfi.PUntaint((fun fi -> getILAccess fi.IsPublic fi.IsFamily fi.IsFamilyOrAssembly fi.IsFamilyAndAssembly), m) IsProvidedMemberAccessible g amap m ad pfi.EnclosingType access #endif let IsILEventInfoAccessible g amap m ad (ILEventInfo (tinfo,edef)) = let access = (resolveILMethodRef tinfo.RawMetadata edef.AddMethod).Access isILMemberAccessible g amap m ad tinfo access let IsILMethInfoAccessible g amap m ad = function | ILMethInfo (tinfo,_,mdef,_) -> isILMemberAccessible g amap m ad tinfo mdef.Access | ILFSMethInfo (tcref,_,_,mdef) -> CheckILMemberAccess g amap m tcref ad mdef.Access let IsILPropInfoAccessible g amap m ad (ILPropInfo(tinfo,pdef)) = let tdef = tinfo.RawMetadata let ilAccess = match pdef.GetMethod with | Some mref -> (resolveILMethodRef tdef mref).Access | None -> match pdef.SetMethod with | None -> ILMemberAccess.Public | Some mref -> (resolveILMethodRef tdef mref).Access isILMemberAccessible g amap m ad tinfo ilAccess let IsValAccessible ad (vref:ValRef) = vref.Accessibility |> IsAccessible ad let CheckValAccessible m ad (vref:ValRef) = if not (IsValAccessible ad vref) then errorR (Error (FSComp.SR.valueIsNotAccessible vref.DisplayName,m)) let IsUnionCaseAccessible ad (ucref:UnionCaseRef) = IsTyconReprAccessible ad ucref.TyconRef && IsAccessible ad ucref.UnionCase.Accessibility let CheckUnionCaseAccessible m ad (ucref:UnionCaseRef) = CheckTyconReprAccessible m ad ucref.TyconRef && (let res = IsAccessible ad ucref.UnionCase.Accessibility if not res then errorR (Error (FSComp.SR.unionCaseIsNotAccessible ucref.CaseName,m)) res) let IsRecdFieldAccessible ad (rfref:RecdFieldRef) = IsTyconReprAccessible ad rfref.TyconRef && IsAccessible ad rfref.RecdField.Accessibility let CheckRecdFieldAccessible m ad (rfref:RecdFieldRef) = CheckTyconReprAccessible m ad rfref.TyconRef && (let res = IsAccessible ad rfref.RecdField.Accessibility if not res then errorR (Error (FSComp.SR.fieldIsNotAccessible rfref.FieldName,m)) res) let CheckRecdFieldInfoAccessible m ad (rfinfo:RecdFieldInfo) = CheckRecdFieldAccessible m ad rfinfo.RecdFieldRef |> ignore let CheckILFieldInfoAccessible g amap m ad finfo = if not (IsILFieldInfoAccessible g amap m ad finfo) then errorR (Error (FSComp.SR.structOrClassFieldIsNotAccessible finfo.FieldName,m)) let IsMethInfoAccessible amap m ad = function | ILMeth (g,x,_) -> IsILMethInfoAccessible g amap m ad x | FSMeth (_,_,vref,_) -> IsValAccessible ad vref | DefaultStructCtor(g,typ) -> IsTypeAccessible g ad typ #if EXTENSIONTYPING | ProvidedMeth(g,tpmb,_amap,m) as etmi -> let access = tpmb.PUntaint((fun mi -> getILAccess mi.IsPublic mi.IsFamily mi.IsFamilyOrAssembly mi.IsFamilyAndAssembly), m) IsProvidedMemberAccessible g amap m ad etmi.EnclosingType access #endif let IsPropInfoAccessible g amap m ad = function | ILProp (_,x) -> IsILPropInfoAccessible g amap m ad x | FSProp (_,_,Some vref,_) | FSProp (_,_,_,Some vref) -> IsValAccessible ad vref #if EXTENSIONTYPING | ProvidedProp (g, tppi, amap, m) as pp-> let access = let a = tppi.PUntaint((fun ppi -> let tryGetILAccessForProvidedMethodBase (mi : ProvidedMethodBase) = match mi with | null -> None | mi -> Some(getILAccess mi.IsPublic mi.IsFamily mi.IsFamilyOrAssembly mi.IsFamilyAndAssembly) match tryGetILAccessForProvidedMethodBase(ppi.GetGetMethod()) with | None -> tryGetILAccessForProvidedMethodBase(ppi.GetSetMethod()) | x -> x), m) defaultArg a ILMemberAccess.Public IsProvidedMemberAccessible g amap m ad pp.EnclosingType access #endif | _ -> false let IsFieldInfoAccessible ad (rfref:RecdFieldInfo) = IsAccessible ad rfref.RecdField.Accessibility open AccessibilityLogic //------------------------------------------------------------------------- // Check custom attributes //------------------------------------------------------------------------- exception ObsoleteWarning of string * range exception ObsoleteError of string * range /// Check custom attributes. This is particularly messy because custom attributes come in in three different /// formats. module AttributeChecking = // This is used for AttributeUsageAttribute, DefaultMemberAttribute and ConditionalAttribute (on attribute types) let TryBindTyconRefAttribute g m (AttribInfo (atref,_) as args) (tcref:TyconRef) f1 f2 f3 = ignore m; ignore f3 match metadataOfTycon tcref.Deref with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let provAttribs = info.ProvidedType.PApply((fun a -> (a :> IProvidedCustomAttributeProvider)),m) match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with | Some args -> f3 args | None -> None #endif | ILTypeMetadata (_,tdef) -> match TryDecodeILAttribute g atref (Some(atref.Scope)) tdef.CustomAttrs with | Some attr -> f1 attr | _ -> None | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> match TryFindFSharpAttribute g args tcref.Attribs with | Some attr -> f2 attr | _ -> None let BindMethInfoAttributes m minfo f1 f2 f3 = ignore m; ignore f3 match minfo with | ILMeth (_,x,_) -> f1 x.RawMetadata.CustomAttrs | FSMeth (_,_,vref,_) -> f2 vref.Attribs | DefaultStructCtor _ -> f2 [] #if EXTENSIONTYPING | ProvidedMeth (_,mi,_,_) -> f3 (mi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) #endif let TryBindMethInfoAttribute g m (AttribInfo(atref,_) as attribSpec) minfo f1 f2 f3 = ignore f3 BindMethInfoAttributes m minfo (fun ilAttribs -> TryDecodeILAttribute g atref (Some(atref.Scope)) ilAttribs |> Option.bind f1) (fun fsAttribs -> TryFindFSharpAttribute g attribSpec fsAttribs |> Option.bind f2) #if EXTENSIONTYPING (fun provAttribs -> match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), atref.FullName)),m) with | Some args -> f3 args | None -> None) #else (fun _provAttribs -> None) #endif /// This is just used for the 'ConditionalAttribute' attribute let TryFindMethInfoStringAttribute g m attribSpec minfo = TryBindMethInfoAttribute g m attribSpec minfo (function ([ILAttribElem.String (Some msg) ],_) -> Some msg | _ -> None) (function (Attrib(_,_,[ AttribStringArg msg ],_,_,_,_)) -> Some msg | _ -> None) (function [ Some ((:? string as msg) : obj) ] -> Some msg | _ -> None) /// This is used to detect the 'DefaultMemberAttribute' and 'ConditionalAttribute' attributes (on type definitions) let TryFindTyconRefStringAttribute g m attribSpec tcref = TryBindTyconRefAttribute g m attribSpec tcref (function ([ILAttribElem.String (Some(msg)) ],_) -> Some msg | _ -> None) (function (Attrib(_,_,[ AttribStringArg(msg) ],_,_,_,_)) -> Some msg | _ -> None) (function [ Some ((:? string as msg) : obj) ] -> Some msg | _ -> None) /// Check IL attributes for 'ObsoleteAttribute' let private CheckILAttributes g cattrs m = let (AttribInfo(tref,_)) = g.attrib_SystemObsolete match TryDecodeILAttribute g tref (Some(tref.Scope)) cattrs with | Some ([ILAttribElem.String (Some msg) ],_) -> WarnD(ObsoleteWarning(msg,m)) | Some ([ILAttribElem.String (Some msg); ILAttribElem.Bool isError ],_) -> if isError then ErrorD (ObsoleteError(msg,m)) else WarnD (ObsoleteWarning(msg,m)) | Some ([ILAttribElem.String None ],_) -> WarnD(ObsoleteWarning("",m)) | Some _ -> WarnD(ObsoleteWarning("",m)) | None -> CompleteD /// Check F# attributes for 'ObsoleteAttribute', 'CompilerMessageAttribute' and 'ExperimentalAttribute' let CheckFSharpAttributes g attribs m = if isNil attribs then CompleteD else (match TryFindFSharpAttribute g g.attrib_SystemObsolete attribs with | Some(Attrib(_,_,[ AttribStringArg s ],_,_,_,_)) -> WarnD(ObsoleteWarning(s,m)) | Some(Attrib(_,_,[ AttribStringArg s; AttribBoolArg(isError) ],_,_,_,_)) -> if isError then ErrorD (ObsoleteError(s,m)) else WarnD (ObsoleteWarning(s,m)) | Some _ -> WarnD(ObsoleteWarning("", m)) | None -> CompleteD ) ++ (fun () -> match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with | Some(Attrib(_,_,[ AttribStringArg s ; AttribInt32Arg n ],namedArgs,_,_,_)) -> let msg = UserCompilerMessage(s,n,m) let isError = match namedArgs with | ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v | _ -> false if isError then ErrorD msg else WarnD msg | _ -> CompleteD ) ++ (fun () -> match TryFindFSharpAttribute g g.attrib_ExperimentalAttribute attribs with | Some(Attrib(_,_,[ AttribStringArg(s) ],_,_,_,_)) -> WarnD(Experimental(s,m)) | Some _ -> WarnD(Experimental(FSComp.SR.experimentalConstruct (), m)) | _ -> CompleteD ) ++ (fun () -> match TryFindFSharpAttribute g g.attrib_UnverifiableAttribute attribs with | Some _ -> WarnD(PossibleUnverifiableCode(m)) | _ -> CompleteD ) #if EXTENSIONTYPING let private CheckProvidedAttributes g m (provAttribs: Tainted) = let (AttribInfo(tref,_)) = g.attrib_SystemObsolete match provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), tref.FullName)),m) with | Some [ Some (:? string as msg) ] -> WarnD(ObsoleteWarning(msg,m)) | Some [ Some (:? string as msg); Some (:?bool as isError) ] -> if isError then ErrorD (ObsoleteError(msg,m)) else WarnD (ObsoleteWarning(msg,m)) | Some [ None ] -> WarnD(ObsoleteWarning("",m)) | Some _ -> WarnD(ObsoleteWarning("",m)) | None -> CompleteD #endif /// Check IL attributes for existence of 'ObsoleteAttribute', to suppress the item in intellisense let CheckILAttributesForUnseen g cattrs _m = let (AttribInfo(tref,_)) = g.attrib_SystemObsolete isSome (TryDecodeILAttribute g tref (Some(tref.Scope)) cattrs) /// Check F# attributes for existence of 'ObsoleteAttribute', to suppress the item in intellisense /// Also check F# attributes for CompilerMessageAttribute, which has an IsHidden argument that allows /// items to be suppressed from intellisense. let CheckFSharpAttributesForUnseen g attribs _m = nonNil attribs && (let isObsolete = isSome (TryFindFSharpAttribute g g.attrib_SystemObsolete attribs) let isHidden = (match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with | Some(Attrib(_,_,[AttribStringArg _; AttribInt32Arg messageNumber], ExtractAttribNamedArg "IsHidden" (AttribBoolArg v),_,_,_)) -> // Message number 62 is for "ML Compatibility". Items labelled with this are visible in intellisense // when mlCompatibility is set. v && not (messageNumber = 62 && g.mlCompatibility) | _ -> false) isObsolete || isHidden ) #if EXTENSIONTYPING /// Check provided attributes for existence of 'ObsoleteAttribute', to suppress the item in intellisense let CheckProvidedAttributesForUnseen (provAttribs: Tainted) m = provAttribs.PUntaint((fun a -> a.GetAttributeConstructorArgs(provAttribs.TypeProvider.PUntaintNoFailure(id), typeof.FullName).IsSome),m) #endif let CheckPropInfoAttributes pinfo m = match pinfo with | ILProp(g,ILPropInfo(_,pdef)) -> CheckILAttributes g pdef.CustomAttrs m | FSProp(g,_,Some vref,_) | FSProp(g,_,_,Some vref) -> CheckFSharpAttributes g vref.Attribs m | FSProp _ -> failwith "CheckPropInfoAttributes: unreachable" #if EXTENSIONTYPING | ProvidedProp (g,pi,_amap,m) -> CheckProvidedAttributes g m (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) #endif let CheckILFieldAttributes g (finfo:ILFieldInfo) m = match finfo with | ILFieldInfo(_,pd) -> CheckILAttributes g pd.CustomAttrs m |> CommitOperationResult #if EXTENSIONTYPING | ProvidedField (g,fi,_amap,m) -> CheckProvidedAttributes g m (fi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) |> CommitOperationResult #endif let CheckMethInfoAttributes g m tyargsOpt minfo = let search = BindMethInfoAttributes m minfo (fun ilAttribs -> Some(CheckILAttributes g ilAttribs m)) (fun fsAttribs -> let res = CheckFSharpAttributes g fsAttribs m ++ (fun () -> if isNone tyargsOpt && HasFSharpAttribute g g.attrib_RequiresExplicitTypeArgumentsAttribute fsAttribs then ErrorD(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(minfo.LogicalName),m)); else CompleteD) Some res) #if EXTENSIONTYPING (fun provAttribs -> Some (CheckProvidedAttributes g m provAttribs)) #else (fun _provAttribs -> None) #endif match search with | Some res -> res | None -> CompleteD // no attribute = no errors let MethInfoIsUnseen g m typ minfo = let isUnseenByObsoleteAttrib = match BindMethInfoAttributes m minfo (fun ilAttribs -> Some(CheckILAttributesForUnseen g ilAttribs m)) (fun fsAttribs -> Some(CheckFSharpAttributesForUnseen g fsAttribs m)) #if EXTENSIONTYPING (fun provAttribs -> Some(CheckProvidedAttributesForUnseen provAttribs m)) #else (fun _provAttribs -> None) #endif with | Some res -> res | None -> false let isUnseenByHidingAttribute = #if EXTENSIONTYPING not (isObjTy g typ) && isAppTy g typ && isObjTy g minfo.EnclosingType && let tcref = tcrefOfAppTy g typ match tcref.TypeReprInfo with | TProvidedTypeExtensionPoint info -> info.ProvidedType.PUntaint((fun st -> (st :> IProvidedCustomAttributeProvider).GetHasTypeProviderEditorHideMethodsAttribute(info.ProvidedType.TypeProvider.PUntaintNoFailure(id))), m) | _ -> // This attribute check is done by name to ensure compilation doesn't take a dependency // on Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute. // // We are only interested in filtering out the method on System.Object, so it is sufficient // just to look at the attributes on IL methods. if tcref.IsILTycon then tcref.ILTyconRawMetadata.CustomAttrs.AsList |> List.exists (fun attr -> attr.Method.EnclosingType.TypeSpec.Name = typeof.FullName) else false #else typ |> ignore false #endif isUnseenByObsoleteAttrib || isUnseenByHidingAttribute let PropInfoIsUnseen m pinfo = match pinfo with | ILProp (g,ILPropInfo(_,pdef)) -> CheckILAttributesForUnseen g pdef.CustomAttrs m | FSProp (g,_,Some vref,_) | FSProp (g,_,_,Some vref) -> CheckFSharpAttributesForUnseen g vref.Attribs m | FSProp _ -> failwith "CheckPropInfoAttributes: unreachable" #if EXTENSIONTYPING | ProvidedProp (_g,pi,_amap,m) -> CheckProvidedAttributesForUnseen (pi.PApply((fun st -> (st :> IProvidedCustomAttributeProvider)),m)) m #endif let CheckEntityAttributes g (x:TyconRef) m = if x.IsILTycon then CheckILAttributes g x.ILTyconRawMetadata.CustomAttrs m else CheckFSharpAttributes g x.Attribs m let CheckUnionCaseAttributes g (x:UnionCaseRef) m = CheckEntityAttributes g x.TyconRef m ++ (fun () -> CheckFSharpAttributes g x.Attribs m) let CheckRecdFieldAttributes g (x:RecdFieldRef) m = CheckEntityAttributes g x.TyconRef m ++ (fun () -> CheckFSharpAttributes g x.PropertyAttribs m) let CheckValAttributes g (x:ValRef) m = CheckFSharpAttributes g x.Attribs m let CheckRecdFieldInfoAttributes g (x:RecdFieldInfo) m = CheckRecdFieldAttributes g x.RecdFieldRef m open AttributeChecking //------------------------------------------------------------------------- // Build calls //------------------------------------------------------------------------- /// Build an expression node that is a call to a .NET method. let BuildILMethInfoCall g amap m isProp (minfo:ILMethInfo) valUseFlags minst direct args = let valu = match minfo with | ILMethInfo(tinfo,_,_,_) -> tinfo.IsValueType | ILFSMethInfo(_,kind,_,_) when kind.IsValueType -> true | ILFSMethInfo _ -> false let ctor = minfo.IsConstructor if minfo.IsClassConstructor then error (InternalError (minfo.ILName+": cannot call a class constructor",m)); let useCallvirt = not valu && not direct && minfo.IsVirtual let isProtected = minfo.IsProtectedAccessibility let ilMethRef = minfo.ILMethodRef let newobj = ctor && (match valUseFlags with NormalValUse -> true | _ -> false) let exprty = if ctor then minfo.EnclosingType else minfo.GetFSharpReturnTy(amap, m, minst) // The thing might be an extension method, in which case adjust the instantiations let actualTypeInst = minfo.ActualTypeInst let actualMethInst = minst let retTy = (if not ctor && (ilMethRef.ReturnType = ILType.Void) then [] else [exprty]) let isDllImport = minfo.IsDllImport g Expr.Op(TOp.ILCall(useCallvirt,isProtected,valu,newobj,valUseFlags,isProp,isDllImport,ilMethRef,actualTypeInst,actualMethInst, retTy),[],args,m), exprty /// Build a call to the System.Object constructor taking no arguments, let BuildObjCtorCall g m = let ilMethRef = (mkILCtorMethSpecForTy(g.ilg.typ_Object,[])).MethodRef Expr.Op(TOp.ILCall(false,false,false,false,CtorValUsedAsSuperInit,false,true,ilMethRef,[],[],[g.obj_ty]),[],[],m) /// Build a call to an F# method. /// /// Consume the arguments in chunks and build applications. This copes with various F# calling signatures /// all of which ultimately become 'methods'. /// /// QUERY: this looks overly complex considering that we are doing a fundamentally simple /// thing here. let BuildFSharpMethodApp g m (vref: ValRef) vexp vexprty (args: Exprs) = let arities = (arityOfVal vref.Deref).AritiesOfArgs let args3,(leftover,retTy) = ((args,vexprty), arities) ||> List.mapFold (fun (args,fty) arity -> match arity,args with | (0|1),[] when typeEquiv g (domainOfFunTy g fty) g.unit_ty -> mkUnit g m, (args, rangeOfFunTy g fty) | 0,(arg::argst)-> warning(InternalError(sprintf "Unexpected zero arity, args = %s" (Layout.showL (Layout.sepListL (Layout.rightL ";") (List.map exprL args))),m)); arg, (argst, rangeOfFunTy g fty) | 1,(arg :: argst) -> arg, (argst, rangeOfFunTy g fty) | 1,[] -> error(InternalError("expected additional arguments here",m)) | _ -> if args.Length < arity then error(InternalError("internal error in getting arguments, n = "+string arity+", #args = "+string args.Length,m)); let tupargs,argst = List.chop arity args let tuptys = tupargs |> List.map (tyOfExpr g) (mkTupled g m tupargs tuptys), (argst, rangeOfFunTy g fty) ) if not leftover.IsEmpty then error(InternalError("Unexpected "+string(leftover.Length)+" remaining arguments in method application",m)); mkApps g ((vexp,vexprty),[],args3,m), retTy /// Build a call to an F# method. let BuildFSharpMethodCall g m (typ,vref:ValRef) valUseFlags minst args = let vexp = Expr.Val (vref,valUseFlags,m) let vexpty = vref.Type let tpsorig,tau = vref.TypeScheme let vtinst = argsOfAppTy g typ @ minst if tpsorig.Length <> vtinst.Length then error(InternalError("BuildFSharpMethodCall: unexpected List.length mismatch",m)); let expr = mkTyAppExpr m (vexp,vexpty) vtinst let exprty = instType (mkTyparInst tpsorig vtinst) tau BuildFSharpMethodApp g m vref expr exprty args /// Make a call to a method info. Used by the optimizer and code generator to build /// calls to the type-directed solutions to member constraints. let MakeMethInfoCall amap m minfo minst args = let valUseFlags = NormalValUse // correct unless if we allow wild trait constraints like "T has a ctor and can be used as a parent class" match minfo with | ILMeth(g,ilminfo,_) -> let direct = not minfo.IsVirtual let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant BuildILMethInfoCall g amap m isProp ilminfo valUseFlags minst direct args |> fst | FSMeth(g,typ,vref,_) -> BuildFSharpMethodCall g m (typ,vref) valUseFlags minst args |> fst | DefaultStructCtor(_,typ) -> mkDefault (m,typ) #if EXTENSIONTYPING | ProvidedMeth(_,mi,amap,m) -> let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant let ilMethodRef = Import.ImportProvidedMethodBaseAsILMethodRef amap m mi let isConstructor = mi.PUntaint((fun c -> c.IsConstructor), m) let valu = mi.PUntaint((fun c -> c.DeclaringType.IsValueType), m) let actualTypeInst = [] // GENERIC TYPE PROVIDERS: for generics, we would have something here let actualMethInst = [] // GENERIC TYPE PROVIDERS: for generics, we would have something here let ilReturnTys = Option.toList (minfo.GetCompiledReturnTy(amap, m, [])) // GENERIC TYPE PROVIDERS: for generics, we would have more here // REVIEW: Should we allow protected calls? Expr.Op(TOp.ILCall(false,false, valu, isConstructor,valUseFlags,isProp,false,ilMethodRef,actualTypeInst,actualMethInst, ilReturnTys),[],args,m) #endif //--------------------------------------------------------------------------- // Helpers when selecting members //--------------------------------------------------------------------------- /// Use the given function to select some of the member values from the members of an F# type let SelectImmediateMemberVals g optFilter f (tcref:TyconRef) = let _aug = tcref.TypeContents let chooser (vref:ValRef) = match vref.MemberInfo with // The 'when' condition is a workaround for the fact that values providing // override and interface implementations are published in inferred module types // These cannot be selected directly via the "." notation. // However, it certainly is useful to be able to publish these values, as we can in theory // optimize code to make direct calls to these methods. | Some membInfo when not (ValRefIsExplicitImpl g vref) -> f membInfo vref | _ -> None match optFilter with | None -> tcref.MembersOfFSharpTyconByName |> NameMultiMap.chooseRange chooser | Some nm -> tcref.MembersOfFSharpTyconByName |> NameMultiMap.find nm |> List.choose chooser /// Check whether a name matches an optional filter let checkFilter optFilter (nm:string) = match optFilter with None -> true | Some n2 -> nm = n2 /// Try to select an F# value when querying members, and if so return a MethInfo that wraps the F# value. let TrySelectMemberVal g optFilter typ pri _membInfo (vref:ValRef) = if checkFilter optFilter vref.LogicalName then Some(FSMeth(g,typ,vref,pri)) else None /// Query the immediate methods of an F# type, not taking into account inherited methods. The optFilter /// parameter is an optional name to restrict the set of properties returned. let GetImmediateIntrinsicMethInfosOfType (optFilter,ad) g amap m typ = let minfos = match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType let meths = match optFilter with | Some name -> st.PApplyArray ((fun st -> st.GetMethods() |> Array.filter (fun mi -> mi.Name = name) ), "GetMethods", m) | None -> st.PApplyArray ((fun st -> st.GetMethods()), "GetMethods", m) [ for mi in meths -> ProvidedMeth(g,mi.Coerce(m),amap,m) ] #endif | ILTypeMetadata (_,tdef) -> let tinfo = ILTypeInfo.FromType g typ let mdefs = tdef.Methods let mdefs = (match optFilter with None -> mdefs.AsList | Some nm -> mdefs.FindByName nm) mdefs |> List.map (fun mdef -> ILMethInfo.Create(amap, m, tinfo, None, None, mdef)) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> if not (isAppTy g typ) then [] else SelectImmediateMemberVals g optFilter (TrySelectMemberVal g optFilter typ None) (tcrefOfAppTy g typ) let minfos = minfos |> List.filter (IsMethInfoAccessible amap m ad) minfos /// A helper type to help collect properties. /// /// Join up getters and setters which are not associated in the F# data structure type PropertyCollector(g,amap,m,typ,optFilter,ad) = let hashIdentity = Microsoft.FSharp.Collections.HashIdentity.FromFunctions (fun (pinfo:PropInfo) -> hash pinfo.PropertyName) (fun pinfo1 pinfo2 -> pinfo1.IsStatic = pinfo2.IsStatic && PropInfosEquivByNameAndPartialSig EraseNone g amap m pinfo1 pinfo2 && pinfo1.IsDefiniteFSharpOverride = pinfo2.IsDefiniteFSharpOverride ) let props = new System.Collections.Generic.Dictionary(hashIdentity) let add pinfo = if props.ContainsKey(pinfo) then match props.[pinfo], pinfo with | FSProp (_,typ,Some vref1,_), FSProp (_,_,_,Some vref2) | FSProp (_,typ,_,Some vref2), FSProp (_,_,Some vref1,_) -> let pinfo = FSProp (g,typ,Some vref1,Some vref2) props.[pinfo] <- pinfo | _ -> // This assert fires while editing bad code. We will give a warning later in check.fs //assert ("unexpected case"= "") () else props.[pinfo] <- pinfo member x.Collect(membInfo,vref:ValRef) = match membInfo.MemberFlags.MemberKind with | MemberKind.PropertyGet -> let pinfo = FSProp(g,typ,Some vref,None) if checkFilter optFilter vref.PropertyName && IsPropInfoAccessible g amap m ad pinfo then add pinfo | MemberKind.PropertySet -> let pinfo = FSProp(g,typ,None,Some vref) if checkFilter optFilter vref.PropertyName && IsPropInfoAccessible g amap m ad pinfo then add pinfo | _ -> () member x.Close() = [ for KeyValue(_,pinfo) in props -> pinfo ] /// Query the immediate properties of an F# type, not taking into account inherited properties. The optFilter /// parameter is an optional name to restrict the set of properties returned. let GetImmediateIntrinsicPropInfosOfType (optFilter,ad) g amap m typ = let pinfos = match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType let matchingProps = match optFilter with | Some name -> match st.PApply((fun st -> st.GetProperty name), m) with | Tainted.Null -> [||] | pi -> [|pi|] | None -> st.PApplyArray((fun st -> st.GetProperties()), "GetProperties", m) matchingProps |> Seq.map(fun pi -> ProvidedProp(g,pi,amap,m)) |> List.ofSeq #endif | ILTypeMetadata (_,tdef) -> let tinfo = ILTypeInfo.FromType g typ let pdefs = tdef.Properties let pdefs = match optFilter with None -> pdefs.AsList | Some nm -> pdefs.LookupByName nm pdefs |> List.map (fun pd -> ILProp(g,ILPropInfo(tinfo,pd))) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> if not (isAppTy g typ) then [] else let propCollector = new PropertyCollector(g,amap,m,typ,optFilter,ad) SelectImmediateMemberVals g None (fun membInfo vref -> propCollector.Collect(membInfo,vref); None) (tcrefOfAppTy g typ) |> ignore propCollector.Close() let pinfos = pinfos |> List.filter (IsPropInfoAccessible g amap m ad) pinfos //--------------------------------------------------------------------------- // /// Sets of methods up the hierarchy, ignoring duplicates by name and sig. /// Used to collect sets of virtual methods, protected methods, protected /// properties etc. type HierarchyItem = | MethodItem of MethInfo list list | PropertyItem of PropInfo list list | RecdFieldItem of RecdFieldInfo | EventItem of EventInfo list | ILFieldItem of ILFieldInfo list /// An InfoReader is an object to help us read and cache infos. /// We create one of these for each file we typecheck. /// /// REVIEW: We could consider sharing one InfoReader across an entire compilation /// run or have one global one for each (g,amap) pair. type InfoReader(g:TcGlobals, amap:Import.ImportMap) = let getImmediateIntrinsicILFieldsOfType (optFilter,ad) m typ = let infos = match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType match optFilter with | None -> [ for fi in st.PApplyArray((fun st -> st.GetFields()), "GetFields" , m) -> ProvidedField(g,fi,amap,m) ] | Some name -> match st.PApply ((fun st -> st.GetField name), m) with | Tainted.Null -> [] | fi -> [ ProvidedField(g,fi,amap,m) ] #endif | ILTypeMetadata (_,tdef) -> let tinfo = ILTypeInfo.FromType g typ let fdefs = tdef.Fields let fdefs = match optFilter with None -> fdefs.AsList | Some nm -> fdefs.LookupByName nm fdefs |> List.map (fun pd -> ILFieldInfo(tinfo,pd)) | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> [] let infos = infos |> List.filter (IsILFieldInfoAccessible g amap m ad) infos let getImmediateIntrinsicEventsOfType (optFilter,ad) m typ = let infos = match metadataOfTy g typ with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType match optFilter with | None -> [ for ei in st.PApplyArray((fun st -> st.GetEvents()), "GetEvents" , m) -> ProvidedEvent(g,amap,ei,m) ] | Some name -> match st.PApply ((fun st -> st.GetEvent name), m) with | Tainted.Null -> [] | ei -> [ ProvidedEvent(g,amap,ei,m) ] #endif | ILTypeMetadata (_,tdef) -> let tinfo = ILTypeInfo.FromType g typ let edefs = tdef.Events let edefs = match optFilter with None -> edefs.AsList | Some nm -> edefs.LookupByName nm [ for edef in edefs do let einfo = ILEventInfo(tinfo,edef) if IsILEventInfoAccessible g amap m ad einfo then yield ILEvent(g,einfo) ] | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> [] infos let mkRecdFieldInfo g typ tcref fspec = RecdFieldInfo(argsOfAppTy g typ,mkNestedRecdFieldRef tcref fspec) /// Get the F#-declared record fields or class 'val' fields of a type let getImmediateIntrinsicRecdOrClassFieldsOfType (optFilter,_ad) _m typ = match tryDestAppTy g typ with | None -> [] | Some tcref -> // Note;secret fields are not allowed in lookups here, as we're only looking // up user-visible fields in name resolution. match optFilter with | Some nm -> match tcref.GetFieldByName nm with | Some rfield when not rfield.IsCompilerGenerated -> [mkRecdFieldInfo g typ tcref rfield] | _ -> [] | None -> [ for fdef in tcref.AllFieldsArray do if not fdef.IsCompilerGenerated then yield mkRecdFieldInfo g typ tcref fdef ] /// The primitive reader for the method info sets up a hierarchy let readRawIntrinsicMethodSetsUncached ((optFilter,ad,allowMultiIntfInst),m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> GetImmediateIntrinsicMethInfosOfType (optFilter,ad) g amap m typ :: acc) g amap m allowMultiIntfInst typ [] /// The primitive reader for the property info sets up a hierarchy let readRawIntrinsicPropertySetsUncached ((optFilter,ad,allowMultiIntfInst),m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> GetImmediateIntrinsicPropInfosOfType (optFilter,ad) g amap m typ :: acc) g amap m allowMultiIntfInst typ [] let readIlFieldInfosUncached ((optFilter,ad),m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> getImmediateIntrinsicILFieldsOfType (optFilter,ad) m typ @ acc) g amap m AllowMultiIntfInstantiations.No typ [] let readEventInfosUncached ((optFilter,ad),m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> getImmediateIntrinsicEventsOfType (optFilter,ad) m typ @ acc) g amap m AllowMultiIntfInstantiations.No typ [] let readRecdOrClassFieldInfoUncached ((optFilter,ad),m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> getImmediateIntrinsicRecdOrClassFieldsOfType (optFilter,ad) m typ @ acc) g amap m AllowMultiIntfInstantiations.No typ [] let readEntireTypeHierachyUncached (allowMultiIntfInst,m,typ) = FoldEntireHierarchyOfType (fun typ acc -> typ :: acc) g amap m allowMultiIntfInst typ [] let readPrimaryTypeHierachyUncached (allowMultiIntfInst,m,typ) = FoldPrimaryHierarchyOfType (fun typ acc -> typ :: acc) g amap m allowMultiIntfInst typ [] /// The primitive reader for the named items up a hierarchy let readRawIntrinsicNamedItemsUncached ((nm,ad),m,typ) = if nm = ".ctor" then None else // '.ctor' lookups only ever happen via constructor syntax let optFilter = Some nm FoldPrimaryHierarchyOfType (fun typ acc -> let minfos = GetImmediateIntrinsicMethInfosOfType (optFilter,ad) g amap m typ let pinfos = GetImmediateIntrinsicPropInfosOfType (optFilter,ad) g amap m typ let finfos = getImmediateIntrinsicILFieldsOfType (optFilter,ad) m typ let einfos = getImmediateIntrinsicEventsOfType (optFilter,ad) m typ let rfinfos = getImmediateIntrinsicRecdOrClassFieldsOfType (optFilter,ad) m typ match acc with | Some(MethodItem(inheritedMethSets)) when nonNil minfos -> Some(MethodItem (minfos::inheritedMethSets)) | _ when nonNil minfos -> Some(MethodItem ([minfos])) | Some(PropertyItem(inheritedPropSets)) when nonNil pinfos -> Some(PropertyItem(pinfos::inheritedPropSets)) | _ when nonNil pinfos -> Some(PropertyItem([pinfos])) | _ when nonNil finfos -> Some(ILFieldItem(finfos)) | _ when nonNil einfos -> Some(EventItem(einfos)) | _ when nonNil rfinfos -> match rfinfos with | [single] -> Some(RecdFieldItem(single)) | _ -> failwith "Unexpected multiple fields with the same name" // Because an explicit name was supplied. | _ -> acc) g amap m AllowMultiIntfInstantiations.No typ None let makeInfoCache g f (flagsEq : System.Collections.Generic.IEqualityComparer<_>) = new MemoizationTable<_,_> (compute=f, // Only cache closed, monomorphic types (closed = all members for the type // have been processed). Generic type instantiations could be processed if we had // a decent hash function for these. canMemoize=(fun (_flags,(_:range),typ) -> match stripTyEqns g typ with | TType_app(tcref,[]) -> tcref.TypeContents.tcaug_closed | _ -> false), keyComparer= { new System.Collections.Generic.IEqualityComparer<_> with member x.Equals((flags1,_,typ1),(flags2,_,typ2)) = // Ignoring the ranges - that's OK. flagsEq.Equals(flags1,flags2) && match stripTyEqns g typ1, stripTyEqns g typ2 with | TType_app(tcref1,[]),TType_app(tcref2,[]) -> tyconRefEq g tcref1 tcref2 | _ -> false member x.GetHashCode((flags,_,typ)) = // Ignoring the ranges - that's OK. flagsEq.GetHashCode flags + (match stripTyEqns g typ with | TType_app(tcref,[]) -> hash tcref.LogicalName | _ -> 0) }) let hashFlags0 = { new System.Collections.Generic.IEqualityComparer<_> with member x.GetHashCode((filter: string option, ad: AccessorDomain, _allowMultiIntfInst1)) = hash filter + AccessorDomain.CustomGetHashCode ad member x.Equals((filter1, ad1, allowMultiIntfInst1), (filter2,ad2, allowMultiIntfInst2)) = (filter1 = filter2) && AccessorDomain.CustomEquals(g,ad1,ad2) && allowMultiIntfInst1 = allowMultiIntfInst2 } let hashFlags1 = { new System.Collections.Generic.IEqualityComparer<_> with member x.GetHashCode((filter: string option,ad: AccessorDomain)) = hash filter + AccessorDomain.CustomGetHashCode ad member x.Equals((filter1,ad1), (filter2,ad2)) = (filter1 = filter2) && AccessorDomain.CustomEquals(g,ad1,ad2) } let hashFlags2 = { new System.Collections.Generic.IEqualityComparer<_> with member x.GetHashCode((nm: string,ad: AccessorDomain)) = hash nm + AccessorDomain.CustomGetHashCode ad member x.Equals((nm1,ad1), (nm2,ad2)) = (nm1 = nm2) && AccessorDomain.CustomEquals(g,ad1,ad2) } let methodInfoCache = makeInfoCache g readRawIntrinsicMethodSetsUncached hashFlags0 let propertyInfoCache = makeInfoCache g readRawIntrinsicPropertySetsUncached hashFlags0 let recdOrClassFieldInfoCache = makeInfoCache g readRecdOrClassFieldInfoUncached hashFlags1 let ilFieldInfoCache = makeInfoCache g readIlFieldInfosUncached hashFlags1 let eventInfoCache = makeInfoCache g readEventInfosUncached hashFlags1 let namedItemsCache = makeInfoCache g readRawIntrinsicNamedItemsUncached hashFlags2 let entireTypeHierarchyCache = makeInfoCache g readEntireTypeHierachyUncached HashIdentity.Structural let primaryTypeHierarchyCache = makeInfoCache g readPrimaryTypeHierachyUncached HashIdentity.Structural member x.g = g member x.amap = amap /// Read the method infos for a type /// /// Cache the result for monomorphic types member x.GetRawIntrinsicMethodSetsOfType (optFilter,ad,allowMultiIntfInst,m,typ) = methodInfoCache.Apply(((optFilter,ad,allowMultiIntfInst),m,typ)) member x.GetRawIntrinsicPropertySetsOfType (optFilter,ad,allowMultiIntfInst,m,typ) = propertyInfoCache.Apply(((optFilter,ad,allowMultiIntfInst),m,typ)) member x.GetRawIntrinsicRecordOrClassFieldsOfType (optFilter,ad,m,typ) = recdOrClassFieldInfoCache.Apply(((optFilter,ad),m,typ)) member x.GetILFieldInfosOfType (optFilter,ad,m,typ) = ilFieldInfoCache.Apply(((optFilter,ad),m,typ)) member x.GetEventInfosOfType (optFilter,ad,m,typ) = eventInfoCache.Apply(((optFilter,ad),m,typ)) member x.TryFindRecdOrClassFieldInfoOfType (nm:string,m,typ) = match recdOrClassFieldInfoCache.Apply((Some nm,AccessibleFromSomewhere),m,typ) with | [] -> None | [single] -> Some single | _ -> failwith "unexpected multiple fields with same name" member x.TryFindNamedItemOfType (nm,ad,m,typ) = namedItemsCache.Apply(((nm,ad),m,typ)) member x.ReadEntireTypeHierachy (allowMultiIntfInst,m,typ) = entireTypeHierarchyCache.Apply((allowMultiIntfInst,m,typ)) member x.ReadPrimaryTypeHierachy (allowMultiIntfInst,m,typ) = primaryTypeHierarchyCache.Apply((allowMultiIntfInst,m,typ)) //------------------------------------------------------------------------- // Constructor infos //------------------------------------------------------------------------- /// Get the constructors of an IL type let private ConstructorInfosOfILType g amap m typ = let tinfo = ILTypeInfo.FromType g typ tinfo.RawMetadata.Methods.FindByName ".ctor" |> List.filter (fun md -> match md.mdKind with MethodKind.Ctor -> true | _ -> false) |> List.map (fun mdef -> ILMethInfo.Create (amap, m, tinfo, None, None, mdef)) /// Get the constructors of any F# type let GetIntrinsicConstructorInfosOfType (infoReader:InfoReader) m ty = let g = infoReader.g let amap = infoReader.amap if isAppTy g ty then match metadataOfTy g ty with #if EXTENSIONTYPING | ExtensionTypeMetadata info -> let st = info.ProvidedType [ for ci in st.PApplyArray((fun st -> st.GetConstructors()), "GetConstructors", m) do yield ProvidedMeth(g,ci.Coerce(m),amap,m) ] #endif | ILTypeMetadata _ -> ConstructorInfosOfILType g amap m ty | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> let tcref = tcrefOfAppTy g ty tcref.MembersOfFSharpTyconByName |> NameMultiMap.find ".ctor" |> List.choose(fun vref -> match vref.MemberInfo with | Some membInfo when (membInfo.MemberFlags.MemberKind = MemberKind.Constructor) -> Some vref | _ -> None) |> List.map (fun x -> FSMeth(g,ty,x,None)) else [] type FindMemberFlag = /// Prefer items toward the top of the hierarchy, which we do if the items are virtual /// but not when resolving base calls. | IgnoreOverrides /// Get overrides instead of abstract slots when measuring whether a class/interface implements all its required slots. | PreferOverrides /// The input list is sorted from most-derived to least-derived type, so any System.Object methods /// are at the end of the list. Return a filtered list where prior/subsequent members matching by name and /// that are in the same equivalence class have been removed. We keep a name-indexed table to /// be more efficient when we check to see if we've already seen a particular named method. type private IndexedList<'a>(itemLists: 'a list list, itemsByName: 'a NameMultiMap) = member x.Items = itemLists member x.ItemsWithName(nm) = NameMultiMap.find nm itemsByName member x.AddItems(items,nmf) = IndexedList<'a>(items::itemLists,List.foldBack (fun x acc -> NameMultiMap.add (nmf x) x acc) items itemsByName ) let private excludeItems keepTest nmf itemsToAdd (ilist:IndexedList<_>) = // Have we already seen an item with the same name and that is in the same equivalence class? // If so, ignore this one. Note we can check against the original incoming 'ilist' because we are assuming that // none the elements of 'itemsToAdd' are equivalent. itemsToAdd |> List.filter (fun item -> List.forall (fun item2 -> keepTest item item2) (ilist.ItemsWithName(nmf item))) /// Add all the items to the IndexedList if better items are not already present. This is used to hide methods /// in super classes and/or hide overrides of methods in subclasses. /// /// Assume no items in 'items' are equivalent according to 'equiv'. This is valid because each step in a /// .NET class hierarchy introduces a consistent set of methods, none of which hide each other within the /// given set. This is an important optimization because it means we don't have to List.filter for equivalence between the /// large overload sets introduced by methods like System.WriteLine. /// Assume items can be given names by 'nmf', where two items with different names are /// not equivalent. let private emptyIndexedList() = IndexedList([],NameMultiMap.empty) let private filterItemsInSubTypesBasedOnItemsInSuperTypes nmf keepTest itemLists = let rec loop itemLists = match itemLists with | [] -> emptyIndexedList() | items :: itemsInSuperTypes -> let ilist = loop itemsInSuperTypes let itemsToAdd = excludeItems keepTest nmf items ilist ilist.AddItems(itemsToAdd,nmf) (loop itemLists).Items let private filterItemsInSuperTypesBasedOnItemsInSubTypes nmf keepTest itemLists = let rec loop itemLists (indexedItemsInSubTypes:IndexedList<_>) = match itemLists with | [] -> List.rev indexedItemsInSubTypes.Items | items :: itemsInSuperTypes -> let itemsToAdd = items |> List.filter (fun item -> keepTest item (indexedItemsInSubTypes.ItemsWithName(nmf item))) let ilist = indexedItemsInSubTypes.AddItems(itemsToAdd,nmf) loop itemsInSuperTypes ilist loop itemLists (emptyIndexedList()) let private excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes nmf equivTest itemLists = filterItemsInSuperTypesBasedOnItemsInSubTypes nmf (fun item1 items -> not (items |> List.exists (fun item2 -> equivTest item1 item2))) itemLists let private filterOverrides findFlag (isVirt:'a->bool,isNewSlot,isDefiniteOverride,isFinal,equivSigs,nmf:'a->string) items = let equivVirts x y = isVirt x && isVirt y && equivSigs x y match findFlag with | PreferOverrides -> items // For each F#-declared override, get rid of any equivalent abstract member in the same type // This is because F# abstract members with default overrides give rise to two members with the // same logical signature in the same type, e.g. // type ClassType1() = // abstract VirtualMethod1: string -> int // default x.VirtualMethod1(s) = 3 |> List.map (fun items -> let definiteOverrides = items |> List.filter isDefiniteOverride items |> List.filter (fun item -> (isDefiniteOverride item || not (List.exists (equivVirts item) definiteOverrides)))) // only keep virtuals that are not signature-equivalent to virtuals in subtypes |> excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes nmf equivVirts | IgnoreOverrides -> let equivNewSlots x y = isNewSlot x && isNewSlot y && equivSigs x y items // Remove any F#-declared overrides. THese may occur in the same type as the abstract member (unlike with .NET metadata) // Include any 'newslot' declared methods. |> List.map (List.filter (fun x -> not (isDefiniteOverride x))) // Remove any virtuals that are signature-equivalent to virtuals in subtypes, except for newslots // That is, keep if it's /// (a) not virtual // (b) is a new slot or // (c) not equivalent // We keep virtual finals around for error detection later on |> filterItemsInSubTypesBasedOnItemsInSuperTypes nmf (fun newItem priorItem -> (isVirt newItem && isFinal newItem) || not (isVirt newItem) || isNewSlot newItem || not (equivVirts newItem priorItem) ) // Remove any abstract slots in supertypes that are (a) hidden by another newslot and (b) implemented // We leave unimplemented ones around to give errors, e.g. for // [] // type PA() = // abstract M : int -> unit // // [] // type PB<'a>() = // inherit PA() // abstract M : 'a -> unit // // [] // type PC() = // inherit PB() // // Here, PA.M amd PB.M have the same signature, so PA.M is unimplementable. // // REVIEW: in future we may give a friendly error at this point // // type PD() = // inherit PC() // override this.M(x:int) = () |> filterItemsInSuperTypesBasedOnItemsInSubTypes nmf (fun item1 superTypeItems -> not (isNewSlot item1 && superTypeItems |> List.exists (equivNewSlots item1) && superTypeItems |> List.exists (fun item2 -> isDefiniteOverride item1 && equivVirts item1 item2))) let private FilterOverridesOfMethInfos findFlag g amap m minfos = filterOverrides findFlag ((fun (minfo:MethInfo) -> minfo.IsVirtual),(fun minfo -> minfo.IsNewSlot),(fun minfo -> minfo.IsDefiniteFSharpOverride),(fun minfo -> minfo.IsFinal),MethInfosEquivByNameAndSig EraseNone true g amap m,(fun minfo -> minfo.LogicalName)) minfos let private FilterOverridesOfPropInfos findFlag g amap m props = filterOverrides findFlag ((fun (pinfo:PropInfo) -> pinfo.IsVirtualProperty),(fun pinfo -> pinfo.IsNewSlot),(fun pinfo -> pinfo.IsDefiniteFSharpOverride),(fun _ -> false),PropInfosEquivByNameAndSig EraseNone g amap m, (fun pinfo -> pinfo.PropertyName)) props let ExcludeHiddenOfMethInfos g amap m (minfos:MethInfo list list) = minfos |> excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes (fun minfo -> minfo.LogicalName) (fun m1 m2 -> // only hide those truly from super classes not (tyconRefEq g (tcrefOfAppTy g m1.EnclosingType) (tcrefOfAppTy g m2.EnclosingType)) && MethInfosEquivByNameAndPartialSig EraseNone true g amap m m1 m2) |> List.concat let ExcludeHiddenOfPropInfos g amap m pinfos = pinfos |> excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes (fun (pinfo:PropInfo) -> pinfo.PropertyName) (PropInfosEquivByNameAndPartialSig EraseNone g amap m) |> List.concat let GetIntrinsicMethInfoSetsOfType (infoReader:InfoReader) (optFilter,ad,allowMultiIntfInst) findFlag m typ = infoReader.GetRawIntrinsicMethodSetsOfType(optFilter,ad,allowMultiIntfInst,m,typ) |> FilterOverridesOfMethInfos findFlag infoReader.g infoReader.amap m let GetIntrinsicPropInfoSetsOfType (infoReader:InfoReader) (optFilter,ad,allowMultiIntfInst) findFlag m typ = infoReader.GetRawIntrinsicPropertySetsOfType(optFilter,ad,allowMultiIntfInst,m,typ) |> FilterOverridesOfPropInfos findFlag infoReader.g infoReader.amap m let GetRecordOrClassFieldsOfType (infoReader:InfoReader) (optFilter,ad) m typ = infoReader.GetRawIntrinsicRecordOrClassFieldsOfType(optFilter,ad,m,typ) let GetIntrinsicMethInfosOfType infoReader (optFilter,ad,allowMultiIntfInst) findFlag m typ = GetIntrinsicMethInfoSetsOfType infoReader (optFilter,ad,allowMultiIntfInst) findFlag m typ |> List.concat let GetIntrinsicPropInfosOfType infoReader (optFilter,ad,allowMultiIntfInst) findFlag m typ = GetIntrinsicPropInfoSetsOfType infoReader (optFilter,ad,allowMultiIntfInst) findFlag m typ |> List.concat /// Perform type-directed name resolution of a particular named member in an F# type let TryFindIntrinsicNamedItemOfType (infoReader:InfoReader) (nm,ad) findFlag m typ = match infoReader.TryFindNamedItemOfType(nm, ad, m, typ) with | Some item -> match item with | PropertyItem psets -> Some(PropertyItem (psets |> FilterOverridesOfPropInfos findFlag infoReader.g infoReader.amap m)) | MethodItem msets -> Some(MethodItem (msets |> FilterOverridesOfMethInfos findFlag infoReader.g infoReader.amap m)) | _ -> Some(item) | None -> None /// Try to detect the existence of a method on a type. /// Used for /// -- getting the GetEnumerator, get_Current, MoveNext methods for enumerable types /// -- getting the Dispose method when resolving the 'use' construct /// -- getting the various methods used to desugar the computation expression syntax let TryFindIntrinsicMethInfo infoReader m ad nm ty = GetIntrinsicMethInfosOfType infoReader (Some nm,ad,AllowMultiIntfInstantiations.No) IgnoreOverrides m ty /// Try to find a particular named property on a type. Only used to ensure that local 'let' definitions and property names /// are distinct, a somewhat adhoc check in tc.fs. let TryFindPropInfo infoReader m ad nm ty = GetIntrinsicPropInfosOfType infoReader (Some nm,ad,AllowMultiIntfInstantiations.No) IgnoreOverrides m ty //------------------------------------------------------------------------- // Helpers related to delegates and events //------------------------------------------------------------------------- /// The Invoke MethInfo, the function argument types, the function return type /// and the overall F# function type for the function type associated with a .NET delegate type [] type SigOfFunctionForDelegate = SigOfFunctionForDelegate of MethInfo * TType list * TType * TType /// Given a delegate type work out the minfo, argument types, return type /// and F# function type by looking at the Invoke signature of the delegate. let GetSigOfFunctionForDelegate (infoReader:InfoReader) delty m ad = let g = infoReader.g let amap = infoReader.amap let invokeMethInfo = match GetIntrinsicMethInfosOfType infoReader (Some "Invoke",ad,AllowMultiIntfInstantiations.No) IgnoreOverrides m delty with | [h] -> h | [] -> error(Error(FSComp.SR.noInvokeMethodsFound (),m)) | h :: _ -> warning(InternalError(FSComp.SR.moreThanOneInvokeMethodFound (),m)); h let minst = [] // a delegate's Invoke method is never generic let compiledViewOfDelArgTys = match invokeMethInfo.GetParamTypes(amap, m, minst) with | [args] -> args | _ -> error(Error(FSComp.SR.delegatesNotAllowedToHaveCurriedSignatures (),m)) let fsharpViewOfDelArgTys = match compiledViewOfDelArgTys with | [] -> [g.unit_ty] | _ -> compiledViewOfDelArgTys let delRetTy = invokeMethInfo.GetFSharpReturnTy(amap, m, minst) CheckMethInfoAttributes g m None invokeMethInfo |> CommitOperationResult; let fty = mkIteratedFunTy fsharpViewOfDelArgTys delRetTy SigOfFunctionForDelegate(invokeMethInfo,compiledViewOfDelArgTys,delRetTy,fty) /// Try and interpret a delegate type as a "standard" .NET delegate type associated with an event, with a "sender" parameter. let TryDestStandardDelegateTyp (infoReader:InfoReader) m ad delTy = let g = infoReader.g let (SigOfFunctionForDelegate(_,compiledViewOfDelArgTys,delRetTy,_)) = GetSigOfFunctionForDelegate infoReader delTy m ad match compiledViewOfDelArgTys with | senderTy :: argTys when isObjTy g senderTy -> Some(mkTupledTy g argTys,delRetTy) | _ -> None /// Indicates if an event info is associated with a delegate type that is a "standard" .NET delegate type /// with a sender parameter. // /// In the F# design, we take advantage of the following idiom to simplify away the bogus "object" parameter of the /// of the "Add" methods associated with events. If you want to access it you /// can use AddHandler instead. /// The .NET Framework guidelines indicate that the delegate type used for /// an event should take two parameters, an "object source" parameter /// indicating the source of the event, and an "e" parameter that /// encapsulates any additional information about the event. The type of /// the "e" parameter should derive from the EventArgs class. For events /// that do not use any additional information, the .NET Framework has /// already defined an appropriate delegate type: EventHandler. /// (from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkEventsTutorial.asp) let IsStandardEventInfo (infoReader:InfoReader) m ad (einfo:EventInfo) = let dty = einfo.GetDelegateType(infoReader.amap,m) match TryDestStandardDelegateTyp infoReader m ad dty with | Some _ -> true | None -> false /// Get the (perhaps tupled) argument type accepted by an event let ArgsTypOfEventInfo (infoReader:InfoReader) m ad (einfo:EventInfo) = let amap = infoReader.amap let dty = einfo.GetDelegateType(amap,m) match TryDestStandardDelegateTyp infoReader m ad dty with | Some(argtys,_) -> argtys | None -> error(nonStandardEventError einfo.EventName m) /// Get the type of the event when looked at as if it is a property /// Used when displaying the property in Intellisense let PropTypOfEventInfo (infoReader:InfoReader) m ad (einfo:EventInfo) = let g = infoReader.g let amap = infoReader.amap let delTy = einfo.GetDelegateType(amap,m) let argsTy = ArgsTypOfEventInfo infoReader m ad einfo mkIEventType g delTy argsTy fsharp-3.0.34/src/fsharp/import.fs0000775000175000017500000006543512260314606016026 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Import open System.Reflection open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif type AssemblyLoader = abstract LoadAssembly : range * ILAssemblyRef -> CcuResolutionResult #if EXTENSIONTYPING abstract GetProvidedAssemblyInfo : range * Tainted -> bool * ProvidedAssemblyStaticLinkingMap option abstract RecordGeneratedTypeRoot : ProviderGeneratedType -> unit #endif //------------------------------------------------------------------------- // Import an IL types as F# types. //------------------------------------------------------------------------- /// This is the context used for converting AbstractIL .NET and provided types to F# internal compiler data structures. /// We currently cache the conversion of AbstractIL ILTypeRef nodes, based on hashes of these. [] type ImportMap(g:TcGlobals,assemblyLoader:AssemblyLoader) = let typeRefToTyconRefCache = new System.Collections.Generic.Dictionary() member this.g = g member this.assemblyLoader = assemblyLoader member this.ILTypeRefToTyconRefCache = typeRefToTyconRefCache let ImportTypeRefData (env:ImportMap) m (scoref,path,typeName) = let ccu = match scoref with | ILScopeRef.Local -> error(InternalError("ImportILTypeRef: unexpected local scope",m)) | ILScopeRef.Module _ -> error(InternalError("ImportILTypeRef: reference found to a type in an auxiliary module",m)) | ILScopeRef.Assembly assref -> env.assemblyLoader.LoadAssembly (m,assref) // NOTE: only assemblyLoader callsite // Do a dereference of a fake tcref for the type just to check it exists in the target assembly and to find // the corresponding Tycon. let ccu = match ccu with | ResolvedCcu ccu->ccu | UnresolvedCcu ccuName -> error (Error(FSComp.SR.impTypeRequiredUnavailable(typeName, ccuName),m)) let fakeTyconRef = mkNonLocalTyconRef (mkNonLocalEntityRef ccu path) typeName let tycon = try fakeTyconRef.Deref with _ -> error (Error(FSComp.SR.impReferencedTypeCouldNotBeFoundInAssembly(String.concat "." (Array.append path [| typeName |]), ccu.AssemblyName),m)) #if EXTENSIONTYPING // Validate (once because of caching) match tycon.TypeReprInfo with | TProvidedTypeExtensionPoint info -> //printfn "ImportTypeRefData: validating type: typeLogicalName = %A" typeName ExtensionTyping.ValidateProvidedTypeAfterStaticInstantiation(m,info.ProvidedType,path,typeName) | _ -> () #endif match tryRescopeEntity ccu tycon with | None -> error (Error(FSComp.SR.impImportedAssemblyUsesNotPublicType(String.concat "." (Array.toList path@[typeName])),m)); | Some tcref -> tcref /// Import an IL type ref as an F# type constructor. // // Note, the type names that flow to the point include the "mangled" type names used for static parameters for provided types. // For example, // Foo.Bar,"1.0" // This is because ImportProvidedType goes via Abstract IL type references. let ImportILTypeRefUncached (env:ImportMap) m (tref:ILTypeRef) = let path,typeName = match tref.Enclosing with | [] -> splitILTypeNameWithPossibleStaticArguments tref.Name | h :: t -> let nsp,tname = splitILTypeNameWithPossibleStaticArguments h // Note, subsequent type names do not need to be split, only the first [| yield! nsp; yield tname; yield! t |], tref.Name ImportTypeRefData (env:ImportMap) m (tref.Scope,path,typeName) let ImportILTypeRef (env:ImportMap) m (tref:ILTypeRef) = if env.ILTypeRefToTyconRefCache.ContainsKey(tref) then env.ILTypeRefToTyconRefCache.[tref] else let tcref = ImportILTypeRefUncached env m tref env.ILTypeRefToTyconRefCache.[tref] <- tcref; tcref let ImportTyconRefApp (env:ImportMap) tcref tyargs = // 'better_tcref_map' prefers the F# abbreviation for some built-in types, e.g. 'string' rather than // 'System.String', since users prefer the F# abbreviation to the .NET equivalents. Also on import // we decompile uses of FSharpFunc and Tuple. match env.g.better_tcref_map tcref tyargs with | Some res -> res | None -> TType_app (tcref,tyargs) /// Import an IL type as an F# type /// - The F# type check does the job of making the "void" into a "unit" value, whatever the repr. of "unit" is. let rec ImportILType (env:ImportMap) m tinst typ = match typ with | ILType.Void -> env.g.unit_ty | ILType.Array(bounds,ty) -> let n = bounds.Rank let elementType = ImportILType env m tinst ty mkArrayTy env.g n elementType m | ILType.Boxed tspec | ILType.Value tspec -> let tcref = ImportILTypeRef env m tspec.TypeRef let inst = tspec.GenericArgs |> ILList.toList |> List.map (ImportILType env m tinst) ImportTyconRefApp env tcref inst | ILType.Byref ty -> mkByrefTy env.g (ImportILType env m tinst ty) | ILType.Ptr ty -> mkNativePtrType env.g (ImportILType env m tinst ty) | ILType.FunctionPointer _ -> env.g.nativeint_ty (* failwith "cannot import this kind of type (ptr, fptr)" *) | ILType.Modified(_,_,ty) -> // All custom modifiers are ignored ImportILType env m tinst ty | ILType.TypeVar u16 -> try List.nth tinst (int u16) with _ -> error(Error(FSComp.SR.impNotEnoughTypeParamsInScopeWhileImporting(),m)) #if EXTENSIONTYPING let ImportProvidedNamedType (env:ImportMap) (m:range) (st:Tainted) = // See if a reverse-mapping exists for a generated/relocated System.Type match st.PUntaint((fun st -> st.TryGetTyconRef()),m) with | Some x -> (x :?> TyconRef) | None -> let tref = ExtensionTyping.GetILTypeRefOfProvidedType (st,m) ImportILTypeRef env m tref let rec ImportProvidedTypeAsILType (env:ImportMap) (m:range) (st:Tainted) = if st.PUntaint ((fun x -> x.IsVoid),m) then ILType.Void elif st.PUntaint((fun st -> st.IsGenericParameter),m) then mkILTyvarTy (uint16 (st.PUntaint((fun st -> st.GenericParameterPosition),m))) elif st.PUntaint((fun st -> st.IsArray),m) then let et = ImportProvidedTypeAsILType env m (st.PApply((fun st -> st.GetElementType()),m)) ILType.Array(ILArrayShape.FromRank (st.PUntaint((fun st -> st.GetArrayRank()),m)), et) elif st.PUntaint((fun st -> st.IsByRef),m) then let et = ImportProvidedTypeAsILType env m (st.PApply((fun st -> st.GetElementType()),m)) ILType.Byref et elif st.PUntaint((fun st -> st.IsPointer),m) then let et = ImportProvidedTypeAsILType env m (st.PApply((fun st -> st.GetElementType()),m)) ILType.Ptr et else let gst, genericArgs = if st.PUntaint((fun st -> st.IsGenericType),m) then let args = st.PApplyArray((fun st -> st.GetGenericArguments()),"GetGenericArguments",m) |> Array.map (ImportProvidedTypeAsILType env m) |> List.ofArray let gst = st.PApply((fun st -> st.GetGenericTypeDefinition()),m) gst, args else st, [] let tref = ExtensionTyping.GetILTypeRefOfProvidedType (gst,m) let tcref = ImportProvidedNamedType env m gst let tps = tcref.Typars m if tps.Length <> genericArgs.Length then error(Error(FSComp.SR.impInvalidNumberOfGenericArguments(tcref.CompiledName, tps.Length, genericArgs.Length),m)) // We're converting to an IL type, where generic arguments are erased let genericArgs = List.zip tps genericArgs |> List.filter (fun (tp,_) -> not tp.IsErased) |> List.map snd let tspec = mkILTySpec(tref,genericArgs) if st.PUntaint((fun st -> st.IsValueType),m) then ILType.Value tspec else mkILBoxedType tspec let rec ImportProvidedType (env:ImportMap) (m:range) (* (tinst:TypeInst) *) (st:Tainted) = let g = env.g if st.PUntaint((fun st -> st.IsArray),m) then let elemTy = (ImportProvidedType env m (* tinst *) (st.PApply((fun st -> st.GetElementType()),m))) mkArrayTy g (st.PUntaint((fun st -> st.GetArrayRank()),m)) elemTy m elif st.PUntaint((fun st -> st.IsByRef),m) then let elemTy = (ImportProvidedType env m (* tinst *) (st.PApply((fun st -> st.GetElementType()),m))) mkByrefTy g elemTy elif st.PUntaint((fun st -> st.IsPointer),m) then let elemTy = (ImportProvidedType env m (* tinst *) (st.PApply((fun st -> st.GetElementType()),m))) mkNativePtrType g elemTy else // REVIEW: Extension type could try to be its own generic arg (or there could be a type loop) let tcref, genericArgs = if st.PUntaint((fun st -> st.IsGenericType),m) then let tcref = ImportProvidedNamedType env m (st.PApply((fun st -> st.GetGenericTypeDefinition()),m)) let args = st.PApplyArray((fun st -> st.GetGenericArguments()),"GetGenericArguments",m) |> Array.map (ImportProvidedType env m (* tinst *) ) |> List.ofArray tcref,args else let tcref = ImportProvidedNamedType env m st tcref, [] /// Adjust for the known primitive numeric types that accept units of measure. let tcref = if tyconRefEq g tcref g.system_Double_tcref && genericArgs.Length = 1 then g.pfloat_tcr elif tyconRefEq g tcref g.system_Single_tcref && genericArgs.Length = 1 then g.pfloat32_tcr elif tyconRefEq g tcref g.system_Decimal_tcref && genericArgs.Length = 1 then g.pdecimal_tcr elif tyconRefEq g tcref g.system_Int16_tcref && genericArgs.Length = 1 then g.pint16_tcr elif tyconRefEq g tcref g.system_Int32_tcref && genericArgs.Length = 1 then g.pint_tcr elif tyconRefEq g tcref g.system_Int64_tcref && genericArgs.Length = 1 then g.pint64_tcr elif tyconRefEq g tcref g.system_SByte_tcref && genericArgs.Length = 1 then g.pint8_tcr else tcref let tps = tcref.Typars m if tps.Length <> genericArgs.Length then error(Error(FSComp.SR.impInvalidNumberOfGenericArguments(tcref.CompiledName, tps.Length, genericArgs.Length),m)) let genericArgs = (tps,genericArgs) ||> List.map2 (fun tp genericArg -> if tp.Kind = TyparKind.Measure then let rec conv ty = match ty with | TType_app (tcref,[t1;t2]) when tyconRefEq g tcref g.measureproduct_tcr -> MeasureProd (conv t1, conv t2) | TType_app (tcref,[t1]) when tyconRefEq g tcref g.measureinverse_tcr -> MeasureInv (conv t1) | TType_app (tcref,[]) when tyconRefEq g tcref g.measureone_tcr -> MeasureOne | TType_app (tcref,[]) when tcref.TypeOrMeasureKind = TyparKind.Measure -> MeasureCon tcref | TType_app (tcref,_) -> errorR(Error(FSComp.SR.impInvalidMeasureArgument1(tcref.CompiledName, tp.Name),m)) MeasureOne | _ -> errorR(Error(FSComp.SR.impInvalidMeasureArgument2(tp.Name),m)) MeasureOne TType_measure (conv genericArg) else genericArg) ImportTyconRefApp env tcref genericArgs let ImportProvidedMethodBaseAsILMethodRef (env:ImportMap) (m:range) (mbase: Tainted) = let tref = ExtensionTyping.GetILTypeRefOfProvidedType (mbase.PApply((fun mbase -> mbase.DeclaringType),m), m) let mbase = // Find the formal member corresponding to the called member match mbase.OfType() with | Some minfo when minfo.PUntaint((fun minfo -> minfo.IsGenericMethod|| minfo.DeclaringType.IsGenericType),m) -> let declaringType = minfo.PApply((fun minfo -> minfo.DeclaringType),m) let declaringGenericTypeDefn = if declaringType.PUntaint((fun t -> t.IsGenericType),m) then declaringType.PApply((fun declaringType -> declaringType.GetGenericTypeDefinition()),m) else declaringType let methods = declaringGenericTypeDefn.PApplyArray((fun x -> x.GetMethods()),"GetMethods",m) let metadataToken = minfo.PUntaint((fun minfo -> minfo.MetadataToken),m) let found = methods |> Array.tryFind (fun x -> x.PUntaint((fun x -> x.MetadataToken),m) = metadataToken) match found with | Some found -> found.Coerce(m) | None -> let methodName = minfo.PUntaint((fun minfo -> minfo.Name),m) let typeName = declaringGenericTypeDefn.PUntaint((fun declaringGenericTypeDefn -> declaringGenericTypeDefn.FullName),m) error(NumberedError(FSComp.SR.etIncorrectProvidedMethod(ExtensionTyping.DisplayNameOfTypeProvider(minfo.TypeProvider, m),methodName,metadataToken,typeName), m)) | _ -> match mbase.OfType() with | Some cinfo when cinfo.PUntaint((fun x -> x.DeclaringType.IsGenericType),m) -> let declaringType = cinfo.PApply((fun x -> x.DeclaringType),m) let declaringGenericTypeDefn = declaringType.PApply((fun x -> x.GetGenericTypeDefinition()),m) // We have to find the uninstantiated formal signature corresponing to this instantiated constructor. // Annoyingly System.Reflection doesn't give us a MetadataToken to compare on, so we have to look by doing // the instantiation and comparing.. let found = let ctors = declaringGenericTypeDefn.PApplyArray((fun x -> x.GetConstructors()),"GetConstructors",m) let actualParameterTypes = [ for p in cinfo.PApplyArray((fun x -> x.GetParameters()), "GetParameters",m) do yield ImportProvidedType env m (p.PApply((fun p -> p.ParameterType),m)) ] let actualGenericArgs = argsOfAppTy env.g (ImportProvidedType env m declaringType) ctors |> Array.tryFind (fun ctor -> let formalParameterTypesAfterInstantiation = [ for p in ctor.PApplyArray((fun x -> x.GetParameters()), "GetParameters",m) do let ilFormalTy = ImportProvidedTypeAsILType env m (p.PApply((fun p -> p.ParameterType),m)) yield ImportILType env m actualGenericArgs ilFormalTy ] (formalParameterTypesAfterInstantiation,actualParameterTypes) ||> List.lengthsEqAndForall2 (typeEquiv env.g)) match found with | Some found -> found.Coerce(m) | None -> let typeName = declaringGenericTypeDefn.PUntaint((fun x -> x.FullName),m) error(NumberedError(FSComp.SR.etIncorrectProvidedConstructor(ExtensionTyping.DisplayNameOfTypeProvider(cinfo.TypeProvider, m),typeName), m)) | _ -> mbase let rty = match mbase.OfType() with | Some minfo -> minfo.PApply((fun minfo -> minfo.ReturnType),m) | None -> match mbase.OfType() with | Some _ -> mbase.PApply((fun _ -> ProvidedType.Void),m) | _ -> failwith "unexpected" let genericArity = if mbase.PUntaint((fun x -> x.IsGenericMethod),m) then mbase.PUntaint((fun x -> x.GetGenericArguments().Length),m) else 0 let callingConv = (if mbase.PUntaint((fun x -> x.IsStatic),m) then ILCallingConv.Static else ILCallingConv.Instance) let parameters = [ for p in mbase.PApplyArray((fun x -> x.GetParameters()), "GetParameters",m) do yield ImportProvidedTypeAsILType env m (p.PApply((fun p -> p.ParameterType),m)) ] mkILMethRef (tref, callingConv, mbase.PUntaint((fun x -> x.Name),m), genericArity, parameters, ImportProvidedTypeAsILType env m rty ) #endif //------------------------------------------------------------------------- // Load an IL assembly into the compiler's internal data structures // Careful use is made of laziness here to ensure we don't read the entire IL // assembly on startup. //-------------------------------------------------------------------------- // tinst gives the type parameters for the enclosing type when converting the type parameters of a generic method let ImportILGenericParameters amap m scoref tinst (gps: ILGenericParameterDefs) = match gps with | [] -> [] | _ -> let amap = amap() let tps = gps |> List.map (fun gp -> NewRigidTypar gp.Name m) let tptys = tps |> List.map mkTyparTy let importInst = tinst@tptys (tps,gps) ||> List.iter2 (fun tp gp -> let constraints = gp.Constraints |> ILList.toList |> List.map (fun ilty -> TyparConstraint.CoercesTo(ImportILType amap m importInst (rescopeILType scoref ilty),m) ) let constraints = if gp.HasReferenceTypeConstraint then (TyparConstraint.IsReferenceType(m)::constraints) else constraints let constraints = if gp.HasNotNullableValueTypeConstraint then (TyparConstraint.IsNonNullableStruct(m)::constraints) else constraints let constraints = if gp.HasDefaultConstructorConstraint then (TyparConstraint.RequiresDefaultConstructor(m)::constraints) else constraints tp.FixupConstraints constraints); tps let multisetDiscriminateAndMap nodef tipf (items: ('Key list * 'Value) list) = // Find all the items with an empty key list and call 'tipf' let tips = [ for (keylist,v) in items do match keylist with | [] -> yield tipf v | _ -> () ] // Find all the items with a non-empty key list. Bucket them together by // the first key. For each bucket, call 'nodef' on that head key and the bucket. let nodes = let buckets = new Dictionary<_,_>(10) for (keylist,v) in items do match keylist with | [] -> () | key::rest -> buckets.[key] <- (rest,v) :: (if buckets.ContainsKey key then buckets.[key] else []); [ for (KeyValue(key,items)) in buckets -> nodef key items ] tips,nodes let rec ImportILTypeDef amap m scoref cpath enc nm (tdef:ILTypeDef) = let lazyModuleOrNamespaceTypeForNestedTypes = lazy let cpath = mkNestedCPath cpath nm ModuleOrType ImportILTypeDefs amap m scoref cpath (enc@[tdef]) tdef.NestedTypes // Add the type itself. NewILTycon (Some cpath) (nm,m) // The read of the type parameters may fail to resolve types. We pick up a new range from the point where that read is forced // Make sure we reraise the original exception one occurs - see findOriginalException. (LazyWithContext.Create((fun m -> ImportILGenericParameters amap m scoref [] tdef.GenericParams), ErrorLogger.findOriginalException)) (scoref,enc,tdef) lazyModuleOrNamespaceTypeForNestedTypes and ImportILTypeDefList amap m cpath enc items = // Split into the ones with namespaces and without // This is a non-trivial function. // Add the ones with namespaces in buckets // That is, multi-set discriminate based in the first element of the namespace list (e.g. "System") // and for each bag resulting from the discrimination fold-in a lazy computation to add the types under that bag let rec add cpath items = let tycons,namespaceModules = items |> multisetDiscriminateAndMap // nodef - called for each bucket, where 'n' is the head element of the namespace used // as a key in the discrimination, tgs is the remaining descriptors. We create a sub-module for 'n' (fun n tgs -> let modty = lazy (add (mkNestedCPath cpath n Namespace) tgs) let mspec = NewModuleOrNamespace (Some cpath) taccessPublic (mkSynId m n) XmlDoc.Empty [] modty mspec) // tipf - called if there are no namespace items left to discriminate on. (fun (n,info:Lazy<_>) -> //Note: this scoref looks like it will always be identical to 'scoref' let (scoref2,_,lazyTypeDef:Lazy) = info.Force() ImportILTypeDef amap m scoref2 cpath enc n (lazyTypeDef.Force())) let kind = match enc with [] -> Namespace | _ -> ModuleOrType NewModuleOrNamespaceType kind (tycons@namespaceModules) [] add cpath items and ImportILTypeDefs amap m scoref cpath enc (tdefs: ILTypeDefs) = // We be very careful not to force a read of the type defs here tdefs.AsListOfLazyTypeDefs |> List.map (fun (ns,n,attrs,lazyTypeDef) -> (ns,(n,notlazy(scoref,attrs,lazyTypeDef)))) |> ImportILTypeDefList amap m cpath enc let ImportILAssemblyMainTypeDefs amap m scoref modul = modul.TypeDefs |> ImportILTypeDefs amap m scoref (CompPath(scoref,[])) [] /// Read the "exported types" table for multi-module assemblies. let ImportILAssemblyExportedType amap m auxModLoader (scoref:ILScopeRef) (exportedType:ILExportedTypeOrForwarder) = // Forwarders are dealt with separately in the ref->def dereferencing logic in tast.fs as they effectively give rise to type equivalences if exportedType.IsForwarder then [] else let info = lazy (match (try let modul = auxModLoader exportedType.ScopeRef Some (lazy modul.TypeDefs.FindByName exportedType.Name) with :? System.Collections.Generic.KeyNotFoundException -> None) with | None -> error(Error(FSComp.SR.impReferenceToDllRequiredByAssembly(exportedType.ScopeRef.QualifiedName, scoref.QualifiedName, exportedType.Name),m)) | Some lazyTypeDef -> scoref,exportedType.CustomAttrs,lazyTypeDef) let ns,n = splitILTypeName exportedType.Name [ ImportILTypeDefList amap m (CompPath(scoref,[])) [] [(ns,(n,info))] ] /// Read the "exported types" table for multi-module assemblies. let ImportILAssemblyExportedTypes amap m auxModLoader scoref (exportedTypes: ILExportedTypesAndForwarders) = [ for exportedType in exportedTypes.AsList do yield! ImportILAssemblyExportedType amap m auxModLoader scoref exportedType ] let ImportILAssemblyTypeDefs (amap, m, auxModLoader, aref, mainmod:ILModuleDef) = let scoref = ILScopeRef.Assembly aref let mtypsForExportedTypes = ImportILAssemblyExportedTypes amap m auxModLoader scoref mainmod.ManifestOfAssembly.ExportedTypes let mainmod = ImportILAssemblyMainTypeDefs amap m scoref mainmod combineModuleOrNamespaceTypeList [] m (mainmod :: mtypsForExportedTypes) // Read the type forwarder table for an assembly let ImportILAssemblyTypeForwarders (amap, m, exportedTypes:ILExportedTypesAndForwarders) = // Note 'td' may be in another module or another assembly! // Note: it is very important that we call auxModLoader lazily lazy ([ //printfn "reading forwarders..." for exportedType in exportedTypes.AsList do let ns,n = splitILTypeName exportedType.Name //printfn "found forwarder for %s..." n let tcref = ImportILTypeRefUncached (amap()) m (ILTypeRef.Create(exportedType.ScopeRef,[],exportedType.Name)) yield (Array.ofList ns,n),tcref let rec nested (nets:ILNestedExportedTypes) enc = [ for net in nets.AsList do //printfn "found nested forwarder for %s..." net.Name let tcref = ImportILTypeRefUncached (amap()) m (ILTypeRef.Create (exportedType.ScopeRef,enc,net.Name)) yield (Array.ofList enc,exportedType.Name),tcref yield! nested net.Nested (enc @ [ net.Name ]) ] yield! nested exportedType.Nested (ns@[n]) ] |> Map.ofList) let ImportILAssembly(amap:(unit -> ImportMap),m,auxModuleLoader,sref,sourceDir,filename,ilModule:ILModuleDef,invalidateCcu:IEvent) = invalidateCcu |> ignore let aref = match sref with | ILScopeRef.Assembly aref -> aref | _ -> error(InternalError("ImportILAssembly: cannot reference .NET netmodules directly, reference the containing assembly instead",m)) let nm = aref.Name let mty = ImportILAssemblyTypeDefs(amap,m,auxModuleLoader,aref,ilModule) let ccuData = { IsFSharp=false; UsesQuotations=false; #if EXTENSIONTYPING InvalidateEvent=invalidateCcu; IsProviderGenerated = false; ImportProvidedType = (fun ty -> ImportProvidedType (amap()) m ty) #endif QualifiedName= Some sref.QualifiedName; Contents = NewCcuContents sref m nm mty ; ILScopeRef = sref; Stamp = newStamp(); SourceCodeDirectory = sourceDir; // note: not an accurate value, but IL assemblies don't give us this information in any attributes. FileName = filename MemberSignatureEquality= (fun ty1 ty2 -> Tastops.typeEquivAux EraseAll (amap()).g ty1 ty2) TypeForwarders = (match ilModule.Manifest with | None -> lazy Map.empty | Some manifest -> ImportILAssemblyTypeForwarders(amap,m,manifest.ExportedTypes)) } CcuThunk.Create(nm,ccuData) fsharp-3.0.34/src/fsharp/msft.pubkey0000775000175000017500000000024012260314606016333 0ustar chrischris$€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“fsharp-3.0.34/src/fsharp/detuple.fsi0000775000175000017500000000413712260314606016317 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Detuple open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Tast (* detuple pass: *) val DetupleImplFile : CcuThunk -> Env.TcGlobals -> TypedImplFile -> TypedImplFile module GlobalUsageAnalysis = val GetValsBoundInExpr : Expr -> Zset type accessor /// Results is "expr information". /// This could extend to be a full graph view of the expr. /// Later could support "safe" change operations, and optimisations could be in terms of those. type Results = { /// v -> context / APP inst args Uses : Zmap; /// v -> binding repr Defns : Zmap; /// bound in a decision tree? DecisionTreeBindings : Zset; /// v -> recursive? * v list -- the others in the mutual binding RecursiveBindings : Zmap; /// val not defined under lambdas TopLevelBindings : Zset; /// top of expr toplevel? (true) IterationIsAtTopLevel : bool; } val GetUsageInfoOfImplFile : Env.TcGlobals -> TypedImplFile -> Results fsharp-3.0.34/src/fsharp/fsc.fsi0000775000175000017500000000103512260314606015422 0ustar chrischrismodule internal Microsoft.FSharp.Compiler.Driver open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Build /// the F# project system calls this to pop up type provider security dialog if needed val internal runFromCommandLineToImportingAssemblies : (string -> unit) * string[] * string * string * Exiter -> unit #if NO_COMPILER_BACKEND #else /// fsc.exe calls this val mainCompile : argv : string[] * bannerAlreadyPrinted : bool * exiter : Exiter * createErrorLogger:(TcConfigBuilder -> ErrorLogger) -> unit #endiffsharp-3.0.34/src/fsharp/fscopts.fs0000775000175000017500000016536112260314606016174 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // # FSComp.SR.opts module internal Microsoft.FSharp.Compiler.Fscopts open Internal.Utilities open System open System.Collections.Generic open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Build open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Lexhelp #if NO_COMPILER_BACKEND #else open Microsoft.FSharp.Compiler.Ilxgen #endif module Attributes = open System.Runtime.CompilerServices #if SILVERLIGHT #else //[] [] do() #endif let lexFilterVerbose = false let mutable enableConsoleColoring = true // global state let setFlag r n = match n with | 0 -> r false | 1 -> r true | _ -> raise (Failure "expected 0/1") let SetOptimizeOff(tcConfigB : TcConfigBuilder) = tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some false } tcConfigB.optSettings <- { tcConfigB.optSettings with localOptUser = Some false } tcConfigB.optSettings <- { tcConfigB.optSettings with crossModuleOptUser = Some false } tcConfigB.optSettings <- { tcConfigB.optSettings with lambdaInlineThreshold = 0 } tcConfigB.ignoreSymbolStoreSequencePoints <- false; tcConfigB.doDetuple <- false; tcConfigB.doTLR <- false; tcConfigB.doFinalSimplify <- false; let SetOptimizeOn(tcConfigB : TcConfigBuilder) = tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some true } tcConfigB.optSettings <- { tcConfigB.optSettings with localOptUser = Some true } tcConfigB.optSettings <- { tcConfigB.optSettings with crossModuleOptUser = Some true } tcConfigB.optSettings <- { tcConfigB.optSettings with lambdaInlineThreshold = 6 } tcConfigB.ignoreSymbolStoreSequencePoints <- true; tcConfigB.doDetuple <- true; tcConfigB.doTLR <- true; tcConfigB.doFinalSimplify <- true; let SetOptimizeSwitch (tcConfigB : TcConfigBuilder) switch = if (switch = On) then SetOptimizeOn(tcConfigB) else SetOptimizeOff(tcConfigB) let SetTailcallSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.emitTailcalls <- (switch = On) let jitoptimizeSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some (switch = On) } let localoptimizeSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.optSettings <- { tcConfigB.optSettings with localOptUser = Some (switch = On) } let crossOptimizeSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.optSettings <- { tcConfigB.optSettings with crossModuleOptUser = Some (switch = On) } let splittingSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.optSettings <- { tcConfigB.optSettings with abstractBigTargets = switch = On } let callVirtSwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.alwaysCallVirt <- switch = On let useHighEntropyVASwitch (tcConfigB : TcConfigBuilder) switch = tcConfigB.useHighEntropyVA <- switch = On let subSystemVersionSwitch (tcConfigB : TcConfigBuilder) (text : string) = let fail() = error(Error(FSComp.SR.optsInvalidSubSystemVersion(text), rangeCmdArgs)) // per spec for 357994: Validate input string, should be two positive integers x.y when x>=4 and y>=0 and both <= 65535 if System.String.IsNullOrEmpty(text) then fail() else match text.Split('.') with | [| majorStr; minorStr|] -> match (Int32.TryParse majorStr), (Int32.TryParse minorStr) with | (true, major), (true, minor) when major >= 4 && major <=65535 && minor >=0 && minor <= 65535 -> tcConfigB.subsystemVersion <- (major, minor) | _ -> fail() | _ -> fail() let (++) x s = x @ [s] let SetTarget (tcConfigB : TcConfigBuilder)(s : string) = match s.ToLowerInvariant() with | "exe" -> tcConfigB.target <- ConsoleExe | "winexe" -> tcConfigB.target <- WinExe | "library" -> tcConfigB.target <- Dll | "module" -> tcConfigB.target <- Module | _ -> error(Error(FSComp.SR.optsUnrecognizedTarget(s),rangeCmdArgs)) let SetDebugSwitch (tcConfigB : TcConfigBuilder) (dtype : string option) (s : OptionSwitch) = match dtype with | Some(s) -> match s with | "pdbonly" -> tcConfigB.jitTracking <- false | "full" -> tcConfigB.jitTracking <- true | _ -> error(Error(FSComp.SR.optsUnrecognizedDebugType(s), rangeCmdArgs)) | None -> tcConfigB.jitTracking <- s = On tcConfigB.debuginfo <- s = On ; let setOutFileName tcConfigB s = tcConfigB.outputFile <- Some s let setSignatureFile tcConfigB s = tcConfigB.printSignature <- true ; tcConfigB.printSignatureFile <- s // option tags let tagString = "" let tagExe = "exe" let tagWinExe = "winexe" let tagLibrary = "library" let tagModule = "module" let tagFile = "" let tagFileList = "" let tagDirList = "" let tagPathList = "" let tagResInfo = "" let tagFullPDBOnly = "{full|pdbonly}" let tagWarnList = "" let tagSymbolList = "" let tagAddress = "
" let tagInt = "" let tagNone = "" // PrintOptionInfo //---------------- /// Print internal "option state" information for diagnostics and regression tests. let PrintOptionInfo (tcConfigB:TcConfigBuilder) = printfn " jitOptUser . . . . . . : %+A" tcConfigB.optSettings.jitOptUser printfn " localOptUser . . . . . : %+A" tcConfigB.optSettings.localOptUser printfn " crossModuleOptUser . . : %+A" tcConfigB.optSettings.crossModuleOptUser printfn " lambdaInlineThreshold : %+A" tcConfigB.optSettings.lambdaInlineThreshold printfn " ignoreSymStoreSeqPts . : %+A" tcConfigB.ignoreSymbolStoreSequencePoints printfn " doDetuple . . . . . . : %+A" tcConfigB.doDetuple printfn " doTLR . . . . . . . . : %+A" tcConfigB.doTLR printfn " doFinalSimplify. . . . : %+A" tcConfigB.doFinalSimplify printfn " jitTracking . . . . . : %+A" tcConfigB.jitTracking printfn " debuginfo . . . . . . : %+A" tcConfigB.debuginfo printfn " resolutionEnvironment : %+A" tcConfigB.resolutionEnvironment printfn " product . . . . . . . : %+A" tcConfigB.productNameForBannerText tcConfigB.includes |> List.sort |> List.iter (printfn " include . . . . . . . : %A") // OptionBlock: Input files //------------------------- let inputFileFlagsBoth (tcConfigB : TcConfigBuilder) = [ CompilerOption("reference", tagFile, OptionString (fun s -> tcConfigB.AddReferencedAssemblyByPath (rangeStartup,s)), None, Some (FSComp.SR.optsReference()) ); ] let referenceFlagAbbrev (tcConfigB : TcConfigBuilder) = CompilerOption("r", tagFile, OptionString (fun s -> tcConfigB.AddReferencedAssemblyByPath (rangeStartup,s)), None, Some(FSComp.SR.optsShortFormOf("--reference")) ) let inputFileFlagsFsi tcConfigB = inputFileFlagsBoth tcConfigB let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB // OptionBlock: Errors and warnings //--------------------------------- let errorsAndWarningsFlags (tcConfigB : TcConfigBuilder) = [ CompilerOption("warnaserror", tagNone, OptionSwitch(fun switch -> tcConfigB.globalWarnAsError <- switch <> Off), None, Some (FSComp.SR.optsWarnaserrorPM())); CompilerOption("warnaserror", tagWarnList, OptionIntListSwitch (fun n switch -> if switch = Off then tcConfigB.specificWarnAsError <- ListSet.remove (=) n tcConfigB.specificWarnAsError ; tcConfigB.specificWarnAsWarn <- ListSet.insert (=) n tcConfigB.specificWarnAsWarn else tcConfigB.specificWarnAsWarn <- ListSet.remove (=) n tcConfigB.specificWarnAsWarn ; tcConfigB.specificWarnAsError <- ListSet.insert (=) n tcConfigB.specificWarnAsError), None, Some (FSComp.SR.optsWarnaserror())); CompilerOption("warn", tagInt, OptionInt (fun n -> tcConfigB.globalWarnLevel <- if (n >= 0 && n <= 5) then n else error(Error(FSComp.SR.optsInvalidWarningLevel(n),rangeCmdArgs))), None, Some (FSComp.SR.optsWarn())); CompilerOption("nowarn", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOff(rangeCmdArgs,n)), None, Some (FSComp.SR.optsNowarn())); CompilerOption("warnon", tagWarnList, OptionStringList (fun n -> tcConfigB.TurnWarningOn(rangeCmdArgs,n)), None, Some(FSComp.SR.optsWarnOn())); CompilerOption("consolecolors", tagNone, OptionSwitch (fun switch -> enableConsoleColoring <- switch=On), None, Some (FSComp.SR.optsConsoleColors())) ] // OptionBlock: Output files //-------------------------- let outputFileFlagsFsi (_tcConfigB : TcConfigBuilder) = [] let outputFileFlagsFsc (tcConfigB : TcConfigBuilder) = [ CompilerOption("out", tagFile, OptionString (setOutFileName tcConfigB), None, Some (FSComp.SR.optsNameOfOutputFile()) ); CompilerOption("target", tagExe, OptionString (SetTarget tcConfigB), None, Some (FSComp.SR.optsBuildConsole())); CompilerOption("target", tagWinExe, OptionString (SetTarget tcConfigB), None, Some (FSComp.SR.optsBuildWindows())); CompilerOption("target", tagLibrary, OptionString (SetTarget tcConfigB), None, Some (FSComp.SR.optsBuildLibrary())); CompilerOption("target", tagModule, OptionString (SetTarget tcConfigB), None, Some (FSComp.SR.optsBuildModule())); CompilerOption("delaysign", tagNone, OptionSwitch (fun s -> tcConfigB.delaysign <- (s = On)), None, Some (FSComp.SR.optsDelaySign())); CompilerOption("doc", tagFile, OptionString (fun s -> tcConfigB.xmlDocOutputFile <- Some s), None, Some (FSComp.SR.optsWriteXml())); CompilerOption("keyfile", tagFile, OptionString (fun s -> tcConfigB.signer <- Some(s)), None, Some (FSComp.SR.optsStrongKeyFile())); CompilerOption("keycontainer", tagString, OptionString(fun s -> tcConfigB.container <- Some(s)),None, Some(FSComp.SR.optsStrongKeyContainer())); CompilerOption("platform", tagString, OptionString (fun s -> tcConfigB.platform <- match s with | "x86" -> Some X86 | "x64" -> Some AMD64 | "Itanium" -> Some IA64 | "anycpu32bitpreferred" -> (tcConfigB.prefer32Bit <- true; None) | "anycpu" -> None | _ -> error(Error(FSComp.SR.optsUnknownPlatform(s),rangeCmdArgs))), None, Some(FSComp.SR.optsPlatform())) ; CompilerOption("nooptimizationdata", tagNone, OptionUnit (fun () -> tcConfigB.onlyEssentialOptimizationData <- true), None, Some (FSComp.SR.optsNoOpt())); CompilerOption("nointerfacedata", tagNone, OptionUnit (fun () -> tcConfigB.noSignatureData <- true), None, Some (FSComp.SR.optsNoInterface())); CompilerOption("sig", tagFile, OptionString (setSignatureFile tcConfigB), None, Some (FSComp.SR.optsSig())); ] // OptionBlock: Resources //----------------------- let resourcesFlagsFsi (_tcConfigB : TcConfigBuilder) = [] let resourcesFlagsFsc (tcConfigB : TcConfigBuilder) = [ CompilerOption("win32res", tagFile, OptionString (fun s -> tcConfigB.win32res <- s), None, Some (FSComp.SR.optsWin32res())); CompilerOption("win32manifest", tagFile, OptionString (fun s -> tcConfigB.win32manifest <- s), None, Some (FSComp.SR.optsWin32manifest())); CompilerOption("nowin32manifest", tagNone, OptionUnit (fun () -> tcConfigB.includewin32manifest <- false), None, Some (FSComp.SR.optsNowin32manifest())); CompilerOption("resource", tagResInfo, OptionString (fun s -> tcConfigB.AddEmbeddedResource s), None, Some (FSComp.SR.optsResource())); CompilerOption("linkresource", tagResInfo, OptionString (fun s -> tcConfigB.linkResources <- tcConfigB.linkResources ++ s), None, Some (FSComp.SR.optsLinkresource())); ] // OptionBlock: Code generation //----------------------------- let codeGenerationFlags (tcConfigB : TcConfigBuilder) = [ CompilerOption("debug", tagNone, OptionSwitch (SetDebugSwitch tcConfigB None), None, Some (FSComp.SR.optsDebugPM())); CompilerOption("debug", tagFullPDBOnly, OptionString (fun s -> SetDebugSwitch tcConfigB (Some(s)) On), None, Some (FSComp.SR.optsDebug())); CompilerOption("optimize", tagNone, OptionSwitch (SetOptimizeSwitch tcConfigB) , None, Some (FSComp.SR.optsOptimize())); CompilerOption("tailcalls", tagNone, OptionSwitch (SetTailcallSwitch tcConfigB), None, Some (FSComp.SR.optsTailcalls())); CompilerOption("crossoptimize", tagNone, OptionSwitch (crossOptimizeSwitch tcConfigB), None, Some (FSComp.SR.optsCrossoptimize())); ] // OptionBlock: Language //---------------------- let defineSymbol tcConfigB s = tcConfigB.conditionalCompilationDefines <- s :: tcConfigB.conditionalCompilationDefines let mlCompatibilityFlag (tcConfigB : TcConfigBuilder) = CompilerOption("mlcompatibility", tagNone, OptionUnit (fun () -> tcConfigB.mlCompatibility<-true; tcConfigB.TurnWarningOff(rangeCmdArgs,"62")), None, Some (FSComp.SR.optsMlcompatibility())) let languageFlags tcConfigB = [ CompilerOption("checked", tagNone, OptionSwitch (fun switch -> tcConfigB.checkOverflow <- (switch = On)), None, Some (FSComp.SR.optsChecked())); CompilerOption("define", tagString, OptionString (defineSymbol tcConfigB), None, Some (FSComp.SR.optsDefine())); mlCompatibilityFlag tcConfigB ] // OptionBlock: Advanced user options //----------------------------------- let libFlag (tcConfigB : TcConfigBuilder) = CompilerOption("lib", tagDirList, OptionStringList (fun s -> tcConfigB.AddIncludePath (rangeStartup,s,tcConfigB.implicitIncludeDir)), None, Some (FSComp.SR.optsLib())) let libFlagAbbrev (tcConfigB : TcConfigBuilder) = CompilerOption("I", tagDirList, OptionStringList (fun s -> tcConfigB.AddIncludePath (rangeStartup,s,tcConfigB.implicitIncludeDir)), None, Some (FSComp.SR.optsShortFormOf("--lib"))) let codePageFlag (tcConfigB : TcConfigBuilder) = CompilerOption("codepage", tagInt, OptionInt (fun n -> try System.Text.Encoding.GetEncodingShim(n) |> ignore with :? System.ArgumentException as err -> error(Error(FSComp.SR.optsProblemWithCodepage(n,err.Message),rangeCmdArgs)) tcConfigB.inputCodePage <- Some(n)), None, Some (FSComp.SR.optsCodepage())) let utf8OutputFlag (tcConfigB: TcConfigBuilder) = CompilerOption("utf8output", tagNone, OptionUnit (fun () -> tcConfigB.utf8output <- true), None, Some (FSComp.SR.optsUtf8output())) let fullPathsFlag (tcConfigB : TcConfigBuilder) = CompilerOption("fullpaths", tagNone, OptionUnit (fun () -> tcConfigB.showFullPaths <- true), None, Some (FSComp.SR.optsFullpaths())) let cliRootFlag (_tcConfigB : TcConfigBuilder) = CompilerOption("cliroot", tagString, OptionString (fun _ -> ()), Some(DeprecatedCommandLineOptionFull(FSComp.SR.optsClirootDeprecatedMsg(), rangeCmdArgs)), Some(FSComp.SR.optsClirootDescription())) let advancedFlagsBoth tcConfigB = [ codePageFlag tcConfigB; utf8OutputFlag tcConfigB; fullPathsFlag tcConfigB; libFlag tcConfigB; ] let noFrameworkFlag isFsc tcConfigB = CompilerOption("noframework", tagNone, OptionUnit (fun () -> tcConfigB.framework <- false; if isFsc then tcConfigB.implicitlyResolveAssemblies <- false), None, Some (FSComp.SR.optsNoframework())) let advancedFlagsFsi tcConfigB = advancedFlagsBoth tcConfigB @ [noFrameworkFlag false tcConfigB] let advancedFlagsFsc tcConfigB = advancedFlagsBoth tcConfigB @ [ yield CompilerOption("baseaddress", tagAddress, OptionString (fun s -> tcConfigB.baseAddress <- Some(int32 s)), None, Some (FSComp.SR.optsBaseaddress())); yield noFrameworkFlag true tcConfigB; yield CompilerOption("standalone", tagNone, OptionUnit (fun _ -> tcConfigB.openDebugInformationForLaterStaticLinking <- true; tcConfigB.standalone <- true; tcConfigB.implicitlyResolveAssemblies <- true), None, Some (FSComp.SR.optsStandalone())); yield CompilerOption("staticlink", tagFile, OptionString (fun s -> tcConfigB.extraStaticLinkRoots <- tcConfigB.extraStaticLinkRoots @ [s]), None, Some (FSComp.SR.optsStaticlink())); if runningOnMono then yield CompilerOption("resident", tagFile, OptionUnit (fun () -> ()), None, Some (FSComp.SR.optsResident())); yield CompilerOption("pdb", tagString, OptionString (fun s -> tcConfigB.debugSymbolFile <- Some s), None, Some (FSComp.SR.optsPdb())); yield CompilerOption("simpleresolution", tagNone, OptionUnit (fun () -> tcConfigB.useMonoResolution<-true), None, Some (FSComp.SR.optsSimpleresolution())); yield CompilerOption("highentropyva", tagNone, OptionSwitch (useHighEntropyVASwitch tcConfigB), None, Some (FSComp.SR.optsUseHighEntropyVA())) yield CompilerOption("subsystemversion", tagString, OptionString (subSystemVersionSwitch tcConfigB), None, Some (FSComp.SR.optsSubSystemVersion())) ] // OptionBlock: Internal options (internal use only) //-------------------------------------------------- let testFlag tcConfigB = CompilerOption("test", tagString, OptionString (fun s -> match s with | "ErrorRanges" -> tcConfigB.errorStyle <- ErrorStyle.TestErrors | "MemberBodyRanges" -> PostTypecheckSemanticChecks.testFlagMemberBody := true | "Tracking" -> Lib.tracking := true (* general purpose on/off diagnostics flag *) | "NoNeedToTailcall" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportNoNeedToTailcall = true } | "FunctionSizes" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportFunctionSizes = true } | "TotalSizes" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportTotalSizes = true } | "HasEffect" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportHasEffect = true } | "NoErrorText" -> FSComp.SR.SwallowResourceText <- true | "EmitFeeFeeAs100001" -> tcConfigB.testFlagEmitFeeFeeAs100001 <- true | "DumpDebugInfo" -> tcConfigB.dumpDebugInfo <- true | "ShowLoadedAssemblies" -> tcConfigB.showLoadedAssemblies <- true | "ContinueAfterParseFailure" -> tcConfigB.continueAfterParseFailure <- true | str -> warning(Error(FSComp.SR.optsUnknownArgumentToTheTestSwitch(str),rangeCmdArgs))), None, None) // not shown in fsc.exe help, no warning on use, motiviation is for use from VS let vsSpecificFlags (tcConfigB: TcConfigBuilder) = [ CompilerOption("vserrors", tagNone, OptionUnit (fun () -> tcConfigB.errorStyle <- ErrorStyle.VSErrors), None, None); CompilerOption("validate-type-providers", tagNone, OptionUnit (fun () -> tcConfigB.validateTypeProviders <- true), None, None); CompilerOption("LCID", tagInt, OptionInt (fun n -> tcConfigB.lcid <- Some(n)), None, None); CompilerOption("flaterrors", tagNone, OptionUnit (fun () -> tcConfigB.flatErrors <- true), None, None); CompilerOption("gccerrors", tagNone, OptionUnit (fun () -> tcConfigB.errorStyle <- ErrorStyle.GccErrors), None, None); CompilerOption("maxerrors", tagInt, OptionInt (fun n -> tcConfigB.maxErrors <- n), None, None); ] let internalFlags (tcConfigB:TcConfigBuilder) = [ CompilerOption("use-incremental-build", tagNone, OptionUnit (fun () -> tcConfigB.useIncrementalBuilder <- true), None, None) CompilerOption("stamps", tagNone, OptionUnit (fun () -> #if DEBUG Tast.verboseStamps := true #else () #endif ), Some(InternalCommandLineOption("--stamps", rangeCmdArgs)), None); #if SILVERLIGHT #else CompilerOption("ranges", tagNone, OptionSet Tastops.DebugPrint.layoutRanges, Some(InternalCommandLineOption("--ranges", rangeCmdArgs)), None); #endif CompilerOption("terms" , tagNone, OptionUnit (fun () -> tcConfigB.showTerms <- true), Some(InternalCommandLineOption("--terms", rangeCmdArgs)), None); CompilerOption("termsfile" , tagNone, OptionUnit (fun () -> tcConfigB.writeTermsToFiles <- true), Some(InternalCommandLineOption("--termsfile", rangeCmdArgs)), None); CompilerOption("use-incremental-build", tagNone, OptionUnit (fun () -> tcConfigB.useIncrementalBuilder <- true), None, None) #if DEBUG CompilerOption("debug-parse", tagNone, OptionUnit (fun () -> Internal.Utilities.Text.Parsing.Flags.debug <- true), Some(InternalCommandLineOption("--debug-parse", rangeCmdArgs)), None); CompilerOption("ilfiles", tagNone, OptionUnit (fun () -> tcConfigB.writeGeneratedILFiles <- true), Some(InternalCommandLineOption("--ilfiles", rangeCmdArgs)), None); #endif CompilerOption("pause", tagNone, OptionUnit (fun () -> tcConfigB.pause <- true), Some(InternalCommandLineOption("--pause", rangeCmdArgs)), None); CompilerOption("detuple", tagNone, OptionInt (setFlag (fun v -> tcConfigB.doDetuple <- v)), Some(InternalCommandLineOption("--detuple", rangeCmdArgs)), None); CompilerOption("simulateException", tagNone, OptionString (fun s -> tcConfigB.simulateException <- Some(s)), Some(InternalCommandLineOption("--simulateException", rangeCmdArgs)), Some "Simulate an exception from some part of the compiler"); CompilerOption("stackReserveSize", tagNone, OptionString (fun s -> tcConfigB.stackReserveSize <- Some(int32 s)), Some(InternalCommandLineOption("--stackReserveSize", rangeCmdArgs)), Some ("for an exe, set stack reserve size")); CompilerOption("tlr", tagInt, OptionInt (setFlag (fun v -> tcConfigB.doTLR <- v)), Some(InternalCommandLineOption("--tlr", rangeCmdArgs)), None); CompilerOption("mscorlibAssemblyName", tagNone, OptionString (fun s -> tcConfigB.mscorlibAssemblyName <- s), None, None); CompilerOption("finalSimplify", tagInt, OptionInt (setFlag (fun v -> tcConfigB.doFinalSimplify <- v)), Some(InternalCommandLineOption("--finalSimplify", rangeCmdArgs)), None); #if TLR_LIFT CompilerOption("tlrlift", tagNone, OptionInt (setFlag (fun v -> Tlr.liftTLR := v)), Some(InternalCommandLineOption("--tlrlift", rangeCmdArgs)), None); #endif CompilerOption("parseonly", tagNone, OptionUnit (fun () -> tcConfigB.parseOnly <- true), Some(InternalCommandLineOption("--parseonly", rangeCmdArgs)), None); CompilerOption("typecheckonly", tagNone, OptionUnit (fun () -> tcConfigB.typeCheckOnly <- true), Some(InternalCommandLineOption("--typecheckonly", rangeCmdArgs)), None); CompilerOption("ast", tagNone, OptionUnit (fun () -> tcConfigB.printAst <- true), Some(InternalCommandLineOption("--ast", rangeCmdArgs)), None); CompilerOption("tokenize", tagNone, OptionUnit (fun () -> tcConfigB.tokenizeOnly <- true), Some(InternalCommandLineOption("--tokenize", rangeCmdArgs)), None); CompilerOption("testInteractionParser", tagNone, OptionUnit (fun () -> tcConfigB.testInteractionParser <- true), Some(InternalCommandLineOption("--testInteractionParser", rangeCmdArgs)), None); CompilerOption("testparsererrorrecovery", tagNone, OptionUnit (fun () -> tcConfigB.reportNumDecls <- true), Some(InternalCommandLineOption("--testparsererrorrecovery", rangeCmdArgs)), None); CompilerOption("inlinethreshold", tagInt, OptionInt (fun n -> tcConfigB.optSettings <- { tcConfigB.optSettings with lambdaInlineThreshold = n }), Some(InternalCommandLineOption("--inlinethreshold", rangeCmdArgs)), None); CompilerOption("extraoptimizationloops", tagNone, OptionInt (fun n -> tcConfigB.extraOptimizationIterations <- n), Some(InternalCommandLineOption("--extraoptimizationloops", rangeCmdArgs)), None); CompilerOption("abortonerror", tagNone, OptionUnit (fun () -> tcConfigB.abortOnError <- true), Some(InternalCommandLineOption("--abortonerror", rangeCmdArgs)), None); CompilerOption("implicitresolution", tagNone, OptionUnit (fun _ -> tcConfigB.implicitlyResolveAssemblies <- true), Some(InternalCommandLineOption("--implicitresolution", rangeCmdArgs)), None); CompilerOption("resolutions", tagNone, OptionUnit (fun () -> tcConfigB.showReferenceResolutions <- true), Some(InternalCommandLineOption("", rangeCmdArgs)), None); // "Display assembly reference resolution information") ; CompilerOption("resolutionframeworkregistrybase", tagString, OptionString (fun s -> tcConfigB.resolutionFrameworkRegistryBase<-s), Some(InternalCommandLineOption("", rangeCmdArgs)), None); // "The base registry key to use for assembly resolution. This part in brackets here: HKEY_LOCAL_MACHINE\[SOFTWARE\Microsoft\.NETFramework]\v2.0.50727\AssemblyFoldersEx"); CompilerOption("resolutionassemblyfoldersuffix", tagString, OptionString (fun s -> tcConfigB.resolutionAssemblyFoldersSuffix<-s), Some(InternalCommandLineOption("resolutionassemblyfoldersuffix", rangeCmdArgs)), None); // "The base registry key to use for assembly resolution. This part in brackets here: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\[AssemblyFoldersEx]"); CompilerOption("resolutionassemblyfoldersconditions", tagString, OptionString (fun s -> tcConfigB.resolutionAssemblyFoldersConditions <- ","^s), Some(InternalCommandLineOption("resolutionassemblyfoldersconditions", rangeCmdArgs)), None); // "Additional reference resolution conditions. For example \"OSVersion=5.1.2600.0,PlatformID=id"); CompilerOption("msbuildresolution", tagNone, OptionUnit (fun () -> tcConfigB.useMonoResolution<-false), Some(InternalCommandLineOption("msbuildresolution", rangeCmdArgs)), None); // "Resolve assembly references using MSBuild resolution rules rather than directory based (Default=true except when running fsc.exe under mono)"); CompilerOption("indirectcallarraymethods", tagNone, OptionUnit (fun () -> tcConfigB.indirectCallArrayMethods<-true), Some(InternalCommandLineOption("--indirectCallArrayMethods", rangeCmdArgs)), None); CompilerOption("alwayscallvirt",tagNone,OptionSwitch(callVirtSwitch tcConfigB),Some(InternalCommandLineOption("alwayscallvirt",rangeCmdArgs)), None); CompilerOption("nodebugdata",tagNone, OptionUnit (fun () -> tcConfigB.noDebugData<-true),Some(InternalCommandLineOption("--nodebugdata",rangeCmdArgs)), None); testFlag tcConfigB ] @ vsSpecificFlags tcConfigB @ [ CompilerOption("jit", tagNone, OptionSwitch (jitoptimizeSwitch tcConfigB), Some(InternalCommandLineOption("jit", rangeCmdArgs)), None); CompilerOption("localoptimize", tagNone, OptionSwitch(localoptimizeSwitch tcConfigB),Some(InternalCommandLineOption("localoptimize", rangeCmdArgs)), None); CompilerOption("splitting", tagNone, OptionSwitch(splittingSwitch tcConfigB),Some(InternalCommandLineOption("splitting", rangeCmdArgs)), None); CompilerOption("versionfile", tagString, OptionString (fun s -> tcConfigB.version <- VersionFile s), Some(InternalCommandLineOption("versionfile", rangeCmdArgs)), None); CompilerOption("times" , tagNone, OptionUnit (fun () -> tcConfigB.showTimes <- true), Some(InternalCommandLineOption("times", rangeCmdArgs)), None); // "Display timing profiles for compilation"); #if EXTENSIONTYPING CompilerOption("showextensionresolution" , tagNone, OptionUnit (fun () -> tcConfigB.showExtensionTypeMessages <- true), Some(InternalCommandLineOption("showextensionresolution", rangeCmdArgs)), None); // "Display information about extension type resolution"); #endif (* BEGIN: Consider as public Retail option? *) // Some System.Console do not have operational colors, make this available in Retail? CompilerOption("metadataversion", tagString, OptionString (fun s -> tcConfigB.metadataVersion <- Some(s)), Some(InternalCommandLineOption("metadataversion", rangeCmdArgs)), None); ] // OptionBlock: Deprecated flags (fsc, service only) //-------------------------------------------------- let compilingFsLibFlag (tcConfigB : TcConfigBuilder) = CompilerOption("compiling-fslib", tagNone, OptionUnit (fun () -> tcConfigB.compilingFslib <- true; tcConfigB.TurnWarningOff(rangeStartup,"42"); ErrorLogger.reportLibraryOnlyFeatures <- false; IlxSettings.ilxCompilingFSharpCoreLib := true), Some(InternalCommandLineOption("--compiling-fslib", rangeCmdArgs)), None) let compilingFsLib20Flag (tcConfigB : TcConfigBuilder) = CompilerOption("compiling-fslib-20", tagNone, OptionString (fun s -> tcConfigB.compilingFslib20 <- Some s; ), Some(InternalCommandLineOption("--compiling-fslib-20", rangeCmdArgs)), None) let compilingFsLib40Flag (tcConfigB : TcConfigBuilder) = CompilerOption("compiling-fslib-40", tagNone, OptionUnit (fun () -> tcConfigB.compilingFslib40 <- true; ), Some(InternalCommandLineOption("--compiling-fslib-40", rangeCmdArgs)), None) let mlKeywordsFlag = CompilerOption("ml-keywords", tagNone, OptionUnit (fun () -> Lexhelp.Keywords.permitFsharpKeywords <- false), Some(DeprecatedCommandLineOptionNoDescription("--ml-keywords", rangeCmdArgs)), None) let gnuStyleErrorsFlag tcConfigB = CompilerOption("gnu-style-errors", tagNone, OptionUnit (fun () -> tcConfigB.errorStyle <- ErrorStyle.EmacsErrors), Some(DeprecatedCommandLineOptionNoDescription("--gnu-style-errors", rangeCmdArgs)), None) let deprecatedFlagsBoth tcConfigB = [ CompilerOption("light", tagNone, OptionUnit (fun () -> tcConfigB.light <- Some(true)), Some(DeprecatedCommandLineOptionNoDescription("--light", rangeCmdArgs)), None); CompilerOption("indentation-syntax", tagNone, OptionUnit (fun () -> tcConfigB.light <- Some(true)), Some(DeprecatedCommandLineOptionNoDescription("--indentation-syntax", rangeCmdArgs)), None); CompilerOption("no-indentation-syntax", tagNone, OptionUnit (fun () -> tcConfigB.light <- Some(false)), Some(DeprecatedCommandLineOptionNoDescription("--no-indentation-syntax", rangeCmdArgs)), None); ] let deprecatedFlagsFsi tcConfigB = deprecatedFlagsBoth tcConfigB let deprecatedFlagsFsc tcConfigB = deprecatedFlagsBoth tcConfigB @ [ cliRootFlag tcConfigB; CompilerOption("jit-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some true }), Some(DeprecatedCommandLineOptionNoDescription("--jit-optimize", rangeCmdArgs)), None); CompilerOption("no-jit-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some false }), Some(DeprecatedCommandLineOptionNoDescription("--no-jit-optimize", rangeCmdArgs)), None); CompilerOption("jit-tracking", tagNone, OptionUnit (fun _ -> tcConfigB.jitTracking <- true), Some(DeprecatedCommandLineOptionNoDescription("--jit-tracking", rangeCmdArgs)), None); CompilerOption("no-jit-tracking", tagNone, OptionUnit (fun _ -> tcConfigB.jitTracking <- false), Some(DeprecatedCommandLineOptionNoDescription("--no-jit-tracking", rangeCmdArgs)), None); CompilerOption("progress", tagNone, OptionUnit (fun () -> progress := true), Some(DeprecatedCommandLineOptionNoDescription("--progress", rangeCmdArgs)), None); (compilingFsLibFlag tcConfigB) ; (compilingFsLib20Flag tcConfigB) ; (compilingFsLib40Flag tcConfigB) ; CompilerOption("version", tagString, OptionString (fun s -> tcConfigB.version <- VersionString s), Some(DeprecatedCommandLineOptionNoDescription("--version", rangeCmdArgs)), None); // "--clr-mscorlib", OptionString (fun s -> warning(Some(DeprecatedCommandLineOptionNoDescription("--clr-mscorlib", rangeCmdArgs))) ; tcConfigB.Build.mscorlib_assembly_name <- s), "\n\tThe name of mscorlib on the target CLR"; CompilerOption("local-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with localOptUser = Some true }), Some(DeprecatedCommandLineOptionNoDescription("--local-optimize", rangeCmdArgs)), None); CompilerOption("no-local-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with localOptUser = Some false }), Some(DeprecatedCommandLineOptionNoDescription("--no-local-optimize", rangeCmdArgs)), None); CompilerOption("cross-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with crossModuleOptUser = Some true }), Some(DeprecatedCommandLineOptionNoDescription("--cross-optimize", rangeCmdArgs)), None); CompilerOption("no-cross-optimize", tagNone, OptionUnit (fun _ -> tcConfigB.optSettings <- { tcConfigB.optSettings with crossModuleOptUser = Some false }), Some(DeprecatedCommandLineOptionNoDescription("--no-cross-optimize", rangeCmdArgs)), None); CompilerOption("no-string-interning", tagNone, OptionUnit (fun () -> tcConfigB.internConstantStrings <- false), Some(DeprecatedCommandLineOptionNoDescription("--no-string-interning", rangeCmdArgs)), None); CompilerOption("statistics", tagNone, OptionUnit (fun () -> tcConfigB.stats <- true), Some(DeprecatedCommandLineOptionNoDescription("--statistics", rangeCmdArgs)), None); CompilerOption("generate-filter-blocks", tagNone, OptionUnit (fun () -> tcConfigB.generateFilterBlocks <- true), Some(DeprecatedCommandLineOptionNoDescription("--generate-filter-blocks", rangeCmdArgs)), None); //CompilerOption("no-generate-filter-blocks", tagNone, OptionUnit (fun () -> tcConfigB.generateFilterBlocks <- false), Some(DeprecatedCommandLineOptionNoDescription("--generate-filter-blocks", rangeCmdArgs)), None); CompilerOption("max-errors", tagInt, OptionInt (fun n -> tcConfigB.maxErrors <- n), Some(DeprecatedCommandLineOptionSuggestAlternative("--max-errors", "--maxerrors", rangeCmdArgs)),None); CompilerOption("debug-file", tagNone, OptionString (fun s -> tcConfigB.debugSymbolFile <- Some s), Some(DeprecatedCommandLineOptionSuggestAlternative("--debug-file", "--pdb", rangeCmdArgs)), None); CompilerOption("no-debug-file", tagNone, OptionUnit (fun () -> tcConfigB.debuginfo <- false), Some(DeprecatedCommandLineOptionSuggestAlternative("--no-debug-file", "--debug-", rangeCmdArgs)), None); CompilerOption("Ooff", tagNone, OptionUnit (fun () -> SetOptimizeOff(tcConfigB)), Some(DeprecatedCommandLineOptionSuggestAlternative("-Ooff", "--optimize-", rangeCmdArgs)), None); mlKeywordsFlag ; gnuStyleErrorsFlag tcConfigB; ] // OptionBlock: Miscellaneous options //----------------------------------- let DisplayBannerText tcConfigB = if tcConfigB.showBanner then ( printfn "%s" tcConfigB.productNameForBannerText printfn "%s" (FSComp.SR.optsCopyright()) ) /// FSC only help. (FSI has it's own help function). let displayHelpFsc tcConfigB (blocks:CompilerOptionBlock list) = DisplayBannerText tcConfigB; printCompilerOptionBlocks blocks #if SILVERLIGHT #else exit 0 #endif let miscFlagsBoth tcConfigB = [ CompilerOption("nologo", tagNone, OptionUnit (fun () -> tcConfigB.showBanner <- false), None, Some (FSComp.SR.optsNologo())); ] let miscFlagsFsc tcConfigB = miscFlagsBoth tcConfigB @ [ CompilerOption("help", tagNone, OptionHelp (fun blocks -> displayHelpFsc tcConfigB blocks), None, Some (FSComp.SR.optsHelp())) ] let miscFlagsFsi tcConfigB = miscFlagsBoth tcConfigB // OptionBlock: Abbreviations of existing options //----------------------------------------------- let abbreviatedFlagsBoth tcConfigB = [ CompilerOption("d", tagString, OptionString (defineSymbol tcConfigB), None, Some(FSComp.SR.optsShortFormOf("--define"))); CompilerOption("O", tagNone, OptionSwitch (SetOptimizeSwitch tcConfigB) , None, Some(FSComp.SR.optsShortFormOf("--optimize[+|-]"))); CompilerOption("g", tagNone, OptionSwitch (SetDebugSwitch tcConfigB None), None, Some(FSComp.SR.optsShortFormOf("--debug"))); CompilerOption("i", tagString, OptionUnit (fun () -> tcConfigB.printSignature <- true), None, Some(FSComp.SR.optsShortFormOf("--sig"))); referenceFlagAbbrev tcConfigB; (* -r *) libFlagAbbrev tcConfigB; (* -I *) ] let abbreviatedFlagsFsi tcConfigB = abbreviatedFlagsBoth tcConfigB let abbreviatedFlagsFsc tcConfigB = abbreviatedFlagsBoth tcConfigB @ [ (* FSC only abbreviated options *) CompilerOption("o", tagString, OptionString (setOutFileName tcConfigB), None, Some(FSComp.SR.optsShortFormOf("--out"))); CompilerOption("a", tagString, OptionUnit (fun () -> tcConfigB.target <- Dll), None, Some(FSComp.SR.optsShortFormOf("--target library"))); (* FSC help abbreviations. FSI has it's own help options... *) CompilerOption("?" , tagNone, OptionHelp (fun blocks -> displayHelpFsc tcConfigB blocks), None, Some(FSComp.SR.optsShortFormOf("--help"))); CompilerOption("help" , tagNone, OptionHelp (fun blocks -> displayHelpFsc tcConfigB blocks), None, Some(FSComp.SR.optsShortFormOf("--help"))); CompilerOption("full-help", tagNone, OptionHelp (fun blocks -> displayHelpFsc tcConfigB blocks), None, Some(FSComp.SR.optsShortFormOf("--help"))) ] let abbrevFlagSet tcConfigB isFsc = let mutable argList : string list = [] for c in ((if isFsc then abbreviatedFlagsFsc else abbreviatedFlagsFsi) tcConfigB) do match c with | CompilerOption(arg,_,OptionString _,_,_) | CompilerOption(arg,_,OptionStringList _,_,_) -> argList <- argList @ ["-"^arg;"/"^arg] | _ -> () Set.ofList argList // check for abbreviated options that accept spaces instead of colons, and replace the spaces // with colons when necessary let PostProcessCompilerArgs (abbrevArgs : string Set) (args : string []) = let mutable i = 0 let mutable idx = 0 let len = args.Length let mutable arga : string[] = Array.create len "" while i < len do if not(abbrevArgs.Contains(args.[i])) || i = (len - 1) then arga.[idx] <- args.[i] ; i <- i+1 else arga.[idx] <- args.[i] ^ ":" ^ args.[i+1] i <- i + 2 idx <- idx + 1 Array.toList arga.[0 .. (idx - 1)] // OptionBlock: QA options //------------------------ let testingAndQAFlags _tcConfigB = [ CompilerOption("dumpAllCommandLineOptions", tagNone, OptionHelp(fun blocks -> dumpCompilerOptionBlocks blocks), None, None) // "Command line options") ] // Core compiler options, overview //-------------------------------- (* The "core" compiler options are "the ones defined here". Currently, fsi.exe has some additional options, defined in fsi.fs. The compiler options are put into blocks, named as Flags. Some block options differ between fsc and fsi, in this case they split as FlagsFsc and FlagsFsi. The "service.fs" (language service) flags are the same as the fsc flags (except help options are removed). REVIEW: is this correct? what about fsx files in VS and fsi options? Block | notes ---------------------------|-------------------- outputFileFlags | inputFileFlags | resourcesFlags | codeGenerationFlags | errorsAndWarningsFlags | languageFlags | miscFlags | advancedFlags | internalFlags | abbreviatedFlags | deprecatedFlags | REVIEW: some of these may have been valid for fsi.exe? fsiSpecificFlags | These are defined later, in fsi.fs ---------------------------|-------------------- *) // Core compiler options exported to fsc.fs, service.fs and fsi.fs //---------------------------------------------------------------- /// The core/common options used by fsc.exe. [not currently extended by fsc.fs]. let GetCoreFscCompilerOptions (tcConfigB: TcConfigBuilder) = [ PublicOptions(FSComp.SR.optsHelpBannerOutputFiles(), outputFileFlagsFsc tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerInputFiles(), inputFileFlagsFsc tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerResources(), resourcesFlagsFsc tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerCodeGen(), codeGenerationFlags tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerErrsAndWarns(), errorsAndWarningsFlags tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerLanguage(), languageFlags tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerMisc(), miscFlagsFsc tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerAdvanced(), advancedFlagsFsc tcConfigB); PrivateOptions(List.concat [ internalFlags tcConfigB; abbreviatedFlagsFsc tcConfigB; deprecatedFlagsFsc tcConfigB; testingAndQAFlags tcConfigB]) ] /// The core/common options used by the F# VS Language Service. /// Filter out OptionHelp which does printing then exit. This is not wanted in the context of VS!! let GetCoreServiceCompilerOptions (tcConfigB:TcConfigBuilder) = let isHelpOption = function CompilerOption(_,_,OptionHelp _,_,_) -> true | _ -> false List.map (filterCompilerOptionBlock (isHelpOption >> not)) (GetCoreFscCompilerOptions tcConfigB) /// The core/common options used by fsi.exe. [note, some additional options are added in fsi.fs]. let GetCoreFsiCompilerOptions (tcConfigB: TcConfigBuilder) = [ PublicOptions(FSComp.SR.optsHelpBannerOutputFiles() , outputFileFlagsFsi tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerInputFiles() , inputFileFlagsFsi tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerResources() , resourcesFlagsFsi tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerCodeGen() , codeGenerationFlags tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerErrsAndWarns() , errorsAndWarningsFlags tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerLanguage() , languageFlags tcConfigB); // Note: no HTML block for fsi.exe PublicOptions(FSComp.SR.optsHelpBannerMisc() , miscFlagsFsi tcConfigB); PublicOptions(FSComp.SR.optsHelpBannerAdvanced() , advancedFlagsFsi tcConfigB); PrivateOptions(List.concat [ internalFlags tcConfigB; abbreviatedFlagsFsi tcConfigB; deprecatedFlagsFsi tcConfigB; testingAndQAFlags tcConfigB]) ] //---------------------------------------------------------------------------- // PrintWholeAssemblyImplementation //---------------------------------------------------------------------------- let showTermFileCount = ref 0 let PrintWholeAssemblyImplementation (tcConfig:TcConfig) outfile header expr = if tcConfig.showTerms then if tcConfig.writeTermsToFiles then let filename = outfile ^ ".terms" let n = !showTermFileCount showTermFileCount := n+1; use f = System.IO.File.CreateText (filename ^ "-" ^ string n ^ "-" ^ header) Layout.outL f (Layout.squashTo 192 (DebugPrint.assemblyL expr)); else dprintf "\n------------------\nshowTerm: %s:\n" header; Layout.outL stderr (Layout.squashTo 192 (DebugPrint.assemblyL expr)); dprintf "\n------------------\n"; //---------------------------------------------------------------------------- // ReportTime //---------------------------------------------------------------------------- let tPrev = ref None let nPrev = ref None let ReportTime (tcConfig:TcConfig) descr = match !nPrev with | None -> () | Some prevDescr -> if tcConfig.pause then dprintf "[done '%s', entering '%s'] press any key... " prevDescr descr; System.Console.ReadLine() |> ignore; // Intentionally putting this right after the pause so a debugger can be attached. match tcConfig.simulateException with | Some("fsc-oom") -> raise(System.OutOfMemoryException()) | Some("fsc-an") -> raise(System.ArgumentNullException("simulated")) | Some("fsc-invop") -> raise(System.InvalidOperationException()) | Some("fsc-av") -> raise(System.AccessViolationException()) | Some("fsc-aor") -> raise(System.ArgumentOutOfRangeException()) | Some("fsc-dv0") -> raise(System.DivideByZeroException()) | Some("fsc-nfn") -> raise(System.NotFiniteNumberException()) | Some("fsc-oe") -> raise(System.OverflowException()) | Some("fsc-atmm") -> raise(System.ArrayTypeMismatchException()) | Some("fsc-bif") -> raise(System.BadImageFormatException()) | Some("fsc-knf") -> raise(System.Collections.Generic.KeyNotFoundException()) | Some("fsc-ior") -> raise(System.IndexOutOfRangeException()) | Some("fsc-ic") -> raise(System.InvalidCastException()) | Some("fsc-ip") -> raise(System.InvalidProgramException()) | Some("fsc-ma") -> raise(System.MemberAccessException()) | Some("fsc-ni") -> raise(System.NotImplementedException()) | Some("fsc-nr") -> raise(System.NullReferenceException()) #if SILVERLIGHT #else | Some("fsc-oc") -> raise(System.OperationCanceledException()) #endif | Some("fsc-fail") -> failwith "simulated" | _ -> () #if SILVERLIGHT #else if (tcConfig.showTimes || verbose) then // Note that timing calls are relatively expensive on the startup path so we don't // make this call unless showTimes has been turned on. let timeNow = System.Diagnostics.Process.GetCurrentProcess().UserProcessorTime.TotalSeconds let maxGen = System.GC.MaxGeneration let gcNow = [| for i in 0 .. maxGen -> System.GC.CollectionCount(i) |] let ptime = System.Diagnostics.Process.GetCurrentProcess() let wsNow = ptime.WorkingSet/1000000 match !tPrev, !nPrev with | Some (timePrev,gcPrev:int []),Some prevDescr -> let spanGC = [| for i in 0 .. maxGen -> System.GC.CollectionCount(i) - gcPrev.[i] |] dprintf "TIME: %4.1f Delta: %4.1f Mem: %3d" timeNow (timeNow - timePrev) wsNow; dprintf " G0: %3d G1: %2d G2: %2d [%s]\n" spanGC.[Operators.min 0 maxGen] spanGC.[Operators.min 1 maxGen] spanGC.[Operators.min 2 maxGen] prevDescr | _ -> () tPrev := Some (timeNow,gcNow) #endif nPrev := Some descr #if NO_COMPILER_BACKEND #else //---------------------------------------------------------------------------- // OPTIMIZATION - support - addDllToOptEnv //---------------------------------------------------------------------------- let AddExternalCcuToOpimizationEnv tcGlobals optEnv ccuinfo = match ccuinfo.FSharpOptimizationData.Force() with | None -> optEnv | Some(data) -> Opt.BindCcu ccuinfo.FSharpViewOfMetadata data optEnv tcGlobals //---------------------------------------------------------------------------- // OPTIMIZATION - support - optimize //---------------------------------------------------------------------------- let InitialOptimizationEnv (tcImports:TcImports) (tcGlobals:TcGlobals) = let ccuinfos = tcImports.GetImportedAssemblies() let optEnv = Opt.IncrementalOptimizationEnv.Empty let optEnv = List.fold (AddExternalCcuToOpimizationEnv tcGlobals) optEnv ccuinfos optEnv let ApplyAllOptimizations (tcConfig:TcConfig, tcGlobals, tcVal, outfile, importMap, isIncrementalFragment, optEnv, ccu:CcuThunk, tassembly:TypedAssembly) = // NOTE: optEnv - threads through // // Always optimize once - the results of this step give the x-module optimization // info. Subsequent optimization steps choose representations etc. which we don't // want to save in the x-module info (i.e. x-module info is currently "high level"). PrintWholeAssemblyImplementation tcConfig outfile "pass-start" tassembly; #if DEBUG if tcConfig.showOptimizationData then dprintf "Expression prior to optimization:\n%s\n" (Layout.showL (Layout.squashTo 192 (DebugPrint.assemblyL tassembly))); if tcConfig.showOptimizationData then dprintf "CCU prior to optimization:\n%s\n" (Layout.showL (Layout.squashTo 192 (DebugPrint.entityL ccu.Contents))); #endif let optEnv0 = optEnv let (TAssembly(implFiles)) = tassembly ReportTime tcConfig ("Optimizations"); let results,(optEnvFirstLoop,_,_) = ((optEnv0,optEnv0,optEnv0),implFiles) ||> List.mapFold (fun (optEnvFirstLoop,optEnvExtraLoop,optEnvFinalSimplify) implFile -> // Only do abstract_big_targets on the first pass! Only do it when TLR is on! let optSettings = tcConfig.optSettings let optSettings = { optSettings with abstractBigTargets = tcConfig.doTLR } let optSettings = { optSettings with reportingPhase = true } //ReportTime tcConfig ("Initial simplify"); let optEnvFirstLoop,implFile,implFileOptData = Opt.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvFirstLoop,isIncrementalFragment,tcConfig.emitTailcalls,implFile) // Only do this on the first pass! let optSettings = { optSettings with abstractBigTargets = false } let optSettings = { optSettings with reportingPhase = false } #if DEBUG if tcConfig.showOptimizationData then dprintf "Optimization implFileOptData:\n%s\n" (Layout.showL (Layout.squashTo 192 (Opt.moduleInfoL tcGlobals implFileOptData))); #endif let implFile,optEnvExtraLoop = if tcConfig.extraOptimizationIterations > 0 then //ReportTime tcConfig ("Extra simplification loop"); let optEnvExtraLoop,implFile, _ = Opt.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvExtraLoop,isIncrementalFragment,tcConfig.emitTailcalls,implFile) //PrintWholeAssemblyImplementation tcConfig outfile (sprintf "extra-loop-%d" n) implFile; implFile,optEnvExtraLoop else implFile,optEnvExtraLoop let implFile = if tcConfig.doDetuple then //ReportTime tcConfig ("Detupled optimization"); let implFile = implFile |> Detuple.DetupleImplFile ccu tcGlobals //PrintWholeAssemblyImplementation tcConfig outfile "post-detuple" implFile; implFile else implFile let implFile = if tcConfig.doTLR then implFile |> Tlr.MakeTLRDecisions ccu tcGlobals else implFile let implFile = Lowertop.LowerImplFile tcGlobals implFile let implFile,optEnvFinalSimplify = if tcConfig.doFinalSimplify then //ReportTime tcConfig ("Final simplify pass"); let optEnvFinalSimplify,implFile, _ = Opt.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvFinalSimplify,isIncrementalFragment,tcConfig.emitTailcalls,implFile) //PrintWholeAssemblyImplementation tcConfig outfile "post-rec-opt" implFile; implFile,optEnvFinalSimplify else implFile,optEnvFinalSimplify (implFile,implFileOptData),(optEnvFirstLoop,optEnvExtraLoop,optEnvFinalSimplify)) let implFiles,implFileOptDatas = List.unzip results let assemblyOptData = Opt.UnionModuleInfos implFileOptDatas let tassembly = TAssembly(implFiles) PrintWholeAssemblyImplementation tcConfig outfile "pass-end" tassembly; ReportTime tcConfig ("Ending Optimizations"); tassembly, assemblyOptData,optEnvFirstLoop //---------------------------------------------------------------------------- // ILX generation //---------------------------------------------------------------------------- let CreateIlxAssemblyGenerator (_tcConfig:TcConfig,tcImports:TcImports,tcGlobals, tcVal, generatedCcu) = let ilxGenerator = new Ilxgen.IlxAssemblyGenerator (tcImports.GetImportMap(), tcGlobals, tcVal, generatedCcu) let ccus = tcImports.GetCcusInDeclOrder() ilxGenerator.AddExternalCcus ccus ilxGenerator let GenerateIlxCode (ilxBackend, isInteractiveItExpr, isInteractiveOnMono, tcConfig:TcConfig, topAttrs, optimizedImpls, fragName, netFxHasSerializableAttribute, ilxGenerator : IlxAssemblyGenerator) = if !progress then dprintf "Generating ILX code...\n"; let ilxGenOpts : IlxGenOptions = { generateFilterBlocks = tcConfig.generateFilterBlocks; emitConstantArraysUsingStaticDataBlobs = // Don't use static array blobs for dynamic code on Mono or Silverlight not isInteractiveOnMono && not (ilxBackend = IlxGenBackend.IlReflectBackend && tcConfig.TargetIsSilverlight); workAroundReflectionEmitBugs=tcConfig.isInteractive; // REVIEW: is this still required? generateDebugSymbols= tcConfig.debuginfo; fragName = fragName; localOptimizationsAreOn= tcConfig.optSettings.localOpt (); testFlagEmitFeeFeeAs100001 = tcConfig.testFlagEmitFeeFeeAs100001; mainMethodInfo= (if (tcConfig.target = Dll || tcConfig.target = Module) then None else Some topAttrs.mainMethodAttrs); ilxBackend = ilxBackend; isInteractive = tcConfig.isInteractive; isInteractiveItExpr = isInteractiveItExpr; netFxHasSerializableAttribute = netFxHasSerializableAttribute; alwaysCallVirt = tcConfig.alwaysCallVirt } ilxGenerator.GenerateCode (ilxGenOpts, optimizedImpls, topAttrs.assemblyAttrs,topAttrs.netModuleAttrs) #endif // !NO_COMPILER_BACKEND //---------------------------------------------------------------------------- // Assembly ref normalization: make sure all assemblies are referred to // by the same references. Only used for static linking. //---------------------------------------------------------------------------- let NormalizeAssemblyRefs (tcImports:TcImports) scoref = match scoref with | ILScopeRef.Local | ILScopeRef.Module _ -> scoref | ILScopeRef.Assembly aref -> match tcImports.TryFindDllInfo (Range.rangeStartup,aref.Name,lookupOnly=false) with | Some dllInfo -> dllInfo.ILScopeRef | None -> scoref let fsharpModuleName (t:CompilerTarget) (s:string) = // return the name of the file as a module name let ext = match t with | Dll -> "dll" | Module -> "netmodule" | _ -> "exe" s + "." + ext let ignoreFailureOnMono1_1_16 f = try f() with _ -> () let DoWithErrorColor isWarn f = #if SILVERLIGHT ignore (isWarn : bool) f() #else if not enableConsoleColoring then f() else let foreBackColor = try let c = Console.ForegroundColor // may fail, perhaps on Mac, and maybe ForegroundColor is Black let b = Console.BackgroundColor // may fail, perhaps on Mac, and maybe BackgroundColor is White Some (c,b) with e -> None match foreBackColor with | None -> f() (* could not get console colours, so no attempt to change colours, can not set them back *) | Some (c,_) -> try let warnColor = if Console.BackgroundColor = ConsoleColor.White then ConsoleColor.DarkBlue else ConsoleColor.Cyan let errorColor = ConsoleColor.Red ignoreFailureOnMono1_1_16 (fun () -> Console.ForegroundColor <- (if isWarn then warnColor else errorColor)); f(); finally ignoreFailureOnMono1_1_16 (fun () -> Console.ForegroundColor <- c) #endif fsharp-3.0.34/src/fsharp/fsiAnyCpu/0000775000175000017500000000000012260314606016043 5ustar chrischrisfsharp-3.0.34/src/fsharp/fsiAnyCpu/fsiAnyCPU.exe.config0000775000175000017500000000140712260314606021620 0ustar chrischris fsharp-3.0.34/src/fsharp/fsiAnyCpu/Makefile.in0000664000175000017500000000207612260314606020115 0ustar chrischrisNAME=fsiAnyCpu ASSEMBLY = $(NAME).exe TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --platform:anycpu \ --target:exe REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:$(outdir)FSharp.Compiler.dll \ -r:$(outdir)FSharp.Compiler.Interactive.Settings.dll \ -r:$(outdir)FSharp.Compiler.Server.Shared.dll \ -r:$(monogacdirXX)/System.Windows.Forms.dll \ -r:$(monogacdirXX)/System.Drawing.dll sources = \ $(tmpdir)FSIstrings.fs \ ../../assemblyinfo/assemblyinfo.fsi.exe.fs \ ../InternalCollections.fsi \ ../InternalCollections.fs \ ../fsi/console.fs \ ../fsi/fsi.fs \ ../fsi/fsimain.fs RESOURCES = \ $(tmpdir)FSIstrings.resources $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resources: ../fsi/FSIstrings.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSIstrings.fs $(tmpdir)FSIstrings.resx resgen $(tmpdir)FSIstrings.resx $(tmpdir)FSIstrings.resources include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-bin-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/fsiAnyCpu/FsiAnyCPU.fsproj0000664000175000017500000000716612260314606021043 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug anycpu {d0e98c0d-490b-4c61-9329-0862f6e87645} Exe $(NoWarn);62;44 fsiAnyCpu 0x0A000000 EXTENSIONTYPING;COMPILER;$(DefineConstants) true $(OtherFlags) --warnon:1182 FSIstrings.txt assemblyinfo.fsi.exe.fs InternalCollections.fsi InternalCollections.fs console.fs fsi.fs fsimain.fs PreserveNewest FSharp.Compiler.Interactive.Settings {649FA588-F02E-457C-9FCF-87E46407481E} FSharp.Compiler.Server.Shared {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06} {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3} FSharp.Compiler {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/outcome.fs0000775000175000017500000000261012260314606016151 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // -------------------------------------------------------------------- // Outcomes. These are used to describe steps of a machine that // may raise errors. The errors can be trapped. // -------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Outcome open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library let success a = Result a let raze (b:exn) = Exception b // bind let (||?>) res f = match res with | Result x -> f x | Exception err -> Exception err // map let (|?>) res f = match res with | Result x -> Result(f x ) | Exception err -> Exception err let ForceRaise = function | Result x -> x | Exception err -> raise err let otherwise f x = match x with | Result x -> success x | Exception _err -> f() fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/0000775000175000017500000000000012260314606021013 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/FSharp.Data.TypeProviders.fsproj0000775000175000017500000000713112260314606027116 0ustar chrischris $(MSBuildProjectDirectory)\..\.. Debug AnyCPU Library FSharp.Data.TypeProviders true v4.0 {cb7d20c4-6506-406d-9144-5342c3595f03} TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS;$(DefineConstants) TypeProviderRuntimeAttribute.fs true FSData.txt true Util.fsi true Util.fs true InternalsVisibleTo.fs true TypeProviderEmit.fsi true TypeProviderEmit.fs true TypeProvidersImpl.fs true TypeProviders.fs true assemblyinfo.FSharp.Data.TypeProviders.dll.fs {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/InternalsVisibleTo.fs0000775000175000017500000000072312260314606025132 0ustar chrischrisnamespace Microsoft.FSharp open System.Reflection [] do() fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/FSData.txt0000775000175000017500000003305012260314606022662 0ustar chrischris# FSharp.Data resource strings # ################################################################################ # Util.fs ################################################################################ ################################################################################ unsupportedFramework,"The .NET SDK 4.0 or 4.5 tools could not be found" # ################################################################################ # TypeProviderEmit.fs ################################################################################ ################################################################################ invalidOperationOnProvidedType,"The operation '%s' on item '%s' should not be called on provided type, member or parameter" constructorFor,"constructor for %s" notYetKnownType,"" declaringTypeAlreadySet,"ProvidedConstructor: declaringType already set on '%s'" pcNoInvoker,"ProvidedConstructor: no invoker for '%s'" pcCodeAlreadyGiven,"ProvidedConstructor: code already given for '%s'" pmNoInvokerName,"ProvidedMethod: no invoker for %s on type %s" pcNoInvokerName,"ProvidedConstructor: code already given for %s on type %s" ppGetterAlreadyCreated,"ProvidedProperty: getter MethodInfo has already been created" ppSetterAlreadyCreated,"ProvidedProperty: setter MethodInfo has already been created" unreachable,"unreachable" nonArrayType,"non-array type" nonGenericType,"non-generic type" notAnArrayPointerOrByref,"not an array, pointer or byref type" unitNotFound,"Unit '%s' not found in FSharp.Core SI module" useNullForGlobalNamespace,"Use 'null' for global namespace" typeNotAddedAsAMember,"type '%s' was not added as a member to a declaring type" pdErrorExpectingStaticParameters,"ProvidedTypeDefinition: expecting %d static parameters but given %d for type %s" pdDefineStaticParametersNotCalled,"ProvidedTypeDefinition: DefineStaticParameters was not called" ptdStaticParametersSuppliedButNotExpected,"ProvidedTypeDefinition: static parameters supplied but not expected for %s" containerTypeAlreadySet,"container type for '%s' was already set to '%s'" getMethodImplDoesNotSupportOverloads,"GetMethodImpl does not support overloads" gpiNeedToHandleSpecifiedReturnType,"Need to handle specified return type in GetPropertyImpl" gpiNeedToHandleSpecifiedParameterTypes,"Need to handle specified parameter types in GetPropertyImpl" gpiNeedToHandleSpecifiedModifiers,"Need to handle specified modifiers in GetPropertyImpl" gpiNeedToHandleBinder,"Need to handle binder in GetPropertyImpl" moreThanOneNestedType,"There is more than one nested type called '%s' in type '%s'" # ################################################################################ # TypeProvidersImpl.fs ################################################################################# ################################################################################ errorWritingLocalSchemaFile,"Error writing to local schema file. %s" errorReadingSchema,"Error reading schema. %s" errorInvalidExtensionSchema,"The extension of the given LocalSchema file '%s' is not valid. The required extension is '%s'." fileDoesNotContainXMLElement,"The file '%s' doesn't contain XML element '%s'" failedToLoadFileAsXML,"Failed to load the file '%s' as XML" # ################################################################################ # TypeProviders.fs ################################################################################ ################################################################################ xmlDocContainsTheSimplifiedContextTypes,"Contains the simplified context types for the %s" xmlDocFullServiceTypesAPI,"The full API to the %s.To use the service via the full API, create an instance of one of the types %s.You may need to set the Credentials property on the instance." xmlDocFullServiceTypesAPINoCredentials,"The full API to the %s.To use the service via the full API, create an instance of one of the types %s." xmlDocSimplifiedDataContext,"A simplified data context for the %s. The full data context object is available via the DataContext property." xmlDocExecuteProcedure,"Execute the '%s' procedure" xmlDocGetEntities,"Gets the '%s' entities from the %s. This property may be used as the source in a query expression." xmlDocGetFullContext,"Gets the full data context object for this %s" xmlDocGetSimplifiedContext,"Get a simplified data context for this %s. By default, no credentials are set" xmlDocConstructSimplifiedContext,"Construct a simplified data context for this %s. By default, no credentials are set" dbmlFileTypeHelp,"Provides the types to access a database with the schema in a DBML file, using a LINQ-to-SQL mappingThe DBML file containing the schema descriptionThe folder used to resolve relative file paths at compile-time (default: folder containing the project or script)The name of data context class (default: derived from database name)Generate uni-directional serializable classes (default: false, which means no serialization)" sqlDataConnection,"SQL connection" sqlDataConnectionInfo,"Gets the connection used by the framework" sqlDataConnectionTypeHelp,"Provides the types to access a database, using a LINQ-to-SQL mappingThe connection string for the database connection. If using Visual Studio, a connection string can be found in database properties in the Server Explorer window.The name of the connection string for the database connection in the configuration file.The local .dbml file for the database schema (default: no local schema file)Require that a direct connection to the database be available at design-time and force the refresh of the local schema file (default: true)Automatically pluralize or singularize class and member names using English language rules (default: false)Extract database views (default: true)Extract database functions (default: true)The name of the configuration file used for connection strings (default: app.config or web.config is used)The name of the data directory, used to replace |DataDirectory| in connection strings (default: the project or script directory)The folder used to resolve relative file paths at compile-time (default: folder containing the project or script)Extract stored procedures (default: true)Timeout value in seconds to use when SqlMetal accesses the database (default: 0, which means infinite)The name of data context class (default: derived from database name)Generate uni-directional serializable classes (default: false, which means no serialization)" edmxFileTypeHelp,"Provides the types to access a database with the schema in an EDMX file, using a LINQ-to-Entities mappingThe EDMX file containing the conceptual, storage and mapping schema descriptionsThe folder used to resolve relative file paths at compile-time (default: folder containing the project or script)" sqlEntityConnection,"SQL Entity connection" sqlEntityConnectionTypeHelp,"Provides the types to access a database, using a LINQ-to-Entities mappingThe connection string for the database connectionThe name of the connection string for the database connection in the configuration file.The local file for the database schemaThe name of the ADO.NET data provider to be used for ssdl generation (default: System.Data.SqlClient)The name to use for the EntityContainer in the conceptual modelThe name of the configuration file used for connection strings (default: app.config or web.config is used)The name of the data directory, used to replace |DataDirectory| in connection strings (default: the project or script directory)The folder used to resolve relative file paths at compile-time (default: folder containing the project or script)Require that a direct connection to the database be available at design-time and force the refresh of the local schema file (default: true)Automatically pluralize or singularize class and member names using English language rules (default: false)Exclude foreign key properties in entity type definitions (default: false)" connectionInfo,"Gets the connection used by the object context" odataServiceCredentialsInfo,"Gets or sets the authentication information used by each query for this data context object" odataServiceTypeHelp,"Provides the types to access an OData serviceThe Uri for the OData serviceThe local .csdl file for the service schemaRequire that a direct connection to the service be available at design-time and force the refresh of the local schema file (default: true)The folder used to resolve relative file paths at compile-time (default: folder containing the project or script)Generate collections derived from DataServiceCollection (default: false)" wsdlServiceTypeHelp,"Provides the types to access a WSDL web serviceThe Uri for the WSDL serviceThe .wsdlschema file to store locally cached service schemaRequire that a direct connection to the service be available at design-time and force the refresh of the local schema file (default: true)The folder used to resolve relative file paths at compile-time (default: folder containing the project or script)Generate Message Contract types (default: false)Implement the System.ComponentModel.INotifyPropertyChanged interface on all DataContract types to enable data binding (default: false)Generate classes marked with the Serializable Attribute (default: false)Generate both synchronous and asynchronous method signatures (default: false, which means generate only synchronous method signatures)A fully-qualified or assembly-qualified name of the type to use as a collection data type when code is generated from schemas" staticParameterNotFoundForType,"static parameter '%s' not found for type '%s'" unexpectedMethodBase,"unexpected MethodBase" xmlDocDisposeSimplifiedContext,"Disposes the given context" invalidDataContextClassName,"%s is not valid name for data context class" fixedQueriesNotSupported,"The provided ServiceUri is for a data service that supports fixed queries. The OData type provider does not support such services." dqsServicesNotSupported,"Services that implement the Data Quality Services API are not supported." invalidConnectionString,"The supplied connection string should be either a valid provider-specific connection string or a valid connection string accepted by the EntityClient." nonEquivalentConnectionString,"Connection string presented in EntityClient format can differ only in provider-specific part." noConfigFileFound1,"A configuration string name was specified but no configuration file was found. Neither app.config nor web.config found in project or script directory." noConfigFileFound2,"A configuration string name was specified but the configuration file '%s' was not found" noConnectionStringOrConnectionStringName,"When using this provider you must specify either a connection string or a connection string name. To specify a connection string, use %s<\"...connection string...\">." notBothConnectionStringOrConnectionStringName,"When using this provider you must specify either a connection string or a connection string name, but not both. To specify a connection string, use SqlDataConnection<\"...connection string...\">." invalidProviderInConfigFile,"Invalid provider '%s' in connection string entry '%s' in config file '%s'. SqlDataConnection can only be used with provider 'System.Data.SqlClient'." invalidConnectionStringInConfigFile,"Invalid empty connection string '%s' for the connection string name '%s' in config file '%s'" errorWhileReadingConnectionStringInConfigFile,"An error occured while reading connection string '%s' from the config file '%s': '%s'" serviceMetadataFileElementIsEmpty,"ServiceMetadataFile element cannot be empty" invalidWsdlUri,"The parameter 'ServiceUri' cannot be an empty string." requiredToolNotFound,"The required tool '%s' could not be found." dataDirectoryNotFound,"The data directory '%s' did not exist." edmxFileRequiresDotNet45,"File '%s' requires .NET 4.5. To use this file please change project target framework to .NET 4.5." connectionStringNotFound,"Connection string '%s' not found in configuration file."fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/Util.fs0000775000175000017500000002331612260314606022272 0ustar chrischrisnamespace Microsoft.FSharp.Data.TypeProviders.Utility module internal Util = open System open System.IO open System.Collections.Generic open System.Reflection type ProcessResult = { exitCode : int; stdout : string[] ; stderr : string[] } let executeProcess (workingDirectory,exe,cmdline) = try // External tools (like edmgen.exe) run as part of default OS locale/codepage/LCID. We need to ensure we translate their output // accordingly, by setting up the correct encoding on the stdout/stderr streams. let encodingToTranslateToolOutput = System.Text.Encoding.Default let psi = new System.Diagnostics.ProcessStartInfo(exe,cmdline) psi.WorkingDirectory <- workingDirectory psi.UseShellExecute <- false psi.RedirectStandardOutput <- true psi.RedirectStandardError <- true psi.CreateNoWindow <- true psi.StandardOutputEncoding <- encodingToTranslateToolOutput psi.StandardErrorEncoding <- encodingToTranslateToolOutput let p = System.Diagnostics.Process.Start(psi) let output = ResizeArray() let error = ResizeArray() // nulls are skipped because they act as signal that redirected stream is closed and not as part of output data p.OutputDataReceived.Add(fun args -> if args.Data <> null then output.Add(args.Data)) p.ErrorDataReceived.Add(fun args -> if args.Data <> null then error.Add(args.Data)) p.BeginErrorReadLine() p.BeginOutputReadLine() p.WaitForExit() { exitCode = p.ExitCode; stdout = output.ToArray(); stderr = error.ToArray() } with | :? System.IO.FileNotFoundException | :? System.ComponentModel.Win32Exception -> failwith (FSData.SR.requiredToolNotFound(exe)) | _ -> reraise() let shell (workingDirectory,exe,cmdline,formatError) = // printfn "execute: %s %s" exe cmdline let result = executeProcess(workingDirectory,exe,cmdline) if result.exitCode > 0 then //failwithf "The command\n%s %s\n failed.\n\nError:%s\n\nOutput: %s\n" exe cmdline result.stderr result.stdout match formatError with | None -> let merge lines = String.concat Environment.NewLine lines failwith ((merge result.stderr) + Environment.NewLine + (merge result.stdout)) | Some f -> f result.stdout result.stderr else // printfn "<--command-->\n%s %s\n<-- success --><-- stdout -->\n%s<-- stderr -->\n%s\n" exe cmdline result.stdout result.stderr () let cscExe () = let toolPath = //if System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion().StartsWith("v4.0") then System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() //else // Path.Combine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), @"..\v3.5") Path.Combine(toolPath, "csc.exe") let dataSvcUtilExe () = let toolPath = //if System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion().StartsWith("v4.0") then System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() //else // Path.Combine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), @"..\v4.0.30319") Path.Combine(toolPath, "DataSvcUtil.exe") let edmGenExe () = let toolPath = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() Path.Combine(toolPath, "edmgen.exe") let sdkPath () = let tryResult (key: Microsoft.Win32.RegistryKey) = match key with | null -> None | _ -> let installFolder = key.GetValue("InstallationFolder") :?> string if Directory.Exists installFolder then Some installFolder else None // Annoyingly, the F# 2.0 decoding of 'use key = ...' on a registry key doesn't use an null check on the // key before calling Dispose. THis is because the key type doesn't use the IDisposable pattern. let useKey keyName f = // Look for WinSDK reg keys under the 32bit view of the registry. let reg32view = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry32) let key = reg32view.OpenSubKey keyName try f key finally match key with | null -> () | _ -> key.Dispose() reg32view.Dispose() // if reg32view were really null, we would not be here and the user would have more serious issues not being able to access HKLM useKey @"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" (fun key -> match tryResult key with | Some r -> r | None -> useKey @"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" (fun key -> match tryResult key with | Some r -> r | None -> raise <| System.NotSupportedException(FSData.SR.unsupportedFramework()))) let sdkUtil name = Path.Combine(sdkPath(), name) let svcUtilExe () = sdkUtil "svcutil.exe" let xsdExe () = sdkUtil "xsd.exe" type FileResource = abstract member Path : string inherit IDisposable let ExistingFile(fileName : string) = { new FileResource with member this.Path = fileName interface IDisposable with member this.Dispose() = () } let TemporaryFile(extension : string) = let filename = let fs = Path.GetTempFileName() let fs' = Path.ChangeExtension(fs, extension) if fs <> fs' then File.Delete fs fs' { new FileResource with member this.Path = filename interface IDisposable with member this.Dispose() = File.Delete(filename) } type DirectoryResource = abstract member Path : string inherit IDisposable let TemporaryDirectory() = let dirName = let fs = Path.GetTempFileName() File.Delete fs Directory.CreateDirectory fs |> ignore fs { new DirectoryResource with member this.Path = dirName interface IDisposable with member this.Dispose() = for f in Directory.EnumerateFiles dirName do File.Delete f Directory.Delete dirName } let ExistingDirectory(dirName : string) = { new DirectoryResource with member this.Path = dirName interface IDisposable with member this.Dispose() = () } type MemoizationTable<'T,'U when 'T : equality>(f) = let createdDB = new Dictionary<'T,'U>() member x.Contents = (createdDB :> IDictionary<_,_>) member x.Apply typeName = let found,result = createdDB.TryGetValue typeName if found then result else let ty = f typeName createdDB.[typeName] <- ty ty open System.Threading let WithExclusiveAccessToFile (fileName : string) f = // file name is not specified - run function directly if String.IsNullOrWhiteSpace fileName then f() else // convert filename to the uniform representation: full path + no backslashes + upper case // MSDN: In Silverlight for Windows Phone, private object namespaces are not supported. // In the .NET Framework, object namespaces are supported and because of this the backslash (\) is considered a delimiter and is not supported in the name parameter. // In Silverlight for Windows Phone you can use a backslash (\) in the name parameter. let fileName = Path.GetFullPath(fileName) let fileName = fileName.Replace('\\', '_') let fileName = fileName.ToUpper() // MSDN: On a server that is running Terminal Services, a named system mutex can have two levels of visibility. // If its name begins with the prefix "Global\", the mutex is visible in all terminal server sessions. // Since we use mutex to protect access to file - use Global prefix to cover all terminal sessions let fileName = @"Global\" + fileName use mutex = let mutable createdNew = false let mutex = new Mutex(initiallyOwned = true, name = fileName, createdNew = &createdNew) // createdNew = true - we created and immediately acquired mutex - can continue // createdNew = false - mutex already exists and we do not own it - must wait until it is released if createdNew then mutex else try mutex.WaitOne() |> ignore mutex with | :? AbandonedMutexException -> // if thread that owns mutex was terminated abnormally - then WaitOne will raise AbandonedMutexException // MSDN: The next thread to request ownership of the mutex can handle this exception and proceed, // provided that the integrity of the data structures can be verified. // Current thread still owns mutex so we can return it mutex | _ -> mutex.Dispose() reraise() try f() finally mutex.ReleaseMutex() fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/Makefile.in0000664000175000017500000000201612260314606023057 0ustar chrischrisNAME=FSharp.Data.TypeProviders ASSEMBLY = $(NAME).dll TOKEN=$(SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS += \ $(SIGN_FLAGS) \ --target:library \ --define:TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS REFERENCES += \ -r:$(outdir)FSharp.Core.dll \ -r:System.Xml.dll \ -r:System.Configuration.dll \ -r:System.ServiceModel.dll \ -r:System.Xml.Linq.dll \ -r:System.Core.dll \ -r:System.Data.dll sources = \ $(tmpdir)FSData.fs \ ../../assemblyinfo/assemblyinfo.FSharp.Data.TypeProviders.dll.fs \ Util.fsi Util.fs \ TypeProviderEmit.fsi TypeProviderEmit.fs \ TypeProvidersImpl.fs \ TypeProviders.fs RESOURCES= \ $(tmpdir)FSData.resources $(tmpdir)FSData.fs $(tmpdir)FSData.resources: FSData.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSData.fs $(tmpdir)FSData.resx resgen $(tmpdir)FSData.resx $(tmpdir)FSData.resources include $(topdir)/src/fsharp/targets.make do-final: do-4-0 clean: clean-4-0 install: install-lib-4 install-lib-4-5 fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/TypeProviderEmit.fsi0000775000175000017500000003101512260314606024774 0ustar chrischris#if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS namespace Internal.Utilities.TypeProvider.Emit #else namespace Microsoft.FSharp.TypeProvider.Emit #endif open System open System.Reflection open System.Linq.Expressions open Microsoft.FSharp.Core.CompilerServices /// Represents an erased provided parameter #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedParameter = #else type ProvidedParameter = #endif inherit System.Reflection.ParameterInfo new : parameterName: string * parameterType: Type * ?isOut:bool * ?optionalValue:obj -> ProvidedParameter /// Represents an erased provided constructor. #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedConstructor = #else type ProvidedConstructor = #endif inherit System.Reflection.ConstructorInfo /// Create a new provided constructor. It is not initially associated with any specific provided type definition. new : parameters: ProvidedParameter list -> ProvidedConstructor /// Add XML documentation information to this provided constructor member AddXmlDoc : xmlDoc: string -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary member AddXmlDocDelayed : xmlDocFunction: (unit -> string) -> unit /// Add XML documentation information to this provided constructor, where the documentation is re-computed every time it is required. member AddXmlDocComputed : xmlDocFunction: (unit -> string) -> unit /// Set the quotation used to compute the implementation of invocations of this constructor. member InvokeCode : (Quotations.Expr list -> Quotations.Expr) with set /// Set the function used to compute the implementation of invocations of this constructor. member InvokeCodeInternal : (Quotations.Expr[] -> Quotations.Expr) with get,set /// Add definition location information to the provided constructor. member AddDefinitionLocation : line:int * column:int * filePath:string -> unit #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedMethod = #else type ProvidedMethod = #endif inherit System.Reflection.MethodInfo /// Create a new provided method. It is not initially associated with any specific provided type definition. new : methodName:string * parameters: ProvidedParameter list * returnType: Type -> ProvidedMethod /// Add XML documentation information to this provided constructor member AddXmlDoc : xmlDoc: string -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary member AddXmlDocDelayed : xmlDocFunction: (unit -> string) -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary /// The documentation is re-computed every time it is required. member AddXmlDocComputed : xmlDocFunction: (unit -> string) -> unit /// Set the method attributes of the method. By default these are simple 'MethodAttributes.Public' member SetMethodAttrs : attributes:MethodAttributes -> unit /// Get or set a flag indicating if the property is static. member IsStaticMethod : bool with get, set /// Set the quotation used to compute the implementation of invocations of this method. member InvokeCode : (Quotations.Expr list -> Quotations.Expr) with set /// Set the function used to compute the implementation of invocations of this method. member InvokeCodeInternal : (Quotations.Expr[] -> Quotations.Expr) with get,set /// Add definition location information to the provided type definition. member AddDefinitionLocation : line:int * column:int * filePath:string -> unit /// Represents an erased provided property. #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedProperty = #else type ProvidedProperty = #endif inherit System.Reflection.PropertyInfo /// Create a new provided type. It is not initially associated with any specific provided type definition. new : propertyName: string * propertyType: Type * ?parameters:ProvidedParameter list -> ProvidedProperty /// Add XML documentation information to this provided constructor member AddXmlDoc : xmlDoc: string -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary member AddXmlDocDelayed : xmlDocFunction: (unit -> string) -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary /// The documentation is re-computed every time it is required. member AddXmlDocComputed : xmlDocFunction: (unit -> string) -> unit /// Get or set a flag indicating if the property is static. member IsStatic : bool with set /// Set the quotation used to compute the implementation of invocations of this constructor. member GetterCode : (Quotations.Expr list -> Quotations.Expr) with set /// Set the function used to compute the implementation of invocations of this constructor. member GetterCodeInternal : (Quotations.Expr[] -> Quotations.Expr) with get,set /// Set the function used to compute the implementation of invocations of the property setter member SetterCode : (Quotations.Expr list -> Quotations.Expr) with set /// Set the function used to compute the implementation of invocations of this constructor. member SetterCodeInternal : (Quotations.Expr[] -> Quotations.Expr) with get,set /// Add definition location information to the provided type definition. member AddDefinitionLocation : line:int * column:int * filePath:string -> unit #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS #else /// Represents an erased provided property. [] type ProvidedMeasureBuilder = /// The ProvidedMeasureBuilder for building measures. static member Default : ProvidedMeasureBuilder /// e.g. 1 member One : System.Type /// e.g. m * kg member Product : measure1: System.Type * measure1: System.Type -> System.Type /// e.g. 1 / kg member Inverse : denominator: System.Type -> System.Type /// e.g. kg / m member Ratio : numerator: System.Type * denominator: System.Type -> System.Type /// e.g. m * m member Square : ``measure``: System.Type -> System.Type /// the SI unit from the F# core library, where the string is in capitals and US spelling, e.g. Meter member SI : string -> System.Type /// e.g. float, Vector member AnnotateType : basic: System.Type * argument: System.Type list -> System.Type #endif //TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS /// Represents an erased provided parameter #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedStaticParameter = #else type ProvidedStaticParameter = #endif inherit System.Reflection.ParameterInfo new : parameterName: string * parameterType:Type * ?parameterDefaultValue:obj -> ProvidedStaticParameter /// Represents an erased provided type definition. #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS type internal ProvidedTypeDefinition = #else type ProvidedTypeDefinition = #endif inherit System.Type /// Create a new provided type definition in a namespace. new : assembly: Assembly * namespaceName: string * className: string * baseType: Type option -> ProvidedTypeDefinition /// Create a new provided type definition, to be located as a nested type in some type definition. new : className : string * baseType: Type option -> ProvidedTypeDefinition /// Add the given type as an implemented interface. member AddInterfaceImplementation : interfaceType: Type -> unit /// Specifies that the given method body implements the given method declaration. member DefineMethodOverride : methodInfoBody: ProvidedMethod * methodInfoDeclaration: MethodInfo -> unit /// Add XML documentation information to this provided constructor member AddXmlDoc : xmlDoc: string -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary. /// The documentation is only computed once. member AddXmlDocDelayed : xmlDocFunction: (unit -> string) -> unit /// Add XML documentation information to this provided constructor, where the computation of the documentation is delayed until necessary /// The documentation is re-computed every time it is required. member AddXmlDocComputed : xmlDocFunction: (unit -> string) -> unit /// Set the attributes on the provided type. This fully replaces the default TypeAttributes. member SetAttributes : System.Reflection.TypeAttributes -> unit /// Add a method, property, nested type or other member to a ProvidedTypeDefinition member AddMember : memberInfo:MemberInfo -> unit /// Add a set of members to a ProvidedTypeDefinition member AddMembers : memberInfos:list<#MemberInfo> -> unit /// Add a member to a ProvidedTypeDefinition, delaying computation of the members until required by the compilation context. member AddMemberDelayed : memberFunction:(unit -> #MemberInfo) -> unit /// Add a set of members to a ProvidedTypeDefinition, delaying computation of the members until required by the compilation context. member AddMembersDelayed : (unit -> list<#MemberInfo>) -> unit /// Add the types of the generated assembly as generative types, where types in namespaces get hierarchically positioned as nested types. member AddAssemblyTypesAsNestedTypesDelayed : assemblyFunction:(unit -> System.Reflection.Assembly) -> unit // Parametric types member DefineStaticParameters : parameters: ProvidedStaticParameter list * instantiationFunction: (string -> obj[] -> ProvidedTypeDefinition) -> unit /// Add definition location information to the provided type definition. member AddDefinitionLocation : line:int * column:int * filePath:string -> unit /// Suppress System.Object entries in intellisense menus in instances of this provided type member HideObjectMethods : bool with set /// Emit the given provided type definition and its nested type definitions into an assembly /// and adjust the 'Assembly' property of all provided type definitions to return that /// assembly. /// /// The assembly is only emitted when the Assembly property on the root type is accessed for the first time. member ConvertToGenerated : assemblyFileName:string * ?reportAssembly: (Assembly * byte[] -> unit) -> unit /// Get or set a flag indicating if the ProvidedTypeDefinition is erased member IsErased : bool with get,set /// Get or set a flag indicating if the ProvidedTypeDefinition has type-relocation suppressed [] member SuppressRelocation : bool with get,set #if PROVIDER_TRANSFORMATIONS [] type ProviderTransformations = static member FilterTypes : types: Type list * ?methodFilter : (MethodInfo -> bool) * ?eventFilter : (EventInfo -> bool) * ?propertyFilter : (PropertyInfo -> bool) * ?constructorFilter : (ConstructorInfo -> bool) * ?fieldFilter : (FieldInfo -> bool) * ?baseTypeTransform : (Type -> Type option) -> Type list #endif #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS #else type TypeProviderForNamespaces = /// A base type providing default implementations of type provider functionality when all provided types are of type ProvidedTypeDefinition // A TypeProvider boiler plate type. // 1. Inherit supplying the "providedNamespaces" // 2. Add [] to type. // 3. Add [] do() to assembly. /// Initializes a type provider to provide the types in the given namespace. new : namespaceName:string * types: ProvidedTypeDefinition list -> TypeProviderForNamespaces /// Initializes a type provider new : unit -> TypeProviderForNamespaces /// Add a namespace of provided types. member AddNamespace : namespaceName:string * types: ProvidedTypeDefinition list -> unit /// Invalidate the information provided by the provider member Invalidate : unit -> unit interface ITypeProvider #endiffsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/TypeProviderEmit.fs0000775000175000017500000021553212260314606024633 0ustar chrischris#if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS namespace Internal.Utilities.TypeProvider.Emit #else namespace Microsoft.FSharp.TypeProvider.Emit #endif open System open System.Text open System.IO open System.Reflection open System.Reflection.Emit open System.Collections.Generic open Microsoft.FSharp.Core.CompilerServices [] module Misc = let nonNull str x = if x=null then failwith ("Null in " + str) else x let notRequired opname item = let msg = FSData.SR.invalidOperationOnProvidedType(opname,item) System.Diagnostics.Debug.Assert (false, msg) raise (System.NotSupportedException msg) let mkEditorHideMethodsCustomAttributeData() = { new CustomAttributeData() with member __.Constructor = typeof.GetConstructors().[0] member __.ConstructorArguments = upcast [| |] member __.NamedArguments = upcast [| |] } /// This makes an xml doc attribute w.r.t. an amortized computation of an xml doc string. /// It is important that the text of the xml doc only get forced when poking on the ConstructorArguments /// for the CustomAttributeData object. let mkXmlDocCustomAttributeDataLazy(lazyText: Lazy) = { new CustomAttributeData() with member __.Constructor = typeof.GetConstructors().[0] member __.ConstructorArguments = upcast [| CustomAttributeTypedArgument(typeof, lazyText.Force()) |] member __.NamedArguments = upcast [| |] } let mkXmlDocCustomAttributeData(s:string) = mkXmlDocCustomAttributeDataLazy (lazy s) let mkDefinitionLocationAttributeCustomAttributeData(line:int,column:int,filePath:string) = { new CustomAttributeData() with member __.Constructor = typeof.GetConstructors().[0] member __.ConstructorArguments = upcast [| |] member __.NamedArguments = upcast [| CustomAttributeNamedArgument(typeof.GetProperty("FilePath"), CustomAttributeTypedArgument(typeof, filePath)); CustomAttributeNamedArgument(typeof.GetProperty("Line"), CustomAttributeTypedArgument(typeof, line)) ; CustomAttributeNamedArgument(typeof.GetProperty("Column"), CustomAttributeTypedArgument(typeof, column)) |] } (* let mkParamArrayAttributeData() = { new CustomAttributeData() with member __.Constructor = typeof.GetConstructors().[0] member __.ConstructorArguments = upcast [| |] member __.NamedArguments = upcast [| |] } let mkObsoleteAttributeData(msg:string) = { new CustomAttributeData() with member __.Constructor = typeof.GetConstructors().[0] member __.ConstructorArguments = upcast [| CustomAttributeTypedArgument(typeof, msg) |] member __.NamedArguments = upcast [| |] } *) type CustomAttributesImpl() = let customAttributes = ResizeArray() let mutable hideObjectMethods = false let mutable xmlDocDelayed = None let mutable xmlDocAlwaysRecomputed = None // XML doc text that we only compute once, if any. This must _not_ be forced until the ConstructorArguments // property of the custom attribute is foced. let xmlDocDelayedText = lazy (match xmlDocDelayed with None -> assert false; "" | Some f -> f()) // Custom atttributes that we only compute once let customAttributesOnce = lazy [| if hideObjectMethods then yield mkEditorHideMethodsCustomAttributeData() match xmlDocDelayed with None -> () | Some _ -> customAttributes.Add(mkXmlDocCustomAttributeDataLazy xmlDocDelayedText) yield! customAttributes |] member __.AddDefinitionLocation(line:int,column:int,filePath:string) = customAttributes.Add(mkDefinitionLocationAttributeCustomAttributeData(line, column, filePath)) member __.AddXmlDocComputed(xmlDoc : unit -> string) = xmlDocAlwaysRecomputed <- Some xmlDoc member __.AddXmlDocDelayed(xmlDoc : unit -> string) = xmlDocDelayed <- Some xmlDoc member this.AddXmlDoc(text:string) = this.AddXmlDocDelayed (fun () -> text) member __.HideObjectMethods with set v = hideObjectMethods <- v member __.GetCustomAttributesData() = [| yield! customAttributesOnce.Force() match xmlDocAlwaysRecomputed with None -> () | Some f -> customAttributes.Add(mkXmlDocCustomAttributeData (f())) |] :> IList<_> let transQuotationToCode qexprf (argExprs: Quotations.Expr[]) = let expr = qexprf (Array.toList argExprs) let rec trans q = match q with // Eliminate F# property gets to method calls | Quotations.Patterns.PropertyGet(obj,propInfo,args) -> match obj with | None -> trans (Quotations.Expr.Call(propInfo.GetGetMethod(),args)) | Some o -> trans (Quotations.Expr.Call(trans o,propInfo.GetGetMethod(),args)) // Eliminate F# property sets to method calls | Quotations.Patterns.PropertySet(obj,propInfo,args,v) -> match obj with | None -> trans (Quotations.Expr.Call(propInfo.GetSetMethod(),args@[v])) | Some o -> trans (Quotations.Expr.Call(trans o,propInfo.GetSetMethod(),args@[v])) // Eliminate F# function applications to FSharpFunc<_,_>.Invoke calls | Quotations.Patterns.Application(f,e) -> trans (Quotations.Expr.Call(trans f, f.Type.GetMethod "Invoke", [ e ]) ) | Quotations.Patterns.NewUnionCase(ci, es) -> trans (Quotations.Expr.Call(Reflection.FSharpValue.PreComputeUnionConstructorInfo ci, es) ) | Quotations.Patterns.NewRecord(ci, es) -> trans (Quotations.Expr.NewObject(Reflection.FSharpValue.PreComputeRecordConstructorInfo ci, es) ) | Quotations.Patterns.UnionCaseTest(e,uc) -> let tagInfo = Reflection.FSharpValue.PreComputeUnionTagMemberInfo uc.DeclaringType let tagExpr = match tagInfo with | :? PropertyInfo as tagProp -> trans (Quotations.Expr.PropertyGet(e,tagProp) ) | :? MethodInfo as tagMeth -> if tagMeth.IsStatic then trans (Quotations.Expr.Call(tagMeth, [e])) else trans (Quotations.Expr.Call(e,tagMeth,[])) | _ -> failwith "unreachable: unexpected result from PreComputeUnionTagMemberInfo" let tagNumber = uc.Tag trans <@@ (%%(tagExpr) : int) = tagNumber @@> // Handle the generic cases | Quotations.ExprShape.ShapeLambda(v,body) -> Quotations.Expr.Lambda(v, trans body) | Quotations.ExprShape.ShapeCombination(comb,args) -> Quotations.ExprShape.RebuildShapeCombination(comb,List.map trans args) | Quotations.ExprShape.ShapeVar _ -> q trans expr let adjustTypeAttributes attributes isNested = let visibilityAttributes = match attributes &&& TypeAttributes.VisibilityMask with | TypeAttributes.Public when isNested -> TypeAttributes.NestedPublic | TypeAttributes.NotPublic when isNested -> TypeAttributes.NestedAssembly | TypeAttributes.NestedPublic when not isNested -> TypeAttributes.Public | TypeAttributes.NestedAssembly | TypeAttributes.NestedPrivate | TypeAttributes.NestedFamORAssem | TypeAttributes.NestedFamily | TypeAttributes.NestedFamANDAssem when not isNested -> TypeAttributes.NotPublic | a -> a (attributes &&& ~~~TypeAttributes.VisibilityMask) ||| visibilityAttributes type ProvidedStaticParameter(parameterName:string,parameterType:Type,?parameterDefaultValue:obj) = inherit System.Reflection.ParameterInfo() override __.RawDefaultValue = defaultArg parameterDefaultValue null override __.Attributes = if parameterDefaultValue.IsNone then enum 0 else ParameterAttributes.Optional override __.Position = 0 override __.ParameterType = parameterType override __.Name = parameterName override __.GetCustomAttributes(_inherit) = ignore(_inherit); notRequired "GetCustomAttributes" parameterName override __.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" parameterName type ProvidedParameter(name:string,parameterType:Type,?isOut:bool,?optionalValue:obj) = inherit System.Reflection.ParameterInfo() let isOut = defaultArg isOut false let customAttributesImpl = CustomAttributesImpl() override this.Name = name override this.ParameterType = parameterType override this.Attributes = (base.Attributes ||| (if isOut then ParameterAttributes.Out else enum 0) ||| (match optionalValue with None -> enum 0 | Some _ -> ParameterAttributes.Optional ||| ParameterAttributes.HasDefault)) override this.RawDefaultValue = defaultArg optionalValue null override __.GetCustomAttributesData() = customAttributesImpl.GetCustomAttributesData() override __.GetCustomAttributes(_inherit) = ignore(_inherit); notRequired "GetCustomAttributes" name override __.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" name type ProvidedConstructor(parameters : ProvidedParameter list) = inherit ConstructorInfo() let parameters = parameters |> List.map (fun p -> p :> ParameterInfo) let mutable declaringType = null : System.Type let mutable invokeCode = None : option Quotations.Expr> let nameText () = FSData.SR.constructorFor((if declaringType=null then FSData.SR.notYetKnownType() else declaringType.FullName)) let customAttributesImpl = CustomAttributesImpl() member this.AddXmlDocComputed xmlDoc = customAttributesImpl.AddXmlDocComputed xmlDoc member this.AddXmlDocDelayed xmlDoc = customAttributesImpl.AddXmlDocDelayed xmlDoc member this.AddXmlDoc xmlDoc = customAttributesImpl.AddXmlDoc xmlDoc member this.AddDefinitionLocation(line,column,filePath) = customAttributesImpl.AddDefinitionLocation(line, column, filePath) member this.HideObjectMethods with set v = customAttributesImpl.HideObjectMethods <- v override this.GetCustomAttributesData() = customAttributesImpl.GetCustomAttributesData() member this.DeclaringTypeImpl with set x = if declaringType<>null then failwith (FSData.SR.declaringTypeAlreadySet(nameText())); declaringType <- x member this.InvokeCode with set (q:Quotations.Expr list -> Quotations.Expr) = this.InvokeCodeInternal <- transQuotationToCode q member this.InvokeCodeInternal with get() = match invokeCode with | Some f -> f | None -> failwith (FSData.SR.pcNoInvoker(nameText())) and set f = match invokeCode with | None -> invokeCode <- Some f | Some _ -> failwith (FSData.SR.pcCodeAlreadyGiven(nameText())) // Implement overloads override this.GetParameters() = parameters |> List.toArray override this.Attributes = MethodAttributes.Public ||| MethodAttributes.RTSpecialName override this.Name = if this.IsStatic then ".cctor" else ".ctor" override this.DeclaringType = declaringType |> nonNull "ProvidedConstructor.DeclaringType" override this.IsDefined(_attributeType, _inherit) = true override this.Invoke(_invokeAttr, _binder, _parameters, _culture) = notRequired "Invoke" (nameText()) override this.Invoke(_obj, _invokeAttr, _binder, _parameters, _culture) = notRequired "Invoke" (nameText()) override this.ReflectedType = notRequired "ReflectedType" (nameText()) override this.GetMethodImplementationFlags() = notRequired "GetMethodImplementationFlags" (nameText()) override this.MethodHandle = notRequired "MethodHandle" (nameText()) override this.GetCustomAttributes(_inherit) = notRequired "GetCustomAttributes" (nameText()) override this.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" (nameText()) type ProvidedMethod(methodName: string, parameters: ProvidedParameter list, returnType: Type) = inherit System.Reflection.MethodInfo() let argParams = parameters |> List.map (fun p -> p :> ParameterInfo) // State let mutable declaringType : Type = null let mutable methodAttrs = MethodAttributes.Public let mutable invokeCode = None : option Quotations.Expr> let customAttributesImpl = CustomAttributesImpl() member this.AddXmlDocComputed xmlDoc = customAttributesImpl.AddXmlDocComputed xmlDoc member this.AddXmlDocDelayed xmlDoc = customAttributesImpl.AddXmlDocDelayed xmlDoc member this.AddXmlDoc xmlDoc = customAttributesImpl.AddXmlDoc xmlDoc member this.AddDefinitionLocation(line,column,filePath) = customAttributesImpl.AddDefinitionLocation(line, column, filePath) override this.GetCustomAttributesData() = customAttributesImpl.GetCustomAttributesData() member this.SetMethodAttrs m = methodAttrs <- m member this.DeclaringTypeImpl with set x = declaringType <- x // check: not set twice member this.IsStaticMethod with get() = methodAttrs.HasFlag(MethodAttributes.Static) and set x = if x then methodAttrs <- methodAttrs ||| MethodAttributes.Static else methodAttrs <- methodAttrs &&& (~~~ MethodAttributes.Static) member this.InvokeCode with set (q:Quotations.Expr list -> Quotations.Expr) = this.InvokeCodeInternal <- transQuotationToCode q member this.InvokeCodeInternal with get() = match invokeCode with | Some f -> f | None -> failwith (FSData.SR.pmNoInvokerName(this.Name,(if declaringType=null then FSData.SR.notYetKnownType() else declaringType.FullName))) and set f = match invokeCode with | None -> invokeCode <- Some f | Some _ -> failwith (FSData.SR.pcNoInvokerName(this.Name,(if declaringType=null then FSData.SR.notYetKnownType() else declaringType.FullName))) // Implement overloads override this.GetParameters() = argParams |> Array.ofList override this.Attributes = methodAttrs override this.Name = methodName override this.DeclaringType = declaringType |> nonNull "ProvidedMethod.DeclaringType" override this.IsDefined(_attributeType, _inherit) : bool = true override this.MemberType = MemberTypes.Method override this.CallingConvention = let cc = CallingConventions.Standard let cc = if not (this.IsStatic) then cc ||| CallingConventions.HasThis else cc cc override this.ReturnType = returnType override this.ReturnParameter = null // REVIEW: Give it a name and type? override this.ToString() = "Method " + this.Name override this.ReturnTypeCustomAttributes = notRequired "ReturnTypeCustomAttributes" this.Name override this.GetBaseDefinition() = notRequired "GetBaseDefinition" this.Name override this.GetMethodImplementationFlags() = notRequired "GetMethodImplementationFlags" this.Name override this.MethodHandle = notRequired "MethodHandle" this.Name override this.Invoke(_obj, _invokeAttr, _binder, _parameters, _culture) = notRequired "Invoke" this.Name override this.ReflectedType = notRequired "ReflectedType" this.Name override this.GetCustomAttributes(_inherit) = notRequired "GetCustomAttributes" this.Name override this.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" this.Name type ProvidedProperty(propertyName:string,propertyType:Type, ?parameters:ProvidedParameter list) = inherit System.Reflection.PropertyInfo() // State let parameters = defaultArg parameters [] let mutable declaringType = null let mutable isStatic = false let mutable getterCode = None : option Quotations.Expr> let mutable setterCode = None : option Quotations.Expr> let hasGetter() = getterCode.IsSome let hasSetter() = setterCode.IsSome // Delay construction - to pick up the latest isStatic let markSpecialName (m:ProvidedMethod) = m.SetMethodAttrs(m.Attributes ||| MethodAttributes.SpecialName); m let getter = lazy (ProvidedMethod("get_" + propertyName,parameters,propertyType,IsStaticMethod=isStatic,DeclaringTypeImpl=declaringType,InvokeCodeInternal=getterCode.Value) |> markSpecialName) let setter = lazy (ProvidedMethod("set_" + propertyName,parameters @ [ProvidedParameter("value",propertyType)],typeof,IsStaticMethod=isStatic,DeclaringTypeImpl=declaringType,InvokeCodeInternal=setterCode.Value) |> markSpecialName) let customAttributesImpl = CustomAttributesImpl() member this.AddXmlDocComputed xmlDoc = customAttributesImpl.AddXmlDocComputed xmlDoc member this.AddXmlDocDelayed xmlDoc = customAttributesImpl.AddXmlDocDelayed xmlDoc member this.AddXmlDoc xmlDoc = customAttributesImpl.AddXmlDoc xmlDoc member this.AddDefinitionLocation(line,column,filePath) = customAttributesImpl.AddDefinitionLocation(line, column, filePath) override this.GetCustomAttributesData() = customAttributesImpl.GetCustomAttributesData() member this.DeclaringTypeImpl with set x = declaringType <- x // check: not set twice member this.IsStatic with get() = isStatic and set x = isStatic <- x member this.GetterCode with set (q:Quotations.Expr list -> Quotations.Expr) = this.GetterCodeInternal <- transQuotationToCode q member this.GetterCodeInternal with get() = getterCode.Value and set f = if not getter.IsValueCreated then getterCode <- Some f else failwith (FSData.SR.ppGetterAlreadyCreated()) member this.SetterCode with set (q:Quotations.Expr list -> Quotations.Expr) = this.SetterCodeInternal <- transQuotationToCode q member this.SetterCodeInternal with get() = setterCode.Value and set f = if not (setter.IsValueCreated) then setterCode <- Some f else failwith (FSData.SR.ppSetterAlreadyCreated()) // Implement overloads override this.PropertyType = propertyType override this.SetValue(_obj, _value, _invokeAttr, _binder, _index, _culture) = notRequired "SetValue" this.Name override this.GetAccessors _nonPublic = notRequired "nonPublic" this.Name override this.GetGetMethod _nonPublic = if hasGetter() then getter.Force() :> MethodInfo else null override this.GetSetMethod _nonPublic = if hasSetter() then setter.Force() :> MethodInfo else null override this.GetIndexParameters() = [| for p in parameters -> upcast p |] override this.Attributes = PropertyAttributes.None override this.CanRead = hasGetter() override this.CanWrite = hasSetter() override this.GetValue(_obj, _invokeAttr, _binder, _index, _culture) : obj = notRequired "GetValue" this.Name override this.Name = propertyName override this.DeclaringType = declaringType |> nonNull "ProvidedProperty.DeclaringType" override this.MemberType : MemberTypes = MemberTypes.Property override this.ReflectedType = notRequired "ReflectedType" this.Name override this.GetCustomAttributes(_inherit) = notRequired "GetCustomAttributes" this.Name override this.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" this.Name override this.IsDefined(_attributeType, _inherit) = notRequired "IsDefined" this.Name /// Represents the type constructor in a provided symbol type. type SymbolKind = SDArray | Array of int | Pointer | ByRef | Generic of System.Type /// Represents an array or other symbolic type involving a provided type as the argument. /// See the type provider spec for the methods that must be implemented. /// Note that the type provider specification does not require us to implement pointer-equality for provided types. type ProvidedSymbolType(kind: SymbolKind, args: Type list) = inherit Type() override this.FullName = match kind,args with | SymbolKind.SDArray,[arg] -> arg.FullName + "[]" | SymbolKind.Array _,[arg] -> arg.FullName + "[*]" | SymbolKind.Pointer,[arg] -> arg.FullName + "*" | SymbolKind.ByRef,[arg] -> arg.FullName + "&" | SymbolKind.Generic gty, args -> gty.FullName + args.ToString() | _ -> failwith (FSData.SR.unreachable()) /// Although not strictly required by the type provider specification, this is required when doing basic operations like FullName on /// .NET symbolic types made from this type, e.g. when building Nullable.FullName override this.DeclaringType = match kind,args with | SymbolKind.SDArray,[arg] -> arg | SymbolKind.Array _,[arg] -> arg | SymbolKind.Pointer,[arg] -> arg | SymbolKind.ByRef,[arg] -> arg | SymbolKind.Generic gty,_ -> gty | _ -> failwith (FSData.SR.unreachable()) override this.Name = match kind,args with | SymbolKind.SDArray,[arg] -> arg.Name + "[]" | SymbolKind.Array _,[arg] -> arg.Name + "[*]" | SymbolKind.Pointer,[arg] -> arg.Name + "*" | SymbolKind.ByRef,[arg] -> arg.Name + "&" | SymbolKind.Generic gty, args -> gty.FullName + args.ToString() | _ -> failwith (FSData.SR.unreachable()) override this.BaseType = match kind with | SymbolKind.SDArray -> typeof | SymbolKind.Array _ -> typeof | SymbolKind.Pointer -> typeof | SymbolKind.ByRef -> typeof | SymbolKind.Generic gty -> gty.BaseType override this.GetArrayRank() = (match kind with SymbolKind.Array n -> n | SymbolKind.SDArray -> 1 | _ -> invalidOp (FSData.SR.nonArrayType())) override this.IsArrayImpl() = (match kind with SymbolKind.Array _ | SymbolKind.SDArray -> true | _ -> false) override this.IsByRefImpl() = (match kind with SymbolKind.ByRef _ -> true | _ -> false) override this.IsPointerImpl() = (match kind with SymbolKind.Pointer _ -> true | _ -> false) override this.IsPrimitiveImpl() = false override this.IsGenericType = (match kind with SymbolKind.Generic _ -> true | _ -> false) override this.GetGenericArguments() = (match kind with SymbolKind.Generic _ -> args |> List.toArray | _ -> invalidOp (FSData.SR.nonGenericType())) override this.GetGenericTypeDefinition() = (match kind with SymbolKind.Generic e -> e | _ -> invalidOp (FSData.SR.nonGenericType())) override this.IsCOMObjectImpl() = false override this.HasElementTypeImpl() = (match kind with SymbolKind.Generic _ -> false | _ -> true) override this.GetElementType() = (match kind,args with (SymbolKind.Array _ | SymbolKind.SDArray | SymbolKind.ByRef | SymbolKind.Pointer),[e] -> e | _ -> invalidOp (FSData.SR.notAnArrayPointerOrByref())) override this.ToString() = this.FullName override this.Module : Module = notRequired "Module" this.Name override this.Assembly = notRequired "Assembly" this.Name override this.Namespace = notRequired "Namespace" this.Name override this.GetConstructors _bindingAttr = notRequired "GetConstructors" this.Name override this.GetMethodImpl(_name, _bindingAttr, _binderBinder, _callConvention, _types, _modifiers) = notRequired "GetMethodImpl" this.Name override this.GetMembers _bindingAttr = notRequired "GetMembers" this.Name override this.GetMethods _bindingAttr = notRequired "GetMethods" this.Name override this.GetField(_name, _bindingAttr) = notRequired "GetField" this.Name override this.GetFields _bindingAttr = notRequired "GetFields" this.Name override this.GetInterface(_name, _ignoreCase) = notRequired "GetInterface" this.Name override this.GetInterfaces() = notRequired "GetInterfaces" this.Name override this.GetEvent(_name, _bindingAttr) = notRequired "GetEvent" this.Name override this.GetEvents _bindingAttr = notRequired "GetEvents" this.Name override this.GetProperties _bindingAttr = notRequired "GetProperties" this.Name override this.GetPropertyImpl(_name, _bindingAttr, _binder, _returnType, _types, _modifiers) = notRequired "GetPropertyImpl" this.Name override this.GetNestedTypes _bindingAttr = notRequired "GetNestedTypes" this.Name override this.GetNestedType(_name, _bindingAttr) = notRequired "GetNestedType" this.Name override this.GetAttributeFlagsImpl() = notRequired "GetAttributeFlagsImpl" this.Name override this.UnderlyingSystemType = notRequired "UnderlyingSystemType" this.Name override this.GetCustomAttributesData() = notRequired "GetCustomAttributesData" this.Name override this.MemberType = notRequired "MemberType" this.Name override this.GetHashCode() = notRequired "GetHashCode" this.Name override this.Equals(_that:obj) : bool = notRequired "Equals" this.Name override this.GetMember(_name,_mt,_bindingAttr) = notRequired "GetMember" this.Name override this.GUID = notRequired "GUID" this.Name override this.InvokeMember(_name, _invokeAttr, _binder, _target, _args, _modifiers, _culture, _namedParameters) = notRequired "InvokeMember" this.Name override this.AssemblyQualifiedName = notRequired "AssemblyQualifiedName" this.Name override this.GetConstructorImpl(_bindingAttr, _binder, _callConvention, _types, _modifiers) = notRequired "GetConstructorImpl" this.Name override this.GetCustomAttributes(_inherit) = notRequired "GetCustomAttributes" this.Name override this.GetCustomAttributes(_attributeType, _inherit) = notRequired "GetCustomAttributes" this.Name override this.IsDefined(_attributeType, _inherit) = notRequired "IsDefined" this.Name [] type ProvidedMeasureBuilder() = static let theBuilder = ProvidedMeasureBuilder() static member Default = theBuilder member b.One = typeof member b.Product (m1,m2) = typedefof>.MakeGenericType [| m1;m2 |] member b.Inverse m = typedefof>.MakeGenericType [| m |] member b.Ratio (m1, m2) = b.Product(m1, b.Inverse m2) member b.Square m = b.Product(m, m) member b.SI m = match typedefof>.Assembly.GetType("Microsoft.FSharp.Data.UnitSystems.SI.UnitNames."+m) with | null -> failwith (FSData.SR.unitNotFound(m)) | v -> v member b.AnnotateType (basicType, annotation) = ProvidedSymbolType(Generic basicType, annotation) :> Type [] type TypeContainer = | Namespace of Assembly * string // namespace | Type of System.Type | TypeToBeDecided module GlobalProvidedAssemblyElementsTable = let theTable = Dictionary() type ProvidedTypeDefinition(container:TypeContainer,className : string, baseType : Type option) as this = inherit Type() // state let mutable attributes = TypeAttributes.Public ||| TypeAttributes.Class ||| TypeAttributes.Sealed ||| enum (int32 TypeProviderTypeAttributes.IsErased) let mutable baseType = baseType let mutable membersKnown = ResizeArray() let mutable membersQueue = ResizeArray<(unit -> list)>() let mutable staticParams = [ ] let mutable staticParamsApply = None let mutable container = container let mutable interfaceImpls = ResizeArray() let mutable methodOverrides = ResizeArray() // members API let getMembers() = if membersQueue.Count > 0 then let elems = membersQueue |> Seq.toArray // take a copy in case more elements get added membersQueue.Clear() for f in elems do for i in f() do membersKnown.Add i match i with | :? ProvidedProperty as p -> if p.CanRead then membersKnown.Add (p.GetGetMethod true) if p.CanWrite then membersKnown.Add (p.GetSetMethod true) | _ -> () membersKnown.ToArray() let mutable theAssembly = lazy match container with | TypeContainer.Namespace (theAssembly, rootNamespace) -> if theAssembly = null then failwith "Null assemblies not allowed" if rootNamespace<>null && rootNamespace.Length=0 then failwith "Use 'null' for global namespace" theAssembly | TypeContainer.Type superTy -> superTy.Assembly | TypeContainer.TypeToBeDecided -> failwith (sprintf "type '%s' was not added as a member to a declaring type" this.Name) let rootNamespace = lazy match container with | TypeContainer.Namespace (_,rootNamespace) -> rootNamespace | TypeContainer.Type enclosingTyp -> enclosingTyp.Namespace | TypeContainer.TypeToBeDecided -> failwith (FSData.SR.typeNotAddedAsAMember(this.Name)) let declaringType = lazy match container with | TypeContainer.Namespace _ -> null | TypeContainer.Type enclosingTyp -> enclosingTyp | TypeContainer.TypeToBeDecided -> failwith (FSData.SR.typeNotAddedAsAMember(this.Name)) let fullName = lazy match container with | TypeContainer.Type declaringType -> declaringType.FullName + "+" + className | TypeContainer.Namespace (_,namespaceName) -> if namespaceName="" then failwith (FSData.SR.useNullForGlobalNamespace()) match namespaceName with | null -> className | _ -> namespaceName + "." + className | TypeContainer.TypeToBeDecided -> failwith (FSData.SR.typeNotAddedAsAMember(this.Name)) let patchUpAddedMemberInfo (this:Type) (m:MemberInfo) = match m with | :? ProvidedConstructor as c -> c.DeclaringTypeImpl <- this // patch up "declaring type" on provided MethodInfo | :? ProvidedMethod as m -> m.DeclaringTypeImpl <- this // patch up "declaring type" on provided MethodInfo | :? ProvidedProperty as p -> p.DeclaringTypeImpl <- this // patch up "declaring type" on provided MethodInfo | :? ProvidedTypeDefinition as t -> t.DeclaringTypeImpl <- this | _ -> () let customAttributesImpl = CustomAttributesImpl() member this.AddXmlDocComputed xmlDoc = customAttributesImpl.AddXmlDocComputed xmlDoc member this.AddXmlDocDelayed xmlDoc = customAttributesImpl.AddXmlDocDelayed xmlDoc member this.AddXmlDoc xmlDoc = customAttributesImpl.AddXmlDoc xmlDoc member this.AddDefinitionLocation(line,column,filePath) = customAttributesImpl.AddDefinitionLocation(line, column, filePath) member this.HideObjectMethods with set v = customAttributesImpl.HideObjectMethods <- v override this.GetCustomAttributesData() = customAttributesImpl.GetCustomAttributesData() new (assembly:Assembly,namespaceName,className,baseType) = new ProvidedTypeDefinition(TypeContainer.Namespace (assembly,namespaceName), className, baseType) new (className,baseType) = new ProvidedTypeDefinition(TypeContainer.TypeToBeDecided, className, baseType) // state ops member this.SetBaseType t = baseType <- Some t member this.SetAttributes x = attributes <- x // Add MemberInfos member this.AddMembersDelayed(makeMS : unit -> list<#MemberInfo>) = membersQueue.Add (fun () -> makeMS() |> List.map (fun x -> patchUpAddedMemberInfo this x; x :> MemberInfo )) member this.AddMembers(ms:list<#MemberInfo>) = (* strict *) ms |> List.iter (patchUpAddedMemberInfo this) // strict: patch up now membersQueue.Add (fun () -> ms |> List.map (fun x -> x :> MemberInfo)) member this.AddMember(m:MemberInfo) = this.AddMembers [m] member this.AddMemberDelayed(m : unit -> #MemberInfo) = this.AddMembersDelayed(fun () -> [m()]) member this.AddAssemblyTypesAsNestedTypesDelayed (assemblyf : unit -> System.Reflection.Assembly) = let bucketByPath nodef tipf (items: (string list * 'Value) list) = // Find all the items with an empty key list and call 'tipf' let tips = [ for (keylist,v) in items do match keylist with | [] -> yield tipf v | _ -> () ] // Find all the items with a non-empty key list. Bucket them together by // the first key. For each bucket, call 'nodef' on that head key and the bucket. let nodes = let buckets = new Dictionary<_,_>(10) for (keylist,v) in items do match keylist with | [] -> () | key::rest -> buckets.[key] <- (rest,v) :: (if buckets.ContainsKey key then buckets.[key] else []); [ for (KeyValue(key,items)) in buckets -> nodef key items ] tips @ nodes this.AddMembersDelayed (fun _ -> let topTypes = [ for ty in assemblyf().GetTypes() do if not ty.IsNested then let namespaceParts = match ty.Namespace with null -> [] | s -> s.Split '.' |> Array.toList yield namespaceParts, ty ] let rec loop types = types |> bucketByPath (fun namespaceComponent typesUnderNamespaceComponent -> let t = ProvidedTypeDefinition(namespaceComponent, baseType = Some typeof) t.AddMembers (loop typesUnderNamespaceComponent) (t :> Type)) (fun ty -> ty) loop topTypes) /// Abstract a type to a parametric-type. Requires "formal parameters" and "instantiation function". member this.DefineStaticParameters(staticParameters : list, apply : (string -> obj[] -> ProvidedTypeDefinition)) = staticParams <- staticParameters staticParamsApply <- Some apply /// Get ParameterInfo[] for the parametric type parameters (//s GetGenericParameters) member this.GetStaticParameters() = [| for p in staticParams -> p :> ParameterInfo |] /// Instantiate parametrics type member this.MakeParametricType(name:string,args:obj[]) = if staticParams.Length>0 then if staticParams.Length <> args.Length then failwith (FSData.SR.pdErrorExpectingStaticParameters(staticParams.Length,args.Length,(fullName.Force()))) match staticParamsApply with | None -> failwith (FSData.SR.pdDefineStaticParametersNotCalled()) | Some f -> f name args else failwith (FSData.SR.ptdStaticParametersSuppliedButNotExpected(fullName.Force())) member this.DeclaringTypeImpl with set x = match container with TypeContainer.TypeToBeDecided -> () | _ -> failwith (FSData.SR.containerTypeAlreadySet(this.FullName,x.FullName)); container <- TypeContainer.Type x // Implement overloads override this.Assembly = theAssembly.Force() member this.SetAssembly assembly = theAssembly <- lazy assembly override this.FullName = fullName.Force() override this.Namespace = rootNamespace.Force() override this.BaseType = match baseType with Some ty -> ty | None -> null // Constructors override this.GetConstructors bindingAttr = [| for m in this.GetMembers bindingAttr do if m.MemberType = MemberTypes.Constructor then yield (m :?> ConstructorInfo) |] // Methods override this.GetMethodImpl(name, _bindingAttr, _binderBinder, _callConvention, _types, _modifiers) : MethodInfo = let membersWithName = [ for m in getMembers() do if m.MemberType.HasFlag(MemberTypes.Method) && m.Name = name then yield m ] match membersWithName with | [] -> null | [meth] -> meth :?> MethodInfo | _several -> failwith (FSData.SR.getMethodImplDoesNotSupportOverloads()) override this.GetMethods bindingAttr = this.GetMembers bindingAttr |> Array.filter (fun m -> m.MemberType.HasFlag(MemberTypes.Method)) |> Array.map (fun m -> m :?> MethodInfo) // Fields override this.GetField(name, bindingAttr) = let fields = [| for m in this.GetMembers bindingAttr do if m.MemberType.HasFlag(MemberTypes.Field) && (name = null || m.Name = name) then // REVIEW: name = null. Is that a valid query?! yield m |] if fields.Length > 0 then fields.[0] :?> FieldInfo else null override this.GetFields bindingAttr = [| for m in this.GetMembers bindingAttr do if m.MemberType.HasFlag(MemberTypes.Field) then yield m :?> FieldInfo |] override this.GetInterface(_name, _ignoreCase) = notRequired "GetInterface" this.Name override this.GetInterfaces() = [| yield! interfaceImpls |] member this.GetInterfaceImplementations() = [| yield! interfaceImpls |] member this.AddInterfaceImplementation ityp = interfaceImpls.Add ityp member this.GetMethodOverrides() = [| yield! methodOverrides |] member this.DefineMethodOverride (bodyMethInfo,declMethInfo) = methodOverrides.Add (bodyMethInfo, declMethInfo) // Events override this.GetEvent(name, bindingAttr) = let events = this.GetMembers bindingAttr |> Array.filter(fun m -> m.MemberType.HasFlag(MemberTypes.Event) && (name = null || m.Name = name)) if events.Length > 0 then events.[0] :?> EventInfo else null override this.GetEvents bindingAttr = [| for m in this.GetMembers bindingAttr do if m.MemberType.HasFlag(MemberTypes.Event) then yield downcast m |] // Properties override this.GetProperties bindingAttr = [| for m in this.GetMembers bindingAttr do if m.MemberType.HasFlag(MemberTypes.Property) then yield downcast m |] override this.GetPropertyImpl(name, bindingAttr, binder, returnType, types, modifiers) = if returnType <> null then failwith (FSData.SR.gpiNeedToHandleSpecifiedReturnType()) if types <> null then failwith (FSData.SR.gpiNeedToHandleSpecifiedParameterTypes()) if modifiers <> null then failwith (FSData.SR.gpiNeedToHandleSpecifiedModifiers()) if binder <> null then failwith (FSData.SR.gpiNeedToHandleBinder()) let props = this.GetMembers bindingAttr |> Array.filter(fun m -> m.MemberType.HasFlag(MemberTypes.Property) && (name = null || m.Name = name)) // Review: nam = null, valid query!? if props.Length > 0 then props.[0] :?> PropertyInfo else null // Nested Types override this.MakeArrayType() = ProvidedSymbolType(SymbolKind.SDArray, [this]) :> Type override this.MakeArrayType arg = ProvidedSymbolType(SymbolKind.Array arg, [this]) :> Type override this.MakePointerType() = ProvidedSymbolType(SymbolKind.Pointer, [this]) :> Type override this.MakeByRefType() = ProvidedSymbolType(SymbolKind.ByRef, [this]) :> Type override this.GetMembers _bindingAttr = getMembers() override this.GetNestedTypes bindingAttr = this.GetMembers bindingAttr |> Array.filter(fun m -> m.MemberType.HasFlag(MemberTypes.NestedType) || // Allow 'fake' nested types that are actually real .NET types m.MemberType.HasFlag(MemberTypes.TypeInfo)) |> Array.map(fun m -> m :?> Type) override this.GetMember(name,mt,_bindingAttr) = let mt = if mt &&& MemberTypes.NestedType = MemberTypes.NestedType then mt ||| MemberTypes.TypeInfo else mt getMembers() |> Array.filter(fun m->0<>(int(m.MemberType &&& mt)) && m.Name = name) override this.GetNestedType(name, bindingAttr) = let nt = this.GetMember(name, MemberTypes.NestedType ||| MemberTypes.TypeInfo, bindingAttr) match nt.Length with | 0 -> null | 1 -> downcast nt.[0] | _ -> failwith (FSData.SR.moreThanOneNestedType(name,this.FullName)) // Attributes, etc.. override this.GetAttributeFlagsImpl() = adjustTypeAttributes attributes this.IsNested override this.IsArrayImpl() = false override this.IsByRefImpl() = false override this.IsPointerImpl() = false override this.IsPrimitiveImpl() = false override this.IsCOMObjectImpl() = false override this.HasElementTypeImpl() = false override this.UnderlyingSystemType = typeof override this.Name = className override this.DeclaringType = declaringType.Force() override this.MemberType = if this.IsNested then MemberTypes.NestedType else MemberTypes.TypeInfo override this.GetHashCode() = rootNamespace.GetHashCode() ^^^ className.GetHashCode() override this.Equals(that:obj) = match that with | null -> false | :? ProvidedTypeDefinition as ti -> System.Object.ReferenceEquals(this,ti) | _ -> false override this.GetGenericArguments() = [||] override this.ToString() = this.FullName override this.Module : Module = notRequired "Module" this.Name override this.GUID = Guid.Empty override this.GetConstructorImpl(_bindingAttr, _binder, _callConvention, _types, _modifiers) = null override this.GetCustomAttributes(_inherit) = [| |] override this.GetCustomAttributes(_attributeType, _inherit) = [| |] override this.IsDefined(_attributeType: Type, _inherit) = false override this.GetElementType() = notRequired "Module" this.Name override this.InvokeMember(_name, _invokeAttr, _binder, _target, _args, _modifiers, _culture, _namedParameters) = notRequired "Module" this.Name override this.AssemblyQualifiedName = notRequired "Module" this.Name member this.IsErased with get() = (attributes &&& enum (int32 TypeProviderTypeAttributes.IsErased)) <> enum 0 and set v = if v then attributes <- attributes ||| enum (int32 TypeProviderTypeAttributes.IsErased) else attributes <- attributes &&& ~~~(enum (int32 TypeProviderTypeAttributes.IsErased)) member this.SuppressRelocation with get() = (attributes &&& enum (int32 TypeProviderTypeAttributes.SuppressRelocate)) <> enum 0 and set v = if v then attributes <- attributes ||| enum (int32 TypeProviderTypeAttributes.SuppressRelocate) else attributes <- attributes &&& ~~~(enum (int32 TypeProviderTypeAttributes.SuppressRelocate)) /// Emit the given provided type definitions into an assembly and adjust 'Assembly' property of all type definitions to return that /// assembly. member this.ConvertToGenerated (assemblyFileName: string, ?reportAssemblyElements) = if this.IsErased then invalidOp ("The provided type "+this.Name+"is marked as erased and cannot be converted to a generated type. Set 'IsErased' to false on the ProvidedTypeDefinition") let typeDefinitions = [this] let theElementsLazy = lazy let assemblyShortName = Path.GetFileNameWithoutExtension assemblyFileName let assemblyName = AssemblyName assemblyShortName let assembly = System.AppDomain.CurrentDomain.DefineDynamicAssembly(name=assemblyName,access=AssemblyBuilderAccess.Save,dir=Path.GetDirectoryName assemblyFileName) let assemblyMainModule = assembly.DefineDynamicModule("MainModule", Path.GetFileName assemblyFileName) let typeMap = Dictionary(HashIdentity.Reference) // phase 1 - set assembly fields and emit type definitions begin let rec typeMembers (tb:TypeBuilder) (td : ProvidedTypeDefinition) = for ntd in td.GetNestedTypes(BindingFlags.Public ||| BindingFlags.NonPublic) do nestedType tb ntd and nestedType (tb:TypeBuilder) (ntd : Type) = match ntd with | :? ProvidedTypeDefinition as pntd -> if pntd.IsErased then invalidOp ("The nested provided type "+pntd.Name+"is marked as erased and cannot be converted to a generated type. Set 'IsErased' to false on the ProvidedTypeDefinition") // Adjust the attributes - we're codegen'ing this type as nested let attributes = adjustTypeAttributes ntd.Attributes true let ntb = tb.DefineNestedType(pntd.Name,attr=attributes) pntd.SetAssembly null typeMap.[pntd] <- ntb typeMembers ntb pntd | _ -> () for td in typeDefinitions do // Filter out the additional TypeProviderTypeAttributes flags let attributes = td.Attributes &&& ~~~(enum (int32 TypeProviderTypeAttributes.SuppressRelocate)) &&& ~~~(enum (int32 TypeProviderTypeAttributes.IsErased)) // Adjust the attributes - we're codegen'ing as non-nested let attributes = adjustTypeAttributes attributes false let tb = assemblyMainModule.DefineType(name=td.FullName,attr= attributes) td.SetAssembly null typeMap.[td] <- tb typeMembers tb td end let rec convType (ty:Type) = match ty with | :? ProvidedTypeDefinition as ptd -> if typeMap.ContainsKey ptd then typeMap.[ptd] :> Type else ty | _ -> if ty.IsGenericType then ty.GetGenericTypeDefinition().MakeGenericType (Array.map convType (ty.GetGenericArguments())) elif ty.HasElementType then let ety = convType (ty.GetElementType()) if ty.IsArray then let rank = ty.GetArrayRank() if rank = 1 then ety.MakeArrayType() else ety.MakeArrayType rank elif ty.IsPointer then ety.MakePointerType() elif ty.IsByRef then ety.MakeByRefType() else ty else ty let ctorMap = Dictionary(HashIdentity.Reference) let methMap = Dictionary(HashIdentity.Reference) let iterateTypes f = let rec typeMembers (ptd : ProvidedTypeDefinition) = let tb = typeMap.[ptd] f tb ptd for ntd in ptd.GetNestedTypes(BindingFlags.Public ||| BindingFlags.NonPublic) do nestedType ntd and nestedType (ntd : Type) = match ntd with | :? ProvidedTypeDefinition as pntd -> typeMembers pntd | _ -> () for td in typeDefinitions do typeMembers td // phase 2 - emit member definitions iterateTypes (fun tb ptd -> let defineMeth (minfo:MethodInfo) = match minfo with | :? ProvidedMethod as pminfo when not (methMap.ContainsKey pminfo) -> let mb = tb.DefineMethod(minfo.Name, minfo.Attributes, convType minfo.ReturnType, [| for p in minfo.GetParameters() -> convType p.ParameterType |]) //, CallingConventions.Standard, [| for p in cinfo.GetParameters() -> convType p.ParameterType |]) methMap.[pminfo] <- mb | _ -> () for cinfo in ptd.GetConstructors(BindingFlags.Public ||| BindingFlags.NonPublic) do match cinfo with | :? ProvidedConstructor as pcinfo when not (ctorMap.ContainsKey pcinfo) -> let cb = tb.DefineConstructor(cinfo.Attributes, CallingConventions.Standard, [| for p in cinfo.GetParameters() -> convType p.ParameterType |]) ctorMap.[pcinfo] <- cb | _ -> () for minfo in ptd.GetMethods(BindingFlags.Public ||| BindingFlags.NonPublic) do defineMeth minfo for ityp in ptd.GetInterfaceImplementations() do tb.AddInterfaceImplementation ityp) // phase 3 - emit member code iterateTypes (fun tb ptd -> // Allow at most one constructor, and use its arguments as the fields of the type let ctorArgs, ctorInfoOpt = match ptd.GetConstructors(BindingFlags.Public ||| BindingFlags.NonPublic) |> Seq.toList with | [] -> [], None | [ :? ProvidedConstructor as pcinfo ] -> [ for p in pcinfo.GetParameters() -> p ], Some pcinfo | _ -> failwith "internal error: at most one constructor allowed" let ctorArgsAsFields = [ for ctorArg in ctorArgs -> tb.DefineField(ctorArg.Name, convType ctorArg.ParameterType, FieldAttributes.Private) ] // Emit the constructor (if any) match ctorInfoOpt with | None -> () | Some pcinfo -> assert ctorMap.ContainsKey pcinfo let cb = ctorMap.[pcinfo] let ilg = cb.GetILGenerator() ilg.Emit(OpCodes.Ldarg_0) let minfo = typeof.GetConstructor [| |] ilg.Emit(OpCodes.Call,minfo) for ctorArgsAsFieldIdx,ctorArgsAsField in List.mapi (fun i x -> (i,x)) ctorArgsAsFields do ilg.Emit(OpCodes.Ldarg_0) ilg.Emit(OpCodes.Ldarg, ctorArgsAsFieldIdx+1) ilg.Emit(OpCodes.Stfld, ctorArgsAsField) ilg.Emit(OpCodes.Ret) // Emit the methods let emitMethod (minfo:MethodInfo) = match minfo with | :? ProvidedMethod as pminfo -> let mb = methMap.[pminfo] let ilg = mb.GetILGenerator() let pop () = ilg.Emit(OpCodes.Pop) let parameterVars = [| if not pminfo.IsStatic then yield Quotations.Var("this", pminfo.DeclaringType) for p in pminfo.GetParameters() do yield Quotations.Var(p.Name, p.ParameterType) |] let parameters = [| for v in parameterVars -> Quotations.Expr.Var v |] let linqCode = pminfo.InvokeCodeInternal parameters let locals = Dictionary() //printfn "Emitting linqCode for %s::%s, code = %s" pminfo.DeclaringType.FullName pminfo.Name (try linqCode.ToString() with _ -> "") /// emits given expression to corresponding IL /// callerDontNeedResult - if true then caller will not use result of this expression so it needs to be discarded let rec emit (callerDontNeedResult : bool) (expr: Quotations.Expr) = match expr with | Quotations.Patterns.Var v -> if callerDontNeedResult then () else let methIdx = parameterVars |> Array.tryFindIndex (fun p -> p = v) match methIdx with | Some idx -> ilg.Emit(OpCodes.Ldarg, idx) | None -> let ctorArgFieldOpt = ctorArgsAsFields |> List.tryFind (fun f -> f.Name = v.Name) match ctorArgFieldOpt with | Some ctorArgField -> ilg.Emit(OpCodes.Ldarg_0) ilg.Emit(OpCodes.Ldfld, ctorArgField) | None -> match locals.TryGetValue v with | true, localBuilder -> ilg.Emit(OpCodes.Ldloc, localBuilder.LocalIndex) | false, _ -> failwith "unknown parameter/field" | Quotations.Patterns.Coerce (arg,ty) -> if callerDontNeedResult then () else emit false arg ilg.Emit(OpCodes.Castclass , convType ty) | Quotations.Patterns.Call (objOpt,meth,args) -> match objOpt with None -> () | Some e -> emit false e for pe in args do emit false pe let meth = match meth with :? ProvidedMethod as pm when methMap.ContainsKey pm -> methMap.[pm] :> MethodInfo | m -> m ilg.Emit((if meth.IsAbstract || meth.IsVirtual then OpCodes.Callvirt else OpCodes.Call), meth) let returnTypeIsVoid = meth.ReturnType = typeof match returnTypeIsVoid, callerDontNeedResult with | false, true -> // method produced something, but we don't need it pop() | true, false when expr.Type = typeof -> // if we need result and method produce void and result should be unit - push null as unit value on stack ilg.Emit(OpCodes.Ldnull) | _ -> () | Quotations.Patterns.NewObject (ctor,args) -> for pe in args do emit false pe let meth = match ctor with :? ProvidedConstructor as pc when ctorMap.ContainsKey pc -> ctorMap.[pc] :> ConstructorInfo | c -> c ilg.Emit(OpCodes.Newobj, meth) if callerDontNeedResult then pop() | Quotations.Patterns.Value (obj, _ty) -> let rec emitC (v:obj) = match v with | :? string as x -> ilg.Emit(OpCodes.Ldstr, x) | :? int8 as x -> ilg.Emit(OpCodes.Ldc_I4, int32 x) | :? uint8 as x -> ilg.Emit(OpCodes.Ldc_I4, int32 (int8 x)) | :? int16 as x -> ilg.Emit(OpCodes.Ldc_I4, int32 x) | :? uint16 as x -> ilg.Emit(OpCodes.Ldc_I4, int32 (int16 x)) | :? int32 as x -> ilg.Emit(OpCodes.Ldc_I4, x) | :? uint32 as x -> ilg.Emit(OpCodes.Ldc_I4, int32 x) | :? int64 as x -> ilg.Emit(OpCodes.Ldc_I8, x) | :? uint64 as x -> ilg.Emit(OpCodes.Ldc_I8, int64 x) | :? char as x -> ilg.Emit(OpCodes.Ldc_I4, int32 x) | :? bool as x -> ilg.Emit(OpCodes.Ldc_I4, if x then 1 else 0) | :? System.Enum as x when x.GetType().GetEnumUnderlyingType() = typeof -> ilg.Emit(OpCodes.Ldc_I4, unbox v) | null -> ilg.Emit(OpCodes.Ldnull) | _ -> failwithf "unknown constant '%A' in generated method" v if callerDontNeedResult then () else emitC obj | Quotations.Patterns.Let(v,e,b) -> let lb = ilg.DeclareLocal v.Type locals.Add (v, lb) emit false e ilg.Emit(OpCodes.Stloc, lb.LocalIndex) emit callerDontNeedResult b | Quotations.Patterns.NewArray(ty,es) -> let lb = ilg.DeclareLocal (ty.MakeArrayType()) ilg.Emit(OpCodes.Ldc_I4, es.Length) ilg.Emit(OpCodes.Newarr, ty) ilg.Emit(OpCodes.Stloc, lb.LocalIndex) es |> List.iteri (fun i e -> ilg.Emit(OpCodes.Ldloc, lb.LocalIndex) ilg.Emit(OpCodes.Ldc_I4, i) emit false e ilg.Emit(OpCodes.Stelem, ty)) ilg.Emit(OpCodes.Ldloc, lb.LocalIndex) | Quotations.Patterns.Sequential(e1, e2) -> emit true e1 emit callerDontNeedResult e2 | Quotations.Patterns.TypeTest(e1, ty) -> emit false e1 ilg.Emit(OpCodes.Isinst, ty) | Quotations.Patterns.IfThenElse(cond, ifTrue, ifFalse) -> let ifFalseLabel = ilg.DefineLabel() let endLabel = ilg.DefineLabel() emit false cond ilg.Emit(OpCodes.Brfalse, ifFalseLabel) emit callerDontNeedResult ifTrue ilg.Emit(OpCodes.Br, endLabel) ilg.MarkLabel(ifFalseLabel) emit callerDontNeedResult ifFalse ilg.Emit(OpCodes.Nop) ilg.MarkLabel(endLabel) | Quotations.Patterns.TryWith(body, _filterVar, _filterBody, catchVar, catchBody) -> let stres, ldres = if callerDontNeedResult then ignore, ignore else let local = ilg.DeclareLocal body.Type let stres = fun () -> ilg.Emit(OpCodes.Stloc, local) let ldres = fun () -> ilg.Emit(OpCodes.Ldloc, local) stres, ldres let exceptionVar = ilg.DeclareLocal(catchVar.Type) locals.Add(catchVar, exceptionVar) let _exnBlock = ilg.BeginExceptionBlock() emit callerDontNeedResult body stres() ilg.BeginCatchBlock(catchVar.Type) ilg.Emit(OpCodes.Stloc, exceptionVar) emit callerDontNeedResult catchBody stres() ilg.EndExceptionBlock() ldres() | Quotations.Patterns.TryFinally(body, catchBody) -> let stres, ldres = if callerDontNeedResult then ignore, ignore else let local = ilg.DeclareLocal body.Type let stres = fun () -> ilg.Emit(OpCodes.Stloc, local) let ldres = fun () -> ilg.Emit(OpCodes.Ldloc, local) stres, ldres let _exnBlock = ilg.BeginExceptionBlock() emit callerDontNeedResult body stres() ilg.BeginFinallyBlock() emit true catchBody ilg.EndExceptionBlock() ldres() | Quotations.Patterns.VarSet(v,e) -> emit false e match locals.TryGetValue v with | true, localBuilder -> ilg.Emit(OpCodes.Stloc, localBuilder.LocalIndex) | false, _ -> failwith "unknown parameter/field in assignment. Only assignments to locals are currently supported by TypeProviderEmit" | n -> failwith (sprintf "unknown expression '%A' in generated method" n) let callerDontNeedResult = (minfo.ReturnType = typeof) emit callerDontNeedResult linqCode ilg.Emit OpCodes.Ret | _ -> () for minfo in ptd.GetMethods(BindingFlags.Public ||| BindingFlags.NonPublic) do emitMethod minfo for (bodyMethInfo,declMethInfo) in ptd.GetMethodOverrides() do let bodyMethBuilder = methMap.[bodyMethInfo] tb.DefineMethodOverride(bodyMethBuilder,declMethInfo) for pinfo in ptd.GetProperties(BindingFlags.Public ||| BindingFlags.NonPublic) do let pb = tb.DefineProperty(pinfo.Name, pinfo.Attributes, convType pinfo.PropertyType, [| for p in pinfo.GetIndexParameters() -> convType p.ParameterType |]) if pinfo.CanRead then let minfo = pinfo.GetGetMethod(true) pb.SetGetMethod (methMap.[minfo :?> ProvidedMethod ]) if pinfo.CanWrite then let minfo = pinfo.GetSetMethod(true) pb.SetSetMethod (methMap.[minfo :?> ProvidedMethod ])) // phase 4 - complete types iterateTypes (fun tb _ptd -> tb.CreateType() |> ignore) assembly.Save (Path.GetFileName assemblyFileName) let assemblyBytes = File.ReadAllBytes assemblyFileName let assemblyLoadedInMemory = System.Reflection.Assembly.Load(assemblyBytes,null,System.Security.SecurityContextSource.CurrentAppDomain) File.Delete assemblyFileName iterateTypes (fun _tb ptd -> ptd.SetAssembly assemblyLoadedInMemory) match reportAssemblyElements with | None -> GlobalProvidedAssemblyElementsTable.theTable.Add(assemblyLoadedInMemory, assemblyBytes) | Some f -> f (assemblyLoadedInMemory, assemblyBytes) assemblyLoadedInMemory theAssembly <- theElementsLazy #if TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS #else module Local = let makeProvidedNamespace (namespaceName:string) (types:ProvidedTypeDefinition list) = let types = [| for ty in types -> ty :> Type |] {new IProvidedNamespace with member __.GetNestedNamespaces() = [| |] member __.NamespaceName = namespaceName member __.GetTypes() = types |> Array.copy member __.ResolveTypeName typeName : System.Type = match types |> Array.tryFind (fun ty -> ty.Name = typeName) with | Some ty -> ty | None -> let typenames = String.concat "," (types |> Array.map (fun t -> t.Name)) failwith (sprintf "Unknown type '%s' in namespace '%s' (contains %s)" typeName namespaceName typenames) } type TypeProviderForNamespaces(namespacesAndTypes : list<(string * list)>) = let otherNamespaces = ResizeArray>() let providedNamespaces = lazy [| for (namespaceName,types) in namespacesAndTypes do yield Local.makeProvidedNamespace namespaceName types for (namespaceName,types) in otherNamespaces do yield Local.makeProvidedNamespace namespaceName types |] let invalidateE = new Event() new (namespaceName:string,types:list) = new TypeProviderForNamespaces([(namespaceName,types)]) new () = new TypeProviderForNamespaces([]) member __.AddNamespace (namespaceName,types:list<_>) = otherNamespaces.Add (namespaceName,types) member self.Invalidate() = invalidateE.Trigger(self,EventArgs()) interface System.IDisposable with member x.Dispose() = () interface ITypeProvider with [] override this.Invalidate = invalidateE.Publish override this.GetNamespaces() = Array.copy providedNamespaces.Value member __.GetInvokerExpression(methodBase, parameters) = match methodBase with | :? ProvidedMethod as m when (match methodBase.DeclaringType with :? ProvidedTypeDefinition as pt -> pt.IsErased | _ -> true) -> m.InvokeCodeInternal parameters | :? ProvidedConstructor as m when (match methodBase.DeclaringType with :? ProvidedTypeDefinition as pt -> pt.IsErased | _ -> true) -> m.InvokeCodeInternal parameters // Otherwise, assume this is a generative assembly and just emit a call to the constructor or method | :? ConstructorInfo as cinfo -> Quotations.Expr.NewObject(cinfo, Array.toList parameters) | :? System.Reflection.MethodInfo as minfo -> if minfo.IsStatic then Quotations.Expr.Call(minfo, Array.toList parameters) else Quotations.Expr.Call(parameters.[0], minfo, Array.toList parameters.[1..]) | _ -> failwith ("TypeProviderForNamespaces.GetInvokerExpression: not a ProvidedMethod/ProvidedConstructor/ConstructorInfo/MethodInfo, name=" + methodBase.Name + " class=" + methodBase.GetType().FullName) override this.GetStaticParameters(ty) = match ty with | :? ProvidedTypeDefinition as t -> if ty.Name = t.Name (* REVIEW: use equality? *) then t.GetStaticParameters() else [| |] | _ -> [| |] override this.ApplyStaticArguments(ty,typePathAfterArguments:string[],objs) = let typePathAfterArguments = typePathAfterArguments.[typePathAfterArguments.Length-1] match ty with | :? ProvidedTypeDefinition as t -> (t.MakeParametricType(typePathAfterArguments,objs) :> Type) | _ -> failwith (sprintf "ApplyStaticArguments: static params for type %s are unexpected" ty.FullName) override x.GetGeneratedAssemblyContents(assembly) = System.Diagnostics.Debug.Assert(GlobalProvidedAssemblyElementsTable.theTable.ContainsKey assembly, "unexpected missing assembly in GlobalProvidedAssemblyElementsTable") GlobalProvidedAssemblyElementsTable.theTable.[assembly] #endif fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/Util.fsi0000775000175000017500000000260312260314606022437 0ustar chrischrisnamespace Microsoft.FSharp.Data.TypeProviders.Utility module internal Util = open System open System.Reflection open System.Collections.Generic type ProcessResult = { exitCode : int; stdout : string[]; stderr : string[] } val executeProcess : workingDirectory: string * exe:string * cmdline:string -> ProcessResult /// Throws on failure val shell : workingDirectory: string * exe:string * cmdline:string * formatError:(string[] -> string[] -> unit) option -> unit val cscExe : unit -> string val dataSvcUtilExe : unit -> string val edmGenExe : unit -> string val svcUtilExe : unit -> string val xsdExe : unit -> string val sdkPath : unit -> string val sdkUtil : string -> string type FileResource = abstract member Path : string inherit IDisposable val TemporaryFile : extension:string -> FileResource val ExistingFile : fileName:string -> FileResource type DirectoryResource = abstract member Path : string inherit IDisposable val TemporaryDirectory : unit -> DirectoryResource val ExistingDirectory : dirName:string -> DirectoryResource type MemoizationTable<'T,'U when 'T : equality> = new : ('T -> 'U) -> MemoizationTable<'T,'U> member Apply : 'T -> 'U member Contents : IDictionary<'T, 'U> val WithExclusiveAccessToFile : string -> (unit -> 'T)-> 'T fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/TypeProviderRuntimeAttribute.fs0000775000175000017500000000054212260314606027235 0ustar chrischrisnamespace Microsoft.FSharp.Data.TypeProviders.DesignTime open Microsoft.FSharp.Core.CompilerServices // This says that this assembly is a runtime DLL for a particular platform, where the design-time // DLL is found alongside this DLL and has the given name. [] do() fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/TypeProviders.fs0000775000175000017500000025040112260314606024171 0ustar chrischris namespace Microsoft.FSharp.Data.TypeProviders.DesignTime #nowarn "57" open System open System.IO open System.Data open System.Data.Sql open System.Data.SqlClient open System.Collections.Generic open System.Reflection open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Quotations open Internal.Utilities.TypeProvider.Emit open Microsoft.FSharp.Data.TypeProviders.Utility // This is how the compiler decides the assembly has a type which extend the compiler. [] do() type internal WatchSpec = private | WatchSpec of string * (string -> bool) static member File path = WatchSpec (path, fun _ -> true) static member FileAndFilter (path, filter) = WatchSpec (path, filter) member x.Path = let (WatchSpec(p, _)) = x in p member x.Filter = let (WatchSpec(_, f)) = x in f /// Generate an assembly or cache an error. Do not retry the assembly generation until invalidation occurs. type internal AssemblyOrPersistentErrorCache<'Key, 'Value when 'Key : equality>() = let cache = new Dictionary<(string list * 'Key), Choice<'Value,exn>>(HashIdentity.Structural) member this.GetAssembly(typePath, moniker : 'Key, typeBuilder) = let res = match cache.TryGetValue ((typePath,moniker)) with | false, _ -> let t = try Choice1Of2(typeBuilder()) with err -> Choice2Of2 err cache.Add((typePath,moniker), t) t | true, t -> t match res with | Choice1Of2 res -> res | Choice2Of2 err -> // We continue to reraise errors until this type provider goes away. raise err type internal NamespacePathComponent = string type internal TypesWithNamespacePaths = (NamespacePathComponent list * Type) list type internal NameGenerator(prefix) = let mutable n = 0 member __.NextName() = n <- n + 1 prefix + string n type internal NoData = | NoData module internal Expr = /// This helper makes working with Expr.Let a little easier and safer let LetVar(varName, expr:Expr, f) = let var = Var(varName, expr.Type) Expr.Let(var, expr, f (Expr.Var var)) let SimpleTryWith(i, body, catch) = let filterVar = Var("_f" + i, typeof) let catchVar = Var("_f" + i, typeof) Expr.TryWith( body, filterVar, Expr.Value 1, catchVar, catch catchVar ) // returns expression that raises given exception. Result expression will have specified with specified result type let Raise = let m = typedefof>.Assembly.GetType("Microsoft.FSharp.Core.Operators").GetMethod("Raise") fun (exnExpr, resultType) -> Expr.Call(m.MakeGenericMethod [|resultType|], [exnExpr]) /// helper type to isolate manipulation with paths type internal PathResolutionUtils(baseResolutionFolder) = /// if pathName is NullOrEmpty = returns pathName /// if pathName is absolute path - returns pathName /// else returns makes absolute path from resolutionFolderParam and pathName, using resolutionFolderParam as base part () member this.MakeAbsolute(resolutionFolderParam, pathName) = if String.IsNullOrWhiteSpace pathName then pathName elif Path.IsPathRooted pathName then System.IO.Path.GetFullPath pathName else assert (Path.IsPathRooted resolutionFolderParam) System.IO.Path.GetFullPath(Path.Combine(resolutionFolderParam, pathName)) // All file names and directory names are resolved relative to the ResolutionFolder. // This function should contain the only two direct uses of config.ResolutionFolder. member this.GetAbsoluteDesignTimeDirectory(resolutionFolderParam) = if String.IsNullOrWhiteSpace resolutionFolderParam then baseResolutionFolder else this.MakeAbsolute (baseResolutionFolder, resolutionFolderParam) /// helper that combines getAbsoluteDesignTimeDirectory and makeAbsolute member this.MakeAbsoluteWithResolutionFolder (resolutionFolderParam, pathName) = let absoluteDesignTimeDirectory = this.GetAbsoluteDesignTimeDirectory(resolutionFolderParam) this.MakeAbsolute(absoluteDesignTimeDirectory,pathName) // returns list that contains zero or one WatchSpec for configuration file // customConfigFile - can be either absolute or relative path. // Relative paths are resolved using 'getAbsoluteDesignTimeDirectory resolutionFolder => makeAbsolute' pair // NOTE: here we can use option instead of list but list provides more convinient syntax on the calling side // yield! r // VS // match r with Some r -> yield r | None -> () member this.GetConfigFileWatchSpec (resolutionFolder : string, customConfigFile : string, connectionStringName : string) = let designTimeDirectory = this.GetAbsoluteDesignTimeDirectory(resolutionFolder) assert (Path.IsPathRooted designTimeDirectory) let customConfigFile = this.MakeAbsolute(designTimeDirectory, customConfigFile) assert (String.IsNullOrEmpty(customConfigFile) || Path.IsPathRooted customConfigFile) if not (String.IsNullOrWhiteSpace connectionStringName) then let searchResult = ConfigFiles.findConfigFile (designTimeDirectory, customConfigFile) match searchResult with | ConfigFiles.StandardFound path | ConfigFiles.CustomFound path -> // configuration file exists // setup watcher and trigger invalidation only if changes in config file modify components of the connection string let currentConnString = ConfigFiles.tryReadConnectionString(path, connectionStringName) let filter = match currentConnString with | ConfigFiles.ConnectionStringReadResult.Ok ccs -> // configuration file contains valid value for connection string with specified name let actualFilter p = let newConnString = ConfigFiles.tryReadConnectionString(p, connectionStringName) match newConnString with | ConfigFiles.ConnectionStringReadResult.Ok ncs -> // connection string exists in both versions of config file // compare components for two versions of connection strings to make final decision ccs.ProviderName <> ncs.ProviderName || ccs.Name <> ncs.Name || ccs.ConnectionString <> ncs.ConnectionString | ConfigFiles.ConnectionStringReadResult.NotFound -> // connection string disappeared in the second version of config file // probably user has erased it - trigger invalidation true | ConfigFiles.ConnectionStringReadResult.Error _ -> // error occured while reading config - exact reason is unknown so do not trigger invalidation false actualFilter | _ -> // configuration file either has incorrect structure or does not contain connection string with specified name let actualFilter p = let newConnString = ConfigFiles.tryReadConnectionString(p, connectionStringName) match newConnString with | ConfigFiles.ConnectionStringReadResult.Ok _-> true // connection string appeared! - trigger invalidation | _ -> // if we got here this means that connection string either not appeared or config file has error // no reason to trigger invalidation false actualFilter [WatchSpec.FileAndFilter(path, filter)] | x -> // if user supplied file name for custom configuration file - use it as mask // otherwise use '*.config' to capture app.config or web.config let configFileMask = match x with | ConfigFiles.CustomNotFound _ -> customConfigFile | _ -> Path.Combine(designTimeDirectory, "*.config") // configuration file doesn't exists // setup watcher and trigger invalidation only if file contains connection string with given name // file can be created by // - copying it from another location - FSW will raise Created\Changed // - creating it from the scratch - FSW will raise Created and Changed on the first save // in both cases we will react on Changed let filter path = let connString = ConfigFiles.tryReadConnectionString(path, connectionStringName) match connString with | ConfigFiles.ConnectionStringReadResult.Ok _ -> true | _ -> false [WatchSpec.FileAndFilter (configFileMask, filter)] else // connection string name not specified - no need to setup FileSystemWatcher for config file [] [] /// The implementation of the built-in type providers. type public DataProviders(config:TypeProviderConfig) = let pathResolutionUtils = PathResolutionUtils(config.ResolutionFolder) let makeAbsolute resolutionFolderParam pathName = pathResolutionUtils.MakeAbsolute(resolutionFolderParam, pathName) // All file names and directory names are resolved relative to the ResolutionFolder. // This function should contain the only two direct uses of config.ResolutionFolder. let getAbsoluteDesignTimeDirectory resolutionFolderParam = pathResolutionUtils.GetAbsoluteDesignTimeDirectory(resolutionFolderParam) /// helper that combines getAbsoluteDesignTimeDirectory and makeAbsolute let makeAbsoluteWithResolutionFolder resolutionFolderParam pathName = pathResolutionUtils.MakeAbsoluteWithResolutionFolder(resolutionFolderParam, pathName) let mkDefaultRuntimeResolutionFolderExpr resolutionFolderParam = if config.IsHostedExecution then Expr.Value (getAbsoluteDesignTimeDirectory resolutionFolderParam) else // the base directory always ends with a "\", remove it <@@ System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\', '/') @@> let mkAbsoluteFileNameExpr (resolutionFolderParam, staticFileName:string) = if System.IO.Path.IsPathRooted staticFileName then Expr.Value staticFileName else let baseDirectoryExpr = mkDefaultRuntimeResolutionFolderExpr resolutionFolderParam Expr.Call(typeof.GetMethod("Combine",[| typeof; typeof |]), [ baseDirectoryExpr; Expr.Value staticFileName ]) let theAssembly = typeof.Assembly let namespaceName = "Microsoft.FSharp.Data.TypeProviders" // checks if target system runtime contains .net 4.5 specific type let isTargetingDotNet45 = lazy config.SystemRuntimeContainsType "System.Collections.Generic.IReadOnlyList`1" // The set of active file watchers let mutable disposals = ResizeArray<(unit -> unit)>() let entityNamespaceGenerator = NameGenerator "SqlEntityConnection" let serviceNamespaceGenerator = NameGenerator "WsdlService" // The invalidation signal. // // We trigger invalidation at most once. The host compiler should throw away the // provider instance once invalidation is signalled. let invalidation = new Event() let mutable invalidationTriggered = 0 let invalidate() = // FSW can run callbacks in multiple threads - actual event should be raised at most once if System.Threading.Interlocked.CompareExchange(&invalidationTriggered, 1, 0) = 0 then invalidation.Trigger(null, EventArgs()) // returns list that contains zero or one WatchSpec for configuration file // customConfigFile - can be either absolute or relative path. // Relative paths are resolved using 'getAbsoluteDesignTimeDirectory resolutionFolder => makeAbsolute' pair // NOTE: here we can use option instead of list but list provides more convinient syntax on the calling side // yield! r // VS // match r with Some r -> yield r | None -> () let getConfigFileWatchSpec (resolutionFolderParam : string, customConfigFile : string, connectionStringName : string) = pathResolutionUtils.GetConfigFileWatchSpec(resolutionFolderParam, customConfigFile, connectionStringName) let watchPath (spec : WatchSpec) = let watcher = let folder = Path.GetDirectoryName spec.Path let file = Path.GetFileName spec.Path new FileSystemWatcher (folder, file) watcher.Changed.Add (fun f -> if spec.Filter(f.FullPath) then invalidate() ) watcher.Deleted.Add(fun _ -> invalidate()) watcher.Renamed.Add(fun _ -> invalidate()) watcher.EnableRaisingEvents <- true disposals.Add(fun () -> watcher.Dispose()) // Re-typecheck when the network becomes available let mutable watchingForNetworkUp = false let watchForNetworkUp () = if not watchingForNetworkUp then watchingForNetworkUp <- true let handler = System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler (fun _ evArgs -> if evArgs.IsAvailable then invalidate()) System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged.AddHandler handler disposals.Add (fun () -> System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged.RemoveHandler handler) /// A utility function to bucket items hierarchically. static let bucketByPath (keyf : NamespacePathComponent -> string) nodef tipf (items: TypesWithNamespacePaths) = // Find all the items with an empty key list and call 'tipf' let tips = [ for (path,v) in items do match path with | [] -> yield tipf v | _ -> () ] // Find all the items with a non-empty key list. Bucket them together by // the first key. For each bucket, call 'nodef' on that head key and the bucket. let nodes = let buckets = new Dictionary(10, HashIdentity.FromFunctions (fun k -> hash (keyf k)) (fun k1 k2 -> keyf k1 = keyf k2)) for (path,v) in items do match path with | [] -> () | pathItem::rest -> buckets.[pathItem] <- (rest,v) :: (if buckets.ContainsKey pathItem then buckets.[pathItem] else []); [ for (KeyValue(key,items)) in buckets -> nodef key items ] tips @ nodes let assemblyBytesTable = Dictionary() // This major routine creates a lookaside table for generated assemblies based on // particular configuration of one of the assembly generators. let containerTypeForGeneratedAssembly (assemblyCache: AssemblyOrPersistentErrorCache<'ConfigInfo, (Assembly * 'ReorgInfo)>, // Gets the file name(s) from the configuration info of a file to watch, if any getFilesToWatch: 'ConfigInfo -> WatchSpec list, // Gets filename that will be used as global synchronization moniker getLockMonikerFileName : 'ConfigInfo -> string option, // Generates the assembly given the configuration info, and a unique name, and the file name generator : string -> 'ConfigInfo -> Util.FileResource * 'ReorgInfo, // The XmlDoc to display for the container type xmlDocHelp : unit -> string, // reorganizes the raw generated types from the assembly into nested types + some new GetDataContext methods reorganize : (string -> 'ReorgInfo -> 'ConfigInfo -> Type list -> Type list * MemberInfo list) option, // Is type relocation being suppressed? suppressTypeRelocation, // Get a unique name to use for generated bits and pieces getUniqueName : 'ConfigInfo -> string) = Util.MemoizationTable(fun (typePath, itemSpec) -> let uniqueName = getUniqueName itemSpec let typeName = List.nth typePath (List.length typePath - 1) let t = ProvidedTypeDefinition(theAssembly, uniqueName, typeName, baseType = Some typeof, IsErased=false) t.AddXmlDocDelayed (fun () -> xmlDocHelp()) if suppressTypeRelocation then t.SuppressRelocation <- true let assembly, reorgInfo = let lockMonikerFileNameOpt = getLockMonikerFileName itemSpec Util.WithExclusiveAccessToFile (defaultArg lockMonikerFileNameOpt null) <| fun () -> try assemblyCache.GetAssembly(typePath, itemSpec, (fun () -> let assemblyFile, reorgInfo = generator uniqueName itemSpec try let assemblyBytes = File.ReadAllBytes assemblyFile.Path let assembly = Assembly.Load(assemblyBytes,null,System.Security.SecurityContextSource.CurrentAppDomain) assemblyBytesTable.Add(assembly, assemblyBytes) assembly, reorgInfo finally (try File.Delete assemblyFile.Path with _ -> ()) )) finally // set up FileSystemWatcher even if exception was raised // this allows to handle case when user edits LocalSchemaFile manually and intermediate result file has invalid structure // we'll capture next change event and try to refresh TP match getFilesToWatch itemSpec with | [] -> watchForNetworkUp() | (watchSpecs: WatchSpec list) -> for watchSpec in watchSpecs do watchPath watchSpec let assemblyTypes : TypesWithNamespacePaths = [ for ty in assembly.GetTypes() do if not ty.IsNested then let namespaceParts = match ty.Namespace with | null -> [] | s -> s.Split '.' |> Array.toList yield namespaceParts, ty ] let rec loop types = types |> bucketByPath (fun namespaceComponent -> namespaceComponent) (fun namespaceComponent typesUnderNamespaceComponent -> let t = ProvidedTypeDefinition(namespaceComponent, baseType = Some typeof, IsErased=false) //match help with None -> () | Some f -> t.AddXmlDocDelayed f t.AddMembers (loop typesUnderNamespaceComponent) (t :> Type)) (fun ty -> ty) let assemblyTypesAsNestedTypes = loop assemblyTypes let assemblyTypesReorganized, otherMembersAfterReorg = match reorganize with | None -> assemblyTypesAsNestedTypes, [] | Some f -> f uniqueName reorgInfo itemSpec assemblyTypesAsNestedTypes t.AddMembers assemblyTypesReorganized t.AddMembers otherMembersAfterReorg let simplifyingAssemblyFile = Util.TemporaryFile "dll" t.ConvertToGenerated (simplifyingAssemblyFile.Path, (fun (assembly2,providedAssemblyRepr2) -> assemblyBytesTable.Add(assembly2, providedAssemblyRepr2))) (t :> Type)) /// Reorganize an SQLMetal, EntityFramework, OData or WSDL set of generated types, hiding the "complex" generated API under "Types" /// and presenting a simpler set of types and properties. let dataSpaceReorg (// This determines is a type is a specific context type isCtxtType, // gets the information for the GetDataContext static methods for each context type getInfoOnContextType, // the name to use for the single GetDataContext static method, if there is only one, normally "GetDataContext" singluarStaticMethodNameOpt, // A string to put into XMLDoc help indicating the kind of the service, e.g. "OData Service" serviceKind, // This predicate determines if we duplicte a method from the full context type to the simple context type keepMethod, // This predicate determines if we duplicte a property from the full context type to the simple context type keepProperty, // This represents an additional set of properties to keep from the base type propertiesToKeep:IDictionary, // This is the set of types to reorganize types: Type list, // This indicates that the context type implements IDisposable and that the simplified context type should do that too contextTypeImplementsIDisposable: bool) = //for c in types do // printfn "c.Name = '%s', c.BaseType.FullName = '%s'" c.Name c.BaseType.FullName let contextTypes = types |> List.filter isCtxtType //let contextBaseTypeShortName = dataContextTypeName.Split '.' |> Seq.last let simpleContextTypesContainer = let t = ProvidedTypeDefinition("SimpleDataContextTypes", baseType = Some typeof, IsErased=false) t.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocContainsTheSimplifiedContextTypes(serviceKind))) t let fullServiceTypesType = let help = (fun () -> let xmlHelpMaker = if propertiesToKeep.ContainsKey "Credentials" then FSData.SR.xmlDocFullServiceTypesAPI else FSData.SR.xmlDocFullServiceTypesAPINoCredentials xmlHelpMaker(serviceKind,(String.concat ", " (contextTypes |> List.map (fun t -> "'"+t.Name+"'"))))) //[ for (namespacePath, ty) in types -> (("ServiceTypes",help) :: namespacePath, ty) ] let t = ProvidedTypeDefinition("ServiceTypes", baseType = Some typeof, IsErased=false) t.AddXmlDocDelayed help t.AddMembers types t.AddMember simpleContextTypesContainer t let simpleMembers = [ for fullContextType in contextTypes do let storedContextType, revealedContextType, staticMethodsForContextType = getInfoOnContextType fullContextType let simpleContextType, simpleContextTypeCtor = let t = ProvidedTypeDefinition(fullContextType.Name, baseType = Some typeof, IsErased=false) t.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocSimplifiedDataContext(serviceKind))) t.HideObjectMethods <- true // Generated provided types made using TypeProviderEmit can have one constructor, which implies the fields of the constructed type instance let ctor = let code (_args: Expr list) = Expr.Value "unused" // For generated types, the constructor code is ignored. let p = ProvidedConstructor([ ProvidedParameter("context", storedContextType) ], InvokeCode=code) p.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocConstructSimplifiedContext(serviceKind))) p if contextTypeImplementsIDisposable then let idisposeMeth = typeof.GetMethod "Dispose" let dispose = let code (_args: Expr list) = Expr.Call(Expr.Coerce( Expr.Var(Var.Global("context", storedContextType)), typeof), idisposeMeth, [ ]) let m = ProvidedMethod("Dispose", [ ], typeof, InvokeCode=code) m.SetMethodAttrs(MethodAttributes.Virtual ||| MethodAttributes.HasSecurity ||| MethodAttributes.Final ||| MethodAttributes.NewSlot ||| MethodAttributes.Private) m.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocDisposeSimplifiedContext())) m t.AddInterfaceImplementation typeof t.DefineMethodOverride(dispose, idisposeMeth) t.AddMembers [ (dispose :> MemberInfo) ] t.AddMember ctor let dataContextProperty = let code (_args: Expr list) = Expr.Coerce(Expr.Var(Var.Global("context", storedContextType)), revealedContextType) let p = ProvidedProperty("DataContext", revealedContextType, GetterCode= code, IsStatic=false) p.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocGetFullContext(serviceKind))) p t.AddMember dataContextProperty t.AddMembers [ for serviceTypeMethod in storedContextType.GetMethods(BindingFlags.DeclaredOnly ||| BindingFlags.Instance ||| BindingFlags.Public) do if keepMethod serviceTypeMethod then let delegatingMethod = let code (args: Quotations.Expr[]) = let obj = Quotations.Expr.Call(args.[0],dataContextProperty.GetGetMethod(),[ ]) let objCoerced = Quotations.Expr.Coerce(obj,storedContextType) Quotations.Expr.Call(objCoerced,serviceTypeMethod,Array.toList args.[1..]) // only instance methods let parameters = [ for p in serviceTypeMethod.GetParameters() -> ProvidedParameter(p.Name, p.ParameterType, isOut=p.IsOut) ] let m = ProvidedMethod(serviceTypeMethod.Name, parameters, serviceTypeMethod.ReturnType , InvokeCodeInternal = code, IsStaticMethod=false) m.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocExecuteProcedure(m.Name))) m yield (delegatingMethod :> MemberInfo) for serviceTypeProperty in storedContextType.GetProperties(BindingFlags.DeclaredOnly ||| BindingFlags.Instance ||| BindingFlags.Public) do if keepProperty serviceTypeProperty then let delegatingProperty = let code (args: Expr list) = let obj = Expr.Call(args.[0],dataContextProperty.GetGetMethod(),[]) let objCoerced = Expr.Coerce(obj,storedContextType) Expr.PropertyGet(objCoerced,serviceTypeProperty,[]) // only instance properties let p = ProvidedProperty(serviceTypeProperty.Name, serviceTypeProperty.PropertyType , GetterCode= code, IsStatic=false) p.AddXmlDocDelayed (fun () -> (FSData.SR.xmlDocGetEntities(p.Name,serviceKind))) p yield (delegatingProperty :> MemberInfo) for serviceTypeProperty in fullContextType.GetProperties(BindingFlags.Instance ||| BindingFlags.Public) do if propertiesToKeep.ContainsKey serviceTypeProperty.Name then let keptProperty = let p = ProvidedProperty(serviceTypeProperty.Name, serviceTypeProperty.PropertyType, IsStatic=false) if serviceTypeProperty.CanRead then p.GetterCode <- (fun (args: Expr list) -> Expr.PropertyGet(Expr.Coerce(Expr.Call(args.[0],dataContextProperty.GetGetMethod(),[]),fullContextType),serviceTypeProperty,[])) if serviceTypeProperty.CanWrite then p.SetterCode <- (fun (args: Expr list) -> Expr.PropertySet(Expr.Coerce(Expr.Call(args.[0],dataContextProperty.GetGetMethod(),[]),fullContextType),serviceTypeProperty,args.[1],[])) p.AddXmlDocDelayed (fun () -> propertiesToKeep.[p.Name]) p yield (keptProperty :> MemberInfo) ] t, ctor // Tuck this under the full service API simpleContextTypesContainer.AddMember simpleContextType let infoOnStaticMethods = match contextTypes, singluarStaticMethodNameOpt with | [ _ ], Some singluarStaticMethodName -> [ for (_, argDescriptions, contextArgCode) in staticMethodsForContextType -> (singluarStaticMethodName, argDescriptions, contextArgCode) ] | _ -> staticMethodsForContextType for (methodName, argDescriptions, contextArgCode) in infoOnStaticMethods do // e.g. NetflixCatalog let getContextMethod = let code args = Expr.NewObject(simpleContextTypeCtor, [ contextArgCode args ]) let p = ProvidedMethod(methodName, [ for (argName,argTy) in argDescriptions -> ProvidedParameter(argName, argTy) ], simpleContextType, InvokeCode= code, IsStaticMethod=true) p.AddXmlDocDelayed (fun () -> FSData.SR.xmlDocGetSimplifiedContext(serviceKind)) p yield (getContextMethod :> MemberInfo) ] [ (fullServiceTypesType :> Type) ], simpleMembers /// Define a provided static parameter with the given name, type, default value and xml documentation let staticParam (nm,ty,dflt: 'T option) = let p = ProvidedStaticParameter(nm, ty, ?parameterDefaultValue=Option.map box dflt ) p /// Define a provided type with the given name, type, default value and xml documentation let typeDefinition (nm, xml) = let p = ProvidedTypeDefinition(theAssembly, namespaceName, nm, baseType = Some typeof, IsErased=false) p.AddXmlDocDelayed xml p let getRuntimeConnectionStringExpr (connectionStringParam, usingConfigFileInfo, configFileNameParam, dataDirectoryParam, resolutionFolderParam) = let connectionStringExpr = // Check if the ConfigFile parameter is being used match usingConfigFileInfo with | Some (connectionStringName, configFileBaseNameOpt) -> // If the ConfigFile parameter is being used, we are getting the connection // string from a configuration file. In this case, we codegen the lookup of the // configuration file at runtime as the default configuration string, just in case the configuration // has changed between compile-time and run-time. let configFileNameExpr = let configFileName = match configFileBaseNameOpt with Some x -> x | None -> configFileNameParam mkAbsoluteFileNameExpr (resolutionFolderParam, configFileName) // PSEUDO: let text = System.IO.File.ReadAllText configFileName let textOfConfigFileExpr = Expr.Call(typeof.GetMethod("ReadAllText",[| typeof |]), [ configFileNameExpr ]) // PSEUDO: let tmpConfigFile = System.IO.Path.GetTempFileName() let tmpFileNameExpr = Expr.Call(typeof.GetMethod("GetTempFileName",[| |]), [ ]) Expr.LetVar("tmpConfigFile",tmpFileNameExpr,fun tmpFileNameExpr -> Expr.Sequential( // PSEUDO: do System.IO.File.WriteAllText(tmpConfigFile.Path,text) Expr.Call(typeof.GetMethod("WriteAllText",[| typeof; typeof |]),[ tmpFileNameExpr; textOfConfigFileExpr ]), Expr.TryFinally( // Read the config file as a System.Configuration.ExeConfigurationFileMap // PSEUDO: let map = ExeConfigurationFileMap() let mapExpr = Expr.NewObject(typeof.GetConstructor([| |]), [ ]) Expr.LetVar("map", mapExpr,fun mapVarExpr -> // Set the file name of the ExeConfigurationFileMap // PSEUDO: do map.ExeConfigFilename <- tmpConfigFile let action2 = Expr.PropertySet(mapVarExpr, typeof.GetProperty "ExeConfigFilename", tmpFileNameExpr) Expr.Sequential(action2, // Open the config file as if it were a .exe.config. This also takes into account machine config on this machine. // PSEUDO: let config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); let configExpr = let meth = typeof.GetMethod("OpenMappedExeConfiguration", [| typeof; typeof |]) Expr.Call(meth, [ mapVarExpr; Expr.Value(System.Configuration.ConfigurationUserLevel.None, meth.GetParameters().[1].ParameterType) ]) Expr.LetVar("config", configExpr, fun configVarExpr -> // PSEUDO: config.ConnectionStrings let connStringsExpr1 = Expr.PropertyGet(configVarExpr, typeof.GetProperty "ConnectionStrings", []) // PSEUDO: config.ConnectionStrings.ConnectionStrings let connStringsExpr2 = Expr.PropertyGet(connStringsExpr1, typeof.GetProperty "ConnectionStrings", []) // PSEUDO: config.ConnectionStrings.ConnectionStrings.[connectionStringName] let connStringExpr1 = Expr.Call(connStringsExpr2, typeof.GetMethod("get_Item", [| typeof |]), [ Expr.Value connectionStringName ]) // PSEUDO: config.ConnectionStrings.ConnectionStrings.[connectionStringName].ConnectionString let connStringExpr2 = Expr.PropertyGet(connStringExpr1, typeof.GetProperty "ConnectionString", []) connStringExpr2))), Expr.Call(typeof.GetMethod("Delete",[| typeof |]),[ tmpFileNameExpr ])))) | None -> // If the ConfigFile parameter is not being used, then just use the value of the connection string parameter Expr.Value connectionStringParam let connectionStringExprAfterReplace = // Get the value of the |DataDirectory| substitution let dataDirectoryExpr = if String.IsNullOrWhiteSpace dataDirectoryParam then //PSEUDO: System.AppDomain.CurrentDomain.GetData("DataDirectory") ?? System.AppDomain.CurrentDomain.BaseDirectory let currentDomainExpr = Expr.PropertyGet(typeof.GetProperty "CurrentDomain",[]) let getDataExprAsObj = Expr.Call(currentDomainExpr,typeof.GetMethod("GetData", [| typeof |]),[ Expr.Value "DataDirectory" ]) let baseDirectoryExpr = mkDefaultRuntimeResolutionFolderExpr resolutionFolderParam let getDataIsNotNullExpr = Expr.TypeTest(getDataExprAsObj,typeof) Expr.IfThenElse(getDataIsNotNullExpr, Expr.Coerce(getDataExprAsObj, typeof), baseDirectoryExpr) else //The value of dataDirectoryParam, relative to the runtime resolution folder mkAbsoluteFileNameExpr (resolutionFolderParam, dataDirectoryParam) Expr.LetVar("dataDirectory", dataDirectoryExpr, fun dataDirectoryVarExpr -> // PSEUDO: connectionString.Replace("|DataDirectory|", dataDirectory) Expr.Call(connectionStringExpr, typeof.GetMethod("Replace",[| typeof; typeof |] ), [ Expr.Value "|DataDirectory|"; dataDirectoryVarExpr ])) connectionStringExprAfterReplace let dbmlFileTypeHelp _ = FSData.SR.dbmlFileTypeHelp() let dbmlFileAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let dbmlFileTypeCache= containerTypeForGeneratedAssembly (dbmlFileAssemblyOrPersistentErrorCache, (fun (fileName, resolutionFolderParam, _, _) -> let absoluteFileName = makeAbsoluteWithResolutionFolder resolutionFolderParam fileName [ WatchSpec.File absoluteFileName ]), // Here, 'Some' indicates that there is a file name to be made absolute and to be watched (fun _ -> None), // no local schema file => no global lock moniker // The function used to generate the assembly (fun _ (fileName, resolutionFolderParam, contextTypeName, serializable) -> let absoluteFileName = makeAbsoluteWithResolutionFolder resolutionFolderParam fileName let dbmlFileContent = File.ReadAllText absoluteFileName let assembly = Dbml.buildType(dbmlFileContent, contextTypeName, serializable) assembly,NoData), dbmlFileTypeHelp, None, // don't suppress relocation of types, it works fine for types generated by SQL metal false, // uniqueName (fun _ -> namespaceName)) let dbmlFileType (typePath, itemSpec) = dbmlFileTypeCache.Apply (typePath, itemSpec) let dbmlStaticParameters = [| staticParam("File", typeof, None) staticParam("ResolutionFolder", typeof, Some "") staticParam("ContextTypeName", typeof, Some "") staticParam("Serializable", typeof, Some false) |] let sqlDataConnectionReorg _ usingConfigFileInfo (connectionString, _connectionStringName, configFileNameParam, dataDirectoryParam, resolutionFolderParam, _localSchemaFile, _, _, _, _, _, _, _, _) types = dataSpaceReorg ((fun ty -> ty.BaseType.FullName = "System.Data.Linq.DataContext"), (fun contextType -> let staticMethods = let methodName = "Get" + contextType.Name [ (methodName, [], (fun _args -> let connectionStringExpr = getRuntimeConnectionStringExpr (connectionString, usingConfigFileInfo, configFileNameParam, dataDirectoryParam, resolutionFolderParam) Expr.NewObject(contextType.GetConstructor [| typeof |], [ connectionStringExpr ]))) (methodName, [("connectionString",typeof)], (fun (args:Expr list) -> Expr.NewObject(contextType.GetConstructor [| typeof |], [ args.[0] ]))) ] contextType, contextType.BaseType, staticMethods), Some "GetDataContext", (FSData.SR.sqlDataConnection()), // only keep the query methods (fun m -> match m.ReturnType.Namespace, m.ReturnType.Name with // for SQL procedures | "System", "Int32" | "System.Data.Linq", ("ISingleResult`1"|"IMultipleResults") -> true // for SQL table-valued functions | "System.Linq", "IQueryable`1" -> true // for SQL scalar-valued functions | "System", ("Nullable`1"|"String") -> true | _ -> false), // only keep the table properties (fun p -> p.PropertyType.Namespace = "System.Data.Linq" && p.PropertyType.Name = "Table`1"), dict [("Connection", (FSData.SR.sqlDataConnectionInfo())); //("Log", "Specifies the destination to write the SQL query or command"); //("CommandTimeout", "Increases the time-out period for queries that would otherwise time out during the default timeout period") ], types, true) let sqlDataConnectionTypeHelp _ = FSData.SR.sqlDataConnectionTypeHelp() let sqlDataConnectionAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let sqlDataConnectionTypeCache = containerTypeForGeneratedAssembly (sqlDataConnectionAssemblyOrPersistentErrorCache, // The function used to compute which resources to watch (fun (_connectionString, connectionStringName, configFileNameParam, _dataDirectory, resolutionFolderParam, localSchemaFile, forceUpdate, _, _, _, _, _, _, _) -> [ // Watch the local schema file for changes and make the filename absolute if not (String.IsNullOrWhiteSpace localSchemaFile) && not forceUpdate then let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile yield WatchSpec.File absoluteLocalSchemaFile // Watch the config file for changes yield! getConfigFileWatchSpec(resolutionFolderParam, configFileNameParam, connectionStringName) ]), (fun (_, _, _, _, resolutionFolderParam, localSchemaFile, _, _, _, _, _, _, _, _) -> Some (makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile)), // The function used to generate the assembly (fun _ (connectionString, connectionStringName, configFileNameParam, dataDirectoryParam, resolutionFolderParam, localSchemaFile, forceUpdate, flagPluralize, flagViews, flagFunctions, flagStoredProcs, flagTimeout, contextTypeName, serializable) -> let absoluteDesignTimeDirectory = getAbsoluteDesignTimeDirectory resolutionFolderParam let absoluteLocalSchemaFile = makeAbsolute absoluteDesignTimeDirectory localSchemaFile let absoluteConfigFileName = makeAbsolute absoluteDesignTimeDirectory configFileNameParam let absoluteDataDirectory = makeAbsolute absoluteDesignTimeDirectory dataDirectoryParam let assembly,info = SqlConnection.buildType (connectionString, connectionStringName, absoluteConfigFileName, absoluteDataDirectory, absoluteLocalSchemaFile, forceUpdate, flagPluralize, flagViews, flagFunctions, flagStoredProcs, flagTimeout, contextTypeName, serializable, absoluteDesignTimeDirectory) assembly,info), sqlDataConnectionTypeHelp, Some sqlDataConnectionReorg, // don't suppress relocation of types, it works fine for types generated by SQL metal false, // unique name (fun _ -> namespaceName)) let sqlDataConnectionStaticParameters = [| staticParam("ConnectionString", typeof, Some "") staticParam("ConnectionStringName", typeof, Some "") staticParam("LocalSchemaFile", typeof, Some "") staticParam("ForceUpdate", typeof, Some true) staticParam("Pluralize", typeof, Some false) staticParam("Views", typeof, Some true ) staticParam("Functions", typeof, Some true ) staticParam("ConfigFile", typeof, Some "") staticParam("DataDirectory", typeof, Some "") staticParam("ResolutionFolder", typeof, Some "") staticParam("StoredProcedures", typeof, Some true ) staticParam("Timeout", typeof, Some 0 ) staticParam("ContextTypeName", typeof, Some "" ) staticParam("Serializable", typeof, Some false) |] let sqlDataConnectionType (typePath, itemSpec) = sqlDataConnectionTypeCache.Apply (typePath, itemSpec) let edmxFileTypeHelp _ = FSData.SR.edmxFileTypeHelp() let edmxFileAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let edmxFileTypeCache = containerTypeForGeneratedAssembly (edmxFileAssemblyOrPersistentErrorCache, // The function used to compute which resources to watch (fun (fileName, resolutionFolderParam) -> let absoluteFileName = makeAbsoluteWithResolutionFolder resolutionFolderParam fileName [ WatchSpec.File absoluteFileName ]), (fun _ -> None), // no local schema file => no global lock moniker // The function used to generate the assembly (fun _ (fileName, resolutionFolderParam) -> let absoluteFileName = makeAbsoluteWithResolutionFolder resolutionFolderParam fileName let assembly = Edmx.buildTypeFromEdmxFile(absoluteFileName, isTargetingDotNet45.Value) assembly,NoData), edmxFileTypeHelp, None, // suppress relocation of types, a workaround for parts of bug 215150 where relocating entity framework types confuses EF true, // unique name (fun (edmxFile, _) -> Path.GetFileNameWithoutExtension edmxFile)) let edmxFileType (typePath, itemName) = edmxFileTypeCache.Apply (typePath, itemName) let edmxFileStaticParameters = [| staticParam("File", typeof, None) staticParam("ResolutionFolder", typeof, Some "") |] // The function that reorganizes the types generated by EDMGEN.EXE, and adds the two GetDataContext methods that // compute the entity connection string from the relevant input pieces of information. let sqlEntityConnectionReorg entityNamespaceName // 'usingConfigFileInfo' is the info propagated from SqlEntityConnection.buildType usingConfigFileInfo // These parameters are those given by the user. (connectionStringParam, _connectionStringName, configFileNameParam, dataDirectoryParam, resolutionFolderParam, _localSchemaFile, provider, _entityContainer, _forceUpdate, _flagPluralize, _flagSuppressForeignKeyProperties) // This is the set of non-nested types generated by EDMGEN.EXE (types: Type list) = // The EdmGen puts the context types in a namespace - undo this. let types = [ for t in types do yield! t.GetNestedTypes() ] let entityConnString = sprintf "metadata=res://*/%s.csdl|res://*/%s.ssdl|res://*/%s.msl;provider=%s;provider connection string=\"Server=SQLEXPRESS\"" entityNamespaceName entityNamespaceName entityNamespaceName provider let invalidConnectionStringMessage = FSData.SR.invalidConnectionString() let nonEquivalentConnectionStringMessage = FSData.SR.nonEquivalentConnectionString() dataSpaceReorg ((fun ty -> ty.BaseType.FullName = "System.Data.Objects.ObjectContext"), (fun contextType -> // Build the expression for the entity connection string given the expression for the provider connection string. let mkRuntimeEntityConnectionStringExpr providerConnectionStringExpr = let contextCtor = contextType.GetConstructor [| typeof |] let entityConnStringBuilderType = let systemDataEntityClient = contextType.BaseType.Assembly systemDataEntityClient.GetType("System.Data.EntityClient.EntityConnectionStringBuilder") let ecsCtor = entityConnStringBuilderType.GetConstructor [| typeof |] let providerConnString = entityConnStringBuilderType.GetProperty "ProviderConnectionString" let connString = entityConnStringBuilderType.GetProperty "ConnectionString" let equivalentTo = entityConnStringBuilderType.GetMethod "EquivalentTo" let dbProviderFactoriesType = let prop = contextType.GetProperty("Connection") let systemData = prop.PropertyType.Assembly systemData.GetType("System.Data.Common.DbProviderFactories") let dbProviderGetFactoryMethod = dbProviderFactoriesType.GetMethod("GetFactory", [| typeof |]) let dbProviderCreateConnStringBuilderMethod = dbProviderGetFactoryMethod.ReturnType.GetMethod("CreateConnectionStringBuilder") let dbConnStringBuilderConnStringProperty = dbProviderCreateConnStringBuilderMethod.ReturnType.GetProperty("ConnectionString") let argExnString, argExnStringExn = let argExnType = typeof let argExnString = argExnType.GetConstructor([|typeof|]) let argExnStringExn = argExnType.GetConstructor([|typeof; typeof|]) argExnString, argExnStringExn Expr.LetVar("provConnStrVar", providerConnectionStringExpr, fun providerConnectionStringE -> Expr.LetVar("newConnStrVar", Expr.NewObject(ecsCtor, [Expr.Value entityConnString]), fun newE -> Expr.Sequential( Expr.SimpleTryWith( "1", Expr.LetVar("dbProviderFactory", Expr.Call(dbProviderGetFactoryMethod, [Expr.Value(provider)]), fun dbProviderFactory -> Expr.LetVar( "connStrBuilder", Expr.Call(dbProviderFactory, dbProviderCreateConnStringBuilderMethod, []), fun connStrBuilder -> Expr.Sequential( Expr.PropertySet(connStrBuilder, dbConnStringBuilderConnStringProperty, providerConnectionStringE), Expr.PropertySet(newE, providerConnString, providerConnectionStringE) ) ) ), fun _ -> Expr.LetVar( "intermediateConnStrVar", Expr.SimpleTryWith( "2", Expr.NewObject(ecsCtor, [providerConnectionStringE]), fun e -> Expr.Raise(Expr.NewObject(argExnStringExn, [Expr.Value invalidConnectionStringMessage; Expr.Var e]), entityConnStringBuilderType)), fun tmpE -> Expr.Sequential( Expr.PropertySet(newE, providerConnString, Expr.PropertyGet(tmpE, providerConnString)), Expr.IfThenElse( Expr.Call(newE, equivalentTo, [tmpE]), Expr.Value((), typeof), Expr.Raise (Expr.NewObject(argExnString, [Expr.Value nonEquivalentConnectionStringMessage]), typeof)))) ), Expr.NewObject(contextCtor, [ Expr.PropertyGet(newE, connString) ])))) let staticMethods = let methodName = "Get" + contextType.Name [ (methodName, [], (fun _args -> // Compute the provider connection string from the configuration file, if necessary let connectionStringExpr = getRuntimeConnectionStringExpr (connectionStringParam, usingConfigFileInfo, configFileNameParam, dataDirectoryParam, resolutionFolderParam) mkRuntimeEntityConnectionStringExpr connectionStringExpr)); (methodName, [("providerConnectionString",typeof)], (fun (args:Expr list) -> // Use the given provider configuration string mkRuntimeEntityConnectionStringExpr args.[0])) ] contextType, contextType.BaseType, staticMethods), Some "GetDataContext", (FSData.SR.sqlEntityConnection()), // don't keep any methods (fun _m -> false), // only keep the query properties (fun p -> p.PropertyType.Namespace = "System.Data.Objects" && p.PropertyType.Name = "ObjectSet`1"), dict [("Connection", (FSData.SR.connectionInfo()))], types, true) //let a = System.Reflection.Assembly.LoadFile @"C:\fsharp\vspro\devdiv\src\tests\fsharp\typecheck\sigs\tmp\Northwnd.ObjectLayer.dll" //let types = a.GetTypes() //types |> Array.map (fun s -> s.BaseType.FullName) let sqlEntityConnectionTypeHelp _ = FSData.SR.sqlEntityConnectionTypeHelp() let sqlEntityConnectionAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let sqlEntityConnectionTypeCache = containerTypeForGeneratedAssembly (sqlEntityConnectionAssemblyOrPersistentErrorCache, // The function used to compute which resources to watch (fun (_connectionString, connectionStringName, configFileNameParam, _dataDirectory, resolutionFolderParam, localSchemaFile, _, _, forceUpdate, _, _) -> [ if not (String.IsNullOrWhiteSpace localSchemaFile) && not forceUpdate then let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile yield WatchSpec.File absoluteLocalSchemaFile yield! getConfigFileWatchSpec(resolutionFolderParam, configFileNameParam, connectionStringName) ] ), (fun (_, _, _, _, resolutionFolderParam, localSchemaFile, _, _, _, _, _) -> Some (makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile)), // The function used to generate the assembly (fun entityNamespaceName (connectionString, connectionStringName, configFileNameParam, dataDirectoryParam, resolutionFolderParam, localSchemaFile, provider, entityContainer, forceUpdate, flagPluralize, flagSuppressForeignKeyProperties) -> let absoluteDesignTimeDirectory = getAbsoluteDesignTimeDirectory resolutionFolderParam let absoluteLocalSchemaFile = makeAbsolute absoluteDesignTimeDirectory localSchemaFile let absoluteConfigFileName = makeAbsolute absoluteDesignTimeDirectory configFileNameParam let absoluteDataDirectory = makeAbsolute absoluteDesignTimeDirectory dataDirectoryParam SqlEntityConnection.buildType(entityNamespaceName, connectionString, connectionStringName, absoluteConfigFileName, absoluteDataDirectory, absoluteLocalSchemaFile, provider, entityContainer, forceUpdate, flagPluralize, flagSuppressForeignKeyProperties, absoluteDesignTimeDirectory, isTargetingDotNet45.Value)), sqlEntityConnectionTypeHelp, Some sqlEntityConnectionReorg, // suppress relocation of types, a workaround for parts of bug 215150 where relocating entity framework types confuses EF true, // unique name (fun _ -> entityNamespaceGenerator.NextName())) let sqlEntityConnectionType (typePath, itemName) = sqlEntityConnectionTypeCache.Apply (typePath, itemName) let sqlEntityConnectionStaticParameters = [| staticParam("ConnectionString", typeof, Some "") staticParam("ConnectionStringName", typeof, Some "") staticParam("LocalSchemaFile", typeof, Some "") staticParam("Provider", typeof, Some "System.Data.SqlClient") staticParam("EntityContainer", typeof, Some "") staticParam("ConfigFile", typeof, Some "") staticParam("DataDirectory", typeof, Some "") staticParam("ResolutionFolder", typeof, Some "") staticParam("ForceUpdate", typeof, Some true) staticParam("Pluralize", typeof, Some false) staticParam("SuppressForeignKeyProperties", typeof, Some false) |] let odataServiceTypeHelp _ = FSData.SR.odataServiceTypeHelp() let odataServiceAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let odataReorg _ NoData (serviceUri, _, _, _, _) (types: Type list) = dataSpaceReorg ((fun ty -> ty.BaseType.FullName = "System.Data.Services.Client.DataServiceContext"), (fun contextType -> let staticMethods = let methodName = "Get" + contextType.Name [ (methodName, [], (fun _args -> let uri = Expr.NewObject(typeof.GetConstructor [| typeof |], [ Expr.Value serviceUri ]) Expr.NewObject(contextType.GetConstructor [| typeof |], [ uri ]) )); (methodName, [("uri",typeof)], (fun (args:Expr list) -> Expr.NewObject(contextType.GetConstructor [| typeof |], [ args.[0] ]) )) ] contextType, contextType.BaseType, staticMethods ), Some "GetDataContext", "OData Service", // don't keep any methods (fun _m -> false), // only keep the data source properties (fun p -> p.PropertyType.Namespace = "System.Data.Services.Client" && p.PropertyType.Name = "DataServiceQuery`1"), dict [("Credentials", (FSData.SR.odataServiceCredentialsInfo()))], types, false (* System.Data.Services.Client.DataServiceContext does not implement IDisposable - the joy of REST! *) ) let odataServiceTypeCache = containerTypeForGeneratedAssembly (odataServiceAssemblyOrPersistentErrorCache, // The function used to compute which resources to watch (fun (_serviceUri, localSchemaFile, forceUpdate, resolutionFolderParam, _) -> [ // Watch the local schema file for changes and make the filename absolute if not (String.IsNullOrWhiteSpace localSchemaFile) && not forceUpdate then let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile yield WatchSpec.File absoluteLocalSchemaFile ]), (fun (_, localSchemaFile, _, resolutionFolderParam, _) -> Some (makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile)), // The function used to generate the assembly (fun _ (serviceUri, localSchemaFile, forceUpdate, resolutionFolderParam, dataServiceCollection) -> let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile let assembly = DataSvcUtil.buildTypeFromMetadataUri (serviceUri, absoluteLocalSchemaFile, forceUpdate, dataServiceCollection) assembly,NoData), odataServiceTypeHelp, Some odataReorg, // don't suppress relocation of types, it works fine for types generated by SQL metal false, // unique name (fun _ -> namespaceName)) let odataServiceStaticParameters = [| staticParam("ServiceUri", typeof, None) staticParam("LocalSchemaFile", typeof, Some "") staticParam("ForceUpdate", typeof, Some true) staticParam("ResolutionFolder", typeof, Some "") staticParam("DataServiceCollection", typeof, Some false) |] let odataServiceType (typePath, itemName) = odataServiceTypeCache.Apply (typePath, itemName) #if WSDL let wsdlReorg namespaceName endpointNames (serviceUri:string, _localSchemaDir, _, _, _, _, _, _, _) (types: Type list) = /// Make the expression that creates the instance of the underlying full context type stored in the simplified context object. /// This function is used when no endpoint name is available (because either none were in the config file, or there was trouble getting /// or parsing the context file) let mkStoredContextWhenNoConfig (contextType:Type) uriStringExpr = // call Service(binding:Binding, endpointAddress:EndpointAddress) // i.e. new ServiceTypeName(new System.ServiceModel.BasicHttpBinding(transportMode),System.ServiceModel.EndpointAddress(serviceUri)) let ctor = contextType.GetConstructors() |> Array.find (fun c -> let ps = c.GetParameters() in ps.Length = 2 && ps.[0].ParameterType.Name = "Binding" && ps.[1].ParameterType.Name = "EndpointAddress" ) let bindingType = ctor.GetParameters().[0].ParameterType let endpointType = ctor.GetParameters().[1].ParameterType let endpointTypeCtor = endpointType.GetConstructor [| typeof |] let basicHttpBinding = bindingType.Assembly.GetType("System.ServiceModel.BasicHttpBinding") let basicHttpSecurityMode = bindingType.Assembly.GetType("System.ServiceModel.BasicHttpSecurityMode") let basicHttpBindingCtor = basicHttpBinding.GetConstructor [| basicHttpSecurityMode |] let transportMode = if (System.Uri(serviceUri).Scheme = "https") then System.ServiceModel.BasicHttpSecurityMode.Transport else System.ServiceModel.BasicHttpSecurityMode.None let arg1 = Expr.NewObject(basicHttpBindingCtor, [ Expr.Value(transportMode, basicHttpBindingCtor.GetParameters().[1].ParameterType ) ]) let arg2 = Expr.NewObject(endpointTypeCtor, [ uriStringExpr ]) let code = Expr.NewObject(ctor, [ arg1;arg2 ]) code /// Make the expression that creates the instance of the underlying full context type stored in the simplified context object. /// This function is used when an endpoint name is available from the config file. endPointExprOpt optionally indicates /// a user parameter passed in to represent an explicit endpoint. let mkStoredContextWhenHaveConfig (storedContextType:Type) serviceInterfaceType (epName:string) endPointExprOpt = // First get the config from the resource stored in the assembly. // PSEUDO: let assembly = typeof.Assembly let assemblyExpr = let typeOfExpr = Expr.Call(typedefof>.Assembly.GetType("Microsoft.FSharp.Core.Operators").GetMethod("TypeOf").MakeGenericMethod [| storedContextType |], [ ]) Expr.PropertyGet(typeOfExpr, typeOfExpr.Type.GetProperty "Assembly", []) //PSEUDO: typeof.GetMethod("GetExecutingAssembly", [| |]), []) Expr.LetVar("assembly",assemblyExpr,fun assemblyVarExpr -> // Crack the config as a manifest resource. // PSEUDO: let stream = assembly.GetManifestResourceStream("WsdlService1.config") let streamExpr = Expr.Call(assemblyVarExpr, assemblyVarExpr.Type.GetMethod("GetManifestResourceStream", [| typeof |]), [ Expr.Value (namespaceName+".config") ]) Expr.LetVar("stream",streamExpr,fun streamVarExpr -> // Create a StreamReader for the config. // PSEUDO: let reader = new System.IO.StreamReader(stream) let readerExpr = Expr.NewObject(typeof.GetConstructor([| streamVarExpr.Type |]), [ streamVarExpr ]) Expr.LetVar("reader",readerExpr,fun readerVarExpr -> // Read the text of the config. // PSEUDO: let text = reader.ReadToEnd() let textExpr = Expr.Call(readerVarExpr, typeof.GetMethod("ReadToEnd", [| |]), [ ]) Expr.LetVar("text",textExpr,fun textVarExpr -> // Create a temporary config file. // PSEUDO: let tmpConfigFile = System.IO.Path.GetTempFileName() let tmpConfigFileExpr = Expr.Call(typeof.GetMethod("GetTempFileName", [| |]), [ ]) Expr.LetVar("tmpConfigFile",tmpConfigFileExpr,fun tmpConfigFileVarExpr -> // Write the text to the temporary config file. // PSEUDO: do System.IO.File.WriteAllText(tmpConfigFile,text) let action1 = Expr.Call(typeof.GetMethod("WriteAllText", [| typeof; typeof|]), [ tmpConfigFileVarExpr; textVarExpr ]) Expr.Sequential(action1, // Read the config file as a System.Configuration.ExeConfigurationFileMap // PSEUDO: let map = ExeConfigurationFileMap() let mapExpr = Expr.NewObject(typeof.GetConstructor([| |]), [ ]) Expr.LetVar("map",mapExpr,fun mapVarExpr -> // Set the file name of the ExeConfigurationFileMap // PSEUDO: do map.ExeConfigFilename <- tmpConfigFile let action2 = Expr.PropertySet(mapVarExpr, typeof.GetProperty "ExeConfigFilename", tmpConfigFileVarExpr) Expr.Sequential(action2, // Open the config file as if it were a .exe.config. This also takes into account machine config on this machine. // PSEUDO: let config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); let configExpr = let meth = typeof.GetMethod("OpenMappedExeConfiguration", [| typeof; typeof |]) Expr.Call(meth, [ mapVarExpr; Expr.Value(System.Configuration.ConfigurationUserLevel.None, meth.GetParameters().[1].ParameterType) ]) Expr.LetVar("config", configExpr, fun configVarExpr -> // Create a ConfigurationChannelFactory from the config. This can be used to create channels and endpoints. // PSEUDO: let factory = new ConfigurationChannelFactory ("CustomBinding_IGeocodeService", config, null); let factoryExpr = let ctor = typedefof>.MakeGenericType([| serviceInterfaceType |]).GetConstructors().[0] let epExpr = match endPointExprOpt with None -> Expr.Value(null, ctor.GetParameters().[2].ParameterType) | Some e -> e Expr.NewObject(ctor, [ Expr.Value epName; configVarExpr; epExpr ]) Expr.LetVar("factory", factoryExpr, fun factoryVarExpr -> // Get the binding and address from the endpoint of the factory. let resultExpr = let ctor = storedContextType.GetConstructor [| typeof; typeof |] let endpointExpr = Expr.PropertyGet(factoryVarExpr, factoryVarExpr.Type.GetProperty "Endpoint",[]) let bindingExpr = Expr.PropertyGet(endpointExpr, endpointExpr.Type.GetProperty "Binding", []) let addressExpr = Expr.PropertyGet(endpointExpr, endpointExpr.Type.GetProperty "Address", []) Expr.NewObject(ctor, [ bindingExpr; addressExpr ]) Expr.LetVar("result", resultExpr, fun resultVarExpr -> // PSEUDO: System.IO.File.Delete(tmpConfigFile) let action3 = Expr.Call(typeof.GetMethod("Delete", [| typeof |]), [ tmpConfigFileVarExpr ]) Expr.Sequential(action3, resultVarExpr) ))))))))))) dataSpaceReorg ((fun ty -> ty.BaseType <> null && ty.BaseType.Namespace = "System.ServiceModel" && ty.BaseType.Name = "ClientBase`1"), (fun contextType -> match endpointNames with | [] -> /// This indicates we either didn't get the config from the web service, or we found no entrypoint names in it /// Resort to providing an HTTP endpoint let staticMethods = let methodName = "GetHttp" + contextType.Name [ (methodName, [], (fun _args -> mkStoredContextWhenNoConfig contextType (Expr.Value serviceUri))); (methodName, [("uri", typeof)], (fun (args:Expr list) -> mkStoredContextWhenNoConfig contextType args.[0])) ] contextType, contextType.BaseType, staticMethods | _ -> let revealedContextType = contextType.BaseType let storedContextType = contextType let serviceInterfaceType = contextType.BaseType.GetGenericArguments().[0] let staticMethods = [ for epName in endpointNames do let methodName = "Get" + epName yield (methodName, [], (fun _args -> mkStoredContextWhenHaveConfig storedContextType serviceInterfaceType epName None)); yield (methodName, [("remoteAddress", typeof)], (fun (args:Expr list) -> mkStoredContextWhenHaveConfig storedContextType serviceInterfaceType epName (Some args.[0]))) ] storedContextType, revealedContextType, staticMethods), None, "WSDL Service", // keep all methods except those for properties (fun m -> not (m.Name.StartsWith "get_") && not (m.Name.StartsWith "set_")), // don't keep any properties (fun _p -> false), dict [ ], types, true) let wsdlServiceTypeHelp _ = FSData.SR.wsdlServiceTypeHelp() let wsdlServiceAssemblyOrPersistentErrorCache = new AssemblyOrPersistentErrorCache<_,_>() let wsdlServiceTypeCache = containerTypeForGeneratedAssembly (wsdlServiceAssemblyOrPersistentErrorCache, // The function used to compute which resources to watch (fun (_serviceUri, localSchemaFile, forceUpdate, resolutionFolderParam, _, _, _, _, _) -> [ // Watch the local schema file for changes and make the filename absolute if not (String.IsNullOrWhiteSpace localSchemaFile) && not forceUpdate then let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile yield WatchSpec.File absoluteLocalSchemaFile ]), (fun (_, localSchemaFile, _, resolutionFolderParam, _, _, _, _, _) -> Some (makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile)), // The function used to generate the assembly (fun uniqueName (serviceUri, localSchemaFile, forceUpdate, resolutionFolderParam, messageContract, enableDataBinding, serializable, async, collectionType) -> let absoluteLocalSchemaFile = makeAbsoluteWithResolutionFolder resolutionFolderParam localSchemaFile let assembly, endPointNames = SvcUtil.buildTypeFromWsdlUri (uniqueName, serviceUri, absoluteLocalSchemaFile, forceUpdate, messageContract, enableDataBinding, serializable, async, collectionType) (assembly, endPointNames)), wsdlServiceTypeHelp, Some wsdlReorg, // don't suppress relocation of types, it works fine for types generated by SQL metal false, // unique name (fun _ -> serviceNamespaceGenerator.NextName())) let wsdlServiceStaticParameters = [| staticParam("ServiceUri", typeof, None) staticParam("LocalSchemaFile", typeof, Some "") staticParam("ForceUpdate", typeof, Some true) staticParam("ResolutionFolder", typeof, Some "") staticParam("MessageContract", typeof, Some false) staticParam("EnableDataBinding", typeof, Some false) staticParam("Serializable", typeof, Some false) staticParam("Async", typeof, Some false) staticParam("CollectionType", typeof, Some "") |] let wsdlServiceType (typePath, itemName) = wsdlServiceTypeCache.Apply (typePath, itemName) let wsdlServiceTypeUninstantiated = typeDefinition("WsdlService", wsdlServiceTypeHelp) #endif let odataServiceTypeUninstantiated = typeDefinition("ODataService", odataServiceTypeHelp) let dbmlFileTypeUninstantiated = typeDefinition("DbmlFile", dbmlFileTypeHelp) let edmxFileTypeUninstantiated = typeDefinition("EdmxFile", edmxFileTypeHelp) let sqlEntityConnectionTypeUninstantiated = typeDefinition("SqlEntityConnection", sqlEntityConnectionTypeHelp) let sqlDataConnectionTypeUninstantiated = typeDefinition("SqlDataConnection", sqlDataConnectionTypeHelp) interface IDisposable with member this.Dispose() = let disposers = disposals |> Seq.toList disposals.Clear() for disposef in disposers do try disposef() with _ -> () interface IProvidedNamespace with member this.GetNestedNamespaces() = [| |] member this.NamespaceName = namespaceName member this.GetTypes() = [| sqlDataConnectionTypeUninstantiated edmxFileTypeUninstantiated sqlEntityConnectionTypeUninstantiated dbmlFileTypeUninstantiated odataServiceTypeUninstantiated #if WSDL wsdlServiceTypeUninstantiated #endif |] member this.ResolveTypeName typeName = match typeName with | "EdmxFile" -> edmxFileTypeUninstantiated :> Type | "SqlDataConnection" -> sqlDataConnectionTypeUninstantiated :> Type | "SqlEntityConnection" -> sqlEntityConnectionTypeUninstantiated :> Type | "DbmlFile" -> dbmlFileTypeUninstantiated :> Type | "ODataService" -> odataServiceTypeUninstantiated :> Type #if WSDL | "WsdlService" -> wsdlServiceTypeUninstantiated :> Type #endif | _ -> null interface ITypeProvider with member this.GetNamespaces() = [| this |] member this.GetStaticParameters(typeWithoutArguments) = let parameters = match typeWithoutArguments.Name with | "ODataService" -> odataServiceStaticParameters #if WSDL | "WsdlService" -> wsdlServiceStaticParameters #endif | "SqlDataConnection" -> sqlDataConnectionStaticParameters | "SqlEntityConnection" -> sqlEntityConnectionStaticParameters | "DbmlFile" -> dbmlStaticParameters | "EdmxFile" -> edmxFileStaticParameters | _ -> [| |] [| for p in parameters -> p :> System.Reflection.ParameterInfo |] member this.ApplyStaticArguments(typeWithoutArguments, typePathWithArguments, staticArguments) = let oneNamedParam (paramList:ProvidedStaticParameter[], name) : 'T = match paramList |> Array.tryFindIndex (fun p -> p.Name = name) with | Some i when (i < staticArguments.Length && staticArguments.[i] :? 'T) -> unbox<'T>(staticArguments.[i]) | _ -> failwith (FSData.SR.staticParameterNotFoundForType(name,typeWithoutArguments.Name)) let typePath = Array.toList typePathWithArguments match typeWithoutArguments.Name with | "EdmxFile" -> edmxFileType (typePath, ((oneNamedParam (edmxFileStaticParameters, "File") : string), (oneNamedParam (edmxFileStaticParameters, "ResolutionFolder") : string))) | "SqlEntityConnection" -> sqlEntityConnectionType (typePath, ((oneNamedParam (sqlEntityConnectionStaticParameters, "ConnectionString") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "ConnectionStringName") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "ConfigFile") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "DataDirectory") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "ResolutionFolder") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "LocalSchemaFile") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "Provider") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "EntityContainer") : string), (oneNamedParam (sqlEntityConnectionStaticParameters, "ForceUpdate") : bool), (oneNamedParam (sqlEntityConnectionStaticParameters, "Pluralize") : bool), (oneNamedParam (sqlEntityConnectionStaticParameters, "SuppressForeignKeyProperties") : bool))) | "SqlDataConnection" -> sqlDataConnectionType (typePath, ((oneNamedParam (sqlDataConnectionStaticParameters, "ConnectionString") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "ConnectionStringName") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "ConfigFile") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "DataDirectory") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "ResolutionFolder") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "LocalSchemaFile") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "ForceUpdate") : bool), (oneNamedParam (sqlDataConnectionStaticParameters, "Pluralize") : bool), (oneNamedParam (sqlDataConnectionStaticParameters, "Views") : bool), (oneNamedParam (sqlDataConnectionStaticParameters, "Functions") : bool), (oneNamedParam (sqlDataConnectionStaticParameters, "StoredProcedures") : bool), (oneNamedParam (sqlDataConnectionStaticParameters, "Timeout") : int), (oneNamedParam (sqlDataConnectionStaticParameters, "ContextTypeName") : string), (oneNamedParam (sqlDataConnectionStaticParameters, "Serializable") : bool))) | "DbmlFile" -> dbmlFileType (typePath, ((oneNamedParam (dbmlStaticParameters, "File") : string), (oneNamedParam (dbmlStaticParameters, "ResolutionFolder") : string), (oneNamedParam (dbmlStaticParameters, "ContextTypeName") : string), (oneNamedParam (dbmlStaticParameters, "Serializable") : bool))) #if WSDL | "WsdlService" -> wsdlServiceType (typePath, ((oneNamedParam (wsdlServiceStaticParameters, "ServiceUri") : string), (oneNamedParam (wsdlServiceStaticParameters, "LocalSchemaFile") : string), (oneNamedParam (wsdlServiceStaticParameters, "ForceUpdate") : bool), (oneNamedParam (wsdlServiceStaticParameters, "ResolutionFolder") : string), (oneNamedParam (wsdlServiceStaticParameters, "MessageContract") : bool), (oneNamedParam (wsdlServiceStaticParameters, "EnableDataBinding") : bool), (oneNamedParam (wsdlServiceStaticParameters, "Serializable") : bool), (oneNamedParam (wsdlServiceStaticParameters, "Async") : bool), (oneNamedParam (wsdlServiceStaticParameters, "CollectionType") : string))) #endif | "ODataService" -> odataServiceType (typePath, ((oneNamedParam (odataServiceStaticParameters, "ServiceUri") : string), (oneNamedParam (odataServiceStaticParameters, "LocalSchemaFile") : string), (oneNamedParam (odataServiceStaticParameters, "ForceUpdate") : bool), (oneNamedParam (odataServiceStaticParameters, "ResolutionFolder") : string), (oneNamedParam (odataServiceStaticParameters, "DataServiceCollection") : bool))) | _ -> null member __.GetInvokerExpression(mbase, parameters) = match mbase with | :? ProvidedMethod as m when (match mbase.DeclaringType with :? ProvidedTypeDefinition as pt -> pt.IsErased | _ -> true) -> m.InvokeCodeInternal parameters | :? ProvidedConstructor as m when (match mbase.DeclaringType with :? ProvidedTypeDefinition as pt -> pt.IsErased | _ -> true) -> m.InvokeCodeInternal parameters // These are the standard for generated types | :? ConstructorInfo as cinfo -> Quotations.Expr.NewObject(cinfo, Array.toList parameters) | :? System.Reflection.MethodInfo as minfo -> if minfo.IsStatic then Quotations.Expr.Call(minfo, Array.toList parameters) else Quotations.Expr.Call(parameters.[0], minfo, Array.toList parameters.[1..]) | _ -> System.Diagnostics.Debug.Assert false failwith (FSData.SR.unexpectedMethodBase()) [] member x.Invalidate = invalidation.Publish member x.GetGeneratedAssemblyContents(assembly) = System.Diagnostics.Debug.Assert(assemblyBytesTable.ContainsKey assembly, "unexpected missing assembly in assemblyBytesTable") assemblyBytesTable.[assembly] fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders/TypeProvidersImpl.fs0000775000175000017500000013507412260314606025023 0ustar chrischrisnamespace Microsoft.FSharp.Data.TypeProviders.DesignTime open System open System.IO open System.Reflection open System.Collections.Generic open System.Linq open System.Xml.Linq open System.Net open System.Configuration open Microsoft.FSharp.Data.TypeProviders.Utility [] module internal Utilities = let validateSchemaFileExtension localSchemaFile ext = // treat extensions that differ only in case as equal if not (Path.GetExtension(localSchemaFile).Equals("."+ext, StringComparison.OrdinalIgnoreCase)) then failwith (FSData.SR.errorInvalidExtensionSchema(Path.GetFileName(localSchemaFile),ext)) /// Use a local schema file if the 'localSchemaFile' parameter is present (IsNullOrWhiteSpace). Otherwise, /// use a temporary file to hold the metadata description of the service. Always force the update /// of the file if 'forceUpdate' is true and the downloaded contents have changed. let tryUseLocalSchemaFile (localSchemaFile, forceUpdate, ext) loader = let useTempFile = String.IsNullOrWhiteSpace localSchemaFile let schemaFile = if useTempFile then Util.TemporaryFile ext else Util.ExistingFile localSchemaFile // Check if the extension of LocalSchema matches the given "ext" if not useTempFile then validateSchemaFileExtension localSchemaFile ext if useTempFile || forceUpdate || not (File.Exists schemaFile.Path) then let metadataText = Util.TemporaryFile ext |> loader // Only write if it's actually changed if useTempFile || (try File.ReadAllText schemaFile.Path with _ -> null) <> metadataText then try File.WriteAllText(schemaFile.Path, metadataText) with :? System.IO.IOException as e -> failwith (FSData.SR.errorWritingLocalSchemaFile(e.Message)) schemaFile // tricky moment that error message can spread through multiple lines // so we: // - walk through lines until we met first line with error code, save this line // - traverse lines till the next error code (or EOF). append every line to the buffer // - flush buffer on every line with error code (or at the end) let private selectLines hasErrorCode (arr : string[]) = // sqlmetal\edmgen pads inner exceptions with tabs so if line starts with tab - this is not beginning of the message // svcutil pads inner exceptions with ' ' so this is not message start as well let (|MessageStart|_|) line = if not (System.String.IsNullOrEmpty line) && line.[0] <> '\t' && not (line.StartsWith " ") && hasErrorCode line then Some () else None let (|EmptyLine|_|) line = if String.IsNullOrEmpty line then Some () else None [| let buf = System.Text.StringBuilder() for line in arr do match line with | MessageStart -> // return accumulated result with the prevous message if buf.Length <> 0 then yield buf.ToString() buf.Length <- 0 // start new message buf.Append(line.Trim()) |> ignore | EmptyLine -> // // we assume that messages cannot contain embedded empty lines so empty line terminates current message if buf.Length <> 0 then yield buf.ToString() buf.Length <- 0 | l -> // if we already started writing the message - then interleave lines in buffer with spaces // if buffer.Length = 0 - this means that we previous error has already ended but MessageStart for the new one wasn't yet met. // in this case we discard this line - it is probably header or footer of output if buf.Length <> 0 then buf .Append(" ") .Append(l.Trim()) |> ignore // flush remaining content if buf.Length <> 0 then yield buf.ToString() |] // Defines the main pattern for matching messages. // taken from vsproject\xmake\shared\canonicalerror.cs let private canonicalMessageRegex = new System.Text.RegularExpressions.Regex ( // Beginning of line and any amount of whitespace. @"^\s*" + // Match a [optional project number prefix 'ddd>'], single letter + colon + remaining filename, or // string with no colon followed by a colon. @"(((?(((\d+>)?[a-zA-Z]?:[^:]*)|([^:]*))):)" + // Origin may also be empty. In this case there's no trailing colon. "|())" + // Match the empty string or a string without a colon that ends with a space "(?(()|([^:]*? )))" + // Match 'error' or 'warning'. @"(?(error|warning))" + // Match anything starting with a space that's not a colon/space, followed by a colon. // Error code is optional in which case "error"/"warning" can be followed immediately by a colon. @"( \s*(?[^: ]*))?\s*:" + // Whatever's left on this line, including colons. "(?.*)$", System.Text.RegularExpressions.RegexOptions.IgnoreCase ||| System.Text.RegularExpressions.RegexOptions.Compiled ) // Defines the additional pattern for matching messages which may contain localized strings. // Note that the string "error|warning" from canonicalMessageRegex is simply replaced by "\w+" // to match both any localized strings and PLOC'd strings. // It has some group misalignment for PLOC'd strings, but as a whole, it works as expected. let private structuralMessageRegex = new System.Text.RegularExpressions.Regex ( // Beginning of line and any amount of whitespace. @"^\s*" + // Match a [optional project number prefix 'ddd>'], single letter + colon + remaining filename, or // string with no colon followed by a colon. @"(((?(((\d+>)?[a-zA-Z]?:[^:]*)|([^:]*))):)" + // Origin may also be empty. In this case there's no trailing colon. "|())" + // Match the empty string or a string without a colon that ends with a space "(?(()|([^:]*? )))" + // Match localized 'error' or 'warning'. @"(?(\w+))" + // Match anything starting with a space that's not a colon/space, followed by a colon. // Error code is optional in which case "error"/"warning" can be followed immediately by a colon. // constraints for CODE here is more restrictive than in cannonical case - here we match only alphanumeric chars @"( \s*(?\w*))?\s*:" + // Whatever's left on this line, including colons. "(?.*)$", System.Text.RegularExpressions.RegexOptions.IgnoreCase ||| System.Text.RegularExpressions.RegexOptions.Compiled ) let formatErr (stdout: string[]) (stderr: string[]) : unit = let getErrors s = Array.ofSeq s |> selectLines (fun s -> if canonicalMessageRegex.IsMatch s then true else // structural regex can produce false positives when line contain ':' chars // to reduce amount of false positives we'll mangle the most frequent scenario when ':' can be met - urls. // In addition, "!" which wraps PLOC'd strings will be also replaced to "_" to make the matching easier. let escapedLine = s.Replace("://", "_").Replace("!","_") structuralMessageRegex.IsMatch escapedLine ) |> Array.map Failure let exns = Array.concat [ getErrors stdout getErrors stderr ] assert (exns.Length <> 0) raise (AggregateException exns) /// Run SQLMetal and strip out a decent error message let sqlmetal args = Util.shell (Path.GetTempPath(), Util.sdkUtil "SqlMetal.exe", args, Some formatErr) let inline handleReadingSchemaError (e : exn) = match e with | :? AggregateException as ae -> let inners = ae.InnerExceptions |> Seq.map (fun e -> Failure(FSData.SR.errorReadingSchema(e.Message))) |> Seq.toArray raise(AggregateException(inners)) | e -> failwith (FSData.SR.errorReadingSchema(e.Message)) // will exists forever - but I guess we can live with it as the leak is minor // CSharpCodeProvider is IDisposable - // Dispose is inherited from Component: removes component from the ISite and unsubscribes from events - we don't use any of this features let private csCodeProvider = new Microsoft.CSharp.CSharpCodeProvider() let validateDataContextClassName name = if not(String.IsNullOrWhiteSpace name) && not (csCodeProvider.IsValidIdentifier name) then failwith (FSData.SR.invalidDataContextClassName(name)) type UC = System.Globalization.UnicodeCategory let sanitizeDataContextFileName (name : string) = if String.IsNullOrEmpty name then failwith (FSData.SR.invalidDataContextClassName(name)) /// tests if specified character is valid start character for C# identifier let isValidStartChar c = Char.IsLetter c || c = '_' /// tests if specified character is valid non-start character for C# identifier let isValidNonStartChar c = if Char.IsLetterOrDigit c || c = '_' then true else match Char.GetUnicodeCategory(c) with | UC.NonSpacingMark | UC.ConnectorPunctuation | UC.SpacingCombiningMark -> true | _ -> false let buf = System.Text.StringBuilder() let name = // convert given identifier to the uniform representation // 1. make it all lower-cased // 2. convert all word starting letters to upper-case + remove whitespaces let name = name.ToLower() let buf = System.Text.StringBuilder() let rec capitalizeFirstLetters i convertNextLetterToUpper = if i >= name.Length then buf.ToString() else let c = name.[i] if Char.IsWhiteSpace c then // whitespace - set convertNextLetterToUpper to true and proceed to the next character (thus removing whitespace from the result buffer) capitalizeFirstLetters (i + 1) true else // check if we see whitespace before. // if yes and current character is letter - it should be converted it to upper case before appending character to the result buffer let c = if Char.IsLetter c && convertNextLetterToUpper then Char.ToUpper c else c buf.Append(c) |> ignore capitalizeFirstLetters (i + 1) false capitalizeFirstLetters 0 true let startIndex = let first = name.[0] if isValidStartChar first then // if first character is valid start character for C# identifier => append it to the result buffer buf.Append(first) |> ignore 1 elif isValidNonStartChar first then // first character in name is not valid start character but valid as non-start. => it should be prepended with '_' buf.Append('_').Append(first) |> ignore 1 else // first character is invalid for usage in C# identifier => let loop below do all job (this char will be replaced with '_') 0 // check char by char if they can be used in C# identifier. invalid characters are replaced with '_' for i=startIndex to (name.Length - 1) do let c = name.[i] let c = if isValidNonStartChar c then c else '_' buf.Append(c) |> ignore // pad result with underscores if it occasionaly matches some C# keyword or reserved word csCodeProvider.CreateValidIdentifier(buf.ToString()) module internal ConfigFiles = type ConfigFileSearchResult = | StandardFound of string | CustomFound of string | StandardNotFound | CustomNotFound of string /// searches for the configuration file that will be used by TP /// designTimeDirectory- root folder /// configFileName - full path to the custom configuration file let findConfigFile (designTimeDirectory, configFileName) = if String.IsNullOrWhiteSpace configFileName then let appConfig = System.IO.Path.Combine(designTimeDirectory,"app.config") let webConfig = System.IO.Path.Combine(designTimeDirectory,"web.config") if System.IO.File.Exists appConfig then StandardFound appConfig elif System.IO.File.Exists webConfig then StandardFound webConfig else StandardNotFound else if System.IO.File.Exists configFileName then CustomFound configFileName else CustomNotFound configFileName [] type ConnectionStringReadResult = | Ok of ConnectionStringSettings | NotFound | Error of exn /// reads ConnectionStringSettings with name from the specified file /// returns either ConnectionStringReadResult.Ok (cs : ConnectionStringSettings) (cs is not null) /// or ConnectionStringReadResult.NotFound if configuration file doesn't contain ConnectionStringSettings with specified name /// or ConnectionStringReadResult.Error if reading of the file ends with error let tryReadConnectionString (configFileName : string, connectionStringName : string) = try // copy original file to avoid its locking let text = System.IO.File.ReadAllText configFileName use tmpConfigFile = Util.TemporaryFile "config" do System.IO.File.WriteAllText(tmpConfigFile.Path,text) let map = ExeConfigurationFileMap(ExeConfigFilename = tmpConfigFile.Path) let config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); let connString = config.ConnectionStrings.ConnectionStrings.[connectionStringName] if connString <> null then ConnectionStringReadResult.Ok connString else ConnectionStringReadResult.NotFound with exn -> ConnectionStringReadResult.Error exn let computeStaticConnectionString (name,checkForSqlClientProvider, connectionString, connectionStringName, configFileName, absoluteDataDirectoryParam, designTimeDirectory) = let connectionString, usingConfigFileInfo = if String.IsNullOrWhiteSpace connectionString then let configFileName, configFileBaseNameOpt = match findConfigFile (designTimeDirectory, configFileName) with | StandardFound path -> let name = Path.GetFileName path path, Some name | CustomFound path -> path, None | StandardNotFound -> failwith (FSData.SR.noConfigFileFound1()) | CustomNotFound name -> failwith (FSData.SR.noConfigFileFound2(name)) if String.IsNullOrWhiteSpace connectionStringName then failwith (FSData.SR.noConnectionStringOrConnectionStringName(name)) let mkReadConnectionStringError msg = FSData.SR.errorWhileReadingConnectionStringInConfigFile (connectionStringName, configFileName, msg) |> Choice2Of2 let result = match tryReadConnectionString(configFileName, connectionStringName) with | ConnectionStringReadResult.Ok connString -> if checkForSqlClientProvider && connString.ProviderName <> "System.Data.SqlClient" then Choice2Of2 (FSData.SR.invalidProviderInConfigFile (connString.ProviderName, connectionStringName, configFileName)) else let result = connString.ConnectionString if String.IsNullOrWhiteSpace result then Choice2Of2 (FSData.SR.invalidConnectionStringInConfigFile (result, connectionStringName, configFileName)) else Choice1Of2 result | ConnectionStringReadResult.NotFound -> FSData.SR.connectionStringNotFound(connectionStringName) |> mkReadConnectionStringError | ConnectionStringReadResult.Error exn -> mkReadConnectionStringError exn.Message match result with | Choice1Of2 r -> r, Some (connectionStringName, configFileBaseNameOpt) | Choice2Of2 msg -> failwith msg else if not (String.IsNullOrWhiteSpace connectionStringName) then failwith (FSData.SR.notBothConnectionStringOrConnectionStringName()) connectionString, None // Always do |DataDirectory| substitution let connectionString = let absoluteDataDirectory = if String.IsNullOrWhiteSpace absoluteDataDirectoryParam then designTimeDirectory else if not (System.IO.Directory.Exists absoluteDataDirectoryParam) then failwith (FSData.SR.dataDirectoryNotFound(absoluteDataDirectoryParam)) absoluteDataDirectoryParam connectionString.Replace("|DataDirectory|", absoluteDataDirectory) connectionString, usingConfigFileInfo module internal Dbml = let buildType (dbmlFileContent: string, contextTypeName:string, serializable:bool) = validateDataContextClassName contextTypeName // Remove the Database/Connection element if exist, which can be created by the O/R Designer // Its attributes, "SettingsObjectName" and "SettingsPropertyName" can cause sqlmetal to generate a problematic csharp file let dbmlFileContent = if dbmlFileContent.Contains("Connection") then let xdoc = XDocument.Parse dbmlFileContent xdoc.Elements() |> Seq.filter (fun xnode -> xnode.Name.LocalName = "Database") |> Seq.choose (fun xnode -> match xnode.Elements(xnode.Name.Namespace + "Connection") with | null -> None | s -> Some (s)) |> Seq.iter (fun xchild -> xchild.Remove()) xdoc.ToString() else dbmlFileContent use csFile = Util.TemporaryFile "cs" use dbmlFile = Util.TemporaryFile "dbml" File.WriteAllText (dbmlFile.Path, dbmlFileContent) let sqlMetalArgs = let command = sprintf "/code:\"%s\" /language:C# \"%s\"" csFile.Path dbmlFile.Path let command = if not (String.IsNullOrWhiteSpace contextTypeName) then sprintf "%s /context:\"%s\" " command contextTypeName else command let command = if serializable then sprintf "%s /serialization:Unidirectional" command else command command sqlmetal sqlMetalArgs let assemblyFile = Util.TemporaryFile "dll" // TODO: load in-memory and clean up this file let cscCommand = sprintf "/nologo /target:library /out:\"%s\" \"%s\"" assemblyFile.Path csFile.Path Util.shell(Path.GetTempPath(), Util.cscExe(), cscCommand, None) assemblyFile module internal SqlConnection = let getDbml (dbmlFile: Util.FileResource, connString, flagPluralize, flagViews, flagFunctions, flagStoredProcs, flagTimeout, contextTypeName) = validateDataContextClassName contextTypeName let sqlMetalArgs = let command = sprintf "/conn:\"%s\" /dbml:\"%s\"" connString dbmlFile.Path let command = if flagPluralize then sprintf "%s /pluralize" command else command let command = if flagViews then sprintf "%s /views" command else command let command = if flagFunctions then sprintf "%s /functions" command else command let command = if flagStoredProcs then sprintf "%s /sprocs" command else command let command = if not (String.IsNullOrWhiteSpace contextTypeName) then sprintf "%s /context:\"%s\" " command contextTypeName else command let command = sprintf "%s /timeout:%d" command flagTimeout command sqlmetal sqlMetalArgs File.ReadAllText dbmlFile.Path let buildType (connectionString, connectionStringName:string, configFileName:string, absoluteDataDirectory:string, localSchemaFile:string, forceUpdate:bool, flagPluralize, flagViews, flagFunctions, flagStoredProcs, flagTimeout, contextTypeName, serializable, designTimeDirectory) = let connectionString, usingConfigFileInfo = ConfigFiles.computeStaticConnectionString ("SqlDataConnection", true, connectionString, connectionStringName, configFileName, absoluteDataDirectory, designTimeDirectory) // parses connection string on components, validates only syntax let connStringBuilder = System.Data.Common.DbConnectionStringBuilder() connStringBuilder.ConnectionString <- connectionString let contextTypeName = // if context is not explicitly set - try to infer context name from database filename if String.IsNullOrWhiteSpace(contextTypeName) then let dbFileNameOpt = // SqlCE allows usage of both 'Data Source' and 'DataSource' names and treats them as equivalent // however SqlMetal doesn't recognize 'DataSource' and always looks for 'Data Source' // so to figure out if given connection string is SqlCE - we'll get value of 'Data Source' and check if it ends with .sdf // NOTE: we cannot just use SqlConnectionStringBuilder because it rejects some SqlCE specific parameter names match connStringBuilder.TryGetValue ("Data Source") with | true, (:? string as ds) when ds.EndsWith(".sdf", System.StringComparison.OrdinalIgnoreCase) -> Some ds // SqlCE | _ -> // SqlServer let sqlConnString = System.Data.SqlClient.SqlConnectionStringBuilder(connectionString) if not (String.IsNullOrEmpty sqlConnString.AttachDBFilename) then Some (sqlConnString.AttachDBFilename) else None match dbFileNameOpt with | Some f -> Path.GetFileNameWithoutExtension f |> sanitizeDataContextFileName | None -> contextTypeName else contextTypeName use dbmlFile = tryUseLocalSchemaFile (localSchemaFile, forceUpdate, "dbml") (fun dbmlFile -> try getDbml (dbmlFile,connectionString, flagPluralize, flagViews, flagFunctions, flagStoredProcs, flagTimeout, contextTypeName) with e -> handleReadingSchemaError e) use csFile = Util.TemporaryFile "cs" let sqlMetalArgs = let command = sprintf "/code:\"%s\" /language:C# \"%s\"" csFile.Path dbmlFile.Path let command = if not (String.IsNullOrWhiteSpace contextTypeName) then sprintf "%s /context:\"%s\" " command contextTypeName else command let command = if serializable then sprintf "%s /serialization:Unidirectional" command else command command sqlmetal sqlMetalArgs let assemblyFile = Util.TemporaryFile "dll" // TODO: load in-memory and clean up this file let cscCommand = sprintf "/nologo /target:library /out:\"%s\" \"%s\"" assemblyFile.Path csFile.Path Util.shell(Path.GetTempPath(), Util.cscExe(), cscCommand, None) assemblyFile, usingConfigFileInfo module internal DataSvcUtil = type MetadataError = FixedQueryNotSupported | DataQualityServiceNotSupported module Metadata = let private edmx = XNamespace.Get "http://schemas.microsoft.com/ado/2007/06/edmx" let private dr = XNamespace.Get "http://schemas.microsoft.com/dallas/2010/04" let private edm08 = XNamespace.Get "http://schemas.microsoft.com/ado/2009/08/edm" let private edm05 = XNamespace.Get "http://schemas.microsoft.com/ado/2007/05/edm" let private get (name : XName) (c : XContainer) = match c.Element name with | null -> None | el -> Some (el :> XContainer) /// Analyzes given metadata file and tries to find evidence of specific cases that may cause datasvcutil to fail let TryPredictError (path : string) = try let xdoc = XDocument.Load(path) let error = defaultArg (get (edmx + "Edmx") xdoc) (xdoc :> XContainer) |> get (edmx + "DataServices") |> Option.bind (fun ds -> match get (edm08 + "Schema") ds with | Some el -> Some (el, edm08) | None -> match get (edm05 + "Schema") ds with | Some el -> Some (el, edm05) | None -> None ) |> Option.bind (fun (schema, ns) -> // check if metadata contains node // // this indicates that target service implements DataQuality API - datasvcutil cannot consume it correctly let isDQS = match get (ns + "Using") schema with | Some (:? XElement as e) -> match e.Attribute(XName.Get "Namespace") with | null -> false | attr -> attr.Value = "Microsoft.DQS" | _ -> false if isDQS then Some DataQualityServiceNotSupported else // check all EntityType nodes // if all of them has - then it may indicate that service support fixed query let entityTypes = schema.Elements(ns + "EntityType") let isFixed = entityTypes.Elements (ns + "Property") |> Seq.forall (fun el -> let attr = el.Attribute(dr + "Queryable") attr <> null && attr.Value = "false" ) if isFixed then Some FixedQueryNotSupported else None ) error with _ -> None // swallow this error (if datasvcutil will fail - we'll report errors from the output) /// Add the default service URI to the generated CS file by inserting it as the argument /// to the default data context constructor, also drop the namespace declaration. let addDefaultUriToDataSvcUtilCSharpFile uri csFile = let csText = File.ReadAllLines csFile let (|DataContextClass|_|) (line:string) = let trimmed = line.Trim('{',' ','\t') let starting = "public partial class " let ending = "System.Data.Services.Client.DataServiceContext" if trimmed.StartsWith starting && trimmed.Contains ":" && trimmed.EndsWith ending then let s = trimmed.Substring starting.Length Some (s.Substring(0, s.IndexOf ' '), line.Contains "{") else None let doctoredText = [| // Was the last line a namespace? let prevNS = ref false let foundDataContextClass = ref None for line in csText do match line with | _ when prevNS.Value -> prevNS := false // note, the line after the namespace is dropped | _ when line.StartsWith "namespace" -> prevNS := true // note, the namespace declaration is dropped | DataContextClass (className, endsWithBrace) -> foundDataContextClass := Some (className, endsWithBrace) yield line | _ -> match line.Trim(), foundDataContextClass.Value with | "{", Some(className, false) | "", Some(className, true) -> yield line yield sprintf "public %s() : this(new global::System.Uri(\"%s\")) {}" className uri foundDataContextClass := None | _ when line <> "}" -> yield line | _ -> () |] File.WriteAllLines(csFile, doctoredText) let buildTypeFromMetadataUri (uri : string, localSchemaFile:string, forceUpdate:bool, dataServiceCollection) = use csdlFile = tryUseLocalSchemaFile (localSchemaFile, forceUpdate, "csdl") (fun _ -> try let metadataUri = if uri.EndsWith "/" then uri + "$metadata" else uri + "/$metadata" let metadataText = use c = new WebClient(UseDefaultCredentials=true) // TODO: consider adding schema credentials here c.DownloadString metadataUri metadataText with e -> handleReadingSchemaError e) let expectedError = Metadata.TryPredictError csdlFile.Path use csFile = Util.TemporaryFile "cs" let dataSvcUtilArgs = let args = sprintf "/nologo /in:\"%s\" /out:\"%s\" /language:CSharp /version:2.0" csdlFile.Path csFile.Path let args = if dataServiceCollection then sprintf "%s /DataServiceCollection" args else args args try Util.shell(Path.GetTempPath(), Util.dataSvcUtilExe(), dataSvcUtilArgs, Some formatErr) with _ -> // check if we expect errors in this file match expectedError with | Some FixedQueryNotSupported -> failwith (FSData.SR.fixedQueriesNotSupported()) | Some DataQualityServiceNotSupported -> failwith (FSData.SR.dqsServicesNotSupported()) | None -> reraise() addDefaultUriToDataSvcUtilCSharpFile uri csFile.Path let assemblyFile = Util.TemporaryFile "dll" // TODO: load in-memory and clean up this file let cscCommand = sprintf "/nologo /target:library /r:System.Data.Services.Client.dll /out:\"%s\" \"%s\"" assemblyFile.Path csFile.Path Util.shell(Path.GetTempPath(), Util.cscExe(), cscCommand, None) assemblyFile module internal SvcUtil = let serviceMetadataFilesXName = XName.Get "ServiceMetadataFiles" let serviceMetadataFileXName = XName.Get "ServiceMetadataFile" let fileNameXName = XName.Get "name" /// assumes that destFolder is already created let private unpackFolder (sourceFile : string) (destFolder : string) = let xml = XDocument.Load sourceFile for fileNode in xml.Root.Elements(serviceMetadataFileXName) do let name = fileNode.Attribute(fileNameXName) let resultPath = Path.Combine(destFolder, name.Value) let root = fileNode.Elements() |> Seq.tryFind(fun _ -> true) // pick first element match root with | Some root -> root.Save(resultPath) | None -> failwith (FSData.SR.serviceMetadataFileElementIsEmpty()) let private packFolder sourceFolder (destFile : string) patterns = let root =XElement(serviceMetadataFilesXName) let doc = XDocument(root) let append pat = for f in Directory.GetFiles(sourceFolder, pat) do let xml = XDocument.Load(f) let node = XElement(serviceMetadataFileXName) let fileName = Path.GetFileName f // add attribute with the name of source file node.Add(XAttribute(fileNameXName, fileName)) // append file content node.Add(xml.Root) root.Add(node) for pat in patterns do append pat doc.Save(destFile) let validateWsdlUri uri = if String.IsNullOrWhiteSpace uri then failwith (FSData.SR.invalidWsdlUri()) let buildTypeFromWsdlUri (namespaceName, wsdlUri : string, localSchemaFile:string, forceUpdate:bool, messageContract, enableDataBinding, serializable, async, collectionType) = validateWsdlUri wsdlUri use metadataDir = let tempFolder = Util.TemporaryDirectory() let schemaFileSet = not (String.IsNullOrWhiteSpace localSchemaFile) let schemaFileExists = schemaFileSet && ( try File.Exists(localSchemaFile) with _ -> false ) if schemaFileSet then validateSchemaFileExtension localSchemaFile "wsdlschema" // downloads metadata to the specified temp folder // if localSchemaFile is set - pack downloaded content as localSchemaFile let downloadMetadata () = if (try System.IO.Directory.Exists tempFolder.Path with _ -> false) then (try System.IO.Directory.Delete (tempFolder.Path, true) with _ -> ()) if not (System.IO.Directory.Exists tempFolder.Path) then System.IO.Directory.CreateDirectory tempFolder.Path |> ignore let svcUtilArgs = let args = sprintf "/nologo /t:metadata \"%s\"" wsdlUri args Util.shell(tempFolder.Path, Util.svcUtilExe(), svcUtilArgs, Some formatErr) if schemaFileSet then packFolder tempFolder.Path localSchemaFile ["*.wsdl"; "*.xsd"] if not (schemaFileExists) || forceUpdate then downloadMetadata() else // reraise exceptions if local schema file is corrupted try unpackFolder localSchemaFile tempFolder.Path with e -> failwith (FSData.SR.errorReadingSchema(e.Message)) tempFolder use configFile = Util.TemporaryFile "config" //Util.ExistingFile (System.IO.Path.Combine(metadataDir.Path, configFileName)) use csFile = Util.TemporaryFile "cs" let svcUtilArgs = let args = sprintf "/nologo /out:\"%s\" /config:\"%s\" /language:CSharp /serializer:Auto /fault" csFile.Path configFile.Path let args = if System.IO.Directory.EnumerateFiles(metadataDir.Path, "*.wsdl") |> Seq.isEmpty then args else sprintf "%s \"%s\"" args (Path.Combine(metadataDir.Path,"*.wsdl")) let args = if System.IO.Directory.EnumerateFiles(metadataDir.Path, "*.xsd") |> Seq.isEmpty then args else sprintf "%s \"%s\"" args (Path.Combine(metadataDir.Path,"*.xsd")) let args = if messageContract then sprintf "%s /messageContract" args else args let args = if enableDataBinding then sprintf "%s /enableDataBinding" args else args let args = if serializable then sprintf "%s /serializable" args else args let args = if async then sprintf "%s /async" args else args let args = if not (String.IsNullOrWhiteSpace collectionType) then sprintf "%s /collectionType:%s" args collectionType else args args Util.shell(Path.GetTempPath(), Util.svcUtilExe(), svcUtilArgs, Some formatErr) let assemblyFile = Util.TemporaryFile "dll" // TODO: load in-memory and clean up this file let cscCommand = sprintf "/nologo /target:library /resource:\"%s\",%s.config,public /out:\"%s\" \"%s\"" configFile.Path namespaceName assemblyFile.Path csFile.Path Util.shell(Path.GetTempPath(), Util.cscExe(), cscCommand, None) let endPointNames = try let config = ConfigurationManager.OpenMappedExeConfiguration(ExeConfigurationFileMap(ExeConfigFilename = configFile.Path), ConfigurationUserLevel.None); [ for ep in ((config.GetSectionGroup "system.serviceModel").Sections.["client"] :?> System.ServiceModel.Configuration.ClientSection).Endpoints do yield ep.Name ] with _ -> [] assemblyFile, endPointNames module internal Edmx = type private EdmxNamespaceGroup = { Edmx : XNamespace; Edm : XNamespace; Ssdl :XNamespace; Msl : XNamespace; RequireDotNet45 : bool } let private makeGroup (edmx : string, edm : string, ssdl : string, msl : string, requireDotNet45)= { Edmx = XNamespace.Get edmx Edm = XNamespace.Get edm Ssdl = XNamespace.Get ssdl Msl = XNamespace.Get msl RequireDotNet45 = requireDotNet45 } let private ns45 = makeGroup ( "http://schemas.microsoft.com/ado/2009/11/edmx", "http://schemas.microsoft.com/ado/2009/11/edm", "http://schemas.microsoft.com/ado/2009/11/edm/ssdl", "http://schemas.microsoft.com/ado/2009/11/mapping/cs", true ) let private ns40 = makeGroup ( "http://schemas.microsoft.com/ado/2008/10/edmx", "http://schemas.microsoft.com/ado/2008/09/edm", "http://schemas.microsoft.com/ado/2009/02/edm/ssdl", "http://schemas.microsoft.com/ado/2008/09/mapping/cs", false ) let private ns20 = makeGroup ( "http://schemas.microsoft.com/ado/2007/06/edmx", "http://schemas.microsoft.com/ado/2006/04/edm", "http://schemas.microsoft.com/ado/2006/04/edm/ssdl", "urn:schemas-microsoft-com:windows:storage:mapping:CS", false ) let loadEdmxFile path = let getElement (c : XContainer) (name : string) (ns : XNamespace) = match c.Element (ns + name) with | null -> failwith (FSData.SR.fileDoesNotContainXMLElement(path, name)) | el -> el let xdoc = match XDocument.Load path with | null -> failwith (FSData.SR.failedToLoadFileAsXML(path)) | xdoc -> xdoc let extractEdmxComponents (nsGroup : EdmxNamespaceGroup) = let edmxNode = getElement xdoc "Edmx" nsGroup.Edmx let runtimeNode = getElement edmxNode "Runtime" nsGroup.Edmx let csdlNode = let conceptualModelNode = getElement runtimeNode "ConceptualModels" nsGroup.Edmx getElement conceptualModelNode "Schema" nsGroup.Edm let ssdlNode = let storageModelNode = getElement runtimeNode "StorageModels" nsGroup.Edmx getElement storageModelNode "Schema" nsGroup.Ssdl let mslNode = let mappingsNode = getElement runtimeNode "Mappings" nsGroup.Edmx getElement mappingsNode "Mapping" nsGroup.Msl (csdlNode.ToString()), (ssdlNode.ToString()), (mslNode.ToString()), nsGroup.RequireDotNet45 // tries to process given edmx using supplied set of namespace groups let rec load = function | [] -> assert false; failwith "impossible" | x::xs -> try extractEdmxComponents x with e -> match xs with | [] -> reraise() // we were not able to load file - raise exception | _ -> load xs load [ns45; ns40; ns20] let buildTypeFromEdmxFile (edmxFile, isTargetingDotNet45) = use csDir = Util.TemporaryDirectory() let baseContainerName = Path.GetFileNameWithoutExtension edmxFile let csFile = Path.Combine(csDir.Path, baseContainerName + ".cs") let csdlFileName = baseContainerName + ".csdl" let mslFileName = baseContainerName + ".msl" let ssdlFileName = baseContainerName + ".ssdl" let csdlFile = Path.Combine(csDir.Path, csdlFileName) let mslFile = Path.Combine(csDir.Path, mslFileName) let ssdlFile = Path.Combine(csDir.Path, ssdlFileName) let csdlContent, ssdlContent, mslContent, requireDotNet45 = loadEdmxFile edmxFile if requireDotNet45 && not isTargetingDotNet45 then failwith (FSData.SR.edmxFileRequiresDotNet45(edmxFile)) File.WriteAllText(csdlFile, csdlContent) File.WriteAllText(mslFile, mslContent) File.WriteAllText(ssdlFile, ssdlContent) let edmGenArgs = let args = sprintf "/mode:EntityClassGeneration /incsdl:\"%s\" /outobjectlayer:\"%s\" /nologo" csdlFile csFile let args = if isTargetingDotNet45 then sprintf "%s /targetversion:4.5" args else args args Util.shell(csDir.Path, Util.edmGenExe(), edmGenArgs, Some formatErr) let assemblyFile = Util.TemporaryFile "dll" // TODO: load in-memory and clean up this file let cscCommand = sprintf "/nologo /resource:\"%s\",\"%s\" /resource:\"%s\",\"%s\" /resource:\"%s\",\"%s\" /target:library /r:System.Data.Entity.dll /out:\"%s\" \"%s\"" csdlFile csdlFileName mslFile mslFileName ssdlFile ssdlFileName assemblyFile.Path csFile Util.shell(csDir.Path, Util.cscExe(), cscCommand, None) assemblyFile module internal SqlEntityConnection = let getSsdl (namespaceName, ssdlFile: Util.FileResource, provider, connString, flagPluralize, flagSuppressForeignKeyProperties, isTargetingDotNet45) = let edmGenArgs = let args = sprintf "/namespace:\"%s\" /project:\"%s\" /outssdl:\"%s\" /mode:FullGeneration /connectionstring:\"%s\" " namespaceName (Path.GetFileNameWithoutExtension ssdlFile.Path) ssdlFile.Path connString let args = if not (String.IsNullOrWhiteSpace provider) then sprintf "%s /provider:%s" args provider else args let args = if flagPluralize then sprintf "%s /pluralize" args else args let args = if flagSuppressForeignKeyProperties then sprintf "%s /SuppressForeignKeyProperties" args else args let args = if isTargetingDotNet45 then sprintf "%s /targetversion:4.5" args else args args Util.shell(System.IO.Path.GetDirectoryName ssdlFile.Path, Util.edmGenExe(), edmGenArgs, Some formatErr) File.ReadAllText ssdlFile.Path let computeEntityContainerName (entityContainer:string) = if String.IsNullOrWhiteSpace entityContainer then "EntityContainer" else entityContainer let buildType (namespaceName, connectionString, connectionStringName, configFileName, absoluteDataDirectory, localSchemaFile:string, provider:string, entityContainer:string, forceUpdate:bool, flagPluralize, flagSuppressForeignKeyProperties, designTimeDirectory, isTargetingDotNet45) = let connectionString, usingConfigFileInfo = ConfigFiles.computeStaticConnectionString ("SqlEntityConnection", false, connectionString, connectionStringName, configFileName, absoluteDataDirectory, designTimeDirectory) let entityContainer = computeEntityContainerName entityContainer use ssdlFile = tryUseLocalSchemaFile (localSchemaFile, forceUpdate, "ssdl") (fun ssdlFile -> try getSsdl (namespaceName, ssdlFile, provider, connectionString, flagPluralize, flagSuppressForeignKeyProperties, isTargetingDotNet45) with e -> handleReadingSchemaError e) use csFile = Util.TemporaryFile "cs" use csdlFile = Util.TemporaryFile "csdl" use mslFile = Util.TemporaryFile "msl" use viewsFile = Util.TemporaryFile "Views.cs" let edmGenArgs = let args = sprintf "/mode:FromSsdlGeneration /entitycontainer:\"%s\" /namespace:\"%s\" /project:\"%s\" /inssdl:\"%s\" /outobjectlayer:\"%s\" /outcsdl:\"%s\" /outmsl:\"%s\" /outviews:\"%s\" /language:CSharp" entityContainer namespaceName (Path.GetFileNameWithoutExtension ssdlFile.Path) ssdlFile.Path csFile.Path csdlFile.Path mslFile.Path viewsFile.Path let args = if not (String.IsNullOrWhiteSpace provider) then sprintf "%s /provider:%s" args provider else args let args = if flagPluralize then sprintf "%s /pluralize" args else args let args = if flagSuppressForeignKeyProperties then sprintf "%s /SuppressForeignKeyProperties" args else args let args = if isTargetingDotNet45 then sprintf "%s /targetversion:4.5" args else args args Util.shell(System.IO.Path.GetDirectoryName ssdlFile.Path, Util.edmGenExe(), edmGenArgs, Some formatErr) let assemblyFile = Util.TemporaryFile "dll" let csdlFileName = namespaceName + ".csdl" let mslFileName = namespaceName + ".msl" let ssdlFileName = namespaceName + ".ssdl" let cscCommand = sprintf "/r:System.Data.Entity.dll /nologo /resource:\"%s\",\"%s\" /resource:\"%s\",\"%s\" /resource:\"%s\",\"%s\" /nologo /target:library /out:\"%s\" \"%s\"" csdlFile.Path csdlFileName mslFile.Path mslFileName ssdlFile.Path ssdlFileName assemblyFile.Path csFile.Path Util.shell(Path.GetTempPath(), Util.cscExe(), cscCommand, None) assemblyFile, usingConfigFileInfo fsharp-3.0.34/src/fsharp/targets.make0000664000175000017500000002572312260314606016463 0ustar chrischrisSOURCES := $(patsubst $(srcdir)$(tmpdir)%,$(tmpdir)%,$(patsubst %,$(srcdir)%,$(sources))) .PHONY: install install-bin install-bin-2 install-bin-4 install-lib clean-2-0: TARGET := $(TARGET_2_0) clean-2-0: -rm -rf $(tmpdir) -rm -rf $(objdir) -rm -f $(outdir)$(ASSEMBLY) -rm -f $(outdir)$(ASSEMBLY).mdb -rm -f $(outdir)$(NAME).xml -rm -f $(outdir)$(NAME).sigdata -rm -f $(outdir)$(NAME).optdata clean-2-1: TARGET := $(TARGET_2_1) clean-2-1: -rm -rf $(tmpdir) -rm -rf $(objdir) -rm -f $(outdir)$(ASSEMBLY) -rm -f $(outdir)$(ASSEMBLY).mdb -rm -f $(outdir)$(NAME).xml -rm -f $(outdir)$(NAME).sigdata -rm -f $(outdir)$(NAME).optdata clean-4-0: TARGET := $(TARGET_4_0) clean-4-0: -rm -rf $(tmpdir) -rm -rf $(objdir) -rm -f $(outdir)$(ASSEMBLY) -rm -f $(outdir)$(ASSEMBLY).mdb -rm -f $(outdir)$(NAME).xml -rm -f $(outdir)$(NAME).sigdata -rm -f $(outdir)$(NAME).optdata do-2-0: DEFINES += $(DEFINES_2_0) do-2-0: REFERENCES += $(REFERENCES_2_0) do-2-0: FLAGS += $(FLAGS_2_0) do-2-0: TARGET := $(TARGET_2_0) do-2-0: VERSION := $(VERSION_2_0) do-2-0: monogacdirXX = $(monogacdir20) do-2-0: gacdirXX = $(gacdir20) do-2-0: $(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_2_0)/$(ASSEMBLY) @mkdir -p $(outdir) @cp $(objdir)$(ASSEMBLY) $(outdir) @if test -e $(objdir)$(ASSEMBLY).xml; then \ cp $(objdir)$(NAME).xml $(outdir); \ fi @if test -e $(objdir)$(ASSEMBLY).mdb; then \ cp $(objdir)$(ASSEMBLY).mdb $(outdir); \ fi @if test -e $(objdir)$(NAME).sigdata; then \ cp $(objdir)$(NAME).sigdata $(outdir); \ fi @if test -e $(objdir)$(NAME).optdata; then \ cp $(objdir)$(NAME).optdata $(outdir); \ fi @if test "x$(DELAY_SIGN)" = "x1"; then \ sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \ fi do-2-1: DEFINES += $(DEFINES_2_1) do-2-1: REFERENCES += $(REFERENCES_2_1) do-2-1: FLAGS += $(FLAGS_2_1) do-2-1: TARGET := $(TARGET_2_1) do-2-1: VERSION := $(VERSION_2_1) do-2-1: monogacdirXX = $(monogacdir20) do-2-1: gacdirXX = $(gacdir20) do-2-1: $(objdir) $(objdir)$(TARGET_2_1) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_2_1)/$(ASSEMBLY) @mkdir -p $(outdir) @cp $(objdir)$(ASSEMBLY) $(outdir) @if test -e $(objdir)$(NAME).xml; then \ cp $(objdir)$(NAME).xml $(outdir); \ fi @if test -e $(objdir)$(ASSEMBLY).mdb; then \ cp $(objdir)$(ASSEMBLY).mdb $(outdir); \ fi @if test -e $(objdir)$(NAME).sigdata; then \ cp $(objdir)$(NAME).sigdata $(outdir); \ fi @if test -e $(objdir)$(NAME).optdata; then \ cp $(objdir)$(NAME).optdata $(outdir); \ fi @if test "x$(DELAY_SIGN)" = "x1"; then \ sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \ fi do-4-0: DEFINES += $(DEFINES_4_0) do-4-0: REFERENCES += $(REFERENCES_4_0) do-4-0: FLAGS += $(FLAGS_4_0) do-4-0: TARGET := $(TARGET_4_0) do-4-0: VERSION := $(VERSION_4_0) do-4-0: monogacdirXX = $(monogacdir40) do-4-0: gacdirXX = $(gacdir40) do-4-0: $(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_4_0) $(objdir)$(TARGET_4_0)/$(ASSEMBLY) @mkdir -p $(outdir) @cp $(objdir)$(ASSEMBLY) $(outdir) @if test -e $(objdir)$(NAME).xml; then \ cp $(objdir)$(NAME).xml $(outdir); \ fi @if test -e $(objdir)$(ASSEMBLY).mdb; then \ cp $(objdir)$(ASSEMBLY).mdb $(outdir); \ fi @if test -e $(objdir)$(NAME).sigdata; then \ cp $(objdir)$(NAME).sigdata $(outdir); \ fi @if test -e $(objdir)$(NAME).optdata; then \ cp $(objdir)$(NAME).optdata $(outdir); \ fi @if test "x$(DELAY_SIGN)" = "x1"; then \ sn -q -R $(outdir)$(ASSEMBLY) $(srcdir)../../../mono.snk; \ fi @if test -e Microsoft.FSharp.Targets; then \ cp Microsoft.FSharp.Targets $(outdir)Microsoft.FSharp.Targets; \ fi @if test -e Microsoft.Portable.FSharp.Targets; then \ cp Microsoft.Portable.FSharp.Targets $(outdir)Microsoft.Portable.FSharp.Targets; \ fi install-lib-2: TARGET := $(TARGET_2_0) install-lib-2: VERSION := $(VERSION_2_0) install-lib-2-1: TARGET := $(TARGET_2_1) install-lib-2-1: VERSION := $(VERSION_2_1) install-lib-4: TARGET := $(TARGET_4_0) install-lib-4: VERSION := $(VERSION_4_0) install-bin-2: TARGET := $(TARGET_2_0) install-bin-2: VERSION := 2 install-bin-2-1: TARGET := $(TARGET_2_1) install-bin-2-1: VERSION := 2.1 install-bin-4: TARGET := $(TARGET_4_0) # Install the library binaries in the GAC and the framework directory, # Install .optdata/.sigdata if they exist (they go alongside FSharp.Core) # Install the .Targets file. The XBuild targets file gets installed into the place(s) expected for standard F# project # files. For F# 2.0 project files this is # .../Microsoft F#/v4.0/Microsoft.FSharp.Targets # For F# 3.0 project files this is # .../Microsoft SDKs/F#/3.0/Framework/v4.0/Microsoft.FSharp.Targets # # For F# 3.1 project files this is # .../lib/mono/xbuild/Microsoft/VisualStudio/v$(VisualStudioVersion)/FSharp/Microsoft.FSharp.Targets # # xbuild sets 'VisualStudioVersion' to empty. # # We put a forwarding targets file into all three locations. We also put one in # .../lib/mono/xbuild/Microsoft/VisualStudio/v12.0/FSharp/Microsoft.FSharp.Targets # since this is the correct location, and 'xbuild' may in future start setting VisualStudioVersion to this value. install-lib-2 install-lib-2-1 install-lib-4: @echo "Installing $(ASSEMBLY)" @mkdir -p $(DESTDIR)$(gacdir)/$(TARGET) gacutil -i $(outdir)$(ASSEMBLY) -root $(DESTDIR)$(libdir) -package $(TARGET) @if test -e $(outdir)Microsoft.FSharp.Targets; then \ $(INSTALL_LIB) $(outdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/$(TARGET)/; \ mkdir -p $(tmpdir); \ echo '' > $(tmpdir)Microsoft.FSharp.Targets; \ echo ' ' >> $(tmpdir)Microsoft.FSharp.Targets; \ echo '' >> $(tmpdir)Microsoft.FSharp.Targets; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.1/Framework/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \ mkdir -p $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.1/Framework/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.FSharp.Targets $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \ fi @if test -e $(outdir)Microsoft.Portable.FSharp.Targets; then \ $(INSTALL_LIB) $(outdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/$(TARGET)/; \ echo '' > $(tmpdir)Microsoft.Portable.FSharp.Targets; \ echo ' ' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \ echo '' >> $(tmpdir)Microsoft.Portable.FSharp.Targets; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.1/Framework/v$(TARGET)/; \ mkdir -p $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \ mkdir -p $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \ mkdir -p $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ F#/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.0/Framework/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/Microsoft\ SDKs/F#/3.1/Framework/v$(TARGET)/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v/FSharp/; \ $(INSTALL_LIB) $(tmpdir)Microsoft.Portable.FSharp.Targets $(DESTDIR)$(gacdir)/xbuild/Microsoft/VisualStudio/v12.0/FSharp/; \ fi @if test -e $(outdir)$(NAME).xml; then \ $(INSTALL_LIB) $(outdir)$(NAME).xml $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \ ln -fs ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).xml $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).xml; \ fi @if test -e $(outdir)$(NAME).sigdata; then \ $(INSTALL_LIB) $(outdir)$(NAME).sigdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \ ln -fs ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).sigdata $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).sigdata; \ fi @if test -e $(outdir)$(NAME).optdata; then \ $(INSTALL_LIB) $(outdir)$(NAME).optdata $(DESTDIR)$(gacdir)/gac/$(NAME)/$(VERSION)__$(TOKEN); \ ln -fs ../gac/$(NAME)/$(VERSION)__$(TOKEN)/$(NAME).optdata $(DESTDIR)$(gacdir)/$(TARGET)/$(NAME).optdata; \ fi install-lib-4-5: install-lib-4 @if test -e $(DESTDIR)$(gacdir)/4.5/; then \ ln -fs ../4.0/$(ASSEMBLY) $(DESTDIR)$(gacdir)/4.5/$(ASSEMBLY); \ if test -e $(DESTDIR)$(gacdir)/4.0/$(ASSEMBLY).config; then \ ln -fs ../4.0/$(ASSEMBLY).config $(DESTDIR)$(gacdir)/4.5/$(ASSEMBLY).config; \ fi; \ if test -e $(DESTDIR)$(gacdir)/4.0/$(NAME).sigdata; then \ ln -fs ../4.0/$(NAME).sigdata $(DESTDIR)$(gacdir)/4.5/$(NAME).sigdata; \ fi; \ if test -e $(DESTDIR)$(gacdir)/4.0/$(NAME).xml; then \ ln -fs ../4.0/$(NAME).xml $(DESTDIR)$(gacdir)/4.5/$(NAME).xml; \ fi; \ if test -e $(DESTDIR)$(gacdir)/4.0/$(NAME).optdata; then \ ln -fs ../4.0/$(NAME).optdata $(DESTDIR)$(gacdir)/4.5/$(NAME).optdata; \ fi; \ fi # The binaries fsc.exe and fsi.exe only get installed for Mono 4.0 profile # This also installs 'fsharpc' and 'fsharpi' install-bin-4: chmod +x $(outdir)$(ASSEMBLY) sed -e 's,[@]DIR[@],$(gacdir)/$(TARGET),g' -e 's,[@]TOOL[@],$(ASSEMBLY),g' < $(topdir)launcher > $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION) chmod +x $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION) @mkdir -p $(DESTDIR)$(gacdir)/$(TARGET) @mkdir -p $(DESTDIR)$(bindir) $(INSTALL_BIN) $(outdir)$(ASSEMBLY) $(DESTDIR)$(gacdir)/$(TARGET) $(INSTALL_BIN) $(outdir)$(subst fs,fsharp,$(NAME))$(VERSION) $(DESTDIR)$(bindir) $(objdir) $(objdir)$(TARGET_2_0) $(objdir)$(TARGET_2_1) $(objdir)$(TARGET_4_0): mkdir -p $@ $(objdir)$(TARGET_2_0)/$(ASSEMBLY): $(RESOURCES) $(SOURCES) mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES) $(objdir)$(TARGET_2_1)/$(ASSEMBLY): $(RESOURCES) $(SOURCES) mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES) $(objdir)$(TARGET_4_0)/$(ASSEMBLY): $(RESOURCES) $(SOURCES) mono $(MONO_OPTIONS) $(FSC) -o:$(objdir)$(ASSEMBLY) $(REFERENCES) $(DEFINES) $(FLAGS) $(patsubst %,--resource:%,$(RESOURCES)) $(SOURCES) fsharp-3.0.34/src/fsharp/FSharp.Core/0000775000175000017500000000000012260314606016214 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core/option.fs0000775000175000017500000000466712260314606020076 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Collections open Microsoft.FSharp.Core.Operators [] module Option = [] let get option = match option with None -> invalidArg "option" (SR.GetString(SR.optionValueWasNone)) | Some x -> x [] let isSome option = match option with None -> false | Some _ -> true [] let isNone option = match option with None -> true | Some _ -> false [] let count option = match option with None -> 0 | Some _ -> 1 [] let fold<'T,'State> f (s:'State) (inp: option<'T>) = match inp with None -> s | Some x -> f s x [] let foldBack<'T,'State> f (inp: option<'T>) (s:'State) = match inp with None -> s | Some x -> f x s [] let exists p inp = match inp with None -> false | Some x -> p x [] let forall p inp = match inp with None -> true | Some x -> p x [] let iter f inp = match inp with None -> () | Some x -> f x [] let map f inp = match inp with None -> None | Some x -> Some (f x) [] let bind f inp = match inp with None -> None | Some x -> f x [] let toArray option = match option with None -> [| |] | Some x -> [| x |] [] let toList option = match option with None -> [ ] | Some x -> [ x ] fsharp-3.0.34/src/fsharp/FSharp.Core/Linq.fs0000775000175000017500000014641412260314606017466 0ustar chrischris// Copyright (c) Microsoft Corporation 2005-2008. // This sample code is provided "as is" without warranty of any kind. // We disclaim all warranties, either express or implied, including the // warranties of merchantability and fitness for a particular purpose. // #nowarn "1204" namespace Microsoft.FSharp.Linq #if FX_ATLEAST_LINQ open Microsoft.FSharp open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators module NullableOperators = open System let (?>=) (x : Nullable<'T>) (y: 'T) = x.HasValue && x.Value >= y let (?>) (x : Nullable<'T>) (y: 'T) = x.HasValue && x.Value > y let (?<=) (x : Nullable<'T>) (y: 'T) = x.HasValue && x.Value <= y let (?<) (x : Nullable<'T>) (y: 'T) = x.HasValue && x.Value < y let (?=) (x : Nullable<'T>) (y: 'T) = x.HasValue && x.Value = y let (?<>) (x : Nullable<'T>) (y: 'T) = not (x ?= y) let (>=?) (x : 'T) (y: Nullable<'T>) = y.HasValue && x >= y.Value let (>?) (x : 'T) (y: Nullable<'T>) = y.HasValue && x > y.Value let (<=?) (x : 'T) (y: Nullable<'T>) = y.HasValue && x <= y.Value let () = y.HasValue && x < y.Value let (=?) (x : 'T) (y: Nullable<'T>) = y.HasValue && x = y.Value let (<>?) (x : 'T) (y: Nullable<'T>) = not (x =? y) let (?>=?) (x : Nullable<'T>) (y: Nullable<'T>) = (x.HasValue && y.HasValue && x.Value >= y.Value) let (?>?) (x : Nullable<'T>) (y: Nullable<'T>) = (x.HasValue && y.HasValue && x.Value > y.Value) let (?<=?) (x : Nullable<'T>) (y: Nullable<'T>) = (x.HasValue && y.HasValue && x.Value <= y.Value) let (?) (y: Nullable<'T>) = (x.HasValue && y.HasValue && x.Value < y.Value) let (?=?) (x : Nullable<'T>) (y: Nullable<'T>) = (not x.HasValue && not y.HasValue) || (x.HasValue && y.HasValue && x.Value = y.Value) let (?<>?) (x : Nullable<'T>) (y: Nullable<'T>) = not (x ?=? y) let inline (?+) (x : Nullable<_>) y = if x.HasValue then Nullable(x.Value + y) else Nullable() let inline (+?) x (y: Nullable<_>) = if y.HasValue then Nullable(x + y.Value) else Nullable() let inline (?+?) (x : Nullable<_>) (y: Nullable<_>) = if x.HasValue && y.HasValue then Nullable(x.Value + y.Value) else Nullable() let inline (?-) (x : Nullable<_>) y = if x.HasValue then Nullable(x.Value - y) else Nullable() let inline (-?) x (y: Nullable<_>) = if y.HasValue then Nullable(x - y.Value) else Nullable() let inline (?-?) (x : Nullable<_>) (y: Nullable<_>) = if x.HasValue && y.HasValue then Nullable(x.Value - y.Value) else Nullable() let inline ( ?* ) (x : Nullable<_>) y = if x.HasValue then Nullable(x.Value * y) else Nullable() let inline ( *? ) x (y: Nullable<_>) = if y.HasValue then Nullable(x * y.Value) else Nullable() let inline ( ?*? ) (x : Nullable<_>) (y: Nullable<_>) = if x.HasValue && y.HasValue then Nullable(x.Value * y.Value) else Nullable() let inline ( ?% ) (x : Nullable<_>) y = if x.HasValue then Nullable(x.Value % y) else Nullable() let inline ( %? ) x (y: Nullable<_>) = if y.HasValue then Nullable(x % y.Value) else Nullable() let inline ( ?%? ) (x : Nullable<_>) (y: Nullable<_>) = if x.HasValue && y.HasValue then Nullable(x.Value % y.Value) else Nullable() let inline ( ?/ ) (x : Nullable<_>) y = if x.HasValue then Nullable(x.Value / y) else Nullable() let inline ( /? ) x (y: Nullable<_>) = if y.HasValue then Nullable(x / y.Value) else Nullable() let inline ( ?/? ) (x : Nullable<_>) (y: Nullable<_>) = if x.HasValue && y.HasValue then Nullable(x.Value / y.Value) else Nullable() [] [] module Nullable = open System [] let inline byte (x:Nullable< ^T >) = if x.HasValue then Nullable(byte x.Value) else Nullable() [] let inline sbyte (x:Nullable< ^T >) = if x.HasValue then Nullable(sbyte x.Value) else Nullable() [] let inline int16 (x:Nullable< ^T >) = if x.HasValue then Nullable(int16 x.Value) else Nullable() [] let inline uint16 (x:Nullable< ^T >) = if x.HasValue then Nullable(uint16 x.Value) else Nullable() [] let inline int (x:Nullable< ^T >) = if x.HasValue then Nullable(int x.Value) else Nullable() [] let inline enum (x:Nullable< int32 >) = if x.HasValue then Nullable(enum x.Value) else Nullable() [] let inline int32 (x:Nullable<_>) = if x.HasValue then Nullable(int32 x.Value) else Nullable() [] let inline uint32 (x:Nullable<_>) = if x.HasValue then Nullable(uint32 x.Value) else Nullable() [] let inline int64 (x:Nullable<_>) = if x.HasValue then Nullable(int64 x.Value) else Nullable() [] let inline uint64 (x:Nullable<_>) = if x.HasValue then Nullable(uint64 x.Value) else Nullable() [] let inline float32 (x:Nullable<_>) = if x.HasValue then Nullable(float32 x.Value) else Nullable() [] let inline float (x:Nullable<_>) = if x.HasValue then Nullable(float x.Value) else Nullable() [] let inline nativeint (x:Nullable<_>) = if x.HasValue then Nullable(nativeint x.Value) else Nullable() [] let inline unativeint (x:Nullable<_>) = if x.HasValue then Nullable(unativeint x.Value) else Nullable() [] let inline decimal (x:Nullable<_>) = if x.HasValue then Nullable(decimal x.Value) else Nullable() [] let inline char (x:Nullable<_>) = if x.HasValue then Nullable(char x.Value) else Nullable() namespace Microsoft.FSharp.Linq.RuntimeHelpers open System open System.Linq open System.Collections.Generic open System.Linq.Expressions open System.Reflection #if FX_NO_REFLECTION_EMIT #else open System.Reflection.Emit #endif open Microsoft.FSharp open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Linq open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Reflection open Microsoft.FSharp.Quotations open Microsoft.FSharp.Quotations.Patterns open Microsoft.FSharp.Quotations.DerivedPatterns module LeafExpressionConverter = // The following is recognized as a LINQ 'member intialization pattern' in a quotation. let MemberInitializationHelper (_x:'T) : 'T = raise (NotSupportedException "This function should not be called directly") // The following is recognized as a LINQ 'member intialization pattern' in a quotation. let NewAnonymousObjectHelper (_x:'T) : 'T = raise (NotSupportedException "This function should not be called directly") // This is used to mark expressions inserted to satisfy C#'s design where, inside C#-compiler generated // LINQ expressions, they pass an argument or type T to an argument expecting Expression. let ImplicitExpressionConversionHelper (_x:'T) : Expression<'T> = raise (NotSupportedException "This function should not be called directly") [] type ConvEnv = { varEnv : Map } let asExpr x = (x :> Expression) let bindingFlags = BindingFlags.Public ||| BindingFlags.NonPublic let instanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let isNamedType(typ:Type) = not (typ.IsArray || typ.IsByRef || typ.IsPointer) let equivHeadTypes (ty1:Type) (ty2:Type) = isNamedType(ty1) && if ty1.IsGenericType then ty2.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(ty2.GetGenericTypeDefinition()) else ty1.Equals(ty2) let isFunctionType typ = equivHeadTypes typ (typeof<(int -> int)>) let getFunctionType typ = if not (isFunctionType typ) then invalidArg "typ" "cannot convert recursion except for function types" let tyargs = typ.GetGenericArguments() tyargs.[0], tyargs.[1] let GetGenericMethodDefinition (methInfo:MethodInfo) = if methInfo.IsGenericMethod then methInfo.GetGenericMethodDefinition() else methInfo let StringConcat = methodhandleof (fun (x:obj, y:obj) -> String.Concat (x,y)) |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo let SubstHelper<'T> (q:Expr, x:Var[], y:obj[]) : Expr<'T> = let d = Map.ofArray (Array.zip x y) q.Substitute(fun v -> v |> d.TryFind |> Option.map (fun x -> Expr.Value(x, v.Type))) |> Expr.Cast let showAll = BindingFlags.Public ||| BindingFlags.NonPublic let NullableConstructor = typedefof>.GetConstructors().[0] let (|SpecificCallToMethod|_|) (mhandle: System.RuntimeMethodHandle) = let minfo = (System.Reflection.MethodInfo.GetMethodFromHandle mhandle) :?> MethodInfo let isg1 = minfo.IsGenericMethod let gmd = if isg1 then minfo.GetGenericMethodDefinition() else null (fun tm -> match tm with | Call(obj,minfo2,args) when ( #if FX_NO_REFLECTION_METADATA_TOKENS #else minfo.MetadataToken = minfo2.MetadataToken && #endif if isg1 then minfo2.IsGenericMethod && gmd = minfo2.GetGenericMethodDefinition() else minfo = minfo2 ) -> Some(obj,(minfo2.GetGenericArguments() |> Array.toList),args) | _ -> None) let (|GenericEqualityQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> LanguagePrimitives.GenericEquality x y)) let (|EqualsQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x = y)) let (|GreaterQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x > y)) let (|GreaterEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x >= y)) let (|LessQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x < y)) let (|LessEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x <= y)) let (|NotEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x <> y)) let (|NullableEqualsQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?= ) x y)) let (|NullableNotEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?<> ) x y)) let (|NullableGreaterQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?> ) x y)) let (|NullableGreaterEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?>= ) x y)) let (|NullableLessQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?< ) x y)) let (|NullableLessEqQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?<= ) x y)) let (|NullableEqualsNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?=? ) x y)) let (|NullableNotEqNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?<>? ) x y)) let (|NullableGreaterNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?>? ) x y)) let (|NullableGreaterEqNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?>=? ) x y)) let (|NullableLessNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ? NullableOperators.( ?<=? ) x y)) let (|EqualsNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( =? ) x y)) let (|NotEqNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( <>? ) x y)) let (|GreaterNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( >? ) x y)) let (|GreaterEqNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( >=? ) x y)) let (|LessNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( NullableOperators.( <=? ) x y)) let (|MakeDecimalQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (a1,a2,a3,a4,a5) -> LanguagePrimitives.IntrinsicFunctions.MakeDecimal a1 a2 a3 a4 a5)) let (|NullablePlusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?+ ) x y)) let (|NullablePlusNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?+? ) x y)) let (|PlusNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( +? ) x y)) let (|NullableMinusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?- ) x y)) let (|NullableMinusNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?-? ) x y)) let (|MinusNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( -? ) x y)) let (|NullableMultiplyQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?* ) x y)) let (|NullableMultiplyNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?*? ) x y)) let (|MultiplyNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( *? ) x y)) let (|NullableDivideQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?/ ) x y)) let (|NullableDivideNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?/? ) x y)) let (|DivideNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( /? ) x y)) let (|NullableModuloQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?% ) x y)) let (|NullableModuloNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( ?%? ) x y)) let (|ModuloNullableQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> NullableOperators.( %? ) x y)) let (|NotQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> not x)) let (|NegQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x:int) -> -x)) let (|PlusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x + y)) let (|DivideQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x / y)) let (|MinusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x - y)) let (|MultiplyQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x * y)) let (|ModuloQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x % y)) let (|ShiftLeftQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x <<< y)) let (|ShiftRightQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x >>> y)) let (|BitwiseAndQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x &&& y)) let (|BitwiseOrQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x ||| y)) let (|BitwiseXorQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> x ^^^ y)) let (|BitwiseNotQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> ~~~ x)) let (|CheckedNeg|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.( ~-) x)) let (|CheckedPlusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> Checked.( + ) x y)) let (|CheckedMinusQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> Checked.( - ) x y)) let (|CheckedMultiplyQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> Checked.( * ) x y)) let (|ConvCharQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> char x)) let (|ConvDecimalQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> decimal x)) let (|ConvFloatQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> float x)) let (|ConvFloat32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> float32 x)) let (|ConvSByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> sbyte x)) let (|ConvInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> int16 x)) let (|ConvInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> int32 x)) let (|ConvIntQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> int x)) let (|ConvInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> int64 x)) let (|ConvByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> byte x)) let (|ConvUInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> uint16 x)) let (|ConvUInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> uint32 x)) let (|ConvUInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> uint64 x)) let (|ConvNullableCharQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.char x)) let (|ConvNullableDecimalQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.decimal x)) let (|ConvNullableFloatQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.float x)) let (|ConvNullableFloat32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.float32 x)) let (|ConvNullableSByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.sbyte x)) let (|ConvNullableInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.int16 x)) let (|ConvNullableInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.int32 x)) let (|ConvNullableIntQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.int x)) let (|ConvNullableInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.int64 x)) let (|ConvNullableByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.byte x)) let (|ConvNullableUInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.uint16 x)) let (|ConvNullableUInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.uint32 x)) let (|ConvNullableUInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.uint64 x)) // LINQ expressions can't do native integer operations, so we don't convert these //let (|ConvNullableIntPtrQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.nativeint x)) //let (|ConvNullableUIntPtrQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Nullable.unativeint x)) let (|UnboxGeneric|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> LanguagePrimitives.IntrinsicFunctions.UnboxGeneric x)) let (|TypeTestGeneric|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric x)) let (|CheckedConvCharQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.char x)) let (|CheckedConvSByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.sbyte x)) let (|CheckedConvInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.int16 x)) let (|CheckedConvInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.int32 x)) let (|CheckedConvInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.int64 x)) let (|CheckedConvByteQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.byte x)) let (|CheckedConvUInt16Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.uint16 x)) let (|CheckedConvUInt32Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.uint32 x)) let (|CheckedConvUInt64Q|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> Checked.uint64 x)) let (|ImplicitExpressionConversionHelperQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> ImplicitExpressionConversionHelper x)) let (|MemberInitializationHelperQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> MemberInitializationHelper x)) let (|NewAnonymousObjectHelperQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun x -> NewAnonymousObjectHelper x)) let (|ArrayLookupQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (x,y) -> LanguagePrimitives.IntrinsicFunctions.GetArray x y)) //let (|ArrayAssignQ|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun -> LanguagePrimitives.IntrinsicFunctions.SetArray : int[] -> int -> int -> unit)) //let (|ArrayTypeQ|_|) (ty:System.Type) = if ty.IsArray && ty.GetArrayRank() = 1 then Some(ty.GetElementType()) else None let substHelperMeth = methodhandleof (fun (x:Expr,y:Var[],z:obj[]) -> SubstHelper (x,y,z)) |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo let (-->) ty1 ty2 = Reflection.FSharpType.MakeFunctionType(ty1, ty2) /// Extract member initialization expression stored in 'MemberInitializationHelper' (by QueryExtensions.fs) let rec (|Sequentials|) = function | Patterns.Sequential(a,Sequentials (b,c)) -> (a :: b, c) | a -> [], a let (|MemberInitializationQ|_|) = function | MemberInitializationHelperQ (None, _, [ Sequentials (propSets, init) ]) -> Some(init, propSets) | _ -> None /// Extract construction of anonymous object noted by use of in 'NewAnonymousObjectHelper' (by QueryExtensions.fs) let (|NewAnonymousObjectQ|_|) = function | NewAnonymousObjectHelperQ (None, _, [ Patterns.NewObject(ctor,args) ]) -> Some(ctor,args) | _ -> None /// Extract nullable constructions let (|NullableConstruction|_|) = function | NewObject(c,[arg]) when equivHeadTypes c.DeclaringType (typeof>) -> Some arg | _ -> None /// Convert F# quotations to LINQ expression trees. /// A more polished LINQ-Quotation translator will be published /// concert with later versions of LINQ. let rec ConvExprToLinqInContext (env:ConvEnv) (inp:Expr) = //printf "ConvExprToLinqInContext : %A\n" inp match inp with // Generic cases | Patterns.Var v -> try Map.find v env.varEnv with | :? KeyNotFoundException -> invalidOp ("The variable '"+ v.Name + "' was not found in the translation context'") #if WORKAROUND_FSHARP_2_0_BUG | :? KeyNotFoundException when v.Name = "this" -> let message = "Encountered unxpected variable named 'this'. This might happen because " + "quotations used in queries can’t contain references to let-bound values in classes unless the quotation literal occurs in an instance member. " + "If this is the case, workaround by replacing references to implicit fields with references to " + "local variables, e.g. rewrite\r\n" + " type Foo() =\r\n" + " let x = 1\r\n" + " let bar() = (methodhandleof (fun -> x))\r\n" + "as: \r\n" + " type Foo() =\r\n" + " let x = 1\r\n" + " let bar() = let x = x in (methodhandleof (fun -> x))\r\n"; NotSupportedException(message) |> raise #endif | DerivedPatterns.AndAlso(x1, x2) -> Expression.AndAlso(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | DerivedPatterns.OrElse(x1, x2) -> Expression.OrElse(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | Patterns.Value(x, ty) -> Expression.Constant(x, ty) |> asExpr | UnboxGeneric(_, [toTy], [x]) | Patterns.Coerce(x, toTy) -> let converted = ConvExprToLinqInContext env x // Linq to Entities doesn't like 'TypeAs' expressions (coercion from // IQueryable to IEnumerable) that are generated e.g. in: // // seq { for p in dx.Products do // for c in dx.Categories do yield p } // // However, the expression tree has 'C# semantics' so we don't need // explicit TypeAs if the coercion is statically type-safe. The rules are subtle, // so we don't generate TypeAs (at least) in a simple case when both are // reference types and the assignment is statically safe. // (see also ``Join using nested 'for' with 'String.Concat' call`` test in v40 build) if not toTy.IsValueType && not x.Type.IsValueType && toTy.IsAssignableFrom(x.Type) then converted else Expression.TypeAs(ConvExprToLinqInContext env x, toTy) |> asExpr | Patterns.TypeTest(x, toTy) -> Expression.TypeIs(ConvExprToLinqInContext env x, toTy) |> asExpr | TypeTestGeneric(_, [toTy], [x]) -> Expression.TypeIs(ConvExprToLinqInContext env x, toTy) |> asExpr // Expr.*Get | Patterns.FieldGet(objOpt, fieldInfo) -> Expression.Field(ConvObjArg env objOpt None, fieldInfo) |> asExpr | Patterns.TupleGet(arg, n) -> let argP = ConvExprToLinqInContext env arg let rec build ty argP n = match Reflection.FSharpValue.PreComputeTuplePropertyInfo(ty, n) with | propInfo, None -> Expression.Property(argP, propInfo) |> asExpr | propInfo, Some(nestedTy, n2) -> build nestedTy (Expression.Property(argP, propInfo) |> asExpr) n2 build arg.Type argP n | Patterns.PropertyGet(objOpt, propInfo, args) -> let coerceTo = if objOpt.IsSome && FSharpType.IsUnion propInfo.DeclaringType && FSharpType.IsUnion propInfo.DeclaringType.BaseType then Some propInfo.DeclaringType else None match args with | [] -> Expression.Property(ConvObjArg env objOpt coerceTo, propInfo) |> asExpr | _ -> let argsP = ConvExprsToLinq env args Expression.Call(ConvObjArg env objOpt coerceTo, propInfo.GetGetMethod(true), argsP) |> asExpr // Expr.(Call, Application) | Patterns.Call(objOpt, minfo, args) -> match inp with // Special cases for this translation // Object initialization generated by LinqQueries | MemberInitializationQ(ctor, propInfos) -> let bindings = [| for p in propInfos -> match p with | Patterns.PropertySet(_, pinfo, args, assign) -> if args <> [] then raise (NotSupportedException "Parameterized properties not supported in member initialization.") Expression.Bind(pinfo, ConvExprToLinqInContext env assign) :> MemberBinding | _ -> raise (NotSupportedException "Expected PropertySet in member initialization") |] match ConvExprToLinqInContext env ctor with | :? NewExpression as converted -> Expression.MemberInit(converted, bindings) |> asExpr | _ -> raise (NotSupportedException "Expected Constructor call in member initialization") // Anonymous type initialization generated by LinqQueries | NewAnonymousObjectQ(ctor, args) -> let argsR = ConvExprsToLinq env args let props = ctor.DeclaringType.GetProperties() Expression.New(ctor, argsR, [| for p in props -> (p :> MemberInfo) |]) |> asExpr // Do the same thing as C# compiler for string addition | PlusQ (_, [ty1;ty2;ty3],[x1;x2]) when (ty1 = typeof) && (ty2 = typeof) && (ty3 = typeof) -> Expression.Add(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2, StringConcat) |> asExpr | GenericEqualityQ (_, _,[x1;x2]) | EqualsQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Equal | NotEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.NotEqual | GreaterQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.GreaterThan | GreaterEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.GreaterThanOrEqual | LessQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.LessThan | LessEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.LessThanOrEqual | NotQ (_, _, [x1]) -> Expression.Not(ConvExprToLinqInContext env x1) |> asExpr | NullableEqualsQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Equal | NullableNotEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.NotEqual | NullableGreaterQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.GreaterThan | NullableGreaterEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.GreaterThanOrEqual | NullableLessQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.LessThan | NullableLessEqQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.LessThanOrEqual | EqualsNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Equal | NotEqNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.NotEqual | GreaterNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.GreaterThan | GreaterEqNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.GreaterThanOrEqual | LessNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.LessThan | LessEqNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.LessThanOrEqual | NullableEqualsNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Equal | NullableNotEqNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.NotEqual | NullableGreaterNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.GreaterThan | NullableGreaterEqNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.GreaterThanOrEqual | NullableLessNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.LessThan | NullableLessEqNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.LessThanOrEqual // Detect the F# quotation encoding of decimal literals | MakeDecimalQ (_, _, [Int32 lo; Int32 med; Int32 hi; Bool isNegative; Byte scale]) -> Expression.Constant(new System.Decimal(lo,med,hi,isNegative,scale)) |> asExpr | NegQ (_, _, [x1]) -> Expression.Negate(ConvExprToLinqInContext env x1) |> asExpr | PlusQ (_, _,[x1;x2]) -> Expression.Add(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | DivideQ (_, _,[x1;x2]) -> Expression.Divide (ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | MinusQ (_, _,[x1;x2]) -> Expression.Subtract(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | MultiplyQ (_, _,[x1;x2]) -> Expression.Multiply(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | ModuloQ (_, _,[x1;x2]) -> Expression.Modulo (ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | ShiftLeftQ (_, _,[x1;x2]) -> Expression.LeftShift(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | ShiftRightQ (_, _,[x1;x2]) -> Expression.RightShift(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | BitwiseAndQ (_, _,[x1;x2]) -> Expression.And(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | BitwiseOrQ (_, _,[x1;x2]) -> Expression.Or(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | BitwiseXorQ (_, _,[x1;x2]) -> Expression.ExclusiveOr(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | BitwiseNotQ (_, _, [x1]) -> Expression.Not(ConvExprToLinqInContext env x1) |> asExpr | CheckedNeg (_, _, [x1]) -> Expression.NegateChecked(ConvExprToLinqInContext env x1) |> asExpr | CheckedPlusQ (_, _,[x1;x2]) -> Expression.AddChecked(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | CheckedMinusQ (_, _,[x1;x2]) -> Expression.SubtractChecked(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | CheckedMultiplyQ (_, _,[x1;x2]) -> Expression.MultiplyChecked(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr | NullablePlusQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Add | PlusNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Add | NullablePlusNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Add | NullableMinusQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Subtract | MinusNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Subtract | NullableMinusNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Subtract | NullableMultiplyQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Multiply | MultiplyNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Multiply | NullableMultiplyNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Multiply | NullableDivideQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Divide | DivideNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Divide | NullableDivideNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Divide | NullableModuloQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 true Expression.Modulo | ModuloNullableQ (_, _,[x1;x2]) -> transBinOp env true x1 x2 false Expression.Modulo | NullableModuloNullableQ (_, _,[x1;x2]) -> transBinOp env false x1 x2 false Expression.Modulo | ConvNullableCharQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableDecimalQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableFloatQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableFloat32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableSByteQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableInt16Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableInt32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableIntQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableInt64Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableByteQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableUInt16Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableUInt32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvNullableUInt64Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr // LINQ expressions can't do native integer operations, so we don't convert these //| ConvNullableIntPtrQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr //| ConvNullableUIntPtrQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof>) |> asExpr | ConvCharQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvDecimalQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvFloatQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvFloat32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvSByteQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvInt16Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvInt32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvIntQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvInt64Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvByteQ (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvUInt16Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvUInt32Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | ConvUInt64Q (_, _, [x1]) -> Expression.Convert(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvCharQ (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvSByteQ (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvInt16Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvInt32Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvInt64Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvByteQ (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvUInt16Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvUInt32Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | CheckedConvUInt64Q (_, _, [x1]) -> Expression.ConvertChecked(ConvExprToLinqInContext env x1, typeof) |> asExpr | ArrayLookupQ (_, [_;_;_],[x1;x2]) -> Expression.ArrayIndex(ConvExprToLinqInContext env x1, ConvExprToLinqInContext env x2) |> asExpr // Throw away markers inserted to satisfy C#'s design where they pass an argument // or type T to an argument expecting Expression. | ImplicitExpressionConversionHelperQ (_, [_], [x1]) -> ConvExprToLinqInContext env x1 | _ -> let argsP = ConvExprsToLinq env args Expression.Call(ConvObjArg env objOpt None, minfo, argsP) |> asExpr #if NO_CURRIED_FUNCTION_OPTIMIZATIONS #else // f x1 x2 x3 x4 --> InvokeFast4 | Patterns.Application(Patterns.Application(Patterns.Application(Patterns.Application(f, arg1), arg2), arg3), arg4) -> // TODO: amortize this computation based on f.Type let meth = let domainTy1, rangeTy = getFunctionType f.Type let domainTy2, rangeTy = getFunctionType rangeTy let domainTy3, rangeTy = getFunctionType rangeTy let domainTy4, rangeTy = getFunctionType rangeTy let ty = domainTy1 --> domainTy2 (ty.GetMethods() |> Array.find (fun minfo -> minfo.Name = "InvokeFast" && minfo.GetParameters().Length = 5)).MakeGenericMethod [| domainTy3; domainTy4; rangeTy |] let argsP = ConvExprsToLinq env [f; arg1;arg2;arg3; arg4] Expression.Call((null:Expression), meth, argsP) |> asExpr // f x1 x2 x3 --> InvokeFast3 | Patterns.Application(Patterns.Application(Patterns.Application(f, arg1), arg2), arg3) -> // TODO: amortize this computation based on f.Type let meth = let domainTy1, rangeTy = getFunctionType f.Type let domainTy2, rangeTy = getFunctionType rangeTy let domainTy3, rangeTy = getFunctionType rangeTy let ty = domainTy1 --> domainTy2 (ty.GetMethods() |> Array.find (fun minfo -> minfo.Name = "InvokeFast" && minfo.GetParameters().Length = 4)).MakeGenericMethod [| domainTy3; rangeTy |] let argsP = ConvExprsToLinq env [f; arg1;arg2;arg3] Expression.Call((null:Expression), meth, argsP) |> asExpr // f x1 x2 --> InvokeFast2 | Patterns.Application(Patterns.Application(f, arg1), arg2) -> // TODO: amortize this computation based on f.Type let meth = let domainTy1, rangeTy = getFunctionType f.Type let domainTy2, rangeTy = getFunctionType rangeTy let ty = domainTy1 --> domainTy2 (ty.GetMethods() |> Array.find (fun minfo -> minfo.Name = "InvokeFast" && minfo.GetParameters().Length = 3)).MakeGenericMethod [| rangeTy |] let argsP = ConvExprsToLinq env [f; arg1;arg2] Expression.Call((null:Expression), meth, argsP) |> asExpr #endif // f x1 --> Invoke | Patterns.Application(f, arg) -> let fP = ConvExprToLinqInContext env f let argP = ConvExprToLinqInContext env arg // TODO: amortize this computation based on f.Type let meth = f.Type.GetMethod("Invoke") Expression.Call(fP, meth, [| argP |]) |> asExpr // Expr.New* | Patterns.NewRecord(recdTy, args) -> let ctorInfo = Reflection.FSharpValue.PreComputeRecordConstructorInfo(recdTy, showAll) Expression.New(ctorInfo, ConvExprsToLinq env args) |> asExpr | Patterns.NewArray(ty, args) -> Expression.NewArrayInit(ty, ConvExprsToLinq env args) |> asExpr | Patterns.DefaultValue ty -> Expression.New ty |> asExpr | Patterns.NewUnionCase(unionCaseInfo, args) -> let methInfo = Reflection.FSharpValue.PreComputeUnionConstructorInfo(unionCaseInfo, showAll) let argsR = ConvExprsToLinq env args Expression.Call((null:Expression), methInfo, argsR) |> asExpr #if NO_PATTERN_MATCHING_IN_INPUT_LANGUAGE #else | Patterns.UnionCaseTest(e, unionCaseInfo) -> let methInfo = Reflection.FSharpValue.PreComputeUnionTagMemberInfo(unionCaseInfo.DeclaringType, showAll) let obj = ConvExprToLinqInContext env e let tagE = match methInfo with | :? PropertyInfo as p -> Expression.Property(obj, p) |> asExpr | :? MethodInfo as m -> Expression.Call((null:Expression), m,[| obj |]) |> asExpr | _ -> failwith "unreachable case" Expression.Equal(tagE, Expression.Constant(unionCaseInfo.Tag)) |> asExpr #endif | (Patterns.NewObject(ctorInfo, args) as x) -> match x with // LINQ providers prefer C# "Nullable x" to be "Convert x", since that's what C# uses // to construct nullable values. | NullableConstruction arg -> Expression.Convert(ConvExprToLinqInContext env arg, x.Type) |> asExpr | _ -> Expression.New(ctorInfo, ConvExprsToLinq env args) |> asExpr | Patterns.NewDelegate(dty, vs, b) -> let vsP = List.map ConvVarToLinq vs let env = {env with varEnv = List.foldBack2 (fun (v:Var) vP -> Map.add v (vP |> asExpr)) vs vsP env.varEnv } let bodyP = ConvExprToLinqInContext env b Expression.Lambda(dty, bodyP, vsP) |> asExpr | Patterns.NewTuple args -> let tupTy = args |> List.map (fun arg -> arg.Type) |> Array.ofList |> Reflection.FSharpType.MakeTupleType let argsP = ConvExprsToLinq env args let rec build ty (argsP: Expression[]) = match Reflection.FSharpValue.PreComputeTupleConstructorInfo ty with | ctorInfo, None -> Expression.New(ctorInfo, argsP) |> asExpr | ctorInfo, Some(nestedTy) -> let n = ctorInfo.GetParameters().Length - 1 Expression.New(ctorInfo, Array.append argsP.[0..n-1] [| build nestedTy argsP.[n..] |]) |> asExpr build tupTy argsP | Patterns.IfThenElse(g, t, e) -> Expression.Condition(ConvExprToLinqInContext env g, ConvExprToLinqInContext env t, ConvExprToLinqInContext env e) |> asExpr | Patterns.Quote x -> let fvs = x.GetFreeVars() Expression.Call(substHelperMeth.MakeGenericMethod [| x.Type |], [| (Expression.Constant x) |> asExpr; (Expression.NewArrayInit(typeof, [| for fv in fvs -> Expression.Constant fv |> asExpr |]) |> asExpr); (Expression.NewArrayInit(typeof, [| for fv in fvs -> Expression.Convert(env.varEnv.[fv], typeof) |> asExpr |]) |> asExpr) |]) |> asExpr | Patterns.Let (v, e, b) -> let vP = ConvVarToLinq v let envinner = { env with varEnv = Map.add v (vP |> asExpr) env.varEnv } let bodyP = ConvExprToLinqInContext envinner b let eP = ConvExprToLinqInContext env e let ty = Expression.GetFuncType [| v.Type; b.Type |] let lam = Expression.Lambda(ty, bodyP,[| vP |]) |> asExpr Expression.Call(lam, ty.GetMethod("Invoke", instanceBindingFlags),[| eP |]) |> asExpr | Patterns.Lambda(v, body) -> let vP = ConvVarToLinq v let env = { env with varEnv = Map.add v (vP |> asExpr) env.varEnv } #if FX_NO_CONVERTER let tyargs = [| v.Type; body.Type |] let bodyP = ConvExprToLinqInContext env body let convType = typedefof>.MakeGenericType tyargs #else let tyargs = [| v.Type; body.Type |] let bodyP = ConvExprToLinqInContext env body let convType = typedefof>.MakeGenericType tyargs #endif let convDelegate = Expression.Lambda(convType, bodyP, [| vP |]) |> asExpr Expression.Call(typeof,"ToFSharpFunc", tyargs,[| convDelegate |]) |> asExpr | _ -> raise (new NotSupportedException(Printf.sprintf "Could not convert the following F# Quotation to a LINQ Expression Tree\n--------\n%A\n-------------\n" inp)) and transBinOp env addConvertLeft x1 x2 addConvertRight (exprErasedConstructor : _ * _ -> _) = let e1 = ConvExprToLinqInContext env x1 let e2 = ConvExprToLinqInContext env x2 let e1 = if addConvertLeft then Expression.Convert(e1, typedefof>.MakeGenericType [| e1.Type |]) |> asExpr else e1 let e2 = if addConvertRight then Expression.Convert(e2, typedefof>.MakeGenericType [| e2.Type |]) |> asExpr else e2 exprErasedConstructor(e1, e2) |> asExpr and ConvObjArg env objOpt coerceTo : Expression = match objOpt with | Some obj -> let expr = ConvExprToLinqInContext env obj match coerceTo with | None -> expr | Some ty -> Expression.TypeAs(expr, ty) :> Expression | None -> null and ConvExprsToLinq env es : Expression[] = es |> List.map (ConvExprToLinqInContext env) |> Array.ofList and ConvVarToLinq (v: Var) = //printf "** Expression .Parameter(%a, %a)\n" output_any ty output_any nm; Expression.Parameter(v.Type, v.Name) let ConvExprToLinq (e: Expr) = ConvExprToLinqInContext { varEnv = Map.empty } e let QuotationToExpression (e: Microsoft.FSharp.Quotations.Expr) = ConvExprToLinq e let QuotationToLambdaExpression (e: Microsoft.FSharp.Quotations.Expr<'T>) = (ConvExprToLinq e) :?> Expression<'T> // This contorted compilation is used because LINQ's "Compile" is only allowed on lambda expressions, and LINQ // provides no other way to evaluate the expression. // // REVIEW: It is possible it is just better to interpret the expression in many common cases, e.g. property-gets, values etc. let EvaluateQuotation (e: Microsoft.FSharp.Quotations.Expr) : obj = #if FX_NO_QUOTATIONS_COMPILE raise (new NotSupportedException()) #else match e with | Value (obj,_) -> obj | _ -> let ty = e.Type let e = Expr.NewDelegate(Expression.GetFuncType([|typeof; ty |]), [new Var("unit", typeof)], e) let linqExpr = (ConvExprToLinq e:?> LambdaExpression) let d = linqExpr.Compile() try d.DynamicInvoke [| box () |] with :? System.Reflection.TargetInvocationException as exn -> raise exn.InnerException #endif #endif fsharp-3.0.34/src/fsharp/FSharp.Core/local.fs0000775000175000017500000006015112260314606017646 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.ErrorStrings open Microsoft.FSharp.Collections open Microsoft.FSharp.Core.Operators open System.Diagnostics.CodeAnalysis open System.Collections.Generic open System.Runtime.InteropServices #if FX_NO_ICLONEABLE open Microsoft.FSharp.Core.ICloneableExtensions #else #endif module internal List = let arrayZeroCreate (n:int) = (# "newarr !0" type ('T) n : 'T array #) [] let nonempty x = match x with [] -> false | _ -> true let rec iter f x = match x with [] -> () | (h::t) -> f h; iter f t // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let inline setFreshConsTail cons t = cons.(::).1 <- t let inline freshConsNoTail h = h :: (# "ldnull" : 'T list #) let rec mapToFreshConsTail cons f x = match x with | [] -> setFreshConsTail cons []; | (h::t) -> let cons2 = freshConsNoTail (f h) setFreshConsTail cons cons2; mapToFreshConsTail cons2 f t let map f x = match x with | [] -> [] | [h] -> [f h] | (h::t) -> let cons = freshConsNoTail (f h) mapToFreshConsTail cons f t cons let rec mapiToFreshConsTail cons (f:OptimizedClosures.FSharpFunc<_,_,_>) x i = match x with | [] -> setFreshConsTail cons []; | (h::t) -> let cons2 = freshConsNoTail (f.Invoke(i,h)) setFreshConsTail cons cons2; mapiToFreshConsTail cons2 f t (i+1) let mapi f x = match x with | [] -> [] | [h] -> [f 0 h] | (h::t) -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let cons = freshConsNoTail (f.Invoke(0,h)) mapiToFreshConsTail cons f t 1 cons let rec map2ToFreshConsTail cons (f:OptimizedClosures.FSharpFunc<_,_,_>) xs1 xs2 = match xs1,xs2 with | [],[] -> setFreshConsTail cons []; | (h1::t1),(h2::t2) -> let cons2 = freshConsNoTail (f.Invoke(h1,h2)) setFreshConsTail cons cons2; map2ToFreshConsTail cons2 f t1 t2 | _ -> invalidArg "xs2" (SR.GetString(SR.listsHadDifferentLengths)) let map2 f xs1 xs2 = match xs1,xs2 with | [],[] -> [] | (h1::t1),(h2::t2) -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let cons = freshConsNoTail (f.Invoke(h1,h2)) map2ToFreshConsTail cons f t1 t2 cons | _ -> invalidArg "xs2" (SR.GetString(SR.listsHadDifferentLengths)) let rec forall f xs1 = match xs1 with | [] -> true | (h1::t1) -> f h1 && forall f t1 let rec exists f xs1 = match xs1 with | [] -> false | (h1::t1) -> f h1 || exists f t1 // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec revAcc xs acc = match xs with | [] -> acc | h::t -> revAcc t (h::acc) let rev xs = match xs with | [] -> xs | [_] -> xs | h1::h2::t -> revAcc t [h2;h1] // return the last cons it the chain let rec appendToFreshConsTail cons xs = match xs with | [] -> setFreshConsTail cons xs // note, xs = [] cons | h::t -> let cons2 = freshConsNoTail h setFreshConsTail cons cons2 appendToFreshConsTail cons2 t // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec collectToFreshConsTail (f:'T -> 'U list) (list:'T list) cons = match list with | [] -> setFreshConsTail cons [] | h::t -> collectToFreshConsTail f t (appendToFreshConsTail cons (f h)) let rec collect (f:'T -> 'U list) (list:'T list) = match list with | [] -> [] | [h] -> f h | _ -> let cons = freshConsNoTail (Unchecked.defaultof<'U>) collectToFreshConsTail f list cons cons.Tail // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec filterToFreshConsTail cons f l = match l with | [] -> setFreshConsTail cons l; // note, l = nil | h::t -> if f h then let cons2 = freshConsNoTail h setFreshConsTail cons cons2; filterToFreshConsTail cons2 f t else filterToFreshConsTail cons f t let rec filter f l = match l with | [] -> l | h :: ([] as nil) -> if f h then l else nil | h::t -> if f h then let cons = freshConsNoTail h filterToFreshConsTail cons f t; cons else filter f t let iteri f x = let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let rec loop n x = match x with [] -> () | (h::t) -> f.Invoke(n,h); loop (n+1) t loop 0 x // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec concatToFreshConsTail cons h1 l = match l with | [] -> setFreshConsTail cons h1 | h2::t -> concatToFreshConsTail (appendToFreshConsTail cons h1) h2 t // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec concatToEmpty l = match l with | [] -> [] | []::t -> concatToEmpty t | (h::t1)::tt2 -> let res = freshConsNoTail h concatToFreshConsTail res t1 tt2; res let seqToList (e : IEnumerable<'T>) = match e with | :? list<'T> as l -> l | _ -> use ie = e.GetEnumerator() let mutable res = [] while ie.MoveNext() do res <- ie.Current :: res rev res let concat (l : seq<_>) = match seqToList l with | [] -> [] | [h] -> h | [h1;h2] -> h1 @ h2 | l -> concatToEmpty l let rec initToFreshConsTail cons i n f = if i < n then let cons2 = freshConsNoTail (f i) setFreshConsTail cons cons2; initToFreshConsTail cons2 (i+1) n f else setFreshConsTail cons [] let init count f = if count < 0 then invalidArg "count" InputMustBeNonNegativeString if count = 0 then [] else let res = freshConsNoTail (f 0) initToFreshConsTail res 1 count f res // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec partitionToFreshConsTails consL consR p l = match l with | [] -> setFreshConsTail consL l; // note, l = nil setFreshConsTail consR l; // note, l = nil | h::t -> let cons' = freshConsNoTail h if p h then setFreshConsTail consL cons'; partitionToFreshConsTails cons' consR p t else setFreshConsTail consR cons'; partitionToFreshConsTails consL cons' p t let rec partitionToFreshConsTailLeft consL p l = match l with | [] -> setFreshConsTail consL l; // note, l = nil l // note, l = nil | h::t -> let cons' = freshConsNoTail h if p h then setFreshConsTail consL cons'; partitionToFreshConsTailLeft cons' p t else partitionToFreshConsTails consL cons' p t; cons' let rec partitionToFreshConsTailRight consR p l = match l with | [] -> setFreshConsTail consR l; // note, l = nil l // note, l = nil | h::t -> let cons' = freshConsNoTail h if p h then partitionToFreshConsTails cons' consR p t; cons' else setFreshConsTail consR cons'; partitionToFreshConsTailRight cons' p t let partition p l = match l with | [] -> l,l | h :: ([] as nil) -> if p h then l,nil else nil,l | h::t -> let cons = freshConsNoTail h if p h then cons, (partitionToFreshConsTailLeft cons p t) else (partitionToFreshConsTailRight cons p t), cons // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec unzipToFreshConsTail cons1a cons1b x = match x with | [] -> setFreshConsTail cons1a [] setFreshConsTail cons1b [] | ((h1,h2)::t) -> let cons2a = freshConsNoTail h1 let cons2b = freshConsNoTail h2 setFreshConsTail cons1a cons2a; setFreshConsTail cons1b cons2b; unzipToFreshConsTail cons2a cons2b t // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let unzip x = match x with | [] -> [],[] | ((h1,h2)::t) -> let res1a = freshConsNoTail h1 let res1b = freshConsNoTail h2 unzipToFreshConsTail res1a res1b t; res1a,res1b // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec unzip3ToFreshConsTail cons1a cons1b cons1c x = match x with | [] -> setFreshConsTail cons1a []; setFreshConsTail cons1b []; setFreshConsTail cons1c []; | ((h1,h2,h3)::t) -> let cons2a = freshConsNoTail h1 let cons2b = freshConsNoTail h2 let cons2c = freshConsNoTail h3 setFreshConsTail cons1a cons2a; setFreshConsTail cons1b cons2b; setFreshConsTail cons1c cons2c; unzip3ToFreshConsTail cons2a cons2b cons2c t // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let unzip3 x = match x with | [] -> [],[],[] | ((h1,h2,h3)::t) -> let res1a = freshConsNoTail h1 let res1b = freshConsNoTail h2 let res1c = freshConsNoTail h3 unzip3ToFreshConsTail res1a res1b res1c t; res1a,res1b,res1c // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec zipToFreshConsTail cons xs1 xs2 = match xs1,xs2 with | [],[] -> setFreshConsTail cons [] | (h1::t1),(h2::t2) -> let cons2 = freshConsNoTail (h1,h2) setFreshConsTail cons cons2; zipToFreshConsTail cons2 t1 t2 | _ -> invalidArg "xs2" (SR.GetString(SR.listsHadDifferentLengths)) // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let zip xs1 xs2 = match xs1,xs2 with | [],[] -> [] | (h1::t1),(h2::t2) -> let res = freshConsNoTail (h1,h2) zipToFreshConsTail res t1 t2; res | _ -> invalidArg "xs2" (SR.GetString(SR.listsHadDifferentLengths)) // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec zip3ToFreshConsTail cons xs1 xs2 xs3 = match xs1,xs2,xs3 with | [],[],[] -> setFreshConsTail cons []; | (h1::t1),(h2::t2),(h3::t3) -> let cons2 = freshConsNoTail (h1,h2,h3) setFreshConsTail cons cons2; zip3ToFreshConsTail cons2 t1 t2 t3 | _ -> invalidArg "xs1" (SR.GetString(SR.listsHadDifferentLengths)) // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let zip3 xs1 xs2 xs3 = match xs1,xs2,xs3 with | [],[],[] -> [] | (h1::t1),(h2::t2),(h3::t3) -> let res = freshConsNoTail (h1,h2,h3) zip3ToFreshConsTail res t1 t2 t3; res | _ -> invalidArg "xs1" (SR.GetString(SR.listsHadDifferentLengths)) let toArray (l:'T list) = let len = l.Length let res = arrayZeroCreate len let rec loop i l = match l with | [] -> () | h::t -> res.[i] <- h loop (i+1) t loop 0 l res let ofArray (arr:'T[]) = let len = arr.Length let mutable res = ([]: 'T list) for i = len - 1 downto 0 do res <- arr.[i] :: res res // NOTE: This implementation is now only used for List.sortWith. We should change that to use the stable sort via arrays // below, and remove this implementation. module StableSortImplementation = // Internal copy of stable sort let rec revAppend xs1 xs2 = match xs1 with | [] -> xs2 | h::t -> revAppend t (h::xs2) let half x = x >>> 1 let rec merge cmp a b acc = match a,b with | [], a | a,[] -> revAppend acc a | x::a', y::b' -> if cmp x y > 0 then merge cmp a b' (y::acc) else merge cmp a' b (x::acc) let sort2 cmp x y = if cmp x y > 0 then [y;x] else [x;y] let sort3 cmp x y z = let cxy = cmp x y let cyz = cmp y z if cxy > 0 && cyz < 0 then if cmp x z > 0 then [y;z;x] else [y;x;z] elif cxy < 0 && cyz > 0 then if cmp x z > 0 then [z;x;y] else [x;z;y] elif cxy > 0 then if cyz > 0 then [z;y;x] else [y;z;x] else if cyz > 0 then [z;x;y] else [x;y;z] let trivial a = match a with [] | [_] -> true | _ -> false (* tail recursive using a ref *) let rec stableSortInner cmp la ar = if la < 4 then (* sort two || three new entries *) match !ar with | x::y::b -> if la = 2 then ( ar := b; sort2 cmp x y ) else begin match b with | z::c -> ( ar := c; sort3 cmp x y z ) | _ -> failwith "never" end | _ -> failwith "never" else (* divide *) let lb = half la let sb = stableSortInner cmp lb ar let sc = stableSortInner cmp (la - lb) ar merge cmp sb sc [] let stableSort cmp (a: 'T list) = if trivial a then a else let ar = ref a stableSortInner cmp a.Length ar let sortWith cmp a = StableSortImplementation.stableSort cmp a module internal Array = open System open System.Collections.Generic #if FX_NO_ARRAY_KEY_SORT // Mimic behavior of BCL QSort routine, used under the hood by various array sorting APIs let qsort<'Key,'Value>(keys : 'Key[], values : 'Value[], start : int, last : int, comparer : IComparer<'Key>) = let valuesExist = match values with | null -> false | _ -> true let swap (p1, p2) = let tk = keys.[p1] keys.[p1] <- keys.[p2] keys.[p2] <- tk if valuesExist then let tv = values.[p1] values.[p1] <- values.[p2] values.[p2] <- tv let partition (left, right, pivot) = let value = keys.[pivot] swap (pivot, right) let mutable store = left for i in left..(right - 1) do if comparer.Compare(keys.[i],value) < 0 then swap(i, store) store <- store + 1 swap (store, right) store let rec qs (left, right) = if left < right then let pivot = left + (right-left)/2 let newpivot = partition(left,right,pivot) qs(left,newpivot - 1) qs(newpivot+1,right) qs(start, last) type System.Array with static member Sort<'Key,'Value when 'Key : comparison>(keys : 'Key[], values : 'Value[], comparer : IComparer<'Key>) = let valuesExist = match values with | null -> false | _ -> true match keys,values with | null,_ -> raise (ArgumentNullException()) | _,_ when valuesExist && (keys.Length <> values.Length) -> raise (ArgumentException()) | _,_ -> let comparer = match comparer with null -> LanguagePrimitives.FastGenericComparer<'Key> | _ -> comparer qsort(keys, values, 0, keys.Length-1, comparer) static member Sort<'Key,'Value when 'Key : comparison>(keys : 'Key[], values : 'Value[]) = let valuesExist = match values with | null -> false | _ -> true match keys,values with | null,_ -> raise (ArgumentNullException()) | _,_ when valuesExist && (keys.Length <> values.Length) -> raise (ArgumentException()) | _,_ -> qsort(keys,values,0,keys.Length-1,LanguagePrimitives.FastGenericComparer<'Key>) (* static member Sort<'Key,'Value when 'Key : comparison>(keys : 'Key[], values : 'Value[], start : int, last : int) = match keys with | null -> raise (ArgumentNullException()) | _ -> qsort(keys,values,start,last,LanguagePrimitives.FastGenericComparer<'Key>) *) static member Sort<'Key,'Value when 'Key : comparison>(keys : 'Key[], values : 'Value[], start : int, length : int, comparer : IComparer<'Key>) = match keys with | null -> raise (ArgumentNullException()) | _ -> let comparer = match comparer with null -> LanguagePrimitives.FastGenericComparer<'Key> | _ -> comparer qsort(keys,values,start,start+length-1,comparer) #else #endif // The input parameter should be checked by callers if necessary let inline zeroCreateUnchecked (count:int) = (# "newarr !0" type ('T) count : 'T array #) let inline init (count:int) (f: int -> 'T) = if count < 0 then invalidArg "count" InputMustBeNonNegativeString let arr = (zeroCreateUnchecked count : 'T array) for i = 0 to count - 1 do arr.[i] <- f i arr let permute indexMap (arr : _[]) = let res = zeroCreateUnchecked arr.Length let inv = zeroCreateUnchecked arr.Length for i = 0 to arr.Length - 1 do let j = indexMap i if j < 0 || j >= arr.Length then invalidArg "indexMap" (SR.GetString(SR.notAPermutation)) res.[j] <- arr.[i] inv.[j] <- 1uy for i = 0 to arr.Length - 1 do if inv.[i] <> 1uy then invalidArg "indexMap" (SR.GetString(SR.notAPermutation)) res let unstableSortInPlaceBy (f: 'T -> 'U) (array : array<'T>) = let len = array.Length if len < 2 then () else let keys = zeroCreateUnchecked array.Length for i = 0 to array.Length - 1 do keys.[i] <- f array.[i] System.Array.Sort<_,_>(keys, array, LanguagePrimitives.FastGenericComparerCanBeNull<_>) let unstableSortInPlace (array : array<'T>) = let len = array.Length if len < 2 then () else System.Array.Sort<_>(array, LanguagePrimitives.FastGenericComparerCanBeNull<_>) let stableSortWithKeys (array:array<'T>) (keys:array<'Key>) = // 'places' is an array or integers storing the permutation performed by the sort let places = zeroCreateUnchecked array.Length for i = 0 to array.Length - 1 do places.[i] <- i let cFast = LanguagePrimitives.FastGenericComparerCanBeNull<'Key> System.Array.Sort<_,_>(keys, places, cFast) // 'array2' is a copy of the original values let array2 = (array.Clone() :?> array<'T>) // 'c' is a comparer for the keys let c = LanguagePrimitives.FastGenericComparer<'Key> // Walk through any chunks where the keys are equal let mutable i = 0 let len = array.Length while i < len do let mutable j = i let ki = keys.[i] while j < len && (j = i || c.Compare(ki, keys.[j]) = 0) do j <- j + 1 // Copy the values into the result array and re-sort the chunk if needed by the original place indexes for n = i to j - 1 do array.[n] <- array2.[places.[n]] if j - i >= 2 then System.Array.Sort<_,_>(places, array, i, j-i, null) i <- j let stableSortInPlaceBy (f: 'T -> 'U) (array : array<'T>) = let len = array.Length if len < 2 then () else // 'keys' is an array storing the projected keys let keys = zeroCreateUnchecked array.Length for i = 0 to array.Length - 1 do keys.[i] <- f array.[i] stableSortWithKeys array keys let stableSortInPlace (array : array<'T>) = let len = array.Length if len < 2 then () else let cFast = LanguagePrimitives.FastGenericComparerCanBeNull<'T> match cFast with | null -> // An optimization for the cases where the keys and values coincide and do not have identity, e.g. are integers // In this case an unstable sort is just as good as a stable sort (and faster) System.Array.Sort<_,_>(array, null) | _ -> // 'keys' is an array storing the projected keys let keys = (array.Clone() :?> array<'T>) stableSortWithKeys array keys fsharp-3.0.34/src/fsharp/FSharp.Core/printf.fsi0000775000175000017500000003566112260314606020237 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// This namespace contains types and modules for generating and formatting text with F# namespace Microsoft.FSharp.Core open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open System open System.IO open System.Text /// Type of a formatting expression. /// Function type generated by printf. /// Type argument passed to %a formatters /// Value generated by the overall printf action (e.g. sprint generates a string) /// Value generated after post processing (e.g. failwithf generates a string internally then raises an exception) type PrintfFormat<'Printer,'State,'Residue,'Result> = /// Construct a format string /// The input string. /// The PrintfFormat containing the formatted result. new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result> /// The raw text of the format string. member Value : string /// Type of a formatting expression. /// Function type generated by printf. /// Type argument passed to %a formatters /// Value generated by the overall printf action (e.g. sprint generates a string) /// Value generated after post processing (e.g. failwithf generates a string internally then raises an exception) /// Tuple of values generated by scan or match. type PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple> = inherit PrintfFormat<'Printer,'State,'Residue,'Result> /// Construct a format string /// The input string. /// The created format string. new: value:string -> PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple> /// Type of a formatting expression. /// Function type generated by printf. /// Type argument passed to %a formatters /// Value generated by the overall printf action (e.g. sprint generates a string) /// Value generated after post processing (e.g. failwithf generates a string internally then raises an exception) type Format<'Printer,'State,'Residue,'Result> = PrintfFormat<'Printer,'State,'Residue,'Result> /// Type of a formatting expression. /// Function type generated by printf. /// Type argument passed to %a formatters /// Value generated by the overall printf action (e.g. sprint generates a string) /// Value generated after post processing (e.g. failwithf generates a string internally then raises an exception) /// Tuple of values generated by scan or match. type Format<'Printer,'State,'Residue,'Result,'Tuple> = PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple> /// Extensible printf-style formatting for numbers and other datatypes /// /// Format specifications are strings with "%" markers indicating format /// placeholders. Format placeholders consist of: /// /// %[flags][width][.precision][type] /// /// where the type is interpreted as follows: /// /// %b: bool, formatted as "true" or "false" /// %s: string, formatted as its unescaped contents /// %c: character literal /// %d, %i: any basic integer type formatted as a decimal integer, signed if the basic integer type is signed. /// %u: any basic integer type formatted as an unsigned decimal integer /// %x, %X, %o: any basic integer type formatted as an unsigned hexadecimal /// (a-f)/Hexadecimal (A-F)/Octal integer /// /// %e, %E, %f, %F, %g, %G: /// any basic floating point type (float,float32) formatted /// using a C-style floating point format specifications, i.e /// /// %e, %E: Signed value having the form [-]d.dddde[sign]ddd where /// d is a single decimal digit, dddd is one or more decimal /// digits, ddd is exactly three decimal digits, and sign /// is + or - /// /// %f: Signed value having the form [-]dddd.dddd, where dddd is one /// or more decimal digits. The number of digits before the /// decimal point depends on the magnitude of the number, and /// the number of digits after the decimal point depends on /// the requested precision. /// /// %g, %G: Signed value printed in f or e format, whichever is /// more compact for the given value and precision. /// /// /// %M: System.Decimal value /// /// %O: Any value, printed by boxing the object and using it's ToString method(s) /// /// %A: Any value, printed with the default layout settings /// /// %a: A general format specifier, requires two arguments: /// (1) a function which accepts two arguments: /// (a) a context parameter of the appropriate type for the /// given formatting function (e.g. an #System.IO.TextWriter) /// (b) a value to print /// and which either outputs or returns appropriate text. /// /// (2) the particular value to print /// /// /// %t: A general format specifier, requires one argument: /// (1) a function which accepts a context parameter of the /// appropriate type for the given formatting function (e.g. /// an System.IO.TextWriter)and which either outputs or returns /// appropriate text. /// /// Basic integer types are: /// byte,sbyte,int16,uint16,int32,uint32,int64,uint64,nativeint,unativeint /// Basic floating point types are: /// float, float32 /// /// The optional width is an integer indicating the minimal width of the /// result. For instance, %6d prints an integer, prefixing it with spaces /// to fill at least 6 characters. If width is '*', then an extra integer /// argument is taken to specify the corresponding width. /// /// any number /// '*': /// /// Valid flags are: /// /// 0: add zeros instead of spaces to make up the required width /// '-': left justify the result within the width specified /// '+': add a '+' character if the number is positive (to match a '-' sign /// for negatives) /// ' ': add an extra space if the number is positive (to match a '-' /// sign for negatives) /// /// The printf '#' flag is invalid and a compile-time error will be reported if it is used. [] module Printf = /// Represents a statically-analyzed format associated with writing to a System.Text.StringBuilder. The first type parameter indicates the /// arguments of the format operation and the last the overall return type. type BuilderFormat<'T,'Result> = Format<'T, StringBuilder, unit, 'Result> /// Represents a statically-analyzed format when formatting builds a string. The first type parameter indicates the /// arguments of the format operation and the last the overall return type. type StringFormat<'T,'Result> = Format<'T, unit, string, 'Result> /// Represents a statically-analyzed format associated with writing to a System.IO.TextWriter. The first type parameter indicates the /// arguments of the format operation and the last the overall return type. type TextWriterFormat<'T,'Result> = Format<'T, TextWriter, unit, 'Result> /// Represents a statically-analyzed format associated with writing to a System.Text.StringBuilder. The type parameter indicates the /// arguments and return type of the format operation. type BuilderFormat<'T> = BuilderFormat<'T,unit> /// Represents a statically-analyzed format when formatting builds a string. The type parameter indicates the /// arguments and return type of the format operation. type StringFormat<'T> = StringFormat<'T,string> /// Represents a statically-analyzed format associated with writing to a System.IO.TextWriter. The type parameter indicates the /// arguments and return type of the format operation. type TextWriterFormat<'T> = TextWriterFormat<'T,unit> /// Print to a System.Text.StringBuilder /// The StringBuilder to print to. /// The input formatter. /// The return type and arguments of the formatter. [] val bprintf : builder:StringBuilder -> format:BuilderFormat<'T> -> 'T /// Print to a text writer. /// The TextWriter to print to. /// The input formatter. /// The return type and arguments of the formatter. [] val fprintf : textWriter:TextWriter -> format:TextWriterFormat<'T> -> 'T /// Print to a text writer, adding a newline /// The TextWriter to print to. /// The input formatter. /// The return type and arguments of the formatter. [] val fprintfn : textWriter:TextWriter -> format:TextWriterFormat<'T> -> 'T #if FX_NO_SYSTEM_CONSOLE #else /// Formatted printing to stderr /// The input formatter. /// The return type and arguments of the formatter. [] val eprintf : format:TextWriterFormat<'T> -> 'T /// Formatted printing to stderr, adding a newline /// The input formatter. /// The return type and arguments of the formatter. [] val eprintfn : format:TextWriterFormat<'T> -> 'T /// Formatted printing to stdout /// The input formatter. /// The return type and arguments of the formatter. [] val printf : format:TextWriterFormat<'T> -> 'T /// Formatted printing to stdout, adding a newline. /// The input formatter. /// The return type and arguments of the formatter. [] val printfn : format:TextWriterFormat<'T> -> 'T #endif /// Print to a string via an internal string buffer and return /// the result as a string. Helper printers must return strings. /// The input formatter. /// The formatted string. [] val sprintf : format:StringFormat<'T> -> 'T /// bprintf, but call the given 'final' function to generate the result. /// See kprintf. /// The function called after formatting to generate the format result. /// The input StringBuilder. /// The input formatter. /// The arguments of the formatter. [] val kbprintf : continutation:(unit -> 'Result) -> builder:StringBuilder -> format:BuilderFormat<'T,'Result> -> 'T /// fprintf, but call the given 'final' function to generate the result. /// See kprintf. /// The function called after formatting to generate the format result. /// The input TextWriter. /// The input formatter. /// The arguments of the formatter. [] val kfprintf : continutation:(unit -> 'Result) -> textWriter:TextWriter -> format:TextWriterFormat<'T,'Result> -> 'T /// printf, but call the given 'final' function to generate the result. /// For example, these let the printing force a flush after all output has /// been entered onto the channel, but not before. /// The function called after formatting to generate the format result. /// The input formatter. /// The arguments of the formatter. [] val kprintf : continutation:(string -> 'Result) -> format:StringFormat<'T,'Result> -> 'T /// sprintf, but call the given 'final' function to generate the result. /// See kprintf. /// The function called to generate a result from the formatted string. /// The input formatter. /// The arguments of the formatter. [] val ksprintf : continutation:(string -> 'Result) -> format:StringFormat<'T,'Result> -> 'T /// Print to a string buffer and raise an exception with the given /// result. Helper printers must return strings. /// The input formatter. /// The arguments of the formatter. [] val failwithf: format:StringFormat<'T,'Result> -> 'T #if EXTRAS_FOR_SILVERLIGHT_COMPILER val setWriter: System.IO.TextWriter -> unit val setError: System.IO.TextWriter -> unit #endif fsharp-3.0.34/src/fsharp/FSharp.Core/prim-types-prelude.fsi0000775000175000017500000001456712260314606022506 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "35" // This construct is deprecated: the treatment of this operator is now handled directly by the F# compiler and its meaning may not be redefined. #nowarn "61" // The containing type can use null as a representation value for its nullary union case. This member will be compiled as a static member. #nowarn "62" // This construct is for ML compatibility. The syntax module ... : sig .. end is deprecated unless OCaml compatibility is enabled. Consider using module ... = begin .. end'. /// Basic F# type definitions, functions and operators. namespace Microsoft.FSharp.Core open System /// An abbreviation for the CLI type System.Object. type obj = System.Object /// An abbreviation for the CLI type System.Exception. type exn = System.Exception /// An abbreviation for the CLI type System.IntPtr. type nativeint = System.IntPtr /// An abbreviation for the CLI type System.UIntPtr. type unativeint = System.UIntPtr /// An abbreviation for the CLI type System.String. type string = System.String /// An abbreviation for the CLI type System.Single. type float32 = System.Single /// An abbreviation for the CLI type System.Double. type float = System.Double /// An abbreviation for the CLI type System.Single. type single = System.Single /// An abbreviation for the CLI type System.Double. type double = System.Double /// An abbreviation for the CLI type System.SByte. type sbyte = System.SByte /// An abbreviation for the CLI type System.Byte. type byte = System.Byte /// An abbreviation for the CLI type System.SByte. type int8 = System.SByte /// An abbreviation for the CLI type System.Byte. type uint8 = System.Byte /// An abbreviation for the CLI type System.Int16. type int16 = System.Int16 /// An abbreviation for the CLI type System.UInt16. type uint16 = System.UInt16 /// An abbreviation for the CLI type System.Int32. type int32 = System.Int32 /// An abbreviation for the CLI type System.UInt32. type uint32 = System.UInt32 /// An abbreviation for the CLI type System.Int64. type int64 = System.Int64 /// An abbreviation for the CLI type System.UInt64. type uint64 = System.UInt64 /// An abbreviation for the CLI type System.Char. type char = System.Char /// An abbreviation for the CLI type System.Boolean. type bool = System.Boolean /// An abbreviation for the CLI type System.Decimal. type decimal = System.Decimal /// An abbreviation for the CLI type System.Int32. type int = int32 /// Single dimensional, zero-based arrays, written int[], string[] etc. /// Use the values in the Array module to manipulate values /// of this type, or the notation arr.[x] to get/set array /// values. type 'T ``[]`` = (# "!0[]" #) /// Two dimensional arrays, typically zero-based. /// /// Use the values in the Array2D module /// to manipulate values of this type, or the notation arr.[x,y] to get/set array /// values. /// /// Non-zero-based arrays can also be created using methods on the System.Array type. type 'T ``[,]`` = (# "!0[0 ... , 0 ... ]" #) /// Three dimensional arrays, typically zero-based. Non-zero-based arrays /// can be created using methods on the System.Array type. /// /// Use the values in the Array3D module /// to manipulate values of this type, or the notation arr.[x1,x2,x3] to get and set array /// values. type 'T ``[,,]`` = (# "!0[0 ...,0 ...,0 ...]" #) /// Four dimensional arrays, typically zero-based. Non-zero-based arrays /// can be created using methods on the System.Array type. /// /// Use the values in the Array4D module /// to manipulate values of this type, or the notation arr.[x1,x2,x3,x4] to get and set array /// values. type 'T ``[,,,]`` = (# "!0[0 ...,0 ...,0 ...,0 ...]" #) /// Single dimensional, zero-based arrays, written int[], string[] etc. /// /// Use the values in the Array module to manipulate values /// of this type, or the notation arr.[x] to get/set array /// values. type 'T array = 'T[] /// Represents a managed pointer in F# code. type byref<'T> = (# "!0&" #) /// Represents an unmanaged pointer in F# code. /// /// This type should only be used when writing F# code that interoperates /// with native code. Use of this type in F# code may result in /// unverifiable code being generated. Conversions to and from the /// nativeint type may be required. Values of this type can be generated /// by the functions in the NativeInterop.NativePtr module. type nativeptr<'T when 'T : unmanaged> = (# "native int" #) /// This type is for internal use by the F# code generator. type ilsigptr<'T> = (# "!0*" #) fsharp-3.0.34/src/fsharp/FSharp.Core/fslib-extra-pervasives.fs0000775000175000017500000004330712260314606023165 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core module ExtraTopLevelOperators = open System open System.Collections.Generic open System.IO open System.Diagnostics open Microsoft.FSharp open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Text open Microsoft.FSharp.Collections open Microsoft.FSharp.Control open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Core.CompilerServices let inline checkNonNullNullArg argName arg = match box arg with | null -> nullArg argName | _ -> () let inline checkNonNullInvalidArg argName message arg = match box arg with | null -> invalidArg argName message | _ -> () [] let set l = Collections.Set.ofSeq l [] let dict l = // Use a dictionary (this requires hashing and equality on the key type) // Wrap keys in a StructBox in case they are null (when System.Collections.Generic.Dictionary fails). let t = new Dictionary,_>(RuntimeHelpers.StructBox<'Key>.Comparer) for (k,v) in l do t.[RuntimeHelpers.StructBox(k)] <- v let d = (t :> IDictionary<_,_>) let c = (t :> ICollection<_>) // Give a read-only view of the dictionary { new IDictionary<'Key, 'T> with member s.Item with get x = d.[RuntimeHelpers.StructBox(x)] and set x v = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))) member s.Keys = let keys = d.Keys { new ICollection<'Key> with member s.Add(x) = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Clear() = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Remove(x) = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Contains(x) = keys.Contains(RuntimeHelpers.StructBox(x)) member s.CopyTo(arr,i) = let mutable n = 0 for k in keys do arr.[i+n] <- k.Value n <- n + 1 member s.IsReadOnly = true member s.Count = keys.Count interface IEnumerable<'Key> with member s.GetEnumerator() = (keys |> Seq.map (fun v -> v.Value)).GetEnumerator() interface System.Collections.IEnumerable with member s.GetEnumerator() = ((keys |> Seq.map (fun v -> v.Value)) :> System.Collections.IEnumerable).GetEnumerator() } member s.Values = d.Values member s.Add(k,v) = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))) member s.ContainsKey(k) = d.ContainsKey(RuntimeHelpers.StructBox(k)) member s.TryGetValue(k,r) = let key = RuntimeHelpers.StructBox(k) if d.ContainsKey(key) then (r <- d.[key]; true) else false member s.Remove(k : 'Key) = (raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))) : bool) interface ICollection> with member s.Add(x) = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Clear() = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Remove(x) = raise (NotSupportedException(SR.GetString(SR.thisValueCannotBeMutated))); member s.Contains(KeyValue(k,v)) = c.Contains(KeyValuePair<_,_>(RuntimeHelpers.StructBox(k),v)) member s.CopyTo(arr,i) = let mutable n = 0 for (KeyValue(k,v)) in c do arr.[i+n] <- KeyValuePair<_,_>(k.Value,v) n <- n + 1 member s.IsReadOnly = true member s.Count = c.Count interface IEnumerable> with member s.GetEnumerator() = (c |> Seq.map (fun (KeyValue(k,v)) -> KeyValuePair<_,_>(k.Value,v))).GetEnumerator() interface System.Collections.IEnumerable with member s.GetEnumerator() = ((c |> Seq.map (fun (KeyValue(k,v)) -> KeyValuePair<_,_>(k.Value,v))) :> System.Collections.IEnumerable).GetEnumerator() } let getArray (vals : seq<'T>) = match vals with | :? ('T[]) as arr -> arr | _ -> Seq.toArray vals [] let array2D (rows : seq<#seq<'T>>) = checkNonNullNullArg "rows" rows let rowsArr = getArray rows let m = rowsArr.Length if m = 0 then Array2D.zeroCreate<'T> 0 0 else checkNonNullInvalidArg "rows" (SR.GetString(SR.nullsNotAllowedInArray)) rowsArr.[0] let firstRowArr = getArray rowsArr.[0] let n = firstRowArr.Length let res = Array2D.zeroCreate<'T> m n for j in 0..(n-1) do res.[0,j] <- firstRowArr.[j] for i in 1..(m-1) do checkNonNullInvalidArg "rows" (SR.GetString(SR.nullsNotAllowedInArray)) rowsArr.[i] let rowiArr = getArray rowsArr.[i] if rowiArr.Length <> n then invalidArg "vals" (SR.GetString(SR.arraysHadDifferentLengths)) for j in 0..(n-1) do res.[i,j] <- rowiArr.[j] res // -------------------------------------------------------------------- // Printf // -------------------------------------------------------------------- [] let sprintf fp = Printf.sprintf fp [] let failwithf fp = Printf.failwithf fp [] let fprintf (os:TextWriter) fp = Printf.fprintf os fp [] let fprintfn (os:TextWriter) fp = Printf.fprintfn os fp #if FX_NO_SYSTEM_CONSOLE #else [] let printf fp = Printf.printf fp [] let eprintf fp = Printf.eprintf fp [] let printfn fp = Printf.printfn fp [] let eprintfn fp = Printf.eprintfn fp #endif [] let failwith s = raise (Failure s) [] let async = new Microsoft.FSharp.Control.AsyncBuilder() [] let inline single x = float32 x [] let inline double x = float x [] let inline uint8 x = byte x [] let inline int8 x = sbyte x #if FX_MINIMAL_REFLECTION // not on Compact Framework #else [] let (~%) (_:Microsoft.FSharp.Quotations.Expr<'a>) : 'a = raise <| InvalidOperationException(SR.GetString(SR.firstClassUsesOfSplice)) [] let (~%%) (_: Microsoft.FSharp.Quotations.Expr) : 'a = raise <| InvalidOperationException (SR.GetString(SR.firstClassUsesOfSplice)) #endif [] [] [] [] [] #if QUERIES_IN_FSLIB [] [] #endif do() [] let (|Lazy|) (x:Lazy<_>) = x.Force() #if QUERIES_IN_FSLIB let query = Microsoft.FSharp.Linq.QueryBuilder() #if EXTRA_DEBUG let queryexpr = Microsoft.FSharp.Linq.QueryExprBuilder() let queryexprpretrans = Microsoft.FSharp.Linq.QueryExprPreTransBuilder() let queryexprpreelim = Microsoft.FSharp.Linq.QueryExprPreEliminateNestedBuilder() let queryquote = Microsoft.FSharp.Linq.QueryQuoteBuilder() let querylinqexpr = Microsoft.FSharp.Linq.QueryLinqExprBuilder() #endif #endif #if PUT_TYPE_PROVIDERS_IN_FSCORE namespace Microsoft.FSharp.Core.CompilerServices open System open System.Reflection open System.Linq.Expressions open System.Collections.Generic open Microsoft.FSharp.Core /// Represents the product of two measure expressions when returned as a generic argument of a provided type. [] type MeasureProduct<'Measure1, 'Measure2>() = class end /// Represents the inverse of a measure expressions when returned as a generic argument of a provided type. [] type MeasureInverse<'Measure> = class end /// Represents the '1' measure expression when returned as a generic argument of a provided type. [] type MeasureOne = class end [] type TypeProviderAttribute() = inherit System.Attribute() [] type TypeProviderAssemblyAttribute(assemblyName : string) = inherit System.Attribute() new () = TypeProviderAssemblyAttribute(null) member __.AssemblyName = assemblyName [] type TypeProviderXmlDocAttribute(commentText: string) = inherit System.Attribute() member __.CommentText = commentText [] type TypeProviderDefinitionLocationAttribute() = inherit System.Attribute() let mutable filePath : string = null let mutable line : int = 0 let mutable column : int = 0 member this.FilePath with get() = filePath and set v = filePath <- v member this.Line with get() = line and set v = line <- v member this.Column with get() = column and set v = column <- v [] type TypeProviderEditorHideMethodsAttribute() = inherit System.Attribute() /// Additional type attribute flags related to provided types type TypeProviderTypeAttributes = | SuppressRelocate = 0x80000000 | IsErased = 0x40000000 type TypeProviderConfig( systemRuntimeContainsType : string -> bool ) = let mutable resolutionFolder : string = null let mutable runtimeAssembly : string = null let mutable referencedAssemblies : string[] = null let mutable temporaryFolder : string = null let mutable isInvalidationSupported : bool = false let mutable useResolutionFolderAtRuntime : bool = false let mutable systemRuntimeAssemblyVersion : System.Version = null member this.ResolutionFolder with get() = resolutionFolder and set v = resolutionFolder <- v member this.RuntimeAssembly with get() = runtimeAssembly and set v = runtimeAssembly <- v member this.ReferencedAssemblies with get() = referencedAssemblies and set v = referencedAssemblies <- v member this.TemporaryFolder with get() = temporaryFolder and set v = temporaryFolder <- v member this.IsInvalidationSupported with get() = isInvalidationSupported and set v = isInvalidationSupported <- v member this.IsHostedExecution with get() = useResolutionFolderAtRuntime and set v = useResolutionFolderAtRuntime <- v member this.SystemRuntimeAssemblyVersion with get() = systemRuntimeAssemblyVersion and set v = systemRuntimeAssemblyVersion <- v member this.SystemRuntimeContainsType (typeName : string) = systemRuntimeContainsType typeName #if FX_NO_CUSTOMATTRIBUTEDATA type IProvidedCustomAttributeTypedArgument = abstract ArgumentType: System.Type abstract Value: System.Object type IProvidedCustomAttributeNamedArgument = abstract ArgumentType: System.Type abstract MemberInfo: System.Reflection.MemberInfo abstract TypedValue: IProvidedCustomAttributeTypedArgument type IProvidedCustomAttributeData = abstract Constructor: System.Reflection.ConstructorInfo abstract ConstructorArguments: System.Collections.Generic.IList abstract NamedArguments: System.Collections.Generic.IList #endif type IProvidedNamespace = abstract NamespaceName : string abstract GetNestedNamespaces : unit -> IProvidedNamespace[] abstract GetTypes : unit -> Type[] abstract ResolveTypeName : typeName: string -> Type type ITypeProvider = inherit System.IDisposable abstract GetNamespaces : unit -> IProvidedNamespace[] abstract GetStaticParameters : typeWithoutArguments:Type -> ParameterInfo[] abstract ApplyStaticArguments : typeWithoutArguments:Type * typePathWithArguments:string[] * staticArguments:obj[] -> Type abstract GetInvokerExpression : syntheticMethodBase:MethodBase * parameters:Microsoft.FSharp.Quotations.Expr[] -> Microsoft.FSharp.Quotations.Expr [] abstract Invalidate : Microsoft.FSharp.Control.IEvent abstract GetGeneratedAssemblyContents : assembly:System.Reflection.Assembly -> byte[] #if FX_NO_CUSTOMATTRIBUTEDATA abstract GetMemberCustomAttributesData : assembly:System.Reflection.MemberInfo -> System.Collections.Generic.IList abstract GetParameterCustomAttributesData : assembly:System.Reflection.ParameterInfo -> System.Collections.Generic.IList #endif #endif #if EXTRAS_FOR_SILVERLIGHT_COMPILER namespace Microsoft.FSharp open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open ExtraTopLevelOperators open System open System.Collections.Generic open System.Threading [] exception UserInterrupt [] type Silverlight() = static let threadsToKill = HashSet() static let mutable isNotEmpty = false static let mutable emitChecks = false static member EmitInterruptChecks with get() = emitChecks and set b = emitChecks <- b static member InterruptThread(id) = isNotEmpty <- true threadsToKill.Add(id) |> ignore static member ResumeThread(id) = threadsToKill.Remove(id) |> ignore isNotEmpty <- threadsToKill.Count > 0 static member CheckInterrupt() = if isNotEmpty then let id = Thread.CurrentThread.ManagedThreadId if threadsToKill.Contains(id) then raise UserInterrupt static member WriteLine() = printfn "" static member WriteLine(value2: string) = printfn "%s" value2 static member WriteLine(value: obj) = printfn "%O" value static member WriteLine(value3: int) = printfn "%d" value3 static member WriteLine(format: string, arg0: obj) = printfn "%s" (String.Format(format, arg0)) static member WriteLine(format: string, arg0: obj, arg1:obj) = printfn "%s" (String.Format(format, arg0, arg1)) static member WriteLine(format: string, arg0: obj, arg1:obj, arg2: obj) = printfn "%s" (String.Format(format, arg0, arg1, arg2)) static member WriteLine(format: string, arg0: obj, arg1:obj, arg2: obj, arg3: obj) = printfn "%s" (String.Format(format, arg0, arg1, arg2, arg3)) static member WriteLine(format: string, [] arg: obj[]) = printfn "%s" (String.Format(format, arg)) static member Write(value2: string) = printf "%s" value2 static member Write(value: obj) = printf "%O" value static member Write(value3: int) = printf "%d" value3 static member Write(format: string, arg0: obj) = printf "%s" (String.Format(format, arg0)) static member Write(format: string, arg0: obj, arg1:obj) = printf "%s" (String.Format(format, arg0, arg1)) static member Write(format: string, arg0: obj, arg1:obj, arg2: obj) = printf "%s" (String.Format(format, arg0, arg1, arg2)) static member Write(format: string, arg0: obj, arg1:obj, arg2: obj, arg3: obj) = printf "%s" (String.Format(format, arg0, arg1, arg2, arg3)) static member Write(format: string, [] arg: obj[]) = printf "%s" (String.Format(format, arg)) #endif fsharp-3.0.34/src/fsharp/FSharp.Core/nativeptr.fs0000775000175000017500000000453712260314606020576 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.NativeInterop #nowarn "44";; open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Core.Operators open System open System.Diagnostics open System.Runtime.InteropServices [] [] module NativePtr = [] [] let inline ofNativeInt (x:nativeint) = (# "" x : nativeptr<'T> #) [] [] let inline toNativeInt (x: nativeptr<'T>) = (# "" x : nativeint #) [] [] let inline add (x : nativeptr<'T>) (n:int) : nativeptr<'T> = toNativeInt x + nativeint n * (# "sizeof !0" type('T) : nativeint #) |> ofNativeInt [] [] let inline get (p : nativeptr<'T>) n = (# "ldobj !0" type ('T) (add p n) : 'T #) [] [] let inline set (p : nativeptr<'T>) n (x : 'T) = (# "stobj !0" type ('T) (add p n) x #) [] [] let inline read (p : nativeptr<'T>) = (# "ldobj !0" type ('T) p : 'T #) [] [] let inline write (p : nativeptr<'T>) (x : 'T) = (# "stobj !0" type ('T) p x #) [] [] let inline stackalloc (count:int) : nativeptr<'T> = (# "localloc" (count * sizeof<'T>) : nativeptr<'T> #) fsharp-3.0.34/src/fsharp/FSharp.Core/SI.fs0000775000175000017500000001404612260314606017071 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// The International System of Units (SI) namespace Microsoft.FSharp.Data.UnitSystems.SI.UnitNames open Microsoft.FSharp.Core [] /// The SI unit of length type metre [] /// The SI unit of length type meter = metre [] /// The SI unit of mass type kilogram [] /// The SI unit of time type second [] /// The SI unit of electric current type ampere [] /// The SI unit of thermodynamic temperature type kelvin [] /// The SI unit of amount of substance type mole [] /// The SI unit of luminous intensity type candela [] /// The SI unit of frequency type hertz = / second [] /// The SI unit of force type newton = kilogram metre / second^2 [] /// The SI unit of pressure, stress type pascal = newton / metre^2 [] /// The SI unit of energy, work, amount of heat type joule = newton metre [] /// The SI unit of power, radiant flux type watt = joule / second [] /// The SI unit of electric charge, amount of electricity type coulomb = second ampere [] /// The SI unit of electric potential difference, electromotive force type volt = watt/ampere [] /// The SI unit of capacitance type farad = coulomb/volt [] /// The SI unit of electric resistance type ohm = volt/ampere [] /// The SI unit of electric conductance type siemens = ampere/volt [] /// The SI unit of magnetic flux type weber = volt second [] /// The SI unit of magnetic flux density type tesla = weber/metre^2 [] /// The SI unit of inductance type henry = weber/ampere [] /// The SI unit of luminous flux type lumen = candela [] /// The SI unit of illuminance type lux = lumen/metre^2 [] /// The SI unit of activity referred to a radionuclide type becquerel = second^-1 [] /// The SI unit of absorbed dose type gray = joule/kilogram [] /// The SI unit of does equivalent type sievert = joule/kilogram [] /// The SI unit of catalytic activity type katal = mole/second /// Common abbreviations for the International System of Units (SI) namespace Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols open Microsoft.FSharp.Core open Microsoft.FSharp.Data.UnitSystems.SI.UnitNames [] /// A synonym for Metre, the SI unit of length type m = metre [] /// A synonym for kilogram, the SI unit of mass type kg = kilogram [] /// A synonym for second, the SI unit of time type s = second [] /// A synonym for ampere, the SI unit of electric current type A = ampere [] /// A synonym for kelvin, the SI unit of thermodynamic temperature type K = kelvin [] /// A synonym for mole, the SI unit of amount of substance type mol = mole [] /// A synonym for candela, the SI unit of luminous intensity type cd = candela [] /// A synonym for hertz, the SI unit of frequency type Hz = hertz [] /// A synonym for newton, the SI unit of force type N = newton [] /// A synonym for pascal, the SI unit of pressure, stress type Pa = pascal [] /// A synonym for joule, the SI unit of energy, work, amount of heat type J = joule [] /// A synonym for watt, the SI unit of power, radiant flux type W = watt [] /// A synonym for coulomb, the SI unit of electric charge, amount of electricity type C = coulomb [] /// A synonym for volt, the SI unit of electric potential difference, electromotive force type V = volt [] /// A synonym for farad, the SI unit of capacitance type F = farad [] /// A synonym for siemens, the SI unit of electric conductance type S = siemens [] /// A synonym for UnitNames.ohm, the SI unit of electric resistance. type ohm = Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ohm [] /// A synonym for weber, the SI unit of magnetic flux type Wb = weber [] /// A synonym for tesla, the SI unit of magnetic flux density type T = tesla [] /// A synonym for lumen, the SI unit of luminous flux type lm = lumen [] /// A synonym for lux, the SI unit of illuminance type lx = lux [] /// A synonym for becquerel, the SI unit of activity referred to a radionuclide type Bq = becquerel [] /// A synonym for gray, the SI unit of absorbed dose type Gy = gray [] /// A synonym for sievert, the SI unit of does equivalent type Sv = sievert [] /// A synonym for katal, the SI unit of catalytic activity type kat = katal [] /// A synonym for henry, the SI unit of inductance type H = henry fsharp-3.0.34/src/fsharp/FSharp.Core/prim-types.fsi0000775000175000017500000060146312260314606021045 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "35" // This construct is deprecated: the treatment of this operator is now handled directly by the F# compiler and its meaning may not be redefined. #nowarn "61" // The containing type can use 'null' as a representation value for its nullary union case. This member will be compiled as a static member. #nowarn "62" // The syntax 'module ... : sig .. end' is for ML compatibility. Consider using 'module ... = begin .. end'. /// Basic F# type definitions, functions and operators namespace Microsoft.FSharp.Core open System /// The type 'unit', which has only one value "()". This value is special and /// always uses the representation 'null'. type Unit = interface System.IComparable /// The type 'unit', which has only one value "()". This value is special and /// always uses the representation 'null'. and unit = Unit #if FX_NO_STRUCTURAL_EQUALITY namespace System.Collections open Microsoft.FSharp.Core //------------------------------------------------------------------------- // Structural equality type IStructuralEquatable = /// Equality comparison against a target object with a given comparer. /// The target for comparison. /// Compares the two objects. /// The result of the comparer. abstract Equals: obj:obj * comparer:System.Collections.IEqualityComparer -> bool /// Returns a hash code for the current instance. /// An object that computes the hash code of the current object. /// The hash code for the current instance. abstract GetHashCode: comparer:System.Collections.IEqualityComparer -> int //------------------------------------------------------------------------- // Structural comparison type IStructuralComparable = /// Determines whether the current object precedes, occurs in the same position as, /// or follows another object in the sort order. /// The object to compare with the current instance. /// An object that performs comparisons. /// An integer that indicates the relationship of the current object to the target object. abstract CompareTo: obj:obj * comparer:System.Collections.IComparer -> int #endif namespace Microsoft.FSharp.Core open System open System.Collections /// Indicates the relationship between a compiled entity in a CLI binary and an element in F# source code. type SourceConstructFlags = /// Indicates that the compiled entity has no relationship to an element in F# source code. | None = 0 /// Indicates that the compiled entity is part of the representation of an F# union type declaration. | SumType = 1 /// Indicates that the compiled entity is part of the representation of an F# record type declaration. | RecordType = 2 /// Indicates that the compiled entity is part of the representation of an F# class or other object type declaration. | ObjectType = 3 /// Indicates that the compiled entity is part of the representation of an F# record or union case field declaration. | Field = 4 /// Indicates that the compiled entity is part of the representation of an F# exception declaration. | Exception = 5 /// Indicates that the compiled entity is part of the representation of an F# closure. | Closure = 6 /// Indicates that the compiled entity is part of the representation of an F# module declaration. | Module = 7 /// Indicates that the compiled entity is part of the representation of an F# union case declaration. | UnionCase = 8 /// Indicates that the compiled entity is part of the representation of an F# value declaration. | Value = 9 /// The mask of values related to the kind of the compiled entity. | KindMask = 31 /// Indicates that the compiled entity had private or internal representation in F# source code. | NonPublicRepresentation = 32 [] /// Indicates one or more adjustments to the compiled representation of an F# type or member. type CompilationRepresentationFlags = /// No special compilation representation. | None = 0 /// Compile an instance member as 'static' . | Static = 1 /// Compile a member as 'instance' even if null is used as a representation for this type. | Instance = 2 /// append 'Module' to the end of a module whose name clashes with a type name in the same namespace. | ModuleSuffix = 4 /// Permit the use of null as a representation for nullary discriminators in a discriminated union. | UseNullAsTrueValue = 8 /// Compile a property as a CLI event. | Event = 16 #if FX_NO_ICLONEABLE module ICloneableExtensions = type System.Array with member Clone : unit -> System.Array #else #endif //------------------------------------------------------------------------- // F#-specific Attributes /// Adding this attribute to class definition makes it sealed, which means it may not /// be extended or implemented. [] type SealedAttribute = inherit System.Attribute /// Creates an instance of the attribute. /// The created attribute. new : unit -> SealedAttribute /// The value of the attribute, indicating whether the type is sealed or not. member Value: bool /// Creates an instance of the attribute /// Indicates whether the class is sealed. /// SealedAttribute new : value:bool -> SealedAttribute /// Adding this attribute to class definition makes it abstract, which means it need not /// implement all its methods. Instances of abstract classes may not be constructed directly. [] [] type AbstractClassAttribute = inherit System.Attribute /// Creates an instance of the attribute /// AbstractClassAttribute new : unit -> AbstractClassAttribute /// Adding this attribute to the let-binding for the definition of a top-level /// value makes the quotation expression that implements the value available /// for use at runtime. [] [] type ReflectedDefinitionAttribute = inherit System.Attribute /// Creates an instance of the attribute /// ReflectedDefinitionAttribute new : unit -> ReflectedDefinitionAttribute /// This attribute is used to indicate a generic container type satisfies the F# 'equality' /// constraint only if a generic argument also satisfies this constraint. For example, adding /// this attribute to parameter 'T on a type definition C<'T> means that a type C<X> only supports /// equality if the type X also supports equality and all other conditions for C<X> to support /// equality are also met. The type C<'T> can still be used with other type arguments, but a type such /// as C<(int -> int)> will not support equality because the type (int -> int) is an F# function type /// and does not support equality. /// /// This attribute will be ignored if it is used on the generic parameters of functions or methods. [] [] type EqualityConditionalOnAttribute = inherit System.Attribute /// Creates an instance of the attribute /// EqualityConditionalOnAttribute new : unit -> EqualityConditionalOnAttribute /// This attribute is used to indicate a generic container type satisfies the F# 'comparison' /// constraint only if a generic argument also satisfies this constraint. For example, adding /// this attribute to parameter 'T on a type definition C<'T> means that a type C<X> only supports /// comparison if the type X also supports comparison and all other conditions for C<X> to support /// comparison are also met. The type C<'T> can still be used with other type arguments, but a type such /// as C<(int -> int)> will not support comparison because the type (int -> int) is an F# function type /// and does not support comparison. /// /// This attribute will be ignored if it is used on the generic parameters of functions or methods. [] [] type ComparisonConditionalOnAttribute = inherit System.Attribute /// Creates an instance of the attribute /// ComparisonConditionalOnAttribute new : unit -> ComparisonConditionalOnAttribute /// Adding this attribute to a type causes it to be represented using a CLI struct. [] [] type StructAttribute = inherit System.Attribute /// Creates an instance of the attribute /// StructAttribute new : unit -> StructAttribute /// Adding this attribute to a type causes it to be interpreted as a unit of measure. /// This may only be used under very limited conditions. [] [] type MeasureAttribute = inherit System.Attribute /// Creates an instance of the attribute /// MeasureAttribute new : unit -> MeasureAttribute /// Adding this attribute to a type causes it to be interpreted as a refined type, currently limited to measure-parameterized types. /// This may only be used under very limited conditions. [] [] type MeasureAnnotatedAbbreviationAttribute = inherit System.Attribute /// Creates an instance of the attribute /// MeasureAnnotatedAbbreviationAttribute new : unit -> MeasureAnnotatedAbbreviationAttribute /// Adding this attribute to a type causes it to be represented using a CLI interface. [] [] type InterfaceAttribute = inherit System.Attribute /// Creates an instance of the attribute /// InterfaceAttribute new : unit -> InterfaceAttribute /// Adding this attribute to a type causes it to be represented using a CLI class. [] [] type ClassAttribute = inherit System.Attribute /// Creates an instance of the attribute /// ClassAttribute new : unit -> ClassAttribute /// Adding this attribute to a type lets the 'null' literal be used for the type /// within F# code. This attribute may only be added to F#-defined class or /// interface types. [] [] type AllowNullLiteralAttribute = inherit System.Attribute /// Creates an instance of the attribute /// AllowNullLiteralAttribute new : unit -> AllowNullLiteralAttribute /// Adding this attribute to a value causes it to be compiled as a CLI constant literal. [] [] type LiteralAttribute = inherit System.Attribute /// Creates an instance of the attribute /// LiteralAttribute new : unit -> LiteralAttribute /// Adding this attribute to a property with event type causes it to be compiled with as a CLI /// metadata event, through a syntactic translation to a pair of 'add_EventName' and /// 'remove_EventName' methods. [] [] type CLIEventAttribute = inherit System.Attribute /// Creates an instance of the attribute /// CLIEventAttribute new : unit -> CLIEventAttribute /// Adding this attribute to a record type causes it to be compiled to a CLI representation /// with a default constructor with property getters and setters. [] [] type CLIMutableAttribute = inherit System.Attribute /// Creates an instance of the attribute /// CLIMutableAttribute new : unit -> CLIMutableAttribute /// Adding this attribute to a discriminated union with value false /// turns off the generation of standard helper member tester, constructor /// and accessor members for the generated CLI class for that type. [] [] type DefaultAugmentationAttribute = inherit System.Attribute /// The value of the attribute, indicating whether the type has a default augmentation or not member Value: bool /// Creates an instance of the attribute /// Indicates whether to generate helper members on the CLI class representing a discriminated /// union. /// DefaultAugmentationAttribute new : value:bool -> DefaultAugmentationAttribute /// Adding this attribute to an F# mutable binding causes the "volatile" /// prefix to be used for all accesses to the field. [] [] type VolatileFieldAttribute = inherit System.Attribute /// Creates an instance of the attribute /// VolatileFieldAttribute new : unit -> VolatileFieldAttribute /// Adding this attribute to a function indicates it is the entrypoint for an application. /// If this attribute is not specified for an EXE then the initialization implicit in the /// module bindings in the last file in the compilation sequence are used as the entrypoint. [] [] type EntryPointAttribute = inherit System.Attribute /// Creates an instance of the attribute /// EntryPointAttribute new : unit -> EntryPointAttribute /// Adding this attribute to a record or union type disables the automatic generation /// of overrides for 'System.Object.Equals(obj)', 'System.Object.GetHashCode()' /// and 'System.IComparable' for the type. The type will by default use reference equality. [] [] type ReferenceEqualityAttribute = inherit System.Attribute /// Creates an instance of the attribute /// ReferenceEqualityAttribute new : unit -> ReferenceEqualityAttribute /// Adding this attribute to a record, union or struct type confirms the automatic /// generation of overrides for 'System.Object.Equals(obj)' and /// 'System.Object.GetHashCode()' for the type. [] [] type StructuralEqualityAttribute = inherit System.Attribute /// Creates an instance of the attribute /// StructuralEqualityAttribute new : unit -> StructuralEqualityAttribute /// Adding this attribute to a record, union, exception, or struct type confirms the /// automatic generation of implementations for 'System.IComparable' for the type. [] [] type StructuralComparisonAttribute = inherit System.Attribute /// Creates an instance of the attribute /// StructuralComparisonAttribute new : unit -> StructuralComparisonAttribute [] [] /// Indicates that a member on a computation builder type is a custom query operator, /// and indicates the name of that operator. type CustomOperationAttribute = /// Creates an instance of the attribute /// CustomOperationAttribute new : name:string -> CustomOperationAttribute /// Get the name of the custom operation when used in a query or other computation expression member Name : string /// Indicates if the custom operation supports the use of 'into' immediately after the use of the operation in a query or other computation expression to consume the results of the operation member AllowIntoPattern : bool with get,set /// Indicates if the custom operation is an operation similar to a zip in a sequence computation, supporting two inputs member IsLikeZip : bool with get,set /// Indicates if the custom operation is an operation similar to a join in a sequence computation, supporting two inputs and a correlation constraint member IsLikeJoin : bool with get,set /// Indicates if the custom operation is an operation similar to a group join in a sequence computation, supporting two inputs and a correlation constraint, and generating a group member IsLikeGroupJoin : bool with get,set /// Indicates the name used for the 'on' part of the custom query operator for join-like operators member JoinConditionWord : string with get,set /// Indicates if the custom operation maintains the variable space of the query of computation expression member MaintainsVariableSpace : bool with get,set /// Indicates if the custom operation maintains the variable space of the query of computation expression through the use of a bind operation member MaintainsVariableSpaceUsingBind : bool with get,set inherit System.Attribute [] [] /// Indicates that, when a custom operator is used in a computation expression, /// a parameter is automatically parameterized by the variable space of the computation expression type ProjectionParameterAttribute = /// Creates an instance of the attribute /// ProjectionParameterAttribute new : unit -> ProjectionParameterAttribute inherit System.Attribute /// Adding this attribute to a type indicates it is a type where equality is an abnormal operation. /// This means that the type does not satisfy the F# 'equality' constraint. Within the bounds of the /// F# type system, this helps ensure that the F# generic equality function is not instantiated directly /// at this type. The attribute and checking does not constrain the use of comparison with base or child /// types of this type. [] [] type NoEqualityAttribute = inherit System.Attribute /// Creates an instance of the attribute /// NoEqualityAttribute new : unit -> NoEqualityAttribute /// Adding this attribute to a type indicates it is a type with a user-defined implementation of equality. [] [] type CustomEqualityAttribute = inherit System.Attribute /// Creates an instance of the attribute /// CustomEqualityAttribute new : unit -> CustomEqualityAttribute /// Adding this attribute to a type indicates it is a type with a user-defined implementation of comparison. [] [] type CustomComparisonAttribute = inherit System.Attribute /// Creates an instance of the attribute /// CustomComparisonAttribute new : unit -> CustomComparisonAttribute /// Adding this attribute to a type indicates it is a type where comparison is an abnormal operation. /// This means that the type does not satisfy the F# 'comparison' constraint. Within the bounds of the /// F# type system, this helps ensure that the F# generic comparison function is not instantiated directly /// at this type. The attribute and checking does not constrain the use of comparison with base or child /// types of this type. [] [] type NoComparisonAttribute = inherit System.Attribute /// Creates an instance of the attribute /// NoComparisonAttribute new : unit -> NoComparisonAttribute /// Adding this attribute to a field declaration means that the field is /// not initialized. During type checking a constraint is asserted that the field type supports 'null'. /// If the 'check' value is false then the constraint is not asserted. [] [] type DefaultValueAttribute = inherit System.Attribute /// Indicates if a constraint is asserted that the field type supports 'null' member Check: bool /// Creates an instance of the attribute /// DefaultValueAttribute new : unit -> DefaultValueAttribute /// Creates an instance of the attribute /// Indicates whether to assert that the field type supports null. /// DefaultValueAttribute new : check: bool -> DefaultValueAttribute /// This attribute is added automatically for all optional arguments. [] [] type OptionalArgumentAttribute = inherit System.Attribute /// Creates an instance of the attribute /// OptionalArgumentAttribute new : unit -> OptionalArgumentAttribute /// Adding this attribute to a type, value or member requires that /// uses of the construct must explicitly instantiate any generic type parameters. [] [] type RequiresExplicitTypeArgumentsAttribute = inherit System.Attribute /// Creates an instance of the attribute /// RequiresExplicitTypeArgumentsAttribute new : unit -> RequiresExplicitTypeArgumentsAttribute /// Adding this attribute to a non-function value with generic parameters indicates that /// uses of the construct can give rise to generic code through type inference. [] [] type GeneralizableValueAttribute = inherit System.Attribute /// Creates an instance of the attribute /// GeneralizableValueAttribute new : unit -> GeneralizableValueAttribute /// Adding this attribute to a value or function definition in an F# module changes the name used /// for the value in compiled CLI code. [] [] type CompiledNameAttribute = inherit System.Attribute /// The name of the value as it appears in compiled code member CompiledName: string /// Creates an instance of the attribute /// The name to use in compiled code. /// CompiledNameAttribute new : compiledName:string -> CompiledNameAttribute /// Adding this attribute to a type with value 'false' disables the behaviour where F# makes the /// type Serializable by default. [] [] type AutoSerializableAttribute = inherit System.Attribute /// The value of the attribute, indicating whether the type is automatically marked serializable or not member Value: bool /// Creates an instance of the attribute /// Indicates whether the type should be serializable by default. /// AutoSerializableAttribute new : value:bool -> AutoSerializableAttribute /// This attribute is added to generated assemblies to indicate the /// version of the data schema used to encode additional F# /// specific information in the resource attached to compiled F# libraries. [] [] type FSharpInterfaceDataVersionAttribute = inherit System.Attribute /// The major version number of the F# version associated with the attribute member Major: int /// The minor version number of the F# version associated with the attribute member Minor: int /// The release number of the F# version associated with the attribute member Release: int /// Creates an instance of the attribute /// The major version number. /// The minor version number. /// The release number. /// FSharpInterfaceDataVersionAttribute new : major:int * minor:int * release:int -> FSharpInterfaceDataVersionAttribute /// This attribute is inserted automatically by the F# compiler to tag types /// and methods in the generated CLI code with flags indicating the correspondence /// with original source constructs. It is used by the functions in the /// Microsoft.FSharp.Reflection namespace to reverse-map compiled constructs to /// their original forms. It is not intended for use from user code. [] [] type CompilationMappingAttribute = inherit System.Attribute /// Indicates the relationship between the compiled entity and F# source code member SourceConstructFlags : SourceConstructFlags /// Indicates the sequence number of the entity, if any, in a linear sequence of elements with F# source code member SequenceNumber : int /// Indicates the variant number of the entity, if any, in a linear sequence of elements with F# source code member VariantNumber : int /// Creates an instance of the attribute /// Indicates the type of source construct. /// CompilationMappingAttribute new : sourceConstructFlags:SourceConstructFlags -> CompilationMappingAttribute /// Creates an instance of the attribute /// Indicates the type of source construct. /// CompilationMappingAttribute new : sourceConstructFlags:SourceConstructFlags * sequenceNumber: int -> CompilationMappingAttribute /// Creates an instance of the attribute /// Indicates the type of source construct. /// CompilationMappingAttribute new : sourceConstructFlags:SourceConstructFlags * variantNumber : int * sequenceNumber : int -> CompilationMappingAttribute /// This attribute is inserted automatically by the F# compiler to tag /// methods which are given the 'CompiledName' attribute. It is not intended /// for use from user code. [] [] type CompilationSourceNameAttribute = inherit System.Attribute /// Indicates the name of the entity in F# source code member SourceName : string /// Creates an instance of the attribute /// The name of the method in source. /// CompilationSourceNameAttribute new : sourceName:string -> CompilationSourceNameAttribute /// This attribute is used to adjust the runtime representation for a type. /// For example, it may be used to note that the null representation /// may be used for a type. This affects how some constructs are compiled. [] [] type CompilationRepresentationAttribute = inherit System.Attribute /// Indicates one or more adjustments to the compiled representation of an F# type or member member Flags : CompilationRepresentationFlags /// Creates an instance of the attribute /// Indicates adjustments to the compiled representation of the type or member. /// CompilationRepresentationAttribute new : flags:CompilationRepresentationFlags -> CompilationRepresentationAttribute /// This attribute is used to tag values that are part of an experimental library /// feature. [] [] type ExperimentalAttribute = inherit System.Attribute /// Indicates the warning message to be emitted when F# source code uses this construct member Message: string /// Creates an instance of the attribute /// The warning message to be emitted when code uses this construct. /// ExperimentalAttribute new : message:string-> ExperimentalAttribute /// This attribute is generated automatically by the F# compiler to tag functions and members /// that accept a partial application of some of their arguments and return a residual function [] [] type CompilationArgumentCountsAttribute = inherit System.Attribute /// Indicates the number of arguments in each argument group member Counts: System.Collections.Generic.IEnumerable /// Creates an instance of the attribute /// Indicates the number of arguments in each argument group. /// CompilationArgumentCountsAttribute new : counts:int[] -> CompilationArgumentCountsAttribute /// This attribute is used to mark how a type is displayed by default when using /// '%A' printf formatting patterns and other two-dimensional text-based display layouts. /// In this version of F# the only valid values are of the form PreText {PropertyName} PostText. /// The property name indicates a property to evaluate and to display instead of the object itself. [] [] type StructuredFormatDisplayAttribute = inherit System.Attribute /// Indicates the text to display by default when objects of this type are displayed /// using '%A' printf formatting patterns and other two-dimensional text-based display /// layouts. member Value: string /// Creates an instance of the attribute /// Indicates the text to display when using the '%A' printf formatting. /// StructuredFormatDisplayAttribute new : value:string-> StructuredFormatDisplayAttribute /// Indicates that a message should be emitted when F# source code uses this construct. [] [] type CompilerMessageAttribute = inherit System.Attribute /// Indicates the warning message to be emitted when F# source code uses this construct member Message: string /// Indicates the number associated with the message. member MessageNumber: int /// Indicates if the message should indicate a compiler error. Error numbers less than /// 10000 are considered reserved for use by the F# compiler and libraries. member IsError: bool with get,set /// Indicates if the construct should always be hidden in an editing environment. member IsHidden: bool with get,set /// Creates an instance of the attribute. new : message:string * messageNumber: int -> CompilerMessageAttribute /// This attribute is used to tag values whose use will result in the generation /// of unverifiable code. These values are inevitably marked 'inline' to ensure that /// the unverifiable constructs are not present in the actual code for the F# library, /// but are rather copied to the source code of the caller. [] [] type UnverifiableAttribute = inherit System.Attribute /// Creates an instance of the attribute /// UnverifiableAttribute new : unit -> UnverifiableAttribute /// This attribute is used to tag values that may not be dynamically invoked at runtime. This is /// typically added to inlined functions whose implementations include unverifiable code. It /// causes the method body emitted for the inlined function to raise an exception if /// dynamically invoked, rather than including the unverifiable code in the generated /// assembly. [] [] type NoDynamicInvocationAttribute = inherit System.Attribute /// Creates an instance of the attribute /// NoDynamicInvocationAttribute new : unit -> NoDynamicInvocationAttribute /// This attribute is used to indicate that references to the elements of a module, record or union /// type require explicit qualified access. [] [] type RequireQualifiedAccessAttribute = inherit System.Attribute /// Creates an instance of the attribute /// RequireQualifiedAccessAttribute new : unit -> RequireQualifiedAccessAttribute /// This attribute is used for two purposes. When applied to an assembly, it must be given a string /// argument, and this argument must indicate a valid module or namespace in that assembly. Source /// code files compiled with a reference to this assembly are processed in an environment /// where the given path is automatically opened. /// /// When applied to a module within an assembly, then the attribute must not be given any arguments. /// When the enclosing namespace is opened in user source code, the module is also implicitly opened. [] [] type AutoOpenAttribute = inherit System.Attribute /// Indicates the namespace or module to be automatically opened when an assembly is referenced /// or an enclosing module opened. member Path: string /// Creates an attribute used to mark a module as 'automatically opened' when the enclosing namespace is opened /// AutoOpenAttribute new : unit -> AutoOpenAttribute /// Creates an attribute used to mark a namespace or module path to be 'automatically opened' when an assembly is referenced /// The namespace or module to be automatically opened when an assembly is referenced /// or an enclosing module opened. /// AutoOpenAttribute new : path:string-> AutoOpenAttribute //------------------------------------------------------------------------- // Units of measure [] /// The type of floating point numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Double. type float<[] 'Measure> = float [] /// The type of floating point numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Single. type float32<[] 'Measure> = float32 [] /// The type of decimal numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Decimal. type decimal<[] 'Measure> = decimal [] /// The type of 32-bit signed integer numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Int32. type int<[] 'Measure> = int [] /// The type of 8-bit signed integer numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.SByte. type sbyte<[] 'Measure> = sbyte [] /// The type of 16-bit signed integer numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Int16. type int16<[] 'Measure> = int16 [] /// The type of 64-bit signed integer numbers, annotated with a unit of measure. The unit /// of measure is erased in compiled code and when values of this type /// are analyzed using reflection. The type is representationally equivalent to /// System.Int64. type int64<[] 'Measure> = int64 /// Language primitives associated with the F# language module LanguagePrimitives = /// Compare two values for equality using partial equivalence relation semantics ([nan] <> [nan]) /// The first value. /// The second value. /// The result of the comparison. val inline GenericEquality : e1:'T -> e2:'T -> bool when 'T : equality /// Compare two values for equality using equivalence relation semantics ([nan] = [nan]) /// The first value. /// The second value. /// The result of the comparison. val inline GenericEqualityER : e1:'T -> e2:'T -> bool when 'T : equality /// Compare two values for equality /// /// The first value. /// The second value. /// The result of the comparison. val inline GenericEqualityWithComparer : comp:System.Collections.IEqualityComparer -> e1:'T -> e2:'T -> bool when 'T : equality /// Compare two values /// The first value. /// The second value. /// The result of the comparison. val inline GenericComparison : e1:'T -> e2:'T -> int when 'T : comparison /// Compare two values. May be called as a recursive case from an implementation of System.IComparable to /// ensure consistent NaN comparison semantics. /// The function to compare the values. /// The first value. /// The second value. /// The result of the comparison. val inline GenericComparisonWithComparer : comp:System.Collections.IComparer -> e1:'T -> e2:'T -> int when 'T : comparison /// Compare two values /// The first value. /// The second value. /// The result of the comparison. val inline GenericLessThan : e1:'T -> e2:'T -> bool when 'T : comparison /// Compare two values /// The first value. /// The second value. /// The result of the comparison. val inline GenericGreaterThan : e1:'T -> e2:'T -> bool when 'T : comparison /// Compare two values /// The first value. /// The second value. /// The result of the comparison. val inline GenericLessOrEqual : e1:'T -> e2:'T -> bool when 'T : comparison /// Compare two values /// The first value. /// The second value. /// The result of the comparison. val inline GenericGreaterOrEqual : e1:'T -> e2:'T -> bool when 'T : comparison /// Take the minimum of two values structurally according to the order given by GenericComparison /// The first value. /// The second value. /// The minimum value. val inline GenericMinimum : e1:'T -> e2:'T -> 'T when 'T : comparison /// Take the maximum of two values structurally according to the order given by GenericComparison /// The first value. /// The second value. /// The maximum value. val inline GenericMaximum : e1:'T -> e2:'T -> 'T when 'T : comparison /// Reference/physical equality. /// True if the inputs are reference-equal, false otherwise. /// The first value. /// The second value. /// The result of the comparison. val inline PhysicalEquality : e1:'T -> e2:'T -> bool when 'T : not struct /// The physical hash. Hashes on the object identity, except for value types, /// where we hash on the contents. /// The input object. /// The hashed value. val inline PhysicalHash : obj:'T -> int when 'T : not struct /// Return an F# comparer object suitable for hashing and equality. This hashing behaviour /// of the returned comparer is not limited by an overall node count when hashing F# /// records, lists and union types. val GenericEqualityComparer : System.Collections.IEqualityComparer /// Return an F# comparer object suitable for hashing and equality. This hashing behaviour /// of the returned comparer is not limited by an overall node count when hashing F# /// records, lists and union types. This equality comparer has equivalence /// relation semantics ([nan] = [nan]). val GenericEqualityERComparer : System.Collections.IEqualityComparer /// A static F# comparer object val GenericComparer : System.Collections.IComparer /// Make an F# comparer object for the given type val FastGenericComparer<'T> : System.Collections.Generic.IComparer<'T> when 'T : comparison /// Make an F# comparer object for the given type, where it can be null if System.Collections.Generic.Comparer<'T>.Default val internal FastGenericComparerCanBeNull<'T> : System.Collections.Generic.IComparer<'T> when 'T : comparison /// Make an F# hash/equality object for the given type val inline FastGenericEqualityComparer<'T> : System.Collections.Generic.IEqualityComparer<'T> when 'T : equality /// Make an F# hash/equality object for the given type using node-limited hashing when hashing F# /// records, lists and union types. /// The input limit on the number of nodes. /// System.Collections.Generic.IEqualityComparer<'T> val inline FastLimitedGenericEqualityComparer<'T> : limit: int -> System.Collections.Generic.IEqualityComparer<'T> when 'T : equality /// Hash a value according to its structure. This hash is not limited by an overall node count when hashing F# /// records, lists and union types. /// The input object. /// The hashed value. val inline GenericHash : obj:'T -> int /// Hash a value according to its structure. Use the given limit to restrict the hash when hashing F# /// records, lists and union types. /// The limit on the number of nodes. /// The input object. /// The hashed value. val inline GenericLimitedHash : limit: int -> obj:'T -> int /// Recursively hash a part of a value according to its structure. /// The comparison function. /// The input object. /// The hashed value. val inline GenericHashWithComparer : comparer : System.Collections.IEqualityComparer -> obj:'T -> int /// Build an enum value from an underlying value /// The input value. /// The value as an enumeration. val inline EnumOfValue : value:'T -> 'Enum when 'Enum : enum<'T> /// Get the underlying value for an enum value /// The input enum. /// The enumeration as a value. val inline EnumToValue : enum:'Enum -> 'T when 'Enum : enum<'T> /// Creates a float value with units-of-measure /// The input float. /// The float with units-of-measure. val inline FloatWithMeasure : float -> float<'Measure> /// Creates a float32 value with units-of-measure /// The input float. /// The float with units-of-measure. val inline Float32WithMeasure : float32 -> float32<'Measure> /// Creates a decimal value with units-of-measure /// The input decimal. /// The decimal with units of measure. val inline DecimalWithMeasure : decimal -> decimal<'Measure> /// Creates an int32 value with units-of-measure /// The input int. /// The int with units of measure. val inline Int32WithMeasure : int -> int<'Measure> /// Creates an int64 value with units-of-measure /// The input int64. /// The int64 with units of measure. val inline Int64WithMeasure : int64 -> int64<'Measure> /// Creates an int16 value with units-of-measure /// The input int16. /// The int16 with units-of-measure. val inline Int16WithMeasure : int16 -> int16<'Measure> /// Creates an sbyte value with units-of-measure /// The input sbyte. /// The sbyte with units-of-measure. val inline SByteWithMeasure : sbyte -> sbyte<'Measure> /// Parse an int32 according to the rules used by the overloaded 'int32' conversion operator when applied to strings /// The input string. /// The parsed value. val ParseInt32 : s:string -> int32 /// Parse an uint32 according to the rules used by the overloaded 'uint32' conversion operator when applied to strings /// The input string. /// The parsed value. val ParseUInt32 : s:string -> uint32 /// Parse an int64 according to the rules used by the overloaded 'int64' conversion operator when applied to strings /// The input string. /// The parsed value. val ParseInt64 : s:string -> int64 /// Parse an uint64 according to the rules used by the overloaded 'uint64' conversion operator when applied to strings /// The input string. /// The parsed value. val ParseUInt64 : s:string -> uint64 /// Resolves to the zero value for any primitive numeric type or any type with a static member called 'Zero'. [] val GenericZeroDynamic : unit -> 'T /// Resolves to the value 'one' for any primitive numeric type or any type with a static member called 'One'. [] val GenericOneDynamic : unit -> 'T /// A compiler intrinsic that implements dynamic invocations to the '+' operator. [] val AdditionDynamic : x:'T1 -> y:'T2 -> 'U /// A compiler intrinsic that implements dynamic invocations to the checked '+' operator. [] val CheckedAdditionDynamic : x:'T1 -> y:'T2 -> 'U /// A compiler intrinsic that implements dynamic invocations to the '*' operator. [] val MultiplyDynamic : x:'T1 -> y:'T2 -> 'U /// A compiler intrinsic that implements dynamic invocations to the checked '*' operator. [] val CheckedMultiplyDynamic : x:'T1 -> y:'T2 -> 'U /// A compiler intrinsic that implements dynamic invocations for the DivideByInt primitive. [] val DivideByIntDynamic : x:'T -> y:int -> 'T /// Resolves to the zero value for any primitive numeric type or any type with a static member called 'Zero' val inline GenericZero< ^T > : ^T when ^T : (static member Zero : ^T) /// Resolves to the value 'one' for any primitive numeric type or any type with a static member called 'One' val inline GenericOne< ^T > : ^T when ^T : (static member One : ^T) val internal anyToStringShowingNull : 'T -> string /// Divides a value by an integer. /// The input value. /// The input int. /// The division result. val inline DivideByInt< ^T > : x:^T -> y:int -> ^T when ^T : (static member DivideByInt : ^T * int -> ^T) /// For internal use only module (* internal *) ErrorStrings = [] val InputSequenceEmptyString : string [] val InputArrayEmptyString : string [] val AddressOpNotFirstClassString : string [] val NoNegateMinValueString : string [] val InputMustBeNonNegativeString : string //------------------------------------------------------------------------- /// The F# compiler emits calls to some of the functions in this module as part of the compiled form of some language constructs module IntrinsicOperators = /// Binary 'and'. When used as a binary operator the right hand value is evaluated only on demand. [] val ( & ) : e1:bool -> e2:bool -> bool /// Binary 'and'. When used as a binary operator the right hand value is evaluated only on demand /// The first value. /// The second value. /// The result of the operation. val ( && ) : e1:bool -> e2:bool -> bool /// Binary 'or'. When used as a binary operator the right hand value is evaluated only on demand. [] [] val ( or ) : e1:bool -> e2:bool -> bool /// Binary 'or'. When used as a binary operator the right hand value is evaluated only on demand /// The first value. /// The second value. /// The result of the operation. val ( || ) : e1:bool -> e2:bool -> bool /// Address-of. Uses of this value may result in the generation of unverifiable code. /// The input object. /// The managed pointer. [] val inline ( ~& ) : obj:'T -> 'T byref /// Address-of. Uses of this value may result in the generation of unverifiable code. /// The input object. /// The unmanaged pointer. [] val inline ( ~&& ) : obj:'T -> nativeptr<'T> //------------------------------------------------------------------------- /// The F# compiler emits calls to some of the functions in this module as part of the compiled form of some language constructs module IntrinsicFunctions = /// A compiler intrinsic that implements the ':?>' operator [] val UnboxGeneric<'T> : source:obj -> 'T /// A compiler intrinsic that implements the ':?>' operator [] val inline UnboxFast<'T> : source:obj -> 'T /// A compiler intrinsic that implements the ':?' operator [] val TypeTestGeneric<'T> : source:obj -> bool /// A compiler intrinsic that implements the ':?' operator [] val inline TypeTestFast<'T> : source:obj -> bool /// Primitive used by pattern match compilation //[] val inline GetString : source:string -> index:int -> char /// This function implements calls to default constructors /// acccessed by 'new' constraints. [] val inline CreateInstance : unit -> 'T when 'T : (new : unit -> 'T) /// This function implements parsing of decimal constants [] val inline MakeDecimal : low:int -> medium:int -> high:int -> isNegative:bool -> scale:byte -> decimal /// A compiler intrinsic for the efficient compilation of sequence expressions [] val Dispose<'T when 'T :> System.IDisposable > : resource:'T -> unit /// A compiler intrinsic for checking initialization soundness of recursive bindings [] val FailInit : unit -> unit /// A compiler intrinsic for checking initialization soundness of recursive static bindings [] val FailStaticInit : unit -> unit /// A compiler intrinsic for checking initialization soundness of recursive bindings [] val CheckThis : 'T -> 'T when 'T : not struct /// The standard overloaded associative (indexed) lookup operator //[] val inline GetArray : source:'T[] -> index:int -> 'T /// The standard overloaded associative (2-indexed) lookup operator //[] val inline GetArray2D : source:'T[,] -> index1:int -> index2:int -> 'T /// The standard overloaded associative (3-indexed) lookup operator //[] val inline GetArray3D : source:'T[,,] ->index1:int -> index2:int -> index3:int -> 'T /// The standard overloaded associative (4-indexed) lookup operator //[] val inline GetArray4D : source:'T[,,,] ->index1:int -> index2:int -> index3:int -> index4:int -> 'T /// The standard overloaded associative (indexed) mutation operator //[] val inline SetArray : target:'T[] -> index:int -> value:'T -> unit /// The standard overloaded associative (2-indexed) mutation operator //[] val inline SetArray2D : target:'T[,] -> index1:int -> index2:int -> value:'T -> unit /// The standard overloaded associative (3-indexed) mutation operator //[] val inline SetArray3D : target:'T[,,] -> index1:int -> index2:int -> index3:int -> value:'T -> unit /// The standard overloaded associative (4-indexed) mutation operator //[] val inline SetArray4D : target:'T[,,,] -> index1:int -> index2:int -> index3:int -> index4:int -> value:'T -> unit /// The F# compiler emits calls to some of the functions in this module as part of the compiled form of some language constructs module HashCompare = /// A primitive entry point used by the F# compiler for optimization purposes. [] val PhysicalHashIntrinsic : input:'T -> int when 'T : not struct /// A primitive entry point used by the F# compiler for optimization purposes. [] val PhysicalEqualityIntrinsic : x:'T -> y:'T -> bool when 'T : not struct /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericHashIntrinsic : input:'T -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val LimitedGenericHashIntrinsic : limit: int -> input:'T -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericHashWithComparerIntrinsic : comp:System.Collections.IEqualityComparer -> input:'T -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericComparisonWithComparerIntrinsic : comp:System.Collections.IComparer -> x:'T -> y:'T -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericComparisonIntrinsic : x:'T -> y:'T -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericEqualityIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericEqualityERIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericEqualityWithComparerIntrinsic : comp:System.Collections.IEqualityComparer -> x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericLessThanIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericGreaterThanIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericGreaterOrEqualIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val GenericLessOrEqualIntrinsic : x:'T -> y:'T -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastHashTuple2 : comparer:System.Collections.IEqualityComparer -> tuple:('T1 * 'T2) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastHashTuple3 : comparer:System.Collections.IEqualityComparer -> tuple:('T1 * 'T2 * 'T3) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastHashTuple4 : comparer:System.Collections.IEqualityComparer -> tuple:('T1 * 'T2 * 'T3 * 'T4) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastHashTuple5 : comparer:System.Collections.IEqualityComparer -> tuple:('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastEqualsTuple2 : comparer:System.Collections.IEqualityComparer -> tuple1:('T1 * 'T2) -> tuple2:('T1 * 'T2) -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastEqualsTuple3 : comparer:System.Collections.IEqualityComparer -> tuple1:('T1 * 'T2 * 'T3) -> tuple2:('T1 * 'T2 * 'T3) -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastEqualsTuple4 : comparer:System.Collections.IEqualityComparer -> tuple1:('T1 * 'T2 * 'T3 * 'T4) -> tuple2:('T1 * 'T2 * 'T3 * 'T4) -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastEqualsTuple5 : comparer:System.Collections.IEqualityComparer -> tuple1:('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> tuple2:('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> bool /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastCompareTuple2 : comparer:System.Collections.IComparer -> tuple1:('T1 * 'T2) -> tuple2:('T1 * 'T2) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastCompareTuple3 : comparer:System.Collections.IComparer -> tuple1:('T1 * 'T2 * 'T3) -> tuple2:('T1 * 'T2 * 'T3) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastCompareTuple4 : comparer:System.Collections.IComparer -> tuple1:('T1 * 'T2 * 'T3 * 'T4) -> tuple2:('T1 * 'T2 * 'T3 * 'T4) -> int /// A primitive entry point used by the F# compiler for optimization purposes. [] val inline FastCompareTuple5 : comparer:System.Collections.IComparer -> tuple1:('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> tuple2:('T1 * 'T2 * 'T3 * 'T4 * 'T5) -> int #if FX_NO_TUPLE namespace System open Microsoft.FSharp.Core open System.Collections //------------------------------------------------------------------------- // F# Tuple Types /// Compiled versions of F# tuple types. These are not used directly, though /// these compiled forms are seen by other CLI languages. type Tuple<'T1> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 -> Tuple<'T1> member Item1 : 'T1 with get #if TUPLE_STRUXT [] type Tuple<'T1,'T2> = new : 'T1 * 'T2 -> Tuple<'T1,'T2> val Item1 : 'T1 val Item2 : 'T2 // #else type Tuple<'T1,'T2> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 -> Tuple<'T1,'T2> member Item1 : 'T1 with get member Item2 : 'T2 with get #endif type Tuple<'T1,'T2,'T3> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 -> Tuple<'T1,'T2,'T3> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get type Tuple<'T1,'T2,'T3,'T4> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 * 'T4 -> Tuple<'T1,'T2,'T3,'T4> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get member Item4 : 'T4 with get type Tuple<'T1,'T2,'T3,'T4,'T5> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 -> Tuple<'T1,'T2,'T3,'T4,'T5> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get member Item4 : 'T4 with get member Item5 : 'T5 with get type Tuple<'T1,'T2,'T3,'T4,'T5,'T6> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6-> Tuple<'T1,'T2,'T3,'T4,'T5,'T6> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get member Item4 : 'T4 with get member Item5 : 'T5 with get member Item6 : 'T6 with get type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7 -> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get member Item4 : 'T4 with get member Item5 : 'T5 with get member Item6 : 'T6 with get member Item7 : 'T7 with get type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> = interface IStructuralEquatable interface IStructuralComparable interface IComparable new : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7 * 'TRest -> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> member Item1 : 'T1 with get member Item2 : 'T2 with get member Item3 : 'T3 with get member Item4 : 'T4 with get member Item5 : 'T5 with get member Item6 : 'T6 with get member Item7 : 'T7 with get member Rest : 'TRest with get #else #endif namespace Microsoft.FSharp.Core open System open Microsoft.FSharp.Core //------------------------------------------------------------------------- // F# Choice Types /// Helper types for active patterns with 2 choices. //[] [] [] type Choice<'T1,'T2> = /// Choice 1 of 2 choices | Choice1Of2 of 'T1 /// Choice 2 of 2 choices | Choice2Of2 of 'T2 /// Helper types for active patterns with 3 choices. [] [] type Choice<'T1,'T2,'T3> = /// Choice 1 of 3 choices | Choice1Of3 of 'T1 /// Choice 2 of 3 choices | Choice2Of3 of 'T2 /// Choice 3 of 3 choices | Choice3Of3 of 'T3 /// Helper types for active patterns with 4 choices. [] [] type Choice<'T1,'T2,'T3,'T4> = /// Choice 1 of 4 choices | Choice1Of4 of 'T1 /// Choice 2 of 4 choices | Choice2Of4 of 'T2 /// Choice 3 of 4 choices | Choice3Of4 of 'T3 /// Choice 4 of 4 choices | Choice4Of4 of 'T4 /// Helper types for active patterns with 5 choices. [] [] type Choice<'T1,'T2,'T3,'T4,'T5> = /// Choice 1 of 5 choices | Choice1Of5 of 'T1 /// Choice 2 of 5 choices | Choice2Of5 of 'T2 /// Choice 3 of 5 choices | Choice3Of5 of 'T3 /// Choice 4 of 5 choices | Choice4Of5 of 'T4 /// Choice 5 of 5 choices | Choice5Of5 of 'T5 /// Helper types for active patterns with 6 choices. [] [] type Choice<'T1,'T2,'T3,'T4,'T5,'T6> = /// Choice 1 of 6 choices | Choice1Of6 of 'T1 /// Choice 2 of 6 choices | Choice2Of6 of 'T2 /// Choice 3 of 6 choices | Choice3Of6 of 'T3 /// Choice 4 of 6 choices | Choice4Of6 of 'T4 /// Choice 5 of 6 choices | Choice5Of6 of 'T5 /// Choice 6 of 6 choices | Choice6Of6 of 'T6 /// Helper types for active patterns with 7 choices. [] [] type Choice<'T1,'T2,'T3,'T4,'T5,'T6,'T7> = /// Choice 1 of 7 choices | Choice1Of7 of 'T1 /// Choice 2 of 7 choices | Choice2Of7 of 'T2 /// Choice 3 of 7 choices | Choice3Of7 of 'T3 /// Choice 4 of 7 choices | Choice4Of7 of 'T4 /// Choice 5 of 7 choices | Choice5Of7 of 'T5 /// Choice 6 of 7 choices | Choice6Of7 of 'T6 /// Choice 7 of 7 choices | Choice7Of7 of 'T7 //------------------------------------------------------------------------- // F# Exception Types /// Non-exhaustive match failures will raise the MatchFailureException exception [] exception MatchFailureException of string * int * int //------------------------------------------------------------------------- // F# Function Types /// The CLI type used to represent F# first-class type function values. This type is for use /// by compiled F# code. [] type FSharpTypeFunc = /// Specialize the type function at a given type /// The specialized type. abstract Specialize<'T> : unit -> obj /// Construct an instance of an F# first class type function value /// FSharpTypeFunc new : unit -> FSharpTypeFunc /// The CLI type used to represent F# function values. This type is not /// typically used directly, though may be used from other CLI languages. [] type FSharpFunc<'T,'U> = /// Invoke an F# first class function value with one argument /// /// 'U abstract member Invoke : func:'T -> 'U #if FX_NO_CONVERTER #else /// Convert an F# first class function value to a value of type System.Converter /// The input function. /// A System.Converter of the function type. static member op_Implicit : func:('T -> 'U) -> System.Converter<'T,'U> /// Convert an value of type System.Converter to a F# first class function value /// The input System.Converter. /// An F# function of the same type. static member op_Implicit : converter:System.Converter<'T,'U> -> ('T -> 'U) /// Convert an F# first class function value to a value of type System.Converter /// The input function. /// System.Converter<'T,'U> static member ToConverter : func:('T -> 'U) -> System.Converter<'T,'U> /// Convert an value of type System.Converter to a F# first class function value /// The input System.Converter. /// An F# function of the same type. static member FromConverter : converter:System.Converter<'T,'U> -> ('T -> 'U) #endif /// Invoke an F# first class function value with five curried arguments. In some cases this /// will result in a more efficient application than applying the arguments successively. /// The input function. /// The first arg. /// The second arg. /// The third arg. /// The fourth arg. /// The fifth arg. /// The function result. static member InvokeFast : func: FSharpFunc<'T,('U -> 'V -> 'W -> 'X -> 'Y)> * arg1:'T * arg2:'U * arg3:'V * arg4:'W * arg5:'X -> 'Y /// Invoke an F# first class function value with four curried arguments. In some cases this /// will result in a more efficient application than applying the arguments successively. /// The input function. /// The first arg. /// The second arg. /// The third arg. /// The fourth arg. /// The function result. static member InvokeFast : func: FSharpFunc<'T,('U -> 'V -> 'W -> 'X)> * arg1:'T * arg2:'U * arg3:'V * arg4:'W -> 'X /// Invoke an F# first class function value with three curried arguments. In some cases this /// will result in a more efficient application than applying the arguments successively. /// The input function. /// The first arg. /// The second arg. /// The third arg. /// The function result. static member InvokeFast : func: FSharpFunc<'T,('U -> 'V -> 'W)> * arg1:'T * arg2:'U * arg3:'V -> 'W /// Invoke an F# first class function value with two curried arguments. In some cases this /// will result in a more efficient application than applying the arguments successively. /// The input function. /// The first arg. /// The second arg. /// The function result. static member InvokeFast : func: FSharpFunc<'T,('U -> 'V)> * arg1:'T * arg2:'U -> 'V /// Construct an instance of an F# first class function value /// The created F# function. new : unit -> FSharpFunc<'T,'U> [] [] /// Helper functions for converting F# first class function values to and from CLI representaions /// of functions using delegates. type FuncConvert = /// Convert the given Action delegate object to an F# function value /// The input action. /// The F# function. static member ToFSharpFunc : action:Action<'T> -> ('T -> unit) #if FX_NO_CONVERTER #else /// Convert the given Converter delegate object to an F# function value /// The input Converter. /// The F# function. static member ToFSharpFunc : converter:Converter<'T,'U> -> ('T -> 'U) #endif /// A utility function to convert function values from tupled to curried form /// The input tupled function. /// The output curried function. static member FuncFromTupled : func:('T1 * 'T2 -> 'U) -> ('T1 -> 'T2 -> 'U) /// A utility function to convert function values from tupled to curried form /// The input tupled function. /// The output curried function. static member FuncFromTupled : func:('T1 * 'T2 * 'T3 -> 'U) -> ('T1 -> 'T2 -> 'T3 -> 'U) /// A utility function to convert function values from tupled to curried form /// The input tupled function. /// The output curried function. static member FuncFromTupled : func:('T1 * 'T2 * 'T3 * 'T4 -> 'U) -> ('T1 -> 'T2 -> 'T3 -> 'T4 -> 'U) /// A utility function to convert function values from tupled to curried form /// The input tupled function. /// The output curried function. static member FuncFromTupled : func:('T1 * 'T2 * 'T3 * 'T4 * 'T5 -> 'U) -> ('T1 -> 'T2 -> 'T3 -> 'T4 -> 'T5 -> 'U) /// An implementation module used to hold some private implementations of function /// value invocation. module OptimizedClosures = /// The CLI type used to represent F# function values that accept /// two iterated (curried) arguments without intervening execution. This type should not /// typically used directly from either F# code or from other CLI languages. [] type FSharpFunc<'T1,'T2,'U> = inherit FSharpFunc<'T1,('T2 -> 'U)> /// Invoke the optimized function value with two curried arguments /// The first arg. /// The second arg. /// The function result. abstract member Invoke : arg1:'T1 * arg2:'T2 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept two curried arguments without intervening execution. /// The input function. /// The adapted function. static member Adapt : func:('T1 -> 'T2 -> 'U) -> FSharpFunc<'T1,'T2,'U> /// Construct an optimized function value that can accept two curried /// arguments without intervening execution. /// The optimized function. new : unit -> FSharpFunc<'T1,'T2,'U> /// The CLI type used to represent F# function values that accept /// three iterated (curried) arguments without intervening execution. This type should not /// typically used directly from either F# code or from other CLI languages. [] type FSharpFunc<'T1,'T2,'T3,'U> = inherit FSharpFunc<'T1,('T2 -> 'T3 -> 'U)> /// Invoke an F# first class function value that accepts three curried arguments /// without intervening execution /// The first arg. /// The second arg. /// The third arg. /// The function result. abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept three curried arguments without intervening execution. /// The input function. /// The adapted function. static member Adapt : func:('T1 -> 'T2 -> 'T3 -> 'U) -> FSharpFunc<'T1,'T2,'T3,'U> /// Construct an optimized function value that can accept three curried /// arguments without intervening execution. /// The optimized function. new : unit -> FSharpFunc<'T1,'T2,'T3,'U> /// The CLI type used to represent F# function values that accept four curried arguments /// without intervening execution. This type should not typically used directly from /// either F# code or from other CLI languages. [] type FSharpFunc<'T1,'T2,'T3,'T4,'U> = inherit FSharpFunc<'T1,('T2 -> 'T3 -> 'T4 -> 'U)> /// Invoke an F# first class function value that accepts four curried arguments /// without intervening execution /// The first arg. /// The second arg. /// The third arg. /// The fourth arg. /// The function result. abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept four curried arguments without intervening execution. /// The input function. /// The optimized function. static member Adapt : func:('T1 -> 'T2 -> 'T3 -> 'T4 -> 'U) -> FSharpFunc<'T1,'T2,'T3,'T4,'U> /// Construct an optimized function value that can accept four curried /// arguments without intervening execution. /// The optimized function. new : unit -> FSharpFunc<'T1,'T2,'T3,'T4,'U> /// The CLI type used to represent F# function values that accept five curried arguments /// without intervening execution. This type should not typically used directly from /// either F# code or from other CLI languages. [] type FSharpFunc<'T1,'T2,'T3,'T4,'T5,'U> = inherit FSharpFunc<'T1,('T2 -> 'T3 -> 'T4 -> 'T5 -> 'U)> /// Invoke an F# first class function value that accepts five curried arguments /// without intervening execution /// The first arg. /// The second arg. /// The third arg. /// The fourth arg. /// The fifth arg. /// The function result. abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 * arg5:'T5 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept five curried arguments without intervening execution. /// The input function. /// The optimized function. static member Adapt : func:('T1 -> 'T2 -> 'T3 -> 'T4 -> 'T5 -> 'U) -> FSharpFunc<'T1,'T2,'T3,'T4,'T5,'U> /// Construct an optimized function value that can accept five curried /// arguments without intervening execution. /// The optimized function. new : unit -> FSharpFunc<'T1,'T2,'T3,'T4,'T5,'U> //------------------------------------------------------------------------- // F# Mutable Reference Cells /// The type of mutable references. Use the functions [:=] and [!] to get and /// set values of this type. [] [] type Ref<'T> = { /// The current value of the reference cell mutable contents: 'T;} /// The current value of the reference cell member Value : 'T with get,set /// The type of mutable references. Use the functions [:=] and [!] to get and /// set values of this type. and 'T ref = Ref<'T> //------------------------------------------------------------------------- // F# Option Types /// The type of optional values. When used from other CLI languages the /// empty option is the null value. /// /// Use the constructors Some and None to create values of this type. /// Use the values in the Option module to manipulate values of this type, /// or pattern match against the values directly. /// /// None values will appear as the value null to other CLI languages. /// Instance methods on this type will appear as static methods to other CLI languages /// due to the use of null as a value representation. [] [] [] [] type Option<'T> = /// The representation of "No value" | None : 'T option /// The representation of "Value of type 'T" /// The input value. /// An option representing the value. | Some : Value:'T -> 'T option /// Create an option value that is a 'None' value. static member None : 'T option /// Create an option value that is a 'Some' value. /// The input value /// An option representing the value. static member Some : value:'T -> 'T option [] /// Get the value of a 'Some' option. A NullReferenceException is raised if the option is 'None'. member Value : 'T /// Return 'true' if the option is a 'Some' value. member IsSome : bool /// Return 'true' if the option is a 'None' value. member IsNone : bool /// The type of optional values. When used from other CLI languages the /// empty option is the null value. /// /// Use the constructors Some and None to create values of this type. /// Use the values in the Option module to manipulate values of this type, /// or pattern match against the values directly. /// /// 'None' values will appear as the value null to other CLI languages. /// Instance methods on this type will appear as static methods to other CLI languages /// due to the use of null as a value representation. and 'T option = Option<'T> namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open Microsoft.FSharp.Core /// The type of immutable singly-linked lists. /// /// Use the constructors [] and :: (infix) to create values of this type, or /// the notation [1;2;3]. Use the values in the List module to manipulate /// values of this type, or pattern match against the values directly. [] [] [] type List<'T> = | ([]) : 'T list | (::) : Head: 'T * Tail: 'T list -> 'T list /// Returns an empty list of a particular type static member Empty : 'T list /// Gets the number of items contained in the list member Length : int /// Gets a value indicating if the list contains no entries member IsEmpty : bool /// Gets the first element of the list member Head : 'T /// Gets the tail of the list, which is a list containing all the elements of the list, excluding the first element member Tail : 'T list /// Gets the element of the list at the given position. /// Lists are represented as linked lists so this is an O(n) operation. /// The index. /// The value at the given index. member Item : index:int -> 'T with get // /// Get the elements of the list from the given start index to the given end index. // member GetSlice : startIndex:int option * endIndex:int option -> 'T list /// Returns a list with head as its first element and tail as its subsequent elements /// A new head value for the list. /// The existing list. /// The list with head appended to the front of tail. static member Cons : head:'T * tail:'T list -> 'T list interface System.Collections.Generic.IEnumerable<'T> interface System.Collections.IEnumerable /// An abbreviation for the type of immutable singly-linked lists. /// /// Use the constructors [] and :: (infix) to create values of this type, or /// the notation [1;2;3]. Use the values in the List module to manipulate /// values of this type, or pattern match against the values directly. and 'T list = List<'T> /// An abbreviation for the CLI type System.Collections.Generic.List<_> type ResizeArray<'T> = System.Collections.Generic.List<'T> /// An abbreviation for the CLI type System.Collections.Generic.IEnumerable<_> type seq<'T> = IEnumerable<'T> namespace Microsoft.FSharp.Core open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Basic F# Operators. This module is automatically opened in all F# code. [] module Operators = // Arithmetic operators. These operators are overloaded and can be used // on any pair of types that satisfies the constraint, e.g. the // '+' function can be used on any type that supports the "op_Addition" // constraint. This includes all CLI types that support the op_Addition // operator. The standard integral and floating point types support // constraints as follows: // - The built-in integral types are: // sbyte, byte, int16, uint16, int32, unit32, // int64, uint64, nativeint, unativeint // // - The built-in floating point types are: // float, float32 // // - The built-in numeric types are these combined // // All built-in numeric types support: // 'ty.(+) : (ty,ty) -> ty // 'ty.(-) : (ty,ty) -> ty // 'ty.( * ) : (ty,ty) -> ty // 'ty.(/) : (ty,ty) -> ty // 'ty.(%) : (ty,ty) -> ty // 'ty.(~+) : (ty) -> ty // // All signed numeric types support: // 'ty.(~-) : (ty) -> ty /// Overloaded unary negation. /// The value to negate. /// The result of the operation. val inline ( ~- ) : n:^T -> ^T when ^T : (static member ( ~- ) : ^T -> ^T) and default ^T : int /// Overloaded addition operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline ( + ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded subtraction operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline ( - ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded multiplication operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline ( * ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded division operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline ( / ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded modulo operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline ( % ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded bitwise-AND operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline (&&&): x:^T -> y:^T -> ^T when ^T : (static member (&&&) : ^T * ^T -> ^T) and default ^T : int /// Overloaded bitwise-OR operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline (|||) : x:^T -> y:^T -> ^T when ^T : (static member (|||) : ^T * ^T -> ^T) and default ^T : int /// Overloaded bitwise-XOR operator /// The first parameter. /// The second parameter. /// The result of the operation. val inline (^^^) : x:^T -> y:^T -> ^T when ^T : (static member (^^^) : ^T * ^T -> ^T) and default ^T : int /// Overloaded byte-shift left operator by a specified number of bits /// The input value. /// The amount to shift. /// The result of the operation. val inline (<<<) : value:^T -> shift:int32 -> ^T when ^T : (static member (<<<) : ^T * int32 -> ^T) and default ^T : int /// Overloaded byte-shift right operator by a specified number of bits /// The input value. /// The amount to shift. /// The result of the operation. val inline (>>>) : value:^T -> shift:int32 -> ^T when ^T : (static member (>>>) : ^T * int32 -> ^T) and default ^T : int /// Overloaded logical-NOT operator /// The input value. /// The result of the operation. val inline (~~~) : value:^T -> ^T when ^T : (static member (~~~) : ^T -> ^T) and default ^T : int /// Overloaded prefix=plus operator /// The input value. /// The result of the operation. val inline (~+) : value:^T -> ^T when ^T : (static member (~+) : ^T -> ^T) and default ^T : int /// Structural less-than comparison /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( < ) : x:'T -> y:'T -> bool when 'T : comparison /// Structural greater-than /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( > ) : x:'T -> y:'T -> bool when 'T : comparison /// Structural greater-than-or-equal /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( >= ) : x:'T -> y:'T -> bool when 'T : comparison /// Structural less-than-or-equal comparison /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( <= ) : x:'T -> y:'T -> bool when 'T : comparison /// Structural equality /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( = ) : x:'T -> y:'T -> bool when 'T : equality /// Structural inequality /// The first parameter. /// The second parameter. /// The result of the comparison. val inline ( <> ) : x:'T -> y:'T -> bool when 'T : equality /// Compose two functions, the function on the left being applied first /// The first function to apply. /// The second function to apply. /// The composition of the input functions. val inline (>>): func1:('T1 -> 'T2) -> func2:('T2 -> 'T3) -> ('T1 -> 'T3) /// Compose two functions, the function on the right being applied first /// The second function to apply. /// The first function to apply. /// The composition of the input functions. val inline (<<): func2:('T2 -> 'T3) -> func1:('T1 -> 'T2) -> ('T1 -> 'T3) /// Apply a function to a value, the value being on the left, the function on the right /// The argument. /// The function. /// The function result. val inline (|>): arg:'T1 -> func:('T1 -> 'U) -> 'U /// Apply a function to two values, the values being a pair on the left, the function on the right /// The first argument. /// The second argument. /// The function. /// The function result. val inline (||>): arg1:'T1 * arg2:'T2 -> func:('T1 -> 'T2 -> 'U) -> 'U /// Apply a function to three values, the values being a triple on the left, the function on the right /// The first argument. /// The second argument. /// The third argument. /// The function. /// The function result. val inline (|||>): arg1:'T1 * arg2:'T2 * arg3:'T3 -> func:('T1 -> 'T2 -> 'T3 -> 'U) -> 'U /// Apply a function to a value, the value being on the right, the function on the left /// The function. /// The argument. /// The function result. val inline (<|): func:('T -> 'U) -> arg1:'T -> 'U /// Apply a function to two values, the values being a pair on the right, the function on the left /// The function. /// The first argument. /// The second argument. /// The function result. val inline (<||): func:('T1 -> 'T2 -> 'U) -> arg1:'T1 * arg2:'T2 -> 'U /// Apply a function to three values, the values being a triple on the right, the function on the left /// The function. /// The first argument. /// The second argument. /// The third argument. /// The function result. val inline (<|||): func:('T1 -> 'T2 -> 'T3 -> 'U) -> arg1:'T1 * arg2:'T2 * arg3:'T3 -> 'U /// Used to specify a default value for an optional argument in the implementation of a function /// An option representing the argument. /// The default value of the argument. /// The argument value. If it is None, the defaultValue is returned. [] val defaultArg : arg:'T option -> defaultValue:'T -> 'T /// Concatenate two strings. The operator '+' may also be used. [] val (^): s1:string -> s2:string -> string /// Raises an exception /// The exception to raise. /// The result value. [] val raise : exn:System.Exception -> 'T /// Rethrows an exception. This should only be used when handling an exception /// The result value. [] [] [] val inline rethrow : unit -> 'T /// Rethrows an exception. This should only be used when handling an exception /// The result value. [] [] val inline reraise : unit -> 'T /// Builds a System.Exception object. /// The message for the Exception. /// A System.Exception. val Failure : message:string -> exn /// Matches System.Exception objects whose runtime type is precisely System.Exception /// The input exception. /// A string option. [] val (|Failure|_|) : error:exn -> string option /// Return the first element of a tuple, fst (a,b) = a. /// The input tuple. /// The first value. [] val fst : tuple:('T1 * 'T2) -> 'T1 /// Return the second element of a tuple, snd (a,b) = b. /// The input tuple. /// The second value. [] val snd : tuple:('T1 * 'T2) -> 'T2 /// Generic comparison. /// The first value. /// The second value. /// The result of the comparison. [] val inline compare: e1:'T -> e2:'T -> int when 'T : comparison /// Maximum based on generic comparison /// The first value. /// The second value. /// The maximum value. [] val inline max : e1:'T -> e2:'T -> 'T when 'T : comparison /// Minimum based on generic comparison /// The first value. /// The second value. /// The minimum value. [] val inline min : e1:'T -> e2:'T -> 'T when 'T : comparison /// Ignore the passed value. This is often used to throw away results of a computation. /// The value to ignore. [] val inline ignore : value:'T -> unit /// Unboxes a strongly typed value. This is the inverse of box, unbox<t>(box<t> a) equals a. /// The boxed value. /// The unboxed result. [] val inline unbox : value:obj -> 'T /// Boxes a strongly typed value. /// The value to box. /// The boxed object. [] val inline box : value:'T -> obj /// Throw a System.Exception exception. /// The exception message. /// The result value. [] val failwith : message:string -> 'T /// Throw a System.ArgumentException exception with /// the given argument name and message. /// The argument name. /// The exception message. /// The result value. [] val inline invalidArg : argumentName:string -> message:string -> 'T /// Throw a System.ArgumentNullException exception /// The argument name. /// The result value. [] val inline nullArg : argumentName:string -> 'T /// Throw a System.InvalidOperationException exception /// The exception message. /// The result value. [] val inline invalidOp : message:string -> 'T /// The identity function /// The input value. /// The same value. [] val id : x:'T -> 'T /// Create a mutable reference cell /// The value to contain in the cell. /// The created reference cell. [] val ref : value:'T -> 'T ref /// Assign to a mutable reference cell /// The cell to mutate. /// The value to set inside the cell. val ( := ) : cell:'T ref -> value:'T -> unit /// Dereference a mutable reference cell /// The cell to dereference. /// The value contained in the cell. val ( ! ) : cell:'T ref -> 'T /// Decrement a mutable reference cell containing an integer /// The reference cell. [] val decr: cell:int ref -> unit /// Increment a mutable reference cell containing an integer /// The reference cell. [] val incr: cell:int ref -> unit /// Concatenate two lists. /// The first list. /// The second list. /// The concatenation of the lists. val (@): list1:'T list -> list2:'T list -> 'T list /// Negate a logical value. not true equals false and not false equals true /// The value to negate. /// The result of the negation. [] val inline not : value:bool -> bool /// Builds a sequence using sequence expression syntax /// The input sequence. /// The result sequence. [] val seq : sequence:seq<'T> -> seq<'T> #if FX_NO_EXIT #else /// Exit the current hardware isolated process, if security settings permit, /// otherwise raise an exception. Calls System.Environment.Exit. /// The exit code to use. /// The result value. [] val exit: exitcode:int -> 'T when default 'T : obj #endif /// Equivalent to System.Double.PositiveInfinity [] val infinity: float /// Equivalent to System.Double.NaN [] val nan: float /// Equivalent to System.Single.PositiveInfinity [] val infinityf: float32 /// Equivalent to System.Single.NaN [] val nanf: float32 #if FX_NO_SYSTEM_CONSOLE #else /// Reads the value of the property System.Console.In. [] val stdin<'T> : System.IO.TextReader /// Reads the value of the property System.Console.Error. [] val stderr<'T> : System.IO.TextWriter /// Reads the value of the property System.Console.Out. [] val stdout<'T> : System.IO.TextWriter #endif /// The standard overloaded range operator, e.g. [n..m] for lists, seq {n..m} for sequences /// The start value of the range. /// The end value of the range. /// The sequence spanning the range. val inline (..) : start:^T -> finish:^T -> seq< ^T > when ^T : (static member (+) : ^T * ^T -> ^T) and ^T : (static member One : ^T) and ^T : equality and ^T : comparison and default ^T : int /// The standard overloaded skip range operator, e.g. [n..skip..m] for lists, seq {n..skip..m} for sequences /// The start value of the range. /// The step value of the range. /// The end value of the range. /// The sequence spanning the range using the specified step size. val inline (.. ..) : start:^T -> step:^Step -> finish:^T -> seq< ^T > when (^T or ^Step) : (static member (+) : ^T * ^Step -> ^T) and ^Step : (static member Zero : ^Step) and ^T : equality and ^T : comparison and default ^Step : ^T and default ^T : int /// Execute the function as a mutual-exclusion region using the input value as a lock. /// The object to be locked. /// The action to perform during the lock. /// The resulting value. [] val inline lock: lockObject:'Lock -> action:(unit -> 'T) -> 'T when 'Lock : not struct /// Clean up resources associated with the input object after the completion of the given function. /// Cleanup occurs even when an exception is raised by the protected /// code. /// The resource to be disposed after action is called. /// The action that accepts the resource. /// The resulting value. [] val using: resource:('T :> System.IDisposable) -> action:('T -> 'U) -> 'U /// Generate a System.Type runtime representation of a static type. /// The static type is still maintained on the value returned. [] [] val inline typeof<'T> : System.Type /// An internal, library-only compiler intrinsic for compile-time /// generation of a RuntimeMethodHandle. [] #if DEBUG val methodhandleof : ('T -> 'TResult) -> System.RuntimeMethodHandle #else val internal methodhandleof : ('T -> 'TResult) -> System.RuntimeMethodHandle #endif /// Generate a System.Type representation for a type definition. If the /// input type is a generic type instantiation then return the /// generic type definition associated with all such instantiations. [] [] val inline typedefof<'T> : System.Type /// Returns the internal size of a type in bytes. For example, sizeof<int> returns 4. [] [] val inline sizeof<'T> : int /// A generic hash function, designed to return equal hash values for items that are /// equal according to the "=" operator. By default it will use structural hashing /// for F# union, record and tuple types, hashing the complete contents of the /// type. The exact behaviour of the function can be adjusted on a /// type-by-type basis by implementing GetHashCode for each type. /// The input object. /// The computed hash. [] val inline hash: obj:'T -> int when 'T : equality /// A generic hash function. This function has the same behaviour as 'hash', /// however the default structural hashing for F# union, record and tuple /// types stops when the given limit of nodes is reached. The exact behaviour of /// the function can be adjusted on a type-by-type basis by implementing /// GetHashCode for each type. /// The limit of nodes. /// The input object. /// The computed hash. val inline limitedHash: limit: int -> obj:'T -> int when 'T : equality /// Absolute value of the given number. /// The input value. /// The absolute value of the input. [] val inline abs : value:^T -> ^T when ^T : (static member Abs : ^T -> ^T) and default ^T : int /// Inverse cosine of the given number /// The input value. /// The inverse cosine of the input. [] val inline acos : value:^T -> ^T when ^T : (static member Acos : ^T -> ^T) and default ^T : float /// Inverse sine of the given number /// The input value. /// The inverse sine of the input. [] val inline asin : value:^T -> ^T when ^T : (static member Asin : ^T -> ^T) and default ^T : float /// Inverse tangent of the given number /// The input value. /// The inverse tangent of the input. [] val inline atan : value:^T -> ^T when ^T : (static member Atan : ^T -> ^T) and default ^T : float /// Inverse tangent of x/y where x and y are specified separately /// The y input value. /// The x input value. /// The inverse tangent of the input ratio. [] val inline atan2 : y:^T1 -> x:^T1 -> 'T2 when ^T1 : (static member Atan2 : ^T1 * ^T1 -> 'T2) and default ^T1 : float /// Ceiling of the given number /// The input value. /// The ceiling of the input. [] val inline ceil : value:^T -> ^T when ^T : (static member Ceiling : ^T -> ^T) and default ^T : float /// Exponential of the given number /// The input value. /// The exponential of the input. [] val inline exp : value:^T -> ^T when ^T : (static member Exp : ^T -> ^T) and default ^T : float /// Floor of the given number /// The input value. /// The floor of the input. [] val inline floor : value:^T -> ^T when ^T : (static member Floor : ^T -> ^T) and default ^T : float /// Sign of the given number /// The input value. /// -1, 0, or 1 depending on the sign of the input. [] val inline sign : value:^T -> int when ^T : (member Sign : int) and default ^T : float /// Round the given number /// The input value. /// The nearest integer to the input value. [] val inline round : value:^T -> ^T when ^T : (static member Round : ^T -> ^T) and default ^T : float /// Natural logarithm of the given number /// The input value. /// The natural logarithm of the input. [] val inline log : value:^T -> ^T when ^T : (static member Log : ^T -> ^T) and default ^T : float /// Logarithm to base 10 of the given number /// The input value. /// The logarithm to base 10 of the input. [] val inline log10 : value:^T -> ^T when ^T : (static member Log10 : ^T -> ^T) and default ^T : float /// Square root of the given number /// The input value. /// The square root of the input. [] val inline sqrt : value:^T -> ^U when ^T : (static member Sqrt : ^T -> ^U) and default ^U : ^T and default ^T : ^U and default ^T : float /// Cosine of the given number /// The input value. /// The cosine of the input. [] val inline cos : value:^T -> ^T when ^T : (static member Cos : ^T -> ^T) and default ^T : float /// Hyperbolic cosine of the given number /// The input value. /// The hyperbolic cosine of the input. [] val inline cosh : value:^T -> ^T when ^T : (static member Cosh : ^T -> ^T) and default ^T : float /// Sine of the given number /// The input value. /// The sine of the input. [] val inline sin : value:^T -> ^T when ^T : (static member Sin : ^T -> ^T) and default ^T : float /// Hyperbolic sine of the given number /// The input value. /// The hyperbolic sine of the input. [] val inline sinh : value:^T -> ^T when ^T : (static member Sinh : ^T -> ^T) and default ^T : float /// Tangent of the given number /// The input value. /// The tangent of the input. [] val inline tan : value:^T -> ^T when ^T : (static member Tan : ^T -> ^T) and default ^T : float /// Hyperbolic tangent of the given number /// The input value. /// The hyperbolic tangent of the input. [] val inline tanh : value:^T -> ^T when ^T : (static member Tanh : ^T -> ^T) and default ^T : float #if FX_NO_TRUNCATE #else /// Overloaded truncate operator. /// The input value. /// The truncated value. [] val inline truncate : value:^T -> ^T when ^T : (static member Truncate : ^T -> ^T) and default ^T : float #endif /// Overloaded power operator. /// The input base. /// The input exponent. /// The base raised to the exponent. val inline ( ** ) : x:^T -> y:^U -> ^T when ^T : (static member Pow : ^T * ^U -> ^T) and default ^U : float and default ^T : float /// Overloaded power operator. If n > 0 then equivalent to x*...*x for n occurrences of x. /// The input base. /// The input exponent. /// The base raised to the exponent. [] val inline pown : x:^T -> n:int -> ^T when ^T : (static member One : ^T) and ^T : (static member ( * ) : ^T * ^T -> ^T) and ^T : (static member ( / ) : ^T * ^T -> ^T) and default ^T : int /// Converts the argument to byte. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Byte.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted byte [] val inline byte : value:^T -> byte when ^T : (static member op_Explicit : ^T -> byte) and default ^T : int /// Converts the argument to signed byte. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using SByte.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted sbyte [] val inline sbyte : value:^T -> sbyte when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int /// Converts the argument to signed 16-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Int16.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int16 [] val inline int16 : value:^T -> int16 when ^T : (static member op_Explicit : ^T -> int16) and default ^T : int /// Converts the argument to unsigned 16-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using UInt16.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint16 [] val inline uint16 : value:^T -> uint16 when ^T : (static member op_Explicit : ^T -> uint16) and default ^T : int /// Converts the argument to signed 32-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Int32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int [] val inline int : value:^T -> int when ^T : (static member op_Explicit : ^T -> int) and default ^T : int /// Converts the argument to a particular enum type. /// The input value. /// The converted enum type. [] val inline enum : value:int32 -> ^U when ^U : enum /// Converts the argument to signed 32-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Int32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int32 [] val inline int32 : value:^T -> int32 when ^T : (static member op_Explicit : ^T -> int32) and default ^T : int /// Converts the argument to unsigned 32-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using UInt32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint32 [] val inline uint32 : value:^T -> uint32 when ^T : (static member op_Explicit : ^T -> uint32) and default ^T : int /// Converts the argument to signed 64-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Int64.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int64 [] val inline int64 : value:^T -> int64 when ^T : (static member op_Explicit : ^T -> int64) and default ^T : int /// Converts the argument to unsigned 64-bit integer. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using UInt64.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint64 [] val inline uint64 : value:^T -> uint64 when ^T : (static member op_Explicit : ^T -> uint64) and default ^T : int /// Converts the argument to 32-bit float. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Single.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted float32 [] val inline float32 : value:^T -> float32 when ^T : (static member op_Explicit : ^T -> float32) and default ^T : int /// Converts the argument to 64-bit float. This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Double.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted float [] val inline float : value:^T -> float when ^T : (static member op_Explicit : ^T -> float) and default ^T : int /// Converts the argument to signed native integer. This is a direct conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted nativeint [] val inline nativeint : value:^T -> nativeint when ^T : (static member op_Explicit : ^T -> nativeint) and default ^T : int /// Converts the argument to unsigned native integer using a direct conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted unativeint [] val inline unativeint : value:^T -> unativeint when ^T : (static member op_Explicit : ^T -> unativeint) and default ^T : int /// Converts the argument to a string using ToString. /// /// For standard integer and floating point values the ToString conversion /// uses CultureInfo.InvariantCulture. /// The input value. /// The converted string. [] val inline string : value:^T -> string /// Converts the argument to System.Decimal using a direct conversion for all /// primitive numeric types. For strings, the input is converted using UInt64.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted decimal. [] val inline decimal : value:^T -> decimal when ^T : (static member op_Explicit : ^T -> decimal) and default ^T : int /// Converts the argument to character. Numeric inputs are converted according to the UTF-16 /// encoding for characters. String inputs must be exactly one character long. For other /// input types the operation requires an appropriate static conversion method on the input type. /// The input value. /// The converted char. [] val inline char : value:^T -> char when ^T : (static member op_Explicit : ^T -> char) and default ^T : int /// An active pattern to match values of type System.Collections.Generic.KeyValuePair /// The input key/value pair. /// A tuple containing the key and value. [] val ( |KeyValue| ): keyValuePair:KeyValuePair<'Key,'Value> -> 'Key * 'Value #if MULTI_DIMENSIONAL_EXTENSION_PROPERTIES type ``[,]``<'T> with [] /// Get the length of an array in the first dimension member Length1 : int [] /// Get the length of the array in the second dimension member Length2 : int [] /// Get the lower bound of the array in the first dimension member Base1 : int [] /// Get the lower bound of the array in the second dimension member Base2 : int type ``[,,]``<'T> with [] /// Get the length of an array in the first dimension member Length1 : int [] /// Get the length of an array in the second dimension member Length2 : int [] /// Get the length of an array in the third dimension member Length3 : int [] /// Get the lower bound of the array in the first dimension member Base1 : int [] /// Get the lower bound of the array in the second dimension member Base2 : int [] /// Get the lower bound of the array in the third dimension member Base3 : int type ``[,,,]``<'T> with [] /// Get the length of an array in the first dimension member Length1 : int [] /// Get the length of an array in the second dimension member Length2 : int [] /// Get the length of an array in the third dimension member Length3 : int [] /// Get the length of an array in the fourth dimension member Length4 : int [] /// Get the lower bound of the array in the first dimension member Base1 : int [] /// Get the lower bound of the array in the second dimension member Base2 : int [] /// Get the lower bound of the array in the third dimension member Base3 : int [] /// Get the lower bound of the array in the fourth dimension member Base4 : int #endif /// A module of compiler intrinsic functions for efficient implementations of F# integer ranges /// and dynamic invocations of other F# operators module OperatorIntrinsics = /// Gets a slice of an array /// The input array. /// The start index. /// The end index. /// The sub array from the input indices. val inline GetArraySlice : source:'T[] -> start:int option -> finish:int option -> 'T[] /// Sets a slice of an array /// The target array. /// The start index. /// The end index. /// The source array. val inline SetArraySlice : target:'T[] -> start:int option -> finish:int option -> source:'T[] -> unit /// Gets a slice of an array /// The source array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The two dimensional sub array from the input indices. val GetArraySlice2D : source:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> 'T[,] /// Sets a slice of an array /// The target array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The source array. val SetArraySlice2D : target:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> source:'T[,] -> unit /// Gets a slice of an array /// The source array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The start index of the third dimension. /// The end index of the third dimension. /// The three dimensional sub array from the given indices. val GetArraySlice3D : source:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> 'T[,,] /// Sets a slice of an array /// The target array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The start index of the third dimension. /// The end index of the third dimension. /// The source array. val SetArraySlice3D : target:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> source:'T[,,] -> unit /// Gets a slice of an array /// The source array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The start index of the third dimension. /// The end index of the third dimension. /// The start index of the fourth dimension. /// The end index of the fourth dimension. /// The four dimensional sub array from the given indices. val GetArraySlice4D : source:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,,,] /// Sets a slice of an array /// The target array. /// The start index of the first dimension. /// The end index of the first dimension. /// The start index of the second dimension. /// The end index of the second dimension. /// The start index of the third dimension. /// The end index of the third dimension. /// The start index of the fourth dimension. /// The end index of the fourth dimension. /// The source array. val SetArraySlice4D : target:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source:'T[,,,] -> unit /// Gets a slice from a string /// The source string. /// The index of the first character of the slice. /// The index of the last character of the slice. /// The substring from the given indices. val inline GetStringSlice : source:string -> start:int option -> finish:int option -> string /// Generate a range of integers [] val RangeInt32 : start:int -> step:int -> stop:int -> seq /// Generate a range of float values [] val RangeDouble : start:float -> step:float -> stop:float -> seq /// Generate a range of float32 values [] val RangeSingle : start:float32 -> step:float32 -> stop:float32 -> seq /// Generate a range of int64 values [] val RangeInt64 : start:int64 -> step:int64 -> stop:int64 -> seq /// Generate a range of uint64 values [] val RangeUInt64 : start:uint64 -> step:uint64 -> stop:uint64 -> seq /// Generate a range of uint32 values [] val RangeUInt32 : start:uint32 -> step:uint32 -> stop:uint32 -> seq /// Generate a range of nativeint values [] val RangeIntPtr : start:nativeint -> step:nativeint -> stop:nativeint -> seq /// Generate a range of unativeint values [] val RangeUIntPtr : start:unativeint -> step:unativeint -> stop:unativeint -> seq /// Generate a range of int16 values [] val RangeInt16 : start:int16 -> step:int16 -> stop:int16 -> seq /// Generate a range of uint16 values [] val RangeUInt16 : start:uint16 -> step:uint16 -> stop:uint16 -> seq /// Generate a range of sbyte values [] val RangeSByte : start:sbyte -> step:sbyte -> stop:sbyte -> seq /// Generate a range of byte values [] val RangeByte : start:byte -> step:byte -> stop:byte -> seq /// Generate a range of char values [] val RangeChar : start:char -> stop:char -> seq /// Generate a range of values using the given zero, add, start, step and stop values [] val RangeGeneric : one:'T -> add:('T -> 'T -> 'T) -> start:'T -> stop:'T -> seq<'T> /// Generate a range of values using the given zero, add, start, step and stop values [] val RangeStepGeneric : zero:'Step -> add:('T -> 'Step -> 'T) -> start:'T -> step:'Step -> stop:'T -> seq<'T> /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val AbsDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val AcosDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val AsinDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val AtanDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val Atan2Dynamic : y:'T1 -> x:'T1 -> 'T2 /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val CeilingDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val ExpDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val FloorDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val TruncateDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val RoundDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val SignDynamic : 'T -> int /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val LogDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val Log10Dynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val SqrtDynamic : 'T1 -> 'T2 /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val CosDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val CoshDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val SinDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val SinhDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val TanDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val TanhDynamic : x:'T -> 'T /// This is a library intrinsic. Calls to this function may be generated by evaluating quotations. [] val PowDynamic : x:'T -> y:'U -> 'T /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'byte' [] val PowByte : x:byte -> n:int -> byte /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'sbyte' [] val PowSByte : x:sbyte -> n:int -> sbyte /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'int16' [] val PowInt16 : x:int16 -> n:int -> int16 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'uint16' [] val PowUInt16 : x:uint16 -> n:int -> uint16 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'int32' [] val PowInt32 : x:int32 -> n:int -> int32 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'uint32' [] val PowUInt32 : x:uint32 -> n:int -> uint32 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'int64' [] val PowInt64 : x:int64 -> n:int -> int64 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'uint64' [] val PowUInt64 : x:uint64 -> n:int -> uint64 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'nativeint' [] val PowIntPtr : x:nativeint -> n:int -> nativeint /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'unativeint' [] val PowUIntPtr : x:unativeint -> n:int -> unativeint /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'float32' [] val PowSingle : x:float32 -> n:int -> float32 /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'float' [] val PowDouble : x:float -> n:int -> float /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator on values of type 'decimal' [] val PowDecimal : x:decimal -> n:int -> decimal /// This is a library intrinsic. Calls to this function may be generated by uses of the generic 'pown' operator [] val PowGeneric : one:'T * mul: ('T -> 'T -> 'T) * value:'T * exponent:int -> 'T /// This module contains basic operations which do not apply runtime and/or static checks module Unchecked = /// Unboxes a strongly typed value. This is the inverse of box, unbox<t>(box<t> a) equals a. /// The boxed value. /// The unboxed result. [] val inline unbox<'T> : obj -> 'T /// Generate a default value for any type. This is null for reference types, /// For structs, this is struct value where all fields have the default value. /// This function is unsafe in the sense that some F# values do not have proper null values. [] [] val inline defaultof<'T> : 'T [] /// Perform generic comparison on two values where the type of the values is not /// statically required to have the 'comparison' constraint. /// The result of the comparison. val inline compare : 'T -> 'T -> int [] /// Perform generic equality on two values where the type of the values is not /// statically required to satisfy the 'equality' constraint. /// The result of the comparison. val inline equals : 'T -> 'T -> bool [] /// Perform generic hashing on a value where the type of the value is not /// statically required to satisfy the 'equality' constraint. /// The computed hash value. val inline hash : 'T -> int /// This module contains the basic arithmetic operations with overflow checks. module Checked = /// Overloaded unary negation (checks for overflow) /// The input value. /// The negated value. [] val inline ( ~- ) : value:^T -> ^T when ^T : (static member ( ~- ) : ^T -> ^T) and default ^T : int /// Overloaded subtraction operator (checks for overflow) /// The first value. /// The second value. /// The first value minus the second value. [] val inline ( - ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded addition operator (checks for overflow) /// The first value. /// The second value. /// The sum of the two input values. val inline ( + ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Overloaded multiplication operator (checks for overflow) /// The first value. /// The second value. /// The product of the two input values. [] val inline ( * ) : x:^T1 -> y:^T2 -> ^T3 when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Converts the argument to byte. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.Byte.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted byte [] [] val inline byte : value:^T -> byte when ^T : (static member op_Explicit : ^T -> byte) and default ^T : int /// Converts the argument to sbyte. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.SByte.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted sbyte [] [] val inline sbyte : value:^T -> sbyte when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int /// Converts the argument to int16. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.Int16.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int16 [] [] val inline int16 : value:^T -> int16 when ^T : (static member op_Explicit : ^T -> int16) and default ^T : int /// Converts the argument to uint16. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.UInt16.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint16 [] [] val inline uint16 : value:^T -> uint16 when ^T : (static member op_Explicit : ^T -> uint16) and default ^T : int /// Converts the argument to int. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.Int32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int [] [] val inline int : value:^T -> int when ^T : (static member op_Explicit : ^T -> int) and default ^T : int /// Converts the argument to int32. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.Int32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int32 [] [] val inline int32 : value:^T -> int32 when ^T : (static member op_Explicit : ^T -> int32) and default ^T : int /// Converts the argument to uint32. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.UInt32.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint32 [] [] val inline uint32 : value:^T -> uint32 when ^T : (static member op_Explicit : ^T -> uint32) and default ^T : int /// Converts the argument to int64. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.Int64.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int64 [] [] val inline int64 : value:^T -> int64 when ^T : (static member op_Explicit : ^T -> int64) and default ^T : int /// Converts the argument to uint64. This is a direct, checked conversion for all /// primitive numeric types. For strings, the input is converted using System.UInt64.Parse() /// with InvariantCulture settings. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint64 [] [] val inline uint64 : value:^T -> uint64 when ^T : (static member op_Explicit : ^T -> uint64) and default ^T : int /// Converts the argument to nativeint. This is a direct, checked conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted nativeint [] [] val inline nativeint : value:^T -> nativeint when ^T : (static member op_Explicit : ^T -> nativeint) and default ^T : int /// Converts the argument to unativeint. This is a direct, checked conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted unativeint [] [] val inline unativeint : value:^T -> unativeint when ^T : (static member op_Explicit : ^T -> unativeint) and default ^T : int /// Converts the argument to char. Numeric inputs are converted using a checked /// conversion according to the UTF-16 encoding for characters. String inputs must /// be exactly one character long. For other input types the operation requires an /// appropriate static conversion method on the input type. /// The input value. /// The converted char [] [] val inline char : value:^T -> char when ^T : (static member op_Explicit : ^T -> char) and default ^T : int #if NAN_INFINITY_MEASURES module Measure = /// Version of System.Double.PositiveInfinity that is generic in its units-of-measure [] val infinity<[] 'Measure> : float<'Measure> /// Version of System.Double.NaN that is generic in its units-of-measure [] val nan<[] 'Measure> : float<'Measure> /// Version of System.Single.PositiveInfinity that is generic in its units-of-measure [] val infinityf<[] 'Measure> : float32<'Measure> /// Version of System.Single.NaN that is generic in its units-of-measure [] val nanf<[] 'Measure> : float32<'Measure> #endif #if FX_NO_LAZY namespace System open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators /// Encapsulates a lazily computed value. [] [] type Lazy<'T> = /// Is true if the value is ready to be accessed. member IsValueCreated : bool /// The value contained in the Lazy. member Value : 'T #else #endif namespace Microsoft.FSharp.Control open Microsoft.FSharp.Core /// Extensions related to Lazy values. [] module LazyExtensions = type System.Lazy<'T> with /// Creates a lazy computation that evaluates to the result of the given function when forced. /// The function to provide the value when needed. /// The created Lazy object. [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member Create : creator:(unit -> 'T) -> System.Lazy<'T> /// Creates a lazy computation that evaluates to the given value when forced. /// The input value. /// The created Lazy object. [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member CreateFromValue : value:'T -> System.Lazy<'T> /// Forces the execution of this value and return its result. Same as Value. Mutual exclusion is used to /// prevent other threads also computing the value. /// The value of the Lazy object. [] // give the extension member a 'nice', unmangled compiled name, unique within this module member Force : unit -> 'T /// The type of delayed computations. /// /// Use the values in the Lazy module to manipulate /// values of this type, and the notation lazy expr to create values /// of type . type Lazy<'T> = System.Lazy<'T> and [] 'T ``lazy`` = System.Lazy<'T> #if FX_NO_IOBSERVABLE namespace System open Microsoft.FSharp.Core /// A client that may be subscribed to observe the results from an IObservable. [] type IObserver<'T> = /// Notify an observer of a new result /// The value to notify observers. abstract OnNext : value : 'T -> unit /// Notify an observer of an error /// The exception to notify observers. abstract OnError : error : exn -> unit /// Notify an observer that no more results will be produced. abstract OnCompleted : unit -> unit /// A source of observable results [] type IObservable<'T> = /// Subscribe an observer to the source of results /// The observer to be added to those that are notified. /// An IDisposable to allow for unsubscription. abstract Subscribe : observer : IObserver<'T> -> System.IDisposable; #else #endif namespace Microsoft.FSharp.Control open Microsoft.FSharp.Core open System /// First class event values for arbitrary delegate types. /// /// F# gives special status to member properties compatible with type IDelegateEvent and /// tagged with the CLIEventAttribute. In this case the F# compiler generates approriate /// CLI metadata to make the member appear to other CLI languages as a CLI event. type IDelegateEvent<'Delegate when 'Delegate :> System.Delegate > = /// Connect a handler delegate object to the event. A handler can /// be later removed using RemoveHandler. The listener will /// be invoked when the event is fired. /// A delegate to be invoked when the event is fired. abstract AddHandler: handler:'Delegate -> unit /// Remove a listener delegate from an event listener store. /// The delegate to be removed from the event listener store. abstract RemoveHandler: handler:'Delegate -> unit /// First class event values for CLI events conforming to CLI Framework standards. [] type IEvent<'Delegate,'Args when 'Delegate : delegate<'Args,unit> and 'Delegate :> System.Delegate > = inherit IDelegateEvent<'Delegate> inherit IObservable<'Args> /// A delegate type associated with the F# event type IEvent<_> /// The object that fired the event. /// The event arguments. [] type Handler<'T> = delegate of sender:obj * args:'T -> unit /// First-class listening points (i.e. objects that permit you to register a callback /// activated when the event is triggered). type IEvent<'T> = IEvent, 'T> fsharp-3.0.34/src/fsharp/FSharp.Core/quotations.fs0000775000175000017500000025333612260314606020773 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Quotations #if FX_MINIMAL_REFLECTION #else open System open System.IO open System.Reflection open System.Collections.Generic open Microsoft.FSharp open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Collections open Microsoft.FSharp.Reflection open Microsoft.FSharp.Core.Printf open Microsoft.FSharp.Text.StructuredPrintfImpl open Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps #nowarn "52" // The value has been copied to ensure the original is not mutated by this operation //-------------------------------------------------------------------------- // RAW quotations - basic data types //-------------------------------------------------------------------------- module Helpers = let qOneOrMoreRLinear q inp = let rec queryAcc rvs e = match q e with | Some(v,body) -> queryAcc (v::rvs) body | None -> match rvs with | [] -> None | _ -> Some(List.rev rvs,e) queryAcc [] inp let qOneOrMoreLLinear q inp = let rec queryAcc e rvs = match q e with | Some(body,v) -> queryAcc body (v::rvs) | None -> match rvs with | [] -> None | _ -> Some(e,rvs) queryAcc inp [] let mkRLinear mk (vs,body) = List.foldBack (fun v acc -> mk(v,acc)) vs body let mkLLinear mk (body,vs) = List.fold (fun acc v -> mk(acc,v)) body vs let staticBindingFlags = BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let staticOrInstanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let instanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let publicOrPrivateBindingFlags = System.Reflection.BindingFlags.Public ||| System.Reflection.BindingFlags.NonPublic let isDelegateType (typ:Type) = if typ.IsSubclassOf(typeof) then match typ.GetMethod("Invoke", instanceBindingFlags) with | null -> false | _ -> true else false let getDelegateInvoke ty = if not (isDelegateType(ty)) then invalidArg "ty" (SR.GetString(SR.delegateExpected)) ty.GetMethod("Invoke", instanceBindingFlags) let inline checkNonNull argName (v: 'T) = match box v with | null -> nullArg argName | _ -> () open Helpers [] [] [] type Var(name: string, typ:Type, ?isMutable: bool) = inherit obj() static let mutable lastStamp = 0L static let globals = new Dictionary<(string*Type),Var>(11) let stamp = lastStamp let isMutable = defaultArg isMutable false do lock globals (fun () -> lastStamp <- lastStamp + 1L) member v.Name = name member v.IsMutable = isMutable member v.Type = typ member v.Stamp = stamp static member Global(name,typ: Type) = checkNonNull "name" name checkNonNull "typ" typ lock globals (fun () -> let mutable res = Unchecked.defaultof let ok = globals.TryGetValue((name,typ),&res) if ok then res else let res = new Var(name,typ) globals.[(name,typ)] <- res res) override v.ToString() = name override v.GetHashCode() = base.GetHashCode() override v.Equals(obj:obj) = match obj with | :? Var as v2 -> System.Object.ReferenceEquals(v,v2) | _ -> false interface System.IComparable with member v.CompareTo(obj:obj) = match obj with | :? Var as v2 -> if System.Object.ReferenceEquals(v,v2) then 0 else let c = compare v.Name v2.Name if c <> 0 then c else #if FX_NO_REFLECTION_METADATA_TOKENS // not available on Compact Framework #else let c = compare v.Type.MetadataToken v2.Type.MetadataToken if c <> 0 then c else let c = compare v.Type.Module.MetadataToken v2.Type.Module.MetadataToken if c <> 0 then c else #endif let c = compare v.Type.Assembly.FullName v2.Type.Assembly.FullName if c <> 0 then c else compare v.Stamp v2.Stamp | _ -> 0 /// Represents specifications of a subset of F# expressions [] type Tree = | CombTerm of ExprConstInfo * Expr list | VarTerm of Var | LambdaTerm of Var * Expr | HoleTerm of Type * int and [] ExprConstInfo = | AppOp | IfThenElseOp | LetRecOp | LetRecCombOp | LetOp | NewRecordOp of Type | NewUnionCaseOp of UnionCaseInfo | UnionCaseTestOp of UnionCaseInfo | NewTupleOp of Type | TupleGetOp of Type * int | InstancePropGetOp of PropertyInfo | StaticPropGetOp of PropertyInfo | InstancePropSetOp of PropertyInfo | StaticPropSetOp of PropertyInfo | InstanceFieldGetOp of FieldInfo | StaticFieldGetOp of FieldInfo | InstanceFieldSetOp of FieldInfo | StaticFieldSetOp of FieldInfo | NewObjectOp of ConstructorInfo | InstanceMethodCallOp of MethodInfo | StaticMethodCallOp of MethodInfo | CoerceOp of Type | NewArrayOp of Type | NewDelegateOp of Type | QuoteOp | SequentialOp | AddressOfOp | VarSetOp | AddressSetOp | TypeTestOp of Type | TryWithOp | TryFinallyOp | ForIntegerRangeLoopOp | WhileLoopOp // Arbitrary spliced values - not serialized | ValueOp of obj * Type | DefaultValueOp of Type and [] Expr(term:Tree,attribs:Expr list) = member x.Tree = term member x.CustomAttributes = attribs override x.Equals(obj:obj) = match obj with | :? Expr as yt -> x.Tree = yt.Tree | _ -> false override x.GetHashCode() = x.Tree.GetHashCode() override x.ToString() = x.ToString(false) member x.ToString(long) = Microsoft.FSharp.Text.StructuredPrintfImpl.Display.layout_to_string Microsoft.FSharp.Text.StructuredPrintfImpl.FormatOptions.Default (x.GetLayout(long)) member x.GetLayout(long) = let expr (e:Expr ) = e.GetLayout(long) let exprs (es:Expr list) = es |> List.map expr let parens ls = bracketL (commaListL ls) let pairL l1 l2 = bracketL (l1 ^^ sepL "," ^^ l2) let listL ls = squareBracketL (commaListL ls) let combL nm ls = wordL nm ^^ parens ls let noneL = wordL "None" let someL e = combL "Some" [expr e] let typeL (o: Type) = wordL (if long then o.FullName else o.Name) let objL (o: 'T) = wordL (sprintf "%A" o) let varL (v:Var) = wordL v.Name let (|E|) (e: Expr) = e.Tree let (|Lambda|_|) (E x) = match x with LambdaTerm(a,b) -> Some (a,b) | _ -> None let (|IteratedLambda|_|) (e: Expr) = qOneOrMoreRLinear (|Lambda|_|) e let ucaseL (unionCase:UnionCaseInfo) = (if long then objL unionCase else wordL unionCase.Name) let minfoL (minfo: MethodInfo) = if long then objL minfo else wordL minfo.Name let cinfoL (cinfo: ConstructorInfo) = if long then objL cinfo else wordL cinfo.DeclaringType.Name let pinfoL (pinfo: PropertyInfo) = if long then objL pinfo else wordL pinfo.Name let finfoL (finfo: FieldInfo) = if long then objL finfo else wordL finfo.Name let rec (|NLambdas|_|) n (e:Expr) = match e with | _ when n <= 0 -> Some([],e) | Lambda(v,NLambdas ((-) n 1) (vs,b)) -> Some(v::vs,b) | _ -> None match x.Tree with | CombTerm(AppOp,args) -> combL "Application" (exprs args) | CombTerm(IfThenElseOp,args) -> combL "IfThenElse" (exprs args) | CombTerm(LetRecOp,[IteratedLambda(vs,E(CombTerm(LetRecCombOp,b2::bs)))]) -> combL "LetRecursive" [listL (List.map2 pairL (List.map varL vs) (exprs bs) ); b2.GetLayout(long)] | CombTerm(LetOp,[e;E(LambdaTerm(v,b))]) -> combL "Let" [varL v; e.GetLayout(long); b.GetLayout(long)] | CombTerm(NewRecordOp(ty),args) -> combL "NewRecord" (typeL ty :: exprs args) | CombTerm(NewUnionCaseOp(unionCase),args) -> combL "NewUnionCase" (ucaseL unionCase :: exprs args) | CombTerm(UnionCaseTestOp(unionCase),args) -> combL "UnionCaseTest" (exprs args@ [ucaseL unionCase]) | CombTerm(NewTupleOp _,args) -> combL "NewTuple" (exprs args) | CombTerm(TupleGetOp (_,i),[arg]) -> combL "TupleGet" ([expr arg] @ [objL i]) | CombTerm(ValueOp(v,_),[]) -> combL "Value" [objL v] | CombTerm(InstanceMethodCallOp(minfo),obj::args) -> combL "Call" [someL obj; minfoL minfo; listL (exprs args)] | CombTerm(StaticMethodCallOp(minfo),args) -> combL "Call" [noneL; minfoL minfo; listL (exprs args)] | CombTerm(InstancePropGetOp(pinfo),(obj::args)) -> combL "PropertyGet" [someL obj; pinfoL pinfo; listL (exprs args)] | CombTerm(StaticPropGetOp(pinfo),args) -> combL "PropertyGet" [noneL; pinfoL pinfo; listL (exprs args)] | CombTerm(InstancePropSetOp(pinfo),(obj::args)) -> combL "PropertySet" [someL obj; pinfoL pinfo; listL (exprs args)] | CombTerm(StaticPropSetOp(pinfo),args) -> combL "PropertySet" [noneL; pinfoL pinfo; listL (exprs args)] | CombTerm(InstanceFieldGetOp(finfo),[obj]) -> combL "FieldGet" [someL obj; finfoL finfo] | CombTerm(StaticFieldGetOp(finfo),[]) -> combL "FieldGet" [noneL; finfoL finfo] | CombTerm(InstanceFieldSetOp(finfo),[obj;v]) -> combL "FieldSet" [someL obj; finfoL finfo; expr v;] | CombTerm(StaticFieldSetOp(finfo),[v]) -> combL "FieldSet" [noneL; finfoL finfo; expr v;] | CombTerm(CoerceOp(ty),[arg]) -> combL "Coerce" [ expr arg; typeL ty] | CombTerm(NewObjectOp cinfo,args) -> combL "NewObject" ([ cinfoL cinfo ] @ exprs args) | CombTerm(DefaultValueOp(ty),args) -> combL "DefaultValue" ([ typeL ty ] @ exprs args) | CombTerm(NewArrayOp(ty),args) -> combL "NewArray" ([ typeL ty ] @ exprs args) | CombTerm(TypeTestOp(ty),args) -> combL "TypeTest" ([ typeL ty] @ exprs args) | CombTerm(AddressOfOp,args) -> combL "AddressOf" (exprs args) | CombTerm(VarSetOp,[E(VarTerm(v)); e]) -> combL "VarSet" [varL v; expr e] | CombTerm(AddressSetOp,args) -> combL "AddressSet" (exprs args) | CombTerm(ForIntegerRangeLoopOp,[e1;e2;E(LambdaTerm(v,e3))]) -> combL "ForIntegerRangeLoop" [varL v; expr e1; expr e2; expr e3] | CombTerm(WhileLoopOp,args) -> combL "WhileLoop" (exprs args) | CombTerm(TryFinallyOp,args) -> combL "TryFinally" (exprs args) | CombTerm(TryWithOp,[e1;Lambda(v1,e2);Lambda(v2,e3)]) -> combL "TryWith" [expr e1; varL v1; expr e2; varL v2; expr e3] | CombTerm(SequentialOp,args) -> combL "Sequential" (exprs args) | CombTerm(NewDelegateOp(ty),[e]) -> let n = (getDelegateInvoke ty).GetParameters().Length match e with | NLambdas n (vs,e) -> combL "NewDelegate" ([typeL ty] @ (vs |> List.map varL) @ [expr e]) | _ -> combL "NewDelegate" [typeL ty; expr e] //| CombTerm(_,args) -> combL "??" (exprs args) | VarTerm(v) -> wordL v.Name | LambdaTerm(v,b) -> combL "Lambda" [varL v; expr b] | HoleTerm _ -> wordL "_" | CombTerm(QuoteOp,args) -> combL "Quote" (exprs args) | _ -> failwithf "Unexpected term in layout %A" x.Tree and [] Expr<'T>(term:Tree,attribs) = inherit Expr(term,attribs) member x.Raw = (x :> Expr) [] module Patterns = /// Internal type representing a deserialized object that is yet to be instantiated. Representation is /// as a computation. type Instantiable<'T> = (int -> Type) -> 'T type ByteStream(bytes:byte[], initial:int, len:int) = let mutable pos = initial let lim = initial + len member b.ReadByte() = if pos >= lim then failwith "end of stream"; let res = int32 bytes.[pos] pos <- pos + 1; res member b.ReadBytes n = if pos + n > lim then failwith "ByteStream.ReadBytes: end of stream"; let res = bytes.[pos..pos+n-1] pos <- pos + n; res member b.ReadUtf8BytesAsString n = let res = System.Text.Encoding.UTF8.GetString(bytes,pos,n) pos <- pos + n; res let E t = new Expr< >(t,[]) let EA (t,attribs) = new Expr< >(t,attribs) let ES ts = List.map E ts let (|E|) (e: Expr) = e.Tree let (|ES|) (es: list) = es |> List.map (fun e -> e.Tree) let (|FrontAndBack|_|) es = let rec loop acc xs = match xs with [] -> None | [h] -> Some (List.rev acc, h) | h::t -> loop (h::acc) t loop [] es let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition() let exprTyC = typedefof> let voidTy = typeof let unitTy = typeof let removeVoid a = if a = voidTy then unitTy else a let addVoid a = if a = unitTy then voidTy else a let mkFunTy a b = let (a, b) = removeVoid a, removeVoid b funTyC.MakeGenericType([| a;b |]) let mkArrayTy (t:Type) = t.MakeArrayType(); let mkExprTy (t:Type) = exprTyC.MakeGenericType([| t |]) //-------------------------------------------------------------------------- // Active patterns for decomposing quotations //-------------------------------------------------------------------------- let (|Comb0|_|) (E x) = match x with CombTerm(k,[]) -> Some(k) | _ -> None let (|Comb1|_|) (E x) = match x with CombTerm(k,[x]) -> Some(k,x) | _ -> None let (|Comb2|_|) (E x) = match x with CombTerm(k,[x1;x2]) -> Some(k,x1,x2) | _ -> None let (|Comb3|_|) (E x) = match x with CombTerm(k,[x1;x2;x3]) -> Some(k,x1,x2,x3) | _ -> None [] let (|Var|_|) (E x) = match x with VarTerm v -> Some v | _ -> None [] let (|Application|_|) x = match x with Comb2(AppOp,a,b) -> Some (a,b) | _ -> None [] let (|Lambda|_|) (E x) = match x with LambdaTerm(a,b) -> Some (a,b) | _ -> None [] let (|Quote|_|) (E x) = match x with CombTerm(QuoteOp,[a]) -> Some (a) | _ -> None [] let (|IfThenElse|_|) = function Comb3(IfThenElseOp,e1,e2,e3) -> Some(e1,e2,e3) | _ -> None [] let (|NewTuple|_|) = function E(CombTerm(NewTupleOp(_),es)) -> Some(es) | _ -> None [] let (|DefaultValue|_|) = function E(CombTerm(DefaultValueOp(ty),[])) -> Some(ty) | _ -> None [] let (|NewRecord|_|) = function E(CombTerm(NewRecordOp(x),es)) -> Some(x,es) | _ -> None [] let (|NewUnionCase|_|) = function E(CombTerm(NewUnionCaseOp(unionCase),es)) -> Some(unionCase,es) | _ -> None [] let (|UnionCaseTest|_|) = function Comb1(UnionCaseTestOp(unionCase),e) -> Some(e,unionCase) | _ -> None [] let (|TupleGet|_|) = function Comb1(TupleGetOp(_,n),e) -> Some(e,n) | _ -> None [] let (|Coerce|_|) = function Comb1(CoerceOp ty,e1) -> Some(e1,ty) | _ -> None [] let (|TypeTest|_|) = function Comb1(TypeTestOp ty,e1) -> Some(e1,ty) | _ -> None [] let (|NewArray|_|) = function E(CombTerm(NewArrayOp ty,es)) -> Some(ty,es) | _ -> None [] let (|AddressSet|_|) = function E(CombTerm(AddressSetOp,[e;v])) -> Some(e,v) | _ -> None [] let (|TryFinally|_|) = function E(CombTerm(TryFinallyOp,[e1;e2])) -> Some(e1,e2) | _ -> None [] let (|TryWith|_|) = function E(CombTerm(TryWithOp,[e1;Lambda(v1,e2);Lambda(v2,e3)])) -> Some(e1,v1,e2,v2,e3) | _ -> None [] let (|VarSet|_| ) = function E(CombTerm(VarSetOp,[E(VarTerm(v)); e])) -> Some(v,e) | _ -> None [] let (|Value|_|) = function E(CombTerm(ValueOp (v,ty),_)) -> Some(v,ty) | _ -> None [] let (|ValueObj|_|) = function E(CombTerm(ValueOp (v,_),_)) -> Some(v) | _ -> None [] let (|AddressOf|_|) = function Comb1(AddressOfOp,e) -> Some(e) | _ -> None [] let (|Sequential|_|) = function Comb2(SequentialOp,e1,e2) -> Some(e1,e2) | _ -> None [] let (|ForIntegerRangeLoop|_|) = function Comb3(ForIntegerRangeLoopOp,e1,e2,Lambda(v, e3)) -> Some(v,e1,e2,e3) | _ -> None [] let (|WhileLoop|_|) = function Comb2(WhileLoopOp,e1,e2) -> Some(e1,e2) | _ -> None [] let (|PropertyGet|_|) = function E(CombTerm(StaticPropGetOp pinfo,args)) -> Some(None,pinfo,args) | E(CombTerm(InstancePropGetOp pinfo,obj::args)) -> Some(Some(obj),pinfo,args) | _ -> None [] let (|PropertySet|_|) x = match x with | E(CombTerm(StaticPropSetOp pinfo, FrontAndBack(args,v))) -> Some(None,pinfo,args,v) | E(CombTerm(InstancePropSetOp pinfo, obj::FrontAndBack(args,v))) -> Some(Some(obj),pinfo,args,v) | _ -> None [] let (|FieldGet|_|) = function E(CombTerm(StaticFieldGetOp finfo,[])) -> Some(None,finfo) | E(CombTerm(InstanceFieldGetOp finfo,[obj])) -> Some(Some(obj),finfo) | _ -> None [] let (|FieldSet|_|) = function E(CombTerm(StaticFieldSetOp finfo,[v])) -> Some(None,finfo,v) | E(CombTerm(InstanceFieldSetOp finfo,[obj;v])) -> Some(Some(obj),finfo,v) | _ -> None [] let (|NewObject|_|) = function E(CombTerm(NewObjectOp ty,e)) -> Some(ty,e) | _ -> None [] let (|Call|_|) = function E(CombTerm(StaticMethodCallOp minfo,args)) -> Some(None,minfo,args) | E(CombTerm(InstanceMethodCallOp minfo,(obj::args))) -> Some(Some(obj),minfo,args) | _ -> None let (|LetRaw|_|) = function Comb2(LetOp,e1,e2) -> Some(e1,e2) | _ -> None let (|LetRecRaw|_|) = function Comb1(LetRecOp,e1) -> Some(e1) | _ -> None [] let (|Let|_|) = function LetRaw(e,Lambda(v,body)) -> Some(v,e,body) | _ -> None let (|IteratedLambda|_|) (e: Expr) = qOneOrMoreRLinear (|Lambda|_|) e let rec (|NLambdas|_|) n (e:Expr) = match e with | _ when n <= 0 -> Some([],e) | Lambda(v,NLambdas ((-) n 1) (vs,b)) -> Some(v::vs,b) | _ -> None [] let (|NewDelegate|_|) e = match e with | Comb1(NewDelegateOp(ty),e) -> let n = (getDelegateInvoke ty).GetParameters().Length match e with | NLambdas n (vs,e) -> Some(ty,vs,e) | _ -> None | _ -> None [] let (|LetRecursive|_|) e = match e with | LetRecRaw(IteratedLambda(vs1,E(CombTerm(LetRecCombOp,body::es)))) -> Some(List.zip vs1 es,body) | _ -> None //-------------------------------------------------------------------------- // Getting the type of Raw quotations //-------------------------------------------------------------------------- // Returns record member specified by name let getRecordProperty(ty,fieldName) = let mems = FSharpType.GetRecordFields(ty,publicOrPrivateBindingFlags) match mems |> Array.tryFind (fun minfo -> minfo.Name = fieldName) with | Some (m) -> m | _ -> invalidArg "fieldName" (SR.GetString2(SR.QmissingRecordField, ty.FullName, fieldName)) let getUnionCaseInfo(ty,unionCaseName) = let cases = FSharpType.GetUnionCases(ty,publicOrPrivateBindingFlags) match cases |> Array.tryFind (fun ucase -> ucase.Name = unionCaseName) with | Some(case) -> case | _ -> invalidArg "unionCaseName" (SR.GetString2(SR.QmissingUnionCase, ty.FullName, unionCaseName)) let getUnionCaseInfoField(unionCase:UnionCaseInfo,index) = let fields = unionCase.GetFields() if index < 0 || index >= fields.Length then invalidArg "index" (SR.GetString(SR.QinvalidCaseIndex)) fields.[index] /// Returns type of lambda applciation - something like "(fun a -> ..) b" let rec typeOfAppliedLambda f = let fty = ((typeOf f):Type) match fty.GetGenericArguments() with | [| _; b|] -> b | _ -> raise <| System.InvalidOperationException (SR.GetString(SR.QillFormedAppOrLet)) /// Returns type of the Raw quotation or fails if the quotation is ill formed /// if 'verify' is true, verifies all branches, otherwise ignores some of them when not needed and typeOf<'T when 'T :> Expr> (e : 'T) : Type = let (E t) = e match t with | VarTerm v -> v.Type | LambdaTerm (v,b) -> mkFunTy v.Type (typeOf b) | HoleTerm (ty,_) -> ty | CombTerm (c,args) -> match c,args with | AppOp,[f;_] -> typeOfAppliedLambda f | LetOp,_ -> match e with Let(_,_,b) -> typeOf b | _ -> failwith "unreachable" | IfThenElseOp,[_;t;_] -> typeOf t | LetRecOp,_ -> match e with LetRecursive(_,b) -> typeOf b | _ -> failwith "unreachable" | LetRecCombOp,_ -> failwith "typeOfConst: LetRecCombOp" | NewRecordOp ty,_ -> ty | NewUnionCaseOp unionCase,_ -> unionCase.DeclaringType | UnionCaseTestOp _,_ -> typeof | ValueOp (_, ty),_ -> ty | TupleGetOp (ty,i),_ -> FSharpType.GetTupleElements(ty).[i] | NewTupleOp ty,_ -> ty | StaticPropGetOp prop,_ -> prop.PropertyType | InstancePropGetOp prop,_ -> prop.PropertyType | StaticPropSetOp _,_ -> typeof | InstancePropSetOp _,_ -> typeof | InstanceFieldGetOp fld ,_ -> fld.FieldType | StaticFieldGetOp fld ,_ -> fld.FieldType | InstanceFieldSetOp _,_ -> typeof | StaticFieldSetOp _,_ -> typeof | NewObjectOp ctor,_ -> ctor.DeclaringType | InstanceMethodCallOp minfo,_ -> minfo.ReturnType |> removeVoid | StaticMethodCallOp minfo,_ -> minfo.ReturnType |> removeVoid | CoerceOp ty,_ -> ty | SequentialOp,[_;b] -> typeOf b | ForIntegerRangeLoopOp,_ -> typeof | NewArrayOp ty,_ -> mkArrayTy ty | NewDelegateOp ty,_ -> ty | DefaultValueOp ty,_ -> ty | TypeTestOp _,_ -> typeof | QuoteOp,[expr] -> mkExprTy (typeOf expr) | TryFinallyOp,[e1;_] -> typeOf e1 | TryWithOp,[e1;_;_] -> typeOf e1 | WhileLoopOp,_ | VarSetOp,_ | AddressSetOp,_ -> typeof | AddressOfOp,_ -> raise <| System.InvalidOperationException (SR.GetString(SR.QcannotTakeAddress)) | (QuoteOp | SequentialOp | TryWithOp | TryFinallyOp | IfThenElseOp | AppOp),_ -> failwith "unreachable" //-------------------------------------------------------------------------- // Constructors for building Raw quotations //-------------------------------------------------------------------------- let mkFEN op l = E(CombTerm(op,l)) let mkFE0 op = E(CombTerm(op,[])) let mkFE1 op x = E(CombTerm(op,[(x:>Expr)])) let mkFE2 op (x,y) = E(CombTerm(op,[(x:>Expr);(y:>Expr)])) let mkFE3 op (x,y,z) = E(CombTerm(op,[(x:>Expr);(y:>Expr);(z:>Expr)]) ) let mkOp v () = v //-------------------------------------------------------------------------- // Type-checked constructors for building Raw quotations //-------------------------------------------------------------------------- // t2 is inherited from t1 / t2 implements interface t1 or t2 == t1 let assignableFrom (t1:Type) (t2:Type) = t1.IsAssignableFrom(t2) let checkTypesSR (expectedType: Type) (receivedType : Type) name (threeHoleSR : string) = if (expectedType <> receivedType) then invalidArg "receivedType" (String.Format(threeHoleSR, name, expectedType, receivedType)) let checkTypesWeakSR (expectedType: Type) (receivedType : Type) name (threeHoleSR : string) = if (not (assignableFrom expectedType receivedType)) then invalidArg "receivedType" (String.Format(threeHoleSR, name, expectedType, receivedType)) let checkArgs (paramInfos: ParameterInfo[]) (args:list) = if (paramInfos.Length <> args.Length) then invalidArg "args" (SR.GetString(SR.QincorrectNumArgs)) List.iter2 ( fun (p:ParameterInfo) a -> checkTypesWeakSR p.ParameterType (typeOf a) "args" (SR.GetString(SR.QtmmInvalidParam))) (paramInfos |> Array.toList) args // todo: shouldn't this be "strong" type check? sometimes? let checkAssignableFrom ty1 ty2 = if not (assignableFrom ty1 ty2) then invalidArg "ty2" (SR.GetString(SR.QincorrectType)) let checkObj (membInfo: MemberInfo) (obj: Expr) = // The MemberInfo may be a property associated with a union // find the actual related union type let rec loop (ty:Type) = if FSharpType.IsUnion ty && FSharpType.IsUnion ty.BaseType then loop ty.BaseType else ty let declType = loop membInfo.DeclaringType if not (assignableFrom declType (typeOf obj)) then invalidArg "obj" (SR.GetString(SR.QincorrectInstanceType)) // Checks lambda application for correctnes let checkAppliedLambda (f, v) = let fty = typeOf f let ftyG = (if fty.IsGenericType then fty.GetGenericTypeDefinition() else fty) checkTypesSR funTyC ftyG "f" (SR.GetString(SR.QtmmExpectedFunction)) let vty = (typeOf v) match fty.GetGenericArguments() with | [| a; _ |] -> checkTypesSR vty a "f" (SR.GetString(SR.QtmmFunctionArgTypeMismatch)) | _ -> invalidArg "f" (SR.GetString(SR.QinvalidFuncType)) // Returns option (by name) of a NewUnionCase type let getUnionCaseFields ty str = let cases = FSharpType.GetUnionCases(ty,publicOrPrivateBindingFlags) match cases |> Array.tryFind (fun ucase -> ucase.Name = str) with | Some(case) -> case.GetFields() | _ -> invalidArg "ty" (SR.GetString1(SR.notAUnionType, ty.FullName)) let checkBind(v:Var,e) = let ety = typeOf e checkTypesSR v.Type ety "let" (SR.GetString(SR.QtmmVarTypeNotMatchRHS)) // [Correct by definition] let mkVar v = E(VarTerm v ) let mkQuote(a) = E(CombTerm(QuoteOp,[(a:>Expr)] )) let mkValue (v,ty) = mkFE0 (ValueOp(v,ty)) let mkValueG (v:'T) = mkValue(box v, typeof<'T>) let mkLiftedValueOpG (v, ty: System.Type) = let obj = if ty.IsEnum then System.Enum.ToObject(ty, box v) else box v ValueOp(obj, ty) let mkUnit () = mkValue(null, typeof) let mkAddressOf v = mkFE1 AddressOfOp v let mkSequential (e1,e2) = mkFE2 SequentialOp (e1,e2) let mkTypeTest (e,ty) = mkFE1 (TypeTestOp(ty)) e let mkVarSet (v,e) = mkFE2 VarSetOp (mkVar(v),e) let mkAddressSet (e1,e2) = mkFE2 AddressSetOp (e1,e2) let mkLambda(var,body) = E(LambdaTerm(var,(body:>Expr))) let mkTryWith(e1,v1,e2,v2,e3) = mkFE3 TryWithOp (e1,mkLambda(v1,e2),mkLambda(v2,e3)) let mkTryFinally(e1,e2) = mkFE2 TryFinallyOp (e1,e2) let mkCoerce (ty,x) = mkFE1 (CoerceOp ty) x let mkNull (ty) = mkFE0 (ValueOp(null,ty)) let mkApplication v = checkAppliedLambda v; mkFE2 AppOp v let mkLetRaw v = mkFE2 LetOp v let mkLetRawWithCheck ((e1,e2) as v) = checkAppliedLambda (e2,e1) mkLetRaw v // Tuples let mkNewTupleWithType (ty,args:Expr list) = let mems = FSharpType.GetTupleElements ty |> Array.toList if (args.Length <> mems.Length) then invalidArg "args" (SR.GetString(SR.QtupleLengthsDiffer)) List.iter2(fun mt a -> checkTypesSR mt (typeOf a) "args" (SR.GetString(SR.QtmmTuple)) ) mems args mkFEN (NewTupleOp ty) args let mkNewTuple (args) = let ty = FSharpType.MakeTupleType(Array.map typeOf (Array.ofList args)) mkFEN (NewTupleOp ty) args let mkTupleGet (ty,n,x) = checkTypesSR ty (typeOf x) "tupleGet" (SR.GetString(SR.QtmmExprNotMatchTuple)) let mems = FSharpType.GetTupleElements ty if (n < 0 || mems.Length <= n) then invalidArg "n" (SR.GetString(SR.QtupleAccessOutOfRange)) mkFE1 (TupleGetOp (ty,n)) x // Records let mkNewRecord (ty,args:list) = let mems = FSharpType.GetRecordFields(ty,publicOrPrivateBindingFlags) if (args.Length <> mems.Length) then invalidArg "args" (SR.GetString(SR.QincompatibleRecordLength)) List.iter2 (fun (minfo:PropertyInfo) a -> checkTypesSR minfo.PropertyType (typeOf a) "recd" (SR.GetString(SR.QtmmIncorrectArgForRecord))) (Array.toList mems) args mkFEN (NewRecordOp ty) args // Discriminated unions let mkNewUnionCase (unionCase:UnionCaseInfo,args:list) = if Unchecked.defaultof = unionCase then raise (new ArgumentNullException()) let sargs = unionCase.GetFields() if (args.Length <> sargs.Length) then invalidArg "args" (SR.GetString(SR.QunionNeedsDiffNumArgs)) List.iter2 (fun (minfo:PropertyInfo) a -> checkTypesSR minfo.PropertyType (typeOf a) "sum" (SR.GetString(SR.QtmmIncorrectArgForUnion))) (Array.toList sargs) args mkFEN (NewUnionCaseOp unionCase) args let mkUnionCaseTest (unionCase:UnionCaseInfo,expr) = if Unchecked.defaultof = unionCase then raise (new ArgumentNullException()) checkTypesSR unionCase.DeclaringType (typeOf expr) "UnionCaseTagTest" (SR.GetString(SR.QtmmExprTypeMismatch)) mkFE1 (UnionCaseTestOp unionCase) expr // Conditional etc.. let mkIfThenElse (e,t,f) = checkTypesSR (typeOf t) (typeOf f) "cond" (SR.GetString(SR.QtmmTrueAndFalseMustMatch)) checkTypesSR (typeof) (typeOf e) "cond" (SR.GetString(SR.QtmmCondMustBeBool)) mkFE3 IfThenElseOp (e,t,f) let mkNewArray (ty,args) = List.iter (fun a -> checkTypesSR ty (typeOf a) "newArray" (SR.GetString(SR.QtmmInitArray))) args mkFEN (NewArrayOp ty) args let mkInstanceFieldGet(obj,finfo:FieldInfo) = if Unchecked.defaultof = finfo then raise (new ArgumentNullException()) match finfo.IsStatic with | false -> checkObj finfo obj mkFE1 (InstanceFieldGetOp finfo) obj | true -> invalidArg "finfo" (SR.GetString(SR.QstaticWithReceiverObject)) let mkStaticFieldGet (finfo:FieldInfo) = if Unchecked.defaultof = finfo then raise (new ArgumentNullException()) match finfo.IsStatic with | true -> mkFE0 (StaticFieldGetOp finfo) | false -> invalidArg "finfo" (SR.GetString(SR.QnonStaticNoReceiverObject)) let mkStaticFieldSet (finfo:FieldInfo,value:Expr) = if Unchecked.defaultof = finfo then raise (new ArgumentNullException()) checkTypesSR (typeOf value) finfo.FieldType "value" (SR.GetString(SR.QtmmBadFieldType)) match finfo.IsStatic with | true -> mkFE1 (StaticFieldSetOp finfo) value | false -> invalidArg "finfo" (SR.GetString(SR.QnonStaticNoReceiverObject)) let mkInstanceFieldSet (obj,finfo:FieldInfo,value:Expr) = if Unchecked.defaultof = finfo then raise (new ArgumentNullException()) checkTypesSR (typeOf value) finfo.FieldType "value" (SR.GetString(SR.QtmmBadFieldType)) match finfo.IsStatic with | false -> checkObj finfo obj mkFE2 (InstanceFieldSetOp finfo) (obj,value) | true -> invalidArg "finfo" (SR.GetString(SR.QstaticWithReceiverObject)) let mkCtorCall (ci:ConstructorInfo,args:list) = if Unchecked.defaultof = ci then raise (new ArgumentNullException()) checkArgs (ci.GetParameters()) args mkFEN (NewObjectOp ci) args let mkDefaultValue (ty:Type) = mkFE0 (DefaultValueOp ty) let mkStaticPropGet (pinfo:PropertyInfo,args:list) = if Unchecked.defaultof = pinfo then raise (new ArgumentNullException()) if (not pinfo.CanRead) then invalidArg "pinfo" (SR.GetString(SR.QreadingSetOnly)) checkArgs (pinfo.GetIndexParameters()) args match pinfo.GetGetMethod(true).IsStatic with | true -> mkFEN (StaticPropGetOp pinfo) args | false -> invalidArg "pinfo" (SR.GetString(SR.QnonStaticNoReceiverObject)) let mkInstancePropGet (obj,pinfo:PropertyInfo,args:list) = if Unchecked.defaultof = pinfo then raise (new ArgumentNullException()) if (not pinfo.CanRead) then invalidArg "pinfo" (SR.GetString(SR.QreadingSetOnly)) checkArgs (pinfo.GetIndexParameters()) args match pinfo.GetGetMethod(true).IsStatic with | false -> checkObj pinfo obj mkFEN (InstancePropGetOp pinfo) (obj::args) | true -> invalidArg "pinfo" (SR.GetString(SR.QstaticWithReceiverObject)) let mkStaticPropSet (pinfo:PropertyInfo,args:list,value:Expr) = if Unchecked.defaultof = pinfo then raise (new ArgumentNullException()) if (not pinfo.CanWrite) then invalidArg "pinfo" (SR.GetString(SR.QwritingGetOnly)) checkArgs (pinfo.GetIndexParameters()) args match pinfo.GetSetMethod(true).IsStatic with | true -> mkFEN (StaticPropSetOp pinfo) (args@[value]) | false -> invalidArg "pinfo" (SR.GetString(SR.QnonStaticNoReceiverObject)) let mkInstancePropSet (obj,pinfo:PropertyInfo,args:list,value:Expr) = if Unchecked.defaultof = pinfo then raise (new ArgumentNullException()) if (not pinfo.CanWrite) then invalidArg "pinfo" (SR.GetString(SR.QwritingGetOnly)) checkArgs (pinfo.GetIndexParameters()) args match pinfo.GetSetMethod(true).IsStatic with | false -> checkObj pinfo obj mkFEN (InstancePropSetOp pinfo) (obj::(args@[value])) | true -> invalidArg "pinfo" (SR.GetString(SR.QstaticWithReceiverObject)) let mkInstanceMethodCall (obj,minfo:MethodInfo,args:list) = if Unchecked.defaultof = minfo then raise (new ArgumentNullException()) checkArgs (minfo.GetParameters()) args match minfo.IsStatic with | false -> checkObj minfo obj mkFEN (InstanceMethodCallOp minfo) (obj::args) | true -> invalidArg "minfo" (SR.GetString(SR.QstaticWithReceiverObject)) let mkStaticMethodCall (minfo:MethodInfo,args:list) = if Unchecked.defaultof = minfo then raise (new ArgumentNullException()) checkArgs (minfo.GetParameters()) args match minfo.IsStatic with | true -> mkFEN (StaticMethodCallOp minfo) args | false -> invalidArg "minfo" (SR.GetString(SR.QnonStaticNoReceiverObject)) let mkForLoop (v:Var,lowerBound,upperBound,body) = checkTypesSR (typeof) (typeOf lowerBound) "lowerBound" (SR.GetString(SR.QtmmLowerUpperBoundMustBeInt)) checkTypesSR (typeof) (typeOf upperBound) "upperBound" (SR.GetString(SR.QtmmLowerUpperBoundMustBeInt)) checkTypesSR (typeof) (v.Type) "for" (SR.GetString(SR.QtmmLoopBodyMustBeLambdaTakingInteger)) mkFE3 ForIntegerRangeLoopOp (lowerBound, upperBound, mkLambda(v,body)) let mkWhileLoop (guard,body) = checkTypesSR (typeof) (typeOf guard) "guard" (SR.GetString(SR.QtmmGuardMustBeBool)) checkTypesSR (typeof) (typeOf body) "body" (SR.GetString(SR.QtmmBodyMustBeUnit)) mkFE2 (WhileLoopOp) (guard,body) let mkNewDelegate (ty,e) = let mi = getDelegateInvoke ty let ps = mi.GetParameters() let dlfun = Array.foldBack (fun (p:ParameterInfo) rty -> mkFunTy p.ParameterType rty) ps mi.ReturnType checkTypesSR dlfun (typeOf e) "ty" (SR.GetString(SR.QtmmFunTypeNotMatchDelegate)) mkFE1 (NewDelegateOp ty) e let mkLet (v,e,b) = checkBind (v,e); mkLetRaw (e,mkLambda(v,b)) //let mkLambdas(vs,b) = mkRLinear mkLambdaRaw (vs,(b:>Expr)) let mkTupledApplication (f,args) = match args with | [] -> mkApplication (f,mkUnit()) | [x] -> mkApplication (f,x) | _ -> mkApplication (f,mkNewTuple args) let mkApplications(f: Expr,es:list>) = mkLLinear mkTupledApplication (f,es) let mkIteratedLambdas(vs,b) = mkRLinear mkLambda (vs,b) let mkLetRecRaw v = mkFE1 LetRecOp v let mkLetRecCombRaw v = mkFEN LetRecCombOp v let mkLetRec (ves:(Var*Expr) list,body) = List.iter checkBind ves; let vs,es = List.unzip ves mkLetRecRaw(mkIteratedLambdas (vs,mkLetRecCombRaw (body::es))) let ReflectedDefinitionsResourceNameBase = "ReflectedDefinitions" //------------------------------------------------------------------------- // General Method Binder let typeEquals (s:Type) (t:Type) = s.Equals(t) let typesEqual (ss:Type list) (tt:Type list) = (ss.Length = tt.Length) && List.forall2 typeEquals ss tt let instFormal (typarEnv: Type[]) (ty:Instantiable<'T>) = ty (fun i -> typarEnv.[i]) let getGenericArguments(tc:Type) = if tc.IsGenericType then tc.GetGenericArguments() else [| |] let getNumGenericArguments(tc:Type) = if tc.IsGenericType then tc.GetGenericArguments().Length else 0 let bindMethodBySearch (parentT:Type,nm,marity,argtys,rty) = let methInfos = parentT.GetMethods(staticOrInstanceBindingFlags) |> Array.toList // First, filter on name, if unique, then binding "done" let tyargTs = getGenericArguments(parentT) let methInfos = methInfos |> List.filter (fun methInfo -> methInfo.Name = nm) match methInfos with | [methInfo] -> methInfo | _ -> // Second, type match. let select (methInfo:MethodInfo) = // mref implied Types let mtyargTIs = if methInfo.IsGenericMethod then methInfo.GetGenericArguments() else [| |] if mtyargTIs.Length <> marity then false (* method generic arity mismatch *) else let typarEnv = (Array.append tyargTs mtyargTIs) let argTs = argtys |> List.map (instFormal typarEnv) let resT = instFormal typarEnv rty // methInfo implied Types let haveArgTs = let parameters = Array.toList (methInfo.GetParameters()) parameters |> List.map (fun param -> param.ParameterType) let haveResT = methInfo.ReturnType // check for match if argTs.Length <> haveArgTs.Length then false (* method argument length mismatch *) else let res = typesEqual (resT::argTs) (haveResT::haveArgTs) res // return MethodInfo for (generic) type's (generic) method match List.tryFind select methInfos with | None -> raise <| System.InvalidOperationException (SR.GetString SR.QcannotBindToMethod) | Some methInfo -> methInfo let bindMethodHelper (parentT: Type, nm,marity,argtys,rty) = if parentT = null then invalidArg "parentT" (SR.GetString(SR.QparentCannotBeNull)) if marity = 0 then let tyargTs = if parentT.IsGenericType then parentT.GetGenericArguments() else [| |] let argTs = Array.ofList (List.map (instFormal tyargTs) argtys) let resT = instFormal tyargTs rty let methInfo = try #if FX_ATLEAST_PORTABLE match parentT.GetMethod(nm,argTs) with #else match parentT.GetMethod(nm,staticOrInstanceBindingFlags,null,argTs,null) with #endif | null -> None | res -> Some(res) with :? AmbiguousMatchException -> None match methInfo with | Some methInfo when (typeEquals resT methInfo.ReturnType) -> methInfo | _ -> bindMethodBySearch(parentT,nm,marity,argtys,rty) else bindMethodBySearch(parentT,nm,marity,argtys,rty) let bindModuleProperty (ty:Type,nm) = match ty.GetProperty(nm,staticBindingFlags) with | null -> raise <| System.InvalidOperationException (SR.GetString2(SR.QcannotBindProperty, nm, ty.ToString())) | res -> res let bindModuleFunction (ty:Type,nm) = match ty.GetMethod(nm,staticBindingFlags) with | null -> raise <| System.InvalidOperationException (SR.GetString2(SR.QcannotBindFunction, nm, ty.ToString())) | res -> res let mkNamedType (tc:Type,tyargs) = match tyargs with | [] -> tc | _ -> tc.MakeGenericType(Array.ofList tyargs) let inline checkNonNullResult (arg:string,err:string) y = match box y with | null -> raise (new ArgumentNullException(arg,err)) | _ -> y let inst (tyargs:Type list) (i: Instantiable<'T>) = i (fun idx -> tyargs.[idx]) // Note, O(n) looks, but #tyargs is always small let bindProp (tc,propName,retType,argTypes,tyargs) = // We search in the instantiated type, rather than searching the generic type. let typ = mkNamedType(tc,tyargs) let argtyps : Type list = argTypes |> inst tyargs let retType : Type = retType |> inst tyargs |> removeVoid #if FX_ATLEAST_PORTABLE typ.GetProperty(propName, retType, Array.ofList argtyps) |> checkNonNullResult ("propName", SR.GetString1(SR.QfailedToBindProperty, propName)) // fxcop may not see "propName" as an arg #else typ.GetProperty(propName, staticOrInstanceBindingFlags, null, retType, Array.ofList argtyps, null) |> checkNonNullResult ("propName", SR.GetString1(SR.QfailedToBindProperty, propName)) // fxcop may not see "propName" as an arg #endif let bindField (tc,fldName,tyargs) = let typ = mkNamedType(tc,tyargs) typ.GetField(fldName,staticOrInstanceBindingFlags) |> checkNonNullResult ("fldName", SR.GetString1(SR.QfailedToBindField, fldName)) // fxcop may not see "fldName" as an arg let bindGenericCtor (tc:Type,argTypes:Instantiable) = let argtyps = instFormal (getGenericArguments tc) argTypes #if FX_ATLEAST_PORTABLE tc.GetConstructor(Array.ofList argtyps) |> checkNonNullResult ("tc", SR.GetString(SR.QfailedToBindConstructor)) // fxcop may not see "tc" as an arg #else tc.GetConstructor(instanceBindingFlags,null,Array.ofList argtyps,null) |> checkNonNullResult ("tc", SR.GetString(SR.QfailedToBindConstructor)) // fxcop may not see "tc" as an arg #endif let bindCtor (tc,argTypes:Instantiable,tyargs) = let typ = mkNamedType(tc,tyargs) let argtyps = argTypes |> inst tyargs #if FX_ATLEAST_PORTABLE typ.GetConstructor(Array.ofList argtyps) |> checkNonNullResult ("tc", SR.GetString(SR.QfailedToBindConstructor)) // fxcop may not see "tc" as an arg #else typ.GetConstructor(instanceBindingFlags,null,Array.ofList argtyps,null) |> checkNonNullResult ("tc", SR.GetString(SR.QfailedToBindConstructor)) // fxcop may not see "tc" as an arg #endif let chop n xs = if n < 0 then invalidArg "n" (SR.GetString(SR.inputMustBeNonNegative)) let rec split l = match l with | 0,xs -> [],xs | n,x::xs -> let front,back = split (n-1,xs) x::front,back | _,[] -> failwith "List.chop: not enough elts list" split (n,xs) let instMeth (ngmeth: MethodInfo, methTypeArgs) = if ngmeth.GetGenericArguments().Length = 0 then ngmeth(* non generic *) else ngmeth.MakeGenericMethod(Array.ofList methTypeArgs) let bindGenericMeth (tc:Type,argTypes : list>,retType,methName,numMethTyargs) = bindMethodHelper(tc,methName,numMethTyargs,argTypes,retType) let bindMeth ((tc:Type,argTypes : list>,retType,methName,numMethTyargs),tyargs) = let ntyargs = tc.GetGenericArguments().Length let enclTypeArgs,methTypeArgs = chop ntyargs tyargs let ty = mkNamedType(tc,enclTypeArgs) let ngmeth = bindMethodHelper(ty,methName,numMethTyargs,argTypes,retType) instMeth(ngmeth,methTypeArgs) let pinfoIsStatic (pinfo:PropertyInfo) = if pinfo.CanRead then pinfo.GetGetMethod(true).IsStatic elif pinfo.CanWrite then pinfo.GetSetMethod(true).IsStatic else false //-------------------------------------------------------------------------- // Unpickling //-------------------------------------------------------------------------- module SimpleUnpickle = [] type InputState = { is: ByteStream; istrings: string array; localAssembly: System.Reflection.Assembly } let u_byte_as_int st = st.is.ReadByte() let u_bool st = let b = u_byte_as_int st in (b = 1) let u_void (_: InputState) = () let u_unit (_: InputState) = () let prim_u_int32 st = let b0 = (u_byte_as_int st) let b1 = (u_byte_as_int st) let b2 = (u_byte_as_int st) let b3 = (u_byte_as_int st) b0 ||| (b1 <<< 8) ||| (b2 <<< 16) ||| (b3 <<< 24) let u_int32 st = let b0 = u_byte_as_int st if b0 <= 0x7F then b0 elif b0 <= 0xbf then let b0 = b0 &&& 0x7f let b1 = (u_byte_as_int st) (b0 <<< 8) ||| b1 else prim_u_int32 st let u_bytes st = let n = u_int32 st st.is.ReadBytes(n) let prim_u_string st = let len = (u_int32 st) st.is.ReadUtf8BytesAsString(len) let u_int st = u_int32 st let u_sbyte st = sbyte (u_int32 st) let u_byte st = byte (u_byte_as_int st) let u_int16 st = int16 (u_int32 st) let u_uint16 st = uint16 (u_int32 st) let u_uint32 st = uint32 (u_int32 st) let u_int64 st = let b1 = int64 (u_int32 st) &&& 0xFFFFFFFFL let b2 = int64 (u_int32 st) b1 ||| (b2 <<< 32) let u_uint64 st = uint64 (u_int64 st) let u_double st = System.BitConverter.ToDouble(System.BitConverter.GetBytes(u_int64 st),0) let u_float32 st = System.BitConverter.ToSingle(System.BitConverter.GetBytes(u_int32 st),0) let u_char st = char (int32 (u_uint16 st)) let inline u_tup2 p1 p2 st = let a = p1 st in let b = p2 st in (a,b) let inline u_tup3 p1 p2 p3 st = let a = p1 st in let b = p2 st in let c = p3 st in (a,b,c) let inline u_tup4 p1 p2 p3 p4 st = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in (a,b,c,d) let inline u_tup5 p1 p2 p3 p4 p5 st = let a = p1 st in let b = p2 st in let c = p3 st in let d = p4 st in let e = p5 st in (a,b,c,d,e) let u_uniq (tbl: _ array) st = let n = u_int st if n < 0 || n >= tbl.Length then failwith ("u_uniq: out of range, n = "+string n+ ", sizeof(tab) = " + string tbl.Length); tbl.[n] let u_string st = u_uniq st.istrings st let rec u_list_aux f acc st = let tag = u_byte_as_int st match tag with | 0 -> List.rev acc | 1 -> let a = f st in u_list_aux f (a::acc) st | n -> failwith ("u_list: found number " + string n) let u_list f st = u_list_aux f [] st let unpickle_obj localAssembly u phase2bytes = let phase2data = let st2 = { is = new ByteStream(phase2bytes,0,phase2bytes.Length); istrings = [| |]; localAssembly=localAssembly } u_tup2 (u_list prim_u_string) u_bytes st2 let stringTab,phase1bytes = phase2data let st1 = { is = new ByteStream(phase1bytes,0,phase1bytes.Length); istrings = Array.ofList stringTab; localAssembly=localAssembly } let res = u st1 res open SimpleUnpickle let decodeFunTy args = match args with | [d;r] -> funTyC.MakeGenericType([| d; r |]) | _ -> invalidArg "args" (SR.GetString(SR.QexpectedTwoTypes)) let decodeArrayTy n (tys: Type list) = match tys with | [ty] -> if (n = 1) then ty.MakeArrayType() else ty.MakeArrayType(n) // typeof.MakeArrayType(1) returns "Int[*]" but we need "Int[]" | _ -> invalidArg "tys" (SR.GetString(SR.QexpectedOneType)) let mkNamedTycon (tcName,ass:Assembly) = match ass.GetType(tcName) with | null -> // For some reason we can get 'null' returned here even when a type with the right name exists... Hence search the slow way... match (ass.GetTypes() |> Array.tryFind (fun a -> a.FullName = tcName)) with | Some ty -> ty | None -> invalidArg "tcName" (SR.GetString2(SR.QfailedToBindTypeInAssembly, tcName, ass.FullName)) // "Available types are:\n%A" tcName ass (ass.GetTypes() |> Array.map (fun a -> a.FullName)) | ty -> ty let decodeNamedTy tc tsR = mkNamedType(tc,tsR) let mscorlib = typeof.Assembly let u_assref st = let a = u_string st if a = "" then mscorlib elif a = "." then st.localAssembly else match System.Reflection.Assembly.Load(a) with | null -> raise <| System.InvalidOperationException(SR.GetString1(SR.QfailedToBindAssembly, a.ToString())) | ass -> ass let u_NamedType st = let a,b = u_tup2 u_string u_assref st mkNamedTycon (a,b) let u_tyconstSpec st = let tag = u_byte_as_int st match tag with | 1 -> u_unit st |> (fun () -> decodeFunTy) | 2 -> u_NamedType st |> decodeNamedTy | 3 -> u_int st |> decodeArrayTy | _ -> failwith "u_tyconstSpec" let appL fs env = List.map (fun f -> f env) fs let rec u_dtype st : (int -> Type) -> Type = let tag = u_byte_as_int st match tag with | 0 -> u_int st |> (fun x env -> env(x)) | 1 -> u_tup2 u_tyconstSpec (u_list u_dtype) st |> (fun (a,b) env -> a (appL b env)) | _ -> failwith "u_dtype" let u_dtypes st = let a = u_list u_dtype st in appL a let (|NoTyArgs|) = function [] -> () | _ -> failwith "incorrect number of arguments during deserialization" let (|OneTyArg|) = function [x] -> x | _ -> failwith "incorrect number of arguments during deserialization" [] type BindingEnv = { vars : Map; varn: int; typeInst : int -> Type } let addVar env v = { env with vars = env.vars.Add(env.varn,v); varn=env.varn+1 } let envClosed (types:Type[]) = { vars = Map.empty; varn = 0; typeInst = fun (n:int) -> types.[n] } type Bindable<'T> = BindingEnv -> 'T let rec u_Expr st = let tag = u_byte_as_int st match tag with | 0 -> u_tup3 u_constSpec u_dtypes (u_list u_Expr) st |> (fun (a,b,args) (env:BindingEnv) -> let tyargs = b env.typeInst E(CombTerm(a tyargs, List.map (fun e -> e env) args ))) | 1 -> let x = u_VarRef st (fun env -> E(VarTerm (x env))) | 2 -> let a = u_VarDecl st let b = u_Expr st (fun env -> let v = a env in E(LambdaTerm(v,b (addVar env v)))) | 3 -> let a = u_dtype st let idx = u_int st (fun env -> E(HoleTerm(a env.typeInst , idx))) | 4 -> let a = u_Expr st (fun env -> mkQuote(a env)) | 5 -> let a = u_Expr st let attrs = u_list u_Expr st (fun env -> let e = (a env) in EA(e.Tree,(e.CustomAttributes @ List.map (fun attrf -> attrf env) attrs))) | 6 -> let a = u_dtype st (fun env -> mkVar(Var.Global("this", a env.typeInst))) | _ -> failwith "u_Expr" and u_VarDecl st = let s,b,mut = u_tup3 u_string u_dtype u_bool st (fun env -> new Var(s, b env.typeInst, mut)) and u_VarRef st = let i = u_int st (fun env -> env.vars.[i]) and u_RecdField st = let ty,nm = u_tup2 u_NamedType u_string st (fun tyargs -> getRecordProperty(mkNamedType(ty,tyargs),nm)) and u_UnionCaseInfo st = let ty,nm = u_tup2 u_NamedType u_string st (fun tyargs -> getUnionCaseInfo(mkNamedType(ty,tyargs),nm)) and u_UnionCaseField st = let case,i = u_tup2 u_UnionCaseInfo u_int st (fun tyargs -> getUnionCaseInfoField(case tyargs,i)) and u_ModuleDefn st = let (ty,nm,isProp) = u_tup3 u_NamedType u_string u_bool st if isProp then StaticPropGetOp(bindModuleProperty(ty,nm)) else StaticMethodCallOp(bindModuleFunction(ty,nm)) and u_MethodInfoData st = u_tup5 u_NamedType (u_list u_dtype) u_dtype u_string u_int st and u_PropInfoData st = u_tup4 u_NamedType u_string u_dtype u_dtypes st and u_CtorInfoData st = u_tup2 u_NamedType u_dtypes st and u_MethodBase st = let tag = u_byte_as_int st match tag with | 0 -> match u_ModuleDefn st with | StaticMethodCallOp(minfo) -> (minfo :> MethodBase) | StaticPropGetOp(pinfo) -> (pinfo.GetGetMethod(true) :> MethodBase) | _ -> failwith "unreachable" | 1 -> let data = u_MethodInfoData st let minfo = bindGenericMeth(data) in (minfo :> MethodBase) | 2 -> let data = u_CtorInfoData st let cinfo = bindGenericCtor(data) in (cinfo :> MethodBase) | _ -> failwith "u_MethodBase" and u_constSpec st = let tag = u_byte_as_int st match tag with | 0 -> u_void st |> (fun () NoTyArgs -> IfThenElseOp) | 1 -> u_ModuleDefn st |> (fun op tyargs -> match op with | StaticMethodCallOp(minfo) -> StaticMethodCallOp(instMeth(minfo,tyargs)) // OK to throw away the tyargs here since this only non-generic values in modules get represented by static properties | op -> op) | 2 -> u_void st |> (fun () NoTyArgs -> LetRecOp) | 3 -> u_NamedType st |> (fun x tyargs -> NewRecordOp (mkNamedType(x,tyargs))) | 4 -> u_RecdField st |> (fun prop tyargs -> InstancePropGetOp(prop tyargs)) | 5 -> u_UnionCaseInfo st |> (fun unionCase tyargs -> NewUnionCaseOp(unionCase tyargs)) | 6 -> u_UnionCaseField st |> (fun prop tyargs -> InstancePropGetOp(prop tyargs) ) | 7 -> u_UnionCaseInfo st |> (fun unionCase tyargs -> UnionCaseTestOp(unionCase tyargs)) | 8 -> u_void st |> (fun () (OneTyArg(tyarg)) -> NewTupleOp tyarg) | 9 -> u_int st |> (fun x (OneTyArg(tyarg)) -> TupleGetOp (tyarg,x)) // Note, these get type args because they may be the result of reading literal field constants | 11 -> u_bool st |> (fun x (OneTyArg(tyarg)) -> mkLiftedValueOpG (x, tyarg)) | 12 -> u_string st |> (fun x (OneTyArg(tyarg)) -> mkLiftedValueOpG (x, tyarg)) | 13 -> u_float32 st |> (fun x (OneTyArg(tyarg)) -> mkLiftedValueOpG (x, tyarg)) | 14 -> u_double st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 15 -> u_char st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 16 -> u_sbyte st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 17 -> u_byte st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 18 -> u_int16 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 19 -> u_uint16 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 20 -> u_int32 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 21 -> u_uint32 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 22 -> u_int64 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 23 -> u_uint64 st |> (fun a (OneTyArg(tyarg)) -> mkLiftedValueOpG (a, tyarg)) | 24 -> u_void st |> (fun () NoTyArgs -> mkLiftedValueOpG ((), typeof)) | 25 -> u_PropInfoData st |> (fun (a,b,c,d) tyargs -> let pinfo = bindProp(a,b,c,d,tyargs) in if pinfoIsStatic pinfo then StaticPropGetOp(pinfo) else InstancePropGetOp(pinfo)) | 26 -> u_CtorInfoData st |> (fun (a,b) tyargs -> NewObjectOp (bindCtor(a,b,tyargs))) | 28 -> u_void st |> (fun () (OneTyArg(ty)) -> CoerceOp ty) | 29 -> u_void st |> (fun () NoTyArgs -> SequentialOp) | 30 -> u_void st |> (fun () NoTyArgs -> ForIntegerRangeLoopOp) | 31 -> u_MethodInfoData st |> (fun p tyargs -> let minfo = bindMeth(p,tyargs) in if minfo.IsStatic then StaticMethodCallOp(minfo) else InstanceMethodCallOp(minfo)) | 32 -> u_void st |> (fun () (OneTyArg(ty)) -> NewArrayOp ty) | 33 -> u_void st |> (fun () (OneTyArg(ty)) -> NewDelegateOp ty) | 34 -> u_void st |> (fun () NoTyArgs -> WhileLoopOp) | 35 -> u_void st |> (fun () NoTyArgs -> LetOp) | 36 -> u_RecdField st |> (fun prop tyargs -> InstancePropSetOp(prop tyargs)) | 37 -> u_tup2 u_NamedType u_string st |> (fun (a,b) tyargs -> let finfo = bindField(a,b,tyargs) in if finfo.IsStatic then StaticFieldGetOp(finfo) else InstanceFieldGetOp(finfo)) | 38 -> u_void st |> (fun () NoTyArgs -> LetRecCombOp) | 39 -> u_void st |> (fun () NoTyArgs -> AppOp) | 40 -> u_void st |> (fun () (OneTyArg(ty)) -> ValueOp(null,ty)) | 41 -> u_void st |> (fun () (OneTyArg(ty)) -> DefaultValueOp(ty)) | 42 -> u_PropInfoData st |> (fun (a,b,c,d) tyargs -> let pinfo = bindProp(a,b,c,d,tyargs) in if pinfoIsStatic pinfo then StaticPropSetOp(pinfo) else InstancePropSetOp(pinfo)) | 43 -> u_tup2 u_NamedType u_string st |> (fun (a,b) tyargs -> let finfo = bindField(a,b,tyargs) in if finfo.IsStatic then StaticFieldSetOp(finfo) else InstanceFieldSetOp(finfo)) | 44 -> u_void st |> (fun () NoTyArgs -> AddressOfOp) | 45 -> u_void st |> (fun () NoTyArgs -> AddressSetOp) | 46 -> u_void st |> (fun () (OneTyArg(ty)) -> TypeTestOp(ty)) | 47 -> u_void st |> (fun () NoTyArgs -> TryFinallyOp) | 48 -> u_void st |> (fun () NoTyArgs -> TryWithOp) | 49 -> u_void st |> (fun () NoTyArgs -> VarSetOp) | _ -> failwithf "u_constSpec, unrecognized tag %d" tag let u_ReflectedDefinition = u_tup2 u_MethodBase u_Expr let u_ReflectedDefinitions = u_list u_ReflectedDefinition let unpickleExpr (localType : System.Type) = unpickle_obj localType.Assembly u_Expr let unpickleReflectedDefns (localAssembly : System.Reflection.Assembly) = unpickle_obj localAssembly u_ReflectedDefinitions //-------------------------------------------------------------------------- // General utilities that will eventually be folded into // Microsoft.FSharp.Quotations.Typed //-------------------------------------------------------------------------- /// Fill the holes in an Expr let rec fillHolesInRawExpr (l:Expr[]) (E t as e) = match t with | VarTerm _ -> e | LambdaTerm (v,b) -> EA(LambdaTerm(v, fillHolesInRawExpr l b ),e.CustomAttributes) | CombTerm (op,args) -> EA(CombTerm(op, args |> List.map (fillHolesInRawExpr l)),e.CustomAttributes) | HoleTerm (ty,idx) -> if idx < 0 || idx >= l.Length then failwith "hole index out of range"; let h = l.[idx] match typeOf h with | expected when expected <> ty -> invalidArg "receivedType" (String.Format(SR.GetString(SR.QtmmRaw), expected, ty)) | _ -> h let rec freeInExprAcc bvs acc (E t) = match t with | HoleTerm _ -> acc | CombTerm (_, ag) -> ag |> List.fold (freeInExprAcc bvs) acc | VarTerm v -> if Set.contains v bvs || Set.contains v acc then acc else Set.add v acc | LambdaTerm (v,b) -> freeInExprAcc (Set.add v bvs) acc b and freeInExpr e = freeInExprAcc Set.empty Set.empty e // utility for folding let foldWhile f st (ie: seq<'T>) = use e = ie.GetEnumerator() let mutable res = Some st while (res.IsSome && e.MoveNext()) do res <- f (match res with Some a -> a | _ -> failwith "internal error") e.Current; res let mkTyparSubst (tyargs:Type[]) = let n = tyargs.Length fun idx -> if idx < n then tyargs.[idx] else raise <| System.InvalidOperationException (SR.GetString(SR.QtypeArgumentOutOfRange)) [] exception Clash of Var /// Replace type variables and expression variables with parameters using the /// given substitution functions/maps. let rec substituteInExpr bvs tmsubst (E t as e) = match t with | CombTerm (c, args) -> let substargs = args |> List.map (fun arg -> substituteInExpr bvs tmsubst arg) EA(CombTerm(c, substargs),e.CustomAttributes) | VarTerm v -> match tmsubst v with | None -> e | Some e2 -> let fvs = freeInExpr e2 let clashes = Set.intersect fvs bvs in if clashes.IsEmpty then e2 else raise (Clash(clashes.MinimumElement)) | LambdaTerm (v,b) -> try EA(LambdaTerm(v,substituteInExpr (Set.add v bvs) tmsubst b),e.CustomAttributes) with Clash(bv) -> if v = bv then let v2 = new Var(v.Name,v.Type) let v2exp = E(VarTerm(v2)) EA(LambdaTerm(v2,substituteInExpr bvs (fun v -> if v = bv then Some(v2exp) else tmsubst v) b),e.CustomAttributes) else reraise() | HoleTerm _ -> e let substituteRaw tmsubst e = substituteInExpr Set.empty tmsubst e let readToEnd (s : Stream) = let n = int s.Length let res = Array.zeroCreate n let i = ref 0 while (!i < n) do i := !i + s.Read(res,!i,(n - !i)) done; res let decodedTopResources = new Dictionary(10,HashIdentity.Structural) #if FX_NO_REFLECTION_METADATA_TOKENS #else #if FX_NO_REFLECTION_MODULE_HANDLES // not available on Silverlight [] type ModuleHandle = ModuleHandle of string * string type System.Reflection.Module with member x.ModuleHandle = ModuleHandle(x.Assembly.FullName, x.Name) #else type ModuleHandle = System.ModuleHandle #endif #endif #if FX_NO_REFLECTION_METADATA_TOKENS // not available on Compact Framework [] type ReflectedDefinitionTableKey = | Key of System.Type * int * System.Type[] static member GetKey(methodBase:MethodBase) = #if FX_NO_REFLECTION_MODULES Key(methodBase.DeclaringType, (if methodBase.IsGenericMethod then methodBase.GetGenericArguments().Length else 0), methodBase.GetParameters() |> Array.map (fun p -> p.ParameterType)) #else Key(methodBase.DeclaringType.Module.ModuleHandle, (if methodBase.IsGenericMethod then methodBase.GetGenericArguments().Length else 0), methodBase.GetParameters() |> Array.map (fun p -> p.Type)) #endif #else [] type ReflectedDefinitionTableKey = | Key of ModuleHandle * int static member GetKey(methodBase:MethodBase) = Key(methodBase.Module.ModuleHandle,methodBase.MetadataToken) #endif [] type ReflectedDefinitionTableEntry = Entry of Bindable let reflectedDefinitionTable = new Dictionary(10,HashIdentity.Structural) let registerReflectedDefinitions (assem: Assembly, rn, bytes: byte[]) = let defns = unpickleReflectedDefns assem bytes defns |> List.iter (fun (minfo,e) -> //printfn "minfo = %A, handle = %A, token = %A" minfo minfo.Module.ModuleHandle minfo.MetadataToken let key = ReflectedDefinitionTableKey.GetKey minfo lock reflectedDefinitionTable (fun () -> //printfn "Adding %A, hc = %d" key (key.GetHashCode()); reflectedDefinitionTable.Add(key,Entry(e)))); //System.Console.WriteLine("Added {0} resource {1}", assem.FullName, rn); decodedTopResources.Add((assem,rn),0) let resolveMethodBase (methodBase: MethodBase, tyargs: Type []) = checkNonNull "methodBase" methodBase let data = let assem = methodBase.DeclaringType.Assembly let key = ReflectedDefinitionTableKey.GetKey methodBase //printfn "Looking for %A, hc = %d, hc2 = %d" key (key.GetHashCode()) (assem.GetHashCode()); let ok,res = lock reflectedDefinitionTable (fun () -> reflectedDefinitionTable.TryGetValue(key)) if ok then Some(res) else //System.Console.WriteLine("Loading {0}", td.Assembly); let qdataResources = // dynamic assemblies don't support the GetManifestResourceNames match assem with #if FX_NO_REFLECTION_EMIT #else | :? System.Reflection.Emit.AssemblyBuilder -> [] #endif | _ -> (try assem.GetManifestResourceNames() // This raises NotSupportedException for dynamic assemblies with :? NotSupportedException -> [| |]) |> Array.toList |> List.filter (fun rn -> //System.Console.WriteLine("Considering resource {0}", rn); rn.StartsWith(ReflectedDefinitionsResourceNameBase,StringComparison.Ordinal) && not (decodedTopResources.ContainsKey((assem,rn)))) |> List.map (fun rn -> rn,unpickleReflectedDefns assem (readToEnd (assem.GetManifestResourceStream(rn)))) // ok, add to the table let ok,res = lock reflectedDefinitionTable (fun () -> // check another thread didn't get in first if not (reflectedDefinitionTable.ContainsKey(key)) then qdataResources |> List.iter (fun (rn,defns) -> defns |> List.iter (fun (methodBase,e) -> reflectedDefinitionTable.[ReflectedDefinitionTableKey.GetKey methodBase] <- Entry(e)); decodedTopResources.Add((assem,rn),0)) // we know it's in the table now, if it's ever going to be there reflectedDefinitionTable.TryGetValue(key) ); if ok then Some(res) else None match data with | Some (Entry(exprBuilder)) -> let expectedNumTypars = getNumGenericArguments(methodBase.DeclaringType) + (match methodBase with | :? MethodInfo as minfo -> if minfo.IsGenericMethod then minfo.GetGenericArguments().Length else 0 | _ -> 0) if (expectedNumTypars <> tyargs.Length) then invalidArg "tyargs" (SR.GetString3(SR.QwrongNumOfTypeArgs, methodBase.Name, expectedNumTypars.ToString(), tyargs.Length.ToString())); Some(exprBuilder {typeInst = mkTyparSubst tyargs; vars=Map.empty; varn=0}) | None -> None let resolveMethodBaseInstantiated (methodBase:MethodBase) = checkNonNull "methodBase" methodBase match methodBase with | :? MethodInfo as minfo -> let tyargs = Array.append (getGenericArguments minfo.DeclaringType) (if minfo.IsGenericMethod then minfo.GetGenericArguments() else [| |]) resolveMethodBase (methodBase, tyargs) | :? ConstructorInfo as cinfo -> let tyargs = getGenericArguments cinfo.DeclaringType resolveMethodBase (methodBase, tyargs) | _ -> resolveMethodBase (methodBase, [| |]) let deserialize (localAssembly, types, splices, bytes) : Expr = let expr = unpickleExpr localAssembly bytes (envClosed (Array.ofList types)) fillHolesInRawExpr (Array.ofList splices) expr let cast (expr: Expr) : Expr<'T> = checkTypesSR (typeof<'T>) (typeOf expr) "expr" (SR.GetString(SR.QtmmExprHasWrongType)) new Expr<'T>(expr.Tree,expr.CustomAttributes) open Patterns type Expr with member x.Substitute f = substituteRaw f x member x.GetFreeVars () = (freeInExpr x :> seq<_>) member x.Type = typeOf x static member AddressOf (e:Expr) = mkAddressOf e static member AddressSet (e1:Expr, e2:Expr) = mkAddressSet (e1,e2) static member Application (e1:Expr, e2:Expr) = mkApplication (e1,e2) static member Applications (f:Expr, es) = mkApplications (f, es) static member Call (methodInfo:MethodInfo, args) = checkNonNull "methodInfo" methodInfo mkStaticMethodCall (methodInfo, args) static member Call (obj:Expr,methodInfo:MethodInfo, args) = checkNonNull "methodInfo" methodInfo mkInstanceMethodCall (obj,methodInfo,args) static member Coerce (e:Expr, target:Type) = checkNonNull "target" target mkCoerce (target, e) static member IfThenElse (g:Expr, t:Expr, e:Expr) = mkIfThenElse (g, t, e) static member ForIntegerRangeLoop (v, start:Expr, finish:Expr, body:Expr) = mkForLoop(v, start, finish, body) //static member Range: Expr * Expr -> Expr //static member RangeStep: Expr * Expr * Expr -> Expr static member FieldGet (fieldInfo:FieldInfo) = checkNonNull "fieldInfo" fieldInfo mkStaticFieldGet fieldInfo static member FieldGet (obj:Expr, fieldInfo:FieldInfo) = checkNonNull "fieldInfo" fieldInfo mkInstanceFieldGet (obj, fieldInfo) static member FieldSet (fieldInfo:FieldInfo, v:Expr) = checkNonNull "fieldInfo" fieldInfo mkStaticFieldSet (fieldInfo, v) static member FieldSet (obj:Expr, fieldInfo:FieldInfo, v:Expr) = checkNonNull "fieldInfo" fieldInfo mkInstanceFieldSet (obj, fieldInfo, v) static member Lambda (v:Var, e:Expr) = mkLambda (v, e) static member Let (v:Var,e:Expr,b:Expr) = mkLet (v, e, b) static member LetRecursive (binds, e:Expr) = mkLetRec (binds, e) static member NewObject (constructorInfo:ConstructorInfo, args) = checkNonNull "constructorInfo" constructorInfo mkCtorCall (constructorInfo, args) static member DefaultValue (expressionType:Type) = checkNonNull "expressionType" expressionType mkDefaultValue expressionType static member NewTuple es = mkNewTuple es static member NewRecord (recordType:Type, args) = checkNonNull "recordType" recordType mkNewRecord (recordType, args) static member NewArray (elementType:Type, es) = checkNonNull "elementType" elementType mkNewArray(elementType, es) static member NewDelegate (delegateType:Type, vs: Var list, body: Expr) = checkNonNull "delegateType" delegateType mkNewDelegate(delegateType, mkIteratedLambdas (vs, body)) static member NewUnionCase (unionCase, es) = mkNewUnionCase (unionCase, es) static member PropertyGet (obj:Expr, property: PropertyInfo, ?args) = checkNonNull "property" property mkInstancePropGet (obj, property, defaultArg args []) static member PropertyGet (property: PropertyInfo, ?args) = checkNonNull "property" property mkStaticPropGet (property, defaultArg args []) static member PropertySet (obj:Expr, property:PropertyInfo, value:Expr, ?args) = checkNonNull "property" property mkInstancePropSet(obj, property, defaultArg args [], value) static member PropertySet (property:PropertyInfo, value:Expr, ?args) = mkStaticPropSet(property, defaultArg args [], value) static member Quote (expr:Expr) = mkQuote expr static member Sequential (e1:Expr, e2:Expr) = mkSequential (e1, e2) static member TryWith (e1:Expr, v2:Var, e2:Expr, v3:Var, e3:Expr) = mkTryWith (e1, v2, e2, v3, e3) static member TryFinally (e1:Expr, e2:Expr) = mkTryFinally (e1, e2) static member TupleGet (e:Expr, n:int) = mkTupleGet (typeOf e, n, e) static member TypeTest (e: Expr, target: Type) = checkNonNull "target" target mkTypeTest (e, target) static member UnionCaseTest (e:Expr, unionCase: UnionCaseInfo) = mkUnionCaseTest (unionCase, e) static member Value (v:'T) = mkValue (box v, typeof<'T>) static member Value(obj: obj, expressionType: Type) = checkNonNull "expressionType" expressionType mkValue(obj, expressionType) static member Var(v) = mkVar(v) static member VarSet (v, e:Expr) = mkVarSet (v, e) static member WhileLoop (e1:Expr, e2:Expr) = mkWhileLoop (e1, e2) //static member IsInlinedMethodInfo(minfo:MethodInfo) = false static member TryGetReflectedDefinition(methodBase:MethodBase) = checkNonNull "methodBase" methodBase resolveMethodBaseInstantiated(methodBase) static member Cast(expr:Expr) = cast expr static member Deserialize(qualifyingType:Type, spliceTypes, spliceExprs, bytes: byte[]) = checkNonNull "qualifyingType" qualifyingType checkNonNull "bytes" bytes deserialize (qualifyingType, spliceTypes, spliceExprs, bytes) static member RegisterReflectedDefinitions(assembly:Assembly, nm, bytes) = checkNonNull "assembly" assembly registerReflectedDefinitions(assembly, nm, bytes) static member GlobalVar<'T>(name) : Expr<'T> = checkNonNull "name" name Expr.Var(Var.Global(name, typeof<'T>)) |> Expr.Cast [] module DerivedPatterns = open Patterns [] let (|Bool|_|) = function ValueObj(:? bool as v) -> Some(v) | _ -> None [] let (|String|_|) = function ValueObj(:? string as v) -> Some(v) | _ -> None [] let (|Single|_|) = function ValueObj(:? single as v) -> Some(v) | _ -> None [] let (|Double|_|) = function ValueObj(:? double as v) -> Some(v) | _ -> None [] let (|Char|_|) = function ValueObj(:? char as v) -> Some(v) | _ -> None [] let (|SByte|_|) = function ValueObj(:? sbyte as v) -> Some(v) | _ -> None [] let (|Byte|_|) = function ValueObj(:? byte as v) -> Some(v) | _ -> None [] let (|Int16|_|) = function ValueObj(:? int16 as v) -> Some(v) | _ -> None [] let (|UInt16|_|) = function ValueObj(:? uint16 as v) -> Some(v) | _ -> None [] let (|Int32|_|) = function ValueObj(:? int32 as v) -> Some(v) | _ -> None [] let (|UInt32|_|) = function ValueObj(:? uint32 as v) -> Some(v) | _ -> None [] let (|Int64|_|) = function ValueObj(:? int64 as v) -> Some(v) | _ -> None [] let (|UInt64|_|) = function ValueObj(:? uint64 as v) -> Some(v) | _ -> None [] let (|Unit|_|) = function Comb0(ValueOp(_,ty)) when ty = typeof -> Some() | _ -> None /// (fun (x,y) -> z) is represented as 'fun p -> let x = p#0 let y = p#1' etc. /// This reverses this encoding. let (|TupledLambda|_|) (lam: Expr) = /// Strip off the 'let' bindings for an TupledLambda let rec stripSuccessiveProjLets (p:Var) n expr = match expr with | Let(v1,TupleGet(Var(pA),m),rest) when p = pA && m = n-> let restvs,b = stripSuccessiveProjLets p (n+1) rest v1::restvs, b | _ -> ([],expr) match lam.Tree with | LambdaTerm(v,body) -> match stripSuccessiveProjLets v 0 body with | [],b -> Some([v], b) | letvs,b -> Some(letvs,b) | _ -> None let (|TupledApplication|_|) e = match e with | Application(f,x) -> match x with | Unit -> Some(f,[]) | NewTuple(x) -> Some(f,x) | x -> Some(f,[x]) | _ -> None [] let (|Lambdas|_|) (e: Expr) = qOneOrMoreRLinear (|TupledLambda|_|) e [] let (|Applications|_|) (e: Expr) = qOneOrMoreLLinear (|TupledApplication|_|) e /// Reverse the compilation of And and Or [] let (|AndAlso|_|) x = match x with | IfThenElse(x,y,Bool(false)) -> Some(x,y) | _ -> None [] let (|OrElse|_|) x = match x with | IfThenElse(x,Bool(true),y) -> Some(x,y) | _ -> None [] let (|SpecificCall|_|) templateParameter = // Note: precomputation match templateParameter with | (Lambdas(_,Call(_,minfo1,_)) | Call(_,minfo1,_)) -> let isg1 = minfo1.IsGenericMethod let gmd = if isg1 then minfo1.GetGenericMethodDefinition() else null // end-of-precomputation (fun tm -> match tm with | Call(obj,minfo2,args) #if FX_NO_REFLECTION_METADATA_TOKENS when ( // if metadata tokens are not available we'll rely only on equality of method references #else when (minfo1.MetadataToken = minfo2.MetadataToken && #endif if isg1 then minfo2.IsGenericMethod && gmd = minfo2.GetGenericMethodDefinition() else minfo1 = minfo2) -> Some(obj,(minfo2.GetGenericArguments() |> Array.toList),args) | _ -> None) | _ -> invalidArg "templateParameter" (SR.GetString(SR.QunrecognizedMethodCall)) [] let (|MethodWithReflectedDefinition|_|) (minfo) = Expr.TryGetReflectedDefinition(minfo) [] let (|PropertyGetterWithReflectedDefinition|_|) (pinfo:System.Reflection.PropertyInfo) = Expr.TryGetReflectedDefinition(pinfo.GetGetMethod(true)) [] let (|PropertySetterWithReflectedDefinition|_|) (pinfo:System.Reflection.PropertyInfo) = Expr.TryGetReflectedDefinition(pinfo.GetSetMethod(true)) [] module ExprShape = open Patterns let RebuildShapeCombination(a:obj,args) = // preserve the attributes let op,attrs = unbox(a) let e = match op,args with | AppOp,[f;x] -> mkApplication(f,x) | IfThenElseOp,[g;t;e] -> mkIfThenElse(g,t,e) | LetRecOp,[e1] -> mkLetRecRaw(e1) | LetRecCombOp,_ -> mkLetRecCombRaw(args) | LetOp,[e1;e2] -> mkLetRawWithCheck(e1,e2) | NewRecordOp(ty),_ -> mkNewRecord(ty, args) | NewUnionCaseOp(unionCase),_ -> mkNewUnionCase(unionCase, args) | UnionCaseTestOp(unionCase),[arg] -> mkUnionCaseTest(unionCase,arg) | NewTupleOp(ty),_ -> mkNewTupleWithType(ty, args) | TupleGetOp(ty,i),[arg] -> mkTupleGet(ty,i,arg) | InstancePropGetOp(pinfo),(obj::args) -> mkInstancePropGet(obj,pinfo,args) | StaticPropGetOp(pinfo),[] -> mkStaticPropGet(pinfo,args) | InstancePropSetOp(pinfo),obj::(FrontAndBack(args,v)) -> mkInstancePropSet(obj,pinfo,args,v) | StaticPropSetOp(pinfo),(FrontAndBack(args,v)) -> mkStaticPropSet(pinfo,args,v) | InstanceFieldGetOp(finfo),[obj] -> mkInstanceFieldGet(obj,finfo) | StaticFieldGetOp(finfo),[] -> mkStaticFieldGet(finfo ) | InstanceFieldSetOp(finfo),[obj;v] -> mkInstanceFieldSet(obj,finfo,v) | StaticFieldSetOp(finfo),[v] -> mkStaticFieldSet(finfo,v) | NewObjectOp minfo,_ -> mkCtorCall(minfo,args) | DefaultValueOp(ty),_ -> mkDefaultValue(ty) | StaticMethodCallOp(minfo),_ -> mkStaticMethodCall(minfo,args) | InstanceMethodCallOp(minfo),obj::args -> mkInstanceMethodCall(obj,minfo,args) | CoerceOp(ty),[arg] -> mkCoerce(ty,arg) | NewArrayOp(ty),_ -> mkNewArray(ty,args) | NewDelegateOp(ty),[arg] -> mkNewDelegate(ty,arg) | SequentialOp,[e1;e2] -> mkSequential(e1,e2) | TypeTestOp(ty),[e1] -> mkTypeTest(e1,ty) | AddressOfOp,[e1] -> mkAddressOf(e1) | VarSetOp,[E(VarTerm(v)); e] -> mkVarSet(v,e) | AddressSetOp,[e1;e2] -> mkAddressSet(e1,e2) | ForIntegerRangeLoopOp,[e1;e2;E(LambdaTerm(v,e3))] -> mkForLoop(v,e1,e2,e3) | WhileLoopOp,[e1;e2] -> mkWhileLoop(e1,e2) | TryFinallyOp,[e1;e2] -> mkTryFinally(e1,e2) | TryWithOp,[e1;Lambda(v1,e2);Lambda(v2,e3)] -> mkTryWith(e1,v1,e2,v2,e3) | QuoteOp,[e1] -> mkQuote(e1) | ValueOp(v,ty),[] -> mkValue(v,ty) | _ -> raise <| System.InvalidOperationException (SR.GetString(SR.QillFormedAppOrLet)) EA(e.Tree,attrs) [] let rec (|ShapeVar|ShapeLambda|ShapeCombination|) e = let rec loop expr = let (E(t)) = expr match t with | VarTerm v -> ShapeVar(v) | LambdaTerm(v,b) -> ShapeLambda(v,b) | CombTerm(op,args) -> ShapeCombination(box (op,expr.CustomAttributes),args) | HoleTerm _ -> invalidArg "expr" (SR.GetString(SR.QunexpectedHole)) loop (e :> Expr) #endiffsharp-3.0.34/src/fsharp/FSharp.Core/list.fs0000775000175000017500000004024312260314606017527 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics open System.Collections.Generic open Microsoft.FSharp.Core.SR [] [] module List = [] let length (list: 'T list) = list.Length [] let rev list = Microsoft.FSharp.Primitives.Basics.List.rev list [] let concat lists = Microsoft.FSharp.Primitives.Basics.List.concat lists [] let map f list = Microsoft.FSharp.Primitives.Basics.List.map f list [] let mapi f list = Microsoft.FSharp.Primitives.Basics.List.mapi f list [] let iter f list = Microsoft.FSharp.Primitives.Basics.List.iter f list [] let ofArray (array:'T array) = Microsoft.FSharp.Primitives.Basics.List.ofArray array [] let toArray (list:'T list) = Microsoft.FSharp.Primitives.Basics.List.toArray list [] let empty<'T> = ([ ] : 'T list) [] let head list = match list with (x:: _) -> x | [] -> invalidArg "list" (SR.GetString(SR.inputListWasEmpty)) [] let tail list = match list with (_ :: t) -> t | [] -> invalidArg "list" (SR.GetString(SR.inputListWasEmpty)) [] let isEmpty list = match list with [] -> true | _ -> false [] let append list1 list2 = list1 @ list2 [] let rec nth list index = match list with | h::t when index >= 0 -> if index = 0 then h else nth t (index - 1) | _ -> invalidArg "index" (SR.GetString(SR.indexOutOfBounds)) let rec chooseAllAcc f xs acc = match xs with | [] -> rev acc | h :: t -> match f h with | None -> chooseAllAcc f t acc | Some x -> chooseAllAcc f t (x::acc) [] let choose f xs = chooseAllAcc f xs [] [] let iteri f list = Microsoft.FSharp.Primitives.Basics.List.iteri f list [] let init count f = Microsoft.FSharp.Primitives.Basics.List.init count f let rec initConstAcc n x acc = if n <= 0 then acc else initConstAcc (n-1) x (x::acc) [] let replicate count x = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) initConstAcc count x [] [] let iter2 f list1 list2 = let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let rec loop list1 list2 = match list1,list2 with | [],[] -> () | (h1::t1), (h2::t2) -> f.Invoke(h1,h2); loop t1 t2 | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) loop list1 list2 [] let iteri2 f list1 list2 = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let rec loop n list1 list2 = match list1,list2 with | [],[] -> () | (h1::t1), (h2::t2) -> f.Invoke(n,h1,h2); loop (n+1) t1 t2 | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) loop 0 list1 list2 let rec map3aux (f:OptimizedClosures.FSharpFunc<_,_,_,_>) list1 list2 list3 acc = match list1,list2,list3 with | [],[],[] -> rev acc | (h1::t1), (h2::t2),(h3::t3) -> let x = f.Invoke(h1,h2,h3) in map3aux f t1 t2 t3 (x :: acc) | _ -> invalidArg "list3" (SR.GetString(SR.listsHadDifferentLengths)) [] let map3 f list1 list2 list3 = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) map3aux f list1 list2 list3 [] let rec mapi2aux n (f:OptimizedClosures.FSharpFunc<_,_,_,_>) list1 list2 acc = match list1,list2 with | [],[] -> rev acc | (h1::t1), (h2::t2) -> let x = f.Invoke(n,h1,h2) in mapi2aux (n+1) f t1 t2 (x :: acc) | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) [] let mapi2 f list1 list2 = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) mapi2aux 0 f list1 list2 [] [] let map2 f list1 list2 = Microsoft.FSharp.Primitives.Basics.List.map2 f list1 list2 [] let fold<'T,'State> f (s:'State) (list: 'T list) = match list with | [] -> s | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let rec loop s xs = match xs with | [] -> s | h::t -> loop (f.Invoke(s,h)) t loop s list [] let reduce f list = match list with | [] -> invalidArg "list" (SR.GetString(SR.inputListWasEmpty)) | (h::t) -> fold f h t [] let scan<'T,'State> f (s:'State) (list:'T list) = let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let rec loop s xs acc = match xs with | [] -> rev acc | (h::t) -> let s = f.Invoke(s,h) in loop s t (s :: acc) loop s list [s] [] let fold2<'T1,'T2,'State> f (acc:'State) (list1:list<'T1>) (list2:list<'T2>) = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let rec loop acc list1 list2 = match list1,list2 with | [],[] -> acc | (h1::t1),(h2::t2) -> loop (f.Invoke(acc,h1,h2)) t1 t2 | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) loop acc list1 list2 let foldArraySubRight (f:OptimizedClosures.FSharpFunc<'T,_,_>) (arr: 'T[]) start fin acc = let mutable state = acc for i = fin downto start do state <- f.Invoke(arr.[i], state) state // this version doesn't causes stack overflow - it uses a private stack [] let foldBack<'T,'State> f (list:'T list) (acc:'State) = let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) match list with | [] -> acc | [h] -> f.Invoke(h,acc) | [h1;h2] -> f.Invoke(h1,f.Invoke(h2,acc)) | [h1;h2;h3] -> f.Invoke(h1,f.Invoke(h2,f.Invoke(h3,acc))) | [h1;h2;h3;h4] -> f.Invoke(h1,f.Invoke(h2,f.Invoke(h3,f.Invoke(h4,acc)))) | _ -> // It is faster to allocate and iterate an array than to create all those // highly nested stacks. It also means we won't get stack overflows here. let arr = toArray list let arrn = arr.Length foldArraySubRight f arr 0 (arrn - 1) acc [] let reduceBack f list = match list with | [] -> invalidArg "list" (SR.GetString(SR.inputListWasEmpty)) | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let arr = toArray list let arrn = arr.Length foldArraySubRight f arr 0 (arrn - 2) arr.[arrn - 1] let scanArraySubRight<'T,'State> (f:OptimizedClosures.FSharpFunc<'T,'State,'State>) (arr:_[]) start fin initState = let mutable state = initState let mutable res = [state] for i = fin downto start do state <- f.Invoke(arr.[i], state); res <- state :: res res [] let scanBack<'T,'State> f (list:'T list) (s:'State) = match list with | [] -> [s] | [h] -> [f h s; s] | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) // It is faster to allocate and iterate an array than to create all those // highly nested stacks. It also means we won't get stack overflows here. let arr = toArray list let arrn = arr.Length scanArraySubRight f arr 0 (arrn - 1) s let foldBack2UsingArrays (f:OptimizedClosures.FSharpFunc<_,_,_,_>) list1 list2 acc = let arr1 = toArray list1 let arr2 = toArray list2 let n1 = arr1.Length let n2 = arr2.Length if n1 <> n2 then invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)); let mutable res = acc for i = n1 - 1 downto 0 do res <- f.Invoke(arr1.[i],arr2.[i],res) res [] let rec foldBack2<'T1,'T2,'State> f (list1:'T1 list) (list2:'T2 list) (acc:'State) = match list1,list2 with | [],[] -> acc | h1::rest1, k1::rest2 -> let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) match rest1, rest2 with | [],[] -> f.Invoke(h1,k1,acc) | [h2],[k2] -> f.Invoke(h1,k1,f.Invoke(h2,k2,acc)) | [h2;h3],[k2;k3] -> f.Invoke(h1,k1,f.Invoke(h2,k2,f.Invoke(h3,k3,acc))) | [h2;h3;h4],[k2;k3;k4] -> f.Invoke(h1,k1,f.Invoke(h2,k2,f.Invoke(h3,k3,f.Invoke(h4,k4,acc)))) | _ -> foldBack2UsingArrays f list1 list2 acc | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) let rec forall2aux (f:OptimizedClosures.FSharpFunc<_,_,_>) list1 list2 = match list1,list2 with | [],[] -> true | (h1::t1),(h2::t2) -> f.Invoke(h1,h2) && forall2aux f t1 t2 | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) [] let forall2 f list1 list2 = match list1,list2 with | [],[] -> true | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) forall2aux f list1 list2 [] let forall f list1 = Microsoft.FSharp.Primitives.Basics.List.forall f list1 [] let exists f list1 = Microsoft.FSharp.Primitives.Basics.List.exists f list1 let rec exists2aux (f:OptimizedClosures.FSharpFunc<_,_,_>) list1 list2 = match list1,list2 with | [],[] -> false | (h1::t1),(h2::t2) ->f.Invoke(h1,h2) || exists2aux f t1 t2 | _ -> invalidArg "list2" (SR.GetString(SR.listsHadDifferentLengths)) [] let rec exists2 f list1 list2 = match list1,list2 with | [],[] -> false | _ -> let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) exists2aux f list1 list2 [] let rec find f list = match list with [] -> raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) | h::t -> if f h then h else find f t [] let rec tryFind f list = match list with [] -> None | h::t -> if f h then Some h else tryFind f t [] let rec tryPick f list = match list with | [] -> None | h::t -> match f h with | None -> tryPick f t | r -> r [] let rec pick f list = match list with | [] -> raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) | h::t -> match f h with | None -> pick f t | Some r -> r [] let filter f x = Microsoft.FSharp.Primitives.Basics.List.filter f x [] let partition p x = Microsoft.FSharp.Primitives.Basics.List.partition p x [] let unzip x = Microsoft.FSharp.Primitives.Basics.List.unzip x [] let unzip3 x = Microsoft.FSharp.Primitives.Basics.List.unzip3 x [] let zip x1 x2 = Microsoft.FSharp.Primitives.Basics.List.zip x1 x2 [] let zip3 x1 x2 x3 = Microsoft.FSharp.Primitives.Basics.List.zip3 x1 x2 x3 [] let sortWith cmp xs = Microsoft.FSharp.Primitives.Basics.List.sortWith cmp xs [] let sortBy f xs = match xs with | [] | [_] -> xs | _ -> let array = List.toArray xs Microsoft.FSharp.Primitives.Basics.Array.stableSortInPlaceBy f array List.ofArray array [] let sort xs = match xs with | [] | [_] -> xs | _ -> let array = List.toArray xs Microsoft.FSharp.Primitives.Basics.Array.stableSortInPlace array List.ofArray array [] let ofSeq source = Seq.toList source [] let toSeq list = Seq.ofList list [] let findIndex f list = let rec loop n = function[] -> raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) | h::t -> if f h then n else loop (n+1) t loop 0 list [] let tryFindIndex f list = let rec loop n = function[] -> None | h::t -> if f h then Some n else loop (n+1) t loop 0 list [] let inline sum (list:list<_>) = Seq.sum list [] let inline sumBy f (list:list<_>) = Seq.sumBy f list [] let inline max (list:list<_>) = Seq.max list [] let inline maxBy f (list:list<_>) = Seq.maxBy f list [] let inline min (list:list<_>) = Seq.min list [] let inline minBy f (list:list<_>) = Seq.minBy f list [] let inline average (list:list<_>) = Seq.average list [] let inline averageBy f (list:list<_>) = Seq.averageBy f list [] let collect f list = Microsoft.FSharp.Primitives.Basics.List.collect f list [] let permute indexMap list = list |> toArray |> Array.permute indexMap |> ofArray fsharp-3.0.34/src/fsharp/FSharp.Core/FSCore.resx0000775000175000017500000006612212260314606020252 0ustar chrischris text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 The match cases were incomplete First class uses of address-of operators are not permitted. The arrays have different lengths. The input array was empty. Input string was not in a correct format. Expecting delegate type. Dynamic invocation of DivideByInt involving coercions is not supported. Dynamic invocation of op_Addition involving coercions is not supported. Dynamic invocation of op_Addition involving overloading is not supported. Dynamic invocation of op_Multiply involving coercions is not supported. Dynamic invocation of op_Multiply involving overloading is not supported. The end of a range cannot be NaN. Enumeration already finished. Enumeration has not started. Call MoveNext. Set contains no elements. Enumeration based on System.Int32 exceeded System.Int32.MaxValue. Failed to read enough bytes from the stream. Failure during generic comparison: the type '{0}' does not implement the System.IComparable interface. This error may be arise from the use of a function such as 'compare', 'max' or 'min' or a data structure such as 'Set' or 'Map' whose keys contain instances of this type. The index was outside the range of elements in the list. The input list was empty. The input must be non-negative. The input sequence was empty. This is not a valid tuple type for the F# reflection library. The item, key, or index was not found in the collection. The lists had different lengths. The MailboxProcessor has already been started. MailboxProcessor.PostAndAsyncReply timed out. MailboxProcessor.PostAndReply timed out. Mailbox.Receive timed out. Mailbox.Scan timed out. Map values cannot be mutated. The IAsyncResult object provided does not match this 'Cancel' operation. The IAsyncResult object provided does not match this 'End' operation. Negating the minimum value of a twos complement number is invalid. The initialization of an object or value resulted in an object or value being accessed recursively before it was fully initialized. The static initialization of a file or type resulted in static data being accessed recursively before it was fully initialized. Arrays with non-zero base cannot be created on this platform. Type '{0}' is not a function type. Type '{0}' is not the representation of an F# exception declaration. The function did not compute a permutation. Type '{0}' is not an F# record type. Type '{0}' is not a tuple type. Type '{0}' is not an F# union type. The two objects have different types and are not comparable. The input sequence has an insufficient number of elements. This object is for recursive equality calls and cannot be used for hashing. One of the elements in the array is null. The object is not an F# record value. The object is null and no type was given. Either pass a non-null object or a non-null type parameter. The index is outside the legal range. The type '{0}' is the representation of an F# exception declaration but its representation is private. You must specify BindingFlags.NonPublic to access private type representations. The type '{0}' is an F# record type but its representation is private. You must specify BindingFlags.NonPublic to access private type representations. The type '{0}' is an F# union type but its representation is private. You must specify BindingFlags.NonPublic to access private type representations. Expected exactly one type argument. Expected exactly two type arguments. Not a valid F# union case index. Type '{0}' did not have an F# record field named '{1}'. Type '{0}' did not have an F# union case named '{1}'. Type mismatch when building '{0}': the type of the field was incorrect. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': body must return unit. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': condition expression must be of type bool. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': expected function type in function application or let binding. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': expression doesn't match the tuple type. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': types of expression does not match. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': function argument type doesn't match. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': guard must return boolean. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': incorrect argument type for an F# record. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': incorrect argument type for an F# union. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': initializer doesn't match array type. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': invalid parameter for a method or indexer property. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': body of the for loop must be lambda taking integer as an argument. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': lower and upper bounds must be integers. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': types of true and false branches differ. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': mismatched type of argument and tuple element. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': the variable type doesn't match the type of the right-hand-side of a let binding. Expected '{1}', but received type '{2}'. Unexpected quotation hole in expression. The parameter is not a recognized method name. Reset is not supported on this enumerator. The start of a range cannot be NaN. The step of a range cannot be NaN. The step of a range cannot be zero. The System.Threading.SynchronizationContext.Current of the calling thread is null. The tuple index '{1}' was out of range for tuple type '{0}'. Failed to bind constructor Failed to bind field '{0}' Failed to bind property '{0}' Failed to bind type '{0}' in assembly '{1}' Incompatible record length Incorrect instance type Incorrect number of arguments Incorrect type Invalid function type The member is non-static (instance), but no receiver object was supplied Parent type cannot be null Reading a set-only property Receiver object was unexpected, as member is static Type mismatch when building '{0}': the expression has the wrong type. Expected '{1}', but received type '{2}'. Type mismatch when building '{0}': function type doesn't match delegate type. Expected '{1}', but received type '{2}'. Type mismatch when splicing expression into quotation literal. The type of the expression tree being inserted doesn't match the type expected by the splicing operation. Expected '{0}', but received type '{1}'. Consider type-annotating with the expected expression type, e.g., (%% x : string) or (%x : string). Tuple access out of range The tuple lengths are different F# union type requires different number of arguments Writing a get-only property The method '{0}' expects {1} type arguments but {2} were provided An index satisfying the predicate was not found in the collection. The constructor method '{0}' for the union case could not be found first class uses of '%' or '%%' are not permitted MoveNext not called, or finished Multiple CompilationMappingAttributes, expected at most one Bad float value Bad format specifier:{0} Bad integer supplied to dynamic formatter Expected a precision argument Expected a width argument The # formatting modifier is invalid in F# Missing format specifier Not a function type Bad format specifier (precision) Bad format specifier (after {0}) Bad format specifier (width) Could not bind function {0} in type {1} Could not bind property {0} in type {1} Could not bind to method Cannot take the address of this quotation Failed to bind assembly '{0}' while processing quotation data ill formed expression: AppOp or LetOp type argument out of range This value cannot be mutated The option value was None A continuation provided by Async.FromContinuations was invoked multiple times The record type '{0}' is invalid. Required constructor is not defined. The tuple type '{0}' is invalid. Required constructor is not defined. The input sequence contains more than one element. 'thenBy' and 'thenByDescending' may only be used with an ordered input Unrecognized use of a 'sumBy' or 'averageBy' operator in a query. In queries whose original data is of static type IQueryable, these operators may only be used with result type int32, int64, single, double or decimal An if/then/else conditional or pattern matching expression with multiple branches is not permitted in a query. An if/then/else conditional may be used. This is not a valid query expression. The following construct was used in a query but is not recognized by the F#-to-LINQ query translator:\n{0}\nCheck the specification of permitted queries and consider moving some of the operations out of the query expression. This is not a valid query expression. The method '{0}' was used in a query but is not recognized by the F#-to-LINQ query translator. Check the specification of permitted queries and consider moving some of the operations out of the query expression This is not a valid query expression. The property '{0}' was used in a query but is not recognized by the F#-to-LINQ query translator. Check the specification of permitted queries and consider moving some of the operations out of the query expression. This is not a valid query expression. The construct '{0}' was used in a query but is not recognized by the F#-to-LINQ query translator. Check the specification of permitted queries and consider moving some of the operations out of the query expression. fsharp-3.0.34/src/fsharp/FSharp.Core/reflect.fsi0000775000175000017500000005345212260314606020357 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// This namespace contains constructs for reflecting on the representation of /// F# values and types. It augments the design of System.Reflection. namespace Microsoft.FSharp.Reflection open System open System.Reflection open Microsoft.FSharp.Core open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Collections //--------------------------------------------------------------------- // F# reified type inspection. /// Represents a case of a discriminated union type [] type UnionCaseInfo = /// The name of the case. member Name : string /// The type in which the case occurs. member DeclaringType: Type /// Returns the custom attributes associated with the case. /// An array of custom attributes. member GetCustomAttributes: unit -> obj[] /// Returns the custom attributes associated with the case matching the given attribute type. /// The type of attributes to return. /// An array of custom attributes. member GetCustomAttributes: attributeType:System.Type -> obj[] #if FX_NO_CUSTOMATTRIBUTEDATA #else /// Returns the custom attributes data associated with the case. /// An list of custom attribute data items. member GetCustomAttributesData: unit -> System.Collections.Generic.IList #endif /// The fields associated with the case, represented by a PropertyInfo. /// The fields associated with the case. member GetFields: unit -> PropertyInfo [] /// The integer tag for the case. member Tag: int [] /// Contains operations associated with constructing and analyzing values associated with F# types /// such as records, unions and tuples. type FSharpValue = /// Creates an instance of a record type. /// /// Assumes the given input is a record type. /// The type of record to make. /// The array of values to initialize the record. /// Optional binding flags for the record. /// Thrown when the input type is not a record type. /// The created record. static member MakeRecord: recordType:Type * values:obj [] * ?bindingFlags:BindingFlags -> obj /// Reads a field from a record value. /// /// Assumes the given input is a record value. If not, ArgumentException is raised. /// The record object. /// The PropertyInfo describing the field to read. /// Thrown when the input type is not a record type. /// The field from the record. static member GetRecordField: record:obj * info:PropertyInfo -> obj /// Reads all the fields from a record value. /// /// Assumes the given input is a record value. If not, ArgumentException is raised. /// The record object. /// Optional binding flags for the record. /// Thrown when the input type is not a record type. /// The array of fields from the record. static member GetRecordFields: record:obj * ?bindingFlags:BindingFlags -> obj[] /// Precompute a function for reading a particular field from a record. /// Assumes the given type is a RecordType with a field of the given name. /// If not, ArgumentException is raised during pre-computation. /// /// Using the computed function will typically be faster than executing a corresponding call to Value.GetInfo /// because the path executed by the computed function is optimized given the knowledge that it will be /// used to read values of the given type. /// The PropertyInfo of the field to read. /// Thrown when the input type is not a record type. /// A function to read the specified field from the record. static member PreComputeRecordFieldReader : info:PropertyInfo -> (obj -> obj) /// Precompute a function for reading all the fields from a record. The fields are returned in the /// same order as the fields reported by a call to Microsoft.FSharp.Reflection.Type.GetInfo for /// this type. /// /// Assumes the given type is a RecordType. /// If not, ArgumentException is raised during pre-computation. /// /// Using the computed function will typically be faster than executing a corresponding call to Value.GetInfo /// because the path executed by the computed function is optimized given the knowledge that it will be /// used to read values of the given type. /// The type of record to read. /// Optional binding flags. /// Thrown when the input type is not a record type. /// An optimized reader for the given record type. static member PreComputeRecordReader : recordType:Type * ?bindingFlags:BindingFlags -> (obj -> obj[]) /// Precompute a function for constructing a record value. /// /// Assumes the given type is a RecordType. /// If not, ArgumentException is raised during pre-computation. /// The type of record to construct. /// Optional binding flags. /// Thrown when the input type is not a record type. /// A function to construct records of the given type. static member PreComputeRecordConstructor : recordType:Type * ?bindingFlags:BindingFlags -> (obj[] -> obj) /// Get a ConstructorInfo for a record type /// The record type. /// Optional binding flags. /// A ConstructorInfo for the given record type. static member PreComputeRecordConstructorInfo: recordType:Type * ?bindingFlags:BindingFlags -> ConstructorInfo /// Create a union case value. /// The description of the union case to create. /// The array of arguments to construct the given case. /// Optional binding flags. /// The constructed union case. static member MakeUnion: unionCase:UnionCaseInfo * args:obj [] * ?bindingFlags:BindingFlags -> obj /// Identify the union case and its fields for an object /// /// Assumes the given input is a union case value. If not, ArgumentException is raised. /// /// If the type is not given, then the runtime type of the input object is used to identify the /// relevant union type. The type should always be given if the input object may be null. For example, /// option values may be represented using the 'null'. /// The input union case. /// The union type containing the value. /// Optional binding flags. /// Thrown when the input type is not a union case value. /// The description of the union case and its fields. static member GetUnionFields: value:obj * unionType:Type * ?bindingFlags:BindingFlags -> UnionCaseInfo * obj [] /// Assumes the given type is a union type. /// If not, ArgumentException is raised during pre-computation. /// /// Using the computed function is more efficient than calling GetUnionCase /// because the path executed by the computed function is optimized given the knowledge that it will be /// used to read values of the given type. /// The type of union to optimize reading. /// Optional binding flags. /// An optimized function to read the tags of the given union type. static member PreComputeUnionTagReader : unionType:Type * ?bindingFlags:BindingFlags -> (obj -> int) /// Precompute a property or static method for reading an integer representing the case tag of a union type. /// The type of union to read. /// Optional binding flags. /// The description of the union case reader. static member PreComputeUnionTagMemberInfo : unionType:Type * ?bindingFlags:BindingFlags -> MemberInfo /// Precomputes a function for reading all the fields for a particular discriminator case of a union type /// /// Using the computed function will typically be faster than executing a corresponding call to GetFields /// The description of the union case to read. /// Optional binding flags. /// A function to for reading the fields of the given union case. static member PreComputeUnionReader : unionCase:UnionCaseInfo * ?bindingFlags:BindingFlags -> (obj -> obj[]) /// Precomputes a function for constructing a discriminated union value for a particular union case. /// The description of the union case. /// Optional binding flags. /// A function for constructing values of the given union case. static member PreComputeUnionConstructor : unionCase:UnionCaseInfo * ?bindingFlags:BindingFlags -> (obj[] -> obj) /// A method that constructs objects of the given case /// The description of the union case. /// Optional binding flags. /// The description of the constructor of the given union case. static member PreComputeUnionConstructorInfo: unionCase:UnionCaseInfo * ?bindingFlags:BindingFlags -> MethodInfo /// Creates an instance of a tuple type /// /// Assumes at least one element is given. If not, ArgumentException is raised. /// The array of tuple fields. /// The tuple type to create. /// Thrown if no elements are given. /// An instance of the tuple type with the given elements. static member MakeTuple: tupleElements:obj[] * tupleType:Type -> obj /// Reads a field from a tuple value. /// /// Assumes the given input is a tuple value. If not, ArgumentException is raised. /// The input tuple. /// The index of the field to read. /// The value of the field. static member GetTupleField: tuple:obj * index:int -> obj /// Reads all fields from a tuple. /// /// Assumes the given input is a tuple value. If not, ArgumentException is raised. /// The input tuple. /// Thrown when the input is not a tuple value. /// An array of the fields from the given tuple. static member GetTupleFields: tuple:obj -> obj [] /// Precomputes a function for reading the values of a particular tuple type /// /// Assumes the given type is a TupleType. /// If not, ArgumentException is raised during pre-computation. /// The tuple type to read. /// Thrown when the given type is not a tuple type. /// A function to read values of the given tuple type. static member PreComputeTupleReader : tupleType:Type -> (obj -> obj[]) /// Gets information that indicates how to read a field of a tuple /// The input tuple type. /// The index of the tuple element to describe. /// The description of the tuple element and an optional type and index if the tuple is big. static member PreComputeTuplePropertyInfo: tupleType:Type * index:int -> PropertyInfo * (Type * int) option /// Precomputes a function for reading the values of a particular tuple type /// /// Assumes the given type is a TupleType. /// If not, ArgumentException is raised during pre-computation. /// The type of tuple to read. /// Thrown when the given type is not a tuple type. /// A function to read a particular tuple type. static member PreComputeTupleConstructor : tupleType:Type -> (obj[] -> obj) /// Gets a method that constructs objects of the given tuple type. /// For small tuples, no additional type will be returned. /// /// For large tuples, an additional type is returned indicating that /// a nested encoding has been used for the tuple type. In this case /// the suffix portion of the tuple type has the given type and an /// object of this type must be created and passed as the last argument /// to the ConstructorInfo. A recursive call to PreComputeTupleConstructorInfo /// can be used to determine the constructor for that the suffix type. /// The input tuple type. /// The description of the tuple type constructor and an optional extra type /// for large tuples. static member PreComputeTupleConstructorInfo: tupleType:Type -> ConstructorInfo * Type option /// Builds a typed function from object from a dynamic function implementation /// The function type of the implementation. /// The untyped lambda of the function implementation. /// A typed function from the given dynamic implementation. static member MakeFunction : functionType:Type * implementation:(obj -> obj) -> obj /// Reads all the fields from a value built using an instance of an F# exception declaration /// /// Assumes the given input is an F# exception value. If not, ArgumentException is raised. /// The exception instance. /// Optional binding flags. /// Thrown when the input type is not an F# exception. /// The fields from the given exception. static member GetExceptionFields: exn:obj * ?bindingFlags:BindingFlags -> obj[] [] /// Contains operations associated with constructing and analyzing F# types such as records, unions and tuples type FSharpType = /// Reads all the fields from a record value, in declaration order /// /// Assumes the given input is a record value. If not, ArgumentException is raised. /// The input record type. /// Optional binding flags. /// An array of descriptions of the properties of the record type. static member GetRecordFields: recordType:Type * ?bindingFlags:BindingFlags -> PropertyInfo[] /// Gets the cases of a union type. /// /// Assumes the given type is a union type. If not, ArgumentException is raised during pre-computation. /// The input union type. /// Optional binding flags. /// Thrown when the input type is not a union type. /// An array of descriptions of the cases of the given union type. static member GetUnionCases: unionType:Type * ?bindingFlags:BindingFlags -> UnionCaseInfo[] /// Returns a System.Type representing the F# function type with the given domain and range /// The input type of the function. /// The output type of the function. /// The function type with the given domain and range. static member MakeFunctionType: domain:Type * range:Type -> Type /// Returns a System.Type representing an F# tuple type with the given element types /// An array of types for the tuple elements. /// The type representing the tuple containing the input elements. static member MakeTupleType: types:Type[] -> Type /// Return true if the typ is a representation of an F# tuple type /// The type to check. /// True if the type check succeeds. static member IsTuple : typ:Type -> bool /// Return true if the typ is a representation of an F# function type or the runtime type of a closure implementing an F# function type /// The type to check. /// True if the type check succeeds. static member IsFunction : typ:Type -> bool /// Return true if the typ is a System.Type value corresponding to the compiled form of an F# module /// The type to check. /// True if the type check succeeds. static member IsModule: typ:Type -> bool /// Return true if the typ is a representation of an F# record type /// The type to check. /// Optional binding flags. /// True if the type check succeeds. static member IsRecord: typ:Type * ?bindingFlags:BindingFlags -> bool /// Returns true if the typ is a representation of an F# union type or the runtime type of a value of that type /// The type to check. /// Optional binding flags. /// True if the type check succeeds. static member IsUnion: typ:Type * ?bindingFlags:BindingFlags -> bool /// Gets the tuple elements from the representation of an F# tuple type. /// The input tuple type. /// An array of the types contained in the given tuple type. static member GetTupleElements : tupleType:Type -> Type[] /// Gets the domain and range types from an F# function type or from the runtime type of a closure implementing an F# type /// The input function type. /// A tuple of the domain and range types of the input function. static member GetFunctionElements : functionType:Type -> Type * Type /// Reads all the fields from an F# exception declaration, in declaration order /// /// Assumes exceptionType is an exception representation type. If not, ArgumentException is raised. /// The exception type to read. /// Optional binding flags. /// Thrown if the given type is not an exception. /// An array containing the PropertyInfo of each field in the exception. static member GetExceptionFields: exceptionType:Type * ?bindingFlags:BindingFlags -> PropertyInfo[] /// Returns true if the typ is a representation of an F# exception declaration /// The type to check. /// Optional binding flags. /// True if the type check is an F# exception. static member IsExceptionRepresentation: exceptionType:Type * ?bindingFlags:BindingFlags -> bool #if SILVERLIGHT [] type DynamicFunction<'T1,'T2> = inherit FSharpFunc obj, obj> new : unit -> DynamicFunction<'T1,'T2> #endif fsharp-3.0.34/src/fsharp/FSharp.Core/Query.fsi0000775000175000017500000005520312260314606020034 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Linq #if QUERIES_IN_FSLIB open Microsoft.FSharp open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open System open System.Linq open System.Collections open System.Collections.Generic [] /// A partial input or result in an F# query. This type is used to support the F# query syntax. type QuerySource<'T, 'Q> = /// /// A method used to support the F# query syntax. /// new : seq<'T> -> QuerySource<'T,'Q> /// /// A property used to support the F# query syntax. /// member Source : seq<'T> [] /// The type used to support the F# query syntax. Use 'query { ... }' to use the query syntax. type QueryBuilder = /// Create an instance of this builder. Use 'query { ... }' to use the query syntax. new : unit -> QueryBuilder /// /// A method used to support the F# query syntax. Inputs to queries are implicitly wrapped by a call to one of the overloads of this method. /// member Source : source:IQueryable<'T> -> QuerySource<'T,'Q> /// /// A method used to support the F# query syntax. Inputs to queries are implicitly wrapped by a call to one of the overloads of this method. /// member Source : source:IEnumerable<'T> -> QuerySource<'T,IEnumerable> /// /// A method used to support the F# query syntax. Projects each element of a sequence to another sequence and combines the resulting sequences into one sequence. /// member For : source:QuerySource<'T,'Q> * body:('T -> QuerySource<'Result,'Q2>) -> QuerySource<'Result,'Q> /// /// A method used to support the F# query syntax. Returns an empty sequence that has the specified type argument. /// member Zero : unit -> QuerySource<'T,'Q> /// /// A method used to support the F# query syntax. Returns a sequence of length one that contains the specified value. /// member Yield : value:'T -> QuerySource<'T,'Q> /// /// A method used to support the F# query syntax. Returns a sequence that contains the specified values. /// member YieldFrom : computation:QuerySource<'T,'Q> -> QuerySource<'T,'Q> /// /// A method used to support the F# query syntax. Indicates that the query should be passed as a quotation to the Run method. /// member Quote : Quotations.Expr<'T> -> Quotations.Expr<'T> /// /// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ IQueryable rules. /// member Run : Quotations.Expr> -> IQueryable<'T> member internal RunQueryAsQueryable : Quotations.Expr> -> IQueryable<'T> member internal RunQueryAsEnumerable : Quotations.Expr> -> seq<'T> member internal RunQueryAsValue : Quotations.Expr<'T> -> 'T /// A query operator that determines whether the selected elements contains a specified element. /// [] member Contains : source:QuerySource<'T,'Q> * key:'T -> bool /// A query operator that returns the number of selected elements. /// [] member Count : source:QuerySource<'T,'Q> -> int /// A query operator that selects the last element of those selected so far. /// [] member Last : source:QuerySource<'T,'Q> -> 'T /// A query operator that selects the last element of those selected so far, or a default value if no element is found. /// [] member LastOrDefault : source:QuerySource<'T,'Q> -> 'T /// A query operator that selects the single, specific element selected so far /// [] member ExactlyOne : source:QuerySource<'T,'Q> -> 'T /// A query operator that selects the single, specific element of those selected so far, or a default value if that element is not found. /// [] member ExactlyOneOrDefault : source:QuerySource<'T,'Q> -> 'T /// A query operator that selects the first element of those selected so far, or a default value if the sequence contains no elements. /// [] member HeadOrDefault : source:QuerySource<'T,'Q> -> 'T /// A query operator that projects each of the elements selected so far. /// [] member Select : source:QuerySource<'T,'Q> * [] projection:('T -> 'Result) -> QuerySource<'Result,'Q> /// A query operator that selects those elements based on a specified predicate. /// [] member Where : source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q> /// A query operator that selects a value for each element selected so far and returns the minimum resulting value. /// [] member MinBy : source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value : equality and 'Value : comparison /// A query operator that selects a value for each element selected so far and returns the maximum resulting value. /// [] member MaxBy : source:QuerySource<'T,'Q> * [] valueSelector:('T -> 'Value) -> 'Value when 'Value : equality and 'Value : comparison /// A query operator that groups the elements selected so far according to a specified key selector. /// [] member GroupBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key : equality /// A query operator that sorts the elements selected so far in ascending order by the given sorting key. /// [] member SortBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that sorts the elements selected so far in descending order by the given sorting key. /// [] member SortByDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that performs a subsequent ordering of the elements selected so far in ascending order by the given sorting key. /// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants. /// [] member ThenBy : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that performs a subsequent ordering of the elements selected so far in descending order by the given sorting key. /// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants. /// [] member ThenByDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> 'Key) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that selects a value for each element selected so far and groups the elements by the given key. /// [] member GroupValBy<'T,'Key,'Value,'Q> : source:QuerySource<'T,'Q> * [] resultSelector:('T -> 'Value) * [] keySelector:('T -> 'Key) -> QuerySource,'Q> when 'Key : equality /// A query operator that correlates two sets of selected values based on matching keys. /// Normal usage is 'join y in elements2 on (key1 = key2)'. /// [] member Join : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> 'Inner -> 'Result) -> QuerySource<'Result,'Q> /// A query operator that correlates two sets of selected values based on matching keys and groups the results. /// Normal usage is 'groupJoin y in elements2 on (key1 = key2) into group'. /// [] member GroupJoin : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q> /// A query operator that correlates two sets of selected values based on matching keys and groups the results. /// If any group is empty, a group with a single default value is used instead. /// Normal usage is 'leftOuterJoin y in elements2 on (key1 = key2) into group'. /// [] member LeftOuterJoin : outerSource:QuerySource<'Outer,'Q> * innerSource:QuerySource<'Inner,'Q> * outerKeySelector:('Outer -> 'Key) * innerKeySelector:('Inner -> 'Key) * resultSelector:('Outer -> seq<'Inner> -> 'Result) -> QuerySource<'Result,'Q> #if SUPPORT_ZIP_IN_QUERIES /// /// When used in queries, this operator corresponds to the LINQ Zip operator. /// [] member Zip : firstSource:QuerySource<'T1> * secondSource:QuerySource<'T2> * resultSelector:('T1 -> 'T2 -> 'Result) -> QuerySource<'Result> #endif /// A query operator that selects a nullable value for each element selected so far and returns the sum of these values. /// If any nullable does not have a value, it is ignored. /// [] member inline SumByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable< ^Value >) -> Nullable< ^Value > when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : int /// A query operator that selects a nullable value for each element selected so far and returns the minimum of these values. /// If any nullable does not have a value, it is ignored. /// [] member MinByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value> when 'Value : equality and 'Value : comparison /// A query operator that selects a nullable value for each element selected so far and returns the maximum of these values. /// If any nullable does not have a value, it is ignored. /// [] member MaxByNullable : source:QuerySource<'T,'Q> * [] valueSelector:('T -> Nullable<'Value>) -> Nullable<'Value> when 'Value : equality and 'Value : comparison /// A query operator that selects a nullable value for each element selected so far and returns the average of these values. /// If any nullable does not have a value, it is ignored. /// [] member inline AverageByNullable : source:QuerySource<'T,'Q> * [] projection:('T -> Nullable< ^Value >) -> Nullable< ^Value > when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member DivideByInt : ^Value * int -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : float /// A query operator that selects a value for each element selected so far and returns the average of these values. /// [] member inline AverageBy : source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member DivideByInt : ^Value * int -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : float /// A query operator that selects distinct elements from the elements selected so far. /// [] member Distinct: source:QuerySource<'T,'Q> -> QuerySource<'T,'Q> when 'T : equality /// A query operator that determines whether any element selected so far satisfies a condition. /// [] member Exists: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> bool /// A query operator that selects the first element selected so far that satisfies a specified condition. /// [] member Find: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> 'T /// A query operator that determines whether all elements selected so far satisfies a condition. /// [] member All: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> bool /// A query operator that selects the first element from those selected so far. /// [] member Head: source:QuerySource<'T,'Q> -> 'T /// A query operator that selects the element at a specified index amongst those selected so far. /// [] member Nth: source:QuerySource<'T,'Q> * index:int -> 'T /// A query operator that bypasses a specified number of the elements selected so far and selects the remaining elements. /// [] member Skip: source:QuerySource<'T,'Q> * count:int -> QuerySource<'T,'Q> /// A query operator that bypasses elements in a sequence as long as a specified condition is true and then selects the remaining elements. /// [] member SkipWhile: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q> /// A query operator that selects a value for each element selected so far and returns the sum of these values. /// [] member inline SumBy : source:QuerySource<'T,'Q> * [] projection:('T -> ^Value) -> ^Value when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : int /// A query operator that selects a specified number of contiguous elements from those selected so far. /// [] member Take: source:QuerySource<'T,'Q> * count:int-> QuerySource<'T,'Q> /// A query operator that selects elements from a sequence as long as a specified condition is true, and then skips the remaining elements. /// [] member TakeWhile: source:QuerySource<'T,'Q> * [] predicate:('T -> bool) -> QuerySource<'T,'Q> /// A query operator that sorts the elements selected so far in ascending order by the given nullable sorting key. /// [] member SortByNullable : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that sorts the elements selected so far in descending order by the given nullable sorting key. /// [] member SortByNullableDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that performs a subsequent ordering of the elements selected so far in ascending order by the given nullable sorting key. /// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants. /// [] member ThenByNullable : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison /// A query operator that performs a subsequent ordering of the elements selected so far in descending order by the given nullable sorting key. /// This operator may only be used immediately after a 'sortBy', 'sortByDescending', 'thenBy' or 'thenByDescending', or their nullable variants. /// [] member ThenByNullableDescending : source:QuerySource<'T,'Q> * [] keySelector:('T -> Nullable<'Key>) -> QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison #if __DEBUG [] [] type QueryQuoteBuilder = inherit QueryBuilder new : unit -> QueryQuoteBuilder member Run : Quotations.Expr<'T> -> Quotations.Expr<'T> [] [] type QueryLinqExprBuilder = inherit QueryBuilder new : unit -> QueryLinqExprBuilder member Run : Quotations.Expr<'T> -> System.Linq.Expressions.Expression [] type QueryExprBuilder = inherit QueryBuilder new : unit -> QueryExprBuilder member Run : Quotations.Expr<'T> -> Quotations.Expr [] type QueryExprPreTransBuilder = inherit QueryBuilder new : unit -> QueryExprPreTransBuilder member Run : Quotations.Expr<'T> -> Quotations.Expr [] type QueryExprPreEliminateNestedBuilder = inherit QueryBuilder new : unit -> QueryExprPreEliminateNestedBuilder member Run : Quotations.Expr<'T> -> Quotations.Expr #endif namespace Microsoft.FSharp.Linq.QueryRunExtensions open Microsoft.FSharp.Core module LowPriority = type Microsoft.FSharp.Linq.QueryBuilder with /// /// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ rules. /// [] member Run : Microsoft.FSharp.Quotations.Expr<'T> -> 'T module HighPriority = type Microsoft.FSharp.Linq.QueryBuilder with /// /// A method used to support the F# query syntax. Runs the given quotation as a query using LINQ IEnumerable rules. /// [] member Run : Microsoft.FSharp.Quotations.Expr> -> Microsoft.FSharp.Collections.seq<'T> #endif fsharp-3.0.34/src/fsharp/FSharp.Core/Query.fs0000775000175000017500000033677512260314606017703 0ustar chrischris// Copyright (c) Microsoft Corporation 2005-2008. // This sample code is provided "as is" without warranty of any kind. // We disclaim all warranties, either express or implied, including the // warranties of merchantability and fitness for a particular purpose. // namespace Microsoft.FSharp.Linq #if QUERIES_IN_FSLIB open System open System.Linq open System.Collections open System.Collections.Generic open System.Linq.Expressions open System.Reflection #if FX_NO_REFLECTION_EMIT #else open System.Reflection.Emit #endif open Microsoft.FSharp open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Collections open Microsoft.FSharp.Reflection open Microsoft.FSharp.Linq open Microsoft.FSharp.Linq.RuntimeHelpers.Adapters open Microsoft.FSharp.Linq.RuntimeHelpers open Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter open Microsoft.FSharp.Quotations open Microsoft.FSharp.Quotations.Patterns open Microsoft.FSharp.Quotations.DerivedPatterns #nowarn "64" [] type QuerySource<'T, 'Q> (source: seq<'T>) = member __.Source = source [] module Helpers = // This helps the somewhat complicated type inference for AverageByNullable and SumByNullable, by making both type in a '+' the same let inline plus (x:'T) (y:'T) = Checked.(+) x y let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> () let checkThenBySource (source: seq<'T>) = match source with | :? System.Linq.IOrderedEnumerable<'T> as source -> source | _ -> invalidArg "source" (SR.GetString(SR.thenByError)) type QueryBuilder() = member __.For (source:QuerySource<'T,'Q>, body: 'T -> QuerySource<'Result,'Q2>) : QuerySource<'Result,'Q> = QuerySource (Seq.collect (fun x -> (body x).Source) source.Source) member __.Zero () = QuerySource Seq.empty member __.Yield x = QuerySource (Seq.singleton x) member __.YieldFrom (x: QuerySource<'T,'Q>) : QuerySource<'T,'Q> = x member __.Quote (q:Quotations.Expr<'T>) = q member __.Source (source: IQueryable<'T>) = QuerySource source member __.Source (source: IEnumerable<'T>) : QuerySource<'T,System.Collections.IEnumerable> = QuerySource source member __.Contains(source:QuerySource<'T,'Q>,key) = System.Linq.Enumerable.Contains(source.Source, key) member __.Select(source:QuerySource<'T,'Q>,selector) : QuerySource<'U,'Q>= QuerySource (Seq.map selector source.Source) member __.Where(source:QuerySource<'T,'Q>,selector) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.Where (source.Source, Func<_,_>(selector)) ) member __.Last (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.Last source.Source member __.LastOrDefault (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.LastOrDefault source.Source member __.ExactlyOne (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.Single source.Source member __.ExactlyOneOrDefault (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.SingleOrDefault source.Source member __.Count (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.Count source.Source member __.Distinct (source : QuerySource<'T,'Q> when 'T : equality) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.Distinct source.Source) member __.Exists(source: QuerySource<'T,'Q>,f) = System.Linq.Enumerable.Any (source.Source, Func<_,_>(f)) member __.All (source: QuerySource<'T,'Q>,f) = System.Linq.Enumerable.All (source.Source, Func<_,_>(f)) member __.Head (source: QuerySource<'T,'Q>) = System.Linq.Enumerable.First source.Source member __.Nth (source: QuerySource<'T,'Q>, n) = System.Linq.Enumerable.ElementAt (source.Source, n) //let reduceBy projection reduction source = source |> Seq.map projection |> Seq.reduce reduction member __.Skip (source: QuerySource<'T,'Q>,n) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.Skip (source.Source, n)) member __.SkipWhile (source: QuerySource<'T,'Q>,f) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.SkipWhile (source.Source, Func<_,_>(f))) member __.Take (source: QuerySource<'T,'Q>,n) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.Take (source.Source, n)) member __.TakeWhile (source: QuerySource<'T,'Q>,f) : QuerySource<'T,'Q> = QuerySource (System.Linq.Enumerable.TakeWhile (source.Source, Func<_,_>(f))) member __.Find (source: QuerySource<'T,'Q>,f) = System.Linq.Enumerable.First (source.Source, Func<_,_>(f)) member __.HeadOrDefault (source:QuerySource<'T,'Q>) = System.Linq.Enumerable.FirstOrDefault source.Source member __.MinBy<'T,'Q,'Key when 'Key : equality and 'Key : comparison> (source:QuerySource<'T,'Q>, valSelector : 'T -> 'Key) = System.Linq.Enumerable.Min(source.Source, Func<'T,'Key>(valSelector)) member __.MaxBy<'T,'Q,'Key when 'Key : equality and 'Key : comparison> (source:QuerySource<'T,'Q>, valSelector : 'T -> 'Key) = System.Linq.Enumerable.Max(source.Source, Func<'T,'Key>(valSelector)) member __.MinByNullable<'T,'Q,'Key when 'Key : equality and 'Key : comparison and 'Key : (new : unit -> 'Key) and 'Key : struct and 'Key :> ValueType> (source:QuerySource<'T,'Q>, valSelector : 'T -> Nullable<'Key>) = System.Linq.Enumerable.Min(source.Source, Func<'T, Nullable<'Key>>(valSelector)) member __.MaxByNullable<'T,'Q,'Key when 'Key : equality and 'Key : comparison and 'Key : (new : unit -> 'Key) and 'Key : struct and 'Key :> ValueType> (source:QuerySource<'T,'Q>, valSelector : 'T -> Nullable<'Key>) = System.Linq.Enumerable.Max(source.Source, Func<'T, Nullable<'Key>>(valSelector)) member inline __.SumByNullable<'T, 'Q, ^Value when ^Value :> ValueType and ^Value : struct and ^Value : (new : unit -> ^Value) and ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : int> (source: QuerySource<'T,'Q>, f : 'T -> Nullable< ^Value >) : Nullable< ^Value > = let source = source.Source checkNonNull "source" source use e = source.GetEnumerator() let mutable acc : ^Value = LanguagePrimitives.GenericZero< (^Value) > while e.MoveNext() do let v : Nullable< ^Value > = f e.Current if v.HasValue then acc <- plus acc (v.Value : ^Value) Nullable acc member inline __.AverageByNullable< 'T, 'Q, ^Value when ^Value :> ValueType and ^Value : struct and ^Value : (new : unit -> ^Value) and ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member DivideByInt : ^Value * int -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : float > (source: QuerySource<'T,'Q>, selector: 'T -> Nullable< ^Value >) : Nullable< ^Value > = let source = source.Source checkNonNull "source" source use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^Value) > let mutable count = 0 while e.MoveNext() do let v = selector e.Current if v.HasValue then acc <- plus acc v.Value count <- count + 1 if count = 0 then Nullable() else Nullable(LanguagePrimitives.DivideByInt< (^Value) > acc count) member inline __.AverageBy< 'T, 'Q, ^Value when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member DivideByInt : ^Value * int -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : float > (source: QuerySource<'T,'Q>, selector: 'T -> ^Value) : ^Value = let source = source.Source checkNonNull "source" source use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^U) > let mutable count = 0 while e.MoveNext() do acc <- plus acc (selector e.Current) count <- count + 1 if count = 0 then invalidOp "source" (System.Linq.Enumerable.Average ([| |]: int[])) // raise the same error as LINQ LanguagePrimitives.DivideByInt< (^U) > acc count member inline __.SumBy< 'T, 'Q, ^Value when ^Value : (static member ( + ) : ^Value * ^Value -> ^Value) and ^Value : (static member Zero : ^Value) and default ^Value : int > (source:QuerySource<'T,'Q>, f : ('T -> ^Value)) : ^Value = Seq.sumBy f source.Source member __.GroupBy (source: QuerySource<'T,'Q>, keySelector : _ -> 'Key) : QuerySource<_,'Q> when 'Key : equality = QuerySource (System.Linq.Enumerable.GroupBy(source.Source, Func<_,_>(keySelector))) member __.SortBy (source: QuerySource<'T,'Q>, keySelector : 'T -> 'Key) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.OrderBy(source.Source, Func<_,_>(keySelector))) member __.SortByDescending (source: QuerySource<'T,'Q>, keySelector : 'T -> 'Key) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.OrderByDescending(source.Source, Func<_,_>(keySelector))) member __.ThenBy (source: QuerySource<'T,'Q>, keySelector : 'T -> 'Key) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.ThenBy(checkThenBySource source.Source, Func<_,_>(keySelector))) member __.ThenByDescending (source: QuerySource<'T,'Q>, keySelector : 'T -> 'Key) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.ThenByDescending(checkThenBySource source.Source, Func<_,_>(keySelector))) member __.SortByNullable (source: QuerySource<'T,'Q>, keySelector : 'T -> Nullable<'Key>) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.OrderBy(source.Source, Func<_,_>(keySelector))) member __.SortByNullableDescending (source: QuerySource<'T,'Q>, keySelector : 'T -> Nullable<'Key>) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.OrderByDescending(source.Source, Func<_,_>(keySelector))) member __.ThenByNullable (source: QuerySource<'T,'Q>, keySelector : 'T -> Nullable<'Key>) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.ThenBy(checkThenBySource source.Source, Func<_,_>(keySelector))) member __.ThenByNullableDescending (source: QuerySource<'T,'Q>, keySelector : 'T -> Nullable<'Key>) : QuerySource<'T,'Q> when 'Key : equality and 'Key : comparison = QuerySource (System.Linq.Enumerable.ThenByDescending(checkThenBySource source.Source, Func<_,_>(keySelector))) member __.GroupValBy<'T,'Key,'Result, 'Q when 'Key : equality > (source:QuerySource<'T,'Q>, resultSelector: 'T -> 'Result, keySelector: 'T -> 'Key) : QuerySource,'Q> = QuerySource (System.Linq.Enumerable.GroupBy(source.Source, Func<'T,'Key>(keySelector), Func<'T,'Result>(resultSelector))) #if SUPPORT_ZIP_IN_QUERIES member __.Zip (firstSource, secondSource, elementSelector) = System.Linq.Enumerable.Zip(firstSource, secondSource, Func<_,_,_>(elementSelector) ) #endif member __.Join (outerSource: QuerySource<_,'Q>, innerSource: QuerySource<_,'Q>, outerKeySelector, innerKeySelector, elementSelector) : QuerySource<_,'Q> = QuerySource (System.Linq.Enumerable.Join(outerSource.Source, innerSource.Source, Func<_,_>(outerKeySelector), Func<_,_>(innerKeySelector), Func<_,_,_>(elementSelector))) member __.GroupJoin (outerSource: QuerySource<_,'Q>, innerSource: QuerySource<_,'Q>, outerKeySelector, innerKeySelector, elementSelector: _ -> seq<_> -> _) : QuerySource<_,'Q> = QuerySource (System.Linq.Enumerable.GroupJoin(outerSource.Source, innerSource.Source, Func<_,_>(outerKeySelector), Func<_,_>(innerKeySelector), Func<_,_,_>(fun x g -> elementSelector x g))) member __.LeftOuterJoin (outerSource:QuerySource<_,'Q>, innerSource: QuerySource<_,'Q>, outerKeySelector, innerKeySelector, elementSelector: _ -> seq<_> -> _) : QuerySource<_,'Q> = QuerySource (System.Linq.Enumerable.GroupJoin(outerSource.Source, innerSource.Source, Func<_,_>(outerKeySelector), Func<_,_>(innerKeySelector), Func<_,_,_>(fun x g -> elementSelector x (g.DefaultIfEmpty())))) [] module Query = let ConvVar (v: Var) = Expression.Parameter(v.Type, v.Name) let asExpr x = (x :> Expression) let (|Getter|_|) (prop: PropertyInfo) = match prop.GetGetMethod(true) with | null -> None | v -> Some v // Match 'f x' let (|SpecificCall1|_|) q = let (|CallQ|_|) = (|SpecificCallToMethod|_|) q function | CallQ (Some builderObj, tyargs, [arg1]) -> Some(builderObj, tyargs, arg1) | _ -> None // Match 'f x y' or 'f (x,y)' let (|SpecificCall2|_|) q = let (|CallQ|_|) = (|SpecificCallToMethod|_|) q function | CallQ (Some builderObj, tyargs, [arg1;arg2]) -> Some(builderObj, tyargs, arg1, arg2) | _ -> None // Match 'f x y z' or 'f (x,y,z)' let (|SpecificCall3|_|) q = let (|CallQ|_|) = (|SpecificCallToMethod|_|) q function | CallQ (Some builderObj, tyargs, [arg1;arg2;arg3]) -> Some(builderObj, tyargs, arg1, arg2, arg3) | _ -> None /// (fun (x,y) -> z) is represented as 'fun p -> let x = p#0 let y = p#1' etc. /// This reverses this encoding, but does not de-tuple the input variable into multiple variables. let (|LambdaNoDetupling|_|) (lam: Expr) = /// Strip off the 'let' bindings for an LambdaNoDetupling let rec stripSuccessiveProjLets (p:Var) n expr = match expr with | Let(v1,(TupleGet(Var pA,m) as e1),rest) when p = pA && m = n-> let restvs,b = stripSuccessiveProjLets p (n+1) rest (v1,e1)::restvs, b | _ -> ([],expr) match lam with | Lambda(v,body) -> let projs,b = stripSuccessiveProjLets v 0 body Some(v, projs, b) | _ -> None let restoreTupleProjections projs b = List.foldBack (fun (v,e) acc -> Expr.Let (v,e,acc)) projs b let (|LambdasNoDetupling|_|) (inpExpr: Expr) = let rec loop rvs rprojs e = match e with | LambdaNoDetupling(v,projs,body) -> loop (v::rvs) (projs::rprojs) body | _ -> match rvs with | [] -> None | _ -> Some(List.rev rvs,restoreTupleProjections (List.concat (List.rev rprojs)) e) loop [] [] inpExpr let GetGenericMethodDefinition (methInfo:MethodInfo) = if methInfo.IsGenericMethod then methInfo.GetGenericMethodDefinition() else methInfo let CallGenericStaticMethod (methHandle:System.RuntimeMethodHandle) = let methInfo = methHandle |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo fun (tyargs: Type list, args: obj list) -> let methInfo = if methInfo.IsGenericMethod then methInfo.MakeGenericMethod(Array.ofList tyargs) else methInfo try methInfo.Invoke(null, Array.ofList args) with :? System.Reflection.TargetInvocationException as exn -> raise exn.InnerException let CallGenericInstanceMethod (methHandle:System.RuntimeMethodHandle) = let methInfo = methHandle |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo fun (objExpr:obj, tyargs: Type list, args: obj list) -> let methInfo = if methInfo.IsGenericMethod then methInfo.MakeGenericMethod(Array.ofList tyargs) else methInfo try methInfo.Invoke(objExpr, Array.ofList args) with :? System.Reflection.TargetInvocationException as exn -> raise exn.InnerException let BindGenericStaticMethod (methInfo:MethodInfo) tyargs = if methInfo.IsGenericMethod then methInfo.GetGenericMethodDefinition().MakeGenericMethod(Array.ofList tyargs) else methInfo let MakeGenericStaticMethod (methHandle:System.RuntimeMethodHandle) = let methInfo = methHandle |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo (fun (tyargs: Type list, args: Expr list) -> Expr.Call(BindGenericStaticMethod methInfo tyargs, args)) let MakeGenericInstanceMethod (methHandle:System.RuntimeMethodHandle) = let methInfo = methHandle |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo (fun (obj:Expr, tyargs: Type list, args: Expr list) -> Expr.Call(obj, BindGenericStaticMethod methInfo tyargs, args)) let ImplicitExpressionConversionHelperMethodInfo = methodhandleof (fun e -> LeafExpressionConverter.ImplicitExpressionConversionHelper e) |> System.Reflection.MethodInfo.GetMethodFromHandle :?> MethodInfo let MakeImplicitExpressionConversion (x:Expr) = Expr.Call(ImplicitExpressionConversionHelperMethodInfo.MakeGenericMethod [| x.Type |], [ x ]) let NT = typedefof> let FT1 = typedefof> let FT2 = typedefof> let boolTy = typeof let MakeNullableTy ty = NT.MakeGenericType [| ty |] let MakeQueryFuncTy (dty, rty) = FT1.MakeGenericType [| dty; rty |] let MakeQueryFunc2Ty (dty1, dty2, rty) = FT2.MakeGenericType [| dty1; dty2; rty |] let IEnumerableTypeDef = typedefof> let IQueryableTypeDef = typedefof> let QuerySourceTypeDef = typedefof> let MakeIEnumerableTy dty= IEnumerableTypeDef.MakeGenericType [| dty|] let MakeIQueryableTy dty= IQueryableTypeDef.MakeGenericType [| dty|] let IsQuerySourceTy (ty: System.Type) = ty.IsGenericType && ty.GetGenericTypeDefinition() = QuerySourceTypeDef let IsIQueryableTy (ty: System.Type) = ty.IsGenericType && ty.GetGenericTypeDefinition() = IQueryableTypeDef let IsIEnumerableTy (ty: System.Type) = ty.IsGenericType && ty.GetGenericTypeDefinition() = IEnumerableTypeDef // Check a tag type on QuerySource is IQueryable let qTyIsIQueryable (ty : System.Type) = not (ty.Equals(typeof)) let FuncExprToDelegateExpr (srcTy, targetTy, v, body) = Expr.NewDelegate(Linq.Expressions.Expression.GetFuncType [| srcTy; targetTy |], [v], body) /// Project F# function expressions to Linq LambdaExpression nodes let FuncExprToLinqFunc2Expression (srcTy, targetTy, v, body) = FuncExprToDelegateExpr(srcTy, targetTy, v, body) |> LeafExpressionConverter.QuotationToExpression let FuncExprToLinqFunc2 (srcTy, targetTy, v, body) = FuncExprToDelegateExpr(srcTy, targetTy, v, body) |> LeafExpressionConverter.EvaluateQuotation let MakersCallers F = CallGenericStaticMethod F, MakeGenericStaticMethod F let MakersCallersInstance F = CallGenericInstanceMethod F, MakeGenericInstanceMethod F let MakersCallers2 FQ FE = MakersCallers FQ, MakersCallers FE let MakeOrCallContainsOrElementAt FQ FE = let (CQ, MQ), (CE, ME) = MakersCallers2 FQ FE let Make (isIQ, srcItemTy:Type, src:Expr, key:Expr) = if isIQ then //let key = MakeImplicitExpressionConversion key MQ ([srcItemTy], [src; key]) else ME ([srcItemTy], [src; key]) let Call (isIQ, srcItemTy, src:obj, key:Expr) = let key = key |> LeafExpressionConverter.EvaluateQuotation let C = if isIQ then CQ else CE C ([srcItemTy], [src;box key]) Make, Call let MakeContains, CallContains = let FQ = methodhandleof (fun (x,y) -> System.Linq.Queryable.Contains(x,y)) let FE = methodhandleof (fun (x,y) -> System.Linq.Enumerable.Contains(x, y)) MakeOrCallContainsOrElementAt FQ FE let MakeElementAt, CallElementAt = let FQ = methodhandleof (fun (x,y) -> System.Linq.Queryable.ElementAt(x,y)) let FE = methodhandleof (fun (x,y) -> System.Linq.Enumerable.ElementAt(x,y)) MakeOrCallContainsOrElementAt FQ FE let MakeOrCallMinByOrMaxBy FQ FE = let (CQ, MQ), (CE, ME) = MakersCallers2 FQ FE let Make (isIQ, src:Expr, v:Var, valSelector:Expr) = let srcItemTy = v.Type let keyElemTy = valSelector.Type let valSelector = FuncExprToDelegateExpr (srcItemTy, keyElemTy, v, valSelector) if isIQ then let valSelector = MakeImplicitExpressionConversion valSelector MQ ([srcItemTy;keyElemTy], [src;valSelector]) else ME ([srcItemTy;keyElemTy], [src;valSelector]) let Call (isIQ, srcItemTy:Type,_keyItemTy:Type, src:obj, keyElemTy:Type, v:Var, res:Expr) = if isIQ then let selector = FuncExprToLinqFunc2Expression (srcItemTy, keyElemTy, v, res) CQ ([srcItemTy;keyElemTy], [src;box selector]) else let selector = FuncExprToLinqFunc2 (srcItemTy, keyElemTy, v, res) CE ([srcItemTy;keyElemTy], [src;selector]) Make, Call let (MakeMinBy: bool * Expr * Var * Expr -> Expr), (CallMinBy : bool * Type * Type * obj * Type * Var * Expr -> obj) = let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Min(x,y)) let FE = methodhandleof (fun (x,y:Func<_,'Result>) -> System.Linq.Enumerable.Min(x,y)) MakeOrCallMinByOrMaxBy FQ FE let MakeMaxBy, CallMaxBy = let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Max(x, y)) let FE = methodhandleof (fun (x,y: Func<_,'Result>) -> System.Linq.Enumerable.Max(x, y)) MakeOrCallMinByOrMaxBy FQ FE let MakeMinByNullable, CallMinByNullable = // Note there is no sepaate LINQ overload for Min on nullables - the one implementation just magically skips nullable elements let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Min(x, y)) let FE = methodhandleof (fun (x,y:Func<_,'Result>) -> System.Linq.Enumerable.Min(x, y)) MakeOrCallMinByOrMaxBy FQ FE let MakeMaxByNullable, CallMaxByNullable = // Note there is no separate LINQ overload for Max on nullables - the one implementation just magically skips nullable elements let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Max(x,y)) let FE = methodhandleof (fun (x,y:Func<_,'Result>) -> System.Linq.Enumerable.Max(x,y)) MakeOrCallMinByOrMaxBy FQ FE let MakeOrCallAnyOrAllOrFirstFind FQ FE = let (CQ, MQ), (CE, ME) = MakersCallers2 FQ FE let Make (isIQ, src:Expr, v:Var, predicate:Expr) = let srcItemTy= v.Type let predicate = FuncExprToDelegateExpr (srcItemTy, boolTy, v, predicate) if isIQ then let predicate = MakeImplicitExpressionConversion predicate MQ ([srcItemTy], [src; predicate]) else ME ([srcItemTy], [src; predicate]) let Call (isIQ, srcItemTy:Type, src:obj, v:Var, res:Expr) = if isIQ then let selector = FuncExprToLinqFunc2Expression (srcItemTy, boolTy, v, res) CQ ([srcItemTy], [src;box selector]) else let selector = FuncExprToLinqFunc2 (srcItemTy, boolTy, v, res) CE ([srcItemTy], [src;selector]) Make, Call let MakeAny, CallAny = let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Any(x,y)) let FE = methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.Any(x,y)) MakeOrCallAnyOrAllOrFirstFind FQ FE let MakeAll, CallAll = let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.All(x,y)) let FE = methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.All(x,y)) MakeOrCallAnyOrAllOrFirstFind FQ FE let MakeFirstFind, CallFirstFind = let FQ = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.First(x,y)) let FE = methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.First(x,y)) MakeOrCallAnyOrAllOrFirstFind FQ FE let MakeOrCallAverageByOrSumByGeneric (isNullable,fq_double, fq_single, fq_decimal, fq_int32, fq_int64, fe_double, fe_single, fe_decimal, fe_int32, fe_int64, FE) = let (cq_double, mq_double), (ce_double, me_double) = MakersCallers2 fq_double fe_double let (cq_single, mq_single), (ce_single, me_single) = MakersCallers2 fq_single fe_single let (cq_decimal, mq_decimal), (ce_decimal, me_decimal) = MakersCallers2 fq_decimal fe_decimal let (cq_int32, mq_int32), (ce_int32, me_int32) = MakersCallers2 fq_int32 fe_int32 let (cq_int64, mq_int64), (ce_int64, me_int64) = MakersCallers2 fq_int64 fe_int64 // The F# implementation is an instance method on QueryBuilder let (CE, ME) = MakersCallersInstance FE let failDueToUnsupportedInputTypeInSumByOrAverageBy() = invalidOp (SR.GetString(SR.failDueToUnsupportedInputTypeInSumByOrAverageBy)) let Make (qb:Expr,isIQ, src:Expr, v:Var, res:Expr) = let srcItemTy = v.Type let resTy = res.Type let resTyNoNullable = if isNullable then assert resTy.IsGenericType; assert (resTy.GetGenericTypeDefinition() = typedefof>); resTy.GetGenericArguments().[0] else resTy let selector = FuncExprToDelegateExpr (srcItemTy, resTy, v, res) if isIQ then let selector = MakeImplicitExpressionConversion selector let maker = match resTyNoNullable with | ty when ty = typeof -> mq_double | ty when ty = typeof -> mq_single | ty when ty = typeof -> mq_decimal | ty when ty = typeof -> mq_int32 | ty when ty = typeof -> mq_int64 | _ -> failDueToUnsupportedInputTypeInSumByOrAverageBy() maker ([srcItemTy], [src;selector]) else // Try to dynamically invoke a LINQ method if one exists, since these may be optimized over arrays etc. match resTyNoNullable with | ty when ty = typeof -> me_double ([srcItemTy], [src;selector]) | ty when ty = typeof -> me_single ([srcItemTy], [src;selector]) | ty when ty = typeof -> me_decimal ([srcItemTy], [src;selector]) | ty when ty = typeof -> me_int32 ([srcItemTy], [src;selector]) | ty when ty = typeof -> me_int64 ([srcItemTy], [src;selector]) | _ -> // The F# implementation needs a QuerySource as a parameter. let qTy = typeof let ctor = typedefof>.MakeGenericType([|srcItemTy;qTy|]).GetConstructors().[0] let src = Expr.NewObject(ctor, [src]) // The F# implementation needs an FSharpFunc as a parameter. let selector = Expr.Lambda(v, res) ME (qb, [srcItemTy;qTy;resTyNoNullable], [src;selector]) let Call (qb:obj,isIQ, srcItemTy:Type, resTyNoNullable:Type, src:obj, resTy:Type, v:Var, res:Expr) = if isIQ then let selector = FuncExprToLinqFunc2Expression (srcItemTy, resTy, v, res) let caller = match resTyNoNullable with | ty when ty = typeof -> cq_double | ty when ty = typeof -> cq_single | ty when ty = typeof -> cq_decimal | ty when ty = typeof -> cq_int32 | ty when ty = typeof -> cq_int64 | _ -> failDueToUnsupportedInputTypeInSumByOrAverageBy() caller ([srcItemTy], [src;box selector]) : obj else // Try to dynamically invoke a LINQ method if one exists, since these may be optimized over arrays etc. let linqMethOpt = match resTyNoNullable with | ty when ty = typeof -> Some ce_double | ty when ty = typeof -> Some ce_single | ty when ty = typeof -> Some ce_decimal | ty when ty = typeof -> Some ce_int32 | ty when ty = typeof -> Some ce_int64 | _ -> None match linqMethOpt with | Some ce -> // A LINQ method needs a Delegate as a parameter let selector = FuncExprToLinqFunc2 (srcItemTy, resTy, v, res) ce ([srcItemTy], [src;selector]) | None -> // The F# implementation needs a QuerySource as a parameter. let qTy = typeof let ctor = typedefof>.MakeGenericType([|srcItemTy;qTy|]).GetConstructors().[0] let srcE = try ctor.Invoke [|src|] with :? System.Reflection.TargetInvocationException as exn -> raise exn.InnerException // The F# implementation needs an FSharpFunc as a parameter. let selectorE = Expr.Lambda (v, res) |> LeafExpressionConverter.EvaluateQuotation CE (qb, [srcItemTy;qTy;resTy], [srcE;selectorE]) Make, Call let MakeAverageBy, CallAverageBy = let FQ_double = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Average(x,y)) let FQ_single = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Average(x,y)) let FQ_decimal = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Average(x,y)) let FQ_int32 = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Average(x,y)) let FQ_int64 = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Average(x,y)) let FE_double = methodhandleof (fun (x,y:Func<_,double>) -> System.Linq.Enumerable.Average(x,y)) let FE_single = methodhandleof (fun (x,y:Func<_,single>) -> System.Linq.Enumerable.Average(x,y)) let FE_decimal = methodhandleof (fun (x,y:Func<_,decimal>) -> System.Linq.Enumerable.Average(x,y)) let FE_int32 = methodhandleof (fun (x,y:Func<_,int32>) -> System.Linq.Enumerable.Average(x,y)) let FE_int64 = methodhandleof (fun (x,y:Func<_,int64>) -> System.Linq.Enumerable.Average(x,y)) let FE = methodhandleof (fun (query:QueryBuilder,arg1:QuerySource<_,_>,arg2:_->double) -> query.AverageBy(arg1,arg2)) MakeOrCallAverageByOrSumByGeneric (false,FQ_double, FQ_single, FQ_decimal, FQ_int32, FQ_int64, FE_double, FE_single, FE_decimal, FE_int32, FE_int64, FE) let MakeAverageByNullable, CallAverageByNullable = let FQ_double = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Average(x,y)) let FQ_single = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Average(x,y)) let FQ_decimal = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Average(x,y)) let FQ_int32 = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Average(x,y)) let FQ_int64 = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Average(x,y)) let FE_double = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Average(x,y)) let FE_single = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Average(x,y)) let FE_decimal = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Average(x,y)) let FE_int32 = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Average(x,y)) let FE_int64 = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Average(x,y)) let FE = methodhandleof (fun (query:QueryBuilder, arg1:QuerySource<_,_>, arg2:_->Nullable) -> query.AverageByNullable(arg1,arg2)) MakeOrCallAverageByOrSumByGeneric (true,FQ_double, FQ_single, FQ_decimal, FQ_int32, FQ_int64, FE_double, FE_single, FE_decimal, FE_int32, FE_int64, FE) let MakeSumBy, CallSumBy = let FQ_double = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Sum(x,y)) let FQ_single = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Sum(x,y)) let FQ_decimal = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Sum(x,y)) let FQ_int32 = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Sum(x,y)) let FQ_int64 = methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Sum(x,y)) let FE_double = methodhandleof (fun (x,y:Func<_,double>) -> System.Linq.Enumerable.Sum(x,y)) let FE_single = methodhandleof (fun (x,y:Func<_,single>) -> System.Linq.Enumerable.Sum(x,y)) let FE_decimal = methodhandleof (fun (x,y:Func<_,decimal>) -> System.Linq.Enumerable.Sum(x,y)) let FE_int32 = methodhandleof (fun (x,y:Func<_,int32>) -> System.Linq.Enumerable.Sum(x,y)) let FE_int64 = methodhandleof (fun (x,y:Func<_,int64>) -> System.Linq.Enumerable.Sum(x,y)) let FE = methodhandleof (fun (query:QueryBuilder, arg1:QuerySource<_,_>, arg2:_->double) -> query.SumBy(arg1,arg2)) MakeOrCallAverageByOrSumByGeneric (false,FQ_double, FQ_single, FQ_decimal, FQ_int32, FQ_int64, FE_double, FE_single, FE_decimal, FE_int32, FE_int64, FE) let MakeSumByNullable, CallSumByNullable = let FQ_double = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Sum(x,y)) let FQ_single = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Sum(x,y)) let FQ_decimal = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Sum(x,y)) let FQ_int32 = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Sum(x,y)) let FQ_int64 = methodhandleof (fun (x,y:Expression>>) -> System.Linq.Queryable.Sum(x,y)) let FE_double = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Sum(x,y)) let FE_single = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Sum(x,y)) let FE_decimal = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Sum(x,y)) let FE_int32 = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Sum(x,y)) let FE_int64 = methodhandleof (fun (x,y:Func<_,Nullable>) -> System.Linq.Enumerable.Sum(x,y)) let FE = methodhandleof (fun (query:QueryBuilder, arg1:QuerySource<_,_>, arg2:_->Nullable) -> query.SumByNullable(arg1,arg2)) MakeOrCallAverageByOrSumByGeneric (true,FQ_double, FQ_single, FQ_decimal, FQ_int32, FQ_int64, FE_double, FE_single, FE_decimal, FE_int32, FE_int64, FE) let MakeOrCallSimpleOp FQ FE = let (CQ, MQ), (CE, ME) = MakersCallers2 FQ FE let Make (isIQ, srcItemTy, src:Expr) = if isIQ then MQ ([srcItemTy], [src]) else ME ([srcItemTy], [src]) let Call (isIQ, srcItemTy, src) = (if isIQ then CQ else CE) ([srcItemTy], [src]) Make, Call let MakeFirst, CallFirst = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.First x)) (methodhandleof (fun x -> System.Linq.Enumerable.First x)) let MakeFirstOrDefault, CallFirstOrDefault = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.FirstOrDefault x)) (methodhandleof (fun x -> System.Linq.Enumerable.FirstOrDefault x)) let MakeLast, CallLast = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.Last x)) (methodhandleof (fun x -> System.Linq.Enumerable.Last x)) let MakeLastOrDefault, CallLastOrDefault = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.LastOrDefault x)) (methodhandleof (fun x -> System.Linq.Enumerable.LastOrDefault x)) let MakeSingle, CallSingle = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.Single x)) (methodhandleof (fun x -> System.Linq.Enumerable.Single x)) let MakeSingleOrDefault, CallSingleOrDefault = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.SingleOrDefault x)) (methodhandleof (fun x -> System.Linq.Enumerable.SingleOrDefault x)) let MakeCount, CallCount = MakeOrCallSimpleOp (methodhandleof (fun x -> System.Linq.Queryable.Count x)) (methodhandleof (fun x -> System.Linq.Enumerable.Count x)) let MakeDefaultIfEmpty = MakeGenericStaticMethod (methodhandleof (fun x -> System.Linq.Enumerable.DefaultIfEmpty(x))) /// Indicates if we can eliminate redundant 'Select(x=>x)' nodes type CanEliminate = /// Inside a query construct, can eliminate redundant 'Select' | Yes = 0 /// At the very outer of a query or nested query - can't eliminate redundant 'Select' | No = 1 let MakeSelect = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Select(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.Select(x,y))) fun (canElim,isIQ, src:Expr, v:Var, f:Expr) -> // Eliminate degenerate 'Select(x => x)', except for the very outer-most cases match f with | Patterns.Var(v2) when v = v2 && canElim = CanEliminate.Yes -> src | _ -> let srcItemTy = v.Type let targetTy = f.Type let selector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, targetTy), [v], f) if isIQ then let selector = MakeImplicitExpressionConversion selector FQ ([srcItemTy;targetTy], [src;selector]) else //printfn "found FE" FE ([srcItemTy;targetTy], [src;selector]) let MakeAppend = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y) -> System.Linq.Queryable.Concat(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y) -> System.Linq.Enumerable.Concat(x,y))) fun (isIQ, srcItemTy, src1:Expr, src2:Expr) -> if isIQ then FQ ([srcItemTy], [src1;src2]) else FE ([srcItemTy], [src1;src2]) let MakeAsQueryable = let F = MakeGenericStaticMethod (methodhandleof (fun (x:seq<_>) -> System.Linq.Queryable.AsQueryable x)) fun (ty, src) -> F ([ty], [src]) let MakeEnumerableEmpty = let F = MakeGenericStaticMethod (methodhandleof (fun _x -> System.Linq.Enumerable.Empty())) fun (ty) -> F ([ty], []) let MakeEmpty = fun (ty) -> MakeAsQueryable (ty, MakeEnumerableEmpty ty) let MakeSelectMany = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x:IQueryable<_>,y:Expression>,z:Expression>) -> System.Linq.Queryable.SelectMany(x,y,z))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x:IEnumerable<_>,y:Func<_,_>,z:Func<_,_,_>) -> System.Linq.Enumerable.SelectMany(x,y,z))) fun (isIQ, resTy:Type, src:Expr, srcItemVar:Var, interimSelectorBody:Expr, interimVar:Var, targetSelectorBody:Expr) -> let srcItemTy = srcItemVar.Type let interimTy = interimVar.Type let interimSelector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, MakeIEnumerableTy interimTy), [srcItemVar], interimSelectorBody) let targetSelector = Expr.NewDelegate(MakeQueryFunc2Ty(srcItemTy, interimTy, resTy), [srcItemVar;interimVar], targetSelectorBody) if isIQ then let interimSelector = MakeImplicitExpressionConversion interimSelector let targetSelector = MakeImplicitExpressionConversion targetSelector FQ ([srcItemTy;interimTy;resTy], [src;interimSelector;targetSelector]) else FE ([srcItemTy;interimTy;resTy], [src;interimSelector;targetSelector]) let MakeWhere = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.Where(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.Where(x,y))) fun (isIQ, src:Expr, v:Var, f) -> let selector = Expr.NewDelegate(MakeQueryFuncTy(v.Type, typeof), [v], f) if isIQ then let selector = MakeImplicitExpressionConversion selector FQ ([v.Type], [src;selector]) else FE ([v.Type], [src;selector]) let MakeOrderByOrThenBy FQ FE = fun (isIQ, src:Expr, v:Var, keySelector:Expr) -> let srcItemTy = v.Type let keyItemTy = keySelector.Type let selector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, keyItemTy), [v], keySelector) if isIQ then let selector = MakeImplicitExpressionConversion selector FQ ([srcItemTy;keyItemTy], [src;selector]) else FE ([srcItemTy;keyItemTy], [src;selector]) let MakeOrderBy = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.OrderBy(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.OrderBy(x,y))) MakeOrderByOrThenBy FQ FE let MakeOrderByDescending = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.OrderByDescending(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.OrderByDescending(x,y))) MakeOrderByOrThenBy FQ FE let MakeThenBy = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.ThenBy(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.ThenBy(x,y))) MakeOrderByOrThenBy FQ FE let MakeThenByDescending = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.ThenByDescending(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.ThenByDescending(x,y))) MakeOrderByOrThenBy FQ FE // The keyItemTy differntiates these let MakeOrderByNullable = MakeOrderBy let MakeOrderByNullableDescending = MakeOrderByDescending let MakeThenByNullable = MakeThenBy let MakeThenByNullableDescending = MakeThenByDescending let GenMakeSkipWhileOrTakeWhile FQ FE = let FQ = MakeGenericStaticMethod FQ let FE = MakeGenericStaticMethod FE fun (isIQ, src:Expr, v:Var, predicate) -> let srcItemTy = v.Type let selector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, boolTy), [v], predicate) if isIQ then let selector = MakeImplicitExpressionConversion selector FQ ([srcItemTy], [src;selector]) else FE ([srcItemTy], [src;selector]) let MakeSkipOrTake FQ FE = let FQ = MakeGenericStaticMethod FQ let FE = MakeGenericStaticMethod FE fun (isIQ, srcItemTy, src:Expr, count) -> if isIQ then FQ ([srcItemTy], [src;count]) else FE ([srcItemTy], [src;count]) let MakeSkip = MakeSkipOrTake (methodhandleof (fun (x,y) -> System.Linq.Queryable.Skip (x,y))) (methodhandleof (fun (x,y) -> System.Linq.Enumerable.Skip (x,y))) let MakeTake = MakeSkipOrTake (methodhandleof (fun (x,y) -> System.Linq.Queryable.Take (x,y))) (methodhandleof (fun (x,y) -> System.Linq.Enumerable.Take (x,y))) let MakeSkipWhile = GenMakeSkipWhileOrTakeWhile (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.SkipWhile(x,y))) (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.SkipWhile(x,y))) let MakeTakeWhile = GenMakeSkipWhileOrTakeWhile (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.TakeWhile(x,y))) (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.TakeWhile(x,y))) let MakeDistinct = let FQ = MakeGenericStaticMethod (methodhandleof (fun x -> System.Linq.Queryable.Distinct x)) let FE = MakeGenericStaticMethod (methodhandleof (fun x -> System.Linq.Enumerable.Distinct x)) fun (isIQ, srcItemTy, src:Expr) -> if isIQ then FQ ([srcItemTy], [src]) else FE ([srcItemTy], [src]) let MakeGroupBy = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>) -> System.Linq.Queryable.GroupBy(x,y))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>) -> System.Linq.Enumerable.GroupBy(x,y))) fun (isIQ, src:Expr, v:Var, keySelector:Expr) -> let srcItemTy = v.Type let keyTy = keySelector.Type let keySelector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, keyTy), [v], keySelector) if isIQ then let keySelector = MakeImplicitExpressionConversion keySelector FQ ([srcItemTy;keyTy], [src;keySelector]) else FE ([srcItemTy;keyTy], [src;keySelector]) let MakeGroupValBy = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y:Expression>, z:Expression>) -> System.Linq.Queryable.GroupBy(x,y,z))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y:Func<_,_>, z:Func<_,_>) -> System.Linq.Enumerable.GroupBy(x,y,z))) fun (isIQ, srcItemTy, keyTy, elementTy, src:Expr, v1, keySelector, v2, elementSelector) -> let keySelector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, keyTy), [v1], keySelector) let elementSelector = Expr.NewDelegate(MakeQueryFuncTy(srcItemTy, elementTy), [v2], elementSelector) if isIQ then let keySelector = MakeImplicitExpressionConversion keySelector let elementSelector = MakeImplicitExpressionConversion elementSelector FQ ([srcItemTy;keyTy;elementTy], [src;keySelector;elementSelector]) else FE ([srcItemTy;keyTy;elementTy], [src;keySelector;elementSelector]) #if SUPPORT_ZIP_IN_QUERIES let MakeZip = let FQ = MakeGenericStaticMethod (methodhandleof (fun (x,y, z:Expression>) -> System.Linq.Queryable.Zip(x,y,z))) let FE = MakeGenericStaticMethod (methodhandleof (fun (x,y, z:Func<_,_,_>) -> System.Linq.Enumerable.Zip(x,y,z))) fun (firstSourceTy, secondSourceTy, resTy, firstSource:Expr, secondSource:Expr, firstElementVar, secondElementVar, elementSelector) -> let elementSelector = Expr.NewDelegate(MakeQueryFunc2Ty(firstSourceTy, secondSourceTy, resTy), [firstElementVar;secondElementVar], elementSelector) if typeof.IsAssignableFrom(firstSource.Type) && typeof.IsAssignableFrom(secondSource.Type) then let elementSelector = MakeImplicitExpressionConversion elementSelector FQ ([firstSourceTy;secondSourceTy;resTy], [firstSource;secondSource;elementSelector]) else FE ([firstSourceTy;secondSourceTy;resTy], [firstSource;secondSource;elementSelector]) #endif let MakeJoin = let FQ = MakeGenericStaticMethod (methodhandleof (fun (a1,a2,a3:Expression>,a4:Expression>,a5:Expression>) -> System.Linq.Queryable.Join(a1,a2,a3,a4,a5))) let FE = MakeGenericStaticMethod (methodhandleof (fun (a1,a2,a3:Func<_,_>,a4:Func<_,_>,a5:Func<_,_,_>) -> System.Linq.Enumerable.Join(a1,a2,a3,a4,a5))) fun (isIQ, outerSourceTy, innerSourceTy, keyTy, resTy, outerSource:Expr, innerSource:Expr, outerKeyVar, outerKeySelector, innerKeyVar, innerKeySelector, outerResultKeyVar, innerResultKeyVar, elementSelector) -> let outerKeySelector = Expr.NewDelegate(MakeQueryFuncTy(outerSourceTy, keyTy), [outerKeyVar], outerKeySelector) let innerKeySelector = Expr.NewDelegate(MakeQueryFuncTy(innerSourceTy, keyTy), [innerKeyVar], innerKeySelector) let elementSelector = Expr.NewDelegate(MakeQueryFunc2Ty(outerSourceTy, innerSourceTy, resTy), [outerResultKeyVar;innerResultKeyVar], elementSelector) if isIQ then let outerKeySelector = MakeImplicitExpressionConversion outerKeySelector let innerKeySelector = MakeImplicitExpressionConversion innerKeySelector let elementSelector = MakeImplicitExpressionConversion elementSelector FQ ([outerSourceTy;innerSourceTy;keyTy;resTy], [outerSource;innerSource;outerKeySelector;innerKeySelector;elementSelector]) else FE ([outerSourceTy;innerSourceTy;keyTy;resTy], [outerSource;innerSource;outerKeySelector;innerKeySelector;elementSelector]) let MakeGroupJoin = let FQ = MakeGenericStaticMethod (methodhandleof (fun (a1,a2,a3:Expression>,a4:Expression>,a5:Expression>) -> System.Linq.Queryable.GroupJoin(a1,a2,a3,a4,a5))) let FE = MakeGenericStaticMethod (methodhandleof (fun (a1,a2,a3:Func<_,_>,a4:Func<_,_>,a5:Func<_,_,_>) -> System.Linq.Enumerable.GroupJoin(a1,a2,a3,a4,a5))) fun (isIQ, outerSourceTy, innerSourceTy, keyTy, resTy, outerSource:Expr, innerSource:Expr, outerKeyVar, outerKeySelector, innerKeyVar, innerKeySelector, outerResultKeyVar, innerResultGroupVar, elementSelector) -> let outerKeySelector = Expr.NewDelegate(MakeQueryFuncTy(outerSourceTy, keyTy), [outerKeyVar], outerKeySelector) let innerKeySelector = Expr.NewDelegate(MakeQueryFuncTy(innerSourceTy, keyTy), [innerKeyVar], innerKeySelector) let elementSelector = Expr.NewDelegate(MakeQueryFunc2Ty(outerSourceTy, MakeIEnumerableTy(innerSourceTy), resTy), [outerResultKeyVar;innerResultGroupVar], elementSelector) if isIQ then let outerKeySelector = MakeImplicitExpressionConversion outerKeySelector let innerKeySelector = MakeImplicitExpressionConversion innerKeySelector let elementSelector = MakeImplicitExpressionConversion elementSelector FQ ([outerSourceTy;innerSourceTy;keyTy;resTy], [outerSource;innerSource;outerKeySelector;innerKeySelector;elementSelector]) else FE ([outerSourceTy;innerSourceTy;keyTy;resTy], [outerSource;innerSource;outerKeySelector;innerKeySelector;elementSelector]) let RewriteExpr f (q : Expr) = let rec walk (p : Expr) = match f walk p with | Some r -> r | None -> match p with | ExprShape.ShapeCombination(comb, args) -> ExprShape.RebuildShapeCombination(comb, List.map walk args) | ExprShape.ShapeLambda(v, body) -> Expr.Lambda(v, walk body) | ExprShape.ShapeVar _ -> p walk q let (|LetExprReduction|_|) (p : Expr) = match p with | Let(v, e, body) -> let body = body.Substitute (fun v2 -> if v = v2 then Some e else None) Some body | _ -> None let (|MacroReduction|_|) (p : Expr) = match p with | Applications(Lambdas(vs, body), args) when vs.Length = args.Length && List.forall2 (fun vs args -> List.length vs = List.length args) vs args -> let tab = Map.ofSeq (List.concat (List.map2 List.zip vs args)) let body = body.Substitute tab.TryFind Some body // Macro | PropertyGet(None, Getter(MethodWithReflectedDefinition(body)), []) -> Some body // Macro | Call(None, MethodWithReflectedDefinition(Lambdas(vs, body)), args) -> let tab = Map.ofSeq (List.concat (List.map2 (fun (vs:Var list) arg -> match vs, arg with [v], arg -> [(v, arg)] | vs, NewTuple(args) -> List.zip vs args | _ -> List.zip vs [arg]) vs args)) let body = body.Substitute tab.TryFind Some body // Macro - eliminate 'let'. // // Always eliminate these: // - function definitions // // Always eliminate these, which are representations introduced by F# quotations: // - let v1 = v2 // - let v1 = tupledArg.Item* // - let copyOfStruct = ... | Let(v, e, body) when (match e with | Lambda _ -> true | Var _ -> true | TupleGet(Var tv, _) when tv.Name = "tupledArg" -> true | _ when v.Name = "copyOfStruct" && v.Type.IsValueType -> true | _ -> false) -> let body = body.Substitute (fun v2 -> if v = v2 then Some e else None) Some body | _ -> None /// Expand 'let' and other 'macro' definitions in leaf expressions, because LINQ can't cope with them let MacroExpand q = q |> RewriteExpr (fun walk p -> match p with // Macro reduction - eliminate any 'let' in leaf expressions | MacroReduction reduced -> Some (walk reduced) | _ -> None) let (|CallQueryBuilderRunQueryable|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (typeof.GetMethod("Run").MethodHandle) let (|CallQueryBuilderRunValue|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (typeof.Assembly.GetType("Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority").GetMethod("RunQueryAsValue").MethodHandle) let (|CallQueryBuilderRunEnumerable|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (typeof.Assembly.GetType("Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority").GetMethod("RunQueryAsEnumerable").MethodHandle) let (|CallQueryBuilderFor|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (methodhandleof (fun (b:QueryBuilder,source:QuerySource,body) -> b.For(source,body))) let (|CallQueryBuilderYield|_|) : Quotations.Expr -> _ = (|SpecificCall1|_|) (methodhandleof (fun (b:QueryBuilder,value) -> b.Yield value)) let (|CallQueryBuilderYieldFrom|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (methodhandleof (fun (b:QueryBuilder,values) -> b.YieldFrom values)) let (|CallQueryBuilderZero|_|) : Quotations.Expr -> _ = (|SpecificCallToMethod|_|) (methodhandleof (fun (b:QueryBuilder) -> b.Zero())) let (|CallQueryBuilderSourceIQueryable|_|) : Quotations.Expr -> _ = (|SpecificCall1|_|) (methodhandleof (fun (b:QueryBuilder,value:IQueryable<_>) -> b.Source value)) let (|CallQueryBuilderSourceIEnumerable|_|) : Quotations.Expr -> _ = (|SpecificCall1|_|) (methodhandleof (fun (b:QueryBuilder,value:IEnumerable<_>) -> b.Source value)) let (|CallSortBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.SortBy(arg1,arg2))) let (|CallSortByDescending|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.SortByDescending(arg1,arg2))) let (|CallThenBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.ThenBy(arg1,arg2) )) let (|CallThenByDescending|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.ThenByDescending(arg1,arg2))) let (|CallSortByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.SortByNullable(arg1,arg2))) let (|CallSortByNullableDescending|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.SortByNullableDescending(arg1,arg2))) let (|CallThenByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.ThenByNullable(arg1,arg2))) let (|CallThenByNullableDescending|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.ThenByNullableDescending(arg1,arg2))) let (|CallGroupBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.GroupBy(arg1,arg2))) let (|CallGroupValBy|_|) = (|SpecificCall3|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2,arg3) -> query.GroupValBy(arg1,arg2,arg3))) let (|CallMinBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.MinBy(arg1,arg2))) let (|CallMaxBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.MaxBy(arg1,arg2))) let (|CallMinByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.MinByNullable(arg1,arg2))) let (|CallMaxByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.MaxByNullable(arg1,arg2))) let (|CallWhere|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Where(arg1,arg2))) let (|CallHeadOrDefault|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.HeadOrDefault arg1)) let (|CallLast|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.Last arg1)) let (|CallLastOrDefault|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.LastOrDefault arg1)) let (|CallExactlyOne|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.ExactlyOne arg1)) let (|CallExactlyOneOrDefault|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,source) -> query.ExactlyOneOrDefault source)) let (|CallSelect|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Select(arg1,arg2))) let (|CallExists|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Exists(arg1,arg2))) let (|CallForAll|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.All(arg1,arg2))) let (|CallDistinct|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,keySelector) -> query.Distinct(keySelector))) let (|CallTake|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Take(arg1,arg2))) let (|CallTakeWhile|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.TakeWhile(arg1,arg2))) let (|CallContains|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Contains(arg1,arg2))) let (|CallNth|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Nth(arg1,arg2))) let (|CallSkip|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Skip(arg1,arg2))) let (|CallSkipWhile|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.SkipWhile(arg1,arg2))) #if SUPPORT_ZIP_IN_QUERIES let (|CallZip|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2,arg3) -> query.Zip(arg1,arg2,arg3))) #endif let (|CallJoin|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2,arg3,arg4,arg5) -> query.Join(arg1,arg2,arg3,arg4,arg5))) let (|CallGroupJoin|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2,arg3,arg4,arg5) -> query.GroupJoin(arg1,arg2,arg3,arg4,arg5))) let (|CallLeftOuterJoin|_|) = (|SpecificCallToMethod|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2,arg3,arg4,arg5) -> query.LeftOuterJoin(arg1,arg2,arg3,arg4,arg5))) let (|CallAverageBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1:QuerySource,arg2:(double->double)) -> query.AverageBy(arg1,arg2))) let (|CallSumBy|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1:QuerySource,arg2:(double->double)) -> query.SumBy(arg1,arg2))) let (|CallAverageByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1:QuerySource,arg2:(double->Nullable)) -> query.AverageByNullable(arg1,arg2))) let (|CallSumByNullable|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1:QuerySource,arg2:(double->Nullable)) -> query.SumByNullable(arg1,arg2))) let (|CallCount|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.Count(arg1))) let (|CallHead|_|) = (|SpecificCall1|_|) (methodhandleof (fun (query:QueryBuilder,arg1) -> query.Head(arg1))) let (|CallFind|_|) = (|SpecificCall2|_|) (methodhandleof (fun (query:QueryBuilder,arg1,arg2) -> query.Find(arg1,arg2))) let (|ZeroOnElseBranch|_|) = function // This is the shape for 'match e with ... -> ... | _ -> ()' | Patterns.Sequential(Patterns.Value(null, _), CallQueryBuilderZero _) // This is the shape for from 'if/then' | CallQueryBuilderZero _ -> Some() | _ -> None /// Given an expression involving mutable tuples logically corresponding to a "yield" or "select" with the given /// immutable-to-mutable conversion information, convert it back to an expression involving immutable tuples or records. let rec ConvMutableToImmutable conv mutExpr = match conv with | TupleConv convs -> Expr.NewTuple (convs |> List.mapi (fun i conv -> ConvMutableToImmutable conv (AnonymousObjectGet (mutExpr, i)))) | RecordConv (typ, convs) -> Expr.NewRecord(typ, convs |> List.mapi (fun i conv -> ConvMutableToImmutable conv (AnonymousObjectGet (mutExpr, i)))) | SeqConv conv -> // At this point, we know the input is either an IQueryable or an IEnumerable. // If it is an IQueryable, we must return an IQueryable. let isIQ = IsIQueryableTy mutExpr.Type assert (IsIEnumerableTy mutExpr.Type || IsIQueryableTy mutExpr.Type) let mutElemTy = mutExpr.Type.GetGenericArguments().[0] let mutExpr = if isIQ then Expr.Coerce(mutExpr,MakeIEnumerableTy mutElemTy) else mutExpr // Generate "source.Select(fun v -> ...)" (remembering that Select is an extension member, i.e. static) let mutVar = new Var("v", mutElemTy) let mutToImmutConvExpr = ConvMutableToImmutable conv (Expr.Var mutVar) let immutExpr = MakeSelect (CanEliminate.Yes,false,mutExpr,mutVar,mutToImmutConvExpr) let immutElemTy = mutToImmutConvExpr.Type let immutExprCoerced = if isIQ then MakeAsQueryable(immutElemTy,immutExpr) else immutExpr immutExprCoerced | GroupingConv (immutKeyTy, immutElemTy, conv) -> assert (mutExpr.Type.GetGenericTypeDefinition() = typedefof>) let mutElemTy = mutExpr.Type.GetGenericArguments().[1] let immutIGroupingTy = typedefof>.MakeGenericType [| immutKeyTy; immutElemTy |] let immutGroupingTy = typedefof>.MakeGenericType [| immutKeyTy; immutElemTy |] // Generate "source.Select(fun v -> ...)" (remembering that Select is an extension member, i.e. static) let var = new Var("v", mutElemTy) let convExpr = ConvMutableToImmutable conv (Expr.Var var) // Construct an IGrouping let args = [ Expr.PropertyGet(mutExpr, mutExpr.Type.GetProperty "Key") MakeSelect(CanEliminate.Yes, false, mutExpr, var, convExpr) ] Expr.Coerce(Expr.NewObject(immutGroupingTy.GetConstructors().[0], args), immutIGroupingTy) | NoConv -> mutExpr /// Given the expressions for a function (fun immutConsumingVar -> immutConsumingExpr) operating over immutable tuple and record /// types, build the expressions for an equivalent function (fun mutConsumingVar -> mutConsumingExpr) which will operate over mutable data, where the given conversion /// data says how immutable types have been replaced by mutable types in the type of the input variable. /// /// For example, if 'conv' is NoConv, then the input function will be returned unchanged. /// /// If 'conv' is a TupleConv, then the input function will accept immutable tuples, and the output /// function will accept mutable tuples. In this case, the function is implemented by replacing /// uses of the immutConsumingVar in the body of immutConsumingExpr with a tuple expression built /// from the elements of mutConsumingVar, and then simplifying the overall result. let ConvertImmutableConsumerToMutableConsumer conv (immutConsumingVar:Var, immutConsumingExpr:Expr) : Var * Expr = match conv with | NoConv -> (immutConsumingVar, immutConsumingExpr) | _ -> let mutConsumingVarType = ConvImmutableTypeToMutableType conv immutConsumingVar.Type let mutConsumingVar = Var (immutConsumingVar.Name, mutConsumingVarType) let immutConsumingVarReplacementExpr = ConvMutableToImmutable conv (Expr.Var mutConsumingVar) let mutConsumingExprBeforeSimplification = immutConsumingExpr.Substitute (fun v -> if v = immutConsumingVar then Some immutConsumingVarReplacementExpr else None) let mutConsumingExpr = SimplifyConsumingExpr mutConsumingExprBeforeSimplification mutConsumingVar, mutConsumingExpr let (|AnyNestedQuery|_|) e = match e with | CallQueryBuilderRunValue (None, _, [_; Quote e ]) | CallQueryBuilderRunEnumerable (None, _, [_; Quote e ]) | CallQueryBuilderRunQueryable (Some _, _, [ Quote e ]) -> Some e | _ -> None let (|EnumerableNestedQuery|_|) e = match e with | CallQueryBuilderRunEnumerable (None, _, [_; Quote e ]) | CallQueryBuilderRunQueryable (Some _, _, [ Quote e ]) -> Some e | _ -> None /// Represents the result of TransInner - either a normal expression, or something we're about to turn into /// a 'Select'. The 'Select' case can be eliminated if it is about to be the result of a SelectMany by /// changing /// src.SelectMany(x => ix.Select(y => res)) /// to /// src.SelectMany(x => ix, (x,y) => res) [] type TransInnerResult = | Select of CanEliminate * bool * TransInnerResult * Var * Expr | Other of Expr | Source of Expr static member MakeSelect (canElim, isQTy, mutSource, mutSelectorVar, mutSelectorBody) = // We can eliminate a Select if it is either selecting on a non-source or is being added in a inner position. let canElim = match mutSource with | TransInnerResult.Source _ -> canElim | _ -> CanEliminate.Yes // We eliminate the Select here to keep the information in 'mutSource' available, i.e. whether // the mutSource is a TransInnerResult.Source after elimination match mutSelectorBody with | Patterns.Var(v2) when mutSelectorVar = v2 && canElim = CanEliminate.Yes -> mutSource | _ -> Select(canElim, isQTy, mutSource, mutSelectorVar, mutSelectorBody) /// Commit the result of TransInner in the case where the result was not immediately inside a 'SelectMany' let rec CommitTransInnerResult c = match c with | TransInnerResult.Source(res) -> res | TransInnerResult.Other(res) -> res | TransInnerResult.Select(canElim, isQTy, mutSource, mutSelectorVar, mutSelectorBody) -> MakeSelect(canElim,isQTy, CommitTransInnerResult mutSource, mutSelectorVar, mutSelectorBody) /// Given a the inner of query expression in terms of query.For, query.Select, query.Yield, query.Where etc., /// and including immutable tuples and immutable records, build an equivalent query expression /// in terms of LINQ operators, operating over mutable tuples. Return the conversion /// information for the immutable-to-mutable conversion performed so we can undo it where needed. /// /// Here 'inner' refers the the part of the query that produces a sequence of results. /// /// The output query will use either Queryable.* or Enumerable.* operators depending on whether /// the inputs to the queries have type IQueryable or IEnumerable. let rec TransInner canElim check (immutQuery:Expr) = //assert (IsIQueryableTy immutQuery.Type || IsQuerySourceTy immutQuery.Type || IsIEnumerableTy immutQuery.Type) // printfn "TransInner: %A" tm match immutQuery with // Look through coercions, e.g. to IEnumerable | Coerce (expr,_ty) -> TransInner canElim check expr // Rewrite "for" into SelectMany. If the body of a "For" is nothing but Yield/IfThenElse, // then it can be rewritten to Select + Where. // // If the original body of the "for" in the text of the F# query expression uses "where" or // any other custom operator, then the body of the "for" as presented to the quotation // rewrite has had the custom operator translation mechanism applied. In this case, the // body of the "for" will simply contain "yield". | CallQueryBuilderFor (_, [_;qTy;immutResElemTy;_], [immutSource; Lambda(immutSelectorVar, immutSelector) ]) -> let mutSource, sourceConv = TransInner CanEliminate.Yes check immutSource // If the body of a "For" is nothing but Yield/IfThenElse/Where, then it can be fully rewritten away. let rec TransFor mutSource immutSelector = match immutSelector with // query.For (source, (fun selectorVar -> yield res)) @> // ~~> TRANS(source.Select(selectorVar -> res) | CallQueryBuilderYield(_, _, immutSelectorBody) -> let mutSelectorVar, mutSelectorBody = ConvertImmutableConsumerToMutableConsumer sourceConv (immutSelectorVar, MacroExpand immutSelectorBody) let mutSelectorBody, selectorConv = ProduceMoreMutables TransInnerNoCheck mutSelectorBody let mutSelectorBody = CleanupLeaf mutSelectorBody TransInnerResult.MakeSelect (canElim, qTyIsIQueryable qTy, mutSource, mutSelectorVar, mutSelectorBody), selectorConv | LetExprReduction reduced -> TransFor mutSource reduced | MacroReduction reduced -> TransFor mutSource reduced // query.For (source, (fun selectorVar -> if g then selectorBody else query.Zero())) @> // ~~> TRANS(query.For (source.Where(fun selectorVar -> g), (fun selectorVar -> selectorBody)) | CallWhere (_, _, immutSelectorBody, Lambda(_, immutPredicateBody)) | IfThenElse(immutPredicateBody, immutSelectorBody, ZeroOnElseBranch) -> let mutSelectorVar, mutPredicateBody = ConvertImmutableConsumerToMutableConsumer sourceConv (immutSelectorVar, MacroExpand immutPredicateBody) let mutSource = MakeWhere(qTyIsIQueryable qTy, CommitTransInnerResult mutSource, mutSelectorVar, mutPredicateBody) TransFor (TransInnerResult.Other mutSource) immutSelectorBody // query.For (source, (fun selectorVar -> immutSelectorBody)) @> // ~~> source.SelectMany(fun selectorVar -> immutSelectorBody) | immutSelectorBody -> let mutSelectorVar, immutSelectorBody = ConvertImmutableConsumerToMutableConsumer sourceConv (immutSelectorVar, MacroExpand immutSelectorBody) let (mutSelectorBodyInfo:TransInnerResult), selectorConv = TransInner CanEliminate.Yes check immutSelectorBody let mutElemTy = ConvImmutableTypeToMutableType selectorConv immutResElemTy /// Commit the result of TransInner in the case where the result is immediately inside a 'SelectMany' let (mutInterimSelectorBodyPreCoerce:Expr), mutInterimVar, mutTargetSelector = match mutSelectorBodyInfo with | TransInnerResult.Select(_, _, mutInterimSelectorSource, mutInterimVar, mutTargetSelector) -> CommitTransInnerResult mutInterimSelectorSource, mutInterimVar, mutTargetSelector | _ -> let mutInterimSelectorBody = CommitTransInnerResult mutSelectorBodyInfo let mutInterimVar = Var("x", mutElemTy) let mutTargetSelector = Expr.Var(mutInterimVar) mutInterimSelectorBody, mutInterimVar, mutTargetSelector // IQueryable.SelectMany expects an IEnumerable return let mutInterimSelectorBody = let mutSelectorBodyTy = mutInterimSelectorBodyPreCoerce.Type if mutSelectorBodyTy.IsGenericType && mutSelectorBodyTy.GetGenericTypeDefinition() = typedefof> then mutInterimSelectorBodyPreCoerce else let mutSeqTy = MakeIEnumerableTy mutInterimVar.Type Expr.Coerce(mutInterimSelectorBodyPreCoerce, mutSeqTy) TransInnerResult.Other(MakeSelectMany(qTyIsIQueryable qTy, mutElemTy, CommitTransInnerResult mutSource, mutSelectorVar, mutInterimSelectorBody, mutInterimVar, mutTargetSelector)), selectorConv TransFor mutSource immutSelector // These occur in the F# quotation form of F# sequence expressions | CallWhere (_, [_;qTy], immutSource, Lambda(immutSelectorVar, immutPredicateBody)) -> let mutSource, sourceConv, mutSelectorVar, mutPredicateBody = TransInnerApplicativeAndCommit check immutSource (immutSelectorVar, immutPredicateBody) TransInnerResult.Other(MakeWhere(qTyIsIQueryable qTy, mutSource, mutSelectorVar, mutPredicateBody)), sourceConv | CallSelect (_, [_;qTy;_], mutSource, Lambda(immutSelectorVar, immutSelectorBody)) -> let mutSource, _sourceConv, mutSelectorVar, mutSelectorBody = TransInnerApplicative check mutSource (immutSelectorVar, immutSelectorBody) let mutSelectorBody, selectorConv = ProduceMoreMutables TransInnerNoCheck mutSelectorBody let mutSelectorBody = CleanupLeaf mutSelectorBody TransInnerResult.MakeSelect(canElim, qTyIsIQueryable qTy, mutSource, mutSelectorVar, mutSelectorBody), selectorConv | CallQueryBuilderYieldFrom (_, _, [source]) -> TransInner canElim check source | CallQueryBuilderYield(_, [elemTy; qTy], immutSelectorBody) -> let immutSelectorBody = CleanupLeaf immutSelectorBody let enumExpr = Expr.Coerce(Expr.NewArray(elemTy,[ immutSelectorBody ]), MakeIEnumerableTy elemTy) let expr = if qTyIsIQueryable qTy then MakeAsQueryable(elemTy, enumExpr) else enumExpr TransInnerResult.Other(expr), NoConv | IfThenElse(g, t, e) -> match MacroExpand e with | ZeroOnElseBranch -> let t, tConv = TransInnerAndCommit CanEliminate.Yes check t TransInnerResult.Other(Expr.IfThenElse(g, t, MakeEmpty t.Type)), tConv | _ -> if check then raise (NotSupportedException (SR.GetString(SR.unsupportedIfThenElse)) ) else TransInnerResult.Other(e), NoConv | CallSortBy (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeOrderBy (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallSortByDescending (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeOrderByDescending (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallThenBy (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeThenBy (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallThenByDescending (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeThenByDescending (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallSortByNullable (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeOrderByNullable (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallSortByNullableDescending(_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeOrderByNullableDescending(qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallThenByNullable (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeThenByNullable (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallThenByNullableDescending (_, [_;qTy;_], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeThenByNullableDescending (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallDistinct (_, [srcItemTy; qTy], source) -> let source, sourceConv = TransInnerAndCommit CanEliminate.Yes check source TransInnerResult.Other(MakeDistinct(qTyIsIQueryable qTy, ConvImmutableTypeToMutableType sourceConv srcItemTy,source)), sourceConv | CallSkip(_, [srcItemTy; qTy], source, count) -> let source, sourceConv = TransInnerAndCommit CanEliminate.Yes check source TransInnerResult.Other(MakeSkip(qTyIsIQueryable qTy, ConvImmutableTypeToMutableType sourceConv srcItemTy, source, MacroExpand count)), sourceConv | CallTake(_, [srcItemTy; qTy], source, count) -> let source, sourceConv = TransInnerAndCommit CanEliminate.Yes check source TransInnerResult.Other(MakeTake(qTyIsIQueryable qTy, ConvImmutableTypeToMutableType sourceConv srcItemTy, source, MacroExpand count)), sourceConv | CallSkipWhile(_, [_; qTy], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeSkipWhile (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallTakeWhile(_, [_; qTy], source, Lambda(v, keySelector)) -> let source, sourceConv, v, keySelector = TransInnerApplicativeAndCommit check source (v, keySelector) TransInnerResult.Other(MakeTakeWhile (qTyIsIQueryable qTy, source, v, keySelector)), sourceConv | CallGroupBy(_, [_; qTy; _] , immutSource, Lambda(immutVar, immutKeySelector)) -> let mutSource, sourceConv = TransInnerAndCommit CanEliminate.Yes check immutSource let mutVar, mutKeySelector = ConvertImmutableConsumerToMutableConsumer sourceConv (immutVar, MacroExpand immutKeySelector) let conv = match sourceConv with NoConv -> NoConv | _ -> GroupingConv(immutKeySelector.Type,immutVar.Type,sourceConv) TransInnerResult.Other(MakeGroupBy(qTyIsIQueryable qTy, mutSource, mutVar, mutKeySelector)), conv | CallGroupValBy(_, [_; _; _; qTy], immutSource, Lambda(immutVar1, immutElementSelector), Lambda(immutVar2, immutKeySelector)) -> let mutSource, sourceConv = TransInnerAndCommit CanEliminate.Yes check immutSource let mutVar2, mutKeySelector = ConvertImmutableConsumerToMutableConsumer sourceConv (immutVar2, MacroExpand immutKeySelector) let mutVar1, mutElementSelector = ConvertImmutableConsumerToMutableConsumer sourceConv (immutVar1, MacroExpand immutElementSelector) let mutElementSelector, selectorConv = ProduceMoreMutables TransInnerNoCheck mutElementSelector let mutElementSelector = CleanupLeaf mutElementSelector let conv = match selectorConv with NoConv -> NoConv | _ -> GroupingConv (immutKeySelector.Type,immutElementSelector.Type,selectorConv) TransInnerResult.Other(MakeGroupValBy(qTyIsIQueryable qTy, mutVar1.Type, mutKeySelector.Type, mutElementSelector.Type, mutSource, mutVar2, mutKeySelector, mutVar1, mutElementSelector)), conv #if SUPPORT_ZIP_IN_QUERIES | CallZip(None, [ firstSourceTy; secondSourceTy; resTy ], [firstSource;secondSource;LambdasNoDetupling([firstElementVar;secondElementVar], elementSelector)])-> MakeZip(firstSourceTy, secondSourceTy, resTy, TransInner CanEliminate.Yes firstSource, TransInner CanEliminate.Yes secondSource, firstElementVar, secondElementVar, MacroExpand elementSelector) #endif | CallJoin(_, [_; qTy; _; _; _], [immutOuterSource;immutInnerSource; Lambda(immutOuterKeyVar, immutOuterKeySelector); Lambda(immutInnerKeyVar, immutInnerKeySelector); LambdasNoDetupling([immutOuterResultGroupVar;immutInnerResultKeyVar], immutElementSelector)])-> let (mutOuterSource, outerSourceConv, mutInnerSource, innerSourceConv, mutOuterKeyVar:Var, mutOuterKeySelector, mutInnerKeyVar:Var, mutInnerKeySelector:Expr) = TransJoinInputs check (immutOuterSource, immutInnerSource, immutOuterKeyVar, immutOuterKeySelector, immutInnerKeyVar, immutInnerKeySelector) let mutOuterResultVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer outerSourceConv (immutOuterResultGroupVar, MacroExpand immutElementSelector) let mutInnerResultKeyVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer innerSourceConv (immutInnerResultKeyVar, mutElementSelector) let mutElementSelector, elementSelectorConv = ProduceMoreMutables TransInnerNoCheck mutElementSelector let mutElementSelector = CleanupLeaf mutElementSelector TransInnerResult.Other(MakeJoin(qTyIsIQueryable qTy, mutOuterKeyVar.Type, mutInnerKeyVar.Type, mutInnerKeySelector.Type, mutElementSelector.Type, mutOuterSource, mutInnerSource, mutOuterKeyVar, mutOuterKeySelector, mutInnerKeyVar, mutInnerKeySelector, mutOuterResultVar, mutInnerResultKeyVar, mutElementSelector)),elementSelectorConv | CallGroupJoin(_, [_; qTy; _; _; _], [immutOuterSource;immutInnerSource;Lambda(immutOuterKeyVar, immutOuterKeySelector);Lambda(immutInnerKeyVar, immutInnerKeySelector);LambdasNoDetupling([immutOuterResultGroupVar;immutInnerResultGroupVar], immutElementSelector)])-> let (mutOuterSource, outerSourceConv, mutInnerSource, innerSourceConv, mutOuterKeyVar:Var, mutOuterKeySelector, mutInnerKeyVar:Var, mutInnerKeySelector:Expr) = TransJoinInputs check (immutOuterSource, immutInnerSource, immutOuterKeyVar, immutOuterKeySelector, immutInnerKeyVar, immutInnerKeySelector) let mutOuterResultGroupVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer outerSourceConv (immutOuterResultGroupVar, MacroExpand immutElementSelector) let innerGroupConv = MakeSeqConv innerSourceConv let mutInnerResultKeyVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer innerGroupConv (immutInnerResultGroupVar, mutElementSelector) let mutElementSelector, elementSelectorConv = ProduceMoreMutables TransInnerNoCheck mutElementSelector let mutElementSelector = CleanupLeaf mutElementSelector TransInnerResult.Other(MakeGroupJoin(qTyIsIQueryable qTy, mutOuterKeyVar.Type, mutInnerKeyVar.Type, mutInnerKeySelector.Type, mutElementSelector.Type, mutOuterSource, mutInnerSource, mutOuterKeyVar, mutOuterKeySelector, mutInnerKeyVar, mutInnerKeySelector, mutOuterResultGroupVar, mutInnerResultKeyVar, mutElementSelector)), elementSelectorConv | CallLeftOuterJoin(_, [ _; qTy; immutInnerSourceTy; _; _], [immutOuterSource;immutInnerSource;Lambda(immutOuterKeyVar, immutOuterKeySelector);Lambda(immutInnerKeyVar, immutInnerKeySelector);LambdasNoDetupling([immutOuterResultGroupVar;immutInnerResultGroupVar], immutElementSelector)])-> // Replace uses of 'innerResultGroupVar' with 'innerResultGroupVar.DefaultIfEmpty()' and call MakeGroupJoin let immutElementSelector = immutElementSelector.Substitute (fun v -> if v = immutInnerResultGroupVar then Some (MakeDefaultIfEmpty ([immutInnerSourceTy], [Expr.Var immutInnerResultGroupVar])) else None) let (mutOuterSource, outerSourceConv, mutInnerSource, innerSourceConv, mutOuterKeyVar:Var, mutOuterKeySelector, mutInnerKeyVar:Var, mutInnerKeySelector:Expr) = TransJoinInputs check (immutOuterSource, immutInnerSource, immutOuterKeyVar, immutOuterKeySelector, immutInnerKeyVar, immutInnerKeySelector) let mutOuterResultGroupVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer outerSourceConv (immutOuterResultGroupVar, MacroExpand immutElementSelector) let mutInnerResultKeyVar,mutElementSelector = ConvertImmutableConsumerToMutableConsumer innerSourceConv (immutInnerResultGroupVar, mutElementSelector) let mutElementSelector, elementSelectorConv = ProduceMoreMutables TransInnerNoCheck mutElementSelector let mutElementSelector = CleanupLeaf mutElementSelector TransInnerResult.Other(MakeGroupJoin(qTyIsIQueryable qTy, mutOuterKeyVar.Type, mutInnerKeyVar.Type, mutInnerKeySelector.Type, mutElementSelector.Type, mutOuterSource, mutInnerSource, mutOuterKeyVar, mutOuterKeySelector, mutInnerKeyVar, mutInnerKeySelector, mutOuterResultGroupVar, mutInnerResultKeyVar, mutElementSelector)), elementSelectorConv | LetExprReduction reduced -> TransInner canElim check reduced | MacroReduction reduced -> TransInner canElim check reduced | CallQueryBuilderSourceIQueryable(_, _,expr) -> // expr when typeof.IsAssignableFrom(expr.Type) -> TransInnerResult.Source(expr), NoConv | CallQueryBuilderSourceIEnumerable (_, _, expr) -> // expr when typeof.IsAssignableFrom(expr.Type) -> //raise (NotSupportedException (Printf.sprintf "Unexpected use of query.Source with IEnumerable input: %A" immutQuery)) TransInnerResult.Source(expr), NoConv | Call (_, meth, _) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryCall,meth.ToString()))) | PropertyGet (_, pinfo, _) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryProperty,pinfo.ToString()))) | NewObject(ty,_) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstructKind,"new " + ty.ToString()))) | NewArray(ty,_) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstructKind,"NewArray(" + ty.Name + ",...)"))) | NewTuple _ when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstructKind,"NewTuple(...)"))) | FieldGet (_,field) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstructKind,"FieldGet(" + field.Name + ",...)"))) | LetRecursive _ when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,"LetRecursive(...)"))) | NewRecord _ when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,"NewRecord(...)"))) | NewDelegate _ when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,"NewDelegate(...)"))) | NewTuple _ when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,"NewTuple(...)"))) | NewUnionCase (ucase,_) when check -> raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,"NewUnionCase(" + ucase.Name + "...)"))) // Error cases | e -> if check then raise (NotSupportedException (SR.GetString1(SR.unsupportedQueryConstruct,immutQuery.ToString()))) else TransInnerResult.Source(e),NoConv and TransInnerAndCommit canElim check x = let info, conv = TransInner canElim check x CommitTransInnerResult info, conv and TransNone x = (x,NoConv) // We translate nested queries directly in order to // propagate a immutable-->mutable-->immutable translation if any. // /// This is used on recursive translations of yielded elements to translate nested queries /// in 'yield' position and still propagate information about a possible imutable->mutable->mutable // translation. // e.g. yield (1,query { ... }) and TransInnerNoCheck e = match e with | EnumerableNestedQuery nestedQuery -> let replNestedQuery, conv = TransInnerAndCommit CanEliminate.Yes false nestedQuery let replNestedQuery = let tyArg = replNestedQuery.Type.GetGenericArguments().[0] let IQueryableTySpec = MakeIQueryableTy tyArg // if result type of nested query is derived from IQueryable but not IQueryable itself (i.e. IOrderedQueryable) // then add coersion to IQueryable so result type will match expected signature of QuerySource.Run if (IQueryableTySpec.IsAssignableFrom replNestedQuery.Type) && not (IQueryableTySpec.Equals replNestedQuery.Type) then Expr.Coerce(replNestedQuery, IQueryableTySpec) else replNestedQuery replNestedQuery, MakeSeqConv conv | _ -> e, NoConv and TransJoinInputs check (immutOuterSource, immutInnerSource, immutOuterKeyVar, immutOuterKeySelector, immutInnerKeyVar, immutInnerKeySelector) = let mutOuterSource, outerSourceConv = TransInnerAndCommit CanEliminate.Yes check immutOuterSource let mutInnerSource, innerSourceConv = TransInnerAndCommit CanEliminate.Yes check immutInnerSource let mutOuterKeyVar, mutOuterKeySelector = ConvertImmutableConsumerToMutableConsumer outerSourceConv (immutOuterKeyVar, MacroExpand immutOuterKeySelector) let mutInnerKeyVar, mutInnerKeySelector = ConvertImmutableConsumerToMutableConsumer innerSourceConv (immutInnerKeyVar, MacroExpand immutInnerKeySelector) // Keys may be composite tuples - convert them to be mutables. Note, if there is a tuple on one side, there must be a tuple on the other side. let mutOuterKeySelector, _ = ProduceMoreMutables TransNone mutOuterKeySelector let mutOuterKeySelector = CleanupLeaf mutOuterKeySelector let mutInnerKeySelector, _ = ProduceMoreMutables TransNone mutInnerKeySelector let mutInnerKeySelector = CleanupLeaf mutInnerKeySelector mutOuterSource, outerSourceConv, mutInnerSource, innerSourceConv, mutOuterKeyVar, mutOuterKeySelector, mutInnerKeyVar, mutInnerKeySelector /// Given a query expression in terms of query.For, query.Select, query.Yield, query.Where etc., /// and including immutable tuples and immutable records, build an equivalent query expression /// in terms of LINQ operators, operating over mutable tuples. Return the conversion /// information for the immutable-to-mutable conversion performed so we can undo it where needed. /// /// Further, assume that the elements produced by the query will be consumed by the function "(fun immutConsumingVar -> immutConsumingExpr)" /// and produce the expressions for a new function that consume the results directly. and TransInnerApplicative check source (immutConsumingVar, immutConsumingExpr) = let source, sourceConv = TransInner CanEliminate.Yes check source let mutConsumingVar, mutConsumingExpr = ConvertImmutableConsumerToMutableConsumer sourceConv (immutConsumingVar, MacroExpand immutConsumingExpr) source, sourceConv, mutConsumingVar, mutConsumingExpr and TransInnerApplicativeAndCommit check source (immutConsumingVar, immutConsumingExpr) = let source, sourceConv, mutConsumingVar, mutConsumingExpr = TransInnerApplicative check source (immutConsumingVar, immutConsumingExpr) CommitTransInnerResult source, sourceConv, mutConsumingVar, mutConsumingExpr /// Given a query expression in terms of query.For, query.Select, query.Yield, query.Where etc., /// and including immutable tuples and immutable records, build an equivalent query expression /// in terms of LINQ operators, operating over mutable tuples. If necessary, also add a "postifx" in-memory transformation /// converting the data back to immutable tuples and records. let TransInnerWithFinalConsume canElim immutSource = let mutSource, sourceConv = TransInnerAndCommit canElim true immutSource match sourceConv with | NoConv -> mutSource | _ -> // This function is used with inputs of // - QuerySource<_,_> (for operators like Min) // - IQueryable<_> (for operators like MinBy) // - IEnumerable<_> (for nested queries) let immutSourceTy = immutSource.Type let immutSourceElemTy = assert immutSourceTy.IsGenericType; assert (IsQuerySourceTy immutSourceTy || IsIQueryableTy immutSourceTy || IsIEnumerableTy immutSourceTy); immutSource.Type.GetGenericArguments().[0] let immutVar = Var("after",immutSourceElemTy) let mutVar, mutToImmutSelector = ConvertImmutableConsumerToMutableConsumer sourceConv (immutVar, Expr.Var immutVar) let immutExprEnumerable = MakeSelect(CanEliminate.Yes, false, mutSource, mutVar, mutToImmutSelector) let mustReturnIQueryable = IsQuerySourceTy immutSourceTy && qTyIsIQueryable (immutSourceTy.GetGenericArguments().[0]) || IsIQueryableTy immutSourceTy let immutExprFinal = if mustReturnIQueryable then MakeAsQueryable(immutSourceElemTy,immutExprEnumerable) else immutExprEnumerable immutExprFinal /// Like TransInnerApplicativeAndCommit but (a) assumes the query is nested and (b) throws away the conversion information, /// i.e. assumes that the function "(fun immutConsumingVar -> immutConsumingExpr)" is the only consumption of the query. let TransNestedInnerWithConsumer immutSource (immutConsumingVar, immutConsumingExpr) = let mutSource, _sourceConv, mutConsumingVar, mutConsumingExpr = TransInnerApplicativeAndCommit true immutSource (immutConsumingVar, immutConsumingExpr) mutSource, mutConsumingVar, mutConsumingExpr /// Translate nested query combinator calls to LINQ calls. let rec TransNestedOuter canElim quot = match quot with | CallMinBy (_, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeMinBy (qTyIsIQueryable qTy, source, v, valSelector) | CallMaxBy (_, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeMaxBy (qTyIsIQueryable qTy, source, v, valSelector) | CallMinByNullable (_, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeMinByNullable (qTyIsIQueryable qTy, source, v, valSelector) | CallMaxByNullable (_, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeMaxByNullable (qTyIsIQueryable qTy, source, v, valSelector) | CallCount (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeCount (qTyIsIQueryable qTy, srcItemTy, source) | CallHead (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeFirst (qTyIsIQueryable qTy, srcItemTy, source) | CallLast (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeLast (qTyIsIQueryable qTy, srcItemTy, source) | CallHeadOrDefault (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeFirstOrDefault (qTyIsIQueryable qTy, srcItemTy, source) | CallLastOrDefault (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeLastOrDefault (qTyIsIQueryable qTy, srcItemTy, source) | CallExactlyOne (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeSingle (qTyIsIQueryable qTy, srcItemTy, source) | CallExactlyOneOrDefault (_, [srcItemTy; qTy], source) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeSingleOrDefault(qTyIsIQueryable qTy, srcItemTy, source) | CallAverageBy (qb, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeAverageBy (qb, qTyIsIQueryable qTy, source, v, valSelector) | CallAverageByNullable (qb, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeAverageByNullable(qb, qTyIsIQueryable qTy, source, v, valSelector) | CallSumBy (qb, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeSumBy (qb, qTyIsIQueryable qTy, source, v, valSelector) | CallSumByNullable (qb, [_; qTy; _], source, Lambda(v, valSelector)) -> let source, v, valSelector = TransNestedInnerWithConsumer source (v, valSelector) MakeSumByNullable (qb, qTyIsIQueryable qTy, source, v, valSelector) | CallExists (_, [_; qTy], source, Lambda(v, predicate)) -> let source, v, predicate = TransNestedInnerWithConsumer source (v, predicate) MakeAny (qTyIsIQueryable qTy, source, v, predicate) | CallForAll (_, [_; qTy], source, Lambda(v, predicate)) -> let source, v, predicate = TransNestedInnerWithConsumer source (v, predicate) MakeAll (qTyIsIQueryable qTy, source, v, predicate) | CallFind (_, [_; qTy], source, Lambda(v, predicate)) -> let source, v, predicate = TransNestedInnerWithConsumer source (v, predicate) MakeFirstFind (qTyIsIQueryable qTy, source, v, predicate) | CallContains (_, [srcItemTy; qTy], source, valToFindExpr) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeContains (qTyIsIQueryable qTy, srcItemTy, source, MacroExpand valToFindExpr) | CallNth (_, [srcItemTy; qTy], source, valCountExpr) -> let source = TransInnerWithFinalConsume CanEliminate.Yes source MakeElementAt (qTyIsIQueryable qTy, srcItemTy, source, MacroExpand valCountExpr) | LetExprReduction reduced -> TransNestedOuter canElim reduced | MacroReduction reduced -> TransNestedOuter canElim reduced | source -> TransInnerWithFinalConsume canElim source // Nested queries appear as query { .... } // [[ query { ... } ]] = TransNestedOuter canElim[[q]] // -- This is the primary translation for nested sequences. let EliminateNestedQueries q = q |> RewriteExpr (fun walk p -> match p with | AnyNestedQuery e -> Some (walk (TransNestedOuter CanEliminate.No e)) | _ -> None) /// Evaluate the inner core of a query that actually produces a sequence of results. /// Do this by converting to an expression tree for a LINQ query and evaluating that. let EvalNonNestedInner canElim (queryProducingSequence:Expr) = let linqQuery = TransInnerWithFinalConsume canElim queryProducingSequence let linqQueryAfterEliminatingNestedQueries = EliminateNestedQueries linqQuery #if FX_NO_SYSTEM_CONSOLE #else #if DEBUG let debug() = Printf.printfn "----------------------queryProducingSequence-------------------------" Printf.printfn "%A" queryProducingSequence Printf.printfn "--------------------------linqQuery (before nested)------------------" Printf.printfn "%A" linqQuery Printf.printfn "--------------------------linqQuery (after nested)-------------------" Printf.printfn "%A" linqQueryAfterEliminatingNestedQueries #endif #endif let result = try LeafExpressionConverter.EvaluateQuotation linqQueryAfterEliminatingNestedQueries with e -> #if FX_NO_SYSTEM_CONSOLE #else #if DEBUG debug() Printf.printfn "--------------------------error--------------------------------------" Printf.printfn "%A" (e.ToString()) Printf.printfn "---------------------------------------------------------------------" #endif #endif reraise () result /// Evaluate the outer calls of a query until the inner core that actually produces a sequence of results is reached. let rec EvalNonNestedOuter canElim (tm:Expr) = match tm with | CallMinBy (_, [srcItemTy; qTy; keyItemTy], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallMinBy (qTyIsIQueryable qTy, srcItemTy, keyItemTy, sourcev, keyItemTy, v, MacroExpand valSelector) | CallMaxBy (_, [srcItemTy; qTy; keyItemTy], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallMaxBy (qTyIsIQueryable qTy, srcItemTy, keyItemTy, sourcev, keyItemTy, v, MacroExpand valSelector) | CallMinByNullable (_, [srcItemTy; qTy; keyItemTy ], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallMinByNullable (qTyIsIQueryable qTy, srcItemTy, keyItemTy, sourcev, MakeNullableTy keyItemTy, v, MacroExpand valSelector) | CallMaxByNullable (_, [srcItemTy; qTy; keyItemTy ], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallMaxByNullable (qTyIsIQueryable qTy, srcItemTy, keyItemTy, sourcev, MakeNullableTy keyItemTy, v, MacroExpand valSelector) | CallCount (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallCount (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallHead (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallFirst (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallLast (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallLast (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallHeadOrDefault (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallFirstOrDefault (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallLastOrDefault (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallLastOrDefault (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallExactlyOne (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallSingle (qTyIsIQueryable qTy, srcItemTy, sourcev) | CallExactlyOneOrDefault (_, [srcItemTy; qTy], source) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallSingleOrDefault(qTyIsIQueryable qTy, srcItemTy, sourcev) | CallAverageBy (qb, [srcItemTy; qTy; resTy], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallAverageBy (qb, qTyIsIQueryable qTy, srcItemTy, resTy, sourcev, resTy, v, MacroExpand valSelector) | CallAverageByNullable (qb, [srcItemTy; qTy; resTyNoNullable], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallAverageByNullable(qb, qTyIsIQueryable qTy, srcItemTy, resTyNoNullable, sourcev, MakeNullableTy resTyNoNullable, v, MacroExpand valSelector) | CallSumBy (qb, [srcItemTy; qTy; resTy], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallSumBy (qb, qTyIsIQueryable qTy, srcItemTy, resTy, sourcev, resTy, v, MacroExpand valSelector) | CallSumByNullable (qb, [srcItemTy; qTy; resTyNoNullable], source, Lambda(v, valSelector)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallSumByNullable (qb, qTyIsIQueryable qTy, srcItemTy, resTyNoNullable, sourcev, MakeNullableTy resTyNoNullable, v, MacroExpand valSelector) | CallExists (_, [srcItemTy; qTy], source, Lambda(v, predicate)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallAny (qTyIsIQueryable qTy, srcItemTy, sourcev, v, MacroExpand predicate) | CallForAll (_, [srcItemTy; qTy], source, Lambda(v, predicate)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallAll (qTyIsIQueryable qTy, srcItemTy, sourcev, v, MacroExpand predicate) | CallFind (_, [srcItemTy; qTy], source, Lambda(v, f)) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallFirstFind (qTyIsIQueryable qTy, srcItemTy, sourcev, v, MacroExpand f) | CallContains (_, [srcItemTy; qTy], source, v) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallContains (qTyIsIQueryable qTy, srcItemTy, sourcev, MacroExpand v) | CallNth (_, [srcItemTy; qTy], source, v) -> let sourcev = EvalNonNestedInner CanEliminate.Yes source in CallElementAt (qTyIsIQueryable qTy, srcItemTy, sourcev, MacroExpand v) | LetExprReduction reduced -> EvalNonNestedOuter canElim reduced | MacroReduction reduced -> EvalNonNestedOuter canElim reduced | source -> EvalNonNestedInner canElim source let QueryExecute (p : Expr<'T>) : 'U = // We use Unchecked.unbox to allow headOrDefault, lastOrDefault and exactlyOneOrDefault to return Uncehcked.defaultof<_> values for F# types Unchecked.unbox (EvalNonNestedOuter CanEliminate.No p) type QueryBuilder with member __.RunQueryAsValue (q:Quotations.Expr<'T>) : 'T = Query.QueryExecute q member __.RunQueryAsEnumerable (q:Quotations.Expr>) : IEnumerable<'T> = let queryAfterEliminatingNestedQueries = Query.EliminateNestedQueries q let queryAfterCleanup = Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.CleanupLeaf queryAfterEliminatingNestedQueries (LeafExpressionConverter.EvaluateQuotation queryAfterCleanup :?> QuerySource<'T,IEnumerable>).Source member __.RunQueryAsQueryable (q:Quotations.Expr>) : IQueryable<'T> = Query.QueryExecute q member this.Run q = this.RunQueryAsQueryable q namespace Microsoft.FSharp.Linq.QueryRunExtensions open Microsoft.FSharp.Core [] module LowPriority = type Microsoft.FSharp.Linq.QueryBuilder with [] member this.Run (q: Microsoft.FSharp.Quotations.Expr<'T>) = this.RunQueryAsValue q [] module HighPriority = type Microsoft.FSharp.Linq.QueryBuilder with [] member this.Run (q: Microsoft.FSharp.Quotations.Expr>) = this.RunQueryAsEnumerable q #endif fsharp-3.0.34/src/fsharp/FSharp.Core/array2.fsi0000775000175000017500000003242712260314606020132 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open Microsoft.FSharp.Collections open Microsoft.FSharp.Core [] [] /// Basic operations on 2-dimensional arrays. /// /// F# and CLI multi-dimensional arrays are typically zero-based. /// However, CLI multi-dimensional arrays used in conjunction with external /// libraries (e.g. libraries associated with Visual Basic) be /// non-zero based, using a potentially different base for each dimension. /// The operations in this module will accept such arrays, and /// the basing on an input array will be propagated to a matching output /// array on the Array2D.map and Array2D.mapi operations. /// Non-zero-based arrays can also be created using Array2D.zeroCreateBased, /// Array2D.createBased and Array2D.initBased. module Array2D = /// Fetches the base-index for the first dimension of the array. /// /// The input array. /// /// The base-index of the first dimension of the array. [] val base1: array:'T[,] -> int /// Fetches the base-index for the second dimension of the array. /// /// The input array. /// /// The base-index of the second dimension of the array. [] val base2: array:'T[,] -> int /// Builds a new array whose elements are the same as the input array. /// /// For non-zero-based arrays the basing on an input array will be propogated to the output /// array. /// /// The input array. /// /// A copy of the input array. [] val copy: array:'T[,] -> 'T[,] /// Reads a range of elements from the first array and write them into the second. /// /// The source array. /// The first-dimension index to begin copying from in the source array. /// The second-dimension index to begin copying from in the source array. /// The target array. /// The first-dimension index to begin copying into in the target array. /// The second-dimension index to begin copying into in the target array. /// The number of elements to copy across the first dimension of the arrays. /// The number of elements to copy across the second dimension of the arrays. /// Thrown when any of the indices are negative or if either of /// the counts are larger than the dimensions of the array allow. [] val blit: source:'T[,] -> sourceIndex1:int -> sourceIndex2:int -> target:'T[,] -> targetIndex1:int -> targetIndex2:int -> length1:int -> length2:int -> unit /// Creates an array given the dimensions and a generator function to compute the elements. /// /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// A function to produce elements of the array given the two indices. /// /// The generated array. /// Thrown when either of the lengths is negative. [] val init: length1:int -> length2:int -> initializer:(int -> int -> 'T) -> 'T[,] /// Creates an array whose elements are all initially the given value. /// /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// The value to populate the new array. /// /// The created array. /// Thrown when length1 or length2 is negative. [] val create: length1:int -> length2:int -> value:'T -> 'T[,] /// Creates an array where the entries are initially Unchecked.defaultof<'T>. /// /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// /// The created array. /// Thrown when length1 or length2 is negative. [] val zeroCreate : length1:int -> length2:int -> 'T[,] #if FX_NO_BASED_ARRAYS #else /// Creates a based array given the dimensions and a generator function to compute the elements. /// /// The base for the first dimension of the array. /// The base for the second dimension of the array. /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// A function to produce elements of the array given the two indices. /// /// The created array. /// Thrown when base1, base2, length1, or length2 is negative. [] val initBased: base1:int -> base2:int -> length1:int -> length2:int -> initializer:(int -> int -> 'T) -> 'T[,] /// Creates a based array whose elements are all initially the given value. /// /// The base for the first dimension of the array. /// The base for the second dimension of the array. /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// The value to populate the new array. /// /// The created array. /// Thrown when base1, base2, length1, or length2 is negative. [] val createBased: base1:int -> base2:int -> length1:int -> length2:int -> initial: 'T -> 'T[,] /// Creates a based array where the entries are initially Unchecked.defaultof<'T>. /// /// The base for the first dimension of the array. /// The base for the second dimension of the array. /// The length of the first dimension of the array. /// The length of the second dimension of the array. /// /// The created array. /// Thrown when base1, base2, length1, or length2 is negative. [] val zeroCreateBased : base1:int -> base2:int -> length1:int -> length2:int -> 'T[,] #endif /// Applies the given function to each element of the array. /// /// A function to apply to each element of the array. /// The input array. [] val iter: action:('T -> unit) -> array:'T[,] -> unit /// Applies the given function to each element of the array. The integer indices passed to the /// function indicates the index of element. /// /// A function to apply to each element of the array with the indices available as an argument. /// The input array. [] val iteri: action:(int -> int -> 'T -> unit) -> array:'T[,] -> unit /// Returns the length of an array in the first dimension. /// /// The input array. /// /// The length of the array in the first dimension. [] val length1: array:'T[,] -> int /// Returns the length of an array in the second dimension. /// /// The input array. /// /// The length of the array in the second dimension. [] val length2: array:'T[,] -> int /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. /// /// For non-zero-based arrays the basing on an input array will be propogated to the output /// array. /// /// A function that is applied to transform each item of the input array. /// The input array. /// /// An array whose elements have been transformed by the given mapping. [] val map: mapping:('T -> 'U) -> array:'T[,] -> 'U[,] /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. The integer indices passed to the /// function indicates the element being transformed. /// /// For non-zero-based arrays the basing on an input array will be propagated to the output /// array. /// /// A function that is applied to transform each element of the array. The two integers /// provide the index of the element. /// The input array. /// /// An array whose elements have been transformed by the given mapping. [] val mapi: mapping:(int -> int -> 'T -> 'U) -> array:'T[,] -> 'U[,] /// Builds a new array whose elements are the same as the input array but /// where a non-zero-based input array generates a corresponding zero-based /// output array. /// /// The input array. /// /// The zero-based output array. [] val rebase: array:'T[,] -> 'T[,] /// Sets the value of an element in an array. You can also use the syntax array.[index1,index2] <- value. /// /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// The value to set in the array. /// Thrown when the indices are negative or exceed the bounds of the array. [] val set: array:'T[,] -> index1:int -> index2:int -> value:'T -> unit /// Fetches an element from a 2D array. You can also use the syntax array.[index1,index2]. /// /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// /// The value of the array at the given index. /// Thrown when the indices are negative or exceed the bounds of the array. [] val get: array:'T[,] -> index1:int -> index2:int -> 'T fsharp-3.0.34/src/fsharp/FSharp.Core/control.fs0000775000175000017500000035725012260314606020245 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #if FX_NO_CANCELLATIONTOKEN_CLASSES namespace System open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections type [] AggregateException (exns : seq) = inherit Exception() let exnsList = new System.Collections.Generic.List(exns) member this.InnerExceptions = new System.Collections.ObjectModel.ReadOnlyCollection(exnsList :> System.Collections.Generic.IList) namespace System.Threading #nowarn "864" // this is for typed Equals() in CancellationTokenRegistration and CancellationToken open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections module internal CancellationState = [] let ACTIVE = 0 [] let DISPOSED_ACTIVE = 1 [] let CANCELED = 2 [] let DISPOSED_CANCELED = 3 [] [] type CancellationTokenRegistration = val private source : CancellationTokenSource val private id : int64 internal new(source,id) = { source = source; id = id } member this.Dispose() = match this.source with | null -> () | _ -> this.source.Deregister(this.id) member this.Equals(ctr:CancellationTokenRegistration) = match this.source with | null -> ctr.source = null | _ -> this.source.Equals(ctr.source) && this.id = ctr.id override this.Equals(o:obj) = match o with | :? CancellationTokenRegistration as ctr -> this.Equals(ctr) | _ -> false override this.GetHashCode() = match this.source with | null -> 0 | _ -> this.source.GetHashCode()^^^this.id.GetHashCode() static member (=) (left:CancellationTokenRegistration,right:CancellationTokenRegistration) = left.Equals(right) static member (<>) (left:CancellationTokenRegistration,right:CancellationTokenRegistration) = not (left.Equals(right)) interface System.IDisposable with member this.Dispose() = this.Dispose() and [] [] CancellationToken = val private source : CancellationTokenSource internal new (source) = { source = source } member this.IsCancellationRequested = match this.source with | null -> false | source -> source.IsCancellationRequested member this.CanBeCanceled = this.source <> Unchecked.defaultof<_> member this.Register (action:Action, state:obj) = match this.source with | null -> Unchecked.defaultof<_> | source -> source.Register(action, state) member this.Equals(ct:CancellationToken) = match this.source with | null -> ct.source = null | _ -> this.source.Equals(ct.source) override this.Equals(o:obj) = match o with | :? CancellationToken as ct -> this.Equals(ct) | _ -> false override this.GetHashCode() = match this.source with | null -> 0 | _ -> this.source.GetHashCode() static member (=) (left:CancellationToken,right:CancellationToken) = left.Equals(right) static member (<>) (left:CancellationToken,right:CancellationToken) = not (left.Equals(right)) static member None = new CancellationToken(null) and [] [] internal CallbackInfo = val private id : int64 val private action : Action val private state : obj new (id,action,state) = { id = id; action = action; state = state } member this.ID = this.id member this.Action = this.action member this.State = this.state and [][][] CancellationTokenSource private (token1 : CancellationToken, token2 : CancellationToken) as this = [] let mutable state = CancellationState.ACTIVE // next registration id let mutable nextID = 0L; // lazily initialized list of registrations let registrations = lazy (new System.Collections.Generic.List()) // linking to tokens let mutable linkedCtr1 = Unchecked.defaultof let mutable linkedCtr2 = Unchecked.defaultof do let handler = Action(fun _ -> // Avoinding a race for Dispose versus Cancel for linked token sources: // - CTS.Dispose deregisters its CTRs and sets state to DISPOSED_* // - However if the cancellation is in progress in the source it is linked to, deregistration is a no-op and CTS may still receive cancellation notification // - That cancellation notification arrives in disposed state // We ignore cancellation notifications from linked sources in disposed state (so if cancellation/disposal race happens, disposal wins). this.Cancel(dontThrowIfDisposed = true) ) linkedCtr1 <- token1.Register(handler,null) linkedCtr2 <- token2.Register(handler,null) public new() = new CancellationTokenSource(Unchecked.defaultof<_>,Unchecked.defaultof<_>) member this.Token = new CancellationToken(this) member this.Cancel() = this.Cancel(dontThrowIfDisposed = false) member private this.Cancel (dontThrowIfDisposed) : unit = let oldState = Interlocked.CompareExchange(&state, CancellationState.CANCELED, CancellationState.ACTIVE) match oldState with | CancellationState.ACTIVE -> if registrations.IsValueCreated then // we have at least one registration let list = registrations.Value let toRun = // building a list of callback to run, in LIFO order lock list (fun () -> let toRun = list |> Seq.fold (fun l info -> (fun () -> info.Action.Invoke(info.State))::l) [] list.Clear() toRun) let doRun l f = // run callback, add any thrown exception to the list try f(); l with e -> e::l let exns = List.fold doRun [] toRun match exns with | [] -> () | _ -> // exns are in reverse order to the callbacks in toRun // we rev here; mainline case (no exceptions at all) runs without any allocations for exception list new AggregateException(exns |> List.rev) |> raise else () // no registrations - do nothing | CancellationState.CANCELED -> () // cancellation already happened | _ -> // DISPOSED_ACTIVE or DISPOSED_CANCELED if not dontThrowIfDisposed then new ObjectDisposedException(typeof.FullName) |> raise else () member this.Dispose() = try // Unregister from linked sources before changing state. Otherwise callback may still execute and we will be canceled in disposed state // Multiple CTR disposal is a no-op try linkedCtr2.Dispose() finally linkedCtr1.Dispose() finally let disposeNow = let oldState = Interlocked.CompareExchange(&state, CancellationState.DISPOSED_ACTIVE, CancellationState.ACTIVE) if oldState = CancellationState.ACTIVE then true // previous state was ACTIVE, now disposing else let oldState = Interlocked.CompareExchange(&state, CancellationState.DISPOSED_CANCELED, CancellationState.CANCELED) // if previous state was CANCELED, dispose now. Otherwise previous state was one of DISPOSED_* states, so already disposed oldState = CancellationState.CANCELED if disposeNow then if registrations.IsValueCreated then let list = registrations.Value lock list (fun () -> list.Clear()) member private this.InternalIsCanceled throwOnDisposed = match state with | CancellationState.ACTIVE -> false | CancellationState.CANCELED -> true | CancellationState.DISPOSED_CANCELED -> if throwOnDisposed then new ObjectDisposedException(typeof.FullName) |> raise else true | _ -> if throwOnDisposed then new ObjectDisposedException(typeof.FullName) |> raise else false member internal this.IsCancellationRequested = state = CancellationState.CANCELED || state = CancellationState.DISPOSED_CANCELED member internal this.Register(action:Action, state:obj) = if this.InternalIsCanceled true then // do not register, invoke immediately action.Invoke(state) Unchecked.defaultof<_> else let list = registrations.Value let invokeNow, r = lock list (fun () -> if this.InternalIsCanceled true then true, new CancellationTokenRegistration(Unchecked.defaultof<_>, 0L) else let id = nextID nextID <- nextID + 1L list.Add(new CallbackInfo(id, action, state)) false, new CancellationTokenRegistration(this, id) ) if invokeNow then action.Invoke(state) r member internal this.Deregister(id) = if this.InternalIsCanceled false then // ok to deregister after Dispose () // After cancellation is requested no deregistration needed; else let list = registrations.Value lock list (fun () -> if this.InternalIsCanceled false then // ok to deregister after Dispose () else let index = // Search backwards; we assume Register/Deregister are scoped // so registered last will be deregistred first let rec loop i = if i < 0 then (-1) else let callbackInfo = list.[i] if callbackInfo.ID = id then i else loop (i-1) loop (list.Count - 1) if index >= 0 then list.RemoveAt(index) else () // we do not punish double deregistering ) interface System.IDisposable with member this.Dispose() = this.Dispose() static member CreateLinkedTokenSource (token1:CancellationToken,token2:CancellationToken) = new CancellationTokenSource(token1,token2) #endif namespace Microsoft.FSharp.Control #nowarn "40" #nowarn "21" #nowarn "47" #nowarn "44" // This construct is deprecated. #nowarn "52" // The value has been copied to ensure the original is not mutated by this operation #nowarn "67" // This type test or downcast will always hold #nowarn "864" // IObservable.Subscribe open System open System.Diagnostics open System.Diagnostics.CodeAnalysis open System.Threading open System.IO open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections #if FX_NO_TASK #else open System.Threading open System.Threading.Tasks //[)>] //[)>] //[)>] //do () #endif #if FX_NO_OPERATION_CANCELLED type OperationCanceledException(s : System.String) = inherit System.Exception(s) new () = new OperationCanceledException("The operation has been canceled") #endif /// We use our own internal implementation of queues to avoid a dependency on System.dll type Queue<'T>() = //: IEnumerable, ICollection, IEnumerable let mutable array = [| |] let mutable head = 0 let mutable size = 0 let mutable tail = 0 let SetCapacity(capacity) = let destinationArray = Array.zeroCreate capacity; if (size > 0) then if (head < tail) then System.Array.Copy(array, head, destinationArray, 0, size); else System.Array.Copy(array, head, destinationArray, 0, array.Length - head); System.Array.Copy(array, 0, destinationArray, array.Length - head, tail); array <- destinationArray; head <- 0; tail <- if (size = capacity) then 0 else size; member x.Dequeue() = if (size = 0) then failwith "Dequeue" let local = array.[head]; array.[head] <- Unchecked.defaultof<'T> head <- (head + 1) % array.Length; size <- size - 1; local member this.Enqueue(item) = if (size = array.Length) then let capacity = int ((int64 array.Length * 200L) / 100L); let capacity = max capacity (array.Length + 4) SetCapacity(capacity); array.[tail] <- item; tail <- (tail + 1) % array.Length; size <- size + 1 member x.Count = size type LinkedSubSource(ct : CancellationToken) = let failureCTS = new CancellationTokenSource() let linkedCTS = CancellationTokenSource.CreateLinkedTokenSource(ct, failureCTS.Token) member this.Token = linkedCTS.Token member this.Cancel() = failureCTS.Cancel() member this.Dispose() = linkedCTS.Dispose() failureCTS.Dispose() interface IDisposable with member this.Dispose() = this.Dispose() // F# don't always take tailcalls to functions returning 'unit' because this // is represented as type 'void' in the underlying IL. // Hence we don't use the 'unit' return type here, and instead invent our own type. [] type FakeUnitValue = | FakeUnit type cont<'T> = ('T -> FakeUnitValue) type econt = (exn -> FakeUnitValue) type ccont = (OperationCanceledException -> FakeUnitValue) //---------------------------------- // PRIMITIVE ASYNC TRAMPOLINE [] type Trampoline() = let mutable cont = None let mutable bindCount = 0 static let unfake FakeUnit = () [] static let bindLimitBeforeHijack = 300 #if FX_NO_THREAD_STATIC #else [] [] static val mutable private thisThreadHasTrampoline : bool #endif static member ThisThreadHasTrampoline = #if FX_NO_THREAD_STATIC true #else Trampoline.thisThreadHasTrampoline #endif // Install a trampolineStack if none exists member this.ExecuteAction (firstAction : unit -> FakeUnitValue) = let rec loop action = action() |> unfake match cont with | None -> () | Some newAction -> cont <- None loop newAction #if FX_NO_THREAD_STATIC #else let thisIsTopTrampoline = if Trampoline.thisThreadHasTrampoline then false else Trampoline.thisThreadHasTrampoline <- true true #endif try loop firstAction finally #if FX_NO_THREAD_STATIC () #else if thisIsTopTrampoline then Trampoline.thisThreadHasTrampoline <- false #endif FakeUnit // returns true if time to jump on trampoline member this.IncrementBindCount() = bindCount <- bindCount + 1 bindCount >= bindLimitBeforeHijack member this.Set action = match cont with | None -> bindCount <- 0 cont <- Some action | _ -> failwith "Internal error: attempting to install continuation twice" type TrampolineHolder() as this = let mutable trampoline = null static let unfake FakeUnit = () // preallocate context-switching callbacks #if FX_NO_SYNC_CONTEXT #else // Preallocate the delegate // This should be the only call to SynchronizationContext.Post in this library. We must always install a trampoline. let sendOrPostCallback = SendOrPostCallback(fun o -> let f = unbox o : unit -> FakeUnitValue this.Protect f |> unfake ) #endif // Preallocate the delegate // This should be the only call to QueueUserWorkItem in this library. We must always install a trampoline. let waitCallbackForQueueWorkItemWithTrampoline = WaitCallback(fun o -> let f = unbox o : unit -> FakeUnitValue this.Protect f |> unfake ) #if FX_NO_PARAMETERIZED_THREAD_START #else // This should be the only call to Thread.Start in this library. We must always install a trampoline. let threadStartCallbackForStartThreadWithTrampoline = ParameterizedThreadStart(fun o -> let f = unbox o : unit -> FakeUnitValue this.Protect f |> unfake ) #endif #if FX_NO_SYNC_CONTEXT #else member this.Post (ctxt: SynchronizationContext) (f : unit -> FakeUnitValue) = ctxt.Post (sendOrPostCallback, state=(f |> box)) FakeUnit #endif member this.QueueWorkItem (f: unit -> FakeUnitValue) = if not (ThreadPool.QueueUserWorkItem(waitCallbackForQueueWorkItemWithTrampoline, f |> box)) then failwith "failed to queue user work item" FakeUnit #if FX_NO_PARAMETERIZED_THREAD_START // This should be the only call to Thread.Start in this library. We must always install a trampoline. member this.StartThread (f : unit -> FakeUnitValue) = #if FX_NO_THREAD this.QueueWorkItem(f) #else (new Thread((fun _ -> this.Protect f |> unfake), IsBackground=true)).Start() FakeUnit #endif #else // This should be the only call to Thread.Start in this library. We must always install a trampoline. member this.StartThread (f : unit -> FakeUnitValue) = (new Thread(threadStartCallbackForStartThreadWithTrampoline,IsBackground=true)).Start(f|>box) FakeUnit #endif member this.Protect firstAction = trampoline <- new Trampoline() trampoline.ExecuteAction(firstAction) member this.Trampoline = trampoline [] [] type AsyncParamsAux = { token : CancellationToken; econt : econt; ccont : ccont; trampolineHolder : TrampolineHolder } [] [] type AsyncParams<'T> = { cont : cont<'T> aux : AsyncParamsAux } [] [] type Async<'T> = P of (AsyncParams<'T> -> FakeUnitValue) module AsyncBuilderImpl = // To consider: augment with more exception traceability information // To consider: add the ability to suspend running ps in debug mode // To consider: add the ability to trace running ps in debug mode open System open System.Threading open System.IO open Microsoft.FSharp.Core let fake () = FakeUnit let unfake FakeUnit = () let ignoreFake _ = FakeUnit let defaultCancellationTokenSource = ref (new CancellationTokenSource()) [] type Result<'T> = | Ok of 'T | Error of exn | Canceled of OperationCanceledException let inline hijack (trampolineHolder:TrampolineHolder) res (cont : 'T -> FakeUnitValue) : FakeUnitValue = if trampolineHolder.Trampoline.IncrementBindCount() then trampolineHolder.Trampoline.Set(fun () -> cont res) FakeUnit else cont res // Apply f to x and call either the continuation or exception continuation depending what happens let inline protect (trampolineHolder:TrampolineHolder) econt f x (cont : 'T -> FakeUnitValue) : FakeUnitValue = // This is deliberately written in a allocation-free style, except when the trampoline is taken let mutable res = Unchecked.defaultof<_> let mutable exn = null try res <- f x with // Note: using a :? catch keeps FxCop happy | :? System.Exception as e -> exn <- e match exn with | null -> // NOTE: this must be a tailcall hijack trampolineHolder res cont | exn -> // NOTE: this must be a tailcall hijack trampolineHolder exn econt // Apply f to x and call either the continuation or exception continuation depending what happens let inline protectNoHijack econt f x (cont : 'T -> FakeUnitValue) : FakeUnitValue = // This is deliberately written in a allocation-free style let mutable res = Unchecked.defaultof<_> let mutable exn = null try res <- f x with // Note: using a :? catch keeps FxCop happy | :? System.Exception as e -> exn <- e match exn with | null -> // NOTE: this must be a tailcall cont res | exn -> // NOTE: this must be a tailcall econt exn // Reify exceptional results as exceptions let commit res = match res with | Ok res -> res | Error exn -> raise exn | Canceled exn -> raise exn // Reify exceptional results as exceptionsJIT 64 doesn't always take tailcalls correctly let commitWithPossibleTimeout res = match res with | None -> raise (System.TimeoutException()) | Some res -> commit res //---------------------------------- // PRIMITIVE ASYNC INVOCATION // Apply the underlying implementation of an async computation to its inputs let inline invokeA (P pf) args = pf args let startA cancellationToken trampolineHolder cont econt ccont p = let args = { cont = cont aux = { token = cancellationToken; econt = econt ccont = ccont trampolineHolder = trampolineHolder } } invokeA p args #if FX_NO_PARAMETERIZED_THREAD_START // Preallocate the delegate // This should be the only call to QueueUserWorkItem in this library. We must always install a trampoline. let waitCallbackForQueueWorkItemWithTrampoline(trampolineHolder : TrampolineHolder) = WaitCallback(fun o -> let f = unbox o : unit -> FakeUnitValue trampolineHolder.Protect f |> unfake ) let startThreadWithTrampoline (trampolineHolder:TrampolineHolder) (f : unit -> FakeUnitValue) = #if FX_NO_THREADPOOL if not (ThreadPool.QueueUserWorkItem((waitCallbackForQueueWorkItemWithTrampoline trampolineHolder), f |> box)) then failwith "failed to queue user work item" FakeUnit #else (new Thread((fun _ -> trampolineHolder.Protect f |> unfake), IsBackground=true)).Start() FakeUnit #endif #else // Statically preallocate the delegate let threadStartCallbackForStartThreadWithTrampoline = ParameterizedThreadStart(fun o -> let (trampolineHolder,f) = unbox o : TrampolineHolder * (unit -> FakeUnitValue) trampolineHolder.Protect f |> unfake ) // This should be the only call to Thread.Start in this library. We must always install a trampoline. let startThreadWithTrampoline (trampolineHolder:TrampolineHolder) (f : unit -> FakeUnitValue) = (new Thread(threadStartCallbackForStartThreadWithTrampoline,IsBackground=true)).Start((trampolineHolder,f)|>box) FakeUnit #endif let startAsync cancellationToken cont econt ccont p = let trampolineHolder = new TrampolineHolder() trampolineHolder.Protect (fun () -> startA cancellationToken trampolineHolder cont econt ccont p) let queueAsync cancellationToken cont econt ccont p = let trampolineHolder = new TrampolineHolder() trampolineHolder.QueueWorkItem(fun () -> startA cancellationToken trampolineHolder cont econt ccont p) //---------------------------------- // PRIMITIVE ASYNC CONSTRUCTORS // Call the exception continuation let errorT args exn = args.aux.econt exn // Call the cancellation continuation let cancelT (args:AsyncParams<_>) = args.aux.ccont (new OperationCanceledException()) // Build a primitive without any exception of resync protection // // Use carefully!! let unprotectedPrimitive f = P f let protectedPrimitiveCore args f = if args.aux.token.IsCancellationRequested then cancelT args else try f args with exn -> errorT args exn // When run, ensures that any exceptions raised by the immediate execution of "f" are // sent to the exception continuation. // let protectedPrimitive f = unprotectedPrimitive (fun args -> protectedPrimitiveCore args f) let reify res = unprotectedPrimitive (fun args -> match res with | Result.Ok r -> args.cont r | Result.Error e -> args.aux.econt e | Result.Canceled oce -> args.aux.ccont oce) //---------------------------------- // BUILDER OPREATIONS // Generate async computation which calls its continuation with the given result let resultA x = unprotectedPrimitive (fun ({ aux = aux } as args) -> if aux.token.IsCancellationRequested then cancelT args else hijack aux.trampolineHolder x args.cont) // The primitive bind operation. Generate a process that runs the first process, takes // its result, applies f and then runs the new process produced. Hijack if necessary and // run 'f' with exception protection let bindA p1 f = unprotectedPrimitive (fun args -> if args.aux.token.IsCancellationRequested then cancelT args else let args = let cont a = protectNoHijack args.aux.econt f a (fun p2 -> invokeA p2 args) { cont=cont; aux = args.aux } // Trampoline the continuation onto a new work item every so often let trampoline = args.aux.trampolineHolder.Trampoline if trampoline.IncrementBindCount() then trampoline.Set(fun () -> invokeA p1 args) FakeUnit else // NOTE: this must be a tailcall invokeA p1 args) // callA = "bindA (return x) f" let callA f x = unprotectedPrimitive (fun args -> if args.aux.token.IsCancellationRequested then cancelT args else protect args.aux.trampolineHolder args.aux.econt f x (fun p2 -> invokeA p2 args) ) // delayPrim = "bindA (return ()) f" let delayA f = callA f () // Call p but augment the normal, exception and cancel continuations with a call to finallyFunction. // If the finallyFunction raises an exception then call the original exception continuation // with the new exception. If exception is raised after a cancellation, exception is ignored // and cancel continuation is called. let tryFinallyA finallyFunction p = unprotectedPrimitive (fun args -> if args.aux.token.IsCancellationRequested then cancelT args else let trampolineHolder = args.aux.trampolineHolder // The new continuation runs the finallyFunction and resumes the old continuation // If an exception is thrown we continue with the previous exception continuation. let cont b = protect trampolineHolder args.aux.econt finallyFunction () (fun () -> args.cont b) // The new exception continuation runs the finallyFunction and then runs the previous exception continuation. // If an exception is thrown we continue with the previous exception continuation. let econt exn = protect trampolineHolder args.aux.econt finallyFunction () (fun () -> args.aux.econt exn) // The cancellation continuation runs the finallyFunction and then runs the previous cancellation continuation. // If an exception is thrown we continue with the previous cancellation continuation (the exception is lost) let ccont cexn = protect trampolineHolder (fun _ -> args.aux.ccont cexn) finallyFunction () (fun () -> args.aux.ccont cexn) invokeA p { args with cont = cont; aux = { args.aux with econt = econt; ccont = ccont } }) // Re-route the exception continuation to call to catchFunction. If catchFunction or the new process fail // then call the original exception continuation with the failure. let tryWithA catchFunction p = unprotectedPrimitive (fun args -> if args.aux.token.IsCancellationRequested then cancelT args else let econt exn = invokeA (callA catchFunction exn) args invokeA p { args with aux = { args.aux with econt = econt } }) /// Send the given exception using the exception continuation let raiseA exn = unprotectedPrimitive (fun args -> errorT args (exn :> Exception)) /// Call the finallyFunction if the computation results in a cancellation let whenCancelledA (finallyFunction : OperationCanceledException -> unit) p = unprotectedPrimitive (fun ({ aux = aux } as args)-> let ccont exn = protect aux.trampolineHolder (fun _ -> aux.ccont exn) finallyFunction exn (fun _ -> aux.ccont exn) invokeA p { args with aux = { aux with ccont = ccont } }) let getCancellationToken() = unprotectedPrimitive (fun ({ aux = aux } as args) -> args.cont aux.token) let gettrampolineHolder() = unprotectedPrimitive (fun ({ aux = aux } as args) -> args.cont aux.trampolineHolder) /// Return a unit result let doneA = resultA() /// Implement use/Dispose let usingA (r:'T :> IDisposable) f = tryFinallyA (fun () -> r.Dispose()) (callA f r) let ignoreA p = bindA p (fun _ -> doneA) /// Implement the while loop let rec whileA gd prog = if gd() then bindA prog (fun () -> whileA gd prog) else doneA /// Implement the for loop let rec forA (e: seq<_>) prog = usingA (e.GetEnumerator()) (fun ie -> whileA (fun () -> ie.MoveNext()) (delayA(fun () -> prog ie.Current))) let sequentialA p1 p2 = bindA p1 (fun () -> p2) open AsyncBuilderImpl [] [] type AsyncBuilder() = member b.Zero() = doneA member b.Delay(f) = delayA(f) member b.Return(x) = resultA(x) member b.ReturnFrom(x:Async<_>) = x member b.Bind(p1, p2) = bindA p1 p2 member b.Using(g, p) = usingA g p member b.While(gd, prog) = whileA gd prog member b.For(e, prog) = forA e prog member b.Combine(p1, p2) = sequentialA p1 p2 member b.TryFinally(p, cf) = tryFinallyA cf p member b.TryWith(p, cf) = tryWithA cf p module AsyncImpl = let async = AsyncBuilder() //---------------------------------- // DERIVED SWITCH TO HELPERS #if FX_NO_SYNC_CONTEXT #else let switchTo (ctxt: SynchronizationContext) = protectedPrimitive(fun ({ aux = aux } as args) -> aux.trampolineHolder.Post ctxt (fun () -> args.cont () )) #endif let switchToNewThread() = protectedPrimitive(fun ({ aux = aux } as args) -> aux.trampolineHolder.StartThread (fun () -> args.cont () ) ) let switchToThreadPool() = protectedPrimitive(fun ({ aux = aux } as args) -> aux.trampolineHolder.QueueWorkItem (fun () -> args.cont ()) ) //---------------------------------- // DERIVED ASYNC RESYNC HELPERS let delimitContinuationsWith (delimiter : TrampolineHolder -> (unit -> FakeUnitValue) -> FakeUnitValue) ({ aux = aux } as args) = let trampolineHolder = aux.trampolineHolder { args with cont = (fun x -> delimiter trampolineHolder (fun () -> args.cont x)) aux = { aux with econt = (fun x -> delimiter trampolineHolder (fun () -> aux.econt x )); ccont = (fun x -> delimiter trampolineHolder (fun () -> aux.ccont x)) } } #if FX_NO_SYNC_CONTEXT let getSyncContext _ = null let delimitSyncContext args = args let postOrQueue _ (trampolineHolder:TrampolineHolder) f = trampolineHolder.QueueWorkItem f #else let getSyncContext () = System.Threading.SynchronizationContext.Current let postOrQueue (ctxt : SynchronizationContext) (trampolineHolder:TrampolineHolder) f = match ctxt with | null -> trampolineHolder.QueueWorkItem f | _ -> trampolineHolder.Post ctxt f let delimitSyncContext args = match getSyncContext () with | null -> args | ctxt -> let aux = args.aux let trampolineHolder = aux.trampolineHolder { args with cont = (fun x -> trampolineHolder.Post ctxt (fun () -> args.cont x)) aux = { aux with econt = (fun x -> trampolineHolder.Post ctxt (fun () -> aux.econt x )); ccont = (fun x -> trampolineHolder.Post ctxt (fun () -> aux.ccont x)) } } #endif // When run, ensures that each of the continuations of the process are run in the same synchronization context. let protectedPrimitiveWithResync f = protectedPrimitive(fun args -> let args = delimitSyncContext args f args) let unprotectedPrimitiveWithResync f = unprotectedPrimitive(fun args -> let args = delimitSyncContext args f args) [] [] type Latch() = let mutable i = 0 member this.Enter() = Interlocked.CompareExchange(&i, 1, 0) = 0 [] [] type Once() = let latch = Latch() member this.Do f = if latch.Enter() then f() [] [] type SuspendedAsync<'T>(args : AsyncParams<'T>) = let ctxt = getSyncContext () #if FX_NO_SYNC_CONTEXT #else let thread = match ctxt with | null -> null // saving a thread-local access | _ -> Thread.CurrentThread #endif let trampolineHolder = args.aux.trampolineHolder member this.ContinueImmediate res = let action () = args.cont res let inline executeImmediately () = trampolineHolder.Protect action #if FX_NO_SYNC_CONTEXT executeImmediately () #else let currentCtxt = System.Threading.SynchronizationContext.Current match ctxt, currentCtxt with | null, null -> executeImmediately () // See bug 370350; this logic is incorrect from the perspective of how SynchronizationContext is meant to work, // but the logic works for mainline scenarios (WinForms/WPF/ASP.NET) and we won't change it again. | _ when Object.Equals(ctxt, currentCtxt) && thread.Equals(Thread.CurrentThread) -> executeImmediately () | _ -> postOrQueue ctxt trampolineHolder action #endif member this.ContinueWithPostOrQueue res = postOrQueue ctxt trampolineHolder (fun () -> args.cont res) // A utility type to provide a synchronization point between an asynchronous computation // and callers waiting on the result of that computation. // // Use with care! [] [] type ResultCell<'T>() = let mutable result = None // The continuations for the result let mutable savedConts : list> = [] // The WaitHandle event for the result. Only created if needed, and set to null when disposed. let mutable resEvent = null let mutable disposed = false // All writers of result are protected by lock on syncRoot. let syncRoot = new Object() member x.GetWaitHandle() = lock syncRoot (fun () -> if disposed then raise (System.ObjectDisposedException("ResultCell")); match resEvent with | null -> // Start in signalled state if a result is already present. let ev = new ManualResetEvent(result.IsSome) resEvent <- ev (ev :> WaitHandle) | ev -> (ev :> WaitHandle)) member x.Close() = lock syncRoot (fun () -> if not disposed then disposed <- true; match resEvent with | null -> () | ev -> #if FX_EVENTWAITHANDLE_NO_IDISPOSABLE ev.Dispose() System.GC.SuppressFinalize(ev) #else ev.Close(); #endif resEvent <- null) interface IDisposable with member x.Dispose() = x.Close() // ; System.GC.SuppressFinalize(x) member x.GrabResult() = match result with | Some res -> res | None -> failwith "Unexpected no result" /// Record the result in the ResultCell. member x.RegisterResult (res:'T, reuseThread) = let grabbedConts = lock syncRoot (fun () -> // Ignore multiple sets of the result. This can happen, e.g. for a race between a cancellation and a success if x.ResultAvailable then [] // invalidOp "multiple results registered for asynchronous operation" else // In this case the ResultCell has already been disposed, e.g. due to a timeout. // The result is dropped on the floor. if disposed then [] else result <- Some res; // If the resEvent exists then set it. If not we can skip setting it altogether and it won't be // created match resEvent with | null -> () | ev -> // Setting the event need to happen under lock so as not to race with Close() ev.Set () |> ignore List.rev savedConts) // Run the action outside the lock match grabbedConts with | [] -> FakeUnit | [cont] -> if reuseThread then cont.ContinueImmediate(res) else cont.ContinueWithPostOrQueue(res) | otherwise -> otherwise |> List.iter (fun cont -> cont.ContinueWithPostOrQueue(res) |> unfake) |> fake member x.ResultAvailable = result.IsSome member x.AwaitResult = unprotectedPrimitive(fun args -> // Check if a result is available synchronously let resOpt = match result with | Some _ -> result | None -> lock syncRoot (fun () -> match result with | Some _ -> result | None -> // Otherwise save the continuation and call it in RegisterResult savedConts <- (SuspendedAsync<_>(args))::savedConts None ) match resOpt with | Some res -> args.cont res | None -> FakeUnit ) member x.TryWaitForResultSynchronously (?timeout) : 'T option = // Check if a result is available. match result with | Some _ as r -> r | None -> // Force the creation of the WaitHandle let resHandle = x.GetWaitHandle() // Check again. While we were in GetWaitHandle, a call to RegisterResult may have set result then skipped the // Set because the resHandle wasn't forced. match result with | Some _ as r -> r | None -> // OK, let's really wait for the Set signal. This may block. let timeout = defaultArg timeout Threading.Timeout.Infinite #if FX_NO_EXIT_CONTEXT_FLAGS #if FX_NO_WAITONE_MILLISECONDS let ok = resHandle.WaitOne(TimeSpan(int64(timeout)*10000L)) #else let ok = resHandle.WaitOne(millisecondsTimeout= timeout) #endif #else let ok = resHandle.WaitOne(millisecondsTimeout= timeout,exitContext=true) #endif if ok then // Now the result really must be available result else // timed out None open AsyncImpl type private Closure<'T>(f) = member x.Invoke(sender:obj, a:'T) : unit = ignore(sender); f(a) module CancellationTokenOps = /// Run the asynchronous workflow and wait for its result. let RunSynchronously (token:CancellationToken,computation,timeout) = let token,innerCTS = // If timeout is provided, we govern the async by our own CTS, to cancel // when execution times out. Otherwise, the user-supplied token governs the async. match timeout with | None -> token,None | Some _ -> let subSource = new LinkedSubSource(token) subSource.Token, Some subSource use resultCell = new ResultCell>() queueAsync token (fun res -> resultCell.RegisterResult(Ok(res),reuseThread=true)) (fun exn -> resultCell.RegisterResult(Error(exn),reuseThread=true)) (fun exn -> resultCell.RegisterResult(Canceled(exn),reuseThread=true)) computation |> unfake let res = resultCell.TryWaitForResultSynchronously(?timeout = timeout) in match res with | None -> // timed out // issue cancelaltion signal if innerCTS.IsSome then innerCTS.Value.Cancel() // wait for computation to quiesce; drop result on the floor resultCell.TryWaitForResultSynchronously() |> ignore // dispose the CancellationTokenSource if innerCTS.IsSome then innerCTS.Value.Dispose() raise (System.TimeoutException()) | Some res -> match innerCTS with | Some subSource -> subSource.Dispose() | None -> () commit res let Start (token:CancellationToken,computation) = queueAsync token (fun () -> FakeUnit) // nothing to do on success (fun e -> raise e) // raise exception in child (fun _ -> FakeUnit) // ignore cancellation in child computation |> unfake let StartWithContinuations(token:CancellationToken, a:Async<'T>, cont, econt, ccont) : unit = startAsync token (cont >> fake) (econt >> fake) (ccont >> fake) a |> ignore #if FX_NO_TASK #else type VolatileBarrier() = [] let mutable isStopped = false member __.Proceed = not isStopped member __.Stop() = isStopped <- true let StartAsTask (token:CancellationToken, computation : Async<_>,taskCreationOptions) : Task<_> = let taskCreationOptions = defaultArg taskCreationOptions TaskCreationOptions.None let tcs = new TaskCompletionSource<_>(taskCreationOptions) // The contract: // a) cancellation signal should always propagate to task // b) CancellationTokenSource that produced a token must not be disposed until the the task.IsComplete // We are: // 1) registering for cancellation signal here so that not to miss the signal // 2) disposing the registration just before setting result/exception on TaskCompletionSource - // otherwise we run a chance of disposing registration on already disposed CancellationTokenSource // (See (b) above) // 3) ensuring if reg is disposed, we do SetResult let barrier = VolatileBarrier() let reg = token.Register(fun _ -> if barrier.Proceed then tcs.SetCanceled()) let task = tcs.Task let disposeReg() = barrier.Stop() if not (task.IsCanceled) then reg.Dispose() let a = async { try let! result = computation do disposeReg() tcs.TrySetResult(result) |> ignore with | e -> disposeReg() tcs.TrySetException(e) |> ignore } Start(token, a) task #endif [] [] type Async = static member CancellationToken = getCancellationToken() static member CancelCheck () = doneA static member FromContinuations (f : ('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) : Async<'T> = unprotectedPrimitive (fun ({ aux = aux } as args) -> if args.aux.token.IsCancellationRequested then cancelT args else let underCurrentThreadStack = ref true let contToTailCall = ref None let thread = Thread.CurrentThread let latch = Latch() let once cont x = if not(latch.Enter()) then invalidOp(SR.GetString(SR.controlContinuationInvokedMultipleTimes)) if Thread.CurrentThread.Equals(thread) && !underCurrentThreadStack then contToTailCall := Some(fun () -> cont x) else if Trampoline.ThisThreadHasTrampoline then let ctxt = getSyncContext() postOrQueue ctxt aux.trampolineHolder (fun () -> cont x) |> unfake else aux.trampolineHolder.Protect (fun () -> cont x ) |> unfake try f (once args.cont, once aux.econt, once aux.ccont) with exn -> if not(latch.Enter()) then invalidOp(SR.GetString(SR.controlContinuationInvokedMultipleTimes)) aux.econt exn |> unfake underCurrentThreadStack := false match !contToTailCall with | Some k -> k() | _ -> FakeUnit ) static member DefaultCancellationToken = (!defaultCancellationTokenSource).Token static member CancelDefaultToken() = let cts = !defaultCancellationTokenSource cts.Cancel() defaultCancellationTokenSource := new CancellationTokenSource() // we do not dispose the old default CTS - let GC collect it static member Catch (p: Async<'T>) = unprotectedPrimitive (fun ({ aux = aux } as args) -> startA aux.token aux.trampolineHolder (Choice1Of2 >> args.cont) (Choice2Of2 >> args.cont) aux.ccont p) static member RunSynchronously (p: Async<'T>,?timeout,?cancellationToken:CancellationToken) = let timeout,token = match cancellationToken with | None -> timeout,(!defaultCancellationTokenSource).Token | Some token when not token.CanBeCanceled -> timeout, token | Some token -> None, token CancellationTokenOps.RunSynchronously(token, p, timeout) static member Start (computation, ?cancellationToken) = let token = defaultArg cancellationToken (!defaultCancellationTokenSource).Token CancellationTokenOps.Start (token, computation) #if FX_NO_TASK #else static member StartAsTask (computation,?taskCreationOptions,?cancellationToken)= let token = defaultArg cancellationToken (!defaultCancellationTokenSource).Token CancellationTokenOps.StartAsTask(token,computation,taskCreationOptions) static member StartChildAsTask (computation,?taskCreationOptions) = async { let! token = getCancellationToken() return CancellationTokenOps.StartAsTask(token,computation, taskCreationOptions) } #endif type Async with static member Parallel (l: seq>) = unprotectedPrimitive (fun args -> let tasks,result = try Seq.toArray l, None // manually protect eval of seq with exn -> null, Some(errorT args exn) match result with | Some r -> r | None -> if tasks.Length = 0 then args.cont [| |] else // must not be in a 'protect' if we call cont explicitly; if cont throws, it should unwind the stack, preserving Dev10 behavior protectedPrimitiveCore args (fun args -> let ({ aux = aux } as args) = delimitSyncContext args // manually resync let count = ref tasks.Length let firstExn = ref None let results = Array.zeroCreate tasks.Length // Attept to cancel the individual operations if an exception happens on any the other threads //let failureCTS = new CancellationTokenSource() let innerCTS = new LinkedSubSource(aux.token) let trampolineHolder = aux.trampolineHolder let finishTask(remaining) = if (remaining=0) then match (!firstExn) with | None -> trampolineHolder.Protect(fun () -> args.cont results) | Some (Choice1Of2 exn) -> trampolineHolder.Protect(fun () -> aux.econt exn) | Some (Choice2Of2 cexn) -> trampolineHolder.Protect(fun () -> aux.ccont cexn) else FakeUnit // recordSuccess and recordFailure between them decrement count to 0 and // as soon as 0 is reached dispose innerCancellationSource let recordSuccess i res = results.[i] <- res; let remaining = lock count (fun () -> decr count; if !count = 0 then innerCTS.Dispose() !count) finishTask(remaining) let recordFailure exn = let remaining = lock count (fun () -> decr count; match !firstExn with | None -> firstExn := Some exn // save the cancellation as the first exception | _ -> () if !count = 0 then innerCTS.Dispose() else innerCTS.Cancel() !count) finishTask(remaining) tasks |> Array.iteri (fun i p -> queueAsync innerCTS.Token // on success, record the result (fun res -> recordSuccess i res) // on exception... (fun exn -> recordFailure (Choice1Of2 exn)) // on cancellation... (fun cexn -> recordFailure (Choice2Of2 cexn)) p |> unfake); FakeUnit)) #if FX_NO_REGISTERED_WAIT_HANDLES [] [] type internal WaitHandleIAsyncResult(wh : WaitHandle) = interface System.IAsyncResult with member this.AsyncState = null member this.AsyncWaitHandle = wh member this.IsCompleted = #if FX_NO_WAITONE_MILLISECONDS wh.WaitOne(TimeSpan(0L)) #else wh.WaitOne(0,exitContext=false) #endif member this.CompletedSynchronously = false // always reschedule #endif type Async with static member StartWithContinuations(a:Async<'T>,cont,econt,ccont,?cancellationToken) : unit = let token = defaultArg cancellationToken (!defaultCancellationTokenSource).Token CancellationTokenOps.StartWithContinuations(token, a,cont,econt,ccont) static member StartImmediate(a:Async,?cancellationToken) : unit = Async.StartWithContinuations(a,id,raise,ignore,?cancellationToken=cancellationToken) static member Sleep(dueTime) : Async = unprotectedPrimitiveWithResync (fun ({ aux = aux } as args) -> let timer = ref (None : Timer option) let savedCont = args.cont let savedCCont = aux.ccont let latch = new Latch() let registration = aux.token.Register( (fun _ -> if latch.Enter() then match !timer with | None -> () | Some t -> t.Dispose() aux.trampolineHolder.Protect(fun () -> savedCCont(new OperationCanceledException())) |> unfake ), null) let mutable the_exn = null try timer := new Timer((fun _ -> if latch.Enter() then // NOTE: If the CTS for the token would have been disposed, disposal of the registration would throw // However, our contract is that until async computation ceases execution (and invokes ccont) // the CTS will not be disposed. Execution of savedCCont is guarded by latch, so we are safe unless // user violates the contract. registration.Dispose() // Try to Dispose of the TImer. // Note: there is a race here: the System.Threading.Timer time very occasionally // calls the callback _before_ the timer object has been recorded anywhere. This makes it difficult to dispose the // timer in this situation. In this case we just let the timer be collected by finalization. match !timer with | None -> () | Some t -> t.Dispose() // Now we're done, so call the continuation aux.trampolineHolder.Protect (fun () -> savedCont()) |> unfake), null, dueTime=dueTime, period = -1) |> Some with exn -> if latch.Enter() then the_exn <- exn // post exception to econt only if we successfully enter the latch (no other continuations were called) match the_exn with | null -> FakeUnit | exn -> aux.econt exn ) static member AwaitWaitHandle(waitHandle:WaitHandle,?millisecondsTimeout:int) = let millisecondsTimeout = defaultArg millisecondsTimeout Threading.Timeout.Infinite if millisecondsTimeout = 0 then async.Delay(fun () -> #if FX_NO_EXIT_CONTEXT_FLAGS #if FX_NO_WAITONE_MILLISECONDS let ok = waitHandle.WaitOne(TimeSpan(0L)) #else let ok = waitHandle.WaitOne(0) #endif #else let ok = waitHandle.WaitOne(0,exitContext=false) #endif async.Return ok) else #if FX_NO_REGISTERED_WAIT_HANDLES protectedPrimitiveWithResync(fun ({ aux = aux } as args) -> // The .NET Compact Framework doesn't support RegisterWaitForSingleObject // Latch is used to protect entrance to the cancelHandler/actual continuation/error continuation let latch = Latch() let scont = args.cont let ccont = aux.ccont // cancel action let cancel e = if latch.Enter() then Async.Start (async { do (ccont e |> unfake) }) // register cancellation handler let registration = aux.token.Register((fun _ -> cancel (OperationCanceledException())), null) // run actual await routine // callback will be executed on the thread pool so we need to use TrampolineHolder.Protect to install trampoline try #if FX_NO_TASK ThreadPool.QueueUserWorkItem((fun _ -> let asyncResult = WaitHandleIAsyncResult(waitHandle) :> System.IAsyncResult if asyncResult.IsCompleted then if latch.Enter() then registration.Dispose() aux.trampolineHolder.Protect(fun () -> scont true) |> unfake ), null) |> ignore #else Task.Factory.FromAsync ( WaitHandleIAsyncResult(waitHandle), fun _ -> if latch.Enter() then registration.Dispose() aux.trampolineHolder.Protect(fun () -> scont true) |> unfake ) |> ignore #endif // if user has specified timeout different from Timeout.Infinite // then start another async to track timeout expiration // StartWithContinuations already installs trampoline so we can invoke continuation directly if millisecondsTimeout <> Timeout.Infinite then Async.StartWithContinuations ( a = (Async.Sleep millisecondsTimeout), cont = (fun () -> if latch.Enter() then registration.Dispose() scont false |> unfake), econt = ignore, // we do not expect exceptions here ccont = cancel, cancellationToken = aux.token ) FakeUnit with e -> if latch.Enter() then registration.Dispose() reraise() // exception will be intercepted by try..with in protectedPrimitiveWithResync else FakeUnit ) #else protectedPrimitiveWithResync(fun ({ aux = aux } as args) -> let rwh = ref (None : RegisteredWaitHandle option) let latch = Latch() let rec cancelHandler = Action(fun _ -> if latch.Enter() then // if we got here - then we need to unregister RegisteredWaitHandle + trigger cancellation // entrance to TP callback is protected by latch - so savedCont will never be called match !rwh with | None -> () | Some rwh -> rwh.Unregister(null) |> ignore Async.Start (async { do (aux.ccont (OperationCanceledException()) |> unfake) })) and registration : CancellationTokenRegistration= aux.token.Register(cancelHandler, null) let savedCont = args.cont try rwh := Some(ThreadPool.RegisterWaitForSingleObject (waitObject=waitHandle, callBack=WaitOrTimerCallback(fun _ timeOut -> if latch.Enter() then rwh := None registration.Dispose() aux.trampolineHolder.Protect (fun () -> savedCont (not timeOut)) |> unfake), state=null, millisecondsTimeOutInterval=millisecondsTimeout, executeOnlyOnce=true)); FakeUnit with _ -> if latch.Enter() then reraise() // reraise exception only if we successfully enter the latch (no other continuations were called) else FakeUnit ) #endif static member AwaitIAsyncResult(iar: IAsyncResult, ?millisecondsTimeout): Async = async { if iar.CompletedSynchronously then return true else return! Async.AwaitWaitHandle(iar.AsyncWaitHandle, ?millisecondsTimeout=millisecondsTimeout) } /// Await the result of a result cell without a timeout static member ReifyResult(result:Result<'T>) : Async<'T> = unprotectedPrimitive(fun ({ aux = aux } as args) -> (match result with | Ok v -> args.cont v | Error exn -> aux.econt exn | Canceled exn -> aux.ccont exn) ) /// Await the result of a result cell without a timeout static member AwaitAndReifyResult(resultCell:ResultCell>) : Async<'T> = async { let! result = resultCell.AwaitResult return! Async.ReifyResult(result) } /// Await the result of a result cell without a timeout /// /// Always resyncs to the synchronization context if needed, by virtue of it being built /// from primitives which resync. static member AsyncWaitAsyncWithTimeout(innerCTS : CancellationTokenSource, resultCell:ResultCell>,millisecondsTimeout) : Async<'T> = match millisecondsTimeout with | None | Some -1 -> resultCell |> Async.AwaitAndReifyResult | Some 0 -> async { if resultCell.ResultAvailable then return commit (resultCell.GrabResult()) else return commitWithPossibleTimeout None } | _ -> async { try if resultCell.ResultAvailable then return commit (resultCell.GrabResult()) else let! ok = Async.AwaitWaitHandle (resultCell.GetWaitHandle(),?millisecondsTimeout=millisecondsTimeout) if ok then return commitWithPossibleTimeout (Some (resultCell.GrabResult())) else // timed out // issue cancellation signal innerCTS.Cancel() // wait for computation to queisce let! _ = Async.AwaitWaitHandle (resultCell.GetWaitHandle()) return commitWithPossibleTimeout None finally resultCell.Close() } static member FromBeginEnd(beginAction,endAction,?cancelAction): Async<'T> = async { let! cancellationToken = getCancellationToken() let resultCell = new ResultCell<_>() let once = Once() let registration : CancellationTokenRegistration = let onCancel (_:obj) = // Call the cancellation routine match cancelAction with | None -> // Register the result. This may race with a sucessful result, but // ResultCell allows a race and throws away whichever comes last. once.Do(fun () -> let canceledResult = Canceled (OperationCanceledException()) resultCell.RegisterResult(canceledResult,reuseThread=true) |> unfake ) | Some cancel -> // If we get an exception from a cooperative cancellation function // we assume the operation has already completed. try cancel() with _ -> () cancellationToken.Register(Action(onCancel), null) let callback = new System.AsyncCallback(fun iar -> if not iar.CompletedSynchronously then // The callback has been activated, so ensure cancellation is not possible // beyond this point. match cancelAction with | Some _ -> registration.Dispose() | None -> once.Do(fun () -> registration.Dispose()) // Run the endAction and collect its result. let res = try Ok(endAction iar) with e -> Error(e) // Register the result. This may race with a cancellation result, but // ResultCell allows a race and throws away whichever comes last. resultCell.RegisterResult(res,reuseThread=true) |> unfake else ()) let (iar:IAsyncResult) = beginAction (callback,(null:obj)) if iar.CompletedSynchronously then registration.Dispose() return endAction iar else return! Async.AwaitAndReifyResult(resultCell) } static member FromBeginEnd(arg1,beginAction,endAction,?cancelAction): Async<'T> = Async.FromBeginEnd((fun (iar,state) -> beginAction(arg1,iar,state)), endAction, ?cancelAction=cancelAction) static member FromBeginEnd(arg1,arg2,beginAction,endAction,?cancelAction): Async<'T> = Async.FromBeginEnd((fun (iar,state) -> beginAction(arg1,arg2,iar,state)), endAction, ?cancelAction=cancelAction) static member FromBeginEnd(arg1,arg2,arg3,beginAction,endAction,?cancelAction): Async<'T> = Async.FromBeginEnd((fun (iar,state) -> beginAction(arg1,arg2,arg3,iar,state)), endAction, ?cancelAction=cancelAction) [] [] type AsyncIAsyncResult<'T>(callback: System.AsyncCallback,state:obj) = // This gets set to false if the result is not available by the // time the IAsyncResult is returned to the caller of Begin let mutable completedSynchronously = true let mutable disposed = false let cts = new CancellationTokenSource() let result = new ResultCell>() member s.SetResult(v: Result<'T>) = result.RegisterResult(v,reuseThread=true) |> unfake match callback with | null -> () | d -> // The IASyncResult becomes observable here d.Invoke (s :> System.IAsyncResult) member s.GetResult() = match result.TryWaitForResultSynchronously (-1) with | Some (Ok v) -> v | Some (Error err) -> raise err | Some (Canceled err) -> raise err | None -> failwith "unreachable" member x.IsClosed = disposed member x.Close() = if not disposed then disposed <- true cts.Dispose() result.Close() member x.Token = cts.Token member x.CancelAsync() = cts.Cancel() member x.CheckForNotSynchronous() = if not result.ResultAvailable then completedSynchronously <- false interface System.IAsyncResult with member x.IsCompleted = result.ResultAvailable member x.CompletedSynchronously = completedSynchronously member x.AsyncWaitHandle = result.GetWaitHandle() member x.AsyncState = state interface System.IDisposable with member x.Dispose() = x.Close() module AsBeginEndHelpers = let beginAction(computation,callback,state) = let aiar = new AsyncIAsyncResult<'T>(callback,state) let cont v = aiar.SetResult (Ok v) let econt v = aiar.SetResult (Error v) let ccont v = aiar.SetResult (Canceled v) CancellationTokenOps.StartWithContinuations(aiar.Token,computation,cont,econt,ccont) aiar.CheckForNotSynchronous() (aiar :> IAsyncResult) let endAction<'T> (iar:IAsyncResult) = match iar with | :? AsyncIAsyncResult<'T> as aiar -> if aiar.IsClosed then raise (System.ObjectDisposedException("AsyncResult")) else let res = aiar.GetResult() aiar.Close () res | _ -> invalidArg "iar" (SR.GetString(SR.mismatchIAREnd)) let cancelAction<'T>(iar:IAsyncResult) = match iar with | :? AsyncIAsyncResult<'T> as aiar -> aiar.CancelAsync() | _ -> invalidArg "iar" (SR.GetString(SR.mismatchIARCancel)) type Async with static member AsBeginEnd<'Arg,'T> (computation:('Arg -> Async<'T>)) : // The 'Begin' member ('Arg * System.AsyncCallback * obj -> System.IAsyncResult) * // The 'End' member (System.IAsyncResult -> 'T) * // The 'Cancel' member (System.IAsyncResult -> unit) = let beginAction = fun (a1,callback,state) -> AsBeginEndHelpers.beginAction ((computation a1), callback, state) beginAction, AsBeginEndHelpers.endAction<'T>, AsBeginEndHelpers.cancelAction<'T> #if FX_NO_CREATE_DELEGATE #else static member AwaitEvent(event:IEvent<'Delegate,'T>, ?cancelAction) : Async<'T> = async { let! token = getCancellationToken() let resultCell = new ResultCell<_>() // Set up the handlers to listen to events and cancellation let once = new Once() let rec registration : CancellationTokenRegistration= let onCancel _ = // We've been cancelled. Call the given cancellation routine match cancelAction with | None -> // We've been cancelled without a cancel action. Stop listening to events event.RemoveHandler(del) // Register the result. This may race with a sucessful result, but // ResultCell allows a race and throws away whichever comes last. once.Do(fun () -> resultCell.RegisterResult(Canceled (OperationCanceledException()),reuseThread=true) |> unfake) | Some cancel -> // If we get an exception from a cooperative cancellation function // we assume the operation has already completed. try cancel() with _ -> () token.Register(Action(onCancel), null) and obj = new Closure<'T>(fun eventArgs -> // Stop listening to events event.RemoveHandler(del) // The callback has been activated, so ensure cancellation is not possible beyond this point once.Do(fun () -> registration.Dispose()) let res = Ok(eventArgs) // Register the result. This may race with a cancellation result, but // ResultCell allows a race and throws away whichever comes last. resultCell.RegisterResult(res,reuseThread=true) |> unfake) and del = #if FX_ATLEAST_PORTABLE let invokeMeth = (typeof>).GetMethod("Invoke", System.Reflection.BindingFlags.NonPublic ||| System.Reflection.BindingFlags.Public ||| System.Reflection.BindingFlags.Instance) System.Delegate.CreateDelegate(typeof<'Delegate>, obj, invokeMeth) :?> 'Delegate #else System.Delegate.CreateDelegate(typeof<'Delegate>, obj, "Invoke") :?> 'Delegate #endif // Start listening to events event.AddHandler(del) // Return the async computation that allows us to await the result return! Async.AwaitAndReifyResult(resultCell) } #endif type Async with static member Ignore (p: Async<'T>) = bindA p (fun _ -> doneA) static member SwitchToNewThread() = switchToNewThread() static member SwitchToThreadPool() = switchToThreadPool() type Async with static member StartChild (computation:Async<'T>,?millisecondsTimeout) = async { let resultCell = new ResultCell<_>() let! ct = getCancellationToken() let innerCTS = new CancellationTokenSource() // innerCTS does not require disposal let ctsRef = ref innerCTS let reg = ct.Register( (fun _ -> match !ctsRef with | null -> () | otherwise -> otherwise.Cancel()), null) do queueAsync innerCTS.Token // since innerCTS is not ever Disposed, can call reg.Dispose() without a safety Latch (fun res -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Ok res, reuseThread=true)) (fun err -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Error err,reuseThread=true)) (fun err -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Canceled err,reuseThread=true)) computation |> unfake return Async.AsyncWaitAsyncWithTimeout(innerCTS, resultCell,millisecondsTimeout) } #if FX_NO_SYNC_CONTEXT #else static member SwitchToContext syncContext = async { match syncContext with | null -> // no synchronization context, just switch to the thread pool do! Async.SwitchToThreadPool() | ctxt -> // post the continuation to the synchronization context return! switchTo ctxt } #endif static member OnCancel action = async { let! ct = getCancellationToken () // latch protects CancellationTokenRegistration.Dispose from being called twice let latch = Latch() let rec handler (_ : obj) = try if latch.Enter() then registration.Dispose() action () with _ -> () and registration : CancellationTokenRegistration = ct.Register(Action(handler), null) return { new System.IDisposable with member this.Dispose() = // dispose CancellationTokenRegistration only if cancellation was not requested. // otherwise - do nothing, disposal will be performed by the handler itself if not ct.IsCancellationRequested then if latch.Enter() then registration.Dispose() } } static member TryCancelled (p: Async<'T>,f) = whenCancelledA f p #if FX_NO_TASK #else static member AwaitTask (task:Task<'T>) : Async<'T> = protectedPrimitiveWithResync(fun ({aux = aux} as args) -> let continuation (completedTask : Task<_>) : unit = aux.trampolineHolder.Protect((fun () -> if completedTask.IsCanceled then aux.ccont (new OperationCanceledException()) elif completedTask.IsFaulted then aux.econt (upcast completedTask.Exception) else args.cont completedTask.Result)) |> unfake task.ContinueWith(Action>(continuation), TaskContinuationOptions.None) |> ignore |> fake ) #endif module CommonExtensions = open AsyncBuilderImpl type System.IO.Stream with [] // give the extension member a 'nice', unmangled compiled name, unique within this module member stream.AsyncRead(buffer: byte[],?offset,?count) = let offset = defaultArg offset 0 let count = defaultArg count buffer.Length Async.FromBeginEnd (buffer,offset,count,stream.BeginRead,stream.EndRead) [] // give the extension member a 'nice', unmangled compiled name, unique within this module member stream.AsyncRead(count) = async { let buffer = Array.zeroCreate count let i = ref 0 while !i < count do let! n = stream.AsyncRead(buffer,!i,count - !i) i := !i + n if n = 0 then raise(System.IO.EndOfStreamException(SR.GetString(SR.failedReadEnoughBytes))) return buffer } [] // give the extension member a 'nice', unmangled compiled name, unique within this module member stream.AsyncWrite(buffer:byte[], ?offset:int, ?count:int) = let offset = defaultArg offset 0 let count = defaultArg count buffer.Length Async.FromBeginEnd (buffer,offset,count,stream.BeginWrite,stream.EndWrite) type System.Threading.WaitHandle with member waitHandle.AsyncWaitOne(?millisecondsTimeout:int) = // only used internally, not a public API Async.AwaitWaitHandle(waitHandle,?millisecondsTimeout=millisecondsTimeout) type IObservable<'Args> with [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.Add(f: 'Args -> unit) = x.Subscribe f |> ignore [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.Subscribe(f) = x.Subscribe { new IObserver<'Args> with member x.OnNext(args) = f args member x.OnError(e) = () member x.OnCompleted() = () } module WebExtensions = open AsyncBuilderImpl #if FX_NO_WEB_REQUESTS #else type System.Net.WebRequest with [] // give the extension member a 'nice', unmangled compiled name, unique within this module member req.AsyncGetResponse() : Async= async { let canceled = ref false // WebException with Status = WebExceptionStatus.RequestCanceled can be raised in other situations except cancellation, use flag to filter out false positives try // Note that we specify req.Abort as the cancelAction. If successful, this will cause // a WebExceptionStatus.RequestCanceled to be raised from the web request. return! Async.FromBeginEnd(beginAction=req.BeginGetResponse, endAction = req.EndGetResponse, cancelAction = fun() -> canceled := true; req.Abort()) with | :? System.Net.WebException as webExn when webExn.Status = System.Net.WebExceptionStatus.RequestCanceled && !canceled -> return! Async.ReifyResult(Result.Canceled (OperationCanceledException webExn.Message)) } #endif #if FX_NO_WEB_CLIENT #else type System.Net.WebClient with [] // give the extension member a 'nice', unmangled compiled name, unique within this module member this.AsyncDownloadString (address:Uri) : Async = let downloadAsync = Async.FromContinuations (fun (cont, econt, ccont) -> let userToken = new obj() let rec handler = System.Net.DownloadStringCompletedEventHandler (fun _ args -> if userToken = args.UserState then this.DownloadStringCompleted.RemoveHandler(handler) if args.Cancelled then ccont (new OperationCanceledException()) elif args.Error <> null then econt args.Error else cont args.Result) this.DownloadStringCompleted.AddHandler(handler) this.DownloadStringAsync(address, userToken) ) async { use! _holder = Async.OnCancel(fun _ -> this.CancelAsync()) return! downloadAsync } #endif open CommonExtensions module AsyncHelpers = let awaitEither a1 a2 = async { let c = new ResultCell<_>() let! ct = Async.CancellationToken let start a f = Async.StartWithContinuations(a, (fun res -> c.RegisterResult(f res |> Result.Ok, reuseThread=false) |> unfake), (fun e -> c.RegisterResult(e |> Result.Error, reuseThread=false) |> unfake), (fun oce -> c.RegisterResult(oce |> Result.Canceled, reuseThread=false) |> unfake), cancellationToken = ct ) start a1 Choice1Of2 start a2 Choice2Of2 let! result = c.AwaitResult return! reify result } let timeout msec cancellationToken = if msec < 0 then unprotectedPrimitive(fun _ -> FakeUnit) // "block" forever else let c = new ResultCell<_>() Async.StartWithContinuations(Async.Sleep(msec), (fun () -> c.RegisterResult((), reuseThread = false) |> unfake), (fun _ -> ()), (fun _ -> ()), cancellationToken = cancellationToken) c.AwaitResult [] [] type Mailbox<'Msg>() = let mutable inboxStore = null let mutable arrivals = new Queue<'Msg>() let syncRoot = arrivals // Control elements indicating the state of the reader. When the reader is "blocked" at an // asynchronous receive, either // -- "cont" is non-null and the reader is "activated" by re-scheduling cont in the thread pool; or // -- "pulse" is non-null and the reader is "activated" by setting this event let mutable savedCont : ((bool -> FakeUnitValue) * TrampolineHolder) option = None let mutable pulse : AutoResetEvent = null let ensurePulse() = match pulse with | null -> pulse <- new AutoResetEvent(false); | _ -> () pulse let waitOneNoTimeout = unprotectedPrimitive (fun ({ aux = aux } as args) -> match savedCont with | None -> let descheduled = // An arrival may have happened while we're preparing to deschedule lock syncRoot (fun () -> if arrivals.Count = 0 then // OK, no arrival so deschedule savedCont <- Some(args.cont, aux.trampolineHolder); true else false) if descheduled then FakeUnit else // If we didn't deschedule then run the continuation immediately args.cont true | Some _ -> failwith "multiple waiting reader continuations for mailbox") let waitOne(timeout) = if timeout < 0 then waitOneNoTimeout else ensurePulse().AsyncWaitOne(millisecondsTimeout=timeout) member x.inbox = match inboxStore with | null -> inboxStore <- new System.Collections.Generic.List<'Msg>(1) // ResizeArray | _ -> () inboxStore member x.CurrentQueueLength = lock syncRoot (fun () -> x.inbox.Count + arrivals.Count) member x.scanArrivalsUnsafe(f) = if arrivals.Count = 0 then None else let msg = arrivals.Dequeue() match f msg with | None -> x.inbox.Add(msg); x.scanArrivalsUnsafe(f) | res -> res // Lock the arrivals queue while we scan that member x.scanArrivals(f) = lock syncRoot (fun () -> x.scanArrivalsUnsafe(f)) member x.scanInbox(f,n) = match inboxStore with | null -> None | inbox -> if n >= inbox.Count then None else let msg = inbox.[n] match f msg with | None -> x.scanInbox (f,n+1) | res -> inbox.RemoveAt(n); res member x.receiveFromArrivalsUnsafe() = if arrivals.Count = 0 then None else Some(arrivals.Dequeue()) member x.receiveFromArrivals() = lock syncRoot (fun () -> x.receiveFromArrivalsUnsafe()) member x.receiveFromInbox() = match inboxStore with | null -> None | inbox -> if inbox.Count = 0 then None else let x = inbox.[0] inbox.RemoveAt(0); Some(x) member x.Post(msg) = lock syncRoot (fun () -> arrivals.Enqueue(msg); // This is called when we enqueue a message, within a lock // We cooperatively unblock any waiting reader. If there is no waiting // reader we just leave the message in the incoming queue match savedCont with | None -> match pulse with | null -> () // no one waiting, leaving the message in the queue is sufficient | ev -> // someone is waiting on the wait handle ev.Set() |> ignore | Some(action,trampolineHolder) -> savedCont <- None trampolineHolder.QueueWorkItem(fun () -> action true) |> unfake) member x.TryScan ((f: 'Msg -> (Async<'T>) option), timeout) : Async<'T option> = let rec scan timeoutAsync (timeoutCts:CancellationTokenSource) = async { match x.scanArrivals(f) with | None -> // Deschedule and wait for a message. When it comes, rescan the arrivals let! ok = AsyncHelpers.awaitEither waitOneNoTimeout timeoutAsync match ok with | Choice1Of2 true -> return! scan timeoutAsync timeoutCts | Choice1Of2 false -> return failwith "should not happen - waitOneNoTimeout always returns true" | Choice2Of2 () -> lock syncRoot (fun () -> // Cancel the outstanding wait for messages installed by waitOneNoTimeout // // HERE BE DRAGONS. This is bestowed on us because we only support // a single mailbox reader at any one time. // If awaitEither returned control because timeoutAsync has terminated, waitOneNoTimeout // might still be in-flight. In practical terms, it means that the push-to-async-result-cell // continuation that awaitEither registered on it is still pending, i.e. it is still in savedCont. // That continuation is a no-op now, but it is still a registered reader for arriving messages. // Therefore we just abandon it - a brutal way of canceling. // This ugly non-compositionality is only needed because we only support a single mailbox reader // (i.e. the user is not allowed to run several Recieve/TryRecieve/Scan/TryScan in parallel) - otherwise // we would just have an extra no-op reader in the queue. savedCont <- None) return None | Some resP -> timeoutCts.Cancel() // cancel the timeout watcher let! res = resP return Some res } let rec scanNoTimeout () = async { match x.scanArrivals(f) with | None -> let! ok = waitOneNoTimeout if ok then return! scanNoTimeout() else return (failwith "Timed out with infinite timeout??") | Some resP -> let! res = resP return Some res } // Look in the inbox first async { match x.scanInbox(f,0) with | None when timeout < 0 -> return! scanNoTimeout() | None -> let! ct = Async.CancellationToken let timeoutCts = CancellationTokenSource.CreateLinkedTokenSource(ct, CancellationToken.None) let timeoutAsync = AsyncHelpers.timeout timeout timeoutCts.Token return! scan timeoutAsync timeoutCts | Some resP -> let! res = resP return Some res } member x.Scan((f: 'Msg -> (Async<'T>) option), timeout) = async { let! resOpt = x.TryScan(f,timeout) match resOpt with | None -> return raise(TimeoutException(SR.GetString(SR.mailboxScanTimedOut))) | Some res -> return res } member x.TryReceive(timeout) = let rec processFirstArrival() = async { match x.receiveFromArrivals() with | None -> // Wait until we have been notified about a message. When that happens, rescan the arrivals let! ok = waitOne(timeout) if ok then return! processFirstArrival() else return None | res -> return res } // look in the inbox first async { match x.receiveFromInbox() with | None -> return! processFirstArrival() | res -> return res } member x.Receive(timeout) = let rec processFirstArrival() = async { match x.receiveFromArrivals() with | None -> // Wait until we have been notified about a message. When that happens, rescan the arrivals let! ok = waitOne(timeout) if ok then return! processFirstArrival() else return raise(TimeoutException(SR.GetString(SR.mailboxReceiveTimedOut))) | Some res -> return res } // look in the inbox first async { match x.receiveFromInbox() with | None -> return! processFirstArrival() | Some res -> return res } interface System.IDisposable with member x.Dispose() = if pulse <> null then (pulse :> IDisposable).Dispose() #if DEBUG member x.UnsafeContents = (x.inbox,arrivals,pulse,savedCont) |> box #endif [] [] type AsyncReplyChannel<'Reply>(replyf : 'Reply -> unit) = member x.Reply(reply) = replyf(reply) [] [] [] type MailboxProcessor<'Msg>(initial, ?cancellationToken) = let cancellationToken = defaultArg cancellationToken Async.DefaultCancellationToken let mailbox = new Mailbox<'Msg>() let mutable defaultTimeout = Threading.Timeout.Infinite let mutable started = false let errorEvent = new Event() member x.CurrentQueueLength = mailbox.CurrentQueueLength // nb. unprotected access gives an approximation of the queue length member x.DefaultTimeout with get() = defaultTimeout and set(v) = defaultTimeout <- v [] member x.Error = errorEvent.Publish #if DEBUG member x.UnsafeMessageQueueContents = mailbox.UnsafeContents #endif member x.Start() = if started then raise (new InvalidOperationException(SR.GetString(SR.mailboxProcessorAlreadyStarted))) else started <- true // Protect the execution and send errors to the event let p = async { try do! initial x with err -> errorEvent.Trigger err } Async.Start(computation=p, cancellationToken=cancellationToken) member x.Post(msg) = mailbox.Post(msg) member x.TryPostAndReply(msgf : (_ -> 'Msg), ?timeout) : 'Reply option = let timeout = defaultArg timeout defaultTimeout use resultCell = new ResultCell<_>() let msg = msgf (new AsyncReplyChannel<_>(fun reply -> // Note the ResultCell may have been disposed if the operation // timed out. In this case RegisterResult drops the result on the floor. resultCell.RegisterResult(reply,reuseThread=false) |> unfake)) mailbox.Post(msg) resultCell.TryWaitForResultSynchronously(timeout=timeout) member x.PostAndReply(msgf, ?timeout) : 'Reply = match x.TryPostAndReply(msgf,?timeout=timeout) with | None -> raise (TimeoutException(SR.GetString(SR.mailboxProcessorPostAndReplyTimedOut))) | Some res -> res member x.PostAndTryAsyncReply(msgf, ?timeout) : Async<'Reply option> = let timeout = defaultArg timeout defaultTimeout let resultCell = new ResultCell<_>() let msg = msgf (new AsyncReplyChannel<_>(fun reply -> // Note the ResultCell may have been disposed if the operation // timed out. In this case RegisterResult drops the result on the floor. resultCell.RegisterResult(reply,reuseThread=false) |> unfake)) mailbox.Post(msg) match timeout with | Threading.Timeout.Infinite -> async { let! result = resultCell.AwaitResult return Some(result) } | _ -> async { use _disposeCell = resultCell let! ok = resultCell.GetWaitHandle().AsyncWaitOne(millisecondsTimeout=timeout) let res = (if ok then Some(resultCell.GrabResult()) else None) return res } member x.PostAndAsyncReply(msgf, ?timeout:int) = let timeout = defaultArg timeout defaultTimeout match timeout with | Threading.Timeout.Infinite -> // Nothing to dispose, no wait handles used let resultCell = new ResultCell<_>() let msg = msgf (new AsyncReplyChannel<_>(fun reply -> resultCell.RegisterResult(reply,reuseThread=false) |> unfake)) mailbox.Post(msg) resultCell.AwaitResult | _ -> let asyncReply = x.PostAndTryAsyncReply(msgf,timeout=timeout) async { let! res = asyncReply match res with | None -> return! raise (TimeoutException(SR.GetString(SR.mailboxProcessorPostAndAsyncReplyTimedOut))) | Some res -> return res } member x.Receive(?timeout) = mailbox.Receive(timeout=defaultArg timeout defaultTimeout) member x.TryReceive(?timeout) = mailbox.TryReceive(timeout=defaultArg timeout defaultTimeout) member x.Scan(f: 'Msg -> (Async<'T>) option,?timeout) = mailbox.Scan(f,timeout=defaultArg timeout defaultTimeout) member x.TryScan(f: 'Msg -> (Async<'T>) option,?timeout) = mailbox.TryScan(f,timeout=defaultArg timeout defaultTimeout) interface System.IDisposable with member x.Dispose() = (mailbox :> IDisposable).Dispose() static member Start(initial,?cancellationToken) = let mb = new MailboxProcessor<'Msg>(initial,?cancellationToken=cancellationToken) mb.Start(); mb [] [] module Event = [] let create<'T>() = let ev = new Event<'T>() ev.Trigger, ev.Publish [] let map f (w: IEvent<'Delegate,'T>) = let ev = new Event<_>() w.Add(fun x -> ev.Trigger(f x)); ev.Publish [] let filter f (w: IEvent<'Delegate,'T>) = let ev = new Event<_>() w.Add(fun x -> if f x then ev.Trigger x); ev.Publish [] let partition f (w: IEvent<'Delegate,'T>) = let ev1 = new Event<_>() let ev2 = new Event<_>() w.Add(fun x -> if f x then ev1.Trigger x else ev2.Trigger x); ev1.Publish,ev2.Publish [] let choose f (w: IEvent<'Delegate,'T>) = let ev = new Event<_>() w.Add(fun x -> match f x with None -> () | Some r -> ev.Trigger r); ev.Publish [] let scan f z (w: IEvent<'Delegate,'T>) = let state = ref z let ev = new Event<_>() w.Add(fun msg -> let z = !state let z = f z msg state := z; ev.Trigger(z)); ev.Publish [] let add f (w: IEvent<'Delegate,'T>) = w.Add(f) [] let pairwise (inp : IEvent<'Delegate,'T>) : IEvent<'T * 'T> = let ev = new Event<'T * 'T>() let lastArgs = ref None inp.Add(fun args2 -> (match !lastArgs with | None -> () | Some args1 -> ev.Trigger(args1,args2)); lastArgs := Some args2); ev.Publish [] let merge (w1: IEvent<'Del1,'T>) (w2: IEvent<'Del2,'T>) = let ev = new Event<_>() w1.Add(fun x -> ev.Trigger(x)); w2.Add(fun x -> ev.Trigger(x)); ev.Publish [] let split (f : 'T -> Choice<'U1,'U2>) (w: IEvent<'Delegate,'T>) = let ev1 = new Event<_>() let ev2 = new Event<_>() w.Add(fun x -> match f x with Choice1Of2 y -> ev1.Trigger(y) | Choice2Of2 z -> ev2.Trigger(z)); ev1.Publish,ev2.Publish [] [] module Observable = let obs x = (x :> IObservable<_>) let inline protect f succeed fail = match (try Choice1Of2 (f ()) with e -> Choice2Of2 e) with | Choice1Of2 x -> (succeed x) | Choice2Of2 e -> (fail e) [] type BasicObserver<'T>() = let mutable stopped = false abstract Next : value : 'T -> unit abstract Error : error : exn -> unit abstract Completed : unit -> unit interface IObserver<'T> with member x.OnNext value = if not stopped then x.Next value member x.OnError e = if not stopped then stopped <- true x.Error e member x.OnCompleted () = if not stopped then stopped <- true x.Completed () (* type AutoDetachObserver<'T>(o : IObserver<'T>, s : IObservable) = inherit BasicObserver<'T>() override x.Next v = o.OnNext v override x.Error e = o.OnError e s.Add (fun d -> d.Dispose()) override x.Completed () = o.OnCompleted () s.Add (fun d -> d.Dispose()) type MyObservable<'T>() = abstract MySubscribe : observer : IObserver<'T> -> System.IDisposable interface IObservable<'T> member x.Subscribe o = let (t, s) = create () let ado = new AutoDetachObserver<'T>(o, s) let d = x.MySubscribe ado t d d *) [] let map f (w: IObservable<'T>) = { new IObservable<'U> with member x.Subscribe(observer) = w.Subscribe { new BasicObserver<'T>() with member x.Next(v) = protect (fun () -> f v) observer.OnNext observer.OnError member x.Error(e) = observer.OnError(e) member x.Completed() = observer.OnCompleted() } } [] let choose f (w: IObservable<'T>) = { new IObservable<'U> with member x.Subscribe(observer) = w.Subscribe { new BasicObserver<'T>() with member x.Next(v) = protect (fun () -> f v) (function None -> () | Some v2 -> observer.OnNext v2) observer.OnError member x.Error(e) = observer.OnError(e) member x.Completed() = observer.OnCompleted() } } [] let filter f (w: IObservable<'T>) = choose (fun x -> if f x then Some x else None) w [] let partition f (w: IObservable<'T>) = filter f w, filter (f >> not) w [] let scan f z (w: IObservable<'T>) = { new IObservable<'U> with member x.Subscribe(observer) = let state = ref z w.Subscribe { new BasicObserver<'T>() with member x.Next(v) = let z = !state protect (fun () -> f z v) (fun z -> state := z observer.OnNext z) observer.OnError member x.Error(e) = observer.OnError(e) member x.Completed() = observer.OnCompleted() } } [] let add f (w: IObservable<'T>) = w.Add(f) [] let subscribe (f: 'T -> unit) (w: IObservable<'T>) = w.Subscribe(f) [] let pairwise (w : IObservable<'T>) : IObservable<'T * 'T> = { new IObservable<_> with member x.Subscribe(observer) = let lastArgs = ref None w.Subscribe { new BasicObserver<'T>() with member x.Next(args2) = match !lastArgs with | None -> () | Some args1 -> observer.OnNext (args1,args2) lastArgs := Some args2 member x.Error(e) = observer.OnError(e) member x.Completed() = observer.OnCompleted() } } [] let merge (w1: IObservable<'T>) (w2: IObservable<'T>) = { new IObservable<_> with member x.Subscribe(observer) = let stopped = ref false let completed1 = ref false let completed2 = ref false let h1 = w1.Subscribe { new IObserver<'T> with member x.OnNext(v) = if not !stopped then observer.OnNext v member x.OnError(e) = if not !stopped then stopped := true; observer.OnError(e) member x.OnCompleted() = if not !stopped then completed1 := true; if !completed1 && !completed2 then stopped := true observer.OnCompleted() } let h2 = w2.Subscribe { new IObserver<'T> with member x.OnNext(v) = if not !stopped then observer.OnNext v member x.OnError(e) = if not !stopped then stopped := true; observer.OnError(e) member x.OnCompleted() = if not !stopped then completed2 := true; if !completed1 && !completed2 then stopped := true observer.OnCompleted() } { new IDisposable with member x.Dispose() = h1.Dispose(); h2.Dispose() } } [] let split (f : 'T -> Choice<'U1,'U2>) (w: IObservable<'T>) = choose (fun v -> match f v with Choice1Of2 x -> Some x | _ -> None) w, choose (fun v -> match f v with Choice2Of2 x -> Some x | _ -> None) w fsharp-3.0.34/src/fsharp/FSharp.Core/list.fsi0000775000175000017500000010537212260314606017705 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Basic operations on lists. [] [] module List = /// Returns a new list that contains the elements of the first list /// followed by elements of the second. /// The first input list. /// The second input list. /// The resulting list. [] val append: list1:'T list -> list2:'T list -> 'T list /// Returns the average of the elements in the list. /// /// Raises System.ArgumentException if list is empty. /// The input list. /// Thrown when the list is empty. /// The resulting average. [] val inline average : list:^T list -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member DivideByInt : ^T*int -> ^T) and ^T : (static member Zero : ^T) /// Returns the average of the elements generated by applying the function to each element of the list. /// /// Raises System.ArgumentException if list is empty. /// The function to transform the list elements into the type to be averaged. /// The input list. /// Thrown when the list is empty. /// The resulting average. [] val inline averageBy : projection:('T -> ^U) -> list:'T list -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member DivideByInt : ^U*int -> ^U) and ^U : (static member Zero : ^U) /// Applies the given function to each element of the list. Returns /// the list comprised of the results x for each element where /// the function returns Some(x) /// The function to generate options from the elements. /// The input list. /// The list comprising the values selected from the chooser function. [] val choose: chooser:('T -> 'U option) -> list:'T list -> 'U list /// For each element of the list, applies the given function. Concatenates all the results and return the combined list. /// The function to transform each input element into a sublist to be concatenated. /// The input list. /// The concatenation of the transformed sublists. [] val collect: mapping:('T -> 'U list) -> list:'T list -> 'U list /// Returns a new list that contains the elements of each the lists in order. /// The input sequence of lists. /// The resulting concatenated list. [] val concat: lists:seq<'T list> -> 'T list /// Returns an empty list of the given type. [] [] val empty<'T> : 'T list /// Tests if any element of the list satisfies the given predicate. /// /// The predicate is applied to the elements of the input list. If any application /// returns true then the overall result is true and no further elements are tested. /// Otherwise, false is returned. /// The function to test the input elements. /// The input list. /// True if any element satisfies the predicate. [] val exists: predicate:('T -> bool) -> list:'T list -> bool /// Tests if any pair of corresponding elements of the lists satisfies the given predicate. /// /// The predicate is applied to matching elements in the two collections up to the lesser of the /// two lengths of the collections. If any application returns true then the overall result is /// true and no further elements are tested. Otherwise, if one collections is longer /// than the other then the System.ArgumentException exception is raised. /// Otherwise, false is returned. /// The function to test the input elements. /// The first input list. /// The second input list. /// Thrown when the input lists differ in length. /// True if any pair of elements satisfy the predicate. [] val exists2: predicate:('T1 -> 'T2 -> bool) -> list1:'T1 list -> list2:'T2 list -> bool /// Returns the first element for which the given function returns true. /// Raises KeyNotFoundException if no such element exists. /// The function to test the input elements. /// The input list. /// Thrown if the predicate evaluates to false for /// all the elements of the list. /// The first element that satisfies the predicate. [] val find: predicate:('T -> bool) -> list:'T list -> 'T /// Returns the index of the first element in the list /// that satisfies the given predicate. /// Raises KeyNotFoundException if no such element exists. /// The function to test the input elements. /// The input list. /// Thrown if the predicate evaluates to false for all the /// elements of the list. /// The index of the first element that satisfies the predicate. [] val findIndex: predicate:('T -> bool) -> list:'T list -> int /// Returns a new collection containing only the elements of the collection /// for which the given predicate returns "true" /// The function to test the input elements. /// The input list. /// A list containing only the elements that satisfy the predicate. [] val filter: predicate:('T -> bool) -> list:'T list -> 'T list /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. Take the second argument, and apply the function to it /// and the first element of the list. Then feed this result into the function along /// with the second element and so on. Return the final result. /// If the input function is f and the elements are i0...iN then /// computes f (... (f s i0) i1 ...) iN. /// The function to update the state given the input elements. /// The initial state. /// The input list. /// The final state value. [] val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> list:'T list -> 'State /// Applies a function to corresponding elements of two collections, threading an accumulator argument /// through the computation. The collections must have identical sizes. /// If the input function is f and the elements are i0...iN and j0...jN /// then computes f (... (f s i0 j0)...) iN jN. /// The function to update the state given the input elements. /// The initial state. /// The first input list. /// The second input list. /// The final state value. [] val fold2<'T1,'T2,'State> : folder:('State -> 'T1 -> 'T2 -> 'State) -> state:'State -> list1:'T1 list -> list2:'T2 list -> 'State /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then /// computes f i0 (...(f iN s)). /// The function to update the state given the input elements. /// The input list. /// The initial state. /// The final state value. [] val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> list:'T list -> state:'State -> 'State /// Applies a function to corresponding elements of two collections, threading an accumulator argument /// through the computation. The collections must have identical sizes. /// If the input function is f and the elements are i0...iN and j0...jN /// then computes f i0 j0 (...(f iN jN s)). /// The function to update the state given the input elements. /// The first input list. /// The second input list. /// The initial state. /// The final state value. [] val foldBack2<'T1,'T2,'State> : folder:('T1 -> 'T2 -> 'State -> 'State) -> list1:'T1 list -> list2:'T2 list -> state:'State -> 'State /// Tests if all elements of the collection satisfy the given predicate. /// /// The predicate is applied to the elements of the input list. If any application /// returns false then the overall result is false and no further elements are tested. /// Otherwise, true is returned. /// The function to test the input elements. /// The input list. /// True if all of the elements satisfy the predicate. [] val forall: predicate:('T -> bool) -> list:'T list -> bool /// Tests if all corresponding elements of the collection satisfy the given predicate pairwise. /// /// The predicate is applied to matching elements in the two collections up to the lesser of the /// two lengths of the collections. If any application returns false then the overall result is /// false and no further elements are tested. Otherwise, if one collection is longer /// than the other then the System.ArgumentException exception is raised. /// Otherwise, true is returned. /// The function to test the input elements. /// The first input list. /// The second input list. /// Thrown when the input lists differ in length. /// True if all of the pairs of elements satisfy the predicate. [] val forall2: predicate:('T1 -> 'T2 -> bool) -> list1:'T1 list -> list2:'T2 list -> bool /// Returns the first element of the list. /// /// The input list. /// Thrown when the list is empty. /// The first element of the list. [] val head: list:'T list -> 'T /// Creates a list by calling the given generator on each index. /// The length of the list to generate. /// The function to generate an element from an index. /// The list of generated elements. [] val init: length:int -> initializer:(int -> 'T) -> 'T list /// Returns true if the list contains no elements, false otherwise. /// The input list. /// True if the list is empty. [] val isEmpty: list:'T list -> bool /// Applies the given function to each element of the collection. /// The function to apply to elements from the input list. /// The input list. [] val iter: action:('T -> unit) -> list:'T list -> unit /// Applies the given function to two collections simultaneously. The /// collections must have identical size. /// The function to apply to pairs of elements from the input lists. /// The first input list. /// The second input list. [] val iter2: action:('T1 -> 'T2 -> unit) -> list1:'T1 list -> list2:'T2 list -> unit /// Applies the given function to each element of the collection. The integer passed to the /// function indicates the index of element. /// The function to apply to the elements of the list along with their index. /// The input list. [] val iteri: action:(int -> 'T -> unit) -> list:'T list -> unit /// Applies the given function to two collections simultaneously. The /// collections must have identical size. The integer passed to the /// function indicates the index of element. /// The function to apply to a pair of elements from the input lists along with their index. /// The first input list. /// The second input list. [] val iteri2: action:(int -> 'T1 -> 'T2 -> unit) -> list1:'T1 list -> list2:'T2 list -> unit /// Returns the length of the list. /// The input list. /// The length of the list. [] val length: list:'T list -> int /// Builds a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. /// The function to transform elements from the input list. /// The input list. /// The list of transformed elements. [] val map: mapping:('T -> 'U) -> list:'T list -> 'U list /// Builds a new collection whose elements are the results of applying the given function /// to the corresponding elements of the two collections pairwise. /// The function to transform pairs of elements from the input lists. /// The first input list. /// The second input list. /// The list of transformed elements. [] val map2: mapping:('T1 -> 'T2 -> 'U) -> list1:'T1 list -> list2:'T2 list -> 'U list /// Builds a new collection whose elements are the results of applying the given function /// to the corresponding elements of the three collections simultaneously. /// The function to transform triples of elements from the input lists. /// The first input list. /// The second input list. /// The third input list. /// The list of transformed elements. [] val map3: mapping:('T1 -> 'T2 -> 'T3 -> 'U) -> list1:'T1 list -> list2:'T2 list -> list3:'T3 list -> 'U list /// Builds a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. The integer index passed to the /// function indicates the index (from 0) of element being transformed. /// The function to transform elements and their indices. /// The input list. /// The list of transformed elements. [] val mapi: mapping:(int -> 'T -> 'U) -> list:'T list -> 'U list /// Like mapi, but mapping corresponding elements from two lists of equal length. /// The function to transform pairs of elements from the two lists and their index. /// The first input list. /// The second input list. /// The list of transformed elements. [] val mapi2: mapping:(int -> 'T1 -> 'T2 -> 'U) -> list1:'T1 list -> list2:'T2 list -> 'U list /// Return the greatest of all elements of the list, compared via Operators.max. /// /// Raises System.ArgumentException if list is empty /// The input list. /// Thrown when the list is empty. /// The maximum element. [] val inline max : list:'T list -> 'T when 'T : comparison /// Returns the greatest of all elements of the list, compared via Operators.max on the function result. /// /// Raises System.ArgumentException if list is empty. /// The function to transform the list elements into the type to be compared. /// The input list. /// Thrown when the list is empty. /// The maximum element. [] val inline maxBy : projection:('T -> 'U) -> list:'T list -> 'T when 'U : comparison /// Returns the lowest of all elements of the list, compared via Operators.min. /// /// Raises System.ArgumentException if list is empty /// The input list. /// Thrown when the list is empty. /// The minimum value. [] val inline min : list:'T list -> 'T when 'T : comparison /// Returns the lowest of all elements of the list, compared via Operators.min on the function result /// /// Raises System.ArgumentException if list is empty. /// The function to transform list elements into the type to be compared. /// The input list. /// Thrown when the list is empty. /// The minimum value. [] val inline minBy : projection:('T -> 'U) -> list:'T list -> 'T when 'U : comparison /// Indexes into the list. The first element has index 0. /// The input list. /// The index to retrieve. /// The value at the given index. [] val nth: list:'T list -> index:int -> 'T /// Builds a list from the given array. /// The input array. /// The list of elements from the array. [] val ofArray : array:'T[] -> 'T list /// Builds a new list from the given enumerable object. /// The input sequence. /// The list of elements from the sequence. [] val ofSeq: source:seq<'T> -> 'T list /// Splits the collection into two collections, containing the /// elements for which the given predicate returns true and false /// respectively. Element order is preserved in both of the created lists. /// The function to test the input elements. /// The input list. /// A list containing the elements for which the predicate evaluated to false and a list /// containing the elements for which the predicate evaluated to true. [] val partition: predicate:('T -> bool) -> list:'T list -> ('T list * 'T list) /// Applies the given function to successive elements, returning the first /// result where function returns Some(x) for some x. If no such /// element exists then raise System.Collections.Generic.KeyNotFoundException /// The function to generate options from the elements. /// The input list. /// Thrown when the list is empty. /// The first resulting value. [] val pick: chooser:('T -> 'U option) -> list:'T list -> 'U /// Returns a list with all elements permuted according to the /// specified permutation. /// The function to map input indices to output indices. /// The input list. /// The permutated list. [] val permute : indexMap:(int -> int) -> list:'T list -> 'T list /// Apply a function to each element of the collection, threading an accumulator argument /// through the computation. Apply the function to the first two elements of the list. /// Then feed this result into the function along with the third element and so on. /// Return the final result. If the input function is f and the elements are i0...iN then computes /// f (... (f i0 i1) i2 ...) iN. /// /// Raises System.ArgumentException if list is empty /// The function to reduce two list elements to a single element. /// The input list. /// Thrown when the list is empty. /// The final reduced value. [] val reduce: reduction:('T -> 'T -> 'T) -> list:'T list -> 'T /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then computes /// f i0 (...(f iN-1 iN)). /// /// Raises System.ArgumentException if list is empty /// The function to reduce two list elements to a single element. /// The input list. /// Thrown when the list is empty. /// The final reduced value. [] val reduceBack: reduction:('T -> 'T -> 'T) -> list:'T list -> 'T /// Creates a list by calling the given generator on each index. /// The number of elements to replicate. /// The value to replicate /// The generated list. [] val replicate: count:int -> initial:'T -> 'T list /// Returns a new list with the elements in reverse order. /// The input list. /// The reversed list. [] val rev: list:'T list -> 'T list /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. Take the second argument, and apply the function to it /// and the first element of the list. Then feed this result into the function along /// with the second element and so on. Returns the list of intermediate results and the final result. /// The function to update the state given the input elements. /// The initial state. /// The input list. /// The list of states. [] val scan<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> list:'T list -> 'State list /// Like foldBack, but returns both the intermediary and final results /// The function to update the state given the input elements. /// The input list. /// The initial state. /// The list of states. [] val scanBack<'T,'State> : folder:('T -> 'State -> 'State) -> list:'T list -> state:'State -> 'State list /// Sorts the given list using the given comparison function. /// /// This is a stable sort, i.e. the original order of equal elements is preserved. /// The function to compare the list elements. /// The input list. /// The sorted list. [] val sortWith: comparer:('T -> 'T -> int) -> list:'T list -> 'T list /// Sorts the given list using keys given by the given projection. Keys are compared using Operators.compare. /// /// This is a stable sort, i.e. the original order of equal elements is preserved. /// The function to transform the list elements into the type to be compared. /// The input list. /// The sorted list. [] val sortBy: projection:('T -> 'Key) -> list:'T list -> 'T list when 'Key : comparison /// Sorts the given list using Operators.compare. /// /// This is a stable sort, i.e. the original order of equal elements is preserved. /// The input list. /// The sorted list. [] val sort: list:'T list -> 'T list when 'T : comparison /// Returns the sum of the elements in the list. /// The input list. /// The resulting sum. [] val inline sum : list:^T list -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member Zero : ^T) /// Returns the sum of the results generated by applying the function to each element of the list. /// The function to transform the list elements into the type to be summed. /// The input list. /// The resulting sum. [] val inline sumBy : projection:('T -> ^U) -> list:'T list -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member Zero : ^U) /// Returns the list after removing the first element. /// /// The input list. /// Thrown when the list is empty. /// The list after removing the first element. [] val tail: list:'T list -> 'T list /// Builds an array from the given list. /// The input list. /// The array containing the elements of the list. [] val toArray: list:'T list -> 'T[] /// Views the given list as a sequence. /// The input list. /// The sequence of elements in the list. [] val toSeq: list:'T list -> seq<'T> /// Applies the given function to successive elements, returning Some(x) the first /// result where function returns Some(x) for some x. If no such element /// exists then return None. /// The function to generate options from the elements. /// The input list. /// The first resulting value or None. [] val tryPick: chooser:('T -> 'U option) -> list:'T list -> 'U option /// Returns the first element for which the given function returns true.. /// Return None if no such element exists. /// The function to test the input elements. /// The input list. /// The first element for which the predicate returns true, or None if /// every element evaluates to false. [] val tryFind: predicate:('T -> bool) -> list:'T list -> 'T option /// Returns the index of the first element in the list /// that satisfies the given predicate. /// Return None if no such element exists. /// The function to test the input elements. /// The input list. /// The index of the first element for which the predicate returns true, or None if /// every element evaluates to false. [] val tryFindIndex: predicate:('T -> bool) -> list:'T list -> int option /// Splits a list of pairs into two lists. /// The input list. /// Two lists of split elements. [] val unzip: list:('T1 * 'T2) list -> ('T1 list * 'T2 list) /// Splits a list of triples into three lists. /// The input list. /// Three lists of split elements. [] val unzip3: list:('T1 * 'T2 * 'T3) list -> ('T1 list * 'T2 list * 'T3 list) /// Combines the two lists into a list of pairs. The two lists must have equal lengths. /// The first input list. /// The second input list. /// A single list containing pairs of matching elements from the input lists. [] val zip: list1:'T1 list -> list2:'T2 list -> ('T1 * 'T2) list /// Combines the three lists into a list of triples. The lists must have equal lengths. /// The first input list. /// The second input list. /// The third input list. /// A single list containing triples of matching elements from the input lists. [] val zip3: list1:'T1 list -> list2:'T2 list -> list3:'T3 list -> ('T1 * 'T2 * 'T3) list fsharp-3.0.34/src/fsharp/FSharp.Core/array3.fs0000775000175000017500000001442512260314606017760 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System.Diagnostics open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.Operators.Checked [] [] module Array3D = let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> () [] let length1 (array: 'T[,,]) = (# "ldlen.multi 3 0" array : int #) [] let length2 (array: 'T[,,]) = (# "ldlen.multi 3 1" array : int #) [] let length3 (array: 'T[,,]) = (# "ldlen.multi 3 2" array : int #) [] let get (array: 'T[,,]) n1 n2 n3 = array.[n1,n2,n3] [] let set (array: 'T[,,]) n1 n2 n3 x = array.[n1,n2,n3] <- x [] let zeroCreate (n1:int) (n2:int) (n3:int) = if n1 < 0 then invalidArg "n1" (SR.GetString(SR.inputMustBeNonNegative)) if n2 < 0 then invalidArg "n2" (SR.GetString(SR.inputMustBeNonNegative)) if n3 < 0 then invalidArg "n3" (SR.GetString(SR.inputMustBeNonNegative)) (# "newarr.multi 3 !0" type ('T) n1 n2 n3 : 'T[,,] #) [] let create (n1:int) (n2:int) (n3:int) (x:'T) = let arr = (zeroCreate n1 n2 n3 : 'T[,,]) for i = 0 to n1 - 1 do for j = 0 to n2 - 1 do for k = 0 to n3 - 1 do arr.[i,j,k] <- x arr [] let init n1 n2 n3 f = let arr = (zeroCreate n1 n2 n3 : 'T[,,]) for i = 0 to n1 - 1 do for j = 0 to n2 - 1 do for k = 0 to n3 - 1 do arr.[i,j,k] <- f i j k arr [] let iter f array = checkNonNull "array" array let len1 = length1 array let len2 = length2 array let len3 = length3 array for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do f array.[i,j,k] [] let map f array = checkNonNull "array" array let len1 = length1 array let len2 = length2 array let len3 = length3 array let res = (zeroCreate len1 len2 len3 : 'b[,,]) for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do res.[i,j,k] <- f array.[i,j,k] res [] let iteri f array = checkNonNull "array" array let len1 = length1 array let len2 = length2 array let len3 = length3 array for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do f i j k array.[i,j,k] [] let mapi f array = checkNonNull "array" array let len1 = length1 array let len2 = length2 array let len3 = length3 array let res = (zeroCreate len1 len2 len3 : 'b[,,]) for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do res.[i,j,k] <- f i j k array.[i,j,k] res [] [] module Array4D = [] let length1 (array: 'T[,,,]) = (# "ldlen.multi 4 0" array : int #) [] let length2 (array: 'T[,,,]) = (# "ldlen.multi 4 1" array : int #) [] let length3 (array: 'T[,,,]) = (# "ldlen.multi 4 2" array : int #) [] let length4 (array: 'T[,,,]) = (# "ldlen.multi 4 3" array : int #) [] let zeroCreate (n1:int) (n2:int) (n3:int) (n4:int) = if n1 < 0 then invalidArg "n1" (SR.GetString(SR.inputMustBeNonNegative)) if n2 < 0 then invalidArg "n2" (SR.GetString(SR.inputMustBeNonNegative)) if n3 < 0 then invalidArg "n3" (SR.GetString(SR.inputMustBeNonNegative)) if n4 < 0 then invalidArg "n4" (SR.GetString(SR.inputMustBeNonNegative)) (# "newarr.multi 4 !0" type ('T) n1 n2 n3 n4 : 'T[,,,] #) [] let create n1 n2 n3 n4 (x:'T) = let arr = (zeroCreate n1 n2 n3 n4 : 'T[,,,]) for i = 0 to n1 - 1 do for j = 0 to n2 - 1 do for k = 0 to n3 - 1 do for m = 0 to n4 - 1 do arr.[i,j,k,m] <- x arr [] let init n1 n2 n3 n4 f = let arr = (zeroCreate n1 n2 n3 n4 : 'T[,,,]) for i = 0 to n1 - 1 do for j = 0 to n2 - 1 do for k = 0 to n3 - 1 do for m = 0 to n4 - 1 do arr.[i,j,k,m] <- f i j k m arr [] let get (array: 'T[,,,]) n1 n2 n3 n4 = array.[n1,n2,n3,n4] [] let set (array: 'T[,,,]) n1 n2 n3 n4 x = array.[n1,n2,n3,n4] <- x fsharp-3.0.34/src/fsharp/FSharp.Core/string.fsi0000775000175000017500000001701112260314606020230 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections /// [] [] module String = /// Returns a new string made by concatenating the given strings /// with separator sep, that is a1 + sep + ... + sep + aN. /// The separator string to be inserted between the strings /// of the input sequence. /// The sequence of strings to be concatenated. /// A new string consisting of the concatenated strings separated by /// the separation string. /// Thrown when strings is null. [] val concat: sep:string -> strings: seq -> string /// Applies the function action to each character in the string. /// The function to be applied to each character of the string. /// The input string. /// Thrown when the input string is null. [] val iter: action:(char -> unit) -> str:string -> unit /// Applies the function action to the index of each character in the string and the /// character itself. /// The function to apply to each character and index of the string. /// The input string. /// Thrown when the input string is null. [] val iteri: action:(int -> char -> unit) -> str:string -> unit /// Builds a new string whose characters are the results of applying the function mapping /// to each of the characters of the input string. /// The function to apply to the characters of the string. /// The input string. /// The resulting string. /// Thrown when the input string is null. [] val map: mapping:(char -> char) -> str:string -> string /// Builds a new string whose characters are the results of applying the function mapping /// to each character and index of the input string. /// The function to apply to each character and index of the string. /// The input string. /// The resulting string. /// Thrown when the input string is null. [] val mapi: mapping:(int -> char -> char) -> str:string -> string /// Builds a new string whose characters are the results of applying the function mapping /// to each of the characters of the input string and concatenating the resulting /// strings. /// The function to produce a string from each character of the input string. /// The input string. /// The concatenated string. /// Thrown when the input string is null. [] val collect: mapping:(char -> string) -> str:string -> string /// Builds a new string whose characters are the results of applying the function mapping /// to each index from 0 to count-1 and concatenating the resulting /// strings. /// The number of strings to initialize. /// The function to take an index and produce a string to /// be concatenated with the others. /// The constructed string. /// Thrown when count is negative. [] val init: count:int -> initializer:(int -> string) -> string /// Tests if all characters in the string satisfy the given predicate. /// The function to test each character of the string. /// The input string. /// True if all characters return true for the predicate and false otherwise. /// Thrown when the input string is null. [] val forall: predicate:(char -> bool) -> str:string -> bool /// Tests if any character of the string satisfies the given predicate. /// The function to test each character of the string. /// The input string. /// True if any character returns true for the predicate and false otherwise. /// Thrown when the input string is null. [] val exists: predicate:(char -> bool) -> str:string -> bool /// Returns a string by concatenating count instances of str. /// The number of copies of the input string will be copied. /// The input string. /// The concatenated string. /// Thrown when the input string is null. [] val replicate: count:int -> str: string -> string /// Returns the length of the string. /// The input string. /// The number of characters in the string. /// Thrown when the input string is null. [] val length: str:string -> int fsharp-3.0.34/src/fsharp/FSharp.Core/array3.fsi0000775000175000017500000002725312260314606020134 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators [] [] /// Basic operations on rank 3 arrays. module Array3D = /// Creates an array whose elements are all initially the given value. /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The value of the array elements. /// The created array. [] val create: length1:int -> length2:int -> length3:int -> initial:'T -> 'T[,,] /// Creates an array given the dimensions and a generator function to compute the elements. /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The function to create an initial value at each index into the array. /// The created array. [] val init: length1:int -> length2:int -> length3:int -> initializer:(int -> int -> int -> 'T) -> 'T[,,] /// Fetches an element from a 3D array. You can also use the syntax 'array.[index1,index2,index3]' /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// The index along the third dimension. /// The value at the given index. [] val get: array:'T[,,] -> index1:int -> index2:int -> index3:int -> 'T /// Applies the given function to each element of the array. /// The function to apply to each element of the array. /// The input array. [] val iter: action:('T -> unit) -> array:'T[,,] -> unit /// Applies the given function to each element of the array. The integer indicies passed to the /// function indicates the index of element. /// The function to apply to each element of the array. /// The input array. [] val iteri: action:(int -> int -> int -> 'T -> unit) -> array:'T[,,] -> unit /// Returns the length of an array in the first dimension /// The input array. /// The length of the array in the first dimension. [] val length1: array:'T[,,] -> int /// Returns the length of an array in the second dimension. /// The input array. /// The length of the array in the second dimension. [] val length2: array:'T[,,] -> int /// Returns the length of an array in the third dimension. /// The input array. /// The length of the array in the third dimension. [] val length3: array:'T[,,] -> int /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. /// /// For non-zero-based arrays the basing on an input array will be propogated to the output /// array. /// The function to transform each element of the array. /// The input array. /// The array created from the transformed elements. [] val map: mapping:('T -> 'U) -> array:'T[,,] -> 'U[,,] /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. The integer indices passed to the /// function indicates the element being transformed. /// /// For non-zero-based arrays the basing on an input array will be propogated to the output /// array. /// The function to transform the elements at each index in the array. /// The input array. /// The array created from the transformed elements. [] val mapi: mapping:(int -> int -> int -> 'T -> 'U) -> array:'T[,,] -> 'U[,,] /// Sets the value of an element in an array. You can also /// use the syntax 'array.[index1,index2,index3] <- value'. /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// The index along the third dimension. /// The value to set at the given index. [] val set: array:'T[,,] -> index1:int -> index2:int -> index3:int -> value:'T -> unit /// Creates an array where the entries are initially the "default" value. /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The created array. [] val zeroCreate: length1:int -> length2:int -> length3:int -> 'T[,,] [] [] /// Basic operations on rank 4 arrays. module Array4D = /// Creates an array whose elements are all initially the given value /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The length of the fourth dimension. /// The initial value for each element of the array. /// The created array. [] val create: length1:int -> length2:int -> length3:int -> length4:int -> initial:'T -> 'T[,,,] /// Creates an array given the dimensions and a generator function to compute the elements. /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The length of the fourth dimension. /// The function to create an initial value at each index in the array. /// The created array. [] val init: length1:int -> length2:int -> length3:int -> length4:int -> initializer:(int -> int -> int -> int -> 'T) -> 'T[,,,] /// Returns the length of an array in the first dimension /// The input array. /// The length of the array in the first dimension. [] val length1: array:'T[,,,] -> int /// Returns the length of an array in the second dimension. /// The input array. /// The length of the array in the second dimension. [] val length2: array:'T[,,,] -> int /// Returns the length of an array in the third dimension. /// The input array. /// The length of the array in the third dimension. [] val length3: array:'T[,,,] -> int /// Returns the length of an array in the fourth dimension. /// The input array. /// The length of the array in the fourth dimension. [] val length4: array:'T[,,,] -> int /// Creates an array where the entries are initially the "default" value. /// The length of the first dimension. /// The length of the second dimension. /// The length of the third dimension. /// The length of the fourth dimension. /// The created array. [] val zeroCreate: length1:int -> length2:int -> length3:int -> length4:int -> 'T[,,,] /// Fetches an element from a 4D array. You can also use the syntax 'array.[index1,index2,index3,index4]' /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// The index along the third dimension. /// The index along the fourth dimension. /// The value at the given index. [] val get: array:'T[,,,] -> index1:int -> index2:int -> index3:int -> index4:int -> 'T /// Sets the value of an element in an array. You can also /// use the syntax 'array.[index1,index2,index3,index4] <- value'. /// The input array. /// The index along the first dimension. /// The index along the second dimension. /// The index along the third dimension. /// The index along the fourth dimension. /// The value to set. [] val set: array:'T[,,,] -> index1:int -> index2:int -> index3:int -> index4:int -> value:'T -> unit fsharp-3.0.34/src/fsharp/FSharp.Core/map.fsi0000775000175000017500000003506512260314606017510 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Immutable maps. Keys are ordered by F# generic comparison. /// /// Maps based on generic comparison are efficient for small keys. They are not a suitable choice if keys are recursive data structures /// or if keys require bespoke comparison semantics. /// /// All members of this class are thread-safe and may be used concurrently from multiple threads. [] [] type Map<[]'Key,[]'Value when 'Key : comparison> = /// Returns a new map with the binding added to the given map. /// The input key. /// The resulting map. member Add: key:'Key * value:'Value -> Map<'Key,'Value> /// Returns true if there are no bindings in the map. member IsEmpty: bool /// Builds a map that contains the bindings of the given IEnumerable. /// The input sequence of key/value pairs. /// The resulting map. new : elements:seq<'Key * 'Value> -> Map<'Key,'Value> /// Tests if an element is in the domain of the map. /// The input key. /// True if the map contains the given key. member ContainsKey: key:'Key -> bool /// The number of bindings in the map. member Count: int /// Lookup an element in the map. Raise KeyNotFoundException if no binding /// exists in the map. /// The input key. /// Thrown when the key is not found. /// The value mapped to the key. member Item : key:'Key -> 'Value with get /// Removes an element from the domain of the map. No exception is raised if the element is not present. /// The input key. /// The resulting map. member Remove: key:'Key -> Map<'Key,'Value> /// Lookup an element in the map, returning a Some value if the element is in the domain /// of the map and None if not. /// The input key. /// The mapped value, or None if the key is not in the map. member TryFind: key:'Key -> 'Value option interface IDictionary<'Key, 'Value> interface ICollection> interface IEnumerable> interface System.IComparable interface System.Collections.IEnumerable override Equals : obj -> bool /// Functional programming operators related to the Map<_,_> type. [] [] module Map = /// Returns a new map with the binding added to the given map. /// The input key. /// The input value. /// The input map. /// The resulting map. [] val add: key:'Key -> value:'T -> table:Map<'Key,'T> -> Map<'Key,'T> /// Returns a new map made from the given bindings. /// The input list of key/value pairs. /// The resulting map. [] val ofList: elements:('Key * 'T) list -> Map<'Key,'T> /// Returns a new map made from the given bindings. /// The input array of key/value pairs. /// The resulting map. [] val ofArray: elements:('Key * 'T)[] -> Map<'Key,'T> /// Returns a new map made from the given bindings. /// The input sequence of key/value pairs. /// The resulting map. [] val ofSeq: elements:seq<'Key * 'T> -> Map<'Key,'T> /// Views the collection as an enumerable sequence of pairs. /// The sequence will be ordered by the keys of the map. /// The input map. /// The sequence of key/value pairs. [] val toSeq: table:Map<'Key,'T> -> seq<'Key * 'T> /// Returns a list of all key-value pairs in the mapping. /// The list will be ordered by the keys of the map. /// The input map. /// The list of key/value pairs. [] val toList: table:Map<'Key,'T> -> ('Key * 'T) list /// Returns an array of all key-value pairs in the mapping. /// The array will be ordered by the keys of the map. /// The input map. /// The array of key/value pairs. [] val toArray: table:Map<'Key,'T> -> ('Key * 'T)[] /// Is the map empty? /// The input map. /// True if the map is empty. [] val isEmpty: table:Map<'Key,'T> -> bool /// The empty map. [] [] val empty<'Key,'T> : Map<'Key,'T> when 'Key : comparison /// Lookup an element in the map, raising KeyNotFoundException if no binding /// exists in the map. /// The input key. /// The input map. /// Thrown when the key does not exist in the map. /// The value mapped to the given key. [] val find: key:'Key -> table:Map<'Key,'T> -> 'T /// Searches the map looking for the first element where the given function returns a Some value. /// The function to generate options from the key/value pairs. /// The input map. /// The first result. [] val tryPick: chooser:('Key -> 'T -> 'U option) -> table:Map<'Key,'T> -> 'U option /// Searches the map looking for the first element where the given function returns a Some value /// The function to generate options from the key/value pairs. /// The input map. /// The first result. [] val pick: chooser:('Key -> 'T -> 'U option) -> table:Map<'Key,'T> -> 'U /// Folds over the bindings in the map. /// The function to update the state given the input key/value pairs. /// The input map. /// The initial state. /// The final state value. [] val foldBack<'Key,'T,'State> : folder:('Key -> 'T -> 'State -> 'State) -> table:Map<'Key,'T> -> state:'State -> 'State when 'Key : comparison /// Folds over the bindings in the map /// The function to update the state given the input key/value pairs. /// The initial state. /// The input map. /// The final state value. [] val fold<'Key,'T,'State> : folder:('State -> 'Key -> 'T -> 'State) -> state:'State -> table:Map<'Key,'T> -> 'State when 'Key : comparison /// Applies the given function to each binding in the dictionary /// The function to apply to each key/value pair. /// The input map. [] val iter: action:('Key -> 'T -> unit) -> table:Map<'Key,'T> -> unit /// Returns true if the given predicate returns true for one of the /// bindings in the map. /// The function to test the input elements. /// The input map. /// True if the predicate returns true for one of the key/value pairs. [] val exists: predicate:('Key -> 'T -> bool) -> table:Map<'Key, 'T> -> bool /// Builds a new map containing only the bindings for which the given predicate returns 'true'. /// The function to test the key/value pairs. /// The input map. /// The filtered map. [] val filter: predicate:('Key -> 'T -> bool) -> table:Map<'Key, 'T> -> Map<'Key, 'T> /// Returns true if the given predicate returns true for all of the /// bindings in the map. /// The function to test the input elements. /// The input map. /// True if the predicate evaluates to true for all of the bindings in the map. [] val forall: predicate:('Key -> 'T -> bool) -> table:Map<'Key, 'T> -> bool /// Builds a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. The key passed to the /// function indicates the key of element being transformed. /// The function to transform the key/value pairs. /// The input map. /// The resulting map of keys and transformed values. [] val map: mapping:('Key -> 'T -> 'U) -> table:Map<'Key,'T> -> Map<'Key,'U> /// Tests if an element is in the domain of the map. /// The input key. /// The input map. /// True if the map contains the key. [] val containsKey: key:'Key -> table:Map<'Key,'T> -> bool /// Builds two new maps, one containing the bindings for which the given predicate returns 'true', /// and the other the remaining bindings. /// The function to test the input elements. /// The input map. /// A pair of maps in which the first contains the elements for which the predicate returned true /// and the second containing the elements for which the predicated returned false. [] val partition: predicate:('Key -> 'T -> bool) -> table:Map<'Key, 'T> -> Map<'Key, 'T> * Map<'Key, 'T> /// Removes an element from the domain of the map. No exception is raised if the element is not present. /// The input key. /// The input map. /// The resulting map. [] val remove: key:'Key -> table:Map<'Key,'T> -> Map<'Key,'T> /// Lookup an element in the map, returning a Some value if the element is in the domain /// of the map and None if not. /// The input key. /// The input map. /// The found Some value or None. [] val tryFind: key:'Key -> table:Map<'Key,'T> -> 'T option /// Evaluates the function on each mapping in the collection. Returns the key for the first mapping /// where the function returns 'true'. Raise KeyNotFoundException if no such element exists. /// The function to test the input elements. /// The input map. /// Thrown if the key does not exist in the map. /// The first key for which the predicate evaluates true. [] val findKey: predicate:('Key -> 'T -> bool) -> table:Map<'Key,'T> -> 'Key /// Returns the key of the first mapping in the collection that satisfies the given predicate. /// Returns 'None' if no such element exists. /// The function to test the input elements. /// The input map. /// The first key for which the predicate returns true or None if the predicate evaluates to false for each key/value pair. [] val tryFindKey: predicate:('Key -> 'T -> bool) -> table:Map<'Key,'T> -> 'Key option fsharp-3.0.34/src/fsharp/FSharp.Core/seq.fsi0000775000175000017500000016624712260314606017532 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Collections open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Basic operations on IEnumerables. [] [] module Seq = /// Wraps the two given enumerations as a single concatenated /// enumeration. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed /// concurrently. /// /// The first sequence. /// The second sequence. /// /// The result sequence. /// /// Thrown when either of the two provided sequences is /// null. [] val append: source1:seq<'T> -> source2:seq<'T> -> seq<'T> /// Returns the average of the elements in the sequence. /// /// The elements are averaged using the + operator, DivideByInt method and Zero property /// associated with the element type. /// /// The input sequence. /// /// The average. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence has zero elements. [] val inline average : source:seq<(^T)> -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member DivideByInt : ^T * int -> ^T) and ^T : (static member Zero : ^T) /// Returns the average of the results generated by applying the function to each element /// of the sequence. /// /// The elements are averaged using the + operator, DivideByInt method and Zero property /// associated with the generated type. /// /// A function applied to transform each element of the sequence. /// The input sequence. /// /// The average. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence has zero elements. [] val inline averageBy : projection:('T -> ^U) -> source:seq<'T> -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member DivideByInt : ^U * int -> ^U) and ^U : (static member Zero : ^U) /// Returns a sequence that corresponds to a cached version of the input sequence. /// This result sequence will have the same elements as the input sequence. The result /// can be enumerated multiple times. The input sequence will be enumerated at most /// once and only as far as is necessary. Caching a sequence is typically useful when repeatedly /// evaluating items in the original sequence is computationally expensive or if /// iterating the sequence causes side-effects that the user does not want to be /// repeated multiple times. /// /// Enumeration of the result sequence is thread safe in the sense that multiple independent IEnumerator /// values may be used simultaneously from different threads (accesses to /// the internal lookaside table are thread safe). Each individual IEnumerator /// is not typically thread safe and should not be accessed concurrently. /// /// Once enumeration of the input sequence has started, /// it's enumerator will be kept live by this object until the enumeration has completed. /// At that point, the enumerator will be disposed. /// /// The enumerator may be disposed and underlying cache storage released by /// converting the returned sequence object to type IDisposable, and calling the Dispose method /// on this object. The sequence object may then be re-enumerated and a fresh enumerator will /// be used. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val cache: source:seq<'T> -> seq<'T> /// Wraps a loosely-typed System.Collections sequence as a typed sequence. /// /// The use of this function usually requires a type annotation. /// An incorrect type annotation may result in runtime type /// errors. /// Individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val cast: source:IEnumerable -> seq<'T> /// Applies the given function to each element of the list. Return /// the list comprised of the results "x" for each element where /// the function returns Some(x). /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not /// be accessed concurrently. /// /// A function to transform items of type T into options of type U. /// The input sequence of type T. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val choose: chooser:('T -> 'U option) -> source:seq<'T> -> seq<'U> /// Applies the given function to each element of the sequence and concatenates all the /// results. /// /// Remember sequence is lazy, effects are delayed until it is enumerated. /// /// A function to transform elements of the input sequence into the sequences /// that will then be concatenated. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val collect: mapping:('T -> 'Collection) -> source:seq<'T> -> seq<'U> when 'Collection :> seq<'U> /// Compares two sequences using the given comparison function, element by element. /// Returns the first non-zero result from the comparison function. If the end of a sequence /// is reached it returns a -1 if the first sequence is shorter and a 1 if the second sequence /// is shorter. /// /// A function that takes an element from each sequence and returns an int. /// If it evaluates to a non-zero value iteration is stopped and that value is returned. /// The first input sequence. /// The second input sequence. /// /// The first non-zero value from the comparison function. /// /// Thrown when either of the input sequences /// is null. [] val compareWith: comparer:('T -> 'T -> int) -> source1:seq<'T> -> source2:seq<'T> -> int /// Combines the given enumeration-of-enumerations as a single concatenated /// enumeration. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// The input enumeration-of-enumerations. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val concat: sources:seq<'Collection> -> seq<'T> when 'Collection :> seq<'T> /// Applies a key-generating function to each element of a sequence and return a sequence yielding unique /// keys and their number of occurrences in the original sequence. /// /// Note that this function returns a sequence that digests the whole initial sequence as soon as /// that sequence is iterated. As a result this function should not be used with /// large or infinite sequences. The function makes no assumption on the ordering of the original /// sequence. /// /// A function transforming each item of input sequence into a key to be /// compared against the others. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val countBy : projection:('T -> 'Key) -> source:seq<'T> -> seq<'Key * int> when 'Key : equality /// Returns a sequence that is built from the given delayed specification of a /// sequence. /// /// The input function is evaluated each time an IEnumerator for the sequence /// is requested. /// /// The generating function for the sequence. [] val delay : generator:(unit -> seq<'T>) -> seq<'T> /// Returns a sequence that contains no duplicate entries according to generic hash and /// equality comparisons on the entries. /// If an element occurs multiple times in the sequence then the later occurrences are discarded. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val distinct: source:seq<'T> -> seq<'T> when 'T : equality /// Returns a sequence that contains no duplicate entries according to the /// generic hash and equality comparisons on the keys returned by the given key-generating function. /// If an element occurs multiple times in the sequence then the later occurrences are discarded. /// /// A function transforming the sequence items into comparable keys. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val distinctBy: projection:('T -> 'Key) -> source:seq<'T> -> seq<'T> when 'Key : equality /// Creates an empty sequence. /// /// An empty sequence. [] [] val empty<'T> : seq<'T> /// Tests if any element of the sequence satisfies the given predicate. /// /// The predicate is applied to the elements of the input sequence. If any application /// returns true then the overall result is true and no further elements are tested. /// Otherwise, false is returned. /// /// A function to test each item of the input sequence. /// The input sequence. /// /// True if any result from the predicate is true; false otherwise. /// /// Thrown when the input sequence is null. [] val exists: predicate:('T -> bool) -> source:seq<'T> -> bool /// Tests if any pair of corresponding elements of the input sequences satisfies the given predicate. /// /// The predicate is applied to matching elements in the two sequences up to the lesser of the /// two lengths of the collections. If any application returns true then the overall result is /// true and no further elements are tested. Otherwise, false is returned. If one sequence is shorter than /// the other then the remaining elements of the longer sequence are ignored. /// /// A function to test each pair of items from the input sequences. /// The first input sequence. /// The second input sequence. /// /// True if any result from the predicate is true; false otherwise. /// /// Thrown when either of the two input sequences is null. [] val exists2: predicate:('T1 -> 'T2 -> bool) -> source1:seq<'T1> -> source2:seq<'T2> -> bool /// Returns a new collection containing only the elements of the collection /// for which the given predicate returns "true". This is a synonym for Seq.where. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// Remember sequence is lazy, effects are delayed until it is enumerated. /// /// A function to test whether each item in the input sequence should be included in the output. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val filter: predicate:('T -> bool) -> source:seq<'T> -> seq<'T> /// Returns a new collection containing only the elements of the collection /// for which the given predicate returns "true". /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// Remember sequence is lazy, effects are delayed until it is enumerated. /// /// A synonym for Seq.filter. /// /// A function to test whether each item in the input sequence should be included in the output. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val where: predicate:('T -> bool) -> source:seq<'T> -> seq<'T> /// Returns the first element for which the given function returns true. /// /// A function to test whether an item in the sequence should be returned. /// The input sequence. /// /// The first element for which the predicate returns true. /// /// Thrown if no element returns true when /// evaluated by the predicate /// Thrown when the input sequence is null [] val find: predicate:('T -> bool) -> source:seq<'T> -> 'T /// Returns the index of the first element for which the given function returns true. /// /// A function to test whether the index of a particular element should be returned. /// The input sequence. /// /// The index of the first element for which the predicate returns true. /// /// Thrown if no element returns true when /// evaluated by the predicate /// Thrown when the input sequence is null [] val findIndex: predicate:('T -> bool) -> source:seq<'T> -> int /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN /// then computes f (... (f s i0)...) iN /// /// A function that updates the state with each element from the sequence. /// The initial state. /// The input sequence. /// /// The state object after the folding function is applied to each element of the sequence. /// /// Thrown when the input sequence is null. [] val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> source:seq<'T> -> 'State /// Tests if all elements of the sequence satisfy the given predicate. /// /// The predicate is applied to the elements of the input sequence. If any application /// returns false then the overall result is false and no further elements are tested. /// Otherwise, true is returned. /// /// A function to test an element of the input sequence. /// The input sequence. /// /// True if every element of the sequence satisfies the predicate; false otherwise. /// /// Thrown when the input sequence is null. [] val forall: predicate:('T -> bool) -> source:seq<'T> -> bool /// Tests the all pairs of elements drawn from the two sequences satisfy the /// given predicate. If one sequence is shorter than /// the other then the remaining elements of the longer sequence are ignored. /// /// A function to test pairs of elements from the input sequences. /// The first input sequence. /// The second input sequence. /// /// True if all pairs satisfy the predicate; false otherwise. /// /// Thrown when either of the input sequences is null. [] val forall2: predicate:('T1 -> 'T2 -> bool) -> source1:seq<'T1> -> source2:seq<'T2> -> bool /// Applies a key-generating function to each element of a sequence and yields a sequence of /// unique keys. Each unique key contains a sequence of all elements that match /// to this key. /// /// This function returns a sequence that digests the whole initial sequence as soon as /// that sequence is iterated. As a result this function should not be used with /// large or infinite sequences. The function makes no assumption on the ordering of the original /// sequence. /// /// A function that transforms an element of the sequence into a comparable key. /// The input sequence. /// /// The result sequence. [] val groupBy : projection:('T -> 'Key) -> source:seq<'T> -> seq<'Key * seq<'T>> when 'Key : equality /// Returns the first element of the sequence. /// /// The input sequence. /// /// The first element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input does not have any elements. [] val head: source:seq<'T> -> 'T /// Returns the last element of the sequence. /// /// The input sequence. /// /// The last element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input does not have any elements. [] val last: source:seq<'T> -> 'T /// Returns the only element of the sequence. /// /// The input sequence. /// /// The last element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input does not have precisely one element. [] val exactlyOne: source:seq<'T> -> 'T /// Returns true if the sequence contains no elements, false otherwise. /// /// The input sequence. /// /// True if the sequence is empty; false otherwise. /// /// Thrown when the input sequence is null. [] val isEmpty: source:seq<'T> -> bool /// Generates a new sequence which, when iterated, will return successive /// elements by calling the given function, up to the given count. Each element is saved after its /// initialization. The function is passed the index of the item being /// generated. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// The maximum number of items to generate for the sequence. /// A function that generates an item in the sequence from a given index. /// /// The result sequence. /// /// Thrown when count is negative. [] val init: count:int -> initializer:(int -> 'T) -> seq<'T> /// Generates a new sequence which, when iterated, will return successive /// elements by calling the given function. The results of calling the function /// will not be saved, that is the function will be reapplied as necessary to /// regenerate the elements. The function is passed the index of the item being /// generated. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// Iteration can continue up to Int32.MaxValue. /// /// A function that generates an item in the sequence from a given index. /// /// The result sequence. [] val initInfinite: initializer:(int -> 'T) -> seq<'T> /// Applies the given function to each element of the collection. /// /// A function to apply to each element of the sequence. /// The input sequence. /// /// Thrown when the input sequence is null. [] val iter: action:('T -> unit) -> source:seq<'T> -> unit /// Applies the given function to each element of the collection. The integer passed to the /// function indicates the index of element. /// /// A function to apply to each element of the sequence that can also access the current index. /// The input sequence. /// /// Thrown when the input sequence is null. [] val iteri: action:(int -> 'T -> unit) -> source:seq<'T> -> unit /// Applies the given function to two collections simultaneously. If one sequence is shorter than /// the other then the remaining elements of the longer sequence are ignored. /// /// A function to apply to each pair of elements from the input sequences. /// The first input sequence. /// The second input sequence. /// /// Thrown when either of the input sequences is null. [] val iter2: action:('T1 -> 'T2 -> unit) -> source1:seq<'T1> -> source2:seq<'T2> -> unit /// Returns the length of the sequence /// /// The input sequence. /// /// The length of the sequence. /// /// Thrown when the input sequence is null. [] val length: source:seq<'T> -> int /// Builds a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. The given function will be applied /// as elements are demanded using the MoveNext method on enumerators retrieved from the /// object. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// A function to transform items from the input sequence. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val map : mapping:('T -> 'U) -> source:seq<'T> -> seq<'U> /// Builds a new collection whose elements are the results of applying the given function /// to the corresponding pairs of elements from the two sequences. If one input sequence is shorter than /// the other then the remaining elements of the longer sequence are ignored. /// /// A function to transform pairs of items from the input sequences. /// The first input sequence. /// The second input sequence. /// /// The result sequence. /// /// Thrown when either of the input sequences is null. [] val map2: mapping:('T1 -> 'T2 -> 'U) -> source1:seq<'T1> -> source2:seq<'T2> -> seq<'U> /// Builds a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. The integer index passed to the /// function indicates the index (from 0) of element being transformed. /// /// A function to transform items from the input sequence that also supplies the current index. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val mapi: mapping:(int -> 'T -> 'U) -> source:seq<'T> -> seq<'U> /// Returns the greatest of all elements of the sequence, compared via Operators.max /// /// The input sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. /// /// The largest element of the sequence. [] val inline max : source:seq<'T> -> 'T when 'T : comparison /// Returns the greatest of all elements of the sequence, compared via Operators.max on the function result. /// /// A function to transform items from the input sequence into comparable keys. /// The input sequence. /// /// The largest element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val inline maxBy : projection:('T -> 'U) -> source:seq<'T> -> 'T when 'U : comparison (* /// Returns the greatest function result from the elements of the sequence, compared via Operators.max. /// /// A function to transform items from the input sequence into comparable keys. /// The input sequence. /// /// The largest element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val inline maxValBy : projection:('T -> 'U) -> source:seq<'T> -> 'U when 'U : comparison *) /// Returns the lowest of all elements of the sequence, compared via Operators.min. /// /// The input sequence. /// /// The smallest element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val inline min : source:seq<'T> -> 'T when 'T : comparison /// Returns the lowest of all elements of the sequence, compared via Operators.min on the function result. /// /// A function to transform items from the input sequence into comparable keys. /// The input sequence. /// /// The smallest element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val inline minBy : projection:('T -> 'U) -> source:seq<'T> -> 'T when 'U : comparison (* /// Returns the lowest function result from the elements of the sequence, compared via Operators.max. /// /// A function to transform items from the input sequence into comparable keys. /// The input sequence. /// /// The smallest element of the sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val inline minValBy : projection:('T -> 'U) -> source:seq<'T> -> 'U when 'U : comparison *) /// Computes the nth element in the collection. /// /// The index of element to retrieve. /// The input sequence. /// /// The nth element of the sequence. /// /// Thrown when the input sequence is null. [] val nth: index:int -> source:seq<'T> -> 'T [] /// Views the given array as a sequence. /// /// The input array. /// /// The result sequence. /// /// Thrown when the input sequence is null. val ofArray: source:'T[] -> seq<'T> [] /// Views the given list as a sequence. /// /// The input list. /// /// The result sequence. val ofList: source:'T list -> seq<'T> /// Returns a sequence of each element in the input sequence and its predecessor, with the /// exception of the first element which is only returned as the predecessor of the second element. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val pairwise: source:seq<'T> -> seq<'T * 'T> /// Applies the given function to successive elements, returning the first /// x where the function returns "Some(x)". /// /// A function to transform each item of the input sequence into an option of the output type. /// The input sequence. /// /// The selected element. /// /// Thrown when the input sequence is null. /// Thrown when every item of the sequence /// evaluates to None when the given function is applied. [] val pick: chooser:('T -> 'U option) -> source:seq<'T> -> 'U /// Builds a new sequence object that delegates to the given sequence object. This ensures /// the original sequence cannot be rediscovered and mutated by a type cast. For example, /// if given an array the returned sequence will return the elements of the array, but /// you cannot cast the returned sequence object to an array. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val readonly : source:seq<'T> -> seq<'T> /// Applies a function to each element of the sequence, threading an accumulator argument /// through the computation. Begin by applying the function to the first two elements. /// Then feed this result into the function along with the third element and so on. /// Return the final result. /// /// A function that takes in the current accumulated result and the next /// element of the sequence to produce the next accumulated result. /// The input sequence. /// /// The final result of the reduction function. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val reduce: reduction:('T -> 'T -> 'T) -> source:seq<'T> -> 'T /// Like fold, but computes on-demand and returns the sequence of intermediary and final results. /// /// A function that updates the state with each element from the sequence. /// The initial state. /// The input sequence. /// /// The resulting sequence of computed states. /// /// Thrown when the input sequence is null. [] val scan<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> source:seq<'T> -> seq<'State> /// Returns a sequence that yields one item only. /// /// The input item. /// /// The result sequence of one item. [] val singleton: value:'T -> seq<'T> /// Returns a sequence that skips N elements of the underlying sequence and then yields the /// remaining elements of the sequence. /// /// The number of items to skip. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. /// Thrown when count exceeds the number of elements /// in the sequence. [] val skip: count:int -> source:seq<'T> -> seq<'T> /// Returns a sequence that, when iterated, skips elements of the underlying sequence while the /// given predicate returns true, and then yields the remaining elements of the sequence. /// /// A function that evaluates an element of the sequence to a boolean value. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val skipWhile: predicate:('T -> bool) -> source:seq<'T> -> seq<'T> /// Yields a sequence ordered by keys. /// /// This function returns a sequence that digests the whole initial sequence as soon as /// that sequence is iterated. As a result this function should not be used with /// large or infinite sequences. The function makes no assumption on the ordering of the original /// sequence. /// /// This is a stable sort, that is the original order of equal elements is preserved. /// /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val sort : source:seq<'T> -> seq<'T> when 'T : comparison /// Applies a key-generating function to each element of a sequence and yield a sequence ordered /// by keys. The keys are compared using generic comparison as implemented by Operators.compare. /// /// This function returns a sequence that digests the whole initial sequence as soon as /// that sequence is iterated. As a result this function should not be used with /// large or infinite sequences. The function makes no assumption on the ordering of the original /// sequence. /// /// This is a stable sort, that is the original order of equal elements is preserved. /// /// A function to transform items of the input sequence into comparable keys. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val sortBy : projection:('T -> 'Key) -> source:seq<'T> -> seq<'T> when 'Key : comparison /// Returns the sum of the elements in the sequence. /// /// The elements are summed using the + operator and Zero property associated with the generated type. /// /// The input sequence. /// /// The computed sum. [] val inline sum : source:seq<(^T)> -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member Zero : ^T) /// Returns the sum of the results generated by applying the function to each element of the sequence. /// The generated elements are summed using the + operator and Zero property associated with the generated type. /// /// A function to transform items from the input sequence into the type that will be summed. /// The input sequence. /// /// The computed sum. [] val inline sumBy : projection:('T -> ^U) -> source:seq<'T> -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member Zero : ^U) /// Returns the first N elements of the sequence. /// Throws InvalidOperationException /// if the count exceeds the number of elements in the sequence. Seq.truncate /// returns as many items as the sequence contains instead of throwing an exception. /// /// The number of items to take. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. /// Thrown when count exceeds the number of elements /// in the sequence. [] val take: count:int -> source:seq<'T> -> seq<'T> /// Returns a sequence that, when iterated, yields elements of the underlying sequence while the /// given predicate returns true, and then returns no further elements. /// /// A function that evaluates to false when no more items should be returned. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val takeWhile: predicate:('T -> bool) -> source:seq<'T> -> seq<'T> /// Builds an array from the given collection. /// /// The input sequence. /// /// The result array. /// /// Thrown when the input sequence is null. [] val toArray: source:seq<'T> -> 'T[] /// Builds a list from the given collection. /// /// The input sequence. /// /// The result list. /// /// Thrown when the input sequence is null. [] val toList: source:seq<'T> -> 'T list /// Returns the first element for which the given function returns true. /// Return None if no such element exists. /// /// A function that evaluates to a Boolean when given an item in the sequence. /// The input sequence. /// /// The found element or None. /// /// Thrown when the input sequence is null. [] val tryFind: predicate:('T -> bool) -> source:seq<'T> -> 'T option /// Returns the index of the first element in the sequence /// that satisfies the given predicate. Return None if no such element exists. /// /// A function that evaluates to a Boolean when given an item in the sequence. /// The input sequence. /// /// The found index or None. /// /// Thrown when the input sequence is null. [] val tryFindIndex : predicate:('T -> bool) -> source:seq<'T> -> int option /// Applies the given function to successive elements, returning the first /// result where the function returns "Some(x)". /// /// A function that transforms items from the input sequence into options. /// The input sequence. /// /// The chosen element or None. /// /// Thrown when the input sequence is null. [] val tryPick: chooser:('T -> 'U option) -> source:seq<'T> -> 'U option /// Returns a sequence that when enumerated returns at most N elements. /// /// The maximum number of items to enumerate. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. [] val truncate: count:int -> source:seq<'T> -> seq<'T> /// Returns a sequence that contains the elements generated by the given computation. /// The given initial state argument is passed to the element generator. /// For each IEnumerator elements in the stream are generated on-demand by applying the element /// generator, until a None value is returned by the element generator. Each call to the element /// generator returns a new residual state. /// /// The stream will be recomputed each time an IEnumerator is requested and iterated for the Seq. /// /// The returned sequence may be passed between threads safely. However, /// individual IEnumerator values generated from the returned sequence should not be accessed concurrently. /// /// A function that takes in the current state and returns an option tuple of the next /// element of the sequence and the next state value. /// The initial state value. /// /// The result sequence. [] val unfold : generator:('State -> ('T * 'State) option) -> state:'State -> seq<'T> /// Returns a sequence that yields sliding windows of containing elements drawn from the input /// sequence. Each window is returned as a fresh array. /// /// The number of elements in each window. /// The input sequence. /// /// The result sequence. /// /// Thrown when the input sequence is null. /// Thrown when the input sequence is empty. [] val windowed: windowSize:int -> source:seq<'T> -> seq<'T[]> /// Combines the two sequences into a list of pairs. The two sequences need not have equal lengths: /// when one sequence is exhausted any remaining elements in the other /// sequence are ignored. /// /// The first input sequence. /// The second input sequence. /// /// The result sequence. /// /// Thrown when either of the input sequences is null. [] val zip: source1:seq<'T1> -> source2:seq<'T2> -> seq<'T1 * 'T2> /// Combines the three sequences into a list of triples. The sequences need not have equal lengths: /// when one sequence is exhausted any remaining elements in the other /// sequences are ignored. /// /// The first input sequence. /// The second input sequence. /// The third input sequence. /// /// The result sequence. /// /// Thrown when any of the input sequences is null. [] val zip3: source1:seq<'T1> -> source2:seq<'T2> -> source3:seq<'T3> -> seq<'T1 * 'T2 * 'T3> namespace Microsoft.FSharp.Core.CompilerServices open System open System.Collections open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections [] /// A group of functions used as part of the compiled representation of F# sequence expressions. module RuntimeHelpers = [] type internal StructBox<'T when 'T : equality> = new : value:'T -> StructBox<'T> member Value : 'T static member Comparer : IEqualityComparer> /// The F# compiler emits calls to this function to /// implement the while operator for F# sequence expressions. /// /// A function that indicates whether iteration should continue. /// The input sequence. /// /// The result sequence. val EnumerateWhile : guard:(unit -> bool) -> source:seq<'T> -> seq<'T> /// The F# compiler emits calls to this function to /// implement the try/finally operator for F# sequence expressions. /// /// The input sequence. /// A computation to be included in an enumerator's Dispose method. /// /// The result sequence. val EnumerateThenFinally : source:seq<'T> -> compensation:(unit -> unit) -> seq<'T> /// The F# compiler emits calls to this function to implement the compiler-intrinsic /// conversions from untyped System.Collections.IEnumerable sequences to typed sequences. /// /// An initializer function. /// A function to iterate and test if end of sequence is reached. /// A function to retrieve the current element. /// /// The resulting typed sequence. val EnumerateFromFunctions: create:(unit -> 'T) -> moveNext:('T -> bool) -> current:('T -> 'U) -> seq<'U> /// The F# compiler emits calls to this function to implement the use operator for F# sequence /// expressions. /// /// The resource to be used and disposed. /// The input sequence. /// /// The result sequence. val EnumerateUsing : resource:'T -> source:('T -> 'Collection) -> seq<'U> when 'T :> IDisposable and 'Collection :> seq<'U> /// Creates an anonymous event with the given handlers. /// /// A function to handle adding a delegate for the event to trigger. /// A function to handle removing a delegate that the event triggers. /// A function to produce the delegate type the event can trigger. /// /// The initialized event. val CreateEvent : addHandler : ('Delegate -> unit) -> removeHandler : ('Delegate -> unit) -> createHandler : ((obj -> 'Args -> unit) -> 'Delegate) -> Microsoft.FSharp.Control.IEvent<'Delegate,'Args> [] /// The F# compiler emits implementations of this type for compiled sequence expressions. type GeneratedSequenceBase<'T> = /// The F# compiler emits implementations of this type for compiled sequence expressions. /// /// A new sequence generator for the expression. new : unit -> GeneratedSequenceBase<'T> /// The F# compiler emits implementations of this type for compiled sequence expressions. /// /// A new enumerator for the sequence. abstract GetFreshEnumerator : unit -> IEnumerator<'T> /// The F# compiler emits implementations of this type for compiled sequence expressions. /// /// A reference to the sequence. /// /// A 0, 1, and 2 respectively indicate Stop, Yield, and Goto conditions for the sequence generator. abstract GenerateNext : result:byref> -> int /// The F# compiler emits implementations of this type for compiled sequence expressions. abstract Close: unit -> unit /// The F# compiler emits implementations of this type for compiled sequence expressions. abstract CheckClose: bool /// The F# compiler emits implementations of this type for compiled sequence expressions. abstract LastGenerated : 'T interface IEnumerable<'T> interface IEnumerable interface IEnumerator<'T> interface IEnumerator fsharp-3.0.34/src/fsharp/FSharp.Core/string.fs0000775000175000017500000000732412260314606020065 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.Operators.Checked open Microsoft.FSharp.Collections [] [] module String = let inline emptyIfNull str = if str = null then "" else str [] let concat sep (strings : seq) = System.String.Join(sep, Seq.toArray strings) [] let iter (f : (char -> unit)) (str:string) = let str = emptyIfNull str for i = 0 to str.Length - 1 do f str.[i] [] let iteri f (str:string) = let str = emptyIfNull str for i = 0 to str.Length - 1 do f i str.[i] [] let map (f: char -> char) (str:string) = let str = emptyIfNull str let res = new System.Text.StringBuilder(str.Length) str |> iter (fun c -> res.Append(f c) |> ignore); res.ToString() [] let mapi (f: int -> char -> char) (str:string) = let str = emptyIfNull str let res = new System.Text.StringBuilder(str.Length) str |> iteri (fun i c -> res.Append(f i c) |> ignore); res.ToString() [] let collect (f: char -> string) (str:string) = let str = emptyIfNull str let res = new System.Text.StringBuilder(str.Length) str |> iter (fun c -> res.Append(f c) |> ignore); res.ToString() [] let init (count:int) (initializer: int-> string) = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) let res = new System.Text.StringBuilder(count) for i = 0 to count - 1 do res.Append(initializer i) |> ignore; res.ToString() [] let replicate (count:int) (str:string) = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) let str = emptyIfNull str let res = new System.Text.StringBuilder(str.Length) for i = 0 to count - 1 do res.Append(str) |> ignore; res.ToString() [] let forall f (str:string) = let str = emptyIfNull str let rec check i = (i >= str.Length) || (f str.[i] && check (i+1)) check 0 [] let exists f (str:string) = let str = emptyIfNull str let rec check i = (i < str.Length) && (f str.[i] || check (i+1)) check 0 [] let length (str:string) = let str = emptyIfNull str str.Length fsharp-3.0.34/src/fsharp/FSharp.Core/seq.fs0000775000175000017500000020074212260314606017346 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections #nowarn "52" // The value has been copied to ensure the original is not mutated by this operation open System open System.Diagnostics open System.Collections open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics module IEnumerator = let noReset() = raise (new System.NotSupportedException(SR.GetString(SR.resetNotSupported))) let notStarted() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationNotStarted))) let alreadyFinished() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationAlreadyFinished))) let check started = if not started then notStarted() let dispose (r : System.IDisposable) = r.Dispose() let cast (e : IEnumerator) : IEnumerator<'T> = { new IEnumerator<'T> with member x.Current = unbox e.Current interface IEnumerator with member x.Current = unbox e.Current member x.MoveNext() = e.MoveNext() member x.Reset() = noReset(); interface System.IDisposable with member x.Dispose() = match e with | :? System.IDisposable as e -> e.Dispose() | _ -> () } /// A concrete implementation of an enumerator that returns no values [] type EmptyEnumerator<'T>() = let mutable started = false interface IEnumerator<'T> with member x.Current = check started; (alreadyFinished() : 'T) interface System.Collections.IEnumerator with member x.Current = check started; (alreadyFinished() : obj) member x.MoveNext() = if not started then started <- true; false member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = () let Empty<'T> () = (new EmptyEnumerator<'T>() :> IEnumerator<'T>) let rec nth index (e : IEnumerator<'T>) = if not (e.MoveNext()) then invalidArg "index" (SR.GetString(SR.notEnoughElements)); if index < 0 then invalidArg "index" (SR.GetString(SR.inputMustBeNonNegative)); if index = 0 then e.Current else nth (index-1) e [] type MapEnumeratorState = | NotStarted | InProcess | Finished [] type MapEnumerator<'T> () = let mutable state = NotStarted [] val mutable private curr : 'T member this.GetCurrent () = match state with | NotStarted -> notStarted() | Finished -> alreadyFinished() | InProcess -> () this.curr abstract DoMoveNext : byref<'T> -> bool abstract Dispose : unit -> unit interface IEnumerator<'T> with member this.Current = this.GetCurrent() interface IEnumerator with member this.Current = box(this.GetCurrent()) member this.MoveNext () = state <- InProcess if this.DoMoveNext(&this.curr) then true else state <- Finished false member this.Reset() = noReset() interface System.IDisposable with member this.Dispose() = this.Dispose() let map f (e : IEnumerator<_>) : IEnumerator<_>= upcast { new MapEnumerator<_>() with member this.DoMoveNext (curr : byref<_>) = if e.MoveNext() then curr <- (f e.Current) true else false member this.Dispose() = e.Dispose() } let mapi f (e : IEnumerator<_>) : IEnumerator<_> = let i = ref (-1) upcast { new MapEnumerator<_>() with member this.DoMoveNext curr = i := !i + 1 if e.MoveNext() then curr <- f !i e.Current true else false member this.Dispose() = e.Dispose() } let map2 f (e1 : IEnumerator<_>) (e2 : IEnumerator<_>) : IEnumerator<_>= upcast { new MapEnumerator<_>() with member this.DoMoveNext curr = let n1 = e1.MoveNext() let n2 = e2.MoveNext() if n1 && n2 then curr <- f e1.Current e2.Current true else false member this.Dispose() = try e1.Dispose() finally e2.Dispose() } let choose f (e : IEnumerator<'T>) = let started = ref false let curr = ref None let get() = check !started; (match !curr with None -> alreadyFinished() | Some x -> x) { new IEnumerator<'U> with member x.Current = get() interface IEnumerator with member x.Current = box (get()) member x.MoveNext() = if not !started then started := true; curr := None; while ((!curr).IsNone && e.MoveNext()) do curr := f e.Current; Option.isSome !curr member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = e.Dispose() } let filter f (e : IEnumerator<'T>) = let started = ref false let this = { new IEnumerator<'T> with member x.Current = check !started; e.Current interface IEnumerator with member x.Current = check !started; box e.Current member x.MoveNext() = let rec next() = if not !started then started := true; e.MoveNext() && (f e.Current || next()) next() member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = e.Dispose() } this let unfold f x : IEnumerator<_> = let state = ref x upcast { new MapEnumerator<_>() with member this.DoMoveNext curr = match f !state with | None -> false | Some(r,s) -> curr <- r state := s true member this.Dispose() = () } let upto lastOption f = match lastOption with | Some b when b<0 -> Empty() // a request for -ve length returns empty sequence | _ -> let unstarted = -1 // index value means unstarted (and no valid index) let completed = -2 // index value means completed (and no valid index) let unreachable = -3 // index is unreachable from 0,1,2,3,... let finalIndex = match lastOption with | Some b -> b // here b>=0, a valid end value. | None -> unreachable // run "forever", well as far as Int32.MaxValue since indexing with a bounded type. // The Current value for a valid index is "f i". // Lazy<_> values are used as caches, to store either the result or an exception if thrown. // These "Lazy<_>" caches are created only on the first call to current and forced immediately. // The lazy creation of the cache nodes means enumerations that skip many Current values are not delayed by GC. // For example, the full enumeration of Seq.initInfinite in the tests. // state let index = ref unstarted // a Lazy node to cache the result/exception let current = ref (Unchecked.defaultof<_>) let setIndex i = index := i; current := (Unchecked.defaultof<_>) // cache node unprimed, initialised on demand. let getCurrent() = if !index = unstarted then notStarted() if !index = completed then alreadyFinished() match box !current with | null -> current := Lazy.Create(fun () -> f !index); | _ -> () // forced or re-forced immediately. (!current).Force() { new IEnumerator<'U> with member x.Current = getCurrent() interface IEnumerator with member x.Current = box (getCurrent()) member x.MoveNext() = if !index = completed then false elif !index = unstarted then setIndex 0 true else ( if !index = System.Int32.MaxValue then raise <| System.InvalidOperationException (SR.GetString(SR.enumerationPastIntMaxValue)) if !index = finalIndex then false else setIndex (!index + 1) true ) member self.Reset() = noReset() interface System.IDisposable with member x.Dispose() = () } let readAndClear r = lock r (fun () -> match !r with None -> None | Some _ as res -> r := None; res) let generateWhileSome openf compute closef : IEnumerator<'U> = let started = ref false let curr = ref None let state = ref (Some(openf())) let getCurr() = check !started; match !curr with None -> alreadyFinished() | Some x -> x let start() = if not !started then (started := true) let dispose() = readAndClear state |> Option.iter closef let finish() = (try dispose() finally curr := None) { new IEnumerator<'U> with member x.Current = getCurr() interface IEnumerator with member x.Current = box (getCurr()) member x.MoveNext() = start(); match !state with | None -> false (* we started, then reached the end, then got another MoveNext *) | Some s -> match (try compute s with e -> finish(); reraise()) with | None -> finish(); false | Some _ as x -> curr := x; true member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = dispose() } [] type ArrayEnumerator<'T>(arr: 'T array) = let mutable curr = -1 let mutable len = arr.Length member x.Get() = if curr >= 0 then if curr >= len then alreadyFinished() else arr.[curr] else notStarted() interface IEnumerator<'T> with member x.Current = x.Get() interface System.Collections.IEnumerator with member x.MoveNext() = if curr >= len then false else curr <- curr + 1; (curr < len) member x.Current = box(x.Get()) member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = () let ofArray arr = (new ArrayEnumerator<'T>(arr) :> IEnumerator<'T>) [] type Singleton<'T>(v:'T) = let mutable started = false interface IEnumerator<'T> with member x.Current = v interface IEnumerator with member x.Current = box v member x.MoveNext() = if started then false else (started <- true; true) member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = () let Singleton x = (new Singleton<'T>(x) :> IEnumerator<'T>) let EnumerateThenFinally f (e : IEnumerator<'T>) = { new IEnumerator<'T> with member x.Current = e.Current interface IEnumerator with member x.Current = (e :> IEnumerator).Current member x.MoveNext() = e.MoveNext() member x.Reset() = noReset() interface System.IDisposable with member x.Dispose() = try e.Dispose() finally f() } // Use generators for some implementations of IEnumerables. // module Generator = open System.Collections open System.Collections.Generic [] type Step<'T> = | Stop | Yield of 'T | Goto of Generator<'T> and Generator<'T> = abstract Apply: (unit -> Step<'T>) abstract Disposer: (unit -> unit) option let disposeG (g:Generator<'T>) = match g.Disposer with | None -> () | Some f -> f() let appG (g:Generator<_>) = //System.Console.WriteLine("{0}.appG", box g) let res = g.Apply() match res with | Goto(next) -> Goto(next) | Yield _ -> res | Stop -> //System.Console.WriteLine("appG: Stop") disposeG g; res // Binding. // // We use a type defintion to apply a local dynamic optimization. // We automatically right-associate binding, i.e. push the continuations to the right. // That is, bindG (bindG G1 cont1) cont2 --> bindG G1 (cont1 o cont2) // This makes constructs such as the following linear rather than quadratic: // // let rec rwalk n = { if n > 0 then // yield! rwalk (n-1) // yield n } type GenerateThen<'T>(g:Generator<'T>, cont : unit -> Generator<'T>) = member self.Generator = g member self.Cont = cont interface Generator<'T> with member x.Apply = (fun () -> match appG g with | Stop -> // OK, move onto the generator given by the continuation Goto(cont()) | Yield _ as res -> res | Goto next -> Goto(GenerateThen<_>.Bind(next,cont))) member x.Disposer = g.Disposer static member Bind (g:Generator<'T>, cont) = match g with | :? GenerateThen<'T> as g -> GenerateThen<_>.Bind(g.Generator,(fun () -> GenerateThen<_>.Bind (g.Cont(), cont))) | g -> (new GenerateThen<'T>(g, cont) :> Generator<'T>) let bindG g cont = GenerateThen<_>.Bind(g,cont) //let emptyG () = // { new Generator<_> with // member x.Apply = (fun () -> Stop) // member x.Disposer = None } // //let delayG f = // { new Generator<_> with // member x.Apply = fun () -> Goto(f()) // member x.Disposer = None } // //let useG (v: System.IDisposable) f = // { new Generator<_> with // member x.Apply = (fun () -> // let g = f v in // // We're leaving this generator but want to maintain the disposal on the target. // // Hence chain it into the disposer of the target // Goto(chainDisposeG v.Dispose g)) // member x.Disposer = Some (fun () -> v.Dispose()) } // //let yieldG (v:'T) = // let yielded = ref false // { new Generator<_> with // member x.Apply = fun () -> if !yielded then Stop else (yielded := true; Yield(v)) // member x.Disposer = None } // //let rec whileG gd b = if gd() then bindG (b()) (fun () -> whileG gd b) else emptyG() // //let yieldThenG x b = bindG (yieldG x) b // //let forG (v: seq<'T>) f = // let e = v.GetEnumerator() in // whileG e.MoveNext (fun () -> f e.Current) // Internal type. Drive an underlying generator. Crucially when the generator returns // a new generator we simply update our current generator and continue. Thus the enumerator // effectively acts as a reference cell holding the current generator. This means that // infinite or large generation chains (e.g. caused by long sequences of append's, including // possible delay loops) can be referenced via a single enumerator. // // A classic case where this arises in this sort of sequence expression: // let rec data s = { yield s; // yield! data (s + random()) } // // This translates to // let rec data s = Seq.delay (fun () -> Seq.append (Seq.singleton s) (Seq.delay (fun () -> data (s+random())))) // // When you unwind through all the Seq, IEnumerator and Generator objects created, // you get (data s).GetEnumerator being an "GenerateFromEnumerator(EnumeratorWrappingLazyGenerator(...))" for the append. // After one element is yielded, we move on to the generator for the inner delay, which in turn // comes back to be a "GenerateFromEnumerator(EnumeratorWrappingLazyGenerator(...))". // // Defined as a type so we can optimize Enumerator/Generator chains in enumerateFromLazyGenerator // and GenerateFromEnumerator. [] type EnumeratorWrappingLazyGenerator<'T>(g:Generator<'T>) = let mutable g = g let mutable curr = None let mutable finished = false member e.Generator = g interface IEnumerator<'T> with member x.Current= match curr with Some(v) -> v | None -> raise <| System.InvalidOperationException (SR.GetString(SR.moveNextNotCalledOrFinished)) interface System.Collections.IEnumerator with member x.Current = box (x :> IEnumerator<_>).Current member x.MoveNext() = not finished && (match appG g with | Stop -> curr <- None; finished <- true; false | Yield(v) -> curr <- Some(v); true | Goto(next) -> (g <- next); (x :> IEnumerator).MoveNext()) member x.Reset() = IEnumerator.noReset() interface System.IDisposable with member x.Dispose() = if not finished then disposeG g // Internal type, used to optimize Enumerator/Generator chains type LazyGeneratorWrappingEnumerator<'T>(e:System.Collections.Generic.IEnumerator<'T>) = member g.Enumerator = e interface Generator<'T> with member g.Apply = (fun () -> if e.MoveNext() then Yield(e.Current) else Stop) member g.Disposer= Some(e.Dispose) let EnumerateFromGenerator(g:Generator<'T>) = match g with | :? LazyGeneratorWrappingEnumerator<'T> as g -> g.Enumerator | _ -> (new EnumeratorWrappingLazyGenerator<_>(g) :> System.Collections.Generic.IEnumerator<_>) let GenerateFromEnumerator (e:System.Collections.Generic.IEnumerator<'T>) = match e with | :? EnumeratorWrappingLazyGenerator<'T> as e -> e.Generator | _ -> (new LazyGeneratorWrappingEnumerator<'T>(e) :> Generator<'T>) namespace Microsoft.FSharp.Core.CompilerServices open System open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics open System.Collections open System.Collections.Generic module RuntimeHelpers = [] type internal StructBox<'T when 'T : equality>(value:'T) = member x.Value = value static member Comparer = let gcomparer = HashIdentity.Structural<'T> { new IEqualityComparer> with member __.GetHashCode(v) = gcomparer.GetHashCode(v.Value) member __.Equals(v1,v2) = gcomparer.Equals(v1.Value,v2.Value) } let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> () let mkSeq f = { new IEnumerable<'U> with member x.GetEnumerator() = f() interface IEnumerable with member x.GetEnumerator() = (f() :> IEnumerator) } [] type EmptyEnumerable<'T> = | EmptyEnumerable interface IEnumerable<'T> with member x.GetEnumerator() = IEnumerator.Empty<'T>() interface IEnumerable with member x.GetEnumerator() = (IEnumerator.Empty<'T>() :> IEnumerator) let Generate openf compute closef = mkSeq (fun () -> IEnumerator.generateWhileSome openf compute closef) let GenerateUsing (openf : unit -> ('U :> System.IDisposable)) compute = Generate openf compute (fun (s:'U) -> s.Dispose()) let EnumerateFromFunctions opener moveNext current = Generate opener (fun x -> if moveNext x then Some(current x) else None) (fun x -> match box(x) with :? System.IDisposable as id -> id.Dispose() | _ -> ()) // A family of enumerators that can have additional 'finally' actions added to the enumerator through // the use of mutation. This is used to 'push' the disposal action for a 'use' into the next enumerator. // For example, // seq { use x = ... // while ... } // results in the 'while' loop giving an adjustable enumerator. This is then adjusted by adding the disposal action // from the 'use' into the enumerator. This means that we avoid constructing a two-deep enumerator chain in this // common case. type IFinallyEnumerator = abstract AppendFinallyAction : (unit -> unit) -> unit /// A concrete implementation of IEnumerable that adds the given compensation to the "Dispose" chain of any /// enumerators returned by the enumerable. [] type FinallyEnumerable<'T>(compensation: unit -> unit, restf: unit -> seq<'T>) = interface IEnumerable<'T> with member x.GetEnumerator() = try let ie = restf().GetEnumerator() match ie with | :? IFinallyEnumerator as a -> a.AppendFinallyAction(compensation); ie | _ -> IEnumerator.EnumerateThenFinally compensation ie with e -> compensation(); reraise() interface IEnumerable with member x.GetEnumerator() = ((x :> IEnumerable<'T>).GetEnumerator() :> IEnumerator) /// An optimized object for concatenating a sequence of enumerables [] type ConcatEnumerator<'T,'U when 'U :> seq<'T>>(sources: seq<'U>) = let mutable outerEnum = sources.GetEnumerator() let mutable currInnerEnum = IEnumerator.Empty() let mutable started = false let mutable finished = false let mutable compensations = [] [] // false = unchecked val mutable private currElement : 'T member x.Finish() = finished <- true try match currInnerEnum with | null -> () | _ -> try currInnerEnum.Dispose() finally currInnerEnum <- null finally try match outerEnum with | null -> () | _ -> try outerEnum.Dispose() finally outerEnum <- null finally let rec iter comps = match comps with | [] -> () | h::t -> try h() finally iter t try compensations |> List.rev |> iter finally compensations <- [] member x.GetCurrent() = IEnumerator.check started; if finished then IEnumerator.alreadyFinished() else x.currElement interface IFinallyEnumerator with member x.AppendFinallyAction(f) = compensations <- f :: compensations interface IEnumerator<'T> with member x.Current = x.GetCurrent() interface IEnumerator with member x.Current = box (x.GetCurrent()) member x.MoveNext() = if not started then (started <- true) if finished then false else let rec takeInner () = // check the inner list if currInnerEnum.MoveNext() then x.currElement <- currInnerEnum.Current; true else // check the outer list let rec takeOuter() = if outerEnum.MoveNext() then let ie = outerEnum.Current // Optimization to detect the statically-allocated empty IEnumerables match box ie with | :? EmptyEnumerable<'T> -> // This one is empty, just skip, don't call GetEnumerator, try again takeOuter() | _ -> // OK, this one may not be empty. // Don't forget to dispose of the enumerator for the inner list now we're done with it currInnerEnum.Dispose(); currInnerEnum <- ie.GetEnumerator(); takeInner () else // We're done x.Finish() false takeOuter() takeInner () member x.Reset() = IEnumerator.noReset() interface System.IDisposable with member x.Dispose() = if not finished then x.Finish() let EnumerateUsing (resource : 'T :> System.IDisposable) (rest: 'T -> #seq<'U>) = (FinallyEnumerable((fun () -> match box resource with null -> () | _ -> resource.Dispose()), (fun () -> rest resource :> seq<_>)) :> seq<_>) let mkConcatSeq (sources: seq<'U :> seq<'T>>) = mkSeq (fun () -> new ConcatEnumerator<_,_>(sources) :> IEnumerator<'T>) let EnumerateWhile (g : unit -> bool) (b: seq<'T>) : seq<'T> = let started = ref false let curr = ref None let getCurr() = IEnumerator.check !started; match !curr with None -> IEnumerator.alreadyFinished() | Some x -> x let start() = if not !started then (started := true) let finish() = (curr := None) mkConcatSeq (mkSeq (fun () -> { new IEnumerator<_> with member x.Current = getCurr() interface IEnumerator with member x.Current = box (getCurr()) member x.MoveNext() = start(); let keepGoing = (try g() with e -> finish (); reraise ()) in if keepGoing then curr := Some(b); true else finish(); false member x.Reset() = IEnumerator.noReset() interface System.IDisposable with member x.Dispose() = () })) let EnumerateThenFinally (rest : seq<'T>) (compensation : unit -> unit) = (FinallyEnumerable(compensation, (fun () -> rest)) :> seq<_>) let CreateEvent (add : 'Delegate -> unit) (remove : 'Delegate -> unit) (create : (obj -> 'Args -> unit) -> 'Delegate ) :IEvent<'Delegate,'Args> = // Note, we implement each interface explicitly: this works around a bug in the CLR // implementation on CompactFramework 3.7, used on Windows Phone 7 { new obj() with member x.ToString() = "" interface IEvent<'Delegate,'Args> interface IDelegateEvent<'Delegate> with member x.AddHandler(h) = add h member x.RemoveHandler(h) = remove h interface System.IObservable<'Args> with member x.Subscribe(r:IObserver<'Args>) = let h = create (fun _ args -> r.OnNext(args)) add h { new System.IDisposable with member x.Dispose() = remove h } } [] type GeneratedSequenceBase<'T>() = let mutable redirectTo : GeneratedSequenceBase<'T> = Unchecked.defaultof<_> let mutable redirect : bool = false abstract GetFreshEnumerator : unit -> IEnumerator<'T> abstract GenerateNext : next:byref> -> int // 0 = Stop, 1 = Yield, 2 = Goto abstract Close: unit -> unit abstract CheckClose: bool abstract LastGenerated : 'T member x.MoveNextImpl() = let active = if redirect then redirectTo else x let mutable target = null match active.GenerateNext(&target) with | 1 -> true | 2 -> match target.GetEnumerator() with | :? GeneratedSequenceBase<'T> as g when not active.CheckClose -> redirectTo <- g | e -> redirectTo <- { new GeneratedSequenceBase<'T>() with member x.GetFreshEnumerator() = e member x.GenerateNext(_) = if e.MoveNext() then 1 else 0 member x.Close() = try e.Dispose() finally active.Close() member x.CheckClose = true member x.LastGenerated = e.Current } redirect <- true x.MoveNextImpl() | _ (* 0 *) -> false interface IEnumerable<'T> with member x.GetEnumerator() = x.GetFreshEnumerator() interface IEnumerable with member x.GetEnumerator() = (x.GetFreshEnumerator() :> IEnumerator); interface IEnumerator<'T> with member x.Current = if redirect then redirectTo.LastGenerated else x.LastGenerated member x.Dispose() = if redirect then redirectTo.Close() else x.Close() interface IEnumerator with member x.Current = box (if redirect then redirectTo.LastGenerated else x.LastGenerated) member x.MoveNext() = x.MoveNextImpl() member x.Reset() = raise <| new System.NotSupportedException(); namespace Microsoft.FSharp.Collections open System open System.Diagnostics open System.Collections open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.ErrorStrings open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Control open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics [] type CachedSeq<'T>(cleanup,res:seq<'T>) = interface System.IDisposable with member x.Dispose() = cleanup() interface System.Collections.Generic.IEnumerable<'T> with member x.GetEnumerator() = res.GetEnumerator() interface System.Collections.IEnumerable with member x.GetEnumerator() = (res :> System.Collections.IEnumerable).GetEnumerator() member obj.Clear() = cleanup() [] [] module Seq = #if FX_NO_ICLONEABLE open Microsoft.FSharp.Core.ICloneableExtensions #else #endif open Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers let mkDelayedSeq (f: unit -> IEnumerable<'T>) = mkSeq (fun () -> f().GetEnumerator()) let mkUnfoldSeq f x = mkSeq (fun () -> IEnumerator.unfold f x) [] let delay f = mkDelayedSeq f [] let unfold f x = mkUnfoldSeq f x [] let empty<'T> = (EmptyEnumerable :> seq<'T>) [] let initInfinite f = mkSeq (fun () -> IEnumerator.upto None f) [] let init count f = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) mkSeq (fun () -> IEnumerator.upto (Some (count-1)) f) [] let iter f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() while e.MoveNext() do f e.Current; [] let nth i (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() IEnumerator.nth i e [] let iteri f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable i = 0 while e.MoveNext() do f i e.Current; i <- i + 1; [] let exists f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable state = false while (not state && e.MoveNext()) do state <- f e.Current state [] let forall f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable state = true while (state && e.MoveNext()) do state <- f e.Current state [] let iter2 f (source1 : seq<_>) (source2 : seq<_>) = checkNonNull "source1" source1 checkNonNull "source2" source2 use e1 = source1.GetEnumerator() use e2 = source2.GetEnumerator() while (e1.MoveNext() && e2.MoveNext()) do f e1.Current e2.Current; // Build an IEnumerble by wrapping/transforming iterators as they get generated. let revamp f (ie : seq<_>) = mkSeq (fun () -> f (ie.GetEnumerator())) let revamp2 f (ie1 : seq<_>) (source2 : seq<_>) = mkSeq (fun () -> f (ie1.GetEnumerator()) (source2.GetEnumerator())) [] let filter f source = checkNonNull "source" source revamp (IEnumerator.filter f) source [] let where f source = filter f source [] let map f source = checkNonNull "source" source revamp (IEnumerator.map f) source [] let mapi f source = checkNonNull "source" source revamp (IEnumerator.mapi f) source [] let map2 f source1 source2 = checkNonNull "source1" source1 checkNonNull "source2" source2 revamp2 (IEnumerator.map2 f) source1 source2 [] let choose f source = checkNonNull "source" source revamp (IEnumerator.choose f) source [] let zip source1 source2 = checkNonNull "source1" source1 checkNonNull "source2" source2 map2 (fun x y -> x,y) source1 source2 [] let zip3 source1 source2 source3 = checkNonNull "source1" source1 checkNonNull "source2" source2 checkNonNull "source3" source3 map2 (fun x (y,z) -> x,y,z) source1 (zip source2 source3) [] let cast (source: IEnumerable) = checkNonNull "source" source mkSeq (fun () -> IEnumerator.cast (source.GetEnumerator())) [] let tryPick f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable res = None while (Option.isNone res && e.MoveNext()) do res <- f e.Current; res [] let pick f source = checkNonNull "source" source match tryPick f source with | None -> raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) | Some x -> x [] let tryFind f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable res = None while (Option.isNone res && e.MoveNext()) do let c = e.Current if f c then res <- Some(c) res [] let find f source = checkNonNull "source" source match tryFind f source with | None -> raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) | Some x -> x [] let take count (source : seq<'T>) = checkNonNull "source" source if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) (* Note: don't create or dispose any IEnumerable if n = 0 *) if count = 0 then empty else seq { use e = source.GetEnumerator() for _ in 0 .. count - 1 do if not (e.MoveNext()) then raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements)) yield e.Current } [] let isEmpty (source : seq<'T>) = checkNonNull "source" source match source with | :? ('T[]) as a -> a.Length = 0 | :? list<'T> as a -> a.IsEmpty | :? ICollection<'T> as a -> a.Count = 0 | _ -> use ie = source.GetEnumerator() not (ie.MoveNext()) [] let concat sources = checkNonNull "sources" sources mkConcatSeq sources [] let length (source : seq<'T>) = checkNonNull "source" source match source with | :? ('T[]) as a -> a.Length | :? ('T list) as a -> a.Length | :? ICollection<'T> as a -> a.Count | _ -> use e = source.GetEnumerator() let mutable state = 0 while e.MoveNext() do state <- state + 1; state [] let fold<'T,'State> f (x:'State) (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() let mutable state = x while e.MoveNext() do state <- f state e.Current; state [] let reduce f (source : seq<'T>) = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let mutable state = e.Current while e.MoveNext() do state <- f state e.Current; state let fromGenerator f = mkSeq(fun () -> Generator.EnumerateFromGenerator (f())) let toGenerator (ie : seq<_>) = Generator.GenerateFromEnumerator (ie.GetEnumerator()) [] let append (source1: seq<'T>) (source2: seq<'T>) = checkNonNull "source1" source1 checkNonNull "source2" source2 fromGenerator(fun () -> Generator.bindG (toGenerator source1) (fun () -> toGenerator source2)) [] let collect f sources = map f sources |> concat [] let compareWith (f:'T -> 'T -> int) (source1 : seq<'T>) (source2: seq<'T>) = checkNonNull "source1" source1 checkNonNull "source2" source2 use e1 = source1.GetEnumerator() use e2 = source2.GetEnumerator() let rec go () = let e1ok = e1.MoveNext() let e2ok = e2.MoveNext() let c = (if e1ok = e2ok then 0 else if e1ok then 1 else -1) if c <> 0 then c else if not e1ok || not e2ok then 0 else let c = f e1.Current e2.Current if c <> 0 then c else go () go() [] let ofList (source : 'T list) = (source :> seq<'T>) [] let toList (source : seq<'T>) = checkNonNull "source" source match source with | :? ('T list) as res -> res | :? ('T[]) as res -> List.ofArray res | _ -> use e = source.GetEnumerator() let mutable res = [] while e.MoveNext() do res <- e.Current :: res List.rev res // Create a new object to ensure underlying array may not be mutated by a backdoor cast [] let ofArray (source : 'T array) = checkNonNull "source" source mkSeq (fun () -> IEnumerator.ofArray source) [] let toArray (source : seq<'T>) = checkNonNull "source" source match source with | :? ('T[]) as res -> (res.Clone() :?> 'T[]) | :? ('T list) as res -> List.toArray res //| :? ICollection<'T> as res -> ... | _ -> use e = source.GetEnumerator() let res = new ResizeArray<_>() while e.MoveNext() do res.Add(e.Current) res.ToArray() [] let singleton x = mkSeq (fun () -> IEnumerator.Singleton x) [] let truncate n (source: seq<'T>) = checkNonNull "source" source seq { let i = ref 0 use ie = source.GetEnumerator() while !i < n && ie.MoveNext() do i := !i + 1 yield ie.Current } [] let pairwise (source: seq<'T>) = checkNonNull "source" source seq { use ie = source.GetEnumerator() if ie.MoveNext() then let iref = ref ie.Current while ie.MoveNext() do let j = ie.Current yield (!iref, j) iref := j } [] let scan<'T,'State> f (z:'State) (source : seq<'T>) = checkNonNull "source" source seq { let zref = ref z yield !zref use ie = source.GetEnumerator() while ie.MoveNext() do zref := f !zref ie.Current yield !zref } [] let findIndex p (source:seq<_>) = checkNonNull "source" source use ie = source.GetEnumerator() let rec loop i = if ie.MoveNext() then if p ie.Current then i else loop (i+1) else raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) loop 0 [] let tryFindIndex p (source:seq<_>) = checkNonNull "source" source use ie = source.GetEnumerator() let rec loop i = if ie.MoveNext() then if p ie.Current then Some i else loop (i+1) else None loop 0 // windowed : int -> seq<'T> -> seq<'T[]> [] let windowed windowSize (source: seq<_>) = checkNonNull "source" source if windowSize <= 0 then invalidArg "windowSize" (SR.GetString(SR.inputMustBeNonNegative)) seq { let arr = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked windowSize let r = ref (windowSize-1) let i = ref 0 use e = source.GetEnumerator() while e.MoveNext() do arr.[!i] <- e.Current i := (!i + 1) % windowSize if !r = 0 then yield Array.init windowSize (fun j -> arr.[(!i+j) % windowSize]) else r := (!r - 1) } [] let cache (source : seq<'T>) = checkNonNull "source" source // Wrap a seq to ensure that it is enumerated just once and only as far as is necessary. // // This code is required to be thread safe. // The necessary calls should be called at most once (include .MoveNext() = false). // The enumerator should be disposed (and dropped) when no longer required. //------ // The state is (prefix,enumerator) with invariants: // * the prefix followed by elts from the enumerator are the initial sequence. // * the prefix contains only as many elements as the longest enumeration so far. let prefix = ResizeArray<_>() let enumeratorR = ref None : IEnumerator<'T> option option ref // nested options rather than new type... // None = Unstarted. // Some(Some e) = Started. // Some None = Finished. let oneStepTo i = // If possible, step the enumeration to prefix length i (at most one step). // Be speculative, since this could have already happened via another thread. if not (i < prefix.Count) then // is a step still required? // If not yet started, start it (create enumerator). match !enumeratorR with | None -> enumeratorR := Some (Some (source.GetEnumerator())) | Some _ -> () match (!enumeratorR).Value with | Some enumerator -> if enumerator.MoveNext() then prefix.Add(enumerator.Current) else enumerator.Dispose() // Move failed, dispose enumerator, enumeratorR := Some None // drop it and record finished. | None -> () let result = unfold (fun i -> // i being the next position to be returned // A lock is needed over the reads to prefix.Count since the list may be being resized // NOTE: we could change to a reader/writer lock here lock enumeratorR (fun () -> if i < prefix.Count then Some (prefix.[i],i+1) else oneStepTo i if i < prefix.Count then Some (prefix.[i],i+1) else None)) 0 let cleanup() = lock enumeratorR (fun () -> prefix.Clear() begin match !enumeratorR with | Some (Some e) -> IEnumerator.dispose e; | _ -> () end; enumeratorR := None) (new CachedSeq<_>(cleanup, result) :> seq<_>) [] [] let readonly (source:seq<_>) = checkNonNull "source" source mkSeq (fun () -> source.GetEnumerator()) [] let groupBy keyf seq = mkDelayedSeq (fun () -> // Wrap a StructBox(_) around all keys in case the key type is itself a type using null as a representation let dict = new Dictionary,ResizeArray<'T>>(StructBox<'Key>.Comparer) // Build the groupings seq |> iter (fun v -> let key = StructBox (keyf v) let ok,prev = dict.TryGetValue(key) if ok then prev.Add(v) else let prev = new ResizeArray<'T>(1) dict.[key] <- prev prev.Add(v)) // Trim the size of each result group. dict |> iter (fun group -> group.Value.TrimExcess()) // Return the sequence-of-sequences. Don't reveal the // internal collections: just reveal them as sequences dict |> map (fun group -> (group.Key.Value, readonly group.Value))) [] let distinct source = checkNonNull "source" source seq { // Wrap a StructBox(_) aroud all keys in case the key type is itself a type using null as a representation let dict = new Dictionary,obj>(StructBox<'T>.Comparer) for v in source do let key = StructBox v if not (dict.ContainsKey(key)) then dict.[key] <- null; yield v } [] let distinctBy keyf source = checkNonNull "source" source seq { // Wrap a StructBox(_) aroud all keys in case the key type is itself a type using null as a representation let dict = new Dictionary,obj>(StructBox<'Key>.Comparer) for v in source do let key = StructBox (keyf v) if not (dict.ContainsKey(key)) then dict.[key] <- null; yield v } [] let sortBy keyf source = checkNonNull "source" source mkDelayedSeq (fun () -> let array = source |> toArray Array.stableSortInPlaceBy keyf array array :> seq<_>) [] let sort source = checkNonNull "source" source mkDelayedSeq (fun () -> let array = source |> toArray Array.stableSortInPlace array array :> seq<_>) [] let countBy keyf source = checkNonNull "source" source mkDelayedSeq (fun () -> let dict = new Dictionary,int>(StructBox<'Key>.Comparer) // Build the groupings source |> iter (fun v -> let key = StructBox (keyf v ) let mutable prev = Unchecked.defaultof<_> let ok = dict.TryGetValue(key, &prev) if ok then dict.[key] <- prev + 1 else dict.[key] <- 1) dict |> map (fun group -> (group.Key.Value, group.Value))) [] let inline sum (source: seq< (^a) >) : ^a = use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^a) > while e.MoveNext() do acc <- Checked.(+) acc e.Current acc [] let inline sumBy (f : 'T -> ^U) (source: seq<'T>) : ^U = use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^U) > while e.MoveNext() do acc <- Checked.(+) acc (f e.Current) acc [] let inline average (source: seq< (^a) >) : ^a = checkNonNull "source" source use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^a) > let mutable count = 0 while e.MoveNext() do acc <- Checked.(+) acc e.Current count <- count + 1 if count = 0 then invalidArg "source" InputSequenceEmptyString LanguagePrimitives.DivideByInt< (^a) > acc count [] let inline averageBy (f : 'T -> ^U) (source: seq< 'T >) : ^U = checkNonNull "source" source use e = source.GetEnumerator() let mutable acc = LanguagePrimitives.GenericZero< (^U) > let mutable count = 0 while e.MoveNext() do acc <- Checked.(+) acc (f e.Current) count <- count + 1 if count = 0 then invalidArg "source" InputSequenceEmptyString; LanguagePrimitives.DivideByInt< (^U) > acc count [] let inline min (source: seq<_>) = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let mutable acc = e.Current while e.MoveNext() do let curr = e.Current if curr < acc then acc <- curr acc [] let inline minBy (f : 'T -> 'U) (source: seq<'T>) : 'T = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let first = e.Current let mutable acc = f first let mutable accv = first while e.MoveNext() do let currv = e.Current let curr = f currv if curr < acc then acc <- curr accv <- currv accv (* [] let inline minValBy (f : 'T -> 'U) (source: seq<'T>) : 'U = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let first = e.Current let mutable acc = f first while e.MoveNext() do let currv = e.Current let curr = f currv if curr < acc then acc <- curr acc *) [] let inline max (source: seq<_>) = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let mutable acc = e.Current while e.MoveNext() do let curr = e.Current if curr > acc then acc <- curr acc [] let inline maxBy (f : 'T -> 'U) (source: seq<'T>) : 'T = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let first = e.Current let mutable acc = f first let mutable accv = first while e.MoveNext() do let currv = e.Current let curr = f currv if curr > acc then acc <- curr accv <- currv accv (* [] let inline maxValBy (f : 'T -> 'U) (source: seq<'T>) : 'U = checkNonNull "source" source use e = source.GetEnumerator() if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString; let first = e.Current let mutable acc = f first while e.MoveNext() do let currv = e.Current let curr = f currv if curr > acc then acc <- curr acc *) [] let takeWhile p (source: seq<_>) = checkNonNull "source" source seq { use e = source.GetEnumerator() let latest = ref Unchecked.defaultof<_> while e.MoveNext() && (latest := e.Current; p !latest) do yield !latest } [] let skip count (source: seq<_>) = checkNonNull "source" source seq { use e = source.GetEnumerator() for _ in 1 .. count do if not (e.MoveNext()) then raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements)) while e.MoveNext() do yield e.Current } [] let skipWhile p (source: seq<_>) = checkNonNull "source" source seq { use e = source.GetEnumerator() let latest = ref (Unchecked.defaultof<_>) let ok = ref false while e.MoveNext() do if (latest := e.Current; (!ok || not (p !latest))) then ok := true yield !latest } [] let forall2 p (source1: seq<_>) (source2: seq<_>) = checkNonNull "source1" source1 checkNonNull "source2" source2 use e1 = source1.GetEnumerator() use e2 = source2.GetEnumerator() let mutable ok = true while (ok && e1.MoveNext() && e2.MoveNext()) do ok <- p e1.Current e2.Current; ok [] let exists2 p (source1: seq<_>) (source2: seq<_>) = checkNonNull "source1" source1 checkNonNull "source2" source2 use e1 = source1.GetEnumerator() use e2 = source2.GetEnumerator() let mutable ok = false while (not ok && e1.MoveNext() && e2.MoveNext()) do ok <- p e1.Current e2.Current; ok [] let head (source : seq<_>) = checkNonNull "source" source use e = source.GetEnumerator() if (e.MoveNext()) then e.Current else invalidArg "source" InputSequenceEmptyString [] let last (source : seq<_>) = checkNonNull "source" source use e = source.GetEnumerator() if e.MoveNext() then let mutable res = e.Current while (e.MoveNext()) do res <- e.Current res else invalidArg "source" InputSequenceEmptyString [] let exactlyOne (source : seq<_>) = checkNonNull "source" source use e = source.GetEnumerator() if e.MoveNext() then let v = e.Current if e.MoveNext() then invalidArg "source" (SR.GetString(SR.inputSequenceTooLong)) else v else invalidArg "source" InputSequenceEmptyString fsharp-3.0.34/src/fsharp/FSharp.Core/set.fs0000775000175000017500000011004312260314606017343 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open System.Collections open System.Collections.Generic open System.Diagnostics (* A classic functional language implementation of binary trees *) [] [] type SetTree<'T> when 'T : comparison = | SetEmpty // height = 0 | SetNode of 'T * SetTree<'T> * SetTree<'T> * int // height = int | SetOne of 'T // height = 1 // OPTIMIZATION: store SetNode(k,SetEmpty,SetEmpty,1) ---> SetOne(k) // REVIEW: performance rumour has it that the data held in SetNode and SetOne should be // exactly one cache line on typical architectures. They are currently // ~6 and 3 words respectively. [] module internal SetTree = let rec countAux s acc = match s with | SetNode(_,l,r,_) -> countAux l (countAux r (acc+1)) | SetOne(_) -> acc+1 | SetEmpty -> acc let count s = countAux s 0 #if TRACE_SETS_AND_MAPS let mutable traceCount = 0 let mutable numOnes = 0 let mutable numNodes = 0 let mutable numAdds = 0 let mutable numRemoves = 0 let mutable numLookups = 0 let mutable numUnions = 0 let mutable totalSizeOnNodeCreation = 0.0 let mutable totalSizeOnSetAdd = 0.0 let mutable totalSizeOnSetLookup = 0.0 let report() = traceCount <- traceCount + 1 if traceCount % 10000 = 0 then System.Console.WriteLine("#SetOne = {0}, #SetNode = {1}, #Add = {2}, #Remove = {3}, #Unions = {4}, #Lookups = {5}, avSetSizeOnNodeCreation = {6}, avSetSizeOnSetCreation = {7}, avSetSizeOnSetLookup = {8}",numOnes,numNodes,numAdds,numRemoves,numUnions,numLookups,(totalSizeOnNodeCreation / float (numNodes + numOnes)),(totalSizeOnSetAdd / float numAdds),(totalSizeOnSetLookup / float numLookups)) let SetOne n = report(); numOnes <- numOnes + 1; totalSizeOnNodeCreation <- totalSizeOnNodeCreation + 1.0; SetTree.SetOne n let SetNode (x,l,r,h) = report(); numNodes <- numNodes + 1; let n = SetTree.SetNode(x,l,r,h) totalSizeOnNodeCreation <- totalSizeOnNodeCreation + float (count n); n #else let SetOne n = SetTree.SetOne n let SetNode (x,l,r,h) = SetTree.SetNode(x,l,r,h) #endif let height t = match t with | SetEmpty -> 0 | SetOne _ -> 1 | SetNode (_,_,_,h) -> h #if CHECKED let rec checkInvariant t = // A good sanity check, loss of balance can hit perf match t with | SetEmpty -> true | SetOne _ -> true | SetNode (k,t1,t2,h) -> let h1 = height t1 let h2 = height t2 (-2 <= (h1 - h2) && (h1 - h2) <= 2) && checkInvariant t1 && checkInvariant t2 #endif let tolerance = 2 let mk l k r = match l,r with | SetEmpty,SetEmpty -> SetOne (k) | _ -> let hl = height l let hr = height r let m = if hl < hr then hr else hl SetNode(k,l,r,m+1) let rebalance t1 k t2 = let t1h = height t1 let t2h = height t2 if t2h > t1h + tolerance then // right is heavier than left match t2 with | SetNode(t2k,t2l,t2r,_) -> // one of the nodes must have height > height t1 + 1 if height t2l > t1h + 1 then // balance left: combination match t2l with | SetNode(t2lk,t2ll,t2lr,_) -> mk (mk t1 k t2ll) t2lk (mk t2lr t2k t2r) | _ -> failwith "rebalance" else // rotate left mk (mk t1 k t2l) t2k t2r | _ -> failwith "rebalance" else if t1h > t2h + tolerance then // left is heavier than right match t1 with | SetNode(t1k,t1l,t1r,_) -> // one of the nodes must have height > height t2 + 1 if height t1r > t2h + 1 then // balance right: combination match t1r with | SetNode(t1rk,t1rl,t1rr,_) -> mk (mk t1l t1k t1rl) t1rk (mk t1rr k t2) | _ -> failwith "rebalance" else mk t1l t1k (mk t1r k t2) | _ -> failwith "rebalance" else mk t1 k t2 let rec add (comparer: IComparer<'T>) k t = match t with | SetNode (k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (add comparer k l) k2 r elif c = 0 then t else rebalance l k2 (add comparer k r) | SetOne(k2) -> // nb. no check for rebalance needed for small trees, also be sure to reuse node already allocated let c = comparer.Compare(k,k2) if c < 0 then SetNode (k,SetEmpty,t,2) elif c = 0 then t else SetNode (k,t,SetEmpty,2) | SetEmpty -> SetOne(k) let rec balance comparer t1 k t2 = // Given t1 < k < t2 where t1 and t2 are "balanced", // return a balanced tree for . // Recall: balance means subtrees heights differ by at most "tolerance" match t1,t2 with | SetEmpty,t2 -> add comparer k t2 // drop t1 = empty | t1,SetEmpty -> add comparer k t1 // drop t2 = empty | SetOne k1,t2 -> add comparer k (add comparer k1 t2) | t1,SetOne k2 -> add comparer k (add comparer k2 t1) | SetNode(k1,t11,t12,h1),SetNode(k2,t21,t22,h2) -> // Have: (t11 < k1 < t12) < k < (t21 < k2 < t22) // Either (a) h1,h2 differ by at most 2 - no rebalance needed. // (b) h1 too small, i.e. h1+2 < h2 // (c) h2 too small, i.e. h2+2 < h1 if h1+tolerance < h2 then // case: b, h1 too small // push t1 into low side of t2, may increase height by 1 so rebalance rebalance (balance comparer t1 k t21) k2 t22 elif h2+tolerance < h1 then // case: c, h2 too small // push t2 into high side of t1, may increase height by 1 so rebalance rebalance t11 k1 (balance comparer t12 k t2) else // case: a, h1 and h2 meet balance requirement mk t1 k t2 let rec split (comparer : IComparer<'T>) pivot t = // Given a pivot and a set t // Return { x in t s.t. x < pivot }, pivot in t? , { x in t s.t. x > pivot } match t with | SetNode(k1,t11,t12,_) -> let c = comparer.Compare(pivot,k1) if c < 0 then // pivot t1 let t11Lo,havePivot,t11Hi = split comparer pivot t11 t11Lo,havePivot,balance comparer t11Hi k1 t12 elif c = 0 then // pivot is k1 t11,true,t12 else // pivot t2 let t12Lo,havePivot,t12Hi = split comparer pivot t12 balance comparer t11 k1 t12Lo,havePivot,t12Hi | SetOne k1 -> let c = comparer.Compare(k1,pivot) if c < 0 then t ,false,SetEmpty // singleton under pivot elif c = 0 then SetEmpty,true ,SetEmpty // singleton is pivot else SetEmpty,false,t // singleton over pivot | SetEmpty -> SetEmpty,false,SetEmpty let rec spliceOutSuccessor t = match t with | SetEmpty -> failwith "internal error: Map.spliceOutSuccessor" | SetOne (k2) -> k2,SetEmpty | SetNode (k2,l,r,_) -> match l with | SetEmpty -> k2,r | _ -> let k3,l' = spliceOutSuccessor l in k3,mk l' k2 r let rec remove (comparer: IComparer<'T>) k t = match t with | SetEmpty -> t | SetOne (k2) -> let c = comparer.Compare(k,k2) if c = 0 then SetEmpty else t | SetNode (k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (remove comparer k l) k2 r elif c = 0 then match l,r with | SetEmpty,_ -> r | _,SetEmpty -> l | _ -> let sk,r' = spliceOutSuccessor r mk l sk r' else rebalance l k2 (remove comparer k r) let rec mem (comparer: IComparer<'T>) k t = match t with | SetNode(k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then mem comparer k l elif c = 0 then true else mem comparer k r | SetOne(k2) -> (comparer.Compare(k,k2) = 0) | SetEmpty -> false let rec iter f t = match t with | SetNode(k2,l,r,_) -> iter f l; f k2; iter f r | SetOne(k2) -> f k2 | SetEmpty -> () let rec foldBack f m x = match m with | SetNode(k,l,r,_) -> foldBack f l (f k (foldBack f r x)) | SetOne(k) -> f k x | SetEmpty -> x let rec fold f x m = match m with | SetNode(k,l,r,_) -> let x = fold f x l in let x = f x k fold f x r | SetOne(k) -> f x k | SetEmpty -> x let rec forall f m = match m with | SetNode(k2,l,r,_) -> f k2 && forall f l && forall f r | SetOne(k2) -> f k2 | SetEmpty -> true let rec exists f m = match m with | SetNode(k2,l,r,_) -> f k2 || exists f l || exists f r | SetOne(k2) -> f k2 | SetEmpty -> false let isEmpty m = match m with | SetEmpty -> true | _ -> false let subset comparer a b = forall (fun x -> mem comparer x b) a let psubset comparer a b = forall (fun x -> mem comparer x b) a && exists (fun x -> not (mem comparer x a)) b let rec filterAux comparer f s acc = match s with | SetNode(k,l,r,_) -> let acc = if f k then add comparer k acc else acc filterAux comparer f l (filterAux comparer f r acc) | SetOne(k) -> if f k then add comparer k acc else acc | SetEmpty -> acc let filter comparer f s = filterAux comparer f s SetEmpty let rec diffAux comparer m acc = match m with | SetNode(k,l,r,_) -> diffAux comparer l (diffAux comparer r (remove comparer k acc)) | SetOne(k) -> remove comparer k acc | SetEmpty -> acc let diff comparer a b = diffAux comparer b a let rec union comparer t1 t2 = // Perf: tried bruteForce for low heights, but nothing significant match t1,t2 with | SetNode(k1,t11,t12,h1),SetNode(k2,t21,t22,h2) -> // (t11 < k < t12) AND (t21 < k2 < t22) // Divide and Quonquer: // Suppose t1 is largest. // Split t2 using pivot k1 into lo and hi. // Union disjoint subproblems and then combine. if h1 > h2 then let lo,_,hi = split comparer k1 t2 in balance comparer (union comparer t11 lo) k1 (union comparer t12 hi) else let lo,_,hi = split comparer k2 t1 in balance comparer (union comparer t21 lo) k2 (union comparer t22 hi) | SetEmpty,t -> t | t,SetEmpty -> t | SetOne k1,t2 -> add comparer k1 t2 | t1,SetOne k2 -> add comparer k2 t1 let rec intersectionAux comparer b m acc = match m with | SetNode(k,l,r,_) -> let acc = intersectionAux comparer b r acc let acc = if mem comparer k b then add comparer k acc else acc intersectionAux comparer b l acc | SetOne(k) -> if mem comparer k b then add comparer k acc else acc | SetEmpty -> acc let intersection comparer a b = intersectionAux comparer b a SetEmpty let partition1 comparer f k (acc1,acc2) = if f k then (add comparer k acc1,acc2) else (acc1,add comparer k acc2) let rec partitionAux comparer f s acc = match s with | SetNode(k,l,r,_) -> let acc = partitionAux comparer f r acc let acc = partition1 comparer f k acc partitionAux comparer f l acc | SetOne(k) -> partition1 comparer f k acc | SetEmpty -> acc let partition comparer f s = partitionAux comparer f s (SetEmpty,SetEmpty) // It's easier to get many less-important algorithms right using this active pattern let (|MatchSetNode|MatchSetEmpty|) s = match s with | SetNode(k2,l,r,_) -> MatchSetNode(k2,l,r) | SetOne(k2) -> MatchSetNode(k2,SetEmpty,SetEmpty) | SetEmpty -> MatchSetEmpty let rec minimumElementAux s n = match s with | SetNode(k,l,_,_) -> minimumElementAux l k | SetOne(k) -> k | SetEmpty -> n and minimumElementOpt s = match s with | SetNode(k,l,_,_) -> Some(minimumElementAux l k) | SetOne(k) -> Some k | SetEmpty -> None and maximumElementAux s n = match s with | SetNode(k,_,r,_) -> maximumElementAux r k | SetOne(k) -> k | SetEmpty -> n and maximumElementOpt s = match s with | SetNode(k,_,r,_) -> Some(maximumElementAux r k) | SetOne(k) -> Some(k) | SetEmpty -> None let minimumElement s = match minimumElementOpt s with | Some(k) -> k | None -> invalidArg "s" (SR.GetString(SR.setContainsNoElements)) let maximumElement s = match maximumElementOpt s with | Some(k) -> k | None -> invalidArg "s" (SR.GetString(SR.setContainsNoElements)) //-------------------------------------------------------------------------- // Imperative left-to-right iterators. //-------------------------------------------------------------------------- [] type SetIterator<'T> when 'T : comparison = { mutable stack: SetTree<'T> list; // invariant: always collapseLHS result mutable started : bool // true when MoveNext has been called } // collapseLHS: // a) Always returns either [] or a list starting with SetOne. // b) The "fringe" of the set stack is unchanged. let rec collapseLHS stack = match stack with | [] -> [] | SetEmpty :: rest -> collapseLHS rest | SetOne _ :: _ -> stack | SetNode(k,l,r,_) :: rest -> collapseLHS (l :: SetOne k :: r :: rest) let mkIterator s = { stack = collapseLHS [s]; started = false } let notStarted() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationNotStarted))) let alreadyFinished() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationAlreadyFinished))) let current i = if i.started then match i.stack with | SetOne k :: _ -> k | [] -> alreadyFinished() | _ -> failwith "Please report error: Set iterator, unexpected stack for current" else notStarted() let rec moveNext i = if i.started then match i.stack with | SetOne _ :: rest -> i.stack <- collapseLHS rest; not i.stack.IsEmpty | [] -> false | _ -> failwith "Please report error: Set iterator, unexpected stack for moveNext" else i.started <- true; // The first call to MoveNext "starts" the enumeration. not i.stack.IsEmpty let mkIEnumerator s = let i = ref (mkIterator s) { new IEnumerator<_> with member x.Current = current !i interface IEnumerator with member x.Current = box (current !i) member x.MoveNext() = moveNext !i member x.Reset() = i := mkIterator s interface System.IDisposable with member x.Dispose() = () } //-------------------------------------------------------------------------- // Set comparison. This can be expensive. //-------------------------------------------------------------------------- let rec compareStacks (comparer: IComparer<'T>) l1 l2 = match l1,l2 with | [],[] -> 0 | [],_ -> -1 | _ ,[] -> 1 | (SetEmpty _ :: t1),(SetEmpty :: t2) -> compareStacks comparer t1 t2 | (SetOne(n1k) :: t1),(SetOne(n2k) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer t1 t2 | (SetOne(n1k) :: t1),(SetNode(n2k,SetEmpty,n2r,_) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (SetEmpty :: t1) (n2r :: t2) | (SetNode(n1k,(SetEmpty as emp),n1r,_) :: t1),(SetOne(n2k) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (n1r :: t1) (emp :: t2) | (SetNode(n1k,SetEmpty,n1r,_) :: t1),(SetNode(n2k,SetEmpty,n2r,_) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (n1r :: t1) (n2r :: t2) | (SetOne(n1k) :: t1),_ -> compareStacks comparer (SetEmpty :: SetOne(n1k) :: t1) l2 | (SetNode(n1k,n1l,n1r,_) :: t1),_ -> compareStacks comparer (n1l :: SetNode(n1k,SetEmpty,n1r,0) :: t1) l2 | _,(SetOne(n2k) :: t2) -> compareStacks comparer l1 (SetEmpty :: SetOne(n2k) :: t2) | _,(SetNode(n2k,n2l,n2r,_) :: t2) -> compareStacks comparer l1 (n2l :: SetNode(n2k,SetEmpty,n2r,0) :: t2) let compare comparer s1 s2 = match s1,s2 with | SetEmpty,SetEmpty -> 0 | SetEmpty,_ -> -1 | _,SetEmpty -> 1 | _ -> compareStacks comparer [s1] [s2] let choose s = minimumElement s let toList s = let rec loop m acc = match m with | SetNode(k,l,r,_) -> loop l (k :: loop r acc) | SetOne(k) -> k ::acc | SetEmpty -> acc loop s [] let copyToArray s (arr: _[]) i = let j = ref i iter (fun x -> arr.[!j] <- x; j := !j + 1) s let toArray s = let n = (count s) let res = Array.zeroCreate n copyToArray s res 0; res let rec mkFromEnumerator comparer acc (e : IEnumerator<_>) = if e.MoveNext() then mkFromEnumerator comparer (add comparer e.Current acc) e else acc let ofSeq comparer (c : IEnumerable<_>) = use ie = c.GetEnumerator() mkFromEnumerator comparer SetEmpty ie let ofArray comparer l = Array.fold (fun acc k -> add comparer k acc) SetEmpty l [] [] #if FX_NO_DEBUG_PROXIES #else [>)>] #endif #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] type Set<[]'T when 'T : comparison >(comparer:IComparer<'T>, tree: SetTree<'T>) = #if FX_NO_BINARY_SERIALIZATION #else [] // NOTE: This type is logically immutable. This field is only mutated during deserialization. let mutable comparer = comparer [] // NOTE: This type is logically immutable. This field is only mutated during deserialization. let mutable tree = tree // NOTE: This type is logically immutable. This field is only mutated during serialization and deserialization. // // WARNING: The compiled name of this field may never be changed because it is part of the logical // WARNING: permanent serialization format for this type. let mutable serializedData = null #endif // We use .NET generics per-instantiation static fields to avoid allocating a new object for each empty // set (it is just a lookup into a .NET table of type-instantiation-indexed static fields). static let empty : Set<'T> = let comparer = LanguagePrimitives.FastGenericComparer<'T> new Set<'T>(comparer, SetEmpty) #if FX_NO_BINARY_SERIALIZATION #else [] member __.OnSerializing(context: System.Runtime.Serialization.StreamingContext) = ignore(context) serializedData <- SetTree.toArray tree // Do not set this to null, since concurrent threads may also be serializing the data //[] //member __.OnSerialized(context: System.Runtime.Serialization.StreamingContext) = // serializedData <- null [] member __.OnDeserialized(context: System.Runtime.Serialization.StreamingContext) = ignore(context) comparer <- LanguagePrimitives.FastGenericComparer<'T> tree <- SetTree.ofArray comparer serializedData serializedData <- null #endif #if FX_NO_DEBUG_DISPLAYS #else [] #endif member internal set.Comparer = comparer //[] member internal set.Tree : SetTree<'T> = tree #if FX_NO_DEBUG_DISPLAYS #else [] #endif static member Empty : Set<'T> = empty member s.Add(x) : Set<'T> = #if TRACE_SETS_AND_MAPS SetTree.report() SetTree.numAdds <- SetTree.numAdds + 1 SetTree.totalSizeOnSetAdd <- SetTree.totalSizeOnSetAdd + float (SetTree.count s.Tree) #endif new Set<'T>(s.Comparer,SetTree.add s.Comparer x s.Tree ) member s.Remove(x) : Set<'T> = #if TRACE_SETS_AND_MAPS SetTree.report() SetTree.numRemoves <- SetTree.numRemoves + 1 #endif new Set<'T>(s.Comparer,SetTree.remove s.Comparer x s.Tree) member s.Count = SetTree.count s.Tree member s.Contains(x) = #if TRACE_SETS_AND_MAPS SetTree.report() SetTree.numLookups <- SetTree.numLookups + 1 SetTree.totalSizeOnSetLookup <- SetTree.totalSizeOnSetLookup + float (SetTree.count s.Tree) #endif SetTree.mem s.Comparer x s.Tree member s.Iterate(x) = SetTree.iter x s.Tree member s.Fold f z = SetTree.fold (fun x z -> f z x) z s.Tree #if FX_NO_DEBUG_DISPLAYS #else [] #endif member s.IsEmpty = SetTree.isEmpty s.Tree member s.Partition f : Set<'T> * Set<'T> = match s.Tree with | SetEmpty -> s,s | _ -> let t1,t2 = SetTree.partition s.Comparer f s.Tree in new Set<_>(s.Comparer,t1), new Set<_>(s.Comparer,t2) member s.Filter f : Set<'T> = match s.Tree with | SetEmpty -> s | _ -> new Set<_>(s.Comparer,SetTree.filter s.Comparer f s.Tree) member s.Map f : Set<'U> = let comparer = LanguagePrimitives.FastGenericComparer<'U> new Set<_>(comparer,SetTree.fold (fun acc k -> SetTree.add comparer (f k) acc) (SetTree<_>.SetEmpty) s.Tree) member s.Exists f = SetTree.exists f s.Tree member s.ForAll f = SetTree.forall f s.Tree [] static member (-) (a: Set<'T>, b: Set<'T>) = match a.Tree with | SetEmpty -> a (* 0 - B = 0 *) | _ -> match b.Tree with | SetEmpty -> a (* A - 0 = A *) | _ -> new Set<_>(a.Comparer,SetTree.diff a.Comparer a.Tree b.Tree) [] static member (+) (a: Set<'T>, b: Set<'T>) = #if TRACE_SETS_AND_MAPS SetTree.report() SetTree.numUnions <- SetTree.numUnions + 1 #endif match b.Tree with | SetEmpty -> a (* A U 0 = A *) | _ -> match a.Tree with | SetEmpty -> b (* 0 U B = B *) | _ -> new Set<_>(a.Comparer,SetTree.union a.Comparer a.Tree b.Tree) static member Intersection(a: Set<'T>, b: Set<'T>) : Set<'T> = match b.Tree with | SetEmpty -> b (* A INTER 0 = 0 *) | _ -> match a.Tree with | SetEmpty -> a (* 0 INTER B = 0 *) | _ -> new Set<_>(a.Comparer,SetTree.intersection a.Comparer a.Tree b.Tree) static member Union(sets:seq>) : Set<'T> = Seq.fold (fun s1 s2 -> s1 + s2) Set<'T>.Empty sets static member Intersection(sets:seq>) : Set<'T> = Seq.reduce (fun s1 s2 -> Set<_>.Intersection(s1,s2)) sets static member Equality(a: Set<'T>, b: Set<'T>) = (SetTree.compare a.Comparer a.Tree b.Tree = 0) static member Compare(a: Set<'T>, b: Set<'T>) = SetTree.compare a.Comparer a.Tree b.Tree #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.Choose = SetTree.choose x.Tree #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.MinimumElement = SetTree.minimumElement x.Tree #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.MaximumElement = SetTree.maximumElement x.Tree member x.IsSubsetOf(y: Set<'T>) = SetTree.subset x.Comparer x.Tree y.Tree member x.IsSupersetOf(y: Set<'T>) = SetTree.subset x.Comparer y.Tree x.Tree member x.IsProperSubsetOf(y: Set<'T>) = SetTree.psubset x.Comparer x.Tree y.Tree member x.IsProperSupersetOf(y: Set<'T>) = SetTree.psubset x.Comparer y.Tree x.Tree member x.ToList () = SetTree.toList x.Tree member x.ToArray () = SetTree.toArray x.Tree member this.ComputeHashCode() = let combineHash x y = (x <<< 1) + y + 631 let mutable res = 0 for x in this do res <- combineHash res (hash x) abs res override this.GetHashCode() = this.ComputeHashCode() override this.Equals(that) = match that with | :? Set<'T> as that -> use e1 = (this :> seq<_>).GetEnumerator() use e2 = (that :> seq<_>).GetEnumerator() let rec loop () = let m1 = e1.MoveNext() let m2 = e2.MoveNext() (m1 = m2) && (not m1 || ((e1.Current = e2.Current) && loop())) loop() | _ -> false interface System.IComparable with member this.CompareTo(that: obj) = SetTree.compare this.Comparer this.Tree ((that :?> Set<'T>).Tree) interface ICollection<'T> with member s.Add(x) = ignore(x); raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Clear() = raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Remove(x) = ignore(x); raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Contains(x) = SetTree.mem s.Comparer x s.Tree member s.CopyTo(arr,i) = SetTree.copyToArray s.Tree arr i member s.IsReadOnly = true member s.Count = SetTree.count s.Tree interface IEnumerable<'T> with member s.GetEnumerator() = SetTree.mkIEnumerator s.Tree interface IEnumerable with override s.GetEnumerator() = (SetTree.mkIEnumerator s.Tree :> IEnumerator) static member Singleton(x:'T) : Set<'T> = Set<'T>.Empty.Add(x) new (elements : seq<'T>) = let comparer = LanguagePrimitives.FastGenericComparer<'T> new Set<_>(comparer,SetTree.ofSeq comparer elements) static member Create(elements : seq<'T>) = new Set<'T>(elements) static member FromArray(arr : 'T array) : Set<'T> = let comparer = LanguagePrimitives.FastGenericComparer<'T> new Set<_>(comparer,SetTree.ofArray comparer arr) override x.ToString() = match List.ofSeq (Seq.truncate 4 x) with | [] -> "set []" | [h1] -> System.Text.StringBuilder().Append("set [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("]").ToString() | [h1;h2] -> System.Text.StringBuilder().Append("set [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("]").ToString() | [h1;h2;h3] -> System.Text.StringBuilder().Append("set [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h3).Append("]").ToString() | h1 :: h2 :: h3 :: _ -> System.Text.StringBuilder().Append("set [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h3).Append("; ... ]").ToString() and [] SetDebugView<'T when 'T : comparison>(v: Set<'T>) = #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.Items = v |> Seq.truncate 1000 |> Seq.toArray namespace Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open System.Collections open System.Collections.Generic open System.Diagnostics [] [] module Set = [] let isEmpty (s : Set<'T>) = s.IsEmpty [] let contains x (s : Set<'T>) = s.Contains(x) [] let add x (s : Set<'T>) = s.Add(x) [] let singleton x = Set<'T>.Singleton(x) [] let remove x (s : Set<'T>) = s.Remove(x) [] let union (s1 : Set<'T>) (s2 : Set<'T>) = s1 + s2 [] let unionMany sets = Set<_>.Union(sets) [] let intersect (s1 : Set<'T>) (s2 : Set<'T>) = Set<'T>.Intersection(s1,s2) [] let intersectMany sets = Set<_>.Intersection(sets) [] let iter f (s : Set<'T>) = s.Iterate(f) [] let empty<'T when 'T : comparison> : Set<'T> = Set<'T>.Empty [] let forall f (s : Set<'T>) = s.ForAll f [] let exists f (s : Set<'T>) = s.Exists f [] let filter f (s : Set<'T>) = s.Filter f [] let partition f (s : Set<'T>) = s.Partition f [] let fold<'T,'State when 'T : comparison> f (z:'State) (s : Set<'T>) = SetTree.fold f z s.Tree [] let foldBack<'T,'State when 'T : comparison> f (s : Set<'T>) (z:'State) = SetTree.foldBack f s.Tree z [] let map f (s : Set<'T>) = s.Map f [] let count (s : Set<'T>) = s.Count [] let minimumElement (s : Set<'T>) = s.MinimumElement [] let maximumElement (s : Set<'T>) = s.MaximumElement [] let ofList l = new Set<_>(List.toSeq l) [] let ofArray (l : 'T array) = Set<'T>.FromArray(l) [] let toList (s : Set<'T>) = s.ToList() [] let toArray (s : Set<'T>) = s.ToArray() [] let toSeq (s : Set<'T>) = (s :> seq<'T>) [] let ofSeq (c : seq<_>) = new Set<_>(c) [] let difference (s1: Set<'T>) (s2: Set<'T>) = s1 - s2 [] let isSubset (x:Set<'T>) (y: Set<'T>) = SetTree.subset x.Comparer x.Tree y.Tree [] let isSuperset (x:Set<'T>) (y: Set<'T>) = SetTree.subset x.Comparer y.Tree x.Tree [] let isProperSubset (x:Set<'T>) (y: Set<'T>) = SetTree.psubset x.Comparer x.Tree y.Tree [] let isProperSuperset (x:Set<'T>) (y: Set<'T>) = SetTree.psubset x.Comparer y.Tree x.Tree [] let minElement (s : Set<'T>) = s.MinimumElement [] let maxElement (s : Set<'T>) = s.MaximumElement fsharp-3.0.34/src/fsharp/FSharp.Core/Makefile.in0000664000175000017500000000362412260314606020266 0ustar chrischrisNAME=FSharp.Core ASSEMBLY = $(NAME).dll DELAY_SIGN=1 TOKEN=$(DELAY_SIGN_TOKEN) srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make FSC=$(protodir)fsc-proto.exe FLAGS_2_0 += \ $(DELAY_SIGN_FLAGS) \ --compiling-fslib \ --nowarn:75,1204 \ --target:library \ --compiling-fslib-20:$(monogacdir40)/mscorlib.dll \ --extraoptimizationloops:1 FLAGS_2_1 += \ $(DELAY_SIGN_FLAGS) \ --compiling-fslib \ --nowarn:75,1204 \ --target:library \ --extraoptimizationloops:1 FLAGS_4_0 += \ $(DELAY_SIGN_FLAGS) \ --compiling-fslib \ --nowarn:75,1204 \ --target:library \ --compiling-fslib-40 \ --define:BE_SECURITY_TRANSPARENT \ --define:QUERIES_IN_FSLIB \ --define:PUT_TYPE_PROVIDERS_IN_FSCORE \ --extraoptimizationloops:1 DEFINES += \ --define:RUNTIME sources = \ prim-types-prelude.fsi \ prim-types-prelude.fs \ SR.fs \ prim-types.fsi \ prim-types.fs \ local.fsi \ local.fs \ array2.fsi \ array2.fs \ option.fsi \ option.fs \ collections.fsi \ collections.fs \ seq.fsi \ seq.fs \ string.fsi \ string.fs \ list.fsi \ list.fs \ array.fsi \ array.fs \ array3.fsi \ array3.fs \ map.fsi \ map.fs \ set.fsi \ set.fs \ reflect.fsi \ reflect.fs \ event.fsi \ event.fs \ math/n.fsi \ math/n.fs \ math/z.fsi \ math/z.fs \ ../../utils/sformat.fsi \ ../../utils/sformat.fs \ printf.fsi \ printf.fs \ quotations.fsi \ quotations.fs \ nativeptr.fsi \ nativeptr.fs \ control.fsi \ control.fs \ Linq.fsi \ Linq.fs \ MutableTuple.fs \ QueryExtensions.fs \ Query.fsi \ Query.fs \ SI.fs \ fslib-extra-pervasives.fsi \ fslib-extra-pervasives.fs \ ../../assemblyinfo/assemblyinfo.FSharp.Core.dll.fs RESOURCES = \ $(tmpdir)FSCore.resources $(tmpdir)FSCore.resources: FSCore.resx resgen $< $@ include $(topdir)/src/fsharp/targets.make do-final: do-4-0 do-2-0 do-2-1 clean: clean-4-0 clean-2-0 clean-2-1 install: install-lib-4 install-lib-4-5 install-lib-2 install-lib-2-1 fsharp-3.0.34/src/fsharp/FSharp.Core/option.fsi0000775000175000017500000001502312260314606020233 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open System open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections [] /// Basic operations on options. module Option = /// Returns true if the option is not None. /// The input option. /// True if the option is not None. [] val isSome: option:'T option -> bool /// Returns true if the option is None. /// The input option. /// True if the option is None. [] val isNone: option:'T option -> bool /// Gets the value associated with the option. /// The input option. /// The value within the option. /// Thrown when the option is None. [] val get: option:'T option -> 'T /// count inp evaluates to match inp with None -> 0 | Some _ -> 1. /// The input option. /// A zero if the option is None, a one otherwise. [] val count: option:'T option -> int /// fold f s inp evaluates to match inp with None -> s | Some x -> f s x. /// A function to update the state data when given a value from an option. /// The initial state. /// The input option. /// The original state if the option is None, otherwise it returns the updated state with the folder /// and the option value. [] val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> option:'T option -> 'State /// fold f inp s evaluates to match inp with None -> s | Some x -> f x s. /// A function to update the state data when given a value from an option. /// The input option. /// The initial state. /// The original state if the option is None, otherwise it returns the updated state with the folder /// and the option value. [] val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> option:'T option -> state:'State -> 'State /// exists p inp evaluates to match inp with None -> false | Some x -> p x. /// A function that evaluates to a boolean when given a value from the option type. /// The input option. /// False if the option is None, otherwise it returns the result of applying the predicate /// to the option value. [] val exists: predicate:('T -> bool) -> option:'T option -> bool /// forall p inp evaluates to match inp with None -> true | Some x -> p x. /// A function that evaluates to a boolean when given a value from the option type. /// The input option. /// True if the option is None, otherwise it returns the result of applying the predicate /// to the option value. [] val forall: predicate:('T -> bool) -> option:'T option -> bool /// iter f inp executes match inp with None -> () | Some x -> f x. /// A function to apply to the option value. /// The input option. /// Unit if the option is None, otherwise it returns the result of applying the predicate /// to the option value. [] val iter: action:('T -> unit) -> option:'T option -> unit /// map f inp evaluates to match inp with None -> None | Some x -> Some (f x). /// A function to apply to the option value. /// The input option. /// An option of the input value after applying the mapping function, or None if the input is None. [] val map: mapping:('T -> 'U) -> option:'T option -> 'U option /// bind f inp evaluates to match inp with None -> None | Some x -> f x /// A function that takes the value of type T from an option and transforms it into /// an option containing a value of type U. /// The input option. /// An option of the output type of the binder. [] val bind: binder:('T -> 'U option) -> option:'T option -> 'U option /// Convert the option to an array of length 0 or 1. /// The input option. /// The result array. [] val toArray: option:'T option -> 'T[] /// Convert the option to a list of length 0 or 1. /// The input option. /// The result list. [] val toList: option:'T option -> 'T list fsharp-3.0.34/src/fsharp/FSharp.Core/math/0000775000175000017500000000000012260314606017145 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Core/math/n.fs0000775000175000017500000016324712260314606017754 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Math #if FX_NO_BIGINT open System open System.Diagnostics.CodeAnalysis open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics type ints = int array [] type internal BigNat = // Have n = sum (from i=0 to bound) a.[i] * baseN ^ i // Have 0 <= a.[i] < baseN. //------ // Invariant: bound is least such, i.e. bound=0 or (a.[bound-1] is highest coeff). // Zero is {bound=0,a=...}. // Naturals are a normal form, // but not structurally so, // since arrays may have non-contributing cells at a.[bound] and beyond. // { mutable bound : int; // non-zero coeff must be 0...(bound-1) digits : ints // must have at least elts 0...(bound-1), // maybe more (which should be zero!). // Actually, the "zero" condition may be relaxed. // } module internal BigNatModule = //------------------------------------------------------------------------- // misc //----------------------------------------------------------------------- #if SELFTEST let check b = if not b then failwith "assertion failwith" #endif module FFT = let rec pow32 x n = if n=0 then 1 elif n % 2 = 0 then pow32 (x*x) (n / 2) else x* pow32 (x*x) (n / 2) let leastBounding2Power b = let rec findBounding2Power b tp i = if b<=tp then tp,i else findBounding2Power b (tp*2) (i+1) in findBounding2Power b 1 0 //------------------------------------------------------------------------- // p = 2^k.m + 1 prime and w primitive 2^k root of 1 mod p //----------------------------------------------------------------------- // Given p = 2^k.m + 1 prime and w a primitive 2^k root of unity (mod p). // Required to define arithmetic ops for Fp = field modulo p. // The following are possible choices for p. // p, k, m, g, w // let p,k,m,g,w = 97L, 4, 6, 5, 8 // p is 7 bit // let p,k,m,g,w = 769L, 8, 3, 7, 7 // p is 10 bit // let p,k,m,g,w = 7681L, 8, 30, 13, 198 // p is 13 bit // let p,k,m,g,w = 12289L, 10, 12, 11, 49 // p is 14 bit // let p,k,m,g,w = 167772161L, 25, 5, 557092, 39162105 // p is 28 bit // let p,k,m,g,w = 469762049L, 26, 7, 1226571, 288772249 // p is 29 bit let p,k,m,g,w = 2013265921L, 27, 15, 31, 440564289 // p is 31 bit let primeP = p let maxBitsInsideFp = 30 //------------------------------------------------------------------------- // Fp = finite field mod p - rep is uint32 //----------------------------------------------------------------------- type fp = uint32 // operations in Fp (finite field size p) module Fp = //module I = UInt32 let p = 2013265921ul : fp let p64 = 2013265921UL : uint64 let toInt (x:fp) : int = int32 x let ofInt32 (x:int) : fp = uint32 x let mzero : fp = 0ul let mone : fp = 1ul let mtwo : fp = 2ul let inline madd (x:fp) (y:fp) : fp = (x + y) % p let inline msub (x:fp) (y:fp) : fp = (x + p - y) % p let inline mmul (x:fp) (y:fp) : fp = uint32 ((uint64 x * uint64 y) % p64) let rec mpow x n = if n=0 then mone elif n % 2=0 then mpow (mmul x x) (n / 2) else mmul x (mpow (mmul x x) (n / 2)) let rec mpowL x n = if n = 0L then mone elif n % 2L = 0L then mpowL (mmul x x) (n / 2L) else mmul x (mpowL (mmul x x) (n / 2L)) // Have the w is primitive 2^kth root of 1 in Zp let m2PowNthRoot n = // Find x s.t. x is (2^n)th root of unity. // // pow w (pow 2 k) = 1 primitively. // = pow w (pow 2 ((k-n)+n)) // = pow w (pow 2 (k-n) * pow 2 n) // = pow (pow w (pow 2 (k-n))) (pow 2 n) // // Take wn = pow (pow w (pow 2 (k-n))) mpow (uint32 w) (pow32 2 (k-n)) let minv x = mpowL x (primeP - 2L) //------------------------------------------------------------------------- // FFT - in place low garbage //----------------------------------------------------------------------- open Fp let rec computeFFT lambda mu n w (u: _[]) (res: _[]) offset = // Given n a 2-power, // w an nth root of 1 in Fp, and // lambda, mu and u(x) defining // poly(lambda,mu,x) = sum(i pow32 2 i) let computeFftPaddedPolynomialProduct bigK k u v = // REQUIRES: bigK = 2^k // REQUIRES: Array lengths of u and v = bigK. // REQUIRES: degree(uv) <= bigK-1 // --- // Given u,v polynomials. // Computes the product polynomial by FFT. // For correctness, // require the result coeff to be in range [0,p-1], for p defining Fp above. #if SELFTEST check ( k <= maxTwoPower ); check ( bigK = twoPowerTable.[k] ); check ( u.Length = bigK ); check ( v.Length = bigK ); #endif // Find 2^k primitive root of 1 let w = m2PowNthRoot k // FFT let n = bigK let uT = computFftInPlace n w u let vT = computFftInPlace n w v // Evaluate let rT = Array.init n (fun i -> mmul uT.[i] vT.[i]) // INV FFT let r = computeInverseFftInPlace n w rT r let padTo n (u: _ array) = let uBound = u.Length Array.init n (fun i -> if i mmul uT.[i] vT.[i]) // INV FFT let r = computeInverseFftInPlace n w rT Array.map Fp.toInt r //------------------------------------------------------------------------- // fp exports //----------------------------------------------------------------------- open Fp let mzero = mzero let mone = mone let maxFp = msub Fp.p mone //------------------------------------------------------------------------- // FFT - reference implementation //----------------------------------------------------------------------- #if SELFTEST open Fp let rec computeFftReference n w u = // Given n a 2-power, // w an nth root of 1 in Fp, and // u(x) = sum(i u.[2*i]) let uodd = Array.init (n/2) (fun i -> u.[2*i+1]) let uevenFT = computeFftReference (n/2) (mmul w w) ueven let uoddFT = computeFftReference (n/2) (mmul w w) uodd Array.init n (fun j -> if j < n/2 then madd (uevenFT.[j]) (mmul (mpow w j) (uoddFT.[j])) else let j = j - (n/2) msub (uevenFT.[j]) (mmul (mpow w j) (uoddFT.[j]))) #endif open FFT type n = BigNat let bound (n: n) = n.bound let setBound (n: n) (v:int32) = n.bound <- v let coeff (n:n) i = n.digits.[i] let coeff64 (n:n) i = int64 (coeff n i) let setCoeff (n:n) i v = n.digits.[i] <- v let rec pow64 x n = if n=0 then 1L elif n % 2 = 0 then pow64 (x * x) (n / 2) else x * (pow64 (x * x) (n / 2)) let rec pow32 x n = if n=0 then 1 elif n % 2 = 0 then pow32 (x*x) (n / 2) else x* pow32 (x*x) (n / 2) let hash(n) = let mutable res = 0 for i = 0 to n.bound - 1 do // could stop soon, it's "hash" res <- n.digits.[i] + (res <<< 3) done; res //---------------------------------------------------------------------------- // misc //-------------------------------------------------------------------------- #if CHECKED let check b str = if not b then failwith ("check failed: " + str) #endif let maxInt a b = if a int32 let inline div64base (x:int64) = int64 (uint64 x >>> baseBits) let divbase x = int32 (uint32 x >>> baseBits) let modbase x = (x &&& baseMask) let inline index z i = if i < z.bound then z.digits.[i] else 0 let createN b = { bound = b; digits = Array.zeroCreate b } let copyN x = { bound = x.bound; digits = Array.copy x.digits } // could copy just enough... let normN n = // normalises bound let rec findLeastBound (na:ints) i = if i = -1 || na.[i]<>0 then i+1 else findLeastBound na (i-1) let bound = findLeastBound n.digits (n.bound-1) n.bound <- bound; n let boundInt = 2 // int will fit with bound=2 let boundInt64 = 3 // int64 will fit with bound=3 let boundBase = 1 // base will fit with bound=1 - obviously! //---------------------------------------------------------------------------- // base, coefficients, poly //-------------------------------------------------------------------------- let embed x = let x = if x<0 then 0 else x // no -ve naturals if x < baseN then let r = createN 1 r.digits.[0] <- x; normN r else let r = createN boundInt for i = 0 to boundInt - 1 do r.digits.[i] <- (x / pow32 baseN i) % baseN done; normN r let embed64 x = let x = if x<0L then 0L else x // no -ve naturals let r = createN boundInt64 for i = 0 to boundInt64-1 do r.digits.[i] <- int32 ( (x / pow64 baseNi64 i) % baseNi64) done; normN r let eval n = if n.bound = 1 then n.digits.[0] else let mutable acc = 0 for i = n.bound-1 downto 0 do acc <- n.digits.[i] + baseN * acc done; acc let eval64 n = if n.bound = 1 then int64 n.digits.[0] else let mutable acc = 0L for i = n.bound-1 downto 0 do acc <- int64 (n.digits.[i]) + baseNi64 * acc done; acc let one = embed 1 let zero = embed 0 let restrictTo d n = { bound = minInt d n.bound; digits = n.digits} let shiftUp d n = let m = createN (n.bound+d) for i = 0 to n.bound-1 do m.digits.[i+d] <- n.digits.[i] done; m let shiftDown d n = if n.bound-d<=0 then zero else let m = createN (n.bound-d) for i = 0 to m.bound-1 do m.digits.[i] <- n.digits.[i+d] done; m let degree n = n.bound-1 //---------------------------------------------------------------------------- // add, sub //-------------------------------------------------------------------------- // addition let rec addP i n c p q r = // p+q + c if i0 then r.digits.[i] <- modbase x; let c = divbase x // if p (or q) exhausted and c zero could switch to copying mode subP (i+1) n c p q r else let x = x + baseN // add baseN r.digits.[i] <- modbase x; let c = divbase x - 1 // sub baseN // if p (or q) exhausted and c zero could switch to copying mode subP (i+1) n c p q r else let underflow = c<>0 underflow let sub p q = // NOTE: x-y=0 when x<=y, it is natural subtraction let rbound = maxInt p.bound q.bound let r = createN rbound let carry = 0 let underflow = subP 0 rbound carry p q r if underflow then embed 0 else normN r //---------------------------------------------------------------------------- // isZero, equal, ordering, sign, min, max //-------------------------------------------------------------------------- let isZero p = p.bound=0 let IsZero p = isZero p let isOne p = p.bound=1 && p.digits.[0] = 1 let equal p q = (p.bound = q.bound) && (let rec check (pa:ints) (qa:ints) i = // HAVE: pa.[j] = qa.[j] for i < j < p.bound (i = -1) || (pa.[i]=qa.[i] && check pa qa (i-1)) check p.digits q.digits (p.bound-1)) let shiftCompare p pn q qn = if p.bound + pn < q.bound + qn then -1 elif p.bound + pn > q.bound + pn then 1 else let rec check (pa:ints) (qa:ints) i = // HAVE: pa.[j-pn] = qa.[j-qn] for i < j < p.bound // Looking for most significant differing coeffs to determine ordering if i = -1 then 0 else let pai = if i < pn then 0 else pa.[i-pn] let qai = if i < qn then 0 else qa.[i-qn] if pai = qai then check pa qa (i-1) elif pai < qai then -1 else 1 check p.digits q.digits (p.bound + pn - 1) let compare p q = if p.bound < q.bound then -1 elif p.bound > q.bound then 1 else let rec check (pa:ints) (qa:ints) i = // HAVE: pa.[j] = qa.[j] for i < j < p.bound // Looking for most significant differing coeffs to determine ordering if i = -1 then 0 elif pa.[i]=qa.[i] then check pa qa (i-1) elif pa.[i]] let lt p q = compare p q = -1 [] let gt p q = compare p q = 1 [] let lte p q = compare p q <> 1 [] let gte p q = compare p q <> -1 [] let min a b = if lt a b then a else b [] let max a b = if lt a b then b else a //---------------------------------------------------------------------------- // scale //-------------------------------------------------------------------------- // REQUIRE: baseN + baseN.2^32 < Int64.maxInt let rec contributeArr (a:ints) i (c:int64) = // Given c and require c < baseN.2^32 // Compute: r <- r + c . B^i // via r.digits.[i] <- r.digits.[i] + c and normalised let x = int64 a.[i] + c // HAVE: x < baseN + baseN.2^32 let c = div64base x let x = mod64base x // HAVE: c < 1 + 2^32 < baseN.2^32, recursive call ok // HAVE: x < baseN a.[i] <- x; // store residue x if c>0L then contributeArr a (i+1) c // contribute carry next position let inline contribute r i c = contributeArr r.digits i c // REQUIRE: maxInt < 2^32 [] let rec scale (k:int) (p:n) = // Given k and p and require k < 2^32 // Computes "scalar" product k.p // let rbound = p.bound + boundInt let r = createN rbound let k = int64 k for i = 0 to p.bound-1 do let kpi = k * int64 p.digits.[i] // HAVE: kpi < 2^32 * baseN which meets "contribute" requirement contribute r i kpi done; normN r //---------------------------------------------------------------------------- // mulSchoolBook //-------------------------------------------------------------------------- // multiplication: naively O(n^2) (* let mulSchoolBook' p q = let rbound = p.bound + q.bound + boundBase*2 let r = createN rbound let pa = p.digits let qa = q.digits for i = 0 to p.bound-1 do for j = 0 to q.bound-1 do contribute r (i+j) (int64 pa.[i] * int64 qa.[j]) done done; normN r *) let mulSchoolBookBothSmall p q = let r = createN 2 let rak = int64 p * int64 q setCoeff r 0 (mod64base rak); setCoeff r 1 (int32 (div64base rak)) normN r let rec mulSchoolBookCarry r c k = if ( c > 0L ) then // ToAdd = c.B^k let rak = (coeff64 r k) + c setCoeff r k (mod64base rak); mulSchoolBookCarry r (div64base rak) (k + 1) let mulSchoolBookOneSmall p q = let bp = bound(p) let rbound = bp + 1 let r = createN rbound let q = int64 q let mutable c = 0L for i = 0 to bp-1 do let rak = c + (coeff64 r i) + (coeff64 p i) * q setCoeff r i (mod64base rak); c <- div64base rak; mulSchoolBookCarry r c bp normN r // multiplication: naively O(n^2) -- this version - unchecked - is faster let mulSchoolBookNeitherSmall p q = let rbound = p.bound + q.bound let r = createN rbound let ra = r.digits let pa = p.digits let qa = q.digits // ToAdd p*q for i = 0 to p.bound-1 do // ToAdd p.[i] * q * B^i let pai = int64 pa.[i] let mutable c = 0L let mutable k = i // k = i + j // ToAdd = pi.qj.B^(i+j) for j = 0,j+1... for j = 0 to q.bound-1 do // ToAdd = c.B^k + pi.qj.B^(i+j) for j = j,j+1... and k = i+j let qaj = int64 qa.[j] let rak = int64 ra.[k] + c + pai * qaj ra.[k] <- int32 (mod64base rak); c <- div64base rak; k <- k + 1; mulSchoolBookCarry r c k normN r let mulSchoolBook p q = let pSmall = (bound(p) = 1) let qSmall = (bound(q) = 1) if (pSmall && qSmall) then mulSchoolBookBothSmall (coeff p 0) (coeff q 0) elif pSmall then mulSchoolBookOneSmall q (coeff p 0) elif qSmall then mulSchoolBookOneSmall p (coeff q 0) else mulSchoolBookNeitherSmall p q //---------------------------------------------------------------------------- // quickMulUsingFft //-------------------------------------------------------------------------- // The FFT polynomial multiplier requires the result coeffs fit inside Fp. // // OVERVIEW: // The numbers are recoded as polynomials to be evaluated at (x=2^bigL). // The polynomials are FFT multiplied, requiring result coeff to fit Fp. // The result product is recovered by evaluating the poly at (x=2^bigL). // // REF: // QuickMul: Practical FFT-base Integer Multiplication, // Chee Yap and Chen Yi. // // There is choice of how to encode the nats polynomials. // The choice is the (2^bigL) base to use. // For bigL=1, the FFT will cater for a product of upto 256M bits. // Larger bigL have less reach, but compute faster. // So plan to choose bigL depending on the number of bits product. // // DETERMINING THE K,L BOUNDS. // // Given representing using K-vectors, K a power of 2, K=2^k, and // If choosing inputs to have L-bit coefficients. // // The result coeff are: // // res(i) = sum (j] type encoding = { bigL : int; // bits per input coeff twoToBigL : int; // 2^bigL k : int; bigK : int; // bigK = 2^k, number of terms polynomials bigN : int; // bits result (under-estimate of limit) split : int; // baseBits / bigL splits : int array; } #if CHECKED let _ = check (baseBits=24) "24bit" #endif // Requiring baseN mod 2^bigL = 0 gave quick encoding, but... // also a terrible drop performance when the bigK jumped by more than needed! // Below, it choose a minimal bigK to hold the product. let mkEncoding (bigL,k,bigK,bigN) = #if CHECKED check (bigK = pow32 2 k) "bigK"; check (bigN = bigK * bigL) "bigN"; check (2 * bigL + k <= maxBitsInsideFp) "constraint"; #endif { bigL = bigL; twoToBigL = pow32 2 bigL; k = k; bigK = bigK; bigN = bigN; split = baseBits/bigL; // should divide exactly splits = Array.init (baseBits/bigL) (fun i -> pow32 2 (bigL*i)) } let table = [| // bigL , k , bigK , bigN // mkEncoding ( 1 , 28 , 268435456 , 268435456 ) ; mkEncoding ( 2 , 26 , 67108864 , 134217728 ) ; mkEncoding ( 3 , 24 , 16777216 , 50331648 ) ; mkEncoding ( 4 , 22 , 4194304 , 16777216 ) ; mkEncoding ( 5 , 20 , 1048576 , 5242880 ) ; mkEncoding ( 6 , 18 , 262144 , 1572864 ) ; mkEncoding ( 7 , 16 , 65536 , 458752 ) ; mkEncoding ( 8 , 14 , 16384 , 131072 ) ; mkEncoding ( 9 , 12 , 4096 , 36864 ) ; mkEncoding ( 10 , 10 , 1024 , 10240 ) ; mkEncoding ( 11 , 8 , 256 , 2816 ) ; mkEncoding ( 12 , 6 , 64 , 768 ) ; mkEncoding ( 13 , 4 , 16 , 208 ) ; |] let calculateTableTow bigL = // Given L. // Have L via "log2 K <= maxBitsInsideFp - 2L". // Have N via "N = K.L" // let k = maxBitsInsideFp - 2*bigL let bigK = pow64 2L k let N = bigK * int64 bigL bigL,k,bigK,N let encodingGivenResultBits bitsRes = // choose maximum bigL s.t. bitsRes < bigN // EXCEPTION: fails is bitsRes exceeds 2^28 (largest bigN table) let rec selectFrom i = if i+1 < table.Length && bitsRes < table.[i+1].bigN then selectFrom (i+1) else table.[i] if bitsRes >= table.[0].bigN then failwith "Product is huge, around 268435456 bits, beyond quickmul" else selectFrom 0 let bitmask = Array.init baseBits (fun i -> (pow32 2 i - 1)) let twopowers = Array.init baseBits (fun i -> (pow32 2 i)) let twopowersI64 = Array.init baseBits (fun i -> (pow64 2L i)) // bitmask(k) = 2^k - 1 // twopowers(k) = 2^k // let wordBits word = let rec hi k = if k=0 then 0 elif (word &&& twopowers.[k-1]) <> 0 then k else hi (k-1) hi baseBits let bits u = if u.bound=0 then 0 else degree u * baseBits + wordBits u.digits.[degree u] let extractBits n enc bi = let bj = bi + enc.bigL - 1 // the last bit (inclusive) let biw = bi / baseBits // first bit is this index pos let bjw = bj / baseBits // last bit is this index pos if biw <> bjw then // two words let x = index n biw let y = index n bjw // bjw = biw+1 let xbit = bi % baseBits // start bit x let nxbits = baseBits - xbit // number of bitsin x let x = x >>> xbit // shift down x so bit0 is first let y = y <<< nxbits // shift up y so it starts where x finished let x = x ||| y // combine them let x = x &&& bitmask.[enc.bigL] // mask out (high y bits) to get required bits x else // one word let x = index n biw let xbit = bi % baseBits // start bit x let x = x >>> xbit let x = x &&& bitmask.[enc.bigL] x let encodePoly enc n = // Find poly s.t. n = poly evaluated at x=2^bigL // with 0 <= pi < 2^bigL. // let poly = Array.create enc.bigK (Fp.ofInt32 0) let biMax = n.bound * baseBits let rec encoder i bi = // bi = i * bigL if i=enc.bigK || bi > biMax then () // done else ( let pi = extractBits n enc bi poly.[i] <- Fp.ofInt32 pi; let i = i + 1 let bi = bi + enc.bigL encoder i bi ) encoder 0 0; poly let decodeResultBits enc (poly : fp array) = // Decoding evaluates poly(x) (coeff Fp) at X = 2^bigL. // A bound on number of result bits is "enc.bigN + boundInt", but that takes HUGE STEPS. // Garbage has a cost, so we minimize it by working out a tight bound. // // poly(X) = sum i=0..n coeff_i * X^i where n is highest non-zero coeff. // <= 2^maxBitsInsideFp * (1 + X + ... X^n) // <= 2^maxBitsInsideFp * (X^(n+1) - 1) / (X - 1) // <= 2^maxBitsInsideFp * X^(n+1) / (X - 1) // <= 2^maxBitsInsideFp * X^(n+1) / (X/2) provided X/2 <= X-1 // <= 2^maxBitsInsideFp * X^n * 2 // <= 2^maxBitsInsideFp * (2^bigL)^n * 2 // <= 2^(maxBitsInsideFp + bigL.n + 1) // let mutable n = 0 for i = 0 to poly.Length-1 do if poly.[i] <> mzero then n <- i done; let rbits = maxBitsInsideFp + enc.bigL * n + 1 rbits + 1 // +1 since 2^1 requires 2 bits not 1 // REQUIRE: bigL <= baseBits let decodePoly enc poly = // Find n = poly evaluated at x=2^bigL // Note, 0 <= pi < maxFp. // let rbound = (decodeResultBits enc poly) / baseBits + 1 let r = createN rbound let rec evaluate i j d = // HAVE: bigL.i = j * baseBits + d and d= rbound then #if CHECKED check (poly.[i] = mzero) "decodePoly"; #endif () else ( let x = int64 (Fp.toInt poly.[i]) * twopowersI64.[d] // HAVE: x < 2^32 . 2^baseBits = 2^32.baseN contribute r j x ); let i = i + 1 let d = d + enc.bigL let j,d = if d >= baseBits then j+1 , d-baseBits else j,d // HAVE: d < baseBits, note: bigL minDigitsKaratsuba then let k = bmax / 2 let a0 = restrictTo k p let a1 = shiftDown k p let b0 = restrictTo k q let b1 = shiftDown k q let q0 = mul a0 b0 let q1 = mul (add a0 a1) (add b0 b1) let q2 = mul a1 b1 let p0 = q0 let p1 = sub q1 (add q0 q2) let p2 = q2 let r = add p0 (shiftUp k (add p1 (shiftUp k p2))) r else mulSchoolBook p q let rec mulKaratsuba x y = recMulKaratsuba mulKaratsuba x y //---------------------------------------------------------------------------- // mul - composite //-------------------------------------------------------------------------- let productDigitsUpperSchoolBook = (64000 / baseBits) // When is it worth switching away from SchoolBook? // SchoolBook overhead is low, so although it's O(n^2) it remains competitive. // // 28/3/2006: // The FFT can take over from SchoolBook at around 64000 bits. // Note, FFT performance is stepwise, according to enc from table. // The steps are big steps (meaning sudden jumps/drops perf). // let singleDigitForceSchoolBook = (32000 / baseBits) // If either argument is "small" then stay with SchoolBook. // let productDigitsUpperFft = (table.[0].bigN / baseBits) // QuickMul is good upto a finite (but huge) limit: // Limit 268,435,456 bits product. // // From the code: // let bitsRes = bits u + bits v // fails when bitsRes >= table.[0].bigN // So, not applicable when: // P1: table.[0].bigN <= bits(u) + bits(v) // P2: table.[0].bigN <= .. <= baseBits * (u.bound + v.bound) // P3: table.[0].bigN <= .. <= baseBits * (u.bound + v.bound) // P4: table.[0].bigN / baseBits <= u.bound + v.bound // // Summary of mul algorithm choice: // 0 <= uv_bound < upper_school_book - Schoolbook // upper_school_book <= uv_bound < upper_fft - QuickMul // upper_fft <= uv_bound < ... - Karatsuba // // NOTE: // - Karatsuba current implementation has high garbage cost. // - However, a linear space cost is possible... // - Meantime, switch to Karatsuba only beyond FFT range. // let rec mul p q = let pqBound = p.bound + q.bound if pqBound < productDigitsUpperSchoolBook || p.bound < singleDigitForceSchoolBook || q.bound < singleDigitForceSchoolBook then // Within school-book initial range: mulSchoolBook p q else if pqBound < productDigitsUpperFft then // Inside QuickMul FFT range: quickMulUsingFft p q else // Beyond QuickMul FFT range, or maybe between Schoolbook and QuickMul (no!): // Use karatsuba method, with "mul" as recursive multiplier, // so will reduce sizes of products on recursive calls, // and QuickMul will take over if they fall within it's range. // recMulKaratsuba mul p q //---------------------------------------------------------------------------- // division - scaleSubInPlace //-------------------------------------------------------------------------- let scaleSubInPlace x f a n = // Have x = sumR 0 xd (\i.xi.B^i) where xd = degree x // a = sumR 0 ad (\i.digitsi.B^i) where ad = degree a // f < B // n < xd // Assumes "f.digits.B^n < x". // Required to remove f.digits.B^n from x place. //------ // Result = x_initial - f.digits.B^n // = x_initial - f.[sumR 0 ad (\i.digitsi.B^(i+n))] // State: j = 0 // z = f * a0 // Invariant(x,z,j,n): // P1: x_result = x - z.B^(j+n) - f.[sumR (j+1) ad (\i.digitsi.B^i+n)] // P2: z < B^2 - 1, and so has form z = zHi.B + zLo for zHi,zLo < B. // Base: Invariant holds initially. // Step: (a) Remove zLo from x: // If zLo <= x_(j+n) then zLo <- 0 // x_(j+n) <- x_(j+n) - zLo // else zLo <- 0 // x_(j+n) <- x_(j+n) + (B - zLo) // = x_(j+n) - zLo + B // zHi <- zHi + 1 // Here, invariant P1 still holds, P2 may break. // (b) Advance j: // Have z = zHi.B since zLo = 0. // j <- j + 1 // z <- zHi + f * a_(j+1) // P2 holds: // Have z <= B + (B-1)*(B-1) = B + B^2 - 2B + 1 = B^2 - B + 1 // Have z <= B^2 - 1 when B >= 2 which is required for B being a base. // P1 holds, // moved f.digits_(j+1).B^(j+1+n) factor over. // // Once j+1 exceeds ad, summation is zero and it contributes no more terms (b). // Continue until z = 0, which happens since z decreases towards 0. // Done. // let invariant (_,_,_) = () #if CHECKED let x_initial = copyN x let x_result = sub x_initial (shiftUp n (scale f a)) let invariant (z,j,n) = let P1 = equal x_result (sub x (add (shiftUp (j+n) (embed64 z)) (mul (embed f) (shiftUp (j+1+n) (shiftDown (j+1) a))))) let P2 = z < baseNi64 * baseNi64 - 1L check P1 "P1"; check P2 "P2" #endif let xres = x let x,xd = x.digits,degree x let a,ad = a.digits,degree a let f = int64 f let mutable j = 0 let mutable z = f * int64 a.[0] while( z > 0L || j < ad ) do if j > xd then failwith "scaleSubInPlace: pre-condition did not apply, result would be -ve"; invariant(z,j,n); // P1,P2 hold let mutable zLo = mod64base z |> int32 let mutable zHi = div64base z if zLo <= x.[j+n] then x.[j+n] <- x.[j+n] - zLo else ( x.[j+n] <- x.[j+n] + (baseN - zLo); zHi <- zHi + 1L ); // P1 holds if j < ad then z <- zHi + f * int64 a.[j+1] else z <- zHi; j <- j + 1; // P1,P2 hold done; ignore (normN xres) // let scaleSub x f a n = let freshx = add x zero scaleSubInPlace freshx f a n; normN freshx (* let scaleSub2 x f a n = sub x (shiftUp n (mul (embed f) a)) let x = (mul (embed 234234234) (pow (embed 10) (embed 20))) let f = 2 let a = (embed 1231231231) let n = 2 let res = scaleSub x f a n let res2 = scaleSub2 x f a n let x, xd, f, a, ad, n = freshx.digits, freshx.bound, f, a.digits, a.bound, n *) //---------------------------------------------------------------------------- // division - scaleAddInPlace //-------------------------------------------------------------------------- let scaleAddInPlace x f a n = // Have x = sumR 0 xd (\i.xi.B^i) // a = sumR 0 ad (\i.digitsi.B^i) // f < B // n < xd // Required to add f.digits.B^n to x place. // Assumes result will fit with x (0...xd). //------ // Result = x_initial + f.digits.B^n // = x_initial + f.[sumR 0 ad (\i.digitsi.B^i+n)] // State: j = 0 // z = f * a0 // Invariant(x,z,j,n): // P1: x_result = x + z.B^(j+n) + f.[sumR (j+1) ad (\i.digitsi.B^i+n)] // P2: z < B^2 - 1, and so has form z = zHi.B + zLo for zHi,zLo < B. // Base: Invariant holds initially. // Step: (a) Add zLo to x: // If zLo < B - x_(j+n) then zLo <- 0 // x_(j+n) <- x_(j+n) + zLo // else zLo <- 0 // x_(j+n) <- zLo - (B - x_(j+n)) // = x_(j+n) + zLo - B // zHi <- zHi + 1 // Here, invariant P1 still holds, P2 may break. // (b) Advance j: // Have z = zHi.B since zLo = 0. // j <- j + 1 // z <- zHi + f * a_(j+1) // P2 holds: // Have z <= B + (B-1)*(B-1) = B + B^2 - 2B + 1 = B^2 - B + 1 // Have z <= B^2 - 1 when B >= 2 which is required for B being a base. // P1 holds, // moved f.digits_(j+1).B^(j+1+n) factor over. // // Once j+1 exceeds ad, summation is zero and it contributes no more terms (b). // Continue until z = 0, which happens since z decreases towards 0. // Done. // let invariant (_,_,_) = () #if CHECKED let x_initial = copyN x let x_result = add x_initial (shiftUp n (scale f a)) let invariant (z,j,n) = let P1 = equal x_result (add x (add (shiftUp (j+n) (embed64 z)) (mul (embed f) (shiftUp (j+1+n) (shiftDown (j+1) a))))) let P2 = z < baseNi64 * baseNi64 - 1L check P1 "P1"; check P2 "P2" #endif let xres = x let x,xd = x.digits,degree x let a,ad = a.digits,degree a let f = int64 f let mutable j = 0 let mutable z = f * int64 a.[0] while( z > 0L || j < ad ) do if j > xd then failwith "scaleSubInPlace: pre-condition did not apply, result would be -ve"; invariant(z,j,n); // P1,P2 hold let mutable zLo = mod64base z |> int32 let mutable zHi = div64base z if zLo < baseN - x.[j+n] then x.[j+n] <- x.[j+n] + zLo else ( x.[j+n] <- zLo - (baseN - x.[j+n]); zHi <- zHi + 1L ); // P1 holds if j < ad then z <- zHi + f * int64 a.[j+1] else z <- zHi; j <- j + 1; // P1,P2 hold done; ignore (normN xres) // let scaleAdd x f a n = let freshx = add x zero scaleAddInPlace freshx f a n; normN freshx (* let scaleAdd2 x f a n = add x (shiftUp n (mul (embed f) a)) let x = (mul (embed 234234234) (pow (embed 10) (embed 20))) let f = 2 let a = (embed 1231231231) let n = 2 let res = scaleAdd x f a n let res2 = scaleAdd2 x f a n let x, xd, f, a, ad, n = freshx.digits, freshx.bound, f, a.digits, a.bound, n *) //---------------------------------------------------------------------------- // division - removeFactor //-------------------------------------------------------------------------- (* let removeFactorReference x a n = let ff = div x (shiftUp n a) toInt ff *) let removeFactor x a n = // Assumes x < a.B^(n+1) // Choose f s.t. // (a) f.digits.B^n <= x // (b) f=0 iff x < a.B^n // let dega,degx = degree a,degree x if degx < dega + n then 0 else // possible with "normalisation" let aa,xa = a.digits,x.digits let f = if dega = 0 then // a = a0 if degx = n then xa.[n] / aa.[0] else ( #if CHECKED check (degx = n+1) "removeFactor degx#1"; #endif let f64 = (int64 xa.[degx] * baseNi64 + int64 xa.[degx-1]) / int64 aa.[0] int32 f64 ) else // a = sumR 0 dega (\i.digitsi.B^i) if degx = dega + n then xa.[degx] / (aa.[dega] + 1) // +1 to bound above a else ( #if CHECKED check (degx = dega+n+1) "removeFactor degx#2"; #endif let f64 = (int64 xa.[degx] * baseNi64 + int64 xa.[degx-1]) / (int64 aa.[dega] + 1L) // +1 to bound above a int32 f64 ) if f = 0 then let lte = (shiftCompare a n x 0) <> 1 if lte then 1 else 0 else f //---------------------------------------------------------------------------- // division - divmod //-------------------------------------------------------------------------- let divmod b a = // Returns d,r where b = d.digits + r and r0 then scaleSubInPlace x f a n; scaleAddInPlace d f one n; Invariant(d,x,n,p) else finished <- f=0 && n=0; if not finished then if p = m+n then Invariant(d,x,n-1,p); n <- n-1 else Invariant(d,x,n-1,p-1); n <- n-1; p <- p-1 // Have: "b = d.digits + x" return d,x normN d,normN x //---------------------------------------------------------------------------- // div, mod //-------------------------------------------------------------------------- [] let div b a = fst (divmod b a) [] let rem b a = snd (divmod b a) // rem b a, for small a can do (base mod a) trick - O(N) //---------------------------------------------------------------------------- // hcf //-------------------------------------------------------------------------- let hcf a b = // Have: 0 <= a,b since naturals let rec hcfloop a b = // Require: 0 <= a <= b if equal zero a then b else // Have: 0 < a <= b let _,r = divmod b a // Have: r < a from divmod hcfloop r a // Have: 0 <= r < a if lt a b then hcfloop a b // Have: 0 <= a < b else hcfloop b a // Have: 0 <= b <= a //---------------------------------------------------------------------------- // pow //-------------------------------------------------------------------------- let two = embed 2 let powi x n = let rec power acc x n = if n=0 then acc elif n % 2=0 then power acc (mul x x) (n / 2) else power (mul x acc) (mul x x) (n / 2) power one x n let pow x n = let rec power acc x n = if isZero n then acc else let ndiv2,nmod2 = divmod n two // use: intdivmod when available if isZero nmod2 then power acc (mul x x) ndiv2 else power (mul x acc) (mul x x) ndiv2 power one x n //---------------------------------------------------------------------------- // float n //-------------------------------------------------------------------------- let toFloat n = let basef = float baseN let rec evalFloat acc k i = if i = n.bound then acc else evalFloat (acc + k * float n.digits.[i]) (k * basef) (i+1) evalFloat 0.0 1.0 0 //---------------------------------------------------------------------------- // n <-> int //-------------------------------------------------------------------------- let ofInt32 n = embed n let ofInt64 n = embed64 n /// Convert BigNat to uint32 otherwise OverflowException. let toUInt32 n = match n.bound with | 0 -> 0u | 1 -> n.digits.[0] |> uint32 | 2 -> let xA,xB = n.digits.[0],n.digits.[1] if xB > baseMask32B then raise (System.OverflowException()) ( uint32 (xA &&& baseMask32A)) + ((uint32 (xB &&& baseMask32B)) <<< baseShift32B) | _ -> raise (System.OverflowException()) /// Convert BigNat to uint64 otherwise OverflowException. let toUInt64 n = match n.bound with | 0 -> 0UL | 1 -> n.digits.[0] |> uint64 | 2 -> let xA,xB = n.digits.[0],n.digits.[1] ( uint64 (xA &&& baseMask64A)) + ((uint64 (xB &&& baseMask64B)) <<< baseShift64B) | 3 -> let xA,xB,xC = n.digits.[0],n.digits.[1],n.digits.[2] if xC > baseMask64C then raise (System.OverflowException()) ( uint64 (xA &&& baseMask64A)) + ((uint64 (xB &&& baseMask64B)) <<< baseShift64B) + ((uint64 (xC &&& baseMask64C)) <<< baseShift64C) | _ -> raise (System.OverflowException()) //---------------------------------------------------------------------------- // n -> string //-------------------------------------------------------------------------- #if CHECKED let checks = false #endif let toString n = // Much better complexity than naive_string_of_z. // It still does "nDigit" calls to (int)divmod, // but the degree on which it is called halves (not decrements) each time. // let degn = degree n let rec route prior k ten2k = if degree ten2k > degn then (k,ten2k)::prior else route ((k,ten2k)::prior) (k+1) (mul ten2k ten2k) let kten2ks = route [] 0 (embed 10) let rec collect isLeading digits n = function | [] -> // Have 0 <= n < 10^1, so collect a single digit (if needed) let n = eval n #if CHECKED if checks then check (0 <= n) "toString: digit0"; if checks then check (n <= 9) "toString: digit9"; #endif if isLeading && n=0 then digits // suppress leading 0 else string n :: digits | (_,ten2k)::prior -> #if CHECKED if checks then check (lt n (mul ten2k ten2k)) "string_of_int: bound n"; #endif // Have 0 <= n < (ten2k)^2 and ten2k = 10^(2^k) let nH,nL = divmod n ten2k #if CHECKED if checks then check (lt nH ten2k) "string_of_int: bound nH"; if checks then check (lt nL ten2k) "string_of_int: bound nL"; #endif // Have 0 <= nH,nL < (ten2k) and ten2k = 10^(2^k) if isLeading && isZero nH then // suppress leading 0s let digits = collect isLeading digits nL prior digits else let digits = collect false digits nL prior let digits = collect isLeading digits nH prior digits let prior = kten2ks let digits = collect true [] n prior match digits with | [] -> "0" | _ -> digits |> Array.ofList |> System.String.Concat //---------------------------------------------------------------------------- // n <- string //-------------------------------------------------------------------------- let ofString (str:string) = // Would it be better to split string half and combine results? let len = str.Length if System.String.IsNullOrEmpty str then invalidArg "str" "empty string"; let ten = embed 10 let rec build acc i = if i=len then acc else let c = str.[i] let d = int c - int '0' if 0 <= d && d <= 9 then build (add (mul ten acc) (embed d)) (i+1) else raise (new System.FormatException("The value could not be parsed")) build (embed 0) 0 let isSmall n = (n.bound <= 1) let getSmall n = index n 0 //---------------------------------------------------------------------------- // factorial //-------------------------------------------------------------------------- let factorial n = //***** // Factorial(n) = 1.2.3.....(n-1).n // // Factorial is sometimes used as a test for multiplication. // The QuickMul FFT multiplier takes over only when both operands reach a given size. // How to compute factorial? // // (a) Factorial(n) = factorial(n-1).n // This is unlikely to make use of the FFT (n never large enough). // (b) Factorial(n) = (1.2.3.4....k) . (k.[k+1]...(n-1).n) // Applied recursively QuickMul FFT will take over on large products. // //**** let rec productR a b = if equal a b then a else let m = div (add a b) (ofInt32 2) mul (productR a m) (productR (add m one) b) productR one n #endif fsharp-3.0.34/src/fsharp/FSharp.Core/math/z.fsi0000775000175000017500000001431512260314606020130 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace System.Numerics #if FX_NO_BIGINT open System open Microsoft.FSharp.Collections open Microsoft.FSharp.Core /// The type of arbitrary-sized integers [] [] type BigInteger = /// Return the sum of two big integers static member ( + ) : x:BigInteger * y:BigInteger -> BigInteger /// Return the modulus of big integers static member ( % ) : x:BigInteger * y:BigInteger -> BigInteger /// Return the product of big integers static member ( * ) : x:BigInteger * y:BigInteger -> BigInteger /// Return the difference of two big integers static member ( - ) : x:BigInteger * y:BigInteger -> BigInteger /// Return the ratio of two big integers static member ( / ) : x:BigInteger * y:BigInteger -> BigInteger /// Return the negation of a big integer static member (~-) : x:BigInteger -> BigInteger /// Return the given big integer static member (~+) : x:BigInteger -> BigInteger /// Convert a big integer to a floating point number static member op_Explicit : x:BigInteger -> float /// Convert a big integer to a 64-bit signed integer static member op_Explicit : x:BigInteger -> int64 /// Convert a big integer to a 32-bit signed integer static member op_Explicit : x:BigInteger -> int32 /// Parse a big integer from a string format static member Parse : text:string -> BigInteger /// Return the sign of a big integer: 0, +1 or -1 member Sign : int /// Compute the ratio and remainder of two big integers static member DivRem : x:BigInteger * y:BigInteger * rem:BigInteger byref -> BigInteger /// This operator is for consistency when this type be used from other CLI languages static member op_LessThan : x:BigInteger * y:BigInteger -> bool /// This operator is for consistency when this type be used from other CLI languages static member op_LessThanOrEqual : x:BigInteger * y:BigInteger -> bool /// This operator is for consistency when this type be used from other CLI languages static member op_GreaterThan : x:BigInteger * y:BigInteger -> bool /// This operator is for consistency when this type be used from other CLI languages static member op_GreaterThanOrEqual : x:BigInteger * y:BigInteger -> bool /// This operator is for consistency when this type be used from other CLI languages static member op_Equality : x:BigInteger * y:BigInteger -> bool /// This operator is for consistency when this type be used from other CLI languages static member op_Inequality : x:BigInteger * y:BigInteger -> bool /// Return the greatest common divisor of two big integers static member GreatestCommonDivisor : x:BigInteger * y:BigInteger -> BigInteger /// Return n^m for two big integers static member Pow : x:BigInteger * y:int32 -> BigInteger /// Compute the absolute value of a big integer static member Abs : x:BigInteger -> BigInteger /// Get the big integer for zero static member Zero : BigInteger /// Get the big integer for one static member One : BigInteger /// Return true if a big integer is 'zero' member IsZero : bool /// Return true if a big integer is 'one' member IsOne : bool interface System.IComparable override Equals : obj -> bool override GetHashCode : unit -> int override ToString : unit -> string /// Construct a BigInteger value for the given integer new : x:int -> BigInteger /// Construct a BigInteger value for the given 64-bit integer new : x:int64 -> BigInteger #if SILVERLIGHT /// Provides custom formatting for BigInteger values member StructuredDisplayString : string // This needs to be accessible in order for formatting code to invoke it via reflection in Silverlight. #endif #endif namespace Microsoft.FSharp.Core type bigint = System.Numerics.BigInteger [] /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' module NumericLiterals = /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' module NumericLiteralI = open System.Numerics /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromZero : value:unit -> 'T /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromOne : value:unit -> 'T /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromInt32 : value:int32 -> 'T /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromInt64 : value:int64 -> 'T /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromString : text:string -> 'T /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromInt64Dynamic : value:int64 -> obj /// Provides a default implementations of F# numeric literal syntax for literals fo the form 'dddI' val FromStringDynamic : text:string -> obj fsharp-3.0.34/src/fsharp/FSharp.Core/math/z.fs0000775000175000017500000005314712260314606017765 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "44" // This construct is deprecated. This function is for use by compiled F# code and should not be used directly namespace System.Numerics #if FX_NO_BIGINT open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Math open System open System.Globalization // INVARIANT: signInt = 1 or -1 // value(z) = signInt * v // NOTE: 0 has two repns (+1,0) or (-1,0). [] [] [] type BigInteger(signInt:int, v : BigNat) = static let smallLim = 4096 static let smallPosTab = Array.init smallLim BigNatModule.ofInt32 static let one = BigInteger(1) static let zero = BigInteger(0) static member internal nat n = if BigNatModule.isSmall n && BigNatModule.getSmall n < smallLim then smallPosTab.[BigNatModule.getSmall n] else n static member internal create (s,n) = BigInteger(s,BigInteger.nat n) static member internal posn n = BigInteger(1,BigInteger.nat n) static member internal negn n = BigInteger(-1,BigInteger.nat n) member x.Sign = if x.IsZero then 0 else signInt member x.SignInt = signInt member internal x.V = v static member op_Equality (x:BigInteger, y:BigInteger) = //System.Console.WriteLine("x = {0}",box x) //System.Console.WriteLine("y = {0}",box y) match x.SignInt,y.SignInt with | 1, 1 -> BigNatModule.equal x.V y.V // +1.xv = +1.yv iff xv = yv | -1, -1 -> BigNatModule.equal x.V y.V // -1.xv = -1.yv iff xv = yv | 1,-1 -> BigNatModule.isZero x.V && BigNatModule.isZero y.V // 1.xv = -1.yv iff xv=0 and yv=0 | -1, 1 -> BigNatModule.isZero x.V && BigNatModule.isZero y.V // -1.xv = 1.yv iff xv=0 and yv=0 | _ -> invalidArg "x" "signs should be +/- 1" static member op_Inequality (x:BigInteger, y:BigInteger) = not (BigInteger.op_Equality(x,y)) // CA2226: OperatorsShouldHaveSymmetricalOverloads static member op_LessThan (x:BigInteger, y:BigInteger) = match x.SignInt,y.SignInt with | 1, 1 -> BigNatModule.lt x.V y.V // 1.xv < 1.yv iff xv < yv | -1,-1 -> BigNatModule.lt y.V x.V // -1.xv < -1.yv iff yv < xv | 1,-1 -> false // 1.xv < -1.yv iff 0 <= 1.xv < -1.yv <= 0 iff false | -1, 1 -> not (BigNatModule.isZero x.V) || not (BigNatModule.isZero y.V) // -1.xv < 1.yv // (a) xv=0 and yv=0, then false // (b) xv<>0, -1.xv < 0 <= 1.yv, so true // (c) yv<>0, -1.xv <= 0 < 1.yv, so true | _ -> invalidArg "x" "signs should be +/- 1" static member op_GreaterThan (x:BigInteger, y:BigInteger) = // Follow lt by +/- symmetry match x.SignInt,y.SignInt with | 1, 1 -> BigNatModule.gt x.V y.V | -1,-1 -> BigNatModule.gt y.V x.V | 1,-1 -> not (BigNatModule.isZero x.V) || not (BigNatModule.isZero y.V) | -1, 1 -> false | _ -> invalidArg "x" "signs should be +/- 1" static member internal compare(n,nn) = if BigInteger.op_LessThan(n,nn) then -1 elif BigInteger.op_Equality(n,nn) then 0 else 1 static member internal hash (z:BigInteger) = z.SignInt + BigNatModule.hash(z.V) override x.ToString() = match x.SignInt with | 1 -> BigNatModule.toString x.V // positive | -1 -> if BigNatModule.isZero x.V then "0" // not negative infact, but zero. else "-" + BigNatModule.toString x.V // negative | _ -> invalidOp "signs should be +/- 1" member x.StructuredDisplayString = x.ToString() interface System.IComparable with member this.CompareTo(obj:obj) = match obj with | :? BigInteger as that -> BigInteger.compare(this,that) | _ -> invalidArg "obj" "the objects are not comparable" override this.Equals(obj) = match obj with | :? BigInteger as that -> BigInteger.op_Equality(this, that) | _ -> false override x.GetHashCode() = BigInteger.hash(x) new (n:int) = if n>=0 then BigInteger (1,BigInteger.nat(BigNatModule.ofInt32 n)) elif (n = System.Int32.MinValue) then BigInteger(-1,BigInteger.nat(BigNatModule.ofInt64 (-(int64 n)))) else BigInteger(-1,BigInteger.nat(BigNatModule.ofInt32 (-n))) new (n:int64) = if n>=0L then BigInteger(1,BigInteger.nat (BigNatModule.ofInt64 n)) elif (n = System.Int64.MinValue) then BigInteger(-1,BigInteger.nat (BigNatModule.add (BigNatModule.ofInt64 System.Int64.MaxValue) BigNatModule.one) ) else BigInteger(-1,BigInteger.nat (BigNatModule.ofInt64 (-n))) static member One = one static member Zero = zero static member (~-) (z:BigInteger) = BigInteger.create(-1 * z.SignInt,z.V) static member Scale(k,z:BigInteger) = if k<0 then BigInteger.create(-z.SignInt, (BigNatModule.scale (-k) z.V)) // k.zsign.zv = -zsign.(-k.zv) else BigInteger.create(z.SignInt, (BigNatModule.scale k z.V)) // k.zsign.zv = zsign.k.zv // Result: 1.nx - 1.ny (integer subtraction) static member internal subnn (nx,ny) = if BigNatModule.gte nx ny then BigInteger.posn (BigNatModule.sub nx ny) // nx >= ny, result +ve, +1.(nx - ny) else BigInteger.negn (BigNatModule.sub ny nx) // nx < ny, result -ve, -1.(ny - nx) static member internal addnn (nx,ny) = BigInteger.posn (BigNatModule.add nx ny) // Compute "nx + ny" to be integer member x.IsZero = BigNatModule.isZero x.V // signx.xv = 0 iff xv=0, since signx is +1,-1 member x.IsOne = (x.SignInt = 1) && BigNatModule.isOne x.V // signx.xv = 1 iff signx = +1 and xv = 1 static member (+) (x:BigInteger,y:BigInteger) = if y.IsZero then x else if x.IsZero then y else match x.SignInt,y.SignInt with | 1, 1 -> BigInteger.addnn(x.V,y.V) // 1.xv + 1.yv = (xv + yv) | -1,-1 -> -(BigInteger.addnn(x.V,y.V)) // -1.xv + -1.yv = -(xv + yv) | 1,-1 -> BigInteger.subnn (x.V,y.V) // 1.xv + -1.yv = (xv - yv) | -1, 1 -> BigInteger.subnn(y.V,x.V) // -1.xv + 1.yv = (yv - xv) | _ -> invalidArg "x" "signs should be +/- 1" static member (-) (x:BigInteger,y:BigInteger) = if y.IsZero then x else match x.SignInt,y.SignInt with | 1, 1 -> BigInteger.subnn(x.V,y.V) // 1.xv - 1.yv = (xv - yv) | -1,-1 -> BigInteger.subnn(y.V,x.V) // -1.xv - -1.yv = (yv - xv) | 1,-1 -> BigInteger.addnn(x.V,y.V) // 1.xv - -1.yv = (xv + yv) | -1, 1 -> -(BigInteger.addnn(x.V,y.V)) // -1.xv - 1.yv = -(xv + yv) | _ -> invalidArg "x" "signs should be +/- 1" static member ( * ) (x:BigInteger,y:BigInteger) = if x.IsZero then x elif y.IsZero then y elif x.IsOne then y elif y.IsOne then x else let m = (BigNatModule.mul x.V y.V) BigInteger.create (x.SignInt * y.SignInt,m) // xsign.xv * ysign.yv = (xsign.ysign).(xv.yv) static member DivRem (x:BigInteger,y:BigInteger,rem:BigInteger byref) = let d,r = BigNatModule.divmod x.V y.V // HAVE: |x| = d.|y| + r and 0 <= r < |y| // HAVE: xv = d.yv + r and 0 <= r < yv match x.SignInt,y.SignInt with | 1, 1 -> rem <- BigInteger.posn r ; BigInteger.posn d // 1.xv = 1.d.( 1.yv) + ( 1.r) | -1,-1 -> rem <- BigInteger.negn r ; BigInteger.posn d // -1.xv = 1.d.(-1.yv) + (-1.r) | 1,-1 -> rem <- BigInteger.posn r ; BigInteger.negn d // 1.xv = -1.d.(-1.yv) + ( 1.r) | -1, 1 -> rem <- BigInteger.negn r ; BigInteger.negn d // -1.xv = -1.d.( 1.yv) + (-1.r) | _ -> invalidArg "x" "signs should be +/- 1" static member (/) (x:BigInteger,y:BigInteger) = let mutable rem = new BigInteger(0) BigInteger.DivRem(x,y,&rem) static member (%) (x:BigInteger,y:BigInteger) = let mutable rem = new BigInteger(0) BigInteger.DivRem(x,y,&rem) |> ignore ; rem static member GreatestCommonDivisor (x:BigInteger,y:BigInteger) = BigInteger.posn (BigNatModule.hcf x.V y.V) // hcf (xsign.xv,ysign.yv) = hcf (xv,yv) member x.IsNegative = x.SignInt = -1 && not (x.IsZero) // signx.xv < 0 iff signx = -1 and xv<>0 member x.IsPositive = x.SignInt = 1 && not (x.IsZero) // signx.xv > 0 iff signx = +1 and xv<>0 static member Abs (x:BigInteger) = if x.SignInt = -1 then -x else x static member op_LessThanOrEqual (x:BigInteger,y:BigInteger) = match x.SignInt,y.SignInt with | 1, 1 -> BigNatModule.lte x.V y.V // 1.xv <= 1.yv iff xv <= yv | -1,-1 -> BigNatModule.lte y.V x.V // -1.xv <= -1.yv iff yv <= xv | 1,-1 -> BigNatModule.isZero x.V && BigNatModule.isZero y.V // 1.xv <= -1.yv, // (a) if xv=0 and yv=0 then true // (b) otherwise false, only meet at zero. | -1, 1 -> true // -1.xv <= 1.yv, true | _ -> invalidArg "x" "signs should be +/- 1" static member op_GreaterThanOrEqual (x:BigInteger,y:BigInteger) = // Follow lte by +/- symmetry match x.SignInt,y.SignInt with | 1, 1 -> BigNatModule.gte x.V y.V | -1,-1 -> BigNatModule.gte y.V x.V | 1,-1 -> true | -1, 1 -> BigNatModule.isZero x.V && BigNatModule.isZero y.V | _ -> invalidArg "x" "signs should be +/- 1" static member Pow (x:BigInteger,y:int32) = if y < 0 then invalidArg "y" (SR.GetString(SR.inputMustBeNonNegative)) let yval = BigInteger(y) BigInteger.create ((if BigNatModule.isZero (BigNatModule.rem yval.V BigNatModule.two) then 1 else x.SignInt), BigNatModule.pow x.V yval.V) static member op_Explicit (x:BigInteger) = let u = BigNatModule.toUInt32 x.V if u <= uint32 System.Int32.MaxValue then // Handle range [-MaxValue,MaxValue] x.SignInt * int32 u elif x.SignInt = -1 && u = uint32 (System.Int32.MaxValue + 1) then //assert(System.Int32.MinValue = 0 - System.Int32.MaxValue - 1) // Handle MinValue = -(MaxValue+1) special case not covered by the above System.Int32.MinValue else raise (System.OverflowException()) static member op_Explicit (x:BigInteger) = let u = BigNatModule.toUInt64 x.V if u <= uint64 System.Int64.MaxValue then (* Handle range [-MaxValue,MaxValue] *) int64 x.SignInt * int64 u elif x.SignInt = -1 && u = uint64 (System.Int64.MaxValue + 1L) then //assert(System.Int64.MinValue = 0 - System.Int64.MaxValue - 1L) (* Handle MinValue = -(MaxValue+1) special case not covered by the above *) System.Int64.MinValue else raise (System.OverflowException()) static member op_Explicit (x:BigInteger) = match x.SignInt with | 1 -> BigNatModule.toFloat x.V // float (1.xv) = float (xv) | -1 -> - (BigNatModule.toFloat x.V) // float (-1.xv) = - float (xv) | _ -> invalidArg "x" "signs should be +/- 1" static member Parse(text:string) = let len = text.Length if len = 0 then raise (new System.FormatException("The value could not be parsed")) if text.[0..0] = "-" then BigInteger.negn (BigNatModule.ofString text.[1..len-1]) else BigInteger.posn (BigNatModule.ofString text) member internal x.IsSmall = BigNatModule.isSmall (x.V) static member Factorial (x:BigInteger) = if x.IsNegative then invalidArg "x" (SR.GetString(SR.inputMustBeNonNegative)) if x.IsPositive then BigInteger.posn (BigNatModule.factorial x.V) else BigInteger.One static member ( ~+ )(n1:BigInteger) = n1 static member FromInt64(x:int64) = new BigInteger(x) static member FromInt32(x:int32) = new BigInteger(x) #endif namespace Microsoft.FSharp.Core type bigint = System.Numerics.BigInteger open System open System.Diagnostics.CodeAnalysis open System.Globalization open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open System.Numerics #if FX_NO_BIGINT // FxCop suppressions [] [] [] [] [] [] [] [] [] [] [] do() #endif [] module NumericLiterals = module NumericLiteralI = let tab64 = new System.Collections.Generic.Dictionary() let tabParse = new System.Collections.Generic.Dictionary() let FromInt64Dynamic (x64:int64) : obj = lock tab64 (fun () -> let mutable res = Unchecked.defaultof<_> let ok = tab64.TryGetValue(x64,&res) if ok then res else res <- BigInteger(x64) tab64.[x64] <- res res) let inline get32 (x32:int32) = FromInt64Dynamic (int64 x32) let inline isOX s = not (System.String.IsNullOrEmpty(s)) && s.Length > 2 && s.[0] = '0' && s.[1] = 'x' let FromZero () : 'T = (get32 0 :?> 'T) when 'T : BigInteger = BigInteger.Zero let FromOne () : 'T = (get32 1 :?> 'T) when 'T : BigInteger = BigInteger.One let FromInt32 (i:int32): 'T = (get32 i :?> 'T) when 'T : BigInteger = new BigInteger(i) let FromInt64 (i:int64): 'T = (FromInt64Dynamic i :?> 'T) when 'T : BigInteger = new BigInteger(i) let getParse s = lock tabParse (fun () -> let mutable res = Unchecked.defaultof<_> let ok = tabParse.TryGetValue(s,&res) if ok then res else #if FSHARP_CORE_PORTABLE // SL5 (and therefore Portable Profile47) does not have Parse, so make our own simple implementation let parse(s : string) = // ws* sign? digits+ ws* let mutable i = 0 // leading whitespace while i < s.Length && System.Char.IsWhiteSpace(s.[i]) do i <- i + 1 if i = s.Length then raise <| new System.ArgumentException() // optional sign let mutable isNegative = false if s.[i] = '+' then i <- i + 1 elif s.[i] = '-' then isNegative <- true i <- i + 1 if i = s.Length then raise <| new System.ArgumentException() // digits let startDigits = i while i < s.Length && System.Char.IsDigit(s.[i]) do i <- i + 1 let endDigits = i let len = endDigits - startDigits if len = 0 then raise <| new System.ArgumentException() // trailing whitespace while i < s.Length && System.Char.IsWhiteSpace(s.[i]) do i <- i + 1 if i <> s.Length then raise <| new System.ArgumentException() // text is now valid, parse it let mutable r = new System.Numerics.BigInteger(int(s.[startDigits]) - int('0')) let ten = new System.Numerics.BigInteger(10) for j in startDigits+1 .. endDigits-1 do r <- r * ten r <- r + new System.Numerics.BigInteger(int(s.[j]) - int('0')) if isNegative then r <- new System.Numerics.BigInteger(0) - r r let v = parse s #else let v = #if FX_NO_BIGINT BigInteger.Parse s #else #if FX_NO_BIGINT_CULTURE_PARSE BigInteger.Parse s #else if isOX s then BigInteger.Parse (s.[2..],NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture) else BigInteger.Parse (s,NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture) #endif #endif #endif res <- v tabParse.[s] <- res res) let FromStringDynamic (s:string) : obj = getParse s let FromString (s:string) : 'T = (FromStringDynamic s :?> 'T) when 'T : BigInteger = getParse s fsharp-3.0.34/src/fsharp/FSharp.Core/math/n.fsi0000775000175000017500000000463512260314606020120 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Math #if FX_NO_BIGINT open Microsoft.FSharp.Collections open Microsoft.FSharp.Core /// Abstract internal type [] type internal BigNat module internal BigNatModule = val zero : BigNat val one : BigNat val two : BigNat val add : BigNat -> BigNat -> BigNat val sub : BigNat -> BigNat -> BigNat val mul : BigNat -> BigNat -> BigNat val divmod : BigNat -> BigNat -> BigNat * BigNat val div : BigNat -> BigNat -> BigNat val rem : BigNat -> BigNat -> BigNat val hcf : BigNat -> BigNat -> BigNat val min : BigNat -> BigNat -> BigNat val max : BigNat -> BigNat -> BigNat val scale : int -> BigNat -> BigNat val powi : BigNat -> int -> BigNat val pow : BigNat -> BigNat -> BigNat val IsZero : BigNat -> bool val isZero : BigNat -> bool val isOne : BigNat -> bool val equal : BigNat -> BigNat -> bool val compare : BigNat -> BigNat -> int val lt : BigNat -> BigNat -> bool val gt : BigNat -> BigNat -> bool val lte : BigNat -> BigNat -> bool val gte : BigNat -> BigNat -> bool val hash : BigNat -> int val toFloat : BigNat -> float val ofInt32 : int -> BigNat val ofInt64 : int64 -> BigNat val toString : BigNat -> string val ofString : string -> BigNat val toUInt32 : BigNat -> uint32 val toUInt64 : BigNat -> uint64 val factorial : BigNat -> BigNat // val randomBits : int -> BigNat val bits : BigNat -> int val isSmall : BigNat -> bool (* will fit in int32 (but not nec all int32) *) val getSmall : BigNat -> int32 (* get the value, if it satisfies isSmall *) #endif fsharp-3.0.34/src/fsharp/FSharp.Core/control.fsi0000664000175000017500000022154112260314606020404 0ustar chrischris //---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #if FX_NO_CANCELLATIONTOKEN_CLASSES namespace System open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Represents one or more errors that occur during application execution. [] type AggregateException = inherit Exception /// Gets a read-only collection of the Exception instances that caused /// the current exception. member InnerExceptions : System.Collections.ObjectModel.ReadOnlyCollection namespace System.Threading open System open Microsoft.FSharp.Core /// Represents a registration to a Cancellation token source. type [] [] CancellationTokenRegistration = val private source : CancellationTokenSource val private id : int64 /// Equality comparison against another registration. /// The target for comparison. /// True if the two registrations are equal. member Equals : registration: CancellationTokenRegistration -> bool /// Equality operator for registrations. /// The first input registration. /// The second input registration. /// True if the two registrations are equal. static member (=) : registration1: CancellationTokenRegistration * registration2: CancellationTokenRegistration -> bool /// Inequality operator for registrations. /// The first input registration. /// The second input registration. /// False if the two registrations are equal. static member (<>) : registration1: CancellationTokenRegistration * registration2: CancellationTokenRegistration -> bool /// Frees resources associated with the registration. member Dispose : unit -> unit interface IDisposable /// Represents a capability to detect cancellation of an operation. and [] [] CancellationToken = val private source : CancellationTokenSource /// Flags whether an operation should be cancelled. member IsCancellationRequested : bool /// Registers an action to perform with the CancellationToken. /// The action to associate with the token. /// The state associated with the action. /// The created registration object. member Register : action: Action * state: obj -> CancellationTokenRegistration /// Equality comparison against another token. /// The target for comparison. /// True if the two tokens are equal. member Equals : token: CancellationToken -> bool /// Equality operator for tokens. /// The first input token. /// The second input token. /// True if the two tokens are equal. static member (=) : token1: CancellationToken * token2: CancellationToken -> bool /// Inequality operator for tokens. /// The first input token. /// The second input token. /// False if the two tokens are equal. static member (<>) : token1: CancellationToken * token2: CancellationToken -> bool /// Signals to a CancellationToken that it should be cancelled. and [] [] [] CancellationTokenSource = /// Creates a new cancellation capability. new : unit -> CancellationTokenSource /// Fetches the token representing the capability to detect cancellation of an operation. member Token : CancellationToken /// Cancels the operation. member Cancel : unit -> unit /// Creates a cancellation capability linking two tokens. /// The first input token. /// The second input token. /// The created CancellationTokenSource. static member CreateLinkedTokenSource : token1: CancellationToken * token2: CancellationToken -> CancellationTokenSource /// Discards resources associated with this capability. member Dispose : unit -> unit interface IDisposable #endif namespace Microsoft.FSharp.Control #nowarn "44" // This construct is deprecated. This method will be removed in the next version of F# and may no longer be used. Consider using Async.RunWithContinuations open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections open System.Threading #if FX_NO_TASK #else open System.Runtime.CompilerServices open System.Threading.Tasks #endif #if FX_NO_OPERATION_CANCELLED type OperationCanceledException = inherit System.Exception new : System.String -> OperationCanceledException #endif /// A compositional asynchronous computation, which, when run, will eventually produce a value /// of type T, or else raises an exception. /// /// Asynchronous computations are normally specified using an F# computation expression. /// /// When run, asynchronous computations have two modes: as a work item (executing synchronous /// code), or as a wait item (waiting for an event or I/O completion). /// /// When run, asynchronous computations can be governed by CancellationToken. This can usually /// be specified when the async computation is started. The associated CancellationTokenSource /// may be used to cancel the asynchronous computation. Asynchronous computations built using /// computation expressions can check the cancellation condition regularly. Synchronous /// computations within an asynchronous computation do not automatically check this condition. [] [] [] type Async<'T> /// This static class holds members for creating and manipulating asynchronous computations. [] [] type Async = /// Runs the asynchronous computation and await its result. /// /// If an exception occurs in the asynchronous computation then an exception is re-raised by this /// function. /// /// If no cancellation token is provided then the default cancellation token is used. /// /// The timeout parameter is given in milliseconds. A value of -1 is equivalent to /// System.Threading.Timeout.Infinite. /// The computation to run. /// The amount of time in milliseconds to wait for the result of the /// computation before raising a System.TimeoutException. If no value is provided /// for timeout then a default of -1 is used to correspond to System.Threading.Timeout.Infinite. ////If a cancellable cancellationToken is provided, timeout parameter will be ignored /// The cancellation token to be associated with the computation. /// If one is not supplied, the default cancellation token is used. /// The result of the computation. static member RunSynchronously : computation:Async<'T> * ?timeout : int * ?cancellationToken:CancellationToken-> 'T /// Starts the asynchronous computation in the thread pool. Do not await its result. /// /// If no cancellation token is provided then the default cancellation token is used. /// The computation to run asynchronously. /// The cancellation token to be associated with the computation. /// If one is not supplied, the default cancellation token is used. static member Start : computation:Async * ?cancellationToken:CancellationToken -> unit #if FX_NO_TASK #else /// Executes a computation in the thread pool. /// If no cancellation token is provided then the default cancellation token is used. /// A System.Threading.Tasks.Task that will be completed /// in the corresponding state once the computation terminates (produces the result, throws exception or gets canceled) /// static member StartAsTask : computation:Async<'T> * ?taskCreationOptions:TaskCreationOptions * ?cancellationToken:CancellationToken -> Task<'T> /// Creates an asynchronous computation which starts the given computation as a System.Threading.Tasks.Task static member StartChildAsTask : computation:Async<'T> * ?taskCreationOptions:TaskCreationOptions -> Async> #endif /// Creates an asynchronous computation that executes computation. /// If this computation completes successfully then return Choice1Of2 with the returned /// value. If this computation raises an exception before it completes then return Choice2Of2 /// with the raised exception. /// The input computation that returns the type T. /// A computation that returns a choice of type T or exception. static member Catch : computation:Async<'T> -> Async> /// Creates an asynchronous computation that executes computation. /// If this computation is cancelled before it completes then the computation generated by /// running compensation is executed. /// The input asynchronous computation. /// The function to be run if the computation is cancelled. /// An asynchronous computation that runs the compensation if the input computation /// is cancelled. static member TryCancelled : computation:Async<'T> * compensation:(OperationCanceledException -> unit) -> Async<'T> /// Generates a scoped, cooperative cancellation handler for use within an asynchronous workflow. /// /// For example, /// async { use! holder = Async.OnCancel interruption ... } /// generates an asynchronous computation where, if a cancellation happens any time during /// the execution of the asynchronous computation in the scope of holder, then action /// interruption is executed on the thread that is performing the cancellation. This can /// be used to arrange for a computation to be asynchronously notified that a cancellation /// has occurred, e.g. by setting a flag, or deregistering a pending I/O action. /// The function that is executed on the thread performing the /// cancellation. /// An asynchronous computation that triggers the interruption if it is cancelled /// before being disposed. static member OnCancel : interruption: (unit -> unit) -> Async /// Creates an asynchronous computation that returns the CancellationToken governing the execution /// of the computation. /// In async { let! token = Async.CancellationToken ...} token can be used to initiate other /// asynchronous operations that will cancel cooperatively with this workflow. /// An asynchronous computation capable of retrieving the CancellationToken from a computation /// expression. static member CancellationToken : Async /// Raises the cancellation condition for the most recent set of asynchronous computations started /// without any specific CancellationToken. Replaces the global CancellationTokenSource with a new /// global token source for any asynchronous computations created after this point without any /// specific CancellationToken. static member CancelDefaultToken : unit -> unit /// Gets the default cancellation token for executing asynchronous computations. /// The default CancellationToken. static member DefaultCancellationToken : CancellationToken //---------- Parallelism /// Starts a child computation within an asynchronous workflow. /// This allows multiple asynchronous computations to be executed simultaneously. /// /// This method should normally be used as the immediate /// right-hand-side of a let! binding in an F# asynchronous workflow, that is, /// /// async { ... /// let! completor1 = childComputation1 |> Async.StartChild /// let! completor2 = childComputation2 |> Async.StartChild /// ... /// let! result1 = completor1 /// let! result2 = completor2 /// ... } /// /// When used in this way, each use of StartChild starts an instance of childComputation /// and returns a completor object representing a computation to wait for the completion of the operation. /// When executed, the completor awaits the completion of childComputation. /// The child computation. /// The timeout value in milliseconds. If one is not provided /// then the default value of -1 corresponding to System.Threading.Timeout.Infinite. /// A new computation that waits for the input computation to finish. static member StartChild : computation:Async<'T> * ?millisecondsTimeout : int -> Async> /// Creates an asynchronous computation that executes all the given asynchronous computations, /// initially queueing each as work items and using a fork/join pattern. /// /// If all child computations succeed, an array of results is passed to the success continuation. /// /// If any child computation raises an exception, then the overall computation will trigger an /// exception, and cancel the others. /// /// The overall computation will respond to cancellation while executing the child computations. /// If cancelled, the computation will cancel any remaining child computations but will still wait /// for the other child computations to complete. /// A sequence of distinct computations to be parallelized. /// A computation that returns an array of values from the sequence of input computations. static member Parallel : computations:seq> -> Async<'T[]> //---------- Thread Control /// Creates an asynchronous computation that creates a new thread and runs /// its continuation in that thread. /// A computation that will execute on a new thread. static member SwitchToNewThread : unit -> Async /// Creates an asynchronous computation that queues a work item that runs /// its continuation. /// A computation that generates a new work item in the thread pool. static member SwitchToThreadPool : unit -> Async #if FX_NO_SYNC_CONTEXT #else /// Creates an asynchronous computation that runs /// its continuation using syncContext.Post. If syncContext is null /// then the asynchronous computation is equivalent to SwitchToThreadPool(). /// The synchronization context to accept the posted computation. /// An asynchronous computation that uses the syncContext context to execute. static member SwitchToContext : syncContext:System.Threading.SynchronizationContext -> Async #endif /// Creates an asynchronous computation that captures the current /// success, exception and cancellation continuations. The callback must /// eventually call exactly one of the given continuations. /// The function that accepts the current success, exception, and cancellation /// continuations. /// An asynchronous computation that provides the callback with the current continuations. static member FromContinuations : callback:(('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T> #if FX_NO_CREATE_DELEGATE #else /// Creates an asynchronous computation that waits for a single invocation of a CLI /// event by adding a handler to the event. Once the computation completes or is /// cancelled, the handler is removed from the event. /// /// The computation will respond to cancellation while waiting for the event. If a /// cancellation occurs, and cancelAction is specified, then it is executed, and /// the computation continues to wait for the event. /// /// If cancelAction is not specified, then cancellation causes the computation /// to cancel immediately. /// The event to handle once. /// An optional function to execute instead of cancelling when a /// cancellation is issued. /// An asynchronous computation that waits for the event to be invoked. static member AwaitEvent: event:IEvent<'Del,'T> * ?cancelAction : (unit -> unit) -> Async<'T> when 'Del : delegate<'T,unit> and 'Del :> System.Delegate #endif /// Creates an asynchronous computation that will wait on the given WaitHandle. /// /// The computation returns true if the handle indicated a result within the given timeout. /// The WaitHandle that can be signalled. /// The timeout value in milliseconds. If one is not provided /// then the default value of -1 corresponding to System.Threading.Timeout.Infinite. /// An asynchronous computation that waits on the given WaitHandle. static member AwaitWaitHandle: waitHandle: WaitHandle * ?millisecondsTimeout:int -> Async /// Creates an asynchronous computation that will wait on the IAsyncResult. /// /// The computation returns true if the handle indicated a result within the given timeout. /// The IAsyncResult to wait on. /// The timeout value in milliseconds. If one is not provided /// then the default value of -1 corresponding to System.Threading.Timeout.Infinite. /// An asynchronous computation that waits on the given IAsyncResult. static member AwaitIAsyncResult: iar: System.IAsyncResult * ?millisecondsTimeout:int -> Async #if FX_NO_TASK #else /// Return an asynchronous computation that will wait for the given task to complete and return /// its result. static member AwaitTask: task: Task<'T> -> Async<'T> #endif /// Creates an asynchronous computation that will sleep for the given time. This is scheduled /// using a System.Threading.Timer object. The operation will not block operating system threads /// for the duration of the wait. /// The number of milliseconds to sleep. /// An asynchronous computation that will sleep for the given time. /// Thrown when the due time is negative /// and not infinite. static member Sleep: millisecondsDueTime:int -> Async /// Creates an asynchronous computation in terms of a Begin/End pair of actions in /// the style used in CLI APIs. For example, /// Async.FromBeginEnd(ws.BeginGetWeather,ws.EndGetWeather) /// When the computation is run, beginFunc is executed, with /// a callback which represents the continuation of the computation. /// When the callback is invoked, the overall result is fetched using endFunc. /// /// The computation will respond to cancellation while waiting for the completion /// of the operation. If a cancellation occurs, and cancelAction is specified, then it is /// executed, and the computation continues to wait for the completion of the operation. /// /// If cancelAction is not specified, then cancellation causes the computation /// to stop immediately, and subsequent invocations of the callback are ignored. /// The function initiating a traditional CLI asynchronous operation. /// The function completing a traditional CLI asynchronous operation. /// An optional function to be executed when a cancellation is requested. /// An asynchronous computation wrapping the given Begin/End functions. static member FromBeginEnd : beginAction:(System.AsyncCallback * obj -> System.IAsyncResult) * endAction:(System.IAsyncResult -> 'T) * ?cancelAction : (unit -> unit) -> Async<'T> /// Creates an asynchronous computation in terms of a Begin/End pair of actions in /// the style used in CLI APIs. This overlaod should be used if the operation is /// qualified by one argument. For example, /// Async.FromBeginEnd(place,ws.BeginGetWeather,ws.EndGetWeather) /// When the computation is run, beginFunc is executed, with /// a callback which represents the continuation of the computation. /// When the callback is invoked, the overall result is fetched using endFunc. /// /// The computation will respond to cancellation while waiting for the completion /// of the operation. If a cancellation occurs, and cancelAction is specified, then it is /// executed, and the computation continues to wait for the completion of the operation. /// /// If cancelAction is not specified, then cancellation causes the computation /// to stop immediately, and subsequent invocations of the callback are ignored. /// The argument for the operation. /// The function initiating a traditional CLI asynchronous operation. /// The function completing a traditional CLI asynchronous operation. /// An optional function to be executed when a cancellation is requested. /// An asynchronous computation wrapping the given Begin/End functions. static member FromBeginEnd : arg:'Arg1 * beginAction:('Arg1 * System.AsyncCallback * obj -> System.IAsyncResult) * endAction:(System.IAsyncResult -> 'T) * ?cancelAction : (unit -> unit) -> Async<'T> /// Creates an asynchronous computation in terms of a Begin/End pair of actions in /// the style used in CLI APIs. This overlaod should be used if the operation is /// qualified by two arguments. For example, /// Async.FromBeginEnd(arg1,arg2,ws.BeginGetWeather,ws.EndGetWeather) /// When the computation is run, beginFunc is executed, with /// a callback which represents the continuation of the computation. /// When the callback is invoked, the overall result is fetched using endFunc. /// /// The computation will respond to cancellation while waiting for the completion /// of the operation. If a cancellation occurs, and cancelAction is specified, then it is /// executed, and the computation continues to wait for the completion of the operation. /// /// If cancelAction is not specified, then cancellation causes the computation /// to stop immediately, and subsequent invocations of the callback are ignored. /// The first argument for the operation. /// The second argument for the operation. /// The function initiating a traditional CLI asynchronous operation. /// The function completing a traditional CLI asynchronous operation. /// An optional function to be executed when a cancellation is requested. /// An asynchronous computation wrapping the given Begin/End functions. static member FromBeginEnd : arg1:'Arg1 * arg2:'Arg2 * beginAction:('Arg1 * 'Arg2 * System.AsyncCallback * obj -> System.IAsyncResult) * endAction:(System.IAsyncResult -> 'T) * ?cancelAction : (unit -> unit) -> Async<'T> /// Creates an asynchronous computation in terms of a Begin/End pair of actions in /// the style used in CLI APIs. This overlaod should be used if the operation is /// qualified by three arguments. For example, /// Async.FromBeginEnd(arg1,arg2,arg3,ws.BeginGetWeather,ws.EndGetWeather) /// When the computation is run, beginFunc is executed, with /// a callback which represents the continuation of the computation. /// When the callback is invoked, the overall result is fetched using endFunc. /// /// The computation will respond to cancellation while waiting for the completion /// of the operation. If a cancellation occurs, and cancelAction is specified, then it is /// executed, and the computation continues to wait for the completion of the operation. /// /// If cancelAction is not specified, then cancellation causes the computation /// to stop immediately, and subsequent invocations of the callback are ignored. /// The first argument for the operation. /// The second argument for the operation. /// The third argument for the operation. /// The function initiating a traditional CLI asynchronous operation. /// The function completing a traditional CLI asynchronous operation. /// An optional function to be executed when a cancellation is requested. /// An asynchronous computation wrapping the given Begin/End functions. static member FromBeginEnd : arg1:'Arg1 * arg2:'Arg2 * arg3:'Arg3 * beginAction:('Arg1 * 'Arg2 * 'Arg3 * System.AsyncCallback * obj -> System.IAsyncResult) * endAction:(System.IAsyncResult -> 'T) * ?cancelAction : (unit -> unit) -> Async<'T> /// Creates three functions that can be used to implement the .NET Asynchronous /// Programming Model (APM) for a given asynchronous computation. /// /// The functions should normally be published as members with prefix Begin, /// End and Cancel, and can be used within a type definition as follows: /// /// let beginAction,endAction,cancelAction = Async.AsBeginEnd (fun arg -> computation) /// member x.BeginSomeOperation(arg,callback,state:obj) = beginAction(arg,callback,state) /// member x.EndSomeOperation(iar) = endAction(iar) /// member x.CancelSomeOperation(iar) = cancelAction(iar) /// /// /// If the asynchronous computation takes no arguments, then AsBeginEnd is used as follows: /// /// let beginAction,endAction,cancelAction = Async.AsBeginEnd (fun () -> computation) /// member x.BeginSomeOperation(callback,state:obj) = beginAction((),callback,state) /// member x.EndSomeOperation(iar) = endAction(iar) /// member x.CancelSomeOperation(iar) = cancelAction(iar) /// /// /// /// If the asynchronous computation takes two arguments, then AsBeginEnd is used as follows: /// /// let beginAction,endAction,cancelAction = Async.AsBeginEnd (fun arg1 arg2 -> computation) /// member x.BeginSomeOperation(arg1,arg2,callback,state:obj) = beginAction((),callback,state) /// member x.EndSomeOperation(iar) = endAction(iar) /// member x.CancelSomeOperation(iar) = cancelAction(iar) /// /// /// In each case, the resulting API will be familiar to programmers in other CLI languages and /// is a useful way to publish asynchronous computations in CLI components. /// A function generating the asynchronous computation to split into the traditional /// .NET Asynchronous Programming Model. /// A tuple of the begin, end, and cancel members. static member AsBeginEnd : computation:('Arg -> Async<'T>) -> // The 'Begin' member ('Arg * System.AsyncCallback * obj -> System.IAsyncResult) * // The 'End' member (System.IAsyncResult -> 'T) * // The 'Cancel' member (System.IAsyncResult -> unit) /// Creates an asynchronous computation that runs the given computation and ignores /// its result. /// The input computation. /// A computation that is equivalent to the input computation, but disregards the result. static member Ignore : computation: Async<'T> -> Async /// Runs an asynchronous computation, starting immediately on the current operating system /// thread. Call one of the three continuations when the operation completes. /// If no cancellation token is provided then the default cancellation token /// is used. /// The asynchronous computation to execute. /// The function called on success. /// The function called on exception. /// The function called on cancellation. /// The CancellationToken to associate with the computation. /// The default is used if this parameter is not provided. static member StartWithContinuations: computation:Async<'T> * continuation:('T -> unit) * exceptionContinuation:(exn -> unit) * cancellationContinuation:(OperationCanceledException -> unit) * ?cancellationToken:CancellationToken-> unit /// Runs an asynchronous computation, starting immediately on the current operating system /// thread. /// If no cancellation token is provided then the default cancellation token is used. /// The asynchronous computation to execute. /// The CancellationToken to associate with the computation. /// The default is used if this parameter is not provided. static member StartImmediate: computation:Async * ?cancellationToken:CancellationToken-> unit [] [] /// The type of the async operator, used to build workflows for asynchronous computations. type AsyncBuilder = /// Creates an asynchronous computation that enumerates the sequence seq /// on demand and runs body for each element. /// /// A cancellation check is performed on each iteration of the loop. /// /// The existence of this method permits the use of for in the /// async { ... } computation expression syntax. /// The sequence to enumerate. /// A function to take an item from the sequence and create /// an asynchronous computation. Can be seen as the body of the for expression. /// An asynchronous computation that will enumerate the sequence and run body /// for each element. member For: sequence:seq<'T> * body:('T -> Async) -> Async /// Creates an asynchronous computation that just returns (). /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of empty else branches in the /// async { ... } computation expression syntax. /// An asynchronous computation that returns (). member Zero : unit -> Async /// Creates an asynchronous computation that first runs computation1 /// and then runs computation2, returning the result of computation2. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of expression sequencing in the /// async { ... } computation expression syntax. /// The first part of the sequenced computation. /// The second part of the sequenced computation. /// An asynchronous computation that runs both of the computations sequentially. member Combine : computation1:Async * computation2:Async<'T> -> Async<'T> /// Creates an asynchronous computation that runs computation repeatedly /// until guard() becomes false. /// /// A cancellation check is performed whenever the computation is executed. /// /// The existence of this method permits the use of while in the /// async { ... } computation expression syntax. /// The function to determine when to stop executing computation. /// The function to be executed. Equivalent to the body /// of a while expression. /// An asynchronous computation that behaves similarly to a while loop when run. member While : guard:(unit -> bool) * computation:Async -> Async /// Creates an asynchronous computation that returns the result v. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of return in the /// async { ... } computation expression syntax. /// The value to return from the computation. /// An asynchronous computation that returns value when executed. member Return : value:'T -> Async<'T> /// Delegates to the input computation. /// /// The existence of this method permits the use of return! in the /// async { ... } computation expression syntax. /// The input computation. /// The input computation. member ReturnFrom : computation:Async<'T> -> Async<'T> /// Creates an asynchronous computation that runs generator. /// /// A cancellation check is performed when the computation is executed. /// The function to run. /// An asynchronous computation that runs generator. member Delay : generator:(unit -> Async<'T>) -> Async<'T> /// Creates an asynchronous computation that runs binder(resource). /// The action resource.Dispose() is executed as this computation yields its result /// or if the asynchronous computation exits by an exception or by cancellation. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of use and use! in the /// async { ... } computation expression syntax. /// The resource to be used and disposed. /// The function that takes the resource and returns an asynchronous /// computation. /// An asynchronous computation that binds and eventually disposes resource. member Using: resource:'T * binder:('T -> Async<'U>) -> Async<'U> when 'T :> System.IDisposable /// Creates an asynchronous computation that runs computation, and when /// computation generates a result T, runs binder res. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of let! in the /// async { ... } computation expression syntax. /// The computation to provide an unbound result. /// The function to bind the result of computation. /// An asynchronous computation that performs a monadic bind on the result /// of computation. member Bind: computation: Async<'T> * binder: ('T -> Async<'U>) -> Async<'U> /// Creates an asynchronous computation that runs computation. The action compensation is executed /// after computation completes, whether computation exits normally or by an exception. If compensation raises an exception itself /// the original exception is discarded and the new exception becomes the overall result of the computation. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of try/finally in the /// async { ... } computation expression syntax. /// The input computation. /// The action to be run after computation completes or raises an /// exception (including cancellation). /// An asynchronous computation that executes computation and compensation aftewards or /// when an exception is raised. member TryFinally : computation:Async<'T> * compensation:(unit -> unit) -> Async<'T> /// Creates an asynchronous computation that runs computation and returns its result. /// If an exception happens then catchHandler(exn) is called and the resulting computation executed instead. /// /// A cancellation check is performed when the computation is executed. /// /// The existence of this method permits the use of try/with in the /// async { ... } computation expression syntax. /// The input computation. /// The function to run when computation throws an exception. /// An asynchronous computation that executes computation and calls catchHandler if an /// exception is thrown. member TryWith : computation:Async<'T> * catchHandler:(exn -> Async<'T>) -> Async<'T> /// Generate an object used to build asynchronous computations using F# computation expressions. The value /// 'async' is a pre-defined instance of this type. /// /// A cancellation check is performed when the computation is executed. internal new : unit -> AsyncBuilder [] /// A module of extension members providing asynchronous operations for some basic CLI types related to concurrency and I/O. module CommonExtensions = open System.IO type System.IO.Stream with /// Returns an asynchronous computation that will read from the stream into the given buffer. /// The buffer to read into. /// An optional offset as a number of bytes in the stream. /// An optional number of bytes to read from the stream. /// An asynchronous computation that will read from the stream into the given buffer. /// Thrown when the sum of offset and count is longer than /// the buffer length. /// Thrown when offset or count is negative. [] // give the extension member a nice, unmangled compiled name, unique within this module member AsyncRead : buffer:byte[] * ?offset:int * ?count:int -> Async /// Returns an asynchronous computation that will read the given number of bytes from the stream. /// The number of bytes to read. /// An asynchronous computation that returns the read byte[] when run. [] // give the extension member a nice, unmangled compiled name, unique within this module member AsyncRead : count:int -> Async /// Returns an asynchronous computation that will write the given bytes to the stream. /// The buffer to write from. /// An optional offset as a number of bytes in the stream. /// An optional number of bytes to write to the stream. /// An asynchronous computation that will write the given bytes to the stream. /// Thrown when the sum of offset and count is longer than /// the buffer length. /// Thrown when offset or count is negative. [] // give the extension member a nice, unmangled compiled name, unique within this module member AsyncWrite : buffer:byte[] * ?offset:int * ?count:int -> Async ///The family of first class event values for delegate types that satisfy the F# delegate constraint. type IObservable<'T> with /// Permanently connects a listener function to the observable. The listener will /// be invoked for each observation. /// The function to be called for each observation. [] // give the extension member a nice, unmangled compiled name, unique within this module member Add: callback:('T -> unit) -> unit /// Connects a listener function to the observable. The listener will /// be invoked for each observation. The listener can be removed by /// calling Dispose on the returned IDisposable object. /// The function to be called for each observation. /// An object that will remove the listener if disposed. [] // give the extension member a nice, unmangled compiled name, unique within this module member Subscribe: callback:('T -> unit) -> System.IDisposable /// A module of extension members providing asynchronous operations for some basic Web operations. [] module WebExtensions = begin #if FX_NO_WEB_REQUESTS #else type System.Net.WebRequest with /// Returns an asynchronous computation that, when run, will wait for a response to the given WebRequest. /// An asynchronous computation that waits for response to the WebRequest. [] // give the extension member a nice, unmangled compiled name, unique within this module member AsyncGetResponse : unit -> Async #endif #if FX_NO_WEB_CLIENT #else type System.Net.WebClient with /// Returns an asynchronous computation that, when run, will wait for the download of the given URI. /// The URI to retrieve. /// An asynchronous computation that will wait for the download of the URI. [] // give the extension member a nice, unmangled compiled name, unique within this module member AsyncDownloadString : address:System.Uri -> Async #endif end [] [] /// A handle to a capability to reply to a PostAndReply message. type AsyncReplyChannel<'Reply> = /// Sends a reply to a PostAndReply message. /// The value to send. member Reply : value:'Reply -> unit /// A message-processing agent which executes an asynchronous computation. /// /// The agent encapsulates a message queue that supports multiple-writers and /// a single reader agent. Writers send messages to the agent by using the Post /// method and its variations. /// /// The agent may wait for messages using the Receive or TryReceive methods or /// scan through all available messages using the Scan or TryScan method. [] [] [] type MailboxProcessor<'Msg> = /// Creates an agent. The body function is used to generate the asynchronous /// computation executed by the agent. This function is not executed until /// Start is called. /// The function to produce an asynchronous computation that will be executed /// as the read loop for the MailboxProcessor when Start is called. /// An optional cancellation token for the body. /// Defaults to Async.DefaultCancellationToken. /// The created MailboxProcessor. new : body:(MailboxProcessor<'Msg> -> Async) * ?cancellationToken: CancellationToken -> MailboxProcessor<'Msg> /// Creates and starts an agent. The body function is used to generate the asynchronous /// computation executed by the agent. /// The function to produce an asynchronous computation that will be executed /// as the read loop for the MailboxProcessor when Start is called. /// An optional cancellation token for the body. /// Defaults to Async.DefaultCancellationToken. /// The created MailboxProcessor. static member Start : body:(MailboxProcessor<'Msg> -> Async) * ?cancellationToken: CancellationToken -> MailboxProcessor<'Msg> /// Posts a message to the message queue of the MailboxProcessor, asynchronously. /// The message to post. member Post : message:'Msg -> unit /// Posts a message to an agent and await a reply on the channel, synchronously. /// /// The message is generated by applying buildMessage to a new reply channel /// to be incorporated into the message. The receiving agent must process this /// message and invoke the Reply method on this reply channel precisely once. /// The function to incorporate the AsyncReplyChannel into /// the message to be sent. /// An optional timeout parameter (in milliseconds) to wait for a reply message. /// Defaults to -1 which corresponds to System.Threading.Timeout.Infinite. /// The reply from the agent. member PostAndReply : buildMessage:(AsyncReplyChannel<'Reply> -> 'Msg) * ?timeout : int -> 'Reply /// Posts a message to an agent and await a reply on the channel, asynchronously. /// /// The message is generated by applying buildMessage to a new reply channel /// to be incorporated into the message. The receiving agent must process this /// message and invoke the Reply method on this reply channel precisely once. /// The function to incorporate the AsyncReplyChannel into /// the message to be sent. /// An optional timeout parameter (in milliseconds) to wait for a reply message. /// Defaults to -1 which corresponds to System.Threading.Timeout.Infinite. /// An asychronous computation that will wait for the reply from the agent. member PostAndAsyncReply : buildMessage:(AsyncReplyChannel<'Reply> -> 'Msg) * ?timeout : int -> Async<'Reply> /// Like PostAndReply, but returns None if no reply within the timeout period. /// The function to incorporate the AsyncReplyChannel into /// the message to be sent. /// An optional timeout parameter (in milliseconds) to wait for a reply message. /// Defaults to -1 which corresponds to System.Threading.Timeout.Infinite. /// The reply from the agent or None if the timeout expires. member TryPostAndReply : buildMessage:(AsyncReplyChannel<'Reply> -> 'Msg) * ?timeout : int -> 'Reply option /// Like AsyncPostAndReply, but returns None if no reply within the timeout period. /// The function to incorporate the AsyncReplyChannel into /// the message to be sent. /// An optional timeout parameter (in milliseconds) to wait for a reply message. /// Defaults to -1 which corresponds to System.Threading.Timeout.Infinite. /// An asynchronous computation that will return the reply or None if the timeout expires. member PostAndTryAsyncReply : buildMessage:(AsyncReplyChannel<'Reply> -> 'Msg) * ?timeout : int -> Async<'Reply option> /// Waits for a message. This will consume the first message in arrival order. /// /// This method is for use within the body of the agent. /// /// This method is for use within the body of the agent. For each agent, at most /// one concurrent reader may be active, so no more than one concurrent call to /// Receive, TryReceive, Scan and/or TryScan may be active. /// An optional timeout in milliseconds. Defaults to -1 which corresponds /// to System.Threading.Timeout.Infinite. /// An asynchronous computation that returns the received message. /// Thrown when the timeout is exceeded. member Receive : ?timeout:int -> Async<'Msg> /// Waits for a message. This will consume the first message in arrival order. /// /// This method is for use within the body of the agent. /// /// Returns None if a timeout is given and the timeout is exceeded. /// /// This method is for use within the body of the agent. For each agent, at most /// one concurrent reader may be active, so no more than one concurrent call to /// Receive, TryReceive, Scan and/or TryScan may be active. /// An optional timeout in milliseconds. Defaults to -1 which /// corresponds to System.Threading.Timeout.Infinite. /// An asynchronous computation that returns the received message or /// None if the timeout is exceeded. member TryReceive : ?timeout:int -> Async<'Msg option> /// Scans for a message by looking through messages in arrival order until scanner /// returns a Some value. Other messages remain in the queue. /// /// Returns None if a timeout is given and the timeout is exceeded. /// /// This method is for use within the body of the agent. For each agent, at most /// one concurrent reader may be active, so no more than one concurrent call to /// Receive, TryReceive, Scan and/or TryScan may be active. /// The function to return None if the message is to be skipped /// or Some if the message is to be processed and removed from the queue. /// An optional timeout in milliseconds. Defaults to -1 which corresponds /// to System.Threading.Timeout.Infinite. /// An asynchronous computation that scanner built off the read message. /// Thrown when the timeout is exceeded. member Scan : scanner:('Msg -> (Async<'T>) option) * ?timeout:int -> Async<'T> /// Scans for a message by looking through messages in arrival order until scanner /// returns a Some value. Other messages remain in the queue. /// /// This method is for use within the body of the agent. For each agent, at most /// one concurrent reader may be active, so no more than one concurrent call to /// Receive, TryReceive, Scan and/or TryScan may be active. /// The function to return None if the message is to be skipped /// or Some if the message is to be processed and removed from the queue. /// An optional timeout in milliseconds. Defaults to -1 which corresponds /// to System.Threading.Timeout.Infinite. /// An asynchronous computation that scanner built off the read message. member TryScan : scanner:('Msg -> (Async<'T>) option) * ?timeout:int -> Async<'T option> /// Starts the agent. member Start : unit -> unit /// Raises a timeout exception if a message not received in this amount of time. By default /// no timeout is used. member DefaultTimeout : int with get, set /// Occurs when the execution of the agent results in an exception. [] member Error : IEvent interface System.IDisposable /// Returns the number of unprocessed messages in the message queue of the agent. member CurrentQueueLength : int [] [] /// Basic operations on first class event and other observable objects. module Observable = /// Returns an observable for the merged observations from the sources. /// The returned object propagates success and error values arising /// from either source and completes when both the sources have completed. /// /// For each observer, the registered intermediate observing object is not /// thread safe. That is, observations arising from the sources must not /// be triggered concurrently on different threads. /// The first Observable. /// The second Observable. /// An Observable that propagates information from both sources. [] val merge: source1:IObservable<'T> -> source2:IObservable<'T> -> IObservable<'T> /// Returns an observable which transforms the observations of the source by the /// given function. The transformation function is executed once for each /// subscribed observer. The returned object also propagates error observations /// arising from the source and completes when the source completes. /// The function applied to observations from the source. /// The input Observable. /// An Observable of the type specified by mapping. [] val map: mapping:('T -> 'U) -> source:IObservable<'T> -> IObservable<'U> /// Returns an observable which filters the observations of the source /// by the given function. The observable will see only those observations /// for which the predicate returns true. The predicate is executed once for /// each subscribed observer. The returned object also propagates error /// observations arising from the source and completes when the source completes. /// The function to apply to observations to determine if it should /// be kept. /// The input Observable. /// An Observable that filters observations based on filter. [] val filter: predicate:('T -> bool) -> source:IObservable<'T> -> IObservable<'T> /// Returns two observables which partition the observations of the source by /// the given function. The first will trigger observations for those values /// for which the predicate returns true. The second will trigger observations /// for those values where the predicate returns false. The predicate is /// executed once for each subscribed observer. Both also propagate all error /// observations arising from the source and each completes when the source /// completes. /// The function to determine which output Observable will trigger /// a particular observation. /// The input Observable. /// A tuple of Observables. The first triggers when the predicate returns true, and /// the second triggers when the predicate returns false. [] val partition: predicate:('T -> bool) -> source:IObservable<'T> -> (IObservable<'T> * IObservable<'T>) /// Returns two observables which split the observations of the source by the /// given function. The first will trigger observations x for which the /// splitter returns Choice1Of2 x. The second will trigger observations /// y for which the splitter returns Choice2Of2 y The splitter is /// executed once for each subscribed observer. Both also propagate error /// observations arising from the source and each completes when the source /// completes. /// The function that takes an observation an transforms /// it into one of the two output Choice types. /// The input Observable. /// A tuple of Observables. The first triggers when splitter returns Choice1of2 /// and the second triggers when splitter returns Choice2of2. [] val split: splitter:('T -> Choice<'U1,'U2>) -> source:IObservable<'T> -> (IObservable<'U1> * IObservable<'U2>) /// Returns an observable which chooses a projection of observations from the source /// using the given function. The returned object will trigger observations x /// for which the splitter returns Some x. The returned object also propagates /// all errors arising from the source and completes when the source completes. /// The function that returns Some for observations to be propagated /// and None for observations to ignore. /// The input Observable. /// An Observable that only propagates some of the observations from the source. [] val choose: chooser:('T -> 'U option) -> source:IObservable<'T> -> IObservable<'U> /// Returns an observable which, for each observer, allocates an item of state /// and applies the given accumulating function to successive values arising from /// the input. The returned object will trigger observations for each computed /// state value, excluding the initial value. The returned object propagates /// all errors arising from the source and completes when the source completes. /// /// For each observer, the registered intermediate observing object is not thread safe. /// That is, observations arising from the source must not be triggered concurrently /// on different threads. /// The function to update the state with each observation. /// The initial state. /// The input Observable. /// An Observable that triggers on the updated state values. [] val scan: collector:('U -> 'T -> 'U) -> state:'U -> source:IObservable<'T> -> IObservable<'U> /// Creates an observer which permanently subscribes to the given observable and which calls /// the given function for each observation. /// The function to be called on each observation. /// The input Observable. [] val add : callback:('T -> unit) -> source:IObservable<'T> -> unit /// Creates an observer which subscribes to the given observable and which calls /// the given function for each observation. /// The function to be called on each observation. /// The input Observable. /// An object that will remove the callback if disposed. [] val subscribe : callback:('T -> unit) -> source:IObservable<'T> -> System.IDisposable /// Returns a new observable that triggers on the second and subsequent triggerings of the input observable. /// The Nth triggering of the input observable passes the arguments from the N-1th and Nth triggering as /// a pair. The argument passed to the N-1th triggering is held in hidden internal state until the /// Nth triggering occurs. /// /// For each observer, the registered intermediate observing object is not thread safe. /// That is, observations arising from the source must not be triggered concurrently /// on different threads. /// The input Observable. /// An Observable that triggers on successive pairs of observations from the input Observable. [] val pairwise: source:IObservable<'T> -> IObservable<'T * 'T> [] [] module Event = /// Fires the output event when either of the input events fire. /// The first input event. /// The second input event. /// An event that fires when either of the input events fire. [] val merge: event1:IEvent<'Del1,'T> -> event2:IEvent<'Del2,'T> -> IEvent<'T> /// Returns a new event that passes values transformed by the given function. /// The function to transform event values. /// The input event. /// An event that passes the transformed values. [] val map: mapping:('T -> 'U) -> sourceEvent:IEvent<'Del,'T> -> IEvent<'U> /// Returns a new event that listens to the original event and triggers the resulting /// event only when the argument to the event passes the given function. /// The function to determine which triggers from the event to propagate. /// The input event. /// An event that only passes values that pass the predicate. [] val filter: predicate:('T -> bool) -> sourceEvent:IEvent<'Del,'T> -> IEvent<'T> /// Returns a new event that listens to the original event and triggers the /// first resulting event if the application of the predicate to the event arguments /// returned true, and the second event if it returned false. /// The function to determine which output event to trigger. /// The input event. /// A tuple of events. The first is triggered when the predicate evaluates to true /// and the second when the predicate evaluates to false. [] val partition: predicate:('T -> bool) -> sourceEvent:IEvent<'Del,'T> -> (IEvent<'T> * IEvent<'T>) /// Returns a new event that listens to the original event and triggers the /// first resulting event if the application of the function to the event arguments /// returned a Choice1Of2, and the second event if it returns a Choice2Of2. /// The function to transform event values into one of two types. /// The input event. /// A tuple of events. The first fires whenever splitter evaluates to Choice1of1 and /// the second fires whenever splitter evaluates to Choice2of2. [] val split: splitter:('T -> Choice<'U1,'U2>) -> sourceEvent:IEvent<'Del,'T> -> (IEvent<'U1> * IEvent<'U2>) /// Returns a new event which fires on a selection of messages from the original event. /// The selection function takes an original message to an optional new message. /// The function to select and transform event values to pass on. /// The input event. /// An event that fires only when the chooser returns Some. [] val choose: chooser:('T -> 'U option) -> sourceEvent:IEvent<'Del,'T> -> IEvent<'U> [] /// Returns a new event consisting of the results of applying the given accumulating function /// to successive values triggered on the input event. An item of internal state /// records the current value of the state parameter. The internal state is not locked during the /// execution of the accumulation function, so care should be taken that the /// input IEvent not triggered by multiple threads simultaneously. /// The function to update the state with each event value. /// The initial state. /// The input event. /// An event that fires on the updated state values. val scan: collector:('U -> 'T -> 'U) -> state:'U -> sourceEvent:IEvent<'Del,'T> -> IEvent<'U> /// Runs the given function each time the given event is triggered. /// The function to call when the event is triggered. /// The input event. [] val add : callback:('T -> unit) -> sourceEvent:IEvent<'Del,'T> -> unit /// Returns a new event that triggers on the second and subsequent triggerings of the input event. /// The Nth triggering of the input event passes the arguments from the N-1th and Nth triggering as /// a pair. The argument passed to the N-1th triggering is held in hidden internal state until the /// Nth triggering occurs. /// The input event. /// An event that triggers on pairs of consecutive values passed from the source event. [] val pairwise: sourceEvent:IEvent<'Del,'T> -> IEvent<'T * 'T> fsharp-3.0.34/src/fsharp/FSharp.Core/collections.fsi0000775000175000017500000000613112260314606021241 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// This namespace contains some common collections in a style primarily designed for use from F#. namespace Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics open System open System.Collections.Generic /// Common notions of comparison identity used with sorted data structures. module ComparisonIdentity = /// Structural comparison. Compare using Operators.compare. val Structural<'T> : IComparer<'T> when 'T : comparison /// Compare using the given comparer function. /// A function to compare two values. /// An object implementing IComparer using the supplied comparer. val FromFunction : comparer:('T -> 'T -> int) -> IComparer<'T> /// Common notions of value identity used with hash tables. module HashIdentity = /// Structural hashing. Hash using Operators.(=) and Operators.hash. // inline justification: allows specialization of structural hash functions based on type val inline Structural<'T> : IEqualityComparer<'T> when 'T : equality val LimitedStructural<'T> : limit: int -> IEqualityComparer<'T> when 'T : equality /// Physical hashing (hash on reference identity of objects, and the contents of value types). /// Hash using LanguagePrimitives.PhysicalEquality and LanguagePrimitives.PhysicalHash, /// That is, for value types use GetHashCode and Object.Equals (if no other optimization available), /// and for reference types use System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode and /// reference equality. val Reference<'T> : IEqualityComparer<'T> when 'T : not struct /// Hash using the given hashing and equality functions. /// A function to generate a hash code from a value. /// A function to test equality of two values. /// An object implementing IEqualityComparer using the supplied functions. // inline justification: allows inlining of hash functions val inline FromFunctions<'T> : hasher:('T -> int) -> equality:('T -> 'T -> bool) -> IEqualityComparer<'T> fsharp-3.0.34/src/fsharp/FSharp.Core/Linq.fsi0000775000175000017500000005114212260314606017630 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Linq #if FX_ATLEAST_LINQ open System open System.Linq.Expressions open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Operators for working with nullable values [] module NullableOperators = open System /// The '>=' operator where a nullable value appears on the left val ( ?>= ) : Nullable<'T> -> 'T -> bool when 'T : comparison /// The '>' operator where a nullable value appears on the left val ( ?> ) : Nullable<'T> -> 'T -> bool when 'T : comparison /// The '<=' operator where a nullable value appears on the left val ( ?<= ) : Nullable<'T> -> 'T -> bool when 'T : comparison /// The '<' operator where a nullable value appears on the left val ( ?< ) : Nullable<'T> -> 'T -> bool when 'T : comparison /// The '=' operator where a nullable value appears on the left val ( ?= ) : Nullable<'T> -> 'T -> bool when 'T : equality /// The '<>' operator where a nullable value appears on the left val ( ?<> ) : Nullable<'T> -> 'T -> bool when 'T : equality /// The '>=' operator where a nullable value appears on the right val ( >=? ) : 'T -> Nullable<'T> -> bool when 'T : comparison /// The '>' operator where a nullable value appears on the right val ( >? ) : 'T -> Nullable<'T> -> bool when 'T : comparison /// The '<=' operator where a nullable value appears on the right val ( <=? ) : 'T -> Nullable<'T> -> bool when 'T : comparison /// The '<' operator where a nullable value appears on the right val ( Nullable<'T> -> bool when 'T : comparison /// The '=' operator where a nullable value appears on the right val ( =? ) : 'T -> Nullable<'T> -> bool when 'T : equality /// The '<>' operator where a nullable value appears on the right val ( <>? ) : 'T -> Nullable<'T> -> bool when 'T : equality /// The '>=' operator where a nullable value appears on both left and right sides val ( ?>=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison /// The '>' operator where a nullable value appears on both left and right sides val ( ?>? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison /// The '<=' operator where a nullable value appears on both left and right sides val ( ?<=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : comparison /// The '<' operator where a nullable value appears on both left and right sides val ( ? -> Nullable<'T> -> bool when 'T : comparison /// The '=' operator where a nullable value appears on both left and right sides val ( ?=? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : equality /// The '<>' operator where a nullable value appears on both left and right sides val ( ?<>? ) : Nullable<'T> -> Nullable<'T> -> bool when 'T : equality /// The addition operator where a nullable value appears on the left val inline ( ?+ ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The addition operator where a nullable value appears on the right val inline ( +? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The addition operator where a nullable value appears on both left and right sides val inline ( ?+? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( + ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The subtraction operator where a nullable value appears on the left val inline ( ?- ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The subtraction operator where a nullable value appears on the right val inline ( -? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The subtraction operator where a nullable value appears on both left and right sides val inline ( ?-? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( - ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The multiplication operator where a nullable value appears on the left val inline ( ?* ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The multiplication operator where a nullable value appears on the right val inline ( *? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The multiplication operator where a nullable value appears on both left and right sides val inline ( ?*? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( * ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The modulus operator where a nullable value appears on the left val inline ( ?% ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The modulus operator where a nullable value appears on the right val inline ( %? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The modulus operator where a nullable value appears on both left and right sides val inline ( ?%? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( % ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The division operator where a nullable value appears on the left val inline ( ?/ ) : Nullable< ^T1 > -> ^T2 -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The division operator where a nullable value appears on the right val inline ( /? ) : ^T1 -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// The division operator where a nullable value appears on both left and right sides val inline ( ?/? ) : Nullable< ^T1 > -> Nullable< ^T2 > -> Nullable< ^T3 > when (^T1 or ^T2) : (static member ( / ) : ^T1 * ^T2 -> ^T3) and default ^T2 : ^T3 and default ^T3 : ^T1 and default ^T3 : ^T2 and default ^T1 : ^T3 and default ^T1 : ^T2 and default ^T1 : int /// Functions for converting nullable values [] [] module Nullable = /// Converts the argument to byte. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted byte [] val inline byte : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> byte) and default ^T : int /// Converts the argument to signed byte. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted sbyte [] val inline sbyte : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int /// Converts the argument to signed 16-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int16 [] val inline int16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int16) and default ^T : int /// Converts the argument to unsigned 16-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint16 [] val inline uint16 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint16) and default ^T : int /// Converts the argument to signed 32-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int [] val inline int : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int) and default ^T : int /// Converts the argument to a particular enum type. /// The input value. /// The converted enum type. [] val inline enum : value:Nullable< int32 > -> Nullable< ^U > when ^U : enum /// Converts the argument to signed 32-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int32 [] val inline int32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int32) and default ^T : int /// Converts the argument to unsigned 32-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint32 [] val inline uint32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint32) and default ^T : int /// Converts the argument to signed 64-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted int64 [] val inline int64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> int64) and default ^T : int /// Converts the argument to unsigned 64-bit integer. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted uint64 [] val inline uint64 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> uint64) and default ^T : int /// Converts the argument to 32-bit float. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted float32 [] val inline float32 : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float32) and default ^T : int /// Converts the argument to 64-bit float. This is a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted float [] val inline float : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> float) and default ^T : int /// Converts the argument to signed native integer. This is a direct conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted nativeint [] val inline nativeint : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> nativeint) and default ^T : int /// Converts the argument to unsigned native integer using a direct conversion for all /// primitive numeric types. Otherwise the operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted unativeint [] val inline unativeint : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> unativeint) and default ^T : int /// Converts the argument to System.Decimal using a direct conversion for all /// primitive numeric types. The operation requires an appropriate /// static conversion method on the input type. /// The input value. /// The converted decimal. [] val inline decimal : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> decimal) and default ^T : int /// Converts the argument to character. Numeric inputs are converted according to the UTF-16 /// encoding for characters. The operation requires an appropriate static conversion method on the input type. /// The input value. /// The converted char. [] val inline char : value:Nullable< ^T > -> Nullable when ^T : (static member op_Explicit : ^T -> char) and default ^T : int namespace Microsoft.FSharp.Linq.RuntimeHelpers open System open System.Linq.Expressions open Microsoft.FSharp.Core open Microsoft.FSharp.Collections module LeafExpressionConverter = open Microsoft.FSharp.Quotations /// When used in a quotation, this function indicates a specific conversion /// should be performed when converting the quotation to a LINQ expression. /// /// This function should not be called directly. // // NOTE: when an F# expression tree is converted to a Linq expression tree using ToLinqExpression // the transformation of LinqExpressionHelper(e) is the same as the transformation of // 'e'. This allows ImplicitExpressionConversionHelper to be used as a marker to satisfy the C# design where // certain expression trees are constructed using methods with a signature that expects an // expression tree of type Expression but are passed an expression tree of type T. //[] val ImplicitExpressionConversionHelper : 'T -> Expression<'T> /// When used in a quotation, this function indicates a specific conversion /// should be performed when converting the quotation to a LINQ expression. /// /// This function should not be called directly. //[] val MemberInitializationHelper : 'T -> 'T /// When used in a quotation, this function indicates a specific conversion /// should be performed when converting the quotation to a LINQ expression. /// /// This function should not be called directly. //[] val NewAnonymousObjectHelper : 'T -> 'T /// Converts a subset of F# quotations to a LINQ expression, for the subset of LINQ expressions represented by the /// expression syntax in the C# language. val QuotationToExpression : Expr -> Expression /// Converts a subset of F# quotations to a LINQ expression, for the subset of LINQ expressions represented by the /// expression syntax in the C# language. val QuotationToLambdaExpression : Expr<'T> -> Expression<'T> /// Evaluates a subset of F# quotations by first converting to a LINQ expression, for the subset of LINQ expressions represented by the /// expression syntax in the C# language. val EvaluateQuotation : Expr -> obj /// A runtime helper used to evaluate nested quotation literals. val SubstHelper : Expr * Var[] * obj[] -> Expr<'T> val internal (|SpecificCallToMethod|_|) : System.RuntimeMethodHandle -> (Expr -> (Expr option * Type list * Expr list) option) #endiffsharp-3.0.34/src/fsharp/FSharp.Core/MutableTuple.fs0000775000175000017500000001236512260314606021163 0ustar chrischris// ---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation 2005-2011. // This sample code is provided "as is" without warranty of any kind. // We disclaim all warranties, either express or implied, including the // warranties of merchantability and fitness for a particular purpose. // ---------------------------------------------------------------------------- namespace Microsoft.FSharp.Linq.RuntimeHelpers #if FX_ATLEAST_LINQ #nowarn "49" // no warning for uppercase variable names open Microsoft.FSharp.Core // ---------------------------------------------------------------------------- // Mutable Tuples - used when translating queries that use F# tuples // and records. We replace tuples/records with anonymous types which // are handled correctly by LINQ to SQL/Entities and other providers. // // NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE // // The terminology "mutable tuple" is now incorrect in this code - // "immutable anonymous tuple-like types" are used instead. The key thing in this // code is that the anonymous types used conform to the shape and style // expected by LINQ providers, and we pass the correspondence between constructor // arguments and properties to the magic "members" argument of the Expression.New // constructor in Linq.fs. // // This terminology mistake also runs all the way through Query.fs. // ---------------------------------------------------------------------------- /// This type shouldn't be used directly from user code. type AnonymousObject<'T1> = val private item1 : 'T1 member x.Item1 = x.item1 new (Item1) = { item1 = Item1 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 new (Item1, Item2) = { item1 = Item1; item2 = Item2 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 new (Item1, Item2, Item3) = { item1 = Item1; item2 = Item2; item3 = Item3 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3, 'T4> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 val private item4 : 'T4 member x.Item4 = x.item4 new (Item1, Item2, Item3, Item4) = { item1 = Item1; item2 = Item2; item3 = Item3; item4 = Item4 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3, 'T4, 'T5> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 val private item4 : 'T4 member x.Item4 = x.item4 val private item5 : 'T5 member x.Item5 = x.item5 new (Item1, Item2, Item3, Item4, Item5) = { item1 = Item1; item2 = Item2; item3 = Item3; item4 = Item4 ; item5 = Item5 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3, 'T4, 'T5, 'T6> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 val private item4 : 'T4 member x.Item4 = x.item4 val private item5 : 'T5 member x.Item5 = x.item5 val private item6 : 'T6 member x.Item6 = x.item6 new (Item1, Item2, Item3, Item4, Item5, Item6) = { item1 = Item1; item2 = Item2; item3 = Item3; item4 = Item4 ; item5 = Item5 ; item6 = Item6 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 val private item4 : 'T4 member x.Item4 = x.item4 val private item5 : 'T5 member x.Item5 = x.item5 val private item6 : 'T6 member x.Item6 = x.item6 val private item7 : 'T7 member x.Item7 = x.item7 new (Item1, Item2, Item3, Item4, Item5, Item6, Item7) = { item1 = Item1; item2 = Item2; item3 = Item3; item4 = Item4 ; item5 = Item5 ; item6 = Item6 ; item7 = Item7 } /// This type shouldn't be used directly from user code. type AnonymousObject<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, 'T8> = val private item1 : 'T1 member x.Item1 = x.item1 val private item2 : 'T2 member x.Item2 = x.item2 val private item3 : 'T3 member x.Item3 = x.item3 val private item4 : 'T4 member x.Item4 = x.item4 val private item5 : 'T5 member x.Item5 = x.item5 val private item6 : 'T6 member x.Item6 = x.item6 val private item7 : 'T7 member x.Item7 = x.item7 val private item8 : 'T8 member x.Item8 = x.item8 new (Item1, Item2, Item3, Item4, Item5, Item6, Item7, Item8) = { item1 = Item1; item2 = Item2; item3 = Item3; item4 = Item4 ; item5 = Item5 ; item6 = Item6 ; item7 = Item7; item8 = Item8 } #endif fsharp-3.0.34/src/fsharp/FSharp.Core/event.fsi0000775000175000017500000000623612260314606020052 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Control open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Control open Microsoft.FSharp.Collections #if FX_NO_DELEGATE_DYNAMIC_METHOD // not available on CompactFramework 2.0 #else /// Event implementations for an arbitrary type of delegate. [] type DelegateEvent<'Delegate when 'Delegate :> System.Delegate> = /// Creates an event object suitable for implementing an arbitrary type of delegate. /// The event object. new : unit -> DelegateEvent<'Delegate> /// Triggers the event using the given parameters. /// The parameters for the event. member Trigger : args:obj[] -> unit /// Publishes the event as a first class event value. member Publish : IDelegateEvent<'Delegate> /// Event implementations for a delegate types following the standard .NET Framework convention of a first 'sender' argument. [] type Event<'Delegate,'Args when 'Delegate : delegate<'Args,unit> and 'Delegate :> System.Delegate > = /// Creates an event object suitable for delegate types following the standard .NET Framework convention of a first 'sender' argument. /// The created event. new : unit -> Event<'Delegate,'Args> /// Triggers the event using the given sender object and parameters. The sender object may be null. /// The object triggering the event. /// The parameters for the event. member Trigger : sender:obj * args:'Args -> unit /// Publishes the event as a first class event value. member Publish : IEvent<'Delegate,'Args> #endif /// Event implementations for the IEvent<_> type. [] type Event<'T> = /// Creates an observable object. /// The created event. new : unit -> Event<'T> /// Triggers an observation using the given parameters. /// The event parameters. member Trigger : arg:'T -> unit /// Publishes an observation as a first class value. member Publish : IEvent<'T> fsharp-3.0.34/src/fsharp/FSharp.Core/local.fsi0000775000175000017500000000466112260314606020023 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Definitions internal for this library. namespace Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Core open Microsoft.FSharp.Collections module internal List = val init : int -> (int -> 'T) -> 'T list val iter : ('T -> unit) -> 'T list -> unit val filter : predicate:('T -> bool) -> 'T list -> 'T list val collect : ('T -> 'U list) -> 'T list -> 'U list val partition : predicate:('T -> bool) -> 'T list -> 'T list * 'T list val map : mapping:('T -> 'U) -> 'T list -> 'U list val map2 : mapping:('T1 -> 'T2 -> 'U) -> 'T1 list -> 'T2 list -> 'U list val mapi : (int -> 'T -> 'U) -> 'T list -> 'U list val forall : predicate:('T -> bool) -> 'T list -> bool val exists : predicate:('T -> bool) -> 'T list -> bool val rev: 'T list -> 'T list val concat : seq<'T list> -> 'T list val iteri : action:(int -> 'T -> unit) -> 'T list -> unit val unzip : ('T1 * 'T2) list -> 'T1 list * 'T2 list val unzip3 : ('T1 * 'T2 * 'T3) list -> 'T1 list * 'T2 list * 'T3 list val zip : 'T1 list -> 'T2 list -> ('T1 * 'T2) list val zip3 : 'T1 list -> 'T2 list -> 'T3 list -> ('T1 * 'T2 * 'T3) list val ofArray : 'T[] -> 'T list val toArray : 'T list -> 'T[] val sortWith : ('T -> 'T -> int) -> 'T list -> 'T list module internal Array = // The input parameter should be checked by callers if necessary val inline zeroCreateUnchecked : int -> 'T[] val inline init : int -> (int -> 'T) -> 'T[] val permute : indexMap:(int -> int) -> 'T[] -> 'T[] val unstableSortInPlaceBy: projection:('T -> 'Key) -> array:'T[] -> unit when 'Key : comparison val unstableSortInPlace: array:'T[] -> unit when 'T : comparison val stableSortInPlaceBy: projection:('T -> 'Key) -> array:'T[] -> unit when 'Key : comparison val stableSortInPlace: array:'T[] -> unit when 'T : comparison fsharp-3.0.34/src/fsharp/FSharp.Core/printf.fs0000775000175000017500000007177612260314606020075 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Reflection open Microsoft.FSharp.Text.StructuredPrintfImpl open System.Globalization open System.IO open System.Text type PrintfFormat<'printer,'state,'residue,'result>(value:string) = member x.Value = value type PrintfFormat<'printer,'state,'residue,'result,'tuple>(value:string) = inherit PrintfFormat<'printer,'state,'residue,'result>(value) type Format<'printer,'state,'residue,'result> = PrintfFormat<'printer,'state,'residue,'result> type Format<'printer,'state,'residue,'result,'tuple> = PrintfFormat<'printer,'state,'residue,'result,'tuple> module PrintfImpl = open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Reflection open System.Reflection type buf = System.Text.StringBuilder let stringOfChar (c:char) = System.Char.ToString(c) let stringOfInt (i:int) = i.ToString() [] type PrintfInfo = { mutable leftJustify : bool; mutable numPrefixIfPos : char option; mutable addZeros : bool; } let outputSignAndLeftSpace(outputChar,info,pos,width,numDigits) = let used = if pos then match info.numPrefixIfPos with | None -> 0 | Some _ -> 1 else 1 let len = numDigits + used if not info.leftJustify && not info.addZeros then match width with | None -> () | Some w -> for i = 1 to (w - len) do outputChar ' '; begin if pos then match info.numPrefixIfPos with | None -> () | Some c -> outputChar c else outputChar '-'; end; if not info.leftJustify && info.addZeros then match width with | None -> () | Some w -> for i = 1 to (w - len) do outputChar (if info.addZeros then '0' else ' '); used let decode (c:char) = System.Convert.ToInt32(c) let encode (x:int) = System.Convert.ToChar(x) let outputDigit(outputChar,intFormatChar,digit) = let digitc = if digit < 10 then decode '0' + digit else decode (if intFormatChar = 'x' then 'a' else 'A') + (digit - 10) outputChar (encode digitc) let outputSpace(outputChar,width,len) = match width with | None -> () | Some width -> for i = 1 to (width - len) do outputChar ' '; let outputZeros(outputChar,width,len) = match width with | None -> () | Some width -> for i = 1 to (width - len) do outputChar '0' let outputRightSpace(outputChar,leftJustify,width,len) = if leftJustify then outputSpace(outputChar,width,len) let outputUInt64(outputChar,intFormatChar,width,info,(n:uint64)) = let nbase = match intFormatChar with 'o' -> 8uL | 'x' | 'X' -> 16uL | _ -> 10uL let numDigits = let mutable numDigits = 1 let mutable nval = n / nbase while nval > 0UL do numDigits <- numDigits + 1; nval <- nval / nbase; numDigits let topdiv = let mutable topdiv = 1UL for i = 1 to numDigits - 1 do topdiv <- topdiv * nbase; topdiv let len = numDigits + (outputSignAndLeftSpace(outputChar,info,true,width,numDigits)) let mutable residue = n let mutable divisor = topdiv while divisor > 0UL do let digit = residue / divisor outputDigit(outputChar,intFormatChar, int32(int64 digit)); residue <- residue % divisor; divisor <- divisor / nbase; outputRightSpace(outputChar,info.leftJustify,width,len) let outputInt64(outputChar,intFormatChar,width,info,(n:int64)) = let nbase = match intFormatChar with 'o' -> 8L | 'x' | 'X' -> 16L | _ -> 10L let numDigits = let mutable numDigits = 1 let mutable nval = if n >= 0L then n / nbase else - (n / nbase) while nval > 0L do numDigits <- numDigits + 1; nval <- nval / nbase; numDigits let topdiv = let mutable topdiv = 1L for i = 1 to numDigits - 1 do topdiv <- topdiv * nbase; topdiv let len = numDigits + (outputSignAndLeftSpace(outputChar,info,(n >= 0L),width,numDigits) ) let mutable residue = if n = System.Int64.MinValue then System.Int64.MaxValue elif n < 0L then - n else n let mutable divisor = topdiv while divisor > 0L do let digit = if n = System.Int64.MinValue && divisor = 1L then (match intFormatChar with 'd' | 'i' -> 8L | _ -> 100L) // nb. special case for min_int else residue / divisor outputDigit(outputChar,intFormatChar,int32 digit); residue <- residue % divisor; divisor <- divisor / nbase; outputRightSpace(outputChar,info.leftJustify,width,len) // The general technique used this file is to interpret // a format string and use reflection to construct a function value that matches // the specification of the format string. // // Generics add some serious complications here - we have to generate // a function value of exactly the right runtime type, though the most // natural scheme is to produce one of type 'obj -> obj'. We get around // this by using a semi-reflective approach to creating and invoking // function values of the right type. This comes with some // overheads (though they are not too bad) and thus could and should be // optimized in some special cases, e.g. where a format string // just contains a single simple format specifier such as '%x' #if FX_ATLEAST_PORTABLE let staticInvokeFlags = BindingFlags.Public ||| BindingFlags.Static #else let staticInvokeFlags = BindingFlags.Public ||| BindingFlags.InvokeMethod ||| BindingFlags.Static #endif let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) = FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl) let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition() let mkFunTy a b = funTyC.MakeGenericType([| a;b |]) let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer) let isFunctionType (ty1:System.Type) = isNamedType(ty1) && ty1.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC) let rec destFunTy (ty:System.Type) = if isFunctionType ty then ty, ty.GetGenericArguments() else match ty.BaseType with | null -> raise <| System.InvalidOperationException(SR.GetString(SR.printfNotAFunType)) | b -> destFunTy b #if FX_ATLEAST_PORTABLE let instanceInvokeFlags = BindingFlags.Public ||| BindingFlags.Instance #else let instanceInvokeFlags = BindingFlags.Public ||| BindingFlags.InvokeMethod ||| BindingFlags.Instance #endif let invokeFunctionValue (f:obj) (x:obj) = let fTy,_ = destFunTy (f.GetType()) #if FX_ATLEAST_PORTABLE let meth = fTy.GetMethod("Invoke",instanceInvokeFlags) meth.Invoke(f,[| x |]) #else #if FX_NO_CULTURE_INFO_ARGS fTy.InvokeMember("Invoke",instanceInvokeFlags,(null:Binder),f,[| x |]) #else fTy.InvokeMember("Invoke",instanceInvokeFlags,(null:Binder),f,[| x |],CultureInfo.InvariantCulture(*FxCop:1304*)) #endif #endif let buildFunctionForOneArgPat (ty: System.Type) impl = let _,tys = destFunTy ty let rty = tys.[1] // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"') mkFunctionValue tys (fun inp -> impl rty inp) let buildFunctionForTwoArgPat args ty i go = let _,tys1 = destFunTy ty let rty1 = tys1.[1] let _,tys2 = destFunTy rty1 let rty2 = tys2.[1] mkFunctionValue tys1 (fun inpf -> mkFunctionValue tys2 (fun inpx -> go (inpx::inpf::args) rty2 (i+1))) let buildFunctionForOneFunArgPat args ty i go = let _,tys1 = destFunTy ty let rty1 = tys1.[1] mkFunctionValue tys1 (fun inpf -> go (inpf::args) rty1 (i+1)) let isDigit c = ('0' <= c && c <= '9') let rec parseFlags info (fmt:string) i = if i >= fmt.Length then raise <| System.ArgumentException (SR.GetString(SR.printfMissingFormatSpecifier)); match fmt.[i] with | '-' -> info.leftJustify <- true; parseFlags info fmt (i+1) | '+' -> info.numPrefixIfPos <- Some '+'; parseFlags info fmt (i+1) | '0' -> info.addZeros <- true; parseFlags info fmt (i+1) | ' ' -> info.numPrefixIfPos <- Some ' '; parseFlags info fmt (i+1) | '#' -> raise <| System.ArgumentException (SR.GetString(SR.printfHashFormatSpecifierIllegal)); | _ -> i let rec parseDigitsPrecision (fmt:string) len i = if i >= len then raise <| System.ArgumentException (SR.GetString(SR.printfPrecisonSpecifierIllegal)); match fmt.[i] with | c when isDigit c -> parseDigitsPrecision fmt len (i+1) | _ -> i let parsePrecision (fmt:string) len i = if i >= len then raise <| System.ArgumentException (SR.GetString(SR.printfPrecisonSpecifierIllegal)); match fmt.[i] with | c when isDigit c -> false,parseDigitsPrecision fmt len (i+1) | '*' -> true,(i+1) | _ -> false,i let rec parseSliceDotAndPrecision (fmt:string) len i = match fmt.[i] with | '.' -> let w1 = i let precisionArg,i = parsePrecision fmt len (i+1) w1,Some (precisionArg,i),i | _ -> i,None,i let rec parseSliceWidthAndPrecision (fmt:string) len i = if i >= len then raise <| System.ArgumentException (SR.GetString(SR.printfWidthSpecifierIllegal)); match fmt.[i] with | c when isDigit c -> parseSliceWidthAndPrecision fmt len (i+1) | '*' -> true,parseSliceDotAndPrecision fmt len (i+1) | _ -> false,parseSliceDotAndPrecision fmt len i let invariantCulture = System.Globalization.CultureInfo.InvariantCulture let parseWidthAndPrecision fmt len i = let w0 = i let widthArg,(w1,w2,i) = parseSliceWidthAndPrecision fmt len i let width = if (w0 = w1) then None elif widthArg then Some(None) else Some (Some(System.Int32.Parse (fmt.[w0..w1-1],invariantCulture)) ) let precision = match w2 with | None -> None | Some (precisionArg,w2') -> if precisionArg then Some(None) else Some (Some(System.Int32.Parse (fmt.[w1+1..w2'-1],invariantCulture)) ) width,precision,i let newInfo ()= { leftJustify = false; numPrefixIfPos = None; addZeros = false; } let defaultInfo = newInfo() let formatString outputChar info width (s:string) isNum = match s with | null -> outputSpace(outputChar,width,0) | _ -> if not info.leftJustify then if isNum && info.addZeros then outputZeros(outputChar,width,s.Length) else outputSpace(outputChar,width,s.Length); s |> String.iter outputChar; if info.leftJustify then if isNum && info.addZeros then outputZeros(outputChar,width,s.Length) else outputSpace(outputChar,width,s.Length) let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj = let info = newInfo() let len = fmt.Length let i = parseFlags info fmt i let width,precision,i = parseWidthAndPrecision fmt len i let intFormatChar = fmt.[i] let captureCoreArgs args ty = match intFormatChar with | '%' -> go args ty (i+1) | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'l' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | 'n' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | 'L' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | 'U' -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'l' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | 'n' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | 'L' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+2)) | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "U")) | 'f' | 'F' | 'e' | 'E' | 'g' | 'G' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'M' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'c' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'b' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | 'O' -> buildFunctionForOneArgPat ty (fun rty xobj -> go (xobj::args) rty (i+1)) | 'A' -> buildFunctionForOneArgPat ty (fun rty xobj -> go (xobj::args) rty (i+1)) | 'a' -> buildFunctionForTwoArgPat args ty i go | 't' -> buildFunctionForOneFunArgPat args ty i go | _ -> raise <| System.ArgumentException(SR.GetString1(SR.printfBadFormatSpecifier,intFormatChar.ToString())) let capturePrecisionArg args ty = match precision with | None | Some(Some _) -> captureCoreArgs args ty | Some(None) -> buildFunctionForOneArgPat ty (fun rty n -> captureCoreArgs (n :: args) rty) let captureWidthArg args ty = match width with | None | Some(Some _) -> capturePrecisionArg args ty | Some(None) -> buildFunctionForOneArgPat ty (fun rty n -> capturePrecisionArg (n :: args) rty) captureWidthArg args ty let unboxAsInt64 (n:obj) = match n with | :? sbyte as x -> x |> int64 | :? int16 as x -> x |> int64 | :? int32 as x -> x |> int64 | :? nativeint as x -> x |> int64 | :? int64 as x -> x | :? byte as x -> x |> uint64 |> int64 | :? uint16 as x -> x |> uint64 |> int64 | :? uint32 as x -> x |> uint64 |> int64 | :? uint64 as x -> x |> int64 | :? unativeint as x -> x |> uint64 |> int64 | _ -> raise <| System.ArgumentException (SR.GetString(SR.printfBadIntegerForDynamicFomatter)) let unboxAsUInt64 (n:obj) = let unsigned = match n with | :? sbyte as x -> x |> byte |> box | :? int16 as x -> x |> uint16 |> box | :? int32 as x -> x |> uint32 |> box | :? int64 as x -> x |> uint64 |> box | :? nativeint as x -> x |> unativeint |> box | _ -> n unboxAsInt64 unsigned |> uint64 let formatOne (outa: 'c -> unit) (outputChar: char -> unit) (os : 'b) (fmt:string) i args : (int * obj list) = let info = newInfo() let len = fmt.Length let i = parseFlags info fmt i let width,precision,i = parseWidthAndPrecision fmt len i let intFormatChar = fmt.[i] let width,args = match width,args with | None,args -> None,args | Some(Some w),args -> Some w,args | Some(None),n::args -> Some (unbox n), args | _ -> raise <| System.ArgumentException (SR.GetString(SR.printfExpectedWidth)) let precision,args = match precision,args with | None,args -> None,args | Some(Some w),args -> Some w,args | Some(None),n::args -> Some (unbox n), args | _ -> raise <| System.ArgumentException (SR.GetString(SR.printfExpectedPrecision)) match intFormatChar,args with | '%',args -> outputChar intFormatChar; i+1, args | ('d' | 'i'),n::args -> match n with | (:? byte | :? uint16 | :? uint32 | :? uint64 | :? unativeint) -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); | _ -> outputInt64(outputChar,intFormatChar,width,info,(unboxAsInt64 n)); i+1,args | ('o' | 'u' | 'x' | 'X'),n::args -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | ('l' | 'L'),n::args -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' -> outputInt64(outputChar,intFormatChar,width,info,(unboxAsInt64 n)); i+1,args | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "n")) | 'n',n::args -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' -> outputInt64(outputChar,intFormatChar,width,info,(unboxAsInt64 n)); i+1,args | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "l")) | 'U',n::args -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | 'l' -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "Ul")) | 'n' -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "Un")) | 'L' -> let i = i+1 let intFormatChar = fmt.[i] match intFormatChar with | 'd' | 'i' | 'o' | 'u' | 'x' | 'X' -> outputUInt64(outputChar,intFormatChar,width,info,(unboxAsUInt64 n)); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "UL")) | _ -> raise <| System.ArgumentException (SR.GetString1(SR.printfSpecifierAfterIllegal, "U")) | ('f' | 'F' | 'e' | 'E' | 'g' | 'G'),n::args -> let s, number, positive = match n with | :? float as f -> f.ToString(stringOfChar intFormatChar + (match precision with None -> "6" | Some n -> stringOfInt (max (min n 99) 0)),invariantCulture), not (f = infinity || f = -infinity || System.Double.IsNaN f), f >= 0. | :? float32 as f -> f.ToString(stringOfChar intFormatChar + (match precision with None -> "6" | Some n -> stringOfInt (max (min n 99) 0)),invariantCulture), not (f = infinityf || f = -infinityf || System.Single.IsNaN f), f >= 0.f | :? decimal as f -> f.ToString(stringOfChar intFormatChar + (match precision with None -> "6" | Some n -> stringOfInt (max (min n 99) 0)),invariantCulture), true, f >= 0M | _ -> raise <| System.ArgumentException (SR.GetString(SR.printfBadFloatValue)) let s = match info.numPrefixIfPos with Some c when positive -> stringOfChar c + s | _ -> s formatString outputChar info width s number; i+1,args | 'M',n::args -> let d = (unbox n : System.Decimal) let s = d.ToString("G",invariantCulture) let s = match info.numPrefixIfPos with Some c when d >= 0M -> stringOfChar c + s | _ -> s formatString outputChar info width s true; i+1,args | 's',nobj::args -> formatString outputChar info width (unbox nobj) false; i+1,args | 'c',nobj::args -> formatString outputChar info width (stringOfChar (unbox nobj)) false; i+1,args | 'b',nobj::args -> formatString outputChar info width (if (unbox nobj) then "true" else "false") false; i+1,args | 'O',xobj::args -> formatString outputChar info width (match xobj with null -> "" | _ -> xobj.ToString()) false; i+1,args | 'A',xobj::args -> let bindingFlags = match info.numPrefixIfPos with | None -> BindingFlags.Public // Default see Public only | Some '+' -> BindingFlags.Public ||| BindingFlags.NonPublic // %+A, sees anything possible | Some c -> failwith ("internal: %A has an unexpected numeric prefix '" + string c + "'") let opts = FormatOptions.Default let opts = match width with None -> opts | Some w -> { opts with PrintWidth = w } // printfn %0A is considered to mean 'print width zero' let opts = if info.addZeros then { opts with PrintWidth = 0 } else opts let opts = match precision with None -> opts | Some w -> { opts with PrintSize = w } let txt = match xobj with | null -> "" | _ -> Display.anyToStringForPrintf opts bindingFlags xobj txt |> String.iter outputChar; i+1,args | 'a',fobj::xobj::args -> outa (unbox (invokeFunctionValue (invokeFunctionValue fobj (box os)) xobj)); i+1,args | 't',f::args -> outa ((unbox f) os); i+1,args | _ -> raise <| System.ArgumentException (SR.GetString(SR.printfBadFormatSpecifier)) let gprintf (initialize : unit -> 'b * ('c -> unit) * (char -> unit) * (unit -> 'd)) (fmt : PrintfFormat<'a,'b,'c,'d>) : 'a = let fmt = fmt.Value match fmt with // optimize some common cases | "%s" -> unbox (box (fun (s:string) -> let _,_,outputChar,finalize = initialize() in formatString outputChar defaultInfo None s false; finalize())) // | "%x" -> unbox (box (fun (n:int) -> let os,outa,outputChar,finalize = initialize() in outputUInt64 outputChar 'x' None defaultInfo (int32_to_uint64 n); finalize())) // | "%d" -> unbox (box (fun (n:int) -> let os,outa,outputChar,finalize = initialize() in outputInt64 outputChar 'd' None defaultInfo (int32_to_int64 n); finalize())) | _ -> let len = fmt.Length /// After all arguments are captures we reinterpret and execute the actions let run args = let os,outa,outputChar,finalize = initialize() let rec go args i = if i >= len || (fmt.[i] = '%' && i+1 >= len) then (box (finalize())) elif System.Char.IsSurrogatePair(fmt,i) then outputChar fmt.[i]; outputChar fmt.[i+1]; go args (i+2) else match fmt.[i] with | '%' -> let i,args = formatOne outa outputChar os fmt (i+1) args go args i | c -> outputChar c; go args (i+1) go args 0 /// Function to capture the arguments and then run. let rec capture args ty i = if i >= len || (fmt.[i] = '%' && i+1 >= len) then run (List.rev args) elif System.Char.IsSurrogatePair(fmt,i) then capture args ty (i+2) else match fmt.[i] with | '%' -> let i = i+1 capture1 fmt i args ty capture | _ -> capture args ty (i+1) (unbox (capture [] (typeof<'a>) 0) : 'a) [] module Printf = open System.Text open System.Diagnostics open PrintfImpl type BuilderFormat<'T,'Result> = Format<'T, StringBuilder, unit, 'Result> type StringFormat<'T,'Result> = Format<'T, unit, string, 'Result> type TextWriterFormat<'T,'Result> = Format<'T, TextWriter, unit, 'Result> type BuilderFormat<'T> = BuilderFormat<'T,unit> type StringFormat<'T> = StringFormat<'T,string> type TextWriterFormat<'T> = TextWriterFormat<'T,unit> #if EXTRAS_FOR_SILVERLIGHT_COMPILER let outWriter = ref System.Console.Out let errorWriter = ref System.Console.Error let setWriter (out : System.IO.TextWriter) = outWriter := out let setError (error : System.IO.TextWriter) = errorWriter := error #endif [] let ksprintf (f : string -> 'd) (fp : StringFormat<'a,'d>) = let init () = let buf = new StringBuilder() let outputChar (c:char) = ignore (buf.Append(c)) let outa (s:string) = ignore (buf.Append(s)) let finish () = f (buf.ToString()) (),outa,outputChar,finish PrintfImpl.gprintf init fp [] let kprintf f fmt = ksprintf f fmt let kprintf_imperative f handle outputChar fmt = let init () = let outa () = () handle,outa,outputChar,f PrintfImpl.gprintf init fmt [] let kbprintf f (buf: StringBuilder) fmt = kprintf_imperative f buf (fun c -> ignore (buf.Append(c))) fmt [] let kfprintf f os fmt = kprintf_imperative f (os :> TextWriter) (fun c -> ignore (os.Write(c))) fmt [] let sprintf fmt = ksprintf (fun x -> x) fmt [] let failwithf fmt = ksprintf failwith fmt [] let bprintf buf fmt = kbprintf (fun _ -> ()) buf fmt [] let fprintf (os: TextWriter) fmt = kfprintf (fun _ -> ()) os fmt [] let fprintfn (os: TextWriter) fmt = kfprintf (fun _ -> os.WriteLine()) os fmt #if FX_NO_SYSTEM_CONSOLE #else #if EXTRAS_FOR_SILVERLIGHT_COMPILER [] let printf fmt = fprintf (!outWriter) fmt [] let eprintf fmt = fprintf (!errorWriter) fmt [] let printfn fmt = fprintfn (!outWriter) fmt [] let eprintfn fmt = fprintfn (!errorWriter) fmt #else [] let printf fmt = fprintf System.Console.Out fmt [] let eprintf fmt = fprintf System.Console.Error fmt [] let printfn fmt = fprintfn System.Console.Out fmt [] let eprintfn fmt = fprintfn System.Console.Error fmt #endif #endif fsharp-3.0.34/src/fsharp/FSharp.Core/FSharp.Core.fsproj0000664000175000017500000002135112260314606021515 0ustar chrischris $(MSBuildProjectDirectory)\..\.. 10.0.0 2.0 False Debug AnyCPU {DED3BBD7-53F4-428A-8C9F-27968E768605} Library FSharp.Core RUNTIME;$(DefineConstants) EXTRAS_FOR_SILVERLIGHT_COMPILER;$(DefineConstants) $(OtherFlags) --nodebugdata 44;45;55;62;75;1204 0x05000000 true true v2.0 $(OtherFlags) --warnon:1182 --compiling-fslib --optimize --maxerrors:20 --extraoptimizationloops:1 $(OtherFlags) --compiling-fslib-20:"$(SystemRoot)\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll" $(OtherFlags) --compiling-fslib-40 FSCore.resx prim-types-prelude.fsi prim-types-prelude.fs SR.fs prim-types.fsi prim-types.fs local.fsi local.fs array2.fsi array2.fs option.fsi option.fs collections.fsi collections.fs seq.fsi seq.fs string.fsi string.fs list.fsi list.fs array.fsi array.fs array3.fsi array3.fs map.fsi map.fs set.fsi set.fs reflect.fsi reflect.fs event.fsi event.fs sformat.fsi sformat.fs printf.fsi printf.fs quotations.fsi quotations.fs nativeptr.fsi nativeptr.fs control.fsi control.fs Linq.fsi Linq.fs MutableTuple.fs QueryExtensions.fs Query.fsi Query.fs SI.fs n.fsi n.fs z.fsi z.fs fslib-extra-pervasives.fsi fslib-extra-pervasives.fs assemblyinfo.FSharp.Core.dll.fs False $(PrepareForRunDependsOn);CopyToBuiltBin fsharp-3.0.34/src/fsharp/FSharp.Core/nativeptr.fsi0000775000175000017500000001072112260314606020737 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.NativeInterop open Microsoft.FSharp.Core open Microsoft.FSharp.Collections [] [] /// Contains operations on native pointers. Use of these operators may /// result in the generation of unverifiable code. module NativePtr = [] [] [] /// Returns a typed native pointer for a given machine address. /// The pointer address. /// A typed pointer. val inline ofNativeInt : address:nativeint -> nativeptr<'T> [] [] [] /// Returns a machine address for a given typed native pointer. /// The input pointer. /// The machine address. val inline toNativeInt : address:nativeptr<'T> -> nativeint [] [] [] /// Returns a typed native pointer by adding index * sizeof<'T> to the /// given input pointer. /// The input pointer. /// The index by which to offset the pointer. /// A typed pointer. val inline add : address:nativeptr<'T> -> index:int -> nativeptr<'T> [] [] [] /// Dereferences the typed native pointer computed by adding index * sizeof<'T> to the /// given input pointer. /// The input pointer. /// The index by which to offset the pointer. /// The value at the pointer address. val inline get : address:nativeptr<'T> -> index:int -> 'T [] [] [] /// Dereferences the given typed native pointer. /// The input pointer. /// The value at the pointer address. val inline read : address:nativeptr<'T> -> 'T [] [] [] /// Assigns the value into the memory location referenced by the given typed native pointer. /// The input pointer. /// The value to assign. val inline write : address:nativeptr<'T> -> value:'T -> unit [] [] [] /// Assigns the value into the memory location referenced by the typed native /// pointer computed by adding index * sizeof<'T> to the given input pointer. /// The input pointer. /// The index by which to offset the pointer. /// The value to assign. val inline set : address:nativeptr<'T> -> index:int -> value:'T -> unit /// Allocates a region of memory on the stack. /// The number of objects of type T to allocate. /// A typed pointer to the allocated memory. [] [] [] val inline stackalloc : count:int -> nativeptr<'T> fsharp-3.0.34/src/fsharp/FSharp.Core/QueryExtensions.fs0000775000175000017500000003510712260314606021744 0ustar chrischris// ---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation 2005-2011. // This sample code is provided "as is" without warranty of any kind. // We disclaim all warranties, either express or implied, including the // warranties of merchantability and fitness for a particular purpose. // ---------------------------------------------------------------------------- namespace Microsoft.FSharp.Linq.RuntimeHelpers #if QUERIES_IN_FSLIB open System open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Collections open Microsoft.FSharp.Quotations open Microsoft.FSharp.Quotations.DerivedPatterns open Microsoft.FSharp.Reflection open Microsoft.FSharp.Linq.RuntimeHelpers open System.Collections.Generic open System.Linq open System.Linq.Expressions // ---------------------------------------------------------------------------- /// A type used to reconstruct a grouping after applying a mutable->immutable mapping transformation /// on a result of a query. type Grouping<'K, 'T>(key:'K, values:seq<'T>) = interface System.Linq.IGrouping<'K, 'T> with member x.Key = key interface System.Collections.IEnumerable with member x.GetEnumerator() = values.GetEnumerator() :> System.Collections.IEnumerator interface System.Collections.Generic.IEnumerable<'T> with member x.GetEnumerator() = values.GetEnumerator() module internal Adapters = let memoize f = #if FX_NO_CONCURRENT_DICTIONARY // No concurrent dictionary or TPL on "old-style" portable let d = new System.Collections.Generic.Dictionary(HashIdentity.Structural) fun x -> let mutable res = Unchecked.defaultof<_> System.Threading.Monitor.Enter(d) try if d.TryGetValue(x ,&res) then res else let res = f x d.[x] <- res res finally System.Threading.Monitor.Exit(d) #else let d = new System.Collections.Concurrent.ConcurrentDictionary(HashIdentity.Structural) fun x -> let mutable res = Unchecked.defaultof<_> if d.TryGetValue(x ,&res) then res else let res = f x in d.[x] <- res; res #endif let isPartiallyImmutableRecord : Type -> bool = memoize (fun t -> FSharpType.IsRecord t && not (FSharpType.GetRecordFields t |> Array.forall (fun f -> f.CanWrite)) ) let MemberInitializationHelperMeth = methodhandleof (fun x -> LeafExpressionConverter.MemberInitializationHelper x) |> System.Reflection.MethodInfo.GetMethodFromHandle :?> System.Reflection.MethodInfo let NewAnonymousObjectHelperMeth = methodhandleof (fun x -> LeafExpressionConverter.NewAnonymousObjectHelper x) |> System.Reflection.MethodInfo.GetMethodFromHandle :?> System.Reflection.MethodInfo // The following patterns are used to recognize object construction // using the 'new O(Prop1 = , Prop2 = )' syntax /// Recognize sequential series written as (... ((; ); ); ...) let (|LeftSequentialSeries|) e = let rec leftSequentialSeries acc e = match e with | Patterns.Sequential(e1, e2) -> leftSequentialSeries (e2::acc) e1 | _ -> e::acc leftSequentialSeries [] e /// Tests whether a list consists only of assignments of properties of the /// given variable, null values (ignored) and ends by returning the given variable /// (pattern returns only property assignments) let (|PropSetList|_|) varArg (list:Expr list) = let rec propSetList acc x = match x with // detect " v.X <- y" | ((Patterns.PropertySet(Some(Patterns.Var var), _, _, _)) as p) :: xs when var = varArg -> propSetList (p::acc) xs // skip unit values | (Patterns.Value (v, _))::xs when v = null -> propSetList acc xs // detect "v" | [Patterns.Var var] when var = varArg -> Some acc | _ -> None propSetList [] list /// Recognize object construction written using 'new O(Prop1 = , Prop2 = , ...)' let (|ObjectConstruction|_|) e = match e with | Patterns.Let ( var, (Patterns.NewObject(_, []) as init), LeftSequentialSeries propSets ) -> match propSets with | PropSetList var propSets -> Some(var, init, propSets) | _ -> None | _ -> None // Get arrays of types & map of transformations let tupleTypes = [| typedefof>, typedefof> typedefof<_ * _>, typedefof> typedefof<_ * _ * _>, typedefof> typedefof<_ * _ * _ * _>, typedefof> typedefof<_ * _ * _ * _ * _>, typedefof> typedefof<_ * _ * _ * _ * _ * _>, typedefof> typedefof<_ * _ * _ * _ * _ * _ * _>, typedefof> typedefof<_ * _ * _ * _ * _ * _ * _ * _>, typedefof> |] let anonObjectTypes = tupleTypes |> Array.map snd let tupleToAnonTypeMap = let t = new Dictionary() for (k,v) in tupleTypes do t.[k] <- v t let anonToTupleTypeMap = let t = new Dictionary() for (k,v) in tupleTypes do t.[v] <- k t /// Recognize anonymous type construction written using 'new AnonymousObject(, , ...)' let (|NewAnonymousObject|_|) e = match e with | Patterns.NewObject(ctor,args) when let dty = ctor.DeclaringType dty.IsGenericType && anonToTupleTypeMap.ContainsKey (dty.GetGenericTypeDefinition()) -> Some (ctor, args) | _ -> None let OneNewAnonymousObject (args:Expr list) = // Will fit into a single tuple type let typ = anonObjectTypes.[args.Length - 1] let typ = typ.MakeGenericType [| for a in args -> a.Type |] let ctor = typ.GetConstructors().[0] let res = Expr.NewObject(ctor, args) assert (match res with NewAnonymousObject _ -> true | _ -> false) res let rec NewAnonymousObject (args:Expr list) : Expr = match args with | x1::x2::x3::x4::x5::x6::x7::x8::tail -> // Too long to fit single tuple - nested tuple after first 7 OneNewAnonymousObject [ x1; x2; x3; x4; x5; x6; x7; NewAnonymousObject (x8::tail) ] | args -> OneNewAnonymousObject args let AnonymousObjectGet (e:Expr,i:int) = // Recursively generate tuple get // (may be nested e.g. TupleGet(, 9) ~> .Item8.Item3) let rec walk i (inst:Expr) (newType:Type) = // Get property (at most the last one) let propInfo = newType.GetProperty ("Item" + string (1 + min i 7)) let res = Expr.PropertyGet(inst, propInfo) // Do we need to add another property get for the last property? if i < 7 then res else walk (i - 7) res (newType.GetGenericArguments().[7]) walk i e e.Type let RewriteTupleType (ty:Type) conv = // Tuples are generic, so lookup only for generic types assert ty.IsGenericType let generic = ty.GetGenericTypeDefinition() match tupleToAnonTypeMap.TryGetValue generic with | true, mutableTupleType -> // Recursively transform type arguments mutableTupleType.MakeGenericType (ty.GetGenericArguments() |> Array.toList |> conv |> Array.ofList) | _ -> assert false Printf.failwithf "unreachable, ty = %A" ty let (|RecordFieldGetSimplification|_|) (expr:Expr) = match expr with | Patterns.PropertyGet(Some (Patterns.NewRecord(typ,els)),propInfo,[]) -> let fields = Microsoft.FSharp.Reflection.FSharpType.GetRecordFields(typ,System.Reflection.BindingFlags.Public|||System.Reflection.BindingFlags.NonPublic) match fields |> Array.tryFindIndex (fun p -> p = propInfo) with | None -> None | Some i -> if i < els.Length then Some els.[i] else None | _ -> None /// The generic MethodInfo for Select function /// Describes how we got from productions of immutable objects to productions of anonymous objects, with enough information /// that we can invert the process in final query results. [] type ConversionDescription = | TupleConv of ConversionDescription list | RecordConv of Type * ConversionDescription list | GroupingConv of (* origKeyType: *) Type * (* origElemType: *) Type * ConversionDescription | SeqConv of ConversionDescription | NoConv /// Given an type involving immutable tuples and records, logically corresponding to the type produced at a /// "yield" or "select", convert it to a type involving anonymous objects according to the conversion data. let rec ConvImmutableTypeToMutableType conv ty = match conv with | TupleConv convs -> assert (FSharpType.IsTuple ty) match convs with | x1::x2::x3::x4::x5::x6::x7::x8::tail -> RewriteTupleType ty (List.map2 ConvImmutableTypeToMutableType [x1;x2;x3;x4;x5;x6;x7;TupleConv (x8::tail)]) | _ -> RewriteTupleType ty (List.map2 ConvImmutableTypeToMutableType convs) | RecordConv (_,convs) -> assert (isPartiallyImmutableRecord ty) let types = [| for f in FSharpType.GetRecordFields ty -> f.PropertyType |] ConvImmutableTypeToMutableType (TupleConv convs) (FSharpType.MakeTupleType types) | GroupingConv (_keyTy,_elemTy,conv) -> assert ty.IsGenericType assert (ty.GetGenericTypeDefinition() = typedefof>) let keyt1 = ty.GetGenericArguments().[0] let valt1 = ty.GetGenericArguments().[1] typedefof>.MakeGenericType [| keyt1; ConvImmutableTypeToMutableType conv valt1 |] | SeqConv conv -> assert ty.IsGenericType let isIQ = ty.GetGenericTypeDefinition() = typedefof> assert (ty.GetGenericTypeDefinition() = typedefof> || ty.GetGenericTypeDefinition() = typedefof>) let elemt1 = ty.GetGenericArguments().[0] let args = [| ConvImmutableTypeToMutableType conv elemt1 |] if isIQ then typedefof>.MakeGenericType args else typedefof>.MakeGenericType args | NoConv -> ty let IsNewAnonymousObjectHelperQ = let mhandle = (methodhandleof (fun x -> LeafExpressionConverter.NewAnonymousObjectHelper x)) let minfo = (System.Reflection.MethodInfo.GetMethodFromHandle mhandle) :?> System.Reflection.MethodInfo let gmd = minfo.GetGenericMethodDefinition() (fun tm -> match tm with | Patterns.Call(_obj,minfo2,_args) -> minfo2.IsGenericMethod && (gmd = minfo2.GetGenericMethodDefinition()) | _ -> false) /// Cleanup the use of property-set object constructions in leaf expressions that form parts of F# queries. let rec CleanupLeaf expr = if IsNewAnonymousObjectHelperQ expr then expr else // this has already been cleaned up, don't do it twice // rewrite bottom-up let expr = match expr with | ExprShape.ShapeCombination(comb,args) -> match args with [] -> expr | _ -> ExprShape.RebuildShapeCombination(comb,List.map CleanupLeaf args) | ExprShape.ShapeLambda(v,body) -> Expr.Lambda(v, CleanupLeaf body) | ExprShape.ShapeVar _ -> expr match expr with // Detect all object construction expressions - wrap them in 'MemberInitializationHelper' // so that it can be translated to Expression.MemberInit | ObjectConstruction(var, init, propSets) -> // Wrap object initialization into a value ( let methInfo = MemberInitializationHelperMeth.MakeGenericMethod [| var.Type |] Expr.Call(methInfo, [ List.reduceBack (fun a b -> Expr.Sequential(a,b)) (propSets @ [init]) ]) // Detect all anonymous type constructions - wrap them in 'NewAnonymousObjectHelper' // so that it can be translated to Expression.New with member arguments. | NewAnonymousObject(ctor, args) -> let methInfo = NewAnonymousObjectHelperMeth.MakeGenericMethod [| ctor.DeclaringType |] Expr.Call(methInfo, [ Expr.NewObject(ctor,args) ]) | expr -> expr /// Simplify gets of tuples and gets of record fields. let rec SimplifyConsumingExpr e = // rewrite bottom-up let e = match e with | ExprShape.ShapeCombination(comb,args) -> ExprShape.RebuildShapeCombination(comb,List.map SimplifyConsumingExpr args) | ExprShape.ShapeLambda(v,body) -> Expr.Lambda(v, SimplifyConsumingExpr body) | ExprShape.ShapeVar _ -> e match e with | Patterns.TupleGet(Patterns.NewTuple els,i) -> els.[i] | RecordFieldGetSimplification newExpr -> newExpr | _ -> e /// Given the expression part of a "yield" or "select" which produces a result in terms of immutable tuples or immutable records, /// generate an equivalent expression yielding anonymous objects. Also return the conversion for the immutable-to-mutable correspondence /// so we can reverse this later. let rec ProduceMoreMutables tipf expr = match expr with // Replace immutable tuples by anonymous objects | Patterns.NewTuple exprs -> let argExprsNow, argScripts = exprs |> List.map (ProduceMoreMutables tipf) |> List.unzip NewAnonymousObject argExprsNow, TupleConv argScripts // Replace immutable records by anonymous objects | Patterns.NewRecord(typ, args) when isPartiallyImmutableRecord typ -> let argExprsNow, argScripts = args |> List.map (ProduceMoreMutables tipf) |> List.unzip NewAnonymousObject argExprsNow, RecordConv(typ, argScripts) | expr -> tipf expr let MakeSeqConv conv = match conv with NoConv -> NoConv | _ -> SeqConv conv #endif fsharp-3.0.34/src/fsharp/FSharp.Core/collections.fs0000775000175000017500000000450112260314606021067 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections #nowarn "51" open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics open System open System.Diagnostics open System.Collections open System.Collections.Generic module HashIdentity = let inline Structural<'T when 'T : equality> : IEqualityComparer<'T> = LanguagePrimitives.FastGenericEqualityComparer<'T> let LimitedStructural<'T when 'T : equality>(limit) : IEqualityComparer<'T> = LanguagePrimitives.FastLimitedGenericEqualityComparer<'T>(limit) let Reference<'T when 'T : not struct > : IEqualityComparer<'T> = { new IEqualityComparer<'T> with member self.GetHashCode(x) = LanguagePrimitives.PhysicalHash(x) member self.Equals(x,y) = LanguagePrimitives.PhysicalEquality x y } let inline FromFunctions hash eq : IEqualityComparer<'T> = let eq = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(eq) { new IEqualityComparer<'T> with member self.GetHashCode(x) = hash x member self.Equals(x,y) = eq.Invoke(x,y) } module ComparisonIdentity = let Structural<'T when 'T : comparison > : IComparer<'T> = LanguagePrimitives.FastGenericComparer<'T> let FromFunction comparer = let comparer = OptimizedClosures.FSharpFunc<'T,'T,int>.Adapt(comparer) { new IComparer<'T> with member self.Compare(x,y) = comparer.Invoke(x,y) } fsharp-3.0.34/src/fsharp/FSharp.Core/prim-types-prelude.fs0000775000175000017500000000230012260314606022313 0ustar chrischrisnamespace Microsoft.FSharp.Core //------------------------------------------------------------------------- // Basic type abbreviations type obj = System.Object type exn = System.Exception type nativeint = System.IntPtr type unativeint = System.UIntPtr type string = System.String type float32 = System.Single type float = System.Double type single = System.Single type double = System.Double type sbyte = System.SByte type byte = System.Byte type int8 = System.SByte type uint8 = System.Byte type int16 = System.Int16 type uint16 = System.UInt16 type int32 = System.Int32 type uint32 = System.UInt32 type int64 = System.Int64 type uint64 = System.UInt64 type char = System.Char type bool = System.Boolean type decimal = System.Decimal type int = int32 type ``[]``<'T> = (# "!0[]" #) type ``[,]``<'T> = (# "!0[0 ...,0 ...]" #) type ``[,,]``<'T> = (# "!0[0 ...,0 ...,0 ...]" #) type ``[,,,]``<'T> = (# "!0[0 ...,0 ...,0 ...,0 ...]" #) type array<'T> = 'T[] type byref<'T> = (# "!0&" #) type nativeptr<'T when 'T : unmanaged> = (# "native int" #) type ilsigptr<'T> = (# "!0*" #) fsharp-3.0.34/src/fsharp/FSharp.Core/map.fs0000775000175000017500000007552212260314606017341 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics [] [] type MapTree<'Key,'Value when 'Key : comparison > = | MapEmpty | MapOne of 'Key * 'Value | MapNode of 'Key * 'Value * MapTree<'Key,'Value> * MapTree<'Key,'Value> * int // REVIEW: performance rumour has it that the data held in MapNode and MapOne should be // exactly one cache line. It is currently ~7 and 4 words respectively. [] module MapTree = let rec sizeAux acc m = match m with | MapEmpty -> acc | MapOne _ -> acc + 1 | MapNode(_,_,l,r,_) -> sizeAux (sizeAux (acc+1) l) r let size x = sizeAux 0 x #if TRACE_SETS_AND_MAPS let mutable traceCount = 0 let mutable numOnes = 0 let mutable numNodes = 0 let mutable numAdds = 0 let mutable numRemoves = 0 let mutable numLookups = 0 let mutable numUnions = 0 let mutable totalSizeOnNodeCreation = 0.0 let mutable totalSizeOnMapAdd = 0.0 let mutable totalSizeOnMapLookup = 0.0 let mutable largestMapSize = 0 let mutable largestMapStackTrace = Unchecked.defaultof<_> let report() = traceCount <- traceCount + 1 if traceCount % 1000000 = 0 then System.Console.WriteLine("#MapOne = {0}, #MapNode = {1}, #Add = {2}, #Remove = {3}, #Unions = {4}, #Lookups = {5}, avMapTreeSizeOnNodeCreation = {6}, avMapSizeOnCreation = {7}, avMapSizeOnLookup = {8}",numOnes,numNodes,numAdds,numRemoves,numUnions,numLookups,(totalSizeOnNodeCreation / float (numNodes + numOnes)),(totalSizeOnMapAdd / float numAdds),(totalSizeOnMapLookup / float numLookups)) System.Console.WriteLine("#largestMapSize = {0}, largestMapStackTrace = {1}",largestMapSize, largestMapStackTrace) let MapOne n = report(); numOnes <- numOnes + 1; totalSizeOnNodeCreation <- totalSizeOnNodeCreation + 1.0; MapTree.MapOne n let MapNode (x,l,v,r,h) = report(); numNodes <- numNodes + 1; let n = MapTree.MapNode(x,l,v,r,h) totalSizeOnNodeCreation <- totalSizeOnNodeCreation + float (size n); n #endif let empty = MapEmpty let height = function | MapEmpty -> 0 | MapOne _ -> 1 | MapNode(_,_,_,_,h) -> h let isEmpty m = match m with | MapEmpty -> true | _ -> false let mk l k v r = match l,r with | MapEmpty,MapEmpty -> MapOne(k,v) | _ -> let hl = height l let hr = height r let m = if hl < hr then hr else hl MapNode(k,v,l,r,m+1) let rebalance t1 k v t2 = let t1h = height t1 let t2h = height t2 if t2h > t1h + 2 then (* right is heavier than left *) match t2 with | MapNode(t2k,t2v,t2l,t2r,_) -> (* one of the nodes must have height > height t1 + 1 *) if height t2l > t1h + 1 then (* balance left: combination *) match t2l with | MapNode(t2lk,t2lv,t2ll,t2lr,_) -> mk (mk t1 k v t2ll) t2lk t2lv (mk t2lr t2k t2v t2r) | _ -> failwith "rebalance" else (* rotate left *) mk (mk t1 k v t2l) t2k t2v t2r | _ -> failwith "rebalance" else if t1h > t2h + 2 then (* left is heavier than right *) match t1 with | MapNode(t1k,t1v,t1l,t1r,_) -> (* one of the nodes must have height > height t2 + 1 *) if height t1r > t2h + 1 then (* balance right: combination *) match t1r with | MapNode(t1rk,t1rv,t1rl,t1rr,_) -> mk (mk t1l t1k t1v t1rl) t1rk t1rv (mk t1rr k v t2) | _ -> failwith "rebalance" else mk t1l t1k t1v (mk t1r k v t2) | _ -> failwith "rebalance" else mk t1 k v t2 let rec add (comparer: IComparer<'Value>) k v m = match m with | MapEmpty -> MapOne(k,v) | MapOne(k2,_) -> let c = comparer.Compare(k,k2) if c < 0 then MapNode (k,v,MapEmpty,m,2) elif c = 0 then MapOne(k,v) else MapNode (k,v,m,MapEmpty,2) | MapNode(k2,v2,l,r,h) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (add comparer k v l) k2 v2 r elif c = 0 then MapNode(k,v,l,r,h) else rebalance l k2 v2 (add comparer k v r) let rec find (comparer: IComparer<'Value>) k m = match m with | MapEmpty -> raise (System.Collections.Generic.KeyNotFoundException()) | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c = 0 then v2 else raise (System.Collections.Generic.KeyNotFoundException()) | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then find comparer k l elif c = 0 then v2 else find comparer k r let rec tryFind (comparer: IComparer<'Value>) k m = match m with | MapEmpty -> None | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c = 0 then Some v2 else None | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then tryFind comparer k l elif c = 0 then Some v2 else tryFind comparer k r let partition1 (comparer: IComparer<'Value>) f k v (acc1,acc2) = if f k v then (add comparer k v acc1,acc2) else (acc1,add comparer k v acc2) let rec partitionAux (comparer: IComparer<'Value>) f s acc = match s with | MapEmpty -> acc | MapOne(k,v) -> partition1 comparer f k v acc | MapNode(k,v,l,r,_) -> let acc = partitionAux comparer f r acc let acc = partition1 comparer f k v acc partitionAux comparer f l acc let partition (comparer: IComparer<'Value>) f s = partitionAux comparer f s (empty,empty) let filter1 (comparer: IComparer<'Value>) f k v acc = if f k v then add comparer k v acc else acc let rec filterAux (comparer: IComparer<'Value>) f s acc = match s with | MapEmpty -> acc | MapOne(k,v) -> filter1 comparer f k v acc | MapNode(k,v,l,r,_) -> let acc = filterAux comparer f l acc let acc = filter1 comparer f k v acc filterAux comparer f r acc let filter (comparer: IComparer<'Value>) f s = filterAux comparer f s empty let rec spliceOutSuccessor m = match m with | MapEmpty -> failwith "internal error: Map.spliceOutSuccessor" | MapOne(k2,v2) -> k2,v2,MapEmpty | MapNode(k2,v2,l,r,_) -> match l with | MapEmpty -> k2,v2,r | _ -> let k3,v3,l' = spliceOutSuccessor l in k3,v3,mk l' k2 v2 r let rec remove (comparer: IComparer<'Value>) k m = match m with | MapEmpty -> empty | MapOne(k2,_) -> let c = comparer.Compare(k,k2) if c = 0 then MapEmpty else m | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (remove comparer k l) k2 v2 r elif c = 0 then match l,r with | MapEmpty,_ -> r | _,MapEmpty -> l | _ -> let sk,sv,r' = spliceOutSuccessor r mk l sk sv r' else rebalance l k2 v2 (remove comparer k r) let rec mem (comparer: IComparer<'Value>) k m = match m with | MapEmpty -> false | MapOne(k2,_) -> (comparer.Compare(k,k2) = 0) | MapNode(k2,_,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then mem comparer k l else (c = 0 || mem comparer k r) let rec iter f m = match m with | MapEmpty -> () | MapOne(k2,v2) -> f k2 v2 | MapNode(k2,v2,l,r,_) -> iter f l; f k2 v2; iter f r let rec tryPick f m = match m with | MapEmpty -> None | MapOne(k2,v2) -> f k2 v2 | MapNode(k2,v2,l,r,_) -> match tryPick f l with | Some _ as res -> res | None -> match f k2 v2 with | Some _ as res -> res | None -> tryPick f r let rec exists f m = match m with | MapEmpty -> false | MapOne(k2,v2) -> f k2 v2 | MapNode(k2,v2,l,r,_) -> exists f l || f k2 v2 || exists f r let rec forall f m = match m with | MapEmpty -> true | MapOne(k2,v2) -> f k2 v2 | MapNode(k2,v2,l,r,_) -> forall f l && f k2 v2 && forall f r let rec map f m = match m with | MapEmpty -> empty | MapOne(k,v) -> MapOne(k,f v) | MapNode(k,v,l,r,h) -> let l2 = map f l let v2 = f v let r2 = map f r MapNode(k,v2,l2, r2,h) let rec mapi f m = match m with | MapEmpty -> empty | MapOne(k,v) -> MapOne(k,f k v) | MapNode(k,v,l,r,h) -> let l2 = mapi f l let v2 = f k v let r2 = mapi f r MapNode(k,v2, l2, r2,h) let rec foldBack (f:OptimizedClosures.FSharpFunc<_,_,_,_>) m x = match m with | MapEmpty -> x | MapOne(k,v) -> f.Invoke(k,v,x) | MapNode(k,v,l,r,_) -> let x = foldBack f r x let x = f.Invoke(k,v,x) foldBack f l x let rec fold (f:OptimizedClosures.FSharpFunc<_,_,_,_>) x m = match m with | MapEmpty -> x | MapOne(k,v) -> f.Invoke(x,k,v) | MapNode(k,v,l,r,_) -> let x = fold f x l let x = f.Invoke(x,k,v) fold f x r let foldSection (comparer: IComparer<'Value>) lo hi f m x = let rec foldFromTo f m x = match m with | MapEmpty -> x | MapOne(k,v) -> let cLoKey = comparer.Compare(lo,k) let cKeyHi = comparer.Compare(k,hi) let x = if cLoKey <= 0 && cKeyHi <= 0 then f k v x else x x | MapNode(k,v,l,r,_) -> let cLoKey = comparer.Compare(lo,k) let cKeyHi = comparer.Compare(k,hi) let x = if cLoKey < 0 then foldFromTo f l x else x let x = if cLoKey <= 0 && cKeyHi <= 0 then f k v x else x let x = if cKeyHi < 0 then foldFromTo f r x else x x if comparer.Compare(lo,hi) = 1 then x else foldFromTo f m x let toList m = let rec loop m acc = match m with | MapEmpty -> acc | MapOne(k,v) -> (k,v)::acc | MapNode(k,v,l,r,_) -> loop l ((k,v)::loop r acc) loop m [] let toArray m = m |> toList |> Array.ofList let ofList comparer l = List.fold (fun acc (k,v) -> add comparer k v acc) empty l let rec mkFromEnumerator comparer acc (e : IEnumerator<_>) = if e.MoveNext() then let (x,y) = e.Current mkFromEnumerator comparer (add comparer x y acc) e else acc let ofArray comparer (arr : array<_>) = let mutable res = empty for (x,y) in arr do res <- add comparer x y res res let ofSeq comparer (c : seq<'Key * 'T>) = match c with | :? array<'Key * 'T> as xs -> ofArray comparer xs | :? list<'Key * 'T> as xs -> ofList comparer xs | _ -> use ie = c.GetEnumerator() mkFromEnumerator comparer empty ie let copyToArray s (arr: _[]) i = let j = ref i s |> iter (fun x y -> arr.[!j] <- KeyValuePair(x,y); j := !j + 1) /// Imperative left-to-right iterators. [] type MapIterator<'Key,'Value when 'Key : comparison > = { /// invariant: always collapseLHS result mutable stack: MapTree<'Key,'Value> list; /// true when MoveNext has been called mutable started : bool } // collapseLHS: // a) Always returns either [] or a list starting with MapOne. // b) The "fringe" of the set stack is unchanged. let rec collapseLHS stack = match stack with | [] -> [] | MapEmpty :: rest -> collapseLHS rest | MapOne _ :: _ -> stack | (MapNode(k,v,l,r,_)) :: rest -> collapseLHS (l :: MapOne (k,v) :: r :: rest) let mkIterator s = { stack = collapseLHS [s]; started = false } let notStarted() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationNotStarted))) let alreadyFinished() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationAlreadyFinished))) let current i = if i.started then match i.stack with | MapOne (k,v) :: _ -> new KeyValuePair<_,_>(k,v) | [] -> alreadyFinished() | _ -> failwith "Please report error: Map iterator, unexpected stack for current" else notStarted() let rec moveNext i = if i.started then match i.stack with | MapOne _ :: rest -> i.stack <- collapseLHS rest; not i.stack.IsEmpty | [] -> false | _ -> failwith "Please report error: Map iterator, unexpected stack for moveNext" else i.started <- true; (* The first call to MoveNext "starts" the enumeration. *) not i.stack.IsEmpty let mkIEnumerator s = let i = ref (mkIterator s) { new IEnumerator<_> with member self.Current = current !i interface System.Collections.IEnumerator with member self.Current = box (current !i) member self.MoveNext() = moveNext !i member self.Reset() = i := mkIterator s interface System.IDisposable with member self.Dispose() = ()} #if FX_NO_DEBUG_PROXIES #else [>)>] #endif #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] [] [] type Map<[]'Key,[]'Value when 'Key : comparison >(comparer: IComparer<'Key>, tree: MapTree<'Key,'Value>) = #if FX_NO_BINARY_SERIALIZATION #else [] // This type is logically immutable. This field is only mutated during deserialization. let mutable comparer = comparer [] // This type is logically immutable. This field is only mutated during deserialization. let mutable tree = tree // This type is logically immutable. This field is only mutated during serialization and deserialization. // // WARNING: The compiled name of this field may never be changed because it is part of the logical // WARNING: permanent serialization format for this type. let mutable serializedData = null #endif // We use .NET generics per-instantiation static fields to avoid allocating a new object for each empty // set (it is just a lookup into a .NET table of type-instantiation-indexed static fields). static let empty = let comparer = LanguagePrimitives.FastGenericComparer<'Key> new Map<'Key,'Value>(comparer,MapTree<_,_>.MapEmpty) #if FX_NO_BINARY_SERIALIZATION #else [] member __.OnSerializing(context: System.Runtime.Serialization.StreamingContext) = ignore(context) serializedData <- MapTree.toArray tree |> Array.map (fun (k,v) -> KeyValuePair(k,v)) // Do not set this to null, since concurrent threads may also be serializing the data //[] //member __.OnSerialized(context: System.Runtime.Serialization.StreamingContext) = // serializedData <- null [] member __.OnDeserialized(context: System.Runtime.Serialization.StreamingContext) = ignore(context) comparer <- LanguagePrimitives.FastGenericComparer<'Key> tree <- serializedData |> Array.map (fun (KeyValue(k,v)) -> (k,v)) |> MapTree.ofArray comparer serializedData <- null #endif static member Empty : Map<'Key,'Value> = empty static member Create(ie : IEnumerable<_>) : Map<'Key,'Value> = let comparer = LanguagePrimitives.FastGenericComparer<'Key> new Map<_,_>(comparer,MapTree.ofSeq comparer ie) static member Create() : Map<'Key,'Value> = empty new(ie : seq<_>) = let comparer = LanguagePrimitives.FastGenericComparer<'Key> new Map<_,_>(comparer,MapTree.ofSeq comparer ie) #if FX_NO_DEBUG_DISPLAYS #else [] #endif member internal m.Comparer = comparer //[] member internal m.Tree = tree member m.Add(k,v) : Map<'Key,'Value> = #if TRACE_SETS_AND_MAPS MapTree.report() MapTree.numAdds <- MapTree.numAdds + 1 let size = MapTree.size m.Tree + 1 MapTree.totalSizeOnMapAdd <- MapTree.totalSizeOnMapAdd + float size if size > MapTree.largestMapSize then MapTree.largestMapSize <- size MapTree.largestMapStackTrace <- System.Diagnostics.StackTrace().ToString() #endif new Map<'Key,'Value>(comparer,MapTree.add comparer k v tree) #if FX_NO_DEBUG_DISPLAYS #else [] #endif member m.IsEmpty = MapTree.isEmpty tree member m.Item with get(k : 'Key) = #if TRACE_SETS_AND_MAPS MapTree.report() MapTree.numLookups <- MapTree.numLookups + 1 MapTree.totalSizeOnMapLookup <- MapTree.totalSizeOnMapLookup + float (MapTree.size tree) #endif MapTree.find comparer k tree member m.TryPick(f) = MapTree.tryPick f tree member m.Exists(f) = MapTree.exists f tree member m.Filter(f) : Map<'Key,'Value> = new Map<'Key,'Value>(comparer ,MapTree.filter comparer f tree) member m.ForAll(f) = MapTree.forall f tree member m.Fold f acc = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) MapTree.foldBack f tree acc member m.FoldSection (lo:'Key) (hi:'Key) f (acc:'z) = MapTree.foldSection comparer lo hi f tree acc member m.Iterate f = MapTree.iter f tree member m.MapRange f = new Map<'Key,'b>(comparer,MapTree.map f tree) member m.Map f = new Map<'Key,'b>(comparer,MapTree.mapi f tree) member m.Partition(f) : Map<'Key,'Value> * Map<'Key,'Value> = let r1,r2 = MapTree.partition comparer f tree in new Map<'Key,'Value>(comparer,r1), new Map<'Key,'Value>(comparer,r2) member m.Count = MapTree.size tree member m.ContainsKey(k) = #if TRACE_SETS_AND_MAPS MapTree.report() MapTree.numLookups <- MapTree.numLookups + 1 MapTree.totalSizeOnMapLookup <- MapTree.totalSizeOnMapLookup + float (MapTree.size tree) #endif MapTree.mem comparer k tree member m.Remove(k) : Map<'Key,'Value> = new Map<'Key,'Value>(comparer,MapTree.remove comparer k tree) member m.TryFind(k) = #if TRACE_SETS_AND_MAPS MapTree.report() MapTree.numLookups <- MapTree.numLookups + 1 MapTree.totalSizeOnMapLookup <- MapTree.totalSizeOnMapLookup + float (MapTree.size tree) #endif MapTree.tryFind comparer k tree member m.ToList() = MapTree.toList tree member m.ToArray() = MapTree.toArray tree static member ofList(l) : Map<'Key,'Value> = let comparer = LanguagePrimitives.FastGenericComparer<'Key> new Map<_,_>(comparer,MapTree.ofList comparer l) member this.ComputeHashCode() = let combineHash x y = (x <<< 1) + y + 631 let mutable res = 0 for (KeyValue(x,y)) in this do res <- combineHash res (hash x) res <- combineHash res (Unchecked.hash y) abs res override this.Equals(that) = match that with | :? Map<'Key,'Value> as that -> use e1 = (this :> seq<_>).GetEnumerator() use e2 = (that :> seq<_>).GetEnumerator() let rec loop () = let m1 = e1.MoveNext() let m2 = e2.MoveNext() (m1 = m2) && (not m1 || ((e1.Current.Key = e2.Current.Key) && (Unchecked.equals e1.Current.Value e2.Current.Value) && loop())) loop() | _ -> false override this.GetHashCode() = this.ComputeHashCode() interface IEnumerable> with member m.GetEnumerator() = MapTree.mkIEnumerator tree interface System.Collections.IEnumerable with member m.GetEnumerator() = (MapTree.mkIEnumerator tree :> System.Collections.IEnumerator) interface IDictionary<'Key, 'Value> with member m.Item with get x = m.[x] and set x v = ignore(x,v); raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))) // REVIEW: this implementation could avoid copying the Values to an array member s.Keys = ([| for kvp in s -> kvp.Key |] :> ICollection<'Key>) // REVIEW: this implementation could avoid copying the Values to an array member s.Values = ([| for kvp in s -> kvp.Value |] :> ICollection<'Value>) member s.Add(k,v) = ignore(k,v); raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))) member s.ContainsKey(k) = s.ContainsKey(k) member s.TryGetValue(k,r) = if s.ContainsKey(k) then (r <- s.[k]; true) else false member s.Remove(k : 'Key) = ignore(k); (raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))) : bool) interface ICollection> with member s.Add(x) = ignore(x); raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))); member s.Clear() = raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))); member s.Remove(x) = ignore(x); raise (NotSupportedException(SR.GetString(SR.mapCannotBeMutated))); member s.Contains(x) = s.ContainsKey(x.Key) && Unchecked.equals s.[x.Key] x.Value member s.CopyTo(arr,i) = MapTree.copyToArray tree arr i member s.IsReadOnly = true member s.Count = s.Count interface System.IComparable with member m.CompareTo(obj: obj) = match obj with | :? Map<'Key,'Value> as m2-> Seq.compareWith (fun (kvp1 : KeyValuePair<_,_>) (kvp2 : KeyValuePair<_,_>)-> let c = comparer.Compare(kvp1.Key,kvp2.Key) in if c <> 0 then c else Unchecked.compare kvp1.Value kvp2.Value) m m2 | _ -> invalidArg "obj" (SR.GetString(SR.notComparable)) override x.ToString() = match List.ofSeq (Seq.truncate 4 x) with | [] -> "map []" | [KeyValue h1] -> System.Text.StringBuilder().Append("map [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("]").ToString() | [KeyValue h1;KeyValue h2] -> System.Text.StringBuilder().Append("map [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("]").ToString() | [KeyValue h1;KeyValue h2;KeyValue h3] -> System.Text.StringBuilder().Append("map [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h3).Append("]").ToString() | KeyValue h1 :: KeyValue h2 :: KeyValue h3 :: _ -> System.Text.StringBuilder().Append("map [").Append(LanguagePrimitives.anyToStringShowingNull h1).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h2).Append("; ").Append(LanguagePrimitives.anyToStringShowingNull h3).Append("; ... ]").ToString() #if FX_NO_DEBUG_PROXIES #else and [] MapDebugView<'Key,'Value when 'Key : comparison>(v: Map<'Key,'Value>) = [] member x.Items = v |> Seq.truncate 1000 |> Seq.map (fun kvp -> { key = kvp.Key; value=kvp.Value}) |> Seq.toArray and [] [] MapDebugViewKeyValuePair = { key:obj; value:obj } #endif namespace Microsoft.FSharp.Collections open System open System.Diagnostics open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics [] [] module Map = [] let isEmpty (m:Map<_,_>) = m.IsEmpty [] let add k v (m:Map<_,_>) = m.Add(k,v) [] let find k (m:Map<_,_>) = m.[k] [] let tryFind k (m:Map<_,_>) = m.TryFind(k) [] let remove k (m:Map<_,_>) = m.Remove(k) [] let containsKey k (m:Map<_,_>) = m.ContainsKey(k) [] let iter f (m:Map<_,_>) = m.Iterate(f) [] let tryPick f (m:Map<_,_>) = m.TryPick(f) [] let pick f (m:Map<_,_>) = match tryPick f m with None -> raise (System.Collections.Generic.KeyNotFoundException()) | Some res -> res [] let exists f (m:Map<_,_>) = m.Exists(f) [] let filter f (m:Map<_,_>) = m.Filter(f) [] let partition f (m:Map<_,_>) = m.Partition(f) [] let forall f (m:Map<_,_>) = m.ForAll(f) let mapRange f (m:Map<_,_>) = m.MapRange(f) [] let map f (m:Map<_,_>) = m.Map(f) [] let fold<'Key,'T,'State when 'Key : comparison> f (z:'State) (m:Map<'Key,'T>) = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) MapTree.fold f z m.Tree [] let foldBack<'Key,'T,'State when 'Key : comparison> f (m:Map<'Key,'T>) (z:'State) = let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) MapTree.foldBack f m.Tree z [] let toSeq (m:Map<_,_>) = m |> Seq.map (fun kvp -> kvp.Key, kvp.Value) [] let findKey f (m : Map<_,_>) = m |> toSeq |> Seq.pick (fun (k,v) -> if f k v then Some(k) else None) [] let tryFindKey f (m : Map<_,_>) = m |> toSeq |> Seq.tryPick (fun (k,v) -> if f k v then Some(k) else None) [] let ofList (l: ('Key * 'Value) list) = Map<_,_>.ofList(l) [] let ofSeq l = Map<_,_>.Create(l) [] let ofArray (array: ('Key * 'Value) array) = let comparer = LanguagePrimitives.FastGenericComparer<'Key> new Map<_,_>(comparer,MapTree.ofArray comparer array) [] let toList (m:Map<_,_>) = m.ToList() [] let toArray (m:Map<_,_>) = m.ToArray() [] let empty<'Key,'Value when 'Key : comparison> = Map<'Key,'Value>.Empty fsharp-3.0.34/src/fsharp/FSharp.Core/fslib-extra-pervasives.fsi0000775000175000017500000004573612260314606023346 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Pervasives: Additional bindings available at the top level namespace Microsoft.FSharp.Core [] module ExtraTopLevelOperators = open System open Microsoft.FSharp.Core open Microsoft.FSharp.Control open Microsoft.FSharp.Collections open Microsoft.FSharp.Text open Microsoft.FSharp.Math #if FX_NO_SYSTEM_CONSOLE #else /// Print to stdout using the given format. /// The formatter. /// The formatted result. [] val printf : format:Printf.TextWriterFormat<'T> -> 'T /// Print to stdout using the given format, and add a newline. /// The formatter. /// The formatted result. [] val printfn : format:Printf.TextWriterFormat<'T> -> 'T /// Print to stderr using the given format. /// The formatter. /// The formatted result. [] val eprintf : format:Printf.TextWriterFormat<'T> -> 'T /// Print to stderr using the given format, and add a newline. /// The formatter. /// The formatted result. [] val eprintfn : format:Printf.TextWriterFormat<'T> -> 'T #endif /// Print to a string using the given format. /// The formatter. /// The formatted result. [] val sprintf : format:Printf.StringFormat<'T> -> 'T /// Print to a string buffer and raise an exception with the given /// result. Helper printers must return strings. /// The formatter. /// The formatted result. [] val failwithf: format:Printf.StringFormat<'T,'Result> -> 'T /// Print to a file using the given format. /// The file TextWriter. /// The formatter. /// The formatted result. [] val fprintf : textWriter:System.IO.TextWriter -> format:Printf.TextWriterFormat<'T> -> 'T /// Print to a file using the given format, and add a newline. /// The file TextWriter. /// The formatter. /// The formatted result. [] val fprintfn : textWriter:System.IO.TextWriter -> format:Printf.TextWriterFormat<'T> -> 'T /// Builds a set from a sequence of objects. The objects are indexed using generic comparison. /// The input sequence of elements. /// The created set. [] val set : elements:seq<'T> -> Set<'T> /// Builds an aysnchronous workflow using computation expression syntax. [] val async : Microsoft.FSharp.Control.AsyncBuilder /// Converts the argument to 32-bit float. /// This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Single.Parse() with InvariantCulture settings. Otherwise the operation requires and invokes a ToSingle method on the input type. [] val inline single : value:^T -> single when ^T : (static member op_Explicit : ^T -> single) and default ^T : int /// Converts the argument to 64-bit float. /// This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Double.Parse() with InvariantCulture settings. Otherwise the operation requires and invokes a ToDouble method on the input type. [] val inline double : value:^T -> float when ^T : (static member op_Explicit : ^T -> double) and default ^T : int /// Converts the argument to byte. /// This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using Byte.Parse() on strings and otherwise requires a ToByte method on the input type. [] val inline uint8 : value:^T -> byte when ^T : (static member op_Explicit : ^T -> byte) and default ^T : int /// Converts the argument to signed byte. /// This is a direct conversion for all /// primitive numeric types. For strings, the input is converted using SByte.Parse() with InvariantCulture settings. /// Otherwise the operation requires and invokes a ToSByte method on the input type. [] val inline int8 : value:^T -> sbyte when ^T : (static member op_Explicit : ^T -> sbyte) and default ^T : int /// Builds a read-only lookup table from a sequence of key/value pairs. The key objects are indexed using generic hashing and equality. [] val dict : keyValuePairs:seq<'Key * 'Value> -> System.Collections.Generic.IDictionary<'Key,'Value> when 'Key : equality /// Builds a 2D array from a sequence of sequences of elements. [] val array2D : rows:seq<#seq<'T>> -> 'T[,] #if FX_MINIMAL_REFLECTION // not on Compact Framework #else /// Special prefix operator for splicing typed expressions into quotation holes. [] val (~%) : expression:Microsoft.FSharp.Quotations.Expr<'T> -> 'T /// Special prefix operator for splicing untyped expressions into quotation holes. [] val (~%%) : expression:Microsoft.FSharp.Quotations.Expr -> 'T #endif /// An active pattern to force the execution of values of type Lazy<_>. [] val (|Lazy|) : input:Lazy<'T> -> 'T #if QUERIES_IN_FSLIB /// Builds a query using query syntax and operators. val query : Microsoft.FSharp.Linq.QueryBuilder #if EXTRA_DEBUG val queryexprpretrans : Microsoft.FSharp.Linq.QueryExprPreTransBuilder val queryexprpreelim : Microsoft.FSharp.Linq.QueryExprPreEliminateNestedBuilder val queryexpr : Microsoft.FSharp.Linq.QueryExprBuilder val queryquote : Microsoft.FSharp.Linq.QueryQuoteBuilder val querylinqexpr : Microsoft.FSharp.Linq.QueryLinqExprBuilder #endif #endif #if PUT_TYPE_PROVIDERS_IN_FSCORE namespace Microsoft.FSharp.Core.CompilerServices open System open System.Reflection open System.Linq.Expressions open System.Collections.Generic open Microsoft.FSharp.Core /// Represents the product of two measure expressions when returned as a generic argument of a provided type. type MeasureProduct<'Measure1, 'Measure2> /// Represents the inverse of a measure expressions when returned as a generic argument of a provided type. type MeasureInverse<'Measure> /// Represents the '1' measure expression when returned as a generic argument of a provided type. type MeasureOne /// Place on a class that implements ITypeProvider to extend the compiler [] type TypeProviderAttribute = inherit System.Attribute /// Creates an instance of the attribute /// TypeProviderAttribute new : unit -> TypeProviderAttribute /// Additional type attribute flags related to provided types type TypeProviderTypeAttributes = | SuppressRelocate = 0x80000000 | IsErased = 0x40000000 /// Place attribute on runtime assembly to indicate that there is a corresponding design-time /// assembly that contains a type provider. Runtime and designer assembly may be the same. [] type TypeProviderAssemblyAttribute = inherit System.Attribute /// Creates an instance of the attribute /// TypeProviderAssemblyAttribute new : unit -> TypeProviderAssemblyAttribute /// Creates an instance of the attribute /// TypeProviderAssemblyAttribute /// The name of the design-time assembly for this type provider. new : assemblyName : string -> TypeProviderAssemblyAttribute member AssemblyName : string /// The TypeProviderXmlDocAttribute attribute can be added to types and members. /// The language service will display the CommentText property from the attribute /// in the appropriate place when the user hovers over a type or member. [] type TypeProviderXmlDocAttribute = inherit System.Attribute /// Creates an instance of the attribute /// TypeProviderXmlDocAttribute new : commentText : string -> TypeProviderXmlDocAttribute member CommentText : string [] type TypeProviderDefinitionLocationAttribute = inherit System.Attribute new : unit -> TypeProviderDefinitionLocationAttribute member FilePath : string with get, set member Line : int with get, set member Column : int with get, set [] /// Indicates that a code editor should hide all System.Object methods from the intellisense menus for instances of a provided type type TypeProviderEditorHideMethodsAttribute = inherit System.Attribute /// Creates an instance of the attribute /// TypeProviderEditorHideMethodsAttribute new : unit -> TypeProviderEditorHideMethodsAttribute /// If the class that implements ITypeProvider has a constructor that accepts TypeProviderConfig /// then it will be constructed with an instance of TypeProviderConfig. type TypeProviderConfig = new : systemRuntimeContainsType : (string -> bool) -> TypeProviderConfig /// Get the full path to use to resolve relative paths in any file name arguments given to the type provider instance. member ResolutionFolder : string with get,set /// Get the full path to referenced assembly that caused this type provider instance to be created. member RuntimeAssembly : string with get,set /// Get the referenced assemblies for the type provider instance. member ReferencedAssemblies : string[] with get,set /// Get the full path to use for temporary files for the type provider instance. member TemporaryFolder : string with get,set /// Indicates if the type provider host responds to invalidation events for type provider instances. member IsInvalidationSupported : bool with get,set /// Indicates if the type provider instance is used in an environment which executes provided code such as F# Interactive. member IsHostedExecution : bool with get,set /// version of referenced system runtime assembly member SystemRuntimeAssemblyVersion : System.Version with get,set /// Checks if given type exists in target system runtime library member SystemRuntimeContainsType : string -> bool #if FX_NO_CUSTOMATTRIBUTEDATA type IProvidedCustomAttributeTypedArgument = abstract ArgumentType: System.Type abstract Value: System.Object type IProvidedCustomAttributeNamedArgument = abstract ArgumentType: System.Type abstract MemberInfo: System.Reflection.MemberInfo abstract TypedValue: IProvidedCustomAttributeTypedArgument type IProvidedCustomAttributeData = abstract Constructor: System.Reflection.ConstructorInfo abstract ConstructorArguments: System.Collections.Generic.IList abstract NamedArguments: System.Collections.Generic.IList #endif type IProvidedNamespace = /// Namespace name the provider injects types into. abstract NamespaceName : string /// The sub-namespaces in this namespace. An optional member to prevent generation of namespaces until an outer namespace is explored. abstract GetNestedNamespaces : unit -> IProvidedNamespace[] /// /// The top-level types /// /// abstract GetTypes : unit -> Type[] /// /// Compilers call this method to query a type provider for a type name. /// /// Resolver should return a type called name in namespace NamespaceName or null if the type is unknown. /// /// abstract ResolveTypeName : typeName: string -> Type type ITypeProvider = inherit System.IDisposable /// /// Namespace name the this TypeProvider injects types into. /// abstract GetNamespaces : unit -> IProvidedNamespace[] /// /// Get the static parameters for a provided type. /// /// A type returned by GetTypes or ResolveTypeName /// abstract GetStaticParameters : typeWithoutArguments:Type -> ParameterInfo[] /// /// Apply static arguments to a provided type that accepts static arguments. /// /// The provider must return a type with the given mangled name. /// the provided type definition which has static parameters /// the full path of the type, including encoded representations of static parameters /// the static parameters, indexed by name /// abstract ApplyStaticArguments : typeWithoutArguments:Type * typePathWithArguments:string[] * staticArguments:obj[] -> Type /// /// Called by the compiler to ask for an Expression tree to replace the given MethodBase with. /// /// MethodBase that was given to the compiler by a type returned by a GetType(s) call. /// Expressions that represent the parameters to this call. /// An expression that the compiler will use in place of the given method base. abstract GetInvokerExpression : syntheticMethodBase:MethodBase * parameters:Microsoft.FSharp.Quotations.Expr[] -> Microsoft.FSharp.Quotations.Expr /// /// Triggered when an assumption changes that invalidates the resolutions so far reported by the provider /// [] abstract Invalidate : Microsoft.FSharp.Control.IEvent /// /// Get the physical contents of the given logical provided assembly. /// abstract GetGeneratedAssemblyContents : assembly:System.Reflection.Assembly -> byte[] #if FX_NO_CUSTOMATTRIBUTEDATA /// /// Get the custom attribute data for a provided member or type. /// abstract GetMemberCustomAttributesData : assembly:System.Reflection.MemberInfo -> System.Collections.Generic.IList /// /// Get the custom attribute data for a provided parameter. /// abstract GetParameterCustomAttributesData : assembly:System.Reflection.ParameterInfo -> System.Collections.Generic.IList #endif #endif #if EXTRAS_FOR_SILVERLIGHT_COMPILER namespace Microsoft.FSharp open Microsoft.FSharp.Core [] exception UserInterrupt [] type Silverlight = static member EmitInterruptChecks : bool with get, set static member InterruptThread: id: int -> unit static member ResumeThread: id: int -> unit static member CheckInterrupt: unit -> unit static member WriteLine : unit -> unit static member WriteLine : value2:string -> unit static member WriteLine : value:obj -> unit static member WriteLine : value:int -> unit static member WriteLine : format:string * arg0:obj -> unit static member WriteLine : format:string * arg:obj [] -> unit static member WriteLine : format:string * arg0:obj * arg1:obj -> unit static member WriteLine : format:string * arg0:obj * arg1:obj * arg2:obj -> unit static member WriteLine : format:string * arg0:obj * arg1:obj * arg2:obj * arg3:obj -> unit static member Write : value2:string -> unit static member Write : value:obj -> unit static member Write : value:int -> unit static member Write : format:string * arg0:obj -> unit static member Write : format:string * arg:obj [] -> unit static member Write : format:string * arg0:obj * arg1:obj -> unit static member Write : format:string * arg0:obj * arg1:obj * arg2:obj -> unit static member Write : format:string * arg0:obj * arg1:obj * arg2:obj * arg3:obj -> unit #endif fsharp-3.0.34/src/fsharp/FSharp.Core/prim-types.fs0000775000175000017500000125702512260314606020676 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "25" // Incomplete match expressions #nowarn "35" // This construct is deprecated: the treatment of this operator is now handled directly by the F# compiler and its meaning may not be redefined. #nowarn "44" // This construct is deprecated. This function is for use by compiled F# code and should not be used directly #nowarn "52" // The value has been copied to ensure the original is not mutated by this operation #nowarn "60" // Override implementations in augmentations are now deprecated. Override implementations should be given as part of the initial declaration of a type. #nowarn "61" // The containing type can use 'null' as a representation value for its nullary union case. This member will be compiled as a static member. #nowarn "62" // The syntax 'module ... : sig .. end' is for ML compatibility. Consider using 'module ... = begin .. end'. #nowarn "69" // Interface implementations in augmentations are now deprecated. Interface implementations should be given on the initial declaration of a type. #nowarn "77" // Member constraints with the name 'Exp' are given special status by the F# compiler as certain .NET types are implicitly augmented with this member. This may result in compilation failures if you attempt to invoke the member constraint from your own code. namespace Microsoft.FSharp.Core open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text //------------------------------------------------------------------------- // Unit [] // No op_equality on unit type Unit() = override x.GetHashCode() = 0 override x.Equals(obj:obj) = match obj with null -> true | :? Unit -> true | _ -> false interface System.IComparable with member x.CompareTo(_obj:obj) = 0 and unit = Unit #if FX_NO_STRUCTURAL_EQUALITY namespace System.Collections open System open Microsoft.FSharp.Core //------------------------------------------------------------------------- // Structural equality type IStructuralEquatable = interface abstract Equals: o:System.Object * comp:System.Collections.IEqualityComparer -> bool abstract GetHashCode: comp:System.Collections.IEqualityComparer -> int end //------------------------------------------------------------------------- // Structural comparison and IStructuralComparable = interface abstract CompareTo: o:System.Object * comp:System.Collections.IComparer -> int end #else #endif namespace Microsoft.FSharp.Core open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text //------------------------------------------------------------------------- // enumerations type SourceConstructFlags = | None = 0 | SumType = 1 | RecordType = 2 | ObjectType = 3 | Field = 4 | Exception = 5 | Closure = 6 | Module = 7 | UnionCase = 8 | Value = 9 | KindMask = 31 | NonPublicRepresentation = 32 [] type CompilationRepresentationFlags = | None = 0 | Static = 1 | Instance = 2 | ModuleSuffix = 4 // append 'Module' to the end of a non-unique module | UseNullAsTrueValue = 8 // Note if you change this then change CompilationRepresentationFlags_PermitNull further below | Event = 16 #if FX_NO_ICLONEABLE module ICloneableExtensions = type System.Array with member x.Clone() = let ty = (x.GetType()).GetElementType() let clone = System.Array.CreateInstance(ty,x.Length) x.CopyTo(clone,0) clone open ICloneableExtensions #else #endif [] type SealedAttribute(value:bool) = inherit System.Attribute() member x.Value = value new() = new SealedAttribute(true) [] [] type AbstractClassAttribute() = inherit System.Attribute() [] [] type EqualityConditionalOnAttribute() = inherit System.Attribute() [] [] type ComparisonConditionalOnAttribute() = inherit System.Attribute() [] [] type AllowNullLiteralAttribute() = inherit System.Attribute() [] [] type VolatileFieldAttribute() = inherit System.Attribute() [] [] type DefaultAugmentationAttribute(value:bool) = inherit System.Attribute() member x.Value = value [] [] type CLIEventAttribute() = inherit System.Attribute() [] [] type CLIMutableAttribute() = inherit System.Attribute() [] [] type AutoSerializableAttribute(value:bool) = inherit System.Attribute() member x.Value = value [] [] type DefaultValueAttribute(check:bool) = inherit System.Attribute() member x.Check = check new() = new DefaultValueAttribute(true) [] [] type EntryPointAttribute() = inherit System.Attribute() [] [] type ReferenceEqualityAttribute() = inherit System.Attribute() [] [] type StructuralComparisonAttribute() = inherit System.Attribute() [] [] type StructuralEqualityAttribute() = inherit System.Attribute() [] [] type NoEqualityAttribute() = inherit System.Attribute() [] [] type CustomEqualityAttribute() = inherit System.Attribute() [] [] type CustomComparisonAttribute() = inherit System.Attribute() [] [] type NoComparisonAttribute() = inherit System.Attribute() [] [] type ReflectedDefinitionAttribute() = inherit System.Attribute() [] [] type CompiledNameAttribute(compiledName:string) = inherit System.Attribute() member x.CompiledName = compiledName [] [] type StructAttribute() = inherit System.Attribute() [] [] type MeasureAttribute() = inherit System.Attribute() [] [] type MeasureAnnotatedAbbreviationAttribute() = inherit System.Attribute() [] [] type InterfaceAttribute() = inherit System.Attribute() [] [] type ClassAttribute() = inherit System.Attribute() [] [] type LiteralAttribute() = inherit System.Attribute() [] [] type FSharpInterfaceDataVersionAttribute(major:int,minor:int,release:int) = inherit System.Attribute() member x.Major = major member x.Minor = minor member x.Release = release [] [] type CompilationMappingAttribute(sourceConstructFlags:SourceConstructFlags, variantNumber:int, sequenceNumber:int) = inherit System.Attribute() member x.SourceConstructFlags = sourceConstructFlags member x.SequenceNumber = sequenceNumber member x.VariantNumber = variantNumber new(sourceConstructFlags) = CompilationMappingAttribute(sourceConstructFlags,0,0) new(sourceConstructFlags,sequenceNumber) = CompilationMappingAttribute(sourceConstructFlags,0,sequenceNumber) [] [] type CompilationSourceNameAttribute(sourceName:string) = inherit System.Attribute() member x.SourceName = sourceName //------------------------------------------------------------------------- [] [] type CompilationRepresentationAttribute (flags : CompilationRepresentationFlags) = inherit System.Attribute() member x.Flags = flags [] [] type ExperimentalAttribute(message:string) = inherit System.Attribute() member x.Message = message [] [] type CompilationArgumentCountsAttribute(counts:int[]) = inherit System.Attribute() member x.Counts = let unboxPrim(x:obj) = (# "unbox.any !0" type ('T) x : 'T #) (unboxPrim(counts.Clone()) : System.Collections.Generic.IEnumerable) [] [] type CustomOperationAttribute(name:string) = inherit System.Attribute() let mutable isBinary = false let mutable allowInto = false let mutable isJoin = false let mutable isGroupJoin = false let mutable maintainsVarSpace = false let mutable maintainsVarSpaceWithBind = false let mutable joinOnWord = "" member x.Name = name member x.AllowIntoPattern with get() = allowInto and set v = allowInto <- v member x.IsLikeZip with get() = isBinary and set v = isBinary <- v member x.IsLikeJoin with get() = isJoin and set v = isJoin <- v member x.IsLikeGroupJoin with get() = isGroupJoin and set v = isGroupJoin <- v member x.JoinConditionWord with get() = joinOnWord and set v = joinOnWord <- v member x.MaintainsVariableSpace with get() = maintainsVarSpace and set v = maintainsVarSpace <- v member x.MaintainsVariableSpaceUsingBind with get() = maintainsVarSpaceWithBind and set v = maintainsVarSpaceWithBind <- v [] [] type ProjectionParameterAttribute() = inherit System.Attribute() [] [] type StructuredFormatDisplayAttribute(value:string) = inherit System.Attribute() member x.Value = value [] [] type CompilerMessageAttribute(message:string, messageNumber : int) = inherit System.Attribute() let mutable isError = false let mutable isHidden = false member x.Message = message member x.MessageNumber = messageNumber member x.IsError with get() = isError and set v = isError <- v member x.IsHidden with get() = isHidden and set v = isHidden <- v new (message, messageNumber) = CompilerMessageAttribute(message, messageNumber) [] [] type UnverifiableAttribute() = inherit System.Attribute() [] [] type NoDynamicInvocationAttribute() = inherit System.Attribute() [] [] type OptionalArgumentAttribute() = inherit System.Attribute() [] [] type GeneralizableValueAttribute() = inherit System.Attribute() [] [] type RequiresExplicitTypeArgumentsAttribute() = inherit System.Attribute() [] [] type RequireQualifiedAccessAttribute() = inherit System.Attribute() [] [] type AutoOpenAttribute(path:string) = inherit System.Attribute() member x.Path = path new() = AutoOpenAttribute("") [] type float<[] 'Measure> = float [] type float32<[] 'Measure> = float32 [] type decimal<[] 'Measure> = decimal [] type int<[] 'Measure> = int [] type sbyte<[] 'Measure> = sbyte [] type int16<[] 'Measure> = int16 [] type int64<[] 'Measure> = int64 module BasicInlinedOperations = let inline unboxPrim<'T>(x:obj) = (# "unbox.any !0" type ('T) x : 'T #) let inline box (x:'T) = (# "box !0" type ('T) x : obj #) let inline not (b:bool) = (# "ceq" b false : bool #) let inline (=) (x:int) (y:int) = (# "ceq" x y : bool #) let inline (<>) (x:int) (y:int) = not(# "ceq" x y : bool #) let inline (>=) (x:int) (y:int) = not(# "clt" x y : bool #) let inline (>=.) (x:int64) (y:int64) = not(# "clt" x y : bool #) let inline (>=...) (x:char) (y:char) = not(# "clt" x y : bool #) let inline (<=...) (x:char) (y:char) = not(# "cgt" x y : bool #) let inline (/) (x:int) (y:int) = (# "div" x y : int #) let inline (+) (x:int) (y:int) = (# "add" x y : int #) let inline (+.) (x:int64) (y:int64) = (# "add" x y : int64 #) let inline (+..) (x:uint64) (y:uint64) = (# "add" x y : uint64 #) let inline ( *. ) (x:int64) (y:int64) = (# "mul" x y : int64 #) let inline ( *.. ) (x:uint64) (y:uint64) = (# "mul" x y : uint64 #) let inline (^) (x:string) (y:string) = System.String.Concat(x,y) let inline (<<<) (x:int) (y:int) = (# "shl" x y : int #) let inline ( * ) (x:int) (y:int) = (# "mul" x y : int #) let inline (-) (x:int) (y:int) = (# "sub" x y : int #) let inline (-.) (x:int64) (y:int64) = (# "sub" x y : int64 #) let inline (-..) (x:uint64) (y:uint64) = (# "sub" x y : uint64 #) let inline (>) (x:int) (y:int) = (# "cgt" x y : bool #) let inline (<) (x:int) (y:int) = (# "clt" x y : bool #) let inline ignore _ = () let inline intOfByte (b:byte) = (# "" b : int #) let inline raise (e: System.Exception) = (# "throw" e : 'U #) let inline length (x: 'T[]) = (# "ldlen conv.i4" x : int #) let inline zeroCreate (n:int) = (# "newarr !0" type ('T) n : 'T[] #) let inline get (arr: 'T[]) (n:int) = (# "ldelem.any !0" type ('T) arr n : 'T #) let set (arr: 'T[]) (n:int) (x:'T) = (# "stelem.any !0" type ('T) arr n x #) let inline objEq (xobj:obj) (yobj:obj) = (# "ceq" xobj yobj : bool #) let inline int64Eq (x:int64) (y:int64) = (# "ceq" x y : bool #) let inline int32Eq (x:int32) (y:int32) = (# "ceq" x y : bool #) let inline floatEq (x:float) (y:float) = (# "ceq" x y : bool #) let inline float32Eq (x:float32) (y:float32) = (# "ceq" x y : bool #) let inline charEq (x:char) (y:char) = (# "ceq" x y : bool #) let inline intOrder (x:int) (y:int) = if (# "clt" x y : bool #) then (0-1) else (# "cgt" x y : int #) let inline int64Order (x:int64) (y:int64) = if (# "clt" x y : bool #) then (0-1) else (# "cgt" x y : int #) let inline byteOrder (x:byte) (y:byte) = if (# "clt" x y : bool #) then (0-1) else (# "cgt" x y : int #) let inline byteEq (x:byte) (y:byte) = (# "ceq" x y : bool #) let inline int64 (x:int) = (# "conv.i8" x : int64 #) let inline int32 (x:int64) = (# "conv.i4" x : int32 #) let inline typeof<'T> = let tok = (# "ldtoken !0" type('T) : System.RuntimeTypeHandle #) System.Type.GetTypeFromHandle(tok) let inline typedefof<'T> = let ty = typeof<'T> if ty.IsGenericType then ty.GetGenericTypeDefinition() else ty let inline sizeof<'T> = (# "sizeof !0" type('T) : int #) let inline unsafeDefault<'T> : 'T = (# "ilzero !0" type ('T) : 'T #) let inline isinstPrim<'T>(x:obj) = (# "isinst !0" type ('T) x : obj #) let inline castclassPrim<'T>(x:obj) = (# "castclass !0" type ('T) x : 'T #) let inline notnullPrim<'T when 'T : not struct>(x:'T) = (# "ldnull cgt.un" x : bool #) let inline iscastPrim<'T when 'T : not struct>(x:obj) = (# "isinst !0" type ('T) x : 'T #) open BasicInlinedOperations module TupleUtils = open BasicInlinedOperations // adapted from System.Tuple::CombineHashCodes let inline mask (n:int) (m:int) = (# "and" n m : int #) let inline opshl (x:int) (n:int) : int = (# "shl" x (mask n 31) : int #) let inline opxor (x:int) (y:int) : int = (# "xor" x y : int32 #) let inline combineTupleHashes (h1 : int) (h2 : int) = (opxor ((opshl h1 5) + h1) h2) let combineTupleHashCodes (codes : int []) = let mutable (num : int32) = codes.Length - 1 while (num > 1) do let mutable i = 0 while ((i * 2) < (num+1)) do let index = i * 2 let num' = index + 1 if index = num then set codes i (get codes index) num <- i else set codes i (combineTupleHashes (get codes index) (get codes num)) if num' = num then num <- i i <- i + 1 combineTupleHashes (get codes 0) (get codes 1) #if FX_NO_TUPLE namespace System open Microsoft.FSharp.Core.BasicInlinedOperations open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text type Tuple<'T1>(t1:'T1) = member t.Item1 = t1 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if TUPLE_STRUXT // NOTE: Tuple`2 is a struct type. // WARNING: If you change additional tuple types to be structs then you must change 'highestTupleStructType' in tastops.ml #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] type Tuple<'T1,'T2> = new (v1,v2) = { Item1 = v1; Item2 = v2 } val Item1 : 'T1 val Item2 : 'T2 #else type Tuple<'T1,'T2>(t1:'T1, t2:'T2) = member t.Item1 = t1 member t.Item2 = t2 interface IStructuralComparable interface IStructuralEquatable interface IComparable #endif #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3>(t1:'T1,t2:'T2,t3:'T3) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3,'T4>(t1:'T1,t2:'T2,t3:'T3,t4:'T4) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 member t.Item4 = t4 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3,'T4,'T5>(t1:'T1,t2:'T2,t3:'T3,t4:'T4,t5:'T5) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 member t.Item4 = t4 member t.Item5 = t5 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3,'T4,'T5,'T6>(t1:'T1,t2:'T2,t3:'T3,t4:'T4,t5:'T5,t6:'T6) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 member t.Item4 = t4 member t.Item5 = t5 member t.Item6 = t6 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7>(t1:'T1,t2:'T2,t3:'T3,t4:'T4,t5:'T5,t6:'T6,t7:'T7) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 member t.Item4 = t4 member t.Item5 = t5 member t.Item6 = t6 member t.Item7 = t7 interface IStructuralComparable interface IStructuralEquatable interface IComparable #if FX_NO_DEBUG_DISPLAYS #else [] #endif type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest>(t1:'T1,t2:'T2,t3:'T3,t4:'T4,t5:'T5,t6:'T6,t7:'T7,rest:'TRest) = member t.Item1 = t1 member t.Item2 = t2 member t.Item3 = t3 member t.Item4 = t4 member t.Item5 = t5 member t.Item6 = t6 member t.Item7 = t7 member t.Rest = rest interface IStructuralComparable interface IStructuralEquatable interface IComparable #else #endif namespace Microsoft.FSharp.Core open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text open Microsoft.FSharp.Core open Microsoft.FSharp.Core.BasicInlinedOperations //------------------------------------------------------------------------- // The main aim here is to bootsrap the definition of structural hashing // and comparison. Calls to these form part of the auto-generated // code for each new datatype. module LanguagePrimitives = module (* internal *) ErrorStrings = // inline functions cannot call GetString, so we must make these bits public let AddressOpNotFirstClassString = SR.GetString(SR.addressOpNotFirstClass) let NoNegateMinValueString = SR.GetString(SR.noNegateMinValue) // needs to be public to be visible from inline function 'average' and others let InputSequenceEmptyString = SR.GetString(SR.inputSequenceEmpty) // needs to be public to be visible from inline function 'average' and others let InputArrayEmptyString = SR.GetString(SR.arrayWasEmpty) // needs to be public to be visible from inline function 'average' and others let InputMustBeNonNegativeString = SR.GetString(SR.inputMustBeNonNegative) [] // nested module OK module IntrinsicOperators = //------------------------------------------------------------------------- // Lazy and/or. Laziness added by the F# compiler. let (&) x y = if x then y else false let (&&) x y = if x then y else false [] let (or) x y = if x then true else y let (||) x y = if x then true else y //------------------------------------------------------------------------- // Address-of // Note, "raise<'T> : exn -> 'T" is manually inlined below. // Byref usage checks prohibit type instantiations involving byrefs. [] let inline (~&) (x : 'T) : 'T byref = ignore x // pretend the variable is used let e = new System.ArgumentException(ErrorStrings.AddressOpNotFirstClassString) (# "throw" (e :> System.Exception) : 'T byref #) [] let inline (~&&) (x : 'T) : nativeptr<'T> = ignore x // pretend the variable is used let e = new System.ArgumentException(ErrorStrings.AddressOpNotFirstClassString) (# "throw" (e :> System.Exception) : nativeptr<'T> #) open IntrinsicOperators [] // nested module OK module IntrinsicFunctions = //------------------------------------------------------------------------- // Unboxing, type casts, type tests type TypeNullnessSemantics = int // CLI reference types let TypeNullnessSemantics_NullIsExtraValue = 1 // F# types with [] let TypeNullnessSemantics_NullTrueValue = 2 // F# record, union, tuple, function types let TypeNullnessSemantics_NullNotLiked = 3 // structs let TypeNullnessSemantics_NullNever = 4 // duplicated from above since we're using integers in this section let CompilationRepresentationFlags_PermitNull = 8 [] type TypeInfo<'T>() = // Compute an on-demand per-instantiation static field static let info = let ty = typeof<'T> if ty.IsValueType then TypeNullnessSemantics_NullNever else let mappingAttrs = ty.GetCustomAttributes(typeof,false) if mappingAttrs.Length = 0 then TypeNullnessSemantics_NullIsExtraValue elif ty.Equals(typeof) then TypeNullnessSemantics_NullTrueValue elif typeof.IsAssignableFrom(ty) then TypeNullnessSemantics_NullIsExtraValue elif ty.GetCustomAttributes(typeof,false).Length > 0 then TypeNullnessSemantics_NullIsExtraValue else let reprAttrs = ty.GetCustomAttributes(typeof,false) if reprAttrs.Length = 0 then TypeNullnessSemantics_NullNotLiked else let reprAttr = get reprAttrs 0 let reprAttr = (# "unbox.any !0" type (CompilationRepresentationAttribute) reprAttr : CompilationRepresentationAttribute #) if (# "and" reprAttr.Flags CompilationRepresentationFlags_PermitNull : int #) = 0 then TypeNullnessSemantics_NullNotLiked else TypeNullnessSemantics_NullTrueValue // Publish the results of that compuation static member TypeInfo = info // Note: cheap nullness test for generic value: // IL_0000: ldarg.1 // IL_0001: box !TKey // IL_0006: brtrue.s IL_000e // worst case: nothing known about source or destination let UnboxGeneric<'T>(x:obj) = if notnullPrim(x) or TypeInfo<'T>.TypeInfo <> TypeNullnessSemantics_NullNotLiked then unboxPrim<'T>(x) else //System.Console.WriteLine("UnboxGeneric, x = {0}, 'T = {1}", x, typeof<'T>) raise (System.NullReferenceException()) // better: source is NOT TypeNullnessSemantics_NullNotLiked let inline UnboxFast<'T>(x:obj) = // assert not(TypeInfo<'T>.TypeInfo = TypeNullnessSemantics_NullNotLiked) unboxPrim<'T>(x) // worst case: nothing known about source or destination let TypeTestGeneric<'T>(x:obj) = if notnullPrim(isinstPrim<'T>(x)) then true elif notnullPrim(x) then false else (TypeInfo<'T>.TypeInfo = TypeNullnessSemantics_NullTrueValue) // quick entry: source is NOT TypeNullnessSemantics_NullTrueValue let inline TypeTestFast<'T>(x:obj) = //assert not(TypeInfo<'T>.TypeInfo = TypeNullnessSemantics_NullTrueValue) notnullPrim(isinstPrim<'T>(x)) let Dispose<'T when 'T :> System.IDisposable >(x:'T) = match box x with | null -> () | _ -> x.Dispose() let FailInit() : unit = raise (System.InvalidOperationException(SR.GetString(SR.checkInit))) let FailStaticInit() : unit = raise (System.InvalidOperationException(SR.GetString(SR.checkStaticInit))) let CheckThis (x : 'T when 'T : not struct) = match box x with | null -> raise (System.InvalidOperationException(SR.GetString(SR.checkInit))) | _ -> x let inline MakeDecimal lo med hi isNegative scale = new System.Decimal(lo,med,hi,isNegative,scale) let inline GetString (s: string) (n:int) = s.Chars(n) let inline CreateInstance<'T when 'T : (new : unit -> 'T) >() = (System.Activator.CreateInstance() : 'T) let inline GetArray (arr: 'T array) (n:int) = (# "ldelem.any !0" type ('T) arr n : 'T #) let inline SetArray (arr: 'T array) (n:int) (x:'T) = (# "stelem.any !0" type ('T) arr n x #) let inline GetArraySub arr (start:int) (len:int) = let dst = zeroCreate len for i = 0 to len - 1 do SetArray dst i (GetArray arr (start + i)) dst let inline SetArraySub arr (start:int) (len:int) (src:_[]) = for i = 0 to len - 1 do SetArray arr (start+i) (GetArray src i) let inline GetArray2D (arr: 'T[,]) (n1:int) (n2:int) = (# "ldelem.multi 2 !0" type ('T) arr n1 n2 : 'T #) let inline SetArray2D (arr: 'T[,]) (n1:int) (n2:int) (x:'T) = (# "stelem.multi 2 !0" type ('T) arr n1 n2 x #) let inline GetArray2DLength1 (arr: 'T[,]) = (# "ldlen.multi 2 0" arr : int #) let inline GetArray2DLength2 (arr: 'T[,]) = (# "ldlen.multi 2 1" arr : int #) let inline Array2DZeroCreate (n:int) (m:int) = (# "newarr.multi 2 !0" type ('T) n m : 'T[,] #) let GetArray2DSub (src: 'T[,]) src1 src2 len1 len2 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let dst = Array2DZeroCreate len1 len2 for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do SetArray2D dst i j (GetArray2D src (src1 + i) (src2 + j)) dst let SetArray2DSub (dst: 'T[,]) src1 src2 len1 len2 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do SetArray2D dst (src1+i) (src2+j) (GetArray2D src i j) let inline GetArray3D (arr: 'T[,,]) (n1:int) (n2:int) (n3:int) = (# "ldelem.multi 3 !0" type ('T) arr n1 n2 n3 : 'T #) let inline SetArray3D (arr: 'T[,,]) (n1:int) (n2:int) (n3:int) (x:'T) = (# "stelem.multi 3 !0" type ('T) arr n1 n2 n3 x #) let inline GetArray3DLength1 (arr: 'T[,,]) = (# "ldlen.multi 3 0" arr : int #) let inline GetArray3DLength2 (arr: 'T[,,]) = (# "ldlen.multi 3 1" arr : int #) let inline GetArray3DLength3 (arr: 'T[,,]) = (# "ldlen.multi 3 2" arr : int #) let inline Array3DZeroCreate (n1:int) (n2:int) (n3:int) = (# "newarr.multi 3 !0" type ('T) n1 n2 n3 : 'T[,,] #) let GetArray3DSub (src: 'T[,,]) src1 src2 src3 len1 len2 len3 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let len3 = (if len3 < 0 then 0 else len3) let dst = Array3DZeroCreate len1 len2 len3 for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do SetArray3D dst i j k (GetArray3D src (src1+i) (src2+j) (src3+k)) dst let SetArray3DSub (dst: 'T[,,]) src1 src2 src3 len1 len2 len3 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do SetArray3D dst (src1+i) (src2+j) (src3+k) (GetArray3D src i j k) let inline GetArray4D (arr: 'T[,,,]) (n1:int) (n2:int) (n3:int) (n4:int) = (# "ldelem.multi 4 !0" type ('T) arr n1 n2 n3 n4 : 'T #) let inline SetArray4D (arr: 'T[,,,]) (n1:int) (n2:int) (n3:int) (n4:int) (x:'T) = (# "stelem.multi 4 !0" type ('T) arr n1 n2 n3 n4 x #) let inline Array4DLength1 (arr: 'T[,,,]) = (# "ldlen.multi 4 0" arr : int #) let inline Array4DLength2 (arr: 'T[,,,]) = (# "ldlen.multi 4 1" arr : int #) let inline Array4DLength3 (arr: 'T[,,,]) = (# "ldlen.multi 4 2" arr : int #) let inline Array4DLength4 (arr: 'T[,,,]) = (# "ldlen.multi 4 3" arr : int #) let inline Array4DZeroCreate (n1:int) (n2:int) (n3:int) (n4:int) = (# "newarr.multi 4 !0" type ('T) n1 n2 n3 n4 : 'T[,,,] #) let GetArray4DSub (src: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let len3 = (if len3 < 0 then 0 else len3) let len4 = (if len4 < 0 then 0 else len4) let dst = Array4DZeroCreate len1 len2 len3 len4 for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do for m = 0 to len4 - 1 do SetArray4D dst i j k m (GetArray4D src (src1+i) (src2+j) (src3+k) (src4+m)) dst let SetArray4DSub (dst: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do for m = 0 to len4 - 1 do SetArray4D dst (src1+i) (src2+j) (src3+k) (src4+m) (GetArray4D src i j k m) let inline anyToString nullStr x = match box x with | null -> nullStr | :? System.IFormattable as f -> f.ToString(null,System.Globalization.CultureInfo.InvariantCulture) | obj -> obj.ToString() let anyToStringShowingNull x = anyToString "null" x module HashCompare = // NOTE: compiler/optimizer is aware of this function and optimizes calls to it in many situations // where it is known that PhysicalEqualityObj is identical to reference comparison let PhysicalEqualityIntrinsic (x:'T) (y:'T) : bool when 'T : not struct = objEq (box x) (box y) let inline PhysicalEqualityFast (x:'T) (y:'T) : bool when 'T : not struct = PhysicalEqualityIntrinsic x y let PhysicalHashIntrinsic (x: 'T) : int when 'T : not struct = #if FX_NO_GET_HASH_CODE_HELPER (box x).GetHashCode() #else System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(box x) #endif let inline PhysicalHashFast (x: 'T) = PhysicalHashIntrinsic x //------------------------------------------------------------------------- // Bi-modal generic comparison helper implementation. // // For structured data (records, tuples, unions) the IComparable implementation on // types is run in either Equivalence Relation or Partial Equivalence Relation (PER) mode. // // In the second mode, generic comparison of two NaN values is recorded by clearing // the PERMode.mode variable. PER mode can also be thought of as "no pair of NaNs detected yet" mode. // Entry points that care about NaN pairs set the PERMode.mode variable and if it remains un-set by // the end of their execution then no NaN pair was detected. // // From the library spec point of view: // - GenericComparisonWithComparer will (a) make IComparable calls in the same mode as // called and (b) if in PER node then a NaN pair will cause the outer operation that entered // PER mode to return false. // // - GenericLessThan, GenericGreaterThan etc. enters PER mode and retores the previous PER mode on exit // // - GenericComparison clears PER mode and retores the previous PER mode on exit // // - GenericEquality is implemented via obj.Equals and always has ER semantics // // Note that some representations chosen by F# are legitimately allowed to be null, e.g. the empty list. // However, because null values don't support the polymorphic virtual comparison operation CompareTo // the test for nullness must be made on the caller side. //------------------------------------------------------------------------- let FailGenericComparison (obj: obj) = raise (new System.ArgumentException(SR.GetString1(SR.genericCompareFail1, obj.GetType().ToString()))) type GenericComparer(throwsOnPER:bool) = interface System.Collections.IComparer abstract CompareC : obj * obj -> int // implemented further below member c.ThrowsOnPER() = throwsOnPER let NaNException = new System.Exception() let rec GenericCompare (comp:GenericComparer) (xobj:obj,yobj:obj) = (*if objEq xobj yobj then 0 else *) //System.Console.WriteLine("xobj = {0}, yobj = {1}, NaNs = {2}, PERMode.mode = {3}", [| xobj; yobj; box PER_NAN_PAIR_DETECTED; box PERMode.mode |]) match xobj,yobj with | null,null -> 0 | null,_ -> -1 | _,null -> 1 #if INVARIANT_CULTURE_STRING_COMPARISON // Use invariant culture comparison for strings | (:? string as x),(:? string as y) -> System.String.Compare(x, y, false, CultureInfo.InvariantCulture) #else // Use Ordinal comparison for strings | (:? string as x),(:? string as y) -> System.String.CompareOrdinal(x, y) #endif // Permit structural comparison on arrays | (:? System.Array as arr1),_ -> match arr1,yobj with // Fast path | (:? (obj[]) as arr1), (:? (obj[]) as arr2) -> GenericComparisonObjArrayWithComparer comp arr1 arr2 // Fast path | (:? (byte[]) as arr1), (:? (byte[]) as arr2) -> GenericComparisonByteArray arr1 arr2 | _ , (:? System.Array as arr2) -> GenericComparisonArbArrayWithComparer comp arr1 arr2 | _ -> FailGenericComparison xobj // Check for IStructuralComparable | (:? IStructuralComparable as x),_ -> x.CompareTo(yobj,comp) // Check for IComparable | (:? System.IComparable as x),_ -> match xobj,yobj with | (:? float as x),(:? float as y) -> if (System.Double.IsNaN x || System.Double.IsNaN y) && (comp.ThrowsOnPER()) then raise NaNException | (:? float32 as x),(:? float32 as y) -> if (System.Single.IsNaN x || System.Single.IsNaN y) && (comp.ThrowsOnPER()) then raise NaNException | _ -> () x.CompareTo(yobj) | (:? nativeint as x),(:? nativeint as y) -> if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) | (:? unativeint as x),(:? unativeint as y) -> if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) | _,(:? IStructuralComparable as yc) -> let res = yc.CompareTo(xobj,comp) if res < 0 then 1 elif res > 0 then -1 else 0 | _,(:? System.IComparable as yc) -> // Note -c doesn't work here: be careful of comparison function returning minint let c = yc.CompareTo(xobj) in if c < 0 then 1 elif c > 0 then -1 else 0 | _ -> FailGenericComparison xobj /// specialcase: Core implementation of structural comparison on arbitrary arrays. and GenericComparisonArbArrayWithComparer (comp:GenericComparer) (x:System.Array) (y:System.Array) : int = #if FX_NO_ARRAY_LONG_LENGTH if x.Rank = 1 && y.Rank = 1 then let lenx = x.Length let leny = y.Length let c = intOrder lenx leny if c <> 0 then c else let basex = (x.GetLowerBound(0)) let basey = (y.GetLowerBound(0)) let c = intOrder basex basey if c <> 0 then c else let rec check i = if i >= lenx then 0 else let c = GenericCompare comp ((x.GetValue(i + basex)),(y.GetValue(i + basey))) if c <> 0 then c else check (i + 1) check 0 elif x.Rank = 2 && y.Rank = 2 then let lenx0 = x.GetLength(0) let leny0 = y.GetLength(0) let c = intOrder lenx0 leny0 if c <> 0 then c else let lenx1 = x.GetLength(1) let leny1 = y.GetLength(1) let c = intOrder lenx1 leny1 if c <> 0 then c else let basex0 = (x.GetLowerBound(0)) let basex1 = (x.GetLowerBound(1)) let basey0 = (y.GetLowerBound(0)) let basey1 = (y.GetLowerBound(1)) let c = intOrder basex0 basey0 if c <> 0 then c else let c = intOrder basex1 basey1 if c <> 0 then c else let rec check0 i = let rec check1 j = if j >= lenx1 then 0 else let c = GenericCompare comp ((x.GetValue(i + basex0,j + basex1)), (y.GetValue(i + basey0,j + basey1))) if c <> 0 then c else check1 (j + 1) if i >= lenx0 then 0 else let c = check1 0 if c <> 0 then c else check0 (i + 1) check0 0 else let c = intOrder x.Rank y.Rank if c <> 0 then c else let ndims = x.Rank // check lengths let rec precheck k = if k >= ndims then 0 else let c = intOrder (x.GetLength(k)) (y.GetLength(k)) if c <> 0 then c else let c = intOrder (x.GetLowerBound(k)) (y.GetLowerBound(k)) if c <> 0 then c else precheck (k+1) let c = precheck 0 if c <> 0 then c else let idxs : int[] = zeroCreate ndims let rec checkN k baseIdx i lim = if i >= lim then 0 else set idxs k (baseIdx + i) let c = if k = ndims - 1 then GenericCompare comp ((x.GetValue(idxs)), (y.GetValue(idxs))) else check (k+1) if c <> 0 then c else checkN k baseIdx (i + 1) lim and check k = if k >= ndims then 0 else let baseIdx = x.GetLowerBound(k) checkN k baseIdx 0 (x.GetLength(k)) check 0 #else if x.Rank = 1 && y.Rank = 1 then let lenx = x.LongLength let leny = y.LongLength let c = int64Order lenx leny if c <> 0 then c else let basex = int64 (x.GetLowerBound(0)) let basey = int64 (y.GetLowerBound(0)) let c = int64Order basex basey if c <> 0 then c else let rec check i = if i >=. lenx then 0 else let c = GenericCompare comp ((x.GetValue(i +. basex)), (y.GetValue(i +. basey))) if c <> 0 then c else check (i +. 1L) check 0L elif x.Rank = 2 && y.Rank = 2 then let lenx0 = x.GetLongLength(0) let leny0 = y.GetLongLength(0) let c = int64Order lenx0 leny0 if c <> 0 then c else let lenx1 = x.GetLongLength(1) let leny1 = y.GetLongLength(1) let c = int64Order lenx1 leny1 if c <> 0 then c else let basex0 = int64 (x.GetLowerBound(0)) let basex1 = int64 (x.GetLowerBound(1)) let basey0 = int64 (y.GetLowerBound(0)) let basey1 = int64 (y.GetLowerBound(1)) let c = int64Order basex0 basey0 if c <> 0 then c else let c = int64Order basex1 basey1 if c <> 0 then c else let rec check0 i = let rec check1 j = if j >=. lenx1 then 0 else let c = GenericCompare comp ((x.GetValue(i +. basex0,j +. basex1)), (y.GetValue(i +. basey0,j +. basey1))) if c <> 0 then c else check1 (j +. 1L) if i >=. lenx0 then 0 else let c = check1 0L if c <> 0 then c else check0 (i +. 1L) check0 0L else let c = intOrder x.Rank y.Rank if c <> 0 then c else let ndims = x.Rank // check lengths let rec precheck k = if k >= ndims then 0 else let c = int64Order (x.GetLongLength(k)) (y.GetLongLength(k)) if c <> 0 then c else let c = intOrder (x.GetLowerBound(k)) (y.GetLowerBound(k)) if c <> 0 then c else precheck (k+1) let c = precheck 0 if c <> 0 then c else let idxs : int64[] = zeroCreate ndims let rec checkN k baseIdx i lim = if i >=. lim then 0 else set idxs k (baseIdx +. i) let c = if k = ndims - 1 then GenericCompare comp ((x.GetValue(idxs)), (y.GetValue(idxs))) else check (k+1) if c <> 0 then c else checkN k baseIdx (i +. 1L) lim and check k = if k >= ndims then 0 else let baseIdx = x.GetLowerBound(k) checkN k (int64 baseIdx) 0L (x.GetLongLength(k)) check 0 #endif /// optimized case: Core implementation of structural comparison on object arrays. and GenericComparisonObjArrayWithComparer (comp:GenericComparer) (x:obj[]) (y:obj[]) : int = let lenx = x.Length let leny = y.Length let c = intOrder lenx leny if c <> 0 then c else let mutable i = 0 let mutable res = 0 while i < lenx do let c = GenericCompare comp ((get x i), (get y i)) if c <> 0 then (res <- c; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural comparison on arrays. and GenericComparisonByteArray (x:byte[]) (y:byte[]) : int = let lenx = x.Length let leny = y.Length let c = intOrder lenx leny if c <> 0 then c else let mutable i = 0 let mutable res = 0 while i < lenx do let c = byteOrder (get x i) (get y i) if c <> 0 then (res <- c; i <- lenx) else i <- i + 1 res type GenericComparer with interface System.Collections.IComparer with override c.Compare(x:obj,y:obj) = GenericCompare c (x,y) override c.CompareC(x:obj,y:obj) = GenericCompare c (x,y) let fsComparer = GenericComparer(true) let fsComparerNoThrow = GenericComparer(false) // NOTE: compiler/optimizer is aware of this function and optimizes calls to it in many situations // where it is known how GenericComparisonObjBimodal will dispatch via IComparable. let GenericComparisonWithComparerIntrinsic<'T> (comp:System.Collections.IComparer) (x:'T) (y:'T) : int = // if 'T = float then x.CompareTo(y) // if 'T = float32 then x.CompareTo(y) comp.Compare(box x, box y) let inline GenericComparisonWithComparerFast<'T> (comp:System.Collections.IComparer) (x:'T) (y:'T) : int = GenericComparisonWithComparerIntrinsic comp x y when 'T : bool = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : sbyte = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int16 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int32 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int64 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : nativeint = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : byte = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint16 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint32 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint64 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : unativeint = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) // Multi-modal direct implementation for float/float32 all of "clt", "cgt" and "ceq" may fail on NaN. In this case we must detect our mode // and possibly change PERMode.mode. We do this by bailing out to call GenericComparisonWithComparerIntrinsic when 'T : float = if (# "clt" x y : bool #) then (-1) else if (# "cgt" x y : bool #) then 1 else if (# "ceq" x y : bool #) then 0 else GenericComparisonWithComparerIntrinsic comp x y when 'T : float32 = if (# "clt" x y : bool #) then (-1) else if (# "cgt" x y : bool #) then 1 else if (# "ceq" x y : bool #) then 0 else GenericComparisonWithComparerIntrinsic comp x y when 'T : char = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : string = #if INVARIANT_CULTURE_STRING_COMPARISON // NOTE: we don't have to null check here because System.String.Compare // gives reliable results on null values. System.String.Compare((# "" x : string #) ,(# "" y : string #), false, CultureInfo.InvariantCulture) #else // NOTE: we don't have to null check here because System.String.CompareOrdinal // gives reliable results on null values. System.String.CompareOrdinal((# "" x : string #) ,(# "" y : string #)) #endif when ^T : decimal = System.Decimal.Compare((# "" x:decimal #), (# "" y:decimal #)) let GenericComparisonIntrinsic<'T> (x:'T) (y:'T) : int = GenericComparisonWithComparerIntrinsic (fsComparerNoThrow :> System.Collections.IComparer) x y // Check for 'T = float or 'T = float32 (in case we didn't resolve this statically). // In these cases we must use the right "clt" to cope with NaN. Note "<" etc. take // on a different meaning for floats nested inside data structures than when immediately // applied to type float. This gives us the IEEE semantics when "<" etc. are used on // floats, and a sound structural semantics when used on structured data, though // comparisons on structural data containing floats do not get optimized. let GenericLessThanIntrinsic (x:'T) (y:'T) = try (# "clt" (GenericComparisonWithComparerIntrinsic fsComparer x y) 0 : bool #) with | e when System.Runtime.CompilerServices.RuntimeHelpers.Equals(e, NaNException) -> false let GenericGreaterThanIntrinsic (x:'T) (y:'T) = try (# "cgt" (GenericComparisonWithComparerIntrinsic fsComparer x y) 0 : bool #) with | e when System.Runtime.CompilerServices.RuntimeHelpers.Equals(e, NaNException) -> false let GenericGreaterOrEqualIntrinsic (x:'T) (y:'T) = try (# "cgt" (GenericComparisonWithComparerIntrinsic fsComparer x y) (-1) : bool #) with | e when System.Runtime.CompilerServices.RuntimeHelpers.Equals(e, NaNException) -> false let GenericLessOrEqualIntrinsic (x:'T) (y:'T) = try (# "clt" (GenericComparisonWithComparerIntrinsic fsComparer x y) 1 : bool #) with | e when System.Runtime.CompilerServices.RuntimeHelpers.Equals(e, NaNException) -> false /// Core implementation of structural comparison on arbitrary values. let inline GenericComparisonFast<'T> (x:'T) (y:'T) : int = GenericComparisonIntrinsic x y when 'T : bool = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : sbyte = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int16 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int32 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : int64 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : nativeint = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : byte = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint16 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint32 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : uint64 = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : unativeint = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : float = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : float32 = if (# "clt" x y : bool #) then (-1) else (# "cgt" x y : int #) when 'T : char = if (# "clt.un" x y : bool #) then (-1) else (# "cgt.un" x y : int #) when 'T : string = #if INVARIANT_CULTURE_STRING_COMPARISON // NOTE: we don't have to null check here because System.String.Compare // gives reliable results on null values. System.String.Compare((# "" x : string #) ,(# "" y : string #), false, CultureInfo.InvariantCulture) #else // NOTE: we don't have to null check here because System.String.CompareOrdinal // gives reliable results on null values. System.String.CompareOrdinal((# "" x : string #) ,(# "" y : string #)) #endif when ^T : decimal = System.Decimal.Compare((# "" x:decimal #), (# "" y:decimal #)) let inline GenericLessThanFast (x:'T) (y:'T) = GenericLessThanIntrinsic x y when 'T : bool = (# "clt" x y : bool #) when 'T : int = (# "clt" x y : bool #) when 'T : sbyte = (# "clt" x y : bool #) when 'T : int16 = (# "clt" x y : bool #) when 'T : int32 = (# "clt" x y : bool #) when 'T : int64 = (# "clt" x y : bool #) when 'T : byte = (# "clt.un" x y : bool #) when 'T : uint16 = (# "clt.un" x y : bool #) when 'T : uint32 = (# "clt.un" x y : bool #) when 'T : uint64 = (# "clt.un" x y : bool #) when 'T : unativeint = (# "clt.un" x y : bool #) when 'T : nativeint = (# "clt" x y : bool #) when 'T : float = (# "clt" x y : bool #) when 'T : float32= (# "clt" x y : bool #) when 'T : char = (# "clt" x y : bool #) when ^T : decimal = System.Decimal.op_LessThan ((# "" x:decimal #), (# "" y:decimal #)) let inline GenericGreaterThanFast (x:'T) (y:'T) = GenericGreaterThanIntrinsic x y when 'T : bool = (# "cgt" x y : bool #) when 'T : int = (# "cgt" x y : bool #) when 'T : sbyte = (# "cgt" x y : bool #) when 'T : int16 = (# "cgt" x y : bool #) when 'T : int32 = (# "cgt" x y : bool #) when 'T : int64 = (# "cgt" x y : bool #) when 'T : nativeint = (# "cgt" x y : bool #) when 'T : byte = (# "cgt.un" x y : bool #) when 'T : uint16 = (# "cgt.un" x y : bool #) when 'T : uint32 = (# "cgt.un" x y : bool #) when 'T : uint64 = (# "cgt.un" x y : bool #) when 'T : unativeint = (# "cgt.un" x y : bool #) when 'T : float = (# "cgt" x y : bool #) when 'T : float32 = (# "cgt" x y : bool #) when 'T : char = (# "cgt" x y : bool #) when ^T : decimal = System.Decimal.op_GreaterThan ((# "" x:decimal #), (# "" y:decimal #)) let inline GenericLessOrEqualFast (x:'T) (y:'T) = GenericLessOrEqualIntrinsic x y when 'T : bool = not (# "cgt" x y : bool #) when 'T : int = not (# "cgt" x y : bool #) when 'T : sbyte = not (# "cgt" x y : bool #) when 'T : int16 = not (# "cgt" x y : bool #) when 'T : int32 = not (# "cgt" x y : bool #) when 'T : int64 = not (# "cgt" x y : bool #) when 'T : nativeint = not (# "cgt" x y : bool #) when 'T : byte = not (# "cgt.un" x y : bool #) when 'T : uint16 = not (# "cgt.un" x y : bool #) when 'T : uint32 = not (# "cgt.un" x y : bool #) when 'T : uint64 = not (# "cgt.un" x y : bool #) when 'T : unativeint = not (# "cgt.un" x y : bool #) when 'T : float = not (# "cgt.un" x y : bool #) when 'T : float32 = not (# "cgt.un" x y : bool #) when 'T : char = not(# "cgt" x y : bool #) when ^T : decimal = System.Decimal.op_LessThanOrEqual ((# "" x:decimal #), (# "" y:decimal #)) let inline GenericGreaterOrEqualFast (x:'T) (y:'T) = GenericGreaterOrEqualIntrinsic x y when 'T : bool = not (# "clt" x y : bool #) when 'T : int = not (# "clt" x y : bool #) when 'T : sbyte = not (# "clt" x y : bool #) when 'T : int16 = not (# "clt" x y : bool #) when 'T : int32 = not (# "clt" x y : bool #) when 'T : int64 = not (# "clt" x y : bool #) when 'T : nativeint = not (# "clt" x y : bool #) when 'T : byte = not (# "clt.un" x y : bool #) when 'T : uint16 = not (# "clt.un" x y : bool #) when 'T : uint32 = not (# "clt.un" x y : bool #) when 'T : uint64 = not (# "clt.un" x y : bool #) when 'T : unativeint = not (# "clt.un" x y : bool #) when 'T : float = not (# "clt.un" x y : bool #) when 'T : float32 = not (# "clt.un" x y : bool #) when 'T : char = not (# "clt" x y : bool #) when ^T : decimal = System.Decimal.op_GreaterThanOrEqual ((# "" x:decimal #), (# "" y:decimal #)) //------------------------------------------------------------------------- // EQUALITY //------------------------------------------------------------------------- /// optimized case: Core implementation of structural equality on arrays. let GenericEqualityByteArray (x:byte[]) (y:byte[]) : bool= let lenx = x.Length let leny = y.Length let c = (lenx = leny) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = byteEq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural equality on arrays. let GenericEqualityInt32Array (x:int[]) (y:int[]) : bool= let lenx = x.Length let leny = y.Length let c = (lenx = leny) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = int32Eq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural equality on arrays let GenericEqualitySingleArray er (x:float32[]) (y:float32[]) : bool= let lenx = x.Length let leny = y.Length let f32eq x y = if er && not(float32Eq x x) && not(float32Eq y y) then true else (float32Eq x y) let c = (lenx = leny) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = f32eq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural equality on arrays. let GenericEqualityDoubleArray er (x:float[]) (y:float[]) : bool= let lenx = x.Length let leny = y.Length let c = (lenx = leny) let feq x y = if er && not(floatEq x x) && not(floatEq y y) then true else (floatEq x y) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = feq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural equality on arrays. let GenericEqualityCharArray (x:char[]) (y:char[]) : bool= let lenx = x.Length let leny = y.Length let c = (lenx = leny) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = charEq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res /// optimized case: Core implementation of structural equality on arrays. let GenericEqualityInt64Array (x:int64[]) (y:int64[]) : bool= let lenx = x.Length let leny = y.Length let c = (lenx = leny) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = int64Eq (get x i) (get y i) if not c then (res <- false; i <- lenx) else i <- i + 1 res let rec GenericEqualityObj (er:bool) (iec:System.Collections.IEqualityComparer) ((xobj:obj),(yobj:obj)) : bool = (*if objEq xobj yobj then true else *) match xobj,yobj with | null,null -> true | null,_ -> false | _,null -> false | (:? string as xs),(:? string as ys) -> System.String.Equals(xs,ys) // Permit structural equality on arrays | (:? System.Array as arr1),_ -> match arr1,yobj with // Fast path | (:? (obj[]) as arr1), (:? (obj[]) as arr2) -> GenericEqualityObjArray er iec arr1 arr2 // Fast path | (:? (byte[]) as arr1), (:? (byte[]) as arr2) -> GenericEqualityByteArray arr1 arr2 | (:? (int32[]) as arr1), (:? (int32[]) as arr2) -> GenericEqualityInt32Array arr1 arr2 | (:? (int64[]) as arr1), (:? (int64[]) as arr2) -> GenericEqualityInt64Array arr1 arr2 | (:? (char[]) as arr1), (:? (char[]) as arr2) -> GenericEqualityCharArray arr1 arr2 | (:? (float32[]) as arr1), (:? (float32[]) as arr2) -> GenericEqualitySingleArray er arr1 arr2 | (:? (float[]) as arr1), (:? (float[]) as arr2) -> GenericEqualityDoubleArray er arr1 arr2 | _ , (:? System.Array as arr2) -> GenericEqualityArbArray er iec arr1 arr2 | _ -> xobj.Equals(yobj) | (:? IStructuralEquatable as x1),_ -> x1.Equals(yobj,iec) // Ensure ER NaN semantics on recursive calls | (:? float as f1), (:? float as f2) -> if er && (not (# "ceq" f1 f1 : bool #)) && (not (# "ceq" f2 f2 : bool #)) then true // NAN with ER semantics else (# "ceq" f1 f2 : bool #) // PER semantics | (:? float32 as f1), (:? float32 as f2) -> if er && (not (# "ceq" f1 f1 : bool #)) && (not (# "ceq" f2 f2 : bool #)) then true // NAN with ER semantics else (# "ceq" f1 f2 : bool #) // PER semantics | _ -> xobj.Equals(yobj) /// specialcase: Core implementation of structural equality on arbitrary arrays. and GenericEqualityArbArray er (iec:System.Collections.IEqualityComparer) (x:System.Array) (y:System.Array) : bool = #if FX_NO_ARRAY_LONG_LENGTH if x.Rank = 1 && y.Rank = 1 then // check lengths let lenx = x.Length let leny = y.Length (int32Eq lenx leny) && // check contents let basex = x.GetLowerBound(0) let basey = y.GetLowerBound(0) (int32Eq basex basey) && let rec check i = (i >= lenx) || (GenericEqualityObj er iec ((x.GetValue(basex + i)),(y.GetValue(basey + i))) && check (i + 1)) check 0 elif x.Rank = 2 && y.Rank = 2 then // check lengths let lenx0 = x.GetLength(0) let leny0 = y.GetLength(0) (int32Eq lenx0 leny0) && let lenx1 = x.GetLength(1) let leny1 = y.GetLength(1) (int32Eq lenx1 leny1) && let basex0 = x.GetLowerBound(0) let basex1 = x.GetLowerBound(1) let basey0 = y.GetLowerBound(0) let basey1 = y.GetLowerBound(1) (int32Eq basex0 basey0) && (int32Eq basex1 basey1) && // check contents let rec check0 i = let rec check1 j = (j >= lenx1) || (GenericEqualityObj er iec ((x.GetValue(basex0 + i,basex1 + j)), (y.GetValue(basey0 + i,basey1 + j))) && check1 (j + 1)) (i >= lenx0) || (check1 0 && check0 (i + 1)) check0 0 else (x.Rank = y.Rank) && let ndims = x.Rank // check lengths let rec precheck k = (k >= ndims) || (int32Eq (x.GetLength(k)) (y.GetLength(k)) && int32Eq (x.GetLowerBound(k)) (y.GetLowerBound(k)) && precheck (k+1)) precheck 0 && let idxs : int32[] = zeroCreate ndims // check contents let rec checkN k baseIdx i lim = (i >= lim) || (set idxs k (baseIdx + i); (if k = ndims - 1 then GenericEqualityObj er iec ((x.GetValue(idxs)),(y.GetValue(idxs))) else check (k+1)) && checkN k baseIdx (i + 1) lim) and check k = (k >= ndims) || (let baseIdx = x.GetLowerBound(k) checkN k baseIdx 0 (x.GetLength(k))) check 0 #else if x.Rank = 1 && y.Rank = 1 then // check lengths let lenx = x.LongLength let leny = y.LongLength (int64Eq lenx leny) && // check contents let basex = int64 (x.GetLowerBound(0)) let basey = int64 (y.GetLowerBound(0)) (int64Eq basex basey) && let rec check i = (i >=. lenx) || (GenericEqualityObj er iec ((x.GetValue(basex +. i)),(y.GetValue(basey +. i))) && check (i +. 1L)) check 0L elif x.Rank = 2 && y.Rank = 2 then // check lengths let lenx0 = x.GetLongLength(0) let leny0 = y.GetLongLength(0) (int64Eq lenx0 leny0) && let lenx1 = x.GetLongLength(1) let leny1 = y.GetLongLength(1) (int64Eq lenx1 leny1) && let basex0 = int64 (x.GetLowerBound(0)) let basex1 = int64 (x.GetLowerBound(1)) let basey0 = int64 (y.GetLowerBound(0)) let basey1 = int64 (y.GetLowerBound(1)) (int64Eq basex0 basey0) && (int64Eq basex1 basey1) && // check contents let rec check0 i = let rec check1 j = (j >=. lenx1) || (GenericEqualityObj er iec ((x.GetValue(basex0 +. i,basex1 +. j)),(y.GetValue(basey0 +. i,basey1 +. j))) && check1 (j +. 1L)) (i >=. lenx0) || (check1 0L && check0 (i +. 1L)) check0 0L else (x.Rank = y.Rank) && let ndims = x.Rank // check lengths let rec precheck k = (k >= ndims) || (int64Eq (x.GetLongLength(k)) (y.GetLongLength(k)) && int32Eq (x.GetLowerBound(k)) (y.GetLowerBound(k)) && precheck (k+1)) precheck 0 && let idxs : int64[] = zeroCreate ndims // check contents let rec checkN k baseIdx i lim = (i >=. lim) || (set idxs k (baseIdx +. i); (if k = ndims - 1 then GenericEqualityObj er iec ((x.GetValue(idxs)),(y.GetValue(idxs))) else check (k+1)) && checkN k baseIdx (i +. 1L) lim) and check k = (k >= ndims) || (let baseIdx = x.GetLowerBound(k) checkN k (int64 baseIdx) 0L (x.GetLongLength(k))) check 0 #endif /// optimized case: Core implementation of structural equality on object arrays. and GenericEqualityObjArray er iec (x:obj[]) (y:obj[]) : bool = let lenx = x.Length let leny = y.Length let c = (lenx = leny ) if not c then c else let mutable i = 0 let mutable res = true while i < lenx do let c = GenericEqualityObj er iec ((get x i),(get y i)) if not c then (res <- false; i <- lenx) else i <- i + 1 res let fsEqualityComparer = { new System.Collections.IEqualityComparer with override iec.Equals(x:obj,y:obj) = GenericEqualityObj false iec (x,y) // PER Semantics override iec.GetHashCode(x:obj) = raise (InvalidOperationException (SR.GetString(SR.notUsedForHashing))) } let fsEqualityComparerER = { new System.Collections.IEqualityComparer with override iec.Equals(x:obj,y:obj) = GenericEqualityObj true iec (x,y) // ER Semantics override iec.GetHashCode(x:obj) = raise (InvalidOperationException (SR.GetString(SR.notUsedForHashing))) } let rec GenericEqualityIntrinsic (x : 'T) (y : 'T) : bool = fsEqualityComparer.Equals((box x), (box y)) let rec GenericEqualityERIntrinsic (x : 'T) (y : 'T) : bool = fsEqualityComparerER.Equals((box x), (box y)) let rec GenericEqualityWithComparerIntrinsic (comp : System.Collections.IEqualityComparer) (x : 'T) (y : 'T) : bool = comp.Equals((box x),(box y)) let inline GenericEqualityERFast (x : 'T) (y : 'T) : bool = GenericEqualityERIntrinsic x y when 'T : bool = (# "ceq" x y : bool #) when 'T : int = (# "ceq" x y : bool #) when 'T : sbyte = (# "ceq" x y : bool #) when 'T : int16 = (# "ceq" x y : bool #) when 'T : int32 = (# "ceq" x y : bool #) when 'T : int64 = (# "ceq" x y : bool #) when 'T : byte = (# "ceq" x y : bool #) when 'T : uint16 = (# "ceq" x y : bool #) when 'T : uint32 = (# "ceq" x y : bool #) when 'T : uint64 = (# "ceq" x y : bool #) when 'T : nativeint = (# "ceq" x y : bool #) when 'T : unativeint = (# "ceq" x y : bool #) when 'T : float = if not (# "ceq" x x : bool #) && not (# "ceq" y y : bool #) then true else (# "ceq" x y : bool #) when 'T : float32 = if not (# "ceq" x x : bool #) && not (# "ceq" y y : bool #) then true else (# "ceq" x y : bool #) when 'T : char = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when ^T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) let inline GenericEqualityFast (x : 'T) (y : 'T) : bool = GenericEqualityIntrinsic x y when 'T : bool = (# "ceq" x y : bool #) when 'T : int = (# "ceq" x y : bool #) when 'T : sbyte = (# "ceq" x y : bool #) when 'T : int16 = (# "ceq" x y : bool #) when 'T : int32 = (# "ceq" x y : bool #) when 'T : int64 = (# "ceq" x y : bool #) when 'T : byte = (# "ceq" x y : bool #) when 'T : uint16 = (# "ceq" x y : bool #) when 'T : uint32 = (# "ceq" x y : bool #) when 'T : uint64 = (# "ceq" x y : bool #) when 'T : float = (# "ceq" x y : bool #) when 'T : float32 = (# "ceq" x y : bool #) when 'T : char = (# "ceq" x y : bool #) when 'T : nativeint = (# "ceq" x y : bool #) when 'T : unativeint = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when ^T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) // Note, because of the static optimization conditionals for float and float32, this operation has PER semantics let inline GenericEqualityWithComparerFast (comp : System.Collections.IEqualityComparer) (x : 'T) (y : 'T) : bool = GenericEqualityWithComparerIntrinsic comp x y when 'T : bool = (# "ceq" x y : bool #) when 'T : int = (# "ceq" x y : bool #) when 'T : sbyte = (# "ceq" x y : bool #) when 'T : int16 = (# "ceq" x y : bool #) when 'T : int32 = (# "ceq" x y : bool #) when 'T : int64 = (# "ceq" x y : bool #) when 'T : byte = (# "ceq" x y : bool #) when 'T : uint16 = (# "ceq" x y : bool #) when 'T : uint32 = (# "ceq" x y : bool #) when 'T : uint64 = (# "ceq" x y : bool #) when 'T : float = (# "ceq" x y : bool #) when 'T : float32 = (# "ceq" x y : bool #) when 'T : char = (# "ceq" x y : bool #) when 'T : nativeint = (# "ceq" x y : bool #) when 'T : unativeint = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when ^T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) // Note, because of the static optimization conditionals for float and float32, this operation has ER semantics let inline GenericEqualityWithComparerERFast (comp : System.Collections.IEqualityComparer) (x : 'T) (y : 'T) : bool = GenericEqualityWithComparerIntrinsic comp x y when 'T : bool = (# "ceq" x y : bool #) when 'T : int = (# "ceq" x y : bool #) when 'T : sbyte = (# "ceq" x y : bool #) when 'T : int16 = (# "ceq" x y : bool #) when 'T : int32 = (# "ceq" x y : bool #) when 'T : int64 = (# "ceq" x y : bool #) when 'T : byte = (# "ceq" x y : bool #) when 'T : uint16 = (# "ceq" x y : bool #) when 'T : uint32 = (# "ceq" x y : bool #) when 'T : uint64 = (# "ceq" x y : bool #) when 'T : nativeint = (# "ceq" x y : bool #) when 'T : unativeint = (# "ceq" x y : bool #) when 'T : float = if not (# "ceq" x x : bool #) && not (# "ceq" y y : bool #) then true else (# "ceq" x y : bool #) when 'T : float32 = if not (# "ceq" x x : bool #) && not (# "ceq" y y : bool #) then true else (# "ceq" x y : bool #) when 'T : char = (# "ceq" x y : bool #) when 'T : string = System.String.Equals((# "" x : string #),(# "" y : string #)) when ^T : decimal = System.Decimal.op_Equality((# "" x:decimal #), (# "" y:decimal #)) let inline GenericInequalityFast (x:'T) (y:'T) = (not(GenericEqualityFast x y) : bool) let inline GenericInequalityERFast (x:'T) (y:'T) = (not(GenericEqualityERFast x y) : bool) //------------------------------------------------------------------------- // HASHING //------------------------------------------------------------------------- let defaultHashNodes = 18 type CountLimitedHasher(sz:int) = [] val mutable nodeCount : int member x.Fresh() = if (System.Threading.Interlocked.CompareExchange(&(x.nodeCount), sz, 0) = 0) then x else new CountLimitedHasher(sz) interface IEqualityComparer type UnlimitedHasherER() = interface IEqualityComparer type UnlimitedHasher() = interface IEqualityComparer let fsUnlimitedHasherER = UnlimitedHasherER() let fsUnlimitedHasher = UnlimitedHasher() let inline HashCombine nr x y = (x <<< 1) + y + 631 * nr let GenericHashObjArray (iec : System.Collections.IEqualityComparer) (x: obj[]) : int = let len = x.Length let mutable i = len - 1 if i > defaultHashNodes then i <- defaultHashNodes // limit the hash let mutable acc = 0 while (i >= 0) do // NOTE: GenericHash* call decreases nr acc <- HashCombine i acc (iec.GetHashCode(x.GetValue(i))); i <- i - 1 acc // optimized case - byte arrays let GenericHashByteArray (x: byte[]) : int = let len = length x let mutable i = len - 1 if i > defaultHashNodes then i <- defaultHashNodes // limit the hash let mutable acc = 0 while (i >= 0) do acc <- HashCombine i acc (intOfByte (get x i)); i <- i - 1 acc // optimized case - int arrays let GenericHashInt32Array (x: int[]) : int = let len = length x let mutable i = len - 1 if i > defaultHashNodes then i <- defaultHashNodes // limit the hash let mutable acc = 0 while (i >= 0) do acc <- HashCombine i acc (get x i); i <- i - 1 acc // optimized case - int arrays let GenericHashInt64Array (x: int64[]) : int = let len = length x let mutable i = len - 1 if i > defaultHashNodes then i <- defaultHashNodes // limit the hash let mutable acc = 0 while (i >= 0) do acc <- HashCombine i acc (int32 (get x i)); i <- i - 1 acc // special case - arrays do not by default have a decent structural hashing function let GenericHashArbArray (iec : System.Collections.IEqualityComparer) (x: System.Array) : int = match x.Rank with | 1 -> let b = x.GetLowerBound(0) let len = x.Length let mutable i = b + len - 1 if i > b + defaultHashNodes then i <- b + defaultHashNodes // limit the hash let mutable acc = 0 while (i >= b) do // NOTE: GenericHash* call decreases nr acc <- HashCombine i acc (iec.GetHashCode(x.GetValue(i))); i <- i - 1 acc | _ -> HashCombine 10 (x.GetLength(0)) (x.GetLength(1)) // Core implementation of structural hashing. Search for the IStructuralHash interface. // Arrays and strings are structurally hashed through a separate technique. // Objects which do not support this interface get hashed using a virtual // call to the standard Object::GetStructuralHashCode(). let rec GenericHashParamObj (iec : System.Collections.IEqualityComparer) (x: obj) : int = match x with | null -> 0 | (:? System.Array as a) -> match a with | :? (obj[]) as oa -> GenericHashObjArray iec oa | :? (byte[]) as ba -> GenericHashByteArray ba | :? (int[]) as ba -> GenericHashInt32Array ba | :? (int64[]) as ba -> GenericHashInt64Array ba | _ -> GenericHashArbArray iec a // REVIEW: System.Array implements IStructuralEquatable in Dev10 | :? IStructuralEquatable as a -> a.GetHashCode(iec) | _ -> x.GetHashCode() // optimized case - hash on things compatible with obj[] type CountLimitedHasher with interface System.Collections.IEqualityComparer with override iec.Equals(x:obj,y:obj) = GenericEqualityObj false iec (x,y) override iec.GetHashCode(x:obj) = iec.nodeCount <- iec.nodeCount - 1 if iec.nodeCount > 0 then GenericHashParamObj iec x else -1 type UnlimitedHasherER with interface System.Collections.IEqualityComparer with override iec.Equals(x:obj,y:obj) = GenericEqualityObj true iec (x,y) override iec.GetHashCode(x:obj) = GenericHashParamObj iec x type UnlimitedHasher with interface System.Collections.IEqualityComparer with override iec.Equals(x:obj,y:obj) = GenericEqualityObj false iec (x,y) override iec.GetHashCode(x:obj) = GenericHashParamObj iec x // Represents an call to structural hashing that was not optimized by static conditionals. // NOTE: compiler/optimizer is aware of this function and optimizes calls to it in many situations let GenericHashIntrinsic x = GenericHashParamObj fsUnlimitedHasher (box(x)) let LimitedGenericHashIntrinsic limit x = GenericHashParamObj (CountLimitedHasher(limit)) (box(x)) // Represents a recursive call to structural hashing that was not optimized by static conditionals. // For unoptimized recursive calls we fetch the generic hasher let GenericHashWithComparerIntrinsic<'T> (comp : System.Collections.IEqualityComparer) (x : 'T) : int = GenericHashParamObj comp (box(x)) /// Core entry into structural hashing. Hash to a given depth limit. let inline GenericHashWithComparerFast (comp : System.Collections.IEqualityComparer) (x:'T) : int = GenericHashWithComparerIntrinsic comp x when 'T : bool = (# "" x : int #) when 'T : int = (# "" x : int #) when 'T : int32 = (# "" x : int #) when 'T : byte = (# "" x : int #) when 'T : uint32 = (# "" x : int #) when 'T : string = match (# "" x : obj #) with | null -> 0 | _ -> (# "call instance int32 [mscorlib]System.String:: GetHashCode()" x : int #) /// Core entry into structural hashing. Hash to a given depth limit. let inline GenericHashFast (x:'T) : int = GenericHashIntrinsic x when 'T : bool = (# "" x : int #) when 'T : int = (# "" x : int #) when 'T : int32 = (# "" x : int #) when 'T : byte = (# "" x : int #) when 'T : uint32 = (# "" x : int #) when 'T : string = match (# "" x : obj #) with | null -> 0 | _ -> (# "call instance int32 [mscorlib]System.String:: GetHashCode()" x : int #) /// Core entry into structural hashing. Hash to a given depth limit. let inline GenericLimitedHashFast (limit:int) (x:'T) : int = LimitedGenericHashIntrinsic limit x when 'T : bool = (# "" x : int #) when 'T : int = (# "" x : int #) when 'T : int32 = (# "" x : int #) when 'T : byte = (# "" x : int #) when 'T : uint32 = (# "" x : int #) when 'T : string = match (# "" x : obj #) with | null -> 0 | _ -> (# "call instance int32 [mscorlib]System.String:: GetHashCode()" x : int #) let inline FastHashTuple2 (comparer:System.Collections.IEqualityComparer) (x1,x2) = TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x1) (GenericHashWithComparerFast comparer x2) let inline FastHashTuple3 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3) = TupleUtils.combineTupleHashes (TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x1) (GenericHashWithComparerFast comparer x2)) (GenericHashWithComparerFast comparer x3) let inline FastHashTuple4 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3,x4) = TupleUtils.combineTupleHashes (TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x1) (GenericHashWithComparerFast comparer x2)) (TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x3) (GenericHashWithComparerFast comparer x4)) let inline FastHashTuple5 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3,x4,x5) = TupleUtils.combineTupleHashes (TupleUtils.combineTupleHashes (TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x1) (GenericHashWithComparerFast comparer x2)) (TupleUtils.combineTupleHashes (GenericHashWithComparerFast comparer x3) (GenericHashWithComparerFast comparer x4))) (GenericHashWithComparerFast comparer x5) // Note: because these FastEqualsTupleN functions are devirtualized by (=), they have PER semantics let inline FastEqualsTuple2 (comparer:System.Collections.IEqualityComparer) (x1,x2) (y1,y2) = GenericEqualityWithComparerFast comparer x1 y1 && GenericEqualityWithComparerFast comparer x2 y2 let inline FastEqualsTuple3 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3) (y1,y2,y3) = GenericEqualityWithComparerFast comparer x1 y1 && GenericEqualityWithComparerFast comparer x2 y2 && GenericEqualityWithComparerFast comparer x3 y3 let inline FastEqualsTuple4 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3,x4) (y1,y2,y3,y4) = GenericEqualityWithComparerFast comparer x1 y1 && GenericEqualityWithComparerFast comparer x2 y2 && GenericEqualityWithComparerFast comparer x3 y3 && GenericEqualityWithComparerFast comparer x4 y4 let inline FastEqualsTuple5 (comparer:System.Collections.IEqualityComparer) (x1,x2,x3,x4,x5) (y1,y2,y3,y4,y5) = GenericEqualityWithComparerFast comparer x1 y1 && GenericEqualityWithComparerFast comparer x2 y2 && GenericEqualityWithComparerFast comparer x3 y3 && GenericEqualityWithComparerFast comparer x4 y4 && GenericEqualityWithComparerFast comparer x5 y5 let inline FastCompareTuple2 (comparer:System.Collections.IComparer) (x1,x2) (y1,y2) = let n = GenericComparisonWithComparerFast comparer x1 y1 if n <> 0 then n else GenericComparisonWithComparerFast comparer x2 y2 let inline FastCompareTuple3 (comparer:System.Collections.IComparer) (x1,x2,x3) (y1,y2,y3) = let n = GenericComparisonWithComparerFast comparer x1 y1 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x2 y2 if n <> 0 then n else GenericComparisonWithComparerFast comparer x3 y3 let inline FastCompareTuple4 (comparer:System.Collections.IComparer) (x1,x2,x3,x4) (y1,y2,y3,y4) = let n = GenericComparisonWithComparerFast comparer x1 y1 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x2 y2 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x3 y3 if n <> 0 then n else GenericComparisonWithComparerFast comparer x4 y4 let inline FastCompareTuple5 (comparer:System.Collections.IComparer) (x1,x2,x3,x4,x5) (y1,y2,y3,y4,y5) = let n = GenericComparisonWithComparerFast comparer x1 y1 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x2 y2 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x3 y3 if n <> 0 then n else let n = GenericComparisonWithComparerFast comparer x4 y4 if n <> 0 then n else GenericComparisonWithComparerFast comparer x5 y5 let inline GenericEquality x y = HashCompare.GenericEqualityFast x y let inline GenericEqualityER x y = HashCompare.GenericEqualityERFast x y let inline GenericEqualityWithComparer comp x y = HashCompare.GenericEqualityWithComparerFast comp x y let inline GenericComparison x y = HashCompare.GenericComparisonFast x y let inline GenericComparisonWithComparer comp x y = HashCompare.GenericComparisonWithComparerFast comp x y let inline GenericLessThan x y = HashCompare.GenericLessThanFast x y let inline GenericGreaterThan x y = HashCompare.GenericGreaterThanFast x y let inline GenericLessOrEqual x y = HashCompare.GenericLessOrEqualFast x y let inline GenericGreaterOrEqual x y = HashCompare.GenericGreaterOrEqualFast x y let inline retype<'T,'U> (x:'T) : 'U = (# "" x : 'U #) let inline GenericMinimum (x:'T) (y:'T) = if HashCompare.GenericLessThanFast x y then x else y when 'T : float = (System.Math.Min : float * float -> float)(retype<_,float> x, retype<_,float> y) when 'T : float32 = (System.Math.Min : float32 * float32 -> float32)(retype<_,float32> x, retype<_,float32> y) let inline GenericMaximum (x:'T) (y:'T) = if HashCompare.GenericLessThanFast x y then y else x when 'T : float = (System.Math.Max : float * float -> float)(retype<_,float> x, retype<_,float> y) when 'T : float32 = (System.Math.Max : float32 * float32 -> float32)(retype<_,float32> x, retype<_,float32> y) let inline PhysicalEquality x y = HashCompare.PhysicalEqualityFast x y let inline PhysicalHash x = HashCompare.PhysicalHashFast x let GenericComparer = HashCompare.fsComparerNoThrow :> System.Collections.IComparer let GenericEqualityComparer = HashCompare.fsUnlimitedHasher :> System.Collections.IEqualityComparer let GenericEqualityERComparer = HashCompare.fsUnlimitedHasherER :> System.Collections.IEqualityComparer let inline GenericHash x = HashCompare.GenericHashFast x let inline GenericLimitedHash limit x = HashCompare.GenericLimitedHashFast limit x let inline GenericHashWithComparer comp x = HashCompare.GenericHashWithComparerFast comp x let inline MakeGenericEqualityComparer<'T>() = // type-specialize some common cases to generate more efficient functions { new System.Collections.Generic.IEqualityComparer<'T> with member self.GetHashCode(x) = GenericHash x member self.Equals(x,y) = GenericEquality x y } let inline MakeGenericLimitedEqualityComparer<'T>(limit:int) = // type-specialize some common cases to generate more efficient functions { new System.Collections.Generic.IEqualityComparer<'T> with member self.GetHashCode(x) = GenericLimitedHash limit x member self.Equals(x,y) = GenericEquality x y } (* let CharIEquality = MakeGenericEqualityComparer() let StringIEquality = MakeGenericEqualityComparer() let SByteIEquality = MakeGenericEqualityComparer() let Int16IEquality = MakeGenericEqualityComparer() let Int32IEquality = MakeGenericEqualityComparer() let Int64IEquality = MakeGenericEqualityComparer() let IntPtrIEquality = MakeGenericEqualityComparer() let ByteIEquality = MakeGenericEqualityComparer() let UInt16IEquality = MakeGenericEqualityComparer() let UInt32IEquality = MakeGenericEqualityComparer() let UInt64IEquality = MakeGenericEqualityComparer() let UIntPtrIEquality = MakeGenericEqualityComparer() let FloatIEquality = MakeGenericEqualityComparer() let Float32IEquality = MakeGenericEqualityComparer() let DecimalIEquality = MakeGenericEqualityComparer() [] type FastGenericEqualityComparerTable<'T>() = static let f : System.Collections.Generic.IEqualityComparer<'T> = match typeof<'T> with | ty when ty.Equals(typeof) -> unboxPrim (box ByteIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box CharIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box SByteIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box Int16IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box Int32IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box Int64IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box IntPtrIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box UInt16IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box UInt32IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box UInt64IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box UIntPtrIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box FloatIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box Float32IEquality) | ty when ty.Equals(typeof) -> unboxPrim (box DecimalIEquality) | ty when ty.Equals(typeof) -> unboxPrim (box StringIEquality) | _ -> MakeGenericEqualityComparer<'T>() static member Function : System.Collections.Generic.IEqualityComparer<'T> = f let FastGenericEqualityComparer<'T> = FastGenericEqualityComparerTable<'T>.Function *) let inline FastGenericEqualityComparer<'T> = MakeGenericEqualityComparer<'T>() let inline FastLimitedGenericEqualityComparer<'T>(limit) = MakeGenericLimitedEqualityComparer<'T>(limit) let inline MakeFastGenericComparer<'T>() = { new System.Collections.Generic.IComparer<'T> with member __.Compare(x,y) = GenericComparison x y } let CharComparer = MakeFastGenericComparer() let StringComparer = MakeFastGenericComparer() let SByteComparer = MakeFastGenericComparer() let Int16Comparer = MakeFastGenericComparer() let Int32Comparer = MakeFastGenericComparer() let Int64Comparer = MakeFastGenericComparer() let IntPtrComparer = MakeFastGenericComparer() let ByteComparer = MakeFastGenericComparer() let UInt16Comparer = MakeFastGenericComparer() let UInt32Comparer = MakeFastGenericComparer() let UInt64Comparer = MakeFastGenericComparer() let UIntPtrComparer = MakeFastGenericComparer() let FloatComparer = MakeFastGenericComparer() let Float32Comparer = MakeFastGenericComparer() let DecimalComparer = MakeFastGenericComparer() /// Use a type-indexed table to ensure we only create a single FastStructuralComparison function /// for each type [] type FastGenericComparerTable<'T>() = static let fCanBeNull : System.Collections.Generic.IComparer<'T> = match typeof<'T> with | ty when ty.Equals(typeof) -> unboxPrim (box IntPtrComparer) | ty when ty.Equals(typeof) -> unboxPrim (box UIntPtrComparer) // The CLI implementation of mscorlib optimizes array sorting // when the comparer is either null or precisely // reference-equals to System.Collections.Generic.Comparer<'T>.Default. // This is an indication that a "fast" array sorting helper can be used. // // For all the types listed below, F# generic comparison // coincides precisely with System.Collections.Generic.Comparer<'T>.Default. // // ALSO: This must only be null if the values do not have identity, e.g. integers. // That is, an unstable sort of the array must be the semantically the // same as a stable sort of the array. See Array.stableSortInPlace. // // REVIEW: in a future version we could extend this to include additional types | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> null | ty when ty.Equals(typeof) -> unboxPrim (box StringComparer) | _ -> MakeFastGenericComparer<'T>() static let f : System.Collections.Generic.IComparer<'T> = match typeof<'T> with | ty when ty.Equals(typeof) -> unboxPrim (box ByteComparer) | ty when ty.Equals(typeof) -> unboxPrim (box CharComparer) | ty when ty.Equals(typeof) -> unboxPrim (box SByteComparer) | ty when ty.Equals(typeof) -> unboxPrim (box Int16Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box Int32Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box Int64Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box IntPtrComparer) | ty when ty.Equals(typeof) -> unboxPrim (box UInt16Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box UInt32Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box UInt64Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box UIntPtrComparer) | ty when ty.Equals(typeof) -> unboxPrim (box FloatComparer) | ty when ty.Equals(typeof) -> unboxPrim (box Float32Comparer) | ty when ty.Equals(typeof) -> unboxPrim (box DecimalComparer) | ty when ty.Equals(typeof) -> unboxPrim (box StringComparer) | _ -> // Review: There are situations where we should be able // to return System.Collections.Generic.Comparer<'T>.Default here. // For example, for any value type. MakeFastGenericComparer<'T>() static member Value : System.Collections.Generic.IComparer<'T> = f static member ValueCanBeNullIfDefaultSemantics : System.Collections.Generic.IComparer<'T> = fCanBeNull let FastGenericComparer<'T> = FastGenericComparerTable<'T>.Value let FastGenericComparerCanBeNull<'T> = FastGenericComparerTable<'T>.ValueCanBeNullIfDefaultSemantics let inline EnumOfValue (u : 'u) : 'e when 'e : enum<'u> = unboxPrim<'e>(box u) when 'e : 'e = (retype u : 'e) let inline EnumToValue (e : 'e) : 'u when 'e : enum<'u> = unboxPrim<'u>(box e) // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type when 'e : 'e = (retype e : 'u) let inline FloatWithMeasure (f : float) : float<'Measure> = retype f let inline Float32WithMeasure (f : float32) : float32<'Measure> = retype f let inline DecimalWithMeasure (f : decimal) : decimal<'Measure> = retype f let inline Int32WithMeasure (f : int) : int<'Measure> = retype f let inline Int16WithMeasure (f : int16) : int16<'Measure> = retype f let inline SByteWithMeasure (f : sbyte) : sbyte<'Measure> = retype f let inline Int64WithMeasure (f : int64) : int64<'Measure> = retype f let inline formatError() = raise (new System.FormatException(SR.GetString(SR.badFormatString))) // Parse formats // DDDDDDDD // -DDDDDDDD // 0xHHHHHHHH // -0xHHHHHHHH // 0bBBBBBBB // -0bBBBBBBB // 0oOOOOOOO // -0oOOOOOOO // without leading/trailing spaces. /// // Note: Parse defaults to NumberStyles.Integer = AllowLeadingWhite ||| AllowTrailingWhite ||| AllowLeadingSign // However, that is not the required behaviour of 'int32', 'int64' etc. when used on string // arguments: we explicitly disallow AllowLeadingWhite ||| AllowTrailingWhite // and only request AllowLeadingSign. let isOXB c = #if FX_NO_TO_LOWER_INVARIANT let c = System.Char.ToLower c #else let c = System.Char.ToLowerInvariant c #endif charEq c 'x' || charEq c 'o' || charEq c 'b' let is0OXB (s:string) p l = l >= p + 2 && charEq (s.Chars(p)) '0' && isOXB (s.Chars(p+1)) let get0OXB (s:string) (p:byref) l = if is0OXB s p l #if FX_NO_TO_LOWER_INVARIANT then let r = System.Char.ToLower(s.Chars(p+1) ) in p <- p + 2; r #else then let r = System.Char.ToLowerInvariant(s.Chars(p+1)) in p <- p + 2; r #endif else 'd' let getSign32 (s:string) (p:byref) l = if (l >= p + 1 && charEq (s.Chars(p)) '-') then p <- p + 1; -1 else 1 let getSign64 (s:string) (p:byref) l = if (l >= p + 1 && charEq (s.Chars(p)) '-') then p <- p + 1; -1L else 1L let parseOctalUInt64 (s:string) p l = let rec parse n acc = if n < l then parse (n+1) (acc *.. 8UL +.. (let c = s.Chars(n) in if c >=... '0' && c <=... '7' then Convert.ToUInt64(c) -.. Convert.ToUInt64('0') else formatError())) else acc in parse p 0UL let parseBinaryUInt64 (s:string) p l = let rec parse n acc = if n < l then parse (n+1) (acc *.. 2UL +.. (match s.Chars(n) with '0' -> 0UL | '1' -> 1UL | _ -> formatError())) else acc in parse p 0UL let ParseUInt32 (s:string) = if System.Object.ReferenceEquals(s,null) then raise( new System.ArgumentNullException("s") ) let s = s.Trim() let l = s.Length let mutable p = 0 let specifier = get0OXB s &p l if p >= l then formatError() else match specifier with | 'x' -> UInt32.Parse( s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture) | 'b' -> Convert.ToUInt32(parseBinaryUInt64 s p l) | 'o' -> Convert.ToUInt32(parseOctalUInt64 s p l) | _ -> UInt32.Parse(s.Substring(p), NumberStyles.Integer, CultureInfo.InvariantCulture) in let inline int32OfUInt32 (x:uint32) = (# "" x : int32 #) let inline int64OfUInt64 (x:uint64) = (# "" x : int64 #) let ParseInt32 (s:string) = if System.Object.ReferenceEquals(s,null) then raise( new System.ArgumentNullException("s") ) let s = s.Trim() let l = s.Length let mutable p = 0 let sign = getSign32 s &p l let specifier = get0OXB s &p l if p >= l then formatError() else match Char.ToLower(specifier,CultureInfo.InvariantCulture(*FxCop:1304*)) with | 'x' -> sign * (int32OfUInt32 (Convert.ToUInt32(UInt64.Parse(s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture)))) | 'b' -> sign * (int32OfUInt32 (Convert.ToUInt32(parseBinaryUInt64 s p l))) | 'o' -> sign * (int32OfUInt32 (Convert.ToUInt32(parseOctalUInt64 s p l))) | _ -> Int32.Parse(s, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture) let ParseInt64 (s:string) = if System.Object.ReferenceEquals(s,null) then raise( new System.ArgumentNullException("s") ) let s = s.Trim() let l = s.Length let mutable p = 0 let sign = getSign64 s &p l let specifier = get0OXB s &p l if p >= l then formatError() else match Char.ToLower(specifier,CultureInfo.InvariantCulture(*FxCop:1304*)) with | 'x' -> sign *. Int64.Parse(s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture) | 'b' -> sign *. (int64OfUInt64 (parseBinaryUInt64 s p l)) | 'o' -> sign *. (int64OfUInt64 (parseOctalUInt64 s p l)) | _ -> Int64.Parse(s, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture) let ParseUInt64 (s:string) : uint64 = if System.Object.ReferenceEquals(s,null) then raise( new System.ArgumentNullException("s") ) let s = s.Trim() let l = s.Length let mutable p = 0 let specifier = get0OXB s &p l if p >= l then formatError() else match specifier with | 'x' -> UInt64.Parse(s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture) | 'b' -> parseBinaryUInt64 s p l | 'o' -> parseOctalUInt64 s p l | _ -> UInt64.Parse(s.Substring(p), NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture) [] type GenericZeroDynamicImplTable<'T>() = static let result : 'T = // The dynamic implementation let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<'T> (box 0y) elif aty.Equals(typeof) then unboxPrim<'T> (box 0s) elif aty.Equals(typeof) then unboxPrim<'T> (box 0) elif aty.Equals(typeof) then unboxPrim<'T> (box 0L) elif aty.Equals(typeof) then unboxPrim<'T> (box 0n) elif aty.Equals(typeof) then unboxPrim<'T> (box 0uy) elif aty.Equals(typeof) then unboxPrim<'T> (box 0us) elif aty.Equals(typeof) then unboxPrim<'T> (box 0u) elif aty.Equals(typeof) then unboxPrim<'T> (box 0UL) elif aty.Equals(typeof) then unboxPrim<'T> (box 0un) elif aty.Equals(typeof) then unboxPrim<'T> (box 0M) elif aty.Equals(typeof) then unboxPrim<'T> (box 0.0) elif aty.Equals(typeof) then unboxPrim<'T> (box 0.0f) else let pinfo = aty.GetProperty("Zero") unboxPrim<'T> (pinfo.GetValue(null,null)) static member Result : 'T = result [] type GenericOneDynamicImplTable<'T>() = static let result : 'T = // The dynamic implementation let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<'T> (box 1y) elif aty.Equals(typeof) then unboxPrim<'T> (box 1s) elif aty.Equals(typeof) then unboxPrim<'T> (box 1) elif aty.Equals(typeof) then unboxPrim<'T> (box 1L) elif aty.Equals(typeof) then unboxPrim<'T> (box 1n) elif aty.Equals(typeof) then unboxPrim<'T> (box 1uy) elif aty.Equals(typeof) then unboxPrim<'T> (box 1us) elif aty.Equals(typeof) then unboxPrim<'T> (box (retype 1us : char)) elif aty.Equals(typeof) then unboxPrim<'T> (box 1u) elif aty.Equals(typeof) then unboxPrim<'T> (box 1UL) elif aty.Equals(typeof) then unboxPrim<'T> (box 1un) elif aty.Equals(typeof) then unboxPrim<'T> (box 1M) elif aty.Equals(typeof) then unboxPrim<'T> (box 1.0) elif aty.Equals(typeof) then unboxPrim<'T> (box 1.0f) else let pinfo = aty.GetProperty("One") unboxPrim<'T> (pinfo.GetValue(null,null)) static member Result : 'T = result let GenericZeroDynamic< 'T >() : 'T = GenericZeroDynamicImplTable<'T>.Result let GenericOneDynamic< 'T >() : 'T = GenericOneDynamicImplTable<'T>.Result let inline GenericZero< ^T when ^T : (static member Zero : ^T) > : ^T = GenericZeroDynamic<(^T)>() when ^T : int32 = 0 when ^T : float = 0.0 when ^T : float32 = 0.0f when ^T : int64 = 0L when ^T : uint64 = 0UL when ^T : uint32 = 0ul when ^T : nativeint = 0n when ^T : unativeint = 0un when ^T : int16 = 0s when ^T : uint16 = 0us when ^T : sbyte = 0y when ^T : byte = 0uy when ^T : decimal = 0M // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type when ^T : ^T = (^T : (static member Zero : ^T) ()) let inline GenericOne< ^T when ^T : (static member One : ^T) > : ^T = GenericOneDynamic<(^T)>() when ^T : int32 = 1 when ^T : float = 1.0 when ^T : float32 = 1.0f when ^T : int64 = 1L when ^T : uint64 = 1UL when ^T : uint32 = 1ul when ^T : nativeint = 1n when ^T : unativeint = 1un when ^T : int16 = 1s when ^T : uint16 = 1us when ^T : char = (retype 1us : char) when ^T : sbyte = 1y when ^T : byte = 1uy when ^T : decimal = 1M // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type // That is, not in the generic implementation of '+' when ^T : ^T = (^T : (static member One : ^T) ()) [] type GenericDivideByIntDynamicImplTable<'T>() = static let result : ('T -> int -> 'T) = // The dynamic implementation let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_> (box (fun (x:decimal) (n:int) -> System.Decimal.Divide(x, System.Convert.ToDecimal(n)))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float) (n:int) -> (# "div" x ((# "conv.r8" n : float #)) : float #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float32) (n:int) -> (# "div" x ((# "conv.r4" n : float32 #)) : float32 #))) else match aty.GetMethod("DivideByInt",[| aty; typeof |]) with | null -> raise (NotSupportedException (SR.GetString(SR.dyInvDivByIntCoerce))) | m -> (fun x n -> unboxPrim<_> (m.Invoke(null,[| box x; box n |]))) static member Result : ('T -> int -> 'T) = result let DivideByIntDynamic<'T> x n = GenericDivideByIntDynamicImplTable<('T)>.Result x n let inline DivideByInt< ^T when ^T : (static member DivideByInt : ^T * int -> ^T) > (x:^T) (n:int) : ^T = DivideByIntDynamic<'T> x n when ^T : float = (# "div" x ((# "conv.r8" (n:int) : float #)) : float #) when ^T : float32 = (# "div" x ((# "conv.r4" (n:int) : float32 #)) : float32 #) when ^T : decimal = System.Decimal.Divide((retype x:decimal), System.Convert.ToDecimal(n)) when ^T : ^T = (^T : (static member DivideByInt : ^T * int -> ^T) (x, n)) // Dynamic implementation of addition operator resolution [] type AdditionDynamicImplTable<'T,'U,'V>() = static let impl : ('T -> 'U -> 'V) = // The dynamic implementation let aty = typeof<'T> let bty = typeof<'U> let cty = typeof<'V> let dyn() = let ameth = aty.GetMethod("op_Addition",[| aty; bty |]) let bmeth = if aty.Equals(bty) then null else bty.GetMethod("op_Addition",[| aty; bty |]) match ameth,bmeth with | null, null -> raise (NotSupportedException (SR.GetString(SR.dyInvOpAddCoerce))) | m,null | null,m -> (fun x y -> unboxPrim<_> (m.Invoke(null,[| box x; box y |]))) | _ -> raise (NotSupportedException (SR.GetString(SR.dyInvOpAddOverload))) if aty.Equals(bty) && bty.Equals(cty) then if aty.Equals(typeof) then unboxPrim<_> (box (fun (x:sbyte) (y:sbyte) -> (# "conv.i1" (# "add" x y : int32 #) : sbyte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int16) (y:int16) -> (# "conv.i2" (# "add" x y : int32 #) : int16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int32) (y:int32) -> (# "add" x y : int32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int64) (y:int64) -> (# "add" x y : int64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:nativeint) (y:nativeint) -> (# "add" x y : nativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:byte) (y:byte) -> (# "conv.u1" (# "add" x y : uint32 #) : byte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint16) (y:uint16) -> (# "conv.u2" (# "add" x y : uint32 #) : uint16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint32) (y:uint32) -> (# "add" x y : uint32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint64) (y:uint64) -> (# "add" x y : uint64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:unativeint) (y:unativeint) -> (# "add" x y : unativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float) (y:float) -> (# "add" x y : float #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float32) (y:float32) -> (# "add" x y : float32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:string) (y:string) -> System.String.Concat(x,y))) else dyn() else dyn() static member Impl : ('T -> 'U -> 'V) = impl let AdditionDynamic<'T,'U,'V> x n = AdditionDynamicImplTable<'T,'U,'V>.Impl x n // Dynamic implementation of checked addition operator resolution [] type CheckedAdditionDynamicImplTable<'T,'U,'V>() = static let impl : ('T -> 'U -> 'V) = // The dynamic implementation let aty = typeof<'T> let bty = typeof<'U> let cty = typeof<'V> let dyn() = let ameth = aty.GetMethod("op_Addition",[| aty; bty |]) let bmeth = if aty.Equals(bty) then null else bty.GetMethod("op_Addition",[| aty; bty |]) match ameth,bmeth with | null, null -> raise (NotSupportedException (SR.GetString(SR.dyInvOpAddCoerce))) | m,null | null,m -> (fun x y -> unboxPrim<_> (m.Invoke(null,[| box x; box y |]))) | _ -> raise (NotSupportedException (SR.GetString(SR.dyInvOpAddOverload))) if aty.Equals(bty) && bty.Equals(cty) then if aty.Equals(typeof) then unboxPrim<_> (box (fun (x:sbyte) (y:sbyte) -> (# "conv.ovf.i1" (# "add.ovf" x y : int32 #) : sbyte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int16) (y:int16) -> (# "conv.ovf.i2" (# "add.ovf" x y : int32 #) : int16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int32) (y:int32) -> (# "add.ovf" x y : int32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int64) (y:int64) -> (# "add.ovf" x y : int64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:nativeint) (y:nativeint) -> (# "add.ovf" x y : nativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:byte) (y:byte) -> (# "conv.ovf.u1.un" (# "add.ovf.un" x y : uint32 #) : byte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint16) (y:uint16) -> (# "conv.ovf.u2.un" (# "add.ovf.un" x y : uint32 #) : uint16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:char) (y:char) -> (# "conv.ovf.u2.un" (# "add.ovf.un" x y : uint32 #) : char #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint32) (y:uint32) -> (# "add.ovf.un" x y : uint32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint64) (y:uint64) -> (# "add.ovf.un" x y : uint64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:unativeint) (y:unativeint) -> (# "add.ovf.un" x y : unativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float) (y:float) -> (# "add" x y : float #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float32) (y:float32) -> (# "add" x y : float32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:string) (y:string) -> System.String.Concat(x,y))) else dyn() else dyn() static member Impl : ('T -> 'U -> 'V) = impl let CheckedAdditionDynamic<'T,'U,'V> x n = CheckedAdditionDynamicImplTable<'T,'U,'V>.Impl x n // Dynamic implementation of addition operator resolution [] type MultiplyDynamicImplTable<'T,'U,'V>() = static let impl : ('T -> 'U -> 'V) = // The dynamic implementation let aty = typeof<'T> let bty = typeof<'U> let cty = typeof<'V> let dyn() = let ameth = aty.GetMethod("op_Multiply",[| aty; bty |]) let bmeth = if aty.Equals(bty) then null else bty.GetMethod("op_Multiply",[| aty; bty |]) match ameth,bmeth with | null, null -> raise (NotSupportedException (SR.GetString(SR.dyInvOpMultCoerce))) | m,null | null,m -> (fun x y -> unboxPrim<_> (m.Invoke(null,[| box x; box y |]))) | _ -> raise (NotSupportedException (SR.GetString(SR.dyInvOpMultOverload))) if aty.Equals(bty) && bty.Equals(cty) then if aty.Equals(typeof) then unboxPrim<_> (box (fun (x:sbyte) (y:sbyte) -> (# "conv.i1" (# "mul" x y : int32 #) : sbyte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int16) (y:int16) -> (# "conv.i2" (# "mul" x y : int32 #) : int16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int32) (y:int32) -> (# "mul" x y : int32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int64) (y:int64) -> (# "mul" x y : int64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:nativeint) (y:nativeint) -> (# "mul" x y : nativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:byte) (y:byte) -> (# "conv.u1" (# "mul" x y : uint32 #) : byte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint16) (y:uint16) -> (# "conv.u2" (# "mul" x y : uint32 #) : uint16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint32) (y:uint32) -> (# "mul" x y : uint32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint64) (y:uint64) -> (# "mul" x y : uint64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:unativeint) (y:unativeint) -> (# "mul" x y : unativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float) (y:float) -> (# "mul" x y : float #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float32) (y:float32) -> (# "mul" x y : float32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:string) (y:string) -> System.String.Concat(x,y))) else dyn() else dyn() static member Impl : ('T -> 'U -> 'V) = impl let MultiplyDynamic<'T,'U,'V> x n = MultiplyDynamicImplTable<'T,'U,'V>.Impl x n // Dynamic implementation of checked addition operator resolution [] type CheckedMultiplyDynamicImplTable<'T,'U,'V>() = static let impl : ('T -> 'U -> 'V) = // The dynamic implementation let aty = typeof<'T> let bty = typeof<'U> let cty = typeof<'V> let dyn() = let ameth = aty.GetMethod("op_Multiply",[| aty; bty |]) let bmeth = if aty.Equals(bty) then null else bty.GetMethod("op_Multiply",[| aty; bty |]) match ameth,bmeth with | null, null -> raise (NotSupportedException (SR.GetString(SR.dyInvOpMultCoerce))) | m,null | null,m -> (fun x y -> unboxPrim<_> (m.Invoke(null,[| box x; box y |]))) | _ -> raise (NotSupportedException (SR.GetString(SR.dyInvOpMultOverload))) if aty.Equals(bty) && bty.Equals(cty) then if aty.Equals(typeof) then unboxPrim<_> (box (fun (x:sbyte) (y:sbyte) -> (# "conv.ovf.i1" (# "mul.ovf" x y : int32 #) : sbyte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int16) (y:int16) -> (# "conv.ovf.i2" (# "mul.ovf" x y : int32 #) : int16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int32) (y:int32) -> (# "mul.ovf" x y : int32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:int64) (y:int64) -> (# "mul.ovf" x y : int64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:nativeint) (y:nativeint) -> (# "mul.ovf" x y : nativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:byte) (y:byte) -> (# "conv.ovf.u1.un" (# "mul.ovf.un" x y : uint32 #) : byte #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint16) (y:uint16) -> (# "conv.ovf.u2.un" (# "mul.ovf.un" x y : uint16 #) : uint16 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint32) (y:uint32) -> (# "mul.ovf.un" x y : uint32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:uint64) (y:uint64) -> (# "mul.ovf.un" x y : uint64 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:unativeint) (y:unativeint) -> (# "mul.ovf.un" x y : unativeint #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float) (y:float) -> (# "mul" x y : float #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:float32) (y:float32) -> (# "mul" x y : float32 #))) elif aty.Equals(typeof) then unboxPrim<_> (box (fun (x:string) (y:string) -> System.String.Concat(x,y))) else dyn() else dyn() static member Impl : ('T -> 'U -> 'V) = impl let CheckedMultiplyDynamic<'T,'U,'V> x n = CheckedMultiplyDynamicImplTable<'T,'U,'V>.Impl x n #if TARGET_SILVERLIGHT_5_0 type internal PrivateEnvironment = static member internal GetResourceString(name:string,_arguments:obj[]) = name static member internal GetResourceString(name:string) = name #endif #if FX_NO_LAZY type internal PrivateEnvironment = static member internal GetResourceString(name:string,_arguments:obj[]) = name static member internal GetResourceString(name:string) = name #if USE_FX_40_LAZY_ON_FX_20 type internal PrivateFunc<'T> = delegate of unit -> 'T type internal PrivateFunc<'T,'TResult> = delegate of 'T -> 'TResult type internal PrivateMonitor = static member internal Enter(lockObj: obj, lockTaken: byref) = System.Threading.Monitor.Enter(lockObj); lockTaken <- true static member internal Exit(lockObj: obj) = System.Threading.Monitor.Exit(lockObj) static member internal GetResourceString(name:string) = name #endif #else #endif namespace System open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text open Microsoft.FSharp.Core open Microsoft.FSharp.Core.BasicInlinedOperations open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions #if FX_NO_TUPLE type Tuple<'T1> with interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1> = other :?> Tuple<'T1> comparer.Compare((box t.Item1),(box t2.Item1)) interface IStructuralEquatable with override t.Equals(other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1> = other :?> Tuple<'T1> comparer.Equals((box t.Item1),(box t2.Item1)) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = comparer.GetHashCode(t.Item1) interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other,(HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2> with override x.ToString() = let sb = StringBuilder(10) in sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2> = other :?> Tuple<'T1,'T2> HashCompare.FastCompareTuple2 comparer (retype t : ('T1 * 'T2)) (retype t2) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2> = other :?> Tuple<'T1,'T2> HashCompare.FastEqualsTuple2 comparer (retype t : ('T1 * 'T2)) (retype t2) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = HashCompare.FastHashTuple2 comparer (retype t : ('T1 * 'T2)) interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3> with override x.ToString() = let sb = StringBuilder(10) in sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3> = other :?> Tuple<'T1,'T2,'T3> HashCompare.FastCompareTuple3 comparer (retype t : ('T1 * 'T2 * 'T3)) (retype t2) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3> = other :?> Tuple<'T1,'T2,'T3> HashCompare.FastEqualsTuple3 comparer (retype t : ('T1 * 'T2 * 'T3)) (retype t2) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = HashCompare.FastHashTuple3 comparer (retype t : ('T1 * 'T2 * 'T3)) interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3,'T4> with override x.ToString() = let sb = StringBuilder(10) in sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(",") .Append(box(x.Item4).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4> = other :?> Tuple<'T1,'T2,'T3,'T4> HashCompare.FastCompareTuple4 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4)) (retype t2) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4> = other :?> Tuple<'T1,'T2,'T3,'T4> HashCompare.FastEqualsTuple4 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4)) (retype t2) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = HashCompare.FastHashTuple4 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4)) interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3,'T4,'T5> with override x.ToString() = let sb = StringBuilder(10) in sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(",") .Append(box(x.Item4).ToString()).Append(",") .Append(box(x.Item5).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5> HashCompare.FastCompareTuple5 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4 * 'T5)) (retype t2) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5> HashCompare.FastEqualsTuple5 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4 * 'T5)) (retype t2) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = HashCompare.FastHashTuple5 comparer (retype t : ('T1 * 'T2 * 'T3 * 'T4 * 'T5)) interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3,'T4,'T5,'T6> with override x.ToString() = let sb = StringBuilder(10) sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(",") .Append(box(x.Item4).ToString()).Append(",") .Append(box(x.Item5).ToString()).Append(",") .Append(box(x.Item6).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6> let mutable n = comparer.Compare((box t.Item1),(box t2.Item1)) if n <> 0 then n else n <- comparer.Compare((box t.Item2), (box t2.Item2)) ; if n <> 0 then n else n <- comparer.Compare((box t.Item3), (box t2.Item3)); if n <> 0 then n else n <- comparer.Compare((box t.Item4), (box t2.Item4)); if n <> 0 then n else n <- comparer.Compare((box t.Item5), (box t2.Item5)); if n <> 0 then n else comparer.Compare((box t.Item6), (box t2.Item6)) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6> comparer.Equals((box t.Item1),(box t2.Item1)) && comparer.Equals((box t.Item2),(box t2.Item2)) && comparer.Equals((box t.Item3),(box t2.Item3)) && comparer.Equals((box t.Item4),(box t2.Item4)) && comparer.Equals((box t.Item5),(box t2.Item5)) && comparer.Equals((box t.Item6),(box t2.Item6)) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = TupleUtils.combineTupleHashCodes [|(comparer.GetHashCode(t.Item1)) ; (comparer.GetHashCode(t.Item2)) ; (comparer.GetHashCode(t.Item3)) ; (comparer.GetHashCode(t.Item4)) ; (comparer.GetHashCode(t.Item5)) ; (comparer.GetHashCode(t.Item6))|] interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> with override x.ToString() = let sb = StringBuilder(10) sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(",") .Append(box(x.Item4).ToString()).Append(",") .Append(box(x.Item5).ToString()).Append(",") .Append(box(x.Item6).ToString()).Append(",") .Append(box(x.Item7).ToString()).Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> let mutable n = comparer.Compare((box t.Item1),(box t2.Item1)) if n <> 0 then n else n <- comparer.Compare((box t.Item2), (box t2.Item2)) ; if n <> 0 then n else n <- comparer.Compare((box t.Item3), (box t2.Item3)); if n <> 0 then n else n <- comparer.Compare((box t.Item4), (box t2.Item4)); if n <> 0 then n else n <- comparer.Compare((box t.Item5), (box t2.Item5)); if n <> 0 then n else n <- comparer.Compare((box t.Item6), (box t2.Item6)); if n <> 0 then n else comparer.Compare((box t.Item7), (box t2.Item7)) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7> comparer.Equals((box t.Item1),(box t2.Item1)) && comparer.Equals((box t.Item2),(box t2.Item2)) && comparer.Equals((box t.Item3),(box t2.Item3)) && comparer.Equals((box t.Item4),(box t2.Item4)) && comparer.Equals((box t.Item5),(box t2.Item5)) && comparer.Equals((box t.Item6),(box t2.Item6)) && comparer.Equals((box t.Item7),(box t2.Item7)) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = TupleUtils.combineTupleHashCodes [|(comparer.GetHashCode(t.Item1)) ; (comparer.GetHashCode(t.Item2)) ; (comparer.GetHashCode(t.Item3)) ; (comparer.GetHashCode(t.Item4)) ; (comparer.GetHashCode(t.Item5)) ; (comparer.GetHashCode(t.Item6)) ; (comparer.GetHashCode(t.Item7))|] interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) type Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> with override x.ToString() = let sb = StringBuilder(10) sb.Append("(").Append(box(x.Item1).ToString()).Append(",") .Append(box(x.Item2).ToString()).Append(",") .Append(box(x.Item3).ToString()).Append(",") .Append(box(x.Item4).ToString()).Append(",") .Append(box(x.Item5).ToString()).Append(",") .Append(box(x.Item6).ToString()).Append(",") .Append(box(x.Item7).ToString()).Append(",") .Append("...").Append(")").ToString() interface IStructuralComparable with override t.CompareTo (other:obj,comparer:System.Collections.IComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> let mutable n = comparer.Compare((box t.Item1),(box t2.Item1)) if n <> 0 then n else n <- comparer.Compare((box t.Item2), (box t2.Item2)) ; if n <> 0 then n else n <- comparer.Compare((box t.Item3), (box t2.Item3)); if n <> 0 then n else n <- comparer.Compare((box t.Item4), (box t2.Item4)); if n <> 0 then n else n <- comparer.Compare((box t.Item5), (box t2.Item5)); if n <> 0 then n else n <- comparer.Compare((box t.Item6), (box t2.Item6)); if n <> 0 then n else n <- comparer.Compare((box t.Item7), (box t2.Item7)) if n <> 0 then n else comparer.Compare((box t.Rest), (box t2.Rest)) interface IStructuralEquatable with override t.Equals (other:obj,comparer:System.Collections.IEqualityComparer) = let t2 : Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> = other :?> Tuple<'T1,'T2,'T3,'T4,'T5,'T6,'T7,'TRest> comparer.Equals((box t.Item1),(box t2.Item1)) && comparer.Equals((box t.Item2),(box t2.Item2)) && comparer.Equals((box t.Item3),(box t2.Item3)) && comparer.Equals((box t.Item4),(box t2.Item4)) && comparer.Equals((box t.Item5),(box t2.Item5)) && comparer.Equals((box t.Item6),(box t2.Item6)) && comparer.Equals((box t.Item7),(box t2.Item7)) && comparer.Equals((box t.Rest),(box t2.Rest)) override t.GetHashCode(comparer:System.Collections.IEqualityComparer) = TupleUtils.combineTupleHashCodes [|(comparer.GetHashCode(t.Item1)) ; (comparer.GetHashCode(t.Item2)) ; (comparer.GetHashCode(t.Item3)) ; (comparer.GetHashCode(t.Item4)) ; (comparer.GetHashCode(t.Item5)) ; (comparer.GetHashCode(t.Item6)) ; (comparer.GetHashCode(t.Item7)) ; (comparer.GetHashCode(t.Rest))|] interface IComparable with override t.CompareTo(other:obj) = (t :> IStructuralComparable).CompareTo(other, (HashCompare.fsComparer :> System.Collections.IComparer)) override t.GetHashCode() = (t :> IStructuralEquatable).GetHashCode(HashCompare.fsUnlimitedHasher) override t.Equals(other:obj) = (t :> IStructuralEquatable).Equals(other,HashCompare.fsEqualityComparer) #else #endif namespace Microsoft.FSharp.Core open System open System.Collections open System.Collections.Generic open System.Diagnostics open System.Globalization open System.Text open Microsoft.FSharp.Core.BasicInlinedOperations open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions [] [] type Choice<'T1,'T2> = | Choice1Of2 of 'T1 | Choice2Of2 of 'T2 [] [] type Choice<'T1,'T2,'T3> = | Choice1Of3 of 'T1 | Choice2Of3 of 'T2 | Choice3Of3 of 'T3 [] [] type Choice<'T1,'T2,'T3,'T4> = | Choice1Of4 of 'T1 | Choice2Of4 of 'T2 | Choice3Of4 of 'T3 | Choice4Of4 of 'T4 [] [] type Choice<'T1,'T2,'T3,'T4,'T5> = | Choice1Of5 of 'T1 | Choice2Of5 of 'T2 | Choice3Of5 of 'T3 | Choice4Of5 of 'T4 | Choice5Of5 of 'T5 [] [] type Choice<'T1,'T2,'T3,'T4,'T5,'T6> = | Choice1Of6 of 'T1 | Choice2Of6 of 'T2 | Choice3Of6 of 'T3 | Choice4Of6 of 'T4 | Choice5Of6 of 'T5 | Choice6Of6 of 'T6 [] [] type Choice<'T1,'T2,'T3,'T4,'T5,'T6,'T7> = | Choice1Of7 of 'T1 | Choice2Of7 of 'T2 | Choice3Of7 of 'T3 | Choice4Of7 of 'T4 | Choice5Of7 of 'T5 | Choice6Of7 of 'T6 | Choice7Of7 of 'T7 //------------------------------------------------------------------------- // F#-specific Exceptions [] exception MatchFailureException of string * int * int with override x.Message = SR.GetString(SR.matchCasesIncomplete) //------------------------------------------------------------------------- // Function Values [] type FSharpTypeFunc() = abstract Specialize<'T> : unit -> obj [] type FSharpFunc<'T,'Res>() = abstract Invoke : 'T -> 'Res module OptimizedClosures = [] type FSharpFunc<'T,'U,'V>() = inherit FSharpFunc<'T,('U -> 'V)>() abstract Invoke : 'T * 'U -> 'V override f.Invoke(t) = (fun u -> f.Invoke(t,u)) static member Adapt(f : 'T -> 'U -> 'V) = match box f with // Does it take two arguments without side effect? | :? FSharpFunc<'T,'U,'V> as f -> f | _ -> { new FSharpFunc<'T,'U,'V>() with member x.Invoke(t,u) = (retype f : FSharpFunc<'T,FSharpFunc<'U,'V>>).Invoke(t).Invoke(u) } [] type FSharpFunc<'T,'U,'V,'W>() = inherit FSharpFunc<'T,('U -> 'V -> 'W)>() abstract Invoke : 'T * 'U * 'V -> 'W override f.Invoke(t) = (fun u v -> f.Invoke(t,u,v)) static member Adapt(f : 'T -> 'U -> 'V -> 'W) = match box f with // Does it take three arguments without side effect? | :? FSharpFunc<'T,'U,'V,'W> as f -> f // Does it take two arguments without side effect? | :? FSharpFunc<'T,'U,FSharpFunc<'V,'W>> as f -> { new FSharpFunc<'T,'U,'V,'W>() with member x.Invoke(t,u,v) = f.Invoke(t,u).Invoke(v) } | _ -> { new FSharpFunc<'T,'U,'V,'W>() with member x.Invoke(t,u,v) = (retype f : FSharpFunc<'T,('U -> 'V -> 'W)>).Invoke(t) u v } [] type FSharpFunc<'T,'U,'V,'W,'X>() = inherit FSharpFunc<'T,('U -> 'V -> 'W -> 'X)>() abstract Invoke : 'T * 'U * 'V * 'W -> 'X static member Adapt(f : 'T -> 'U -> 'V -> 'W -> 'X) = match box f with // Does it take four arguments without side effect? | :? FSharpFunc<'T,'U,'V,'W,'X> as f -> f // Does it take three arguments without side effect? | :? FSharpFunc<'T,'U,'V,FSharpFunc<'W,'X>> as f -> { new FSharpFunc<'T,'U,'V,'W,'X>() with member x.Invoke(t,u,v,w) = f.Invoke(t,u,v).Invoke(w) } // Does it take two arguments without side effect? | :? FSharpFunc<'T,'U,('V -> 'W -> 'X)> as f -> { new FSharpFunc<'T,'U,'V,'W,'X>() with member x.Invoke(t,u,v,w) = f.Invoke(t,u) v w } | _ -> { new FSharpFunc<'T,'U,'V,'W,'X>() with member x.Invoke(t,u,v,w) = ((retype f : FSharpFunc<'T,('U -> 'V -> 'W -> 'X)>).Invoke(t)) u v w } override f.Invoke(t) = (fun u v w -> f.Invoke(t,u,v,w)) [] type FSharpFunc<'T,'U,'V,'W,'X,'Y>() = inherit FSharpFunc<'T,('U -> 'V -> 'W -> 'X -> 'Y)>() abstract Invoke : 'T * 'U * 'V * 'W * 'X -> 'Y override f.Invoke(t) = (fun u v w x -> f.Invoke(t,u,v,w,x)) static member Adapt(f : 'T -> 'U -> 'V -> 'W -> 'X -> 'Y) = match box f with // Does it take five arguments without side effect? | :? FSharpFunc<'T,'U,'V,'W,'X,'Y> as f -> f // Does it take four arguments without side effect? | :? FSharpFunc<'T,'U,'V,'W,FSharpFunc<'X,'Y>> as f -> { new FSharpFunc<'T,'U,'V,'W,'X,'Y>() with member ff.Invoke(t,u,v,w,x) = f.Invoke(t,u,v,w).Invoke(x) } // Does it take three arguments without side effect? | :? FSharpFunc<'T,'U,'V,('W -> 'X -> 'Y)> as f -> { new FSharpFunc<'T,'U,'V,'W,'X,'Y>() with member ff.Invoke(t,u,v,w,x) = f.Invoke(t,u,v) w x } // Does it take two arguments without side effect? | :? FSharpFunc<'T,'U,('V -> 'W -> 'X -> 'Y)> as f -> { new FSharpFunc<'T,'U,'V,'W,'X,'Y>() with member ff.Invoke(t,u,v,w,x) = f.Invoke(t,u) v w x } | _ -> { new FSharpFunc<'T,'U,'V,'W,'X,'Y>() with member ff.Invoke(t,u,v,w,x) = ((retype f : FSharpFunc<'T,('U -> 'V -> 'W -> 'X -> 'Y)>).Invoke(t)) u v w x } let inline invokeFast2((f1 : FSharpFunc<'T,('U -> 'V)>), t,u) = match f1 with | :? FSharpFunc<'T,'U,'V> as f2 -> f2.Invoke(t,u) | _ -> (f1.Invoke(t)) u let inline invokeFast3((f1 : FSharpFunc<'T,('U -> 'V -> 'W)>), t,u,v) = match f1 with | :? FSharpFunc<'T,'U,'V,'W> as f3 -> f3.Invoke(t,u,v) | :? FSharpFunc<'T,'U,('V -> 'W)> as f2 -> (f2.Invoke(t,u)) v | _ -> (f1.Invoke(t)) u v let inline invokeFast4((f1 : FSharpFunc<'T,('U -> 'V -> 'W -> 'X)>), t,u,v,w) = match f1 with | :? FSharpFunc<'T,'U,'V,'W,'X> as f4 -> f4.Invoke(t,u,v,w) | :? FSharpFunc<'T,'U,'V,('W -> 'X)> as f3 -> (f3.Invoke(t,u,v)) w | :? FSharpFunc<'T,'U,('V -> 'W -> 'X)> as f2 -> (f2.Invoke(t,u)) v w | _ -> (f1.Invoke(t)) u v w let inline invokeFast5((f1 : FSharpFunc<'T,('U -> 'V -> 'W -> 'X -> 'Y)>), t,u,v,w,x) = match f1 with | :? FSharpFunc<'T,'U,'V,'W,'X,'Y> as f5 -> f5.Invoke(t,u,v,w,x) | :? FSharpFunc<'T,'U,'V,'W,('X -> 'Y)> as f4 -> (f4.Invoke(t,u,v,w)) x | :? FSharpFunc<'T,'U,'V,('W -> 'X -> 'Y)> as f3 -> (f3.Invoke(t,u,v)) w x | :? FSharpFunc<'T,'U,('V -> 'W -> 'X -> 'Y)> as f2 -> (f2.Invoke(t,u)) v w x | _ -> (f1.Invoke(t)) u v w x type FSharpFunc<'T,'Res> with #if FX_NO_CONVERTER [] static member op_Implicit(f : System.Func<_,_>) : ('T -> 'Res) = (fun t -> f.Invoke(t)) [] static member op_Implicit( f : ('T -> 'Res) ) = new System.Func<'T,'Res>(f) #else [] static member op_Implicit(f : System.Converter<_,_>) : ('T -> 'Res) = (fun t -> f.Invoke(t)) [] static member op_Implicit( f : ('T -> 'Res) ) = new System.Converter<'T,'Res>(f) static member FromConverter(f : System.Converter<_,_>) : ('T -> 'Res) = (fun t -> f.Invoke(t)) static member ToConverter( f : ('T -> 'Res) ) = new System.Converter<'T,'Res>(f) #endif static member InvokeFast(f:FSharpFunc<_,_>,(t:'T),(u:'Res)) = OptimizedClosures.invokeFast2(f,t,u) static member InvokeFast(f:FSharpFunc<_,_>,(t:'T),(u:'Res),v) = OptimizedClosures.invokeFast3(f,t,u,v) static member InvokeFast(f:FSharpFunc<_,_>,(t:'T),(u:'Res),v,w) = OptimizedClosures.invokeFast4(f,t,u,v,w) static member InvokeFast(f:FSharpFunc<_,_>,(t:'T),(u:'Res),v,w,x) = OptimizedClosures.invokeFast5(f,t,u,v,w,x) [] [] type FuncConvert = static member ToFSharpFunc( f : Action<_>) = (fun t -> f.Invoke(t)) #if FX_NO_CONVERTER #else static member ToFSharpFunc( f : Converter<_,_>) = (fun t -> f.Invoke(t)) #endif static member FuncFromTupled (f:'T1 * 'T2 -> 'Res) = (fun a b -> f (a, b)) static member FuncFromTupled (f:'T1 * 'T2 * 'T3 -> 'Res) = (fun a b c -> f (a, b, c)) static member FuncFromTupled (f:'T1 * 'T2 * 'T3 * 'T4 -> 'Res) = (fun a b c d -> f (a, b, c, d)) static member FuncFromTupled (f:'T1 * 'T2 * 'T3 * 'T4 * 'T5 -> 'Res) = (fun a b c d e-> f (a, b, c, d, e)) //------------------------------------------------------------------------- // Refs //------------------------------------------------------------------------- #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] [] type Ref<'T> = { #if FX_NO_DEBUG_DISPLAYS #else [] #endif mutable contents: 'T } member x.Value with get() = x.contents and set v = x.contents <- v and 'T ref = Ref<'T> //------------------------------------------------------------------------- // Options //------------------------------------------------------------------------- [] #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] [] [] [] type Option<'T> = | None : 'T option | Some : Value:'T -> 'T option [] member x.Value = match x with Some x -> x | None -> raise (new System.InvalidOperationException("Option.Value")) #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.IsNone = match x with None -> true | _ -> false #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.IsSome = match x with Some _ -> true | _ -> false #if FX_NO_DEBUG_DISPLAYS #else [] #endif static member None : 'T option = None static member Some(x) : 'T option = Some(x) override x.ToString() = // x is non-null, hence Some "Some("^anyToStringShowingNull x.Value^")" and 'T option = Option<'T> //============================================================================ //============================================================================ namespace Microsoft.FSharp.Collections //------------------------------------------------------------------------- // Lists //------------------------------------------------------------------------- open System.Collections.Generic open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions open Microsoft.FSharp.Core.BasicInlinedOperations [] #if FX_NO_DEBUG_PROXIES #else [>)>] #endif #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] [] [] type List<'T> = | ([]) : 'T list | (::) : Head: 'T * Tail: 'T list -> 'T list interface System.Collections.Generic.IEnumerable<'T> interface System.Collections.IEnumerable and 'T list = List<'T> //------------------------------------------------------------------------- // List (debug view) //------------------------------------------------------------------------- and ListDebugView<'T>(l:list<'T>) = let ListDebugViewMaxLength = 50 let rec count l n = match l with | [] -> n | _::t -> if n > ListDebugViewMaxLength then n else count t (n+1) #if FX_NO_DEBUG_DISPLAYS #else [] #endif member x.Items = let n = count l 0 let items = zeroCreate n let rec copy (items: 'T[]) l i = match l with | [] -> () | h::t -> if i < n then SetArray items i h; copy items t (i+1) copy items l 0; items type ResizeArray<'T> = System.Collections.Generic.List<'T> //------------------------------------------------------------------------- // List (augmentation) //------------------------------------------------------------------------- module PrivateListHelpers = let notStarted() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationNotStarted))) let alreadyFinished() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationAlreadyFinished))) let nonempty x = match x with [] -> false | _ -> true // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let setFreshConsTail cons t = cons.(::).1 <- t // Return the last cons it the chain let rec appendToFreshConsTail cons xs = match xs with | [] -> cons | h::t -> let cons2 = [h] setFreshConsTail cons cons2 appendToFreshConsTail cons2 t type ListEnumerator<'T> (s: 'T list) = let mutable curr = s let mutable started = false member x.GetCurrent() = if started then match curr with | [] -> alreadyFinished() | h :: _ -> h else notStarted() interface IEnumerator<'T> with member x.Current = x.GetCurrent() interface System.Collections.IEnumerator with member x.MoveNext() = if started then match curr with | _ :: t -> curr <- t; nonempty curr | _ -> false else started <- true; nonempty curr member x.Current = box (x.GetCurrent()) member x.Reset() = started <- false; curr <- s interface System.IDisposable with member x.Dispose() = () let mkListEnumerator s = (new ListEnumerator<'T>(s) :> IEnumerator<'T>) let rec lengthAcc acc xs = match xs with [] -> acc | _ :: t -> lengthAcc (acc+1) t //let rec getRange startIndex endIndex xs = // match xs with // | [] -> [] // | h :: t -> let rec nth l n = match l with | [] -> raise (new System.ArgumentException(SR.GetString(SR.indexOutOfBounds),"n")) | h::t -> if n < 0 then raise (new System.ArgumentException(SR.GetString(SR.inputMustBeNonNegative),"n")) elif n = 0 then h else nth t (n - 1) type List<'T> with #if FX_NO_DEBUG_DISPLAYS #else [] #endif member l.Length = PrivateListHelpers.lengthAcc 0 l #if FX_NO_DEBUG_DISPLAYS #else [] #endif member l.DebugDisplay = let n = l.Length let txt = if n > 1000 then "Length > 1000" else System.String.Concat( [| "Length = "; n.ToString() |]) txt member l.Head = match l with a :: _ -> a | [] -> raise (System.InvalidOperationException(SR.GetString(SR.inputListWasEmpty))) member l.Tail = match l with _ :: b -> b | [] -> raise (System.InvalidOperationException(SR.GetString(SR.inputListWasEmpty))) #if FX_NO_DEBUG_DISPLAYS #else [] #endif member l.IsEmpty = match l with [] -> true | _ -> false member l.Item with get(index) = PrivateListHelpers.nth l index #if FX_NO_DEBUG_DISPLAYS #else [] #endif static member Empty : 'T list = [] static member Cons(head,tail) : 'T list = head::tail override x.ToString() = match x with | [] -> "[]" | [h1] -> System.Text.StringBuilder().Append("[").Append(anyToStringShowingNull h1).Append("]").ToString() | [h1;h2] -> System.Text.StringBuilder().Append("[").Append(anyToStringShowingNull h1).Append("; ").Append(anyToStringShowingNull h2).Append("]").ToString() | [h1;h2;h3] -> System.Text.StringBuilder().Append("[").Append(anyToStringShowingNull h1).Append("; ").Append(anyToStringShowingNull h2).Append("; ").Append(anyToStringShowingNull h3).Append("]").ToString() | h1 :: h2 :: h3 :: _ -> System.Text.StringBuilder().Append("[").Append(anyToStringShowingNull h1).Append("; ").Append(anyToStringShowingNull h2).Append("; ").Append(anyToStringShowingNull h3).Append("; ... ]").ToString() //member x.GetSlice(startIndex: int option ,endIndex: int option ) = // let startIndex = match startIndex with Some x -> x | None -> 0 // PrivateListHelpers.getRange startIndex endIndex l [] interface IEnumerable<'T> with member l.GetEnumerator() = PrivateListHelpers.mkListEnumerator l interface System.Collections.IEnumerable with member l.GetEnumerator() = (PrivateListHelpers.mkListEnumerator l :> System.Collections.IEnumerator) type seq<'T> = IEnumerable<'T> //------------------------------------------------------------------------- // Operators //------------------------------------------------------------------------- namespace Microsoft.FSharp.Core open System open System.Diagnostics open System.Collections.Generic open System.Globalization open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions open Microsoft.FSharp.Core.BasicInlinedOperations open Microsoft.FSharp.Collections [] module Operators = #if MULTI_DIMENSIONAL_EXTENSION_PROPERTIES type ``[,]``<'T> with [] member arr.Length1 = (# "ldlen.multi 2 0" arr : int #) [] member arr.Length2 = (# "ldlen.multi 2 1" arr : int #) [] member arr.Base1 = arr.GetLowerBound(0) [] member arr.Base2 = arr.GetLowerBound(1) type ``[,,]``<'T> with [] member arr.Length1 = (# "ldlen.multi 3 0" arr : int #) [] member arr.Length2 = (# "ldlen.multi 3 1" arr : int #) [] member arr.Length3 = (# "ldlen.multi 3 2" arr : int #) [] member arr.Base1 = arr.GetLowerBound(0) [] member arr.Base2 = arr.GetLowerBound(1) [] member arr.Base3 = arr.GetLowerBound(2) type ``[,,,]``<'T> with [] member arr.Length1 = (# "ldlen.multi 4 0" arr : int #) [] member arr.Length2 = (# "ldlen.multi 4 1" arr : int #) [] member arr.Length3 = (# "ldlen.multi 4 2" arr : int #) [] member arr.Length4 = (# "ldlen.multi 4 3" arr : int #) [] member arr.Base1 = arr.GetLowerBound(0) [] member arr.Base2 = arr.GetLowerBound(1) [] member arr.Base3 = arr.GetLowerBound(2) [] member arr.Base4 = arr.GetLowerBound(3) #endif [] let seq (x:seq<'T>) = x [] let inline unbox (x:obj) = UnboxGeneric(x) [] let inline box (x:'T) = (# "box !0" type ('T) x : obj #) [] let raise (e: exn) = (# "throw" e : 'T #) let Failure message = new System.Exception(message) [] let (|Failure|_|) (exn:exn) = if exn.GetType().Equals(typeof) then Some exn.Message else None [] let inline not (b:bool) = (# "ceq" b false : bool #) let inline (<) x y = GenericLessThan x y let inline (>) x y = GenericGreaterThan x y let inline (>=) x y = GenericGreaterOrEqual x y let inline (<=) x y = GenericLessOrEqual x y let inline (=) x y = GenericEquality x y let inline (<>) x y = not (GenericEquality x y) [] let inline compare (x:'T) (y:'T) = GenericComparison x y [] let inline max x y = GenericMaximum x y [] let inline min x y = GenericMinimum x y (* [] let ``assert`` (b) = System.Diagnostics.Debug.Assert(b) *) [] let failwith message = raise (Failure(message)) [] [] let inline invalidArg (arg:string) (msg:string) = raise (new System.ArgumentException(msg,arg)) [] [] let inline nullArg (arg:string) = raise (new System.ArgumentNullException(arg)) [] [] let inline invalidOp message = raise (System.InvalidOperationException(message)) [] [] let inline rethrow() = unbox(# "rethrow ldnull" : System.Object #) [] [] let inline reraise() = unbox(# "rethrow ldnull" : System.Object #) [] [] let fst (a,_) = a [] [] let snd (_,b) = b [] let inline ignore _ = () [] [] let ref x = { contents = x } let (:=) x y = x.contents <- y let (!) x = x.contents let inline (|>) x f = f x let inline (||>) (x1,x2) f = f x1 x2 let inline (|||>) (x1,x2,x3) f = f x1 x2 x3 let inline (<|) f x = f x let inline (<||) f (x1,x2) = f x1 x2 let inline (<|||) f (x1,x2,x3) = f x1 x2 x3 let inline (>>) f g x = g(f x) let inline (<<) f g x = f(g x) let (^) (x:string) (y:string) = System.String.Concat(x,y) [] [] let defaultArg x y = match x with None -> y | Some v -> v [] let inline (~-) (x: ^T) : ^T = (^T : (static member (~-) : ^T -> ^T) (x)) when ^T : int32 = (# "neg" x : int32 #) when ^T : float = (# "neg" x : float #) when ^T : float32 = (# "neg" x : float32 #) when ^T : int64 = (# "neg" x : int64 #) when ^T : int16 = (# "neg" x : int16 #) when ^T : nativeint = (# "neg" x : nativeint #) when ^T : sbyte = (# "neg" x : sbyte #) when ^T : decimal = (# "" (System.Decimal.op_UnaryNegation((# "" x : decimal #))) : ^T #) let inline (+) (x: ^T) (y: ^U) : ^V = AdditionDynamic<(^T),(^U),(^V)> x y when ^T : int32 and ^U : int32 = (# "add" x y : int32 #) when ^T : float and ^U : float = (# "add" x y : float #) when ^T : float32 and ^U : float32 = (# "add" x y : float32 #) when ^T : int64 and ^U : int64 = (# "add" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "add" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "add" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "add" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "add" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.i2" (# "add" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.u2" (# "add" x y : uint32 #) : uint16 #) when ^T : char and ^U : char = (# "conv.u2" (# "add" x y : uint32 #) : char #) when ^T : sbyte and ^U : sbyte = (# "conv.i1" (# "add" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.u1" (# "add" x y : uint32 #) : byte #) when ^T : string and ^U : string = (# "" (System.String.Concat((# "" x : string #),(# "" y : string #))) : ^T #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Addition((# "" x : decimal #),(# "" y : decimal #))) : ^V #) // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type // That is, not in the generic implementation of '+' when ^T : ^T = ((^T or ^U): (static member (+) : ^T * ^U -> ^V) (x,y)) [] let inline (-) (x: ^T) (y: ^U) : ^V = ((^T or ^U): (static member (-) : ^T * ^U -> ^V) (x,y)) when ^T : int32 and ^U : int32 = (# "sub" x y : int32 #) when ^T : float and ^U : float = (# "sub" x y : float #) when ^T : float32 and ^U : float32 = (# "sub" x y : float32 #) when ^T : int64 and ^U : int64 = (# "sub" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "sub" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "sub" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "sub" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "sub" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.i2" (# "sub" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.u2" (# "sub" x y : uint32 #) : uint16 #) when ^T : sbyte and ^U : sbyte = (# "conv.i1" (# "sub" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.u1" (# "sub" x y : uint32 #) : byte #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Subtraction((# "" x : decimal #),(# "" y : decimal #))) : ^V #) let inline ( * ) (x: ^T) (y: ^U) : ^V = MultiplyDynamic<(^T),(^U),(^V)> x y when ^T : int32 and ^U : int32 = (# "mul" x y : int32 #) when ^T : float and ^U : float = (# "mul" x y : float #) when ^T : float32 and ^U : float32 = (# "mul" x y : float32 #) when ^T : int64 and ^U : int64 = (# "mul" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "mul" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "mul" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "mul" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "mul" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.i2" (# "mul" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.u2" (# "mul" x y : uint32 #) : uint16 #) when ^T : sbyte and ^U : sbyte = (# "conv.i1" (# "mul" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.u1" (# "mul" x y : uint32 #) : byte #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Multiply((# "" x : decimal #),(# "" y : decimal #))) : ^V #) // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type // That is, not in the generic implementation of '*' when ^T : ^T = ((^T or ^U): (static member (*) : ^T * ^U -> ^V) (x,y)) [] let inline ( / ) (x: ^T) (y: ^U) : ^V = ((^T or ^U): (static member (/) : ^T * ^U -> ^V) (x,y)) when ^T : int32 and ^U : int32 = (# "div" x y : int32 #) when ^T : float and ^U : float = (# "div" x y : float #) when ^T : float32 and ^U : float32 = (# "div" x y : float32 #) when ^T : int64 and ^U : int64 = (# "div" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "div.un" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "div.un" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "div" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "div.un" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.i2" (# "div" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.u2" (# "div.un" x y : uint32 #) : uint16 #) when ^T : sbyte and ^U : sbyte = (# "conv.i1" (# "div" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.u1" (# "div.un" x y : uint32 #) : byte #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Division((# "" x : decimal #),(# "" y : decimal #))) : ^V #) [] let inline ( % ) (x: ^T) (y: ^U) : ^V = ((^T or ^U): (static member (%) : ^T * ^U -> ^V) (x,y)) when ^T : int32 and ^U : int32 = (# "rem" x y : int32 #) when ^T : float and ^U : float = (# "rem" x y : float #) when ^T : float32 and ^U : float32 = (# "rem" x y : float32 #) when ^T : int64 and ^U : int64 = (# "rem" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "rem.un" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "rem.un" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "rem" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "rem.un" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.i2" (# "rem" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.u2" (# "rem.un" x y : uint32 #) : uint16 #) when ^T : sbyte and ^U : sbyte = (# "conv.i1" (# "rem" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.u1" (# "rem.un" x y : uint32 #) : byte #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Modulus((# "" x : decimal #),(# "" y : decimal #))) : ^V #) [] let inline (~+) (x: ^T) : ^T = (^T: (static member (~+) : ^T -> ^T) (x)) when ^T : int32 = x when ^T : float = x when ^T : float32 = x when ^T : int64 = x when ^T : uint64 = x when ^T : uint32 = x when ^T : int16 = x when ^T : uint16 = x when ^T : nativeint = x when ^T : unativeint = x when ^T : sbyte = x when ^T : byte = x when ^T : decimal = x let inline mask (n:int) (m:int) = (# "and" n m : int #) [] let inline (<<<) (x: ^T) (n:int) : ^T = (^T: (static member (<<<) : ^T * int -> ^T) (x,n)) when ^T : int32 = (# "shl" x (mask n 31) : int #) when ^T : uint32 = (# "shl" x (mask n 31) : uint32 #) when ^T : int64 = (# "shl" x (mask n 63) : int64 #) when ^T : uint64 = (# "shl" x (mask n 63) : uint64 #) when ^T : nativeint = (# "shl" x n : nativeint #) when ^T : unativeint = (# "shl" x n : unativeint #) when ^T : int16 = (# "conv.i2" (# "shl" x (mask n 15) : int32 #) : int16 #) when ^T : uint16 = (# "conv.u2" (# "shl" x (mask n 15) : uint32 #) : uint16 #) when ^T : sbyte = (# "conv.i1" (# "shl" x (mask n 7 ) : int32 #) : sbyte #) when ^T : byte = (# "conv.u1" (# "shl" x (mask n 7 ) : uint32 #) : byte #) [] let inline (>>>) (x: ^T) (n:int) : ^T = (^T: (static member (>>>) : ^T * int -> ^T) (x,n)) when ^T : int32 = (# "shr" x (mask n 31) : int32 #) when ^T : uint32 = (# "shr.un" x (mask n 31) : uint32 #) when ^T : int64 = (# "shr" x (mask n 63) : int64 #) when ^T : uint64 = (# "shr.un" x (mask n 63) : uint64 #) when ^T : nativeint = (# "shr" x n : nativeint #) when ^T : unativeint = (# "shr.un" x n : unativeint #) when ^T : int16 = (# "conv.i2" (# "shr" x (mask n 15) : int32 #) : int16 #) when ^T : uint16 = (# "conv.u2" (# "shr.un" x (mask n 15) : uint32 #) : uint16 #) when ^T : sbyte = (# "conv.i1" (# "shr" x (mask n 7 ) : int32 #) : sbyte #) when ^T : byte = (# "conv.u1" (# "shr.un" x (mask n 7 ) : uint32 #) : byte #) [] let inline (&&&) (x: ^T) (y: ^T) : ^T = (^T: (static member (&&&) : ^T * ^T -> ^T) (x,y)) when ^T : int32 = (# "and" x y : int32 #) when ^T : int64 = (# "and" x y : int64 #) when ^T : uint64 = (# "and" x y : uint64 #) when ^T : uint32 = (# "and" x y : uint32 #) when ^T : int16 = (# "and" x y : int16 #) when ^T : uint16 = (# "and" x y : uint16 #) when ^T : nativeint = (# "and" x y : nativeint #) when ^T : unativeint = (# "and" x y : unativeint #) when ^T : sbyte = (# "and" x y : sbyte #) when ^T : byte = (# "and" x y : byte #) [] let inline (|||) (x: ^T) (y: ^T) : ^T = (^T: (static member (|||) : ^T * ^T -> ^T) (x,y)) when ^T : int32 = (# "or" x y : int32 #) when ^T : int64 = (# "or" x y : int64 #) when ^T : uint64 = (# "or" x y : uint64 #) when ^T : uint32 = (# "or" x y : uint32 #) when ^T : int16 = (# "or" x y : int16 #) when ^T : uint16 = (# "or" x y : uint16 #) when ^T : nativeint = (# "or" x y : nativeint #) when ^T : unativeint = (# "or" x y : unativeint #) when ^T : sbyte = (# "or" x y : sbyte #) when ^T : byte = (# "or" x y : byte #) [] let inline (^^^) (x: ^T) (y: ^T) : ^T = (^T: (static member (^^^) : ^T * ^T -> ^T) (x,y)) when ^T : int32 = (# "xor" x y : int32 #) when ^T : int64 = (# "xor" x y : int64 #) when ^T : uint64 = (# "xor" x y : uint64 #) when ^T : uint32 = (# "xor" x y : uint32 #) when ^T : int16 = (# "xor" x y : int16 #) when ^T : uint16 = (# "xor" x y : uint16 #) when ^T : nativeint = (# "xor" x y : nativeint #) when ^T : unativeint = (# "xor" x y : unativeint #) when ^T : sbyte = (# "xor" x y : sbyte #) when ^T : byte = (# "xor" x y : byte #) [] let inline (~~~) (x: ^T) : ^T = (^T: (static member (~~~) : ^T -> ^T) (x)) when ^T : int32 = (# "not" x : int32 #) when ^T : int64 = (# "not" x : int64 #) when ^T : uint64 = (# "not" x : uint64 #) when ^T : uint32 = (# "not" x : uint32 #) when ^T : nativeint = (# "not" x : nativeint #) when ^T : unativeint = (# "not" x : unativeint #) when ^T : int16 = (# "conv.i2" (# "not" x : int32 #) : int16 #) when ^T : uint16 = (# "conv.u2" (# "not" x : uint32 #) : uint16 #) when ^T : sbyte = (# "conv.i1" (# "not" x : int32 #) : sbyte #) when ^T : byte = (# "conv.u1" (# "not" x : uint32 #) : byte #) let inline castToString (x:'T) = (# "" x : string #) // internal #if FX_NO_CHAR_PARSE // replace System.Char.Parse let inline charParse (s: string) = if s = null then raise (System.ArgumentNullException()) elif s.Length = 1 then s.[0] else raise (System.FormatException "String must be exactly one character long.") #endif // let rec (@) x y = match x with [] -> y | (h::t) -> h :: (t @ y) let (@) l1 l2 = match l1 with | [] -> l2 | (h::t) -> match l2 with | [] -> l1 | _ -> let res = [h] let lastCons = PrivateListHelpers.appendToFreshConsTail res t PrivateListHelpers.setFreshConsTail lastCons l2; res [] let incr x = x.contents <- x.contents + 1 [] let decr x = x.contents <- x.contents - 1 #if FX_NO_EXIT #else [] let exit (n:int) = System.Environment.Exit(n); failwith "System.Environment.Exit did not exit!" #endif let inline parseByte (s:string) = (# "conv.ovf.u1" (ParseUInt32 s) : byte #) let inline ParseSByte (s:string) = (# "conv.ovf.i1" (ParseInt32 s) : sbyte #) let inline ParseInt16 (s:string) = (# "conv.ovf.i2" (ParseInt32 s) : int16 #) let inline ParseUInt16 (s:string) = (# "conv.ovf.u2" (ParseUInt32 s) : uint16 #) let inline ParseIntPtr (s:string) = (# "conv.ovf.i" (ParseInt64 s) : nativeint #) let inline ParseUIntPtr (s:string) = (# "conv.ovf.u" (ParseInt64 s) : unativeint #) let inline ParseDouble (s:string) = Double.Parse(s,NumberStyles.Float, CultureInfo.InvariantCulture) let inline ParseSingle (s:string) = Single.Parse(s,NumberStyles.Float, CultureInfo.InvariantCulture) [] [] let inline byte (x: ^T) = (^T : (static member op_Explicit: ^T -> byte) (x)) when ^T : string = parseByte (castToString x) when ^T : float = (# "conv.u1" x : byte #) when ^T : float32 = (# "conv.u1" x : byte #) when ^T : int64 = (# "conv.u1" x : byte #) when ^T : int32 = (# "conv.u1" x : byte #) when ^T : int16 = (# "conv.u1" x : byte #) when ^T : nativeint = (# "conv.u1" x : byte #) when ^T : sbyte = (# "conv.u1" x : byte #) when ^T : uint64 = (# "conv.u1" x : byte #) when ^T : uint32 = (# "conv.u1" x : byte #) when ^T : uint16 = (# "conv.u1" x : byte #) when ^T : char = (# "conv.u1" x : byte #) when ^T : unativeint = (# "conv.u1" x : byte #) when ^T : byte = (# "conv.u1" x : byte #) [] [] let inline sbyte (x: ^T) = (^T : (static member op_Explicit: ^T -> sbyte) (x)) when ^T : string = ParseSByte (castToString x) when ^T : float = (# "conv.i1" x : sbyte #) when ^T : float32 = (# "conv.i1" x : sbyte #) when ^T : int64 = (# "conv.i1" x : sbyte #) when ^T : int32 = (# "conv.i1" x : sbyte #) when ^T : int16 = (# "conv.i1" x : sbyte #) when ^T : nativeint = (# "conv.i1" x : sbyte #) when ^T : sbyte = (# "conv.i1" x : sbyte #) when ^T : uint64 = (# "conv.i1" x : sbyte #) when ^T : uint32 = (# "conv.i1" x : sbyte #) when ^T : uint16 = (# "conv.i1" x : sbyte #) when ^T : char = (# "conv.i1" x : sbyte #) when ^T : unativeint = (# "conv.i1" x : sbyte #) when ^T : byte = (# "conv.i1" x : sbyte #) [] [] let inline uint16 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint16) (x)) when ^T : string = ParseUInt16 (castToString x) when ^T : float = (# "conv.u2" x : uint16 #) when ^T : float32 = (# "conv.u2" x : uint16 #) when ^T : int64 = (# "conv.u2" x : uint16 #) when ^T : int32 = (# "conv.u2" x : uint16 #) when ^T : int16 = (# "conv.u2" x : uint16 #) when ^T : nativeint = (# "conv.u2" x : uint16 #) when ^T : sbyte = (# "conv.u2" x : uint16 #) when ^T : uint64 = (# "conv.u2" x : uint16 #) when ^T : uint32 = (# "conv.u2" x : uint16 #) when ^T : uint16 = (# "conv.u2" x : uint16 #) when ^T : char = (# "conv.u2" x : uint16 #) when ^T : unativeint = (# "conv.u2" x : uint16 #) when ^T : byte = (# "conv.u2" x : uint16 #) [] [] let inline int16 (x: ^T) = (^T : (static member op_Explicit: ^T -> int16) (x)) when ^T : string = ParseInt16 (castToString x) when ^T : float = (# "conv.i2" x : int16 #) when ^T : float32 = (# "conv.i2" x : int16 #) when ^T : int64 = (# "conv.i2" x : int16 #) when ^T : int32 = (# "conv.i2" x : int16 #) when ^T : int16 = (# "conv.i2" x : int16 #) when ^T : nativeint = (# "conv.i2" x : int16 #) when ^T : sbyte = (# "conv.i2" x : int16 #) when ^T : uint64 = (# "conv.i2" x : int16 #) when ^T : uint32 = (# "conv.i2" x : int16 #) when ^T : uint16 = (# "conv.i2" x : int16 #) when ^T : char = (# "conv.i2" x : int16 #) when ^T : unativeint = (# "conv.i2" x : int16 #) when ^T : byte = (# "conv.i2" x : int16 #) [] [] let inline uint32 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint32) (x)) when ^T : string = ParseUInt32 (castToString x) when ^T : float = (# "conv.u4" x : uint32 #) when ^T : float32 = (# "conv.u4" x : uint32 #) when ^T : int64 = (# "conv.u4" x : uint32 #) when ^T : nativeint = (# "conv.u4" x : uint32 #) // For integers shorter that 32 bits, we must first // sign-widen the signed integer to 32 bits, and then // "convert" from signed int32 to unsigned int32 // This is a no-op on IL stack (ECMA 335 Part III 1.5 Tables 8 & 9) when ^T : int32 = (# "" x : uint32 #) when ^T : int16 = (# "" x : uint32 #) when ^T : sbyte = (# "" x : uint32 #) when ^T : uint64 = (# "conv.u4" x : uint32 #) when ^T : uint32 = (# "conv.u4" x : uint32 #) when ^T : uint16 = (# "conv.u4" x : uint32 #) when ^T : char = (# "conv.u4" x : uint32 #) when ^T : unativeint = (# "conv.u4" x : uint32 #) when ^T : byte = (# "conv.u4" x : uint32 #) [] [] let inline int32 (x: ^T) = (^T : (static member op_Explicit: ^T -> int32) (x)) when ^T : string = ParseInt32 (castToString x) when ^T : float = (# "conv.i4" x : int32 #) when ^T : float32 = (# "conv.i4" x : int32 #) when ^T : int64 = (# "conv.i4" x : int32 #) when ^T : nativeint = (# "conv.i4" x : int32 #) // For integers shorter that 32 bits, we sign-widen the signed integer to 32 bits // This is a no-op on IL stack (ECMA 335 Part III 1.5 Tables 8 & 9) when ^T : int32 = (# "" x : int32 #) when ^T : int16 = (# "" x : int32 #) when ^T : sbyte = (# "" x : int32 #) when ^T : uint64 = (# "conv.i4" x : int32 #) when ^T : uint32 = (# "" x : int32 #) // Signed<->Unsigned conversion is a no-op on IL stack when ^T : uint16 = (# "conv.i4" x : int32 #) when ^T : char = (# "conv.i4" x : int32 #) when ^T : unativeint = (# "conv.i4" x : int32 #) when ^T : byte = (# "conv.i4" x : int32 #) [] let inline int x = int32 x [] let inline enum< ^T when ^T : enum > (x:int32) : ^T = EnumOfValue x [] let ( |KeyValue| ) (kvp : KeyValuePair<'T,'U>) = (kvp.Key, kvp.Value) [] let infinity = System.Double.PositiveInfinity [] let nan = System.Double.NaN [] let infinityf = System.Single.PositiveInfinity [] let nanf = System.Single.NaN [] [] let inline uint64 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint64) (x)) when ^T : string = ParseUInt64 (castToString x) when ^T : float = (# "conv.u8" x : uint64 #) when ^T : float32 = (# "conv.u8" x : uint64 #) // we must first sign-widen the signed integer to 64 bits, and then // "convert" from signed int64 to unsigned int64 // conv.i8 sign-widens the input, and on IL stack, // conversion from signed to unsigned is a no-op (ECMA 335 Part III 1.5 Table 8) when ^T : int64 = (# "" x : uint64 #) when ^T : int32 = (# "conv.i8" x : uint64 #) when ^T : int16 = (# "conv.i8" x : uint64 #) when ^T : nativeint = (# "conv.i8" x : uint64 #) when ^T : sbyte = (# "conv.i8" x : uint64 #) when ^T : uint64 = (# "" x : uint64 #) when ^T : uint32 = (# "conv.u8" x : uint64 #) when ^T : uint16 = (# "conv.u8" x : uint64 #) when ^T : char = (# "conv.u8" x : uint64 #) when ^T : unativeint = (# "conv.u8" x : uint64 #) when ^T : byte = (# "conv.u8" x : uint64 #) [] [] let inline int64 (x: ^T) = (^T : (static member op_Explicit: ^T -> int64) (x)) when ^T : string = ParseInt64 (castToString x) when ^T : float = (# "conv.i8" x : int64 #) when ^T : float32 = (# "conv.i8" x : int64 #) when ^T : int64 = (# "conv.i8" x : int64 #) when ^T : int32 = (# "conv.i8" x : int64 #) when ^T : int16 = (# "conv.i8" x : int64 #) when ^T : nativeint = (# "conv.i8" x : int64 #) when ^T : sbyte = (# "conv.i8" x : int64 #) // When converting unsigned integer, we should zero-widen them, NOT sign-widen // No-op for uint64, conv.u8 for uint32, for smaller types conv.u8 and conv.i8 are identical. // For nativeint, conv.u8 works correctly both in 32 bit and 64 bit case. when ^T : uint64 = (# "" x : int64 #) when ^T : uint32 = (# "conv.u8" x : int64 #) when ^T : uint16 = (# "conv.u8" x : int64 #) when ^T : char = (# "conv.u8" x : int64 #) when ^T : unativeint = (# "conv.u8" x : int64 #) when ^T : byte = (# "conv.u8" x : int64 #) [] [] let inline float32 (x: ^T) = (^T : (static member op_Explicit: ^T -> float32) (x)) when ^T : string = ParseSingle (castToString x) when ^T : float = (# "conv.r4" x : float32 #) // NOTE: float32 should convert its argument to 32-bit float even when applied to a higher precision float stored in a register. See devdiv2#49888. when ^T : float32 = (# "conv.r4" x : float32 #) when ^T : int64 = (# "conv.r4" x : float32 #) when ^T : int32 = (# "conv.r4" x : float32 #) when ^T : int16 = (# "conv.r4" x : float32 #) when ^T : nativeint = (# "conv.r4" x : float32 #) when ^T : sbyte = (# "conv.r4" x : float32 #) when ^T : uint64 = (# "conv.r.un conv.r4" x : float32 #) when ^T : uint32 = (# "conv.r.un conv.r4" x : float32 #) when ^T : uint16 = (# "conv.r.un conv.r4" x : float32 #) when ^T : char = (# "conv.r.un conv.r4" x : float32 #) when ^T : unativeint = (# "conv.r.un conv.r4" x : float32 #) when ^T : byte = (# "conv.r.un conv.r4" x : float32 #) [] [] let inline float (x: ^T) = (^T : (static member op_Explicit: ^T -> float) (x)) when ^T : string = ParseDouble (castToString x) // NOTE: float should convert its argument to 64-bit float even when applied to a higher precision float stored in a register. See devdiv2#49888. when ^T : float = (# "conv.r8" x : float #) when ^T : float32 = (# "conv.r8" x : float #) when ^T : int64 = (# "conv.r8" x : float #) when ^T : int32 = (# "conv.r8" x : float #) when ^T : int16 = (# "conv.r8" x : float #) when ^T : nativeint = (# "conv.r8" x : float #) when ^T : sbyte = (# "conv.r8" x : float #) when ^T : uint64 = (# "conv.r.un conv.r8" x : float #) when ^T : uint32 = (# "conv.r.un conv.r8" x : float #) when ^T : uint16 = (# "conv.r.un conv.r8" x : float #) when ^T : char = (# "conv.r.un conv.r8" x : float #) when ^T : unativeint = (# "conv.r.un conv.r8" x : float #) when ^T : byte = (# "conv.r.un conv.r8" x : float #) when ^T : decimal = (System.Convert.ToDouble((# "" x : decimal #))) [] [] let inline decimal (x: ^T) = (^T : (static member op_Explicit: ^T -> decimal) (x)) when ^T : string = (System.Decimal.Parse(castToString x,NumberStyles.Float,CultureInfo.InvariantCulture)) when ^T : float = (System.Convert.ToDecimal((# "" x : float #))) when ^T : float32 = (System.Convert.ToDecimal((# "" x : float32 #))) when ^T : int64 = (System.Convert.ToDecimal((# "" x : int64 #))) when ^T : int32 = (System.Convert.ToDecimal((# "" x : int32 #))) when ^T : int16 = (System.Convert.ToDecimal((# "" x : int16 #))) when ^T : nativeint = (System.Convert.ToDecimal(int64 (# "" x : nativeint #))) when ^T : sbyte = (System.Convert.ToDecimal((# "" x : sbyte #))) when ^T : uint64 = (System.Convert.ToDecimal((# "" x : uint64 #))) when ^T : uint32 = (System.Convert.ToDecimal((# "" x : uint32 #))) when ^T : uint16 = (System.Convert.ToDecimal((# "" x : uint16 #))) when ^T : unativeint = (System.Convert.ToDecimal(uint64 (# "" x : unativeint #))) when ^T : byte = (System.Convert.ToDecimal((# "" x : byte #))) when ^T : decimal = (# "" x : decimal #) // Recall type names. // Framework names: sbyte, byte, int16, uint16, int32, uint32, int64, uint64, single, double. // C# names: sbyte, byte, short, ushort, int, uint, long, ulong, single, double. // F# names: sbyte, byte, int16, uint16, int, uint32, int64, uint64, float32, float. [] [] let inline unativeint (x: ^T) = (^T : (static member op_Explicit: ^T -> unativeint) (x)) when ^T : string = ParseUIntPtr (castToString x) when ^T : float = (# "conv.u" x : unativeint #) when ^T : float32 = (# "conv.u" x : unativeint #) // Narrower signed types we sign-extend. // Same length signed types we leave as such (so -1 gets reinterpreted as unsigned MaxValue). // Wider signed types we truncate. // conv.i does just that for both 32 and 64 bit case of nativeint, and conversion from nativeint is no-op. when ^T : int64 = (# "conv.i" x : unativeint #) when ^T : int32 = (# "conv.i" x : unativeint #) when ^T : int16 = (# "conv.i" x : unativeint #) when ^T : nativeint = (# "" x : unativeint #) when ^T : sbyte = (# "conv.i" x : unativeint #) when ^T : uint64 = (# "conv.u" x : unativeint #) when ^T : uint32 = (# "conv.u" x : unativeint #) when ^T : uint16 = (# "conv.u" x : unativeint #) when ^T : char = (# "conv.u" x : unativeint #) when ^T : unativeint = (# "" x : unativeint #) when ^T : byte = (# "conv.u" x : unativeint #) [] [] let inline nativeint (x: ^T) = (^T : (static member op_Explicit: ^T -> nativeint) (x)) when ^T : string = ParseIntPtr (castToString x) when ^T : float = (# "conv.i" x : nativeint #) when ^T : float32 = (# "conv.i" x : nativeint #) when ^T : int64 = (# "conv.i" x : nativeint #) when ^T : int32 = (# "conv.i" x : nativeint #) when ^T : int16 = (# "conv.i" x : nativeint #) when ^T : nativeint = (# "conv.i" x : nativeint #) when ^T : sbyte = (# "conv.i" x : nativeint #) // Narrower unsigned types we zero-extend. // Same length unsigned types we leave as such (so unsigned MaxValue (all-bits-set) gets reinterpreted as -1). // Wider unsigned types we truncate. // conv.u does just that for both 32- and 64-bit-wide nativeint, and conversion from unativeint is no-op. when ^T : uint64 = (# "conv.u" x : nativeint #) when ^T : uint32 = (# "conv.u" x : nativeint #) when ^T : uint16 = (# "conv.u" x : nativeint #) when ^T : char = (# "conv.u" x : nativeint #) when ^T : unativeint = (# "" x : nativeint #) when ^T : byte = (# "conv.i" x : nativeint #) [] let inline string (x: ^T) = anyToString "" x // since we have static optimization conditionals for ints below, we need to special-case Enums. // This way we'll print their symbolic value, as opposed to their integral one (Eg., "A", rather than "1") when ^T struct = anyToString "" x when ^T : float = (# "" x : float #).ToString("g",CultureInfo.InvariantCulture) when ^T : float32 = (# "" x : float32 #).ToString("g",CultureInfo.InvariantCulture) when ^T : int64 = (# "" x : int64 #).ToString("g",CultureInfo.InvariantCulture) when ^T : int32 = (# "" x : int32 #).ToString("g",CultureInfo.InvariantCulture) when ^T : int16 = (# "" x : int16 #).ToString("g",CultureInfo.InvariantCulture) when ^T : nativeint = (# "" x : nativeint #).ToString() when ^T : sbyte = (# "" x : sbyte #).ToString("g",CultureInfo.InvariantCulture) when ^T : uint64 = (# "" x : uint64 #).ToString("g",CultureInfo.InvariantCulture) when ^T : uint32 = (# "" x : uint32 #).ToString("g",CultureInfo.InvariantCulture) when ^T : int16 = (# "" x : int16 #).ToString("g",CultureInfo.InvariantCulture) when ^T : unativeint = (# "" x : unativeint #).ToString() when ^T : byte = (# "" x : byte #).ToString("g",CultureInfo.InvariantCulture) [] [] let inline char (x: ^T) = (^T : (static member op_Explicit: ^T -> char) (x)) #if FX_NO_CHAR_PARSE when ^T : string = (charParse (castToString x)) #else when ^T : string = (System.Char.Parse(castToString x)) #endif when ^T : float = (# "conv.u2" x : char #) when ^T : float32 = (# "conv.u2" x : char #) when ^T : int64 = (# "conv.u2" x : char #) when ^T : int32 = (# "conv.u2" x : char #) when ^T : int16 = (# "conv.u2" x : char #) when ^T : nativeint = (# "conv.u2" x : char #) when ^T : sbyte = (# "conv.u2" x : char #) when ^T : uint64 = (# "conv.u2" x : char #) when ^T : uint32 = (# "conv.u2" x : char #) when ^T : uint16 = (# "conv.u2" x : char #) when ^T : char = (# "conv.u2" x : char #) when ^T : unativeint = (# "conv.u2" x : char #) when ^T : byte = (# "conv.u2" x : char #) module Attributes = open System.Runtime.CompilerServices #if FX_NO_DEFAULT_DEPENDENCY_TYPE #else [] [] #endif #if FX_NO_COMVISIBLE #else [] #endif [] #if BE_SECURITY_TRANSPARENT [] // assembly is fully transparent #if CROSS_PLATFORM_COMPILER #else [] // v4 transparency; soon to be the default, but not yet #endif #else #if FX_NO_SECURITY_PERMISSIONS #else #if FX_SIMPLE_SECURITY_PERMISSIONS // REVIEW: Need to choose a specific permission for the action to be applied to [] #else #endif #endif #endif do () #if FX_NO_MONITOR_REPORTS_LOCKTAKEN [] let inline lock (lockobj : 'T when 'T : not struct) f = System.Threading.Monitor.Enter(lockobj); try f() finally System.Threading.Monitor.Exit(lockobj) #else [] let inline lock (lockobj : 'T when 'T : not struct) f = let mutable lockTaken = false try System.Threading.Monitor.Enter(lockobj, &lockTaken); f() finally if lockTaken then System.Threading.Monitor.Exit(lockobj) #endif [] let using (ie : 'T when 'T :> System.IDisposable) f = try f(ie) finally match (box ie) with null -> () | _ -> ie.Dispose() [] let inline typeof<'T> = BasicInlinedOperations.typeof<'T> [] let methodhandleof (_call: ('T -> 'TResult)) : System.RuntimeMethodHandle = raise (Exception "may not call directly, should always be optimized away") [] let inline typedefof<'T> = BasicInlinedOperations.typedefof<'T> [] let inline sizeof<'T> = BasicInlinedOperations.sizeof<'T> [] let inline hash (x: 'T) = LanguagePrimitives.GenericHash x [] let inline limitedHash (limit:int) (x: 'T) = LanguagePrimitives.GenericLimitedHash limit x [] let id x = x #if FX_NO_SYSTEM_CONSOLE #else // std* are TypeFunctions with the effect of reading the property on instantiation. // So, direct uses of stdout should capture the current System.Console.Out at that point. [] let stdin<'T> = System.Console.In [] let stdout<'T> = System.Console.Out [] let stderr<'T> = System.Console.Error #endif module Unchecked = [] let inline unbox<'T> (v:obj) = unboxPrim<'T> v [] let inline defaultof<'T> = unsafeDefault<'T> [] let inline compare x y = GenericComparison x y [] let inline equals x y = GenericEquality x y [] let inline hash x = GenericHash x module Checked = let inline (+) (x: ^T) (y: ^U) : ^V = CheckedAdditionDynamic<(^T),(^U),(^V)> x y when ^T : int32 and ^U : int32 = (# "add.ovf" x y : int32 #) when ^T : float and ^U : float = (# "add" x y : float #) when ^T : float32 and ^U : float32 = (# "add" x y : float32 #) when ^T : int64 and ^U : int64 = (# "add.ovf" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "add.ovf.un" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "add.ovf.un" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "add.ovf" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "add.ovf.un" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.ovf.i2" (# "add.ovf" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.ovf.u2.un" (# "add.ovf.un" x y : uint32 #) : uint16 #) when ^T : char and ^U : char = (# "conv.ovf.u2.un" (# "add.ovf.un" x y : uint32 #) : char #) when ^T : sbyte and ^U : sbyte = (# "conv.ovf.i1" (# "add.ovf" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.ovf.u1.un" (# "add.ovf.un" x y : uint32 #) : byte #) when ^T : string and ^U : string = (# "" (System.String.Concat((# "" x : string #),(# "" y : string #))) : ^T #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Addition((# "" x : decimal #),(# "" y : decimal #))) : ^V #) // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type // That is, not in the generic implementation of '+' when ^T : ^T = ((^T or ^U): (static member (+) : ^T * ^U -> ^V) (x,y)) [] let inline (-) (x: ^T) (y: ^U) : ^V = ((^T or ^U): (static member (-) : ^T * ^U -> ^V) (x,y)) when ^T : int32 and ^U : int32 = (# "sub.ovf" x y : int32 #) when ^T : float and ^U : float = (# "sub" x y : float #) when ^T : float32 and ^U : float32 = (# "sub" x y : float32 #) when ^T : int64 and ^U : int64 = (# "sub.ovf" x y : int64 #) when ^T : uint64 and ^U : uint64 = (# "sub.ovf.un" x y : uint64 #) when ^T : uint32 and ^U : uint32 = (# "sub.ovf.un" x y : uint32 #) when ^T : nativeint and ^U : nativeint = (# "sub.ovf" x y : nativeint #) when ^T : unativeint and ^U : unativeint = (# "sub.ovf.un" x y : unativeint #) when ^T : int16 and ^U : int16 = (# "conv.ovf.i2" (# "sub.ovf" x y : int32 #) : int16 #) when ^T : uint16 and ^U : uint16 = (# "conv.ovf.u2.un" (# "sub.ovf.un" x y : uint32 #) : uint16 #) when ^T : sbyte and ^U : sbyte = (# "conv.ovf.i1" (# "sub.ovf" x y : int32 #) : sbyte #) when ^T : byte and ^U : byte = (# "conv.ovf.u1.un" (# "sub.ovf.un" x y : uint32 #) : byte #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Subtraction((# "" x : decimal #),(# "" y : decimal #))) : ^V #) [] let inline (~-) (x: ^T) : ^T = (^T : (static member (~-) : ^T -> ^T) (x)) when ^T : int32 = (# "sub.ovf" 0 x : int32 #) when ^T : float = (# "neg" x : float #) when ^T : float32 = (# "neg" x : float32 #) when ^T : int64 = (# "sub.ovf" 0L x : int64 #) when ^T : int16 = (# "sub.ovf" 0s x : int16 #) when ^T : nativeint = (# "sub.ovf" 0n x : nativeint #) when ^T : sbyte = (# "sub.ovf" 0y x : sbyte #) when ^T : decimal = (# "" (System.Decimal.op_UnaryNegation((# "" x : decimal #))) : ^T #) let inline ( * ) (x: ^T) (y: ^U) : ^V = CheckedMultiplyDynamic<(^T),(^U),(^V)> x y when ^T : sbyte and ^U : sbyte = (# "conv.ovf.i1" (# "mul.ovf" x y : int32 #) : sbyte #) when ^T : int16 and ^U : int16 = (# "conv.ovf.i2" (# "mul.ovf" x y : int32 #) : int16 #) when ^T : int64 and ^U : int64 = (# "mul.ovf" x y : int64 #) when ^T : int32 and ^U : int32 = (# "mul.ovf" x y : int32 #) when ^T : nativeint and ^U : nativeint = (# "mul.ovf" x y : nativeint #) when ^T : byte and ^U : byte = (# "conv.ovf.u1.un" (# "mul.ovf.un" x y : uint32 #) : byte #) when ^T : uint16 and ^U : uint16 = (# "conv.ovf.u2.un" (# "mul.ovf.un" x y : uint32 #) : uint16 #) when ^T : uint32 and ^U : uint32 = (# "mul.ovf.un" x y : uint32 #) when ^T : uint64 and ^U : uint64 = (# "mul.ovf.un" x y : uint64 #) when ^T : unativeint and ^U : unativeint = (# "mul.ovf.un" x y : unativeint #) when ^T : float and ^U : float = (# "mul" x y : float #) when ^T : float32 and ^U : float32 = (# "mul" x y : float32 #) when ^T : decimal and ^U : decimal = (# "" (System.Decimal.op_Multiply((# "" x : decimal #),(# "" y : decimal #))) : ^V #) // According to the somewhat subtle rules of static optimizations, // this condition is used whenever ^T is resolved to a nominal type // That is, not in the generic implementation of '*' when ^T : ^T = ((^T or ^U): (static member (*) : ^T * ^U -> ^V) (x,y)) [] [] let inline byte (x: ^T) = (^T : (static member op_Explicit: ^T -> byte) (x)) when ^T : string = parseByte (castToString x) when ^T : float = (# "conv.ovf.u1" x : byte #) when ^T : float32 = (# "conv.ovf.u1" x : byte #) when ^T : int64 = (# "conv.ovf.u1" x : byte #) when ^T : int32 = (# "conv.ovf.u1" x : byte #) when ^T : int16 = (# "conv.ovf.u1" x : byte #) when ^T : nativeint = (# "conv.ovf.u1" x : byte #) when ^T : sbyte = (# "conv.ovf.u1" x : byte #) when ^T : uint64 = (# "conv.ovf.u1.un" x : byte #) when ^T : uint32 = (# "conv.ovf.u1.un" x : byte #) when ^T : uint16 = (# "conv.ovf.u1.un" x : byte #) when ^T : char = (# "conv.ovf.u1.un" x : byte #) when ^T : unativeint = (# "conv.ovf.u1.un" x : byte #) when ^T : byte = (# "conv.ovf.u1.un" x : byte #) [] [] let inline sbyte (x: ^T) = (^T : (static member op_Explicit: ^T -> sbyte) (x)) when ^T : string = ParseSByte (castToString x) when ^T : float = (# "conv.ovf.i1" x : sbyte #) when ^T : float32 = (# "conv.ovf.i1" x : sbyte #) when ^T : int64 = (# "conv.ovf.i1" x : sbyte #) when ^T : int32 = (# "conv.ovf.i1" x : sbyte #) when ^T : int16 = (# "conv.ovf.i1" x : sbyte #) when ^T : nativeint = (# "conv.ovf.i1" x : sbyte #) when ^T : sbyte = (# "conv.ovf.i1" x : sbyte #) when ^T : uint64 = (# "conv.ovf.i1.un" x : sbyte #) when ^T : uint32 = (# "conv.ovf.i1.un" x : sbyte #) when ^T : uint16 = (# "conv.ovf.i1.un" x : sbyte #) when ^T : char = (# "conv.ovf.i1.un" x : sbyte #) when ^T : unativeint = (# "conv.ovf.i1.un" x : sbyte #) when ^T : byte = (# "conv.ovf.i1.un" x : sbyte #) [] [] let inline uint16 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint16) (x)) when ^T : string = ParseUInt16 (castToString x) when ^T : float = (# "conv.ovf.u2" x : uint16 #) when ^T : float32 = (# "conv.ovf.u2" x : uint16 #) when ^T : int64 = (# "conv.ovf.u2" x : uint16 #) when ^T : int32 = (# "conv.ovf.u2" x : uint16 #) when ^T : int16 = (# "conv.ovf.u2" x : uint16 #) when ^T : nativeint = (# "conv.ovf.u2" x : uint16 #) when ^T : sbyte = (# "conv.ovf.u2" x : uint16 #) when ^T : uint64 = (# "conv.ovf.u2.un" x : uint16 #) when ^T : uint32 = (# "conv.ovf.u2.un" x : uint16 #) when ^T : uint16 = (# "conv.ovf.u2.un" x : uint16 #) when ^T : char = (# "conv.ovf.u2.un" x : uint16 #) when ^T : unativeint = (# "conv.ovf.u2.un" x : uint16 #) when ^T : byte = (# "conv.ovf.u2.un" x : uint16 #) [] [] let inline char (x: ^T) = (^T : (static member op_Explicit: ^T -> char) (x)) #if FX_NO_CHAR_PARSE when ^T : string = (charParse (castToString x)) #else when ^T : string = (System.Char.Parse(castToString x)) #endif when ^T : float = (# "conv.ovf.u2" x : char #) when ^T : float32 = (# "conv.ovf.u2" x : char #) when ^T : int64 = (# "conv.ovf.u2" x : char #) when ^T : int32 = (# "conv.ovf.u2" x : char #) when ^T : int16 = (# "conv.ovf.u2" x : char #) when ^T : nativeint = (# "conv.ovf.u2" x : char #) when ^T : sbyte = (# "conv.ovf.u2" x : char #) when ^T : uint64 = (# "conv.ovf.u2.un" x : char #) when ^T : uint32 = (# "conv.ovf.u2.un" x : char #) when ^T : uint16 = (# "conv.ovf.u2.un" x : char #) when ^T : char = (# "conv.ovf.u2.un" x : char #) when ^T : unativeint = (# "conv.ovf.u2.un" x : char #) when ^T : byte = (# "conv.ovf.u2.un" x : char #) [] [] let inline int16 (x: ^T) = (^T : (static member op_Explicit: ^T -> int16) (x)) when ^T : string = ParseInt16 (castToString x) when ^T : float = (# "conv.ovf.i2" x : int16 #) when ^T : float32 = (# "conv.ovf.i2" x : int16 #) when ^T : int64 = (# "conv.ovf.i2" x : int16 #) when ^T : int32 = (# "conv.ovf.i2" x : int16 #) when ^T : int16 = (# "conv.ovf.i2" x : int16 #) when ^T : nativeint = (# "conv.ovf.i2" x : int16 #) when ^T : sbyte = (# "conv.ovf.i2" x : int16 #) when ^T : uint64 = (# "conv.ovf.i2.un" x : int16 #) when ^T : uint32 = (# "conv.ovf.i2.un" x : int16 #) when ^T : uint16 = (# "conv.ovf.i2.un" x : int16 #) when ^T : char = (# "conv.ovf.i2.un" x : int16 #) when ^T : unativeint = (# "conv.ovf.i2.un" x : int16 #) when ^T : byte = (# "conv.ovf.i2.un" x : int16 #) [] [] let inline uint32 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint32) (x)) when ^T : string = ParseUInt32 (castToString x) when ^T : float = (# "conv.ovf.u4" x : uint32 #) when ^T : float32 = (# "conv.ovf.u4" x : uint32 #) when ^T : int64 = (# "conv.ovf.u4" x : uint32 #) when ^T : int32 = (# "conv.ovf.u4" x : uint32 #) when ^T : int16 = (# "conv.ovf.u4" x : uint32 #) when ^T : nativeint = (# "conv.ovf.u4" x : uint32 #) when ^T : sbyte = (# "conv.ovf.u4" x : uint32 #) when ^T : uint64 = (# "conv.ovf.u4.un" x : uint32 #) when ^T : uint32 = (# "conv.ovf.u4.un" x : uint32 #) when ^T : uint16 = (# "conv.ovf.u4.un" x : uint32 #) when ^T : char = (# "conv.ovf.u4.un" x : uint32 #) when ^T : unativeint = (# "conv.ovf.u4.un" x : uint32 #) when ^T : byte = (# "conv.ovf.u4.un" x : uint32 #) [] [] let inline int32 (x: ^T) = (^T : (static member op_Explicit: ^T -> int32) (x)) when ^T : string = ParseInt32 (castToString x) when ^T : float = (# "conv.ovf.i4" x : int32 #) when ^T : float32 = (# "conv.ovf.i4" x : int32 #) when ^T : int64 = (# "conv.ovf.i4" x : int32 #) when ^T : int32 = (# "conv.ovf.i4" x : int32 #) when ^T : int16 = (# "conv.ovf.i4" x : int32 #) when ^T : nativeint = (# "conv.ovf.i4" x : int32 #) when ^T : sbyte = (# "conv.ovf.i4" x : int32 #) when ^T : uint64 = (# "conv.ovf.i4.un" x : int32 #) when ^T : uint32 = (# "conv.ovf.i4.un" x : int32 #) when ^T : uint16 = (# "conv.ovf.i4.un" x : int32 #) when ^T : char = (# "conv.ovf.i4.un" x : int32 #) when ^T : unativeint = (# "conv.ovf.i4.un" x : int32 #) when ^T : byte = (# "conv.ovf.i4.un" x : int32 #) [] let inline int x = int32 x [] [] let inline uint64 (x: ^T) = (^T : (static member op_Explicit: ^T -> uint64) (x)) when ^T : string = ParseUInt64 (castToString x) when ^T : float = (# "conv.ovf.u8" x : uint64 #) when ^T : float32 = (# "conv.ovf.u8" x : uint64 #) when ^T : int64 = (# "conv.ovf.u8" x : uint64 #) when ^T : int32 = (# "conv.ovf.u8" x : uint64 #) when ^T : int16 = (# "conv.ovf.u8" x : uint64 #) when ^T : nativeint = (# "conv.ovf.u8" x : uint64 #) when ^T : sbyte = (# "conv.ovf.u8" x : uint64 #) when ^T : uint64 = (# "conv.ovf.u8.un" x : uint64 #) when ^T : uint32 = (# "conv.ovf.u8.un" x : uint64 #) when ^T : uint16 = (# "conv.ovf.u8.un" x : uint64 #) when ^T : char = (# "conv.ovf.u8.un" x : uint64 #) when ^T : unativeint = (# "conv.ovf.u8.un" x : uint64 #) when ^T : byte = (# "conv.ovf.u8.un" x : uint64 #) [] [] let inline int64 (x: ^T) = (^T : (static member op_Explicit: ^T -> int64) (x)) when ^T : string = ParseInt64 (castToString x) when ^T : float = (# "conv.ovf.i8" x : int64 #) when ^T : float32 = (# "conv.ovf.i8" x : int64 #) when ^T : int64 = (# "conv.ovf.i8" x : int64 #) when ^T : int32 = (# "conv.ovf.i8" x : int64 #) when ^T : int16 = (# "conv.ovf.i8" x : int64 #) when ^T : nativeint = (# "conv.ovf.i8" x : int64 #) when ^T : sbyte = (# "conv.ovf.i8" x : int64 #) when ^T : uint64 = (# "conv.ovf.i8.un" x : int64 #) when ^T : uint32 = (# "conv.ovf.i8.un" x : int64 #) when ^T : uint16 = (# "conv.ovf.i8.un" x : int64 #) when ^T : char = (# "conv.ovf.i8.un" x : int64 #) when ^T : unativeint = (# "conv.ovf.i8.un" x : int64 #) when ^T : byte = (# "conv.ovf.i8.un" x : int64 #) [] [] let inline unativeint (x: ^T) = (^T : (static member op_Explicit: ^T -> unativeint) (x)) when ^T : string = ParseUIntPtr (castToString x) when ^T : float = (# "conv.ovf.u" x : unativeint #) when ^T : float32 = (# "conv.ovf.u" x : unativeint #) when ^T : int64 = (# "conv.ovf.u" x : unativeint #) when ^T : int32 = (# "conv.ovf.u" x : unativeint #) when ^T : int16 = (# "conv.ovf.u" x : unativeint #) when ^T : nativeint = (# "conv.ovf.u" x : unativeint #) when ^T : sbyte = (# "conv.ovf.u" x : unativeint #) when ^T : uint64 = (# "conv.ovf.u.un" x : unativeint #) when ^T : uint32 = (# "conv.ovf.u.un" x : unativeint #) when ^T : uint16 = (# "conv.ovf.u.un" x : unativeint #) when ^T : char = (# "conv.ovf.u.un" x : unativeint #) when ^T : unativeint = (# "conv.ovf.u.un" x : unativeint #) when ^T : byte = (# "conv.ovf.u.un" x : unativeint #) [] [] let inline nativeint (x: ^T) = (^T : (static member op_Explicit: ^T -> nativeint) (x)) when ^T : string = ParseIntPtr (castToString x) when ^T : float = (# "conv.ovf.i" x : nativeint #) when ^T : float32 = (# "conv.ovf.i" x : nativeint #) when ^T : int64 = (# "conv.ovf.i" x : nativeint #) when ^T : int32 = (# "conv.ovf.i" x : nativeint #) when ^T : int16 = (# "conv.ovf.i" x : nativeint #) when ^T : nativeint = (# "conv.ovf.i" x : nativeint #) when ^T : sbyte = (# "conv.ovf.i" x : nativeint #) when ^T : uint64 = (# "conv.ovf.i.un" x : nativeint #) when ^T : uint32 = (# "conv.ovf.i.un" x : nativeint #) when ^T : uint16 = (# "conv.ovf.i.un" x : nativeint #) when ^T : char = (# "conv.ovf.i.un" x : nativeint #) when ^T : unativeint = (# "conv.ovf.i.un" x : nativeint #) when ^T : byte = (# "conv.ovf.i.un" x : nativeint #) #if NAN_INFINITY_MEASURES module Measure = let infinity<[] 'Measure> : float<'Measure> = LanguagePrimitives.FloatWithMeasure System.Double.PositiveInfinity let nan<[] 'Measure> : float<'Measure> = LanguagePrimitives.FloatWithMeasure System.Double.NaN let infinityf<[] 'Measure> : float32<'Measure> = LanguagePrimitives.Float32WithMeasure System.Single.PositiveInfinity let nanf<[] 'Measure> : float32<'Measure> = LanguagePrimitives.Float32WithMeasure System.Single.NaN #endif module OperatorIntrinsics = begin open System.Collections let notStarted() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationNotStarted))) let alreadyFinished() = raise (new System.InvalidOperationException(SR.GetString(SR.enumerationAlreadyFinished))) // Notes on "inline" with range ienumerable generation. // "inline" is used to ensure that primitive ops like add,sub etc. are direct calls. // However, it is not used to ensure all explicit lambda arguments can be reduced by the optimiser. type Mode = | NotStarted = 0 | Running = 1 | Finished = 2 [] type BaseRangeEnumerator<'T>() = // Generate enumerator from mutable state "z". // Marked "inline" to ensure argument functions are reduced (by optimiser). let mutable mode = Mode.NotStarted let getCurrent(x:BaseRangeEnumerator<'T>) = match mode with | Mode.NotStarted -> notStarted() | Mode.Running -> x.Current | _ -> alreadyFinished() interface IEnumerator<'T> with member x.Current = getCurrent(x) interface System.Collections.IEnumerator with member x.Current = box (getCurrent(x)) member x.MoveNext() = match mode with | Mode.NotStarted -> if x.CanStart then (mode <- Mode.Running; true) else (mode <- Mode.Finished; false) | Mode.Running -> if x.CanStep then true else (mode <- Mode.Finished; false) | _ -> false member x.Reset() = mode <- Mode.NotStarted x.DoReset() interface System.IDisposable with member x.Dispose() = () abstract CanStart : bool abstract CanStep : bool abstract DoReset : unit -> unit abstract Current : 'T type EmptyEnumerator<'T>() = inherit BaseRangeEnumerator<'T>() override x.CanStart = false override x.CanStep = false override x.DoReset() = () override x.Current = Unchecked.defaultof<_> type SingletonEnumerator<'T>(v:'T) = inherit BaseRangeEnumerator<'T>() override x.CanStart = true override x.CanStep = false override x.DoReset() = () override x.Current = v [] type ProperIntegralRangeEnumerator<'State,'T>(n:'State, m:'State) = // NOTE: The ordering << is an argument. // << will be < or > depending on direction. // Assumes n << m and zero << step (i.e. it's a "proper" range). //-------- // NOTE: "inline" so << becomes direct operation (should be IL comparision operation) inherit BaseRangeEnumerator<'T>() let mutable z : 'State = n override obj.DoReset() = z <- n override obj.Current = obj.Result z override obj.CanStep = let x = z let x' = obj.Step z if obj.Before x' x then false // x+step has wrapped around elif obj.Equal x' x then false // x+step has not moved (unexpected, step<>0) elif obj.Before x x' && obj.Before x' m then (z <- x'; true) // x+step has moved towards end point elif obj.Equal x' m then (z <- x'; true) // x+step has reached end point else false // x+step has passed end point abstract Before: 'State -> 'State -> bool abstract Equal: 'State -> 'State -> bool abstract Step: 'State -> 'State abstract Result: 'State -> 'T let inline enumerator (x : IEnumerator<_>) = x let inline integralRangeStepEnumerator (zero,add,n,step,m,f) : IEnumerator<_> = // Generates sequence z_i where z_i = f (n + i.step) while n + i.step is in region (n,m) if n = m then new SingletonEnumerator<_> (f n) |> enumerator else let up = (n < m) let canStart = not (if up then step < zero else step > zero) // check for interval increasing, step decreasing // generate proper increasing sequence { new ProperIntegralRangeEnumerator<_,_>(n,m) with member x.CanStart = canStart member x.Before a b = if up then (a < b) else (a > b) member x.Equal a b = (a = b) member x.Step a = add a step member x.Result a = f a } |> enumerator // For RangeGeneric, one and add are functions representing the static resolution of GenericOne and (+) // for the particular static type. let inline integralRange<'T> (one:'T, add:'T -> 'T -> 'T, n:'T, m:'T) = let gen() = // Generates sequence z_i where z_i = (n + i.step) while n + i.step is in region (n,m) if n = m then new SingletonEnumerator<_>(n) |> enumerator else let canStart = (n < m) // generate proper increasing sequence { new ProperIntegralRangeEnumerator<_,_>(n,m) with member x.CanStart = canStart member x.Before a b = (a < b) member x.Equal a b = (a = b) member x.Step a = add a one member x.Result a = a } |> enumerator { new IEnumerable<'T> with member x.GetEnumerator() = gen() interface IEnumerable with member x.GetEnumerator() = (gen() :> IEnumerator) } // For RangeStepGeneric, zero and add are functions representing the static resolution of GenericZero and (+) // for the particular static type. let inline integralRangeStep<'T,'Step> (zero:'Step) (add:'T -> 'Step -> 'T) (n:'T, step:'Step, m:'T) = if step = zero then invalidArg "step" (SR.GetString(SR.stepCannotBeZero)); let gen() = integralRangeStepEnumerator (zero, add, n, step, m, id) { new IEnumerable<'T> with member x.GetEnumerator() = gen() interface IEnumerable with member x.GetEnumerator() = (gen() :> IEnumerator) } let inline isNaN x = x <> x // NaN is the only value that does not equal itself. [] type ProperFloatingRangeStepEnumerator<'T>(n:'T, m:'T) = inherit BaseRangeEnumerator<'T>() let mutable z = n override obj.DoReset() = z <- n override obj.Current = z override obj.CanStep = let x = z let x' = obj.Step z // NOTE: The following code is similar to the integer case, but there are differences. // * With floats, there is a NaN case to consider. // * With floats, there should not be any wrapping around arithmetic. // * With floats, x + step == x is possible when step>0. if obj.Equal x' x then false // no movement, loss of precision elif obj.Before x x' && obj.Before x' m then (z <- x'; true) // advanced towards end point elif obj.Equal x' m then (z <- x'; true) // hit end point elif obj.Before m x' then false // passed beyond end point // [includes x' infinite, m finite case] elif not (obj.Equal x' x') then false // x' has become NaN, which is possible... // e.g. -infinity + infinity = NaN //elif lt x' x then failwith // x + step should not move against << // "Broken invariant in F# floating point range" else false // NOTE: The ordering Before is an argument. It will be < or > depending on direction. // We assume assume "Before n m" abstract Before: 'T -> 'T -> bool abstract Equal: 'T -> 'T -> bool abstract Step: 'T -> 'T let inline floatingRangeStepEnumerator n step m = if step = GenericZero then invalidArg "step" (SR.GetString(SR.stepCannotBeZero)); if isNaN n then invalidArg "n" (SR.GetString(SR.startCannotBeNaN)); if isNaN step then invalidArg "step" (SR.GetString(SR.stepCannotBeNaN)); if isNaN m then invalidArg "m" (SR.GetString(SR.endCannotBeNaN)); if n = m then new SingletonEnumerator<_>(n) |> enumerator else let up = (n < m) let canStart = not (if up then step < GenericZero else step > GenericZero) // interval increasing, step decreasing // generate proper increasing sequence { new ProperFloatingRangeStepEnumerator<_>(n, m) with member x.CanStart = canStart member x.Before a b = if up then (a < b) else (a > b) member x.Equal a b = (a = b) member x.Step a = a + step } |> enumerator // When is a System.Double an System.Int32? let minIntR = -2147483648.0 let maxIntR = 2147483647.0 let isPreciseInt x = minIntR <= x && x <= maxIntR && System.Math.Floor x = x // When a floating range looks like an exact number of steps, generate using {n+i.step} for i from an integer range. let inline semiPreciseFloatingRangeEnumerator ofInt n dx m = let numSteps = float ((m - n) / dx) if isPreciseInt numSteps then integralRangeStepEnumerator(0, (+), 0, 1, int numSteps, (fun i -> n + (ofInt i * dx))) else floatingRangeStepEnumerator n dx m let inline floatingRange ofInt (n,step,m) = let gen() = semiPreciseFloatingRangeEnumerator ofInt n step m { new IEnumerable<'T> with member x.GetEnumerator() = gen() interface System.Collections.IEnumerable with member x.GetEnumerator() = (gen() :> System.Collections.IEnumerator) } let RangeInt32 n step m : seq = integralRangeStep 0 (+) (n,step,m) let RangeInt64 n step m : seq = integralRangeStep 0L (+) (n,step,m) let RangeUInt64 n step m : seq = integralRangeStep 0UL (+) (n,step,m) let RangeUInt32 n step m : seq = integralRangeStep 0ul (+) (n,step,m) let RangeIntPtr n step m : seq = integralRangeStep 0n (+) (n,step,m) let RangeUIntPtr n step m : seq = integralRangeStep 0un (+) (n,step,m) let RangeInt16 n step m : seq = integralRangeStep 0s (+) (n,step,m) let RangeUInt16 n step m : seq = integralRangeStep 0us (+) (n,step,m) let RangeSByte n step m : seq = integralRangeStep 0y (+) (n,step,m) let RangeByte n step m : seq = integralRangeStep 0uy (+) (n,step,m) let RangeDouble n step m : seq = floatingRange float (n,step,m) let RangeSingle n step m : seq = floatingRange float32 (n,step,m) let RangeGeneric one add n m : seq<'T> = integralRange (one,add,n,m) let RangeStepGeneric zero add n step m : seq<'T> = integralRangeStep zero add (n,step,m) let RangeChar (n:char) (m:char) = integralRange ((retype 1us : char),(fun (x:char) (y:char) -> retype ((retype x : uint16) + (retype y : uint16)) ),n,m) let inline toFloat (x:float32) = (# "conv.r8" x : float #) let inline toFloat32 (x:float) = (# "conv.r4" x : float32 #) let inline ComputePowerGenericInlined one mul x n = let rec loop n = match n with | 0 -> one | 1 -> x | 2 -> mul x x | 3 -> mul (mul x x) x | 4 -> let v = mul x x in mul v v | _ -> let v = loop (n/2) in let v = mul v v in if n%2 = 0 then v else mul v x in loop n [] let PowByte (x:byte) n = ComputePowerGenericInlined 1uy Checked.( * ) x n [] let PowSByte (x:sbyte) n = ComputePowerGenericInlined 1y Checked.( * ) x n [] let PowInt16 (x:int16) n = ComputePowerGenericInlined 1s Checked.( * ) x n [] let PowUInt16 (x:uint16) n = ComputePowerGenericInlined 1us Checked.( * ) x n [] let PowInt32 (x:int32) n = ComputePowerGenericInlined 1 Checked.( * ) x n [] let PowUInt32 (x:uint32) n = ComputePowerGenericInlined 1u Checked.( * ) x n [] let PowInt64 (x:int64) n = ComputePowerGenericInlined 1L Checked.( * ) x n [] let PowUInt64 (x:uint64) n = ComputePowerGenericInlined 1UL Checked.( * ) x n [] let PowIntPtr (x:nativeint) n = ComputePowerGenericInlined 1n Checked.( * ) x n [] let PowUIntPtr (x:unativeint) n = ComputePowerGenericInlined 1un Checked.( * ) x n [] let PowSingle (x:float32) n = ComputePowerGenericInlined 1.0f Checked.( * ) x n [] let PowDouble (x:float) n = ComputePowerGenericInlined 1.0 Checked.( * ) x n [] let PowDecimal (x:decimal) n = ComputePowerGenericInlined 1.0M Checked.( * ) x n [] let PowGeneric (one,mul,x:'T,n) = ComputePowerGenericInlined one mul x n let inline GetArraySlice (arr: _[]) start finish = let start = (match start with None -> 0 | Some n -> n) let finish = (match finish with None -> arr.Length - 1 | Some n -> n) GetArraySub arr start (finish - start + 1) let inline SetArraySlice (dst: _[]) start finish (src:_[]) = let start = (match start with None -> 0 | Some n -> n) let finish = (match finish with None -> dst.Length - 1 | Some n -> n) SetArraySub dst start (finish - start + 1) src let GetArraySlice2D (arr: _[,]) start1 finish1 start2 finish2 = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> GetArray2DLength1 arr - 1 | Some n -> n) let finish2 = (match finish2 with None -> GetArray2DLength2 arr - 1 | Some n -> n) let len1 = (finish1 - start1 + 1) let len2 = (finish2 - start2 + 1) GetArray2DSub arr start1 start2 len1 len2 let SetArraySlice2D (dst: _[,]) start1 finish1 start2 finish2 (src:_[,]) = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> GetArray2DLength1 dst - 1 | Some n -> n) let finish2 = (match finish2 with None -> GetArray2DLength2 dst - 1 | Some n -> n) SetArray2DSub dst start1 start2 (finish1 - start1 + 1) (finish2 - start2 + 1) src let GetArraySlice3D (arr: _[,,]) start1 finish1 start2 finish2 start3 finish3 = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let start3 = (match start3 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> GetArray3DLength1 arr - 1 | Some n -> n) let finish2 = (match finish2 with None -> GetArray3DLength2 arr - 1 | Some n -> n) let finish3 = (match finish3 with None -> GetArray3DLength3 arr - 1 | Some n -> n) let len1 = (finish1 - start1 + 1) let len2 = (finish2 - start2 + 1) let len3 = (finish3 - start3 + 1) GetArray3DSub arr start1 start2 start3 len1 len2 len3 let SetArraySlice3D (dst: _[,,]) start1 finish1 start2 finish2 start3 finish3 (src:_[,,]) = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let start3 = (match start3 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> GetArray3DLength1 dst - 1 | Some n -> n) let finish2 = (match finish2 with None -> GetArray3DLength2 dst - 1 | Some n -> n) let finish3 = (match finish3 with None -> GetArray3DLength3 dst - 1 | Some n -> n) SetArray3DSub dst start1 start2 start3 (finish1 - start1 + 1) (finish2 - start2 + 1) (finish3 - start3 + 1) src let GetArraySlice4D (arr: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let start3 = (match start3 with None -> 0 | Some n -> n) let start4 = (match start4 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> Array4DLength1 arr - 1 | Some n -> n) let finish2 = (match finish2 with None -> Array4DLength2 arr - 1 | Some n -> n) let finish3 = (match finish3 with None -> Array4DLength3 arr - 1 | Some n -> n) let finish4 = (match finish4 with None -> Array4DLength4 arr - 1 | Some n -> n) let len1 = (finish1 - start1 + 1) let len2 = (finish2 - start2 + 1) let len3 = (finish3 - start3 + 1) let len4 = (finish4 - start4 + 1) GetArray4DSub arr start1 start2 start3 start4 len1 len2 len3 len4 let SetArraySlice4D (dst: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 (src:_[,,,]) = let start1 = (match start1 with None -> 0 | Some n -> n) let start2 = (match start2 with None -> 0 | Some n -> n) let start3 = (match start3 with None -> 0 | Some n -> n) let start4 = (match start4 with None -> 0 | Some n -> n) let finish1 = (match finish1 with None -> Array4DLength1 dst - 1 | Some n -> n) let finish2 = (match finish2 with None -> Array4DLength2 dst - 1 | Some n -> n) let finish3 = (match finish3 with None -> Array4DLength3 dst - 1 | Some n -> n) let finish4 = (match finish4 with None -> Array4DLength4 dst - 1 | Some n -> n) SetArray4DSub dst start1 start2 start3 start4 (finish1 - start1 + 1) (finish2 - start2 + 1) (finish3 - start3 + 1) (finish4 - start4 + 1) src let inline GetStringSlice (str:string) start finish = let start = (match start with None -> 0 | Some n -> n) let finish = (match finish with None -> str.Length - 1 | Some n -> n) str.Substring(start, finish-start+1) [] let inline absImpl (x: ^T) : ^T = (^T: (static member Abs : ^T -> ^T) (x)) when ^T : int32 = let x : int32 = retype x in System.Math.Abs(x) when ^T : float = let x : float = retype x in System.Math.Abs(x) when ^T : float32 = let x : float32 = retype x in System.Math.Abs(x) when ^T : int64 = let x : int64 = retype x in System.Math.Abs(x) when ^T : nativeint = let x : nativeint = retype x in if x >= 0n then x else let res = -x in if res < 0n then raise (System.OverflowException(ErrorStrings.NoNegateMinValueString)) res when ^T : int16 = let x : int16 = retype x in System.Math.Abs(x) when ^T : sbyte = let x : sbyte = retype x in System.Math.Abs(x) when ^T : decimal = System.Math.Abs(retype x : decimal) [] let inline acosImpl(x: ^T) : ^T = (^T: (static member Acos : ^T -> ^T) (x)) when ^T : float = System.Math.Acos(retype x) when ^T : float32 = System.Math.Acos(toFloat (retype x)) |> toFloat32 [] let inline asinImpl(x: ^T) : ^T = (^T: (static member Asin : ^T -> ^T) (x)) when ^T : float = System.Math.Asin(retype x) when ^T : float32 = System.Math.Asin(toFloat (retype x)) |> toFloat32 [] let inline atanImpl(x: ^T) : ^T = (^T: (static member Atan : ^T -> ^T) (x)) when ^T : float = System.Math.Atan(retype x) when ^T : float32 = System.Math.Atan(toFloat (retype x)) |> toFloat32 [] let inline atan2Impl(x: ^T) (y: ^T) : 'U = (^T: (static member Atan2 : ^T * ^T -> 'U) (x,y)) when ^T : float = System.Math.Atan2(retype x, retype y) when ^T : float32 = System.Math.Atan2(toFloat (retype x), toFloat(retype y)) |> toFloat32 [] let inline ceilImpl(x: ^T) : ^T = (^T: (static member Ceiling : ^T -> ^T) (x)) when ^T : float = System.Math.Ceiling(retype x : float) when ^T : float32 = System.Math.Ceiling(toFloat (retype x)) |> toFloat32 [] let inline expImpl(x: ^T) : ^T = (^T: (static member Exp : ^T -> ^T) (x)) when ^T : float = System.Math.Exp(retype x) when ^T : float32 = System.Math.Exp(toFloat (retype x)) |> toFloat32 [] let inline floorImpl (x: ^T) : ^T = (^T: (static member Floor : ^T -> ^T) (x)) when ^T : float = System.Math.Floor(retype x : float) when ^T : float32 = System.Math.Floor(toFloat (retype x)) |> toFloat32 [] let inline truncateImpl (x: ^T) : ^T = (^T: (static member Truncate : ^T -> ^T) (x)) #if FX_NO_TRUNCATE when ^T : float = 0.0 when ^T : float32 = 0.0 #else when ^T : float = System.Math.Truncate(retype x : float) when ^T : float32 = System.Math.Truncate(toFloat (retype x)) |> toFloat32 #endif [] let inline roundImpl (x: ^T) : ^T = (^T: (static member Round : ^T -> ^T) (x)) when ^T : float = System.Math.Round(retype x : float) when ^T : float32 = System.Math.Round(toFloat (retype x)) |> toFloat32 [] let inline signImpl (x: ^T) : int = (^T: (member Sign : int) (x)) when ^T : int32 = System.Math.Sign(retype x : int32) when ^T : int64 = System.Math.Sign(retype x : int64) when ^T : nativeint = if (retype x : nativeint) < 0n then -1 else if (retype x : nativeint) > 0n then 1 else 0 when ^T : int16 = System.Math.Sign(retype x : int16) when ^T : sbyte = System.Math.Sign(retype x : sbyte) when ^T : float = System.Math.Sign(retype x : float) when ^T : float32 = System.Math.Sign(toFloat (retype x)) when ^T : decimal = System.Math.Sign(retype x : decimal) [] let inline logImpl(x: ^T) : ^T = (^T: (static member Log : ^T -> ^T) (x)) when ^T : float = System.Math.Log(retype x) when ^T : float32 = System.Math.Log(toFloat (retype x)) |> toFloat32 [] let inline log10Impl(x: ^T) : ^T = (^T: (static member Log10 : ^T -> ^T) (x)) when ^T : float = System.Math.Log10(retype x) when ^T : float32 = System.Math.Log10(toFloat (retype x)) |> toFloat32 [] let inline sqrtImpl(x: ^T) : ^U = (^T: (static member Sqrt : ^T -> ^U) (x)) when ^T : float = System.Math.Sqrt(retype x : float) when ^T : float32 = System.Math.Sqrt(toFloat (retype x)) |> toFloat32 [] let inline cosImpl(x: ^T) : ^T = (^T: (static member Cos : ^T -> ^T) (x)) when ^T : float = System.Math.Cos(retype x) when ^T : float32 = System.Math.Cos(toFloat (retype x)) |> toFloat32 [] let inline coshImpl(x: ^T) : ^T = (^T: (static member Cosh : ^T -> ^T) (x)) when ^T : float = System.Math.Cosh(retype x) when ^T : float32 = System.Math.Cosh(toFloat (retype x)) |> toFloat32 [] let inline sinImpl(x: ^T) : ^T = (^T: (static member Sin : ^T -> ^T) (x)) when ^T : float = System.Math.Sin(retype x) when ^T : float32 = System.Math.Sin(toFloat (retype x)) |> toFloat32 [] let inline sinhImpl(x: ^T) : ^T = (^T: (static member Sinh : ^T -> ^T) (x)) when ^T : float = System.Math.Sinh(retype x) when ^T : float32 = System.Math.Sinh(toFloat (retype x)) |> toFloat32 [] let inline tanImpl(x: ^T) : ^T = (^T: (static member Tan : ^T -> ^T) (x)) when ^T : float = System.Math.Tan(retype x) when ^T : float32 = System.Math.Tan(toFloat (retype x)) |> toFloat32 [] let inline tanhImpl(x: ^T) : ^T = (^T: (static member Tanh : ^T -> ^T) (x)) when ^T : float = System.Math.Tanh(retype x) when ^T : float32 = System.Math.Tanh(toFloat (retype x)) |> toFloat32 [] let inline powImpl (x: ^T) (y: ^U) : ^T = (^T: (static member Pow : ^T * ^U -> ^T) (x,y)) when ^T : float = System.Math.Pow((retype x : float), (retype y: float)) when ^T : float32 = System.Math.Pow(toFloat (retype x), toFloat(retype y)) |> toFloat32 [] let UnaryDynamicImpl nm : ('T -> 'U) = let aty = typeof<'T> let minfo = aty.GetMethod(nm, [| aty |]) (fun x -> unboxPrim<_>(minfo.Invoke(null,[| box x|]))) let BinaryDynamicImpl nm : ('T -> 'U -> 'V) = let aty = typeof<'T> let bty = typeof<'U> let minfo = aty.GetMethod(nm,[| aty;bty |]) (fun x y -> unboxPrim<_>(minfo.Invoke(null,[| box x; box y|]))) [] type AbsDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:sbyte) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int16) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int32) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int64) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:nativeint) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> absImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:decimal) -> absImpl x) else UnaryDynamicImpl "Abs" static member Result : ('T -> 'T) = result [] type AcosDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> acosImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> acosImpl x) else UnaryDynamicImpl "Acos" static member Result : ('T -> 'T) = result [] type AsinDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> asinImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> asinImpl x) else UnaryDynamicImpl "Asin" static member Result : ('T -> 'T) = result [] type AtanDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> atanImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> atanImpl x) else UnaryDynamicImpl "Atan" static member Result : ('T -> 'T) = result [] type Atan2DynamicImplTable<'T,'U>() = static let result : ('T -> 'T -> 'U) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) (y:float) -> atan2Impl x y) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) (y:float32) -> atan2Impl x y) else BinaryDynamicImpl "Atan2" static member Result : ('T -> 'T -> 'U) = result [] type CeilingDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> ceilImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> ceilImpl x) else UnaryDynamicImpl "Ceiling" static member Result : ('T -> 'T) = result [] type ExpDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> expImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> expImpl x) else UnaryDynamicImpl "Exp" static member Result : ('T -> 'T) = result [] type FloorDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> floorImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> floorImpl x) else UnaryDynamicImpl "Floor" static member Result : ('T -> 'T) = result [] type TruncateDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> truncateImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> truncateImpl x) else UnaryDynamicImpl "Truncate" static member Result : ('T -> 'T) = result [] type RoundDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> roundImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> roundImpl x) else UnaryDynamicImpl "Round" static member Result : ('T -> 'T) = result [] type SignDynamicImplTable<'T>() = static let result : ('T -> int) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:nativeint) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:decimal) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int16) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int32) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:int64) -> signImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:sbyte) -> signImpl x) else UnaryDynamicImpl "Sign" static member Result : ('T -> int) = result [] type LogDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> logImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> logImpl x) else UnaryDynamicImpl "Log" static member Result : ('T -> 'T) = result [] type Log10DynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> log10Impl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> log10Impl x) else UnaryDynamicImpl "Log10" static member Result : ('T -> 'T) = result [] type SqrtDynamicImplTable<'T,'U>() = static let result : ('T -> 'U) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> sqrtImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> sqrtImpl x) else UnaryDynamicImpl "Sqrt" static member Result : ('T -> 'U) = result [] type CosDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> cosImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> cosImpl x) else UnaryDynamicImpl "Cos" static member Result : ('T -> 'T) = result [] type CoshDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> coshImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> coshImpl x) else UnaryDynamicImpl "Cosh" static member Result : ('T -> 'T) = result [] type SinDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> sinImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> sinImpl x) else UnaryDynamicImpl "Sin" static member Result : ('T -> 'T) = result [] type SinhDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> sinhImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> sinhImpl x) else UnaryDynamicImpl "Sinh" static member Result : ('T -> 'T) = result [] type TanDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> tanImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> tanImpl x) else UnaryDynamicImpl "Tan" static member Result : ('T -> 'T) = result [] type TanhDynamicImplTable<'T>() = static let result : ('T -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) -> tanhImpl x) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) -> tanhImpl x) else UnaryDynamicImpl "Tanh" static member Result : ('T -> 'T) = result [] type PowDynamicImplTable<'T,'U>() = static let result : ('T -> 'U -> 'T) = let aty = typeof<'T> if aty.Equals(typeof) then unboxPrim<_>(fun (x:float) (y:float) -> powImpl x y) elif aty.Equals(typeof) then unboxPrim<_>(fun (x:float32) (y:float32) -> powImpl x y) else BinaryDynamicImpl "Pow" static member Result : ('T -> 'U -> 'T) = result let AbsDynamic x = AbsDynamicImplTable<_>.Result x let AcosDynamic x = AcosDynamicImplTable<_>.Result x let AsinDynamic x = AsinDynamicImplTable<_>.Result x let AtanDynamic x = AtanDynamicImplTable<_>.Result x let Atan2Dynamic x y = Atan2DynamicImplTable<_,_>.Result x y let CeilingDynamic x = CeilingDynamicImplTable<_>.Result x let ExpDynamic x = ExpDynamicImplTable<_>.Result x let FloorDynamic x = FloorDynamicImplTable<_>.Result x let TruncateDynamic x = TruncateDynamicImplTable<_>.Result x let RoundDynamic x = RoundDynamicImplTable<_>.Result x let SignDynamic x = SignDynamicImplTable<_>.Result x let LogDynamic x = LogDynamicImplTable<_>.Result x let Log10Dynamic x = Log10DynamicImplTable<_>.Result x let SqrtDynamic x = SqrtDynamicImplTable<_,_>.Result x let CosDynamic x = CosDynamicImplTable<_>.Result x let CoshDynamic x = CoshDynamicImplTable<_>.Result x let SinDynamic x = SinDynamicImplTable<_>.Result x let SinhDynamic x = SinhDynamicImplTable<_>.Result x let TanDynamic x = TanDynamicImplTable<_>.Result x let TanhDynamic x = TanhDynamicImplTable<_>.Result x let PowDynamic x y = PowDynamicImplTable<_,_>.Result x y end open OperatorIntrinsics let inline (..) (n:^T) (m:^T) = RangeGeneric (GenericOne< (^T) >) Checked.(+) n m when ^T : int32 = RangeInt32 (retype n) 1 (retype m) when ^T : float = RangeDouble (retype n) 1.0 (retype m) when ^T : float32 = RangeSingle (retype n) 1.0f (retype m) when ^T : int64 = RangeInt64 (retype n) 1L (retype m) when ^T : uint64 = RangeUInt64 (retype n) 1UL (retype m) when ^T : uint32 = RangeUInt32 (retype n) 1ul (retype m) when ^T : nativeint = RangeIntPtr (retype n) 1n (retype m) when ^T : unativeint = RangeUIntPtr (retype n) 1un (retype m) when ^T : int16 = RangeInt16 (retype n) 1s (retype m) when ^T : uint16 = RangeUInt16 (retype n) 1us (retype m) when ^T : sbyte = RangeSByte (retype n) 1y (retype m) when ^T : byte = RangeByte (retype n) 1uy (retype m) when ^T : char = RangeChar (retype n) (retype m) let inline (.. ..) (n:^T) (step:^U) (m:^T) = RangeStepGeneric (GenericZero< (^U) >) Checked.(+) n step m when ^T : int32 = RangeInt32 (retype n) (retype step) (retype m) when ^T : float = RangeDouble (retype n) (retype step) (retype m) when ^T : float32 = RangeSingle (retype n) (retype step) (retype m) when ^T : int64 = RangeInt64 (retype n) (retype step) (retype m) when ^T : uint64 = RangeUInt64 (retype n) (retype step) (retype m) when ^T : uint32 = RangeUInt32 (retype n) (retype step) (retype m) when ^T : nativeint = RangeIntPtr (retype n) (retype step) (retype m) when ^T : unativeint = RangeUIntPtr (retype n) (retype step) (retype m) when ^T : int16 = RangeInt16 (retype n) (retype step) (retype m) when ^T : uint16 = RangeUInt16 (retype n) (retype step) (retype m) when ^T : sbyte = RangeSByte (retype n) (retype step) (retype m) when ^T : byte = RangeByte (retype n) (retype step) (retype m) [] let inline abs (x: ^T) : ^T = AbsDynamic x when ^T : ^T = absImpl x [] let inline acos(x: ^T) : ^T = AcosDynamic x when ^T : ^T = acosImpl x [] let inline asin(x: ^T) : ^T = AsinDynamic x when ^T : ^T = asinImpl x [] let inline atan(x: ^T) : ^T = AtanDynamic x when ^T : ^T = atanImpl x [] let inline atan2(x: ^T) (y: ^T) : 'U = Atan2Dynamic x y when ^T : ^T = (atan2Impl x y : 'U) [] let inline ceil(x: ^T) : ^T = CeilingDynamic x when ^T : ^T = ceilImpl x [] let inline exp(x: ^T) : ^T = ExpDynamic x when ^T : ^T = expImpl x [] let inline floor (x: ^T) : ^T = FloorDynamic x when ^T : ^T = floorImpl x [] let inline truncate (x: ^T) : ^T = TruncateDynamic x when ^T : ^T = truncateImpl x [] let inline round (x: ^T) : ^T = RoundDynamic x when ^T : ^T = roundImpl x [] let inline sign (x: ^T) : int = SignDynamic x when ^T : ^T = signImpl x [] let inline log(x: ^T) : ^T = LogDynamic x when ^T : ^T = logImpl x [] let inline log10(x: ^T) : ^T = Log10Dynamic x when ^T : ^T = log10Impl x [] let inline sqrt(x: ^T) : ^U = SqrtDynamic x when ^T : ^T = (sqrtImpl x : ^U) [] let inline cos(x: ^T) : ^T = CosDynamic x when ^T : ^T = cosImpl x [] let inline cosh(x: ^T) : ^T = CoshDynamic x when ^T : ^T = coshImpl x [] let inline sin(x: ^T) : ^T = SinDynamic x when ^T : ^T = sinImpl x [] let inline sinh(x: ^T) : ^T = SinhDynamic x when ^T : ^T = sinhImpl x [] let inline tan(x: ^T) : ^T = TanDynamic x when ^T : ^T = tanImpl x [] let inline tanh(x: ^T) : ^T = TanhDynamic x when ^T : ^T = tanhImpl x let inline ( ** ) (x: ^T) (y: ^U) : ^T = PowDynamic x y when ^T : ^T = powImpl x y let inline gpown (x: ^T) n = let v = PowGeneric (GenericOne< (^T) >, Checked.( * ), x,n) if n < 0 then GenericOne< (^T) > / v else v [] let inline pown (x: ^T) n = (if n = Int32.MinValue then gpown x (n+1) / x else gpown x n) when ^T : int32 = (let x = (retype x : int32) in if x = 2 && n >= 0 && n < 31 then 1 <<< n elif n >= 0 then PowInt32 x n else 1 / PowInt32 x n) when ^T : int64 = (let x = (retype x : int64) in if x = 2L && n >= 0 && n < 63 then 1L <<< n elif n >= 0 then PowInt64 x n else 1L / PowInt64 x n) when ^T : int16 = (let x = (retype x : int16) in if x = 2s && n >= 0 && n < 15 then 1s <<< n elif n >= 0 then PowInt16 x n else 1s / PowInt16 x n) when ^T : sbyte = (let x = (retype x : sbyte) in if x = 2y && n >= 0 && n < 7 then 1y <<< n elif n >= 0 then PowSByte x n else 1y / PowSByte x n) when ^T : nativeint = (let x = (retype x : nativeint) in if x = 2n && n >= 0 && n < 31 then 1n <<< n elif n >= 0 then PowIntPtr x n else 1n / PowIntPtr x n) when ^T : uint32 = (let x = (retype x : uint32) in if x = 2u && n >= 0 && n <= 31 then 1u <<< n elif n >= 0 then PowUInt32 x n else 1u / PowUInt32 x n) when ^T : uint64 = (let x = (retype x : uint64) in if x = 2UL && n >= 0 && n <= 63 then 1UL <<< n elif n >= 0 then PowUInt64 x n else 1UL / PowUInt64 x n) when ^T : uint16 = (let x = (retype x : uint16) in if x = 2us && n >= 0 && n <= 15 then 1us <<< n elif n >= 0 then PowUInt16 x n else 1us / PowUInt16 x n) when ^T : byte = (let x = (retype x : byte) in if x = 2uy && n >= 0 && n <= 7 then 1uy <<< n elif n >= 0 then PowByte x n else 1uy / PowByte x n) when ^T : unativeint = (let x = (retype x : unativeint) in if x = 2un && n >= 0 && n <= 31 then 1un <<< n elif n >= 0 then PowUIntPtr x n else 1un / PowUIntPtr x n) when ^T : float = (let x = (retype x : float) in if n >= 0 then PowDouble x n else 1.0 / PowDouble x n) when ^T : float32 = (let x = (retype x : float32) in if n >= 0 then PowSingle x n else 1.0f / PowSingle x n) when ^T : decimal = (let x = (retype x : decimal) in if n >= 0 then PowDecimal x n else 1.0M / PowDecimal x n) //============================================================================ //============================================================================ #if FX_NO_LAZY #if USE_FX_40_LAZY_ON_FX_20 namespace System.Threading open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators #endif namespace System open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators type LazyFailure(exn:exn) = static let undefined = LazyFailure(InvalidOperationException("a lazy value was accessed during its own initialization")) member x.Exception = exn static member Undefined = undefined [] type Lazy<'T>(value : 'T, funcOrException: obj) = /// This field holds the result of a successful computation. It's initial value is Unchecked.defaultof let mutable value = value /// This field holds either the function to run or a LazyFailure object recording the exception raised /// from running the function. It is null if the thunk has been evaluated successfully. [] let mutable funcOrException = funcOrException static member Create(f: (unit->'T)) : Lazy<'T> = Lazy<'T> (value = Unchecked.defaultof<'T>, funcOrException = box(f) ) static member CreateFromValue(x:'T) : Lazy<'T> = Lazy<'T> (value = x, funcOrException = null) member x.IsValueCreated = (match funcOrException with null -> true | _ -> false) member x.Value = match funcOrException with | null -> value | _ -> // Enter the lock in case another thread is in the process of evaluting the result System.Threading.Monitor.Enter(x); try match funcOrException with | null -> value | :? LazyFailure as res -> raise(res.Exception) | :? (unit -> 'T) as f -> funcOrException <- box(LazyFailure.Undefined) try let res = f () value <- res; funcOrException <- null; res with e -> funcOrException <- box(new LazyFailure(e)); reraise() | _ -> failwith "unreachable" finally System.Threading.Monitor.Exit(x) override x.ToString() = if x.IsValueCreated then if box x.Value = null then "" else x.Value.ToString() else match funcOrException with | :? LazyFailure as res -> match res.Exception with | e when System.Runtime.CompilerServices.RuntimeHelpers.Equals(e,LazyFailure.Undefined) -> "" | e -> e.ToString() | _ -> "" #else #endif namespace Microsoft.FSharp.Control open System open System.Threading open System.Diagnostics open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators module LazyExtensions = type System.Lazy<'T> with #if FX_NO_LAZY [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member Create(f : unit -> 'T) : Lazy<'T> = System.Lazy<'T> (value = Unchecked.defaultof<'T>, funcOrException = box(f) ) [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member CreateFromValue(x:'T) : Lazy<'T> = System.Lazy<'T> (value = x, funcOrException = null) #else [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member Create(f : unit -> 'T) : System.Lazy<'T> = let creator = new System.Func<'T>(f) System.Lazy<'T>(creator, true) [] // give the extension member a 'nice', unmangled compiled name, unique within this module static member CreateFromValue(value : 'T) : System.Lazy<'T> = System.Lazy<'T>.Create(fun () -> value) #endif [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.IsDelayed = not(x.IsValueCreated) [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.IsForced = x.IsValueCreated [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.Force() = x.Value [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.SynchronizedForce() = x.Value [] // give the extension member a 'nice', unmangled compiled name, unique within this module member x.UnsynchronizedForce() = x.Value type Lazy<'T> = System.Lazy<'T> type 'T ``lazy`` = Lazy<'T> //============================================================================ //============================================================================ #if FX_NO_IOBSERVABLE namespace System open Microsoft.FSharp.Core [] type IObserver<'T> = abstract OnNext : value : 'T -> unit abstract OnError : error : exn -> unit abstract OnCompleted : unit -> unit [] type IObservable<'T> = abstract Subscribe : observer : IObserver<'T> -> System.IDisposable; #else #endif namespace Microsoft.FSharp.Control open System open System.Diagnostics open Microsoft.FSharp.Core type IDelegateEvent<'Delegate when 'Delegate :> System.Delegate > = [] abstract AddHandler: handler:'Delegate -> unit [] abstract RemoveHandler: handler:'Delegate -> unit type IEvent<'Delegate,'Args when 'Delegate : delegate<'Args,unit> and 'Delegate :> System.Delegate > = inherit IDelegateEvent<'Delegate> inherit IObservable<'Args> [] [] type Handler<'Args> = delegate of sender:obj * args:'Args -> unit type IEvent<'Args> = IEvent, 'Args> // FxCop suppressions open System.Diagnostics.CodeAnalysis [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] #if FX_NO_TUPLE [] [] [] [] [] [] [] [] #else #endif [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] do() fsharp-3.0.34/src/fsharp/FSharp.Core/array.fs0000775000175000017500000007703312260314606017701 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Diagnostics open System.Collections.Generic open System.Diagnostics.CodeAnalysis open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.SR open Microsoft.FSharp.Core.LanguagePrimitives.ErrorStrings #if FX_NO_ICLONEABLE open Microsoft.FSharp.Core.ICloneableExtensions #else #endif /// Basic operations on arrays [] [] module Array = let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> () [] let length (array: _[]) = array.Length [] let inline init count f = Microsoft.FSharp.Primitives.Basics.Array.init count f [] let zeroCreate count = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked count [] let create (count:int) (x:'T) = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) let array = (Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked count : 'T[]) for i = 0 to Operators.Checked.(-) count 1 do // use checked arithmetic here to satisfy FxCop array.[i] <- x array [] let isEmpty (array: 'T[]) = checkNonNull "array" array (array.Length = 0) [] let empty<'T> = ([| |] : 'T []) [] [] let blit (source : 'T[]) sourceIndex (target: 'T[]) targetIndex count = checkNonNull "source" source checkNonNull "target" target if sourceIndex < 0 then invalidArg "sourceIndex" (SR.GetString(SR.inputMustBeNonNegative)) if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) if targetIndex < 0 then invalidArg "targetIndex" (SR.GetString(SR.inputMustBeNonNegative)) if sourceIndex + count > source.Length then invalidArg "count" (SR.GetString(SR.outOfRange)) if targetIndex + count > target.Length then invalidArg "count" (SR.GetString(SR.outOfRange)) Array.Copy(source, sourceIndex, target, targetIndex, count) // for i = 0 to count - 1 do // target.[targetIndex+i] <- source.[sourceIndex + i] let rec concatAddLengths (arrs:'T[][]) i acc = if i >= arrs.Length then acc else concatAddLengths arrs (i+1) (acc + arrs.[i].Length) let rec concatBlit (arrs:'T[][]) i j (tgt:'T[]) = if i < arrs.Length then let h = arrs.[i] let len = h.Length Array.Copy(h, 0, tgt, j, len) concatBlit arrs (i+1) (j+len) tgt let concatArrays (arrs : 'T[][]) = let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked (concatAddLengths arrs 0 0) concatBlit arrs 0 0 res ; res [] let concat (arrays: seq<'T[]>) = checkNonNull "arrays" arrays match arrays with | :? ('T[][]) as ts -> ts |> concatArrays // avoid a clone, since we only read the array | _ -> arrays |> Seq.toArray |> concatArrays [] let collect (f : 'T -> 'U[]) (array : 'T[]) : 'U[]= checkNonNull "array" array let len = array.Length let result = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked<'U[]> len for i = 0 to len - 1 do result.[i] <- f array.[i] concatArrays result [] let append (array1:'T[]) (array2:'T[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let n1 = array1.Length let n2 = array2.Length let res : 'T[] = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked (n1 + n2) Array.Copy(array1, 0, res, 0, n1) Array.Copy(array2, 0, res, n1, n2) res [] let copy (array: 'T[]) = checkNonNull "array" array (array.Clone() :?> 'T[]) // this is marginally faster //let len = array.Length //let res = zeroCreate len //for i = 0 to len - 1 do // res.[i] <- array.[i] //res [] let toList array = checkNonNull "array" array Microsoft.FSharp.Primitives.Basics.List.ofArray array [] let ofList list = checkNonNull "list" list Microsoft.FSharp.Primitives.Basics.List.toArray list [] let inline iter f (array: 'T[]) = checkNonNull "array" array let len = array.Length for i = 0 to len - 1 do f array.[i] [] let inline map (f: 'T -> 'U) (array:'T[]) = checkNonNull "array" array let len = array.Length let res = (Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len : 'U[]) for i = 0 to len - 1 do res.[i] <- f array.[i] res [] let iter2 f (array1: 'T[]) (array2: 'U[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)); for i = 0 to len1 - 1 do f.Invoke(array1.[i], array2.[i]) [] let map2 f (array1: 'T[]) (array2: 'U[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)); let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len1 for i = 0 to len1 - 1 do res.[i] <- f.Invoke(array1.[i], array2.[i]) res [] let mapi2 f (array1: 'T[]) (array2: 'U[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)); let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len1 for i = 0 to len1 - 1 do res.[i] <- f.Invoke(i,array1.[i], array2.[i]) res [] let iteri f (array:'T[]) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len = array.Length for i = 0 to len - 1 do f.Invoke(i, array.[i]) [] let iteri2 f (array1: 'T[]) (array2: 'U[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)); for i = 0 to len1 - 1 do f.Invoke(i,array1.[i], array2.[i]) [] let mapi (f : int -> 'T -> 'U) (array: 'T[]) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len = array.Length let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len for i = 0 to len - 1 do res.[i] <- f.Invoke(i,array.[i]) res [] let exists (f: 'T -> bool) (array:'T[]) = checkNonNull "array" array let len = array.Length let rec loop i = i < len && (f array.[i] || loop (i+1)) loop 0 [] let exists2 f (array1: _[]) (array2: _[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) let rec loop i = i < len1 && (f.Invoke(array1.[i], array2.[i]) || loop (i+1)) loop 0 [] let forall (f: 'T -> bool) (array:'T[]) = checkNonNull "array" array let len = array.Length let rec loop i = i >= len || (f array.[i] && loop (i+1)) loop 0 [] let forall2 f (array1: _[]) (array2: _[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) let rec loop i = i >= len1 || (f.Invoke(array1.[i], array2.[i]) && loop (i+1)) loop 0 [] let pick f (array: _[]) = checkNonNull "array" array let rec loop i = if i >= array.Length then raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) else match f array.[i] with | None -> loop(i+1) | Some res -> res loop 0 [] let tryPick f (array: _[]) = checkNonNull "array" array let rec loop i = if i >= array.Length then None else match f array.[i] with | None -> loop(i+1) | res -> res loop 0 [] let choose f (array: _[]) = checkNonNull "array" array let res = new System.Collections.Generic.List<_>() // ResizeArray for i = 0 to array.Length - 1 do match f array.[i] with | None -> () | Some b -> res.Add(b) res.ToArray() [] let filter f (array: _[]) = checkNonNull "array" array let res = new System.Collections.Generic.List<_>() // ResizeArray for i = 0 to array.Length - 1 do let x = array.[i] if f x then res.Add(x) res.ToArray() [] let partition f (array: _[]) = checkNonNull "array" array let res1 = new System.Collections.Generic.List<_>() // ResizeArray let res2 = new System.Collections.Generic.List<_>() // ResizeArray for i = 0 to array.Length - 1 do let x = array.[i] if f x then res1.Add(x) else res2.Add(x) res1.ToArray(), res2.ToArray() [] let find f (array: _[]) = checkNonNull "array" array let rec loop i = if i >= array.Length then raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) else if f array.[i] then array.[i] else loop (i+1) loop 0 [] let tryFind f (array: _[]) = checkNonNull "array" array let rec loop i = if i >= array.Length then None else if f array.[i] then Some array.[i] else loop (i+1) loop 0 [] let zip (array1: _[]) (array2: _[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len1 for i = 0 to len1 - 1 do res.[i] <- (array1.[i],array2.[i]) res [] let zip3 (array1: _[]) (array2: _[]) (array3: _[]) = checkNonNull "array1" array1 checkNonNull "array2" array2 checkNonNull "array3" array3 let len1 = array1.Length if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) if len1 <> array3.Length then invalidArg "array3" (SR.GetString(SR.arraysHadDifferentLengths)) let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len1 for i = 0 to len1 - 1 do res.[i] <- (array1.[i],array2.[i],array3.[i]) res [] let unzip (array: _[]) = checkNonNull "array" array let len = array.Length let res1 = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len let res2 = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len for i = 0 to len - 1 do let x,y = array.[i] res1.[i] <- x; res2.[i] <- y; res1,res2 [] let unzip3 (array: _[]) = checkNonNull "array" array let len = array.Length let res1 = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len let res2 = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len let res3 = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len for i = 0 to len - 1 do let x,y,z = array.[i] res1.[i] <- x; res2.[i] <- y; res3.[i] <- z; res1,res2,res3 [] let rev (array: _[]) = checkNonNull "array" array let len = array.Length let res = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked len for i = 0 to len - 1 do res.[(len - i) - 1] <- array.[i] res [] let fold<'T,'State> (f : 'State -> 'T -> 'State) (acc: 'State) (array:'T[]) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable state = acc let len = array.Length for i = 0 to len - 1 do state <- f.Invoke(state,array.[i]) state [] let foldBack<'T,'State> (f : 'T -> 'State -> 'State) (array:'T[]) (acc: 'State) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable res = acc let len = array.Length for i = len - 1 downto 0 do res <- f.Invoke(array.[i],res) res [] let foldBack2<'T1,'T2,'State> f (array1:'T1[]) (array2:'T2 []) (acc: 'State) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let mutable res = acc let len = array1.Length if len <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) for i = len - 1 downto 0 do res <- f.Invoke(array1.[i],array2.[i],res) res [] let fold2<'T1,'T2,'State> f (acc: 'State) (array1:'T1[]) (array2:'T2 []) = checkNonNull "array1" array1 checkNonNull "array2" array2 let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f) let mutable state = acc let len = array1.Length if len <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths)) for i = 0 to len - 1 do state <- f.Invoke(state,array1.[i],array2.[i]) state let foldSubRight f (array : _[]) start fin acc = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable res = acc for i = fin downto start do res <- f.Invoke(array.[i],res) res let scanSubRight f (array : _[]) start fin initState = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable state = initState let res = create (2+fin-start) initState for i = fin downto start do state <- f.Invoke(array.[i],state); res.[i - start] <- state res let scanSubLeft f initState (array : _[]) start fin = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable state = initState let res = create (2+fin-start) initState for i = start to fin do state <- f.Invoke(state,array.[i]); res.[i - start+1] <- state res [] let scan<'T,'State> f (acc:'State) (array : 'T[]) = checkNonNull "array" array let len = array.Length scanSubLeft f acc array 0 (len - 1) [] let scanBack<'T,'State> f (array : 'T[]) (acc:'State) = checkNonNull "array" array let len = array.Length scanSubRight f array 0 (len - 1) acc [] let reduce f (array : _[]) = checkNonNull "array" array let len = array.Length if len = 0 then invalidArg "array" InputArrayEmptyString else let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let mutable res = array.[0] for i = 1 to len - 1 do res <- f.Invoke(res,array.[i]) res [] let reduceBack f (array : _[]) = checkNonNull "array" array let len = array.Length if len = 0 then invalidArg "array" InputArrayEmptyString else foldSubRight f array 0 (len - 2) array.[len - 1] [] let sortInPlaceWith f (array : 'T[]) = checkNonNull "array" array let len = array.Length if len < 2 then () elif len = 2 then let c = f array.[0] array.[1] if c > 0 then let tmp = array.[0] array.[0] <- array.[1]; array.[1] <- tmp else System.Array.Sort(array, ComparisonIdentity.FromFunction(f)) [] let sortInPlaceBy (f: 'T -> 'U) (array : 'T[]) = checkNonNull "array" array Microsoft.FSharp.Primitives.Basics.Array.unstableSortInPlaceBy f array [] let sortInPlace (array : 'T[]) = checkNonNull "array" array Microsoft.FSharp.Primitives.Basics.Array.unstableSortInPlace array [] let sortWith (f: 'T -> 'T -> int) (array : 'T[]) = checkNonNull "array" array let result = copy array sortInPlaceWith f result; result [] let sortBy f array = checkNonNull "array" array let result = copy array sortInPlaceBy f result; result [] let sort array = checkNonNull "array" array let result = copy array sortInPlace result; result [] let toSeq array = checkNonNull "array" array Seq.ofArray array [] let ofSeq source = checkNonNull "source" source Seq.toArray source [] let findIndex f (array : _[]) = checkNonNull "array" array let len = array.Length let rec go n = if n >= len then raise (System.Collections.Generic.KeyNotFoundException(SR.GetString(SR.keyNotFoundAlt))) elif f array.[n] then n else go (n+1) go 0 [] let tryFindIndex f (array : _[]) = checkNonNull "array" array let len = array.Length let rec go n = if n >= len then None elif f array.[n] then Some n else go (n+1) go 0 [] let permute p (array : _[]) = checkNonNull "array" array Microsoft.FSharp.Primitives.Basics.Array.permute p array [] let inline sum (array: (^T)[] ) : ^T = checkNonNull "array" array let mutable acc = LanguagePrimitives.GenericZero< (^T) > for i = 0 to array.Length - 1 do acc <- Checked.(+) acc array.[i] acc [] let inline sumBy (f: 'T -> ^U) (array:'T[]) : ^U = checkNonNull "array" array let mutable acc = LanguagePrimitives.GenericZero< (^U) > for i = 0 to array.Length - 1 do acc <- Checked.(+) acc (f array.[i]) acc [] let inline min (array:_[]) = checkNonNull "array" array if array.Length = 0 then invalidArg "array" InputArrayEmptyString let mutable acc = array.[0] for i = 1 to array.Length - 1 do let curr = array.[i] if curr < acc then acc <- curr acc [] let inline minBy f (array:_[]) = checkNonNull "array" array if array.Length = 0 then invalidArg "array" InputArrayEmptyString let mutable accv = array.[0] let mutable acc = f accv for i = 1 to array.Length - 1 do let currv = array.[i] let curr = f currv if curr < acc then acc <- curr accv <- currv accv [] let inline max (array:_[]) = checkNonNull "array" array if array.Length = 0 then invalidArg "array" InputArrayEmptyString let mutable acc = array.[0] for i = 1 to array.Length - 1 do let curr = array.[i] if curr > acc then acc <- curr acc [] let inline maxBy f (array:_[]) = checkNonNull "array" array if array.Length = 0 then invalidArg "array" InputArrayEmptyString let mutable accv = array.[0] let mutable acc = f accv for i = 1 to array.Length - 1 do let currv = array.[i] let curr = f currv if curr > acc then acc <- curr accv <- currv accv [] let inline average (array:_[]) = checkNonNull "array" array Seq.average array [] let inline averageBy f (array:_[]) = checkNonNull "array" array Seq.averageBy f array [] let sub (array:'T[]) (startIndex:int) (count:int) = checkNonNull "array" array if startIndex < 0 then invalidArg "startIndex" (SR.GetString(SR.inputMustBeNonNegative)) if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) if startIndex + count > array.Length then invalidArg "count" (SR.GetString(SR.outOfRange)) let res = (Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked count : 'T[]) for i = 0 to count - 1 do res.[i] <- array.[startIndex + i] res [] let get (array:_[]) n = array.[n] [] let set (array:_[]) n v = array.[n] <- v [] let fill (target:'T[]) (targetIndex:int) (count:int) (x:'T) = checkNonNull "target" target if targetIndex < 0 then invalidArg "targetIndex" (SR.GetString(SR.inputMustBeNonNegative)) if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) for i = targetIndex to targetIndex + count - 1 do target.[i] <- x #if FX_NO_TPL_PARALLEL #else module Parallel = open System.Threading.Tasks [] let choose f (array: 'T[]) = checkNonNull "array" array let inputLength = array.Length let lastInputIndex = inputLength - 1 let isChosen : bool [] = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength let results : 'U [] = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength Parallel.For(0, inputLength, (fun i -> match f array.[i] with | None -> () | Some v -> isChosen.[i] <- true; results.[i] <- v )) |> ignore let mutable outputLength = 0 for i = 0 to lastInputIndex do if isChosen.[i] then outputLength <- outputLength + 1 let output = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked outputLength let mutable curr = 0 for i = 0 to lastInputIndex do if isChosen.[i] then output.[curr] <- results.[i] curr <- curr + 1 output [] let collect (f : 'T -> 'U[]) (array : 'T[]) : 'U[]= checkNonNull "array" array let inputLength = array.Length let result = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength Parallel.For(0, inputLength, (fun i -> result.[i] <- f array.[i])) |> ignore concatArrays result [] let map (f: 'T -> 'U) (array : 'T[]) : 'U[]= checkNonNull "array" array let inputLength = array.Length let result = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength Parallel.For(0, inputLength, fun i -> result.[i] <- f array.[i]) |> ignore result [] let mapi f (array: 'T[]) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) let inputLength = array.Length let result = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength Parallel.For(0, inputLength, fun i -> result.[i] <- f.Invoke (i, array.[i])) |> ignore result [] let iter f (array : 'T[]) = checkNonNull "array" array Parallel.For (0, array.Length, fun i -> f array.[i]) |> ignore [] let iteri f (array : 'T[]) = checkNonNull "array" array let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f) Parallel.For (0, array.Length, fun i -> f.Invoke(i, array.[i])) |> ignore [] let init count f = let result = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked count Parallel.For (0, count, fun i -> result.[i] <- f i) |> ignore result [] let partition predicate (array : 'T[]) = checkNonNull "array" array let inputLength = array.Length let lastInputIndex = inputLength - 1 let isTrue = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength Parallel.For(0, inputLength, fun i -> isTrue.[i] <- predicate array.[i] ) |> ignore let mutable trueLength = 0 for i in 0 .. lastInputIndex do if isTrue.[i] then trueLength <- trueLength + 1 let trueResult = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked trueLength let falseResult = Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked (inputLength - trueLength) let mutable iTrue = 0 let mutable iFalse = 0 for i = 0 to lastInputIndex do if isTrue.[i] then trueResult.[iTrue] <- array.[i] iTrue <- iTrue + 1 else falseResult.[iFalse] <- array.[i] iFalse <- iFalse + 1 (trueResult, falseResult) #endif fsharp-3.0.34/src/fsharp/FSharp.Core/array.fsi0000775000175000017500000012557312260314606020055 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open System.Collections.Generic /// Basic operations on arrays. [] [] module Array = /// Builds a new array that contains the elements of the first array followed by the elements of the second array. /// The first input array. /// The second input array. /// The resulting array. [] val append: array1:'T[] -> array2:'T[] -> 'T[] /// Returns the average of the elements in the array. /// The input array. /// Thrown when array is empty. /// The average of the elements in the array. [] val inline average : array:^T[] -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member DivideByInt : ^T*int -> ^T) and ^T : (static member Zero : ^T) /// Returns the average of the elements generated by applying the function to each element of the array. /// The function to transform the array elements before averaging. /// The input array. /// Thrown when array is empty. /// The computed average. [] val inline averageBy : projection:('T -> ^U) -> array:'T[] -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member DivideByInt : ^U*int -> ^U) and ^U : (static member Zero : ^U) /// Reads a range of elements from the first array and write them into the second. /// The source array. /// The starting index of the source array. /// The target array. /// The starting index of the target array. /// The number of elements to copy. [] val blit: source:'T[] -> sourceIndex:int -> target:'T[] -> targetIndex:int -> count:int -> unit /// For each element of the array, applies the given function. Concatenates all the results and return the combined array. /// The function to create sub-arrays from the input array elements. /// The input array. /// The concatenation of the sub-arrays. [] val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[] /// Builds a new array that contains the elements of each of the given sequence of arrays. /// The input sequence of arrays. /// The concatenation of the sequence of input arrays. [] val concat: arrays:seq<'T[]> -> 'T[] /// Builds a new array that contains the elements of the given array. /// The input array. /// A copy of the input array. [] val copy: array:'T[] -> 'T[] /// Creates an array whose elements are all initially the given value. /// The length of the array to create. /// The value for the elements. /// The created array. [] val create: count:int -> value:'T -> 'T[] /// Applies the given function to successive elements, returning the first /// result where function returns Some(x) for some x. If the function /// never returns Some(x) then None is returned. /// The function to transform the array elements into options. /// The input array. /// The first transformed element that is Some(x). [] val tryPick: chooser:('T -> 'U option) -> array:'T[] -> 'U option /// Fills a range of elements of the array with the given value. /// The target array. /// The index of the first element to set. /// The number of elements to set. /// The value to set. [] val fill: target:'T[] -> targetIndex:int -> count:int -> value:'T -> unit /// Applies the given function to successive elements, returning the first /// result where function returns Some(x) for some x. If the function /// never returns Some(x) then KeyNotFoundException is raised. /// The function to generate options from the elements. /// The input array. /// Thrown if every result from /// chooser is None. /// The first result. [] val pick: chooser:('T -> 'U option) -> array:'T[] -> 'U /// Applies the given function to each element of the array. Returns /// the array comprised of the results "x" for each element where /// the function returns Some(x) /// The function to generate options from the elements. /// The input array. /// The array of results. [] val choose: chooser:('T -> 'U option) -> array:'T[] -> 'U[] /// Returns an empty array of the given type. [] [] val empty<'T> : 'T[] /// Tests if any element of the array satisfies the given predicate. /// /// The predicate is applied to the elements of the input array. If any application /// returns true then the overall result is true and no further elements are tested. /// Otherwise, false is returned. /// The function to test the input elements. /// The input array. /// True if any result from predicate is true. [] val exists: predicate:('T -> bool) -> array:'T[] -> bool /// Tests if any pair of corresponding elements of the arrays satisfies the given predicate. /// /// The predicate is applied to matching elements in the two collections up to the lesser of the /// two lengths of the collections. If any application returns true then the overall result is /// true and no further elements are tested. Otherwise, if one collections is longer /// than the other then the ArgumentException exception is raised. /// Otherwise, false is returned. /// The function to test the input elements. /// The first input array. /// The second input array. /// True if any result from predicate is true. [] val exists2: predicate:('T1 -> 'T2 -> bool) -> array1:'T1[] -> array2:'T2[] -> bool /// Returns a new collection containing only the elements of the collection /// for which the given predicate returns "true". /// The function to test the input elements. /// The input array. /// An array containing the elements for which the given predicate returns true. [] val filter: predicate:('T -> bool) -> array:'T[] -> 'T[] /// Returns the first element for which the given function returns 'true'. /// Raise KeyNotFoundException if no such element exists. /// The function to test the input elements. /// The input array. /// Thrown if predicate /// never returns true. /// The first element for which predicate returns true. [] val find: predicate:('T -> bool) -> array:'T[] -> 'T /// Returns the index of the first element in the array /// that satisfies the given predicate. Raise KeyNotFoundException if /// none of the elements satisy the predicate. /// The function to test the input elements. /// The input array. /// Thrown if predicate /// never returns true. /// The index of the first element in the array that satisfies the given predicate. [] val findIndex: predicate:('T -> bool) -> array:'T[] -> int /// Tests if all elements of the array satisfy the given predicate. /// /// The predicate is applied to the elements of the input collection. If any application /// returns false then the overall result is false and no further elements are tested. /// Otherwise, true is returned. /// The function to test the input elements. /// The input array. /// True if all of the array elements satisfy the predicate. [] val forall: predicate:('T -> bool) -> array:'T[] -> bool /// Tests if all corresponding elements of the array satisfy the given predicate pairwise. /// /// The predicate is applied to matching elements in the two collections up to the lesser of the /// two lengths of the collections. If any application returns false then the overall result is /// false and no further elements are tested. Otherwise, if one collection is longer /// than the other then the ArgumentException exception is raised. /// Otherwise, true is returned. /// The function to test the input elements. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. /// True if all of the array elements satisfy the predicate. [] val forall2: predicate:('T1 -> 'T2 -> bool) -> array1:'T1[] -> array2:'T2[] -> bool /// Applies a function to each element of the collection, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then computes /// f (... (f s i0)...) iN /// The function to update the state given the input elements. /// The initial state. /// The input array. /// The final state. [] val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> array: 'T[] -> 'State /// Applies a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then computes /// f i0 (...(f iN s)) /// The function to update the state given the input elements. /// The input array. /// The initial state. /// The final state. [] val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> array:'T[] -> state:'State -> 'State /// Applies a function to pairs of elements drawn from the two collections, /// left-to-right, threading an accumulator argument /// through the computation. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. /// The function to update the state given the input elements. /// The initial state. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. /// The final state. [] val fold2<'T1,'T2,'State> : folder:('State -> 'T1 -> 'T2 -> 'State) -> state:'State -> array1:'T1[] -> array2:'T2[] -> 'State /// Apply a function to pairs of elements drawn from the two collections, right-to-left, /// threading an accumulator argument through the computation. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. /// The function to update the state given the input elements. /// The first input array. /// The second input array. /// The initial state. /// Thrown when the input arrays differ in length. /// The final state. [] val foldBack2<'T1,'T2,'State> : folder:('T1 -> 'T2 -> 'State -> 'State) -> array1:'T1[] -> array2:'T2[] -> state:'State -> 'State /// Gets an element from an array. /// The input array. /// The input index. /// The value of the array at the given index. [] val get: array:'T[] -> index:int -> 'T /// Creates an array given the dimension and a generator function to compute the elements. /// The number of elements to initialize. /// The function to generate the initial values for each index. /// The created array. [] val inline init: count:int -> initializer:(int -> 'T) -> 'T[] /// Creates an array where the entries are initially the default value Unchecked.defaultof<'T>. /// The length of the array to create. /// The created array. [] val zeroCreate: count:int -> 'T[] /// Returns true if the given array is empty, otherwise false. /// The input array. /// True if the array is empty. [] val isEmpty: array:'T[] -> bool /// Applies the given function to each element of the array. /// The function to apply. /// The input array. [] val inline iter: action:('T -> unit) -> array:'T[] -> unit /// Applies the given function to pair of elements drawn from matching indices in two arrays. The /// two arrays must have the same lengths, otherwise an ArgumentException is /// raised. /// The function to apply. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. [] val iter2: action:('T1 -> 'T2 -> unit) -> array1:'T1[] -> array2:'T2[] -> unit /// Applies the given function to each element of the array. The integer passed to the /// function indicates the index of element. /// The function to apply to each index and element. /// The input array. [] val iteri: action:(int -> 'T -> unit) -> array:'T[] -> unit /// Applies the given function to pair of elements drawn from matching indices in two arrays, /// also passing the index of the elements. The two arrays must have the same lengths, /// otherwise an ArgumentException is raised. /// The function to apply to each index and pair of elements. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. [] val iteri2: action:(int -> 'T1 -> 'T2 -> unit) -> array1:'T1[] -> array2:'T2[] -> unit /// Returns the length of an array. You can also use property arr.Length. /// The input array. /// The length of the array. [] val length: array:'T[] -> int /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. /// The function to transform elements of the array. /// The input array. /// The array of transformed elements. [] val inline map: mapping:('T -> 'U) -> array:'T[] -> 'U[] /// Builds a new collection whose elements are the results of applying the given function /// to the corresponding elements of the two collections pairwise. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. /// The function to transform the pairs of the input elements. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. /// The array of transformed elements. [] val map2: mapping:('T1 -> 'T2 -> 'U) -> array1:'T1[] -> array2:'T2[] -> 'U[] /// Builds a new collection whose elements are the results of applying the given function /// to the corresponding elements of the two collections pairwise, also passing the index of /// the elements. The two input arrays must have the same lengths, otherwise an ArgumentException is /// raised. /// The function to transform pairs of input elements and their indices. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. /// The array of transformed elements. [] val mapi2: mapping:(int -> 'T1 -> 'T2 -> 'U) -> array1:'T1[] -> array2:'T2[] -> 'U[] /// Builds a new array whose elements are the results of applying the given function /// to each of the elements of the array. The integer index passed to the /// function indicates the index of element being transformed. /// The function to transform elements and their indices. /// The input array. /// The array of transformed elements. [] val mapi: mapping:(int -> 'T -> 'U) -> array:'T[] -> 'U[] /// Returns the greatest of all elements of the array, compared via Operators.max on the function result. /// /// Throws ArgumentException for empty arrays. /// The input array. /// Thrown when the input array is empty. /// The maximum element. [] val inline max : array:'T[] -> 'T when 'T : comparison /// Returns the greatest of all elements of the array, compared via Operators.max on the function result. /// /// Throws ArgumentException for empty arrays. /// The function to transform the elements into a type supporting comparison. /// The input array. /// Thrown when the input array is empty. /// The maximum element. [] val inline maxBy : projection:('T -> 'U) -> array:'T[] -> 'T when 'U : comparison /// Returns the lowest of all elements of the array, compared via Operators.min. /// /// Throws ArgumentException for empty arrays /// The input array. /// Thrown when the input array is empty. /// The minimum element. [] val inline min : array:'T[] -> 'T when 'T : comparison /// Returns the lowest of all elements of the array, compared via Operators.min on the function result. /// /// Throws ArgumentException for empty arrays. /// The function to transform the elements into a type supporting comparison. /// The input array. /// Thrown when the input array is empty. /// The minimum element. [] val inline minBy : projection:('T -> 'U) -> array:'T[] -> 'T when 'U : comparison /// Builds an array from the given list. /// The input list. /// The array of elements from the list. [] val ofList: list:'T list -> 'T[] /// Builds a new array from the given enumerable object. /// The input sequence. /// The array of elements from the sequence. [] val ofSeq: source:seq<'T> -> 'T[] /// Splits the collection into two collections, containing the /// elements for which the given predicate returns "true" and "false" /// respectively. /// The function to test the input elements. /// The input array. /// A pair of arrays. The first containing the elements the predicate evaluated to true, /// and the second containing those evaluated to false. [] val partition: predicate:('T -> bool) -> array:'T[] -> 'T[] * 'T[] /// Returns an array with all elements permuted according to the /// specified permutation. /// The function that maps input indices to output indices. /// The input array. /// The output array. [] val permute : indexMap:(int -> int) -> array:'T[] -> 'T[] /// Applies a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN /// then computes f (... (f i0 i1)...) iN. /// Raises ArgumentException if the array has size zero. /// The function to reduce a pair of elements to a single element. /// The input array. /// Thrown when the input array is empty. /// The final result of the redcutions. [] val reduce: reduction:('T -> 'T -> 'T) -> array:'T[] -> 'T /// Applies a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN /// then computes f i0 (...(f iN-1 iN)). /// Raises ArgumentException if the array has size zero. /// The function to reduce a pair of elements to a single element. /// The input array. /// Thrown when the input array is empty. /// The final result of the reductions. [] val reduceBack: reduction:('T -> 'T -> 'T) -> array:'T[] -> 'T /// Returns a new array with the elements in reverse order. /// The input array. /// The reversed array. [] val rev: array:'T[] -> 'T[] /// Like fold, but return the intermediary and final results. /// The function to update the state given the input elements. /// The initial state. /// The input array. /// The array of state values. [] val scan<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> array:'T[] -> 'State[] /// Like foldBack, but return both the intermediary and final results. /// The function to update the state given the input elements. /// The input array. /// The initial state. /// The array of state values. [] val scanBack<'T,'State> : folder:('T -> 'State -> 'State) -> array:'T[] -> state:'State -> 'State[] /// Sets an element of an array. /// The input array. /// The input index. /// The input value. [] val set: array:'T[] -> index:int -> value:'T -> unit /// Builds a new array that contains the given subrange specified by /// starting index and length. /// The input array. /// The index of the first element of the sub array. /// The length of the sub array. /// The created sub array. [] val sub: array:'T[] -> startIndex:int -> count:int -> 'T[] /// Sorts the elements of an array, returning a new array. Elements are compared using Operators.compare. /// /// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved. /// For a stable sort, consider using Seq.sort. /// The input array. /// The sorted array. [] val sort: array:'T[] -> 'T[] when 'T : comparison /// Sorts the elements of an array, using the given projection for the keys and returning a new array. /// Elements are compared using Operators.compare. /// /// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved. /// For a stable sort, consider using Seq.sort. /// The function to transform array elements into the type that is compared. /// The input array. /// The sorted array. [] val sortBy: projection:('T -> 'Key) -> array:'T[] -> 'T[] when 'Key : comparison /// Sorts the elements of an array, using the given comparison function as the order, returning a new array. /// /// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved. /// For a stable sort, consider using Seq.sort. /// The function to compare pairs of array elements. /// The input array. /// The sorted array. [] val sortWith: comparer:('T -> 'T -> int) -> array:'T[] -> 'T[] /// Sorts the elements of an array by mutating the array in-place, using the given projection for the keys. /// Elements are compared using Operators.compare. /// /// This is not a stable sort, i.e. the original order of equal elements is not necessarily preserved. /// For a stable sort, consider using Seq.sort. /// The function to transform array elements into the type that is compared. /// The input array. [] val sortInPlaceBy: projection:('T -> 'Key) -> array:'T[] -> unit when 'Key : comparison /// Sorts the elements of an array by mutating the array in-place, using the given comparison function as the order. /// The function to compare pairs of array elements. /// The input array. [] val sortInPlaceWith: comparer:('T -> 'T -> int) -> array:'T[] -> unit /// Sorts the elements of an array by mutating the array in-place, using the given comparison function. /// Elements are compared using Operators.compare. /// The input array. [] val sortInPlace: array:'T[] -> unit when 'T : comparison /// Returns the sum of the elements in the array. /// The input array. /// The resulting sum. [] val inline sum : array: ^T[] -> ^T when ^T : (static member ( + ) : ^T * ^T -> ^T) and ^T : (static member Zero : ^T) /// Returns the sum of the results generated by applying the function to each element of the array. /// The function to transform the array elements into the type to be summed. /// The input array. /// The resulting sum. [] val inline sumBy : projection:('T -> ^U) -> array:'T[] -> ^U when ^U : (static member ( + ) : ^U * ^U -> ^U) and ^U : (static member Zero : ^U) /// Builds a list from the given array. /// The input array. /// The list of array elements. [] val toList: array:'T[] -> 'T list /// Views the given array as a sequence. /// The input array. /// The sequence of array elements. [] val toSeq: array:'T[] -> seq<'T> /// Returns the first element for which the given function returns true. /// Return None if no such element exists. /// The function to test the input elements. /// The input array. /// The first element that satisfies the predicate, or None. [] val tryFind: predicate:('T -> bool) -> array:'T[] -> 'T option /// Returns the index of the first element in the array /// that satisfies the given predicate. /// The function to test the input elements. /// The input array. /// The index of the first element that satisfies the predicate, or None. [] val tryFindIndex : predicate:('T -> bool) -> array:'T[] -> int option /// Splits an array of pairs into two arrays. /// The input array. /// The two arrays. [] val unzip: array:('T1 * 'T2)[] -> ('T1[] * 'T2[]) /// Splits an array of triples into three arrays. /// The input array. /// The tuple of three arrays. [] val unzip3: array:('T1 * 'T2 * 'T3)[] -> ('T1[] * 'T2[] * 'T3[]) /// Combines the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an ArgumentException is /// raised. /// The first input array. /// The second input array. /// Thrown when the input arrays differ in length. /// The array of tupled elements. [] val zip: array1:'T1[] -> array2:'T2[] -> ('T1 * 'T2)[] /// Combines three arrays into an array of pairs. The three arrays must have equal lengths, otherwise an ArgumentException is /// raised. /// The first input array. /// The second input array. /// The third input array. /// Thrown when the input arrays differ in length. /// The array of tupled elements. [] val zip3: array1:'T1[] -> array2:'T2[] -> array3:'T3[] -> ('T1 * 'T2 * 'T3)[] #if FX_NO_TPL_PARALLEL #else /// Provides parallel operations on arrays module Parallel = /// Apply the given function to each element of the array. Return /// the array comprised of the results "x" for each element where /// the function returns Some(x). /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// The function to generate options from the elements. /// The input array. /// 'U[] [] val choose: chooser:('T -> 'U option) -> array:'T[] -> 'U[] /// For each element of the array, apply the given function. Concatenate all the results and return the combined array. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// /// The input array. /// 'U[] [] val collect : mapping:('T -> 'U[]) -> array:'T[] -> 'U[] /// Build a new array whose elements are the results of applying the given function /// to each of the elements of the array. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// /// The input array. /// 'U[] [] val map : mapping:('T -> 'U) -> array:'T[] -> 'U[] /// Build a new array whose elements are the results of applying the given function /// to each of the elements of the array. The integer index passed to the /// function indicates the index of element being transformed. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// /// The input array. /// 'U[] [] val mapi: mapping:(int -> 'T -> 'U) -> array:'T[] -> 'U[] /// Apply the given function to each element of the array. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// /// The input array. [] val iter : action:('T -> unit) -> array:'T[] -> unit /// Apply the given function to each element of the array. The integer passed to the /// function indicates the index of element. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to elements of the input array is not specified. /// /// The input array. [] val iteri: action:(int -> 'T -> unit) -> array:'T[] -> unit /// Create an array given the dimension and a generator function to compute the elements. /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to indicies is not specified. /// /// /// 'T[] [] val init : count:int -> initializer:(int -> 'T) -> 'T[] /// Split the collection into two collections, containing the /// elements for which the given predicate returns "true" and "false" /// respectively /// /// Performs the operation in parallel using System.Threading.Parallel.For. /// The order in which the given function is applied to indicies is not specified. /// The function to test the input elements. /// The input array. /// 'T[] * 'T[] [] val partition : predicate:('T -> bool) -> array:'T[] -> 'T[] * 'T[] #endif fsharp-3.0.34/src/fsharp/FSharp.Core/event.fs0000775000175000017500000002024212260314606017672 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Control open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Collections open Microsoft.FSharp.Control open System.Reflection open System.Diagnostics #if FX_NO_DELEGATE_DYNAMIC_METHOD #else #if FX_NO_DELEGATE_DYNAMIC_INVOKE module Impl = type System.Delegate with member d.DynamicInvoke(args: obj[]) = d.Method.Invoke(d.Target, BindingFlags.Default ||| BindingFlags.Public ||| BindingFlags.NonPublic , null, args, null) open Impl #endif [] type DelegateEvent<'Delegate when 'Delegate :> System.Delegate>() = let mutable multicast : System.Delegate = null member x.Trigger(args:obj[]) = match multicast with | null -> () | d -> d.DynamicInvoke(args) |> ignore member x.Publish = { new IDelegateEvent<'Delegate> with member x.AddHandler(d) = multicast <- System.Delegate.Combine(multicast, d) member x.RemoveHandler(d) = multicast <- System.Delegate.Remove(multicast, d) } type EventDelegee<'Args>(observer: System.IObserver<'Args>) = static let makeTuple = if Microsoft.FSharp.Reflection.FSharpType.IsTuple(typeof<'Args>) then Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleConstructor(typeof<'Args>) else fun _ -> assert false; null // should not be called, one-argument case don't use makeTuple function member x.Invoke(_sender:obj, args: 'Args) = observer.OnNext args member x.Invoke(_sender:obj, a, b) = let args = makeTuple([|a; b|]) :?> 'Args observer.OnNext args member x.Invoke(_sender:obj, a, b, c) = let args = makeTuple([|a; b; c|]) :?> 'Args observer.OnNext args member x.Invoke(_sender:obj, a, b, c, d) = let args = makeTuple([|a; b; c; d|]) :?> 'Args observer.OnNext args member x.Invoke(_sender:obj, a, b, c, d, e) = let args = makeTuple([|a; b; c; d; e|]) :?> 'Args observer.OnNext args member x.Invoke(_sender:obj, a, b, c, d, e, f) = let args = makeTuple([|a; b; c; d; e; f|]) :?> 'Args observer.OnNext args type EventWrapper<'Delegate,'Args> = delegate of 'Delegate * obj * 'Args -> unit [] type Event<'Delegate, 'Args when 'Delegate : delegate<'Args, unit> and 'Delegate :> System.Delegate>() = let mutable multicast : 'Delegate = Unchecked.defaultof<_> #if FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD #else static let mi, argTypes = let instanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly let mi = typeof<'Delegate>.GetMethod("Invoke",instanceBindingFlags) let actualTypes = mi.GetParameters() |> Array.map (fun p -> p.ParameterType) mi, actualTypes.[1..] // For the one-argument case, use an optimization that allows a fast call. // CreateDelegate creates a delegate that is fast to invoke. static let invoker = if argTypes.Length = 1 then (System.Delegate.CreateDelegate(typeof>, mi) :?> EventWrapper<'Delegate,'Args>) else null #endif // For the multi-arg case, use a slower DynamicInvoke. static let invokeInfo = let instanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly #if FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD typeof>.GetMethod("Invoke",instanceBindingFlags) #else let mi = typeof>.GetMethods(instanceBindingFlags) |> Seq.filter(fun mi -> mi.Name = "Invoke" && mi.GetParameters().Length = argTypes.Length + 1) |> Seq.exactlyOne if mi.IsGenericMethodDefinition then mi.MakeGenericMethod argTypes else mi #endif member x.Trigger(sender:obj,args: 'Args) = match box multicast with | null -> () | _ -> #if FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD #else match invoker with | null -> #endif let args = Array.append [| sender |] (Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields(box args)) multicast.DynamicInvoke(args) |> ignore #if FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD #else | _ -> // For the one-argument case, use an optimization that allows a fast call. // CreateDelegate creates a delegate that is fast to invoke. invoker.Invoke(multicast, sender, args) |> ignore #endif member x.Publish = // Note, we implement each interface explicitly: this works around a bug in the CLR // implementation on CompactFramework 3.7, used on Windows Phone 7 { new obj() with member x.ToString() = "" interface IEvent<'Delegate,'Args> interface IDelegateEvent<'Delegate> with member e.AddHandler(d) = multicast <- System.Delegate.Combine(multicast, d) :?> 'Delegate member e.RemoveHandler(d) = multicast <- System.Delegate.Remove(multicast, d) :?> 'Delegate interface System.IObservable<'Args> with member e.Subscribe(observer) = let obj = new EventDelegee<'Args>(observer) let h = System.Delegate.CreateDelegate(typeof<'Delegate>, obj, invokeInfo) :?> 'Delegate (e :?> IDelegateEvent<'Delegate>).AddHandler(h) { new System.IDisposable with member x.Dispose() = (e :?> IDelegateEvent<'Delegate>).RemoveHandler(h) } } #endif [] type Event<'T> = val mutable multicast : Handler<'T> new() = { multicast = null } member x.Trigger(arg:'T) = match x.multicast with | null -> () | d -> d.Invoke(null,arg) |> ignore member x.Publish = // Note, we implement each interface explicitly: this works around a bug in the CLR // implementation on CompactFramework 3.7, used on Windows Phone 7 { new obj() with member x.ToString() = "" interface IEvent<'T> interface IDelegateEvent> with member e.AddHandler(d) = x.multicast <- (System.Delegate.Combine(x.multicast, d) :?> Handler<'T>) member e.RemoveHandler(d) = x.multicast <- (System.Delegate.Remove(x.multicast, d) :?> Handler<'T>) interface System.IObservable<'T> with member e.Subscribe(observer) = let h = new Handler<_>(fun sender args -> observer.OnNext(args)) (e :?> IEvent<_,_>).AddHandler(h) { new System.IDisposable with member x.Dispose() = (e :?> IEvent<_,_>).RemoveHandler(h) } } fsharp-3.0.34/src/fsharp/FSharp.Core/quotations.fsi0000775000175000017500000012471312260314606021140 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Types and functions related to expression quotations namespace Microsoft.FSharp.Quotations #if FX_MINIMAL_REFLECTION // not on Compact Framework #else open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Reflection open System open System.Reflection /// Information at the binding site of a variable [] [] type Var = /// The type associated with the variable member Type : Type /// The declared name of the variable member Name : string /// Indicates if the variable represents a mutable storage location member IsMutable: bool /// Creates a new variable with the given name, type and mutability /// The declared name of the variable. /// The type associated with the variable. /// Indicates if the variable represents a mutable storage location. Default is false. /// The created variable. new : name:string * typ:Type * ?isMutable : bool -> Var /// Fetches or create a new variable with the given name and type from a global pool of shared variables /// indexed by name and type /// The name of the variable. /// The type associated with the variable. /// The retrieved or created variable. static member Global : name:string * typ:Type -> Var interface System.IComparable /// Quoted expressions annotated with System.Type values. [] [] type Expr = /// Substitutes through the given expression using the given functions /// to map variables to new values. The functions must give consistent results /// at each application. Variable renaming may occur on the target expression /// if variable capture occurs. /// The function to map variables into expressions. /// The expression with the given substitutions. member Substitute : substitution:(Var -> Expr option) -> Expr /// Gets the free expression variables of an expression as a list. /// A sequence of the free variables in the expression. member GetFreeVars : unit -> seq /// Returns type of an expression. member Type : Type /// Returns the custom attributes of an expression. member CustomAttributes : Expr list override Equals : obj:obj -> bool /// Builds an expression that represents getting the address of a value. /// The target expression. /// The resulting expression. static member AddressOf : target:Expr -> Expr /// Builds an expression that represents setting the value held at a particular address. /// The target expression. /// The value to set at the address. /// The resulting expression. static member AddressSet : target:Expr * value:Expr -> Expr /// Builds an expression that represents the application of a first class function value to a single argument. /// The function to apply. /// The argument to the function. /// The resulting expression. static member Application: functionExpr:Expr * argument:Expr -> Expr /// Builds an expression that represents the application of a first class function value to multiple arguments /// The function to apply. /// The list of lists of arguments to the function. /// The resulting expression. static member Applications: functionExpr:Expr * arguments:list> -> Expr /// Builds an expression that represents a call to an static method or module-bound function /// The MethodInfo describing the method to call. /// The list of arguments to the method. /// The resulting expression. static member Call : methodInfo:MethodInfo * arguments:list -> Expr /// Builds an expression that represents a call to an instance method associated with an object /// The input object. /// The description of the method to call. /// The list of arguments to the method. /// The resulting expression. static member Call : obj:Expr * methodInfo:MethodInfo * arguments:list -> Expr /// Builds an expression that represents the coercion of an expression to a type /// The expression to coerce. /// The target type. /// The resulting expression. static member Coerce : source:Expr * target:Type -> Expr /// Builds 'if ... then ... else' expressions. /// The condition expression. /// The then sub-expression. /// The else sub-expression. /// The resulting expression. static member IfThenElse : guard:Expr * thenExpr:Expr * elseExpr:Expr -> Expr /// Builds a 'for i = ... to ... do ...' expression that represent loops over integer ranges /// The sub-expression declaring the loop variable. /// The sub-expression setting the initial value of the loop variable. /// The sub-expression declaring the final value of the loop variable. /// The sub-expression representing the body of the loop. /// The resulting expression. static member ForIntegerRangeLoop: loopVariable:Var * start:Expr * endExpr:Expr * body:Expr -> Expr /// Builds an expression that represents the access of a static field /// The description of the field to access. /// The resulting expression. static member FieldGet: fieldInfo:FieldInfo -> Expr /// Builds an expression that represents the access of a field of an object /// The input object. /// The description of the field to access. /// The resulting expression. static member FieldGet: obj:Expr * fieldInfo:FieldInfo -> Expr /// Builds an expression that represents writing to a static field /// The description of the field to write to. /// The value to the set to the field. /// The resulting expression. static member FieldSet: fieldInfo:FieldInfo * value:Expr -> Expr /// Builds an expression that represents writing to a field of an object /// The input object. /// The description of the field to write to. /// The value to set to the field. /// The resulting expression. static member FieldSet: obj:Expr * fieldInfo:FieldInfo * value:Expr -> Expr /// Builds an expression that represents the constrution of an F# function value /// The parameter to the function. /// The body of the function. /// The resulting expression. static member Lambda : parameter:Var * body:Expr -> Expr /// Builds expressions associated with 'let' constructs /// The variable in the let expression. /// The expression bound to the variable. /// The sub-expression where the binding is in scope. /// The resulting expression. static member Let : letVariable:Var * letExpr:Expr * body:Expr -> Expr /// Builds recursives expressions associated with 'let rec' constructs /// The list of bindings for the let expression. /// The sub-expression where the bindings are in scope. /// The resulting expression. static member LetRecursive : bindings:(Var * Expr) list * body:Expr -> Expr /// Builds an expression that represents the invocation of an object constructor /// The description of the constructor. /// The list of arguments to the constructor. /// The resulting expression. static member NewObject: constructorInfo:ConstructorInfo * arguments:Expr list -> Expr /// Builds an expression that represents the invocation of a default object constructor /// The type on which the constructor is invoked. /// The resulting expression. static member DefaultValue: expressionType:Type -> Expr /// Builds an expression that represents the creation of an F# tuple value /// The list of elements of the tuple. /// The resulting expression. static member NewTuple: elements:Expr list -> Expr /// Builds record-construction expressions /// The type of record. /// The list of elements of the record. /// The resulting expression. static member NewRecord: recordType:Type * elements:Expr list -> Expr /// Builds an expression that represents the creation of an array value initialized with the given elements /// The type for the elements of the array. /// The list of elements of the array. /// The resulting expression. static member NewArray: elementType:Type * elements:Expr list -> Expr /// Builds an expression that represents the creation of a delegate value for the given type /// The type of delegate. /// The parameters for the delegate. /// The body of the function. /// The resulting expression. static member NewDelegate: delegateType:Type * parameters:Var list * body:Expr -> Expr /// Builds an expression that represents the creation of a union case value /// The description of the union case. /// The list of arguments for the case. /// The resulting expression. static member NewUnionCase: unionCase:UnionCaseInfo * arguments:Expr list -> Expr /// Builds an expression that represents reading a property of an object /// The input object. /// The description of the property. /// List of indices for the property if it is an indexed property. /// The resulting expression. static member PropertyGet: obj:Expr * property:PropertyInfo * ?indexerArgs: Expr list -> Expr /// Builds an expression that represents reading a static property /// The description of the property. /// List of indices for the property if it is an indexed property. /// The resulting expression. static member PropertyGet: property:PropertyInfo * ?indexerArgs: Expr list -> Expr /// Builds an expression that represents writing to a property of an object /// The input object. /// The description of the property. /// The value to set. /// List of indices for the property if it is an indexed property. /// The resulting expression. static member PropertySet: obj:Expr * property:PropertyInfo * value:Expr * ?indexerArgs: Expr list -> Expr /// Builds an expression that represents writing to a static property /// The description of the property. /// The value to set. /// List of indices for the property if it is an indexed property. /// The resulting expression. static member PropertySet: property:PropertyInfo * value:Expr * ?indexerArgs: Expr list -> Expr /// Builds an expression that represents a nested quotation literal /// The expression being quoted. /// The resulting expression. static member Quote: inner:Expr -> Expr /// Builds an expression that represents the sequential execution of one expression followed by another /// The first expression. /// The second expression. /// The resulting expression. static member Sequential: first:Expr * second:Expr -> Expr /// Builds an expression that represents a try/with construct for exception filtering and catching. /// The body of the try expression. /// /// /// The variable to bind to a caught exception. /// The expression evaluated when an exception is caught. /// The resulting expression. static member TryWith: body:Expr * filterVar:Var * filterBody:Expr * catchVar:Var * catchBody:Expr -> Expr /// Builds an expression that represents a try/finally construct /// The body of the try expression. /// The final part of the expression to be evaluated. /// The resulting expression. static member TryFinally: body:Expr * compensation:Expr -> Expr /// Builds an expression that represents getting a field of a tuple /// The input tuple. /// The index of the tuple element to get. /// The resulting expression. static member TupleGet: tuple:Expr * index:int -> Expr /// Builds an expression that represents a type test. /// The expression to test. /// The target type. /// The resulting expression. static member TypeTest: source:Expr * target:Type -> Expr /// Builds an expression that represents a test of a value is of a particular union case /// The expression to test. /// The description of the union case. /// The resulting expression. static member UnionCaseTest: source:Expr * unionCase:UnionCaseInfo -> Expr /// Builds an expression that represents a constant value of a particular type /// The untyped object. /// The type of the object. /// The resulting expression. static member Value : value:obj * expressionType:Type -> Expr /// Builds an expression that represents a constant value /// The typed value. /// The resulting expression. static member Value : value:'T -> Expr /// Builds an expression that represents a variable /// The input variable. /// The resulting expression. static member Var : variable:Var -> Expr /// Builds an expression that represents setting a mutable variable /// The input variable. /// The value to set. /// The resulting expression. static member VarSet : variable:Var * value:Expr -> Expr /// Builds an expression that represents a while loop /// The predicate to control the loop iteration. /// The body of the while loop. /// The resulting expression. static member WhileLoop : guard:Expr * body:Expr -> Expr //---------------- /// Returns a new typed expression given an underlying runtime-typed expression. /// A type annotation is usually required to use this function, and /// using an incorrect type annotation may result in a later runtime exception. /// The expression to cast. /// The resulting typed expression. static member Cast : source:Expr -> Expr<'T> /// Try and find a stored reflection definition for the given method. Stored reflection /// definitions are added to an F# assembly through the use of the [<ReflectedDefinition>] attribute. /// The description of the method to find. /// The reflection definition or None if a match could not be found. static member TryGetReflectedDefinition : methodBase:MethodBase -> Expr option /// This function is called automatically when quotation syntax (<@ @>) and related typed-expression /// quotations are used. The bytes are a pickled binary representation of an unlinked form of the quoted expression, /// and the System.Type argument is any type in the assembly where the quoted /// expression occurs, i.e. it helps scope the interpretation of the cross-assembly /// references in the bytes. /// A type in the assembly where the quotation occurs. /// The list of spliced types. /// The list of spliced expressions. /// The serialized form of the quoted expression. /// The resulting expression. static member Deserialize : qualifyingType:System.Type * spliceTypes:list * spliceExprs:list * bytes:byte[] -> Expr /// Permits interactive environments such as F# Interactive /// to explicitly register new pickled resources that represent persisted /// top level definitions. The string indicates a unique name for the resources /// being added. The format for the bytes is the encoding generated by the F# compiler. /// The assembly associated with the resource. /// The unique name for the resources being added. /// The serialized resource to register with the environment. static member RegisterReflectedDefinitions: assembly:Assembly * resource:string * serializedValue:byte[] -> unit /// Fetches or creates a new variable with the given name and type from a global pool of shared variables /// indexed by name and type. The type is given by the expicit or inferred type parameter /// The variable name. /// The created of fetched typed global variable. static member GlobalVar<'T> : name:string -> Expr<'T> /// Format the expression as a string /// Indicates if method, property, constructor and type objects should be printed in detail. If false, these are abbreviated to their name. /// The formatted string. member ToString : full: bool -> string /// Type-carrying quoted expressions. Expressions are generated either /// by quotations in source text or programatically and [] [] Expr<'T> = inherit Expr /// Gets the raw expression associated with this type-carrying expression member Raw : Expr [] /// Contains a set of primitive F# active patterns to analyze F# expression objects module Patterns = /// An active pattern to recognize expressions that represent getting the address of a value /// The input expression to match against. /// Expr option [] val (|AddressOf|_|) : input:Expr -> Expr option /// An active pattern to recognize expressions that represent setting the value held at an address /// The input expression to match against. /// (Expr * Expr) option [] val (|AddressSet|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions that represent applications of first class function values /// The input expression to match against. /// (Expr * Expr) option [] val (|Application|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions that represent calls to static and instance methods, and functions defined in modules /// The input expression to match against. /// (Expr option * MethodInfo * Expr list) option [] val (|Call|_|) : input:Expr -> (Expr option * MethodInfo * Expr list) option /// An active pattern to recognize expressions that represent coercions from one type to another /// The input expression to match against. /// (Expr * Type) option [] val (|Coerce|_|) : input:Expr -> (Expr * Type) option /// An active pattern to recognize expressions that represent getting a static or instance field /// The input expression to match against. /// (Expr option * FieldInfo) option [] val (|FieldGet|_|) : input:Expr -> (Expr option * FieldInfo) option /// An active pattern to recognize expressions that represent setting a static or instance field /// The input expression to match against. /// (Expr option * FieldInfo * Expr) option [] val (|FieldSet|_|) : input:Expr -> (Expr option * FieldInfo * Expr) option /// An active pattern to recognize expressions that represent loops over integer ranges /// The input expression to match against. /// (Var * Expr * Expr * Expr) option [] val (|ForIntegerRangeLoop|_|) : input:Expr -> (Var * Expr * Expr * Expr) option /// An active pattern to recognize expressions that represent while loops /// The input expression to match against. /// (Expr * Expr) option [] val (|WhileLoop|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions that represent conditionals /// The input expression to match against. /// (Expr * Expr * Expr) option [] val (|IfThenElse|_|) : input:Expr -> (Expr * Expr * Expr) option /// An active pattern to recognize expressions that represent first class function values /// The input expression to match against. /// (Var * Expr) option [] val (|Lambda|_|) : input:Expr -> (Var * Expr) option /// An active pattern to recognize expressions that represent let bindings /// The input expression to match against. /// (Var * Expr * Expr) option [] val (|Let|_|) : input:Expr -> (Var * Expr * Expr) option /// An active pattern to recognize expressions that represent recursive let bindings of one or more variables /// The input expression to match against. /// ((Var * Expr) list * Expr) option [] val (|LetRecursive|_|) : input:Expr -> ((Var * Expr) list * Expr) option /// An active pattern to recognize expressions that represent the construction of arrays /// The input expression to match against. /// (Type * Expr list) option [] val (|NewArray|_|) : input:Expr -> (Type * Expr list) option /// An active pattern to recognize expressions that represent invocations of a default constructor of a struct /// The input expression to match against. /// Type option [] val (|DefaultValue|_|) : input:Expr -> Type option /// An active pattern to recognize expressions that represent construction of delegate values /// The input expression to match against. /// (Type * Var list * Expr) option [] val (|NewDelegate|_|) : input:Expr -> (Type * Var list * Expr) option /// An active pattern to recognize expressions that represent invocation of object constructors /// The input expression to match against. /// (ConstructorInfo * Expr list) option [] val (|NewObject|_|) : input:Expr -> (ConstructorInfo * Expr list) option /// An active pattern to recognize expressions that represent construction of record values /// The input expression to match against. /// (Type * Expr list) option [] val (|NewRecord|_|) : input:Expr -> (Type * Expr list) option /// An active pattern to recognize expressions that represent construction of particular union case values /// The input expression to match against. /// (UnionCaseInfo * Expr list) option [] val (|NewUnionCase|_|) : input:Expr -> (UnionCaseInfo * Expr list) option /// An active pattern to recognize expressions that represent construction of tuple values /// The input expression to match against. /// (Expr list) option [] val (|NewTuple|_|) : input:Expr -> (Expr list) option /// An active pattern to recognize expressions that represent the read of a static or instance property, or a non-function value declared in a module /// The input expression to match against. /// (Expr option * PropertyInfo * Expr list) option [] val (|PropertyGet|_|) : input:Expr -> (Expr option * PropertyInfo * Expr list) option /// An active pattern to recognize expressions that represent setting a static or instance property, or a non-function value declared in a module /// The input expression to match against. /// (Expr option * PropertyInfo * Expr list * Expr) option [] val (|PropertySet|_|) : input:Expr -> (Expr option * PropertyInfo * Expr list * Expr) option /// An active pattern to recognize expressions that represent a nested quotation literal /// The input expression to match against. /// Expr option [] val (|Quote|_|) : input:Expr -> Expr option /// An active pattern to recognize expressions that represent sequential exeuction of one expression followed by another /// The input expression to match against. /// (Expr * Expr) option [] val (|Sequential|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions that represent a try/with construct for exception filtering and catching /// The input expression to match against. /// (Expr * Var * Expr * Var * Expr) option [] val (|TryWith|_|) : input:Expr -> (Expr * Var * Expr * Var * Expr) option /// An active pattern to recognize expressions that represent a try/finally construct /// The input expression to match against. /// (Expr * Expr) option [] val (|TryFinally|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions that represent getting a tuple field /// The input expression to match against. /// (Expr * int) option [] val (|TupleGet|_|) : input:Expr -> (Expr * int) option /// An active pattern to recognize expressions that represent a dynamic type test /// The input expression to match against. /// (Expr * Type) option [] val (|TypeTest|_|) : input:Expr -> (Expr * Type) option /// An active pattern to recognize expressions that represent a test if a value is of a particular union case /// The input expression to match against. /// (Expr * UnionCaseInfo) option [] val (|UnionCaseTest|_|) : input:Expr -> (Expr * UnionCaseInfo) option /// An active pattern to recognize expressions that represent a constant value /// The input expression to match against. /// (obj * Type) option [] val (|Value|_|) : input:Expr -> (obj * Type) option /// An active pattern to recognize expressions that represent a variable /// The input expression to match against. /// Var option [] val (|Var|_|) : input:Expr -> Var option /// An active pattern to recognize expressions that represent setting a mutable variable /// The input expression to match against. /// (Var * Expr) option [] val (|VarSet|_|) : input:Expr -> (Var * Expr) option //---------------------------------------------------------------- // Helpers [] /// Contains a set of derived F# active patterns to analyze F# expression objects module DerivedPatterns = //val (|NewList|_|) : input:Expr -> Expr list option /// An active pattern to recognize expressions that represent a (possibly curried or tupled) first class function value /// The input expression to match against. /// (Var list list * Expr) option [] val (|Lambdas|_|) : input:Expr -> (Var list list * Expr) option /// An active pattern to recognize expressions that represent the application of a (possibly curried or tupled) first class function value /// The input expression to match against. /// (Expr * Expr list list) option [] val (|Applications|_|) : input:Expr -> (Expr * Expr list list) option /// An active pattern to recognize expressions of the form a && b /// The input expression to match against. /// (Expr * Expr) option [] val (|AndAlso|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize expressions of the form a || b /// The input expression to match against. /// (Expr * Expr) option [] val (|OrElse|_|) : input:Expr -> (Expr * Expr) option /// An active pattern to recognize () constant expressions /// The input expression to match against. /// unit option [] val (|Unit|_|) : input:Expr -> unit option /// An active pattern to recognize constant boolean expressions /// The input expression to match against. /// bool option [] val (|Bool|_|) : input:Expr -> bool option /// An active pattern to recognize constant string expressions /// The input expression to match against. /// string option [] val (|String|_|) : input:Expr -> string option /// An active pattern to recognize constant 32-bit floating point number expressions /// The input expression to match against. /// float32 option [] val (|Single|_|) : input:Expr -> float32 option /// An active pattern to recognize constant 64-bit floating point number expressions /// The input expression to match against. /// float option [] val (|Double|_|) : input:Expr -> float option /// An active pattern to recognize constant unicode character expressions /// The input expression to match against. /// char option [] val (|Char|_|) : input:Expr -> char option /// An active pattern to recognize constant signed byte expressions /// The input expression to match against. /// sbyte option [] val (|SByte|_|) : input:Expr -> sbyte option /// An active pattern to recognize constant byte expressions /// The input expression to match against. /// byte option [] val (|Byte|_|) : input:Expr -> byte option /// An active pattern to recognize constant int16 expressions /// The input expression to match against. /// int16 option [] val (|Int16|_|) : input:Expr -> int16 option /// An active pattern to recognize constant unsigned int16 expressions /// The input expression to match against. /// uint16 option [] val (|UInt16|_|) : input:Expr -> uint16 option /// An active pattern to recognize constant int32 expressions /// The input expression to match against. /// int32 option [] val (|Int32|_|) : input:Expr -> int32 option /// An active pattern to recognize constant unsigned int32 expressions /// The input expression to match against. /// uint32 option [] val (|UInt32|_|) : input:Expr -> uint32 option /// An active pattern to recognize constant int64 expressions /// The input expression to match against. /// int64 option [] val (|Int64|_|) : input:Expr -> int64 option /// An active pattern to recognize constant unsigned int64 expressions /// The input expression to match against. /// uint64 option [] val (|UInt64|_|) : input:Expr -> uint64 option /// A parameterized active pattern to recognize calls to a specified function or method. /// The returned elements are the optional target object (present if the target is an /// instance method), the generic type instantation (non-empty if the target is a generic /// instantiation), and the arguments to the function or method. /// The input template expression to specify the method to call. /// The optional target object (present if the target is an /// instance method), the generic type instantation (non-empty if the target is a generic /// instantiation), and the arguments to the function or method. [] val (|SpecificCall|_|) : templateParameter:Expr -> (Expr -> (Expr option * list * list) option) /// An active pattern to recognize methods that have an associated ReflectedDefinition /// The description of the method. /// The expression of the method definition if found, or None. [] val (|MethodWithReflectedDefinition|_|) : methodBase:MethodBase -> Expr option /// An active pattern to recognize property getters or values in modules that have an associated ReflectedDefinition /// The description of the property. /// The expression of the method definition if found, or None. [] val (|PropertyGetterWithReflectedDefinition|_|) : propertyInfo:PropertyInfo -> Expr option /// An active pattern to recognize property setters that have an associated ReflectedDefinition /// The description of the property. /// The expression of the method definition if found, or None. [] val (|PropertySetterWithReflectedDefinition|_|) : propertyInfo:PropertyInfo -> Expr option /// Active patterns for traversing, visiting, rebuilding and tranforming expressions in a generic way [] module ExprShape = /// An active pattern that performs a complete decomposition viewing the expression tree as a binding structure /// The input expression. /// The decomposed Var, Lambda, or ConstApp. [] val (|ShapeVar|ShapeLambda|ShapeCombination|) : input:Expr -> Choice)> // ConstApp /// Re-build combination expressions. The first parameter should be an object /// returned by the ShapeCombination case of the active pattern in this module. /// The input shape. /// The list of arguments. /// The rebuilt expression. val RebuildShapeCombination : shape:obj * arguments:list -> Expr #endif fsharp-3.0.34/src/fsharp/FSharp.Core/set.fsi0000775000175000017500000004422512260314606017524 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections /// Immutable sets based on binary trees, where comparison is the /// F# structural comparison function, potentially using implementations /// of the IComparable interface on key values. /// /// See the Set module for further operations on sets. /// /// All members of this class are thread-safe and may be used concurrently from multiple threads. [] [] type Set<[]'T when 'T : comparison> = /// Create a set containing elements drawn from the given sequence. /// The input sequence. /// The result set. new : elements:seq<'T> -> Set<'T> /// A useful shortcut for Set.add. Note this operation produces a new set /// and does not mutate the original set. The new set will share many storage /// nodes with the original. See the Set module for further operations on sets. /// The value to add to the set. /// The result set. member Add : value:'T -> Set<'T> /// A useful shortcut for Set.remove. Note this operation produces a new set /// and does not mutate the original set. The new set will share many storage /// nodes with the original. See the Set module for further operations on sets. /// The value to remove from the set. /// The result set. member Remove : value:'T -> Set<'T> /// The number of elements in the set member Count : int /// A useful shortcut for Set.contains. See the Set module for further operations on sets. /// The value to check. /// True if the set contains value. member Contains : value:'T -> bool /// A useful shortcut for Set.isEmpty. See the Set module for further operations on sets. member IsEmpty : bool /// Returns a new set with the elements of the second set removed from the first. /// The first input set. /// The second input set. /// A set containing elements of the first set that are not contained in the second set. static member (-) : set1:Set<'T> * set2:Set<'T> -> Set<'T> /// Compute the union of the two sets. /// The first input set. /// The second input set. /// The union of the two input sets. static member (+) : set1:Set<'T> * set2:Set<'T> -> Set<'T> /// Evaluates to "true" if all elements of the first set are in the second. /// The set to test against. /// True if this set is a subset of otherSet. member IsSubsetOf: otherSet:Set<'T> -> bool /// Evaluates to "true" if all elements of the first set are in the second, and at least /// one element of the second is not in the first. /// The set to test against. /// True if this set is a proper subset of otherSet. member IsProperSubsetOf: otherSet:Set<'T> -> bool /// Evaluates to "true" if all elements of the second set are in the first. /// The set to test against. /// True if this set is a superset of otherSet. member IsSupersetOf: otherSet:Set<'T> -> bool /// Evaluates to "true" if all elements of the second set are in the first, and at least /// one element of the first is not in the second. /// The set to test against. /// True if this set is a proper superset of otherSet. member IsProperSupersetOf: otherSet:Set<'T> -> bool /// Returns the lowest element in the set according to the ordering being used for the set. member MinimumElement: 'T /// Returns the highest element in the set according to the ordering being used for the set. member MaximumElement: 'T interface ICollection<'T> interface IEnumerable<'T> interface System.Collections.IEnumerable interface System.IComparable override Equals : obj -> bool namespace Microsoft.FSharp.Collections open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections [] [] /// Functional programming operators related to the Set<_> type. module Set = /// The empty set for the type 'T. [] [] val empty<'T> : Set<'T> when 'T : comparison /// The set containing the given element. /// The value for the set to contain. /// The set containing value. [] val singleton: value:'T -> Set<'T> /// Returns a new set with an element added to the set. No exception is raised if /// the set already contains the given element. /// The value to add. /// The input set. /// A new set containing value. [] val add: value:'T -> set:Set<'T> -> Set<'T> /// Evaluates to "true" if the given element is in the given set. /// The element to test. /// The input set. /// True if element is in set. [] val contains: element:'T -> set:Set<'T> -> bool /// Evaluates to "true" if all elements of the first set are in the second /// The potential subset. /// The set to test against. /// True if set1 is a subset of set2. [] val isSubset: set1: Set<'T> -> set2:Set<'T> -> bool /// Evaluates to "true" if all elements of the first set are in the second, and at least /// one element of the second is not in the first. /// The potential subset. /// The set to test against. /// True if set1 is a proper subset of set2. [] val isProperSubset: set1: Set<'T> -> set2:Set<'T> -> bool /// Evaluates to "true" if all elements of the second set are in the first. /// The potential superset. /// The set to test against. /// True if set1 is a superset of set2. [] val isSuperset: set1: Set<'T> -> set2:Set<'T> -> bool /// Evaluates to "true" if all elements of the second set are in the first, and at least /// one element of the first is not in the second. /// The potential superset. /// The set to test against. /// True if set1 is a proper superset of set2. [] val isProperSuperset: set1: Set<'T> -> set2:Set<'T> -> bool /// Returns the number of elements in the set. Same as size. /// The input set. /// The number of elements in the set. [] val count: set:Set<'T> -> int /// Tests if any element of the collection satisfies the given predicate. /// If the input function is predicate and the elements are i0...iN /// then computes p i0 or ... or p iN. /// The function to test set elements. /// The input set. /// True if any element of set satisfies predicate. [] val exists: predicate:('T -> bool) -> set:Set<'T> -> bool /// Returns a new collection containing only the elements of the collection /// for which the given predicate returns true. /// The function to test set elements. /// The input set. /// The set containing only the elements for which predicate returns true. [] val filter: predicate:('T -> bool) -> set:Set<'T> -> Set<'T> /// Returns a new collection containing the results of applying the /// given function to each element of the input set. /// The function to transform elements of the input set. /// The input set. /// A set containing the transformed elements. [] val map: mapping:('T -> 'U) -> set:Set<'T> -> Set<'U> /// Applies the given accumulating function to all the elements of the set /// The accumulating function. /// The initial state. /// The input set. /// The final state. [] val fold<'T,'State> : folder:('State -> 'T -> 'State) -> state:'State -> set:Set<'T> -> 'State when 'T : comparison /// Applies the given accumulating function to all the elements of the set. /// The accumulating function. /// The input set. /// The initial state. /// The final state. [] val foldBack<'T,'State> : folder:('T -> 'State -> 'State) -> set:Set<'T> -> state:'State -> 'State when 'T : comparison /// Tests if all elements of the collection satisfy the given predicate. /// If the input function is f and the elements are i0...iN and "j0...jN" /// then computes p i0 && ... && p iN. /// The function to test set elements. /// The input set. /// True if all elements of set satisfy predicate. [] val forall: predicate:('T -> bool) -> set:Set<'T> -> bool /// Computes the intersection of the two sets. /// The first input set. /// The second input set. /// The intersection of set1 and set2. [] val intersect: set1:Set<'T> -> set2:Set<'T> -> Set<'T> /// Computes the intersection of a sequence of sets. The sequence must be non-empty. /// The sequence of sets to intersect. /// The intersection of the input sets. [] val intersectMany: sets:seq> -> Set<'T> /// Computes the union of the two sets. /// The first input set. /// The second input set. /// The union of set1 and set2. [] val union: set1:Set<'T> -> set2:Set<'T> -> Set<'T> /// Computes the union of a sequence of sets. /// The sequence of sets to untion. /// The union of the input sets. [] val unionMany: sets:seq> -> Set<'T> /// Returns "true" if the set is empty. /// The input set. /// True if set is empty. [] val isEmpty: set:Set<'T> -> bool /// Applies the given function to each element of the set, in order according /// to the comparison function. /// The function to apply to each element. /// The input set. [] val iter: action:('T -> unit) -> set:Set<'T> -> unit /// Splits the set into two sets containing the elements for which the given predicate /// returns true and false respectively. /// The function to test set elements. /// The input set. /// A pair of sets with the first containing the elements for which predicate returns /// true and the second containing the elements for which predicate returns false. [] val partition: predicate:('T -> bool) -> set:Set<'T> -> (Set<'T> * Set<'T>) /// Returns a new set with the given element removed. No exception is raised if /// the set doesn't contain the given element. /// The element to remove. /// The input set. /// The input set with value removed. [] val remove: value: 'T -> set:Set<'T> -> Set<'T> /// Returns the lowest element in the set according to the ordering being used for the set. /// The input set. /// The min value from the set. [] val minElement: set:Set<'T> -> 'T /// Returns the highest element in the set according to the ordering being used for the set. /// The input set. /// The max value from the set. [] val maxElement: set:Set<'T> -> 'T /// Builds a set that contains the same elements as the given list. /// The input list. /// A set containing the elements form the input list. [] val ofList: elements:'T list -> Set<'T> /// Builds a list that contains the elements of the set in order. /// The input set. /// An ordered list of the elements of set. [] val toList: set:Set<'T> -> 'T list /// Builds a set that contains the same elements as the given array. /// The input array. /// A set containing the elements of array. [] val ofArray: array:'T[] -> Set<'T> /// Builds an array that contains the elements of the set in order. /// The input set. /// An ordered array of the elements of set. [] val toArray: set:Set<'T> -> 'T[] /// Returns an ordered view of the collection as an enumerable object. /// The input set. /// An ordered sequence of the elements of set. [] val toSeq: set:Set<'T> -> seq<'T> /// Builds a new collection from the given enumerable object. /// The input sequence. /// The set containing elements. [] val ofSeq: elements:seq<'T> -> Set<'T> /// Returns a new set with the elements of the second set removed from the first. /// The first input set. /// The set whose elements will be removed from set1. /// The set with the elements of set2 removed from set1. [] val difference: set1:Set<'T> -> set2:Set<'T> -> Set<'T> fsharp-3.0.34/src/fsharp/FSharp.Core/reflect.fs0000775000175000017500000012105712260314606020203 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // Reflection on F# values. Analyze an object to see if it the representation // of an F# value. namespace Microsoft.FSharp.Reflection open System open System.Globalization open System.Reflection open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics module internal Impl = let debug = false let inline checkNonNull argName (v: 'T) = match box v with | null -> nullArg argName | _ -> () let emptyArray arr = (Array.length arr = 0) let nonEmptyArray arr = Array.length arr > 0 let isNamedType(typ:Type) = not (typ.IsArray || typ.IsByRef || typ.IsPointer) let equivHeadTypes (ty1:Type) (ty2:Type) = isNamedType(ty1) && if ty1.IsGenericType then ty2.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(ty2.GetGenericTypeDefinition()) else ty1.Equals(ty2) let option = typedefof let func = typedefof<(obj -> obj)> let isOptionType typ = equivHeadTypes typ (typeof) let isFunctionType typ = equivHeadTypes typ (typeof<(int -> int)>) let isListType typ = equivHeadTypes typ (typeof) //----------------------------------------------------------------- // GENERAL UTILITIES #if FX_ATLEAST_PORTABLE let instancePropertyFlags = BindingFlags.Instance let staticPropertyFlags = BindingFlags.Static let staticFieldFlags = BindingFlags.Static let staticMethodFlags = BindingFlags.Static #else let instancePropertyFlags = BindingFlags.GetProperty ||| BindingFlags.Instance let staticPropertyFlags = BindingFlags.GetProperty ||| BindingFlags.Static let staticFieldFlags = BindingFlags.GetField ||| BindingFlags.Static let staticMethodFlags = BindingFlags.Static #endif let getInstancePropertyInfo (typ: Type,propName,bindingFlags) = typ.GetProperty(propName,instancePropertyFlags ||| bindingFlags) let getInstancePropertyInfos (typ,names,bindingFlags) = names |> Array.map (fun nm -> getInstancePropertyInfo (typ,nm,bindingFlags)) let getInstancePropertyReader (typ: Type,propName,bindingFlags) = match getInstancePropertyInfo(typ, propName, bindingFlags) with | null -> None #if FX_ATLEAST_PORTABLE | prop -> Some(fun (obj:obj) -> prop.GetValue(obj,null)) #else | prop -> Some(fun (obj:obj) -> prop.GetValue(obj,instancePropertyFlags ||| bindingFlags,null,null,null)) #endif //----------------------------------------------------------------- // ATTRIBUTE DECOMPILATION let tryFindCompilationMappingAttribute (attrs:obj[]) = match attrs with | null | [| |] -> None | [| res |] -> let a = (res :?> CompilationMappingAttribute) in Some (a.SourceConstructFlags, a.SequenceNumber, a.VariantNumber) | _ -> raise <| System.InvalidOperationException (SR.GetString(SR.multipleCompilationMappings)) let findCompilationMappingAttribute (attrs:obj[]) = match tryFindCompilationMappingAttribute attrs with | None -> failwith "no compilation mapping attribute" | Some a -> a #if FX_NO_CUSTOMATTRIBUTEDATA let tryFindCompilationMappingAttributeFromType (typ:Type) = tryFindCompilationMappingAttribute ( typ.GetCustomAttributes (typeof,false)) let tryFindCompilationMappingAttributeFromMemberInfo (info:MemberInfo) = tryFindCompilationMappingAttribute (info.GetCustomAttributes (typeof,false)) let findCompilationMappingAttributeFromMemberInfo (info:MemberInfo) = findCompilationMappingAttribute (info.GetCustomAttributes (typeof,false)) #else let cmaName = typeof.FullName let assemblyName = typeof.Assembly.GetName().Name let _ = assert (assemblyName = "FSharp.Core") let tryFindCompilationMappingAttributeFromData (attrs:System.Collections.Generic.IList) = match attrs with | null -> None | _ -> let mutable res = None for a in attrs do if a.Constructor.DeclaringType.FullName = cmaName then let args = a.ConstructorArguments let flags = match args.Count with | 1 -> ((args.[0].Value :?> SourceConstructFlags), 0, 0) | 2 -> ((args.[0].Value :?> SourceConstructFlags), (args.[1].Value :?> int), 0) | 3 -> ((args.[0].Value :?> SourceConstructFlags), (args.[1].Value :?> int), (args.[2].Value :?> int)) | _ -> (enum 0, 0, 0) res <- Some flags res let findCompilationMappingAttributeFromData attrs = match tryFindCompilationMappingAttributeFromData attrs with | None -> failwith "no compilation mapping attribute" | Some a -> a let tryFindCompilationMappingAttributeFromType (typ:Type) = let assem = typ.Assembly if assem <> null && assem.ReflectionOnly then tryFindCompilationMappingAttributeFromData ( typ.GetCustomAttributesData()) else tryFindCompilationMappingAttribute ( typ.GetCustomAttributes (typeof,false)) let tryFindCompilationMappingAttributeFromMemberInfo (info:MemberInfo) = let assem = info.DeclaringType.Assembly if assem <> null && assem.ReflectionOnly then tryFindCompilationMappingAttributeFromData (info.GetCustomAttributesData()) else tryFindCompilationMappingAttribute (info.GetCustomAttributes (typeof,false)) let findCompilationMappingAttributeFromMemberInfo (info:MemberInfo) = let assem = info.DeclaringType.Assembly if assem <> null && assem.ReflectionOnly then findCompilationMappingAttributeFromData (info.GetCustomAttributesData()) else findCompilationMappingAttribute (info.GetCustomAttributes (typeof,false)) #endif let sequenceNumberOfMember (x: MemberInfo) = let (_,n,_) = findCompilationMappingAttributeFromMemberInfo x in n let variantNumberOfMember (x: MemberInfo) = let (_,_,vn) = findCompilationMappingAttributeFromMemberInfo x in vn let sortFreshArray f arr = Array.sortInPlaceWith f arr; arr let isFieldProperty (prop : PropertyInfo) = match tryFindCompilationMappingAttributeFromMemberInfo(prop) with | None -> false | Some (flags,_n,_vn) -> (flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.Field let allInstance (ps : PropertyInfo[]) = (ps, false) let allStatic (ps : PropertyInfo[]) = (ps, true) let tryFindSourceConstructFlagsOfType (typ:Type) = match tryFindCompilationMappingAttributeFromType typ with | None -> None | Some (flags,_n,_vn) -> Some flags //----------------------------------------------------------------- // UNION DECOMPILATION // Get the type where the type definitions are stored let getUnionCasesTyp (typ: Type, _bindingFlags) = #if CASES_IN_NESTED_CLASS let casesTyp = typ.GetNestedType("Cases", bindingFlags) if casesTyp.IsGenericTypeDefinition then casesTyp.MakeGenericType(typ.GetGenericArguments()) else casesTyp #else typ #endif let getUnionTypeTagNameMap (typ:Type,bindingFlags) = let enumTyp = typ.GetNestedType("Tags", bindingFlags) // Unions with a singleton case do not get a Tags type (since there is only one tag), hence enumTyp may be null in this case match enumTyp with | null -> typ.GetMethods(staticMethodFlags ||| bindingFlags) |> Array.choose (fun minfo -> match tryFindCompilationMappingAttributeFromMemberInfo(minfo) with | None -> None | Some (flags,n,_vn) -> if (flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.UnionCase then let nm = minfo.Name // chop "get_" or "New" off the front let nm = if not (isListType typ) && not (isOptionType typ) then if nm.Length > 4 && nm.[0..3] = "get_" then nm.[4..] elif nm.Length > 3 && nm.[0..2] = "New" then nm.[3..] else nm else nm Some (n, nm) else None) | _ -> enumTyp.GetFields(staticFieldFlags ||| bindingFlags) |> Array.filter (fun (f:FieldInfo) -> f.IsStatic && f.IsLiteral) |> sortFreshArray (fun f1 f2 -> compare (f1.GetValue(null) :?> int) (f2.GetValue(null) :?> int)) |> Array.map (fun tagfield -> (tagfield.GetValue(null) :?> int),tagfield.Name) let getUnionCaseTyp (typ: Type, tag: int, bindingFlags) = let tagFields = getUnionTypeTagNameMap(typ,bindingFlags) let tagField = tagFields |> Array.pick (fun (i,f) -> if i = tag then Some f else None) if tagFields.Length = 1 then typ else let casesTyp = getUnionCasesTyp (typ, bindingFlags) let caseTyp = casesTyp.GetNestedType(tagField, bindingFlags) // if this is null then the union is nullary match caseTyp with | null -> null | _ when caseTyp.IsGenericTypeDefinition -> caseTyp.MakeGenericType(casesTyp.GetGenericArguments()) | _ -> caseTyp let getUnionTagConverter (typ:Type,bindingFlags) = if isOptionType typ then (fun tag -> match tag with 0 -> "None" | 1 -> "Some" | _ -> invalidArg "tag" (SR.GetString(SR.outOfRange))) elif isListType typ then (fun tag -> match tag with 0 -> "Empty" | 1 -> "Cons" | _ -> invalidArg "tag" (SR.GetString(SR.outOfRange))) else let tagfieldmap = getUnionTypeTagNameMap (typ,bindingFlags) |> Map.ofSeq (fun tag -> tagfieldmap.[tag]) let isUnionType (typ:Type,bindingFlags:BindingFlags) = isOptionType typ || isListType typ || match tryFindSourceConstructFlagsOfType(typ) with | None -> false | Some(flags) -> (flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.SumType && // We see private representations only if BindingFlags.NonPublic is set (if (flags &&& SourceConstructFlags.NonPublicRepresentation) <> enum(0) then (bindingFlags &&& BindingFlags.NonPublic) <> enum(0) else true) // Check the base type - if it is also an F# type then // for the moment we know it is a Discriminated Union let isConstructorRepr (typ:Type,bindingFlags:BindingFlags) = let rec get (typ:Type) = isUnionType (typ,bindingFlags) || match typ.BaseType with null -> false | b -> get b get typ let unionTypeOfUnionCaseType (typ:Type,bindingFlags) = let rec get (typ:Type) = if isUnionType (typ,bindingFlags) then typ else match typ.BaseType with null -> typ | b -> get b get typ let swap (x,y) = (y,x) let fieldsPropsOfUnionCase(typ:Type, tag:int, bindingFlags) = if isOptionType typ then match tag with | 0 (* None *) -> getInstancePropertyInfos (typ,[| |],bindingFlags) | 1 (* Some *) -> getInstancePropertyInfos (typ,[| "Value" |] ,bindingFlags) | _ -> failwith "fieldsPropsOfUnionCase" elif isListType typ then match tag with | 0 (* Nil *) -> getInstancePropertyInfos (typ,[| |],bindingFlags) | 1 (* Cons *) -> getInstancePropertyInfos (typ,[| "Head"; "Tail" |],bindingFlags) | _ -> failwith "fieldsPropsOfUnionCase" else // Lookup the type holding the fields for the union case let caseTyp = getUnionCaseTyp (typ, tag, bindingFlags) match caseTyp with | null -> [| |] | _ -> caseTyp.GetProperties(instancePropertyFlags ||| bindingFlags) |> Array.filter isFieldProperty |> Array.filter (fun prop -> variantNumberOfMember prop = tag) |> sortFreshArray (fun p1 p2 -> compare (sequenceNumberOfMember p1) (sequenceNumberOfMember p2)) let getUnionCaseRecordReader (typ:Type,tag:int,bindingFlags) = let props = fieldsPropsOfUnionCase(typ,tag,bindingFlags) #if FX_ATLEAST_PORTABLE (fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,null))) #else (fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,bindingFlags,null,null,null))) #endif let getUnionTagReader (typ:Type,bindingFlags) : (obj -> int) = if isOptionType typ then (fun (obj:obj) -> match obj with null -> 0 | _ -> 1) else let tagMap = getUnionTypeTagNameMap (typ, bindingFlags) if tagMap.Length <= 1 then (fun (_obj:obj) -> 0) else match getInstancePropertyReader (typ,"Tag",bindingFlags) with | Some reader -> (fun (obj:obj) -> reader obj :?> int) | None -> (fun (obj:obj) -> #if FX_ATLEAST_PORTABLE let m2b = typ.GetMethod("GetTag", [| typ |]) #else let m2b = typ.GetMethod("GetTag", BindingFlags.Static ||| bindingFlags, null, [| typ |], null) #endif m2b.Invoke(null, [|obj|]) :?> int) let getUnionTagMemberInfo (typ:Type,bindingFlags) = match getInstancePropertyInfo (typ,"Tag",bindingFlags) with #if FX_ATLEAST_PORTABLE | null -> (typ.GetMethod("GetTag") :> MemberInfo) #else | null -> (typ.GetMethod("GetTag",BindingFlags.Static ||| bindingFlags) :> MemberInfo) #endif | info -> (info :> MemberInfo) let isUnionCaseNullary (typ:Type, tag:int, bindingFlags) = let props = fieldsPropsOfUnionCase(typ, tag, bindingFlags) emptyArray props let getUnionCaseConstructorMethod (typ:Type,tag:int,bindingFlags) = let constrname = getUnionTagConverter (typ,bindingFlags) tag let methname = if isUnionCaseNullary (typ, tag, bindingFlags) then "get_"+constrname elif isListType typ || isOptionType typ then constrname else "New"+constrname match typ.GetMethod(methname, BindingFlags.Static ||| bindingFlags) with | null -> raise <| System.InvalidOperationException (SR.GetString1(SR.constructorForUnionCaseNotFound, methname)) | meth -> meth let getUnionCaseConstructor (typ:Type,tag:int,bindingFlags) = let meth = getUnionCaseConstructorMethod (typ,tag,bindingFlags) (fun args -> #if FX_ATLEAST_PORTABLE meth.Invoke(null,args)) #else meth.Invoke(null,BindingFlags.Static ||| BindingFlags.InvokeMethod ||| bindingFlags,null,args,null)) #endif let checkUnionType(unionType,bindingFlags) = checkNonNull "unionType" unionType; if not (isUnionType (unionType,bindingFlags)) then if isUnionType (unionType,bindingFlags ||| BindingFlags.NonPublic) then invalidArg "unionType" (SR.GetString1(SR.privateUnionType, unionType.FullName)) else invalidArg "unionType" (SR.GetString1(SR.notAUnionType, unionType.FullName)) let emptyObjArray : obj[] = [| |] //----------------------------------------------------------------- // TUPLE DECOMPILATION let tuple1 = typedefof> let tuple2 = typedefof let tuple3 = typedefof let tuple4 = typedefof let tuple5 = typedefof let tuple6 = typedefof let tuple7 = typedefof let tuple8 = typedefof let isTuple1Type typ = equivHeadTypes typ tuple1 let isTuple2Type typ = equivHeadTypes typ tuple2 let isTuple3Type typ = equivHeadTypes typ tuple3 let isTuple4Type typ = equivHeadTypes typ tuple4 let isTuple5Type typ = equivHeadTypes typ tuple5 let isTuple6Type typ = equivHeadTypes typ tuple6 let isTuple7Type typ = equivHeadTypes typ tuple7 let isTuple8Type typ = equivHeadTypes typ tuple8 let isTupleType typ = isTuple1Type typ || isTuple2Type typ || isTuple3Type typ || isTuple4Type typ || isTuple5Type typ || isTuple6Type typ || isTuple7Type typ || isTuple8Type typ let maxTuple = 8 // Which field holds the nested tuple? let tupleEncField = maxTuple-1 let rec mkTupleType (tys: Type[]) = match tys.Length with | 1 -> tuple1.MakeGenericType(tys) | 2 -> tuple2.MakeGenericType(tys) | 3 -> tuple3.MakeGenericType(tys) | 4 -> tuple4.MakeGenericType(tys) | 5 -> tuple5.MakeGenericType(tys) | 6 -> tuple6.MakeGenericType(tys) | 7 -> tuple7.MakeGenericType(tys) | n when n >= maxTuple -> let tysA = tys.[0..tupleEncField-1] let tysB = tys.[maxTuple-1..] let tyB = mkTupleType tysB tuple8.MakeGenericType(Array.append tysA [| tyB |]) | _ -> invalidArg "tys" (SR.GetString(SR.invalidTupleTypes)) let rec getTupleTypeInfo (typ:Type) = if not (isTupleType (typ) ) then invalidArg "typ" (SR.GetString1(SR.notATupleType, typ.FullName)); let tyargs = typ.GetGenericArguments() if tyargs.Length = maxTuple then let tysA = tyargs.[0..tupleEncField-1] let tyB = tyargs.[tupleEncField] Array.append tysA (getTupleTypeInfo tyB) else tyargs let orderTupleProperties (props:PropertyInfo[]) = // The tuple properties are of the form: // Item1 // .. // Item1, Item2, ..., Item // Item1, Item2, ..., Item, Rest // The PropertyInfo may not come back in order, so ensure ordering here. #if FX_ATLEAST_PORTABLE #else assert(maxTuple < 10) // Alphasort will only works for upto 9 items: Item1, Item10, Item2, Item3, ..., Item9, Rest #endif let props = props |> Array.sortBy (fun p -> p.Name) // they are not always in alphabetic order #if FX_ATLEAST_PORTABLE #else assert(props.Length <= maxTuple) assert(let haveNames = props |> Array.map (fun p -> p.Name) let expectNames = Array.init props.Length (fun i -> let j = i+1 // index j = 1,2,..,props.Length <= maxTuple if j orderTupleProperties #if FX_ATLEAST_PORTABLE let ctor = typ.GetConstructor(props |> Array.map (fun p -> p.PropertyType)) ignore bindingFlags #else let ctor = typ.GetConstructor(BindingFlags.Instance ||| bindingFlags,null,props |> Array.map (fun p -> p.PropertyType),null) #endif match ctor with | null -> raise <| ArgumentException(SR.GetString1(SR.invalidTupleTypeConstructorNotDefined, typ.FullName)) | _ -> () ctor let getTupleCtor(typ:Type,bindingFlags) = let ctor = getTupleConstructorMethod(typ,bindingFlags) (fun (args:obj[]) -> #if FX_ATLEAST_PORTABLE ctor.Invoke(args)) #else ctor.Invoke(BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| bindingFlags,null,args,null)) #endif let rec getTupleReader (typ:Type) = let etys = typ.GetGenericArguments() // Get the reader for the outer tuple record let props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties let reader = (fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,null))) if etys.Length < maxTuple then reader else let tyBenc = etys.[tupleEncField] let reader2 = getTupleReader(tyBenc) (fun obj -> let directVals = reader obj let encVals = reader2 directVals.[tupleEncField] Array.append directVals.[0..tupleEncField-1] encVals) let rec getTupleConstructor (typ:Type) = let etys = typ.GetGenericArguments() let maker1 = getTupleCtor (typ,BindingFlags.Public) if etys.Length < maxTuple then maker1 else let tyBenc = etys.[tupleEncField] let maker2 = getTupleConstructor(tyBenc) (fun (args:obj[]) -> let encVal = maker2 args.[tupleEncField..] maker1 (Array.append args.[0..tupleEncField-1] [| encVal |])) let getTupleConstructorInfo (typ:Type) = let etys = typ.GetGenericArguments() let maker1 = getTupleConstructorMethod (typ,BindingFlags.Public) if etys.Length < maxTuple then maker1,None else maker1,Some(etys.[tupleEncField]) let getTupleReaderInfo (typ:Type,index:int) = if index < 0 then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString())) let props = typ.GetProperties(instancePropertyFlags ||| BindingFlags.Public) |> orderTupleProperties let get index = if index >= props.Length then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, typ.FullName, index.ToString())) props.[index] if index < tupleEncField then get index, None else let etys = typ.GetGenericArguments() get tupleEncField, Some(etys.[tupleEncField],index-(maxTuple-1)) //----------------------------------------------------------------- // FUNCTION DECOMPILATION let getFunctionTypeInfo (typ:Type) = if not (isFunctionType typ) then invalidArg "typ" (SR.GetString1(SR.notAFunctionType, typ.FullName)) let tyargs = typ.GetGenericArguments() tyargs.[0], tyargs.[1] //----------------------------------------------------------------- // MODULE DECOMPILATION let isModuleType (typ:Type) = match tryFindSourceConstructFlagsOfType(typ) with | None -> false | Some(flags) -> (flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.Module let rec isClosureRepr typ = isFunctionType typ || (match typ.BaseType with null -> false | bty -> isClosureRepr bty) //----------------------------------------------------------------- // RECORD DECOMPILATION let isRecordType (typ:Type,bindingFlags:BindingFlags) = match tryFindSourceConstructFlagsOfType(typ) with | None -> false | Some(flags) -> (flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.RecordType && // We see private representations only if BindingFlags.NonPublic is set (if (flags &&& SourceConstructFlags.NonPublicRepresentation) <> enum(0) then (bindingFlags &&& BindingFlags.NonPublic) <> enum(0) else true) && not (isTupleType typ) let fieldPropsOfRecordType(typ:Type,bindingFlags) = typ.GetProperties(instancePropertyFlags ||| bindingFlags) |> Array.filter isFieldProperty |> sortFreshArray (fun p1 p2 -> compare (sequenceNumberOfMember p1) (sequenceNumberOfMember p2)) let recdDescOfProps props = props |> Array.toList |> List.map (fun (p:PropertyInfo) -> p.Name, p.PropertyType) let getRecd obj (props:PropertyInfo[]) = props |> Array.map (fun prop -> prop.GetValue(obj,null)) let getRecordReader(typ:Type,bindingFlags) = let props = fieldPropsOfRecordType(typ,bindingFlags) (fun (obj:obj) -> props |> Array.map (fun prop -> prop.GetValue(obj,null))) let getRecordConstructorMethod(typ:Type,bindingFlags) = let props = fieldPropsOfRecordType(typ,bindingFlags) #if FX_ATLEAST_PORTABLE let ctor = typ.GetConstructor(props |> Array.map (fun p -> p.PropertyType)) #else let ctor = typ.GetConstructor(BindingFlags.Instance ||| bindingFlags,null,props |> Array.map (fun p -> p.PropertyType),null) #endif match ctor with | null -> raise <| ArgumentException(SR.GetString1(SR.invalidRecordTypeConstructorNotDefined, typ.FullName)) | _ -> () ctor let getRecordConstructor(typ:Type,bindingFlags) = let ctor = getRecordConstructorMethod(typ,bindingFlags) (fun (args:obj[]) -> #if FX_ATLEAST_PORTABLE ctor.Invoke(args)) #else ctor.Invoke(BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| bindingFlags,null,args,null)) #endif //----------------------------------------------------------------- // EXCEPTION DECOMPILATION // Check the base type - if it is also an F# type then // for the moment we know it is a Discriminated Union let isExceptionRepr (typ:Type,bindingFlags) = match tryFindSourceConstructFlagsOfType(typ) with | None -> false | Some(flags) -> ((flags &&& SourceConstructFlags.KindMask) = SourceConstructFlags.Exception) && // We see private representations only if BindingFlags.NonPublic is set (if (flags &&& SourceConstructFlags.NonPublicRepresentation) <> enum(0) then (bindingFlags &&& BindingFlags.NonPublic) <> enum(0) else true) let getTypeOfReprType (typ:Type,bindingFlags) = if isExceptionRepr(typ,bindingFlags) then typ.BaseType elif isConstructorRepr(typ,bindingFlags) then unionTypeOfUnionCaseType(typ,bindingFlags) elif isClosureRepr(typ) then let rec get (typ:Type) = if isFunctionType typ then typ else match typ.BaseType with null -> typ | b -> get b get typ else typ //----------------------------------------------------------------- // CHECKING ROUTINES let checkExnType (exceptionType, bindingFlags) = if not (isExceptionRepr (exceptionType,bindingFlags)) then if isExceptionRepr (exceptionType,bindingFlags ||| BindingFlags.NonPublic) then invalidArg "exceptionType" (SR.GetString1(SR.privateExceptionType, exceptionType.FullName)) else invalidArg "exceptionType" (SR.GetString1(SR.notAnExceptionType, exceptionType.FullName)) let checkRecordType(argName,recordType,bindingFlags) = checkNonNull argName recordType; if not (isRecordType (recordType,bindingFlags) ) then if isRecordType (recordType,bindingFlags ||| BindingFlags.NonPublic) then invalidArg argName (SR.GetString1(SR.privateRecordType, recordType.FullName)) else invalidArg argName (SR.GetString1(SR.notARecordType, recordType.FullName)) let checkTupleType(argName,tupleType) = checkNonNull argName tupleType; if not (isTupleType tupleType) then invalidArg argName (SR.GetString1(SR.notATupleType, tupleType.FullName)) [] type UnionCaseInfo(typ: System.Type, tag:int) = // Cache the tag -> name map let mutable names = None let getMethInfo() = Impl.getUnionCaseConstructorMethod (typ,tag,BindingFlags.Public ||| BindingFlags.NonPublic) member x.Name = match names with | None -> (let conv = Impl.getUnionTagConverter (typ,BindingFlags.Public ||| BindingFlags.NonPublic) in names <- Some conv; conv tag) | Some conv -> conv tag member x.DeclaringType = typ //member x.CustomAttributes = failwith "nyi" member x.GetFields() = let props = Impl.fieldsPropsOfUnionCase(typ,tag,BindingFlags.Public ||| BindingFlags.NonPublic) props member x.GetCustomAttributes() = getMethInfo().GetCustomAttributes(false) member x.GetCustomAttributes(attributeType) = getMethInfo().GetCustomAttributes(attributeType,false) #if FX_NO_CUSTOMATTRIBUTEDATA #else member x.GetCustomAttributesData() = getMethInfo().GetCustomAttributesData() #endif member x.Tag = tag override x.ToString() = typ.Name + "." + x.Name override x.GetHashCode() = typ.GetHashCode() + tag override x.Equals(obj:obj) = match obj with | :? UnionCaseInfo as uci -> uci.DeclaringType = typ && uci.Tag = tag | _ -> false [] type FSharpType = static member IsTuple(typ:Type) = Impl.checkNonNull "typ" typ; Impl.isTupleType typ static member IsRecord(typ:Type,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "typ" typ; Impl.isRecordType (typ,bindingFlags) static member IsUnion(typ:Type,?bindingFlags) = Impl.checkNonNull "typ" typ; let typ = Impl.getTypeOfReprType (typ ,BindingFlags.Public ||| BindingFlags.NonPublic) let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.isUnionType (typ,bindingFlags) static member IsFunction(typ:Type) = Impl.checkNonNull "typ" typ; let typ = Impl.getTypeOfReprType (typ ,BindingFlags.Public ||| BindingFlags.NonPublic) Impl.isFunctionType typ static member IsModule(typ:Type) = Impl.checkNonNull "typ" typ; Impl.isModuleType typ static member MakeFunctionType(domain:Type,range:Type) = Impl.checkNonNull "domain" domain; Impl.checkNonNull "range" range; Impl.func.MakeGenericType [| domain; range |] static member MakeTupleType(types:Type[]) = Impl.checkNonNull "types" types; if types |> Array.exists (function null -> true | _ -> false) then invalidArg "types" (SR.GetString(SR.nullsNotAllowedInArray)) Impl.mkTupleType types static member GetTupleElements(tupleType:Type) = Impl.checkTupleType("tupleType",tupleType); Impl.getTupleTypeInfo tupleType static member GetFunctionElements(functionType:Type) = Impl.checkNonNull "functionType" functionType; let functionType = Impl.getTypeOfReprType (functionType ,BindingFlags.Public ||| BindingFlags.NonPublic) Impl.getFunctionTypeInfo functionType static member GetRecordFields(recordType:Type,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkRecordType("recordType",recordType,bindingFlags); Impl.fieldPropsOfRecordType(recordType,bindingFlags) static member GetUnionCases (unionType:Type,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "unionType" unionType; let unionType = Impl.getTypeOfReprType (unionType ,bindingFlags) Impl.checkUnionType(unionType,bindingFlags); Impl.getUnionTypeTagNameMap(unionType,bindingFlags) |> Array.mapi (fun i _ -> UnionCaseInfo(unionType,i)) static member IsExceptionRepresentation(exceptionType:Type, ?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "exceptionType" exceptionType; Impl.isExceptionRepr(exceptionType,bindingFlags) static member GetExceptionFields(exceptionType:Type, ?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "exceptionType" exceptionType; Impl.checkExnType(exceptionType,bindingFlags); Impl.fieldPropsOfRecordType (exceptionType,bindingFlags) type DynamicFunction<'T1,'T2>() = inherit FSharpFunc obj, obj>() override x.Invoke(impl: obj -> obj) : obj = box<('T1 -> 'T2)> (fun inp -> unbox<'T2>(impl (box<'T1>(inp)))) [] type FSharpValue = static member MakeRecord(recordType:Type,args,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkRecordType("recordType",recordType,bindingFlags); Impl.getRecordConstructor (recordType,bindingFlags) args static member GetRecordField(record:obj,info:PropertyInfo) = Impl.checkNonNull "info" info; Impl.checkNonNull "record" record; let reprty = record.GetType() if not (Impl.isRecordType(reprty,BindingFlags.Public ||| BindingFlags.NonPublic)) then invalidArg "record" (SR.GetString(SR.objIsNotARecord)); info.GetValue(record,null) static member GetRecordFields(record:obj,?bindingFlags) = Impl.checkNonNull "record" record; let bindingFlags = defaultArg bindingFlags BindingFlags.Public let typ = record.GetType() if not (Impl.isRecordType(typ,bindingFlags)) then invalidArg "record" (SR.GetString(SR.objIsNotARecord)); Impl.getRecordReader (typ,bindingFlags) record static member PreComputeRecordFieldReader(info:PropertyInfo) = Impl.checkNonNull "info" info; (fun (obj:obj) -> info.GetValue(obj,null)) static member PreComputeRecordReader(recordType:Type,?bindingFlags) : (obj -> obj[]) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkRecordType("recordType",recordType,bindingFlags); Impl.getRecordReader (recordType,bindingFlags) static member PreComputeRecordConstructor(recordType:Type,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkRecordType("recordType",recordType,bindingFlags); Impl.getRecordConstructor (recordType,bindingFlags) static member PreComputeRecordConstructorInfo(recordType:Type, ?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkRecordType("recordType",recordType,bindingFlags); Impl.getRecordConstructorMethod(recordType,bindingFlags) static member MakeFunction(functionType:Type,implementation:(obj->obj)) = Impl.checkNonNull "functionType" functionType; if not (Impl.isFunctionType functionType) then invalidArg "functionType" (SR.GetString1(SR.notAFunctionType, functionType.FullName)); Impl.checkNonNull "implementation" implementation; let domain,range = Impl.getFunctionTypeInfo functionType let dynCloMakerTy = typedefof> let saverTy = dynCloMakerTy.MakeGenericType [| domain; range |] let o = Activator.CreateInstance(saverTy) let (f : (obj -> obj) -> obj) = downcast o f implementation static member MakeTuple(tupleElements: obj[],tupleType:Type) = Impl.checkNonNull "tupleElements" tupleElements; Impl.checkTupleType("tupleType",tupleType) Impl.getTupleConstructor tupleType tupleElements static member GetTupleFields(tuple:obj) = // argument name(s) used in error message Impl.checkNonNull "tuple" tuple; let typ = tuple.GetType() if not (Impl.isTupleType typ ) then invalidArg "tuple" (SR.GetString1(SR.notATupleType, tuple.GetType().FullName)); Impl.getTupleReader typ tuple static member GetTupleField(tuple:obj,index:int) = // argument name(s) used in error message Impl.checkNonNull "tuple" tuple; let typ = tuple.GetType() if not (Impl.isTupleType typ ) then invalidArg "tuple" (SR.GetString1(SR.notATupleType, tuple.GetType().FullName)); let fields = Impl.getTupleReader typ tuple if index < 0 || index >= fields.Length then invalidArg "index" (SR.GetString2(SR.tupleIndexOutOfRange, tuple.GetType().FullName, index.ToString())); fields.[index] static member PreComputeTupleReader(tupleType:Type) : (obj -> obj[]) = Impl.checkTupleType("tupleType",tupleType) Impl.getTupleReader tupleType static member PreComputeTuplePropertyInfo(tupleType:Type,index:int) = Impl.checkTupleType("tupleType",tupleType) Impl.getTupleReaderInfo (tupleType,index) static member PreComputeTupleConstructor(tupleType:Type) = Impl.checkTupleType("tupleType",tupleType) Impl.getTupleConstructor tupleType static member PreComputeTupleConstructorInfo(tupleType:Type) = Impl.checkTupleType("tupleType",tupleType) Impl.getTupleConstructorInfo (tupleType) static member MakeUnion(unionCase:UnionCaseInfo,args: obj [],?bindingFlags) = Impl.checkNonNull "unionCase" unionCase; let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.getUnionCaseConstructor (unionCase.DeclaringType,unionCase.Tag,bindingFlags) args static member PreComputeUnionConstructor (unionCase:UnionCaseInfo,?bindingFlags) = Impl.checkNonNull "unionCase" unionCase; let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.getUnionCaseConstructor (unionCase.DeclaringType,unionCase.Tag,bindingFlags) static member PreComputeUnionConstructorInfo(unionCase:UnionCaseInfo, ?bindingFlags) = Impl.checkNonNull "unionCase" unionCase; let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.getUnionCaseConstructorMethod (unionCase.DeclaringType,unionCase.Tag,bindingFlags) static member GetUnionFields(obj:obj,unionType:Type,?bindingFlags) = let ensureType (typ:Type,obj:obj) = match typ with | null -> match obj with | null -> invalidArg "obj" (SR.GetString(SR.objIsNullAndNoType)) | _ -> obj.GetType() | _ -> typ //System.Console.WriteLine("typ1 = {0}",box unionType) let bindingFlags = defaultArg bindingFlags BindingFlags.Public let unionType = ensureType(unionType,obj) //System.Console.WriteLine("typ2 = {0}",box unionType) Impl.checkNonNull "unionType" unionType; let unionType = Impl.getTypeOfReprType (unionType ,bindingFlags) //System.Console.WriteLine("typ3 = {0}",box unionType) Impl.checkUnionType(unionType,bindingFlags); let tag = Impl.getUnionTagReader (unionType,bindingFlags) obj let flds = Impl.getUnionCaseRecordReader (unionType,tag,bindingFlags) obj UnionCaseInfo(unionType,tag), flds static member PreComputeUnionTagReader(unionType: Type,?bindingFlags) : (obj -> int) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "unionType" unionType; let unionType = Impl.getTypeOfReprType (unionType ,bindingFlags) Impl.checkUnionType(unionType,bindingFlags); Impl.getUnionTagReader (unionType ,bindingFlags) static member PreComputeUnionTagMemberInfo(unionType: Type,?bindingFlags) = let bindingFlags = defaultArg bindingFlags BindingFlags.Public Impl.checkNonNull "unionType" unionType; let unionType = Impl.getTypeOfReprType (unionType ,bindingFlags) Impl.checkUnionType(unionType,bindingFlags); Impl.getUnionTagMemberInfo(unionType ,bindingFlags) static member PreComputeUnionReader(unionCase: UnionCaseInfo,?bindingFlags) : (obj -> obj[]) = Impl.checkNonNull "unionCase" unionCase; let bindingFlags = defaultArg bindingFlags BindingFlags.Public let typ = unionCase.DeclaringType Impl.getUnionCaseRecordReader (typ,unionCase.Tag,bindingFlags) static member GetExceptionFields(exn:obj, ?bindingFlags) = Impl.checkNonNull "exn" exn; let bindingFlags = defaultArg bindingFlags BindingFlags.Public let typ = exn.GetType() Impl.checkExnType(typ,bindingFlags); Impl.getRecordReader (typ,bindingFlags) exn fsharp-3.0.34/src/fsharp/FSharp.Core/SR.fs0000775000175000017500000002137112260314606017101 0ustar chrischrisnamespace Microsoft.FSharp.Core module internal SR = let private resources = new System.Resources.ResourceManager("FSCore", System.Reflection.Assembly.GetExecutingAssembly()) let matchCasesIncomplete = "matchCasesIncomplete" let resetNotSupported = "resetNotSupported" let indexOutOfBounds = "indexOutOfBounds" let listsHadDifferentLengths = "listsHadDifferentLengths" let inputListWasEmpty = "inputListWasEmpty" let enumerationNotStarted = "enumerationNotStarted" let setContainsNoElements = "setContainsNoElements" let enumerationAlreadyFinished = "enumerationAlreadyFinished" let findElementNotFound = "findElementNotFound" let findIndexElementNotFound = "findIndexElementNotFound" let pickElementNotFound = "pickElementNotFound" let notEnoughElements = "notEnoughElements" let inputMustBeNonNegative = "inputMustBeNonNegative" let enumerationPastIntMaxValue = "enumerationPastIntMaxValue" let inputSequenceEmpty = "inputSequenceEmpty" let inputSequenceTooLong = "inputSequenceTooLong" let mapCannotBeMutated = "mapCannotBeMutated" let notComparable = "notComparable" let outOfRange = "outOfRange" let arraysHadDifferentLengths = "arraysHadDifferentLengths" let arrayWasEmpty = "arrayWasEmpty" let nonZeroBasedDisallowed = "nonZeroBasedDisallowed" let mismatchIAREnd = "mismatchIAREnd" let mismatchIARCancel = "mismatchIARCancel" let syncContextNull = "syncContextNull" let mailboxScanTimedOut = "mailboxScanTimedOut" let mailboxReceiveTimedOut = "mailboxReceiveTimedOut" let mailboxProcessorAlreadyStarted = "mailboxProcessorAlreadyStarted" let mailboxProcessorPostAndReplyTimedOut = "mailboxProcessorPostAndReplyTimedOut" let mailboxProcessorPostAndAsyncReplyTimedOut = "mailboxProcessorPostAndAsyncReplyTimedOut" let cannotMutate = "cannotMutate" let notAPermutation = "notAPermutation" let failedReadEnoughBytes = "failedReadEnoughBytes" let addressOpNotFirstClass = "addressOpNotFirstClass" let genericCompareFail1 = "genericCompareFail1" let notUsedForHashing = "notUsedForHashing" let badFormatString = "badFormatString" let dyInvDivByIntCoerce = "dyInvDivByIntCoerce" let dyInvOpAddCoerce = "dyInvOpAddCoerce" let dyInvOpAddOverload = "dyInvOpAddOverload" let dyInvOpMultCoerce = "dyInvOpMultCoerce" let dyInvOpMultOverload = "dyInvOpMultOverload" let keyNotFound = "keyNotFound" let stepCannotBeZero = "stepCannotBeZero" let startCannotBeNaN = "startCannotBeNaN" let stepCannotBeNaN = "stepCannotBeNaN" let endCannotBeNaN = "endCannotBeNaN" let checkInit = "checkInit" let checkStaticInit = "checkStaticInit" let noNegateMinValue = "noNegateMinValue" let delegateExpected = "delegateExpected" let invalidTupleTypes = "invalidTupleTypes" let notATupleType = "notATupleType" let notAFunctionType = "notAFunctionType" let tupleIndexOutOfRange = "tupleIndexOutOfRange" let objIsNullAndNoType = "objIsNullAndNoType" let privateUnionType = "privateUnionType" let notAUnionType = "notAUnionType" let privateExceptionType = "privateExceptionType" let notAnExceptionType = "notAnExceptionType" let privateRecordType = "privateRecordType" let notARecordType = "notARecordType" let nullsNotAllowedInArray = "nullsNotAllowedInArray" let objIsNotARecord = "objIsNotARecord" let keyNotFoundAlt = "keyNotFoundAltMessage" let firstClassUsesOfSplice = "firstClassUsesOfSplice" let printfNotAFunType = "printfNotAFunType" let printfMissingFormatSpecifier = "printfMissingFormatSpecifier" let printfHashFormatSpecifierIllegal = "printfHashFormatSpecifierIllegal" let printfPrecisonSpecifierIllegal = "printfPrecisonSpecifierIllegal" let printfWidthSpecifierIllegal = "printfWidthSpecifierIllegal" let printfSpecifierAfterIllegal = "printfSpecifierAfterIllegal" let printfBadFormatSpecifier = "printfBadFormatSpecifier" let printfBadIntegerForDynamicFomatter = "printfBadIntegerForDynamicFomatter" let printfExpectedWidth = "printfExpectedWidth" let printfExpectedPrecision = "printfExpectedPrecision" let printfBadFloatValue = "printfBadFloatValue" let multipleCompilationMappings = "multipleCompilationMappings" let constructorForUnionCaseNotFound = "constructorForUnionCaseNotFound" let moveNextNotCalledOrFinished = "moveNextNotCalledOrFinished" let thisValueCannotBeMutated = "thisValueCannotBeMutated" let optionValueWasNone = "optionValueWasNone" // quotations.fs start with Q let QmissingRecordField = "QmissingRecordField" let QmissingUnionCase = "QmissingUnionCase" let QinvalidCaseIndex = "QinvalidCaseIndex" let QexpectedTwoTypes = "QexpectedTwoTypes" let QexpectedOneType = "QexpectedOneType" let QunrecognizedMethodCall = "QunrecognizedMethodCall" let QunexpectedHole = "QunexpectedHole" let QtmmExpectedFunction = "QtmmExpectedFunction" let QtmmInvalidParam = "QtmmInvalidParam" let QtmmFunctionArgTypeMismatch = "QtmmFunctionArgTypeMismatch" let QtmmVarTypeNotMatchRHS = "QtmmVarTypeNotMatchRHS" let QtmmTuple = "QtmmTuple" let QtmmExprNotMatchTuple = "QtmmExprNotMatchTuple" let QtmmIncorrectArgForRecord = "QtmmIncorrectArgForRecord" let QtmmIncorrectArgForUnion = "QtmmIncorrectArgForUnion" let QtmmExprTypeMismatch = "QtmmExprTypeMismatch" let QtmmTrueAndFalseMustMatch = "QtmmTrueAndFalseMustMatch" let QtmmCondMustBeBool = "QtmmCondMustBeBool" let QtmmInitArray = "QtmmInitArray" let QtmmBadFieldType = "QtmmBadFieldType" let QtmmLowerUpperBoundMustBeInt = "QtmmLowerUpperBoundMustBeInt" let QtmmLoopBodyMustBeLambdaTakingInteger = "QtmmLoopBodyMustBeLambdaTakingInteger" let QtmmGuardMustBeBool = "QtmmGuardMustBeBool" let QtmmBodyMustBeUnit = "QtmmBodyMustBeUnit" let QtmmFunTypeNotMatchDelegate = "QtmmFunTypeNotMatchDelegate" let QtmmRaw = "QtmmRaw" let QtmmExprHasWrongType = "QtmmExprHasWrongType" let QincorrectNumArgs = "QincorrectNumArgs" let QincorrectType = "QincorrectType" let QincorrectInstanceType = "QincorrectInstanceType" let QinvalidFuncType = "QinvalidFuncType" let QtupleLengthsDiffer = "QtupleLengthsDiffer" let QtupleAccessOutOfRange = "QtupleAccessOutOfRange" let QincompatibleRecordLength = "QincompatibleRecordLength" let QunionNeedsDiffNumArgs = "QunionNeedsDiffNumArgs" let QstaticWithReceiverObject = "QstaticWithReceiverObject" let QnonStaticNoReceiverObject = "QnonStaticNoReceiverObject" let QwritingGetOnly = "QwritingGetOnly" let QreadingSetOnly = "QreadingSetOnly" let QparentCannotBeNull = "QparentCannotBeNull" let QfailedToBindProperty = "QfailedToBindProperty" let QfailedToBindField = "QfailedToBindField" let QfailedToBindConstructor = "QfailedToBindConstructor" let QfailedToBindTypeInAssembly = "QfailedToBindTypeInAssembly" let QwrongNumOfTypeArgs = "QwrongNumOfTypeArgs" let QillFormedAppOrLet = "QillFormedAppOrLet" let QcannotTakeAddress = "QcannotTakeAddress" let QcannotBindToMethod = "QcannotBindToMethod" let QcannotBindProperty = "QcannotBindProperty" let QcannotBindFunction = "QcannotBindFunction" let QfailedToBindAssembly = "QfailedToBindAssembly" let QtypeArgumentOutOfRange = "QtypeArgumentOutOfRange" let controlContinuationInvokedMultipleTimes = "controlContinuationInvokedMultipleTimes" let invalidRecordTypeConstructorNotDefined = "invalidRecordTypeConstructorNotDefined" let invalidTupleTypeConstructorNotDefined = "invalidTupleTypeConstructorNotDefined" let thenByError = "thenByError" let failDueToUnsupportedInputTypeInSumByOrAverageBy = "failDueToUnsupportedInputTypeInSumByOrAverageBy" let unsupportedIfThenElse = "unsupportedIfThenElse" let unsupportedQueryConstruct = "unsupportedQueryConstruct" let unsupportedQueryConstructKind = "unsupportedQueryConstructKind" let unsupportedQueryCall = "unsupportedQueryCall" let unsupportedQueryProperty = "unsupportedQueryProperty" let GetString(name:System.String) : System.String = resources.GetString(name, System.Globalization.CultureInfo.CurrentUICulture) let GetString1(name:System.String, arg1:System.String) : System.String = System.String.Format(resources.GetString(name, System.Globalization.CultureInfo.CurrentUICulture), arg1) let GetString2(name:System.String, arg1:System.String, arg2:System.String) : System.String = System.String.Format(resources.GetString(name, System.Globalization.CultureInfo.CurrentUICulture), arg1, arg2) let GetString3(name:System.String, arg1:System.String, arg2:System.String, arg3:System.String) : System.String = System.String.Format(resources.GetString(name, System.Globalization.CultureInfo.CurrentUICulture), arg1, arg2, arg3) fsharp-3.0.34/src/fsharp/FSharp.Core/array2.fs0000775000175000017500000001561612260314606017762 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Microsoft.FSharp.Collections open System.Diagnostics open Microsoft.FSharp.Collections open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Primitives.Basics open Microsoft.FSharp.Core.Operators.Checked [] [] module Array2D = let inline checkNonNull argName arg = match box arg with | null -> nullArg argName | _ -> () // Define the primitive operations. // Note: the "type" syntax is for the type parameter for inline // polymorphic IL. This helps the compiler inline these fragments, // i.e. work out the correspondence between IL and F# type variables. [] let length1 (array: 'T[,]) = (# "ldlen.multi 2 0" array : int #) [] let length2 (array: 'T[,]) = (# "ldlen.multi 2 1" array : int #) [] let base1 (array: 'T[,]) = array.GetLowerBound(0) [] let base2 (array: 'T[,]) = array.GetLowerBound(1) [] let get (array: 'T[,]) (n:int) (m:int) = (# "ldelem.multi 2 !0" type ('T) array n m : 'T #) [] let set (array: 'T[,]) (n:int) (m:int) (x:'T) = (# "stelem.multi 2 !0" type ('T) array n m x #) [] let zeroCreate (n:int) (m:int) = if n < 0 then invalidArg "n" (SR.GetString(SR.inputMustBeNonNegative)) if m < 0 then invalidArg "m" (SR.GetString(SR.inputMustBeNonNegative)) (# "newarr.multi 2 !0" type ('T) n m : 'T[,] #) [] let zeroCreateBased (b1:int) (b2:int) (n1:int) (n2:int) = if (b1 = 0 && b2 = 0) then #if FX_ATLEAST_PORTABLE zeroCreate n1 n2 #else // Note: this overload is available on Compact Framework and Silverlight, but not Portable (System.Array.CreateInstance(typeof<'T>, [|n1;n2|]) :?> 'T[,]) #endif else #if FX_NO_BASED_ARRAYS raise (new System.NotSupportedException(SR.GetString(SR.nonZeroBasedDisallowed))) #else (System.Array.CreateInstance(typeof<'T>, [|n1;n2|],[|b1;b2|]) :?> 'T[,]) #endif [] let createBased b1 b2 n m (x:'T) = let array = (zeroCreateBased b1 b2 n m : 'T[,]) for i = b1 to b1+n - 1 do for j = b2 to b2+m - 1 do array.[i,j] <- x array [] let initBased b1 b2 n m f = let array = (zeroCreateBased b1 b2 n m : 'T[,]) for i = b1 to b1+n - 1 do for j = b2 to b2+m - 1 do array.[i,j] <- f i j array [] let create n m (x:'T) = createBased 0 0 n m x [] let init n m f = initBased 0 0 n m f [] let iter f array = checkNonNull "array" array let count1 = length1 array let count2 = length2 array let b1 = base1 array let b2 = base2 array for i = b1 to b1+count1 - 1 do for j = b2 to b2+count2 - 1 do f array.[i,j] [] let iteri (f : int -> int -> 'T -> unit) (array:'T[,]) = checkNonNull "array" array let count1 = length1 array let count2 = length2 array let b1 = base1 array let b2 = base2 array for i = b1 to b1+count1 - 1 do for j = b2 to b2+count2 - 1 do f i j array.[i,j] [] let map f array = checkNonNull "array" array initBased (base1 array) (base2 array) (length1 array) (length2 array) (fun i j -> f array.[i,j]) [] let mapi f array = checkNonNull "array" array initBased (base1 array) (base2 array) (length1 array) (length2 array) (fun i j -> f i j array.[i,j]) [] let copy array = checkNonNull "array" array initBased (base1 array) (base2 array) (length1 array) (length2 array) (fun i j -> array.[i,j]) [] let rebase array = checkNonNull "array" array let b1 = base1 array let b2 = base2 array init (length1 array) (length2 array) (fun i j -> array.[b1+i,b2+j]) [] let blit (source : 'T[,]) sourceIndex1 sourceIndex2 (target : 'T[,]) targetIndex1 targetIndex2 count1 count2 = checkNonNull "source" source checkNonNull "target" target if sourceIndex1 < source.GetLowerBound(0) then invalidArg "sourceIndex1" (SR.GetString(SR.outOfRange)) if sourceIndex2 < source.GetLowerBound(1) then invalidArg "sourceIndex2" (SR.GetString(SR.outOfRange)) if targetIndex1 < target.GetLowerBound(0) then invalidArg "targetIndex1" (SR.GetString(SR.outOfRange)) if targetIndex2 < target.GetLowerBound(1) then invalidArg "targetIndex2" (SR.GetString(SR.outOfRange)) if sourceIndex1 + count1 > (length1 source) + source.GetLowerBound(0) then invalidArg "count1" (SR.GetString(SR.outOfRange)) if sourceIndex2 + count2 > (length2 source) + source.GetLowerBound(1) then invalidArg "count2" (SR.GetString(SR.outOfRange)) if targetIndex1 + count1 > (length1 target) + target.GetLowerBound(0) then invalidArg "count1" (SR.GetString(SR.outOfRange)) if targetIndex2 + count2 > (length2 target) + target.GetLowerBound(1) then invalidArg "count2" (SR.GetString(SR.outOfRange)) for i = 0 to count1 - 1 do for j = 0 to count2 - 1 do target.[targetIndex1+i,targetIndex2+j] <- source.[sourceIndex1+i,sourceIndex2+j] fsharp-3.0.34/src/fsharp/check.fsi0000775000175000017500000000172112260314606015726 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.PostTypecheckSemanticChecks open Internal.Utilities open Microsoft.FSharp.Compiler val testFlagMemberBody : bool ref val CheckTopImpl : Env.TcGlobals * Import.ImportMap * bool * Infos.InfoReader * Tast.CompilationPath list * Tast.CcuThunk * Tastops.DisplayEnv * Tast.ModuleOrNamespaceExprWithSig * Tast.Attribs * bool -> bool fsharp-3.0.34/src/fsharp/fscmain.fs0000775000175000017500000004373612260314606016134 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.CommandLineMain open System.IO open System.Text open System.Reflection open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Driver open Internal.Utilities open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Build open System.Runtime.CompilerServices type TypeInThisAssembly() = member x.Dummy = 1 /// Collect the output from the stdout and stderr streams, character by character, /// recording the console color used along the way. type OutputCollector() = let output = ResizeArray() let outWriter isOut = { new TextWriter() with member x.Write(c:char) = lock output (fun () -> output.Add (isOut, (try Some System.Console.ForegroundColor with _ -> None) ,c)) member x.Encoding = Encoding.UTF8 } do ignore outWriter do System.Console.SetOut (outWriter true) do System.Console.SetError (outWriter false) member x.GetTextAndClear() = lock output (fun () -> let res = output.ToArray() in output.Clear(); res) /// Implement the optional resident compilation service module FSharpResidentCompiler = open System open System.Diagnostics open System.Runtime.Remoting.Channels open System.Runtime.Remoting open System.Runtime.Remoting.Lifetime /// The compilation server, which runs in the server process. Accessed by clients using .NET remoting. type FSharpCompilationServer() = inherit MarshalByRefObject() static let onWindows = match System.Environment.OSVersion.Platform with | PlatformID.Win32NT | PlatformID.Win32S | PlatformID.Win32Windows | PlatformID.WinCE -> true | _ -> false // The channel/socket name is qualified by the user name (and domain on windows) static let domainName = if onWindows then Environment.GetEnvironmentVariable "USERDOMAIN" else "" static let userName = Environment.GetEnvironmentVariable (if onWindows then "USERNAME" else "USER") // Use different base channel names on mono and CLR as a CLR remoting process can't talk // to a mono server static let baseChannelName = if runningOnMono then "FSCChannelMono" else "FSCChannel" static let channelName = baseChannelName + "_" + domainName + "_" + userName static let serverName = if runningOnMono then "FSCServerMono" else "FSCSever" static let mutable serverExists = true let outputCollector = new OutputCollector() // This background agent ensures all compilation requests sent to the server are serialized let agent = MailboxProcessor<_>.Start(fun inbox -> async { while true do let! (pwd,argv, reply: AsyncReplyChannel<_>) = inbox.Receive() if !progress then printfn "server agent: got compilation request, argv = %A" argv let exitCode = try Environment.CurrentDirectory <- pwd // Install the right exiter so we can catch "StopProcessing" without exiting the server let exiter = { new Exiter with member x.Exit n = raise StopProcessing } let createErrorLogger = (fun tcConfigB -> ErrorLoggerThatQuitsAfterMaxErrors(tcConfigB, exiter)) mainCompile (argv, true, exiter,createErrorLogger); if !progress then printfn "server: finished compilation request, argv = %A" argv 0 with e -> if !progress then printfn "server: finished compilation request with errors, argv = %A, e = %s" argv (e.ToString()) stopProcessingRecovery e range0 1 let output = outputCollector.GetTextAndClear() if !progress then printfn "ouput: %A" output if !progress then printfn "sending reply..." reply.Reply(output, exitCode) if !progress then printfn "collecting..." GC.Collect(3) if !progress then printfn "considering exit..." // Exit the server if there are no outstanding requests and the // current memory usage after collection is over 200MB if inbox.CurrentQueueLength = 0 && GC.GetTotalMemory(true) > 200L * 1024L * 1024L then Environment.Exit 0 }) member x.Run() = while serverExists do if !progress then printfn "server: startup thread sleeping..." System.Threading.Thread.Sleep 1000 abstract Ping : unit -> string abstract Compile : string * string[] -> (bool * System.ConsoleColor option * char) [] * int default x.Ping() = "ping" default x.Compile (pwd,argv) = if !progress then printfn "server: got compilation request, (pwd, argv) = %A" (pwd, argv) let res = agent.PostAndReply(fun reply -> (pwd,argv,reply)) if !progress then printfn "server: got response, response = %A" res res override x.Finalize() = serverExists <- false // This is called on the server object by .NET remoting to initialize the lifetime characteristics // of the server object. override x.InitializeLifetimeService() = let lease = (base.InitializeLifetimeService() :?> ILease) if (lease.CurrentState = LeaseState.Initial) then lease.InitialLeaseTime <- TimeSpan.FromDays(1.0); lease.SponsorshipTimeout <- TimeSpan.FromMinutes(2.0); lease.RenewOnCallTime <- TimeSpan.FromDays(1.0); box lease static member RunServer() = progress := !progress || condition "FSHARP_SERVER_PROGRESS" if !progress then printfn "server: initializing server object" let server = new FSharpCompilationServer() let chan = new Ipc.IpcChannel(channelName) ChannelServices.RegisterChannel(chan,false); RemotingServices.Marshal(server,serverName) |> ignore // On Unix, the file permissions of the implicit socket need to be set correctly to make this // private to the user. if runningOnMono then try let monoPosix = System.Reflection.Assembly.Load("Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756") let monoUnixFileInfo = monoPosix.GetType("Mono.Unix.UnixFileSystemInfo") let socketName = Path.Combine(FileSystem.GetTempPathShim(), channelName) let fileEntry = monoUnixFileInfo.InvokeMember("GetFileSystemEntry", (BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public), null, null, [| box socketName |],System.Globalization.CultureInfo.InvariantCulture) // Add 0x00000180 (UserReadWriteExecute) to the access permissions on Unix monoUnixFileInfo.InvokeMember("set_FileAccessPermissions", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, fileEntry, [| box 0x00000180 |],System.Globalization.CultureInfo.InvariantCulture) |> ignore #if DEBUG if !progress then printfn "server: good, set permissions on socket name '%s'" socketName let fileEntry = monoUnixFileInfo.InvokeMember("GetFileSystemEntry", (BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public), null, null, [| box socketName |],System.Globalization.CultureInfo.InvariantCulture) let currPermissions = monoUnixFileInfo.InvokeMember("get_FileAccessPermissions", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, fileEntry, [| |],System.Globalization.CultureInfo.InvariantCulture) |> unbox if !progress then printfn "server: currPermissions = '%o' (octal)" currPermissions #endif with e -> #if DEBUG printfn "server: failed to set permissions on socket, perhaps on windows? Is is not needed there." #endif () // Fail silently server.Run() static member private ConnectToServer() = Activator.GetObject(typeof,"ipc://" + channelName + "/" + serverName) :?> FSharpCompilationServer static member TryCompileUsingServer(fscServerExe,argv) = // Enable these lines to write a log file, e.g. when running under xbuild //let os = System.IO.File.CreateText "/tmp/fsc-client-log" //let printfn fmt = Printf.kfprintf (fun () -> fprintfn os ""; os.Flush()) os fmt progress := !progress || condition "FSHARP_SERVER_PROGRESS" let pwd = System.Environment.CurrentDirectory let clientOpt = if !progress then printfn "client: creating client" // Detect the absence of the channel via the exception. Probably not the best way. // Different exceptions get thrown here on Mono and Windows. let client = FSharpCompilationServer.ConnectToServer() try if !progress then printfn "client: attempting to connect to existing service (1)" client.Ping() |> ignore if !progress then printfn "client: connected to existing service" Some client with _ -> if !progress then printfn "client: error while creating client, starting client instead" let procInfo = if runningOnMono then let shellName, useShellExecute = match System.Environment.GetEnvironmentVariable("FSC_MONO") with | null -> if onWindows then // e.g. "C:\Program Files\Mono-2.6.1\lib\mono\2.0\mscorlib.dll" --> "C:\Program Files\Mono-2.6.1\bin\mono.exe" Path.Combine(Path.GetDirectoryName (typeof.Assembly.Location), @"..\..\..\bin\mono.exe"), false else "mono-sgen", true | path -> path, true ProcessStartInfo(FileName = shellName, Arguments = fscServerExe + " /server", CreateNoWindow = true, UseShellExecute = useShellExecute) else ProcessStartInfo(FileName=fscServerExe, Arguments = "/server", CreateNoWindow = true, UseShellExecute = false) let cmdProcess = new Process(StartInfo=procInfo) //let exitE = cmdProcess.Exited |> Observable.map (fun x -> x) cmdProcess.Start() |> ignore //exitE.Add(fun _ -> if !progress then eprintfn "client: the server has exited") cmdProcess.EnableRaisingEvents <- true; // Create the client proxy and attempt to connect to the server let rec tryAcccesServer nRemaining = if !progress then printfn "client: trying to access server, nRemaining = '%d'" nRemaining if nRemaining = 0 then // Failed to connect to server, give up None else try if !progress then printfn "client: attempting to connect to existing service (2)" client.Ping() |> ignore if !progress then printfn "client: connected to existing service" Some client // Detect the absence of the channel via the exception. Probably not the best way. // Different exceptions get thrown here on Mono and Windows. with _ (* System.Runtime.Remoting.RemotingException *) -> // Sleep a bit System.Threading.Thread.Sleep 50 tryAcccesServer (nRemaining - 1) tryAcccesServer 20 match clientOpt with | Some client -> if !progress then printfn "client: calling client.Compile(%A)" argv // Install the global error logger and never remove it. This logger does have all command-line flags considered. try let (output, exitCode) = try client.Compile (pwd, argv) with e -> printfn "server error: %s" (e.ToString()) raise (Error (FSComp.SR.fscRemotingError(), rangeStartup)) if !progress then printfn "client: returned from client.Compile(%A), res = %d" argv exitCode use holder = try let originalConsoleColor = Console.ForegroundColor { new System.IDisposable with member x.Dispose() = Console.ForegroundColor <- originalConsoleColor } with _ -> null let mutable prevConsoleColor = try Console.ForegroundColor with _ -> ConsoleColor.Black for (isOut, consoleColorOpt, c:char) in output do try match consoleColorOpt with | Some consoleColor -> if prevConsoleColor <> consoleColor then Console.ForegroundColor <- consoleColor; | None -> () with _ -> () c |> (if isOut then System.Console.Out.Write else System.Console.Error.Write) Some exitCode with err -> let sb = System.Text.StringBuilder() OutputErrorOrWarning (pwd,true,false,ErrorStyle.DefaultErrors,true) sb (PhasedError.Create(err,BuildPhase.Compile)) eprintfn "%s" (sb.ToString()) // We continue on and compile in-process - the server appears to have died half way through. None | None -> None module Driver = let main argv = // Check for --pause as the very first step so that a compiler can be attached here. if argv |> Array.exists (fun x -> x = "/pause" || x = "--pause") then System.Console.WriteLine("Press any key to continue...") System.Console.ReadKey() |> ignore if argv |> Array.exists (fun x -> x = "/resident" || x = "--resident") then let argv = argv |> Array.filter (fun x -> x <> "/resident" && x <> "--resident") if not (argv |> Array.exists (fun x -> x = "/nologo" || x = "--nologo")) then printfn "%s" (FSComp.SR.buildProductName(FSharpEnvironment.DotNetBuildString)) printfn "%s" (FSComp.SR.optsCopyright()) let fscServerExe = typeof.Assembly.Location let exitCodeOpt = FSharpResidentCompiler.FSharpCompilationServer.TryCompileUsingServer(fscServerExe,argv) match exitCodeOpt with | Some exitCode -> exitCode | None -> let exiter = QuitProcessExiter let createErrorLogger = (fun tcConfigB -> ErrorLoggerThatQuitsAfterMaxErrors(tcConfigB, exiter)) mainCompile (argv, true, exiter, createErrorLogger) 0 elif argv |> Array.exists (fun x -> x = "/server" || x = "--server") then FSharpResidentCompiler.FSharpCompilationServer.RunServer() 0 else let exiter = QuitProcessExiter let createErrorLogger = (fun tcConfigB -> ErrorLoggerThatQuitsAfterMaxErrors(tcConfigB, exiter)) mainCompile (argv, false, QuitProcessExiter, createErrorLogger) 0 [] do () [] let main(argv) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) if not runningOnMono then Lib.UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() (* SDL recommendation *) try Driver.main(Array.append [| "fsc.exe" |] argv); with e -> errorRecovery e Microsoft.FSharp.Compiler.Range.range0; 1 fsharp-3.0.34/src/fsharp/FSharp.Build-proto/0000775000175000017500000000000012260314606017524 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Build-proto/Makefile.in0000664000175000017500000000151712260314606021575 0ustar chrischrisNAME=FSharp.Build-proto ASSEMBLY = $(NAME).dll srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make CONFIG=proto FSC=$(bootstrapdir)fsc.exe FLAGS += --target:library DEFINES += \ --define:BUILDING_WITH_LKG REFERENCES += \ -r:$(bootstrapdir)FSharp.Core.dll sources= \ $(tmpdir)FSBuild.fs \ ../../utils/CompilerLocationUtils.fs \ ../FSharp.Build/CreateFSharpManifestResourceName.fsi \ ../FSharp.Build/CreateFSharpManifestResourceName.fs \ ../FSharp.Build/Fsc.fsi \ ../FSharp.Build/Fsc.fs RESOURCES = \ $(tmpdir)FSBuild.resources $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resources: ../FSharp.Build/FSBuild.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSBuild.fs $(tmpdir)FSBuild.resx resgen $(tmpdir)FSBuild.resx $(tmpdir)FSBuild.resources do-proto: do-4-0 clean: clean-4-0 include $(topdir)/src/fsharp/targets.make fsharp-3.0.34/src/fsharp/FSharp.Build-proto/Microsoft.FSharp-proto.targets0000664000175000017500000002744512260314606025423 0ustar chrischris true true $(MSBuildAllProjects);$(MSBuildThisFileFullPath) .fs F# Managed $(Optimize) Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier) RootNamespace false $(Prefer32Bit) <_Temporary Remove="@(_Temporary)" /> <_Temporary Remove="@(_Temporary)" /> <_DebugSymbolsIntermediatePathTemporary Include="$(PdbFile)"/> <_DebugSymbolsIntermediatePath Include="@(_DebugSymbolsIntermediatePathTemporary->'%(RootDir)%(Directory)%(Filename).pdb')"/> <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" /> fsharp-3.0.34/src/fsharp/FSharp.Build-proto/FSharp.Build-proto.fsproj0000775000175000017500000000542612260314606024345 0ustar chrischris $(MSBuildProjectDirectory)\..\.. Proto AnyCPU Library FSharp.Build-proto true BUILDING_WITH_LKG;$(DefineConstants) LKG {D8BC791F-C1A9-49DC-9432-0F3090537555} v4.0 CompilerLocationUtils.fs CreateFSharpManifestResourceName.fsi CreateFSharpManifestResourceName.fs Fsc.fsi Fsc.fs PreserveNewest fsharp-3.0.34/src/fsharp/opt.fs0000775000175000017500000051374512260314606015320 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //------------------------------------------------------------------------- // The F# expression simplifier. The main aim is to inline simple, known functions // and constant values, and to eliminate non-side-affecting bindings that // are never used. //------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Opt open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Pickle open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.PrettyNaming open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Infos open System.Collections.Generic let verboseOptimizationInfo = #if BUILDING_PROTO try not (System.String.IsNullOrEmpty (System.Environment.GetEnvironmentVariable "FSHARP_verboseOptimizationInfo")) with _ -> false #else false #endif let verboseOptimizations = #if BUILDING_PROTO try not (System.String.IsNullOrEmpty (System.Environment.GetEnvironmentVariable "FSHARP_verboseOptimizations")) with _ -> false #else false #endif let i_ldlen = [ I_ldlen; (AI_conv DT_I4) ] let callSize = 1 // size of a function call let forAndWhileLoopSize = 5 // size of a for/while loop let tryCatchSize = 5 // size of a try/catch let tryFinallySize = 5 // size of a try/finally let closureTotalSize = 10 // Total cost of a closure. Each closure adds a class definition let methodDefnTotalSize = 1 // Total cost of a method definition //------------------------------------------------------------------------- // Partial information about an expression. // // We store one of these for each value in the environment, including values // which we know little or nothing about. //------------------------------------------------------------------------- type TypeValueInfo = | UnknownTypeValue type ExprValueInfo = | UnknownValue /// SizeValue(size, value) /// /// Records size info (maxDepth) for an ExprValueInfo | SizeValue of int * ExprValueInfo /// ValValue(vref, value) /// /// Records that a value is equal to another value, along with additional /// information. | ValValue of ValRef * ExprValueInfo | TupleValue of ExprValueInfo array /// RecdValue(tycon, values) /// /// INVARIANT: values are in field definition order . | RecdValue of TyconRef * ExprValueInfo array | UnionCaseValue of UnionCaseRef * ExprValueInfo array | ConstValue of Const * TType /// CurriedLambdaValue(id,arity,sz,expr,typ) /// /// arities: The number of bunches of untupled args and type args, and /// the number of args in each bunch. NOTE: This include type arguments. /// expr: The value, a lambda term. /// typ: The type of lamba term | CurriedLambdaValue of Unique * int * int * Expr * TType /// ConstExprValue(size, value) | ConstExprValue of int * Expr type ValInfo = { ValMakesNoCriticalTailcalls: bool; ValExprInfo: ExprValueInfo } //------------------------------------------------------------------------- // Partial information about entire namespace fragments or modules // // This is a somewhat nasty data structure since // (a) we need the lookups to be very efficient // (b) we need to be able to merge these efficiently while building up the overall data for a module // (c) we pickle these to the binary optimization data format // (d) we don't want the process of unpickling the data structure to // dereference/resolve all the ValRef's in the data structure, since // this would be slow on startup and a potential failure point should // any of the destination values not dereference correctly. // // It doesn't yet feel like we've got this data structure as good as it could be //------------------------------------------------------------------------- /// Table of the values contained in one module type ValInfos(entries) = let valInfoTable = lazy (let t = ValHash.Create () for (vref:ValRef,x) in entries do t.Add (vref.Deref,(vref,x)) t) // The compiler ValRef's into fslib stored in env.fs break certain invariants that hold elsewhere, // because they dereference to point to Val's from signatures rather than Val's from implementations. // Thus a backup alternative resolution technique is needed for these. let valInfosForFslib = lazy (Map.ofList [ for (vref,_x) as p in entries do yield (vref.Deref.LinkagePartialKey,p) ]) member x.Entries = valInfoTable.Force().Values member x.Map f = new ValInfos(Seq.map f x.Entries) member x.Filter f = new ValInfos(Seq.filter f x.Entries) member x.TryFind (v:ValRef) = valInfoTable.Force().TryFind v.Deref member x.TryFindForFslib (v:ValRef) = valInfosForFslib.Force().TryFind(v.Deref.LinkagePartialKey) type ModuleInfo = { ValInfos: ValInfos; ModuleOrNamespaceInfos: NameMap } and LazyModuleInfo = Lazy let braceL x = leftL "{" ^^ x ^^ rightL "}" let seqL xL xs = Seq.fold (fun z x -> z @@ xL x) emptyL xs let namemapL xL xmap = NameMap.foldBack (fun nm x z -> xL nm x @@ z) xmap emptyL let rec exprValueInfoL g = function | ConstValue (x,ty) -> NicePrint.layoutConst g ty x | UnknownValue -> wordL "?" | SizeValue (_,vinfo) -> exprValueInfoL g vinfo | ValValue (vr,vinfo) -> bracketL ((valRefL vr ^^ wordL "alias") --- exprValueInfoL g vinfo) | TupleValue vinfos -> bracketL (exprValueInfosL g vinfos) | RecdValue (_,vinfos) -> braceL (exprValueInfosL g vinfos) | UnionCaseValue (ucr,vinfos) -> unionCaseRefL ucr ^^ bracketL (exprValueInfosL g vinfos) | CurriedLambdaValue(_lambdaId,_arities,_bsize,expr',_ety) -> wordL "lam" ++ exprL expr' (* (sprintf "lam(size=%d)" bsize) *) | ConstExprValue (_size,x) -> exprL x and exprValueInfosL g vinfos = commaListL (List.map (exprValueInfoL g) (Array.toList vinfos)) and moduleInfoL g (x:LazyModuleInfo) = let x = x.Force() braceL ((wordL "Modules: " @@ (x.ModuleOrNamespaceInfos |> namemapL (fun nm x -> wordL nm ^^ moduleInfoL g x) ) ) @@ (wordL "Values:" @@ (x.ValInfos.Entries |> seqL (fun (vref,x) -> valRefL vref ^^ valInfoL g x) ))) and valInfoL g (x:ValInfo) = braceL ((wordL "ValExprInfo: " @@ exprValueInfoL g x.ValExprInfo) @@ (wordL "ValMakesNoCriticalTailcalls:" @@ wordL (if x.ValMakesNoCriticalTailcalls then "true" else "false"))) type Summary<'Info> = { Info: 'Info; /// What's the contribution to the size of this function? FunctionSize: int; /// What's the total contribution to the size of the assembly, including closure classes etc.? TotalSize: int; /// Meaning: could mutate, could non-terminate, could raise exception /// One use: an effect expr can not be eliminated as dead code (e.g. sequencing) /// One use: an effect=false expr can not throw an exception? so try-catch is removed. HasEffect: bool /// Indicates that a function may make a useful tailcall, hence when called should itself be tailcalled MightMakeCriticalTailcall: bool } //------------------------------------------------------------------------- // BoundValueInfoBySize // Note, this is a different notion of "size" to the one used for inlining heuristics //------------------------------------------------------------------------- let rec SizeOfValueInfos (arr:_[]) = let n = arr.Length let rec go i acc = if i >= n then acc else max acc (SizeOfValueInfo arr.[i]) go 0 0 and SizeOfValueInfo x = match x with | SizeValue (vdepth,_v) -> vdepth (* terminate recursion at CACHED size nodes *) | ConstValue (_x,_) -> 1 | UnknownValue -> 1 | ValValue (_vr,vinfo) -> SizeOfValueInfo vinfo + 1 | TupleValue vinfos | RecdValue (_,vinfos) | UnionCaseValue (_,vinfos)-> 1 + SizeOfValueInfos vinfos | CurriedLambdaValue(_lambdaId,_arities,_bsize,_expr',_ety) -> 1 | ConstExprValue (_size,_) -> 1 let rec MakeValueInfoWithCachedSize vdepth v = match v with | SizeValue(_,v) -> MakeValueInfoWithCachedSize vdepth v | _ -> let minDepthForASizeNode = 5 in (* for small vinfos do not record size info, save space *) if vdepth > minDepthForASizeNode then SizeValue(vdepth,v) else v (* add nodes to stop recursion *) let MakeSizedValueInfo v = let vdepth = SizeOfValueInfo v MakeValueInfoWithCachedSize vdepth v let BoundValueInfoBySize vinfo = let rec bound depth x = if depth<0 then UnknownValue else match x with | SizeValue (vdepth,vinfo) -> if vdepth < depth then x else MakeSizedValueInfo (bound depth vinfo) | ValValue (vr,vinfo) -> ValValue (vr,bound (depth-1) vinfo) | TupleValue vinfos -> TupleValue (Array.map (bound (depth-1)) vinfos) | RecdValue (tcref,vinfos) -> RecdValue (tcref,Array.map (bound (depth-1)) vinfos) | UnionCaseValue (ucr,vinfos) -> UnionCaseValue (ucr,Array.map (bound (depth-1)) vinfos) | ConstValue _ -> x | UnknownValue -> x | CurriedLambdaValue(_lambdaId,_arities,_bsize,_expr',_ety) -> x | ConstExprValue (_size,_) -> x let maxDepth = 6 (* beware huge constants! *) let trimDepth = 3 let vdepth = SizeOfValueInfo vinfo if vdepth > maxDepth then MakeSizedValueInfo (bound trimDepth vinfo) else MakeValueInfoWithCachedSize vdepth vinfo //------------------------------------------------------------------------- // What we know about the world //------------------------------------------------------------------------- let jitOptDefault = true let localOptDefault = true let crossModuleOptDefault = true type OptimizationSettings = { abstractBigTargets : bool; jitOptUser : bool option; localOptUser : bool option; crossModuleOptUser : bool option; /// size after which we start chopping methods in two, though only at match targets bigTargetSize : int /// size after which we start enforcing splitting sub-expressions to new methods, to avoid hitting .NET IL limitations veryBigExprSize : int /// The size after which we don't inline lambdaInlineThreshold : int; /// For unit testing reportingPhase : bool reportNoNeedToTailcall: bool; reportFunctionSizes : bool reportHasEffect : bool reportTotalSizes : bool } static member Defaults = { abstractBigTargets = false; jitOptUser = None; localOptUser = None /// size after which we start chopping methods in two, though only at match targets bigTargetSize = 100 /// size after which we start enforcing splitting sub-expressions to new methods, to avoid hitting .NET IL limitations veryBigExprSize = 3000 crossModuleOptUser = None; /// The size after which we don't inline lambdaInlineThreshold = 6; reportingPhase = false; reportNoNeedToTailcall = false; reportFunctionSizes = false reportHasEffect = false reportTotalSizes = false } member x.jitOpt() = (match x.jitOptUser with Some f -> f | None -> jitOptDefault) member x.localOpt () = (match x.localOptUser with Some f -> f | None -> localOptDefault) member x.crossModuleOpt () = x.localOpt () && (match x.crossModuleOptUser with Some f -> f | None -> crossModuleOptDefault) member x.KeepOptimizationValues() = x.crossModuleOpt () /// inline calls * member x.InlineLambdas () = x.localOpt () /// eliminate unused bindings with no effect member x.EliminateUnusedBindings () = x.localOpt () /// eliminate try around expr with no effect member x.EliminateTryCatchAndTryFinally () = x.localOpt () /// eliminate first part of seq if no effect member x.EliminateSequential () = x.localOpt () /// determine branches in pattern matching member x.EliminateSwitch () = x.localOpt () member x.EliminateRecdFieldGet () = x.localOpt () member x.EliminateTupleFieldGet () = x.localOpt () member x.EliminatUnionCaseFieldGet () = x.localOpt () /// eliminate non-copiler generated immediate bindings member x.EliminateImmediatelyConsumedLocals() = x.localOpt () /// expand "let x = (exp1,exp2,...)" bind fields as prior tmps member x.ExpandStructrualValues() = x.localOpt () #if NO_COMPILER_BACKEND #else type cenv = { g: Env.TcGlobals; TcVal : ConstraintSolver.TcValF amap: Import.ImportMap; optimizing: bool; scope: CcuThunk; localInternalVals: System.Collections.Generic.Dictionary settings: OptimizationSettings; emitTailcalls: bool; // cache methods with SecurityAttribute applied to them, to prevent unnecessary calls to ExistsInEntireHierarchyOfType casApplied : Dictionary;} type IncrementalOptimizationEnv = { // An identifier to help with name generation latestBoundId: Ident option; // The set of lambda IDs we've inlined to reach this point. Helps to prevent recursive inlining dontInline: Zset; // Recursively bound vars. If an sub-expression that is a candidate for method splitting // contains any of these variables then don't split it, for fear of mucking up tailcalls. // See FSharp 1.0 bug 2892 dontSplitVars: ValMap; /// The Val for the function binding being generated, if any. functionVal: (Val * Tast.ValReprInfo) option; typarInfos: (Typar * TypeValueInfo) list; localExternalVals: LayeredMap; globalModuleInfos: LayeredMap; } static member Empty = { latestBoundId = None; dontInline = Zset.empty Int64.order; typarInfos = []; functionVal = None; dontSplitVars = ValMap.Empty; localExternalVals = LayeredMap.Empty; globalModuleInfos = LayeredMap.Empty } //------------------------------------------------------------------------- // IsPartialExprVal - is the expr fully known? //------------------------------------------------------------------------- let rec IsPartialExprVal x = (* IsPartialExprVal can not rebuild to an expr *) match x with | UnknownValue -> true | TupleValue args | RecdValue (_,args) | UnionCaseValue (_,args) -> Array.exists IsPartialExprVal args | ConstValue _ | CurriedLambdaValue _ | ConstExprValue _ -> false | ValValue (_,a) | SizeValue(_,a) -> IsPartialExprVal a let rec IsPartialModuleOrNamespaceVal (ss:ModuleInfo) = (ss.ModuleOrNamespaceInfos |> Map.exists (fun _ x -> IsPartialModuleOrNamespaceVal (x.Force()))) || (ss.ValInfos.Entries |> Seq.exists (fun (_,x) -> IsPartialExprVal x.ValExprInfo)) let CheckInlineValueIsComplete (v:Val) res = if v.MustInline && IsPartialExprVal res then errorR(Error(FSComp.SR.optValueMarkedInlineButIncomplete(v.DisplayName), v.Range)) //System.Diagnostics.Debug.Assert(false,sprintf "Break for incomplete inline value %s" v.DisplayName) let check (vref: ValRef) (res:ValInfo) = CheckInlineValueIsComplete vref.Deref res.ValExprInfo; (vref,res) //------------------------------------------------------------------------- // Bind information about values //------------------------------------------------------------------------- let EmptyModuleInfo = notlazy { ValInfos = ValInfos([]); ModuleOrNamespaceInfos = Map.empty } let rec UnionModuleInfos (minfos : seq) = notlazy { ValInfos = ValInfos(seq { for minfo in minfos do yield! minfo.Force().ValInfos.Entries }) ModuleOrNamespaceInfos = minfos |> Seq.map (fun m -> m.Force().ModuleOrNamespaceInfos) |> NameMap.union UnionModuleInfos } let FindOrCreateModuleInfo n (ss: Map<_,_>) = match ss.TryFind n with | Some res -> res | None -> EmptyModuleInfo let FindOrCreateGlobalModuleInfo n (ss: LayeredMap<_,_>) = match ss.TryFind n with | Some res -> res | None -> EmptyModuleInfo let rec BindValueInSubModuleFSharpCore (mp:string[]) i (v:Val) vval ss = if i < mp.Length then {ss with ModuleOrNamespaceInfos = BindValueInModuleForFslib mp.[i] mp (i+1) v vval ss.ModuleOrNamespaceInfos } else // REVIEW: this line looks quadratic for performance when compiling FSharp.Core {ss with ValInfos = ValInfos(Seq.append ss.ValInfos.Entries (Seq.singleton (mkLocalValRef v,vval))) } and BindValueInModuleForFslib n mp i v vval (ss: NameMap<_>) = let old = FindOrCreateModuleInfo n ss Map.add n (notlazy (BindValueInSubModuleFSharpCore mp i v vval (old.Force()))) ss and BindValueInGlobalModuleForFslib n mp i v vval (ss: LayeredMap<_,_>) = let old = FindOrCreateGlobalModuleInfo n ss ss.Add(n, notlazy (BindValueInSubModuleFSharpCore mp i v vval (old.Force()))) let BindValueForFslib (nlvref : NonLocalValOrMemberRef) v vval env = {env with globalModuleInfos = BindValueInGlobalModuleForFslib nlvref.AssemblyName nlvref.EnclosingEntity.nlr.Path 0 v vval env.globalModuleInfos } let UnknownValInfo = { ValExprInfo=UnknownValue; ValMakesNoCriticalTailcalls=false } let mkValInfo info (v:Val) = { ValExprInfo=info.Info; ValMakesNoCriticalTailcalls= v.MakesNoCriticalTailcalls } (* Bind a value *) let BindInternalLocalVal cenv (v:Val) vval env = let vval = if v.IsMutable then UnknownValInfo else vval #if CHECKED #else match vval.ValExprInfo with | UnknownValue -> env | _ -> #endif cenv.localInternalVals.[v.Stamp] <- vval; env let BindExternalLocalVal cenv (v:Val) vval env = #if CHECKED CheckInlineValueIsComplete v vval; #endif if verboseOptimizationInfo then dprintn ("*** Binding "^v.LogicalName); let vval = if v.IsMutable then {vval with ValExprInfo=UnknownValue } else vval let env = #if CHECKED #else match vval.ValExprInfo with | UnknownValue -> env | _ -> #endif { env with localExternalVals=env.localExternalVals.Add (v.Stamp, vval) } // If we're compiling fslib then also bind the value as a non-local path to // allow us to resolve the compiler-non-local-references that arise from env.fs // // Do this by generating a fake "looking from the outside in" non-local value reference for // v, dereferencing it to find the corresponding signature Val, and adding an entry for the signature val. // // A similar code path exists in ilxgen.fs for the tables of "representations" for values let env = if cenv.g.compilingFslib then // Passing an empty remap is sufficient for FSharp.Core.dll because it turns out the remapped type signature can // still be resolved. match tryRescopeVal cenv.g.fslibCcu Remap.Empty v with | Some vref -> BindValueForFslib vref.nlr v vval env | None -> env else env env let rec BindValsInModuleOrNamespace cenv (mval:LazyModuleInfo) env = let mval = mval.Force() // do all the sub modules let env = (mval.ModuleOrNamespaceInfos,env) ||> NameMap.foldBackRange (BindValsInModuleOrNamespace cenv) let env = (env, mval.ValInfos.Entries) ||> Seq.fold (fun env (v:ValRef, vval) -> BindExternalLocalVal cenv v.Deref vval env) env let BindInternalValToUnknown cenv v env = #if CHECKED BindInternalLocalVal cenv v UnknownValue env #else ignore (cenv,v) env #endif let BindInternalValsToUnknown cenv vs env = #if CHECKED List.foldBack (BindInternalValToUnknown cenv) vs env #else ignore (cenv,vs) env #endif let BindTypeVar tyv typeinfo env = { env with typarInfos= (tyv,typeinfo)::env.typarInfos } let BindTypeVarsToUnknown (tps:Typar list) env = if isNil tps then env else // The optimizer doesn't use the type values it could track. // However here we mutate to provide better names for generalized type parameters // The names chosen are 'a', 'b' etc. These are also the compiled names in the IL code let nms = PrettyTypes.PrettyTyparNames (fun _ -> true) (env.typarInfos |> List.map (fun (tp,_) -> tp.Name) ) tps (tps,nms) ||> List.iter2 (fun tp nm -> if PrettyTypes.NeedsPrettyTyparName tp then tp.Data.typar_id <- ident (nm,tp.Range)); List.fold (fun sofar arg -> BindTypeVar arg UnknownTypeValue sofar) env tps let BindCcu (ccu:Tast.CcuThunk) mval env cenv = if verboseOptimizationInfo then dprintf "*** Reloading optimization data for assembly %s, info = \n%s\n" ccu.AssemblyName (showL (Layout.squashTo 192 (moduleInfoL cenv mval))); { env with globalModuleInfos=env.globalModuleInfos.Add(ccu.AssemblyName,mval) } //------------------------------------------------------------------------- // Lookup information about values //------------------------------------------------------------------------- let GetInfoForLocalValue cenv env (v:Val) m = (* Abstract slots do not have values *) if v.IsDispatchSlot then UnknownValInfo else let mutable res = Unchecked.defaultof<_> let ok = cenv.localInternalVals.TryGetValue(v.Stamp, &res) if ok then res else match env.localExternalVals.TryFind v.Stamp with | Some vval -> vval | None -> if v.MustInline then errorR(Error(FSComp.SR.optValueMarkedInlineButWasNotBoundInTheOptEnv(fullDisplayTextOfValRef (mkLocalValRef v)), m)); #if CHECKED warning(Error(FSComp.SR.optLocalValueNotFoundDuringOptimization(v.DisplayName),m)); #endif UnknownValInfo let TryGetInfoForCcu env (ccu:CcuThunk) = env.globalModuleInfos.TryFind(ccu.AssemblyName) let TryGetInfoForEntity sv n = match sv.ModuleOrNamespaceInfos.TryFind n with | Some info -> Some (info.Force()) | None -> if verboseOptimizationInfo then dprintn ("\n\n*** Optimization info for submodule "^n^" not found in parent module which contains submodules: "^String.concat "," (NameMap.domainL sv.ModuleOrNamespaceInfos)); None let rec TryGetInfoForPath sv (p:_[]) i = if i >= p.Length then Some sv else match TryGetInfoForEntity sv p.[i] with | Some info -> TryGetInfoForPath info p (i+1) | None -> None let TryGetInfoForNonLocalEntityRef env (nleref: NonLocalEntityRef) = match TryGetInfoForCcu env nleref.Ccu with | Some ccuinfo -> TryGetInfoForPath (ccuinfo.Force()) nleref.Path 0 | None -> None let GetInfoForNonLocalVal cenv env (vref:ValRef) = if vref.IsDispatchSlot then UnknownValInfo // REVIEW: optionally turn x-module on/off on per-module basis or elif cenv.settings.crossModuleOpt () || vref.MustInline then match TryGetInfoForNonLocalEntityRef env vref.nlr.EnclosingEntity.nlr with | Some(structInfo) -> match structInfo.ValInfos.TryFind(vref) with | Some ninfo -> snd ninfo | None -> //dprintn ("\n\n*** Optimization info for value "^n^" from module "^(full_name_of_nlpath smv)^" not found, module contains values: "^String.concat "," (NameMap.domainL structInfo.ValInfos)); //System.Diagnostics.Debug.Assert(false,sprintf "Break for module %s, value %s" (full_name_of_nlpath smv) n) if cenv.g.compilingFslib then match structInfo.ValInfos.TryFindForFslib(vref) with | Some ninfo -> snd ninfo | None -> UnknownValInfo else UnknownValInfo | None -> //dprintf "\n\n*** Optimization info for module %s from ccu %s not found." (full_name_of_nlpath smv) (ccu_of_nlpath smv).AssemblyName; //System.Diagnostics.Debug.Assert(false,sprintf "Break for module %s, ccu %s" (full_name_of_nlpath smv) (ccu_of_nlpath smv).AssemblyName) UnknownValInfo else UnknownValInfo let GetInfoForVal cenv env m (vref:ValRef) = let res = match vref.IsLocalRef with | true -> GetInfoForLocalValue cenv env vref.binding m | false -> GetInfoForNonLocalVal cenv env vref check (* "its stored value was incomplete" m *) vref res |> ignore; res //------------------------------------------------------------------------- // Try to get information about values of particular types //------------------------------------------------------------------------- let rec stripValue = function | ValValue(_,details) -> stripValue details (* step through ValValue "aliases" *) | SizeValue(_,details) -> stripValue details (* step through SizeValue "aliases" *) | vinfo -> vinfo let (|StripConstValue|_|) ev = match stripValue ev with | ConstValue(c,_) -> Some c | _ -> None let (|StripLambdaValue|_|) ev = match stripValue ev with | CurriedLambdaValue (id,arity,sz,expr,typ) -> Some (id,arity,sz,expr,typ) | _ -> None let destTupleValue ev = match stripValue ev with | TupleValue info -> Some info | _ -> None let destRecdValue ev = match stripValue ev with | RecdValue (_tcref,info) -> Some info | _ -> None let (|StripUnionCaseValue|_|) ev = match stripValue ev with | UnionCaseValue (c,info) -> Some (c,info) | _ -> None let mkBoolVal g n = ConstValue(Const.Bool n, g.bool_ty) let mkInt8Val g n = ConstValue(Const.SByte n, g.sbyte_ty) let mkInt16Val g n = ConstValue(Const.Int16 n, g.int16_ty) let mkInt32Val g n = ConstValue(Const.Int32 n, g.int32_ty) let mkInt64Val g n = ConstValue(Const.Int64 n, g.int64_ty) let mkUInt8Val g n = ConstValue(Const.Byte n, g.byte_ty) let mkUInt16Val g n = ConstValue(Const.UInt16 n, g.uint16_ty) let mkUInt32Val g n = ConstValue(Const.UInt32 n, g.uint32_ty) let mkUInt64Val g n = ConstValue(Const.UInt64 n, g.uint64_ty) let (|StripInt32Value|_|) = function StripConstValue(Const.Int32 n) -> Some n | _ -> None //------------------------------------------------------------------------- // mk value_infos //------------------------------------------------------------------------- let MakeValueInfoForValue g m vref vinfo = let rec check x = match x with | ValValue (vref2,detail) -> if valRefEq g vref vref2 then error(Error(FSComp.SR.optRecursiveValValue(showL(exprValueInfoL g vinfo)),m)) else check detail | SizeValue (_n,detail) -> check detail | _ -> () check vinfo; ValValue (vref,vinfo) |> BoundValueInfoBySize let MakeValueInfoForRecord tcref argvals = RecdValue (tcref,argvals) |> BoundValueInfoBySize let MakeValueInfoForTuple argvals = TupleValue argvals |> BoundValueInfoBySize let MakeValueInfoForUnionCase cspec argvals = UnionCaseValue (cspec,argvals) |> BoundValueInfoBySize let MakeValueInfoForConst c ty = ConstValue(c,ty) // Helper to evaluate a unary integer operation over known values let inline IntegerUnaryOp g f8 f16 f32 f64 fu8 fu16 fu32 fu64 a = match a with | StripConstValue(c) -> match c with | Const.Bool a -> Some(mkBoolVal g (f32 (if a then 1 else 0) <> 0)) | Const.Int32 a -> Some(mkInt32Val g (f32 a)) | Const.Int64 a -> Some(mkInt64Val g (f64 a)) | Const.Int16 a -> Some(mkInt16Val g (f16 a)) | Const.SByte a -> Some(mkInt8Val g (f8 a)) | Const.Byte a -> Some(mkUInt8Val g (fu8 a)) | Const.UInt32 a -> Some(mkUInt32Val g (fu32 a)) | Const.UInt64 a -> Some(mkUInt64Val g (fu64 a)) | Const.UInt16 a -> Some(mkUInt16Val g (fu16 a)) | _ -> None | _ -> None // Helper to evaluate a unary signed integer operation over known values let inline SignedIntegerUnaryOp g f8 f16 f32 f64 a = match a with | StripConstValue(c) -> match c with | Const.Int32 a -> Some(mkInt32Val g (f32 a)) | Const.Int64 a -> Some(mkInt64Val g (f64 a)) | Const.Int16 a -> Some(mkInt16Val g (f16 a)) | Const.SByte a -> Some(mkInt8Val g (f8 a)) | _ -> None | _ -> None // Helper to evaluate a binary integer operation over known values let inline IntegerBinaryOp g f8 f16 f32 f64 fu8 fu16 fu32 fu64 a b = match a,b with | StripConstValue(c1),StripConstValue(c2) -> match c1,c2 with | (Const.Bool a),(Const.Bool b) -> Some(mkBoolVal g (f32 (if a then 1 else 0) (if b then 1 else 0) <> 0)) | (Const.Int32 a),(Const.Int32 b) -> Some(mkInt32Val g (f32 a b)) | (Const.Int64 a),(Const.Int64 b) -> Some(mkInt64Val g (f64 a b)) | (Const.Int16 a),(Const.Int16 b) -> Some(mkInt16Val g (f16 a b)) | (Const.SByte a),(Const.SByte b) -> Some(mkInt8Val g (f8 a b)) | (Const.Byte a),(Const.Byte b) -> Some(mkUInt8Val g (fu8 a b)) | (Const.UInt16 a),(Const.UInt16 b) -> Some(mkUInt16Val g (fu16 a b)) | (Const.UInt32 a),(Const.UInt32 b) -> Some(mkUInt32Val g (fu32 a b)) | (Const.UInt64 a),(Const.UInt64 b) -> Some(mkUInt64Val g (fu64 a b)) | _ -> None | _ -> None module Unchecked = Microsoft.FSharp.Core.Operators /// Evaluate primitives based on interpretation of IL instructions. // // The implementation // utilizes F# arithmetic extensively, so a mistake in the implementation of F# arithmetic // in the core library used by the F# compiler will propagate to be a mistake in optimization. // The IL instructions appear in the tree through inlining. let mkAssemblyCodeValueInfo g instrs argvals tys = match instrs,argvals,tys with | [ AI_add ],[t1;t2],_ -> // Note: each use of Unchecked.(+) gets instantiated at a different type and inlined match IntegerBinaryOp g Unchecked.(+) Unchecked.(+) Unchecked.(+) Unchecked.(+) Unchecked.(+) Unchecked.(+) Unchecked.(+) Unchecked.(+) t1 t2 with | Some res -> res | _ -> UnknownValue | [ AI_sub ],[t1;t2],_ -> // Note: each use of Unchecked.(+) gets instantiated at a different type and inlined match IntegerBinaryOp g Unchecked.(-) Unchecked.(-) Unchecked.(-) Unchecked.(-) Unchecked.(-) Unchecked.(-) Unchecked.(-) Unchecked.(-) t1 t2 with | Some res -> res | _ -> UnknownValue | [ AI_mul ],[a;b],_ -> (match IntegerBinaryOp g Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) Unchecked.( * ) a b with Some res -> res | None -> UnknownValue) | [ AI_and ],[a;b],_ -> (match IntegerBinaryOp g (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) (&&&) a b with Some res -> res | None -> UnknownValue) | [ AI_or ],[a;b],_ -> (match IntegerBinaryOp g (|||) (|||) (|||) (|||) (|||) (|||) (|||) (|||) a b with Some res -> res | None -> UnknownValue) | [ AI_xor ],[a;b],_ -> (match IntegerBinaryOp g (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) (^^^) a b with Some res -> res | None -> UnknownValue) | [ AI_not ],[a],_ -> (match IntegerUnaryOp g (~~~) (~~~) (~~~) (~~~) (~~~) (~~~) (~~~) (~~~) a with Some res -> res | None -> UnknownValue) | [ AI_neg ],[a],_ -> (match SignedIntegerUnaryOp g (~-) (~-) (~-) (~-) a with Some res -> res | None -> UnknownValue) | [ AI_ceq ],[a;b],_ -> match stripValue a, stripValue b with | ConstValue(Const.Bool a1,_),ConstValue(Const.Bool a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.SByte a1,_),ConstValue(Const.SByte a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.Int16 a1,_),ConstValue(Const.Int16 a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.Int32 a1,_),ConstValue(Const.Int32 a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.Int64 a1,_),ConstValue(Const.Int64 a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.Char a1,_),ConstValue(Const.Char a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.Byte a1,_),ConstValue(Const.Byte a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.UInt16 a1,_),ConstValue(Const.UInt16 a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.UInt32 a1,_),ConstValue(Const.UInt32 a2,_) -> mkBoolVal g (a1 = a2) | ConstValue(Const.UInt64 a1,_),ConstValue(Const.UInt64 a2,_) -> mkBoolVal g (a1 = a2) | _ -> UnknownValue | [ AI_clt ],[a;b],_ -> match stripValue a,stripValue b with | ConstValue(Const.Bool a1,_),ConstValue(Const.Bool a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.Int32 a1,_),ConstValue(Const.Int32 a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.Int64 a1,_),ConstValue(Const.Int64 a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.SByte a1,_),ConstValue(Const.SByte a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.Int16 a1,_),ConstValue(Const.Int16 a2,_) -> mkBoolVal g (a1 < a2) | _ -> UnknownValue | [ (AI_conv(DT_U1))],[a],[ty] when typeEquiv g ty g.byte_ty -> match stripValue a with | ConstValue(Const.SByte a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.Int16 a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.Int32 a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.Int64 a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.Byte a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.UInt16 a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.UInt32 a,_) -> mkUInt8Val g (Unchecked.byte a) | ConstValue(Const.UInt64 a,_) -> mkUInt8Val g (Unchecked.byte a) | _ -> UnknownValue | [ (AI_conv(DT_U2))],[a],[ty] when typeEquiv g ty g.uint16_ty -> match stripValue a with | ConstValue(Const.SByte a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.Int16 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.Int32 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.Int64 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.Byte a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.UInt16 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.UInt32 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | ConstValue(Const.UInt64 a,_) -> mkUInt16Val g (Unchecked.uint16 a) | _ -> UnknownValue | [ (AI_conv(DT_U4))],[a],[ty] when typeEquiv g ty g.uint32_ty -> match stripValue a with | ConstValue(Const.SByte a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.Int16 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.Int32 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.Int64 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.Byte a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.UInt16 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.UInt32 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | ConstValue(Const.UInt64 a,_) -> mkUInt32Val g (Unchecked.uint32 a) | _ -> UnknownValue | [ (AI_conv(DT_U8))],[a],[ty] when typeEquiv g ty g.uint64_ty -> match stripValue a with | ConstValue(Const.SByte a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.Int16 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.Int32 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.Int64 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.Byte a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.UInt16 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.UInt32 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | ConstValue(Const.UInt64 a,_) -> mkUInt64Val g (Unchecked.uint64 a) | _ -> UnknownValue | [ (AI_conv(DT_I1))],[a],[ty] when typeEquiv g ty g.sbyte_ty -> match stripValue a with | ConstValue(Const.SByte a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.Int16 a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.Int32 a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.Int64 a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.Byte a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.UInt16 a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.UInt32 a,_) -> mkInt8Val g (Unchecked.sbyte a) | ConstValue(Const.UInt64 a,_) -> mkInt8Val g (Unchecked.sbyte a) | _ -> UnknownValue | [ (AI_conv(DT_I2))],[a],[ty] when typeEquiv g ty g.int16_ty -> match stripValue a with | ConstValue(Const.Int32 a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.Int16 a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.SByte a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.Int64 a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.UInt32 a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.UInt16 a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.Byte a,_) -> mkInt16Val g (Unchecked.int16 a) | ConstValue(Const.UInt64 a,_) -> mkInt16Val g (Unchecked.int16 a) | _ -> UnknownValue | [ (AI_conv(DT_I4))],[a],[ty] when typeEquiv g ty g.int32_ty -> match stripValue a with | ConstValue(Const.Int32 a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.Int16 a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.SByte a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.Int64 a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.UInt32 a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.UInt16 a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.Byte a,_) -> mkInt32Val g (Unchecked.int32 a) | ConstValue(Const.UInt64 a,_) -> mkInt32Val g (Unchecked.int32 a) | _ -> UnknownValue | [ (AI_conv(DT_I8))],[a],[ty] when typeEquiv g ty g.int64_ty -> match stripValue a with | ConstValue(Const.Int32 a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.Int16 a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.SByte a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.Int64 a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.UInt32 a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.UInt16 a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.Byte a,_) -> mkInt64Val g (Unchecked.int64 a) | ConstValue(Const.UInt64 a,_) -> mkInt64Val g (Unchecked.int64 a) | _ -> UnknownValue | [ AI_clt_un ],[a;b],[ty] when typeEquiv g ty g.bool_ty -> match stripValue a,stripValue b with | ConstValue(Const.Char a1,_),ConstValue(Const.Char a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.Byte a1,_),ConstValue(Const.Byte a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.UInt16 a1,_),ConstValue(Const.UInt16 a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.UInt32 a1,_),ConstValue(Const.UInt32 a2,_) -> mkBoolVal g (a1 < a2) | ConstValue(Const.UInt64 a1,_),ConstValue(Const.UInt64 a2,_) -> mkBoolVal g (a1 < a2) | _ -> UnknownValue | [ AI_cgt ],[a;b],[ty] when typeEquiv g ty g.bool_ty -> match stripValue a,stripValue b with | ConstValue(Const.SByte a1,_),ConstValue(Const.SByte a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.Int16 a1,_),ConstValue(Const.Int16 a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.Int32 a1,_),ConstValue(Const.Int32 a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.Int64 a1,_),ConstValue(Const.Int64 a2,_) -> mkBoolVal g (a1 > a2) | _ -> UnknownValue | [ AI_cgt_un ],[a;b],[ty] when typeEquiv g ty g.bool_ty -> match stripValue a,stripValue b with | ConstValue(Const.Char a1,_),ConstValue(Const.Char a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.Byte a1,_),ConstValue(Const.Byte a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.UInt16 a1,_),ConstValue(Const.UInt16 a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.UInt32 a1,_),ConstValue(Const.UInt32 a2,_) -> mkBoolVal g (a1 > a2) | ConstValue(Const.UInt64 a1,_),ConstValue(Const.UInt64 a2,_) -> mkBoolVal g (a1 > a2) | _ -> UnknownValue | [ AI_shl ],[a;n],_ -> match stripValue a,stripValue n with | ConstValue(Const.Int64 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 63 -> (mkInt64Val g (a <<< n)) | ConstValue(Const.Int32 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 31 -> (mkInt32Val g (a <<< n)) | ConstValue(Const.Int16 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 15 -> (mkInt16Val g (a <<< n)) | ConstValue(Const.SByte a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 7 -> (mkInt8Val g (a <<< n)) | ConstValue(Const.UInt64 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 63 -> (mkUInt64Val g (a <<< n)) | ConstValue(Const.UInt32 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 31 -> (mkUInt32Val g (a <<< n)) | ConstValue(Const.UInt16 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 15 -> (mkUInt16Val g (a <<< n)) | ConstValue(Const.Byte a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 7 -> (mkUInt8Val g (a <<< n)) | _ -> UnknownValue | [ AI_shr ],[a;n],_ -> match stripValue a,stripValue n with | ConstValue(Const.SByte a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 7 -> (mkInt8Val g (a >>> n)) | ConstValue(Const.Int16 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 15 -> (mkInt16Val g (a >>> n)) | ConstValue(Const.Int32 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 31 -> (mkInt32Val g (a >>> n)) | ConstValue(Const.Int64 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 63 -> (mkInt64Val g (a >>> n)) | _ -> UnknownValue | [ AI_shr_un ],[a;n],_ -> match stripValue a,stripValue n with | ConstValue(Const.Byte a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 7 -> (mkUInt8Val g (a >>> n)) | ConstValue(Const.UInt16 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 15 -> (mkUInt16Val g (a >>> n)) | ConstValue(Const.UInt32 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 31 -> (mkUInt32Val g (a >>> n)) | ConstValue(Const.UInt64 a,_),ConstValue(Const.Int32 n,_) when n >= 0 && n <= 63 -> (mkUInt64Val g (a >>> n)) | _ -> UnknownValue // Retypings using IL asm "" are quite common in prim-types.fs // Sometimes these are only to get the primitives to pass the type checker. // Here we check for retypings from know values to known types. // We're conservative not to apply any actual data-changing conversions here. | [ ],[v],[ty] -> match stripValue v with | ConstValue(Const.Bool a,_) -> if typeEquiv g ty g.bool_ty then v elif typeEquiv g ty g.sbyte_ty then mkInt8Val g (if a then 1y else 0y) elif typeEquiv g ty g.int16_ty then mkInt16Val g (if a then 1s else 0s) elif typeEquiv g ty g.int32_ty then mkInt32Val g (if a then 1 else 0) elif typeEquiv g ty g.byte_ty then mkUInt8Val g (if a then 1uy else 0uy) elif typeEquiv g ty g.uint16_ty then mkUInt16Val g (if a then 1us else 0us) elif typeEquiv g ty g.uint32_ty then mkUInt32Val g (if a then 1u else 0u) else UnknownValue | ConstValue(Const.SByte a,_) -> if typeEquiv g ty g.sbyte_ty then v elif typeEquiv g ty g.int16_ty then mkInt16Val g (Unchecked.int16 a) elif typeEquiv g ty g.int32_ty then mkInt32Val g (Unchecked.int32 a) else UnknownValue | ConstValue(Const.Byte a,_) -> if typeEquiv g ty g.byte_ty then v elif typeEquiv g ty g.uint16_ty then mkUInt16Val g (Unchecked.uint16 a) elif typeEquiv g ty g.uint32_ty then mkUInt32Val g (Unchecked.uint32 a) else UnknownValue | ConstValue(Const.Int16 a,_) -> if typeEquiv g ty g.int16_ty then v elif typeEquiv g ty g.int32_ty then mkInt32Val g (Unchecked.int32 a) else UnknownValue | ConstValue(Const.UInt16 a,_) -> if typeEquiv g ty g.uint16_ty then v elif typeEquiv g ty g.uint32_ty then mkUInt32Val g (Unchecked.uint32 a) else UnknownValue | ConstValue(Const.Int32 a,_) -> if typeEquiv g ty g.int32_ty then v elif typeEquiv g ty g.uint32_ty then mkUInt32Val g (Unchecked.uint32 a) else UnknownValue | ConstValue(Const.UInt32 a,_) -> if typeEquiv g ty g.uint32_ty then v elif typeEquiv g ty g.int32_ty then mkInt32Val g (Unchecked.int32 a) else UnknownValue | ConstValue(Const.Int64 a,_) -> if typeEquiv g ty g.int64_ty then v elif typeEquiv g ty g.uint64_ty then mkUInt64Val g (Unchecked.uint64 a) else UnknownValue | ConstValue(Const.UInt64 a,_) -> if typeEquiv g ty g.uint64_ty then v elif typeEquiv g ty g.int64_ty then mkInt64Val g (Unchecked.int64 a) else UnknownValue | _ -> UnknownValue | _ -> UnknownValue //------------------------------------------------------------------------- // Size constants and combinators //------------------------------------------------------------------------- let localVarSize = 1 let rec AddTotalSizesAux acc l = match l with [] -> acc | h::t -> AddTotalSizesAux (h.TotalSize + acc) t let AddTotalSizes l = AddTotalSizesAux 0 l let rec AddFunctionSizesAux acc l = match l with [] -> acc | h::t -> AddFunctionSizesAux (h.FunctionSize + acc) t let AddFunctionSizes l = AddFunctionSizesAux 0 l let AddTotalSizesFlat l = l |> FlatList.sumBy (fun x -> x.TotalSize) let AddFunctionSizesFlat l = l |> FlatList.sumBy (fun x -> x.FunctionSize) //------------------------------------------------------------------------- // opt list/array combinators - zipping (_,_) return type //------------------------------------------------------------------------- let rec OrEffects l = match l with [] -> false | h::t -> h.HasEffect || OrEffects t let OrEffectsFlat l = FlatList.exists (fun x -> x.HasEffect) l let rec OrTailcalls l = match l with [] -> false | h::t -> h.MightMakeCriticalTailcall || OrTailcalls t let OrTailcallsFlat l = FlatList.exists (fun x -> x.MightMakeCriticalTailcall) l let rec OptimizeListAux f l acc1 acc2 = match l with | [] -> List.rev acc1, List.rev acc2 | (h ::t) -> let (x1,x2) = f h OptimizeListAux f t (x1::acc1) (x2::acc2) let OptimizeList f l = OptimizeListAux f l [] [] let OptimizeFlatList f l = l |> FlatList.map f |> FlatList.unzip let NoExprs : (Expr list * list>)= [],[] let NoFlatExprs : (FlatExprs * FlatList>) = FlatList.empty, FlatList.empty //------------------------------------------------------------------------- // Common ways of building new value infos //------------------------------------------------------------------------- let CombineValueInfos einfos res = { TotalSize = AddTotalSizes einfos; FunctionSize = AddFunctionSizes einfos; HasEffect = OrEffects einfos; MightMakeCriticalTailcall = OrTailcalls einfos; Info = res } let CombineFlatValueInfos einfos res = { TotalSize = AddTotalSizesFlat einfos; FunctionSize = AddFunctionSizesFlat einfos; HasEffect = OrEffectsFlat einfos; MightMakeCriticalTailcall = OrTailcallsFlat einfos; Info = res } let CombineValueInfosUnknown einfos = CombineValueInfos einfos UnknownValue let CombineFlatValueInfosUnknown einfos = CombineFlatValueInfos einfos UnknownValue //------------------------------------------------------------------------- // Hide information because of a signature //------------------------------------------------------------------------- let AbstractLazyModulInfoByHiding isAssemblyBoundary mhi = // The freevars and FreeTyvars can indicate if the non-public (hidden) items have been used. // Under those checks, the further hidden* checks may be subsumed (meaning, not required anymore). let hiddenTycon,hiddenTyconRepr,hiddenVal, hiddenRecdField, hiddenUnionCase = Zset.memberOf mhi.mhiTycons, Zset.memberOf mhi.mhiTyconReprs, Zset.memberOf mhi.mhiVals, Zset.memberOf mhi.mhiRecdFields, Zset.memberOf mhi.mhiUnionCases let rec abstractExprInfo ivalue = if verboseOptimizationInfo then dprintf "abstractExprInfo\n"; match ivalue with (* Check for escaping value. Revert to old info if possible *) | ValValue (vref2,detail) -> let detail' = abstractExprInfo detail let v2 = vref2.Deref let tyvars = freeInVal CollectAll v2 if (isAssemblyBoundary && not (freeTyvarsAllPublic tyvars)) || Zset.exists hiddenTycon tyvars.FreeTycons || hiddenVal v2 then detail' else ValValue (vref2,detail') // Check for escape in lambda | CurriedLambdaValue (_,_,_,expr,_) | ConstExprValue(_,expr) when (let fvs = freeInExpr CollectAll expr (isAssemblyBoundary && not (freeVarsAllPublic fvs)) || Zset.exists hiddenVal fvs.FreeLocals || Zset.exists hiddenTycon fvs.FreeTyvars.FreeTycons || Zset.exists hiddenTyconRepr fvs.FreeLocalTyconReprs || Zset.exists hiddenRecdField fvs.FreeRecdFields || Zset.exists hiddenUnionCase fvs.FreeUnionCases ) -> UnknownValue // Check for escape in constant | ConstValue(_,ty) when (let ftyvs = freeInType CollectAll ty (isAssemblyBoundary && not (freeTyvarsAllPublic ftyvs)) || Zset.exists hiddenTycon ftyvs.FreeTycons) -> UnknownValue | TupleValue vinfos -> TupleValue (Array.map abstractExprInfo vinfos) | RecdValue (tcref,vinfos) -> if hiddenTyconRepr tcref.Deref || Array.exists (mkNestedRecdFieldRef tcref >> hiddenRecdField) tcref.AllFieldsArray then UnknownValue else RecdValue (tcref,Array.map abstractExprInfo vinfos) | UnionCaseValue(ucref,vinfos) -> let tcref = ucref.TyconRef if hiddenTyconRepr ucref.Tycon || tcref.UnionCasesArray |> Array.exists (mkNestedUnionCaseRef tcref >> hiddenUnionCase) then UnknownValue else UnionCaseValue (ucref,Array.map abstractExprInfo vinfos) | SizeValue(_vdepth,vinfo) -> MakeSizedValueInfo (abstractExprInfo vinfo) | UnknownValue | ConstExprValue _ | CurriedLambdaValue _ | ConstValue _ -> ivalue and abstractValInfo v = { ValExprInfo=abstractExprInfo v.ValExprInfo; ValMakesNoCriticalTailcalls=v.ValMakesNoCriticalTailcalls } and abstractModulInfo ss = if verboseOptimizationInfo then dprintf "abstractModulInfo\n"; { ModuleOrNamespaceInfos = NameMap.map abstractLazyModulInfo ss.ModuleOrNamespaceInfos; ValInfos = ValInfos(ss.ValInfos.Entries |> Seq.filter (fun (vref,_) -> not (hiddenVal vref.Deref)) |> Seq.map (fun (vref,e) -> check (* "its implementation uses a binding hidden by a signature" m *) vref (abstractValInfo e) )) } and abstractLazyModulInfo (ss:LazyModuleInfo) = ss.Force() |> abstractModulInfo |> notlazy abstractLazyModulInfo /// Hide all information except what we need for "must inline". We always save this optimization information let AbstractLazyModulInfoToEssentials = let rec abstractModulInfo (ss:ModuleInfo) = { ModuleOrNamespaceInfos = NameMap.map (Lazy.force >> abstractModulInfo >> notlazy) ss.ModuleOrNamespaceInfos; ValInfos = ss.ValInfos.Filter (fun (v,_) -> v.MustInline) } and abstractLazyModulInfo ss = ss |> Lazy.force |> abstractModulInfo |> notlazy abstractLazyModulInfo //------------------------------------------------------------------------- // Hide information because of a "let ... in ..." or "let rec ... in ... " //------------------------------------------------------------------------- let AbstractExprInfoByVars (boundVars:Val list,boundTyVars) ivalue = // Module and member bindings can be skipped when checking abstraction, since abstraction of these values has already been done when // we hit the end of the module and called AbstractLazyModulInfoByHiding. If we don't skip these then we end up quadtratically retraversing // the inferred optimization data, i.e. at each binding all the way up a sequences of 'lets' in a module. let boundVars = boundVars |> List.filter (fun v -> not v.IsMemberOrModuleBinding) match boundVars,boundTyVars with | [],[] -> ivalue | _ -> let rec abstractExprInfo ivalue = match ivalue with // Check for escaping value. Revert to old info if possible | ValValue (VRefLocal v2,detail) when (nonNil boundVars && List.exists (valEq v2) boundVars) || (nonNil boundTyVars && let ftyvs = freeInVal CollectTypars v2 List.exists (Zset.memberOf ftyvs.FreeTypars) boundTyVars) -> if verboseOptimizationInfo then dprintf "hiding value '%s' when used in expression (see %a)\n" v2.LogicalName outputRange v2.Range; let ftyvs = freeInVal CollectTypars v2 ftyvs.FreeTypars |> Zset.iter (fun v -> dprintf " -- ftyv %s @ %a\n" v.Name outputRange v.Range); boundVars |> List.iter (fun v -> dprintf " -- bv %s @ %a\n" v.LogicalName outputRange v.Range); boundTyVars |> List.iter (fun v -> dprintf " -- btyv %s @ %a\n" v.Name outputRange v.Range) abstractExprInfo detail | ValValue (v2,detail) -> let detail' = abstractExprInfo detail ValValue (v2,detail') // Check for escape in lambda | CurriedLambdaValue (_,_,_,expr,_) | ConstExprValue(_,expr) when (let fvs = freeInExpr (if isNil boundTyVars then CollectLocals else CollectTyparsAndLocals) expr (nonNil boundVars && List.exists (Zset.memberOf fvs.FreeLocals) boundVars) || (nonNil boundTyVars && List.exists (Zset.memberOf fvs.FreeTyvars.FreeTypars) boundTyVars) || (fvs.UsesMethodLocalConstructs )) -> if verboseOptimizationInfo then let fvs = freeInExpr (if isNil boundTyVars then CollectLocals else CollectTyparsAndLocals) expr dprintf "Trimming lambda @ %a, UsesMethodLocalConstructs = %b, exprL = %s\n" outputRange expr.Range fvs.UsesMethodLocalConstructs (showL (exprL expr)); fvs.FreeLocals |> Zset.iter (fun v -> dprintf "fv %s @ %a\n" v.LogicalName outputRange v.Range); fvs.FreeTyvars.FreeTypars |> Zset.iter (fun v -> dprintf "ftyv %s @ %a\n" v.Name outputRange v.Range); boundVars |> List.iter (fun v -> dprintf "bv %s @ %a\n" v.LogicalName outputRange v.Range); boundTyVars |> List.iter (fun v -> dprintf "btyv %s @ %a\n" v.Name outputRange v.Range) UnknownValue // Check for escape in generic constant | ConstValue(_,ty) when (nonNil boundTyVars && (let ftyvs = freeInType CollectTypars ty List.exists (Zset.memberOf ftyvs.FreeTypars) boundTyVars)) -> UnknownValue // Otherwise check all sub-values | TupleValue vinfos -> TupleValue (Array.map (abstractExprInfo) vinfos) | RecdValue (tcref,vinfos) -> RecdValue (tcref,Array.map (abstractExprInfo) vinfos) | UnionCaseValue (cspec,vinfos) -> UnionCaseValue(cspec,Array.map (abstractExprInfo) vinfos) | CurriedLambdaValue _ | ConstValue _ | ConstExprValue _ | UnknownValue -> ivalue | SizeValue (_vdepth,vinfo) -> MakeSizedValueInfo (abstractExprInfo vinfo) and abstractValInfo v = { ValExprInfo=abstractExprInfo v.ValExprInfo; ValMakesNoCriticalTailcalls=v.ValMakesNoCriticalTailcalls } and abstractModulInfo ss = { ModuleOrNamespaceInfos = ss.ModuleOrNamespaceInfos |> NameMap.map (Lazy.force >> abstractModulInfo >> notlazy) ; ValInfos = ss.ValInfos.Map (fun (vref,e) -> if verboseOptimizationInfo then dprintf "checking %s @ %a\n" vref.LogicalName outputRange (vref.Range); check (* "its implementation uses a private binding" m *) vref (abstractValInfo e) ) } abstractExprInfo ivalue //------------------------------------------------------------------------- // Remap optimization information, e.g. to use public stable references so we can pickle it // to disk. //------------------------------------------------------------------------- let RemapLazyModulInfo g tmenv = let rec remapExprInfo ivalue = if verboseOptimizationInfo then dprintf "remapExprInfo\n"; match ivalue with | ValValue (v,detail) -> ValValue (remapValRef tmenv v,remapExprInfo detail) | TupleValue vinfos -> TupleValue (Array.map remapExprInfo vinfos) | RecdValue (tcref,vinfos) -> RecdValue (remapTyconRef tmenv.tyconRefRemap tcref, Array.map remapExprInfo vinfos) | UnionCaseValue(cspec,vinfos) -> UnionCaseValue (remapUnionCaseRef tmenv.tyconRefRemap cspec,Array.map remapExprInfo vinfos) | SizeValue(_vdepth,vinfo) -> MakeSizedValueInfo (remapExprInfo vinfo) | UnknownValue -> UnknownValue | CurriedLambdaValue (uniq,arity,sz,expr,typ) -> CurriedLambdaValue (uniq,arity,sz,remapExpr g CloneAll tmenv expr,remapPossibleForallTy g tmenv typ) | ConstValue (c,ty) -> ConstValue (c,remapPossibleForallTy g tmenv ty) | ConstExprValue (sz,expr) -> ConstExprValue (sz,remapExpr g CloneAll tmenv expr) let remapValInfo v = { ValExprInfo=remapExprInfo v.ValExprInfo; ValMakesNoCriticalTailcalls=v.ValMakesNoCriticalTailcalls } let rec remapModulInfo ss = if verboseOptimizationInfo then dprintf "remapModulInfo\n"; { ModuleOrNamespaceInfos = ss.ModuleOrNamespaceInfos |> NameMap.map RemapLazyModulInfo; ValInfos = ss.ValInfos.Map (fun (vref,vinfo) -> let vref' = remapValRef tmenv vref let vinfo = remapValInfo vinfo // Propogate any inferred ValMakesNoCriticalTailcalls flag from implementation to signature information if vinfo.ValMakesNoCriticalTailcalls then vref'.Deref.SetMakesNoCriticalTailcalls() (vref',vinfo)) } and RemapLazyModulInfo ss = ss |> Lazy.force |> remapModulInfo |> notlazy RemapLazyModulInfo //------------------------------------------------------------------------- // Hide information when a value is no longer visible //------------------------------------------------------------------------- let AbstractAndRemapModulInfo msg g m (repackage,hidden) info = let mrpi = mkRepackageRemapping repackage if verboseOptimizationInfo then dprintf "%s - %a - Optimization data prior to trim: \n%s\n" msg outputRange m (Layout.showL (Layout.squashTo 192 (moduleInfoL g info))); let info = info |> AbstractLazyModulInfoByHiding false hidden if verboseOptimizationInfo then dprintf "%s - %a - Optimization data after trim:\n%s\n" msg outputRange m (Layout.showL (Layout.squashTo 192 (moduleInfoL g info))); let info = info |> RemapLazyModulInfo g mrpi if verboseOptimizationInfo then dprintf "%s - %a - Optimization data after remap:\n%s\n" msg outputRange m (Layout.showL (Layout.squashTo 192 (moduleInfoL g info))); info //------------------------------------------------------------------------- // Misc helerps //------------------------------------------------------------------------- // Mark some variables (the ones we introduce via abstractBigTargets) as don't-eliminate let suffixForVariablesThatMayNotBeEliminated = "$cont" /// Type applications of F# "type functions" may cause side effects, e.g. /// let x<'a> = printfn "hello"; typeof<'a> /// In this case do not treat them as constants. let IsTyFuncValRefExpr = function | Expr.Val (fv,_,_) -> fv.IsTypeFunction | _ -> false /// Type applications of existing functions are always simple constants, with the exception of F# 'type functions' /// REVIEW: we could also include any under-applied application here. let rec IsSmallConstExpr x = match x with | Expr.Val (v,_,_m) -> not v.IsMutable | Expr.App(fe,_,_tyargs,args,_) -> isNil(args) && not (IsTyFuncValRefExpr fe) && IsSmallConstExpr fe | _ -> false let ValueOfExpr expr = if IsSmallConstExpr expr then ConstExprValue(0,expr) else UnknownValue //------------------------------------------------------------------------- // Dead binding elimination //------------------------------------------------------------------------- let ValueIsUsedOrHasEffect cenv fvs (b:Binding,binfo) = let v = b.Var not (cenv.settings.EliminateUnusedBindings()) || isSome v.MemberInfo || binfo.HasEffect || Zset.contains v (fvs()) let rec SplitValuesByIsUsedOrHasEffect cenv fvs x = x |> FlatList.filter (ValueIsUsedOrHasEffect cenv fvs) |> FlatList.unzip //------------------------------------------------------------------------- // //------------------------------------------------------------------------- let IlAssemblyCodeInstrHasEffect i = match i with | ( AI_nop | AI_ldc _ | AI_add | AI_sub | AI_mul | AI_xor | AI_and | AI_or | AI_ceq | AI_cgt | AI_cgt_un | AI_clt | AI_clt_un | AI_conv _ | AI_shl | AI_shr | AI_shr_un | AI_neg | AI_not | AI_ldnull ) | I_ldstr _ | I_ldtoken _ -> false | _ -> true let IlAssemblyCodeHasEffect instrs = List.exists IlAssemblyCodeInstrHasEffect instrs //------------------------------------------------------------------------- // Effects // // note: allocating an object with observable identity (i.e. a name) // or reading from a mutable field counts as an 'effect', i.e. // this context 'effect' has it's usual meaning in the effect analysis literature of // read-from-mutable // write-to-mutable // name-generation // arbitrary-side-effect (e.g. 'non-termination' or 'fire the missiles') //------------------------------------------------------------------------- let rec ExprHasEffect g expr = match expr with | Expr.Val (vref,_,_) -> vref.IsTypeFunction || (vref.IsMutable) | Expr.Quote _ | Expr.Lambda _ | Expr.TyLambda _ | Expr.Const _ -> false /// type applications do not have effects, with the exception of type functions | Expr.App(f0,_,_,[],_) -> (IsTyFuncValRefExpr f0) || ExprHasEffect g f0 | Expr.Op(op,_,args,_) -> ExprsHaveEffect g args || OpHasEffect g op | Expr.LetRec(binds,body,_,_) -> BindingsHaveEffect g binds || ExprHasEffect g body | Expr.Let(bind,body,_,_) -> BindingHasEffect g bind || ExprHasEffect g body // REVIEW: could add Expr.Obj on an interface type - these are similar to records of lambda expressions | _ -> true and ExprsHaveEffect g exprs = List.exists (ExprHasEffect g) exprs and BindingsHaveEffect g binds = FlatList.exists (BindingHasEffect g) binds and BindingHasEffect g bind = bind.Expr |> ExprHasEffect g and OpHasEffect g op = match op with | TOp.Tuple -> false | TOp.Recd (ctor,tcref) -> match ctor with | RecdExprIsObjInit -> true | RecdExpr -> isRecdOrUnionOrStructTyconRefAllocObservable g tcref | TOp.UnionCase ucref -> isRecdOrUnionOrStructTyconRefAllocObservable g ucref.TyconRef | TOp.ExnConstr ecref -> isExnAllocObservable ecref | TOp.Bytes _ | TOp.UInt16s _ | TOp.Array -> true (* alloc observable *) | TOp.UnionCaseTagGet _ -> false | TOp.UnionCaseProof _ -> false | TOp.UnionCaseFieldGet (ucref,n) -> isUnionCaseFieldMutable g ucref n | TOp.ILAsm(instrs,_) -> IlAssemblyCodeHasEffect instrs | TOp.TupleFieldGet(_) -> false | TOp.ExnFieldGet(ecref,n) -> isExnFieldMutable ecref n | TOp.RefAddrGet -> false | TOp.ValFieldGet rfref -> rfref.RecdField.IsMutable | TOp.ValFieldGetAddr _rfref -> true (* check *) | TOp.UnionCaseFieldSet _ | TOp.ExnFieldSet _ | TOp.Coerce | TOp.Reraise | TOp.For _ | TOp.While _ | TOp.TryCatch _ | TOp.TryFinally _ (* note: these really go through a different path anyway *) | TOp.TraitCall _ | TOp.Goto _ | TOp.Label _ | TOp.Return | TOp.ILCall _ (* conservative *) | TOp.LValueOp _ (* conservative *) | TOp.ValFieldSet _ -> true let TryEliminateBinding cenv _env (TBind(vspec1,e1,spBind)) e2 _m = // don't eliminate bindings if we're not optimizing AND the binding is not a compiler generated variable if not (cenv.optimizing && cenv.settings.EliminateImmediatelyConsumedLocals()) && not vspec1.IsCompilerGenerated then None else // Peephole on immediate consumption of single bindings, e.g. "let x = e in x" --> "e" // REVIEW: enhance this by general elimination of bindings to // non-side-effecting expressions that are used only once. // But note the cases below cover some instances of side-effecting expressions as well.... let IsUniqueUse vspec2 args = valEq vspec1 vspec2 && (not (vspec2.LogicalName.Contains(suffixForVariablesThatMayNotBeEliminated))) // REVIEW: this looks slow. Look only for one variable instead && (let fvs = accFreeInExprs CollectLocals args emptyFreeVars not (Zset.contains vspec1 fvs.FreeLocals)) // Immediate consumption of value as 2nd or subsequent argument to a construction or projection operation let rec GetImmediateUseContext rargsl argsr = match argsr with | (Expr.Val(VRefLocal vspec2,_,_)) :: argsr2 when valEq vspec1 vspec2 && IsUniqueUse vspec2 (List.rev rargsl@argsr2) -> Some(List.rev rargsl,argsr2) | argsrh :: argsrt when not (ExprHasEffect cenv.g argsrh) -> GetImmediateUseContext (argsrh::rargsl) argsrt | _ -> None match stripExpr e2 with // Immediate consumption of value as itself 'let x = e in x' | Expr.Val(VRefLocal vspec2,_,_) when IsUniqueUse vspec2 [] -> Some e1 // Immediate consumption of value by a pattern match 'let x = e in match x with ...' | Expr.Match(spMatch,_exprm,TDSwitch(Expr.Val(VRefLocal vspec2,_,_),cases,dflt,_),targets,m,ty2) when (valEq vspec1 vspec2 && let fvs = accFreeInTargets CollectLocals targets (accFreeInSwitchCases CollectLocals cases dflt emptyFreeVars) not (Zset.contains vspec1 fvs.FreeLocals)) -> let spMatch = spBind.Combine(spMatch) Some (Expr.Match(spMatch,e1.Range,TDSwitch(e1,cases,dflt,m),targets,m,ty2)) // Immediate consumption of value as a function 'let f = e in f ...' and 'let x = e in f ... x ...' // Note functions are evaluated before args // Note: do not include functions with a single arg of unit type, introduced by abstractBigTargets | Expr.App(f,f0ty,tyargs,args,m) when not (vspec1.LogicalName.Contains(suffixForVariablesThatMayNotBeEliminated)) -> match GetImmediateUseContext [] (f::args) with | Some([],rargs) -> Some (MakeApplicationAndBetaReduce cenv.g (e1,f0ty,[tyargs],rargs ,m)) | Some(f::largs,rargs) -> Some (MakeApplicationAndBetaReduce cenv.g (f,f0ty,[tyargs],largs @ (e1::rargs),m)) | None -> None // Bug 6311: a special case of nested elimination of locals (which really should be handled more generally) // 'let x = e in op[op[x;arg2];arg3]' --> op[op[e;arg2];arg3] // 'let x = e in op[op[arg1;x];arg3]' --> op[op[arg1;e];arg3] when arg1 has no side effects etc. // 'let x = e in op[op[arg1;arg2];x]' --> op[op[arg1;arg2];e] when arg1, arg2 have no side effects etc. | Expr.Op (c1,tyargs1,[Expr.Op (c2,tyargs2,[arg1;arg2],m2);arg3],m1) -> match GetImmediateUseContext [] [arg1;arg2;arg3] with | Some([],[arg2;arg3]) -> Some (Expr.Op (c1,tyargs1,[Expr.Op (c2,tyargs2,[e1;arg2],m2);arg3],m1)) | Some([arg1],[arg3]) -> Some (Expr.Op (c1,tyargs1,[Expr.Op (c2,tyargs2,[arg1;e1],m2);arg3],m1)) | Some([arg1;arg2],[]) -> Some (Expr.Op (c1,tyargs1,[Expr.Op (c2,tyargs2,[arg1;arg2],m2);e1],m1)) | Some _ -> error(InternalError("unexpected return pattern from GetImmediateUseContext",m1)) | None -> None // Immediate consumption of value as first non-effectful argument to a construction or projection operation // 'let x = e in op[x;....]' | Expr.Op (c,tyargs,args,m) -> match GetImmediateUseContext [] args with | Some(largs,rargs) -> Some (Expr.Op (c,tyargs,(largs @ (e1:: rargs)),m)) | None -> None | _ -> None let TryEliminateLet cenv env bind e2 m = match TryEliminateBinding cenv env bind e2 m with | Some e2' -> e2',-localVarSize (* eliminated a let, hence reduce size estimate *) | None -> mkLetBind m bind e2 ,0 //------------------------------------------------------------------------- /// Detect the application of a value to an arbitrary number of arguments let rec (|KnownValApp|_|) expr = match stripExpr expr with | Expr.Val(vref,_,_) -> Some(vref,[],[]) | Expr.App(KnownValApp(vref,typeArgs1,otherArgs1),_,typeArgs2,otherArgs2,_) -> Some(vref,typeArgs1@typeArgs2,otherArgs1@otherArgs2) | _ -> None //------------------------------------------------------------------------- // ExpandStructuralBinding // // Expand bindings to tuple expressions by factoring sub-expression out as prior bindings. // Similarly for other structural constructions, like records... // If the item is only projected from then the construction (allocation) can be eliminated. // This transform encourages that by allowing projections to be simplified. //------------------------------------------------------------------------- let ExprIsValue = function Expr.Val _ -> true | _ -> false let ExpandStructuralBinding cenv expr = match expr with | Expr.Let (TBind(v,rhs,tgtSeqPtOpt),body,m,_) when (isTupleExpr rhs && not v.IsCompiledAsTopLevel && not v.IsMember && not v.IsTypeFunction && not v.IsMutable) -> let args = tryDestTuple rhs if List.forall ExprIsValue args then expr (* avoid re-expanding when recursion hits original binding *) else let argTys = destTupleTy cenv.g v.Type let argBind i (arg:Expr) argTy = let name = v.LogicalName ^ "_" ^ string i let v,ve = mkCompGenLocal arg.Range name argTy ve,mkCompGenBind v arg let ves,binds = List.mapi2 argBind args argTys |> List.unzip let tuple = mkTupled cenv.g m ves argTys mkLetsBind m binds (mkLet tgtSeqPtOpt m v tuple body) (* REVIEW: other cases - records, explicit lists etc. *) | expr -> expr //------------------------------------------------------------------------- // QueryBuilder.Run elimination helpers //------------------------------------------------------------------------- /// Detect a query { ... } let (|QueryRun|_|) g expr = //#if DEBUG // g.query_run_value_vref.Deref |> ignore // g.query_run_enumerable_vref.Deref |> ignore //#endif match expr with | Expr.App(Expr.Val (vref,_,_),_,_,[_builder; arg],_) when valRefEq g vref g.query_run_value_vref -> Some (arg, None) | Expr.App(Expr.Val (vref,_,_),_,[ elemTy ] ,[_builder; arg],_) when valRefEq g vref g.query_run_enumerable_vref -> Some (arg, Some elemTy) | _ -> None let (|MaybeTupled|) e = tryDestTuple e let (|AnyInstanceMethodApp|_|) e = match e with | Expr.App(Expr.Val (vref,_,_),_,tyargs,[obj; MaybeTupled args],_) -> Some (vref,tyargs,obj,args) | _ -> None let (|InstanceMethodApp|_|) g (expectedValRef:ValRef) e = //#if DEBUG // expectedValRef.Deref |> ignore //#endif //printfn "for vref = %A" (expectedValRef.TryDeref |> Option.map (fun x -> x.DisplayName)) match e with | AnyInstanceMethodApp (vref,tyargs,obj,args) when valRefEq g vref expectedValRef -> Some (tyargs,obj,args) | _ -> None let (|QuerySourceEnumerable|_|) g = function | InstanceMethodApp g g.query_source_vref ([resTy],_builder, [res]) -> Some (resTy,res) | _ -> None let (|QueryFor|_|) g = function | InstanceMethodApp g g.query_for_vref ([srcTy;qTy;resTy;_qInnerTy],_builder, [src;selector]) -> Some (qTy,srcTy,resTy,src,selector) | _ -> None let (|QueryYield|_|) g = function | InstanceMethodApp g g.query_yield_vref ([resTy;qTy],_builder, [res]) -> Some (qTy,resTy,res) | _ -> None let (|QueryYieldFrom|_|) g = function | InstanceMethodApp g g.query_yield_from_vref ([resTy;qTy],_builder, [res]) -> Some (qTy,resTy,res) | _ -> None let (|QuerySelect|_|) g = function | InstanceMethodApp g g.query_select_vref ([srcTy;qTy;resTy],_builder, [src;selector]) -> Some (qTy,srcTy,resTy,src,selector) | _ -> None let (|QueryZero|_|) g = function | InstanceMethodApp g g.query_zero_vref ([resTy;qTy],_builder, _) -> Some (qTy, resTy) | _ -> None /// Look for a possible tuple and transform let (|AnyTupleTrans|) e = match e with | Expr.Op (TOp.Tuple,tys,es,m) -> (es, (fun es -> Expr.Op (TOp.Tuple,tys,es,m))) | _ -> [e], (function [e] -> e | _ -> assert false; failwith "unreachable") /// Look for any QueryBuilder.* operation and transform let (|AnyQueryBuilderOpTrans|_|) g = function | Expr.App((Expr.Val (vref,_,_) as v),vty,tyargs,[builder; AnyTupleTrans( (src::rest), replaceArgs) ],m) when (match vref.ApparentParent with Parent tcref -> tyconRefEq g tcref g.query_builder_tcref | ParentNone -> false) -> Some (src,(fun newSource -> Expr.App(v,vty,tyargs,[builder; replaceArgs(newSource::rest)],m))) | _ -> None let mkUnitDelayLambda g m e = let uv,_ = mkCompGenLocal m "unitVar" g.unit_ty mkLambda m uv (e,tyOfExpr g e) // := // | query.Select(, ) --> Seq.map(qexprInner', ...) // | query.For(, ) --> IQueryable if qexprInner is IQueryable, otherwise Seq.collect(qexprInner', ...) // | query.Yield --> not IQueryable // | query.YieldFrom --> not IQueryable // | query.Op(, ) --> IQueryable if qexprInner is IQueryable, otherwise query.Op(qexprInner', ) // | :> seq<_> --> IQueryable if qexprInner is IQueryable // // := // | query.Select(, ) --> IQueryable if qexprInner is IQueryable, otherwise seq { qexprInner' } // | query.For(, ) --> IQueryable if qexprInner is IQueryable, otherwise seq { qexprInner' } // | query.Yield --> not IQueryable, seq { } // | query.YieldFrom --> not IQueryable, seq { yield! } // | query.Op(, ) --> IQueryable if qexprOuter is IQueryable, otherwise query.Op(qexpOuter', ) //printfn "found Query.Quote" // If this returns "Some" then the source is not IQueryable. let rec tryRewriteToSeqCombinators g (e: Expr) = let m = e.Range match e with // query.Yield --> Seq.singleton | QueryYield g (_, resultElemTy, vExpr) -> Some (mkCallSeqSingleton g m resultElemTy vExpr) // query.YieldFrom (query.Source s) --> s | QueryYieldFrom g (_, _, QuerySourceEnumerable g (_, resExpr)) -> Some resExpr // query.Select --> Seq.map | QuerySelect g (_qTy, sourceElemTy, resultElemTy, source, resultSelector) -> match tryRewriteToSeqCombinators g source with | Some newSource -> Some (mkCallSeqMap g m sourceElemTy resultElemTy resultSelector newSource) | None -> None // query.Zero -> Seq.empty | QueryZero g (_qTy, sourceElemTy) -> Some (mkCallSeqEmpty g m sourceElemTy) // query.For --> Seq.collect | QueryFor g (_qTy, sourceElemTy, resultElemTy, QuerySourceEnumerable g (_, source), Expr.Lambda(_,_,_,[resultSelectorVar],resultSelector,mLambda,_)) -> match tryRewriteToSeqCombinators g resultSelector with | Some newResultSelector -> Some (mkCallSeqCollect g m sourceElemTy resultElemTy (mkLambda mLambda resultSelectorVar (newResultSelector, tyOfExpr g newResultSelector)) source) | _ -> None // let --> let | Expr.Let(bind,bodyExpr,m,_) -> match tryRewriteToSeqCombinators g bodyExpr with | Some newBodyExpr -> Some (Expr.Let(bind,newBodyExpr,m,newCache())) | None -> None // match --> match | Expr.Match (spBind,exprm,pt,targets,m,_ty) -> let targets = targets |> Array.map (fun (TTarget(vs,e,spTarget)) -> match tryRewriteToSeqCombinators g e with None -> None | Some e -> Some(TTarget(vs,e,spTarget))) if targets |> Array.forall isSome then let targets = targets |> Array.map Option.get let ty = targets |> Array.pick (fun (TTarget(_,e,_)) -> Some(tyOfExpr g e)) Some (Expr.Match (spBind,exprm,pt,targets,m,ty)) else None | _ -> None // This detects forms arising from query expressions, i.e. // query.Run <@ query.Op(, ) @> // // We check if the combinators are marked with tag IEnumerable - if do, we optimize the "Run" and quotation away, since RunQueryAsEnumerable simply performs // an eval. let TryDetectQueryQuoteAndRun cenv (expr:Expr) = let g = cenv.g match expr with | QueryRun g (bodyOfRun, reqdResultInfo) -> //printfn "found Query.Run" match bodyOfRun with | Expr.Quote(quotedExpr,_,true,_,_) -> // true = isFromQueryExpression // This traverses uses of query operators like query.Where and query.AverageBy until we're left with something familiar. // All these operators take the input IEnumerable 'seqSource' as the first argument. // // When we find the 'core' of the query expression, then if that is using IEnumerable execution, // try to rewrite the core into combinators approximating the compiled form of seq { ... }, which in turn // are eligible for state-machine representation. If that fails, we still rewrite to combinator form. let rec loopOuter (e:Expr) = match e with | QueryFor g (qTy,_,resultElemTy,_,_) | QuerySelect g (qTy,_,resultElemTy,_,_) | QueryYield g (qTy,resultElemTy,_) | QueryYieldFrom g (qTy,resultElemTy,_) when typeEquiv cenv.g qTy (mkAppTy cenv.g.tcref_System_Collections_IEnumerable []) -> match tryRewriteToSeqCombinators cenv.g e with | Some newSource -> //printfn "Eliminating because source is not IQueryable" Some (mkCallSeq cenv.g newSource.Range resultElemTy (mkCallSeqDelay cenv.g newSource.Range resultElemTy (mkUnitDelayLambda cenv.g newSource.Range newSource) ), Some(resultElemTy, qTy) ) | None -> //printfn "Not compiling to state machines, but still optimizaing the use of quotations away" Some (e, None) | AnyQueryBuilderOpTrans g (seqSource,replace) -> match loopOuter seqSource with | Some (newSeqSource, newSeqSourceIsEnumerableInfo) -> let newSeqSourceAsQuerySource = match newSeqSourceIsEnumerableInfo with | Some (resultElemTy,qTy) -> mkCallNewQuerySource cenv.g newSeqSource.Range resultElemTy qTy newSeqSource | None -> newSeqSource Some (replace newSeqSourceAsQuerySource, None) | None -> None | _ -> None let resultExprInfo = loopOuter quotedExpr match resultExprInfo with | Some (resultExpr, exprIsEnumerableInfo) -> let resultExprAfterConvertToResultTy = match reqdResultInfo, exprIsEnumerableInfo with | Some _, Some _ | None, None -> resultExpr // the expression is a QuerySource, the result is a QuerySource, nothing to do | Some resultElemTy, None -> mkCallGetQuerySourceAsEnumerable cenv.g expr.Range resultElemTy (TType_app(cenv.g.tcref_System_Collections_IEnumerable,[])) resultExpr | None, Some (resultElemTy, qTy) -> mkCallNewQuerySource cenv.g expr.Range resultElemTy qTy resultExpr Some resultExprAfterConvertToResultTy | None -> None | _ -> //printfn "Not eliminating because no Quote found" None | _ -> //printfn "Not eliminating because no Run found" None //------------------------------------------------------------------------- // The traversal //------------------------------------------------------------------------- let rec OptimizeExpr cenv (env:IncrementalOptimizationEnv) expr = // foreach --> fast integer for loops let expr = DetectFastIntegerForLoops cenv.g expr // Eliminate subsumption coercions for functions. This must be done post-typechecking because we need // complete inference types. let expr = NormalizeAndAdjustPossibleSubsumptionExprs cenv.g expr let expr = stripExpr expr match expr with // treat the common linear cases to avoid stack overflows, using an explicit continutation | Expr.Sequential _ | Expr.Let _ -> OptimizeLinearExpr cenv env expr (fun x -> x) | Expr.Const (c,m,ty) -> OptimizeConst cenv env expr (c,m,ty) | Expr.Val (v,_vFlags,m) -> OptimizeVal cenv env expr (v,m) | Expr.Quote(ast,splices,isFromQueryExpression,m,ty) -> let splices = ref (splices.Value |> Option.map (map2Of3 (List.map (OptimizeExpr cenv env >> fst)))) Expr.Quote(ast,splices,isFromQueryExpression,m,ty), { TotalSize = 10; FunctionSize = 1; HasEffect = false; MightMakeCriticalTailcall=false; Info=UnknownValue } | Expr.Obj (_,typ,basev,expr,overrides,iimpls,m) -> OptimizeObjectExpr cenv env (typ,basev,expr,overrides,iimpls,m) | Expr.Op (c,tyargs,args,m) -> OptimizeExprOp cenv env (c,tyargs,args,m) | Expr.App(f,fty,tyargs,argsl,m) -> // eliminate uses of query match TryDetectQueryQuoteAndRun cenv expr with | Some newExpr -> OptimizeExpr cenv env newExpr | None -> OptimizeApplication cenv env (f,fty,tyargs,argsl,m) (* REVIEW: fold the next two cases together *) | Expr.Lambda(_lambdaId,_,_,argvs,_body,m,rty) -> let topValInfo = ValReprInfo ([],[argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)],ValReprInfo.unnamedRetVal) let ty = mkMultiLambdaTy m argvs rty OptimizeLambdas None cenv env topValInfo expr ty | Expr.TyLambda(_lambdaId,tps,_body,_m,rty) -> let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps,[],ValReprInfo.unnamedRetVal) let ty = tryMkForallTy tps rty OptimizeLambdas None cenv env topValInfo expr ty | Expr.TyChoose _ -> OptimizeExpr cenv env (Typrelns.ChooseTyparSolutionsForFreeChoiceTypars cenv.g cenv.amap expr) | Expr.Match(spMatch,exprm,dtree,targets,m,ty) -> OptimizeMatch cenv env (spMatch,exprm,dtree,targets,m,ty) | Expr.LetRec (binds,e,m,_) -> OptimizeLetRec cenv env (binds,e,m) | Expr.StaticOptimization (constraints,e2,e3,m) -> let e2',e2info = OptimizeExpr cenv env e2 let e3',e3info = OptimizeExpr cenv env e3 Expr.StaticOptimization(constraints,e2',e3',m), { TotalSize = min e2info.TotalSize e3info.TotalSize; FunctionSize = min e2info.FunctionSize e3info.FunctionSize; HasEffect = e2info.HasEffect || e3info.HasEffect; MightMakeCriticalTailcall=e2info.MightMakeCriticalTailcall || e3info.MightMakeCriticalTailcall // seems conservative Info= UnknownValue } | Expr.Link _eref -> assert ("unexpected reclink" = ""); failwith "Unexpected reclink" //------------------------------------------------------------------------- // Optimize/analyze an object expression //------------------------------------------------------------------------- and OptimizeObjectExpr cenv env (typ,baseValOpt,basecall,overrides,iimpls,m) = if verboseOptimizations then dprintf "OptimizeObjectExpr\n"; let basecall',basecallinfo = OptimizeExpr cenv env basecall let overrides',overrideinfos = OptimizeMethods cenv env baseValOpt overrides let iimpls',iimplsinfos = OptimizeInterfaceImpls cenv env baseValOpt iimpls let expr'=mkObjExpr(typ,baseValOpt,basecall',overrides',iimpls',m) expr', { TotalSize=closureTotalSize + basecallinfo.TotalSize + AddTotalSizes overrideinfos + AddTotalSizes iimplsinfos; FunctionSize=1 (* a newobj *) ; HasEffect=true; MightMakeCriticalTailcall=false; // creating an object is not a useful tailcall Info=UnknownValue} //------------------------------------------------------------------------- // Optimize/analyze the methods that make up an object expression //------------------------------------------------------------------------- and OptimizeMethods cenv env baseValOpt l = OptimizeList (OptimizeMethod cenv env baseValOpt) l and OptimizeMethod cenv env baseValOpt (TObjExprMethod(slotsig, attribs, tps, vs, e, m) as tmethod) = if verboseOptimizations then dprintf "OptimizeMethod\n"; let env = {env with latestBoundId=Some tmethod.Id; functionVal = None} let env = BindTypeVarsToUnknown tps env let env = BindInternalValsToUnknown cenv vs env let env = Option.foldBack (BindInternalValToUnknown cenv) baseValOpt env let e',einfo = OptimizeExpr cenv env e (* REVIEW: if we ever change this from being UnknownValue then we should call AbstractExprInfoByVars *) TObjExprMethod(slotsig,attribs,tps,vs,e',m), { TotalSize = einfo.TotalSize; FunctionSize = 0; HasEffect = false; MightMakeCriticalTailcall=false; Info=UnknownValue} //------------------------------------------------------------------------- // Optimize/analyze the interface implementations that form part of an object expression //------------------------------------------------------------------------- and OptimizeInterfaceImpls cenv env baseValOpt l = OptimizeList (OptimizeInterfaceImpl cenv env baseValOpt) l and OptimizeInterfaceImpl cenv env baseValOpt (ty,overrides) = if verboseOptimizations then dprintf "OptimizeInterfaceImpl\n"; let overrides',overridesinfos = OptimizeMethods cenv env baseValOpt overrides (ty, overrides'), { TotalSize = AddTotalSizes overridesinfos; FunctionSize = 1; HasEffect = false; MightMakeCriticalTailcall=false; Info=UnknownValue} //------------------------------------------------------------------------- // Optimize/analyze an application of an intrinsic operator to arguments //------------------------------------------------------------------------- and OptimizeExprOp cenv env (op,tyargs,args,m) = if verboseOptimizations then dprintf "OptimizeExprOp\n"; (* Special cases *) match op,tyargs,args with | TOp.Coerce,[toty;fromty],[e] -> let e',einfo = OptimizeExpr cenv env e if typeEquiv cenv.g toty fromty then e',einfo else mkCoerceExpr(e',toty,m,fromty), { TotalSize=einfo.TotalSize + 1; FunctionSize=einfo.FunctionSize + 1; HasEffect = true; MightMakeCriticalTailcall=false; Info=UnknownValue } (* Handle these as special cases since mutables are allowed inside their bodies *) | TOp.While (spWhile,marker),_,[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_)] -> OptimizeWhileLoop cenv env (spWhile,marker,e1,e2,m) | TOp.For(spStart,dir),_,[Expr.Lambda(_,_,_,[_],e1,_,_);Expr.Lambda(_,_,_,[_],e2,_,_);Expr.Lambda(_,_,_,[v],e3,_,_)] -> OptimizeFastIntegerForLoop cenv env (spStart,v,e1,dir,e2,e3,m) | TOp.TryFinally(spTry,spFinally),[resty],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[_],e2,_,_)] -> OptimizeTryFinally cenv env (spTry,spFinally,e1,e2,m,resty) | TOp.TryCatch(spTry,spWith),[resty],[Expr.Lambda(_,_,_,[_],e1,_,_); Expr.Lambda(_,_,_,[vf],ef,_,_); Expr.Lambda(_,_,_,[vh],eh,_,_)] -> OptimizeTryCatch cenv env (e1,vf,ef,vh,eh,m,resty,spTry,spWith) | TOp.TraitCall(traitInfo),[],args -> OptimizeTraitCall cenv env (traitInfo, args, m) // This code hooks arr.Length. The idea is to ensure loops end up in the "same shape"as the forms of loops that the .NET JIT // guarantees to optimize. | TOp.ILCall (_,_,_,_,_,_,_,mref,_enclTypeArgs,_methTypeArgs,_tys),_,[arg] when (mref.EnclosingTypeRef.Scope.IsAssemblyRef && mref.EnclosingTypeRef.Scope.AssemblyRef.Name = cenv.g.sysCcu.AssemblyName && mref.EnclosingTypeRef.Name = "System.Array" && mref.Name = "get_Length" && isArray1DTy cenv.g (tyOfExpr cenv.g arg)) -> OptimizeExpr cenv env (Expr.Op(TOp.ILAsm(i_ldlen,[cenv.g.int_ty]),[],[arg],m)) // Empty IL instruction lists are used as casts in prim-types.fs. But we can get rid of them // if the types match up. | TOp.ILAsm([],[ty]),_,[a] when typeEquiv cenv.g (tyOfExpr cenv.g a) ty -> OptimizeExpr cenv env a | _ -> (* Reductions *) let args',arginfos = OptimizeExprsThenConsiderSplits cenv env args let knownValue = match op,arginfos with | TOp.ValFieldGet (rf),[e1info] -> TryOptimizeRecordFieldGet cenv env (e1info,rf,tyargs,m) | TOp.TupleFieldGet n,[e1info] -> TryOptimizeTupleFieldGet cenv env (e1info,tyargs,n,m) | TOp.UnionCaseFieldGet (cspec,n),[e1info] -> TryOptimizeUnionCaseGet cenv env (e1info,cspec,tyargs,n,m) | _ -> None match knownValue with | Some valu -> match TryOptimizeVal cenv env (false,valu,m) with | Some res -> OptimizeExpr cenv env res (* discard e1 since guard ensures it has no effects *) | None -> OptimizeExprOpFallback cenv env (op,tyargs,args',m) arginfos valu | None -> OptimizeExprOpFallback cenv env (op,tyargs,args',m) arginfos UnknownValue and OptimizeExprOpFallback cenv env (op,tyargs,args',m) arginfos valu = // The generic case - we may collect information, but the construction/projection doesn't disappear let argsTSize = AddTotalSizes arginfos let argsFSize = AddFunctionSizes arginfos let argEffects = OrEffects arginfos let argValues = List.map (fun x -> x.Info) arginfos let effect = OpHasEffect cenv.g op let cost,valu = match op with | TOp.UnionCase c -> 2,MakeValueInfoForUnionCase c (Array.ofList argValues) | TOp.ExnConstr _ -> 2,valu (* REVIEW: information collection possilbe here *) | TOp.Tuple -> 1, MakeValueInfoForTuple (Array.ofList argValues) | TOp.ValFieldGet _ | TOp.TupleFieldGet _ | TOp.UnionCaseFieldGet _ | TOp.ExnFieldGet _ | TOp.UnionCaseTagGet _ -> // REVIEW: reduction possible here, and may be very effective 1,valu | TOp.UnionCaseProof _ -> // We count the proof as size 0 // We maintain the value of the source of the proof-cast if it is known to be a UnionCaseValue let valu = match argValues.[0] with | StripUnionCaseValue (uc,info) -> UnionCaseValue(uc,info) | _ -> valu 0,valu | TOp.ILAsm(instrs,tys) -> min instrs.Length 1, mkAssemblyCodeValueInfo cenv.g instrs argValues tys | TOp.Bytes bytes -> bytes.Length/10 , valu | TOp.UInt16s bytes -> bytes.Length/10 , valu | TOp.ValFieldGetAddr _ | TOp.Array | TOp.For _ | TOp.While _ | TOp.TryCatch _ | TOp.TryFinally _ | TOp.ILCall _ | TOp.TraitCall _ | TOp.LValueOp _ | TOp.ValFieldSet _ | TOp.UnionCaseFieldSet _ | TOp.RefAddrGet | TOp.Coerce | TOp.Reraise | TOp.ExnFieldSet _ -> 1,valu | TOp.Recd (ctorInfo,tcref) -> let finfos = tcref.AllInstanceFieldsAsList // REVIEW: this seems a little conservative: Allocating a record with a mutable field // is not an effect - only reading or writing the field is. let valu = match ctorInfo with | RecdExprIsObjInit -> UnknownValue | RecdExpr -> if argValues.Length <> finfos.Length then valu else MakeValueInfoForRecord tcref (Array.ofList ((argValues,finfos) ||> List.map2 (fun x f -> if f.IsMutable then UnknownValue else x) )) 2,valu | TOp.Goto _ | TOp.Label _ | TOp.Return -> assert false; error(InternalError("unexpected goto/label/return in optimization",m)) // Indirect calls to IL code are always taken as tailcalls let mayBeCriticalTailcall = match op with | TOp.ILCall (virt,_,newobj,_,_,_,_,_,_,_,_) -> not newobj && virt | _ -> false let vinfo = { TotalSize=argsTSize + cost; FunctionSize=argsFSize + cost; HasEffect=argEffects || effect; MightMakeCriticalTailcall= mayBeCriticalTailcall; // discard tailcall info for args - these are not in tailcall position Info=valu } // Replace entire expression with known value? match TryOptimizeValInfo cenv env m vinfo with | Some res -> res,vinfo | None -> Expr.Op(op,tyargs,args',m), { TotalSize=argsTSize + cost; FunctionSize=argsFSize + cost; HasEffect=argEffects || effect; MightMakeCriticalTailcall= mayBeCriticalTailcall; // discard tailcall info for args - these are not in tailcall position Info=valu } //------------------------------------------------------------------------- // Optimize/analyze a constant node //------------------------------------------------------------------------- and OptimizeConst cenv env expr (c,m,ty) = match TryEliminateDesugaredConstants cenv.g m c with | Some(e) -> OptimizeExpr cenv env e | None -> if verboseOptimizations then dprintf "OptimizeConst\n"; expr, { TotalSize=(match c with | Const.String b -> b.Length/10 | _ -> 0); FunctionSize=0; HasEffect=false; MightMakeCriticalTailcall=false; Info=MakeValueInfoForConst c ty} //------------------------------------------------------------------------- // Optimize/analyze a record lookup. //------------------------------------------------------------------------- and TryOptimizeRecordFieldGet cenv _env (e1info,r:RecdFieldRef,_tinst,m) = match destRecdValue e1info.Info with | Some finfos when cenv.settings.EliminateRecdFieldGet() && not e1info.HasEffect -> let n = r.Index if n >= finfos.Length then errorR(InternalError( "TryOptimizeRecordFieldGet: term argument out of range",m)); Some finfos.[n] (* Uses INVARIANT on record ValInfos that exprs are in defn order *) | _ -> None and TryOptimizeTupleFieldGet cenv _env (e1info,tys,n,m) = match destTupleValue e1info.Info with | Some tups when cenv.settings.EliminateTupleFieldGet() && not e1info.HasEffect -> let len = tups.Length if len <> tys.Length then errorR(InternalError("error: tuple lengths don't match",m)); if n >= len then errorR(InternalError("TryOptimizeTupleFieldGet: tuple index out of range",m)); Some tups.[n] | _ -> None and TryOptimizeUnionCaseGet cenv _env (e1info,cspec,_tys,n,m) = match e1info.Info with | StripUnionCaseValue(cspec2,args) when cenv.settings.EliminatUnionCaseFieldGet() && not e1info.HasEffect && cenv.g.unionCaseRefEq cspec cspec2 -> if n >= args.Length then errorR(InternalError( "TryOptimizeUnionCaseGet: term argument out of range",m)); Some args.[n] | _ -> None //------------------------------------------------------------------------- // Optimize/analyze a for-loop //------------------------------------------------------------------------- and OptimizeFastIntegerForLoop cenv env (spStart,v,e1,dir,e2,e3,m) = if verboseOptimizations then dprintf "OptimizeFastIntegerForLoop\n"; let e1',e1info = OptimizeExpr cenv env e1 let e2',e2info = OptimizeExpr cenv env e2 let env = BindInternalValToUnknown cenv v env let e3', e3info = OptimizeExpr cenv env e3 // Try to replace F#-style loops with C# style loops that recompute their bounds but which are compiled more efficiently by the JITs, e.g. // F# "for x = 0 to arre.Length - 1 do ..." --> C# "for (int x = 0; x < arre.Length; x++) { ... }" // F# "for x = 0 to 10 do ..." --> C# "for (int x = 0; x < 11; x++) { ... }" let e2', dir = match dir, e2' with // detect upwards for loops with bounds of the form "arr.Length - 1" and convert them to a C#-style for loop | FSharpForLoopUp, Expr.Op(TOp.ILAsm([ (AI_sub | AI_sub_ovf)],_),_,[Expr.Op(TOp.ILAsm([ I_ldlen; (AI_conv DT_I4)],_),_,[arre],_); Expr.Const(Const.Int32 1,_,_)],_) when not (snd(OptimizeExpr cenv env arre)).HasEffect -> mkLdlen cenv.g (e2'.Range) arre, CSharpForLoopUp // detect upwards for loops with constant bounds, but not MaxValue! | FSharpForLoopUp, Expr.Const(Const.Int32 n,_,_) when n < System.Int32.MaxValue -> mkIncr cenv.g (e2'.Range) e2', CSharpForLoopUp | _ -> e2', dir let einfos = [e1info;e2info;e3info] let eff = OrEffects einfos (* neither bounds nor body has an effect, and loops always terminate, hence eliminate the loop *) if not eff then mkUnit cenv.g m , { TotalSize=0; FunctionSize=0; HasEffect=false; MightMakeCriticalTailcall=false; Info=UnknownValue } else let expr' = mkFor cenv.g (spStart,v,e1',dir,e2',e3',m) expr', { TotalSize=AddTotalSizes einfos + forAndWhileLoopSize; FunctionSize=AddFunctionSizes einfos + forAndWhileLoopSize; HasEffect=eff; MightMakeCriticalTailcall=false; Info=UnknownValue } //------------------------------------------------------------------------- // Optimize/analyze a set of recursive bindings //------------------------------------------------------------------------- and OptimizeLetRec cenv env (binds,bodyExpr,m) = if verboseOptimizations then dprintf "OptimizeLetRec\n"; let vs = binds |> FlatList.map (fun v -> v.Var) in let env = BindInternalValsToUnknown cenv vs env let binds',env = OptimizeBindings cenv true env binds let bodyExpr',einfo = OptimizeExpr cenv env bodyExpr // REVIEW: graph analysis to determine which items are unused // Eliminate any unused bindings, as in let case let binds'',bindinfos = let fvs0 = freeInExpr CollectLocals bodyExpr' let fvsN = FlatList.map (fst >> freeInBindingRhs CollectLocals) binds' let fvs = FlatList.fold unionFreeVars fvs0 fvsN SplitValuesByIsUsedOrHasEffect cenv (fun () -> fvs.FreeLocals) binds' // Trim out any optimization info that involves escaping values let evalue' = AbstractExprInfoByVars (FlatList.toList vs,[]) einfo.Info // REVIEW: size of constructing new closures - should probably add #freevars + #recfixups here let bodyExpr' = Expr.LetRec(binds'',bodyExpr',m,NewFreeVarsCache()) let info = CombineValueInfos (einfo :: FlatList.toList bindinfos) evalue' bodyExpr', info //------------------------------------------------------------------------- // Optimize/analyze a linear sequence of sequentioanl execution or 'let' bindings. //------------------------------------------------------------------------- and OptimizeLinearExpr cenv env expr contf = if verboseOptimizations then dprintf "OptimizeLinearExpr\n"; let expr = if cenv.settings.ExpandStructrualValues() then ExpandStructuralBinding cenv expr else expr match expr with | Expr.Sequential (e1,e2,flag,spSeq,m) -> if verboseOptimizations then dprintf "OptimizeLinearExpr: seq\n"; let e1',e1info = OptimizeExpr cenv env e1 OptimizeLinearExpr cenv env e2 (contf << (fun (e2',e2info) -> if (flag = NormalSeq) && // Always eliminate '(); expr' sequences, even in debug code, to ensure that // conditional method calls don't leave a dangling breakpoint (see FSharp 1.0 bug 6034) (cenv.settings.EliminateSequential () || (match e1' with Expr.Const(Const.Unit,_,_) -> true | _ -> false)) && not e1info.HasEffect then e2', e2info else Expr.Sequential(e1',e2',flag,spSeq,m), { TotalSize = e1info.TotalSize + e2info.TotalSize; FunctionSize = e1info.FunctionSize + e2info.FunctionSize; HasEffect = flag <> NormalSeq || e1info.HasEffect || e2info.HasEffect; MightMakeCriticalTailcall = (if flag = NormalSeq then e2info.MightMakeCriticalTailcall else e1info.MightMakeCriticalTailcall || e2info.MightMakeCriticalTailcall) Info = UnknownValue (* can't propagate value: must access result of computation for its effects *) })) | Expr.Let (bind,body,m,_) -> if verboseOptimizations then dprintf "OptimizeLinearExpr: let\n"; let (bind',bindingInfo),env = OptimizeBinding cenv false env bind OptimizeLinearExpr cenv env body (contf << (fun (body',bodyInfo) -> // PERF: This call to ValueIsUsedOrHasEffect/freeInExpr amounts to 9% of all optimization time. // Is it quadratic or quasi-quadtratic? if ValueIsUsedOrHasEffect cenv (fun () -> (freeInExpr CollectLocals body').FreeLocals) (bind',bindingInfo) then (* Eliminate let bindings on the way back up *) let expr',adjust = TryEliminateLet cenv env bind' body' m expr', { TotalSize = bindingInfo.TotalSize + bodyInfo.TotalSize + adjust; FunctionSize = bindingInfo.FunctionSize + bodyInfo.FunctionSize + adjust; HasEffect=bindingInfo.HasEffect || bodyInfo.HasEffect; MightMakeCriticalTailcall = bodyInfo.MightMakeCriticalTailcall; // discard tailcall info from binding - not in tailcall position Info = UnknownValue } else (* On the way back up: Trim out any optimization info that involves escaping values on the way back up *) let evalue' = AbstractExprInfoByVars ([bind'.Var],[]) bodyInfo.Info body', { TotalSize = bindingInfo.TotalSize + bodyInfo.TotalSize - localVarSize (* eliminated a local var *); FunctionSize = bindingInfo.FunctionSize + bodyInfo.FunctionSize - localVarSize (* eliminated a local var *); HasEffect=bindingInfo.HasEffect || bodyInfo.HasEffect; MightMakeCriticalTailcall = bodyInfo.MightMakeCriticalTailcall; // discard tailcall info from binding - not in tailcall position Info = evalue' } )) | LinearMatchExpr (spMatch,exprm,dtree,tg1,e2,spTarget2,m,ty) -> let dtree,dinfo = OptimizeDecisionTree cenv env m dtree let tg1,tg1info = OptimizeDecisionTreeTarget cenv env m tg1 // tailcall OptimizeLinearExpr cenv env e2 (contf << (fun (e2,e2info) -> let e2,e2info = ConsiderSplitToMethod cenv.settings.abstractBigTargets cenv.settings.bigTargetSize cenv env (e2,e2info) let tinfos = [tg1info; e2info] let tgs = [tg1; TTarget([],e2,spTarget2)] RebuildOptimizedMatch (spMatch,exprm,m,ty,dtree,tgs,dinfo,tinfos))) | _ -> contf (OptimizeExpr cenv env expr) //------------------------------------------------------------------------- // Optimize/analyze a try/finally construct. //------------------------------------------------------------------------- and OptimizeTryFinally cenv env (spTry,spFinally,e1,e2,m,ty) = if verboseOptimizations then dprintf "OptimizeTryFinally\n"; let e1',e1info = OptimizeExpr cenv env e1 let e2',e2info = OptimizeExpr cenv env e2 let info = { TotalSize = e1info.TotalSize + e2info.TotalSize + tryFinallySize; FunctionSize = e1info.FunctionSize + e2info.FunctionSize + tryFinallySize; HasEffect = e1info.HasEffect || e2info.HasEffect; MightMakeCriticalTailcall = false; // no tailcalls from inside in try/finally Info = UnknownValue } (* try-finally, so no effect means no exception can be raised, so just sequence the finally *) if cenv.settings.EliminateTryCatchAndTryFinally () && not e1info.HasEffect then let sp = match spTry with | SequencePointAtTry _ -> SequencePointsAtSeq | SequencePointInBodyOfTry -> SequencePointsAtSeq | NoSequencePointAtTry -> SuppressSequencePointOnExprOfSequential Expr.Sequential(e1',e2',ThenDoSeq,sp,m),info else mkTryFinally cenv.g (e1',e2',m,ty,spTry,spFinally), info //------------------------------------------------------------------------- // Optimize/analyze a try/catch construct. //------------------------------------------------------------------------- and OptimizeTryCatch cenv env (e1,vf,ef,vh,eh,m,ty,spTry,spWith) = if verboseOptimizations then dprintf "OptimizeTryCatch\n"; let e1',e1info = OptimizeExpr cenv env e1 // try-catch, so no effect means no exception can be raised, so discard the catch if cenv.settings.EliminateTryCatchAndTryFinally () && not e1info.HasEffect then e1',e1info else let envinner = BindInternalValToUnknown cenv vf (BindInternalValToUnknown cenv vh env) let ef',efinfo = OptimizeExpr cenv envinner ef let eh',ehinfo = OptimizeExpr cenv envinner eh let info = { TotalSize = e1info.TotalSize + efinfo.TotalSize+ ehinfo.TotalSize + tryCatchSize; FunctionSize = e1info.FunctionSize + efinfo.FunctionSize+ ehinfo.FunctionSize + tryCatchSize; HasEffect = e1info.HasEffect || efinfo.HasEffect || ehinfo.HasEffect; MightMakeCriticalTailcall = false; Info = UnknownValue } mkTryWith cenv.g (e1',vf,ef',vh,eh',m,ty,spTry,spWith), info //------------------------------------------------------------------------- // Optimize/analyze a while loop //------------------------------------------------------------------------- and OptimizeWhileLoop cenv env (spWhile,marker,e1,e2,m) = if verboseOptimizations then dprintf "OptimizeWhileLoop\n"; let e1',e1info = OptimizeExpr cenv env e1 let e2',e2info = OptimizeExpr cenv env e2 mkWhile cenv.g (spWhile,marker,e1',e2',m), { TotalSize = e1info.TotalSize + e2info.TotalSize + forAndWhileLoopSize; FunctionSize = e1info.FunctionSize + e2info.FunctionSize + forAndWhileLoopSize; HasEffect = true; (* may not terminate *) MightMakeCriticalTailcall = false; Info = UnknownValue } //------------------------------------------------------------------------- // Optimize/analyze a call to a 'member' constraint. Try to resolve the call to // a witness (should always be possible due to compulsory inlining of any // code that contains calls to member constraints, except when analyzing // not-yet-inlined generic code) //------------------------------------------------------------------------- and OptimizeTraitCall cenv env (traitInfo, args, m) = // Resolve the static overloading early (during the compulsory rewrite phase) so we can inline. match ConstraintSolver.CodegenWitnessThatTypSupportsTraitConstraint cenv.TcVal cenv.g cenv.amap m traitInfo args with | OkResult (_,Some expr) -> OptimizeExpr cenv env expr // Resolution fails when optimizing generic code, ignore the failure | _ -> let args',arginfos = OptimizeExprsThenConsiderSplits cenv env args OptimizeExprOpFallback cenv env (TOp.TraitCall(traitInfo),[],args',m) arginfos UnknownValue //------------------------------------------------------------------------- // Make optimization decisions once we know the optimization information // for a value //------------------------------------------------------------------------- and TryOptimizeVal cenv env (mustInline,valInfoForVal,m) = match valInfoForVal with // Inline all constants immediately | ConstValue (c,ty) -> Some (Expr.Const (c,m,ty)) | SizeValue (_,detail) -> TryOptimizeVal cenv env (mustInline,detail,m) | ValValue (v',detail) -> // Inline values bound to other values immediately match TryOptimizeVal cenv env (mustInline,detail,m) with // Prefer to inline using the more specific info if possible | Some e -> Some e //If the more specific info didn't reveal an inline then use the value | None -> Some(exprForValRef m v') | ConstExprValue(_size,expr) -> if verboseOptimizations then dprintf "Inlining constant expression value at %a\n" outputRange m; Some (remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated expr)) | CurriedLambdaValue (_,_,_,expr,_) when mustInline -> if verboseOptimizations then dprintf "Inlining mustinline-lambda at %a\n" outputRange m; Some (remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated expr)) | TupleValue _ | UnionCaseValue _ | RecdValue _ when mustInline -> failwith "tuple, union and record values cannot be marked 'inline'" | UnknownValue when mustInline -> warning(Error(FSComp.SR.optValueMarkedInlineHasUnexpectedValue(),m)); None | _ when mustInline -> warning(Error(FSComp.SR.optValueMarkedInlineCouldNotBeInlined(),m)); None | _ -> None and TryOptimizeValInfo cenv env m vinfo = if vinfo.HasEffect then None else TryOptimizeVal cenv env (false,vinfo.Info ,m) //------------------------------------------------------------------------- // Add 'v1 = v2' information into the information stored about a value //------------------------------------------------------------------------- and AddValEqualityInfo g m (v:ValRef) info = if v.IsMutable then /// the env assumes known-values do not change info else {info with Info= MakeValueInfoForValue g m v info.Info} //------------------------------------------------------------------------- // Optimize/analyze a use of a value //------------------------------------------------------------------------- and OptimizeVal cenv env expr (v:ValRef,m) = let valInfoForVal = GetInfoForVal cenv env m v match TryOptimizeVal cenv env (v.MustInline,valInfoForVal.ValExprInfo,m) with | Some e -> // don't reoptimize inlined lambdas until they get applied to something match e with | Expr.TyLambda _ | Expr.Lambda _ -> e, (AddValEqualityInfo cenv.g m v { Info=valInfoForVal.ValExprInfo; HasEffect=false; MightMakeCriticalTailcall = false; FunctionSize=10; TotalSize=10}) | _ -> let e,einfo = OptimizeExpr cenv env e e,AddValEqualityInfo cenv.g m v einfo | None -> if v.MustInline then error(Error(FSComp.SR.optFailedToInlineValue(v.DisplayName),m)); expr,(AddValEqualityInfo cenv.g m v { Info=valInfoForVal.ValExprInfo; HasEffect=false; MightMakeCriticalTailcall = false; FunctionSize=1; TotalSize=1}) //------------------------------------------------------------------------- // Attempt to replace an application of a value by an alternative value. //------------------------------------------------------------------------- and StripToNominalTyconRef cenv ty = if isAppTy cenv.g ty then destAppTy cenv.g ty elif isTupleTy cenv.g ty then let tyargs = destTupleTy cenv.g ty mkCompiledTupleTyconRef cenv.g tyargs, tyargs else failwith "StripToNominalTyconRef: unreachable" and CanDevirtualizeApplication cenv v vref ty args = valRefEq cenv.g v vref && not (isUnitTy cenv.g ty) && isAppTy cenv.g ty // Exclusion: Some unions have null as representations && not (IsUnionTypeWithNullAsTrueValue cenv.g (fst(StripToNominalTyconRef cenv ty)).Deref) // If we de-virtualize an operation on structs then we have to take the address of the object argument // Hence we have to actually have the object argument available to us, && (not (isStructTy cenv.g ty) || nonNil args) and TakeAddressOfStructArgumentIfNeeded cenv (vref:ValRef) ty args m = if vref.IsInstanceMember && isStructTy cenv.g ty then match args with | objArg::rest -> // REVIEW: we set NeverMutates. This is valid because we only ever use DevirtualizeApplication to transform // known calls to known generated F# code for CompareTo, Equals and GetHashCode. // If we ever reuse DevirtualizeApplication to transform an arbitrary virtual call into a // direct call then this assumption is not valid. let wrap,objArgAddress = mkExprAddrOfExpr cenv.g true false NeverMutates objArg None m wrap, (objArgAddress::rest) | _ -> // no wrapper, args stay the same (fun x -> x), args else (fun x -> x), args and DevirtualizeApplication cenv env (vref:ValRef) ty tyargs args m = let wrap,args = TakeAddressOfStructArgumentIfNeeded cenv vref ty args m let transformedExpr = wrap (MakeApplicationAndBetaReduce cenv.g (exprForValRef m vref,vref.Type,(if isNil tyargs then [] else [tyargs]),args,m)) OptimizeExpr cenv env transformedExpr and TryDevirtualizeApplication cenv env (f,tyargs,args,m) = match f,tyargs,args with // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericComparisonIntrinsic when type is known // to be augmented with a visible comparison value. // // e.g rewrite // 'LanguagePrimitives.HashCompare.GenericComparisonIntrinsic (x:C) (y:C)' // --> 'x.CompareTo(y:C)' where this is a direct call to the implementation of CompareTo, i.e. // C::CompareTo(C) // not C::CompareTo(obj) // // If C is a struct type then we have to take the address of 'c' | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_comparison_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedCompareToValues with | Some (_,vref) -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | _ -> None | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_comparison_withc_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedCompareToWithComparerValues, args with | Some vref, [comp; x; y] -> // the target takes a tupled argument, so we need to reorder the arg expressions in the // arg list, and create a tuple of y & comp // push the comparer to the end and box the argument let args2 = [x; mkTupledNoTypes cenv.g m [mkCoerceExpr(y,cenv.g.obj_ty,m,ty) ; comp]] Some (DevirtualizeApplication cenv env vref ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityIntrinsic when type is known // to be augmented with a visible equality-without-comparer value. // REVIEW: GenericEqualityIntrinsic (which has no comparer) implements PER semantics (5537: this should be ER semantics) // We are devirtualizing to a Equals(T) method which also implements PER semantics (5537: this should be ER semantics) | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_equality_er_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsValues with | Some (_,vref) -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparerFast | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_equality_withc_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with | Some (_,_,withcEqualsVal), [comp; x; y] -> // push the comparer to the end and box the argument let args2 = [x; mkTupledNoTypes cenv.g m [mkCoerceExpr(y,cenv.g.obj_ty,m,ty) ; comp]] Some (DevirtualizeApplication cenv env withcEqualsVal ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparer | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_equality_per_inner_vref ty args && not(isTupleTy cenv.g ty) -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with | Some (_,_,withcEqualsVal), [x; y] -> let args2 = [x; mkTupledNoTypes cenv.g m [mkCoerceExpr(y,cenv.g.obj_ty,m,ty); (mkCallGetGenericPEREqualityComparer cenv.g m)]] Some (DevirtualizeApplication cenv env withcEqualsVal ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericHashIntrinsic | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_hash_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with | Some (_,withcGetHashCodeVal,_), [x] -> let args2 = [x; mkCallGetGenericEREqualityComparer cenv.g m] Some (DevirtualizeApplication cenv env withcGetHashCodeVal ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic | Expr.Val(v,_,_),[ty],_ when CanDevirtualizeApplication cenv v cenv.g.generic_hash_withc_inner_vref ty args -> let tcref,tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with | Some (_,withcGetHashCodeVal,_), [comp; x] -> let args2 = [x; comp] Some (DevirtualizeApplication cenv env withcGetHashCodeVal ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic for tuple types | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_comparison_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_compare_withc_tuple2_vref | 3 -> Some cenv.g.generic_compare_withc_tuple3_vref | 4 -> Some cenv.g.generic_compare_withc_tuple4_vref | 5 -> Some cenv.g.generic_compare_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs (mkCallGetGenericComparer cenv.g m :: args) m) | None -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic for tuple types | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_hash_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_hash_withc_tuple2_vref | 3 -> Some cenv.g.generic_hash_withc_tuple3_vref | 4 -> Some cenv.g.generic_hash_withc_tuple4_vref | 5 -> Some cenv.g.generic_hash_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs (mkCallGetGenericEREqualityComparer cenv.g m :: args) m) | None -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityIntrinsic for tuple types // REVIEW (5537): GenericEqualityIntrinsic implements PER semantics, and we are replacing it to something also // implementing PER semantics. However GenericEqualityIntrinsic should implement ER semantics. | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_equality_per_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_equals_withc_tuple2_vref | 3 -> Some cenv.g.generic_equals_withc_tuple3_vref | 4 -> Some cenv.g.generic_equals_withc_tuple4_vref | 5 -> Some cenv.g.generic_equals_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs (mkCallGetGenericPEREqualityComparer cenv.g m :: args) m) | None -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic for tuple types | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_comparison_withc_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_compare_withc_tuple2_vref | 3 -> Some cenv.g.generic_compare_withc_tuple3_vref | 4 -> Some cenv.g.generic_compare_withc_tuple4_vref | 5 -> Some cenv.g.generic_compare_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | None -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic for tuple types | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_hash_withc_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_hash_withc_tuple2_vref | 3 -> Some cenv.g.generic_hash_withc_tuple3_vref | 4 -> Some cenv.g.generic_hash_withc_tuple4_vref | 5 -> Some cenv.g.generic_hash_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | None -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic for tuple types | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.generic_equality_withc_inner_vref && isTupleTy cenv.g ty -> let tyargs = destTupleTy cenv.g ty let vref = match tyargs.Length with | 2 -> Some cenv.g.generic_equals_withc_tuple2_vref | 3 -> Some cenv.g.generic_equals_withc_tuple3_vref | 4 -> Some cenv.g.generic_equals_withc_tuple4_vref | 5 -> Some cenv.g.generic_equals_withc_tuple5_vref | _ -> None match vref with | Some vref -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | None -> None // Calls to LanguagePrimitives.IntrinsicFunctions.UnboxGeneric can be optimized to calls to UnboxFast when we know that the // target type isn't 'NullNotLiked', i.e. that the target type is not an F# union, record etc. // Note UnboxFast is just the .NET IL 'unbox.any' instruction. | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.unbox_vref && canUseUnboxFast cenv.g ty -> Some(DevirtualizeApplication cenv env cenv.g.unbox_fast_vref ty tyargs args m) // Calls to LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric can be optimized to calls to TypeTestFast when we know that the // target type isn't 'NullNotTrueValue', i.e. that the target type is not an F# union, record etc. // Note TypeTestFast is just the .NET IL 'isinst' instruction followed by a non-null comparison | Expr.Val(v,_,_),[ty],_ when valRefEq cenv.g v cenv.g.istype_vref && canUseTypeTestFast cenv.g ty -> Some(DevirtualizeApplication cenv env cenv.g.istype_fast_vref ty tyargs args m) // Don't fiddle with 'methodhandleof' calls - just remake the application | Expr.Val(vref,_,_),_,_ when valRefEq cenv.g vref cenv.g.methodhandleof_vref -> Some( MakeApplicationAndBetaReduce cenv.g (exprForValRef m vref,vref.Type,(if isNil tyargs then [] else [tyargs]),args,m), { TotalSize=1; FunctionSize=1 HasEffect=false; MightMakeCriticalTailcall = false; Info=UnknownValue}) | _ -> None /// Attempt to inline an application of a known value at callsites and TryInlineApplication cenv env (_f0',finfo) (tyargs: TType list,args: Expr list,m) = if verboseOptimizations then dprintf "Considering inlining app near %a\n" outputRange m; match finfo.Info with | StripLambdaValue (lambdaId,arities,size,f2,f2ty) when (if verboseOptimizations then dprintf "Considering inlining lambda near %a, size = %d, finfo.HasEffect = %b\n" outputRange m size finfo.HasEffect; cenv.optimizing && cenv.settings.InlineLambdas () && not finfo.HasEffect && // Don't inline recursively! not (Zset.contains lambdaId env.dontInline) && (// Check the number of argument groups is enough to saturate the lambdas of the target. (if tyargs |> List.filter (fun t -> match t with TType_measure _ -> false | _ -> true) |> isNil then 0 else 1) + args.Length = arities && (if verboseOptimizations then dprintn "Enough args"; (if size > cenv.settings.lambdaInlineThreshold + args.Length then if verboseOptimizations then dprintf "Not inlining lambda near %a because size = %d\n" outputRange m size; false else true)))) -> let isBaseCall = args.Length > 0 && match args.[0] with | Expr.Val(vref,_,_) when vref.BaseOrThisInfo = BaseVal -> true | _ -> false // Since Lazy`1 moved from FSharp.Core to mscorlib on .NET 4.0, inlining Lazy values from 2.0 will // confuse the optimizer if the assembly is referenced on 4.0, since there will be no value to tie back // to FSharp.Core let isValFromLazyExtensions = if cenv.g.compilingFslib then false else match finfo.Info with | ValValue(vref,_) -> match vref.ApparentParent with | Parent(tcr) when (tyconRefEq cenv.g cenv.g.lazy_tcr_canon tcr) -> match tcr.CompiledRepresentation with | CompiledTypeRepr.ILAsmNamed(iltr,_,_) -> iltr.Scope.AssemblyRef.Name = "FSharp.Core" | _ -> false | _ -> false | _ -> false let isSecureMethod = match finfo.Info with | ValValue(vref,_) -> vref.Attribs |> List.exists (fun a -> (IsSecurityAttribute cenv.g cenv.amap cenv.casApplied a m) || (IsSecurityCriticalAttribute cenv.g a)) | _ -> false if isBaseCall || isSecureMethod || isValFromLazyExtensions then None else if verboseOptimizations then dprintf "Inlining lambda near %a\n" outputRange m; (* ---------- printf "Inlining lambda near %a = %s\n" outputRange m (showL (exprL f2)); (* JAMES: *) ----------*) let f2' = remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated f2) if verboseOptimizations then dprintf "--- TryInlineApplication, optimizing arguments\n"; // REVIEW: this is a cheapshot way of optimizing the arg expressions as well without the restriction of recursive // inlining kicking into effect let args' = args |> List.map (fun e -> let e',_einfo = OptimizeExpr cenv env e in e') // Beta reduce. MakeApplicationAndBetaReduce cenv.g does all the hard work. if verboseOptimizations then dprintf "--- TryInlineApplication, beta reducing \n"; let expr' = MakeApplicationAndBetaReduce cenv.g (f2',f2ty,[tyargs],args',m) if verboseOptimizations then dprintf "--- TryInlineApplication, reoptimizing\n"; Some (OptimizeExpr cenv {env with dontInline= Zset.add lambdaId env.dontInline} expr') | _ -> None //------------------------------------------------------------------------- // Optimize/analyze an application of a function to type and term arguments //------------------------------------------------------------------------- and OptimizeApplication cenv env (f0,f0ty,tyargs,args,m) = if verboseOptimizations then dprintf "--> OptimizeApplication\n"; let f0',finfo = OptimizeExpr cenv env f0 if verboseOptimizations then dprintf "--- OptimizeApplication, trying to devirtualize\n"; match TryDevirtualizeApplication cenv env (f0,tyargs,args,m) with | Some res -> if verboseOptimizations then dprintf "<-- OptimizeApplication, devirtualized\n"; res | None -> match TryInlineApplication cenv env (f0',finfo) (tyargs,args,m) with | Some res -> if verboseOptimizations then dprintf "<-- OptimizeApplication, inlined\n"; res | None -> let shapes = match f0' with | Expr.Val(vref,_,_) when isSome vref.ValReprInfo -> let (ValReprInfo(_kinds,detupArgsL,_)) = Option.get vref.ValReprInfo let nargs = (args.Length) let nDetupArgsL = detupArgsL.Length let nShapes = min nargs nDetupArgsL let detupArgsShapesL = List.take nShapes detupArgsL |> List.map (fun detupArgs -> match detupArgs with | [] | [_] -> UnknownValue | _ -> TupleValue(Array.ofList (List.map (fun _ -> UnknownValue) detupArgs))) detupArgsShapesL @ List.replicate (nargs - nShapes) UnknownValue | _ -> args |> List.map (fun _ -> UnknownValue) let args',arginfos = OptimizeExprsThenReshapeAndConsiderSplits cenv env (List.zip shapes args) if verboseOptimizations then dprintf "<-- OptimizeApplication, beta reducing\n"; let expr' = MakeApplicationAndBetaReduce cenv.g (f0',f0ty, [tyargs],args',m) match f0', expr' with | (Expr.Lambda _ | Expr.TyLambda _), Expr.Let _ -> // we beta-reduced, hence reoptimize if verboseOptimizations then dprintf "<-- OptimizeApplication, beta reduced\n"; OptimizeExpr cenv env expr' | _ -> if verboseOptimizations then dprintf "<-- OptimizeApplication, regular\n"; // Determine if this application is a critical tailcall let mayBeCriticalTailcall = match f0' with | KnownValApp(vref,_typeArgs,otherArgs) -> // Check if this is a call to a function of known arity that has been inferred to not be a critical tailcall when used as a direct call // This includes recursive calls to the function being defined (in which case we get a non-critical, closed-world tailcall). // Note we also have to check the argument count to ensure this is a direct call (or a partial application). let doesNotMakeCriticalTailcall = vref.MakesNoCriticalTailcalls || (let valInfoForVal = GetInfoForVal cenv env m vref in valInfoForVal.ValMakesNoCriticalTailcalls) || (match env.functionVal with | None -> false | Some (v,_) -> valEq vref.Deref v) if doesNotMakeCriticalTailcall then let numArgs = otherArgs.Length + args'.Length match vref.ValReprInfo with | Some i -> numArgs > i.NumCurriedArgs | None -> match env.functionVal with | Some (_v,i) -> numArgs > i.NumCurriedArgs | None -> true // over-applicaiton of a known function, which presumably returns a function. This counts as an indirect call else true // application of a function that may make a critical tailcall | _ -> // All indirect calls (calls to unknown functions) are assumed to be critical tailcalls true expr', { TotalSize=finfo.TotalSize + AddTotalSizes arginfos; FunctionSize=finfo.FunctionSize + AddFunctionSizes arginfos; HasEffect=true; MightMakeCriticalTailcall = mayBeCriticalTailcall; Info=ValueOfExpr expr' } //------------------------------------------------------------------------- // Optimize/analyze a lambda expression //------------------------------------------------------------------------- and OptimizeLambdas (vspec: Val option) cenv env topValInfo e ety = if verboseOptimizations then dprintf "OptimizeLambdas, #argsl = %d, %a\n" topValInfo.NumCurriedArgs outputRange (e.Range) ; match e with | Expr.Lambda (lambdaId,_,_,_,_,m,_) | Expr.TyLambda(lambdaId,_,_,m,_) -> let isTopLevel = isSome vspec && vspec.Value.IsCompiledAsTopLevel let tps,ctorThisValOpt,baseValOpt,vsl,body,bodyty = IteratedAdjustArityOfLambda cenv.g cenv.amap topValInfo e let env = { env with functionVal = (match vspec with None -> None | Some v -> Some (v,topValInfo)) } let env = Option.foldBack (BindInternalValToUnknown cenv) ctorThisValOpt env let env = Option.foldBack (BindInternalValToUnknown cenv) baseValOpt env let env = BindTypeVarsToUnknown tps env let env = List.foldBack (BindInternalValsToUnknown cenv) vsl env let env = BindInternalValsToUnknown cenv (Option.toList baseValOpt) env let body',bodyinfo = OptimizeExpr cenv env body let expr' = mkMemberLambdas m tps ctorThisValOpt baseValOpt vsl (body',bodyty) let arities = vsl.Length let arities = if isNil tps then arities else 1+arities let bsize = bodyinfo.TotalSize if verboseOptimizations then dprintf "lambda @ %a, bsize = %d\n" outputRange m bsize; /// Set the flag on the value indicating that direct calls can avoid a tailcall (which are expensive on .NET x86) /// MightMakeCriticalTailcall is true whenever the body of the method may itself do a useful tailcall, e.g. has /// an application in the last position. match vspec with | Some v -> if not bodyinfo.MightMakeCriticalTailcall then v.SetMakesNoCriticalTailcalls() // UNIT TEST HOOK: report analysis results for the first optimization phase if cenv.settings.reportingPhase && not v.IsCompilerGenerated then if cenv.settings.reportNoNeedToTailcall then if bodyinfo.MightMakeCriticalTailcall then printfn "value %s at line %d may make a critical tailcall" v.DisplayName v.Range.StartLine else printfn "value %s at line %d does not make a critical tailcall" v.DisplayName v.Range.StartLine if cenv.settings.reportTotalSizes then printfn "value %s at line %d has total size %d" v.DisplayName v.Range.StartLine bodyinfo.TotalSize if cenv.settings.reportFunctionSizes then printfn "value %s at line %d has method size %d" v.DisplayName v.Range.StartLine bodyinfo.FunctionSize if cenv.settings.reportHasEffect then if bodyinfo.HasEffect then printfn "function %s at line %d causes side effects or may not terminate" v.DisplayName v.Range.StartLine else printfn "function %s at line %d causes no side effects" v.DisplayName v.Range.StartLine | _ -> () // can't inline any values with semi-recursive object references to self or base let valu = match baseValOpt with | None -> CurriedLambdaValue (lambdaId,arities,bsize,expr',ety) | _ -> UnknownValue expr', { TotalSize=bsize + (if isTopLevel then methodDefnTotalSize else closureTotalSize); (* estimate size of new syntactic closure - expensive, in contrast to a method *) FunctionSize=1; HasEffect=false; MightMakeCriticalTailcall = false; Info= valu; } | _ -> OptimizeExpr cenv env e //------------------------------------------------------------------------- // Recursive calls that first try to make an expression "fit" the a shape // where it is about to be consumed. //------------------------------------------------------------------------- and OptimizeExprsThenReshapeAndConsiderSplits cenv env exprs = match exprs with | [] -> NoExprs | _ -> OptimizeList (OptimizeExprThenReshapeAndConsiderSplit cenv env) exprs and OptimizeExprsThenConsiderSplits cenv env exprs = match exprs with | [] -> NoExprs | _ -> OptimizeList (OptimizeExprThenConsiderSplit cenv env) exprs and OptimizeFlatExprsThenConsiderSplits cenv env (exprs:FlatExprs) = if FlatList.isEmpty exprs then NoFlatExprs else OptimizeFlatList (OptimizeExprThenConsiderSplit cenv env) exprs and OptimizeExprThenReshapeAndConsiderSplit cenv env (shape,e) = OptimizeExprThenConsiderSplit cenv env (ReshapeExpr cenv (shape,e)) and OptimizeDecisionTreeTargets cenv env m targets = OptimizeList (OptimizeDecisionTreeTarget cenv env m) (Array.toList targets) and ReshapeExpr cenv (shape,e) = match shape,e with | TupleValue(subshapes), Expr.Val(_vref,_vFlags,m) -> let tinst = destTupleTy cenv.g (tyOfExpr cenv.g e) mkTupled cenv.g m (List.mapi (fun i subshape -> ReshapeExpr cenv (subshape,mkTupleFieldGet(e,tinst,i,m))) (Array.toList subshapes)) tinst | _ -> e and OptimizeExprThenConsiderSplit cenv env e = let e',einfo = OptimizeExpr cenv env e // ALWAYS consider splits for enormous sub terms here - otherwise we will create invalid .NET programs ConsiderSplitToMethod true cenv.settings.veryBigExprSize cenv env (e',einfo) //------------------------------------------------------------------------- // Decide whether to List.unzip a sub-expression into a new method //------------------------------------------------------------------------- and ComputeSplitToMethodCondition flag threshold cenv env (e,einfo) = flag && // REVIEW: The method splitting optimization is compeltely disabled if we are not taking tailcalls. // REVIEW: This should only apply to methods that actually make self-tailcalls (tested further below). // Old comment "don't mess with taking guaranteed tailcalls if used with --no-tailcalls!" cenv.emitTailcalls && einfo.FunctionSize >= threshold && // We can only split an expression out as a method if certain conditions are met. // It can't use any protected or base calls, rethrow(), byrefs etc. (let fvs = freeInExpr CollectLocals e not fvs.UsesUnboundRethrow && not fvs.UsesMethodLocalConstructs && fvs.FreeLocals |> Zset.forall (fun v -> // no direct-self-recursive refrences not (env.dontSplitVars.ContainsVal v) && (v.ValReprInfo.IsSome || // All the free variables (apart from things with an arity, i.e. compiled as methods) should be normal, i.e. not base/this etc. (v.BaseOrThisInfo = NormalVal && // None of them should be byrefs not (isByrefLikeTy cenv.g v.Type) && // None of them should be local polymorphic constrained values not (IsGenericValWithGenericContraints cenv.g v) && // None of them should be mutable not v.IsMutable)))) and ConsiderSplitToMethod flag threshold cenv env (e,einfo) = if ComputeSplitToMethodCondition flag threshold cenv env (e,einfo) then let m = (e.Range) let uv,_ue = mkCompGenLocal m "unitVar" cenv.g.unit_ty let ty = tyOfExpr cenv.g e let nm = match env.latestBoundId with | Some id -> id.idText^suffixForVariablesThatMayNotBeEliminated | None -> suffixForVariablesThatMayNotBeEliminated let fv,fe = mkCompGenLocal m nm (cenv.g.unit_ty --> ty) mkInvisibleLet m fv (mkLambda m uv (e,ty)) (primMkApp (fe,(cenv.g.unit_ty --> ty)) [] [mkUnit cenv.g m] m), {einfo with FunctionSize=callSize } else e,einfo //------------------------------------------------------------------------- // Optimize/analyze a pattern matching expression //------------------------------------------------------------------------- and OptimizeMatch cenv env (spMatch,exprm,dtree,targets,m, ty) = if verboseOptimizations then dprintf "OptimizeMatch\n"; // REVIEW: consider collecting, merging and using information flowing through each line of the decision tree to each target let dtree',dinfo = OptimizeDecisionTree cenv env m dtree let targets',tinfos = OptimizeDecisionTreeTargets cenv env m targets RebuildOptimizedMatch (spMatch,exprm,m,ty,dtree',targets',dinfo,tinfos) and CombineMatchInfos dinfo tinfo = { TotalSize = dinfo.TotalSize + tinfo.TotalSize; FunctionSize = dinfo.FunctionSize + tinfo.FunctionSize; HasEffect = dinfo.HasEffect || tinfo.HasEffect; MightMakeCriticalTailcall=tinfo.MightMakeCriticalTailcall; // discard tailcall info from decision tree since it's not in tailcall position Info= UnknownValue } and RebuildOptimizedMatch (spMatch,exprm,m,ty,dtree,tgs,dinfo,tinfos) = let tinfo = CombineValueInfosUnknown tinfos let expr = mkAndSimplifyMatch spMatch exprm m ty dtree tgs let einfo = CombineMatchInfos dinfo tinfo expr, einfo //------------------------------------------------------------------------- // Optimize/analyze a target of a decision tree //------------------------------------------------------------------------- and OptimizeDecisionTreeTarget cenv env _m (TTarget(vs,e,spTarget)) = if verboseOptimizations then dprintf "OptimizeDecisionTreeTarget\n"; (* REVIEW: this is where we should be using information collected for each target *) let env = BindInternalValsToUnknown cenv vs env let e',einfo = OptimizeExpr cenv env e let e',einfo = ConsiderSplitToMethod cenv.settings.abstractBigTargets cenv.settings.bigTargetSize cenv env (e',einfo) let evalue' = AbstractExprInfoByVars (FlatList.toList vs,[]) einfo.Info TTarget(vs,e',spTarget), { TotalSize=einfo.TotalSize; FunctionSize=einfo.FunctionSize; HasEffect=einfo.HasEffect; MightMakeCriticalTailcall = einfo.MightMakeCriticalTailcall; Info=evalue' } //------------------------------------------------------------------------- // Optimize/analyze a decision tree //------------------------------------------------------------------------- and OptimizeDecisionTree cenv env m x = match x with | TDSuccess (es,n) -> let es', einfos = OptimizeFlatExprsThenConsiderSplits cenv env es TDSuccess(es',n),CombineFlatValueInfosUnknown einfos | TDBind(bind,rest) -> let (bind,binfo),envinner = OptimizeBinding cenv false env bind let rest,rinfo = OptimizeDecisionTree cenv envinner m rest if ValueIsUsedOrHasEffect cenv (fun () -> (accFreeInDecisionTree CollectLocals rest emptyFreeVars).FreeLocals) (bind,binfo) then let info = CombineValueInfosUnknown [rinfo;binfo] // try to fold the let-binding into a single result expression match rest with | TDSuccess(es,n) when es.Length = 1 -> let e = es.[0] let e,_adjust = TryEliminateLet cenv env bind e m TDSuccess(FlatList.one e,n),info | _ -> TDBind(bind,rest),info else rest,rinfo | TDSwitch (e,cases,dflt,m) -> // We always duplicate boolean-typed guards prior to optimizing. This is work which really should be done in patcompile.fs // where we must duplicate "when" expressions to ensure uniqueness of bound variables. // // However, we are not allowed to copy expressions in patcompile.fs because type checking is not complete (see FSharp 1.0 bug 4821). // Hence we do it here. There is no doubt a better way to do this. let e = if typeEquiv cenv.g (tyOfExpr cenv.g e) cenv.g.bool_ty then copyExpr cenv.g CloneAll e else e OptimizeSwitch cenv env (e,cases,dflt,m) and TryOptimizeDecisionTreeTest cenv test vinfo = match test,vinfo with | Test.UnionCase (c1,_), StripUnionCaseValue(c2,_) -> Some(cenv.g.unionCaseRefEq c1 c2) | Test.ArrayLength (_,_), _ -> None | Test.Const c1,StripConstValue(c2) -> if c1 = Const.Zero || c2 = Const.Zero then None else Some(c1=c2) | Test.IsNull,StripConstValue(c2) -> Some(c2=Const.Zero) | Test.IsInst (_srcty1,_tgty1), _ -> None // These should not occur in optimization | Test.ActivePatternCase (_,_,_vrefOpt1,_,_),_ -> None | _ -> None /// Optimize/analyze a switch construct from pattern matching and OptimizeSwitch cenv env (e,cases,dflt,m) = if verboseOptimizations then dprintf "OptimizeSwitch\n"; let e', einfo = OptimizeExpr cenv env e let cases,dflt = if cenv.settings.EliminateSwitch() && not einfo.HasEffect then // Attempt to find a definite success, i.e. the first case where there is definite success match (List.tryFind (function (TCase(d2,_)) when TryOptimizeDecisionTreeTest cenv d2 einfo.Info = Some(true) -> true | _ -> false) cases) with | Some(TCase(_,case)) -> [],Some(case) | _ -> // Filter definite failures cases |> List.filter (function (TCase(d2,_)) when TryOptimizeDecisionTreeTest cenv d2 einfo.Info = Some(false) -> false | _ -> true), dflt else cases,dflt // OK, see what we're left with and continue match cases,dflt with | [],Some case -> OptimizeDecisionTree cenv env m case | _ -> OptimizeSwitchFallback cenv env (e', einfo, cases,dflt,m) and OptimizeSwitchFallback cenv env (e', einfo, cases,dflt,m) = let cases',cinfos = List.unzip (List.map (fun (TCase(discrim,e)) -> let e',einfo = OptimizeDecisionTree cenv env m e in TCase(discrim,e'),einfo) cases) let dflt',dinfos = match dflt with None -> None,[] | Some df -> let df',einfo = OptimizeDecisionTree cenv env m df in Some df',[einfo] let size = (dinfos.Length + cinfos.Length) * 2 let info = CombineValueInfosUnknown (einfo :: cinfos @ dinfos) let info = { info with TotalSize = info.TotalSize + size; FunctionSize = info.FunctionSize + size; } TDSwitch (e',cases',dflt',m),info and OptimizeBinding cenv isRec env (TBind(v,e,spBind)) = try if verboseOptimizations then dprintf "OptimizeBinding\n"; // The aim here is to stop method splitting for direct-self-tailcalls. We do more than that: if an expression // occurs in the body of recursively defined values RVS, then we refuse to split // any expression that contains a reference to any value in RVS. // This doesn't prevent splitting for mutually recursive references. See FSharp 1.0 bug 2892. let env = if isRec then { env with dontSplitVars = env.dontSplitVars.Add v () } else env let repr',einfo = let env = if v.IsCompilerGenerated && isSome env.latestBoundId then env else {env with latestBoundId=Some v.Id} let cenv = if v.InlineInfo = ValInline.PseudoVal then { cenv with optimizing=false} else cenv let e',einfo = OptimizeLambdas (Some v) cenv env (InferArityOfExprBinding cenv.g v e) e v.Type let size = localVarSize e',{einfo with FunctionSize=einfo.FunctionSize+size; TotalSize = einfo.TotalSize+size} // Trim out optimization information for large lambdas we'll never inline // Trim out optimization information for expressions that call protected members let rec cut ivalue = match ivalue with | CurriedLambdaValue (_, arities, size, body,_) -> if size > (cenv.settings.lambdaInlineThreshold + arities + 2) then if verboseOptimizations then dprintf "Discarding lambda for binding %s, size = %d, m = %a\n" v.LogicalName size outputRange body.Range; UnknownValue (* trim large *) else let fvs = freeInExpr CollectLocals body if fvs.UsesMethodLocalConstructs then if verboseOptimizations then dprintf "Discarding lambda for binding %s because uses protected members, m = %a\n" v.LogicalName outputRange body.Range; UnknownValue (* trim protected *) else ivalue | ValValue(v,x) -> ValValue(v,cut x) | TupleValue a -> TupleValue(Array.map cut a) | RecdValue (tcref,a) -> RecdValue(tcref,Array.map cut a) | UnionCaseValue (a,b) -> UnionCaseValue (a,Array.map cut b) | UnknownValue | ConstValue _ | ConstExprValue _ -> ivalue | SizeValue(_,a) -> MakeSizedValueInfo (cut a) let einfo = if v.MustInline then einfo else {einfo with Info = cut einfo.Info } let einfo = if (not v.MustInline && not (cenv.settings.KeepOptimizationValues())) || // Bug 4916: do not record inline data for initialization trigger expressions // Note: we can't eliminate these value infos at the file boundaries because that would change initialization // order IsCompiledAsStaticPropertyWithField cenv.g v || (v.InlineInfo = ValInline.Never) || // MarshalByRef methods may not be inlined (match v.ActualParent with | Parent tcref -> // Check we can deref system_MarshalByRefObject_tcref. When compiling against the Silverlight mscorlib we can't cenv.g.system_MarshalByRefObject_tcref.TryDeref.IsSome && // Check if this is a subtype of MarshalByRefObject ExistsSameHeadTypeInHierarchy cenv.g cenv.amap v.Range (generalizedTyconRef tcref) cenv.g.system_MarshalByRefObject_typ | ParentNone -> false) || // These values are given a special going-over by the optimizer and // ilxgen.fs, hence treat them as if no-inline (when preparing the inline information for // FSharp.Core). (let nvref = mkLocalValRef v cenv.g.compilingFslib && (valRefEq cenv.g nvref cenv.g.seq_vref || valRefEq cenv.g nvref cenv.g.seq_generated_vref || valRefEq cenv.g nvref cenv.g.seq_finally_vref || valRefEq cenv.g nvref cenv.g.seq_using_vref || valRefEq cenv.g nvref cenv.g.seq_append_vref || valRefEq cenv.g nvref cenv.g.seq_empty_vref || valRefEq cenv.g nvref cenv.g.seq_delay_vref || valRefEq cenv.g nvref cenv.g.seq_singleton_vref || valRefEq cenv.g nvref cenv.g.seq_map_vref || valRefEq cenv.g nvref cenv.g.seq_collect_vref || valRefEq cenv.g nvref cenv.g.reference_equality_inner_vref || valRefEq cenv.g nvref cenv.g.generic_comparison_inner_vref || valRefEq cenv.g nvref cenv.g.generic_comparison_withc_inner_vref || valRefEq cenv.g nvref cenv.g.generic_equality_er_inner_vref || valRefEq cenv.g nvref cenv.g.generic_equality_per_inner_vref || valRefEq cenv.g nvref cenv.g.generic_equality_withc_inner_vref || valRefEq cenv.g nvref cenv.g.generic_hash_inner_vref)) then {einfo with Info=UnknownValue} else einfo if v.MustInline && IsPartialExprVal einfo.Info then errorR(InternalError("the mustinline value '"^v.LogicalName^"' was not inferred to have a known value",v.Range)); if verboseOptimizations then dprintf "val %s gets opt info %s\n" (showL(valL v)) (showL(exprValueInfoL cenv.g einfo.Info)); let env = BindInternalLocalVal cenv v (mkValInfo einfo v) env (TBind(v,repr',spBind), einfo), env with exn -> errorRecovery exn v.Range; raise (ReportedError (Some exn)) and OptimizeBindings cenv isRec env xs = FlatList.mapFold (OptimizeBinding cenv isRec) env xs and OptimizeModuleExpr cenv env x = match x with | ModuleOrNamespaceExprWithSig(mty,def,m) -> // Optimize the module implementation let (def,info),(_env,bindInfosColl) = OptimizeModuleDef cenv (env,[]) def let bindInfosColl = List.concat bindInfosColl // Compute the elements truly hidden by the module signature. // The hidden set here must contain NOT MORE THAN the set of values made inaccessible by // the application of the signature. If it contains extra elements we'll accidentally eliminate // bindings. let (_renaming, hidden) as rpi = ComputeRemappingFromImplementationToSignature cenv.g def mty let def = if not (cenv.settings.localOpt()) then def else let fvs = freeInModuleOrNamespace CollectLocals def let dead = bindInfosColl |> List.filter (fun (bind,binfo) -> // Check the expression has no side effect, e.g. is a lambda expression (a function definition) not (ValueIsUsedOrHasEffect cenv (fun () -> fvs.FreeLocals) (bind,binfo)) && // Check the thing is hidden by the signature (if any) hidden.mhiVals.Contains bind.Var && // Check the thing is not compiled as a static field or property, since reflected definitions and other reflective stuff might need it not (IsCompiledAsStaticProperty cenv.g bind.Var)) if verboseOptimizations then dead |> List.iter (fun (bind,_) -> dprintf "dead, hidden, buried, gone: %s\n" (showL (vspecAtBindL bind.Var))); let deadSet = Zset.addList (dead |> List.map (fun (bind,_) -> bind.Var)) (Zset.empty valOrder) // Eliminate dead private bindings from a module type by mutation. Note that the optimizer doesn't // actually copy the entire term - it copies the expression portions of the term and leaves the // value_spec and entity_specs in place. However this means that the value_specs and entity specs // need to be updated when a change is made that affects them, e.g. when a binding is eliminated. // We'd have to do similar tricks if the type of variable is changed (as happens in TLR, which also // uses mutation), or if we eliminated a type constructor. // // It may be wise to move to a non-mutating implementation at some point here. Copying expressions is // probably more costly than copying specs anyway. let rec elimModTy (mtyp:ModuleOrNamespaceType) = let mty = new ModuleOrNamespaceType(kind=mtyp.ModuleOrNamespaceKind, vals= (mtyp.AllValsAndMembers |> QueueList.filter (Zset.memberOf deadSet >> not)), entities= mtyp.AllEntities) mtyp.ModuleAndNamespaceDefinitions |> List.iter (fun mspec -> elimModSpec mspec) mty; and elimModSpec (mspec:ModuleOrNamespace) = let mtyp = elimModTy mspec.ModuleOrNamespaceType mspec.Data.entity_modul_contents <- notlazy mtyp let rec elimModDef x = match x with | TMDefRec(tycons,vbinds,mbinds,m) -> let vbinds = vbinds |> FlatList.filter (fun b -> b.Var |> Zset.memberOf deadSet |> not) let mbinds = mbinds |> List.map elim_mbind TMDefRec(tycons,vbinds,mbinds,m) | TMDefLet(bind,m) -> if Zset.contains bind.Var deadSet then TMDefRec([],FlatList.empty,[],m) else x | TMDefDo _ -> x | TMDefs(defs) -> TMDefs(List.map elimModDef defs) | TMAbstract _ -> x and elim_mbind (ModuleOrNamespaceBinding(mspec, d)) = // Clean up the ModuleOrNamespaceType by mutation elimModSpec mspec; ModuleOrNamespaceBinding(mspec,elimModDef d) elimModDef def let info = AbstractAndRemapModulInfo "defs" cenv.g m rpi info ModuleOrNamespaceExprWithSig(mty,def,m),info and mkValBind (bind:Binding) info = (mkLocalValRef bind.Var, info) and OptimizeModuleDef cenv (env,bindInfosColl) x = match x with | TMDefRec(tycons,binds,mbinds,m) -> let env = BindInternalValsToUnknown cenv (valsOfBinds binds) env let bindInfos,env = OptimizeBindings cenv true env binds let binds', binfos = FlatList.unzip bindInfos let mbindInfos,(env,bindInfosColl) = OptimizeModuleBindings cenv (env,bindInfosColl) mbinds let mbinds,minfos = List.unzip mbindInfos (* REVIEW: Eliminate let bindings on the way back up *) (TMDefRec(tycons,binds',mbinds,m), notlazy { ValInfos= ValInfos(FlatList.map2 (fun bind binfo -> mkValBind bind (mkValInfo binfo bind.Var)) binds binfos); ModuleOrNamespaceInfos = NameMap.ofList minfos}), (env,(FlatList.toList bindInfos :: bindInfosColl)) | TMAbstract(mexpr) -> let mexpr,info = OptimizeModuleExpr cenv env mexpr let env = BindValsInModuleOrNamespace cenv info env (TMAbstract(mexpr),info),(env,bindInfosColl) | TMDefLet(bind,m) -> let ((bind',binfo) as bindInfo),env = OptimizeBinding cenv false env bind (* REVIEW: Eliminate unused let bindings from modules *) (TMDefLet(bind',m), notlazy { ValInfos=ValInfos [mkValBind bind (mkValInfo binfo bind.Var)]; ModuleOrNamespaceInfos = NameMap.ofList []}), (env ,([bindInfo]::bindInfosColl)) | TMDefDo(e,m) -> let (e,_einfo) = OptimizeExpr cenv env e (TMDefDo(e,m),EmptyModuleInfo), (env ,bindInfosColl) | TMDefs(defs) -> let (defs,info),(env,bindInfosColl) = OptimizeModuleDefs cenv (env,bindInfosColl) defs (TMDefs(defs), info), (env,bindInfosColl) and OptimizeModuleBindings cenv (env,bindInfosColl) xs = List.mapFold (OptimizeModuleBinding cenv) (env,bindInfosColl) xs and OptimizeModuleBinding cenv (env,bindInfosColl) (ModuleOrNamespaceBinding(mspec, def)) = let id = mspec.Id let (def,info),(_,bindInfosColl) = OptimizeModuleDef cenv (env,bindInfosColl) def let env = BindValsInModuleOrNamespace cenv info env (ModuleOrNamespaceBinding(mspec,def),(id.idText, info)), (env,bindInfosColl) and OptimizeModuleDefs cenv (env,bindInfosColl) defs = if verboseOptimizations then dprintf "OptimizeModuleDefs\n"; let defs,(env,bindInfosColl) = List.mapFold (OptimizeModuleDef cenv) (env,bindInfosColl) defs let defs,minfos = List.unzip defs (defs,UnionModuleInfos minfos),(env,bindInfosColl) and OptimizeImplFileInternal cenv env isIncrementalFragment (TImplFile(qname, pragmas, (ModuleOrNamespaceExprWithSig(mty,_,_) as mexpr), hasExplicitEntryPoint,isScript)) = let env,mexpr',minfo = match mexpr with // FSI: FSI compiles everything as if you're typing incrementally into one module // This means the fragment is not truly a constrained module as later fragments will be typechecked // against the internals of the module rather than the externals. Furthermore it would be wrong to apply // optimizations that did lots of reorganizing stuff to the internals of a module should we ever implement that. | ModuleOrNamespaceExprWithSig(mty,def,m) when isIncrementalFragment -> let (def,minfo),(env,_bindInfosColl) = OptimizeModuleDef cenv (env,[]) def env, ModuleOrNamespaceExprWithSig(mty, def,m), minfo | _ -> let mexpr', minfo = OptimizeModuleExpr cenv env mexpr let env = BindValsInModuleOrNamespace cenv minfo env let env = { env with localExternalVals=env.localExternalVals.MarkAsCollapsible() } // take the chance to flatten to a dictionary env, mexpr', minfo let hidden = ComputeHidingInfoAtAssemblyBoundary mty let minfo = AbstractLazyModulInfoByHiding true hidden minfo env, TImplFile(qname,pragmas,mexpr',hasExplicitEntryPoint,isScript), minfo //------------------------------------------------------------------------- // Entry point //------------------------------------------------------------------------- let OptimizeImplFile(settings,ccu,tcGlobals,tcVal, importMap,optEnv,isIncrementalFragment,emitTailcalls,mimpls) = let cenv = { settings=settings; scope=ccu; TcVal = tcVal g=tcGlobals; amap=importMap; optimizing=true; localInternalVals=new System.Collections.Generic.Dictionary(10000); emitTailcalls=emitTailcalls; casApplied=new Dictionary() } OptimizeImplFileInternal cenv optEnv isIncrementalFragment mimpls //------------------------------------------------------------------------- // Pickle to stable format for cross-module optimization data //------------------------------------------------------------------------- let rec p_ExprValueInfo x st = match x with | ConstValue (c,ty) -> p_byte 0 st; p_tup2 p_const p_typ (c,ty) st | UnknownValue -> p_byte 1 st | ValValue (a,b) -> p_byte 2 st; p_tup2 (p_vref "optval") p_ExprValueInfo (a,b) st | TupleValue a -> p_byte 3 st; p_array p_ExprValueInfo a st | UnionCaseValue (a,b) -> p_byte 4 st; p_tup2 p_ucref (p_array p_ExprValueInfo) (a,b) st | CurriedLambdaValue (_,b,c,d,e) -> p_byte 5 st; p_tup4 p_int p_int p_expr p_typ (b,c,d,e) st | ConstExprValue (a,b) -> p_byte 6 st; p_tup2 p_int p_expr (a,b) st | RecdValue (tcref,a) -> p_byte 7 st; p_tup2 (p_tcref "opt data") (p_array p_ExprValueInfo) (tcref,a) st | SizeValue (_adepth,a) -> p_ExprValueInfo a st and p_ValInfo (v:ValInfo) st = p_tup2 p_ExprValueInfo p_bool (v.ValExprInfo, v.ValMakesNoCriticalTailcalls) st and p_ModuleInfo x st = p_tup2 (p_array (p_tup2 (p_vref "opttab") p_ValInfo)) (p_namemap p_LazyModuleInfo) ((x.ValInfos.Entries |> Seq.toArray) , x.ModuleOrNamespaceInfos) st and p_LazyModuleInfo x st = p_lazy p_ModuleInfo x st #endif // !NO_COMPILER_BACKEND let rec u_ExprInfo st = let rec loop st = let tag = u_byte st match tag with | 0 -> u_tup2 u_const u_typ st |> (fun (c,ty) -> ConstValue(c,ty)) | 1 -> UnknownValue | 2 -> u_tup2 u_vref loop st |> (fun (a,b) -> ValValue (a,b)) | 3 -> u_array loop st |> (fun a -> TupleValue a) | 4 -> u_tup2 u_ucref (u_array loop) st |> (fun (a,b) -> UnionCaseValue (a,b)) | 5 -> u_tup4 u_int u_int u_expr u_typ st |> (fun (b,c,d,e) -> CurriedLambdaValue (newUnique(),b,c,d,e)) | 6 -> u_tup2 u_int u_expr st |> (fun (a,b) -> ConstExprValue (a,b)) | 7 -> u_tup2 u_tcref (u_array loop) st |> (fun (a,b) -> RecdValue (a,b)) | _ -> failwith "loop" MakeSizedValueInfo (loop st) (* calc size of unpicked ExprValueInfo *) and u_ValInfo st = let a,b = u_tup2 u_ExprInfo u_bool st { ValExprInfo=a; ValMakesNoCriticalTailcalls = b } and u_ModuleInfo st = let a,b = u_tup2 (u_array (u_tup2 u_vref u_ValInfo)) (u_namemap u_LazyModuleInfo) st { ValInfos= ValInfos a; ModuleOrNamespaceInfos=b} and u_LazyModuleInfo st = u_lazy u_ModuleInfo st fsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders.DesignTime/0000775000175000017500000000000012260314606023042 5ustar chrischris././@LongLink0000644000000000000000000000015212266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders.DesignTime/FSharp.Data.TypeProviders.DesignTime.fsprojfsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders.DesignTime/FSharp.Data.TypeProviders.DesignTime.f0000775000175000017500000000653412260314606032124 0ustar chrischris $(MSBuildProjectDirectory)\..\.. Debug AnyCPU Library FSharp.Data.TypeProviders.DesignTime true v4.0 {cb7d20c4-6506-406d-9144-5342c3595f03} $(OtherFlags) --warnon:1182 assemblyinfo.FSharp.Data.TypeProviders.DesignTime.dll.fs FSharp.Core FSharp.Core.dll $(FSharpCoreDllHintPath) true {DED3BBD7-53F4-428A-8C9F-27968E768605} FSharp.Core ././@LongLink0000644000000000000000000000016112266073264011650 Lustar rootrootfsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders.DesignTime/FSharp.Data.TypeProviders.DesignTime.Shared.fsprojfsharp-3.0.34/src/fsharp/FSharp.Data.TypeProviders.DesignTime/FSharp.Data.TypeProviders.DesignTime.S0000775000175000017500000000356312260314606032100 0ustar chrischris $(DefineConstants);TPEMIT_INTERNAL_AND_MINIMAL_FOR_TYPE_CONTAINERS Util.fsi true Util.fs true Restable.fsi true Restable.fs true TypeProviderEmit.fsi true TypeProviderEmit.fs true TypeProvidersImpl.fs true TypeProviders.fs true fsharp-3.0.34/src/fsharp/csolve.fs0000775000175000017500000042131512260314606016000 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.ConstraintSolver //------------------------------------------------------------------------- // Incremental type inference constraint solving. // // Primary constraints are: // - type equations ty1 = ty2 // - subtype inequations ty1 :> ty2 // - trait constraints tyname : (static member op_Addition : 'a * 'b -> 'c) // // Plus some other constraints inherited from .NET generics. // // The constraints are immediately processed into a normal form, in particular // - type equations on inference parameters: 'tp = ty // - type inequations on inference parameters: 'tp :> ty // - other constraints on inference paramaters // // The state of the inference engine is kept in imperative mutations to inference // type variables. // // The use of the normal form allows the state of the inference engine to // be queried for type-directed name resolution, type-directed overload // resolution and when generating warning messages. // // The inference engine can be used in 'undo' mode to implement // can-unify predicates used in method overload resolution and trait constraint // satisfaction. // //------------------------------------------------------------------------- open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.Infos.AccessibilityLogic open Microsoft.FSharp.Compiler.Infos.AttributeChecking open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.PrettyNaming //------------------------------------------------------------------------- // Generate type variables and record them in within the scope of the // compilation environment, which currently corresponds to the scope // of the constraint resolution carried out by type checking. //------------------------------------------------------------------------- let compgen_id = mkSynId range0 unassignedTyparName let NewCompGenTypar (kind,rigid,staticReq,dynamicReq,error) = NewTypar(kind,rigid,Typar(compgen_id,staticReq,true),error,dynamicReq,[],false,false) let anon_id m = mkSynId m unassignedTyparName let NewAnonTypar (kind,m,rigid,var,dyn) = NewTypar (kind,rigid,Typar(anon_id m,var,true),false,dyn,[],false,false) let NewNamedInferenceMeasureVar (_m,rigid,var,id) = NewTypar(TyparKind.Measure,rigid,Typar(id,var,false),false,TyparDynamicReq.No,[],false,false) let NewInferenceMeasurePar () = NewCompGenTypar (TyparKind.Measure,TyparRigidity.Flexible,NoStaticReq,TyparDynamicReq.No,false) let NewErrorTypar () = NewCompGenTypar (TyparKind.Type,TyparRigidity.Flexible,NoStaticReq,TyparDynamicReq.No,true) let NewErrorMeasureVar () = NewCompGenTypar (TyparKind.Measure,TyparRigidity.Flexible,NoStaticReq,TyparDynamicReq.No,true) let NewInferenceType () = mkTyparTy (NewTypar (TyparKind.Type,TyparRigidity.Flexible,Typar(compgen_id,NoStaticReq,true),false,TyparDynamicReq.No,[],false,false)) let NewErrorType () = mkTyparTy (NewErrorTypar ()) let NewErrorMeasure () = MeasureVar (NewErrorMeasureVar ()) let NewInferenceTypes l = l |> List.map (fun _ -> NewInferenceType ()) // QUERY: should 'rigid' ever really be 'true'? We set this when we know // we are going to have to generalize a typar, e.g. when implementing a // abstract generic method slot. But we later check the generalization // condition anyway, so we could get away with a non-rigid typar. This // would sort of be cleaner, though give errors later. let FreshenAndFixupTypars m rigid fctps tinst tpsorig = let copy_tyvar (tp:Typar) = NewCompGenTypar (tp.Kind,rigid,tp.StaticReq,(if rigid=TyparRigidity.Rigid then TyparDynamicReq.Yes else TyparDynamicReq.No),false) let tps = tpsorig |> List.map copy_tyvar let renaming,tinst = FixupNewTypars m fctps tinst tpsorig tps tps,renaming,tinst let FreshenTypeInst m tpsorig = FreshenAndFixupTypars m TyparRigidity.Flexible [] [] tpsorig let FreshMethInst m fctps tinst tpsorig = FreshenAndFixupTypars m TyparRigidity.Flexible fctps tinst tpsorig let FreshenTypars m tpsorig = match tpsorig with | [] -> [] | _ -> let _,_,tptys = FreshenTypeInst m tpsorig tptys let FreshenMethInfo m (minfo:MethInfo) = let _,_,tptys = FreshMethInst m (minfo.GetFormalTyparsOfEnclosingType m) minfo.ActualTypeInst minfo.FormalMethodTypars tptys //------------------------------------------------------------------------- // Unification of types: solve/record equality constraints // Subsumption of types: solve/record subtyping constraints //------------------------------------------------------------------------- exception ConstraintSolverTupleDiffLengths of DisplayEnv * TType list * TType list * range * range exception ConstraintSolverInfiniteTypes of DisplayEnv * TType * TType * range * range exception ConstraintSolverTypesNotInEqualityRelation of DisplayEnv * TType * TType * range * range exception ConstraintSolverTypesNotInSubsumptionRelation of DisplayEnv * TType * TType * range * range exception ConstraintSolverMissingConstraint of DisplayEnv * Tast.Typar * Tast.TyparConstraint * range * range exception ConstraintSolverError of string * range * range exception ConstraintSolverRelatedInformation of string option * range * exn exception ErrorFromApplyingDefault of Env.TcGlobals * DisplayEnv * Tast.Typar * TType * exn * range exception ErrorFromAddingTypeEquation of Env.TcGlobals * DisplayEnv * TType * TType * exn * range exception ErrorsFromAddingSubsumptionConstraint of Env.TcGlobals * DisplayEnv * TType * TType * exn * range exception ErrorFromAddingConstraint of DisplayEnv * exn * range exception PossibleOverload of DisplayEnv * string * exn * range exception UnresolvedOverloading of DisplayEnv * exn list * string * range exception UnresolvedConversionOperator of DisplayEnv * TType * TType * range let GetPossibleOverloads amap m denv (calledMethGroup: (CalledMeth<_> * exn) list) = calledMethGroup |> List.map (fun (cmeth, e) -> PossibleOverload(denv,NicePrint.stringOfMethInfo amap m denv cmeth.Method, e, m)) type TcValF = (ValRef -> ValUseFlag -> TType list -> range -> Expr * TType) type ConstraintSolverState = { g: Env.TcGlobals; amap: Import.ImportMap; InfoReader : InfoReader; TcVal : TcValF /// This table stores all unsolved, ungeneralized trait constraints, indexed by free type variable. /// That is, there will be one entry in this table for each free type variable in /// each outstanding, unsolved, ungeneralized trait constraint. Constraints are removed from the table and resolved /// each time a solution to an index variable is found. mutable ExtraCxs: HashMultiMap; } static member New(g,amap,infoReader, tcVal) = { g=g; amap=amap; ExtraCxs= HashMultiMap(10, HashIdentity.Structural) InfoReader=infoReader TcVal = tcVal } ; type ConstraintSolverEnv = { SolverState: ConstraintSolverState; m: range; EquivEnv: TypeEquivEnv; DisplayEnv : DisplayEnv } member csenv.InfoReader = csenv.SolverState.InfoReader member csenv.g = csenv.SolverState.g member csenv.amap = csenv.SolverState.amap let MakeConstraintSolverEnv css m denv = { SolverState=css; m=m; EquivEnv=TypeEquivEnv.Empty; DisplayEnv = denv } //------------------------------------------------------------------------- // Occurs check //------------------------------------------------------------------------- /// Check whether a type variable occurs in the r.h.s. of a type, e.g. to catch /// infinite equations such as /// 'a = list<'a> let rec occursCheck g un ty = match stripTyEqns g ty with | TType_ucase(_,l) | TType_app (_,l) | TType_tuple l -> List.exists (occursCheck g un) l | TType_fun (d,r) -> occursCheck g un d || occursCheck g un r | TType_var r -> typarEq un r | TType_forall (_,tau) -> occursCheck g un tau | _ -> false //------------------------------------------------------------------------- // Predicates on types //------------------------------------------------------------------------- let rec isNativeIntegerTy g ty = typeEquivAux EraseMeasures g g.nativeint_ty ty || typeEquivAux EraseMeasures g g.unativeint_ty ty || (isEnumTy g ty && isNativeIntegerTy g (underlyingTypeOfEnumTy g ty)) let isSignedIntegerTy g ty = typeEquivAux EraseMeasures g g.sbyte_ty ty || typeEquivAux EraseMeasures g g.int16_ty ty || typeEquivAux EraseMeasures g g.int32_ty ty || typeEquivAux EraseMeasures g g.nativeint_ty ty || typeEquivAux EraseMeasures g g.int64_ty ty let isUnsignedIntegerTy g ty = typeEquivAux EraseMeasures g g.byte_ty ty || typeEquivAux EraseMeasures g g.uint16_ty ty || typeEquivAux EraseMeasures g g.uint32_ty ty || typeEquivAux EraseMeasures g g.unativeint_ty ty || typeEquivAux EraseMeasures g g.uint64_ty ty let rec isIntegerOrIntegerEnumTy g ty = isSignedIntegerTy g ty || isUnsignedIntegerTy g ty || (isEnumTy g ty && isIntegerOrIntegerEnumTy g (underlyingTypeOfEnumTy g ty)) let rec isIntegerTy g ty = isSignedIntegerTy g ty || isUnsignedIntegerTy g ty let isStringTy g ty = typeEquiv g g.string_ty ty let isCharTy g ty = typeEquiv g g.char_ty ty /// float or float32 or float<_> or float32<_> let isFpTy g ty = typeEquivAux EraseMeasures g g.float_ty ty || typeEquivAux EraseMeasures g g.float32_ty ty /// decimal or decimal<_> let isDecimalTy g ty = typeEquivAux EraseMeasures g g.decimal_ty ty let IsNonDecimalNumericOrIntegralEnumType g ty = isIntegerOrIntegerEnumTy g ty || isFpTy g ty let IsNumericOrIntegralEnumType g ty = IsNonDecimalNumericOrIntegralEnumType g ty || isDecimalTy g ty let IsNonDecimalNumericType g ty = isIntegerTy g ty || isFpTy g ty let IsNumericType g ty = IsNonDecimalNumericType g ty || isDecimalTy g ty // Get measure of type, float<_> or float32<_> or decimal<_> but not float=float<1> or float32=float32<1> or decimal=decimal<1> let GetMeasureOfType g ty = match ty with | AppTy g (tcref,[tyarg]) -> match stripTyEqns g tyarg with | TType_measure ms -> if measureEquiv g ms MeasureOne then None else Some (tcref,ms) | _ -> None | _ -> None type TraitConstraintSolution = | TTraitUnsolved | TTraitBuiltIn | TTraitSolved of MethInfo * TypeInst | TTraitSolvedRecdProp of RecdFieldInfo * bool let BakedInTraitConstraintNames = [ "op_Division" ; "op_Multiply"; "op_Addition" "op_Subtraction"; "op_Modulus"; "get_Zero"; "get_One"; "DivideByInt";"get_Item"; "set_Item"; "op_BitwiseAnd"; "op_BitwiseOr"; "op_ExclusiveOr"; "op_LeftShift"; "op_RightShift"; "op_UnaryPlus"; "op_UnaryNegation"; "get_Sign"; "op_LogicalNot" "op_OnesComplement"; "Abs"; "Sqrt"; "Sin"; "Cos"; "Tan"; "Sinh"; "Cosh"; "Tanh"; "Atan"; "Acos"; "Asin"; "Exp"; "Ceiling"; "Floor"; "Round"; "Log10"; "Log"; "Sqrt"; "Truncate"; "op_Explicit"; "Pow"; "Atan2" ] //------------------------------------------------------------------------- // Run the constraint solver with undo (used during method overload resolution) type Trace = | Trace of (unit -> unit) list ref static member New () = Trace (ref []) member t.Undo () = let (Trace trace) = t in List.iter (fun a -> a ()) !trace type OptionalTrace = | NoTrace | WithTrace of Trace member x.HasTrace = match x with NoTrace -> false | WithTrace _ -> true let CollectThenUndo f = let trace = Trace.New() let res = f trace trace.Undo(); res let CheckThenUndo f = CollectThenUndo f |> CheckNoErrorsAndGetWarnings let FilterEachThenUndo f meths = meths |> List.choose (fun calledMeth -> match CheckThenUndo (fun trace -> f trace calledMeth) with | None -> None | Some warns -> Some (calledMeth,warns.Length)) //------------------------------------------------------------------------- // Solve exception NonRigidTypar of DisplayEnv * string option * range * TType * TType * range exception LocallyAbortOperationThatLosesAbbrevs let localAbortD = ErrorD LocallyAbortOperationThatLosesAbbrevs /// Return true if we would rather unify this variable v1 := v2 than vice versa let PreferUnifyTypar (v1:Typar) (v2:Typar) = match v1.Rigidity,v2.Rigidity with // Rigid > all | TyparRigidity.Rigid,_ -> false // Prefer to unify away WillBeRigid in favour of Rigid | TyparRigidity.WillBeRigid,TyparRigidity.Rigid -> true | TyparRigidity.WillBeRigid,TyparRigidity.WillBeRigid -> true | TyparRigidity.WillBeRigid,TyparRigidity.WarnIfNotRigid -> false | TyparRigidity.WillBeRigid,TyparRigidity.Anon -> false | TyparRigidity.WillBeRigid,TyparRigidity.Flexible -> false // Prefer to unify away WarnIfNotRigid in favour of Rigid | TyparRigidity.WarnIfNotRigid,TyparRigidity.Rigid -> true | TyparRigidity.WarnIfNotRigid,TyparRigidity.WillBeRigid -> true | TyparRigidity.WarnIfNotRigid,TyparRigidity.WarnIfNotRigid -> true | TyparRigidity.WarnIfNotRigid,TyparRigidity.Anon -> false | TyparRigidity.WarnIfNotRigid,TyparRigidity.Flexible -> false // Prefer to unify away anonymous variables in favour of Rigid, WarnIfNotRigid | TyparRigidity.Anon,TyparRigidity.Rigid -> true | TyparRigidity.Anon,TyparRigidity.WillBeRigid -> true | TyparRigidity.Anon,TyparRigidity.WarnIfNotRigid -> true | TyparRigidity.Anon,TyparRigidity.Anon -> true | TyparRigidity.Anon,TyparRigidity.Flexible -> false // Prefer to unify away Flexible in favour of Rigid, WarnIfNotRigid or Anon | TyparRigidity.Flexible,TyparRigidity.Rigid -> true | TyparRigidity.Flexible,TyparRigidity.WillBeRigid -> true | TyparRigidity.Flexible,TyparRigidity.WarnIfNotRigid -> true | TyparRigidity.Flexible,TyparRigidity.Anon -> true | TyparRigidity.Flexible,TyparRigidity.Flexible -> // Prefer to unify away compiler generated type vars match v1.IsCompilerGenerated, v2.IsCompilerGenerated with | true,false -> true | false,true -> false | _ -> // Prefer to unify away non-error vars - gives better error recovery since we keep // error vars lying around, and can avoid giving errors about illegal polymorphism // if they occur match v1.IsFromError, v2.IsFromError with | true,false -> false | _ -> true /// Ensure that vs is ordered so that an element with minimum sized exponent /// is at the head of the list. Also, if possible, this element should have rigidity TyparRigidity.Flexible let FindMinimumMeasureExponent vs = let rec findmin vs = match vs with | [] -> vs | (v:Typar,e)::vs -> match findmin vs with | [] -> [(v,e)] | (v',e')::vs' -> if abs e < abs e' || (abs e = abs e' && PreferUnifyTypar v v') then (v, e) :: vs else (v',e') :: (v,e) :: vs' findmin vs let SubstMeasure (r:Typar) ms = if r.Rigidity = TyparRigidity.Rigid then error(InternalError("SubstMeasure: rigid",r.Range)); if r.Kind = TyparKind.Type then error(InternalError("SubstMeasure: kind=type",r.Range)); let tp = r.Data match tp.typar_solution with | None -> tp.typar_solution <- Some (TType_measure ms) | Some _ -> error(InternalError("already solved",r.Range)); let rec TransactStaticReq (csenv:ConstraintSolverEnv) trace (tpr:Typar) req = let m = csenv.m if (tpr.Rigidity.ErrorIfUnified && tpr.StaticReq <> req) then ErrorD(ConstraintSolverError(FSComp.SR.csTypeCannotBeResolvedAtCompileTime(tpr.Name),m,m)) else let orig = tpr.StaticReq match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> tpr.SetStaticReq orig) :: !actions tpr.SetStaticReq req; CompleteD and SolveTypStaticReqTypar (csenv:ConstraintSolverEnv) trace req (tpr:Typar) = let orig = tpr.StaticReq let req2 = JoinTyparStaticReq req orig if orig <> req2 then TransactStaticReq csenv trace tpr req2 else CompleteD and SolveTypStaticReq (csenv:ConstraintSolverEnv) trace req ty = match req with | NoStaticReq -> CompleteD | HeadTypeStaticReq -> // requires that a type constructor be known at compile time match stripTyparEqns ty with | TType_measure ms -> let vs = ListMeasureVarOccsWithNonZeroExponents ms IterateD (fun ((tpr:Typar),_) -> SolveTypStaticReqTypar csenv trace req tpr) vs | _ -> if (isAnyParTy csenv.g ty) then let tpr = destAnyParTy csenv.g ty SolveTypStaticReqTypar csenv trace req tpr else CompleteD let rec TransactDynamicReq trace (tpr:Typar) req = let orig = tpr.DynamicReq match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> tpr.SetDynamicReq orig) :: !actions tpr.SetDynamicReq req; CompleteD and SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty = match req with | TyparDynamicReq.No -> CompleteD | TyparDynamicReq.Yes -> if (isAnyParTy csenv.g ty) then let tpr = destAnyParTy csenv.g ty if tpr.DynamicReq <> TyparDynamicReq.Yes then TransactDynamicReq trace tpr TyparDynamicReq.Yes else CompleteD else CompleteD let SubstMeasureWarnIfRigid (csenv:ConstraintSolverEnv) trace (v:Typar) ms = if v.Rigidity.WarnIfUnified && not (isAnyParTy csenv.g (TType_measure ms)) then // NOTE: we grab the name eagerly to make sure the type variable prints as a type variable let tpnmOpt = if v.IsCompilerGenerated then None else Some v.Name SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms) ++ (fun () -> SubstMeasure v ms; WarnD(NonRigidTypar(csenv.DisplayEnv,tpnmOpt,v.Range,TType_measure (MeasureVar v), TType_measure ms,csenv.m))) else // Propagate static requirements from 'tp' to 'ty' SolveTypStaticReq csenv trace v.StaticReq (TType_measure ms) ++ (fun () -> SubstMeasure v ms; if v.Rigidity = TyparRigidity.Anon && measureEquiv csenv.g ms MeasureOne then WarnD(Error(FSComp.SR.csCodeLessGeneric(),v.Range)) else CompleteD) /// The division operator in Caml/F# rounds towards zero. For our purposes, /// we want to round towards negative infinity. let DivRoundDown x y = let signx=if x<0 then -1 else 1 let signy=if y<0 then -1 else 1 if signx=signy then x / y else (x-y+signy) / y /// Imperatively unify the unit-of-measure expression ms against 1. /// This is a gcd-like algorithm that proceeds as follows: /// 1. Express ms in the form 'u1^x1 * ... * 'un^xn * c1^y1 * ... * cm^ym /// where 'u1,...,'un are non-rigid measure variables, c1,...,cm are measure identifiers or rigid measure variables, /// x1,...,xn and y1,...,yn are non-zero exponents with |x1| <= |xi| for all i. /// 2. (a) If m=n=0 then we're done (we're unifying 1 against 1) /// (b) If m=0 but n<>0 then fail (we're unifying a variable-free expression against 1) /// (c) If xi is divisible by |x1| for all i, and yj is divisible by |x1| for all j, then /// immediately solve the constraint with the substitution /// 'u1 := 'u2^(-x2/x1) * ... * 'un^(-xn/x1) * c1^(-y1/x1) * ... * cm^(-ym/x1) /// (d) Otherwise, if m=1, fail (example: unifying 'u^2 * kg^3) /// (e) Otherwise, make the substitution /// 'u1 := 'u * 'u2^(-x2/x1) * ... * 'un^(-xn/x1) * c1^(-y1/x1) * ... * cm^(-ym/x1) /// where 'u is a fresh measure variable, and iterate. let rec UnifyMeasureWithOne (csenv:ConstraintSolverEnv) trace ms = if verbose then dprintf " UnifyMeasureWithOne...%s\n" ("ms = " ^ Layout.showL(typeL (TType_measure ms))); let (rigidVars,nonRigidVars) = (ListMeasureVarOccsWithNonZeroExponents ms) |> List.partition (fun (v,_) -> v.Rigidity = TyparRigidity.Rigid) let expandedCons = ListMeasureConOccsWithNonZeroExponents csenv.g true ms let unexpandedCons = ListMeasureConOccsWithNonZeroExponents csenv.g false ms match FindMinimumMeasureExponent nonRigidVars, rigidVars, expandedCons, unexpandedCons with | [], [], [], _ -> CompleteD | [], _, _, _ -> localAbortD | (v,e)::vs, rigidVars, _, _ -> // don't break up abbreviations if we can help it! if unexpandedCons |> List.forall (fun (_,e') -> e' % e = 0) && (vs@rigidVars) |> List.forall (fun (_,e') -> e' % e = 0) then let newms = ProdMeasures (List.map (fun (c,e') -> MeasurePower (MeasureCon c) (- (DivRoundDown e' e))) unexpandedCons @ List.map (fun (v,e') -> MeasurePower (MeasureVar v) (- (DivRoundDown e' e))) (vs @ rigidVars)) SubstMeasureWarnIfRigid csenv trace v newms else let newms = ProdMeasures (List.map (fun (c,e') -> MeasurePower (MeasureCon c) (- (DivRoundDown e' e))) expandedCons @ List.map (fun (v,e') -> MeasurePower (MeasureVar v) (- (DivRoundDown e' e))) (vs @ rigidVars)) if expandedCons |> List.forall (fun (_,e') -> e' % e = 0) && (vs@rigidVars) |> List.forall (fun (_,e') -> e' % e = 0) then SubstMeasureWarnIfRigid csenv trace v newms elif isNil vs then localAbortD else // New variable v' must inherit WarnIfNotRigid from v let v' = NewAnonTypar (TyparKind.Measure,v.Range,v.Rigidity,v.StaticReq,v.DynamicReq) SubstMeasure v (MeasureProd(MeasureVar v', newms)); UnifyMeasureWithOne csenv trace ms /// Imperatively unify unit-of-measure expression ms1 against ms2 let UnifyMeasures (csenv:ConstraintSolverEnv) trace ms1 ms2 = if verbose then dprintf "UnifyMeasures...%s\n" ("ms1 = "^Layout.showL(typeL (TType_measure ms1))^", ms2 = "^Layout.showL(typeL (TType_measure ms2))); UnifyMeasureWithOne csenv trace (MeasureProd(ms1,MeasureInv ms2)) /// Simplify a unit-of-measure expression ms that forms part of a type scheme. /// We make substitutions for vars, which are the (remaining) bound variables /// in the scheme that we wish to simplify. let SimplifyMeasure g vars ms = if verbose then dprintf ("SimplifyMeasure ms = %s generalizable = %s\n") (Layout.showL (typeL (TType_measure ms))) (String.concat "," (List.map (fun tp -> Layout.showL (typeL (mkTyparTy tp))) vars)); let rec simp vars = match FindMinimumMeasureExponent (List.filter (fun (_,e) -> e<>0) (List.map (fun v -> (v, MeasureVarExponent v ms)) vars)) with | [] -> (vars, None) | (v,e)::vs -> if e < 0 then let v' = NewAnonTypar (TyparKind.Measure,v.Range,TyparRigidity.Flexible,v.StaticReq,v.DynamicReq) let vars' = v' :: ListSet.remove typarEq v vars SubstMeasure v (MeasureInv (MeasureVar v')); simp vars' else let newv = if v.IsCompilerGenerated then NewAnonTypar (TyparKind.Measure,v.Range,TyparRigidity.Flexible,v.StaticReq,v.DynamicReq) else NewNamedInferenceMeasureVar (v.Range,TyparRigidity.Flexible,v.StaticReq,v.Id) let remainingvars = ListSet.remove typarEq v vars let newms = (ProdMeasures (List.map (fun (c,e') -> MeasurePower (MeasureCon c) (- (DivRoundDown e' e))) (ListMeasureConOccsWithNonZeroExponents g false ms) @ List.map (fun (v',e') -> if typarEq v v' then MeasureVar newv else MeasurePower (MeasureVar v') (- (DivRoundDown e' e))) (ListMeasureVarOccsWithNonZeroExponents ms))); SubstMeasure v newms; match vs with | [] -> (remainingvars, Some newv) | _ -> simp (newv::remainingvars) simp vars // Normalize a type ty that forms part of a unit-of-measure-polymorphic type scheme. // Generalizable are the unit-of-measure variables that remain to be simplified. Generalized // is a list of unit-of-measure variables that have already been generalized. let rec SimplifyMeasuresInType g resultFirst ((generalizable, generalized) as param) ty = if verbose then dprintf ("SimplifyMeasuresInType ty = %s generalizable = %s\n") (Layout.showL (typeL ty)) (String.concat "," (List.map (fun tp -> Layout.showL (typeL (mkTyparTy tp))) generalizable)); match stripTyparEqns ty with | TType_ucase(_,l) | TType_app (_,l) | TType_tuple l -> SimplifyMeasuresInTypes g param l | TType_fun (d,r) -> if resultFirst then SimplifyMeasuresInTypes g param [r;d] else SimplifyMeasuresInTypes g param [d;r] | TType_var _ -> param | TType_forall (_,tau) -> SimplifyMeasuresInType g resultFirst param tau | TType_measure unt -> let (generalizable', newlygeneralized) = SimplifyMeasure g generalizable unt if verbose then dprintf "newlygeneralized = %s\n" (match newlygeneralized with None -> "none" | Some tp -> Layout.showL (typeL (mkTyparTy tp))); match newlygeneralized with | None -> (generalizable', generalized) | Some v -> (generalizable', v::generalized) and SimplifyMeasuresInTypes g param tys = match tys with | [] -> param | ty::tys -> let param' = SimplifyMeasuresInType g false param ty SimplifyMeasuresInTypes g param' tys let SimplifyMeasuresInConstraint g param c = match c with | TyparConstraint.DefaultsTo (_,ty,_) | TyparConstraint.CoercesTo(ty,_) -> SimplifyMeasuresInType g false param ty | TyparConstraint.SimpleChoice (tys,_) -> SimplifyMeasuresInTypes g param tys | TyparConstraint.IsDelegate (ty1,ty2,_) -> SimplifyMeasuresInTypes g param [ty1;ty2] | _ -> param let rec SimplifyMeasuresInConstraints g param cs = match cs with | [] -> param | c::cs -> let param' = SimplifyMeasuresInConstraint g param c SimplifyMeasuresInConstraints g param' cs // We normalize unit-of-measure-polymorphic type schemes as described in Kennedy's thesis. There // are three reasons for doing this: // (1) to present concise and consistent type schemes to the programmer // (2) so that we can compute equivalence of type schemes in signature matching // (3) in order to produce a list of type parameters ordered as they appear in the (normalized) scheme. // // Representing the normal form as a matrix, with a row for each variable, // and a column for each unit-of-measure expression in the "skeleton" of the type. Entries are integer exponents. // // ( 0...0 a1 as1 b1 bs1 c1 cs1 ...) // ( 0...0 0 0...0 b2 bs2 c2 cs2 ...) // ( 0...0 0 0...0 0 0...0 c3 cs3 ...) //... // ( 0...0 0 0...0 0 0...0 0 0...0 ...) // // The normal form is unique; what's more, it can be used to force a variable ordering // because the first occurrence of a variable in a type is in a unit-of-measure expression with no // other "new" variables (a1, b2, c3, above). // // The corner entries a1, b2, c3 are all positive. Entries lying above them (b1, c1, c2, etc) are // non-negative and smaller than the corresponding corner entry. Entries as1, bs1, bs2, etc are arbitrary. // This is known as a *reduced row echelon* matrix or Hermite matrix. let SimplifyMeasuresInTypeScheme g resultFirst (generalizable:Typar list) ty constraints = // Only bother if we're generalizing over at least one unit-of-measure variable let uvars, vars = generalizable |> List.partition (fun v -> v.Kind = TyparKind.Measure && v.Rigidity <> TyparRigidity.Rigid) match uvars with | [] -> generalizable | _::_ -> let (untouched, generalized) = SimplifyMeasuresInType g resultFirst (SimplifyMeasuresInConstraints g (uvars, []) constraints) ty vars @ List.rev generalized @ untouched let freshMeasure () = MeasureVar (NewInferenceMeasurePar ()) let CheckWarnIfRigid (csenv:ConstraintSolverEnv) ty1 (r:Typar) ty = let g = csenv.g let denv = csenv.DisplayEnv if r.Rigidity.WarnIfUnified && (not (isAnyParTy g ty) || (let tp2 = destAnyParTy g ty not tp2.IsCompilerGenerated && (r.IsCompilerGenerated || // exclude this warning for two identically named user-specified type parameters, e.g. from different mutually recursive functions or types r.DisplayName <> tp2.DisplayName ))) then // NOTE: we grab the name eagerly to make sure the type variable prints as a type variable let tpnmOpt = if r.IsCompilerGenerated then None else Some r.Name WarnD(NonRigidTypar(denv,tpnmOpt,r.Range,ty1,ty,csenv.m )) else CompleteD /// Add the constraint "ty1 = ty" to the constraint problem, where ty1 is a type variable. /// Propagate all effects of adding this constraint, e.g. to solve other variables let rec SolveTyparEqualsTyp (csenv:ConstraintSolverEnv) ndeep m2 trace ty1 ty = if verbose then dprintf "--> SolveTyparEqualsTyp...%s\n" ("ty1 = "^Layout.showL(typeL ty1)^", ty = "^Layout.showL(typeL ty)); let m = csenv.m let denv = csenv.DisplayEnv DepthCheck ndeep m ++ (fun () -> match ty1 with | TType_var r | TType_measure (MeasureVar r) -> // The types may still be equivalent due to abbreviations, which we are trying not to eliminate if typeEquiv csenv.g ty1 ty then CompleteD else // The famous 'occursCheck' check to catch things like 'a = list<'a> if occursCheck csenv.g r ty then ErrorD (ConstraintSolverInfiniteTypes(denv,ty1,ty,m,m2)) else // Note: warn _and_ continue! CheckWarnIfRigid (csenv:ConstraintSolverEnv) ty1 r ty ++ (fun () -> // Record the solution before we solve the constraints, since // We may need to make use of the equation when solving the constraints. // Record a entry in the undo trace if one is provided let tpdata = r.Data match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> tpdata.typar_solution <- None) :: !actions tpdata.typar_solution <- Some ty; (* dprintf "setting typar %d to type %s at %a\n" r.Stamp ((DebugPrint.showType ty)) outputRange m; *) // Only solve constraints if this is not an error var if r.IsFromError then CompleteD else // Check to see if this type variable is relevant to any trait constraints. // If so, re-solve the relevant constraints. (if csenv.SolverState.ExtraCxs.ContainsKey r.Stamp then RepeatWhileD ndeep (fun ndeep -> SolveRelevantMemberConstraintsForTypar csenv ndeep false trace r) else CompleteD) ++ (fun _ -> // Re-solve the other constraints associated with this type variable solveTypMeetsTyparConstraints csenv ndeep m2 trace ty (r.DynamicReq,r.StaticReq,r.Constraints))) | _ -> failwith "SolveTyparEqualsTyp") /// Given a type 'ty' and a set of constraints on that type, solve those constraints. and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty (dreq,sreq,cs) = let g = csenv.g // Propagate dynamic requirements from 'tp' to 'ty' SolveTypDynamicReq csenv trace dreq ty ++ (fun () -> // Propagate static requirements from 'tp' to 'ty' SolveTypStaticReq csenv trace sreq ty ++ (fun () -> // Solve constraints on 'tp' w.r.t. 'ty' cs |> IterateD (function | TyparConstraint.DefaultsTo (priority,dty,m) -> if not (isTyparTy g ty) || typeEquiv g ty dty then CompleteD else AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.DefaultsTo(priority,dty,m)) | TyparConstraint.SupportsNull m2 -> SolveTypSupportsNull csenv ndeep m2 trace ty | TyparConstraint.IsEnum(underlying, m2) -> SolveTypIsEnum csenv ndeep m2 trace ty underlying | TyparConstraint.SupportsComparison(m2) -> SolveTypeSupportsComparison csenv ndeep m2 trace ty | TyparConstraint.SupportsEquality(m2) -> SolveTypSupportsEquality csenv ndeep m2 trace ty | TyparConstraint.IsDelegate(aty,bty, m2) -> SolveTypIsDelegate csenv ndeep m2 trace ty aty bty | TyparConstraint.IsNonNullableStruct m2 -> SolveTypIsNonNullableValueType csenv ndeep m2 trace ty | TyparConstraint.IsUnmanaged m2 -> SolveTypIsUnmanaged csenv ndeep m2 trace ty | TyparConstraint.IsReferenceType m2 -> SolveTypIsReferenceType csenv ndeep m2 trace ty | TyparConstraint.RequiresDefaultConstructor m2 -> SolveTypRequiresDefaultConstructor csenv ndeep m2 trace ty | TyparConstraint.SimpleChoice(tys,m2) -> SolveTypChoice csenv ndeep m2 trace ty tys | TyparConstraint.CoercesTo(ty2,m2) -> SolveTypSubsumesTypKeepAbbrevs csenv ndeep m2 trace ty2 ty | TyparConstraint.MayResolveMember(traitInfo,m2) -> SolveMemberConstraint csenv false ndeep m2 trace traitInfo ++ (fun _ -> CompleteD) ))) /// Add the constraint "ty1 = ty2" to the constraint problem. /// Propagate all effects of adding this constraint, e.g. to solve type variables and SolveTypEqualsTyp (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty1 ty2 = if verbose then dprintf "SolveTypEqualsTyp ndeep @ %a\n" outputRange csenv.m; (* dprintf "SolveTypEqualsTyp ty1=%s ty2=%s\n" (showL (typeL ty1)) (showL (typeL ty2)); *) let ndeep = ndeep + 1 let aenv = csenv.EquivEnv let g = csenv.g if ty1 === ty2 then CompleteD else let canShortcut = not trace.HasTrace let sty1 = stripTyEqnsA csenv.g canShortcut ty1 let sty2 = stripTyEqnsA csenv.g canShortcut ty2 match sty1, sty2 with // type vars inside forall-types may be alpha-equivalent | TType_var tp1, TType_var tp2 when typarEq tp1 tp2 || (aenv.EquivTypars.ContainsKey tp1 && typeEquiv g aenv.EquivTypars.[tp1] ty2) -> CompleteD | TType_var tp1, TType_var tp2 when PreferUnifyTypar tp1 tp2 -> SolveTyparEqualsTyp csenv ndeep m2 trace sty1 ty2 | TType_var tp1, TType_var tp2 when PreferUnifyTypar tp2 tp1 -> SolveTyparEqualsTyp csenv ndeep m2 trace sty2 ty1 | TType_var r, _ when (r.Rigidity <> TyparRigidity.Rigid) -> SolveTyparEqualsTyp csenv ndeep m2 trace sty1 ty2 | _, TType_var r when (r.Rigidity <> TyparRigidity.Rigid) -> SolveTyparEqualsTyp csenv ndeep m2 trace sty2 ty1 // Catch float<_>=float<1>, float32<_>=float32<1> and decimal<_>=decimal<1> | (_, TType_app (tc2,[ms])) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) -> SolveTypEqualsTyp csenv ndeep m2 trace ms (TType_measure MeasureOne) | (TType_app (tc2,[ms]), _) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) -> SolveTypEqualsTyp csenv ndeep m2 trace ms (TType_measure MeasureOne) | TType_app (tc1,l1) ,TType_app (tc2,l2) when tyconRefEq g tc1 tc2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 | TType_app (_,_) ,TType_app (_,_) -> localAbortD | TType_tuple l1 ,TType_tuple l2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 | TType_fun (d1,r1) ,TType_fun (d2,r2) -> SolveFunTypEqn csenv ndeep m2 trace d1 d2 r1 r2 | TType_measure ms1 ,TType_measure ms2 -> UnifyMeasures csenv trace ms1 ms2 | TType_forall(tps1,rty1), TType_forall(tps2,rty2) -> if tps1.Length <> tps2.Length then localAbortD else let aenv = aenv.BindEquivTypars tps1 tps2 let csenv = {csenv with EquivEnv = aenv } if not (typarsAEquiv g aenv tps1 tps2) then localAbortD else SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty1 rty2 | TType_ucase (uc1,l1) ,TType_ucase (uc2,l2) when g.unionCaseRefEq uc1 uc2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 | _ -> localAbortD and SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ty1 ty2 = let denv = csenv.DisplayEnv // Back out of expansions of type abbreviations to give improved error messages. // Note: any "normalization" of equations on type variables must respect the trace parameter TryD (fun () -> SolveTypEqualsTyp csenv ndeep m2 trace ty1 ty2) (function LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInEqualityRelation(denv,ty1,ty2,csenv.m,m2)) | err -> ErrorD err) and SolveTypEqualsTypEqns csenv ndeep m2 trace origl1 origl2 = match origl1,origl2 with | [],[] -> CompleteD | _ -> // We unwind Iterate2D by hand here for performance reasons. let rec loop l1 l2 = match l1,l2 with | [],[] -> CompleteD | h1::t1, h2::t2 -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace h1 h2 ++ (fun () -> loop t1 t2) | _ -> ErrorD(ConstraintSolverTupleDiffLengths(csenv.DisplayEnv,origl1,origl2,csenv.m,m2)) loop origl1 origl2 and SolveFunTypEqn csenv ndeep m2 trace d1 d2 r1 r2 = SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace d1 d2 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace r1 r2) and SolveTypSubsumesTyp (csenv:ConstraintSolverEnv) ndeep m2 (trace: OptionalTrace) ty1 ty2 = // 'a :> obj ---> let ndeep = ndeep + 1 let g = csenv.g let amap = csenv.amap let aenv = csenv.EquivEnv let denv = csenv.DisplayEnv let m = csenv.m if isObjTy g ty1 then CompleteD else let canShortcut = not trace.HasTrace let sty1 = stripTyEqnsA csenv.g canShortcut ty1 let sty2 = stripTyEqnsA csenv.g canShortcut ty2 match sty1, sty2 with | TType_var tp1, _ when aenv.EquivTypars.ContainsKey tp1 -> SolveTypSubsumesTyp csenv ndeep m2 trace aenv.EquivTypars.[tp1] ty2 | TType_var r1, TType_var r2 when typarEq r1 r2 -> CompleteD | _, TType_var r (* when not (rigid_of_typar r) *) -> SolveTyparSubtypeOfType csenv ndeep m2 trace r ty1 | TType_var _ , _ (* | _, TType_var r *) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ty1 ty2 | TType_tuple l1 ,TType_tuple l2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 (* nb. can unify since no variance *) | TType_fun (d1,r1) ,TType_fun (d2,r2) -> SolveFunTypEqn csenv ndeep m2 trace d1 d2 r1 r2 (* nb. can unify since no variance *) | TType_measure ms1, TType_measure ms2 -> UnifyMeasures csenv trace ms1 ms2 // Enforce the identities float=float<1>, float32=float32<1> and decimal=decimal<1> | (_, TType_app (tc2,[ms])) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty1 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ms (TType_measure MeasureOne) | (TType_app (tc2,[ms]), _) when (tc2.IsMeasureableReprTycon && typeEquiv csenv.g sty2 (reduceTyconRefMeasureableOrProvided csenv.g tc2 [ms])) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ms (TType_measure MeasureOne) | TType_app (tc1,l1) ,TType_app (tc2,l2) when tyconRefEq g tc1 tc2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 | TType_ucase (uc1,l1) ,TType_ucase (uc2,l2) when g.unionCaseRefEq uc1 uc2 -> SolveTypEqualsTypEqns csenv ndeep m2 trace l1 l2 | _ -> // By now we know the type is not a variable type // C :> obj ---> if isObjTy g ty1 then CompleteD else // 'a[] :> IList<'b> ---> 'a = 'b // 'a[] :> ICollection<'b> ---> 'a = 'b // 'a[] :> IEnumerable<'b> ---> 'a = 'b // Note we don't support co-variance on array types nor // the special .NET conversions for these types if (isArray1DTy g ty2 && isAppTy g ty1 && (let tcr1 = tcrefOfAppTy g ty1 tyconRefEq g tcr1 g.tcref_System_Collections_Generic_IList || tyconRefEq g tcr1 g.tcref_System_Collections_Generic_ICollection || tyconRefEq g tcr1 g.tcref_System_Collections_Generic_IEnumerable)) then let _,tinst = destAppTy g ty1 match tinst with | [ty1arg] -> let ty2arg = destArrayTy g ty2 SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ty1arg ty2arg | _ -> error(InternalError("destArrayTy",m)); // D :> Head<_> --> C :> Head<_> for the // first interface or super-class C supported by D which // may feasibly convert to Head. else match (FindUniqueFeasibleSupertype g amap m ty1 ty2) with | None -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv,ty1,ty2,m,m2)) | Some t -> SolveTypSubsumesTyp csenv ndeep m2 trace ty1 t and SolveTypSubsumesTypKeepAbbrevs csenv ndeep m2 trace ty1 ty2 = let denv = csenv.DisplayEnv TryD (fun () -> SolveTypSubsumesTyp csenv ndeep m2 trace ty1 ty2) (function LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv,ty1,ty2,csenv.m,m2)) | err -> ErrorD err) //------------------------------------------------------------------------- // Solve and record non-equality constraints //------------------------------------------------------------------------- and SolveTyparSubtypeOfType (csenv:ConstraintSolverEnv) ndeep m2 trace tp ty1 = let g = csenv.g let m = csenv.m if isObjTy g ty1 then CompleteD elif typeEquiv g ty1 (mkTyparTy tp) then CompleteD elif isSealedTy g ty1 then SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace (mkTyparTy tp) ty1 else AddConstraint csenv ndeep m2 trace tp (TyparConstraint.CoercesTo(ty1,m)) and DepthCheck ndeep m = if ndeep > 300 then error(Error(FSComp.SR.csTypeInferenceMaxDepth(),m)) else CompleteD // If this is a type that's parameterized on a unit-of-measure (expected to be numeric), unify its measure with 1 and SolveDimensionlessNumericType (csenv:ConstraintSolverEnv) ndeep m2 trace ty = match GetMeasureOfType csenv.g ty with | Some (tcref, _) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ty (mkAppTy tcref [TType_measure MeasureOne]) | None -> CompleteD /// We do a bunch of fakery to pretend that primitive types have certain members. /// We pretend int and other types support a number of operators. In the actual IL for mscorlib they /// don't, however the type-directed static optimization rules in the library code that makes use of this /// will deal with the problem. and SolveMemberConstraint (csenv:ConstraintSolverEnv) permitWeakResolution ndeep m2 trace (TTrait(tys,nm,memFlags,argtys,rty,sln)) : OperationResult = // Do not re-solve if already solved if sln.Value.IsSome then ResultD true else let g = csenv.g let m = csenv.m let amap = csenv.amap let aenv = csenv.EquivEnv let denv = csenv.DisplayEnv let ndeep = ndeep + 1 DepthCheck ndeep m ++ (fun () -> if verbose then dprintf "-----------------------------\nResolve trait for %s\n" nm; // Remove duplicates from the set of types in the support let tys = ListSet.setify (typeAEquiv g aenv) tys // Rebuild the trait info after removing duplicates let traitInfo = TTrait(tys,nm,memFlags,argtys,rty,sln) let rty = GetFSharpViewOfReturnType g rty // Assert the object type if the constraint is for an instance member begin if memFlags.IsInstance then match tys, argtys with | [ty], (h :: _) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace h ty | _ -> ErrorD (ConstraintSolverError(FSComp.SR.csExpectedArguments(), m,m2)) else CompleteD end ++ (fun () -> // Trait calls are only supported on pseudo type (variables) tys |> IterateD (SolveTypStaticReq csenv trace HeadTypeStaticReq)) ++ (fun () -> let argtys = if memFlags.IsInstance then List.tail argtys else argtys let minfos = GetRelevantMethodsForTrait csenv permitWeakResolution nm traitInfo if verbose then minfos |> List.iter (fun minfo -> dprintf "Possible overload: %s\n" (NicePrint.stringOfMethInfo amap m denv minfo)); match minfos,tys,memFlags.IsInstance,nm,argtys with | _,_,false,("op_Division" | "op_Multiply"),[argty1;argty2] when // This simulates the existence of // float * float -> float // float32 * float32 -> float32 // float<'u> * float<'v> -> float<'u 'v> // float32<'u> * float32<'v> -> float32<'u 'v> // decimal<'u> * decimal<'v> -> decimal<'u 'v> // decimal<'u> * decimal -> decimal<'u> // float32<'u> * float32<'v> -> float32<'u 'v> // int * int -> int // int64 * int64 -> int64 // // The rule is triggered by these sorts of inputs when permitWeakResolution=false // float * float // float * float32 // will give error // decimal * decimal // decimal * decimal <-- Note this one triggers even though "decimal" has some possibly-relevant methods // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead // float * Matrix // the rule doesn't trigger for this one since Matrix has overloads we can use and we prefer those instead // // The rule is triggered by these sorts of inputs when permitWeakResolution=true // float * 'a // 'a * float // decimal<'u> * 'a <--- (let checkRuleAppliesInPreferenceToMethods argty1 argty2 = // Check that at least one of the argument types is numeric (IsNumericOrIntegralEnumType g argty1) && // Check that the support of type variables is empty. That is, // if we're canonicalizing, then having one of the types nominal is sufficient. // If not, then both must be nominal (i.e. not a type variable). (permitWeakResolution || not (isTyparTy g argty2)) && // This next condition checks that either // - Neither type contributes any methods OR // - We have the special case "decimal<_> * decimal". In this case we have some // possibly-relevant methods from "decimal" but we ignore them in this case. (isNil minfos || (isSome (GetMeasureOfType g argty1) && isDecimalTy g argty2)) in checkRuleAppliesInPreferenceToMethods argty1 argty2 || checkRuleAppliesInPreferenceToMethods argty2 argty1) -> match GetMeasureOfType g argty1 with | Some (tcref,ms1) -> let ms2 = freshMeasure () SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 (mkAppTy tcref [TType_measure ms2]) ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (MeasureProd(ms1,if nm = "op_Multiply" then ms2 else MeasureInv ms2))]) ++ (fun () -> ResultD TTraitBuiltIn)) | _ -> match GetMeasureOfType g argty2 with | Some (tcref,ms2) -> let ms1 = freshMeasure () SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure ms1]) ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure (MeasureProd(ms1, if nm = "op_Multiply" then ms2 else MeasureInv ms2))]) ++ (fun () -> ResultD TTraitBuiltIn)) | _ -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> ResultD TTraitBuiltIn)) | _,_,false,("op_Addition" | "op_Subtraction" | "op_Modulus"),[argty1;argty2] when // Ignore any explicit +/- overloads from any basic integral types (isNil (minfos |> List.filter (fun minfo -> not(isIntegerTy g minfo.EnclosingType ))) && ( (IsNumericOrIntegralEnumType g argty1 || (nm = "op_Addition" && (isCharTy g argty1 || isStringTy g argty1))) && (permitWeakResolution || not (isTyparTy g argty2)) || (IsNumericOrIntegralEnumType g argty2 || (nm = "op_Addition" && (isCharTy g argty2 || isStringTy g argty2))) && (permitWeakResolution || not (isTyparTy g argty1)))) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> ResultD TTraitBuiltIn)) // We pretend for uniformity that the numeric types have a static property called Zero and One // As with constants, only zero is polymorphic in its units | [],[ty],false,"get_Zero",[] when IsNumericType g ty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty ty ++ (fun () -> ResultD TTraitBuiltIn) | [],[ty],false,"get_One",[] when IsNumericType g ty || isCharTy g ty -> SolveDimensionlessNumericType csenv ndeep m2 trace ty ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty ty ++ (fun () -> ResultD TTraitBuiltIn)) | [],_,false,("DivideByInt"),[argty1;argty2] when isFpTy g argty1 || isDecimalTy g argty1 -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> ResultD TTraitBuiltIn)) // We pretend for uniformity that the 'string' and 'array' types have an indexer property called 'Item' | [], [ty],true,("get_Item"),[argty1] when isStringTy g ty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty1 g.int_ty ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty g.char_ty ++ (fun () -> ResultD TTraitBuiltIn)) | [], [ty],true,("get_Item"),argtys when isArrayTy g ty -> (if rankOfArrayTy g ty <> argtys.Length then ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argtys.Length),m,m2)) else CompleteD) ++ (fun () -> (argtys |> IterateD (fun argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty g.int_ty)) ++ (fun () -> let ety = destArrayTy g ty SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty ety ++ (fun () -> ResultD TTraitBuiltIn))) | [], [ty],true,("set_Item"),argtys when isArrayTy g ty -> (if rankOfArrayTy g ty <> argtys.Length - 1 then ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argtys.Length - 1)),m,m2)) else CompleteD) ++ (fun () -> let argtys,ety = List.frontAndBack argtys (argtys |> IterateD (fun argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty g.int_ty)) ++ (fun () -> let etys = destArrayTy g ty SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ety etys ++ (fun () -> ResultD TTraitBuiltIn))) | [],_,false,("op_BitwiseAnd" | "op_BitwiseOr" | "op_ExclusiveOr"),[argty1;argty2] when (isIntegerOrIntegerEnumTy g argty1 || (isEnumTy g argty1)) && (permitWeakResolution || not (isTyparTy g argty2)) || (isIntegerOrIntegerEnumTy g argty2 || (isEnumTy g argty2)) && (permitWeakResolution || not (isTyparTy g argty1)) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () -> ResultD TTraitBuiltIn))); | [], _,false,("op_LeftShift" | "op_RightShift"),[argty1;argty2] when isIntegerOrIntegerEnumTy g argty1 -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 g.int_ty ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () -> ResultD TTraitBuiltIn))) | _,_,false,("op_UnaryPlus"),[argty] when IsNumericOrIntegralEnumType g argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () -> ResultD TTraitBuiltIn) | _,_,false,("op_UnaryNegation"),[argty] when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () -> ResultD TTraitBuiltIn) | _,_,true,("get_Sign"),[] when (let argty = tys.Head in isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty g.int32_ty ++ (fun () -> ResultD TTraitBuiltIn) | _,_,false,("op_LogicalNot" | "op_OnesComplement"),[argty] when isIntegerOrIntegerEnumTy g argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () -> SolveDimensionlessNumericType csenv ndeep m2 trace argty ++ (fun () -> ResultD TTraitBuiltIn)) | _,_,false,("Abs"),[argty] when isSignedIntegerTy g argty || isFpTy g argty || isDecimalTy g argty -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () -> ResultD TTraitBuiltIn) | _,_,false,"Sqrt",[argty1] when isFpTy g argty1 -> match GetMeasureOfType g argty1 with | Some (tcref, _) -> let ms1 = freshMeasure () SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty1 (mkAppTy tcref [TType_measure (MeasureProd (ms1,ms1))]) ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure ms1]) ++ (fun () -> ResultD TTraitBuiltIn)) | None -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> ResultD TTraitBuiltIn) | _,_,false,("Sin" | "Cos" | "Tan" | "Sinh" | "Cosh" | "Tanh" | "Atan" | "Acos" | "Asin" | "Exp" | "Ceiling" | "Floor" | "Round" | "Truncate" | "Log10" | "Log" | "Sqrt"),[argty] when isFpTy g argty -> SolveDimensionlessNumericType csenv ndeep m2 trace argty ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty ++ (fun () -> ResultD TTraitBuiltIn)) | _,_,false,("op_Explicit"),[argty] when (// The input type. (IsNonDecimalNumericOrIntegralEnumType g argty || isStringTy g argty || isCharTy g argty) && // The output type (IsNonDecimalNumericOrIntegralEnumType g rty || isCharTy g rty) && // Exclusion: IntPtr and UIntPtr do not support .Parse() from string not (isStringTy g argty && isNativeIntegerTy g rty) && // Exclusion: No conversion from char to decimal not (isCharTy g argty && isDecimalTy g rty)) -> ResultD TTraitBuiltIn | _,_,false,("op_Explicit"),[argty] when (// The input type. (IsNumericOrIntegralEnumType g argty || isStringTy g argty) && // The output type (isDecimalTy g rty)) -> ResultD TTraitBuiltIn | [],_,false,"Pow",[argty1; argty2] when isFpTy g argty1 -> SolveDimensionlessNumericType csenv ndeep m2 trace argty1 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 ++ (fun () -> ResultD TTraitBuiltIn))) | _,_,false,("Atan2"),[argty1; argty2] when isFpTy g argty1 -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace argty2 argty1 ++ (fun () -> match GetMeasureOfType g argty1 with | None -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty argty1 | Some (tcref, _) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty (mkAppTy tcref [TType_measure MeasureOne])) ++ (fun () -> ResultD TTraitBuiltIn) | _ -> // OK, this is not solved by a built-in constraint. // Now look for real solutions // First look for a solution by a record property let recdPropSearch = let isGetProp = nm.StartsWith "get_" let isSetProp = nm.StartsWith "set_" if argtys.IsEmpty && isGetProp || isSetProp then let propName = nm.[4..] let props = tys |> List.choose (fun ty -> match TryFindIntrinsicNamedItemOfType csenv.InfoReader (propName,AccessibleFromEverywhere) FindMemberFlag.IgnoreOverrides m ty with | Some (RecdFieldItem rfinfo) when (isGetProp || rfinfo.RecdField.IsMutable) && (rfinfo.IsStatic = not memFlags.IsInstance) && IsRecdFieldAccessible AccessibleFromEverywhere rfinfo.RecdFieldRef && not rfinfo.LiteralValue.IsSome && not rfinfo.RecdField.IsCompilerGenerated -> Some (TTraitSolvedRecdProp (rfinfo, isSetProp)) | _ -> None) match props with | [ prop ] -> Some prop | _ -> None else None // Now check if there are no feasible solutions at all match minfos, recdPropSearch with | [], None when not (tys |> List.exists (isAnyParTy g)) -> if tys |> List.exists (isFunTy g) then ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenFunction(DecompileOpName nm),m,m2)) elif tys |> List.exists (isTupleTy g) then ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(DecompileOpName nm),m,m2)) else match nm, argtys with | "op_Explicit", [argty] -> ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion((NicePrint.prettyStringOfTy denv argty), (NicePrint.prettyStringOfTy denv rty)),m,m2)) | _ -> let tyString = match tys with | [ty] -> NicePrint.minimalStringOfType denv ty | _ -> tys |> List.map (NicePrint.minimalStringOfType denv) |> String.concat ", " let opName = DecompileOpName nm let err = match opName with | "?>=" | "?>" | "?<=" | "?<" | "?=" | "?<>" | ">=?" | ">?" | "<=?" | "?" | "?>=?" | "?>?" | "?<=?" | "??" -> if tys.Length = 1 then FSComp.SR.csTypeDoesNotSupportOperatorNullable(tyString,opName) else FSComp.SR.csTypesDoNotSupportOperatorNullable(tyString,opName) | _ -> if tys.Length = 1 then FSComp.SR.csTypeDoesNotSupportOperator(tyString,opName) else FSComp.SR.csTypesDoNotSupportOperator(tyString,opName) ErrorD(ConstraintSolverError(err,m,m2)) | _ -> let dummyExpr = mkUnit g m let calledMethGroup = minfos // curried members may not be used to satisfy constraints |> List.filter (fun minfo -> not minfo.IsCurried) |> List.map (fun minfo -> let callerArgs = argtys |> List.map (fun argty -> CallerArg(argty,m,false,dummyExpr)) let minst = FreshenMethInfo m minfo let objtys = minfo.GetObjArgTypes(amap, m, minst) MakeCalledMeth(csenv.InfoReader,false, FreshenMethInfo, m,AccessibleFromEverywhere,minfo,minst,minst,None,objtys,[(callerArgs,[])],false, false)) (* dprintf " ---> calling ResolveOverloading, nm = %s, ty = '%s'\n" nm (Layout.showL (typeL ty)); *) let methOverloadResult,errors = CollectThenUndo (fun trace -> ResolveOverloading csenv (WithTrace(trace)) nm ndeep true (0,0) AccessibleFromEverywhere calledMethGroup false (Some rty)) if verbose then dprintf " <--- called ResolveOverloading, ok? = %b\n" (isSome (CheckNoErrorsAndGetWarnings errors)); match recdPropSearch, methOverloadResult with | Some a, None -> // OK, the constraint is solved by a record property ResultD a | None, Some (calledMeth:CalledMeth<_>) -> // OK, the constraint is solved. // Re-run without undo to commit the inference equations. Throw errors away let minfo = calledMeth.Method if verbose then dprintf " ---> constraint solved, calling ResolveOverloading a second time, without undo, minfo = %s\n" (NicePrint.stringOfMethInfo amap m denv minfo); let _,errors = ResolveOverloading csenv trace nm ndeep true (0,0) AccessibleFromEverywhere calledMethGroup false (Some rty) errors ++ (fun () -> let isInstance = minfo.IsInstance if isInstance <> memFlags.IsInstance then if isInstance then ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsNotStatic((NicePrint.minimalStringOfType denv minfo.EnclosingType), (DecompileOpName nm), nm),m,m2 )) else ErrorD(ConstraintSolverError(FSComp.SR.csMethodFoundButIsStatic((NicePrint.minimalStringOfType denv minfo.EnclosingType), (DecompileOpName nm), nm),m,m2 )) else CheckMethInfoAttributes g m None minfo ++ (fun () -> ResultD (TTraitSolved (minfo,calledMeth.CalledTyArgs)))) | _ -> let support = GetSupportOfMemberConstraint csenv traitInfo let frees = GetFreeTyparsOfMemberConstraint csenv traitInfo // If there's nothing left to learn then raise the errors (if (permitWeakResolution && isNil support) || isNil frees then errors // Otherwise re-record the trait waiting for canonicalization else AddMemberConstraint csenv ndeep m2 trace traitInfo support frees) ++ (fun () -> ResultD TTraitUnsolved) ) ++ (fun res -> RecordMemberConstraintSolution csenv.SolverState m trace traitInfo res)) /// Record the solution to a member constraint in the mutable reference cell attached to /// each member constraint. and RecordMemberConstraintSolution css m trace traitInfo res = match res with | TTraitUnsolved -> ResultD false | TTraitSolved (minfo,minst) -> let sln = MemberConstraintSolutionOfMethInfo css m minfo minst TransactMemberConstraintSolution traitInfo trace sln; ResultD true | TTraitBuiltIn -> TransactMemberConstraintSolution traitInfo trace BuiltInSln; ResultD true | TTraitSolvedRecdProp (rfinfo, isSetProp) -> let sln = MemberConstraintSolutionOfRecdFieldInfo rfinfo isSetProp TransactMemberConstraintSolution traitInfo trace sln; ResultD true /// Convert a MethInfo into the data we save in the TAST and MemberConstraintSolutionOfMethInfo css m minfo minst = match minfo with | ILMeth(_,ILMethInfo(ILTypeInfo(tcref,tref,tinst,_),extOpt,mdef,_),_) -> let mref = IL.mkRefToILMethod (tref,mdef) ILMethSln(mkAppTy tcref tinst,extOpt,mref,minst) | ILMeth _ -> error(InternalError("this extension method on F# types was the unexpected solution to a trait constraint",m)) | FSMeth(_,typ,vref,_) -> FSMethSln(typ,vref,minst) | MethInfo.DefaultStructCtor _ -> error(InternalError("the default struct constructor was the unexpected solution to a trait constraint",m)) #if EXTENSIONTYPING | ProvidedMeth(g,mi,amap,m) -> let minst = [] // GENERIC TYPE PROVIDERS: for generics, we would have an minst here let allArgVars, allArgs = minfo.GetParamTypes(amap, m, minst) |> List.concat |> List.mapi (fun i ty -> mkLocal m ("arg"+string i) ty) |> List.unzip let objArgVars, objArgs = (if minfo.IsInstance then [mkLocal m "this" minfo.EnclosingType] else []) |> List.unzip let callMethInfoOpt, callExpr,callExprTy = Typrelns.ProvidedMethodCalls.BuildInvokerExpressionForProvidedMethodCall css.TcVal (g, amap, mi, objArgs, NeverMutates, false, ValUseFlag.NormalValUse, allArgs, m) let closedExprSln = ClosedExprSln (mkLambdas m [] (objArgVars@allArgVars) (callExpr, callExprTy) ) // If the call is a simple call to an IL method with all the arguments in the natural order, then revert to use ILMethSln. // This is important for calls to operators on generated provided types. There is an (unchecked) condition // that generative providers do not re=order arguments or insert any more information into operator calls. match callMethInfoOpt, callExpr with | Some methInfo, Expr.Op(TOp.ILCall(_useCallVirt,_isProtected,_,_isNewObj,NormalValUse,_isProp,_noTailCall,ilMethRef,_actualTypeInst,actualMethInst,_ilReturnTys),[],args,m) when (args, (objArgVars@allArgVars)) ||> List.lengthsEqAndForall2 (fun a b -> match a with Expr.Val(v,_,_) -> valEq v.Deref b | _ -> false) -> let declaringType = Import.ImportProvidedType amap m (methInfo.PApply((fun x -> x.DeclaringType), m)) if isILAppTy g declaringType then let extOpt = None // EXTENSION METHODS FROM TYPE PROVIDERS: for extension methods coming from the type providers we would have something here. ILMethSln(declaringType,extOpt,ilMethRef,actualMethInst) else closedExprSln | _ -> closedExprSln #endif and MemberConstraintSolutionOfRecdFieldInfo rfinfo isSet = FSRecdFieldSln(rfinfo.TypeInst,rfinfo.RecdFieldRef,isSet) /// Write into the reference cell stored in the TAST and add to the undo trace if necessary and TransactMemberConstraintSolution traitInfo trace sln = let prev = traitInfo.Solution traitInfo.Solution <- Some sln match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> traitInfo.Solution <- prev) :: !actions /// Only consider overload resolution if canonicalizing or all the types are now nominal. /// That is, don't perform resolution if more nominal information may influence the set of available overloads and GetRelevantMethodsForTrait (csenv:ConstraintSolverEnv) permitWeakResolution nm (TTrait(tys,_,memFlags,argtys,rty,soln) as traitInfo) = let results = if permitWeakResolution || isNil (GetSupportOfMemberConstraint csenv traitInfo) then let m = csenv.m let g = csenv.g let minfos = tys |> List.map (GetIntrinsicMethInfosOfType csenv.SolverState.InfoReader (Some nm,AccessibleFromSomeFSharpCode,AllowMultiIntfInstantiations.Yes) IgnoreOverrides m) /// Merge the sets so we don't get the same minfo from each side /// We merge based on whether minfos use identical metadata or not. /// REVIEW: Consider the pathological cases where this may cause a loss of distinction /// between potential overloads because a generic instantiation derived from the left hand type differs /// to a generic instantiation for an operator based on the right hand type. let minfos = List.fold (ListSet.unionFavourLeft (MethInfosUseIdenticalDefinitions g)) (List.head minfos) (List.tail minfos) minfos else [] // The trait name "op_Explicit" also covers "op_Implicit", so look for that one too. if nm = "op_Explicit" then results @ GetRelevantMethodsForTrait (csenv:ConstraintSolverEnv) permitWeakResolution "op_Implicit" (TTrait(tys,"op_Implicit",memFlags,argtys,rty,soln)) else results /// The nominal support of the member constraint and GetSupportOfMemberConstraint (csenv:ConstraintSolverEnv) (TTrait(tys,_,_,_,_,_)) = tys |> List.choose (fun ty -> if isAnyParTy csenv.g ty then Some (destAnyParTy csenv.g ty) else None) /// All the typars relevant to the member constraint *) and GetFreeTyparsOfMemberConstraint (csenv:ConstraintSolverEnv) (TTrait(tys,_,_,argtys,rty,_)) = (freeInTypesLeftToRightSkippingConstraints csenv.g (tys@argtys@ Option.toList rty)) /// Re-solve the global constraints involving any of the given type variables. /// Trait constraints can't always be solved using the pessimistic rules. We only canonicalize /// them forcefully (permitWeakResolution=true) prior to generalization. and SolveRelevantMemberConstraints (csenv:ConstraintSolverEnv) ndeep permitWeakResolution trace tps = RepeatWhileD ndeep (fun ndeep -> tps |> AtLeastOneD (fun tp -> /// Normalize the typar let ty = mkTyparTy tp if isAnyParTy csenv.g ty then let tp = destAnyParTy csenv.g ty SolveRelevantMemberConstraintsForTypar csenv ndeep permitWeakResolution trace tp else ResultD false)) and SolveRelevantMemberConstraintsForTypar (csenv:ConstraintSolverEnv) ndeep permitWeakResolution trace tp = let cxst = csenv.SolverState.ExtraCxs let tpn = tp.Stamp let cxs = cxst.FindAll tpn if isNil cxs then ResultD false else if verbose then dprintf "SolveRelevantMemberConstraintsForTypar #cxs = %d, m = %a\n" cxs.Length outputRange csenv.m; cxs |> List.iter (fun _ -> cxst.Remove tpn); assert (isNil (cxst.FindAll tpn)); match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> cxs |> List.iter (fun cx -> cxst.Add(tpn,cx))) :: !actions cxs |> AtLeastOneD (fun (traitInfo,m2) -> let csenv = { csenv with m = m2 } SolveMemberConstraint csenv permitWeakResolution (ndeep+1) m2 trace traitInfo) and CanonicalizeRelevantMemberConstraints (csenv:ConstraintSolverEnv) ndeep trace tps = SolveRelevantMemberConstraints csenv ndeep true trace tps and AddMemberConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace traitInfo support frees = let g = csenv.g let aenv = csenv.EquivEnv let cxst = csenv.SolverState.ExtraCxs // Write the constraint into the global table. That is, // associate the constraint with each type variable in the free variables of the constraint. // This will mean the constraint gets resolved whenever one of these free variables gets solved. frees |> List.iter (fun tp -> let tpn = tp.Stamp let cxs = cxst.FindAll tpn if verbose then dprintf "AddMemberConstraint: tpn = %d, #cxs = %d, m = %a\n" tpn cxs.Length outputRange csenv.m; if verbose && cxs.Length > 10 then cxs |> List.iter (fun (cx,_) -> dprintf " --> cx = %s, fvs = %s\n" (Layout.showL (traitL cx)) (Layout.showL (typarsL (GetFreeTyparsOfMemberConstraint csenv cx)))); // check the constraint is not already listed for this type variable if not (cxs |> List.exists (fun (traitInfo2,_) -> traitsAEquiv g aenv traitInfo traitInfo2)) then match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> csenv.SolverState.ExtraCxs.Remove tpn) :: !actions csenv.SolverState.ExtraCxs.Add (tpn,(traitInfo,m2)) ); // Associate the constraint with each type variable in the support, so if the type variable // gets generalized then this constraint is attached at the binding site. support |> IterateD (fun tp -> AddConstraint csenv ndeep m2 trace tp (TyparConstraint.MayResolveMember(traitInfo,m2))) /// Record a constraint on an inference type variable. and AddConstraint (csenv:ConstraintSolverEnv) ndeep m2 trace tp newConstraint = let g = csenv.g let aenv = csenv.EquivEnv let amap = csenv.amap let denv = csenv.DisplayEnv let m = csenv.m // Type variable sets may not have two trait constraints with the same name, nor // be constrained by different instantiations of the same interface type. // // This results in limitations on generic code, especially "inline" code, which // may require type annotations. See FSharp 1.0 bug 6477. let consistent tpc1 tpc2 = match tpc1,tpc2 with | (TyparConstraint.MayResolveMember(TTrait(tys1,nm1,memFlags1,argtys1,rty1,_),_), TyparConstraint.MayResolveMember(TTrait(tys2,nm2,memFlags2,argtys2,rty2,_),_)) when (memFlags1 = memFlags2 && nm1 = nm2 && // Multiple op_Explicit and op_Implicit constraints can exist for the same type variable. // See FSharp 1.0 bug 6477. not (nm1 = "op_Explicit" || nm1 = "op_Implicit") && argtys1.Length = argtys2.Length && List.lengthsEqAndForall2 (typeEquiv g) tys1 tys2) -> let rty1 = GetFSharpViewOfReturnType g rty1 let rty2 = GetFSharpViewOfReturnType g rty2 Iterate2D (SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace) argtys1 argtys2 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace rty1 rty2 ++ (fun () -> if verbose then dprintf "\n-------------\nmerged constraint for %s, tp = %s\n---------\n" nm1 (Layout.showL (typarDeclL tp)); CompleteD)) | (TyparConstraint.CoercesTo(ty1,_), TyparConstraint.CoercesTo(ty2,_)) -> // Record at most one subtype constraint for each head type. // That is, we forbid constraints by both I and I. // This works because the types on the r.h.s. of subtype // constraints are head-types and so any further inferences are equational. let collect ty = let res = ref [] IterateEntireHierarchyOfType (fun x -> res := x :: !res) g amap m AllowMultiIntfInstantiations.No ty; List.rev !res let parents1 = collect ty1 let parents2 = collect ty2 parents1 |> IterateD (fun ty1Parent -> parents2 |> IterateD (fun ty2Parent -> if not (HaveSameHeadType g ty1Parent ty2Parent) then CompleteD else SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ty1Parent ty2Parent)) | (TyparConstraint.IsEnum (u1,_), TyparConstraint.IsEnum (u2,m2)) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace u1 u2 | (TyparConstraint.IsDelegate (aty1,bty1,_), TyparConstraint.IsDelegate (aty2,bty2,m2)) -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace aty1 aty2 ++ (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace bty1 bty2) | TyparConstraint.SupportsComparison _,TyparConstraint.IsDelegate _ | TyparConstraint.IsDelegate _ , TyparConstraint.SupportsComparison _ | TyparConstraint.IsNonNullableStruct _,TyparConstraint.IsReferenceType _ | TyparConstraint.IsReferenceType _,TyparConstraint.IsNonNullableStruct _ -> ErrorD (Error(FSComp.SR.csStructConstraintInconsistent(),m)) | TyparConstraint.SupportsComparison _,TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _,TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _,TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _,TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _,TyparConstraint.IsUnmanaged _ | TyparConstraint.IsReferenceType _,TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _,TyparConstraint.RequiresDefaultConstructor _ | TyparConstraint.SimpleChoice (_,_),TyparConstraint.SimpleChoice (_,_) -> CompleteD | _ -> CompleteD // See when one constraint implies implies another. // 'a :> ty1 implies 'a :> 'ty2 if the head type name of ty2 (say T2) occursCheck anywhere in the heirarchy of ty1 // If it does occcur, e.g. at instantiation T2, then the check above will have enforced that // T2 = ty2 let implies tpc1 tpc2 = match tpc1,tpc2 with | TyparConstraint.MayResolveMember(trait1,_), TyparConstraint.MayResolveMember(trait2,_) -> traitsAEquiv g aenv trait1 trait2 | TyparConstraint.CoercesTo(ty1,_),TyparConstraint.CoercesTo(ty2,_) -> ExistsSameHeadTypeInHierarchy g amap m ty1 ty2 | TyparConstraint.IsEnum(u1,_),TyparConstraint.IsEnum(u2,_) -> typeEquiv g u1 u2 | TyparConstraint.IsDelegate(aty1,bty1,_),TyparConstraint.IsDelegate(aty2,bty2,_) -> typeEquiv g aty1 aty2 && typeEquiv g bty1 bty2 | TyparConstraint.SupportsComparison _,TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _,TyparConstraint.SupportsEquality _ // comparison implies equality | TyparConstraint.SupportsComparison _,TyparConstraint.SupportsEquality _ | TyparConstraint.SupportsNull _,TyparConstraint.SupportsNull _ | TyparConstraint.IsNonNullableStruct _,TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _, TyparConstraint.IsUnmanaged _ | TyparConstraint.IsReferenceType _,TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _,TyparConstraint.RequiresDefaultConstructor _ -> true | TyparConstraint.SimpleChoice (tys1,_),TyparConstraint.SimpleChoice (tys2,_) -> ListSet.isSubsetOf (typeEquiv g) tys1 tys2 | TyparConstraint.DefaultsTo (priority1,dty1,_), TyparConstraint.DefaultsTo (priority2,dty2,_) -> (priority1 = priority2) && typeEquiv g dty1 dty2 | _ -> false // First ensure constraint conforms with existing constraints // NOTE: QUADRATIC let existingConstraints = tp.Constraints let allCxs = newConstraint :: List.rev existingConstraints begin let rec enforceMutualConsistency i cxs = match cxs with | [] -> CompleteD | cx :: rest -> IterateIdxD (fun j cx2 -> if i = j then CompleteD else consistent cx cx2) allCxs ++ (fun () -> enforceMutualConsistency (i+1) rest) enforceMutualConsistency 0 allCxs end ++ (fun () -> let impliedByExistingConstraints = existingConstraints |> List.exists (fun tpc2 -> implies tpc2 newConstraint) if impliedByExistingConstraints then CompleteD // "Default" constraints propagate softly and can be omitted from explicit declarations of type parameters elif (match tp.Rigidity, newConstraint with | (TyparRigidity.Rigid | TyparRigidity.WillBeRigid), TyparConstraint.DefaultsTo _ -> true | _ -> false) then CompleteD elif tp.Rigidity = TyparRigidity.Rigid then ErrorD (ConstraintSolverMissingConstraint(denv,tp,newConstraint,m,m2)) else (// It is important that we give a warning if a constraint is missing from a // will-be-made-rigid type variable. This is because the existence of these warnings // is relevant to the overload resolution rules (see 'candidateWarnCount' in the overload resolution // implementation). See also FSharp 1.0 bug 5461 (if tp.Rigidity.WarnIfMissingConstraint then WarnD (ConstraintSolverMissingConstraint(denv,tp,newConstraint,m,m2)) else CompleteD) ++ (fun () -> let newConstraints = // Eliminate any constraints where one constraint implies another // Keep constraints in the left-to-right form according to the order they are asserted. // NOTE: QUADRATIC let rec eliminateRedundant cxs acc = match cxs with | [] -> acc | cx :: rest -> eliminateRedundant rest (if List.exists (fun cx2 -> implies cx2 cx) acc then acc else (cx::acc)) eliminateRedundant allCxs [] // Write the constraint into the type variable // Record a entry in the undo trace if one is provided let d = tp.Data let orig = d.typar_constraints begin match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> d.typar_constraints <- orig) :: !actions end; d.typar_constraints <- newConstraints; CompleteD))) and SolveTypSupportsNull (csenv:ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.SupportsNull(m)) elif TypeSatisfiesNullConstraint g ty then CompleteD else match ty with | NullableTy g _ -> ErrorD (ConstraintSolverError(FSComp.SR.csNullableTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty),m,m2)) | _ -> ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotHaveNull(NicePrint.minimalStringOfType denv ty),m,m2)) and SolveTypeSupportsComparison (csenv:ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g let m = csenv.m let amap = csenv.amap let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.SupportsComparison(m)) // Check it isn't ruled out by the user elif isAppTy g ty && HasFSharpAttribute g g.attrib_NoComparisonAttribute (tcrefOfAppTy g ty).Attribs then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison1(NicePrint.minimalStringOfType denv ty),m,m2)) else match ty with | SpecialComparableHeadType g tinst -> tinst |> IterateD (SolveTypeSupportsComparison (csenv:ConstraintSolverEnv) ndeep m2 trace) | _ -> // Check the basic requirement - IComparable or IStructuralComparable or assumed if ExistsSameHeadTypeInHierarchy g amap m2 ty g.mk_IComparable_ty || ExistsSameHeadTypeInHierarchy g amap m2 ty g.mk_IStructuralComparable_ty then // The type is comparable because it implements IComparable if isAppTy g ty then let tcref,tinst = destAppTy g ty // Check the (possibly inferred) structural dependencies (tinst, tcref.TyparsNoRange) ||> Iterate2D (fun ty tp -> if tp.ComparisonConditionalOn then SolveTypeSupportsComparison (csenv:ConstraintSolverEnv) ndeep m2 trace ty else CompleteD) else CompleteD // Give a good error for structural types excluded from the comparison relation because of their fields elif (isAppTy g ty && let tcref = tcrefOfAppTy g ty Augment.TyconIsCandidateForAugmentationWithCompare g tcref.Deref && isNone tcref.GeneratedCompareToWithComparerValues) then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison3(NicePrint.minimalStringOfType denv ty),m,m2)) else ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison2(NicePrint.minimalStringOfType denv ty),m,m2)) and SolveTypSupportsEquality (csenv:ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.SupportsEquality(m)) elif isAppTy g ty && HasFSharpAttribute g g.attrib_NoEqualityAttribute (tcrefOfAppTy g ty).Attribs then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportEquality1(NicePrint.minimalStringOfType denv ty),m,m2)) else match ty with | SpecialEquatableHeadType g tinst -> tinst |> IterateD (SolveTypSupportsEquality (csenv:ConstraintSolverEnv) ndeep m2 trace) | SpecialNotEquatableHeadType g _ -> ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportEquality2(NicePrint.minimalStringOfType denv ty),m,m2)) | _ -> // The type is equatable because it has Object.Equals(...) if isAppTy g ty then let tcref,tinst = destAppTy g ty // Give a good error for structural types excluded from the equality relation because of their fields if (Augment.TyconIsCandidateForAugmentationWithEquals g tcref.Deref && isNone tcref.GeneratedHashAndEqualsWithComparerValues) then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportEquality3(NicePrint.minimalStringOfType denv ty),m,m2)) else // Check the (possibly inferred) structural dependencies (tinst, tcref.TyparsNoRange) ||> Iterate2D (fun ty tp -> if tp.EqualityConditionalOn then SolveTypSupportsEquality (csenv:ConstraintSolverEnv) ndeep m2 trace ty else CompleteD) else CompleteD and SolveTypIsEnum (csenv:ConstraintSolverEnv) ndeep m2 trace ty underlying = trackErrors { let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then return! AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.IsEnum(underlying,m)) elif isEnumTy g ty then do! SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace underlying (underlyingTypeOfEnumTy g ty) return! CompleteD else return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotEnumType(NicePrint.minimalStringOfType denv ty),m,m2)) } and SolveTypIsDelegate (csenv:ConstraintSolverEnv) ndeep m2 trace ty aty bty = trackErrors { let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then return! AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.IsDelegate(aty,bty,m)) elif isDelegateTy g ty then match TryDestStandardDelegateTyp csenv.InfoReader m AccessibleFromSomewhere ty with | Some (tupledArgTy,rty) -> do! SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace aty tupledArgTy do! SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace bty rty | None -> return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeHasNonStandardDelegateType(NicePrint.minimalStringOfType denv ty),m,m2)) else return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotDelegateType(NicePrint.minimalStringOfType denv ty),m,m2)) } and SolveTypIsNonNullableValueType (csenv:ConstraintSolverEnv) ndeep m2 trace ty = trackErrors { let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then return! AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.IsNonNullableStruct(m)) else let underlyingTy = stripTyEqnsAndMeasureEqns g ty if isStructTy g underlyingTy then if tyconRefEq g g.system_Nullable_tcref (tcrefOfAppTy g underlyingTy) then return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeParameterCannotBeNullable(),m,m)) else return! ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresStructType(NicePrint.minimalStringOfType denv ty),m,m2)) } and SolveTypIsUnmanaged (csenv:ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.IsUnmanaged(m)) else let underlyingTy = stripTyEqnsAndMeasureEqns g ty if isUnmanagedTy g underlyingTy then CompleteD else ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresUnmanagedType(NicePrint.minimalStringOfType denv ty),m,m2)) and SolveTypChoice (csenv:ConstraintSolverEnv) ndeep m2 trace ty tys = let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.SimpleChoice(tys,m)) else match stripTyEqns g ty with | TType_app (tc2,[ms]) when tc2.IsMeasureableReprTycon -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m2 trace ms (TType_measure MeasureOne) | _ -> if List.exists (typeEquiv g ty) tys then CompleteD else ErrorD (ConstraintSolverError(FSComp.SR.csTypeNotCompatibleBecauseOfPrintf((NicePrint.minimalStringOfType denv ty), (String.concat "," (List.map (NicePrint.prettyStringOfTy denv) tys))),m,m2)) and SolveTypIsReferenceType (csenv:ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g let m = csenv.m let denv = csenv.DisplayEnv if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.IsReferenceType(m)) elif isRefTy g ty then CompleteD else ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresReferenceSemantics(NicePrint.minimalStringOfType denv ty),m,m)) and SolveTypRequiresDefaultConstructor (csenv:ConstraintSolverEnv) ndeep m2 trace typ = let g = csenv.g let amap = csenv.amap let m = csenv.m let denv = csenv.DisplayEnv let ty = stripTyEqnsAndMeasureEqns g typ if isTyparTy g ty then AddConstraint csenv ndeep m2 trace (destTyparTy g ty) (TyparConstraint.RequiresDefaultConstructor(m)) elif isStructTy g ty && TypeHasDefaultValue g ty then CompleteD elif GetIntrinsicConstructorInfosOfType csenv.InfoReader m ty |> List.filter (IsMethInfoAccessible amap m AccessibleFromEverywhere) |> List.exists (fun x -> x.IsNullary) then if (isAppTy g ty && HasFSharpAttribute g g.attrib_AbstractClassAttribute (tcrefOfAppTy g ty).Attribs) then ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresNonAbstract(NicePrint.minimalStringOfType denv typ),m,m2)) else CompleteD elif isAppTy g ty && (tcrefOfAppTy g ty).PreEstablishedHasDefaultConstructor then CompleteD else ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresPublicDefaultConstructor(NicePrint.minimalStringOfType denv typ),m,m2)) // Parameterized compatibility relation between member signatures. The real work // is done by "equateTypes" and "subsumeTypes" and "subsumeArg" and CanMemberSigsMatchUpToCheck (csenv:ConstraintSolverEnv) permitOptArgs // are we allowed to supply optional and/or "param" arguments? alwaysCheckReturn // always check the return type? unifyTypes // used to equate the formal method instantiation with the actual method instantiation for a generic method, and the return types subsumeTypes // used to compare the "obj" type (subsumeArg: CalledArg -> CallerArg<_> -> OperationResult) // used to compare the arguments for compatibility reqdRetTyOpt calledMeth : ImperativeOperationResult = let g = csenv.g let amap = csenv.amap let m = csenv.m let (CalledMeth(minfo, minst, uminst, callerObjArgTys, _, methodRetTy, assignedNamedProps, _, _, _, unnamedCalledOptArgs, unnamedCalledOutArgs)) = calledMeth // First equate the method instantiation (if any) with the method type parameters if minst.Length <> uminst.Length then ErrorD(Error(FSComp.SR.csTypeInstantiationLengthMismatch(),m)) else Iterate2D unifyTypes minst uminst ++ (fun () -> if not (permitOptArgs || isNil(unnamedCalledOptArgs)) then ErrorD(Error(FSComp.SR.csOptionalArgumentNotPermittedHere(),m)) else let calledObjArgTys = minfo.GetObjArgTypes(amap, m, minst) // Check all the argument types. if calledObjArgTys.Length <> callerObjArgTys.Length then if (calledObjArgTys.Length <> 0) then ErrorD(Error (FSComp.SR.csMemberIsNotStatic(minfo.LogicalName),m)) else ErrorD(Error (FSComp.SR.csMemberIsNotInstance(minfo.LogicalName),m)) else Iterate2D subsumeTypes calledObjArgTys callerObjArgTys ++ (fun () -> (calledMeth.ArgSets |> IterateD (fun argSet -> if argSet.UnnamedCalledArgs.Length <> argSet.UnnamedCallerArgs.Length then ErrorD(Error(FSComp.SR.csArgumentLengthMismatch(),m)) else Iterate2D subsumeArg argSet.UnnamedCalledArgs argSet.UnnamedCallerArgs)) ++ (fun () -> (calledMeth.ParamArrayCalledArgOpt |> OptionD (fun calledArg -> if isArray1DTy g calledArg.Type then let ety = destArrayTy g calledArg.Type calledMeth.ParamArrayCallerArgs |> OptionD (IterateD (fun callerArg -> subsumeArg (CalledArg((0,0),false,NotOptional,false,None,ety)) callerArg)) else CompleteD) ) ++ (fun () -> (calledMeth.ArgSets |> IterateD (fun argSet -> argSet.AssignedNamedArgs |> IterateD (fun (AssignedCalledArg(_,called,caller)) -> subsumeArg called caller))) ++ (fun () -> (assignedNamedProps |> IterateD (fun (AssignedItemSetter(_,item,caller)) -> let name, calledArgTy = match item with | AssignedPropSetter(_,pminfo,pminst) -> let calledArgTy = List.head (List.head (pminfo.GetParamTypes(amap, m, pminst))) pminfo.LogicalName, calledArgTy | AssignedIlFieldSetter(finfo) -> (* Get or set instance IL field *) let calledArgTy = finfo.FieldType(amap,m) finfo.FieldName, calledArgTy | AssignedRecdFieldSetter(rfinfo) -> let calledArgTy = rfinfo.FieldType rfinfo.Name, calledArgTy subsumeArg (CalledArg((-1,0),false, NotOptional,false,Some(name), calledArgTy)) caller) )) ++ (fun () -> // - Always take the return type into account for // -- op_Explicit, op_Implicit // -- methods using tupling of unfilled out args // - Never take into account return type information for constructors match reqdRetTyOpt with | None -> CompleteD | Some _ when minfo.IsConstructor -> CompleteD | Some _ when not alwaysCheckReturn && isNil unnamedCalledOutArgs -> CompleteD | Some reqdRetTy -> let methodRetTy = if isNil unnamedCalledOutArgs then methodRetTy else let outArgTys = unnamedCalledOutArgs |> List.map (fun (CalledArg(_,_,_,_,_,argty)) -> destByrefTy g argty) if isUnitTy g methodRetTy then mkTupledTy g outArgTys else mkTupledTy g (methodRetTy :: outArgTys) unifyTypes reqdRetTy methodRetTy ))))) //------------------------------------------------------------------------- // Resolve IL overloading. // // This utilizes the type inference constraint solving engine in undo mode. //------------------------------------------------------------------------- // F# supports three adhoc conversions at method callsites (note C# supports more, though ones // such as implicit conversions interact badly with type inference). // // 1. The use of "(fun x y -> ...)" when a delegate it expected. This is not part of // the ":>" coercion relationship or inference constraint problem as // such, but is a special rule applied only to method arguments. // // The function AdjustCalledArgType detects this case based on types and needs to know that the type being applied // is a function type. // // 2. The use of "(fun x y -> ...)" when Expression it expected. This is similar to above. // // 3. Two ways to pass a value where a byref is expected. The first (default) // is to use a reference cell, and the interior address is taken automatically // The second is an explicit use of the "address-of" operator "&e". Here we detect the second case, // and record the presence of the sytnax "&e" in the pre-inferred actual type for the method argument. // The function AdjustCalledArgType detects this and refuses to apply the default byref-to-ref transformation. // // The function AdjustCalledArgType also adjusts for optional arguments. and AdjustCalledArgType (csenv:ConstraintSolverEnv) isConstraint (CalledArg(_,_,optArgInfo,_,_,calledArgTy)) (CallerArg(callerArgTy,m,isOptCallerArg,_)) = // #424218 - when overload resolution is part of constraint solving - do not perform type-directed conversions if isConstraint then calledArgTy else (* If the called method argument is a byref type, then the caller may provide a byref or ref *) let g = csenv.g if isByrefTy g calledArgTy then if isByrefTy g callerArgTy then calledArgTy else mkRefCellTy g (destByrefTy g calledArgTy) else // If the called method argument is a delegate type, then the caller may provide a function let calledArgTy = let adjustDelegateTy calledTy = let (SigOfFunctionForDelegate(_,delArgTys,_,fty)) = GetSigOfFunctionForDelegate csenv.InfoReader calledTy m AccessibleFromSomeFSharpCode let delArgTys = (if isNil delArgTys then [g.unit_ty] else delArgTys) if (fst (stripFunTy g callerArgTy)).Length = delArgTys.Length then fty else calledArgTy if isDelegateTy g calledArgTy && isFunTy g callerArgTy then adjustDelegateTy calledArgTy elif isLinqExpressionTy g calledArgTy && isFunTy g callerArgTy then let origArgTy = calledArgTy let calledArgTy = destLinqExpressionTy g calledArgTy if isDelegateTy g calledArgTy then adjustDelegateTy calledArgTy else // BUG 435170: called arg is Expr<'t> where 't is not delegate - such conversion is not legal -> return original type origArgTy else calledArgTy // Adjust the called argument type to take into account whether the caller's argument is M(?arg=Some(3)) or M(arg=1) // If the called method argument is optional with type Option, then the caller may provide a T, unless their argument is propogating-optional (i.e. isOptCallerArg) let calledArgTy = match optArgInfo with | NotOptional -> calledArgTy | CalleeSide when not isOptCallerArg && isOptionTy g calledArgTy -> destOptionTy g calledArgTy | CalleeSide | CallerSide _ -> calledArgTy calledArgTy and private DefinitelyEquiv (csenv:ConstraintSolverEnv) isConstraint calledArg (CallerArg(callerArgTy,m,_,_) as callerArg) = let calledArgTy = AdjustCalledArgType csenv isConstraint calledArg callerArg if not (typeEquiv csenv.g calledArgTy callerArgTy) then ErrorD(Error(FSComp.SR.csArgumentTypesDoNotMatch(),m)) else CompleteD // Assert a subtype constraint, and wrap an ErrorsFromAddingSubsumptionConstraint error around any failure // to allow us to report the outer types involved in the constraint and private SolveTypSubsumesTypWithReport (csenv:ConstraintSolverEnv) ndeep m trace ty1 ty2 = TryD (fun () -> SolveTypSubsumesTypKeepAbbrevs csenv ndeep m trace ty1 ty2) (fun res -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g,csenv.DisplayEnv,ty1,ty2,res,m))) and private SolveTypEqualsTypWithReport (csenv:ConstraintSolverEnv) ndeep m trace ty1 ty2 = TryD (fun () -> SolveTypEqualsTypKeepAbbrevs csenv ndeep m trace ty1 ty2) (fun res -> ErrorD (ErrorFromAddingTypeEquation(csenv.g,csenv.DisplayEnv,ty1,ty2,res,m))) and ArgsMustSubsumeOrConvert (csenv:ConstraintSolverEnv) ndeep trace isConstraint (CalledArg(_,isParamArrayArg,_,_,_,_) as calledArg) (CallerArg(callerArgTy,m,_,_) as callerArg) = let g = csenv.g let amap = csenv.amap let calledArgTy = AdjustCalledArgType csenv isConstraint calledArg callerArg SolveTypSubsumesTypWithReport csenv ndeep m trace calledArgTy callerArgTy ++ (fun () -> if isParamArrayArg && isAppTy g calledArgTy && (let _,tinstf = destAppTy g calledArgTy tinstf.Length = 1 && TypesFeasiblyEquiv ndeep g amap m (List.head tinstf) callerArgTy) then ErrorD(Error(FSComp.SR.csMethodExpectsParams(),m)) else CompleteD) and MustUnify csenv ndeep trace ty1 ty2 = SolveTypEqualsTypWithReport csenv ndeep csenv.m trace ty1 ty2 and MustUnifyInsideUndo csenv ndeep trace ty1 ty2 = SolveTypEqualsTypWithReport csenv ndeep csenv.m (WithTrace trace) ty1 ty2 and ArgsMustSubsumeOrConvertInsideUndo (csenv:ConstraintSolverEnv) ndeep trace isConstraint calledArg (CallerArg(callerArgTy,m,_,_) as callerArg) = let calledArgTy = AdjustCalledArgType csenv isConstraint calledArg callerArg SolveTypSubsumesTypWithReport csenv ndeep m (WithTrace trace) calledArgTy callerArgTy and TypesMustSubsumeOrConvertInsideUndo (csenv:ConstraintSolverEnv) ndeep trace m calledArgTy callerArgTy = SolveTypSubsumesTypWithReport csenv ndeep m trace calledArgTy callerArgTy and ArgsEquivInsideUndo (csenv:ConstraintSolverEnv) _trace isConstraint calledArg (CallerArg(callerArgTy,m,_,_) as callerArg) = let calledArgTy = AdjustCalledArgType csenv isConstraint calledArg callerArg if not (typeEquiv csenv.g calledArgTy callerArgTy) then ErrorD(Error(FSComp.SR.csArgumentTypesDoNotMatch(),m)) else CompleteD and ReportNoCandidatesError (csenv:ConstraintSolverEnv) (nUnnamedCallerArgs,nNamedCallerArgs) methodName ad (calledMethGroup:CalledMeth<_> list) = let amap = csenv.amap let m = csenv.m let denv = csenv.DisplayEnv match (calledMethGroup |> List.partition (CalledMeth.GetMethod >> IsMethInfoAccessible amap m ad)), (calledMethGroup |> List.partition (fun cmeth -> cmeth.HasCorrectObjArgs(amap,m,ad))), (calledMethGroup |> List.partition (fun cmeth -> cmeth.HasCorrectArity)), (calledMethGroup |> List.partition (fun cmeth -> cmeth.HasCorrectGenericArity)), (calledMethGroup |> List.partition (fun cmeth -> cmeth.AssignsAllNamedArgs)) with // No version accessible | ([],others),_,_,_,_ -> if nonNil others then ErrorD (Error (FSComp.SR.csMemberIsNotAccessible2(methodName, (showAccessDomain ad)), m)) else ErrorD (Error (FSComp.SR.csMemberIsNotAccessible(methodName, (showAccessDomain ad)), m)) | _,([],(cmeth::_)),_,_,_ -> // Check all the argument types. if (cmeth.CalledObjArgTys(amap,m).Length <> 0) then ErrorD(Error (FSComp.SR.csMethodIsNotAStaticMethod(methodName),m)) else ErrorD(Error (FSComp.SR.csMethodIsNotAnInstanceMethod(methodName),m)) // One method, incorrect name/arg assignment | _,_,_,_,([],[cmeth]) -> let msgNum,msgText = FSComp.SR.csRequiredSignatureIs(NicePrint.stringOfMethInfo amap m denv cmeth.Method) let msgNum,msgText,msgRange = match cmeth.UnassignedNamedArgs with | CallerNamedArg(id,_) :: _ -> (msgNum,FSComp.SR.csMemberHasNoArgumentOrReturnProperty(methodName, id.idText, msgText),id.idRange) | [] -> (msgNum,msgText,m) ErrorD (Error ((msgNum,msgText),msgRange)) // One method, incorrect number of arguments provided by the user | _,_,([],[cmeth]),_,_ when not cmeth.HasCorrectArity -> let minfo = cmeth.Method let nReqd = cmeth.TotalNumUnnamedCalledArgs let nReqdNamed = cmeth.TotalNumAssignedNamedArgs let nActual = cmeth.TotalNumUnnamedCallerArgs let nreqdTyArgs = cmeth.NumCalledTyArgs let nactualTyArgs = cmeth.NumCallerTyArgs if nActual <> nReqd then if nReqdNamed > 0 || cmeth.NumAssignedProps > 0 then if nReqd > nActual then let errid = let suggestNamesForMissingArguments = if nReqd > nActual then let missingArgs = List.drop nReqd cmeth.AllUnnamedCalledArgs match NamesOfCalledArgs missingArgs with | [] -> (false, "") | names -> (true, String.concat ";" names) else (false, "") match suggestNamesForMissingArguments with | false, _ -> if nActual = 0 then (1, "") else (2, "") | true, str -> if nActual = 0 then (3, str) else (4, str) match errid with | 1, _ -> ErrorD (Error (FSComp.SR.csMemberSignatureMismatch(methodName, (nReqd-nActual), (NicePrint.stringOfMethInfo amap m denv minfo)), m)) | 2, _ -> ErrorD (Error (FSComp.SR.csMemberSignatureMismatch2(methodName, (nReqd-nActual), (NicePrint.stringOfMethInfo amap m denv minfo)), m)) | 3, str -> ErrorD (Error (FSComp.SR.csMemberSignatureMismatch3(methodName, (nReqd-nActual), (NicePrint.stringOfMethInfo amap m denv minfo), str), m)) | 4, str -> ErrorD (Error (FSComp.SR.csMemberSignatureMismatch4(methodName, (nReqd-nActual), (NicePrint.stringOfMethInfo amap m denv minfo), str), m)) | _ -> failwith "unreachable" else ErrorD (Error (FSComp.SR.csMemberSignatureMismatchArityNamed(methodName, (nReqd+nReqdNamed), nActual, nReqdNamed, (NicePrint.stringOfMethInfo amap m denv minfo)), m)) else ErrorD (Error (FSComp.SR.csMemberSignatureMismatchArity(methodName, nReqd, nActual, (NicePrint.stringOfMethInfo amap m denv minfo)), m)) else ErrorD (Error (FSComp.SR.csMemberSignatureMismatchArityType(methodName, nreqdTyArgs, nactualTyArgs, (NicePrint.stringOfMethInfo amap m denv minfo)), m)) // One or more accessible, all the same arity, none correct | ((cmeth :: cmeths2),_),_,_,_,_ when not cmeth.HasCorrectArity && cmeths2 |> List.forall (fun cmeth2 -> cmeth.TotalNumUnnamedCalledArgs = cmeth2.TotalNumUnnamedCalledArgs) -> ErrorD (Error (FSComp.SR.csMemberNotAccessible(methodName, (cmeth.ArgSets |> List.sumBy (fun x -> x.NumUnnamedCalledArgs)), methodName, cmeth.TotalNumUnnamedCalledArgs),m)) // Many methods, all with incorrect number of generic arguments | _,_,_,([],(cmeth :: _)),_ -> let msg = FSComp.SR.csIncorrectGenericInstantiation((showAccessDomain ad), methodName, cmeth.NumCallerTyArgs) ErrorD (Error (msg,m)) // Many methods of different arities, all incorrect | _,_,([],(cmeth :: _)),_,_ -> let minfo = cmeth.Method ErrorD (Error (FSComp.SR.csMemberOverloadArityMismatch(methodName, cmeth.TotalNumUnnamedCallerArgs, (List.sum minfo.NumArgs)),m)) | _ -> let msg = if nNamedCallerArgs = 0 then FSComp.SR.csNoMemberTakesTheseArguments((showAccessDomain ad), methodName, nUnnamedCallerArgs) else let s = calledMethGroup |> List.map (fun cmeth -> cmeth.UnassignedNamedArgs |> List.map (fun na -> na.Name)|> Set.ofList) |> Set.intersectMany if s.IsEmpty then FSComp.SR.csNoMemberTakesTheseArguments2((showAccessDomain ad), methodName, nUnnamedCallerArgs, nNamedCallerArgs) else let sample = s.MinimumElement FSComp.SR.csNoMemberTakesTheseArguments3((showAccessDomain ad), methodName, nUnnamedCallerArgs, sample) ErrorD (Error (msg,m)) // Resolve the overloading of a method // This is used after analyzing the types of arguments and ResolveOverloading (csenv:ConstraintSolverEnv) trace // The undo trace, if any methodName // The name of the method being called, for error reporting ndeep // Depth of inference isConstraint // We're doing overload resolution as part of constraint solving, where special rules apply for op_Explicit and op_Implicit constraints. callerArgCounts // How many named/unnamed args id the caller provide? ad // The access domain of the caller, e.g. a module, type etc. calledMethGroup // The set of methods being called permitOptArgs // Can we supply optional arguments? reqdRetTyOpt // The expected return type, if known = let g = csenv.g let amap = csenv.amap let m = csenv.m let denv = csenv.DisplayEnv let isOpConversion = (methodName = "op_Explicit" || methodName = "op_Implicit") // See what candidates we have based on name and arity let candidates = calledMethGroup |> List.filter (fun cmeth -> cmeth.IsCandidate(g,amap,m,ad)) let calledMethOpt, errors = match calledMethGroup,candidates with | _,[calledMeth] when not isOpConversion -> Some calledMeth, CompleteD | [],_ when not isOpConversion -> None, ErrorD (Error (FSComp.SR.csMethodNotFound(methodName),m)) | _,[] when not isOpConversion -> None, ReportNoCandidatesError csenv callerArgCounts methodName ad calledMethGroup | _,_ -> // - Always take the return type into account for // -- op_Explicit, op_Implicit // -- candidate method sets that potentially use tupling of unfilled out args let alwaysCheckReturn = isOpConversion || candidates |> List.exists (fun cmeth -> cmeth.HasOutArgs) // Exact match rule. // // See what candidates we have based on current inferred type information // and _exact_ matches of argument types. match candidates |> FilterEachThenUndo (fun newTrace calledMeth -> CanMemberSigsMatchUpToCheck csenv permitOptArgs alwaysCheckReturn (MustUnifyInsideUndo csenv ndeep newTrace) (TypesMustSubsumeOrConvertInsideUndo csenv ndeep (WithTrace newTrace) m) (ArgsEquivInsideUndo csenv Trace.New isConstraint) reqdRetTyOpt calledMeth) with | [(calledMeth,_)] -> Some calledMeth, CompleteD | _ -> // Now determine the applicable methods. // Subsumption on arguments is allowed. let applicable = candidates |> FilterEachThenUndo (fun newTrace candidate -> CanMemberSigsMatchUpToCheck csenv permitOptArgs alwaysCheckReturn (MustUnifyInsideUndo csenv ndeep newTrace) (TypesMustSubsumeOrConvertInsideUndo csenv ndeep (WithTrace newTrace) m) (ArgsMustSubsumeOrConvertInsideUndo csenv ndeep newTrace isConstraint) reqdRetTyOpt candidate) let failOverloading (msg : string) errors = // Try to extract information to give better error for ambiguous op_Explicit and op_Implicit let convOpData = if isOpConversion then match calledMethGroup, reqdRetTyOpt with | h :: _, Some rty -> Some (h.Method.EnclosingType, rty) | _ -> None else None match convOpData with | Some (fromTy, toTy) -> UnresolvedConversionOperator (denv, fromTy, toTy, m) | None -> // Otherwise collect a list of possible overloads let overloads = GetPossibleOverloads amap m denv errors // if list of overloads is not empty - append line with "The available overloads are shown below..." let msg = if List.isEmpty overloads then msg else sprintf "%s %s" msg (FSComp.SR.csSeeAvailableOverloads ()) UnresolvedOverloading (denv, overloads, msg, m) match applicable with | [] -> // OK, we failed. Collect up the errors from overload resolution and the possible overloads let errors = (candidates |> List.choose (fun calledMeth -> match CollectThenUndo (fun newTrace -> CanMemberSigsMatchUpToCheck csenv permitOptArgs alwaysCheckReturn (MustUnifyInsideUndo csenv ndeep newTrace) (TypesMustSubsumeOrConvertInsideUndo csenv ndeep (WithTrace newTrace) m) (ArgsMustSubsumeOrConvertInsideUndo csenv ndeep newTrace isConstraint) reqdRetTyOpt calledMeth) with | OkResult _ -> None | ErrorResult(_,exn) -> Some (calledMeth, exn))) None,ErrorD (failOverloading (FSComp.SR.csNoOverloadsFound methodName) errors) | [(calledMeth,_)] -> Some calledMeth, CompleteD | applicableMeths -> /// Compare two things by the given predicate. /// If the predicate returns true for x1 and false for x2, then x1 > x2 /// If the predicate returns false for x1 and true for x2, then x1 < x2 /// Otherwise x1 = x2 // Note: Relies on 'compare' respecting true > false let compareCond (p : 'T -> 'T -> bool) x1 x2 = compare (p x1 x2) (p x2 x1) /// Compare types under the feasibly-subsumes ordering let compareTypes ty1 ty2 = (ty1,ty2) ||> compareCond (fun x1 x2 -> TypeFeasiblySubsumesType ndeep csenv.g csenv.amap m x2 CanCoerce x1) /// Compare arguments under the feasibly-subsumes ordering and the adhoc Func-is-better-than-other-delegates rule let compareArg (CalledArg(_,_,_,_,_,argType1)) (CalledArg(_,_,_,_,_,argType2)) = let c = compareTypes argType1 argType2 if c <> 0 then c else // Func<_> is always considered better than any other delegate type let c = (argType1, argType2) ||> compareCond (fun ty1 ty2 -> (match tryDestAppTy csenv.g ty1 with | Some tcref1 when (tcref1.DisplayName = "Func" && (match tcref1.PublicPath with Some p -> p.EnclosingPath = [| "System" |] | _ -> false) && isDelegateTy g ty1 && isDelegateTy g ty2) -> true | _ -> false)) if c <> 0 then c else 0 let better (candidate:CalledMeth<_>, candidateWarnCount) (other:CalledMeth<_>, otherWarnCount) = // Prefer methods that don't give "this code is less generic" warnings // Note: Relies on 'compare' respecting true > false let c = compare (candidateWarnCount = 0) (otherWarnCount = 0) if c <> 0 then c else // Prefer methods that don't use param array arg // Note: Relies on 'compare' respecting true > false let c = compare (not candidate.UsesParamArrayConversion) (not other.UsesParamArrayConversion) if c <> 0 then c else // Prefer methods with more precise param array arg type let c = if candidate.UsesParamArrayConversion && other.UsesParamArrayConversion then compareTypes (candidate.ParamArrayElementType(g)) (other.ParamArrayElementType(g)) else 0 if c <> 0 then c else // Prefer methods that don't use out args // Note: Relies on 'compare' respecting true > false let c = compare (not candidate.HasOutArgs) (not other.HasOutArgs) if c <> 0 then c else // Prefer methods that don't use optional args // Note: Relies on 'compare' respecting true > false let c = compare (not candidate.HasOptArgs) (not other.HasOptArgs) if c <> 0 then c else // check regular args. The argument counts will only be different if one is using param args let c = if (candidate.TotalNumUnnamedCalledArgs = other.TotalNumUnnamedCalledArgs) then // For extension members, we also include the object argument type, if any in the comparison set // THis matches C#, where all extension members are treated and resolved as "static" methods calls let cs = (if candidate.Method.IsExtensionMember && other.Method.IsExtensionMember then let objArgTys1 = candidate.CalledObjArgTys(amap,m) let objArgTys2 = other.CalledObjArgTys(amap,m) if objArgTys1.Length = objArgTys2.Length then List.map2 compareTypes objArgTys1 objArgTys2 else [] else []) @ ((candidate.AllUnnamedCalledArgs, other.AllUnnamedCalledArgs) ||> List.map2 compareArg ) // "all args are at least as good, and one argument is actually better" if cs |> List.forall (fun x -> x >= 0) && cs |> List.exists (fun x -> x > 0) then 1 // "all args are at least as bad, and one argument is actually worse" elif cs |> List.forall (fun x -> x <= 0) && cs |> List.exists (fun x -> x < 0) then -1 // "argument lists are incomparable" else 0 else 0 if c <> 0 then c else // prefer non-extension methods let c = compare (not candidate.Method.IsExtensionMember) (not other.Method.IsExtensionMember) if c <> 0 then c else // between extension methods, prefer most recently opened let c = if candidate.Method.IsExtensionMember && other.Method.IsExtensionMember then compare candidate.Method.Priority other.Method.Priority else 0 if c <> 0 then c else // Prefer non-generic methods // Note: Relies on 'compare' respecting true > false let c = compare candidate.CalledTyArgs.IsEmpty other.CalledTyArgs.IsEmpty if c <> 0 then c else 0 let bestMethods = applicableMeths |> List.choose (fun candidate -> if applicableMeths |> List.forall (fun other -> candidate === other || // REVIEW: change this needless use of pointer equality to be an index comparison let res = better candidate other //eprintfn "\n-------\nCandidate: %s\nOther: %s\nResult: %d\n" (NicePrint.stringOfMethInfo amap m denv (fst candidate).Method) (NicePrint.stringOfMethInfo amap m denv (fst other).Method) res res > 0) then Some(candidate) else None) match bestMethods with | [(calledMeth,_)] -> Some(calledMeth), CompleteD | bestMethods -> let methodNames = let methods = // use the most precise set // - if after filtering bestMethods still contains something - use it // - otherwise use applicableMeths or initial set of candidate methods match bestMethods with | [] -> match applicableMeths with | [] -> candidates | m -> m |> List.map fst | m -> m |> List.map fst methods |> List.map (fun cmeth -> NicePrint.stringOfMethInfo amap m denv cmeth.Method) |> List.sort let msg = FSComp.SR.csMethodIsOverloaded methodName let msg = match methodNames with | [] -> msg | names -> sprintf "%s %s" msg (FSComp.SR.csCandidates (String.concat ", " names)) None, ErrorD (failOverloading msg []) // If we've got a candidate solution: make the final checks - no undo here! // Allow subsumption on arguments. Include the return type. // Unify return types. match calledMethOpt with | Some(calledMeth) -> calledMethOpt, errors ++ (fun () -> CanMemberSigsMatchUpToCheck csenv permitOptArgs true (MustUnify csenv ndeep trace) (TypesMustSubsumeOrConvertInsideUndo csenv ndeep trace m)// REVIEW: this should not be an "InsideUndo" operation (ArgsMustSubsumeOrConvert csenv ndeep trace isConstraint) reqdRetTyOpt calledMeth) | None -> None, errors /// This is used before analyzing the types of arguments in a single overload resolution let UnifyUniqueOverloading (csenv:ConstraintSolverEnv) callerArgCounts methodName ad (calledMethGroup:CalledMeth list) reqdRetTy // The expected return type, if known = let g = csenv.g let amap = csenv.amap let m = csenv.m (* See what candidates we have based on name and arity *) let candidates = calledMethGroup |> List.filter (fun cmeth -> cmeth.IsCandidate(g,amap,m,ad)) let ndeep = 0 match calledMethGroup,candidates with | _,[calledMeth] -> (* Only one candidate found - we thus know the types we expect of arguments *) CanMemberSigsMatchUpToCheck csenv true // permitOptArgs true // always check return type (MustUnify csenv ndeep NoTrace) (TypesMustSubsumeOrConvertInsideUndo csenv ndeep NoTrace m) (ArgsMustSubsumeOrConvert csenv ndeep NoTrace false) // UnifyUniqueOverloading is not called in case of trait call - pass isConstraint=false (Some reqdRetTy) calledMeth ++ (fun () -> ResultD true) | [],_ -> ErrorD (Error (FSComp.SR.csMethodNotFound(methodName),m)) | _,[] -> ReportNoCandidatesError csenv callerArgCounts methodName ad calledMethGroup ++ (fun () -> ResultD false) | _ -> ResultD false let EliminateConstraintsForGeneralizedTypars csenv trace (generalizedTypars: Typars) = // Remove the global constraints where this type variable appears in the support of the constraint generalizedTypars |> List.iter (fun tp -> let tpn = tp.Stamp let cxst = csenv.SolverState.ExtraCxs let cxs = cxst.FindAll tpn if isNil cxs then () else if verbose then dprintf "EliminateConstraintsForGeneralizedTypars: #cxs = %d, m = %a\n" cxs.Length outputRange csenv.m; cxs |> List.iter (fun cx -> cxst.Remove tpn; match trace with | NoTrace -> () | WithTrace (Trace actions) -> actions := (fun () -> (csenv.SolverState.ExtraCxs.Add (tpn,cx))) :: !actions) ) //------------------------------------------------------------------------- // Main entry points to constraint solver (some backdoors are used for // some constructs) // // No error recovery here : we do that on a per-expression basis. //------------------------------------------------------------------------- let AddCxTypeEqualsType denv css m ty1 ty2 = SolveTypEqualsTypWithReport (MakeConstraintSolverEnv css m denv) 0 m NoTrace ty1 ty2 |> RaiseOperationResult let UndoIfFailed f = let trace = Trace.New() let res = try f trace |> CheckNoErrorsAndGetWarnings with e -> None match res with | None -> // Don't report warnings if we failed trace.Undo(); false | Some warns -> // Report warnings if we succeeded ReportWarnings warns; true let AddCxTypeEqualsTypeUndoIfFailed denv css m ty1 ty2 = UndoIfFailed (fun trace -> SolveTypEqualsTypKeepAbbrevs (MakeConstraintSolverEnv css m denv) 0 m (WithTrace(trace)) ty1 ty2) let AddCxTypeMustSubsumeTypeUndoIfFailed denv css m ty1 ty2 = UndoIfFailed (fun trace -> SolveTypSubsumesTypKeepAbbrevs (MakeConstraintSolverEnv css m denv) 0 m (WithTrace(trace)) ty1 ty2) let AddCxTypeMustSubsumeType denv css m trace ty1 ty2 = SolveTypSubsumesTypWithReport (MakeConstraintSolverEnv css m denv) 0 m trace ty1 ty2 |> RaiseOperationResult let AddCxMethodConstraint denv css m trace traitInfo = TryD (fun () -> SolveMemberConstraint (MakeConstraintSolverEnv css m denv) false 0 m trace traitInfo ++ (fun _ -> CompleteD)) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeMustSupportNull denv css m trace ty = TryD (fun () -> SolveTypSupportsNull (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeMustSupportComparison denv css m trace ty = TryD (fun () -> SolveTypeSupportsComparison (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeMustSupportEquality denv css m trace ty = TryD (fun () -> SolveTypSupportsEquality (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeMustSupportDefaultCtor denv css m trace ty = TryD (fun () -> SolveTypRequiresDefaultConstructor (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeIsReferenceType denv css m trace ty = TryD (fun () -> SolveTypIsReferenceType (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeIsValueType denv css m trace ty = TryD (fun () -> SolveTypIsNonNullableValueType (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeIsUnmanaged denv css m trace ty = TryD (fun () -> SolveTypIsUnmanaged (MakeConstraintSolverEnv css m denv) 0 m trace ty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeIsEnum denv css m trace ty underlying = TryD (fun () -> SolveTypIsEnum (MakeConstraintSolverEnv css m denv) 0 m trace ty underlying) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let AddCxTypeIsDelegate denv css m trace ty aty bty = TryD (fun () -> SolveTypIsDelegate (MakeConstraintSolverEnv css m denv) 0 m trace ty aty bty) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult let CodegenWitnessThatTypSupportsTraitConstraint tcVal g amap m (traitInfo:TraitConstraintInfo) argExprs = let css = { g=g;amap=amap; TcVal = tcVal ExtraCxs=HashMultiMap(10, HashIdentity.Structural) InfoReader=new InfoReader(g,amap) } let csenv = MakeConstraintSolverEnv css m (DisplayEnv.Empty g) SolveMemberConstraint csenv true 0 m NoTrace traitInfo ++ (fun _res -> let sln = match traitInfo.Solution with | None -> Choice4Of4() | Some sln -> match sln with | ILMethSln(typ,extOpt,mref,minst) -> let tcref,tinst = destAppTy g typ let scoref,enc,tdef = tcref.ILTyconInfo let mdef = IL.resolveILMethodRef tdef mref let tref = IL.mkRefForNestedILTypeDef scoref (enc,tdef) let mtps = Import.ImportILGenericParameters (fun () -> amap) m scoref tinst mdef.GenericParams Choice1Of4 (ILMeth(g,ILMethInfo(ILTypeInfo(tcref,tref,tinst,tdef),extOpt,mdef,mtps),None),minst) | FSMethSln(typ, vref,minst) -> Choice1Of4 (FSMeth(g,typ,vref,None),minst) | FSRecdFieldSln(tinst,rfref,isSetProp) -> Choice2Of4 (tinst,rfref,isSetProp) | BuiltInSln -> Choice4Of4 () | ClosedExprSln expr -> Choice3Of4 expr match sln with | Choice1Of4(minfo,methArgTys) -> let argExprs = // FIX for #421894 - typechecker assumes that coercion can be applied for the trait calls arguments but codegen doesn't emit coercion operations // result - generation of non-verifyable code // fix - apply coercion for the arguments (excluding 'receiver' argument in instance calls) // flatten list of argument types (looks like trait calls with curried arguments are not supported so we can just convert argument list in straighforward way) let argTypes = minfo.GetParamTypes(amap, m, methArgTys) |> List.concat // do not apply coercion to the 'receiver' argument let receiverArgOpt, argExprs = if minfo.IsInstance then match argExprs with | h::t -> Some h, t | argExprs -> None, argExprs else None, argExprs let convertedArgs = (argExprs, argTypes) ||> List.map2 (fun expr expectedTy -> mkCoerceIfNeeded g expectedTy (tyOfExpr g expr) expr) match receiverArgOpt with | Some r -> r::convertedArgs | None -> convertedArgs // Fix bug 1281: If we resolve to an instance method on a struct and we haven't yet taken // the address of the object then go do that if minfo.IsStruct && minfo.IsInstance && (match argExprs with [] -> false | h :: _ -> not (isByrefTy g (tyOfExpr g h))) then let h,t = List.headAndTail argExprs let wrap,h' = mkExprAddrOfExpr g true false PossiblyMutates h None m ResultD (Some (wrap (Expr.Op(TOp.TraitCall(traitInfo), [], (h' :: t), m)))) else ResultD (Some (Infos.MakeMethInfoCall amap m minfo methArgTys argExprs )) | Choice2Of4 (tinst,rfref,isSet) -> let res = match isSet, rfref.RecdField.IsStatic, argExprs.Length with | true, true, 1 -> Some (mkStaticRecdFieldSet (rfref, tinst, argExprs.[0], m)) | true, false, 2 -> Some (mkRecdFieldSet g (argExprs.[0], rfref, tinst, argExprs.[1], m)) | false, true, 0 -> Some (mkStaticRecdFieldGet (rfref, tinst, m)) | false, false, 1 -> Some (mkRecdFieldGet g (argExprs.[0], rfref, tinst, m)) | _ -> None ResultD res | Choice3Of4 expr -> ResultD (Some (MakeApplicationAndBetaReduce g (expr, tyOfExpr g expr, [], argExprs, m))) | Choice4Of4 () -> ResultD None) let ChooseTyparSolutionAndSolve css denv tp = let g = css.g let amap = css.amap let max,m = ChooseTyparSolutionAndRange g amap tp let csenv = MakeConstraintSolverEnv css m denv TryD (fun () -> SolveTyparEqualsTyp csenv 0 m NoTrace (mkTyparTy tp) max) (fun err -> ErrorD(ErrorFromApplyingDefault(g,denv,tp,max,err,m))) |> RaiseOperationResult let CheckDeclaredTypars denv css m typars1 typars2 = TryD (fun () -> CollectThenUndo (fun trace -> SolveTypEqualsTypEqns (MakeConstraintSolverEnv css m denv) 0 m (WithTrace(trace)) (List.map mkTyparTy typars1) (List.map mkTyparTy typars2))) (fun res -> ErrorD (ErrorFromAddingConstraint(denv,res,m))) |> RaiseOperationResult /// An approximation used during name resolution for intellisense to eliminate extension members which will not /// apply to a particular object argument. This is given as the isApplicableMeth argument to the partial name resolution /// functions in nameres.fs. let IsApplicableMethApprox g amap m (minfo:MethInfo) availObjTy = // Prepare an instance of a constraint solver // If it's an instance method, then try to match the object argument against the required object argument if minfo.IsExtensionMember then let css = { g=g;amap=amap; TcVal = (fun _ -> failwith "should not be called") ExtraCxs=HashMultiMap(10, HashIdentity.Structural) InfoReader=new InfoReader(g,amap) } let csenv = MakeConstraintSolverEnv css m (DisplayEnv.Empty g) let minst = FreshenMethInfo m minfo match minfo.GetObjArgTypes(amap, m, minst) with | [reqdObjTy] -> TryD (fun () -> SolveTypSubsumesTyp csenv 0 m NoTrace reqdObjTy availObjTy ++ (fun () -> ResultD true)) (fun _err -> ResultD false) |> CommitOperationResult | _ -> true else true fsharp-3.0.34/src/fsharp/unsolved.fs0000775000175000017500000002335612260314606016347 0ustar chrischris//------------------------------------------------------------------------- // Find unsolved, uninstantiated type variables //------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.FindUnsolved open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Infos type env = Nix type cenv = { g: TcGlobals; amap: Import.ImportMap; denv: DisplayEnv; mutable unsolved: Typars } let accTy cenv _env ty = (freeInType CollectTyparsNoCaching (tryNormalizeMeasureInType cenv.g ty)).FreeTypars |> Zset.iter (fun tp -> if (tp.Rigidity <> TyparRigidity.Rigid) then cenv.unsolved <- tp :: cenv.unsolved) let accTypeInst cenv env tyargs = tyargs |> List.iter (accTy cenv env) //-------------------------------------------------------------------------- // walk exprs etc //-------------------------------------------------------------------------- let rec accExpr (cenv:cenv) (env:env) expr = let expr = stripExpr expr match expr with | Expr.Sequential (e1,e2,_,_,_) -> accExpr cenv env e1; accExpr cenv env e2 | Expr.Let (bind,body,_,_) -> accBind cenv env bind ; accExpr cenv env body | Expr.Const (_,_,ty) -> accTy cenv env ty | Expr.Val (_v,_vFlags,_m) -> () | Expr.Quote(ast,_,_,_m,ty) -> accExpr cenv env ast; accTy cenv env ty; | Expr.Obj (_,typ,basev,basecall,overrides,iimpls,_m) -> accTy cenv env typ accExpr cenv env basecall; accMethods cenv env basev overrides ; accIntfImpls cenv env basev iimpls; | Expr.Op (c,tyargs,args,m) -> accOp cenv env (c,tyargs,args,m) | Expr.App(f,fty,tyargs,argsl,_m) -> accTy cenv env fty; accTypeInst cenv env tyargs; accExpr cenv env f; accExprs cenv env argsl // REVIEW: fold the next two cases together | Expr.Lambda(_,_ctorThisValOpt,_baseValOpt,argvs,_body,m,rty) -> let topValInfo = ValReprInfo ([],[argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)],ValReprInfo.unnamedRetVal) let ty = mkMultiLambdaTy m argvs rty accLambdas cenv env topValInfo expr ty | Expr.TyLambda(_,tps,_body,_m,rty) -> let topValInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps,[],ValReprInfo.unnamedRetVal) accTy cenv env rty; let ty = tryMkForallTy tps rty accLambdas cenv env topValInfo expr ty | Expr.TyChoose(_tps,e1,_m) -> accExpr cenv env e1 | Expr.Match(_,_exprm,dtree,targets,m,ty) -> accTy cenv env ty; accDTree cenv env dtree; accTargets cenv env m ty targets; | Expr.LetRec (binds,e,_m,_) -> accBinds cenv env binds; accExpr cenv env e | Expr.StaticOptimization (constraints,e2,e3,_m) -> accExpr cenv env e2; accExpr cenv env e3; constraints |> List.iter (function | TTyconEqualsTycon(ty1,ty2) -> accTy cenv env ty1; accTy cenv env ty2 | TTyconIsStruct(ty1) -> accTy cenv env ty1) | Expr.Link _eref -> failwith "Unexpected reclink" and accMethods cenv env baseValOpt l = List.iter (accMethod cenv env baseValOpt) l and accMethod cenv env _baseValOpt (TObjExprMethod(_slotsig,_attribs,_tps,vs,e,_m)) = vs |> List.iterSquared (accVal cenv env); accExpr cenv env e and accIntfImpls cenv env baseValOpt l = List.iter (accIntfImpl cenv env baseValOpt) l and accIntfImpl cenv env baseValOpt (ty,overrides) = accTy cenv env ty accMethods cenv env baseValOpt overrides and accOp cenv env (op,tyargs,args,_m) = // Special cases accTypeInst cenv env tyargs; accExprs cenv env args; match op with // Handle these as special cases since mutables are allowed inside their bodies | TOp.ILCall (_,_,_,_,_,_,_,_,enclTypeArgs,methTypeArgs,tys) -> accTypeInst cenv env enclTypeArgs; accTypeInst cenv env methTypeArgs; accTypeInst cenv env tys | TOp.TraitCall(TTrait(tys,_nm,_,argtys,rty,_sln)) -> argtys |> accTypeInst cenv env ; rty |> Option.iter (accTy cenv env) tys |> List.iter (accTy cenv env) | TOp.ILAsm (_,tys) -> accTypeInst cenv env tys | _ -> () and accLambdas cenv env topValInfo e ety = match e with | Expr.TyChoose(_tps,e1,_m) -> accLambdas cenv env topValInfo e1 ety | Expr.Lambda _ | Expr.TyLambda _ -> let _tps,ctorThisValOpt,baseValOpt,vsl,body,bodyty = destTopLambda cenv.g cenv.amap topValInfo (e, ety) accTy cenv env bodyty; vsl |> List.iterSquared (accVal cenv env); baseValOpt |> Option.iter (accVal cenv env); ctorThisValOpt |> Option.iter (accVal cenv env); accExpr cenv env body; | _ -> accExpr cenv env e and accExprs cenv env exprs = exprs |> List.iter (accExpr cenv env) and accFlatExprs cenv env exprs = exprs |> FlatList.iter (accExpr cenv env) and accTargets cenv env m ty targets = Array.iter (accTarget cenv env m ty) targets and accTarget cenv env _m _ty (TTarget(_vs,e,_)) = accExpr cenv env e; and accDTree cenv env x = match x with | TDSuccess (es,_n) -> accFlatExprs cenv env es; | TDBind(bind,rest) -> accBind cenv env bind; accDTree cenv env rest | TDSwitch (e,cases,dflt,m) -> accSwitch cenv env (e,cases,dflt,m) and accSwitch cenv env (e,cases,dflt,_m) = accExpr cenv env e; cases |> List.iter (fun (TCase(discrim,e)) -> accDiscrim cenv env discrim; accDTree cenv env e) ; dflt |> Option.iter (accDTree cenv env) and accDiscrim cenv env d = match d with | Test.UnionCase(_ucref,tinst) -> accTypeInst cenv env tinst | Test.ArrayLength(_,ty) -> accTy cenv env ty | Test.Const _ | Test.IsNull -> () | Test.IsInst (srcty,tgty) -> accTy cenv env srcty; accTy cenv env tgty | Test.ActivePatternCase (exp, tys, _, _, _) -> accExpr cenv env exp; accTypeInst cenv env tys and accAttrib cenv env (Attrib(_,_k,args,props,_,_,_m)) = args |> List.iter (fun (AttribExpr(e1,_)) -> accExpr cenv env e1); props |> List.iter (fun (AttribNamedArg(_nm,_ty,_flg,AttribExpr(expr,_))) -> accExpr cenv env expr) and accAttribs cenv env attribs = List.iter (accAttrib cenv env) attribs and accValReprInfo cenv env (ValReprInfo(_,args,ret)) = args |> List.iterSquared (accArgReprInfo cenv env); ret |> accArgReprInfo cenv env; and accArgReprInfo cenv env (argInfo: ArgReprInfo) = accAttribs cenv env argInfo.Attribs and accVal cenv env v = v.Attribs |> accAttribs cenv env; v.ValReprInfo |> Option.iter (accValReprInfo cenv env); v.Type |> accTy cenv env and accBind cenv env (bind:Binding) = accVal cenv env bind.Var; let topValInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData accLambdas cenv env topValInfo bind.Expr bind.Var.Type; and accBinds cenv env xs = xs |> FlatList.iter (accBind cenv env) //-------------------------------------------------------------------------- // check tycons //-------------------------------------------------------------------------- let accTyconRecdField cenv env _tycon (rfield:RecdField) = accAttribs cenv env rfield.PropertyAttribs; accAttribs cenv env rfield.FieldAttribs let accTycon cenv env (tycon:Tycon) = accAttribs cenv env tycon.Attribs; tycon.AllFieldsArray |> Array.iter (accTyconRecdField cenv env tycon); if tycon.IsUnionTycon then (* This covers finite unions. *) tycon.UnionCasesAsList |> List.iter (fun uc -> accAttribs cenv env uc.Attribs; uc.RecdFields |> List.iter (accTyconRecdField cenv env tycon)) let accTycons cenv env tycons = List.iter (accTycon cenv env) tycons //-------------------------------------------------------------------------- // check modules //-------------------------------------------------------------------------- let rec accModuleOrNamespaceExpr cenv env x = match x with | ModuleOrNamespaceExprWithSig(_mty,def,_m) -> accModuleOrNamespaceDef cenv env def and accModuleOrNamespaceDefs cenv env x = List.iter (accModuleOrNamespaceDef cenv env) x and accModuleOrNamespaceDef cenv env x = match x with | TMDefRec(tycons,binds,mbinds,_m) -> accTycons cenv env tycons; accBinds cenv env binds; accModuleOrNamespaceBinds cenv env mbinds | TMDefLet(bind,_m) -> accBind cenv env bind | TMDefDo(e,_m) -> accExpr cenv env e | TMAbstract(def) -> accModuleOrNamespaceExpr cenv env def | TMDefs(defs) -> accModuleOrNamespaceDefs cenv env defs and accModuleOrNamespaceBinds cenv env xs = List.iter (accModuleOrNamespaceBind cenv env) xs and accModuleOrNamespaceBind cenv env (ModuleOrNamespaceBinding(mspec, rhs)) = accTycon cenv env mspec; accModuleOrNamespaceDef cenv env rhs let UnsolvedTyparsOfModuleDef g amap denv (mdef, extraAttribs) = let cenv = { g =g ; amap=amap; denv=denv; unsolved = [] } accModuleOrNamespaceDef cenv Nix mdef; accAttribs cenv Nix extraAttribs; List.rev cenv.unsolved fsharp-3.0.34/src/fsharp/FSComp.txt0000775000175000017500000047343712260314606016057 0ustar chrischris# Old-style error strings getting moved over undefinedNameNamespace,"The namespace '%s' is not defined" undefinedNameNamespaceOrModule,"The namespace or module '%s' is not defined" undefinedNameFieldConstructorOrMember,"The field, constructor or member '%s' is not defined" undefinedNameValueConstructorNamespaceOrType,"The value, constructor, namespace or type '%s' is not defined" undefinedNameValueOfConstructor,"The value or constructor '%s' is not defined" undefinedNameValueNamespaceTypeOrModule,"The value, namespace, type or module '%s' is not defined" undefinedNameConstructorModuleOrNamespace,"The constructor, module or namespace '%s' is not defined" undefinedNameType,"The type '%s' is not defined" undefinedNameRecordLabelOrNamespace,"The record label or namespace '%s' is not defined" undefinedNameRecordLabel,"The record label '%s' is not defined" undefinedNameTypeParameter,"The type parameter '%s' is not defined" undefinedNamePatternDiscriminator,"The pattern discriminator '%s' is not defined" # ----------------------------------------------------------------------------- # build.fs # ----------------------------------------------------------------------------- buildUnexpectedTypeArgs,"The non-generic type '%s' does not expect any type arguments, but here is given %d type argument(s)" 203,buildInvalidWarningNumber,"Invalid warning number '%s'" 204,buildInvalidVersionString,"Invalid version string '%s'" 205,buildInvalidVersionFile,"Invalid version file '%s'" buildProductName,"F# Compiler for F# 3.0 %s" 206,buildProblemWithFilename,"Problem with filename '%s': %s" 207,buildNoInputsSpecified,"No inputs specified" 208,buildMismatchOutputExtension,"The output name extension doesn't match the options used. If '-a' or '--target:library' is used the output file name must end with '.dll', if '--target:module' is used the output extension must be '.netmodule', otherwise '.exe'." 209,buildPdbRequiresDebug,"The '--pdb' option requires the '--debug' option to be used" 210,buildInvalidSearchDirectory,"The search directory '%s' is invalid" 211,buildSearchDirectoryNotFound,"The search directory '%s' could not be found" 212,buildInvalidFilename,"'%s' is not a valid filename" 213,buildInvalidAssemblyName,"'%s' is not a valid assembly name" 214,buildInvalidPrivacy,"Unrecognized privacy setting '%s' for managed resource, valid options are 'public' and 'private'" 215,buildMultipleReferencesNotAllowed,"Multiple references to '%s.dll' are not permitted" 216,buildRequiresCLI2,"The file '%s' is a CLI 1.x version of mscorlib. F# requires CLI version 2.0 or greater." buildCouldNotReadVersionInfoFromMscorlib,"Could not read version from mscorlib.dll" 217,buildMscorlibAndReferencedAssemblyMismatch,"The referenced or default base CLI library 'mscorlib' is binary-incompatible with the referenced library '%s'. Consider recompiling the library or making an explicit reference to a version of this library that matches the CLI version you are using." 218,buildCannotReadAssembly,"Unable to read assembly '%s'" 219,buildMscorLibAndFSharpCoreMismatch,"The referenced or default base CLI library 'mscorlib' is binary-incompatible with the referenced F# core library '%s'. Consider recompiling the library or making an explicit reference to a version of this library that matches the CLI version you are using." 220,buildAssemblyResolutionFailed,"Assembly resolution failure at or near this location" 221,buildImplicitModuleIsNotLegalIdentifier,"The declarations in this file will be placed in an implicit module '%s' based on the file name '%s'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file." 222,buildMultiFileRequiresNamespaceOrModule,"Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'" 223,buildMultipleToplevelModules,"This file contains multiple declarations of the form 'module SomeNamespace.SomeModule'. Only one declaration of this form is permitted in a file. Change your file to use an initial namespace declaration and/or use 'module ModuleName = ...' to define your modules." buildUnknownFileSuffix,"ParseInput: unknown file suffix for '%s'" 224,buildOptionRequiresParameter,"Option requires parameter: %s" 225,buildCouldNotFindSourceFile,"Source file '%s' could not be found" 226,buildInvalidSourceFileExtension,"The file extension of '%s' is not recognized. Source files must have extension .fs, .fsi, .fsx, .fsscript, .ml or .mli." 227,buildCouldNotResolveAssembly,"Could not resolve assembly '%s'" 228,buildCouldNotResolveAssemblyRequiredByFile,"Could not resolve assembly '%s' required by '%s'" 229,buildErrorOpeningBinaryFile,"Error opening binary file '%s': %s" 231,buildDifferentVersionMustRecompile,"The F#-compiled DLL '%s' needs to be recompiled to be used with this version of F#" 232,buildInvalidHashIDirective,"Invalid directive. Expected '#I \"\"'." 233,buildInvalidHashrDirective,"Invalid directive. Expected '#r \"\"'." 234,buildInvalidHashloadDirective,"Invalid directive. Expected '#load \"\" ... \"\"'." 235,buildInvalidHashtimeDirective,"Invalid directive. Expected '#time', '#time \"on\"' or '#time \"off\"'." 236,buildDirectivesInModulesAreIgnored,"Directives inside modules are ignored" 237,buildSignatureAlreadySpecified,"A signature for the file or module '%s' has already been specified" 238,buildImplementationAlreadyGivenDetail,"An implementation of file or module '%s' has already been given. Compilation order is significant in F# because of type inference. You may need to adjust the order of your files to place the signature file before the implementation. In Visual Studio files are type-checked in the order they appear in the project file, which can be edited manually or adjusted using the solution explorer." 239,buildImplementationAlreadyGiven,"An implementation of the file or module '%s' has already been given" 240,buildSignatureWithoutImplementation,"The signature file '%s' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match." 241,buildArgInvalidInt,"'%s' is not a valid integer argument" 242,buildArgInvalidFloat,"'%s' is not a valid floating point argument" 243,buildUnrecognizedOption,"Unrecognized option: '%s'" 244,buildInvalidModuleOrNamespaceName,"Invalid module or namespace name" # ----------------------------------------------------------------------------- # pickle.fs # ----------------------------------------------------------------------------- pickleErrorReadingWritingMetadata,"Error reading/writing metadata for the F# compiled DLL '%s'. Was the DLL compiled with an earlier version of the F# compiler? (error: '%s')." # ----------------------------------------------------------------------------- # tast.fs # ----------------------------------------------------------------------------- 245,tastTypeOrModuleNotConcrete,"The type/module '%s' is not a concrete module or type" tastTypeHasAssemblyCodeRepresentation,"The type '%s' has an inline assembly code representation" 247,tastNamespaceAndModuleWithSameNameInAssembly,"A namespace and a module named '%s' both occur in two parts of this assembly" 248,tastTwoModulesWithSameNameInAssembly,"Two modules named '%s' occur in two parts of this assembly" 249,tastDuplicateTypeDefinitionInAssembly,"Two type definitions named '%s' occur in namespace '%s' in two parts of this assembly" 250,tastConflictingModuleAndTypeDefinitionInAssembly,"A module and a type definition named '%s' occur in namespace '%s' in two parts of this assembly" # ----------------------------------------------------------------------------- # tastops.fs # ----------------------------------------------------------------------------- 251,tastInvalidMemberSignature,"Invalid member signature encountered because of an earlier error" 252,tastValueDoesNotHaveSetterType,"This value does not have a valid property setter type" 253,tastInvalidFormForPropertyGetter,"Invalid form for a property getter. At least one '()' argument is required when using the explicit syntax." 254,tastInvalidFormForPropertySetter,"Invalid form for a property setter. At least one argument is required." 255,tastUnexpectedByRef,"Unexpected use of a byref-typed variable" 256,tastValueMustBeLocalAndMutable,"A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'" 257,tastInvalidMutationOfConstant,"Invalid mutation of a constant expression. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...'." tastValueHasBeenCopied,"The value has been copied to ensure the original is not mutated by this operation" 259,tastRecursiveValuesMayNotBeInConstructionOfTuple,"Recursively defined values cannot appear directly as part of the construction of a tuple value within a recursive binding" 260,tastRecursiveValuesMayNotAppearInConstructionOfType,"Recursive values cannot appear directly as a construction of the type '%s' within a recursive binding. This feature has been removed from the F# language. Consider using a record instead." 261,tastRecursiveValuesMayNotBeAssignedToNonMutableField,"Recursive values cannot be directly assigned to the non-mutable field '%s' of the type '%s' within a recursive binding. Consider using a mutable field instead." tastUnexpectedDecodeOfAutoOpenAttribute,"Unexpected decode of AutoOpenAttribute" tastUnexpectedDecodeOfInternalsVisibleToAttribute,"Unexpected decode of InternalsVisibleToAttribute" tastUnexpectedDecodeOfInterfaceDataVersionAttribute,"Unexpected decode of InterfaceDataVersionAttribute" 265,tastActivePatternsLimitedToSeven,"Active patterns cannot return more than 7 possibilities" 266,tastConstantCannotBeCustomAttribute,"This constant cannot be used as a custom attribute value" 267,tastNotAConstantExpression,"This is not a constant expression or valid custom attribute value" # ----------------------------------------------------------------------------- # typrelns.fs # ----------------------------------------------------------------------------- ValueNotContainedMutabilityAttributesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe mutability attributes differ" ValueNotContainedMutabilityNamesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe names differ" ValueNotContainedMutabilityCompiledNamesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled names differ" ValueNotContainedMutabilityDisplayNamesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe display names differ" ValueNotContainedMutabilityAccessibilityMore,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe accessibility specified in the signature is more than that specified in the implementation" ValueNotContainedMutabilityInlineFlagsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe inline flags differ" ValueNotContainedMutabilityLiteralConstantValuesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe literal constant values and/or attributes differ" ValueNotContainedMutabilityOneIsTypeFunction,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is a type function and the other is not. The signature requires explicit type parameters if they are present in the implementation." ValueNotContainedMutabilityParameterCountsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe respective type parameter counts differ" ValueNotContainedMutabilityTypesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe types differ" ValueNotContainedMutabilityExtensionsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is an extension member and the other is not" ValueNotContainedMutabilityArityNotInferred,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nAn arity was not inferred for this value" ValueNotContainedMutabilityGenericParametersDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe number of generic parameters in the signature and implementation differ (the signature declares %s but the implementation declares %s" ValueNotContainedMutabilityGenericParametersAreDifferentKinds,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe generic parameters in the signature and implementation have different kinds. Perhaps there is a missing [] attribute." ValueNotContainedMutabilityAritiesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe arities in the signature and implementation differ. The signature specifies that '%s' is function definition or lambda expression accepting at least %s argument(s), but the implementation is a computed function value. To declare that a computed function value is a permitted implementation simply parenthesize its type in the signature, e.g.\n\tval %s: int -> (int -> int)\ninstead of\n\tval %s: int -> int -> int." ValueNotContainedMutabilityDotNetNamesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe CLI member names differ" ValueNotContainedMutabilityStaticsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is static and the other isn't" ValueNotContainedMutabilityVirtualsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is virtual and the other isn't" ValueNotContainedMutabilityAbstractsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is abstract and the other isn't" ValueNotContainedMutabilityFinalsDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is final and the other isn't" ValueNotContainedMutabilityOverridesDiffer,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is marked as an override and the other isn't" ValueNotContainedMutabilityOneIsConstructor,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nOne is a constructor/property and the other is not" ValueNotContainedMutabilityStaticButInstance,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled representation of this method is as a static member but the signature indicates its compiled representation is as an instance member" ValueNotContainedMutabilityInstanceButStatic,"Module '%s' contains\n %s \nbut its signature specifies\n %s \nThe compiled representation of this method is as an instance member, but the signature indicates its compiled representation is as a static member" 290,DefinitionsInSigAndImplNotCompatibleNamesDiffer,"The %s definitions in the signature and implementation are not compatible because the names differ" 291,DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer,"The %s definitions in the signature and implementation are not compatible because the respective type parameter counts differ" 292,DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer,"The %s definitions in the signature and implementation are not compatible because the accessibility specified in the signature is more than that specified in the implementation" 293,DefinitionsInSigAndImplNotCompatibleMissingInterface,"The %s definitions in the signature and implementation are not compatible because the signature requires that the type supports the interface %s but the interface has not been implemented" 294,DefinitionsInSigAndImplNotCompatibleImplementationSaysNull,"The %s definitions in the signature and implementation are not compatible because the implementation says this type may use nulls as a representation but the signature does not" 294,DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2,"The %s definitions in the signature and implementation are not compatible because the implementation says this type may use nulls as an extra value but the signature does not" 295,DefinitionsInSigAndImplNotCompatibleSignatureSaysNull,"The %s definitions in the signature and implementation are not compatible because the signature says this type may use nulls as a representation but the implementation does not" 295,DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2,"The %s definitions in the signature and implementation are not compatible because the signature says this type may use nulls as an extra value but the implementation does not" 296,DefinitionsInSigAndImplNotCompatibleImplementationSealed,"The %s definitions in the signature and implementation are not compatible because the implementation type is sealed but the signature implies it is not. Consider adding the [] attribute to the signature." 297,DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed,"The %s definitions in the signature and implementation are not compatible because the implementation type is not sealed but signature implies it is. Consider adding the [] attribute to the implementation." 298,DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract,"The %s definitions in the signature and implementation are not compatible because the implementation is an abstract class but the signature is not. Consider adding the [] attribute to the signature." 299,DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract,"The %s definitions in the signature and implementation are not compatible because the signature is an abstract class but the implementation is not. Consider adding the [] attribute to the implementation." 300,DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes,"The %s definitions in the signature and implementation are not compatible because the types have different base types" 301,DefinitionsInSigAndImplNotCompatibleNumbersDiffer,"The %s definitions in the signature and implementation are not compatible because the number of %ss differ" 302,DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot,"The %s definitions in the signature and implementation are not compatible because the signature defines the %s '%s' but the implementation does not (or does, but not in the same order)" 303,DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot,"The %s definitions in the signature and implementation are not compatible because the implementation defines the %s '%s' but the signature does not (or does, but not in the same order)" 304,DefinitionsInSigAndImplNotCompatibleImplDefinesStruct,"The %s definitions in the signature and implementation are not compatible because the implementation defines a struct but the signature defines a type with a hidden representation" 305,DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden,"The %s definitions in the signature and implementation are not compatible because a CLI type representation is being hidden by a signature" 306,DefinitionsInSigAndImplNotCompatibleTypeIsHidden,"The %s definitions in the signature and implementation are not compatible because a type representation is being hidden by a signature" 307,DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind,"The %s definitions in the signature and implementation are not compatible because the types are of different kinds" 308,DefinitionsInSigAndImplNotCompatibleILDiffer,"The %s definitions in the signature and implementation are not compatible because the IL representations differ" 309,DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer,"The %s definitions in the signature and implementation are not compatible because the representations differ" 311,DefinitionsInSigAndImplNotCompatibleFieldWasPresent,"The %s definitions in the signature and implementation are not compatible because the field %s was present in the implementation but not in the signature" 312,DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer,"The %s definitions in the signature and implementation are not compatible because the order of the fields is different in the signature and implementation" 313,DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified,"The %s definitions in the signature and implementation are not compatible because the field %s was required by the signature but was not specified by the implementation" 314,DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig,"The %s definitions in the signature and implementation are not compatible because the field '%s' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'." 315,DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl,"The %s definitions in the signature and implementation are not compatible because the abstract member '%s' was required by the signature but was not specified by the implementation" 316,DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig,"The %s definitions in the signature and implementation are not compatible because the abstract member '%s' was present in the implementation but not in the signature" 317,DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer,"The %s definitions in the signature and implementation are not compatible because the signature declares a %s while the implementation declares a %s" 318,DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer,"The %s definitions in the signature and implementation are not compatible because the abbreviations differ: %s versus %s" 319,DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig,"The %s definitions in the signature and implementation are not compatible because an abbreviation is being hidden by a signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature." 320,DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation,"The %s definitions in the signature and implementation are not compatible because the signature has an abbreviation while the implementation does not" ModuleContainsConstructorButNamesDiffer,"The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe names differ" ModuleContainsConstructorButDataFieldsDiffer,"The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe respective number of data fields differ" ModuleContainsConstructorButTypesOfFieldsDiffer,"The module contains the constructor\n %s \nbut its signature specifies\n %s \nThe types of the fields differ" ModuleContainsConstructorButAccessibilityDiffers,"The module contains the constructor\n %s \nbut its signature specifies\n %s \nthe accessibility specified in the signature is more than that specified in the implementation" FieldNotContainedNamesDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nThe names differ" FieldNotContainedAccessibilitiesDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nthe accessibility specified in the signature is more than that specified in the implementation" FieldNotContainedStaticsDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'static' modifiers differ" FieldNotContainedMutablesDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'mutable' modifiers differ" FieldNotContainedLiteralsDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nThe 'literal' modifiers differ" FieldNotContainedTypesDiffer,"The module contains the field\n %s \nbut its signature specifies\n %s \nThe types differ" 331,typrelCannotResolveImplicitGenericInstantiation,"The implicit instantiation of a generic construct at or near this point could not be resolved because it could resolve to multiple unrelated types, e.g. '%s' and '%s'. Consider using type annotations to resolve the ambiguity" 332,typrelCannotResolveAmbiguityInOverloadedOperator,"Could not resolve the ambiguity inherent in the use of the operator '%s' at or near this program point. Consider using type annotations to resolve the ambiguity." 333,typrelCannotResolveAmbiguityInPrintf,"Could not resolve the ambiguity inherent in the use of a 'printf'-style format string" 334,typrelCannotResolveAmbiguityInEnum,"Could not resolve the ambiguity in the use of a generic construct with an 'enum' constraint at or near this position" 335,typrelCannotResolveAmbiguityInDelegate,"Could not resolve the ambiguity in the use of a generic construct with a 'delegate' constraint at or near this position" 337,typrelInvalidValue,"Invalid value" 338,typrelSigImplNotCompatibleParamCountsDiffer,"The signature and implementation are not compatible because the respective type parameter counts differ" 339,typrelSigImplNotCompatibleCompileTimeRequirementsDiffer,"The signature and implementation are not compatible because the type parameter in the class/signature has a different compile-time requirement to the one in the member/implementation" 340,typrelSigImplNotCompatibleConstraintsDiffer,"The signature and implementation are not compatible because the declaration of the type parameter '%s' requires a constraint of the form %s" 341,typrelSigImplNotCompatibleConstraintsDifferRemove,"The signature and implementation are not compatible because the type parameter '%s' has a constraint of the form %s but the implementation does not. Either remove this constraint from the signature or add it to the implementation." 342,typrelTypeImplementsIComparableShouldOverrideObjectEquals,"The type '%s' implements 'System.IComparable'. Consider also adding an explicit override for 'Object.Equals'" 343,typrelTypeImplementsIComparableDefaultObjectEqualsProvided,"The type '%s' implements 'System.IComparable' explicitly but provides no corresponding override for 'Object.Equals'. An implementation of 'Object.Equals' has been automatically provided, implemented via 'System.IComparable'. Consider implementing the override 'Object.Equals' explicitly" 344,typrelExplicitImplementationOfGetHashCodeOrEquals,"The struct, record or union type '%s' has an explicit implementation of 'Object.GetHashCode' or 'Object.Equals'. You must apply the 'CustomEquality' attribute to the type" 345,typrelExplicitImplementationOfGetHashCode,"The struct, record or union type '%s' has an explicit implementation of 'Object.GetHashCode'. Consider implementing a matching override for 'Object.Equals(obj)'" 346,typrelExplicitImplementationOfEquals,"The struct, record or union type '%s' has an explicit implementation of 'Object.Equals'. Consider implementing a matching override for 'Object.GetHashCode()'" ExceptionDefsNotCompatibleHiddenBySignature,"The exception definitions are not compatible because a CLI exception mapping is being hidden by a signature. The exception mapping must be visible to other modules. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s" ExceptionDefsNotCompatibleDotNetRepresentationsDiffer,"The exception definitions are not compatible because the CLI representations differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s" ExceptionDefsNotCompatibleAbbreviationHiddenBySignature,"The exception definitions are not compatible because the exception abbreviation is being hidden by the signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." ExceptionDefsNotCompatibleSignaturesDiffer,"The exception definitions are not compatible because the exception abbreviations in the signature and implementation differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." ExceptionDefsNotCompatibleExceptionDeclarationsDiffer,"The exception definitions are not compatible because the exception declarations differ. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." ExceptionDefsNotCompatibleFieldInSigButNotImpl,"The exception definitions are not compatible because the field '%s' was required by the signature but was not specified by the implementation. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." ExceptionDefsNotCompatibleFieldInImplButNotSig,"The exception definitions are not compatible because the field '%s' was present in the implementation but not in the signature. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." ExceptionDefsNotCompatibleFieldOrderDiffers,"The exception definitions are not compatible because the order of the fields is different in the signature and implementation. The module contains the exception definition\n %s \nbut its signature specifies\n\t%s." 355,typrelModuleNamespaceAttributesDifferInSigAndImpl,"The namespace or module attributes differ between signature and implementation" 356,typrelMethodIsOverconstrained,"This method is over-constrained in its type parameters" 357,typrelOverloadNotFound,"No implementations of '%s' had the correct number of arguments and type parameters. The required signature is '%s'." 358,typrelOverrideWasAmbiguous,"The override for '%s' was ambiguous" 359,typrelMoreThenOneOverride,"More than one override implements '%s'" 360,typrelMethodIsSealed,"The method '%s' is sealed and cannot be overridden" 361,typrelOverrideImplementsMoreThenOneSlot,"The override '%s' implements more than one abstract slot, e.g. '%s' and '%s'" 362,typrelDuplicateInterface,"Duplicate or redundant interface" 363,typrelNeedExplicitImplementation,"The interface '%s' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface." 364,typrelNamedArgumentHasBeenAssignedMoreThenOnce,"A named argument has been assigned more than one value" 365,typrelNoImplementationGiven,"No implementation was given for '%s'" 366,typrelNoImplementationGivenWithSuggestion,"No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." 367,typrelMemberDoesNotHaveCorrectNumberOfArguments,"The member '%s' does not have the correct number of arguments. The required signature is '%s'." 368,typrelMemberDoesNotHaveCorrectNumberOfTypeParameters,"The member '%s' does not have the correct number of method type parameters. The required signature is '%s'." 369,typrelMemberDoesNotHaveCorrectKindsOfGenericParameters,"The member '%s' does not have the correct kinds of generic parameters. The required signature is '%s'." 370,typrelMemberCannotImplement,"The member '%s' cannot be used to implement '%s'. The required signature is '%s'." # ----------------------------------------------------------------------------- # ast.fs errors # ----------------------------------------------------------------------------- 371,astParseEmbeddedILError,"Error while parsing embedded IL" 372,astParseEmbeddedILTypeError,"Error while parsing embedded IL type" astDeprecatedIndexerNotation,"This indexer notation has been removed from the F# language" 374,astInvalidExprLeftHandOfAssignment,"Invalid expression on left of assignment" # ----------------------------------------------------------------------------- # augment.fs errors # ----------------------------------------------------------------------------- 376,augNoRefEqualsOnStruct,"The 'ReferenceEquality' attribute cannot be used on structs. Consider using the 'StructuralEquality' attribute instead, or implement an override for 'System.Object.Equals(obj)'." 377,augInvalidAttrs,"This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison' attributes" 378,augNoEqualityNeedsNoComparison,"The 'NoEquality' attribute must be used in conjunction with the 'NoComparison' attribute" 379,augStructCompNeedsStructEquality,"The 'StructuralComparison' attribute must be used in conjunction with the 'StructuralEquality' attribute" 380,augStructEqNeedsNoCompOrStructComp,"The 'StructuralEquality' attribute must be used in conjunction with the 'NoComparison' or 'StructuralComparison' attributes" 381,augTypeCantHaveRefEqAndStructAttrs,"A type cannot have both the 'ReferenceEquality' and 'StructuralEquality' or 'StructuralComparison' attributes" 382,augOnlyCertainTypesCanHaveAttrs,"Only record, union, exception and struct types may be augmented with the 'ReferenceEquality', 'StructuralEquality' and 'StructuralComparison' attributes" 383,augRefEqCantHaveObjEquals,"A type with attribute 'ReferenceEquality' cannot have an explicit implementation of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'" 384,augCustomEqNeedsObjEquals,"A type with attribute 'CustomEquality' must have an explicit implementation of at least one of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'" 385,augCustomCompareNeedsIComp,"A type with attribute 'CustomComparison' must have an explicit implementation of at least one of 'System.IComparable' or 'System.Collections.IStructuralComparable'" 386,augNoEqNeedsNoObjEquals,"A type with attribute 'NoEquality' should not usually have an explicit implementation of 'Object.Equals(obj)'. Disable this warning if this is intentional for interoperability purposes" 386,augNoCompCantImpIComp,"A type with attribute 'NoComparison' should not usually have an explicit implementation of 'System.IComparable', 'System.IComparable<_>' or 'System.Collections.IStructuralComparable'. Disable this warning if this is intentional for interoperability purposes" 387,augCustomEqNeedsNoCompOrCustomComp,"The 'CustomEquality' attribute must be used in conjunction with the 'NoComparison' or 'CustomComparison' attributes" # ----------------------------------------------------------------------------- # formats.fs errors # ----------------------------------------------------------------------------- forPositionalSpecifiersNotPermitted,"Positional specifiers are not permitted in format strings" forMissingFormatSpecifier,"Missing format specifier" forFlagSetTwice,"'%s' flag set twice" forPrefixFlagSpacePlusSetTwice,"Prefix flag (' ' or '+') set twice" forHashSpecifierIsInvalid,"The # formatting modifier is invalid in F#" forBadPrecision,"Bad precision in format specifier" forBadWidth,"Bad width in format specifier" forDoesNotSupportZeroFlag,"'%s' format does not support '0' flag" forPrecisionMissingAfterDot,"Precision missing after the '.'" forFormatDoesntSupportPrecision,"'%s' format does not support precision" forBadFormatSpecifier,"Bad format specifier (after l or L): Expected ld,li,lo,lu,lx or lX. In F# code you can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types." forLIsUnnecessary,"The 'l' or 'L' in this format specifier is unnecessary. In F# code you can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types." forHIsUnnecessary,"The 'h' or 'H' in this format specifier is unnecessary. You can use %%d, %%x, %%o or %%u instead, which are overloaded to work with all basic integer types.." forDoesNotSupportPrefixFlag,"'%s' does not support prefix '%s' flag" forBadFormatSpecifierGeneral,"Bad format specifier: '%s'" # ----------------------------------------------------------------------------- # ErrorLogger.fs errors # ----------------------------------------------------------------------------- elSysEnvExitDidntExit,"System.Environment.Exit did not exit" elDeprecatedOperator,"The treatment of this operator is now handled directly by the F# compiler and its meaning cannot be redefined" # ----------------------------------------------------------------------------- # check.fs errors # ----------------------------------------------------------------------------- 405,chkProtectedOrBaseCalled,"A protected member is called or 'base' is being used. This is only allowed in the direct implementation of members since they could escape their object scope." 406,chkByrefUsedInInvalidWay,"The byref-typed variable '%s' is used in an invalid way. Byrefs cannot be captured by closures or passed to inner functions." 407,chkMutableUsedInInvalidWay,"The mutable variable '%s' is used in an invalid way. Mutable variables cannot be captured by closures. Consider eliminating this use of mutation or using a heap-allocated mutable reference cell via 'ref' and '!'." 408,chkBaseUsedInInvalidWay,"The 'base' keyword is used in an invalid way. Base calls cannot be used in closures. Consider using a private member to make base calls." chkVariableUsedInInvalidWay,"The variable '%s' is used in an invalid way" 410,chkTypeLessAccessibleThanType,"The type '%s' is less accessible than the value, member or type '%s' it is used in" 411,chkSystemVoidOnlyInTypeof,"'System.Void' can only be used as 'typeof' in F#" 412,chkErrorUseOfByref,"A type instantiation involves a byref type. This is not permitted by the rules of Common IL." 413,chkErrorContainsCallToRethrow,"Calls to 'reraise' may only occur directly in a handler of a try-with" 414,chkSplicingOnlyInQuotations,"Expression-splicing operators may only be used within quotations" 415,chkNoFirstClassSplicing,"First-class uses of the expression-splicing operator are not permitted" 416,chkNoFirstClassAddressOf,"First-class uses of the address-of operators are not permitted" 417,chkNoFirstClassRethrow,"First-class uses of the 'reraise' function is not permitted" 418,chkNoByrefAtThisPoint,"The byref typed value '%s' cannot be used at this point" 419,chkLimitationsOfBaseKeyword,"'base' values may only be used to make direct calls to the base implementations of overridden members" 420,chkObjCtorsCantUseExceptionHandling,"Object constructors cannot directly use try/with and try/finally prior to the initialization of the object. This includes constructs such as 'for x in ...' that may elaborate to uses of these constructs. This is a limitation imposed by Common IL." 421,chkNoAddressOfAtThisPoint,"The address of the variable '%s' cannot be used at this point" 422,chkNoAddressStaticFieldAtThisPoint,"The address of the static field '%s' cannot be used at this point" 423,chkNoAddressFieldAtThisPoint,"The address of the field '%s' cannot be used at this point" 424,chkNoAddressOfArrayElementAtThisPoint,"The address of an array element cannot be used at this point" 425,chkFirstClassFuncNoByref,"The type of a first-class function cannot contain byrefs" 426,chkReturnTypeNoByref,"A method return type would contain byrefs which is not permitted" 428,chkInvalidCustAttrVal,"Invalid custom attribute value (not a constant or literal)" 429,chkAttrHasAllowMultiFalse,"The attribute type '%s' has 'AllowMultiple=false'. Multiple instances of this attribute cannot be attached to a single language element." 430,chkMemberUsedInInvalidWay,"The member '%s' is used in an invalid way. A use of '%s' has been inferred prior to its definition at or near '%s'. This is an invalid forward reference." 431,chkNoByrefAsTopValue,"A byref typed value would be stored here. Top-level let-bound byref values are not permitted." 432,chkReflectedDefCantSplice,"[] terms cannot contain uses of the prefix splice operator '%%'" 433,chkEntryPointUsage,"A function labeled with the 'EntryPointAttribute' attribute must be the last declaration in the last file in the compilation sequence, and can only be used when compiling to a .exe" chkUnionCaseCompiledForm,"compiled form of the union case" chkUnionCaseDefaultAugmentation,"default augmentation of the union case" 434,chkPropertySameNameMethod,"Name clash. The property '%s' has the same name as a method in this type." 435,chkGetterSetterDoNotMatchAbstract,"The property '%s' has a getter and a setter that do not match. If one is abstract then the other must be as well." 436,chkPropertySameNameIndexer,"The property '%s' has the same name as another property in this type, but one takes indexer arguments and the other does not. You may be missing an indexer argument to one of your properties." 437,chkCantStoreByrefValue,"A type would store a byref typed value. This is not permitted by Common IL." #See related 1205 chkDuplicateInherittedVirtualMethod 438,chkDuplicateMethod,"Duplicate method. The method '%s' has the same name and signature as another method in this type." 438,chkDuplicateMethodWithSuffix,"Duplicate method. The method '%s' has the same name and signature as another method in this type once tuples, functions, units of measure and/or provided types are erased." 439,chkDuplicateMethodCurried,"The method '%s' has curried arguments but has the same name as another method in this type. Methods with curried arguments cannot be overloaded. Consider using a method taking tupled arguments." 440,chkCurriedMethodsCantHaveOutParams,"Methods with curried arguments cannot declare 'out', 'ParamArray', 'optional' or 'byref' arguments" 441,chkDuplicateProperty,"Duplicate property. The property '%s' has the same name and signature as another property in this type." 441,chkDuplicatePropertyWithSuffix,"Duplicate property. The property '%s' has the same name and signature as another property in this type once tuples, functions, units of measure and/or provided types are erased." 442,chkDuplicateMethodInheritedType,"Duplicate method. The abstract method '%s' has the same name and signature as an abstract method in an inherited type." 442,chkDuplicateMethodInheritedTypeWithSuffix,"Duplicate method. The abstract method '%s' has the same name and signature as an abstract method in an inherited type once tuples, functions, units of measure and/or provided types are erased." 443,chkMultipleGenericInterfaceInstantiations,"This type implements or inherits the same interface at different generic instantiations '%s' and '%s'. This is not permitted in this version of F#." 444,chkValueWithDefaultValueMustHaveDefaultValue,"The type of a field using the 'DefaultValue' attribute must admit default initialization, i.e. have 'null' as a proper value or be a struct type whose fields all admit default initialization. You can use 'DefaultValue(false)' to disable this check" 445,chkNoByrefInTypeAbbrev,"The type abbreviation contains byrefs. This is not permitted by F#." # ----------------------------------------------------------------------------- # creflect.fs errors # ----------------------------------------------------------------------------- 446,crefBoundVarUsedInSplice,"The variable '%s' is bound in a quotation but is used as part of a spliced expression. This is not permitted since it may escape its scope." 447,crefQuotationsCantContainGenericExprs,"Quotations cannot contain uses of generic expressions" 448,crefQuotationsCantContainGenericFunctions,"Quotations cannot contain function definitions that are inferred or declared to be generic. Consider adding some type constraints to make this a valid quoted expression." 449,crefQuotationsCantContainObjExprs,"Quotations cannot contain object expressions" 450,crefQuotationsCantContainAddressOf,"Quotations cannot contain expressions that take the address of a field" 451,crefQuotationsCantContainStaticFieldRef,"Quotations cannot contain expressions that fetch static fields" 452,crefQuotationsCantContainInlineIL,"Quotations cannot contain inline assembly code or pattern matching on arrays" 453,crefQuotationsCantContainDescendingForLoops,"Quotations cannot contain descending for loops" 454,crefQuotationsCantFetchUnionIndexes,"Quotations cannot contain expressions that fetch union case indexes" 455,crefQuotationsCantSetUnionFields,"Quotations cannot contain expressions that set union case fields" 456,crefQuotationsCantSetExceptionFields,"Quotations cannot contain expressions that set fields in exception values" 457,crefQuotationsCantRequireByref,"Quotations cannot contain expressions that require byref pointers" 458,crefQuotationsCantCallTraitMembers,"Quotations cannot contain expressions that make member constraint calls, or uses of operators that implicitly resolve to a member constraint call" 459,crefQuotationsCantContainThisConstant,"Quotations cannot contain this kind of constant" 460,crefQuotationsCantContainThisPatternMatch,"Quotations cannot contain this kind of pattern match" 461,crefQuotationsCantContainArrayPatternMatching,"Quotations cannot contain array pattern matching" 462,crefQuotationsCantContainThisType,"Quotations cannot contain this kind of type" # ----------------------------------------------------------------------------- # csolve.fs errors # ----------------------------------------------------------------------------- csTypeCannotBeResolvedAtCompileTime,"The declared type parameter '%s' cannot be used here since the type parameter cannot be resolved at compile time" 464,csCodeLessGeneric,"This code is less generic than indicated by its annotations. A unit-of-measure specified using '_' has been determined to be '1', i.e. dimensionless. Consider making the code generic, or removing the use of '_'." 465,csTypeInferenceMaxDepth,"Type inference problem too complicated (maximum iteration depth reached). Consider adding further type annotations." csExpectedArguments,"Expected arguments to an instance member" csIndexArgumentMismatch,"This indexer expects %d arguments but is here given %d" csExpectTypeWithOperatorButGivenFunction,"Expecting a type supporting the operator '%s' but given a function type. You may be missing an argument to a function." csExpectTypeWithOperatorButGivenTuple,"Expecting a type supporting the operator '%s' but given a tuple type" csTypesDoNotSupportOperator,"None of the types '%s' support the operator '%s'" csTypeDoesNotSupportOperator,"The type '%s' does not support the operator '%s'" csTypesDoNotSupportOperatorNullable,"None of the types '%s' support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'." csTypeDoesNotSupportOperatorNullable,"The type '%s' does not support the operator '%s'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'." csTypeDoesNotSupportConversion,"The type '%s' does not support a conversion to the type '%s'" csMethodFoundButIsStatic,"The type '%s' has a method '%s' (full name '%s'), but the method is static" csMethodFoundButIsNotStatic,"The type '%s' has a method '%s' (full name '%s'), but the method is not static" 472,csStructConstraintInconsistent,"The constraints 'struct' and 'not struct' are inconsistent" csTypeDoesNotHaveNull,"The type '%s' does not have 'null' as a proper value" csNullableTypeDoesNotHaveNull,"The type '%s' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'." csTypeDoesNotSupportComparison1,"The type '%s' does not support the 'comparison' constraint because it has the 'NoComparison' attribute" csTypeDoesNotSupportComparison2,"The type '%s' does not support the 'comparison' constraint. For example, it does not support the 'System.IComparable' interface" csTypeDoesNotSupportComparison3,"The type '%s' does not support the 'comparison' constraint because it is a record, union or struct with one or more structural element types which do not support the 'comparison' constraint. Either avoid the use of comparison with this type, or add the 'StructuralComparison' attribute to the type to determine which field type does not support comparison" csTypeDoesNotSupportEquality1,"The type '%s' does not support the 'equality' constraint because it has the 'NoEquality' attribute" csTypeDoesNotSupportEquality2,"The type '%s' does not support the 'equality' constraint because it is a function type" csTypeDoesNotSupportEquality3,"The type '%s' does not support the 'equality' constraint because it is a record, union or struct with one or more structural element types which do not support the 'equality' constraint. Either avoid the use of equality with this type, or add the 'StructuralEquality' attribute to the type to determine which field type does not support equality" csTypeIsNotEnumType,"The type '%s' is not a CLI enum type" csTypeHasNonStandardDelegateType,"The type '%s' has a non-standard delegate type" csTypeIsNotDelegateType,"The type '%s' is not a CLI delegate type" csTypeParameterCannotBeNullable,"This type parameter cannot be instantiated to 'Nullable'. This is a restriction imposed in order to ensure the meaning of 'null' in some CLI languages is not confusing when used in conjunction with 'Nullable' values." csGenericConstructRequiresStructType,"A generic construct requires that the type '%s' is a CLI or F# struct type" csGenericConstructRequiresUnmanagedType,"A generic construct requires that the type '%s' is an unmanaged type" csTypeNotCompatibleBecauseOfPrintf,"The type '%s' is not compatible with any of the types %s, arising from the use of a printf-style format string" csGenericConstructRequiresReferenceSemantics,"A generic construct requires that the type '%s' have reference semantics, but it does not, i.e. it is a struct" csGenericConstructRequiresNonAbstract,"A generic construct requires that the type '%s' be non-abstract" csGenericConstructRequiresPublicDefaultConstructor,"A generic construct requires that the type '%s' have a public default constructor" 483,csTypeInstantiationLengthMismatch,"Type instantiation length mismatch" 484,csOptionalArgumentNotPermittedHere,"Optional arguments not permitted here" 485,csMemberIsNotStatic,"%s is not a static member" 486,csMemberIsNotInstance,"%s is not an instance member" 487,csArgumentLengthMismatch,"Argument length mismatch" 488,csArgumentTypesDoNotMatch,"The argument types don't match" 489,csMethodExpectsParams,"This method expects a CLI 'params' parameter in this position. 'params' is a way of passing a variable number of arguments to a method in languages such as C#. Consider passing an array for this argument" 490,csMemberIsNotAccessible,"The member or object constructor '%s' is not %s" 491,csMemberIsNotAccessible2,"The member or object constructor '%s' is not %s. Private members may only be accessed from within the declaring type. Protected members may only be accessed from an extending type and cannot be accessed from inner lambda expressions." 492,csMethodIsNotAStaticMethod,"%s is not a static method" 493,csMethodIsNotAnInstanceMethod,"%s is not an instance method" csMemberHasNoArgumentOrReturnProperty,"The member or object constructor '%s' has no argument or settable return property '%s'. %s." 495,csRequiredSignatureIs,"The required signature is %s" 496,csMemberSignatureMismatch,"The member or object constructor '%s' requires %d argument(s). The required signature is '%s'." 497,csMemberSignatureMismatch2,"The member or object constructor '%s' requires %d additional argument(s). The required signature is '%s'." 498,csMemberSignatureMismatch3,"The member or object constructor '%s' requires %d argument(s). The required signature is '%s'. Some names for missing arguments are %s." 499,csMemberSignatureMismatch4,"The member or object constructor '%s' requires %d additional argument(s). The required signature is '%s'. Some names for missing arguments are %s." 500,csMemberSignatureMismatchArityNamed,"The member or object constructor '%s' requires %d argument(s) but is here given %d unnamed and %d named argument(s). The required signature is '%s'." 501,csMemberSignatureMismatchArity,"The member or object constructor '%s' takes %d argument(s) but is here given %d. The required signature is '%s'." 502,csMemberSignatureMismatchArityType,"The member or object constructor '%s' takes %d type argument(s) but is here given %d. The required signature is '%s'." 503,csMemberNotAccessible,"The member or object constructor '%s' taking %d arguments are not accessible from this code location. All accessible versions of method '%s' take %d arguments." 504,csIncorrectGenericInstantiation,"Incorrect generic instantiation. No %s member named '%s' takes %d generic arguments." 505,csMemberOverloadArityMismatch,"The member or object constructor '%s' does not take %d argument(s). An overload was found taking %d arguments." 506,csNoMemberTakesTheseArguments,"No %s member or object constructor named '%s' takes %d arguments" 507,csNoMemberTakesTheseArguments2,"No %s member or object constructor named '%s' takes %d arguments. Note the call to this member also provides %d named arguments." 508,csNoMemberTakesTheseArguments3,"No %s member or object constructor named '%s' takes %d arguments. The named argument '%s' doesn't correspond to any argument or settable return property for any overload." 509,csMethodNotFound,"Method or object constructor '%s' not found" csNoOverloadsFound,"No overloads match for method '%s'." csMethodIsOverloaded,"A unique overload for method '%s' could not be determined based on type information prior to this program point. A type annotation may be needed." csCandidates,"Candidates: %s" csSeeAvailableOverloads,"The available overloads are shown below (or in the Error List window)." # ----------------------------------------------------------------------------- # pars.fsy errors # ----------------------------------------------------------------------------- 512,parsDoCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on 'do' bindings" 513,parsEofInHashIf,"End of file in #if section begun at or after here" 514,parsEofInString,"End of file in string begun at or before here" 515,parsEofInVerbatimString,"End of file in verbatim string begun at or before here" 516,parsEofInComment,"End of file in comment begun at or before here" 517,parsEofInStringInComment,"End of file in string embedded in comment begun at or before here" 518,parsEofInVerbatimStringInComment,"End of file in verbatim string embedded in comment begun at or before here" 519,parsEofInIfOcaml,"End of file in IF-OCAML section begun at or before here" 520,parsEofInDirective,"End of file in directive begun at or before here" 521,parsNoHashEndIfFound,"No #endif found for #if or #else" 522,parsAttributesIgnored,"Attributes have been ignored in this construct" 523,parsUseBindingsIllegalInImplicitClassConstructors,"'use' bindings are not permitted in primary constructors" 524,parsUseBindingsIllegalInModules,"'use' bindings are not permitted in modules and are treated as 'let' bindings" 525,parsIntegerForLoopRequiresSimpleIdentifier,"An integer for loop must use a simple identifier" 526,parsOnlyOneWithAugmentationAllowed,"At most one 'with' augmentation is permitted" 527,parsUnexpectedSemicolon,"A semicolon is not expected at this point" 528,parsUnexpectedEndOfFile,"Unexpected end of input" 529,parsUnexpectedVisibilityDeclaration,"Accessibility modifiers are not permitted here" 530,parsOnlyHashDirectivesAllowed,"Only '#' compiler directives may occur prior to the first 'namespace' declaration" 531,parsVisibilityDeclarationsShouldComePriorToIdentifier,"Accessibility modifiers should come immediately prior to the identifier naming a construct" 532,parsNamespaceOrModuleNotBoth,"Files should begin with either a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule', but not both. To define a module within a namespace use 'module SomeModule = ...'" 534,parsModuleAbbreviationMustBeSimpleName,"A module abbreviation must be a simple name, not a path" 535,parsIgnoreAttributesOnModuleAbbreviation,"Ignoring attributes on module abbreviation" 536,parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate,"Ignoring accessibility attribute on module abbreviation. Module abbreviations are always private." 537,parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate,"Ignoring visibility attribute on module abbreviation. Module abbreviations are always private." 538,parsUnClosedBlockInHashLight,"Unclosed block" 539,parsUnmatchedBeginOrStruct,"Unmatched 'begin' or 'struct'" 541,parsModuleDefnMustBeSimpleName,"A module name must be a simple name, not a path" 542,parsUnexpectedEmptyModuleDefn,"Unexpected empty type moduleDefn list" parsAttributesMustComeBeforeVal,"Attributes should be placed before 'val'" 543,parsAttributesAreNotPermittedOnInterfaceImplementations,"Attributes are not permitted on interface implementations" 544,parsSyntaxError,"Syntax error" 545,parsAugmentationsIllegalOnDelegateType,"Augmentations are not permitted on delegate type moduleDefns" 546,parsUnmatchedClassInterfaceOrStruct,"Unmatched 'class', 'interface' or 'struct'" 547,parsEmptyTypeDefinition,"A type definition requires one or more members or other declarations. If you intend to define an empty class, struct or interface, then use 'type ... = class end', 'interface end' or 'struct end'." 550,parsUnmatchedWith,"Unmatched 'with' or badly formatted 'with' block" 551,parsGetOrSetRequired,"'get', 'set' or 'get,set' required" 552,parsOnlyClassCanTakeValueArguments,"Only class types may take value arguments" 553,parsUnmatchedBegin,"Unmatched 'begin'" 554,parsInvalidDeclarationSyntax,"Invalid declaration syntax" 555,parsGetAndOrSetRequired,"'get' and/or 'set' required" 556,parsTypeAnnotationsOnGetSet,"Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'" 557,parsGetterMustHaveAtLeastOneArgument,"A getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'" 558,parsMultipleAccessibilitiesForGetSet,"Multiple accessibilities given for property getter or setter" 559,parsSetSyntax,"Property setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '" 560,parsInterfacesHaveSameVisibilityAsEnclosingType,"Interfaces always have the same visibility as the enclosing type" 561,parsAccessibilityModsIllegalForAbstract,"Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type." 562,parsAttributesIllegalOnInherit,"Attributes are not permitted on 'inherit' declarations" 563,parsVisibilityIllegalOnInherit,"Accessibility modifiers are not permitted on an 'inherits' declaration" 564,parsInheritDeclarationsCannotHaveAsBindings,"'inherit' declarations cannot have 'as' bindings. To access members of the base class when overriding a method, the syntax 'base.SomeMember' may be used; 'base' is a keyword. Remove this 'as' binding." 565,parsAttributesIllegalHere,"Attributes are not allowed here" 566,parsTypeAbbreviationsCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted in this position for type abbreviations" 567,parsEnumTypesCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted in this position for enum types" 568,parsAllEnumFieldsRequireValues,"All enum fields must be given values" 569,parsInlineAssemblyCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on inline assembly code types" 571,parsUnexpectedIdentifier,"Unexpected identifier: '%s'" 572,parsUnionCasesCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation." 573,parsEnumFieldsCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on enumeration fields" parsConsiderUsingSeparateRecordType,"Consider using a separate record type instead" 575,parsRecordFieldsCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on record fields. Use 'type R = internal ...' or 'type R = private ...' to give an accessibility to the whole representation." 576,parsLetAndForNonRecBindings,"The declaration form 'let ... and ...' for non-recursive bindings is not used in F# code. Consider using a sequence of 'let' bindings" 583,parsUnmatchedParen,"Unmatched '('" 584,parsSuccessivePatternsShouldBeSpacedOrTupled,"Successive patterns should be separated by spaces or tupled" 586,parsNoMatchingInForLet,"No matching 'in' found for this 'let'" 587,parsErrorInReturnForLetIncorrectIndentation,"Error in the return expression for this 'let'. Possible incorrect indentation." 588,parsExpectedStatementAfterLet,"Block following this '%s' is unfinished. Expect an expression." 589,parsIncompleteIf,"Incomplete conditional. Expected 'if then ' or 'if then else '." 590,parsAssertIsNotFirstClassValue,"'assert' may not be used as a first class value. Use 'assert ' instead." 594,parsIdentifierExpected,"Identifier expected" 595,parsInOrEqualExpected,"'in' or '=' expected" 596,parsArrowUseIsLimited,"The use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions." 597,parsSuccessiveArgsShouldBeSpacedOrTupled,"Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized" 598,parsUnmatchedBracket,"Unmatched '['" 599,parsMissingQualificationAfterDot,"Missing qualification after '.'" parsParenFormIsForML,"In F# code you may use 'expr.[expr]'. A type annotation may be required to indicate the first expression is an array" 601,parsMismatchedQuote,"Mismatched quotation, beginning with '%s'" 602,parsUnmatched,"Unmatched '%s'" 603,parsUnmatchedBracketBar,"Unmatched '[|'" 604,parsUnmatchedBrace,"Unmatched '{{'" 609,parsFieldBinding,"Field bindings must have the form 'id = expr;'" 610,parsMemberIllegalInObjectImplementation,"This member is not permitted in an object implementation" 611,parsMissingFunctionBody,"Missing function body" 613,parsSyntaxErrorInLabeledType,"Syntax error in labelled type argument" 615,parsUnexpectedInfixOperator,"Unexpected infix operator in type expression" parsMultiArgumentGenericTypeFormDeprecated,"The syntax '(typ,...,typ) ident' is not used in F# code. Consider using 'ident' instead" 618,parsInvalidLiteralInType,"Invalid literal in type" 619,parsUnexpectedOperatorForUnitOfMeasure,"Unexpected infix operator in unit-of-measure expression. Legal operators are '*', '/' and '^'." 620,parsUnexpectedIntegerLiteralForUnitOfMeasure,"Unexpected integer literal in unit-of-measure expression" 621,parsUnexpectedTypeParameter,"Syntax error: unexpected type parameter specification" 622,parsMismatchedQuotationName,"Mismatched quotation operator name, beginning with '%s'" 623,parsActivePatternCaseMustBeginWithUpperCase,"Active pattern case identifiers must begin with an uppercase letter" parsNoEqualShouldFollowNamespace,"No '=' symbol should follow a 'namespace' declaration" parsSyntaxModuleStructEndDeprecated,"The syntax 'module ... = struct .. end' is not used in F# code. Consider using 'module ... = begin .. end'" parsSyntaxModuleSigEndDeprecated,"The syntax 'module ... : sig .. end' is not used in F# code. Consider using 'module ... = begin .. end'" # ----------------------------------------------------------------------------- # tc.fs errors # ----------------------------------------------------------------------------- 627,tcStaticFieldUsedWhenInstanceFieldExpected,"A static field was used where an instance field is expected" 629,tcMethodNotAccessible,"Method '%s' is not accessible from this code location" #630,tcTypeFunctionFieldsCannotBeMutated,"Fields which are type functions cannot be mutated" 632,tcImplicitMeasureFollowingSlash,"Implicit product of measures following /" 633,tcUnexpectedMeasureAnon,"Unexpected SynMeasure.Anon" 634,tcNonZeroConstantCannotHaveGenericUnit,"Non-zero constants cannot have generic units. For generic zero, write 0.0<_>." 635,tcSeqResultsUseYield,"In sequence expressions, results are generated using 'yield'" tcUnexpectedBigRationalConstant,"Unexpected big rational constant" 636,tcInvalidTypeForUnitsOfMeasure,"Units-of-measure supported only on float, float32, decimal and signed integer types" tcUnexpectedConstUint16Array,"Unexpected Const_uint16array" tcUnexpectedConstByteArray,"Unexpected Const_bytearray" 640,tcParameterRequiresName,"A parameter with attributes must also be given a name, e.g. '[] Name : Type'" 641,tcReturnValuesCannotHaveNames,"Return values cannot have names" tcMemberKindPropertyGetSetNotExpected,"MemberKind.PropertyGetSet only expected in parse trees" 201,tcNamespaceCannotContainValues,"Namespaces cannot contain values. Consider using a module to hold your value declarations." 644,tcNamespaceCannotContainExtensionMembers,"Namespaces cannot contain extension members except in the same file and namespace where the type is defined. Consider using a module to hold declarations of extension members." 645,tcMultipleVisibilityAttributes,"Multiple visibility attributes have been specified for this identifier" 646,tcMultipleVisibilityAttributesWithLet,"Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions." tcUnrecognizedAccessibilitySpec,"Unrecognized accessibility specification" tcInvalidMethodNameForRelationalOperator,"The name '(%s)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name '%s' instead." tcInvalidMethodNameForEquality,"The name '(%s)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name '%s' instead." tcInvalidMemberName,"The name '(%s)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name '%s' instead." tcInvalidMemberNameFixedTypes,"The name '(%s)' should not be used as a member name because it is given a standard definition in the F# library over fixed types" tcInvalidOperatorDefinitionRelational,"The '%s' operator should not normally be redefined. To define overloaded comparison semantics for a particular type, implement the 'System.IComparable' interface in the definition of that type." tcInvalidOperatorDefinitionEquality,"The '%s' operator should not normally be redefined. To define equality semantics for a type, override the 'Object.Equals' member in the definition of that type." tcInvalidOperatorDefinition,"The '%s' operator should not normally be redefined. Consider using a different operator name" tcInvalidIndexOperatorDefinition,"The '%s' operator cannot be redefined. Consider using a different operator name" tcExpectModuleOrNamespaceParent,"Expected module or namespace parent %s" 647,tcImplementsIComparableExplicitly,"The struct, record or union type '%s' implements the interface 'System.IComparable' explicitly. You must apply the 'CustomComparison' attribute to the type." 648,tcImplementsGenericIComparableExplicitly,"The struct, record or union type '%s' implements the interface 'System.IComparable<_>' explicitly. You must apply the 'CustomComparison' attribute to the type, and should also provide a consistent implementation of the non-generic interface System.IComparable." 649,tcImplementsIStructuralComparableExplicitly,"The struct, record or union type '%s' implements the interface 'System.IStructuralComparable' explicitly. Apply the 'CustomComparison' attribute to the type." 656,tcRecordFieldInconsistentTypes,"This record contains fields from inconsistent types" 657,tcDllImportStubsCannotBeInlined,"DLLImport stubs cannot be inlined" 658,tcStructsCanOnlyBindThisAtMemberDeclaration,"Structs may only bind a 'this' parameter at member declarations" 659,tcUnexpectedExprAtRecInfPoint,"Unexpected expression at recursive inference point" 660,tcLessGenericBecauseOfAnnotation,"This code is less generic than required by its annotations because the explicit type variable '%s' could not be generalized. It was constrained to be '%s'." 661,tcConstrainedTypeVariableCannotBeGeneralized,"One or more of the explicit class or function type variables for this binding could not be generalized, because they were constrained to other types" 662,tcGenericParameterHasBeenConstrained,"A generic type parameter has been used in a way that constrains it to always be '%s'" 663,tcTypeParameterHasBeenConstrained,"This type parameter has been used in a way that constrains it to always be '%s'" 664,tcTypeParametersInferredAreNotStable,"The type parameters inferred for this value are not stable under the erasure of type abbreviations. This is due to the use of type abbreviations which drop or reorder type parameters, e.g. \n\ttype taggedInt<'a> = int or\n\ttype swap<'a,'b> = 'b * 'a.\nConsider declaring the type parameters for this value explicitly, e.g.\n\tlet f<'a,'b> ((x,y) : swap<'b,'a>) : swap<'a,'b> = (y,x)." 665,tcExplicitTypeParameterInvalid,"Explicit type parameters may only be used on module or member bindings" 666,tcOverridingMethodRequiresAllOrNoTypeParameters,"You must explicitly declare either all or no type parameters when overriding a generic abstract method" 667,tcFieldsDoNotDetermineUniqueRecordType,"The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type" 668,tcFieldAppearsTwiceInRecord,"The field '%s' appears twice in this record expression or pattern" 669,tcUnknownUnion,"Unknown union case" 670,tcNotSufficientlyGenericBecauseOfScope,"This code is not sufficiently generic. The type variable %s could not be generalized because it would escape its scope." 671,tcPropertyRequiresExplicitTypeParameters,"A property cannot have explicit type parameters. Consider using a method instead." 672,tcConstructorCannotHaveTypeParameters,"A constructor cannot have explicit type parameters. Consider using a static construction method instead." 673,tcInstanceMemberRequiresTarget,"This instance member needs a parameter to represent the object being invoked. Make the member static or use the notation 'member x.Member(args) = ...'." 674,tcUnexpectedPropertyInSyntaxTree,"Unexpected source-level property specification in syntax tree" 675,tcStaticInitializerRequiresArgument,"A static initializer requires an argument" 676,tcObjectConstructorRequiresArgument,"An object constructor requires an argument" 677,tcStaticMemberShouldNotHaveThis,"This static member should not have a 'this' parameter. Consider using the notation 'member Member(args) = ...'." 678,tcExplicitStaticInitializerSyntax,"An explicit static initializer should use the syntax 'static new(args) = expr'" 679,tcExplicitObjectConstructorSyntax,"An explicit object constructor should use the syntax 'new(args) = expr'" 680,tcUnexpectedPropertySpec,"Unexpected source-level property specification" tcObjectExpressionFormDeprecated,"This form of object expression is not used in F#. Use 'member this.MemberName ... = ...' to define member implementations in object expressions." 682,tcInvalidDeclaration,"Invalid declaration" 683,tcAttributesInvalidInPatterns,"Attributes are not allowed within patterns" 685,tcFunctionRequiresExplicitTypeArguments,"The generic function '%s' must be given explicit type argument(s)" 686,tcDoesNotAllowExplicitTypeArguments,"The method or function '%s' should not be given explicit type argument(s) because it does not declare its type parameters explicitly" 687,tcTypeParameterArityMismatch,"This value, type or method expects %d type parameter(s) but was given %d" 688,tcDefaultStructConstructorCall,"The default, zero-initializing constructor of a struct type may only be used if all the fields of the struct type admit default initialization" tcCouldNotFindIDisposable,"Couldn't find Dispose on IDisposable, or it was overloaded" 689,tcNonLiteralCannotBeUsedInPattern,"This value is not a literal and cannot be used in a pattern" 690,tcFieldIsReadonly,"This field is readonly" 691,tcNameArgumentsMustAppearLast,"Named arguments must appear after all other arguments" 692,tcFunctionRequiresExplicitLambda,"This function value is being used to construct a delegate type whose signature includes a byref argument. You must use an explicit lambda expression taking %d arguments." 693,tcTypeCannotBeEnumerated,"The type '%s' is not a type whose values can be enumerated with this syntax, i.e. is not compatible with either seq<_>, IEnumerable<_> or IEnumerable and does not have a GetEnumerator method" 694,tcBadReturnTypeForGetEnumerator,"This expression has a method called GetEnumerator, but its return type is a value type. Methods returning struct enumerators cannot be used in this expression form." 695,tcInvalidMixtureOfRecursiveForms,"This recursive binding uses an invalid mixture of recursive forms" 696,tcInvalidObjectConstructionExpression,"This is not a valid object construction expression. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor." 697,tcInvalidConstraint,"Invalid constraint" 698,tcInvalidConstraintTypeSealed,"Invalid constraint: the type used for the constraint is sealed, which means the constraint could only be satisfied by at most one solution" 699,tcInvalidEnumConstraint,"An 'enum' constraint must be of the form 'enum'" 700,tcInvalidNewConstraint,"'new' constraints must take one argument of type 'unit' and return the constructed type" 701,tcInvalidPropertyType,"This property has an invalid type. Properties taking multiple indexer arguments should have types of the form 'ty1 * ty2 -> ty3'. Properties returning functions should have types of the form '(ty1 -> ty2)'." 702,tcExpectedUnitOfMeasureMarkWithAttribute,"Expected unit-of-measure parameter, not type parameter. Explicit unit-of-measure parameters must be marked with the [] attribute." 703,tcExpectedTypeParameter,"Expected type parameter, not unit-of-measure parameter" 704,tcExpectedTypeNotUnitOfMeasure,"Expected type, not unit-of-measure" 705,tcExpectedUnitOfMeasureNotType,"Expected unit-of-measure, not type" 706,tcInvalidUnitsOfMeasurePrefix,"Units-of-measure cannot be used as prefix arguments to a type. Rewrite as postfix arguments in angle brackets." 707,tcUnitsOfMeasureInvalidInTypeConstructor,"Unit-of-measure cannot be used in type constructor application" 708,tcRequireBuilderMethod,"This control construct may only be used if the computation expression builder defines a '%s' method" 709,tcTypeHasNoNestedTypes,"This type has no nested types" 711,tcUnexpectedSymbolInTypeExpression,"Unexpected %s in type expression" 712,tcTypeParameterInvalidAsTypeConstructor,"Type parameter cannot be used as type constructor" 713,tcIllegalSyntaxInTypeExpression,"Illegal syntax in type expression" 714,tcAnonymousUnitsOfMeasureCannotBeNested,"Anonymous unit-of-measure cannot be nested inside another unit-of-measure expression" 715,tcAnonymousTypeInvalidInDeclaration,"Anonymous type variables are not permitted in this declaration" 716,tcUnexpectedSlashInType,"Unexpected / in type" 717,tcUnexpectedTypeArguments,"Unexpected type arguments" 718,tcOptionalArgsOnlyOnMembers,"Optional arguments are only permitted on type members" 719,tcNameNotBoundInPattern,"Name '%s' not bound in pattern context" 720,tcInvalidNonPrimitiveLiteralInPatternMatch,"Non-primitive numeric literal constants cannot be used in pattern matches because they can be mapped to multiple different types through the use of a NumericLiteral module. Consider using replacing with a variable, and use 'when = ' at the end of the match clause." 721,tcInvalidTypeArgumentUsage,"Type arguments cannot be specified here" 722,tcRequireActivePatternWithOneResult,"Only active patterns returning exactly one result may accept arguments" 723,tcInvalidArgForParameterizedPattern,"Invalid argument to parameterized pattern label" 724,tcInvalidIndexIntoActivePatternArray,"Internal error. Invalid index into active pattern array" 725,tcUnionCaseDoesNotTakeArguments,"This union case does not take arguments" 726,tcUnionCaseRequiresOneArgument,"This union case takes one argument" 727,tcUnionCaseExpectsTupledArguments,"This union case expects %d arguments in tupled form" 728,tcFieldIsNotStatic,"Field '%s' is not static" 729,tcFieldNotLiteralCannotBeUsedInPattern,"This field is not a literal and cannot be used in a pattern" 730,tcRequireVarConstRecogOrLiteral,"This is not a variable, constant, active recognizer or literal" 731,tcInvalidPattern,"This is not a valid pattern" tcUseWhenPatternGuard,"Character range matches have been removed in F#. Consider using a 'when' pattern guard instead." 733,tcIllegalPattern,"Illegal pattern" 734,tcSyntaxErrorUnexpectedQMark,"Syntax error - unexpected '?' symbol" 735,tcExpressionCountMisMatch,"Expected %d expressions, got %d" 736,tcExprUndelayed,"TcExprUndelayed: delayed" 737,tcExpressionRequiresSequence,"This expression form may only be used in sequence and computation expressions" 738,tcInvalidObjectExpressionSyntaxForm,"Invalid object expression. Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces." 739,tcInvalidObjectSequenceOrRecordExpression,"Invalid object, sequence or record expression" 740,tcInvalidSequenceExpressionSyntaxForm,"Invalid record, sequence or computation expression. Sequence expressions should be of the form 'seq {{ ... }}'" tcExpressionWithIfRequiresParenthesis,"This list or array expression includes an element of the form 'if ... then ... else'. Parenthesize this expression to indicate it is an individual element of the list or array, to disambiguate this from a list generated using a sequence expression" 741,tcUnableToParseFormatString,"Unable to parse format string '%s'" 742,tcListLiteralMaxSize,"This list expression exceeds the maximum size for list literals. Use an array for larger literals and call Array.ToList." 743,tcExpressionFormRequiresObjectConstructor,"The expression form 'expr then expr' may only be used as part of an explicit object constructor" 744,tcNamedArgumentsCannotBeUsedInMemberTraits,"Named arguments cannot be given to member trait calls" 745,tcNotValidEnumCaseName,"This is not a valid name for an enumeration case" 746,tcFieldIsNotMutable,"This field is not mutable" 747,tcConstructRequiresListArrayOrSequence,"This construct may only be used within list, array and sequence expressions, e.g. expressions of the form 'seq {{ ... }}', '[ ... ]' or '[| ... |]'. These use the syntax 'for ... in ... do ... yield...' to generate elements" 748,tcConstructRequiresComputationExpressions,"This construct may only be used within computation expressions. To return a value from an ordinary function simply write the expression without 'return'." 749,tcConstructRequiresSequenceOrComputations,"This construct may only be used within sequence or computation expressions" 750,tcConstructRequiresComputationExpression,"This construct may only be used within computation expressions" 751,tcInvalidIndexerExpression,"Invalid indexer expression" 752,tcObjectOfIndeterminateTypeUsedRequireTypeConstraint,"The operator 'expr.[idx]' has been used on an object of indeterminate type based on information prior to this program point. Consider adding further type constraints" 753,tcCannotInheritFromVariableType,"Cannot inherit from a variable type" 754,tcObjectConstructorsOnTypeParametersCannotTakeArguments,"Calls to object constructors on type parameters cannot be given arguments" 755,tcCompiledNameAttributeMisused,"The 'CompiledName' attribute cannot be used with this language element" 756,tcNamedTypeRequired,"'%s' may only be used with named types" 757,tcInheritCannotBeUsedOnInterfaceType,"'inherit' cannot be used on interface types. Consider implementing the interface by using 'interface ... with ... end' instead." 758,tcNewCannotBeUsedOnInterfaceType,"'new' cannot be used on interface types. Consider using an object expression '{{ new ... with ... }}' instead." 759,tcAbstractTypeCannotBeInstantiated,"Instances of this type cannot be created since it has been marked abstract or not all methods have been given implementations. Consider using an object expression '{{ new ... with ... }}' instead." 760,tcIDisposableTypeShouldUseNew,"It is recommended that objects that support the IDisposable interface are created using 'new Type(args)' rather than 'Type(args)' to indicate that resources may be owned by the generated value" 761,tcSyntaxCanOnlyBeUsedToCreateObjectTypes,"'%s' may only be used to construct object types" 762,tcConstructorRequiresCall,"Constructors for the type '%s' must directly or indirectly call its implicit object constructor. Use a call to the implicit object constructor instead of a record expression." 763,tcUndefinedField,"The field '%s' has been given a value, but is not present in the type '%s'" 764,tcFieldRequiresAssignment,"No assignment given for field '%s' of type '%s'" 765,tcExtraneousFieldsGivenValues,"Extraneous fields have been given values" 766,tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual,"Only overrides of abstract and virtual members may be specified in object expressions" 767,tcNoAbstractOrVirtualMemberFound,"The member '%s' does not correspond to any abstract or virtual method available to override or implement" 768,tcArgumentArityMismatch,"The member '%s' does not accept the correct number of arguments, %d arguments are expected" 769,tcArgumentArityMismatchOneOverload,"The member '%s' does not accept the correct number of arguments. One overload accepts %d arguments." 770,tcSimpleMethodNameRequired,"A simple method name is required here" 771,tcPredefinedTypeCannotBeUsedAsSuperType,"The types System.ValueType, System.Enum, System.Delegate, System.MulticastDelegate and System.Array cannot be used as super types in an object expression or class" 772,tcNewMustBeUsedWithNamedType,"'new' must be used with a named type" 773,tcCannotCreateExtensionOfSealedType,"Cannot create an extension of a sealed type" 774,tcNoArgumentsForRecordValue,"No arguments may be given when constructing a record value" 775,tcNoInterfaceImplementationForConstructionExpression,"Interface implementations cannot be given on construction expressions" 776,tcObjectConstructionCanOnlyBeUsedInClassTypes,"Object construction expressions may only be used to implement constructors in class types" 777,tcOnlySimpleBindingsCanBeUsedInConstructionExpressions,"Only simple bindings of the form 'id = expr' can be used in construction expressions" 778,tcObjectsMustBeInitializedWithObjectExpression,"Objects must be initialized by an object construction expression that calls an inherited object constructor and assigns a value to each field" 779,tcExpectedInterfaceType,"Expected an interface type" 780,tcConstructorForInterfacesDoNotTakeArguments,"Constructor expressions for interfaces do not take arguments" 781,tcConstructorRequiresArguments,"This object constructor requires arguments" 782,tcNewRequiresObjectConstructor,"'new' may only be used with object constructors" 783,tcAtLeastOneOverrideIsInvalid,"At least one override did not correctly implement its corresponding abstract member" 784,tcNumericLiteralRequiresModule,"This numeric literal requires that a module '%s' defining functions FromZero, FromOne, FromInt32, FromInt64 and FromString be in scope" 785,tcInvalidRecordConstruction,"Invalid record construction" 786,tcExpressionFormRequiresRecordTypes,"The expression form {{ expr with ... }} may only be used with record types. To build object types use {{ new Type(...) with ... }}" 787,tcInheritedTypeIsNotObjectModelType,"The inherited type is not an object model type" 788,tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes,"Object construction expressions (i.e. record expressions with inheritance specifications) may only be used to implement constructors in object model types. Use 'new ObjectType(args)' to construct instances of object model types outside of constructors" 789,tcEmptyRecordInvalid,"'{{ }}' is not a valid expression. Records must include at least one field. Empty sequences are specified by using Seq.empty or an empty list '[]'." 790,tcTypeIsNotARecordTypeNeedConstructor,"This type is not a record type. Values of class and struct types must be created using calls to object constructors." 791,tcTypeIsNotARecordType,"This type is not a record type" 792,tcConstructIsAmbiguousInComputationExpression,"This construct is ambiguous as part of a computation expression. Nested expressions may be written using 'let _ = (...)' and nested computations using 'let! res = builder {{ ... }}'." 793,tcConstructIsAmbiguousInSequenceExpression,"This construct is ambiguous as part of a sequence expression. Nested expressions may be written using 'let _ = (...)' and nested sequences using 'yield! seq {{... }}'." 794,tcDoBangIllegalInSequenceExpression,"'do!' cannot be used within sequence expressions" 795,tcUseForInSequenceExpression,"The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead." 796,tcTryIllegalInSequenceExpression,"'try'/'with' cannot be used within sequence expressions" 797,tcUseYieldBangForMultipleResults,"In sequence expressions, multiple results are generated using 'yield!'" 799,tcInvalidAssignment,"Invalid assignment" 800,tcInvalidUseOfTypeName,"Invalid use of a type name" 801,tcTypeHasNoAccessibleConstructor,"This type has no accessible object constructors" 802,tcInvalidUseOfTypeNameOrConstructor,"Invalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'." 803,tcInvalidUseOfTypeNameOrConstructorWithOverloads,"Invalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'. The required signature is:\n\t%s." 804,tcInvalidUseOfInterfaceType,"Invalid use of an interface type" 805,tcInvalidUseOfDelegate,"Invalid use of a delegate constructor. Use the syntax 'new Type(args)' or just 'Type(args)'." 806,tcPropertyIsNotStatic,"Property '%s' is not static" 807,tcPropertyIsNotReadable,"Property '%s' is not readable" 808,tcLookupMayNotBeUsedHere,"This lookup cannot be used here" 809,tcPropertyIsStatic,"Property '%s' is static" 810,tcPropertyCannotBeSet1,"Property '%s' cannot be set" 811,tcConstructorsCannotBeFirstClassValues,"Constructors must be applied to arguments and cannot be used as first-class values. If necessary use an anonymous function '(fun arg1 ... argN -> new Type(arg1,...,argN))'." 812,tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFields,"The syntax 'expr.id' may only be used with record labels, properties and fields" 813,tcEventIsStatic,"Event '%s' is static" 814,tcEventIsNotStatic,"Event '%s' is not static" 815,tcNamedArgumentDidNotMatch,"The named argument '%s' did not match any argument or mutable property" 816,tcOverloadsCannotHaveCurriedArguments,"One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form." tcUnnamedArgumentsDoNotFormPrefix,"The unnamed arguments do not form a prefix of the arguments of the method called" 817,tcStaticOptimizationConditionalsOnlyForFSharpLibrary,"Static optimization conditionals are only for use within the F# library" 818,tcFormalArgumentIsNotOptional,"The corresponding formal argument is not optional" 819,tcInvalidOptionalAssignmentToPropertyOrField,"Invalid optional assignment to a property or field" 820,tcDelegateConstructorMustBePassed,"A delegate constructor must be passed a single function value" 821,tcBindingCannotBeUseAndRec,"A binding cannot be marked both 'use' and 'rec'" 823,tcVolatileOnlyOnClassLetBindings,"The 'VolatileField' attribute may only be used on 'let' bindings in classes" 824,tcAttributesAreNotPermittedOnLetBindings,"Attributes are not permitted on 'let' bindings in expressions" 825,tcDefaultValueAttributeRequiresVal,"The 'DefaultValue' attribute may only be used on 'val' declarations" 826,tcConditionalAttributeRequiresMembers,"The 'ConditionalAttribute' attribute may only be used on members" 827,tcInvalidActivePatternName,"This is not a valid name for an active pattern" 828,tcEntryPointAttributeRequiresFunctionInModule,"The 'EntryPointAttribute' attribute may only be used on function definitions in modules" 829,tcMutableValuesCannotBeInline,"Mutable values cannot be marked 'inline'" 830,tcMutableValuesMayNotHaveGenericParameters,"Mutable values cannot have generic parameters" 831,tcMutableValuesSyntax,"Mutable function values should be written 'let mutable f = (fun args -> ...)'" 832,tcOnlyFunctionsCanBeInline,"Only functions may be marked 'inline'" 833,tcIllegalAttributesForLiteral,"A literal value cannot be given the [] or [] attributes" 834,tcLiteralCannotBeMutable,"A literal value cannot be marked 'mutable'" 835,tcLiteralCannotBeInline,"A literal value cannot be marked 'inline'" 836,tcLiteralCannotHaveGenericParameters,"Literal values cannot have generic parameters" 837,tcInvalidConstantExpression,"This is not a valid constant expression" 838,tcTypeIsInaccessible,"This type is not accessible from this code location" 839,tcUnexpectedConditionInImportedAssembly,"Unexpected condition in imported assembly: failed to decode AttributeUsage attribute" 840,tcUnrecognizedAttributeTarget,"Unrecognized attribute target. Valid attribute targets are 'assembly', 'module', 'type', 'method', 'property', 'return', 'param', 'field', 'event', 'constructor'." 841,tcAttributeIsNotValidForLanguageElementUseDo,"This attribute is not valid for use on this language element. Assembly attributes should be attached to a 'do ()' declaration, if necessary within an F# module." 842,tcAttributeIsNotValidForLanguageElement,"This attribute is not valid for use on this language element" 843,tcOptionalArgumentsCannotBeUsedInCustomAttribute,"Optional arguments cannot be used in custom attributes" 844,tcPropertyCannotBeSet0,"This property cannot be set" 845,tcPropertyOrFieldNotFoundInAttribute,"This property or field was not found on this custom attribute type" 846,tcCustomAttributeMustBeReferenceType,"A custom attribute must be a reference type" 847,tcCustomAttributeArgumentMismatch,"The number of args for a custom attribute does not match the expected number of args for the attribute constructor" 848,tcCustomAttributeMustInvokeConstructor,"A custom attribute must invoke an object constructor" 849,tcAttributeExpressionsMustBeConstructorCalls,"Attribute expressions must be calls to object constructors" 850,tcUnsupportedAttribute,"This attribute cannot be used in this version of F#" 851,tcInvalidInlineSpecification,"Invalid inline specification" 852,tcInvalidUseBinding,"'use' bindings must be of the form 'use = '" 853,tcAbstractMembersIllegalInAugmentation,"Abstract members are not permitted in an augmentation - they must be defined as part of the type itself" 854,tcMethodOverridesIllegalHere,"Method overrides and interface implementations are not permitted here" 855,tcNoMemberFoundForOverride,"No abstract or interface member was found that corresponds to this override" 856,tcOverrideArityMismatch,"This override takes a different number of arguments to the corresponding abstract member" 857,tcDefaultImplementationAlreadyExists,"This method already has a default implementation" 858,tcDefaultAmbiguous,"The method implemented by this default is ambiguous" 859,tcNoPropertyFoundForOverride,"No abstract property was found that corresponds to this override" 860,tcAbstractPropertyMissingGetOrSet,"This property overrides or implements an abstract property but the abstract property doesn't have a corresponding %s" 861,tcInvalidSignatureForSet,"Invalid signature for set member" 862,tcPropertyAlreadyHasDefaultImplementation,"This property already has a default implementation" 863,tcPropertyImplementedIsAmbiguous,"The property implemented by this default is ambiguous" 864,tcNewMemberHidesAbstractMember,"This new member hides the abstract member '%s'. Rename the member or use 'override' instead." 864,tcNewMemberHidesAbstractMemberWithSuffix,"This new member hides the abstract member '%s' once tuples, functions, units of measure and/or provided types are erased. Rename the member or use 'override' instead." 865,tcStaticInitializersIllegalInInterface,"Interfaces cannot contain definitions of static initializers" 866,tcObjectConstructorsIllegalInInterface,"Interfaces cannot contain definitions of object constructors" 867,tcMemberOverridesIllegalInInterface,"Interfaces cannot contain definitions of member overrides" 868,tcConcreteMembersIllegalInInterface,"Interfaces cannot contain definitions of concrete members. You may need to define a constructor on your type to indicate that the type is a class." 869,tcConstructorsDisallowedInExceptionAugmentation,"Constructors cannot be specified in exception augmentations" 870,tcStructsCannotHaveConstructorWithNoArguments,"Structs cannot have an object constructor with no arguments. This is a restriction imposed on all CLI languages as structs automatically support a default constructor." 871,tcConstructorsIllegalForThisType,"Constructors cannot be defined for this type" 872,tcRecursiveBindingsWithMembersMustBeDirectAugmentation,"Recursive bindings that include member specifications can only occur as a direct augmentation of a type" 873,tcOnlySimplePatternsInLetRec,"Only simple variable patterns can be bound in 'let rec' constructs" 874,tcOnlyRecordFieldsAndSimpleLetCanBeMutable,"Only record fields and simple 'let' bindings may be marked mutable" 875,tcMemberIsNotSufficientlyGeneric,"This member is not sufficiently generic" 876,tcLiteralAttributeRequiresConstantValue,"A declaration may only be the [] attribute if a constant value is also given, e.g. 'val x : int = 1'" 877,tcValueInSignatureRequiresLiteralAttribute,"A declaration may only be given a value in a signature if the declaration has the [] attribute" 878,tcThreadStaticAndContextStaticMustBeStatic,"Thread-static and context-static variables must be static and given the [] attribute to indicate that the value is initialized to the default value on each new thread" 879,tcVolatileFieldsMustBeMutable,"Volatile fields must be marked 'mutable' and cannot be thread-static" 880,tcUninitializedValFieldsMustBeMutable,"Uninitialized 'val' fields must be mutable and marked with the '[]' attribute. Consider using a 'let' binding instead of a 'val' field." 881,tcStaticValFieldsMustBeMutableAndPrivate,"Static 'val' fields in types must be mutable, private and marked with the '[]' attribute. They are initialized to the 'null' or 'zero' value for their type. Consider also using a 'static let mutable' binding in a class type." 882,tcFieldRequiresName,"This field requires a name" 883,tcInvalidNamespaceModuleTypeUnionName,"Invalid namespace, module, type or union case name" 884,tcIllegalFormForExplicitTypeDeclaration,"Explicit type declarations for constructors must be of the form 'ty1 * ... * tyN -> resTy'. Parentheses may be required around 'resTy'" 885,tcReturnTypesForUnionMustBeSameAsType,"Return types of union cases must be identical to the type being defined, up to abbreviations" 886,tcInvalidEnumerationLiteral,"This is not a valid value for an enumeration literal" 887,tcTypeIsNotInterfaceType1,"The type '%s' is not an interface type" 888,tcDuplicateSpecOfInterface,"Duplicate specification of an interface" 889,tcFieldValIllegalHere,"A field/val declaration is not permitted here" 890,tcInheritIllegalHere,"A inheritance declaration is not permitted here" 892,tcModuleRequiresQualifiedAccess,"This declaration opens the module '%s', which is marked as 'RequireQualifiedAccess'. Adjust your code to use qualified references to the elements of the module instead, e.g. 'List.map' instead of 'map'. This change will ensure that your code is robust as new constructs are added to libraries." 893,tcOpenUsedWithPartiallyQualifiedPath,"This declaration opens the namespace or module '%s' through a partially qualified path. Adjust this code to use the full path of the namespace. This change will make your code more robust as new constructs are added to the F# and CLI libraries." 894,tcLocalClassBindingsCannotBeInline,"Local class bindings cannot be marked inline. Consider lifting the definition out of the class or else do not mark it as inline." 895,tcTypeAbbreviationsMayNotHaveMembers,"Type abbreviations cannot have members" 896,tcEnumerationsMayNotHaveMembers,"Enumerations cannot have members" 897,tcMeasureDeclarationsRequireStaticMembers,"Measure declarations may have only static members" tcStructsMayNotContainDoBindings,"Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings" 901,tcStructsMayNotContainLetBindings,"Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type." 902,tcStaticLetBindingsRequireClassesWithImplicitConstructors,"Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'." 904,tcMeasureDeclarationsRequireStaticMembersNotConstructors,"Measure declarations may have only static members: constructors are not available" 905,tcMemberAndLocalClassBindingHaveSameName,"A member and a local class binding both have the name '%s'" 906,tcTypeAbbreviationsCannotHaveInterfaceDeclaration,"Type abbreviations cannot have interface declarations" 907,tcEnumerationsCannotHaveInterfaceDeclaration,"Enumerations cannot have interface declarations" 908,tcTypeIsNotInterfaceType0,"This type is not an interface type" 909,tcAllImplementedInterfacesShouldBeDeclared,"All implemented interfaces should be declared on the initial declaration of the type" 910,tcDefaultImplementationForInterfaceHasAlreadyBeenAdded,"A default implementation of this interface has already been added because the explicit implementation of the interface was not specified at the definition of the type" 911,tcMemberNotPermittedInInterfaceImplementation,"This member is not permitted in an interface implementation" 912,tcDeclarationElementNotPermittedInAugmentation,"This declaration element is not permitted in an augmentation" 913,tcTypesCannotContainNestedTypes,"Types cannot contain nested type definitions" tcTypeExceptionOrModule,"type, exception or module" tcTypeOrModule,"type or module" 914,tcImplementsIStructuralEquatableExplicitly,"The struct, record or union type '%s' implements the interface 'System.IStructuralEquatable' explicitly. Apply the 'CustomEquality' attribute to the type." 915,tcImplementsIEquatableExplicitly,"The struct, record or union type '%s' implements the interface 'System.IEquatable<_>' explicitly. Apply the 'CustomEquality' attribute to the type and provide a consistent implementation of the non-generic override 'System.Object.Equals(obj)'." 916,tcExplicitTypeSpecificationCannotBeUsedForExceptionConstructors,"Explicit type specifications cannot be used for exception constructors" 917,tcExceptionAbbreviationsShouldNotHaveArgumentList,"Exception abbreviations should not have argument lists" 918,tcAbbreviationsFordotNetExceptionsCannotTakeArguments,"Abbreviations for Common IL exceptions cannot take arguments" 919,tcExceptionAbbreviationsMustReferToValidExceptions,"Exception abbreviations must refer to existing exceptions or F# types deriving from System.Exception" 920,tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor,"Abbreviations for Common IL exception types must have a matching object constructor" 921,tcNotAnException,"Not an exception" #922,tcUnexpectedConstraintsOrParametersOnModule,"Unexpected constraints or parameters on module specification" 924,tcInvalidModuleName,"Invalid module name" 925,tcInvalidTypeExtension,"Invalid type extension" 926,tcAttributesOfTypeSpecifyMultipleKindsForType,"The attributes of this type specify multiple kinds for the type" 927,tcKindOfTypeSpecifiedDoesNotMatchDefinition,"The kind of the type specified by its attributes does not match the kind implied by its definition" 928,tcMeasureDefinitionsCannotHaveTypeParameters,"Measure definitions cannot have type parameters" 929,tcTypeRequiresDefinition,"This type requires a definition" tcTypeAbbreviationHasTypeParametersMissingOnType,"This type abbreviation has one or more declared type parameters that do not appear in the type being abbreviated. Type abbreviations must use all declared type parameters in the type being abbreviated. Consider removing one or more type parameters, or use a concrete type definition that wraps an underlying type, such as 'type C<'a> = C of ...'." 931,tcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes,"Structs, interfaces, enums and delegates cannot inherit from other types" 932,tcTypesCannotInheritFromMultipleConcreteTypes,"Types cannot inherit from multiple concrete types" 934,tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttribute,"Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attribute" 935,tcAllowNullTypesMayOnlyInheritFromAllowNullTypes,"Types with the 'AllowNullLiteral' attribute may only inherit from or implement types which also allow the use of the null literal" 936,tcGenericTypesCannotHaveStructLayout,"Generic types cannot be given the 'StructLayout' attribute" 937,tcOnlyStructsCanHaveStructLayout,"Only structs and classes without primary constructors may be given the 'StructLayout' attribute" 938,tcRepresentationOfTypeHiddenBySignature,"The representation of this type is hidden by the signature. It must be given an attribute such as [], [] or [] to indicate the characteristics of the type." 939,tcOnlyClassesCanHaveAbstract,"Only classes may be given the 'AbstractClass' attribute" 940,tcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasure,"Only types representing units-of-measure may be given the 'Measure' attribute" 941,tcOverridesCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on overrides or interface implementations" 942,tcTypesAreAlwaysSealedDU,"Discriminated union types are always sealed" 942,tcTypesAreAlwaysSealedRecord,"Record types are always sealed" 942,tcTypesAreAlwaysSealedAssemblyCode,"Assembly code types are always sealed" 942,tcTypesAreAlwaysSealedStruct,"Struct types are always sealed" 942,tcTypesAreAlwaysSealedDelegate,"Delegate types are always sealed" 942,tcTypesAreAlwaysSealedEnum,"Enum types are always sealed" 943,tcInterfaceTypesAndDelegatesCannotContainFields,"Interface types and delegate types cannot contain fields" 944,tcAbbreviatedTypesCannotBeSealed,"Abbreviated types cannot be given the 'Sealed' attribute" 945,tcCannotInheritFromSealedType,"Cannot inherit a sealed type" 946,tcCannotInheritFromInterfaceType,"Cannot inherit from interface type. Use interface ... with instead." 947,tcStructTypesCannotContainAbstractMembers,"Struct types cannot contain abstract members" 948,tcInterfaceTypesCannotBeSealed,"Interface types cannot be sealed" 949,tcInvalidDelegateSpecification,"Delegate specifications must be of the form 'typ -> typ'" 950,tcDelegatesCannotBeCurried,"Delegate specifications must not be curried types. Use 'typ * ... * typ -> typ' for multi-argument delegates, and 'typ -> (typ -> typ)' for delegates returning function values." 951,tcInvalidTypeForLiteralEnumeration,"Literal enumerations must have type int, uint, int16, uint16, int64, uint64, byte, sbyte or char" #952,tcTypeAbbreviationMustBePublic,"Type abbreviations must be public. If you want to use a private type abbreviation you must use an explicit signature." 953,tcTypeDefinitionIsCyclic,"This type definition involves an immediate cyclic reference through an abbreviation" 954,tcTypeDefinitionIsCyclicThroughInheritance,"This type definition involves an immediate cyclic reference through a struct field or inheritance relation" tcReservedSyntaxForAugmentation,"The syntax 'type X with ...' is reserved for augmentations. Types whose representations are hidden but which have members are now declared in signatures using 'type X = ...'. You may also need to add the '[] attribute to the type definition in the signature" 956,tcMembersThatExtendInterfaceMustBePlacedInSeparateModule,"Members that extend interface, delegate or enum types must be placed in a module separate to the definition of the type. This module must either have the AutoOpen attribute or be opened explicitly by client code to bring the extension members into scope." 957,tcDeclaredTypeParametersForExtensionDoNotMatchOriginal,"The declared type parameters for this type extension do not match the declared type parameters on the original type '%s'" 959,tcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit,"Type definitions may only have one 'inherit' specification and it must be the first declaration" 960,tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers,"'let' and 'do' bindings must come before member and interface definitions in type definitions" 961,tcInheritDeclarationMissingArguments,"This 'inherit' declaration specifies the inherited type but no arguments. Consider supplying arguments, e.g. 'inherit BaseType(args)'." 962,tcInheritConstructionCallNotPartOfImplicitSequence,"This 'inherit' declaration has arguments, but is not in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'." 963,tcLetAndDoRequiresImplicitConstructionSequence,"This definition may only be used in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'." 964,tcTypeAbbreviationsCannotHaveAugmentations,"Type abbreviations cannot have augmentations" 965,tcModuleAbbreviationForNamespace,"The path '%s' is a namespace. A module abbreviation may not abbreviate a namespace." 966,tcTypeUsedInInvalidWay,"The type '%s' is used in an invalid way. A value prior to '%s' has an inferred type involving '%s', which is an invalid forward reference." 967,tcMemberUsedInInvalidWay,"The member '%s' is used in an invalid way. A use of '%s' has been inferred prior to the definition of '%s', which is an invalid forward reference." #968,tcExplicitSignaturesInImplementationFileCannotBeUsed,"Explicit signatures within implementation files are not permitted" #969,tcModulesCannotUseNamedModuleSignatures,"Modules cannot use named module signature definitions" 970,tcAttributeAutoOpenWasIgnored,"The attribute 'AutoOpen(\"%s\")' in the assembly '%s' did not refer to a valid module or namespace in that assembly and has been ignored" # ----------------------------------------------------------------------------- # ilxgen errors # ----------------------------------------------------------------------------- 971,ilUndefinedValue,"Undefined value '%s'" 972,ilLabelNotFound,"Label %s not found" 973,ilIncorrectNumberOfTypeArguments,"Incorrect number of type arguments to local call" ilDynamicInvocationNotSupported,"Dynamic invocation of %s is not supported" 975,ilAddressOfLiteralFieldIsInvalid,"Taking the address of a literal field is invalid" 976,ilAddressOfValueHereIsInvalid,"This operation involves taking the address of a value '%s' represented using a local variable or other special representation. This is invalid." 978,ilValuesWithLiteralAttributeCannotBeMutable,"Values marked with 'LiteralAttribute' cannot be mutable" 979,ilValuesWithLiteralAttributeMustBeSimple,"Values marked with 'LiteralAttribute' must currently be simple integer, character, Boolean, string or floating point constants" 980,ilCustomMarshallersCannotBeUsedInFSharp,"Custom marshallers cannot be specified in F# code. Consider using a C# helper function." 981,ilMarshalAsAttributeCannotBeDecoded,"The MarshalAs attribute could not be decoded" 982,ilSignatureForExternalFunctionContainsTypeParameters,"The signature for this external function contains type parameters. Constrain the argument and return types to indicate the types of the corresponding C function." 983,ilDllImportAttributeCouldNotBeDecoded,"The DllImport attribute could not be decoded" 984,ilLiteralFieldsCannotBeSet,"Literal fields cannot be set" 985,ilStaticMethodIsNotLambda,"GenSetStorage: %s was represented as a static method but was not an appropriate lambda expression" 986,ilMutableVariablesCannotEscapeMethod,"Mutable variables cannot escape their method" 987,ilUnexpectedUnrealizedValue,"Compiler error: unexpected unrealized value" 988,ilMainModuleEmpty,"Main module of program is empty: nothing will happen when it is run" 989,ilTypeCannotBeUsedForLiteralField,"This type cannot be used for a literal field" 990,ilUnexpectedGetSetAnnotation,"Unexpected GetSet annotation on a property" 991,ilFieldOffsetAttributeCouldNotBeDecoded,"The FieldOffset attribute could not be decoded" 992,ilStructLayoutAttributeCouldNotBeDecoded,"The StructLayout attribute could not be decoded" 993,ilDefaultAugmentationAttributeCouldNotBeDecoded,"The DefaultAugmentation attribute could not be decoded" 994,ilReflectedDefinitionsCannotUseSliceOperator,"Reflected definitions cannot contain uses of the prefix splice operator '%%'" # ----------------------------------------------------------------------------- # fscopts text # ----------------------------------------------------------------------------- 1000,optsProblemWithCodepage,"Problem with codepage '%d': %s" optsCopyright,"Freely distributed under the Apache 2.0 Open Source License" optsNameOfOutputFile,"Name of the output file (Short form: -o)" optsBuildConsole,"Build a console executable" optsBuildWindows,"Build a Windows executable" optsBuildLibrary,"Build a library (Short form: -a)" optsBuildModule,"Build a module that can be added to another assembly" optsDelaySign,"Delay-sign the assembly using only the public portion of the strong name key" optsWriteXml,"Write the xmldoc of the assembly to the given file" optsStrongKeyFile,"Specify a strong name key file" optsStrongKeyContainer,"Specify a strong name key container" optsPlatform,"Limit which platforms this code can run on: x86, Itanium, x64, anycpu32bitpreferred, or anycpu. The default is anycpu." optsNoOpt,"Only include optimization information essential for implementing inlined constructs. Inhibits cross-module inlining but improves binary compatibility." optsNoInterface,"Don't add a resource to the generated assembly containing F#-specific metadata" optsSig,"Print the inferred interface of the assembly to a file" optsReference,"Reference an assembly (Short form: -r)" optsWin32res,"Specify a Win32 resource file (.res)" optsWin32manifest,"Specify a Win32 manifest file" optsNowin32manifest,"Do not include the default Win32 manifest" optsResource,"Embed the specified managed resource" optsLinkresource,"Link the specified resource to this assembly where the resinfo format is [,[,public|private]]" optsDebugPM,"Emit debug information (Short form: -g)" optsDebug,"Specify debugging type: full, pdbonly. ('full' is the default and enables attaching a debugger to a running program)." optsOptimize,"Enable optimizations (Short form: -O)" optsTailcalls,"Enable or disable tailcalls" optsCrossoptimize,"Enable or disable cross-module optimizations" optsWarnaserrorPM,"Report all warnings as errors" optsWarnaserror,"Report specific warnings as errors" optsWarn,"Set a warning level (0-5)" optsNowarn,"Disable specific warning messages" optsWarnOn,"Enable specific warnings that may be off by default" optsChecked,"Generate overflow checks" optsDefine,"Define conditional compilation symbols (Short form: -d)" optsMlcompatibility,"Ignore ML compatibility warnings" optsNologo,"Suppress compiler copyright message" optsHelp,"Display this usage message (Short form: -?)" optsCodepage,"Specify the codepage used to read source files" optsUtf8output,"Output messages in UTF-8 encoding" optsFullpaths,"Output messages with fully qualified paths" optsLib,"Specify a directory for the include path which is used to resolve source files and assemblies (Short form: -I)" optsBaseaddress,"Base address for the library to be built" optsNoframework,"Do not reference the default CLI assemblies by default" optsStandalone,"Statically link the F# library and all referenced DLLs that depend on it into the assembly being generated" optsStaticlink,"Statically link the given assembly and all referenced DLLs that depend on this assembly. Use an assembly name e.g. mylib, not a DLL name." optsResident,"Use a resident background compilation service to improve compiler startup times." optsPdb,"Name the output debug file" optsSimpleresolution,"Resolve assembly references using directory-based rules rather than MSBuild resolution" 1048,optsUnrecognizedTarget,"Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'" 1049,optsUnrecognizedDebugType,"Unrecognized debug type '%s', expected 'pdbonly' or 'full'" 1050,optsInvalidWarningLevel,"Invalid warning level '%d'" optsShortFormOf,"Short form of '%s'" optsClirootDeprecatedMsg,"The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead." optsClirootDescription,"Use to override where the compiler looks for mscorlib.dll and framework components" optsHelpBannerOutputFiles,"- OUTPUT FILES -" optsHelpBannerInputFiles,"- INPUT FILES -" optsHelpBannerResources,"- RESOURCES -" optsHelpBannerCodeGen,"- CODE GENERATION -" optsHelpBannerAdvanced,"- ADVANCED -" optsHelpBannerMisc,"- MISCELLANEOUS -" optsHelpBannerLanguage,"- LANGUAGE -" optsHelpBannerErrsAndWarns,"- ERRORS AND WARNINGS -" 1063,optsUnknownArgumentToTheTestSwitch,"Unknown --test argument: '%s'" 1064,optsUnknownPlatform,"Unrecognized platform '%s', valid values are 'x86', 'x64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'" optsInternalNoDescription,"The command-line option '%s' is for internal use only" optsDCLONoDescription,"The command-line option '%s' has been deprecated" optsDCLODeprecatedSuggestAlternative,"The command-line option '%s' has been deprecated. Use '%s' instead." optsDCLOHtmlDoc,"The command-line option '%s' has been deprecated. HTML document generation is now part of the F# Power Pack, via the tool FsHtmlDoc.exe." optsConsoleColors,"Output warning and error messages in color" optsUseHighEntropyVA,"Enable high-entropy ASLR" optsSubSystemVersion,"Specify subsystem version of this assembly" 1051,optsInvalidSubSystemVersion,"Invalid version '%s' for '--subsystemversion'. The version must be 4.00 or greater." # ----------------------------------------------------------------------------- # service.fs strings # ----------------------------------------------------------------------------- typeInfoFullName,"Full name" typeInfoType,"type" typeInfoInherits,"inherits" typeInfoImplements,"implements" typeInfoOtherOverloads,"and %d other overloads" typeInfoUnionCase,"union case" typeInfoActivePatternResult,"active pattern result" typeInfoActiveRecognizer,"active recognizer" typeInfoField,"field" typeInfoEvent,"event" typeInfoProperty,"property" typeInfoCustomOperation,"custom operation" typeInfoArgument,"argument" typeInfoPatternVariable,"patvar" typeInfoNamespace,"namespace" typeInfoModule,"module" typeInfoNamespaceOrModule,"namespace/module" typeInfoFromFirst,"from %s" typeInfoFromNext,"also from %s" typeInfoGeneratedProperty,"generated property" typeInfoGeneratedType,"generated type" assemblyResolutionFoundByAssemblyFoldersKey,"Found by AssemblyFolders registry key" assemblyResolutionFoundByAssemblyFoldersExKey,"Found by AssemblyFoldersEx registry key" assemblyResolutionNetFramework,".NET Framework" assemblyResolutionGAC,"Global Assembly Cache" # ----------------------------------------------------------------------------- # infos.fs errors # ----------------------------------------------------------------------------- 1089,recursiveClassHierarchy,"Recursive class hierarchy in type '%s'" 1090,InvalidRecursiveReferenceToAbstractSlot,"Invalid recursive reference to an abstract slot" 1091,eventHasNonStandardType,"The event '%s' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit %s and %s methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'." 1092,typeIsNotAccessible,"The type '%s' is not accessible from this code location" 1093,unionCasesAreNotAccessible,"The union cases or fields of the type '%s' are not accessible from this code location" 1094,valueIsNotAccessible,"The value '%s' is not accessible from this code location" 1095,unionCaseIsNotAccessible,"The union case '%s' is not accessible from this code location" 1096,fieldIsNotAccessible,"The record, struct or class field '%s' is not accessible from this code location" 1097,structOrClassFieldIsNotAccessible,"The struct or class field '%s' is not accessible from this code location" experimentalConstruct,"This construct is experimental" 1099,noInvokeMethodsFound,"No Invoke methods found for delegate type" moreThanOneInvokeMethodFound,"More than one Invoke method found for delegate type" 1101,delegatesNotAllowedToHaveCurriedSignatures,"Delegates are not allowed to have curried signatures" # ----------------------------------------------------------------------------- # tlr.fs errors # ----------------------------------------------------------------------------- 1102,tlrUnexpectedTExpr,"Unexpected Expr.TyChoose" 1103,tlrLambdaLiftingOptimizationsNotApplied,"Note: Lambda-lifting optimizations have not been applied because of the use of this local constrained generic function as a first class value. Adding type constraints may resolve this condition." # ----------------------------------------------------------------------------- # lexhelp.fs errors # ----------------------------------------------------------------------------- 1104,lexhlpIdentifiersContainingAtSymbolReserved,"Identifiers containing '@' are reserved for use in F# code generation" lexhlpIdentifierReserved,"The identifier '%s' is reserved for future use by F#" # ----------------------------------------------------------------------------- # patcompile.fs errors # ----------------------------------------------------------------------------- 1106,patcMissingVariable,"Missing variable '%s'" 1107,patcPartialActivePatternsGenerateOneResult,"Partial active patterns may only generate one result" # ----------------------------------------------------------------------------- # import.fs errors # ----------------------------------------------------------------------------- 1108,impTypeRequiredUnavailable,"The type '%s' is required here and is unavailable. You must add a reference to assembly '%s'." 1109,impReferencedTypeCouldNotBeFoundInAssembly,"A reference to the type '%s' in assembly '%s' was found, but the type could not be found in that assembly" 1110,impNotEnoughTypeParamsInScopeWhileImporting,"Internal error or badly formed metadata: not enough type parameters were in scope while importing" 1111,impReferenceToDllRequiredByAssembly,"A reference to the DLL %s is required by assembly %s. The imported type %s is located in the first assembly and could not be resolved." 1112,impImportedAssemblyUsesNotPublicType,"An imported assembly uses the type '%s' but that type is not public" # ----------------------------------------------------------------------------- # opt.fs errors # ----------------------------------------------------------------------------- 1113,optValueMarkedInlineButIncomplete,"The value '%s' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessible" 1114,optValueMarkedInlineButWasNotBoundInTheOptEnv,"The value '%s' was marked inline but was not bound in the optimization environment" 1115,optLocalValueNotFoundDuringOptimization,"Local value %s not found during optimization" 1116,optValueMarkedInlineHasUnexpectedValue,"A value marked as 'inline' has an unexpected value" 1117,optValueMarkedInlineCouldNotBeInlined,"A value marked as 'inline' could not be inlined" 1118,optFailedToInlineValue,"Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline'" 1119,optRecursiveValValue,"Recursive ValValue %s" # ----------------------------------------------------------------------------- # lexfilter.fs errors # ----------------------------------------------------------------------------- lexfltIncorrentIndentationOfIn,"The indentation of this 'in' token is incorrect with respect to the corresponding 'let'" lexfltTokenIsOffsideOfContextStartedEarlier,"Possible incorrect indentation: this token is offside of context started at position %s. Try indenting this token further or using standard formatting conventions." lexfltSeparatorTokensOfPatternMatchMisaligned,"The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation." # ----------------------------------------------------------------------------- # nameres.fs errors # ----------------------------------------------------------------------------- 1123,nrInvalidModuleExprType,"Invalid module/expression/type" 1124,nrTypeInstantiationNeededToDisambiguateTypesWithSameName,"Multiple types exist called '%s', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. '%s'." 1125,nrTypeInstantiationIsMissingAndCouldNotBeInferred,"The instantiation of the generic type '%s' is missing and can't be inferred from the arguments or return type of this member. Consider providing a type instantiation when accessing this type, e.g. '%s'." 1126,nrGlobalUsedOnlyAsFirstName,"'global' may only be used as the first name in a qualified path" 1127,nrIsNotConstructorOrLiteral,"This is not a constructor or literal, or a constructor is being used incorrectly" 1128,nrUnexpectedEmptyLongId,"Unexpected empty long identifier" 1129,nrTypeDoesNotContainSuchField,"The type '%s' does not contain a field '%s'" 1130,nrInvalidFieldLabel,"Invalid field label" 1132,nrInvalidExpression,"Invalid expression '%s'" 1133,nrNoConstructorsAvailableForType,"No constructors are available for the type '%s'" # ----------------------------------------------------------------------------- # ilwrite.fs errors # ----------------------------------------------------------------------------- 1135,ilwriteErrorCreatingPdb,"Unexpected error creating debug information file '%s'" # ----------------------------------------------------------------------------- # lex.fsl errors # ----------------------------------------------------------------------------- 1138,lexOutsideIntegerRange,"This number is outside the allowable range for this integer type" lexCharNotAllowedInOperatorNames,"'%s' is not permitted as a character in operator names and is reserved for future use" lexUnexpectedChar,"Unexpected character '%s'" 1140,lexByteArrayCannotEncode,"This byte array literal contains characters that do not encode as a single byte" 1141,lexIdentEndInMarkReserved,"Identifiers followed by '%s' are reserved for future use" 1142,lexOutsideEightBitSigned,"This number is outside the allowable range for 8-bit signed integers" 1143,lexOutsideEightBitSignedHex,"This number is outside the allowable range for hexadecimal 8-bit signed integers" 1144,lexOutsideEightBitUnsigned,"This number is outside the allowable range for 8-bit unsigned integers" 1145,lexOutsideSixteenBitSigned,"This number is outside the allowable range for 16-bit signed integers" 1146,lexOutsideSixteenBitUnsigned,"This number is outside the allowable range for 16-bit unsigned integers" 1147,lexOutsideThirtyTwoBitSigned,"This number is outside the allowable range for 32-bit signed integers" 1148,lexOutsideThirtyTwoBitUnsigned,"This number is outside the allowable range for 32-bit unsigned integers" 1149,lexOutsideSixtyFourBitSigned,"This number is outside the allowable range for 64-bit signed integers" 1150,lexOutsideSixtyFourBitUnsigned,"This number is outside the allowable range for 64-bit unsigned integers" 1151,lexOutsideNativeSigned,"This number is outside the allowable range for signed native integers" 1152,lexOutsideNativeUnsigned,"This number is outside the allowable range for unsigned native integers" 1153,lexInvalidFloat,"Invalid floating point number" 1154,lexOusideDecimal,"This number is outside the allowable range for decimal literals" 1155,lexOusideThirtyTwoBitFloat,"This number is outside the allowable range for 32-bit floats" 1156,lexInvalidNumericLiteral,"This is not a valid numeric literal. Sample formats include 4, 0x4, 0b0100, 4L, 4UL, 4u, 4s, 4us, 4y, 4uy, 4.0, 4.0f, 4I." 1157,lexInvalidByteLiteral,"This is not a valid byte literal" 1158,lexInvalidCharLiteral,"This is not a valid character literal" 1159,lexThisUnicodeOnlyInStringLiterals,"This Unicode encoding is only valid in string literals" 1160,lexTokenReserved,"This token is reserved for future use" 1161,lexTabsNotAllowed,"TABs are not allowed in F# code unless the #indent \"off\" option is used" 1162,lexInvalidLineNumber,"Invalid line number: '%s'" 1163,lexHashIfMustBeFirst,"#if directive must appear as the first non-whitespace character on a line" lexHashElseNoMatchingIf,"#else has no matching #if" lexHashEndifRequiredForElse,"#endif required for #else" 1166,lexHashElseMustBeFirst,"#else directive must appear as the first non-whitespace character on a line" lexHashEndingNoMatchingIf,"#endif has no matching #if" 1168,lexHashEndifMustBeFirst,"#endif directive must appear as the first non-whitespace character on a line" 1169,lexHashIfMustHaveIdent,"#if directive should be immediately followed by an identifier" 1170,lexWrongNestedHashEndif,"Syntax error. Wrong nested #endif, unexpected tokens before it." 1171,lexExpectedSingleLineComment,"Expected single line comment or end of line" 1172,memberOperatorDefinitionWithNoArguments,"Infix operator member '%s' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ..." 1173,memberOperatorDefinitionWithNonPairArgument,"Infix operator member '%s' has %d initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ..." 1174,memberOperatorDefinitionWithCurriedArguments,"Infix operator member '%s' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ..." 1175,tcFSharpCoreRequiresExplicit,"All record, union and struct types in FSharp.Core.dll must be explicitly labelled with 'StructuralComparison' or 'NoComparison'" 1176,tcStructuralComparisonNotSatisfied1,"The struct, record or union type '%s' has the 'StructuralComparison' attribute but the type parameter '%s' does not satisfy the 'comparison' constraint. Consider adding the 'comparison' constraint to the type parameter" 1177,tcStructuralComparisonNotSatisfied2,"The struct, record or union type '%s' has the 'StructuralComparison' attribute but the component type '%s' does not satisfy the 'comparison' constraint" 1178,tcNoComparisonNeeded1,"The struct, record or union type '%s' is not structurally comparable because the type parameter %s does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '%s' to clarify that the type is not comparable" 1178,tcNoComparisonNeeded2,"The struct, record or union type '%s' is not structurally comparable because the type '%s' does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '%s' to clarify that the type is not comparable" 1178,tcNoEqualityNeeded1,"The struct, record or union type '%s' does not support structural equality because the type parameter %s does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '%s' to clarify that the type does not support structural equality" 1178,tcNoEqualityNeeded2,"The struct, record or union type '%s' does not support structural equality because the type '%s' does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '%s' to clarify that the type does not support structural equality" 1179,tcStructuralEqualityNotSatisfied1,"The struct, record or union type '%s' has the 'StructuralEquality' attribute but the type parameter '%s' does not satisfy the 'equality' constraint. Consider adding the 'equality' constraint to the type parameter" 1180,tcStructuralEqualityNotSatisfied2,"The struct, record or union type '%s' has the 'StructuralEquality' attribute but the component type '%s' does not satisfy the 'equality' constraint" 1181,tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly,"Each argument of the primary constructor for a struct must be given a type, for example 'type S(x1:int, x2: int) = ...'. These arguments determine the fields of the struct." 1182,chkUnusedValue,"The value '%s' is unused" 1183,chkUnusedThisVariable,"The recursive object reference '%s' is unused. The presence of a recursive object reference adds runtime initialization checks to members in this and derived types. Consider removing this recursive object reference." 1184,parsGetterAtMostOneArgument,"A getter property may have at most one argument group" 1185,parsSetterAtMostTwoArguments,"A setter property may have at most two argument groups" 1186,parsInvalidProperty,"Invalid property getter or setter" 1187,parsIndexerPropertyRequiresAtLeastOneArgument,"An indexer property must be given at least one argument" 1188,tastInvalidAddressOfMutableAcrossAssemblyBoundary,"This operation accesses a mutable top-level value defined in another assembly in an unsupported way. The value cannot be accessed through its address. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...', and if necessary assigning the value back after the completion of the operation" 1189,parsNonAdjacentTypars,"Type parameters must be placed directly adjacent to the type name, e.g. \"type C<'T>\", not type \"C <'T>\"" 1190,parsNonAdjacentTyargs,"Type arguments must be placed directly adjacent to the type name, e.g. \"C<'T>\", not \"C <'T>\"" parsNonAtomicType,"The use of the type syntax 'int C' and 'C ' is not permitted here. Consider adjusting this type to be written in the form 'C'" 1191,tastUndefinedTyconItemField,"The type %s did not contain the field '%s'" 1192,tastUndefinedTyconItemUnionCase,"The type %s did not contain the union case '%s'" 1193,tastUndefinedItemRefModuleNamespace,"The module/namespace '%s' from compilation unit '%s' did not contain the module/namespace '%s'" 1194,tastUndefinedItemRefVal,"The module/namespace '%s' from compilation unit '%s' did not contain the val '%s'" 1195,tastUndefinedItemRefModuleNamespaceType,"The module/namespace '%s' from compilation unit '%s' did not contain the namespace, module or type '%s'" 1196,tcInvalidUseNullAsTrueValue,"The 'UseNullAsTrueValue' attribute flag may only be used with union types that have one nullary case and at least one non-nullary case" 1197,tcParameterInferredByref,"The parameter '%s' was inferred to have byref type. Parameters of byref type must be given an explicit type annotation, e.g. 'x1: byref'. When used, a byref parameter is implicitly dereferenced." 1198,tcNonUniformMemberUse,"The generic member '%s' has been used at a non-uniform instantiation prior to this program point. Consider reordering the members so this member occurs first. Alternatively, specify the full type of the member explicitly, including argument types, return type and any additional generic parameters and constraints." 1199,tcNamedArgumentsCannotBeUsedInUnionCaseConstructions,"The use of named arguments in union case expressions is reserved for future use. Arguments of the form 'a=b' should be parenthesized." 1200,tcAttribArgsDiffer,"The attribute '%s' appears in both the implementation and the signature, but the attribute arguments differ. Only the attribute from the signature will be included in the compiled code." 1201,tcCannotCallAbstractBaseMember,"Cannot call an abstract base member: '%s'" 1202,typrelCannotResolveAmbiguityInUnmanaged,"Could not resolve the ambiguity in the use of a generic construct with an 'unmanaged' constraint at or near this position" #1203 - used for error in FSharp.Core CompilerMessage message #1204 - used for error in FSharp.Core CompilerMessage message mlCompatMessage,"This construct is for ML compatibility. %s. You can disable this warning by using '--mlcompatibility' or '--nowarn:62'." #1205,chkDuplicateInherittedVirtualMethod,"Duplicate virtual methods. There are multiple virtual methods named '%s' with the same signature in the parent (inherited) type. This may be a result of instantiating the parent type." 1206,ilFieldDoesNotHaveValidOffsetForStructureLayout,"The type '%s' has been marked as having an Explicit layout, but the field '%s' has not been marked with the 'FieldOffset' attribute" 1207,tcInterfacesShouldUseInheritNotInterface,"Interfaces inherited by other interfaces should be declared using 'inherit ...' instead of 'interface ...'" 1208,parsInvalidPrefixOperator,"Invalid prefix operator" 1208,parsInvalidPrefixOperatorDefinition,"Invalid operator definition. Prefix operator definitions must use a valid prefix operator name." buildCompilingExtensionIsForML,"The file extensions '.ml' and '.mli' are for ML compatibility" lexIndentOffForML,"Consider using a file with extension '.ml' or '.mli' instead" 1209,activePatternIdentIsNotFunctionTyped,"Active pattern '%s' is not a function" 1210,activePatternChoiceHasFreeTypars,"Active pattern '%s' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x'" 1211,ilFieldHasOffsetForSequentialLayout,"The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit)" 1212,tcOptionalArgsMustComeAfterNonOptionalArgs,"Optional arguments must come at the end of the argument list, after any non-optional arguments" 1213,tcConditionalAttributeUsage,"Attribute 'System.Diagnostics.ConditionalAttribute' is only valid on methods or attribute classes" #1214,monoRegistryBugWorkaround,"Could not determine highest installed .NET framework version from Registry keys, using version 2.0" 1215,tcMemberOperatorDefinitionInExtrinsic,"Extension members cannot provide operator overloads. Consider defining the operator as part of the type definition instead." 1216,ilwriteMDBFileNameCannotBeChangedWarning,"The name of the MDB file must be .mdb. The --pdb option will be ignored." 1217,ilwriteMDBMemberMissing,"MDB generation failed. Could not find compatible member %s" 1218,ilwriteErrorCreatingMdb,"Cannot generate MDB debug information. Failed to load the 'MonoSymbolWriter' type from the 'Mono.CompilerServices.SymbolWriter.dll' assembly." 1219,tcUnionCaseNameConflictsWithGeneratedType,"The union case named '%s' conflicts with the generated type '%s'" 1220,chkNoReflectedDefinitionOnStructMember,"ReflectedDefinitionAttribute may not be applied to an instance member on a struct type, because the instance member takes an implicit 'this' byref parameter" 1221,tcDllImportNotAllowed,"DLLImport bindings must be static members in a class or function definitions in a module" 1222,buildExplicitCoreLibRequiresNoFramework,"When mscorlib.dll or FSharp.Core.dll is explicitly referenced the %s option must also be passed" 1223,buildExpectedSigdataFile,"FSharp.Core.sigdata not found alongside FSharp.Core" 1224,buildDidNotExpectOptDataResource,"Did not expect to find optdata resource in FSharp.Core.dll" 1225,buildExpectedFileAlongSideFSharpCore,"File '%s' not found alongside FSharp.Core" 1226,buildDidNotExpectSigdataResource,"Did not expect to find sigdata resource in FSharp.Core.dll" 1227,buildUnexpectedFileNameCharacter,"Filename '%s' contains invalid character '%s'" 1228,tcInvalidUseBangBinding,"'use!' bindings must be of the form 'use! = '" 1230,crefNoInnerGenericsInQuotations,"Inner generic functions are not permitted in quoted expressions. Consider adding some type constraints until this function is no longer generic." 1231,tcEnumTypeCannotBeEnumerated,"The type '%s' is not a valid enumerator type , i.e. does not have a 'MoveNext()' method returning a bool, and a 'Current' property" 1232,parsEofInTripleQuoteString,"End of file in triple-quote string begun at or before here" 1233,parsEofInTripleQuoteStringInComment,"End of file in triple-quote string embedded in comment begun at or before here" 1240,tcTypeTestLosesMeasures,"This type test or downcast will ignore the unit-of-measure '%s'" 1241,parsMissingTypeArgs,"Expected type argument or static argument" 1242,parsMissingGreaterThan,"Unmatched '<'. Expected closing '>'" 1243,parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString,"Unexpected quotation operator '<@' in type definition. If you intend to pass a verbatim string as a static argument to a type provider, put a space between the '<' and '@' characters." 1244,parsErrorParsingAsOperatorName,"Attempted to parse this as an operator name, but failed" # Fsc.exe resource strings fscTooManyErrors,"Exiting - too many errors" 2001,docfileNoXmlSuffix,"The documentation file has no .xml suffix" 2002,fscNoImplementationFiles,"No implementation files specified" 2003,fscBadAssemblyVersion,"An AssemblyVersionAttribute specified version '%s', but this value is invalid and has been ignored" 2004,fscTwoResourceManifests,"Conflicting options specified: 'win32manifest' and 'win32res'. Only one of these can be used." 2005,fscQuotationLiteralsStaticLinking,"The code in assembly '%s' makes uses of quotation literals. Static linking may not include components that make use of quotation literals." 2006,fscQuotationLiteralsStaticLinking0,"Code in this assembly makes uses of quotation literals. Static linking may not include components that make use of quotation literals." 2007,fscStaticLinkingNoEXE,"Static linking may not include a .EXE" 2008,fscStaticLinkingNoMixedDLL,"Static linking may not include a mixed managed/unmanaged DLL" 2009,fscIgnoringMixedWhenLinking,"Ignoring mixed managed/unmanaged assembly '%s' during static linking" 2011,fscAssumeStaticLinkContainsNoDependencies,"Assembly '%s' was referenced transitively and the assembly could not be resolved automatically. Static linking will assume this DLL has no dependencies on the F# library or other statically linked DLLs. Consider adding an explicit reference to this DLL." 2012,fscAssemblyNotFoundInDependencySet,"Assembly '%s' not found in dependency set of target binary. Statically linked roots should be specified using an assembly name, without a DLL or EXE extension. If this assembly was referenced explicitly then it is possible the assembly was not actually required by the generated binary, in which case it should not be statically linked." 2013,fscKeyFileCouldNotBeOpened,"The key file '%s' could not be opened" 2014,fscProblemWritingBinary,"A problem occurred writing the binary '%s': %s" 2015,fscAssemblyVersionAttributeIgnored,"The 'AssemblyVersionAttribute' has been ignored because a version was given using a command line option" 2016,fscAssemblyCultureAttributeError,"Error emitting 'System.Reflection.AssemblyCultureAttribute' attribute -- 'Executables cannot be satellite assemblies, Culture should always be empty'" 2017,fscDelaySignWarning,"Option '--delaysign' overrides attribute 'System.Reflection.AssemblyDelaySignAttribute' given in a source file or added module" 2018,fscKeyFileWarning,"Option '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module" 2019,fscKeyNameWarning,"Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module" 2020,fscReferenceOnCommandLine,"The assembly '%s' is listed on the command line. Assemblies should be referenced using a command line flag such as '-r'." 2021,fscRemotingError,"The resident compilation service was not used because a problem occured in communicating with the server." 2022,pathIsInvalid,"Problem with filename '%s': Illegal characters in path." 2023,fscResxSourceFileDeprecated,"Passing a .resx file (%s) as a source file to the compiler is deprecated. Use resgen.exe to transform the .resx file into a .resources file to pass as a --resource option. If you are using MSBuild, this can be done via an item in the .fsproj project file." # ----------------------------------------------------------------------------- # Extension typing errors # ----------------------------------------------------------------------------- 3000,etIllegalCharactersInNamespaceName,"Character '%s' is not allowed in provided namespace name '%s'" 3001,etNullOrEmptyMemberName,"The provided type '%s' returned a member with a null or empty member name" 3002,etNullMember,"The provided type '%s' returned a null member" 3003,etNullMemberDeclaringType,"The provided type '%s' member info '%s' has null declaring type" 3004,etNullMemberDeclaringTypeDifferentFromProvidedType,"The provided type '%s' has member '%s' which has declaring type '%s'. Expected declaring type to be the same as provided type." 3005,etHostingAssemblyFoundWithoutHosts,"Referenced assembly '%s' has assembly level attribute '%s' but no public type provider classes were found" 3006,etEmptyNamespaceOfTypeNotAllowed,"Type '%s' from type provider '%s' has an empty namespace. Use 'null' for the global namespace." 3007,etEmptyNamespaceNotAllowed,"Empty namespace found from the type provider '%s'. Use 'null' for the global namespace." 3011,etMustNotBeGeneric,"Provided type '%s' has 'IsGenericType' as true, but generic types are not supported." 3013,etMustNotBeAnArray,"Provided type '%s' has 'IsArray' as true, but array types are not supported." 3014,etMethodHasRequirements,"Invalid member '%s' on provided type '%s'. Provided type members must be public, and not be generic, virtual, or abstract." 3015,etUnsupportedMemberKind,"Invalid member '%s' on provided type '%s'. Only properties, methods and constructors are allowed" 3016,etPropertyCanReadButHasNoGetter,"Property '%s' on provided type '%s' has CanRead=true but there was no value from GetGetMethod()" 3017,etPropertyHasGetterButNoCanRead,"Property '%s' on provided type '%s' has CanRead=false but GetGetMethod() returned a method" 3018,etPropertyCanWriteButHasNoSetter,"Property '%s' on provided type '%s' has CanWrite=true but there was no value from GetSetMethod()" 3019,etPropertyHasSetterButNoCanWrite,"Property '%s' on provided type '%s' has CanWrite=false but GetSetMethod() returned a method" 3020,etOneOrMoreErrorsSeenDuringExtensionTypeSetting,"One or more errors seen during provided type setup" 3021,etUnexpectedExceptionFromProvidedTypeMember,"Unexpected exception from provided type '%s' member '%s': %s" 3022,etUnsupportedConstantType,"Unsupported constant type '%s'" 3025,etUnsupportedProvidedExpression,"Unsupported expression '%s' from type provider. If you are the author of this type provider, consider adjusting it to provide a different provided expression." 3028,etProvidedTypeHasUnexpectedName,"Expected provided type named '%s' but provided type has 'Name' with value '%s'" 3029,etEventNoAdd,"Event '%s' on provided type '%s' has no value from GetAddMethod()" 3030,etEventNoRemove,"Event '%s' on provided type '%s' has no value from GetRemoveMethod()" 3031,etProviderHasWrongDesignerAssembly,"Assembly attribute '%s' refers to a designer assembly '%s' which cannot be loaded or doesn't exist. %s" 3032,etProviderDoesNotHaveValidConstructor,"The type provider does not have a valid constructor. A constructor taking either no arguments or one argument of type 'TypeProviderConfig' was expected." 3033,etProviderError,"The type provider '%s' reported an error: %s" 3034,etIncorrectParameterExpression,"The type provider '%s' used an invalid parameter in the ParameterExpression: %s" 3035,etIncorrectProvidedMethod,"The type provider '%s' provided a method with a name '%s' and metadata token '%d', which is not reported among its methods of its declaring type '%s'" 3036,etIncorrectProvidedConstructor,"The type provider '%s' provided a constructor which is not reported among the constructors of its declaring type '%s'" 3039,etDirectReferenceToGeneratedTypeNotAllowed,"A direct reference to the generated type '%s' is not permitted. Instead, use a type definition, e.g. 'type TypeAlias = '. This indicates that a type provider adds generated types to your assembly." 3041,etProvidedTypeHasUnexpectedPath,"Expected provided type with path '%s' but provided type has path '%s'" 3042,etUnexpectedNullFromProvidedTypeMember,"Unexpected 'null' return value from provided type '%s' member '%s'" 3043,etUnexpectedExceptionFromProvidedMemberMember,"Unexpected exception from member '%s' of provided type '%s' member '%s': %s" 3044,etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters,"Nested provided types do not take static arguments or generic parameters" 3045,etInvalidStaticArgument,"Invalid static argument to provided type. Expected an argument of kind '%s'." 3046,etErrorApplyingStaticArgumentsToType,"An error occured applying the static arguments to a provided type" 3047,etUnknownStaticArgumentKind,"Unknown static argument kind '%s' when resolving a reference to a provided type '%s'" invalidNamespaceForProvidedType,"invalid namespace for provided type" invalidFullNameForProvidedType,"invalid full name for provided type" #3050,etGenerateAttributeRequiresInternal,"The 'Generate' attribute must be used with a type definition with 'internal' visibility" 3051,etProviderReturnedNull,"The type provider returned 'null', which is not a valid return value from '%s'" 3053,etTypeProviderConstructorException,"The type provider constructor has thrown an exception: %s" 3056,etNullProvidedExpression,"Type provider '%s' returned null from GetInvokerExpression." 3057,etProvidedAppliedTypeHadWrongName,"The type provider '%s' returned an invalid type from 'ApplyStaticArguments'. A type with name '%s' was expected, but a type with name '%s' was returned." 3060,tcTypeTestLossy,"This type test or downcast will erase the provided type '%s' to the type '%s'" 3061,tcTypeCastErased,"This downcast will erase the provided type '%s' to the type '%s'." 3062,tcTypeTestErased,"This type test with a provided type '%s' is not allowed because this provided type will be erased to '%s' at runtime." 3063,tcCannotInheritFromErasedType,"Cannot inherit from erased provided type" 3065,etInvalidTypeProviderAssemblyName,"Assembly '%s' hase TypeProviderAssembly attribute with invalid value '%s'. The value should be a valid assembly name" 3066,tcInvalidMemberNameCtor,"Invalid member name. Members may not have name '.ctor' or '.cctor'" 3068,tcInferredGenericTypeGivesRiseToInconsistency,"The function or member '%s' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is '%s'." 3069,tcInvalidTypeArgumentCount,"The number of type arguments did not match: '%d' given, '%d' expected. This may be related to a previously reported error." 3070,tcCannotOverrideSealedMethod,"Cannot override inherited member '%s' because it is sealed" 3071,etProviderErrorWithContext,"The type provider '%s' reported an error in the context of provided type '%s', member '%s'. The error: %s" 3072,etProvidedTypeWithNameException,"An exception occurred when accessing the '%s' of a provided type: %s" 3073,etProvidedTypeWithNullOrEmptyName,"The '%s' of a provided type was null or empty." 3075,etIllegalCharactersInTypeName,"Character '%s' is not allowed in provided type name '%s'" 3077,tcJoinMustUseSimplePattern,"In queries, '%s' must use a simple pattern" 3078,tcMissingCustomOperation,"A custom query operation for '%s' is required but not specified" 3080,etBadUnnamedStaticArgs,"Named static arguments must come after all unnamed static arguments" 3081,etStaticParameterRequiresAValue,"The static parameter '%s' of the provided type '%s' requires a value. Static parameters to type providers may be optionally specified using named arguments, e.g. '%s<%s=...>'." 3082,etNoStaticParameterWithName,"No static parameter exists with name '%s'" 3083,etStaticParameterAlreadyHasValue,"The static parameter '%s' has already been given a value" 3084,etMultipleStaticParameterWithName,"Multiple static parameters exist with name '%s'" 3085,tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindings,"A custom operation may not be used in conjunction with a non-value or recursive 'let' binding in another part of this computation expression" 3086,tcCustomOperationMayNotBeUsedHere,"A custom operation may not be used in conjunction with 'use', 'try/with', 'try/finally', 'if/then/else' or 'match' operators within this computation expression" 3087,tcCustomOperationMayNotBeOverloaded,"The custom operation '%s' refers to a method which is overloaded. The implementations of custom operations may not be overloaded." 3088,tcTryFinallyMayNotBeUsedWithCustomOperators,"A try/finally expression may not be used within a computation expression with uses of custom operators. Consider using a sequence expression instead." 3089,tcTryWithMayNotBeUsedWithCustomOperators,"A try/with expression may not be used within a within a computation expression with uses of custom operators. Consider using a sequence expression instead." 3090,tcIfThenElseMayNotBeUsedWithCustomOperators,"An if/then/else expression may not be used within a computation expression with uses of custom operators. Consider using either an if/then expression, or use a sequence expression instead." 3091,ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen,"Invalid argument to 'methodhandleof' during codegen" 3092,etProvidedTypeReferenceMissingArgument,"A reference to a provided type was missing a value for the static parameter '%s'. You may need to recompile one or more referenced assemblies." 3093,etProvidedTypeReferenceInvalidText,"A reference to a provided type had an invalid value '%s' for a static parameter. You may need to recompile one or more referenced assemblies." 3095,tcCustomOperationNotUsedCorrectly,"'%s' is not used correctly. This is a custom operation in this query or computation expression." 3095,tcCustomOperationNotUsedCorrectly2,"'%s' is not used correctly. Usage: %s. This is a custom operation in this query or computation expression." customOperationTextLikeJoin,"%s var in collection %s (outerKey = innerKey). Note that parentheses are required after '%s'" customOperationTextLikeGroupJoin,"%s var in collection %s (outerKey = innerKey) into group. Note that parentheses are required after '%s'" customOperationTextLikeZip,"%s collection into var" 3096,tcBinaryOperatorRequiresVariable,"'%s' must be followed by a variable name. Usage: %s." 3097,tcOperatorIncorrectSyntax,"Incorrect syntax for '%s'. Usage: %s." 3098,tcBinaryOperatorRequiresBody,"'%s' must come after a 'for' selection clause and be followed by the rest of the query. Syntax: ... %s ..." 3099,tcCustomOperationHasIncorrectArgCount,"'%s' is used with an incorrect number of arguments. This is a custom operation in this query or computation expression. Expected %d argument(s), but given %d." 3100,parsExpectedExpressionAfterToken,"Expected an expression after this point" 3101,parsExpectedTypeAfterToken,"Expected a type after this point" 3102,parsUnmatchedLBrackLess,"Unmatched '[<'. Expected closing '>]'" 3103,parsUnexpectedEndOfFileMatch,"Unexpected end of input in 'match' expression. Expected 'match with | -> | -> ...'." 3104,parsUnexpectedEndOfFileTry,"Unexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '." 3105,parsUnexpectedEndOfFileWhile,"Unexpected end of input in 'while' expression. Expected 'while do '." 3106,parsUnexpectedEndOfFileFor,"Unexpected end of input in 'for' expression. Expected 'for in do '." 3107,parsUnexpectedEndOfFileWith,"Unexpected end of input in 'match' or 'try' expression" 3108,parsUnexpectedEndOfFileThen,"Unexpected end of input in 'then' branch of conditional expression. Expected 'if then ' or 'if then else '." 3109,parsUnexpectedEndOfFileElse,"Unexpected end of input in 'else' branch of conditional expression. Expected 'if then ' or 'if then else '." 3110,parsUnexpectedEndOfFileFunBody,"Unexpected end of input in body of lambda expression. Expected 'fun ... -> '." 3111,parsUnexpectedEndOfFileTypeArgs,"Unexpected end of input in type arguments" 3112,parsUnexpectedEndOfFileTypeSignature,"Unexpected end of input in type signature" 3113,parsUnexpectedEndOfFileTypeDefinition,"Unexpected end of input in type definition" 3114,parsUnexpectedEndOfFileObjectMembers,"Unexpected end of input in object members" 3115,parsUnexpectedEndOfFileDefinition,"Unexpected end of input in value, function or member definition" 3116,parsUnexpectedEndOfFileExpression,"Unexpected end of input in expression" 3117,parsExpectedNameAfterToken,"Unexpected end of type. Expected a name after this point." 3118,parsUnmatchedLet,"Incomplete value or function definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let' keyword." 3119,parsUnmatchedLetBang,"Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let!' keyword." 3120,parsUnmatchedUseBang,"Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use!' keyword." 3121,parsUnmatchedUse,"Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use' keyword." 3122,parsWhileDoExpected,"Missing 'do' in 'while' expression. Expected 'while do '." 3123,parsForDoExpected,"Missing 'do' in 'for' expression. Expected 'for in do '." 3125,tcInvalidRelationInJoin,"Invalid join relation in '%s'. Expected 'expr expr', where is =, =?, ?= or ?=?." typeInfoCallsWord,"Calls" 3126,impInvalidNumberOfGenericArguments,"Invalid number of generic arguments to type '%s' in provided type. Expected '%d' arguments, given '%d'." 3127,impInvalidMeasureArgument1,"Invalid value '%s' for unit-of-measure parameter '%s'" 3127,impInvalidMeasureArgument2,"Invalid value unit-of-measure parameter '%s'" 3128,etPropertyNeedsCanWriteOrCanRead,"Property '%s' on provided type '%s' is neither readable nor writable as it has CanRead=false and CanWrite=false" 3129,tcIntoNeedsRestOfQuery,"A use of 'into' must be followed by the remainder of the computation" 3130,tcOperatorDoesntAcceptInto,"The operator '%s' does not accept the use of 'into'" 3131,tcCustomOperationInvalid,"The definition of the custom operator '%s' does not use a valid combination of attribute flags" 3132,tcThisTypeMayNotHaveACLIMutableAttribute,"This type definition may not have the 'CLIMutable' attribute. Only record types may have this attribute." 3133,tcAutoPropertyRequiresImplicitConstructionSequence,"'member val' definitions are only permitted in types with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'." 3134,parsMutableOnAutoPropertyShouldBeGetSet,"Property definitions may not be declared mutable. To indicate that this property can be set, use 'member val PropertyName = expr with get,set'." 3135,parsMutableOnAutoPropertyShouldBeGetSetNotJustSet,"To indicate that this property can be set, use 'member val PropertyName = expr with get,set'." 3136,chkNoByrefsOfByrefs,"Type '%s' is illegal because in byref, T cannot contain byref types." 3137,etTypeProviderNotApproved,"Type provider assembly '%s' is not trusted and will not be loaded for security reasons. This may cause subsequent build errors. See the 'F# Tools' section of Visual Studio options for more information." 3138,tastopsMaxArrayFour,"F# supports a maximum array rank of 4" 3139,tcNoIntegerForLoopInQuery,"In queries, use the form 'for x in n .. m do ...' for ranging over integers" 3140,tcNoWhileInQuery,"'while' expressions may not be used in queries" 3141,tcNoTryFinallyInQuery,"'try/finally' expressions may not be used in queries" 3142,tcUseMayNotBeUsedInQueries,"'use' expressions may not be used in queries" 3143,tcBindMayNotBeUsedInQueries,"'let!', 'use!' and 'do!' expressions may not be used in queries" 3144,tcReturnMayNotBeUsedInQueries,"'return' and 'return!' may not be used in queries" 3145,tcUnrecognizedQueryOperator,"This is not a known query operator. Query operators are identifiers such as 'select', 'where', 'sortBy', 'thenBy', 'groupBy', 'groupValBy', 'join', 'groupJoin', 'sumBy' and 'averageBy', defined using corresponding methods on the 'QueryBuilder' type." 3146,tcTryWithMayNotBeUsedInQueries,"'try/with' expressions may not be used in queries" 3147,tcNonSimpleLetBindingInQuery,"This 'let' definition may not be used in a query. Only simple value definitions may be used in queries." 3148,etTooManyStaticParameters,"Too many static parameters. Expected at most %d parameters, but got %d unnamed and %d named parameters." 3149,infosInvalidProvidedLiteralValue,"Invalid provided literal value '%s'" 3150,invalidPlatformTarget,"The 'anycpu32bitpreferred' platform can only be used with EXE targets. You must use 'anycpu' instead." 3151,tcThisValueMayNotBeInlined,"This member, function or value declaration may not be declared 'inline'" 3152,etErasedTypeUsedInGeneration,"The provider '%s' returned a non-generated type '%s' in the context of a set of generated types. Consider adjusting the type provider to only return generated types." 3153,tcUnrecognizedQueryBinaryOperator,"Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)'" 3154,invalidPlatformTargetForOldFramework,"The 'anycpu32bitpreferred' platform flag may only be used with .NET Framework versions 4.5 and greater." 3155,crefNoSetOfHole,"A quotation may not involve an assignment to or taking the address of a captured local variable" nicePrintOtherOverloads1,"+ 1 overload" nicePrintOtherOverloadsN,"+ %d overloads" erasedTo,"Erased to" 3156,parsUnfinishedExpression,"Unexpected token '%s' or incomplete expression" 3157,crefQuotationsCantContainByrefTypes,"Quotations cannot contain byref types" 3158,parsAttributeOnIncompleteCode,"Cannot find code target for this attribute, possibly because the code after the attribute is incomplete." 3159,parsTypeNameCannotBeEmpty,"Type name cannot be empty." 3160,buildProblemReadingAssembly,"Problem reading assembly '%s': %s" 3161,tcTPFieldMustBeLiteral,"Invalid provided field. Provided fields of erased provided types must be literals." loadingDescription,"(loading description...)" descriptionUnavailable,"(description unavailable...)" 3162,chkTyparMultipleClassConstraints,"A type variable has been constrained by multiple different class types. A type variable may only have one class constraint." 3163,tcMatchMayNotBeUsedWithQuery,"'match' expressions may not be used in queries" 3164,memberOperatorDefinitionWithNonTripleArgument,"Infix operator member '%s' has %d initial argument(s). Expected a tuple of 3 arguments" 3165,cannotResolveNullableOperators,"The operator '%s' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'." 3167,tcOperatorRequiresIn,"'%s' must be followed by 'in'. Usage: %s." 3168,parsIllegalMemberVarInObjectImplementation,"Neither 'member val' nor 'override val' definitions are permitted in object expressions." 3169,tcEmptyCopyAndUpdateRecordInvalid,"Copy-and-update record expressions must include at least one field." 3170,parsUnderscoreInvalidFieldName,"'_' cannot be used as field name" 3171,tcGeneratedTypesShouldBeInternalOrPrivate,"The provided types generated by this use of a type provider may not be used from other F# assemblies and should be marked internal or private. Consider using 'type internal TypeName = ...' or 'type private TypeName = ...'." 3172,chkGetterAndSetterHaveSamePropertyType,"A property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'." 3173,tcRuntimeSuppliedMethodCannotBeUsedInUserCode,"Array method '%s' is supplied by the runtime and cannot be directly used in code. For operations with array elements consider using family of GetArray/SetArray functions from LanguagePrimitives.IntrinsicFunctions module." fsharp-3.0.34/src/fsharp/test.pub0000775000175000017500000000024012260314606015630 0ustar chrischris$€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiîfsharp-3.0.34/src/fsharp/policy.2.3.FSharp.Core/0000775000175000017500000000000012260314606020013 5ustar chrischrisfsharp-3.0.34/src/fsharp/policy.2.3.FSharp.Core/policy.2.3.FSharp.Core.dll.config0000664000175000017500000000164512260314606025633 0ustar chrischris fsharp-3.0.34/src/fsharp/policy.2.3.FSharp.Core/Makefile.in0000664000175000017500000000151012260314606022055 0ustar chrischrisNAME=policy.2.3.FSharp.Core ASSEMBLY = $(NAME).dll DELAY_SIGN=1 srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make include $(topdir)/src/fsharp/targets.make #override the method to build the assembly $(objdir)$(TARGET_2_0)/policy.2.3.FSharp.Core.dll: policy.2.3.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.2.3.FSharp.Core.dll.config $(@D) al /link:policy.2.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0) $(objdir)$(TARGET_4_0)/policy.2.3.FSharp.Core.dll: policy.2.3.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.2.3.FSharp.Core.dll.config $(@D) al /link:policy.2.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0) do-final: do-2-0 do-4-0 clean: clean-2-0 clean-4-0 install: install-lib-2 install-lib-4 fsharp-3.0.34/src/fsharp/FSStrings.resx0000775000175000017500000014047112260314606016741 0ustar chrischris text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 . See also {0}. The tuples have differing lengths of {0} and {1} The resulting type would be infinite when unifying '{0}' and '{1}' A type parameter is missing a constraint '{0}' The unit of measure '{0}' does not match the unit of measure '{1}' The type '{0}' does not match the type '{1}' The type '{0}' is not compatible with the type '{1}'{2} {0} {0} This expression was expected to have type\n {1} \nbut here has type\n {0} {2} Type mismatch. Expecting a\n {0} \nbut given a\n {1} {2}\n Type constraint mismatch when applying the default type '{0}' for a type inference variable. Consider adding further type constraints Type constraint mismatch. The type \n {0} \nis not compatible with type\n {1} {2}\n Uppercase variable identifiers should not generally be used in patterns, and may indicate a misspelt pattern name. Discriminated union cases and exception labels must be uppercase identifiers Possible overload: '{0}'. {1}. \n\nPossible best overload: '{0}'. This function takes too many arguments, or is used in a context where a function is not expected Member constraints with the name '{0}' are given special status by the F# compiler as certain .NET types are implicitly augmented with this member. This may result in runtime failures if you attempt to invoke the member constraint from your own code. A definition to be compiled as a .NET event does not have the expected form. Only property members can be compiled as .NET events. Implicit object constructors for structs must take at least one argument The type implements the interface '{0}' but this is not revealed by the signature. You should list the interface in the signature, as the interface will be discoverable via dynamic type casts and/or reflection. This value is not a function and cannot be applied. Did you forget to terminate a declaration? This value is not a function and cannot be applied The type '{0}' expects {1} type argument(s) but is given {2} Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved. Duplicate definition of {0} '{1}' The {0} '{1}' can not be defined because the name '{2}' clashes with the {3} '{4}' in this type or module Two members called '{0}' have the same signature Duplicate definition of {0} '{1}' A construct with this name was found in FSharp.PowerPack.dll, which contains some modules and types that were implicitly referenced in some previous versions of F#. You may need to add an explicit reference to this DLL in order to compile this code. This field is not mutable The fields '{0}' and '{1}' are from different types '{0}' is bound twice in this pattern A use of the function '{0}' does not match a type inferred elsewhere. The inferred type of the function is\n {1}. \nThe type of the function required at this point of use is\n {2} {3}\nThis error may be due to limitations associated with generic recursion within a 'let rec' collection or within a group of classes. Consider giving a full type signature for the targets of recursive calls including type annotations for both argument and return types. Invalid runtime coercion or type test from type {0} to {1}\n{2} This runtime coercion or type test from type\n {0} \n to \n {1} \ninvolves an indeterminate type based on information prior to this program point. Runtime type tests are not allowed on some types. Further type annotations are needed. The static coercion from type\n {0} \nto \n {1} \n involves an indeterminate type based on information prior to this program point. Static coercions are not allowed on some types. Further type annotations are needed. A coercion from the value type \n {0} \nto the type \n {1} \nwill involve boxing. Consider using 'box' instead This type is 'abstract' since some abstract members have not been given an implementation. If this is intentional then add the '[<AbstractClass>]' attribute to your type. This construct causes code to be less generic than indicated by its type annotations. The type variable implied by the use of a '#', '_' or other type annotation at or near '{0}' has been constrained to be type '{1}'. This construct causes code to be less generic than indicated by the type annotations. The unit-of-measure variable '{0} has been constrained to be measure '{1}'. This construct causes code to be less generic than indicated by the type annotations. The type variable '{0} has been constrained to be type '{1}'. identifier integer literal floating point literal decimal literal character literal keyword 'base' symbol '(*)' symbol '$' infix operator infix operator symbol ':>' symbol '::' symbol '{0} infix operator infix operator infix operator prefix operator symbol ':?>' infix operator infix operator symbol '&' symbol '&&' symbol '||' symbol '<' symbol '>' symbol '?' symbol '??' symbol ':?' integer.. symbol '..' quote symbol symbol '*' type application symbol ':' symbol ':=' symbol '<-' symbol '=' symbol '>|]' symbol '-' prefix operator operator name symbol ',' symbol '.' symbol '|' symbol # symbol '_' symbol ';' symbol ';;' symbol '(' symbol ')' symbol 'splice' start of quotation symbol '[' symbol '[|' symbol '[<' symbol '{' symbol '{<' symbol '|]' symbol '>}' symbol '>]' end of quotation symbol ']' symbol '}' keyword 'public' keyword 'private' keyword 'internal' keyword 'constraint' keyword 'instance' keyword 'delegate' keyword 'inherit' keyword 'constructor' keyword 'default' keyword 'override' keyword 'abstract' keyword 'class' keyword 'member' keyword 'static' keyword 'namespace' start of structured construct incomplete structured construct at or before this point Incomplete structured construct at or before this point keyword 'then' keyword 'else' keyword 'let' or 'use' binder keyword keyword 'do' keyword 'const' keyword 'with' keyword 'function' keyword 'fun' end of input internal dummy token keyword 'do!' yield yield! keyword 'interface' keyword 'elif' symbol '->' keyword 'sig' keyword 'struct' keyword 'upcast' keyword 'downcast' keyword 'null' reserved keyword keyword 'module' keyword 'and' keyword 'as' keyword 'assert' keyword 'asr' keyword 'downto' keyword 'exception' keyword 'false' keyword 'for' keyword 'fun' keyword 'function' keyword 'finally' keyword 'lazy' keyword 'match' keyword 'mutable' keyword 'new' keyword 'of' keyword 'open' keyword 'or' keyword 'void' keyword 'extern' keyword 'interface' keyword 'rec' keyword 'to' keyword 'true' keyword 'try' keyword 'type' keyword 'val' keyword 'inline' keyword 'when' keyword 'while' keyword 'with' keyword 'if' keyword 'do' keyword 'global' keyword 'done' keyword 'in' symbol '(' symbol'[' keyword 'begin' keyword 'end' directive inactive code lex failure whitespace comment line comment string text compiler generated literal byte array literal string literal end of input Unexpected end of input Unexpected {0} in interaction in directive in field declaration in discriminated union case declaration in binding in binding in member definition in definitions in member signature in value signature in type signature in lambda expression in union case in extern declaration in object expression in if/then/else expression in open declaration in module or namespace signature in pattern matching in begin/end expression in record expression in type definition in exception definition in type name in attribute list in quotation literal in type constraint in implementation file in definition in signature file in pattern in expression in type in type arguments keyword symbol (due to indentation-aware syntax) . Expected {0} or other token. . Expected {0}, {1} or other token. . Expected {0}, {1}, {2} or other token. The type '{0}' cannot be used as the source of a type test or runtime coercion The type '{0}' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion. The type '{0}' does not have any proper subtypes and need not be used as the target of a static coercion This upcast is unnecessary - the types are identical This type test or downcast will always hold The member '{0}' does not have the correct type to override any given virtual method The member '{0}' does not have the correct type to override the corresponding abstract method. The required signature is '{0}'. This constructor is applied to {0} argument(s) but expects {1} The two sides of this 'or' pattern bind different sets of variables Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \n{3}. Module '{0}' requires a {1} '{2}' The use of native pointers may result in unverifiable .NET IL code {0} Thread static and context static 'let' bindings are deprecated. Instead use a declaration of the form 'static val mutable <ident> : <type>' in a class. Add the 'DefaultValue' attribute to this declaration to indicate that the value is initialized to the default value on each new thread. This expression is a function value, i.e. is missing arguments. Its type is {0}. This expression should have type 'unit', but has type '{0}'. Use 'ignore' to discard the result of the expression, or 'let' to bind the result to a name. This expression should have type 'unit', but has type '{0}'. If assigning to a property use the syntax 'obj.Prop <- expr'. This recursive use will be checked for initialization-soundness at runtime. This warning is usually harmless, and may be suppressed by using '#nowarn "21"' or '--nowarn:21'. The value '{0}' will be evaluated as part of its own definition This value will be eventually evaluated as part of its own definition. You may need to make the value lazy or a function. Value '{0}'{1}. will evaluate '{0}' Bindings may be executed out-of-order because of this forward reference. This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. Recursive references to the object being defined will be checked for initialization soundness at runtime through the use of a delayed reference. Consider placing self-references in members or within a trailing expression of the form '<ctor-expr> then <expr>'. Recursive references to the object being defined will be checked for initialization soundness at runtime through the use of a delayed reference. Consider placing self-references within 'do' statements after the last 'let' binding in the construction sequence. The containing type can use 'null' as a representation value for its nullary union case. Invoking an abstract or virtual member or an interface implementation on a null value will lead to an exception. If necessary add a dummy data value to the nullary constructor to avoid 'null' being used as a representation for this type. The containing type can use 'null' as a representation value for its nullary union case. This member will be compiled as a static member. The member '{0}' doesn't correspond to a unique abstract slot based on name and argument count alone . Multiple implemented interfaces have a member with this name and argument count . Consider implementing interfaces '{0}' and '{1}' explicitly. . Additional type annotations may be required to indicate the relevant override. This warning can be disabled using '#nowarn "70"' or '--nowarn:70'. parse error parse error: unexpected end of file {0} internal error: {0} {0} Incomplete pattern matches on this expression. For example, the value '{0}' may indicate a case not covered by the pattern(s). For example, the value '{0}' may indicate a case not covered by the pattern(s). However, a pattern rule with a 'when' clause might successfully match this value. Unmatched elements will be ignored. This rule will never be matched This value is not mutable This value is not local This construct is deprecated . {0} {0}. This warning can be disabled using '--nowarn:57' or '#nowarn "57"'. Uses of this construct may result in the generation of unverifiable .NET IL code. This warning can be disabled using '--nowarn:9' or '#nowarn "9"'. This construct is deprecated: {0} This construct is deprecated: it is only for use in the F# library The following fields require values: {0} Value restriction. The value '{0}' has generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation. Value restriction. The value '{0}' has generic type\n {1} \nEither make '{2}' into a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation. Value restriction. This member has been inferred to have generic type\n {0} \nConstructors and property getters/setters cannot be more generic than the enclosing type. Add a type annotation to indicate the exact types involved. Value restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation. Value restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither define '{2}' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation. syntax error {0} {0} Override implementations in augmentations are now deprecated. Override implementations should be given as part of the initial declaration of a type. Override implementations should be given as part of the initial declaration of a type. Interface implementations in augmentations are now deprecated. Interface implementations should be given on the initial declaration of a type. Interface implementations should be given on the initial declaration of a type. A required assembly reference is missing. You must add a reference to assembly '{0}'. The type referenced through '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'. #I directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-I' compiler option for this reference or delimit the directive with delimit it with '#if INTERACTIVE'/'#endif'. #r directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-r' compiler option for this reference or delimit the directive with '#if INTERACTIVE'/'#endif'. This directive may only be used in F# script files (extensions .fsx or .fsscript). Either remove the directive, move this code to a script file or delimit the directive with '#if INTERACTIVE'/'#endif'. Unable to find the file '{0}' in any of\n {1} Assembly reference '{0}' was not found or is invalid One or more warnings in loaded file.\n One or more errors in loaded file.\n Loaded files may only be F# source files (extension .fs). This F# script file (.fsx or .fsscript) will be treated as an F# source file Invalid assembly name '{0}' from InternalsVisibleTo attribute in {1} Invalid assembly name '{0}' from InternalsVisibleTo attribute (assembly filename not available) Could not load file '{0}' because it does not exist or is inaccessible {0} (Code={1}) internal error: {0} fsharp-3.0.34/src/fsharp/fsiaux.fsi0000775000175000017500000000737412260314606016162 0ustar chrischris namespace Microsoft.FSharp.Compiler.Interactive /// An event loop used by the currently executing F# Interactive session to execute code /// in the context of a GUI or another event-based system. type IEventLoop = /// Run the event loop. /// True if the event loop was restarted; false otherwise. abstract Run : unit -> bool /// Request that the given operation be run synchronously on the event loop. /// The result of the operation. abstract Invoke : (unit -> 'T) -> 'T /// Schedule a restart for the event loop. abstract ScheduleRestart : unit -> unit [] /// Operations supported by the currently executing F# Interactive session. type InteractiveSession = /// Get or set the floating point format used in the output of the interactive session. member FloatingPointFormat: string with get,set /// Get or set the format provider used in the output of the interactive session. member FormatProvider: System.IFormatProvider with get,set /// Get or set the print width of the interactive session. member PrintWidth : int with get,set /// Get or set the print depth of the interactive session. member PrintDepth : int with get,set /// Get or set the total print length of the interactive session. member PrintLength : int with get,set /// Get or set the total print size of the interactive session. member PrintSize : int with get,set /// When set to 'false', disables the display of properties of evaluated objects in the output of the interactive session. member ShowProperties : bool with get,set /// When set to 'false', disables the display of sequences in the output of the interactive session. member ShowIEnumerable: bool with get,set /// When set to 'false', disables the display of declaration values in the output of the interactive session. member ShowDeclarationValues: bool with get,set /// Register a printer that controls the output of the interactive session. member AddPrinter: ('T -> string) -> unit /// Register a print transformer that controls the output of the interactive session. member AddPrintTransformer: ('T -> obj) -> unit member internal AddedPrinters : Choice<(System.Type * (obj -> string)), (System.Type * (obj -> obj))> list /// The command line arguments after ignoring the arguments relevant to the interactive /// environment and replacing the first argument with the name of the last script file, /// if any. Thus 'fsi.exe test1.fs test2.fs -- hello goodbye' will give arguments /// 'test2.fs', 'hello', 'goodbye'. This value will normally be different to those /// returned by System.Environment.GetCommandLineArgs. member CommandLineArgs : string [] with get,set /// Gets or sets a the current event loop being used to process interactions. member EventLoop: IEventLoop with get,set module Settings = /// The settings associated with the interactive session. val fsi : InteractiveSession /// Hooks (internal use only, may change without notice). module RuntimeHelpers = val SaveIt : 'T -> unit val internal GetSavedIt : unit -> obj val internal GetSavedItType : unit -> System.Type (* val openPaths : unit -> string[] *) #if SILVERLIGHT val GetSimpleEventLoop : unit -> IEventLoop #endif fsharp-3.0.34/src/fsharp/tastops.fsi0000775000175000017500000017777612260314606016376 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Derived expression manipulation and construction functions. module internal Microsoft.FSharp.Compiler.Tastops open System.Text open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Layout open Microsoft.FSharp.Compiler.Lib #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping #endif //------------------------------------------------------------------------- // Type equivalence //------------------------------------------------------------------------- type Erasure = EraseAll | EraseMeasures | EraseNone val typeEquivAux : Erasure -> TcGlobals -> TType -> TType -> bool val typeEquiv : TcGlobals -> TType -> TType -> bool val measureEquiv : TcGlobals -> MeasureExpr -> MeasureExpr -> bool val stripTyEqnsWrtErasure: Erasure -> TcGlobals -> TType -> TType //------------------------------------------------------------------------- // Build common types //------------------------------------------------------------------------- val mkFunTy : TType -> TType -> TType val ( --> ) : TType -> TType -> TType val tryMkForallTy : Typars -> TType -> TType val ( +-> ) : Typars -> TType -> TType val mkTupleTy : TTypes -> TType val mkIteratedFunTy : TTypes -> TType -> TType val typeOfLambdaArg : range -> Val list -> TType val mkMultiLambdaTy : range -> Val list -> TType -> TType val mkLambdaTy : Typars -> TTypes -> TType -> TType //------------------------------------------------------------------------- // Module publication, used while compiling fslib. //------------------------------------------------------------------------- val ensureCcuHasModuleOrNamespaceAtPath : CcuThunk -> Ident list -> CompilationPath -> XmlDoc -> unit //------------------------------------------------------------------------- // Miscellaneous accessors on terms //------------------------------------------------------------------------- val stripExpr : Expr -> Expr val valsOfBinds : Bindings -> FlatVals //------------------------------------------------------------------------- // Build decision trees imperatively //------------------------------------------------------------------------- type MatchBuilder = new : SequencePointInfoForBinding * range -> MatchBuilder member AddTarget : DecisionTreeTarget -> int member AddResultTarget : Expr * SequencePointInfoForTarget -> DecisionTree member CloseTargets : unit -> DecisionTreeTarget list member Close : DecisionTree * range * TType -> Expr //------------------------------------------------------------------------- // Make some special decision graphs //------------------------------------------------------------------------- val mkBoolSwitch : range -> Expr -> DecisionTree -> DecisionTree -> DecisionTree val primMkCond : SequencePointInfoForBinding -> SequencePointInfoForTarget -> SequencePointInfoForTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkCond : SequencePointInfoForBinding -> SequencePointInfoForTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkNonNullCond : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkIfThen : TcGlobals -> range -> Expr -> Expr -> Expr //------------------------------------------------------------------------- // Generate new locals //------------------------------------------------------------------------- /// Note: try to use exprForValRef or the expression returned from mkLocal instead of this. val exprForVal : range -> Val -> Expr val exprForValRef : range -> ValRef -> Expr /// Return the local and an expression to reference it val mkLocal : range -> string -> TType -> Val * Expr val mkCompGenLocal : range -> string -> TType -> Val * Expr val mkMutableCompGenLocal : range -> string -> TType -> Val * Expr val mkCompGenLocalAndInvisbleBind : TcGlobals -> string -> range -> Expr -> Val * Expr * Binding //------------------------------------------------------------------------- // Make lambdas //------------------------------------------------------------------------- val mkMultiLambda : range -> Val list -> Expr * TType -> Expr val rebuildLambda : range -> Val option -> Val option -> Val list -> Expr * TType -> Expr val mkLambda : range -> Val -> Expr * TType -> Expr val mkTypeLambda : range -> Typars -> Expr * TType -> Expr val mkObjExpr : TType * Val option * Expr * ObjExprMethod list * (TType * ObjExprMethod list) list * Range.range -> Expr val mkTypeChoose : range -> Typars -> Expr -> Expr val mkLambdas : range -> Typars -> Val list -> Expr * TType -> Expr val mkMultiLambdasCore : range -> Val list list -> Expr * TType -> Expr * TType val mkMultiLambdas : range -> Typars -> Val list list -> Expr * TType -> Expr val mkMemberLambdas : range -> Typars -> Val option -> Val option -> Val list list -> Expr * TType -> Expr val mkWhile : TcGlobals -> SequencePointInfoForWhileLoop * SpecialWhileLoopMarker * Expr * Expr * range -> Expr val mkFor : TcGlobals -> SequencePointInfoForForLoop * Val * Expr * ForLoopStyle * Expr * Expr * range -> Expr val mkTryWith : TcGlobals -> Expr * (* filter val *) Val * (* filter expr *) Expr * (* handler val *) Val * (* handler expr *) Expr * range * TType * SequencePointInfoForTry * SequencePointInfoForWith -> Expr val mkTryFinally: TcGlobals -> Expr * Expr * range * TType * SequencePointInfoForTry * SequencePointInfoForFinally -> Expr //------------------------------------------------------------------------- // Make let/letrec //------------------------------------------------------------------------- // Generate a user-level let-bindings val mkBind : SequencePointInfoForBinding -> Val -> Expr -> Binding val mkLetBind : range -> Binding -> Expr -> Expr val mkLetsBind : range -> Binding list -> Expr -> Expr val mkLetsFromBindings : range -> Bindings -> Expr -> Expr val mkLet : SequencePointInfoForBinding -> range -> Val -> Expr -> Expr -> Expr val mkMultiLambdaBind : Val -> SequencePointInfoForBinding -> range -> Typars -> Val list list -> Expr * TType -> Binding // Compiler generated bindings may involve a user variable. // Compiler generated bindings may give rise to a sequence point if they are part of // an SPAlways expression. Compiler generated bindings can arise from for example, inlining. val mkCompGenBind : Val -> Expr -> Binding val mkCompGenBinds : Val list -> Exprs -> Bindings val mkCompGenLet : range -> Val -> Expr -> Expr -> Expr // Invisible bindings are never given a sequence point and should never have side effects val mkInvisibleLet : range -> Val -> Expr -> Expr -> Expr val mkInvisibleBind : Val -> Expr -> Binding val mkInvisibleFlatBindings : FlatVals -> FlatExprs -> Bindings val mkLetRecBinds : range -> Bindings -> Expr -> Expr //------------------------------------------------------------------------- // Generalization/inference helpers //------------------------------------------------------------------------- /// TypeSchme (generalizedTypars, tauTy) /// /// generalizedTypars -- the truly generalized type parameters /// tauTy -- the body of the generalized type. A 'tau' type is one with its type paramaeters stripped off. type TypeScheme = TypeScheme of Typars * TType val mkGenericBindRhs : TcGlobals -> range -> Typars -> TypeScheme -> Expr -> Expr val isBeingGeneralized : Typar -> TypeScheme -> bool //------------------------------------------------------------------------- // Make lazy and/or //------------------------------------------------------------------------- val mkLazyAnd : TcGlobals -> range -> Expr -> Expr -> Expr val mkLazyOr : TcGlobals -> range -> Expr -> Expr -> Expr val mkByrefTy : TcGlobals -> TType -> TType //------------------------------------------------------------------------- // Make construction operations //------------------------------------------------------------------------- val mkUnionCaseExpr : UnionCaseRef * TypeInst * Exprs * range -> Expr val mkExnExpr : TyconRef * Exprs * range -> Expr val mkAsmExpr : ILInstr list * TypeInst * Exprs * TTypes * range -> Expr val mkCoerceExpr : Expr * TType * range * TType -> Expr val mkReraise : range -> TType -> Expr val mkReraiseLibCall : TcGlobals -> TType -> range -> Expr //------------------------------------------------------------------------- // Make projection operations //------------------------------------------------------------------------- val mkTupleFieldGet : Expr * TypeInst * int * range -> Expr val mkRecdFieldGetViaExprAddr : Expr * RecdFieldRef * TypeInst * range -> Expr val mkRecdFieldGetAddrViaExprAddr : Expr * RecdFieldRef * TypeInst * range -> Expr val mkStaticRecdFieldGet : RecdFieldRef * TypeInst * range -> Expr val mkStaticRecdFieldSet : RecdFieldRef * TypeInst * Expr * range -> Expr val mkStaticRecdFieldGetAddr : RecdFieldRef * TypeInst * range -> Expr val mkRecdFieldSetViaExprAddr : Expr * RecdFieldRef * TypeInst * Expr * range -> Expr val mkUnionCaseTagGet : Expr * TyconRef * TypeInst * range -> Expr val mkUnionCaseProof : Expr * UnionCaseRef * TypeInst * range -> Expr val mkUnionCaseFieldGetProven : Expr * UnionCaseRef * TypeInst * int * range -> Expr val mkUnionCaseFieldGetUnproven : Expr * UnionCaseRef * TypeInst * int * range -> Expr val mkExnCaseFieldGet : Expr * TyconRef * int * range -> Expr val mkUnionCaseFieldSet : Expr * UnionCaseRef * TypeInst * int * Expr * range -> Expr val mkExnCaseFieldSet : Expr * TyconRef * int * Expr * range -> Expr //------------------------------------------------------------------------- // Compiled view of tuples //------------------------------------------------------------------------- val maxTuple : int val goodTupleFields : int val mkCompiledTupleTyconRef : TcGlobals -> 'a list -> TyconRef val mkCompiledTupleTy : TcGlobals -> TTypes -> TType val mkCompiledTuple : TcGlobals -> TTypes * Exprs * range -> TyconRef * TTypes * Exprs * range val mkGetTupleItemN : TcGlobals -> range -> int -> ILType -> Expr -> TType -> Expr //------------------------------------------------------------------------- // Take the address of an expression, or force it into a mutable local. Any allocated // mutable local may need to be kept alive over a larger expression, hence we return // a wrapping function that wraps "let mutable loc = Expr in ..." around a larger // expression. //------------------------------------------------------------------------- exception DefensiveCopyWarning of string * range type Mutates = DefinitelyMutates | PossiblyMutates | NeverMutates val mkExprAddrOfExpr : TcGlobals -> bool -> bool -> Mutates -> Expr -> ValRef option -> range -> (Expr -> Expr) * Expr //------------------------------------------------------------------------- // Tables keyed on values and/or type parameters //------------------------------------------------------------------------- /// Maps Val to T, based on stamps [] type ValMap<'T> = member Contents : StampMap<'T> member Item : Val -> 'T with get member TryFind : Val -> 'T option member ContainsVal : Val -> bool member Add : Val -> 'T -> ValMap<'T> member Remove : Val -> ValMap<'T> member IsEmpty : bool static member Empty : ValMap<'T> static member OfList : (Val * 'T) list -> ValMap<'T> /// Mutable data structure mapping Val's to T based on stamp keys [] type ValHash<'T> = member Values : seq<'T> member TryFind : Val -> 'T option member Add : Val * 'T -> unit static member Create : unit -> ValHash<'T> /// Maps Val's to list of T based on stamp keys [] type ValMultiMap<'T> = member Find : Val -> 'T list member Add : Val * 'T -> ValMultiMap<'T> member Remove : Val -> ValMultiMap<'T> member Contents : StampMap<'T list> static member Empty : ValMultiMap<'T> [] /// Maps Typar to T based on stamp keys type TyparMap<'T> = member Item : Typar -> 'T with get member ContainsKey : Typar -> bool member Add : Typar * 'T -> TyparMap<'T> static member Empty : TyparMap<'T> [] /// Maps TyconRef to T based on stamp keys type TyconRefMap<'T> = member Item : TyconRef -> 'T with get member TryFind : TyconRef -> 'T option member ContainsKey : TyconRef -> bool member Add : TyconRef -> 'T -> TyconRefMap<'T> member Remove : TyconRef -> TyconRefMap<'T> member IsEmpty : bool static member Empty : TyconRefMap<'T> static member OfList : (TyconRef * 'T) list -> TyconRefMap<'T> /// Maps TyconRef to list of T based on stamp keys [] type TyconRefMultiMap<'T> = member Find : TyconRef -> 'T list member Add : TyconRef * 'T -> TyconRefMultiMap<'T> static member Empty : TyconRefMultiMap<'T> //------------------------------------------------------------------------- // Orderings on Tycon, Val, RecdFieldRef, Typar //------------------------------------------------------------------------- val valOrder : IComparer val tyconOrder : IComparer val recdFieldRefOrder : IComparer val typarOrder : IComparer //------------------------------------------------------------------------- // Equality on Tycon and Val //------------------------------------------------------------------------- val tyconRefEq : TcGlobals -> TyconRef -> TyconRef -> bool val valRefEq : TcGlobals -> ValRef -> ValRef -> bool //------------------------------------------------------------------------- // Operations on types: substitution //------------------------------------------------------------------------- type TyparInst = (Typar * TType) list type TyconRefRemap = TyconRefMap type ValRemap = ValMap [] type Remap = { tpinst : TyparInst; valRemap: ValRemap; tyconRefRemap : TyconRefRemap } static member Empty : Remap val addTyconRefRemap : TyconRef -> TyconRef -> Remap -> Remap val addValRemap : Val -> Val -> Remap -> Remap val mkTyparInst : Typars -> TTypes -> TyparInst val mkTyconRefInst : TyconRef -> TypeInst -> TyparInst val emptyTyparInst : TyparInst val instType : TyparInst -> TType -> TType val instTypes : TyparInst -> TypeInst -> TypeInst val instTyparConstraints : TyparInst -> TyparConstraint list -> TyparConstraint list val instTrait : TyparInst -> TraitConstraintInfo -> TraitConstraintInfo //------------------------------------------------------------------------- // From typars to types //------------------------------------------------------------------------- val generalizeTypars : Typars -> TypeInst val generalizeTyconRef : TyconRef -> TTypes * TType val generalizedTyconRef : TyconRef -> TType val mkTyparToTyparRenaming : Typars -> Typars -> TyparInst * TTypes //------------------------------------------------------------------------- // See through typar equations from inference and/or type abbreviation equations. //------------------------------------------------------------------------- val reduceTyconRefAbbrev : TyconRef -> TypeInst -> TType val reduceTyconRefMeasureableOrProvided : TcGlobals -> TyconRef -> TypeInst -> TType val reduceTyconRefAbbrevMeasureable : TyconRef -> MeasureExpr /// set bool to 'true' to allow shortcutting of type parameter equation chains during stripping val stripTyEqnsA : TcGlobals -> bool -> TType -> TType val stripTyEqns : TcGlobals -> TType -> TType val stripTyEqnsAndMeasureEqns : TcGlobals -> TType -> TType val tryNormalizeMeasureInType : TcGlobals -> TType -> TType //------------------------------------------------------------------------- // //------------------------------------------------------------------------- /// See through F# exception abbreviations val stripExnEqns : TyconRef -> Tycon val recdFieldsOfExnDefRef : TyconRef -> RecdField list val recdFieldTysOfExnDefRef : TyconRef -> TType list //------------------------------------------------------------------------- // Analyze types. These all look through type abbreviations and // inference equations, i.e. are "stripped" //------------------------------------------------------------------------- val destForallTy : TcGlobals -> TType -> Typars * TType val destFunTy : TcGlobals -> TType -> TType * TType val destTupleTy : TcGlobals -> TType -> TTypes val destTyparTy : TcGlobals -> TType -> Typar val destAnyParTy : TcGlobals -> TType -> Typar val destMeasureTy : TcGlobals -> TType -> MeasureExpr val tryDestForallTy : TcGlobals -> TType -> Typars * TType val isFunTy : TcGlobals -> TType -> bool val isForallTy : TcGlobals -> TType -> bool val isTupleTy : TcGlobals -> TType -> bool val isTupleStructTy : TcGlobals -> TType -> bool val isUnionTy : TcGlobals -> TType -> bool val isReprHiddenTy : TcGlobals -> TType -> bool val isFSharpObjModelTy : TcGlobals -> TType -> bool val isRecdTy : TcGlobals -> TType -> bool val isTyparTy : TcGlobals -> TType -> bool val isAnyParTy : TcGlobals -> TType -> bool val isMeasureTy : TcGlobals -> TType -> bool val mkAppTy : TyconRef -> TypeInst -> TType val mkProvenUnionCaseTy : UnionCaseRef -> TypeInst -> TType val isProvenUnionCaseTy : TType -> bool val isAppTy : TcGlobals -> TType -> bool val destAppTy : TcGlobals -> TType -> TyconRef * TypeInst val tcrefOfAppTy : TcGlobals -> TType -> TyconRef val tyconOfAppTy : TcGlobals -> TType -> Tycon val tryDestAppTy : TcGlobals -> TType -> TyconRef option val argsOfAppTy : TcGlobals -> TType -> TypeInst val mkInstForAppTy : TcGlobals -> TType -> TyparInst /// Try to get a TyconRef for a type without erasing type abbreviations val tryNiceEntityRefOfTy : TType -> TyconRef option val domainOfFunTy : TcGlobals -> TType -> TType val rangeOfFunTy : TcGlobals -> TType -> TType val stripFunTy : TcGlobals -> TType -> TType list * TType val stripFunTyN : TcGlobals -> int -> TType -> TType list * TType val applyForallTy : TcGlobals -> TType -> TypeInst -> TType val tryDestTupleTy : TcGlobals -> TType -> TType list //------------------------------------------------------------------------- // Compute actual types of union cases and fields given an instantiation // of the generic type parameters of the enclosing type. //------------------------------------------------------------------------- val actualResultTyOfUnionCase : TypeInst -> UnionCaseRef -> TType val actualTysOfUnionCaseFields : TyparInst -> UnionCaseRef -> TType list val actualTysOfInstanceRecdFields : TyparInst -> TyconRef -> TType list val actualTyOfRecdField : TyparInst -> RecdField -> TType val actualTyOfRecdFieldRef : RecdFieldRef -> TypeInst -> TType val actualTyOfRecdFieldForTycon : Tycon -> TypeInst -> RecdField -> TType //------------------------------------------------------------------------- // Top types: guaranteed to be compiled to .NET methods, and must be able to // have user-specified argument names (for stability w.r.t. reflection) // and user-specified argument and return attributes. //------------------------------------------------------------------------- type UncurriedArgInfos = (TType * ArgReprInfo) list type CurriedArgInfos = UncurriedArgInfos list val destTopForallTy : TcGlobals -> ValReprInfo -> TType -> Typars * TType val GetTopTauTypeInFSharpForm : TcGlobals -> ArgReprInfo list list -> TType -> range -> CurriedArgInfos * TType val GetTopValTypeInFSharpForm : TcGlobals -> ValReprInfo -> TType -> range -> Typars * CurriedArgInfos * TType * ArgReprInfo val IsCompiledAsStaticProperty : TcGlobals -> Val -> bool val IsCompiledAsStaticPropertyWithField : TcGlobals -> Val -> bool val GetTopValTypeInCompiledForm : TcGlobals -> ValReprInfo -> TType -> range -> Typars * CurriedArgInfos * TType option * ArgReprInfo val GetFSharpViewOfReturnType : TcGlobals -> TType option -> TType val NormalizeDeclaredTyparsForEquiRecursiveInference : TcGlobals -> Typars -> Typars //------------------------------------------------------------------------- // Compute the return type after an application //------------------------------------------------------------------------- val applyTys : TcGlobals -> TType -> TType list * 'T list -> TType //------------------------------------------------------------------------- // Compute free variables in types //------------------------------------------------------------------------- val emptyFreeTypars : FreeTypars val unionFreeTypars : FreeTypars -> FreeTypars -> FreeTypars val emptyFreeTycons : FreeTycons val unionFreeTycons : FreeTycons -> FreeTycons -> FreeTycons val emptyFreeTyvars : FreeTyvars val unionFreeTyvars : FreeTyvars -> FreeTyvars -> FreeTyvars val emptyFreeLocals : FreeLocals val unionFreeLocals : FreeLocals -> FreeLocals -> FreeLocals type FreeVarOptions val CollectLocalsNoCaching : FreeVarOptions val CollectTyparsNoCaching : FreeVarOptions val CollectTyparsAndLocalsNoCaching : FreeVarOptions val CollectTyparsAndLocals : FreeVarOptions val CollectLocals : FreeVarOptions val CollectTypars : FreeVarOptions val CollectAllNoCaching : FreeVarOptions val CollectAll : FreeVarOptions val accFreeInTypes : FreeVarOptions -> TType list -> FreeTyvars -> FreeTyvars val accFreeInType : FreeVarOptions -> TType -> FreeTyvars -> FreeTyvars val accFreeInTypars : FreeVarOptions -> Typars -> FreeTyvars -> FreeTyvars val freeInType : FreeVarOptions -> TType -> FreeTyvars val freeInTypes : FreeVarOptions -> TType list -> FreeTyvars val freeInVal : FreeVarOptions -> Val -> FreeTyvars // This one puts free variables in canonical left-to-right order. val freeInTypeLeftToRight : TcGlobals -> bool -> TType -> Typars val freeInTypesLeftToRight : TcGlobals -> bool -> TType list -> Typars val freeInTypesLeftToRightSkippingConstraints : TcGlobals -> TType list -> Typars val isDimensionless : TcGlobals -> TType -> bool //------------------------------------------------------------------------- // Equivalence of types (up to substitution of type variables in the left-hand type) //------------------------------------------------------------------------- [] type TypeEquivEnv = { EquivTypars: TyparMap; EquivTycons: TyconRefRemap } static member Empty : TypeEquivEnv member BindEquivTypars : Typars -> Typars -> TypeEquivEnv static member FromTyparInst : TyparInst -> TypeEquivEnv static member FromEquivTypars : Typars -> Typars -> TypeEquivEnv val traitsAEquivAux : Erasure -> TcGlobals -> TypeEquivEnv -> TraitConstraintInfo -> TraitConstraintInfo -> bool val traitsAEquiv : TcGlobals -> TypeEquivEnv -> TraitConstraintInfo -> TraitConstraintInfo -> bool val typarConstraintsAEquivAux : Erasure -> TcGlobals -> TypeEquivEnv -> TyparConstraint -> TyparConstraint -> bool val typarConstraintsAEquiv : TcGlobals -> TypeEquivEnv -> TyparConstraint -> TyparConstraint -> bool val typarsAEquiv : TcGlobals -> TypeEquivEnv -> Typars -> Typars -> bool val typeAEquivAux : Erasure -> TcGlobals -> TypeEquivEnv -> TType -> TType -> bool val typeAEquiv : TcGlobals -> TypeEquivEnv -> TType -> TType -> bool val returnTypesAEquivAux : Erasure -> TcGlobals -> TypeEquivEnv -> TType option -> TType option -> bool val returnTypesAEquiv : TcGlobals -> TypeEquivEnv -> TType option -> TType option -> bool val tcrefAEquiv : TcGlobals -> TypeEquivEnv -> TyconRef -> TyconRef -> bool val valLinkageAEquiv : TcGlobals -> TypeEquivEnv -> Val -> Val -> bool //------------------------------------------------------------------------- // Erasure of types wrt units-of-measure and type providers //------------------------------------------------------------------------- // Return true if this type is a nominal type that is an erased provided type val isErasedType : TcGlobals -> TType -> bool // Return all components (units-of-measure, and types) of this type that would be erased val getErasedTypes : TcGlobals -> TType -> TType list //------------------------------------------------------------------------- // Unit operations //------------------------------------------------------------------------- val MeasurePower : MeasureExpr -> int -> MeasureExpr val ListMeasureVarOccsWithNonZeroExponents : MeasureExpr -> (Typar * int) list val ListMeasureConOccsWithNonZeroExponents : TcGlobals -> bool -> MeasureExpr -> (TyconRef * int) list val ProdMeasures : MeasureExpr list -> MeasureExpr val MeasureVarExponent : Typar -> MeasureExpr -> int val MeasureConExponent : TcGlobals -> bool -> TyconRef -> MeasureExpr -> int //------------------------------------------------------------------------- // Members //------------------------------------------------------------------------- val GetTypeOfMemberInFSharpForm : TcGlobals -> ValRef -> Typars * CurriedArgInfos * TType * ArgReprInfo val GetTypeOfMemberInMemberForm : TcGlobals -> ValRef -> Typars * CurriedArgInfos * TType option * ArgReprInfo val GetTypeOfIntrinsicMemberInCompiledForm : TcGlobals -> ValRef -> Typars * CurriedArgInfos * TType option * ArgReprInfo val GetMemberTypeInMemberForm : TcGlobals -> MemberFlags -> ValReprInfo -> TType -> range -> Typars * CurriedArgInfos * TType option * ArgReprInfo val PartitionValTypars : TcGlobals -> Val -> (Typars * Typars * Typars * TyparInst * TType list) option val PartitionValRefTypars : TcGlobals -> ValRef -> (Typars * Typars * Typars * TyparInst * TType list) option val ReturnTypeOfPropertyVal : TcGlobals -> Val -> TType val ArgInfosOfPropertyVal : TcGlobals -> Val -> UncurriedArgInfos val ArgInfosOfMember: TcGlobals -> ValRef -> CurriedArgInfos val GetMemberCallInfo : TcGlobals -> ValRef * ValUseFlag -> int * bool * bool * bool * bool * bool * bool * bool //------------------------------------------------------------------------- // Printing //------------------------------------------------------------------------- type TyparConstraintsWithTypars = (Typar * TyparConstraint) list module PrettyTypes = val NeedsPrettyTyparName : Typar -> bool val NewPrettyTypars : TyparInst -> Typars -> string list -> Typars * TyparInst val PrettyTyparNames : (Typar -> bool) -> string list -> Typars -> string list val PrettifyTypes1 : TcGlobals -> TType -> TyparInst * TType * TyparConstraintsWithTypars val PrettifyTypes2 : TcGlobals -> TType * TType -> TyparInst * (TType * TType) * TyparConstraintsWithTypars val PrettifyTypesN : TcGlobals -> TType list -> TyparInst * TType list * TyparConstraintsWithTypars val PrettifyTypesN1 : TcGlobals -> UncurriedArgInfos * TType -> TyparInst * (UncurriedArgInfos * TType) * TyparConstraintsWithTypars val PrettifyTypesNM1 : TcGlobals -> TType list * CurriedArgInfos * TType -> TyparInst * (TType list * CurriedArgInfos * TType) * TyparConstraintsWithTypars [] type DisplayEnv = { includeStaticParametersInTypeNames : bool; openTopPathsSorted: Lazy; openTopPathsRaw: string list list; shortTypeNames: bool; suppressNestedTypes: bool; maxMembers : int option; showObsoleteMembers: bool; showTyparBinding: bool; showImperativeTyparAnnotations: bool; suppressInlineKeyword:bool; suppressMutableKeyword:bool; showMemberContainers: bool; shortConstraints:bool; useColonForReturnType:bool; showAttributes: bool; showOverrides:bool; showConstraintTyparAnnotations:bool; abbreviateAdditionalConstraints: bool; showTyparDefaultConstraints: bool g: TcGlobals contextAccessibility: Accessibility generatedValueLayout:(Val -> layout option) } member SetOpenPaths: string list list -> DisplayEnv static member Empty: TcGlobals -> DisplayEnv member AddAccessibility : Accessibility -> DisplayEnv member AddOpenPath : string list -> DisplayEnv member AddOpenModuleOrNamespace : ModuleOrNamespaceRef -> DisplayEnv /// Return the full text for an item as we want it displayed to the user as a fully qualified entity val fullDisplayTextOfModRef : ModuleOrNamespaceRef -> string val fullDisplayTextOfParentOfModRef : ModuleOrNamespaceRef -> string option val fullDisplayTextOfValRef : ValRef -> string val fullDisplayTextOfTyconRef : TyconRef -> string val fullDisplayTextOfExnRef : TyconRef -> string val fullDisplayTextOfUnionCaseRef : UnionCaseRef -> string val fullDisplayTextOfRecdFieldRef : RecdFieldRef -> string val ticksAndArgCountTextOfTyconRef : TyconRef -> string /// A unique qualified name for each type definition, used to qualify the names of interface implementation methods val qualifiedMangledNameOfTyconRef : TyconRef -> string -> string val trimPathByDisplayEnv : DisplayEnv -> string list -> string val prefixOfStaticReq : TyparStaticReq -> string val prefixOfRigidTypar : Typar -> string /// Utilities used in simplifying types for visual presentation module SimplifyTypes = type TypeSimplificationInfo = { singletons : Typar Zset; inplaceConstraints : Zmap; postfixConstraints : TyparConstraintsWithTypars; } val typeSimplificationInfo0 : TypeSimplificationInfo val CollectInfo : bool -> TType list -> TyparConstraintsWithTypars -> TypeSimplificationInfo //------------------------------------------------------------------------- // //------------------------------------------------------------------------- val superOfTycon : TcGlobals -> Tycon -> TType val abstractSlotValsOfTycons : Tycon list -> Val list //------------------------------------------------------------------------- // Free variables in expressions etc. //------------------------------------------------------------------------- val emptyFreeVars : FreeVars val unionFreeVars : FreeVars -> FreeVars -> FreeVars val accFreeInTargets : FreeVarOptions -> DecisionTreeTarget array -> FreeVars -> FreeVars val accFreeInExprs : FreeVarOptions -> Exprs -> FreeVars -> FreeVars val accFreeInSwitchCases : FreeVarOptions -> DecisionTreeCase list -> DecisionTree option -> FreeVars -> FreeVars val accFreeInDecisionTree : FreeVarOptions -> DecisionTree -> FreeVars -> FreeVars /// Get the free variables in a module definition. val freeInModuleOrNamespace : FreeVarOptions -> ModuleOrNamespaceExpr -> FreeVars /// Get the free variables in an expression. val freeInExpr : FreeVarOptions -> Expr -> FreeVars /// Get the free variables in the right hand side of a binding. val freeInBindingRhs : FreeVarOptions -> Binding -> FreeVars val freeTyvarsAllPublic : FreeTyvars -> bool val freeVarsAllPublic : FreeVars -> bool //------------------------------------------------------------------------- // Mark/range/position information from expressions //------------------------------------------------------------------------- type Expr with member Range : range //------------------------------------------------------------------------- // type-of operations on the expression tree //------------------------------------------------------------------------- val tyOfExpr : TcGlobals -> Expr -> TType //------------------------------------------------------------------------- // Top expressions to implement top types //------------------------------------------------------------------------- val stripTopLambda : Expr * TType -> Typars * Val list list * Expr * TType val InferArityOfExpr : TcGlobals -> TType -> Attribs list list -> Attribs -> Expr -> ValReprInfo val InferArityOfExprBinding : TcGlobals -> Val -> Expr -> ValReprInfo //------------------------------------------------------------------------- // Copy expressions and types //------------------------------------------------------------------------- // REVIEW: this mutation should not be needed val setValHasNoArity : Val -> Val type ValCopyFlag = | CloneAll | CloneAllAndMarkExprValsAsCompilerGenerated // OnlyCloneExprVals is a nasty setting to reuse the cloning logic in a mode where all // Tycon and "module/member" Val objects keep their identity, but the Val objects for all Expr bindings // are cloned. This is used to 'fixup' the TAST created by tlr.fs // // This is a fragile mode of use. It's not really clear why TLR needs to create a "bad" expression tree that // reuses Val objects as multiple value bindings, and its been the cause of several subtle bugs. | OnlyCloneExprVals val remapTyconRef : TyconRefRemap -> TyconRef -> TyconRef val remapUnionCaseRef : TyconRefRemap -> UnionCaseRef -> UnionCaseRef val remapRecdFieldRef : TyconRefRemap -> RecdFieldRef -> RecdFieldRef val remapValRef : Remap -> ValRef -> ValRef val remapExpr : TcGlobals -> ValCopyFlag -> Remap -> Expr -> Expr val remapAttrib : TcGlobals -> Remap -> Attrib -> Attrib val remapPossibleForallTy : TcGlobals -> Remap -> TType -> TType val copyModuleOrNamespaceType : TcGlobals -> ValCopyFlag -> ModuleOrNamespaceType -> ModuleOrNamespaceType val copyExpr : TcGlobals -> ValCopyFlag -> Expr -> Expr val copyImplFile : TcGlobals -> ValCopyFlag -> TypedImplFile -> TypedImplFile val copySlotSig : SlotSig -> SlotSig val instSlotSig : TyparInst -> SlotSig -> SlotSig val instExpr : TcGlobals -> TyparInst -> Expr -> Expr //------------------------------------------------------------------------- // Build the remapping that corresponds to a module meeting its signature // and also report the set of tycons, tycon representations and values hidden in the process. //------------------------------------------------------------------------- type SignatureRepackageInfo = { mrpiVals: (ValRef * ValRef) list; mrpiEntities: (TyconRef * TyconRef) list } static member Empty : SignatureRepackageInfo type SignatureHidingInfo = { mhiTycons : Zset; mhiTyconReprs : Zset; mhiVals : Zset; mhiRecdFields : Zset; mhiUnionCases : Zset } val ComputeRemappingFromInferredSignatureToExplicitSignature : TcGlobals -> ModuleOrNamespaceType -> ModuleOrNamespaceType -> SignatureRepackageInfo * SignatureHidingInfo val ComputeRemappingFromImplementationToSignature : TcGlobals -> ModuleOrNamespaceExpr -> ModuleOrNamespaceType -> SignatureRepackageInfo * SignatureHidingInfo val ComputeHidingInfoAtAssemblyBoundary : ModuleOrNamespaceType -> SignatureHidingInfo val mkRepackageRemapping : SignatureRepackageInfo -> Remap val wrapModuleOrNamespaceExprInNamespace : Ident -> CompilationPath -> ModuleOrNamespaceExpr -> ModuleOrNamespaceExpr val wrapModuleOrNamespaceTypeInNamespace : Ident -> CompilationPath -> ModuleOrNamespaceType -> ModuleOrNamespaceType val wrapModuleOrNamespaceType : Ident -> CompilationPath -> ModuleOrNamespaceType -> ModuleOrNamespace val SigTypeOfImplFile : TypedImplFile -> ModuleOrNamespaceType //------------------------------------------------------------------------- // Given a list of top-most signatures that together constrain the public compilation units // of an assembly, compute a remapping that converts local references to non-local references. // This remapping must be applied to all pickled expressions and types // exported from the assembly. //------------------------------------------------------------------------- val tryRescopeEntity : CcuThunk -> Entity -> EntityRef option val tryRescopeVal : CcuThunk -> Remap -> Val -> ValRef option val MakeExportRemapping : CcuThunk -> ModuleOrNamespace -> Remap val ApplyExportRemappingToEntity : TcGlobals -> Remap -> ModuleOrNamespace -> ModuleOrNamespace /// Query SignatureRepackageInfo val IsHiddenTycon : (Remap * SignatureHidingInfo) list -> Tycon -> bool val IsHiddenTyconRepr : (Remap * SignatureHidingInfo) list -> Tycon -> bool val IsHiddenVal : (Remap * SignatureHidingInfo) list -> Val -> bool val IsHiddenRecdField : (Remap * SignatureHidingInfo) list -> RecdFieldRef -> bool //------------------------------------------------------------------------- // Adjust marks in expressions //------------------------------------------------------------------------- val remarkExpr : range -> Expr -> Expr //------------------------------------------------------------------------- // Make applications //------------------------------------------------------------------------- val primMkApp : (Expr * TType) -> TypeInst -> Exprs -> range -> Expr val mkApps : TcGlobals -> (Expr * TType) * TType list list * Exprs * range -> Expr val mkTyAppExpr : range -> Expr * TType -> TType list -> Expr /// localv <- e val mkValSet : range -> ValRef -> Expr -> Expr /// *localv_ptr = e val mkAddrSet : range -> ValRef -> Expr -> Expr /// *localv_ptr val mkAddrGet : range -> ValRef -> Expr /// &localv val mkValAddr : range -> ValRef -> Expr //------------------------------------------------------------------------- // Note these take the address of the record expression if it is a struct, and // apply a type instantiation if it is a first-class polymorphic record field. //------------------------------------------------------------------------- val mkRecdFieldGet : TcGlobals -> Expr * RecdFieldRef * TypeInst * range -> Expr val mkRecdFieldSet : TcGlobals -> Expr * RecdFieldRef * TypeInst * Expr * range -> Expr //------------------------------------------------------------------------- // Get the targets used in a decision graph (for reporting warnings) //------------------------------------------------------------------------- val accTargetsOfDecisionTree : DecisionTree -> int list -> int list //------------------------------------------------------------------------- // Optimizations on decision graphs //------------------------------------------------------------------------- val mkAndSimplifyMatch : SequencePointInfoForBinding -> range -> range -> TType -> DecisionTree -> DecisionTreeTarget list -> Expr val primMkMatch : SequencePointInfoForBinding * range * DecisionTree * DecisionTreeTarget array * range * TType -> Expr //------------------------------------------------------------------------- // Work out what things on the r.h.s. of a letrec need to be fixed up //------------------------------------------------------------------------- val IterateRecursiveFixups : TcGlobals -> Val option -> (Val option -> Expr -> (Expr -> Expr) -> Expr -> unit) -> Expr * (Expr -> Expr) -> Expr -> unit //------------------------------------------------------------------------- // From lambdas taking multiple variables to lambdas taking a single variable // of tuple type. //------------------------------------------------------------------------- val MultiLambdaToTupledLambda: Val list -> Expr -> Val * Expr val AdjustArityOfLambdaBody : TcGlobals -> int -> Val list -> Expr -> Val list * Expr //------------------------------------------------------------------------- // Make applications, doing beta reduction by introducing let-bindings //------------------------------------------------------------------------- val MakeApplicationAndBetaReduce : TcGlobals -> Expr * TType * TypeInst list * Exprs * range -> Expr val JoinTyparStaticReq : TyparStaticReq -> TyparStaticReq -> TyparStaticReq //------------------------------------------------------------------------- // More layout - this is for debugging //------------------------------------------------------------------------- module DebugPrint = val layoutRanges : bool ref val showType : TType -> string val showExpr : Expr -> string val valRefL : ValRef -> layout val unionCaseRefL : UnionCaseRef -> layout val vspecAtBindL : Val -> layout val intL : int -> layout val valL : Val -> layout val typarDeclL : Typar -> layout val traitL : TraitConstraintInfo -> layout val typarL : Typar -> layout val typarsL : Typars -> layout val typeL : TType -> layout val slotSigL : SlotSig -> layout val entityTypeL : ModuleOrNamespaceType -> layout val entityL : ModuleOrNamespace -> layout val typeOfValL : Val -> layout val bindingL : Binding -> layout val exprL : Expr -> layout val tyconL : Tycon -> layout val decisionTreeL : DecisionTree -> layout val implFileL : TypedImplFile -> layout val assemblyL : TypedAssembly -> layout val recdFieldRefL : RecdFieldRef -> layout //------------------------------------------------------------------------- // Fold on expressions //------------------------------------------------------------------------- type ExprFolder<'State> = { exprIntercept : ('State -> Expr -> 'State) -> 'State -> Expr -> 'State option; valBindingSiteIntercept : 'State -> bool * Val -> 'State; nonRecBindingsIntercept : 'State -> Binding -> 'State; recBindingsIntercept : 'State -> Bindings -> 'State; dtreeIntercept : 'State -> DecisionTree -> 'State; targetIntercept : ('State -> Expr -> 'State) -> 'State -> DecisionTreeTarget -> 'State option; tmethodIntercept : ('State -> Expr -> 'State) -> 'State -> ObjExprMethod -> 'State option;} val ExprFolder0 : ExprFolder<'State> val FoldImplFile: ExprFolder<'State> -> ('State -> TypedImplFile -> 'State) val FoldExpr : ExprFolder<'State> -> ('State -> Expr -> 'State) #if DEBUG val ExprStats : Expr -> string #endif //------------------------------------------------------------------------- // Make some common types //------------------------------------------------------------------------- val mkNativePtrType : TcGlobals -> TType -> TType val mkArrayType : TcGlobals -> TType -> TType val isOptionTy : TcGlobals -> TType -> bool val destOptionTy : TcGlobals -> TType -> TType val tryDestOptionTy : TcGlobals -> TType -> TType option val isLinqExpressionTy : TcGlobals -> TType -> bool val destLinqExpressionTy : TcGlobals -> TType -> TType val tryDestLinqExpressionTy : TcGlobals -> TType -> TType option (* val isQuoteExprTy : TcGlobals -> TType -> bool val destQuoteExprTy : TcGlobals -> TType -> TType val tryDestQuoteExprTy : TcGlobals -> TType -> TType option *) //------------------------------------------------------------------------- // Primitives associated with compiling the IEvent idiom to .NET events //------------------------------------------------------------------------- val isIDelegateEventType : TcGlobals -> TType -> bool val destIDelegateEventType : TcGlobals -> TType -> TType val mkIEventType : TcGlobals -> TType -> TType -> TType val mkIObservableType : TcGlobals -> TType -> TType val mkIObserverType : TcGlobals -> TType -> TType //------------------------------------------------------------------------- // Primitives associated with printf format string parsing //------------------------------------------------------------------------- val mkLazyTy : TcGlobals -> TType -> TType val mkPrintfFormatTy : TcGlobals -> TType -> TType -> TType -> TType -> TType -> TType //------------------------------------------------------------------------- // Classify types //------------------------------------------------------------------------- type TypeDefMetadata = | ILTypeMetadata of ILScopeRef * ILTypeDef | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata #if EXTENSIONTYPING | ExtensionTypeMetadata of TProvidedTypeInfo #endif val metadataOfTycon : Tycon -> TypeDefMetadata val metadataOfTy : TcGlobals -> TType -> TypeDefMetadata val isILAppTy : TcGlobals -> TType -> bool val isArrayTy : TcGlobals -> TType -> bool val isArray1DTy : TcGlobals -> TType -> bool val destArrayTy : TcGlobals -> TType -> TType val mkArrayTy : TcGlobals -> int -> TType -> range -> TType val isArrayTyconRef : TcGlobals -> TyconRef -> bool val rankOfArrayTyconRef : TcGlobals -> TyconRef -> int val isUnitTy : TcGlobals -> TType -> bool val isObjTy : TcGlobals -> TType -> bool val isVoidTy : TcGlobals -> TType -> bool /// Get the element type of an array type val destArrayTy : TcGlobals -> TType -> TType /// Get the rank of an array type val rankOfArrayTy : TcGlobals -> TType -> int val isInterfaceTyconRef : TyconRef -> bool val isDelegateTy : TcGlobals -> TType -> bool val isInterfaceTy : TcGlobals -> TType -> bool val isRefTy : TcGlobals -> TType -> bool val isSealedTy : TcGlobals -> TType -> bool val isComInteropTy : TcGlobals -> TType -> bool val underlyingTypeOfEnumTy : TcGlobals -> TType -> TType val normalizeEnumTy : TcGlobals -> TType -> TType val isStructTy : TcGlobals -> TType -> bool val isUnmanagedTy : TcGlobals -> TType -> bool val isClassTy : TcGlobals -> TType -> bool val isEnumTy : TcGlobals -> TType -> bool /// For "type Class as self", 'self' is fixed up after initialization. To support this, /// it is converted behind the scenes to a ref. This function strips off the ref and /// returns the underlying type. val StripSelfRefCell : TcGlobals * ValBaseOrThisInfo * TType -> TType val (|AppTy|_|) : TcGlobals -> TType -> (TyconRef * TType list) option val (|NullableTy|_|) : TcGlobals -> TType -> TType option val (|StripNullableTy|) : TcGlobals -> TType -> TType //------------------------------------------------------------------------- // Special semantic constraints //------------------------------------------------------------------------- val IsUnionTypeWithNullAsTrueValue: TcGlobals -> Tycon -> bool val TyconHasUseNullAsTrueValueAttribute : TcGlobals -> Tycon -> bool val CanHaveUseNullAsTrueValueAttribute : TcGlobals -> Tycon -> bool val MemberIsCompiledAsInstance : TcGlobals -> TyconRef -> bool -> ValMemberInfo -> Attribs -> bool val ValSpecIsCompiledAsInstance : TcGlobals -> Val -> bool val ValRefIsCompiledAsInstanceMember : TcGlobals -> ValRef -> bool val ModuleNameIsMangled : TcGlobals -> Attribs -> bool val CompileAsEvent : TcGlobals -> Attribs -> bool val TypeNullIsExtraValue : TcGlobals -> TType -> bool val TypeNullIsTrueValue : TcGlobals -> TType -> bool val TypeNullNotLiked : TcGlobals -> TType -> bool val TypeNullNever : TcGlobals -> TType -> bool val TypeSatisfiesNullConstraint : TcGlobals -> TType -> bool val TypeHasDefaultValue : TcGlobals -> TType -> bool val isAbstractTycon : Tycon -> bool val isUnionCaseAllocObservable : UnionCaseRef -> bool val isRecdOrUnionOrStructTyconRefAllocObservable : TcGlobals -> TyconRef -> bool val isExnAllocObservable : TyconRef -> bool val isUnionCaseFieldMutable : TcGlobals -> UnionCaseRef -> int -> bool val isExnFieldMutable : TyconRef -> int -> bool val useGenuineField : Tycon -> RecdField -> bool val ComputeFieldName : Tycon -> RecdField -> string //------------------------------------------------------------------------- // Destruct slotsigs etc. //------------------------------------------------------------------------- val slotSigHasVoidReturnTy : SlotSig -> bool val actualReturnTyOfSlotSig : TypeInst -> TypeInst -> SlotSig -> TType option val returnTyOfMethod : TcGlobals -> ObjExprMethod -> TType option //------------------------------------------------------------------------- // Primitives associated with initialization graphs //------------------------------------------------------------------------- val mkRefCell : TcGlobals -> range -> TType -> Expr -> Expr val mkRefCellGet : TcGlobals -> range -> TType -> Expr -> Expr val mkRefCellSet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkLazyDelayed : TcGlobals -> range -> TType -> Expr -> Expr val mkLazyForce : TcGlobals -> range -> TType -> Expr -> Expr val mkRefCellContentsRef : TcGlobals -> RecdFieldRef val isRefCellTy : TcGlobals -> TType -> bool val destRefCellTy : TcGlobals -> TType -> TType val mkRefCellTy : TcGlobals -> TType -> TType val mkSeqTy : TcGlobals -> TType -> TType val mkIEnumeratorTy : TcGlobals -> TType -> TType val mkListTy : TcGlobals -> TType -> TType val mkOptionTy : TcGlobals -> TType -> TType val mkNoneCase : TcGlobals -> UnionCaseRef val mkSomeCase : TcGlobals -> UnionCaseRef val mkNil : TcGlobals -> range -> TType -> Expr val mkCons : TcGlobals -> TType -> Expr -> Expr -> Expr //------------------------------------------------------------------------- // Make a few more expressions //------------------------------------------------------------------------- val mkSequential : SequencePointInfoForSeq -> range -> Expr -> Expr -> Expr val mkCompGenSequential : range -> Expr -> Expr -> Expr val mkSequentials : SequencePointInfoForSeq -> TcGlobals -> range -> Exprs -> Expr val mkRecordExpr : TcGlobals -> RecordConstructionInfo * TyconRef * TypeInst * RecdFieldRef list * Exprs * range -> Expr val mkUnbox : TType -> Expr -> range -> Expr val mkBox : TType -> Expr -> range -> Expr val mkIsInst : TType -> Expr -> range -> Expr val mkNull : range -> TType -> Expr val mkNullTest : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr val mkNonNullTest : TcGlobals -> range -> Expr -> Expr val mkIsInstConditional : TcGlobals -> range -> TType -> Expr -> Val -> Expr -> Expr -> Expr val mkThrow : range -> TType -> Expr -> Expr val mkGetArg0 : range -> TType -> Expr val mkDefault : range * TType -> Expr val isThrow : Expr -> bool val mkString : TcGlobals -> range -> string -> Expr val mkBool : TcGlobals -> range -> bool -> Expr val mkByte : TcGlobals -> range -> byte -> Expr val mkUInt16 : TcGlobals -> range -> uint16 -> Expr val mkTrue : TcGlobals -> range -> Expr val mkFalse : TcGlobals -> range -> Expr val mkUnit : TcGlobals -> range -> Expr val mkInt32 : TcGlobals -> range -> int32 -> Expr val mkInt : TcGlobals -> range -> int -> Expr val mkZero : TcGlobals -> range -> Expr val mkOne : TcGlobals -> range -> Expr val mkTwo : TcGlobals -> range -> Expr val mkMinusOne : TcGlobals -> range -> Expr val destInt32 : Expr -> int32 option //------------------------------------------------------------------------- // Primitives associated with quotations //------------------------------------------------------------------------- val mkQuotedExprTy : TcGlobals -> TType -> TType val mkRawQuotedExprTy : TcGlobals -> TType val mspec_Type_GetTypeFromHandle : ILGlobals -> ILMethodSpec val fspec_Missing_Value : ILGlobals -> ILFieldSpec val mkByteArrayTy : TcGlobals -> TType //------------------------------------------------------------------------- // Construct calls to some intrinsic functions //------------------------------------------------------------------------- val mkCallNewFormat : TcGlobals -> range -> TType -> TType -> TType -> TType -> TType -> Expr -> Expr val mkCallUnbox : TcGlobals -> range -> TType -> Expr -> Expr val mkCallGetGenericComparer : TcGlobals -> range -> Expr val mkCallGetGenericEREqualityComparer : TcGlobals -> range -> Expr val mkCallGetGenericPEREqualityComparer : TcGlobals -> range -> Expr val mkCallUnboxFast : TcGlobals -> range -> TType -> Expr -> Expr val canUseUnboxFast : TcGlobals -> TType -> bool val mkCallDispose : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeq : TcGlobals -> range -> TType -> Expr -> Expr val mkCallTypeTest : TcGlobals -> range -> TType -> Expr -> Expr val canUseTypeTestFast : TcGlobals -> TType -> bool val mkCallTypeOf : TcGlobals -> range -> TType -> Expr val mkCallTypeDefOf : TcGlobals -> range -> TType -> Expr val mkCallCreateInstance : TcGlobals -> range -> TType -> Expr val mkCallCreateEvent : TcGlobals -> range -> TType -> TType -> Expr -> Expr -> Expr -> Expr val mkCallArrayGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallArray2DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkCallArray3DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr val mkCallArray4DGet : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr -> Expr -> Expr val mkCallRaise : TcGlobals -> range -> TType -> Expr -> Expr val mkCallGenericComparisonWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkCallGenericEqualityEROuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallEqualsOperator : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallGenericEqualityWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr val mkCallGenericHashWithComparerOuter : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallUnpickleQuotation : TcGlobals -> range -> Expr -> Expr -> Expr -> Expr -> Expr val mkCallCastQuotation : TcGlobals -> range -> TType -> Expr -> Expr val mkCallLiftValue : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeqCollect : TcGlobals -> range -> TType -> TType -> Expr -> Expr -> Expr val mkCallSeqUsing : TcGlobals -> range -> TType -> TType -> Expr -> Expr -> Expr val mkCallSeqDelay : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeqAppend : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallSeqFinally : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallSeqGenerated : TcGlobals -> range -> TType -> Expr -> Expr -> Expr val mkCallSeqOfFunctions : TcGlobals -> range -> TType -> TType -> Expr -> Expr -> Expr -> Expr val mkCallSeqToArray : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeqToList : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeqMap : TcGlobals -> range -> TType -> TType -> Expr -> Expr -> Expr val mkCallSeqSingleton : TcGlobals -> range -> TType -> Expr -> Expr val mkCallSeqEmpty : TcGlobals -> range -> TType -> Expr val mkILAsmCeq : TcGlobals -> range -> Expr -> Expr -> Expr val mkILAsmClt : TcGlobals -> range -> Expr -> Expr -> Expr val mkCallFailInit : TcGlobals -> range -> Expr val mkCallFailStaticInit : TcGlobals -> range -> Expr val mkCallCheckThis : TcGlobals -> range -> TType -> Expr -> Expr val mkCase : Test * DecisionTree -> DecisionTreeCase val mkCallQuoteToLinqLambdaExpression : TcGlobals -> range -> TType -> Expr -> Expr val mkCallGetQuerySourceAsEnumerable : TcGlobals -> range -> TType -> TType -> Expr -> Expr val mkCallNewQuerySource : TcGlobals -> range -> TType -> TType -> Expr -> Expr //------------------------------------------------------------------------- // operations primarily associated with the optimization to fix // up loops to generate .NET code that does not include array bound checks //------------------------------------------------------------------------- val mkDecr : TcGlobals -> range -> Expr -> Expr val mkIncr : TcGlobals -> range -> Expr -> Expr val mkLdlen : TcGlobals -> range -> Expr -> Expr val mkLdelem : TcGlobals -> range -> TType -> Expr -> Expr -> Expr //------------------------------------------------------------------------- // Analyze attribute sets //------------------------------------------------------------------------- val HasILAttribute : ILTypeRef -> ILAttributes -> bool val TryDecodeILAttribute : TcGlobals -> ILTypeRef -> ILScopeRef option -> ILAttributes -> (ILAttribElem list * ILAttributeNamedArg list) option val TryFindILAttribute : Env.BuiltinAttribInfo -> ILAttributes -> bool val IsMatchingFSharpAttribute : TcGlobals -> Env.BuiltinAttribInfo -> Attrib -> bool val HasFSharpAttribute : TcGlobals -> Env.BuiltinAttribInfo -> Attribs -> bool val TryFindFSharpAttribute : TcGlobals -> Env.BuiltinAttribInfo -> Attribs -> Attrib option val TryFindFSharpBoolAttribute : TcGlobals -> Env.BuiltinAttribInfo -> Attribs -> bool option val TryFindFSharpStringAttribute : TcGlobals -> Env.BuiltinAttribInfo -> Attribs -> string option val TryFindFSharpInt32Attribute : TcGlobals -> Env.BuiltinAttribInfo -> Attribs -> int32 option #if EXTENSIONTYPING /// returns Some(assemblyName) for success val TryDecodeTypeProviderAssemblyAttr : ILAttribute -> string option #endif val IsSignatureDataVersionAttr : ILAttribute -> bool val ILThingHasExtensionAttribute : ILAttributes -> bool val TryFindAutoOpenAttr : ILAttribute -> string option val TryFindInternalsVisibleToAttr : ILAttribute -> string option val IsMatchingSignatureDataVersionAttr : ILVersionInfo -> ILAttribute -> bool val mkCompilationMappingAttr : TcGlobals -> int -> ILAttribute val mkCompilationMappingAttrWithSeqNum : TcGlobals -> int -> int -> ILAttribute val mkCompilationMappingAttrWithVariantNumAndSeqNum : TcGlobals -> int -> int -> int -> ILAttribute val mkCompilationArgumentCountsAttr : TcGlobals -> int list -> ILAttribute val mkCompilationSourceNameAttr : TcGlobals -> string -> ILAttribute val mkSignatureDataVersionAttr : TcGlobals -> ILVersionInfo -> ILAttribute val mkCompilerGeneratedAttr : TcGlobals -> int -> ILAttribute //------------------------------------------------------------------------- // More common type construction //------------------------------------------------------------------------- val isByrefTy : TcGlobals -> TType -> bool val destByrefTy : TcGlobals -> TType -> TType val isByrefLikeTyconRef : TcGlobals -> TyconRef -> bool val isByrefLikeTy : TcGlobals -> TType -> bool //------------------------------------------------------------------------- // Tuple constructors/destructors //------------------------------------------------------------------------- val isTupleExpr : Expr -> bool val tryDestTuple : Expr -> Exprs val mkTupled : TcGlobals -> range -> Exprs -> TType list -> Expr val mkTupledNoTypes : TcGlobals -> range -> Exprs -> Expr val mkTupledTy : TcGlobals -> TType list -> TType val mkTupledVarsTy : TcGlobals -> Val list -> TType val mkTupledVars : TcGlobals -> range -> Val list -> Expr val mkMethodTy : TcGlobals -> TType list list -> TType -> TType //------------------------------------------------------------------------- // //------------------------------------------------------------------------- val AdjustValForExpectedArity : TcGlobals -> range -> ValRef -> ValUseFlag -> ValReprInfo -> Expr * TType val AdjustValToTopVal : Val -> ParentRef -> ValReprInfo -> unit val LinearizeTopMatch : TcGlobals -> ParentRef -> Expr -> Expr val AdjustPossibleSubsumptionExpr : TcGlobals -> Expr -> Exprs -> (Expr * Exprs) option val NormalizeAndAdjustPossibleSubsumptionExprs : TcGlobals -> Expr -> Expr //------------------------------------------------------------------------- // XmlDoc signatures, used by both VS mode and XML-help emit //------------------------------------------------------------------------- val buildAccessPath : CompilationPath option -> string val XmlDocArgsEnc : TcGlobals -> Typars * Typars -> TType list -> string val XmlDocSigOfVal : TcGlobals -> string -> Val -> string val XmlDocSigOfUnionCase : string -> string -> string -> string val XmlDocSigOfField : string -> string -> string -> string val XmlDocSigOfTycon : string -> Tycon -> string val XmlDocSigOfSubModul : string -> string val XmlDocSigOfEntity : EntityRef -> string //--------------------------------------------------------------------------- // Resolve static optimizations //------------------------------------------------------------------------- val DecideStaticOptimizations : Env.TcGlobals -> StaticOptimization list -> int val mkStaticOptimizationExpr : Env.TcGlobals -> StaticOptimization list * Expr * Expr * range -> Expr //--------------------------------------------------------------------------- // Build for loops //------------------------------------------------------------------------- val mkFastForLoop : Env.TcGlobals -> SequencePointInfoForForLoop * range * Val * Expr * bool * Expr * Expr -> Expr //--------------------------------------------------------------------------- // Active pattern helpers //------------------------------------------------------------------------- type ActivePatternElemRef with member Name : string val TryGetActivePatternInfo : ValRef -> PrettyNaming.ActivePatternInfo option val mkChoiceCaseRef : Env.TcGlobals -> range -> int -> int -> UnionCaseRef type PrettyNaming.ActivePatternInfo with member Names : string list member IsTotal: bool member ResultType : Env.TcGlobals -> range -> TType list -> TType member OverallType : Env.TcGlobals -> range -> TType -> TType list -> TType //--------------------------------------------------------------------------- // Structural rewrites //------------------------------------------------------------------------- [] type ExprRewritingEnv = {PreIntercept: ((Expr -> Expr) -> Expr -> Expr option) option; PostTransform: Expr -> Expr option; IsUnderQuotations: bool } val RewriteExpr : ExprRewritingEnv -> Expr -> Expr val RewriteImplFile : ExprRewritingEnv -> TypedImplFile -> TypedImplFile val IsGenericValWithGenericContraints: TcGlobals -> Val -> bool type Entity with member HasInterface : TcGlobals -> TType -> bool member HasOverride : TcGlobals -> string -> TType list -> bool type EntityRef with member HasInterface : TcGlobals -> TType -> bool member HasOverride : TcGlobals -> string -> TType list -> bool val (|AttribBitwiseOrExpr|_|) : TcGlobals -> Expr -> (Expr * Expr) option val (|EnumExpr|_|) : TcGlobals -> Expr -> Expr option val (|TypeOfExpr|_|) : TcGlobals -> Expr -> TType option val (|TypeDefOfExpr|_|) : TcGlobals -> Expr -> TType option val EvalAttribArg: TcGlobals -> Expr -> Expr val EvaledAttribExprEquality : TcGlobals -> Expr -> Expr -> bool val IsSimpleSyntacticConstantExpr: TcGlobals -> Expr -> bool val (|ExtractAttribNamedArg|_|) : string -> AttribNamedArg list -> AttribExpr option val (|AttribInt32Arg|_|) : AttribExpr -> int32 option val (|AttribInt16Arg|_|) : AttribExpr -> int16 option val (|AttribBoolArg|_|) : AttribExpr -> bool option val (|AttribStringArg|_|) : AttribExpr -> string option val (|Int32Expr|_|) : Expr -> int32 option /// Determines types that are potentially known to satisfy the 'comparable' constraint and returns /// a set of residual types that must also satisfy the constraint val (|SpecialComparableHeadType|_|) : TcGlobals -> TType -> TType list option val (|SpecialEquatableHeadType|_|) : TcGlobals -> TType -> TType list option val (|SpecialNotEquatableHeadType|_|) : TcGlobals -> TType -> unit option val DetectFastIntegerForLoops : TcGlobals -> Expr -> Expr val TryEliminateDesugaredConstants : TcGlobals -> range -> Const -> Expr option val ValIsExplicitImpl : TcGlobals -> Val -> bool val ValRefIsExplicitImpl : TcGlobals -> ValRef -> bool val (|LinearMatchExpr|_|) : Expr -> (SequencePointInfoForBinding * range * DecisionTree * DecisionTreeTarget * Expr * SequencePointInfoForTarget * range * TType) option val rebuildLinearMatchExpr : (SequencePointInfoForBinding * range * DecisionTree * DecisionTreeTarget * Expr * SequencePointInfoForTarget * range * TType) -> Expr val mkCoerceIfNeeded : TcGlobals -> tgtTy: TType -> srcTy: TType -> Expr -> Expr val (|InnerExprPat|) : Expr -> Expr fsharp-3.0.34/src/fsharp/tainted.fs0000775000175000017500000001470612260314606016137 0ustar chrischrisnamespace Microsoft.FSharp.Compiler #if EXTENSIONTYPING open System open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Core.CompilerServices open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System.Reflection open System.Collections.Generic open ErrorLogger type internal TypeProviderError ( errNum : int, tpDesignation : string, m:Microsoft.FSharp.Compiler.Range.range, errors : string list, typeNameContext : string option, methodNameContext : string option ) = inherit System.Exception() new((errNum, msg : string), tpDesignation,m) = TypeProviderError(errNum, tpDesignation, m, [msg]) new(errNum, tpDesignation, m, messages : seq) = TypeProviderError(errNum, tpDesignation, m, List.ofSeq messages, None, None) member this.Number = errNum member this.Range = m override this.Message = match errors with | [text] -> text | inner -> // imitates old-fashioned behavior with merged text // usually should not fall into this case (only if someone takes Message directly instead of using Iter) inner |> String.concat Environment.NewLine member this.MapText(f, tpDesignation, m) = let (errNum : int), _ = f "" new TypeProviderError(errNum, tpDesignation, m, (Seq.map (f >> snd) errors)) member this.WithContext(typeNameContext:string, methodNameContext:string) = new TypeProviderError(errNum, tpDesignation, m, errors, Some typeNameContext, Some methodNameContext) // .Message is just the error, whereas .ContextualErrorMessage has contextual prefix information // for example if InvokeCode in provided method is not set or has value that cannot be translated -then initial TPE will be wrapped in // TPE having type\method name as contextual information // without context: Type Provider 'TP' has reported the error: MSG // with context: Type Provider 'TP' has reported the error in method M of type T: MSG member this.ContextualErrorMessage= match typeNameContext, methodNameContext with | Some tc, Some mc -> let _,msgWithPrefix = FSComp.SR.etProviderErrorWithContext(tpDesignation, tc, mc, this.Message) msgWithPrefix | _ -> let _,msgWithPrefix = FSComp.SR.etProviderError(tpDesignation, this.Message) msgWithPrefix /// provides uniform way to handle plain and composite instances of TypeProviderError member this.Iter f = match errors with | [_] -> f this | errors -> for msg in errors do f (new TypeProviderError(errNum, tpDesignation, m, [msg], typeNameContext, methodNameContext)) type TaintedContext = { TypeProvider : ITypeProvider; TypeProviderAssemblyRef : ILScopeRef } [][] type internal Tainted<'T> (context : TaintedContext, value : 'T) = do match box context.TypeProvider with | null -> assert false failwith "null ITypeProvider in Tainted constructor" | _ -> () member this.TypeProviderDesignation = context.TypeProvider.GetType().FullName member this.TypeProviderAssemblyRef = context.TypeProviderAssemblyRef member this.Protect f (range:range) = try f value with | :? TypeProviderError -> reraise() | :? AggregateException as ae -> let errNum,_ = FSComp.SR.etProviderError("", "") let messages = [for e in ae.InnerExceptions -> e.Message] raise <| TypeProviderError(errNum, this.TypeProviderDesignation, range, messages) | e -> let errNum,_ = FSComp.SR.etProviderError("", "") raise <| TypeProviderError((errNum, e.Message), this.TypeProviderDesignation, range) member this.TypeProvider = Tainted<_>(context, context.TypeProvider) member this.PApply(f,range:range) = let u = this.Protect f range Tainted(context, u) member this.PApply2(f,range:range) = let u1,u2 = this.Protect f range Tainted(context, u1), Tainted(context, u2) member this.PApply3(f,range:range) = let u1,u2,u3 = this.Protect f range Tainted(context, u1), Tainted(context, u2), Tainted(context, u3) member this.PApply4(f,range:range) = let u1,u2,u3,u4 = this.Protect f range Tainted(context, u1), Tainted(context, u2), Tainted(context, u3), Tainted(context, u4) member this.PApplyNoFailure f = this.PApply (f, range0) member this.PApplyWithProvider(f,range:range) = let u = this.Protect (fun x -> f (x,context.TypeProvider)) range Tainted(context, u) member this.PApplyArray(f,methodName,range:range) = let a = this.Protect f range match a with | null -> raise <| TypeProviderError(FSComp.SR.etProviderReturnedNull(methodName), this.TypeProviderDesignation, range) | _ -> a |> Array.map (fun u -> Tainted(context,u)) member this.PApplyOption(f,range:range) = let a = this.Protect f range match a with | None -> None | Some x -> Some (Tainted(context,x)) member this.PUntaint(f,range:range) = this.Protect f range member this.PUntaintNoFailure f = this.PUntaint(f, range0) /// Access the target object directly. Use with extreme caution. member this.AccessObjectDirectly = value static member CreateAll(providerSpecs : (ITypeProvider * ILScopeRef) list) = [for (tp,nm) in providerSpecs do yield Tainted<_>({ TypeProvider=tp; TypeProviderAssemblyRef=nm },tp) ] member this.OfType<'U> () = match box value with | :? 'U as u -> Some (Tainted(context,u)) | _ -> None member this.Coerce<'U> (range:range) = Tainted(context, this.Protect(fun value -> box value :?> 'U) range) module internal Tainted = let (|Null|_|) (p:Tainted<'T>) = if p.PUntaintNoFailure(fun p -> match p with null -> true | _ -> false) then Some() else None let Eq (p:Tainted<'T>) (v:'T) = p.PUntaintNoFailure((fun pv -> pv = v)) let EqTainted (t1:Tainted<'T>) (t2:Tainted<'T>) = t1.PUntaintNoFailure(fun t1 -> t1 === t2.AccessObjectDirectly) let GetHashCodeTainted (t:Tainted<'T>) = t.PUntaintNoFailure(fun t -> hash t) #endif fsharp-3.0.34/src/fsharp/policy.4.3.FSharp.Core/0000775000175000017500000000000012260314606020015 5ustar chrischrisfsharp-3.0.34/src/fsharp/policy.4.3.FSharp.Core/Makefile.in0000664000175000017500000000151312260314606022062 0ustar chrischrisNAME=policy.4.3.FSharp.Core ASSEMBLY = $(NAME).dll DELAY_SIGN=1 srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make include $(topdir)/src/fsharp/targets.make # override the targets to build the assembly $(objdir)$(TARGET_2_0)/policy.4.3.FSharp.Core.dll: policy.4.3.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.4.3.FSharp.Core.dll.config $(@D) al /link:policy.4.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_2_0) $(objdir)$(TARGET_4_0)/policy.4.3.FSharp.Core.dll: policy.4.3.FSharp.Core.dll.config @mkdir -p $(@D) cp policy.4.3.FSharp.Core.dll.config $(@D) al /link:policy.4.3.FSharp.Core.dll.config /out:$@ /delaysign /keyfile:$(topdir)msfinal.pub /version:$(VERSION_4_0) do-final: do-2-0 do-4-0 clean: clean-2-0 clean-4-0 install: install-lib-2 install-lib-4 fsharp-3.0.34/src/fsharp/policy.4.3.FSharp.Core/policy.4.3.FSharp.Core.dll.config0000664000175000017500000000071112260314606025630 0ustar chrischris fsharp-3.0.34/src/fsharp/FSharp.Compiler-proto/0000775000175000017500000000000012260314606020237 5ustar chrischrisfsharp-3.0.34/src/fsharp/FSharp.Compiler-proto/Makefile.in0000664000175000017500000001126012260314606022304 0ustar chrischrisNAME=FSharp.Compiler-proto ASSEMBLY = $(NAME).dll srcdir := @abs_srcdir@/ include @abs_top_builddir@/config.make CONFIG=proto FSC=$(bootstrapdir)fsc.exe FLAGS += --target:library DEFINES += \ --define:BUILDING_WITH_LKG \ --define:BUILDING_PROTO \ --define:COMPILER \ --define:NO_STRONG_NAMES \ --define:INCLUDE_METADATA_READER \ --define:INCLUDE_METADATA_WRITER REFERENCES += \ -r:$(bootstrapdir)FSharp.Core.dll \ -r:$(monogacdirXX)/System.Windows.Forms.dll sources = \ $(tmpdir)FSComp.fs \ ../../assemblyinfo/assemblyinfo.FSharp.Compiler.dll.fs \ ../../utils/sformat.fsi \ ../../utils/sformat.fs \ ../sr.fsi \ ../sr.fs \ ../../utils/prim-lexing.fsi \ ../../utils/prim-lexing.fs \ ../../utils/prim-parsing.fsi \ ../../utils/prim-parsing.fs \ ../../utils/resizearray.fsi \ ../../utils/resizearray.fs \ ../../utils/HashMultiMap.fsi \ ../../utils/HashMultiMap.fs \ ../../utils/TaggedCollections.fsi \ ../../utils/TaggedCollections.fs \ ../FlatList.fs \ ../../absil/illib.fs \ ../../utils/filename.fsi \ ../../utils/filename.fs \ ../../absil/zmap.fsi \ ../../absil/zmap.fs \ ../../absil/zset.fsi \ ../../absil/zset.fs \ ../../absil/bytes.fsi \ ../../absil/bytes.fs \ ../../absil/ildiag.fsi \ ../../absil/ildiag.fs \ ../ReferenceResolution.fs \ ../../absil/il.fsi \ ../../absil/il.fs \ ../../absil/ilx.fsi \ ../../absil/ilx.fs \ ../../absil/ilascii.fsi \ ../../absil/ilascii.fs \ ../../absil/ilprint.fsi \ ../../absil/ilprint.fs \ ../../absil/ilmorph.fsi \ ../../absil/ilmorph.fs \ ../../absil/ilsupp.fsi \ ../../absil/ilsupp.fs \ $(tmpdir)ilpars.fs \ $(tmpdir)illex.fs \ ../../absil/ilbinary.fsi \ ../../absil/ilbinary.fs \ ../lib.fs \ ../range.fsi \ ../range.fs \ ../ErrorLogger.fs \ ../InternalCollections.fsi \ ../InternalCollections.fs \ ../../absil/ilread.fsi \ ../../absil/ilread.fs \ ../../absil/ilwrite.fsi \ ../../absil/ilwrite.fs \ ../../absil/ilreflect.fs \ ../../utils/CompilerLocationUtils.fs \ ../PrettyNaming.fs \ ../../ilx/ilxsettings.fs \ ../../ilx/pubclo.fsi \ ../../ilx/pubclo.fs \ ../../ilx/cu_erase.fsi \ ../../ilx/cu_erase.fs \ ../InternalFileSystemUtils.fsi \ ../InternalFileSystemUtils.fs \ ../unilex.fsi \ ../unilex.fs \ ../layout.fsi \ ../layout.fs \ ../ast.fs \ $(tmpdir)pars.fs \ ../lexhelp.fsi \ ../lexhelp.fs \ $(tmpdir)lex.fs \ ../sreflect.fsi \ ../sreflect.fs \ ../QueueList.fs \ ../tast.fs \ ../env.fs \ ../tastops.fsi \ ../tastops.fs \ ../pickle.fsi \ ../pickle.fs \ ../lexfilter.fs \ ../import.fsi \ ../import.fs \ ../infos.fs \ ../NicePrint.fs \ ../augment.fsi \ ../augment.fs \ ../typrelns.fs \ ../patcompile.fsi \ ../patcompile.fs \ ../outcome.fsi \ ../outcome.fs \ ../csolve.fsi \ ../csolve.fs \ ../formats.fsi \ ../formats.fs \ ../nameres.fsi \ ../nameres.fs \ ../unsolved.fs \ ../creflect.fsi \ ../creflect.fs \ ../check.fsi \ ../check.fs \ ../tc.fsi \ ../tc.fs \ ../opt.fsi \ ../opt.fs \ ../detuple.fsi \ ../detuple.fs \ ../tlr.fsi \ ../tlr.fs \ ../lowertop.fs \ ../ilxgen.fsi \ ../ilxgen.fs \ ../TraceCall.fs \ ../build.fsi \ ../build.fs \ ../fscopts.fsi \ ../fscopts.fs \ ../vs/IncrementalBuild.fsi \ ../vs/IncrementalBuild.fs \ ../fsc.fs RESOURCES= \ $(tmpdir)FSStrings.resources \ $(tmpdir)FSComp.resources $(tmpdir)FSComp.fs $(tmpdir)FSComp.resources: ../FSComp.txt mono $(MONO_OPTIONS) $(FSSRGEN) $< $(tmpdir)FSComp.fs $(tmpdir)FSComp.resx resgen $(tmpdir)FSComp.resx $(tmpdir)FSComp.resources $(tmpdir)FSStrings.resources: ../FSStrings.resx resgen $< $@ $(tmpdir)lex.fs: ../lex.fsl mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode @-mkdir -p ../FSharp.Compiler/.libs/ cp -p $(tmpdir)lex.fs* ../FSharp.Compiler/.libs/ $(tmpdir)illex.fs: ../../absil/illex.fsl mono $(MONO_OPTIONS) $(FSLEX) $< -o $@ --lexlib Internal.Utilities.Text.Lexing --unicode @-mkdir -p ../FSharp.Compiler/.libs/ cp -p $(tmpdir)illex.fs* ../FSharp.Compiler/.libs/ $(tmpdir)pars.fs: ../pars.fsy mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --open Microsoft.FSharp.Compiler --module Microsoft.FSharp.Compiler.Parser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time" @-mkdir -p ../FSharp.Compiler/.libs/ cp -p $(tmpdir)pars.fs* ../FSharp.Compiler/.libs/ $(tmpdir)ilpars.fs: ../../absil/ilpars.fsy mono $(MONO_OPTIONS) $(FSYACC) $< -o $@ --internal --module Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing | tee $@.report | grep "time" @-mkdir -p ../FSharp.Compiler/.libs/ cp -p $(tmpdir)ilpars.fs* ../FSharp.Compiler/.libs/ do-proto: do-4-0 clean: clean-4-0 include $(topdir)/src/fsharp/targets.make fsharp-3.0.34/src/fsharp/FSharp.Compiler-proto/FSharp.Compiler-proto.fsproj0000664000175000017500000003440312260314606025565 0ustar chrischris $(MSBuildProjectDirectory)\..\.. Proto 10.0.0 2.0 False AnyCPU {33E0FB8C-93DC-4AD7-9DCD-9FBDA6C2F061} Library FSharp.Compiler-proto BUILDING_PROTO;BUILDING_WITH_LKG;COMPILER;INCLUDE_METADATA_READER;INCLUDE_METADATA_WRITER;$(DefineConstants) $(NoWarn);35;44;62;9;60;86;47;1203 LKG true $(OtherFlags) --warnon:1182 v4.0 FSComp.txt --lexlib Internal.Utilities.Text.Lexing lex.fsl --lexlib Internal.Utilities.Text.Lexing illex.fsl Microsoft.FSharp.Compiler.Parser Microsoft.FSharp.Compiler --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing pars.fsy Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser Microsoft.FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing ilpars.fsy assemblyinfo.FSharp.Compiler.dll.fs sformat.fsi sformat.fs sr.fsi sr.fs prim-lexing.fsi prim-lexing.fs prim-parsing.fsi prim-parsing.fs resizearray.fsi resizearray.fs HashMultiMap.fsi HashMultiMap.fs TaggedCollections.fsi TaggedCollections.fs FlatList.fs illib.fs filename.fsi filename.fs zmap.fsi zmap.fs zset.fsi zset.fs bytes.fsi bytes.fs ildiag.fsi ildiag.fs ReferenceResolution.fs il.fsi il.fs ilx.fsi ilx.fs ilascii.fsi ilascii.fs ilprint.fsi ilprint.fs ilmorph.fsi ilmorph.fs ilsupp.fsi ilsupp.fs ilbinary.fsi ilbinary.fs lib.fs range.fsi range.fs ErrorLogger.fs InternalCollections.fsi InternalCollections.fs ilread.fsi ilread.fs ilwrite.fsi ilwrite.fs ilreflect.fs CompilerLocationUtils.fs PrettyNaming.fs ilxsettings.fs pubclo.fsi pubclo.fs cu_erase.fs InternalFileSystemUtils.fsi InternalFileSystemUtils.fs unilex.fsi unilex.fs layout.fsi layout.fs ast.fs lexhelp.fsi lexhelp.fs sreflect.fsi sreflect.fs QueueList.fs tast.fs env.fs tastops.fsi tastops.fs pickle.fsi pickle.fs lexfilter.fs import.fsi import.fs infos.fs NicePrint.fs augment.fsi augment.fs typrelns.fs patcompile.fsi patcompile.fs outcome.fsi outcome.fs csolve.fsi csolve.fs formats.fsi formats.fs nameres.fsi nameres.fs unsolved.fs creflect.fsi creflect.fs check.fsi check.fs tc.fsi tc.fs opt.fsi opt.fs detuple.fsi detuple.fs tlr.fsi tlr.fs lowertop.fs ilxgen.fsi ilxgen.fs TraceCall.fsi TraceCall.fs build.fsi build.fs fscopts.fsi fscopts.fs IncrementalBuild.fsi IncrementalBuild.fs fsc.fs fsharp-3.0.34/src/fsharp/sreflect.fsi0000775000175000017500000001221112260314606016454 0ustar chrischris //---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Code to pickle out quotations in the quotation binary format. module internal Microsoft.FSharp.Compiler.QuotationPickler #nowarn "1178" // The struct, record or union type 'internal_instr_extension' is not structurally comparable because the type open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Bytes open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.Lib type TypeData type TypeVarData = { tvName: string } type NamedTypeData = { tcName: string; tcAssembly: string } val mkVarTy : int -> TypeData val mkFunTy : (TypeData * TypeData) -> TypeData val mkArrayTy : (int * TypeData ) -> TypeData val mkILNamedTy : (NamedTypeData * TypeData list) -> TypeData type ExprData type VarData type CtorData = { ctorParent: NamedTypeData; ctorArgTypes: TypeData list; } type MethodData = { methParent: NamedTypeData; methName: string; methArgTypes: TypeData list; methRetType: TypeData; numGenericArgs: int } type ModuleDefnData = { Module: NamedTypeData; Name: string; IsProperty: bool } type MethodBaseData = | ModuleDefn of ModuleDefnData | Method of MethodData | Ctor of CtorData type FieldData = NamedTypeData * string type RecdFieldData = NamedTypeData * string type PropInfoData = NamedTypeData * string * TypeData * TypeData list val mkVar : int -> ExprData val mkThisVar : TypeData -> ExprData val mkHole : TypeData * int -> ExprData val mkApp : ExprData * ExprData -> ExprData val mkLambda : VarData * ExprData -> ExprData val mkQuote : ExprData -> ExprData val mkCond : ExprData * ExprData * ExprData -> ExprData val mkModuleValueApp : NamedTypeData * string * bool * TypeData list * ExprData list list -> ExprData val mkLetRec : (VarData * ExprData) list * ExprData -> ExprData val mkLet : (VarData * ExprData) * ExprData -> ExprData val mkRecdMk : NamedTypeData * TypeData list * ExprData list -> ExprData val mkRecdGet : RecdFieldData * TypeData list * ExprData list -> ExprData val mkRecdSet : RecdFieldData * TypeData list * ExprData list -> ExprData val mkSum : (NamedTypeData * string) * TypeData list * ExprData list -> ExprData val mkSumFieldGet : (NamedTypeData * string * int) * TypeData list * ExprData -> ExprData val mkSumTagTest : (NamedTypeData * string) * TypeData list * ExprData -> ExprData val mkTuple : TypeData * ExprData list -> ExprData val mkTupleGet : TypeData * int * ExprData -> ExprData val mkCoerce : TypeData * ExprData -> ExprData val mkNewArray : TypeData * ExprData list -> ExprData val mkTypeTest : TypeData * ExprData -> ExprData val mkAddressSet : ExprData * ExprData -> ExprData val mkVarSet : ExprData * ExprData -> ExprData val mkUnit : unit -> ExprData val mkNull : TypeData -> ExprData val mkDefaultValue : TypeData -> ExprData val mkBool : bool * TypeData -> ExprData val mkString : string * TypeData -> ExprData val mkSingle : float32 * TypeData -> ExprData val mkDouble : float * TypeData -> ExprData val mkChar : char * TypeData -> ExprData val mkSByte : sbyte * TypeData -> ExprData val mkByte : byte * TypeData -> ExprData val mkInt16 : int16 * TypeData -> ExprData val mkUInt16 : uint16 * TypeData -> ExprData val mkInt32 : int32 * TypeData -> ExprData val mkUInt32 : uint32 * TypeData -> ExprData val mkInt64 : int64 * TypeData -> ExprData val mkUInt64 : uint64 * TypeData -> ExprData val mkAddressOf : ExprData -> ExprData val mkSequential : ExprData * ExprData -> ExprData val mkForLoop : ExprData * ExprData * ExprData -> ExprData val mkWhileLoop : ExprData * ExprData -> ExprData val mkTryFinally : ExprData * ExprData -> ExprData val mkTryWith : ExprData * VarData * ExprData * VarData * ExprData -> ExprData val mkDelegate : TypeData * ExprData -> ExprData val mkPropGet : PropInfoData * TypeData list * ExprData list -> ExprData val mkPropSet : PropInfoData * TypeData list * ExprData list -> ExprData val mkFieldGet : FieldData * TypeData list * ExprData list -> ExprData val mkFieldSet : FieldData * TypeData list * ExprData list -> ExprData val mkCtorCall : CtorData * TypeData list * ExprData list -> ExprData val mkMethodCall : MethodData * TypeData list * ExprData list -> ExprData val mkAttributedExpression : ExprData * ExprData -> ExprData val pickle : (ExprData -> byte[]) val PickleDefns : ((MethodBaseData * ExprData) list -> byte[]) val pickledDefinitionsResourceNameBase : string val freshVar : string * TypeData * bool -> VarData fsharp-3.0.34/src/fsharp/lib.fs0000775000175000017500000006400312260314606015250 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.Lib open System.IO open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library /// is this the developer-debug build? let debug = false let verbose = false let progress = ref false let tracking = ref false // intended to be a general hook to control diagnostic output when tracking down bugs let condition _s = #if SILVERLIGHT false #else try (System.Environment.GetEnvironmentVariable(_s) <> null) with _ -> false #endif let dispose (x:System.IDisposable) = match x with null -> () | x -> x.Dispose() //------------------------------------------------------------------------- // Library: bits //------------------------------------------------------------------------ module Bits = let b0 n = (n &&& 0xFF) let b1 n = ((n >>> 8) &&& 0xFF) let b2 n = ((n >>> 16) &&& 0xFF) let b3 n = ((n >>> 24) &&& 0xFF) let rec pown32 n = if n = 0 then 0 else (pown32 (n-1) ||| (1 <<< (n-1))) let rec pown64 n = if n = 0 then 0L else (pown64 (n-1) ||| (1L <<< (n-1))) let mask32 m n = (pown32 n) <<< m let mask64 m n = (pown64 n) <<< m //------------------------------------------------------------------------- // Library: files //------------------------------------------------------------------------ module Filename = let fullpath cwd nm = let p = if FileSystem.IsPathRootedShim(nm) then nm else Path.Combine(cwd,nm) try FileSystem.GetFullPathShim(p) with | :? System.ArgumentException | :? System.ArgumentNullException | :? System.NotSupportedException | :? System.IO.PathTooLongException | :? System.Security.SecurityException -> p let hasSuffixCaseInsensitive suffix filename = (* case-insensitive *) Filename.checkSuffix (String.lowercase filename) (String.lowercase suffix) let isDll file = hasSuffixCaseInsensitive ".dll" file //------------------------------------------------------------------------- // Library: Orders //------------------------------------------------------------------------ module Bool = let order = LanguagePrimitives.FastGenericComparer module Int32 = let order = LanguagePrimitives.FastGenericComparer module Int64 = let order = LanguagePrimitives.FastGenericComparer module Pair = let order (compare1: IComparer<'T1>, compare2: IComparer<'T2>) = { new IComparer<'T1 * 'T2> with member __.Compare((a1,a2),(aa1,aa2)) = let res1 = compare1.Compare (a1, aa1) if res1 <> 0 then res1 else compare2.Compare (a2, aa2) } type NameSet = Zset [] module NameSet = let ofList l : NameSet = List.foldBack Zset.add l (Zset.empty String.order) [] module NameMap = let domain m = Map.foldBack (fun x _ acc -> Zset.add x acc) m (Zset.empty String.order) let domainL m = Zset.elements (domain m) (* //------------------------------------------------------------------------- // Library: Atoms //------------------------------------------------------------------------ type AtomTable = { LookupTable : Dictionary EncodeTable : Dictionary } member at.Encode(name:string) = let mutable res = 0 let idx = if at.EncodeTable.TryGetValue(name, &res) then res else let idx = at.EncodeTable.Count at.LookupTable.[idx] <- name at.EncodeTable.[name] <- idx idx Atom(res #if DEBUG ,at #endif ) and Atom internal (idx:int32 #if DEBUG ,_provider:AtomTable #endif ) = member __.Index = idx member __.Deref(provider: AtomTable) = #if DEBUG assert (provider = _provider) assert (provider.LookupTable.ContainsKey idx) #endif provider.LookupTable.[idx] *) //--------------------------------------------------------------------------- // Library: Pre\Post checks //------------------------------------------------------------------------- module Check = /// Throw System.InvalidOperationException() if argument is None. /// If there is a value (e.g. Some(value)) then value is returned. let NotNone argname (arg:'T option) : 'T = match arg with | None -> raise (new System.InvalidOperationException(argname)) | Some x -> x /// Throw System.ArgumentNullException() if argument is null. let ArgumentNotNull arg argname = match box(arg) with | null -> raise (new System.ArgumentNullException(argname)) | _ -> () /// Throw System.ArgumentNullException() if array argument is null. /// Throw System.ArgumentOutOfRangeException() is array argument is empty. let ArrayArgumentNotNullOrEmpty (arr:'T[]) argname = ArgumentNotNull arr argname if (0 = arr.Length) then raise (new System.ArgumentOutOfRangeException(argname)) /// Throw System.ArgumentNullException() if string argument is null. /// Throw System.ArgumentOutOfRangeException() is string argument is empty. let StringArgumentNotNullOrEmpty (s:string) argname = ArgumentNotNull s argname if s.Length = 0 then raise (new System.ArgumentNullException(argname)) //------------------------------------------------------------------------- // Library //------------------------------------------------------------------------ type IntMap<'T> = Zmap module IntMap = let empty () = Zmap.empty Int32.order let add k v (t:IntMap<'T>) = Zmap.add k v t let find k (t:IntMap<'T>) = Zmap.find k t let tryFind k (t:IntMap<'T>) = Zmap.tryFind k t let remove k (t:IntMap<'T>) = Zmap.remove k t let mem k (t:IntMap<'T>) = Zmap.mem k t let iter f (t:IntMap<'T>) = Zmap.iter f t let map f (t:IntMap<'T>) = Zmap.map f t let fold f (t:IntMap<'T>) z = Zmap.fold f t z //------------------------------------------------------------------------- // Library: generalized association lists //------------------------------------------------------------------------ module ListAssoc = /// Treat a list of key-value pairs as a lookup collection. /// This function looks up a value based on a match from the supplied /// predicate function. let rec find f x l = match l with | [] -> notFound() | (x',y)::t -> if f x x' then y else find f x t /// Treat a list of key-value pairs as a lookup collection. /// This function returns true if two keys are the same according to the predicate /// function passed in. let rec containsKey (f:'key->'key->bool) (x:'key) (l:('key*'value) list) : bool = match l with | [] -> false | (x',_y)::t -> f x x' || containsKey f x t //------------------------------------------------------------------------- // Library: lists as generalized sets //------------------------------------------------------------------------ module ListSet = (* NOTE: O(n)! *) let rec contains f x l = match l with | [] -> false | x'::t -> f x x' || contains f x t (* NOTE: O(n)! *) let insert f x l = if contains f x l then l else x::l let unionFavourRight f l1 l2 = match l1, l2 with | _, [] -> l1 | [], _ -> l2 | _ -> List.foldBack (insert f) l1 l2 (* nb. foldBack to preserve natural orders *) (* NOTE: O(n)! *) let rec private findIndexAux eq x l n = match l with | [] -> notFound() | (h::t) -> if eq h x then n else findIndexAux eq x t (n+1) let findIndex eq x l = findIndexAux eq x l 0 let rec remove f x l = match l with | (h::t) -> if f x h then t else h:: remove f x t | [] -> [] (* NOTE: quadratic! *) let rec subtract f l1 l2 = match l2 with | (h::t) -> subtract f (remove (fun y2 y1 -> f y1 y2) h l1) t | [] -> l1 let isSubsetOf f l1 l2 = List.forall (fun x1 -> contains f x1 l2) l1 (* nb. preserve orders here: f must be applied to elements of l1 then elements of l2*) let isSupersetOf f l1 l2 = List.forall (fun x2 -> contains (fun y2 y1 -> f y1 y2) x2 l1) l2 let equals f l1 l2 = isSubsetOf f l1 l2 && isSupersetOf f l1 l2 let unionFavourLeft f l1 l2 = match l1,l2 with | _,[] -> l1 | [],_ -> l2 | _ -> l1 @ (subtract f l2 l1) (* NOTE: not tail recursive! *) let rec intersect f l1 l2 = match l2 with | (h::t) -> if contains f h l1 then h::intersect f l1 t else intersect f l1 t | [] -> [] (* NOTE: quadratic! *) // Note: if duplicates appear, keep the ones toward the _front_ of the list let setify f l = List.foldBack (insert f) (List.rev l) [] |> List.rev module FlatListSet = let remove f x l = FlatList.filter (fun y -> not (f x y)) l //------------------------------------------------------------------------- // Library: pairs //------------------------------------------------------------------------ let mapFoldFst f s (x,y) = let x',s = f s x in (x',y),s let mapFoldSnd f s (x,y) = let y',s = f s y in (x,y'),s let pair a b = a,b let p13 (x,_y,_z) = x let p23 (_x,y,_z) = y let p33 (_x,_y,z) = z let map1Of2 f (a1,a2) = (f a1,a2) let map2Of2 f (a1,a2) = (a1,f a2) let map1Of3 f (a1,a2,a3) = (f a1,a2,a3) let map2Of3 f (a1,a2,a3) = (a1,f a2,a3) let map3Of3 f (a1,a2,a3) = (a1,a2,f a3) let map3Of4 f (a1,a2,a3,a4) = (a1,a2,f a3,a4) let map4Of4 f (a1,a2,a3,a4) = (a1,a2,a3,f a4) let map5Of5 f (a1,a2,a3,a4,a5) = (a1,a2,a3,a4,f a5) let map6Of6 f (a1,a2,a3,a4,a5,a6) = (a1,a2,a3,a4,a5,f a6) let foldPair (f1,f2) acc (a1,a2) = f2 (f1 acc a1) a2 let fold1Of2 f1 acc (a1,_a2) = f1 acc a1 let foldTriple (f1,f2,f3) acc (a1,a2,a3) = f3 (f2 (f1 acc a1) a2) a3 let mapPair (f1,f2) (a1,a2) = (f1 a1, f2 a2) let mapTriple (f1,f2,f3) (a1,a2,a3) = (f1 a1, f2 a2, f3 a3) let fmap2Of2 f z (a1,a2) = let z,a2 = f z a2 in z,(a1,a2) module List = let noRepeats xOrder xs = let s = Zset.addList xs (Zset.empty xOrder) // build set Zset.elements s // get elements... no repeats let groupBy f (xs:list<'T>) = xs |> Seq.groupBy f |> Seq.map (map2Of2 Seq.toList) |> Seq.toList //--------------------------------------------------------------------------- // Zmap rebinds //------------------------------------------------------------------------- module Zmap = let force k mp = match Zmap.tryFind k mp with Some x -> x | None -> failwith "Zmap.force: lookup failed" let mapKey key f mp = match f (Zmap.tryFind key mp) with | Some fx -> Zmap.add key fx mp | None -> Zmap.remove key mp //--------------------------------------------------------------------------- // Zset //------------------------------------------------------------------------- module Zset = let ofList order xs = Zset.addList xs (Zset.empty order) // CLEANUP NOTE: move to Zset? let rec fixpoint f (s as s0) = let s = f s if Zset.equal s s0 then s0 (* fixed *) else fixpoint f s (* iterate *) //--------------------------------------------------------------------------- // Misc //------------------------------------------------------------------------- let equalOn f x y = (f x) = (f y) //--------------------------------------------------------------------------- // Buffer printing utilities //--------------------------------------------------------------------------- let bufs f = let buf = System.Text.StringBuilder 100 f buf; buf.ToString() let buff (os: TextWriter) f x = let buf = System.Text.StringBuilder 100 f buf x; os.Write(buf.ToString()) // Converts "\n" into System.Environment.NewLine before writing to os. See lib.fs:buff let writeViaBufferWithEnvironmentNewLines (os: TextWriter) f x = let buf = System.Text.StringBuilder 100 f buf x; let text = buf.ToString() let text = text.Replace("\n",System.Environment.NewLine) os.Write text //--------------------------------------------------------------------------- // Imperative Graphs //--------------------------------------------------------------------------- type GraphNode<'Data, 'Id> = { nodeId: 'Id; nodeData: 'Data; mutable nodeNeighbours: GraphNode<'Data, 'Id> list } type Graph<'Data, 'Id when 'Id : comparison and 'Id : equality> (nodeIdentity: ('Data -> 'Id), nodes: 'Data list, edges: ('Data * 'Data) list) = let edges = edges |> List.map (fun (v1,v2) -> nodeIdentity v1, nodeIdentity v2) let nodes = nodes |> List.map (fun d -> nodeIdentity d, { nodeId = nodeIdentity d; nodeData=d; nodeNeighbours=[] }) let tab = Map.ofList nodes let nodes = List.map snd nodes do for node in nodes do node.nodeNeighbours <- edges |> List.filter (fun (x,_y) -> x = node.nodeId) |> List.map (fun (_,nodeId) -> tab.[nodeId]) member g.GetNodeData nodeId = tab.[nodeId].nodeData member g.IterateCycles f = let rec trace path node = if List.exists (nodeIdentity >> (=) node.nodeId) path then f (List.rev path) else List.iter (trace (node.nodeData::path)) node.nodeNeighbours List.iter (fun node -> trace [] node) nodes #if OLDCODE member g.DepthFirstSearch() = let grey = ref Set.empty let time = ref 0 let forest = ref [] let backEdges = ref [] let discoveryTimes = ref Map.empty let finishingTimes = ref Map.empty nodes |> List.iter (fun n -> // build a dfsTree for each node in turn let treeEdges = ref [] let rec visit n1 = incr time; grey := Set.add n1.nodeId !grey; discoveryTimes := Map.add n1.nodeId !time !discoveryTimes; for n2 in n1.nodeNeighbours do if not ((!grey).Contains n2.nodeId) then treeEdges := (n1.nodeId,n2.nodeId) :: !treeEdges; visit(n2) else backEdges := (n1.nodeId,n2.nodeId) :: !backEdges incr time; finishingTimes := Map.add n1.nodeId !time !finishingTimes; () if not ((!grey).Contains n.nodeId) then visit(n); forest := (n.nodeId,!treeEdges) :: !forest); !forest, !backEdges, (fun n -> (!discoveryTimes).[n]), (fun n -> (!finishingTimes).[n]) // Present strongly connected components, in dependency order // Each node is assumed to have a self-edge member g.GetTopologicalSortStronglyConnectedComponents() = let forest, backEdges, discoveryTimes, finishingTimes = g.DepthFirstSearch() let nodeIds = List.map (fun n -> n.nodeId) nodes let nodesInDecreasingFinishingOrder = List.sortWith (fun n1 n2 -> -(compare (finishingTimes n1) (finishingTimes n2))) nodeIds let gT = Graph (nodeIdentity, List.map g.GetNodeData nodesInDecreasingFinishingOrder, List.map (fun (x,y) -> (g.GetNodeData y, g.GetNodeData x)) edges) let forest, backEdges, discoveryTimes, finishingTimes = gT.DepthFirstSearch() let scc (root,tree) = Set.add root (List.foldBack (fun (n1,n2) acc -> Set.add n1 (Set.add n2 acc)) tree Set.empty) let sccs = List.rev (List.map scc forest) List.map (Set.toList >> List.map g.GetNodeData) sccs #endif //--------------------------------------------------------------------------- // In some cases we play games where we use 'null' as a more efficient representation // in F#. The functions below are used to give initial values to mutable fields. // This is an unsafe trick, as it relies on the fact that the type of values // being placed into the slot never utilizes "null" as a representation. To be used with // with care. //---------------------------------------------------------------------------- // The following DEBUG code does not currently compile. //#if DEBUG //type 'T NonNullSlot = 'T option //let nullableSlotEmpty() = None //let nullableSlotFull(x) = Some x //#else type NonNullSlot<'T> = 'T let nullableSlotEmpty() = Unchecked.defaultof<'T> let nullableSlotFull x = x //#endif //--------------------------------------------------------------------------- // Caches, mainly for free variables //--------------------------------------------------------------------------- type cache<'T> = { mutable cacheVal: 'T NonNullSlot; } let newCache() = { cacheVal = nullableSlotEmpty() } let inline cached cache resf = match box cache.cacheVal with | null -> let res = resf() cache.cacheVal <- nullableSlotFull res; res | _ -> cache.cacheVal let inline cacheOptRef cache f = match !cache with | Some v -> v | None -> let res = f() cache := Some res; res // There is a bug in .NET Framework v2.0.52727 DD#153959 that very occasionally hits F# code. // It is related to recursive class loading in multi-assembly NGEN scenarios. The bug has been fixed but // not yet deployed. // The bug manifests itself as an ExecutionEngine failure or fast-fail process exit which comes // and goes depending on whether components are NGEN'd or not, e.g. 'ngen install FSharp.COmpiler.dll' // One workaround for the bug is to break NGEN loading and fixups into smaller fragments. Roughly speaking, the NGEN // loading process works by doing delayed fixups of references in NGEN code. This happens on a per-method // basis. For example, one manifestation is that a "print" before calling a method like Lexfilter.create gets // displayed but the corresponding "print" in the body of that function doesn't get displayed. In between, the NGEN // image loader is performing a whole bunch of fixups of the NGEN code for the body of that method, and also for // bodies of methods referred to by that method. That second bit is very important: the fixup causing the crash may // be a couple of steps down the dependency chain. // // One way to break work into smaller chunks is to put delays in the call chains, i.e. insert extra stack frames. That's // what the function 'delayInsertedToWorkaroundKnownNgenBug' is for. If you get this problem, try inserting // delayInsertedToWorkaroundKnownNgenBug "Delay1" (fun () -> ...) // at the top of the function that doesn't seem to be being called correctly. This will help you isolate out the problem // and may make the problem go away altogher. Enable the 'print' commands in that function too. let delayInsertedToWorkaroundKnownNgenBug s f = (* Some random code to prevent inlining of this function *) let res = ref 10 for i = 0 to 2 do res := !res + String.length s; done; if verbose then printf "------------------------executing NGEN bug delay '%s', calling 'f' --------------\n" s; let res = f() if verbose then printf "------------------------exiting NGEN bug delay '%s' --------------\n" s; res #if DUMPER type Dumper(x:obj) = [] member self.Dump = sprintf "%A" x #endif //--------------------------------------------------------------------------- // AsyncUtil //--------------------------------------------------------------------------- module internal AsyncUtil = open System open System.Threading open Microsoft.FSharp.Control /// Represents the reified result of an asynchronous computation [] type AsyncResult<'T> = | AsyncOk of 'T | AsyncException of exn | AsyncCanceled of OperationCanceledException static member Commit(res:AsyncResult<'T>) = Async.FromContinuations (fun (cont,econt,ccont) -> match res with | AsyncOk v -> cont v | AsyncException exn -> econt exn | AsyncCanceled exn -> ccont exn) /// When using .NET 4.0 you can replace this type by Task<'T> [] type AsyncResultCell<'T>() = let mutable result = None // The continuation for the result, if any let mutable savedConts = [] let syncRoot = new obj() // Record the result in the AsyncResultCell. // Ignore subsequent sets of the result. This can happen, e.g. for a race between // a cancellation and a success. member x.RegisterResult (res:AsyncResult<'T>) = let grabbedConts = lock syncRoot (fun () -> if result.IsSome then [] else result <- Some res; // Invoke continuations in FIFO order // Continuations that Async.FromContinuations provide do QUWI/SynchContext.Post, // so the order is not overly relevant but still. List.rev savedConts) let postOrQueue (sc:SynchronizationContext,cont) = match sc with | null -> ThreadPool.QueueUserWorkItem(fun _ -> cont res) |> ignore | sc -> sc.Post((fun _ -> cont res), state=null) // Run continuations outside the lock match grabbedConts with | [] -> () | [(sc,cont) as c] -> if SynchronizationContext.Current = sc then cont res else postOrQueue c | _ -> grabbedConts |> List.iter postOrQueue /// Get the reified result member private x.AsyncPrimitiveResult = Async.FromContinuations(fun (cont,_,_) -> let grabbedResult = lock syncRoot (fun () -> match result with | Some _ -> result | None -> // Otherwise save the continuation and call it in RegisterResult let sc = SynchronizationContext.Current savedConts <- (sc,cont)::savedConts None) // Run the action outside the lock match grabbedResult with | None -> () | Some res -> cont res) /// Get the result and commit it member x.AsyncResult = async { let! res = x.AsyncPrimitiveResult return! AsyncResult.Commit(res) } //--------------------------------------------------------------------------- // EnableHeapTerminationOnCorruption() //--------------------------------------------------------------------------- // USAGE: call UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() from "main()". // Note: This is not SDL required but recommended. module UnmanagedProcessExecutionOptions = open System open System.Runtime.InteropServices [] extern UIntPtr private GetProcessHeap() [] extern bool private HeapSetInformation( UIntPtr _HeapHandle, UInt32 _HeapInformationClass, UIntPtr _HeapInformation, UIntPtr _HeapInformationLength) [] extern UInt32 private GetLastError() // Translation of C# from http://swikb/v1/DisplayOnlineDoc.aspx?entryID=826 and copy in bug://5018 [] let EnableHeapTerminationOnCorruption() = if (System.Environment.OSVersion.Version.Major >= 6 && // If OS is Vista or higher System.Environment.Version.Major < 3) then // and CLR not 3.0 or higher // "The flag HeapSetInformation sets is available in Windows XP SP3 and later. // The data structure used for heap information is available on earlier versions of Windows. // The call will either return TRUE (found and set the flag) or false (flag not found). // Not a problem in native code, so the program will merrily continue running. // In managed code, the call to HeapSetInformation is a p/invoke. // If HeapSetInformation returns FALSE then an exception will be thrown. // If we are not running an OS which supports this (XP SP3, Vista, Server 2008, and Win7) // then the call should not be made." -- see bug://5018. // See also: // http://blogs.msdn.com/michael_howard/archive/2008/02/18/faq-about-heapsetinformation-in-windows-vista-and-heap-based-buffer-overruns.aspx let HeapEnableTerminationOnCorruption = 1u : uint32 if not (HeapSetInformation(GetProcessHeap(),HeapEnableTerminationOnCorruption,UIntPtr.Zero,UIntPtr.Zero)) then raise (System.Security.SecurityException( "Unable to enable unmanaged process execution option TerminationOnCorruption. " + "HeapSetInformation() returned FALSE; LastError = 0x" + GetLastError().ToString("X").PadLeft(8,'0') + ".")) fsharp-3.0.34/src/fsharp/ReferenceResolution.fsi0000664000175000017500000000717212260314606020636 0ustar chrischrisnamespace Viz /// This type exists to have a concrete 'Target' type for a DebuggerVisualizerAttribute. /// Ideally it would be out in its own assembly, but then the compiler would need to take a dependency on that assembly, so instead we /// pragmatically just shove this into the compiler assembly itself. type internal Visualizable = new : obj -> Visualizable member Data : obj /// assuming this assembly is already in the debuggee process, then Viz.Visualiable.Make(foo) in the Watch window will make a visualizer for foo static member Make : obj -> Visualizable namespace Microsoft.FSharp.Compiler module internal MSBuildResolver = exception ResolutionFailure /// Describes the location where the reference was found. type ResolvedFrom = | AssemblyFolders | AssemblyFoldersEx | TargetFrameworkDirectory | RawFileName | GlobalAssemblyCache | Path of string | Unknown /// Whether the resolve should follow compile-time rules or runtime rules. type ResolutionEnvironment = | CompileTimeLike | RuntimeLike // Don't allow stubbed-out reference assemblies | DesigntimeLike #if SILVERLIGHT #else val DotNetFrameworkReferenceAssembliesRootDirectory : string /// Information about a resolved file. type ResolvedFile = { /// Item specification itemSpec:string /// Location that the assembly was resolved from resolvedFrom:ResolvedFrom /// The long fusion name of the assembly fusionName:string /// The version of the assembly (like 4.0.0.0) version:string /// The name of the redist the assembly was found in redist:string /// Round-tripped baggage string baggage:string } /// Reference resolution results. All paths are fully qualified. type ResolutionResults = { /// Paths to primary references resolvedFiles:ResolvedFile array /// Paths to dependencies referenceDependencyPaths:string array /// Paths to related files (like .xml and .pdb) relatedPaths:string array /// Paths to satellite assemblies used for localization. referenceSatellitePaths:string array /// Additional files required to support multi-file assemblies. referenceScatterPaths:string array /// Paths to files that reference resolution recommend be copied to the local directory referenceCopyLocalPaths:string array /// Binding redirects that reference resolution recommends for the app.config file. suggestedBindingRedirects:string array } /// Callback for errors and warnings. type ErrorWarningCallbackSig = ((*code:*)string->(*message*)string->unit) val Resolve : resolutionEnvironment: ResolutionEnvironment * references:(string*(*baggage*)string)[] * targetFrameworkVersion:string * targetFrameworkDirectories:string list * targetProcessorArchitecture:string * outputDirectory:string * fsharpBinariesDir:string * explicitIncludeDirs:string list * implicitIncludeDir:string * frameworkRegistryBase:string * assemblyFoldersSuffix:string * assemblyFoldersConditions:string * logmessage:(string->unit) * logwarning:ErrorWarningCallbackSig * logerror:ErrorWarningCallbackSig -> ResolutionResults #endif fsharp-3.0.34/src/fsharp/FSInteractiveSettings.txt0000775000175000017500000000005212260314606021132 0ustar chrischris# FS Interactive.Settings resource stringsfsharp-3.0.34/src/fsharp/build.fs0000775000175000017500000105305612260314606015610 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Loading initial context, reporting errors etc. module internal Microsoft.FSharp.Compiler.Build open System open System.Text open System.IO open System.Collections.Generic open Internal.Utilities open Internal.Utilities.Text open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.Pickle open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler open Microsoft.FSharp.Compiler.TypeChecker open Microsoft.FSharp.Compiler.SR open Microsoft.FSharp.Compiler.DiagnosticMessage module Tc = Microsoft.FSharp.Compiler.TypeChecker module SR = Microsoft.FSharp.Compiler.SR open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.Compiler.Ast open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Tast open Microsoft.FSharp.Compiler.Tastops open Microsoft.FSharp.Compiler.Tastops.DebugPrint open Microsoft.FSharp.Compiler.Env open Microsoft.FSharp.Compiler.Lexhelp open Microsoft.FSharp.Compiler.Lib open Microsoft.FSharp.Compiler.Infos open Microsoft.FSharp.Compiler.ConstraintSolver open Microsoft.FSharp.Compiler.MSBuildResolver open Microsoft.FSharp.Compiler.Typrelns open Microsoft.FSharp.Compiler.Nameres open Microsoft.FSharp.Compiler.PrettyNaming open Internal.Utilities.FileSystem open Internal.Utilities.Collections open Internal.Utilities.Filename open Microsoft.FSharp.Compiler.Import #if EXTENSIONTYPING open Microsoft.FSharp.Compiler.ExtensionTyping open Microsoft.FSharp.Core.CompilerServices #endif open System.Runtime.CompilerServices #if DEBUG #if COMPILED_AS_LANGUAGE_SERVICE_DLL module internal CompilerService = #else module internal FullCompiler = #endif let showAssertForUnexpectedException = ref true #if COMPILED_AS_LANGUAGE_SERVICE_DLL open CompilerService #else open FullCompiler #endif #endif //---------------------------------------------------------------------------- // Some Globals //-------------------------------------------------------------------------- let sigSuffixes = [".mli";".fsi"] let mlCompatSuffixes = [".mli";".ml"] let implSuffixes = [".ml";".fs";".fsscript";".fsx"] let resSuffixes = [".resx"] let scriptSuffixes = [".fsscript";".fsx"] let doNotRequireNamespaceOrModuleSuffixes = [".mli";".ml"] @ scriptSuffixes let lightSyntaxDefaultExtensions : string list = [ ".fs";".fsscript";".fsx";".fsi" ] //---------------------------------------------------------------------------- // ERROR REPORTING //-------------------------------------------------------------------------- exception HashIncludeNotAllowedInNonScript of range exception HashReferenceNotAllowedInNonScript of range exception HashDirectiveNotAllowedInNonScript of range exception FileNameNotResolved of (*filename*) string * (*description of searched locations*) string * range exception AssemblyNotResolved of (*originalName*) string * range exception LoadedSourceNotFoundIgnoring of (*filename*) string * range exception MSBuildReferenceResolutionWarning of (*MSBuild warning code*)string * (*Message*)string * range exception MSBuildReferenceResolutionError of (*MSBuild warning code*)string * (*Message*)string * range exception DeprecatedCommandLineOptionFull of string * range exception DeprecatedCommandLineOptionForHtmlDoc of string * range exception DeprecatedCommandLineOptionSuggestAlternative of string * string * range exception DeprecatedCommandLineOptionNoDescription of string * range exception InternalCommandLineOption of string * range exception HashLoadedSourceHasIssues of (*warnings*) exn list * (*errors*) exn list * range exception HashLoadedScriptConsideredSource of range exception InvalidInternalsVisibleToAssemblyName of (*badName*)string * (*fileName option*) string option let RangeOfError(err:PhasedError) = let rec RangeFromException = function | ErrorFromAddingConstraint(_,err2,_) -> RangeFromException err2 #if EXTENSIONTYPING | ExtensionTyping.ProvidedTypeResolutionNoRange(e) -> RangeFromException e | ExtensionTyping.ProvidedTypeResolution(m,_) #endif | ReservedKeyword(_,m) | IndentationProblem(_,m) | ErrorFromAddingTypeEquation(_,_,_,_,_,m) | ErrorFromApplyingDefault(_,_,_,_,_,m) | ErrorsFromAddingSubsumptionConstraint(_,_,_,_,_,m) | FunctionExpected(_,_,m) | BakedInMemberConstraintName(_,m) | StandardOperatorRedefinitionWarning(_,m) | BadEventTransformation(m) | ParameterlessStructCtor(m) | FieldNotMutable (_,_,m) | Recursion (_,_,_,_,m) | InvalidRuntimeCoercion(_,_,_,m) | IndeterminateRuntimeCoercion(_,_,_,m) | IndeterminateStaticCoercion (_,_,_,m) | StaticCoercionShouldUseBox (_,_,_,m) | CoercionTargetSealed(_,_,m) | UpcastUnnecessary(m) | QuotationTranslator.IgnoringPartOfQuotedTermWarning (_,m) | TypeTestUnnecessary(m) | RuntimeCoercionSourceSealed(_,_,m) | OverrideDoesntOverride(_,_,_,_,_,m) | UnionPatternsBindDifferentNames m | UnionCaseWrongArguments (_,_,_,m) | TypeIsImplicitlyAbstract m | RequiredButNotSpecified (_,_,_,_,m) | FunctionValueUnexpected (_,_,m) | UnitTypeExpected (_,_,_,m ) | UseOfAddressOfOperator m | DeprecatedThreadStaticBindingWarning(m) | NonUniqueInferredAbstractSlot (_,_,_,_,_,m) | DefensiveCopyWarning (_,m) | LetRecCheckedAtRuntime m | UpperCaseIdentifierInPattern m | NotUpperCaseConstructor m | RecursiveUseCheckedAtRuntime (_,_,m) | LetRecEvaluatedOutOfOrder (_,_,_,m) | Error (_,m) | NumberedError (_,m) | SyntaxError (_,m) | InternalError (_,m) | FullAbstraction(_,m) | InterfaceNotRevealed(_,_,m) | WrappedError (_,m) | Patcompile.MatchIncomplete (_,_,m) | Patcompile.RuleNeverMatched m | ValNotMutable(_,_,m) | ValNotLocal(_,_,m) | MissingFields(_,m) | OverrideInIntrinsicAugmentation(m) | IntfImplInIntrinsicAugmentation(m) | OverrideInExtrinsicAugmentation(m) | IntfImplInExtrinsicAugmentation(m) | ValueRestriction(_,_,_,_,m) | LetRecUnsound (_,_,m) | ObsoleteError (_,m) | ObsoleteWarning (_,m) | Experimental (_,m) | PossibleUnverifiableCode m | UserCompilerMessage (_,_,m) | Deprecated(_,m) | LibraryUseOnly(m) | FieldsFromDifferentTypes (_,_,_,m) | IndeterminateType(m) | TyconBadArgs(_,_,_,m) -> Some m | FieldNotContained(_,arf,_,_) -> Some arf.Range | ValueNotContained(_,_,aval,_,_) -> Some aval.Range | ConstrNotContained(_,aval,_,_) -> Some aval.Id.idRange | ExnconstrNotContained(_,aexnc,_,_) -> Some aexnc.Range | VarBoundTwice(id) | UndefinedName(_,_,id,_) -> Some id.idRange | Duplicate(_,_,m) | NameClash(_,_,_,m,_,_,_) | UnresolvedOverloading(_,_,_,m) | UnresolvedConversionOperator (_,_,_,m) | PossibleOverload(_,_,_, m) //| PossibleBestOverload(_,_,m) | VirtualAugmentationOnNullValuedType(m) | NonVirtualAugmentationOnNullValuedType(m) | NonRigidTypar(_,_,_,_,_,m) | ConstraintSolverTupleDiffLengths(_,_,_,m,_) | ConstraintSolverInfiniteTypes(_,_,_,m,_) | ConstraintSolverMissingConstraint(_,_,_,m,_) | ConstraintSolverTypesNotInEqualityRelation(_,_,_,m,_) | ConstraintSolverError(_,m,_) | ConstraintSolverTypesNotInSubsumptionRelation(_,_,_,m,_) | ConstraintSolverRelatedInformation(_,m,_) | SelfRefObjCtor(_,m) -> Some m | NotAFunction(_,_,mfun,_) -> Some mfun | IllegalFileNameChar(_) -> Some rangeCmdArgs | UnresolvedReferenceError(_,m) | UnresolvedPathReference(_,_,m) | DeprecatedCommandLineOptionFull(_,m) | DeprecatedCommandLineOptionForHtmlDoc(_,m) | DeprecatedCommandLineOptionSuggestAlternative(_,_,m) | DeprecatedCommandLineOptionNoDescription(_,m) | InternalCommandLineOption(_,m) | HashIncludeNotAllowedInNonScript(m) | HashReferenceNotAllowedInNonScript(m) | HashDirectiveNotAllowedInNonScript(m) | FileNameNotResolved(_,_,m) | LoadedSourceNotFoundIgnoring(_,m) | MSBuildReferenceResolutionWarning(_,_,m) | MSBuildReferenceResolutionError(_,_,m) | AssemblyNotResolved(_,m) | HashLoadedSourceHasIssues(_,_,m) | HashLoadedScriptConsideredSource(m) -> Some m // Strip TargetInvocationException wrappers | :? System.Reflection.TargetInvocationException as e -> RangeFromException e.InnerException #if EXTENSIONTYPING | :? TypeProviderError as e -> e.Range |> Some #endif | _ -> None RangeFromException err.Exception let GetErrorNumber(err:PhasedError) = let rec GetFromException(e:exn) = match e with (* DO NOT CHANGE THESE NUMBERS *) | ErrorFromAddingTypeEquation _ -> 1 | FunctionExpected _ -> 2 | NotAFunction _ -> 3 | FieldNotMutable _ -> 5 | Recursion _ -> 6 | InvalidRuntimeCoercion _ -> 7 | IndeterminateRuntimeCoercion _ -> 8 | PossibleUnverifiableCode _ -> 9 | SyntaxError _ -> 10 // 11 cannot be reused // 12 cannot be reused | IndeterminateStaticCoercion _ -> 13 | StaticCoercionShouldUseBox _ -> 14 // 15 cannot be reused | RuntimeCoercionSourceSealed _ -> 16 | OverrideDoesntOverride _ -> 17 | UnionPatternsBindDifferentNames _ -> 18 | UnionCaseWrongArguments _ -> 19 | UnitTypeExpected _ -> 20 | RecursiveUseCheckedAtRuntime _ -> 21 | LetRecEvaluatedOutOfOrder _ -> 22 | NameClash _ -> 23 // 24 cannot be reused | Patcompile.MatchIncomplete _ -> 25 | Patcompile.RuleNeverMatched _ -> 26 | ValNotMutable _ -> 27 | ValNotLocal _ -> 28 | MissingFields _ -> 29 | ValueRestriction _ -> 30 | LetRecUnsound _ -> 31 | FieldsFromDifferentTypes _ -> 32 | TyconBadArgs _ -> 33 | ValueNotContained _ -> 34 | Deprecated _ -> 35 | ConstrNotContained _ -> 36 | Duplicate _ -> 37 | VarBoundTwice _ -> 38 | UndefinedName _ -> 39 | LetRecCheckedAtRuntime _ -> 40 | UnresolvedOverloading _ -> 41 | LibraryUseOnly _ -> 42 | ErrorFromAddingConstraint _ -> 43 | ObsoleteWarning _ -> 44 | FullAbstraction _ -> 45 | ReservedKeyword _ -> 46 | SelfRefObjCtor _ -> 47 | VirtualAugmentationOnNullValuedType _ -> 48 | UpperCaseIdentifierInPattern _ -> 49 | InterfaceNotRevealed _ -> 50 | UseOfAddressOfOperator _ -> 51 | DefensiveCopyWarning _ -> 52 | NotUpperCaseConstructor _ -> 53 | TypeIsImplicitlyAbstract _ -> 54 // 55 cannot be reused | DeprecatedThreadStaticBindingWarning _ -> 56 | Experimental _ -> 57 | IndentationProblem _ -> 58 | CoercionTargetSealed _ -> 59 | OverrideInIntrinsicAugmentation _ -> 60 | NonVirtualAugmentationOnNullValuedType _ -> 61 | UserCompilerMessage (_,n,_) -> n | ExnconstrNotContained _ -> 63 | NonRigidTypar _ -> 64 // 65 cannot be reused | UpcastUnnecessary _ -> 66 | TypeTestUnnecessary _ -> 67 | QuotationTranslator.IgnoringPartOfQuotedTermWarning _ -> 68 | IntfImplInIntrinsicAugmentation _ -> 69 | NonUniqueInferredAbstractSlot _ -> 70 | ErrorFromApplyingDefault _ -> 71 | IndeterminateType _ -> 72 | InternalError _ -> 73 | UnresolvedReferenceNoRange _ | UnresolvedReferenceError _ | UnresolvedPathReferenceNoRange _ | UnresolvedPathReference _ -> 74 | DeprecatedCommandLineOptionFull _ | DeprecatedCommandLineOptionForHtmlDoc _ | DeprecatedCommandLineOptionSuggestAlternative _ | DeprecatedCommandLineOptionNoDescription _ | InternalCommandLineOption _ -> 75 | HashIncludeNotAllowedInNonScript _ | HashReferenceNotAllowedInNonScript _ | HashDirectiveNotAllowedInNonScript _ -> 76 | BakedInMemberConstraintName _ -> 77 | FileNameNotResolved _ -> 78 | LoadedSourceNotFoundIgnoring _ -> 79 // 80 cannot be reused | ParameterlessStructCtor _ -> 81 | MSBuildReferenceResolutionWarning _ -> 82 | MSBuildReferenceResolutionError _ -> 83 | AssemblyNotResolved _ -> 84 | HashLoadedSourceHasIssues _ -> 85 | StandardOperatorRedefinitionWarning _ -> 86 | InvalidInternalsVisibleToAssemblyName _ -> 87 // 88 cannot be reused | OverrideInExtrinsicAugmentation _ -> 89 | IntfImplInExtrinsicAugmentation _ -> 90 | BadEventTransformation _ -> 91 | HashLoadedScriptConsideredSource _ -> 92 | UnresolvedConversionOperator _ -> 93 // avoid 94-100 for safety | ObsoleteError _ -> 101 #if EXTENSIONTYPING | ExtensionTyping.ProvidedTypeResolutionNoRange _ | ExtensionTyping.ProvidedTypeResolution _ -> 103 #endif (* DO NOT CHANGE THE NUMBERS *) // Strip TargetInvocationException wrappers | :? System.Reflection.TargetInvocationException as e -> GetFromException e.InnerException | WrappedError(e,_) -> GetFromException e | Error ((n,_),_) -> n | Failure _ -> 192 | NumberedError((n,_),_) -> n | IllegalFileNameChar(fileName,invalidChar) -> fst (FSComp.SR.buildUnexpectedFileNameCharacter(fileName,string invalidChar)) #if EXTENSIONTYPING | :? TypeProviderError as e -> e.Number #endif | _ -> 193 GetFromException err.Exception let GetWarningLevel err = match err.Exception with // Level 5 warnings | RecursiveUseCheckedAtRuntime _ | LetRecEvaluatedOutOfOrder _ | DefensiveCopyWarning _ | FullAbstraction _ -> 5 | NumberedError((n,_),_) | Error((n,_),_) -> // 1178,tcNoComparisonNeeded1,"The struct, record or union type '%s' is not structurally comparable because the type parameter %s does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to this type to clarify that the type is not comparable" // 1178,tcNoComparisonNeeded2,"The struct, record or union type '%s' is not structurally comparable because the type '%s' does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to this type to clarify that the type is not comparable" // 1178,tcNoEqualityNeeded1,"The struct, record or union type '%s' does not support structural equality because the type parameter %s does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to this type to clarify that the type does not support structural equality" // 1178,tcNoEqualityNeeded2,"The struct, record or union type '%s' does not support structural equality because the type '%s' does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to this type to clarify that the type does not support structural equality" if (n = 1178) then 5 else 2 // Level 2 | _ -> 2 let warningOn err level specificWarnOn = let n = GetErrorNumber err List.mem n specificWarnOn || // Some specific warnings are never on by default, i.e. unused variable warnings match n with | 1182 -> false | _ -> level >= GetWarningLevel err let SplitRelatedErrors(err:PhasedError) = let ToPhased(e) = {Exception=e; Phase = err.Phase} let rec SplitRelatedException = function | UnresolvedOverloading(a,overloads,b,c) -> let related = overloads |> List.map ToPhased UnresolvedOverloading(a,[],b,c)|>ToPhased, related | ConstraintSolverRelatedInformation(fopt,m2,e) -> let e,related = SplitRelatedException e ConstraintSolverRelatedInformation(fopt,m2,e.Exception)|>ToPhased, related | ErrorFromAddingTypeEquation(g,denv,t1,t2,e,m) -> let e,related = SplitRelatedException e ErrorFromAddingTypeEquation(g,denv,t1,t2,e.Exception,m)|>ToPhased, related | ErrorFromApplyingDefault(g,denv,tp,defaultType,e,m) -> let e,related = SplitRelatedException e ErrorFromApplyingDefault(g,denv,tp,defaultType,e.Exception,m)|>ToPhased, related | ErrorsFromAddingSubsumptionConstraint(g,denv,t1,t2,e,m) -> let e,related = SplitRelatedException e ErrorsFromAddingSubsumptionConstraint(g,denv,t1,t2,e.Exception,m)|>ToPhased, related | ErrorFromAddingConstraint(x,e,m) -> let e,related = SplitRelatedException e ErrorFromAddingConstraint(x,e.Exception,m)|>ToPhased, related | WrappedError (e,m) -> let e,related = SplitRelatedException e WrappedError(e.Exception,m)|>ToPhased, related // Strip TargetInvocationException wrappers | :? System.Reflection.TargetInvocationException as e -> SplitRelatedException e.InnerException | e -> ToPhased(e), [] SplitRelatedException(err.Exception) let DeclareMesssage = Microsoft.FSharp.Compiler.DiagnosticMessage.DeclareResourceString do FSComp.SR.RunStartupValidation() let SeeAlsoE() = DeclareResourceString("SeeAlso","%s") let ConstraintSolverTupleDiffLengthsE() = DeclareResourceString("ConstraintSolverTupleDiffLengths","%d%d") let ConstraintSolverInfiniteTypesE() = DeclareResourceString("ConstraintSolverInfiniteTypes", "%s%s") let ConstraintSolverMissingConstraintE() = DeclareResourceString("ConstraintSolverMissingConstraint","%s") let ConstraintSolverTypesNotInEqualityRelation1E() = DeclareResourceString("ConstraintSolverTypesNotInEqualityRelation1","%s%s") let ConstraintSolverTypesNotInEqualityRelation2E() = DeclareResourceString("ConstraintSolverTypesNotInEqualityRelation2", "%s%s") let ConstraintSolverTypesNotInSubsumptionRelationE() = DeclareResourceString("ConstraintSolverTypesNotInSubsumptionRelation","%s%s%s") let ConstraintSolverErrorE() = DeclareResourceString("ConstraintSolverError","%s") let ErrorFromAddingTypeEquation1E() = DeclareResourceString("ErrorFromAddingTypeEquation1","%s%s%s") let ErrorFromAddingTypeEquation2E() = DeclareResourceString("ErrorFromAddingTypeEquation2","%s%s%s") let ErrorFromApplyingDefault1E() = DeclareResourceString("ErrorFromApplyingDefault1","%s") let ErrorFromApplyingDefault2E() = DeclareResourceString("ErrorFromApplyingDefault2","") let ErrorsFromAddingSubsumptionConstraintE() = DeclareResourceString("ErrorsFromAddingSubsumptionConstraint","%s%s%s") let UpperCaseIdentifierInPatternE() = DeclareResourceString("UpperCaseIdentifierInPattern","") let NotUpperCaseConstructorE() = DeclareResourceString("NotUpperCaseConstructor","") let PossibleOverloadE() = DeclareResourceString("PossibleOverload","%s%s") let FunctionExpectedE() = DeclareResourceString("FunctionExpected","") let BakedInMemberConstraintNameE() = DeclareResourceString("BakedInMemberConstraintName","%s") let BadEventTransformationE() = DeclareResourceString("BadEventTransformation","") let ParameterlessStructCtorE() = DeclareResourceString("ParameterlessStructCtor","") let InterfaceNotRevealedE() = DeclareResourceString("InterfaceNotRevealed","%s") let NotAFunction1E() = DeclareResourceString("NotAFunction1","") let NotAFunction2E() = DeclareResourceString("NotAFunction2","") let TyconBadArgsE() = DeclareResourceString("TyconBadArgs","%s%d%d") let IndeterminateTypeE() = DeclareResourceString("IndeterminateType","") let NameClash1E() = DeclareResourceString("NameClash1","%s%s") let NameClash2E() = DeclareResourceString("NameClash2","%s%s%s%s%s") let Duplicate1E() = DeclareResourceString("Duplicate1","%s") let Duplicate2E() = DeclareResourceString("Duplicate2","%s%s") let UndefinedName2E() = DeclareResourceString("UndefinedName2","") let FieldNotMutableE() = DeclareResourceString("FieldNotMutable","") let FieldsFromDifferentTypesE() = DeclareResourceString("FieldsFromDifferentTypes","%s%s") let VarBoundTwiceE() = DeclareResourceString("VarBoundTwice","%s") let RecursionE() = DeclareResourceString("Recursion","%s%s%s%s") let InvalidRuntimeCoercionE() = DeclareResourceString("InvalidRuntimeCoercion","%s%s%s") let IndeterminateRuntimeCoercionE() = DeclareResourceString("IndeterminateRuntimeCoercion","%s%s") let IndeterminateStaticCoercionE() = DeclareResourceString("IndeterminateStaticCoercion","%s%s") let StaticCoercionShouldUseBoxE() = DeclareResourceString("StaticCoercionShouldUseBox","%s%s") let TypeIsImplicitlyAbstractE() = DeclareResourceString("TypeIsImplicitlyAbstract","") let NonRigidTypar1E() = DeclareResourceString("NonRigidTypar1","%s%s") let NonRigidTypar2E() = DeclareResourceString("NonRigidTypar2","%s%s") let NonRigidTypar3E() = DeclareResourceString("NonRigidTypar3","%s%s") let OBlockEndSentenceE() = DeclareResourceString("BlockEndSentence","") let UnexpectedEndOfInputE() = DeclareResourceString("UnexpectedEndOfInput","") let UnexpectedE() = DeclareResourceString("Unexpected","%s") let NONTERM_interactionE() = DeclareResourceString("NONTERM.interaction","") let NONTERM_hashDirectiveE() = DeclareResourceString("NONTERM.hashDirective","") let NONTERM_fieldDeclE() = DeclareResourceString("NONTERM.fieldDecl","") let NONTERM_unionCaseReprE() = DeclareResourceString("NONTERM.unionCaseRepr","") let NONTERM_localBindingE() = DeclareResourceString("NONTERM.localBinding","") let NONTERM_hardwhiteLetBindingsE() = DeclareResourceString("NONTERM.hardwhiteLetBindings","") let NONTERM_classDefnMemberE() = DeclareResourceString("NONTERM.classDefnMember","") let NONTERM_defnBindingsE() = DeclareResourceString("NONTERM.defnBindings","") let NONTERM_classMemberSpfnE() = DeclareResourceString("NONTERM.classMemberSpfn","") let NONTERM_valSpfnE() = DeclareResourceString("NONTERM.valSpfn","") let NONTERM_tyconSpfnE() = DeclareResourceString("NONTERM.tyconSpfn","") let NONTERM_anonLambdaExprE() = DeclareResourceString("NONTERM.anonLambdaExpr","") let NONTERM_attrUnionCaseDeclE() = DeclareResourceString("NONTERM.attrUnionCaseDecl","") let NONTERM_cPrototypeE() = DeclareResourceString("NONTERM.cPrototype","") let NONTERM_objectImplementationMembersE() = DeclareResourceString("NONTERM.objectImplementationMembers","") let NONTERM_ifExprCasesE() = DeclareResourceString("NONTERM.ifExprCases","") let NONTERM_openDeclE() = DeclareResourceString("NONTERM.openDecl","") let NONTERM_fileModuleSpecE() = DeclareResourceString("NONTERM.fileModuleSpec","") let NONTERM_patternClausesE() = DeclareResourceString("NONTERM.patternClauses","") let NONTERM_beginEndExprE() = DeclareResourceString("NONTERM.beginEndExpr","") let NONTERM_recdExprE() = DeclareResourceString("NONTERM.recdExpr","") let NONTERM_tyconDefnE() = DeclareResourceString("NONTERM.tyconDefn","") let NONTERM_exconCoreE() = DeclareResourceString("NONTERM.exconCore","") let NONTERM_typeNameInfoE() = DeclareResourceString("NONTERM.typeNameInfo","") let NONTERM_attributeListE() = DeclareResourceString("NONTERM.attributeList","") let NONTERM_quoteExprE() = DeclareResourceString("NONTERM.quoteExpr","") let NONTERM_typeConstraintE() = DeclareResourceString("NONTERM.typeConstraint","") let NONTERM_Category_ImplementationFileE() = DeclareResourceString("NONTERM.Category.ImplementationFile","") let NONTERM_Category_DefinitionE() = DeclareResourceString("NONTERM.Category.Definition","") let NONTERM_Category_SignatureFileE() = DeclareResourceString("NONTERM.Category.SignatureFile","") let NONTERM_Category_PatternE() = DeclareResourceString("NONTERM.Category.Pattern","") let NONTERM_Category_ExprE() = DeclareResourceString("NONTERM.Category.Expr","") let NONTERM_Category_TypeE() = DeclareResourceString("NONTERM.Category.Type","") let NONTERM_typeArgsActualE() = DeclareResourceString("NONTERM.typeArgsActual","") let TokenName1E() = DeclareResourceString("TokenName1","%s") let TokenName1TokenName2E() = DeclareResourceString("TokenName1TokenName2","%s%s") let TokenName1TokenName2TokenName3E() = DeclareResourceString("TokenName1TokenName2TokenName3","%s%s%s") let RuntimeCoercionSourceSealed1E() = DeclareResourceString("RuntimeCoercionSourceSealed1","%s") let RuntimeCoercionSourceSealed2E() = DeclareResourceString("RuntimeCoercionSourceSealed2","%s") let CoercionTargetSealedE() = DeclareResourceString("CoercionTargetSealed","%s") let UpcastUnnecessaryE() = DeclareResourceString("UpcastUnnecessary","") let TypeTestUnnecessaryE() = DeclareResourceString("TypeTestUnnecessary","") let OverrideDoesntOverride1E() = DeclareResourceString("OverrideDoesntOverride1","%s") let OverrideDoesntOverride2E() = DeclareResourceString("OverrideDoesntOverride2","%s") let OverrideDoesntOverride3E() = DeclareResourceString("OverrideDoesntOverride3","%s") let UnionCaseWrongArgumentsE() = DeclareResourceString("UnionCaseWrongArguments","%d%d") let UnionPatternsBindDifferentNamesE() = DeclareResourceString("UnionPatternsBindDifferentNames","") let RequiredButNotSpecifiedE() = DeclareResourceString("RequiredButNotSpecified","%s%s%s") let UseOfAddressOfOperatorE() = DeclareResourceString("UseOfAddressOfOperator","") let DefensiveCopyWarningE() = DeclareResourceString("DefensiveCopyWarning","%s") let DeprecatedThreadStaticBindingWarningE() = DeclareResourceString("DeprecatedThreadStaticBindingWarning","") let FunctionValueUnexpectedE() = DeclareResourceString("FunctionValueUnexpected","%s") let UnitTypeExpected1E() = DeclareResourceString("UnitTypeExpected1","%s") let UnitTypeExpected2E() = DeclareResourceString("UnitTypeExpected2","%s") let RecursiveUseCheckedAtRuntimeE() = DeclareResourceString("RecursiveUseCheckedAtRuntime","") let LetRecUnsound1E() = DeclareResourceString("LetRecUnsound1","%s") let LetRecUnsound2E() = DeclareResourceString("LetRecUnsound2","%s%s") let LetRecUnsoundInnerE() = DeclareResourceString("LetRecUnsoundInner","%s") let LetRecEvaluatedOutOfOrderE() = DeclareResourceString("LetRecEvaluatedOutOfOrder","") let LetRecCheckedAtRuntimeE() = DeclareResourceString("LetRecCheckedAtRuntime","") let SelfRefObjCtor1E() = DeclareResourceString("SelfRefObjCtor1","") let SelfRefObjCtor2E() = DeclareResourceString("SelfRefObjCtor2","") let VirtualAugmentationOnNullValuedTypeE() = DeclareResourceString("VirtualAugmentationOnNullValuedType","") let NonVirtualAugmentationOnNullValuedTypeE() = DeclareResourceString("NonVirtualAugmentationOnNullValuedType","") let NonUniqueInferredAbstractSlot1E() = DeclareResourceString("NonUniqueInferredAbstractSlot1","%s") let NonUniqueInferredAbstractSlot2E() = DeclareResourceString("NonUniqueInferredAbstractSlot2","") let NonUniqueInferredAbstractSlot3E() = DeclareResourceString("NonUniqueInferredAbstractSlot3","%s%s") let NonUniqueInferredAbstractSlot4E() = DeclareResourceString("NonUniqueInferredAbstractSlot4","") let Failure3E() = DeclareResourceString("Failure3","%s") let Failure4E() = DeclareResourceString("Failure4","%s") let FullAbstractionE() = DeclareResourceString("FullAbstraction","%s") let MatchIncomplete1E() = DeclareResourceString("MatchIncomplete1","") let MatchIncomplete2E() = DeclareResourceString("MatchIncomplete2","%s") let MatchIncomplete3E() = DeclareResourceString("MatchIncomplete3","%s") let MatchIncomplete4E() = DeclareResourceString("MatchIncomplete4","") let RuleNeverMatchedE() = DeclareResourceString("RuleNeverMatched","") let ValNotMutableE() = DeclareResourceString("ValNotMutable","") let ValNotLocalE() = DeclareResourceString("ValNotLocal","") let Obsolete1E() = DeclareResourceString("Obsolete1","") let Obsolete2E() = DeclareResourceString("Obsolete2","%s") let ExperimentalE() = DeclareResourceString("Experimental","%s") let PossibleUnverifiableCodeE() = DeclareResourceString("PossibleUnverifiableCode","") let DeprecatedE() = DeclareResourceString("Deprecated","%s") let LibraryUseOnlyE() = DeclareResourceString("LibraryUseOnly","") let MissingFieldsE() = DeclareResourceString("MissingFields","%s") let ValueRestriction1E() = DeclareResourceString("ValueRestriction1","%s%s%s") let ValueRestriction2E() = DeclareResourceString("ValueRestriction2","%s%s%s") let ValueRestriction3E() = DeclareResourceString("ValueRestriction3","%s") let ValueRestriction4E() = DeclareResourceString("ValueRestriction4","%s%s%s") let ValueRestriction5E() = DeclareResourceString("ValueRestriction5","%s%s%s") let RecoverableParseErrorE() = DeclareResourceString("RecoverableParseError","") let ReservedKeywordE() = DeclareResourceString("ReservedKeyword","%s") let IndentationProblemE() = DeclareResourceString("IndentationProblem","%s") let OverrideInIntrinsicAugmentationE() = DeclareResourceString("OverrideInIntrinsicAugmentation","") let OverrideInExtrinsicAugmentationE() = DeclareResourceString("OverrideInExtrinsicAugmentation","") let IntfImplInIntrinsicAugmentationE() = DeclareResourceString("IntfImplInIntrinsicAugmentation","") let IntfImplInExtrinsicAugmentationE() = DeclareResourceString("IntfImplInExtrinsicAugmentation","") let UnresolvedReferenceNoRangeE() = DeclareResourceString("UnresolvedReferenceNoRange","%s") let UnresolvedPathReferenceNoRangeE() = DeclareResourceString("UnresolvedPathReferenceNoRange","%s%s") let HashIncludeNotAllowedInNonScriptE() = DeclareResourceString("HashIncludeNotAllowedInNonScript","") let HashReferenceNotAllowedInNonScriptE() = DeclareResourceString("HashReferenceNotAllowedInNonScript","") let HashDirectiveNotAllowedInNonScriptE() = DeclareResourceString("HashDirectiveNotAllowedInNonScript","") let FileNameNotResolvedE() = DeclareResourceString("FileNameNotResolved","%s%s") let AssemblyNotResolvedE() = DeclareResourceString("AssemblyNotResolved","%s") let HashLoadedSourceHasIssues1E() = DeclareResourceString("HashLoadedSourceHasIssues1","") let HashLoadedSourceHasIssues2E() = DeclareResourceString("HashLoadedSourceHasIssues2","") let HashLoadedScriptConsideredSourceE() = DeclareResourceString("HashLoadedScriptConsideredSource","") let InvalidInternalsVisibleToAssemblyName1E() = DeclareResourceString("InvalidInternalsVisibleToAssemblyName1","%s%s") let InvalidInternalsVisibleToAssemblyName2E() = DeclareResourceString("InvalidInternalsVisibleToAssemblyName2","%s") let LoadedSourceNotFoundIgnoringE() = DeclareResourceString("LoadedSourceNotFoundIgnoring","%s") let MSBuildReferenceResolutionErrorE() = DeclareResourceString("MSBuildReferenceResolutionError","%s%s") let TargetInvocationExceptionWrapperE() = DeclareResourceString("TargetInvocationExceptionWrapper","%s") let getErrorString key = SR.GetString key let (|InvalidArgument|_|) (exn:exn) = match exn with :? ArgumentException as e -> Some e.Message | _ -> None let OutputPhasedErrorR (os:System.Text.StringBuilder) (err:PhasedError) = let rec OutputExceptionR (os:System.Text.StringBuilder) = function | ConstraintSolverTupleDiffLengths(_,tl1,tl2,m,m2) -> os.Append(ConstraintSolverTupleDiffLengthsE().Format tl1.Length tl2.Length) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore) | ConstraintSolverInfiniteTypes(denv,t1,t2,m,m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 os.Append(ConstraintSolverInfiniteTypesE().Format t1 t2) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore ) | ConstraintSolverMissingConstraint(denv,tpr,tpc,m,m2) -> os.Append(ConstraintSolverMissingConstraintE().Format (NicePrint.stringOfTyparConstraint denv (tpr,tpc))) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore ) | ConstraintSolverTypesNotInEqualityRelation(denv,(TType_measure _ as t1),(TType_measure _ as t2),m,m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 os.Append(ConstraintSolverTypesNotInEqualityRelation1E().Format t1 t2) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore) | ConstraintSolverTypesNotInEqualityRelation(denv,t1,t2,m,m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 os.Append(ConstraintSolverTypesNotInEqualityRelation2E().Format t1 t2) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore) | ConstraintSolverTypesNotInSubsumptionRelation(denv,t1,t2,m,m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, cxs= NicePrint.minimalStringsOfTwoTypes denv t1 t2 os.Append(ConstraintSolverTypesNotInSubsumptionRelationE().Format t2 t1 cxs) |> ignore (if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m2)) |> ignore) | ConstraintSolverError(msg,m,m2) -> os.Append(ConstraintSolverErrorE().Format msg) |> ignore if m.StartLine <> m2.StartLine then os.Append(SeeAlsoE().Format (stringOfRange m2)) |> ignore | ConstraintSolverRelatedInformation(fopt,_,e) -> match e with | ConstraintSolverError _ -> OutputExceptionR os e | _ -> () fopt |> Option.iter (Printf.bprintf os " %s") | ErrorFromAddingTypeEquation(g,denv,t1,t2,ConstraintSolverTypesNotInEqualityRelation(_, t1', t2',_ ,_ ),_) when typeEquiv g t1 t1' && typeEquiv g t2 t2' -> let t1,t2,tpcs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 os.Append(ErrorFromAddingTypeEquation1E().Format t2 t1 tpcs) |> ignore | ErrorFromAddingTypeEquation(_,_,_,_,((ConstraintSolverTypesNotInSubsumptionRelation _ | ConstraintSolverError _) as e),_) -> OutputExceptionR os e | ErrorFromAddingTypeEquation(g,denv,t1,t2,e,_) -> if not (typeEquiv g t1 t2) then ( let t1,t2,tpcs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 if t1<>t2 + tpcs then os.Append(ErrorFromAddingTypeEquation2E().Format t1 t2 tpcs) |> ignore ) OutputExceptionR os e | ErrorFromApplyingDefault(_,denv,_,defaultType,e,_) -> let defaultType = NicePrint.minimalStringOfType denv defaultType os.Append(ErrorFromApplyingDefault1E().Format defaultType) |> ignore OutputExceptionR os e os.Append(ErrorFromApplyingDefault2E().Format) |> ignore | ErrorsFromAddingSubsumptionConstraint(g,denv,t1,t2,e,_) -> if not (typeEquiv g t1 t2) then ( let t1,t2,tpcs = NicePrint.minimalStringsOfTwoTypes denv t1 t2 if t1 <> (t2 + tpcs) then os.Append(ErrorsFromAddingSubsumptionConstraintE().Format t2 t1 tpcs) |> ignore ) OutputExceptionR os e | UpperCaseIdentifierInPattern(_) -> os.Append(UpperCaseIdentifierInPatternE().Format) |> ignore | NotUpperCaseConstructor(_) -> os.Append(NotUpperCaseConstructorE().Format) |> ignore | ErrorFromAddingConstraint(_,e,_) -> OutputExceptionR os e #if EXTENSIONTYPING | ExtensionTyping.ProvidedTypeResolutionNoRange(e) | ExtensionTyping.ProvidedTypeResolution(_,e) -> OutputExceptionR os e | :? TypeProviderError as e -> os.Append(e.ContextualErrorMessage) |> ignore #endif | UnresolvedOverloading(_,_,mtext,_) -> os.Append(mtext) |> ignore | UnresolvedConversionOperator(denv,fromTy,toTy,_) -> let t1,t2,_tpcs = NicePrint.minimalStringsOfTwoTypes denv fromTy toTy os.Append(FSComp.SR.csTypeDoesNotSupportConversion(t1,t2)) |> ignore | PossibleOverload(_,minfo, originalError, _) -> // print original error that describes reason why this overload was rejected let buf = new StringBuilder() OutputExceptionR buf originalError os.Append(PossibleOverloadE().Format minfo (buf.ToString())) |> ignore //| PossibleBestOverload(_,minfo,m) -> // Printf.bprintf os "\n\nPossible best overload: '%s'." minfo | FunctionExpected _ -> os.Append(FunctionExpectedE().Format) |> ignore | BakedInMemberConstraintName(nm,_) -> os.Append(BakedInMemberConstraintNameE().Format nm) |> ignore | StandardOperatorRedefinitionWarning(msg,_) -> os.Append(msg) |> ignore | BadEventTransformation(_) -> os.Append(BadEventTransformationE().Format) |> ignore | ParameterlessStructCtor(_) -> os.Append(ParameterlessStructCtorE().Format) |> ignore | InterfaceNotRevealed(denv,ity,_) -> os.Append(InterfaceNotRevealedE().Format (NicePrint.minimalStringOfType denv ity)) |> ignore | NotAFunction(_,_,_,marg) -> if marg.StartColumn = 0 then os.Append(NotAFunction1E().Format) |> ignore else os.Append(NotAFunction2E().Format) |> ignore | TyconBadArgs(_,tcref,d,_) -> let exp = tcref.TyparsNoRange.Length if exp = 0 then os.Append(FSComp.SR.buildUnexpectedTypeArgs(fullDisplayTextOfTyconRef tcref, d)) |> ignore else os.Append(TyconBadArgsE().Format (fullDisplayTextOfTyconRef tcref) exp d) |> ignore | IndeterminateType(_) -> os.Append(IndeterminateTypeE().Format) |> ignore | NameClash(nm,k1,nm1,_,k2,nm2,_) -> if nm = nm1 && nm1 = nm2 && k1 = k2 then os.Append(NameClash1E().Format k1 nm1) |> ignore else os.Append(NameClash2E().Format k1 nm1 nm k2 nm2) |> ignore | Duplicate(k,s,_) -> if k = "member" then os.Append(Duplicate1E().Format (DecompileOpName s)) |> ignore else os.Append(Duplicate2E().Format k (DecompileOpName s)) |> ignore | UndefinedName(_,k,id,_) -> os.Append(k (DecompileOpName id.idText)) |> ignore | InternalUndefinedTyconItem(f,tcref,s) -> let _, errs = f((fullDisplayTextOfTyconRef tcref), s) os.Append(errs) |> ignore | InternalUndefinedItemRef(f,smr,ccuName,s) -> let _, errs = f(smr, ccuName, s) os.Append(errs) |> ignore | FieldNotMutable _ -> os.Append(FieldNotMutableE().Format) |> ignore | FieldsFromDifferentTypes (_,fref1,fref2,_) -> os.Append(FieldsFromDifferentTypesE().Format fref1.FieldName fref2.FieldName) |> ignore | VarBoundTwice(id) -> os.Append(VarBoundTwiceE().Format (DecompileOpName id.idText)) |> ignore | Recursion (denv,id,ty1,ty2,_) -> let t1,t2,tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(RecursionE().Format (DecompileOpName id.idText) t1 t2 tpcs) |> ignore | InvalidRuntimeCoercion(denv,ty1,ty2,_) -> let t1,t2,tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(InvalidRuntimeCoercionE().Format t1 t2 tpcs) |> ignore | IndeterminateRuntimeCoercion(denv,ty1,ty2,_) -> let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(IndeterminateRuntimeCoercionE().Format t1 t2) |> ignore | IndeterminateStaticCoercion(denv,ty1,ty2,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(IndeterminateStaticCoercionE().Format t1 t2) |> ignore | StaticCoercionShouldUseBox(denv,ty1,ty2,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(StaticCoercionShouldUseBoxE().Format t1 t2) |> ignore | TypeIsImplicitlyAbstract(_) -> os.Append(TypeIsImplicitlyAbstractE().Format) |> ignore | NonRigidTypar(denv,tpnmOpt,typarRange,ty1,ty,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let _, (ty1,ty), _cxs = PrettyTypes.PrettifyTypes2 denv.g (ty1,ty) match tpnmOpt with | None -> os.Append(NonRigidTypar1E().Format (stringOfRange typarRange) (NicePrint.stringOfTy denv ty)) |> ignore | Some tpnm -> match ty1 with | TType_measure _ -> os.Append(NonRigidTypar2E().Format tpnm (NicePrint.stringOfTy denv ty)) |> ignore | _ -> os.Append(NonRigidTypar3E().Format tpnm (NicePrint.stringOfTy denv ty)) |> ignore | SyntaxError (ctxt,_) -> let ctxt = unbox>(ctxt) let (|EndOfStructuredConstructToken|_|) token = match token with | Parser.TOKEN_ODECLEND | Parser.TOKEN_OBLOCKSEP | Parser.TOKEN_OEND | Parser.TOKEN_ORIGHT_BLOCK_END | Parser.TOKEN_OBLOCKEND | Parser.TOKEN_OBLOCKEND_COMING_SOON | Parser.TOKEN_OBLOCKEND_IS_HERE -> Some() | _ -> None let tokenIdToText tid = match tid with | Parser.TOKEN_IDENT -> getErrorString("Parser.TOKEN.IDENT") | Parser.TOKEN_BIGNUM | Parser.TOKEN_INT8 | Parser.TOKEN_UINT8 | Parser.TOKEN_INT16 | Parser.TOKEN_UINT16 | Parser.TOKEN_INT32 | Parser.TOKEN_UINT32 | Parser.TOKEN_INT64 | Parser.TOKEN_UINT64 | Parser.TOKEN_UNATIVEINT | Parser.TOKEN_NATIVEINT -> getErrorString("Parser.TOKEN.INT") | Parser.TOKEN_IEEE32 | Parser.TOKEN_IEEE64 -> getErrorString("Parser.TOKEN.FLOAT") | Parser.TOKEN_DECIMAL -> getErrorString("Parser.TOKEN.DECIMAL") | Parser.TOKEN_CHAR -> getErrorString("Parser.TOKEN.CHAR") | Parser.TOKEN_BASE -> getErrorString("Parser.TOKEN.BASE") | Parser.TOKEN_LPAREN_STAR_RPAREN -> getErrorString("Parser.TOKEN.LPAREN.STAR.RPAREN") | Parser.TOKEN_DOLLAR -> getErrorString("Parser.TOKEN.DOLLAR") | Parser.TOKEN_INFIX_STAR_STAR_OP -> getErrorString("Parser.TOKEN.INFIX.STAR.STAR.OP") | Parser.TOKEN_INFIX_COMPARE_OP -> getErrorString("Parser.TOKEN.INFIX.COMPARE.OP") | Parser.TOKEN_COLON_GREATER -> getErrorString("Parser.TOKEN.COLON.GREATER") | Parser.TOKEN_COLON_COLON ->getErrorString("Parser.TOKEN.COLON.COLON") | Parser.TOKEN_PERCENT_OP -> getErrorString("Parser.TOKEN.PERCENT.OP") | Parser.TOKEN_INFIX_AT_HAT_OP -> getErrorString("Parser.TOKEN.INFIX.AT.HAT.OP") | Parser.TOKEN_INFIX_BAR_OP -> getErrorString("Parser.TOKEN.INFIX.BAR.OP") | Parser.TOKEN_PLUS_MINUS_OP -> getErrorString("Parser.TOKEN.PLUS.MINUS.OP") | Parser.TOKEN_PREFIX_OP -> getErrorString("Parser.TOKEN.PREFIX.OP") | Parser.TOKEN_COLON_QMARK_GREATER -> getErrorString("Parser.TOKEN.COLON.QMARK.GREATER") | Parser.TOKEN_INFIX_STAR_DIV_MOD_OP -> getErrorString("Parser.TOKEN.INFIX.STAR.DIV.MOD.OP") | Parser.TOKEN_INFIX_AMP_OP -> getErrorString("Parser.TOKEN.INFIX.AMP.OP") | Parser.TOKEN_AMP -> getErrorString("Parser.TOKEN.AMP") | Parser.TOKEN_AMP_AMP -> getErrorString("Parser.TOKEN.AMP.AMP") | Parser.TOKEN_BAR_BAR -> getErrorString("Parser.TOKEN.BAR.BAR") | Parser.TOKEN_LESS -> getErrorString("Parser.TOKEN.LESS") | Parser.TOKEN_GREATER -> getErrorString("Parser.TOKEN.GREATER") | Parser.TOKEN_QMARK -> getErrorString("Parser.TOKEN.QMARK") | Parser.TOKEN_QMARK_QMARK -> getErrorString("Parser.TOKEN.QMARK.QMARK") | Parser.TOKEN_COLON_QMARK-> getErrorString("Parser.TOKEN.COLON.QMARK") | Parser.TOKEN_INT32_DOT_DOT -> getErrorString("Parser.TOKEN.INT32.DOT.DOT") | Parser.TOKEN_DOT_DOT -> getErrorString("Parser.TOKEN.DOT.DOT") | Parser.TOKEN_QUOTE -> getErrorString("Parser.TOKEN.QUOTE") | Parser.TOKEN_STAR -> getErrorString("Parser.TOKEN.STAR") | Parser.TOKEN_HIGH_PRECEDENCE_TYAPP -> getErrorString("Parser.TOKEN.HIGH.PRECEDENCE.TYAPP") | Parser.TOKEN_COLON -> getErrorString("Parser.TOKEN.COLON") | Parser.TOKEN_COLON_EQUALS -> getErrorString("Parser.TOKEN.COLON.EQUALS") | Parser.TOKEN_LARROW -> getErrorString("Parser.TOKEN.LARROW") | Parser.TOKEN_EQUALS -> getErrorString("Parser.TOKEN.EQUALS") | Parser.TOKEN_GREATER_BAR_RBRACK -> getErrorString("Parser.TOKEN.GREATER.BAR.RBRACK") | Parser.TOKEN_MINUS -> getErrorString("Parser.TOKEN.MINUS") | Parser.TOKEN_ADJACENT_PREFIX_OP -> getErrorString("Parser.TOKEN.ADJACENT.PREFIX.OP") | Parser.TOKEN_FUNKY_OPERATOR_NAME -> getErrorString("Parser.TOKEN.FUNKY.OPERATOR.NAME") | Parser.TOKEN_COMMA-> getErrorString("Parser.TOKEN.COMMA") | Parser.TOKEN_DOT -> getErrorString("Parser.TOKEN.DOT") | Parser.TOKEN_BAR-> getErrorString("Parser.TOKEN.BAR") | Parser.TOKEN_HASH -> getErrorString("Parser.TOKEN.HASH") | Parser.TOKEN_UNDERSCORE -> getErrorString("Parser.TOKEN.UNDERSCORE") | Parser.TOKEN_SEMICOLON -> getErrorString("Parser.TOKEN.SEMICOLON") | Parser.TOKEN_SEMICOLON_SEMICOLON-> getErrorString("Parser.TOKEN.SEMICOLON.SEMICOLON") | Parser.TOKEN_LPAREN-> getErrorString("Parser.TOKEN.LPAREN") | Parser.TOKEN_RPAREN | Parser.TOKEN_RPAREN_COMING_SOON | Parser.TOKEN_RPAREN_IS_HERE -> getErrorString("Parser.TOKEN.RPAREN") | Parser.TOKEN_LQUOTE -> getErrorString("Parser.TOKEN.LQUOTE") | Parser.TOKEN_LBRACK -> getErrorString("Parser.TOKEN.LBRACK") | Parser.TOKEN_LBRACK_BAR -> getErrorString("Parser.TOKEN.LBRACK.BAR") | Parser.TOKEN_LBRACK_LESS -> getErrorString("Parser.TOKEN.LBRACK.LESS") | Parser.TOKEN_LBRACE -> getErrorString("Parser.TOKEN.LBRACE") | Parser.TOKEN_LBRACE_LESS-> getErrorString("Parser.TOKEN.LBRACE.LESS") | Parser.TOKEN_BAR_RBRACK -> getErrorString("Parser.TOKEN.BAR.RBRACK") | Parser.TOKEN_GREATER_RBRACE -> getErrorString("Parser.TOKEN.GREATER.RBRACE") | Parser.TOKEN_GREATER_RBRACK -> getErrorString("Parser.TOKEN.GREATER.RBRACK") | Parser.TOKEN_RQUOTE_DOT _ | Parser.TOKEN_RQUOTE -> getErrorString("Parser.TOKEN.RQUOTE") | Parser.TOKEN_RBRACK -> getErrorString("Parser.TOKEN.RBRACK") | Parser.TOKEN_RBRACE | Parser.TOKEN_RBRACE_COMING_SOON | Parser.TOKEN_RBRACE_IS_HERE -> getErrorString("Parser.TOKEN.RBRACE") | Parser.TOKEN_PUBLIC -> getErrorString("Parser.TOKEN.PUBLIC") | Parser.TOKEN_PRIVATE -> getErrorString("Parser.TOKEN.PRIVATE") | Parser.TOKEN_INTERNAL -> getErrorString("Parser.TOKEN.INTERNAL") | Parser.TOKEN_CONSTRAINT -> getErrorString("Parser.TOKEN.CONSTRAINT") | Parser.TOKEN_INSTANCE -> getErrorString("Parser.TOKEN.INSTANCE") | Parser.TOKEN_DELEGATE -> getErrorString("Parser.TOKEN.DELEGATE") | Parser.TOKEN_INHERIT -> getErrorString("Parser.TOKEN.INHERIT") | Parser.TOKEN_CONSTRUCTOR-> getErrorString("Parser.TOKEN.CONSTRUCTOR") | Parser.TOKEN_DEFAULT -> getErrorString("Parser.TOKEN.DEFAULT") | Parser.TOKEN_OVERRIDE-> getErrorString("Parser.TOKEN.OVERRIDE") | Parser.TOKEN_ABSTRACT-> getErrorString("Parser.TOKEN.ABSTRACT") | Parser.TOKEN_CLASS-> getErrorString("Parser.TOKEN.CLASS") | Parser.TOKEN_MEMBER -> getErrorString("Parser.TOKEN.MEMBER") | Parser.TOKEN_STATIC -> getErrorString("Parser.TOKEN.STATIC") | Parser.TOKEN_NAMESPACE-> getErrorString("Parser.TOKEN.NAMESPACE") | Parser.TOKEN_OBLOCKBEGIN -> getErrorString("Parser.TOKEN.OBLOCKBEGIN") | EndOfStructuredConstructToken -> getErrorString("Parser.TOKEN.OBLOCKEND") | Parser.TOKEN_THEN | Parser.TOKEN_OTHEN -> getErrorString("Parser.TOKEN.OTHEN") | Parser.TOKEN_ELSE | Parser.TOKEN_OELSE -> getErrorString("Parser.TOKEN.OELSE") | Parser.TOKEN_LET(_) | Parser.TOKEN_OLET(_) -> getErrorString("Parser.TOKEN.OLET") | Parser.TOKEN_OBINDER | Parser.TOKEN_BINDER -> getErrorString("Parser.TOKEN.BINDER") | Parser.TOKEN_ODO -> getErrorString("Parser.TOKEN.ODO") | Parser.TOKEN_OWITH -> getErrorString("Parser.TOKEN.OWITH") | Parser.TOKEN_OFUNCTION -> getErrorString("Parser.TOKEN.OFUNCTION") | Parser.TOKEN_OFUN -> getErrorString("Parser.TOKEN.OFUN") | Parser.TOKEN_ORESET -> getErrorString("Parser.TOKEN.ORESET") | Parser.TOKEN_ODUMMY -> getErrorString("Parser.TOKEN.ODUMMY") | Parser.TOKEN_DO_BANG | Parser.TOKEN_ODO_BANG -> getErrorString("Parser.TOKEN.ODO.BANG") | Parser.TOKEN_YIELD -> getErrorString("Parser.TOKEN.YIELD") | Parser.TOKEN_YIELD_BANG -> getErrorString("Parser.TOKEN.YIELD.BANG") | Parser.TOKEN_OINTERFACE_MEMBER-> getErrorString("Parser.TOKEN.OINTERFACE.MEMBER") | Parser.TOKEN_ELIF -> getErrorString("Parser.TOKEN.ELIF") | Parser.TOKEN_RARROW -> getErrorString("Parser.TOKEN.RARROW") | Parser.TOKEN_SIG -> getErrorString("Parser.TOKEN.SIG") | Parser.TOKEN_STRUCT -> getErrorString("Parser.TOKEN.STRUCT") | Parser.TOKEN_UPCAST -> getErrorString("Parser.TOKEN.UPCAST") | Parser.TOKEN_DOWNCAST -> getErrorString("Parser.TOKEN.DOWNCAST") | Parser.TOKEN_NULL -> getErrorString("Parser.TOKEN.NULL") | Parser.TOKEN_RESERVED -> getErrorString("Parser.TOKEN.RESERVED") | Parser.TOKEN_MODULE | Parser.TOKEN_MODULE_COMING_SOON | Parser.TOKEN_MODULE_IS_HERE -> getErrorString("Parser.TOKEN.MODULE") | Parser.TOKEN_AND -> getErrorString("Parser.TOKEN.AND") | Parser.TOKEN_AS -> getErrorString("Parser.TOKEN.AS") | Parser.TOKEN_ASSERT -> getErrorString("Parser.TOKEN.ASSERT") | Parser.TOKEN_OASSERT -> getErrorString("Parser.TOKEN.ASSERT") | Parser.TOKEN_ASR-> getErrorString("Parser.TOKEN.ASR") | Parser.TOKEN_DOWNTO -> getErrorString("Parser.TOKEN.DOWNTO") | Parser.TOKEN_EXCEPTION -> getErrorString("Parser.TOKEN.EXCEPTION") | Parser.TOKEN_FALSE -> getErrorString("Parser.TOKEN.FALSE") | Parser.TOKEN_FOR -> getErrorString("Parser.TOKEN.FOR") | Parser.TOKEN_FUN -> getErrorString("Parser.TOKEN.FUN") | Parser.TOKEN_FUNCTION-> getErrorString("Parser.TOKEN.FUNCTION") | Parser.TOKEN_FINALLY -> getErrorString("Parser.TOKEN.FINALLY") | Parser.TOKEN_LAZY -> getErrorString("Parser.TOKEN.LAZY") | Parser.TOKEN_OLAZY -> getErrorString("Parser.TOKEN.LAZY") | Parser.TOKEN_MATCH -> getErrorString("Parser.TOKEN.MATCH") | Parser.TOKEN_MUTABLE -> getErrorString("Parser.TOKEN.MUTABLE") | Parser.TOKEN_NEW -> getErrorString("Parser.TOKEN.NEW") | Parser.TOKEN_OF -> getErrorString("Parser.TOKEN.OF") | Parser.TOKEN_OPEN -> getErrorString("Parser.TOKEN.OPEN") | Parser.TOKEN_OR -> getErrorString("Parser.TOKEN.OR") | Parser.TOKEN_VOID -> getErrorString("Parser.TOKEN.VOID") | Parser.TOKEN_EXTERN-> getErrorString("Parser.TOKEN.EXTERN") | Parser.TOKEN_INTERFACE -> getErrorString("Parser.TOKEN.INTERFACE") | Parser.TOKEN_REC -> getErrorString("Parser.TOKEN.REC") | Parser.TOKEN_TO -> getErrorString("Parser.TOKEN.TO") | Parser.TOKEN_TRUE -> getErrorString("Parser.TOKEN.TRUE") | Parser.TOKEN_TRY -> getErrorString("Parser.TOKEN.TRY") | Parser.TOKEN_TYPE | Parser.TOKEN_TYPE_COMING_SOON | Parser.TOKEN_TYPE_IS_HERE -> getErrorString("Parser.TOKEN.TYPE") | Parser.TOKEN_VAL -> getErrorString("Parser.TOKEN.VAL") | Parser.TOKEN_INLINE -> getErrorString("Parser.TOKEN.INLINE") | Parser.TOKEN_WHEN -> getErrorString("Parser.TOKEN.WHEN") | Parser.TOKEN_WHILE -> getErrorString("Parser.TOKEN.WHILE") | Parser.TOKEN_WITH-> getErrorString("Parser.TOKEN.WITH") | Parser.TOKEN_IF -> getErrorString("Parser.TOKEN.IF") | Parser.TOKEN_DO -> getErrorString("Parser.TOKEN.DO") | Parser.TOKEN_GLOBAL -> getErrorString("Parser.TOKEN.GLOBAL") | Parser.TOKEN_DONE -> getErrorString("Parser.TOKEN.DONE") | Parser.TOKEN_IN | Parser.TOKEN_JOIN_IN -> getErrorString("Parser.TOKEN.IN") | Parser.TOKEN_HIGH_PRECEDENCE_PAREN_APP-> getErrorString("Parser.TOKEN.HIGH.PRECEDENCE.PAREN.APP") | Parser.TOKEN_HIGH_PRECEDENCE_BRACK_APP-> getErrorString("Parser.TOKEN.HIGH.PRECEDENCE.BRACK.APP") | Parser.TOKEN_BEGIN -> getErrorString("Parser.TOKEN.BEGIN") | Parser.TOKEN_END -> getErrorString("Parser.TOKEN.END") | Parser.TOKEN_HASH_LIGHT | Parser.TOKEN_HASH_LINE | Parser.TOKEN_HASH_IF | Parser.TOKEN_HASH_ELSE | Parser.TOKEN_HASH_ENDIF -> getErrorString("Parser.TOKEN.HASH.ENDIF") | Parser.TOKEN_INACTIVECODE -> getErrorString("Parser.TOKEN.INACTIVECODE") | Parser.TOKEN_LEX_FAILURE-> getErrorString("Parser.TOKEN.LEX.FAILURE") | Parser.TOKEN_WHITESPACE -> getErrorString("Parser.TOKEN.WHITESPACE") | Parser.TOKEN_COMMENT -> getErrorString("Parser.TOKEN.COMMENT") | Parser.TOKEN_LINE_COMMENT -> getErrorString("Parser.TOKEN.LINE.COMMENT") | Parser.TOKEN_STRING_TEXT -> getErrorString("Parser.TOKEN.STRING.TEXT") | Parser.TOKEN_BYTEARRAY -> getErrorString("Parser.TOKEN.BYTEARRAY") | Parser.TOKEN_STRING -> getErrorString("Parser.TOKEN.STRING") | Parser.TOKEN_KEYWORD_STRING -> getErrorString("Parser.TOKEN.KEYWORD_STRING") | Parser.TOKEN_EOF -> getErrorString("Parser.TOKEN.EOF") | Parser.TOKEN_CONST -> getErrorString("Parser.TOKEN.CONST") | unknown -> System.Diagnostics.Debug.Assert(false,"unknown token tag") let result = sprintf "%+A" unknown System.Diagnostics.Debug.Assert(false, result) result match ctxt.CurrentToken with | None -> os.Append(UnexpectedEndOfInputE().Format) |> ignore | Some token -> match (token |> Parser.tagOfToken |> Parser.tokenTagToTokenId), token with | EndOfStructuredConstructToken,_ -> os.Append(OBlockEndSentenceE().Format) |> ignore | Parser.TOKEN_LEX_FAILURE, Parser.LEX_FAILURE str -> Printf.bprintf os "%s" str (* Fix bug://2431 *) | token,_ -> os.Append(UnexpectedE().Format (token |> tokenIdToText)) |> ignore (* Search for a state producing a single recognized non-terminal in the states on the stack *) let foundInContext = (* Merge a bunch of expression non terminals *) let (|NONTERM_Category_Expr|_|) = function | Parser.NONTERM_argExpr|Parser.NONTERM_minusExpr|Parser.NONTERM_parenExpr|Parser.NONTERM_atomicExpr | Parser.NONTERM_appExpr|Parser.NONTERM_tupleExpr|Parser.NONTERM_declExpr|Parser.NONTERM_braceExpr | Parser.NONTERM_typedSeqExprBlock | Parser.NONTERM_interactiveExpr -> Some() | _ -> None (* Merge a bunch of pattern non terminals *) let (|NONTERM_Category_Pattern|_|) = function | Parser.NONTERM_constrPattern|Parser.NONTERM_parenPattern|Parser.NONTERM_atomicPattern -> Some() | _ -> None (* Merge a bunch of if/then/else non terminals *) let (|NONTERM_Category_IfThenElse|_|) = function | Parser.NONTERM_ifExprThen|Parser.NONTERM_ifExprElifs|Parser.NONTERM_ifExprCases -> Some() | _ -> None (* Merge a bunch of non terminals *) let (|NONTERM_Category_SignatureFile|_|) = function | Parser.NONTERM_signatureFile|Parser.NONTERM_moduleSpfn|Parser.NONTERM_moduleSpfns -> Some() | _ -> None let (|NONTERM_Category_ImplementationFile|_|) = function | Parser.NONTERM_implementationFile|Parser.NONTERM_fileNamespaceImpl|Parser.NONTERM_fileNamespaceImpls -> Some() | _ -> None let (|NONTERM_Category_Definition|_|) = function | Parser.NONTERM_fileModuleImpl|Parser.NONTERM_moduleDefn|Parser.NONTERM_interactiveModuleDefns |Parser.NONTERM_moduleDefns|Parser.NONTERM_moduleDefnsOrExpr -> Some() | _ -> None let (|NONTERM_Category_Type|_|) = function | Parser.NONTERM_typ|Parser.NONTERM_tupleType -> Some() | _ -> None let (|NONTERM_Category_Interaction|_|) = function | Parser.NONTERM_interactiveItemsTerminator|Parser.NONTERM_interaction|Parser.NONTERM__startinteraction -> Some() | _ -> None // Canonicalize the categories and check for a unique category ctxt.ReducibleProductions |> List.exists (fun prods -> match prods |> List.map Parser.prodIdxToNonTerminal |> List.map (function | NONTERM_Category_Type -> Parser.NONTERM_typ | NONTERM_Category_Expr -> Parser.NONTERM_declExpr | NONTERM_Category_Pattern -> Parser.NONTERM_atomicPattern | NONTERM_Category_IfThenElse -> Parser.NONTERM_ifExprThen | NONTERM_Category_SignatureFile -> Parser.NONTERM_signatureFile | NONTERM_Category_ImplementationFile -> Parser.NONTERM_implementationFile | NONTERM_Category_Definition -> Parser.NONTERM_moduleDefn | NONTERM_Category_Interaction -> Parser.NONTERM_interaction | nt -> nt) |> Set.ofList |> Set.toList with | [Parser.NONTERM_interaction] -> os.Append(NONTERM_interactionE().Format) |> ignore; true | [Parser.NONTERM_hashDirective] -> os.Append(NONTERM_hashDirectiveE().Format) |> ignore; true | [Parser.NONTERM_fieldDecl] -> os.Append(NONTERM_fieldDeclE().Format) |> ignore; true | [Parser.NONTERM_unionCaseRepr] -> os.Append(NONTERM_unionCaseReprE().Format) |> ignore; true | [Parser.NONTERM_localBinding] -> os.Append(NONTERM_localBindingE().Format) |> ignore; true | [Parser.NONTERM_hardwhiteLetBindings] -> os.Append(NONTERM_hardwhiteLetBindingsE().Format) |> ignore; true | [Parser.NONTERM_classDefnMember] -> os.Append(NONTERM_classDefnMemberE().Format) |> ignore; true | [Parser.NONTERM_defnBindings] -> os.Append(NONTERM_defnBindingsE().Format) |> ignore; true | [Parser.NONTERM_classMemberSpfn] -> os.Append(NONTERM_classMemberSpfnE().Format) |> ignore; true | [Parser.NONTERM_valSpfn] -> os.Append(NONTERM_valSpfnE().Format) |> ignore; true | [Parser.NONTERM_tyconSpfn] -> os.Append(NONTERM_tyconSpfnE().Format) |> ignore; true | [Parser.NONTERM_anonLambdaExpr] -> os.Append(NONTERM_anonLambdaExprE().Format) |> ignore; true | [Parser.NONTERM_attrUnionCaseDecl] -> os.Append(NONTERM_attrUnionCaseDeclE().Format) |> ignore; true | [Parser.NONTERM_cPrototype] -> os.Append(NONTERM_cPrototypeE().Format) |> ignore; true | [Parser.NONTERM_objExpr|Parser.NONTERM_objectImplementationMembers] -> os.Append(NONTERM_objectImplementationMembersE().Format) |> ignore; true | [Parser.NONTERM_ifExprThen|Parser.NONTERM_ifExprElifs|Parser.NONTERM_ifExprCases] -> os.Append(NONTERM_ifExprCasesE().Format) |> ignore; true | [Parser.NONTERM_openDecl] -> os.Append(NONTERM_openDeclE().Format) |> ignore; true | [Parser.NONTERM_fileModuleSpec] -> os.Append(NONTERM_fileModuleSpecE().Format) |> ignore; true | [Parser.NONTERM_patternClauses] -> os.Append(NONTERM_patternClausesE().Format) |> ignore; true | [Parser.NONTERM_beginEndExpr] -> os.Append(NONTERM_beginEndExprE().Format) |> ignore; true | [Parser.NONTERM_recdExpr] -> os.Append(NONTERM_recdExprE().Format) |> ignore; true | [Parser.NONTERM_tyconDefn] -> os.Append(NONTERM_tyconDefnE().Format) |> ignore; true | [Parser.NONTERM_exconCore] -> os.Append(NONTERM_exconCoreE().Format) |> ignore; true | [Parser.NONTERM_typeNameInfo] -> os.Append(NONTERM_typeNameInfoE().Format) |> ignore; true | [Parser.NONTERM_attributeList] -> os.Append(NONTERM_attributeListE().Format) |> ignore; true | [Parser.NONTERM_quoteExpr] -> os.Append(NONTERM_quoteExprE().Format) |> ignore; true | [Parser.NONTERM_typeConstraint] -> os.Append(NONTERM_typeConstraintE().Format) |> ignore; true | [NONTERM_Category_ImplementationFile] -> os.Append(NONTERM_Category_ImplementationFileE().Format) |> ignore; true | [NONTERM_Category_Definition] -> os.Append(NONTERM_Category_DefinitionE().Format) |> ignore; true | [NONTERM_Category_SignatureFile] -> os.Append(NONTERM_Category_SignatureFileE().Format) |> ignore; true | [NONTERM_Category_Pattern] -> os.Append(NONTERM_Category_PatternE().Format) |> ignore; true | [NONTERM_Category_Expr] -> os.Append(NONTERM_Category_ExprE().Format) |> ignore; true | [NONTERM_Category_Type] -> os.Append(NONTERM_Category_TypeE().Format) |> ignore; true | [Parser.NONTERM_typeArgsActual] -> os.Append(NONTERM_typeArgsActualE().Format) |> ignore; true | _ -> false) #if DEBUG if not foundInContext then Printf.bprintf os ". (no 'in' context found: %+A)" (List.map (List.map Parser.prodIdxToNonTerminal) ctxt.ReducibleProductions); #else foundInContext |> ignore // suppress unused variable warning in RELEASE #endif let fix (s:string) = s.Replace(SR.GetString("FixKeyword"),"").Replace(SR.GetString("FixSymbol"),"").Replace(SR.GetString("FixReplace"),"") match (ctxt.ShiftTokens |> List.map Parser.tokenTagToTokenId |> List.filter (function Parser.TOKEN_error | Parser.TOKEN_EOF -> false | _ -> true) |> List.map tokenIdToText |> Set.ofList |> Set.toList) with | [tokenName1] -> os.Append(TokenName1E().Format (fix tokenName1)) |> ignore | [tokenName1;tokenName2] -> os.Append(TokenName1TokenName2E().Format (fix tokenName1) (fix tokenName2)) |> ignore | [tokenName1;tokenName2;tokenName3] -> os.Append(TokenName1TokenName2TokenName3E().Format (fix tokenName1) (fix tokenName2) (fix tokenName3)) |> ignore | _ -> () (* Printf.bprintf os ".\n\n state = %A\n token = %A\n expect (shift) %A\n expect (reduce) %A\n prods=%A\n non terminals: %A" ctxt.StateStack ctxt.CurrentToken (List.map Parser.tokenTagToTokenId ctxt.ShiftTokens) (List.map Parser.tokenTagToTokenId ctxt.ReduceTokens) ctxt.ReducibleProductions (List.mapSquared Parser.prodIdxToNonTerminal ctxt.ReducibleProductions) *) | RuntimeCoercionSourceSealed(denv,ty,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let _, ty, _cxs = PrettyTypes.PrettifyTypes1 denv.g ty if isTyparTy denv.g ty then os.Append(RuntimeCoercionSourceSealed1E().Format (NicePrint.stringOfTy denv ty)) |> ignore else os.Append(RuntimeCoercionSourceSealed2E().Format (NicePrint.stringOfTy denv ty)) |> ignore | CoercionTargetSealed(denv,ty,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let _, ty, _cxs= PrettyTypes.PrettifyTypes1 denv.g ty os.Append(CoercionTargetSealedE().Format (NicePrint.stringOfTy denv ty)) |> ignore | UpcastUnnecessary(_) -> os.Append(UpcastUnnecessaryE().Format) |> ignore | TypeTestUnnecessary(_) -> os.Append(TypeTestUnnecessaryE().Format) |> ignore | QuotationTranslator.IgnoringPartOfQuotedTermWarning (msg,_) -> Printf.bprintf os "%s" msg | OverrideDoesntOverride(denv,impl,minfoVirtOpt,g,amap,m) -> let sig1 = DispatchSlotChecking.FormatOverride denv impl begin match minfoVirtOpt with | None -> os.Append(OverrideDoesntOverride1E().Format sig1) |> ignore | Some minfoVirt -> os.Append(OverrideDoesntOverride2E().Format sig1) |> ignore let sig2 = DispatchSlotChecking.FormatMethInfoSig g amap m denv minfoVirt if sig1 <> sig2 then os.Append(OverrideDoesntOverride3E().Format sig2) |> ignore end | UnionCaseWrongArguments (_,n1,n2,_) -> os.Append(UnionCaseWrongArgumentsE().Format n2 n1) |> ignore | UnionPatternsBindDifferentNames _ -> os.Append(UnionPatternsBindDifferentNamesE().Format) |> ignore | ValueNotContained (denv,mref,implVal,sigVal,f) -> let text1,text2 = NicePrint.minimalStringsOfTwoValues denv implVal sigVal os.Append(f((fullDisplayTextOfModRef mref), text1, text2)) |> ignore | ConstrNotContained (denv,v1,v2,f) -> os.Append(f((NicePrint.stringOfUnionCase denv v1), (NicePrint.stringOfUnionCase denv v2))) |> ignore | ExnconstrNotContained (denv,v1,v2,f) -> os.Append(f((NicePrint.stringOfExnDef denv v1), (NicePrint.stringOfExnDef denv v2))) |> ignore | FieldNotContained (denv,v1,v2,f) -> os.Append(f((NicePrint.stringOfRecdField denv v1), (NicePrint.stringOfRecdField denv v2))) |> ignore | RequiredButNotSpecified (_,mref,k,name,_) -> let nsb = new System.Text.StringBuilder() name nsb; os.Append(RequiredButNotSpecifiedE().Format (fullDisplayTextOfModRef mref) k (nsb.ToString())) |> ignore | UseOfAddressOfOperator _ -> os.Append(UseOfAddressOfOperatorE().Format) |> ignore | DefensiveCopyWarning(s,_) -> os.Append(DefensiveCopyWarningE().Format s) |> ignore | DeprecatedThreadStaticBindingWarning(_) -> os.Append(DeprecatedThreadStaticBindingWarningE().Format) |> ignore | FunctionValueUnexpected (denv,ty,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let _, ty, _cxs = PrettyTypes.PrettifyTypes1 denv.g ty os.Append(FunctionValueUnexpectedE().Format (NicePrint.stringOfTy denv ty)) |> ignore | UnitTypeExpected (denv,ty,perhapsProp,_) -> // REVIEW: consider if we need to show _cxs (the type parameter constrants) let _, ty, _cxs = PrettyTypes.PrettifyTypes1 denv.g ty if perhapsProp then os.Append(UnitTypeExpected2E().Format (NicePrint.stringOfTy denv ty)) |> ignore else os.Append(UnitTypeExpected1E().Format (NicePrint.stringOfTy denv ty)) |> ignore | RecursiveUseCheckedAtRuntime _ -> os.Append(RecursiveUseCheckedAtRuntimeE().Format) |> ignore | LetRecUnsound (_,[v],_) -> os.Append(LetRecUnsound1E().Format v.DisplayName) |> ignore | LetRecUnsound (_,path,_) -> let bos = new System.Text.StringBuilder() (path.Tail @ [path.Head]) |> List.iter (fun (v:ValRef) -> bos.Append(LetRecUnsoundInnerE().Format v.DisplayName) |> ignore) os.Append(LetRecUnsound2E().Format (List.head path).DisplayName (bos.ToString())) |> ignore | LetRecEvaluatedOutOfOrder (_,_,_,_) -> os.Append(LetRecEvaluatedOutOfOrderE().Format) |> ignore | LetRecCheckedAtRuntime _ -> os.Append(LetRecCheckedAtRuntimeE().Format) |> ignore | SelfRefObjCtor(false,_) -> os.Append(SelfRefObjCtor1E().Format) |> ignore | SelfRefObjCtor(true,_) -> os.Append(SelfRefObjCtor2E().Format) |> ignore | VirtualAugmentationOnNullValuedType(_) -> os.Append(VirtualAugmentationOnNullValuedTypeE().Format) |> ignore | NonVirtualAugmentationOnNullValuedType(_) -> os.Append(NonVirtualAugmentationOnNullValuedTypeE().Format) |> ignore | NonUniqueInferredAbstractSlot(_,denv,bindnm,bvirt1,bvirt2,_) -> os.Append(NonUniqueInferredAbstractSlot1E().Format bindnm) |> ignore let ty1 = bvirt1.EnclosingType let ty2 = bvirt2.EnclosingType // REVIEW: consider if we need to show _cxs (the type parameter constrants) let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.Append(NonUniqueInferredAbstractSlot2E().Format) |> ignore if t1 <> t2 then os.Append(NonUniqueInferredAbstractSlot3E().Format t1 t2) |> ignore os.Append(NonUniqueInferredAbstractSlot4E().Format) |> ignore | Error ((_,s),_) -> os.Append(s) |> ignore | NumberedError ((_,s),_) -> os.Append(s) |> ignore | InternalError (s,_) | InvalidArgument s | Failure s as exn -> ignore exn // use the argument, even in non DEBUG let f1 = SR.GetString("Failure1") let f2 = SR.GetString("Failure2") match s with | f when f = f1 -> os.Append(Failure3E().Format s) |> ignore | f when f = f2 -> os.Append(Failure3E().Format s) |> ignore | _ -> os.Append(Failure4E().Format s) |> ignore #if DEBUG Printf.bprintf os "\nStack Trace\n%s\n" (exn.ToString()) if !showAssertForUnexpectedException then System.Diagnostics.Debug.Assert(false,sprintf "Bug seen in compiler: %s" (exn.ToString())) #endif | FullAbstraction(s,_) -> os.Append(FullAbstractionE().Format s) |> ignore | WrappedError (exn,_) -> OutputExceptionR os exn | Patcompile.MatchIncomplete (isComp,cexOpt,_) -> os.Append(MatchIncomplete1E().Format) |> ignore match cexOpt with | None -> () | Some (cex,false) -> os.Append(MatchIncomplete2E().Format cex) |> ignore | Some (cex,true) -> os.Append(MatchIncomplete3E().Format cex) |> ignore if isComp then os.Append(MatchIncomplete4E().Format) |> ignore | Patcompile.RuleNeverMatched _ -> os.Append(RuleNeverMatchedE().Format) |> ignore | ValNotMutable _ -> os.Append(ValNotMutableE().Format) |> ignore | ValNotLocal _ -> os.Append(ValNotLocalE().Format) |> ignore | ObsoleteError (s, _) | ObsoleteWarning (s, _) -> os.Append(Obsolete1E().Format) |> ignore if s <> "" then os.Append(Obsolete2E().Format s) |> ignore | Experimental (s, _) -> os.Append(ExperimentalE().Format s) |> ignore | PossibleUnverifiableCode _ -> os.Append(PossibleUnverifiableCodeE().Format) |> ignore | UserCompilerMessage (msg, _, _) -> os.Append(msg) |> ignore | Deprecated(s, _) -> os.Append(DeprecatedE().Format s) |> ignore | LibraryUseOnly(_) -> os.Append(LibraryUseOnlyE().Format) |> ignore | MissingFields(sl,_) -> os.Append(MissingFieldsE().Format (String.concat "," sl + ".")) |> ignore | ValueRestriction(denv,hassig,v,_,_) -> let denv = { denv with showImperativeTyparAnnotations=true; } let tau = v.TauType if hassig then if isFunTy denv.g tau && (arityOfVal v).HasNoArgs then os.Append(ValueRestriction1E().Format v.DisplayName (NicePrint.stringOfQualifiedValOrMember denv v) v.DisplayName) |> ignore else os.Append(ValueRestriction2E().Format v.DisplayName (NicePrint.stringOfQualifiedValOrMember denv v) v.DisplayName) |> ignore else match v.MemberInfo with | Some(membInfo) when begin match membInfo.MemberFlags.MemberKind with | MemberKind.PropertyGet | MemberKind.PropertySet | MemberKind.Constructor -> true (* can't infer extra polymorphism *) | _ -> false (* can infer extra polymorphism *) end -> os.Append(ValueRestriction3E().Format (NicePrint.stringOfQualifiedValOrMember denv v)) |> ignore | _ -> if isFunTy denv.g tau && (arityOfVal v).HasNoArgs then os.Append(ValueRestriction4E().Format v.DisplayName (NicePrint.stringOfQualifiedValOrMember denv v) v.DisplayName) |> ignore else os.Append(ValueRestriction5E().Format v.DisplayName (NicePrint.stringOfQualifiedValOrMember denv v) v.DisplayName) |> ignore | Parsing.RecoverableParseError -> os.Append(RecoverableParseErrorE().Format) |> ignore | ReservedKeyword (s,_) -> os.Append(ReservedKeywordE().Format s) |> ignore | IndentationProblem (s,_) -> os.Append(IndentationProblemE().Format s) |> ignore | OverrideInIntrinsicAugmentation(_) -> os.Append(OverrideInIntrinsicAugmentationE().Format) |> ignore | OverrideInExtrinsicAugmentation(_) -> os.Append(OverrideInExtrinsicAugmentationE().Format) |> ignore | IntfImplInIntrinsicAugmentation(_) -> os.Append(IntfImplInIntrinsicAugmentationE().Format) |> ignore | IntfImplInExtrinsicAugmentation(_) -> os.Append(IntfImplInExtrinsicAugmentationE().Format) |> ignore | UnresolvedReferenceError(assemblyname,_) | UnresolvedReferenceNoRange(assemblyname) -> os.Append(UnresolvedReferenceNoRangeE().Format assemblyname) |> ignore | UnresolvedPathReference(assemblyname,pathname,_) | UnresolvedPathReferenceNoRange(assemblyname,pathname) -> os.Append(UnresolvedPathReferenceNoRangeE().Format pathname assemblyname) |> ignore | DeprecatedCommandLineOptionFull(fullText,_) -> os.Append(fullText) |> ignore | DeprecatedCommandLineOptionForHtmlDoc(optionName,_) -> os.Append(FSComp.SR.optsDCLOHtmlDoc(optionName)) |> ignore | DeprecatedCommandLineOptionSuggestAlternative(optionName,altOption,_) -> os.Append(FSComp.SR.optsDCLODeprecatedSuggestAlternative(optionName, altOption)) |> ignore | InternalCommandLineOption(optionName,_) -> os.Append(FSComp.SR.optsInternalNoDescription(optionName)) |> ignore | DeprecatedCommandLineOptionNoDescription(optionName,_) -> os.Append(FSComp.SR.optsDCLONoDescription(optionName)) |> ignore | HashIncludeNotAllowedInNonScript(_) -> os.Append(HashIncludeNotAllowedInNonScriptE().Format) |> ignore | HashReferenceNotAllowedInNonScript(_) -> os.Append(HashReferenceNotAllowedInNonScriptE().Format) |> ignore | HashDirectiveNotAllowedInNonScript(_) -> os.Append(HashDirectiveNotAllowedInNonScriptE().Format) |> ignore | FileNameNotResolved(filename,locations,_) -> os.Append(FileNameNotResolvedE().Format filename locations) |> ignore | AssemblyNotResolved(originalName,_) -> os.Append(AssemblyNotResolvedE().Format originalName) |> ignore | IllegalFileNameChar(fileName,invalidChar) -> os.Append(FSComp.SR.buildUnexpectedFileNameCharacter(fileName,string invalidChar)|>snd) |> ignore | HashLoadedSourceHasIssues(warnings,errors,_) -> let Emit(l:exn list) = OutputExceptionR os (List.head l) if errors=[] then os.Append(HashLoadedSourceHasIssues1E().Format) |> ignore Emit(warnings) else os.Append(HashLoadedSourceHasIssues2E().Format) |> ignore Emit(errors) | HashLoadedScriptConsideredSource(_) -> os.Append(HashLoadedScriptConsideredSourceE().Format) |> ignore | InvalidInternalsVisibleToAssemblyName(badName,fileNameOption) -> match fileNameOption with | Some file -> os.Append(InvalidInternalsVisibleToAssemblyName1E().Format badName file) |> ignore | None -> os.Append(InvalidInternalsVisibleToAssemblyName2E().Format badName) |> ignore | LoadedSourceNotFoundIgnoring(filename,_) -> os.Append(LoadedSourceNotFoundIgnoringE().Format filename) |> ignore | MSBuildReferenceResolutionWarning(code,message,_) | MSBuildReferenceResolutionError(code,message,_) -> os.Append(MSBuildReferenceResolutionErrorE().Format message code) |> ignore // Strip TargetInvocationException wrappers | :? System.Reflection.TargetInvocationException as e -> OutputExceptionR os e.InnerException | :? FileNotFoundException as e -> Printf.bprintf os "%s" e.Message | :? DirectoryNotFoundException as e -> Printf.bprintf os "%s" e.Message | :? System.ArgumentException as e -> Printf.bprintf os "%s" e.Message | :? System.NotSupportedException as e -> Printf.bprintf os "%s" e.Message | :? IOException as e -> Printf.bprintf os "%s" e.Message | :? System.UnauthorizedAccessException as e -> Printf.bprintf os "%s" e.Message | e -> os.Append(TargetInvocationExceptionWrapperE().Format e.Message) |> ignore #if DEBUG Printf.bprintf os "\nStack Trace\n%s\n" (e.ToString()) if !showAssertForUnexpectedException then System.Diagnostics.Debug.Assert(false,sprintf "Bug seen in compiler: %s" (e.ToString())) #endif OutputExceptionR os (err.Exception) // remove any newlines and tabs let OutputPhasedError (os:System.Text.StringBuilder) (err:PhasedError) (flattenErrors:bool) = let buf = new System.Text.StringBuilder() OutputPhasedErrorR buf err let s = if flattenErrors then ErrorLogger.NormalizeErrorString (buf.ToString()) else buf.ToString() os.Append(s) |> ignore type ErrorStyle = | DefaultErrors | EmacsErrors | TestErrors | VSErrors | GccErrors let SanitizeFileName fileName implicitIncludeDir = // The assert below is almost ok, but it fires in two cases: // - fsi.exe sometimes passes "stdin" as a dummy filename // - if you have a #line directive, e.g. // # 1000 "Line01.fs" // then it also asserts. But these are edge cases that can be fixed later, e.g. in bug 4651. //System.Diagnostics.Debug.Assert(System.IO.Path.IsPathRooted(fileName), sprintf "filename should be absolute: '%s'" fileName) try let fullPath = FileSystem.GetFullPathShim(fileName) let currentDir = implicitIncludeDir // if the file name is not rooted in the current directory, return the full path if not(fullPath.StartsWith(currentDir)) then fullPath // if the file name is rooted in the current directory, return the relative path else fullPath.Replace(currentDir+"\\","") with _ -> fileName (* used by fsc.exe and fsi.exe, but not by VS *) let rec OutputErrorOrWarning (implicitIncludeDir,showFullPaths,flattenErrors,errorStyle,warn) os (err:PhasedError) = let outputWhere (showFullPaths,errorStyle) os m = if m = rangeStartup || m = rangeCmdArgs then () else let file = m.FileName let file = if showFullPaths then Filename.fullpath implicitIncludeDir file else SanitizeFileName file implicitIncludeDir match errorStyle with | ErrorStyle.EmacsErrors -> Printf.bprintf os "File \"%s\", line %d, characters %d-%d: " (file.Replace("\\","/")) m.StartLine m.StartColumn m.EndColumn // We're adjusting the columns here to be 1-based - both for parity with C# and for MSBuild, which assumes 1-based columns for error output | ErrorStyle.DefaultErrors -> Printf.bprintf os "%s(%d,%d): " (file.Replace('/',System.IO.Path.DirectorySeparatorChar)) m.StartLine (m.StartColumn + 1) | ErrorStyle.GccErrors -> Printf.bprintf os "%s:%d:%d: " (file.Replace('/',System.IO.Path.DirectorySeparatorChar)) m.StartLine (m.StartColumn + 1) // We may also want to change TestErrors to be 1-based | ErrorStyle.TestErrors -> Printf.bprintf os "%s(%d,%d-%d,%d): " (file.Replace("/","\\")) m.StartLine (m.StartColumn + 1) m.EndLine (m.EndColumn + 1) // Here, we want the complete range information so Project Systems can generate proper squiggles | ErrorStyle.VSErrors -> // Show prefix only for real files. Otherise, we just want a truncated error like: // parse error FS0031 : blah blah if m<>range0 && m<>rangeStartup && m<>rangeCmdArgs then Printf.bprintf os "%s(%d,%d,%d,%d): " (file.Replace("/","\\")) m.StartLine (m.StartColumn + 1) m.EndLine (m.EndColumn + 1) match err.Exception with | ReportedError _ -> dprintf "Unexpected ReportedError" (* this should actually never happen *) | StopProcessing -> dprintf "Unexpected StopProcessing" (* this should actually never happen *) | _ -> let report err = let OutputWhere(err) = Printf.bprintf os "\n"; match RangeOfError err with | Some m -> outputWhere (showFullPaths,errorStyle) os m | None -> () let OutputCanonicalInformation(err:PhasedError,subcategory, errorNumber) = match errorStyle with // Show the subcategory for --vserrors so that we can fish it out in Visual Studio and use it to determine error stickiness. | ErrorStyle.VSErrors -> Printf.bprintf os "%s %s FS%04d: " subcategory (if warn then "warning" else "error") errorNumber; | _ -> Printf.bprintf os "%s FS%04d: " (if warn then "warning" else "error") (GetErrorNumber err); let mainError,relatedErrors = SplitRelatedErrors err OutputWhere(mainError) OutputCanonicalInformation(mainError,err.Subcategory(),GetErrorNumber mainError) OutputPhasedError os mainError flattenErrors; let OutputRelatedError(err) = match errorStyle with // Give a canonical string when --vserror. | ErrorStyle.VSErrors -> OutputWhere(mainError) // mainError? OutputCanonicalInformation(err, err.Subcategory(),GetErrorNumber mainError) // Use main error for code OutputPhasedError os err flattenErrors | _ -> Printf.bprintf os "\n"; OutputPhasedError os err flattenErrors relatedErrors |> List.iter OutputRelatedError match err with #if EXTENSIONTYPING | {Exception = (:? TypeProviderError as tpe)} -> tpe.Iter (fun e -> let newErr = {err with Exception = e} report newErr ) #endif | x -> report x let OutputErrorOrWarningContext prefix fileLineFn os err = match RangeOfError err with | None -> () | Some m -> let filename = m.FileName let lineA = m.StartLine let lineB = m.EndLine let line = fileLineFn filename lineA if line<>"" then let iA = m.StartColumn let iB = m.EndColumn let iLen = if lineA = lineB then max (iB - iA) 1 else 1 Printf.bprintf os "%s%s\n" prefix line; Printf.bprintf os "%s%s%s\n" prefix (String.make iA '-') (String.make iLen '^') //---------------------------------------------------------------------------- let GetFSharpCoreLibraryName () = "FSharp.Core" #if SILVERLIGHT let GetFsiLibraryName () = "FSharp.Compiler.Silverlight" #else let GetFsiLibraryName () = "FSharp.Compiler.Interactive.Settings" #endif // This list is the default set of references for "non-project" files. // // These DLLs are // (a) included in the environment used for all .fsx files (see service.fs) // (b) included in environment for files 'orphaned' from a project context // -- for orphaned files (files in VS without a project context) // -- for files given on a command line without --noframework set let DefaultBasicReferencesForOutOfProjectSources = [ #if SILVERLIGHT yield "System.dll" yield "System.Xml.dll" yield "System.Core.dll" yield "System.Net.dll"] #else yield "System" yield "System.Xml" yield "System.Runtime.Remoting" yield "System.Runtime.Serialization.Formatters.Soap" yield "System.Data" yield "System.Drawing" // Don't reference System.Core for .NET 2.0 compilations. // // We only use a default reference to System.Core if one exists which we can load it into the compiler process. // Note: this is not a partiuclarly good technique as it relying on the environment the compiler is executing in // to determine the default references. However, System.Core will only fail to load on machines with only .NET 2.0, // in which case the compiler will also be running as a .NET 2.0 process. if (try System.Reflection.Assembly.Load "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" |> ignore; true with _ -> false) then yield "System.Core" yield "System.Web" yield "System.Web.Services" yield "System.Windows.Forms" ] #endif // Extra implicit references for .NET 4.0 let DefaultBasicReferencesForOutOfProjectSources40 = [ "System.Numerics" ] // A set of assemblies to always consider to be system assemblies let SystemAssemblies (mscorlibAssemblyName, mscorlibVersion: System.Version, mscorlibIsSilverlight) = ignore mscorlibVersion #if SILVERLIGHT [ yield mscorlibAssemblyName yield GetFSharpCoreLibraryName() yield "System" yield "System.Xml" yield "System.Core" yield "System.Net" yield "System.Observable" ] #else [ yield mscorlibAssemblyName yield GetFSharpCoreLibraryName() yield "System" yield "System.Xml" yield "System.Core" yield "System.Net" yield "System.Runtime.Remoting" yield "System.Runtime.Serialization.Formatters.Soap" yield "System.Data" yield "System.Deployment" yield "System.Design" yield "System.Messaging" yield "System.Drawing" yield "System.Web" yield "System.Web.Services" yield "System.Windows.Forms" // Include System.Observable in the potential-system-assembly set // on WP7. Note that earlier versions of silverlight did not have this DLL, but // it is OK to over-approximate the system assembly set. if mscorlibIsSilverlight then yield "System.Observable" if mscorlibVersion.Major >= 4 then yield "System.Numerics"] #endif // The set of references entered into the TcConfigBuilder for scripts prior to computing // the load closure. // // REVIEW: it isn't clear if there is any negative effect // of leaving an assembly off this list. let BasicReferencesForScriptLoadClosure = #if SILVERLIGHT ["mscorlib.dll"; GetFSharpCoreLibraryName()+".dll" ] @ // Need to resolve these explicitly so they will be found in the reference assemblies directory which is where the .xml files are. DefaultBasicReferencesForOutOfProjectSources @ [ GetFsiLibraryName()+".dll" ] #else ["mscorlib"; GetFSharpCoreLibraryName () ] @ // Need to resolve these explicitly so they will be found in the reference assemblies directory which is where the .xml files are. DefaultBasicReferencesForOutOfProjectSources @ [ GetFsiLibraryName() ] #endif let (++) x s = x @ [s] /// Determine the default "frameworkVersion" (which is passed into MSBuild resolve). /// If this binary was built for v4, the return "v4.0" or "v4.5" /// If this binary was built for v2, the return "v3.5", "v3.5" or "v2.0" depending on what is installed. /// /// See: Detecting which versions of the .NET framework are installed. /// http://blogs.msdn.com/aaronru/archive/2007/11/26/net-framework-3-5-rtm-detection-logic.aspx /// See: bug 4409. open Microsoft.Win32 let highestInstalledNetFrameworkVersionMajorMinor() = #if SILVERLIGHT #if FX_ATLEAST_SILVERLIGHT_50 System.Version(4,0,5,0),"v5.0" #else System.Version(2,0,5,0),"v2.0" #endif #else try let net45 = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.5","",1) = box 1 if net45 then System.Version(4,0,0,0),"v4.5" else System.Version(4,0,0,0),"v4.0" // version is 4.0 assumed since this code is running. with e -> System.Version(4,0,0,0),"v4.0" #endif // SILVERLIGHT //---------------------------------------------------------------------------- // General file name resolver //-------------------------------------------------------------------------- /// Will return None if the filename is not found. let TryResolveFileUsingPaths(paths,m,name) = let () = try FileSystem.IsPathRootedShim(name) |> ignore with :? System.ArgumentException as e -> error(Error(FSComp.SR.buildProblemWithFilename(name,e.Message),m)) if FileSystem.IsPathRootedShim(name) && FileSystem.SafeExists name then Some name else let res = paths |> List.tryPick (fun path -> let n = Path.Combine (path, name) if FileSystem.SafeExists n then Some n else None) res /// Will raise FileNameNotResolved if the filename was not found let ResolveFileUsingPaths(paths,m,name) = match TryResolveFileUsingPaths(paths,m,name) with | Some(res) -> res | None -> let searchMessage = String.concat "\n " paths raise (FileNameNotResolved(name,searchMessage,m)) let GetWarningNumber(m,s:string) = try Some (int32 s) with err -> warning(Error(FSComp.SR.buildInvalidWarningNumber(s),m)); None let ComputeMakePathAbsolute implicitIncludeDir (path : string) = try // remove any quotation marks from the path first let path = path.Replace("\"","") if not (FileSystem.IsPathRootedShim(path)) then Path.Combine (implicitIncludeDir, path) else path with :? System.ArgumentException -> path //---------------------------------------------------------------------------- // Configuration //-------------------------------------------------------------------------- type CompilerTarget = | WinExe | ConsoleExe | Dll | Module member x.IsExe = (match x with ConsoleExe | WinExe -> true | _ -> false) type ResolveAssemblyReferenceMode = Speculative | ReportErrors type VersionFlag = | VersionString of string | VersionFile of string | VersionNone member x.GetVersionInfo(implicitIncludeDir) = let vstr = x.GetVersionString(implicitIncludeDir) try IL.parseILVersion vstr with _ -> errorR(Error(FSComp.SR.buildInvalidVersionString(vstr),rangeStartup)) ; IL.parseILVersion "0.0.0.0" member x.GetVersionString(implicitIncludeDir) = match x with | VersionString s -> s | VersionFile s -> let s = if FileSystem.IsPathRootedShim(s) then s else Path.Combine(implicitIncludeDir,s) if not(FileSystem.SafeExists(s)) then errorR(Error(FSComp.SR.buildInvalidVersionFile(s),rangeStartup)) ; "0.0.0.0" else use is = System.IO.File.OpenText s is.ReadLine() | VersionNone -> "0.0.0.0" type AssemblyReference = | AssemblyReference of range * string member x.Range = (let (AssemblyReference(m,_)) = x in m) member x.Text = (let (AssemblyReference(_,text)) = x in text) member x.SimpleAssemblyNameIs(name) = (String.Compare(fileNameWithoutExtension x.Text, name, StringComparison.OrdinalIgnoreCase) = 0) || (let text = x.Text.ToLowerInvariant() not (text.Contains "/") && not (text.Contains "\\") && not (text.Contains ".dll") && not (text.Contains ".exe") && try let aname = System.Reflection.AssemblyName(x.Text) in aname.Name = name with _ -> false) override x.ToString() = sprintf "AssemblyReference(%s)" x.Text type UnresolvedAssemblyReference = UnresolvedAssemblyReference of string * AssemblyReference list #if EXTENSIONTYPING type ResolvedExtensionReference = ResolvedExtensionReference of string * AssemblyReference list * Tainted list #endif type TcConfigBuilder = { mutable mscorlibAssemblyName : string; mutable autoResolveOpenDirectivesToDlls: bool; mutable noFeedback: bool; mutable stackReserveSize: int32 option; mutable implicitIncludeDir: string; (* normally "." *) mutable openBinariesInMemory: bool; (* false for command line, true for VS *) mutable openDebugInformationForLaterStaticLinking: bool; (* only for --standalone *) defaultFSharpBinariesDir: string; mutable compilingFslib: bool; mutable compilingFslib20: string option; mutable compilingFslib40: bool; mutable useIncrementalBuilder: bool; mutable includes: string list; mutable implicitOpens: string list; mutable useFsiAuxLib: bool; mutable framework: bool; mutable resolutionEnvironment : Microsoft.FSharp.Compiler.MSBuildResolver.ResolutionEnvironment mutable implicitlyResolveAssemblies: bool; mutable addVersionSpecificFrameworkReferences: bool; mutable light: bool option; mutable conditionalCompilationDefines: string list; mutable loadedSources: (range * string) list; mutable referencedDLLs : AssemblyReference list; mutable knownUnresolvedReferences : UnresolvedAssemblyReference list; optimizeForMemory: bool; mutable subsystemVersion : int * int mutable useHighEntropyVA : bool mutable inputCodePage: int option; mutable embedResources : string list; mutable globalWarnAsError: bool; mutable globalWarnLevel: int; mutable specificWarnOff: int list; mutable specificWarnOn: int list; mutable specificWarnAsError: int list mutable specificWarnAsWarn : int list mutable mlCompatibility: bool; mutable checkOverflow: bool; mutable showReferenceResolutions:bool; mutable outputFile : string option; mutable resolutionFrameworkRegistryBase : string; mutable resolutionAssemblyFoldersSuffix : string; mutable resolutionAssemblyFoldersConditions : string; mutable platform : ILPlatform option; mutable prefer32Bit : bool; mutable useMonoResolution : bool mutable target : CompilerTarget mutable debuginfo : bool mutable testFlagEmitFeeFeeAs100001 : bool; mutable dumpDebugInfo : bool mutable debugSymbolFile : string option (* Backend configuration *) mutable typeCheckOnly : bool mutable parseOnly : bool mutable importAllReferencesOnly : bool mutable simulateException : string option mutable printAst : bool mutable tokenizeOnly : bool mutable testInteractionParser : bool mutable reportNumDecls : bool mutable printSignature : bool mutable printSignatureFile : string mutable xmlDocOutputFile : string option mutable stats : bool mutable generateFilterBlocks : bool (* don't generate filter blocks due to bugs on Mono *) mutable signer : string option mutable container : string option mutable delaysign : bool mutable version : VersionFlag mutable metadataVersion : string option mutable standalone : bool mutable extraStaticLinkRoots : string list mutable noSignatureData : bool mutable onlyEssentialOptimizationData : bool mutable useOptimizationDataFile : bool mutable useSignatureDataFile : bool mutable jitTracking : bool mutable ignoreSymbolStoreSequencePoints : bool mutable internConstantStrings : bool mutable extraOptimizationIterations : int mutable win32res : string mutable win32manifest : string mutable includewin32manifest : bool mutable linkResources : string list mutable showFullPaths : bool mutable errorStyle : ErrorStyle mutable validateTypeProviders: bool mutable utf8output : bool mutable flatErrors: bool mutable maxErrors : int mutable abortOnError : bool (* intended for fsi scripts that should exit on first error *) mutable baseAddress : int32 option #if DEBUG mutable writeGeneratedILFiles : bool (* write il files? *) mutable showOptimizationData : bool #endif mutable showTerms : bool (* show terms between passes? *) mutable writeTermsToFiles : bool (* show terms to files? *) mutable doDetuple : bool (* run detuple pass? *) mutable doTLR : bool (* run TLR pass? *) mutable doFinalSimplify : bool (* do final simplification pass *) mutable optsOn : bool (* optimizations are turned on *) mutable optSettings : Opt.OptimizationSettings mutable emitTailcalls : bool mutable lcid : int option mutable productNameForBannerText : string /// show the MS (c) notice, e.g. with help or fsi? mutable showBanner : bool /// show times between passes? mutable showTimes : bool mutable showLoadedAssemblies : bool mutable continueAfterParseFailure : bool #if EXTENSIONTYPING /// show messages about extension type resolution? mutable showExtensionTypeMessages : bool #endif /// pause between passes? mutable pause : bool /// use reflection and indirect calls to call methods taking multidimensional generic arrays mutable indirectCallArrayMethods : bool /// whenever possible, emit callvirt instead of call mutable alwaysCallVirt : bool /// if true, strip away data that would not be of use to end users, but is useful to us for debugging // REVIEW: "stripDebugData"? mutable noDebugData : bool /// if true, indicates all type checking and code generation is in the context of fsi.exe isInteractive : bool isInvalidationSupported : bool } static member CreateNew (defaultFSharpBinariesDir,optimizeForMemory,implicitIncludeDir,isInteractive,isInvalidationSupported) = #if SILVERLIGHT #else System.Diagnostics.Debug.Assert(FileSystem.IsPathRootedShim(implicitIncludeDir), sprintf "implicitIncludeDir should be absolute: '%s'" implicitIncludeDir) if (String.IsNullOrEmpty(defaultFSharpBinariesDir)) then failwith "Expected a valid defaultFSharpBinariesDir" #endif { mscorlibAssemblyName = "mscorlib"; light = None; noFeedback=false; stackReserveSize=None; conditionalCompilationDefines=[]; implicitIncludeDir = implicitIncludeDir; autoResolveOpenDirectivesToDlls = false; openBinariesInMemory = false; openDebugInformationForLaterStaticLinking=false; defaultFSharpBinariesDir=defaultFSharpBinariesDir; compilingFslib=false; compilingFslib20=None; compilingFslib40=false; useIncrementalBuilder=false; useFsiAuxLib=false; implicitOpens=[]; includes=[]; resolutionEnvironment=MSBuildResolver.CompileTimeLike framework=true; implicitlyResolveAssemblies=true; addVersionSpecificFrameworkReferences=false; referencedDLLs = []; knownUnresolvedReferences = []; loadedSources = []; globalWarnAsError=false; globalWarnLevel=3; specificWarnOff=[]; specificWarnOn=[]; specificWarnAsError=[] specificWarnAsWarn=[] embedResources = []; inputCodePage=None; optimizeForMemory=optimizeForMemory; subsystemVersion = 4,0 // per spec for 357994 useHighEntropyVA = false mlCompatibility=false; checkOverflow=false; showReferenceResolutions=false; outputFile=None; resolutionFrameworkRegistryBase = "Software\Microsoft\.NetFramework"; resolutionAssemblyFoldersSuffix = "AssemblyFoldersEx"; resolutionAssemblyFoldersConditions = ""; platform = None; prefer32Bit = false; useMonoResolution = runningOnMono target = ConsoleExe debuginfo = false testFlagEmitFeeFeeAs100001 = false dumpDebugInfo = false debugSymbolFile = None (* Backend configuration *) typeCheckOnly = false parseOnly = false importAllReferencesOnly = false simulateException = None printAst = false tokenizeOnly = false testInteractionParser = false reportNumDecls = false printSignature = false printSignatureFile = "" xmlDocOutputFile = None stats = false generateFilterBlocks = false (* don't generate filter blocks *) signer = None container = None maxErrors = 100 abortOnError = false baseAddress = None delaysign = false version = VersionNone metadataVersion = None standalone = false extraStaticLinkRoots = [] noSignatureData = false onlyEssentialOptimizationData = false useOptimizationDataFile = false useSignatureDataFile = false jitTracking = true ignoreSymbolStoreSequencePoints = false internConstantStrings = true extraOptimizationIterations = 0 win32res = "" win32manifest = "" includewin32manifest = true linkResources = [] showFullPaths =false errorStyle = ErrorStyle.DefaultErrors #if COMPILED_AS_LANGUAGE_SERVICE_DLL validateTypeProviders = true #else validateTypeProviders = false #endif utf8output = false flatErrors = false #if DEBUG writeGeneratedILFiles = false (* write il files? *) showOptimizationData = false #endif showTerms = false writeTermsToFiles = false doDetuple = false doTLR = false doFinalSimplify = false optsOn = false optSettings = Opt.OptimizationSettings.Defaults emitTailcalls = true lcid = None productNameForBannerText = (FSComp.SR.buildProductName(FSharpEnvironment.DotNetBuildString)) showBanner = true showTimes = false showLoadedAssemblies = false continueAfterParseFailure = false #if EXTENSIONTYPING showExtensionTypeMessages = false #endif pause = false indirectCallArrayMethods = false alwaysCallVirt = true noDebugData = false isInteractive = isInteractive isInvalidationSupported = isInvalidationSupported } member tcConfigB.ResolveSourceFile(m,nm,pathLoadedFrom) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) ResolveFileUsingPaths(tcConfigB.includes @ [pathLoadedFrom],m,nm) /// Decide names of output file, pdb and assembly member tcConfigB.DecideNames sourceFiles = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) if sourceFiles = [] then errorR(Error(FSComp.SR.buildNoInputsSpecified(),rangeCmdArgs)); let ext() = match tcConfigB.target with Dll -> ".dll" | Module -> ".netmodule" | ConsoleExe | WinExe -> ".exe" let implFiles = sourceFiles |> List.filter (fun lower -> List.exists (Filename.checkSuffix (String.lowercase lower)) implSuffixes) let outfile = match tcConfigB.outputFile, List.rev implFiles with | None,[] -> "out" + ext() | None, h :: _ -> let basic = fileNameOfPath h let modname = try Filename.chopExtension basic with _ -> basic modname+(ext()) | Some f,_ -> f let assemblyName = let baseName = fileNameOfPath outfile if not (Filename.checkSuffix (String.lowercase baseName) (ext())) then errorR(Error(FSComp.SR.buildMismatchOutputExtension(),rangeCmdArgs)); fileNameWithoutExtension baseName let pdbfile : string option = #if SILVERLIGHT None #else if tcConfigB.debuginfo then #if NO_PDB_WRITER Some (match tcConfigB.debugSymbolFile with None -> (Filename.chopExtension outfile)+ (if runningOnMono then ".mdb" else ".pdb") | Some f -> f) #else Some (match tcConfigB.debugSymbolFile with | None -> Microsoft.FSharp.Compiler.AbstractIL.Internal.Support.getDebugFileName outfile | Some _ when runningOnMono -> // On Mono, the name of the debug file has to be ".mdb" so specifying it explicitly is an error warning(Error(FSComp.SR.ilwriteMDBFileNameCannotBeChangedWarning(),rangeCmdArgs)) ; () Microsoft.FSharp.Compiler.AbstractIL.Internal.Support.getDebugFileName outfile | Some f -> f) #endif elif (tcConfigB.debugSymbolFile <> None) && (not (tcConfigB.debuginfo)) then error(Error(FSComp.SR.buildPdbRequiresDebug(),rangeStartup)) else None #endif tcConfigB.outputFile <- Some(outfile) outfile,pdbfile,assemblyName member tcConfigB.TurnWarningOff(m,s:string) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) match GetWarningNumber(m,s) with | None -> () | Some n -> // nowarn:62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus if n = 62 then tcConfigB.mlCompatibility <- true; tcConfigB.specificWarnOff <- ListSet.insert (=) n tcConfigB.specificWarnOff member tcConfigB.TurnWarningOn(m, s:string) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) match GetWarningNumber(m,s) with | None -> () | Some n -> // warnon 62 turns on mlCompatibility, e.g. shows ML compat items in intellisense menus if n = 62 then tcConfigB.mlCompatibility <- false; tcConfigB.specificWarnOn <- ListSet.insert (=) n tcConfigB.specificWarnOn member tcConfigB.AddIncludePath (m,path,pathIncludedFrom) = let absolutePath = ComputeMakePathAbsolute pathIncludedFrom path let ok = let existsOpt = try Some(Directory.Exists(absolutePath)) with e -> warning(Error(FSComp.SR.buildInvalidSearchDirectory(path),m)); None match existsOpt with | Some(exists) -> if not exists then warning(Error(FSComp.SR.buildSearchDirectoryNotFound(absolutePath),m)); exists | None -> false if ok && not (List.mem absolutePath tcConfigB.includes) then tcConfigB.includes <- tcConfigB.includes ++ absolutePath member tcConfigB.AddLoadedSource(m,path,pathLoadedFrom) = if Path.IsInvalidPath(path) then warning(Error(FSComp.SR.buildInvalidFilename(path),m)) else let path = match TryResolveFileUsingPaths(tcConfigB.includes @ [pathLoadedFrom],m,path) with | Some(path) -> path | None -> // File doesn't exist in the paths. Assume it will be in the load-ed from directory. ComputeMakePathAbsolute pathLoadedFrom path if not (List.mem path (List.map snd tcConfigB.loadedSources)) then tcConfigB.loadedSources <- tcConfigB.loadedSources ++ (m,path) member tcConfigB.AddEmbeddedResource filename = tcConfigB.embedResources <- tcConfigB.embedResources ++ filename member tcConfigB.AddReferencedAssemblyByPath (m,path) = if Path.IsInvalidPath(path) then warning(Error(FSComp.SR.buildInvalidAssemblyName(path),m)) elif not (List.mem (AssemblyReference(m,path)) tcConfigB.referencedDLLs) then // NOTE: We keep same paths if range is different. tcConfigB.referencedDLLs <- tcConfigB.referencedDLLs ++ AssemblyReference(m,path) member tcConfigB.RemoveReferencedAssemblyByPath (m,path) = tcConfigB.referencedDLLs <- List.filter (fun (ar : AssemblyReference) -> ar <> AssemblyReference(m,path)) tcConfigB.referencedDLLs static member SplitCommandLineResourceInfo ri = if String.contains ri ',' then let p = String.index ri ',' let file = String.sub ri 0 p let rest = String.sub ri (p+1) (String.length ri - p - 1) if String.contains rest ',' then let p = String.index rest ',' let name = String.sub rest 0 p+".resources" let pubpri = String.sub rest (p+1) (rest.Length - p - 1) if pubpri = "public" then file,name,ILResourceAccess.Public elif pubpri = "private" then file,name,ILResourceAccess.Private else error(Error(FSComp.SR.buildInvalidPrivacy(pubpri),rangeStartup)) else file,rest,ILResourceAccess.Public else ri,fileNameOfPath ri,ILResourceAccess.Public let OpenILBinary(filename,optimizeForMemory,openBinariesInMemory,ilGlobalsOpt,pdbPathOption,mscorlibAssemblyName,noDebugData) = let ilGlobals = match ilGlobalsOpt with | None -> mkILGlobals ILScopeRef.Local (Some mscorlibAssemblyName) (noDebugData, true) | Some ilGlobals -> ilGlobals let opts = { ILBinaryReader.defaults with ILBinaryReader.ilGlobals=ilGlobals; // fsc.exe does not uses optimizeForMemory (hence keeps MORE caches in AbstractIL) // fsi.exe does use optimizeForMemory (hence keeps FEWER caches in AbstractIL), because its long running // Visual Studio does use optimizeForMemory (hence keeps FEWER caches in AbstractIL), because its long running ILBinaryReader.optimizeForMemory=optimizeForMemory; ILBinaryReader.pdbPath = pdbPathOption; } // Visual Studio uses OpenILModuleReaderAfterReadingAllBytes for all DLLs to avoid having to dispose of any readers explicitly if openBinariesInMemory // && not syslib then ILBinaryReader.OpenILModuleReaderAfterReadingAllBytes filename opts else ILBinaryReader.OpenILModuleReader filename opts #if DEBUG [] #endif type AssemblyResolution = { originalReference : AssemblyReference resolvedPath : string resolvedFrom : ResolvedFrom fusionName : string redist : string sysdir : bool ilAssemblyRef : ILAssemblyRef option ref } member this.ILAssemblyRef = match !this.ilAssemblyRef with | Some(assref) -> assref | None -> let readerSettings : ILBinaryReader.ILReaderOptions = {pdbPath=None;ilGlobals=ecmaILGlobals;optimizeForMemory=false} let reader = ILBinaryReader.OpenILModuleReader this.resolvedPath readerSettings try let assRef = mkRefToILAssembly reader.ILModuleDef.ManifestOfAssembly this.ilAssemblyRef := Some(assRef) assRef finally ILBinaryReader.CloseILModuleReader reader //---------------------------------------------------------------------------- // Names to match up refs and defs for assemblies and modules //-------------------------------------------------------------------------- let GetNameOfILModule (m: ILModuleDef) = match m.Manifest with | Some manifest -> manifest.Name | None -> m.Name let MakeScopeRefForIlModule (ilModule: ILModuleDef) = match ilModule.Manifest with | Some m -> ILScopeRef.Assembly (mkRefToILAssembly m) | None -> ILScopeRef.Module (mkRefToILModule ilModule) let GetCustomAttributesOfIlModule (ilModule:ILModuleDef) = (match ilModule.Manifest with Some m -> m.CustomAttrs | None -> ilModule.CustomAttrs).AsList let GetAutoOpenAttributes(ilModule) = ilModule |> GetCustomAttributesOfIlModule |> List.choose TryFindAutoOpenAttr let GetInternalsVisibleToAttributes ilModule = ilModule |> GetCustomAttributesOfIlModule |> List.choose TryFindInternalsVisibleToAttr //---------------------------------------------------------------------------- // TcConfig //-------------------------------------------------------------------------- [] /// This type is immutable and must be kept as such. Do not extract or mutate the underlying data except by cloning it. type TcConfig private (data : TcConfigBuilder,validate:bool) = // Validate the inputs - this helps ensure errors in options are shown in visual studio rather than only when built // However we only validate a minimal number of options at the moment do if validate then try data.version.GetVersionInfo(data.implicitIncludeDir) |> ignore with e -> errorR(e) // clone the input builder to ensure nobody messes with it. let data = { data with pause = data.pause } let computeKnownDllReference(libraryName) = let defaultCoreLibraryReference = AssemblyReference(range0,libraryName+".dll") let nameOfDll(AssemblyReference(m,filename) as r) = let filename = ComputeMakePathAbsolute data.implicitIncludeDir filename if FileSystem.SafeExists(filename) then r,Some(filename) else // If the file doesn't exist, let reference resolution logic report the error later... defaultCoreLibraryReference, if m=rangeStartup then Some(filename) else None match data.referencedDLLs |> List.filter(fun assemblyReference -> assemblyReference.SimpleAssemblyNameIs libraryName) with | [r] -> nameOfDll r | [] -> defaultCoreLibraryReference, None | r:: _ -> // Recover by picking the first one. errorR(Error(FSComp.SR.buildMultipleReferencesNotAllowed(libraryName),rangeCmdArgs)) nameOfDll(r) // Look for an explicit reference to mscorlib and use that to compute clrRoot and targetFrameworkVersion let mscorlibReference,mscorlibExplicitFilenameOpt = computeKnownDllReference(data.mscorlibAssemblyName) let fslibReference,fslibExplicitFilenameOpt = computeKnownDllReference(GetFSharpCoreLibraryName()) // If either mscorlib.dll or fsharp.core.dll are explicitly specified then we require the --noframework flag. // The reason is that some non-default frameworks may not have the default dlls. For example, Client profile does // not have System.Web.dll. do if ((mscorlibExplicitFilenameOpt.IsSome || fslibExplicitFilenameOpt.IsSome) && data.framework) then error(Error(FSComp.SR.buildExplicitCoreLibRequiresNoFramework("--noframework"),rangeStartup)) let clrRootValue,(mscorlibVersion,targetFrameworkVersionValue),mscorlibIsSilverlight = match mscorlibExplicitFilenameOpt with | Some(mscorlibFilename) -> let filename = ComputeMakePathAbsolute data.implicitIncludeDir mscorlibFilename try let ilReader = OpenILBinary(filename,data.optimizeForMemory,data.openBinariesInMemory,None,None,data.mscorlibAssemblyName,data.noDebugData) try let ilModule = ilReader.ILModuleDef match ilModule.ManifestOfAssembly.Version with | Some(v1,v2,v3,v4) -> if v1 = 1us then warning(Error(FSComp.SR.buildRequiresCLI2(filename),rangeStartup)) let clrRoot = #if SILVERLIGHT None #else Some(Path.GetDirectoryName(FileSystem.GetFullPathShim(filename))) #endif clrRoot, (System.Version(int v1, int v2, int v3, int v4), sprintf "v%d.%d" v1 v2), (v1=5us && v2=0us && v3=5us) // SL5 mscorlib is 5.0.5.0 | _ -> failwith (FSComp.SR.buildCouldNotReadVersionInfoFromMscorlib()) finally ILBinaryReader.CloseILModuleReader ilReader with _ -> error(Error(FSComp.SR.buildCannotReadAssembly(filename),rangeStartup)) | _ -> None, highestInstalledNetFrameworkVersionMajorMinor(), false // Note: anycpu32bitpreferred can only be used with .Net version 4.5 and above // but now there is no way to discriminate between 4.0 and 4.5, // so here we minimally validate if .Net version >= 4 or not. do if data.prefer32Bit && mscorlibVersion.Major < 4 then error(Error(FSComp.SR.invalidPlatformTargetForOldFramework(),rangeCmdArgs)) let systemAssemblies = SystemAssemblies (data.mscorlibAssemblyName, mscorlibVersion, mscorlibIsSilverlight) // Check that the referenced version of FSharp.Core.dll matches the referenced version of mscorlib.dll let checkFSharpBinaryCompatWithMscorlib filename (ilAssemblyRefs: ILAssemblyRef list) explicitFscoreVersionToCheckOpt m = let isfslib = fileNameOfPath filename = GetFSharpCoreLibraryName() + ".dll" match ilAssemblyRefs |> List.tryFind (fun aref -> aref.Name = data.mscorlibAssemblyName) with | Some aref -> match aref.Version with | Some(v1,_,_,_) -> if isfslib && ((v1 < 4us) <> (mscorlibVersion.Major < 4)) then // the versions mismatch, however they are allowed to mismatch in one case: if mscorlibIsSilverlight && mscorlibVersion.Major=5 // SL5 && (match explicitFscoreVersionToCheckOpt with | Some(v1,v2,v3,_) -> v1=2us && v2=3us && v3=5us // we build SL5 against portable FSCore 2.3.5.0 | None -> true) // the 'None' code path happens after explicit FSCore was already checked, from now on SL5 path is always excepted then () else error(Error(FSComp.SR.buildMscorLibAndFSharpCoreMismatch(filename),m)) // If you're building an assembly that references another assembly built for a more recent // framework version, we want to raise a warning elif not(isfslib) && ((v1 = 4us) && (mscorlibVersion.Major < 4)) then warning(Error(FSComp.SR.buildMscorlibAndReferencedAssemblyMismatch(filename),m)) else () | _ -> () | _ -> () // Look for an explicit reference to FSharp.Core and use that to compute fsharpBinariesDir let fsharpBinariesDirValue = #if SILVERLIGHT #else match fslibExplicitFilenameOpt with | Some(fslibFilename) -> let filename = ComputeMakePathAbsolute data.implicitIncludeDir fslibFilename try let ilReader = OpenILBinary(filename,data.optimizeForMemory,data.openBinariesInMemory,None,None,data.mscorlibAssemblyName,data.noDebugData) try checkFSharpBinaryCompatWithMscorlib filename ilReader.ILAssemblyRefs ilReader.ILModuleDef.ManifestOfAssembly.Version rangeStartup; let fslibRoot = Path.GetDirectoryName(FileSystem.GetFullPathShim(filename)) fslibRoot (* , sprintf "v%d.%d" v1 v2 *) finally ILBinaryReader.CloseILModuleReader ilReader with _ -> error(Error(FSComp.SR.buildCannotReadAssembly(filename),rangeStartup)) | _ -> #endif data.defaultFSharpBinariesDir member x.TargetMscorlibVersion = mscorlibVersion member x.TargetIsSilverlight = mscorlibIsSilverlight member x.mscorlibAssemblyName = data.mscorlibAssemblyName member x.autoResolveOpenDirectivesToDlls = data.autoResolveOpenDirectivesToDlls member x.noFeedback = data.noFeedback member x.stackReserveSize = data.stackReserveSize member x.implicitIncludeDir = data.implicitIncludeDir member x.openBinariesInMemory = data.openBinariesInMemory member x.openDebugInformationForLaterStaticLinking = data.openDebugInformationForLaterStaticLinking member x.fsharpBinariesDir = fsharpBinariesDirValue member x.compilingFslib = data.compilingFslib member x.compilingFslib20 = data.compilingFslib20 member x.compilingFslib40 = data.compilingFslib40 member x.useIncrementalBuilder = data.useIncrementalBuilder member x.includes = data.includes member x.implicitOpens = data.implicitOpens member x.useFsiAuxLib = data.useFsiAuxLib member x.framework = data.framework member x.implicitlyResolveAssemblies = data.implicitlyResolveAssemblies member x.addVersionSpecificFrameworkReferences = data.addVersionSpecificFrameworkReferences member x.resolutionEnvironment = data.resolutionEnvironment member x.light = data.light member x.conditionalCompilationDefines = data.conditionalCompilationDefines member x.loadedSources = data.loadedSources member x.referencedDLLs = data.referencedDLLs member x.knownUnresolvedReferences = data.knownUnresolvedReferences member x.clrRoot = clrRootValue member x.optimizeForMemory = data.optimizeForMemory member x.subsystemVersion = data.subsystemVersion member x.useHighEntropyVA = data.useHighEntropyVA member x.inputCodePage = data.inputCodePage member x.embedResources = data.embedResources member x.globalWarnAsError = data.globalWarnAsError member x.globalWarnLevel = data.globalWarnLevel member x.specificWarnOff = data. specificWarnOff member x.specificWarnOn = data. specificWarnOn member x.specificWarnAsError = data.specificWarnAsError member x.specificWarnAsWarn = data.specificWarnAsWarn member x.mlCompatibility = data.mlCompatibility member x.checkOverflow = data.checkOverflow member x.showReferenceResolutions = data.showReferenceResolutions member x.outputFile = data.outputFile member x.resolutionFrameworkRegistryBase = data.resolutionFrameworkRegistryBase member x.resolutionAssemblyFoldersSuffix = data. resolutionAssemblyFoldersSuffix member x.resolutionAssemblyFoldersConditions = data. resolutionAssemblyFoldersConditions member x.platform = data.platform member x.prefer32Bit = data.prefer32Bit member x.useMonoResolution = data.useMonoResolution member x.target = data.target member x.debuginfo = data.debuginfo member x.testFlagEmitFeeFeeAs100001 = data.testFlagEmitFeeFeeAs100001 member x.dumpDebugInfo = data.dumpDebugInfo member x.debugSymbolFile = data.debugSymbolFile member x.typeCheckOnly = data.typeCheckOnly member x.parseOnly = data.parseOnly member x.importAllReferencesOnly = data.importAllReferencesOnly member x.simulateException = data.simulateException member x.printAst = data.printAst member x.targetFrameworkVersionMajorMinor = targetFrameworkVersionValue member x.tokenizeOnly = data.tokenizeOnly member x.testInteractionParser = data.testInteractionParser member x.reportNumDecls = data.reportNumDecls member x.printSignature = data.printSignature member x.printSignatureFile = data.printSignatureFile member x.xmlDocOutputFile = data.xmlDocOutputFile member x.stats = data.stats member x.generateFilterBlocks = data.generateFilterBlocks member x.signer = data.signer member x.container = data.container member x.delaysign = data.delaysign member x.version = data.version member x.metadataVersion = data.metadataVersion member x.standalone = data.standalone member x.extraStaticLinkRoots = data.extraStaticLinkRoots member x.noSignatureData = data.noSignatureData member x.onlyEssentialOptimizationData = data.onlyEssentialOptimizationData member x.useOptimizationDataFile = data.useOptimizationDataFile member x.useSignatureDataFile = data.useSignatureDataFile member x.jitTracking = data.jitTracking member x.ignoreSymbolStoreSequencePoints = data.ignoreSymbolStoreSequencePoints member x.internConstantStrings = data.internConstantStrings member x.extraOptimizationIterations = data.extraOptimizationIterations member x.win32res = data.win32res member x.win32manifest = data.win32manifest member x.includewin32manifest = data.includewin32manifest member x.linkResources = data.linkResources member x.showFullPaths = data.showFullPaths member x.errorStyle = data.errorStyle member x.validateTypeProviders = data.validateTypeProviders member x.utf8output = data.utf8output member x.flatErrors = data.flatErrors member x.maxErrors = data.maxErrors member x.baseAddress = data.baseAddress #if DEBUG member x.writeGeneratedILFiles = data.writeGeneratedILFiles member x.showOptimizationData = data.showOptimizationData #endif member x.showTerms = data.showTerms member x.writeTermsToFiles = data.writeTermsToFiles member x.doDetuple = data.doDetuple member x.doTLR = data.doTLR member x.doFinalSimplify = data.doFinalSimplify member x.optSettings = data.optSettings member x.emitTailcalls = data.emitTailcalls member x.lcid = data.lcid member x.optsOn = data.optsOn member x.productNameForBannerText = data.productNameForBannerText member x.showBanner = data.showBanner member x.showTimes = data.showTimes member x.showLoadedAssemblies = data.showLoadedAssemblies member x.continueAfterParseFailure = data.continueAfterParseFailure #if EXTENSIONTYPING member x.showExtensionTypeMessages = data.showExtensionTypeMessages #endif member x.pause = data.pause member x.indirectCallArrayMethods = data.indirectCallArrayMethods member x.alwaysCallVirt = data.alwaysCallVirt member x.noDebugData = data.noDebugData member x.isInteractive = data.isInteractive member x.isInvalidationSupported = data.isInvalidationSupported static member Create(builder,validate) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) TcConfig(builder,validate) member tcConfig.CloneOfOriginalBuilder = { data with conditionalCompilationDefines=data.conditionalCompilationDefines } member tcConfig.ComputeCanContainEntryPoint(sourceFiles:string list) = let n = sourceFiles.Length in sourceFiles |> List.mapi (fun i _ -> (i = n-1) && tcConfig.target.IsExe) // This call can fail if no CLR is found (this is the path to mscorlib) member tcConfig.ClrRoot = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) match tcConfig.clrRoot with | Some x -> [tcConfig.MakePathAbsolute x] | None -> #if SILVERLIGHT [] #else // When running on Mono we lead everyone to believe we're doing .NET 4.0 compilation // by default. Why? See https://github.com/fsharp/fsharp/issues/99 if runningOnMono then [System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()] else try match tcConfig.resolutionEnvironment with | MSBuildResolver.RuntimeLike -> [System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()] | _ -> let frameworkRoot = MSBuildResolver.DotNetFrameworkReferenceAssembliesRootDirectory let frameworkRootVersion = Path.Combine(frameworkRoot,tcConfig.targetFrameworkVersionMajorMinor) [frameworkRootVersion] with e -> errorRecovery e range0; [] #endif member tcConfig.ComputeLightSyntaxInitialStatus filename = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) let lower = String.lowercase filename let lightOnByDefault = List.exists (Filename.checkSuffix lower) lightSyntaxDefaultExtensions if lightOnByDefault then (tcConfig.light <> Some(false)) else (tcConfig.light = Some(true) ) member tcConfig.GetAvailableLoadedSources() = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) let resolveLoadedSource (m,path) = try if not(FileSystem.SafeExists(path)) then error(LoadedSourceNotFoundIgnoring(path,m)) None else Some(m,path) with e -> errorRecovery e m; None tcConfig.loadedSources |> List.map resolveLoadedSource |> List.filter Option.isSome |> List.map Option.get |> Seq.distinct |> Seq.toList /// A closed set of assemblies where, for any subset S: /// - the TcImports object built for S (and thus the F# Compiler CCUs for the assemblies in S) /// is a resource that can be shared between any two IncrementalBuild objects that reference /// precisely S /// /// Determined by looking at the set of assemblies in the framework assemblies directory, plus the /// F# core library. /// /// Returning true may mean that the file is locked and/or placed into the /// 'framework' reference set that is potentially shared across multiple compilations. member tcConfig.IsSystemAssembly (filename:string) = try FileSystem.SafeExists filename && ((tcConfig.ClrRoot |> List.exists (fun clrRoot -> clrRoot = Path.GetDirectoryName filename)) || (systemAssemblies |> List.exists (fun sysFile -> sysFile = fileNameWithoutExtension filename))) with _ -> false // This is not the complete set of search paths, it is just the set // that is special to F# (as compared to MSBuild resolution) member tcConfig.SearchPathsForLibraryFiles = [ yield! tcConfig.ClrRoot yield! List.map (tcConfig.MakePathAbsolute) tcConfig.includes yield tcConfig.implicitIncludeDir yield tcConfig.fsharpBinariesDir ] member tcConfig.MakePathAbsolute path = let result = ComputeMakePathAbsolute tcConfig.implicitIncludeDir path #if TRACK_DOWN_EXTRA_BACKSLASHES System.Diagnostics.Debug.Assert(not(result.Contains(@"\\")), "tcConfig.MakePathAbsolute results in a non-canonical filename with extra backslashes: "+result) #endif result member tcConfig.TryResolveLibWithDirectories (AssemblyReference (m,nm) as r) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) // Only want to resolve certain extensions (otherwise, 'System.Xml' is ambiguous). // MSBuild resolution is limitted to .exe and .dll so do the same here. let ext = System.IO.Path.GetExtension(nm) let isNetModule = String.Compare(ext,".netmodule",StringComparison.OrdinalIgnoreCase)=0 if String.Compare(ext,".dll",StringComparison.OrdinalIgnoreCase)=0 || String.Compare(ext,".exe",StringComparison.OrdinalIgnoreCase)=0 || isNetModule then let resolved = TryResolveFileUsingPaths(tcConfig.SearchPathsForLibraryFiles,m,nm) match resolved with | Some(resolved) -> let sysdir = tcConfig.IsSystemAssembly resolved let fusionName = if isNetModule then "" else try let readerSettings : ILBinaryReader.ILReaderOptions = {pdbPath=None;ilGlobals=ecmaILGlobals;optimizeForMemory=false} let reader = ILBinaryReader.OpenILModuleReader resolved readerSettings try let assRef = mkRefToILAssembly reader.ILModuleDef.ManifestOfAssembly assRef.QualifiedName finally ILBinaryReader.CloseILModuleReader reader with e -> "" Some { originalReference = r; resolvedPath = resolved; resolvedFrom = Unknown; fusionName = fusionName; redist = null; sysdir = sysdir; ilAssemblyRef = ref None } | None -> None else None member tcConfig.ResolveLibWithDirectories (AssemblyReference (m,nm)) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) // test for both libraries and executables let ext = System.IO.Path.GetExtension(nm) let isExe = (String.Compare(ext,".exe",StringComparison.OrdinalIgnoreCase) = 0) let isDLL = (String.Compare(ext,".dll",StringComparison.OrdinalIgnoreCase) = 0) let isNetModule = (String.Compare(ext,".netmodule",StringComparison.OrdinalIgnoreCase) = 0) let nms = if isExe || isDLL || isNetModule then [nm] else [nm+".dll";nm+".exe";nm+".netmodule"] match (List.tryPick (fun nm -> tcConfig.TryResolveLibWithDirectories(AssemblyReference(m,nm))) nms) with | Some(res) -> res | None -> let searchMessage = String.concat "\n " tcConfig.SearchPathsForLibraryFiles raise (FileNameNotResolved(nm,searchMessage,m)) member tcConfig.ResolveSourceFile(m,nm,pathLoadedFrom) = data.ResolveSourceFile(m,nm,pathLoadedFrom) member tcConfig.CheckFSharpBinary (filename,ilAssemblyRefs,m) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) checkFSharpBinaryCompatWithMscorlib filename ilAssemblyRefs None m // NOTE!! if mode=Speculative then this method must not report ANY warnings or errors through 'warning' or 'error'. Instead // it must return warnings and errors as data // // NOTE!! if mode=ReportErrors then this method must not raise exceptions. It must just report the errors and recover #if SILVERLIGHT #else static member TryResolveLibsUsingMSBuildRules (tcConfig:TcConfig,originalReferences:AssemblyReference list, errorAndWarningRange:range, mode:ResolveAssemblyReferenceMode) : AssemblyResolution list * UnresolvedAssemblyReference list = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) if tcConfig.useMonoResolution then failwith "MSBuild resolution is not supported." if originalReferences=[] then [],[] else // Group references by name with range values in the grouped value list. // In the grouped reference, store the index of the last use of the reference. let groupedReferences = originalReferences |> List.mapi (fun index reference -> (index, reference)) |> Seq.groupBy(fun (_, reference) -> reference.Text) |> Seq.map(fun (assemblyName,assemblyAndIndexGroup)-> let assemblyAndIndexGroup = assemblyAndIndexGroup |> List.ofSeq let highestPosition = assemblyAndIndexGroup |> List.maxBy fst |> fst let assemblyGroup = assemblyAndIndexGroup |> List.map snd assemblyName, highestPosition, assemblyGroup) |> Array.ofSeq let logmessage showMessages = if showMessages && tcConfig.showReferenceResolutions then (fun (message:string)->dprintf "%s\n" message) else ignore let logwarning showMessages = (fun code message-> if showMessages && mode = ReportErrors then match code with // These are warnings that mean 'not resolved' for some assembly. // Note that we don't get to know the name of the assembly that couldn't be resolved. // Ignore these and rely on the logic below to emit an error for each unresolved reference. | "MSB3246" // Resolved file has a bad image, no metadata, or is otherwise inaccessible. | "MSB3106" -> () | _ -> (if code = "MSB3245" then errorR else warning) (MSBuildReferenceResolutionWarning(code,message,errorAndWarningRange))) let logerror showMessages = (fun code message -> if showMessages && mode = ReportErrors then errorR(MSBuildReferenceResolutionError(code,message,errorAndWarningRange))) let targetFrameworkMajorMinor = tcConfig.targetFrameworkVersionMajorMinor #if DEBUG assert( Set.contains targetFrameworkMajorMinor (set ["v2.0";"v3.0";"v3.5";"v4.0";"v4.5"; (*SL only*) "v5.0"]) ) // Resolve is flexible, but pinning down targetFrameworkMajorMinor. #endif let targetProcessorArchitecture = match tcConfig.platform with | None -> "MSIL" | Some(X86) -> "x86" | Some(AMD64) -> "amd64" | Some(IA64) -> "ia64" let outputDirectory = match tcConfig.outputFile with | Some(outputFile) -> tcConfig.MakePathAbsolute outputFile | None -> tcConfig.implicitIncludeDir let targetFrameworkDirectories = match tcConfig.clrRoot with | Some(clrRoot) -> [tcConfig.MakePathAbsolute clrRoot] | None -> [] // First, try to resolve everything as a file using simple resolution let resolvedAsFile = groupedReferences |>Array.map(fun (_filename,maxIndexOfReference,references)-> let assemblyResolution = references |> List.map tcConfig.TryResolveLibWithDirectories |> List.filter Option.isSome |> List.map Option.get (maxIndexOfReference, assemblyResolution)) |> Array.filter(fun (_,refs)->refs|>List.isEmpty|>not) // Whatever is left, pass to MSBuild. let Resolve(references,showMessages) = try MSBuildResolver.Resolve (tcConfig.resolutionEnvironment, references, targetFrameworkMajorMinor, // TargetFrameworkVersionMajorMinor targetFrameworkDirectories, // TargetFrameworkDirectories targetProcessorArchitecture, // TargetProcessorArchitecture Path.GetDirectoryName(outputDirectory), // Output directory tcConfig.fsharpBinariesDir, // FSharp binaries directory tcConfig.includes, // Explicit include directories tcConfig.implicitIncludeDir, // Implicit include directory (likely the project directory) tcConfig.resolutionFrameworkRegistryBase, tcConfig.resolutionAssemblyFoldersSuffix, tcConfig.resolutionAssemblyFoldersConditions, logmessage showMessages, logwarning showMessages, logerror showMessages) with MSBuildResolver.ResolutionFailure -> error(Error(FSComp.SR.buildAssemblyResolutionFailed(),errorAndWarningRange)) let toMsBuild = [|0..groupedReferences.Length-1|] |> Array.map(fun i->(p13 groupedReferences.[i]),(p23 groupedReferences.[i]),i) |> Array.filter (fun (_,i0,_)->resolvedAsFile|>Array.exists(fun (i1,_) -> i0=i1)|>not) |> Array.map(fun (ref,_,i)->ref,string i) let resolutions = Resolve(toMsBuild,(*showMessages*)true) // Map back to original assembly resolutions. let resolvedByMsbuild = resolutions.resolvedFiles |> Array.map(fun resolvedFile -> let i = int resolvedFile.baggage let _,maxIndexOfReference,ms = groupedReferences.[i] let assemblyResolutions = ms|>List.map(fun originalReference -> System.Diagnostics.Debug.Assert(FileSystem.IsPathRootedShim(resolvedFile.itemSpec), sprintf "msbuild-resolved path is not absolute: '%s'" resolvedFile.itemSpec) let canonicalItemSpec = FileSystem.GetFullPathShim(resolvedFile.itemSpec) {originalReference=originalReference; resolvedPath=canonicalItemSpec; resolvedFrom=resolvedFile.resolvedFrom; fusionName=resolvedFile.fusionName redist=resolvedFile.redist; sysdir=tcConfig.IsSystemAssembly canonicalItemSpec; ilAssemblyRef = ref None}) (maxIndexOfReference, assemblyResolutions)) // When calculating the resulting resolutions, we're going to use the index of the reference // in the original specification and resort it to match the ordering that we had. let resultingResolutions = [resolvedByMsbuild;resolvedAsFile] |> Array.concat |> Array.sortBy fst |> Array.map snd |> List.ofArray |> List.concat // O(N^2) here over a small set of referenced assemblies. let IsResolved(originalName:string) = if resultingResolutions |> List.exists(fun resolution -> resolution.originalReference.Text = originalName) then true else // MSBuild resolution may have unified the result of two duplicate references. Try to re-resolve now. // If re-resolution worked then this was a removed duplicate. Resolve([|originalName,""|],(*showMessages*)false).resolvedFiles.Length<>0 let unresolvedReferences = groupedReferences //|> Array.filter(p13 >> IsNotFileOrIsAssembly) |> Array.filter(p13 >> IsResolved >> not) |> List.ofArray // If mode=Speculative, then we haven't reported any errors. // We report the error condition by returning an empty list of resolutions if mode = Speculative && (List.length unresolvedReferences) > 0 then [],(List.ofArray groupedReferences) |> List.map (fun (name, _, r) -> (name, r)) |> List.map UnresolvedAssemblyReference else resultingResolutions,unresolvedReferences |> List.map (fun (name, _, r) -> (name, r)) |> List.map UnresolvedAssemblyReference #endif // SILVERLIGHT member tcConfig.MscorlibDllReference() = mscorlibReference member tcConfig.CoreLibraryDllReference() = fslibReference let warningMem n l = List.mem n l let ReportWarning (globalWarnLevel : int) (specificWarnOff : int list) (specificWarnOn : int list) err = let n = GetErrorNumber err warningOn err globalWarnLevel specificWarnOn && not (warningMem n specificWarnOff) let ReportWarningAsError (globalWarnLevel : int) (specificWarnOff : int list) (specificWarnOn : int list) (specificWarnAsError : int list) (specificWarnAsWarn : int list) (globalWarnAsError : bool) err = (warningOn err globalWarnLevel specificWarnOn) && not(warningMem (GetErrorNumber err) specificWarnAsWarn) && ((globalWarnAsError && not (warningMem (GetErrorNumber err) specificWarnOff)) || warningMem (GetErrorNumber err) specificWarnAsError) //---------------------------------------------------------------------------- // Scoped #nowarn pragmas let GetScopedPragmasForHashDirective hd = [ match hd with | ParsedHashDirective("nowarn",numbers,m) -> for s in numbers do match GetWarningNumber(m,s) with | None -> () | Some n -> yield ScopedPragma.WarningOff(m,n) | _ -> () ] let GetScopedPragmasForInput input = match input with | ParsedInput.SigFile (ParsedSigFileInput(_,_,pragmas,_,_)) -> pragmas | ParsedInput.ImplFile (ParsedImplFileInput(_,_,_,pragmas,_,_,_)) ->pragmas /// Build an ErrorLogger that delegates to another ErrorLogger but filters warnings turned off by the given pragma declarations // // NOTE: we allow a flag to turn of strict file checking. This is because file names sometimes don't match due to use of // #line directives, e.g. for pars.fs/pars.fsy. In this case we just test by line number - in most cases this is sufficent // because we install a filtering error handler on a file-by-file basis for parsing and type-checking. // However this is indicative of a more systematic problem where source-line // sensitive operations (lexfilter and warning filtering) do not always // interact well with #line directives. type ErrorLoggerFilteringByScopedPragmas (checkFile,scopedPragmas,errorLogger:ErrorLogger) = inherit ErrorLogger("ErrorLoggerFilteringByScopedPragmas") let mutable scopedPragmas = scopedPragmas member x.ScopedPragmas with set v = scopedPragmas <- v override x.ErrorSinkImpl err = errorLogger.ErrorSink err override x.ErrorCount = errorLogger.ErrorCount override x.WarnSinkImpl err = let report = let warningNum = GetErrorNumber err match RangeOfError err with | Some m -> not (scopedPragmas |> List.exists (fun pragma -> match pragma with | ScopedPragma.WarningOff(pragmaRange,warningNumFromPragma) -> warningNum = warningNumFromPragma && (not checkFile || m.FileIndex = pragmaRange.FileIndex) && Range.posGeq m.Start pragmaRange.Start)) | None -> true if report then errorLogger.WarnSink(err); let GetErrorLoggerFilteringByScopedPragmas(checkFile,scopedPragmas,errorLogger) = (ErrorLoggerFilteringByScopedPragmas(checkFile,scopedPragmas,errorLogger) :> ErrorLogger) /// Build an ErrorLogger that delegates to another ErrorLogger but filters warnings turned off by the given pragma declarations type DelayedErrorLogger(errorLogger:ErrorLogger) = inherit ErrorLogger("DelayedErrorLogger") let delayed = new ResizeArray<_>() override x.ErrorSinkImpl err = delayed.Add (err,true) override x.ErrorCount = delayed |> Seq.filter snd |> Seq.length override x.WarnSinkImpl err = delayed.Add(err,false) member x.CommitDelayedErrorsAndWarnings() = // Eagerly grab all the errors and warnings from the mutable collection let errors = delayed |> Seq.toList // Now report them for (err,isError) in errors do if isError then errorLogger.ErrorSink err else errorLogger.WarnSink err //---------------------------------------------------------------------------- // Parsing //-------------------------------------------------------------------------- let CanonicalizeFilename filename = let basic = fileNameOfPath filename String.capitalize (try Filename.chopExtension basic with _ -> basic) let IsScript filename = let lower = String.lowercase filename scriptSuffixes |> List.exists (Filename.checkSuffix lower) // Give a unique name to the different kinds of inputs. Used to correlate signature and implementation files // QualFileNameOfModuleName - files with a single module declaration or an anonymous module let QualFileNameOfModuleName m filename modname = QualifiedNameOfFile(mkSynId m (textOfLid modname + (if IsScript filename then "$fsx" else ""))) let QualFileNameOfFilename m filename = QualifiedNameOfFile(mkSynId m (CanonicalizeFilename filename + (if IsScript filename then "$fsx" else ""))) // Interactive fragments let QualFileNameOfUniquePath (m, p: string list) = QualifiedNameOfFile(mkSynId m (String.concat "_" p)) let QualFileNameOfSpecs filename specs = match specs with | [SynModuleOrNamespaceSig(modname,true,_,_,_,_,m)] -> QualFileNameOfModuleName m filename modname | _ -> QualFileNameOfFilename (rangeN filename 1) filename let QualFileNameOfImpls filename specs = match specs with | [SynModuleOrNamespace(modname,true,_,_,_,_,m)] -> QualFileNameOfModuleName m filename modname | _ -> QualFileNameOfFilename (rangeN filename 1) filename let PrepandPathToQualFileName x (QualifiedNameOfFile(q)) = QualFileNameOfUniquePath (q.idRange,pathOfLid x@[q.idText]) let PrepandPathToImpl x (SynModuleOrNamespace(p,c,d,e,f,g,h)) = SynModuleOrNamespace(x@p,c,d,e,f,g,h) let PrepandPathToSpec x (SynModuleOrNamespaceSig(p,c,d,e,f,g,h)) = SynModuleOrNamespaceSig(x@p,c,d,e,f,g,h) let PrependPathToInput x inp = match inp with | ParsedInput.ImplFile (ParsedImplFileInput(b,c,q,d,hd,impls,e)) -> ParsedInput.ImplFile (ParsedImplFileInput(b,c,PrepandPathToQualFileName x q,d,hd,List.map (PrepandPathToImpl x) impls,e)) | ParsedInput.SigFile (ParsedSigFileInput(b,q,d,hd,specs)) -> ParsedInput.SigFile(ParsedSigFileInput(b,PrepandPathToQualFileName x q,d,hd,List.map (PrepandPathToSpec x) specs)) let ComputeAnonModuleName check defaultNamespace filename (m: range) = let modname = CanonicalizeFilename filename if check && not (modname |> String.forall (fun c -> System.Char.IsLetterOrDigit(c) || c = '_')) then if not (filename.EndsWith("fsx",StringComparison.OrdinalIgnoreCase) || filename.EndsWith("fsscript",StringComparison.OrdinalIgnoreCase)) then warning(Error(FSComp.SR.buildImplicitModuleIsNotLegalIdentifier(modname,(fileNameOfPath filename)),m)) let combined = match defaultNamespace with | None -> modname | Some ns -> textOfPath [ns;modname] let anonymousModuleNameRange = let filename = m.FileName mkRange filename pos0 pos0 pathToSynLid anonymousModuleNameRange (splitNamespace combined) let PostParseModuleImpl (_i,defaultNamespace,isLastCompiland,filename,impl) = match impl with | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid,isModule,decls,xmlDoc,attribs,access,m)) -> let lid = match lid with | [id] when isModule && id.idText = MangledGlobalName -> error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(),id.idRange)) | id :: rest when id.idText = MangledGlobalName -> rest | _ -> lid SynModuleOrNamespace(lid,isModule,decls,xmlDoc,attribs,access,m) | ParsedImplFileFragment.AnonModule (defs,m)-> if not isLastCompiland && not (doNotRequireNamespaceOrModuleSuffixes |> List.exists (Filename.checkSuffix (String.lowercase filename))) then errorR(Error(FSComp.SR.buildMultiFileRequiresNamespaceOrModule(),trimRangeToLine m)) let modname = ComputeAnonModuleName (nonNil defs) defaultNamespace filename (trimRangeToLine m) SynModuleOrNamespace(modname,true,defs,PreXmlDoc.Empty,[],None,m) | ParsedImplFileFragment.NamespaceFragment (lid,b,c,d,e,m)-> let lid = match lid with | id :: rest when id.idText = MangledGlobalName -> rest | _ -> lid SynModuleOrNamespace(lid,b,c,d,e,None,m) let PostParseModuleSpec (_i,defaultNamespace,isLastCompiland,filename,intf) = match intf with | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid,isModule,decls,xmlDoc,attribs,access,m)) -> let lid = match lid with | [id] when isModule && id.idText = MangledGlobalName -> error(Error(FSComp.SR.buildInvalidModuleOrNamespaceName(),id.idRange)) | id :: rest when id.idText = MangledGlobalName -> rest | _ -> lid SynModuleOrNamespaceSig(lid,isModule,decls,xmlDoc,attribs,access,m) | ParsedSigFileFragment.AnonModule (defs,m) -> if not isLastCompiland && not (doNotRequireNamespaceOrModuleSuffixes |> List.exists (Filename.checkSuffix (String.lowercase filename))) then errorR(Error(FSComp.SR.buildMultiFileRequiresNamespaceOrModule(),m)) let modname = ComputeAnonModuleName (nonNil defs) defaultNamespace filename (trimRangeToLine m) SynModuleOrNamespaceSig(modname,true,defs,PreXmlDoc.Empty,[],None,m) | ParsedSigFileFragment.NamespaceFragment (lid,b,c,d,e,m)-> let lid = match lid with | id :: rest when id.idText = MangledGlobalName -> rest | _ -> lid SynModuleOrNamespaceSig(lid,b,c,d,e,None,m) let PostParseModuleImpls (defaultNamespace,filename,isLastCompiland,ParsedImplFile(hashDirectives,impls)) = match impls |> List.rev |> List.tryPick (function ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid,_,_,_,_,_,_)) -> Some(lid) | _ -> None) with | Some lid when impls.Length > 1 -> errorR(Error(FSComp.SR.buildMultipleToplevelModules(),rangeOfLid lid)) | _ -> () let impls = impls |> List.mapi (fun i x -> PostParseModuleImpl (i, defaultNamespace, isLastCompiland, filename, x)) let qualName = QualFileNameOfImpls filename impls let isScript = IsScript filename let scopedPragmas = [ for (SynModuleOrNamespace(_,_,decls,_,_,_,_)) in impls do for d in decls do match d with | SynModuleDecl.HashDirective (hd,_) -> yield! GetScopedPragmasForHashDirective hd | _ -> () for hd in hashDirectives do yield! GetScopedPragmasForHashDirective hd ] ParsedInput.ImplFile(ParsedImplFileInput(filename,isScript,qualName,scopedPragmas,hashDirectives,impls,isLastCompiland)) let PostParseModuleSpecs (defaultNamespace,filename,isLastCompiland,ParsedSigFile(hashDirectives,specs)) = match specs |> List.rev |> List.tryPick (function ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid,_,_,_,_,_,_)) -> Some(lid) | _ -> None) with | Some lid when specs.Length > 1 -> errorR(Error(FSComp.SR.buildMultipleToplevelModules(),rangeOfLid lid)) | _ -> () let specs = specs |> List.mapi (fun i x -> PostParseModuleSpec(i,defaultNamespace,isLastCompiland,filename,x)) let qualName = QualFileNameOfSpecs filename specs let scopedPragmas = [ for (SynModuleOrNamespaceSig(_,_,decls,_,_,_,_)) in specs do for d in decls do match d with | SynModuleSigDecl.HashDirective(hd,_) -> yield! GetScopedPragmasForHashDirective hd | _ -> () for hd in hashDirectives do yield! GetScopedPragmasForHashDirective hd ] ParsedInput.SigFile(ParsedSigFileInput(filename,qualName,scopedPragmas,hashDirectives,specs)) let ParseInput (lexer,errorLogger:ErrorLogger,lexbuf:UnicodeLexing.Lexbuf,defaultNamespace,filename,isLastCompiland) = // The assert below is almost ok, but it fires in two cases: // - fsi.exe sometimes passes "stdin" as a dummy filename // - if you have a #line directive, e.g. // # 1000 "Line01.fs" // then it also asserts. But these are edge cases that can be fixed later, e.g. in bug 4651. //System.Diagnostics.Debug.Assert(FileSystem.IsPathRootedShim(filename), sprintf "should be absolute: '%s'" filename) let lower = String.lowercase filename // Delay sending errors and warnings until after the file is parsed. This gives us a chance to scrape the // #nowarn declarations for the file let filteringErrorLogger = ErrorLoggerFilteringByScopedPragmas(false,[],errorLogger) let errorLogger = DelayedErrorLogger(filteringErrorLogger) use unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) use unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) try let input = if mlCompatSuffixes |> List.exists (Filename.checkSuffix lower) then mlCompatWarning (FSComp.SR.buildCompilingExtensionIsForML()) rangeStartup; if implSuffixes |> List.exists (Filename.checkSuffix lower) then let impl = Parser.implementationFile lexer lexbuf PostParseModuleImpls (defaultNamespace,filename,isLastCompiland,impl) elif sigSuffixes |> List.exists (Filename.checkSuffix lower) then let intfs = Parser.signatureFile lexer lexbuf PostParseModuleSpecs (defaultNamespace,filename,isLastCompiland,intfs) else errorLogger.Error(InternalError(FSComp.SR.buildUnknownFileSuffix(filename),Range.rangeStartup)) filteringErrorLogger.ScopedPragmas <- GetScopedPragmasForInput input input finally // OK, now commit the errors, since the ScopedPragmas will (hopefully) have been scraped errorLogger.CommitDelayedErrorsAndWarnings() (* unwindEL, unwindBP dispose *) //---------------------------------------------------------------------------- // parsing - ParseOneInputFile // Filename is (ml/mli/fs/fsi source). Parse it to AST. //---------------------------------------------------------------------------- let ParseOneInputLexbuf (tcConfig:TcConfig,lexResourceManager,conditionalCompilationDefines,lexbuf,filename,isLastCompiland,errorLogger) = use unwindbuildphase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) try let skip = true in (* don't report whitespace from lexer *) let lightSyntaxStatus = LightSyntaxStatus (tcConfig.ComputeLightSyntaxInitialStatus filename,true) let lexargs = mkLexargs (filename,conditionalCompilationDefines@tcConfig.conditionalCompilationDefines,lightSyntaxStatus,lexResourceManager, ref [],errorLogger) let shortFilename = SanitizeFileName filename tcConfig.implicitIncludeDir let input = Lexhelp.usingLexbufForParsing (lexbuf,filename) (fun lexbuf -> if verbose then dprintn ("Parsing... "+shortFilename); let tokenizer = Lexfilter.LexFilter(lightSyntaxStatus, tcConfig.compilingFslib, Lexer.token lexargs skip, lexbuf) #if SILVERLIGHT #else if tcConfig.tokenizeOnly then while true do printf "tokenize - getting one token from %s\n" shortFilename; let t = tokenizer.Lexer lexbuf printf "tokenize - got %s @ %a\n" (Parser.token_to_string t) outputRange lexbuf.LexemeRange; (match t with Parser.EOF _ -> exit 0 | _ -> ()); if lexbuf.IsPastEndOfStream then printf "!!! at end of stream\n" if tcConfig.testInteractionParser then while true do match (Parser.interaction tokenizer.Lexer lexbuf) with | IDefns(l,m) -> dprintf "Parsed OK, got %d defs @ %a\n" l.Length outputRange m; | IHash (_,m) -> dprintf "Parsed OK, got hash @ %a\n" outputRange m; exit 0; #endif let res = ParseInput(tokenizer.Lexer,errorLogger,lexbuf,None,filename,isLastCompiland) if tcConfig.reportNumDecls then let rec flattenSpecs specs = specs |> List.collect (function (SynModuleSigDecl.NestedModule (_,subDecls,_)) -> flattenSpecs subDecls | spec -> [spec]) let rec flattenDefns specs = specs |> List.collect (function (SynModuleDecl.NestedModule (_,subDecls,_,_)) -> flattenDefns subDecls | defn -> [defn]) let flattenModSpec (SynModuleOrNamespaceSig(_,_,decls,_,_,_,_)) = flattenSpecs decls let flattenModImpl (SynModuleOrNamespace(_,_,decls,_,_,_,_)) = flattenDefns decls match res with | ParsedInput.SigFile(ParsedSigFileInput(_,_,_,_,specs)) -> dprintf "parsing yielded %d specs" (List.collect flattenModSpec specs).Length | ParsedInput.ImplFile(ParsedImplFileInput(_,_,_,_,_,impls,_)) -> dprintf "parsing yielded %d definitions" (List.collect flattenModImpl impls).Length res ) if verbose then dprintn ("Parsed "+shortFilename); Some input with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None let ParseOneInputFile (tcConfig:TcConfig,lexResourceManager,conditionalCompilationDefines,filename,isLastCompiland,errorLogger,retryLocked) = try let lower = String.lowercase filename if List.exists (Filename.checkSuffix lower) (sigSuffixes@implSuffixes) then if not(FileSystem.SafeExists(filename)) then error(Error(FSComp.SR.buildCouldNotFindSourceFile(filename),rangeStartup)) // bug 3155: if the file name is indirect, use a full path let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(filename,tcConfig.inputCodePage,retryLocked) ParseOneInputLexbuf(tcConfig,lexResourceManager,conditionalCompilationDefines,lexbuf,filename,isLastCompiland,errorLogger) else error(Error(FSComp.SR.buildInvalidSourceFileExtension(SanitizeFileName filename tcConfig.implicitIncludeDir),rangeStartup)) with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None [] type TcAssemblyResolutions(results : AssemblyResolution list, unresolved : UnresolvedAssemblyReference list) = let originalReferenceToResolution = results |> List.map (fun r -> r.originalReference.Text,r) |> Map.ofList let resolvedPathToResolution = results |> List.map (fun r -> r.resolvedPath,r) |> Map.ofList /// Add some resolutions to the map of resolution results. member tcResolutions.AddResolutionResults(newResults) = TcAssemblyResolutions(newResults @ results, unresolved) /// Add some unresolved results. member tcResolutions.AddUnresolvedReferences(newUnresolved) = TcAssemblyResolutions(results, newUnresolved @ unresolved) /// Get information about referenced DLLs member tcResolutions.GetAssemblyResolutions() = results member tcResolutions.GetUnresolvedReferences() = unresolved member tcResolutions.TryFindByOriginalReference(assemblyReference:AssemblyReference) = originalReferenceToResolution.TryFind assemblyReference.Text member tcResolution.TryFindByExactILAssemblyRef assref = results |> List.tryFind (fun ar->ar.ILAssemblyRef = assref) member tcResolutions.TryFindByResolvedPath nm = resolvedPathToResolution.TryFind nm member tcResolutions.TryFindByOriginalReferenceText nm = originalReferenceToResolution.TryFind nm static member Resolve (tcConfig:TcConfig,assemblyList:AssemblyReference list, knownUnresolved:UnresolvedAssemblyReference list) : TcAssemblyResolutions = let fallBack() = let resolutions = assemblyList |> List.map (fun assemblyReference -> try Choice1Of2 (tcConfig.ResolveLibWithDirectories assemblyReference) with e -> errorRecovery e assemblyReference.Range Choice2Of2 assemblyReference) let successes = resolutions |> List.choose (function Choice1Of2 x -> Some x | _ -> None) let failures = resolutions |> List.choose (function Choice2Of2 x -> Some (UnresolvedAssemblyReference(x.Text,[x])) | _ -> None) successes, failures let resolved,unresolved = #if SILVERLIGHT fallBack() #else if tcConfig.useMonoResolution then fallBack() else TcConfig.TryResolveLibsUsingMSBuildRules (tcConfig,assemblyList,rangeStartup,ReportErrors) #endif TcAssemblyResolutions(resolved,unresolved @ knownUnresolved) static member GetAllDllReferences (tcConfig:TcConfig) = [ yield tcConfig.MscorlibDllReference() if not tcConfig.compilingFslib then yield tcConfig.CoreLibraryDllReference() if tcConfig.framework then for s in DefaultBasicReferencesForOutOfProjectSources do yield AssemblyReference(rangeStartup,s) if tcConfig.framework || tcConfig.addVersionSpecificFrameworkReferences then // For out-of-project context, then always reference some extra DLLs on .NET 4.0 if tcConfig.TargetMscorlibVersion.Major >= 4 && not tcConfig.TargetIsSilverlight then for s in DefaultBasicReferencesForOutOfProjectSources40 do yield AssemblyReference(rangeStartup,s+".dll") if tcConfig.useFsiAuxLib then #if SILVERLIGHT let name = GetFsiLibraryName()+".dll" #else let name = Path.Combine(tcConfig.fsharpBinariesDir, GetFsiLibraryName()+".dll") #endif yield AssemblyReference(rangeStartup,name) yield! tcConfig.referencedDLLs ] static member SplitNonFoundationalResolutions (tcConfig:TcConfig) = let assemblyList = TcAssemblyResolutions.GetAllDllReferences tcConfig let resolutions = TcAssemblyResolutions.Resolve(tcConfig,assemblyList,tcConfig.knownUnresolvedReferences) let frameworkDLLs,nonFrameworkReferences = resolutions.GetAssemblyResolutions() |> List.partition (fun r -> r.sysdir) let unresolved = resolutions.GetUnresolvedReferences() #if TRACK_DOWN_EXTRA_BACKSLASHES frameworkDLLs |> List.iter(fun x -> let path = x.resolvedPath System.Diagnostics.Debug.Assert(not(path.Contains(@"\\")), "SplitNonFoundationalResolutions results in a non-canonical filename with extra backslashes: "+path) ) nonFrameworkReferences |> List.iter(fun x -> let path = x.resolvedPath System.Diagnostics.Debug.Assert(not(path.Contains(@"\\")), "SplitNonFoundationalResolutions results in a non-canonical filename with extra backslashes: "+path) ) #endif #if DEBUG let itFailed = ref false let addedText = "\nIf you want to debug this right now, attach a debugger, and put a breakpoint in 'build.fs' near the text '!itFailed', and you can re-step through the assembly resolution logic." unresolved |> List.iter (fun (UnresolvedAssemblyReference(referenceText,_ranges)) -> if referenceText.Contains("mscorlib") then System.Diagnostics.Debug.Assert(false, sprintf "whoops, did not resolve mscorlib: '%s'%s" referenceText addedText) itFailed := true) frameworkDLLs |> List.iter (fun x -> if not(FileSystem.IsPathRootedShim(x.resolvedPath)) then System.Diagnostics.Debug.Assert(false, sprintf "frameworkDLL should be absolute path: '%s'%s" x.resolvedPath addedText) itFailed := true) #if SILVERLIGHT #else nonFrameworkReferences |> List.iter (fun x -> if not(FileSystem.IsPathRootedShim(x.resolvedPath)) then System.Diagnostics.Debug.Assert(false, sprintf "nonFrameworkReference should be absolute path: '%s'%s" x.resolvedPath addedText) itFailed := true) #endif if !itFailed then // idea is, put a breakpoint here and then step through let assemblyList = TcAssemblyResolutions.GetAllDllReferences tcConfig let resolutions = TcAssemblyResolutions.Resolve(tcConfig,assemblyList,[]) let _frameworkDLLs,_nonFrameworkReferences = resolutions.GetAssemblyResolutions() |> List.partition (fun r -> r.sysdir) () #endif frameworkDLLs,nonFrameworkReferences,unresolved static member BuildFromPriorResolutions (tcConfig:TcConfig,resolutions,knownUnresolved) = let references = resolutions |> List.map (fun r -> r.originalReference) TcAssemblyResolutions.Resolve(tcConfig,references,knownUnresolved) //---------------------------------------------------------------------------- // Typecheck and optimization environments on disk //-------------------------------------------------------------------------- open Pickle let IsSignatureDataResource (r: ILResource) = String.hasPrefix r.Name FSharpSignatureDataResourceName let IsOptimizationDataResource (r: ILResource) = String.hasPrefix r.Name FSharpOptimizationDataResourceName let GetSignatureDataResourceName (r: ILResource) = String.dropPrefix (String.dropPrefix r.Name FSharpSignatureDataResourceName) "." let GetOptimizationDataResourceName (r: ILResource) = String.dropPrefix (String.dropPrefix r.Name FSharpOptimizationDataResourceName) "." let IsReflectedDefinitionsResource (r: ILResource) = String.hasPrefix r.Name QuotationPickler.pickledDefinitionsResourceNameBase type ILResource with /// Get a function to read the bytes from a resource local to an assembly member r.GetByteReader(m) = match r.Location with | ILResourceLocation.Local b -> b | _-> error(InternalError("UnpickleFromResource",m)) let MakeILResource rname bytes = { Name = rname; Location = ILResourceLocation.Local (fun () -> bytes); Access = ILResourceAccess.Public; CustomAttrs = emptyILCustomAttrs } #if NO_COMPILER_BACKEND #else let PickleToResource file g scope rname p x = { Name = rname; Location = (let bytes = pickleObjWithDanglingCcus file g scope p x in ILResourceLocation.Local (fun () -> bytes)); Access = ILResourceAccess.Public; CustomAttrs = emptyILCustomAttrs } #endif let GetSignatureData (file, ilScopeRef, ilModule, byteReader) : PickledDataWithReferences = unpickleObjWithDanglingCcus file ilScopeRef ilModule unpickleModuleInfo (byteReader()) #if NO_COMPILER_BACKEND #else let WriteSignatureData (tcConfig:TcConfig,tcGlobals,exportRemapping,ccu:CcuThunk,file) : ILResource = let mspec = ccu.Contents #if DEBUG if !verboseStamps then dprintf "Signature data before remap:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityL mspec))); dprintf "---------------------- START OF APPLYING EXPORT REMAPPING TO SIGNATURE DATA------------\n"; #endif let mspec = ApplyExportRemappingToEntity tcGlobals exportRemapping mspec #if DEBUG if !verboseStamps then dprintf "---------------------- END OF APPLYING EXPORT REMAPPING TO SIGNATURE DATA------------\n"; dprintf "Signature data after remap:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityL mspec))); #endif PickleToResource file tcGlobals ccu (FSharpSignatureDataResourceName+"."+ccu.AssemblyName) pickleModuleInfo { mspec=mspec; compileTimeWorkingDir=tcConfig.implicitIncludeDir; usesQuotations = ccu.UsesQuotations } #endif // NO_COMPILER_BACKEND let GetOptimizationData (file, ilScopeRef, ilModule, byteReader) = unpickleObjWithDanglingCcus file ilScopeRef ilModule Opt.u_LazyModuleInfo (byteReader()) #if NO_COMPILER_BACKEND #else let WriteOptimizationData (tcGlobals, file, ccu,modulInfo) = if verbose then dprintf "Optimization data after remap:\n%s\n" (Layout.showL (Layout.squashTo 192 (Opt.moduleInfoL tcGlobals modulInfo))); PickleToResource file tcGlobals ccu (FSharpOptimizationDataResourceName+"."+ccu.AssemblyName) Opt.p_LazyModuleInfo modulInfo #endif //---------------------------------------------------------------------------- // Relink blobs of saved data by fixing up ccus. //-------------------------------------------------------------------------- type ImportedBinary = { FileName: string; RawMetadata: ILModuleDef; #if EXTENSIONTYPING ProviderGeneratedAssembly: System.Reflection.Assembly option IsProviderGenerated: bool; ProviderGeneratedStaticLinkMap : ProvidedAssemblyStaticLinkingMap option #endif ILAssemblyRefs : ILAssemblyRef list; ILScopeRef: ILScopeRef } type ImportedAssembly = { ILScopeRef: ILScopeRef; FSharpViewOfMetadata: CcuThunk; AssemblyAutoOpenAttributes: string list; AssemblyInternalsVisibleToAttributes: string list; #if EXTENSIONTYPING IsProviderGenerated: bool mutable TypeProviders: Tainted list; #endif FSharpOptimizationData : Microsoft.FSharp.Control.Lazy> } type AvailableImportedAssembly = | ResolvedImportedAssembly of ImportedAssembly | UnresolvedImportedAssembly of string let availableToOptionalCcu = function | ResolvedCcu(ccu) -> Some(ccu) | UnresolvedCcu _ -> None //---------------------------------------------------------------------------- // TcConfigProvider //-------------------------------------------------------------------------- type TcConfigProvider = | TcConfigProvider of (unit -> TcConfig) member x.Get() = (let (TcConfigProvider(f)) = x in f()) static member Constant(tcConfig) = TcConfigProvider(fun () -> tcConfig) static member BasedOnMutableBuilder(tcConfigB) = TcConfigProvider(fun () -> TcConfig.Create(tcConfigB,validate=false)) //---------------------------------------------------------------------------- // TcImports //-------------------------------------------------------------------------- /// Tables of imported assemblies. [] type TcImports(tcConfigP:TcConfigProvider, initialResolutions:TcAssemblyResolutions, importsBase:TcImports option, ilGlobalsOpt) = let mutable resolutions = initialResolutions let mutable importsBase : TcImports option = importsBase let mutable dllInfos: ImportedBinary list = [] let mutable dllTable: NameMap = NameMap.empty let mutable ccuInfos: ImportedAssembly list = [] let mutable ccuTable: NameMap = NameMap.empty let mutable disposeActions = [] let mutable disposed = false let mutable ilGlobalsOpt = ilGlobalsOpt let mutable tcGlobals = None #if EXTENSIONTYPING let mutable generatedTypeRoots = new System.Collections.Generic.Dictionary() #endif let CheckDisposed() = if disposed then assert false // REVIEW: Post-RTM, we should remove static dependencies over "expected" foundational CCUs, and // search over all imported CCUs for each cached type static let ccuHasType (ccu : CcuThunk) (nsname : string list) (tname : string) = match (Some ccu.Contents, nsname) ||> List.fold (fun entityOpt n -> match entityOpt with None -> None | Some entity -> entity.ModuleOrNamespaceType.AllEntitiesByCompiledAndLogicalMangledNames.TryFind n) with | Some ns -> match Map.tryFind tname ns.ModuleOrNamespaceType.TypesByMangledName with | Some _ -> true | None -> false | None -> false member tcImports.SetBase(baseTcImports) = CheckDisposed() importsBase <- Some(baseTcImports) member private tcImports.Base = CheckDisposed() importsBase member tcImports.CcuTable = CheckDisposed() ccuTable member tcImports.DllTable = CheckDisposed() dllTable member tcImports.RegisterCcu(ccuInfo) = CheckDisposed() ccuInfos <- ccuInfos ++ ccuInfo; // Assembly Ref Resolution: remove this use of ccu.AssemblyName ccuTable <- NameMap.add (ccuInfo.FSharpViewOfMetadata.AssemblyName) ccuInfo ccuTable member tcImports.RegisterDll(dllInfo) = CheckDisposed() dllInfos <- dllInfos ++ dllInfo; dllTable <- NameMap.add (getNameOfScopeRef dllInfo.ILScopeRef) dllInfo dllTable member tcImports.GetDllInfos() = CheckDisposed() match importsBase with | Some(importsBase)-> importsBase.GetDllInfos() @ dllInfos | None -> dllInfos member tcImports.TryFindDllInfo (m,assemblyName,lookupOnly) = CheckDisposed() let rec look (t:TcImports) = match NameMap.tryFind assemblyName t.DllTable with | Some res -> Some(res) | None -> match t.Base with | Some t2 -> look(t2) | None -> None match look tcImports with | Some res -> Some res | None -> tcImports.ImplicitLoadIfAllowed(m,assemblyName,lookupOnly); look tcImports member tcImports.FindDllInfo (m,assemblyName) = match tcImports.TryFindDllInfo (m,assemblyName,lookupOnly=false) with | Some res -> res | None -> error(Error(FSComp.SR.buildCouldNotResolveAssembly(assemblyName),m)) member tcImports.GetImportedAssemblies() = CheckDisposed() match importsBase with | Some(importsBase)-> importsBase.GetImportedAssemblies() @ ccuInfos | None -> ccuInfos member tcImports.GetCcusExcludingBase() = CheckDisposed() ccuInfos |> List.map (fun x -> x.FSharpViewOfMetadata) member tcImports.GetCcusInDeclOrder() = CheckDisposed() List.map (fun x -> x.FSharpViewOfMetadata) (tcImports.GetImportedAssemblies()) // This is the main "assembly reference --> assembly" resolution routine. member tcImports.FindCcuInfo (m,assemblyName,lookupOnly) = CheckDisposed() let rec look (t:TcImports) = match NameMap.tryFind assemblyName t.CcuTable with | Some res -> Some(res) | None -> match t.Base with | Some t2 -> look t2 | None -> None match look tcImports with | Some res -> ResolvedImportedAssembly(res) | None -> tcImports.ImplicitLoadIfAllowed(m,assemblyName,lookupOnly); match look tcImports with | Some res -> ResolvedImportedAssembly(res) | None -> UnresolvedImportedAssembly(assemblyName) member tcImports.FindCcu (m, assemblyName,lookupOnly) = CheckDisposed() match tcImports.FindCcuInfo(m,assemblyName,lookupOnly) with | ResolvedImportedAssembly(importedAssembly) -> ResolvedCcu(importedAssembly.FSharpViewOfMetadata) | UnresolvedImportedAssembly(assemblyName) -> UnresolvedCcu(assemblyName) member tcImports.FindCcuFromAssemblyRef(m,assref:ILAssemblyRef) = CheckDisposed() match tcImports.FindCcuInfo(m,assref.Name,lookupOnly=false) with | ResolvedImportedAssembly(importedAssembly) -> ResolvedCcu(importedAssembly.FSharpViewOfMetadata) | UnresolvedImportedAssembly _ -> UnresolvedCcu(assref.QualifiedName) #if EXTENSIONTYPING member tcImports.GetProvidedAssemblyInfo(m, assembly: Tainted) = let anameOpt = assembly.PUntaint((fun assembly -> match assembly with null -> None | a -> Some (a.GetName())), m) match anameOpt with | None -> false, None | Some aname -> let ilShortAssemName = aname.Name match tcImports.FindCcu (m, ilShortAssemName, lookupOnly=true) with | ResolvedCcu ccu -> if ccu.IsProviderGenerated then let dllinfo = tcImports.FindDllInfo(m,ilShortAssemName) true, dllinfo.ProviderGeneratedStaticLinkMap else false, None | UnresolvedCcu _ -> let g = tcImports.GetTcGlobals() let ilScopeRef = ILScopeRef.Assembly (ILAssemblyRef.FromAssemblyName aname) let fileName = aname.Name + ".dll" let bytes = assembly.PApplyWithProvider((fun (assembly,provider) -> assembly.GetManifestModuleContents(provider)), m).PUntaint(id,m) let ilModule,ilAssemblyRefs = let opts = { ILBinaryReader.defaults with ILBinaryReader.ilGlobals= g.ilg ILBinaryReader.optimizeForMemory=true ILBinaryReader.pdbPath = None } let reader = ILBinaryReader.OpenILModuleReaderFromBytes fileName bytes opts reader.ILModuleDef, reader.ILAssemblyRefs let theActualAssembly = assembly.PUntaint((fun x -> x.Handle),m) let dllinfo = { RawMetadata=ilModule; FileName=fileName; ProviderGeneratedAssembly=Some theActualAssembly IsProviderGenerated=true; ProviderGeneratedStaticLinkMap= if g.isInteractive then None else Some (ProvidedAssemblyStaticLinkingMap.CreateNew()) ILScopeRef = ilScopeRef; ILAssemblyRefs = ilAssemblyRefs } tcImports.RegisterDll(dllinfo); let ccuData = { IsFSharp=false; UsesQuotations=false; InvalidateEvent=(new Event<_>()).Publish; IsProviderGenerated = true QualifiedName= Some (assembly.PUntaint((fun a -> a.FullName), m)); Contents = NewCcuContents ilScopeRef m ilShortAssemName (NewEmptyModuleOrNamespaceType Namespace) ; ILScopeRef = ilScopeRef; Stamp = newStamp(); SourceCodeDirectory = ""; FileName = Some fileName MemberSignatureEquality = (fun ty1 ty2 -> Tastops.typeEquivAux EraseAll g ty1 ty2) ImportProvidedType = (fun ty -> Import.ImportProvidedType (tcImports.GetImportMap()) m ty) TypeForwarders = lazy Map.empty } let ccu = CcuThunk.Create(ilShortAssemName,ccuData) let ccuinfo = { FSharpViewOfMetadata=ccu; ILScopeRef = ilScopeRef; AssemblyAutoOpenAttributes = []; AssemblyInternalsVisibleToAttributes = []; IsProviderGenerated = true; TypeProviders=[]; FSharpOptimizationData = notlazy None } tcImports.RegisterCcu(ccuinfo); // Yes, it is generative true, dllinfo.ProviderGeneratedStaticLinkMap member tcImports.RecordGeneratedTypeRoot root = // checking if given ProviderGeneratedType was already recorded before (probably for another set of static parameters) let (ProviderGeneratedType(_, ilTyRef, _)) = root let index = match generatedTypeRoots.TryGetValue ilTyRef with | true,(index, _) -> index | false, _ -> generatedTypeRoots.Count generatedTypeRoots.[ilTyRef] <- (index, root) member tcImports.ProviderGeneratedTypeRoots = generatedTypeRoots.Values |> Seq.sortBy fst |> Seq.map snd |> Seq.toList #endif member tcImports.AttachDisposeAction(action) = CheckDisposed() disposeActions <- action :: disposeActions override obj.ToString() = #if SILVERLIGHT sprintf "tcImports" #else sprintf "tcImports = \n dllInfos=%A\n dllTable=%A\n ccuInfos=%A\n ccuTable=%A\n Base=%s\n" dllInfos dllTable ccuInfos ccuTable (match importsBase with None-> "None" | Some(importsBase) -> importsBase.ToString()) #endif // Note: the returned binary reader is associated with the tcImports, i.e. when the tcImports are closed // then the reader is closed. member tcImports.OpenILBinaryModule(filename,m) = try CheckDisposed() let tcConfig = tcConfigP.Get() let pdbPathOption = // We open the pdb file if one exists parallel to the binary we // are reading, so that --standalone will preserve debug information. if tcConfig.openDebugInformationForLaterStaticLinking then let pdbDir = (try Filename.directoryName filename with _ -> ".") let pdbFile = (try Filename.chopExtension filename with _ -> filename)+".pdb" if FileSystem.SafeExists pdbFile then if verbose then dprintf "reading PDB file %s from directory %s\n" pdbFile pdbDir; Some pdbDir else None else None let ilILBinaryReader = OpenILBinary(filename,tcConfig.optimizeForMemory,tcConfig.openBinariesInMemory,ilGlobalsOpt,pdbPathOption,tcConfig.mscorlibAssemblyName,tcConfig.noDebugData) tcImports.AttachDisposeAction(fun _ -> ILBinaryReader.CloseILModuleReader ilILBinaryReader); ilILBinaryReader.ILModuleDef, ilILBinaryReader.ILAssemblyRefs with e -> error(Error(FSComp.SR.buildErrorOpeningBinaryFile(filename, e.Message),m)) (* auxModTable is used for multi-module assemblies *) member tcImports.MkLoaderForMultiModuleIlAssemblies m = CheckDisposed() let auxModTable = HashMultiMap(10, HashIdentity.Structural) fun viewedScopeRef -> let tcConfig = tcConfigP.Get() match viewedScopeRef with | ILScopeRef.Module modref -> let key = modref.Name if not (auxModTable.ContainsKey(key)) then let resolution = tcConfig.ResolveLibWithDirectories(AssemblyReference(m,key)) let ilModule,_ = tcImports.OpenILBinaryModule(resolution.resolvedPath,m) auxModTable.[key] <- ilModule auxModTable.[key] | _ -> error(InternalError("Unexpected ILScopeRef.Local or ILScopeRef.Assembly in exported type table",m)) member tcImports.IsAlreadyRegistered nm = CheckDisposed() tcImports.GetDllInfos() |> List.exists (fun dll -> match dll.ILScopeRef with | ILScopeRef.Assembly a -> a.Name = nm | _ -> false) member tcImports.GetImportMap() = CheckDisposed() let loaderInterface = { new Import.AssemblyLoader with member x.LoadAssembly (m, ilAssemblyRef) = tcImports.FindCcuFromAssemblyRef(m,ilAssemblyRef) #if EXTENSIONTYPING member x.GetProvidedAssemblyInfo (m,assembly) = tcImports.GetProvidedAssemblyInfo (m,assembly) member x.RecordGeneratedTypeRoot root = tcImports.RecordGeneratedTypeRoot root #endif } new Import.ImportMap (tcImports.GetTcGlobals(), loaderInterface) // Note the tcGlobals are only available once mscorlib and fslib have been established. For TcImports, // they are logically only needed when converting AbsIL data structures into F# data structures, and // when converting AbsIL types in particular, since these types are normalized through the tables // in the tcGlobals (E.g. normalizing 'System.Int32' to 'int'). On the whole ImportILAssembly doesn't // actually convert AbsIL types - it only converts the outer shell of type definitions - the vast majority of // types such as those in method signatures are currently converted on-demand. However ImportILAssembly does have to // convert the types that are constraints in generic parameters, which was the original motivation for making sure that // ImportILAssembly had a tcGlobals available when it really needs it. member tcImports.GetTcGlobals() : TcGlobals = CheckDisposed() match tcGlobals with | Some g -> g | None -> match importsBase with | Some b -> b.GetTcGlobals() | None -> failwith "unreachable: GetGlobals - are the references to mscorlib.dll and FSharp.Core.dll valid?" member private tcImports.SetILGlobals ilg = CheckDisposed() ilGlobalsOpt <- Some ilg member private tcImports.SetTcGlobals g = CheckDisposed() tcGlobals <- Some g #if EXTENSIONTYPING member private tcImports.InjectProvidedNamespaceOrTypeIntoEntity typeProviderEnvironment (tcConfig:TcConfig) m (entity:Entity) (injectedNamspace,remainingNamespace) provider (st:Tainted option) = match remainingNamespace with | next::rest -> // Inject the namespace entity match entity.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName.TryFind(next) with | Some childEntity -> tcImports.InjectProvidedNamespaceOrTypeIntoEntity typeProviderEnvironment tcConfig m childEntity (next::injectedNamspace,rest) provider st | None -> // Build up the artificial namespace if there is not a real one. let cpath = CompPath(ILScopeRef.Local, injectedNamspace |> List.rev |> List.map (fun n -> (n,ModuleOrNamespaceKind.Namespace)) ) let newNamespace = NewModuleOrNamespace (Some cpath) taccessPublic (ident(next,rangeStartup)) XmlDoc.Empty [] (notlazy (NewEmptyModuleOrNamespaceType Namespace)) entity.ModuleOrNamespaceType.AddModuleOrNamespaceByMutation(newNamespace) tcImports.InjectProvidedNamespaceOrTypeIntoEntity typeProviderEnvironment tcConfig m newNamespace (next::injectedNamspace,rest) provider st | [] -> match st with | Some st -> // Inject the wrapper type into the provider assembly. // // Generated types get properly injected into the provided (i.e. generated) assembly CCU in tc.fs let importProvidedType t = Import.ImportProvidedType (tcImports.GetImportMap()) m t let isSuppressRelocate = tcConfig.isInteractive || st.PUntaint((fun st -> st.IsSuppressRelocate),m) let newEntity = Construct.NewProvidedTycon(typeProviderEnvironment, st, importProvidedType, isSuppressRelocate, m) entity.ModuleOrNamespaceType.AddProvidedTypeEntity(newEntity) | None -> () entity.Data.entity_tycon_repr <- match entity.TypeReprInfo with // This is the first extension | TNoRepr -> TProvidedNamespaceExtensionPoint(typeProviderEnvironment, [provider]) // Add to the existing list of extensions | TProvidedNamespaceExtensionPoint(resolutionFolder, prior) as repr -> if not(prior |> List.exists(fun r->Tainted.EqTainted r provider)) then TProvidedNamespaceExtensionPoint(resolutionFolder, provider::prior) else repr | _ -> failwith "Unexpected representation in namespace entity referred to by a type provider" member tcImports.ImportTypeProviderExtensions (tpApprovalsRef : _ ref, displayPSTypeProviderSecurityDialogBlockingUI, tcConfig:TcConfig, fileNameOfRuntimeAssembly, ilScopeRefOfRuntimeAssembly, moduleAttributes:ILAttribute list, mspec, invalidateCcu:Event<_>, m) = let typeProviderEnvironment : ExtensionTyping.ResolutionEnvironment = { resolutionFolder = tcConfig.implicitIncludeDir outputFile = tcConfig.outputFile showResolutionMessages = tcConfig.showExtensionTypeMessages referencedAssemblies = [| for r in resolutions.GetAssemblyResolutions() -> r.resolvedPath |] temporaryFolder = FileSystem.GetTempPathShim() } // Find assembly level TypeProviderAssemblyAttributes. These will point to the assemblies that // have class which implement ITypeProvider and which have TypeProviderAttribute on them. let startingErrorCount = CompileThreadStatic.ErrorLogger.ErrorCount let providerAssemblies = moduleAttributes |> List.choose TryDecodeTypeProviderAssemblyAttr // If no design-time assembly is specified, use the runtime assembly |> List.map (function null -> Path.GetFileNameWithoutExtension fileNameOfRuntimeAssembly | s -> s) |> Set.ofList if providerAssemblies.Count > 0 then let systemRuntimeAssemblyVersion = tcConfig.TargetMscorlibVersion let providers = [ for assemblyName in providerAssemblies do yield ExtensionTyping.GetTypeProvidersOfAssembly(displayPSTypeProviderSecurityDialogBlockingUI, tcConfig.validateTypeProviders, #if TYPE_PROVIDER_SECURITY tpApprovalsRef, #endif fileNameOfRuntimeAssembly, ilScopeRefOfRuntimeAssembly, assemblyName, typeProviderEnvironment, tcConfig.isInvalidationSupported, tcConfig.isInteractive, tcImports.SystemRuntimeContainsType, systemRuntimeAssemblyVersion, m) ] let wasApproved = providers |> List.forall (fun (ok,_) -> ok) let providers = providers |> List.map snd |> List.concat // Note, type providers are disposable objects. The TcImports owns the provider objects - when/if it is disposed, the providers are disposed. // We ignore all exceptions from provider disposal. for provider in providers do tcImports.AttachDisposeAction(fun () -> try provider.PUntaintNoFailure(fun x -> x).Dispose() with e -> ()) // Add the invalidation signal handlers to each provider for provider in providers do provider.PUntaint((fun tp -> tp.Invalidate.Add(fun _ -> invalidateCcu.Trigger ("The provider '" + fileNameOfRuntimeAssembly + "' reported a change"))), m) match providers with | [] -> if wasApproved then warning(Error(FSComp.SR.etHostingAssemblyFoundWithoutHosts(fileNameOfRuntimeAssembly,typeof.FullName),m)); | _ -> if typeProviderEnvironment.showResolutionMessages then dprintfn "Found extension type hosting hosting assembly '%s' with the following extensions:" fileNameOfRuntimeAssembly providers |> List.iter(fun provider ->dprintfn " %s" (ExtensionTyping.DisplayNameOfTypeProvider(provider.TypeProvider, m))) for provider in providers do try // Inject an entity for the namespace, or if one already exists, then record this as a provider // for that namespace. let rec loop (providedNamespace: Tainted) = let path = ExtensionTyping.GetPartsOfDotNetNamespace(m,provider,providedNamespace.PUntaint((fun r -> r.NamespaceName), m)) tcImports.InjectProvidedNamespaceOrTypeIntoEntity typeProviderEnvironment tcConfig m mspec ([],path) provider None // Inject entities for the types returned by provider.GetTypes(). // // NOTE: The types provided by GetTypes() are available for name resolution // when the namespace is "opened". This is part of the specification of the language // feature. let tys = providedNamespace.PApplyArray((fun provider -> provider.GetTypes()), "GetTypes", m) let ptys = [| for ty in tys -> ty.PApply((fun ty -> ty |> ProvidedType.CreateNoContext), m) |] for st in ptys do tcImports.InjectProvidedNamespaceOrTypeIntoEntity typeProviderEnvironment tcConfig m mspec ([],path) provider (Some st) for providedNestedNamespace in providedNamespace.PApplyArray((fun provider -> provider.GetNestedNamespaces()), "GetNestedNamespaces", m) do loop providedNestedNamespace let providedNamespaces = provider.PApplyArray((fun r -> r.GetNamespaces()), "GetNamespaces", m) for providedNamespace in providedNamespaces do loop providedNamespace with e -> errorRecovery e m if startingErrorCount aref | _ -> error(InternalError("PrepareToImportReferencedIlDll: cannot reference .NET netmodules directly, reference the containing assembly instead",m)) let nm = aref.Name if verbose then dprintn ("Converting IL assembly to F# data structures "+nm); let auxModuleLoader = tcImports.MkLoaderForMultiModuleIlAssemblies m let invalidateCcu = new Event<_>() let ccu = Import.ImportILAssembly(tcImports.GetImportMap,m,auxModuleLoader,ilScopeRef,tcConfig.implicitIncludeDir, Some filename,ilModule,invalidateCcu.Publish) let ccuinfo = { FSharpViewOfMetadata=ccu; ILScopeRef = ilScopeRef; AssemblyAutoOpenAttributes = GetAutoOpenAttributes(ilModule); AssemblyInternalsVisibleToAttributes = GetInternalsVisibleToAttributes(ilModule); #if EXTENSIONTYPING IsProviderGenerated = false; TypeProviders = []; #endif FSharpOptimizationData = notlazy None } tcImports.RegisterCcu(ccuinfo); let phase2 () = #if EXTENSIONTYPING ccuinfo.TypeProviders <- tcImports.ImportTypeProviderExtensions (tpApprovalsRef, displayPSTypeProviderSecurityDialogBlockingUI, tcConfig, filename, ilScopeRef, ilModule.ManifestOfAssembly.CustomAttrs.AsList, ccu.Contents, invalidateCcu, m) #endif [ResolvedImportedAssembly(ccuinfo)] phase2 member tcImports.PrepareToImportReferencedFSharpDll tpApprovalsRef m filename displayPSTypeProviderSecurityDialogBlockingUI (dllinfo:ImportedBinary) = CheckDisposed() let tcConfig = tcConfigP.Get() tcConfig.CheckFSharpBinary(filename,dllinfo.ILAssemblyRefs,m) let ilModule = dllinfo.RawMetadata let ilScopeRef = dllinfo.ILScopeRef let ilShortAssemName = getNameOfScopeRef ilScopeRef if verbose then dprintn ("Converting F# assembly to F# data structures "+(getNameOfScopeRef ilScopeRef)); let attrs = GetCustomAttributesOfIlModule ilModule assert (List.exists IsSignatureDataVersionAttr attrs); if verbose then dprintn ("Relinking interface info from F# assembly "+ilShortAssemName); let resources = ilModule.Resources.AsList let externalSigAndOptData = ["FSharp.Core";"FSharp.LanguageService.Compiler"] if not(List.contains ilShortAssemName externalSigAndOptData) then assert (List.exists IsSignatureDataResource resources); let optDataReaders = resources |> List.choose (fun r -> if IsOptimizationDataResource r then Some(GetOptimizationDataResourceName r,r.GetByteReader(m)) else None) let ccuRawDataAndInfos = let sigDataReaders = [ for iresource in resources do if IsSignatureDataResource iresource then let ccuName = GetSignatureDataResourceName iresource yield (ccuName, iresource.GetByteReader(m)) ] let sigDataReaders = if List.contains ilShortAssemName externalSigAndOptData then let sigFileName = Path.ChangeExtension(filename, "sigdata") if not sigDataReaders.IsEmpty then error(Error(FSComp.SR.buildDidNotExpectSigdataResource(),m)); if not (FileSystem.SafeExists sigFileName) then error(Error(FSComp.SR.buildExpectedSigdataFile(), m)); [ (ilShortAssemName, (fun () -> FileSystem.ReadAllBytesShim sigFileName))] else sigDataReaders sigDataReaders |> List.map (fun (ccuName, sigDataReader) -> let data = GetSignatureData (filename, ilScopeRef, ilModule, sigDataReader) // Look for optimization data in a file let optDataReaders = if List.contains ilShortAssemName externalSigAndOptData then let optDataFile = Path.ChangeExtension(filename, "optdata") if not optDataReaders.IsEmpty then error(Error(FSComp.SR.buildDidNotExpectOptDataResource(),m)); if not (FileSystem.SafeExists optDataFile) then error(Error(FSComp.SR.buildExpectedFileAlongSideFSharpCore(optDataFile),m)); [ (ilShortAssemName, (fun () -> FileSystem.ReadAllBytesShim optDataFile))] else optDataReaders let optDatas = Map.ofList optDataReaders let minfo : PickledModuleInfo = data.RawData let mspec = minfo.mspec #if EXTENSIONTYPING let invalidateCcu = new Event<_>() #endif // Adjust where the code for known F# libraries live relative to the installation of F# let codeDir = let dir = minfo.compileTimeWorkingDir let knownLibraryLocation = @"src\fsharp\" // Help highlighting... " let knownLibarySuffixes = [ @"FSharp.Core"; @"FSharp.PowerPack"; @"FSharp.PowerPack.Linq"; @"FSharp.PowerPack.Metadata" ] match knownLibarySuffixes |> List.tryFind (fun x -> dir.EndsWith(knownLibraryLocation + x,StringComparison.OrdinalIgnoreCase)) with | None -> dir | Some libSuffix -> // add "..\lib\FSharp.Core" to the F# binaries directory Path.Combine(Path.Combine(tcConfig.fsharpBinariesDir,@"..\lib"),libSuffix) let ccu = CcuThunk.Create(ccuName, { ILScopeRef=ilScopeRef Stamp = newStamp() FileName = Some filename QualifiedName= Some(ilScopeRef.QualifiedName) SourceCodeDirectory = codeDir (* note: in some cases we fix up this information later *) IsFSharp=true Contents = mspec #if EXTENSIONTYPING InvalidateEvent=invalidateCcu.Publish IsProviderGenerated = false ImportProvidedType = (fun ty -> Import.ImportProvidedType (tcImports.GetImportMap()) m ty) #endif UsesQuotations = minfo.usesQuotations MemberSignatureEquality= (fun ty1 ty2 -> Tastops.typeEquivAux EraseAll (tcImports.GetTcGlobals()) ty1 ty2) TypeForwarders = match ilModule.Manifest with | Some manifest -> ImportILAssemblyTypeForwarders(tcImports.GetImportMap,m,manifest.ExportedTypes) | None -> lazy Map.empty }) let optdata = lazy (match Map.tryFind ccuName optDatas with | None -> if verbose then dprintf "*** no optimization data for CCU %s, was DLL compiled with --no-optimization-data??\n" ccuName None | Some info -> let data = GetOptimizationData (filename, ilScopeRef, ilModule, info) let res = data.OptionalFixup(fun nm -> availableToOptionalCcu(tcImports.FindCcu(m,nm,lookupOnly=false))) if verbose then dprintf "found optimization data for CCU %s\n" ccuName Some res) let ccuinfo = { FSharpViewOfMetadata=ccu AssemblyAutoOpenAttributes = GetAutoOpenAttributes(ilModule) AssemblyInternalsVisibleToAttributes = GetInternalsVisibleToAttributes(ilModule) FSharpOptimizationData=optdata #if EXTENSIONTYPING IsProviderGenerated = false TypeProviders = [] #endif ILScopeRef = ilScopeRef } let phase2() = #if EXTENSIONTYPING ccuinfo.TypeProviders <- tcImports.ImportTypeProviderExtensions (tpApprovalsRef, displayPSTypeProviderSecurityDialogBlockingUI, tcConfig, filename, ilScopeRef, ilModule.ManifestOfAssembly.CustomAttrs.AsList, ccu.Contents, invalidateCcu, m) #else () #endif data,ccuinfo,phase2) // Register all before relinking to cope with mutually-referential ccus ccuRawDataAndInfos |> List.iter (p23 >> tcImports.RegisterCcu) let phase2 () = (* Relink *) (* dprintf "Phase2: %s\n" filename; REMOVE DIAGNOSTICS *) ccuRawDataAndInfos |> List.iter (fun (data,_,_) -> data.OptionalFixup(fun nm -> availableToOptionalCcu(tcImports.FindCcu(m,nm,lookupOnly=false))) |> ignore); #if EXTENSIONTYPING ccuRawDataAndInfos |> List.iter (fun (_,_,phase2) -> phase2()) #endif ccuRawDataAndInfos |> List.map p23 |> List.map ResolvedImportedAssembly phase2 member tcImports.RegisterAndPrepareToImportReferencedDll tpApprovalsRef displayPSTypeProviderSecurityDialogBlockingUI (r:AssemblyResolution) : _*(unit -> AvailableImportedAssembly list)= CheckDisposed() let m = r.originalReference.Range let filename = r.resolvedPath let ilModule,ilAssemblyRefs = tcImports.OpenILBinaryModule(filename,m) let ilShortAssemName = GetNameOfILModule ilModule if tcImports.IsAlreadyRegistered ilShortAssemName then let dllinfo = tcImports.FindDllInfo(m,ilShortAssemName) let phase2() = [tcImports.FindCcuInfo(m,ilShortAssemName,lookupOnly=false)] dllinfo,phase2 else let ilScopeRef = MakeScopeRefForIlModule ilModule let dllinfo = {RawMetadata=ilModule FileName=filename #if EXTENSIONTYPING ProviderGeneratedAssembly=None IsProviderGenerated=false ProviderGeneratedStaticLinkMap = None #endif ILScopeRef = ilScopeRef ILAssemblyRefs = ilAssemblyRefs } tcImports.RegisterDll(dllinfo) let attrs = GetCustomAttributesOfIlModule ilModule let phase2 = if (List.exists IsSignatureDataVersionAttr attrs) then if not (List.exists (IsMatchingSignatureDataVersionAttr (IL.parseILVersion Internal.Utilities.FSharpEnvironment.FSharpBinaryMetadataFormatRevision)) attrs) then errorR(Error(FSComp.SR.buildDifferentVersionMustRecompile(filename),m)) tcImports.PrepareToImportReferencedIlDll tpApprovalsRef m filename displayPSTypeProviderSecurityDialogBlockingUI dllinfo else try tcImports.PrepareToImportReferencedFSharpDll tpApprovalsRef m filename displayPSTypeProviderSecurityDialogBlockingUI dllinfo with e -> error(Error(FSComp.SR.buildErrorOpeningBinaryFile(filename, e.Message),m)) else tcImports.PrepareToImportReferencedIlDll tpApprovalsRef m filename displayPSTypeProviderSecurityDialogBlockingUI dllinfo dllinfo,phase2 member tcImports.RegisterAndImportReferencedAssemblies (displayPSTypeProviderSecurityDialogBlockingUI, nms:AssemblyResolution list) = CheckDisposed() #if TYPE_PROVIDER_SECURITY let tpApprovalsRef = ref(ExtensionTyping.ApprovalIO.readApprovalsFile(None)) #else let tpApprovalsRef = ref([]) #endif let dllinfos,phase2s = nms |> List.map (fun nm -> try tcImports.RegisterAndPrepareToImportReferencedDll tpApprovalsRef displayPSTypeProviderSecurityDialogBlockingUI nm with e -> error(Error(FSComp.SR.buildProblemReadingAssembly(nm.fusionName, e.Message),nm.originalReference.Range))) |> List.unzip let ccuinfos = (List.collect (fun phase2 -> phase2()) phase2s) dllinfos,ccuinfos member tcImports.DoRegisterAndImportReferencedAssemblies(displayPSTypeProviderSecurityDialogBlockingUI,nms) = CheckDisposed() tcImports.RegisterAndImportReferencedAssemblies(displayPSTypeProviderSecurityDialogBlockingUI,nms) |> ignore member tcImports.ImplicitLoadIfAllowed (m, assemblyName, lookupOnly) = CheckDisposed() // If the user is asking for the default framework then also try to resolve other implicit assemblies as they are discovered. // Using this flag to mean 'allow implicit discover of assemblies'. let tcConfig = tcConfigP.Get() if not lookupOnly && tcConfig.implicitlyResolveAssemblies then let tryFile speculativeFileName = let foundFile = tcImports.TryResolveAssemblyReference (AssemblyReference (m, speculativeFileName), ResolveAssemblyReferenceMode.Speculative) match foundFile with | OkResult (warns, res) -> ReportWarnings warns tcImports.DoRegisterAndImportReferencedAssemblies(None,res) true | ErrorResult (_warns, _err) -> // Throw away warnings and errors - this is speculative loading false if tryFile (assemblyName + ".dll") then () else tryFile (assemblyName + ".exe") |> ignore #if EXTENSIONTYPING member tcImports.TryFindProviderGeneratedAssemblyByName(assemblyName:string) : System.Reflection.Assembly option = // The assembly may not be in the resolutions, but may be in the load set including EST injected assemblies match tcImports.TryFindDllInfo (range0,assemblyName,lookupOnly=true) with | Some res -> // Provider-generated assemblies don't necessarily have an on-disk representation we can load. res.ProviderGeneratedAssembly | _ -> None #endif member tcImports.TryFindExistingFullyQualifiedPathFromAssemblyRef(assref:ILAssemblyRef) : string option = match resolutions.TryFindByExactILAssemblyRef assref with | Some r -> Some r.resolvedPath | None -> None (* // The assembly may not be in the resolutions, but may be in the load set including EST injected assemblies let assemblyName = assref.Name match tcImports.TryFindDllInfo (range0,assemblyName,lookupOnly=true) with | Some res -> #if EXTENSIONTYPING // Provider-generated assemblies don't necessarily have an on-disk representation we can load. if res.IsProviderGenerated then None else #endif Some res.FileName | _ -> None *) member tcImports.TryResolveAssemblyReference(assemblyReference:AssemblyReference,mode:ResolveAssemblyReferenceMode) : OperationResult = let tcConfig = tcConfigP.Get() // First try to lookup via the original reference text. match resolutions.TryFindByOriginalReference assemblyReference with | Some assemblyResolution -> ResultD [assemblyResolution] | None -> #if SILVERLIGHT try ResultD [tcConfig.ResolveLibWithDirectories assemblyReference] with e -> ErrorD(e) #else // Next try to lookup up by the exact full resolved path. match resolutions.TryFindByResolvedPath assemblyReference.Text with | Some assemblyResolution -> ResultD [assemblyResolution] | None -> if tcConfigP.Get().useMonoResolution then let resolved = [tcConfig.ResolveLibWithDirectories assemblyReference] resolutions <- resolutions.AddResolutionResults resolved ResultD resolved else // This is a previously unencounterd assembly. Resolve it and add it to the list. // But don't cache resolution failures because the assembly may appear on the disk later. let resolved,unresolved = TcConfig.TryResolveLibsUsingMSBuildRules(tcConfig,[ assemblyReference ],assemblyReference.Range,mode) match resolved,unresolved with | (assemblyResolution::_,_) -> resolutions <- resolutions.AddResolutionResults resolved ResultD [assemblyResolution] | (_,_::_) -> resolutions <- resolutions.AddUnresolvedReferences unresolved ErrorD(AssemblyNotResolved(assemblyReference.Text,assemblyReference.Range)) | [],[] -> // Note, if mode=ResolveAssemblyReferenceMode.Speculative and the resolution failed then TryResolveLibsUsingMSBuildRules returns // the empty list and we convert the failure into an AssemblyNotResolved here. ErrorD(AssemblyNotResolved(assemblyReference.Text,assemblyReference.Range)) #endif member tcImports.ResolveAssemblyReference(assemblyReference,mode) : AssemblyResolution list = CommitOperationResult(tcImports.TryResolveAssemblyReference(assemblyReference,mode)) // Note: This returns a TcImports object. However, framework TcImports are not currently disposed. The only reason // we dispose TcImports is because we need to dispose type providers, and type providers are never included in the framework DLL set. // // If this ever changes then callers may need to begin disposing the TcImports (though remember, not before all derived // non-frameworkk TcImports built related to this framework TcImports are disposed). static member BuildFrameworkTcImports (tcConfigP:TcConfigProvider, frameworkDLLs, nonFrameworkDLLs) = let tcConfig = tcConfigP.Get() let tcResolutions = TcAssemblyResolutions.BuildFromPriorResolutions(tcConfig,frameworkDLLs,[]) let tcAltResolutions = TcAssemblyResolutions.BuildFromPriorResolutions(tcConfig,nonFrameworkDLLs,[]) // mscorlib gets loaded first. let mscorlibReference = tcConfig.MscorlibDllReference() // Note: TcImports are disposable - the caller owns this object and must dispose let frameworkTcImports = new TcImports(tcConfigP,tcResolutions,None,None) let sysCcu = let mscorlibResolution = tcConfig.ResolveLibWithDirectories(mscorlibReference) //printfn "mscorlibResolution= %s" mscorlibResolution.resolvedPath match frameworkTcImports.RegisterAndImportReferencedAssemblies(None, [mscorlibResolution]) with | (_, [ResolvedImportedAssembly(sysCcu)]) -> sysCcu | _ -> error(InternalError("BuildFoundationalTcImports: no sysCcu for "+mscorlibReference.Text,rangeStartup)) let generateDebugBrowsableData = ccuHasType sysCcu.FSharpViewOfMetadata ["System";"Diagnostics"] "DebuggerBrowsableAttribute" && ccuHasType sysCcu.FSharpViewOfMetadata ["System";"Diagnostics"] "DebuggerBrowsableState" let ilGlobals = mkILGlobals sysCcu.FSharpViewOfMetadata.ILScopeRef (Some tcConfig.mscorlibAssemblyName) (tcConfig.noDebugData, generateDebugBrowsableData) frameworkTcImports.SetILGlobals ilGlobals // Load the rest of the framework DLLs all at once (they may be mutually recursive) frameworkTcImports.DoRegisterAndImportReferencedAssemblies (None, tcResolutions.GetAssemblyResolutions()) let fslibCcu = if tcConfig.compilingFslib then // When compiling FSharp.Core.dll, the fslibCcu reference to FSharp.Core.dll is a delayed ccu thunk fixed up during type checking CcuThunk.CreateDelayed(GetFSharpCoreLibraryName()) else let fslibCcuInfo = let coreLibraryReference = tcConfig.CoreLibraryDllReference() //printfn "coreLibraryReference = %A" coreLibraryReference let resolvedAssemblyRef = match tcResolutions.TryFindByOriginalReference coreLibraryReference with | Some resolution -> Some resolution | _ -> // Are we using a "non-cannonical" FSharp.Core? match tcAltResolutions.TryFindByOriginalReference coreLibraryReference with | Some resolution -> Some resolution | _ -> tcResolutions.TryFindByOriginalReferenceText (GetFSharpCoreLibraryName()) // was the ".dll" elided? match resolvedAssemblyRef with | Some coreLibraryResolution -> //printfn "coreLibraryResolution = '%s'" coreLibraryResolution.resolvedPath match frameworkTcImports.RegisterAndImportReferencedAssemblies(None, [coreLibraryResolution]) with | (_, [ResolvedImportedAssembly(fslibCcuInfo) ]) -> fslibCcuInfo | _ -> error(InternalError("BuildFrameworkTcImports: no successful import of "+coreLibraryResolution.resolvedPath,coreLibraryResolution.originalReference.Range)) | None -> error(InternalError(sprintf "BuildFrameworkTcImports: no resolution of '%s'" coreLibraryReference.Text,rangeStartup)) IlxSettings.ilxFsharpCoreLibAssemRef := (let scoref = fslibCcuInfo.ILScopeRef match scoref with | ILScopeRef.Assembly aref -> Some aref | ILScopeRef.Local | ILScopeRef.Module _ -> error(InternalError("not ILScopeRef.Assembly",rangeStartup))) fslibCcuInfo.FSharpViewOfMetadata // Search for a type let getTypeCcu nsname typeName = if ccuHasType sysCcu.FSharpViewOfMetadata nsname typeName then sysCcu.FSharpViewOfMetadata else let search = seq { yield sysCcu.FSharpViewOfMetadata; yield! frameworkTcImports.GetCcusInDeclOrder() for dllName in SystemAssemblies (tcConfig.mscorlibAssemblyName, tcConfig.TargetMscorlibVersion, tcConfig.TargetIsSilverlight) do match frameworkTcImports.CcuTable.TryFind dllName with | Some sysCcu -> yield sysCcu.FSharpViewOfMetadata | None -> () } |> Seq.tryFind (fun ccu -> ccuHasType ccu nsname typeName) match search with | Some x -> x | None -> fslibCcu // REVIEW: We use this in some places to work around bugs in the 2.0 runtime. // Silverlight 4.0 will have some of these fixes, but their version number is 2.0.5.0. // If we ever modify the compiler to run on Silverlight, we'll need to update this mechanism. let using40environment = match ilGlobals.mscorlibScopeRef.AssemblyRef.Version with | Some (v1, _v2, _v3, _v4) -> v1 >= 4us | _ -> true // OK, now we have both mscorlib.dll and FSharp.Core.dll we can create TcGlobals let tcGlobals = mkTcGlobals(tcConfig.compilingFslib,sysCcu.FSharpViewOfMetadata,ilGlobals,fslibCcu, tcConfig.implicitIncludeDir,tcConfig.mlCompatibility,using40environment,tcConfig.indirectCallArrayMethods, tcConfig.isInteractive,getTypeCcu) #if DEBUG // the global_g reference cell is used only for debug printing global_g := Some tcGlobals #endif // do this prior to parsing, since parsing IL assembly code may refer to mscorlib #if NO_INLINE_IL_PARSER // inline IL not permitted by hostable compiler #else Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants.parseILGlobals := tcGlobals.ilg #endif frameworkTcImports.SetTcGlobals(tcGlobals) tcGlobals,frameworkTcImports member tcImports.ReportUnresolvedAssemblyReferences(knownUnresolved) = // Report that an assembly was not resolved. let reportAssemblyNotResolved(file,originalReferences:AssemblyReference list) = originalReferences |> List.iter(fun originalReference -> errorR(AssemblyNotResolved(file,originalReference.Range))) knownUnresolved |> List.map (function UnresolvedAssemblyReference(file,originalReferences) -> file,originalReferences) |> List.iter reportAssemblyNotResolved // Note: This returns a TcImports object. TcImports are disposable - the caller owns the returned TcImports object // and when hosted in Visual Studio or another long-running process must dispose this object. static member BuildNonFrameworkTcImports (displayPSTypeProviderSecurityDialogBlockingUI : (string->unit) option, tcConfigP:TcConfigProvider, tcGlobals:TcGlobals, baseTcImports, nonFrameworkReferences, knownUnresolved) = let tcConfig = tcConfigP.Get() let tcResolutions = TcAssemblyResolutions.BuildFromPriorResolutions(tcConfig,nonFrameworkReferences,knownUnresolved) let references = tcResolutions.GetAssemblyResolutions() let tcImports = new TcImports(tcConfigP,tcResolutions,Some baseTcImports, Some tcGlobals.ilg) tcImports.DoRegisterAndImportReferencedAssemblies(displayPSTypeProviderSecurityDialogBlockingUI, references) tcImports.ReportUnresolvedAssemblyReferences(knownUnresolved) tcImports // Note: This returns a TcImports object. TcImports are disposable - the caller owns the returned TcImports object // and if hosted in Visual Studio or another long-running process must dispose this object. However this // function is currently only used from fsi.exe. If we move to a long-running hosted evaluation service API then // we should start disposing these objects. static member BuildTcImports(tcConfigP:TcConfigProvider) = let tcConfig = tcConfigP.Get() //let foundationalTcImports,tcGlobals = TcImports.BuildFoundationalTcImports(tcConfigP) let frameworkDLLs,nonFrameworkReferences,knownUnresolved = TcAssemblyResolutions.SplitNonFoundationalResolutions(tcConfig) let tcGlobals,frameworkTcImports = TcImports.BuildFrameworkTcImports (tcConfigP,frameworkDLLs,nonFrameworkReferences) let tcImports = TcImports.BuildNonFrameworkTcImports(None, tcConfigP,tcGlobals,frameworkTcImports,nonFrameworkReferences,knownUnresolved) tcGlobals,tcImports interface System.IDisposable with member tcImports.Dispose() = CheckDisposed() // disposing deliberately only closes this tcImports, not the ones up the chain disposed <- true if verbose then dprintf "disposing of TcImports, %d binaries\n" disposeActions.Length let actions = disposeActions disposeActions <- [] for action in actions do action() //---------------------------------------------------------------------------- // Add "#r" and "#I" declarations to the tcConfig //-------------------------------------------------------------------------- // Add the reference and add the ccu to the type checking environment . Only used by F# Interactive let RequireDLL (tcImports:TcImports) tcEnv m file = let RequireResolved = function | ResolvedImportedAssembly(ccuinfo) -> ccuinfo | UnresolvedImportedAssembly(assemblyName) -> error(Error(FSComp.SR.buildCouldNotResolveAssemblyRequiredByFile(assemblyName,file),m)) let resolutions = CommitOperationResult(tcImports.TryResolveAssemblyReference(AssemblyReference(m,file),ResolveAssemblyReferenceMode.ReportErrors)) let dllinfos,ccuinfos = tcImports.RegisterAndImportReferencedAssemblies(None, resolutions) let ccuinfos = ccuinfos |> List.map RequireResolved let g = tcImports.GetTcGlobals() let amap = tcImports.GetImportMap() let tcEnv = ccuinfos |> List.fold (fun tcEnv ccuinfo -> Tc.AddCcuToTcEnv(g,amap,m,tcEnv,ccuinfo.FSharpViewOfMetadata,ccuinfo.AssemblyAutoOpenAttributes,false)) tcEnv tcEnv,(dllinfos,ccuinfos) let ProcessMetaCommandsFromInput (nowarnF: 'state -> range * string -> 'state, dllRequireF: 'state -> range * string -> 'state, loadSourceF: 'state -> range * string -> unit) (tcConfig:TcConfigBuilder) inp pathOfMetaCommandSource state0 = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) let canHaveScriptMetaCommands = match inp with | ParsedInput.SigFile(_) -> false | ParsedInput.ImplFile(ParsedImplFileInput(_,isScript,_,_,_,_,_)) -> isScript let ProcessMetaCommand state hash = let mutable matchedm = range0 try match hash with | ParsedHashDirective("I",args,m) -> if not canHaveScriptMetaCommands then errorR(HashIncludeNotAllowedInNonScript(m)) match args with | [path] -> matchedm<-m tcConfig.AddIncludePath(m,path,pathOfMetaCommandSource) state | _ -> errorR(Error(FSComp.SR.buildInvalidHashIDirective(),m)) state | ParsedHashDirective("nowarn",numbers,m) -> List.fold (fun state d -> nowarnF state (m,d)) state numbers | ParsedHashDirective(("reference" | "r"),args,m) -> if not canHaveScriptMetaCommands then errorR(HashReferenceNotAllowedInNonScript(m)) match args with | [path] -> matchedm<-m dllRequireF state (m,path) | _ -> errorR(Error(FSComp.SR.buildInvalidHashrDirective(),m)) state | ParsedHashDirective("load",args,m) -> if not canHaveScriptMetaCommands then errorR(HashDirectiveNotAllowedInNonScript(m)) match args with | _ :: _ -> matchedm<-m args |> List.iter (fun path -> loadSourceF state (m,path)) | _ -> errorR(Error(FSComp.SR.buildInvalidHashloadDirective(),m)) state | ParsedHashDirective("time",args,m) -> if not canHaveScriptMetaCommands then errorR(HashDirectiveNotAllowedInNonScript(m)) match args with | [] -> () | ["on" | "off"] -> () | _ -> errorR(Error(FSComp.SR.buildInvalidHashtimeDirective(),m)) state | _ -> (* warning(Error("This meta-command has been ignored",m)); *) state with e -> errorRecovery e matchedm; state let rec WarnOnIgnoredSpecDecls decls = decls |> List.iter (fun d -> match d with | SynModuleSigDecl.HashDirective (_,m) -> warning(Error(FSComp.SR.buildDirectivesInModulesAreIgnored(),m)) | SynModuleSigDecl.NestedModule (_,subDecls,_) -> WarnOnIgnoredSpecDecls subDecls | _ -> ()) let rec WarnOnIgnoredImplDecls decls = decls |> List.iter (fun d -> match d with | SynModuleDecl.HashDirective (_,m) -> warning(Error(FSComp.SR.buildDirectivesInModulesAreIgnored(),m)) | SynModuleDecl.NestedModule (_,subDecls,_,_) -> WarnOnIgnoredImplDecls subDecls | _ -> ()) let ProcessMetaCommandsFromModuleSpec state (SynModuleOrNamespaceSig(_,_,decls,_,_,_,_)) = List.fold (fun s d -> match d with | SynModuleSigDecl.HashDirective (h,_) -> ProcessMetaCommand s h | SynModuleSigDecl.NestedModule (_,subDecls,_) -> WarnOnIgnoredSpecDecls subDecls; s | _ -> s) state decls let ProcessMetaCommandsFromModuleImpl state (SynModuleOrNamespace(_,_,decls,_,_,_,_)) = List.fold (fun s d -> match d with | SynModuleDecl.HashDirective (h,_) -> ProcessMetaCommand s h | SynModuleDecl.NestedModule (_,subDecls,_,_) -> WarnOnIgnoredImplDecls subDecls; s | _ -> s) state decls match inp with | ParsedInput.SigFile(ParsedSigFileInput(_,_,_,hashDirectives,specs)) -> let state = List.fold ProcessMetaCommand state0 hashDirectives let state = List.fold ProcessMetaCommandsFromModuleSpec state specs state | ParsedInput.ImplFile(ParsedImplFileInput(_,_,_,_,hashDirectives,impls,_)) -> let state = List.fold ProcessMetaCommand state0 hashDirectives let state = List.fold ProcessMetaCommandsFromModuleImpl state impls state let ApplyNoWarnsToTcConfig (tcConfig:TcConfig) (inp:ParsedInput,pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder let addNoWarn = fun () (m,s) -> tcConfigB.TurnWarningOff(m,s) let addReferencedAssemblyByPath = fun () (_m,_s) -> () let addLoadedSource = fun () (_m,_s) -> () ProcessMetaCommandsFromInput (addNoWarn, addReferencedAssemblyByPath, addLoadedSource) tcConfigB inp pathOfMetaCommandSource () TcConfig.Create(tcConfigB,validate=false) let ApplyMetaCommandsFromInputToTcConfig (tcConfig:TcConfig) (inp:ParsedInput,pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder let getWarningNumber = fun () _ -> () let addReferencedAssemblyByPath = fun () (m,s) -> tcConfigB.AddReferencedAssemblyByPath(m,s) let addLoadedSource = fun () (m,s) -> tcConfigB.AddLoadedSource(m,s,pathOfMetaCommandSource) ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addLoadedSource) tcConfigB inp pathOfMetaCommandSource () TcConfig.Create(tcConfigB,validate=false) let GetAssemblyResolutionInformation(tcConfig : TcConfig) : AssemblyResolution list * UnresolvedAssemblyReference list = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) let assemblyList = TcAssemblyResolutions.GetAllDllReferences(tcConfig) let resolutions = TcAssemblyResolutions.Resolve(tcConfig,assemblyList,[]) resolutions.GetAssemblyResolutions(),resolutions.GetUnresolvedReferences() type LoadClosure = { /// The source files along with the ranges of the #load positions in each file. SourceFiles: (string * range list) list /// The resolved references along with the ranges of the #r positions in each file. References: (string * AssemblyResolution list) list /// The list of references that were not resolved during load closure. These may still be extension references. UnresolvedReferences : UnresolvedAssemblyReference list /// The list of all sources in the closure with inputs when available Inputs: (string * ParsedInput option) list /// The #nowarns NoWarns: (string * range list) list /// Errors seen while parsing root of closure RootErrors : PhasedError list /// Warnings seen while parsing root of closure RootWarnings : PhasedError list } [] type CodeContext = | Evaluation // in fsi.exe | Compilation // in fsc.exe | Editing // in VS module private ScriptPreprocessClosure = open Internal.Utilities.Text.Lexing type private ClosureDirective = | SourceFile of string * range * string // filename, range, source text | ClosedSourceFile of string * range * ParsedInput option * PhasedError list * PhasedError list * (string * range) list // filename, range, errors, warnings, nowarns type private Observed() = let seen = System.Collections.Generic.Dictionary<_,bool>() member ob.SetSeen(check) = if not(seen.ContainsKey(check)) then seen.Add(check,true) member ob.HaveSeen(check) = seen.ContainsKey(check) /// Parse a script from source. let ParseScriptText(filename:string, source:string, tcConfig:TcConfig, codeContext, lexResourceManager:Lexhelp.LexResourceManager, errorLogger:ErrorLogger) = // fsc.exe -- COMPILED\!INTERACTIVE // fsi.exe -- !COMPILED\INTERACTIVE // Language service // .fs -- EDITING + COMPILED\!INTERACTIVE // .fsx -- EDITING + !COMPILED\INTERACTIVE let defines = match codeContext with | CodeContext.Evaluation -> ["INTERACTIVE"] | CodeContext.Compilation -> ["COMPILED"] | CodeContext.Editing -> "EDITING" :: (if IsScript filename then ["INTERACTIVE"] else ["COMPILED"]) let lexbuf = UnicodeLexing.StringAsLexbuf source let isLastCompiland = IsScript filename // The root compiland is last in the list of compilands. ParseOneInputLexbuf (tcConfig,lexResourceManager,defines,lexbuf,filename,isLastCompiland,errorLogger) /// Create a TcConfig for load closure starting from a single .fsx file let CreateScriptSourceTcConfig(filename:string,codeContext) = let projectDir = Path.GetDirectoryName(filename) let isInteractive = (codeContext = CodeContext.Evaluation) let isInvalidationSupported = (codeContext = CodeContext.Editing) let tcConfigB = TcConfigBuilder.CreateNew(Internal.Utilities.FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(None).Value, true (* optimize for memory *), projectDir, isInteractive, isInvalidationSupported) BasicReferencesForScriptLoadClosure |> List.iter(fun f->tcConfigB.AddReferencedAssemblyByPath(range0,f)) // Add script references tcConfigB.resolutionEnvironment <- match codeContext with | CodeContext.Editing -> MSBuildResolver.DesigntimeLike | CodeContext.Compilation | CodeContext.Evaluation -> MSBuildResolver.RuntimeLike tcConfigB.framework <- false // Indicates that there are some references not in BasicReferencesForScriptLoadClosure which should // be added conditionally once the relevant version of mscorlib.dll has been detected. tcConfigB.addVersionSpecificFrameworkReferences <- true tcConfigB.implicitlyResolveAssemblies <- false TcConfig.Create(tcConfigB,validate=true) let private SourceFileOfFilename(filename,m,inputCodePage:int option) : ClosureDirective list = try let filename = FileSystem.SafeGetFullPath(filename) use stream = FileSystem.FileStreamReadShim filename use reader = match inputCodePage with | None -> new StreamReader(stream,true) | Some n -> new StreamReader(stream,Encoding.GetEncodingShim(n)) let source = reader.ReadToEnd() [SourceFile(filename,m,source)] with e -> errorRecovery e m [] let ApplyMetaCommandsFromInputToTcConfigAndGatherNoWarn (tcConfig:TcConfig) (inp:ParsedInput,pathOfMetaCommandSource) = let tcConfigB = tcConfig.CloneOfOriginalBuilder let nowarns = ref [] let getWarningNumber = fun () (m,s) -> nowarns := (s,m) :: !nowarns let addReferencedAssemblyByPath = fun () (m,s) -> tcConfigB.AddReferencedAssemblyByPath(m,s) let addLoadedSource = fun () (m,s) -> tcConfigB.AddLoadedSource(m,s,pathOfMetaCommandSource) try ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addLoadedSource) tcConfigB inp pathOfMetaCommandSource () with ReportedError _ -> // Recover by using whatever did end up in the tcConfig () try TcConfig.Create(tcConfigB,validate=false),nowarns with ReportedError _ -> // Recover by using a default TcConfig. let tcConfigB = tcConfig.CloneOfOriginalBuilder TcConfig.Create(tcConfigB,validate=false),nowarns let private FindClosureDirectives(closureDirectives,tcConfig:TcConfig,codeContext,lexResourceManager:Lexhelp.LexResourceManager) = let tcConfig = ref tcConfig let observedSources = Observed() let rec FindClosure (closureDirective:ClosureDirective) : ClosureDirective list = match closureDirective with | ClosedSourceFile _ as csf -> [csf] | SourceFile(filename,m,source) -> let filename = FileSystem.SafeGetFullPath(filename) if observedSources.HaveSeen(filename) then [] else observedSources.SetSeen(filename) let errors = ref [] let warnings = ref [] let errorLogger = { new ErrorLogger("FindClosure") with member x.ErrorSinkImpl(e) = errors := e :: !errors member x.WarnSinkImpl(e) = warnings := e :: !warnings member x.ErrorCount = (!errors).Length } use unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) let pathOfMetaCommandSource = Path.GetDirectoryName(filename) match ParseScriptText(filename,source,!tcConfig,codeContext,lexResourceManager,errorLogger) with | Some(input) -> let tcConfigResult, noWarns = ApplyMetaCommandsFromInputToTcConfigAndGatherNoWarn !tcConfig (input,pathOfMetaCommandSource) tcConfig := tcConfigResult let AddFileIfNotSeen(m,filename) = if observedSources.HaveSeen(filename) then [] else if IsScript(filename) then SourceFileOfFilename(filename,m,tcConfigResult.inputCodePage) else observedSources.SetSeen(filename) [ClosedSourceFile(filename,m,None,[],[],[])] // Don't traverse into .fs leafs. let loadedSources = (!tcConfig).GetAvailableLoadedSources() |> List.rev |> List.map AddFileIfNotSeen |> List.concat ClosedSourceFile(filename,m,Some(input),!errors,!warnings,!noWarns) :: loadedSources |> List.map FindClosure |> List.concat // Final closure is in reverse order. Keep the closed source at the top. | None -> [ClosedSourceFile(filename,m,None,!errors,!warnings,[])] closureDirectives |> List.map FindClosure |> List.concat, !tcConfig /// Reduce the full directive closure into LoadClosure let private GetLoadClosure(rootFilename,closureDirectives,tcConfig,codeContext) = // Mark the last file as isLastCompiland. closureDirectives is currently reversed. let closureDirectives = match closureDirectives with | ClosedSourceFile(filename,m,Some(ParsedInput.ImplFile(ParsedImplFileInput(name,isScript,qualNameOfFile,scopedPragmas,hashDirectives,implFileFlags,_))),errs,warns,nowarns)::rest -> ClosedSourceFile(filename,m,Some(ParsedInput.ImplFile(ParsedImplFileInput(name,isScript,qualNameOfFile,scopedPragmas,hashDirectives,implFileFlags,true))),errs,warns,nowarns)::rest | x -> x // Get all source files. let sourceFiles = ref [] let sourceInputs = ref [] let globalNoWarns = ref [] let ExtractOne = function | ClosedSourceFile(filename,m,input,_,_,noWarns) -> let filename = FileSystem.SafeGetFullPath(filename) sourceFiles := (filename,m) :: !sourceFiles globalNoWarns := (!globalNoWarns @ noWarns) sourceInputs := (filename,input) :: !sourceInputs | _ -> failwith "Unexpected" closureDirectives |> List.iter ExtractOne // This unreverses the list of sources // Resolve all references. let resolutionErrors = ref [] let resolutionWarnings = ref [] let errorLogger = { new ErrorLogger("GetLoadClosure") with member x.ErrorSinkImpl(e) = resolutionErrors := e :: !resolutionErrors member x.WarnSinkImpl(e) = resolutionWarnings := e :: !resolutionWarnings member x.ErrorCount = (!resolutionErrors).Length } let references,unresolvedReferences = use unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) GetAssemblyResolutionInformation(tcConfig) let references = references |> List.map (fun ar -> ar.resolvedPath,ar) // Root errors and warnings let rootErrors, rootWarnings = match closureDirectives with | ClosedSourceFile(_,_,_,errors,warnings,_) :: _ -> errors @ !resolutionErrors, warnings @ !resolutionWarnings | _ -> [],[] // When no file existed. let isRootRange exn = match RangeOfError exn with | Some m -> // Return true if the error was *not* from a #load-ed file. let isArgParameterWhileNotEditing = (codeContext <> CodeContext.Editing) && (m = range0 || m = rangeStartup || m = rangeCmdArgs) let isThisFileName = (0 = String.Compare(rootFilename, m.FileName, StringComparison.OrdinalIgnoreCase)) isArgParameterWhileNotEditing || isThisFileName | None -> true // Filter out non-root errors and warnings let rootErrors = rootErrors |> List.filter isRootRange let rootWarnings = rootWarnings |> List.filter isRootRange let result = {SourceFiles = List.groupByFirst !sourceFiles References = List.groupByFirst references UnresolvedReferences = unresolvedReferences Inputs = !sourceInputs NoWarns = List.groupByFirst !globalNoWarns RootErrors = rootErrors RootWarnings = rootWarnings} result /// Given source text, find the full load closure /// Used from service.fs, when editing a script file let GetFullClosureOfScriptSource(filename,source,codeContext,lexResourceManager:Lexhelp.LexResourceManager) = let tcConfig = CreateScriptSourceTcConfig(filename,codeContext) let protoClosure = [SourceFile(filename,range0,source)] let finalClosure,tcConfig = FindClosureDirectives(protoClosure,tcConfig,codeContext,lexResourceManager) GetLoadClosure(filename,finalClosure,tcConfig,codeContext) /// Given source filename, find the full load closure /// Used from fsi.fs and fsc.fs, for #load and command line let GetFullClosureOfScriptFiles(tcConfig:TcConfig,files:(string*range) list,codeContext,_useDefaultScriptingReferences:bool,lexResourceManager:Lexhelp.LexResourceManager) = let mainFile = fst (List.head files) let protoClosure = files |> List.map (fun (filename,m)->SourceFileOfFilename(filename,m,tcConfig.inputCodePage)) |> List.concat |> List.rev // Reverse to put them in the order they will be extracted later let finalClosure,tcConfig = FindClosureDirectives(protoClosure,tcConfig,codeContext,lexResourceManager) GetLoadClosure(mainFile,finalClosure,tcConfig,codeContext) type LoadClosure with // Used from service.fs, when editing a script file static member ComputeClosureOfSourceText(filename:string,source:string,codeContext,lexResourceManager:Lexhelp.LexResourceManager) : LoadClosure = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) ScriptPreprocessClosure.GetFullClosureOfScriptSource(filename,source,codeContext,lexResourceManager) /// Used from fsi.fs and fsc.fs, for #load and command line. /// The resulting references are then added to a TcConfig. static member ComputeClosureOfSourceFiles(tcConfig:TcConfig,files:(string*range) list,codeContext,useDefaultScriptingReferences:bool,lexResourceManager:Lexhelp.LexResourceManager) : LoadClosure = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parse) ScriptPreprocessClosure.GetFullClosureOfScriptFiles(tcConfig,files,codeContext,useDefaultScriptingReferences,lexResourceManager) //---------------------------------------------------------------------------- // Build the initial type checking environment //-------------------------------------------------------------------------- let implicitOpen tcGlobals amap m tcEnv p = if verbose then dprintf "opening %s\n" p Tc.TcOpenDecl TcResultsSink.NoSink tcGlobals amap m m tcEnv (pathToSynLid m (splitNamespace p)) let GetInitialTypecheckerEnv (assemblyName:string option) (initm:range) (tcConfig:TcConfig) (tcImports:TcImports) tcGlobals = let initm = initm.StartRange if verbose then dprintf "--- building initial tcEnv\n" let internalsAreVisibleHere (ccuinfo:ImportedAssembly) = match assemblyName with | None -> false | Some assemblyName -> let isTargetAssemblyName (visibleTo:string) = try System.Reflection.AssemblyName(visibleTo).Name = assemblyName with e -> warning(InvalidInternalsVisibleToAssemblyName(visibleTo,ccuinfo.FSharpViewOfMetadata.FileName)) false let internalsVisibleTos = ccuinfo.AssemblyInternalsVisibleToAttributes List.exists isTargetAssemblyName internalsVisibleTos let ccus = tcImports.GetImportedAssemblies() |> List.map (fun ccuinfo -> ccuinfo.FSharpViewOfMetadata, ccuinfo.AssemblyAutoOpenAttributes, ccuinfo |> internalsAreVisibleHere) let amap = tcImports.GetImportMap() let tcEnv = Tc.CreateInitialTcEnv(tcGlobals,amap,initm,ccus) |> (fun tce -> if tcConfig.checkOverflow then List.fold (implicitOpen tcGlobals amap initm) tce [FSharpLib.CoreOperatorsCheckedName] else tce) if verbose then dprintf "--- opening implicit paths\n" if verbose then dprintf "--- GetInitialTypecheckerEnv, top modules = %s\n" (String.concat ";" (NameMap.domainL tcEnv.NameEnv.eModulesAndNamespaces)) if verbose then dprintf "<-- GetInitialTypecheckerEnv\n" tcEnv //---------------------------------------------------------------------------- // TYPECHECK //-------------------------------------------------------------------------- (* The incremental state of type checking files *) (* REVIEW: clean this up *) type RootSigs = Zmap type RootImpls = Zset type TypecheckerSigsAndImpls = RootSigsAndImpls of RootSigs * RootImpls * ModuleOrNamespaceType * ModuleOrNamespaceType let qnameOrder = Order.orderBy (fun (q:QualifiedNameOfFile) -> q.Text) type TcState = { tcsCcu: CcuThunk tcsCcuType: ModuleOrNamespace tcsNiceNameGen: NiceNameGenerator tcsTcSigEnv: TcEnv tcsTcImplEnv: TcEnv (* The accumulated results of type checking for this assembly *) tcsRootSigsAndImpls : TypecheckerSigsAndImpls } member x.NiceNameGenerator = x.tcsNiceNameGen member x.TcEnvFromSignatures = x.tcsTcSigEnv member x.TcEnvFromImpls = x.tcsTcImplEnv member x.Ccu = x.tcsCcu member x.NextStateAfterIncrementalFragment(tcEnvAtEndOfLastInput) = { x with tcsTcSigEnv = tcEnvAtEndOfLastInput tcsTcImplEnv = tcEnvAtEndOfLastInput } let TypecheckInitialState(m,ccuName,tcConfig:TcConfig,tcGlobals,tcImports:TcImports,niceNameGen,tcEnv0) = ignore tcImports if verbose then dprintf "Typecheck (constructing initial state)....\n" // Create a ccu to hold all the results of compilation let ccuType = NewCcuContents ILScopeRef.Local m ccuName (NewEmptyModuleOrNamespaceType Namespace) let ccu = CcuThunk.Create(ccuName,{IsFSharp=true UsesQuotations=false #if EXTENSIONTYPING InvalidateEvent=(new Event<_>()).Publish IsProviderGenerated = false ImportProvidedType = (fun ty -> Import.ImportProvidedType (tcImports.GetImportMap()) m ty) #endif FileName=None Stamp = newStamp() QualifiedName= None SourceCodeDirectory = tcConfig.implicitIncludeDir ILScopeRef=ILScopeRef.Local Contents=ccuType MemberSignatureEquality= (Tastops.typeEquivAux EraseAll tcGlobals) TypeForwarders=lazy Map.empty }) (* OK, is this is the F# library CCU then fix it up. *) if tcConfig.compilingFslib then tcGlobals.fslibCcu.Fixup(ccu) let rootSigs = Zmap.empty qnameOrder let rootImpls = Zset.empty qnameOrder let allSigModulTyp = NewEmptyModuleOrNamespaceType Namespace let allImplementedSigModulTyp = NewEmptyModuleOrNamespaceType Namespace { tcsCcu= ccu tcsCcuType=ccuType tcsNiceNameGen=niceNameGen tcsTcSigEnv=tcEnv0 tcsTcImplEnv=tcEnv0 tcsRootSigsAndImpls = RootSigsAndImpls (rootSigs, rootImpls, allSigModulTyp, allImplementedSigModulTyp) } let CheckSimulateException(tcConfig:TcConfig) = match tcConfig.simulateException with | Some("tc-oom") -> raise(System.OutOfMemoryException()) | Some("tc-an") -> raise(System.ArgumentNullException("simulated")) | Some("tc-invop") -> raise(System.InvalidOperationException()) | Some("tc-av") -> raise(System.AccessViolationException()) | Some("tc-aor") -> raise(System.ArgumentOutOfRangeException()) | Some("tc-dv0") -> raise(System.DivideByZeroException()) | Some("tc-nfn") -> raise(System.NotFiniteNumberException()) | Some("tc-oe") -> raise(System.OverflowException()) | Some("tc-atmm") -> raise(System.ArrayTypeMismatchException()) | Some("tc-bif") -> raise(System.BadImageFormatException()) | Some("tc-knf") -> raise(System.Collections.Generic.KeyNotFoundException()) | Some("tc-ior") -> raise(System.IndexOutOfRangeException()) | Some("tc-ic") -> raise(System.InvalidCastException()) | Some("tc-ip") -> raise(System.InvalidProgramException()) | Some("tc-ma") -> raise(System.MemberAccessException()) | Some("tc-ni") -> raise(System.NotImplementedException()) | Some("tc-nr") -> raise(System.NullReferenceException()) #if SILVERLIGHT #else | Some("tc-oc") -> raise(System.OperationCanceledException()) #endif | Some("tc-fail") -> failwith "simulated" | _ -> () (* Typecheck a single file or interactive entry into F# Interactive *) let TypecheckOneInputEventually (checkForErrors , tcConfig:TcConfig, tcImports:TcImports, tcGlobals, prefixPathOpt, tcSink, tcState: TcState, inp: ParsedInput) = eventually { try CheckSimulateException(tcConfig) let (RootSigsAndImpls(rootSigs,rootImpls,allSigModulTyp,allImplementedSigModulTyp)) = tcState.tcsRootSigsAndImpls let m = inp.Range let amap = tcImports.GetImportMap() let! (topAttrs, mimpls,tcEnvAtEnd,tcSigEnv,tcImplEnv,topSigsAndImpls,ccuType) = eventually { match inp with | ParsedInput.SigFile (ParsedSigFileInput(filename,qualNameOfFile, _,_,_) as file) -> // Check if we've seen this top module signature before. if Zmap.mem qualNameOfFile rootSigs then errorR(Error(FSComp.SR.buildSignatureAlreadySpecified(qualNameOfFile.Text),m.StartRange)) (* Check if the implementation came first in compilation order *) if Zset.contains qualNameOfFile rootImpls then errorR(Error(FSComp.SR.buildImplementationAlreadyGivenDetail(qualNameOfFile.Text),m)) // Typecheck the signature file #if DEBUG if !verboseStamps then dprintf "---------------------- START CHECK %A ------------\n" filename #else filename |> ignore #endif let! (tcEnvAtEnd,tcEnv,smodulTypeRoot) = Tc.TypecheckOneSigFile (tcGlobals,tcState.tcsNiceNameGen,amap,tcState.tcsCcu,checkForErrors,tcConfig.conditionalCompilationDefines,tcSink) tcState.tcsTcSigEnv file #if DEBUG if !verboseStamps then dprintf "Type-checked signature:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityTypeL smodulTypeRoot))) dprintf "---------------------- END CHECK %A ------------\n" filename #endif let rootSigs = Zmap.add qualNameOfFile smodulTypeRoot rootSigs // Open the prefixPath for fsi.exe let tcEnv = match prefixPathOpt with | None -> tcEnv | Some prefixPath -> let m = qualNameOfFile.Range TcOpenDecl tcSink tcGlobals amap m m tcEnv prefixPath let res = (EmptyTopAttrs, [],tcEnvAtEnd,tcEnv,tcState.tcsTcImplEnv,RootSigsAndImpls(rootSigs,rootImpls, allSigModulTyp, allImplementedSigModulTyp ),tcState.tcsCcuType) return res | ParsedInput.ImplFile (ParsedImplFileInput(filename,_,qualNameOfFile,_,_,_,_) as file) -> // Check if we've got an interface for this fragment let rootSigOpt = rootSigs.TryFind(qualNameOfFile) if verbose then dprintf "ParsedInput.ImplFile, nm = %s, qualNameOfFile = %s, ?rootSigOpt = %b\n" filename qualNameOfFile.Text (isSome rootSigOpt) // Check if we've already seen an implementation for this fragment if Zset.contains qualNameOfFile rootImpls then errorR(Error(FSComp.SR.buildImplementationAlreadyGiven(qualNameOfFile.Text),m)) let tcImplEnv = tcState.tcsTcImplEnv #if DEBUG if !verboseStamps then dprintf "---------------------- START CHECK %A ------------\n" filename #endif // Typecheck the implementation file let! topAttrs,implFile,tcEnvAtEnd = Tc.TypecheckOneImplFile (tcGlobals,tcState.tcsNiceNameGen,amap,tcState.tcsCcu,checkForErrors,tcConfig.conditionalCompilationDefines,tcSink) tcImplEnv rootSigOpt file let hadSig = isSome rootSigOpt let implFileSigType = SigTypeOfImplFile implFile #if DEBUG if !verboseStamps then dprintf "Implementation signature:\n%s\n" (Layout.showL (Layout.squashTo 192 (entityTypeL implFileSigType))) dprintf "---------------------- END CHECK %A ------------\n" filename #endif if verbose then dprintf "done TypecheckOneImplFile...\n" let rootImpls = Zset.add qualNameOfFile rootImpls // Only add it to the environment if it didn't have a signature let m = qualNameOfFile.Range let tcImplEnv = Tc.AddLocalRootModuleOrNamespace TcResultsSink.NoSink tcGlobals amap m tcImplEnv implFileSigType let tcSigEnv = if hadSig then tcState.tcsTcSigEnv else Tc.AddLocalRootModuleOrNamespace TcResultsSink.NoSink tcGlobals amap m tcState.tcsTcSigEnv implFileSigType // Open the prefixPath for fsi.exe let tcImplEnv = match prefixPathOpt with | None -> tcImplEnv | Some prefixPath -> TcOpenDecl tcSink tcGlobals amap m m tcImplEnv prefixPath let allImplementedSigModulTyp = combineModuleOrNamespaceTypeList [] m [implFileSigType; allImplementedSigModulTyp] // Add it to the CCU let ccuType = // The signature must be reestablished. // [CHECK: Why? This seriously degraded performance] NewCcuContents ILScopeRef.Local m tcState.tcsCcu.AssemblyName allImplementedSigModulTyp if verbose then dprintf "done TypecheckOneInputEventually...\n" let topSigsAndImpls = RootSigsAndImpls(rootSigs,rootImpls,allSigModulTyp,allImplementedSigModulTyp) let res = (topAttrs,[implFile], tcEnvAtEnd, tcSigEnv, tcImplEnv,topSigsAndImpls,ccuType) return res } return (tcEnvAtEnd,topAttrs,mimpls), { tcState with tcsCcuType=ccuType tcsTcSigEnv=tcSigEnv tcsTcImplEnv=tcImplEnv tcsRootSigsAndImpls = topSigsAndImpls } with e -> errorRecovery e range0 return (tcState.TcEnvFromSignatures,EmptyTopAttrs,[]),tcState } let TypecheckOneInput (checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt) tcState inp = // 'use' ensures that the warning handler is restored at the end use unwindEL = PushErrorLoggerPhaseUntilUnwind(fun oldLogger -> GetErrorLoggerFilteringByScopedPragmas(false,GetScopedPragmasForInput(inp),oldLogger) ) use unwindBP = PushThreadBuildPhaseUntilUnwind (BuildPhase.TypeCheck) TypecheckOneInputEventually (checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt, TcResultsSink.NoSink, tcState, inp) |> Eventually.force let TypecheckMultipleInputsFinish(results,tcState: TcState) = let tcEnvsAtEndFile,topAttrs,mimpls = List.unzip3 results let topAttrs = List.foldBack CombineTopAttrs topAttrs EmptyTopAttrs let mimpls = List.concat mimpls // This is the environment required by fsi.exe when incrementally adding definitions let tcEnvAtEndOfLastFile = (match tcEnvsAtEndFile with h :: _ -> h | _ -> tcState.TcEnvFromSignatures) if verbose then dprintf "done TypecheckMultipleInputs...\n" (tcEnvAtEndOfLastFile,topAttrs,mimpls),tcState let TypecheckMultipleInputs(checkForErrors,tcConfig:TcConfig,tcImports,tcGlobals,prefixPathOpt,tcState,inputs) = let results,tcState = List.mapFold (TypecheckOneInput (checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt)) tcState inputs TypecheckMultipleInputsFinish(results,tcState) let TypecheckSingleInputAndFinishEventually(checkForErrors,tcConfig:TcConfig,tcImports,tcGlobals,prefixPathOpt,tcSink,tcState,input) = eventually { let! results,tcState = TypecheckOneInputEventually(checkForErrors, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, tcState, input) return TypecheckMultipleInputsFinish([results],tcState) } let TypecheckClosedInputSetFinish(mimpls,tcState) = // Publish the latest contents to the CCU tcState.tcsCcu.Deref.Contents <- tcState.tcsCcuType // Check all interfaces have implementations let (RootSigsAndImpls(rootSigs,rootImpls,_,_)) = tcState.tcsRootSigsAndImpls rootSigs |> Zmap.iter (fun qualNameOfFile _ -> if not (Zset.contains qualNameOfFile rootImpls) then errorR(Error(FSComp.SR.buildSignatureWithoutImplementation(qualNameOfFile.Text), qualNameOfFile.Range))) if verbose then dprintf "done TypecheckClosedInputSet...\n" let tassembly = TAssembly(mimpls) tcState, tassembly let TypecheckClosedInputSet(checkForErrors,tcConfig,tcImports,tcGlobals,prefixPathOpt,tcState,inputs) = // tcEnvAtEndOfLastFile is the environment required by fsi.exe when incrementally adding definitions let (tcEnvAtEndOfLastFile,topAttrs,mimpls),tcState = TypecheckMultipleInputs (checkForErrors,tcConfig,tcImports,tcGlobals,prefixPathOpt,tcState,inputs) let tcState,tassembly = TypecheckClosedInputSetFinish (mimpls, tcState) tcState, topAttrs, tassembly, tcEnvAtEndOfLastFile type OptionSwitch = | On | Off type OptionSpec = | OptionClear of bool ref | OptionFloat of (float -> unit) | OptionInt of (int -> unit) | OptionSwitch of (OptionSwitch -> unit) | OptionIntList of (int -> unit) | OptionIntListSwitch of (int -> OptionSwitch -> unit) | OptionRest of (string -> unit) | OptionSet of bool ref | OptionString of (string -> unit) | OptionStringList of (string -> unit) | OptionStringListSwitch of (string -> OptionSwitch -> unit) | OptionUnit of (unit -> unit) | OptionHelp of (CompilerOptionBlock list -> unit) // like OptionUnit, but given the "options" | OptionGeneral of (string list -> bool) * (string list -> string list) // Applies? * (ApplyReturningResidualArgs) and CompilerOption = CompilerOption of string * string * OptionSpec * Option * string option and CompilerOptionBlock = PublicOptions of string * CompilerOption list | PrivateOptions of CompilerOption list let blockOptions = function PublicOptions (_,opts) -> opts | PrivateOptions opts -> opts let filterCompilerOptionBlock pred block = match block with | PublicOptions(heading,opts) -> PublicOptions(heading,List.filter pred opts) | PrivateOptions(opts) -> PrivateOptions(List.filter pred opts) let compilerOptionUsage (CompilerOption(s,tag,spec,_,_)) = let s = if s="--" then "" else s (* s="flag" for "--flag" options. s="--" for "--" option. Adjust printing here for "--" case. *) match spec with | (OptionUnit _ | OptionSet _ | OptionClear _ | OptionHelp _) -> sprintf "--%s" s | OptionStringList _ -> sprintf "--%s:%s" s tag | OptionIntList _ -> sprintf "--%s:%s" s tag | OptionSwitch _ -> sprintf "--%s[+|-]" s | OptionStringListSwitch _ -> sprintf "--%s[+|-]:%s" s tag | OptionIntListSwitch _ -> sprintf "--%s[+|-]:%s" s tag | OptionString _ -> sprintf "--%s:%s" s tag | OptionInt _ -> sprintf "--%s:%s" s tag | OptionFloat _ -> sprintf "--%s:%s" s tag | OptionRest _ -> sprintf "--%s ..." s | OptionGeneral _ -> if tag="" then sprintf "%s" s else sprintf "%s:%s" s tag (* still being decided *) let printCompilerOption (CompilerOption(_s,_tag,_spec,_,help) as compilerOption) = let flagWidth = 30 // fixed width for printing of flags, e.g. --warnaserror: let defaultLineWidth = 80 // the fallback width #if SILVERLIGHT let lineWidth = defaultLineWidth #else let lineWidth = try System.Console.BufferWidth with e -> defaultLineWidth #endif let lineWidth = if lineWidth=0 then defaultLineWidth else lineWidth (* Have seen BufferWidth=0 on Linux/Mono *) // Lines have this form: // flagWidth chars - for flags description or padding on continuation lines. // single space - space. // description - words upto but excluding the final character of the line. assert(flagWidth = 30) printf "%-30s" (compilerOptionUsage compilerOption) let printWord column (word:string) = // Have printed upto column. // Now print the next word including any preceeding whitespace. // Returns the column printed to (suited to folding). if column + 1 (*space*) + word.Length >= lineWidth then // NOTE: "equality" ensures final character of the line is never printed printfn "" (* newline *) assert(flagWidth = 30) printf "%-30s %s" ""(*<--flags*) word flagWidth + 1 + word.Length else printf " %s" word column + 1 + word.Length let words = match help with None -> [| |] | Some s -> s.Split [| ' ' |] let _finalColumn = Array.fold printWord flagWidth words printfn "" (* newline *) let printPublicOptions (heading,opts) = if nonNil opts then printfn "" printfn "" printfn "\t\t%s" heading List.iter printCompilerOption opts let printCompilerOptionBlocks blocks = let equals x y = x=y let publicBlocks = List.choose (function PrivateOptions _ -> None | PublicOptions (heading,opts) -> Some (heading,opts)) blocks let consider doneHeadings (heading, _opts) = if Set.contains heading doneHeadings then doneHeadings else let headingOptions = List.filter (fst >> equals heading) publicBlocks |> List.map snd |> List.concat printPublicOptions (heading,headingOptions) Set.add heading doneHeadings List.fold consider Set.empty publicBlocks |> ignore> (* For QA *) let dumpCompilerOption prefix (CompilerOption(str, _, spec, _, _)) = printf "section='%-25s' ! option=%-30s kind=" prefix str match spec with | OptionUnit _ -> printf "OptionUnit" | OptionSet _ -> printf "OptionSet" | OptionClear _ -> printf "OptionClear" | OptionHelp _ -> printf "OptionHelp" | OptionStringList _ -> printf "OptionStringList" | OptionIntList _ -> printf "OptionIntList" | OptionSwitch _ -> printf "OptionSwitch" | OptionStringListSwitch _ -> printf "OptionStringListSwitch" | OptionIntListSwitch _ -> printf "OptionIntListSwitch" | OptionString _ -> printf "OptionString" | OptionInt _ -> printf "OptionInt" | OptionFloat _ -> printf "OptionFloat" | OptionRest _ -> printf "OptionRest" | OptionGeneral _ -> printf "OptionGeneral" printf "\n" let dumpCompilerOptionBlock = function | PublicOptions (heading,opts) -> List.iter (dumpCompilerOption heading) opts | PrivateOptions opts -> List.iter (dumpCompilerOption "NoSection") opts let dumpCompilerOptionBlocks blocks = List.iter dumpCompilerOptionBlock blocks let isSlashOpt (opt:string) = opt.[0] = '/' && (opt.Length = 1 || not (opt.[1..].Contains "/")) //---------------------------------------------------------------------------- // The argument parser is used by both the VS plug-in and the fsc.exe to // parse the include file path and other front-end arguments. // // The language service uses this function too. It's important to continue // processing flags even if an error is seen in one so that the best possible // intellisense can be show. //-------------------------------------------------------------------------- let ParseCompilerOptions (collectOtherArgument : string -> unit) (blocks: CompilerOptionBlock list) args = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.Parameter) let specs : CompilerOption list = List.collect blockOptions blocks // returns a tuple - the option token, the option argument string let parseOption (s : string) = // grab the option token let opts = s.Split([|':'|]) let mutable opt = opts.[0] if opt = "" then () // if it doesn't start with a '-' or '/', reject outright elif opt.[0] <> '-' && opt.[0] <> '/' then opt <- "" elif opt <> "--" then // is it an abbreviated or MSFT-style option? // if so, strip the first character and move on with your life if opt.Length = 2 || isSlashOpt opt then opt <- opt.[1 ..] // else, it should be a non-abbreviated option starting with "--" elif opt.Length > 3 && opt.StartsWith("--") then opt <- opt.[2 ..] else opt <- "" // get the argument string let optArgs = if opts.Length > 1 then String.Join(":",opts.[1 ..]) else "" opt, optArgs let getOptionArg compilerOption (argString : string) = if argString = "" then errorR(Error(FSComp.SR.buildOptionRequiresParameter(compilerOptionUsage compilerOption),rangeCmdArgs)) argString let getOptionArgList compilerOption (argString : string) = if argString = "" then errorR(Error(FSComp.SR.buildOptionRequiresParameter(compilerOptionUsage compilerOption),rangeCmdArgs)) [] else argString.Split([|',';';'|]) |> List.ofArray let getSwitchOpt (opt : string) = // if opt is a switch, strip the '+' or '-' if opt <> "--" && opt.Length > 1 && (opt.EndsWith("+",StringComparison.Ordinal) || opt.EndsWith("-",StringComparison.Ordinal)) then opt.[0 .. opt.Length - 2] else opt let getSwitch (s: string) = let s = (s.Split([|':'|])).[0] if s <> "--" && s.EndsWith("-",StringComparison.Ordinal) then Off else On let rec processArg args = match args with | [] -> () | opt :: t -> let optToken, argString = parseOption opt let reportDeprecatedOption errOpt = match errOpt with | Some(e) -> warning(e) | None -> () let rec attempt l = match l with | (CompilerOption(s, _, OptionHelp f, d, _) :: _) when optToken = s && argString = "" -> reportDeprecatedOption d f blocks; t | (CompilerOption(s, _, OptionUnit f, d, _) :: _) when optToken = s && argString = "" -> reportDeprecatedOption d f (); t | (CompilerOption(s, _, OptionSwitch f, d, _) :: _) when getSwitchOpt(optToken) = s && argString = "" -> reportDeprecatedOption d f (getSwitch opt); t | (CompilerOption(s, _, OptionSet f, d, _) :: _) when optToken = s && argString = "" -> reportDeprecatedOption d f := true; t | (CompilerOption(s, _, OptionClear f, d, _) :: _) when optToken = s && argString = "" -> reportDeprecatedOption d f := false; t | (CompilerOption(s, _, OptionString f, d, _) as compilerOption :: _) when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString if oa <> "" then f (getOptionArg compilerOption oa) t | (CompilerOption(s, _, OptionInt f, d, _) as compilerOption :: _) when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString if oa <> "" then f (try int32 (oa) with _ -> errorR(Error(FSComp.SR.buildArgInvalidInt(getOptionArg compilerOption argString),rangeCmdArgs)); 0) t | (CompilerOption(s, _, OptionFloat f, d, _) as compilerOption :: _) when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString if oa <> "" then f (try float (oa) with _ -> errorR(Error(FSComp.SR.buildArgInvalidFloat(getOptionArg compilerOption argString), rangeCmdArgs)); 0.0) t | (CompilerOption(s, _, OptionRest f, d, _) :: _) when optToken = s -> reportDeprecatedOption d List.iter f t; [] | (CompilerOption(s, _, OptionIntList f, d, _) as compilerOption :: _) when optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString if al <> [] then List.iter (fun i -> f (try int32 i with _ -> errorR(Error(FSComp.SR.buildArgInvalidInt(i),rangeCmdArgs)); 0)) al ; t | (CompilerOption(s, _, OptionIntListSwitch f, d, _) as compilerOption :: _) when getSwitchOpt(optToken) = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString if al <> [] then let switch = getSwitch(opt) List.iter (fun i -> f (try int32 i with _ -> errorR(Error(FSComp.SR.buildArgInvalidInt(i),rangeCmdArgs)); 0) switch) al t // here | (CompilerOption(s, _, OptionStringList f, d, _) as compilerOption :: _) when optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString if al <> [] then List.iter (fun s -> f s) (getOptionArgList compilerOption argString) t | (CompilerOption(s, _, OptionStringListSwitch f, d, _) as compilerOption :: _) when getSwitchOpt(optToken) = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString if al <> [] then let switch = getSwitch(opt) List.iter (fun s -> f s switch) (getOptionArgList compilerOption argString) t | (CompilerOption(_, _, OptionGeneral (pred,exec), d, _) :: _) when pred args -> reportDeprecatedOption d let rest = exec args in rest // arguments taken, rest remaining | (_ :: more) -> attempt more | [] -> if opt.Length = 0 || opt.[0] = '-' || isSlashOpt opt then // want the whole opt token - delimiter and all let unrecOpt = (opt.Split([|':'|]).[0]) errorR(Error(FSComp.SR.buildUnrecognizedOption(unrecOpt),rangeCmdArgs)) t else (collectOtherArgument opt; t) let rest = attempt specs processArg rest let result = processArg args result do() fsharp-3.0.34/src/utils/0000775000175000017500000000000012260314606014017 5ustar chrischrisfsharp-3.0.34/src/utils/CompilerLocationUtils.fs0000775000175000017500000003440412260314606020645 0ustar chrischrisnamespace Internal.Utilities open System open System.IO open System.Configuration open System.Reflection open Microsoft.Win32 open System.Runtime.InteropServices #nowarn "44" // ConfigurationSettings is obsolete but the new stuff is horribly complicated. module internal FSharpEnvironment = /// The F# version reported in the banner #if NO_STRONG_NAMES let DotNetBuildString = "(private)" #endif #if STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY let DotNetBuildString = "(Open Source Edition)" #endif #if STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY let DotNetBuildString = "(Open Source Edition)" #endif // The F# binary format revision number. The first three digits of this form the significant part of the // format revision number for F# binary signature and optimization metadata. The last digit is not significant. // // WARNING: Do not change this revision number unless you absolutely know what you're doing. let FSharpBinaryMetadataFormatRevision = "2.0.0.0" #if SILVERLIGHT let Get32BitRegistryStringValueViaPInvoke(_subKey:string) = None let BinFolderOfDefaultFSharpCompiler(pathProbe) = Some "" #else let FSharpCoreLibRunningVersion = try match (typeof>).Assembly.GetName().Version.ToString() with | null -> None | "" -> None | s -> Some(s) with _ -> None [] extern uint32 RegOpenKeyExW(UIntPtr _hKey, string _lpSubKey, uint32 _ulOptions, int _samDesired, UIntPtr & _phkResult); [] extern uint32 RegQueryValueExW(UIntPtr _hKey, string _lpValueName, uint32 _lpReserved, uint32 & _lpType, IntPtr _lpData, int & _lpchData); [] extern uint32 RegCloseKey(UIntPtr _hKey) module Option = /// Convert string into Option string where null and String.Empty result in None let ofString s = if String.IsNullOrEmpty(s) then None else Some(s) // MaxPath accounts for the null-terminating character, for example, the maximum path on the D drive is "D:\<256 chars>\0". // See: ndp\clr\src\BCL\System\IO\Path.cs let maxPath = 260; let maxDataLength = (new System.Text.UTF32Encoding()).GetMaxByteCount(maxPath) let KEY_WOW64_DEFAULT = 0x0000 let KEY_WOW64_32KEY = 0x0200 let HKEY_LOCAL_MACHINE = UIntPtr(0x80000002u) let KEY_QUERY_VALUE = 0x1 let REG_SZ = 1u let GetDefaultRegistryStringValueViaDotNet(subKey: string) = Option.ofString (try downcast Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\\"+subKey,null,null) with e-> System.Diagnostics.Debug.Assert(false, sprintf "Failed in GetDefaultRegistryStringValueViaDotNet: %s" (e.ToString())) null) // RegistryView.Registry API is not available before .NET 4.0 #if FX_ATLEAST_40_COMPILER_LOCATION let Get32BitRegistryStringValueViaDotNet(subKey: string) = Option.ofString (try let key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32) if key = null then null else let sub = key.OpenSubKey(subKey) if sub = null then null else downcast (sub.GetValue(null, null)) with e-> System.Diagnostics.Debug.Assert(false, sprintf "Failed in Get32BitRegistryStringValueViaDotNet: %s" (e.ToString())) null) #endif let Get32BitRegistryStringValueViaPInvoke(subKey:string) = Option.ofString (try // 64 bit flag is not available <= Win2k let options = match Environment.OSVersion.Version.Major with | major when major >= 5 -> KEY_WOW64_32KEY | _ -> KEY_WOW64_DEFAULT let mutable hkey = UIntPtr.Zero; let pathResult = Marshal.AllocCoTaskMem(maxDataLength); try let res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,subKey, 0u, KEY_QUERY_VALUE ||| options, & hkey) if res = 0u then let mutable uType = REG_SZ; let mutable cbData = maxDataLength; let res = RegQueryValueExW(hkey, null, 0u, &uType, pathResult, &cbData); if (res = 0u && cbData > 0 && cbData <= maxDataLength) then Marshal.PtrToStringUni(pathResult, (cbData - 2)/2); else null else null finally if hkey <> UIntPtr.Zero then RegCloseKey(hkey) |> ignore if pathResult <> IntPtr.Zero then Marshal.FreeCoTaskMem(pathResult) with e-> System.Diagnostics.Debug.Assert(false, sprintf "Failed in Get32BitRegistryStringValueViaPInvoke: %s" (e.ToString())) null) let is32Bit = IntPtr.Size = 4 let tryRegKey(subKey:string) = if is32Bit then let s = GetDefaultRegistryStringValueViaDotNet(subKey) // If we got here AND we're on a 32-bit OS then we can validate that Get32BitRegistryStringValueViaPInvoke(...) works // by comparing against the result from GetDefaultRegistryStringValueViaDotNet(...) #if DEBUG let viaPinvoke = Get32BitRegistryStringValueViaPInvoke(subKey) System.Diagnostics.Debug.Assert((s = viaPinvoke), sprintf "32bit path: pi=%A def=%A" viaPinvoke s) #endif s else #if FX_ATLEAST_40_COMPILER_LOCATION match Get32BitRegistryStringValueViaDotNet(subKey) with | None -> Get32BitRegistryStringValueViaPInvoke(subKey) | s -> #if DEBUG // If we got here AND we're on .NET 4.0 then we can validate that Get32BitRegistryStringValueViaPInvoke(...) works // by comparing against the result from Get32BitRegistryStringValueViaDotNet(...) let viaPinvoke = Get32BitRegistryStringValueViaPInvoke(subKey) System.Diagnostics.Debug.Assert((s = viaPinvoke), sprintf "Non-32bit path: pi=%A def=%A" viaPinvoke s) #endif s #else Get32BitRegistryStringValueViaPInvoke(subKey) #endif let internal tryCurrentDomain() = let pathFromCurrentDomain = System.AppDomain.CurrentDomain.BaseDirectory if not(String.IsNullOrEmpty(pathFromCurrentDomain)) then Some pathFromCurrentDomain else None let internal tryAppConfig (appConfigKey:string) = let locationFromAppConfig = ConfigurationSettings.AppSettings.[appConfigKey] System.Diagnostics.Debug.Print(sprintf "Considering appConfigKey %s which has value '%s'" appConfigKey locationFromAppConfig) if String.IsNullOrEmpty(locationFromAppConfig) then None else let exeAssemblyFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) let locationFromAppConfig = locationFromAppConfig.Replace("{exepath}", exeAssemblyFolder) System.Diagnostics.Debug.Print(sprintf "Using path %s" locationFromAppConfig) Some locationFromAppConfig // The default location of FSharp.Core.dll and fsc.exe based on the version of fsc.exe that is running // Used for // - location of design-time copies of FSharp.Core.dll and FSharp.Compiler.Interactive.Settings.dll for the default assumed environment for scripts // - default ToolPath in tasks in FSharp.Build.dll (for Fsc tasks) // - default F# binaries directory in service.fs (REVIEW: check this) // - default location of fsi.exe in FSharp.VS.FSI.dll // - default location of fsc.exe in FSharp.Compiler.CodeDom.dll // - default F# binaries directory in (project system) Project.fs /// Try to find the F# compiler location by looking at the "fsharpi" script installed by F# packages let internal tryFsharpiScript(url:string) = try let str = File.ReadAllText(url) let reg = new System.Text.RegularExpressions.Regex("mono.* (\/.*)\/fsi\.exe") let res = reg.Match(str) if res.Success then Some(res.Groups.[1].Value) else None with e -> None let BackupInstallationProbePoints = [ // prefer the latest installation of Mono on Mac "/Library/Frameworks/Mono.framework/Versions/Current" // prefer freshly built F# compilers on Linux "/usr/local" // otherwise look in the standard place "/usr" ] let safeExists f = (try File.Exists(f) with _ -> false) // The default location of FSharp.Core.dll and fsc.exe based on the version of fsc.exe that is running // Used for // - location of design-time copies of FSharp.Core.dll and FSharp.Compiler.Interactive.Settings.dll for the default assumed environment for scripts // - default ToolPath in tasks in FSharp.Build.dll (for Fsc tasks) // - default F# binaries directory in service.fs (REVIEW: check this) // - default location of fsi.exe in FSharp.VS.FSI.dll // - default location of fsc.exe in FSharp.Compiler.CodeDom.dll let BinFolderOfDefaultFSharpCompiler(probePoint:string option) = // Check for an app.config setting to redirect the default compiler location // Like fsharp-compiler-location try // FSharp.Compiler support setting an appkey for compiler location. I've never seen this used. //printfn "Resolution" "BinFolderOfDefaultFSharpCore: Probing app.config" let result = tryAppConfig "fsharp-compiler-location" match result with | Some _ -> result | None -> // Look in the probePoint if given, e.g. look for a compiler alongside of FSharp.Build.dll match probePoint with | Some p when safeExists (Path.Combine(p,"fsc.exe")) || safeExists (Path.Combine(p,"Fsc.exe")) -> Some p | _ -> // On windows the location of the compiler is via a registry key let key20 = @"Software\Microsoft\FSharp\2.0\Runtime\v4.0" let key40 = @"Software\Microsoft\FSharp\3.0\Runtime\v4.0" let key1,key2 = match FSharpCoreLibRunningVersion with | None -> key40,key20 | Some v -> if v.Length > 1 && v.[0] <= '3' then key20,key40 else key40,key20 //printfn "Resolution" "BinFolderOfDefaultFSharpCore: Probing registry key %s" key1 let result = tryRegKey key1 match result with | Some _ -> result | None -> //printfn "Resolution" "BinFolderOfDefaultFSharpCore: Probing registry key %s" key2 let result = tryRegKey key2 match result with | Some _ -> result | None -> // On Unix we let you set FSHARP_COMILER_BIN. I've rarely seen this used and its not documented in the install isntructions. //printfn "Resolution" "BinFolderOfDefaultFSharpCore: Probing environment variable FSHARP_COMPILER_BIN" let result = let var = System.Environment.GetEnvironmentVariable("FSHARP_COMPILER_BIN") if String.IsNullOrEmpty(var) then None else Some(var) match result with | Some _ -> result | None -> // On Unix we probe 'bin' under various hardwired paths for the scripts 'fsharpc' and 'fsharpi'. // We then loko in the script to see the Mono location it is pointing to. // This is pretty fragile, e.g. the script lookup is done via a regular expression. // Really we should just search the path or otherwise resolve the 'mono' command? let result = BackupInstallationProbePoints |> List.tryPick (fun x -> //printfn "Resolution" "BinFolderOfDefaultFSharpCore: Probing %s" x let file f = Path.Combine(Path.Combine(x,"bin"),f) let exists f = safeExists(file f) match (if exists "fsc" && exists "fsi" then tryFsharpiScript (file "fsi") else None) with | Some res -> Some res | None -> match (if exists "fsharpc" && exists "fsharpi" then tryFsharpiScript (file "fsharpi") else None) with | Some res -> Some res | None -> None) match result with | Some _ -> result | None -> // For the prototype compiler, we can just use the current domain tryCurrentDomain() with e -> System.Diagnostics.Debug.Assert(false, "Error while determining default location of F# compiler") //printfn "Resolution" "BinFolderOfDefaultFSharpCore: error %s" (e.ToString()) None #endif // SILVERLIGHT #if FX_ATLEAST_45 // Apply the given function to the registry entry corresponding to the subkey. // The reg key is dispoed at the end of the scope. let useKey subkey f = let key = Registry.LocalMachine.OpenSubKey subkey try f key finally match key with | null -> () | _ -> key.Dispose() // Check if the framework version 4.5 or above is installed at the given key entry let IsNetFx45OrAboveInstalledAt subkey = useKey subkey (fun regkey -> match regkey with | null -> false | _ -> regkey.GetValue("Release", 0) :?> int |> (fun s -> s >= 0x50000)) // 0x50000 implies 4.5.0 // Check if the framework version 4.5 or above is installed let IsNetFx45OrAboveInstalled = IsNetFx45OrAboveInstalledAt @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" || IsNetFx45OrAboveInstalledAt @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" // Check if the running framework version is 4.5 or above. // Use the presence of v4.5.x in the registry to distinguish between 4.0 and 4.5 let IsRunningOnNetFx45OrAbove = let major = typeof.Assembly.GetName().Version.Major major > 4 || (major = 4 && IsNetFx45OrAboveInstalled) #else let IsRunningOnNetFx45OrAbove = false #endiffsharp-3.0.34/src/utils/TaggedCollections.fs0000775000175000017500000013310112260314606017745 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Collections.Tagged #nowarn "51" #nowarn "69" // interface implementations in augmentations #nowarn "60" // override implementations in augmentations open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open System open System.Collections.Generic open Internal.Utilities open Internal.Utilities.Collections [] [] type SetTree<'T> = | SetEmpty // height = 0 | SetNode of 'T * SetTree<'T> * SetTree<'T> * int // height = int #if ONE | SetOne of 'T // height = 1 #endif // OPTIMIZATION: store SetNode(k,SetEmpty,SetEmpty,1) ---> SetOne(k) // CONSIDER: SetTree<'T> = SetEmpty | SetNode of 'T * SetTree<'T> * SetTree<'T> * int // with SetOne = SetNode of (x,null,null,1) [] module SetTree = let empty = SetEmpty let height t = match t with | SetEmpty -> 0 #if ONE | SetOne _ -> 1 #endif | SetNode (_,_,_,h) -> h #if CHECKED let rec checkInvariant t = // A good sanity check, loss of balance can hit perf match t with | SetEmpty -> true | SetOne _ -> true | SetNode (k,t1,t2,h) -> let h1 = height t1 in let h2 = height t2 in (-2 <= (h1 - h2) && (h1 - h2) <= 2) && checkInvariant t1 && checkInvariant t2 #else let inline SetOne(x) = SetNode(x,SetEmpty,SetEmpty,1) #endif let tolerance = 2 let mk l hl k r hr = #if ONE if hl = 0 && hr = 0 then SetOne (k) else #endif let m = if hl < hr then hr else hl SetNode(k,l,r,m+1) let rebalance t1 k t2 = let t1h = height t1 let t2h = height t2 if t2h > t1h + tolerance then // right is heavier than left match t2 with | SetNode(t2k,t2l,t2r,_) -> // one of the nodes must have height > height t1 + 1 let t2lh = height t2l if t2lh > t1h + 1 then // balance left: combination match t2l with | SetNode(t2lk,t2ll,t2lr,_) -> let l = mk t1 t1h k t2ll (height t2ll) let r = mk t2lr (height t2lr) t2k t2r (height t2r) mk l (height l) t2lk r (height r) | _ -> failwith "rebalance" else // rotate left let l = mk t1 t1h k t2l t2lh mk l (height l) t2k t2r (height t2r) | _ -> failwith "rebalance" else if t1h > t2h + tolerance then // left is heavier than right match t1 with | SetNode(t1k,t1l,t1r,_) -> // one of the nodes must have height > height t2 + 1 let t1rh = height t1r if t1rh > t2h + 1 then // balance right: combination match t1r with | SetNode(t1rk,t1rl,t1rr,_) -> let l = mk t1l (height t1l) t1k t1rl (height t1rl) let r = mk t1rr (height t1rr) k t2 t2h mk l (height l) t1rk r (height r) | _ -> failwith "rebalance" else let r = mk t1r t1rh k t2 t2h mk t1l (height t1l) t1k r (height r) | _ -> failwith "rebalance" else mk t1 t1h k t2 t2h let rec add (comparer: IComparer<'T>) k t = match t with | SetNode (k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (add comparer k l) k2 r elif c = 0 then t else rebalance l k2 (add comparer k r) #if ONE | SetOne(k2) -> // nb. no check for rebalance needed for small trees, also be sure to reuse node already allocated let c = comparer.Compare(k,k2) if c < 0 then SetNode (k,SetEmpty,t,2) elif c = 0 then t else SetNode (k,t,SetEmpty,2) #endif | SetEmpty -> SetOne(k) let rec balance comparer t1 k t2 = // Given t1 < k < t2 where t1 and t2 are "balanced", // return a balanced tree for . // Recall: balance means subtrees heights differ by at most "tolerance" match t1,t2 with | SetEmpty,t2 -> add comparer k t2 // drop t1 = empty | t1,SetEmpty -> add comparer k t1 // drop t2 = empty #if ONE | SetOne k1,t2 -> add comparer k (add comparer k1 t2) | t1,SetOne k2 -> add comparer k (add comparer k2 t1) #endif | SetNode(k1,t11,t12,t1h),SetNode(k2,t21,t22,t2h) -> // Have: (t11 < k1 < t12) < k < (t21 < k2 < t22) // Either (a) h1,h2 differ by at most 2 - no rebalance needed. // (b) h1 too small, i.e. h1+2 < h2 // (c) h2 too small, i.e. h2+2 < h1 if t1h+tolerance < t2h then // case: b, h1 too small // push t1 into low side of t2, may increase height by 1 so rebalance rebalance (balance comparer t1 k t21) k2 t22 elif t2h+tolerance < t1h then // case: c, h2 too small // push t2 into high side of t1, may increase height by 1 so rebalance rebalance t11 k1 (balance comparer t12 k t2) else // case: a, h1 and h2 meet balance requirement mk t1 t1h k t2 t2h let rec split (comparer : IComparer<'T>) pivot t = // Given a pivot and a set t // Return { x in t s.t. x < pivot }, pivot in t? , { x in t s.t. x > pivot } match t with | SetNode(k1,t11,t12,_) -> let c = comparer.Compare(pivot,k1) if c < 0 then // pivot t1 let t11_lo,havePivot,t11_hi = split comparer pivot t11 t11_lo,havePivot,balance comparer t11_hi k1 t12 elif c = 0 then // pivot is k1 t11,true,t12 else // pivot t2 let t12_lo,havePivot,t12_hi = split comparer pivot t12 balance comparer t11 k1 t12_lo,havePivot,t12_hi #if ONE | SetOne k1 -> let c = comparer.Compare(k1,pivot) if c < 0 then t ,false,SetEmpty // singleton under pivot elif c = 0 then SetEmpty,true ,SetEmpty // singleton is pivot else SetEmpty,false,t // singleton over pivot #endif | SetEmpty -> SetEmpty,false,SetEmpty let rec spliceOutSuccessor t = match t with | SetEmpty -> failwith "internal error: Map.splice_out_succ_or_pred" #if ONE | SetOne (k2) -> k2,empty #endif | SetNode (k2,l,r,_) -> match l with | SetEmpty -> k2,r | _ -> let k3,l' = spliceOutSuccessor l in k3,mk l' (height l') k2 r (height r) let rec remove (comparer: IComparer<'T>) k t = match t with | SetEmpty -> t #if ONE | SetOne (k2) -> let c = comparer.Compare(k,k2) if c = 0 then empty else t #endif | SetNode (k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (remove comparer k l) k2 r elif c = 0 then match l,r with | SetEmpty,_ -> r | _,SetEmpty -> l | _ -> let sk,r' = spliceOutSuccessor r mk l (height l) sk r' (height r') else rebalance l k2 (remove comparer k r) let rec contains (comparer: IComparer<'T>) k t = match t with | SetNode(k2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then contains comparer k l elif c = 0 then true else contains comparer k r #if ONE | SetOne(k2) -> (comparer.Compare(k,k2) = 0) #endif | SetEmpty -> false let rec iter f t = match t with | SetNode(k2,l,r,_) -> iter f l; f k2; iter f r #if ONE | SetOne(k2) -> f k2 #endif | SetEmpty -> () // Fold, left-to-right. // // NOTE: This differs from the behaviour of Map.fold which folds right-to-left. let rec fold f m x = match m with | SetNode(k,l,r,_) -> fold f r (f k (fold f l x)) #if ONE | SetOne(k) -> f k x #endif | SetEmpty -> x let rec forAll f m = match m with | SetNode(k2,l,r,_) -> f k2 && forAll f l && forAll f r #if ONE | SetOne(k2) -> f k2 #endif | SetEmpty -> true let rec exists f m = match m with | SetNode(k2,l,r,_) -> f k2 || exists f l || exists f r #if ONE | SetOne(k2) -> f k2 #endif | SetEmpty -> false let isEmpty m = match m with | SetEmpty -> true | _ -> false let subset comparer a b = forAll (fun x -> contains comparer x b) a let rec elementsAux m acc = match m with | SetNode(k2,l,r,_) -> k2 :: (elementsAux l (elementsAux r acc)) #if ONE | SetOne(k2) -> k2 :: acc #endif | SetEmpty -> acc let elements a = elementsAux a [] let rec filterAux comparer f s acc = match s with | SetNode(k,l,r,_) -> let acc = if f k then add comparer k acc else acc filterAux comparer f l (filterAux comparer f r acc) #if ONE | SetOne(k) -> if f k then add comparer k acc else acc #endif | SetEmpty -> acc let filter comparer f s = filterAux comparer f s empty let rec diffAux comparer m acc = match m with | SetNode(k,l,r,_) -> diffAux comparer l (diffAux comparer r (remove comparer k acc)) #if ONE | SetOne(k) -> remove comparer k acc #endif | SetEmpty -> acc let diff comparer a b = diffAux comparer b a let rec countAux s acc = match s with | SetNode(_,l,r,_) -> countAux l (countAux r (acc+1)) #if ONE | SetOne(k) -> acc+1 #endif | SetEmpty -> acc let count s = countAux s 0 let rec union comparer t1 t2 = // Perf: tried bruteForce for low heights, but nothing significant match t1,t2 with | SetNode(k1,t11,t12,h1),SetNode(k2,t21,t22,h2) -> // (t11 < k < t12) AND (t21 < k2 < t22) // Divide and Quonquer: // Suppose t1 is largest. // Split t2 using pivot k1 into lo and hi. // Union disjoint subproblems and then combine. if h1 > h2 then let lo,_,hi = split comparer k1 t2 in balance comparer (union comparer t11 lo) k1 (union comparer t12 hi) else let lo,_,hi = split comparer k2 t1 in balance comparer (union comparer t21 lo) k2 (union comparer t22 hi) | SetEmpty,t -> t | t,SetEmpty -> t #if ONE | SetOne k1,t2 -> add comparer k1 t2 | t1,SetOne k2 -> add comparer k2 t1 #endif let rec intersectionAux comparer b m acc = match m with | SetNode(k,l,r,_) -> let acc = intersectionAux comparer b r acc let acc = if contains comparer k b then add comparer k acc else acc intersectionAux comparer b l acc #if ONE | SetOne(k) -> if contains comparer k b then add comparer k acc else acc #endif | SetEmpty -> acc let intersection comparer a b = intersectionAux comparer b a empty let partition1 comparer f k (acc1,acc2) = if f k then (add comparer k acc1,acc2) else (acc1,add comparer k acc2) let rec partitionAux comparer f s acc = match s with | SetNode(k,l,r,_) -> let acc = partitionAux comparer f r acc let acc = partition1 comparer f k acc partitionAux comparer f l acc #if ONE | SetOne(k) -> partition1 comparer f k acc #endif | SetEmpty -> acc let partition comparer f s = partitionAux comparer f s (empty,empty) // It's easier to get many less-important algorithms right using this active pattern let (|MatchSetNode|MatchSetEmpty|) s = match s with | SetNode(k2,l,r,_) -> MatchSetNode(k2,l,r) #if ONE | SetOne(k2) -> MatchSetNode(k2,SetEmpty,SetEmpty) #endif | SetEmpty -> MatchSetEmpty let rec nextElemCont (comparer: IComparer<'T>) k s cont = match s with | MatchSetNode(k2,l,r) -> let c = comparer.Compare(k,k2) if c < 0 then nextElemCont comparer k l (function None -> cont(Some(k2)) | res -> res) elif c = 0 then cont(minimumElementOpt r) else nextElemCont comparer k r cont | MatchSetEmpty -> cont(None) and nextElem comparer k s = nextElemCont comparer k s (fun res -> res) and prevElemCont (comparer: IComparer<'T>) k s cont = match s with | MatchSetNode(k2,l,r) -> let c = comparer.Compare(k,k2) if c > 0 then prevElemCont comparer k r (function None -> cont(Some(k2)) | res -> res) elif c = 0 then cont(maximumElementOpt r) else prevElemCont comparer k l cont | MatchSetEmpty -> cont(None) and prevElem comparer k s = prevElemCont comparer k s (fun res -> res) and minimumElementAux s n = match s with | SetNode(k,l,_,_) -> minimumElementAux l k #if ONE | SetOne(k) -> k #endif | SetEmpty -> n and minimumElementOpt s = match s with | SetNode(k,l,_,_) -> Some(minimumElementAux l k) #if ONE | SetOne(k) -> Some k #endif | SetEmpty -> None and maximumElementAux s n = match s with | SetNode(k,_,r,_) -> maximumElementAux r k #if ONE | SetOne(k) -> k #endif | SetEmpty -> n and maximumElementOpt s = match s with | SetNode(k,_,r,_) -> Some(maximumElementAux r k) #if ONE | SetOne(k) -> Some(k) #endif | SetEmpty -> None let minimumElement s = match minimumElementOpt s with | Some(k) -> k | None -> failwith "minimumElement" let maximumElement s = match maximumElementOpt s with | Some(k) -> k | None -> failwith "maximumElement" //-------------------------------------------------------------------------- // Imperative left-to-right iterators. //-------------------------------------------------------------------------- type SetIterator<'T>(s:SetTree<'T>) = // collapseLHS: // a) Always returns either [] or a list starting with SetOne. // b) The "fringe" of the set stack is unchanged. let rec collapseLHS stack = match stack with | [] -> [] | SetEmpty :: rest -> collapseLHS rest #if ONE | SetOne k :: rest -> stack #else | SetNode(_,SetEmpty,SetEmpty,_) :: _ -> stack #endif | SetNode(k,l,r,_) :: rest -> collapseLHS (l :: SetOne k :: r :: rest) // invariant: always collapseLHS result let mutable stack = collapseLHS [s] // true when MoveNext has been called let mutable started = false let notStarted() = raise (new System.InvalidOperationException("Enumeration has not started. Call MoveNext.")) let alreadyFinished() = raise (new System.InvalidOperationException("Enumeration already finished.")) member i.Current = if started then match stack with #if ONE | SetOne k :: _ -> k #else | SetNode( k,_,_,_) :: _ -> k #endif | [] -> alreadyFinished() | _ -> failwith "Please report error: Set iterator, unexpected stack for current" else notStarted() member i.MoveNext() = if started then match stack with #if ONE | SetOne _ :: rest -> #else | SetNode _ :: rest -> #endif stack <- collapseLHS rest; not stack.IsEmpty | [] -> false | _ -> failwith "Please report error: Set iterator, unexpected stack for moveNext" else started <- true; // The first call to MoveNext "starts" the enumeration. not stack.IsEmpty let toSeq s = let i = ref (SetIterator s) { new IEnumerator<_> with member __.Current = (!i).Current interface System.Collections.IEnumerator with member __.Current = box (!i).Current member __.MoveNext() = (!i).MoveNext() member __.Reset() = i := SetIterator s interface System.IDisposable with member __.Dispose() = () } //-------------------------------------------------------------------------- // Set comparison. This can be expensive. //-------------------------------------------------------------------------- let rec compareStacks (comparer: IComparer<'T>) l1 l2 = match l1,l2 with | [],[] -> 0 | [],_ -> -1 | _ ,[] -> 1 | (SetEmpty _ :: t1),(SetEmpty :: t2) -> compareStacks comparer t1 t2 #if ONE | (SetOne(n1k) :: t1),(SetOne(n2k) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer t1 t2 | (SetOne(n1k) :: t1),(SetNode(n2k,SetEmpty,n2r,_) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (empty :: t1) (n2r :: t2) | (SetNode(n1k,(SetEmpty as emp),n1r,_) :: t1),(SetOne(n2k) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (n1r :: t1) (emp :: t2) #endif | (SetNode(n1k,SetEmpty,n1r,_) :: t1),(SetNode(n2k,SetEmpty,n2r,_) :: t2) -> let c = comparer.Compare(n1k,n2k) if c <> 0 then c else compareStacks comparer (n1r :: t1) (n2r :: t2) #if ONE | (SetOne(n1k) :: t1),_ -> compareStacks comparer (empty :: SetOne(n1k) :: t1) l2 #endif | (SetNode(n1k,n1l,n1r,_) :: t1),_ -> compareStacks comparer (n1l :: SetNode(n1k,empty,n1r,0) :: t1) l2 #if ONE | _,(SetOne(n2k) :: t2) -> compareStacks comparer l1 (empty :: SetOne(n2k) :: t2) #endif | _,(SetNode(n2k,n2l,n2r,_) :: t2) -> compareStacks comparer l1 (n2l :: SetNode(n2k,empty,n2r,0) :: t2) let compare comparer s1 s2 = match s1,s2 with | SetEmpty,SetEmpty -> 0 | SetEmpty,_ -> -1 | _,SetEmpty -> 1 | _ -> compareStacks comparer [s1] [s2] let choose s = minimumElement s let toList s = let rec loop m x = match m with | SetNode(k,l,r,_) -> loop l (k :: (loop r x)) #if ONE | SetOne(k) -> k :: x #endif | SetEmpty -> x loop s [] let copyToArray s (arr: _[]) i = let j = ref i iter (fun x -> arr.[!j] <- x; j := !j + 1) s let toArray s = let n = (count s) let res = Array.zeroCreate n copyToArray s res 0; res let rec mkFromEnumerator comparer acc (e : IEnumerator<_>) = if e.MoveNext() then mkFromEnumerator comparer (add comparer e.Current acc) e else acc let ofSeq comparer (c : IEnumerable<_>) = use ie = c.GetEnumerator() mkFromEnumerator comparer empty ie let ofArray comparer l = Array.fold (fun acc k -> add comparer k acc) empty l #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] type internal Set<'T,'ComparerTag> when 'ComparerTag :> IComparer<'T>(comparer: IComparer<'T>, tree: SetTree<'T>) = static let refresh (s:Set<_,_>) t = Set<_,_>(comparer=s.Comparer, tree=t) member s.Tree = tree member s.Comparer : IComparer<'T> = comparer static member Empty(comparer: 'ComparerTag) : Set<'T,'ComparerTag> = Set<_,_>(comparer=comparer, tree=SetTree.empty) member s.Add(x) : Set<'T,'ComparerTag> = refresh s (SetTree.add comparer x tree) member s.Remove(x) : Set<'T,'ComparerTag> = refresh s (SetTree.remove comparer x tree) member s.Count = SetTree.count tree member s.Contains(x) = SetTree.contains comparer x tree member s.Iterate(x) = SetTree.iter x tree member s.Fold f x = SetTree.fold f tree x #if CHECKED member s.CheckBalanceInvariant = checkInvariant tree // diagnostics... #endif member s.IsEmpty = SetTree.isEmpty tree member s.Partition f : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> = match tree with | SetEmpty -> s,s | _ -> let t1,t2 = SetTree.partition comparer f tree refresh s t1, refresh s t2 member s.Filter f : Set<'T,'ComparerTag> = match tree with | SetEmpty -> s | _ -> SetTree.filter comparer f tree |> refresh s member s.Exists f = SetTree.exists f tree member s.ForAll f = SetTree.forAll f tree static member (-) ((a: Set<'T,'ComparerTag>),(b: Set<'T,'ComparerTag>)) = Set<_,_>.Difference(a,b) static member (+) ((a: Set<'T,'ComparerTag>),(b: Set<'T,'ComparerTag>)) = Set<_,_>.Union(a,b) static member Intersection((a: Set<'T,'ComparerTag>),(b: Set<'T,'ComparerTag>)) : Set<'T,'ComparerTag> = match b.Tree with | SetEmpty -> b (* A INTER 0 = 0 *) | _ -> match a.Tree with | SetEmpty -> a (* 0 INTER B = 0 *) | _ -> SetTree.intersection a.Comparer a.Tree b.Tree |> refresh a static member Union(a: Set<'T,'ComparerTag>,b: Set<'T,'ComparerTag>) : Set<'T,'ComparerTag> = match b.Tree with | SetEmpty -> a (* A U 0 = A *) | _ -> match a.Tree with | SetEmpty -> b (* 0 U B = B *) | _ -> SetTree.union a.Comparer a.Tree b.Tree |> refresh a static member Difference(a: Set<'T,'ComparerTag>,b: Set<'T,'ComparerTag>) : Set<'T,'ComparerTag> = match a.Tree with | SetEmpty -> a (* 0 - B = 0 *) | _ -> match b.Tree with | SetEmpty -> a (* A - 0 = A *) | _ -> SetTree.diff a.Comparer a.Tree b.Tree |> refresh a static member Equality(a: Set<'T,'ComparerTag>,b: Set<'T,'ComparerTag>) = (SetTree.compare a.Comparer a.Tree b.Tree = 0) static member Compare(a: Set<'T,'ComparerTag>,b: Set<'T,'ComparerTag>) = SetTree.compare a.Comparer a.Tree b.Tree member s.Choose = SetTree.choose tree member s.MinimumElement = SetTree.minimumElement tree member s.MaximumElement = SetTree.maximumElement tree member s.IsSubsetOf((y: Set<'T,'ComparerTag>)) = SetTree.subset comparer tree y.Tree member s.IsSupersetOf((y: Set<'T,'ComparerTag>)) = SetTree.subset comparer y.Tree tree member s.ToList () = SetTree.toList tree member s.ToArray () = SetTree.toArray tree override this.Equals(that) = match that with // Cast to the exact same type as this, otherwise not equal. | :? Set<'T,'ComparerTag> as that -> ((this :> System.IComparable).CompareTo(that) = 0) | _ -> false interface System.IComparable with // Cast s2 to the exact same type as s1, see 4884. // It is not OK to cast s2 to seq<'T>, since different compares could permute the elements. member s1.CompareTo(s2: obj) = SetTree.compare s1.Comparer s1.Tree ((s2 :?> Set<'T,'ComparerTag>).Tree) member this.ComputeHashCode() = let combineHash x y = (x <<< 1) + y + 631 let mutable res = 0 for x in this do res <- combineHash res (Unchecked.hash x) abs res override this.GetHashCode() = this.ComputeHashCode() interface ICollection<'T> with member s.Add(_) = raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Clear() = raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Remove(_) = raise (new System.NotSupportedException("ReadOnlyCollection")) member s.Contains(x) = SetTree.contains comparer x tree member s.CopyTo(arr,i) = SetTree.copyToArray tree arr i member s.IsReadOnly = true member s.Count = SetTree.count tree interface IEnumerable<'T> with member s.GetEnumerator() = SetTree.toSeq tree interface System.Collections.IEnumerable with override s.GetEnumerator() = (SetTree.toSeq tree :> System.Collections.IEnumerator) static member Singleton(comparer,x) : Set<'T,'ComparerTag> = Set<_,_>.Empty(comparer).Add(x) static member Create(comparer : 'ComparerTag,l : seq<'T>) : Set<'T,'ComparerTag> = Set<_,_>(comparer=comparer, tree=SetTree.ofSeq comparer l) [] [] type MapTree<'Key,'T> = | MapEmpty #if ONE | MapOne of 'Key * 'T #endif // Note: performance rumour has it that the data held in this node should be // exactly one cache line. It is currently ~7 words. Thus it might be better to // move to a n-way tree. | MapNode of 'Key * 'T * MapTree<'Key,'T> * MapTree<'Key,'T> * int [] module MapTree = let empty = MapEmpty let inline height x = match x with | MapEmpty -> 0 #if ONE | MapOne _ -> 1 #endif | MapNode(_,_,_,_,h) -> h let isEmpty m = match m with | MapEmpty -> true | _ -> false let mk l k v r = #if ONE match l,r with | MapEmpty,MapEmpty -> MapOne(k,v) | _ -> #endif let hl = height l let hr = height r let m = if hl < hr then hr else hl MapNode(k,v,l,r,m+1) let rebalance t1 k v t2 = let t1h = height t1 if height t2 > t1h + 2 then (* right is heavier than left *) match t2 with | MapNode(t2k,t2v,t2l,t2r,_) -> (* one of the nodes must have height > height t1 + 1 *) if height t2l > t1h + 1 then (* balance left: combination *) match t2l with | MapNode(t2lk,t2lv,t2ll,t2lr,_) -> mk (mk t1 k v t2ll) t2lk t2lv (mk t2lr t2k t2v t2r) | _ -> failwith "rebalance" else (* rotate left *) mk (mk t1 k v t2l) t2k t2v t2r | _ -> failwith "rebalance" else let t2h = height t2 if t1h > t2h + 2 then (* left is heavier than right *) match t1 with | MapNode(t1k,t1v,t1l,t1r,_) -> (* one of the nodes must have height > height t2 + 1 *) if height t1r > t2h + 1 then (* balance right: combination *) match t1r with | MapNode(t1rk,t1rv,t1rl,t1rr,_) -> mk (mk t1l t1k t1v t1rl) t1rk t1rv (mk t1rr k v t2) | _ -> failwith "rebalance" else mk t1l t1k t1v (mk t1r k v t2) | _ -> failwith "rebalance" else mk t1 k v t2 let rec sizeAux acc m = match m with | MapEmpty -> acc #if ONE | MapOne _ -> acc + 1 #endif | MapNode(_,_,l,r,_) -> sizeAux (sizeAux (acc+1) l) r #if ONE #else let MapOne(k,v) = MapNode(k,v,MapEmpty,MapEmpty,1) #endif let count x = sizeAux 0 x let rec add (comparer: IComparer<'T>) k v m = match m with | MapEmpty -> MapOne(k,v) #if ONE | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c < 0 then MapNode (k,v,MapEmpty,m,2) elif c = 0 then MapOne(k,v) else MapNode (k,v,m,MapEmpty,2) #endif | MapNode(k2,v2,l,r,h) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (add comparer k v l) k2 v2 r elif c = 0 then MapNode(k,v,l,r,h) else rebalance l k2 v2 (add comparer k v r) let indexNotFound() = raise (new System.Collections.Generic.KeyNotFoundException("An index satisfying the predicate was not found in the collection")) let rec find (comparer: IComparer<'T>) k m = match m with | MapEmpty -> indexNotFound() #if ONE | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c = 0 then v2 else indexNotFound() #endif | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then find comparer k l elif c = 0 then v2 else find comparer k r let rec tryFind (comparer: IComparer<'T>) k m = match m with | MapEmpty -> None #if ONE | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c = 0 then Some v2 else None #endif | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then tryFind comparer k l elif c = 0 then Some v2 else tryFind comparer k r let partition1 (comparer: IComparer<'T>) f k v (acc1,acc2) = if f k v then (add comparer k v acc1,acc2) else (acc1,add comparer k v acc2) let rec partitionAux (comparer: IComparer<'T>) f s acc = match s with | MapEmpty -> acc #if ONE | MapOne(k,v) -> partition1 comparer f k v acc #endif | MapNode(k,v,l,r,_) -> let acc = partitionAux comparer f r acc let acc = partition1 comparer f k v acc partitionAux comparer f l acc let partition (comparer: IComparer<'T>) f s = partitionAux comparer f s (empty,empty) let filter1 (comparer: IComparer<'T>) f k v acc = if f k v then add comparer k v acc else acc let rec filterAux (comparer: IComparer<'T>) f s acc = match s with | MapEmpty -> acc #if ONE | MapOne(k,v) -> filter1 comparer f k v acc #endif | MapNode(k,v,l,r,_) -> let acc = filterAux comparer f l acc let acc = filter1 comparer f k v acc filterAux comparer f r acc let filter (comparer: IComparer<'T>) f s = filterAux comparer f s empty let rec spliceOutSuccessor m = match m with | MapEmpty -> failwith "internal error: Map.splice_out_succ_or_pred" #if ONE | MapOne(k2,v2) -> k2,v2,MapEmpty #endif | MapNode(k2,v2,l,r,_) -> match l with | MapEmpty -> k2,v2,r | _ -> let k3,v3,l' = spliceOutSuccessor l in k3,v3,mk l' k2 v2 r let rec remove (comparer: IComparer<'T>) k m = match m with | MapEmpty -> empty #if ONE | MapOne(k2,v2) -> let c = comparer.Compare(k,k2) if c = 0 then MapEmpty else m #endif | MapNode(k2,v2,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then rebalance (remove comparer k l) k2 v2 r elif c = 0 then match l,r with | MapEmpty,_ -> r | _,MapEmpty -> l | _ -> let sk,sv,r' = spliceOutSuccessor r mk l sk sv r' else rebalance l k2 v2 (remove comparer k r) let rec containsKey (comparer: IComparer<'T>) k m = match m with | MapEmpty -> false #if ONE | MapOne(k2,v2) -> (comparer.Compare(k,k2) = 0) #endif | MapNode(k2,_,l,r,_) -> let c = comparer.Compare(k,k2) if c < 0 then containsKey comparer k l else (c = 0 || containsKey comparer k r) let rec iter f m = match m with | MapEmpty -> () #if ONE | MapOne(k2,v2) -> f k2 v2 #endif | MapNode(k2,v2,l,r,_) -> iter f l; f k2 v2; iter f r let rec first f m = match m with | MapEmpty -> None #if ONE | MapOne(k2,v2) -> f k2 v2 #endif | MapNode(k2,v2,l,r,_) -> match first f l with | Some _ as res -> res | None -> match f k2 v2 with | Some _ as res -> res | None -> first f r let rec exists f m = match m with | MapEmpty -> false #if ONE | MapOne(k2,v2) -> f k2 v2 #endif | MapNode(k2,v2,l,r,_) -> f k2 v2 || exists f l || exists f r let rec forAll f m = match m with | MapEmpty -> true #if ONE | MapOne(k2,v2) -> f k2 v2 #endif | MapNode(k2,v2,l,r,_) -> f k2 v2 && forAll f l && forAll f r let rec map f m = match m with | MapEmpty -> empty #if ONE | MapOne(k,v) -> MapOne(k,f v) #endif | MapNode(k,v,l,r,h) -> let v2 = f v in MapNode(k,v2,map f l, map f r,h) let rec mapi f m = match m with | MapEmpty -> empty #if ONE | MapOne(k,v) -> MapOne(k,f k v) #endif | MapNode(k,v,l,r,h) -> let v2 = f k v in MapNode(k,v2, mapi f l, mapi f r,h) // Fold, right-to-left. // // NOTE: This differs from the behaviour of Set.fold which folds left-to-right. let rec fold f m x = match m with | MapEmpty -> x #if ONE | MapOne(k,v) -> f k v x #endif | MapNode(k,v,l,r,_) -> fold f l (f k v (fold f r x)) let foldSection (comparer: IComparer<'T>) lo hi f m x = let rec fold_from_to f m x = match m with | MapEmpty -> x #if ONE | MapOne(k,v) -> let clo_k = comparer.Compare(lo,k) let ck_hi = comparer.Compare(k,hi) let x = if clo_k <= 0 && ck_hi <= 0 then f k v x else x x #endif | MapNode(k,v,l,r,_) -> let clo_k = comparer.Compare(lo,k) let ck_hi = comparer.Compare(k,hi) let x = if clo_k < 0 then fold_from_to f l x else x let x = if clo_k <= 0 && ck_hi <= 0 then f k v x else x let x = if ck_hi < 0 then fold_from_to f r x else x x if comparer.Compare(lo,hi) = 1 then x else fold_from_to f m x let rec foldMap (comparer: IComparer<'T>) f m z acc = match m with | MapEmpty -> acc,z #if ONE | MapOne(k,v) -> let v',z = f k v z add comparer k v' acc,z #endif | MapNode(k,v,l,r,_) -> let acc,z = foldMap comparer f r z acc let v',z = f k v z let acc = add comparer k v' acc foldMap comparer f l z acc let toList m = fold (fun k v acc -> (k,v) :: acc) m [] let toArray m = m |> toList |> Array.ofList let ofList comparer l = List.fold (fun acc (k,v) -> add comparer k v acc) empty l let rec mkFromEnumerator comparer acc (e : IEnumerator<_>) = if e.MoveNext() then let (x,y) = e.Current mkFromEnumerator comparer (add comparer x y acc) e else acc let ofSeq comparer (c : seq<_>) = use ie = c.GetEnumerator() mkFromEnumerator comparer empty ie let copyToArray s (arr: _[]) i = let j = ref i s |> iter (fun x y -> arr.[!j] <- KeyValuePair(x,y); j := !j + 1) /// Imperative left-to-right iterators. type MapIterator<'Key,'T>(s:MapTree<'Key,'T>) = // collapseLHS: // a) Always returns either [] or a list starting with SetOne. // b) The "fringe" of the set stack is unchanged. let rec collapseLHS stack = match stack with | [] -> [] | MapEmpty :: rest -> collapseLHS rest #if ONE | MapOne _ :: _ -> stack #else | (MapNode(_,_,MapEmpty,MapEmpty,_)) :: _ -> stack #endif | (MapNode(k,v,l,r,_)) :: rest -> collapseLHS (l :: MapOne (k,v) :: r :: rest) /// invariant: always collapseLHS result let mutable stack = collapseLHS [s] /// true when MoveNext has been called let mutable started = false let notStarted() = raise (new System.InvalidOperationException("Enumeration has not started. Call MoveNext.")) let alreadyFinished() = raise (new System.InvalidOperationException("Enumeration already finished.")) member i.Current = if started then match stack with #if ONE | MapOne (k,v) :: _ -> new KeyValuePair<_,_>(k,v) #else | (MapNode(k,v,MapEmpty,MapEmpty,_)) :: _ -> new KeyValuePair<_,_>(k,v) #endif | [] -> alreadyFinished() | _ -> failwith "Please report error: Map iterator, unexpected stack for current" else notStarted() member i.MoveNext() = if started then match stack with #if ONE | MapOne _ :: rest -> #else | (MapNode(_,_,MapEmpty,MapEmpty,_)) :: rest -> #endif stack <- collapseLHS rest; not stack.IsEmpty | [] -> false | _ -> failwith "Please report error: Map iterator, unexpected stack for moveNext" else // The first call to MoveNext "starts" the enumeration. started <- true; not stack.IsEmpty let toSeq s = let i = ref (MapIterator(s)) { new IEnumerator<_> with member self.Current = (!i).Current interface System.Collections.IEnumerator with member self.Current = box (!i).Current member self.MoveNext() = (!i).MoveNext() member self.Reset() = i := MapIterator(s) interface System.IDisposable with member self.Dispose() = ()} #if FX_NO_DEBUG_DISPLAYS #else [] #endif [] type internal Map<'Key,'T,'ComparerTag> when 'ComparerTag :> IComparer<'Key>( comparer: IComparer<'Key>, tree: MapTree<'Key,'T>) = static let refresh (m:Map<_,_,'ComparerTag>) t = Map<_,_,'ComparerTag>(comparer=m.Comparer, tree=t) member s.Tree = tree member s.Comparer : IComparer<'Key> = comparer static member Empty(comparer : 'ComparerTag) = Map<'Key,'T,'ComparerTag>(comparer=comparer, tree=MapTree.empty) member m.Add(k,v) = refresh m (MapTree.add comparer k v tree) member m.IsEmpty = MapTree.isEmpty tree member m.Item with get(k : 'Key) = MapTree.find comparer k tree member m.First(f) = MapTree.first f tree member m.Exists(f) = MapTree.exists f tree member m.Filter(f) = MapTree.filter comparer f tree |> refresh m member m.ForAll(f) = MapTree.forAll f tree member m.Fold f acc = MapTree.fold f tree acc member m.FoldSection lo hi f acc = MapTree.foldSection comparer lo hi f tree acc member m.FoldAndMap f z = let tree,z = MapTree.foldMap comparer f tree z MapTree.empty refresh m tree, z member m.Iterate f = MapTree.iter f tree member m.MapRange f = refresh m (MapTree.map f tree) member m.Map f = refresh m (MapTree.mapi f tree) member m.Partition(f) = let r1,r2 = MapTree.partition comparer f tree refresh m r1, refresh m r2 member m.Count = MapTree.count tree member m.ContainsKey(k) = MapTree.containsKey comparer k tree member m.Remove(k) = refresh m (MapTree.remove comparer k tree) member m.TryFind(k) = MapTree.tryFind comparer k tree member m.ToList() = MapTree.toList tree member m.ToArray() = MapTree.toArray tree static member FromList(comparer : 'ComparerTag,l) : Map<'Key,'T,'ComparerTag> = Map<_,_,_>(comparer=comparer, tree=MapTree.ofList comparer l) static member Create(comparer : 'ComparerTag, ie : seq<_>) : Map<'Key,'T,'ComparerTag> = Map<_,_,_>(comparer=comparer, tree=MapTree.ofSeq comparer ie) interface IEnumerable> with member s.GetEnumerator() = MapTree.toSeq tree interface System.Collections.IEnumerable with override s.GetEnumerator() = (MapTree.toSeq tree :> System.Collections.IEnumerator) override this.Equals(that) = match that with // Cast to the exact same type as this, otherwise not equal. | :? Map<'Key,'T,'ComparerTag> as that -> ((this :> System.IComparable).CompareTo(that) = 0) | _ -> false interface System.IComparable with member m1.CompareTo(m2: obj) = Seq.compareWith (fun (kvp1 : KeyValuePair<_,_>) (kvp2 : KeyValuePair<_,_>)-> let c = m1.Comparer.Compare(kvp1.Key,kvp2.Key) in if c <> 0 then c else Unchecked.compare kvp1.Value kvp2.Value) // Cast m2 to the exact same type as m1, see 4884. // It is not OK to cast m2 to seq>, since different compares could permute the KVPs. m1 (m2 :?> Map<'Key,'T,'ComparerTag>) member this.ComputeHashCode() = let combineHash x y = (x <<< 1) + y + 631 let mutable res = 0 for KeyValue(x,y) in this do res <- combineHash res (Unchecked.hash x) res <- combineHash res (Unchecked.hash y) abs res override this.GetHashCode() = this.ComputeHashCode() type Map<'Key,'T> = Map<'Key, 'T, IComparer<'Key>> type Set<'T> = Set<'T, IComparer<'T>> fsharp-3.0.34/src/utils/prim-parsing.fsi0000775000175000017500000001205512260314606017140 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Text.Parsing open Internal.Utilities open Internal.Utilities.Text.Lexing open System.Collections.Generic [] type internal IParseState = /// Get the start and end position for the terminal or non-terminal at a given index matched by the production member InputRange: index:int -> Position * Position /// Get the end position for the terminal or non-terminal at a given index matched by the production member InputEndPosition: int -> Position /// Get the start position for the terminal or non-terminal at a given index matched by the production member InputStartPosition: int -> Position /// Get the start of the range of positions matched by the production member ResultStartPosition: Position /// Get the end of the range of positions matched by the production member ResultEndPosition: Position /// Get the full range of positions matched by the production member ResultRange: Position * Position /// Get the value produced by the terminal or non-terminal at the given position member GetInput : int -> obj /// Raise an error in this parse context member RaiseError<'b> : unit -> 'b /// Return the LexBuffer for this parser instance member LexBuffer : LexBuffer [] /// The context provided when a parse error occurs type internal ParseErrorContext<'tok> = /// The stack of state indexes active at the parse error member StateStack : int list /// The state active at the parse error member ParseState : IParseState /// The tokens that would cause a reduction at the parse error member ReduceTokens: int list /// The stack of productions that would be reduced at the parse error member ReducibleProductions : int list list /// The token that caused the parse error member CurrentToken : 'tok option /// The token that would cause a shift at the parse error member ShiftTokens : int list /// The message associated with the parse error member Message : string /// Tables generated by fsyacc /// The type of the tables contained in a file produced by the fsyacc.exe parser generator. type internal Tables<'tok> = { /// The reduction table reductions: (IParseState -> obj) array ; /// The token number indicating the end of input endOfInputTag: int; /// A function to compute the tag of a token tagOfToken: 'tok -> int; /// A function to compute the data carried by a token dataOfToken: 'tok -> obj; /// The sparse action table elements actionTableElements: uint16[]; /// The sparse action table row offsets actionTableRowOffsets: uint16[]; /// The number of symbols for each reduction reductionSymbolCounts: uint16[]; /// The immediate action table immediateActions: uint16[]; /// The sparse goto table gotos: uint16[]; /// The sparse goto table row offsets sparseGotoTableRowOffsets: uint16[]; /// The sparse table for the productions active for each state stateToProdIdxsTableElements: uint16[]; /// The sparse table offsets for the productions active for each state stateToProdIdxsTableRowOffsets: uint16[]; /// This table is logically part of the Goto table productionToNonTerminalTable: uint16[]; /// This function is used to hold the user specified "parse_error" or "parse_error_rich" functions parseError: ParseErrorContext<'tok> -> unit; /// The total number of terminals numTerminals: int; /// The tag of the error terminal tagOfErrorTerminal: int } /// Interpret the parser table taking input from the given lexer, using the given lex buffer, and the given start state. /// Returns an object indicating the final synthesized value for the parse. member Interpret : lexer:(LexBuffer -> 'tok) * lexbuf:LexBuffer * startState:int -> obj /// Indicates an accept action has occured exception internal Accept of obj /// Indicates a parse error has occured and parse recovery is in progress exception internal RecoverableParseError #if DEBUG module internal Flags = val mutable debug : bool #endif /// Helpers used by generated parsers. module internal ParseHelpers = /// The default implementation of the parse_error_rich function val parse_error_rich: (ParseErrorContext<'tok> -> unit) option /// The default implementation of the parse_error function val parse_error: string -> unit fsharp-3.0.34/src/utils/filename.fs0000775000175000017500000000413312260314606016135 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Internal.Utilities.Filename open System.IO open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library exception IllegalFileNameChar of string * char let illegalPathChars = Path.GetInvalidPathChars() let checkPathForIllegalChars (path:string) = for c in path do if illegalPathChars |> Array.exists(fun c1->c1=c) then raise(IllegalFileNameChar(path,c)) // Case sensitive (original behaviour preserved). let checkSuffix (x:string) (y:string) = x.EndsWith(y,System.StringComparison.Ordinal) let hasExtension (s:string) = checkPathForIllegalChars s (s.Length >= 1 && s.[s.Length - 1] = '.' && s <> ".." && s <> ".") || Path.HasExtension(s) let chopExtension (s:string) = checkPathForIllegalChars s if s = "." then "" else // for OCaml compatibility if not (hasExtension s) then raise (System.ArgumentException("chopExtension")) // message has to be precisely this, for OCaml compatibility, and no argument name can be set Path.Combine (Path.GetDirectoryName s,Path.GetFileNameWithoutExtension(s)) let directoryName (s:string) = checkPathForIllegalChars s if s = "" then "." else match Path.GetDirectoryName(s) with | null -> if FileSystem.IsPathRootedShim(s) then s else "." | res -> if res = "" then "." else res let fileNameOfPath s = checkPathForIllegalChars s Path.GetFileName(s) let fileNameWithoutExtension s = checkPathForIllegalChars s Path.GetFileNameWithoutExtension(s) fsharp-3.0.34/src/utils/HashMultiMap.fs0000775000175000017500000001426112260314606016714 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Collections open System open System.Collections.Generic open Microsoft.FSharp.Collections // Each entry in the HashMultiMap dictionary has at least one entry. Under normal usage each entry has _only_ // one entry. So use two hash tables: one for the main entries and one for the overflow. [] type internal HashMultiMap<'Key,'Value>(n: int, hasheq: IEqualityComparer<'Key>) = let firstEntries = new Dictionary<_,_>(n,hasheq); let rest = new Dictionary<_,_>(3,hasheq); new (hasheq : IEqualityComparer<'Key>) = new HashMultiMap<'Key,'Value>(11, hasheq) new (seq : seq<'Key * 'Value>, hasheq : IEqualityComparer<'Key>) as x = new HashMultiMap<'Key,'Value>(11, hasheq) then seq |> Seq.iter (fun (k,v) -> x.Add(k,v)) member x.GetRest(k) = let mutable res = [] let ok = rest.TryGetValue(k,&res) if ok then res else [] member x.Add(y,z) = let mutable res = Unchecked.defaultof<'Value> let ok = firstEntries.TryGetValue(y,&res) if ok then rest.[y] <- res :: x.GetRest(y) firstEntries.[y] <- z member x.Clear() = firstEntries.Clear() rest.Clear() member x.FirstEntries = firstEntries member x.Rest = rest member x.Copy() = let res = new HashMultiMap<'Key,'Value>(firstEntries.Count,firstEntries.Comparer) for kvp in firstEntries do res.FirstEntries.Add(kvp.Key,kvp.Value) for kvp in rest do res.Rest.Add(kvp.Key,kvp.Value) res member x.Item with get(y : 'Key) = let mutable res = Unchecked.defaultof<'Value> let ok = firstEntries.TryGetValue(y,&res) if ok then res else raise (new System.Collections.Generic.KeyNotFoundException("The item was not found in collection")) and set (y:'Key) (z:'Value) = x.Replace(y,z) member x.FindAll(y) = let mutable res = Unchecked.defaultof<'Value> let ok = firstEntries.TryGetValue(y,&res) if ok then res :: x.GetRest(y) else [] member x.Fold f acc = let mutable res = acc for kvp in firstEntries do res <- f kvp.Key kvp.Value res match x.GetRest(kvp.Key) with | [] -> () | rest -> for z in rest do res <- f kvp.Key z res res member x.Iterate(f) = for kvp in firstEntries do f kvp.Key kvp.Value match x.GetRest(kvp.Key) with | [] -> () | rest -> for z in rest do f kvp.Key z member x.Contains(y) = firstEntries.ContainsKey(y) member x.ContainsKey(y) = firstEntries.ContainsKey(y) member x.Remove(y) = let mutable res = Unchecked.defaultof<'Value> let ok = firstEntries.TryGetValue(y,&res) // Note, if not ok then nothing to remove - nop if ok then // We drop the FirstEntry. Here we compute the new FirstEntry and residue MoreEntries let mutable res = [] let ok = rest.TryGetValue(y,&res) if ok then match res with | [h] -> firstEntries.[y] <- h; rest.Remove(y) |> ignore | (h::t) -> firstEntries.[y] <- h rest.[y] <- t | _ -> // note: broken invariant () else firstEntries.Remove(y) |> ignore member x.Replace(y,z) = firstEntries.[y] <- z member x.TryFind(y) = let mutable res = Unchecked.defaultof<'Value> let ok = firstEntries.TryGetValue(y,&res) if ok then Some(res) else None member x.Count = firstEntries.Count interface IEnumerable> with member s.GetEnumerator() = let elems = new System.Collections.Generic.List<_>(firstEntries.Count + rest.Count) for kvp in firstEntries do elems.Add(kvp) for z in s.GetRest(kvp.Key) do elems.Add(KeyValuePair(kvp.Key, z)) (elems.GetEnumerator() :> IEnumerator<_>) interface System.Collections.IEnumerable with member s.GetEnumerator() = ((s :> seq<_>).GetEnumerator() :> System.Collections.IEnumerator) interface IDictionary<'Key, 'Value> with member s.Item with get x = s.[x] and set x v = s.[x] <- v member s.Keys = ([| for kvp in s -> kvp.Key |] :> ICollection<'Key>) member s.Values = ([| for kvp in s -> kvp.Value |] :> ICollection<'Value>) member s.Add(k,v) = s.[k] <- v member s.ContainsKey(k) = s.ContainsKey(k) member s.TryGetValue(k,r) = if s.ContainsKey(k) then (r <- s.[k]; true) else false member s.Remove(k:'Key) = let res = s.ContainsKey(k) in s.Remove(k); res interface ICollection> with member s.Add(x) = s.[x.Key] <- x.Value member s.Clear() = s.Clear() member s.Remove(x) = let res = s.ContainsKey(x.Key) if res && Unchecked.equals s.[x.Key] x.Value then s.Remove(x.Key); res member s.Contains(x) = s.ContainsKey(x.Key) && Unchecked.equals s.[x.Key] x.Value member s.CopyTo(arr,arrIndex) = s |> Seq.iteri (fun j x -> arr.[arrIndex+j] <- x) member s.IsReadOnly = false member s.Count = s.Count fsharp-3.0.34/src/utils/ThreeList.fs0000775000175000017500000005374712260314606016277 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// A working implementation of vectors that chunks the vector in groups of 3 giving 7 words per allocation (a 3/7 = 42% maximum utilization rate instead of 1/4 = 25%) /// No cons, head, tail or other access-from-the-left operations (apart from nth) are supported namespace Internal.Utilities open System.Collections open System.Collections.Generic (* [] type ThreeList<'T> = member Length : int interface IEnumerable<'T> interface System.Collections.IEnumerable interface System.IComparable [] module ThreeList = val map : ('T -> 'U) -> ThreeList<'T> -> ThreeList<'U> val mapi : (int -> 'T -> 'U) -> ThreeList<'T> -> ThreeList<'U> val isEmpty : ThreeList<'T> -> bool val toList : ThreeList<'T> -> 'T list val ofList : 'T list -> ThreeList<'T> val lengthsEqAndForall2 : ('T -> 'U -> bool) -> ThreeList<'T> -> ThreeList<'U> -> bool val init : int -> (int -> 'T) -> ThreeList<'T> val empty<'T> : ThreeList<'T> val toArray : ThreeList<'T> -> 'T[] val ofArray : 'T[] -> ThreeList<'T> val nth : ThreeList<'T> -> int -> 'T val iter : ('T -> unit) -> ThreeList<'T> -> unit val iteri : (int -> 'T -> unit) -> ThreeList<'T> -> unit val foldBack : ('T -> 'State -> 'State) -> ThreeList<'T> -> 'State -> 'State val exists : ('T -> bool) -> ThreeList<'T> -> bool *) [] type ThreeList<[] 'T> = {n:int;x1: 'T;x2: 'T;x3: 'T; mutable t: ThreeList<'T>} interface IEnumerable<'T> with member x.GetEnumerator() : IEnumerator<'T> = (new ThreeListEnumerator<'T>(x) :> IEnumerator<'T>) interface IEnumerable with member x.GetEnumerator() : IEnumerator = ((x :> IEnumerable<'T>).GetEnumerator() :> IEnumerator) interface System.IComparable with member x.CompareTo(yobj:obj) = match yobj with | :? ThreeList<'T> as y -> let rec loop x y = let c = compare x.n y.n if c <> 0 then c else if x.n = 0 then 0 else let c = Unchecked.compare x.x1 y.x1 if c <> 0 then c else if x.n = 1 then 0 else let c = Unchecked.compare x.x2 y.x2 if c <> 0 then c else if x.n = 2 then 0 else let c = Unchecked.compare x.x2 y.x2 if c <> 0 then c else let c = Unchecked.compare x.x3 y.x3 if c <> 0 then c else loop x.t y.t loop x y | _ -> invalidArg "yobj" "incorrect type" override x.Equals(yobj:obj) = match yobj with | :? ThreeList<'T> as y -> let rec loop x y = x.n = y.n && match x.n with | 0 -> true | 1 -> Unchecked.equals x.x1 y.x1 | 2 -> Unchecked.equals x.x1 y.x1 && Unchecked.equals x.x2 y.x2 | _ -> Unchecked.equals x.x1 y.x1 && Unchecked.equals x.x2 y.x2 && Unchecked.equals x.x3 y.x3 && Unchecked.equals x.x1 y.x1 && loop x.t y.t loop x y | _ -> false override x.GetHashCode() = let rec loop acc x = let acc = acc <<< 1 + Unchecked.hash x.x1 + 3 if x.n = 0 then acc else let acc = acc <<< 1 + Unchecked.hash x.x1 + 7 if x.n = 1 then acc else let acc = acc <<< 1 + Unchecked.hash x.x2 + 17 if x.n = 2 then acc else loop (acc <<< 1 + Unchecked.hash x.x3 + 31) x.t loop 0 x and ThreeListEnumerator<'T>(tl:ThreeList<'T>) = let mutable tl = tl let mutable p = -1 interface IEnumerator with member x.Current = box (x :> IEnumerator<'T>).Current member x.MoveNext() = if p = tl.n - 1 then if tl.n < 3 || tl.t.n = 0 then false else tl <- tl.t; p <- 0; true else p <- p + 1; true member x.Reset() = invalidOp "reset not permitted" interface IEnumerator<'T> with member x.Current = match p with 0 -> tl.x1 | 1 -> tl.x2 | _ -> tl.x3 member x.Dispose() = () type ThreeListStatics<'T>() = static let emptyTL = {n=0;x1=Unchecked.defaultof<'T>;x2=Unchecked.defaultof<'T>;x3=Unchecked.defaultof<'T>;t=Unchecked.defaultof<_>} static member Empty : ThreeList<'T> = emptyTL [] module ThreeList = let inline TL(n,x1,x2,x3,t) = {n=n;x1=x1;x2=x2;x3=x3;t=t} let inline e<'T> = Unchecked.defaultof<'T> let rec mapToFreshConsTail f r prev {n=n;x1=x1;x2=x2;x3=x3;t=t} = let c = match n with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, f x1, e, e, e) | 2 -> TL(2, f x1, f x2, e, e) | _ -> TL(3, f x1, f x2, f x3, e) prev.t <- c if n = 3 then mapToFreshConsTail f r c t else r let map f {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, f x1, e, e, e) | 2 -> TL(2, f x1, f x2, e, e) | _ -> let r = TL(3, f x1, f x2, f x3, e) in mapToFreshConsTail f r r t let rec mapiToFreshConsTail f i r prev {n=n;x1=x1;x2=x2;x3=x3;t=t} = let c = match n with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, f i x1, e, e, e) | 2 -> TL(2, f i x1, f (i + 1) x2, e, e) | _ -> TL(3, f i x1, f (i + 1) x2, f (i + 2) x3, e) prev.t <- c if n = 3 then mapiToFreshConsTail f (i+3) r c t else r let mapi f {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, f 0 x1, e, e, e) | 2 -> TL(2, f 0 x1, f 1 x2, e, e) | _ -> let r = (TL(3, f 0 x1, f 1 x2, f 2 x3, e)) in mapiToFreshConsTail f 3 r r t let iteri f xs = let rec loop i {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> () | 1 -> f i x1 | 2 -> f i x1; f (i+1) x2; | _ -> f i x1; f (i+1) x2; f (i+2) x3; loop (i+3) t loop 0 xs let rec nth {n=n;x1=x1;x2=x2;x3=x3;t=t} i = if i < 0 then invalidArg "k" "must be non-negative" elif i >= n then invalidArg "k" "too big for list" match i with | 0 -> x1 | 1 -> x2 | 2 -> x3 | _ -> nth t (i-3) let rec iter f {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> () | 1 -> f x1 | 2 -> f x1; f x2; | _ -> f x1; f x2; f x3; iter f t let isEmpty t = (t.n = 0) let length x = if x.n < 3 then x.n else let rec loop acc t = if t.n = 3 then loop (acc + t.n) t.t else acc + t.n loop 3 x.t let toArray xs = let res = Array.zeroCreate (length xs) let rec loop i {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> () | 1 -> res.[i] <- x1 | 2 -> res.[i] <- x1; res.[i+1] <- x2 | _ -> res.[i] <- x1; res.[i+1] <- x2; res.[i+2] <- x3; loop (i+3) t loop 0 xs res let ofArray (arr:'T[]) = let n = arr.Length let acc = match n % 3 with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, arr.[n-1], e, e, e) | _ -> TL(2, arr.[n-2], arr.[n-1], e, e) let rec loop acc i = if i = 0 then acc else loop (TL(3, arr.[i-3], arr.[i-2], arr.[i-1], acc)) (i-3) loop acc (n-n%3) let toList {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> [] | 1 -> [x1] | 2 -> [x1; x2] | _ -> x1::x2::x3::Array.toList (toArray t) let rec ofList (x:'T list) = match x with | [] -> ThreeListStatics.Empty | [x1] -> TL(1, x1, e, e, e) | [x1;x2] -> TL(2, x1, x2, e, e) | x1::x2::x3::t -> let rec loop r prev x = match x with | [] -> prev.t <- ThreeListStatics.Empty; r | [x1] -> prev.t <- TL(1, x1, e, e, e); r | [x1;x2] -> prev.t <- TL(2, x1, x2, e, e); r | x1::x2::x3::t -> let c = TL(3, x1, x2, x3, e) in prev.t <- c; loop r c t let r = TL(3, x1, x2, x3, e) loop r r t let lengthsEqAndForall2 f (x: ThreeList<'T>) (y: ThreeList<'U>) = length x = length y && let rec loop x y = let {n=xn;x1=x1;x2=x2;x3=x3;t=xt} = x let {n=_;x1=y1;x2=y2;x3=y3;t=yt} = y match xn with | 0 -> true | 1 -> f x1 y1 | 2 -> f x1 y1 && f x2 y2 | _ -> f x1 y1 && f x2 y2 && f x3 y3 && loop xt yt loop x y let empty<'T> = ThreeListStatics<'T>.Empty let init n f = let acc = match n % 3 with | 0 -> ThreeListStatics.Empty | 1 -> TL(1, f (n-1), e, e, e) | _ -> TL(2, f (n-2), f (n-1), e, e) let rec loop acc i = if i = 0 then acc else loop (TL(3, f (i-3), f (i-2), f (i-1), acc)) (i-3) loop acc (n-n%3) let rec exists f {n=n;x1=x1;x2=x2;x3=x3;t=t} = match n with | 0 -> false | 1 -> f x1 | 2 -> f x1 || f x2 | _ -> f x1 || f x2 || f x3 || exists f t let rec foldBack f {n=n;x1=x1;x2=x2;x3=x3;t=t} z = match n with | 0 -> z | 1 -> f x1 z | 2 -> f x1 (f x2 z) | _ -> f x1 (f x2 (f x3 (Array.foldBack f (toArray t) z))) type ThreeList<'T> with member x.Length = ThreeList.length x (* #time "on" let check s v1 v2 = if (v1 <> v2) then printfn "FAIL: %s" s for i in 0 .. 100 do check ("3lkcewoeiwvX" + string i) ([1..i] |> ThreeList.ofList |> ThreeList.toList) [1..i] check ("3lkcewoeiwvA" + string i) ([1..i] |> ThreeList.ofList |> ThreeList.map (fun i -> i + 1) |> ThreeList.toList) [2..i+1] check ("3lkcewoeiwvA" + string i) ([1..i] |> ThreeList.ofList |> Seq.map (fun i -> i + 1) |> Seq.toList) [2..i+1] check ("3lkcewoeiwvT" + string i) ([1..i] |> ThreeList.ofList |> ThreeList.mapi (fun i j -> (i, j)) |> ThreeList.toList) [ for i in 0..i-1 -> (i,i+1) ] check ("3lkcewoeiwvF" + string i) ([1..i] |> ThreeList.ofList |> ThreeList.toArray) [| 1..i |] check ("3lkcewoeiwvQ" + string i) (ThreeList.init i (fun i -> i + 1) |> ThreeList.toArray) [| 1..i |] check ("3lkcewoeiwvW" + string i) ([| 1..i |] |> ThreeList.ofArray |> ThreeList.toArray) [| 1..i |] check ("3lkcewoeiwvG" + string i) ([| 1..i |] |> ThreeList.ofArray |> ThreeList.exists (fun i -> i = 10)) (i >= 10) check ("3lkcewoeiwvH" + string i) (let x = ref 0 in [| 1..i |] |> ThreeList.ofArray |> ThreeList.iter (fun i -> x := !x + i); !x) (List.sum [ 1 .. i]) check ("3lkcewoeiwvJ" + string i) (let x = ref 0 in [| 1..i |] |> ThreeList.ofArray |> ThreeList.iteri (fun j i -> x := !x + i); !x) (List.sum [ 1 .. i]) check ("3lkcewoeiwvK" + string i) (let x = ref 0 in [| 1..i |] |> ThreeList.ofArray |> ThreeList.iteri (fun j i -> x := !x + j); !x) (List.sum [ 0 .. i-1]) check ("3lkcewoeiwvK" + string i) (compare (ThreeList.ofList [0..i]) (ThreeList.ofList [0..i])) 0 check ("3lkcewoeiwvK" + string i) (compare (ThreeList.ofList [0..i]) (ThreeList.ofList [0..i+1])) -1 check ("3lkcewoeiwvK" + string i) (compare (ThreeList.ofList [0..i]) (ThreeList.ofList [0..i-1])) 1 check ("3lkcewoeiwvK" + string i) (compare (ThreeList.ofList [0..i]) (ThreeList.ofList [1..i+1])) -1 check ("3lkcewoeiwvK" + string i) (compare (ThreeList.ofList [0..i]) (ThreeList.ofList ([0..i-1] @ [i+1]))) -1 check ("3lkcewoeiwvK" + string i) ((ThreeList.ofList [0..i]) = (ThreeList.ofList [0..i])) true check ("3lkcewoeiwvK" + string i) ((ThreeList.ofList [0..i]) = (ThreeList.ofList ([0..i-1] @ [i+1]))) false module SpeedTestMapBigLIntist = let fl1 = FourList.init 100000 (fun i -> i + 1) let tl1 = ThreeList.init 100000 (fun i -> i + 1) let l1 = List.init 100000 (fun i -> i + 1) let al1 = Array.init 100000 (fun i -> i + 1) //Real: 00:00:01.028, CPU: 00:00:00.982, GC gen0: 145, gen1: 67, gen2: 0 //Real: 00:00:00.986, CPU: 00:00:00.967, GC gen0: 142, gen1: 65, gen2: 0 for i in 0 .. 1000 do fl1 |> FourList.map (fun i -> i + 1) |> ignore //Real: 00:00:01.157, CPU: 00:00:01.138, GC gen0: 165, gen1: 83, gen2: 0 //Real: 00:00:01.115, CPU: 00:00:01.092, GC gen0: 163, gen1: 106, gen2: 0 for i in 0 .. 1000 do tl1 |> ThreeList.map (fun i -> i + 1) |> ignore // Real: 00:00:02.740, CPU: 00:00:02.714, GC gen0: 268, gen1: 136, gen2: 0 // Real: 00:00:02.344, CPU: 00:00:02.324, GC gen0: 266, gen1: 266, gen2: 0 for i in 0 .. 1000 do l1 |> List.map (fun i -> i + 1) |> ignore // Real: 00:00:01.420, CPU: 00:00:01.575, GC gen0: 22, gen1: 22, gen2: 22 // Real: 00:00:00.553, CPU: 00:00:00.655, GC gen0: 7, gen1: 6, gen2: 5 // Real: 00:00:00.918, CPU: 00:00:01.092, GC gen0: 14, gen1: 13, gen2: 13 // Real: 00:00:02.431, CPU: 00:00:02.636, GC gen0: 57, gen1: 57, gen2: 57 // Real: 00:00:04.541, CPU: 00:00:04.773, GC gen0: 111, gen1: 111, gen2: 111 // Real: 00:00:00.965, CPU: 00:00:01.107, GC gen0: 21, gen1: 17, gen2: 17 // Real: 00:00:00.878, CPU: 00:00:00.998, GC gen0: 17, gen1: 16, gen2: 16 for i in 0 .. 1000 do al1 |> Array.map (fun i -> i + 1) |> ignore module SpeedTestMapSmallIntList = let fl1 = FourList.init 2 (fun i -> i + 1) let tl1 = ThreeList.init 2 (fun i -> i + 1) let l1 = List.init 2 (fun i -> i + 1) let al1 = Array.init 2 (fun i -> i + 1) let N = 20000000 // Real: 00:00:00.579, CPU: 00:00:00.561, GC gen0: 279, gen1: 0, gen2: 0 // Real: 00:00:00.599, CPU: 00:00:00.592, GC gen0: 279, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.map (fun i -> i + 1) |> ignore // Real: 00:00:00.475, CPU: 00:00:00.483, GC gen0: 255, gen1: 0, gen2: 0 // Real: 00:00:00.475, CPU: 00:00:00.468, GC gen0: 254, gen1: 0, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.map (fun i -> i + 1) |> ignore // Real: 00:00:00.893, CPU: 00:00:00.889, GC gen0: 280, gen1: 0, gen2: 0 // Real: 00:00:00.896, CPU: 00:00:00.904, GC gen0: 280, gen1: 1, gen2: 0 for i in 0 .. N do l1 |> List.map (fun i -> i + 1) |> ignore // Real: 00:00:00.248, CPU: 00:00:00.249, GC gen0: 127, gen1: 0, gen2: 0 // Real: 00:00:00.248, CPU: 00:00:00.249, GC gen0: 127, gen1: 0, gen2: 0 for i in 0 .. N do al1 |> Array.map (fun i -> i + 1) |> ignore module SpeedTestMapSmallStringList = let fl1 = FourList.init 2 (fun i -> string i) let tl1 = ThreeList.init 2 (fun i -> string i) let l1 = List.init 2 (fun i -> string i) let al1 = Array.init 2 (fun i -> string i ) let N = 10000000 // Real: 00:00:00.311, CPU: 00:00:00.312, GC gen0: 140, gen1: 0, gen2: 0 // Real: 00:00:00.313, CPU: 00:00:00.312, GC gen0: 139, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.map (fun i -> i) |> ignore // Real: 00:00:00.285, CPU: 00:00:00.280, GC gen0: 127, gen1: 0, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.map (fun i -> i) |> ignore // Real: 00:00:00.699, CPU: 00:00:00.686, GC gen0: 141, gen1: 1, gen2: 1 for i in 0 .. N do l1 |> List.map (fun i -> i) |> ignore // Real: 00:00:00.225, CPU: 00:00:00.218, GC gen0: 76, gen1: 0, gen2: 0 for i in 0 .. N do al1 |> Array.map (fun i -> i) |> ignore module SpeedTestMapSmallRefListSize2 = type X = A of int | B of int let fl1 = FourList.init 2 (fun i -> A i) let tl1 = ThreeList.init 2 (fun i -> A i) let l1 = List.init 2 (fun i -> A i) let al1 = Array.init 2 (fun i -> A i ) let N = 10000000 //Real: 00:00:00.528, CPU: 00:00:00.530, GC gen0: 216, gen1: 1, gen2: 0 //Real: 00:00:00.538, CPU: 00:00:00.530, GC gen0: 216, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:00.615, CPU: 00:00:00.624, GC gen0: 204, gen1: 0, gen2: 0 //Real: 00:00:00.528, CPU: 00:00:00.514, GC gen0: 204, gen1: 1, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:00.932, CPU: 00:00:00.904, GC gen0: 216, gen1: 0, gen2: 0 for i in 0 .. N do l1 |> List.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:00.807, CPU: 00:00:00.811, GC gen0: 153, gen1: 0, gen2: 0 // Real: 00:00:00.812, CPU: 00:00:00.811, GC gen0: 153, gen1: 0, gen2: 0 for i in 0 .. N do al1 |> Array.map (function A i -> B i | B i -> A i) |> ignore module SpeedTestMapSmallRefListSize10 = type X = A of int | B of int let size = 10 let tl1 = ThreeList.init size (fun i -> A i) let l1 = List.init size (fun i -> A i) let al1 = Array.init size (fun i -> A i ) let N = 10000000 // Real: 00:00:02.562, CPU: 00:00:02.527, GC gen0: 775, gen1: 0, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:03.372, CPU: 00:00:03.385, GC gen0: 928, gen1: 0, gen2: 0 for i in 0 .. N do l1 |> List.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:03.524, CPU: 00:00:03.510, GC gen0: 559, gen1: 0, gen2: 0 for i in 0 .. N do al1 |> Array.map (function A i -> B i | B i -> A i) |> ignore module SpeedTestMapSmallRefListSize1 = type X = A of int | B of int let size = 1 let fl1 = FourList.init size (fun i -> A i) let tl1 = ThreeList.init size (fun i -> A i) let l1 = List.init size (fun i -> A i) let al1 = Array.init size (fun i -> A i ) let N = 100000000 //Real: 00:00:04.161, CPU: 00:00:04.087, GC gen0: 1780, gen1: 1, gen2: 0 //Real: 00:00:04.202, CPU: 00:00:04.165, GC gen0: 1780, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:03.944, CPU: 00:00:03.915, GC gen0: 1653, gen1: 1, gen2: 0 // Real: 00:00:03.983, CPU: 00:00:03.900, GC gen0: 1653, gen1: 1, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:04.629, CPU: 00:00:04.586, GC gen0: 1272, gen1: 1, gen2: 0 // Real: 00:00:04.725, CPU: 00:00:04.664, GC gen0: 1271, gen1: 0, gen2: 0 for i in 0 .. N do l1 |> List.map (function A i -> B i | B i -> A i) |> ignore // Real: 00:00:04.500, CPU: 00:00:04.430, GC gen0: 1018, gen1: 1, gen2: 0 for i in 0 .. N do al1 |> Array.map (function A i -> B i | B i -> A i) |> ignore module SpeedTestOfListSmallRefListSize2 = type X = A of int | B of int let fl1 = FourList.init 2 (fun i -> A i) let tl1 = ThreeList.init 2 (fun i -> A i) let l1 = List.init 2 (fun i -> A i) let al1 = Array.init 2 (fun i -> A i ) let N = 20000000 //Real: 00:00:00.465, CPU: 00:00:00.468, GC gen0: 204, gen1: 204, gen2: 0 for i in 0 .. N do l1 |> FourList.ofList |> ignore // Real: 00:00:00.407, CPU: 00:00:00.390, GC gen0: 178, gen1: 178, gen2: 0 for i in 0 .. N do l1 |> ThreeList.ofList |> ignore // Real: 00:00:01.652, CPU: 00:00:01.591, GC gen0: 153, gen1: 153, gen2: 0 for i in 0 .. N do l1 |> Array.ofList |> ignore module SpeedTestToListSmallRefListSize2 = type X = A of int | B of int let fl1 = FourList.init 2 (fun i -> A i) let tl1 = ThreeList.init 2 (fun i -> A i) let l1 = List.init 2 (fun i -> A i) let al1 = Array.init 2 (fun i -> A i ) let N = 20000000 //Real: 00:00:00.895, CPU: 00:00:00.889, GC gen0: 202, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.toList |> ignore // Real: 00:00:00.868, CPU: 00:00:00.873, GC gen0: 203, gen1: 1, gen2: 0 // Real: 00:00:00.895, CPU: 00:00:00.889, GC gen0: 204, gen1: 1, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.toList |> ignore // Real: 00:00:01.043, CPU: 00:00:01.045, GC gen0: 204, gen1: 0, gen2: 0 // Real: 00:00:01.071, CPU: 00:00:01.060, GC gen0: 203, gen1: 1, gen2: 0 for i in 0 .. N do al1 |> Array.toList |> ignore module SpeedTestToListSmallRefListSize0 = type X = A of int | B of int let size = 0 let fl1 = FourList.init size (fun i -> A i) let tl1 = ThreeList.init size (fun i -> A i) let l1 = List.init size (fun i -> A i) let al1 = Array.init size (fun i -> A i ) let N = 30000000 //Real: 00:00:00.530, CPU: 00:00:00.530, GC gen0: 0, gen1: 0, gen2: 0 for i in 0 .. N do fl1 |> FourList.toList |> ignore // Real: 00:00:00.528, CPU: 00:00:00.514, GC gen0: 0, gen1: 0, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.toList |> ignore // Real: 00:00:00.635, CPU: 00:00:00.624, GC gen0: 0, gen1: 0, gen2: 0 for i in 0 .. N do al1 |> Array.toList |> ignore module SpeedTestToArraySmallRefListSize2 = type X = A of int | B of int let size = 2 let fl1 = FourList.init size (fun i -> A i) let tl1 = ThreeList.init size (fun i -> A i) let l1 = List.init size (fun i -> A i) let al1 = Array.init size (fun i -> A i ) let N = 30000000 // Real: 00:00:01.970, CPU: 00:00:01.950, GC gen0: 229, gen1: 1, gen2: 0 for i in 0 .. N do fl1 |> FourList.toArray |> ignore // Real: 00:00:02.043, CPU: 00:00:02.043, GC gen0: 229, gen1: 1, gen2: 0 for i in 0 .. N do tl1 |> ThreeList.toArray |> ignore // Real: 00:00:02.199, CPU: 00:00:02.106, GC gen0: 230, gen1: 1, gen2: 1 for i in 0 .. N do l1 |> List.toArray |> ignore *) fsharp-3.0.34/src/utils/filename.fsi0000775000175000017500000000147312260314606016312 0ustar chrischris/// Some filename operations. module internal Internal.Utilities.Filename exception IllegalFileNameChar of string * char /// "checkSuffix f s" returns true if filename "f" ends in suffix "s", /// e.g. checkSuffix "abc.fs" ".fs" returns true. val checkSuffix: string -> string -> bool /// "chopExtension f" removes the extension from the given /// filename. Raises ArgumentException if no extension is present. val chopExtension: string -> string /// "directoryName" " decomposes a filename into a directory name val directoryName: string -> string /// Return true if the filename has a "." extension val hasExtension: string -> bool /// Get the filename of the given path val fileNameOfPath: string -> string /// Get the filename without extenstion of the given path val fileNameWithoutExtension: string -> string fsharp-3.0.34/src/utils/sformat.fs0000775000175000017500000015676212260314606016050 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // This file is compiled 3(!) times in the codebase // - as the internal implementation of printf '%A' formatting // defines: RUNTIME // - as the internal implementation of structured formatting in the FSharp.Compiler-proto.dll // defines: COMPILER + BUILDING_WITH_LKG // - as the internal implementation of structured formatting in FSharp.Compiler.dll // defines: COMPILER // NOTE: this implementation is used by fsi.exe. This is very important. // // The one implementation file is used because we very much want to keep the implementations of // structured formatting the same for fsi.exe and '%A' printing. However fsi.exe may have // a richer feature set. // // Note no layout objects are ever transferred between the above implementations, and in // all 4 cases the layout types are really different types. #nowarn "52" // The value has been copied to ensure the original is not mutated by this operation #if COMPILER // FSharp.Compiler-proto.dll: // FSharp.Compiler.dll: namespace Internal.Utilities.StructuredFormat #else #if RUNTIME // FSharp.Core.dll: namespace Microsoft.FSharp.Text.StructuredPrintfImpl #else // Powerpack: namespace Microsoft.FSharp.Text.StructuredFormat #endif #endif // Breakable block layout implementation. // This is a fresh implementation of pre-existing ideas. open System open System.Diagnostics open System.Text open System.IO open System.Reflection open System.Globalization open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Reflection open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics /// A joint, between 2 layouts, is either: /// - unbreakable, or /// - breakable, and if broken the second block has a given indentation. [] #if COMPILER type internal Joint = #else type Joint = #endif | Unbreakable | Breakable of int | Broken of int /// Leaf juxt,data,juxt /// Node juxt,left,juxt,right,juxt and joint /// /// If either juxt flag is true, then no space between words. [] #if COMPILER type internal Layout = #else type Layout = #endif | Leaf of bool * obj * bool | Node of bool * layout * bool * layout * bool * joint | Attr of string * (string * string) list * layout #if COMPILER and internal layout = Layout #else and layout = Layout #endif #if COMPILER and internal joint = Joint #else and joint = Joint #endif [] #if COMPILER type internal IEnvironment = #else type IEnvironment = #endif abstract GetLayout : obj -> layout abstract MaxColumns : int abstract MaxRows : int #if COMPILER module internal LayoutOps = #else module LayoutOps = #endif let rec juxtLeft = function | Leaf (jl,_,_) -> jl | Node (jl,_,_,_,_,_) -> jl | Attr (_,_,l) -> juxtLeft l let rec juxtRight = function | Leaf (_,_,jr) -> jr | Node (_,_,_,_,jr,_) -> jr | Attr (_,_,l) -> juxtRight l let mkNode l r joint = let jl = juxtLeft l let jm = juxtRight l || juxtLeft r let jr = juxtRight r Node(jl,l,jm,r,jr,joint) // constructors let objL (obj:obj) = Leaf (false,obj,false) let sLeaf (l,(str:string),r) = Leaf (l,(str:>obj),r) let wordL str = sLeaf (false,str,false) let sepL str = sLeaf (true ,str,true) let rightL str = sLeaf (true ,str,false) let leftL str = sLeaf (false,str,true) let emptyL = sLeaf (true,"",true) let isEmptyL = function | Leaf(true,s,true) -> match s with | :? string as s -> s = "" | _ -> false | _ -> false let aboveL l r = mkNode l r (Broken 0) let joinN i l r = mkNode l r (Breakable i) let join = joinN 0 let join1 = joinN 1 let join2 = joinN 2 let join3 = joinN 3 let tagAttrL tag attrs l = Attr(tag,attrs,l) let apply2 f l r = if isEmptyL l then r else if isEmptyL r then l else f l r let (^^) l r = mkNode l r (Unbreakable) let (++) l r = mkNode l r (Breakable 0) let (--) l r = mkNode l r (Breakable 1) let (---) l r = mkNode l r (Breakable 2) let (@@) l r = apply2 (fun l r -> mkNode l r (Broken 0)) l r let (@@-) l r = apply2 (fun l r -> mkNode l r (Broken 1)) l r let (@@--) l r = apply2 (fun l r -> mkNode l r (Broken 2)) l r let tagListL tagger = function | [] -> emptyL | [x] -> x | x::xs -> let rec process' prefixL = function [] -> prefixL | y::ys -> process' ((tagger prefixL) ++ y) ys in process' x xs let commaListL x = tagListL (fun prefixL -> prefixL ^^ rightL ",") x let semiListL x = tagListL (fun prefixL -> prefixL ^^ rightL ";") x let spaceListL x = tagListL (fun prefixL -> prefixL) x let sepListL x y = tagListL (fun prefixL -> prefixL ^^ x) y let bracketL l = leftL "(" ^^ l ^^ rightL ")" let tupleL xs = bracketL (sepListL (sepL ",") xs) let aboveListL = function | [] -> emptyL | [x] -> x | x::ys -> List.fold (fun pre y -> pre @@ y) x ys let optionL xL = function None -> wordL "None" | Some x -> wordL "Some" -- (xL x) let listL xL xs = leftL "[" ^^ sepListL (sepL ";") (List.map xL xs) ^^ rightL "]" let squareBracketL x = leftL "[" ^^ x ^^ rightL "]" let braceL x = leftL "{" ^^ x ^^ rightL "}" let boundedUnfoldL (itemL : 'a -> layout) (project : 'z -> ('a * 'z) option) (stopShort : 'z -> bool) (z : 'z) maxLength = let rec consume n z = if stopShort z then [wordL "..."] else match project z with | None -> [] (* exhaused input *) | Some (x,z) -> if n<=0 then [wordL "..."] (* hit print_length limit *) else itemL x :: consume (n-1) z (* cons recursive... *) consume maxLength z let unfoldL itemL project z maxLength = boundedUnfoldL itemL project (fun _ -> false) z maxLength /// These are a typical set of options used to control structured formatting. [] #if COMPILER type internal FormatOptions = #else type FormatOptions = #endif { FloatingPointFormat: string; AttributeProcessor: (string -> (string * string) list -> bool -> unit); #if RUNTIME #else #if COMPILER // FSharp.Compiler.dll: This is the PrintIntercepts extensibility point currently revealed by fsi.exe's AddPrinter PrintIntercepts: (IEnvironment -> obj -> Layout option) list; StringLimit : int; #endif #endif FormatProvider: System.IFormatProvider; BindingFlags: System.Reflection.BindingFlags PrintWidth : int; PrintDepth : int; PrintLength : int; PrintSize : int; ShowProperties : bool; ShowIEnumerable: bool; } static member Default = { FormatProvider = (System.Globalization.CultureInfo.InvariantCulture :> System.IFormatProvider); #if RUNTIME #else #if COMPILER // FSharp.Compiler.dll: This is the PrintIntercepts extensibility point currently revealed by fsi.exe's AddPrinter PrintIntercepts = []; StringLimit = System.Int32.MaxValue; #endif #endif AttributeProcessor= (fun _ _ _ -> ()); BindingFlags = System.Reflection.BindingFlags.Public; FloatingPointFormat = "g10"; PrintWidth = 80 ; PrintDepth = 100 ; PrintLength = 100; PrintSize = 10000; ShowProperties = false; ShowIEnumerable = true; } #if COMPILER module internal ReflectUtils = #else module ReflectUtils = #endif open System open System.Reflection [] type TypeInfo = | TupleType of Type list | FunctionType of Type * Type | RecordType of (string * Type) list | SumType of (string * (string * Type) list) list | UnitType | ObjectType of Type let isNamedType(typ:Type) = not (typ.IsArray || typ.IsByRef || typ.IsPointer) let equivHeadTypes (ty1:Type) (ty2:Type) = isNamedType(ty1) && if ty1.IsGenericType then ty2.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(ty2.GetGenericTypeDefinition()) else ty1.Equals(ty2) let option = typedefof let func = typedefof<(obj -> obj)> let isOptionTy typ = equivHeadTypes typ (typeof) let isUnitType typ = equivHeadTypes typ (typeof) let isListType typ = FSharpType.IsUnion typ && (let cases = FSharpType.GetUnionCases typ cases.Length > 0 && equivHeadTypes (typedefof>) cases.[0].DeclaringType) module Type = let recdDescOfProps props = props |> Array.toList |> List.map (fun (p:PropertyInfo) -> p.Name, p.PropertyType) let getTypeInfoOfType (bindingFlags:BindingFlags) (typ:Type) = if FSharpType.IsTuple(typ) then TypeInfo.TupleType (FSharpType.GetTupleElements(typ) |> Array.toList) elif FSharpType.IsFunction(typ) then let ty1,ty2 = FSharpType.GetFunctionElements typ in TypeInfo.FunctionType( ty1,ty2) elif FSharpType.IsUnion(typ,bindingFlags) then let cases = FSharpType.GetUnionCases(typ,bindingFlags) match cases with | [| |] -> TypeInfo.ObjectType(typ) | _ -> TypeInfo.SumType(cases |> Array.toList |> List.map (fun case -> let flds = case.GetFields() case.Name,recdDescOfProps(flds))) elif FSharpType.IsRecord(typ,bindingFlags) then let flds = FSharpType.GetRecordFields(typ,bindingFlags) TypeInfo.RecordType(recdDescOfProps(flds)) else TypeInfo.ObjectType(typ) let IsOptionType (typ:Type) = isOptionTy typ let IsListType (typ:Type) = isListType typ let IsUnitType (typ:Type) = isUnitType typ [] type ValueInfo = | TupleValue of obj list | FunctionClosureValue of System.Type | RecordValue of (string * obj) list | ConstructorValue of string * (string * obj) list | ExceptionValue of System.Type * (string * obj) list | UnitValue | ObjectValue of obj module Value = // Analyze an object to see if it the representation // of an F# value. let GetValueInfoOfObject (bindingFlags:BindingFlags) (obj : obj) = match obj with | null -> ObjectValue(obj) | _ -> let reprty = obj.GetType() // First a bunch of special rules for tuples // Because of the way F# currently compiles tuple values // of size > 7 we can only reliably reflect on sizes up // to 7. if FSharpType.IsTuple reprty then TupleValue (FSharpValue.GetTupleFields obj |> Array.toList) elif FSharpType.IsFunction reprty then FunctionClosureValue reprty // It must be exception, abstract, record or union. // Either way we assume the only properties defined on // the type are the actual fields of the type. Again, // we should be reading attributes here that indicate the // true structure of the type, e.g. the order of the fields. elif FSharpType.IsUnion(reprty,bindingFlags) then let tag,vals = FSharpValue.GetUnionFields (obj,reprty,bindingFlags) let props = tag.GetFields() let pvals = (props,vals) ||> Array.map2 (fun prop v -> prop.Name,v) ConstructorValue(tag.Name, Array.toList pvals) elif FSharpType.IsExceptionRepresentation(reprty,bindingFlags) then let props = FSharpType.GetExceptionFields(reprty,bindingFlags) let vals = FSharpValue.GetExceptionFields(obj,bindingFlags) let pvals = (props,vals) ||> Array.map2 (fun prop v -> prop.Name,v) ExceptionValue(reprty, pvals |> Array.toList) elif FSharpType.IsRecord(reprty,bindingFlags) then let props = FSharpType.GetRecordFields(reprty,bindingFlags) RecordValue(props |> Array.map (fun prop -> prop.Name, prop.GetValue(obj,null)) |> Array.toList) else ObjectValue(obj) // This one is like the above but can make use of additional // statically-known type information to aid in the // analysis of null values. let GetValueInfo bindingFlags (x : 'a) (* x could be null *) = let obj = (box x) match obj with | null -> let typ = typeof<'a> if isOptionTy typ then ConstructorValue("None", []) elif isUnitType typ then UnitValue else ObjectValue(obj) | _ -> GetValueInfoOfObject bindingFlags (obj) let GetInfo bindingFlags (v:'a) = GetValueInfo bindingFlags (v:'a) #if COMPILER module internal Display = #else module Display = #endif open ReflectUtils open LayoutOps let string_of_int (i:int) = i.ToString() let typeUsesSystemObjectToString (typ:System.Type) = #if FX_ATLEAST_PORTABLE try let methInfo = typ.GetMethod("ToString",[| |]) methInfo.DeclaringType = typeof with e -> false #else try let methInfo = typ.GetMethod("ToString",BindingFlags.Public ||| BindingFlags.Instance,null,[| |],null) methInfo.DeclaringType = typeof with e -> false #endif /// If "str" ends with "ending" then remove it from "str", otherwise no change. let trimEnding (ending:string) (str:string) = #if FX_NO_CULTURE_INFO_ARGS if str.EndsWith(ending) then #else if str.EndsWith(ending,StringComparison.Ordinal) then #endif str.Substring(0,str.Length - ending.Length) else str let catchExn f = try Choice1Of2 (f ()) with e -> Choice2Of2 e // An implementation of break stack. // Uses mutable state, relying on linear threading of the state. [] type Breaks = Breaks of int * // pos of next free slot int * // pos of next possible "outer" break - OR - outer=next if none possible int array // stack of savings, -ve means it has been broken // next is next slot to push into - aka size of current occupied stack. // outer counts up from 0, and is next slot to break if break forced. // - if all breaks forced, then outer=next. // - popping under these conditions needs to reduce outer and next. //let dumpBreaks prefix (Breaks(next,outer,stack)) = () // printf "%s: next=%d outer=%d stack.Length=%d\n" prefix next outer stack.Length; // stdout.Flush() let chunkN = 400 let breaks0 () = Breaks(0,0,Array.create chunkN 0) let pushBreak saving (Breaks(next,outer,stack)) = //dumpBreaks "pushBreak" (next,outer,stack); let stack = if next = stack.Length then Array.init (next + chunkN) (fun i -> if i < next then stack.[i] else 0) // expand if full else stack stack.[next] <- saving; Breaks(next+1,outer,stack) let popBreak (Breaks(next,outer,stack)) = //dumpBreaks "popBreak" (next,outer,stack); if next=0 then raise (Failure "popBreak: underflow"); let topBroke = stack.[next-1] < 0 let outer = if outer=next then outer-1 else outer // if all broken, unwind let next = next - 1 Breaks(next,outer,stack),topBroke let forceBreak (Breaks(next,outer,stack)) = //dumpBreaks "forceBreak" (next,outer,stack); if outer=next then // all broken None else let saving = stack.[outer] stack.[outer] <- -stack.[outer]; let outer = outer+1 Some (Breaks(next,outer,stack),saving) // ------------------------------------------------------------------------- // fitting // ------------------------------------------------------------------------ let squashTo (maxWidth,leafFormatter) layout = if maxWidth <= 0 then layout else let rec fit breaks (pos,layout) = // breaks = break context, can force to get indentation savings. // pos = current position in line // layout = to fit //------ // returns: // breaks // layout - with breaks put in to fit it. // pos - current pos in line = rightmost position of last line of block. // offset - width of last line of block // NOTE: offset <= pos -- depending on tabbing of last block let breaks,layout,pos,offset = match layout with | Attr (tag,attrs,l) -> let breaks,layout,pos,offset = fit breaks (pos,l) let layout = Attr (tag,attrs,layout) breaks,layout,pos,offset | Leaf (jl,obj,jr) -> let text:string = leafFormatter obj // save the formatted text from the squash let layout = Leaf(jl,(text :> obj),jr) let textWidth = text.Length let rec fitLeaf breaks pos = if pos + textWidth <= maxWidth then breaks,layout,pos + textWidth,textWidth // great, it fits else match forceBreak breaks with | None -> breaks,layout,pos + textWidth,textWidth // tough, no more breaks | Some (breaks,saving) -> let pos = pos - saving fitLeaf breaks pos fitLeaf breaks pos | Node (jl,l,jm,r,jr,joint) -> let mid = if jm then 0 else 1 match joint with | Unbreakable -> let breaks,l,pos,offsetl = fit breaks (pos,l) // fit left let pos = pos + mid // fit space if juxt says so let breaks,r,pos,offsetr = fit breaks (pos,r) // fit right breaks,Node (jl,l,jm,r,jr,Unbreakable),pos,offsetl + mid + offsetr | Broken indent -> let breaks,l,pos,offsetl = fit breaks (pos,l) // fit left let pos = pos - offsetl + indent // broken so - offset left + ident let breaks,r,pos,offsetr = fit breaks (pos,r) // fit right breaks,Node (jl,l,jm,r,jr,Broken indent),pos,indent + offsetr | Breakable indent -> let breaks,l,pos,offsetl = fit breaks (pos,l) // fit left // have a break possibility, with saving let saving = offsetl + mid - indent let pos = pos + mid if saving>0 then let breaks = pushBreak saving breaks let breaks,r,pos,offsetr = fit breaks (pos,r) let breaks,broken = popBreak breaks if broken then breaks,Node (jl,l,jm,r,jr,Broken indent) ,pos,indent + offsetr else breaks,Node (jl,l,jm,r,jr,Breakable indent),pos,offsetl + mid + offsetr else // actually no saving so no break let breaks,r,pos,offsetr = fit breaks (pos,r) breaks,Node (jl,l,jm,r,jr,Breakable indent) ,pos,offsetl + mid + offsetr //printf "\nDone: pos=%d offset=%d" pos offset; breaks,layout,pos,offset let breaks = breaks0 () let pos = 0 let _,layout,_,_ = fit breaks (pos,layout) layout // ------------------------------------------------------------------------- // showL // ------------------------------------------------------------------------ let combine strs = System.String.Concat(Array.ofList(strs) : string[]) let showL opts leafFormatter layout = let push x rstrs = x::rstrs let z0 = [],0 let addText (rstrs,i) (text:string) = push text rstrs,i + text.Length let index (_,i) = i let extract rstrs = combine(List.rev rstrs) let newLine (rstrs,_) n = // \n then spaces... let indent = new System.String(' ', n) let rstrs = push "\n" rstrs let rstrs = push indent rstrs rstrs,n // addL: pos is tab level let rec addL z pos layout = match layout with | Leaf (_,obj,_) -> let text = leafFormatter obj addText z text | Node (_,l,_,r,_,Broken indent) // Print width = 0 implies 1D layout, no squash when not (opts.PrintWidth = 0) -> let z = addL z pos l let z = newLine z (pos+indent) let z = addL z (pos+indent) r z | Node (_,l,jm,r,_,_) -> let z = addL z pos l let z = if jm then z else addText z " " let pos = index z let z = addL z pos r z | Attr (_,_,l) -> addL z pos l let rstrs,_ = addL z0 0 layout extract rstrs // ------------------------------------------------------------------------- // outL // ------------------------------------------------------------------------ let outL outAttribute leafFormatter (chan : TextWriter) layout = // write layout to output chan directly let write (s:string) = chan.Write(s) // z is just current indent let z0 = 0 let index i = i let addText z text = write text; (z + text.Length) let newLine _ n = // \n then spaces... let indent = new System.String(' ',n) chan.WriteLine(); write indent; n // addL: pos is tab level let rec addL z pos layout = match layout with | Leaf (_,obj,_) -> let text = leafFormatter obj addText z text | Node (_,l,_,r,_,Broken indent) -> let z = addL z pos l let z = newLine z (pos+indent) let z = addL z (pos+indent) r z | Node (_,l,jm,r,_,_) -> let z = addL z pos l let z = if jm then z else addText z " " let pos = index z let z = addL z pos r z | Attr (tag,attrs,l) -> let _ = outAttribute tag attrs true let z = addL z pos l let _ = outAttribute tag attrs false z let _ = addL z0 0 layout () // -------------------------------------------------------------------- // pprinter: using general-purpose reflection... // -------------------------------------------------------------------- let getValueInfo bindingFlags (x:'a) = Value.GetInfo bindingFlags (x:'a) let unpackCons recd = match recd with | [(_,h);(_,t)] -> (h,t) | _ -> failwith "unpackCons" let getListValueInfo bindingFlags (x:obj) = match x with | null -> None | _ -> match getValueInfo bindingFlags x with | ConstructorValue ("Cons",recd) -> Some (unpackCons recd) | ConstructorValue ("Empty",[]) -> None | _ -> failwith "List value had unexpected ValueInfo" let compactCommaListL xs = sepListL (sepL ",") xs // compact, no spaces around "," let nullL = wordL "null" let measureL = wordL "()" // -------------------------------------------------------------------- // pprinter: attributes // -------------------------------------------------------------------- let makeRecordVerticalL nameXs = let itemL (name,xL) = let labelL = wordL name in ((labelL ^^ wordL "=")) -- (xL ^^ (rightL ";")) let braceL xs = (leftL "{") ^^ xs ^^ (rightL "}") braceL (aboveListL (List.map itemL nameXs)) let makeRecordHorizontalL nameXs = (* This is a more compact rendering of records - and is more like tuples *) let itemL (name,xL) = let labelL = wordL name in ((labelL ^^ wordL "=")) -- xL let braceL xs = (leftL "{") ^^ xs ^^ (rightL "}") braceL (sepListL (rightL ";") (List.map itemL nameXs)) let makeRecordL nameXs = makeRecordVerticalL nameXs (* REVIEW: switch to makeRecordHorizontalL ? *) let makePropertiesL nameXs = let itemL (name,v) = let labelL = wordL name (labelL ^^ wordL "=") ^^ (match v with | None -> wordL "?" | Some xL -> xL) ^^ (rightL ";") let braceL xs = (leftL "{") ^^ xs ^^ (rightL "}") braceL (aboveListL (List.map itemL nameXs)) let makeListL itemLs = (leftL "[") ^^ sepListL (rightL ";") itemLs ^^ (rightL "]") let makeArrayL xs = (leftL "[|") ^^ sepListL (rightL ";") xs ^^ (rightL "|]") let makeArray2L xs = leftL "[" ^^ aboveListL xs ^^ rightL "]" // -------------------------------------------------------------------- // pprinter: anyL - support functions // -------------------------------------------------------------------- let getProperty (obj: obj) name = let ty = obj.GetType() #if FX_ATLEAST_PORTABLE let meth = ty.GetMethod(name, (BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic)) meth.Invoke(obj,[||]) #else #if FX_NO_CULTURE_INFO_ARGS ty.InvokeMember(name, (BindingFlags.GetProperty ||| BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic), null, obj, [| |]) #else ty.InvokeMember(name, (BindingFlags.GetProperty ||| BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic), null, obj, [| |],CultureInfo.InvariantCulture) #endif #endif let formatChar isChar c = match c with | '\'' when isChar -> "\\\'" | '\"' when not isChar -> "\\\"" //| '\n' -> "\\n" //| '\r' -> "\\r" //| '\t' -> "\\t" | '\\' -> "\\\\" | '\b' -> "\\b" | _ when System.Char.IsControl(c) -> let d1 = (int c / 100) % 10 let d2 = (int c / 10) % 10 let d3 = int c % 10 "\\" + d1.ToString() + d2.ToString() + d3.ToString() | _ -> c.ToString() let formatString (s:string) = let rec check i = i < s.Length && not (System.Char.IsControl(s,i)) && s.[i] <> '\"' && check (i+1) let rec conv i acc = if i = s.Length then combine (List.rev acc) else conv (i+1) (formatChar false s.[i] :: acc) "\"" + s + "\"" // REVIEW: should we check for the common case of no control characters? Reinstate the following? //"\"" + (if check 0 then s else conv 0 []) + "\"" let formatStringInWidth (width:int) (str:string) = // Return a truncated version of the string, e.g. // "This is the initial text, which has been truncat"+[12 chars] // // Note: The layout code forces breaks based on leaf size and possible break points. // It does not force leaf size based on width. // So long leaf-string width can not depend on their printing context... // // The suffix like "+[dd chars]" is 11 chars. // 12345678901 let suffixLength = 11 // turning point suffix length let prefixMinLength = 12 // arbitrary. If print width is reduced, want to print a minimum of information on strings... let prefixLength = max (width - 2 (*quotes*) - suffixLength) prefixMinLength "\"" + (str.Substring(0,prefixLength)) + "\"" + "+[" + (str.Length - prefixLength).ToString() + " chars]" // -------------------------------------------------------------------- // pprinter: anyL // -------------------------------------------------------------------- type Precedence = | BracketIfTupleOrNotAtomic = 2 | BracketIfTuple = 3 | NeverBracket = 4 // In fsi.exe, certain objects are not printed for top-level bindings. [] type ShowMode = | ShowAll | ShowTopLevelBinding // polymorphic and inner recursion limitations prevent us defining polyL in the recursive loop let polyL bindingFlags (objL: ShowMode -> int -> Precedence -> ValueInfo -> obj -> Layout) showMode i prec (x:'a) (* x could be null *) = objL showMode i prec (getValueInfo bindingFlags (x:'a)) (box x) let anyL showMode bindingFlags (opts:FormatOptions) (x:'a) = // showMode = ShowTopLevelBinding on the outermost expression when called from fsi.exe, // This allows certain outputs, e.g. objects that would print as to be suppressed, etc. See 4343. // Calls to layout proper sub-objects should pass showMode = ShowAll. // Precedences to ensure we add brackets in the right places // Keep a record of objects encountered along the way let path = Dictionary(10,HashIdentity.Reference) // Roughly count the "nodes" printed, e.g. leaf items and inner nodes, but not every bracket and comma. let size = ref opts.PrintSize let exceededPrintSize() = !size<=0 let countNodes n = if !size > 0 then size := !size - n else () (* no need to keep decrementing (and avoid wrap around) *) let stopShort _ = exceededPrintSize() // for unfoldL // Recursive descent let rec objL depthLim prec (x:obj) = polyL bindingFlags objWithReprL ShowAll depthLim prec x (* showMode for inner expr *) and sameObjL depthLim prec (x:obj) = polyL bindingFlags objWithReprL showMode depthLim prec x (* showMode preserved *) and objWithReprL showMode depthLim prec (info:ValueInfo) (x:obj) (* x could be null *) = try if depthLim<=0 || exceededPrintSize() then wordL "..." else match x with | null -> reprL showMode (depthLim-1) prec info x | _ -> if (path.ContainsKey(x)) then wordL "..." else path.Add(x,0); let res = // Lazy values. VS2008 used StructuredFormatDisplayAttribute to show via ToString. Dev10 (no attr) needs a special case. let ty = x.GetType() if ty.IsGenericType && ty.GetGenericTypeDefinition() = typedefof> then Some (wordL (x.ToString())) else // Try the StructuredFormatDisplayAttribute extensibility attribute match x.GetType().GetCustomAttributes (typeof, true) with | null | [| |] -> None | res -> let attr = (res.[0] :?> StructuredFormatDisplayAttribute) let txt = attr.Value if txt = null || txt.Length <= 1 then None else let p1 = txt.IndexOf ("{", StringComparison.Ordinal) let p2 = txt.LastIndexOf ("}", StringComparison.Ordinal) if p1 < 0 || p2 < 0 || p1+1 >= p2 then None else let preText = if p1 <= 0 then "" else txt.[0..p1-1] let postText = if p2+1 >= txt.Length then "" else txt.[p2+1..] let prop = txt.[p1+1..p2-1] match catchExn (fun () -> getProperty x prop) with | Choice2Of2 e -> Some (wordL ("")) | Choice1Of2 alternativeObj -> try let alternativeObjL = match alternativeObj with // A particular rule is that if the alternative property // returns a string, we turn off auto-quoting and esaping of // the string, i.e. just treat the string as display text. // This allows simple implementations of // such as // // [] // type BigInt(signInt:int, v : BigNat) = // member x.StructuredDisplayString = x.ToString() // | :? string as s -> sepL s | _ -> sameObjL (depthLim-1) Precedence.BracketIfTuple alternativeObj countNodes 0 (* 0 means we do not count the preText and postText *) Some (leftL preText ^^ alternativeObjL ^^ rightL postText) with _ -> None #if RUNTIME #else #if COMPILER // FSharp.Compiler.dll: This is the PrintIntercepts extensibility point currently revealed by fsi.exe's AddPrinter let res = match res with | Some _ -> res | None -> let env = { new IEnvironment with member env.GetLayout(y) = objL (depthLim-1) Precedence.BracketIfTuple y member env.MaxColumns = opts.PrintLength member env.MaxRows = opts.PrintLength } opts.PrintIntercepts |> List.tryPick (fun intercept -> intercept env x) #endif #endif let res = match res with | Some res -> res | None -> reprL showMode (depthLim-1) prec info x path .Remove(x) |> ignore; res with e -> countNodes 1 wordL ("Error: " + e.Message) and recdAtomicTupleL depthLim recd = // tuples up args to UnionConstruction or ExceptionConstructor. no node count. match recd with | [(_,x)] -> objL depthLim Precedence.BracketIfTupleOrNotAtomic x | txs -> leftL "(" ^^ compactCommaListL (List.map (snd >> objL depthLim Precedence.BracketIfTuple) txs) ^^ rightL ")" and bracketIfL b basicL = if b then (leftL "(") ^^ basicL ^^ (rightL ")") else basicL and reprL showMode depthLim prec repr x (* x could be null *) = let showModeFilter lay = match showMode with ShowAll -> lay | ShowTopLevelBinding -> emptyL match repr with | TupleValue vals -> let basicL = sepListL (rightL ",") (List.map (objL depthLim Precedence.BracketIfTuple ) vals) bracketIfL (prec <= Precedence.BracketIfTuple) basicL | RecordValue items -> let itemL (name,x) = countNodes 1 // record labels are counted as nodes. [REVIEW: discussion under 4090]. (name,objL depthLim Precedence.BracketIfTuple x) makeRecordL (List.map itemL items) | ConstructorValue (constr,recd) when (* x is List. Note: "null" is never a valid list value. *) x<>null && Type.IsListType (x.GetType()) -> match constr with | "Cons" -> let (x,xs) = unpackCons recd let project xs = getListValueInfo bindingFlags xs let itemLs = objL depthLim Precedence.BracketIfTuple x :: boundedUnfoldL (objL depthLim Precedence.BracketIfTuple) project stopShort xs (opts.PrintLength - 1) makeListL itemLs | _ -> countNodes 1 wordL "[]" | ConstructorValue(nm,[]) -> countNodes 1 (wordL nm) | ConstructorValue(nm,recd) -> countNodes 1 (* e.g. Some (Some (Some (Some 2))) should count for 5 *) (wordL nm --- recdAtomicTupleL depthLim recd) |> bracketIfL (prec <= Precedence.BracketIfTupleOrNotAtomic) | ExceptionValue(ty,recd) -> countNodes 1 let name = ty.Name match recd with | [] -> (wordL name) | recd -> (wordL name --- recdAtomicTupleL depthLim recd) |> bracketIfL (prec <= Precedence.BracketIfTupleOrNotAtomic) | FunctionClosureValue ty -> // Q: should function printing include the ty.Name? It does not convey much useful info to most users, e.g. "clo@0_123". countNodes 1 wordL ("") |> showModeFilter | ObjectValue(obj) -> match obj with | null -> (countNodes 1; nullL) | _ -> let ty = obj.GetType() match obj with | :? string as s -> countNodes 1 #if COMPILER if s.Length + 2(*quotes*) <= opts.StringLimit then // With the quotes, it fits within the limit. wordL (formatString s) else // When a string is considered too long to print, there is a choice: what to print? // a) -- follows // b) -- follows and gives just the length // c) "abcdefg"+[n chars] -- gives a prefix and the remaining chars wordL (formatStringInWidth opts.StringLimit s) #else wordL (formatString s) #endif | :? System.Array as arr -> match arr.Rank with | 1 -> let n = arr.Length let b1 = arr.GetLowerBound(0) let project depthLim = if depthLim=(b1+n) then None else Some (box (arr.GetValue(depthLim)),depthLim+1) let itemLs = boundedUnfoldL (objL depthLim Precedence.BracketIfTuple) project stopShort b1 opts.PrintLength makeArrayL (if b1 = 0 then itemLs else wordL("bound1="+string_of_int b1)::itemLs) | 2 -> let n1 = arr.GetLength(0) let n2 = arr.GetLength(1) let b1 = arr.GetLowerBound(0) let b2 = arr.GetLowerBound(1) let project2 x y = if x>=(b1+n1) || y>=(b2+n2) then None else Some (box (arr.GetValue(x,y)),y+1) let rowL x = boundedUnfoldL (objL depthLim Precedence.BracketIfTuple) (project2 x) stopShort b2 opts.PrintLength |> makeListL let project1 x = if x>=(b1+n1) then None else Some (x,x+1) let rowsL = boundedUnfoldL rowL project1 stopShort b1 opts.PrintLength makeArray2L (if b1=0 && b2 = 0 then rowsL else wordL("bound1=" + string_of_int b1)::wordL("bound2=" + string_of_int b2)::rowsL) | n -> makeArrayL [wordL("rank=" + string_of_int n)] // Format 'set' and 'map' nicely | _ when (let ty = obj.GetType() ty.IsGenericType && (ty.GetGenericTypeDefinition() = typedefof> || ty.GetGenericTypeDefinition() = typedefof>) ) -> let ty = obj.GetType() let word = if ty.GetGenericTypeDefinition() = typedefof> then "map" else "set" let possibleKeyValueL v = if word = "map" && (match v with null -> false | _ -> true) && v.GetType().IsGenericType && v.GetType().GetGenericTypeDefinition() = typedefof> then objL depthLim Precedence.BracketIfTuple (v.GetType().GetProperty("Key").GetValue(v, [| |]), v.GetType().GetProperty("Value").GetValue(v, [| |])) else objL depthLim Precedence.BracketIfTuple v let it = (obj :?> System.Collections.IEnumerable).GetEnumerator() try let itemLs = boundedUnfoldL possibleKeyValueL (fun () -> if it.MoveNext() then Some(it.Current,()) else None) stopShort () (1+opts.PrintLength/12) (wordL word --- makeListL itemLs) |> bracketIfL (prec <= Precedence.BracketIfTupleOrNotAtomic) finally match it with | :? System.IDisposable as e -> e.Dispose() | _ -> () | :? System.Collections.IEnumerable as ie -> let showContent = // do not display content of IQueryable since its execution may take significant time opts.ShowIEnumerable && (ie.GetType().GetInterfaces() |> Array.exists(fun ty -> ty.FullName = "System.Linq.IQueryable") |> not) if showContent then let word = "seq" let it = ie.GetEnumerator() try let itemLs = boundedUnfoldL (objL depthLim Precedence.BracketIfTuple) (fun () -> if it.MoveNext() then Some(it.Current,()) else None) stopShort () (1+opts.PrintLength/30) (wordL word --- makeListL itemLs) |> bracketIfL (prec <= Precedence.BracketIfTupleOrNotAtomic) finally match it with | :? System.IDisposable as e -> e.Dispose() | _ -> () else // Sequence printing is turned off for declared-values, and maybe be disabled to users. // There is choice here, what to print? or ... or ? // Also, in the declared values case, if the sequence is actually a known non-lazy type (list, array etc etc) we could print it. wordL "" |> showModeFilter | _ -> if showMode = ShowTopLevelBinding && typeUsesSystemObjectToString (obj.GetType()) then emptyL else countNodes 1 let basicL = LayoutOps.objL obj // This buries an obj in the layout, rendered at squash time via a leafFormatter. // If the leafFormatter was directly here, then layout leaves could store strings. match obj with | _ when opts.ShowProperties -> #if FX_ATLEAST_PORTABLE let props = ty.GetProperties(BindingFlags.Instance ||| BindingFlags.Public) #else let props = ty.GetProperties(BindingFlags.GetField ||| BindingFlags.Instance ||| BindingFlags.Public) #endif // massively reign in deep printing of properties let nDepth = depthLim/10 #if FX_ATLEAST_PORTABLE System.Array.Sort((props),{ new System.Collections.Generic.IComparer with member this.Compare(p1,p2) = compare (p1.Name) (p2.Name) } ); #else System.Array.Sort((props:>System.Array),{ new System.Collections.IComparer with member this.Compare(p1,p2) = compare ((p1 :?> PropertyInfo).Name) ((p2 :?> PropertyInfo).Name) } ); #endif if props.Length = 0 || (nDepth <= 0) then basicL else basicL --- (props |> Array.toList |> List.map (fun p -> (p.Name,(try Some (objL nDepth Precedence.BracketIfTuple (getProperty obj p.Name)) with _ -> None))) |> makePropertiesL) | _ -> basicL | UnitValue -> countNodes 1; measureL polyL bindingFlags objWithReprL showMode opts.PrintDepth Precedence.BracketIfTuple x // -------------------------------------------------------------------- // pprinter: leafFormatter // -------------------------------------------------------------------- #if Suggestion4299 // See bug 4299. Suppress FSI_dddd+ from fsi printer. let fixupForInteractiveFSharpClassesWithNoToString obj (text:string) = // Given obj:T. // If T is a nested type inside a parent type called FSI_dddd, then it looks like an F# Interactive type. // Further, if the .ToString() text starts with "FSI_dddd+T" then it looks like it's the default ToString. // A better test: it is default ToString if the MethodInfo.DeclaringType is System.Object. // In this case, replace "FSI_dddd+T" by "T". // assert(obj <> null) let fullName = obj.GetType().FullName // e.g. "FSI_0123+Name" let name = obj.GetType().Name // e.g. "Name" let T = obj.GetType() if text.StartsWith(fullName) then // text could be a default .ToString() since it starts with the FullName of the type. More checks... if T.IsNested && T.DeclaringType.Name.StartsWith("FSI_") && // Name has "FSI_" which is T.DeclaringType.Name.Substring(4) |> Seq.forall System.Char.IsDigit // followed by digits? then name ^ text.Substring(fullName.Length) // replace fullName by name at start of text else text else text #endif let leafFormatter (opts:FormatOptions) (obj :obj) = match obj with | null -> "null" | :? double as d -> let s = d.ToString(opts.FloatingPointFormat,opts.FormatProvider) if System.Double.IsNaN(d) then "nan" elif System.Double.IsNegativeInfinity(d) then "-infinity" elif System.Double.IsPositiveInfinity(d) then "infinity" elif opts.FloatingPointFormat.[0] = 'g' && String.forall(fun c -> System.Char.IsDigit(c) || c = '-') s then s + ".0" else s | :? single as d -> (if System.Single.IsNaN(d) then "nan" elif System.Single.IsNegativeInfinity(d) then "-infinity" elif System.Single.IsPositiveInfinity(d) then "infinity" elif opts.FloatingPointFormat.Length >= 1 && opts.FloatingPointFormat.[0] = 'g' && float32(System.Int32.MinValue) < d && d < float32(System.Int32.MaxValue) && float32(int32(d)) = d then (System.Convert.ToInt32 d).ToString(opts.FormatProvider) + ".0" else d.ToString(opts.FloatingPointFormat,opts.FormatProvider)) + "f" | :? System.Decimal as d -> d.ToString("g",opts.FormatProvider) + "M" | :? uint64 as d -> d.ToString(opts.FormatProvider) + "UL" | :? int64 as d -> d.ToString(opts.FormatProvider) + "L" | :? int32 as d -> d.ToString(opts.FormatProvider) | :? uint32 as d -> d.ToString(opts.FormatProvider) + "u" | :? int16 as d -> d.ToString(opts.FormatProvider) + "s" | :? uint16 as d -> d.ToString(opts.FormatProvider) + "us" | :? sbyte as d -> d.ToString(opts.FormatProvider) + "y" | :? byte as d -> d.ToString(opts.FormatProvider) + "uy" | :? nativeint as d -> d.ToString() + "n" | :? unativeint as d -> d.ToString() + "un" | :? bool as b -> (if b then "true" else "false") | :? char as c -> "\'" + formatChar true c + "\'" | _ -> try let text = obj.ToString() //Suggestion4299. Not yet fixed. //#if COMPILER // let text = fixupForInteractiveFSharpClassesWithNoToString obj text //#endif text with e -> // If a .ToString() call throws an exception, catch it and use the message as the result. // This may be informative, e.g. division by zero etc... "" let any_to_layout opts x = anyL ShowAll BindingFlags.Public opts x let squash_layout opts l = // Print width = 0 implies 1D layout, no squash if opts.PrintWidth = 0 then l else l |> squashTo (opts.PrintWidth,leafFormatter opts) let output_layout opts oc l = l |> squash_layout opts |> outL opts.AttributeProcessor (leafFormatter opts) oc let layout_to_string opts l = l |> squash_layout opts |> showL opts (leafFormatter opts) let output_any_ex opts oc x = x |> any_to_layout opts |> output_layout opts oc let output_any oc x = output_any_ex FormatOptions.Default oc x let layout_as_string opts x = x |> any_to_layout opts |> layout_to_string opts let any_to_string x = layout_as_string FormatOptions.Default x #if RUNTIME let internal anyToStringForPrintf opts (bindingFlags:BindingFlags) x = x |> anyL ShowAll bindingFlags opts |> layout_to_string opts #endif #if COMPILER /// Called let fsi_any_to_layout opts x = anyL ShowTopLevelBinding BindingFlags.Public opts x #endif fsharp-3.0.34/src/utils/TaggedCollections.fsi0000775000175000017500000002564212260314606020130 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// This namespace contains FSharp.PowerPack extensions for the F# collection types namespace Internal.Utilities.Collections.Tagged open System open System.Collections.Generic /// Immutable sets based on binary trees, default tag /// Immutable sets where a constraint tag carries information about the class of key-comparer being used. [] type internal Set<'T,'ComparerTag> when 'ComparerTag :> IComparer<'T> = /// A useful shortcut for Set.add. Note this operation prodcues a new set /// and does not mutate the original set. The new set will share many storage /// nodes with the original. See the Set module for further operations on sets. member Add : 'T -> Set<'T,'ComparerTag> /// A useful shortcut for Set.remove. Note this operation produces a new set /// and does not mutate the original set. The new set will share many storage /// nodes with the original. See the Set module for further operations on sets. member Remove : 'T -> Set<'T,'ComparerTag> /// Return the number of elements in the set member Count : int /// A useful shortcut for Set.contains. See the Set module for further operations on sets. member Contains : 'T -> bool /// A useful shortcut for Set.isEmpty. See the Set module for further operations on sets. member IsEmpty : bool /// Apply the given function to each binding in the collection member Iterate : ('T -> unit) -> unit /// Apply the given accumulating function to all the elements of the set member Fold : ('T -> 'State -> 'State) -> 'State -> 'State /// Build two new sets, one containing the elements for which the given predicate returns 'true', /// and the other the remaining elements. member Partition: predicate:('T -> bool) -> Set<'T,'ComparerTag> * Set<'T,'ComparerTag> /// Return a new collection containing only the elements of the collection /// for which the given predicate returns "true" member Filter: predicate:('T -> bool) -> Set<'T,'ComparerTag> /// Test if any element of the collection satisfies the given predicate. /// If the input function is f and the elements are i0...iN then computes /// p i0 or ... or p iN. member Exists: predicate:('T -> bool) -> bool /// Test if all elements of the collection satisfy the given predicate. /// If the input function is f and the elements are i0...iN and j0...jN then /// computes p i0 && ... && p iN. member ForAll: predicate:('T -> bool) -> bool /// A set based on the given comparer containing the given initial elements static member Create: 'ComparerTag * seq<'T> -> Set<'T,'ComparerTag> /// The empty set based on the given comparer static member Empty: 'ComparerTag -> Set<'T,'ComparerTag> /// A singleton set based on the given comparison operator static member Singleton: 'ComparerTag * 'T -> Set<'T,'ComparerTag> /// Compares two sets and returns true if they are equal or false otherwise static member Equality : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> bool /// Compares a and b and returns 1 if a > b, -1 if b < a and 0 if a = b static member Compare : a:Set<'T,'ComparerTag> * b:Set<'T,'ComparerTag> -> int /// Return a new set with the elements of the second set removed from the first. static member (-) : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> Set<'T,'ComparerTag> /// Compute the union of the two sets. static member (+) : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> Set<'T,'ComparerTag> /// Compute the intersection of the two sets. static member Intersection : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> Set<'T,'ComparerTag> /// Compute the union of the two sets. static member Union : Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> Set<'T,'ComparerTag> /// Return a new set with the elements of the second set removed from the first. static member Difference: Set<'T,'ComparerTag> * Set<'T,'ComparerTag> -> Set<'T,'ComparerTag> /// The number of elements in the set member Choose : 'T /// Returns the lowest element in the set according to the ordering being used for the set member MinimumElement: 'T /// Returns the highest element in the set according to the ordering being used for the set member MaximumElement: 'T /// Evaluates to "true" if all elements of the second set are in the first member IsSubsetOf: Set<'T,'ComparerTag> -> bool /// Evaluates to "true" if all elements of the first set are in the second member IsSupersetOf: Set<'T,'ComparerTag> -> bool /// The elements of the set as a list. member ToList : unit -> 'T list /// The elements of the set as an array. member ToArray: unit -> 'T array interface ICollection<'T> interface IEnumerable<'T> interface System.Collections.IEnumerable interface System.IComparable override Equals : obj -> bool type internal Set<'T> = Set<'T, IComparer<'T>> /// Immutable maps. Keys are ordered by construction function specified /// when creating empty maps or by F# structural comparison if no /// construction function is specified. /// /// /// Maps based on structural comparison are /// efficient for small keys. They are not a suitable choice if keys are recursive data structures /// or require non-structural comparison semantics. /// /// Immutable maps. A constraint tag carries information about the class of key-comparers being used. [] type internal Map<'Key,'Value,'ComparerTag> when 'ComparerTag :> IComparer<'Key> = /// Return a new map with the binding added to the given map. member Add: 'Key * 'Value -> Map<'Key,'Value,'ComparerTag> /// Return true if there are no bindings in the map. member IsEmpty: bool //member Comparer : 'ComparerTag /// The empty map, and use the given comparer comparison function for all operations associated /// with any maps built from this map. static member Empty: 'ComparerTag -> Map<'Key,'Value,'ComparerTag> static member FromList : 'ComparerTag * ('Key * 'Value) list -> Map<'Key,'Value,'ComparerTag> /// Build a map that contains the bindings of the given IEnumerable /// and where comparison of elements is based on the given comparison function static member Create: 'ComparerTag * seq<'Key * 'Value> -> Map<'Key,'Value,'ComparerTag> /// Test is an element is in the domain of the map member ContainsKey: 'Key -> bool /// The number of bindings in the map member Count: int /// Lookup an element in the map. Raise KeyNotFoundException if no binding /// exists in the map. member Item : 'Key -> 'Value with get /// Search the map looking for the first element where the given function returns a Some value member First: ('Key -> 'Value -> 'T option) -> 'T option /// Return true if the given predicate returns true for all of the /// bindings in the map. Always returns true if the map is empty. member ForAll: ('Key -> 'Value -> bool) -> bool /// Return true if the given predicate returns true for one of the /// bindings in the map. Always returns false if the map is empty. member Exists: ('Key -> 'Value -> bool) -> bool /// Build a new map containing the bindings for which the given predicate returns 'true'. member Filter: ('Key -> 'Value -> bool) -> Map<'Key,'Value,'ComparerTag> /// Fold over the bindings in the map. member Fold: folder:('Key -> 'Value -> 'State -> 'State) -> 'State -> 'State /// Given the start and end points of a key range, /// Fold over the bindings in the map that are in the range, /// and the end points are included if present (the range is considered a closed interval). member FoldSection: 'Key -> 'Key -> ('Key -> 'Value -> 'State -> 'State) -> 'State -> 'State /// Fold over the bindings in the map. member FoldAndMap: ('Key -> 'Value -> 'State -> 'T * 'State) -> 'State -> Map<'Key,'T,'ComparerTag> * 'State /// Apply the given function to each binding in the dictionary member Iterate: action:('Key -> 'Value -> unit) -> unit /// Build a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. The index passed to the /// function indicates the index of element being transformed. member Map: mapping:('Key -> 'Value -> 'T) -> Map<'Key,'T,'ComparerTag> /// Build a new collection whose elements are the results of applying the given function /// to each of the elements of the collection. member MapRange: mapping:('Value -> 'T) -> Map<'Key,'T,'ComparerTag> /// Build two new maps, one containing the bindings for which the given predicate returns 'true', /// and the other the remaining bindings. member Partition: ('Key -> 'Value -> bool) -> Map<'Key,'Value,'ComparerTag> * Map<'Key,'Value,'ComparerTag> /// Remove an element from the domain of the map. No exception is raised if the element is not present. member Remove: 'Key -> Map<'Key,'Value,'ComparerTag> /// Lookup an element in the map, returning a Some value if the element is in the domain /// of the map and None if not. member TryFind: 'Key -> 'Value option /// The elements of the set as a list. member ToList : unit -> ('Key * 'Value) list /// The elements of the set as an array member ToArray: unit -> ('Key * 'Value) array interface IEnumerable> interface System.Collections.IEnumerable interface System.IComparable override Equals : obj -> bool type internal Map<'Key,'Value> = Map<'Key, 'Value, IComparer<'Key>> fsharp-3.0.34/src/utils/prim-parsing.fs0000775000175000017500000006155712260314606017002 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Text.Parsing open Internal.Utilities open Internal.Utilities.Text.Lexing open System open System.Collections.Generic exception RecoverableParseError exception Accept of obj [] type internal IParseState(ruleStartPoss:Position[],ruleEndPoss:Position[],lhsPos:Position[],ruleValues:obj[],lexbuf:LexBuffer) = member p.LexBuffer = lexbuf member p.InputRange n = ruleStartPoss.[n-1], ruleEndPoss.[n-1]; member p.InputStartPosition n = ruleStartPoss.[n-1] member p.InputEndPosition n = ruleEndPoss.[n-1]; member p.ResultStartPosition = lhsPos.[0] member p.ResultEndPosition = lhsPos.[1]; member p.GetInput n = ruleValues.[n-1]; member p.ResultRange = (lhsPos.[0], lhsPos.[1]); member p.RaiseError() = raise RecoverableParseError (* NOTE: this binding tests the fairly complex logic associated with an object expression implementing a generic abstract method *) //------------------------------------------------------------------------- // This context is passed to the error reporter when a syntax error occurs [] type internal ParseErrorContext<'tok> (//lexbuf: LexBuffer<_>, stateStack:int list, parseState: IParseState, reduceTokens: int list, currentToken: 'tok option, reducibleProductions: int list list, shiftableTokens: int list , message : string) = //member x.LexBuffer = lexbuf member x.StateStack = stateStack member x.ReduceTokens = reduceTokens member x.CurrentToken = currentToken member x.ParseState = parseState member x.ReducibleProductions = reducibleProductions member x.ShiftTokens = shiftableTokens member x.Message = message //------------------------------------------------------------------------- // This is the data structure emitted as code by FSYACC. type internal Tables<'tok> = { reductions: (IParseState -> obj)[]; endOfInputTag: int; tagOfToken: 'tok -> int; dataOfToken: 'tok -> obj; actionTableElements: uint16[]; actionTableRowOffsets: uint16[]; reductionSymbolCounts: uint16[]; immediateActions: uint16[]; gotos: uint16[]; sparseGotoTableRowOffsets: uint16[]; stateToProdIdxsTableElements: uint16[]; stateToProdIdxsTableRowOffsets: uint16[]; productionToNonTerminalTable: uint16[]; /// For fsyacc.exe, this entry is filled in by context from the generated parser file. If no 'parse_error' function /// is defined by the user then ParseHelpers.parse_error is used by default (ParseHelpers is opened /// at the top of the generated parser file) parseError: ParseErrorContext<'tok> -> unit; numTerminals: int; tagOfErrorTerminal: int } //------------------------------------------------------------------------- // An implementation of stacks. // This type is in System.dll so for the moment we can't use it in FSharp.Core.dll //type Stack<'a> = System.Collections.Generic.Stack<'a> type Stack<'a>(n) = let mutable contents = Array.zeroCreate<'a>(n) let mutable count = 0 member buf.Ensure newSize = let oldSize = contents.Length if newSize > oldSize then let old = contents contents <- Array.zeroCreate (max newSize (oldSize * 2)); Array.blit old 0 contents 0 count; member buf.Count = count member buf.Pop() = count <- count - 1 member buf.Peep() = contents.[count - 1] member buf.Top(n) = [ for x in contents.[max 0 (count-n)..count - 1] -> x ] |> List.rev member buf.Push(x) = buf.Ensure(count + 1); contents.[count] <- x; count <- count + 1 member buf.IsEmpty = (count = 0) member buf.PrintStack() = for i = 0 to (count - 1) do System.Console.Write("{0}{1}",(contents.[i]),if i=count-1 then ":" else "-") #if DEBUG module Flags = let mutable debug = false #endif module internal Implementation = // Definitions shared with fsyacc let anyMarker = 0xffff let shiftFlag = 0x0000 let reduceFlag = 0x4000 let errorFlag = 0x8000 let acceptFlag = 0xc000 let actionMask = 0xc000 let actionValue action = action &&& (~~~ actionMask) let actionKind action = action &&& actionMask //------------------------------------------------------------------------- // Read the tables written by FSYACC. type AssocTable(elemTab:uint16[], offsetTab:uint16[]) = #if OLD_CACHE let cache = new Dictionary(2000) #else let cacheSize = 7919 // the 1000'th prime // Use a simpler hash table with faster lookup, but only one // hash bucket per key. let cache = Array.zeroCreate (cacheSize * 2) #endif member t.ReadAssoc (minElemNum,maxElemNum,defaultValueOfAssoc,keyToFind) = // do a binary chop on the table let elemNumber : int = (minElemNum+maxElemNum)/2 if elemNumber = maxElemNum then defaultValueOfAssoc else let x = int elemTab.[elemNumber*2] if keyToFind = x then int elemTab.[elemNumber*2+1] elif keyToFind < x then t.ReadAssoc (minElemNum ,elemNumber,defaultValueOfAssoc,keyToFind) else t.ReadAssoc (elemNumber+1,maxElemNum,defaultValueOfAssoc,keyToFind) member t.Read(rowNumber,keyToFind) = // First check the sparse lookaside table // Performance note: without this lookaside table the binary chop in ReadAssoc // takes up around 10% of of parsing time // for parsing intensive samples such as the bootstrapped F# compiler. // // Note: using a .NET Dictionary for this int -> int table looks like it could be sub-optimal. // Some other better sparse lookup table may be better. assert (rowNumber < 0x10000) assert (keyToFind < 0x10000) let cacheKey = (rowNumber <<< 16) ||| keyToFind #if OLD_CACHE let mutable res = 0 let ok = cache.TryGetValue(cacheKey, &res) if ok then res else #else let cacheIdx = int32 (uint32 cacheKey % uint32 cacheSize) let cacheKey2 = cache.[cacheIdx*2] let v = cache.[cacheIdx*2+1] if cacheKey = cacheKey2 then v else #endif let headOfTable = int offsetTab.[rowNumber] let firstElemNumber = headOfTable + 1 let numberOfElementsInAssoc = int elemTab.[headOfTable*2] let defaultValueOfAssoc = int elemTab.[headOfTable*2+1] let res = t.ReadAssoc (firstElemNumber,firstElemNumber+numberOfElementsInAssoc,defaultValueOfAssoc,keyToFind) #if OLD_CACHE cache.[cacheKey] <- res #else cache.[cacheIdx*2] <- cacheKey cache.[cacheIdx*2+1] <- res #endif res // Read all entries in the association table // Used during error recovery to find all valid entries in the table member x.ReadAll(n) = let headOfTable = int offsetTab.[n] let firstElemNumber = headOfTable + 1 let numberOfElementsInAssoc = int32 elemTab.[headOfTable*2] let defaultValueOfAssoc = int elemTab.[headOfTable*2+1] [ for i in firstElemNumber .. (firstElemNumber+numberOfElementsInAssoc-1) -> (int elemTab.[i*2], int elemTab.[i*2+1]) ], defaultValueOfAssoc type IdxToIdxListTable(elemTab:uint16[], offsetTab:uint16[]) = // Read all entries in a row of the table member x.ReadAll(n) = let headOfTable = int offsetTab.[n] let firstElemNumber = headOfTable + 1 let numberOfElements = int32 elemTab.[headOfTable] [ for i in firstElemNumber .. (firstElemNumber+numberOfElements-1) -> int elemTab.[i] ] //------------------------------------------------------------------------- // interpret the tables emitted by FSYACC. [] [] type ValueInfo = val value: obj val startPos: Position val endPos: Position new(value,startPos,endPos) = { value=value; startPos=startPos;endPos=endPos } let interpret (tables: Tables<'tok>) lexer (lexbuf : LexBuffer<_>) initialState = #if DEBUG if Flags.debug then System.Console.WriteLine("\nParser: interpret tables"); #endif let stateStack : Stack = new Stack<_>(100) stateStack.Push(initialState); let valueStack = new Stack(100) let mutable haveLookahead = false let mutable lookaheadToken = Unchecked.defaultof<'tok> let mutable lookaheadEndPos = Unchecked.defaultof let mutable lookaheadStartPos = Unchecked.defaultof let mutable finished = false // After an error occurs, we suppress errors until we've shifted three tokens in a row. let mutable errorSuppressionCountDown = 0 // When we hit the end-of-file we don't fail straight away but rather keep permitting shift // and reduce against the last token in the token stream 20 times or until we've accepted // or exhausted the stack. This allows error recovery rules of the form // input : realInput EOF | realInput error EOF | error EOF // where consuming one EOF to trigger an error doesn't result in overall parse failure // catastrophe and the loss of intermediate results. // let mutable inEofCountDown = false let mutable eofCountDown = 20 // Number of EOFs to supply at the end for error recovery // The 100 here means a maximum of 100 elements for each rule let ruleStartPoss = (Array.zeroCreate 100 : Position[]) let ruleEndPoss = (Array.zeroCreate 100 : Position[]) let ruleValues = (Array.zeroCreate 100 : obj[]) let lhsPos = (Array.zeroCreate 2 : Position[]) let reductions = tables.reductions let actionTable = new AssocTable(tables.actionTableElements, tables.actionTableRowOffsets) let gotoTable = new AssocTable(tables.gotos, tables.sparseGotoTableRowOffsets) let stateToProdIdxsTable = new IdxToIdxListTable(tables.stateToProdIdxsTableElements, tables.stateToProdIdxsTableRowOffsets) let parseState = new IParseState(ruleStartPoss,ruleEndPoss,lhsPos,ruleValues,lexbuf) #if DEBUG let report haveLookahead lookaheadToken = if haveLookahead then sprintf "%+A" lookaheadToken else "[TBC]" #endif // Pop the stack until we can shift the 'error' token. If 'tokenOpt' is given // then keep popping until we can shift both the 'error' token and the token in 'tokenOpt'. // This is used at end-of-file to make sure we can shift both the 'error' token and the 'EOF' token. let rec popStackUntilErrorShifted(tokenOpt) = // Keep popping the stack until the "error" terminal is shifted #if DEBUG if Flags.debug then System.Console.WriteLine("popStackUntilErrorShifted"); #endif if stateStack.IsEmpty then #if DEBUG if Flags.debug then System.Console.WriteLine("state stack empty during error recovery - generating parse error"); #endif failwith "parse error"; let currState = stateStack.Peep() #if DEBUG if Flags.debug then System.Console.WriteLine("In state {0} during error recovery", currState); #endif let action = actionTable.Read(currState, tables.tagOfErrorTerminal) if actionKind action = shiftFlag && (match tokenOpt with | None -> true | Some(token) -> let nextState = actionValue action actionKind (actionTable.Read(nextState, tables.tagOfToken(token))) = shiftFlag) then #if DEBUG if Flags.debug then System.Console.WriteLine("shifting error, continuing with error recovery"); #endif let nextState = actionValue action // The "error" non terminal needs position information, though it tends to be unreliable. // Use the StartPos/EndPos from the lex buffer valueStack.Push(ValueInfo(box (), lexbuf.StartPos, lexbuf.EndPos)); stateStack.Push(nextState) else if valueStack.IsEmpty then failwith "parse error"; #if DEBUG if Flags.debug then System.Console.WriteLine("popping stack during error recovery"); #endif valueStack.Pop(); stateStack.Pop(); popStackUntilErrorShifted(tokenOpt) while not finished do if stateStack.IsEmpty then finished <- true else let state = stateStack.Peep() #if DEBUG if Flags.debug then (Console.Write("{0} value(state), state ",valueStack.Count); stateStack.PrintStack()) #endif let action = let immediateAction = int tables.immediateActions.[state] if not (immediateAction = anyMarker) then // Action has been pre-determined, no need to lookahead // Expecting it to be a Reduce action on a non-fakeStartNonTerminal ? immediateAction else // Lookahead required to determine action if not haveLookahead then if lexbuf.IsPastEndOfStream then // When the input runs out, keep supplying the last token for eofCountDown times if eofCountDown>0 then haveLookahead <- true eofCountDown <- eofCountDown - 1 inEofCountDown <- true else haveLookahead <- false else lookaheadToken <- lexer lexbuf lookaheadStartPos <- lexbuf.StartPos lookaheadEndPos <- lexbuf.EndPos haveLookahead <- true; let tag = if haveLookahead then tables.tagOfToken lookaheadToken else tables.endOfInputTag // printf "state %d\n" state actionTable.Read(state,tag) let kind = actionKind action if kind = shiftFlag then ( if errorSuppressionCountDown > 0 then errorSuppressionCountDown <- errorSuppressionCountDown - 1; #if DEBUG if Flags.debug then Console.WriteLine("shifting, reduced errorRecoverylevel to {0}\n", errorSuppressionCountDown); #endif let nextState = actionValue action if not haveLookahead then failwith "shift on end of input!"; let data = tables.dataOfToken lookaheadToken valueStack.Push(ValueInfo(data, lookaheadStartPos, lookaheadEndPos)); stateStack.Push(nextState); #if DEBUG if Flags.debug then Console.WriteLine("shift/consume input {0}, shift to state {1}", report haveLookahead lookaheadToken, nextState); #endif haveLookahead <- false ) elif kind = reduceFlag then let prod = actionValue action let reduction = reductions.[prod] let n = int tables.reductionSymbolCounts.[prod] // pop the symbols, populate the values and populate the locations #if DEBUG if Flags.debug then Console.Write("reduce popping {0} values/states, lookahead {1}", n, report haveLookahead lookaheadToken); #endif for i = 0 to n - 1 do if valueStack.IsEmpty then failwith "empty symbol stack"; let topVal = valueStack.Peep() valueStack.Pop(); stateStack.Pop(); ruleValues.[(n-i)-1] <- topVal.value; ruleStartPoss.[(n-i)-1] <- topVal.startPos; ruleEndPoss.[(n-i)-1] <- topVal.endPos; if i = 0 then lhsPos.[1] <- topVal.endPos; if i = n - 1 then lhsPos.[0] <- topVal.startPos // Use the lookahead token to populate the locations if the rhs is empty if n = 0 then if haveLookahead then lhsPos.[0] <- lookaheadStartPos; lhsPos.[1] <- lookaheadEndPos; else lhsPos.[0] <- lexbuf.StartPos; lhsPos.[1] <- lexbuf.EndPos; try // printf "reduce %d\n" prod; let redResult = reduction parseState valueStack.Push(ValueInfo(redResult, lhsPos.[0], lhsPos.[1])); let currState = stateStack.Peep() let newGotoState = gotoTable.Read(int tables.productionToNonTerminalTable.[prod], currState) stateStack.Push(newGotoState) #if DEBUG if Flags.debug then Console.WriteLine(" goto state {0}", newGotoState) #endif with | Accept res -> finished <- true; valueStack.Push(ValueInfo(res, lhsPos.[0], lhsPos.[1])) | RecoverableParseError -> #if DEBUG if Flags.debug then Console.WriteLine("RecoverableParseErrorException...\n"); #endif popStackUntilErrorShifted(None); // User code raised a Parse_error. Don't report errors again until three tokens have been shifted errorSuppressionCountDown <- 3 elif kind = errorFlag then ( #if DEBUG if Flags.debug then Console.Write("ErrorFlag... "); #endif // Silently discard inputs and don't report errors // until three tokens in a row have been shifted #if DEBUG if Flags.debug then printfn "error on token '%s' " (report haveLookahead lookaheadToken); #endif if errorSuppressionCountDown > 0 then // If we're in the end-of-file count down then we're very keen to 'Accept'. // We can only do this by repeatedly popping the stack until we can shift both an 'error' token // and an EOF token. if inEofCountDown && eofCountDown < 10 then #if DEBUG if Flags.debug then printfn "poppin stack, lokking to shift both 'error' and that token, during end-of-file error recovery" ; #endif popStackUntilErrorShifted(if haveLookahead then Some(lookaheadToken) else None); // If we don't haveLookahead then the end-of-file count down is over and we have no further options. if not haveLookahead then failwith "parse error: unexpected end of file" #if DEBUG if Flags.debug then printfn "discarding token '%s' during error suppression" (report haveLookahead lookaheadToken); #endif // Discard the token haveLookahead <- false // Try again to shift three tokens errorSuppressionCountDown <- 3 else ( let currentToken = if haveLookahead then Some(lookaheadToken) else None let actions,defaultAction = actionTable.ReadAll(state) let explicit = Set.ofList [ for (tag,_action) in actions -> tag ] let shiftableTokens = [ for (tag,action) in actions do if (actionKind action) = shiftFlag then yield tag if actionKind defaultAction = shiftFlag then for tag in 0 .. tables.numTerminals-1 do if not (explicit.Contains(tag)) then yield tag ] in let stateStack = stateStack.Top(12) in let reducibleProductions = [ for state in stateStack do yield stateToProdIdxsTable.ReadAll(state) ] let reduceTokens = [ for (tag,action) in actions do if actionKind(action) = reduceFlag then yield tag if actionKind(defaultAction) = reduceFlag then for tag in 0 .. tables.numTerminals-1 do if not (explicit.Contains(tag)) then yield tag ] in //let activeRules = stateStack |> List.iter (fun state -> let errorContext = new ParseErrorContext<'tok>(stateStack,parseState, reduceTokens,currentToken,reducibleProductions, shiftableTokens, "syntax error") tables.parseError(errorContext); popStackUntilErrorShifted(None); errorSuppressionCountDown <- 3; #if DEBUG if Flags.debug then System.Console.WriteLine("generated syntax error and shifted error token, haveLookahead = {0}\n", haveLookahead); #endif ) ) elif kind = acceptFlag then finished <- true #if DEBUG else if Flags.debug then System.Console.WriteLine("ALARM!!! drop through case in parser"); #endif done; // OK, we're done - read off the overall generated value valueStack.Peep().value type internal Tables<'tok> with member tables.Interpret (lexer,lexbuf,initialState) = Implementation.interpret tables lexer lexbuf initialState module internal ParseHelpers = let parse_error (_s:string) = () let parse_error_rich = (None : (ParseErrorContext<_> -> unit) option) fsharp-3.0.34/src/utils/prim-lexing.fs0000775000175000017500000003117612260314606016617 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "47" // recursive initialization of LexBuffer namespace Internal.Utilities.Text.Lexing open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open System.Collections.Generic // REVIEW: This type showed up on a parsing-intensive performance measurement. // REVIEW: Consider whether it can be smaller or can be a struct. type (* internal *) Position = { /// The file name index for the position, use fileOfFileIndex in range.fs to decode posFileIndex: int; /// The line number for the position posLineNum: int; /// The line number for the position in the original source file posOriginalLineNum : int; /// The absolute offset of the beginning of the line posStartOfLineOffset: int; /// The absolute offset of the column for the position posColumnOffset: int; } member x.FileIndex = x.posFileIndex member x.Line = x.posLineNum member x.OriginalLine = x.posOriginalLineNum member x.AbsoluteOffset = x.posColumnOffset member x.StartOfLine = x.posStartOfLineOffset member x.StartOfLineAbsoluteOffset = x.posStartOfLineOffset member x.Column = x.posColumnOffset - x.posStartOfLineOffset member pos.NextLine = { pos with posOriginalLineNum = pos.OriginalLine + 1; posLineNum = pos.Line+1; posStartOfLineOffset = pos.AbsoluteOffset } member pos.EndOfToken n = {pos with posColumnOffset=pos.posColumnOffset + n } member pos.ShiftColumnBy by = {pos with posColumnOffset = pos.posColumnOffset + by} member pos.ColumnMinusOne = { pos with posColumnOffset = pos.posStartOfLineOffset-1 } member pos.ApplyLineDirective (fileIdx, line) = {pos with posFileIndex = fileIdx; posStartOfLineOffset= pos.posColumnOffset; posLineNum=line }; static member Empty = { posFileIndex=0; posLineNum= 0; posOriginalLineNum = 0; posStartOfLineOffset= 0; posColumnOffset=0 } static member FirstLine fileIdx = { posFileIndex= fileIdx; posStartOfLineOffset=0; posColumnOffset=0; posOriginalLineNum = 0; posLineNum=1 } type internal LexBufferFiller<'Char> = (LexBuffer<'Char> -> unit) and [] (* internal *) LexBuffer<'Char>(filler: LexBufferFiller<'Char>) = let context = new Dictionary(1) let mutable buffer=[||]; /// number of valid charactes beyond bufferScanStart let mutable bufferMaxScanLength=0; /// count into the buffer when scanning let mutable bufferScanStart=0; /// number of characters scanned so far let mutable bufferScanLength=0; /// length of the scan at the last accepting state let mutable lexemeLength=0; /// action related to the last accepting state let mutable bufferAcceptAction=0; let mutable eof = false; let mutable startPos = Position.Empty ; let mutable endPos = Position.Empty // Throw away all the input besides the lexeme let discardInput () = let keep = Array.sub buffer bufferScanStart bufferScanLength let nkeep = keep.Length Array.blit keep 0 buffer 0 nkeep; bufferScanStart <- 0; bufferMaxScanLength <- nkeep member lexbuf.EndOfScan () : int = // Printf.eprintf "endOfScan, lexBuffer.lexemeLength = %d\n" lexBuffer.lexemeLength; if bufferAcceptAction < 0 then failwith "unrecognized input" // printf "endOfScan %d state %d on unconsumed input '%c' (%d)\n" a s (Char.chr inp) inp; // Printf.eprintf "accept, lexeme = %s\n" (lexeme lexBuffer); lexbuf.StartPos <- endPos; lexbuf.EndPos <- endPos.EndOfToken(lexbuf.LexemeLength); bufferAcceptAction member lexbuf.StartPos with get() = startPos and set b = startPos <- b member lexbuf.EndPos with get() = endPos and set b = endPos <- b member lexbuf.Lexeme = Array.sub buffer bufferScanStart lexemeLength member lexbuf.BufferLocalStore = (context :> IDictionary<_,_>) member lexbuf.LexemeLength with get() : int = lexemeLength and set v = lexemeLength <- v member lexbuf.Buffer with get() : 'Char[] = buffer and set v = buffer <- v member lexbuf.BufferMaxScanLength with get() = bufferMaxScanLength and set v = bufferMaxScanLength <- v member lexbuf.BufferScanLength with get() = bufferScanLength and set v = bufferScanLength <- v member lexbuf.BufferScanStart with get() : int = bufferScanStart and set v = bufferScanStart <- v member lexbuf.BufferAcceptAction with get() = bufferAcceptAction and set v = bufferAcceptAction <- v member lexbuf.RefillBuffer () = filler lexbuf static member LexemeString(lexbuf:LexBuffer) = new System.String(lexbuf.Buffer,lexbuf.BufferScanStart,lexbuf.LexemeLength) member lexbuf.IsPastEndOfStream with get() = eof and set(b) = eof <- b member lexbuf.DiscardInput () = discardInput () member x.BufferScanPos = bufferScanStart + bufferScanLength member lexbuf.EnsureBufferSize n = if lexbuf.BufferScanPos + n >= buffer.Length then let repl = Array.zeroCreate (lexbuf.BufferScanPos + n) Array.blit buffer bufferScanStart repl bufferScanStart bufferScanLength; buffer <- repl // A full type signature is required on this method because it is used at more specific types within its own scope static member FromFunction (f : 'Char[] * int * int -> int) : LexBuffer<'Char> = let extension= Array.zeroCreate 4096 let filler (lexBuffer: LexBuffer<'Char>) = let n = f (extension,0,extension.Length) lexBuffer.EnsureBufferSize n; Array.blit extension 0 lexBuffer.Buffer lexBuffer.BufferScanPos n; lexBuffer.BufferMaxScanLength <- lexBuffer.BufferScanLength + n new LexBuffer<'Char>(filler) // A full type signature is required on this method because it is used at more specific types within its own scope static member FromArray (s: 'Char[]) : LexBuffer<'Char> = let lexBuffer = new LexBuffer<'Char>(fun _ -> ()) let buffer = Array.copy s lexBuffer.Buffer <- buffer; lexBuffer.BufferMaxScanLength <- buffer.Length; lexBuffer static member FromChars (arr:char[]) = LexBuffer.FromArray arr module GenericImplFragments = let startInterpret(lexBuffer:LexBuffer)= lexBuffer.BufferScanStart <- lexBuffer.BufferScanStart + lexBuffer.LexemeLength; lexBuffer.BufferMaxScanLength <- lexBuffer.BufferMaxScanLength - lexBuffer.LexemeLength; lexBuffer.BufferScanLength <- 0; lexBuffer.LexemeLength <- 0; lexBuffer.BufferAcceptAction <- -1; let afterRefill (trans: uint16[][],sentinel,lexBuffer:LexBuffer,scanUntilSentinel,endOfScan,state,eofPos) = // end of file occurs if we couldn't extend the buffer if lexBuffer.BufferScanLength = lexBuffer.BufferMaxScanLength then let snew = int trans.[state].[eofPos] // == EOF if snew = sentinel then endOfScan() else if lexBuffer.IsPastEndOfStream then failwith "End of file on lexing stream"; lexBuffer.IsPastEndOfStream <- true; // printf "state %d --> %d on eof\n" state snew; scanUntilSentinel(lexBuffer,snew) else scanUntilSentinel(lexBuffer, state) let onAccept (lexBuffer:LexBuffer,a) = lexBuffer.LexemeLength <- lexBuffer.BufferScanLength; lexBuffer.BufferAcceptAction <- a; open GenericImplFragments [] type internal UnicodeTables(trans: uint16[] array, accept: uint16[]) = let sentinel = 255 * 256 + 255 let numUnicodeCategories = 30 let numLowUnicodeChars = 128 let numSpecificUnicodeChars = (trans.[0].Length - 1 - numLowUnicodeChars - numUnicodeCategories)/2 let lookupUnicodeCharacters (state,inp) = let inpAsInt = int inp // Is it a fast ASCII character? if inpAsInt < numLowUnicodeChars then int trans.[state].[inpAsInt] else // Search for a specific unicode character let baseForSpecificUnicodeChars = numLowUnicodeChars let rec loop i = if i >= numSpecificUnicodeChars then // OK, if we failed then read the 'others' entry in the alphabet, // which covers all Unicode characters not covered in other // ways let baseForUnicodeCategories = numLowUnicodeChars+numSpecificUnicodeChars*2 let unicodeCategory = System.Char.GetUnicodeCategory(inp) //System.Console.WriteLine("inp = {0}, unicodeCategory = {1}", [| box inp; box unicodeCategory |]); int trans.[state].[baseForUnicodeCategories + int32 unicodeCategory] else // This is the specific unicode character let c = char (int trans.[state].[baseForSpecificUnicodeChars+i*2]) //System.Console.WriteLine("c = {0}, inp = {1}, i = {2}", [| box c; box inp; box i |]); // OK, have we found the entry for a specific unicode character? if c = inp then int trans.[state].[baseForSpecificUnicodeChars+i*2+1] else loop(i+1) loop 0 let eofPos = numLowUnicodeChars + 2*numSpecificUnicodeChars + numUnicodeCategories let rec scanUntilSentinel(lexBuffer,state) = // Return an endOfScan after consuming the input let a = int accept.[state] if a <> sentinel then onAccept(lexBuffer,a) if lexBuffer.BufferScanLength = lexBuffer.BufferMaxScanLength then lexBuffer.DiscardInput(); lexBuffer.RefillBuffer (); // end of file occurs if we couldn't extend the buffer afterRefill (trans,sentinel,lexBuffer,scanUntilSentinel,lexBuffer.EndOfScan,state,eofPos) else // read a character - end the scan if there are no further transitions let inp = lexBuffer.Buffer.[lexBuffer.BufferScanPos] // Find the new state let snew = lookupUnicodeCharacters (state,inp) if snew = sentinel then lexBuffer.EndOfScan() else lexBuffer.BufferScanLength <- lexBuffer.BufferScanLength + 1; // printf "state %d --> %d on '%c' (%d)\n" s snew (char inp) inp; scanUntilSentinel(lexBuffer,snew) // Each row for the Unicode table has format // 128 entries for ASCII characters // A variable number of 2*UInt16 entries for SpecificUnicodeChars // 30 entries, one for each UnicodeCategory // 1 entry for EOF member tables.Interpret(initialState,lexBuffer : LexBuffer) = startInterpret(lexBuffer) scanUntilSentinel(lexBuffer, initialState) static member Create(trans,accept) = new UnicodeTables(trans,accept) fsharp-3.0.34/src/utils/HashMultiMap.fsi0000775000175000017500000000626712260314606017074 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities.Collections open System open System.Collections.Generic /// Hash tables, by default based on F# structural "hash" and (=) functions. /// The table may map a single key to multiple bindings. [] type internal HashMultiMap<'Key,'Value> = /// Create a new empty mutable HashMultiMap with the given key hash/equality functions new : comparer:IEqualityComparer<'Key> -> HashMultiMap<'Key,'Value> /// Create a new empty mutable HashMultiMap with an internal bucket array of the given approximate size /// and with the given key hash/equality functions new : size:int * comparer:IEqualityComparer<'Key> -> HashMultiMap<'Key,'Value> /// Build a map that contains the bindings of the given IEnumerable new : entries:seq<'Key * 'Value> * comparer:IEqualityComparer<'Key> -> HashMultiMap<'Key,'Value> /// Make a shallow copy of the collection member Copy : unit -> HashMultiMap<'Key,'Value> /// Add a binding for the element to the table member Add : 'Key * 'Value -> unit /// Clear all elements from the collection member Clear : unit -> unit /// Test if the collection contains any bindings for the given element member ContainsKey: 'Key -> bool /// Remove the latest binding (if any) for the given element from the table member Remove : 'Key -> unit /// Replace the latest binding (if any) for the given element. member Replace : 'Key * 'Value -> unit /// Lookup or set the given element in the table. Set replaces all existing bindings for a value with a single /// bindings. Raise KeyNotFoundException if the element is not found. member Item : 'Key -> 'Value with get,set /// Lookup the given element in the table, returning the result as an Option member TryFind : 'Key -> 'Value option /// Find all bindings for the given element in the table, if any member FindAll : 'Key -> 'Value list /// Apply the given function to each element in the collection threading the accumulating parameter /// through the sequence of function applications member Fold : ('Key -> 'Value -> 'State -> 'State) -> 'State -> 'State /// The total number of keys in the hash table member Count : int ///Apply the given function to each binding in the hash table member Iterate : ('Key -> 'Value -> unit) -> unit interface IDictionary<'Key, 'Value> interface ICollection> interface IEnumerable> interface System.Collections.IEnumerable fsharp-3.0.34/src/utils/resizearray.fs0000775000175000017500000002746112260314606016726 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities open Microsoft.FSharp.Core open Microsoft.FSharp.Core.OptimizedClosures [] module internal ResizeArray = let length (arr: ResizeArray<'T>) = arr.Count let get (arr: ResizeArray<'T>) (n: int) = arr.[n] let set (arr: ResizeArray<'T>) (n: int) (x:'T) = arr.[n] <- x let create (n: int) x = new ResizeArray<_> (seq { for _ in 1 .. n -> x }) let init (n: int) (f: int -> 'T) = new ResizeArray<_> (seq { for i in 0 .. n-1 -> f i }) let blit (arr1: ResizeArray<'T>) start1 (arr2: ResizeArray<'T>) start2 len = if start1 < 0 then invalidArg "start1" "index must be positive" if start2 < 0 then invalidArg "start2" "index must be positive" if len < 0 then invalidArg "len" "length must be positive" if start1 + len > length arr1 then invalidArg "start1" "(start1+len) out of range" if start2 + len > length arr2 then invalidArg "start2" "(start2+len) out of range" for i = 0 to len - 1 do arr2.[start2+i] <- arr1.[start1 + i] let concat (arrs: ResizeArray<'T> list) = new ResizeArray<_> (seq { for arr in arrs do for x in arr do yield x }) let append (arr1: ResizeArray<'T>) (arr2: ResizeArray<'T>) = concat [arr1; arr2] let sub (arr: ResizeArray<'T>) start len = if start < 0 then invalidArg "start" "index must be positive" if len < 0 then invalidArg "len" "length must be positive" if start + len > length arr then invalidArg "len" "length must be positive" new ResizeArray<_> (seq { for i in start .. start+len-1 -> arr.[i] }) let fill (arr: ResizeArray<'T>) (start: int) (len: int) (x:'T) = if start < 0 then invalidArg "start" "index must be positive" if len < 0 then invalidArg "len" "length must be positive" if start + len > length arr then invalidArg "len" "length must be positive" for i = start to start + len - 1 do arr.[i] <- x let copy (arr: ResizeArray<'T>) = new ResizeArray<_>(arr) let toList (arr: ResizeArray<_>) = let mutable res = [] for i = length arr - 1 downto 0 do res <- arr.[i] :: res res let ofList (l: _ list) = let len = l.Length let res = new ResizeArray<_>(len) let rec add = function | [] -> () | e::l -> res.Add(e); add l add l res let iter f (arr: ResizeArray<_>) = for i = 0 to arr.Count - 1 do f arr.[i] let map f (arr: ResizeArray<_>) = let len = length arr let res = new ResizeArray<_>(len) for i = 0 to len - 1 do res.Add(f arr.[i]) res let mapi f (arr: ResizeArray<_>) = let f = FSharpFunc<_,_,_>.Adapt(f) let len = length arr let res = new ResizeArray<_>(len) for i = 0 to len - 1 do res.Add(f.Invoke(i, arr.[i])) res let iteri f (arr: ResizeArray<_>) = let f = FSharpFunc<_,_,_>.Adapt(f) for i = 0 to arr.Count - 1 do f.Invoke(i, arr.[i]) let exists (f: 'T -> bool) (arr: ResizeArray<'T>) = let len = length arr let rec loop i = i < len && (f arr.[i] || loop (i+1)) loop 0 let forall f (arr: ResizeArray<_>) = let len = length arr let rec loop i = i >= len || (f arr.[i] && loop (i+1)) loop 0 let indexNotFound() = raise (new System.Collections.Generic.KeyNotFoundException("An index satisfying the predicate was not found in the collection")) let find f (arr: ResizeArray<_>) = let rec loop i = if i >= length arr then indexNotFound() elif f arr.[i] then arr.[i] else loop (i+1) loop 0 let tryPick f (arr: ResizeArray<_>) = let rec loop i = if i >= length arr then None else match f arr.[i] with | None -> loop(i+1) | res -> res loop 0 let tryFind f (arr: ResizeArray<_>) = let rec loop i = if i >= length arr then None elif f arr.[i] then Some arr.[i] else loop (i+1) loop 0 let iter2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = let f = FSharpFunc<_,_,_>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" for i = 0 to len1 - 1 do f.Invoke(arr1.[i], arr2.[i]) let map2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = let f = FSharpFunc<_,_,_>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" let res = new ResizeArray<_>(len1) for i = 0 to len1 - 1 do res.Add(f.Invoke(arr1.[i], arr2.[i])) res let choose f (arr: ResizeArray<_>) = let res = new ResizeArray<_>() for i = 0 to length arr - 1 do match f arr.[i] with | None -> () | Some b -> res.Add(b) res let filter f (arr: ResizeArray<_>) = let res = new ResizeArray<_>() for i = 0 to length arr - 1 do let x = arr.[i] if f x then res.Add(x) res let partition f (arr: ResizeArray<_>) = let res1 = new ResizeArray<_>() let res2 = new ResizeArray<_>() for i = 0 to length arr - 1 do let x = arr.[i] if f x then res1.Add(x) else res2.Add(x) res1, res2 let rev (arr: ResizeArray<_>) = let len = length arr let res = new ResizeArray<_>(len) for i = len - 1 downto 0 do res.Add(arr.[i]) res let foldBack (f : 'T -> 'State -> 'State) (arr: ResizeArray<'T>) (acc: 'State) = let mutable res = acc let len = length arr for i = len - 1 downto 0 do res <- f (get arr i) res res let fold (f : 'State -> 'T -> 'State) (acc: 'State) (arr: ResizeArray<'T>) = let mutable res = acc let len = length arr for i = 0 to len - 1 do res <- f res (get arr i) res let toArray (arr: ResizeArray<'T>) = arr.ToArray() let ofArray (arr: 'T[]) = new ResizeArray<_>(arr) let toSeq (arr: ResizeArray<'T>) = Seq.readonly arr let sort f (arr: ResizeArray<'T>) = arr.Sort (System.Comparison(f)) let sortBy f (arr: ResizeArray<'T>) = arr.Sort (System.Comparison(fun x y -> compare (f x) (f y))) let exists2 f (arr1: ResizeArray<_>) (arr2: ResizeArray<_>) = let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" let rec loop i = i < len1 && (f arr1.[i] arr2.[i] || loop (i+1)) loop 0 let findIndex f (arr: ResizeArray<_>) = let rec go n = if n >= length arr then indexNotFound() elif f arr.[n] then n else go (n+1) go 0 let findIndexi f (arr: ResizeArray<_>) = let rec go n = if n >= length arr then indexNotFound() elif f n arr.[n] then n else go (n+1) go 0 let foldSub f acc (arr: ResizeArray<_>) start fin = let mutable res = acc for i = start to fin do res <- f res arr.[i] res let foldBackSub f (arr: ResizeArray<_>) start fin acc = let mutable res = acc for i = fin downto start do res <- f arr.[i] res res let reduce f (arr : ResizeArray<_>) = let arrn = length arr if arrn = 0 then invalidArg "arr" "the input array may not be empty" else foldSub f arr.[0] arr 1 (arrn - 1) let reduceBack f (arr: ResizeArray<_>) = let arrn = length arr if arrn = 0 then invalidArg "arr" "the input array may not be empty" else foldBackSub f arr 0 (arrn - 2) arr.[arrn - 1] let fold2 f (acc: 'T) (arr1: ResizeArray<'T1>) (arr2: ResizeArray<'T2>) = let f = FSharpFunc<_,_,_,_>.Adapt(f) let mutable res = acc let len = length arr1 if len <> length arr2 then invalidArg "arr2" "the arrays have different lengths" for i = 0 to len - 1 do res <- f.Invoke(res,arr1.[i],arr2.[i]) res let foldBack2 f (arr1: ResizeArray<'T1>) (arr2: ResizeArray<'T2>) (acc: 'b) = let f = FSharpFunc<_,_,_,_>.Adapt(f) let mutable res = acc let len = length arr1 if len <> length arr2 then invalidArg "arr2" "the arrays have different lengths" for i = len - 1 downto 0 do res <- f.Invoke(arr1.[i],arr2.[i],res) res let forall2 f (arr1: ResizeArray<_>) (arr2: ResizeArray<_>) = let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" let rec loop i = i >= len1 || (f arr1.[i] arr2.[i] && loop (i+1)) loop 0 let isEmpty (arr: ResizeArray<_>) = length (arr: ResizeArray<_>) = 0 let iteri2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = let f = FSharpFunc<_,_,_,_>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" for i = 0 to len1 - 1 do f.Invoke(i,arr1.[i], arr2.[i]) let mapi2 (f: int -> 'T -> 'b -> 'c) (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = let f = FSharpFunc<_,_,_,_>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" init len1 (fun i -> f.Invoke(i, arr1.[i], arr2.[i])) let scanBackSub f (arr: ResizeArray<'T>) start fin acc = let f = FSharpFunc<_,_,_>.Adapt(f) let mutable state = acc let res = create (2+fin-start) acc for i = fin downto start do state <- f.Invoke(arr.[i], state) res.[i - start] <- state res let scanSub f acc (arr : ResizeArray<'T>) start fin = let f = FSharpFunc<_,_,_>.Adapt(f) let mutable state = acc let res = create (fin-start+2) acc for i = start to fin do state <- f.Invoke(state, arr.[i]) res.[i - start+1] <- state res let scan f acc (arr : ResizeArray<'T>) = let arrn = length arr scanSub f acc arr 0 (arrn - 1) let scanBack f (arr : ResizeArray<'T>) acc = let arrn = length arr scanBackSub f arr 0 (arrn - 1) acc let singleton x = let res = new ResizeArray<_>(1) res.Add(x) res let tryFindIndex f (arr: ResizeArray<'T>) = let rec go n = if n >= length arr then None elif f arr.[n] then Some n else go (n+1) go 0 let tryFindIndexi f (arr: ResizeArray<'T>) = let rec go n = if n >= length arr then None elif f n arr.[n] then Some n else go (n+1) go 0 let zip (arr1: ResizeArray<_>) (arr2: ResizeArray<_>) = let len1 = length arr1 if len1 <> length arr2 then invalidArg "arr2" "the arrays have different lengths" init len1 (fun i -> arr1.[i], arr2.[i]) let unzip (arr: ResizeArray<_>) = let len = length arr let res1 = new ResizeArray<_>(len) let res2 = new ResizeArray<_>(len) for i = 0 to len - 1 do let x,y = arr.[i] res1.Add(x) res2.Add(y) res1,res2 fsharp-3.0.34/src/utils/sformat.fsi0000775000175000017500000002753312260314606016212 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // This file is compiled 4(!) times in the codebase // - as the internal implementation of printf '%A' formatting // defines: RUNTIME // - as the internal implementation of structured formatting in the FSharp.Compiler-proto.dll // defines: COMPILER + BUILDING_WITH_LKG // - as the internal implementation of structured formatting in FSharp.Compiler.dll // defines: COMPILER // NOTE: this implementation is used by fsi.exe. This is very important. // - as the public implementation of structured formatting in the FSharp.PowerPack.dll // defines: // // The one implementation file is used because we very much want to keep the implementations of // structured formatting the same for fsi.exe and '%A' printing. However fsi.exe may have // a richer feature set. // // Note no layout objects are ever transferred between the above implementations, and in // all 4 cases the layout types are really different types. #if COMPILER // FSharp.Compiler-proto.dll: // FSharp.Compiler.dll: namespace Internal.Utilities.StructuredFormat #else #if RUNTIME // FSharp.Core.dll: namespace Microsoft.FSharp.Text.StructuredPrintfImpl #else // Powerpack: namespace Microsoft.FSharp.Text.StructuredFormat #endif #endif open System open System.IO open Microsoft.FSharp.Core open Microsoft.FSharp.Collections open Microsoft.FSharp.Primitives.Basics /// Data representing structured layouts of terms. #if RUNTIME // FSharp.Core.dll makes things internal and hides representations type internal Layout #else // FSharp.Compiler.dll, FSharp.Compiler-proto.dll, FSharp.PowerPack.dll // FSharp.PowerPack.dll: reveals representations // FSharp.Compiler-proto.dll, FSharp.Compiler.dll: the F# compiler likes to see these representations /// Data representing joints in structured layouts of terms. The representation /// of this data type is only for the consumption of formatting engines. [] #if COMPILER type internal Joint = #else type Joint = #endif | Unbreakable | Breakable of int | Broken of int /// Data representing structured layouts of terms. The representation /// of this data type is only for the consumption of formatting engines. [] #if COMPILER type internal Layout = #else type Layout = #endif | Leaf of bool * obj * bool | Node of bool * Layout * bool * Layout * bool * Joint | Attr of string * (string * string) list * Layout #endif #if RUNTIME // FSharp.Core.dll doesn't use PrintIntercepts #else // FSharp.Compiler.dll, FSharp.Compiler-proto.dll, FSharp.PowerPack.dll #if COMPILER type internal IEnvironment = #else type IEnvironment = #endif /// Return to the layout-generation /// environment to layout any otherwise uninterpreted object abstract GetLayout : obj -> Layout /// The maximum number of elements for which to generate layout for /// list-like structures, or columns in table-like /// structures. -1 if no maximum. abstract MaxColumns : int /// The maximum number of rows for which to generate layout for table-like /// structures. -1 if no maximum. abstract MaxRows : int #endif /// A layout is a sequence of strings which have been joined together. /// The strings are classified as words, separators and left and right parenthesis. /// This classification determines where spaces are inserted. /// A joint is either unbreakable, breakable or broken. /// If a joint is broken the RHS layout occurs on the next line with optional indentation. /// A layout can be squashed to for given width which forces breaks as required. module #if RUNTIME // FSharp.Core.dll internal #else #if COMPILER internal #endif #endif LayoutOps = /// The empty layout val emptyL : Layout /// Is it the empty layout? val isEmptyL : layout:Layout -> bool /// An uninterpreted leaf, to be interpreted into a string /// by the layout engine. This allows leaf layouts for numbers, strings and /// other atoms to be customized according to culture. val objL : value:obj -> Layout /// An string leaf val wordL : text:string -> Layout /// An string which requires no spaces either side. val sepL : text:string -> Layout /// An string which is right parenthesis (no space on the left). val rightL : text:string -> Layout /// An string which is left parenthesis (no space on the right). val leftL : text:string -> Layout /// Join, unbreakable. val ( ^^ ) : layout1:Layout -> layout2:Layout -> Layout /// Join, possible break with indent=0 val ( ++ ) : layout1:Layout -> layout2:Layout -> Layout /// Join, possible break with indent=1 val ( -- ) : layout1:Layout -> layout2:Layout -> Layout /// Join, possible break with indent=2 val ( --- ) : layout1:Layout -> layout2:Layout -> Layout /// Join broken with ident=0 val ( @@ ) : layout1:Layout -> layout2:Layout -> Layout /// Join broken with ident=1 val ( @@- ) : layout1:Layout -> layout2:Layout -> Layout /// Join broken with ident=2 val ( @@-- ) : layout1:Layout -> layout2:Layout -> Layout /// Join layouts into a comma separated list. val commaListL : layouts:Layout list -> Layout /// Join layouts into a space separated list. val spaceListL : layouts:Layout list -> Layout /// Join layouts into a semi-colon separated list. val semiListL : layouts:Layout list -> Layout /// Join layouts into a list separated using the given Layout. val sepListL : layout1:Layout -> layouts:Layout list -> Layout /// Wrap round brackets around Layout. val bracketL : Layout:Layout -> Layout /// Wrap square brackets around layout. val squareBracketL : layout:Layout -> Layout /// Wrap braces around layout. val braceL : layout:Layout -> Layout /// Form tuple of layouts. val tupleL : layouts:Layout list -> Layout /// Layout two vertically. val aboveL : layout1:Layout -> layout2:Layout -> Layout /// Layout list vertically. val aboveListL : layouts:Layout list -> Layout /// Layout like an F# option. val optionL : selector:('T -> Layout) -> value:'T option -> Layout /// Layout like an F# list. val listL : selector:('T -> Layout) -> value:'T list -> Layout /// See tagL val tagAttrL : text:string -> maps:(string * string) list -> layout:Layout -> Layout /// For limitting layout of list-like sequences (lists,arrays,etc). /// unfold a list of items using (project and z) making layout list via itemL. /// If reach maxLength (before exhausting) then truncate. val unfoldL : selector:('T -> Layout) -> folder:('State -> ('T * 'State) option) -> state:'State -> count:int -> Layout list /// A record of options to control structural formatting. /// For F# Interactive properties matching those of this value can be accessed via the 'fsi' /// value. /// /// Floating Point format given in the same format accepted by System.Double.ToString, /// e.g. f6 or g15. /// /// If ShowProperties is set the printing process will evaluate properties of the values being /// displayed. This may cause additional computation. /// /// The ShowIEnumerable is set the printing process will force the evalution of IEnumerable objects /// to a small, finite depth, as determined by the printing parameters. /// This may lead to additional computation being performed during printing. /// /// /// From F# Interactive the default settings can be adjusted using, for example, ///
    ///   open Microsoft.FSharp.Compiler.Interactive.Settings;;
    ///   setPrintWidth 120;;
    /// 
///
[] type #if RUNTIME // FSharp.Core.dll internal #else #if COMPILER internal #endif #endif FormatOptions = { FloatingPointFormat: string AttributeProcessor: (string -> (string * string) list -> bool -> unit); #if RUNTIME // FSharp.Core.dll: PrintIntercepts aren't used there #else #if COMPILER // FSharp.Compiler.dll: This is the PrintIntercepts extensibility point currently revealed by fsi.exe's AddPrinter PrintIntercepts: (IEnvironment -> obj -> Layout option) list; StringLimit: int; #endif #endif FormatProvider: System.IFormatProvider BindingFlags: System.Reflection.BindingFlags PrintWidth : int PrintDepth : int PrintLength : int PrintSize : int ShowProperties : bool ShowIEnumerable: bool } static member Default : FormatOptions module #if RUNTIME // FSharp.Core.dll internal #else #if COMPILER internal #endif #endif Display = /// Convert any value to a string using a standard formatter /// Data is typically formatted in a structured format, e.g. /// lists are formatted using the "[1;2]" notation. /// The details of the format are not specified and may change /// from version to version and according to the flags given /// to the F# compiler. The format is intended to be human-readable, /// not machine readable. If alternative generic formats are required /// you should develop your own formatter, using the code in the /// implementation of this file as a starting point. /// /// Data from other .NET languages is formatted using a virtual /// call to Object.ToString() on the boxed version of the input. val any_to_string: value:'T -> string /// Ouput any value to a channel using the same set of formatting rules /// as any_to_string val output_any: writer:TextWriter -> value:'T -> unit #if RUNTIME // FSharp.Core.dll: Most functions aren't needed in FSharp.Core.dll, but we add one entry for printf val anyToStringForPrintf: options:FormatOptions -> bindingFlags:System.Reflection.BindingFlags -> value:'T -> string #else val any_to_layout : options:FormatOptions -> value:'T -> Layout val squash_layout : options:FormatOptions -> layout:Layout -> Layout val output_layout : options:FormatOptions -> writer:TextWriter -> layout:Layout -> unit val layout_as_string: options:FormatOptions -> value:'T -> string #endif /// Convert any value to a layout using the given formatting options. The /// layout can then be processed using formatting display engines such as /// those in the LayoutOps module. any_to_string and output_any are /// built using any_to_layout with default format options. val layout_to_string: options:FormatOptions -> layout:Layout -> string #if COMPILER val fsi_any_to_layout : options:FormatOptions -> value:'T -> Layout #endif fsharp-3.0.34/src/utils/prim-lexing.fsi0000775000175000017500000000766512260314606016776 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- // LexBuffers are for use with automatically generated lexical analyzers, // in particular those produced by 'fslex'. namespace Internal.Utilities.Text.Lexing open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Control /// Position information stored for lexing tokens [] type (* internal *) Position = interface System.IComparable /// The file index for the file associated with the input stream, use fileOfFileIndex in range.fs to decode member FileIndex : int /// The line number in the input stream, assuming fresh positions have been updated /// for the new line by modifying the EndPos property of the LexBuffer. member Line : int /// The line number for the position in the input stream, assuming fresh positions have been updated /// using for the new line member OriginalLine : int /// The character number in the input stream member AbsoluteOffset : int /// Return absolute offset of the start of the line marked by the position member StartOfLineAbsoluteOffset : int /// Return the column number marked by the position, i.e. the difference between the AbsoluteOffset and the StartOfLineAbsoluteOffset member Column : int // Given a position just beyond the end of a line, return a position at the start of the next line member NextLine : Position /// Given a position at the start of a token of length n, return a position just beyond the end of the token member EndOfToken: n:int -> Position /// Gives a position shifted by specified number of characters member ShiftColumnBy: by:int -> Position // Same line, column -1 member ColumnMinusOne : Position /// Apply a #line directive member ApplyLineDirective : fileIdx:int * line:int -> Position /// Get an arbitrary position, with the empty string as filename, and static member Empty : Position static member FirstLine : fileIdx:int -> Position [] /// Input buffers consumed by lexers generated by fslex.exe type (* internal *) LexBuffer<'Char> = /// The start position for the lexeme member StartPos: Position with get,set /// The end position for the lexeme member EndPos: Position with get,set /// The matched string member Lexeme: 'Char [] /// Fast helper to turn the matched characters into a string, avoiding an intermediate array static member LexemeString : LexBuffer -> string /// Dynamically typed, non-lexically scoped parameter table member BufferLocalStore : IDictionary /// True if the refill of the buffer ever failed , or if explicitly set to true. member IsPastEndOfStream: bool with get,set /// Create a lex buffer suitable for Unicode lexing that reads characters from the given array static member FromChars: char[] -> LexBuffer /// Create a lex buffer that reads character or byte inputs by using the given function static member FromFunction: ('Char[] * int * int -> int) -> LexBuffer<'Char> /// The type of tables for an unicode lexer generated by fslex. [] type internal UnicodeTables = static member Create : uint16[][] * uint16[] -> UnicodeTables /// Interpret tables for a unicode lexer generated by fslex. member Interpret: initialState:int * LexBuffer -> int fsharp-3.0.34/src/utils/resizearray.fsi0000775000175000017500000002671712260314606017102 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- namespace Internal.Utilities open System open System.Collections.Generic open Microsoft.FSharp.Core open Microsoft.FSharp.Collections [] /// Generic operations on the type System.Collections.Generic.List, which is called ResizeArray in the F# libraries. module internal ResizeArray = /// Return the length of the collection. You can also use property arr.Length. val length: ResizeArray<'T> -> int /// Fetch an element from the collection. You can also use the syntax arr.[idx]. val get: ResizeArray<'T> -> int -> 'T /// Set the value of an element in the collection. You can also use the syntax arr.[idx] <- e. val set: ResizeArray<'T> -> int -> 'T -> unit /// Create an array whose elements are all initially the given value. val create: int -> 'T -> ResizeArray<'T> /// Create an array by calling the given generator on each index. val init: int -> (int -> 'T) -> ResizeArray<'T> ///Build a new array that contains the elements of the first array followed by the elements of the second array val append: ResizeArray<'T> -> ResizeArray<'T> -> ResizeArray<'T> ///Build a new array that contains the elements of each of the given list of arrays val concat: ResizeArray<'T> list -> ResizeArray<'T> ///Build a new array that contains the given subrange specified by ///starting index and length. val sub: ResizeArray<'T> -> int -> int -> ResizeArray<'T> ///Build a new array that contains the elements of the given array val copy: ResizeArray<'T> -> ResizeArray<'T> ///Fill a range of the collection with the given element val fill: ResizeArray<'T> -> int -> int -> 'T -> unit ///Read a range of elements from the first array and write them into the second. val blit: ResizeArray<'T> -> int -> ResizeArray<'T> -> int -> int -> unit ///Build a list from the given array val toList: ResizeArray<'T> -> 'T list ///Build an array from the given list val ofList: 'T list -> ResizeArray<'T> /// Apply a function to each element of the collection, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN /// then computes f (... (f s i0)...) iN val fold: ('T -> 'U -> 'T) -> 'T -> ResizeArray<'U> -> 'T /// Apply a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then /// computes f i0 (...(f iN s)). val foldBack: ('T -> 'U -> 'U) -> ResizeArray<'T> -> 'U -> 'U ///Apply the given function to each element of the array. val iter: ('T -> unit) -> ResizeArray<'T> -> unit ///Build a new array whose elements are the results of applying the given function ///to each of the elements of the array. val map: ('T -> 'U) -> ResizeArray<'T> -> ResizeArray<'U> ///Apply the given function to two arrays simultaneously. The ///two arrays must have the same lengths, otherwise an Invalid_argument exception is ///raised. val iter2: ('T -> 'U -> unit) -> ResizeArray<'T> -> ResizeArray<'U> -> unit ///Build a new collection whose elements are the results of applying the given function ///to the corresponding elements of the two collections pairwise. The two input ///arrays must have the same lengths. val map2: ('T -> 'U -> 'c) -> ResizeArray<'T> -> ResizeArray<'U> -> ResizeArray<'c> ///Apply the given function to each element of the array. The integer passed to the ///function indicates the index of element. val iteri: (int -> 'T -> unit) -> ResizeArray<'T> -> unit ///Build a new array whose elements are the results of applying the given function ///to each of the elements of the array. The integer index passed to the ///function indicates the index of element being transformed. val mapi: (int -> 'T -> 'U) -> ResizeArray<'T> -> ResizeArray<'U> /// Test if any element of the array satisfies the given predicate. /// If the input function is f and the elements are i0...iN /// then computes p i0 or ... or p iN. val exists: ('T -> bool) -> ResizeArray<'T> -> bool /// Test if all elements of the array satisfy the given predicate. /// If the input function is f and the elements are i0...iN and "j0...jN" /// then computes p i0 && ... && p iN. val forall: ('T -> bool) -> ResizeArray<'T> -> bool ///Return a new collection containing only the elements of the collection ///for which the given predicate returns true val filter: ('T -> bool) -> ResizeArray<'T> -> ResizeArray<'T> ///Split the collection into two collections, containing the ///elements for which the given predicate returns true and false ///respectively val partition: ('T -> bool) -> ResizeArray<'T> -> ResizeArray<'T> * ResizeArray<'T> ///Apply the given function to each element of the array. Return ///the array comprised of the results "x" for each element where ///the function returns Some(x) val choose: ('T -> 'U option) -> ResizeArray<'T> -> ResizeArray<'U> ///Return the first element for which the given function returns true. ///Raise KeyNotFoundException if no such element exists. val find: ('T -> bool) -> ResizeArray<'T> -> 'T ///Return the first element for which the given function returns true. ///Return None if no such element exists. val tryFind: ('T -> bool) -> ResizeArray<'T> -> 'T option ///Apply the given function to successive elements, returning the first ///result where function returns "Some(x)" for some x. val tryPick: ('T -> 'U option) -> ResizeArray<'T> -> 'U option ///Return a new array with the elements in reverse order val rev: ResizeArray<'T> -> ResizeArray<'T> /// Sort the elements using the given comparison function val sort: ('T -> 'T -> int) -> ResizeArray<'T> -> unit /// Sort the elements using the key extractor and generic comparison on the keys val sortBy: ('T -> 'Key) -> ResizeArray<'T> -> unit when 'Key : comparison /// Return a fixed-length array containing the elements of the input ResizeArray val toArray : ResizeArray<'T> -> 'T[] /// Build a ResizeArray from the given elements val ofArray : 'T[] -> ResizeArray<'T> /// Return a view of the array as an enumerable object val toSeq : ResizeArray<'T> -> seq<'T> /// Test elements of the two arrays pairwise to see if any pair of element satisfies the given predicate. /// Raise ArgumentException if the arrays have different lengths. val exists2 : ('T -> 'U -> bool) -> ResizeArray<'T> -> ResizeArray<'U> -> bool /// Return the index of the first element in the array /// that satisfies the given predicate. Raise KeyNotFoundException if /// none of the elements satisfy the predicate. val findIndex : ('T -> bool) -> ResizeArray<'T> -> int /// Return the index of the first element in the array /// that satisfies the given predicate. Raise KeyNotFoundException if /// none of the elements satisfy the predicate. val findIndexi : (int -> 'T -> bool) -> ResizeArray<'T> -> int /// Apply a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN /// then computes f (... (f i0 i1)...) iN. Raises ArgumentException if the array has size zero. val reduce : ('T -> 'T -> 'T) -> ResizeArray<'T> -> 'T /// Apply a function to each element of the array, threading an accumulator argument /// through the computation. If the input function is f and the elements are i0...iN then /// computes f i0 (...(f iN-1 iN)). Raises ArgumentException if the array has size zero. val reduceBack : ('T -> 'T -> 'T) -> ResizeArray<'T> -> 'T /// Apply a function to pairs of elements drawn from the two collections, /// left-to-right, threading an accumulator argument /// through the computation. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. val fold2: ('state -> 'b1 -> 'b2 -> 'state) -> 'state -> ResizeArray<'b1> -> ResizeArray<'b2> -> 'state /// Apply a function to pairs of elements drawn from the two collections, right-to-left, /// threading an accumulator argument through the computation. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. val foldBack2 : ('a1 -> 'a2 -> 'U -> 'U) -> ResizeArray<'a1> -> ResizeArray<'a2> -> 'U -> 'U /// Test elements of the two arrays pairwise to see if all pairs of elements satisfy the given predicate. /// Raise ArgumentException if the arrays have different lengths. val forall2 : ('T -> 'U -> bool) -> ResizeArray<'T> -> ResizeArray<'U> -> bool /// Return true if the given array is empty, otherwise false val isEmpty : ResizeArray<'T> -> bool /// Apply the given function to pair of elements drawn from matching indices in two arrays, /// also passing the index of the elements. The two arrays must have the same lengths, /// otherwise an ArgumentException is raised. val iteri2 : (int -> 'T -> 'U -> unit) -> ResizeArray<'T> -> ResizeArray<'U> -> unit /// Build a new collection whose elements are the results of applying the given function /// to the corresponding elements of the two collections pairwise. The two input /// arrays must have the same lengths, otherwise an ArgumentException is /// raised. val mapi2 : (int -> 'T -> 'U -> 'c) -> ResizeArray<'T> -> ResizeArray<'U> -> ResizeArray<'c> /// Like fold, but return the intermediary and final results val scan : ('U -> 'T -> 'U) -> 'U -> ResizeArray<'T> -> ResizeArray<'U> /// Like foldBack, but return both the intermediary and final results val scanBack : ('T -> 'c -> 'c) -> ResizeArray<'T> -> 'c -> ResizeArray<'c> /// Return an array containing the given element val singleton : 'T -> ResizeArray<'T> /// Return the index of the first element in the array /// that satisfies the given predicate. val tryFindIndex : ('T -> bool) -> ResizeArray<'T> -> int option /// Return the index of the first element in the array /// that satisfies the given predicate. val tryFindIndexi : (int -> 'T -> bool) -> ResizeArray<'T> -> int option /// Combine the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an ArgumentException is /// raised.. val zip : ResizeArray<'T> -> ResizeArray<'U> -> ResizeArray<'T * 'U> /// Split an array of pairs into two arrays val unzip : ResizeArray<'T * 'U> -> ResizeArray<'T> * ResizeArray<'U> fsharp-3.0.34/src/all-vs2012.sln0000775000175000017500000001324212260314606015105 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D78E3B57-DAD1-4FE1-9DC8-84F7847B0C77}" ProjectSection(SolutionItems) = preProject fsharp-compiler-build.proj = fsharp-compiler-build.proj fsharp-proto-build.proj = fsharp-proto-build.proj root.traversal.targets = root.traversal.targets source-build-version = source-build-version EndProjectSection EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsc", "fsharp\Fsc\Fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler", "fsharp\FSharp.Compiler\FSharp.Compiler.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Silverlight", "fsharp\FSharp.Compiler.Silverlight\FSharp.Compiler.Silverlight.fsproj", "{A90A57BE-C2BD-4CB9-87DC-C0D18820FF6B}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core", "fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Build", "fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Unittests", "fsharp\unittests\Unittests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fsi", "fsharp\fsi\Fsi.fsproj", "{D0E98C0D-490B-4C61-9329-0862F6E87645}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Interactive.Settings", "fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Server.Shared", "fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}" EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Core.Unittests", "fsharp\FSharp.Core.Unittests\FSharp.Core.Unittests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.Build.0 = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.ActiveCfg = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.Build.0 = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.ActiveCfg = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.Build.0 = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.Build.0 = Release|Any CPU {A90A57BE-C2BD-4CB9-87DC-C0D18820FF6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A90A57BE-C2BD-4CB9-87DC-C0D18820FF6B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.Build.0 = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.Build.0 = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0E98C0D-490B-4C61-9329-0862F6E87645}.Release|Any CPU.Build.0 = Release|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Debug|Any CPU.Build.0 = Debug|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.ActiveCfg = Release|Any CPU {D5870CF0-ED51-4CBC-B3D7-6F56DA84AC06}.Release|Any CPU.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.Build.0 = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.ActiveCfg = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/src/source-build-version-4.3.0.00000775000175000017500000000000712260314606017460 0ustar chrischris4.3.0.0fsharp-3.0.34/src/Silverlight/0000775000175000017500000000000012260314606015153 5ustar chrischrisfsharp-3.0.34/src/Silverlight/v5.0/0000775000175000017500000000000012260314606015643 5ustar chrischrisfsharp-3.0.34/src/Silverlight/v5.0/FSharpSource.Silverlight.Common.targets0000775000175000017500000007152512260314606025341 0ustar chrischris true true false false false Silverlight 4 $(FrameworkSDKRoot)bin $(TargetFrameworkDirectory) @(_TargetFrameworkSDKDirectoryItem) $(TargetFrameworkSDKDirectory) <_TargetFrameworkDirectoryItem Include="$(TargetFrameworkDirectory)"/> <_TargetFrameworkSDKDirectoryItem Include="$(TargetFrameworkSDKDirectory)" Condition="'@(_TargetFrameworkSDKDirectoryItem)' == ''"/> CategorizeSilverlightReferences; ValidateXapFilenames; $(PrepareForRunDependsOn); ValidateXaml; CreateSilverlightAppManifest; PackagePlatformExtensions; XapPackager; CreateHtmlTestPage; $(BuiltProjectOutputGroupDependsOn); CategorizeSilverlightReferences; $(PrepareResourcesDependsOn) GetFrameworkPaths; Compile; _CreateSLProperties; MarkupCompilePass1; ValidateXaml; FilesToXap; CreateSilverlightAppManifest; $(MSBuildProjectFullPath) <_Temporary Remove="@(_Temporary)" /> <_Temporary Remove="@(_Temporary)" /> AppManifest.xaml true $(XapFilename) CreateSilverlightAppManifest;CategorizeSilverlightReferences AssignTargetPaths;CategorizeSilverlightReferences <_OriginalBuildingProject>$(BuildingProject) true PrepareResourceNames; $(ComputeIntermediateSatelliteAssembliesDependsOn); _CreateSLProperties; AssignTargetPaths; _PreCategorizeSilverlightReferences; ResolveReferences; ComputeIntermediateSatelliteAssemblies; true %(Filename)%(Extension) $(_OriginalBuildingProject) _CreateSLProperties; CategorizeSilverlightReferences; CreateSilverlightAppManifest; false Resx false $(IntermediateOutputPath)$(_ResourceNameInMainAssembly) _CreateSLProperties; FilesToXap; fsharp-3.0.34/src/fsharp-library-build.proj0000775000175000017500000000123612260314606017602 0ustar chrischris net40 fsharp-3.0.34/src/all-vs2010.sln0000664000175000017500000001352212260314606015101 0ustar chrischris Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D78E3B57-DAD1-4FE1-9DC8-84F7847B0C77}" ProjectSection(SolutionItems) = preProject fsharp-compiler-build.proj = fsharp-compiler-build.proj fsharp-proto-build.proj = fsharp-proto-build.proj root.traversal.targets = root.traversal.targets source-build-version = source-build-version EndProjectSection EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "Fsc", "fsharp\Fsc\Fsc.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Compiler", "fsharp\FSharp.Compiler\FSharp.Compiler.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Compiler.Silverlight", "fsharp\FSharp.Compiler.Silverlight\FSharp.Compiler.Silverlight.fsproj", "{a90a57be-c2bd-4cb9-87dc-c0d18820ff6b}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Core", "fsharp\FSharp.Core\FSharp.Core.fsproj", "{DED3BBD7-53F4-428A-8C9F-27968E768605}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Build", "fsharp\FSharp.Build\FSharp.Build.fsproj", "{702A7979-BCF9-4C41-853E-3ADFC9897890}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "Unittests", "fsharp\unittests\Unittests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "Fsi", "fsharp\fsi\Fsi.fsproj", "{d0e98c0d-490b-4c61-9329-0862f6e87645}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Compiler.Interactive.Settings", "fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj", "{649FA588-F02E-457C-9FCF-87E46407481E}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Compiler.Server.Shared", "fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj", "{d5870cf0-ed51-4cbc-b3d7-6f56da84ac06}" EndProject Project("{4925A630-B079-445d-BCD4-3A9C94FE9307}") = "FSharp.Core.Unittests", "fsharp\FSharp.Core.Unittests\FSharp.Core.Unittests.fsproj", "{88E2D422-6852-46E3-A740-83E391DC7973}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}.Release|Any CPU.Build.0 = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Debug|Any CPU.Build.0 = Debug|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.ActiveCfg = Release|Any CPU {649FA588-F02E-457C-9FCF-87E46407481E}.Release|Any CPU.Build.0 = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Debug|Any CPU.Build.0 = Debug|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.ActiveCfg = Release|Any CPU {702A7979-BCF9-4C41-853E-3ADFC9897890}.Release|Any CPU.Build.0 = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Debug|Any CPU.Build.0 = Debug|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.ActiveCfg = Release|Any CPU {88E2D422-6852-46E3-A740-83E391DC7973}.Release|Any CPU.Build.0 = Release|Any CPU {a90a57be-c2bd-4cb9-87dc-c0d18820ff6b}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {a90a57be-c2bd-4cb9-87dc-c0d18820ff6b}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Debug|Any CPU.Build.0 = Debug|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.ActiveCfg = Release|Any CPU {C94C257C-3C0A-4858-B5D8-D746498D1F08}.Release|Any CPU.Build.0 = Release|Any CPU {d0e98c0d-490b-4c61-9329-0862f6e87645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {d0e98c0d-490b-4c61-9329-0862f6e87645}.Debug|Any CPU.Build.0 = Debug|Any CPU {d0e98c0d-490b-4c61-9329-0862f6e87645}.Release|Any CPU.ActiveCfg = Release|Any CPU {d0e98c0d-490b-4c61-9329-0862f6e87645}.Release|Any CPU.Build.0 = Release|Any CPU {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06}.Debug|Any CPU.Build.0 = Debug|Any CPU {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06}.Release|Any CPU.ActiveCfg = Release|Any CPU {d5870cf0-ed51-4cbc-b3d7-6f56da84ac06}.Release|Any CPU.Build.0 = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Debug|Any CPU.Build.0 = Debug|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.ActiveCfg = Release|Any CPU {DED3BBD7-53F4-428A-8C9F-27968E768605}.Release|Any CPU.Build.0 = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = fsharp\Fsc\Fsc.fsproj EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fsharp-3.0.34/src/source-build-version0000775000175000017500000000001112260314606016655 0ustar chrischris2.9.9.999fsharp-3.0.34/src/source-build-version-2.3.5.00000775000175000017500000000000712260314606017463 0ustar chrischris2.3.5.0fsharp-3.0.34/src/FSharpSource.targets0000775000175000017500000014566312260314606016640 0ustar chrischris true net40 4.0 $(FSharpSourcesRoot)\..\lib\bootstrap\4.0 true $(OtherFlags) --times $(NoWarn);69;65;54;61;75 true $(FSharpSourcesRoot)\source-build-version $(FSharpSourcesRoot)\source-build-version-2.3.0.0 $(FSharpSourcesRoot)\source-build-version-4.3.0.0 $(FSharpSourcesRoot)\source-build-version-2.3.5.0 $(FSharpSourcesRoot)\source-build-version-2.3.5.0 STRONG_NAME_AND_DELAY_SIGN_FSHARP_COMPILER_WITH_MSFT_KEY;$(DefineConstants) $(OtherFlags) --delaysign+ --keyfile:"$(FSharpSourcesRoot)\fsharp\msft.pubkey" true STRONG_NAME_FSHARP_COMPILER_WITH_TEST_KEY;$(DefineConstants) $(OtherFlags) --keyfile:"$(FSharpSourcesRoot)\fsharp\test.snk" true NO_STRONG_NAMES;$(DefineConstants) DEBUG; $(DefineConstants) false debug $(OtherFlags) --no-jit-optimize --jit-tracking CODE_ANALYSIS; $(DefineConstants) true release true DEBUG;NO_STRONG_NAMES;$(DefineConstants) proto CROSS_PLATFORM_COMPILER;$(DefineConstants) v2.0 2.0 $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_MONITOR_REPORTS_LOCKTAKEN $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT $(OtherFlags) --simpleresolution v4.0 4.0 $(DefineConstants);FX_ATLEAST_40 $(DefineConstants);FX_ATLEAST_35 $(DefineConstants);BE_SECURITY_TRANSPARENT $(DefineConstants);QUERIES_IN_FSLIB $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE; $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_BIGINT_CULTURE_PARSE v2.1 2.1 $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT_CULTURE_PARSE $(DefineConstants);FX_ATLEAST_40 $(DefineConstants);FX_ATLEAST_35 $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_BIGINT $(FSharpSourcesRoot)\..\dependencies\mono\2.1;$(AssemblySearchPaths) v2.1 2.1monotouch $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT_CULTURE_PARSE $(DefineConstants);FX_ATLEAST_40 $(DefineConstants);FX_ATLEAST_35 $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_BIGINT $(DefineConstants);FX_NO_REFLECTION_EMIT $(OtherFlags) --simpleresolution -r:"$(FSharpSourcesRoot)\..\dependencies\mono\2.1\MonoTouch\mscorlib-runtime.dll" $(FSharpSourcesRoot)\..\dependencies\mono\2.1\MonoTouch;$(AssemblySearchPaths) Profile47 v4.0 $(TargetFramework) $(DefineConstants);FSHARP_CORE_PORTABLE $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY $(DefineConstants);FX_ATLEAST_PORTABLE $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULES $(DefineConstants);FX_NO_REFLECTION_METADATA_TOKENS $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_CONVERTER $(DefineConstants);FX_NO_GET_HASH_CODE_HELPER $(DefineConstants);FX_NO_COMVISIBLE $(DefineConstants);FX_NO_ICLONEABLE $(DefineConstants);FX_NO_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_SYSTEM_CONSOLE $(DefineConstants);FX_NO_ARRAY_KEY_SORT $(DefineConstants);FX_NO_REFLECTION_EMIT $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START $(DefineConstants);FX_EVENTWAITHANDLE_NO_IDISPOSABLE $(DefineConstants);FX_NO_REGISTERED_WAIT_HANDLES $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_THREAD $(DefineConstants);FX_NO_THREADPOOL $(DefineConstants);FX_NO_WAITONE_MILLISECONDS $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT $(DefineConstants);DONT_INCLUDE_DEPRECATED $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile) $(OtherFlags) --simpleresolution -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\mscorlib.dll" -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\System.dll" -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\System.Core.dll" Profile88 v4.0 $(TargetFramework) $(DefineConstants);FSHARP_CORE_PORTABLE $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY $(DefineConstants);FX_ATLEAST_PORTABLE $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULES $(DefineConstants);FX_NO_REFLECTION_METADATA_TOKENS $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_CONVERTER $(DefineConstants);FX_NO_GET_HASH_CODE_HELPER $(DefineConstants);FX_NO_COMVISIBLE $(DefineConstants);FX_NO_ICLONEABLE $(DefineConstants);FX_NO_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_SYSTEM_CONSOLE $(DefineConstants);FX_NO_ARRAY_KEY_SORT $(DefineConstants);FX_NO_REFLECTION_EMIT $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START $(DefineConstants);FX_EVENTWAITHANDLE_NO_IDISPOSABLE $(DefineConstants);FX_NO_REGISTERED_WAIT_HANDLES $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_THREAD $(DefineConstants);FX_NO_THREADPOOL $(DefineConstants);FX_NO_WAITONE_MILLISECONDS $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT $(DefineConstants);DONT_INCLUDE_DEPRECATED $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_THREAD_STATIC $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile) $(OtherFlags) --simpleresolution -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\mscorlib.dll" -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\System.dll" -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\$(TargetFrameworkProfile)\System.Core.dll" v3.0 sl3 $(DefineConstants);SILVERLIGHT $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE; $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY Silverlight false v3.0 $(DefineConstants);SILVERLIGHT $(DefineConstants);FX_NO_ISIN_ON_PARAMETER_INFO $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_BIGINT $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);QUERIES_IN_FSLIB $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE; $(DefineConstants);FX_ATLEAST_LINQ Silverlight v4.0 sl4 v4.0 $(DefineConstants);SILVERLIGHT $(DefineConstants);FX_ATLEAST_SILVERLIGHT_50 $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_BIGINT $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);DONT_INCLUDE_DEPRECATED $(DefineConstants);QUERIES_IN_FSLIB $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE; $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);TARGET_SILVERLIGHT_5_0 Silverlight v5.0 v5.0 $(TargetFramework) Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier) $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0 v4.0 WindowsPhone Silverlight $(DefineConstants);SILVERLIGHT $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_REFLECTION_EMIT $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_WEB_REQUESTS $(DefineConstants);FX_NO_CONCURRENT_DICTIONARY $(DefineConstants);PUT_TYPE_PROVIDERS_IN_FSCORE; $(DefineConstants);FX_ATLEAST_LINQ $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_NO_BIGINT $(DefineConstants);FX_NO_MONITOR_REPORTS_LOCKTAKEN $(DefineConstants);FX_NO_QUOTATIONS_COMPILE false $(TargetFrameworkVersion) $(TargetFramework) $(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone $(OtherFlags) --simpleresolution -r:"$(MSBuildExtensionsPath32)\..\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone\mscorlib.dll" v2.0 CompactFramework $(DefineConstants);FX_ATLEAST_COMPACT_FRAMEWORK_20 $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);COMPACT_FRAMEWORK $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_DEBUG_DISPLAYS $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_NO_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_DELEGATE_DYNAMIC_INVOKE $(DefineConstants);FX_NO_DELEGATE_DYNAMIC_METHOD $(DefineConstants);FX_MINIMAL_REFLECTION $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_SYNC_CONTEXT $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_REGISTERED_WAIT_HANDLES $(DefineConstants);FX_NO_THREAD_STATIC $(DefineConstants);FX_NO_GET_HASH_CODE_HELPER $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_LOGN $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_STRING_SPLIT_OPTIONS $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_CREATE_DELEGATE $(DefineConstants);FX_NO_WEB_REQUESTS $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD $(DefineConstants) $(TargetFramework) $(OtherFlags) --simpleresolution -r:"C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\mscorlib.dll" -r:"C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\System.dll" $(DefineConstants);XNA $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_WEB_REQUESTS $(DefineConstants);FX_NO_REFLECTION_EMIT $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_LINQ $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_IOBSERVABLE v3.5 3.5 CompactFramework $(DefineConstants);FX_ATLEAST_COMPACT_FRAMEWORK_35 $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES $(DefineConstants);FX_NO_TASK $(DefineConstants);COMPACT_FRAMEWORK $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_DEBUG_DISPLAYS $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_NO_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_DELEGATE_DYNAMIC_INVOKE $(DefineConstants);FX_MINIMAL_REFLECTION $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_SYNC_CONTEXT $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_REGISTERED_WAIT_HANDLES $(DefineConstants);FX_NO_THREAD_STATIC $(DefineConstants);FX_NO_GET_HASH_CODE_HELPER $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_LOGN $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_STRING_SPLIT_OPTIONS $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_CREATE_DELEGATE $(DefineConstants);FX_NO_WEB_REQUESTS $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_PARAMETERIZED_THREAD_START $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_DELEGATE_CREATE_DELEGATE_FROM_STATIC_METHOD $(OtherFlags) --simpleresolution -r:"C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\mscorlib.dll" -r:"C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\System.dll" v4.0 v4.0 Xbox 360 $(DefineConstants);FX_NO_ARRAY_LONG_LENGTH $(DefineConstants);FX_NO_DEBUG_PROXIES $(DefineConstants);FX_NO_EXIT $(DefineConstants);FX_NO_IOBSERVABLE $(DefineConstants);FX_NO_WEB_CLIENT $(DefineConstants);FX_NO_WEB_REQUESTS $(DefineConstants);FX_NO_CHAR_PARSE $(DefineConstants);FX_NO_DEFAULT_DEPENDENCY_TYPE $(DefineConstants);FX_SIMPLE_SECURITY_PERMISSIONS $(DefineConstants);FX_NO_TRUNCATE $(DefineConstants);FX_NO_CULTURE_INFO_ARGS $(DefineConstants);FX_NO_REFLECTION_MODULE_HANDLES $(DefineConstants);FX_NO_OPERATION_CANCELLED $(DefineConstants);FX_NO_TO_LOWER_INVARIANT $(DefineConstants);FX_NO_EXIT_CONTEXT_FLAGS $(DefineConstants);FX_NO_BASED_ARRAYS $(DefineConstants);FX_NO_DOUBLE_BIT_CONVERTER $(DefineConstants);FX_NO_BINARY_SERIALIZATION $(DefineConstants);FX_NO_ASCII_ENCODING $(DefineConstants);FX_NO_DEFAULT_ENCODING $(DefineConstants);FX_NO_FILE_OPTIONS $(DefineConstants);FX_NO_NONBLOCK_IO $(DefineConstants);FX_NO_COMMAND_LINE_ARGS $(DefineConstants);FX_NO_ENVIRONMENT $(DefineConstants);FX_NO_PROCESS_START $(DefineConstants);FX_NO_APP_DOMAINS $(DefineConstants);FX_NO_PROCESS_DIAGNOSTICS $(DefineConstants);FX_NO_STRUCTURAL_EQUALITY $(DefineConstants);FX_NO_LAZY $(DefineConstants);FX_NO_TUPLE $(DefineConstants);FX_NO_REFLECTION_EMIT $(DefineConstants);FX_NO_BIGINT $(DefineConstants);FX_NO_MONITOR_REPORTS_LOCKTAKEN $(DefineConstants);FX_NO_TPL_PARALLEL $(DefineConstants);FX_NO_TASK $(DefineConstants);FX_NO_CUSTOMATTRIBUTEDATA $(DefineConstants);FX_ATLEAST_PORTABLE $(DefineConstants);FX_NO_CANCELLATIONTOKEN_CLASSES false obj\$(ConfigurationOutputDirectory)\$(TargetFrameworkOutputDirectory)\ -proto $(FSharpSourcesRoot)\..\lib\$(ConfigurationOutputDirectory)\$(TargetFrameworkOutputDirectory) $(FSharpSourcesRoot)\..\lib\proto\$(protoCLIDir) fsc-proto.exe $(FSharpSourcesRoot)\..\lib\$(ConfigurationOutputDirectory)\$(TargetFrameworkOutputDirectory) $(LkgPath)\..\2.0 $(LkgPath)\..\2.0 $(LkgPath)\..\2.0 fslex.exe fsyacc.exe ValidateConfiguration;$(CompileDependsOn) $(OutputPath)$(AssemblyName).xml false fsharp-3.0.34/src/fsharp-compiler-unittests-build.proj0000775000175000017500000000137112260314606022010 0ustar chrischris net40 fsharp-3.0.34/src/ChangeLog0000664000175000017500000002774612260314606014451 0ustar chrischris2010-11-26 vtomasp * License.html: Remove invalid FAQ link from License file 2010-11-17 LLB * src/config.sh, src/make_compiler.sh, src/make_proto.sh: Fix the Unix build scripts (thanks Tomas!) 2010-11-17 dsyme * src/fsharp/ilxgen.fs: One more missing change related to previous checkin. * src/fsharp/FSharp.Core/event.fs, src/fsharp/FSharp.Core/seq.fs: Integrate two code fixes (one Windows Phone-related), that were not present in the OSS release code branch * src/fsharp/fsc.fs: Transfer missing code diff for setting permissions for /resident pipe 2010-11-16 LLB * README.html, src/config.sh: Update README with compilation instructions on Unix * src/config.sh, src/make_compiler.sh, src/make_library.sh, src/make_proto.sh: Quick shell scripts for building the compiler on Linux (without xbuild). * src/fsharp/fsi/Fsi.fsproj: Remove useless references in Fsi.fsproj * src/absil/ilsupp.fs, FSharp.Compiler-proto.fsproj, fsharp/FSharp.Compiler/FSharp.Compiler.fsproj: Remove static dependancy on ISymWrapper.dll which is not available on Linux. * assemblyinfo.FSharp.Compiler.dll.fs: Fix case for InternalsVisibleTo. That was a problem on Mono/Linux. 2010-11-15 dsyme * src/fsharp/FSharp.Core/FSharp.Core.fsproj: Remove delay signing for FSharp.Core on .NET 2.0 (it is inconsistent with the no-signing described in the README) * src/FSharpSource.targets: Use simple resolution when compiling for .NET 2.0/3.5. This worksaround a build problem when compiling proto to target .NTE 2./3.5, found by Laurent. * README.html: Describe how to build unittests in README * README.html, src/FSharpSource.targets, fsharp/FSharp.Build/Microsoft.FSharp.targets: Changes to compile the proto correctly when targeting .NET 2.0 2010-11-04 vtomasp * src/fsharp-compiler-build.proj, src/fsharp-compiler-unittests-build.proj, src/fsharp-library-build.proj, src/fsharp-library-unittests-build.proj, FSharp.Core.Unittests.fsproj: Create separate projects for unit tests 2010-11-04 dsyme * compiler/2.0/Apr2010/License.html, License.html, lkg/FSharp-2.0.50726.900/bin/FSharp.Core.dll, bin/FSharp.PowerPack.Build.Tasks.dll, bin/FSharp.PowerPack.targets, bin/FSharp.SRGen.Build.Tasks.dll, FSharp-2.0.50726.900/bin/FSharp.SRGen.targets, bin/FindUnusedResources.exe, lkg/FSharp-2.0.50726.900/bin/FsLex.exe, lkg/FSharp-2.0.50726.900/bin/FsSrGen.exe, lkg/FSharp-2.0.50726.900/bin/FsYacc.exe, lkg/FSharp-2.0.50726.900/bin/Fsi.exe, lkg/sentinel, run.bat, src/FSharpSource.Settings.targets, src/FSharpSource.targets, src/absil/bytes.fs, src/absil/bytes.fsi, src/absil/il.fs, src/absil/il.fsi, src/absil/ilascii.fs, src/absil/ilascii.fsi, src/absil/ilbinary.fs, src/absil/ilbinary.fsi, src/absil/ildiag.fs, src/absil/ildiag.fsi, src/absil/illex.fsl, src/absil/illib.fs, src/absil/ilmorph.fs, src/absil/ilmorph.fsi, src/absil/ilpars.fsy, src/absil/ilprint.fs, src/absil/ilprint.fsi, src/absil/ilread.fs, src/absil/ilread.fsi, src/absil/ilreflect.fs, src/absil/ilsupp.fs, src/absil/ilsupp.fsi, src/absil/ilwrite.fs, src/absil/ilwrite.fsi, src/absil/ilx.fs, src/absil/ilx.fsi, src/absil/zmap.fs, src/absil/zmap.fsi, src/absil/zset.fs, src/absil/zset.fsi, src/all-vs2010.sln, assemblyinfo/assemblyinfo.FSharp.Build.dll.fs, ...nfo.FSharp.Compiler.Interactive.Settings.dll.fs, ...semblyinfo.FSharp.Compiler.Server.Shared.dll.fs, assemblyinfo.FSharp.Compiler.dll.fs, assemblyinfo/assemblyinfo.FSharp.Core.dll.fs, ...assemblyinfo.FSharp.LanguageService.Base.dll.cs, assemblyinfo.FSharp.LanguageService.dll.fs, assemblyinfo.FSharp.ProjectSystem.Base.dll.cs, ...assemblyinfo.FSharp.ProjectSystem.FSharp.dll.fs, assemblyinfo/assemblyinfo.FSharp.VS.FSI.dll.fs, src/assemblyinfo/assemblyinfo.fsc.exe.fs, src/assemblyinfo/assemblyinfo.fsi.exe.fs, src/fsharp-compiler-build.proj, src/fsharp-library-build.proj, src/fsharp-proto-build.proj, src/fsharp/ErrorLogger.fs, src/fsharp/ExtensibleDumper.fs, src/fsharp/ExtensibleDumper.fsi, src/fsharp/FSComp.txt, src/fsharp/FSCstrings.txt, src/fsharp/FSInteractiveSettings.txt, src/fsharp/FSStrings.resx, FSharp.Build-proto/FSharp.Build-proto.fsi, FSharp.Build-proto/FSharp.Build-proto.fsproj, CreateFSharpManifestResourceName.fs, CreateFSharpManifestResourceName.fsi, src/fsharp/FSharp.Build/FSBuild.txt, src/fsharp/FSharp.Build/FSharp.Build.fsi, src/fsharp/FSharp.Build/FSharp.Build.fsproj, src/fsharp/FSharp.Build/Fsc.fs, src/fsharp/FSharp.Build/Fsc.fsi, fsharp/FSharp.Build/Microsoft.FSharp.targets, src/fsharp/FSharp.Build/subst.exe, src/fsharp/FSharp.Build/subst.fsx, FSharp.Compiler-proto.fsproj, FSharp.Compiler.Interactive.Settings.fsproj, FSharp.Compiler.Server.Shared.fsproj, fsharp/FSharp.Compiler/FSharp.Compiler.fsproj, src/fsharp/FSharp.Core.Unittests/App.xaml, FSharp.Core.Unittests.fsproj, FSharp.Core.Unittests/FSharp.Core/Lazy.fs, Microsoft.FSharp.Collections/Array2Module.fs, Microsoft.FSharp.Collections/Array3Module.fs, Microsoft.FSharp.Collections/Array4Module.fs, Microsoft.FSharp.Collections/ArrayModule.fs, Microsoft.FSharp.Collections/ArrayModule2.fs, ComparisonIdentityModule.fs, HashIdentityModule.fs, Microsoft.FSharp.Collections/ListModule.fs, Microsoft.FSharp.Collections/ListModule2.fs, Microsoft.FSharp.Collections/ListType.fs, Microsoft.FSharp.Collections/MapModule.fs, Microsoft.FSharp.Collections/MapType.fs, Microsoft.FSharp.Collections/SeqModule.fs, Microsoft.FSharp.Collections/SeqModule2.fs, Microsoft.FSharp.Collections/SetModule.fs, Microsoft.FSharp.Collections/SetType.fs, Microsoft.FSharp.Collections/StringModule.fs, Microsoft.FSharp.Control/AsyncModule.fs, Microsoft.FSharp.Control/AsyncType.fs, Microsoft.FSharp.Control/Cancellation.fs, Microsoft.FSharp.Control/EventModule.fs, Microsoft.FSharp.Control/LazyType.fs, MailboxProcessorType.fs, Microsoft.FSharp.Control/ObservableModule.fs, Microsoft.FSharp.Core/BigIntType.fs, Microsoft.FSharp.Core/IntConversions.fs, IntConversionsGenerated.fs, IntConversionsTestGenerator.fsx, Microsoft.FSharp.Math/BigIntStruct.fs, FSharp.Core/Microsoft.FSharp.Math/BigNum.fs, FSharpQuotations.fs, FSharpReflection.fs, FSharp.Core/OperatorsModule1.fs, FSharp.Core/OperatorsModule2.fs, FSharp.Core.Unittests/FSharp.Core/PrimTypes.fs, fsharp/FSharp.Core.Unittests/LibraryTestFx.fs, Properties/AppManifest.xml, Properties/AssemblyInfo.cs, FSharp.Core.Unittests/SurfaceArea.2.0.fs, FSharp.Core.Unittests/SurfaceArea.4.0.fs, SurfaceArea.Silverlight.2.0.fs, fsharp/FSharp.Core.Unittests/TypeForwarding.fs, src/fsharp/FSharp.Core/FSCore.resx, src/fsharp/FSharp.Core/FSharp.Core.fsproj, src/fsharp/FSharp.Core/SR.fs, src/fsharp/FSharp.Core/array.fs, src/fsharp/FSharp.Core/array.fsi, src/fsharp/FSharp.Core/array2.fs, src/fsharp/FSharp.Core/array2.fsi, src/fsharp/FSharp.Core/array3.fs, src/fsharp/FSharp.Core/array3.fsi, src/fsharp/FSharp.Core/collections.fs, src/fsharp/FSharp.Core/collections.fsi, src/fsharp/FSharp.Core/control.fs, src/fsharp/FSharp.Core/control.fsi, src/fsharp/FSharp.Core/event.fs, src/fsharp/FSharp.Core/event.fsi, fsharp/FSharp.Core/fslib-extra-pervasives.fs, fsharp/FSharp.Core/fslib-extra-pervasives.fsi, src/fsharp/FSharp.Core/list.fs, src/fsharp/FSharp.Core/list.fsi, src/fsharp/FSharp.Core/local.fs, src/fsharp/FSharp.Core/local.fsi, src/fsharp/FSharp.Core/map.fs, src/fsharp/FSharp.Core/map.fsi, src/fsharp/FSharp.Core/math/n.fs, src/fsharp/FSharp.Core/math/n.fsi, src/fsharp/FSharp.Core/math/z.fs, src/fsharp/FSharp.Core/math/z.fsi, src/fsharp/FSharp.Core/nativeptr.fs, src/fsharp/FSharp.Core/nativeptr.fsi, src/fsharp/FSharp.Core/option.fs, src/fsharp/FSharp.Core/option.fsi, src/fsharp/FSharp.Core/prim-types-prelude.fs, src/fsharp/FSharp.Core/prim-types-prelude.fsi, src/fsharp/FSharp.Core/prim-types.fs, src/fsharp/FSharp.Core/prim-types.fsi, src/fsharp/FSharp.Core/printf.fs, src/fsharp/FSharp.Core/printf.fsi, src/fsharp/FSharp.Core/quotations.fs, src/fsharp/FSharp.Core/quotations.fsi, src/fsharp/FSharp.Core/reflect.fs, src/fsharp/FSharp.Core/reflect.fsi, src/fsharp/FSharp.Core/seq.fs, src/fsharp/FSharp.Core/seq.fsi, src/fsharp/FSharp.Core/set.fs, src/fsharp/FSharp.Core/set.fsi, src/fsharp/FSharp.Core/string.fs, src/fsharp/FSharp.Core/string.fsi, src/fsharp/FlatList.fs, src/fsharp/Fsc-proto/Fsc-proto.fsproj, src/fsharp/Fsc-proto/Fsc.fsi, src/fsharp/Fsc/Fsc.fsi, src/fsharp/Fsc/Fsc.fsproj, src/fsharp/InternalCollections.fs, src/fsharp/InternalCollections.fsi, src/fsharp/InternalFileSystemUtils.fs, src/fsharp/InternalFileSystemUtils.fsi, src/fsharp/PrettyNaming.fs, src/fsharp/QueueList.fs, src/fsharp/ReferenceResolution.fs, src/fsharp/ReferenceResolution.fsi, Microsoft.FSharp.Control/AsyncType.fs, src/fsharp/TraceCall.fs, src/fsharp/ast.fs, src/fsharp/augment.fs, src/fsharp/augment.fsi, src/fsharp/build.fs, src/fsharp/build.fsi, src/fsharp/ccuthunk.fs, src/fsharp/check.fs, src/fsharp/check.fsi, src/fsharp/creflect.fs, src/fsharp/creflect.fsi, src/fsharp/csolve.fs, src/fsharp/csolve.fsi, src/fsharp/detuple.fs, src/fsharp/detuple.fsi, src/fsharp/env.fs, src/fsharp/formats.fs, src/fsharp/formats.fsi, src/fsharp/fs.pubkey, src/fsharp/fs.snk, src/fsharp/fsSilverlight.pubkey, src/fsharp/fsSilverlight.snk, src/fsharp/fsc.fs, src/fsharp/fsclib.fsi, src/fsharp/fscmain.fs, src/fsharp/fscopts.fs, src/fsharp/fscopts.fsi, src/fsharp/fsharp.fsharpp, src/fsharp/fsi/FSIstrings.txt, src/fsharp/fsi/Fsi.fsproj, src/fsharp/fsi/console.fs, src/fsharp/fsi/fsi.exe.config, src/fsharp/fsi/fsi.fs, src/fsharp/fsiattrs.fs, src/fsharp/fsiaux.fs, src/fsharp/fsiaux.fsi, src/fsharp/fsiserver/FSServerShared.txt, src/fsharp/fsiserver/fsiserver.fs, src/fsharp/ilxgen.fs, src/fsharp/ilxgen.fsi, src/fsharp/import.fs, src/fsharp/import.fsi, src/fsharp/infos.fs, src/fsharp/layout.fs, src/fsharp/layout.fsi, src/fsharp/lex.fsl, src/fsharp/lexfilter.fs, src/fsharp/lexhelp.fs, src/fsharp/lexhelp.fsi, src/fsharp/lib.fs, src/fsharp/lowertop.fs, src/fsharp/msft.pubkey, src/fsharp/nameres.fs, src/fsharp/nameres.fsi, src/fsharp/opt.fs, src/fsharp/opt.fsi, src/fsharp/outcome.fs, src/fsharp/outcome.fsi, src/fsharp/pars.fsy, src/fsharp/patcompile.fs, src/fsharp/patcompile.fsi, src/fsharp/pickle.fs, src/fsharp/pickle.fsi, src/fsharp/range.fs, src/fsharp/range.fsi, src/fsharp/sr.fs, src/fsharp/sr.fsi, src/fsharp/sreflect.fs, src/fsharp/sreflect.fsi, src/fsharp/tast.fs, src/fsharp/tastops.fs, src/fsharp/tastops.fsi, src/fsharp/tc.fsi, src/fsharp/tlr.fs, src/fsharp/tlr.fsi, src/fsharp/typrelns.fs, src/fsharp/unilex.fs, src/fsharp/unilex.fsi, src/fsharp/unittests/Build.Unittests.fs, src/fsharp/unittests/General.Unittests.fs, src/fsharp/unittests/PowerPack.Unittests.fs, src/fsharp/unittests/TestLib.fs, src/fsharp/unittests/UnitTestUtils.fs, src/fsharp/unittests/Unittests.dll.config, src/fsharp/unittests/Unittests.fsproj, src/fsharp/unsolved.fs, src/fsharp/vs/IncrementalBuild.fs, src/fsharp/vs/IncrementalBuild.fsi, src/fsharp/vs/Reactor.fs, src/fsharp/vs/Reactor.fsi, src/fsharp/vs/service.fs, src/fsharp/vs/service.fsi, src/ilx/cu_erase.fs, src/ilx/cu_erase.fsi, src/ilx/ilxsettings.fs, src/ilx/pubclo.fs, src/ilx/pubclo.fsi, src/root.traversal.targets, src/setups/install-mono.sh, src/setups/run-as-mono.bat, src/source-build-version, src/utils/CompilerLocationUtils.fs, src/utils/HashMultiMap.fs, src/utils/HashMultiMap.fsi, src/utils/TaggedCollections.fs, src/utils/TaggedCollections.fsi, src/utils/filename.fs, src/utils/filename.fsi, src/utils/prim-lexing.fs, src/utils/prim-lexing.fsi, src/utils/prim-parsing.fs, src/utils/prim-parsing.fsi, src/utils/resizearray.fs, src/utils/resizearray.fsi, src/utils/sformat.fs, src/utils/sformat.fsi: initial population fsharp-3.0.34/src/fsharp-compiler-build.proj0000775000175000017500000000231612260314606017750 0ustar chrischris net40 fsharp-3.0.34/src/absil/0000775000175000017500000000000012260314606013751 5ustar chrischrisfsharp-3.0.34/src/absil/ilbinary.fsi0000775000175000017500000003321412260314606016273 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) /// Internal use only. Code and constants shared between binary reader/writer. module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.BinaryConstants open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal [] type TableName = member Index : int static member FromIndex : int -> TableName module TableNames = val Module : TableName val TypeRef : TableName val TypeDef : TableName val FieldPtr : TableName val Field : TableName val MethodPtr : TableName val Method : TableName val ParamPtr : TableName val Param : TableName val InterfaceImpl : TableName val MemberRef : TableName val Constant : TableName val CustomAttribute : TableName val FieldMarshal : TableName val Permission : TableName val ClassLayout : TableName val FieldLayout : TableName val StandAloneSig : TableName val EventMap : TableName val EventPtr : TableName val Event : TableName val PropertyMap : TableName val PropertyPtr : TableName val Property : TableName val MethodSemantics : TableName val MethodImpl : TableName val ModuleRef : TableName val TypeSpec : TableName val ImplMap : TableName val FieldRVA : TableName val ENCLog : TableName val ENCMap : TableName val Assembly : TableName val AssemblyProcessor : TableName val AssemblyOS : TableName val AssemblyRef : TableName val AssemblyRefProcessor : TableName val AssemblyRefOS : TableName val File : TableName val ExportedType : TableName val ManifestResource : TableName val Nested : TableName val GenericParam : TableName val GenericParamConstraint : TableName val MethodSpec : TableName val UserStrings : TableName val sortedTableInfo : (TableName * int) list [] type TypeDefOrRefTag = member Tag : int32 val tdor_TypeDef : TypeDefOrRefTag val tdor_TypeRef : TypeDefOrRefTag val tdor_TypeSpec : TypeDefOrRefTag [] type HasConstantTag = member Tag : int32 val hc_FieldDef : HasConstantTag val hc_ParamDef : HasConstantTag val hc_Property : HasConstantTag [] type HasCustomAttributeTag = member Tag : int32 val hca_MethodDef : HasCustomAttributeTag val hca_FieldDef : HasCustomAttributeTag val hca_TypeRef : HasCustomAttributeTag val hca_TypeDef : HasCustomAttributeTag val hca_ParamDef : HasCustomAttributeTag val hca_InterfaceImpl : HasCustomAttributeTag val hca_MemberRef : HasCustomAttributeTag val hca_Module : HasCustomAttributeTag val hca_Permission : HasCustomAttributeTag val hca_Property : HasCustomAttributeTag val hca_GenericParam : HasCustomAttributeTag val hca_Event : HasCustomAttributeTag val hca_StandAloneSig : HasCustomAttributeTag val hca_ModuleRef : HasCustomAttributeTag val hca_TypeSpec : HasCustomAttributeTag val hca_Assembly : HasCustomAttributeTag val hca_AssemblyRef : HasCustomAttributeTag val hca_File : HasCustomAttributeTag val hca_ExportedType : HasCustomAttributeTag val hca_ManifestResource : HasCustomAttributeTag [] type HasFieldMarshalTag = member Tag : int32 val hfm_FieldDef : HasFieldMarshalTag val hfm_ParamDef : HasFieldMarshalTag [] type HasDeclSecurityTag = member Tag : int32 val hds_TypeDef : HasDeclSecurityTag val hds_MethodDef : HasDeclSecurityTag val hds_Assembly : HasDeclSecurityTag [] type MemberRefParentTag = member Tag : int32 val mrp_TypeRef : MemberRefParentTag val mrp_ModuleRef : MemberRefParentTag val mrp_MethodDef : MemberRefParentTag val mrp_TypeSpec : MemberRefParentTag [] type HasSemanticsTag = member Tag : int32 val hs_Event : HasSemanticsTag val hs_Property : HasSemanticsTag [] type MethodDefOrRefTag = member Tag : int32 val mdor_MethodDef : MethodDefOrRefTag val mdor_MemberRef : MethodDefOrRefTag [] type MemberForwardedTag = member Tag : int32 val mf_FieldDef : MemberForwardedTag val mf_MethodDef : MemberForwardedTag [] type ImplementationTag = member Tag : int32 val i_File : ImplementationTag val i_AssemblyRef : ImplementationTag val i_ExportedType : ImplementationTag [] type CustomAttributeTypeTag = member Tag : int32 val cat_MethodDef : CustomAttributeTypeTag val cat_MemberRef : CustomAttributeTypeTag [] type ResolutionScopeTag = member Tag : int32 val rs_Module : ResolutionScopeTag val rs_ModuleRef : ResolutionScopeTag val rs_AssemblyRef : ResolutionScopeTag val rs_TypeRef : ResolutionScopeTag [] type TypeOrMethodDefTag = member Tag : int32 val tomd_TypeDef : TypeOrMethodDefTag val tomd_MethodDef : TypeOrMethodDefTag val mkTypeDefOrRefOrSpecTag: int32 -> TypeDefOrRefTag val mkHasConstantTag : int32 -> HasConstantTag val mkHasCustomAttributeTag : int32 -> HasCustomAttributeTag val mkHasFieldMarshalTag : int32 -> HasFieldMarshalTag val mkHasDeclSecurityTag : int32 -> HasDeclSecurityTag val mkMemberRefParentTag : int32 -> MemberRefParentTag val mkHasSemanticsTag : int32 -> HasSemanticsTag val mkMethodDefOrRefTag : int32 -> MethodDefOrRefTag val mkMemberForwardedTag : int32 -> MemberForwardedTag val mkImplementationTag : int32 -> ImplementationTag val mkILCustomAttributeTypeTag : int32 -> CustomAttributeTypeTag val mkResolutionScopeTag : int32 -> ResolutionScopeTag val mkTypeOrMethodDefTag : int32 -> TypeOrMethodDefTag val et_END : byte val et_VOID : byte val et_BOOLEAN : byte val et_CHAR : byte val et_I1 : byte val et_U1 : byte val et_I2 : byte val et_U2 : byte val et_I4 : byte val et_U4 : byte val et_I8 : byte val et_U8 : byte val et_R4 : byte val et_R8 : byte val et_STRING : byte val et_PTR : byte val et_BYREF : byte val et_VALUETYPE : byte val et_CLASS : byte val et_VAR : byte val et_ARRAY : byte val et_WITH : byte val et_TYPEDBYREF : byte val et_I : byte val et_U : byte val et_FNPTR : byte val et_OBJECT : byte val et_SZARRAY : byte val et_MVAR : byte val et_CMOD_REQD : byte val et_CMOD_OPT : byte val et_SENTINEL : byte val et_PINNED : byte val i_nop : int val i_break : int val i_ldarg_0 : int val i_ldarg_1 : int val i_ldarg_2 : int val i_ldarg_3 : int val i_ldloc_0 : int val i_ldloc_1 : int val i_ldloc_2 : int val i_ldloc_3 : int val i_stloc_0 : int val i_stloc_1 : int val i_stloc_2 : int val i_stloc_3 : int val i_ldarg_s : int val i_ldarga_s : int val i_starg_s : int val i_ldloc_s : int val i_ldloca_s : int val i_stloc_s : int val i_ldnull : int val i_ldc_i4_m1 : int val i_ldc_i4_0 : int val i_ldc_i4_1 : int val i_ldc_i4_2 : int val i_ldc_i4_3 : int val i_ldc_i4_4 : int val i_ldc_i4_5 : int val i_ldc_i4_6 : int val i_ldc_i4_7 : int val i_ldc_i4_8 : int val i_ldc_i4_s : int val i_ldc_i4 : int val i_ldc_i8 : int val i_ldc_r4 : int val i_ldc_r8 : int val i_dup : int val i_pop : int val i_jmp : int val i_call : int val i_calli : int val i_ret : int val i_br_s : int val i_brfalse_s : int val i_brtrue_s : int val i_beq_s : int val i_bge_s : int val i_bgt_s : int val i_ble_s : int val i_blt_s : int val i_bne_un_s : int val i_bge_un_s : int val i_bgt_un_s : int val i_ble_un_s : int val i_blt_un_s : int val i_br : int val i_brfalse : int val i_brtrue : int val i_beq : int val i_bge : int val i_bgt : int val i_ble : int val i_blt : int val i_bne_un : int val i_bge_un : int val i_bgt_un : int val i_ble_un : int val i_blt_un : int val i_switch : int val i_ldind_i1 : int val i_ldind_u1 : int val i_ldind_i2 : int val i_ldind_u2 : int val i_ldind_i4 : int val i_ldind_u4 : int val i_ldind_i8 : int val i_ldind_i : int val i_ldind_r4 : int val i_ldind_r8 : int val i_ldind_ref : int val i_stind_ref : int val i_stind_i1 : int val i_stind_i2 : int val i_stind_i4 : int val i_stind_i8 : int val i_stind_r4 : int val i_stind_r8 : int val i_add : int val i_sub : int val i_mul : int val i_div : int val i_div_un : int val i_rem : int val i_rem_un : int val i_and : int val i_or : int val i_xor : int val i_shl : int val i_shr : int val i_shr_un : int val i_neg : int val i_not : int val i_conv_i1 : int val i_conv_i2 : int val i_conv_i4 : int val i_conv_i8 : int val i_conv_r4 : int val i_conv_r8 : int val i_conv_u4 : int val i_conv_u8 : int val i_callvirt : int val i_cpobj : int val i_ldobj : int val i_ldstr : int val i_newobj : int val i_castclass : int val i_isinst : int val i_conv_r_un : int val i_unbox : int val i_throw : int val i_ldfld : int val i_ldflda : int val i_stfld : int val i_ldsfld : int val i_ldsflda : int val i_stsfld : int val i_stobj : int val i_conv_ovf_i1_un : int val i_conv_ovf_i2_un : int val i_conv_ovf_i4_un : int val i_conv_ovf_i8_un : int val i_conv_ovf_u1_un : int val i_conv_ovf_u2_un : int val i_conv_ovf_u4_un : int val i_conv_ovf_u8_un : int val i_conv_ovf_i_un : int val i_conv_ovf_u_un : int val i_box : int val i_newarr : int val i_ldlen : int val i_ldelema : int val i_ldelem_i1 : int val i_ldelem_u1 : int val i_ldelem_i2 : int val i_ldelem_u2 : int val i_ldelem_i4 : int val i_ldelem_u4 : int val i_ldelem_i8 : int val i_ldelem_i : int val i_ldelem_r4 : int val i_ldelem_r8 : int val i_ldelem_ref : int val i_stelem_i : int val i_stelem_i1 : int val i_stelem_i2 : int val i_stelem_i4 : int val i_stelem_i8 : int val i_stelem_r4 : int val i_stelem_r8 : int val i_stelem_ref : int val i_conv_ovf_i1 : int val i_conv_ovf_u1 : int val i_conv_ovf_i2 : int val i_conv_ovf_u2 : int val i_conv_ovf_i4 : int val i_conv_ovf_u4 : int val i_conv_ovf_i8 : int val i_conv_ovf_u8 : int val i_refanyval : int val i_ckfinite : int val i_mkrefany : int val i_ldtoken : int val i_conv_u2 : int val i_conv_u1 : int val i_conv_i : int val i_conv_ovf_i : int val i_conv_ovf_u : int val i_add_ovf : int val i_add_ovf_un : int val i_mul_ovf : int val i_mul_ovf_un : int val i_sub_ovf : int val i_sub_ovf_un : int val i_endfinally : int val i_leave : int val i_leave_s : int val i_stind_i : int val i_conv_u : int val i_arglist : int val i_ceq : int val i_cgt : int val i_cgt_un : int val i_clt : int val i_clt_un : int val i_ldftn : int val i_ldvirtftn : int val i_ldarg : int val i_ldarga : int val i_starg : int val i_ldloc : int val i_ldloca : int val i_stloc : int val i_localloc : int val i_endfilter : int val i_unaligned : int val i_volatile : int val i_constrained : int val i_readonly : int val i_tail : int val i_initobj : int val i_cpblk : int val i_initblk : int val i_rethrow : int val i_sizeof : int val i_refanytype : int val i_ldelem_any : int val i_stelem_any : int val i_unbox_any : int val noArgInstrs : Lazy<(int * ILInstr) list> val isNoArgInstr : ILInstr -> bool val ILCmpInstrMap : Lazy > val ILCmpInstrRevMap : Lazy> val nt_VOID : byte val nt_BOOLEAN : byte val nt_I1 : byte val nt_U1 : byte val nt_I2 : byte val nt_U2 : byte val nt_I4 : byte val nt_U4 : byte val nt_I8 : byte val nt_U8 : byte val nt_R4 : byte val nt_R8 : byte val nt_SYSCHAR : byte val nt_VARIANT : byte val nt_CURRENCY : byte val nt_PTR : byte val nt_DECIMAL : byte val nt_DATE : byte val nt_BSTR : byte val nt_LPSTR : byte val nt_LPWSTR : byte val nt_LPTSTR : byte val nt_FIXEDSYSSTRING : byte val nt_OBJECTREF : byte val nt_IUNKNOWN : byte val nt_IDISPATCH : byte val nt_STRUCT : byte val nt_INTF : byte val nt_SAFEARRAY : byte val nt_FIXEDARRAY : byte val nt_INT : byte val nt_UINT : byte val nt_NESTEDSTRUCT : byte val nt_BYVALSTR : byte val nt_ANSIBSTR : byte val nt_TBSTR : byte val nt_VARIANTBOOL : byte val nt_FUNC : byte val nt_ASANY : byte val nt_ARRAY : byte val nt_LPSTRUCT : byte val nt_CUSTOMMARSHALER : byte val nt_ERROR : byte val nt_MAX : byte val vt_EMPTY : int32 val vt_NULL : int32 val vt_I2 : int32 val vt_I4 : int32 val vt_R4 : int32 val vt_R8 : int32 val vt_CY : int32 val vt_DATE : int32 val vt_BSTR : int32 val vt_DISPATCH : int32 val vt_ERROR : int32 val vt_BOOL : int32 val vt_VARIANT : int32 val vt_UNKNOWN : int32 val vt_DECIMAL : int32 val vt_I1 : int32 val vt_UI1 : int32 val vt_UI2 : int32 val vt_UI4 : int32 val vt_I8 : int32 val vt_UI8 : int32 val vt_INT : int32 val vt_UINT : int32 val vt_VOID : int32 val vt_HRESULT : int32 val vt_PTR : int32 val vt_SAFEARRAY : int32 val vt_CARRAY : int32 val vt_USERDEFINED : int32 val vt_LPSTR : int32 val vt_LPWSTR : int32 val vt_RECORD : int32 val vt_FILETIME : int32 val vt_BLOB : int32 val vt_STREAM : int32 val vt_STORAGE : int32 val vt_STREAMED_OBJECT : int32 val vt_STORED_OBJECT : int32 val vt_BLOB_OBJECT : int32 val vt_CF : int32 val vt_CLSID : int32 val vt_VECTOR : int32 val vt_ARRAY : int32 val vt_BYREF : int32 val ILNativeTypeMap : Lazy<(byte * ILNativeType) list> val ILNativeTypeRevMap : Lazy<(ILNativeType * byte) list> val ILVariantTypeMap : Lazy<(ILNativeVariant * int32) list> val ILVariantTypeRevMap : Lazy<(int32 * ILNativeVariant) list> val ILSecurityActionMap : Lazy<(ILSecurityAction * int) list> val ILSecurityActionRevMap : Lazy<(int * ILSecurityAction) list> val e_CorILMethod_TinyFormat : byte val e_CorILMethod_FatFormat : byte val e_CorILMethod_FormatMask : byte val e_CorILMethod_MoreSects : byte val e_CorILMethod_InitLocals : byte val e_CorILMethod_Sect_EHTable : byte val e_CorILMethod_Sect_FatFormat : byte val e_CorILMethod_Sect_MoreSects : byte val e_COR_ILEXCEPTION_CLAUSE_EXCEPTION : int val e_COR_ILEXCEPTION_CLAUSE_FILTER : int val e_COR_ILEXCEPTION_CLAUSE_FINALLY : int val e_COR_ILEXCEPTION_CLAUSE_FAULT : int val e_IMAGE_CEE_CS_CALLCONV_FASTCALL : byte val e_IMAGE_CEE_CS_CALLCONV_STDCALL : byte val e_IMAGE_CEE_CS_CALLCONV_THISCALL : byte val e_IMAGE_CEE_CS_CALLCONV_CDECL : byte val e_IMAGE_CEE_CS_CALLCONV_VARARG : byte val e_IMAGE_CEE_CS_CALLCONV_FIELD : byte val e_IMAGE_CEE_CS_CALLCONV_LOCAL_SIG : byte val e_IMAGE_CEE_CS_CALLCONV_GENERICINST : byte val e_IMAGE_CEE_CS_CALLCONV_PROPERTY : byte val e_IMAGE_CEE_CS_CALLCONV_INSTANCE : byte val e_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICIT : byte val e_IMAGE_CEE_CS_CALLCONV_GENERIC : byte fsharp-3.0.34/src/absil/ildiag.fsi0000775000175000017500000000246512260314606015717 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Diagnostics from the AbsIL toolkit. You can reset the diagnostics /// stream to point elsewhere, or turn it /// off altogether by setting it to 'None'. The logging channel initally /// points to stderr. All functions call flush() automatically. /// /// REVIEW: review if we should just switch to System.Diagnostics module internal Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open System.IO open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Core.Printf val public setDiagnosticsChannel: TextWriter option -> unit val public dprintfn: TextWriterFormat<'a> -> 'a val public dprintf: TextWriterFormat<'a> -> 'a val public dprintn: string -> unit fsharp-3.0.34/src/absil/ilread.fs0000775000175000017500000060600212260314606015552 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //--------------------------------------------------------------------- // The big binary reader // //--------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader #nowarn "42" // This construct is deprecated: it is only for use in the F# library open System open System.IO open System.Runtime.InteropServices open System.Collections.Generic open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Support open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Internal.BinaryConstants open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Range open Microsoft.FSharp.NativeInterop type ILReaderOptions = { pdbPath: string option; ilGlobals: ILGlobals; optimizeForMemory: bool } #if STATISTICS let reportRef = ref (fun _oc -> ()) let addReport f = let old = !reportRef in reportRef := (fun oc -> old oc; f oc) let report (oc:TextWriter) = !reportRef oc ; reportRef := ref (fun _oc -> ()) #endif let checking = false let logging = false let _ = if checking then dprintn "warning : Ilread.checking is on" /// Read file into cached memory blocks to avoid taking any kind of a /// lock on the file, and avoid needing any cleanup of files. type MemChannel = { mutable mcPos: int; mcBlocks: byte[] } static member OpenIn f = let mcBlocks = FileSystem.ReadAllBytesShim f { mcPos = 0; mcBlocks = mcBlocks } static member OpenBytes f = let mcBlocks = f { mcPos = 0; mcBlocks = mcBlocks } member mc.InputByte() = let p = mc.mcPos let res = mc.mcBlocks.[p] mc.mcPos <- p + 1; res member mc.InputBytes len = let p = mc.mcPos let res = Array.sub mc.mcBlocks p len mc.mcPos <- p + len; res member mc.InputInt32() = let b0 = mc.InputByte() let b1 = mc.InputByte() let b2 = mc.InputByte() let b3 = mc.InputByte() int b0 ||| (int b1 <<< 8) ||| (int b2 <<< 16) ||| (int b3 <<< 24) member mc.InputUInt16() = let b0 = mc.InputByte() let b1 = mc.InputByte() uint16 b0 ||| (uint16 b1 <<< 8) member mc.Seek addr = mc.mcPos <- addr member mc.Close() = () #if SILVERLIGHT type MMapChannel = MemChannel #else /// Read file from memory mapped files module MemoryMapping = type HANDLE = nativeint type ADDR = nativeint type SIZE_T = nativeint [] extern bool CloseHandle (HANDLE _handler) [] extern HANDLE CreateFile (string _lpFileName, int _dwDesiredAccess, int _dwShareMode, HANDLE _lpSecurityAttributes, int _dwCreationDisposition, int _dwFlagsAndAttributes, HANDLE _hTemplateFile) [] extern HANDLE CreateFileMapping (HANDLE _hFile, HANDLE _lpAttributes, int _flProtect, int _dwMaximumSizeLow, int _dwMaximumSizeHigh, string _lpName) [] extern ADDR MapViewOfFile (HANDLE _hFileMappingObject, int _dwDesiredAccess, int _dwFileOffsetHigh, int _dwFileOffsetLow, SIZE_T _dwNumBytesToMap) [] extern bool UnmapViewOfFile (ADDR _lpBaseAddress) let INVALID_HANDLE = new IntPtr(-1) let MAP_READ = 0x0004 let GENERIC_READ = 0x80000000 let NULL_HANDLE = IntPtr.Zero let FILE_SHARE_NONE = 0x0000 let FILE_SHARE_READ = 0x0001 let FILE_SHARE_WRITE = 0x0002 let FILE_SHARE_READ_WRITE = 0x0003 let CREATE_ALWAYS = 0x0002 let OPEN_EXISTING = 0x0003 let OPEN_ALWAYS = 0x0004 let derefByte (p:nativeint) = NativePtr.read (NativePtr.ofNativeInt p) type MemoryMappedFile(hMap: MemoryMapping.HANDLE, start:nativeint) = static member Create fileName = //printf "fileName = %s\n" fileName; let hFile = MemoryMapping.CreateFile (fileName, MemoryMapping.GENERIC_READ, MemoryMapping.FILE_SHARE_READ_WRITE, IntPtr.Zero, MemoryMapping.OPEN_EXISTING, 0, IntPtr.Zero ) //printf "hFile = %Lx\n" (hFile.ToInt64()); if ( hFile.Equals(MemoryMapping.INVALID_HANDLE) ) then failwithf "CreateFile(0x%08x)" ( Marshal.GetHRForLastWin32Error() ); let protection = 0x00000002 (* ReadOnly *) //printf "OK! hFile = %Lx\n" (hFile.ToInt64()); let hMap = MemoryMapping.CreateFileMapping (hFile, IntPtr.Zero, protection, 0,0, null ) ignore(MemoryMapping.CloseHandle(hFile)); if hMap.Equals(MemoryMapping.NULL_HANDLE) then failwithf "CreateFileMapping(0x%08x)" ( Marshal.GetHRForLastWin32Error() ); let start = MemoryMapping.MapViewOfFile (hMap, MemoryMapping.MAP_READ,0,0,0n) if start.Equals(IntPtr.Zero) then failwithf "MapViewOfFile(0x%08x)" ( Marshal.GetHRForLastWin32Error() ); MemoryMappedFile(hMap, start) member m.Addr (i:int) : nativeint = start + nativeint i member m.ReadByte i = derefByte (m.Addr i) member m.ReadBytes i len = let res = Bytes.zeroCreate len Marshal.Copy(m.Addr i, res, 0,len); res member m.ReadInt32 i = NativePtr.read (NativePtr.ofNativeInt (m.Addr i)) member m.ReadUInt16 i = NativePtr.read (NativePtr.ofNativeInt (m.Addr i)) member m.Close() = ignore(MemoryMapping.UnmapViewOfFile start); ignore(MemoryMapping.CloseHandle hMap) member m.CountUtf8String i = let start = m.Addr i let mutable p = start while derefByte p <> 0uy do p <- p + 1n int (p - start) member m.ReadUTF8String i = let n = m.CountUtf8String i new System.String(NativePtr.ofNativeInt (m.Addr i), 0, n, System.Text.Encoding.UTF8) type MMapChannel = { mutable mmPos: int; mmMap: MemoryMappedFile } static member OpenIn f = let mmap = MemoryMappedFile.Create f { mmPos = 0; mmMap = mmap } member mc.InputByte() = let res = mc.mmMap.ReadByte mc.mmPos mc.mmPos <- mc.mmPos + 1; res member mc.InputInt32() = let res = mc.mmMap.ReadInt32 mc.mmPos mc.mmPos <- mc.mmPos + 4; res member mc.InputUInt16() = let res = mc.mmMap.ReadUInt16 mc.mmPos mc.mmPos <- mc.mmPos + 2; res member mc.InputBytes len = let res = mc.mmMap.ReadBytes mc.mmPos len mc.mmPos <- mc.mmPos + len; res member mc.PeekUTF8String () = mc.mmMap.ReadUTF8String mc.mmPos member mc.Seek addr = mc.mmPos <- addr member mc.Close() = mc.mmMap.Close() #endif //--------------------------------------------------------------------- // Read file from cached memory blocks or via 'seek' //--------------------------------------------------------------------- type InputChannel = | Chan of string * System.IO.BinaryReader option ref | Mem of MemChannel | MMap of MMapChannel let readByte is = match is with | Chan (_,{contents=Some ic}) -> ic.ReadByte() | Chan (s,_) -> failwith ("readByte: input channel "+s+" was closed" ) | Mem mc -> mc.InputByte() | MMap mc -> mc.InputByte () let readByteAsInt32 is = int32 (readByte is) let seek is addr = match is with | Chan (_,{contents=Some ic}) -> ic.BaseStream.Seek(int64 addr,SeekOrigin.Begin) |> ignore | Chan (s,_) -> failwith ("seek: input channel "+s+" was closed" ) | Mem mc -> mc.Seek addr | MMap mc -> mc.Seek addr let readBytes is len = match is with | Chan (_,{contents=Some ic}) -> ic.ReadBytes len | Chan (s,_) -> failwith ("readBytes: input channel "+s+" was closed" ) | Mem mc -> mc.InputBytes len | MMap mc -> mc.InputBytes len let readInt64 is = let b0 = readByte is let b1 = readByte is let b2 = readByte is let b3 = readByte is let b4 = readByte is let b5 = readByte is let b6 = readByte is let b7 = readByte is int64 b0 ||| (int64 b1 <<< 8) ||| (int64 b2 <<< 16) ||| (int64 b3 <<< 24) ||| (int64 b4 <<< 32) ||| (int64 b5 <<< 40) ||| (int64 b6 <<< 48) ||| (int64 b7 <<< 56) let readInt32 is = match is with | Chan (_,{contents=Some ic}) -> ic.ReadInt32() | Chan (s,_) -> failwith ("readBytes: input channel "+s+" was closed" ) | MMap mm -> mm.InputInt32() | Mem mm -> mm.InputInt32() //--------------------------------------------------------------------- // Derived reading //--------------------------------------------------------------------- let readUInt16 is = match is with | MMap mm -> mm.InputUInt16() | _ -> let b0 = readByte is let b1 = readByte is uint16 b0 ||| (uint16 b1 <<< 8) let readUInt16AsInt32 is = int32 (readUInt16 is) let readSByte is = sbyte (readByte is) let singleOfBits (x:int32) = System.BitConverter.ToSingle(System.BitConverter.GetBytes(x),0) let doubleOfBits (x:int64) = System.BitConverter.Int64BitsToDouble(x) let readSingle is = singleOfBits (readInt32 is) let readDouble is = doubleOfBits (readInt64 is) let readCompressedUInt32 is = let b0 = readByte is if b0 <= 0x7Fuy then int b0 elif b0 <= 0xBFuy then let b0 = b0 &&& 0x7Fuy let b1 = readByteAsInt32 is (int b0 <<< 8) ||| int b1 else let b0 = b0 &&& 0x3Fuy let b1 = readByte is let b2 = readByte is let b3 = readByte is (int b0 <<< 24) ||| (int b1 <<< 16) ||| (int b2 <<< 8) ||| int b3 let seekReadInt32 is addr = seek is addr; readInt32 is let seekReadInt64 is addr = seek is addr; readInt64 is let seekReadUInt16AsInt32 is addr = seek is addr; readUInt16AsInt32 is let seekReadUInt16 is addr = seek is addr; readUInt16 is let seekReadByte is addr = seek is addr; readByte is let seekReadByteAsInt32 is addr = seek is addr; readByteAsInt32 is let seekReadSByte is addr = seek is addr; readSByte is let seekReadSingle is addr = seek is addr; readSingle is let seekReadDouble is addr = seek is addr; readDouble is let seekReadBytes is addr len = seek is addr; readBytes is len let rec countUtf8String is n = let c = readByteAsInt32 is if c = 0 then n else countUtf8String is (n+1) let seekReadUTF8String is addr = seek is addr; #if SILVERLIGHT #else match is with | MMap mc -> // optimized implementation mc.PeekUTF8String() | _ -> #endif let n = countUtf8String is 0 let bytes = seekReadBytes is addr (n) System.Text.Encoding.UTF8.GetString (bytes, 0, bytes.Length) let readBlob is = let len = readCompressedUInt32 is readBytes is len let seekReadBlob is addr = seek is addr; readBlob is let readUserString is = let len = readCompressedUInt32 is let bytes = readBytes is (len - 1) System.Text.Encoding.Unicode.GetString(bytes, 0, bytes.Length) let seekReadUserString is addr = seek is addr; readUserString is let readGuid is = readBytes is 0x10 let seekReadGuid is addr = seek is addr; readGuid is //--------------------------------------------------------------------- // Utilities. //--------------------------------------------------------------------- let align alignment n = ((n + alignment - 0x1) / alignment) * alignment let uncodedToken (tab:TableName) idx = ((tab.Index <<< 24) ||| idx) let i32ToUncodedToken tok = let idx = tok &&& 0xffffff let tab = tok >>>& 24 (TableName.FromIndex tab, idx) let readUncodedToken is = i32ToUncodedToken (readInt32 is) [] type TaggedIndex<'T> = val tag: 'T val index : int32 new(tag,index) = { tag=tag; index=index } let uncodedTokenToTypeDefOrRefOrSpec (tab,tok) = let tag = if tab = TableNames.TypeDef then tdor_TypeDef elif tab = TableNames.TypeRef then tdor_TypeRef elif tab = TableNames.TypeSpec then tdor_TypeSpec else failwith "bad table in uncodedTokenToTypeDefOrRefOrSpec" TaggedIndex(tag,tok) let uncodedTokenToMethodDefOrRef (tab,tok) = let tag = if tab = TableNames.Method then mdor_MethodDef elif tab = TableNames.MemberRef then mdor_MemberRef else failwith "bad table in uncodedTokenToMethodDefOrRef" TaggedIndex(tag,tok) let seekReadUncodedToken is addr = seek is addr; readUncodedToken is let (|TaggedIndex|) (x:TaggedIndex<'T>) = x.tag, x.index let readTaggedIdx f nbits big is = let tok = if big then readInt32 is else readUInt16AsInt32 is let tagmask = if nbits = 1 then 1 elif nbits = 2 then 3 elif nbits = 3 then 7 elif nbits = 4 then 15 elif nbits = 5 then 31 else failwith "too many nbits" let tag = tok &&& tagmask let idx = tok >>>& nbits TaggedIndex(f tag, idx) //--------------------------------------------------------------------- // Primitives to help read signatures. These do not use the file cursor //--------------------------------------------------------------------- let sigptrCheck (bytes:byte[]) sigptr = if checking && sigptr >= bytes.Length then failwith "read past end of sig. " // All this code should be moved to use a mutable index into the signature // //type SigPtr(bytes:byte[], sigptr:int) = // let mutable curr = sigptr // member x.GetByte() = let res = bytes.[curr] in curr <- curr + 1; res let sigptrGetByte (bytes:byte[]) sigptr = sigptrCheck bytes sigptr; bytes.[sigptr], sigptr + 1 let sigptrGetBool bytes sigptr = let b0,sigptr = sigptrGetByte bytes sigptr (b0 = 0x01uy) ,sigptr let sigptrGetSByte bytes sigptr = let i,sigptr = sigptrGetByte bytes sigptr sbyte i,sigptr let sigptrGetUInt16 bytes sigptr = let b0,sigptr = sigptrGetByte bytes sigptr let b1,sigptr = sigptrGetByte bytes sigptr uint16 (int b0 ||| (int b1 <<< 8)),sigptr let sigptrGetInt16 bytes sigptr = let u,sigptr = sigptrGetUInt16 bytes sigptr int16 u,sigptr let sigptrGetInt32 bytes sigptr = sigptrCheck bytes sigptr; let b0 = bytes.[sigptr] let b1 = bytes.[sigptr+1] let b2 = bytes.[sigptr+2] let b3 = bytes.[sigptr+3] let res = int b0 ||| (int b1 <<< 8) ||| (int b2 <<< 16) ||| (int b3 <<< 24) res, sigptr + 4 let sigptrGetUInt32 bytes sigptr = let u,sigptr = sigptrGetInt32 bytes sigptr uint32 u,sigptr let sigptrGetUInt64 bytes sigptr = let u0,sigptr = sigptrGetUInt32 bytes sigptr let u1,sigptr = sigptrGetUInt32 bytes sigptr (uint64 u0 ||| (uint64 u1 <<< 32)),sigptr let sigptrGetInt64 bytes sigptr = let u,sigptr = sigptrGetUInt64 bytes sigptr int64 u,sigptr let sigptrGetSingle bytes sigptr = let u,sigptr = sigptrGetInt32 bytes sigptr singleOfBits u,sigptr let sigptrGetDouble bytes sigptr = let u,sigptr = sigptrGetInt64 bytes sigptr doubleOfBits u,sigptr let sigptrGetZInt32 bytes sigptr = let b0,sigptr = sigptrGetByte bytes sigptr if b0 <= 0x7Fuy then int b0, sigptr elif b0 <= 0xBFuy then let b0 = b0 &&& 0x7Fuy let b1,sigptr = sigptrGetByte bytes sigptr (int b0 <<< 8) ||| int b1, sigptr else let b0 = b0 &&& 0x3Fuy let b1,sigptr = sigptrGetByte bytes sigptr let b2,sigptr = sigptrGetByte bytes sigptr let b3,sigptr = sigptrGetByte bytes sigptr (int b0 <<< 24) ||| (int b1 <<< 16) ||| (int b2 <<< 8) ||| int b3, sigptr let rec sigptrFoldAcc f n (bytes:byte[]) (sigptr:int) i acc = if i < n then let x,sp = f bytes sigptr sigptrFoldAcc f n bytes sp (i+1) (x::acc) else List.rev acc, sigptr let sigptrFold f n (bytes:byte[]) (sigptr:int) = sigptrFoldAcc f n bytes sigptr 0 [] let sigptrGetBytes n (bytes:byte[]) sigptr = if checking && sigptr + n >= bytes.Length then dprintn "read past end of sig. in sigptrGetString"; Bytes.zeroCreate 0, sigptr else let res = Bytes.zeroCreate n for i = 0 to (n - 1) do res.[i] <- bytes.[sigptr + i] res, sigptr + n let sigptrGetString n bytes sigptr = let bytearray,sigptr = sigptrGetBytes n bytes sigptr (System.Text.Encoding.UTF8.GetString(bytearray, 0, bytearray.Length)),sigptr // -------------------------------------------------------------------- // Now the tables of instructions // -------------------------------------------------------------------- [] type ILInstrPrefixesRegister = { mutable al: ILAlignment; mutable tl: ILTailcall; mutable vol: ILVolatility; mutable ro: ILReadonly; mutable constrained: ILType option} let noPrefixes mk prefixes = if prefixes.al <> Aligned then failwith "an unaligned prefix is not allowed here"; if prefixes.vol <> Nonvolatile then failwith "a volatile prefix is not allowed here"; if prefixes.tl <> Normalcall then failwith "a tailcall prefix is not allowed here"; if prefixes.ro <> NormalAddress then failwith "a readonly prefix is not allowed here"; if prefixes.constrained <> None then failwith "a constrained prefix is not allowed here"; mk let volatileOrUnalignedPrefix mk prefixes = if prefixes.tl <> Normalcall then failwith "a tailcall prefix is not allowed here"; if prefixes.constrained <> None then failwith "a constrained prefix is not allowed here"; if prefixes.ro <> NormalAddress then failwith "a readonly prefix is not allowed here"; mk (prefixes.al,prefixes.vol) let volatilePrefix mk prefixes = if prefixes.al <> Aligned then failwith "an unaligned prefix is not allowed here"; if prefixes.tl <> Normalcall then failwith "a tailcall prefix is not allowed here"; if prefixes.constrained <> None then failwith "a constrained prefix is not allowed here"; if prefixes.ro <> NormalAddress then failwith "a readonly prefix is not allowed here"; mk prefixes.vol let tailPrefix mk prefixes = if prefixes.al <> Aligned then failwith "an unaligned prefix is not allowed here"; if prefixes.vol <> Nonvolatile then failwith "a volatile prefix is not allowed here"; if prefixes.constrained <> None then failwith "a constrained prefix is not allowed here"; if prefixes.ro <> NormalAddress then failwith "a readonly prefix is not allowed here"; mk prefixes.tl let constraintOrTailPrefix mk prefixes = if prefixes.al <> Aligned then failwith "an unaligned prefix is not allowed here"; if prefixes.vol <> Nonvolatile then failwith "a volatile prefix is not allowed here"; if prefixes.ro <> NormalAddress then failwith "a readonly prefix is not allowed here"; mk (prefixes.constrained,prefixes.tl ) let readonlyPrefix mk prefixes = if prefixes.al <> Aligned then failwith "an unaligned prefix is not allowed here"; if prefixes.vol <> Nonvolatile then failwith "a volatile prefix is not allowed here"; if prefixes.tl <> Normalcall then failwith "a tailcall prefix is not allowed here"; if prefixes.constrained <> None then failwith "a constrained prefix is not allowed here"; mk prefixes.ro [] type ILInstrDecoder = | I_u16_u8_instr of (ILInstrPrefixesRegister -> uint16 -> ILInstr) | I_u16_u16_instr of (ILInstrPrefixesRegister -> uint16 -> ILInstr) | I_none_instr of (ILInstrPrefixesRegister -> ILInstr) | I_i64_instr of (ILInstrPrefixesRegister -> int64 -> ILInstr) | I_i32_i32_instr of (ILInstrPrefixesRegister -> int32 -> ILInstr) | I_i32_i8_instr of (ILInstrPrefixesRegister -> int32 -> ILInstr) | I_r4_instr of (ILInstrPrefixesRegister -> single -> ILInstr) | I_r8_instr of (ILInstrPrefixesRegister -> double -> ILInstr) | I_field_instr of (ILInstrPrefixesRegister -> ILFieldSpec -> ILInstr) | I_method_instr of (ILInstrPrefixesRegister -> ILMethodSpec * ILVarArgs -> ILInstr) | I_unconditional_i32_instr of (ILInstrPrefixesRegister -> ILCodeLabel -> ILInstr) | I_unconditional_i8_instr of (ILInstrPrefixesRegister -> ILCodeLabel -> ILInstr) | I_conditional_i32_instr of (ILInstrPrefixesRegister -> ILCodeLabel * ILCodeLabel -> ILInstr) | I_conditional_i8_instr of (ILInstrPrefixesRegister -> ILCodeLabel * ILCodeLabel -> ILInstr) | I_string_instr of (ILInstrPrefixesRegister -> string -> ILInstr) | I_switch_instr of (ILInstrPrefixesRegister -> ILCodeLabel list * ILCodeLabel -> ILInstr) | I_tok_instr of (ILInstrPrefixesRegister -> ILToken -> ILInstr) | I_sig_instr of (ILInstrPrefixesRegister -> ILCallingSignature * ILVarArgs -> ILInstr) | I_type_instr of (ILInstrPrefixesRegister -> ILType -> ILInstr) | I_invalid_instr let mkStind dt = volatileOrUnalignedPrefix (fun (x,y) -> I_stind(x,y,dt)) let mkLdind dt = volatileOrUnalignedPrefix (fun (x,y) -> I_ldind(x,y,dt)) let instrs () = [ i_ldarg_s, I_u16_u8_instr (noPrefixes mkLdarg); i_starg_s, I_u16_u8_instr (noPrefixes I_starg); i_ldarga_s, I_u16_u8_instr (noPrefixes I_ldarga); i_stloc_s, I_u16_u8_instr (noPrefixes mkStloc); i_ldloc_s, I_u16_u8_instr (noPrefixes mkLdloc); i_ldloca_s, I_u16_u8_instr (noPrefixes I_ldloca); i_ldarg, I_u16_u16_instr (noPrefixes mkLdarg); i_starg, I_u16_u16_instr (noPrefixes I_starg); i_ldarga, I_u16_u16_instr (noPrefixes I_ldarga); i_stloc, I_u16_u16_instr (noPrefixes mkStloc); i_ldloc, I_u16_u16_instr (noPrefixes mkLdloc); i_ldloca, I_u16_u16_instr (noPrefixes I_ldloca); i_stind_i, I_none_instr (mkStind DT_I); i_stind_i1, I_none_instr (mkStind DT_I1); i_stind_i2, I_none_instr (mkStind DT_I2); i_stind_i4, I_none_instr (mkStind DT_I4); i_stind_i8, I_none_instr (mkStind DT_I8); i_stind_r4, I_none_instr (mkStind DT_R4); i_stind_r8, I_none_instr (mkStind DT_R8); i_stind_ref, I_none_instr (mkStind DT_REF); i_ldind_i, I_none_instr (mkLdind DT_I); i_ldind_i1, I_none_instr (mkLdind DT_I1); i_ldind_i2, I_none_instr (mkLdind DT_I2); i_ldind_i4, I_none_instr (mkLdind DT_I4); i_ldind_i8, I_none_instr (mkLdind DT_I8); i_ldind_u1, I_none_instr (mkLdind DT_U1); i_ldind_u2, I_none_instr (mkLdind DT_U2); i_ldind_u4, I_none_instr (mkLdind DT_U4); i_ldind_r4, I_none_instr (mkLdind DT_R4); i_ldind_r8, I_none_instr (mkLdind DT_R8); i_ldind_ref, I_none_instr (mkLdind DT_REF); i_cpblk, I_none_instr (volatileOrUnalignedPrefix I_cpblk); i_initblk, I_none_instr (volatileOrUnalignedPrefix I_initblk); i_ldc_i8, I_i64_instr (noPrefixes (fun x ->(AI_ldc (DT_I8, ILConst.I8 x)))); i_ldc_i4, I_i32_i32_instr (noPrefixes mkLdcInt32); i_ldc_i4_s, I_i32_i8_instr (noPrefixes mkLdcInt32); i_ldc_r4, I_r4_instr (noPrefixes (fun x -> (AI_ldc (DT_R4, ILConst.R4 x)))); i_ldc_r8, I_r8_instr (noPrefixes (fun x -> (AI_ldc (DT_R8, ILConst.R8 x)))); i_ldfld, I_field_instr (volatileOrUnalignedPrefix(fun (x,y) fspec -> I_ldfld(x,y,fspec))); i_stfld, I_field_instr (volatileOrUnalignedPrefix(fun (x,y) fspec -> I_stfld(x,y,fspec))); i_ldsfld, I_field_instr (volatilePrefix (fun x fspec -> I_ldsfld (x, fspec))); i_stsfld, I_field_instr (volatilePrefix (fun x fspec -> I_stsfld (x, fspec))); i_ldflda, I_field_instr (noPrefixes I_ldflda); i_ldsflda, I_field_instr (noPrefixes I_ldsflda); i_call, I_method_instr (tailPrefix (fun tl (mspec,y) -> I_call (tl,mspec,y))); i_ldftn, I_method_instr (noPrefixes (fun (mspec,_y) -> I_ldftn mspec)); i_ldvirtftn, I_method_instr (noPrefixes (fun (mspec,_y) -> I_ldvirtftn mspec)); i_newobj, I_method_instr (noPrefixes I_newobj); i_callvirt, I_method_instr (constraintOrTailPrefix (fun (c,tl) (mspec,y) -> match c with Some ty -> I_callconstraint(tl,ty,mspec,y) | None -> I_callvirt (tl,mspec,y))); i_leave_s, I_unconditional_i8_instr (noPrefixes (fun x -> I_leave x)); i_br_s, I_unconditional_i8_instr (noPrefixes I_br); i_leave, I_unconditional_i32_instr (noPrefixes (fun x -> I_leave x)); i_br, I_unconditional_i32_instr (noPrefixes I_br); i_brtrue_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_brtrue,x,y))); i_brfalse_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_brfalse,x,y))); i_beq_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_beq,x,y))); i_blt_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_blt,x,y))); i_blt_un_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_blt_un,x,y))); i_ble_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_ble,x,y))); i_ble_un_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_ble_un,x,y))); i_bgt_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bgt,x,y))); i_bgt_un_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bgt_un,x,y))); i_bge_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bge,x,y))); i_bge_un_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bge_un,x,y))); i_bne_un_s, I_conditional_i8_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bne_un,x,y))); i_brtrue, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_brtrue,x,y))); i_brfalse, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_brfalse,x,y))); i_beq, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_beq,x,y))); i_blt, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_blt,x,y))); i_blt_un, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_blt_un,x,y))); i_ble, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_ble,x,y))); i_ble_un, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_ble_un,x,y))); i_bgt, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bgt,x,y))); i_bgt_un, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bgt_un,x,y))); i_bge, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bge,x,y))); i_bge_un, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bge_un,x,y))); i_bne_un, I_conditional_i32_instr (noPrefixes (fun (x,y) -> I_brcmp (BI_bne_un,x,y))); i_ldstr, I_string_instr (noPrefixes I_ldstr); i_switch, I_switch_instr (noPrefixes I_switch); i_ldtoken, I_tok_instr (noPrefixes I_ldtoken); i_calli, I_sig_instr (tailPrefix (fun tl (x,y) -> I_calli (tl, x, y))); i_mkrefany, I_type_instr (noPrefixes I_mkrefany); i_refanyval, I_type_instr (noPrefixes I_refanyval); i_ldelema, I_type_instr (readonlyPrefix (fun ro x -> I_ldelema (ro,false,ILArrayShape.SingleDimensional,x))); i_ldelem_any, I_type_instr (noPrefixes (fun x -> I_ldelem_any (ILArrayShape.SingleDimensional,x))); i_stelem_any, I_type_instr (noPrefixes (fun x -> I_stelem_any (ILArrayShape.SingleDimensional,x))); i_newarr, I_type_instr (noPrefixes (fun x -> I_newarr (ILArrayShape.SingleDimensional,x))); i_castclass, I_type_instr (noPrefixes I_castclass); i_isinst, I_type_instr (noPrefixes I_isinst); i_unbox_any, I_type_instr (noPrefixes I_unbox_any); i_cpobj, I_type_instr (noPrefixes I_cpobj); i_initobj, I_type_instr (noPrefixes I_initobj); i_ldobj, I_type_instr (volatileOrUnalignedPrefix (fun (x,y) z -> I_ldobj (x,y,z))); i_stobj, I_type_instr (volatileOrUnalignedPrefix (fun (x,y) z -> I_stobj (x,y,z))); i_sizeof, I_type_instr (noPrefixes I_sizeof); i_box, I_type_instr (noPrefixes I_box); i_unbox, I_type_instr (noPrefixes I_unbox); ] // The tables are delayed to avoid building them unnecessarily at startup // Many applications of AbsIL (e.g. a compiler) don't need to read instructions. let oneByteInstrs = ref None let twoByteInstrs = ref None let fillInstrs () = let oneByteInstrTable = Array.create 256 I_invalid_instr let twoByteInstrTable = Array.create 256 I_invalid_instr let addInstr (i,f) = if i > 0xff then assert (i >>>& 8 = 0xfe); let i = (i &&& 0xff) match twoByteInstrTable.[i] with | I_invalid_instr -> () | _ -> dprintn ("warning: duplicate decode entries for "+string i); twoByteInstrTable.[i] <- f else match oneByteInstrTable.[i] with | I_invalid_instr -> () | _ -> dprintn ("warning: duplicate decode entries for "+string i); oneByteInstrTable.[i] <- f List.iter addInstr (instrs()); List.iter (fun (x,mk) -> addInstr (x,I_none_instr (noPrefixes mk))) (noArgInstrs.Force()); oneByteInstrs := Some oneByteInstrTable; twoByteInstrs := Some twoByteInstrTable let rec getOneByteInstr i = match !oneByteInstrs with | None -> fillInstrs(); getOneByteInstr i | Some t -> t.[i] let rec getTwoByteInstr i = match !twoByteInstrs with | None -> fillInstrs(); getTwoByteInstr i | Some t -> t.[i] //--------------------------------------------------------------------- // //--------------------------------------------------------------------- type ImageChunk = { size: int32; addr: int32 } let chunk sz next = ({addr=next; size=sz},next + sz) let nochunk next = ({addr= 0x0;size= 0x0; } ,next) type RowElementKind = | UShort | ULong | Byte | Data | GGuid | Blob | SString | SimpleIndex of TableName | TypeDefOrRefOrSpec | TypeOrMethodDef | HasConstant | HasCustomAttribute | HasFieldMarshal | HasDeclSecurity | MemberRefParent | HasSemantics | MethodDefOrRef | MemberForwarded | Implementation | CustomAttributeType | ResolutionScope type RowKind = RowKind of RowElementKind list let kindAssemblyRef = RowKind [ UShort; UShort; UShort; UShort; ULong; Blob; SString; SString; Blob; ] let kindModuleRef = RowKind [ SString ] let kindFileRef = RowKind [ ULong; SString; Blob ] let kindTypeRef = RowKind [ ResolutionScope; SString; SString ] let kindTypeSpec = RowKind [ Blob ] let kindTypeDef = RowKind [ ULong; SString; SString; TypeDefOrRefOrSpec; SimpleIndex TableNames.Field; SimpleIndex TableNames.Method ] let kindPropertyMap = RowKind [ SimpleIndex TableNames.TypeDef; SimpleIndex TableNames.Property ] let kindEventMap = RowKind [ SimpleIndex TableNames.TypeDef; SimpleIndex TableNames.Event ] let kindInterfaceImpl = RowKind [ SimpleIndex TableNames.TypeDef; TypeDefOrRefOrSpec ] let kindNested = RowKind [ SimpleIndex TableNames.TypeDef; SimpleIndex TableNames.TypeDef ] let kindCustomAttribute = RowKind [ HasCustomAttribute; CustomAttributeType; Blob ] let kindDeclSecurity = RowKind [ UShort; HasDeclSecurity; Blob ] let kindMemberRef = RowKind [ MemberRefParent; SString; Blob ] let kindStandAloneSig = RowKind [ Blob ] let kindFieldDef = RowKind [ UShort; SString; Blob ] let kindFieldRVA = RowKind [ Data; SimpleIndex TableNames.Field ] let kindFieldMarshal = RowKind [ HasFieldMarshal; Blob ] let kindConstant = RowKind [ UShort;HasConstant; Blob ] let kindFieldLayout = RowKind [ ULong; SimpleIndex TableNames.Field ] let kindParam = RowKind [ UShort; UShort; SString ] let kindMethodDef = RowKind [ ULong; UShort; UShort; SString; Blob; SimpleIndex TableNames.Param ] let kindMethodImpl = RowKind [ SimpleIndex TableNames.TypeDef; MethodDefOrRef; MethodDefOrRef ] let kindImplMap = RowKind [ UShort; MemberForwarded; SString; SimpleIndex TableNames.ModuleRef ] let kindMethodSemantics = RowKind [ UShort; SimpleIndex TableNames.Method; HasSemantics ] let kindProperty = RowKind [ UShort; SString; Blob ] let kindEvent = RowKind [ UShort; SString; TypeDefOrRefOrSpec ] let kindManifestResource = RowKind [ ULong; ULong; SString; Implementation ] let kindClassLayout = RowKind [ UShort; ULong; SimpleIndex TableNames.TypeDef ] let kindExportedType = RowKind [ ULong; ULong; SString; SString; Implementation ] let kindAssembly = RowKind [ ULong; UShort; UShort; UShort; UShort; ULong; Blob; SString; SString ] let kindGenericParam_v1_1 = RowKind [ UShort; UShort; TypeOrMethodDef; SString; TypeDefOrRefOrSpec ] let kindGenericParam_v2_0 = RowKind [ UShort; UShort; TypeOrMethodDef; SString ] let kindMethodSpec = RowKind [ MethodDefOrRef; Blob ] let kindGenericParamConstraint = RowKind [ SimpleIndex TableNames.GenericParam; TypeDefOrRefOrSpec ] let kindModule = RowKind [ UShort; SString; GGuid; GGuid; GGuid ] let kindIllegal = RowKind [ ] //--------------------------------------------------------------------- // Used for binary searches of sorted tables. Each function that reads // a table row returns a tuple that contains the elements of the row. // One of these elements may be a key for a sorted table. These // keys can be compared using the functions below depending on the // kind of element in that column. //--------------------------------------------------------------------- let hcCompare (TaggedIndex((t1: HasConstantTag), (idx1:int))) (TaggedIndex((t2: HasConstantTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let hsCompare (TaggedIndex((t1:HasSemanticsTag), (idx1:int))) (TaggedIndex((t2:HasSemanticsTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let hcaCompare (TaggedIndex((t1:HasCustomAttributeTag), (idx1:int))) (TaggedIndex((t2:HasCustomAttributeTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let mfCompare (TaggedIndex((t1:MemberForwardedTag), (idx1:int))) (TaggedIndex((t2:MemberForwardedTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let hdsCompare (TaggedIndex((t1:HasDeclSecurityTag), (idx1:int))) (TaggedIndex((t2:HasDeclSecurityTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let hfmCompare (TaggedIndex((t1:HasFieldMarshalTag), idx1)) (TaggedIndex((t2:HasFieldMarshalTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let tomdCompare (TaggedIndex((t1:TypeOrMethodDefTag), idx1)) (TaggedIndex((t2:TypeOrMethodDefTag), idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag let simpleIndexCompare (idx1:int) (idx2:int) = compare idx1 idx2 //--------------------------------------------------------------------- // The various keys for the various caches. //--------------------------------------------------------------------- type TypeDefAsTypIdx = TypeDefAsTypIdx of ILBoxity * ILGenericArgs * int type TypeRefAsTypIdx = TypeRefAsTypIdx of ILBoxity * ILGenericArgs * int type BlobAsMethodSigIdx = BlobAsMethodSigIdx of int * int32 type BlobAsFieldSigIdx = BlobAsFieldSigIdx of int * int32 type BlobAsPropSigIdx = BlobAsPropSigIdx of int * int32 type BlobAsLocalSigIdx = BlobAsLocalSigIdx of int * int32 type MemberRefAsMspecIdx = MemberRefAsMspecIdx of int * int type MethodSpecAsMspecIdx = MethodSpecAsMspecIdx of int * int type MemberRefAsFspecIdx = MemberRefAsFspecIdx of int * int type CustomAttrIdx = CustomAttrIdx of CustomAttributeTypeTag * int * int32 type SecurityDeclIdx = SecurityDeclIdx of uint16 * int32 type GenericParamsIdx = GenericParamsIdx of int * TypeOrMethodDefTag * int //--------------------------------------------------------------------- // Polymorphic caches for row and heap readers //--------------------------------------------------------------------- let mkCacheInt32 lowMem _inbase _nm _sz = if lowMem then (fun f x -> f x) else let cache = ref null let count = ref 0 #if STATISTICS addReport (fun oc -> if !count <> 0 then oc.WriteLine ((_inbase + string !count + " "+ _nm + " cache hits") : string)); #endif fun f (idx:int32) -> let cache = match !cache with | null -> cache := new Dictionary(11) | _ -> () !cache let mutable res = Unchecked.defaultof<_> let ok = cache.TryGetValue(idx, &res) if ok then incr count; res else let res = f idx cache.[idx] <- res; res let mkCacheGeneric lowMem _inbase _nm _sz = if lowMem then (fun f x -> f x) else let cache = ref null let count = ref 0 #if STATISTICS addReport (fun oc -> if !count <> 0 then oc.WriteLine ((_inbase + string !count + " " + _nm + " cache hits") : string)); #endif fun f (idx :'T) -> let cache = match !cache with | null -> cache := new Dictionary<_,_>(11 (* sz:int *) ) | _ -> () !cache if cache.ContainsKey idx then (incr count; cache.[idx]) else let res = f idx in cache.[idx] <- res; res //----------------------------------------------------------------------- // Polymorphic general helpers for searching for particular rows. // ---------------------------------------------------------------------- let seekFindRow numRows rowChooser = let mutable i = 1 while (i <= numRows && not (rowChooser i)) do i <- i + 1; if i > numRows then dprintn "warning: seekFindRow: row not found"; i // search for rows satisfying predicate let seekReadIndexedRows (numRows, rowReader, keyFunc, keyComparer, binaryChop, rowConverter) = if binaryChop then let mutable low = 0 let mutable high = numRows + 1 begin let mutable fin = false while not fin do if high - low <= 1 then fin <- true else let mid = (low + high) / 2 let midrow = rowReader mid let c = keyComparer (keyFunc midrow) if c > 0 then low <- mid elif c < 0 then high <- mid else fin <- true end; let mutable res = [] if high - low > 1 then // now read off rows, forward and backwards let mid = (low + high) / 2 // read forward begin let mutable fin = false let mutable curr = mid while not fin do if curr > numRows then fin <- true; else let currrow = rowReader curr if keyComparer (keyFunc currrow) = 0 then res <- rowConverter currrow :: res; else fin <- true; curr <- curr + 1; done; end; res <- List.rev res; // read backwards begin let mutable fin = false let mutable curr = mid - 1 while not fin do if curr = 0 then fin <- true else let currrow = rowReader curr if keyComparer (keyFunc currrow) = 0 then res <- rowConverter currrow :: res; else fin <- true; curr <- curr - 1; end; // sanity check #if CHECKING if checking then let res2 = [ for i = 1 to numRows do let rowinfo = rowReader i if keyComparer (keyFunc rowinfo) = 0 then yield rowConverter rowinfo ] if (res2 <> res) then failwith ("results of binary search did not match results of linear search: linear search produced "+string res2.Length+", binary search produced "+string res.Length) #endif res else let res = ref [] for i = 1 to numRows do let rowinfo = rowReader i if keyComparer (keyFunc rowinfo) = 0 then res := rowConverter rowinfo :: !res; List.rev !res let seekReadOptionalIndexedRow (info) = match seekReadIndexedRows info with | [k] -> Some k | [] -> None | h::_ -> dprintn ("multiple rows found when indexing table"); Some h let seekReadIndexedRow (info) = match seekReadOptionalIndexedRow info with | Some row -> row | None -> failwith ("no row found for key when indexing table") //--------------------------------------------------------------------- // The big fat reader. //--------------------------------------------------------------------- type ILModuleReader = { modul: ILModuleDef; ilAssemblyRefs: Lazy dispose: unit -> unit } member x.ILModuleDef = x.modul member x.ILAssemblyRefs = x.ilAssemblyRefs.Force() type MethodData = MethodData of ILType * ILCallingConv * string * ILTypes * ILType * ILTypes type VarArgMethodData = VarArgMethodData of ILType * ILCallingConv * string * ILTypes * ILVarArgs * ILType * ILTypes [] type ILReaderContext = { ilg: ILGlobals; dataEndPoints: Lazy; sorted: int64; #if NO_PDB_READER pdb: obj option; #else pdb: (PdbReader * (string -> ILSourceDocument)) option; #endif entryPointToken: TableName * int; getNumRows: TableName -> int; textSegmentPhysicalLoc : int32; textSegmentPhysicalSize : int32; dataSegmentPhysicalLoc : int32; dataSegmentPhysicalSize : int32; anyV2P : (string * int32) -> int32; metadataAddr: int32; sectionHeaders : (int32 * int32 * int32) list; nativeResourcesAddr:int32; nativeResourcesSize:int32; resourcesAddr:int32; strongnameAddr:int32; vtableFixupsAddr:int32; is: InputChannel; infile:string; userStringsStreamPhysicalLoc: int32; stringsStreamPhysicalLoc: int32; blobsStreamPhysicalLoc: int32; readUserStringHeap: (int32 -> string); memoizeString: string -> string; readStringHeap: (int32 -> string); readBlobHeap: (int32 -> byte[]); guidsStreamPhysicalLoc : int32; rowAddr : (TableName -> int -> int32); tableBigness : bool array; rsBigness : bool; tdorBigness : bool; tomdBigness : bool; hcBigness : bool; hcaBigness : bool; hfmBigness : bool; hdsBigness : bool; mrpBigness : bool; hsBigness : bool; mdorBigness : bool; mfBigness : bool; iBigness : bool; catBigness : bool; stringsBigness: bool; guidsBigness: bool; blobsBigness: bool; countTypeRef : int ref; countTypeDef : int ref; countField : int ref; countMethod : int ref; countParam : int ref; countInterfaceImpl : int ref; countMemberRef : int ref; countConstant : int ref; countCustomAttribute : int ref; countFieldMarshal: int ref; countPermission : int ref; countClassLayout : int ref; countFieldLayout : int ref; countStandAloneSig : int ref; countEventMap : int ref; countEvent : int ref; countPropertyMap : int ref; countProperty : int ref; countMethodSemantics : int ref; countMethodImpl : int ref; countModuleRef : int ref; countTypeSpec : int ref; countImplMap : int ref; countFieldRVA : int ref; countAssembly : int ref; countAssemblyRef : int ref; countFile : int ref; countExportedType : int ref; countManifestResource : int ref; countNested : int ref; countGenericParam : int ref; countGenericParamConstraint : int ref; countMethodSpec : int ref; seekReadNestedRow : int -> int * int; seekReadConstantRow : int -> uint16 * TaggedIndex * int32; seekReadMethodSemanticsRow : int -> int32 * int * TaggedIndex; seekReadTypeDefRow : int -> int32 * int32 * int32 * TaggedIndex * int * int; seekReadInterfaceImplRow : int -> int * TaggedIndex; seekReadFieldMarshalRow : int -> TaggedIndex * int32; seekReadPropertyMapRow : int -> int * int; seekReadAssemblyRef : int -> ILAssemblyRef; seekReadMethodSpecAsMethodData : MethodSpecAsMspecIdx -> VarArgMethodData; seekReadMemberRefAsMethodData : MemberRefAsMspecIdx -> VarArgMethodData; seekReadMemberRefAsFieldSpec : MemberRefAsFspecIdx -> ILFieldSpec; seekReadCustomAttr : CustomAttrIdx -> ILAttribute; seekReadSecurityDecl : SecurityDeclIdx -> ILPermission; seekReadTypeRef : int ->ILTypeRef; seekReadTypeRefAsType : TypeRefAsTypIdx -> ILType; readBlobHeapAsPropertySig : BlobAsPropSigIdx -> ILThisConvention * ILType * ILTypes; readBlobHeapAsFieldSig : BlobAsFieldSigIdx -> ILType; readBlobHeapAsMethodSig : BlobAsMethodSigIdx -> bool * int32 * ILCallingConv * ILType * ILTypes * ILVarArgs; readBlobHeapAsLocalsSig : BlobAsLocalSigIdx -> ILLocal list; seekReadTypeDefAsType : TypeDefAsTypIdx -> ILType; seekReadMethodDefAsMethodData : int -> MethodData; seekReadGenericParams : GenericParamsIdx -> ILGenericParameterDef list; seekReadFieldDefAsFieldSpec : int -> ILFieldSpec; } let readUntaggedIdx (tab:TableName) ctxt = if ctxt.tableBigness.[tab.Index] then readInt32 ctxt.is else readUInt16AsInt32 ctxt.is let readResolutionScopeIdx ctxt = readTaggedIdx mkResolutionScopeTag 2 ctxt.rsBigness ctxt.is let readTypeDefOrRefOrSpecIdx ctxt = readTaggedIdx mkTypeDefOrRefOrSpecTag 2 ctxt.tdorBigness ctxt.is let readTypeOrMethodDefIdx ctxt = readTaggedIdx mkTypeOrMethodDefTag 1 ctxt.tomdBigness ctxt.is let readHasConstantIdx ctxt = readTaggedIdx mkHasConstantTag 2 ctxt.hcBigness ctxt.is let readHasCustomAttributeIdx ctxt = readTaggedIdx mkHasCustomAttributeTag 5 ctxt.hcaBigness ctxt.is let readHasFieldMarshalIdx ctxt = readTaggedIdx mkHasFieldMarshalTag 1 ctxt.hfmBigness ctxt.is let readHasDeclSecurityIdx ctxt = readTaggedIdx mkHasDeclSecurityTag 2 ctxt.hdsBigness ctxt.is let readMemberRefParentIdx ctxt = readTaggedIdx mkMemberRefParentTag 3 ctxt.mrpBigness ctxt.is let readHasSemanticsIdx ctxt = readTaggedIdx mkHasSemanticsTag 1 ctxt.hsBigness ctxt.is let readMethodDefOrRefIdx ctxt = readTaggedIdx mkMethodDefOrRefTag 1 ctxt.mdorBigness ctxt.is let readMemberForwardedIdx ctxt = readTaggedIdx mkMemberForwardedTag 1 ctxt.mfBigness ctxt.is let readImplementationIdx ctxt = readTaggedIdx mkImplementationTag 2 ctxt.iBigness ctxt.is let readCustomAttributeTypeIdx ctxt = readTaggedIdx mkILCustomAttributeTypeTag 3 ctxt.catBigness ctxt.is let readStringIdx ctxt = if ctxt.stringsBigness then readInt32 ctxt.is else readUInt16AsInt32 ctxt.is let readGuidIdx ctxt = if ctxt.guidsBigness then readInt32 ctxt.is else readUInt16AsInt32 ctxt.is let readBlobIdx ctxt = if ctxt.blobsBigness then readInt32 ctxt.is else readUInt16AsInt32 ctxt.is let count c = #if DEBUG incr c #else c |> ignore () #endif let seekReadModuleRow ctxt idx = if idx = 0 then failwith "cannot read Module table row 0"; let addr = ctxt.rowAddr TableNames.Module idx seek ctxt.is addr; let generation = readUInt16 ctxt.is let nameIdx = readStringIdx ctxt let mvidIdx = readGuidIdx ctxt let encidIdx = readGuidIdx ctxt let encbaseidIdx = readGuidIdx ctxt (generation, nameIdx, mvidIdx, encidIdx, encbaseidIdx) /// Read Table ILTypeRef let seekReadTypeRefRow ctxt idx = count ctxt.countTypeRef; let addr = ctxt.rowAddr TableNames.TypeRef idx seek ctxt.is addr; let scopeIdx = readResolutionScopeIdx ctxt let nameIdx = readStringIdx ctxt let namespaceIdx = readStringIdx ctxt (scopeIdx,nameIdx,namespaceIdx) /// Read Table ILTypeDef let seekReadTypeDefRow ctxt idx = ctxt.seekReadTypeDefRow idx let seekReadTypeDefRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countTypeDef; let addr = ctxt.rowAddr TableNames.TypeDef idx seek ctxt.is addr; let flags = readInt32 ctxt.is let nameIdx = readStringIdx ctxt let namespaceIdx = readStringIdx ctxt let extendsIdx = readTypeDefOrRefOrSpecIdx ctxt let fieldsIdx = readUntaggedIdx TableNames.Field ctxt let methodsIdx = readUntaggedIdx TableNames.Method ctxt (flags, nameIdx, namespaceIdx, extendsIdx, fieldsIdx, methodsIdx) /// Read Table Field let seekReadFieldRow ctxt idx = count ctxt.countField; let addr = ctxt.rowAddr TableNames.Field idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let nameIdx = readStringIdx ctxt let typeIdx = readBlobIdx ctxt (flags,nameIdx,typeIdx) /// Read Table Method let seekReadMethodRow ctxt idx = count ctxt.countMethod; let addr = ctxt.rowAddr TableNames.Method idx seek ctxt.is addr; let codeRVA = readInt32 ctxt.is let implflags = readUInt16AsInt32 ctxt.is let flags = readUInt16AsInt32 ctxt.is let nameIdx = readStringIdx ctxt let typeIdx = readBlobIdx ctxt let paramIdx = readUntaggedIdx TableNames.Param ctxt (codeRVA, implflags, flags, nameIdx, typeIdx, paramIdx) /// Read Table Param let seekReadParamRow ctxt idx = count ctxt.countParam; let addr = ctxt.rowAddr TableNames.Param idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let seq = (readUInt16AsInt32 ctxt.is) let nameIdx = readStringIdx ctxt (flags,seq,nameIdx) /// Read Table InterfaceImpl let seekReadInterfaceImplRow ctxt idx = ctxt.seekReadInterfaceImplRow idx let seekReadInterfaceImplRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countInterfaceImpl; let addr = ctxt.rowAddr TableNames.InterfaceImpl idx seek ctxt.is addr; let tidx = readUntaggedIdx TableNames.TypeDef ctxt let intfIdx = readTypeDefOrRefOrSpecIdx ctxt (tidx,intfIdx) /// Read Table MemberRef let seekReadMemberRefRow ctxt idx = count ctxt.countMemberRef; let addr = ctxt.rowAddr TableNames.MemberRef idx seek ctxt.is addr; let mrpIdx = readMemberRefParentIdx ctxt let nameIdx = readStringIdx ctxt let typeIdx = readBlobIdx ctxt (mrpIdx,nameIdx,typeIdx) /// Read Table Constant let seekReadConstantRow ctxt idx = ctxt.seekReadConstantRow idx let seekReadConstantRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countConstant; let addr = ctxt.rowAddr TableNames.Constant idx seek ctxt.is addr; let kind = readUInt16 ctxt.is let parentIdx = readHasConstantIdx ctxt let valIdx = readBlobIdx ctxt (kind, parentIdx, valIdx) /// Read Table CustomAttribute let seekReadCustomAttributeRow ctxt idx = count ctxt.countCustomAttribute; let addr = ctxt.rowAddr TableNames.CustomAttribute idx seek ctxt.is addr; let parentIdx = readHasCustomAttributeIdx ctxt let typeIdx = readCustomAttributeTypeIdx ctxt let valIdx = readBlobIdx ctxt (parentIdx, typeIdx, valIdx) /// Read Table FieldMarshal let seekReadFieldMarshalRow ctxt idx = ctxt.seekReadFieldMarshalRow idx let seekReadFieldMarshalRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countFieldMarshal; let addr = ctxt.rowAddr TableNames.FieldMarshal idx seek ctxt.is addr; let parentIdx = readHasFieldMarshalIdx ctxt let typeIdx = readBlobIdx ctxt (parentIdx, typeIdx) /// Read Table Permission let seekReadPermissionRow ctxt idx = count ctxt.countPermission; let addr = ctxt.rowAddr TableNames.Permission idx seek ctxt.is addr; let action = readUInt16 ctxt.is let parentIdx = readHasDeclSecurityIdx ctxt let typeIdx = readBlobIdx ctxt (action,parentIdx, typeIdx) /// Read Table ClassLayout let seekReadClassLayoutRow ctxt idx = count ctxt.countClassLayout; let addr = ctxt.rowAddr TableNames.ClassLayout idx seek ctxt.is addr; let pack = readUInt16 ctxt.is let size = readInt32 ctxt.is let tidx = readUntaggedIdx TableNames.TypeDef ctxt (pack,size,tidx) /// Read Table FieldLayout let seekReadFieldLayoutRow ctxt idx = count ctxt.countFieldLayout; let addr = ctxt.rowAddr TableNames.FieldLayout idx seek ctxt.is addr; let offset = readInt32 ctxt.is let fidx = readUntaggedIdx TableNames.Field ctxt (offset,fidx) //// Read Table StandAloneSig let seekReadStandAloneSigRow ctxt idx = count ctxt.countStandAloneSig; let addr = ctxt.rowAddr TableNames.StandAloneSig idx seek ctxt.is addr; let sigIdx = readBlobIdx ctxt sigIdx /// Read Table EventMap let seekReadEventMapRow ctxt idx = count ctxt.countEventMap; let addr = ctxt.rowAddr TableNames.EventMap idx seek ctxt.is addr; let tidx = readUntaggedIdx TableNames.TypeDef ctxt let eventsIdx = readUntaggedIdx TableNames.Event ctxt (tidx,eventsIdx) /// Read Table Event let seekReadEventRow ctxt idx = count ctxt.countEvent; let addr = ctxt.rowAddr TableNames.Event idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let nameIdx = readStringIdx ctxt let typIdx = readTypeDefOrRefOrSpecIdx ctxt (flags,nameIdx,typIdx) /// Read Table PropertyMap let seekReadPropertyMapRow ctxt idx = ctxt.seekReadPropertyMapRow idx let seekReadPropertyMapRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countPropertyMap; let addr = ctxt.rowAddr TableNames.PropertyMap idx seek ctxt.is addr; let tidx = readUntaggedIdx TableNames.TypeDef ctxt let propsIdx = readUntaggedIdx TableNames.Property ctxt (tidx,propsIdx) /// Read Table Property let seekReadPropertyRow ctxt idx = count ctxt.countProperty; let addr = ctxt.rowAddr TableNames.Property idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let nameIdx = readStringIdx ctxt let typIdx = readBlobIdx ctxt (flags,nameIdx,typIdx) /// Read Table MethodSemantics let seekReadMethodSemanticsRow ctxt idx = ctxt.seekReadMethodSemanticsRow idx let seekReadMethodSemanticsRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countMethodSemantics; let addr = ctxt.rowAddr TableNames.MethodSemantics idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let midx = readUntaggedIdx TableNames.Method ctxt let assocIdx = readHasSemanticsIdx ctxt (flags,midx,assocIdx) /// Read Table MethodImpl let seekReadMethodImplRow ctxt idx = count ctxt.countMethodImpl; let addr = ctxt.rowAddr TableNames.MethodImpl idx seek ctxt.is addr; let tidx = readUntaggedIdx TableNames.TypeDef ctxt let mbodyIdx = readMethodDefOrRefIdx ctxt let mdeclIdx = readMethodDefOrRefIdx ctxt (tidx,mbodyIdx,mdeclIdx) /// Read Table ILModuleRef let seekReadModuleRefRow ctxt idx = count ctxt.countModuleRef; let addr = ctxt.rowAddr TableNames.ModuleRef idx seek ctxt.is addr; let nameIdx = readStringIdx ctxt nameIdx /// Read Table ILTypeSpec let seekReadTypeSpecRow ctxt idx = count ctxt.countTypeSpec; let addr = ctxt.rowAddr TableNames.TypeSpec idx seek ctxt.is addr; let blobIdx = readBlobIdx ctxt blobIdx /// Read Table ImplMap let seekReadImplMapRow ctxt idx = count ctxt.countImplMap; let addr = ctxt.rowAddr TableNames.ImplMap idx seek ctxt.is addr; let flags = readUInt16AsInt32 ctxt.is let forwrdedIdx = readMemberForwardedIdx ctxt let nameIdx = readStringIdx ctxt let scopeIdx = readUntaggedIdx TableNames.ModuleRef ctxt (flags, forwrdedIdx, nameIdx, scopeIdx) /// Read Table FieldRVA let seekReadFieldRVARow ctxt idx = count ctxt.countFieldRVA; let addr = ctxt.rowAddr TableNames.FieldRVA idx seek ctxt.is addr; let rva = readInt32 ctxt.is let fidx = readUntaggedIdx TableNames.Field ctxt (rva,fidx) /// Read Table Assembly let seekReadAssemblyRow ctxt idx = count ctxt.countAssembly; let addr = ctxt.rowAddr TableNames.Assembly idx seek ctxt.is addr; let hash = readInt32 ctxt.is let v1 = readUInt16 ctxt.is let v2 = readUInt16 ctxt.is let v3 = readUInt16 ctxt.is let v4 = readUInt16 ctxt.is let flags = readInt32 ctxt.is let publicKeyIdx = readBlobIdx ctxt let nameIdx = readStringIdx ctxt let localeIdx = readStringIdx ctxt (hash,v1,v2,v3,v4,flags,publicKeyIdx, nameIdx, localeIdx) /// Read Table ILAssemblyRef let seekReadAssemblyRefRow ctxt idx = count ctxt.countAssemblyRef; let addr = ctxt.rowAddr TableNames.AssemblyRef idx seek ctxt.is addr; let v1 = readUInt16 ctxt.is let v2 = readUInt16 ctxt.is let v3 = readUInt16 ctxt.is let v4 = readUInt16 ctxt.is let flags = readInt32 ctxt.is let publicKeyOrTokenIdx = readBlobIdx ctxt let nameIdx = readStringIdx ctxt let localeIdx = readStringIdx ctxt let hashValueIdx = readBlobIdx ctxt (v1,v2,v3,v4,flags,publicKeyOrTokenIdx, nameIdx, localeIdx,hashValueIdx) /// Read Table File let seekReadFileRow ctxt idx = count ctxt.countFile; let addr = ctxt.rowAddr TableNames.File idx seek ctxt.is addr; let flags = readInt32 ctxt.is let nameIdx = readStringIdx ctxt let hashValueIdx = readBlobIdx ctxt (flags, nameIdx, hashValueIdx) /// Read Table ILExportedTypeOrForwarder let seekReadExportedTypeRow ctxt idx = count ctxt.countExportedType; let addr = ctxt.rowAddr TableNames.ExportedType idx seek ctxt.is addr; let flags = readInt32 ctxt.is let tok = readInt32 ctxt.is let nameIdx = readStringIdx ctxt let namespaceIdx = readStringIdx ctxt let implIdx = readImplementationIdx ctxt (flags,tok,nameIdx,namespaceIdx,implIdx) /// Read Table ManifestResource let seekReadManifestResourceRow ctxt idx = count ctxt.countManifestResource; let addr = ctxt.rowAddr TableNames.ManifestResource idx seek ctxt.is addr; let offset = readInt32 ctxt.is let flags = readInt32 ctxt.is let nameIdx = readStringIdx ctxt let implIdx = readImplementationIdx ctxt (offset,flags,nameIdx,implIdx) /// Read Table Nested let seekReadNestedRow ctxt idx = ctxt.seekReadNestedRow idx let seekReadNestedRowUncached ctxtH idx = let ctxt = getHole ctxtH count ctxt.countNested; let addr = ctxt.rowAddr TableNames.Nested idx seek ctxt.is addr; let nestedIdx = readUntaggedIdx TableNames.TypeDef ctxt let enclIdx = readUntaggedIdx TableNames.TypeDef ctxt (nestedIdx,enclIdx) /// Read Table GenericParam let seekReadGenericParamRow ctxt idx = count ctxt.countGenericParam; let addr = ctxt.rowAddr TableNames.GenericParam idx seek ctxt.is addr; let seq = readUInt16 ctxt.is let flags = readUInt16 ctxt.is let ownerIdx = readTypeOrMethodDefIdx ctxt let nameIdx = readStringIdx ctxt (idx,seq,flags,ownerIdx,nameIdx) // Read Table GenericParamConstraint let seekReadGenericParamConstraintRow ctxt idx = count ctxt.countGenericParamConstraint; let addr = ctxt.rowAddr TableNames.GenericParamConstraint idx seek ctxt.is addr; let pidx = readUntaggedIdx TableNames.GenericParam ctxt let constraintIdx = readTypeDefOrRefOrSpecIdx ctxt (pidx,constraintIdx) /// Read Table ILMethodSpec let seekReadMethodSpecRow ctxt idx = count ctxt.countMethodSpec; let addr = ctxt.rowAddr TableNames.MethodSpec idx seek ctxt.is addr; let mdorIdx = readMethodDefOrRefIdx ctxt let instIdx = readBlobIdx ctxt (mdorIdx,instIdx) let readUserStringHeapUncached ctxtH idx = let ctxt = getHole ctxtH seekReadUserString ctxt.is (ctxt.userStringsStreamPhysicalLoc + idx) let readUserStringHeap ctxt idx = ctxt.readUserStringHeap idx let readStringHeapUncached ctxtH idx = let ctxt = getHole ctxtH seekReadUTF8String ctxt.is (ctxt.stringsStreamPhysicalLoc + idx) let readStringHeap ctxt idx = ctxt.readStringHeap idx let readStringHeapOption ctxt idx = if idx = 0 then None else Some (readStringHeap ctxt idx) let readBlobHeapUncached ctxtH idx = let ctxt = getHole ctxtH seekReadBlob ctxt.is (ctxt.blobsStreamPhysicalLoc + idx) let readBlobHeap ctxt idx = ctxt.readBlobHeap idx let readBlobHeapOption ctxt idx = if idx = 0 then None else Some (readBlobHeap ctxt idx) let readGuidHeap ctxt idx = seekReadGuid ctxt.is (ctxt.guidsStreamPhysicalLoc + idx) // read a single value out of a blob heap using the given function let readBlobHeapAsBool ctxt vidx = fst (sigptrGetBool (readBlobHeap ctxt vidx) 0) let readBlobHeapAsSByte ctxt vidx = fst (sigptrGetSByte (readBlobHeap ctxt vidx) 0) let readBlobHeapAsInt16 ctxt vidx = fst (sigptrGetInt16 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsInt32 ctxt vidx = fst (sigptrGetInt32 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsInt64 ctxt vidx = fst (sigptrGetInt64 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsByte ctxt vidx = fst (sigptrGetByte (readBlobHeap ctxt vidx) 0) let readBlobHeapAsUInt16 ctxt vidx = fst (sigptrGetUInt16 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsUInt32 ctxt vidx = fst (sigptrGetUInt32 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsUInt64 ctxt vidx = fst (sigptrGetUInt64 (readBlobHeap ctxt vidx) 0) let readBlobHeapAsSingle ctxt vidx = fst (sigptrGetSingle (readBlobHeap ctxt vidx) 0) let readBlobHeapAsDouble ctxt vidx = fst (sigptrGetDouble (readBlobHeap ctxt vidx) 0) //----------------------------------------------------------------------- // Some binaries have raw data embedded their text sections, e.g. mscorlib, for // field inits. And there is no information that definitively tells us the extent of // the text section that may be interesting data. But we certainly don't want to duplicate // the entire text section as data! // // So, we assume: // 1. no part of the metadata is double-used for raw data // 2. the data bits are all the bits of the text section // that stretch from a Field or Resource RVA to one of // (a) the next Field or resource RVA // (b) a MethodRVA // (c) the start of the metadata // (d) the end of a section // (e) the start of the native resources attached to the binary if any // ----------------------------------------------------------------------*) #if NO_PDB_READER let readNativeResources _ctxt = [] #else let readNativeResources ctxt = let nativeResources = if ctxt.nativeResourcesSize = 0x0 || ctxt.nativeResourcesAddr = 0x0 then [] else [ (lazy (let linkedResource = seekReadBytes ctxt.is (ctxt.anyV2P (ctxt.infile + ": native resources",ctxt.nativeResourcesAddr)) ctxt.nativeResourcesSize unlinkResource ctxt.nativeResourcesAddr linkedResource)) ] nativeResources #endif let dataEndPoints ctxtH = lazy let ctxt = getHole ctxtH let dataStartPoints = let res = ref [] for i = 1 to ctxt.getNumRows (TableNames.FieldRVA) do let rva,_fidx = seekReadFieldRVARow ctxt i res := ("field",rva) :: !res; for i = 1 to ctxt.getNumRows TableNames.ManifestResource do let (offset,_,_,TaggedIndex(_tag,idx)) = seekReadManifestResourceRow ctxt i if idx = 0 then let rva = ctxt.resourcesAddr + offset res := ("manifest resource", rva) :: !res; !res if isNil dataStartPoints then [] else let methodRVAs = let res = ref [] for i = 1 to ctxt.getNumRows TableNames.Method do let (rva, _, _, nameIdx, _, _) = seekReadMethodRow ctxt i if rva <> 0 then let nm = readStringHeap ctxt nameIdx res := (nm,rva) :: !res; !res ([ ctxt.textSegmentPhysicalLoc + ctxt.textSegmentPhysicalSize; ctxt.dataSegmentPhysicalLoc + ctxt.dataSegmentPhysicalSize; ] @ (List.map ctxt.anyV2P (dataStartPoints @ [for (virtAddr,_virtSize,_physLoc) in ctxt.sectionHeaders do yield ("section start",virtAddr) done] @ [("md",ctxt.metadataAddr)] @ (if ctxt.nativeResourcesAddr = 0x0 then [] else [("native resources",ctxt.nativeResourcesAddr); ]) @ (if ctxt.resourcesAddr = 0x0 then [] else [("managed resources",ctxt.resourcesAddr); ]) @ (if ctxt.strongnameAddr = 0x0 then [] else [("managed strongname",ctxt.strongnameAddr); ]) @ (if ctxt.vtableFixupsAddr = 0x0 then [] else [("managed vtable_fixups",ctxt.vtableFixupsAddr); ]) @ methodRVAs))) // Make distinct |> Set.ofList |> Set.toList |> List.sort let rec rvaToData ctxt nm rva = if rva = 0x0 then failwith "rva is zero"; let start = ctxt.anyV2P (nm, rva) let endPoints = (Lazy.force ctxt.dataEndPoints) let rec look l = match l with | [] -> failwithf "find_text_data_extent: none found for infile=%s, name=%s, rva=0x%08x, start=0x%08x" ctxt.infile nm rva start | e::t -> if start < e then (seekReadBytes ctxt.is start (e - start)) else look t look endPoints //----------------------------------------------------------------------- // Read the AbsIL structure (lazily) by reading off the relevant rows. // ---------------------------------------------------------------------- let isSorted ctxt (tab:TableName) = ((ctxt.sorted &&& (int64 1 <<< tab.Index)) <> int64 0x0) let rec seekReadModule ctxt (subsys,subsysversion,useHighEntropyVA, ilOnly,only32,is32bitpreferred,only64,platform,isDll, alignVirt,alignPhys,imageBaseReal,ilMetadataVersion) idx = let (_generation, nameIdx, _mvidIdx, _encidIdx, _encbaseidIdx) = seekReadModuleRow ctxt idx let ilModuleName = readStringHeap ctxt nameIdx let nativeResources = readNativeResources ctxt { Manifest = if ctxt.getNumRows (TableNames.Assembly) > 0 then Some (seekReadAssemblyManifest ctxt 1) else None; CustomAttrs = seekReadCustomAttrs ctxt (TaggedIndex(hca_Module,idx)); Name = ilModuleName; NativeResources=nativeResources; TypeDefs = mkILTypeDefsLazy (lazy (seekReadTopTypeDefs ctxt ())); SubSystemFlags = int32 subsys; IsILOnly = ilOnly; SubsystemVersion = subsysversion UseHighEntropyVA = useHighEntropyVA Platform = platform; StackReserveSize = None; // TODO Is32Bit = only32; Is32BitPreferred = is32bitpreferred; Is64Bit = only64; IsDLL=isDll; VirtualAlignment = alignVirt; PhysicalAlignment = alignPhys; ImageBase = imageBaseReal; MetadataVersion = ilMetadataVersion; Resources = seekReadManifestResources ctxt (); } and seekReadAssemblyManifest ctxt idx = let (hash,v1,v2,v3,v4,flags,publicKeyIdx, nameIdx, localeIdx) = seekReadAssemblyRow ctxt idx let name = readStringHeap ctxt nameIdx let pubkey = readBlobHeapOption ctxt publicKeyIdx { Name= name; AuxModuleHashAlgorithm=hash; SecurityDecls= seekReadSecurityDecls ctxt (TaggedIndex(hds_Assembly,idx)); PublicKey= pubkey; Version= Some (v1,v2,v3,v4); Locale= readStringHeapOption ctxt localeIdx; CustomAttrs = seekReadCustomAttrs ctxt (TaggedIndex(hca_Assembly,idx)); AssemblyLongevity= begin let masked = flags &&& 0x000e if masked = 0x0000 then ILAssemblyLongevity.Unspecified elif masked = 0x0002 then ILAssemblyLongevity.Library elif masked = 0x0004 then ILAssemblyLongevity.PlatformAppDomain elif masked = 0x0006 then ILAssemblyLongevity.PlatformProcess elif masked = 0x0008 then ILAssemblyLongevity.PlatformSystem else ILAssemblyLongevity.Unspecified end; ExportedTypes= seekReadTopExportedTypes ctxt (); EntrypointElsewhere=(if fst ctxt.entryPointToken = TableNames.File then Some (seekReadFile ctxt (snd ctxt.entryPointToken)) else None); Retargetable = 0 <> (flags &&& 0x100); DisableJitOptimizations = 0 <> (flags &&& 0x4000); JitTracking = 0 <> (flags &&& 0x8000); } and seekReadAssemblyRef ctxt idx = ctxt.seekReadAssemblyRef idx and seekReadAssemblyRefUncached ctxtH idx = let ctxt = getHole ctxtH let (v1,v2,v3,v4,flags,publicKeyOrTokenIdx, nameIdx, localeIdx,hashValueIdx) = seekReadAssemblyRefRow ctxt idx let nm = readStringHeap ctxt nameIdx let publicKey = match readBlobHeapOption ctxt publicKeyOrTokenIdx with | None -> None | Some blob -> Some (if (flags &&& 0x0001) <> 0x0 then PublicKey blob else PublicKeyToken blob) ILAssemblyRef.Create (name=nm, hash=readBlobHeapOption ctxt hashValueIdx, publicKey=publicKey, retargetable=((flags &&& 0x0100) <> 0x0), version=Some(v1,v2,v3,v4), locale=readStringHeapOption ctxt localeIdx;) and seekReadModuleRef ctxt idx = let (nameIdx) = seekReadModuleRefRow ctxt idx ILModuleRef.Create(name = readStringHeap ctxt nameIdx, hasMetadata=true, hash=None) and seekReadFile ctxt idx = let (flags, nameIdx, hashValueIdx) = seekReadFileRow ctxt idx ILModuleRef.Create(name = readStringHeap ctxt nameIdx, hasMetadata= ((flags &&& 0x0001) = 0x0), hash= readBlobHeapOption ctxt hashValueIdx) and seekReadClassLayout ctxt idx = match seekReadOptionalIndexedRow (ctxt.getNumRows TableNames.ClassLayout,seekReadClassLayoutRow ctxt,(fun (_,_,tidx) -> tidx),simpleIndexCompare idx,isSorted ctxt TableNames.ClassLayout,(fun (pack,size,_) -> pack,size)) with | None -> { Size = None; Pack = None } | Some (pack,size) -> { Size = Some size; Pack = Some pack; } and memberAccessOfFlags flags = let f = (flags &&& 0x00000007) if f = 0x00000001 then ILMemberAccess.Private elif f = 0x00000006 then ILMemberAccess.Public elif f = 0x00000004 then ILMemberAccess.Family elif f = 0x00000002 then ILMemberAccess.FamilyAndAssembly elif f = 0x00000005 then ILMemberAccess.FamilyOrAssembly elif f = 0x00000003 then ILMemberAccess.Assembly else ILMemberAccess.CompilerControlled and typeAccessOfFlags flags = let f = (flags &&& 0x00000007) if f = 0x00000001 then ILTypeDefAccess.Public elif f = 0x00000002 then ILTypeDefAccess.Nested ILMemberAccess.Public elif f = 0x00000003 then ILTypeDefAccess.Nested ILMemberAccess.Private elif f = 0x00000004 then ILTypeDefAccess.Nested ILMemberAccess.Family elif f = 0x00000006 then ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly elif f = 0x00000007 then ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly elif f = 0x00000005 then ILTypeDefAccess.Nested ILMemberAccess.Assembly else ILTypeDefAccess.Private and typeLayoutOfFlags ctxt flags tidx = let f = (flags &&& 0x00000018) if f = 0x00000008 then ILTypeDefLayout.Sequential (seekReadClassLayout ctxt tidx) elif f = 0x00000010 then ILTypeDefLayout.Explicit (seekReadClassLayout ctxt tidx) else ILTypeDefLayout.Auto and typeKindOfFlags nm _mdefs _fdefs (super:ILType option) flags = if (flags &&& 0x00000020) <> 0x0 then ILTypeDefKind.Interface else let isEnum = (match super with None -> false | Some ty -> ty.TypeSpec.Name = "System.Enum") let isDelegate = (match super with None -> false | Some ty -> ty.TypeSpec.Name = "System.Delegate") let isMulticastDelegate = (match super with None -> false | Some ty -> ty.TypeSpec.Name = "System.MulticastDelegate") let selfIsMulticastDelegate = nm = "System.MulticastDelegate" let isValueType = (match super with None -> false | Some ty -> ty.TypeSpec.Name = "System.ValueType" && nm <> "System.Enum") if isEnum then ILTypeDefKind.Enum elif (isDelegate && not selfIsMulticastDelegate) || isMulticastDelegate then ILTypeDefKind.Delegate elif isValueType then ILTypeDefKind.ValueType else ILTypeDefKind.Class and typeEncodingOfFlags flags = let f = (flags &&& 0x00030000) if f = 0x00020000 then ILDefaultPInvokeEncoding.Auto elif f = 0x00010000 then ILDefaultPInvokeEncoding.Unicode else ILDefaultPInvokeEncoding.Ansi and isTopTypeDef flags = (typeAccessOfFlags flags = ILTypeDefAccess.Private) || typeAccessOfFlags flags = ILTypeDefAccess.Public and seekIsTopTypeDefOfIdx ctxt idx = let (flags,_,_, _, _,_) = seekReadTypeDefRow ctxt idx isTopTypeDef flags and readBlobHeapAsSplitTypeName ctxt (nameIdx,namespaceIdx) = let name = readStringHeap ctxt nameIdx let nspace = readStringHeapOption ctxt namespaceIdx match nspace with | Some nspace -> splitNamespace nspace,name | None -> [],name and readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) = let name = readStringHeap ctxt nameIdx let nspace = readStringHeapOption ctxt namespaceIdx match nspace with | None -> name | Some ns -> ctxt.memoizeString (ns+"."+name) and seekReadTypeDefRowExtents ctxt _info (idx:int) = if idx >= ctxt.getNumRows TableNames.TypeDef then ctxt.getNumRows TableNames.Field + 1, ctxt.getNumRows TableNames.Method + 1 else let (_, _, _, _, fieldsIdx, methodsIdx) = seekReadTypeDefRow ctxt (idx + 1) fieldsIdx, methodsIdx and seekReadTypeDefRowWithExtents ctxt (idx:int) = let info= seekReadTypeDefRow ctxt idx info,seekReadTypeDefRowExtents ctxt info idx and seekReadTypeDef ctxt toponly (idx:int) = let (flags,nameIdx,namespaceIdx, _, _, _) = seekReadTypeDefRow ctxt idx if toponly && not (isTopTypeDef flags) then None else let ns,n = readBlobHeapAsSplitTypeName ctxt (nameIdx,namespaceIdx) let cas = seekReadCustomAttrs ctxt (TaggedIndex(hca_TypeDef,idx)) let rest = lazy // Re-read so as not to save all these in the lazy closure - this suspension ctxt.is the largest // heavily allocated one in all of AbsIL let ((flags,nameIdx,namespaceIdx, extendsIdx, fieldsIdx, methodsIdx) as info) = seekReadTypeDefRow ctxt idx let nm = readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) let cas = seekReadCustomAttrs ctxt (TaggedIndex(hca_TypeDef,idx)) let (endFieldsIdx, endMethodsIdx) = seekReadTypeDefRowExtents ctxt info idx let typars = seekReadGenericParams ctxt 0 (tomd_TypeDef,idx) let numtypars = typars.Length let super = seekReadOptionalTypeDefOrRef ctxt numtypars AsObject extendsIdx let layout = typeLayoutOfFlags ctxt flags idx let hasLayout = (match layout with ILTypeDefLayout.Explicit _ -> true | _ -> false) let mdefs = seekReadMethods ctxt numtypars methodsIdx endMethodsIdx let fdefs = seekReadFields ctxt (numtypars,hasLayout) fieldsIdx endFieldsIdx let kind = typeKindOfFlags nm mdefs fdefs super flags let nested = seekReadNestedTypeDefs ctxt idx let impls = seekReadInterfaceImpls ctxt numtypars idx let sdecls = seekReadSecurityDecls ctxt (TaggedIndex(hds_TypeDef,idx)) let mimpls = seekReadMethodImpls ctxt numtypars idx let props = seekReadProperties ctxt numtypars idx let events = seekReadEvents ctxt numtypars idx { tdKind= kind; Name=nm; GenericParams=typars; Access= typeAccessOfFlags flags; IsAbstract= (flags &&& 0x00000080) <> 0x0; IsSealed= (flags &&& 0x00000100) <> 0x0; IsSerializable= (flags &&& 0x00002000) <> 0x0; IsComInterop= (flags &&& 0x00001000) <> 0x0; Layout = layout; IsSpecialName= (flags &&& 0x00000400) <> 0x0; Encoding=typeEncodingOfFlags flags; NestedTypes= nested; Implements = mkILTypes impls; Extends = super; Methods = mdefs; SecurityDecls = sdecls; HasSecurity=(flags &&& 0x00040000) <> 0x0; Fields=fdefs; MethodImpls=mimpls; InitSemantics= if kind = ILTypeDefKind.Interface then ILTypeInit.OnAny elif (flags &&& 0x00100000) <> 0x0 then ILTypeInit.BeforeField else ILTypeInit.OnAny; Events= events; Properties=props; CustomAttrs=cas; } Some (ns,n,cas,rest) and seekReadTopTypeDefs ctxt () = [ for i = 1 to ctxt.getNumRows TableNames.TypeDef do match seekReadTypeDef ctxt true i with | None -> () | Some td -> yield td ] and seekReadNestedTypeDefs ctxt tidx = mkILTypeDefsLazy (lazy let nestedIdxs = seekReadIndexedRows (ctxt.getNumRows TableNames.Nested,seekReadNestedRow ctxt,snd,simpleIndexCompare tidx,false,fst) [ for i in nestedIdxs do match seekReadTypeDef ctxt false i with | None -> () | Some td -> yield td ]) and seekReadInterfaceImpls ctxt numtypars tidx = seekReadIndexedRows (ctxt.getNumRows TableNames.InterfaceImpl, seekReadInterfaceImplRow ctxt, fst, simpleIndexCompare tidx, isSorted ctxt TableNames.InterfaceImpl, (snd >> seekReadTypeDefOrRef ctxt numtypars AsObject (*ok*) ILList.empty)) and seekReadGenericParams ctxt numtypars (a,b) : ILGenericParameterDefs = ctxt.seekReadGenericParams (GenericParamsIdx(numtypars,a,b)) and seekReadGenericParamsUncached ctxtH (GenericParamsIdx(numtypars,a,b)) = let ctxt = getHole ctxtH let pars = seekReadIndexedRows (ctxt.getNumRows TableNames.GenericParam,seekReadGenericParamRow ctxt, (fun (_,_,_,tomd,_) -> tomd), tomdCompare (TaggedIndex(a,b)), isSorted ctxt TableNames.GenericParam, (fun (gpidx,seq,flags,_,nameIdx) -> let flags = int32 flags let variance_flags = flags &&& 0x0003 let variance = if variance_flags = 0x0000 then NonVariant elif variance_flags = 0x0001 then CoVariant elif variance_flags = 0x0002 then ContraVariant else NonVariant let constraints = seekReadGenericParamConstraintsUncached ctxt numtypars gpidx let cas = seekReadCustomAttrs ctxt (TaggedIndex(hca_GenericParam,gpidx)) seq, {Name=readStringHeap ctxt nameIdx; Constraints=mkILTypes constraints; Variance=variance; CustomAttrs=cas; HasReferenceTypeConstraint= (flags &&& 0x0004) <> 0; HasNotNullableValueTypeConstraint= (flags &&& 0x0008) <> 0; HasDefaultConstructorConstraint=(flags &&& 0x0010) <> 0; })) pars |> List.sortBy fst |> List.map snd and seekReadGenericParamConstraintsUncached ctxt numtypars gpidx = seekReadIndexedRows (ctxt.getNumRows TableNames.GenericParamConstraint, seekReadGenericParamConstraintRow ctxt, fst, simpleIndexCompare gpidx, isSorted ctxt TableNames.GenericParamConstraint, (snd >> seekReadTypeDefOrRef ctxt numtypars AsObject (*ok*) ILList.empty)) and seekReadTypeDefAsType ctxt boxity (ginst:ILTypes) idx = ctxt.seekReadTypeDefAsType (TypeDefAsTypIdx (boxity,ginst,idx)) and seekReadTypeDefAsTypeUncached ctxtH (TypeDefAsTypIdx (boxity,ginst,idx)) = let ctxt = getHole ctxtH mkILTy boxity (ILTypeSpec.Create(seekReadTypeDefAsTypeRef ctxt idx, ginst)) and seekReadTypeDefAsTypeRef ctxt idx = let enc = if seekIsTopTypeDefOfIdx ctxt idx then [] else let enclIdx = seekReadIndexedRow (ctxt.getNumRows TableNames.Nested,seekReadNestedRow ctxt,fst,simpleIndexCompare idx,isSorted ctxt TableNames.Nested,snd) let tref = seekReadTypeDefAsTypeRef ctxt enclIdx tref.Enclosing@[tref.Name] let (_, nameIdx, namespaceIdx, _, _, _) = seekReadTypeDefRow ctxt idx let nm = readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) ILTypeRef.Create(scope=ILScopeRef.Local, enclosing=enc, name = nm ) and seekReadTypeRef ctxt idx = ctxt.seekReadTypeRef idx and seekReadTypeRefUncached ctxtH idx = let ctxt = getHole ctxtH let scopeIdx,nameIdx,namespaceIdx = seekReadTypeRefRow ctxt idx let scope,enc = seekReadTypeRefScope ctxt scopeIdx let nm = readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) ILTypeRef.Create(scope=scope, enclosing=enc, name = nm) and seekReadTypeRefAsType ctxt boxity ginst idx = ctxt.seekReadTypeRefAsType (TypeRefAsTypIdx (boxity,ginst,idx)) and seekReadTypeRefAsTypeUncached ctxtH (TypeRefAsTypIdx (boxity,ginst,idx)) = let ctxt = getHole ctxtH mkILTy boxity (ILTypeSpec.Create(seekReadTypeRef ctxt idx, ginst)) and seekReadTypeDefOrRef ctxt numtypars boxity (ginst:ILTypes) (TaggedIndex(tag,idx) ) = match tag with | tag when tag = tdor_TypeDef -> seekReadTypeDefAsType ctxt boxity ginst idx | tag when tag = tdor_TypeRef -> seekReadTypeRefAsType ctxt boxity ginst idx | tag when tag = tdor_TypeSpec -> if ginst.Length > 0 then dprintn ("type spec used as type constructor for a generic instantiation: ignoring instantiation"); readBlobHeapAsType ctxt numtypars (seekReadTypeSpecRow ctxt idx) | _ -> failwith "seekReadTypeDefOrRef ctxt" and seekReadTypeDefOrRefAsTypeRef ctxt (TaggedIndex(tag,idx) ) = match tag with | tag when tag = tdor_TypeDef -> seekReadTypeDefAsTypeRef ctxt idx | tag when tag = tdor_TypeRef -> seekReadTypeRef ctxt idx | tag when tag = tdor_TypeSpec -> dprintn ("type spec used where a type ref or def ctxt.is required"); ctxt.ilg.tref_Object | _ -> failwith "seekReadTypeDefOrRefAsTypeRef_readTypeDefOrRefOrSpec" and seekReadMethodRefParent ctxt numtypars (TaggedIndex(tag,idx)) = match tag with | tag when tag = mrp_TypeRef -> seekReadTypeRefAsType ctxt AsObject (* not ok - no way to tell if a member ref parent ctxt.is a value type or not *) ILList.empty idx | tag when tag = mrp_ModuleRef -> mkILTypeForGlobalFunctions (ILScopeRef.Module (seekReadModuleRef ctxt idx)) | tag when tag = mrp_MethodDef -> let (MethodData(enclTyp, cc, nm, argtys, retty, minst)) = seekReadMethodDefAsMethodData ctxt idx let mspec = mkILMethSpecInTyRaw(enclTyp, cc, nm, argtys, retty, minst) mspec.EnclosingType | tag when tag = mrp_TypeSpec -> readBlobHeapAsType ctxt numtypars (seekReadTypeSpecRow ctxt idx) | _ -> failwith "seekReadMethodRefParent ctxt" and seekReadMethodDefOrRef ctxt numtypars (TaggedIndex(tag,idx)) = match tag with | tag when tag = mdor_MethodDef -> let (MethodData(enclTyp, cc, nm, argtys, retty,minst)) = seekReadMethodDefAsMethodData ctxt idx VarArgMethodData(enclTyp, cc, nm, argtys, None,retty,minst) | tag when tag = mdor_MemberRef -> seekReadMemberRefAsMethodData ctxt numtypars idx | _ -> failwith "seekReadMethodDefOrRef ctxt" and seekReadMethodDefOrRefNoVarargs ctxt numtypars x = let (VarArgMethodData(enclTyp, cc, nm, argtys, varargs, retty, minst)) = seekReadMethodDefOrRef ctxt numtypars x if varargs <> None then dprintf "ignoring sentinel and varargs in ILMethodDef token signature"; MethodData(enclTyp, cc, nm, argtys, retty,minst) and seekReadCustomAttrType ctxt (TaggedIndex(tag,idx) ) = match tag with | tag when tag = cat_MethodDef -> let (MethodData(enclTyp, cc, nm, argtys, retty, minst)) = seekReadMethodDefAsMethodData ctxt idx mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty, minst) | tag when tag = cat_MemberRef -> let (MethodData(enclTyp, cc, nm, argtys, retty, minst)) = seekReadMemberRefAsMethDataNoVarArgs ctxt 0 idx mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty, minst) | _ -> failwith "seekReadCustomAttrType ctxt" and seekReadImplAsScopeRef ctxt (TaggedIndex(tag,idx) ) = if idx = 0 then ILScopeRef.Local else match tag with | tag when tag = i_File -> ILScopeRef.Module (seekReadFile ctxt idx) | tag when tag = i_AssemblyRef -> ILScopeRef.Assembly (seekReadAssemblyRef ctxt idx) | tag when tag = i_ExportedType -> failwith "seekReadImplAsScopeRef ctxt" | _ -> failwith "seekReadImplAsScopeRef ctxt" and seekReadTypeRefScope ctxt (TaggedIndex(tag,idx) ) = match tag with | tag when tag = rs_Module -> ILScopeRef.Local,[] | tag when tag = rs_ModuleRef -> ILScopeRef.Module (seekReadModuleRef ctxt idx),[] | tag when tag = rs_AssemblyRef -> ILScopeRef.Assembly (seekReadAssemblyRef ctxt idx),[] | tag when tag = rs_TypeRef -> let tref = seekReadTypeRef ctxt idx tref.Scope,(tref.Enclosing@[tref.Name]) | _ -> failwith "seekReadTypeRefScope ctxt" and seekReadOptionalTypeDefOrRef ctxt numtypars boxity idx = if idx = TaggedIndex(tdor_TypeDef, 0) then None else Some (seekReadTypeDefOrRef ctxt numtypars boxity ILList.empty idx) and seekReadField ctxt (numtypars, hasLayout) (idx:int) = let (flags,nameIdx,typeIdx) = seekReadFieldRow ctxt idx let nm = readStringHeap ctxt nameIdx let isStatic = (flags &&& 0x0010) <> 0 let fd = { Name = nm; Type= readBlobHeapAsFieldSig ctxt numtypars typeIdx; Access = memberAccessOfFlags flags; IsStatic = isStatic; IsInitOnly = (flags &&& 0x0020) <> 0; IsLiteral = (flags &&& 0x0040) <> 0; NotSerialized = (flags &&& 0x0080) <> 0; IsSpecialName = (flags &&& 0x0200) <> 0 || (flags &&& 0x0400) <> 0; (* REVIEW: RTSpecialName *) LiteralValue = if (flags &&& 0x8000) = 0 then None else Some (seekReadConstant ctxt (TaggedIndex(hc_FieldDef,idx))); Marshal = if (flags &&& 0x1000) = 0 then None else Some (seekReadIndexedRow (ctxt.getNumRows TableNames.FieldMarshal,seekReadFieldMarshalRow ctxt, fst,hfmCompare (TaggedIndex(hfm_FieldDef,idx)), isSorted ctxt TableNames.FieldMarshal, (snd >> readBlobHeapAsNativeType ctxt))); Data = if (flags &&& 0x0100) = 0 then None else let rva = seekReadIndexedRow (ctxt.getNumRows TableNames.FieldRVA,seekReadFieldRVARow ctxt, snd,simpleIndexCompare idx,isSorted ctxt TableNames.FieldRVA,fst) Some (rvaToData ctxt "field" rva) Offset = if hasLayout && not isStatic then Some (seekReadIndexedRow (ctxt.getNumRows TableNames.FieldLayout,seekReadFieldLayoutRow ctxt, snd,simpleIndexCompare idx,isSorted ctxt TableNames.FieldLayout,fst)) else None; CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_FieldDef,idx)); } fd and seekReadFields ctxt (numtypars, hasLayout) fidx1 fidx2 = mkILFieldsLazy (lazy [ for i = fidx1 to fidx2 - 1 do yield seekReadField ctxt (numtypars, hasLayout) i ]) and seekReadMethods ctxt numtypars midx1 midx2 = mkILMethodsLazy (lazy [ for i = midx1 to midx2 - 1 do yield seekReadMethod ctxt numtypars i ]) and sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr = let n, sigptr = sigptrGetZInt32 bytes sigptr if (n &&& 0x01) = 0x0 then (* Type Def *) TaggedIndex(tdor_TypeDef, (n >>>& 2)), sigptr else (* Type Ref *) TaggedIndex(tdor_TypeRef, (n >>>& 2)), sigptr and sigptrGetTy ctxt numtypars bytes sigptr = let b0,sigptr = sigptrGetByte bytes sigptr if b0 = et_OBJECT then ctxt.ilg.typ_Object , sigptr elif b0 = et_STRING then ctxt.ilg.typ_String, sigptr elif b0 = et_I1 then ctxt.ilg.typ_int8, sigptr elif b0 = et_I2 then ctxt.ilg.typ_int16, sigptr elif b0 = et_I4 then ctxt.ilg.typ_int32, sigptr elif b0 = et_I8 then ctxt.ilg.typ_int64, sigptr elif b0 = et_I then ctxt.ilg.typ_IntPtr, sigptr elif b0 = et_U1 then ctxt.ilg.typ_uint8, sigptr elif b0 = et_U2 then ctxt.ilg.typ_uint16, sigptr elif b0 = et_U4 then ctxt.ilg.typ_uint32, sigptr elif b0 = et_U8 then ctxt.ilg.typ_uint64, sigptr elif b0 = et_U then ctxt.ilg.typ_UIntPtr, sigptr elif b0 = et_R4 then ctxt.ilg.typ_float32, sigptr elif b0 = et_R8 then ctxt.ilg.typ_float64, sigptr elif b0 = et_CHAR then ctxt.ilg.typ_char, sigptr elif b0 = et_BOOLEAN then ctxt.ilg.typ_bool, sigptr elif b0 = et_WITH then let b0,sigptr = sigptrGetByte bytes sigptr let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr let n, sigptr = sigptrGetZInt32 bytes sigptr let argtys,sigptr = sigptrFold (sigptrGetTy ctxt numtypars) n bytes sigptr seekReadTypeDefOrRef ctxt numtypars (if b0 = et_CLASS then AsObject else AsValue) (mkILTypes argtys) tdorIdx, sigptr elif b0 = et_CLASS then let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr seekReadTypeDefOrRef ctxt numtypars AsObject ILList.empty tdorIdx, sigptr elif b0 = et_VALUETYPE then let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr seekReadTypeDefOrRef ctxt numtypars AsValue ILList.empty tdorIdx, sigptr elif b0 = et_VAR then let n, sigptr = sigptrGetZInt32 bytes sigptr ILType.TypeVar (uint16 n),sigptr elif b0 = et_MVAR then let n, sigptr = sigptrGetZInt32 bytes sigptr ILType.TypeVar (uint16 (n + numtypars)), sigptr elif b0 = et_BYREF then let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr ILType.Byref typ, sigptr elif b0 = et_PTR then let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr ILType.Ptr typ, sigptr elif b0 = et_SZARRAY then let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr mkILArr1DTy typ, sigptr elif b0 = et_ARRAY then let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr let rank, sigptr = sigptrGetZInt32 bytes sigptr let numSized, sigptr = sigptrGetZInt32 bytes sigptr let sizes, sigptr = sigptrFold sigptrGetZInt32 numSized bytes sigptr let numLoBounded, sigptr = sigptrGetZInt32 bytes sigptr let lobounds, sigptr = sigptrFold sigptrGetZInt32 numLoBounded bytes sigptr let shape = let dim i = (if i < numLoBounded then Some (List.nth lobounds i) else None), (if i < numSized then Some (List.nth sizes i) else None) ILArrayShape (Array.toList (Array.init rank dim)) mkILArrTy (typ, shape), sigptr elif b0 = et_VOID then ILType.Void, sigptr elif b0 = et_TYPEDBYREF then ctxt.ilg.typ_TypedReference, sigptr elif b0 = et_CMOD_REQD || b0 = et_CMOD_OPT then let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr ILType.Modified((b0 = et_CMOD_REQD), seekReadTypeDefOrRefAsTypeRef ctxt tdorIdx, typ), sigptr elif b0 = et_FNPTR then let ccByte,sigptr = sigptrGetByte bytes sigptr let generic,cc = byteAsCallConv ccByte if generic then failwith "fptr sig may not be generic"; let numparams,sigptr = sigptrGetZInt32 bytes sigptr let retty,sigptr = sigptrGetTy ctxt numtypars bytes sigptr let argtys,sigptr = sigptrFold (sigptrGetTy ctxt numtypars) ( numparams) bytes sigptr ILType.FunctionPointer { CallingConv=cc; ArgTypes=mkILTypes argtys; ReturnType=retty } ,sigptr elif b0 = et_SENTINEL then failwith "varargs NYI" else ILType.Void , sigptr and sigptrGetVarArgTys ctxt n numtypars bytes sigptr = sigptrFold (sigptrGetTy ctxt numtypars) n bytes sigptr and sigptrGetArgTys ctxt n numtypars bytes sigptr acc = if n <= 0 then (mkILTypes (List.rev acc),None),sigptr else let b0,sigptr2 = sigptrGetByte bytes sigptr if b0 = et_SENTINEL then let varargs,sigptr = sigptrGetVarArgTys ctxt n numtypars bytes sigptr2 (mkILTypes (List.rev acc),Some(mkILTypes varargs)),sigptr else let x,sigptr = sigptrGetTy ctxt numtypars bytes sigptr sigptrGetArgTys ctxt (n-1) numtypars bytes sigptr (x::acc) and sigptrGetLocal ctxt numtypars bytes sigptr = let pinned,sigptr = let b0, sigptr' = sigptrGetByte bytes sigptr if b0 = et_PINNED then true, sigptr' else false, sigptr let typ, sigptr = sigptrGetTy ctxt numtypars bytes sigptr { IsPinned = pinned; Type = typ }, sigptr and readBlobHeapAsMethodSig ctxt numtypars blobIdx = ctxt.readBlobHeapAsMethodSig (BlobAsMethodSigIdx (numtypars,blobIdx)) and readBlobHeapAsMethodSigUncached ctxtH (BlobAsMethodSigIdx (numtypars,blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 let ccByte,sigptr = sigptrGetByte bytes sigptr let generic,cc = byteAsCallConv ccByte let genarity,sigptr = if generic then sigptrGetZInt32 bytes sigptr else 0x0,sigptr let numparams,sigptr = sigptrGetZInt32 bytes sigptr let retty,sigptr = sigptrGetTy ctxt numtypars bytes sigptr let (argtys,varargs),_sigptr = sigptrGetArgTys ctxt ( numparams) numtypars bytes sigptr [] generic,genarity,cc,retty,argtys,varargs and readBlobHeapAsType ctxt numtypars blobIdx = let bytes = readBlobHeap ctxt blobIdx let ty,_sigptr = sigptrGetTy ctxt numtypars bytes 0 ty and readBlobHeapAsFieldSig ctxt numtypars blobIdx = ctxt.readBlobHeapAsFieldSig (BlobAsFieldSigIdx (numtypars,blobIdx)) and readBlobHeapAsFieldSigUncached ctxtH (BlobAsFieldSigIdx (numtypars,blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 let ccByte,sigptr = sigptrGetByte bytes sigptr if ccByte <> e_IMAGE_CEE_CS_CALLCONV_FIELD then dprintn "warning: field sig was not CC_FIELD"; let retty,_sigptr = sigptrGetTy ctxt numtypars bytes sigptr retty and readBlobHeapAsPropertySig ctxt numtypars blobIdx = ctxt.readBlobHeapAsPropertySig (BlobAsPropSigIdx (numtypars,blobIdx)) and readBlobHeapAsPropertySigUncached ctxtH (BlobAsPropSigIdx (numtypars,blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 let ccByte,sigptr = sigptrGetByte bytes sigptr let hasthis = byteAsHasThis ccByte let ccMaxked = (ccByte &&& 0x0Fuy) if ccMaxked <> e_IMAGE_CEE_CS_CALLCONV_PROPERTY then dprintn ("warning: property sig was "+string ccMaxked+" instead of CC_PROPERTY"); let numparams,sigptr = sigptrGetZInt32 bytes sigptr let retty,sigptr = sigptrGetTy ctxt numtypars bytes sigptr let argtys,_sigptr = sigptrFold (sigptrGetTy ctxt numtypars) ( numparams) bytes sigptr hasthis,retty,mkILTypes argtys and readBlobHeapAsLocalsSig ctxt numtypars blobIdx = ctxt.readBlobHeapAsLocalsSig (BlobAsLocalSigIdx (numtypars,blobIdx)) and readBlobHeapAsLocalsSigUncached ctxtH (BlobAsLocalSigIdx (numtypars,blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 let ccByte,sigptr = sigptrGetByte bytes sigptr if ccByte <> e_IMAGE_CEE_CS_CALLCONV_LOCAL_SIG then dprintn "warning: local sig was not CC_LOCAL"; let numlocals,sigptr = sigptrGetZInt32 bytes sigptr let localtys,_sigptr = sigptrFold (sigptrGetLocal ctxt numtypars) ( numlocals) bytes sigptr localtys and byteAsHasThis b = let hasthis_masked = b &&& 0x60uy if hasthis_masked = e_IMAGE_CEE_CS_CALLCONV_INSTANCE then ILThisConvention.Instance elif hasthis_masked = e_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICIT then ILThisConvention.InstanceExplicit else ILThisConvention.Static and byteAsCallConv b = let cc = let ccMaxked = b &&& 0x0Fuy if ccMaxked = e_IMAGE_CEE_CS_CALLCONV_FASTCALL then ILArgConvention.FastCall elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_STDCALL then ILArgConvention.StdCall elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_THISCALL then ILArgConvention.ThisCall elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_CDECL then ILArgConvention.CDecl elif ccMaxked = e_IMAGE_CEE_CS_CALLCONV_VARARG then ILArgConvention.VarArg else ILArgConvention.Default let generic = (b &&& e_IMAGE_CEE_CS_CALLCONV_GENERIC) <> 0x0uy generic, Callconv (byteAsHasThis b,cc) and seekReadMemberRefAsMethodData ctxt numtypars idx : VarArgMethodData = ctxt.seekReadMemberRefAsMethodData (MemberRefAsMspecIdx (numtypars,idx)) and seekReadMemberRefAsMethodDataUncached ctxtH (MemberRefAsMspecIdx (numtypars,idx)) = let ctxt = getHole ctxtH let (mrpIdx,nameIdx,typeIdx) = seekReadMemberRefRow ctxt idx let nm = readStringHeap ctxt nameIdx let enclTyp = seekReadMethodRefParent ctxt numtypars mrpIdx let _generic,genarity,cc,retty,argtys,varargs = readBlobHeapAsMethodSig ctxt enclTyp.GenericArgs.Length typeIdx let minst = ILList.init genarity (fun n -> mkILTyvarTy (uint16 (numtypars+n))) (VarArgMethodData(enclTyp, cc, nm, argtys, varargs,retty,minst)) and seekReadMemberRefAsMethDataNoVarArgs ctxt numtypars idx : MethodData = let (VarArgMethodData(enclTyp, cc, nm, argtys,varargs, retty,minst)) = seekReadMemberRefAsMethodData ctxt numtypars idx if isSome varargs then dprintf "ignoring sentinel and varargs in ILMethodDef token signature"; (MethodData(enclTyp, cc, nm, argtys, retty,minst)) and seekReadMethodSpecAsMethodData ctxt numtypars idx = ctxt.seekReadMethodSpecAsMethodData (MethodSpecAsMspecIdx (numtypars,idx)) and seekReadMethodSpecAsMethodDataUncached ctxtH (MethodSpecAsMspecIdx (numtypars,idx)) = let ctxt = getHole ctxtH let (mdorIdx,instIdx) = seekReadMethodSpecRow ctxt idx let (VarArgMethodData(enclTyp, cc, nm, argtys, varargs,retty,_)) = seekReadMethodDefOrRef ctxt numtypars mdorIdx let minst = let bytes = readBlobHeap ctxt instIdx let sigptr = 0 let ccByte,sigptr = sigptrGetByte bytes sigptr if ccByte <> e_IMAGE_CEE_CS_CALLCONV_GENERICINST then dprintn ("warning: method inst ILCallingConv was "+string ccByte+" instead of CC_GENERICINST"); let numgpars,sigptr = sigptrGetZInt32 bytes sigptr let argtys,_sigptr = sigptrFold (sigptrGetTy ctxt numtypars) numgpars bytes sigptr mkILTypes argtys VarArgMethodData(enclTyp, cc, nm, argtys, varargs,retty, minst) and seekReadMemberRefAsFieldSpec ctxt numtypars idx = ctxt.seekReadMemberRefAsFieldSpec (MemberRefAsFspecIdx (numtypars,idx)) and seekReadMemberRefAsFieldSpecUncached ctxtH (MemberRefAsFspecIdx (numtypars,idx)) = let ctxt = getHole ctxtH let (mrpIdx,nameIdx,typeIdx) = seekReadMemberRefRow ctxt idx let nm = readStringHeap ctxt nameIdx let enclTyp = seekReadMethodRefParent ctxt numtypars mrpIdx let retty = readBlobHeapAsFieldSig ctxt numtypars typeIdx mkILFieldSpecInTy(enclTyp, nm, retty) // One extremely annoying aspect of the MD format is that given a // ILMethodDef token it is non-trivial to find which ILTypeDef it belongs // to. So we do a binary chop through the ILTypeDef table // looking for which ILTypeDef has the ILMethodDef within its range. // Although the ILTypeDef table is not "sorted", it is effectively sorted by // method-range and field-range start/finish indexes and seekReadMethodDefAsMethodData ctxt idx = ctxt.seekReadMethodDefAsMethodData idx and seekReadMethodDefAsMethodDataUncached ctxtH idx = let ctxt = getHole ctxtH let (_code_rva, _implflags, _flags, nameIdx, typeIdx, _paramIdx) = seekReadMethodRow ctxt idx let nm = readStringHeap ctxt nameIdx // Look for the method def parent. let tidx = seekReadIndexedRow (ctxt.getNumRows TableNames.TypeDef, (fun i -> i, seekReadTypeDefRowWithExtents ctxt i), (fun r -> r), (fun (_,((_, _, _, _, _, methodsIdx), (_, endMethodsIdx))) -> if endMethodsIdx <= idx then 1 elif methodsIdx <= idx && idx < endMethodsIdx then 0 else -1), true,fst) // Read the method def signature. let _generic,_genarity,cc,retty,argtys,varargs = readBlobHeapAsMethodSig ctxt 0 typeIdx if varargs <> None then dprintf "ignoring sentinel and varargs in ILMethodDef token signature"; // Create a formal instantiation if needed let finst = mkILFormalGenericArgsRaw (seekReadGenericParams ctxt 0 (tomd_TypeDef,tidx)) let minst = mkILFormalGenericArgsRaw (seekReadGenericParams ctxt finst.Length (tomd_MethodDef,idx)) // Read the method def parent. let enclTyp = seekReadTypeDefAsType ctxt AsObject (* not ok: see note *) finst tidx // Return the constituent parts: put it together at the place where this is called. MethodData(enclTyp, cc, nm, argtys, retty, minst) (* Similarly for fields. *) and seekReadFieldDefAsFieldSpec ctxt idx = ctxt.seekReadFieldDefAsFieldSpec idx and seekReadFieldDefAsFieldSpecUncached ctxtH idx = let ctxt = getHole ctxtH let (_flags, nameIdx, typeIdx) = seekReadFieldRow ctxt idx let nm = readStringHeap ctxt nameIdx (* Look for the field def parent. *) let tidx = seekReadIndexedRow (ctxt.getNumRows TableNames.TypeDef, (fun i -> i, seekReadTypeDefRowWithExtents ctxt i), (fun r -> r), (fun (_,((_, _, _, _, fieldsIdx, _),(endFieldsIdx, _))) -> if endFieldsIdx <= idx then 1 elif fieldsIdx <= idx && idx < endFieldsIdx then 0 else -1), true,fst) // Read the field signature. let retty = readBlobHeapAsFieldSig ctxt 0 typeIdx // Create a formal instantiation if needed let finst = mkILFormalGenericArgsRaw (seekReadGenericParams ctxt 0 (tomd_TypeDef,tidx)) // Read the field def parent. let enclTyp = seekReadTypeDefAsType ctxt AsObject (* not ok: see note *) finst tidx // Put it together. mkILFieldSpecInTy(enclTyp, nm, retty) and seekReadMethod ctxt numtypars (idx:int) = let (codeRVA, implflags, flags, nameIdx, typeIdx, paramIdx) = seekReadMethodRow ctxt idx let nm = readStringHeap ctxt nameIdx let isStatic = (flags &&& 0x0010) <> 0x0 let final = (flags &&& 0x0020) <> 0x0 let virt = (flags &&& 0x0040) <> 0x0 let strict = (flags &&& 0x0200) <> 0x0 let hidebysig = (flags &&& 0x0080) <> 0x0 let newslot = (flags &&& 0x0100) <> 0x0 let abstr = (flags &&& 0x0400) <> 0x0 let specialname = (flags &&& 0x0800) <> 0x0 let pinvoke = (flags &&& 0x2000) <> 0x0 let export = (flags &&& 0x0008) <> 0x0 let _rtspecialname = (flags &&& 0x1000) <> 0x0 let reqsecobj = (flags &&& 0x8000) <> 0x0 let hassec = (flags &&& 0x4000) <> 0x0 let codetype = implflags &&& 0x0003 let unmanaged = (implflags &&& 0x0004) <> 0x0 let forwardref = (implflags &&& 0x0010) <> 0x0 let preservesig = (implflags &&& 0x0080) <> 0x0 let internalcall = (implflags &&& 0x1000) <> 0x0 let synchronized = (implflags &&& 0x0020) <> 0x0 let noinline = (implflags &&& 0x0008) <> 0x0 let mustrun = (implflags &&& 0x0040) <> 0x0 let cctor = (nm = ".cctor") let ctor = (nm = ".ctor") let _generic,_genarity,cc,retty,argtys,varargs = readBlobHeapAsMethodSig ctxt numtypars typeIdx if varargs <> None then dprintf "ignoring sentinel and varargs in ILMethodDef signature"; let endParamIdx = if idx >= ctxt.getNumRows TableNames.Method then ctxt.getNumRows TableNames.Param + 1 else let (_,_,_,_,_, paramIdx) = seekReadMethodRow ctxt (idx + 1) paramIdx let ret,ilParams = seekReadParams ctxt (retty,argtys) paramIdx endParamIdx { Name=nm; mdKind = (if cctor then MethodKind.Cctor elif ctor then MethodKind.Ctor elif isStatic then MethodKind.Static elif virt then MethodKind.Virtual { IsFinal=final; IsNewSlot=newslot; IsCheckAccessOnOverride=strict; IsAbstract=abstr; } else MethodKind.NonVirtual); Access = memberAccessOfFlags flags; SecurityDecls=seekReadSecurityDecls ctxt (TaggedIndex(hds_MethodDef,idx)); HasSecurity=hassec; IsEntryPoint= (fst ctxt.entryPointToken = TableNames.Method && snd ctxt.entryPointToken = idx); IsReqSecObj=reqsecobj; IsHideBySig=hidebysig; IsSpecialName=specialname; IsUnmanagedExport=export; IsSynchronized=synchronized; IsNoInline=noinline; IsMustRun=mustrun; IsPreserveSig=preservesig; IsManaged = not unmanaged; IsInternalCall = internalcall; IsForwardRef = forwardref; mdCodeKind = (if (codetype = 0x00) then MethodCodeKind.IL elif (codetype = 0x01) then MethodCodeKind.Native elif (codetype = 0x03) then MethodCodeKind.Runtime else (dprintn "unsupported code type"; MethodCodeKind.Native)); GenericParams=seekReadGenericParams ctxt numtypars (tomd_MethodDef,idx); CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_MethodDef,idx)); Parameters= ilParams; CallingConv=cc; Return=ret; mdBody= if (codetype = 0x01) && pinvoke then mkMethBodyLazyAux (notlazy MethodBody.Native) elif pinvoke then seekReadImplMap ctxt nm idx elif internalcall || abstr || unmanaged || (codetype <> 0x00) then if codeRVA <> 0x0 then dprintn "non-IL or abstract method with non-zero RVA"; mkMethBodyLazyAux (notlazy MethodBody.Abstract) else seekReadMethodRVA ctxt (idx,nm,internalcall,noinline,numtypars) codeRVA; } and seekReadParams ctxt (retty,argtys) pidx1 pidx2 = let retRes : ILReturn ref = ref { Marshal=None; Type=retty; CustomAttrs=emptyILCustomAttrs } let paramsRes = argtys |> ILList.toArray |> Array.map (fun ty -> { Name=None; Default=None; Marshal=None; IsIn=false; IsOut=false; IsOptional=false; Type=ty; CustomAttrs=emptyILCustomAttrs }) for i = pidx1 to pidx2 - 1 do seekReadParamExtras ctxt (retRes,paramsRes) i !retRes, ILList.ofArray paramsRes and seekReadParamExtras ctxt (retRes,paramsRes) (idx:int) = let (flags,seq,nameIdx) = seekReadParamRow ctxt idx let inOutMasked = (flags &&& 0x00FF) let hasMarshal = (flags &&& 0x2000) <> 0x0 let hasDefault = (flags &&& 0x1000) <> 0x0 let fmReader idx = seekReadIndexedRow (ctxt.getNumRows TableNames.FieldMarshal,seekReadFieldMarshalRow ctxt,fst,hfmCompare idx,isSorted ctxt TableNames.FieldMarshal,(snd >> readBlobHeapAsNativeType ctxt)) let cas = seekReadCustomAttrs ctxt (TaggedIndex(hca_ParamDef,idx)) if seq = 0 then retRes := { !retRes with Marshal=(if hasMarshal then Some (fmReader (TaggedIndex(hfm_ParamDef,idx))) else None); CustomAttrs = cas } elif seq > Array.length paramsRes then dprintn "bad seq num. for param" else paramsRes.[seq - 1] <- { paramsRes.[seq - 1] with Marshal=(if hasMarshal then Some (fmReader (TaggedIndex(hfm_ParamDef,idx))) else None); Default = (if hasDefault then Some (seekReadConstant ctxt (TaggedIndex(hc_ParamDef,idx))) else None); Name = readStringHeapOption ctxt nameIdx; IsIn = ((inOutMasked &&& 0x0001) <> 0x0); IsOut = ((inOutMasked &&& 0x0002) <> 0x0); IsOptional = ((inOutMasked &&& 0x0010) <> 0x0); CustomAttrs =cas } and seekReadMethodImpls ctxt numtypars tidx = mkILMethodImplsLazy (lazy let mimpls = seekReadIndexedRows (ctxt.getNumRows TableNames.MethodImpl,seekReadMethodImplRow ctxt,(fun (a,_,_) -> a),simpleIndexCompare tidx,isSorted ctxt TableNames.MethodImpl,(fun (_,b,c) -> b,c)) mimpls |> List.map (fun (b,c) -> { OverrideBy= let (MethodData(enclTyp, cc, nm, argtys, retty,minst)) = seekReadMethodDefOrRefNoVarargs ctxt numtypars b mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty,minst); Overrides= let (MethodData(enclTyp, cc, nm, argtys, retty,minst)) = seekReadMethodDefOrRefNoVarargs ctxt numtypars c let mspec = mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty,minst) OverridesSpec(mspec.MethodRef, mspec.EnclosingType) })) and seekReadMultipleMethodSemantics ctxt (flags,id) = seekReadIndexedRows (ctxt.getNumRows TableNames.MethodSemantics , seekReadMethodSemanticsRow ctxt, (fun (_flags,_,c) -> c), hsCompare id, isSorted ctxt TableNames.MethodSemantics, (fun (a,b,_c) -> let (MethodData(enclTyp, cc, nm, argtys, retty, minst)) = seekReadMethodDefAsMethodData ctxt b a, (mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty, minst)).MethodRef)) |> List.filter (fun (flags2,_) -> flags = flags2) |> List.map snd and seekReadoptional_MethodSemantics ctxt id = match seekReadMultipleMethodSemantics ctxt id with | [] -> None | [h] -> Some h | h::_ -> dprintn "multiple method semantics found"; Some h and seekReadMethodSemantics ctxt id = match seekReadoptional_MethodSemantics ctxt id with | None -> failwith "seekReadMethodSemantics ctxt: no method found" | Some x -> x and seekReadEvent ctxt numtypars idx = let (flags,nameIdx,typIdx) = seekReadEventRow ctxt idx { Name = readStringHeap ctxt nameIdx; Type = seekReadOptionalTypeDefOrRef ctxt numtypars AsObject typIdx; IsSpecialName = (flags &&& 0x0200) <> 0x0; IsRTSpecialName = (flags &&& 0x0400) <> 0x0; AddMethod= seekReadMethodSemantics ctxt (0x0008,TaggedIndex(hs_Event, idx)); RemoveMethod=seekReadMethodSemantics ctxt (0x0010,TaggedIndex(hs_Event,idx)); FireMethod=seekReadoptional_MethodSemantics ctxt (0x0020,TaggedIndex(hs_Event,idx)); OtherMethods = seekReadMultipleMethodSemantics ctxt (0x0004, TaggedIndex(hs_Event, idx)); CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_Event,idx)) } (* REVIEW: can substantially reduce numbers of EventMap and PropertyMap reads by first checking if the whole table is sorted according to ILTypeDef tokens and then doing a binary chop *) and seekReadEvents ctxt numtypars tidx = mkILEventsLazy (lazy match seekReadOptionalIndexedRow (ctxt.getNumRows TableNames.EventMap,(fun i -> i, seekReadEventMapRow ctxt i),(fun (_,row) -> fst row),compare tidx,false,(fun (i,row) -> (i,snd row))) with | None -> [] | Some (rowNum,beginEventIdx) -> let endEventIdx = if rowNum >= ctxt.getNumRows TableNames.EventMap then ctxt.getNumRows TableNames.Event + 1 else let (_, endEventIdx) = seekReadEventMapRow ctxt (rowNum + 1) endEventIdx [ for i in beginEventIdx .. endEventIdx - 1 do yield seekReadEvent ctxt numtypars i ]) and seekReadProperty ctxt numtypars idx = let (flags,nameIdx,typIdx) = seekReadPropertyRow ctxt idx let cc,retty,argtys = readBlobHeapAsPropertySig ctxt numtypars typIdx let setter= seekReadoptional_MethodSemantics ctxt (0x0001,TaggedIndex(hs_Property,idx)) let getter = seekReadoptional_MethodSemantics ctxt (0x0002,TaggedIndex(hs_Property,idx)) (* NOTE: the "ThisConv" value on the property is not reliable: better to look on the getter/setter *) (* NOTE: e.g. tlbimp on Office msword.olb seems to set this incorrectly *) let cc2 = match getter with | Some mref -> mref.CallingConv.ThisConv | None -> match setter with | Some mref -> mref.CallingConv .ThisConv | None -> cc { Name=readStringHeap ctxt nameIdx; CallingConv = cc2; IsRTSpecialName=(flags &&& 0x0400) <> 0x0; IsSpecialName= (flags &&& 0x0200) <> 0x0; SetMethod=setter; GetMethod=getter; Type=retty; Init= if (flags &&& 0x1000) = 0 then None else Some (seekReadConstant ctxt (TaggedIndex(hc_Property,idx))); Args=argtys; CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_Property,idx)) } and seekReadProperties ctxt numtypars tidx = mkILPropertiesLazy (lazy match seekReadOptionalIndexedRow (ctxt.getNumRows TableNames.PropertyMap,(fun i -> i, seekReadPropertyMapRow ctxt i),(fun (_,row) -> fst row),compare tidx,false,(fun (i,row) -> (i,snd row))) with | None -> [] | Some (rowNum,beginPropIdx) -> let endPropIdx = if rowNum >= ctxt.getNumRows TableNames.PropertyMap then ctxt.getNumRows TableNames.Property + 1 else let (_, endPropIdx) = seekReadPropertyMapRow ctxt (rowNum + 1) endPropIdx [ for i in beginPropIdx .. endPropIdx - 1 do yield seekReadProperty ctxt numtypars i ]) and seekReadCustomAttrs ctxt idx = mkILComputedCustomAttrs (fun () -> seekReadIndexedRows (ctxt.getNumRows TableNames.CustomAttribute, seekReadCustomAttributeRow ctxt,(fun (a,_,_) -> a), hcaCompare idx, isSorted ctxt TableNames.CustomAttribute, (fun (_,b,c) -> seekReadCustomAttr ctxt (b,c)))) and seekReadCustomAttr ctxt (TaggedIndex(cat,idx),b) = ctxt.seekReadCustomAttr (CustomAttrIdx (cat,idx,b)) and seekReadCustomAttrUncached ctxtH (CustomAttrIdx (cat,idx,valIdx)) = let ctxt = getHole ctxtH { Method=seekReadCustomAttrType ctxt (TaggedIndex(cat,idx)); #if SILVERLIGHT Arguments = [], [] #endif Data= match readBlobHeapOption ctxt valIdx with | Some bytes -> bytes | None -> Bytes.ofInt32Array [| |] } and seekReadSecurityDecls ctxt idx = mkILLazySecurityDecls (lazy seekReadIndexedRows (ctxt.getNumRows TableNames.Permission, seekReadPermissionRow ctxt, (fun (_,par,_) -> par), hdsCompare idx, isSorted ctxt TableNames.Permission, (fun (act,_,ty) -> seekReadSecurityDecl ctxt (act,ty)))) and seekReadSecurityDecl ctxt (a,b) = ctxt.seekReadSecurityDecl (SecurityDeclIdx (a,b)) and seekReadSecurityDeclUncached ctxtH (SecurityDeclIdx (act,ty)) = let ctxt = getHole ctxtH PermissionSet ((if List.memAssoc (int act) (Lazy.force ILSecurityActionRevMap) then List.assoc (int act) (Lazy.force ILSecurityActionRevMap) else failwith "unknown security action"), readBlobHeap ctxt ty) and seekReadConstant ctxt idx = let kind,vidx = seekReadIndexedRow (ctxt.getNumRows TableNames.Constant, seekReadConstantRow ctxt, (fun (_,key,_) -> key), hcCompare idx,isSorted ctxt TableNames.Constant,(fun (kind,_,v) -> kind,v)) match kind with | x when x = uint16 et_STRING -> let blobHeap = readBlobHeap ctxt vidx let s = System.Text.Encoding.Unicode.GetString(blobHeap, 0, blobHeap.Length) ILFieldInit.String (s) | x when x = uint16 et_BOOLEAN -> ILFieldInit.Bool (readBlobHeapAsBool ctxt vidx) | x when x = uint16 et_CHAR -> ILFieldInit.Char (readBlobHeapAsUInt16 ctxt vidx) | x when x = uint16 et_I1 -> ILFieldInit.Int8 (readBlobHeapAsSByte ctxt vidx) | x when x = uint16 et_I2 -> ILFieldInit.Int16 (readBlobHeapAsInt16 ctxt vidx) | x when x = uint16 et_I4 -> ILFieldInit.Int32 (readBlobHeapAsInt32 ctxt vidx) | x when x = uint16 et_I8 -> ILFieldInit.Int64 (readBlobHeapAsInt64 ctxt vidx) | x when x = uint16 et_U1 -> ILFieldInit.UInt8 (readBlobHeapAsByte ctxt vidx) | x when x = uint16 et_U2 -> ILFieldInit.UInt16 (readBlobHeapAsUInt16 ctxt vidx) | x when x = uint16 et_U4 -> ILFieldInit.UInt32 (readBlobHeapAsUInt32 ctxt vidx) | x when x = uint16 et_U8 -> ILFieldInit.UInt64 (readBlobHeapAsUInt64 ctxt vidx) | x when x = uint16 et_R4 -> ILFieldInit.Single (readBlobHeapAsSingle ctxt vidx) | x when x = uint16 et_R8 -> ILFieldInit.Double (readBlobHeapAsDouble ctxt vidx) | x when x = uint16 et_CLASS || x = uint16 et_OBJECT -> ILFieldInit.Null | _ -> ILFieldInit.Null and seekReadImplMap ctxt nm midx = mkMethBodyLazyAux (lazy let (flags,nameIdx, scopeIdx) = seekReadIndexedRow (ctxt.getNumRows TableNames.ImplMap, seekReadImplMapRow ctxt, (fun (_,m,_,_) -> m), mfCompare (TaggedIndex(mf_MethodDef,midx)), isSorted ctxt TableNames.ImplMap, (fun (a,_,c,d) -> a,c,d)) let cc = let masked = flags &&& 0x0700 if masked = 0x0000 then PInvokeCallingConvention.None elif masked = 0x0200 then PInvokeCallingConvention.Cdecl elif masked = 0x0300 then PInvokeCallingConvention.Stdcall elif masked = 0x0400 then PInvokeCallingConvention.Thiscall elif masked = 0x0500 then PInvokeCallingConvention.Fastcall elif masked = 0x0100 then PInvokeCallingConvention.WinApi else (dprintn "strange CallingConv"; PInvokeCallingConvention.None) let enc = let masked = flags &&& 0x0006 if masked = 0x0000 then PInvokeCharEncoding.None elif masked = 0x0002 then PInvokeCharEncoding.Ansi elif masked = 0x0004 then PInvokeCharEncoding.Unicode elif masked = 0x0006 then PInvokeCharEncoding.Auto else (dprintn "strange CharEncoding"; PInvokeCharEncoding.None) let bestfit = let masked = flags &&& 0x0030 if masked = 0x0000 then PInvokeCharBestFit.UseAssembly elif masked = 0x0010 then PInvokeCharBestFit.Enabled elif masked = 0x0020 then PInvokeCharBestFit.Disabled else (dprintn "strange CharBestFit"; PInvokeCharBestFit.UseAssembly) let unmap = let masked = flags &&& 0x3000 if masked = 0x0000 then PInvokeThrowOnUnmappableChar.UseAssembly elif masked = 0x1000 then PInvokeThrowOnUnmappableChar.Enabled elif masked = 0x2000 then PInvokeThrowOnUnmappableChar.Disabled else (dprintn "strange ThrowOnUnmappableChar"; PInvokeThrowOnUnmappableChar.UseAssembly) MethodBody.PInvoke { CallingConv = cc; CharEncoding = enc; CharBestFit=bestfit; ThrowOnUnmappableChar=unmap; NoMangle = (flags &&& 0x0001) <> 0x0; LastError = (flags &&& 0x0040) <> 0x0; Name = (match readStringHeapOption ctxt nameIdx with | None -> nm | Some nm2 -> nm2); Where = seekReadModuleRef ctxt scopeIdx }) and seekReadTopCode ctxt numtypars (sz:int) start seqpoints = let labelsOfRawOffsets = new Dictionary<_,_>(sz/2) let ilOffsetsOfLabels = new Dictionary<_,_>(sz/2) let tryRawToLabel rawOffset = if labelsOfRawOffsets.ContainsKey rawOffset then Some(labelsOfRawOffsets.[rawOffset]) else None let rawToLabel rawOffset = match tryRawToLabel rawOffset with | Some l -> l | None -> let lab = generateCodeLabel() labelsOfRawOffsets.[rawOffset] <- lab; lab let markAsInstructionStart rawOffset ilOffset = let lab = rawToLabel rawOffset ilOffsetsOfLabels.[lab] <- ilOffset let ibuf = new ResizeArray<_>(sz/2) let curr = ref 0 let prefixes = { al=Aligned; tl= Normalcall; vol= Nonvolatile;ro=NormalAddress;constrained=None } let lastb = ref 0x0 let lastb2 = ref 0x0 let b = ref 0x0 let get () = lastb := seekReadByteAsInt32 ctxt.is (start + (!curr)); incr curr; b := if !lastb = 0xfe && !curr < sz then lastb2 := seekReadByteAsInt32 ctxt.is (start + (!curr)); incr curr; !lastb2 else !lastb let seqPointsRemaining = ref seqpoints while !curr < sz do // registering "+string !curr+" as start of an instruction") markAsInstructionStart !curr ibuf.Count; // Insert any sequence points into the instruction sequence while (match !seqPointsRemaining with | (i,_tag) :: _rest when i <= !curr -> true | _ -> false) do // Emitting one sequence point let (_,tag) = List.head !seqPointsRemaining seqPointsRemaining := List.tail !seqPointsRemaining; ibuf.Add (I_seqpoint tag) // Read the prefixes. Leave lastb and lastb2 holding the instruction byte(s) begin prefixes.al <- Aligned; prefixes.tl <- Normalcall; prefixes.vol <- Nonvolatile; prefixes.ro<-NormalAddress; prefixes.constrained<-None; get (); while !curr < sz && !lastb = 0xfe && (!b = (i_constrained &&& 0xff) || !b = (i_readonly &&& 0xff) || !b = (i_unaligned &&& 0xff) || !b = (i_volatile &&& 0xff) || !b = (i_tail &&& 0xff)) do begin if !b = (i_unaligned &&& 0xff) then let unal = seekReadByteAsInt32 ctxt.is (start + (!curr)) incr curr; prefixes.al <- if unal = 0x1 then Unaligned1 elif unal = 0x2 then Unaligned2 elif unal = 0x4 then Unaligned4 else (dprintn "bad alignment for unaligned"; Aligned) elif !b = (i_volatile &&& 0xff) then prefixes.vol <- Volatile elif !b = (i_readonly &&& 0xff) then prefixes.ro <- ReadonlyAddress elif !b = (i_constrained &&& 0xff) then let uncoded = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; let typ = seekReadTypeDefOrRef ctxt numtypars AsObject ILList.empty (uncodedTokenToTypeDefOrRefOrSpec uncoded) prefixes.constrained <- Some typ else prefixes.tl <- Tailcall; end; get (); done; end; // data for instruction begins at "+string !curr (* Read and decode the instruction *) if (!curr <= sz) then let idecoder = if !lastb = 0xfe then getTwoByteInstr ( !lastb2) else getOneByteInstr ( !lastb) let instr = match idecoder with | I_u16_u8_instr f -> let x = seekReadByte ctxt.is (start + (!curr)) |> uint16 curr := !curr + 1; f prefixes x | I_u16_u16_instr f -> let x = seekReadUInt16 ctxt.is (start + (!curr)) curr := !curr + 2; f prefixes x | I_none_instr f -> f prefixes | I_i64_instr f -> let x = seekReadInt64 ctxt.is (start + (!curr)) curr := !curr + 8; f prefixes x | I_i32_i8_instr f -> let x = seekReadSByte ctxt.is (start + (!curr)) |> int32 curr := !curr + 1; f prefixes x | I_i32_i32_instr f -> let x = seekReadInt32 ctxt.is (start + (!curr)) curr := !curr + 4; f prefixes x | I_r4_instr f -> let x = seekReadSingle ctxt.is (start + (!curr)) curr := !curr + 4; f prefixes x | I_r8_instr f -> let x = seekReadDouble ctxt.is (start + (!curr)) curr := !curr + 8; f prefixes x | I_field_instr f -> let (tab,tok) = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; let fspec = if tab = TableNames.Field then seekReadFieldDefAsFieldSpec ctxt tok elif tab = TableNames.MemberRef then seekReadMemberRefAsFieldSpec ctxt numtypars tok else failwith "bad table in FieldDefOrRef" f prefixes fspec | I_method_instr f -> // method instruction, curr = "+string !curr let (tab,idx) = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; let (VarArgMethodData(enclTyp, cc, nm, argtys, varargs, retty, minst)) = if tab = TableNames.Method then seekReadMethodDefOrRef ctxt numtypars (TaggedIndex(mdor_MethodDef, idx)) elif tab = TableNames.MemberRef then seekReadMethodDefOrRef ctxt numtypars (TaggedIndex(mdor_MemberRef, idx)) elif tab = TableNames.MethodSpec then seekReadMethodSpecAsMethodData ctxt numtypars idx else failwith "bad table in MethodDefOrRefOrSpec" match enclTyp with | ILType.Array (shape,ty) -> match nm with | "Get" -> I_ldelem_any(shape,ty) | "Set" -> I_stelem_any(shape,ty) | "Address" -> I_ldelema(prefixes.ro,false,shape,ty) | ".ctor" -> I_newarr(shape,ty) | _ -> failwith "bad method on array type" | _ -> let mspec = mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty, minst) f prefixes (mspec,varargs) | I_type_instr f -> let uncoded = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; let typ = seekReadTypeDefOrRef ctxt numtypars AsObject ILList.empty (uncodedTokenToTypeDefOrRefOrSpec uncoded) f prefixes typ | I_string_instr f -> let (tab,idx) = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; if tab <> TableNames.UserStrings then dprintn "warning: bad table in user string for ldstr"; f prefixes (readUserStringHeap ctxt (idx)) | I_conditional_i32_instr f -> let offsDest = (seekReadInt32 ctxt.is (start + (!curr))) curr := !curr + 4; let dest = !curr + offsDest let next = !curr f prefixes (rawToLabel dest, rawToLabel next) | I_conditional_i8_instr f -> let offsDest = int (seekReadSByte ctxt.is (start + (!curr))) curr := !curr + 1; let dest = !curr + offsDest let next = !curr f prefixes (rawToLabel dest, rawToLabel next) | I_unconditional_i32_instr f -> let offsDest = (seekReadInt32 ctxt.is (start + (!curr))) curr := !curr + 4; let dest = !curr + offsDest f prefixes (rawToLabel dest) | I_unconditional_i8_instr f -> let offsDest = int (seekReadSByte ctxt.is (start + (!curr))) curr := !curr + 1; let dest = !curr + offsDest f prefixes (rawToLabel dest) | I_invalid_instr -> dprintn ("invalid instruction: "+string !lastb+ (if !lastb = 0xfe then ","+string !lastb2 else "")); I_ret | I_tok_instr f -> let (tab,idx) = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; (* REVIEW: this incorrectly labels all MemberRef tokens as ILMethod's: we should go look at the MemberRef sig to determine if it is a field or method *) let token_info = if tab = TableNames.Method || tab = TableNames.MemberRef (* REVIEW:generics or tab = TableNames.MethodSpec *) then let (MethodData(enclTyp, cc, nm, argtys, retty, minst)) = seekReadMethodDefOrRefNoVarargs ctxt numtypars (uncodedTokenToMethodDefOrRef (tab,idx)) ILToken.ILMethod (mkILMethSpecInTyRaw (enclTyp, cc, nm, argtys, retty, minst)) elif tab = TableNames.Field then ILToken.ILField (seekReadFieldDefAsFieldSpec ctxt idx) elif tab = TableNames.TypeDef || tab = TableNames.TypeRef || tab = TableNames.TypeSpec then ILToken.ILType (seekReadTypeDefOrRef ctxt numtypars AsObject ILList.empty (uncodedTokenToTypeDefOrRefOrSpec (tab,idx))) else failwith "bad token for ldtoken" f prefixes token_info | I_sig_instr f -> let (tab,idx) = seekReadUncodedToken ctxt.is (start + (!curr)) curr := !curr + 4; if tab <> TableNames.StandAloneSig then dprintn "strange table for callsig token"; let generic,_genarity,cc,retty,argtys,varargs = readBlobHeapAsMethodSig ctxt numtypars (seekReadStandAloneSigRow ctxt idx) if generic then failwith "bad image: a generic method signature ctxt.is begin used at a calli instruction"; f prefixes (mkILCallSigRaw (cc,argtys,retty), varargs) | I_switch_instr f -> let n = (seekReadInt32 ctxt.is (start + (!curr))) curr := !curr + 4; let offsets = List.init n (fun _ -> let i = (seekReadInt32 ctxt.is (start + (!curr))) curr := !curr + 4; i) let dests = List.map (fun offs -> rawToLabel (!curr + offs)) offsets let next = rawToLabel !curr f prefixes (dests,next) ibuf.Add instr done; // Finished reading instructions - mark the end of the instruction stream in case the PDB information refers to it. markAsInstructionStart !curr ibuf.Count; // Build the function that maps from raw labels (offsets into the bytecode stream) to indexes in the AbsIL instruction stream let lab2pc lab = try ilOffsetsOfLabels.[lab] with :? KeyNotFoundException-> failwith ("branch destination "+formatCodeLabel lab+" not found in code") // Some offsets used in debug info refer to the end of an instruction, rather than the // start of the subsequent instruction. But all labels refer to instruction starts, // apart from a final label which refers to the end of the method. This function finds // the start of the next instruction referred to by the raw offset. let raw2nextLab rawOffset = let isInstrStart x = match tryRawToLabel x with | None -> false | Some lab -> ilOffsetsOfLabels.ContainsKey lab if isInstrStart rawOffset then rawToLabel rawOffset elif isInstrStart (rawOffset+1) then rawToLabel (rawOffset+1) else failwith ("the bytecode raw offset "+string rawOffset+" did not refer either to the start or end of an instruction") let instrs = ibuf.ToArray() instrs,rawToLabel, lab2pc, raw2nextLab #if NO_PDB_READER and seekReadMethodRVA ctxt (_idx,nm,_internalcall,noinline,numtypars) rva = #else and seekReadMethodRVA ctxt (idx,nm,_internalcall,noinline,numtypars) rva = #endif mkMethBodyLazyAux (lazy begin // Read any debug information for this method into temporary data structures // -- a list of locals, marked with the raw offsets (actually closures which accept the resolution function that maps raw offsets to labels) // -- an overall range for the method // -- the sequence points for the method let localPdbInfos, methRangePdbInfo, seqpoints = #if NO_PDB_READER [], None, [] #else match ctxt.pdb with | None -> [], None, [] | Some (pdbr, get_doc) -> try let pdbm = pdbReaderGetMethod pdbr (uncodedToken TableNames.Method idx) //let rootScope = pdbMethodGetRootScope pdbm let sps = pdbMethodGetSequencePoints pdbm (*dprintf "#sps for 0x%x = %d\n" (uncodedToken TableNames.Method idx) (Array.length sps); *) (* let roota,rootb = pdbScopeGetOffsets rootScope in *) let seqpoints = let arr = sps |> Array.map (fun sp -> (* It is VERY annoying to have to call GetURL for the document for each sequence point. This appears to be a short coming of the PDB reader API. They should return an index into the array of documents for the reader *) let sourcedoc = get_doc (pdbDocumentGetURL sp.pdbSeqPointDocument) let source = ILSourceMarker.Create(document = sourcedoc, line = sp.pdbSeqPointLine, column = sp.pdbSeqPointColumn, endLine = sp.pdbSeqPointEndLine, endColumn = sp.pdbSeqPointEndColumn) (sp.pdbSeqPointOffset,source)) Array.sortInPlaceBy fst arr; Array.toList arr let rec scopes scp = let a,b = pdbScopeGetOffsets scp let lvs = pdbScopeGetLocals scp let ilvs = lvs |> Array.toList |> List.filter (fun l -> let k,_idx = pdbVariableGetAddressAttributes l k = 1 (* ADDR_IL_OFFSET *)) let ilinfos = ilvs |> List.map (fun ilv -> let _k,idx = pdbVariableGetAddressAttributes ilv let n = pdbVariableGetName ilv { LocalIndex= idx; LocalName=n}) let thisOne = (fun raw2nextLab -> { locRange= (raw2nextLab a,raw2nextLab b); locInfos = ilinfos }) // this scope covers IL range: "+string a+"-"+string b) let others = List.foldBack (scopes >> (@)) (Array.toList (pdbScopeGetChildren scp)) [] thisOne :: others let localPdbInfos = [] (* scopes fail for mscorlib scopes rootScope *) // REVIEW: look through sps to get ranges? Use GetRanges?? Change AbsIL?? (localPdbInfos,None,seqpoints) with e -> // "* Warning: PDB info for method "+nm+" could not be read and will be ignored: "+e.Message [],None,[] #endif // NO_PDB_READER let baseRVA = ctxt.anyV2P("method rva",rva) // ": reading body of method "+nm+" at rva "+string rva+", phys "+string baseRVA let b = seekReadByte ctxt.is baseRVA if (b &&& e_CorILMethod_FormatMask) = e_CorILMethod_TinyFormat then let codeBase = baseRVA + 1 let codeSize = (int32 b >>>& 2) // tiny format for "+nm+", code size = " + string codeSize); let instrs,_,lab2pc,raw2nextLab = seekReadTopCode ctxt numtypars codeSize codeBase seqpoints (* Convert the linear code format to the nested code format *) let localPdbInfos2 = List.map (fun f -> f raw2nextLab) localPdbInfos let code = checkILCode (buildILCode nm lab2pc instrs [] localPdbInfos2) MethodBody.IL { IsZeroInit=false; MaxStack= 8; NoInlining=noinline; Locals=ILList.empty; SourceMarker=methRangePdbInfo; Code=code } elif (b &&& e_CorILMethod_FormatMask) = e_CorILMethod_FatFormat then let hasMoreSections = (b &&& e_CorILMethod_MoreSects) <> 0x0uy let initlocals = (b &&& e_CorILMethod_InitLocals) <> 0x0uy let maxstack = seekReadUInt16AsInt32 ctxt.is (baseRVA + 2) let codeSize = seekReadInt32 ctxt.is (baseRVA + 4) let localsTab,localToken = seekReadUncodedToken ctxt.is (baseRVA + 8) let codeBase = baseRVA + 12 let locals = if localToken = 0x0 then [] else if localsTab <> TableNames.StandAloneSig then dprintn "strange table for locals token"; readBlobHeapAsLocalsSig ctxt numtypars (seekReadStandAloneSigRow ctxt localToken) // fat format for "+nm+", code size = " + string codeSize+", hasMoreSections = "+(if hasMoreSections then "true" else "false")+",b = "+string b); // Read the method body let instrs,rawToLabel,lab2pc,raw2nextLab = seekReadTopCode ctxt numtypars ( codeSize) codeBase seqpoints // Read all the sections that follow the method body. // These contain the exception clauses. let nextSectionBase = ref (align 4 (codeBase + codeSize)) let moreSections = ref hasMoreSections let seh = ref [] while !moreSections do let sectionBase = !nextSectionBase let sectionFlag = seekReadByte ctxt.is sectionBase // fat format for "+nm+", sectionFlag = " + string sectionFlag); let sectionSize, clauses = if (sectionFlag &&& e_CorILMethod_Sect_FatFormat) <> 0x0uy then let bigSize = (seekReadInt32 ctxt.is sectionBase) >>>& 8 // bigSize = "+string bigSize); let clauses = if (sectionFlag &&& e_CorILMethod_Sect_EHTable) <> 0x0uy then // WORKAROUND: The ECMA spec says this should be // let numClauses = ((bigSize - 4) / 24) in // but the CCI IL generator generates multiples of 24 let numClauses = (bigSize / 24) List.init numClauses (fun i -> let clauseBase = sectionBase + 4 + (i * 24) let kind = seekReadInt32 ctxt.is (clauseBase + 0) let st1 = seekReadInt32 ctxt.is (clauseBase + 4) let sz1 = seekReadInt32 ctxt.is (clauseBase + 8) let st2 = seekReadInt32 ctxt.is (clauseBase + 12) let sz2 = seekReadInt32 ctxt.is (clauseBase + 16) let extra = seekReadInt32 ctxt.is (clauseBase + 20) (kind,st1,sz1,st2,sz2,extra)) else [] bigSize, clauses else let smallSize = seekReadByteAsInt32 ctxt.is (sectionBase + 0x01) let clauses = if (sectionFlag &&& e_CorILMethod_Sect_EHTable) <> 0x0uy then // WORKAROUND: The ECMA spec says this should be // let numClauses = ((smallSize - 4) / 12) in // but the C# compiler (or some IL generator) generates multiples of 12 let numClauses = (smallSize / 12) // dprintn (nm+" has " + string numClauses + " tiny seh clauses"); List.init numClauses (fun i -> let clauseBase = sectionBase + 4 + (i * 12) let kind = seekReadUInt16AsInt32 ctxt.is (clauseBase + 0) if logging then dprintn ("One tiny SEH clause, kind = "+string kind); let st1 = seekReadUInt16AsInt32 ctxt.is (clauseBase + 2) let sz1 = seekReadByteAsInt32 ctxt.is (clauseBase + 4) let st2 = seekReadUInt16AsInt32 ctxt.is (clauseBase + 5) let sz2 = seekReadByteAsInt32 ctxt.is (clauseBase + 7) let extra = seekReadInt32 ctxt.is (clauseBase + 8) (kind,st1,sz1,st2,sz2,extra)) else [] smallSize, clauses // Morph together clauses that cover the same range let sehClauses = let sehMap = Dictionary<_,_>(clauses.Length, HashIdentity.Structural) List.iter (fun (kind,st1,sz1,st2,sz2,extra) -> let tryStart = rawToLabel st1 let tryFinish = rawToLabel (st1 + sz1) let handlerStart = rawToLabel st2 let handlerFinish = rawToLabel (st2 + sz2) let clause = if kind = e_COR_ILEXCEPTION_CLAUSE_EXCEPTION then ILExceptionClause.TypeCatch(seekReadTypeDefOrRef ctxt numtypars AsObject ILList.empty (uncodedTokenToTypeDefOrRefOrSpec (i32ToUncodedToken extra)), (handlerStart, handlerFinish) ) elif kind = e_COR_ILEXCEPTION_CLAUSE_FILTER then let filterStart = rawToLabel extra let filterFinish = handlerStart ILExceptionClause.FilterCatch((filterStart, filterFinish), (handlerStart, handlerFinish)) elif kind = e_COR_ILEXCEPTION_CLAUSE_FINALLY then ILExceptionClause.Finally(handlerStart, handlerFinish) elif kind = e_COR_ILEXCEPTION_CLAUSE_FAULT then ILExceptionClause.Fault(handlerStart, handlerFinish) else begin dprintn (ctxt.infile + ": unknown exception handler kind: "+string kind); ILExceptionClause.Finally(handlerStart, handlerFinish) end let key = (tryStart, tryFinish) if sehMap.ContainsKey key then let prev = sehMap.[key] sehMap.[key] <- (prev @ [clause]) else sehMap.[key] <- [clause]) clauses; Seq.fold (fun acc (KeyValue(key,bs)) -> {exnRange=key; exnClauses=bs} :: acc) [] sehMap seh := sehClauses; moreSections := (sectionFlag &&& e_CorILMethod_Sect_MoreSects) <> 0x0uy; nextSectionBase := sectionBase + sectionSize; done; (* while *) (* Convert the linear code format to the nested code format *) if logging then dprintn ("doing localPdbInfos2"); let localPdbInfos2 = List.map (fun f -> f raw2nextLab) localPdbInfos if logging then dprintn ("done localPdbInfos2, checking code..."); let code = checkILCode (buildILCode nm lab2pc instrs !seh localPdbInfos2) if logging then dprintn ("done checking code."); MethodBody.IL { IsZeroInit=initlocals; MaxStack= maxstack; NoInlining=noinline; Locals=mkILLocals locals; Code=code; SourceMarker=methRangePdbInfo} else if logging then failwith "unknown format"; MethodBody.Abstract end) and int32AsILVariantType ctxt (n:int32) = if List.memAssoc n (Lazy.force ILVariantTypeRevMap) then List.assoc n (Lazy.force ILVariantTypeRevMap) elif (n &&& vt_ARRAY) <> 0x0 then ILNativeVariant.Array (int32AsILVariantType ctxt (n &&& (~~~ vt_ARRAY))) elif (n &&& vt_VECTOR) <> 0x0 then ILNativeVariant.Vector (int32AsILVariantType ctxt (n &&& (~~~ vt_VECTOR))) elif (n &&& vt_BYREF) <> 0x0 then ILNativeVariant.Byref (int32AsILVariantType ctxt (n &&& (~~~ vt_BYREF))) else (dprintn (ctxt.infile + ": int32AsILVariantType ctxt: unexpected variant type, n = "+string n) ; ILNativeVariant.Empty) and readBlobHeapAsNativeType ctxt blobIdx = // reading native type blob "+string blobIdx); let bytes = readBlobHeap ctxt blobIdx let res,_ = sigptrGetILNativeType ctxt bytes 0 res and sigptrGetILNativeType ctxt bytes sigptr = // reading native type blob, sigptr= "+string sigptr); let ntbyte,sigptr = sigptrGetByte bytes sigptr if List.memAssoc ntbyte (Lazy.force ILNativeTypeMap) then List.assoc ntbyte (Lazy.force ILNativeTypeMap), sigptr elif ntbyte = 0x0uy then ILNativeType.Empty, sigptr elif ntbyte = nt_CUSTOMMARSHALER then // reading native type blob (CM1) , sigptr= "+string sigptr+ ", bytes.Length = "+string bytes.Length); let guidLen,sigptr = sigptrGetZInt32 bytes sigptr // reading native type blob (CM2) , sigptr= "+string sigptr+", guidLen = "+string ( guidLen)); let guid,sigptr = sigptrGetBytes ( guidLen) bytes sigptr // reading native type blob (CM3) , sigptr= "+string sigptr); let nativeTypeNameLen,sigptr = sigptrGetZInt32 bytes sigptr // reading native type blob (CM4) , sigptr= "+string sigptr+", nativeTypeNameLen = "+string ( nativeTypeNameLen)); let nativeTypeName,sigptr = sigptrGetString ( nativeTypeNameLen) bytes sigptr // reading native type blob (CM4) , sigptr= "+string sigptr+", nativeTypeName = "+nativeTypeName); // reading native type blob (CM5) , sigptr= "+string sigptr); let custMarshallerNameLen,sigptr = sigptrGetZInt32 bytes sigptr // reading native type blob (CM6) , sigptr= "+string sigptr+", custMarshallerNameLen = "+string ( custMarshallerNameLen)); let custMarshallerName,sigptr = sigptrGetString ( custMarshallerNameLen) bytes sigptr // reading native type blob (CM7) , sigptr= "+string sigptr+", custMarshallerName = "+custMarshallerName); let cookieStringLen,sigptr = sigptrGetZInt32 bytes sigptr // reading native type blob (CM8) , sigptr= "+string sigptr+", cookieStringLen = "+string ( cookieStringLen)); let cookieString,sigptr = sigptrGetBytes ( cookieStringLen) bytes sigptr // reading native type blob (CM9) , sigptr= "+string sigptr); ILNativeType.Custom (guid,nativeTypeName,custMarshallerName,cookieString), sigptr elif ntbyte = nt_FIXEDSYSSTRING then let i,sigptr = sigptrGetZInt32 bytes sigptr ILNativeType.FixedSysString i, sigptr elif ntbyte = nt_FIXEDARRAY then let i,sigptr = sigptrGetZInt32 bytes sigptr ILNativeType.FixedArray i, sigptr elif ntbyte = nt_SAFEARRAY then (if sigptr >= bytes.Length then ILNativeType.SafeArray(ILNativeVariant.Empty, None),sigptr else let i,sigptr = sigptrGetZInt32 bytes sigptr if sigptr >= bytes.Length then ILNativeType.SafeArray (int32AsILVariantType ctxt i, None), sigptr else let len,sigptr = sigptrGetZInt32 bytes sigptr let s,sigptr = sigptrGetString ( len) bytes sigptr ILNativeType.SafeArray (int32AsILVariantType ctxt i, Some s), sigptr) elif ntbyte = nt_ARRAY then if sigptr >= bytes.Length then ILNativeType.Array(None,None),sigptr else let nt,sigptr = let u,sigptr' = sigptrGetZInt32 bytes sigptr if (u = int nt_MAX) then ILNativeType.Empty, sigptr' else (* note: go back to start and read native type *) sigptrGetILNativeType ctxt bytes sigptr if sigptr >= bytes.Length then ILNativeType.Array (Some nt,None), sigptr else let pnum,sigptr = sigptrGetZInt32 bytes sigptr if sigptr >= bytes.Length then ILNativeType.Array (Some nt,Some(pnum,None)), sigptr else let additive,sigptr = if sigptr >= bytes.Length then 0, sigptr else sigptrGetZInt32 bytes sigptr ILNativeType.Array (Some nt,Some(pnum,Some(additive))), sigptr else (dprintn (ctxt.infile + ": unexpected native type, nt = "+string ntbyte); ILNativeType.Empty, sigptr) and seekReadManifestResources ctxt () = mkILResourcesLazy (lazy [ for i = 1 to ctxt.getNumRows TableNames.ManifestResource do let (offset,flags,nameIdx,implIdx) = seekReadManifestResourceRow ctxt i let scoref = seekReadImplAsScopeRef ctxt implIdx let datalab = match scoref with | ILScopeRef.Local -> let start = ctxt.anyV2P ("resource",offset + ctxt.resourcesAddr) let len = seekReadInt32 ctxt.is start ILResourceLocation.Local (fun () -> seekReadBytes ctxt.is (start + 4) len) | ILScopeRef.Module mref -> ILResourceLocation.File (mref,offset) | ILScopeRef.Assembly aref -> ILResourceLocation.Assembly aref let r = { Name= readStringHeap ctxt nameIdx; Location = datalab; Access = (if (flags &&& 0x01) <> 0x0 then ILResourceAccess.Public else ILResourceAccess.Private); CustomAttrs = seekReadCustomAttrs ctxt (TaggedIndex(hca_ManifestResource, i)) } yield r ]) and seekReadNestedExportedTypes ctxt parentIdx = mkILNestedExportedTypesLazy (lazy [ for i = 1 to ctxt.getNumRows TableNames.ExportedType do let (flags,_tok,nameIdx,namespaceIdx,implIdx) = seekReadExportedTypeRow ctxt i if not (isTopTypeDef flags) then let (TaggedIndex(tag,idx) ) = implIdx //let isTopTypeDef = (idx = 0 || tag <> i_ExportedType) //if not isTopTypeDef then match tag with | tag when tag = i_ExportedType && idx = parentIdx -> let nm = readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) yield { Name=nm; Access=(match typeAccessOfFlags flags with ILTypeDefAccess.Nested n -> n | _ -> failwith "non-nested access for a nested type described as being in an auxiliary module"); Nested=seekReadNestedExportedTypes ctxt i; CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) } | _ -> () ]) and seekReadTopExportedTypes ctxt () = mkILExportedTypesLazy (lazy let res = ref [] for i = 1 to ctxt.getNumRows TableNames.ExportedType do let (flags,_tok,nameIdx,namespaceIdx,implIdx) = seekReadExportedTypeRow ctxt i if isTopTypeDef flags then let (TaggedIndex(tag,_idx) ) = implIdx // the nested types will be picked up by their enclosing types if tag <> i_ExportedType then let nm = readBlobHeapAsTypeName ctxt (nameIdx,namespaceIdx) let scoref = seekReadImplAsScopeRef ctxt implIdx let entry = { ScopeRef=scoref; Name=nm; IsForwarder = ((flags &&& 0x00200000) <> 0); Access=typeAccessOfFlags flags; Nested=seekReadNestedExportedTypes ctxt i; CustomAttrs=seekReadCustomAttrs ctxt (TaggedIndex(hca_ExportedType, i)) } res := entry :: !res; done; List.rev !res) #if NO_PDB_READER #else let getPdbReader opts infile = match opts.pdbPath with | None -> None | Some pdbpath -> try let pdbr = pdbReadOpen infile pdbpath let pdbdocs = pdbReaderGetDocuments pdbr let tab = new Dictionary<_,_>(Array.length pdbdocs) pdbdocs |> Array.iter (fun pdbdoc -> let url = pdbDocumentGetURL pdbdoc tab.[url] <- ILSourceDocument.Create(language=Some (pdbDocumentGetLanguage pdbdoc), vendor = Some (pdbDocumentGetLanguageVendor pdbdoc), documentType = Some (pdbDocumentGetType pdbdoc), file = url)); let docfun url = if tab.ContainsKey url then tab.[url] else failwith ("Document with URL "+url+" not found in list of documents in the PDB file") Some (pdbr, docfun) with e -> dprintn ("* Warning: PDB file could not be read and will be ignored: "+e.Message); None #endif //----------------------------------------------------------------------- // Crack the binary headers, build a reader context and return the lazy // read of the AbsIL module. // ---------------------------------------------------------------------- let rec genOpenBinaryReader infile is opts = (* MSDOS HEADER *) let peSignaturePhysLoc = seekReadInt32 is 0x3c (* PE HEADER *) let peFileHeaderPhysLoc = peSignaturePhysLoc + 0x04 let peOptionalHeaderPhysLoc = peFileHeaderPhysLoc + 0x14 let peSignature = seekReadInt32 is (peSignaturePhysLoc + 0) if peSignature <> 0x4550 then failwithf "not a PE file - bad magic PE number 0x%08x, is = %A" peSignature is; (* PE SIGNATURE *) let machine = seekReadUInt16AsInt32 is (peFileHeaderPhysLoc + 0) let numSections = seekReadUInt16AsInt32 is (peFileHeaderPhysLoc + 2) let optHeaderSize = seekReadUInt16AsInt32 is (peFileHeaderPhysLoc + 16) if optHeaderSize <> 0xe0 && optHeaderSize <> 0xf0 then failwith "not a PE file - bad optional header size"; let x64adjust = optHeaderSize - 0xe0 let only64 = (optHeaderSize = 0xf0) (* May want to read in the optional header Magic number and check that as well... *) let platform = match machine with | 0x8664 -> Some(AMD64) | 0x200 -> Some(IA64) | _ -> Some(X86) let sectionHeadersStartPhysLoc = peOptionalHeaderPhysLoc + optHeaderSize let flags = seekReadUInt16AsInt32 is (peFileHeaderPhysLoc + 18) let isDll = (flags &&& 0x2000) <> 0x0 (* OPTIONAL PE HEADER *) let _textPhysSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 4) (* Size of the code (text) section, or the sum of all code sections if there are multiple sections. *) (* x86: 000000a0 *) let _initdataPhysSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 8) (* Size of the initialized data section, or the sum of all such sections if there are multiple data sections. *) let _uninitdataPhysSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 12) (* Size of the uninitialized data section, or the sum of all such sections if there are multiple data sections. *) let _entrypointAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 16) (* RVA of entry point , needs to point to bytes 0xFF 0x25 followed by the RVA+!0x4000000 in a section marked execute/read for EXEs or 0 for DLLs e.g. 0x0000b57e *) let _textAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 20) (* e.g. 0x0002000 *) (* x86: 000000b0 *) let dataSegmentAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 24) (* e.g. 0x0000c000 *) (* REVIEW: For now, we'll use the DWORD at offset 24 for x64. This currently ok since fsc doesn't support true 64-bit image bases, but we'll have to fix this up when such support is added. *) let imageBaseReal = if only64 then dataSegmentAddr else seekReadInt32 is (peOptionalHeaderPhysLoc + 28) (* Image Base Always 0x400000 (see Section 23.1). - QUERY : no it's not always 0x400000, e.g. 0x034f0000 *) let alignVirt = seekReadInt32 is (peOptionalHeaderPhysLoc + 32) (* Section Alignment Always 0x2000 (see Section 23.1). *) let alignPhys = seekReadInt32 is (peOptionalHeaderPhysLoc + 36) (* File Alignment Either 0x200 or 0x1000. *) (* x86: 000000c0 *) let _osMajor = seekReadUInt16 is (peOptionalHeaderPhysLoc + 40) (* OS Major Always 4 (see Section 23.1). *) let _osMinor = seekReadUInt16 is (peOptionalHeaderPhysLoc + 42) (* OS Minor Always 0 (see Section 23.1). *) let _userMajor = seekReadUInt16 is (peOptionalHeaderPhysLoc + 44) (* User Major Always 0 (see Section 23.1). *) let _userMinor = seekReadUInt16 is (peOptionalHeaderPhysLoc + 46) (* User Minor Always 0 (see Section 23.1). *) let subsysMajor = seekReadUInt16AsInt32 is (peOptionalHeaderPhysLoc + 48) (* SubSys Major Always 4 (see Section 23.1). *) let subsysMinor = seekReadUInt16AsInt32 is (peOptionalHeaderPhysLoc + 50) (* SubSys Minor Always 0 (see Section 23.1). *) (* x86: 000000d0 *) let _imageEndAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 56) (* Image Size: Size, in bytes, of image, including all headers and padding; shall be a multiple of Section Alignment. e.g. 0x0000e000 *) let _headerPhysSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 60) (* Header Size Combined size of MS-DOS Header, PE Header, PE Optional Header and padding; shall be a multiple of the file alignment. *) let subsys = seekReadUInt16 is (peOptionalHeaderPhysLoc + 68) (* SubSystem Subsystem required to run this image. Shall be either IMAGE_SUBSYSTEM_WINDOWS_CE_GUI (!0x3) or IMAGE_SUBSYSTEM_WINDOWS_GUI (!0x2). QUERY: Why is this 3 on the images ILASM produces??? *) let useHighEnthropyVA = let n = seekReadUInt16 is (peOptionalHeaderPhysLoc + 70) let highEnthropyVA = 0x20us (n &&& highEnthropyVA) = highEnthropyVA (* x86: 000000e0 *) (* WARNING: THESE ARE 64 bit ON x64/ia64 *) (* REVIEW: If we ever decide that we need these values for x64, we'll have to read them in as 64bit and fix up the rest of the offsets. Then again, it should suffice to just use the defaults, and still not bother... *) (* let stackReserve = seekReadInt32 is (peOptionalHeaderPhysLoc + 72) in *) (* Stack Reserve Size Always 0x100000 (1Mb) (see Section 23.1). *) (* let stackCommit = seekReadInt32 is (peOptionalHeaderPhysLoc + 76) in *) (* Stack Commit Size Always 0x1000 (4Kb) (see Section 23.1). *) (* let heapReserve = seekReadInt32 is (peOptionalHeaderPhysLoc + 80) in *) (* Heap Reserve Size Always 0x100000 (1Mb) (see Section 23.1). *) (* let heapCommit = seekReadInt32 is (peOptionalHeaderPhysLoc + 84) in *) (* Heap Commit Size Always 0x1000 (4Kb) (see Section 23.1). *) (* x86: 000000f0, x64: 00000100 *) let _numDataDirectories = seekReadInt32 is (peOptionalHeaderPhysLoc + 92 + x64adjust) (* Number of Data Directories: Always 0x10 (see Section 23.1). *) (* 00000100 - these addresses are for x86 - for the x64 location, add x64adjust (0x10) *) let _importTableAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 104 + x64adjust) (* Import Table RVA of Import Table, (see clause 24.3.1). e.g. 0000b530 *) let _importTableSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 108 + x64adjust) (* Size of Import Table, (see clause 24.3.1). *) let nativeResourcesAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 112 + x64adjust) let nativeResourcesSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 116 + x64adjust) (* 00000110 *) (* 00000120 *) (* let base_relocTableNames.addr = seekReadInt32 is (peOptionalHeaderPhysLoc + 136) let base_relocTableNames.size = seekReadInt32 is (peOptionalHeaderPhysLoc + 140) in *) (* 00000130 *) (* 00000140 *) (* 00000150 *) let _importAddrTableAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 192 + x64adjust) (* RVA of Import Addr Table, (see clause 24.3.1). e.g. 0x00002000 *) let _importAddrTableSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 196 + x64adjust) (* Size of Import Addr Table, (see clause 24.3.1). e.g. 0x00002000 *) (* 00000160 *) let cliHeaderAddr = seekReadInt32 is (peOptionalHeaderPhysLoc + 208 + x64adjust) let _cliHeaderSize = seekReadInt32 is (peOptionalHeaderPhysLoc + 212 + x64adjust) (* 00000170 *) (* Crack section headers *) let sectionHeaders = [ for i in 0 .. numSections-1 do let pos = sectionHeadersStartPhysLoc + i * 0x28 let virtSize = seekReadInt32 is (pos + 8) let virtAddr = seekReadInt32 is (pos + 12) let physLoc = seekReadInt32 is (pos + 20) yield (virtAddr,virtSize,physLoc) ] let findSectionHeader addr = let rec look i pos = if i >= numSections then 0x0 else let virtSize = seekReadInt32 is (pos + 8) let virtAddr = seekReadInt32 is (pos + 12) if (addr >= virtAddr && addr < virtAddr + virtSize) then pos else look (i+1) (pos + 0x28) look 0 sectionHeadersStartPhysLoc let textHeaderStart = findSectionHeader cliHeaderAddr let dataHeaderStart = findSectionHeader dataSegmentAddr (* let relocHeaderStart = findSectionHeader base_relocTableNames.addr in *) let _textSize = if textHeaderStart = 0x0 then 0x0 else seekReadInt32 is (textHeaderStart + 8) let _textAddr = if textHeaderStart = 0x0 then 0x0 else seekReadInt32 is (textHeaderStart + 12) let textSegmentPhysicalSize = if textHeaderStart = 0x0 then 0x0 else seekReadInt32 is (textHeaderStart + 16) let textSegmentPhysicalLoc = if textHeaderStart = 0x0 then 0x0 else seekReadInt32 is (textHeaderStart + 20) if logging then dprintn (infile + ": textHeaderStart = "+string textHeaderStart); if logging then dprintn (infile + ": dataHeaderStart = "+string dataHeaderStart); if logging then dprintn (infile + ": dataSegmentAddr (pre section crack) = "+string dataSegmentAddr); let dataSegmentSize = if dataHeaderStart = 0x0 then 0x0 else seekReadInt32 is (dataHeaderStart + 8) let dataSegmentAddr = if dataHeaderStart = 0x0 then 0x0 else seekReadInt32 is (dataHeaderStart + 12) let dataSegmentPhysicalSize = if dataHeaderStart = 0x0 then 0x0 else seekReadInt32 is (dataHeaderStart + 16) let dataSegmentPhysicalLoc = if dataHeaderStart = 0x0 then 0x0 else seekReadInt32 is (dataHeaderStart + 20) if logging then dprintn (infile + ": dataSegmentAddr (post section crack) = "+string dataSegmentAddr); let anyV2P (n,v) = let rec look i pos = if i >= numSections then (failwith (infile + ": bad "+n+", rva "+string v); 0x0) else let virtSize = seekReadInt32 is (pos + 8) let virtAddr = seekReadInt32 is (pos + 12) let physLoc = seekReadInt32 is (pos + 20) if (v >= virtAddr && (v < virtAddr + virtSize)) then (v - virtAddr) + physLoc else look (i+1) (pos + 0x28) look 0 sectionHeadersStartPhysLoc if logging then dprintn (infile + ": numSections = "+string numSections); if logging then dprintn (infile + ": cliHeaderAddr = "+string cliHeaderAddr); if logging then dprintn (infile + ": cliHeaderPhys = "+string (anyV2P ("cli header",cliHeaderAddr))); if logging then dprintn (infile + ": dataSegmentSize = "+string dataSegmentSize); if logging then dprintn (infile + ": dataSegmentAddr = "+string dataSegmentAddr); let cliHeaderPhysLoc = anyV2P ("cli header",cliHeaderAddr) let _majorRuntimeVersion = seekReadUInt16 is (cliHeaderPhysLoc + 4) let _minorRuntimeVersion = seekReadUInt16 is (cliHeaderPhysLoc + 6) let metadataAddr = seekReadInt32 is (cliHeaderPhysLoc + 8) let _metadataSegmentSize = seekReadInt32 is (cliHeaderPhysLoc + 12) let cliFlags = seekReadInt32 is (cliHeaderPhysLoc + 16) let ilOnly = (cliFlags &&& 0x01) <> 0x00 let only32 = (cliFlags &&& 0x02) <> 0x00 let is32bitpreferred = (cliFlags &&& 0x00020003) <> 0x00 let _strongnameSigned = (cliFlags &&& 0x08) <> 0x00 let _trackdebugdata = (cliFlags &&& 0x010000) <> 0x00 let entryPointToken = seekReadUncodedToken is (cliHeaderPhysLoc + 20) let resourcesAddr = seekReadInt32 is (cliHeaderPhysLoc + 24) let resourcesSize = seekReadInt32 is (cliHeaderPhysLoc + 28) let strongnameAddr = seekReadInt32 is (cliHeaderPhysLoc + 32) let _strongnameSize = seekReadInt32 is (cliHeaderPhysLoc + 36) let vtableFixupsAddr = seekReadInt32 is (cliHeaderPhysLoc + 40) let _vtableFixupsSize = seekReadInt32 is (cliHeaderPhysLoc + 44) if logging then dprintn (infile + ": metadataAddr = "+string metadataAddr); if logging then dprintn (infile + ": resourcesAddr = "+string resourcesAddr); if logging then dprintn (infile + ": resourcesSize = "+string resourcesSize); if logging then dprintn (infile + ": nativeResourcesAddr = "+string nativeResourcesAddr); if logging then dprintn (infile + ": nativeResourcesSize = "+string nativeResourcesSize); let metadataPhysLoc = anyV2P ("metadata",metadataAddr) let magic = seekReadUInt16AsInt32 is metadataPhysLoc if magic <> 0x5342 then failwith (infile + ": bad metadata magic number: " + string magic); let magic2 = seekReadUInt16AsInt32 is (metadataPhysLoc + 2) if magic2 <> 0x424a then failwith "bad metadata magic number"; let _majorMetadataVersion = seekReadUInt16 is (metadataPhysLoc + 4) let _minorMetadataVersion = seekReadUInt16 is (metadataPhysLoc + 6) let versionLength = seekReadInt32 is (metadataPhysLoc + 12) let ilMetadataVersion = seekReadBytes is (metadataPhysLoc + 16) versionLength |> Array.filter (fun b -> b <> 0uy) let x = align 0x04 (16 + versionLength) let numStreams = seekReadUInt16AsInt32 is (metadataPhysLoc + x + 2) let streamHeadersStart = (metadataPhysLoc + x + 4) if logging then dprintn (infile + ": numStreams = "+string numStreams); if logging then dprintn (infile + ": streamHeadersStart = "+string streamHeadersStart); (* Crack stream headers *) let tryFindStream name = let rec look i pos = if i >= numStreams then None else let offset = seekReadInt32 is (pos + 0) let length = seekReadInt32 is (pos + 4) let res = ref true let fin = ref false let n = ref 0 // read and compare the stream name byte by byte while (not !fin) do let c= seekReadByteAsInt32 is (pos + 8 + (!n)) if c = 0 then fin := true elif !n >= Array.length name || c <> name.[!n] then res := false; incr n if !res then Some(offset + metadataPhysLoc,length) else look (i+1) (align 0x04 (pos + 8 + (!n))) look 0 streamHeadersStart let findStream name = match tryFindStream name with | None -> (0x0, 0x0) | Some positions -> positions let (tablesStreamPhysLoc, tablesStreamSize) = match tryFindStream [| 0x23; 0x7e |] (* #~ *) with | Some res -> res | None -> match tryFindStream [| 0x23; 0x2d |] (* #-: at least one DLL I've seen uses this! *) with | Some res -> res | None -> dprintf "no metadata tables found under stream names '#~' or '#-', please report this\n"; let firstStreamOffset = seekReadInt32 is (streamHeadersStart + 0) let firstStreamLength = seekReadInt32 is (streamHeadersStart + 4) firstStreamOffset,firstStreamLength let (stringsStreamPhysicalLoc, stringsStreamSize) = findStream [| 0x23; 0x53; 0x74; 0x72; 0x69; 0x6e; 0x67; 0x73; |] (* #Strings *) let (userStringsStreamPhysicalLoc, userStringsStreamSize) = findStream [| 0x23; 0x55; 0x53; |] (* #US *) let (guidsStreamPhysicalLoc, _guidsStreamSize) = findStream [| 0x23; 0x47; 0x55; 0x49; 0x44; |] (* #GUID *) let (blobsStreamPhysicalLoc, blobsStreamSize) = findStream [| 0x23; 0x42; 0x6c; 0x6f; 0x62; |] (* #Blob *) if logging then dprintn (infile + ": tablesAddr = "+string tablesStreamPhysLoc); if logging then dprintn (infile + ": tablesSize = "+string tablesStreamSize); if logging then dprintn (infile + ": stringsAddr = "+string stringsStreamPhysicalLoc); if logging then dprintn (infile + ": stringsSize = "+string stringsStreamSize); if logging then dprintn (infile + ": user_stringsAddr = "+string userStringsStreamPhysicalLoc); if logging then dprintn (infile + ": guidsAddr = "+string guidsStreamPhysicalLoc); if logging then dprintn (infile + ": blobsAddr = "+string blobsStreamPhysicalLoc); let tables_streamMajor_version = seekReadByteAsInt32 is (tablesStreamPhysLoc + 4) let tables_streamMinor_version = seekReadByteAsInt32 is (tablesStreamPhysLoc + 5) let usingWhidbeyBeta1TableSchemeForGenericParam = (tables_streamMajor_version = 1) && (tables_streamMinor_version = 1) let tableKinds = [|kindModule (* Table 0 *); kindTypeRef (* Table 1 *); kindTypeDef (* Table 2 *); kindIllegal (* kindFieldPtr *) (* Table 3 *); kindFieldDef (* Table 4 *); kindIllegal (* kindMethodPtr *) (* Table 5 *); kindMethodDef (* Table 6 *); kindIllegal (* kindParamPtr *) (* Table 7 *); kindParam (* Table 8 *); kindInterfaceImpl (* Table 9 *); kindMemberRef (* Table 10 *); kindConstant (* Table 11 *); kindCustomAttribute (* Table 12 *); kindFieldMarshal (* Table 13 *); kindDeclSecurity (* Table 14 *); kindClassLayout (* Table 15 *); kindFieldLayout (* Table 16 *); kindStandAloneSig (* Table 17 *); kindEventMap (* Table 18 *); kindIllegal (* kindEventPtr *) (* Table 19 *); kindEvent (* Table 20 *); kindPropertyMap (* Table 21 *); kindIllegal (* kindPropertyPtr *) (* Table 22 *); kindProperty (* Table 23 *); kindMethodSemantics (* Table 24 *); kindMethodImpl (* Table 25 *); kindModuleRef (* Table 26 *); kindTypeSpec (* Table 27 *); kindImplMap (* Table 28 *); kindFieldRVA (* Table 29 *); kindIllegal (* kindENCLog *) (* Table 30 *); kindIllegal (* kindENCMap *) (* Table 31 *); kindAssembly (* Table 32 *); kindIllegal (* kindAssemblyProcessor *) (* Table 33 *); kindIllegal (* kindAssemblyOS *) (* Table 34 *); kindAssemblyRef (* Table 35 *); kindIllegal (* kindAssemblyRefProcessor *) (* Table 36 *); kindIllegal (* kindAssemblyRefOS *) (* Table 37 *); kindFileRef (* Table 38 *); kindExportedType (* Table 39 *); kindManifestResource (* Table 40 *); kindNested (* Table 41 *); (if usingWhidbeyBeta1TableSchemeForGenericParam then kindGenericParam_v1_1 else kindGenericParam_v2_0); (* Table 42 *) kindMethodSpec (* Table 43 *); kindGenericParamConstraint (* Table 44 *); kindIllegal (* Table 45 *); kindIllegal (* Table 46 *); kindIllegal (* Table 47 *); kindIllegal (* Table 48 *); kindIllegal (* Table 49 *); kindIllegal (* Table 50 *); kindIllegal (* Table 51 *); kindIllegal (* Table 52 *); kindIllegal (* Table 53 *); kindIllegal (* Table 54 *); kindIllegal (* Table 55 *); kindIllegal (* Table 56 *); kindIllegal (* Table 57 *); kindIllegal (* Table 58 *); kindIllegal (* Table 59 *); kindIllegal (* Table 60 *); kindIllegal (* Table 61 *); kindIllegal (* Table 62 *); kindIllegal (* Table 63 *); |] let heapSizes = seekReadByteAsInt32 is (tablesStreamPhysLoc + 6) let valid = seekReadInt64 is (tablesStreamPhysLoc + 8) let sorted = seekReadInt64 is (tablesStreamPhysLoc + 16) let tablesPresent, tableRowCount, startOfTables = let present = ref [] let numRows = Array.create 64 0 let prevNumRowIdx = ref (tablesStreamPhysLoc + 24) for i = 0 to 63 do if (valid &&& (int64 1 <<< i)) <> int64 0 then present := i :: !present; numRows.[i] <- (seekReadInt32 is !prevNumRowIdx); prevNumRowIdx := !prevNumRowIdx + 4 List.rev !present, numRows, !prevNumRowIdx let getNumRows (tab:TableName) = tableRowCount.[tab.Index] let numTables = tablesPresent.Length let stringsBigness = (heapSizes &&& 1) <> 0 let guidsBigness = (heapSizes &&& 2) <> 0 let blobsBigness = (heapSizes &&& 4) <> 0 if logging then dprintn (infile + ": numTables = "+string numTables); if logging && stringsBigness then dprintn (infile + ": strings are big"); if logging && blobsBigness then dprintn (infile + ": blobs are big"); let tableBigness = Array.map (fun n -> n >= 0x10000) tableRowCount let codedBigness nbits tab = let rows = getNumRows tab rows >= (0x10000 >>>& nbits) let tdorBigness = codedBigness 2 TableNames.TypeDef || codedBigness 2 TableNames.TypeRef || codedBigness 2 TableNames.TypeSpec let tomdBigness = codedBigness 1 TableNames.TypeDef || codedBigness 1 TableNames.Method let hcBigness = codedBigness 2 TableNames.Field || codedBigness 2 TableNames.Param || codedBigness 2 TableNames.Property let hcaBigness = codedBigness 5 TableNames.Method || codedBigness 5 TableNames.Field || codedBigness 5 TableNames.TypeRef || codedBigness 5 TableNames.TypeDef || codedBigness 5 TableNames.Param || codedBigness 5 TableNames.InterfaceImpl || codedBigness 5 TableNames.MemberRef || codedBigness 5 TableNames.Module || codedBigness 5 TableNames.Permission || codedBigness 5 TableNames.Property || codedBigness 5 TableNames.Event || codedBigness 5 TableNames.StandAloneSig || codedBigness 5 TableNames.ModuleRef || codedBigness 5 TableNames.TypeSpec || codedBigness 5 TableNames.Assembly || codedBigness 5 TableNames.AssemblyRef || codedBigness 5 TableNames.File || codedBigness 5 TableNames.ExportedType || codedBigness 5 TableNames.ManifestResource || codedBigness 5 TableNames.GenericParam || codedBigness 5 TableNames.GenericParamConstraint || codedBigness 5 TableNames.MethodSpec let hfmBigness = codedBigness 1 TableNames.Field || codedBigness 1 TableNames.Param let hdsBigness = codedBigness 2 TableNames.TypeDef || codedBigness 2 TableNames.Method || codedBigness 2 TableNames.Assembly let mrpBigness = codedBigness 3 TableNames.TypeRef || codedBigness 3 TableNames.ModuleRef || codedBigness 3 TableNames.Method || codedBigness 3 TableNames.TypeSpec let hsBigness = codedBigness 1 TableNames.Event || codedBigness 1 TableNames.Property let mdorBigness = codedBigness 1 TableNames.Method || codedBigness 1 TableNames.MemberRef let mfBigness = codedBigness 1 TableNames.Field || codedBigness 1 TableNames.Method let iBigness = codedBigness 2 TableNames.File || codedBigness 2 TableNames.AssemblyRef || codedBigness 2 TableNames.ExportedType let catBigness = codedBigness 3 TableNames.Method || codedBigness 3 TableNames.MemberRef let rsBigness = codedBigness 2 TableNames.Module || codedBigness 2 TableNames.ModuleRef || codedBigness 2 TableNames.AssemblyRef || codedBigness 2 TableNames.TypeRef let rowKindSize (RowKind kinds) = kinds |> List.sumBy (fun x -> match x with | UShort -> 2 | ULong -> 4 | Byte -> 1 | Data -> 4 | GGuid -> (if guidsBigness then 4 else 2) | Blob -> (if blobsBigness then 4 else 2) | SString -> (if stringsBigness then 4 else 2) | SimpleIndex tab -> (if tableBigness.[tab.Index] then 4 else 2) | TypeDefOrRefOrSpec -> (if tdorBigness then 4 else 2) | TypeOrMethodDef -> (if tomdBigness then 4 else 2) | HasConstant -> (if hcBigness then 4 else 2) | HasCustomAttribute -> (if hcaBigness then 4 else 2) | HasFieldMarshal -> (if hfmBigness then 4 else 2) | HasDeclSecurity -> (if hdsBigness then 4 else 2) | MemberRefParent -> (if mrpBigness then 4 else 2) | HasSemantics -> (if hsBigness then 4 else 2) | MethodDefOrRef -> (if mdorBigness then 4 else 2) | MemberForwarded -> (if mfBigness then 4 else 2) | Implementation -> (if iBigness then 4 else 2) | CustomAttributeType -> (if catBigness then 4 else 2) | ResolutionScope -> (if rsBigness then 4 else 2)) let tableRowSizes = tableKinds |> Array.map rowKindSize let tablePhysLocations = let res = Array.create 64 0x0 let prevTablePhysLoc = ref startOfTables for i = 0 to 63 do res.[i] <- !prevTablePhysLoc; prevTablePhysLoc := !prevTablePhysLoc + (tableRowCount.[i] * tableRowSizes.[i]); if logging then dprintf "tablePhysLocations.[%d] = %d, offset from startOfTables = 0x%08x\n" i res.[i] (res.[i] - startOfTables); res let inbase = Filename.fileNameOfPath infile + ": " // All the caches. The sizes are guesstimates for the rough sharing-density of the assembly let cacheAssemblyRef = mkCacheInt32 opts.optimizeForMemory inbase "ILAssemblyRef" (getNumRows TableNames.AssemblyRef) let cacheMethodSpecAsMethodData = mkCacheGeneric opts.optimizeForMemory inbase "MethodSpecAsMethodData" (getNumRows TableNames.MethodSpec / 20 + 1) let cacheMemberRefAsMemberData = mkCacheGeneric opts.optimizeForMemory inbase "MemberRefAsMemberData" (getNumRows TableNames.MemberRef / 20 + 1) let cacheCustomAttr = mkCacheGeneric opts.optimizeForMemory inbase "CustomAttr" (getNumRows TableNames.CustomAttribute / 50 + 1) let cacheTypeRef = mkCacheInt32 opts.optimizeForMemory inbase "ILTypeRef" (getNumRows TableNames.TypeRef / 20 + 1) let cacheTypeRefAsType = mkCacheGeneric opts.optimizeForMemory inbase "TypeRefAsType" (getNumRows TableNames.TypeRef / 20 + 1) let cacheBlobHeapAsPropertySig = mkCacheGeneric opts.optimizeForMemory inbase "BlobHeapAsPropertySig" (getNumRows TableNames.Property / 20 + 1) let cacheBlobHeapAsFieldSig = mkCacheGeneric opts.optimizeForMemory inbase "BlobHeapAsFieldSig" (getNumRows TableNames.Field / 20 + 1) let cacheBlobHeapAsMethodSig = mkCacheGeneric opts.optimizeForMemory inbase "BlobHeapAsMethodSig" (getNumRows TableNames.Method / 20 + 1) let cacheTypeDefAsType = mkCacheGeneric opts.optimizeForMemory inbase "TypeDefAsType" (getNumRows TableNames.TypeDef / 20 + 1) let cacheMethodDefAsMethodData = mkCacheInt32 opts.optimizeForMemory inbase "MethodDefAsMethodData" (getNumRows TableNames.Method / 20 + 1) let cacheGenericParams = mkCacheGeneric opts.optimizeForMemory inbase "GenericParams" (getNumRows TableNames.GenericParam / 20 + 1) let cacheFieldDefAsFieldSpec = mkCacheInt32 opts.optimizeForMemory inbase "FieldDefAsFieldSpec" (getNumRows TableNames.Field / 20 + 1) let cacheUserStringHeap = mkCacheInt32 opts.optimizeForMemory inbase "UserStringHeap" ( userStringsStreamSize / 20 + 1) // nb. Lots and lots of cache hits on this cache, hence never optimize cache away let cacheStringHeap = mkCacheInt32 false inbase "string heap" ( stringsStreamSize / 50 + 1) let cacheBlobHeap = mkCacheInt32 opts.optimizeForMemory inbase "blob heap" ( blobsStreamSize / 50 + 1) // These tables are not required to enforce sharing fo the final data // structure, but are very useful as searching these tables gives rise to many reads // in standard applications. let cacheNestedRow = mkCacheInt32 opts.optimizeForMemory inbase "Nested Table Rows" (getNumRows TableNames.Nested / 20 + 1) let cacheConstantRow = mkCacheInt32 opts.optimizeForMemory inbase "Constant Rows" (getNumRows TableNames.Constant / 20 + 1) let cacheMethodSemanticsRow = mkCacheInt32 opts.optimizeForMemory inbase "MethodSemantics Rows" (getNumRows TableNames.MethodSemantics / 20 + 1) let cacheTypeDefRow = mkCacheInt32 opts.optimizeForMemory inbase "ILTypeDef Rows" (getNumRows TableNames.TypeDef / 20 + 1) let cacheInterfaceImplRow = mkCacheInt32 opts.optimizeForMemory inbase "InterfaceImpl Rows" (getNumRows TableNames.InterfaceImpl / 20 + 1) let cacheFieldMarshalRow = mkCacheInt32 opts.optimizeForMemory inbase "FieldMarshal Rows" (getNumRows TableNames.FieldMarshal / 20 + 1) let cachePropertyMapRow = mkCacheInt32 opts.optimizeForMemory inbase "PropertyMap Rows" (getNumRows TableNames.PropertyMap / 20 + 1) let mkRowCounter _nm = let count = ref 0 #if DEBUG #if STATISTICS addReport (fun oc -> if !count <> 0 then oc.WriteLine (inbase+string !count + " "+_nm+" rows read")); #endif #else _nm |> ignore #endif count let countTypeRef = mkRowCounter "ILTypeRef" let countTypeDef = mkRowCounter "ILTypeDef" let countField = mkRowCounter "Field" let countMethod = mkRowCounter "Method" let countParam = mkRowCounter "Param" let countInterfaceImpl = mkRowCounter "InterfaceImpl" let countMemberRef = mkRowCounter "MemberRef" let countConstant = mkRowCounter "Constant" let countCustomAttribute = mkRowCounter "CustomAttribute" let countFieldMarshal = mkRowCounter "FieldMarshal" let countPermission = mkRowCounter "Permission" let countClassLayout = mkRowCounter "ClassLayout" let countFieldLayout = mkRowCounter "FieldLayout" let countStandAloneSig = mkRowCounter "StandAloneSig" let countEventMap = mkRowCounter "EventMap" let countEvent = mkRowCounter "Event" let countPropertyMap = mkRowCounter "PropertyMap" let countProperty = mkRowCounter "Property" let countMethodSemantics = mkRowCounter "MethodSemantics" let countMethodImpl = mkRowCounter "MethodImpl" let countModuleRef = mkRowCounter "ILModuleRef" let countTypeSpec = mkRowCounter "ILTypeSpec" let countImplMap = mkRowCounter "ImplMap" let countFieldRVA = mkRowCounter "FieldRVA" let countAssembly = mkRowCounter "Assembly" let countAssemblyRef = mkRowCounter "ILAssemblyRef" let countFile = mkRowCounter "File" let countExportedType = mkRowCounter "ILExportedTypeOrForwarder" let countManifestResource = mkRowCounter "ManifestResource" let countNested = mkRowCounter "Nested" let countGenericParam = mkRowCounter "GenericParam" let countGenericParamConstraint = mkRowCounter "GenericParamConstraint" let countMethodSpec = mkRowCounter "ILMethodSpec" //----------------------------------------------------------------------- // Set up the PDB reader so we can read debug info for methods. // ---------------------------------------------------------------------- #if NO_PDB_READER let pdb = None #else let pdb = if runningOnMono then None else getPdbReader opts infile #endif let rowAddr (tab:TableName) idx = tablePhysLocations.[tab.Index] + (idx - 1) * tableRowSizes.[tab.Index] // Build the reader context // Use an initialization hole let ctxtH = ref None let ctxt = { ilg=opts.ilGlobals; dataEndPoints = dataEndPoints ctxtH; pdb=pdb; sorted=sorted; getNumRows=getNumRows; textSegmentPhysicalLoc=textSegmentPhysicalLoc; textSegmentPhysicalSize=textSegmentPhysicalSize; dataSegmentPhysicalLoc=dataSegmentPhysicalLoc; dataSegmentPhysicalSize=dataSegmentPhysicalSize; anyV2P=anyV2P; metadataAddr=metadataAddr; sectionHeaders=sectionHeaders; nativeResourcesAddr=nativeResourcesAddr; nativeResourcesSize=nativeResourcesSize; resourcesAddr=resourcesAddr; strongnameAddr=strongnameAddr; vtableFixupsAddr=vtableFixupsAddr; is=is; infile=infile; userStringsStreamPhysicalLoc = userStringsStreamPhysicalLoc; stringsStreamPhysicalLoc = stringsStreamPhysicalLoc; blobsStreamPhysicalLoc = blobsStreamPhysicalLoc; memoizeString = Tables.memoize id; readUserStringHeap = cacheUserStringHeap (readUserStringHeapUncached ctxtH); readStringHeap = cacheStringHeap (readStringHeapUncached ctxtH); readBlobHeap = cacheBlobHeap (readBlobHeapUncached ctxtH); seekReadNestedRow = cacheNestedRow (seekReadNestedRowUncached ctxtH); seekReadConstantRow = cacheConstantRow (seekReadConstantRowUncached ctxtH); seekReadMethodSemanticsRow = cacheMethodSemanticsRow (seekReadMethodSemanticsRowUncached ctxtH); seekReadTypeDefRow = cacheTypeDefRow (seekReadTypeDefRowUncached ctxtH); seekReadInterfaceImplRow = cacheInterfaceImplRow (seekReadInterfaceImplRowUncached ctxtH); seekReadFieldMarshalRow = cacheFieldMarshalRow (seekReadFieldMarshalRowUncached ctxtH); seekReadPropertyMapRow = cachePropertyMapRow (seekReadPropertyMapRowUncached ctxtH); seekReadAssemblyRef = cacheAssemblyRef (seekReadAssemblyRefUncached ctxtH); seekReadMethodSpecAsMethodData = cacheMethodSpecAsMethodData (seekReadMethodSpecAsMethodDataUncached ctxtH); seekReadMemberRefAsMethodData = cacheMemberRefAsMemberData (seekReadMemberRefAsMethodDataUncached ctxtH); seekReadMemberRefAsFieldSpec = seekReadMemberRefAsFieldSpecUncached ctxtH; seekReadCustomAttr = cacheCustomAttr (seekReadCustomAttrUncached ctxtH); seekReadSecurityDecl = seekReadSecurityDeclUncached ctxtH; seekReadTypeRef = cacheTypeRef (seekReadTypeRefUncached ctxtH); readBlobHeapAsPropertySig = cacheBlobHeapAsPropertySig (readBlobHeapAsPropertySigUncached ctxtH); readBlobHeapAsFieldSig = cacheBlobHeapAsFieldSig (readBlobHeapAsFieldSigUncached ctxtH); readBlobHeapAsMethodSig = cacheBlobHeapAsMethodSig (readBlobHeapAsMethodSigUncached ctxtH); readBlobHeapAsLocalsSig = readBlobHeapAsLocalsSigUncached ctxtH; seekReadTypeDefAsType = cacheTypeDefAsType (seekReadTypeDefAsTypeUncached ctxtH); seekReadTypeRefAsType = cacheTypeRefAsType (seekReadTypeRefAsTypeUncached ctxtH); seekReadMethodDefAsMethodData = cacheMethodDefAsMethodData (seekReadMethodDefAsMethodDataUncached ctxtH); seekReadGenericParams = cacheGenericParams (seekReadGenericParamsUncached ctxtH); seekReadFieldDefAsFieldSpec = cacheFieldDefAsFieldSpec (seekReadFieldDefAsFieldSpecUncached ctxtH); guidsStreamPhysicalLoc = guidsStreamPhysicalLoc; rowAddr=rowAddr; entryPointToken=entryPointToken; rsBigness=rsBigness; tdorBigness=tdorBigness; tomdBigness=tomdBigness; hcBigness=hcBigness; hcaBigness=hcaBigness; hfmBigness=hfmBigness; hdsBigness=hdsBigness; mrpBigness=mrpBigness; hsBigness=hsBigness; mdorBigness=mdorBigness; mfBigness=mfBigness; iBigness=iBigness; catBigness=catBigness; stringsBigness=stringsBigness; guidsBigness=guidsBigness; blobsBigness=blobsBigness; tableBigness=tableBigness; countTypeRef = countTypeRef; countTypeDef = countTypeDef; countField = countField; countMethod = countMethod; countParam = countParam; countInterfaceImpl = countInterfaceImpl; countMemberRef = countMemberRef; countConstant = countConstant; countCustomAttribute = countCustomAttribute; countFieldMarshal = countFieldMarshal; countPermission = countPermission; countClassLayout = countClassLayout; countFieldLayout = countFieldLayout; countStandAloneSig = countStandAloneSig; countEventMap = countEventMap; countEvent = countEvent; countPropertyMap = countPropertyMap; countProperty = countProperty; countMethodSemantics = countMethodSemantics; countMethodImpl = countMethodImpl; countModuleRef = countModuleRef; countTypeSpec = countTypeSpec; countImplMap = countImplMap; countFieldRVA = countFieldRVA; countAssembly = countAssembly; countAssemblyRef = countAssemblyRef; countFile = countFile; countExportedType = countExportedType; countManifestResource = countManifestResource; countNested = countNested; countGenericParam = countGenericParam; countGenericParamConstraint = countGenericParamConstraint; countMethodSpec = countMethodSpec; } ctxtH := Some ctxt; let ilModule = seekReadModule ctxt (subsys, (subsysMajor, subsysMinor), useHighEnthropyVA, ilOnly,only32,is32bitpreferred,only64,platform,isDll, alignVirt,alignPhys,imageBaseReal,System.Text.Encoding.UTF8.GetString (ilMetadataVersion, 0, ilMetadataVersion.Length)) 1 let ilAssemblyRefs = lazy [ for i in 1 .. getNumRows TableNames.AssemblyRef do yield seekReadAssemblyRef ctxt i ] ilModule,ilAssemblyRefs,pdb let CloseILModuleReader x = x.dispose() let defaults = { optimizeForMemory=false; pdbPath= None; ilGlobals=ecmaILGlobals } #if NO_PDB_READER let ClosePdbReader _x = () #else let ClosePdbReader pdb = match pdb with | Some (pdbr,_) -> pdbReadClose pdbr | None -> () #endif let OpenILModuleReader infile opts = try let mmap = MMapChannel.OpenIn infile let modul,ilAssemblyRefs,pdb = genOpenBinaryReader infile (MMap mmap) opts { modul = modul; ilAssemblyRefs=ilAssemblyRefs; dispose = (fun () -> mmap.Close(); ClosePdbReader pdb) } with :? System.DllNotFoundException -> let stream = FileSystem.FileStreamReadShim infile let is = new BinaryReader(stream) let cell = ref (Some is) let modul,ilAssemblyRefs,pdb = genOpenBinaryReader infile (Chan (infile,cell)) opts { modul = modul; ilAssemblyRefs = ilAssemblyRefs; dispose = (fun () -> cell := None; is.Close(); ClosePdbReader pdb) } // ++GLOBAL MUTABLE STATE let ilModuleReaderCache = new Internal.Utilities.Collections.AgedLookup<(string * System.DateTime),ILModuleReader>(0, areSame=(fun (x,y) -> x = y)) let OpenILModuleReaderAfterReadingAllBytes infile opts = // Pseudo-normalize the paths. let key,succeeded = try (FileSystem.GetFullPathShim(infile), FileSystem.GetLastWriteTimeShim(infile)), true with e -> System.Diagnostics.Debug.Assert(false, "Failed to compute key in OpenILModuleReaderAfterReadingAllBytes cache. Falling back to uncached.") ("",System.DateTime.Now), false let cacheResult = if not succeeded then None // Fall back to uncached. else if opts.pdbPath.IsSome then None // can't used a cached entry when reading PDBs, since it makes the returned object IDisposable else ilModuleReaderCache.TryGet(key) match cacheResult with | Some(ilModuleReader) -> ilModuleReader | None -> let mc = MemChannel.OpenIn infile let modul,ilAssemblyRefs,pdb = genOpenBinaryReader infile (Mem mc) opts let ilModuleReader = { modul = modul; ilAssemblyRefs = ilAssemblyRefs dispose = (fun () -> ClosePdbReader pdb) } if isNone pdb && succeeded then ilModuleReaderCache.Put(key, ilModuleReader) ilModuleReader let OpenILModuleReaderFromBytes fileNameForDebugOutput bytes opts = assert opts.pdbPath.IsNone let mc = MemChannel.OpenBytes bytes let modul,ilAssemblyRefs,pdb = genOpenBinaryReader fileNameForDebugOutput (Mem mc) opts let ilModuleReader = { modul = modul; ilAssemblyRefs = ilAssemblyRefs dispose = (fun () -> ClosePdbReader pdb) } ilModuleReader fsharp-3.0.34/src/absil/zset.fs0000775000175000017500000000350712260314606015300 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Internal.Utilities open Internal.Utilities.Collections.Tagged open System.Collections.Generic /// Sets with a specific comparison function type internal Zset<'T> = Internal.Utilities.Collections.Tagged.Set<'T> [] module internal Zset = let empty (ord : IComparer<'T>) = Internal.Utilities.Collections.Tagged.Set<_,_>.Empty(ord) let isEmpty (s:Zset<_>) = s.IsEmpty let contains x (s:Zset<_>) = s.Contains(x) let add x (s:Zset<_>) = s.Add(x) let addList xs a = List.fold (fun a x -> add x a) a xs let addFlatList xs a = FlatList.fold (fun a x -> add x a) a xs let singleton ord x = add x (empty ord) let remove x (s:Zset<_>) = s.Remove(x) let fold (f : 'T -> 'b -> 'b) (s:Zset<_>) b = s.Fold f b let iter f (s:Zset<_>) = s.Iterate f let forall p (s:Zset<_>) = s.ForAll p let count (s:Zset<_>) = s.Count let exists p (s:Zset<_>) = s.Exists p let subset (s1:Zset<_>) (s2:Zset<_>) = s1.IsSubsetOf s2 let equal (s1:Zset<_>) (s2:Zset<_>) = Internal.Utilities.Collections.Tagged.Set<_,_>.Equality(s1,s2) let elements (s:Zset<_>) = s.ToList() let filter p (s:Zset<_>) = s.Filter p let union (s1:Zset<_>) (s2:Zset<_>) = Internal.Utilities.Collections.Tagged.Set<_,_>.Union(s1,s2) let inter (s1:Zset<_>) (s2:Zset<_>) = Internal.Utilities.Collections.Tagged.Set<_,_>.Intersection(s1,s2) let diff (s1:Zset<_>) (s2:Zset<_>) = Internal.Utilities.Collections.Tagged.Set<_,_>.Difference(s1,s2) let memberOf m k = contains k m fsharp-3.0.34/src/absil/ilbinary.fs0000775000175000017500000010000012260314606016106 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.BinaryConstants open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library [] type TableName(idx: int) = member x.Index = idx static member FromIndex n = TableName n module TableNames = let Module = TableName 0 let TypeRef = TableName 1 let TypeDef = TableName 2 let FieldPtr = TableName 3 let Field = TableName 4 let MethodPtr = TableName 5 let Method = TableName 6 let ParamPtr = TableName 7 let Param = TableName 8 let InterfaceImpl = TableName 9 let MemberRef = TableName 10 let Constant = TableName 11 let CustomAttribute = TableName 12 let FieldMarshal = TableName 13 let Permission = TableName 14 let ClassLayout = TableName 15 let FieldLayout = TableName 16 let StandAloneSig = TableName 17 let EventMap = TableName 18 let EventPtr = TableName 19 let Event = TableName 20 let PropertyMap = TableName 21 let PropertyPtr = TableName 22 let Property = TableName 23 let MethodSemantics = TableName 24 let MethodImpl = TableName 25 let ModuleRef = TableName 26 let TypeSpec = TableName 27 let ImplMap = TableName 28 let FieldRVA = TableName 29 let ENCLog = TableName 30 let ENCMap = TableName 31 let Assembly = TableName 32 let AssemblyProcessor = TableName 33 let AssemblyOS = TableName 34 let AssemblyRef = TableName 35 let AssemblyRefProcessor = TableName 36 let AssemblyRefOS = TableName 37 let File = TableName 38 let ExportedType = TableName 39 let ManifestResource = TableName 40 let Nested = TableName 41 let GenericParam = TableName 42 let MethodSpec = TableName 43 let GenericParamConstraint = TableName 44 let UserStrings = TableName 0x70 (* Special encoding of embedded UserString tokens - See 1.9 Partition III *) /// Which tables are sorted and by which column // // Sorted bit-vector as stored by CLR V1: 00fa 0133 0002 0000 // But what does this mean? The ECMA spec does not say! // Metainfo -schema reports sorting as shown below. // But some sorting, e.g. EventMap does not seem to show let sortedTableInfo = [ (TableNames.InterfaceImpl,0); (TableNames.Constant, 1); (TableNames.CustomAttribute, 0); (TableNames.FieldMarshal, 0); (TableNames.Permission, 1); (TableNames.ClassLayout, 2); (TableNames.FieldLayout, 1); (TableNames.MethodSemantics, 2); (TableNames.MethodImpl, 0); (TableNames.ImplMap, 1); (TableNames.FieldRVA, 1); (TableNames.Nested, 0); (TableNames.GenericParam, 2); (TableNames.GenericParamConstraint, 0); ] [] type TypeDefOrRefTag(tag: int32) = member x.Tag = tag let tdor_TypeDef = TypeDefOrRefTag 0x00 let tdor_TypeRef = TypeDefOrRefTag 0x01 let tdor_TypeSpec = TypeDefOrRefTag 0x2 let mkTypeDefOrRefOrSpecTag x = match x with | 0x00 -> tdor_TypeDef // nb. avoid reallocation | 0x01 -> tdor_TypeRef | 0x02 -> tdor_TypeSpec | _ -> invalidArg "x" "mkTypeDefOrRefOrSpecTag" [] type HasConstantTag(tag: int32) = member x.Tag = tag let hc_FieldDef = HasConstantTag 0x0 let hc_ParamDef = HasConstantTag 0x1 let hc_Property = HasConstantTag 0x2 let mkHasConstantTag x = match x with | 0x00 -> hc_FieldDef | 0x01 -> hc_ParamDef | 0x02 -> hc_Property | _ -> invalidArg "x" "mkHasConstantTag" [] type HasCustomAttributeTag(tag: int32) = member x.Tag = tag let hca_MethodDef = HasCustomAttributeTag 0x0 let hca_FieldDef = HasCustomAttributeTag 0x1 let hca_TypeRef = HasCustomAttributeTag 0x2 let hca_TypeDef = HasCustomAttributeTag 0x3 let hca_ParamDef = HasCustomAttributeTag 0x4 let hca_InterfaceImpl = HasCustomAttributeTag 0x5 let hca_MemberRef = HasCustomAttributeTag 0x6 let hca_Module = HasCustomAttributeTag 0x7 let hca_Permission = HasCustomAttributeTag 0x8 let hca_Property = HasCustomAttributeTag 0x9 let hca_Event = HasCustomAttributeTag 0xa let hca_StandAloneSig = HasCustomAttributeTag 0xb let hca_ModuleRef = HasCustomAttributeTag 0xc let hca_TypeSpec = HasCustomAttributeTag 0xd let hca_Assembly = HasCustomAttributeTag 0xe let hca_AssemblyRef = HasCustomAttributeTag 0xf let hca_File = HasCustomAttributeTag 0x10 let hca_ExportedType = HasCustomAttributeTag 0x11 let hca_ManifestResource = HasCustomAttributeTag 0x12 let hca_GenericParam = HasCustomAttributeTag 0x13 let hca_GenericParamConstraint = HasCustomAttributeTag 0x14 let hca_MethodSpec = HasCustomAttributeTag 0x15 let mkHasCustomAttributeTag x = match x with | 0x00 -> hca_MethodDef | 0x01 -> hca_FieldDef | 0x02 -> hca_TypeRef | 0x03 -> hca_TypeDef | 0x04 -> hca_ParamDef | 0x05 -> hca_InterfaceImpl | 0x06 -> hca_MemberRef | 0x07 -> hca_Module | 0x08 -> hca_Permission | 0x09 -> hca_Property | 0x0a -> hca_Event | 0x0b -> hca_StandAloneSig | 0x0c -> hca_ModuleRef | 0x0d -> hca_TypeSpec | 0x0e -> hca_Assembly | 0x0f -> hca_AssemblyRef | 0x10 -> hca_File | 0x11 -> hca_ExportedType | 0x12 -> hca_ManifestResource | 0x13 -> hca_GenericParam | 0x14 -> hca_GenericParamConstraint | 0x15 -> hca_MethodSpec | _ -> HasCustomAttributeTag x [] type HasFieldMarshalTag(tag: int32) = member x.Tag = tag let hfm_FieldDef = HasFieldMarshalTag 0x00 let hfm_ParamDef = HasFieldMarshalTag 0x01 let mkHasFieldMarshalTag x = match x with | 0x00 -> hfm_FieldDef | 0x01 -> hfm_ParamDef | _ -> HasFieldMarshalTag x [] type HasDeclSecurityTag(tag: int32) = member x.Tag = tag let hds_TypeDef = HasDeclSecurityTag 0x00 let hds_MethodDef = HasDeclSecurityTag 0x01 let hds_Assembly = HasDeclSecurityTag 0x02 let mkHasDeclSecurityTag x = match x with | 0x00 -> hds_TypeDef | 0x01 -> hds_MethodDef | 0x02 -> hds_Assembly | _ -> HasDeclSecurityTag x [] type MemberRefParentTag(tag: int32) = member x.Tag = tag let mrp_TypeRef = MemberRefParentTag 0x01 let mrp_ModuleRef = MemberRefParentTag 0x02 let mrp_MethodDef = MemberRefParentTag 0x03 let mrp_TypeSpec = MemberRefParentTag 0x04 let mkMemberRefParentTag x = match x with | 0x01 -> mrp_TypeRef | 0x02 -> mrp_ModuleRef | 0x03 -> mrp_MethodDef | 0x04 -> mrp_TypeSpec | _ -> MemberRefParentTag x [] type HasSemanticsTag(tag: int32) = member x.Tag = tag let hs_Event = HasSemanticsTag 0x00 let hs_Property = HasSemanticsTag 0x01 let mkHasSemanticsTag x = match x with | 0x00 -> hs_Event | 0x01 -> hs_Property | _ -> HasSemanticsTag x [] type MethodDefOrRefTag(tag: int32) = member x.Tag = tag let mdor_MethodDef = MethodDefOrRefTag 0x00 let mdor_MemberRef = MethodDefOrRefTag 0x01 let mdor_MethodSpec = MethodDefOrRefTag 0x02 let mkMethodDefOrRefTag x = match x with | 0x00 -> mdor_MethodDef | 0x01 -> mdor_MemberRef | 0x02 -> mdor_MethodSpec | _ -> MethodDefOrRefTag x [] type MemberForwardedTag(tag: int32) = member x.Tag = tag let mf_FieldDef = MemberForwardedTag 0x00 let mf_MethodDef = MemberForwardedTag 0x01 let mkMemberForwardedTag x = match x with | 0x00 -> mf_FieldDef | 0x01 -> mf_MethodDef | _ -> MemberForwardedTag x [] type ImplementationTag(tag: int32) = member x.Tag = tag let i_File = ImplementationTag 0x00 let i_AssemblyRef = ImplementationTag 0x01 let i_ExportedType = ImplementationTag 0x02 let mkImplementationTag x = match x with | 0x00 -> i_File | 0x01 -> i_AssemblyRef | 0x02 -> i_ExportedType | _ -> ImplementationTag x [] type CustomAttributeTypeTag(tag: int32) = member x.Tag = tag let cat_MethodDef = CustomAttributeTypeTag 0x02 let cat_MemberRef = CustomAttributeTypeTag 0x03 let mkILCustomAttributeTypeTag x = match x with | 0x02 -> cat_MethodDef | 0x03 -> cat_MemberRef | _ -> CustomAttributeTypeTag x [] type ResolutionScopeTag(tag: int32) = member x.Tag = tag let rs_Module = ResolutionScopeTag 0x00 let rs_ModuleRef = ResolutionScopeTag 0x01 let rs_AssemblyRef = ResolutionScopeTag 0x02 let rs_TypeRef = ResolutionScopeTag 0x03 let mkResolutionScopeTag x = match x with | 0x00 -> rs_Module | 0x01 -> rs_ModuleRef | 0x02 -> rs_AssemblyRef | 0x03 -> rs_TypeRef | _ -> ResolutionScopeTag x [] type TypeOrMethodDefTag(tag: int32) = member x.Tag = tag let tomd_TypeDef = TypeOrMethodDefTag 0x00 let tomd_MethodDef = TypeOrMethodDefTag 0x01 let mkTypeOrMethodDefTag x = match x with | 0x00 -> tomd_TypeDef | 0x01 -> tomd_MethodDef | _ -> TypeOrMethodDefTag x let et_END = 0x00uy let et_VOID = 0x01uy let et_BOOLEAN = 0x02uy let et_CHAR = 0x03uy let et_I1 = 0x04uy let et_U1 = 0x05uy let et_I2 = 0x06uy let et_U2 = 0x07uy let et_I4 = 0x08uy let et_U4 = 0x09uy let et_I8 = 0x0Auy let et_U8 = 0x0Buy let et_R4 = 0x0Cuy let et_R8 = 0x0Duy let et_STRING = 0x0Euy let et_PTR = 0x0Fuy let et_BYREF = 0x10uy let et_VALUETYPE = 0x11uy let et_CLASS = 0x12uy let et_VAR = 0x13uy let et_ARRAY = 0x14uy let et_WITH = 0x15uy let et_TYPEDBYREF = 0x16uy let et_I = 0x18uy let et_U = 0x19uy let et_FNPTR = 0x1Buy let et_OBJECT = 0x1Cuy let et_SZARRAY = 0x1Duy let et_MVAR = 0x1euy let et_CMOD_REQD = 0x1Fuy let et_CMOD_OPT = 0x20uy let et_SENTINEL = 0x41uy // sentinel for varargs let et_PINNED = 0x45uy let i_nop = 0x00 let i_break = 0x01 let i_ldarg_0 = 0x02 let i_ldarg_1 = 0x03 let i_ldarg_2 = 0x04 let i_ldarg_3 = 0x05 let i_ldloc_0 = 0x06 let i_ldloc_1 = 0x07 let i_ldloc_2 = 0x08 let i_ldloc_3 = 0x09 let i_stloc_0 = 0x0a let i_stloc_1 = 0x0b let i_stloc_2 = 0x0c let i_stloc_3 = 0x0d let i_ldarg_s = 0x0e let i_ldarga_s = 0x0f let i_starg_s = 0x10 let i_ldloc_s = 0x11 let i_ldloca_s = 0x12 let i_stloc_s = 0x13 let i_ldnull = 0x14 let i_ldc_i4_m1 = 0x15 let i_ldc_i4_0 = 0x16 let i_ldc_i4_1 = 0x17 let i_ldc_i4_2 = 0x18 let i_ldc_i4_3 = 0x19 let i_ldc_i4_4 = 0x1a let i_ldc_i4_5 = 0x1b let i_ldc_i4_6 = 0x1c let i_ldc_i4_7 = 0x1d let i_ldc_i4_8 = 0x1e let i_ldc_i4_s = 0x1f let i_ldc_i4 = 0x20 let i_ldc_i8 = 0x21 let i_ldc_r4 = 0x22 let i_ldc_r8 = 0x23 let i_dup = 0x25 let i_pop = 0x26 let i_jmp = 0x27 let i_call = 0x28 let i_calli = 0x29 let i_ret = 0x2a let i_br_s = 0x2b let i_brfalse_s = 0x2c let i_brtrue_s = 0x2d let i_beq_s = 0x2e let i_bge_s = 0x2f let i_bgt_s = 0x30 let i_ble_s = 0x31 let i_blt_s = 0x32 let i_bne_un_s = 0x33 let i_bge_un_s = 0x34 let i_bgt_un_s = 0x35 let i_ble_un_s = 0x36 let i_blt_un_s = 0x37 let i_br = 0x38 let i_brfalse = 0x39 let i_brtrue = 0x3a let i_beq = 0x3b let i_bge = 0x3c let i_bgt = 0x3d let i_ble = 0x3e let i_blt = 0x3f let i_bne_un = 0x40 let i_bge_un = 0x41 let i_bgt_un = 0x42 let i_ble_un = 0x43 let i_blt_un = 0x44 let i_switch = 0x45 let i_ldind_i1 = 0x46 let i_ldind_u1 = 0x47 let i_ldind_i2 = 0x48 let i_ldind_u2 = 0x49 let i_ldind_i4 = 0x4a let i_ldind_u4 = 0x4b let i_ldind_i8 = 0x4c let i_ldind_i = 0x4d let i_ldind_r4 = 0x4e let i_ldind_r8 = 0x4f let i_ldind_ref = 0x50 let i_stind_ref = 0x51 let i_stind_i1 = 0x52 let i_stind_i2 = 0x53 let i_stind_i4 = 0x54 let i_stind_i8 = 0x55 let i_stind_r4 = 0x56 let i_stind_r8 = 0x57 let i_add = 0x58 let i_sub = 0x59 let i_mul = 0x5a let i_div = 0x5b let i_div_un = 0x5c let i_rem = 0x5d let i_rem_un = 0x5e let i_and = 0x5f let i_or = 0x60 let i_xor = 0x61 let i_shl = 0x62 let i_shr = 0x63 let i_shr_un = 0x64 let i_neg = 0x65 let i_not = 0x66 let i_conv_i1 = 0x67 let i_conv_i2 = 0x68 let i_conv_i4 = 0x69 let i_conv_i8 = 0x6a let i_conv_r4 = 0x6b let i_conv_r8 = 0x6c let i_conv_u4 = 0x6d let i_conv_u8 = 0x6e let i_callvirt = 0x6f let i_cpobj = 0x70 let i_ldobj = 0x71 let i_ldstr = 0x72 let i_newobj = 0x73 let i_castclass = 0x74 let i_isinst = 0x75 let i_conv_r_un = 0x76 let i_unbox = 0x79 let i_throw = 0x7a let i_ldfld = 0x7b let i_ldflda = 0x7c let i_stfld = 0x7d let i_ldsfld = 0x7e let i_ldsflda = 0x7f let i_stsfld = 0x80 let i_stobj = 0x81 let i_conv_ovf_i1_un= 0x82 let i_conv_ovf_i2_un= 0x83 let i_conv_ovf_i4_un= 0x84 let i_conv_ovf_i8_un= 0x85 let i_conv_ovf_u1_un= 0x86 let i_conv_ovf_u2_un= 0x87 let i_conv_ovf_u4_un= 0x88 let i_conv_ovf_u8_un= 0x89 let i_conv_ovf_i_un = 0x8a let i_conv_ovf_u_un = 0x8b let i_box = 0x8c let i_newarr = 0x8d let i_ldlen = 0x8e let i_ldelema = 0x8f let i_ldelem_i1 = 0x90 let i_ldelem_u1 = 0x91 let i_ldelem_i2 = 0x92 let i_ldelem_u2 = 0x93 let i_ldelem_i4 = 0x94 let i_ldelem_u4 = 0x95 let i_ldelem_i8 = 0x96 let i_ldelem_i = 0x97 let i_ldelem_r4 = 0x98 let i_ldelem_r8 = 0x99 let i_ldelem_ref = 0x9a let i_stelem_i = 0x9b let i_stelem_i1 = 0x9c let i_stelem_i2 = 0x9d let i_stelem_i4 = 0x9e let i_stelem_i8 = 0x9f let i_stelem_r4 = 0xa0 let i_stelem_r8 = 0xa1 let i_stelem_ref = 0xa2 let i_conv_ovf_i1 = 0xb3 let i_conv_ovf_u1 = 0xb4 let i_conv_ovf_i2 = 0xb5 let i_conv_ovf_u2 = 0xb6 let i_conv_ovf_i4 = 0xb7 let i_conv_ovf_u4 = 0xb8 let i_conv_ovf_i8 = 0xb9 let i_conv_ovf_u8 = 0xba let i_refanyval = 0xc2 let i_ckfinite = 0xc3 let i_mkrefany = 0xc6 let i_ldtoken = 0xd0 let i_conv_u2 = 0xd1 let i_conv_u1 = 0xd2 let i_conv_i = 0xd3 let i_conv_ovf_i = 0xd4 let i_conv_ovf_u = 0xd5 let i_add_ovf = 0xd6 let i_add_ovf_un = 0xd7 let i_mul_ovf = 0xd8 let i_mul_ovf_un = 0xd9 let i_sub_ovf = 0xda let i_sub_ovf_un = 0xdb let i_endfinally = 0xdc let i_leave = 0xdd let i_leave_s = 0xde let i_stind_i = 0xdf let i_conv_u = 0xe0 let i_arglist = 0xfe00 let i_ceq = 0xfe01 let i_cgt = 0xfe02 let i_cgt_un = 0xfe03 let i_clt = 0xfe04 let i_clt_un = 0xfe05 let i_ldftn = 0xfe06 let i_ldvirtftn = 0xfe07 let i_ldarg = 0xfe09 let i_ldarga = 0xfe0a let i_starg = 0xfe0b let i_ldloc = 0xfe0c let i_ldloca = 0xfe0d let i_stloc = 0xfe0e let i_localloc = 0xfe0f let i_endfilter = 0xfe11 let i_unaligned = 0xfe12 let i_volatile = 0xfe13 let i_constrained = 0xfe16 let i_readonly = 0xfe1e let i_tail = 0xfe14 let i_initobj = 0xfe15 let i_cpblk = 0xfe17 let i_initblk = 0xfe18 let i_rethrow = 0xfe1a let i_sizeof = 0xfe1c let i_refanytype = 0xfe1d let i_ldelem_any = 0xa3 let i_stelem_any = 0xa4 let i_unbox_any = 0xa5 let mk_ldc i = (((mkLdcInt32 (i)))) let noArgInstrs = lazy [ i_ldc_i4_0, mk_ldc 0; i_ldc_i4_1, mk_ldc 1; i_ldc_i4_2, mk_ldc 2; i_ldc_i4_3, mk_ldc 3; i_ldc_i4_4, mk_ldc 4; i_ldc_i4_5, mk_ldc 5; i_ldc_i4_6, mk_ldc 6; i_ldc_i4_7, mk_ldc 7; i_ldc_i4_8, mk_ldc 8; i_ldc_i4_m1, mk_ldc (0-1); 0x0a, (mkStloc (uint16 ( 0))); 0x0b, (mkStloc (uint16 ( 1))); 0x0c, (mkStloc (uint16 ( 2))); 0x0d, (mkStloc (uint16 ( 3))); 0x06, (mkLdloc (uint16 ( 0))); 0x07, (mkLdloc (uint16 ( 1))); 0x08, (mkLdloc (uint16 ( 2))); 0x09, (mkLdloc (uint16 ( 3))); 0x02, (mkLdarg (uint16 ( 0))); 0x03, (mkLdarg (uint16 ( 1))); 0x04, (mkLdarg (uint16 ( 2))); 0x05, (mkLdarg (uint16 ( 3))); 0x2a, (I_ret); 0x58, (AI_add); 0xd6, (AI_add_ovf); 0xd7, (AI_add_ovf_un); 0x5f, (AI_and); 0x5b, (AI_div); 0x5c, (AI_div_un); 0xfe01, (AI_ceq); 0xfe02, (AI_cgt ); 0xfe03, (AI_cgt_un); 0xfe04, (AI_clt); 0xfe05, (AI_clt_un); 0x67, ((AI_conv DT_I1)); 0x68, ((AI_conv DT_I2)); 0x69, ((AI_conv DT_I4)); 0x6a, ((AI_conv DT_I8)); 0xd3, ((AI_conv DT_I)); 0x6b, ((AI_conv DT_R4)); 0x6c, ((AI_conv DT_R8)); 0xd2, ((AI_conv DT_U1)); 0xd1, ((AI_conv DT_U2)); 0x6d, ((AI_conv DT_U4)); 0x6e, ((AI_conv DT_U8)); 0xe0, ((AI_conv DT_U)); 0x76, ((AI_conv DT_R)); 0xb3, ((AI_conv_ovf DT_I1)); 0xb5, ((AI_conv_ovf DT_I2)); 0xb7, ((AI_conv_ovf DT_I4)); 0xb9, ((AI_conv_ovf DT_I8)); 0xd4, ((AI_conv_ovf DT_I)); 0xb4, ((AI_conv_ovf DT_U1)); 0xb6, ((AI_conv_ovf DT_U2)); 0xb8, ((AI_conv_ovf DT_U4)); 0xba, ((AI_conv_ovf DT_U8)); 0xd5, ((AI_conv_ovf DT_U)); 0x82, ((AI_conv_ovf_un DT_I1)); 0x83, ((AI_conv_ovf_un DT_I2)); 0x84, ((AI_conv_ovf_un DT_I4)); 0x85, ((AI_conv_ovf_un DT_I8)); 0x8a, ((AI_conv_ovf_un DT_I)); 0x86, ((AI_conv_ovf_un DT_U1)); 0x87, ((AI_conv_ovf_un DT_U2)); 0x88, ((AI_conv_ovf_un DT_U4)); 0x89, ((AI_conv_ovf_un DT_U8)); 0x8b, ((AI_conv_ovf_un DT_U)); 0x9c, (I_stelem DT_I1); 0x9d, (I_stelem DT_I2); 0x9e, (I_stelem DT_I4); 0x9f, (I_stelem DT_I8); 0xa0, (I_stelem DT_R4); 0xa1, (I_stelem DT_R8); 0x9b, (I_stelem DT_I); 0xa2, (I_stelem DT_REF); 0x90, (I_ldelem DT_I1); 0x92, (I_ldelem DT_I2); 0x94, (I_ldelem DT_I4); 0x96, (I_ldelem DT_I8); 0x91, (I_ldelem DT_U1); 0x93, (I_ldelem DT_U2); 0x95, (I_ldelem DT_U4); 0x98, (I_ldelem DT_R4); 0x99, (I_ldelem DT_R8); 0x97, (I_ldelem DT_I); 0x9a, (I_ldelem DT_REF); 0x5a, (AI_mul ); 0xd8, (AI_mul_ovf); 0xd9, (AI_mul_ovf_un); 0x5d, (AI_rem ); 0x5e, (AI_rem_un ); 0x62, (AI_shl ); 0x63, (AI_shr ); 0x64, (AI_shr_un); 0x59, (AI_sub ); 0xda, (AI_sub_ovf); 0xdb, (AI_sub_ovf_un); 0x61, (AI_xor); 0x60, (AI_or); 0x65, (AI_neg); 0x66, (AI_not); i_ldnull, (AI_ldnull); i_dup, (AI_dup); i_pop, (AI_pop); i_ckfinite, (AI_ckfinite); i_nop, AI_nop; i_break, I_break; i_arglist, I_arglist; i_endfilter, I_endfilter; i_endfinally, I_endfinally; i_refanytype, I_refanytype; i_localloc, I_localloc; i_throw, I_throw; i_ldlen, I_ldlen; i_rethrow, I_rethrow; ];; let isNoArgInstr i = match i with | (AI_ldc (DT_I4, ILConst.I4 n)) when (-1) <= n && n <= 8 -> true | I_stloc n | I_ldloc n | I_ldarg n when n <= 3us -> true | I_ret | AI_add | AI_add_ovf | AI_add_ovf_un | AI_and | AI_div | AI_div_un | AI_ceq | AI_cgt | AI_cgt_un | AI_clt | AI_clt_un | AI_conv DT_I1 | AI_conv DT_I2 | AI_conv DT_I4 | AI_conv DT_I8 | AI_conv DT_I | AI_conv DT_R4 | AI_conv DT_R8 | AI_conv DT_U1 | AI_conv DT_U2 | AI_conv DT_U4 | AI_conv DT_U8 | AI_conv DT_U | AI_conv DT_R | AI_conv_ovf DT_I1 | AI_conv_ovf DT_I2 | AI_conv_ovf DT_I4 | AI_conv_ovf DT_I8 | AI_conv_ovf DT_I | AI_conv_ovf DT_U1 | AI_conv_ovf DT_U2 | AI_conv_ovf DT_U4 | AI_conv_ovf DT_U8 | AI_conv_ovf DT_U | AI_conv_ovf_un DT_I1 | AI_conv_ovf_un DT_I2 | AI_conv_ovf_un DT_I4 | AI_conv_ovf_un DT_I8 | AI_conv_ovf_un DT_I | AI_conv_ovf_un DT_U1 | AI_conv_ovf_un DT_U2 | AI_conv_ovf_un DT_U4 | AI_conv_ovf_un DT_U8 | AI_conv_ovf_un DT_U | I_stelem DT_I1 | I_stelem DT_I2 | I_stelem DT_I4 | I_stelem DT_I8 | I_stelem DT_R4 | I_stelem DT_R8 | I_stelem DT_I | I_stelem DT_REF | I_ldelem DT_I1 | I_ldelem DT_I2 | I_ldelem DT_I4 | I_ldelem DT_I8 | I_ldelem DT_U1 | I_ldelem DT_U2 | I_ldelem DT_U4 | I_ldelem DT_R4 | I_ldelem DT_R8 | I_ldelem DT_I | I_ldelem DT_REF | AI_mul | AI_mul_ovf | AI_mul_ovf_un | AI_rem | AI_rem_un | AI_shl | AI_shr | AI_shr_un | AI_sub | AI_sub_ovf | AI_sub_ovf_un | AI_xor | AI_or | AI_neg | AI_not | AI_ldnull | AI_dup | AI_pop | AI_ckfinite | AI_nop | I_break | I_arglist | I_endfilter | I_endfinally | I_refanytype | I_localloc | I_throw | I_ldlen | I_rethrow -> true | _ -> false let ILCmpInstrMap = lazy (Dictionary.ofList [ BI_beq , i_beq BI_bgt , i_bgt BI_bgt_un , i_bgt_un BI_bge , i_bge BI_bge_un , i_bge_un BI_ble , i_ble BI_ble_un , i_ble_un BI_blt , i_blt BI_blt_un , i_blt_un BI_bne_un , i_bne_un BI_brfalse , i_brfalse BI_brtrue , i_brtrue ]) let ILCmpInstrRevMap = lazy (Dictionary.ofList [ BI_beq , i_beq_s BI_bgt , i_bgt_s BI_bgt_un , i_bgt_un_s BI_bge , i_bge_s BI_bge_un , i_bge_un_s BI_ble , i_ble_s BI_ble_un , i_ble_un_s BI_blt , i_blt_s BI_blt_un , i_blt_un_s BI_bne_un , i_bne_un_s BI_brfalse , i_brfalse_s BI_brtrue , i_brtrue_s ]) (* From corhdr.h *) let nt_VOID = 0x1uy let nt_BOOLEAN = 0x2uy let nt_I1 = 0x3uy let nt_U1 = 0x4uy let nt_I2 = 0x5uy let nt_U2 = 0x6uy let nt_I4 = 0x7uy let nt_U4 = 0x8uy let nt_I8 = 0x9uy let nt_U8 = 0xAuy let nt_R4 = 0xBuy let nt_R8 = 0xCuy let nt_SYSCHAR = 0xDuy let nt_VARIANT = 0xEuy let nt_CURRENCY = 0xFuy let nt_PTR = 0x10uy let nt_DECIMAL = 0x11uy let nt_DATE = 0x12uy let nt_BSTR = 0x13uy let nt_LPSTR = 0x14uy let nt_LPWSTR = 0x15uy let nt_LPTSTR = 0x16uy let nt_FIXEDSYSSTRING = 0x17uy let nt_OBJECTREF = 0x18uy let nt_IUNKNOWN = 0x19uy let nt_IDISPATCH = 0x1Auy let nt_STRUCT = 0x1Buy let nt_INTF = 0x1Cuy let nt_SAFEARRAY = 0x1Duy let nt_FIXEDARRAY = 0x1Euy let nt_INT = 0x1Fuy let nt_UINT = 0x20uy let nt_NESTEDSTRUCT = 0x21uy let nt_BYVALSTR = 0x22uy let nt_ANSIBSTR = 0x23uy let nt_TBSTR = 0x24uy let nt_VARIANTBOOL = 0x25uy let nt_FUNC = 0x26uy let nt_ASANY = 0x28uy let nt_ARRAY = 0x2Auy let nt_LPSTRUCT = 0x2Buy let nt_CUSTOMMARSHALER = 0x2Cuy let nt_ERROR = 0x2Duy let nt_MAX = 0x50uy (* From c:/clrenv.i386/Crt/Inc/i386/hs.h *) let vt_EMPTY = 0 let vt_NULL = 1 let vt_I2 = 2 let vt_I4 = 3 let vt_R4 = 4 let vt_R8 = 5 let vt_CY = 6 let vt_DATE = 7 let vt_BSTR = 8 let vt_DISPATCH = 9 let vt_ERROR = 10 let vt_BOOL = 11 let vt_VARIANT = 12 let vt_UNKNOWN = 13 let vt_DECIMAL = 14 let vt_I1 = 16 let vt_UI1 = 17 let vt_UI2 = 18 let vt_UI4 = 19 let vt_I8 = 20 let vt_UI8 = 21 let vt_INT = 22 let vt_UINT = 23 let vt_VOID = 24 let vt_HRESULT = 25 let vt_PTR = 26 let vt_SAFEARRAY = 27 let vt_CARRAY = 28 let vt_USERDEFINED = 29 let vt_LPSTR = 30 let vt_LPWSTR = 31 let vt_RECORD = 36 let vt_FILETIME = 64 let vt_BLOB = 65 let vt_STREAM = 66 let vt_STORAGE = 67 let vt_STREAMED_OBJECT = 68 let vt_STORED_OBJECT = 69 let vt_BLOB_OBJECT = 70 let vt_CF = 71 let vt_CLSID = 72 let vt_VECTOR = 0x1000 let vt_ARRAY = 0x2000 let vt_BYREF = 0x4000 let ILNativeTypeMap = lazy [ nt_CURRENCY , ILNativeType.Currency nt_BSTR , (* COM interop *) ILNativeType.BSTR nt_LPSTR , ILNativeType.LPSTR nt_LPWSTR , ILNativeType.LPWSTR nt_LPTSTR, ILNativeType.LPTSTR nt_IUNKNOWN , (* COM interop *) ILNativeType.IUnknown nt_IDISPATCH , (* COM interop *) ILNativeType.IDispatch nt_BYVALSTR , ILNativeType.ByValStr nt_TBSTR , ILNativeType.TBSTR nt_LPSTRUCT , ILNativeType.LPSTRUCT nt_INTF , (* COM interop *) ILNativeType.Interface nt_STRUCT , ILNativeType.Struct nt_ERROR , (* COM interop *) ILNativeType.Error nt_VOID , ILNativeType.Void nt_BOOLEAN , ILNativeType.Bool nt_I1 , ILNativeType.Int8 nt_I2 , ILNativeType.Int16 nt_I4 , ILNativeType.Int32 nt_I8, ILNativeType.Int64 nt_R4 , ILNativeType.Single nt_R8 , ILNativeType.Double nt_U1 , ILNativeType.Byte nt_U2 , ILNativeType.UInt16 nt_U4 , ILNativeType.UInt32 nt_U8, ILNativeType.UInt64 nt_INT , ILNativeType.Int nt_UINT, ILNativeType.UInt nt_ANSIBSTR, (* COM interop *) ILNativeType.ANSIBSTR nt_VARIANTBOOL, (* COM interop *) ILNativeType.VariantBool nt_FUNC , ILNativeType.Method nt_ASANY, ILNativeType.AsAny ] let ILNativeTypeRevMap = lazy (List.map (fun (x,y) -> (y,x)) (Lazy.force ILNativeTypeMap)) let ILVariantTypeMap = lazy [ ILNativeVariant.Empty , vt_EMPTY ILNativeVariant.Null , vt_NULL ILNativeVariant.Variant , vt_VARIANT ILNativeVariant.Currency , vt_CY ILNativeVariant.Decimal , vt_DECIMAL ILNativeVariant.Date , vt_DATE ILNativeVariant.BSTR , vt_BSTR ILNativeVariant.LPSTR , vt_LPSTR ILNativeVariant.LPWSTR , vt_LPWSTR ILNativeVariant.IUnknown , vt_UNKNOWN ILNativeVariant.IDispatch , vt_DISPATCH ILNativeVariant.SafeArray , vt_SAFEARRAY ILNativeVariant.Error , vt_ERROR ILNativeVariant.HRESULT , vt_HRESULT ILNativeVariant.CArray , vt_CARRAY ILNativeVariant.UserDefined , vt_USERDEFINED ILNativeVariant.Record , vt_RECORD ILNativeVariant.FileTime , vt_FILETIME ILNativeVariant.Blob , vt_BLOB ILNativeVariant.Stream , vt_STREAM ILNativeVariant.Storage , vt_STORAGE ILNativeVariant.StreamedObject , vt_STREAMED_OBJECT ILNativeVariant.StoredObject , vt_STORED_OBJECT ILNativeVariant.BlobObject , vt_BLOB_OBJECT ILNativeVariant.CF , vt_CF ILNativeVariant.CLSID , vt_CLSID ILNativeVariant.Void , vt_VOID ILNativeVariant.Bool , vt_BOOL ILNativeVariant.Int8 , vt_I1 ILNativeVariant.Int16 , vt_I2 ILNativeVariant.Int32 , vt_I4 ILNativeVariant.Int64 , vt_I8 ILNativeVariant.Single , vt_R4 ILNativeVariant.Double , vt_R8 ILNativeVariant.UInt8 , vt_UI1 ILNativeVariant.UInt16 , vt_UI2 ILNativeVariant.UInt32 , vt_UI4 ILNativeVariant.UInt64 , vt_UI8 ILNativeVariant.PTR , vt_PTR ILNativeVariant.Int , vt_INT ILNativeVariant.UInt , vt_UINT ] let ILVariantTypeRevMap = lazy (List.map (fun (x,y) -> (y,x)) (Lazy.force ILVariantTypeMap)) let ILSecurityActionMap = lazy [ ILSecurityAction.Request , 0x0001 ILSecurityAction.Demand , 0x0002 ILSecurityAction.Assert , 0x0003 ILSecurityAction.Deny , 0x0004 ILSecurityAction.PermitOnly , 0x0005 ILSecurityAction.LinkCheck , 0x0006 ILSecurityAction.InheritCheck , 0x0007 ILSecurityAction.ReqMin , 0x0008 ILSecurityAction.ReqOpt , 0x0009 ILSecurityAction.ReqRefuse , 0x000a ILSecurityAction.PreJitGrant , 0x000b ILSecurityAction.PreJitDeny , 0x000c ILSecurityAction.NonCasDemand , 0x000d ILSecurityAction.NonCasLinkDemand , 0x000e ILSecurityAction.NonCasInheritance , 0x000f ILSecurityAction.LinkDemandChoice , 0x0010 ILSecurityAction.InheritanceDemandChoice , 0x0011 ILSecurityAction.DemandChoice , 0x0012 ] let ILSecurityActionRevMap = lazy (List.map (fun (x,y) -> (y,x)) (Lazy.force ILSecurityActionMap)) let e_CorILMethod_TinyFormat = 0x02uy let e_CorILMethod_FatFormat = 0x03uy let e_CorILMethod_FormatMask = 0x03uy let e_CorILMethod_MoreSects = 0x08uy let e_CorILMethod_InitLocals = 0x10uy let e_CorILMethod_Sect_EHTable = 0x1uy let e_CorILMethod_Sect_FatFormat = 0x40uy let e_CorILMethod_Sect_MoreSects = 0x80uy let e_COR_ILEXCEPTION_CLAUSE_EXCEPTION = 0x0 let e_COR_ILEXCEPTION_CLAUSE_FILTER = 0x1 let e_COR_ILEXCEPTION_CLAUSE_FINALLY = 0x2 let e_COR_ILEXCEPTION_CLAUSE_FAULT = 0x4 let e_IMAGE_CEE_CS_CALLCONV_FASTCALL = 0x04uy let e_IMAGE_CEE_CS_CALLCONV_STDCALL = 0x02uy let e_IMAGE_CEE_CS_CALLCONV_THISCALL = 0x03uy let e_IMAGE_CEE_CS_CALLCONV_CDECL = 0x01uy let e_IMAGE_CEE_CS_CALLCONV_VARARG = 0x05uy let e_IMAGE_CEE_CS_CALLCONV_FIELD = 0x06uy let e_IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x07uy let e_IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x08uy let e_IMAGE_CEE_CS_CALLCONV_GENERICINST = 0x0auy let e_IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10uy let e_IMAGE_CEE_CS_CALLCONV_INSTANCE = 0x20uy let e_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICIT = 0x40uy fsharp-3.0.34/src/absil/ilx.fs0000775000175000017500000002042312260314606015103 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Defines an extension of the IL algebra module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library // -------------------------------------------------------------------- // Define an extension of the IL instruction algebra // -------------------------------------------------------------------- let mkLowerName (nm: string) = // Use the lower case name of a field or constructor as the field/parameter name if it differs from the uppercase name let lowerName = String.uncapitalize nm if lowerName = nm then "_" + nm else lowerName [] type IlxUnionField(fd: ILFieldDef) = let lowerName = mkLowerName fd.Name member x.ILField = fd member x.Type = x.ILField.Type member x.Name = x.ILField.Name member x.LowerName = lowerName type IlxUnionAlternative = { altName: string; altFields: IlxUnionField[]; altCustomAttrs: ILAttributes } member x.FieldDefs = x.altFields member x.FieldDef n = x.altFields.[n] member x.Name = x.altName member x.IsNullary = (x.FieldDefs.Length = 0) member x.FieldTypes = x.FieldDefs |> Array.map (fun fd -> fd.Type) type IlxUnionHasHelpers = | NoHelpers | AllHelpers | SpecialFSharpListHelpers | SpecialFSharpOptionHelpers type IlxUnionRef = | IlxUnionRef of ILTypeRef * IlxUnionAlternative[] * bool * (* hasHelpers: *) IlxUnionHasHelpers type IlxUnionSpec = | IlxUnionSpec of IlxUnionRef * ILGenericArgs member x.EnclosingType = let (IlxUnionSpec(IlxUnionRef(tref,_,_,_),inst)) = x in mkILBoxedTyRaw tref inst member x.TypeRef = let (IlxUnionSpec(IlxUnionRef(tref,_,_,_),_)) = x in tref member x.GenericArgs = let (IlxUnionSpec(_,inst)) = x in inst member x.AlternativesArray = let (IlxUnionSpec(IlxUnionRef(_,alts,_,_),_)) = x in alts member x.IsNullPermitted = let (IlxUnionSpec(IlxUnionRef(_,_,np,_),_)) = x in np member x.HasHelpers = let (IlxUnionSpec(IlxUnionRef(_,_,_,b),_)) = x in b member x.Alternatives = Array.toList x.AlternativesArray member x.Alternative idx = x.AlternativesArray.[idx] member x.FieldDef idx fidx = x.Alternative(idx).FieldDef(fidx) type IlxClosureLambdas = | Lambdas_forall of ILGenericParameterDef * IlxClosureLambdas | Lambdas_lambda of ILParameter * IlxClosureLambdas | Lambdas_return of ILType type IlxClosureApps = | Apps_tyapp of ILType * IlxClosureApps | Apps_app of ILType * IlxClosureApps | Apps_done of ILType let rec instAppsAux n inst = function Apps_tyapp (ty,rty) -> Apps_tyapp(instILTypeAux n inst ty, instAppsAux n inst rty) | Apps_app (dty,rty) -> Apps_app(instILTypeAux n inst dty, instAppsAux n inst rty) | Apps_done rty -> Apps_done(instILTypeAux n inst rty) let rec instLambdasAux n inst = function | Lambdas_forall (b,rty) -> Lambdas_forall(b, instLambdasAux n inst rty) | Lambdas_lambda (p,rty) -> Lambdas_lambda({ p with Type=instILTypeAux n inst p.Type},instLambdasAux n inst rty) | Lambdas_return rty -> Lambdas_return(instILTypeAux n inst rty) let instLambdas i t = instLambdasAux 0 i t type IlxClosureFreeVar = { fvName: string ; fvCompilerGenerated:bool; fvType: ILType } let mkILFreeVar (name,compgen,ty) = { fvName=name; fvCompilerGenerated=compgen; fvType=ty; } type IlxClosureRef = | IlxClosureRef of ILTypeRef * IlxClosureLambdas * IlxClosureFreeVar[] type IlxClosureSpec = | IlxClosureSpec of IlxClosureRef * ILGenericArgs * ILType member x.TypeRef = let (IlxClosureRef(tref,_,_)) = x.ClosureRef in tref member x.ILType = let (IlxClosureSpec(_,_,ty)) = x in ty member x.ClosureRef = let (IlxClosureSpec(cloref,_,_)) = x in cloref member x.FormalFreeVars = let (IlxClosureRef(_,_,fvs)) = x.ClosureRef in fvs member x.FormalLambdas = let (IlxClosureRef(_,lambdas,_)) = x.ClosureRef in lambdas member x.GenericArgs = let (IlxClosureSpec(_,inst,_)) = x in inst static member Create (cloref, inst) = let (IlxClosureRef(tref,_,_)) = cloref IlxClosureSpec(cloref, inst, mkILBoxedType (mkILTySpecRaw(tref, inst))) member clospec.Constructor = let cloTy = clospec.ILType let fields = clospec.FormalFreeVars mkILCtorMethSpecForTy (cloTy,fields |> Array.map (fun fv -> fv.fvType) |> Array.toList) type IlxInstr = // Discriminated unions | EI_lddata of (* avoidHelpers: *) bool * IlxUnionSpec * int * int | EI_isdata of (* avoidHelpers: *) bool * IlxUnionSpec * int | EI_brisdata of (* avoidHelpers: *) bool * IlxUnionSpec * int * ILCodeLabel * ILCodeLabel | EI_castdata of bool * IlxUnionSpec * int | EI_stdata of IlxUnionSpec * int * int | EI_datacase of (* avoidHelpers: *) bool * IlxUnionSpec * (int * ILCodeLabel) list * ILCodeLabel (* last label is fallthrough *) | EI_lddatatag of (* avoidHelpers: *) bool * IlxUnionSpec | EI_newdata of IlxUnionSpec * int // Closures | EI_callfunc of ILTailcall * IlxClosureApps let destinations i = match i with | (EI_brisdata (_,_,_,l1,l2)) -> [l1; l2] | (EI_callfunc (Tailcall,_)) -> [] | (EI_datacase (_,_,ls,l)) -> l:: (List.foldBack (fun (_,l) acc -> ListSet.insert l acc) ls []) | _ -> [] let fallthrough i = match i with | (EI_brisdata (_,_,_,_,l)) | (EI_datacase (_,_,_,l)) -> Some l | _ -> None let isTailcall i = match i with | (EI_callfunc (Tailcall,_)) -> true | _ -> false let remapIlxLabels lab2cl i = match i with | EI_brisdata (z,a,b,l1,l2) -> EI_brisdata (z,a,b,lab2cl l1,lab2cl l2) | EI_datacase (z,x,ls,l) -> EI_datacase (z,x,List.map (fun (y,l) -> (y,lab2cl l)) ls, lab2cl l) | _ -> i let (mkIlxExtInstr,isIlxExtInstr,destIlxExtInstr) = RegisterInstructionSetExtension { instrExtDests=destinations; instrExtFallthrough=fallthrough; instrExtIsTailcall=isTailcall; instrExtRelabel=remapIlxLabels; } let mkIlxInstr i = I_other (mkIlxExtInstr i) // Define an extension of the IL algebra of type definitions type IlxClosureInfo = { cloStructure: IlxClosureLambdas; cloFreeVars: IlxClosureFreeVar[]; cloCode: Lazy; cloSource: ILSourceMarker option} and IlxUnionInfo = { cudReprAccess: ILMemberAccess; (* is the representation public? *) cudHelpersAccess: ILMemberAccess; (* are the representation public? *) cudHasHelpers: IlxUnionHasHelpers; (* generate the helpers? *) cudDebugProxies: bool; (* generate the helpers? *) cudDebugDisplayAttributes: ILAttribute list; cudAlternatives: IlxUnionAlternative array; cudNullPermitted: bool; (* debug info for generated code for classunions *) cudWhere: ILSourceMarker option; } type IlxTypeDefKind = | Closure of IlxClosureInfo | Union of IlxUnionInfo let (mkIlxExtTypeDefKind,isIlxExtTypeDefKind,destIlxExtTypeDefKind) = (RegisterTypeDefKindExtension TypeDefKindExtension : (IlxTypeDefKind -> IlxExtensionTypeKind) * (IlxExtensionTypeKind -> bool) * (IlxExtensionTypeKind -> IlxTypeDefKind) ) let mkIlxTypeDefKind i = ILTypeDefKind.Other (mkIlxExtTypeDefKind i) // -------------------------------------------------------------------- // Define these as extensions of the IL types // -------------------------------------------------------------------- let destTyFuncApp = function Apps_tyapp (b,c) -> b,c | _ -> failwith "destTyFuncApp" let mkILFormalCloRef gparams csig = IlxClosureSpec.Create(csig, mkILFormalGenericArgsRaw gparams) let actualTypOfIlxUnionField (cuspec : IlxUnionSpec) idx fidx = instILType cuspec.GenericArgs (cuspec.FieldDef idx fidx).Type fsharp-3.0.34/src/absil/zset.fsi0000775000175000017500000000305312260314606015445 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System.Collections.Generic /// Sets with a specific comparison function type internal Zset<'T> = Internal.Utilities.Collections.Tagged.Set<'T> [] module internal Zset = val empty : IComparer<'T> -> Zset<'T> val isEmpty : Zset<'T> -> bool val contains : 'T -> Zset<'T> -> bool val memberOf : Zset<'T> -> 'T -> bool val add : 'T -> Zset<'T> -> Zset<'T> val addList : 'T list -> Zset<'T> -> Zset<'T> val addFlatList : FlatList<'T> -> Zset<'T> -> Zset<'T> val singleton : IComparer<'T> -> 'T -> Zset<'T> val remove : 'T -> Zset<'T> -> Zset<'T> val count : Zset<'T> -> int val union : Zset<'T> -> Zset<'T> -> Zset<'T> val inter : Zset<'T> -> Zset<'T> -> Zset<'T> val diff : Zset<'T> -> Zset<'T> -> Zset<'T> val equal : Zset<'T> -> Zset<'T> -> bool val subset : Zset<'T> -> Zset<'T> -> bool val forall : predicate:('T -> bool) -> Zset<'T> -> bool val exists : predicate:('T -> bool) -> Zset<'T> -> bool val filter : predicate:('T -> bool) -> Zset<'T> -> Zset<'T> val fold : ('T -> 'State -> 'State) -> Zset<'T> -> 'State -> 'State val iter : ('T -> unit) -> Zset<'T> -> unit val elements : Zset<'T> -> 'T list fsharp-3.0.34/src/absil/il.fsi0000775000175000017500000025042712260314606015075 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// The "unlinked" view of .NET metadata and code. Central to /// to Abstract IL library module internal Microsoft.FSharp.Compiler.AbstractIL.IL open Internal.Utilities open System.Collections.Generic /// The type used to store relatively small lists in the Abstract IL data structures, i.e. for ILTypes, ILGenericArgs, ILParameters and ILLocals. /// See comments in il.fs for why we've isolated this representation and the possible future choices we might use here. #if ABSIL_USES_ARRAY_FOR_ILLIST type ILList<'T> = 'T [] #endif #if ABSIL_USES_THREELIST_FOR_ILLIST type ILList<'T> = ThreeList<'T> #endif //#if ABSIL_USES_LIST_FOR_ILLIST type ILList<'T> = 'T list //#endif // ==================================================================== // .NET binaries can be converted to the data structures below by using // the functions in the "Ilread" module. // // Constituent types are listed in ascending order of complexity, // all the way up to the type ILModuleDef, representing the read of an IL // assembly (.dll or .exe), or part of a multi-module assembly. Types are // often specified via a concrete representation for the type (e.g. a record), // though some types are abstract. // // The second part of the file (after the definition of all the types) // specifies a large set of utilities for building objects belonging to // the types. You will only need to become familiar with these if you // are transforming code or writing a code-generating compiler. // // Several other utilities are also defined in this file: // 1. A code builder for turning linear sequences of instructions // augmented with exception tables into the more structured // format used for code. // // 2. The "typ_XYZ", "tspec_XYZ" and "mspec_XYZ" values which // can be used to reference types in the "mscorlib" assembly. // // 3. The "rescopeXYZ" functions which can be used to lift a piece of // metadata from one assembly and transform it to a piece of metadata // suitable for use from another assembly. The transformation adjusts // references in the metadata to take into account the assembly // where the metadata will now be located. // // 4. The "instantiateXYZ" utilities to replace type variables // by types. These are associated with generics. // // 5. The "intern_XYZ" tables for reducing the memory used by // generated constructs. // // 6. The "refs_of_XYZ" utilities for finding all the assemblies // referenced by a module. // // 7. A somewhat obscure facility to allow new instructions and types // to be added to the This is only used by ILX. // ==================================================================== // Guids (Note: consider adjusting these to the System.Guid type) type Guid = byte[] [] type ILPlatform = | X86 | AMD64 | IA64 /// Debug info. Values of type "source" can be attached at sequence /// points and some other locations. [] type ILSourceDocument = static member Create : language: Guid option * vendor: Guid option * documentType: Guid option * file: string -> ILSourceDocument member Language: Guid option member Vendor: Guid option member DocumentType: Guid option member File: string [] type ILSourceMarker = static member Create : document: ILSourceDocument * line: int * column: int * endLine:int * endColumn: int-> ILSourceMarker member Document: ILSourceDocument member Line: int member Column: int member EndLine: int member EndColumn: int /// Extensibility: ignore these unless you are generating ILX /// structures directly. [] type IlxExtensionType = interface System.IComparable /// Represents an extension to the algebra of type kinds type IlxExtensionTypeKind /// Represents an extension to the algebra of instructions type IlxExtensionInstr [] type PublicKey = | PublicKey of byte[] | PublicKeyToken of byte[] member IsKey: bool member IsKeyToken: bool member Key: byte[] member KeyToken: byte[] type ILVersionInfo = uint16 * uint16 * uint16 * uint16 [] type ILAssemblyRef = static member Create : name: string * hash: byte[] option * publicKey: PublicKey option * retargetable: bool * version: ILVersionInfo option * locale: string option -> ILAssemblyRef static member FromAssemblyName : System.Reflection.AssemblyName -> ILAssemblyRef member Name: string; /// The fully qualified name of the assembly reference, e.g. mscorlib, Version=1.0.3705 etc. member QualifiedName: string; member Hash: byte[] option; member PublicKey: PublicKey option; /// CLI says this indicates if the assembly can be retargeted (at runtime) to be from a different publisher. member Retargetable: bool; member Version: ILVersionInfo option; member Locale: string option interface System.IComparable [] type ILModuleRef = static member Create : name: string * hasMetadata: bool * hash: byte[] option -> ILModuleRef member Name: string member HasMetadata: bool member Hash: byte[] option interface System.IComparable // Scope references // // Scope references are the bits of metadata attached to type names // that indicate where a type can be found. CIL has three // kinds: local, module and assembly references: // o Local: the type must reside in the same module as the scope reference // o Module: the type must reside in the indicated module in the same // assembly as the scope reference // o Assembly: The type must reside in the indicated assembly. // These have no implicit context. Assembly references can end up // binding to the assembly containing the reference, i.e. // may be self or mutually referential. // // Assembly reference may also resolve to type in an // auxiliary module of an assembly when the assembly // has an "exported types" (here called "classes elsewhere") table. // // We represent these references by values embedded within type // references. These values are usually "shared" across the data // structures for a module, i.e. one such value is created for each // assembly or module reference, and this value is reused within each // type object. // // Note that as with method references the term structure is not // _linked_, i.e. a "ILScopeRef" is still a _reference_ to a scope, // not the scope itself. Because the structure is not linked, // the Abstract IL toolset does not require // strongly connected inputs: you can manipulate an assembly // without loading all its dependent assemblies. This is the primary // difference between Abstract IL and Reflection, and it can be both // a blessing and a curse depending on the kind of manipulation you // wish to perform. // // Similarly, you can manipulate individual modules within // an assembly without having the whole assembly loaded. (But note that // most assemblies are single-module in any case). // // [ILScopeRef]'s _cannot_ be compared for equality in the way that // might be expected, in these sense that two ILScopeRef's may // resolve to the same assembly/module even though they are not equal. // // Aside: People have suggested normalizing all scope references // so that this would be possible, and early versions of this // toolkit did this. However, this meant that in order to load // each module you had to tell the toolkit which assembly it belonged to. // Furthermore, you had to know the exact resolved details of // each assembly the module refers to. This is // effectively like having a "fully-linked" view of the graph // of assemblies, like that provided in the Ilbind module. This is really problematic for compile-time tools, // as, for example, the policy for linking at the runtime-machine // may actually alter the results of linking. If such compile-time // assumptions are to be made then the tool built on top // of the toolkit rather than the toolkit itself should // make them. // // Scope references, type references, field references and method references // can be "bound" to particular assemblies using the functions in "Ilbind". // This simulates the resolution/binding process performed by a Common Language // Runtime during execution. Various tests and derived operations // can then be performed on the results of binding. [] [] type ILScopeRef = /// A reference to the type in the current module | Local /// A reference to a type in a module in the same assembly | Module of ILModuleRef /// A reference to a type in another assembly | Assembly of ILAssemblyRef member IsLocalRef: bool member IsModuleRef: bool member IsAssemblyRef: bool member ModuleRef: ILModuleRef member AssemblyRef: ILAssemblyRef member QualifiedName: string // Calling conventions. // // For nearly all purposes you simply want to use ILArgConvention.Default combined // with ILThisConvention.Instance or ILThisConvention.Static, i.e. // ILCallingConv.Instance == Callconv(ILThisConvention.Instance, ILArgConvention.Default): for an instance method // ILCallingConv.Static == Callconv(ILThisConvention.Static, ILArgConvention.Default): for a static method // // ILThisConvention.InstanceExplicit is only used by Managed C++, and indicates // that the 'this' pointer is actually explicit in the signature. [] type ILArgConvention = | Default | CDecl | StdCall | ThisCall | FastCall | VarArg [] type ILThisConvention = /// accepts an implicit 'this' pointer | Instance /// accepts an explicit 'this' pointer | InstanceExplicit /// no 'this' pointer is passed | Static [] type ILCallingConv = | Callconv of ILThisConvention * ILArgConvention member IsInstance : bool member IsInstanceExplicit : bool member IsStatic : bool member ThisConv : ILThisConvention member BasicConv : ILArgConvention static member Instance : ILCallingConv static member Static : ILCallingConv /// Array shapes. For most purposes, including verification, the /// rank is the only thing that matters. type ILArrayBound = int32 option type ILArrayBounds = ILArrayBound * ILArrayBound [] type ILArrayShape = | ILArrayShape of ILArrayBounds list (* lobound/size pairs *) member Rank : int /// Bounds for a single dimensional, zero based array static member SingleDimensional: ILArrayShape static member FromRank : int -> ILArrayShape [] type ILBoxity = | AsObject | AsValue type ILGenericVariance = | NonVariant | CoVariant | ContraVariant /// Type refs, i.e. references to types in some .NET assembly [] type ILTypeRef = /// Create a ILTypeRef static member Create : scope: ILScopeRef * enclosing: string list * name: string -> ILTypeRef /// Where is the type, i.e. is it in this module, in another module in this assembly or in another assembly? member Scope: ILScopeRef /// The list of enclosing type names for a nested type. If non-nil then the first of these also contains the namespace. member Enclosing: string list /// The name of the type. This also contains the namespace if Enclosing is empty member Name: string /// The name of the type in the assembly using the '.' notation for nested types member FullName: string /// The name of the type in the assembly using the '+' notation for nested types member BasicQualifiedName : string member QualifiedName: string #if EXTENSIONTYPING member QualifiedNameWithNoShortMscorlib: string #endif interface System.IComparable /// Type specs and types. /// /// These are the types that appear syntactically in .NET binaries. /// /// Generic type definitions must be combined with /// an instantiation to form a type. Throughout this file, /// a "ref" refers to something that is uninstantiated, and /// a "spec" to a ref that is combined with the relevant instantiations. [] type ILTypeSpec = static member Create : typeRef:ILTypeRef * instantiation:ILGenericArgs -> ILTypeSpec /// Which type is being referred to? member TypeRef: ILTypeRef /// The type instantiation if the type is generic, otherwise empty member GenericArgs: ILGenericArgs member Scope: ILScopeRef member Enclosing: string list member Name: string member FullName: string interface System.IComparable and [] ILType = /// Used only in return and pointer types. | Void /// Array types | Array of ILArrayShape * ILType /// Unboxed types, including builtin types. | Value of ILTypeSpec /// Reference types. Also may be used for parents of members even if for members in value types. | Boxed of ILTypeSpec /// Unmanaged pointers. Nb. the type is used by tools and for binding only, not by the verifier. | Ptr of ILType /// Managed pointers. | Byref of ILType /// ILCode pointers. | FunctionPointer of ILCallingSignature /// Reference a generic arg. | TypeVar of uint16 /// Custom modifiers. | Modified of /// True if modifier is "required" bool * /// The class of the custom modifier. ILTypeRef * /// The type being modified. ILType member TypeSpec : ILTypeSpec member Boxity : ILBoxity member TypeRef : ILTypeRef member IsNominal : bool member GenericArgs : ILGenericArgs member IsTyvar : bool member BasicQualifiedName : string member QualifiedNameWithNoShortMscorlib : string and [] ILCallingSignature = { CallingConv: ILCallingConv; ArgTypes: ILTypes; ReturnType: ILType } /// Actual generic parameters are always types. and ILGenericArgs = ILList and ILTypes = ILList [] module ILList = val inline map : ('T -> 'U) -> ILList<'T> -> ILList<'U> val inline mapi : (int -> 'T -> 'U) -> ILList<'T> -> ILList<'U> val inline isEmpty : ILList<'T> -> bool val inline toList : ILList<'T> -> 'T list val inline ofList : 'T list -> ILList<'T> val inline lengthsEqAndForall2 : ('T -> 'U -> bool) -> ILList<'T> -> ILList<'U> -> bool val inline init : int -> (int -> 'T) -> ILList<'T> val inline empty<'T> : ILList<'T> val inline toArray : ILList<'T> -> 'T[] val inline ofArray : 'T[] -> ILList<'T> val inline nth : ILList<'T> -> int -> 'T val inline iter : ('T -> unit) -> ILList<'T> -> unit val inline iteri : (int -> 'T -> unit) -> ILList<'T> -> unit val inline foldBack : ('T -> 'State -> 'State) -> ILList<'T> -> 'State -> 'State val inline exists : ('T -> bool) -> ILList<'T> -> bool /// Formal identities of methods. Method refs refer to methods on /// named types. In general you should work with ILMethodSpec objects /// rather than MethodRef objects, because ILMethodSpec objects carry /// information about how generic methods are instantiated. MethodRef /// objects are only used at a few places in the Abstract IL syntax /// and if analyzing or generating IL you will be unlikely to come across /// these. [] type ILMethodRef = static member Create : enclosingTypeRef: ILTypeRef * callingConv: ILCallingConv * name: string * genericArity: int * argTypes: ILTypes * returnType: ILType -> ILMethodRef member EnclosingTypeRef: ILTypeRef member CallingConv: ILCallingConv member Name: string member GenericArity: int member ArgCount: int member ArgTypes: ILTypes member ReturnType: ILType member CallingSignature: ILCallingSignature interface System.IComparable /// Formal identities of fields. [] type ILFieldRef = { EnclosingTypeRef: ILTypeRef; Name: string; Type: ILType } /// The information at the callsite of a method // // A ILMethodSpec is everything given at the callsite (apart from whether the call is a tailcall and whether it is passing // varargs - see the instruction set below). It is made up of // 1) a (possibly generic) ILMethodRef // 2) a "usage type" that indicates the how the type containing the declaration is being used (as // a value class, a boxed value class, an instantiated generic class or whatever - see below) // 3) an instantiation in the case where the method is generic. // // In this unbound form of the metadata, the enclosing type may be ILType.Boxed even when the member is a member of a value type or // enumeration. This is because the binary format of the metadata does not carry enough information in a MemberRefParent to determine // from the binary alone whether the enclosing type is a value type or not. [] type ILMethodSpec = static member Create : ILType * ILMethodRef * ILGenericArgs -> ILMethodSpec member MethodRef: ILMethodRef member EnclosingType: ILType member GenericArgs: ILGenericArgs member CallingConv: ILCallingConv member GenericArity: int member Name: string member FormalArgTypes: ILTypes member FormalReturnType: ILType interface System.IComparable /// Field specs. The data given for a ldfld, stfld etc. instruction. [] type ILFieldSpec = { FieldRef: ILFieldRef; EnclosingType: ILType } member EnclosingTypeRef: ILTypeRef member Name: string member FormalType: ILType member ActualType : ILType /// ILCode labels. In structured code each code label /// refers to a basic block somewhere in the code of the method. type ILCodeLabel = int [] type ILBasicType = | DT_R | DT_I1 | DT_U1 | DT_I2 | DT_U2 | DT_I4 | DT_U4 | DT_I8 | DT_U8 | DT_R4 | DT_R8 | DT_I | DT_U | DT_REF [] type ILToken = | ILType of ILType | ILMethod of ILMethodSpec | ILField of ILFieldSpec [] type ILConst = | I4 of int32 | I8 of int64 | R4 of single | R8 of double type ILTailcall = | Tailcall | Normalcall type ILAlignment = | Aligned | Unaligned1 | Unaligned2 | Unaligned4 type ILVolatility = | Volatile | Nonvolatile type ILReadonly = | ReadonlyAddress | NormalAddress type ILVarArgs = ILTypes option [] type ILComparisonInstr = | BI_beq | BI_bge | BI_bge_un | BI_bgt | BI_bgt_un | BI_ble | BI_ble_un | BI_blt | BI_blt_un | BI_bne_un | BI_brfalse | BI_brtrue /// The instruction set. /// /// In general we don't categorize instructions, as different /// instruction groups are relevant for different types of operations. /// However we do collect the branch and compare instructions together /// because they all take an address, and the ILArithInstr ones because /// none of them take any direct arguments. [] type ILInstr = // Basic | AI_add | AI_add_ovf | AI_add_ovf_un | AI_and | AI_div | AI_div_un | AI_ceq | AI_cgt | AI_cgt_un | AI_clt | AI_clt_un | AI_conv of ILBasicType | AI_conv_ovf of ILBasicType | AI_conv_ovf_un of ILBasicType | AI_mul | AI_mul_ovf | AI_mul_ovf_un | AI_rem | AI_rem_un | AI_shl | AI_shr | AI_shr_un | AI_sub | AI_sub_ovf | AI_sub_ovf_un | AI_xor | AI_or | AI_neg | AI_not | AI_ldnull | AI_dup | AI_pop | AI_ckfinite | AI_nop | AI_ldc of ILBasicType * ILConst | I_ldarg of uint16 | I_ldarga of uint16 | I_ldind of ILAlignment * ILVolatility * ILBasicType | I_ldloc of uint16 | I_ldloca of uint16 | I_starg of uint16 | I_stind of ILAlignment * ILVolatility * ILBasicType | I_stloc of uint16 // Control transfer | I_br of ILCodeLabel | I_jmp of ILMethodSpec | I_brcmp of ILComparisonInstr * ILCodeLabel * ILCodeLabel (* second label is fall-through *) | I_switch of (ILCodeLabel list * ILCodeLabel) (* last label is fallthrough *) | I_ret // Method call | I_call of ILTailcall * ILMethodSpec * ILVarArgs | I_callvirt of ILTailcall * ILMethodSpec * ILVarArgs | I_callconstraint of ILTailcall * ILType * ILMethodSpec * ILVarArgs | I_calli of ILTailcall * ILCallingSignature * ILVarArgs | I_ldftn of ILMethodSpec | I_newobj of ILMethodSpec * ILVarArgs // Exceptions | I_throw | I_endfinally | I_endfilter | I_leave of ILCodeLabel | I_rethrow // Object instructions | I_ldsfld of ILVolatility * ILFieldSpec | I_ldfld of ILAlignment * ILVolatility * ILFieldSpec | I_ldsflda of ILFieldSpec | I_ldflda of ILFieldSpec | I_stsfld of ILVolatility * ILFieldSpec | I_stfld of ILAlignment * ILVolatility * ILFieldSpec | I_ldstr of string | I_isinst of ILType | I_castclass of ILType | I_ldtoken of ILToken | I_ldvirtftn of ILMethodSpec // Value type instructions | I_cpobj of ILType | I_initobj of ILType | I_ldobj of ILAlignment * ILVolatility * ILType | I_stobj of ILAlignment * ILVolatility * ILType | I_box of ILType | I_unbox of ILType | I_unbox_any of ILType | I_sizeof of ILType // Generalized array instructions. In AbsIL these instructions include // both the single-dimensional variants (with ILArrayShape == ILArrayShape.SingleDimensional) // and calls to the "special" multi-dimensional "methods" such as // newobj void string[,]::.ctor(int32, int32) // call string string[,]::Get(int32, int32) // call string& string[,]::Address(int32, int32) // call void string[,]::Set(int32, int32,string) // The IL reader transforms calls of this form to the corresponding // generalized instruction with the corresponding ILArrayShape // argument. This is done to simplify the IL and make it more uniform. // The IL writer then reverses this when emitting the binary. | I_ldelem of ILBasicType | I_stelem of ILBasicType | I_ldelema of ILReadonly * bool * ILArrayShape * ILType (* ILArrayShape = ILArrayShape.SingleDimensional for single dimensional arrays *) | I_ldelem_any of ILArrayShape * ILType (* ILArrayShape = ILArrayShape.SingleDimensional for single dimensional arrays *) | I_stelem_any of ILArrayShape * ILType (* ILArrayShape = ILArrayShape.SingleDimensional for single dimensional arrays *) | I_newarr of ILArrayShape * ILType (* ILArrayShape = ILArrayShape.SingleDimensional for single dimensional arrays *) | I_ldlen // "System.TypedReference" related instructions: almost // no languages produce these, though they do occur in mscorlib.dll // System.TypedReference represents a pair of a type and a byref-pointer // to a value of that type. | I_mkrefany of ILType | I_refanytype | I_refanyval of ILType // Debug-specific // I_seqpoint is a fake instruction to represent a sequence point: // the next instruction starts the execution of the // statement covered by the given range - this is a // dummy instruction and is not emitted | I_break | I_seqpoint of ILSourceMarker // Varargs - C++ only | I_arglist // Local aggregates, i.e. stack allocated data (alloca) : C++ only | I_localloc | I_cpblk of ILAlignment * ILVolatility | I_initblk of ILAlignment * ILVolatility // EXTENSIONS, e.g. MS-ILX | EI_ilzero of ILType | EI_ldlen_multi of int32 * int32 | I_other of IlxExtensionInstr // REVIEW: remove this open-ended way of extending the IL and just combine with ILX type ILInstrSetExtension<'Extension> = { instrExtDests: ('Extension -> ILCodeLabel list); instrExtFallthrough: ('Extension -> ILCodeLabel option); instrExtIsTailcall: ('Extension -> bool); instrExtRelabel: (ILCodeLabel -> ILCodeLabel) -> 'Extension -> 'Extension; } val RegisterInstructionSetExtension: ILInstrSetExtension<'Extension> -> ('Extension -> IlxExtensionInstr) * (IlxExtensionInstr -> bool) * (IlxExtensionInstr -> 'Extension) /// A list of instructions ending in an unconditionally /// branching instruction. A basic block has a label which must be unique /// within the method it is located in. Only the first instruction of /// a basic block can be the target of a branch. // // Details: The last instruction is always a control flow instruction, // i.e. branch, tailcall, throw etc. // // For example // B1: ldarg 1 // pop // ret // // will be one basic block: // ILBasicBlock("B1", [| I_ldarg(1); I_arith(AI_pop); I_ret |]) type ILBasicBlock = { Label: ILCodeLabel; Instructions: ILInstr[] } member Fallthrough: ILCodeLabel option /// Indicates that a particular local variable has a particular source /// language name within a GroupBlock. This does not effect local /// variable numbering, which is global over the whole method. type ILDebugMapping = { LocalIndex: int; LocalName: string; } /// ILCode /// /// The code for a method is made up of a "code" object. Each "code" /// object gives the contents of the method in a "semi-structured" form, i.e. /// 1. The structure implicit in the IL exception handling tables /// has been made explicit /// 2. No relative offsets are used in the code: all branches and /// switch targets are made explicit as labels. /// 3. All "fallthroughs" from one basic block to the next have /// been made explicit, by adding extra "branch" instructions to /// the end of basic blocks which simply fallthrough to another basic /// block. /// /// You can convert a straight-line sequence of instructions to structured /// code by using buildILCode and /// Most of the interesting code is contained in BasicBlocks. If you're /// just interested in getting started with the format then begin /// by simply considering methods which do not contain any branch /// instructions, or methods which do not contain any exception handling /// constructs. /// /// The above format has the great advantage that you can insert and /// delete new code blocks without needing to fixup relative offsets /// or exception tables. /// /// ILBasicBlock(bblock) /// See above /// /// GroupBlock(localDebugInfo, blocks) /// A set of blocks, with interior branching between the blocks. For example /// B1: ldarg 1 /// br B2 /// /// B2: pop /// ret /// /// will be two basic blocks /// let b1 = ILBasicBlock("B1", [| I_ldarg(1); I_br("B2") |]) /// let b2 = ILBasicBlock("B2", [| I_arith(AI_pop); I_ret |]) /// GroupBlock([], [b1; b2]) /// /// A GroupBlock can include a list of debug info records for locally /// scoped local variables. These indicate that within the given blocks /// the given local variables are used for the given Debug info /// will only be recorded for local variables /// declared in these nodes, and the local variable will only appear live /// in the debugger for the instructions covered by this node. So if you /// omit or erase these nodes then no debug info will be emitted for local /// variables. If necessary you can have one outer ScopeBlock which specifies /// the information for all the local variables /// /// Not all the destination labels used within a group of blocks need /// be satisfied by that group alone. For example, the interior "try" code /// of "try"-"catch" construct may be: /// B1: ldarg 1 /// br B2 /// /// B2: pop /// leave B3 /// /// Again there will be two basic blocks grouped together: /// let b1 = ILBasicBlock("B1", [| I_ldarg(1); I_br("B2") |]) /// let b2 = ILBasicBlock("B2", [| I_arith(AI_pop); I_leave("B3") |]) /// GroupBlock([], [b1; b2]) /// Here the code must be embedded in a method where "B3" is a label /// somewhere in the method. /// /// RestrictBlock(labels,code) /// This block hides labels, i.e. the given set of labels represent /// wiring which is purely internal to the given code block, and may not /// be used as the target of a branch by any blocks which this block /// is placed alongside. /// /// For example, if a method is made up of: /// B1: ldarg 1 /// br B2 /// /// B2: ret /// /// then the label "B2" is internal. The overall code will /// be two basic blocks grouped together, surrounded by a RestrictBlock. /// The label "B1" is then the only remaining visible entry to the method /// and execution will begin at that label. /// /// let b1 = ILBasicBlock("B1", [| I_ldarg(1); I_br("B2") |]) /// let b2 = ILBasicBlock("B2", [| I_arith(AI_pop); I_leave("B3") |]) /// let gb1 = GroupBlock([], [b1; b2]) /// RestrictBlock(["B2"], gb1) /// /// RestrictBlock is necessary to build well-formed code. /// /// TryBlock(trycode,seh) /// /// A try-catch, try-finally or try-fault block. /// If an exception is raised while executing /// an instruction in 'trycode' then the exception handler given by /// 'seh' is executed. /// /// Well-formedness conditions for code: /// /// Well-formed code includes nodes which explicitly "hide" interior labels. /// For example, the code object for a method may have only one entry /// label which is not hidden, and this label will be the label where /// execution begins. /// /// Both filter and catch blocks must have one /// and only one entry. These entry labels are not visible /// outside the filter and catch blocks. Filter has no /// exits (it always uses endfilter), catch may have exits. /// The "try" block can have multiple entries, i.e. you can branch /// into a try from outside. They can have multiple exits, each of /// which will be a "leave". /// type ILCode = | ILBasicBlock of ILBasicBlock | GroupBlock of ILDebugMapping list * ILCode list | RestrictBlock of ILCodeLabel list * ILCode | TryBlock of ILCode * ILExceptionBlock /// The 'seh' specification can have several forms: /// /// FilterCatchBlock /// A multi-try-filter-catch block. Execute the /// filters in order to determine which 'catch' block to catch the /// exception with. There are two kinds of filters - one for /// filtering exceptions by type and one by an instruction sequence. /// Note that filter blocks can't contain any exception blocks. /// and ILExceptionBlock = | FaultBlock of ILCode | FinallyBlock of ILCode | FilterCatchBlock of (ILFilterBlock * ILCode) list and ILFilterBlock = | TypeFilter of ILType | CodeFilter of ILCode val labelsOfCode: ILCode -> ILCodeLabel list val uniqueEntryOfCode: ILCode -> ILCodeLabel /// Field Init [] type ILFieldInit = | String of string | Bool of bool | Char of uint16 | Int8 of sbyte | Int16 of int16 | Int32 of int32 | Int64 of int64 | UInt8 of byte | UInt16 of uint16 | UInt32 of uint32 | UInt64 of uint64 | Single of single | Double of double | Null [] type ILNativeVariant = | Empty | Null | Variant | Currency | Decimal | Date | BSTR | LPSTR | LPWSTR | IUnknown | IDispatch | SafeArray | Error | HRESULT | CArray | UserDefined | Record | FileTime | Blob | Stream | Storage | StreamedObject | StoredObject | BlobObject | CF | CLSID | Void | Bool | Int8 | Int16 | Int32 | Int64 | Single | Double | UInt8 | UInt16 | UInt32 | UInt64 | PTR | Array of ILNativeVariant | Vector of ILNativeVariant | Byref of ILNativeVariant | Int | UInt /// Native Types, for marshalling to the native C interface. /// These are taken directly from the ILASM syntax, see ECMA Spec (Partition II, 7.4). [] type ILNativeType = | Empty | Custom of Guid * string * string * byte[] (* guid,nativeTypeName,custMarshallerName,cookieString *) | FixedSysString of int32 | FixedArray of int32 | Currency | LPSTR | LPWSTR | LPTSTR | ByValStr | TBSTR | LPSTRUCT | Struct | Void | Bool | Int8 | Int16 | Int32 | Int64 | Single | Double | Byte | UInt16 | UInt32 | UInt64 | Array of ILNativeType option * (int32 * int32 option) option (* optional idx of parameter giving size plus optional additive i.e. num elems *) | Int | UInt | Method | AsAny | BSTR | IUnknown | IDispatch | Interface | Error | SafeArray of ILNativeVariant * string option | ANSIBSTR | VariantBool /// Local variables [] type ILLocal = { Type: ILType; IsPinned: bool } type ILLocals = ILList /// IL method bodies [] type ILMethodBody = { IsZeroInit: bool; /// strictly speakin should be a uint16 MaxStack: int32; NoInlining: bool; Locals: ILLocals; Code: ILCode; SourceMarker: ILSourceMarker option } /// Member Access [] type ILMemberAccess = | Assembly | CompilerControlled | FamilyAndAssembly | FamilyOrAssembly | Family | Private | Public [] type ILAttribElem = /// Represents a custom attribute parameter of type 'string'. These may be null, in which case they are encoded in a special /// way as indicated by Ecma-335 Partition II. | String of string option | Bool of bool | Char of char | SByte of sbyte | Int16 of int16 | Int32 of int32 | Int64 of int64 | Byte of byte | UInt16 of uint16 | UInt32 of uint32 | UInt64 of uint64 | Single of single | Double of double | Null | Type of ILType option | TypeRef of ILTypeRef option | Array of ILType * ILAttribElem list /// Named args: values and flags indicating if they are fields or properties type ILAttributeNamedArg = string * ILType * bool * ILAttribElem /// Custom attributes. See 'decodeILAttribData' for a helper to parse the byte[] /// to ILAttribElem's as best as possible. type ILAttribute = { Method: ILMethodSpec; #if SILVERLIGHT Arguments: ILAttribElem list * ILAttributeNamedArg list #endif Data: byte[] } [] type ILAttributes = member AsList : ILAttribute list /// Method parameters and return values type ILParameter = { Name: string option; Type: ILType; Default: ILFieldInit option; /// Marshalling map for parameters. COM Interop only. Marshal: ILNativeType option; IsIn: bool; IsOut: bool; IsOptional: bool; CustomAttrs: ILAttributes } type ILParameters = ILList val typesOfILParamsRaw : ILParameters -> ILTypes val typesOfILParamsList : ILParameter list -> ILType list /// Method return values type ILReturn = { Marshal: ILNativeType option; Type: ILType; CustomAttrs: ILAttributes } /// Security ILPermissions /// /// Attached to various structures... [] type ILSecurityAction = | Request | Demand | Assert | Deny | PermitOnly | LinkCheck | InheritCheck | ReqMin | ReqOpt | ReqRefuse | PreJitGrant | PreJitDeny | NonCasDemand | NonCasLinkDemand | NonCasInheritance | LinkDemandChoice | InheritanceDemandChoice | DemandChoice type ILPermission = | PermissionSet of ILSecurityAction * byte[] /// Abstract type equivalent to ILPermission list - use helpers /// below to construct/destruct these [] type ILPermissions = member AsList : ILPermission list /// PInvoke attributes. [] type PInvokeCallingConvention = | None | Cdecl | Stdcall | Thiscall | Fastcall | WinApi [] type PInvokeCharEncoding = | None | Ansi | Unicode | Auto [] type PInvokeCharBestFit = | UseAssembly | Enabled | Disabled [] type PInvokeThrowOnUnmappableChar = | UseAssembly | Enabled | Disabled [] type PInvokeMethod = { Where: ILModuleRef; Name: string; CallingConv: PInvokeCallingConvention; CharEncoding: PInvokeCharEncoding; NoMangle: bool; LastError: bool; ThrowOnUnmappableChar: PInvokeThrowOnUnmappableChar; CharBestFit: PInvokeCharBestFit } /// [OverridesSpec] - refer to a method declaration in a superclass /// or superinterface. Used for overriding/method impls. Includes /// a type for the parent for the same reason that a method specs /// includes the type of the enclosing type, i.e. the type /// gives the "ILGenericArgs" at which the parent type is being used. type ILOverridesSpec = | OverridesSpec of ILMethodRef * ILType member MethodRef: ILMethodRef member EnclosingType: ILType // REVIEW: fold this into ILMethodDef type ILMethodVirtualInfo = { IsFinal: bool; IsNewSlot: bool; IsCheckAccessOnOverride: bool; IsAbstract: bool; } [] type MethodKind = | Static | Cctor | Ctor | NonVirtual | Virtual of ILMethodVirtualInfo // REVIEW: fold this into ILMethodDef [] type MethodBody = | IL of ILMethodBody | PInvoke of PInvokeMethod (* platform invoke to native *) | Abstract | Native // REVIEW: fold this into ILMethodDef [] type MethodCodeKind = | IL | Native | Runtime /// Generic parameters. Formal generic parameter declarations /// may include the bounds, if any, on the generic parameter. type ILGenericParameterDef = { Name: string; /// At most one is the parent type, the others are interface types Constraints: ILTypes; /// Variance of type parameters, only applicable to generic parameters for generic interfaces and delegates Variance: ILGenericVariance; /// Indicates the type argument must be a reference type HasReferenceTypeConstraint: bool; CustomAttrs : ILAttributes; /// Indicates the type argument must be a value type, but not Nullable HasNotNullableValueTypeConstraint: bool; /// Indicates the type argument must have a public nullary constructor HasDefaultConstructorConstraint: bool; } type ILGenericParameterDefs = ILGenericParameterDef list // REVIEW: fold this into ILMethodDef [] type ILLazyMethodBody = member Contents : MethodBody /// Method definitions. /// /// There are several different flavours of methods (constructors, /// abstract, virtual, static, instance, class constructors). There /// is no perfect factorization of these as the combinations are not /// independent. [] type ILMethodDef = { Name: string; mdKind: MethodKind; CallingConv: ILCallingConv; Parameters: ILParameters; Return: ILReturn; Access: ILMemberAccess; mdBody: ILLazyMethodBody; mdCodeKind: MethodCodeKind; IsInternalCall: bool; IsManaged: bool; IsForwardRef: bool; SecurityDecls: ILPermissions; /// Note: some methods are marked "HasSecurity" even if there are no permissions attached, e.g. if they use SuppressUnmanagedCodeSecurityAttribute HasSecurity: bool; IsEntryPoint:bool; IsReqSecObj: bool; IsHideBySig: bool; IsSpecialName: bool; /// The method is exported to unmanaged code using COM interop. IsUnmanagedExport: bool; IsSynchronized: bool; IsPreserveSig: bool; /// .NET 2.0 feature: SafeHandle finalizer must be run IsMustRun: bool; IsNoInline: bool; GenericParams: ILGenericParameterDefs; CustomAttrs: ILAttributes; } member ParameterTypes: ILTypes; member IsIL : bool member Code : ILCode option member Locals : ILLocals member MaxStack : int32 member IsZeroInit : bool /// .cctor methods. The predicates (IsClassInitializer,IsConstructor,IsStatic,IsNonVirtualInstance,IsVirtual) form a complete, non-overlapping classification of this type member IsClassInitializer: bool /// .ctor methods. The predicates (IsClassInitializer,IsConstructor,IsStatic,IsNonVirtualInstance,IsVirtual) form a complete, non-overlapping classification of this type member IsConstructor: bool /// static methods. The predicates (IsClassInitializer,IsConstructor,IsStatic,IsNonVirtualInstance,IsVirtual) form a complete, non-overlapping classification of this type member IsStatic: bool /// instance methods that are not virtual. The predicates (IsClassInitializer,IsConstructor,IsStatic,IsNonVirtualInstance,IsVirtual) form a complete, non-overlapping classification of this type member IsNonVirtualInstance: bool /// instance methods that are virtual or abstract or implement an interface slot. The predicates (IsClassInitializer,IsConstructor,IsStatic,IsNonVirtualInstance,IsVirtual) form a complete, non-overlapping classification of this type member IsVirtual: bool member IsFinal: bool member IsNewSlot: bool member IsCheckAccessOnOverride : bool member IsAbstract: bool member MethodBody : ILMethodBody member CallingSignature: ILCallingSignature /// Tables of methods. Logically equivalent to a list of methods but /// the table is kept in a form optimized for looking up methods by /// name and arity. /// abstract type equivalent to [ILMethodDef list] [] type ILMethodDefs = interface IEnumerable member AsList : ILMethodDef list member FindByName : string -> ILMethodDef list /// Field definitions [] type ILFieldDef = { Name: string; Type: ILType; IsStatic: bool; Access: ILMemberAccess; Data: byte[] option; LiteralValue: ILFieldInit option; /// The explicit offset in bytes when explicit layout is used. Offset: int32 option; IsSpecialName: bool; Marshal: ILNativeType option; NotSerialized: bool; IsLiteral: bool ; IsInitOnly: bool; CustomAttrs: ILAttributes; } /// Tables of fields. Logically equivalent to a list of fields but /// the table is kept in a form optimized for looking up fields by /// name. [] type ILFieldDefs = member AsList : ILFieldDef list member LookupByName : string -> ILFieldDef list /// Event definitions [] type ILEventDef = { Type: ILType option; Name: string; IsRTSpecialName: bool; IsSpecialName: bool; AddMethod: ILMethodRef; RemoveMethod: ILMethodRef; FireMethod: ILMethodRef option; OtherMethods: ILMethodRef list; CustomAttrs: ILAttributes; } /// Table of those events in a type definition. [] type ILEventDefs = member AsList : ILEventDef list member LookupByName : string -> ILEventDef list /// Property definitions [] type ILPropertyDef = { Name: string; IsRTSpecialName: bool; IsSpecialName: bool; SetMethod: ILMethodRef option; GetMethod: ILMethodRef option; CallingConv: ILThisConvention; Type: ILType; Init: ILFieldInit option; Args: ILTypes; CustomAttrs: ILAttributes; } /// Table of those properties in a type definition. [] [] type ILPropertyDefs = member AsList : ILPropertyDef list member LookupByName : string -> ILPropertyDef list /// Method Impls /// /// If there is an entry (pms --> ms) in this table, then method [ms] /// is used to implement method [pms] for the purposes of this class /// and its subclasses. type ILMethodImplDef = { Overrides: ILOverridesSpec; OverrideBy: ILMethodSpec } [] type ILMethodImplDefs = member AsList : ILMethodImplDef list /// Type Layout information [] type ILTypeDefLayout = | Auto | Sequential of ILTypeDefLayoutInfo | Explicit of ILTypeDefLayoutInfo and ILTypeDefLayoutInfo = { Size: int32 option; Pack: uint16 option } /// Indicate the initialization semantics of a type [] type ILTypeInit = | BeforeField | OnAny /// Default Unicode encoding for P/Invoke within a type [] type ILDefaultPInvokeEncoding = | Ansi | Auto | Unicode /// Type Access [] type ILTypeDefAccess = | Public | Private | Nested of ILMemberAccess /// A categorization of type definitions into "kinds" //------------------------------------------------------------------- // A note for the nit-picky.... In theory, the "kind" of a type // definition can only be partially determined prior to binding. // For example, you cannot really, absolutely tell if a type is // really, absolutely a value type until you bind the // super class and test it for type equality against System.ValueType. // However, this is unbearably annoying, as it means you // have to load "mscorlib" and perform bind operations // in order to be able to determine some quite simple // things. So we approximate by simply looking at the name // of the superclass when loading. // ------------------------------------------------------------------ [] type ILTypeDefKind = | Class | ValueType | Interface | Enum | Delegate (* FOR EXTENSIONS, e.g. MS-ILX *) | Other of IlxExtensionTypeKind /// Tables of named type definitions. The types and table may contain on-demand /// (lazy) computations, e.g. the actual reading of some aspects /// of a type definition may be delayed if the reader being used supports /// this. /// /// This is an abstract type equivalent to "ILTypeDef list" [] [] type ILTypeDefs = interface IEnumerable member AsList : ILTypeDef list /// Get some information about the type defs, but do not force the read of the type defs themselves member AsListOfLazyTypeDefs : (string list * string * ILAttributes * Lazy) list /// Calls to [FindByName] will result in any laziness in the overall /// set of ILTypeDefs being read in in addition /// to the details for the type found, but the remaining individual /// type definitions will not be read. member FindByName : string -> ILTypeDef /// Type Definitions /// /// As for methods there are several important constraints not encoded /// in the type definition below, for example that the super class of /// an interface type is always None, or that enumerations always /// have a very specific form. and [] ILTypeDef = { tdKind: ILTypeDefKind; Name: string; GenericParams: ILGenericParameterDefs; Access: ILTypeDefAccess; IsAbstract: bool; IsSealed: bool; IsSerializable: bool; /// Class or interface generated for COM interop IsComInterop: bool; Layout: ILTypeDefLayout; IsSpecialName: bool; Encoding: ILDefaultPInvokeEncoding; NestedTypes: ILTypeDefs; Implements: ILTypes; Extends: ILType option; Methods: ILMethodDefs; SecurityDecls: ILPermissions; /// Note: some classes are marked "HasSecurity" even if there are no permissions attached, e.g. if they use SuppressUnmanagedCodeSecurityAttribute HasSecurity: bool; Fields: ILFieldDefs; MethodImpls: ILMethodImplDefs; InitSemantics: ILTypeInit; Events: ILEventDefs; Properties: ILPropertyDefs; CustomAttrs: ILAttributes; } member IsClass: bool; member IsInterface: bool; member IsEnum: bool; member IsDelegate: bool; member IsStructOrEnum : bool [] [] type ILNestedExportedTypes = member AsList : ILNestedExportedType list /// "Classes Elsewhere" - classes in auxiliary modules. /// /// Manifests include declarations for all the classes in an /// assembly, regardless of which module they are in. /// /// The ".class extern" construct describes so-called exported types -- /// these are public classes defined in the auxiliary modules of this assembly, /// i.e. modules other than the manifest-carrying module. /// /// For example, if you have a two-module /// assembly (A.DLL and B.DLL), and the manifest resides in the A.DLL, /// then in the manifest all the public classes declared in B.DLL should /// be defined as exported types, i.e., as ".class extern". The public classes /// defined in A.DLL should not be defined as ".class extern" -- they are /// already available in the manifest-carrying module. The union of all /// public classes defined in the manifest-carrying module and all /// exported types defined there is the set of all classes exposed by /// this assembly. Thus, by analysing the metadata of the manifest-carrying /// module of an assembly, you can identify all the classes exposed by /// this assembly, and where to find them. /// /// Nested classes found in external modules should also be located in /// this table, suitably nested inside another "ILExportedTypeOrForwarder" /// definition. /// these are only found in the "Nested" field of ILExportedTypeOrForwarder objects // REVIEW: fold this into ILExportedTypeOrForwarder. There's not much value in keeping these distinct and ILNestedExportedType = { Name: string; Access: ILMemberAccess; Nested: ILNestedExportedTypes; CustomAttrs: ILAttributes } /// these are only found in the ILExportedTypesAndForwarders table in the manifest [] type ILExportedTypeOrForwarder = { ScopeRef: ILScopeRef; /// [Namespace.]Name Name: string; IsForwarder: bool; Access: ILTypeDefAccess; Nested: ILNestedExportedTypes; CustomAttrs: ILAttributes } [] [] type ILExportedTypesAndForwarders = member AsList : ILExportedTypeOrForwarder list [] type ILResourceAccess = | Public | Private [] type ILResourceLocation = | Local of (unit -> byte[]) (* resources may be re-read each time this function is called *) | File of ILModuleRef * int32 | Assembly of ILAssemblyRef /// "Manifest ILResources" are chunks of resource data, being one of: /// - the data section of the current module (byte[] of resource given directly) /// - in an external file in this assembly (offset given in the ILResourceLocation field) /// - as a resources in another assembly of the same name. type ILResource = { Name: string; Location: ILResourceLocation; Access: ILResourceAccess; CustomAttrs: ILAttributes } /// Table of resources in a module [] [] type ILResources = member AsList : ILResource list [] type ILAssemblyLongevity = | Unspecified | Library | PlatformAppDomain | PlatformProcess | PlatformSystem /// The main module of an assembly is a module plus some manifest information. type ILAssemblyManifest = { Name: string; /// This is ID of the algorithm used for the hashes of auxiliary /// files in the assembly. These hashes are stored in the /// ILModuleRef.Hash fields of this assembly. These are not cryptographic /// hashes: they are simple file hashes. The algorithm is normally /// 0x00008004 indicating the SHA1 hash algorithm. AuxModuleHashAlgorithm: int32; SecurityDecls: ILPermissions; /// This is the public key used to sign this /// assembly (the signature itself is stored elsewhere: see the /// binary format, and may not have been written if delay signing /// is used). (member Name, member PublicKey) forms the full /// public name of the assembly. PublicKey: byte[] option; Version: ILVersionInfo option; Locale: string option; CustomAttrs: ILAttributes; AssemblyLongevity: ILAssemblyLongevity; DisableJitOptimizations: bool; JitTracking: bool; Retargetable: bool; /// Records the types impemented by this asssembly in auxiliary /// modules. ExportedTypes: ILExportedTypesAndForwarders; /// Records whether the entrypoint resides in another module. EntrypointElsewhere: ILModuleRef option; } /// One module in the "current" assembly, either a main-module or /// an auxiliary module. The main module will have a manifest. /// /// An assembly is built by joining together a "main" module plus /// several auxiliary modules. type ILModuleDef = { Manifest: ILAssemblyManifest option; CustomAttrs: ILAttributes; Name: string; TypeDefs: ILTypeDefs; SubsystemVersion : int * int UseHighEntropyVA : bool SubSystemFlags: int32; IsDLL: bool; IsILOnly: bool; Platform: ILPlatform option; StackReserveSize: int32 option; Is32Bit: bool; Is32BitPreferred: bool; Is64Bit: bool; VirtualAlignment: int32; PhysicalAlignment: int32; ImageBase: int32; MetadataVersion: string; Resources: ILResources; /// e.g. win86 resources, as the exact contents of a .res or .obj file NativeResources: Lazy list; } member ManifestOfAssembly: ILAssemblyManifest member HasManifest : bool /// Find the method definition corresponding to the given property or /// event operation. These are always in the same class as the property /// or event. This is useful especially if your code is not using the Ilbind /// API to bind references. val resolveILMethodRef: ILTypeDef -> ILMethodRef -> ILMethodDef // ------------------------------------------------------------------ // Type Names // // The name of a type stored in the Name field is as follows: // - For outer types it is, for example, System.String, i.e. // the namespace followed by the type name. // - For nested types, it is simply the type name. The namespace // must be gleaned from the context in which the nested type // lies. // ------------------------------------------------------------------ val splitNamespace: string -> string list val splitNamespaceToArray: string -> string[] /// The splitILTypeName utility helps you split a string representing /// a type name into the leading namespace elements (if any), the /// names of any nested types and the type name itself. This function /// memoizes and interns the splitting of the namespace portion of /// the type name. val splitILTypeName: string -> string list * string val splitILTypeNameWithPossibleStaticArguments: string -> string[] * string /// splitTypeNameRight is like splitILTypeName except the /// namespace is kept as a whole string, rather than split at dots. val splitTypeNameRight: string -> string option * string val typeNameForGlobalFunctions: string val isTypeNameForGlobalFunctions: string -> bool val ungenericizeTypeName: string -> string (* e.g. List`1 --> List *) // ==================================================================== // PART 2 // // Making metadata. Where no explicit constructor // is given, you should create the concrete datatype directly, // e.g. by filling in all appropriate record fields. // ==================================================================== *) /// A table of common references to items in mscorlib. Version-neutral references /// can be generated using ecmaILGlobals. If you have already loaded a particular /// version of mscorlib you should reference items via an ILGlobals for that particular /// version of mscorlib built using mkILGlobals. [] type ILGlobals = { mscorlibScopeRef: ILScopeRef mscorlibAssemblyName: string noDebugData: bool generateDebugBrowsableData: bool tref_Object: ILTypeRef tspec_Object: ILTypeSpec typ_Object: ILType tref_String: ILTypeRef typ_String: ILType typ_StringBuilder: ILType typ_AsyncCallback: ILType typ_IAsyncResult: ILType typ_IComparable: ILType tref_Type: ILTypeRef typ_Type: ILType typ_Missing: ILType typ_Activator: ILType typ_Delegate: ILType typ_ValueType: ILType typ_Enum: ILType tspec_TypedReference: ILTypeSpec typ_TypedReference: ILType typ_MulticastDelegate: ILType typ_Array: ILType tspec_Int64: ILTypeSpec tspec_UInt64: ILTypeSpec tspec_Int32: ILTypeSpec tspec_UInt32: ILTypeSpec tspec_Int16: ILTypeSpec tspec_UInt16: ILTypeSpec tspec_SByte: ILTypeSpec tspec_Byte: ILTypeSpec tspec_Single: ILTypeSpec tspec_Double: ILTypeSpec tspec_IntPtr: ILTypeSpec tspec_UIntPtr: ILTypeSpec tspec_Char: ILTypeSpec tspec_Bool: ILTypeSpec typ_int8: ILType typ_int16: ILType typ_int32: ILType typ_int64: ILType typ_uint8: ILType typ_uint16: ILType typ_uint32: ILType typ_uint64: ILType typ_float32: ILType typ_float64: ILType typ_bool: ILType typ_char: ILType typ_IntPtr: ILType typ_UIntPtr: ILType typ_RuntimeArgumentHandle: ILType typ_RuntimeTypeHandle: ILType typ_RuntimeMethodHandle: ILType typ_RuntimeFieldHandle: ILType typ_Byte: ILType typ_Int16: ILType typ_Int32: ILType typ_Int64: ILType typ_SByte: ILType typ_UInt16: ILType typ_UInt32: ILType typ_UInt64: ILType typ_Single: ILType typ_Double: ILType typ_Bool: ILType typ_Char: ILType typ_SerializationInfo: ILType typ_StreamingContext: ILType tref_SecurityPermissionAttribute : ILTypeRef tspec_Exception: ILTypeSpec typ_Exception: ILType mutable generatedAttribsCache: ILAttribute list mutable debuggerBrowsableNeverAttributeCache : ILAttribute option mutable debuggerTypeProxyAttributeCache : ILAttribute option } /// Build the table of commonly used references given a ILScopeRef for mscorlib. val mkILGlobals : mscorlibScopeRef:ILScopeRef -> mscorlibAssemblyNameOpt:string option -> noDebugData:bool * generateDebugBrowsableData:bool -> ILGlobals /// When writing a binary the fake "toplevel" type definition (called ) /// must come first. This function puts it first, and creates it in the returned list as an empty typedef if it /// doesn't already exist. val destTypeDefsWithGlobalFunctionsFirst: ILGlobals -> ILTypeDefs -> ILTypeDef list /// Note: not all custom attribute data can be decoded without binding types. In particular /// enums must be bound in order to discover the size of the underlying integer. /// The following assumes enums have size int32. /// It also does not completely decode System.Type attributes val decodeILAttribData: ILGlobals -> ILAttribute -> ILScopeRef option -> ILAttribElem list * (* fixed args *) ILAttributeNamedArg list (* named args: values and flags indicating if they are fields or properties *) /// Generate simple references to assemblies and modules val mkSimpleAssRef: string -> ILAssemblyRef val mkSimpleModRef: string -> ILModuleRef val emptyILGenericArgs: ILGenericArgs val mkILTyvarTy: uint16 -> ILType /// Make type refs val mkILNestedTyRef: ILScopeRef * string list * string -> ILTypeRef val mkILTyRef: ILScopeRef * string -> ILTypeRef val mkILTyRefInTyRef: ILTypeRef * string -> ILTypeRef type ILGenericArgsList = ILType list val mkILGenericArgs : ILGenericArgsList -> ILGenericArgs /// Make type specs val mkILNonGenericTySpec: ILTypeRef -> ILTypeSpec val mkILTySpec: ILTypeRef * ILGenericArgsList -> ILTypeSpec val mkILTySpecRaw: ILTypeRef * ILGenericArgs -> ILTypeSpec /// Make types val mkILTy: ILBoxity -> ILTypeSpec -> ILType val mkILNamedTy: ILBoxity -> ILTypeRef -> ILGenericArgsList -> ILType val mkILBoxedTy: ILTypeRef -> ILGenericArgsList -> ILType val mkILBoxedTyRaw: ILTypeRef -> ILGenericArgs -> ILType val mkILValueTy: ILTypeRef -> ILGenericArgsList -> ILType val mkILNonGenericBoxedTy: ILTypeRef -> ILType val mkILNonGenericValueTy: ILTypeRef -> ILType val mkILArrTy: ILType * ILArrayShape -> ILType val mkILArr1DTy: ILType -> ILType val isILArrTy: ILType -> bool val destILArrTy: ILType -> ILArrayShape * ILType val mkILBoxedType : ILTypeSpec -> ILType val mkILTypes : ILType list -> ILTypes /// Make method references and specs val mkILMethRefRaw: ILTypeRef * ILCallingConv * string * int * ILTypes * ILType -> ILMethodRef val mkILMethRef: ILTypeRef * ILCallingConv * string * int * ILType list * ILType -> ILMethodRef val mkILMethSpec: ILMethodRef * ILBoxity * ILGenericArgsList * ILGenericArgsList -> ILMethodSpec val mkILMethSpecForMethRefInTyRaw: ILMethodRef * ILType * ILGenericArgs -> ILMethodSpec val mkILMethSpecForMethRefInTy: ILMethodRef * ILType * ILGenericArgsList -> ILMethodSpec val mkILMethSpecInTy: ILType * ILCallingConv * string * ILType list * ILType * ILGenericArgsList -> ILMethodSpec val mkILMethSpecInTyRaw: ILType * ILCallingConv * string * ILTypes * ILType * ILGenericArgs -> ILMethodSpec /// Construct references to methods on a given type val mkILNonGenericMethSpecInTy: ILType * ILCallingConv * string * ILType list * ILType -> ILMethodSpec /// Construct references to instance methods val mkILInstanceMethSpecInTy: ILType * string * ILType list * ILType * ILGenericArgsList -> ILMethodSpec /// Construct references to instance methods val mkILNonGenericInstanceMethSpecInTy: ILType * string * ILType list * ILType -> ILMethodSpec /// Construct references to static methods val mkILStaticMethSpecInTy: ILType * string * ILType list * ILType * ILGenericArgsList -> ILMethodSpec /// Construct references to static, non-generic methods val mkILNonGenericStaticMethSpecInTy: ILType * string * ILType list * ILType -> ILMethodSpec /// Construct references to constructors val mkILCtorMethSpecForTy: ILType * ILType list -> ILMethodSpec /// Construct references to fields val mkILFieldRef: ILTypeRef * string * ILType -> ILFieldRef val mkILFieldSpec: ILFieldRef * ILType -> ILFieldSpec val mkILFieldSpecInTy: ILType * string * ILType -> ILFieldSpec val mkILCallSigRaw: ILCallingConv * ILTypes * ILType -> ILCallingSignature val mkILCallSig: ILCallingConv * ILType list * ILType -> ILCallingSignature /// Make generalized verions of possibly-generic types, /// e.g. Given the ILTypeDef for List, return the type "List". val mkILFormalBoxedTy: ILTypeRef -> ILGenericParameterDef list -> ILType val mkILFormalTyparsRaw: ILTypes -> ILGenericParameterDefs val mkILFormalTypars: ILType list -> ILGenericParameterDefs val mkILFormalGenericArgsRaw: ILGenericParameterDefs -> ILGenericArgs val mkILFormalGenericArgs: ILGenericParameterDefs -> ILGenericArgsList val mkILSimpleTypar : string -> ILGenericParameterDef /// Make custom attributes val mkILCustomAttribMethRef: ILGlobals -> ILMethodSpec * ILAttribElem list (* fixed args: values and implicit types *) * ILAttributeNamedArg list (* named args: values and flags indicating if they are fields or properties *) -> ILAttribute val mkILCustomAttribute: ILGlobals -> ILTypeRef * ILType list * ILAttribElem list (* fixed args: values and implicit types *) * ILAttributeNamedArg list (* named args: values and flags indicating if they are fields or properties *) -> ILAttribute val mkPermissionSet : ILGlobals -> ILSecurityAction * (ILTypeRef * (string * ILType * ILAttribElem) list) list -> ILPermission /// Making code. val checkILCode: ILCode -> ILCode val generateCodeLabel: unit -> ILCodeLabel val formatCodeLabel : ILCodeLabel -> string /// Make some code that is a straight line sequence of instructions. /// The function will add a "return" if the last instruction is not an exiting instruction val nonBranchingInstrsToCode: ILInstr list -> ILCode /// Make some code that is a straight line sequence of instructions, then do /// some control flow. The first code label is the entry label of the generated code. val mkNonBranchingInstrsThen: ILCodeLabel -> ILInstr list -> ILInstr -> ILCode val mkNonBranchingInstrsThenBr: ILCodeLabel -> ILInstr list -> ILCodeLabel -> ILCode /// Make a basic block. The final instruction must be control flow val mkNonBranchingInstrs: ILCodeLabel -> ILInstr list -> ILCode /// Some more primitive helpers val mkBasicBlock: ILBasicBlock -> ILCode val mkGroupBlock: ILCodeLabel list * ILCode list -> ILCode /// Helpers for codegen: scopes for allocating new temporary variables. type ILLocalsAllocator = new : preAlloc: int -> ILLocalsAllocator member AllocLocal : ILLocal -> uint16 member Close : unit -> ILLocal list /// Derived functions for making some common patterns of instructions val mkNormalCall: ILMethodSpec -> ILInstr val mkNormalCallvirt: ILMethodSpec -> ILInstr val mkNormalCallconstraint: ILType * ILMethodSpec -> ILInstr val mkNormalNewobj: ILMethodSpec -> ILInstr val mkCallBaseConstructor : ILType * ILType list -> ILInstr list val mkNormalStfld: ILFieldSpec -> ILInstr val mkNormalStsfld: ILFieldSpec -> ILInstr val mkNormalLdsfld: ILFieldSpec -> ILInstr val mkNormalLdfld: ILFieldSpec -> ILInstr val mkNormalLdflda: ILFieldSpec -> ILInstr val mkNormalLdobj: ILType -> ILInstr val mkNormalStobj: ILType -> ILInstr val mkLdcInt32: int32 -> ILInstr val mkLdarg0: ILInstr val mkLdloc: uint16 -> ILInstr val mkStloc: uint16 -> ILInstr val mkLdarg: uint16 -> ILInstr val andTailness: ILTailcall -> bool -> ILTailcall /// Derived functions for making return, parameter and local variable /// objects for use in method definitions. val mkILParam: string option * ILType -> ILParameter val mkILParamAnon: ILType -> ILParameter val mkILParamNamed: string * ILType -> ILParameter val mkILReturn: ILType -> ILReturn val mkILLocal: ILType -> ILLocal val mkILLocals : ILLocal list -> ILLocals val emptyILLocals : ILLocals /// Make a formal generic parameters val mkILEmptyGenericParams: ILGenericParameterDefs /// Make method definitions val mkILMethodBody: initlocals:bool * ILLocals * int * ILCode * ILSourceMarker option -> ILMethodBody val mkMethodBody: bool * ILLocals * int * ILCode * ILSourceMarker option -> MethodBody val mkILCtor: ILMemberAccess * ILParameter list * MethodBody -> ILMethodDef val mkILClassCtor: MethodBody -> ILMethodDef val mkILNonGenericEmptyCtor: ILSourceMarker option -> ILType -> ILMethodDef val mkILStaticMethod: ILGenericParameterDefs * string * ILMemberAccess * ILParameter list * ILReturn * MethodBody -> ILMethodDef val mkILNonGenericStaticMethod: string * ILMemberAccess * ILParameter list * ILReturn * MethodBody -> ILMethodDef val mkILGenericVirtualMethod: string * ILMemberAccess * ILGenericParameterDefs * ILParameter list * ILReturn * MethodBody -> ILMethodDef val mkILGenericNonVirtualMethod: string * ILMemberAccess * ILGenericParameterDefs * ILParameter list * ILReturn * MethodBody -> ILMethodDef val mkILNonGenericVirtualMethod: string * ILMemberAccess * ILParameter list * ILReturn * MethodBody -> ILMethodDef val mkILNonGenericInstanceMethod: string * ILMemberAccess * ILParameter list * ILReturn * MethodBody -> ILMethodDef /// Make field definitions val mkILInstanceField: string * ILType * ILFieldInit option * ILMemberAccess -> ILFieldDef val mkILStaticField: string * ILType * ILFieldInit option * byte[] option * ILMemberAccess -> ILFieldDef val mkILLiteralField: string * ILType * ILFieldInit * byte[] option * ILMemberAccess -> ILFieldDef /// Make a type definition val mkILGenericClass: string * ILTypeDefAccess * ILGenericParameterDefs * ILType * ILType list * ILMethodDefs * ILFieldDefs * ILTypeDefs * ILPropertyDefs * ILEventDefs * ILAttributes * ILTypeInit -> ILTypeDef val mkILSimpleClass: ILGlobals -> string * ILTypeDefAccess * ILMethodDefs * ILFieldDefs * ILTypeDefs * ILPropertyDefs * ILEventDefs * ILAttributes * ILTypeInit -> ILTypeDef val mkILTypeDefForGlobalFunctions: ILGlobals -> ILMethodDefs * ILFieldDefs -> ILTypeDef /// Make a type definition for a value type used to point to raw data. /// These are useful when generating array initialization code /// according to the /// ldtoken field valuetype ''/'$$struct0x6000127-1' ''::'$$method0x6000127-1' /// call void System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray(class System.Array,valuetype System.RuntimeFieldHandle) /// idiom. val mkRawDataValueTypeDef: ILGlobals -> string * size:int32 * pack:uint16 -> ILTypeDef /// Injecting code into existing code blocks. A branch will /// be added from the given instructions to the (unique) entry of /// the code, and the first instruction will be the new entry /// of the method. The instructions should be non-branching. val prependInstrsToCode: ILInstr list -> ILCode -> ILCode val prependInstrsToMethod: ILInstr list -> ILMethodDef -> ILMethodDef /// Injecting initialization code into a class. /// Add some code to the end of the .cctor for a type. Create a .cctor /// if one doesn't exist already. val prependInstrsToClassCtor: ILInstr list -> ILSourceMarker option -> ILTypeDef -> ILTypeDef /// Derived functions for making some simple constructors val mkILStorageCtor: ILSourceMarker option * ILInstr list * ILType * (string * ILType) list * ILMemberAccess -> ILMethodDef val mkILSimpleStorageCtor: ILSourceMarker option * ILTypeSpec option * ILType * (string * ILType) list * ILMemberAccess -> ILMethodDef val mkILSimpleStorageCtorWithParamNames: ILSourceMarker option * ILTypeSpec option * ILType * (string * string * ILType) list * ILMemberAccess -> ILMethodDef val mkILDelegateMethods: ILGlobals -> ILParameter list * ILReturn -> ILMethodDef list /// Given a delegate type definition which lies in a particular scope, /// make a reference to its constructor val mkCtorMethSpecForDelegate: ILGlobals -> ILType * bool -> ILMethodSpec /// The toplevel "class" for a module or assembly. val mkILTypeForGlobalFunctions: ILScopeRef -> ILType /// Making tables of custom attributes, etc. val mkILCustomAttrs: ILAttribute list -> ILAttributes val mkILComputedCustomAttrs: (unit -> ILAttribute list) -> ILAttributes val emptyILCustomAttrs: ILAttributes val mkILSecurityDecls: ILPermission list -> ILPermissions val mkILLazySecurityDecls: Lazy -> ILPermissions val emptyILSecurityDecls: ILPermissions val mkMethBodyAux : MethodBody -> ILLazyMethodBody val mkMethBodyLazyAux : Lazy -> ILLazyMethodBody val mkILEvents: ILEventDef list -> ILEventDefs val mkILEventsLazy: Lazy -> ILEventDefs val emptyILEvents: ILEventDefs val mkILProperties: ILPropertyDef list -> ILPropertyDefs val mkILPropertiesLazy: Lazy -> ILPropertyDefs val emptyILProperties: ILPropertyDefs val mkILMethods: ILMethodDef list -> ILMethodDefs val mkILMethodsLazy: Lazy -> ILMethodDefs val addILMethod: ILMethodDef -> ILMethodDefs -> ILMethodDefs val emptyILMethods: ILMethodDefs val mkILFields: ILFieldDef list -> ILFieldDefs val mkILFieldsLazy: Lazy -> ILFieldDefs val emptyILFields: ILFieldDefs val mkILMethodImpls: ILMethodImplDef list -> ILMethodImplDefs val mkILMethodImplsLazy: Lazy -> ILMethodImplDefs val emptyILMethodImpls: ILMethodImplDefs val mkILTypeDefs: ILTypeDef list -> ILTypeDefs val emptyILTypeDefs: ILTypeDefs /// Create table of types which is loaded/computed on-demand, and whose individual /// elements are also loaded/computed on-demand. Any call to tdefs.AsList will /// result in the laziness being forced. Operations can examine the /// custom attributes and name of each type in order to decide whether /// to proceed with examining the other details of the type. /// /// Note that individual type definitions may contain further delays /// in their method, field and other tables. val mkILTypeDefsLazy: Lazy<(string list * string * ILAttributes * Lazy) list> -> ILTypeDefs val addILTypeDef: ILTypeDef -> ILTypeDefs -> ILTypeDefs val mkILNestedExportedTypes: ILNestedExportedType list -> ILNestedExportedTypes val mkILNestedExportedTypesLazy: Lazy -> ILNestedExportedTypes val mkILExportedTypes: ILExportedTypeOrForwarder list -> ILExportedTypesAndForwarders val mkILExportedTypesLazy: Lazy -> ILExportedTypesAndForwarders val mkILResources: ILResource list -> ILResources val mkILResourcesLazy: Lazy -> ILResources /// Making modules val mkILSimpleModule: assemblyName:string -> moduleName:string -> dll:bool -> subsystemVersion : (int * int) -> useHighEntropyVA : bool -> ILTypeDefs -> int32 option -> string option -> int -> ILExportedTypesAndForwarders -> string -> ILModuleDef /// Generate references to existing type definitions, method definitions /// etc. Useful for generating references, e.g. to a class we're processing /// Also used to reference type definitions that we've generated. [ILScopeRef] /// is normally ILScopeRef.Local, unless we've generated the ILTypeDef in /// an auxiliary module or are generating multiple assemblies at /// once. val mkRefForNestedILTypeDef : ILScopeRef -> ILTypeDef list * ILTypeDef -> ILTypeRef val mkRefForILMethod : ILScopeRef -> ILTypeDef list * ILTypeDef -> ILMethodDef -> ILMethodRef val mkRefForILField : ILScopeRef -> ILTypeDef list * ILTypeDef -> ILFieldDef -> ILFieldRef val mkRefToILMethod: ILTypeRef * ILMethodDef -> ILMethodRef val mkRefToILField: ILTypeRef * ILFieldDef -> ILFieldRef val mkRefToILAssembly: ILAssemblyManifest -> ILAssemblyRef val mkRefToILModule: ILModuleDef -> ILModuleRef // -------------------------------------------------------------------- // Rescoping. // // Given an object O1 referenced from where1 (e.g. O1 binds to some // result R when referenced from where1), and given that SR2 resolves to where1 from where2, // produce a new O2 for use from where2 (e.g. O2 binds to R from where2) // // So, ILScopeRef tells you how to reference the original scope from // the new scope. e.g. if ILScopeRef is: // [ILScopeRef.Local] then the object is returned unchanged // [ILScopeRef.Module m] then an object is returned // where all ILScopeRef.Local references // become ILScopeRef.Module m // [ILScopeRef.Assembly m] then an object is returned // where all ILScopeRef.Local and ILScopeRef.Module references // become ILScopeRef.Assembly m // -------------------------------------------------------------------- /// Rescoping. The first argument tells the function how to reference the original scope from /// the new scope. val rescopeILScopeRef: ILScopeRef -> ILScopeRef -> ILScopeRef /// Rescoping. The first argument tells the function how to reference the original scope from /// the new scope. val rescopeILTypeSpec: ILScopeRef -> ILTypeSpec -> ILTypeSpec /// Rescoping. The first argument tells the function how to reference the original scope from /// the new scope. val rescopeILType: ILScopeRef -> ILType -> ILType /// Rescoping. The first argument tells the function how to reference the original scope from /// the new scope. val rescopeILMethodRef: ILScopeRef -> ILMethodRef -> ILMethodRef /// Rescoping. The first argument tells the function how to reference the original scope from /// the new scope. val rescopeILFieldRef: ILScopeRef -> ILFieldRef -> ILFieldRef //----------------------------------------------------------------------- // The ILCode Builder utility. //---------------------------------------------------------------------- [] type ILExceptionClause = | Finally of (ILCodeLabel * ILCodeLabel) | Fault of (ILCodeLabel * ILCodeLabel) | FilterCatch of (ILCodeLabel * ILCodeLabel) * (ILCodeLabel * ILCodeLabel) | TypeCatch of ILType * (ILCodeLabel * ILCodeLabel) type ILExceptionSpec = { exnRange: (ILCodeLabel * ILCodeLabel); exnClauses: ILExceptionClause list } type ILLocalSpec = { locRange: (ILCodeLabel * ILCodeLabel); locInfos: ILDebugMapping list } /// buildILCode: Build code from a sequence of instructions. /// /// e.g. "buildILCode meth resolver instrs exns locals" /// /// This makes the basic block structure of code from more primitive /// information, i.e. an array of instructions. /// [meth]: for debugging and should give the name of the method. /// [resolver]: should return the instruction indexes referred to /// by code-label strings in the instruction stream. /// [instrs]: the instructions themselves, perhaps with attributes giving /// debugging information /// [exns]: the table of exception-handling specifications /// for the method. These are again given with respect to labels which will /// be mapped to pc's by [resolver]. /// [locals]: the table of specifications of when local variables are live and /// should appear in the debug info. /// /// If the input code is well-formed, the function will returns the /// chop up the instruction sequence into basic blocks as required for /// the exception handlers and then return the tree-structured code /// corresponding to the instruction stream. /// A new set of code labels will be used throughout the resulting code. /// /// The input can be badly formed in many ways: exception handlers might /// overlap, or scopes of local variables may overlap badly with /// exception handlers. val buildILCode: string -> (ILCodeLabel -> int) -> ILInstr[] -> ILExceptionSpec list -> ILLocalSpec list -> ILCode // -------------------------------------------------------------------- // The instantiation utilities. // -------------------------------------------------------------------- /// Instantiate type variables that occur within types and other items. val instILTypeAux: int -> ILGenericArgs -> ILType -> ILType /// Instantiate type variables that occur within types and other items. val instILType: ILGenericArgs -> ILType -> ILType // -------------------------------------------------------------------- // ECMA globals // -------------------------------------------------------------------- /// This is a 'vendor neutral' way of referencing mscorlib. val ecmaPublicKey: PublicKey /// This is a 'vendor neutral' way of referencing mscorlib. val ecmaMscorlibScopeRef: ILScopeRef /// This is a 'vendor neutral' collection of references to items in mscorlib. val ecmaILGlobals: ILGlobals /// Some commonly used methods val mkInitializeArrayMethSpec: ILGlobals -> ILMethodSpec val mkMscorlibExnNewobj: ILGlobals -> string -> ILInstr /// Some commonly used custom attibutes val mkDebuggableAttribute: ILGlobals -> bool (* debug tracking *) * bool (* disable JIT optimizations *) -> ILAttribute val mkDebuggableAttributeV2: ILGlobals -> bool (* jitTracking *) * bool (* ignoreSymbolStoreSequencePoints *) * bool (* disable JIT optimizations *) * bool (* enable EnC *) -> ILAttribute val mkCompilerGeneratedAttribute : ILGlobals -> ILAttribute val mkDebuggerNonUserCodeAttribute : ILGlobals -> ILAttribute val mkDebuggerStepThroughAttribute : ILGlobals -> ILAttribute val mkDebuggerHiddenAttribute : ILGlobals -> ILAttribute val mkDebuggerDisplayAttribute : ILGlobals -> string -> ILAttribute val mkDebuggerTypeProxyAttribute : ILGlobals -> ILType -> ILAttribute val mkDebuggerBrowsableNeverAttribute : ILGlobals -> ILAttribute val addMethodGeneratedAttrs : ILGlobals -> ILMethodDef -> ILMethodDef val addPropertyGeneratedAttrs : ILGlobals -> ILPropertyDef -> ILPropertyDef val addFieldGeneratedAttrs : ILGlobals -> ILFieldDef -> ILFieldDef val addPropertyNeverAttrs : ILGlobals -> ILPropertyDef -> ILPropertyDef val addFieldNeverAttrs : ILGlobals -> ILFieldDef -> ILFieldDef /// Discriminating different important built-in types val isILObjectTy: ILGlobals -> ILType -> bool val isILStringTy: ILGlobals -> ILType -> bool val isILSByteTy: ILGlobals -> ILType -> bool val isILByteTy: ILGlobals -> ILType -> bool val isILInt16Ty: ILGlobals -> ILType -> bool val isILUInt16Ty: ILGlobals -> ILType -> bool val isILInt32Ty: ILGlobals -> ILType -> bool val isILUInt32Ty: ILGlobals -> ILType -> bool val isILInt64Ty: ILGlobals -> ILType -> bool val isILUInt64Ty: ILGlobals -> ILType -> bool val isILIntPtrTy: ILGlobals -> ILType -> bool val isILUIntPtrTy: ILGlobals -> ILType -> bool val isILBoolTy: ILGlobals -> ILType -> bool val isILCharTy: ILGlobals -> ILType -> bool val isILTypedReferenceTy: ILGlobals -> ILType -> bool val isILDoubleTy: ILGlobals -> ILType -> bool val isILSingleTy: ILGlobals -> ILType -> bool /// Get a public key token from a public key. val sha1HashBytes : byte[] -> byte[] (* SHA1 hash *) /// Get a version number from a CLR version string, e.g. 1.0.3705.0 val parseILVersion: string -> ILVersionInfo val formatILVersion: ILVersionInfo -> string val compareILVersions: ILVersionInfo -> ILVersionInfo -> int /// Decompose a type definition according to its kind. type ILEnumInfo = { enumValues: (string * ILFieldInit) list; enumType: ILType } val getTyOfILEnumInfo: ILEnumInfo -> ILType val computeILEnumInfo: string * ILFieldDefs -> ILEnumInfo // -------------------------------------------------------------------- // For completeness. These do not occur in metadata but tools that // care about the existence of properties and events in the metadata // can benefit from them. // -------------------------------------------------------------------- [] type ILEventRef = static member Create : ILTypeRef * string -> ILEventRef member EnclosingTypeRef: ILTypeRef member Name: string [] type ILPropertyRef = static member Create : ILTypeRef * string -> ILPropertyRef member EnclosingTypeRef: ILTypeRef member Name: string interface System.IComparable val runningOnMono: bool type ILReferences = { AssemblyReferences: ILAssemblyRef list; ModuleReferences: ILModuleRef list; } /// Find the full set of assemblies referenced by a module val computeILRefs: ILModuleDef -> ILReferences val emptyILRefs: ILReferences // -------------------------------------------------------------------- // The following functions are used to define an extension to the In reality the only extension is ILX type ILTypeDefKindExtension<'Extension> = TypeDefKindExtension val RegisterTypeDefKindExtension: ILTypeDefKindExtension<'Extension> -> ('Extension -> IlxExtensionTypeKind) * (IlxExtensionTypeKind -> bool) * (IlxExtensionTypeKind -> 'Extension) fsharp-3.0.34/src/absil/ilwrite.fs0000775000175000017500000066351512260314606016005 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.ILBinaryWriter open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL #if SILVERLIGHT #else open Microsoft.FSharp.Compiler.AbstractIL.ILAsciiWriter #endif open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.BinaryConstants open Microsoft.FSharp.Compiler.AbstractIL.Internal.Support open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.DiagnosticMessage open Microsoft.FSharp.Compiler.ErrorLogger open Microsoft.FSharp.Compiler.Range open System.Collections.Generic open System.IO #if DEBUG let showEntryLookups = false #endif //--------------------------------------------------------------------- // Library //--------------------------------------------------------------------- let reportTime = #if SILVERLIGHT (fun _ _ -> ()) #else let tFirst = ref None let tPrev = ref None fun showTimes descr -> if showTimes then let t = System.Diagnostics.Process.GetCurrentProcess().UserProcessorTime.TotalSeconds let prev = match !tPrev with None -> 0.0 | Some t -> t let first = match !tFirst with None -> (tFirst := Some t; t) | Some t -> t dprintf "ilwrite: TIME %10.3f (total) %10.3f (delta) - %s\n" (t - first) (t - prev) descr; tPrev := Some t #endif //--------------------------------------------------------------------- // Byte, byte array fragments and other concrete representations // manipulations. //--------------------------------------------------------------------- // Little-endian encoding of int32 let b0 n = byte (n &&& 0xFF) let b1 n = byte ((n >>> 8) &&& 0xFF) let b2 n = byte ((n >>> 16) &&& 0xFF) let b3 n = byte ((n >>> 24) &&& 0xFF) // Little-endian encoding of int64 let dw7 n = byte ((n >>> 56) &&& 0xFFL) let dw6 n = byte ((n >>> 48) &&& 0xFFL) let dw5 n = byte ((n >>> 40) &&& 0xFFL) let dw4 n = byte ((n >>> 32) &&& 0xFFL) let dw3 n = byte ((n >>> 24) &&& 0xFFL) let dw2 n = byte ((n >>> 16) &&& 0xFFL) let dw1 n = byte ((n >>> 8) &&& 0xFFL) let dw0 n = byte (n &&& 0xFFL) let bitsOfSingle (x:float32) = System.BitConverter.ToInt32(System.BitConverter.GetBytes(x),0) let bitsOfDouble (x:float) = System.BitConverter.DoubleToInt64Bits(x) let emitBytesViaBuffer f = let bb = ByteBuffer.Create 10 in f bb; bb.Close() /// Alignment and padding let align alignment n = ((n + alignment - 1) / alignment) * alignment //--------------------------------------------------------------------- // Concrete token representations etc. used in PE files //--------------------------------------------------------------------- type ByteBuffer with /// Z32 = compressed unsigned integer static member Z32Size n = if n <= 0x7F then 1 elif n <= 0x3FFF then 2 else 4 /// Emit int32 as compressed unsigned integer member buf.EmitZ32 n = if n >= 0 && n <= 0x7F then buf.EmitIntAsByte n elif n >= 0x80 && n <= 0x3FFF then buf.EmitIntAsByte (0x80 ||| (n >>> 8)); buf.EmitIntAsByte (n &&& 0xFF) else buf.EmitIntAsByte (0xc0l ||| ((n >>> 24) &&& 0xFF)); buf.EmitIntAsByte ( (n >>> 16) &&& 0xFF); buf.EmitIntAsByte ( (n >>> 8) &&& 0xFF); buf.EmitIntAsByte ( n &&& 0xFF) member buf.EmitPadding n = for i = 0 to n-1 do buf.EmitByte 0x0uy // Emit compressed untagged integer member buf.EmitZUntaggedIndex big idx = if big then buf.EmitInt32 idx elif idx > 0xffff then failwith "EmitZUntaggedIndex: too big for small address or simple index" else buf.EmitInt32AsUInt16 idx // Emit compressed tagged integer member buf.EmitZTaggedIndex tag nbits big idx = let idx2 = (idx <<< nbits) ||| tag if big then buf.EmitInt32 idx2 else buf.EmitInt32AsUInt16 idx2 let getUncodedToken (tab:TableName) idx = ((tab.Index <<< 24) ||| idx) // From ECMA for UserStrings: // This final byte holds the value 1 if and only if any UTF16 character within the string has any bit set in its top byte, or its low byte is any of the following: // 0x01–0x08, 0x0E–0x1F, 0x27, 0x2D, // 0x7F. Otherwise, it holds 0. The 1 signifies Unicode characters that require handling beyond that normally provided for 8-bit encoding sets. // HOWEVER, there is a discrepancy here between the ECMA spec and the Microsoft C# implementation. The code below follows the latter. We’ve raised the issue with both teams. See Dev10 bug 850073 for details. let markerForUnicodeBytes (b:byte[]) = let len = b.Length let rec scan i = i < len/2 && (let b1 = Bytes.get b (i*2) let b2 = Bytes.get b (i*2+1) (b2 <> 0) || (b1 >= 0x01 && b1 <= 0x08) // as per ECMA and C# || (b1 >= 0xE && b1 <= 0x1F) // as per ECMA and C# || (b1 = 0x27) // as per ECMA and C# || (b1 = 0x2D) // as per ECMA and C# || (b1 > 0x7F) // as per C# (but ECMA omits this) || scan (i+1)) let marker = if scan 0 then 0x01 else 0x00 marker // -------------------------------------------------------------------- // Fixups // -------------------------------------------------------------------- /// Check that the data held at a fixup is some special magic value, as a sanity check /// to ensure the fixup is being placed at a ood lcoation. let checkFixup32 (data: byte[]) offset exp = if data.[offset + 3] <> b3 exp then failwith "fixup sanity check failed"; if data.[offset + 2] <> b2 exp then failwith "fixup sanity check failed"; if data.[offset + 1] <> b1 exp then failwith "fixup sanity check failed"; if data.[offset] <> b0 exp then failwith "fixup sanity check failed" let applyFixup32 (data:byte[]) offset v = data.[offset] <- b0 v; data.[offset+1] <- b1 v; data.[offset+2] <- b2 v; data.[offset+3] <- b3 v // -------------------------------------------------------------------- // PDB data // -------------------------------------------------------------------- type PdbDocumentData = ILSourceDocument type PdbLocalVar = { Name: string; Signature: byte[]; /// the local index the name corresponds to Index: int32 } type PdbMethodScope = { Children: PdbMethodScope array; StartOffset: int; EndOffset: int; Locals: PdbLocalVar array; (* REVIEW open_namespaces: pdb_namespace array; *) } type PdbSourceLoc = { Document: int; Line: int; Column: int; } type PdbSequencePoint = { Document: int; Offset: int; Line: int; Column: int; EndLine: int; EndColumn: int; } override x.ToString() = sprintf "(%d,%d)-(%d,%d)" x.Line x.Column x.EndLine x.EndColumn type PdbMethodData = { MethToken: int32; MethName:string; Params: PdbLocalVar array; RootScope: PdbMethodScope; Range: (PdbSourceLoc * PdbSourceLoc) option; SequencePoints: PdbSequencePoint array; } module SequencePoint = let orderBySource sp1 sp2 = let c1 = compare sp1.Document sp2.Document if c1 <> 0 then c1 else let c1 = compare sp1.Line sp2.Line if c1 <> 0 then c1 else compare sp1.Column sp2.Column let orderByOffset sp1 sp2 = compare sp1.Offset sp2.Offset /// 28 is the size of the IMAGE_DEBUG_DIRECTORY in ntimage.h let sizeof_IMAGE_DEBUG_DIRECTORY = 28 [] type PdbData = { EntryPoint: int32 option; // MVID of the generated .NET module (used by MDB files to identify debug info) ModuleID: byte[]; Documents: PdbDocumentData[]; Methods: PdbMethodData[] } //--------------------------------------------------------------------- // PDB Writer. The function [WritePdbInfo] abstracts the // imperative calls to the Symbol Writer API. //--------------------------------------------------------------------- #if SILVERLIGHT #else let WritePdbInfo fixupOverlappingSequencePoints showTimes f fpdb info = (try FileSystem.FileDelete fpdb with _ -> ()); let pdbw = ref Unchecked.defaultof try pdbw := pdbInitialize f fpdb with _ -> error(Error(FSComp.SR.ilwriteErrorCreatingPdb(fpdb), rangeCmdArgs)) match info.EntryPoint with | None -> () | Some x -> pdbSetUserEntryPoint !pdbw x let docs = info.Documents |> Array.map (fun doc -> pdbDefineDocument !pdbw doc.File) let getDocument i = if i < 0 || i > docs.Length then failwith "getDocument: bad doc number"; docs.[i] reportTime showTimes (sprintf "PDB: Defined %d documents" info.Documents.Length); Array.sortInPlaceBy (fun x -> x.MethToken) info.Methods; reportTime showTimes (sprintf "PDB: Sorted %d methods" info.Methods.Length); // This next bit is a workaround. The sequence points we get // from F# (which has nothing to do with this module) are actually expression // marks, i.e. the source ranges they denote are typically // nested, and each point indicates where the // code for an expression with a particular range begins. // This is in many ways a much more convenient form to emit. // However, it is not the form that debug tools accept nicely. // However, sequence points are really a non-overlapping, non-nested // partition of the source code of a method. So here we shorten the // length of all sequence point marks so they do not go further than // the next sequence point in the source. let spCounts = info.Methods |> Array.map (fun x -> x.SequencePoints.Length) let allSps = Array.concat (Array.map (fun x -> x.SequencePoints) info.Methods |> Array.toList) let allSps = Array.mapi (fun i sp -> (i,sp)) allSps if fixupOverlappingSequencePoints then // sort the sequence points into source order Array.sortInPlaceWith (fun (_,sp1) (_,sp2) -> SequencePoint.orderBySource sp1 sp2) allSps; // shorten the ranges of any that overlap with following sequence points // sort the sequence points back into offset order for i = 0 to Array.length allSps - 2 do let n,sp1 = allSps.[i] let _,sp2 = allSps.[i+1] if (sp1.Document = sp2.Document) && (sp1.EndLine > sp2.Line || (sp1.EndLine = sp2.Line && sp1.EndColumn >= sp2.Column)) then let adjustToPrevLine = (sp1.Line < sp2.Line) allSps.[i] <- n,{sp1 with EndLine = (if adjustToPrevLine then sp2.Line-1 else sp2.Line); EndColumn = (if adjustToPrevLine then 80 else sp2.Column); } Array.sortInPlaceBy fst allSps; let spOffset = ref 0 info.Methods |> Array.iteri (fun i minfo -> let sps = Array.sub allSps !spOffset spCounts.[i] spOffset := !spOffset + spCounts.[i]; begin match minfo.Range with | None -> () | Some (a,b) -> pdbOpenMethod !pdbw minfo.MethToken; pdbSetMethodRange !pdbw (getDocument a.Document) a.Line a.Column (getDocument b.Document) b.Line b.Column; // Partition the sequence points by document let spsets = let res = (Map.empty : Map) let add res (_,sp) = let k = sp.Document match Map.tryFind k res with Some xsR -> xsR := sp :: !xsR; res | None -> Map.add k (ref [sp]) res let res = Array.fold add res sps let res = Map.toList res // ordering may not be stable List.map (fun (_,x) -> Array.ofList !x) res spsets |> List.iter (fun spset -> if spset.Length > 0 then Array.sortInPlaceWith SequencePoint.orderByOffset spset; let sps = spset |> Array.map (fun sp -> // Ildiag.dprintf "token 0x%08lx has an sp at offset 0x%08x\n" minfo.MethToken sp.Offset; (sp.Offset, sp.Line, sp.Column,sp.EndLine, sp.EndColumn)) // Use of alloca in implementation of pdbDefineSequencePoints can give stack overflow here if sps.Length < 5000 then pdbDefineSequencePoints !pdbw (getDocument spset.[0].Document) sps;); // Write the scopes let rec writePdbScope top sco = if top || sco.Locals.Length <> 0 || sco.Children.Length <> 0 then pdbOpenScope !pdbw sco.StartOffset; sco.Locals |> Array.iter (fun v -> pdbDefineLocalVariable !pdbw v.Name v.Signature v.Index); sco.Children |> Array.iter (writePdbScope false); pdbCloseScope !pdbw sco.EndOffset; writePdbScope true minfo.RootScope; pdbCloseMethod !pdbw end); reportTime showTimes "PDB: Wrote methods"; let res = pdbGetDebugInfo !pdbw pdbClose !pdbw; reportTime showTimes "PDB: Closed"; res #endif //--------------------------------------------------------------------- // Support functions for calling 'Mono.CompilerServices.SymbolWriter' // assembly dynamically if it is available to the compiler //--------------------------------------------------------------------- open System.Reflection open Microsoft.FSharp.Reflection // Dynamic invoke operator. Implements simple overload resolution based // on the name and number of parameters only. // Supports the following cases: // obj?Foo() // call with no arguments // obj?Foo(1, "a") // call with two arguments (extracted from tuple) // NOTE: This doesn’t actually handle all overloads. It just picks first entry with right // number of arguments. let (?) this memb (args:'Args) : 'R = // Get array of 'obj' arguments for the reflection call let args = if typeof<'Args> = typeof then [| |] elif FSharpType.IsTuple typeof<'Args> then Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields(args) else [| box args |] // Get methods and perform overload resolution let methods = this.GetType().GetMethods() let bestMatch = methods |> Array.tryFind (fun mi -> mi.Name = memb && mi.GetParameters().Length = args.Length) match bestMatch with | Some(mi) -> unbox(mi.Invoke(this, args)) | None -> error(Error(FSComp.SR.ilwriteMDBMemberMissing(memb), rangeCmdArgs)) // Creating instances of needed classes from 'Mono.CompilerServices.SymbolWriter' assembly let monoCompilerSvc = "Mono.CompilerServices.SymbolWriter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" let ctor (asmName:string) (clsName:string) (args:obj[]) = let asm = Assembly.Load(asmName) let ty = asm.GetType(clsName) System.Activator.CreateInstance(ty, args) let createSourceMethodImpl (name:string) (token:int) (namespaceID:int) = ctor monoCompilerSvc "Mono.CompilerServices.SymbolWriter.SourceMethodImpl" [| box name; box token; box namespaceID |] let createWriter (f:string) = ctor monoCompilerSvc "Mono.CompilerServices.SymbolWriter.MonoSymbolWriter" [| box f |] //--------------------------------------------------------------------- // MDB Writer. Generate debug symbols using the MDB format //--------------------------------------------------------------------- let WriteMdbInfo fmdb f info = // Note, if we can’t delete it code will fail later (try FileSystem.FileDelete fmdb with _ -> ()); // Try loading the MDB symbol writer from an assembly available on Mono dynamically // Report an error if the assembly is not available. let wr = try createWriter f with e -> error(Error(FSComp.SR.ilwriteErrorCreatingMdb(), rangeCmdArgs)) // NOTE: MonoSymbolWriter doesn't need information about entrypoints, so 'info.EntryPoint' is unused here. // Write information about Documents. Returns '(SourceFileEntry*CompileUnitEntry)[]' let docs = [| for doc in info.Documents do let doc = wr?DefineDocument(doc.File) let unit = wr?DefineCompilationUnit(doc) yield doc, unit |] let getDocument i = if i < 0 || i >= Array.length docs then failwith "getDocument: bad doc number" else docs.[i] // Sort methods and write them to the MDB file Array.sortInPlaceBy (fun x -> x.MethToken) info.Methods for meth in info.Methods do // Creates an instance of 'SourceMethodImpl' which is a private class that implements 'IMethodDef' interface // We need this as an argument to 'OpenMethod' below. Using private class is ugly, but since we don't reference // the assembly, the only way to implement 'IMethodDef' interface would be dynamically using Reflection.Emit... let sm = createSourceMethodImpl meth.MethName meth.MethToken 0 match meth.Range with | Some(mstart, _) -> // NOTE: 'meth.Params' is not needed, Mono debugger apparently reads this from meta-data let _, cue = getDocument mstart.Document wr?OpenMethod(cue, 0, sm) |> ignore // Write sequence points for sp in meth.SequencePoints do wr?MarkSequencePoint(sp.Offset, cue?get_SourceFile(), sp.Line, sp.Column, false) // Walk through the tree of scopes and write all variables let rec writeScope (scope:PdbMethodScope) = wr?OpenScope(scope.StartOffset) |> ignore for local in scope.Locals do wr?DefineLocalVariable(local.Index, local.Name) for child in scope.Children do writeScope(child) wr?CloseScope(scope.EndOffset) writeScope(meth.RootScope) // Finished generating debug information for the curretn method wr?CloseMethod() | _ -> () // Finalize - MDB requires the MVID of the generated .NET module let moduleGuid = new System.Guid(info.ModuleID |> Array.map byte) wr?WriteSymbolFile(moduleGuid) //--------------------------------------------------------------------- // Dumps debug info into a text file for testing purposes //--------------------------------------------------------------------- open Printf let DumpDebugInfo (outfile:string) (info:PdbData) = use sw = new StreamWriter(outfile + ".debuginfo") fprintfn sw "ENTRYPOINT\r\n %b\r\n" info.EntryPoint.IsSome fprintfn sw "DOCUMENTS" for i, doc in Seq.zip [0 .. info.Documents.Length-1] info.Documents do fprintfn sw " [%d] %s" i doc.File fprintfn sw " Type: %A" doc.DocumentType fprintfn sw " Language: %A" doc.Language fprintfn sw " Vendor: %A" doc.Vendor // Sort methods (because they are sorted in PDBs/MDBs too) fprintfn sw "\r\nMETHODS" Array.sortInPlaceBy (fun x -> x.MethToken) info.Methods for meth in info.Methods do fprintfn sw " %s" meth.MethName fprintfn sw " Params: %A" [ for p in meth.Params -> sprintf "%d: %s" p.Index p.Name ] fprintfn sw " Range: %A" (meth.Range |> Option.map (fun (f, t) -> sprintf "[%d,%d:%d] - [%d,%d:%d]" f.Document f.Line f.Column t.Document t.Line t.Column)) fprintfn sw " Points:" for sp in meth.SequencePoints do fprintfn sw " - Doc: %d Offset:%d [%d:%d]-[%d-%d]" sp.Document sp.Offset sp.Line sp.Column sp.EndLine sp.EndColumn // Walk through the tree of scopes and write all variables fprintfn sw " Scopes:" let rec writeScope offs (scope:PdbMethodScope) = fprintfn sw " %s- [%d-%d]" offs scope.StartOffset scope.EndOffset if scope.Locals.Length > 0 then fprintfn sw " %s Locals: %A" offs [ for p in scope.Locals -> sprintf "%d: %s" p.Index p.Name ] for child in scope.Children do writeScope (offs + " ") child writeScope "" meth.RootScope fprintfn sw "" //--------------------------------------------------------------------- // Strong name signing //--------------------------------------------------------------------- #if SILVERLIGHT type ILStrongNameSigner = | NeverImplemented static member OpenPublicKeyFile (_s:string) = NeverImplemented static member OpenPublicKey (_pubkey:byte[]) = NeverImplemented static member OpenKeyPairFile (_s:string) = NeverImplemented static member OpenKeyContainer (_s:string) = NeverImplemented member s.Close() = () member s.IsFullySigned = true member s.PublicKey = [| |] member s.SignatureSize = 0x80 member s.SignFile _file = () #else type ILStrongNameSigner = | PublicKeySigner of Support.pubkey | KeyPair of Support.keyPair | KeyContainer of Support.keyContainerName static member OpenPublicKeyFile s = PublicKeySigner(Support.signerOpenPublicKeyFile s) static member OpenPublicKey pubkey = PublicKeySigner(pubkey) static member OpenKeyPairFile s = KeyPair(Support.signerOpenKeyPairFile s) static member OpenKeyContainer s = KeyContainer(s) member s.Close() = match s with | PublicKeySigner _ | KeyPair _ -> () | KeyContainer containerName -> Support.signerCloseKeyContainer(containerName) member s.IsFullySigned = match s with | PublicKeySigner _ -> false | KeyPair _ | KeyContainer _ -> true member s.PublicKey = match s with | PublicKeySigner p -> p | KeyPair kp -> Support.signerGetPublicKeyForKeyPair kp | KeyContainer kn -> Support.signerGetPublicKeyForKeyContainer kn member s.SignatureSize = try Support.signerSignatureSize(s.PublicKey) with e -> failwith ("A call to StrongNameSignatureSize failed ("+e.Message+")"); 0x80 member s.SignFile file = match s with | PublicKeySigner _ -> () | KeyPair kp -> Support.signerSignFileWithKeyPair file kp | KeyContainer kn -> Support.signerSignFileWithKeyContainer file kn #endif //--------------------------------------------------------------------- // TYPES FOR TABLES //--------------------------------------------------------------------- module RowElementTags = let [] UShort = 0 let [] ULong = 1 let [] Data = 2 let [] DataResources = 3 let [] Guid = 4 let [] Blob = 5 let [] String = 6 let [] SimpleIndexMin = 7 let SimpleIndex (t : TableName) = assert (t.Index <= 112); SimpleIndexMin + t.Index let [] SimpleIndexMax = 119 let [] TypeDefOrRefOrSpecMin = 120 let TypeDefOrRefOrSpec (t: TypeDefOrRefTag) = assert (t.Tag <= 2); TypeDefOrRefOrSpecMin + t.Tag (* + 111 + 1 = 0x70 + 1 = max TableName.Tndex + 1 *) let [] TypeDefOrRefOrSpecMax = 122 let [] TypeOrMethodDefMin = 123 let TypeOrMethodDef (t: TypeOrMethodDefTag) = assert (t.Tag <= 1); TypeOrMethodDefMin + t.Tag (* + 2 + 1 = max TypeDefOrRefOrSpec.Tag + 1 *) let [] TypeOrMethodDefMax = 124 let [] HasConstantMin = 125 let HasConstant (t: HasConstantTag) = assert (t.Tag <= 2); HasConstantMin + t.Tag (* + 1 + 1 = max TypeOrMethodDef.Tag + 1 *) let [] HasConstantMax = 127 let [] HasCustomAttributeMin = 128 let HasCustomAttribute (t: HasCustomAttributeTag) = assert (t.Tag <= 21); HasCustomAttributeMin + t.Tag (* + 2 + 1 = max HasConstant.Tag + 1 *) let [] HasCustomAttributeMax = 149 let [] HasFieldMarshalMin = 150 let HasFieldMarshal (t: HasFieldMarshalTag) = assert (t.Tag <= 1); HasFieldMarshalMin + t.Tag (* + 21 + 1 = max HasCustomAttribute.Tag + 1 *) let [] HasFieldMarshalMax = 151 let [] HasDeclSecurityMin = 152 let HasDeclSecurity (t: HasDeclSecurityTag) = assert (t.Tag <= 2); HasDeclSecurityMin + t.Tag (* + 1 + 1 = max HasFieldMarshal.Tag + 1 *) let [] HasDeclSecurityMax = 154 let [] MemberRefParentMin = 155 let MemberRefParent (t: MemberRefParentTag) = assert (t.Tag <= 4); MemberRefParentMin + t.Tag (* + 2 + 1 = max HasDeclSecurity.Tag + 1 *) let [] MemberRefParentMax = 159 let [] HasSemanticsMin = 160 let HasSemantics (t: HasSemanticsTag) = assert (t.Tag <= 1); HasSemanticsMin + t.Tag (* + 4 + 1 = max MemberRefParent.Tag + 1 *) let [] HasSemanticsMax = 161 let [] MethodDefOrRefMin = 162 let MethodDefOrRef (t: MethodDefOrRefTag) = assert (t.Tag <= 2); MethodDefOrRefMin + t.Tag (* + 1 + 1 = max HasSemantics.Tag + 1 *) let [] MethodDefOrRefMax = 164 let [] MemberForwardedMin = 165 let MemberForwarded (t: MemberForwardedTag) = assert (t.Tag <= 1); MemberForwardedMin + t.Tag (* + 2 + 1 = max MethodDefOrRef.Tag + 1 *) let [] MemberForwardedMax = 166 let [] ImplementationMin = 167 let Implementation (t: ImplementationTag) = assert (t.Tag <= 2); ImplementationMin + t.Tag (* + 1 + 1 = max MemberForwarded.Tag + 1 *) let [] ImplementationMax = 169 let [] CustomAttributeTypeMin = 170 let CustomAttributeType (t: CustomAttributeTypeTag) = assert (t.Tag <= 3); CustomAttributeTypeMin + t.Tag (* + 2 + 1 = max Implementation.Tag + 1 *) let [] CustomAttributeTypeMax = 173 let [] ResolutionScopeMin = 174 let ResolutionScope (t: ResolutionScopeTag) = assert (t.Tag <= 4); ResolutionScopeMin + t.Tag (* + 3 + 1 = max CustomAttributeType.Tag + 1 *) let [] ResolutionScopeMax = 178 [] type RowElement(tag:int32, idx: int32) = member x.Tag = tag member x.Val = idx // These create RowElements let UShort (x:uint16) = RowElement(RowElementTags.UShort, int32 x) let ULong (x:int32) = RowElement(RowElementTags.ULong, x) /// Index into cenv.data or cenv.resources. Gets fixed up later once we known an overall /// location for the data section. flag indicates if offset is relative to cenv.resources. let Data (x:int, k:bool) = RowElement((if k then RowElementTags.DataResources else RowElementTags.Data ), x) /// pos. in guid array let Guid (x:int) = RowElement(RowElementTags.Guid, x) /// pos. in blob array let Blob (x:int) = RowElement(RowElementTags.Blob, x) /// pos. in string array let StringE (x:int) = RowElement(RowElementTags.String, x) /// pos. in some table let SimpleIndex (t, x:int) = RowElement(RowElementTags.SimpleIndex t, x) let TypeDefOrRefOrSpec (t, x:int) = RowElement(RowElementTags.TypeDefOrRefOrSpec t, x) let TypeOrMethodDef (t, x:int) = RowElement(RowElementTags.TypeOrMethodDef t, x) let HasConstant (t, x:int) = RowElement(RowElementTags.HasConstant t, x) let HasCustomAttribute (t, x:int) = RowElement(RowElementTags.HasCustomAttribute t, x) let HasFieldMarshal (t, x:int) = RowElement(RowElementTags.HasFieldMarshal t, x) let HasDeclSecurity (t, x:int) = RowElement(RowElementTags.HasDeclSecurity t, x) let MemberRefParent (t, x:int) = RowElement(RowElementTags.MemberRefParent t, x) let HasSemantics (t, x:int) = RowElement(RowElementTags.HasSemantics t, x) let MethodDefOrRef (t, x:int) = RowElement(RowElementTags.MethodDefOrRef t, x) let MemberForwarded (t, x:int) = RowElement(RowElementTags.MemberForwarded t, x) let Implementation (t, x:int) = RowElement(RowElementTags.Implementation t, x) let CustomAttributeType (t, x:int) = RowElement(RowElementTags.CustomAttributeType t, x) let ResolutionScope (t, x:int) = RowElement(RowElementTags.ResolutionScope t, x) (* type RowElement = | UShort of uint16 | ULong of int32 | Data of int * bool // Index into cenv.data or cenv.resources. Will be adjusted later in writing once we fix an overall location for the data section. flag indicates if offset is relative to cenv.resources. | Guid of int // pos. in guid array | Blob of int // pos. in blob array | String of int // pos. in string array | SimpleIndex of TableName * int // pos. in some table | TypeDefOrRefOrSpec of TypeDefOrRefTag * int | TypeOrMethodDef of TypeOrMethodDefTag * int | HasConstant of HasConstantTag * int | HasCustomAttribute of HasCustomAttributeTag * int | HasFieldMarshal of HasFieldMarshalTag * int | HasDeclSecurity of HasDeclSecurityTag * int | MemberRefParent of MemberRefParentTag * int | HasSemantics of HasSemanticsTag * int | MethodDefOrRef of MethodDefOrRefTag * int | MemberForwarded of MemberForwardedTag * int | Implementation of ImplementationTag * int | CustomAttributeType of CustomAttributeTypeTag * int | ResolutionScope of ResolutionScopeTag * int *) type BlobIndex = int type StringIndex = int let BlobIndex (x:BlobIndex) : int = x let StringIndex (x:StringIndex) : int = x /// Abstract, general type of metadata table rows type IGenericRow = abstract GetGenericRow : unit -> RowElement[] /// Shared rows are used for the ILTypeRef, ILMethodRef, ILMethodSpec, etc. tables /// where entries can be shared and need to be made unique through hash-cons'ing type ISharedRow = inherit IGenericRow /// This is the representation of shared rows is used for most shared row types. /// Rows ILAssemblyRef and ILMethodRef are very common and are given their own /// representations. type SimpleSharedRow(elems: RowElement[]) = let hashCode = hash elems // precompute to give more efficient hashing and equality comparisons interface ISharedRow with member x.GetGenericRow() = elems member x.GenericRow = elems override x.GetHashCode() = hashCode override x.Equals(obj:obj) = match obj with | :? SimpleSharedRow as y -> elems = y.GenericRow | _ -> false let inline combineHash x2 acc = 37 * acc + x2 // (acc <<< 6 + acc >>> 2 + x2 + 0x9e3779b9) let hashRow (elems:RowElement[]) = let mutable acc = 0 for i in 0 .. elems.Length - 1 do acc <- (acc <<< 1) + elems.[i].Tag + elems.[i].Val + 631 acc let equalRows (elems:RowElement[]) (elems2:RowElement[]) = if elems.Length <> elems2.Length then false else let mutable ok = true let n = elems.Length let mutable i = 0 while ok && i < n do if elems.[i].Tag <> elems2.[i].Tag || elems.[i].Val <> elems2.[i].Val then ok <- false i <- i + 1 ok /// Unshared rows are used for definitional tables where elements do not need to be made unique /// e.g. ILMethodDef and ILTypeDef. Most tables are like this. We don't precompute a /// hash code for these rows, and indeed the GetHashCode and Equals should not be needed. type UnsharedRow(elems: RowElement[]) = interface IGenericRow with member x.GetGenericRow() = elems member x.GenericRow = elems override x.GetHashCode() = hashRow elems override x.Equals(obj:obj) = match obj with | :? UnsharedRow as y -> equalRows elems y.GenericRow | _ -> false /// Special representation for ILAssemblyRef rows with pre-computed hash type AssemblyRefRow(s1,s2,s3,s4,l1,b1,nameIdx,str2,b2) = let hashCode = hash nameIdx let genericRow = [| UShort s1; UShort s2; UShort s3; UShort s4; ULong l1; Blob b1; StringE nameIdx; StringE str2; Blob b2 |] interface ISharedRow with member x.GetGenericRow() = genericRow member x.GenericRow = genericRow override x.GetHashCode() = hashCode override x.Equals(obj:obj) = match obj with | :? AssemblyRefRow as y -> equalRows genericRow y.GenericRow | _ -> false /// Special representation of a very common kind of row with pre-computed hash type MemberRefRow(mrp:RowElement,nmIdx:StringIndex,blobIdx:BlobIndex) = let hash = combineHash (hash blobIdx) (combineHash (hash nmIdx) (hash mrp)) let genericRow = [| mrp; StringE nmIdx; Blob blobIdx |] interface ISharedRow with member x.GetGenericRow() = genericRow member x.GenericRow = genericRow override x.GetHashCode() = hash override x.Equals(obj:obj) = match obj with | :? MemberRefRow as y -> equalRows genericRow y.GenericRow | _ -> false //===================================================================== //===================================================================== // IL --> TABLES+CODE //===================================================================== //===================================================================== // This environment keeps track of how many generic parameters are in scope. // This lets us translate AbsIL type variable number to IL type variable numbering type ILTypeWriterEnv = { EnclosingTyparCount: int } let envForTypeDef (td:ILTypeDef) = { EnclosingTyparCount=td.GenericParams.Length } let envForMethodRef env (typ:ILType) = { EnclosingTyparCount=(match typ with ILType.Array _ -> env.EnclosingTyparCount | _ -> typ.GenericArgs.Length) } let envForNonGenericMethodRef _mref = { EnclosingTyparCount=System.Int32.MaxValue } let envForFieldSpec (fspec:ILFieldSpec) = { EnclosingTyparCount=fspec.EnclosingType.GenericArgs.Length } let envForOverrideSpec (ospec:ILOverridesSpec) = { EnclosingTyparCount=ospec.EnclosingType.GenericArgs.Length } //--------------------------------------------------------------------- // TABLES //--------------------------------------------------------------------- [] type MetadataTable<'T> = { name: string; dict: Dictionary<'T, int>; // given a row, find its entry number #if DEBUG mutable lookups: int; #endif mutable rows: ResizeArray<'T> ; } member x.Count = x.rows.Count static member New(nm,hashEq) = { name=nm; #if DEBUG lookups=0; #endif dict = new Dictionary<_,_>(100, hashEq); rows= new ResizeArray<_>(); } member tbl.EntriesAsArray = #if DEBUG if showEntryLookups then dprintf "--> table %s had %d entries and %d lookups\n" tbl.name tbl.Count tbl.lookups; #endif tbl.rows |> ResizeArray.toArray member tbl.Entries = #if DEBUG if showEntryLookups then dprintf "--> table %s had %d entries and %d lookups\n" tbl.name tbl.Count tbl.lookups; #endif tbl.rows |> ResizeArray.toList member tbl.AddSharedEntry x = let n = tbl.rows.Count + 1 tbl.dict.[x] <- n; tbl.rows.Add(x); n member tbl.AddUnsharedEntry x = let n = tbl.rows.Count + 1 tbl.rows.Add(x); n member tbl.FindOrAddSharedEntry x = #if DEBUG tbl.lookups <- tbl.lookups + 1; #endif let mutable res = Unchecked.defaultof<_> let ok = tbl.dict.TryGetValue(x,&res) if ok then res else tbl.AddSharedEntry x /// This is only used in one special place - see further below. member tbl.SetRowsOfTable t = tbl.rows <- ResizeArray.ofArray t; let h = tbl.dict h.Clear(); t |> Array.iteri (fun i x -> h.[x] <- (i+1)) member tbl.AddUniqueEntry nm geterr x = if tbl.dict.ContainsKey x then failwith ("duplicate entry '"+geterr x+"' in "+nm+" table") else tbl.AddSharedEntry x member tbl.GetTableEntry x = tbl.dict.[x] //--------------------------------------------------------------------- // Keys into some of the tables //--------------------------------------------------------------------- /// We use this key type to help find ILMethodDefs for MethodRefs type MethodDefKey(tidx:int,garity:int,nm:string,rty:ILType,argtys:ILTypes,isStatic:bool) = // Precompute the hash. The hash doesn't include the return type or // argument types (only argument type count). This is very important, since // hashing these is way too expensive let hashCode = hash tidx |> combineHash (hash garity) |> combineHash (hash nm) |> combineHash (hash argtys.Length) |> combineHash (hash isStatic) member key.TypeIdx = tidx member key.GenericArity = garity member key.Name = nm member key.ReturnType = rty member key.ArgTypes = argtys member key.IsStatic = isStatic override x.GetHashCode() = hashCode override x.Equals(obj:obj) = match obj with | :? MethodDefKey as y -> tidx = y.TypeIdx && garity = y.GenericArity && nm = y.Name && // note: these next two use structural equality on AbstractIL ILType values rty = y.ReturnType && ILList.lengthsEqAndForall2 (fun a b -> a = b) argtys y.ArgTypes && isStatic = y.IsStatic | _ -> false /// We use this key type to help find ILFieldDefs for FieldRefs type FieldDefKey(tidx:int,nm:string,ty:ILType) = // precompute the hash. hash doesn't include the type let hashCode = hash tidx |> combineHash (hash nm) member key.TypeIdx = tidx member key.Name = nm member key.Type = ty override x.GetHashCode() = hashCode override x.Equals(obj:obj) = match obj with | :? FieldDefKey as y -> tidx = y.TypeIdx && nm = y.Name && ty = y.Type | _ -> false type PropertyTableKey = PropKey of int (* type. def. idx. *) * string * ILType * ILTypes type EventTableKey = EventKey of int (* type. def. idx. *) * string type TypeDefTableKey = TdKey of string list (* enclosing *) * string (* type name *) //--------------------------------------------------------------------- // The Writer Context //--------------------------------------------------------------------- [] type cenv = { mscorlib: ILScopeRef; ilg: ILGlobals; emitTailcalls: bool; showTimes: bool; desiredMetadataVersion: ILVersionInfo; requiredDataFixups: (int32 * (int * bool)) list ref; /// References to strings in codestreams: offset of code and a (fixup-location , string token) list) mutable requiredStringFixups: (int32 * (int * int) list) list; codeChunks: ByteBuffer; mutable nextCodeAddr: int32; // Collected debug information mutable moduleGuid: byte[] generatePdb: bool; pdbinfo: ResizeArray; documents: MetadataTable; /// Raw data, to go into the data section data: ByteBuffer; /// Raw resource data, to go into the data section resources: ByteBuffer; mutable entrypoint: (bool * int) option; /// Caches trefCache: Dictionary; /// The following are all used to generate unique items in the output tables: array>; AssemblyRefs: MetadataTable; fieldDefs: MetadataTable; methodDefIdxsByKey: MetadataTable; methodDefIdxs: Dictionary; propertyDefs: MetadataTable; eventDefs: MetadataTable; typeDefs: MetadataTable; guids: MetadataTable; blobs: MetadataTable; strings: MetadataTable; userStrings: MetadataTable; } member cenv.GetTable (tab:TableName) = cenv.tables.[tab.Index] member cenv.AddCode ((reqdStringFixupsOffset,requiredStringFixups),code) = if align 4 cenv.nextCodeAddr <> cenv.nextCodeAddr then dprintn "warning: code not 4-byte aligned"; cenv.requiredStringFixups <- (cenv.nextCodeAddr + reqdStringFixupsOffset, requiredStringFixups) :: cenv.requiredStringFixups; cenv.codeChunks.EmitBytes code; cenv.nextCodeAddr <- cenv.nextCodeAddr + code.Length member cenv.GetCode() = cenv.codeChunks.Close() let FindOrAddRow (cenv:cenv) tbl (x:IGenericRow) = cenv.GetTable(tbl).FindOrAddSharedEntry x // Shared rows must be hash-cons'd to be made unique (no duplicates according to contents) let AddSharedRow (cenv:cenv) tbl (x:ISharedRow) = cenv.GetTable(tbl).AddSharedEntry (x :> IGenericRow) // Unshared rows correspond to definition elements (e.g. a ILTypeDef or a ILMethodDef) let AddUnsharedRow (cenv:cenv) tbl (x:UnsharedRow) = cenv.GetTable(tbl).AddUnsharedEntry (x :> IGenericRow) let metadataSchemaVersionSupportedByCLRVersion v = // Whidbey Beta 1 version numbers are between 2.0.40520.0 and 2.0.40607.0 // Later Whidbey versions are post 2.0.40607.0.. However we assume // internal builds such as 2.0.x86chk are Whidbey Beta 2 or later if compareILVersions v (parseILVersion ("2.0.40520.0")) >= 0 && compareILVersions v (parseILVersion ("2.0.40608.0")) < 0 then 1,1 elif compareILVersions v (parseILVersion ("2.0.0.0")) >= 0 then 2,0 else 1,0 let headerVersionSupportedByCLRVersion v = // The COM20HEADER version number // Whidbey version numbers are 2.5 // Earlier are 2.0 // From an email from jeffschw: "Be built with a compiler that marks the COM20HEADER with Major >=2 and Minor >= 5. The V2.0 compilers produce images with 2.5, V1.x produces images with 2.0." if compareILVersions v (parseILVersion ("2.0.0.0")) >= 0 then 2,5 else 2,0 let peOptionalHeaderByteByCLRVersion v = // A flag in the PE file optional header seems to depend on CLI version // Whidbey version numbers are 8 // Earlier are 6 // Tools are meant to ignore this, but the VS Profiler wants it to have the right value if compareILVersions v (parseILVersion ("2.0.0.0")) >= 0 then 8 else 6 // returned by writeBinaryAndReportMappings [] type ILTokenMappings = { TypeDefTokenMap: ILTypeDef list * ILTypeDef -> int32; FieldDefTokenMap: ILTypeDef list * ILTypeDef -> ILFieldDef -> int32; MethodDefTokenMap: ILTypeDef list * ILTypeDef -> ILMethodDef -> int32; PropertyTokenMap: ILTypeDef list * ILTypeDef -> ILPropertyDef -> int32; EventTokenMap: ILTypeDef list * ILTypeDef -> ILEventDef -> int32 } let recordRequiredDataFixup requiredDataFixups (buf: ByteBuffer) pos lab = requiredDataFixups := (pos,lab) :: !requiredDataFixups; // Write a special value in that we check later when applying the fixup buf.EmitInt32 0xdeaddddd //--------------------------------------------------------------------- // The UserString, BlobHeap, GuidHeap tables //--------------------------------------------------------------------- let GetUserStringHeapIdx cenv s = cenv.userStrings.FindOrAddSharedEntry s let GetBytesAsBlobIdx cenv (bytes:byte[]) = if bytes.Length = 0 then 0 else cenv.blobs.FindOrAddSharedEntry bytes let GetStringHeapIdx cenv s = if s = "" then 0 else cenv.strings.FindOrAddSharedEntry s let GetGuidIdx cenv info = cenv.guids.FindOrAddSharedEntry info let GetStringHeapIdxOption cenv sopt = match sopt with | Some ns -> GetStringHeapIdx cenv ns | None -> 0 let GetTypeNameAsElemPair cenv n = let (n1,n2) = splitTypeNameRight n StringE (GetStringHeapIdxOption cenv n1), StringE (GetStringHeapIdx cenv n2) //===================================================================== // Pass 1 - allocate indexes for types //===================================================================== let rec GenTypeDefPass1 enc cenv (td:ILTypeDef) = ignore (cenv.typeDefs.AddUniqueEntry "type index" (fun (TdKey (_,n)) -> n) (TdKey (enc,td.Name))); GenTypeDefsPass1 (enc@[td.Name]) cenv td.NestedTypes.AsList and GenTypeDefsPass1 enc cenv tds = List.iter (GenTypeDefPass1 enc cenv) tds //===================================================================== // Pass 2 - allocate indexes for methods and fields and write rows for types //===================================================================== let rec GetIdxForTypeDef cenv key = try cenv.typeDefs.GetTableEntry key with :? KeyNotFoundException -> let (TdKey (enc,n) ) = key errorR(InternalError("One of your modules expects the type '"+String.concat "." (enc@[n])+"' to be defined within the module being emitted. You may be missing an input file",range0)) 0 // -------------------------------------------------------------------- // Assembly and module references // -------------------------------------------------------------------- let rec GetAssemblyRefAsRow cenv (aref:ILAssemblyRef) = AssemblyRefRow ((match aref.Version with None -> 0us | Some (x,_,_,_) -> x), (match aref.Version with None -> 0us | Some (_,y,_,_) -> y), (match aref.Version with None -> 0us | Some (_,_,z,_) -> z), (match aref.Version with None -> 0us | Some (_,_,_,w) -> w), ((match aref.PublicKey with Some (PublicKey _) -> 0x0001 | _ -> 0x0000) ||| (if aref.Retargetable then 0x0100 else 0x0000)), BlobIndex (match aref.PublicKey with | None -> 0 | Some (PublicKey b | PublicKeyToken b) -> GetBytesAsBlobIdx cenv b), StringIndex (GetStringHeapIdx cenv aref.Name), StringIndex (match aref.Locale with None -> 0 | Some s -> GetStringHeapIdx cenv s), BlobIndex (match aref.Hash with None -> 0 | Some s -> GetBytesAsBlobIdx cenv s)) and GetAssemblyRefAsIdx cenv aref = FindOrAddRow cenv TableNames.AssemblyRef (GetAssemblyRefAsRow cenv aref) and GetModuleRefAsRow cenv (mref:ILModuleRef) = SimpleSharedRow [| StringE (GetStringHeapIdx cenv mref.Name) |] and GetModuleRefAsFileRow cenv (mref:ILModuleRef) = SimpleSharedRow [| ULong (if mref.HasMetadata then 0x0000 else 0x0001); StringE (GetStringHeapIdx cenv mref.Name); (match mref.Hash with None -> Blob 0 | Some s -> Blob (GetBytesAsBlobIdx cenv s)); |] and GetModuleRefAsIdx cenv mref = FindOrAddRow cenv TableNames.ModuleRef (GetModuleRefAsRow cenv mref) and GetModuleRefAsFileIdx cenv mref = FindOrAddRow cenv TableNames.File (GetModuleRefAsFileRow cenv mref) // -------------------------------------------------------------------- // Does a ILScopeRef point to this module? // -------------------------------------------------------------------- let isScopeRefLocal scoref = (scoref = ILScopeRef.Local) let isTypeRefLocal (tref:ILTypeRef) = isScopeRefLocal tref.Scope let isTypeLocal (typ:ILType) = typ.IsNominal && typ.GenericArgs.Length = 0 && isTypeRefLocal typ.TypeRef // -------------------------------------------------------------------- // Scopes to Implementation elements. // -------------------------------------------------------------------- let GetScopeRefAsImplementationElem cenv scoref = match scoref with | ILScopeRef.Local -> (i_AssemblyRef, 0) | ILScopeRef.Assembly aref -> (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref) | ILScopeRef.Module mref -> (i_File, GetModuleRefAsFileIdx cenv mref) // -------------------------------------------------------------------- // Type references, types etc. // -------------------------------------------------------------------- let rec GetTypeRefAsTypeRefRow cenv (tref:ILTypeRef) = let nselem,nelem = GetTypeNameAsElemPair cenv tref.Name let rs1,rs2 = GetResolutionScopeAsElem cenv (tref.Scope,tref.Enclosing) SimpleSharedRow [| ResolutionScope (rs1,rs2); nelem; nselem |] and GetTypeRefAsTypeRefIdx cenv tref = let mutable res = 0 if cenv.trefCache.TryGetValue(tref,&res) then res else let res = FindOrAddRow cenv TableNames.TypeRef (GetTypeRefAsTypeRefRow cenv tref) cenv.trefCache.[tref] <- res; res and GetTypeDescAsTypeRefIdx cenv (scoref,enc,n) = GetTypeRefAsTypeRefIdx cenv (mkILNestedTyRef (scoref,enc,n)) and GetResolutionScopeAsElem cenv (scoref,enc) = if isNil enc then match scoref with | ILScopeRef.Local -> (rs_Module, 1) | ILScopeRef.Assembly aref -> (rs_AssemblyRef, GetAssemblyRefAsIdx cenv aref) | ILScopeRef.Module mref -> (rs_ModuleRef, GetModuleRefAsIdx cenv mref) else let enc2,n2 = List.frontAndBack enc (rs_TypeRef, GetTypeDescAsTypeRefIdx cenv (scoref,enc2,n2)) let emitTypeInfoAsTypeDefOrRefEncoded cenv (bb: ByteBuffer) (scoref,enc,nm) = if isScopeRefLocal scoref then let idx = GetIdxForTypeDef cenv (TdKey(enc,nm)) bb.EmitZ32 (idx <<< 2) // ECMA 22.2.8 TypeDefOrRefEncoded - ILTypeDef else let idx = GetTypeDescAsTypeRefIdx cenv (scoref,enc,nm) bb.EmitZ32 ((idx <<< 2) ||| 0x01) // ECMA 22.2.8 TypeDefOrRefEncoded - ILTypeRef let getTypeDefOrRefAsUncodedToken (tag,idx) = let tab = if tag = tdor_TypeDef then TableNames.TypeDef elif tag = tdor_TypeRef then TableNames.TypeRef elif tag = tdor_TypeSpec then TableNames.TypeSpec else failwith "getTypeDefOrRefAsUncodedToken" getUncodedToken tab idx // REVIEW: write into an accumuating buffer let EmitArrayShape (bb: ByteBuffer) (ILArrayShape shape) = let sized = List.filter (function (_,Some _) -> true | _ -> false) shape let lobounded = List.filter (function (Some _,_) -> true | _ -> false) shape bb.EmitZ32 shape.Length; bb.EmitZ32 sized.Length; sized |> List.iter (function (_,Some sz) -> bb.EmitZ32 sz | _ -> failwith "?"); bb.EmitZ32 lobounded.Length; lobounded |> List.iter (function (Some low,_) -> bb.EmitZ32 low | _ -> failwith "?") let hasthisToByte hasthis = match hasthis with | ILThisConvention.Instance -> e_IMAGE_CEE_CS_CALLCONV_INSTANCE | ILThisConvention.InstanceExplicit -> e_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICIT | ILThisConvention.Static -> 0x00uy let callconvToByte ntypars (Callconv (hasthis,bcc)) = hasthisToByte hasthis ||| (if ntypars > 0 then e_IMAGE_CEE_CS_CALLCONV_GENERIC else 0x00uy) ||| (match bcc with | ILArgConvention.FastCall -> e_IMAGE_CEE_CS_CALLCONV_FASTCALL | ILArgConvention.StdCall -> e_IMAGE_CEE_CS_CALLCONV_STDCALL | ILArgConvention.ThisCall -> e_IMAGE_CEE_CS_CALLCONV_THISCALL | ILArgConvention.CDecl -> e_IMAGE_CEE_CS_CALLCONV_CDECL | ILArgConvention.Default -> 0x00uy | ILArgConvention.VarArg -> e_IMAGE_CEE_CS_CALLCONV_VARARG) // REVIEW: write into an accumuating buffer let rec EmitTypeSpec cenv env (bb: ByteBuffer) (et,tspec:ILTypeSpec) = if ILList.isEmpty tspec.GenericArgs then bb.EmitByte et; emitTypeInfoAsTypeDefOrRefEncoded cenv bb (tspec.Scope,tspec.Enclosing,tspec.Name) else bb.EmitByte et_WITH; bb.EmitByte et; emitTypeInfoAsTypeDefOrRefEncoded cenv bb (tspec.Scope,tspec.Enclosing,tspec.Name); bb.EmitZ32 tspec.GenericArgs.Length; EmitTypes cenv env bb tspec.GenericArgs and GetTypeAsTypeDefOrRef cenv env (ty:ILType) = if isTypeLocal ty then let tref = ty.TypeRef (tdor_TypeDef, GetIdxForTypeDef cenv (TdKey(tref.Enclosing,tref.Name))) elif ty.IsNominal && ILList.isEmpty ty.GenericArgs then (tdor_TypeRef, GetTypeRefAsTypeRefIdx cenv ty.TypeRef) else (tdor_TypeSpec, GetTypeAsTypeSpecIdx cenv env ty) and GetTypeAsBytes cenv env ty = emitBytesViaBuffer (fun bb -> EmitType cenv env bb ty) and GetTypeAsBlobIdx cenv env (ty:ILType) = GetBytesAsBlobIdx cenv (GetTypeAsBytes cenv env ty) and GetTypeAsTypeSpecRow cenv env (ty:ILType) = SimpleSharedRow [| Blob (GetTypeAsBlobIdx cenv env ty) |] and GetTypeAsTypeSpecIdx cenv env ty = FindOrAddRow cenv TableNames.TypeSpec (GetTypeAsTypeSpecRow cenv env ty) and EmitType cenv env bb ty = let ilg = cenv.ilg match ty with // REVIEW: what are these doing here? | ILType.Value tspec when tspec.Name = "System.String" -> bb.EmitByte et_STRING | ILType.Value tspec when tspec.Name = "System.Object" -> bb.EmitByte et_OBJECT | typ when isILSByteTy ilg typ -> bb.EmitByte et_I1 | typ when isILInt16Ty ilg typ -> bb.EmitByte et_I2 | typ when isILInt32Ty ilg typ -> bb.EmitByte et_I4 | typ when isILInt64Ty ilg typ -> bb.EmitByte et_I8 | typ when isILByteTy ilg typ -> bb.EmitByte et_U1 | typ when isILUInt16Ty ilg typ -> bb.EmitByte et_U2 | typ when isILUInt32Ty ilg typ -> bb.EmitByte et_U4 | typ when isILUInt64Ty ilg typ -> bb.EmitByte et_U8 | typ when isILDoubleTy ilg typ -> bb.EmitByte et_R8 | typ when isILSingleTy ilg typ -> bb.EmitByte et_R4 | typ when isILBoolTy ilg typ -> bb.EmitByte et_BOOLEAN | typ when isILCharTy ilg typ -> bb.EmitByte et_CHAR | typ when isILStringTy ilg typ -> bb.EmitByte et_STRING | typ when isILObjectTy ilg typ -> bb.EmitByte et_OBJECT | typ when isILIntPtrTy ilg typ -> bb.EmitByte et_I | typ when isILUIntPtrTy ilg typ -> bb.EmitByte et_U | typ when isILTypedReferenceTy ilg typ -> bb.EmitByte et_TYPEDBYREF | ILType.Boxed tspec -> EmitTypeSpec cenv env bb (et_CLASS,tspec) | ILType.Value tspec -> EmitTypeSpec cenv env bb (et_VALUETYPE,tspec) | ILType.Array (shape,ty) -> if shape = ILArrayShape.SingleDimensional then (bb.EmitByte et_SZARRAY ; EmitType cenv env bb ty) else (bb.EmitByte et_ARRAY; EmitType cenv env bb ty; EmitArrayShape bb shape) | ILType.TypeVar tv -> let cgparams = env.EnclosingTyparCount if int32 tv < cgparams then bb.EmitByte et_VAR; bb.EmitZ32 (int32 tv) else bb.EmitByte et_MVAR; bb.EmitZ32 (int32 tv - cgparams) | ILType.Byref typ -> bb.EmitByte et_BYREF; EmitType cenv env bb typ | ILType.Ptr typ -> bb.EmitByte et_PTR; EmitType cenv env bb typ | ILType.Void -> bb.EmitByte et_VOID | ILType.FunctionPointer x -> bb.EmitByte et_FNPTR; EmitCallsig cenv env bb (x.CallingConv,x.ArgTypes,x.ReturnType,None,0) | ILType.Modified (req,tref,ty) -> bb.EmitByte (if req then et_CMOD_REQD else et_CMOD_OPT); emitTypeInfoAsTypeDefOrRefEncoded cenv bb (tref.Scope, tref.Enclosing,tref.Name); EmitType cenv env bb ty | _ -> failwith "EmitType" and EmitCallsig cenv env bb (callconv,args:ILTypes,ret,varargs:ILVarArgs,genarity) = bb.EmitByte (callconvToByte genarity callconv); if genarity > 0 then bb.EmitZ32 genarity; bb.EmitZ32 ((args.Length + (match varargs with None -> 0 | Some l -> l.Length))); EmitType cenv env bb ret; args |> ILList.iter (EmitType cenv env bb); match varargs with | None -> ()// no extra arg = no sentinel | Some tys -> if ILList.isEmpty tys then () // no extra arg = no sentinel else bb.EmitByte et_SENTINEL; ILList.iter (EmitType cenv env bb) tys and GetCallsigAsBytes cenv env x = emitBytesViaBuffer (fun bb -> EmitCallsig cenv env bb x) // REVIEW: write into an accumuating buffer and EmitTypes cenv env bb (inst: ILTypes) = inst |> ILList.iter (EmitType cenv env bb) let GetTypeAsMemberRefParent cenv env ty = match GetTypeAsTypeDefOrRef cenv env ty with | (tag,_) when tag = tdor_TypeDef -> dprintn "GetTypeAsMemberRefParent: mspec should have been encoded as mdtMethodDef?"; MemberRefParent (mrp_TypeRef, 1) | (tag,tok) when tag = tdor_TypeRef -> MemberRefParent (mrp_TypeRef, tok) | (tag,tok) when tag = tdor_TypeSpec -> MemberRefParent (mrp_TypeSpec, tok) | _ -> failwith "GetTypeAsMemberRefParent" // -------------------------------------------------------------------- // Native types // -------------------------------------------------------------------- let rec GetVariantTypeAsInt32 ty = if List.memAssoc ty (Lazy.force ILVariantTypeMap) then (List.assoc ty (Lazy.force ILVariantTypeMap )) else match ty with | ILNativeVariant.Array vt -> vt_ARRAY ||| GetVariantTypeAsInt32 vt | ILNativeVariant.Vector vt -> vt_VECTOR ||| GetVariantTypeAsInt32 vt | ILNativeVariant.Byref vt -> vt_BYREF ||| GetVariantTypeAsInt32 vt | _ -> failwith "Unexpected variant type" // based on information in ECMA and asmparse.y in the CLR codebase let rec GetNativeTypeAsBlobIdx cenv (ty:ILNativeType) = GetBytesAsBlobIdx cenv (GetNativeTypeAsBytes ty) and GetNativeTypeAsBytes ty = emitBytesViaBuffer (fun bb -> EmitNativeType bb ty) // REVIEW: write into an accumuating buffer and EmitNativeType bb ty = if List.memAssoc ty (Lazy.force ILNativeTypeRevMap) then bb.EmitByte (List.assoc ty (Lazy.force ILNativeTypeRevMap)) else match ty with | ILNativeType.Empty -> () | ILNativeType.Custom (guid,nativeTypeName,custMarshallerName,cookieString) -> let u1 = System.Text.Encoding.UTF8.GetBytes nativeTypeName let u2 = System.Text.Encoding.UTF8.GetBytes custMarshallerName let u3 = cookieString bb.EmitByte nt_CUSTOMMARSHALER; bb.EmitZ32 guid.Length; bb.EmitBytes guid; bb.EmitZ32 u1.Length; bb.EmitBytes u1; bb.EmitZ32 u2.Length; bb.EmitBytes u2; bb.EmitZ32 u3.Length; bb.EmitBytes u3 | ILNativeType.FixedSysString i -> bb.EmitByte nt_FIXEDSYSSTRING; bb.EmitZ32 i | ILNativeType.FixedArray i -> bb.EmitByte nt_FIXEDARRAY; bb.EmitZ32 i | (* COM interop *) ILNativeType.SafeArray (vt,name) -> bb.EmitByte nt_SAFEARRAY; bb.EmitZ32 (GetVariantTypeAsInt32 vt); match name with | None -> () | Some n -> let u1 = Bytes.stringAsUtf8NullTerminated n bb.EmitZ32 (Array.length u1) ; bb.EmitBytes u1 | ILNativeType.Array (nt,sizeinfo) -> (* REVIEW: check if this corresponds to the ECMA spec *) bb.EmitByte nt_ARRAY; match nt with | None -> bb.EmitZ32 (int nt_MAX) | Some ntt -> (if ntt = ILNativeType.Empty then bb.EmitZ32 (int nt_MAX) else EmitNativeType bb ntt); match sizeinfo with | None -> () // chunk out with zeroes because some tools (e.g. asmmeta) read these poorly and expect further elements. | Some (pnum,additive) -> // ParamNum bb.EmitZ32 pnum; (* ElemMul *) (* z_u32 0x1l *) match additive with | None -> () | Some n -> (* NumElem *) bb.EmitZ32 n | _ -> failwith "Unexpected native type" // -------------------------------------------------------------------- // Native types // -------------------------------------------------------------------- let rec GetFieldInitAsBlobIdx cenv (x:ILFieldInit) = GetBytesAsBlobIdx cenv (emitBytesViaBuffer (fun bb -> GetFieldInit bb x)) // REVIEW: write into an accumuating buffer and GetFieldInit (bb: ByteBuffer) x = match x with | ILFieldInit.String b -> bb.EmitBytes (System.Text.Encoding.Unicode.GetBytes b) | ILFieldInit.Bool b -> bb.EmitByte (if b then 0x01uy else 0x00uy) | ILFieldInit.Char x -> bb.EmitUInt16 x | ILFieldInit.Int8 x -> bb.EmitByte (byte x) | ILFieldInit.Int16 x -> bb.EmitUInt16 (uint16 x) | ILFieldInit.Int32 x -> bb.EmitInt32 x | ILFieldInit.Int64 x -> bb.EmitInt64 x | ILFieldInit.UInt8 x -> bb.EmitByte x | ILFieldInit.UInt16 x -> bb.EmitUInt16 x | ILFieldInit.UInt32 x -> bb.EmitInt32 (int32 x) | ILFieldInit.UInt64 x -> bb.EmitInt64 (int64 x) | ILFieldInit.Single x -> bb.EmitInt32 (bitsOfSingle x) | ILFieldInit.Double x -> bb.EmitInt64 (bitsOfDouble x) | ILFieldInit.Null -> bb.EmitInt32 0 and GetFieldInitFlags i = UShort (uint16 (match i with | ILFieldInit.String _ -> et_STRING | ILFieldInit.Bool _ -> et_BOOLEAN | ILFieldInit.Char _ -> et_CHAR | ILFieldInit.Int8 _ -> et_I1 | ILFieldInit.Int16 _ -> et_I2 | ILFieldInit.Int32 _ -> et_I4 | ILFieldInit.Int64 _ -> et_I8 | ILFieldInit.UInt8 _ -> et_U1 | ILFieldInit.UInt16 _ -> et_U2 | ILFieldInit.UInt32 _ -> et_U4 | ILFieldInit.UInt64 _ -> et_U8 | ILFieldInit.Single _ -> et_R4 | ILFieldInit.Double _ -> et_R8 | ILFieldInit.Null -> et_CLASS)) // -------------------------------------------------------------------- // Type definitions // -------------------------------------------------------------------- let GetMemberAccessFlags access = match access with | ILMemberAccess.CompilerControlled -> 0x00000000 | ILMemberAccess.Public -> 0x00000006 | ILMemberAccess.Private -> 0x00000001 | ILMemberAccess.Family -> 0x00000004 | ILMemberAccess.FamilyAndAssembly -> 0x00000002 | ILMemberAccess.FamilyOrAssembly -> 0x00000005 | ILMemberAccess.Assembly -> 0x00000003 let GetTypeAccessFlags access = match access with | ILTypeDefAccess.Public -> 0x00000001 | ILTypeDefAccess.Private -> 0x00000000 | ILTypeDefAccess.Nested ILMemberAccess.Public -> 0x00000002 | ILTypeDefAccess.Nested ILMemberAccess.Private -> 0x00000003 | ILTypeDefAccess.Nested ILMemberAccess.Family -> 0x00000004 | ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly -> 0x00000006 | ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly -> 0x00000007 | ILTypeDefAccess.Nested ILMemberAccess.Assembly -> 0x00000005 | ILTypeDefAccess.Nested ILMemberAccess.CompilerControlled -> failwith "bad type acccess" let rec GetTypeDefAsRow cenv env _enc (td:ILTypeDef) = let nselem,nelem = GetTypeNameAsElemPair cenv td.Name let flags = if (isTypeNameForGlobalFunctions td.Name) then 0x00000000 else GetTypeAccessFlags td.Access ||| begin match td.Layout with | ILTypeDefLayout.Auto -> 0x00000000 | ILTypeDefLayout.Sequential _ -> 0x00000008 | ILTypeDefLayout.Explicit _ -> 0x00000010 end ||| begin match td.tdKind with | ILTypeDefKind.Interface -> 0x00000020 | _ -> 0x00000000 end ||| (if td.IsAbstract then 0x00000080l else 0x00000000) ||| (if td.IsSealed then 0x00000100l else 0x00000000) ||| (if td.IsComInterop then 0x00001000l else 0x00000000) ||| (if td.IsSerializable then 0x00002000l else 0x00000000) ||| begin match td.Encoding with | ILDefaultPInvokeEncoding.Ansi -> 0x00000000 | ILDefaultPInvokeEncoding.Auto -> 0x00020000 | ILDefaultPInvokeEncoding.Unicode -> 0x00010000 end ||| begin match td.InitSemantics with | ILTypeInit.BeforeField when not (match td.tdKind with ILTypeDefKind.Interface -> true | _ -> false) -> 0x00100000 | _ -> 0x00000000 end ||| (if td.IsSpecialName then 0x00000400 else 0x00000000) ||| // @REVIEW (if rtspecialname_of_tdef td then 0x00000800 else 0x00000000) ||| (if td.HasSecurity || not td.SecurityDecls.AsList.IsEmpty then 0x00040000 else 0x00000000) let tdorTag, tdorRow = GetTypeOptionAsTypeDefOrRef cenv env td.Extends UnsharedRow [| ULong flags ; nelem; nselem; TypeDefOrRefOrSpec (tdorTag, tdorRow); SimpleIndex (TableNames.Field, cenv.fieldDefs.Count + 1); SimpleIndex (TableNames.Method,cenv.methodDefIdxsByKey.Count + 1) |] and GetTypeOptionAsTypeDefOrRef cenv env tyOpt = match tyOpt with | None -> (tdor_TypeDef, 0) | Some ty -> (GetTypeAsTypeDefOrRef cenv env ty) and GetTypeDefAsPropertyMapRow cenv tidx = UnsharedRow [| SimpleIndex (TableNames.TypeDef, tidx); SimpleIndex (TableNames.Property, cenv.propertyDefs.Count + 1) |] and GetTypeDefAsEventMapRow cenv tidx = UnsharedRow [| SimpleIndex (TableNames.TypeDef, tidx); SimpleIndex (TableNames.Event, cenv.eventDefs.Count + 1) |] and GetKeyForFieldDef tidx (fd: ILFieldDef) = FieldDefKey (tidx,fd.Name, fd.Type) and GenFieldDefPass2 cenv tidx fd = ignore (cenv.fieldDefs.AddUniqueEntry "field" (fun (fdkey:FieldDefKey) -> fdkey.Name) (GetKeyForFieldDef tidx fd)) and GetKeyForMethodDef tidx (md: ILMethodDef) = MethodDefKey (tidx,md.GenericParams.Length, md.Name, md.Return.Type, md.ParameterTypes, md.CallingConv.IsStatic) and GenMethodDefPass2 cenv tidx md = let idx = cenv.methodDefIdxsByKey.AddUniqueEntry "method" (fun (key:MethodDefKey) -> dprintn "Duplicate in method table is:"; dprintn (" Type index: "+string key.TypeIdx); dprintn (" Method name: "+key.Name); dprintn (" Method arity (num generic params): "+string key.GenericArity); key.Name ) (GetKeyForMethodDef tidx md) cenv.methodDefIdxs.[md] <- idx and GetKeyForPropertyDef tidx (x: ILPropertyDef) = PropKey (tidx, x.Name, x.Type, x.Args) and GenPropertyDefPass2 cenv tidx x = ignore (cenv.propertyDefs.AddUniqueEntry "property" (fun (PropKey (_,n,_,_)) -> n) (GetKeyForPropertyDef tidx x)) and GetTypeAsImplementsRow cenv env tidx ty = let tdorTag,tdorRow = GetTypeAsTypeDefOrRef cenv env ty UnsharedRow [| SimpleIndex (TableNames.TypeDef, tidx); TypeDefOrRefOrSpec (tdorTag,tdorRow) |] and GenImplementsPass2 cenv env tidx ty = AddUnsharedRow cenv TableNames.InterfaceImpl (GetTypeAsImplementsRow cenv env tidx ty) |> ignore and GetKeyForEvent tidx (x: ILEventDef) = EventKey (tidx, x.Name) and GenEventDefPass2 cenv tidx x = ignore (cenv.eventDefs.AddUniqueEntry "event" (fun (EventKey(_,b)) -> b) (GetKeyForEvent tidx x)) and GenTypeDefPass2 pidx enc cenv (td:ILTypeDef) = try let env = envForTypeDef td let tidx = GetIdxForTypeDef cenv (TdKey(enc,td.Name)) let tidx2 = AddUnsharedRow cenv TableNames.TypeDef (GetTypeDefAsRow cenv env enc td) if tidx <> tidx2 then failwith "index of typedef on second pass does not match index on first pass"; // Add entries to auxiliary mapping tables, e.g. Nested, PropertyMap etc. // Note Nested is organised differntly to the others... if nonNil enc then AddUnsharedRow cenv TableNames.Nested (UnsharedRow [| SimpleIndex (TableNames.TypeDef, tidx); SimpleIndex (TableNames.TypeDef, pidx) |]) |> ignore; let props = td.Properties.AsList if nonNil props then AddUnsharedRow cenv TableNames.PropertyMap (GetTypeDefAsPropertyMapRow cenv tidx) |> ignore; let events = td.Events.AsList if nonNil events then AddUnsharedRow cenv TableNames.EventMap (GetTypeDefAsEventMapRow cenv tidx) |> ignore; // Now generate or assign index numbers for tables referenced by the maps. // Don't yet generate contents of these tables - leave that to pass3, as // code may need to embed these entries. td.Implements |> ILList.iter (GenImplementsPass2 cenv env tidx); props |> List.iter (GenPropertyDefPass2 cenv tidx); events |> List.iter (GenEventDefPass2 cenv tidx); td.Fields.AsList |> List.iter (GenFieldDefPass2 cenv tidx); td.Methods |> Seq.iter (GenMethodDefPass2 cenv tidx); td.NestedTypes.AsList |> GenTypeDefsPass2 tidx (enc@[td.Name]) cenv with e -> failwith ("Error in pass2 for type "+td.Name+", error: "+e.Message); reraise() raise e and GenTypeDefsPass2 pidx enc cenv tds = List.iter (GenTypeDefPass2 pidx enc cenv) tds //===================================================================== // Pass 3 - write details of methods, fields, IL code, custom attrs etc. //===================================================================== exception MethodDefNotFound let FindMethodDefIdx cenv mdkey = try cenv.methodDefIdxsByKey.GetTableEntry mdkey with :? KeyNotFoundException -> let typeNameOfIdx i = match (cenv.typeDefs.dict |> Seq.fold (fun sofar kvp -> let tkey2 = kvp.Key let tidx2 = kvp.Value if i = tidx2 then if sofar = None then Some tkey2 else failwith "mutiple type names map to index" else sofar) None) with | Some x -> x | None -> raise MethodDefNotFound let (TdKey (tenc,tname)) = typeNameOfIdx mdkey.TypeIdx dprintn ("The local method '"+(String.concat "." (tenc@[tname]))+"'::'"+mdkey.Name+"' was referenced but not declared"); dprintn ("generic arity: "+string mdkey.GenericArity); cenv.methodDefIdxsByKey.dict |> Seq.iter (fun (KeyValue(mdkey2,_)) -> if mdkey2.TypeIdx = mdkey.TypeIdx && mdkey.Name = mdkey2.Name then let (TdKey (tenc2,tname2)) = typeNameOfIdx mdkey2.TypeIdx dprintn ("A method in '"+(String.concat "." (tenc2@[tname2]))+"' had the right name but the wrong signature:"); dprintn ("generic arity: "+string mdkey2.GenericArity) ; dprintn (sprintf "mdkey2: %A" mdkey2)) ; raise MethodDefNotFound let rec GetMethodDefIdx cenv md = cenv.methodDefIdxs.[md] and FindFieldDefIdx cenv fdkey = try cenv.fieldDefs.GetTableEntry fdkey with :? KeyNotFoundException -> errorR(InternalError("The local field "+fdkey.Name+" was referenced but not declared",range0)); 1 and GetFieldDefAsFieldDefIdx cenv tidx fd = FindFieldDefIdx cenv (GetKeyForFieldDef tidx fd) // -------------------------------------------------------------------- // ILMethodRef --> ILMethodDef. // // Only successfuly converts ILMethodRef's referring to // methods in the module being emitted. // -------------------------------------------------------------------- let GetMethodRefAsMethodDefIdx cenv (mref:ILMethodRef) = try let tref = mref.EnclosingTypeRef if not (isTypeRefLocal tref) then failwithf "method referred to by method impl, event or property is not in a type defined in this module, method ref is %A" mref; let tidx = GetIdxForTypeDef cenv (TdKey(tref.Enclosing,tref.Name)) let mdkey = MethodDefKey (tidx,mref.GenericArity, mref.Name, mref.ReturnType, mref.ArgTypes, mref.CallingConv.IsStatic) FindMethodDefIdx cenv mdkey with e -> failwithf "Error in GetMethodRefAsMethodDefIdx for mref = %A, error: %s" mref.Name e.Message; reraise() raise e let rec MethodRefInfoAsMemberRefRow cenv env fenv (nm,typ,callconv,args,ret,varargs,genarity) = MemberRefRow(GetTypeAsMemberRefParent cenv env typ, GetStringHeapIdx cenv nm, GetMethodRefInfoAsBlobIdx cenv fenv (callconv,args,ret,varargs,genarity)) and GetMethodRefInfoAsBlobIdx cenv env info = GetBytesAsBlobIdx cenv (GetCallsigAsBytes cenv env info) let GetMethodRefInfoAsMemberRefIdx cenv env ((_,typ,_,_,_,_,_) as minfo) = let fenv = envForMethodRef env typ FindOrAddRow cenv TableNames.MemberRef (MethodRefInfoAsMemberRefRow cenv env fenv minfo) let GetMethodRefInfoAsMethodRefOrDef isAlwaysMethodDef cenv env ((nm,typ:ILType,cc,args,ret,varargs,genarity) as minfo) = if isNone varargs && (isAlwaysMethodDef || isTypeLocal typ) then if not typ.IsNominal then failwith "GetMethodRefInfoAsMethodRefOrDef: unexpected local tref-typ"; try (mdor_MethodDef, GetMethodRefAsMethodDefIdx cenv (mkILMethRefRaw(typ.TypeRef, cc, nm, genarity, args,ret))) with MethodDefNotFound -> (mdor_MemberRef, GetMethodRefInfoAsMemberRefIdx cenv env minfo) else (mdor_MemberRef, GetMethodRefInfoAsMemberRefIdx cenv env minfo) // -------------------------------------------------------------------- // ILMethodSpec --> ILMethodRef/ILMethodDef/ILMethodSpec // -------------------------------------------------------------------- let rec GetMethodSpecInfoAsMethodSpecIdx cenv env (nm,typ,cc,args,ret,varargs,minst:ILGenericArgs) = let mdorTag,mdorRow = GetMethodRefInfoAsMethodRefOrDef false cenv env (nm,typ,cc,args,ret,varargs,minst.Length) let blob = emitBytesViaBuffer (fun bb -> bb.EmitByte e_IMAGE_CEE_CS_CALLCONV_GENERICINST; bb.EmitZ32 minst.Length; minst |> ILList.iter (EmitType cenv env bb)) FindOrAddRow cenv TableNames.MethodSpec (SimpleSharedRow [| MethodDefOrRef (mdorTag,mdorRow); Blob (GetBytesAsBlobIdx cenv blob) |]) and GetMethodDefOrRefAsUncodedToken (tag,idx) = let tab = if tag = mdor_MethodDef then TableNames.Method elif tag = mdor_MemberRef then TableNames.MemberRef else failwith "GetMethodDefOrRefAsUncodedToken" getUncodedToken tab idx and GetMethodSpecInfoAsUncodedToken cenv env ((_,_,_,_,_,_,minst:ILGenericArgs) as minfo) = if minst.Length > 0 then getUncodedToken TableNames.MethodSpec (GetMethodSpecInfoAsMethodSpecIdx cenv env minfo) else GetMethodDefOrRefAsUncodedToken (GetMethodRefInfoAsMethodRefOrDef false cenv env (GetMethodRefInfoOfMethodSpecInfo minfo)) and GetMethodSpecAsUncodedToken cenv env mspec = GetMethodSpecInfoAsUncodedToken cenv env (InfoOfMethodSpec mspec) and GetMethodRefInfoOfMethodSpecInfo (nm,typ,cc,args,ret,varargs,minst:ILGenericArgs) = (nm,typ,cc,args,ret,varargs,minst.Length) and GetMethodSpecAsMethodDefOrRef cenv env (mspec,varargs) = GetMethodRefInfoAsMethodRefOrDef false cenv env (GetMethodRefInfoOfMethodSpecInfo (InfoOfMethodSpec (mspec,varargs))) and GetMethodSpecAsMethodDef cenv env (mspec,varargs) = GetMethodRefInfoAsMethodRefOrDef true cenv env (GetMethodRefInfoOfMethodSpecInfo (InfoOfMethodSpec (mspec,varargs))) and InfoOfMethodSpec (mspec:ILMethodSpec,varargs) = (mspec.Name, mspec.EnclosingType, mspec.CallingConv, mspec.FormalArgTypes, mspec.FormalReturnType, varargs, mspec.GenericArgs) // -------------------------------------------------------------------- // method_in_parent --> ILMethodRef/ILMethodDef // // Used for MethodImpls. // -------------------------------------------------------------------- let rec GetOverridesSpecAsMemberRefIdx cenv env ospec = let fenv = envForOverrideSpec ospec let row = MethodRefInfoAsMemberRefRow cenv env fenv (ospec.MethodRef.Name, ospec.EnclosingType, ospec.MethodRef.CallingConv, ospec.MethodRef.ArgTypes, ospec.MethodRef.ReturnType, None, ospec.MethodRef.GenericArity) FindOrAddRow cenv TableNames.MemberRef row and GetOverridesSpecAsMethodDefOrRef cenv env (ospec:ILOverridesSpec) = let typ = ospec.EnclosingType if isTypeLocal typ then if not typ.IsNominal then failwith "GetOverridesSpecAsMethodDefOrRef: unexpected local tref-typ"; try (mdor_MethodDef, GetMethodRefAsMethodDefIdx cenv ospec.MethodRef) with MethodDefNotFound -> (mdor_MemberRef, GetOverridesSpecAsMemberRefIdx cenv env ospec) else (mdor_MemberRef, GetOverridesSpecAsMemberRefIdx cenv env ospec) // -------------------------------------------------------------------- // ILMethodRef --> ILMethodRef/ILMethodDef // // Used for Custom Attrs. // -------------------------------------------------------------------- let rec GetMethodRefAsMemberRefIdx cenv env fenv (mref:ILMethodRef) = let row = MethodRefInfoAsMemberRefRow cenv env fenv (mref.Name, mkILNonGenericBoxedTy mref.EnclosingTypeRef, mref.CallingConv, mref.ArgTypes, mref.ReturnType, None, mref.GenericArity) FindOrAddRow cenv TableNames.MemberRef row and GetMethodRefAsCustomAttribType cenv (mref:ILMethodRef) = let fenv = envForNonGenericMethodRef mref let tref = mref.EnclosingTypeRef if isTypeRefLocal tref then try (cat_MethodDef, GetMethodRefAsMethodDefIdx cenv mref) with MethodDefNotFound -> (cat_MemberRef, GetMethodRefAsMemberRefIdx cenv fenv fenv mref) else (cat_MemberRef, GetMethodRefAsMemberRefIdx cenv fenv fenv mref) // -------------------------------------------------------------------- // ILAttributes --> CustomAttribute rows // -------------------------------------------------------------------- let rec GetCustomAttrDataAsBlobIdx cenv (data:byte[]) = if data.Length = 0 then 0 else GetBytesAsBlobIdx cenv data and GetCustomAttrRow cenv hca attr = let cat = GetMethodRefAsCustomAttribType cenv attr.Method.MethodRef UnsharedRow [| HasCustomAttribute (fst hca, snd hca); CustomAttributeType (fst cat, snd cat); Blob (GetCustomAttrDataAsBlobIdx cenv attr.Data); |] and GenCustomAttrPass3 cenv hca attr = AddUnsharedRow cenv TableNames.CustomAttribute (GetCustomAttrRow cenv hca attr) |> ignore and GenCustomAttrsPass3 cenv hca (attrs: ILAttributes) = attrs.AsList |> List.iter (GenCustomAttrPass3 cenv hca) // -------------------------------------------------------------------- // ILPermissionSet --> DeclSecurity rows // -------------------------------------------------------------------- *) let rec GetSecurityDeclRow cenv hds (PermissionSet (action, s)) = UnsharedRow [| UShort (uint16 (List.assoc action (Lazy.force ILSecurityActionMap))); HasDeclSecurity (fst hds, snd hds); Blob (GetBytesAsBlobIdx cenv s); |] and GenSecurityDeclPass3 cenv hds attr = AddUnsharedRow cenv TableNames.Permission (GetSecurityDeclRow cenv hds attr) |> ignore and GenSecurityDeclsPass3 cenv hds attrs = List.iter (GenSecurityDeclPass3 cenv hds) attrs // -------------------------------------------------------------------- // ILFieldSpec --> FieldRef or ILFieldDef row // -------------------------------------------------------------------- let rec GetFieldSpecAsMemberRefRow cenv env fenv (fspec:ILFieldSpec) = MemberRefRow (GetTypeAsMemberRefParent cenv env fspec.EnclosingType, GetStringHeapIdx cenv fspec.Name, GetFieldSpecSigAsBlobIdx cenv fenv fspec) and GetFieldSpecAsMemberRefIdx cenv env fspec = let fenv = envForFieldSpec fspec FindOrAddRow cenv TableNames.MemberRef (GetFieldSpecAsMemberRefRow cenv env fenv fspec) // REVIEW: write into an accumuating buffer and EmitFieldSpecSig cenv env (bb: ByteBuffer) (fspec:ILFieldSpec) = bb.EmitByte e_IMAGE_CEE_CS_CALLCONV_FIELD; EmitType cenv env bb fspec.FormalType and GetFieldSpecSigAsBytes cenv env x = emitBytesViaBuffer (fun bb -> EmitFieldSpecSig cenv env bb x) and GetFieldSpecSigAsBlobIdx cenv env x = GetBytesAsBlobIdx cenv (GetFieldSpecSigAsBytes cenv env x) and GetFieldSpecAsFieldDefOrRef cenv env (fspec:ILFieldSpec) = let typ = fspec.EnclosingType if isTypeLocal typ then if not typ.IsNominal then failwith "GetFieldSpecAsFieldDefOrRef: unexpected local tref-typ"; let tref = typ.TypeRef let tidx = GetIdxForTypeDef cenv (TdKey(tref.Enclosing,tref.Name)) let fdkey = FieldDefKey (tidx,fspec.Name, fspec.FormalType) (true, FindFieldDefIdx cenv fdkey) else (false, GetFieldSpecAsMemberRefIdx cenv env fspec) and GetFieldDefOrRefAsUncodedToken (tag,idx) = let tab = if tag then TableNames.Field else TableNames.MemberRef getUncodedToken tab idx // -------------------------------------------------------------------- // callsig --> StandAloneSig // -------------------------------------------------------------------- let GetCallsigAsBlobIdx cenv env (callsig:ILCallingSignature,varargs) = GetBytesAsBlobIdx cenv (GetCallsigAsBytes cenv env (callsig.CallingConv, callsig.ArgTypes, callsig.ReturnType,varargs,0)) let GetCallsigAsStandAloneSigRow cenv env x = SimpleSharedRow [| Blob (GetCallsigAsBlobIdx cenv env x) |] let GetCallsigAsStandAloneSigIdx cenv env info = FindOrAddRow cenv TableNames.StandAloneSig (GetCallsigAsStandAloneSigRow cenv env info) // -------------------------------------------------------------------- // local signatures --> BlobHeap idx // -------------------------------------------------------------------- let EmitLocalSig cenv env (bb: ByteBuffer) (locals: ILLocals) = bb.EmitByte e_IMAGE_CEE_CS_CALLCONV_LOCAL_SIG; bb.EmitZ32 locals.Length; locals |> ILList.iter (fun l -> EmitType cenv env bb l.Type) let GetLocalSigAsBlobHeapIdx cenv env locals = GetBytesAsBlobIdx cenv (emitBytesViaBuffer (fun bb -> EmitLocalSig cenv env bb locals)) let GetLocalSigAsStandAloneSigIdx cenv env locals = SimpleSharedRow [| Blob (GetLocalSigAsBlobHeapIdx cenv env locals) |] type ExceptionClauseKind = | FinallyClause | FaultClause | TypeFilterClause of int32 | FilterClause of int type ExceptionClauseSpec = (int * int * int * int * ExceptionClauseKind) type CodeBuffer = // -------------------------------------------------------------------- // Buffer to write results of emitting code into. Also record: // - branch sources (where fixups will occur) // - possible branch destinations // - locations of embedded handles into the string table // - the exception table // -------------------------------------------------------------------- { code: ByteBuffer; /// (instruction; optional short form); start of instr in code buffer; code loc for the end of the instruction the fixup resides in ; where is the destination of the fixup mutable reqdBrFixups: ((int * int option) * int * ILCodeLabel list) list; availBrFixups: Dictionary ; /// code loc to fixup in code buffer mutable reqdStringFixupsInMethod: (int * int) list; /// data for exception handling clauses mutable seh: ExceptionClauseSpec list; seqpoints: ResizeArray; } static member Create _nm = { seh = []; code= ByteBuffer.Create 200; reqdBrFixups=[]; reqdStringFixupsInMethod=[]; availBrFixups = Dictionary<_,_>(10, HashIdentity.Structural) seqpoints = new ResizeArray<_>(10) } member codebuf.EmitExceptionClause seh = codebuf.seh <- seh :: codebuf.seh member codebuf.EmitSeqPoint cenv (m:ILSourceMarker) = if cenv.generatePdb then // table indexes are 1-based, document array indexes are 0-based let doc = (cenv.documents.FindOrAddSharedEntry m.Document) - 1 codebuf.seqpoints.Add { Document=doc; Offset= codebuf.code.Position; Line=m.Line; Column=m.Column; EndLine=m.EndLine; EndColumn=m.EndColumn; } member codebuf.EmitByte x = codebuf.code.EmitIntAsByte x member codebuf.EmitUInt16 x = codebuf.code.EmitUInt16 x member codebuf.EmitInt32 x = codebuf.code.EmitInt32 x member codebuf.EmitInt64 x = codebuf.code.EmitInt64 x member codebuf.EmitUncodedToken u = codebuf.EmitInt32 u member codebuf.RecordReqdStringFixup stringidx = codebuf.reqdStringFixupsInMethod <- (codebuf.code.Position, stringidx) :: codebuf.reqdStringFixupsInMethod; // Write a special value in that we check later when applying the fixup codebuf.EmitInt32 0xdeadbeef member codebuf.RecordReqdBrFixups i tgs = codebuf.reqdBrFixups <- (i, codebuf.code.Position, tgs) :: codebuf.reqdBrFixups; // Write a special value in that we check later when applying the fixup // Value is 0x11 {deadbbbb}* where 11 is for the instruction and deadbbbb is for each target codebuf.EmitByte 0x11; // for the instruction (if fst i = i_switch then codebuf.EmitInt32 tgs.Length); List.iter (fun _ -> codebuf.EmitInt32 0xdeadbbbb) tgs member codebuf.RecordReqdBrFixup i tg = codebuf.RecordReqdBrFixups i [tg] member codebuf.RecordAvailBrFixup tg = codebuf.availBrFixups.[tg] <- codebuf.code.Position module Codebuf = begin // -------------------------------------------------------------------- // Applying branch fixups. Use short versions of instructions // wherever possible. Sadly we can only determine if we can use a short // version after we've layed out the code for all other instructions. // This in turn means that using a short version may change // the various offsets into the code. // -------------------------------------------------------------------- let binaryChop p (arr: 'T[]) = let rec go n m = if n > m then raise (KeyNotFoundException("binary chop did not find element")) else let i = (n+m)/2 let c = p arr.[i] if c = 0 then i elif c < 0 then go n (i-1) else go (i+1) m go 0 (Array.length arr) let applyBrFixups (origCode :byte[]) origExnClauses origReqdStringFixups (origAvailBrFixups: Dictionary) origReqdBrFixups origSeqPoints origScopes = let orderedOrigReqdBrFixups = origReqdBrFixups |> List.sortBy (fun (_,fixuploc,_) -> fixuploc) let newCode = ByteBuffer.Create origCode.Length // Copy over all the code, working out whether the branches will be short // or long and adjusting the branch destinations. Record an adjust function to adjust all the other // gumpf that refers to fixed offsets in the code stream. let newCode, newReqdBrFixups,adjuster = let remainingReqdFixups = ref orderedOrigReqdBrFixups let origWhere = ref 0 let newWhere = ref 0 let doneLast = ref false let newReqdBrFixups = ref [] let adjustments = ref [] while (!remainingReqdFixups <> [] || not !doneLast) do let doingLast = isNil !remainingReqdFixups let origStartOfNoBranchBlock = !origWhere let newStartOfNoBranchBlock = !newWhere let origEndOfNoBranchBlock = if doingLast then origCode.Length else let (_,origStartOfInstr,_) = List.head !remainingReqdFixups origStartOfInstr // Copy over a chunk of non-branching code let nobranch_len = origEndOfNoBranchBlock - origStartOfNoBranchBlock newCode.EmitBytes origCode.[origStartOfNoBranchBlock..origStartOfNoBranchBlock+nobranch_len-1]; // Record how to adjust addresses in this range, including the branch instruction // we write below, or the end of the method if we're doing the last bblock adjustments := (origStartOfNoBranchBlock,origEndOfNoBranchBlock,newStartOfNoBranchBlock) :: !adjustments; // Increment locations to the branch instruction we're really interested in origWhere := origEndOfNoBranchBlock; newWhere := !newWhere + nobranch_len; // Now do the branch instruction. Decide whether the fixup will be short or long in the new code if doingLast then doneLast := true else let (i,origStartOfInstr,tgs:ILCodeLabel list) = List.head !remainingReqdFixups remainingReqdFixups := List.tail !remainingReqdFixups; if origCode.[origStartOfInstr] <> 0x11uy then failwith "br fixup sanity check failed (1)"; let i_length = if fst i = i_switch then 5 else 1 origWhere := !origWhere + i_length; let origEndOfInstr = origStartOfInstr + i_length + 4 * tgs.Length let newEndOfInstrIfSmall = !newWhere + i_length + 1 let newEndOfInstrIfBig = !newWhere + i_length + 4 * tgs.Length let short = match i,tgs with | (_,Some i_short),[tg] when begin // Use the original offsets to compute if the branch is small or large. This is // a safe approximation because code only gets smaller. if not (origAvailBrFixups.ContainsKey tg) then dprintn ("branch target " + formatCodeLabel tg + " not found in code"); let origDest = if origAvailBrFixups.ContainsKey tg then origAvailBrFixups.[tg] else 666666 let origRelOffset = origDest - origEndOfInstr -128 <= origRelOffset && origRelOffset <= 127 end -> newCode.EmitIntAsByte i_short; true | (i_long,_),_ -> newCode.EmitIntAsByte i_long; (if i_long = i_switch then newCode.EmitInt32 tgs.Length); false newWhere := !newWhere + i_length; if !newWhere <> newCode.Position then dprintn "mismatch between newWhere and newCode"; tgs |> List.iter (fun tg -> let origFixupLoc = !origWhere checkFixup32 origCode origFixupLoc 0xdeadbbbb; if short then newReqdBrFixups := (!newWhere, newEndOfInstrIfSmall, tg, true) :: !newReqdBrFixups; newCode.EmitIntAsByte 0x98; (* sanity check *) newWhere := !newWhere + 1; else newReqdBrFixups := (!newWhere, newEndOfInstrIfBig, tg, false) :: !newReqdBrFixups; newCode.EmitInt32 0xf00dd00f; (* sanity check *) newWhere := !newWhere + 4; if !newWhere <> newCode.Position then dprintn "mismatch between newWhere and newCode"; origWhere := !origWhere + 4); if !origWhere <> origEndOfInstr then dprintn "mismatch between origWhere and origEndOfInstr"; let adjuster = let arr = Array.ofList (List.rev !adjustments) fun addr -> let i = try binaryChop (fun (a1,a2,_) -> if addr < a1 then -1 elif addr > a2 then 1 else 0) arr with :? KeyNotFoundException -> failwith ("adjuster: address "+string addr+" is out of range") let (origStartOfNoBranchBlock,_,newStartOfNoBranchBlock) = arr.[i] addr - (origStartOfNoBranchBlock - newStartOfNoBranchBlock) newCode.Close(), !newReqdBrFixups, adjuster // Now adjust everything let newAvailBrFixups = let tab = Dictionary<_,_>(10, HashIdentity.Structural) for (KeyValue(tglab,origBrDest)) in origAvailBrFixups do tab.[tglab] <- adjuster origBrDest tab let newReqdStringFixups = List.map (fun (origFixupLoc,stok) -> adjuster origFixupLoc,stok) origReqdStringFixups let newSeqPoints = Array.map (fun (sp:PdbSequencePoint) -> {sp with Offset=adjuster sp.Offset}) origSeqPoints let newExnClauses = origExnClauses |> List.map (fun (st1,sz1,st2,sz2,kind) -> (adjuster st1,(adjuster (st1 + sz1) - adjuster st1), adjuster st2,(adjuster (st2 + sz2) - adjuster st2), (match kind with | FinallyClause | FaultClause | TypeFilterClause _ -> kind | FilterClause n -> FilterClause (adjuster n)))) let newScopes = let rec remap scope = {scope with StartOffset = adjuster scope.StartOffset; EndOffset = adjuster scope.EndOffset; Children = Array.map remap scope.Children } List.map remap origScopes // Now apply the adjusted fixups in the new code newReqdBrFixups |> List.iter (fun (newFixupLoc,endOfInstr,tg, small) -> if not (newAvailBrFixups.ContainsKey tg) then failwith ("target "+formatCodeLabel tg+" not found in new fixups"); try let n = newAvailBrFixups.[tg] let relOffset = (n - endOfInstr) if small then if Bytes.get newCode newFixupLoc <> 0x98 then failwith "br fixupsanity check failed"; newCode.[newFixupLoc] <- b0 relOffset; else checkFixup32 newCode newFixupLoc 0xf00dd00fl; applyFixup32 newCode newFixupLoc relOffset with :? KeyNotFoundException -> ()); newCode, newReqdStringFixups, newExnClauses, newSeqPoints, newScopes // -------------------------------------------------------------------- // Structured residue of emitting instructions: SEH exception handling // and scopes for local variables. // -------------------------------------------------------------------- // Emitting instructions generates a tree of seh specifications // We then emit the exception handling specs separately. // nb. ECMA spec says the SEH blocks must be returned inside-out type SEHTree = | Tip | Node of (ExceptionClauseSpec option * SEHTree list) list // -------------------------------------------------------------------- // Table of encodings for instructions without arguments, also indexes // for all instructions. // -------------------------------------------------------------------- let encodingsForNoArgInstrs = System.Collections.Generic.Dictionary<_,_>(300, HashIdentity.Structural) let _ = List.iter (fun (x,mk) -> encodingsForNoArgInstrs.[mk] <- x) (noArgInstrs.Force()) let encodingsOfNoArgInstr si = encodingsForNoArgInstrs.[si] // -------------------------------------------------------------------- // Emit instructions // -------------------------------------------------------------------- /// Emit the code for an instruction let emitInstrCode (codebuf: CodeBuffer) i = if i > 0xFF then assert (i >>> 8 = 0xFE); codebuf.EmitByte ((i >>> 8) &&& 0xFF); codebuf.EmitByte (i &&& 0xFF); else codebuf.EmitByte i let emitTypeInstr cenv codebuf env i ty = emitInstrCode codebuf i; codebuf.EmitUncodedToken (getTypeDefOrRefAsUncodedToken (GetTypeAsTypeDefOrRef cenv env ty)) let emitMethodSpecInfoInstr cenv codebuf env i mspecinfo = emitInstrCode codebuf i; codebuf.EmitUncodedToken (GetMethodSpecInfoAsUncodedToken cenv env mspecinfo) let emitMethodSpecInstr cenv codebuf env i mspec = emitInstrCode codebuf i; codebuf.EmitUncodedToken (GetMethodSpecAsUncodedToken cenv env mspec) let emitFieldSpecInstr cenv codebuf env i fspec = emitInstrCode codebuf i; codebuf.EmitUncodedToken (GetFieldDefOrRefAsUncodedToken (GetFieldSpecAsFieldDefOrRef cenv env fspec)) let emitShortUInt16Instr codebuf (i_short,i) x = let n = int32 x if n <= 255 then emitInstrCode codebuf i_short; codebuf.EmitByte n; else emitInstrCode codebuf i; codebuf.EmitUInt16 x; let emitShortInt32Instr codebuf (i_short,i) x = if x >= (-128) && x <= 127 then emitInstrCode codebuf i_short; codebuf.EmitByte (if x < 0x0 then x + 256 else x); else emitInstrCode codebuf i; codebuf.EmitInt32 x; let emitTailness (cenv: cenv) codebuf tl = if tl = Tailcall && cenv.emitTailcalls then emitInstrCode codebuf i_tail let emitAfterTailcall codebuf tl = if tl = Tailcall then emitInstrCode codebuf i_ret let emitVolatility codebuf tl = if tl = Volatile then emitInstrCode codebuf i_volatile let emitConstrained cenv codebuf env ty = emitInstrCode codebuf i_constrained; codebuf.EmitUncodedToken (getTypeDefOrRefAsUncodedToken (GetTypeAsTypeDefOrRef cenv env ty)) let emitAlignment codebuf tl = match tl with | Aligned -> () | Unaligned1 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x1 | Unaligned2 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x2 | Unaligned4 -> emitInstrCode codebuf i_unaligned; codebuf.EmitByte 0x4 let rec emitInstr cenv codebuf env instr = match instr with | si when isNoArgInstr si -> emitInstrCode codebuf (encodingsOfNoArgInstr si) | I_brcmp (cmp,tg1,_) -> codebuf.RecordReqdBrFixup ((Lazy.force ILCmpInstrMap).[cmp], Some (Lazy.force ILCmpInstrRevMap).[cmp]) tg1 | I_br _ -> () | I_seqpoint s -> codebuf.EmitSeqPoint cenv s | I_leave tg -> codebuf.RecordReqdBrFixup (i_leave,Some i_leave_s) tg | I_call (tl,mspec,varargs) -> emitTailness cenv codebuf tl; emitMethodSpecInstr cenv codebuf env i_call (mspec,varargs); emitAfterTailcall codebuf tl | I_callvirt (tl,mspec,varargs) -> emitTailness cenv codebuf tl; emitMethodSpecInstr cenv codebuf env i_callvirt (mspec,varargs); emitAfterTailcall codebuf tl | I_callconstraint (tl,ty,mspec,varargs) -> emitTailness cenv codebuf tl; emitConstrained cenv codebuf env ty; emitMethodSpecInstr cenv codebuf env i_callvirt (mspec,varargs); emitAfterTailcall codebuf tl | I_newobj (mspec,varargs) -> emitMethodSpecInstr cenv codebuf env i_newobj (mspec,varargs) | I_ldftn mspec -> emitMethodSpecInstr cenv codebuf env i_ldftn (mspec,None) | I_ldvirtftn mspec -> emitMethodSpecInstr cenv codebuf env i_ldvirtftn (mspec,None) | I_calli (tl,callsig,varargs) -> emitTailness cenv codebuf tl; emitInstrCode codebuf i_calli; codebuf.EmitUncodedToken (getUncodedToken TableNames.StandAloneSig (GetCallsigAsStandAloneSigIdx cenv env (callsig,varargs))); emitAfterTailcall codebuf tl | I_ldarg u16 -> emitShortUInt16Instr codebuf (i_ldarg_s,i_ldarg) u16 | I_starg u16 -> emitShortUInt16Instr codebuf (i_starg_s,i_starg) u16 | I_ldarga u16 -> emitShortUInt16Instr codebuf (i_ldarga_s,i_ldarga) u16 | I_ldloc u16 -> emitShortUInt16Instr codebuf (i_ldloc_s,i_ldloc) u16 | I_stloc u16 -> emitShortUInt16Instr codebuf (i_stloc_s,i_stloc) u16 | I_ldloca u16 -> emitShortUInt16Instr codebuf (i_ldloca_s,i_ldloca) u16 | I_cpblk (al,vol) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitInstrCode codebuf i_cpblk | I_initblk (al,vol) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitInstrCode codebuf i_initblk | (AI_ldc (DT_I4, ILConst.I4 x)) -> emitShortInt32Instr codebuf (i_ldc_i4_s,i_ldc_i4) x | (AI_ldc (DT_I8, ILConst.I8 x)) -> emitInstrCode codebuf i_ldc_i8; codebuf.EmitInt64 x; | (AI_ldc (_, ILConst.R4 x)) -> emitInstrCode codebuf i_ldc_r4; codebuf.EmitInt32 (bitsOfSingle x) | (AI_ldc (_, ILConst.R8 x)) -> emitInstrCode codebuf i_ldc_r8; codebuf.EmitInt64 (bitsOfDouble x) | I_ldind (al,vol,dt) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitInstrCode codebuf (match dt with | DT_I -> i_ldind_i | DT_I1 -> i_ldind_i1 | DT_I2 -> i_ldind_i2 | DT_I4 -> i_ldind_i4 | DT_U1 -> i_ldind_u1 | DT_U2 -> i_ldind_u2 | DT_U4 -> i_ldind_u4 | DT_I8 -> i_ldind_i8 | DT_R4 -> i_ldind_r4 | DT_R8 -> i_ldind_r8 | DT_REF -> i_ldind_ref | _ -> failwith "ldind") | I_stelem dt -> emitInstrCode codebuf (match dt with | DT_I | DT_U -> i_stelem_i | DT_U1 | DT_I1 -> i_stelem_i1 | DT_I2 | DT_U2 -> i_stelem_i2 | DT_I4 | DT_U4 -> i_stelem_i4 | DT_I8 | DT_U8 -> i_stelem_i8 | DT_R4 -> i_stelem_r4 | DT_R8 -> i_stelem_r8 | DT_REF -> i_stelem_ref | _ -> failwith "stelem") | I_ldelem dt -> emitInstrCode codebuf (match dt with | DT_I -> i_ldelem_i | DT_I1 -> i_ldelem_i1 | DT_I2 -> i_ldelem_i2 | DT_I4 -> i_ldelem_i4 | DT_I8 -> i_ldelem_i8 | DT_U1 -> i_ldelem_u1 | DT_U2 -> i_ldelem_u2 | DT_U4 -> i_ldelem_u4 | DT_R4 -> i_ldelem_r4 | DT_R8 -> i_ldelem_r8 | DT_REF -> i_ldelem_ref | _ -> failwith "ldelem") | I_stind (al,vol,dt) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitInstrCode codebuf (match dt with | DT_U | DT_I -> i_stind_i | DT_U1 | DT_I1 -> i_stind_i1 | DT_U2 | DT_I2 -> i_stind_i2 | DT_U4 | DT_I4 -> i_stind_i4 | DT_U8 | DT_I8 -> i_stind_i8 | DT_R4 -> i_stind_r4 | DT_R8 -> i_stind_r8 | DT_REF -> i_stind_ref | _ -> failwith "stelem") | I_switch (labs,_) -> codebuf.RecordReqdBrFixups (i_switch,None) labs | I_ldfld (al,vol,fspec) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitFieldSpecInstr cenv codebuf env i_ldfld fspec | I_ldflda fspec -> emitFieldSpecInstr cenv codebuf env i_ldflda fspec | I_ldsfld (vol,fspec) -> emitVolatility codebuf vol; emitFieldSpecInstr cenv codebuf env i_ldsfld fspec | I_ldsflda fspec -> emitFieldSpecInstr cenv codebuf env i_ldsflda fspec | I_stfld (al,vol,fspec) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitFieldSpecInstr cenv codebuf env i_stfld fspec | I_stsfld (vol,fspec) -> emitVolatility codebuf vol; emitFieldSpecInstr cenv codebuf env i_stsfld fspec | I_ldtoken tok -> emitInstrCode codebuf i_ldtoken; codebuf.EmitUncodedToken (match tok with | ILToken.ILType typ -> match GetTypeAsTypeDefOrRef cenv env typ with | (tag,idx) when tag = tdor_TypeDef -> getUncodedToken TableNames.TypeDef idx | (tag,idx) when tag = tdor_TypeRef -> getUncodedToken TableNames.TypeRef idx | (tag,idx) when tag = tdor_TypeSpec -> getUncodedToken TableNames.TypeSpec idx | _ -> failwith "?" | ILToken.ILMethod mspec -> match GetMethodSpecAsMethodDefOrRef cenv env (mspec,None) with | (tag,idx) when tag = mdor_MethodDef -> getUncodedToken TableNames.Method idx | (tag,idx) when tag = mdor_MemberRef -> getUncodedToken TableNames.MemberRef idx | _ -> failwith "?" | ILToken.ILField fspec -> match GetFieldSpecAsFieldDefOrRef cenv env fspec with | (true,idx) -> getUncodedToken TableNames.Field idx | (false,idx) -> getUncodedToken TableNames.MemberRef idx) | I_ldstr s -> emitInstrCode codebuf i_ldstr; codebuf.RecordReqdStringFixup (GetUserStringHeapIdx cenv s) | I_box ty -> emitTypeInstr cenv codebuf env i_box ty | I_unbox ty -> emitTypeInstr cenv codebuf env i_unbox ty | I_unbox_any ty -> emitTypeInstr cenv codebuf env i_unbox_any ty | I_newarr (shape,ty) -> if (shape = ILArrayShape.SingleDimensional) then emitTypeInstr cenv codebuf env i_newarr ty else let args = ILList.init shape.Rank (fun _ -> cenv.ilg.typ_int32) emitMethodSpecInfoInstr cenv codebuf env i_newobj (".ctor",mkILArrTy(ty,shape),ILCallingConv.Instance,args,ILType.Void,None,emptyILGenericArgs) | I_stelem_any (shape,ty) -> if (shape = ILArrayShape.SingleDimensional) then emitTypeInstr cenv codebuf env i_stelem_any ty else let args = ILList.init (shape.Rank+1) (fun i -> if i < shape.Rank then cenv.ilg.typ_int32 else ty) emitMethodSpecInfoInstr cenv codebuf env i_call ("Set",mkILArrTy(ty,shape),ILCallingConv.Instance,args,ILType.Void,None,emptyILGenericArgs) | I_ldelem_any (shape,ty) -> if (shape = ILArrayShape.SingleDimensional) then emitTypeInstr cenv codebuf env i_ldelem_any ty else let args = ILList.init shape.Rank (fun _ -> cenv.ilg.typ_int32) emitMethodSpecInfoInstr cenv codebuf env i_call ("Get",mkILArrTy(ty,shape),ILCallingConv.Instance,args,ty,None,emptyILGenericArgs) | I_ldelema (ro,_isNativePtr,shape,ty) -> if (ro = ReadonlyAddress) then emitInstrCode codebuf i_readonly; if (shape = ILArrayShape.SingleDimensional) then emitTypeInstr cenv codebuf env i_ldelema ty else let args = ILList.init shape.Rank (fun _ -> cenv.ilg.typ_int32) emitMethodSpecInfoInstr cenv codebuf env i_call ("Address",mkILArrTy(ty,shape),ILCallingConv.Instance,args,ILType.Byref ty,None,emptyILGenericArgs) | I_castclass ty -> emitTypeInstr cenv codebuf env i_castclass ty | I_isinst ty -> emitTypeInstr cenv codebuf env i_isinst ty | I_refanyval ty -> emitTypeInstr cenv codebuf env i_refanyval ty | I_mkrefany ty -> emitTypeInstr cenv codebuf env i_mkrefany ty | I_initobj ty -> emitTypeInstr cenv codebuf env i_initobj ty | I_ldobj (al,vol,ty) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitTypeInstr cenv codebuf env i_ldobj ty | I_stobj (al,vol,ty) -> emitAlignment codebuf al; emitVolatility codebuf vol; emitTypeInstr cenv codebuf env i_stobj ty | I_cpobj ty -> emitTypeInstr cenv codebuf env i_cpobj ty | I_sizeof ty -> emitTypeInstr cenv codebuf env i_sizeof ty | EI_ldlen_multi (_,m) -> emitShortInt32Instr codebuf (i_ldc_i4_s,i_ldc_i4) m; emitInstr cenv codebuf env (mkNormalCall(mkILNonGenericMethSpecInTy(cenv.ilg.typ_Array, ILCallingConv.Instance, "GetLength", [(cenv.ilg.typ_int32)], (cenv.ilg.typ_int32)))) | _ -> failwith "an IL instruction cannot be emitted" let mkScopeNode cenv (localSigs: _[]) (a,b,ls,ch) = if (isNil ls || not cenv.generatePdb) then ch else [ { Children= Array.ofList ch; StartOffset=a; EndOffset=b; Locals= Array.ofList (List.map (fun x -> { Name=x.LocalName; Signature= (try localSigs.[x.LocalIndex] with _ -> failwith ("local variable index "+string x.LocalIndex+"in debug info does not reference a valid local")); Index= x.LocalIndex } ) (List.filter (fun v -> v.LocalName <> "") ls)) } ] let rec emitCode cenv localSigs codebuf env (susp,code) = match code with | TryBlock (c,seh) -> commitSusp codebuf susp (uniqueEntryOfCode c); let tryStart = codebuf.code.Position let susp,child1,scope1 = emitCode cenv localSigs codebuf env (None,c) commitSuspNoDest codebuf susp; let tryFinish = codebuf.code.Position let exnBranches = match seh with | FaultBlock flt -> let handlerStart = codebuf.code.Position let susp,child2,scope2 = emitCode cenv localSigs codebuf env (None,flt) commitSuspNoDest codebuf susp; let handlerFinish = codebuf.code.Position [ Some (tryStart,(tryFinish - tryStart), handlerStart,(handlerFinish - handlerStart), FaultClause), [(child2,scope2)] ] | FinallyBlock flt -> let handlerStart = codebuf.code.Position let susp,child2,scope2 = emitCode cenv localSigs codebuf env (None,flt) commitSuspNoDest codebuf susp; let handlerFinish = codebuf.code.Position [ Some (tryStart,(tryFinish - tryStart), handlerStart,(handlerFinish - handlerStart), FinallyClause), [(child2,scope2)] ] | FilterCatchBlock clauses -> clauses |> List.map (fun (flt,ctch) -> match flt with | TypeFilter typ -> let handlerStart = codebuf.code.Position let susp,child2,scope2 = emitCode cenv localSigs codebuf env (None,ctch) commitSuspNoDest codebuf susp; let handlerFinish = codebuf.code.Position Some (tryStart,(tryFinish - tryStart), handlerStart,(handlerFinish - handlerStart), TypeFilterClause (getTypeDefOrRefAsUncodedToken (GetTypeAsTypeDefOrRef cenv env typ))), [(child2,scope2)] | CodeFilter fltcode -> let filterStart = codebuf.code.Position let susp,child2,scope2 = emitCode cenv localSigs codebuf env (None,fltcode) commitSuspNoDest codebuf susp; let handlerStart = codebuf.code.Position let susp,child3,scope3 = emitCode cenv localSigs codebuf env (None,ctch) commitSuspNoDest codebuf susp; let handlerFinish = codebuf.code.Position Some (tryStart, (tryFinish - tryStart), handlerStart, (handlerFinish - handlerStart), FilterClause filterStart), [(child2,scope2); (child3,scope3)]) (None, Node((None,[child1])::List.map (fun (a,b) -> (a,List.map fst b)) exnBranches), scope1 @ List.concat ((List.collect (fun (_,b) -> List.map snd b) exnBranches))) | RestrictBlock _ | GroupBlock _ -> // NOTE: ensure tailcalls for critical linear loop using standard continuation technique let rec emitCodeLinear (susp,b) cont = match b with | RestrictBlock (_,code2) -> emitCodeLinear (susp,code2) cont | GroupBlock (locs,codes) -> let start = codebuf.code.Position // Imperative collectors for the sub-blocks let newSusp = ref susp let childSEH = ref [] let childScopes = ref [] // Push the results of collecting one sub-block into the reference cells let collect (susp,seh,scopes) = newSusp := susp; childSEH := seh :: !childSEH; childScopes := scopes :: !childScopes // Close the collection by generating the (susp,node,scope-node) triple let close () = let fin = codebuf.code.Position (!newSusp, Node([(None,(List.rev !childSEH))]), mkScopeNode cenv localSigs (start,fin,locs,List.concat (List.rev !childScopes))) match codes with | [c] -> // emitCodeLinear sequence of nested blocks emitCodeLinear (!newSusp,c) (fun results -> collect results; cont (close())) | codes -> // Multiple blocks: leave the linear sequence and process each seperately codes |> List.iter (fun c -> collect (emitCode cenv localSigs codebuf env (!newSusp,c))); cont(close()) | c -> // leave the linear sequence cont (emitCode cenv localSigs codebuf env (susp,c)) // OK, process the linear sequence emitCodeLinear (susp,code) (fun x -> x) | ILBasicBlock bb -> // Leaf case: one basic block commitSusp codebuf susp bb.Label; codebuf.RecordAvailBrFixup bb.Label; let instrs = bb.Instructions for i = 0 to instrs.Length - 1 do emitInstr cenv codebuf env instrs.[i]; bb.Fallthrough, Tip, [] and brToSusp (codebuf: CodeBuffer) dest = codebuf.RecordReqdBrFixup (i_br,Some i_br_s) dest and commitSusp codebuf susp lab = match susp with | Some dest when dest <> lab -> brToSusp codebuf dest | _ -> () and commitSuspNoDest codebuf susp = match susp with | Some dest -> brToSusp codebuf dest | _ -> () // Flatten the SEH tree let rec emitExceptionHandlerTree codebuf sehTree = match sehTree with | Tip -> () | Node clauses -> List.iter (emitExceptionHandlerTree2 codebuf) clauses and emitExceptionHandlerTree2 (codebuf: CodeBuffer) (x,childSEH) = List.iter (emitExceptionHandlerTree codebuf) childSEH; // internal first match x with | None -> () | Some clause -> codebuf.EmitExceptionClause clause let EmitTopCode cenv localSigs env nm code = let codebuf = CodeBuffer.Create nm let finalSusp, SEHTree, origScopes = emitCode cenv localSigs codebuf env (Some (uniqueEntryOfCode code),code) (match finalSusp with Some dest -> brToSusp codebuf dest | _ -> ()); emitExceptionHandlerTree codebuf SEHTree; let origCode = codebuf.code.Close() let origExnClauses = List.rev codebuf.seh let origReqdStringFixups = codebuf.reqdStringFixupsInMethod let origAvailBrFixups = codebuf.availBrFixups let origReqdBrFixups = codebuf.reqdBrFixups let origSeqPoints = codebuf.seqpoints.ToArray() let newCode, newReqdStringFixups, newExnClauses, newSeqPoints, newScopes = applyBrFixups origCode origExnClauses origReqdStringFixups origAvailBrFixups origReqdBrFixups origSeqPoints origScopes let rootScope = { Children= Array.ofList newScopes; StartOffset=0; EndOffset=newCode.Length; Locals=[| |]; } (newReqdStringFixups,newExnClauses, newCode, newSeqPoints, rootScope) end // -------------------------------------------------------------------- // ILMethodBody --> bytes // -------------------------------------------------------------------- let GetFieldDefTypeAsBlobIdx cenv env ty = let bytes = emitBytesViaBuffer (fun bb -> bb.EmitByte e_IMAGE_CEE_CS_CALLCONV_FIELD; EmitType cenv env bb ty) GetBytesAsBlobIdx cenv bytes let GenILMethodBody mname cenv env (il: ILMethodBody) = let localSigs = if cenv.generatePdb then il.Locals |> ILList.toArray |> Array.map (fun l -> // Write a fake entry for the local signature headed by e_IMAGE_CEE_CS_CALLCONV_FIELD. This is referenced by the PDB file ignore (FindOrAddRow cenv TableNames.StandAloneSig (SimpleSharedRow [| Blob (GetFieldDefTypeAsBlobIdx cenv env l.Type) |])); // Now write the type GetTypeAsBytes cenv env l.Type) else [| |] let requiredStringFixups,seh,code,seqpoints, scopes = Codebuf.EmitTopCode cenv localSigs env mname il.Code let codeSize = code.Length let methbuf = ByteBuffer.Create (codeSize * 3) // Do we use the tiny format? if ILList.isEmpty il.Locals && il.MaxStack <= 8 && isNil seh && codeSize < 64 then // Use Tiny format let alignedCodeSize = align 4 (codeSize + 1) let codePadding = (alignedCodeSize - (codeSize + 1)) let requiredStringFixups' = (1,requiredStringFixups) methbuf.EmitByte (byte codeSize <<< 2 ||| e_CorILMethod_TinyFormat); methbuf.EmitBytes code; methbuf.EmitPadding codePadding; (requiredStringFixups', methbuf.Close()), seqpoints, scopes else // Use Fat format let flags = e_CorILMethod_FatFormat ||| (if seh <> [] then e_CorILMethod_MoreSects else 0x0uy) ||| (if il.IsZeroInit then e_CorILMethod_InitLocals else 0x0uy) let localToken = if ILList.isEmpty il.Locals then 0x0 else getUncodedToken TableNames.StandAloneSig (FindOrAddRow cenv TableNames.StandAloneSig (GetLocalSigAsStandAloneSigIdx cenv env il.Locals)) let alignedCodeSize = align 0x4 codeSize let codePadding = (alignedCodeSize - codeSize) methbuf.EmitByte flags; methbuf.EmitByte 0x30uy; // last four bits record size of fat header in 4 byte chunks - this is always 12 bytes = 3 four word chunks methbuf.EmitUInt16 (uint16 il.MaxStack); methbuf.EmitInt32 codeSize; methbuf.EmitInt32 localToken; methbuf.EmitBytes code; methbuf.EmitPadding codePadding; if nonNil seh then // Can we use the small exception handling table format? let smallSize = (seh.Length * 12 + 4) let canUseSmall = smallSize <= 0xFF && seh |> List.forall (fun (st1,sz1,st2,sz2,_) -> st1 <= 0xFFFF && st2 <= 0xFFFF && sz1 <= 0xFF && sz2 <= 0xFF) let kindAsInt32 k = match k with | FinallyClause -> e_COR_ILEXCEPTION_CLAUSE_FINALLY | FaultClause -> e_COR_ILEXCEPTION_CLAUSE_FAULT | FilterClause _ -> e_COR_ILEXCEPTION_CLAUSE_FILTER | TypeFilterClause _ -> e_COR_ILEXCEPTION_CLAUSE_EXCEPTION let kindAsExtraInt32 k = match k with | FinallyClause | FaultClause -> 0x0 | FilterClause i -> i | TypeFilterClause uncoded -> uncoded if canUseSmall then methbuf.EmitByte e_CorILMethod_Sect_EHTable; methbuf.EmitByte (b0 smallSize); methbuf.EmitByte 0x00uy; methbuf.EmitByte 0x00uy; seh |> List.iter (fun (st1,sz1,st2,sz2,kind) -> let k32 = kindAsInt32 kind methbuf.EmitInt32AsUInt16 k32; methbuf.EmitInt32AsUInt16 st1; methbuf.EmitByte (b0 sz1); methbuf.EmitInt32AsUInt16 st2; methbuf.EmitByte (b0 sz2); methbuf.EmitInt32 (kindAsExtraInt32 kind)) else let bigSize = (seh.Length * 24 + 4) methbuf.EmitByte (e_CorILMethod_Sect_EHTable ||| e_CorILMethod_Sect_FatFormat); methbuf.EmitByte (b0 bigSize); methbuf.EmitByte (b1 bigSize); methbuf.EmitByte (b2 bigSize); seh |> List.iter (fun (st1,sz1,st2,sz2,kind) -> let k32 = kindAsInt32 kind methbuf.EmitInt32 k32; methbuf.EmitInt32 st1; methbuf.EmitInt32 sz1; methbuf.EmitInt32 st2; methbuf.EmitInt32 sz2; methbuf.EmitInt32 (kindAsExtraInt32 kind)) let requiredStringFixups' = (12,requiredStringFixups) (requiredStringFixups', methbuf.Close()), seqpoints, scopes // -------------------------------------------------------------------- // ILFieldDef --> FieldDef Row // -------------------------------------------------------------------- let rec GetFieldDefAsFieldDefRow cenv env (fd: ILFieldDef) = let flags = GetMemberAccessFlags fd.Access ||| (if fd.IsStatic then 0x0010 else 0x0) ||| (if fd.IsInitOnly then 0x0020 else 0x0) ||| (if fd.IsLiteral then 0x0040 else 0x0) ||| (if fd.NotSerialized then 0x0080 else 0x0) ||| (if fd.IsSpecialName then 0x0200 else 0x0) ||| (if fd.IsSpecialName then 0x0400 else 0x0) ||| // REVIEW: RTSpecialName (if (fd.LiteralValue <> None) then 0x8000 else 0x0) ||| (if (fd.Marshal <> None) then 0x1000 else 0x0) ||| (if (fd.Data <> None) then 0x0100 else 0x0) UnsharedRow [| UShort (uint16 flags); StringE (GetStringHeapIdx cenv fd.Name); Blob (GetFieldDefSigAsBlobIdx cenv env fd ); |] and GetFieldDefSigAsBlobIdx cenv env fd = GetFieldDefTypeAsBlobIdx cenv env fd.Type and GenFieldDefPass3 cenv env fd = let fidx = AddUnsharedRow cenv TableNames.Field (GetFieldDefAsFieldDefRow cenv env fd) GenCustomAttrsPass3 cenv (hca_FieldDef,fidx) fd.CustomAttrs; // Write FieldRVA table - fixups into data section done later match fd.Data with | None -> () | Some b -> let offs = cenv.data.Position cenv.data.EmitBytes b; AddUnsharedRow cenv TableNames.FieldRVA (UnsharedRow [| Data (offs, false); SimpleIndex (TableNames.Field,fidx) |]) |> ignore // Write FieldMarshal table match fd.Marshal with | None -> () | Some ntyp -> AddUnsharedRow cenv TableNames.FieldMarshal (UnsharedRow [| HasFieldMarshal (hfm_FieldDef, fidx); Blob (GetNativeTypeAsBlobIdx cenv ntyp) |]) |> ignore // Write Contant table match fd.LiteralValue with | None -> () | Some i -> AddUnsharedRow cenv TableNames.Constant (UnsharedRow [| GetFieldInitFlags i; HasConstant (hc_FieldDef, fidx); Blob (GetFieldInitAsBlobIdx cenv i) |]) |> ignore // Write FieldLayout table match fd.Offset with | None -> () | Some offset -> AddUnsharedRow cenv TableNames.FieldLayout (UnsharedRow [| ULong offset; SimpleIndex (TableNames.Field, fidx) |]) |> ignore // -------------------------------------------------------------------- // ILGenericParameterDef --> GenericParam Row // -------------------------------------------------------------------- let rec GetGenericParamAsGenericParamRow cenv _env idx owner gp = let flags = (match gp.Variance with | NonVariant -> 0x0000 | CoVariant -> 0x0001 | ContraVariant -> 0x0002) ||| (if gp.HasReferenceTypeConstraint then 0x0004 else 0x0000) ||| (if gp.HasNotNullableValueTypeConstraint then 0x0008 else 0x0000) ||| (if gp.HasDefaultConstructorConstraint then 0x0010 else 0x0000) let mdVersionMajor,_ = metadataSchemaVersionSupportedByCLRVersion cenv.desiredMetadataVersion if (mdVersionMajor = 1) then SimpleSharedRow [| UShort (uint16 idx); UShort (uint16 flags); TypeOrMethodDef (fst owner, snd owner); StringE (GetStringHeapIdx cenv gp.Name); TypeDefOrRefOrSpec (tdor_TypeDef, 0); (* empty kind field in deprecated metadata *) |] else SimpleSharedRow [| UShort (uint16 idx); UShort (uint16 flags); TypeOrMethodDef (fst owner, snd owner); StringE (GetStringHeapIdx cenv gp.Name) |] and GenTypeAsGenericParamConstraintRow cenv env gpidx ty = let tdorTag,tdorRow = GetTypeAsTypeDefOrRef cenv env ty UnsharedRow [| SimpleIndex (TableNames.GenericParam, gpidx); TypeDefOrRefOrSpec (tdorTag,tdorRow) |] and GenGenericParamConstraintPass4 cenv env gpidx ty = AddUnsharedRow cenv TableNames.GenericParamConstraint (GenTypeAsGenericParamConstraintRow cenv env gpidx ty) |> ignore and GenGenericParamPass3 cenv env idx owner gp = // shared since we look it up again below in GenGenericParamPass4 let gpidx = AddSharedRow cenv TableNames.GenericParam (GetGenericParamAsGenericParamRow cenv env idx owner gp) GenCustomAttrsPass3 cenv (hca_GenericParam,gpidx) gp.CustomAttrs; and GenGenericParamPass4 cenv env idx owner gp = let gpidx = FindOrAddRow cenv TableNames.GenericParam (GetGenericParamAsGenericParamRow cenv env idx owner gp) gp.Constraints |> ILList.iter (GenGenericParamConstraintPass4 cenv env gpidx) // -------------------------------------------------------------------- // param and return --> Param Row // -------------------------------------------------------------------- let rec GetParamAsParamRow cenv _env seq param = let flags = (if param.IsIn then 0x0001 else 0x0000) ||| (if param.IsOut then 0x0002 else 0x0000) ||| (if param.IsOptional then 0x0010 else 0x0000) ||| (if param.Default <> None then 0x1000 else 0x0000) ||| (if param.Marshal <> None then 0x2000 else 0x0000) UnsharedRow [| UShort (uint16 flags); UShort (uint16 seq); StringE (GetStringHeapIdxOption cenv param.Name) |] and GenParamPass3 cenv env seq param = if param.IsIn=false && param.IsOut=false && param.IsOptional=false && isNone param.Default && isNone param.Name && isNone param.Marshal then () else let pidx = AddUnsharedRow cenv TableNames.Param (GetParamAsParamRow cenv env seq param) GenCustomAttrsPass3 cenv (hca_ParamDef,pidx) param.CustomAttrs; // Write FieldRVA table - fixups into data section done later match param.Marshal with | None -> () | Some ntyp -> AddUnsharedRow cenv TableNames.FieldMarshal (UnsharedRow [| HasFieldMarshal (hfm_ParamDef, pidx); Blob (GetNativeTypeAsBlobIdx cenv ntyp) |]) |> ignore let GenReturnAsParamRow (returnv : ILReturn) = let flags = (if returnv.Marshal <> None then 0x2000 else 0x0000) UnsharedRow [| UShort (uint16 flags); UShort 0us; (* sequence num. *) StringE 0 |] let GenReturnPass3 cenv (returnv: ILReturn) = if isSome returnv.Marshal || nonNil returnv.CustomAttrs.AsList then let pidx = AddUnsharedRow cenv TableNames.Param (GenReturnAsParamRow returnv) GenCustomAttrsPass3 cenv (hca_ParamDef,pidx) returnv.CustomAttrs; match returnv.Marshal with | None -> () | Some ntyp -> AddUnsharedRow cenv TableNames.FieldMarshal (UnsharedRow [| HasFieldMarshal (hfm_ParamDef, pidx); Blob (GetNativeTypeAsBlobIdx cenv ntyp) |]) |> ignore // -------------------------------------------------------------------- // ILMethodDef --> ILMethodDef Row // -------------------------------------------------------------------- let GetMethodDefSigAsBytes cenv env (mdef: ILMethodDef) = emitBytesViaBuffer (fun bb -> bb.EmitByte (callconvToByte mdef.GenericParams.Length mdef.CallingConv); if mdef.GenericParams.Length > 0 then bb.EmitZ32 mdef.GenericParams.Length; bb.EmitZ32 mdef.Parameters.Length; EmitType cenv env bb mdef.Return.Type; mdef.ParameterTypes |> ILList.iter (EmitType cenv env bb)) let GenMethodDefSigAsBlobIdx cenv env mdef = GetBytesAsBlobIdx cenv (GetMethodDefSigAsBytes cenv env mdef) let GenMethodDefAsRow cenv env midx (md: ILMethodDef) = let flags = GetMemberAccessFlags md.Access ||| (if (match md.mdKind with | MethodKind.Static | MethodKind.Cctor -> true | _ -> false) then 0x0010 else 0x0) ||| (if (match md.mdKind with MethodKind.Virtual vinfo -> vinfo.IsFinal | _ -> false) then 0x0020 else 0x0) ||| (if (match md.mdKind with MethodKind.Virtual _ -> true | _ -> false) then 0x0040 else 0x0) ||| (if md.IsHideBySig then 0x0080 else 0x0) ||| (if (match md.mdKind with MethodKind.Virtual vinfo -> vinfo.IsCheckAccessOnOverride | _ -> false) then 0x0200 else 0x0) ||| (if (match md.mdKind with MethodKind.Virtual vinfo -> vinfo.IsNewSlot | _ -> false) then 0x0100 else 0x0) ||| (if (match md.mdKind with MethodKind.Virtual vinfo -> vinfo.IsAbstract | _ -> false) then 0x0400 else 0x0) ||| (if md.IsSpecialName then 0x0800 else 0x0) ||| (if (match md.mdBody.Contents with MethodBody.PInvoke _ -> true | _ -> false) then 0x2000 else 0x0) ||| (if md.IsUnmanagedExport then 0x0008 else 0x0) ||| (if (match md.mdKind with | MethodKind.Ctor | MethodKind.Cctor -> true | _ -> false) then 0x1000 else 0x0) ||| // RTSpecialName (if md.IsReqSecObj then 0x8000 else 0x0) ||| (if md.HasSecurity || not md.SecurityDecls.AsList.IsEmpty then 0x4000 else 0x0) let implflags = (match md.mdCodeKind with | MethodCodeKind.Native -> 0x0001 | MethodCodeKind.Runtime -> 0x0003 | MethodCodeKind.IL -> 0x0000) ||| (if md.IsInternalCall then 0x1000 else 0x0000) ||| (if md.IsManaged then 0x0000 else 0x0004) ||| (if md.IsForwardRef then 0x0010 else 0x0000) ||| (if md.IsPreserveSig then 0x0080 else 0x0000) ||| (if md.IsSynchronized then 0x0020 else 0x0000) ||| (if md.IsMustRun then 0x0040 else 0x0000) ||| (if (md.IsNoInline || (match md.mdBody.Contents with MethodBody.IL il -> il.NoInlining | _ -> false)) then 0x0008 else 0x0000) if md.IsEntryPoint then if cenv.entrypoint <> None then failwith "duplicate entrypoint" else cenv.entrypoint <- Some (true, midx); let codeAddr = (match md.mdBody.Contents with | MethodBody.IL ilmbody -> let addr = cenv.nextCodeAddr let (code, seqpoints, rootScope) = GenILMethodBody md.Name cenv env ilmbody // Now record the PDB record for this method - we write this out later. if cenv.generatePdb then cenv.pdbinfo.Add { MethToken=getUncodedToken TableNames.Method midx; MethName=md.Name; Params= [| |]; (* REVIEW *) RootScope = rootScope; Range= match ilmbody.SourceMarker with | Some m when cenv.generatePdb -> // table indexes are 1-based, document array indexes are 0-based let doc = (cenv.documents.FindOrAddSharedEntry m.Document) - 1 Some ({ Document=doc; Line=m.Line; Column=m.Column; }, { Document=doc; Line=m.EndLine; Column=m.EndColumn; }) | _ -> None SequencePoints=seqpoints; }; cenv.AddCode code; addr | MethodBody.Native -> failwith "cannot write body of native method - Abstract IL cannot roundtrip mixed native/managed binaries"; | _ -> 0x0000) UnsharedRow [| ULong codeAddr ; UShort (uint16 implflags); UShort (uint16 flags); StringE (GetStringHeapIdx cenv md.Name); Blob (GenMethodDefSigAsBlobIdx cenv env md); SimpleIndex(TableNames.Param,cenv.GetTable(TableNames.Param).Count + 1) |] let GenMethodImplPass3 cenv env _tgparams tidx mimpl = let midxTag, midxRow = GetMethodSpecAsMethodDef cenv env (mimpl.OverrideBy,None) let midx2Tag, midx2Row = GetOverridesSpecAsMethodDefOrRef cenv env mimpl.Overrides AddUnsharedRow cenv TableNames.MethodImpl (UnsharedRow [| SimpleIndex (TableNames.TypeDef, tidx); MethodDefOrRef (midxTag, midxRow); MethodDefOrRef (midx2Tag, midx2Row) |]) |> ignore let GenMethodDefPass3 cenv env (md:ILMethodDef) = let midx = GetMethodDefIdx cenv md let idx2 = AddUnsharedRow cenv TableNames.Method (GenMethodDefAsRow cenv env midx md) if midx <> idx2 then failwith "index of method def on pass 3 does not match index on pass 2"; GenReturnPass3 cenv md.Return; md.Parameters |> ILList.iteri (fun n param -> GenParamPass3 cenv env (n+1) param) ; md.CustomAttrs |> GenCustomAttrsPass3 cenv (hca_MethodDef,midx) ; md.SecurityDecls.AsList |> GenSecurityDeclsPass3 cenv (hds_MethodDef,midx); md.GenericParams |> List.iteri (fun n gp -> GenGenericParamPass3 cenv env n (tomd_MethodDef, midx) gp) ; match md.mdBody.Contents with | MethodBody.PInvoke attr -> let flags = begin match attr.CallingConv with | PInvokeCallingConvention.None -> 0x0000 | PInvokeCallingConvention.Cdecl -> 0x0200 | PInvokeCallingConvention.Stdcall -> 0x0300 | PInvokeCallingConvention.Thiscall -> 0x0400 | PInvokeCallingConvention.Fastcall -> 0x0500 | PInvokeCallingConvention.WinApi -> 0x0100 end ||| begin match attr.CharEncoding with | PInvokeCharEncoding.None -> 0x0000 | PInvokeCharEncoding.Ansi -> 0x0002 | PInvokeCharEncoding.Unicode -> 0x0004 | PInvokeCharEncoding.Auto -> 0x0006 end ||| begin match attr.CharBestFit with | PInvokeCharBestFit.UseAssembly -> 0x0000 | PInvokeCharBestFit.Enabled -> 0x0010 | PInvokeCharBestFit.Disabled -> 0x0020 end ||| begin match attr.ThrowOnUnmappableChar with | PInvokeThrowOnUnmappableChar.UseAssembly -> 0x0000 | PInvokeThrowOnUnmappableChar.Enabled -> 0x1000 | PInvokeThrowOnUnmappableChar.Disabled -> 0x2000 end ||| (if attr.NoMangle then 0x0001 else 0x0000) ||| (if attr.LastError then 0x0040 else 0x0000) AddUnsharedRow cenv TableNames.ImplMap (UnsharedRow [| UShort (uint16 flags); MemberForwarded (mf_MethodDef,midx); StringE (GetStringHeapIdx cenv attr.Name); SimpleIndex (TableNames.ModuleRef, GetModuleRefAsIdx cenv attr.Where); |]) |> ignore | _ -> () let GenMethodDefPass4 cenv env md = let midx = GetMethodDefIdx cenv md List.iteri (fun n gp -> GenGenericParamPass4 cenv env n (tomd_MethodDef, midx) gp) md.GenericParams let GenPropertyMethodSemanticsPass3 cenv pidx kind mref = // REVIEW: why are we catching exceptions here? let midx = try GetMethodRefAsMethodDefIdx cenv mref with MethodDefNotFound -> 1 AddUnsharedRow cenv TableNames.MethodSemantics (UnsharedRow [| UShort (uint16 kind); SimpleIndex (TableNames.Method,midx); HasSemantics (hs_Property, pidx) |]) |> ignore let rec GetPropertySigAsBlobIdx cenv env prop = GetBytesAsBlobIdx cenv (GetPropertySigAsBytes cenv env prop) and GetPropertySigAsBytes cenv env prop = emitBytesViaBuffer (fun bb -> let b = ((hasthisToByte prop.CallingConv) ||| e_IMAGE_CEE_CS_CALLCONV_PROPERTY) bb.EmitByte b; bb.EmitZ32 prop.Args.Length; EmitType cenv env bb prop.Type; prop.Args |> ILList.iter (EmitType cenv env bb)) and GetPropertyAsPropertyRow cenv env (prop:ILPropertyDef) = let flags = (if prop.IsSpecialName then 0x0200 else 0x0) ||| (if prop.IsRTSpecialName then 0x0400 else 0x0) ||| (if prop.Init <> None then 0x1000 else 0x0) UnsharedRow [| UShort (uint16 flags); StringE (GetStringHeapIdx cenv prop.Name); Blob (GetPropertySigAsBlobIdx cenv env prop); |] /// ILPropertyDef --> Property Row + MethodSemantics entries and GenPropertyPass3 cenv env prop = let pidx = AddUnsharedRow cenv TableNames.Property (GetPropertyAsPropertyRow cenv env prop) prop.SetMethod |> Option.iter (GenPropertyMethodSemanticsPass3 cenv pidx 0x0001) ; prop.GetMethod |> Option.iter (GenPropertyMethodSemanticsPass3 cenv pidx 0x0002) ; // Write Constant table match prop.Init with | None -> () | Some i -> AddUnsharedRow cenv TableNames.Constant (UnsharedRow [| GetFieldInitFlags i; HasConstant (hc_Property, pidx); Blob (GetFieldInitAsBlobIdx cenv i) |]) |> ignore GenCustomAttrsPass3 cenv (hca_Property,pidx) prop.CustomAttrs let rec GenEventMethodSemanticsPass3 cenv eidx kind mref = let addIdx = try GetMethodRefAsMethodDefIdx cenv mref with MethodDefNotFound -> 1 AddUnsharedRow cenv TableNames.MethodSemantics (UnsharedRow [| UShort (uint16 kind); SimpleIndex (TableNames.Method,addIdx); HasSemantics (hs_Event, eidx) |]) |> ignore /// ILEventDef --> Event Row + MethodSemantics entries and GenEventAsEventRow cenv env (md: ILEventDef) = let flags = (if md.IsSpecialName then 0x0200 else 0x0) ||| (if md.IsRTSpecialName then 0x0400 else 0x0) let tdorTag, tdorRow = GetTypeOptionAsTypeDefOrRef cenv env md.Type UnsharedRow [| UShort (uint16 flags); StringE (GetStringHeapIdx cenv md.Name); TypeDefOrRefOrSpec (tdorTag,tdorRow) |] and GenEventPass3 cenv env (md: ILEventDef) = let eidx = AddUnsharedRow cenv TableNames.Event (GenEventAsEventRow cenv env md) md.AddMethod |> GenEventMethodSemanticsPass3 cenv eidx 0x0008 md.RemoveMethod |> GenEventMethodSemanticsPass3 cenv eidx 0x0010 Option.iter (GenEventMethodSemanticsPass3 cenv eidx 0x0020) md.FireMethod List.iter (GenEventMethodSemanticsPass3 cenv eidx 0x0004) md.OtherMethods; GenCustomAttrsPass3 cenv (hca_Event,eidx) md.CustomAttrs // -------------------------------------------------------------------- // resource --> generate ... // -------------------------------------------------------------------- let rec GetResourceAsManifestResourceRow cenv r = let data,impl = match r.Location with | ILResourceLocation.Local bf -> let b = bf() // Embedded managed resources must be word-aligned. However resource format is // not specified in ECMA. Some mscorlib resources appear to be non-aligned - it seems it doesn't matter.. let offset = cenv.resources.Position let alignedOffset = (align 0x8 offset) let pad = alignedOffset - offset let resourceSize = b.Length cenv.resources.EmitPadding pad; cenv.resources.EmitInt32 resourceSize; cenv.resources.EmitBytes b; Data (alignedOffset,true), (i_File, 0) | ILResourceLocation.File (mref,offset) -> ULong offset, (i_File, GetModuleRefAsFileIdx cenv mref) | ILResourceLocation.Assembly aref -> ULong 0x0, (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref) UnsharedRow [| data; ULong (match r.Access with ILResourceAccess.Public -> 0x01 | ILResourceAccess.Private -> 0x02); StringE (GetStringHeapIdx cenv r.Name); Implementation (fst impl, snd impl); |] and GenResourcePass3 cenv r = let idx = AddUnsharedRow cenv TableNames.ManifestResource (GetResourceAsManifestResourceRow cenv r) GenCustomAttrsPass3 cenv (hca_ManifestResource,idx) r.CustomAttrs // -------------------------------------------------------------------- // ILTypeDef --> generate ILFieldDef, ILMethodDef, ILPropertyDef etc. rows // -------------------------------------------------------------------- let rec GenTypeDefPass3 enc cenv (td:ILTypeDef) = try let env = envForTypeDef td let tidx = GetIdxForTypeDef cenv (TdKey(enc,td.Name)) td.Properties.AsList |> List.iter (GenPropertyPass3 cenv env); td.Events.AsList |> List.iter (GenEventPass3 cenv env); td.Fields.AsList |> List.iter (GenFieldDefPass3 cenv env); td.Methods |> Seq.iter (GenMethodDefPass3 cenv env); td.MethodImpls.AsList |> List.iter (GenMethodImplPass3 cenv env td.GenericParams.Length tidx); // ClassLayout entry if needed match td.Layout with | ILTypeDefLayout.Auto -> () | ILTypeDefLayout.Sequential layout | ILTypeDefLayout.Explicit layout -> if isSome layout.Pack || isSome layout.Size then AddUnsharedRow cenv TableNames.ClassLayout (UnsharedRow [| UShort (match layout.Pack with None -> uint16 0x0 | Some p -> p); ULong (match layout.Size with None -> 0x0 | Some p -> p); SimpleIndex (TableNames.TypeDef, tidx) |]) |> ignore td.SecurityDecls.AsList |> GenSecurityDeclsPass3 cenv (hds_TypeDef,tidx); td.CustomAttrs |> GenCustomAttrsPass3 cenv (hca_TypeDef,tidx); td.GenericParams |> List.iteri (fun n gp -> GenGenericParamPass3 cenv env n (tomd_TypeDef,tidx) gp) ; td.NestedTypes.AsList |> GenTypeDefsPass3 (enc@[td.Name]) cenv; with e -> failwith ("Error in pass3 for type "+td.Name+", error: "+e.Message); reraise() raise e and GenTypeDefsPass3 enc cenv tds = List.iter (GenTypeDefPass3 enc cenv) tds /// ILTypeDef --> generate generic params on ILMethodDef: ensures /// GenericParam table is built sorted by owner. let rec GenTypeDefPass4 enc cenv (td:ILTypeDef) = try let env = envForTypeDef td let tidx = GetIdxForTypeDef cenv (TdKey(enc,td.Name)) td.Methods |> Seq.iter (GenMethodDefPass4 cenv env) ; List.iteri (fun n gp -> GenGenericParamPass4 cenv env n (tomd_TypeDef,tidx) gp) td.GenericParams; GenTypeDefsPass4 (enc@[td.Name]) cenv td.NestedTypes.AsList; with e -> failwith ("Error in pass4 for type "+td.Name+", error: "+e.Message); reraise() raise e and GenTypeDefsPass4 enc cenv tds = List.iter (GenTypeDefPass4 enc cenv) tds // -------------------------------------------------------------------- // ILExportedTypesAndForwarders --> ILExportedTypeOrForwarder table // -------------------------------------------------------------------- let rec GenNestedExportedTypePass3 cenv cidx (ce: ILNestedExportedType) = let flags = GetMemberAccessFlags ce.Access let nidx = AddUnsharedRow cenv TableNames.ExportedType (UnsharedRow [| ULong flags ; ULong 0x0; StringE (GetStringHeapIdx cenv ce.Name); StringE 0; Implementation (i_ExportedType, cidx) |]) GenCustomAttrsPass3 cenv (hca_ExportedType,nidx) ce.CustomAttrs; GenNestedExportedTypesPass3 cenv nidx ce.Nested and GenNestedExportedTypesPass3 cenv nidx (nce: ILNestedExportedTypes) = nce.AsList |> List.iter (GenNestedExportedTypePass3 cenv nidx) and GenExportedTypePass3 cenv (ce: ILExportedTypeOrForwarder) = let nselem,nelem = GetTypeNameAsElemPair cenv ce.Name let flags = GetTypeAccessFlags ce.Access let flags = if ce.IsForwarder then 0x00200000 ||| flags else flags let impl = GetScopeRefAsImplementationElem cenv ce.ScopeRef let cidx = AddUnsharedRow cenv TableNames.ExportedType (UnsharedRow [| ULong flags ; ULong 0x0; nelem; nselem; Implementation (fst impl, snd impl); |]) GenCustomAttrsPass3 cenv (hca_ExportedType,cidx) ce.CustomAttrs; GenNestedExportedTypesPass3 cenv cidx ce.Nested and GenExportedTypesPass3 cenv (ce: ILExportedTypesAndForwarders) = List.iter (GenExportedTypePass3 cenv) ce.AsList; // -------------------------------------------------------------------- // manifest --> generate Assembly row // -------------------------------------------------------------------- and GetManifsetAsAssemblyRow cenv m = UnsharedRow [|ULong m.AuxModuleHashAlgorithm; UShort (match m.Version with None -> 0us | Some (x,_,_,_) -> x); UShort (match m.Version with None -> 0us | Some (_,y,_,_) -> y); UShort (match m.Version with None -> 0us | Some (_,_,z,_) -> z); UShort (match m.Version with None -> 0us | Some (_,_,_,w) -> w); ULong ( (match m.AssemblyLongevity with | ILAssemblyLongevity.Unspecified -> 0x0000 | ILAssemblyLongevity.Library -> 0x0002 | ILAssemblyLongevity.PlatformAppDomain -> 0x0004 | ILAssemblyLongevity.PlatformProcess -> 0x0006 | ILAssemblyLongevity.PlatformSystem -> 0x0008) ||| (if m.Retargetable then 0x100 else 0x0) ||| // Setting these causes peverify errors. Hence both ilread and ilwrite ignore them and refuse to set them. // Any debugging customattributes will automatically propagate // REVIEW: No longer appears to be the case... (if m.JitTracking then 0x8000 else 0x0) ||| (if m.DisableJitOptimizations then 0x4000 else 0x0) ||| (match m.PublicKey with None -> 0x0000 | Some _ -> 0x0001) ||| 0x0000); (match m.PublicKey with None -> Blob 0 | Some x -> Blob (GetBytesAsBlobIdx cenv x)); StringE (GetStringHeapIdx cenv m.Name); (match m.Locale with None -> StringE 0 | Some x -> StringE (GetStringHeapIdx cenv x)); |] and GenManifestPass3 cenv m = let aidx = AddUnsharedRow cenv TableNames.Assembly (GetManifsetAsAssemblyRow cenv m) GenSecurityDeclsPass3 cenv (hds_Assembly,aidx) m.SecurityDecls.AsList; GenCustomAttrsPass3 cenv (hca_Assembly,aidx) m.CustomAttrs; GenExportedTypesPass3 cenv m.ExportedTypes; // Record the entrypoint decl if needed. match m.EntrypointElsewhere with | Some mref -> if cenv.entrypoint <> None then failwith "duplicate entrypoint" else cenv.entrypoint <- Some (false, GetModuleRefAsIdx cenv mref); | None -> () and newGuid (modul: ILModuleDef) = let n = absilWriteGetTimeStamp () let m = hash n let m2 = hash modul.Name [| b0 m; b1 m; b2 m; b3 m; b0 m2; b1 m2; b2 m2; b3 m2; 0xa7uy; 0x45uy; 0x03uy; 0x83uy; b0 n; b1 n; b2 n; b3 n |] and GetModuleAsRow cenv (modul: ILModuleDef) = // Store the generated MVID in the environment (needed for generating debug information) let modulGuid = newGuid modul cenv.moduleGuid <- modulGuid UnsharedRow [| UShort (uint16 0x0); StringE (GetStringHeapIdx cenv modul.Name); Guid (GetGuidIdx cenv modulGuid); Guid 0; Guid 0 |] let rowElemCompare (e1: RowElement) (e2: RowElement) = let c = compare e1.Val e2.Val if c <> 0 then c else compare e1.Tag e2.Tag let SortTableRows tab (rows:IGenericRow[]) = if List.memAssoc tab sortedTableInfo then let rows = rows |> Array.map (fun row -> row.GetGenericRow()) let col = List.assoc tab sortedTableInfo rows // This needs to be a stable sort, so we use Lsit.sortWith |> Array.toList |> List.sortWith (fun r1 r2 -> rowElemCompare r1.[col] r2.[col]) |> Array.ofList |> Array.map (fun arr -> (SimpleSharedRow arr) :> IGenericRow) else rows let GenModule (cenv : cenv) (modul: ILModuleDef) = let midx = AddUnsharedRow cenv TableNames.Module (GetModuleAsRow cenv modul) List.iter (GenResourcePass3 cenv) modul.Resources.AsList; let tds = destTypeDefsWithGlobalFunctionsFirst cenv.ilg modul.TypeDefs reportTime cenv.showTimes "Module Generation Preparation"; GenTypeDefsPass1 [] cenv tds; reportTime cenv.showTimes "Module Generation Pass 1"; GenTypeDefsPass2 0 [] cenv tds; reportTime cenv.showTimes "Module Generation Pass 2"; (match modul.Manifest with None -> () | Some m -> GenManifestPass3 cenv m); GenTypeDefsPass3 [] cenv tds; reportTime cenv.showTimes "Module Generation Pass 3"; GenCustomAttrsPass3 cenv (hca_Module,midx) modul.CustomAttrs; // GenericParam is the only sorted table indexed by Columns in other tables (GenericParamConstraint). // Hence we need to sort it before we emit any entries in GenericParamConstraint. // Note this mutates the rows in a table. 'SetRowsOfTable' clears // the key --> index map since it is no longer valid cenv.GetTable(TableNames.GenericParam).SetRowsOfTable (SortTableRows TableNames.GenericParam (cenv.GetTable(TableNames.GenericParam).EntriesAsArray)); GenTypeDefsPass4 [] cenv tds; reportTime cenv.showTimes "Module Generation Pass 4" let generateIL requiredDataFixups (desiredMetadataVersion,generatePdb,mscorlib,emitTailcalls,showTimes) (m : ILModuleDef) noDebugData cilStartAddress = let isDll = m.IsDLL let cenv = { mscorlib=mscorlib; emitTailcalls=emitTailcalls; showTimes=showTimes; ilg = mkILGlobals mscorlib None noDebugData; // assumes mscorlib is Scope_assembly _ ILScopeRef desiredMetadataVersion=desiredMetadataVersion; requiredDataFixups= requiredDataFixups; requiredStringFixups = []; codeChunks=ByteBuffer.Create 40000; nextCodeAddr = cilStartAddress; data = ByteBuffer.Create 200; resources = ByteBuffer.Create 200; tables= Array.init 64 (fun i -> MetadataTable<_>.New ("row table "+string i,System.Collections.Generic.EqualityComparer.Default)); AssemblyRefs = MetadataTable<_>.New("ILAssemblyRef",System.Collections.Generic.EqualityComparer.Default); documents=MetadataTable<_>.New("pdbdocs",System.Collections.Generic.EqualityComparer.Default); trefCache=new Dictionary<_,_>(100); pdbinfo= new ResizeArray<_>(200); moduleGuid= Array.zeroCreate 16; fieldDefs= MetadataTable<_>.New("field defs",System.Collections.Generic.EqualityComparer.Default); methodDefIdxsByKey = MetadataTable<_>.New("method defs",System.Collections.Generic.EqualityComparer.Default); // This uses reference identity on ILMethodDef objects methodDefIdxs = new Dictionary<_,_>(100, HashIdentity.Reference); propertyDefs = MetadataTable<_>.New("property defs",System.Collections.Generic.EqualityComparer.Default); eventDefs = MetadataTable<_>.New("event defs",System.Collections.Generic.EqualityComparer.Default); typeDefs = MetadataTable<_>.New("type defs",System.Collections.Generic.EqualityComparer.Default); entrypoint=None; generatePdb=generatePdb; // These must use structural comparison since they are keyed by arrays guids=MetadataTable<_>.New("guids",HashIdentity.Structural); blobs= MetadataTable<_>.New("blobs",HashIdentity.Structural); strings= MetadataTable<_>.New("strings",System.Collections.Generic.EqualityComparer.Default); userStrings= MetadataTable<_>.New("user strings",System.Collections.Generic.EqualityComparer.Default); } // Now the main compilation step GenModule cenv m; // Fetch out some of the results let entryPointToken = match cenv.entrypoint with | Some (epHere,tok) -> getUncodedToken (if epHere then TableNames.Method else TableNames.File) tok | None -> if not isDll then dprintn "warning: no entrypoint specified in executable binary"; 0x0 let pdbData = { EntryPoint= (if isDll then None else Some entryPointToken); ModuleID = cenv.moduleGuid; Documents = cenv.documents.EntriesAsArray; Methods= cenv.pdbinfo.ToArray() } let idxForNextedTypeDef (tds:ILTypeDef list, td:ILTypeDef) = let enc = tds |> List.map (fun td -> td.Name) GetIdxForTypeDef cenv (TdKey(enc, td.Name)) let strings = Array.map Bytes.stringAsUtf8NullTerminated cenv.strings.EntriesAsArray let userStrings = cenv.userStrings.EntriesAsArray |> Array.map System.Text.Encoding.Unicode.GetBytes let blobs = cenv.blobs.EntriesAsArray let guids = cenv.guids.EntriesAsArray let tables = cenv.tables |> Array.map (fun t -> t.EntriesAsArray) let code = cenv.GetCode() // turn idx tbls into token maps let mappings = { TypeDefTokenMap = (fun t -> getUncodedToken TableNames.TypeDef (idxForNextedTypeDef t)); FieldDefTokenMap = (fun t fd -> let tidx = idxForNextedTypeDef t getUncodedToken TableNames.Field (GetFieldDefAsFieldDefIdx cenv tidx fd)); MethodDefTokenMap = (fun t md -> let tidx = idxForNextedTypeDef t getUncodedToken TableNames.Method (FindMethodDefIdx cenv (GetKeyForMethodDef tidx md))); PropertyTokenMap = (fun t pd -> let tidx = idxForNextedTypeDef t getUncodedToken TableNames.Property (cenv.propertyDefs.GetTableEntry (GetKeyForPropertyDef tidx pd))); EventTokenMap = (fun t ed -> let tidx = idxForNextedTypeDef t getUncodedToken TableNames.Event (cenv.eventDefs.GetTableEntry (EventKey (tidx, ed.Name)))) } reportTime cenv.showTimes "Finalize Module Generation Results"; // New return the results let data = cenv.data.Close() let resources = cenv.resources.Close() (strings,userStrings,blobs,guids,tables,entryPointToken,code,cenv.requiredStringFixups,data,resources,pdbData,mappings) //===================================================================== // TABLES+BLOBS --> PHYSICAL METADATA+BLOBS //===================================================================== type BinaryChunk = { size: int32; addr: int32 } let chunk sz next = ({addr=next; size=sz},next + sz) let nochunk next = ({addr= 0x0;size= 0x0; } ,next) let count f arr = Array.fold (fun x y -> x + f y) 0x0 arr module FileSystemUtilites = open System.Reflection #if SILVERLIGHT let progress = false let setExecutablePermission _filename = () #else let progress = try System.Environment.GetEnvironmentVariable("FSharp_DebugSetFilePermissions") <> null with _ -> false let setExecutablePermission filename = if runningOnMono then try let monoPosix = Assembly.Load("Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756") if progress then eprintf "loading type Mono.Unix.UnixFileInfo...\n"; let monoUnixFileInfo = monoPosix.GetType("Mono.Unix.UnixFileSystemInfo") let fileEntry = monoUnixFileInfo.InvokeMember("GetFileSystemEntry", (BindingFlags.InvokeMethod ||| BindingFlags.Static ||| BindingFlags.Public), null, null, [| box filename |],System.Globalization.CultureInfo.InvariantCulture) let prevPermissions = monoUnixFileInfo.InvokeMember("get_FileAccessPermissions", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, fileEntry, [| |],System.Globalization.CultureInfo.InvariantCulture) |> unbox // Add 0x000001ED (UserReadWriteExecute, GroupReadExecute, OtherReadExecute) to the access permissions on Unix monoUnixFileInfo.InvokeMember("set_FileAccessPermissions", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, fileEntry, [| box (prevPermissions ||| 0x000001ED) |],System.Globalization.CultureInfo.InvariantCulture) |> ignore with e -> if progress then eprintf "failure: %s...\n" (e.ToString()); // Fail silently #endif let writeILMetadataAndCode (generatePdb,desiredMetadataVersion,mscorlib,emitTailcalls,showTimes) modul noDebugData cilStartAddress = // When we know the real RVAs of the data section we fixup the references for the FieldRVA table. // These references are stored as offsets into the metadata we return from this function let requiredDataFixups = ref [] let next = cilStartAddress let strings,userStrings,blobs,guids,tables,entryPointToken,code,requiredStringFixups,data,resources,pdbData,mappings = generateIL requiredDataFixups (desiredMetadataVersion,generatePdb,mscorlib,emitTailcalls,showTimes) modul noDebugData cilStartAddress reportTime showTimes "Generated Tables and Code"; let tableSize (tab: TableName) = tables.[tab.Index].Length // Now place the code let codeSize = code.Length let alignedCodeSize = align 0x4 codeSize let codep,next = chunk codeSize next let codePadding = Array.create (alignedCodeSize - codeSize) 0x0uy let _codePaddingChunk,next = chunk codePadding.Length next // Now layout the chunks of metadata and IL let metadataHeaderStartChunk,_next = chunk 0x10 next let numStreams = 0x05 let (mdtableVersionMajor, mdtableVersionMinor) = metadataSchemaVersionSupportedByCLRVersion desiredMetadataVersion let version = let (a,b,c,_) = desiredMetadataVersion System.Text.Encoding.UTF8.GetBytes (sprintf "v%d.%d.%d" a b c) let paddedVersionLength = align 0x4 (Array.length version) // Most addresses after this point are measured from the MD root // Switch to md-rooted addresses let next = metadataHeaderStartChunk.size let _metadataHeaderVersionChunk,next = chunk paddedVersionLength next let _metadataHeaderEndChunk,next = chunk 0x04 next let _tablesStreamHeaderChunk,next = chunk (0x08 + (align 4 ("#~".Length + 0x01))) next let _stringsStreamHeaderChunk,next = chunk (0x08 + (align 4 ("#Strings".Length + 0x01))) next let _userStringsStreamHeaderChunk,next = chunk (0x08 + (align 4 ("#US".Length + 0x01))) next let _guidsStreamHeaderChunk,next = chunk (0x08 + (align 4 ("#GUID".Length + 0x01))) next let _blobsStreamHeaderChunk,next = chunk (0x08 + (align 4 ("#Blob".Length + 0x01))) next let tablesStreamStart = next let stringsStreamUnpaddedSize = count (fun (s:byte[]) -> s.Length) strings + 1 let stringsStreamPaddedSize = align 4 stringsStreamUnpaddedSize let userStringsStreamUnpaddedSize = count (fun (s:byte[]) -> let n = s.Length + 1 in n + ByteBuffer.Z32Size n) userStrings + 1 let userStringsStreamPaddedSize = align 4 userStringsStreamUnpaddedSize let guidsStreamUnpaddedSize = (Array.length guids) * 0x10 let guidsStreamPaddedSize = align 4 guidsStreamUnpaddedSize let blobsStreamUnpaddedSize = count (fun (blob:byte[]) -> let n = blob.Length in n + ByteBuffer.Z32Size n) blobs + 1 let blobsStreamPaddedSize = align 4 blobsStreamUnpaddedSize let guidsBig = guidsStreamPaddedSize >= 0x10000 let stringsBig = stringsStreamPaddedSize >= 0x10000 let blobsBig = blobsStreamPaddedSize >= 0x10000 // 64bit bitvector indicating which tables are in the metadata. let (valid1,valid2),_ = (((0,0), 0), tables) ||> Array.fold (fun ((valid1,valid2) as valid,n) rows -> let valid = if rows.Length = 0 then valid else ( (if n < 32 then valid1 ||| (1 <<< n ) else valid1), (if n >= 32 then valid2 ||| (1 <<< (n-32)) else valid2) ) (valid,n+1)) // 64bit bitvector indicating which tables are sorted. // Constant - REVIEW: make symbolic! compute from sorted table info! let sorted1 = 0x3301fa00 let sorted2 = // If there are any generic parameters in the binary we're emitting then mark that // table as sorted, otherwise don't. This maximizes the number of assemblies we emit // which have an ECMA-v.1. compliant set of sorted tables. (if tableSize (TableNames.GenericParam) > 0 then 0x00000400 else 0x00000000) ||| (if tableSize (TableNames.GenericParamConstraint) > 0 then 0x00001000 else 0x00000000) ||| 0x00000200 reportTime showTimes "Layout Header of Tables"; let guidAddress n = (if n = 0 then 0 else (n - 1) * 0x10 + 0x01) let stringAddressTable = let tab = Array.create (strings.Length + 1) 0 let pos = ref 1 for i = 1 to strings.Length do tab.[i] <- !pos; let s = strings.[i - 1] pos := !pos + s.Length tab let stringAddress n = if n >= Array.length stringAddressTable then failwith ("string index "+string n+" out of range"); stringAddressTable.[n] let userStringAddressTable = let tab = Array.create (Array.length userStrings + 1) 0 let pos = ref 1 for i = 1 to Array.length userStrings do tab.[i] <- !pos; let s = userStrings.[i - 1] let n = s.Length + 1 pos := !pos + n + ByteBuffer.Z32Size n tab let userStringAddress n = if n >= Array.length userStringAddressTable then failwith "userString index out of range"; userStringAddressTable.[n] let blobAddressTable = let tab = Array.create (blobs.Length + 1) 0 let pos = ref 1 for i = 1 to blobs.Length do tab.[i] <- !pos; let blob = blobs.[i - 1] pos := !pos + blob.Length + ByteBuffer.Z32Size blob.Length tab let blobAddress n = if n >= blobAddressTable.Length then failwith "blob index out of range"; blobAddressTable.[n] reportTime showTimes "Build String/Blob Address Tables"; let sortedTables = Array.init 64 (fun i -> tables.[i] |> SortTableRows (TableName.FromIndex i)) reportTime showTimes "Sort Tables"; let codedTables = let bignessTable = Array.map (fun rows -> Array.length rows >= 0x10000) sortedTables let bigness (tab:int32) = bignessTable.[tab] let codedBigness nbits tab = (tableSize tab) >= (0x10000 >>> nbits) let tdorBigness = codedBigness 2 TableNames.TypeDef || codedBigness 2 TableNames.TypeRef || codedBigness 2 TableNames.TypeSpec let tomdBigness = codedBigness 1 TableNames.TypeDef || codedBigness 1 TableNames.Method let hcBigness = codedBigness 2 TableNames.Field || codedBigness 2 TableNames.Param || codedBigness 2 TableNames.Property let hcaBigness = codedBigness 5 TableNames.Method || codedBigness 5 TableNames.Field || codedBigness 5 TableNames.TypeRef || codedBigness 5 TableNames.TypeDef || codedBigness 5 TableNames.Param || codedBigness 5 TableNames.InterfaceImpl || codedBigness 5 TableNames.MemberRef || codedBigness 5 TableNames.Module || codedBigness 5 TableNames.Permission || codedBigness 5 TableNames.Property || codedBigness 5 TableNames.Event || codedBigness 5 TableNames.StandAloneSig || codedBigness 5 TableNames.ModuleRef || codedBigness 5 TableNames.TypeSpec || codedBigness 5 TableNames.Assembly || codedBigness 5 TableNames.AssemblyRef || codedBigness 5 TableNames.File || codedBigness 5 TableNames.ExportedType || codedBigness 5 TableNames.ManifestResource || codedBigness 5 TableNames.GenericParam || codedBigness 5 TableNames.GenericParamConstraint || codedBigness 5 TableNames.MethodSpec let hfmBigness = codedBigness 1 TableNames.Field || codedBigness 1 TableNames.Param let hdsBigness = codedBigness 2 TableNames.TypeDef || codedBigness 2 TableNames.Method || codedBigness 2 TableNames.Assembly let mrpBigness = codedBigness 3 TableNames.TypeRef || codedBigness 3 TableNames.ModuleRef || codedBigness 3 TableNames.Method || codedBigness 3 TableNames.TypeSpec let hsBigness = codedBigness 1 TableNames.Event || codedBigness 1 TableNames.Property let mdorBigness = codedBigness 1 TableNames.Method || codedBigness 1 TableNames.MemberRef let mfBigness = codedBigness 1 TableNames.Field || codedBigness 1 TableNames.Method let iBigness = codedBigness 2 TableNames.File || codedBigness 2 TableNames.AssemblyRef || codedBigness 2 TableNames.ExportedType let catBigness = codedBigness 3 TableNames.Method || codedBigness 3 TableNames.MemberRef let rsBigness = codedBigness 2 TableNames.Module || codedBigness 2 TableNames.ModuleRef || codedBigness 2 TableNames.AssemblyRef || codedBigness 2 TableNames.TypeRef let tablesBuf = ByteBuffer.Create 20000 // Now the coded tables themselves - first the schemata header tablesBuf.EmitIntsAsBytes [| 0x00; 0x00; 0x00; 0x00; mdtableVersionMajor; // major version of table schemata mdtableVersionMinor; // minor version of table schemata ((if stringsBig then 0x01 else 0x00) ||| // bit vector for heap size (if guidsBig then 0x02 else 0x00) ||| (if blobsBig then 0x04 else 0x00)); 0x01; (* reserved, always 1 *) |]; tablesBuf.EmitInt32 valid1; tablesBuf.EmitInt32 valid2; tablesBuf.EmitInt32 sorted1; tablesBuf.EmitInt32 sorted2; // Numbers of rows in various tables for rows in sortedTables do if rows.Length <> 0 then tablesBuf.EmitInt32 rows.Length reportTime showTimes "Write Header of tablebuf"; // The tables themselves for rows in sortedTables do for row in rows do let row = row.GetGenericRow() for x in row do // Emit the coded token for the array element let t = x.Tag let n = x.Val match t with | _ when t = RowElementTags.UShort -> tablesBuf.EmitUInt16 (uint16 n) | _ when t = RowElementTags.ULong -> tablesBuf.EmitInt32 n | _ when t = RowElementTags.Data -> recordRequiredDataFixup requiredDataFixups tablesBuf (tablesStreamStart + tablesBuf.Position) (n, false) | _ when t = RowElementTags.DataResources -> recordRequiredDataFixup requiredDataFixups tablesBuf (tablesStreamStart + tablesBuf.Position) (n, true) | _ when t = RowElementTags.Guid -> tablesBuf.EmitZUntaggedIndex guidsBig (guidAddress n) | _ when t = RowElementTags.Blob -> tablesBuf.EmitZUntaggedIndex blobsBig (blobAddress n) | _ when t = RowElementTags.String -> tablesBuf.EmitZUntaggedIndex stringsBig (stringAddress n) | _ when t <= RowElementTags.SimpleIndexMax -> tablesBuf.EmitZUntaggedIndex (bigness (t - RowElementTags.SimpleIndexMin)) n | _ when t <= RowElementTags.TypeDefOrRefOrSpecMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.TypeDefOrRefOrSpecMin) 2 tdorBigness n | _ when t <= RowElementTags.TypeOrMethodDefMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.TypeOrMethodDefMin) 1 tomdBigness n | _ when t <= RowElementTags.HasConstantMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.HasConstantMin) 2 hcBigness n | _ when t <= RowElementTags.HasCustomAttributeMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.HasCustomAttributeMin) 5 hcaBigness n | _ when t <= RowElementTags.HasFieldMarshalMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.HasFieldMarshalMin) 1 hfmBigness n | _ when t <= RowElementTags.HasDeclSecurityMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.HasDeclSecurityMin) 2 hdsBigness n | _ when t <= RowElementTags.MemberRefParentMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.MemberRefParentMin) 3 mrpBigness n | _ when t <= RowElementTags.HasSemanticsMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.HasSemanticsMin) 1 hsBigness n | _ when t <= RowElementTags.MethodDefOrRefMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.MethodDefOrRefMin) 1 mdorBigness n | _ when t <= RowElementTags.MemberForwardedMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.MemberForwardedMin) 1 mfBigness n | _ when t <= RowElementTags.ImplementationMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.ImplementationMin) 2 iBigness n | _ when t <= RowElementTags.CustomAttributeTypeMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.CustomAttributeTypeMin) 3 catBigness n | _ when t <= RowElementTags.ResolutionScopeMax -> tablesBuf.EmitZTaggedIndex (t - RowElementTags.ResolutionScopeMin) 2 rsBigness n | _ -> failwith "invalid tag in row element" tablesBuf.Close() reportTime showTimes "Write Tables to tablebuf"; let tablesStreamUnpaddedSize = codedTables.Length // QUERY: extra 4 empty bytes in array.exe - why? Include some extra padding after // the tables just in case there is a mistake in the ECMA spec. let tablesStreamPaddedSize = align 4 (tablesStreamUnpaddedSize + 4) let tablesChunk,next = chunk tablesStreamPaddedSize next let tablesStreamPadding = tablesChunk.size - tablesStreamUnpaddedSize let stringsChunk,next = chunk stringsStreamPaddedSize next let stringsStreamPadding = stringsChunk.size - stringsStreamUnpaddedSize let userStringsChunk,next = chunk userStringsStreamPaddedSize next let userStringsStreamPadding = userStringsChunk.size - userStringsStreamUnpaddedSize let guidsChunk,next = chunk (0x10 * guids.Length) next let blobsChunk,_next = chunk blobsStreamPaddedSize next let blobsStreamPadding = blobsChunk.size - blobsStreamUnpaddedSize reportTime showTimes "Layout Metadata"; let metadata = let mdbuf = ByteBuffer.Create 500000 mdbuf.EmitIntsAsBytes [| 0x42; 0x53; 0x4a; 0x42; // Magic signature 0x01; 0x00; // Major version 0x01; 0x00; // Minor version |]; mdbuf.EmitInt32 0x0; // Reservered mdbuf.EmitInt32 paddedVersionLength; mdbuf.EmitBytes version; for i = 1 to (paddedVersionLength - Array.length version) do mdbuf.EmitIntAsByte 0x00; mdbuf.EmitBytes [| 0x00uy; 0x00uy; // flags, reserved b0 numStreams; b1 numStreams; |]; mdbuf.EmitInt32 tablesChunk.addr; mdbuf.EmitInt32 tablesChunk.size; mdbuf.EmitIntsAsBytes [| 0x23; 0x7e; 0x00; 0x00; (* #~00 *)|]; mdbuf.EmitInt32 stringsChunk.addr; mdbuf.EmitInt32 stringsChunk.size; mdbuf.EmitIntsAsBytes [| 0x23; 0x53; 0x74; 0x72; 0x69; 0x6e; 0x67; 0x73; 0x00; 0x00; 0x00; 0x00 (* "#Strings0000" *)|]; mdbuf.EmitInt32 userStringsChunk.addr; mdbuf.EmitInt32 userStringsChunk.size; mdbuf.EmitIntsAsBytes [| 0x23; 0x55; 0x53; 0x00; (* #US0*) |]; mdbuf.EmitInt32 guidsChunk.addr; mdbuf.EmitInt32 guidsChunk.size; mdbuf.EmitIntsAsBytes [| 0x23; 0x47; 0x55; 0x49; 0x44; 0x00; 0x00; 0x00; (* #GUID000 *)|]; mdbuf.EmitInt32 blobsChunk.addr; mdbuf.EmitInt32 blobsChunk.size; mdbuf.EmitIntsAsBytes [| 0x23; 0x42; 0x6c; 0x6f; 0x62; 0x00; 0x00; 0x00; (* #Blob000 *)|]; reportTime showTimes "Write Metadata Header"; // Now the coded tables themselves mdbuf.EmitBytes codedTables; for i = 1 to tablesStreamPadding do mdbuf.EmitIntAsByte 0x00; reportTime showTimes "Write Metadata Tables"; // The string stream mdbuf.EmitByte 0x00uy; for s in strings do mdbuf.EmitBytes s; for i = 1 to stringsStreamPadding do mdbuf.EmitIntAsByte 0x00; reportTime showTimes "Write Metadata Strings"; // The user string stream mdbuf.EmitByte 0x00uy; for s in userStrings do mdbuf.EmitZ32 (s.Length + 1); mdbuf.EmitBytes s; mdbuf.EmitIntAsByte (markerForUnicodeBytes s) for i = 1 to userStringsStreamPadding do mdbuf.EmitIntAsByte 0x00; reportTime showTimes "Write Metadata User Strings"; // The GUID stream Array.iter mdbuf.EmitBytes guids; // The blob stream mdbuf.EmitByte 0x00uy; for s in blobs do mdbuf.EmitZ32 s.Length; mdbuf.EmitBytes s for i = 1 to blobsStreamPadding do mdbuf.EmitIntAsByte 0x00; reportTime showTimes "Write Blob Stream"; // Done - close the buffer and return the result. mdbuf.Close() // Now we know the user string tables etc. we can fixup the // uses of strings in the code for (codeStartAddr, l) in requiredStringFixups do for (codeOffset,userStringIndex) in l do if codeStartAddr < codep.addr || codeStartAddr >= codep.addr + codep.size then failwith "strings-in-code fixup: a group of fixups is located outside the code array"; let locInCode = ((codeStartAddr + codeOffset) - codep.addr) checkFixup32 code locInCode 0xdeadbeef; let token = getUncodedToken TableNames.UserStrings (userStringAddress userStringIndex) if (Bytes.get code (locInCode-1) <> i_ldstr) then failwith "strings-in-code fixup: not at ldstr instruction!"; applyFixup32 code locInCode token reportTime showTimes "Fixup Metadata"; entryPointToken,code, codePadding,metadata,data,resources,!requiredDataFixups,pdbData,mappings //--------------------------------------------------------------------- // PHYSICAL METADATA+BLOBS --> PHYSICAL PE FORMAT //--------------------------------------------------------------------- // THIS LAYS OUT A 2-SECTION .NET PE BINARY // SECTIONS // TEXT: physical 0x0200 --> RVA 0x00020000 // e.g. raw size 0x9600, // e.g. virt size 0x9584 // RELOC: physical 0x9800 --> RVA 0x0000c000 // i.e. physbase --> rvabase // where physbase = textbase + text raw size // phsrva = roundup(0x2000, 0x0002000 + text virt size) let msdosHeader : byte[] = [| 0x4duy; 0x5auy; 0x90uy; 0x00uy; 0x03uy; 0x00uy; 0x00uy; 0x00uy 0x04uy; 0x00uy; 0x00uy; 0x00uy; 0xFFuy; 0xFFuy; 0x00uy; 0x00uy 0xb8uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy 0x40uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x80uy; 0x00uy; 0x00uy; 0x00uy 0x0euy; 0x1fuy; 0xbauy; 0x0euy; 0x00uy; 0xb4uy; 0x09uy; 0xcduy 0x21uy; 0xb8uy; 0x01uy; 0x4cuy; 0xcduy; 0x21uy; 0x54uy; 0x68uy 0x69uy; 0x73uy; 0x20uy; 0x70uy; 0x72uy; 0x6fuy; 0x67uy; 0x72uy 0x61uy; 0x6duy; 0x20uy; 0x63uy; 0x61uy; 0x6euy; 0x6euy; 0x6fuy 0x74uy; 0x20uy; 0x62uy; 0x65uy; 0x20uy; 0x72uy; 0x75uy; 0x6euy 0x20uy; 0x69uy; 0x6euy; 0x20uy; 0x44uy; 0x4fuy; 0x53uy; 0x20uy 0x6duy; 0x6fuy; 0x64uy; 0x65uy; 0x2euy; 0x0duy; 0x0duy; 0x0auy 0x24uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy; 0x00uy |] let writeInt64 (os: BinaryWriter) x = os.Write (dw0 x); os.Write (dw1 x); os.Write (dw2 x); os.Write (dw3 x); os.Write (dw4 x); os.Write (dw5 x); os.Write (dw6 x); os.Write (dw7 x) let writeInt32 (os: BinaryWriter) x = os.Write (byte (b0 x)); os.Write (byte (b1 x)); os.Write (byte (b2 x)); os.Write (byte (b3 x)) let writeInt32AsUInt16 (os: BinaryWriter) x = os.Write (byte (b0 x)); os.Write (byte (b1 x)) let writeDirectory os dict = writeInt32 os (if dict.size = 0x0 then 0x0 else dict.addr); writeInt32 os dict.size let writeBytes (os: BinaryWriter) (chunk:byte[]) = os.Write(chunk,0,chunk.Length) let writeBinaryAndReportMappings (outfile, mscorlib, pdbfile: string option, signer: ILStrongNameSigner option, fixupOverlappingSequencePoints, emitTailcalls, showTimes, dumpDebugInfo) modul noDebugData = // Store the public key from the signer into the manifest. This means it will be written // to the binary and also acts as an indicator to leave space for delay sign reportTime showTimes "Write Started"; let isDll = modul.IsDLL let signer = match signer,modul.Manifest with | Some _, _ -> signer | _, None -> signer | None, Some {PublicKey=Some pubkey} -> (dprintn "Note: The output assembly will be delay-signed using the original public"; dprintn "Note: key. In order to load it you will need to either sign it with"; dprintn "Note: the original private key or to turn off strong-name verification"; dprintn "Note: (use sn.exe from the .NET Framework SDK to do this, e.g. 'sn -Vr *')."; dprintn "Note: Alternatively if this tool supports it you can provide the original"; dprintn "Note: private key when converting the assembly, assuming you have access to"; dprintn "Note: it."; Some (ILStrongNameSigner.OpenPublicKey pubkey)) | _ -> signer let modul = let pubkey = match signer with | None -> None | Some s -> try Some s.PublicKey with e -> failwith ("A call to StrongNameGetPublicKey failed ("+e.Message+")"); None begin match modul.Manifest with | None -> () | Some m -> if m.PublicKey <> None && m.PublicKey <> pubkey then dprintn "Warning: The output assembly is being signed or delay-signed with a strong name that is different to the original." end; { modul with Manifest = match modul.Manifest with None -> None | Some m -> Some {m with PublicKey = pubkey} } let timestamp = absilWriteGetTimeStamp () let os = try new BinaryWriter(FileSystem.FileStreamCreateShim(outfile)) with e -> failwith ("Could not open file for writing (binary mode): " + outfile) let pdbData,debugDirectoryChunk,debugDataChunk,textV2P,mappings = try let imageBaseReal = modul.ImageBase // FIXED CHOICE let alignVirt = modul.VirtualAlignment // FIXED CHOICE let alignPhys = modul.PhysicalAlignment // FIXED CHOICE let isItanium = modul.Platform = Some(IA64) let numSections = 3 // .text, .sdata, .reloc // HEADERS let next = 0x0 let headerSectionPhysLoc = 0x0 let headerAddr = next let next = headerAddr let msdosHeaderSize = 0x80 let msdosHeaderChunk,next = chunk msdosHeaderSize next let peSignatureSize = 0x04 let peSignatureChunk,next = chunk peSignatureSize next let peFileHeaderSize = 0x14 let peFileHeaderChunk,next = chunk peFileHeaderSize next let peOptionalHeaderSize = if modul.Is64Bit then 0xf0 else 0xe0 let peOptionalHeaderChunk,next = chunk peOptionalHeaderSize next let textSectionHeaderSize = 0x28 let textSectionHeaderChunk,next = chunk textSectionHeaderSize next let dataSectionHeaderSize = 0x28 let dataSectionHeaderChunk,next = chunk dataSectionHeaderSize next let relocSectionHeaderSize = 0x28 let relocSectionHeaderChunk,next = chunk relocSectionHeaderSize next let headerSize = next - headerAddr let nextPhys = align alignPhys (headerSectionPhysLoc + headerSize) let headerSectionPhysSize = nextPhys - headerSectionPhysLoc let next = align alignVirt (headerAddr + headerSize) // TEXT SECTION: 8 bytes IAT table 72 bytes CLI header let textSectionPhysLoc = nextPhys let textSectionAddr = next let next = textSectionAddr let importAddrTableChunk,next = chunk 0x08 next let cliHeaderPadding = (if isItanium then (align 16 next) else next) - next let next = next + cliHeaderPadding let cliHeaderChunk,next = chunk 0x48 next let desiredMetadataVersion = if modul.MetadataVersion <> "" then parseILVersion modul.MetadataVersion else match mscorlib with | ILScopeRef.Local -> failwith "Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.Local" | ILScopeRef.Module(_) -> failwith "Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.Module" | ILScopeRef.Assembly(aref) -> match aref.Version with | Some (2us,_,_,_) -> parseILVersion "2.0.50727.0" | Some v -> v | None -> failwith "Expected msorlib to have a version number" let entryPointToken,code,codePadding,metadata,data,resources,requiredDataFixups,pdbData,mappings = writeILMetadataAndCode ((pdbfile <> None), desiredMetadataVersion,mscorlib,emitTailcalls,showTimes) modul noDebugData next reportTime showTimes "Generated IL and metadata"; let _codeChunk,next = chunk code.Length next let _codePaddingChunk,next = chunk codePadding.Length next let metadataChunk,next = chunk metadata.Length next let strongnameChunk,next = match signer with | None -> nochunk next | Some s -> chunk s.SignatureSize next let resourcesChunk,next = chunk resources.Length next let rawdataChunk,next = chunk data.Length next let vtfixupsChunk,next = nochunk next // Note: only needed for mixed mode assemblies let importTableChunkPrePadding = (if isItanium then (align 16 next) else next) - next let next = next + importTableChunkPrePadding let importTableChunk,next = chunk 0x28 next let importLookupTableChunk,next = chunk 0x14 next let importNameHintTableChunk,next = chunk 0x0e next let mscoreeStringChunk,next = chunk 0x0c next let next = align 0x10 (next + 0x05) - 0x05 let importTableChunk = { addr=importTableChunk.addr; size = next - importTableChunk.addr} let importTableChunkPadding = importTableChunk.size - (0x28 + 0x14 + 0x0e + 0x0c) let next = next + 0x03 let entrypointCodeChunk,next = chunk 0x06 next let globalpointerCodeChunk,next = chunk (if isItanium then 0x8 else 0x0) next let debugDirectoryChunk,next = chunk (if pdbfile = None then 0x0 else sizeof_IMAGE_DEBUG_DIRECTORY) next // The debug data is given to us by the PDB writer and appears to // typically be the type of the data plus the PDB file name. We fill // this in after we've written the binary. We approximate the size according // to what PDB writers seem to require and leave extra space just in case... let debugDataJustInCase = 40 let debugDataChunk,next = chunk (align 0x4 (match pdbfile with | None -> 0x0 | Some f -> (24 + System.Text.Encoding.Unicode.GetByteCount(f) // See bug 748444 + debugDataJustInCase))) next let textSectionSize = next - textSectionAddr let nextPhys = align alignPhys (textSectionPhysLoc + textSectionSize) let textSectionPhysSize = nextPhys - textSectionPhysLoc let next = align alignVirt (textSectionAddr + textSectionSize) // .RSRC SECTION (DATA) let dataSectionPhysLoc = nextPhys let dataSectionAddr = next let dataSectionVirtToPhys v = v - dataSectionAddr + dataSectionPhysLoc #if SILVERLIGHT let nativeResources = [| |] #else let resourceFormat = if modul.Is64Bit then Support.X64 else Support.X86 let nativeResources = match modul.NativeResources with | [] -> [||] | resources -> if runningOnMono then [||] else let unlinkedResources = List.map Lazy.force resources begin try linkNativeResources unlinkedResources next resourceFormat (Path.GetDirectoryName(outfile)) with e -> failwith ("Linking a native resource failed: "+e.Message+"") end #endif let nativeResourcesSize = nativeResources.Length let nativeResourcesChunk,next = chunk nativeResourcesSize next let dummydatap,next = chunk (if next = dataSectionAddr then 0x01 else 0x0) next let dataSectionSize = next - dataSectionAddr let nextPhys = align alignPhys (dataSectionPhysLoc + dataSectionSize) let dataSectionPhysSize = nextPhys - dataSectionPhysLoc let next = align alignVirt (dataSectionAddr + dataSectionSize) // .RELOC SECTION base reloc table: 0x0c size let relocSectionPhysLoc = nextPhys let relocSectionAddr = next let baseRelocTableChunk,next = chunk 0x0c next let relocSectionSize = next - relocSectionAddr let nextPhys = align alignPhys (relocSectionPhysLoc + relocSectionSize) let relocSectionPhysSize = nextPhys - relocSectionPhysLoc let next = align alignVirt (relocSectionAddr + relocSectionSize) // Now we know where the data section lies we can fix up the // references into the data section from the metadata tables. begin requiredDataFixups |> List.iter (fun (metadataOffset32,(dataOffset,kind)) -> let metadataOffset = metadataOffset32 if metadataOffset < 0 || metadataOffset >= metadata.Length - 4 then failwith "data RVA fixup: fixup located outside metadata"; checkFixup32 metadata metadataOffset 0xdeaddddd; let dataRva = if kind then let res = dataOffset if res >= resourcesChunk.size then dprintn ("resource offset bigger than resource data section"); res else let res = rawdataChunk.addr + dataOffset if res < rawdataChunk.addr then dprintn ("data rva before data section"); if res >= rawdataChunk.addr + rawdataChunk.size then dprintn ("data rva after end of data section, dataRva = "+string res+", rawdataChunk.addr = "+string rawdataChunk.addr+", rawdataChunk.size = "+string rawdataChunk.size); res applyFixup32 metadata metadataOffset dataRva); end; // IMAGE TOTAL SIZE let imageEndSectionPhysLoc = nextPhys let imageEndAddr = next reportTime showTimes "Layout image"; let write p (os: BinaryWriter) chunkName chunk = match p with | None -> () | Some pExpected -> os.Flush(); let pCurrent = int32 os.BaseStream.Position if pCurrent <> pExpected then failwith ("warning: "+chunkName+" not where expected, pCurrent = "+string pCurrent+", p.addr = "+string pExpected) writeBytes os chunk let writePadding (os: BinaryWriter) _comment sz = if sz < 0 then failwith "writePadding: size < 0"; for i = 0 to sz - 1 do os.Write 0uy // Now we've computed all the offsets, write the image write (Some msdosHeaderChunk.addr) os "msdos header" msdosHeader; write (Some peSignatureChunk.addr) os "pe signature" [| |]; writeInt32 os 0x4550; write (Some peFileHeaderChunk.addr) os "pe file header" [| |]; if (modul.Platform = Some(AMD64)) then writeInt32AsUInt16 os 0x8664 // Machine - IMAGE_FILE_MACHINE_AMD64 elif isItanium then writeInt32AsUInt16 os 0x200 else writeInt32AsUInt16 os 0x014c; // Machine - IMAGE_FILE_MACHINE_I386 writeInt32AsUInt16 os numSections; writeInt32 os timestamp; // date since 1970 writeInt32 os 0x00; // Pointer to Symbol Table Always 0 // 00000090 writeInt32 os 0x00; // Number of Symbols Always 0 writeInt32AsUInt16 os peOptionalHeaderSize; // Size of the optional header, the format is described below. // 64bit: IMAGE_FILE_32BIT_MACHINE ||| IMAGE_FILE_LARGE_ADDRESS_AWARE // 32bit: IMAGE_FILE_32BIT_MACHINE // Yes, 32BIT_MACHINE is set for AMD64... let iMachineCharacteristic = match modul.Platform with | Some IA64 -> 0x20 | Some AMD64 -> 0x0120 | _ -> 0x0100 writeInt32AsUInt16 os ((if isDll then 0x2000 else 0x0000) ||| 0x0002 ||| 0x0004 ||| 0x0008 ||| iMachineCharacteristic); // Now comes optional header let peOptionalHeaderByte = peOptionalHeaderByteByCLRVersion desiredMetadataVersion write (Some peOptionalHeaderChunk.addr) os "pe optional header" [| |]; if modul.Is64Bit then writeInt32AsUInt16 os 0x020B // Magic number is 0x020B for 64-bit else writeInt32AsUInt16 os 0x010b; // Always 0x10B (see Section 23.1). writeInt32AsUInt16 os peOptionalHeaderByte; // ECMA spec says 6, some binaries, e.g. fscmanaged.exe say 7, Whidbey binaries say 8 writeInt32 os textSectionPhysSize; // Size of the code (text) section, or the sum of all code sections if there are multiple sections. // 000000a0 writeInt32 os dataSectionPhysSize; // Size of the initialized data section, or the sum of all such sections if there are multiple data sections. writeInt32 os 0x00; // Size of the uninitialized data section, or the sum of all such sections if there are multiple unitinitalized data sections. writeInt32 os entrypointCodeChunk.addr; // RVA of entry point , needs to point to bytes 0xFF 0x25 followed by the RVA+!0x4000000 in a section marked execute/read for EXEs or 0 for DLLs e.g. 0x0000b57e writeInt32 os textSectionAddr; // e.g. 0x0002000 // 000000b0 if modul.Is64Bit then writeInt64 os ((int64)imageBaseReal) // REVIEW: For 64-bit, we should use a 64-bit image base else writeInt32 os dataSectionAddr; // e.g. 0x0000c000 writeInt32 os imageBaseReal; // Image Base Always 0x400000 (see Section 23.1). - QUERY : no it's not always 0x400000, e.g. 0x034f0000 writeInt32 os alignVirt; // Section Alignment Always 0x2000 (see Section 23.1). writeInt32 os alignPhys; // File Alignment Either 0x200 or 0x1000. // 000000c0 writeInt32AsUInt16 os 0x04; // OS Major Always 4 (see Section 23.1). writeInt32AsUInt16 os 0x00; // OS Minor Always 0 (see Section 23.1). writeInt32AsUInt16 os 0x00; // User Major Always 0 (see Section 23.1). writeInt32AsUInt16 os 0x00; // User Minor Always 0 (see Section 23.1). do let (major, minor) = modul.SubsystemVersion writeInt32AsUInt16 os major; writeInt32AsUInt16 os minor; writeInt32 os 0x00; // Reserved Always 0 (see Section 23.1). // 000000d0 writeInt32 os imageEndAddr; // Image Size: Size, in bytes, of image, including all headers and padding; shall be a multiple of Section Alignment. e.g. 0x0000e000 writeInt32 os headerSectionPhysSize; // Header Size Combined size of MS-DOS Header, PE Header, PE Optional Header and padding; shall be a multiple of the file alignment. writeInt32 os 0x00; // File Checksum Always 0 (see Section 23.1). QUERY: NOT ALWAYS ZERO writeInt32AsUInt16 os modul.SubSystemFlags; // SubSystem Subsystem required to run this image. Shall be either IMAGE_SUBSYSTEM_WINDOWS_CE_GUI (0x3) or IMAGE_SUBSYSTEM_WINDOWS_GUI (0x2). QUERY: Why is this 3 on the images ILASM produces // DLL Flags Always 0x400 (no unmanaged windows exception handling - see Section 23.1). // Itanium: see notes at end of file // IMAGE_DLLCHARACTERISTICS_NX_COMPAT: See FSharp 1.0 bug 5019 and http://blogs.msdn.com/ed_maurer/archive/2007/12/14/nxcompat-and-the-c-compiler.aspx // Itanium : IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE | IMAGE_DLLCHARACTERISTICS_ NO_SEH | IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT // x86 : IMAGE_DLLCHARACTERISTICS_ NO_SEH | IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT // x64 : IMAGE_DLLCHARACTERISTICS_ NO_SEH | IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT let dllCharacteristics = let flags = if modul.Is64Bit then (if isItanium then 0x8540 else 0x540) else 0x540 if modul.UseHighEntropyVA then flags ||| 0x20 // IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA else flags writeInt32AsUInt16 os dllCharacteristics // 000000e0 // Note that the defaults differ between x86 and x64 if modul.Is64Bit then let size = defaultArg modul.StackReserveSize 0x400000 |> int64 writeInt64 os size; // Stack Reserve Size Always 0x400000 (4Mb) (see Section 23.1). writeInt64 os 0x4000L; // Stack Commit Size Always 0x4000 (16Kb) (see Section 23.1). writeInt64 os 0x100000L; // Heap Reserve Size Always 0x100000 (1Mb) (see Section 23.1). writeInt64 os 0x2000L // Heap Commit Size Always 0x800 (8Kb) (see Section 23.1). else let size = defaultArg modul.StackReserveSize 0x100000 writeInt32 os size; // Stack Reserve Size Always 0x100000 (1Mb) (see Section 23.1). writeInt32 os 0x1000; // Stack Commit Size Always 0x1000 (4Kb) (see Section 23.1). writeInt32 os 0x100000; // Heap Reserve Size Always 0x100000 (1Mb) (see Section 23.1). writeInt32 os 0x1000; // Heap Commit Size Always 0x1000 (4Kb) (see Section 23.1). // 000000f0 - x86 location, moving on, for x64, add 0x10 writeInt32 os 0x00; // Loader Flags Always 0 (see Section 23.1) writeInt32 os 0x10; // Number of Data Directories: Always 0x10 (see Section 23.1). writeInt32 os 0x00; writeInt32 os 0x00; // Export Table Always 0 (see Section 23.1). // 00000100 writeDirectory os importTableChunk; // Import Table RVA of Import Table, (see clause 24.3.1). e.g. 0000b530 // Native Resource Table: ECMA says Always 0 (see Section 23.1), but mscorlib and other files with resources bound into executable do not. For the moment assume the resources table is always the first resource in the file. writeDirectory os nativeResourcesChunk; // 00000110 writeInt32 os 0x00; // Exception Table Always 0 (see Section 23.1). writeInt32 os 0x00; // Exception Table Always 0 (see Section 23.1). writeInt32 os 0x00; // Certificate Table Always 0 (see Section 23.1). writeInt32 os 0x00; // Certificate Table Always 0 (see Section 23.1). // 00000120 writeDirectory os baseRelocTableChunk; writeDirectory os debugDirectoryChunk; // Debug Directory // 00000130 writeInt32 os 0x00; // Copyright Always 0 (see Section 23.1). writeInt32 os 0x00; // Copyright Always 0 (see Section 23.1). writeInt32 os 0x00; // Global Ptr Always 0 (see Section 23.1). writeInt32 os 0x00; // Global Ptr Always 0 (see Section 23.1). // 00000140 writeInt32 os 0x00; // Load Config Table Always 0 (see Section 23.1). writeInt32 os 0x00; // Load Config Table Always 0 (see Section 23.1). writeInt32 os 0x00; // TLS Table Always 0 (see Section 23.1). writeInt32 os 0x00; // TLS Table Always 0 (see Section 23.1). // 00000150 writeInt32 os 0x00; // Bound Import Always 0 (see Section 23.1). writeInt32 os 0x00; // Bound Import Always 0 (see Section 23.1). writeDirectory os importAddrTableChunk; // Import Addr Table, (see clause 24.3.1). e.g. 0x00002000 // 00000160 writeInt32 os 0x00; // Delay Import Descriptor Always 0 (see Section 23.1). writeInt32 os 0x00; // Delay Import Descriptor Always 0 (see Section 23.1). writeDirectory os cliHeaderChunk; // 00000170 writeInt32 os 0x00; // Reserved Always 0 (see Section 23.1). writeInt32 os 0x00; // Reserved Always 0 (see Section 23.1). write (Some textSectionHeaderChunk.addr) os "text section header" [| |]; // 00000178 writeBytes os [| 0x2euy; 0x74uy; 0x65uy; 0x78uy; 0x74uy; 0x00uy; 0x00uy; 0x00uy; |]; // ".text\000\000\000" // 00000180 writeInt32 os textSectionSize; // VirtualSize: Total size of the section when loaded into memory in bytes rounded to Section Alignment. If this value is greater than Size of Raw Data, the section is zero-padded. e.g. 0x00009584 writeInt32 os textSectionAddr; // VirtualAddress For executable images this is the address of the first byte of the section, when loaded into memory, relative to the image base. e.g. 0x00020000 writeInt32 os textSectionPhysSize; // SizeOfRawData Size of the initialized data on disk in bytes, shall be a multiple of FileAlignment from the PE header. If this is less than VirtualSize the remainder of the section is zero filled. Because this field is rounded while the VirtualSize field is not it is possible for this to be greater than VirtualSize as well. When a section contains only uninitialized data, this field should be 0. 0x00009600 writeInt32 os textSectionPhysLoc; // PointerToRawData RVA to section’s first page within the PE file. This shall be a multiple of FileAlignment from the optional header. When a section contains only uninitialized data, this field should be 0. e.g. 00000200 // 00000190 writeInt32 os 0x00; // PointerToRelocations RVA of Relocation section. writeInt32 os 0x00; // PointerToLinenumbers Always 0 (see Section 23.1). // 00000198 writeInt32AsUInt16 os 0x00;// NumberOfRelocations Number of relocations, set to 0 if unused. writeInt32AsUInt16 os 0x00; // NumberOfLinenumbers Always 0 (see Section 23.1). writeBytes os [| 0x20uy; 0x00uy; 0x00uy; 0x60uy |]; // Characteristics Flags describing section’s characteristics, see below. IMAGE_SCN_CNT_CODE || IMAGE_SCN_MEM_EXECUTE || IMAGE_SCN_MEM_READ write (Some dataSectionHeaderChunk.addr) os "data section header" [| |]; // 000001a0 writeBytes os [| 0x2euy; 0x72uy; 0x73uy; 0x72uy; 0x63uy; 0x00uy; 0x00uy; 0x00uy; |]; // ".rsrc\000\000\000" // writeBytes os [| 0x2e; 0x73; 0x64; 0x61; 0x74; 0x61; 0x00; 0x00; |]; // ".sdata\000\000" writeInt32 os dataSectionSize; // VirtualSize: Total size of the section when loaded into memory in bytes rounded to Section Alignment. If this value is greater than Size of Raw Data, the section is zero-padded. e.g. 0x0000000c writeInt32 os dataSectionAddr; // VirtualAddress For executable images this is the address of the first byte of the section, when loaded into memory, relative to the image base. e.g. 0x0000c000 // 000001b0 writeInt32 os dataSectionPhysSize; // SizeOfRawData Size of the initialized data on disk in bytes, shall be a multiple of FileAlignment from the PE header. If this is less than VirtualSize the remainder of the section is zero filled. Because this field is rounded while the VirtualSize field is not it is possible for this to be greater than VirtualSize as well. When a section contains only uninitialized data, this field should be 0. e.g. 0x00000200 writeInt32 os dataSectionPhysLoc; // PointerToRawData QUERY: Why does ECMA say "RVA" here? Offset to section’s first page within the PE file. This shall be a multiple of FileAlignment from the optional header. When a section contains only uninitialized data, this field should be 0. e.g. 0x00009800 // 000001b8 writeInt32 os 0x00; // PointerToRelocations RVA of Relocation section. writeInt32 os 0x00; // PointerToLinenumbers Always 0 (see Section 23.1). // 000001c0 writeInt32AsUInt16 os 0x00; // NumberOfRelocations Number of relocations, set to 0 if unused. writeInt32AsUInt16 os 0x00; // NumberOfLinenumbers Always 0 (see Section 23.1). writeBytes os [| 0x40uy; 0x00uy; 0x00uy; 0x40uy |]; // Characteristics Flags: IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA write (Some relocSectionHeaderChunk.addr) os "reloc section header" [| |]; // 000001a0 writeBytes os [| 0x2euy; 0x72uy; 0x65uy; 0x6cuy; 0x6fuy; 0x63uy; 0x00uy; 0x00uy; |]; // ".reloc\000\000" writeInt32 os relocSectionSize; // VirtualSize: Total size of the section when loaded into memory in bytes rounded to Section Alignment. If this value is greater than Size of Raw Data, the section is zero-padded. e.g. 0x0000000c writeInt32 os relocSectionAddr; // VirtualAddress For executable images this is the address of the first byte of the section, when loaded into memory, relative to the image base. e.g. 0x0000c000 // 000001b0 writeInt32 os relocSectionPhysSize; // SizeOfRawData Size of the initialized reloc on disk in bytes, shall be a multiple of FileAlignment from the PE header. If this is less than VirtualSize the remainder of the section is zero filled. Because this field is rounded while the VirtualSize field is not it is possible for this to be greater than VirtualSize as well. When a section contains only uninitialized reloc, this field should be 0. e.g. 0x00000200 writeInt32 os relocSectionPhysLoc; // PointerToRawData QUERY: Why does ECMA say "RVA" here? Offset to section’s first page within the PE file. This shall be a multiple of FileAlignment from the optional header. When a section contains only uninitialized reloc, this field should be 0. e.g. 0x00009800 // 000001b8 writeInt32 os 0x00; // PointerToRelocations RVA of Relocation section. writeInt32 os 0x00; // PointerToLinenumbers Always 0 (see Section 23.1). // 000001c0 writeInt32AsUInt16 os 0x00; // NumberOfRelocations Number of relocations, set to 0 if unused. writeInt32AsUInt16 os 0x00; // NumberOfLinenumbers Always 0 (see Section 23.1). writeBytes os [| 0x40uy; 0x00uy; 0x00uy; 0x42uy |]; // Characteristics Flags: IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | writePadding os "pad to text begin" (textSectionPhysLoc - headerSize); // TEXT SECTION: e.g. 0x200 let textV2P v = v - textSectionAddr + textSectionPhysLoc // e.g. 0x0200 write (Some (textV2P importAddrTableChunk.addr)) os "import addr table" [| |]; writeInt32 os importNameHintTableChunk.addr; writeInt32 os 0x00; // QUERY 4 bytes of zeros not 2 like ECMA 24.3.1 says // e.g. 0x0208 let flags = (if modul.IsILOnly then 0x01 else 0x00) ||| (if modul.Is32Bit then 0x02 else 0x00) ||| (if modul.Is32BitPreferred then 0x00020003 else 0x00) ||| (if (match signer with None -> false | Some s -> s.IsFullySigned) then 0x08 else 0x00) let headerVersionMajor,headerVersionMinor = headerVersionSupportedByCLRVersion desiredMetadataVersion writePadding os "pad to cli header" cliHeaderPadding write (Some (textV2P cliHeaderChunk.addr)) os "cli header" [| |]; writeInt32 os 0x48; // size of header writeInt32AsUInt16 os headerVersionMajor; // Major part of minimum version of CLR reqd. writeInt32AsUInt16 os headerVersionMinor; // Minor part of minimum version of CLR reqd. ... // e.g. 0x0210 writeDirectory os metadataChunk; writeInt32 os flags; writeInt32 os entryPointToken; write None os "rest of cli header" [| |]; // e.g. 0x0220 writeDirectory os resourcesChunk; writeDirectory os strongnameChunk; // e.g. 0x0230 writeInt32 os 0x00; // code manager table, always 0 writeInt32 os 0x00; // code manager table, always 0 writeDirectory os vtfixupsChunk; // e.g. 0x0240 writeInt32 os 0x00; // export addr table jumps, always 0 writeInt32 os 0x00; // export addr table jumps, always 0 writeInt32 os 0x00; // managed native header, always 0 writeInt32 os 0x00; // managed native header, always 0 writeBytes os code; write None os "code padding" codePadding; writeBytes os metadata; // write 0x80 bytes of empty space for encrypted SHA1 hash, written by SN.EXE or call to signing API if signer <> None then write (Some (textV2P strongnameChunk.addr)) os "strongname" (Array.create strongnameChunk.size 0x0uy); write (Some (textV2P resourcesChunk.addr)) os "raw resources" [| |]; writeBytes os resources; write (Some (textV2P rawdataChunk.addr)) os "raw data" [| |]; writeBytes os data; writePadding os "start of import table" importTableChunkPrePadding // vtfixups would go here write (Some (textV2P importTableChunk.addr)) os "import table" [| |]; writeInt32 os importLookupTableChunk.addr; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os mscoreeStringChunk.addr; writeInt32 os importAddrTableChunk.addr; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os 0x00; write (Some (textV2P importLookupTableChunk.addr)) os "import lookup table" [| |]; writeInt32 os importNameHintTableChunk.addr; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os 0x00; writeInt32 os 0x00; write (Some (textV2P importNameHintTableChunk.addr)) os "import name hint table" [| |]; // Two zero bytes of hint, then Case sensitive, null-terminated ASCII string containing name to import. // Shall _CorExeMain a .exe file _CorDllMain for a .dll file. if isDll then writeBytes os [| 0x00uy; 0x00uy; 0x5fuy; 0x43uy ; 0x6fuy; 0x72uy; 0x44uy; 0x6cuy; 0x6cuy; 0x4duy; 0x61uy; 0x69uy; 0x6euy; 0x00uy |] else writeBytes os [| 0x00uy; 0x00uy; 0x5fuy; 0x43uy; 0x6fuy; 0x72uy; 0x45uy; 0x78uy; 0x65uy; 0x4duy; 0x61uy; 0x69uy; 0x6euy; 0x00uy |]; write (Some (textV2P mscoreeStringChunk.addr)) os "mscoree string" [| 0x6duy; 0x73uy; 0x63uy; 0x6fuy ; 0x72uy; 0x65uy ; 0x65uy; 0x2euy ; 0x64uy; 0x6cuy ; 0x6cuy; 0x00uy ; |]; writePadding os "end of import tab" importTableChunkPadding; writePadding os "head of entrypoint" 0x03; let ep = (imageBaseReal + textSectionAddr) write (Some (textV2P entrypointCodeChunk.addr)) os " entrypoint code" [| 0xFFuy; 0x25uy; (* x86 Instructions for entry *) b0 ep; b1 ep; b2 ep; b3 ep |]; if isItanium then write (Some (textV2P globalpointerCodeChunk.addr)) os " itanium global pointer" [| 0x0uy; 0x0uy; 0x0uy; 0x0uy; 0x0uy; 0x0uy; 0x0uy; 0x0uy |]; if pdbfile.IsSome then write (Some (textV2P debugDirectoryChunk.addr)) os "debug directory" (Array.create sizeof_IMAGE_DEBUG_DIRECTORY 0x0uy); write (Some (textV2P debugDataChunk.addr)) os "debug data" (Array.create debugDataChunk.size 0x0uy); writePadding os "end of .text" (dataSectionPhysLoc - textSectionPhysLoc - textSectionSize); // DATA SECTION match nativeResources with | [||] -> () | resources -> write (Some (dataSectionVirtToPhys nativeResourcesChunk.addr)) os "raw native resources" [| |]; writeBytes os resources; if dummydatap.size <> 0x0 then write (Some (dataSectionVirtToPhys dummydatap.addr)) os "dummy data" [| 0x0uy |]; writePadding os "end of .rsrc" (relocSectionPhysLoc - dataSectionPhysLoc - dataSectionSize); // RELOC SECTION // See ECMA 24.3.2 let relocV2P v = v - relocSectionAddr + relocSectionPhysLoc let entrypointFixupAddr = entrypointCodeChunk.addr + 0x02 let entrypointFixupBlock = (entrypointFixupAddr / 4096) * 4096 let entrypointFixupOffset = entrypointFixupAddr - entrypointFixupBlock let reloc = (if modul.Is64Bit then 0xA000 (* IMAGE_REL_BASED_DIR64 *) else 0x3000 (* IMAGE_REL_BASED_HIGHLOW *)) ||| entrypointFixupOffset // For the itanium, you need to set a relocation entry for the global pointer let reloc2 = if not isItanium then 0x0 else 0xA000 ||| (globalpointerCodeChunk.addr - ((globalpointerCodeChunk.addr / 4096) * 4096)) write (Some (relocV2P baseRelocTableChunk.addr)) os "base reloc table" [| b0 entrypointFixupBlock; b1 entrypointFixupBlock; b2 entrypointFixupBlock; b3 entrypointFixupBlock; 0x0cuy; 0x00uy; 0x00uy; 0x00uy; b0 reloc; b1 reloc; b0 reloc2; b1 reloc2; |]; writePadding os "end of .reloc" (imageEndSectionPhysLoc - relocSectionPhysLoc - relocSectionSize); os.Close(); try FileSystemUtilites.setExecutablePermission outfile with _ -> () pdbData,debugDirectoryChunk,debugDataChunk,textV2P,mappings // Looks like a finally... with e -> (try os.Close(); FileSystem.FileDelete outfile with _ -> ()); reraise() raise e // is this really needed? reportTime showTimes "Writing Image"; if dumpDebugInfo then DumpDebugInfo outfile pdbData #if SILVERLIGHT #else // Now we've done the bulk of the binary, do the PDB file and fixup the binary. begin match pdbfile with | None -> () | Some fmdb when runningOnMono -> WriteMdbInfo fmdb outfile pdbData | Some fpdb -> try let idd = WritePdbInfo fixupOverlappingSequencePoints showTimes outfile fpdb pdbData reportTime showTimes "Generate PDB Info"; // Now we have the debug data we can go back and fill in the debug directory in the image let fs2 = new FileStream(outfile, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read, 0x1000, false) let os2 = new BinaryWriter(fs2) try // write the IMAGE_DEBUG_DIRECTORY os2.BaseStream.Seek (int64 (textV2P debugDirectoryChunk.addr), SeekOrigin.Begin) |> ignore; writeInt32 os2 idd.iddCharacteristics; // IMAGE_DEBUG_DIRECTORY.Characteristics writeInt32 os2 timestamp; writeInt32AsUInt16 os2 idd.iddMajorVersion; writeInt32AsUInt16 os2 idd.iddMinorVersion; writeInt32 os2 idd.iddType; writeInt32 os2 idd.iddData.Length; // IMAGE_DEBUG_DIRECTORY.SizeOfData writeInt32 os2 debugDataChunk.addr; // IMAGE_DEBUG_DIRECTORY.AddressOfRawData writeInt32 os2 (textV2P debugDataChunk.addr);// IMAGE_DEBUG_DIRECTORY.PointerToRawData (* dprintf "idd.iddCharacteristics = %ld\n" idd.iddCharacteristics; dprintf "iddMajorVersion = %ld\n" idd.iddMajorVersion; dprintf "iddMinorVersion = %ld\n" idd.iddMinorVersion; dprintf "iddType = %ld\n" idd.iddType; dprintf "iddData = (%A) = %s\n" idd.iddData (System.Text.Encoding.UTF8.GetString idd.iddData); *) // write the debug raw data as given us by the PDB writer os2.BaseStream.Seek (int64 (textV2P debugDataChunk.addr), SeekOrigin.Begin) |> ignore; if debugDataChunk.size < idd.iddData.Length then failwith "Debug data area is not big enough. Debug info may not be usable"; writeBytes os2 idd.iddData; os2.Close() with e -> failwith ("Error while writing debug directory entry: "+e.Message); (try os2.Close(); FileSystem.FileDelete outfile with _ -> ()); reraise() with e -> reraise() end; #endif reportTime showTimes "Finalize PDB"; /// Sign the binary. No further changes to binary allowed past this point! match signer with | None -> () | Some s -> try s.SignFile outfile; s.Close() with e -> failwith ("Warning: A call to StrongNameSignatureGeneration failed ("+e.Message+")"); (try s.Close() with _ -> ()); (try FileSystem.FileDelete outfile with _ -> ()); () reportTime showTimes "Signing Image"; //Finished writing and signing the binary and debug info... mappings type options = { mscorlib: ILScopeRef; pdbfile: string option; signer: ILStrongNameSigner option; fixupOverlappingSequencePoints: bool; emitTailcalls : bool; showTimes: bool; dumpDebugInfo:bool } let WriteILBinary outfile (args: options) modul noDebugData = ignore (writeBinaryAndReportMappings (outfile, args.mscorlib, args.pdbfile, args.signer, args.fixupOverlappingSequencePoints, args.emitTailcalls, args.showTimes, args.dumpDebugInfo) modul (noDebugData, true)) (****************************************************** ** Notes on supporting the Itanium (jopamer) ** ******************************************************* IA64 codegen on the CLR isn’t documented, and getting it working involved a certain amount of reverse-engineering peverify.exe and various binaries generated by ILAsm and other managed compiles. Here are some lessons learned, documented for posterity and the 0 other people writing managed compilers for the Itanium: - Even if you’re not utilizing the global pointer in your Itanium binary, you should be setting aside space for it in .text. (Preferably near the native stub.) - PEVerify checks for two .reloc table entries on the Itanium - one for the native stub, and one for the global pointer RVA. It doesn’t matter what you set these values to - their addresses can be zeroed out, but they must have IMAGE_REL_BASED_DIR64 set! (So, yes, you may find yourself setting this flag on an empty, unnecessary table slot!) - On the Itanium, it’s best to have your tables qword aligned. (Though, peverify checks for dword alignment.) - A different, weird set of DLL characteristics are necessary for the Itanium. I won’t detail them here, but it’s interesting given that this field isn’t supposed to vary between platforms, and is supposedly marked as deprecated. - There are two schools to generating CLR binaries on for the Itanium - I’ll call them the “ALink” school and the “ILAsm” school. - The ALink school relies on some quirks in the CLR to omit a lot of stuff that, admittedly, isn’t necessary. The binaries are basically IL-only, with some flags set to make them nominally Itanium: - It omits the .reloc table - It doesn’t set aside memory for global pointer storage - There’s no native stub - There’s no import table, mscoree reference / startup symbol hint - A manifest is inserted by default. These omissions are understandable, given the platform/jitting/capabilities of the language, but they’re basically relying on an idiosyncracy of the runtime to get away with creating a “bad” binary. - The ILAsm school actually writes everything out: - It has a reloc table with the requisite two entries - It sets aside memory for a global pointer, even if it doesn’t utilize one - It actually inserts a native stub for the Itanium! (Though, I have no idea what instructions, specifically, are emitted, and I couldn’t dig up the sources to ILAsm to find out) - There’s the requisite mscoree reference, etc. - No manifest is inserted *******************************************************) fsharp-3.0.34/src/absil/ilreflect.fs0000775000175000017500000034367112260314606016275 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Write Abstract IL structures at runtime using Reflection.Emit //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Core.Printf open System open System.Reflection open System.Reflection.Emit open System.Runtime.InteropServices open System.Collections.Generic let codeLabelOrder = ComparisonIdentity.Structural // Convert the output of convCustomAttr #if SILVERLIGHT let wrapCustomAttr setCustomAttr (cinfo, cinfoBuilder) = setCustomAttr(cinfoBuilder cinfo) #else open Microsoft.FSharp.Compiler.AbstractIL.ILAsciiWriter let wrapCustomAttr setCustomAttr (cinfo, bytes) = setCustomAttr(cinfo, bytes) #endif //---------------------------------------------------------------------------- // logging to enable debugging //---------------------------------------------------------------------------- let logRefEmitCalls = false type System.AppDomain with member x.DefineDynamicAssemblyAndLog(asmName,flags,asmDir:string) = #if SILVERLIGHT ignore asmDir let asmB = x.DefineDynamicAssembly(asmName,flags) #else let asmB = x.DefineDynamicAssembly(asmName,flags,asmDir) #endif if logRefEmitCalls then printfn "open System" printfn "open System.Reflection" printfn "open System.Reflection.Emit" printfn "let assemblyBuilder%d = System.AppDomain.CurrentDomain.DefineDynamicAssembly(AssemblyName(Name=\"%s\"),enum %d,%A)" (abs <| hash asmB) asmName.Name (LanguagePrimitives.EnumToValue flags) asmDir asmB type System.Reflection.Emit.AssemblyBuilder with member asmB.DefineDynamicModuleAndLog(a,b,c) = #if SILVERLIGHT ignore c let modB = asmB.DefineDynamicModule(a,b) #else let modB = asmB.DefineDynamicModule(a,b,c) #endif if logRefEmitCalls then printfn "let moduleBuilder%d = assemblyBuilder%d.DefineDynamicModule(%A,%A,%A)" (abs <| hash modB) (abs <| hash asmB) a b c modB member asmB.SetCustomAttributeAndLog(cinfo,bytes) = if logRefEmitCalls then printfn "assemblyBuilder%d.SetCustomAttribute(%A, %A)" (abs <| hash asmB) cinfo bytes wrapCustomAttr asmB.SetCustomAttribute (cinfo, bytes) #if FX_ATLEAST_SILVERLIGHT_50 #else member asmB.AddResourceFileAndLog(nm1, nm2, attrs) = if logRefEmitCalls then printfn "assemblyBuilder%d.AddResourceFile(%A, %A, enum %d)" (abs <| hash asmB) nm1 nm2 (LanguagePrimitives.EnumToValue attrs) asmB.AddResourceFile(nm1,nm2,attrs) #endif member asmB.SetCustomAttributeAndLog(cab) = if logRefEmitCalls then printfn "assemblyBuilder%d.SetCustomAttribute(%A)" (abs <| hash asmB) cab asmB.SetCustomAttribute(cab) type System.Reflection.Emit.ModuleBuilder with member modB.GetArrayMethodAndLog(aty,nm,flags,rty,tys) = if logRefEmitCalls then printfn "moduleBuilder%d.GetArrayMethod(%A,%A,%A,%A,%A)" (abs <| hash modB) aty nm flags rty tys modB.GetArrayMethod(aty,nm,flags,rty,tys) member modB.DefineDocumentAndLog(file,lang,vendor,doctype) = let symDoc = modB.DefineDocument(file,lang,vendor,doctype) if logRefEmitCalls then printfn "let docWriter%d = moduleBuilder%d.DefineDocument(%A,System.Guid(\"%A\"),System.Guid(\"%A\"),System.Guid(\"%A\"))" (abs <| hash symDoc) (abs <| hash modB) file lang vendor doctype symDoc member modB.GetTypeAndLog(nameInModule,flag1,flag2) = if logRefEmitCalls then printfn "moduleBuilder%d.GetType(%A,%A,%A) |> ignore" (abs <| hash modB) nameInModule flag1 flag2 modB.GetType(nameInModule,flag1,flag2) member modB.DefineTypeAndLog(name,attrs) = let typB = modB.DefineType(name,attrs) if logRefEmitCalls then printfn "let typeBuilder%d = moduleBuilder%d.DefineType(%A,enum %d)" (abs <| hash typB) (abs <| hash modB) name (LanguagePrimitives.EnumToValue attrs) typB member modB.DefineManifestResourceAndLog(name,stream,attrs) = if logRefEmitCalls then printfn "moduleBuilder%d.DefineManifestResource(%A,%A,enum %d)" (abs <| hash modB) name stream (LanguagePrimitives.EnumToValue attrs) #if SILVERLIGHT // Annoyingly, DefineManifestResource is security critical on Silverlight #else modB.DefineManifestResource(name,stream,attrs) #endif member modB.SetCustomAttributeAndLog(cinfo,bytes) = if logRefEmitCalls then printfn "moduleBuilder%d.SetCustomAttribute(%A, %A)" (abs <| hash modB) cinfo bytes wrapCustomAttr modB.SetCustomAttribute (cinfo,bytes) type System.Reflection.Emit.ConstructorBuilder with member consB.SetImplementationFlagsAndLog(attrs) = if logRefEmitCalls then printfn "constructorBuilder%d.SetImplementationFlags(enum %d)" (abs <| hash consB) (LanguagePrimitives.EnumToValue attrs) consB.SetImplementationFlags(attrs) member consB.DefineParameterAndLog(n,attr,nm) = if logRefEmitCalls then printfn "constructorBuilder%d.DefineParameter(%d,enum %d,%A)" (abs <| hash consB) n (LanguagePrimitives.EnumToValue attr) nm consB.DefineParameter(n,attr,nm) member consB.GetILGeneratorAndLog() = let ilG = consB.GetILGenerator() if logRefEmitCalls then printfn "let ilg%d = constructorBuilder%d.GetILGenerator()" (abs <| hash ilG) (abs <| hash consB) ilG type System.Reflection.Emit.MethodBuilder with member methB.SetImplementationFlagsAndLog(attrs) = if logRefEmitCalls then printfn "methodBuilder%d.SetImplementationFlags(enum %d)" (abs <| hash methB) (LanguagePrimitives.EnumToValue attrs) methB.SetImplementationFlags(attrs) member methB.SetReturnTypeAndLog(rt:System.Type) = if logRefEmitCalls then printfn "methodBuilder%d.SetReturnType(typeof<%s>)" (abs <| hash methB) rt.FullName methB.SetReturnType(rt) member methB.SetParametersAndLog(ps) = if logRefEmitCalls then printfn "methodBuilder%d.SetParameters(%A)" (abs <| hash methB) ps methB.SetParameters(ps) member methB.DefineParameterAndLog(n,attr,nm) = if logRefEmitCalls then printfn "methodBuilder%d.DefineParameter(%d,enum %d,%A)" (abs <| hash methB) n (LanguagePrimitives.EnumToValue attr) nm methB.DefineParameter(n,attr,nm) member methB.DefineGenericParametersAndLog(gps) = if logRefEmitCalls then printfn "let gps%d = methodBuilder%d.DefineGenericParameters(%A)" (abs <| hash methB) (abs <| hash methB) gps methB.DefineGenericParameters(gps) member methB.GetILGeneratorAndLog() = let ilG = methB.GetILGenerator() if logRefEmitCalls then printfn "let ilg%d = methodBuilder%d.GetILGenerator()" (abs <| hash ilG) (abs <| hash methB) ilG member methB.SetCustomAttributeAndLog(cinfo,bytes) = if logRefEmitCalls then printfn "methodBuilder%d.SetCustomAttribute(%A, %A)" (abs <| hash methB) cinfo bytes wrapCustomAttr methB.SetCustomAttribute (cinfo,bytes) type System.Reflection.Emit.TypeBuilder with member typB.CreateTypeAndLog() = if logRefEmitCalls then printfn "typeBuilder%d.CreateType()" (abs <| hash typB) typB.CreateType() member typB.DefineNestedTypeAndLog(name,attrs) = let res = typB.DefineNestedType(name,attrs) if logRefEmitCalls then printfn "let typeBuilder%d = typeBuilder%d.DefineNestedType(\"%s\",enum %d)" (abs <| hash res) (abs <| hash typB) name (LanguagePrimitives.EnumToValue attrs) res member typB.DefineMethodAndLog(name,attrs,cconv) = let methB = typB.DefineMethod(name,attrs,cconv) if logRefEmitCalls then printfn "let methodBuilder%d = typeBuilder%d.DefineMethod(\"%s\",enum %d,enum %d)" (abs <| hash methB) (abs <| hash typB) name (LanguagePrimitives.EnumToValue attrs) (LanguagePrimitives.EnumToValue cconv) methB member typB.DefineGenericParametersAndLog(gps) = if logRefEmitCalls then printfn "typeBuilder%d.DefineGenericParameters(%A)" (abs <| hash typB) gps typB.DefineGenericParameters(gps) member typB.DefineConstructorAndLog(attrs,cconv,parms) = let consB = typB.DefineConstructor(attrs,cconv,parms) if logRefEmitCalls then printfn "let constructorBuilder%d = typeBuilder%d.DefineConstructor(enum %d,%A,%A)" (abs <| hash consB) (abs <| hash typB) (LanguagePrimitives.EnumToValue attrs) cconv parms consB member typB.DefineFieldAndLog(nm,ty:System.Type,attrs) = if logRefEmitCalls then printfn "typeBuilder%d.DefineField(\"%s\",typeof<%s>,enum %d)" (abs <| hash typB) nm ty.FullName (LanguagePrimitives.EnumToValue attrs) typB.DefineField(nm,ty,attrs) member typB.DefinePropertyAndLog(nm,attrs,ty,args) = if logRefEmitCalls then printfn "typeBuilder%d.DefineProperty(\"%A\",enum %d,%A,%A)" (abs <| hash typB) nm (LanguagePrimitives.EnumToValue attrs) ty args typB.DefineProperty(nm,attrs,ty,args) member typB.DefineEventAndLog(nm,attrs,ty) = if logRefEmitCalls then printfn "typeBuilder%d.DefineEvent(\"%A\",enum %d,%A)" (abs <| hash typB) nm (LanguagePrimitives.EnumToValue attrs) ty typB.DefineEvent(nm,attrs,ty) member typB.SetParentAndLog(ty:System.Type) = if logRefEmitCalls then printfn "typeBuilder%d.SetParent(typeof<%s>)" (abs <| hash typB) ty.FullName typB.SetParent(ty) member typB.AddInterfaceImplementationAndLog(ty) = if logRefEmitCalls then printfn "typeBuilder%d.AddInterfaceImplementation(%A)" (abs <| hash typB) ty typB.AddInterfaceImplementation(ty) member typB.InvokeMemberAndLog(nm,flags,args) = if logRefEmitCalls then printfn "typeBuilder%d.InvokeMember(\"%s\",enum %d,null,null,%A,Globalization.CultureInfo.InvariantCulture)" (abs <| hash typB) nm (LanguagePrimitives.EnumToValue flags) args #if SILVERLIGHT typB.InvokeMember(nm,flags,null,null,args) #else typB.InvokeMember(nm,flags,null,null,args,Globalization.CultureInfo.InvariantCulture) #endif member typB.SetCustomAttributeAndLog(cinfo,bytes) = if logRefEmitCalls then printfn "typeBuilder%d.SetCustomAttribute(%A, %A)" (abs <| hash typB) cinfo bytes wrapCustomAttr typB.SetCustomAttribute (cinfo,bytes) type System.Reflection.Emit.OpCode with member opcode.RefEmitName = (string (System.Char.ToUpper(opcode.Name.[0])) + opcode.Name.[1..]).Replace(".","_").Replace("_i4","_I4") type System.Reflection.Emit.ILGenerator with member ilG.DeclareLocalAndLog(ty:System.Type,isPinned) = if logRefEmitCalls then printfn "ilg%d.DeclareLocal(typeof<%s>,%b)" (abs <| hash ilG) ty.FullName isPinned ilG.DeclareLocal(ty,isPinned) member ilG.MarkLabelAndLog(lab) = if logRefEmitCalls then printfn "ilg%d.MarkLabel(label%d_%d)" (abs <| hash ilG) (abs <| hash ilG) (abs <| hash lab) ilG.MarkLabel(lab) member ilG.MarkSequencePointAndLog(symDoc, l1, c1, l2, c2) = if logRefEmitCalls then printfn "ilg%d.MarkSequencePoint(docWriter%d, %A, %A, %A, %A)" (abs <| hash ilG) (abs <| hash symDoc) l1 c1 l2 c2 ilG.MarkSequencePoint(symDoc, l1, c1, l2, c2) member ilG.BeginExceptionBlockAndLog() = if logRefEmitCalls then printfn "ilg%d.BeginExceptionBlock()" (abs <| hash ilG) ilG.BeginExceptionBlock() member ilG.EndExceptionBlockAndLog() = if logRefEmitCalls then printfn "ilg%d.EndExceptionBlock()" (abs <| hash ilG) ilG.EndExceptionBlock() member ilG.BeginFinallyBlockAndLog() = if logRefEmitCalls then printfn "ilg%d.BeginFinallyBlock()" (abs <| hash ilG) ilG.BeginFinallyBlock() member ilG.BeginCatchBlockAndLog(ty) = if logRefEmitCalls then printfn "ilg%d.BeginCatchBlock(%A)" (abs <| hash ilG) ty ilG.BeginCatchBlock(ty) member ilG.BeginExceptFilterBlockAndLog() = if logRefEmitCalls then printfn "ilg%d.BeginExceptFilterBlock()" (abs <| hash ilG) ilG.BeginExceptFilterBlock() member ilG.BeginFaultBlockAndLog() = if logRefEmitCalls then printfn "ilg%d.BeginFaultBlock()" (abs <| hash ilG) ilG.BeginFaultBlock() member ilG.DefineLabelAndLog() = let lab = ilG.DefineLabel() if logRefEmitCalls then printfn "let label%d_%d = ilg%d.DefineLabel()" (abs <| hash ilG) (abs <| hash lab) (abs <| hash ilG) lab member x.EmitAndLog (op:OpCode) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s)" (abs <| hash x) op.RefEmitName x.Emit(op) member x.EmitAndLog (op:OpCode,v:Label) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s,label%d_%d)" (abs <| hash x) op.RefEmitName (abs <| hash x) (abs <| hash v); x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:int16) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s, int16 %d)" (abs <| hash x) op.RefEmitName v; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:int32) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s, %d)" (abs <| hash x) op.RefEmitName v; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:MethodInfo) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s, meth_%s)" (abs <| hash x) op.RefEmitName v.Name; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:string) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s,\"%s\")" (abs <| hash x) op.RefEmitName v; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:Type) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s, typeof<%s>)" (abs <| hash x) op.RefEmitName v.FullName; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:FieldInfo) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s, field_%s)" (abs <| hash x) op.RefEmitName v.Name; x.Emit(op,v) member x.EmitAndLog (op:OpCode,v:ConstructorInfo) = if logRefEmitCalls then printfn "ilg%d.Emit(OpCodes.%s,constructor_%s)" (abs <| hash x) op.RefEmitName v.DeclaringType.Name; x.Emit(op,v) //---------------------------------------------------------------------------- // misc //---------------------------------------------------------------------------- let inline flagsIf b x = if b then x else enum 0 module Zmap = let force x m str = match Zmap.tryFind x m with Some y -> y | None -> failwithf "Zmap.force: %s: x = %+A" str x let equalTypes (s:Type) (t:Type) = s.Equals(t) let equalTypeLists ss tt = List.lengthsEqAndForall2 equalTypes ss tt let getGenericArgumentsOfType (typT : Type) = if typT .IsGenericType then typT .GetGenericArguments() else [| |] let getGenericArgumentsOfMethod (methI : MethodInfo) = if methI.IsGenericMethod then methI.GetGenericArguments() else [| |] let getTypeConstructor (ty: Type) = if ty.IsGenericType then ty.GetGenericTypeDefinition() else ty //---------------------------------------------------------------------------- // convAssemblyRef //---------------------------------------------------------------------------- let convAssemblyRef (aref:ILAssemblyRef) = let asmName = new System.Reflection.AssemblyName() asmName.Name <- aref.Name; (match aref.PublicKey with | None -> () | Some (PublicKey bytes) -> asmName.SetPublicKey(bytes) | Some (PublicKeyToken bytes) -> asmName.SetPublicKeyToken(bytes)); let setVersion (major,minor,build,rev) = asmName.Version <- System.Version (int32 major,int32 minor,int32 build, int32 rev) Option.iter setVersion aref.Version; // asmName.ProcessorArchitecture <- System.Reflection.ProcessorArchitecture.MSIL; //Option.iter (fun name -> asmName.CultureInfo <- System.Globalization.CultureInfo.CreateSpecificCulture(name)) aref.Locale; asmName.CultureInfo <- System.Globalization.CultureInfo.InvariantCulture; asmName /// The global environment type cenv = { ilg: ILGlobals; generatePdb: bool; resolvePath: (ILAssemblyRef -> Choice option) } /// Convert an Abstract IL type reference to Reflection.Emit System.Type value // REVIEW: This ought to be an adequate substitute for this whole function, but it needs // to be thoroughly tested. // Type.GetType(tref.QualifiedName) // [] ,name -> name // [ns] ,name -> ns+name // [ns;typeA;typeB],name -> ns+typeA+typeB+name let getTRefType (cenv:cenv) (tref:ILTypeRef) = // If an inner nested type's name contains a space, the proper encoding is "\+" on both sides - otherwise, // we use "+" let rec collectPrefixParts (l : string list) (acc : string list) = match l with | h1 :: (h2 :: _ as tl) -> collectPrefixParts tl (List.append acc [ yield h1 if h1.Contains(" ") || h2.Contains(" ") then yield "\\+" else yield "+"]) | h :: [] -> List.append acc [h] | _ -> acc let prefix = collectPrefixParts tref.Enclosing [] |> List.fold (fun (s1 : string) (s2 : string) -> s1 + s2) "" let qualifiedName = prefix + (if prefix <> "" then (if tref.Name.Contains(" ") then "\\+" else "+") else "") + tref.Name // e.g. Name.Space.Class+NestedClass match tref.Scope with | ILScopeRef.Assembly asmref -> let assembly = match cenv.resolvePath asmref with #if SILVERLIGHT #else | Some (Choice1Of2 path) -> FileSystem.AssemblyLoadFrom(path) #endif | Some (Choice2Of2 assembly) -> assembly | None -> let asmName = convAssemblyRef asmref FileSystem.AssemblyLoad(asmName) let typT = assembly.GetType(qualifiedName) typT |> nonNull "GetTRefType" | ILScopeRef.Module _ | ILScopeRef.Local _ -> let typT = Type.GetType(qualifiedName,true) typT |> nonNull "GetTRefType" /// The (local) emitter env (state). Some of these fields are effectively global accumulators /// and could be placed as hash tables in the global environment. [] type emEnv = { emTypMap : Zmap ; emConsMap : Zmap; emMethMap : Zmap; emFieldMap : Zmap; emPropMap : Zmap; emLocals : LocalBuilder[]; emLabels : Zmap; emTyvars : Type[] list; // stack emEntryPts : (TypeBuilder * string) list } let orderILTypeRef = ComparisonIdentity.Structural let orderILMethodRef = ComparisonIdentity.Structural let orderILFieldRef = ComparisonIdentity.Structural let orderILPropertyRef = ComparisonIdentity.Structural let emEnv0 = { emTypMap = Zmap.empty orderILTypeRef; emConsMap = Zmap.empty orderILMethodRef; emMethMap = Zmap.empty orderILMethodRef; emFieldMap = Zmap.empty orderILFieldRef; emPropMap = Zmap.empty orderILPropertyRef; emLocals = [| |]; emLabels = Zmap.empty codeLabelOrder; emTyvars = []; emEntryPts = []; } let envBindTypeRef emEnv (tref:ILTypeRef) (typT,typB,typeDef)= match typT with | null -> failwithf "binding null type in envBindTypeRef: %s\n" tref.Name; | _ -> {emEnv with emTypMap = Zmap.add tref (typT,typB,typeDef,None) emEnv.emTypMap} let envUpdateCreatedTypeRef emEnv (tref:ILTypeRef) = // The tref's TypeBuilder has been created, so we have a Type proper. // Update the tables to include this created type (the typT held prior to this is (i think) actually (TypeBuilder :> Type). // The (TypeBuilder :> Type) does not implement all the methods that a Type proper does. let typT,typB,typeDef,_createdTypOpt = Zmap.force tref emEnv.emTypMap "envGetTypeDef: failed" if typB.IsCreated() then let typ = typB.CreateTypeAndLog() #if SILVERLIGHT #else // Bug DevDev2 40395: Mono 2.6 and 2.8 has a bug where executing code that includes an array type // match "match x with :? C[] -> ..." before the full loading of an object of type // causes a failure when C is later loaded. One workaround for this is to attempt to do a fake allocation // of objects. We use System.Runtime.Serialization.FormatterServices.GetUninitializedObject to do // the fake allocation - this creates an "empty" object, even if the object doesn't have // a constructor. It is not usable in partial trust code. if runningOnMono && typ.IsClass && not typ.IsAbstract && not typ.IsGenericType && not typ.IsGenericTypeDefinition then try System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typ) |> ignore with e -> () #endif {emEnv with emTypMap = Zmap.add tref (typT,typB,typeDef,Some typ) emEnv.emTypMap} else #if DEBUG printf "envUpdateCreatedTypeRef: expected type to be created\n"; #endif emEnv let envGetTypT cenv emEnv preferCreated (tref:ILTypeRef) = match Zmap.tryFind tref emEnv.emTypMap with | Some (_typT,_typB,_typeDef,Some createdTyp) when preferCreated -> createdTyp |> nonNull "envGetTypT: null create type table?" | Some (typT,_typB,_typeDef,_) -> typT |> nonNull "envGetTypT: null type table?" | None -> getTRefType cenv tref let envBindConsRef emEnv (mref:ILMethodRef) consB = {emEnv with emConsMap = Zmap.add mref consB emEnv.emConsMap} let envGetConsB emEnv (mref:ILMethodRef) = Zmap.force mref emEnv.emConsMap "envGetConsB: failed" let envBindMethodRef emEnv (mref:ILMethodRef) methB = {emEnv with emMethMap = Zmap.add mref methB emEnv.emMethMap} let envGetMethB emEnv (mref:ILMethodRef) = Zmap.force mref emEnv.emMethMap "envGetMethB: failed" let envBindFieldRef emEnv fref fieldB = {emEnv with emFieldMap = Zmap.add fref fieldB emEnv.emFieldMap} let envGetFieldB emEnv fref = Zmap.force fref emEnv.emFieldMap "- envGetMethB: failed" let envBindPropRef emEnv (pref:ILPropertyRef) propB = {emEnv with emPropMap = Zmap.add pref propB emEnv.emPropMap} let envGetPropB emEnv pref = Zmap.force pref emEnv.emPropMap "- envGetPropB: failed" let envGetTypB emEnv (tref:ILTypeRef) = Zmap.force tref emEnv.emTypMap "envGetTypB: failed" |> (fun (_typT,typB,_typeDef,_createdTypOpt) -> typB) let envGetTypeDef emEnv (tref:ILTypeRef) = Zmap.force tref emEnv.emTypMap "envGetTypeDef: failed" |> (fun (_typT,_typB,typeDef,_createdTypOpt) -> typeDef) let envSetLocals emEnv locs = assert (emEnv.emLocals.Length = 0); // check "locals" is not yet set (scopes once only) {emEnv with emLocals = locs} let envGetLocal emEnv i = emEnv.emLocals.[i] // implicit bounds checking let envSetLabel emEnv name lab = assert (not (Zmap.mem name emEnv.emLabels)); {emEnv with emLabels = Zmap.add name lab emEnv.emLabels} let envGetLabel emEnv name = Zmap.find name emEnv.emLabels let envPushTyvars emEnv typs = {emEnv with emTyvars = typs :: emEnv.emTyvars} let envPopTyvars emEnv = {emEnv with emTyvars = List.tail emEnv.emTyvars} let envGetTyvar emEnv u16 = match emEnv.emTyvars with | [] -> failwith "envGetTyvar: not scope of type vars" | tvs::_ -> let i = int32 u16 if i<0 || i>= Array.length tvs then failwith (sprintf "want tyvar #%d, but only had %d tyvars" i (Array.length tvs)) else tvs.[i] let isEmittedTypeRef emEnv tref = Zmap.mem tref emEnv.emTypMap let envAddEntryPt emEnv mref = {emEnv with emEntryPts = mref::emEnv.emEntryPts} let envPopEntryPts emEnv = {emEnv with emEntryPts = []},emEnv.emEntryPts //---------------------------------------------------------------------------- // convCallConv //---------------------------------------------------------------------------- let convCallConv (Callconv (hasThis,basic)) = let ccA = match hasThis with ILThisConvention.Static -> CallingConventions.Standard | ILThisConvention.InstanceExplicit -> CallingConventions.ExplicitThis | ILThisConvention.Instance -> CallingConventions.HasThis let ccB = match basic with ILArgConvention.Default -> enum 0 | ILArgConvention.CDecl -> enum 0 | ILArgConvention.StdCall -> enum 0 | ILArgConvention.ThisCall -> enum 0 // XXX: check all these | ILArgConvention.FastCall -> enum 0 | ILArgConvention.VarArg -> CallingConventions.VarArgs ccA ||| ccB //---------------------------------------------------------------------------- // convType //---------------------------------------------------------------------------- let rec convTypeSpec cenv emEnv preferCreated (tspec:ILTypeSpec) = let typT = envGetTypT cenv emEnv preferCreated tspec.TypeRef let tyargs = ILList.map (convTypeAux cenv emEnv preferCreated) tspec.GenericArgs match ILList.isEmpty tyargs,typT.IsGenericType with | _ ,true -> typT.MakeGenericType(ILList.toArray tyargs) |> nonNull "convTypeSpec: generic" | true,false -> typT |> nonNull "convTypeSpec: non generic" | _ ,false -> failwithf "- convTypeSpec: non-generic type '%O' has type instance of length %d?" typT tyargs.Length and convTypeAux cenv emEnv preferCreated typ = match typ with | ILType.Void -> Type.GetType("System.Void",true) | ILType.Array (shape,eltType) -> let baseT = convTypeAux cenv emEnv preferCreated eltType |> nonNull "convType: array base" let nDims = shape.Rank // MakeArrayType() returns "eltType[]" // MakeArrayType(1) returns "eltType[*]" // MakeArrayType(2) returns "eltType[,]" // MakeArrayType(3) returns "eltType[,,]" // All non-equal. if nDims=1 then baseT.MakeArrayType() else baseT.MakeArrayType shape.Rank | ILType.Value tspec -> convTypeSpec cenv emEnv preferCreated tspec |> nonNull "convType: value" | ILType.Boxed tspec -> convTypeSpec cenv emEnv preferCreated tspec |> nonNull "convType: boxed" | ILType.Ptr eltType -> let baseT = convTypeAux cenv emEnv preferCreated eltType |> nonNull "convType: ptr eltType" baseT.MakePointerType() |> nonNull "convType: ptr" | ILType.Byref eltType -> let baseT = convTypeAux cenv emEnv preferCreated eltType |> nonNull "convType: byref eltType" baseT.MakeByRefType() |> nonNull "convType: byref" | ILType.TypeVar tv -> envGetTyvar emEnv tv |> nonNull "convType: tyvar" // XXX: REVIEW: complete the following cases. | ILType.FunctionPointer _callsig -> failwith "convType: fptr" | ILType.Modified _ -> failwith "convType: modified" // [Bug 4063]. // The convType functions convert AbsIL types into concrete Type values. // The emitted types have (TypeBuilder:>Type) and (TypeBuilderInstantiation:>Type). // These can be used to construct the concrete Type for a given AbsIL type. // This is the convType function. // Certain functions here, e.g. convMethodRef, convConstructorSpec assume they get the "Builders" for emitted types. // // The "LookupType" function (see end of file) provides AbsIL to Type lookup (post emit). // The external use (reflection and pretty printing) requires the created Type (rather than the builder). // convCreatedType ensures created types are used where possible. // Note: typeBuilder.CreateType() freezes the type and makes a proper Type for the collected information. //------ // REVIEW: "convType becomes convCreatedType", the functions could be combined. // If convCreatedType replaced convType functions like convMethodRef, convConstructorSpec, ... (and more?) // will need to be fixed for emitted types to handle both TypeBuilder and later Type proper. /// Uses TypeBuilder/TypeBuilderInstantiation for emitted types let convType cenv emEnv typ = convTypeAux cenv emEnv false typ let convTypes cenv emEnv (typs:ILTypes) = ILList.map (convType cenv emEnv) typs let convTypesToArray cenv emEnv (typs:ILTypes) = convTypes cenv emEnv typs |> ILList.toArray /// Uses the .CreateType() for emitted type (if available) let convCreatedType cenv emEnv typ = convTypeAux cenv emEnv true typ //---------------------------------------------------------------------------- // convFieldInit //---------------------------------------------------------------------------- let convFieldInit x = match x with | ILFieldInit.String s -> box s | ILFieldInit.Bool bool -> box bool | ILFieldInit.Char u16 -> box (char (int u16)) | ILFieldInit.Int8 i8 -> box i8 | ILFieldInit.Int16 i16 -> box i16 | ILFieldInit.Int32 i32 -> box i32 | ILFieldInit.Int64 i64 -> box i64 | ILFieldInit.UInt8 u8 -> box u8 | ILFieldInit.UInt16 u16 -> box u16 | ILFieldInit.UInt32 u32 -> box u32 | ILFieldInit.UInt64 u64 -> box u64 | ILFieldInit.Single ieee32 -> box ieee32 | ILFieldInit.Double ieee64 -> box ieee64 | ILFieldInit.Null -> (null :> Object) #if SILVERLIGHT //---------------------------------------------------------------------------- // convAttribElem //---------------------------------------------------------------------------- let rec convAttribElem cenv emEnv = function | ILAttribElem.String (Some x) -> box x | ILAttribElem.String None -> null | ILAttribElem.Bool x -> box x | ILAttribElem.Char x -> box x | ILAttribElem.SByte x -> box x | ILAttribElem.Int16 x -> box x | ILAttribElem.Int32 x -> box x | ILAttribElem.Int64 x -> box x | ILAttribElem.Byte x -> box x | ILAttribElem.UInt16 x -> box x | ILAttribElem.UInt32 x -> box x | ILAttribElem.UInt64 x -> box x | ILAttribElem.Single x -> box x | ILAttribElem.Double x -> box x | ILAttribElem.Null -> null | ILAttribElem.Type (Some t) -> box <| convCreatedType cenv emEnv t | ILAttribElem.Type None -> null | ILAttribElem.TypeRef (Some t) -> box <| envGetTypT cenv emEnv true t | ILAttribElem.TypeRef None -> null | ILAttribElem.Array (_, a) -> box [| for i in a -> convAttribElem cenv emEnv i |] #endif //---------------------------------------------------------------------------- // Some types require hard work... //---------------------------------------------------------------------------- // This is gross. TypeBuilderInstantiation should really be a public type, since we // have to use alternative means for various Method/Field/Constructor lookups. However since // it isn't we resort to this technique... let TypeBuilderInstantiationT = let ty = if runningOnMono then Type.GetType("System.Reflection.MonoGenericClass") else Type.GetType("System.Reflection.Emit.TypeBuilderInstantiation") assert (not (isNull ty)) ty let typeIsNotQueryable (typ : Type) = (typ :? TypeBuilder) || ((typ.GetType()).Equals(TypeBuilderInstantiationT)) //---------------------------------------------------------------------------- // convFieldSpec //---------------------------------------------------------------------------- let queryableTypeGetField _emEnv (parentT:Type) (fref: ILFieldRef) = parentT.GetField(fref.Name, BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.Instance ||| BindingFlags.Static ) |> nonNull "queryableTypeGetField" let nonQueryableTypeGetField (parentTI:Type) (fieldInfo : FieldInfo) : FieldInfo = if parentTI.IsGenericType then TypeBuilder.GetField(parentTI,fieldInfo) else fieldInfo let convFieldSpec cenv emEnv fspec = let fref = fspec.FieldRef let tref = fref.EnclosingTypeRef let parentTI = convType cenv emEnv fspec.EnclosingType if isEmittedTypeRef emEnv tref then // NOTE: if "convType becomes convCreatedType", then handle queryable types here too. [bug 4063] (necessary? what repro?) let fieldB = envGetFieldB emEnv fref nonQueryableTypeGetField parentTI fieldB else // Prior type. if typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI let fieldInfo = queryableTypeGetField emEnv parentT fref nonQueryableTypeGetField parentTI fieldInfo else queryableTypeGetField emEnv parentTI fspec.FieldRef //---------------------------------------------------------------------------- // convMethodRef //---------------------------------------------------------------------------- let queryableTypeGetMethodBySearch cenv emEnv parentT (mref:ILMethodRef) = assert(not (typeIsNotQueryable(parentT))); let cconv = (if mref.CallingConv.IsStatic then BindingFlags.Static else BindingFlags.Instance) let methInfos = parentT.GetMethods(cconv ||| BindingFlags.Public ||| BindingFlags.NonPublic) |> Array.toList (* First, filter on name, if unique, then binding "done" *) let tyargTs = getGenericArgumentsOfType parentT let methInfos = methInfos |> List.filter (fun methInfo -> methInfo.Name = mref.Name) match methInfos with | [methInfo] -> methInfo | _ -> (* Second, type match. Note type erased (non-generic) F# code would not type match but they have unique names *) let select (methInfo:MethodInfo) = (* mref implied Types *) let mtyargTIs = getGenericArgumentsOfMethod methInfo if mtyargTIs.Length <> mref.GenericArity then false (* method generic arity mismatch *) else let argTs,resT = let emEnv = envPushTyvars emEnv (Array.append tyargTs mtyargTIs) let argTs = convTypes cenv emEnv mref.ArgTypes let resT = convType cenv emEnv mref.ReturnType argTs,resT (* methInfo implied Types *) let haveArgTs = methInfo.GetParameters() |> Array.toList |> List.map (fun param -> param.ParameterType) let haveResT = methInfo.ReturnType (* check for match *) if argTs.Length <> haveArgTs.Length then false (* method argument length mismatch *) else let res = equalTypes resT haveResT && equalTypeLists (ILList.toList argTs) haveArgTs res match List.tryFind select methInfos with | None -> failwith "convMethodRef: could not bind to method" | Some methInfo -> methInfo (* return MethodInfo for (generic) type's (generic) method *) |> nonNull "convMethodRef" let queryableTypeGetMethod cenv emEnv parentT (mref:ILMethodRef) = assert(not (typeIsNotQueryable(parentT))); if mref.GenericArity = 0 then let tyargTs = getGenericArgumentsOfType parentT let argTs,resT = let emEnv = envPushTyvars emEnv tyargTs let argTs = convTypesToArray cenv emEnv mref.ArgTypes let resT = convType cenv emEnv mref.ReturnType argTs,resT let stat = mref.CallingConv.IsStatic let cconv = (if stat then BindingFlags.Static else BindingFlags.Instance) let methInfo = try parentT.GetMethod(mref.Name,cconv ||| BindingFlags.Public ||| BindingFlags.NonPublic, null, argTs, (null:ParameterModifier[])) // This can fail if there is an ambiguity w.r.t. return type with _ -> null if (isNonNull methInfo && equalTypes resT methInfo.ReturnType) then methInfo else queryableTypeGetMethodBySearch cenv emEnv parentT mref else queryableTypeGetMethodBySearch cenv emEnv parentT mref let nonQueryableTypeGetMethod (parentTI:Type) (methInfo : MethodInfo) : MethodInfo = if (parentTI.IsGenericType && not (equalTypes parentTI (getTypeConstructor parentTI))) then TypeBuilder.GetMethod(parentTI,methInfo ) else methInfo let convMethodRef cenv emEnv (parentTI:Type) (mref:ILMethodRef) = let parent = mref.EnclosingTypeRef if isEmittedTypeRef emEnv parent then // NOTE: if "convType becomes convCreatedType", then handle queryable types here too. [bug 4063] // Emitted type, can get fully generic MethodBuilder from env. let methB = envGetMethB emEnv mref nonQueryableTypeGetMethod parentTI methB |> nonNull "convMethodRef (emitted)" else // Prior type. if typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI let methInfo = queryableTypeGetMethod cenv emEnv parentT mref nonQueryableTypeGetMethod parentTI methInfo else queryableTypeGetMethod cenv emEnv parentTI mref //---------------------------------------------------------------------------- // convMethodSpec //---------------------------------------------------------------------------- let convMethodSpec cenv emEnv (mspec:ILMethodSpec) = let typT = convType cenv emEnv mspec.EnclosingType (* (instanced) parent Type *) let methInfo = convMethodRef cenv emEnv typT mspec.MethodRef (* (generic) method of (generic) parent *) let methInfo = if mspec.GenericArgs.Length = 0 then methInfo // non generic else let minstTs = convTypesToArray cenv emEnv mspec.GenericArgs let methInfo = methInfo.MakeGenericMethod minstTs // instantiate method methInfo methInfo |> nonNull "convMethodSpec" //---------------------------------------------------------------------------- // - QueryableTypeGetConstructors: get a constructor on a non-TypeBuilder type //---------------------------------------------------------------------------- let queryableTypeGetConstructor cenv emEnv (parentT:Type) (mref:ILMethodRef) = let tyargTs = getGenericArgumentsOfType parentT let reqArgTs = let emEnv = envPushTyvars emEnv tyargTs convTypesToArray cenv emEnv mref.ArgTypes parentT.GetConstructor(BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.Instance,null, reqArgTs,null) let nonQueryableTypeGetConstructor (parentTI:Type) (consInfo : ConstructorInfo) : ConstructorInfo = if parentTI.IsGenericType then TypeBuilder.GetConstructor(parentTI,consInfo) else consInfo //---------------------------------------------------------------------------- // convConstructorSpec (like convMethodSpec) //---------------------------------------------------------------------------- let convConstructorSpec cenv emEnv (mspec:ILMethodSpec) = let mref = mspec.MethodRef let parentTI = convType cenv emEnv mspec.EnclosingType if isEmittedTypeRef emEnv mref.EnclosingTypeRef then // NOTE: if "convType becomes convCreatedType", then handle queryable types here too. [bug 4063] let consB = envGetConsB emEnv mref nonQueryableTypeGetConstructor parentTI consB |> nonNull "convConstructorSpec: (emitted)" else // Prior type. if typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI let ctorG = queryableTypeGetConstructor cenv emEnv parentT mref nonQueryableTypeGetConstructor parentTI ctorG else queryableTypeGetConstructor cenv emEnv parentTI mref //---------------------------------------------------------------------------- // emitLabelMark, defineLabel //---------------------------------------------------------------------------- let emitLabelMark emEnv (ilG:ILGenerator) (label:ILCodeLabel) = let lab = envGetLabel emEnv label ilG.MarkLabelAndLog(lab) let defineLabel (ilG:ILGenerator) emEnv (label:ILCodeLabel) = let lab = ilG.DefineLabelAndLog() envSetLabel emEnv label lab //---------------------------------------------------------------------------- // emitInstr cenv - I_arith //---------------------------------------------------------------------------- ///Emit comparison instructions let emitInstrCompare emEnv (ilG:ILGenerator) comp targ = match comp with | BI_beq -> ilG.EmitAndLog(OpCodes.Beq,envGetLabel emEnv targ) | BI_bge -> ilG.EmitAndLog(OpCodes.Bge ,envGetLabel emEnv targ) | BI_bge_un -> ilG.EmitAndLog(OpCodes.Bge_Un ,envGetLabel emEnv targ) | BI_bgt -> ilG.EmitAndLog(OpCodes.Bgt ,envGetLabel emEnv targ) | BI_bgt_un -> ilG.EmitAndLog(OpCodes.Bgt_Un ,envGetLabel emEnv targ) | BI_ble -> ilG.EmitAndLog(OpCodes.Ble ,envGetLabel emEnv targ) | BI_ble_un -> ilG.EmitAndLog(OpCodes.Ble_Un ,envGetLabel emEnv targ) | BI_blt -> ilG.EmitAndLog(OpCodes.Blt ,envGetLabel emEnv targ) | BI_blt_un -> ilG.EmitAndLog(OpCodes.Blt_Un ,envGetLabel emEnv targ) | BI_bne_un -> ilG.EmitAndLog(OpCodes.Bne_Un ,envGetLabel emEnv targ) | BI_brfalse -> ilG.EmitAndLog(OpCodes.Brfalse,envGetLabel emEnv targ) | BI_brtrue -> ilG.EmitAndLog(OpCodes.Brtrue ,envGetLabel emEnv targ) /// Emit the volatile. prefix let emitInstrVolatile (ilG:ILGenerator) = function | Volatile -> ilG.EmitAndLog(OpCodes.Volatile) | Nonvolatile -> () /// Emit the align. prefix let emitInstrAlign (ilG:ILGenerator) = function | Aligned -> () | Unaligned1 -> ilG.Emit(OpCodes.Unaligned,1L) // note: doc says use "long" overload! | Unaligned2 -> ilG.Emit(OpCodes.Unaligned,2L) | Unaligned4 -> ilG.Emit(OpCodes.Unaligned,3L) /// Emit the tail. prefix if necessary let emitInstrTail (ilG:ILGenerator) tail emitTheCall = match tail with | Tailcall -> ilG.EmitAndLog(OpCodes.Tailcall); emitTheCall(); ilG.EmitAndLog(OpCodes.Ret) | Normalcall -> emitTheCall() let emitInstrNewobj cenv emEnv (ilG:ILGenerator) mspec varargs = match varargs with | None -> ilG.EmitAndLog(OpCodes.Newobj,convConstructorSpec cenv emEnv mspec) | Some _vartyps -> failwith "emit: pending new varargs" // XXX - gap let emitSilverlightCheck (ilG:ILGenerator) = #if SILVERLIGHT if Microsoft.FSharp.Silverlight.EmitInterruptChecks then let methWL = typeof.GetMethod("CheckInterrupt", BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic, null, [||], null) ilG.EmitCall(OpCodes.Call, methWL, [||]) #else ignore ilG () #endif let emitInstrCall cenv emEnv (ilG:ILGenerator) opCall tail (mspec:ILMethodSpec) varargs = emitInstrTail ilG tail (fun () -> if mspec.MethodRef.Name = ".ctor" || mspec.MethodRef.Name = ".cctor" then let cinfo = convConstructorSpec cenv emEnv mspec match varargs with | None -> ilG.EmitAndLog (opCall,cinfo) | Some _vartyps -> failwith "emitInstrCall: .ctor and varargs" else let minfo = convMethodSpec cenv emEnv mspec #if SILVERLIGHT let fullName = minfo.DeclaringType.FullName + "." + minfo.Name let minfo = if fullName = "System.Console.WriteLine" || fullName = "System.Console.Write" then let args = minfo.GetParameters() |> Array.map (fun x -> x.ParameterType) typeof.GetMethod(minfo.Name, BindingFlags.Static ||| BindingFlags.Public ||| BindingFlags.NonPublic, null, args, null) else minfo #endif match varargs with | None -> ilG.EmitAndLog(opCall,minfo) | Some vartyps -> ilG.EmitCall (opCall,minfo,convTypesToArray cenv emEnv vartyps) ) let getGenericMethodDefinition q (ty:Type) = let gminfo = match q with | Quotations.Patterns.Call(_,minfo,_) -> minfo.GetGenericMethodDefinition() | _ -> failwith "unexpected failure decoding quotation at ilreflect startup" gminfo.MakeGenericMethod [| ty |] let getArrayMethInfo n ty = match n with | 2 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.GetArray2D null 0 0 @@> ty | 3 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.GetArray3D null 0 0 0 @@> ty | 4 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.GetArray4D null 0 0 0 0 @@> ty | _ -> invalidArg "n" "not expecting array dimension > 4" let setArrayMethInfo n ty = match n with | 2 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.SetArray2D null 0 0 0 @@> ty | 3 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.SetArray3D null 0 0 0 0 @@> ty | 4 -> getGenericMethodDefinition <@@ LanguagePrimitives.IntrinsicFunctions.SetArray4D null 0 0 0 0 0 @@> ty | _ -> invalidArg "n" "not expecting array dimension > 4" //---------------------------------------------------------------------------- // emitInstr cenv //---------------------------------------------------------------------------- let rec emitInstr cenv (modB : ModuleBuilder) emEnv (ilG:ILGenerator) instr = match instr with | AI_add -> ilG.EmitAndLog(OpCodes.Add) | AI_add_ovf -> ilG.EmitAndLog(OpCodes.Add_Ovf) | AI_add_ovf_un -> ilG.EmitAndLog(OpCodes.Add_Ovf_Un) | AI_and -> ilG.EmitAndLog(OpCodes.And) | AI_div -> ilG.EmitAndLog(OpCodes.Div) | AI_div_un -> ilG.EmitAndLog(OpCodes.Div_Un) | AI_ceq -> ilG.EmitAndLog(OpCodes.Ceq) | AI_cgt -> ilG.EmitAndLog(OpCodes.Cgt) | AI_cgt_un -> ilG.EmitAndLog(OpCodes.Cgt_Un) | AI_clt -> ilG.EmitAndLog(OpCodes.Clt) | AI_clt_un -> ilG.EmitAndLog(OpCodes.Clt_Un) (* conversion *) | AI_conv dt -> (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Conv_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Conv_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Conv_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Conv_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Conv_I8) | DT_U -> ilG.EmitAndLog(OpCodes.Conv_U) | DT_U1 -> ilG.EmitAndLog(OpCodes.Conv_U1) | DT_U2 -> ilG.EmitAndLog(OpCodes.Conv_U2) | DT_U4 -> ilG.EmitAndLog(OpCodes.Conv_U4) | DT_U8 -> ilG.EmitAndLog(OpCodes.Conv_U8) | DT_R -> ilG.EmitAndLog(OpCodes.Conv_R_Un) | DT_R4 -> ilG.EmitAndLog(OpCodes.Conv_R4) | DT_R8 -> ilG.EmitAndLog(OpCodes.Conv_R8) | DT_REF -> failwith "AI_conv DT_REF?" // XXX - check ) (* conversion - ovf checks *) | AI_conv_ovf dt -> (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I8) | DT_U -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U) | DT_U1 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U1) | DT_U2 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U2) | DT_U4 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U4) | DT_U8 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U8) | DT_R -> failwith "AI_conv_ovf DT_R?" // XXX - check | DT_R4 -> failwith "AI_conv_ovf DT_R4?" // XXX - check | DT_R8 -> failwith "AI_conv_ovf DT_R8?" // XXX - check | DT_REF -> failwith "AI_conv_ovf DT_REF?" // XXX - check ) (* conversion - ovf checks and unsigned *) | AI_conv_ovf_un dt -> (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I_Un) | DT_I1 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I1_Un) | DT_I2 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I2_Un) | DT_I4 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I4_Un) | DT_I8 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_I8_Un) | DT_U -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U_Un) | DT_U1 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U1_Un) | DT_U2 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U2_Un) | DT_U4 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U4_Un) | DT_U8 -> ilG.EmitAndLog(OpCodes.Conv_Ovf_U8_Un) | DT_R -> failwith "AI_conv_ovf_un DT_R?" // XXX - check | DT_R4 -> failwith "AI_conv_ovf_un DT_R4?" // XXX - check | DT_R8 -> failwith "AI_conv_ovf_un DT_R8?" // XXX - check | DT_REF -> failwith "AI_conv_ovf_un DT_REF?" // XXX - check ) | AI_mul -> ilG.EmitAndLog(OpCodes.Mul) | AI_mul_ovf -> ilG.EmitAndLog(OpCodes.Mul_Ovf) | AI_mul_ovf_un -> ilG.EmitAndLog(OpCodes.Mul_Ovf_Un) | AI_rem -> ilG.EmitAndLog(OpCodes.Rem) | AI_rem_un -> ilG.EmitAndLog(OpCodes.Rem_Un) | AI_shl -> ilG.EmitAndLog(OpCodes.Shl) | AI_shr -> ilG.EmitAndLog(OpCodes.Shr) | AI_shr_un -> ilG.EmitAndLog(OpCodes.Shr_Un) | AI_sub -> ilG.EmitAndLog(OpCodes.Sub) | AI_sub_ovf -> ilG.EmitAndLog(OpCodes.Sub_Ovf) | AI_sub_ovf_un -> ilG.EmitAndLog(OpCodes.Sub_Ovf_Un) | AI_xor -> ilG.EmitAndLog(OpCodes.Xor) | AI_or -> ilG.EmitAndLog(OpCodes.Or) | AI_neg -> ilG.EmitAndLog(OpCodes.Neg) | AI_not -> ilG.EmitAndLog(OpCodes.Not) | AI_ldnull -> ilG.EmitAndLog(OpCodes.Ldnull) | AI_dup -> ilG.EmitAndLog(OpCodes.Dup) | AI_pop -> ilG.EmitAndLog(OpCodes.Pop) | AI_ckfinite -> ilG.EmitAndLog(OpCodes.Ckfinite) | AI_nop -> ilG.EmitAndLog(OpCodes.Nop) | AI_ldc (DT_I4,ILConst.I4 i32) -> ilG.EmitAndLog(OpCodes.Ldc_I4,i32) | AI_ldc (DT_I8,ILConst.I8 i64) -> ilG.Emit(OpCodes.Ldc_I8,i64) | AI_ldc (DT_R4,ILConst.R4 r32) -> ilG.Emit(OpCodes.Ldc_R4,r32) | AI_ldc (DT_R8,ILConst.R8 r64) -> ilG.Emit(OpCodes.Ldc_R8,r64) | AI_ldc (_ ,_ ) -> failwith "emitInstrI_arith (AI_ldc (typ,const)) iltyped" | I_ldarg u16 -> ilG.EmitAndLog(OpCodes.Ldarg ,int16 u16) | I_ldarga u16 -> ilG.EmitAndLog(OpCodes.Ldarga,int16 u16) | I_ldind (align,vol,dt) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Ldind_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Ldind_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Ldind_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Ldind_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Ldind_I8) | DT_R -> failwith "emitInstr cenv: ldind R" | DT_R4 -> ilG.EmitAndLog(OpCodes.Ldind_R4) | DT_R8 -> ilG.EmitAndLog(OpCodes.Ldind_R8) | DT_U -> failwith "emitInstr cenv: ldind U" | DT_U1 -> ilG.EmitAndLog(OpCodes.Ldind_U1) | DT_U2 -> ilG.EmitAndLog(OpCodes.Ldind_U2) | DT_U4 -> ilG.EmitAndLog(OpCodes.Ldind_U4) | DT_U8 -> failwith "emitInstr cenv: ldind U8" | DT_REF -> ilG.EmitAndLog(OpCodes.Ldind_Ref)) | I_ldloc u16 -> ilG.EmitAndLog(OpCodes.Ldloc ,int16 u16) | I_ldloca u16 -> ilG.EmitAndLog(OpCodes.Ldloca,int16 u16) | I_starg u16 -> ilG.EmitAndLog(OpCodes.Starg ,int16 u16) | I_stind (align,vol,dt) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Stind_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Stind_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Stind_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Stind_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Stind_I8) | DT_R -> failwith "emitInstr cenv: stind R" | DT_R4 -> ilG.EmitAndLog(OpCodes.Stind_R4) | DT_R8 -> ilG.EmitAndLog(OpCodes.Stind_R8) | DT_U -> ilG.EmitAndLog(OpCodes.Stind_I) // NOTE: unsigned -> int conversion | DT_U1 -> ilG.EmitAndLog(OpCodes.Stind_I1) // NOTE: follows code ilwrite.fs | DT_U2 -> ilG.EmitAndLog(OpCodes.Stind_I2) // NOTE: is it ok? | DT_U4 -> ilG.EmitAndLog(OpCodes.Stind_I4) // NOTE: it is generated by bytearray tests | DT_U8 -> ilG.EmitAndLog(OpCodes.Stind_I8) // NOTE: unsigned -> int conversion | DT_REF -> ilG.EmitAndLog(OpCodes.Stind_Ref)) | I_stloc u16 -> ilG.EmitAndLog(OpCodes.Stloc,int16 u16) | I_br _ -> () | I_jmp mspec -> ilG.EmitAndLog(OpCodes.Jmp,convMethodSpec cenv emEnv mspec) | I_brcmp (comp,targ,_) -> emitInstrCompare emEnv ilG comp targ | I_switch (labels,_) -> ilG.Emit(OpCodes.Switch,Array.ofList (List.map (envGetLabel emEnv) labels)); | I_ret -> ilG.EmitAndLog(OpCodes.Ret) | I_call (tail,mspec,varargs) -> emitSilverlightCheck ilG emitInstrCall cenv emEnv ilG OpCodes.Call tail mspec varargs | I_callvirt (tail,mspec,varargs) -> emitSilverlightCheck ilG emitInstrCall cenv emEnv ilG OpCodes.Callvirt tail mspec varargs | I_callconstraint (tail,typ,mspec,varargs) -> ilG.Emit(OpCodes.Constrained,convType cenv emEnv typ); emitInstrCall cenv emEnv ilG OpCodes.Callvirt tail mspec varargs #if SILVERLIGHT | I_calli (tail,_callsig,None) -> emitInstrTail ilG tail (fun () -> ()) | I_calli (tail,_callsig,Some _vartyps) -> emitInstrTail ilG tail (fun () -> ()) #else | I_calli (tail,callsig,None) -> emitInstrTail ilG tail (fun () -> ilG.EmitCalli(OpCodes.Calli, convCallConv callsig.CallingConv, convType cenv emEnv callsig.ReturnType, convTypesToArray cenv emEnv callsig.ArgTypes, Unchecked.defaultof)) | I_calli (tail,callsig,Some vartyps) -> emitInstrTail ilG tail (fun () -> ilG.EmitCalli(OpCodes.Calli, convCallConv callsig.CallingConv, convType cenv emEnv callsig.ReturnType, convTypesToArray cenv emEnv callsig.ArgTypes, convTypesToArray cenv emEnv vartyps)) #endif | I_ldftn mspec -> ilG.EmitAndLog(OpCodes.Ldftn,convMethodSpec cenv emEnv mspec) | I_newobj (mspec,varargs) -> emitInstrNewobj cenv emEnv ilG mspec varargs | I_throw -> ilG.EmitAndLog(OpCodes.Throw) | I_endfinally -> ilG.EmitAndLog(OpCodes.Endfinally) (* capitalization! *) | I_endfilter -> () (* ilG.EmitAndLog(OpCodes.Endfilter) *) | I_leave label -> ilG.EmitAndLog(OpCodes.Leave,envGetLabel emEnv label) | I_ldsfld (vol,fspec) -> emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Ldsfld ,convFieldSpec cenv emEnv fspec) | I_ldfld (align,vol,fspec) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Ldfld ,convFieldSpec cenv emEnv fspec) | I_ldsflda fspec -> ilG.EmitAndLog(OpCodes.Ldsflda,convFieldSpec cenv emEnv fspec) | I_ldflda fspec -> ilG.EmitAndLog(OpCodes.Ldflda ,convFieldSpec cenv emEnv fspec) | I_stsfld (vol,fspec) -> emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Stsfld ,convFieldSpec cenv emEnv fspec) | I_stfld (align,vol,fspec) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Stfld ,convFieldSpec cenv emEnv fspec) | I_ldstr s -> ilG.EmitAndLog(OpCodes.Ldstr ,s) | I_isinst typ -> ilG.EmitAndLog(OpCodes.Isinst ,convType cenv emEnv typ) | I_castclass typ -> ilG.EmitAndLog(OpCodes.Castclass,convType cenv emEnv typ) | I_ldtoken (ILToken.ILType typ) -> ilG.EmitAndLog(OpCodes.Ldtoken ,convType cenv emEnv typ) | I_ldtoken (ILToken.ILMethod mspec) -> ilG.EmitAndLog(OpCodes.Ldtoken ,convMethodSpec cenv emEnv mspec) | I_ldtoken (ILToken.ILField fspec) -> ilG.EmitAndLog(OpCodes.Ldtoken ,convFieldSpec cenv emEnv fspec) | I_ldvirtftn mspec -> ilG.EmitAndLog(OpCodes.Ldvirtftn,convMethodSpec cenv emEnv mspec) (* Value type instructions *) | I_cpobj typ -> ilG.EmitAndLog(OpCodes.Cpobj ,convType cenv emEnv typ) | I_initobj typ -> ilG.EmitAndLog(OpCodes.Initobj ,convType cenv emEnv typ) | I_ldobj (align,vol,typ) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Ldobj ,convType cenv emEnv typ) | I_stobj (align,vol,typ) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Stobj ,convType cenv emEnv typ) | I_box typ -> ilG.EmitAndLog(OpCodes.Box ,convType cenv emEnv typ) | I_unbox typ -> ilG.EmitAndLog(OpCodes.Unbox ,convType cenv emEnv typ) | I_unbox_any typ -> ilG.EmitAndLog(OpCodes.Unbox_Any,convType cenv emEnv typ) | I_sizeof typ -> ilG.EmitAndLog(OpCodes.Sizeof ,convType cenv emEnv typ) // Generalized array instructions. // In AbsIL these instructions include // both the single-dimensional variants (with ILArrayShape == ILArrayShape.SingleDimensional) // and calls to the "special" multi-dimensional "methods" such as // newobj void string[,]::.ctor(int32, int32) // call string string[,]::Get(int32, int32) // call string& string[,]::Address(int32, int32) // call void string[,]::Set(int32, int32,string) // The IL reader transforms calls of this form to the corresponding // generalized instruction with the corresponding ILArrayShape // argument. This is done to simplify the IL and make it more uniform. // The IL writer then reverses this when emitting the binary. | I_ldelem dt -> (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Ldelem_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Ldelem_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Ldelem_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Ldelem_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Ldelem_I8) | DT_R -> failwith "emitInstr cenv: ldelem R" | DT_R4 -> ilG.EmitAndLog(OpCodes.Ldelem_R4) | DT_R8 -> ilG.EmitAndLog(OpCodes.Ldelem_R8) | DT_U -> failwith "emitInstr cenv: ldelem U" | DT_U1 -> ilG.EmitAndLog(OpCodes.Ldelem_U1) | DT_U2 -> ilG.EmitAndLog(OpCodes.Ldelem_U2) | DT_U4 -> ilG.EmitAndLog(OpCodes.Ldelem_U4) | DT_U8 -> failwith "emitInstr cenv: ldelem U8" | DT_REF -> ilG.EmitAndLog(OpCodes.Ldelem_Ref)) | I_stelem dt -> (match dt with | DT_I -> ilG.EmitAndLog(OpCodes.Stelem_I) | DT_I1 -> ilG.EmitAndLog(OpCodes.Stelem_I1) | DT_I2 -> ilG.EmitAndLog(OpCodes.Stelem_I2) | DT_I4 -> ilG.EmitAndLog(OpCodes.Stelem_I4) | DT_I8 -> ilG.EmitAndLog(OpCodes.Stelem_I8) | DT_R -> failwith "emitInstr cenv: stelem R" | DT_R4 -> ilG.EmitAndLog(OpCodes.Stelem_R4) | DT_R8 -> ilG.EmitAndLog(OpCodes.Stelem_R8) | DT_U -> failwith "emitInstr cenv: stelem U" | DT_U1 -> failwith "emitInstr cenv: stelem U1" | DT_U2 -> failwith "emitInstr cenv: stelem U2" | DT_U4 -> failwith "emitInstr cenv: stelem U4" | DT_U8 -> failwith "emitInstr cenv: stelem U8" | DT_REF -> ilG.EmitAndLog(OpCodes.Stelem_Ref)) | I_ldelema (ro,_isNativePtr,shape,typ) -> if (ro = ReadonlyAddress) then ilG.EmitAndLog(OpCodes.Readonly); if (shape = ILArrayShape.SingleDimensional) then ilG.EmitAndLog(OpCodes.Ldelema,convType cenv emEnv typ) else let aty = convType cenv emEnv (ILType.Array(shape,typ)) let ety = aty.GetElementType() let rty = ety.MakeByRefType() let meth = modB.GetArrayMethodAndLog(aty,"Address",System.Reflection.CallingConventions.HasThis,rty,Array.create shape.Rank (typeof) ) ilG.EmitAndLog(OpCodes.Call,meth) | I_ldelem_any (shape,typ) -> if (shape = ILArrayShape.SingleDimensional) then ilG.EmitAndLog(OpCodes.Ldelem,convType cenv emEnv typ) else let aty = convType cenv emEnv (ILType.Array(shape,typ)) let ety = aty.GetElementType() let meth = // See bug 6254: Mono has a bug in reflection-emit dynamic calls to the "Get", "Address" or "Set" methods on arrays if runningOnMono then getArrayMethInfo shape.Rank ety else modB.GetArrayMethodAndLog(aty,"Get",System.Reflection.CallingConventions.HasThis,ety,Array.create shape.Rank (typeof) ) ilG.EmitAndLog(OpCodes.Call,meth) | I_stelem_any (shape,typ) -> if (shape = ILArrayShape.SingleDimensional) then ilG.EmitAndLog(OpCodes.Stelem,convType cenv emEnv typ) else let aty = convType cenv emEnv (ILType.Array(shape,typ)) let ety = aty.GetElementType() let meth = // See bug 6254: Mono has a bug in reflection-emit dynamic calls to the "Get", "Address" or "Set" methods on arrays if runningOnMono then setArrayMethInfo shape.Rank ety else modB.GetArrayMethodAndLog(aty,"Set",System.Reflection.CallingConventions.HasThis,(null:Type),Array.append (Array.create shape.Rank (typeof)) (Array.ofList [ ety ])) ilG.EmitAndLog(OpCodes.Call,meth) | I_newarr (shape,typ) -> if (shape = ILArrayShape.SingleDimensional) then ilG.EmitAndLog(OpCodes.Newarr,convType cenv emEnv typ) else let aty = convType cenv emEnv (ILType.Array(shape,typ)) let meth = modB.GetArrayMethodAndLog(aty,".ctor",System.Reflection.CallingConventions.HasThis,(null:Type),Array.create shape.Rank (typeof)) ilG.EmitAndLog(OpCodes.Newobj,meth) | I_ldlen -> ilG.EmitAndLog(OpCodes.Ldlen) | I_mkrefany typ -> ilG.EmitAndLog(OpCodes.Mkrefany,convType cenv emEnv typ) | I_refanytype -> ilG.EmitAndLog(OpCodes.Refanytype) | I_refanyval typ -> ilG.EmitAndLog(OpCodes.Refanyval,convType cenv emEnv typ) | I_rethrow -> ilG.EmitAndLog(OpCodes.Rethrow) | I_break -> ilG.EmitAndLog(OpCodes.Break) | I_seqpoint src -> if cenv.generatePdb && not (src.Document.File.EndsWith("stdin",StringComparison.Ordinal)) then let guid x = match x with None -> Guid.Empty | Some g -> Guid(g:byte[]) in let symDoc = modB.DefineDocumentAndLog(src.Document.File, guid src.Document.Language, guid src.Document.Vendor, guid src.Document.DocumentType) ilG.MarkSequencePointAndLog(symDoc, src.Line, src.Column, src.EndLine, src.EndColumn) | I_arglist -> ilG.EmitAndLog(OpCodes.Arglist) | I_localloc -> ilG.EmitAndLog(OpCodes.Localloc) | I_cpblk (align,vol) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Cpblk) | I_initblk (align,vol) -> emitInstrAlign ilG align; emitInstrVolatile ilG vol; ilG.EmitAndLog(OpCodes.Initblk) | EI_ldlen_multi (_,m) -> emitInstr cenv modB emEnv ilG (mkLdcInt32 m); emitInstr cenv modB emEnv ilG (mkNormalCall(mkILNonGenericMethSpecInTy(cenv.ilg.typ_Array, ILCallingConv.Instance, "GetLength", [cenv.ilg.typ_int32], cenv.ilg.typ_int32))) | I_other e when isIlxExtInstr e -> Printf.failwithf "the ILX instruction %s cannot be emitted" (e.ToString()) | i -> Printf.failwithf "the IL instruction %s cannot be emitted" (i.ToString()) //---------------------------------------------------------------------------- // emitCode //---------------------------------------------------------------------------- let emitBasicBlock cenv modB emEnv (ilG:ILGenerator) bblock = emitLabelMark emEnv ilG bblock.Label; Array.iter (emitInstr cenv modB emEnv ilG) bblock.Instructions; let emitCode cenv modB emEnv (ilG:ILGenerator) code = // pre define labels pending determining their actual marks let labels = labelsOfCode code let emEnv = List.fold (defineLabel ilG) emEnv labels let emitSusp susp = match susp with | Some dest -> ilG.EmitAndLog(OpCodes.Br, envGetLabel emEnv dest) | _ -> () let commitSusp susp lab = match susp with | Some dest when dest <> lab -> emitSusp susp | _ -> () let rec emitter susp code = match code with | ILBasicBlock bblock -> commitSusp susp bblock.Label; emitBasicBlock cenv modB emEnv ilG bblock bblock.Fallthrough | GroupBlock (_localDebugInfos,codes)-> List.fold emitter susp codes | RestrictBlock (_labels,code) -> code |> emitter susp (* restrictions ignorable: code_labels unique *) | TryBlock (code,seh) -> commitSusp susp (uniqueEntryOfCode code); let _endExBlockL = ilG.BeginExceptionBlockAndLog() code |> emitter None |> emitSusp //ilG.MarkLabel endExBlockL; emitHandler seh; ilG.EndExceptionBlockAndLog(); None and emitHandler seh = match seh with | FaultBlock code -> ilG.BeginFaultBlockAndLog(); emitter None code |> emitSusp | FinallyBlock code -> ilG.BeginFinallyBlockAndLog(); emitter None code |> emitSusp | FilterCatchBlock fcodes -> let emitFilter (filter,code) = match filter with | TypeFilter typ -> ilG.BeginCatchBlockAndLog (convType cenv emEnv typ); emitter None code |> emitSusp | CodeFilter test -> ilG.BeginExceptFilterBlockAndLog(); emitter None test |> emitSusp ilG.BeginCatchBlockAndLog null; emitter None code |> emitSusp fcodes |> List.iter emitFilter let initialSusp = Some (uniqueEntryOfCode code) emitter initialSusp code |> emitSusp //---------------------------------------------------------------------------- // emitILMethodBody //---------------------------------------------------------------------------- let emitLocal cenv emEnv (ilG : ILGenerator) (local: ILLocal) = let ty = convType cenv emEnv local.Type ilG.DeclareLocalAndLog(ty,local.IsPinned) let emitILMethodBody cenv modB emEnv (ilG:ILGenerator) ilmbody = // XXX - REVIEW: // NoInlining: bool; // SourceMarker: source option } // emit locals and record emEnv let localBs = Array.map (emitLocal cenv emEnv ilG) (ILList.toArray ilmbody.Locals) let emEnv = envSetLocals emEnv localBs emitCode cenv modB emEnv ilG ilmbody.Code //---------------------------------------------------------------------------- // emitMethodBody //---------------------------------------------------------------------------- let emitMethodBody cenv modB emEnv ilG _name (mbody: ILLazyMethodBody) = match mbody.Contents with | MethodBody.IL ilmbody -> emitILMethodBody cenv modB emEnv (ilG()) ilmbody | MethodBody.PInvoke _pinvoke -> () (* printf "EMIT: pinvoke method %s\n" name *) (* XXX - check *) | MethodBody.Abstract -> () (* printf "EMIT: abstract method %s\n" name *) (* XXX - check *) | MethodBody.Native -> failwith "emitMethodBody cenv: native" (* XXX - gap *) //---------------------------------------------------------------------------- // emitCustomAttrs //---------------------------------------------------------------------------- let convCustomAttr cenv emEnv cattr = let methInfo = match convConstructorSpec cenv emEnv cattr.Method with | null -> failwithf "convCustomAttr: %+A" cattr.Method | res -> res // In Silverlight, we cannot use the byte[] data to generate attributes (security restriction). // Instead, we return a function which creates a CustomAttributeBuilder to be used for SetCustomAttributes. #if SILVERLIGHT let ty : System.Type = convType cenv emEnv cattr.Method.EnclosingType let convAttrArray arr = [|for i in arr -> convAttribElem cenv emEnv i|] let fixedArgs, namedArgs = cattr.Arguments let prop, fields = List.partition (fun (_, _, isProp, _) -> isProp) namedArgs let prop = prop |> List.map (fun (name, _, _, value) -> ty.GetProperty(name), value) |> List.toArray let fields = fields |> List.map (fun (name, _, _, value) -> ty.GetField(name), value) |> List.toArray let data (cinfo: ConstructorInfo) = CustomAttributeBuilder(cinfo, convAttrArray fixedArgs, Array.map fst prop, convAttrArray (Array.map snd prop), Array.map fst fields, convAttrArray (Array.map snd fields)) #else let data = cattr.Data #endif (methInfo,data) let emitCustomAttr cenv emEnv add cattr = add (convCustomAttr cenv emEnv cattr) let emitCustomAttrs cenv emEnv add (cattrs : ILAttributes) = List.iter (emitCustomAttr cenv emEnv add) cattrs.AsList //---------------------------------------------------------------------------- // buildGenParams //---------------------------------------------------------------------------- let buildGenParamsPass1 _emEnv defineGenericParameters (gps : ILGenericParameterDefs) = match gps with | [] -> () | gps -> let gpsNames = gps |> List.map (fun gp -> gp.Name) defineGenericParameters (Array.ofList gpsNames) |> ignore let buildGenParamsPass1b cenv emEnv (genArgs : Type array) (gps : ILGenericParameterDefs) = let genpBs = genArgs |> Array.map (fun x -> (x :?> GenericTypeParameterBuilder)) gps |> List.iteri (fun i (gp:ILGenericParameterDef) -> let gpB = genpBs.[i] // the Constraints are either the parent (base) type or interfaces. let constraintTs = convTypes cenv emEnv gp.Constraints let interfaceTs,baseTs = List.partition (fun (typ:System.Type) -> typ.IsInterface) (ILList.toList constraintTs) // set base type constraint (match baseTs with [ ] -> () // Q: should a baseType be set? It is in some samples. Should this be a failure case? | [ baseT ] -> gpB.SetBaseTypeConstraint(baseT) | _ -> failwith "buildGenParam: multiple base types" ); // set interface contraints (interfaces that instances of gp must meet) gpB.SetInterfaceConstraints(Array.ofList interfaceTs); gp.CustomAttrs |> emitCustomAttrs cenv emEnv (wrapCustomAttr gpB.SetCustomAttribute) let flags = GenericParameterAttributes.None let flags = match gp.Variance with | NonVariant -> flags | CoVariant -> flags ||| GenericParameterAttributes.Covariant | ContraVariant -> flags ||| GenericParameterAttributes.Contravariant let flags = if gp.HasReferenceTypeConstraint then flags ||| GenericParameterAttributes.ReferenceTypeConstraint else flags let flags = if gp.HasNotNullableValueTypeConstraint then flags ||| GenericParameterAttributes.NotNullableValueTypeConstraint else flags let flags = if gp.HasDefaultConstructorConstraint then flags ||| GenericParameterAttributes.DefaultConstructorConstraint else flags gpB.SetGenericParameterAttributes(flags) ) //---------------------------------------------------------------------------- // emitParameter //---------------------------------------------------------------------------- let emitParameter cenv emEnv (defineParameter : int * ParameterAttributes * string -> ParameterBuilder) i param = // -Type: typ; // -Default: ILFieldInit option; // -Marshal: NativeType option; (* Marshalling map for parameters. COM Interop only. *) let attrs = flagsIf param.IsIn ParameterAttributes.In ||| flagsIf param.IsOut ParameterAttributes.Out ||| flagsIf param.IsOptional ParameterAttributes.Optional let name = match param.Name with | Some name -> name | None -> "X"^string(i+1) let parB = defineParameter(i,attrs,name) emitCustomAttrs cenv emEnv (wrapCustomAttr parB.SetCustomAttribute) param.CustomAttrs //---------------------------------------------------------------------------- // convMethodAttributes //---------------------------------------------------------------------------- let convMethodAttributes (mdef: ILMethodDef) = let attrKind = match mdef.mdKind with | MethodKind.Static -> MethodAttributes.Static | MethodKind.Cctor -> MethodAttributes.Static | MethodKind.Ctor -> enum 0 | MethodKind.NonVirtual -> enum 0 | MethodKind.Virtual vinfo -> MethodAttributes.Virtual ||| flagsIf vinfo.IsNewSlot MethodAttributes.NewSlot ||| flagsIf vinfo.IsFinal MethodAttributes.Final ||| flagsIf vinfo.IsCheckAccessOnOverride MethodAttributes.CheckAccessOnOverride ||| flagsIf vinfo.IsAbstract MethodAttributes.Abstract let attrAccess = match mdef.Access with | ILMemberAccess.Assembly -> MethodAttributes.Assembly | ILMemberAccess.CompilerControlled -> failwith "Method access compiler controled." | ILMemberAccess.FamilyAndAssembly -> MethodAttributes.FamANDAssem | ILMemberAccess.FamilyOrAssembly -> MethodAttributes.FamORAssem | ILMemberAccess.Family -> MethodAttributes.Family | ILMemberAccess.Private -> MethodAttributes.Private | ILMemberAccess.Public -> MethodAttributes.Public let attrOthers = flagsIf mdef.HasSecurity MethodAttributes.HasSecurity ||| flagsIf mdef.IsSpecialName MethodAttributes.SpecialName ||| flagsIf mdef.IsHideBySig MethodAttributes.HideBySig ||| flagsIf mdef.IsReqSecObj MethodAttributes.RequireSecObject attrKind ||| attrAccess ||| attrOthers let convMethodImplFlags mdef = (match mdef.mdCodeKind with | MethodCodeKind.Native -> MethodImplAttributes.Native | MethodCodeKind.Runtime -> MethodImplAttributes.Runtime | MethodCodeKind.IL -> MethodImplAttributes.IL) ||| flagsIf mdef.IsInternalCall MethodImplAttributes.InternalCall ||| (if mdef.IsManaged then MethodImplAttributes.Managed else MethodImplAttributes.Unmanaged) ||| flagsIf mdef.IsForwardRef MethodImplAttributes.ForwardRef ||| flagsIf mdef.IsPreserveSig MethodImplAttributes.PreserveSig ||| flagsIf mdef.IsSynchronized MethodImplAttributes.Synchronized ||| flagsIf (match mdef.mdBody.Contents with MethodBody.IL b -> b.NoInlining | _ -> false) MethodImplAttributes.NoInlining //---------------------------------------------------------------------------- // buildMethodPass2 //---------------------------------------------------------------------------- let rec buildMethodPass2 cenv tref (typB:TypeBuilder) emEnv (mdef : ILMethodDef) = // remaining REVIEW: // SecurityDecls: Permissions; // IsUnmanagedExport: bool; (* -- The method is exported to unmanaged code using COM interop. *) // IsMustRun: bool; (* Whidbey feature: SafeHandle finalizer must be run *) let attrs = convMethodAttributes mdef let implflags = convMethodImplFlags mdef let cconv = convCallConv mdef.CallingConv let mref = mkRefToILMethod (tref,mdef) let emEnv = if mdef.IsEntryPoint && mdef.ParameterTypes.Length = 0 then (* Bug 2209: Here, we collect the entry points generated by ilxgen corresponding to the top-level effects. Users can (now) annotate their own functions with EntryPoint attributes. However, these user entry points functions must take string[] argument. By only adding entry points with no arguments, we only collect the top-level effects. *) envAddEntryPt emEnv (typB,mdef.Name) else emEnv match mdef.mdBody.Contents with | MethodBody.PInvoke p -> let argtys = convTypesToArray cenv emEnv mdef.ParameterTypes let rty = convType cenv emEnv mdef.Return.Type let pcc = match p.CallingConv with | PInvokeCallingConvention.Cdecl -> CallingConvention.Cdecl | PInvokeCallingConvention.Stdcall -> CallingConvention.StdCall | PInvokeCallingConvention.Thiscall -> CallingConvention.ThisCall | PInvokeCallingConvention.Fastcall -> CallingConvention.FastCall | PInvokeCallingConvention.None | PInvokeCallingConvention.WinApi -> CallingConvention.Winapi let pcs = match p.CharEncoding with | PInvokeCharEncoding.None -> CharSet.None | PInvokeCharEncoding.Ansi -> CharSet.Ansi | PInvokeCharEncoding.Unicode -> CharSet.Unicode | PInvokeCharEncoding.Auto -> CharSet.Auto (* p.ThrowOnUnmappableChar *) (* p.CharBestFit *) (* p.NoMangle *) #if FX_ATLEAST_SILVERLIGHT_50 failwith "PInvoke methods may not be defined when targeting Silverlight via System.Reflection.Emit" #else let methB = typB.DefinePInvokeMethod(mdef.Name, p.Where.Name, p.Name, attrs, cconv, rty, null, null, argtys, null, null, pcc, pcs) methB.SetImplementationFlagsAndLog(implflags); envBindMethodRef emEnv mref methB #endif | _ -> match mdef.Name with | ".cctor" | ".ctor" -> let consB = typB.DefineConstructorAndLog(attrs,cconv,convTypesToArray cenv emEnv mdef.ParameterTypes) consB.SetImplementationFlagsAndLog(implflags); envBindConsRef emEnv mref consB | _name -> // Note the return/argument types may involve the generic parameters let methB = typB.DefineMethodAndLog(mdef.Name,attrs,cconv) // Method generic type parameters buildGenParamsPass1 emEnv methB.DefineGenericParametersAndLog mdef.GenericParams; let genArgs = getGenericArgumentsOfMethod methB let emEnv = envPushTyvars emEnv (Array.append (getGenericArgumentsOfType typB) genArgs) buildGenParamsPass1b cenv emEnv genArgs mdef.GenericParams; // set parameter and return types (may depend on generic args) methB.SetParametersAndLog(convTypesToArray cenv emEnv mdef.ParameterTypes); methB.SetReturnTypeAndLog(convType cenv emEnv mdef.Return.Type); let emEnv = envPopTyvars emEnv methB.SetImplementationFlagsAndLog(implflags); envBindMethodRef emEnv mref methB //---------------------------------------------------------------------------- // buildMethodPass3 cenv //---------------------------------------------------------------------------- let rec buildMethodPass3 cenv tref modB (typB:TypeBuilder) emEnv (mdef : ILMethodDef) = let mref = mkRefToILMethod (tref,mdef) let isPInvoke = match mdef.mdBody.Contents with | MethodBody.PInvoke _p -> true | _ -> false match mdef.Name with | ".cctor" | ".ctor" -> let consB = envGetConsB emEnv mref // Constructors can not have generic parameters assert isNil mdef.GenericParams // Value parameters let defineParameter (i,attr,name) = consB.DefineParameterAndLog(i+1,attr,name) mdef.Parameters |> ILList.iteri (emitParameter cenv emEnv defineParameter); // Body emitMethodBody cenv modB emEnv consB.GetILGenerator mdef.Name mdef.mdBody; emitCustomAttrs cenv emEnv (wrapCustomAttr consB.SetCustomAttribute) mdef.CustomAttrs; () | _name -> let methB = envGetMethB emEnv mref let emEnv = envPushTyvars emEnv (Array.append (getGenericArgumentsOfType typB) (getGenericArgumentsOfMethod methB)) match mdef.Return.CustomAttrs.AsList with | [] -> () | _ -> let retB = methB.DefineParameterAndLog(0,System.Reflection.ParameterAttributes.Retval,null) emitCustomAttrs cenv emEnv (wrapCustomAttr retB.SetCustomAttribute) mdef.Return.CustomAttrs // Value parameters let defineParameter (i,attr,name) = methB.DefineParameterAndLog(i+1,attr,name) mdef.Parameters |> ILList.iteri (fun a b -> emitParameter cenv emEnv defineParameter a b); // Body if not isPInvoke then emitMethodBody cenv modB emEnv methB.GetILGeneratorAndLog mdef.Name mdef.mdBody; let emEnv = envPopTyvars emEnv // case fold later... emitCustomAttrs cenv emEnv methB.SetCustomAttributeAndLog mdef.CustomAttrs //---------------------------------------------------------------------------- // buildFieldPass2 //---------------------------------------------------------------------------- let buildFieldPass2 cenv tref (typB:TypeBuilder) emEnv (fdef : ILFieldDef) = (*{ -Data: bytes option; -Marshal: NativeType option; *) let attrsAccess = match fdef.Access with | ILMemberAccess.Assembly -> FieldAttributes.Assembly | ILMemberAccess.CompilerControlled -> failwith "Field access compiler controled." | ILMemberAccess.FamilyAndAssembly -> FieldAttributes.FamANDAssem | ILMemberAccess.FamilyOrAssembly -> FieldAttributes.FamORAssem | ILMemberAccess.Family -> FieldAttributes.Family | ILMemberAccess.Private -> FieldAttributes.Private | ILMemberAccess.Public -> FieldAttributes.Public let attrsOther = flagsIf fdef.IsStatic FieldAttributes.Static ||| flagsIf fdef.IsSpecialName FieldAttributes.SpecialName ||| flagsIf fdef.IsLiteral FieldAttributes.Literal ||| flagsIf fdef.IsInitOnly FieldAttributes.InitOnly ||| flagsIf fdef.NotSerialized FieldAttributes.NotSerialized let attrs = attrsAccess ||| attrsOther let fieldT = convType cenv emEnv fdef.Type let fieldB = #if FX_ATLEAST_SILVERLIGHT_50 #else match fdef.Data with | Some d -> typB.DefineInitializedData(fdef.Name, d, attrs) | None -> #endif typB.DefineFieldAndLog(fdef.Name,fieldT,attrs) // set default value fdef.LiteralValue |> Option.iter (fun initial -> fieldB.SetConstant(convFieldInit initial)); #if FX_ATLEAST_SILVERLIGHT_50 #else fdef.Offset |> Option.iter (fun offset -> fieldB.SetOffset(offset)); #endif // custom attributes: done on pass 3 as they may reference attribute constructors generated on // pass 2. let fref = mkILFieldRef (tref,fdef.Name,fdef.Type) envBindFieldRef emEnv fref fieldB let buildFieldPass3 cenv tref (_typB:TypeBuilder) emEnv (fdef : ILFieldDef) = let fref = mkILFieldRef (tref,fdef.Name,fdef.Type) let fieldB = envGetFieldB emEnv fref emitCustomAttrs cenv emEnv (wrapCustomAttr fieldB.SetCustomAttribute) fdef.CustomAttrs //---------------------------------------------------------------------------- // buildPropertyPass2,3 //---------------------------------------------------------------------------- let buildPropertyPass2 cenv tref (typB:TypeBuilder) emEnv (prop : ILPropertyDef) = let attrs = flagsIf prop.IsRTSpecialName PropertyAttributes.RTSpecialName ||| flagsIf prop.IsSpecialName PropertyAttributes.SpecialName let propB = typB.DefinePropertyAndLog(prop.Name,attrs,convType cenv emEnv prop.Type,convTypesToArray cenv emEnv prop.Args) prop.SetMethod |> Option.iter (fun mref -> propB.SetSetMethod(envGetMethB emEnv mref)); prop.GetMethod |> Option.iter (fun mref -> propB.SetGetMethod(envGetMethB emEnv mref)); // set default value prop.Init |> Option.iter (fun initial -> propB.SetConstant(convFieldInit initial)); // custom attributes let pref = ILPropertyRef.Create (tref,prop.Name) envBindPropRef emEnv pref propB let buildPropertyPass3 cenv tref (_typB:TypeBuilder) emEnv (prop : ILPropertyDef) = let pref = ILPropertyRef.Create (tref,prop.Name) let propB = envGetPropB emEnv pref emitCustomAttrs cenv emEnv (wrapCustomAttr propB.SetCustomAttribute) prop.CustomAttrs //---------------------------------------------------------------------------- // buildEventPass3 //---------------------------------------------------------------------------- let buildEventPass3 cenv (typB:TypeBuilder) emEnv (eventDef : ILEventDef) = let attrs = flagsIf eventDef.IsSpecialName EventAttributes.SpecialName ||| flagsIf eventDef.IsRTSpecialName EventAttributes.RTSpecialName assert eventDef.Type.IsSome let eventB = typB.DefineEventAndLog(eventDef.Name,attrs,convType cenv emEnv eventDef.Type.Value) eventDef.AddMethod |> (fun mref -> eventB.SetAddOnMethod(envGetMethB emEnv mref)); eventDef.RemoveMethod |> (fun mref -> eventB.SetRemoveOnMethod(envGetMethB emEnv mref)); eventDef.FireMethod |> Option.iter (fun mref -> eventB.SetRaiseMethod(envGetMethB emEnv mref)); eventDef.OtherMethods |> List.iter (fun mref -> eventB.AddOtherMethod(envGetMethB emEnv mref)); emitCustomAttrs cenv emEnv (wrapCustomAttr eventB.SetCustomAttribute) eventDef.CustomAttrs //---------------------------------------------------------------------------- // buildMethodImplsPass3 //---------------------------------------------------------------------------- let buildMethodImplsPass3 cenv _tref (typB:TypeBuilder) emEnv (mimpl : IL.ILMethodImplDef) = let bodyMethInfo = convMethodRef cenv emEnv (typB :> Type) mimpl.OverrideBy.MethodRef // doc: must be MethodBuilder let (OverridesSpec (mref,dtyp)) = mimpl.Overrides let declMethTI = convType cenv emEnv dtyp let declMethInfo = convMethodRef cenv emEnv declMethTI mref typB.DefineMethodOverride(bodyMethInfo,declMethInfo); emEnv //---------------------------------------------------------------------------- // typeAttributesOf* //---------------------------------------------------------------------------- let typeAttrbutesOfTypeDefKind x = match x with // required for a TypeBuilder | ILTypeDefKind.Class -> TypeAttributes.Class | ILTypeDefKind.ValueType -> TypeAttributes.Class | ILTypeDefKind.Interface -> TypeAttributes.Interface | ILTypeDefKind.Enum -> TypeAttributes.Class | ILTypeDefKind.Delegate -> TypeAttributes.Class | ILTypeDefKind.Other _xtdk -> failwith "typeAttributes of other external" let typeAttrbutesOfTypeAccess x = match x with | ILTypeDefAccess.Public -> TypeAttributes.Public | ILTypeDefAccess.Private -> TypeAttributes.NotPublic | ILTypeDefAccess.Nested macc -> match macc with | ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly | ILMemberAccess.CompilerControlled -> failwith "Nested compiler controled." | ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem | ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem | ILMemberAccess.Family -> TypeAttributes.NestedFamily | ILMemberAccess.Private -> TypeAttributes.NestedPrivate | ILMemberAccess.Public -> TypeAttributes.NestedPublic let typeAttributesOfTypeEncoding x = match x with | ILDefaultPInvokeEncoding.Ansi -> TypeAttributes.AnsiClass | ILDefaultPInvokeEncoding.Auto -> TypeAttributes.AutoClass | ILDefaultPInvokeEncoding.Unicode -> TypeAttributes.UnicodeClass let typeAttributesOfTypeLayout cenv emEnv x = let attr p = if p.Size =None && p.Pack = None then None else Some(convCustomAttr cenv emEnv (IL.mkILCustomAttribute cenv.ilg (mkILTyRef (cenv.ilg.mscorlibScopeRef,"System.Runtime.InteropServices.StructLayoutAttribute"), [mkILNonGenericValueTy (mkILTyRef (cenv.ilg.mscorlibScopeRef,"System.Runtime.InteropServices.LayoutKind")) ], [ ILAttribElem.Int32 0x02 ], (p.Pack |> Option.toList |> List.map (fun x -> ("Pack", cenv.ilg.typ_int32, false, ILAttribElem.Int32 (int32 x)))) @ (p.Size |> Option.toList |> List.map (fun x -> ("Size", cenv.ilg.typ_int32, false, ILAttribElem.Int32 x)))))) in match x with | ILTypeDefLayout.Auto -> TypeAttributes.AutoLayout,None | ILTypeDefLayout.Explicit p -> TypeAttributes.ExplicitLayout,(attr p) | ILTypeDefLayout.Sequential p -> TypeAttributes.SequentialLayout, (attr p) //---------------------------------------------------------------------------- // buildTypeDefPass1 cenv //---------------------------------------------------------------------------- let rec buildTypeDefPass1 cenv emEnv (modB:ModuleBuilder) rootTypeBuilder nesting (tdef : ILTypeDef) = // -IsComInterop: bool; (* Class or interface generated for COM interop *) // -SecurityDecls: Permissions; // -InitSemantics: ILTypeInit; // TypeAttributes let attrsKind = typeAttrbutesOfTypeDefKind tdef.tdKind let attrsAccess = typeAttrbutesOfTypeAccess tdef.Access let attrsLayout,cattrsLayout = typeAttributesOfTypeLayout cenv emEnv tdef.Layout let attrsEnc = typeAttributesOfTypeEncoding tdef.Encoding let attrsOther = flagsIf tdef.IsAbstract TypeAttributes.Abstract ||| flagsIf tdef.IsSealed TypeAttributes.Sealed ||| flagsIf tdef.IsSerializable TypeAttributes.Serializable ||| flagsIf tdef.IsSpecialName TypeAttributes.SpecialName ||| flagsIf tdef.HasSecurity TypeAttributes.HasSecurity let attrsType = attrsKind ||| attrsAccess ||| attrsLayout ||| attrsEnc ||| attrsOther // TypeBuilder from TypeAttributes. let typB : TypeBuilder = rootTypeBuilder (tdef.Name,attrsType) let typB = typB |> nonNull "buildTypeDefPass1 cenv: typB is null!" cattrsLayout |> Option.iter typB.SetCustomAttributeAndLog; buildGenParamsPass1 emEnv typB.DefineGenericParametersAndLog tdef.GenericParams; // bind tref -> (typT,typB) let tref = mkRefForNestedILTypeDef ILScopeRef.Local (nesting,tdef) let typT = // Q: would it be ok to use typB :> Type ? // Maybe not, recall TypeBuilder maybe subtype of Type, but it is not THE Type. let nameInModule = tref.QualifiedName modB.GetTypeAndLog(nameInModule,false,false) let emEnv = envBindTypeRef emEnv tref (typT,typB,tdef) // recurse on nested types let nesting = nesting @ [tdef] let buildNestedType emEnv tdef = buildTypeTypeDef cenv emEnv modB typB nesting tdef let emEnv = List.fold buildNestedType emEnv tdef.NestedTypes.AsList emEnv and buildTypeTypeDef cenv emEnv modB (typB : TypeBuilder) nesting tdef = buildTypeDefPass1 cenv emEnv modB typB.DefineNestedTypeAndLog nesting tdef //---------------------------------------------------------------------------- // buildTypeDefPass1b //---------------------------------------------------------------------------- let rec buildTypeDefPass1b cenv nesting emEnv (tdef : ILTypeDef) = let tref = mkRefForNestedILTypeDef ILScopeRef.Local (nesting,tdef) let typB = envGetTypB emEnv tref let genArgs = getGenericArgumentsOfType typB let emEnv = envPushTyvars emEnv genArgs // Parent may reference types being defined, so has to come after it's Pass1 creation tdef.Extends |> Option.iter (fun typ -> typB.SetParentAndLog(convType cenv emEnv typ)); // build constraints on ILGenericParameterDefs. Constraints may reference types being defined, // so have to come after all types are created buildGenParamsPass1b cenv emEnv genArgs tdef.GenericParams; let emEnv = envPopTyvars emEnv let nesting = nesting @ [tdef] List.iter (buildTypeDefPass1b cenv nesting emEnv) tdef.NestedTypes.AsList //---------------------------------------------------------------------------- // buildTypeDefPass2 //---------------------------------------------------------------------------- let rec buildTypeDefPass2 cenv nesting emEnv (tdef : ILTypeDef) = let tref = mkRefForNestedILTypeDef ILScopeRef.Local (nesting,tdef) let typB = envGetTypB emEnv tref let emEnv = envPushTyvars emEnv (getGenericArgumentsOfType typB) // add interface impls tdef.Implements |> convTypes cenv emEnv |> ILList.iter (fun implT -> typB.AddInterfaceImplementationAndLog(implT)); // add methods, properties let emEnv = List.fold (buildMethodPass2 cenv tref typB) emEnv tdef.Methods.AsList let emEnv = List.fold (buildFieldPass2 cenv tref typB) emEnv tdef.Fields.AsList let emEnv = List.fold (buildPropertyPass2 cenv tref typB) emEnv tdef.Properties.AsList let emEnv = envPopTyvars emEnv // nested types let nesting = nesting @ [tdef] let emEnv = List.fold (buildTypeDefPass2 cenv nesting) emEnv tdef.NestedTypes.AsList emEnv //---------------------------------------------------------------------------- // buildTypeDefPass3 cenv //---------------------------------------------------------------------------- let rec buildTypeDefPass3 cenv nesting modB emEnv (tdef : ILTypeDef) = let tref = mkRefForNestedILTypeDef ILScopeRef.Local (nesting,tdef) let typB = envGetTypB emEnv tref let emEnv = envPushTyvars emEnv (getGenericArgumentsOfType typB) // add method bodies, properties, events tdef.Methods |> Seq.iter (buildMethodPass3 cenv tref modB typB emEnv); tdef.Properties.AsList |> List.iter (buildPropertyPass3 cenv tref typB emEnv); tdef.Events.AsList |> List.iter (buildEventPass3 cenv typB emEnv); tdef.Fields.AsList |> List.iter (buildFieldPass3 cenv tref typB emEnv); let emEnv = List.fold (buildMethodImplsPass3 cenv tref typB) emEnv tdef.MethodImpls.AsList tdef.CustomAttrs |> emitCustomAttrs cenv emEnv typB.SetCustomAttributeAndLog ; // custom attributes let emEnv = envPopTyvars emEnv // nested types let nesting = nesting @ [tdef] let emEnv = List.fold (buildTypeDefPass3 cenv nesting modB) emEnv tdef.NestedTypes.AsList emEnv //---------------------------------------------------------------------------- // buildTypeDefPass4 - Create the Types // MSDN says: If this type is a nested type, the CreateType method must // be called on the enclosing type before it is called on the nested type. // If the current type derives from an incomplete type or implements // incomplete interfaces, call the CreateType method on the parent // type and the interface types before calling it on the current type. // If the enclosing type contains a field that is a value type // defined as a nested type (for example, a field that is an // enumeration defined as a nested type), calling the CreateType method // on the enclosing type will generate a AppDomain.TypeResolve event. // This is because the loader cannot determine the size of the enclosing // type until the nested type has been completed. The caller should define // a handler for the TypeResolve event to complete the definition of the // nested type by calling CreateType on the TypeBuilder object that represents // the nested type. The code example for this topic shows how to define such // an event handler. //---------------------------------------------------------------------------- let getEnclosingTypeRefs (tref:ILTypeRef) = match tref.Enclosing with | [] -> [] | h :: t -> List.scan (fun tr nm -> mkILTyRefInTyRef (tr,nm)) (mkILTyRef(tref.Scope, h)) t let rec getTypeRefsInType valueTypesOnly typ acc = match typ with | ILType.Void | ILType.TypeVar _ -> acc | ILType.Ptr eltType | ILType.Byref eltType -> getTypeRefsInType valueTypesOnly eltType acc | ILType.Array (_,eltType) -> if valueTypesOnly then acc else getTypeRefsInType valueTypesOnly eltType acc | ILType.Value tspec -> tspec.TypeRef :: ILList.foldBack (getTypeRefsInType valueTypesOnly) tspec.GenericArgs acc | ILType.Boxed tspec -> if valueTypesOnly then acc else tspec.TypeRef :: ILList.foldBack (getTypeRefsInType valueTypesOnly) tspec.GenericArgs acc | ILType.FunctionPointer _callsig -> failwith "getTypeRefsInType: fptr" | ILType.Modified _ -> failwith "getTypeRefsInType: modified" let verbose2 = false let createTypeRef (visited : Dictionary<_,_>, created : Dictionary<_,_>) emEnv tref = let rec traverseTypeDef priority (tref:ILTypeRef) (tdef:ILTypeDef) = if priority >= 2 then if verbose2 then dprintf "buildTypeDefPass4: Creating Enclosing Types of %s\n" tdef.Name; tref |> getEnclosingTypeRefs |> List.iter (traverseTypeRef priority); // WORKAROUND (ProductStudio FSharp 1.0 bug 615): the constraints on generic method parameters // are resolved overly eagerly by reflection emit's CreateType. if priority >= 1 then if verbose2 then dprintf "buildTypeDefPass4: Doing type typar constraints of %s\n" tdef.Name; tdef.GenericParams |> List.iter (fun gp -> gp.Constraints |> ILList.iter (traverseType false 2)); if verbose2 then dprintf "buildTypeDefPass4: Doing method constraints of %s\n" tdef.Name; tdef.Methods.AsList |> Seq.iter (fun md -> md.GenericParams |> List.iter (fun gp -> gp.Constraints |> ILList.iter (traverseType false 2))); // We absolutely need the parent type... if priority >= 1 then if verbose2 then dprintf "buildTypeDefPass4: Creating Super Class Chain of %s\n" tdef.Name; tdef.Extends |> Option.iter (traverseType false priority); // We absolutely need the interface types... if priority >= 1 then if verbose2 then dprintf "buildTypeDefPass4: Creating Interface Chain of %s\n" tdef.Name; tdef.Implements |> ILList.iter (traverseType false priority); // We have to define all struct types in all methods before a class is defined. This only has any effect when there is a struct type // being defined simultaneously with this type. if priority >= 1 then if verbose2 then dprintf "buildTypeDefPass4: Doing value types in method signatures of %s, #mdefs = %d\n" tdef.Name tdef.Methods.AsList.Length; tdef.Methods |> Seq.iter (fun md -> md.Parameters |> ILList.iter (fun p -> p.Type |> (traverseType true 1)) md.Return.Type |> traverseType true 1); if priority >= 1 then if verbose2 then dprintf "buildTypeDefPass4: Do value types in fields of %s\n" tdef.Name; tdef.Fields.AsList |> List.iter (fun fd -> traverseType true 1 fd.Type); if verbose2 then dprintf "buildTypeDefPass4: Done with dependencies of %s\n" tdef.Name and traverseType valueTypesOnly priority typ = if verbose2 then dprintf "- traverseType %+A\n" typ; getTypeRefsInType valueTypesOnly typ [] |> List.filter (isEmittedTypeRef emEnv) |> List.iter (traverseTypeRef priority) and traverseTypeRef priority tref = let typB = envGetTypB emEnv tref if verbose2 then dprintf "- considering reference to type %s\n" typB.FullName; if not (visited.ContainsKey(tref)) || visited.[tref] > priority then visited.[tref] <- priority; let tdef = envGetTypeDef emEnv tref if verbose2 then dprintf "- traversing type %s\n" typB.FullName; #if SILVERLIGHT traverseTypeDef priority tref tdef; #else let typeCreationHandler = let nestingToProbe = tref.Enclosing ResolveEventHandler( fun o r -> let typeName = r.Name let typeRef = ILTypeRef.Create(ILScopeRef.Local, nestingToProbe, typeName) match emEnv.emTypMap.TryFind typeRef with | Some(_,tb,_,_) -> if not (tb.IsCreated()) then tb.CreateTypeAndLog() |> ignore tb.Assembly | None -> null ) System.AppDomain.CurrentDomain.add_TypeResolve typeCreationHandler try traverseTypeDef priority tref tdef; finally System.AppDomain.CurrentDomain.remove_TypeResolve typeCreationHandler #endif if not (created.ContainsKey(tref)) then created.[tref] <- true; if verbose2 then dprintf "- creating type %s\n" typB.FullName; typB.CreateTypeAndLog() |> ignore traverseTypeRef 2 tref let rec buildTypeDefPass4 (visited,created) nesting emEnv (tdef : ILTypeDef) = if verbose2 then dprintf "buildTypeDefPass4 %s\n" tdef.Name; let tref = mkRefForNestedILTypeDef ILScopeRef.Local (nesting,tdef) createTypeRef (visited,created) emEnv tref; // nested types let nesting = nesting @ [tdef] tdef.NestedTypes |> Seq.iter (buildTypeDefPass4 (visited,created) nesting emEnv) //---------------------------------------------------------------------------- // buildModuleType //---------------------------------------------------------------------------- let buildModuleTypePass1 cenv (modB:ModuleBuilder) emEnv (tdef:ILTypeDef) = buildTypeDefPass1 cenv emEnv modB modB.DefineTypeAndLog [] tdef let buildModuleTypePass1b cenv emEnv tdef = buildTypeDefPass1b cenv [] emEnv tdef let buildModuleTypePass2 cenv emEnv tdef = buildTypeDefPass2 cenv [] emEnv tdef let buildModuleTypePass3 cenv modB emEnv tdef = buildTypeDefPass3 cenv [] modB emEnv tdef let buildModuleTypePass4 visited emEnv tdef = buildTypeDefPass4 visited [] emEnv tdef //---------------------------------------------------------------------------- // buildModuleFragment - only the types the fragment get written //---------------------------------------------------------------------------- let buildModuleFragment cenv emEnv (asmB : AssemblyBuilder) (modB : ModuleBuilder) (m: ILModuleDef) = let tdefs = m.TypeDefs.AsList let emEnv = List.fold (buildModuleTypePass1 cenv modB) emEnv tdefs tdefs |> List.iter (buildModuleTypePass1b cenv emEnv) let emEnv = List.fold (buildModuleTypePass2 cenv) emEnv tdefs let emEnv = List.fold (buildModuleTypePass3 cenv modB) emEnv tdefs let visited = new Dictionary<_,_>(10) let created = new Dictionary<_,_>(10) tdefs |> List.iter (buildModuleTypePass4 (visited,created) emEnv) let emEnv = Seq.fold envUpdateCreatedTypeRef emEnv created.Keys // update typT with the created typT emitCustomAttrs cenv emEnv modB.SetCustomAttributeAndLog m.CustomAttrs; m.Resources.AsList |> List.iter (fun r -> let attribs = (match r.Access with ILResourceAccess.Public -> ResourceAttributes.Public | ILResourceAccess.Private -> ResourceAttributes.Private) match r.Location with | ILResourceLocation.Local bf -> modB.DefineManifestResourceAndLog(r.Name, new System.IO.MemoryStream(bf()), attribs) | ILResourceLocation.File (mr,_n) -> #if FX_ATLEAST_SILVERLIGHT_50 () #else asmB.AddResourceFileAndLog(r.Name, mr.Name, attribs) #endif | ILResourceLocation.Assembly _ -> failwith "references to resources other assemblies may not be emitted using System.Reflection"); emEnv //---------------------------------------------------------------------------- // test hook //---------------------------------------------------------------------------- let mkDynamicAssemblyAndModule (assemblyName, optimize, debugInfo) = let filename = assemblyName ^ ".dll" let currentDom = System.AppDomain.CurrentDomain #if SILVERLIGHT let _asmDir = if optimize then "." else "." // TODO: factor out optimize let asmName = new AssemblyName() asmName.Name <- assemblyName; let asmB = currentDom.DefineDynamicAssembly(asmName,AssemblyBuilderAccess.Run) let modB = asmB.DefineDynamicModule(filename,debugInfo) #else let asmDir = "." let asmName = new AssemblyName() asmName.Name <- assemblyName; let asmB = currentDom.DefineDynamicAssemblyAndLog(asmName,AssemblyBuilderAccess.RunAndSave,asmDir) if not optimize then let daType = typeof; let daCtor = daType.GetConstructor [| typeof |] let daBuilder = new CustomAttributeBuilder(daCtor, [| System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations ||| System.Diagnostics.DebuggableAttribute.DebuggingModes.Default |]) asmB.SetCustomAttributeAndLog(daBuilder); let modB = asmB.DefineDynamicModuleAndLog(assemblyName,filename,debugInfo) #endif asmB,modB #if SILVERLIGHT type EntryDelegate = delegate of unit -> unit #endif let emitModuleFragment (ilg, emEnv, asmB : AssemblyBuilder, modB : ModuleBuilder, modul : IL.ILModuleDef, debugInfo : bool, resolvePath) = let cenv = { ilg = ilg ; generatePdb = debugInfo; resolvePath=resolvePath } let emEnv = buildModuleFragment cenv emEnv asmB modB modul match modul.Manifest with | None -> () | Some mani -> // REVIEW: remainder of manifest emitCustomAttrs cenv emEnv asmB.SetCustomAttributeAndLog mani.CustomAttrs; // invoke entry point methods let execEntryPtFun ((typB : TypeBuilder),methodName) () = try #if SILVERLIGHT let mi = typB.GetMethod(methodName, BindingFlags.InvokeMethod ||| BindingFlags.Public ||| BindingFlags.Static) System.Diagnostics.Debug.WriteLine("mi: {0}", string(mi.ToString())) let dm = DynamicMethod((methodName+"dm"),null,null) let ilg = dm.GetILGenerator(); ilg.EmitCall(OpCodes.Call,mi,null) ilg.Emit(OpCodes.Ret) let invokedm = dm.CreateDelegate(typeof) invokedm.DynamicInvoke(null) |> ignore #else ignore (typB.InvokeMemberAndLog(methodName,BindingFlags.InvokeMethod ||| BindingFlags.Public ||| BindingFlags.Static,[| |])); #endif None with | :? System.Reflection.TargetInvocationException as e -> Some(e.InnerException) let emEnv,entryPts = envPopEntryPts emEnv let execs = List.map execEntryPtFun entryPts emEnv,execs //---------------------------------------------------------------------------- // lookup* allow conversion from AbsIL to their emitted representations //---------------------------------------------------------------------------- // TypeBuilder is a subtype of Type. // However, casting TypeBuilder to Type is not the same as getting Type proper. // The builder version does not implement all methods on the parent. // // The emEnv stores (typT:Type) for each tref. // Once the emitted type is created this typT is updated to ensure it is the Type proper. // So Type lookup will return the proper Type not TypeBuilder. let LookupTypeRef emEnv tref = Zmap.tryFind tref emEnv.emTypMap |> Option.map (function (_typ,_,_,Some createdTyp) -> createdTyp | (typ,_,_,None) -> typ) let LookupType cenv emEnv typ = convCreatedType cenv emEnv typ // Lookups of ILFieldRef and MethodRef may require a similar non-Builder-fixup post Type-creation. let LookupFieldRef emEnv fref = Zmap.tryFind fref emEnv.emFieldMap |> Option.map (fun fieldBuilder -> fieldBuilder :> FieldInfo) let LookupMethodRef emEnv mref = Zmap.tryFind mref emEnv.emMethMap |> Option.map (fun methodBuilder -> methodBuilder :> MethodInfo) fsharp-3.0.34/src/absil/ilascii.fs0000775000175000017500000003215112260314606015725 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants open Internal.Utilities open Internal.Utilities.Collections open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL let parseILGlobals = ref ecmaILGlobals // -------------------------------------------------------------------- // Table of parsing and pretty printing data for instructions. // - PP data is only used for instructions with no arguments // -------------------------------------------------------------------- let noArgInstrs = lazy [ ["ldc";"i4";"0"], mkLdcInt32 0; ["ldc";"i4";"1"], mkLdcInt32 1; ["ldc";"i4";"2"], mkLdcInt32 2; ["ldc";"i4";"3"], mkLdcInt32 3; ["ldc";"i4";"4"], mkLdcInt32 4; ["ldc";"i4";"5"], mkLdcInt32 5; ["ldc";"i4";"6"], mkLdcInt32 6; ["ldc";"i4";"7"], mkLdcInt32 7; ["ldc";"i4";"8"], mkLdcInt32 8; ["ldc";"i4";"M1"], mkLdcInt32 -1; ["ldc";"i4";"m1"], mkLdcInt32 -1; ["stloc";"0"], mkStloc (uint16 0); ["stloc";"1"], mkStloc (uint16 1); ["stloc";"2"], mkStloc (uint16 2); ["stloc";"3"], mkStloc (uint16 3); ["ldloc";"0"], mkLdloc (uint16 0); ["ldloc";"1"], mkLdloc (uint16 1); ["ldloc";"2"], mkLdloc (uint16 2); ["ldloc";"3"], mkLdloc (uint16 3); ["ldarg";"0"], (mkLdarg (uint16 ( 0))); ["ldarg";"1"], (mkLdarg (uint16 ( 1))); ["ldarg";"2"], (mkLdarg (uint16 ( 2))); ["ldarg";"3"], (mkLdarg (uint16 ( 3))); ["ret"], I_ret; ["add"], AI_add; ["add";"ovf"], AI_add_ovf; ["add";"ovf";"un"], AI_add_ovf_un; ["and"], AI_and; ["div"], AI_div; ["div";"un"], AI_div_un; ["ceq"], AI_ceq; ["cgt"], AI_cgt; ["cgt";"un"], AI_cgt_un; ["clt"], AI_clt; ["clt";"un"], AI_clt_un; ["conv";"i1"], AI_conv DT_I1; ["conv";"i2"], AI_conv DT_I2; ["conv";"i4"], AI_conv DT_I4; ["conv";"i8"], AI_conv DT_I8; ["conv";"i"], AI_conv DT_I; ["conv";"r4"], AI_conv DT_R4; ["conv";"r8"], AI_conv DT_R8; ["conv";"u1"], AI_conv DT_U1; ["conv";"u2"], AI_conv DT_U2; ["conv";"u4"], AI_conv DT_U4; ["conv";"u8"], AI_conv DT_U8; ["conv";"u"], AI_conv DT_U; ["conv";"r"; "un"], AI_conv DT_R; ["conv";"ovf";"i1"], AI_conv_ovf DT_I1; ["conv";"ovf";"i2"], AI_conv_ovf DT_I2; ["conv";"ovf";"i4"], AI_conv_ovf DT_I4; ["conv";"ovf";"i8"], AI_conv_ovf DT_I8; ["conv";"ovf";"i"], AI_conv_ovf DT_I; ["conv";"ovf";"u1"], AI_conv_ovf DT_U1; ["conv";"ovf";"u2"], AI_conv_ovf DT_U2; ["conv";"ovf";"u4"], AI_conv_ovf DT_U4; ["conv";"ovf";"u8"], AI_conv_ovf DT_U8; ["conv";"ovf";"u"], AI_conv_ovf DT_U; ["conv";"ovf";"i1"; "un"], AI_conv_ovf_un DT_I1; ["conv";"ovf";"i2"; "un"], AI_conv_ovf_un DT_I2; ["conv";"ovf";"i4"; "un"], AI_conv_ovf_un DT_I4; ["conv";"ovf";"i8"; "un"], AI_conv_ovf_un DT_I8; ["conv";"ovf";"i"; "un"], AI_conv_ovf_un DT_I; ["conv";"ovf";"u1"; "un"], AI_conv_ovf_un DT_U1; ["conv";"ovf";"u2"; "un"], AI_conv_ovf_un DT_U2; ["conv";"ovf";"u4"; "un"], AI_conv_ovf_un DT_U4; ["conv";"ovf";"u8"; "un"], AI_conv_ovf_un DT_U8; ["conv";"ovf";"u"; "un"], AI_conv_ovf_un DT_U; ["stelem";"i1"], I_stelem DT_I1; ["stelem";"i2"], I_stelem DT_I2; ["stelem";"i4"], I_stelem DT_I4; ["stelem";"i8"], I_stelem DT_I8; ["stelem";"r4"], I_stelem DT_R4; ["stelem";"r8"], I_stelem DT_R8; ["stelem";"i"], I_stelem DT_I; ["stelem";"u"], I_stelem DT_I; ["stelem";"u8"], I_stelem DT_I8; ["stelem";"ref"], I_stelem DT_REF; ["ldelem";"i1"], I_ldelem DT_I1; ["ldelem";"i2"], I_ldelem DT_I2; ["ldelem";"i4"], I_ldelem DT_I4; ["ldelem";"i8"], I_ldelem DT_I8; ["ldelem";"u8"], I_ldelem DT_I8; ["ldelem";"u1"], I_ldelem DT_U1; ["ldelem";"u2"], I_ldelem DT_U2; ["ldelem";"u4"], I_ldelem DT_U4; ["ldelem";"r4"], I_ldelem DT_R4; ["ldelem";"r8"], I_ldelem DT_R8; ["ldelem";"u"], I_ldelem DT_I; // EQUIV ["ldelem";"i"], I_ldelem DT_I; ["ldelem";"ref"], I_ldelem DT_REF; ["mul"], AI_mul ; ["mul";"ovf"], AI_mul_ovf; ["mul";"ovf";"un"], AI_mul_ovf_un; ["rem"], AI_rem ; ["rem";"un"], AI_rem_un ; ["shl"], AI_shl ; ["shr"], AI_shr ; ["shr";"un"], AI_shr_un; ["sub"], AI_sub ; ["sub";"ovf"], AI_sub_ovf; ["sub";"ovf";"un"], AI_sub_ovf_un; ["xor"], AI_xor; ["or"], AI_or; ["neg"], AI_neg; ["not"], AI_not; ["ldnull"], AI_ldnull; ["dup"], AI_dup; ["pop"], AI_pop; ["ckfinite"], AI_ckfinite; ["nop"], AI_nop; ["break"], I_break; ["arglist"], I_arglist; ["endfilter"], I_endfilter; ["endfinally"], I_endfinally; ["refanytype"], I_refanytype; ["localloc"], I_localloc; ["throw"], I_throw; ["ldlen"], I_ldlen; ["rethrow"], I_rethrow; ];; #if DEBUG let wordsOfNoArgInstr, isNoArgInstr = let t = lazy (let t = HashMultiMap(300, HashIdentity.Structural) noArgInstrs |> Lazy.force |> List.iter (fun (x,mk) -> t.Add(mk,x)) ; t) (fun s -> (Lazy.force t).[s]), (fun s -> (Lazy.force t).ContainsKey s) #endif // -------------------------------------------------------------------- // Instructions are preceded by prefixes, e.g. ".tail" etc. // -------------------------------------------------------------------- let mk_stind (nm,dt) = (nm, (fun () -> I_stind(Aligned,Nonvolatile,dt))) let mk_ldind (nm,dt) = (nm, (fun () -> I_ldind(Aligned,Nonvolatile,dt))) // -------------------------------------------------------------------- // Parsing only... Tables of different types of instructions. // First the different kinds of instructions. // -------------------------------------------------------------------- type NoArgInstr = (unit -> ILInstr) type Int32Instr = (int32 -> ILInstr) type Int32Int32Instr = (int32 * int32 -> ILInstr) type Int64Instr = (int64 -> ILInstr) type DoubleInstr = (ILConst -> ILInstr) type MethodSpecInstr = (ILMethodSpec * ILVarArgs -> ILInstr) type TypeInstr = (ILType -> ILInstr) type IntTypeInstr = (int * ILType -> ILInstr) type ValueTypeInstr = (ILType -> ILInstr) (* nb. diff. interp of types to TypeInstr *) type StringInstr = (string -> ILInstr) type TokenInstr = (ILToken -> ILInstr) type SwitchInstr = (ILCodeLabel list * ILCodeLabel -> ILInstr) // -------------------------------------------------------------------- // Now the generic code to make a table of instructions // -------------------------------------------------------------------- type InstrTable<'T> = (string list * 'T) list type LazyInstrTable<'T> = Lazy> // -------------------------------------------------------------------- // Now the tables of instructions // -------------------------------------------------------------------- let NoArgInstrs = lazy (((noArgInstrs |> Lazy.force |> List.map (fun (nm,i) -> (nm,(fun () -> i)))) @ [ (mk_stind (["stind";"u"], DT_I)); (mk_stind (["stind";"i"], DT_I)); (mk_stind (["stind";"u1"], DT_I1));(* ILX EQUIVALENT *) (mk_stind (["stind";"i1"], DT_I1)); (mk_stind (["stind";"u2"], DT_I2)); (mk_stind (["stind";"i2"], DT_I2)); (mk_stind (["stind";"u4"], DT_I4)); (* ILX EQUIVALENT *) (mk_stind (["stind";"i4"], DT_I4)); (mk_stind (["stind";"u8"], DT_I8)); (* ILX EQUIVALENT *) (mk_stind (["stind";"i8"], DT_I8)); (mk_stind (["stind";"r4"], DT_R4)); (mk_stind (["stind";"r8"], DT_R8)); (mk_stind (["stind";"ref"], DT_REF)); (mk_ldind (["ldind";"i"], DT_I)); (mk_ldind (["ldind";"i1"], DT_I1)); (mk_ldind (["ldind";"i2"], DT_I2)); (mk_ldind (["ldind";"i4"], DT_I4)); (mk_ldind (["ldind";"i8"], DT_I8)); (mk_ldind (["ldind";"u1"], DT_U1)); (mk_ldind (["ldind";"u2"], DT_U2)); (mk_ldind (["ldind";"u4"], DT_U4)); (mk_ldind (["ldind";"u8"], DT_I8)); (mk_ldind (["ldind";"r4"], DT_R4)); (mk_ldind (["ldind";"r8"], DT_R8)); (mk_ldind (["ldind";"ref"], DT_REF)); (["cpblk"], (fun () -> I_cpblk(Aligned,Nonvolatile))); (["initblk"], (fun () -> I_initblk(Aligned,Nonvolatile))); ] ) : NoArgInstr InstrTable);; let Int64Instrs = lazy ([ (["ldc";"i8"], (fun x ->(AI_ldc (DT_I8, ILConst.I8 x)))); ] : Int64Instr InstrTable) let Int32Instrs = lazy ([ (["ldc";"i4"], (fun x -> ((mkLdcInt32 x)))); (["ldc";"i4";"s"], (fun x -> ((mkLdcInt32 x)))); ] : Int32Instr InstrTable) let Int32Int32Instrs = lazy ([ (["ldlen";"multi"], (fun (x,y) -> EI_ldlen_multi (x, y))); ] : Int32Int32Instr InstrTable) let DoubleInstrs = lazy ([ (["ldc";"r4"], (fun x -> (AI_ldc (DT_R4, x)))); (["ldc";"r8"], (fun x -> (AI_ldc (DT_R8, x)))); ] : DoubleInstr InstrTable) let MethodSpecInstrs = lazy ([ ( (["call"], (fun (mspec,y) -> I_call (Normalcall,mspec,y)))) ] : InstrTable) let StringInstrs = lazy ([ (["ldstr"], (fun x -> I_ldstr x)); ] : InstrTable) let TokenInstrs = lazy ([ (["ldtoken"], (fun x -> I_ldtoken x)); ] : InstrTable) let TypeInstrs = lazy ([ (["ldelema"], (fun x -> I_ldelema (NormalAddress,false,ILArrayShape.SingleDimensional,x))); (["ldelem";"any"], (fun x -> I_ldelem_any (ILArrayShape.SingleDimensional,x))); (["stelem";"any"], (fun x -> I_stelem_any (ILArrayShape.SingleDimensional, x))); (["newarr"], (fun x -> I_newarr (ILArrayShape.SingleDimensional,x))); (["castclass"], (fun x -> I_castclass x)); (["ilzero"], (fun x -> EI_ilzero x)); (["isinst"], (fun x -> I_isinst x)); (["initobj";"any"], (fun x -> I_initobj x)); (["unbox";"any"], (fun x -> I_unbox_any x)); ] : InstrTable) let IntTypeInstrs = lazy ([ (["ldelem";"multi"], (fun (x,y) -> (I_ldelem_any (ILArrayShape.FromRank x,y)))); (["stelem";"multi"], (fun (x,y) -> (I_stelem_any (ILArrayShape.FromRank x,y)))); (["newarr";"multi"], (fun (x,y) -> (I_newarr (ILArrayShape.FromRank x,y)))); (["ldelema";"multi"], (fun (x,y) -> (I_ldelema (NormalAddress,false,ILArrayShape.FromRank x,y)))); ] : InstrTable) let ValueTypeInstrs = lazy ([ (["cpobj"], (fun x -> I_cpobj x)); (["initobj"], (fun x -> I_initobj x)); (["ldobj"], (fun z -> I_ldobj (Aligned,Nonvolatile,z))); (["stobj"], (fun z -> I_stobj (Aligned,Nonvolatile,z))); (["sizeof"], (fun x -> I_sizeof x)); (["box"], (fun x -> I_box x)); (["unbox"], (fun x -> I_unbox x)); ] : InstrTable) fsharp-3.0.34/src/absil/bytes.fs0000775000175000017500000001145112260314606015436 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Byte arrays namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open System.IO open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal module internal Bytes = let b0 n = (n &&& 0xFF) let b1 n = ((n >>> 8) &&& 0xFF) let b2 n = ((n >>> 16) &&& 0xFF) let b3 n = ((n >>> 24) &&& 0xFF) let dWw1 n = int32 ((n >>> 32) &&& 0xFFFFFFFFL) let dWw0 n = int32 (n &&& 0xFFFFFFFFL) let get (b:byte[]) n = int32 (Array.get b n) let zeroCreate n : byte[] = Array.zeroCreate n let sub ( b:byte[]) s l = Array.sub b s l let blit (a:byte[]) b c d e = Array.blit a b c d e let ofInt32Array (arr:int[]) = Array.init arr.Length (fun i -> byte arr.[i]) let stringAsUtf8NullTerminated (s:string) = Array.append (System.Text.Encoding.UTF8.GetBytes s) (ofInt32Array [| 0x0 |]) let stringAsUnicodeNullTerminated (s:string) = Array.append (System.Text.Encoding.Unicode.GetBytes s) (ofInt32Array [| 0x0;0x0 |]) type internal ByteStream = { bytes: byte[]; mutable pos: int; max: int } member b.ReadByte() = if b.pos >= b.max then failwith "end of stream"; let res = b.bytes.[b.pos] b.pos <- b.pos + 1; res member b.ReadUtf8String n = let res = System.Text.Encoding.UTF8.GetString(b.bytes,b.pos,n) b.pos <- b.pos + n; res static member FromBytes (b:byte[],n,len) = if n < 0 || (n+len) > b.Length then failwith "FromBytes"; { bytes = b; pos = n; max = n+len } member b.ReadBytes n = if b.pos + n > b.max then failwith "ReadBytes: end of stream"; let res = Bytes.sub b.bytes b.pos n b.pos <- b.pos + n; res member b.Position = b.pos #if LAZY_UNPICKLE member b.CloneAndSeek = { bytes=b.bytes; pos=pos; max=b.max } member b.Skip = b.pos <- b.pos + n #endif type internal ByteBuffer = { mutable bbArray: byte[]; mutable bbCurrent: int } member buf.Ensure newSize = let oldBufSize = buf.bbArray.Length if newSize > oldBufSize then let old = buf.bbArray buf.bbArray <- Bytes.zeroCreate (max newSize (oldBufSize * 2)); Bytes.blit old 0 buf.bbArray 0 buf.bbCurrent; member buf.Close () = Bytes.sub buf.bbArray 0 buf.bbCurrent member buf.EmitIntAsByte (i:int) = let newSize = buf.bbCurrent + 1 buf.Ensure newSize; buf.bbArray.[buf.bbCurrent] <- byte i buf.bbCurrent <- newSize member buf.EmitByte (b:byte) = buf.EmitIntAsByte (int b) member buf.EmitIntsAsBytes (arr:int[]) = let n = arr.Length let newSize = buf.bbCurrent + n buf.Ensure newSize; let bbarr = buf.bbArray let bbbase = buf.bbCurrent for i = 0 to n - 1 do bbarr.[bbbase + i] <- byte arr.[i] buf.bbCurrent <- newSize member bb.FixupInt32 pos n = bb.bbArray.[pos] <- (Bytes.b0 n |> byte); bb.bbArray.[pos + 1] <- (Bytes.b1 n |> byte); bb.bbArray.[pos + 2] <- (Bytes.b2 n |> byte); bb.bbArray.[pos + 3] <- (Bytes.b3 n |> byte); member buf.EmitInt32 n = let newSize = buf.bbCurrent + 4 buf.Ensure newSize; buf.FixupInt32 buf.bbCurrent n; buf.bbCurrent <- newSize member buf.EmitBytes (i:byte[]) = let n = i.Length let newSize = buf.bbCurrent + n buf.Ensure newSize; Bytes.blit i 0 buf.bbArray buf.bbCurrent n; buf.bbCurrent <- newSize member buf.EmitInt32AsUInt16 n = let newSize = buf.bbCurrent + 2 buf.Ensure newSize; buf.bbArray.[buf.bbCurrent] <- (Bytes.b0 n |> byte); buf.bbArray.[buf.bbCurrent + 1] <- (Bytes.b1 n |> byte); buf.bbCurrent <- newSize member buf.EmitBoolAsByte (b:bool) = buf.EmitIntAsByte (if b then 1 else 0) member buf.EmitUInt16 (x:uint16) = buf.EmitInt32AsUInt16 (int32 x) member buf.EmitInt64 x = buf.EmitInt32 (Bytes.dWw0 x); buf.EmitInt32 (Bytes.dWw1 x) member buf.Position = buf.bbCurrent static member Create sz = { bbArray=Bytes.zeroCreate sz; bbCurrent = 0; } fsharp-3.0.34/src/absil/illib.fs0000775000175000017500000016200012260314606015400 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module (* internal *) Microsoft.FSharp.Compiler.AbstractIL.Internal.Library #nowarn "1178" // The struct, record or union type 'internal_instr_extension' is not structurally comparable because the type open System open System.Collections open System.Collections.Generic open Internal.Utilities open Internal.Utilities.Collections // Logical shift right treating int32 as unsigned integer. // Code that uses this should probably be adjusted to use unsigned integer types. let (>>>&) (x:int32) (n:int32) = int32 (uint32 x >>> n) let notlazy v = Lazy.CreateFromValue v let isSome x = match x with None -> false | _ -> true let isNone x = match x with None -> true | _ -> false let isNil x = match x with [] -> true | _ -> false let nonNil x = match x with [] -> false | _ -> true let isNull (x : 'T) = match (x :> obj) with null -> true | _ -> false let isNonNull (x : 'T) = match (x :> obj) with null -> false | _ -> true let nonNull msg x = if isNonNull x then x else failwith ("null: " ^ msg) let (===) x y = LanguagePrimitives.PhysicalEquality x y //------------------------------------------------------------------------- // Library: projections //------------------------------------------------------------------------ let foldOn p f z x = f z (p x) let notFound() = raise (KeyNotFoundException()) module Order = let orderBy (p : 'T -> 'U) = { new IComparer<'T> with member __.Compare(x,xx) = compare (p x) (p xx) } let orderOn p (pxOrder: IComparer<'U>) = { new IComparer<'T> with member __.Compare(x,xx) = pxOrder.Compare (p x, p xx) } let toFunction (pxOrder: IComparer<'U>) x y = pxOrder.Compare(x,y) //------------------------------------------------------------------------- // Library: arrays,lists,options //------------------------------------------------------------------------- module Array = let mapq f inp = match inp with | [| |] -> inp | _ -> let res = Array.map f inp let len = inp.Length let mutable eq = true let mutable i = 0 while eq && i < len do if not (inp.[i] === res.[i]) then eq <- false; i <- i + 1 if eq then inp else res let forall2 f (arr1:'T array) (arr2:'T array) = let len1 = arr1.Length let len2 = arr2.Length if len1 <> len2 then invalidArg "Array.forall2" "len1" let rec loop i = (i >= len1) || (f arr1.[i] arr2.[i] && loop (i+1)) loop 0 let lengthsEqAndForall2 p l1 l2 = Array.length l1 = Array.length l2 && Array.forall2 p l1 l2 let mapFold f s l = let mutable acc = s let n = Array.length l let mutable res = Array.zeroCreate n for i = 0 to n - 1 do let h',s' = f acc l.[i] res.[i] <- h'; acc <- s' res, acc // REVIEW: systematically eliminate fmap/mapFold duplication. // They only differ by the tuple returned by the function. let fmap f s l = let mutable acc = s let n = Array.length l let mutable res = Array.zeroCreate n for i = 0 to n - 1 do let s',h' = f acc l.[i] res.[i] <- h' acc <- s' acc, res let order (eltOrder: IComparer<'T>) = { new IComparer> with member __.Compare(xs,ys) = let c = compare xs.Length ys.Length if c <> 0 then c else let rec loop i = if i >= xs.Length then 0 else let c = eltOrder.Compare(xs.[i], ys.[i]) if c <> 0 then c else loop (i+1) loop 0 } let existsOne p l = let rec forallFrom p l n = (n >= Array.length l) || (p l.[n] && forallFrom p l (n+1)) let rec loop p l n = (n < Array.length l) && (if p l.[n] then forallFrom (fun x -> not (p x)) l (n+1) else loop p l (n+1)) loop p l 0 let findFirstIndexWhereTrue (arr: _[]) p = let rec look lo hi = assert ((lo >= 0) && (hi >= 0)) assert ((lo <= arr.Length) && (hi <= arr.Length)) if lo = hi then lo else let i = (lo+hi)/2 if p arr.[i] then if i = 0 then i else if p arr.[i-1] then look lo i else i else // not true here, look after look (i+1) hi look 0 arr.Length module Option = let mapFold f s opt = match opt with | None -> None,s | Some x -> let x',s' = f s x in Some x',s' let otherwise opt dflt = match opt with | None -> dflt | Some x -> x // REVIEW: systematically eliminate fmap/mapFold duplication let fmap f z l = match l with | None -> z,None | Some x -> let z,x = f z x z,Some x let fold f z x = match x with | None -> z | Some x -> f z x module List = let sortWithOrder (c: IComparer<'T>) elements = List.sortWith (Order.toFunction c) elements let splitAfter n l = let rec split_after_acc n l1 l2 = if n <= 0 then List.rev l1,l2 else split_after_acc (n-1) ((List.head l2):: l1) (List.tail l2) split_after_acc n [] l let existsi f xs = let rec loop i xs = match xs with [] -> false | h::t -> f i h || loop (i+1) t loop 0 xs let lengthsEqAndForall2 p l1 l2 = List.length l1 = List.length l2 && List.forall2 p l1 l2 let rec findi n f l = match l with | [] -> None | h::t -> if f h then Some (h,n) else findi (n+1) f t let chop n l = if n = List.length l then (l,[]) else // avoids allocation unless necessary let rec loop n l acc = if n <= 0 then (List.rev acc,l) else match l with | [] -> failwith "List.chop: overchop" | (h::t) -> loop (n-1) t (h::acc) loop n l [] let take n l = if n = List.length l then l else let rec loop acc n l = match l with | [] -> List.rev acc | x::xs -> if n<=0 then List.rev acc else loop (x::acc) (n-1) xs loop [] n l let rec drop n l = match l with | [] -> [] | _::xs -> if n=0 then l else drop (n-1) xs let splitChoose select l = let rec ch acc1 acc2 l = match l with | [] -> List.rev acc1,List.rev acc2 | x::xs -> match select x with | Choice1Of2 sx -> ch (sx::acc1) acc2 xs | Choice2Of2 sx -> ch acc1 (sx::acc2) xs ch [] [] l let mapq (f: 'T -> 'T) inp = assert not (typeof<'T>.IsValueType) match inp with | [] -> inp | _ -> let res = List.map f inp let rec check l1 l2 = match l1,l2 with | h1::t1,h2::t2 -> System.Runtime.CompilerServices.RuntimeHelpers.Equals(h1,h2) && check t1 t2 | _ -> true if check inp res then inp else res let frontAndBack l = let rec loop acc l = match l with | [] -> System.Diagnostics.Debug.Assert(false, "empty list") invalidArg "l" "empty list" | [h] -> List.rev acc,h | h::t -> loop (h::acc) t loop [] l let tryRemove f inp = let rec loop acc l = match l with | [] -> None | h :: t -> if f h then Some (h, List.rev acc @ t) else loop (h::acc) t loop [] inp //tryRemove (fun x -> x = 2) [ 1;2;3] = Some (2, [1;3]) //tryRemove (fun x -> x = 3) [ 1;2;3;4;5] = Some (3, [1;2;4;5]) //tryRemove (fun x -> x = 3) [] = None let headAndTail l = match l with | [] -> System.Diagnostics.Debug.Assert(false, "empty list") failwith "List.headAndTail" | h::t -> h,t let zip4 l1 l2 l3 l4 = List.zip l1 (List.zip3 l2 l3 l4) |> List.map (fun (x1,(x2,x3,x4)) -> (x1,x2,x3,x4)) let unzip4 l = let a,b,cd = List.unzip3 (List.map (fun (x,y,z,w) -> (x,y,(z,w))) l) let c,d = List.unzip cd a,b,c,d let rec iter3 f l1 l2 l3 = match l1,l2,l3 with | h1::t1, h2::t2, h3::t3 -> f h1 h2 h3; iter3 f t1 t2 t3 | [], [], [] -> () | _ -> failwith "iter3" let takeUntil p l = let rec loop acc l = match l with | [] -> List.rev acc,[] | x::xs -> if p x then List.rev acc, l else loop (x::acc) xs loop [] l let order (eltOrder: IComparer<'T>) = { new IComparer> with member __.Compare(xs,ys) = let rec loop xs ys = match xs,ys with | [],[] -> 0 | [],_ -> -1 | _,[] -> 1 | x::xs,y::ys -> let cxy = eltOrder.Compare(x,y) if cxy=0 then loop xs ys else cxy loop xs ys } let rec last l = match l with [] -> failwith "last" | [h] -> h | _::t -> last t module FrontAndBack = let (|NonEmpty|Empty|) l = match l with [] -> Empty | _ -> NonEmpty(frontAndBack l) let replicate x n = Array.toList (Array.create x n) let range n m = [ n .. m ] let indexNotFound() = raise (new System.Collections.Generic.KeyNotFoundException("An index satisfying the predicate was not found in the collection")) let rec assoc x l = match l with | [] -> indexNotFound() | ((h,r)::t) -> if x = h then r else assoc x t let rec memAssoc x l = match l with | [] -> false | ((h,_)::t) -> x = h || memAssoc x t let rec contains x l = match l with [] -> false | h::t -> x = h || contains x t let rec memq x l = match l with | [] -> false | h::t -> LanguagePrimitives.PhysicalEquality x h || memq x t let mem x l = contains x l // must be tail recursive let mapFold f s l = // microbenchmark suggested this implementation is faster than the simpler recursive one, and this function is called a lot let mutable s = s let mutable r = [] let mutable l = l let mutable finished = false while not finished do match l with | x::xs -> let x',s' = f s x s <- s' r <- x' :: r l <- xs | _ -> finished <- true List.rev r, s // note: not tail recursive let rec mapfoldBack f l s = match l with | [] -> ([],s) | h::t -> let t',s = mapfoldBack f t s let h',s = f h s (h'::t', s) let mapNth n f xs = let rec mn i = function | [] -> [] | x::xs -> if i=n then f x::xs else x::mn (i+1) xs mn 0 xs let rec until p l = match l with [] -> [] | h::t -> if p h then [] else h :: until p t let count pred xs = List.fold (fun n x -> if pred x then n+1 else n) 0 xs let rec private repeatA n x acc = if n <= 0 then acc else repeatA (n-1) x (x::acc) let repeat n x = repeatA n x [] (* WARNING: not tail-recursive *) let mapHeadTail fhead ftail = function | [] -> [] | [x] -> [fhead x] | x::xs -> fhead x :: List.map ftail xs let collectFold f s l = let l, s = mapFold f s l List.concat l, s let singleton x = [x] // note: must be tail-recursive let rec private fmapA f z l acc = match l with | [] -> z,List.rev acc | x::xs -> let z,x = f z x fmapA f z xs (x::acc) // note: must be tail-recursive // REVIEW: systematically eliminate fmap/mapFold duplication let fmap f z l = fmapA f z l [] let collect2 f xs ys = List.concat (List.map2 f xs ys) let iterSquared f xss = xss |> List.iter (List.iter f) let collectSquared f xss = xss |> List.collect (List.collect f) let mapSquared f xss = xss |> List.map (List.map f) let mapfoldSquared f xss = xss |> mapFold (mapFold f) let forallSquared f xss = xss |> List.forall (List.forall f) let mapiSquared f xss = xss |> List.mapi (fun i xs -> xs |> List.mapi (fun j x -> f i j x)) let existsSquared f xss = xss |> List.exists (fun xs -> xs |> List.exists (fun x -> f x)) module String = let indexNotFound() = raise (new System.Collections.Generic.KeyNotFoundException("An index for the character was not found in the string")) let make (n: int) (c: char) : string = new System.String(c, n) let get (str:string) i = str.[i] let sub (s:string) (start:int) (len:int) = s.Substring(start,len) let index (s:string) (c:char) = let r = s.IndexOf(c) if r = -1 then indexNotFound() else r let rindex (s:string) (c:char) = let r = s.LastIndexOf(c) if r = -1 then indexNotFound() else r let contains (s:string) (c:char) = s.IndexOf(c,0,String.length s) <> -1 let order = LanguagePrimitives.FastGenericComparer let lowercase (s:string) = s.ToLowerInvariant() let uppercase (s:string) = s.ToUpperInvariant() let isUpper (s:string) = s.Length >= 1 && System.Char.IsUpper s.[0] && not (System.Char.IsLower s.[0]) let capitalize (s:string) = if s.Length = 0 then s else uppercase s.[0..0] + s.[ 1.. s.Length - 1 ] let uncapitalize (s:string) = if s.Length = 0 then s else lowercase s.[0..0] + s.[ 1.. s.Length - 1 ] let tryDropPrefix (s:string) (t:string) = if s.StartsWith t then Some s.[t.Length..s.Length - 1] else None let tryDropSuffix (s:string) (t:string) = if s.EndsWith t then Some s.[0..s.Length - t.Length - 1] else None let hasPrefix s t = isSome (tryDropPrefix s t) let dropPrefix s t = match (tryDropPrefix s t) with Some(res) -> res | None -> failwith "dropPrefix" let dropSuffix s t = match (tryDropSuffix s t) with Some(res) -> res | None -> failwith "dropSuffix" module Dictionary = let inline ofList l = let dict = new System.Collections.Generic.Dictionary<_,_>(List.length l, HashIdentity.Structural) l |> List.iter (fun (k,v) -> dict.Add(k,v)) dict // FUTURE CLEANUP: remove this adhoc collection type Hashset<'T> = Dictionary<'T,int> [] module Hashset = let create (n:int) = new Hashset<'T>(n, HashIdentity.Structural) let add (t: Hashset<'T>) x = if not (t.ContainsKey x) then t.[x] <- 0 let fold f (t:Hashset<'T>) acc = Seq.fold (fun z (KeyValue(x,_)) -> f x z) acc t let ofList l = let t = new Hashset<'T>(List.length l, HashIdentity.Structural) l |> List.iter (fun x -> t.[x] <- 0) t module Lazy = let force (x: Lazy<'T>) = x.Force() //--------------------------------------------------- // Lists as sets. This is almost always a bad data structure and should be eliminated from the compiler. module ListSet = let insert e l = if List.mem e l then l else e::l //--------------------------------------------------- // Misc /// Get an initialization hole let getHole r = match !r with None -> failwith "getHole" | Some x -> x module Map = let tryFindMulti k map = match Map.tryFind k map with Some res -> res | None -> [] type ResultOrException<'TResult> = | Result of 'TResult | Exception of System.Exception //------------------------------------------------------------------------- // Library: extensions to flat list (immutable arrays) //------------------------------------------------------------------------ #if FLAT_LIST_AS_ARRAY_STRUCT //#else module FlatList = let order (eltOrder: IComparer<_>) = { new IComparer> with member __.Compare(xs,ys) = match xs.array,ys.array with | null,null -> 0 | _,null -> 1 | null,_ -> -1 | arr1,arr2 -> Array.order eltOrder arr1 arr2 } let mapq f (x:FlatList<_>) = match x.array with | null -> x | arr -> let arr' = Array.map f arr in let n = arr.Length in let rec check i = if i >= n then true else arr.[i] === arr'.[i] && check (i+1) if check 0 then x else FlatList(arr') let mapFold f acc (x:FlatList<_>) = match x.array with | null -> FlatList.Empty,acc | arr -> let arr,acc = Array.mapFold f acc x.array FlatList(arr),acc // REVIEW: systematically eliminate fmap/mapFold duplication let fmap f acc (x:FlatList<_>) = match x.array with | null -> acc,FlatList.Empty | arr -> let acc,arr = Array.fmap f acc x.array acc,FlatList(arr) #endif #if FLAT_LIST_AS_LIST #else module FlatList = let toArray xs = List.toArray xs let choose f xs = List.choose f xs let order eltOrder = List.order eltOrder let mapq f (x:FlatList<_>) = List.mapq f x let mapFold f acc (x:FlatList<_>) = List.mapFold f acc x let fmap f acc (x:FlatList<_>) = List.fmap f acc x #endif #if FLAT_LIST_AS_ARRAY //#else module FlatList = let order eltOrder = Array.order eltOrder let mapq f x = Array.mapq f x let mapFold f acc x = Array.mapFold f acc x let fmap f acc x = Array.fmap f acc x #endif /// Computations that can cooperatively yield by returning a continuation /// /// - Any yield of a NotYetDone should typically be "abandonable" without adverse consequences. No resource release /// will be called when the computation is abandoned. /// /// - Computations suspend via a NotYetDone may use local state (mutables), where these are /// captured by the NotYetDone closure. Computations do not need to be restartable. /// /// - The key thing is that you can take an Eventually value and run it with /// Eventually.repeatedlyProgressUntilDoneOrTimeShareOver type Eventually<'T> = | Done of 'T | NotYetDone of (unit -> Eventually<'T>) [] module Eventually = let rec box e = match e with | Done x -> Done (Operators.box x) | NotYetDone (work) -> NotYetDone (fun () -> box (work())) let rec forceWhile check e = match e with | Done x -> Some(x) | NotYetDone (work) -> if not(check()) then None else forceWhile check (work()) let force e = Option.get (forceWhile (fun () -> true) e) /// Keep running the computation bit by bit until a time limit is reached. #if SILVERLIGHT // There is no Stopwatch on Silverlight, so use DateTime.Now. I'm not sure of the pros and cons of this. // An alternative is just to always force the computation all the way to the end. //let repeatedlyProgressUntilDoneOrTimeShareOver _timeShareInMilliseconds runner e = // Done (runner (fun () -> force e)) let repeatedlyProgressUntilDoneOrTimeShareOver (timeShareInMilliseconds:int64) runner e = let rec runTimeShare e = runner (fun () -> let sw = System.DateTime.Now let rec loop e = match e with | Done _ -> e | NotYetDone (work) -> let ts = System.DateTime.Now - sw if ts.TotalMilliseconds > float timeShareInMilliseconds then NotYetDone(fun () -> runTimeShare e) else loop(work()) loop e) runTimeShare e #else /// The runner gets called each time the computation is restarted let repeatedlyProgressUntilDoneOrTimeShareOver timeShareInMilliseconds runner e = let sw = new System.Diagnostics.Stopwatch() let rec runTimeShare e = runner (fun () -> sw.Reset() sw.Start(); let rec loop(e) = match e with | Done _ -> e | NotYetDone work -> if sw.ElapsedMilliseconds > timeShareInMilliseconds then sw.Stop(); NotYetDone(fun () -> runTimeShare e) else loop(work()) loop(e)) runTimeShare e #endif let rec bind k e = match e with | Done x -> k x | NotYetDone work -> NotYetDone (fun () -> bind k (work())) let fold f acc seq = (Done acc,seq) ||> Seq.fold (fun acc x -> acc |> bind (fun acc -> f acc x)) let rec catch e = match e with | Done x -> Done(Result x) | NotYetDone work -> NotYetDone (fun () -> let res = try Result(work()) with | e -> Exception e match res with | Result cont -> catch cont | Exception e -> Done(Exception e)) let delay f = NotYetDone (fun () -> f()) let tryFinally e compensation = catch (e) |> bind (fun res -> compensation(); match res with | Result v -> Eventually.Done v | Exception e -> raise e) let tryWith e handler = catch e |> bind (function Result v -> Done v | Exception e -> handler e) type EventuallyBuilder() = member x.Bind(e,k) = Eventually.bind k e member x.Return(v) = Eventually.Done v member x.ReturnFrom(v) = v member x.Combine(e1,e2) = e1 |> Eventually.bind (fun () -> e2) member x.TryWith(e,handler) = Eventually.tryWith e handler member x.TryFinally(e,compensation) = Eventually.tryFinally e compensation member x.Delay(f) = Eventually.delay f member x.Zero() = Eventually.Done () let eventually = new EventuallyBuilder() (* let _ = eventually { return 1 } let _ = eventually { let x = 1 in return 1 } let _ = eventually { let! x = eventually { return 1 } in return 1 } let _ = eventually { try return (failwith "") with _ -> return 1 } let _ = eventually { use x = null in return 1 } *) //--------------------------------------------------------------------------- // generate unique stamps //--------------------------------------------------------------------------- type UniqueStampGenerator<'T when 'T : equality>() = let encodeTab = new Dictionary<'T,int>(HashIdentity.Structural) let mutable nItems = 0 let encode str = if encodeTab.ContainsKey(str) then encodeTab.[str] else let idx = nItems encodeTab.[str] <- idx nItems <- nItems + 1 idx member this.Encode(str) = encode str //--------------------------------------------------------------------------- // memoize tables (all entries cached, never collected) //--------------------------------------------------------------------------- type MemoizationTable<'T,'U>(compute: 'T -> 'U, keyComparer: IEqualityComparer<'T>, ?canMemoize) = let table = new System.Collections.Generic.Dictionary<'T,'U>(keyComparer) member t.Apply(x) = if (match canMemoize with None -> true | Some f -> f x) then let mutable res = Unchecked.defaultof<'U> let ok = table.TryGetValue(x,&res) if ok then res else lock table (fun () -> let mutable res = Unchecked.defaultof<'U> let ok = table.TryGetValue(x,&res) if ok then res else let res = compute x table.[x] <- res; res) else compute x exception UndefinedException type LazyWithContextFailure(exn:exn) = static let undefined = new LazyWithContextFailure(UndefinedException) member x.Exception = exn static member Undefined = undefined /// Just like "Lazy" but EVERY forcer must provide an instance of "ctxt", e.g. to help track errors /// on forcing back to at least one sensible user location [] [] type LazyWithContext<'T,'ctxt> = { /// This field holds the result of a successful computation. It's initial value is Unchecked.defaultof mutable value : 'T /// This field holds either the function to run or a LazyWithContextFailure object recording the exception raised /// from running the function. It is null if the thunk has been evaluated successfully. mutable funcOrException: obj; /// A helper to ensure we rethrow the "original" exception findOriginalException : exn -> exn } static member Create(f: ('ctxt->'T), findOriginalException) : LazyWithContext<'T,'ctxt> = { value = Unchecked.defaultof<'T>; funcOrException = box f; findOriginalException = findOriginalException } static member NotLazy(x:'T) : LazyWithContext<'T,'ctxt> = { value = x; funcOrException = null; findOriginalException = id } member x.IsDelayed = (match x.funcOrException with null -> false | :? LazyWithContextFailure -> false | _ -> true) member x.IsForced = (match x.funcOrException with null -> true | _ -> false) member x.Force(ctxt:'ctxt) = match x.funcOrException with | null -> x.value | _ -> // Enter the lock in case another thread is in the process of evaluting the result System.Threading.Monitor.Enter(x); try x.UnsynchronizedForce(ctxt) finally System.Threading.Monitor.Exit(x) member x.UnsynchronizedForce(ctxt) = match x.funcOrException with | null -> x.value | :? LazyWithContextFailure as res -> // Re-raise the original exception raise (x.findOriginalException res.Exception) | :? ('ctxt -> 'T) as f -> x.funcOrException <- box(LazyWithContextFailure.Undefined) try let res = f ctxt x.value <- res; x.funcOrException <- null; res with e -> x.funcOrException <- box(new LazyWithContextFailure(e)); reraise() | _ -> failwith "unreachable" // -------------------------------------------------------------------- // Intern tables to save space. // -------------------------------------------------------------------- module Tables = let memoize f = let t = new Dictionary<_,_>(1000, HashIdentity.Structural) fun x -> let mutable res = Unchecked.defaultof<_> if t.TryGetValue(x, &res) then res else res <- f x; t.[x] <- res; res //------------------------------------------------------------------------- // Library: Name maps //------------------------------------------------------------------------ type NameMap<'T> = Map type NameMultiMap<'T> = NameMap<'T list> type MultiMap<'T,'U when 'T : comparison> = Map<'T,'U list> [] module NameMap = let empty = Map.empty let range m = List.rev (Map.foldBack (fun _ x sofar -> x :: sofar) m []) let foldBack f (m:NameMap<'T>) z = Map.foldBack f m z let forall f m = Map.foldBack (fun x y sofar -> sofar && f x y) m true let exists f m = Map.foldBack (fun x y sofar -> sofar || f x y) m false let ofKeyedList f l = List.foldBack (fun x acc -> Map.add (f x) x acc) l Map.empty let ofList l : NameMap<'T> = Map.ofList l let ofFlatList (l:FlatList<_>) : NameMap<'T> = FlatList.toMap l let toList (l: NameMap<'T>) = Map.toList l let layer (m1 : NameMap<'T>) m2 = Map.foldBack Map.add m1 m2 (* not a very useful function - only called in one place - should be changed *) let layerAdditive addf m1 m2 = Map.foldBack (fun x y sofar -> Map.add x (addf (Map.tryFindMulti x sofar) y) sofar) m1 m2 // Union entries by identical key, using the provided function to union sets of values let union unionf (ms: NameMap<_> seq) = seq { for m in ms do yield! m } |> Seq.groupBy (fun (KeyValue(k,_v)) -> k) |> Seq.map (fun (k,es) -> (k,unionf (Seq.map (fun (KeyValue(_k,v)) -> v) es))) |> Map.ofSeq (* For every entry in m2 find an entry in m1 and fold *) let subfold2 errf f m1 m2 acc = Map.foldBack (fun n x2 acc -> try f n (Map.find n m1) x2 acc with :? KeyNotFoundException -> errf n x2) m2 acc let suball2 errf p m1 m2 = subfold2 errf (fun _ x1 x2 acc -> p x1 x2 && acc) m1 m2 true let mapFold f s (l: NameMap<'T>) = Map.foldBack (fun x y (l',s') -> let y',s'' = f s' x y in Map.add x y' l',s'') l (Map.empty,s) let foldBackRange f (l: NameMap<'T>) acc = Map.foldBack (fun _ y acc -> f y acc) l acc let filterRange f (l: NameMap<'T>) = Map.foldBack (fun x y acc -> if f y then Map.add x y acc else acc) l Map.empty let mapFilter f (l: NameMap<'T>) = Map.foldBack (fun x y acc -> match f y with None -> acc | Some y' -> Map.add x y' acc) l Map.empty let map f (l : NameMap<'T>) = Map.map (fun _ x -> f x) l let iter f (l : NameMap<'T>) = Map.iter (fun _k v -> f v) l let iteri f (l : NameMap<'T>) = Map.iter f l let mapi f (l : NameMap<'T>) = Map.map f l let partition f (l : NameMap<'T>) = Map.filter (fun _ x-> f x) l, Map.filter (fun _ x -> not (f x)) l let mem v (m: NameMap<'T>) = Map.containsKey v m let find v (m: NameMap<'T>) = Map.find v m let tryFind v (m: NameMap<'T>) = Map.tryFind v m let add v x (m: NameMap<'T>) = Map.add v x m let isEmpty (m: NameMap<'T>) = (Map.isEmpty m) let existsInRange p m = Map.foldBack (fun _ y acc -> acc || p y) m false let tryFindInRange p m = Map.foldBack (fun _ y acc -> match acc with | None -> if p y then Some y else None | _ -> acc) m None [] module NameMultiMap = let existsInRange f (m: NameMultiMap<'T>) = NameMap.exists (fun _ l -> List.exists f l) m let find v (m: NameMultiMap<'T>) = match Map.tryFind v m with None -> [] | Some r -> r let add v x (m: NameMultiMap<'T>) = NameMap.add v (x :: find v m) m let range (m: NameMultiMap<'T>) = Map.foldBack (fun _ x sofar -> x @ sofar) m [] let rangeReversingEachBucket (m: NameMultiMap<'T>) = Map.foldBack (fun _ x sofar -> List.rev x @ sofar) m [] let chooseRange f (m: NameMultiMap<'T>) = Map.foldBack (fun _ x sofar -> List.choose f x @ sofar) m [] let map f (m: NameMultiMap<'T>) = NameMap.map (List.map f) m let empty : NameMultiMap<'T> = Map.empty let initBy f xs : NameMultiMap<'T> = xs |> Seq.groupBy f |> Seq.map (fun (k,v) -> (k,List.ofSeq v)) |> Map.ofSeq let ofList (xs: (string * 'T) list) : NameMultiMap<'T> = xs |> Seq.groupBy fst |> Seq.map (fun (k,v) -> (k,List.ofSeq (Seq.map snd v))) |> Map.ofSeq [] module MultiMap = let existsInRange f (m: MultiMap<_,_>) = Map.exists (fun _ l -> List.exists f l) m let find v (m: MultiMap<_,_>) = match Map.tryFind v m with None -> [] | Some r -> r let add v x (m: MultiMap<_,_>) = Map.add v (x :: find v m) m let range (m: MultiMap<_,_>) = Map.foldBack (fun _ x sofar -> x @ sofar) m [] //let chooseRange f (m: MultiMap<_,_>) = Map.foldBack (fun _ x sofar -> List.choose f x @ sofar) m [] let empty : MultiMap<_,_> = Map.empty let initBy f xs : MultiMap<_,_> = xs |> Seq.groupBy f |> Seq.map (fun (k,v) -> (k,List.ofSeq v)) |> Map.ofSeq #if LAYERED_MAPS /// State of immutable map collection, converted to a dictionary on first lookup. [] type LayeredMapState<'Key,'Value when 'Key : equality and 'Key : comparison> = /// Collapsible(entries, size) | Collapsible of list>> * int /// Collapsed(frontMap, backingDict) | Collapsed of (Map<'Key,'Value> * Dictionary<'Key,'Value>) /// Immutable map collection, with explicit flattening to a backing dictionary /// /// A layered map is still an immutable map containing a "front" /// F# Map, but the layered map collapses its entries to a "backing" /// dictionary at specific "add-and-collapse" points. /// /// For maps built from multiple "add-and-collapse" operations, /// the process of building the collapsed maps is coalesced. [] type LayeredMap<'Key,'Value when 'Key : equality and 'Key : comparison>(state:LayeredMapState<'Key,'Value>) = let mutable state = state static let empty = LayeredMap<'Key,'Value>(LayeredMapState.Collapsible ([],0)) let entries() = match state with | LayeredMapState.Collapsible (el,n) -> (el,n) | LayeredMapState.Collapsed (m,d) -> [(m :> seq<_>); (d :> seq<_>)], m.Count + d.Count let markAsCollapsible() = match state with | LayeredMapState.Collapsible _ -> () | LayeredMapState.Collapsed _ -> state <- LayeredMapState.Collapsible (entries()) let collapse() = match state with | LayeredMapState.Collapsible (el, n) -> let d = Dictionary<_,_>(n) for e in List.rev el do for (KeyValue(k,v)) in e do d.[k] <- v let p = (Map.empty, d) state <- LayeredMapState.Collapsed p p | LayeredMapState.Collapsed p -> p let dict() = markAsCollapsible() let (_,dict) = collapse() dict static member Empty : LayeredMap<'Key,'Value> = empty member x.TryGetValue (key,res:byref<'Value>) = let (m,d) = collapse() match m.TryFind key with | None -> d.TryGetValue (key,&res) | Some r -> res <- r; true member x.ContainsKey k = let (map,dict) = collapse() map.ContainsKey k || dict.ContainsKey k member x.Item with get key = // collapse on first lookup let (map,dict) = collapse() match map.TryFind key with | None -> let mutable res = Unchecked.defaultof<_> if dict.TryGetValue (key, &res) then res else raise <| KeyNotFoundException("the key was not found in the LayerdNameMap") | Some v -> v member x.TryFind key = let (map,dict) = collapse() match map.TryFind key with | None -> let mutable res = Unchecked.defaultof<_> if dict.TryGetValue (key, &res) then Some res else None | res -> res member x.Values = dict().Values member x.Elements = dict() |> Seq.readonly member x.Add (key, value) = match state with | LayeredMapState.Collapsible (el,n) -> LayeredMap<_,_>(LayeredMapState.Collapsible ((([| KeyValuePair(key,value) |] :> seq<_>) :: el), n + 1)) | LayeredMapState.Collapsed (map,dict) -> LayeredMap (LayeredMapState.Collapsed (map.Add (key,value), dict)) member x.AddAndMarkAsCollapsible (kvs: _[]) = let el,n = entries() LayeredMap<_,_>(LayeredMapState.Collapsible (((kvs :> seq<_>) :: el), n + kvs.Length)) member x.MarkAsCollapsible () = markAsCollapsible() x #endif #if LAYERED_MULTI_MAP /// State of immutable map collection, converted to a dictionary on first lookup. [] type LayeredMultiMapState<'Key,'Value when 'Key : equality and 'Key : comparison> = /// Collapsible(entries, size) | Collapsible of list>> * int /// Collapsed(frontMap, backingDict) | Collapsed of (MultiMap<'Key,'Value> * Dictionary<'Key,'Value list>) /// Immutable map collection, with explicit flattening to a backing dictionary [] type LayeredMultiMap<'Key,'Value when 'Key : equality and 'Key : comparison>(state:LayeredMultiMapState<'Key,'Value>) = let mutable state = state static let empty = LayeredMultiMap<'Key,'Value>(LayeredMultiMapState.Collapsible ([],0)) let entries() = match state with | LayeredMultiMapState.Collapsible (el,n) -> (el,n) | LayeredMultiMapState.Collapsed (m,d) -> [(m :> seq<_>); (d :> seq<_>)], m.Count + d.Count let markAsCollapsible() = match state with | LayeredMultiMapState.Collapsible _ -> () | LayeredMultiMapState.Collapsed _ -> state <- LayeredMultiMapState.Collapsible (entries()) let collapse() = match state with | LayeredMultiMapState.Collapsible (el, n) -> let d = Dictionary<_,_>(n) for e in List.rev el do for (KeyValue(k,vs)) in e do for v in List.rev vs do let prev = let mutable res = Unchecked.defaultof<'Value list> let ok = d.TryGetValue(k,&res) if ok then res else [] d.[k] <- v::prev let p = (MultiMap.empty, d) state <- LayeredMultiMapState.Collapsed p p | LayeredMultiMapState.Collapsed p -> p let dict() = markAsCollapsible() let (_,dict) = collapse() dict static member Empty : LayeredMultiMap<'Key,'Value> = empty member x.TryGetValue (key,res:byref<'Value list>) = let (m,d) = collapse() match m.TryFind key with | None -> d.TryGetValue (key,&res) | Some res1 -> let mutable res2 = Unchecked.defaultof<'Value list> let ok = d.TryGetValue (key,&res2) if ok then res <- (res1@res2); true else res <- res1; true member x.ContainsKey k = let (map,dict) = collapse() map.ContainsKey k || dict.ContainsKey k member x.Item with get key = let mutable res = Unchecked.defaultof<_> if x.TryGetValue (key, &res) then res else [] member x.TryFind key = let mutable res = Unchecked.defaultof<_> if x.TryGetValue (key, &res) then Some res else None member x.Values = dict().Values |> Seq.concat member x.Add (key, value) = match state with | LayeredMultiMapState.Collapsible (el,n) -> LayeredMultiMap<_,_>(LayeredMultiMapState.Collapsible ((([| KeyValuePair(key,[value]) |] :> seq<_>) :: el), n + 1)) | LayeredMultiMapState.Collapsed (map,dict) -> LayeredMultiMap (LayeredMultiMapState.Collapsed (MultiMap.add key value map, dict)) member x.AddAndMarkAsCollapsible (kvs: _[]) = let el,n = entries() LayeredMultiMap<_,_>(LayeredMultiMapState.Collapsible ((([| for KeyValue(k,v) in kvs -> KeyValuePair(k,[v]) |] :> seq<_>) :: el), n + kvs.Length)) member x.MarkAsCollapsible () = markAsCollapsible() x #endif //#if NEW_LAYERED_MAP /// Immutable map collection, with explicit flattening to a backing dictionary /// /// A layered map is still an immutable map containing a "front" /// F# Map, but the layered map collapses its treeMap to a "backing" /// dictionary at specific "add-and-tryCollapseToDictAndNothingElse" points. /// /// For maps built from multiple "add-and-tryCollapseToDictAndNothingElse" operations, /// the process of building the collapsed maps is coalesced. type LayeredMap<'Key,'Value when 'Key : equality and 'Key : comparison> (// The queue of operations to build the full map, empty except during bulk-add operations xqueue: list[], ('Key * ('Value option -> 'Value))>>, // The existing backing tree map (which is looked up in preference to the dictionary) xentries: Map<'Key,'Value>, // The existing backing dictionary (which may be null) xdict: Dictionary<'Key,'Value>) = static let empty = LayeredMap<'Key,'Value>([], Map.empty, null) let mutable state = (xqueue,xentries,xdict) let tryCollapseToDictAndNothingElse force = let (bulkQueue,treeMap,fastDict) = state if not bulkQueue.IsEmpty || force then // bulkQueue.Length + let d = Dictionary<_,_>(treeMap.Count + (match fastDict with null -> 0 | _ -> fastDict.Count)) begin match fastDict with | null -> () | _ -> for (KeyValue(k,v)) in fastDict do d.[k] <- v end treeMap |> Map.iter (fun k v -> d.[k] <- v) for kvsOrModify in List.rev bulkQueue do match kvsOrModify with | Choice1Of2 kvs -> for (KeyValue(k,v)) in kvs do d.[k] <- v | Choice2Of2 (k,updatef) -> let mutable prev = Unchecked.defaultof<_> let n = updatef (if d.TryGetValue(k,&prev) then Some prev else None) d.[k] <- n state <- ([], Map.empty, d) d elif treeMap.IsEmpty then fastDict else null static member Empty : LayeredMap<'Key,'Value> = empty member x.TryGetValue (key,res:byref<'Value>) = match tryCollapseToDictAndNothingElse false with | null -> let (_,treeMap,fastDict) = state match treeMap.TryFind key with | None -> match fastDict with | null -> false | _ -> fastDict.TryGetValue (key,&res) | Some r -> res <- r; true | fastDict -> //printfn "collapsed" match fastDict with | null -> false | _ -> fastDict.TryGetValue (key, &res) member x.ContainsKey key = let mutable res = Unchecked.defaultof<_> x.TryGetValue(key, &res) member x.Item with get key = let mutable res = Unchecked.defaultof<_> let ok = x.TryGetValue(key, &res) if ok then res else raise <| KeyNotFoundException("the key was not found in the LayerdNameMap") member x.TryFind key = let mutable res = Unchecked.defaultof<_> let ok = x.TryGetValue(key, &res) if ok then Some res else None member x.Values = (tryCollapseToDictAndNothingElse true).Values member x.Elements = (tryCollapseToDictAndNothingElse true) |> Seq.readonly member x.Add (key, value) = let (bulkQueue,treeMap,fastDict) = state if bulkQueue.IsEmpty then let treeMap = treeMap.Add (key, value) LayeredMap(bulkQueue, treeMap, fastDict) else // There are elements in the bulk queue, squash them down (mutating map "x"), // then use a one-element treemap let newFastDict = tryCollapseToDictAndNothingElse false match newFastDict with | null -> failwith "unreachable, bulkQueue was non empty, newFastDict should not be null" | _ -> LayeredMap([], Map.empty.Add(key,value), newFastDict) member x.AddAndMarkAsCollapsible (kvs: _[]) = if kvs.Length = 0 then x else let (bulkQueue,treeMap,fastDict) = state let state = (Choice1Of2 kvs::bulkQueue,treeMap,fastDict) LayeredMap state /// Push an item that transforms a possible existing entry. This is used for the bulk updates /// in nameres.fs, where, for each type we push during an "open", we must combine the /// type with any existing entries for types in the eUnqualifiedItems table. member x.LinearTryModifyThenLaterFlatten (key, f: 'Value option -> 'Value) = let (bulkQueue,treeMap,fastDict) = state let state = (Choice2Of2 (key,f)::bulkQueue,treeMap,fastDict) LayeredMap state member x.MarkAsCollapsible () = //x.AddAndMarkAsCollapsible [| |] let (bulkQueue,treeMap,fastDict) = state let state = (Choice1Of2 [| |]::bulkQueue,treeMap,fastDict) LayeredMap state //#endif //#if NEW_LAYERED_MULTI_MAP type LayeredMultiMap<'Key,'Value when 'Key : equality and 'Key : comparison> (xqueue: list[]>, xentries: Map<'Key,'Value list>, xdict: Dictionary<'Key,'Value list>) = static let empty = LayeredMultiMap<'Key,'Value>([], Map.empty, null) let mutable state = (xqueue,xentries,xdict) let tryCollapseToDictAndNothingElse force = let (bulkQueue,treeMap,fastDict) = state if not bulkQueue.IsEmpty || force then // bulkQueue.Length + let d = Dictionary<_,_>(treeMap.Count + (match fastDict with null -> 0 | _ -> fastDict.Count)) begin match fastDict with | null -> () | _ -> for (KeyValue(k,vs)) in fastDict do d.[k] <- vs end treeMap |> Map.iter (fun k vs -> let mutable prev = Unchecked.defaultof<_> if d.TryGetValue(k,&prev) then d.[k] <- vs@prev else d.[k] <- vs) //printfn "collapsing, bulkQueue = %A" bulkQueue for kvs in List.rev bulkQueue do //printfn "collapsing, bulkQueue.i] = %A" bulkQueue.[i] for (KeyValue(k,v)) in kvs do let mutable prev = Unchecked.defaultof<_> if d.TryGetValue(k,&prev) then d.[k] <- (v::prev) else d.[k] <- [v] state <- ([], Map.empty, d) d elif treeMap.IsEmpty then fastDict else null static member Empty : LayeredMultiMap<'Key,'Value> = empty member x.TryGetValue (key,res:byref<'Value list>) = match tryCollapseToDictAndNothingElse false with | null -> let (_,treeMap,fastDict) = state match treeMap.TryFind key with | None -> match fastDict with | null -> false | _ -> fastDict.TryGetValue (key,&res) | Some r -> match fastDict with | null -> res <- r true | _ -> let mutable res2 = Unchecked.defaultof<_> if fastDict.TryGetValue (key,&res2) then res <- r@res2 else res <- r true | fastDict -> //printfn "collapsed" match fastDict with | null -> false | _ -> fastDict.TryGetValue (key, &res) member x.ContainsKey key = let mutable res = Unchecked.defaultof<_> x.TryGetValue(key, &res) member x.Item with get key = let mutable res = Unchecked.defaultof<_> let ok = x.TryGetValue(key, &res) if ok then res else [] member x.TryFind key = let mutable res = Unchecked.defaultof<_> let ok = x.TryGetValue(key, &res) if ok then Some res else None member x.Values = (tryCollapseToDictAndNothingElse true).Values |> Seq.concat member x.Elements = (tryCollapseToDictAndNothingElse true) |> Seq.readonly member x.Add (key, value) = let (bulkQueue,treeMap,fastDict) = state if bulkQueue.IsEmpty then let prev = match treeMap.TryFind key with None -> [] | Some vs -> vs let treeMap = treeMap.Add (key, value::prev) LayeredMultiMap(bulkQueue, treeMap, fastDict) else // There are elements in the bulk queue, squash them down (mutating map "x"), // then use a one-element treemap let newFastDict = tryCollapseToDictAndNothingElse false match newFastDict with | null -> failwith "unreachable, bulkQueue was non empty, newFastDict should not be null" | _ -> LayeredMultiMap([], Map.empty.Add(key,[value]), newFastDict) member x.AddAndMarkAsCollapsible (kvs: _[]) = if kvs.Length = 0 then x else let (bulkQueue,treeMap,fastDict) = state let state = (kvs::bulkQueue,treeMap,fastDict) LayeredMultiMap state member x.MarkAsCollapsible () = //x.AddAndMarkAsCollapsible [| |] let (bulkQueue,treeMap,fastDict) = state let state = ([| |]::bulkQueue,treeMap,fastDict) LayeredMultiMap state //#endif #if NO_LAYERED_MAP type LayeredMap<'Key,'Value when 'Key : comparison> = Map<'Key,'Value> type Map<'Key,'Value when 'Key : comparison> with static member Empty : Map<'Key,'Value> = Map.empty member m.TryGetValue (key,res:byref<'Value>) = match m.TryFind key with | None -> false | Some r -> res <- r; true member x.Values = [ for (KeyValue(_,v)) in x -> v ] member x.Elements = [ for kvp in x -> kvp ] member x.AddAndMarkAsCollapsible (kvs: _[]) = (x,kvs) ||> Array.fold (fun x (KeyValue(k,v)) -> x.Add(k,v)) member x.LinearTryModifyThenLaterFlatten (key, f: 'Value option -> 'Value) = x.Add (key, f (x.TryFind key)) member x.MarkAsCollapsible () = x //#endif //#if NO_LAYERED_MULTI_MAP /// Immutable map collection, with explicit flattening to a backing dictionary [] type LayeredMultiMap<'Key,'Value when 'Key : equality and 'Key : comparison>(contents : Map<'Key,'Value list>) = static let empty : LayeredMultiMap<'Key,'Value> = LayeredMultiMap Map.empty member x.Add (k,v) = LayeredMultiMap(contents.Add(k,v :: x.[k])) member x.Item with get k = match contents.TryFind k with None -> [] | Some l -> l member x.AddAndMarkAsCollapsible (kvs: _[]) = let x = (x,kvs) ||> Array.fold (fun x (KeyValue(k,v)) -> x.Add(k,v)) x.MarkAsCollapsible() member x.MarkAsCollapsible() = x //LayeredMultiMap(contents) member x.TryFind k = contents.TryFind k member x.Values = [ for (KeyValue(_,v)) in contents -> v ] |> Seq.concat static member Empty : LayeredMultiMap<'Key,'Value> = empty #endif [] module Shim = open System.IO [] type FileSystem() = abstract ReadAllBytesShim: fileName:string -> byte[] default this.ReadAllBytesShim (fileName:string) = use stream = this.FileStreamReadShim fileName let len = stream.Length let buf = Array.zeroCreate (int len) stream.Read(buf, 0, (int len)) |> ignore buf abstract FileStreamReadShim: fileName:string -> System.IO.Stream abstract FileStreamCreateShim: fileName:string -> System.IO.Stream abstract GetFullPathShim: fileName:string -> string /// Take in a filename with an absolute path, and return the same filename /// but canonicalized with respect to extra path separators (e.g. C:\\\\foo.txt) /// and '..' portions abstract SafeGetFullPath: fileName:string -> string abstract IsPathRootedShim: path:string -> bool abstract IsInvalidFilename: filename:string -> bool abstract GetTempPathShim : unit -> string abstract GetLastWriteTimeShim: fileName:string -> System.DateTime abstract SafeExists: fileName:string -> bool abstract FileDelete: fileName:string -> unit abstract AssemblyLoadFrom: fileName:string -> System.Reflection.Assembly abstract AssemblyLoad: assemblyName:System.Reflection.AssemblyName -> System.Reflection.Assembly #if SILVERLIGHT default this.AssemblyLoadFrom(fileName:string) = let load() = let assemblyPart = System.Windows.AssemblyPart() let assemblyStream = this.FileStreamReadShim(fileName) assemblyPart.Load(assemblyStream) if System.Windows.Deployment.Current.Dispatcher.CheckAccess() then load() else let resultTask = System.Threading.Tasks.TaskCompletionSource() System.Windows.Deployment.Current.Dispatcher.BeginInvoke(Action(fun () -> resultTask.SetResult (load()))) |> ignore resultTask.Task.Result default this.AssemblyLoad(assemblyName:System.Reflection.AssemblyName) = try System.Reflection.Assembly.Load(assemblyName.FullName) with e -> this.AssemblyLoadFrom(assemblyName.Name + ".dll") #else default this.AssemblyLoadFrom(fileName:string) = System.Reflection.Assembly.LoadFrom fileName default this.AssemblyLoad(assemblyName:System.Reflection.AssemblyName) = System.Reflection.Assembly.Load assemblyName #endif #if SILVERLIGHT open System.IO.IsolatedStorage open System.Windows open System let mutable FileSystem = { new FileSystem() with member __.FileStreamReadShim (fileName:string) = match Application.GetResourceStream(System.Uri(fileName,System.UriKind.Relative)) with | null -> IsolatedStorageFile.GetUserStoreForApplication().OpenFile(fileName, System.IO.FileMode.Open) :> System.IO.Stream | resStream -> resStream.Stream member __.FileStreamCreateShim (fileName:string) = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication().CreateFile(fileName) :> Stream member __.GetFullPathShim (fileName:string) = fileName member __.IsPathRootedShim (pathName:string) = true member __.SafeGetFullPath (fileName:string) = fileName member __.IsInvalidFilename(filename:string) = String.IsNullOrEmpty(filename) || filename.IndexOfAny(System.IO.Path.GetInvalidPathChars()) <> -1 member __.GetTempPathShim() = "." member __.GetLastWriteTimeShim (fileName:string) = match Application.GetResourceStream(System.Uri(fileName,System.UriKind.Relative)) with | null -> IsolatedStorageFile.GetUserStoreForApplication().GetLastAccessTime(fileName).LocalDateTime | _resStream -> System.DateTime.Today.Date member __.SafeExists (fileName:string) = match Application.GetResourceStream(System.Uri(fileName,System.UriKind.Relative)) with | null -> IsolatedStorageFile.GetUserStoreForApplication().FileExists fileName | resStream -> resStream.Stream <> null member __.FileDelete (fileName:string) = match Application.GetResourceStream(System.Uri(fileName,System.UriKind.Relative)) with | null -> IsolatedStorageFile.GetUserStoreForApplication().DeleteFile fileName | _resStream -> () } #else let mutable FileSystem = { new FileSystem() with override __.ReadAllBytesShim (fileName:string) = File.ReadAllBytes fileName member __.FileStreamReadShim (fileName:string) = new FileStream(fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite) :> Stream member __.FileStreamCreateShim (fileName:string) = new FileStream(fileName,FileMode.Create,FileAccess.Write,FileShare.Read ,0x1000,false) :> Stream member __.GetFullPathShim (fileName:string) = System.IO.Path.GetFullPath fileName member __.SafeGetFullPath (fileName:string) = //System.Diagnostics.Debug.Assert(Path.IsPathRooted(fileName), sprintf "SafeGetFullPath: '%s' is not absolute" fileName) Path.GetFullPath fileName member __.IsPathRootedShim (path:string) = Path.IsPathRooted path member __.IsInvalidFilename(filename:string) = String.IsNullOrEmpty(filename) || filename.IndexOfAny(Path.GetInvalidFileNameChars()) <> -1 member __.GetTempPathShim() = System.IO.Path.GetTempPath() member __.GetLastWriteTimeShim (fileName:string) = File.GetLastWriteTime fileName member __.SafeExists (fileName:string) = System.IO.File.Exists fileName member __.FileDelete (fileName:string) = System.IO.File.Delete fileName } #endif type System.Text.Encoding with static member GetEncodingShim(n:int) = #if SILVERLIGHT System.Text.Encoding.GetEncoding(n.ToString()) #else System.Text.Encoding.GetEncoding(n) #endif fsharp-3.0.34/src/absil/ilmorph.fsi0000775000175000017500000000520612260314606016134 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// A set of "IL rewrites" ("morphs"). These map each sub-construct /// of particular ILTypeDefs. The morphing functions are passed /// some details about the context in which the item being /// morphed occurs, e.g. the module being morphed itself, the /// ILTypeDef (possibly nested) where the item occurs, /// the ILMethodDef (if any) where the item occurs. etc. module internal Microsoft.FSharp.Compiler.AbstractIL.Morphs open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL type 'T morph = 'T -> 'T /// Morph each scope reference inside a type signature val morphILScopeRefsInILTypeRef: ILScopeRef morph -> ILTypeRef -> ILTypeRef val morphILMethodDefs: ILMethodDef morph -> ILMethodDefs -> ILMethodDefs /// nb. does not do nested tdefs val morphILTypeDefs: ILTypeDef morph -> ILTypeDefs -> ILTypeDefs val morphExpandILTypeDefs: (ILTypeDef -> ILTypeDef list) -> ILTypeDefs -> ILTypeDefs /// Morph all tables of ILTypeDefs in "ILModuleDef" val morphILTypeDefsInILModule: ILTypeDefs morph -> ILModuleDef -> ILModuleDef /// Morph all type references throughout an entire module. val morphILTypeRefsInILModuleMemoized: ILGlobals -> ILTypeRef morph -> ILModuleDef -> ILModuleDef val morphILScopeRefsInILModuleMemoized: ILGlobals -> ILScopeRef morph -> ILModuleDef -> ILModuleDef val morphILMethodBody: ILMethodBody morph -> ILLazyMethodBody -> ILLazyMethodBody val morphIlxClosureInfo: ILMethodBody morph -> IlxClosureInfo -> IlxClosureInfo val morphILInstrsInILCode: (ILInstr -> ILInstr list) -> ILCode -> ILCode [] type InstrMorph = new : ILInstr list -> InstrMorph new : ILCode -> InstrMorph val morphExpandILInstrsInILCode: (ILCodeLabel -> ILCodeLabel -> ILInstr -> InstrMorph) -> ILCode -> ILCode // REVIEW: Consider removing Post-Dev11 M3 val enablemorphCustomAttributeData : unit -> unit val disablemorphCustomAttributeData : unit -> unit fsharp-3.0.34/src/absil/zmap.fs0000775000175000017500000000350312260314606015256 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open Internal.Utilities open Internal.Utilities.Collections.Tagged open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System.Collections.Generic /// Maps with a specific comparison function type internal Zmap<'Key,'T> = Internal.Utilities.Collections.Tagged.Map<'Key,'T> [] module internal Zmap = let empty (ord: IComparer<'T>) = Map<_,_,_>.Empty(ord) let add k v (m:Zmap<_,_>) = m.Add(k,v) let find k (m:Zmap<_,_>) = m.[k] let tryFind k (m:Zmap<_,_>) = m.TryFind(k) let remove k (m:Zmap<_,_>) = m.Remove(k) let mem k (m:Zmap<_,_>) = m.ContainsKey(k) let iter f (m:Zmap<_,_>) = m.Iterate(f) let first f (m:Zmap<_,_>) = m.First(fun k v -> if f k v then Some (k,v) else None) let exists f (m:Zmap<_,_>) = m.Exists(f) let forall f (m:Zmap<_,_>) = m.ForAll(f) let map f (m:Zmap<_,_>) = m.MapRange(f) let mapi f (m:Zmap<_,_>) = m.Map(f) let fold f (m:Zmap<_,_>) x = m.Fold f x let toList (m:Zmap<_,_>) = m.ToList() let foldSection lo hi f (m:Zmap<_,_>) x = m.FoldSection lo hi f x let isEmpty (m:Zmap<_,_>) = m.IsEmpty let fmap f z (m:Zmap<_,_>) = let m,z = m.FoldAndMap (fun k v z -> let z,v' = f z k v in v',z) z in z,m let choose f (m:Zmap<_,_>) = m.First(f) let chooseL f (m:Zmap<_,_>) = m.Fold (fun k v s -> match f k v with None -> s | Some x -> x::s) [] let ofList m xs = List.fold (fun m (k,v) -> add k v m) (empty m) xs let ofFlatList m xs = FlatList.fold (fun m (k,v) -> add k v m) (empty m) xs let keys m = chooseL (fun k _ -> Some k) m let values m = chooseL (fun _ v -> Some v) m let memberOf m k = mem k m fsharp-3.0.34/src/absil/ilprint.fsi0000775000175000017500000000167112260314606016145 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Printer for the abstract syntax. module internal Microsoft.FSharp.Compiler.AbstractIL.ILAsciiWriter open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open System.IO #if DEBUG val public output_module : TextWriter -> ILModuleDef -> unit #endif fsharp-3.0.34/src/absil/il.fs0000775000175000017500000062041112260314606014716 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.IL #nowarn "49" #nowarn "343" // The type 'ILAssemblyRef' implements 'System.IComparable' explicitly but provides no corresponding override for 'Object.Equals'. #nowarn "346" // The struct, record or union type 'IlxExtensionType' has an explicit implementation of 'Object.Equals'. ... open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open System.Collections.Generic open System.Collections let logging = false // Officially supported way to detect if we are running on Mono. // See http://www.mono-project.com/FAQ:_Technical // "How can I detect if am running in Mono?" section let runningOnMono = try System.Type.GetType("Mono.Runtime") <> null with e-> // Must be robust in the case that someone else has installed a handler into System.AppDomain.OnTypeResolveEvent // that is not reliable. // This is related to bug 5506--the issue is actually a bug in VSTypeResolutionService.EnsurePopulated which is // called by OnTypeResolveEvent. The function throws a NullReferenceException. I'm working with that team to get // their issue fixed but we need to be robust here anyway. false let _ = if logging then dprintn "* warning: Il.logging is on" let isNil x = match x with [] -> true | _ -> false let nonNil x = match x with [] -> false | _ -> true let int_order = LanguagePrimitives.FastGenericComparer let notlazy v = Lazy.CreateFromValue v /// A little ugly, but the idea is that if a data structure does not /// contain lazy values then we don't add laziness. So if the thing to map /// is already evaluated then immediately apply the function. let lazyMap f (x:Lazy<_>) = if x.IsValueCreated then notlazy (f (x.Force())) else lazy (f (x.Force())) // -------------------------------------------------------------------- // Utilities: type names // -------------------------------------------------------------------- let splitNameAt (nm:string) idx = if idx < 0 then failwith "splitNameAt: idx < 0"; let last = nm.Length - 1 if idx > last then failwith "splitNameAt: idx > last"; (nm.Substring(0,idx)), (if idx < last then nm.Substring (idx+1,last - idx) else "") let rec splitNamespaceAux (nm:string) = match nm.IndexOf '.' with | -1 -> [nm] | idx -> let s1,s2 = splitNameAt nm idx s1::splitNamespaceAux s2 /// Global State. All namespace splits ever seen // ++GLOBAL MUTABLE STATE let memoizeNamespaceTable = new Dictionary(10) // ++GLOBAL MUTABLE STATE let memoizeNamespaceRightTable = new Dictionary(100) let splitNamespace nm = let mutable res = Unchecked.defaultof<_> let ok = memoizeNamespaceTable.TryGetValue(nm,&res) if ok then res else let x = splitNamespaceAux nm (memoizeNamespaceTable.[nm] <- x; x) let splitNamespaceMemoized nm = splitNamespace nm // ++GLOBAL MUTABLE STATE let memoizeNamespaceArrayTable = Dictionary(10) let splitNamespaceToArray nm = let mutable res = Unchecked.defaultof<_> let ok = memoizeNamespaceArrayTable.TryGetValue(nm,&res) if ok then res else let x = Array.ofList (splitNamespace nm) (memoizeNamespaceArrayTable.[nm] <- x; x) let splitILTypeName (nm:string) = match nm.LastIndexOf '.' with | -1 -> [],nm | idx -> let s1,s2 = splitNameAt nm idx splitNamespace s1,s2 let emptyStringArray = ([| |] : string[]) // Duplciate of comment in import.fs: // The type names that flow to the point include the "mangled" type names used for static parameters for provided types. // For example, // Foo.Bar,"1.0" // This is because the ImportSystemType code goes via Abstract IL type references. Ultimately this probably isn't // the best way to do things. let splitILTypeNameWithPossibleStaticArguments (nm:string) = let nm,suffix = match nm.IndexOf ',' with | -1 -> nm, None | idx -> let s1, s2 = splitNameAt nm idx in s1, Some s2 let nsp,nm = match nm.LastIndexOf '.' with | -1 -> emptyStringArray,nm | idx -> let s1,s2 = splitNameAt nm idx splitNamespaceToArray s1,s2 nsp, (match suffix with None -> nm | Some s -> nm + "," + s) (* splitILTypeNameWithPossibleStaticArguments "Foo" = ([| |], "Foo") splitILTypeNameWithPossibleStaticArguments "Foo.Bar" = ([| "Foo" |], "Bar") splitILTypeNameWithPossibleStaticArguments "Foo.Bar,3" = ([| "Foo" |], "Bar,3") splitILTypeNameWithPossibleStaticArguments "Foo.Bar," = ([| "Foo" |], "Bar,") splitILTypeNameWithPossibleStaticArguments "Foo.Bar,\"1.0\"" = ([| "Foo" |], "Bar,\"1.0\"") splitILTypeNameWithPossibleStaticArguments "Foo.Bar.Bar,\"1.0\"" = ([| "Foo"; "Bar" |], "Bar,\"1.0\"") *) let unsplitTypeName (ns,n) = match ns with | [] -> String.concat "." ns + "." + n | _ -> n let splitTypeNameRightAux nm = if String.contains nm '.' then let idx = String.rindex nm '.' let s1,s2 = splitNameAt nm idx Some s1,s2 else None, nm let splitTypeNameRight nm = let mutable res = Unchecked.defaultof<_> let ok = memoizeNamespaceRightTable.TryGetValue(nm,&res) if ok then res else let x = splitTypeNameRightAux nm (memoizeNamespaceRightTable.[nm] <- x; x) // -------------------------------------------------------------------- // Ordered lists with a lookup table // -------------------------------------------------------------------- /// This is used to store event, property and field maps. /// /// Review: this is not such a great data structure. type LazyOrderedMultiMap<'Key,'Data when 'Key : equality>(keyf : 'Data -> 'Key, lazyItems : Lazy<'Data list>) = let quickMap= lazyItems |> lazyMap (fun entries -> let t = new Dictionary<_,_>(entries.Length, HashIdentity.Structural) do entries |> List.iter (fun y -> let key = keyf y in t.[key] <- y :: (if t.ContainsKey(key) then t.[key] else [])) t) member self.Entries() = lazyItems.Force() member self.Add(y) = new LazyOrderedMultiMap<'Key,'Data>(keyf, lazyItems |> lazyMap (fun x -> y :: x)) member self.Filter(f) = new LazyOrderedMultiMap<'Key,'Data>(keyf, lazyItems |> lazyMap (List.filter f)) member self.Item with get(x) = let t = quickMap.Force() in if t.ContainsKey x then t.[x] else [] //--------------------------------------------------------------------- // SHA1 hash-signing algorithm. Used to get the public key token from // the public key. //--------------------------------------------------------------------- let b0 n = (n &&& 0xFF) let b1 n = ((n >>> 8) &&& 0xFF) let b2 n = ((n >>> 16) &&& 0xFF) let b3 n = ((n >>> 24) &&& 0xFF) module SHA1 = let inline (>>>&) (x:int) (y:int) = int32 (uint32 x >>> y) let f(t,b,c,d) = if t < 20 then (b &&& c) ||| ((~~~b) &&& d) else if t < 40 then b ^^^ c ^^^ d else if t < 60 then (b &&& c) ||| (b &&& d) ||| (c &&& d) else b ^^^ c ^^^ d let k0to19 = 0x5A827999 let k20to39 = 0x6ED9EBA1 let k40to59 = 0x8F1BBCDC let k60to79 = 0xCA62C1D6 let k t = if t < 20 then k0to19 elif t < 40 then k20to39 elif t < 60 then k40to59 else k60to79 type chan = SHABytes of byte[] type sha_instream = { stream: chan; mutable pos: int; mutable eof: bool; } let rot_left32 x n = (x <<< n) ||| (x >>>& (32-n)) let sha_eof sha = sha.eof (* padding and length (in bits!) recorded at end *) let sha_after_eof sha = let n = sha.pos let len = (match sha.stream with | SHABytes s -> s.Length) if n = len then 0x80 else let padded_len = (((len + 9 + 63) / 64) * 64) - 8 if n < padded_len - 8 then 0x0 elif (n &&& 63) = 56 then int32 ((int64 len * int64 8) >>> 56) &&& 0xff elif (n &&& 63) = 57 then int32 ((int64 len * int64 8) >>> 48) &&& 0xff elif (n &&& 63) = 58 then int32 ((int64 len * int64 8) >>> 40) &&& 0xff elif (n &&& 63) = 59 then int32 ((int64 len * int64 8) >>> 32) &&& 0xff elif (n &&& 63) = 60 then int32 ((int64 len * int64 8) >>> 24) &&& 0xff elif (n &&& 63) = 61 then int32 ((int64 len * int64 8) >>> 16) &&& 0xff elif (n &&& 63) = 62 then int32 ((int64 len * int64 8) >>> 8) &&& 0xff elif (n &&& 63) = 63 then (sha.eof <- true; int32 (int64 len * int64 8) &&& 0xff) else 0x0 let sha_read8 sha = let b = match sha.stream with | SHABytes s -> if sha.pos >= s.Length then sha_after_eof sha else int32 s.[sha.pos] sha.pos <- sha.pos + 1; b let sha_read32 sha = let b0 = sha_read8 sha let b1 = sha_read8 sha let b2 = sha_read8 sha let b3 = sha_read8 sha let res = (b0 <<< 24) ||| (b1 <<< 16) ||| (b2 <<< 8) ||| b3 res let sha1_hash sha = let h0 = ref 0x67452301 let h1 = ref 0xEFCDAB89 let h2 = ref 0x98BADCFE let h3 = ref 0x10325476 let h4 = ref 0xC3D2E1F0 let a = ref 0 let b = ref 0 let c = ref 0 let d = ref 0 let e = ref 0 let w = Array.create 80 0x00 while (not (sha_eof sha)) do for i = 0 to 15 do w.[i] <- sha_read32 sha for t = 16 to 79 do w.[t] <- rot_left32 (w.[t-3] ^^^ w.[t-8] ^^^ w.[t-14] ^^^ w.[t-16]) 1; a := !h0; b := !h1; c := !h2; d := !h3; e := !h4; for t = 0 to 79 do let temp = (rot_left32 !a 5) + f(t,!b,!c,!d) + !e + w.[t] + k(t) e := !d; d := !c; c := rot_left32 !b 30; b := !a; a := temp; h0 := !h0 + !a; h1 := !h1 + !b; h2 := !h2 + !c; h3 := !h3 + !d; h4 := !h4 + !e done; (!h0,!h1,!h2,!h3,!h4) let sha1HashBytes s = let (_h0,_h1,_h2,h3,h4) = sha1_hash { stream = SHABytes s; pos = 0; eof = false } // the result of the SHA algorithm is stored in registers 3 and 4 Array.map byte [| b0 h4; b1 h4; b2 h4; b3 h4; b0 h3; b1 h3; b2 h3; b3 h3; |] let sha1HashBytes s = SHA1.sha1HashBytes s // -------------------------------------------------------------------- // ILList // -------------------------------------------------------------------- /// ILList is the type used to store relatively small lists in the Abstract IL data structures, /// i.e. for ILTypes, ILGenericArgs, ILParameters and ILLocals. // This #if starts isolating the representation for "ILTypes", "ILGenericArgs", "ILParameters" and "ILLocals" // with the aim of making it possible to easily switch between using arrays and lists as representations for these. // THis is because many allocations of these small lists appear in memory logs. // // The "obviouos" step is to use arrays instead of lists. However, this is routinely and surprisingly disappointing. // As a result, we haven’t enabled the use of arrays: we had expected this change to give a perf gain, // but it does not! It even gives a small perf loss. We've tried this approach on several other occasions // for other data structures and each time been surprised that there’s no perf gain. It's possible that // arrays-of-references are just not as fast as we expect here: either the runtime check on assignment // into the array, or some kind of write barrier may be degrading performance. // // However, There must surely be some better data structure here than allocating endless linked-list containing one item // each. One option is to use a linked-list structure that stores multiple elements in each allocation, e.g. // // type ThreeList<'T> = T of 'T * 'T * 'T * ThreeList<'T> // // and a similar hack is used as the underlying representation fot List<'T>, where we store a "constant" value to indicate the end // of the sequence. Some of the 'T values would be empty to indicate a partially-filled node. Storing an integer would of course // make things clearer, and allow values-with-null to be stored in the data structure: // // type ThreeList<'T> = T of int * 'T * 'T * 'T * ThreeList<'T> // // Since we haven't quite given up on moving away from lists as yet, the #if below still feels useful // as it isolates the representation of these data structures from the rest of the compiler. // // Note this is similar to the use of "Flat Lists" in the tast.fs data structures where we tried to eliminate // the use of lists in the tast.fs nodes of the compiler, but that also didn't give perf gains. // // If it turns out that we just eventually completely abandon these exercises then we can eliminate this code and // universally replace "ILList" and "FlatList" by "List". #if ABSIL_USES_ARRAY_FOR_ILLIST type ILList<'T> = 'T[] [] module ILList = let inline map f x = Array.map f x let inline mapi f x = Array.mapi f x let inline isEmpty (x:ILList<_>) = x.Length <> 0 let inline toArray (x:ILList<_>) = x let inline ofArray (x:'T[]) = x let inline nth n (x:'T[]) = x.[n] let inline toList (x:ILList<_>) = Array.toList x let inline ofList (x:'T list) = Array.ofList x let inline lengthsEqAndForall2 f x1 x2 = Array.lengthsEqAndForall2 f x1 x2 let inline init n f = Array.init n f let inline empty<'T> = ([| |] :'T[]) let inline iter f (x:'T[]) = Array.iter f x let inline iteri f (x:'T[]) = Array.iteri f x let inline foldBack f (x:'T[]) z = Array.foldBack f x z let inline exists f x = Array.exists f x #endif //#if ABSIL_USES_LIST_FOR_ILLIST type ILList<'T> = 'T list [] module ILList = let inline map f x = List.map f x let inline mapi f x = List.mapi f x let inline isEmpty x = match x with [] -> true | _ -> false let inline toArray (x:ILList<_>) = List.toArray x let inline ofArray (x:'T[]) = List.ofArray x let inline iter f (x:'T list) = List.iter f x let inline iteri f (x:'T list) = List.iteri f x let inline nth (x:'T list) n = List.nth x n let inline toList (x:ILList<_>) = x let inline ofList (x:'T list) = x let inline lengthsEqAndForall2 f x1 x2 = List.lengthsEqAndForall2 f x1 x2 let inline init n f = List.init n f let inline empty<'T> = ([ ] :'T list) let inline foldBack f x z = List.foldBack f x z let inline exists f x = List.exists f x //#endif // ABSIL_USES_LIST_FOR_ILLIST #if ABSIL_USES_THREELIST_FOR_ILLIST type ILList<'T> = ThreeList<'T> [] module ILList = let inline map f x = ThreeList.map f x let inline mapi f x = ThreeList.mapi f x let inline isEmpty x = ThreeList.isEmpty x let inline toArray (x:ILList<_>) = ThreeList.toArray x let inline ofArray (x:'T[]) = ThreeList.ofArray x let inline iter f (x:ILList<'T>) = ThreeList.iter f x let inline iteri f (x:ILList<'T>) = ThreeList.iteri f x let inline toList (x:ILList<_>) = ThreeList.toList x let inline nth (x:ILList<'T>) n = ThreeList.nth x n let inline ofList (x:'T list) = ThreeList.ofList x let inline lengthsEqAndForall2 f x1 x2 = ThreeList.lengthsEqAndForall2 f x1 x2 let inline init n f = ThreeList.init n f let inline empty<'T> = ThreeList.empty<'T> let inline foldBack f x z = ThreeList.foldBack f x z let inline exists f x = ThreeList.exists f x #endif // -------------------------------------------------------------------- // // -------------------------------------------------------------------- type ILVersionInfo = uint16 * uint16 * uint16 * uint16 type Locale = string [] type PublicKey = | PublicKey of byte[] | PublicKeyToken of byte[] member x.IsKey=match x with PublicKey _ -> true | _ -> false member x.IsKeyToken=match x with PublicKeyToken _ -> true | _ -> false member x.Key=match x with PublicKey b -> b | _ -> invalidOp "not a key" member x.KeyToken=match x with PublicKeyToken b -> b | _ -> invalidOp"not a key token" member x.ToToken() = match x with | PublicKey bytes -> SHA1.sha1HashBytes bytes | PublicKeyToken token -> token static member KeyAsToken(k) = PublicKeyToken(PublicKey(k).ToToken()) [] type AssemblyRefData = { assemRefName: string; assemRefHash: byte[] option; assemRefPublicKeyInfo: PublicKey option; assemRefRetargetable: bool; assemRefVersion: ILVersionInfo option; assemRefLocale: Locale option; } /// Global state: table of all assembly references keyed by AssemblyRefData let AssemblyRefUniqueStampGenerator = new UniqueStampGenerator() [] type ILAssemblyRef(data) = let uniqueStamp = AssemblyRefUniqueStampGenerator.Encode(data) member x.Name=data.assemRefName member x.Hash=data.assemRefHash member x.PublicKey=data.assemRefPublicKeyInfo member x.Retargetable=data.assemRefRetargetable member x.Version=data.assemRefVersion member x.Locale=data.assemRefLocale member x.UniqueStamp=uniqueStamp override x.GetHashCode() = uniqueStamp override x.Equals(yobj) = ((yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp) interface System.IComparable with override x.CompareTo(yobj) = compare (yobj :?> ILAssemblyRef).UniqueStamp uniqueStamp static member Create(name,hash,publicKey,retargetable,version,locale) = ILAssemblyRef { assemRefName=name; assemRefHash=hash; assemRefPublicKeyInfo=publicKey; assemRefRetargetable=retargetable; assemRefVersion=version; assemRefLocale=locale; } static member FromAssemblyName (aname:System.Reflection.AssemblyName) = let culture = None let locale = None let version = let v = aname.Version Some(uint16 v.Major,uint16 v.Minor,uint16 v.Build,uint16 v.Revision) let key = match aname.GetPublicKeyToken() with | null | [| |] -> None | bytes -> Some (PublicKeyToken bytes) let retargetable = (aname.Flags = System.Reflection.AssemblyNameFlags.Retargetable) ILAssemblyRef.Create(aname.Name,culture,key,retargetable,version,locale) member aref.QualifiedName = let b = new System.Text.StringBuilder(100) let add (s:string) = (b.Append(s) |> ignore) let addC (s:char) = (b.Append(s) |> ignore) add(aref.Name); match aref.Version with | None -> () | Some (a,b,c,d) -> add ", Version="; add (string (int a)) add "."; add (string (int b)) add "."; add (string (int c)) add "."; add (string (int d)) add ", Culture=" match aref.Locale with | None -> add "neutral" | Some b -> add b add ", PublicKeyToken=" match aref.PublicKey with | None -> add "null" | Some pki -> let pkt = pki.ToToken() let convDigit(digit) = let digitc = if digit < 10 then System.Convert.ToInt32 '0' + digit else System.Convert.ToInt32 'a' + (digit - 10) System.Convert.ToChar(digitc) for i = 0 to pkt.Length-1 do let v = pkt.[i] addC (convDigit(System.Convert.ToInt32(v)/16)) addC (convDigit(System.Convert.ToInt32(v)%16)) // retargetable can be true only for system assemblies that definitely have Version if aref.Retargetable then add ", Retargetable=Yes" b.ToString() [] type ILModuleRef = { name: string; hasMetadata: bool; hash: byte[] option; } static member Create(name,hasMetadata,hash) = { name=name; hasMetadata= hasMetadata; hash=hash } member x.Name=x.name member x.HasMetadata=x.hasMetadata member x.Hash=x.hash [] [] type ILScopeRef = | Local | Module of ILModuleRef | Assembly of ILAssemblyRef member x.IsLocalRef = match x with ILScopeRef.Local -> true | _ -> false member x.IsModuleRef = match x with ILScopeRef.Module _ -> true | _ -> false member x.IsAssemblyRef= match x with ILScopeRef.Assembly _ -> true | _ -> false member x.ModuleRef = match x with ILScopeRef.Module x -> x | _ -> failwith "not a module reference" member x.AssemblyRef = match x with ILScopeRef.Assembly x -> x | _ -> failwith "not an assembly reference" member scoref.QualifiedName = match scoref with | ILScopeRef.Local -> "" | ILScopeRef.Module mref -> "module "^mref.Name | ILScopeRef.Assembly aref when aref.Name = "mscorlib" -> "" | ILScopeRef.Assembly aref -> aref.QualifiedName member scoref.QualifiedNameWithNoShortMscorlib = match scoref with | ILScopeRef.Local -> "" | ILScopeRef.Module mref -> "module "+mref.Name | ILScopeRef.Assembly aref -> aref.QualifiedName type ILArrayBound = int32 option type ILArrayBounds = ILArrayBound * ILArrayBound [] type ILArrayShape = | ILArrayShape of ILArrayBounds list (* lobound/size pairs *) member x.Rank = (let (ILArrayShape l) = x in l.Length) static member SingleDimensional = ILArrayShapeStatics.SingleDimensional static member FromRank n = if n = 1 then ILArrayShape.SingleDimensional else ILArrayShape(List.replicate n (Some 0,None)) and ILArrayShapeStatics() = static let singleDimensional = ILArrayShape [(Some 0, None)] static member SingleDimensional = singleDimensional /// Calling conventions. These are used in method pointer types. [] type ILArgConvention = | Default | CDecl | StdCall | ThisCall | FastCall | VarArg [] type ILThisConvention = | Instance | InstanceExplicit | Static [] type ILCallingConv = | Callconv of ILThisConvention * ILArgConvention member x.ThisConv = let (Callconv(a,_b)) = x in a member x.BasicConv = let (Callconv(_a,b)) = x in b member x.IsInstance = match x.ThisConv with ILThisConvention.Instance -> true | _ -> false member x.IsInstanceExplicit = match x.ThisConv with ILThisConvention.InstanceExplicit -> true | _ -> false member x.IsStatic = match x.ThisConv with ILThisConvention.Static -> true | _ -> false static member Instance = ILCallingConvStatics.Instance static member Static = ILCallingConvStatics.Static /// Static storage to amortize the allocation of ILCallingConv.Instance and ILCallingConv.Static and ILCallingConvStatics() = static let instanceCallConv = Callconv(ILThisConvention.Instance,ILArgConvention.Default) static let staticCallConv = Callconv(ILThisConvention.Static,ILArgConvention.Default) static member Instance = instanceCallConv static member Static = staticCallConv type ILBoxity = | AsObject | AsValue // IL type references have a pre-computed hash code to enable quick lookup tables during binary generation. [] type ILTypeRef = { trefScope: ILScopeRef; trefEnclosing: string list; trefName: string; hashCode : int mutable asBoxedType: ILType } static member Create(scope,enclosing,name) = let hashCode = hash scope * 17 ^^^ (hash enclosing * 101 <<< 1) ^^^ (hash name * 47 <<< 2) { trefScope=scope; trefEnclosing= enclosing; trefName=name; hashCode=hashCode; asBoxedType = Unchecked.defaultof<_> } member x.Scope = x.trefScope member x.Enclosing = x.trefEnclosing member x.Name = x.trefName member x.ApproxId = x.hashCode member x.AsBoxedType (tspec:ILTypeSpec) = match tspec.tspecInst.Length with | 0 -> let v = x.asBoxedType match box v with | null -> let r = ILType.Boxed tspec x.asBoxedType <- r r | _ -> v | _ -> ILType.Boxed tspec override x.GetHashCode() = x.hashCode override x.Equals(yobj) = let y = (yobj :?> ILTypeRef) (x.ApproxId = y.ApproxId) && (x.Scope = y.Scope) && (x.Name = y.Name) && (x.Enclosing = y.Enclosing) interface System.IComparable with override x.CompareTo(yobj) = let y = (yobj :?> ILTypeRef) let c = compare x.ApproxId y.ApproxId if c <> 0 then c else let c = compare x.Scope y.Scope if c <> 0 then c else let c = compare x.Name y.Name if c <> 0 then c else compare x.Enclosing y.Enclosing member tref.FullName = String.concat "." (tref.Enclosing @ [tref.Name]) member tref.BasicQualifiedName = String.concat "+" (tref.Enclosing @ [ tref.Name ]) member tref.AddQualifiedNameExtensionWithNoShortMscorlib(basic) = let sco = tref.Scope.QualifiedNameWithNoShortMscorlib if sco = "" then basic else String.concat ", " [basic;sco] member tref.QualifiedNameWithNoShortMscorlib = tref.AddQualifiedNameExtensionWithNoShortMscorlib(tref.BasicQualifiedName) member tref.QualifiedName = let basic = tref.BasicQualifiedName let sco = tref.Scope.QualifiedName if sco = "" then basic else String.concat ", " [basic;sco] override x.ToString() = x.FullName and [] ILTypeSpec = { tspecTypeRef: ILTypeRef; /// The type instantiation if the type is generic tspecInst: ILGenericArgs } member x.TypeRef=x.tspecTypeRef member x.Scope=x.TypeRef.Scope member x.Enclosing=x.TypeRef.Enclosing member x.Name=x.TypeRef.Name member x.GenericArgs=x.tspecInst static member Create(tref,inst) = { tspecTypeRef =tref; tspecInst=inst } override x.ToString() = x.TypeRef.ToString() + (if ILList.isEmpty x.GenericArgs then "" else "<...>") member x.BasicQualifiedName = let tc = x.TypeRef.BasicQualifiedName if ILList.isEmpty x.GenericArgs then tc else tc + "[" + String.concat "," (x.GenericArgs |> ILList.map (fun arg -> "[" + arg.QualifiedNameWithNoShortMscorlib + "]")) + "]" member x.AddQualifiedNameExtensionWithNoShortMscorlib(basic) = x.TypeRef.AddQualifiedNameExtensionWithNoShortMscorlib(basic) member x.FullName=x.TypeRef.FullName and [] ILType = | Void | Array of ILArrayShape * ILType | Value of ILTypeSpec | Boxed of ILTypeSpec | Ptr of ILType | Byref of ILType | FunctionPointer of ILCallingSignature | TypeVar of uint16 | Modified of bool * ILTypeRef * ILType member x.BasicQualifiedName = match x with | ILType.TypeVar n -> "!" + string n | ILType.Modified(_,_ty1,ty2) -> ty2.BasicQualifiedName | ILType.Array (ILArrayShape(s),ty) -> ty.BasicQualifiedName + "[" + System.String(',',s.Length-1) + "]" | ILType.Value tr | ILType.Boxed tr -> tr.BasicQualifiedName | ILType.Void -> "void" | ILType.Ptr _ty -> failwith "unexpected pointer type" | ILType.Byref _ty -> failwith "unexpected byref type" | ILType.FunctionPointer _mref -> failwith "unexpected function pointer type" member x.AddQualifiedNameExtensionWithNoShortMscorlib(basic) = match x with | ILType.TypeVar _n -> basic | ILType.Modified(_,_ty1,ty2) -> ty2.AddQualifiedNameExtensionWithNoShortMscorlib(basic) | ILType.Array (ILArrayShape(_s),ty) -> ty.AddQualifiedNameExtensionWithNoShortMscorlib(basic) | ILType.Value tr | ILType.Boxed tr -> tr.AddQualifiedNameExtensionWithNoShortMscorlib(basic) | ILType.Void -> failwith "void" | ILType.Ptr _ty -> failwith "unexpected pointer type" | ILType.Byref _ty -> failwith "unexpected byref type" | ILType.FunctionPointer _mref -> failwith "unexpected function pointer type" member x.QualifiedNameWithNoShortMscorlib = x.AddQualifiedNameExtensionWithNoShortMscorlib(x.BasicQualifiedName) and [] IlxExtensionType = | Ext_typ of obj member x.Value = (let (Ext_typ(v)) = x in v) override x.Equals(yobj) = match yobj with :? IlxExtensionType as y -> Unchecked.equals x.Value y.Value | _ -> false interface System.IComparable with override x.CompareTo(yobj) = match yobj with :? IlxExtensionType as y -> Unchecked.compare x.Value y.Value | _ -> invalidOp "bad comparison" and [] ILCallingSignature = { CallingConv: ILCallingConv; ArgTypes: ILTypes; ReturnType: ILType } and ILGenericArgs = ILList and ILTypes = ILList let emptyILTypes = (ILList.empty : ILTypes) let emptyILGenericArgs = (ILList.empty: ILGenericArgs) let mkILTypes xs = (match xs with [] -> emptyILTypes | _ -> ILList.ofList xs) let mkILGenericArgs xs = (match xs with [] -> emptyILGenericArgs | _ -> ILList.ofList xs) let mkILCallSigRaw (cc,args,ret) = { ArgTypes=args; CallingConv=cc; ReturnType=ret} let mkILCallSig (cc,args,ret) = mkILCallSigRaw(cc, mkILTypes args, ret) let mkILBoxedType (tspec:ILTypeSpec) = tspec.TypeRef.AsBoxedType tspec type ILMethodRef = { mrefParent: ILTypeRef; mrefCallconv: ILCallingConv; mrefGenericArity: int; mrefName: string; mrefArgs: ILTypes; mrefReturn: ILType } member x.EnclosingTypeRef = x.mrefParent member x.CallingConv = x.mrefCallconv member x.Name = x.mrefName member x.GenericArity = x.mrefGenericArity member x.ArgCount = x.mrefArgs.Length member x.ArgTypes = x.mrefArgs member x.ReturnType = x.mrefReturn member x.CallingSignature = mkILCallSigRaw (x.CallingConv,x.ArgTypes,x.ReturnType) static member Create(a,b,c,d,e,f) = { mrefParent= a;mrefCallconv=b;mrefName=c;mrefGenericArity=d; mrefArgs=e;mrefReturn=f } override x.ToString() = x.EnclosingTypeRef.ToString() + "::" + x.Name + "(...)" [] type ILFieldRef = { EnclosingTypeRef: ILTypeRef; Name: string; Type: ILType } override x.ToString() = x.EnclosingTypeRef.ToString() + "::" + x.Name [] type ILMethodSpec = { mspecMethodRef: ILMethodRef; mspecEnclosingType: ILType; mspecMethodInst: ILGenericArgs; } static member Create(a,b,c) = { mspecEnclosingType=a; mspecMethodRef =b; mspecMethodInst=c } member x.MethodRef = x.mspecMethodRef member x.EnclosingType=x.mspecEnclosingType member x.GenericArgs=x.mspecMethodInst member x.Name=x.MethodRef.Name member x.CallingConv=x.MethodRef.CallingConv member x.GenericArity = x.MethodRef.GenericArity member x.FormalArgTypes = x.MethodRef.ArgTypes member x.FormalReturnType = x.MethodRef.ReturnType override x.ToString() = x.MethodRef.ToString() + "(...)" type ILFieldSpec = { FieldRef: ILFieldRef; EnclosingType: ILType } member x.FormalType = x.FieldRef.Type member x.Name = x.FieldRef.Name member x.EnclosingTypeRef = x.FieldRef.EnclosingTypeRef override x.ToString() = x.FieldRef.ToString() // -------------------------------------------------------------------- // Debug info. // -------------------------------------------------------------------- type Guid = byte[] type ILPlatform = | X86 | AMD64 | IA64 type ILSourceDocument = { sourceLanguage: Guid option; sourceVendor: Guid option; sourceDocType: Guid option; sourceFile: string; } static member Create(language,vendor,docType,file) = { sourceLanguage=language; sourceVendor=vendor; sourceDocType=docType; sourceFile=file; } member x.Language=x.sourceLanguage member x.Vendor=x.sourceVendor member x.DocumentType=x.sourceDocType member x.File=x.sourceFile type ILSourceMarker = { sourceDocument: ILSourceDocument; sourceLine: int; sourceColumn: int; sourceEndLine: int; sourceEndColumn: int } static member Create(document, line, column, endLine, endColumn) = { sourceDocument=document; sourceLine=line; sourceColumn=column; sourceEndLine=endLine; sourceEndColumn=endColumn } member x.Document=x.sourceDocument member x.Line=x.sourceLine member x.Column=x.sourceColumn member x.EndLine=x.sourceEndLine member x.EndColumn=x.sourceEndColumn override x.ToString() = sprintf "(%d,%d)-(%d,%d)" x.Line x.Column x.EndLine x.EndColumn // -------------------------------------------------------------------- // Custom attributes // -------------------------------------------------------------------- type ILAttribElem = | String of string option | Bool of bool | Char of char | SByte of int8 | Int16 of int16 | Int32 of int32 | Int64 of int64 | Byte of uint8 | UInt16 of uint16 | UInt32 of uint32 | UInt64 of uint64 | Single of single | Double of double | Null | Type of ILType option | TypeRef of ILTypeRef option | Array of ILType * ILAttribElem list type ILAttributeNamedArg = (string * ILType * bool * ILAttribElem) type ILAttribute = { Method: ILMethodSpec; #if SILVERLIGHT Arguments: ILAttribElem list * ILAttributeNamedArg list #endif Data: byte[] } [] type ILAttributes = | CustomAttrsLazy of Lazy | CustomAttrs of ILAttribute list member x.AsList = match x with | CustomAttrsLazy l -> l.Force() | CustomAttrs l -> l type ILCodeLabel = int // -------------------------------------------------------------------- // Instruction set. // -------------------------------------------------------------------- type ILBasicType = | DT_R | DT_I1 | DT_U1 | DT_I2 | DT_U2 | DT_I4 | DT_U4 | DT_I8 | DT_U8 | DT_R4 | DT_R8 | DT_I | DT_U | DT_REF [] type ILToken = | ILType of ILType | ILMethod of ILMethodSpec | ILField of ILFieldSpec [] type ILConst = | I4 of int32 | I8 of int64 | R4 of single | R8 of double type ILTailcall = | Tailcall | Normalcall type ILAlignment = | Aligned | Unaligned1 | Unaligned2 | Unaligned4 type ILVolatility = | Volatile | Nonvolatile type ILReadonly = | ReadonlyAddress | NormalAddress type ILVarArgs = ILTypes option [] type ILComparisonInstr = | BI_beq | BI_bge | BI_bge_un | BI_bgt | BI_bgt_un | BI_ble | BI_ble_un | BI_blt | BI_blt_un | BI_bne_un | BI_brfalse | BI_brtrue [] type ILInstr = | AI_add | AI_add_ovf | AI_add_ovf_un | AI_and | AI_div | AI_div_un | AI_ceq | AI_cgt | AI_cgt_un | AI_clt | AI_clt_un | AI_conv of ILBasicType | AI_conv_ovf of ILBasicType | AI_conv_ovf_un of ILBasicType | AI_mul | AI_mul_ovf | AI_mul_ovf_un | AI_rem | AI_rem_un | AI_shl | AI_shr | AI_shr_un | AI_sub | AI_sub_ovf | AI_sub_ovf_un | AI_xor | AI_or | AI_neg | AI_not | AI_ldnull | AI_dup | AI_pop | AI_ckfinite | AI_nop | AI_ldc of ILBasicType * ILConst | I_ldarg of uint16 | I_ldarga of uint16 | I_ldind of ILAlignment * ILVolatility * ILBasicType | I_ldloc of uint16 | I_ldloca of uint16 | I_starg of uint16 | I_stind of ILAlignment * ILVolatility * ILBasicType | I_stloc of uint16 | I_br of ILCodeLabel | I_jmp of ILMethodSpec | I_brcmp of ILComparisonInstr * ILCodeLabel * ILCodeLabel (* second label is fall-through *) | I_switch of (ILCodeLabel list * ILCodeLabel) (* last label is fallthrough *) | I_ret | I_call of ILTailcall * ILMethodSpec * ILVarArgs | I_callvirt of ILTailcall * ILMethodSpec * ILVarArgs | I_callconstraint of ILTailcall * ILType * ILMethodSpec * ILVarArgs | I_calli of ILTailcall * ILCallingSignature * ILVarArgs | I_ldftn of ILMethodSpec | I_newobj of ILMethodSpec * ILVarArgs | I_throw | I_endfinally | I_endfilter | I_leave of ILCodeLabel | I_rethrow | I_ldsfld of ILVolatility * ILFieldSpec | I_ldfld of ILAlignment * ILVolatility * ILFieldSpec | I_ldsflda of ILFieldSpec | I_ldflda of ILFieldSpec | I_stsfld of ILVolatility * ILFieldSpec | I_stfld of ILAlignment * ILVolatility * ILFieldSpec | I_ldstr of string | I_isinst of ILType | I_castclass of ILType | I_ldtoken of ILToken | I_ldvirtftn of ILMethodSpec | I_cpobj of ILType | I_initobj of ILType | I_ldobj of ILAlignment * ILVolatility * ILType | I_stobj of ILAlignment * ILVolatility * ILType | I_box of ILType | I_unbox of ILType | I_unbox_any of ILType | I_sizeof of ILType | I_ldelem of ILBasicType | I_stelem of ILBasicType | I_ldelema of ILReadonly * bool * ILArrayShape * ILType | I_ldelem_any of ILArrayShape * ILType | I_stelem_any of ILArrayShape * ILType | I_newarr of ILArrayShape * ILType | I_ldlen | I_mkrefany of ILType | I_refanytype | I_refanyval of ILType | I_break | I_seqpoint of ILSourceMarker | I_arglist | I_localloc | I_cpblk of ILAlignment * ILVolatility | I_initblk of ILAlignment * ILVolatility (* FOR EXTENSIONS, e.g. MS-ILX *) | EI_ilzero of ILType | EI_ldlen_multi of int32 * int32 | I_other of IlxExtensionInstr and IlxExtensionInstr = Ext_instr of obj // -------------------------------------------------------------------- // Helpers for the ILX extensions // -------------------------------------------------------------------- type internal_instr_extension = { internalInstrExtIs: IlxExtensionInstr -> bool; internalInstrExtDests: IlxExtensionInstr -> ILCodeLabel list; internalInstrExtFallthrough: IlxExtensionInstr -> ILCodeLabel option; internalInstrExtIsTailcall: IlxExtensionInstr -> bool; internalInstrExtRelabel: (ILCodeLabel -> ILCodeLabel) -> IlxExtensionInstr -> IlxExtensionInstr; } type ILInstrSetExtension<'T> = { instrExtDests: 'T -> ILCodeLabel list; instrExtFallthrough: 'T -> ILCodeLabel option; instrExtIsTailcall: 'T -> bool; instrExtRelabel: (ILCodeLabel -> ILCodeLabel) -> 'T -> 'T; } let instrExtensions = ref [] let RegisterInstructionSetExtension (ext: ILInstrSetExtension<'T>) = if nonNil !instrExtensions then failwith "RegisterInstructionSetExtension: only one extension currently allowed"; let mk (x: 'T) = Ext_instr (box x) let test (Ext_instr _x) = true let dest (Ext_instr x) = (unbox x : 'T) instrExtensions := { internalInstrExtIs=test; internalInstrExtDests=(fun x -> ext.instrExtDests (dest x)); internalInstrExtFallthrough=(fun x -> ext.instrExtFallthrough (dest x)); internalInstrExtIsTailcall=(fun x -> ext.instrExtIsTailcall (dest x)); internalInstrExtRelabel=(fun f x -> mk (ext.instrExtRelabel f (dest x))); } :: !instrExtensions; mk,test,dest let rec find_extension s f l = let rec look l1 = match l1 with | [] -> failwith ("extension for "+s+" not found") | (h::t) -> match f h with None -> look t | Some res -> res look l type ILDebugMapping = { LocalIndex: int; LocalName: string; } type ILBasicBlock = { Label: ILCodeLabel; Instructions: ILInstr[] } member bb.LastInstruction = let n = bb.Instructions.Length if n = 0 then failwith "last_of_bblock: empty bblock"; bb.Instructions.[n - 1] member x.Fallthrough = match x.LastInstruction with | I_br l | I_brcmp (_,_,l) | I_switch (_,l) -> Some l | I_other e -> find_extension "instr" (fun ext -> if ext.internalInstrExtIs e then Some (ext.internalInstrExtFallthrough e) else None) !instrExtensions | _ -> None type ILCode = | ILBasicBlock of ILBasicBlock | GroupBlock of ILDebugMapping list * ILCode list | RestrictBlock of ILCodeLabel list * ILCode | TryBlock of ILCode * ILExceptionBlock and ILExceptionBlock = | FaultBlock of ILCode | FinallyBlock of ILCode | FilterCatchBlock of (ILFilterBlock * ILCode) list and ILFilterBlock = | TypeFilter of ILType | CodeFilter of ILCode [] type ILLocal = { Type: ILType; IsPinned: bool } type ILLocals = ILList let emptyILLocals = (ILList.empty : ILLocals) let mkILLocals xs = (match xs with [] -> emptyILLocals | _ -> ILList.ofList xs) [] type ILMethodBody = { IsZeroInit: bool; MaxStack: int32; NoInlining: bool; Locals: ILLocals; Code: ILCode; SourceMarker: ILSourceMarker option } [] type ILMemberAccess = | Assembly | CompilerControlled | FamilyAndAssembly | FamilyOrAssembly | Family | Private | Public [] [] type ILFieldInit = | String of string | Bool of bool | Char of uint16 | Int8 of int8 | Int16 of int16 | Int32 of int32 | Int64 of int64 | UInt8 of uint8 | UInt16 of uint16 | UInt32 of uint32 | UInt64 of uint64 | Single of single | Double of double | Null // -------------------------------------------------------------------- // Native Types, for marshalling to the native C interface. // These are taken directly from the ILASM syntax, and don't really // correspond yet to the ECMA Spec (Partition II, 7.4). // -------------------------------------------------------------------- [] [] type ILNativeType = | Empty | Custom of Guid * string * string * byte[] (* guid,nativeTypeName,custMarshallerName,cookieString *) | FixedSysString of int32 | FixedArray of int32 | Currency | LPSTR | LPWSTR | LPTSTR | ByValStr | TBSTR | LPSTRUCT | Struct | Void | Bool | Int8 | Int16 | Int32 | Int64 | Single | Double | Byte | UInt16 | UInt32 | UInt64 | Array of ILNativeType option * (int32 * int32 option) option (* optional idx of parameter giving size plus optional additive i.e. num elems *) | Int | UInt | Method | AsAny | BSTR | IUnknown | IDispatch | Interface | Error | SafeArray of ILNativeVariant * string option | ANSIBSTR | VariantBool and ILNativeVariant = | Empty | Null | Variant | Currency | Decimal | Date | BSTR | LPSTR | LPWSTR | IUnknown | IDispatch | SafeArray | Error | HRESULT | CArray | UserDefined | Record | FileTime | Blob | Stream | Storage | StreamedObject | StoredObject | BlobObject | CF | CLSID | Void | Bool | Int8 | Int16 | Int32 | Int64 | Single | Double | UInt8 | UInt16 | UInt32 | UInt64 | PTR | Array of ILNativeVariant | Vector of ILNativeVariant | Byref of ILNativeVariant | Int | UInt type ILSecurityAction = | Request | Demand | Assert | Deny | PermitOnly | LinkCheck | InheritCheck | ReqMin | ReqOpt | ReqRefuse | PreJitGrant | PreJitDeny | NonCasDemand | NonCasLinkDemand | NonCasInheritance | LinkDemandChoice | InheritanceDemandChoice | DemandChoice type ILPermission = | PermissionSet of ILSecurityAction * byte[] type ILPermissions = | SecurityDecls of ILPermission list | SecurityDeclsLazy of Lazy member x.AsList = match x with SecurityDecls m -> m | SecurityDeclsLazy m -> m.Force() [] type PInvokeCharBestFit = | UseAssembly | Enabled | Disabled [] type PInvokeThrowOnUnmappableChar = | UseAssembly | Enabled | Disabled [] type PInvokeCallingConvention = | None | Cdecl | Stdcall | Thiscall | Fastcall | WinApi [] type PInvokeCharEncoding = | None | Ansi | Unicode | Auto [] type PInvokeMethod = { Where: ILModuleRef; Name: string; CallingConv: PInvokeCallingConvention; CharEncoding: PInvokeCharEncoding; NoMangle: bool; LastError: bool; ThrowOnUnmappableChar: PInvokeThrowOnUnmappableChar; CharBestFit: PInvokeCharBestFit } type ILParameter = { Name: string option; Type: ILType; Default: ILFieldInit option; Marshal: ILNativeType option; IsIn: bool; IsOut: bool; IsOptional: bool; CustomAttrs: ILAttributes } type ILParameters = ILList let emptyILParameters = (ILList.empty : ILParameters) let mkILParametersRaw x = (match x with [] -> emptyILParameters | _ -> ILList.ofList x) type ILReturn = { Marshal: ILNativeType option; Type: ILType; CustomAttrs: ILAttributes } type ILOverridesSpec = | OverridesSpec of ILMethodRef * ILType member x.MethodRef = let (OverridesSpec(mr,_ty)) = x in mr member x.EnclosingType = let (OverridesSpec(_mr,ty)) = x in ty type ILMethodVirtualInfo = { IsFinal: bool IsNewSlot: bool IsCheckAccessOnOverride: bool IsAbstract: bool } type MethodKind = | Static | Cctor | Ctor | NonVirtual | Virtual of ILMethodVirtualInfo [] type MethodBody = | IL of ILMethodBody | PInvoke of PInvokeMethod (* platform invoke to native *) | Abstract | Native type ILLazyMethodBody = | ILLazyMethodBody of Lazy member x.Contents = let (ILLazyMethodBody mb) = x in mb.Force() [] type MethodCodeKind = | IL | Native | Runtime let mkMethBodyAux mb = ILLazyMethodBody (Lazy.CreateFromValue mb) let mkMethBodyLazyAux mb = ILLazyMethodBody mb let typesOfILParamsRaw (ps:ILParameters) : ILTypes = ps |> ILList.map (fun p -> p.Type) let typesOfILParamsList (ps:ILParameter list) = ps |> List.map (fun p -> p.Type) [] type ILGenericVariance = | NonVariant | CoVariant | ContraVariant type ILGenericParameterDef = { Name: string; Constraints: ILTypes; Variance: ILGenericVariance; HasReferenceTypeConstraint: bool; CustomAttrs : ILAttributes; HasNotNullableValueTypeConstraint: bool; HasDefaultConstructorConstraint: bool; } override x.ToString() = x.Name type ILGenericParameterDefs = ILGenericParameterDef list [] type ILMethodDef = { Name: string; mdKind: MethodKind; CallingConv: ILCallingConv; Parameters: ILParameters; Return: ILReturn; Access: ILMemberAccess; mdBody: ILLazyMethodBody; mdCodeKind: MethodCodeKind; IsInternalCall: bool; IsManaged: bool; IsForwardRef: bool; SecurityDecls: ILPermissions; HasSecurity: bool; IsEntryPoint:bool; IsReqSecObj: bool; IsHideBySig: bool; IsSpecialName: bool; IsUnmanagedExport: bool; IsSynchronized: bool; IsPreserveSig: bool; IsMustRun: bool; IsNoInline: bool; GenericParams: ILGenericParameterDefs; CustomAttrs: ILAttributes; } member x.ParameterTypes = typesOfILParamsRaw x.Parameters // Whidbey feature: SafeHandle finalizer must be run member md.Code = match md.mdBody.Contents with | MethodBody.IL il-> Some il.Code | _ -> None member x.IsIL = match x.mdBody.Contents with | MethodBody.IL _ -> true | _ -> false member x.Locals = match x.mdBody.Contents with | MethodBody.IL il -> il.Locals | _ -> emptyILLocals member x.MethodBody = match x.mdBody.Contents with MethodBody.IL il -> il | _ -> failwith "not IL" member x.SourceMarker = x.MethodBody.SourceMarker member x.MaxStack = x.MethodBody.MaxStack member x.IsZeroInit = x.MethodBody.IsZeroInit member x.IsClassInitializer = match x.mdKind with | MethodKind.Cctor -> true | _ -> false member x.IsConstructor = match x.mdKind with | MethodKind.Ctor -> true | _ -> false member x.IsStatic = match x.mdKind with | MethodKind.Static -> true | _ -> false member x.IsNonVirtualInstance = match x.mdKind with | MethodKind.NonVirtual -> true | _ -> false member x.IsVirtual = match x.mdKind with | MethodKind.Virtual _ -> true | _ -> false member x.IsFinal = match x.mdKind with | MethodKind.Virtual v -> v.IsFinal | _ -> invalidOp "not virtual" member x.IsNewSlot = match x.mdKind with | MethodKind.Virtual v -> v.IsNewSlot | _ -> invalidOp "not virtual" member x.IsCheckAccessOnOverride= match x.mdKind with | MethodKind.Virtual v -> v.IsCheckAccessOnOverride | _ -> invalidOp "not virtual" member x.IsAbstract = match x.mdKind with | MethodKind.Virtual v -> v.IsAbstract | _ -> invalidOp "not virtual" member md.CallingSignature = mkILCallSigRaw (md.CallingConv,md.ParameterTypes,md.Return.Type) /// Index table by name and arity. type MethodDefMap = Map [] type ILMethodDefs = | Methods of Lazy interface IEnumerable with member x.GetEnumerator() = ((x :> IEnumerable).GetEnumerator() :> IEnumerator) interface IEnumerable with member x.GetEnumerator() = let (Methods(lms)) = x let ms,_ = lms.Force() (ms :> IEnumerable).GetEnumerator() member x.AsList = Seq.toList x member x.FindByName nm = let (Methods lpmap) = x let t = snd (Lazy.force lpmap) Map.tryFindMulti nm t member x.FindByNameAndArity (nm,arity) = x.FindByName nm |> List.filter (fun x -> x.Parameters.Length = arity) [] type ILEventDef = { Type: ILType option; Name: string; IsRTSpecialName: bool; IsSpecialName: bool; AddMethod: ILMethodRef; RemoveMethod: ILMethodRef; FireMethod: ILMethodRef option; OtherMethods: ILMethodRef list; CustomAttrs: ILAttributes; } (* Index table by name. *) [] type ILEventDefs = | Events of LazyOrderedMultiMap member x.AsList = let (Events t) = x in t.Entries() member x.LookupByName s = let (Events t) = x in t.[s] [] type ILPropertyDef = { Name: string; IsRTSpecialName: bool; IsSpecialName: bool; SetMethod: ILMethodRef option; GetMethod: ILMethodRef option; CallingConv: ILThisConvention; Type: ILType; Init: ILFieldInit option; Args: ILTypes; CustomAttrs: ILAttributes; } // Index table by name. [] type ILPropertyDefs = | Properties of LazyOrderedMultiMap member x.AsList = let (Properties t) = x in t.Entries() member x.LookupByName s = let (Properties t) = x in t.[s] [] type ILFieldDef = { Name: string; Type: ILType; IsStatic: bool; Access: ILMemberAccess; Data: byte[] option; LiteralValue: ILFieldInit option; Offset: int32 option; IsSpecialName: bool; Marshal: ILNativeType option; NotSerialized: bool; IsLiteral: bool ; IsInitOnly: bool; CustomAttrs: ILAttributes; } // Index table by name. Keep a canonical list to make sure field order is not disturbed for binary manipulation. type ILFieldDefs = | Fields of LazyOrderedMultiMap member x.AsList = let (Fields t) = x in t.Entries() member x.LookupByName s = let (Fields t) = x in t.[s] type ILMethodImplDef = { Overrides: ILOverridesSpec; OverrideBy: ILMethodSpec } // Index table by name and arity. type ILMethodImplDefs = | MethodImpls of Lazy member x.AsList = let (MethodImpls ltab) = x in Map.foldBack (fun _x y r -> y@r) (ltab.Force()) [] and MethodImplsMap = Map [] type ILTypeDefLayout = | Auto | Sequential of ILTypeDefLayoutInfo | Explicit of ILTypeDefLayoutInfo (* REVIEW: add field info here *) and ILTypeDefLayoutInfo = { Size: int32 option; Pack: uint16 option } [] type ILTypeInit = | BeforeField | OnAny [] type ILDefaultPInvokeEncoding = | Ansi | Auto | Unicode type ILTypeDefAccess = | Public | Private | Nested of ILMemberAccess [] type ILTypeDefKind = | Class | ValueType | Interface | Enum | Delegate | Other of IlxExtensionTypeKind and IlxExtensionTypeKind = Ext_type_def_kind of obj type internal_type_def_kind_extension = { internalTypeDefKindExtIs: IlxExtensionTypeKind -> bool; } [] type ILTypeDef = { tdKind: ILTypeDefKind; Name: string; GenericParams: ILGenericParameterDefs; (* class is generic *) Access: ILTypeDefAccess; IsAbstract: bool; IsSealed: bool; IsSerializable: bool; IsComInterop: bool; (* Class or interface generated for COM interop *) Layout: ILTypeDefLayout; IsSpecialName: bool; Encoding: ILDefaultPInvokeEncoding; NestedTypes: ILTypeDefs; Implements: ILTypes; Extends: ILType option; Methods: ILMethodDefs; SecurityDecls: ILPermissions; HasSecurity: bool; Fields: ILFieldDefs; MethodImpls: ILMethodImplDefs; InitSemantics: ILTypeInit; Events: ILEventDefs; Properties: ILPropertyDefs; CustomAttrs: ILAttributes; } member x.IsClass = (match x.tdKind with ILTypeDefKind.Class -> true | _ -> false) member x.IsInterface = (match x.tdKind with ILTypeDefKind.Interface -> true | _ -> false) member x.IsEnum = (match x.tdKind with ILTypeDefKind.Enum -> true | _ -> false) member x.IsDelegate = (match x.tdKind with ILTypeDefKind.Delegate -> true | _ -> false) member tdef.IsStructOrEnum = match tdef.tdKind with | ILTypeDefKind.ValueType | ILTypeDefKind.Enum -> true | _ -> false and ILTypeDefs = | TypeDefTable of Lazy<(string list * string * ILAttributes * Lazy) array> * Lazy interface IEnumerable with member x.GetEnumerator() = ((x :> IEnumerable).GetEnumerator() :> IEnumerator) interface IEnumerable with member x.GetEnumerator() = let (TypeDefTable (larr,_tab)) = x let tds = seq { for (_,_,_,td) in larr.Force() -> td.Force() } tds.GetEnumerator() member x.AsList = Seq.toList x member x.AsListOfLazyTypeDefs = let (TypeDefTable (larr,_tab)) = x in larr.Force() |> Array.toList member x.FindByName nm = let (TypeDefTable (_,m)) = x let ns,n = splitILTypeName nm m.Force().[ns].[n].Force() /// keyed first on namespace then on type name. The namespace is often a unique key for a given type map. and ILTypeDefsMap = Map>> type ILNestedExportedType = { Name: string; Access: ILMemberAccess; Nested: ILNestedExportedTypes; CustomAttrs: ILAttributes } and ILNestedExportedTypes = | ILNestedExportedTypes of Lazy> member x.AsList = let (ILNestedExportedTypes ltab) = x in Map.foldBack (fun _x y r -> y::r) (ltab.Force()) [] and [] ILExportedTypeOrForwarder = { ScopeRef: ILScopeRef; Name: string; IsForwarder: bool; Access: ILTypeDefAccess; Nested: ILNestedExportedTypes; CustomAttrs: ILAttributes } and ILExportedTypesAndForwarders = | ILExportedTypesAndForwarders of Lazy> member x.AsList = let (ILExportedTypesAndForwarders ltab) = x in Map.foldBack (fun _x y r -> y::r) (ltab.Force()) [] [] type ILResourceAccess = | Public | Private [] type ILResourceLocation = | Local of (unit -> byte[]) | File of ILModuleRef * int32 | Assembly of ILAssemblyRef type ILResource = { Name: string; Location: ILResourceLocation; Access: ILResourceAccess; CustomAttrs: ILAttributes } type ILResources = | ILResources of Lazy member x.AsList = let (ILResources ltab) = x in (ltab.Force()) // -------------------------------------------------------------------- // One module in the "current" assembly // -------------------------------------------------------------------- [] type ILAssemblyLongevity = | Unspecified | Library | PlatformAppDomain | PlatformProcess | PlatformSystem type ILAssemblyManifest = { Name: string; AuxModuleHashAlgorithm: int32; SecurityDecls: ILPermissions; PublicKey: byte[] option; Version: ILVersionInfo option; Locale: Locale option; CustomAttrs: ILAttributes; AssemblyLongevity: ILAssemblyLongevity; DisableJitOptimizations: bool; JitTracking: bool; Retargetable: bool; /// Records the types impemented by other modules. ExportedTypes: ILExportedTypesAndForwarders; /// Records whether the entrypoint resides in another module. EntrypointElsewhere: ILModuleRef option; } type ILModuleDef = { Manifest: ILAssemblyManifest option; CustomAttrs: ILAttributes; Name: string; TypeDefs: ILTypeDefs; SubsystemVersion : int * int UseHighEntropyVA : bool (* Random bits of relatively uninteresting data *) SubSystemFlags: int32; IsDLL: bool; IsILOnly: bool; Platform: ILPlatform option; StackReserveSize: int32 option; Is32Bit: bool; Is32BitPreferred: bool; Is64Bit: bool; VirtualAlignment: int32; PhysicalAlignment: int32; ImageBase: int32; MetadataVersion: string; Resources: ILResources; NativeResources: list>; (* e.g. win32 resources *) } member x.ManifestOfAssembly = match x.Manifest with | Some m -> m | None -> failwith "no manifest. It is possible you are using an auxiliary module of an assembly in a context where the main module of an assembly is expected. Typically the main module of an assembly must be specified first within a list of the modules in an assembly." member m.HasManifest = match m.Manifest with None -> false | _ -> true // -------------------------------------------------------------------- // Add fields and types to tables, with decent error messages // when clashes occur... // -------------------------------------------------------------------- let mkILEmptyGenericParams = ([]: ILGenericParameterDefs) let emptyILGenericArgsList = ([ ]: ILType list) type ILType with member x.TypeSpec = match x with | ILType.Boxed tr | ILType.Value tr -> tr | _ -> invalidOp "not a nominal type" member x.Boxity = match x with | ILType.Boxed _ -> AsObject | ILType.Value _ -> AsValue | _ -> invalidOp "not a nominal type" member x.TypeRef = match x with | ILType.Boxed tspec | ILType.Value tspec -> tspec.TypeRef | _ -> invalidOp "not a nominal type" member x.IsNominal = match x with | ILType.Boxed _ | ILType.Value _ -> true | _ -> false member x.GenericArgs = match x with | ILType.Boxed tspec | ILType.Value tspec -> tspec.GenericArgs | _ -> emptyILGenericArgs member x.IsTyvar = match x with | ILType.TypeVar _ -> true | _ -> false // -------------------------------------------------------------------- // Make ILTypeRefs etc. // -------------------------------------------------------------------- let mkILNestedTyRef (scope,l,nm) = ILTypeRef.Create(scope,l,nm) let mkILTyRef (scope,nm) = mkILNestedTyRef (scope,[],nm) type ILGenericArgsList = ILType list let mkILTySpecRaw (tref,inst) = ILTypeSpec.Create(tref, inst) let mkILTySpec (tref,inst) = mkILTySpecRaw (tref, mkILGenericArgs inst) let mkILNonGenericTySpec tref = mkILTySpec (tref,[]) let mkILTyRefInTyRef (tref:ILTypeRef,nm) = mkILNestedTyRef (tref.Scope,tref.Enclosing@[tref.Name],nm) let mkILTy boxed tspec = match boxed with AsObject -> mkILBoxedType tspec | _ -> ILType.Value tspec let mkILNamedTy vc tref tinst = mkILTy vc (ILTypeSpec.Create(tref, mkILGenericArgs tinst)) let mkILNamedTyRaw vc tref tinst = mkILTy vc (ILTypeSpec.Create(tref, tinst)) let mkILValueTy tref tinst = mkILNamedTy AsValue tref tinst let mkILBoxedTy tref tinst = mkILNamedTy AsObject tref tinst let mkILBoxedTyRaw tref tinst = mkILNamedTyRaw AsObject tref tinst let mkILNonGenericValueTy tref = mkILNamedTy AsValue tref [] let mkILNonGenericBoxedTy tref = mkILNamedTy AsObject tref [] type ILTypeDefKindExtension<'T> = | TypeDefKindExtension let type_def_kind_extensions = ref [] let RegisterTypeDefKindExtension (TypeDefKindExtension : ILTypeDefKindExtension<'T>) = if nonNil !type_def_kind_extensions then failwith "define_type_extension: only one extension currently allowed"; let mk (x:'T) = Ext_type_def_kind (box x) let test (Ext_type_def_kind _x) = true let dest (Ext_type_def_kind x) = (unbox x: 'T) type_def_kind_extensions := { internalTypeDefKindExtIs=test;} :: !type_def_kind_extensions; mk,test,dest // -------------------------------------------------------------------- // Making assembly, module and file references // -------------------------------------------------------------------- let mkSimpleAssRef n = ILAssemblyRef.Create(n, None, None, false, None, None) let mkSimpleModRef n = ILModuleRef.Create(n, true, None) let module_name_of_scoref = function | ILScopeRef.Module(mref) -> mref.Name | _ -> failwith "module_name_of_scoref" // -------------------------------------------------------------------- // The toplevel class of a module is called "" // // REVIEW: the following comments from the ECMA Spec (Parition II, Section 9.8) // // "For an ordinary type, if the metadata merges two definitions // of the same type, it simply discards one definition on the // assumption they are equivalent and that any anomaly will be // discovered when the type is used. For the special class that // holds global members, however, members are unioned across all // modules at merge time. If the same name appears to be defined // for cross-module use in multiple modules then there is an // error. In detail: // - If no member of the same kind (field or method), name, and // signature exists, then add this member to the output class. // - If there are duplicates and no more than one has an // accessibility other than compilercontrolled, then add them // all in the output class. // - If there are duplicates and two or more have an accessibility // other than compilercontrolled an error has occurred." // -------------------------------------------------------------------- let typeNameForGlobalFunctions = "" let mkILTypeForGlobalFunctions scoref = mkILBoxedType (mkILNonGenericTySpec (ILTypeRef.Create(scoref,[],typeNameForGlobalFunctions))) let isTypeNameForGlobalFunctions d = (d = typeNameForGlobalFunctions) let mkILMethRefRaw (tref,callconv,nm,gparams,args,rty) = { mrefParent=tref; mrefCallconv=callconv; mrefGenericArity=gparams; mrefName=nm; mrefArgs=args; mrefReturn=rty} let mkILMethRef (tref,callconv,nm,gparams,args,rty) = mkILMethRefRaw (tref,callconv,nm,gparams,mkILTypes args,rty) let mkILMethSpecForMethRefInTyRaw (mref,typ,minst) = { mspecMethodRef=mref; mspecEnclosingType=typ; mspecMethodInst=minst } let mkILMethSpecForMethRefInTy (mref,typ,minst) = mkILMethSpecForMethRefInTyRaw (mref,typ,mkILGenericArgs minst) let mkILMethSpec (mref, vc, tinst, minst) = mkILMethSpecForMethRefInTy (mref,mkILNamedTy vc mref.EnclosingTypeRef tinst, minst) let mk_mspec_in_tref (tref,vc,cc,nm,args,rty,tinst,minst) = mkILMethSpec (mkILMethRef ( tref,cc,nm,List.length minst,args,rty),vc,tinst,minst) let mkILMethSpecInTyRaw (typ:ILType, cc, nm, args, rty, minst:ILGenericArgs) = mkILMethSpecForMethRefInTyRaw (mkILMethRefRaw (typ.TypeRef,cc,nm,minst.Length,args,rty),typ,minst) let mkILMethSpecInTy (typ:ILType, cc, nm, args, rty, minst) = mkILMethSpecForMethRefInTy (mkILMethRef (typ.TypeRef,cc,nm,List.length minst,args,rty),typ,minst) let mkILNonGenericMethSpecInTy (typ,cc,nm,args,rty) = mkILMethSpecInTy (typ,cc,nm,args,rty,[]) let mkILInstanceMethSpecInTy (typ:ILType,nm,args,rty,minst) = mkILMethSpecInTy (typ, ILCallingConv.Instance, nm, args, rty, minst) let mkILNonGenericInstanceMethSpecInTy (typ:ILType,nm,args,rty) = mkILInstanceMethSpecInTy (typ,nm,args,rty,[]) let mkILStaticMethSpecInTy (typ,nm,args,rty,minst) = mkILMethSpecInTy (typ,ILCallingConv.Static,nm,args,rty,minst) let mkILNonGenericStaticMethSpecInTy (typ,nm,args,rty) = mkILStaticMethSpecInTy (typ,nm,args,rty,[]) let mkILCtorMethSpec (tref,args,cinst) = mk_mspec_in_tref(tref,AsObject,ILCallingConv.Instance,".ctor",args,ILType.Void,cinst, []) let mkILCtorMethSpecForTy (ty,args) = mkILMethSpecInTy(ty,ILCallingConv.Instance,".ctor",args,ILType.Void, []) let mkILNonGenericCtorMethSpec (tref,args) = mkILCtorMethSpec (tref,args,[]) // -------------------------------------------------------------------- // Make references to fields // -------------------------------------------------------------------- let mkILFieldRef(tref,nm,ty) = { EnclosingTypeRef=tref; Name=nm; Type=ty} let mkILFieldSpec (tref,ty) = { FieldRef= tref; EnclosingType=ty } let mkILFieldSpecInTy (typ:ILType,nm,fty) = mkILFieldSpec (mkILFieldRef (typ.TypeRef,nm,fty), typ) let emptyILCustomAttrs = CustomAttrs [] let mkILCustomAttrs l = match l with [] -> emptyILCustomAttrs | _ -> CustomAttrs l let mkILComputedCustomAttrs l = CustomAttrsLazy (Lazy.Create l) let andTailness x y = match x with Tailcall when y -> Tailcall | _ -> Normalcall // -------------------------------------------------------------------- // ILAttributes on code blocks (esp. debug info) // -------------------------------------------------------------------- let formatCodeLabel (x:int) = "L"+string x module CodeLabels = let insert (e:ILCodeLabel) l = Zset.add e l let remove e l = Zset.remove e l let fold f s acc = Zset.fold f s acc let add s x = Zset.add s x let addList s xs = Zset.addList s xs let diff l1 l2 = Zset.diff l1 l2 let union l1 l2 = Zset.union l1 l2 let inter (l1:Zset) l2 = Zset.inter l1 l2 let subset (l1:Zset) l2 = Zset.subset l1 l2 let empty = Zset.empty int_order let isNonEmpty s = not (Zset.isEmpty s) let ofList l = Zset.addList l empty let toList l = Zset.elements l // -------------------------------------------------------------------- // Basic operations on code. // -------------------------------------------------------------------- let destinationsOfInstr i = match i with | I_leave l | I_br l -> [l] | I_brcmp (_,l1,l2) -> [l1; l2] | I_switch (ls,l) -> CodeLabels.toList (CodeLabels.ofList (l::ls)) | I_endfinally | I_endfilter | I_ret | I_throw | I_rethrow | I_call (Tailcall,_,_)| I_callvirt (Tailcall,_,_)| I_callconstraint (Tailcall,_,_,_) | I_calli (Tailcall,_,_) -> [] | I_other e -> find_extension "instr" (fun ext -> if ext.internalInstrExtIs e then Some (ext.internalInstrExtDests e) else None) !instrExtensions | _ -> [] let destinationsOfBasicBlock (bblock:ILBasicBlock) = destinationsOfInstr bblock.LastInstruction let instrIsTailcall i = match i with | I_call (Tailcall,_,_)| I_callvirt (Tailcall,_,_) | I_callconstraint (Tailcall,_,_,_) | I_calli (Tailcall,_,_) -> true | I_other e -> find_extension "instr" (fun ext -> if ext.internalInstrExtIs e then Some (ext.internalInstrExtIsTailcall e) else None) !instrExtensions | _ -> false let instrIsBasicBlockEnd i = instrIsTailcall i || match i with | I_leave _ | I_br _ | I_brcmp _ | I_switch _ | I_endfinally | I_endfilter | I_ret | I_throw | I_rethrow -> true | I_other e -> find_extension "instr" (fun ext -> if ext.internalInstrExtIs e then Some (nonNil (ext.internalInstrExtDests e)) else None) !instrExtensions | _ -> false let checks = false let _ = if checks then dprintn "Warning - Il.checks is on" let rec accEntriesOfCode c acc = match c with | ILBasicBlock bb -> CodeLabels.add bb.Label acc | GroupBlock (_,l) -> List.foldBack accEntriesOfCode l acc | RestrictBlock (ls,c) -> CodeLabels.union acc (CodeLabels.diff (entriesOfCodeAsSet c) (CodeLabels.ofList ls)) | TryBlock (l,_r) -> accEntriesOfCode l acc and entriesOfCodeAsSet c = accEntriesOfCode c CodeLabels.empty let rec accExitsOfCode c acc = let basicOutsideLabels = match c with | ILBasicBlock bblock -> CodeLabels.addList (destinationsOfBasicBlock bblock) acc | GroupBlock (_,l) -> List.foldBack accExitsOfCode l acc | RestrictBlock (ls,c) -> CodeLabels.union acc (CodeLabels.diff (exitsOfCodeAsSet c) (CodeLabels.ofList ls)) | TryBlock (l,_r) -> accExitsOfCode l acc CodeLabels.diff basicOutsideLabels (entriesOfCodeAsSet c) and exitsOfCodeAsSet c = accExitsOfCode c CodeLabels.empty let entriesOfCode c = CodeLabels.toList (entriesOfCodeAsSet c) let exitsOfCode c = CodeLabels.toList (exitsOfCodeAsSet c) /// Finds all labels defined within this code block, seeing through restrictions. /// This assumes that labels are unique within the code blocks, even if hidden behind restrictions. /// // Note: Repeats in the list indicate this invariant is broken. let rec accLabelsOfCode acc c = match c with | ILBasicBlock bb -> bb.Label::acc | GroupBlock (_,l) -> List.fold accLabelsOfCode acc l | RestrictBlock (_ls,c) -> accLabelsOfCode acc c | TryBlock (l,r) -> let acc = accLabelsOfCode acc l let acc = accLabelsOfSEH acc r acc and accLabelsOfSEH acc = function | FaultBlock code -> accLabelsOfCode acc code | FinallyBlock code -> accLabelsOfCode acc code | FilterCatchBlock fcodes -> List.fold accLabelsOfFilterCode acc fcodes and accLabelsOfFilterCode acc = function | TypeFilter _,code -> accLabelsOfCode acc code | CodeFilter test,code -> let accA = accLabelsOfCode acc code let accB = accLabelsOfCode accA test accB let labelsOfCode code = accLabelsOfCode [] code (* From the ECMA spec: There are only two ways to enter a try block from outside its lexical body: - Branching to or falling into the try block’s first instruction. The branch may be made using a 37 conditional branch, an unconditional branch, or a leave instruction. 38 - Using a leave instruction from that try’s catch block. In this case, correct CIL code may 39 branch to any instruction within the try block, not just its first instruction, so long as that 40 branch target is not protected by yet another try, nested withing the first *) let checkILCode code = if checks then match code with | RestrictBlock (ls,c') -> (* if not (CodeLabels.subset ls (entriesOfCode c')) then begin dprintn ("* warning: Restricting labels that are not declared in block, e.g. "+ (List.head (CodeLabels.diff ls (entriesOfCode c')))); dprintn ("* warning: Labels in block are: "+ (String.concat "," (entriesOfCode c'))); dprintn ("* warning: Labels being restricted are: "+ (String.concat "," ls)); end; *) let cls = (CodeLabels.inter (CodeLabels.ofList ls) (exitsOfCodeAsSet c')) if (CodeLabels.isNonEmpty cls) then dprintn ("* warning: restricting unsatisfied exits from a block, e.g. "+ formatCodeLabel (List.head (CodeLabels.toList cls))); | TryBlock (_l,r) -> begin match r with | FaultBlock b | FinallyBlock b -> if (CodeLabels.isNonEmpty (CodeLabels.inter (exitsOfCodeAsSet b) (entriesOfCodeAsSet b))) then dprintn "* warning: exits from fault or finally blocks must leave the block"; let n = List.length (entriesOfCode b) if not (n = 1) then dprintn "* warning: zero or more than one entry to a fault or finally block"; | FilterCatchBlock r -> List.iter (fun (flt,z) -> let m = List.length (entriesOfCode z) if not (m = 1) then dprintn "* warning: zero or more than one entry to a catch block"; match flt with | CodeFilter y -> if (CodeLabels.isNonEmpty (exitsOfCodeAsSet y)) then dprintn "* warning: exits exist from filter block - you must always exit using endfinally"; let n = List.length (entriesOfCode y) if not (n = 1) then dprintn "* warning: zero or more than one entry to a filter block"; | TypeFilter _ty -> ()) r; end; | ILBasicBlock bb -> if (Array.length bb.Instructions) = 0 then dprintn ("* warning: basic block " + formatCodeLabel bb.Label + " is empty") elif not (instrIsBasicBlockEnd (bb.Instructions.[Array.length bb.Instructions - 1])) then failwith "* warning: bblock does not end in an appropriate instruction"; | _ -> () match code with | RestrictBlock (labs,c) when (isNil labs) -> c | GroupBlock ([],[c]) -> c | _ -> code let mkBasicBlock bb = ILBasicBlock bb let mkScopeBlock (a,b) = GroupBlock (a,[checkILCode b]) let mkGroupBlockFromCode (internals,codes) = RestrictBlock (internals,checkILCode (GroupBlock ([],codes))) let mkGroupBlock (internals,blocks) = mkGroupBlockFromCode (internals,List.map checkILCode blocks) let mkRestrictBlock lab c = RestrictBlock (CodeLabels.toList (CodeLabels.remove lab (entriesOfCodeAsSet c)),c) let mkTryFinallyBlock (tryblock, enterFinallyLab, finallyBlock) = TryBlock(checkILCode tryblock, FinallyBlock (checkILCode (mkRestrictBlock enterFinallyLab (checkILCode finallyBlock)))) let mkTryFaultBlock (tryblock, entarFaultLab, faultBlock) = TryBlock(checkILCode tryblock, FaultBlock (checkILCode (mkRestrictBlock entarFaultLab (checkILCode faultBlock)))) let mkTryMultiFilterCatchBlock (tryblock, clauses) = TryBlock (checkILCode tryblock, FilterCatchBlock (clauses |> List.map (fun (flt, (enter_catch_lab, catchblock)) -> let fltcode = match flt with | Choice1Of2 (enter_filter_lab, filterblock) -> CodeFilter (checkILCode (mkRestrictBlock enter_filter_lab (checkILCode filterblock))) | Choice2Of2 ty -> TypeFilter ty fltcode, checkILCode (mkRestrictBlock enter_catch_lab (checkILCode catchblock))))) let new_generator () = let i = ref 0 fun _n -> incr i; !i // ++GLOBAL MUTABLE STATE let codeLabelGenerator = (new_generator () : unit -> ILCodeLabel) let generateCodeLabel x = codeLabelGenerator x let uniqueEntryOfCode c = match entriesOfCode c with | [] -> failwith ("uniqueEntryOfCode: no entries to code") | [inlab] -> inlab | labs -> failwith ("uniqueEntryOfCode: need one entry to code, found: "+String.concat "," (List.map formatCodeLabel labs)) let uniqueExitOfCode c = match exitsOfCode c with | [] -> failwith ("uniqueExitOfCode: no exits from code") | [outlab] -> outlab | labs -> failwith ("uniqueExitOfCode: need one exit from code, found: "+String.concat "," (List.map formatCodeLabel labs)) let mkNonBranchingInstrs inplab instrs = checkILCode (mkBasicBlock {Label=inplab; Instructions= Array.ofList instrs}) let mkNonBranchingInstrsThen inplab instrs instr = if nonNil instrs && instrIsBasicBlockEnd (List.last instrs) then failwith "mkNonBranchingInstrsThen: bblock already terminates with a control flow instruction"; mkNonBranchingInstrs inplab (instrs @ [ instr ]) let mkNonBranchingInstrsThenRet inplab instrs = mkNonBranchingInstrsThen inplab instrs I_ret let mkNonBranchingInstrsThenBr inplab instrs lab = mkNonBranchingInstrsThen inplab instrs (I_br lab) let nonBranchingInstrsToCode instrs = let inplab = generateCodeLabel () if nonNil instrs && instrIsBasicBlockEnd (List.last instrs) then mkNonBranchingInstrs inplab instrs else mkNonBranchingInstrsThenRet inplab instrs let joinCode code1 code2 = if not (uniqueExitOfCode code1 = uniqueEntryOfCode code2) then dprintn "* warning: joinCode: exit of code1 is not entry of code 2"; checkILCode (RestrictBlock ([uniqueExitOfCode code1], (checkILCode (mkGroupBlock ([],[ code1; code2 ]))))) // -------------------------------------------------------------------- // Security declarations (2) // -------------------------------------------------------------------- let emptyILSecurityDecls = SecurityDecls [] let mkILSecurityDecls l = match l with [] -> emptyILSecurityDecls | _ -> SecurityDecls l let mkILLazySecurityDecls l = SecurityDeclsLazy l // -------------------------------------------------------------------- // ILX stuff // -------------------------------------------------------------------- let mkILTyvarTy tv = ILType.TypeVar tv let mkILSimpleTypar nm = { Name=nm; Constraints=emptyILTypes; Variance=NonVariant; HasReferenceTypeConstraint=false; HasNotNullableValueTypeConstraint=false; HasDefaultConstructorConstraint=false; CustomAttrs = emptyILCustomAttrs } let gparam_of_gactual (_ga:ILType) = mkILSimpleTypar "T" let mkILFormalTypars (x: ILGenericArgsList) = List.map gparam_of_gactual x let mkILFormalTyparsRaw (x: ILGenericArgs) = ILList.toList (ILList.map gparam_of_gactual x) let mkILFormalGenericArgsRaw (gparams:ILGenericParameterDefs) = ILList.ofList (List.mapi (fun n _gf -> mkILTyvarTy (uint16 n)) gparams) let mkILFormalGenericArgs (gparams:ILGenericParameterDefs) = List.mapi (fun n _gf -> mkILTyvarTy (uint16 n)) gparams let mkILFormalBoxedTy tref gparams = mkILBoxedTy tref (mkILFormalGenericArgs gparams) // -------------------------------------------------------------------- // Operations on class etc. defs. // -------------------------------------------------------------------- let mkRefForNestedILTypeDef scope (enc:ILTypeDef list,td:ILTypeDef) = mkILNestedTyRef(scope, (enc |> List.map (fun etd -> etd.Name)), td.Name) // -------------------------------------------------------------------- // Operations on type tables. // -------------------------------------------------------------------- let getName (ltd: Lazy) = let td = Lazy.force ltd let ns,n = splitILTypeName td.Name (ns,n,td.CustomAttrs,ltd) let addILTypeDefToTable (ns,n,_cas,ltd) tab = let prev = (match Map.tryFind ns tab with | None -> Dictionary<_,_>(1, HashIdentity.Structural) | Some prev -> prev) if prev.ContainsKey n then let msg = sprintf "not unique type %s" (unsplitTypeName (ns,n)); System.Diagnostics.Debug.Assert(false,msg) failwith msg prev.[n] <- ltd; Map.add ns prev tab let addLazyTypeDefToTable ltd larr = lazyMap (fun arr -> Array.ofList (getName ltd :: Array.toList arr)) larr let buildTable larr = lazyMap (fun arr -> Array.foldBack addILTypeDefToTable arr Map.empty) larr let buildTypes larr = TypeDefTable (larr, buildTable larr) (* this is not performance critical *) let addILTypeDef td (TypeDefTable (larr,_ltab)) = buildTypes (addLazyTypeDefToTable (notlazy td) larr) let mkILTypeDefs l = buildTypes (List.map (notlazy >> getName) l |> Array.ofList |> notlazy ) let mkILTypeDefsLazy llist = buildTypes (lazyMap Array.ofList llist) let emptyILTypeDefs = mkILTypeDefs [] // -------------------------------------------------------------------- // Operations on method tables. // // REVIEW: this data structure looks substandard // -------------------------------------------------------------------- let addILMethodToTable (y: ILMethodDef) tab = let key = y.Name let prev = Map.tryFindMulti key tab Map.add key (y::prev) tab let addILMethod_to_pmap y (mds,tab) = y::mds,addILMethodToTable y tab let addILMethod y (Methods lpmap) = Methods (lazyMap (addILMethod_to_pmap y) lpmap) let mkILMethods l = Methods (notlazy (List.foldBack addILMethod_to_pmap l ([],Map.empty))) let mkILMethodsLazy l = Methods (lazy (List.foldBack addILMethod_to_pmap (Lazy.force l) ([],Map.empty))) let emptyILMethods = mkILMethods [] let filterILMethodDefs f (Methods lpmap) = Methods (lazyMap (fun (fs,_) -> let l = List.filter f fs (l, List.foldBack addILMethodToTable l Map.empty)) lpmap) // -------------------------------------------------------------------- // Operations and defaults for modules, assemblies etc. // -------------------------------------------------------------------- let defaultSubSystem = 3 (* this is what comes out of ILDASM on 30/04/2001 *) let defaultPhysAlignment = 512 (* this is what comes out of ILDASM on 30/04/2001 *) let defaultVirtAlignment = 0x2000 (* this is what comes out of ILDASM on 30/04/2001 *) let defaultImageBase = 0x034f0000 (* this is what comes out of ILDASM on 30/04/2001 *) // -------------------------------------------------------------------- // Array types // -------------------------------------------------------------------- let mkILArrTy (ty, shape) = ILType.Array(shape,ty) let mkILArr1DTy ty = mkILArrTy (ty,ILArrayShape.SingleDimensional) let isILArrTy ty = match ty with ILType.Array _ -> true| _ -> false let destILArrTy ty = match ty with ILType.Array(shape,ty) -> (shape,ty) | _ -> failwith "destILArrTy" // -------------------------------------------------------------------- // Sigs of special types built-in // -------------------------------------------------------------------- let tname_Object = "System.Object" let tname_String = "System.String" let tname_StringBuilder = "System.Text.StringBuilder" let tname_AsyncCallback = "System.AsyncCallback" let tname_IAsyncResult = "System.IAsyncResult" let tname_IComparable = "System.IComparable" let tname_Exception = "System.Exception" let tname_Type = "System.Type" let tname_Missing = "System.Reflection.Missing" let tname_Activator = "System.Activator" let tname_SerializationInfo = "System.Runtime.Serialization.SerializationInfo" let tname_StreamingContext = "System.Runtime.Serialization.StreamingContext" let tname_SecurityPermissionAttribute = "System.Security.Permissions.SecurityPermissionAttribute" let tname_Delegate = "System.Delegate" let tname_ValueType = "System.ValueType" let tname_TypedReference = "System.TypedReference" let tname_Enum = "System.Enum" let tname_MulticastDelegate = "System.MulticastDelegate" let tname_Array = "System.Array" let tname_Int64 = "System.Int64" let tname_UInt64 = "System.UInt64" let tname_Int32 = "System.Int32" let tname_UInt32 = "System.UInt32" let tname_Int16 = "System.Int16" let tname_UInt16 = "System.UInt16" let tname_SByte = "System.SByte" let tname_Byte = "System.Byte" let tname_Single = "System.Single" let tname_Double = "System.Double" let tname_Bool = "System.Boolean" let tname_Char = "System.Char" let tname_IntPtr = "System.IntPtr" let tname_UIntPtr = "System.UIntPtr" let tname_RuntimeArgumentHandle = "System.RuntimeArgumentHandle" let tname_RuntimeTypeHandle = "System.RuntimeTypeHandle" let tname_RuntimeMethodHandle = "System.RuntimeMethodHandle" let tname_RuntimeFieldHandle = "System.RuntimeFieldHandle" [] type ILGlobals = { mscorlibScopeRef: ILScopeRef; mscorlibAssemblyName: string; noDebugData: bool; generateDebugBrowsableData: bool; tref_Object: ILTypeRef ; tspec_Object: ILTypeSpec ; typ_Object: ILType ; tref_String: ILTypeRef ; typ_String: ILType ; typ_StringBuilder: ILType ; typ_AsyncCallback: ILType ; typ_IAsyncResult: ILType ; typ_IComparable: ILType ; tref_Type: ILTypeRef ; typ_Type: ILType ; typ_Missing: ILType ; typ_Activator: ILType ; typ_Delegate: ILType ; typ_ValueType: ILType ; typ_Enum: ILType ; tspec_TypedReference: ILTypeSpec ; typ_TypedReference: ILType ; typ_MulticastDelegate: ILType ; typ_Array: ILType ; tspec_Int64: ILTypeSpec ; tspec_UInt64: ILTypeSpec ; tspec_Int32: ILTypeSpec ; tspec_UInt32: ILTypeSpec ; tspec_Int16: ILTypeSpec ; tspec_UInt16: ILTypeSpec ; tspec_SByte: ILTypeSpec ; tspec_Byte: ILTypeSpec ; tspec_Single: ILTypeSpec ; tspec_Double: ILTypeSpec ; tspec_IntPtr: ILTypeSpec ; tspec_UIntPtr: ILTypeSpec ; tspec_Char: ILTypeSpec ; tspec_Bool: ILTypeSpec ; typ_int8: ILType ; typ_int16: ILType ; typ_int32: ILType ; typ_int64: ILType ; typ_uint8: ILType ; typ_uint16: ILType ; typ_uint32: ILType ; typ_uint64: ILType ; typ_float32: ILType ; typ_float64: ILType ; typ_bool: ILType ; typ_char: ILType ; typ_IntPtr: ILType ; typ_UIntPtr: ILType ; typ_RuntimeArgumentHandle: ILType ; typ_RuntimeTypeHandle: ILType ; typ_RuntimeMethodHandle: ILType ; typ_RuntimeFieldHandle: ILType ; typ_Byte: ILType ; typ_Int16: ILType ; typ_Int32: ILType ; typ_Int64: ILType ; typ_SByte: ILType ; typ_UInt16: ILType ; typ_UInt32: ILType ; typ_UInt64: ILType ; typ_Single: ILType ; typ_Double: ILType ; typ_Bool: ILType ; typ_Char: ILType ; typ_SerializationInfo: ILType ; typ_StreamingContext: ILType ; tref_SecurityPermissionAttribute: ILTypeRef ; tspec_Exception: ILTypeSpec ; typ_Exception: ILType ; mutable generatedAttribsCache: ILAttribute list ; mutable debuggerBrowsableNeverAttributeCache : ILAttribute option ; mutable debuggerTypeProxyAttributeCache : ILAttribute option } override x.ToString() = "" let mkNormalCall mspec = I_call (Normalcall, mspec, None) let mkNormalCallvirt mspec = I_callvirt (Normalcall, mspec, None) let mkNormalCallconstraint (ty,mspec) = I_callconstraint (Normalcall, ty, mspec, None) let mkNormalNewobj mspec = I_newobj (mspec, None) /// Comment on common object cache sizes: /// mkLdArg - I can’t imagine any IL method we generate needing more than this /// mkLdLoc - I tried 256, and there were LdLoc allocations left, so I upped it o 512. I didn’t check again. /// mkStLoc - it should be the same as LdLoc (where there’s a LdLoc there must be a StLoc) /// mkLdcInt32 - just a guess let ldargs = [| for i in 0 .. 128 -> I_ldarg (uint16 i) |] let mkLdarg i = if 0us < i && i < uint16 ldargs.Length then ldargs.[int i] else I_ldarg i let mkLdarg0 = mkLdarg 0us let ldlocs = [| for i in 0 .. 512 -> I_ldloc (uint16 i) |] let mkLdloc i = if 0us < i && i < uint16 ldlocs.Length then ldlocs.[int i] else I_ldloc i let stlocs = [| for i in 0 .. 512 -> I_stloc (uint16 i) |] let mkStloc i = if 0us < i && i < uint16 stlocs.Length then stlocs.[int i] else I_stloc i let ldi32s = [| for i in 0 .. 256 -> AI_ldc (DT_I4,ILConst.I4 i) |] let mkLdcInt32 i = if 0 < i && i < ldi32s.Length then ldi32s.[i] else AI_ldc (DT_I4,ILConst.I4 i) let tname_CompilerGeneratedAttribute = "System.Runtime.CompilerServices.CompilerGeneratedAttribute" let tname_DebuggableAttribute = "System.Diagnostics.DebuggableAttribute" let mkILGlobals mscorlibScopeRef mscorlibAssemblyNameOpt (noDebugData,generateDebugBrowsableData) = let mscorlibAssemblyName = match mscorlibAssemblyNameOpt with | Some name -> name | None -> (match mscorlibScopeRef with | ILScopeRef.Assembly assref -> assref.Name | _ -> failwith "mkILGlobals: mscorlib ILScopeRef is not an assembly ref") let tref_Object = mkILTyRef (mscorlibScopeRef,tname_Object) let tspec_Object = mkILNonGenericTySpec tref_Object let typ_Object = mkILBoxedType tspec_Object let tref_String = mkILTyRef (mscorlibScopeRef,tname_String) let tspec_String = mkILNonGenericTySpec tref_String let typ_String = mkILBoxedType tspec_String let tref_StringBuilder = mkILTyRef (mscorlibScopeRef,tname_StringBuilder) let tspec_StringBuilder = mkILNonGenericTySpec tref_StringBuilder let typ_StringBuilder = mkILBoxedType tspec_StringBuilder let tref_AsyncCallback = mkILTyRef (mscorlibScopeRef,tname_AsyncCallback) let tspec_AsyncCallback = mkILNonGenericTySpec tref_AsyncCallback let typ_AsyncCallback = mkILBoxedType tspec_AsyncCallback let tref_IAsyncResult = mkILTyRef (mscorlibScopeRef,tname_IAsyncResult) let tspec_IAsyncResult = mkILNonGenericTySpec tref_IAsyncResult let typ_IAsyncResult = mkILBoxedType tspec_IAsyncResult let tref_IComparable = mkILTyRef (mscorlibScopeRef,tname_IComparable) let tspec_IComparable = mkILNonGenericTySpec tref_IComparable let typ_IComparable = mkILBoxedType tspec_IComparable let tref_Exception = mkILTyRef (mscorlibScopeRef,tname_Exception) let tspec_Exception = mkILNonGenericTySpec tref_Exception let typ_Exception = mkILBoxedType tspec_Exception let tref_Type = mkILTyRef(mscorlibScopeRef,tname_Type) let tspec_Type = mkILNonGenericTySpec tref_Type let typ_Type = mkILBoxedType tspec_Type let tref_Missing = mkILTyRef(mscorlibScopeRef,tname_Missing) let tspec_Missing = mkILNonGenericTySpec tref_Missing let typ_Missing = mkILBoxedType tspec_Missing let tref_Activator = mkILTyRef(mscorlibScopeRef,tname_Activator) let tspec_Activator = mkILNonGenericTySpec tref_Activator let typ_Activator = mkILBoxedType tspec_Activator let tref_SerializationInfo = mkILTyRef(mscorlibScopeRef,tname_SerializationInfo) let tspec_SerializationInfo = mkILNonGenericTySpec tref_SerializationInfo let typ_SerializationInfo = mkILBoxedType tspec_SerializationInfo let tref_StreamingContext = mkILTyRef(mscorlibScopeRef,tname_StreamingContext) let tspec_StreamingContext = mkILNonGenericTySpec tref_StreamingContext let typ_StreamingContext = ILType.Value tspec_StreamingContext let tref_SecurityPermissionAttribute = mkILTyRef(mscorlibScopeRef,tname_SecurityPermissionAttribute) let tref_Delegate = mkILTyRef(mscorlibScopeRef,tname_Delegate) let tspec_Delegate = mkILNonGenericTySpec tref_Delegate let typ_Delegate = mkILBoxedType tspec_Delegate let tref_ValueType = mkILTyRef (mscorlibScopeRef,tname_ValueType) let tspec_ValueType = mkILNonGenericTySpec tref_ValueType let typ_ValueType = mkILBoxedType tspec_ValueType let tref_TypedReference = mkILTyRef (mscorlibScopeRef,tname_TypedReference) let tspec_TypedReference = mkILNonGenericTySpec tref_TypedReference let typ_TypedReference = ILType.Value tspec_TypedReference let tref_Enum = mkILTyRef (mscorlibScopeRef,tname_Enum) let tspec_Enum = mkILNonGenericTySpec tref_Enum let typ_Enum = mkILBoxedType tspec_Enum let tref_MulticastDelegate = mkILTyRef (mscorlibScopeRef,tname_MulticastDelegate) let tspec_MulticastDelegate = mkILNonGenericTySpec tref_MulticastDelegate let typ_MulticastDelegate = mkILBoxedType tspec_MulticastDelegate let typ_Array = mkILBoxedType (mkILNonGenericTySpec (mkILTyRef (mscorlibScopeRef,tname_Array))) let tref_Int64 = mkILTyRef (mscorlibScopeRef,tname_Int64) let tref_UInt64 = mkILTyRef (mscorlibScopeRef,tname_UInt64) let tref_Int32 = mkILTyRef (mscorlibScopeRef,tname_Int32) let tref_UInt32 = mkILTyRef (mscorlibScopeRef,tname_UInt32) let tref_Int16 = mkILTyRef (mscorlibScopeRef,tname_Int16) let tref_UInt16 = mkILTyRef (mscorlibScopeRef,tname_UInt16) let tref_SByte = mkILTyRef (mscorlibScopeRef,tname_SByte) let tref_Byte = mkILTyRef (mscorlibScopeRef,tname_Byte) let tref_Single = mkILTyRef (mscorlibScopeRef,tname_Single) let tref_Double = mkILTyRef (mscorlibScopeRef,tname_Double) let tref_Bool = mkILTyRef (mscorlibScopeRef,tname_Bool) let tref_Char = mkILTyRef (mscorlibScopeRef,tname_Char) let tref_IntPtr = mkILTyRef (mscorlibScopeRef,tname_IntPtr) let tref_UIntPtr = mkILTyRef (mscorlibScopeRef,tname_UIntPtr) let tspec_Int64 = mkILNonGenericTySpec tref_Int64 let tspec_UInt64 = mkILNonGenericTySpec tref_UInt64 let tspec_Int32 = mkILNonGenericTySpec tref_Int32 let tspec_UInt32 = mkILNonGenericTySpec tref_UInt32 let tspec_Int16 = mkILNonGenericTySpec tref_Int16 let tspec_UInt16 = mkILNonGenericTySpec tref_UInt16 let tspec_SByte = mkILNonGenericTySpec tref_SByte let tspec_Byte = mkILNonGenericTySpec tref_Byte let tspec_Single = mkILNonGenericTySpec tref_Single let tspec_Double = mkILNonGenericTySpec tref_Double let tspec_IntPtr = mkILNonGenericTySpec tref_IntPtr let tspec_UIntPtr = mkILNonGenericTySpec tref_UIntPtr let tspec_Char = mkILNonGenericTySpec tref_Char let tspec_Bool = mkILNonGenericTySpec tref_Bool let typ_int8 = ILType.Value tspec_SByte let typ_int16 = ILType.Value tspec_Int16 let typ_int32 = ILType.Value tspec_Int32 let typ_int64 = ILType.Value tspec_Int64 let typ_uint8 = ILType.Value tspec_Byte let typ_uint16 = ILType.Value tspec_UInt16 let typ_uint32 = ILType.Value tspec_UInt32 let typ_uint64 = ILType.Value tspec_UInt64 let typ_float32 = ILType.Value tspec_Single let typ_float64 = ILType.Value tspec_Double let typ_bool = ILType.Value tspec_Bool let typ_char = ILType.Value tspec_Char let typ_IntPtr = ILType.Value tspec_IntPtr let typ_UIntPtr = ILType.Value tspec_UIntPtr let typ_SByte = ILType.Value tspec_SByte let typ_Int16 = ILType.Value tspec_Int16 let typ_Int32 = ILType.Value tspec_Int32 let typ_Int64 = ILType.Value tspec_Int64 let typ_Byte = ILType.Value tspec_Byte let typ_UInt16 = ILType.Value tspec_UInt16 let typ_UInt32 = ILType.Value tspec_UInt32 let typ_UInt64 = ILType.Value tspec_UInt64 let typ_Single = ILType.Value tspec_Single let typ_Double = ILType.Value tspec_Double let typ_Bool = ILType.Value tspec_Bool let typ_Char = ILType.Value tspec_Char let tref_RuntimeArgumentHandle = mkILTyRef (mscorlibScopeRef,tname_RuntimeArgumentHandle) let tspec_RuntimeArgumentHandle = mkILNonGenericTySpec tref_RuntimeArgumentHandle let typ_RuntimeArgumentHandle = ILType.Value tspec_RuntimeArgumentHandle let tref_RuntimeTypeHandle = mkILTyRef (mscorlibScopeRef,tname_RuntimeTypeHandle) let tspec_RuntimeTypeHandle = mkILNonGenericTySpec tref_RuntimeTypeHandle let typ_RuntimeTypeHandle = ILType.Value tspec_RuntimeTypeHandle let tref_RuntimeMethodHandle = mkILTyRef (mscorlibScopeRef,tname_RuntimeMethodHandle) let tspec_RuntimeMethodHandle = mkILNonGenericTySpec tref_RuntimeMethodHandle let typ_RuntimeMethodHandle = ILType.Value tspec_RuntimeMethodHandle let tref_RuntimeFieldHandle = mkILTyRef (mscorlibScopeRef,tname_RuntimeFieldHandle) let tspec_RuntimeFieldHandle = mkILNonGenericTySpec tref_RuntimeFieldHandle let typ_RuntimeFieldHandle = ILType.Value tspec_RuntimeFieldHandle { mscorlibScopeRef =mscorlibScopeRef ; mscorlibAssemblyName =mscorlibAssemblyName ; noDebugData =noDebugData ; generateDebugBrowsableData =generateDebugBrowsableData ; tref_Object =tref_Object ; tspec_Object =tspec_Object ; typ_Object =typ_Object ; tref_String =tref_String ; typ_String =typ_String ; typ_StringBuilder =typ_StringBuilder ; typ_AsyncCallback =typ_AsyncCallback ; typ_IAsyncResult =typ_IAsyncResult ; typ_IComparable =typ_IComparable ; typ_Activator =typ_Activator ; tref_Type =tref_Type ; typ_Type =typ_Type ; typ_Missing =typ_Missing ; typ_Delegate =typ_Delegate ; typ_ValueType =typ_ValueType ; typ_Enum =typ_Enum ; tspec_TypedReference =tspec_TypedReference ; typ_TypedReference =typ_TypedReference ; typ_MulticastDelegate =typ_MulticastDelegate ; typ_Array =typ_Array ; tspec_Int64 =tspec_Int64 ; tspec_UInt64 =tspec_UInt64 ; tspec_Int32 =tspec_Int32 ; tspec_UInt32 =tspec_UInt32 ; tspec_Int16 =tspec_Int16 ; tspec_UInt16 =tspec_UInt16 ; tspec_SByte =tspec_SByte ; tspec_Byte =tspec_Byte ; tspec_Single =tspec_Single ; tspec_Double =tspec_Double ; tspec_IntPtr =tspec_IntPtr ; tspec_UIntPtr =tspec_UIntPtr ; tspec_Char =tspec_Char ; tspec_Bool =tspec_Bool ; typ_int8 =typ_int8 ; typ_int16 =typ_int16 ; typ_int32 =typ_int32 ; typ_int64 =typ_int64 ; typ_uint8 =typ_uint8 ; typ_uint16 =typ_uint16 ; typ_uint32 =typ_uint32 ; typ_uint64 =typ_uint64 ; typ_float32 =typ_float32 ; typ_float64 =typ_float64 ; typ_bool =typ_bool ; typ_char =typ_char ; typ_IntPtr =typ_IntPtr ; typ_UIntPtr =typ_UIntPtr ; typ_RuntimeArgumentHandle =typ_RuntimeArgumentHandle ; typ_RuntimeTypeHandle =typ_RuntimeTypeHandle ; typ_RuntimeMethodHandle =typ_RuntimeMethodHandle ; typ_RuntimeFieldHandle =typ_RuntimeFieldHandle ; typ_Byte =typ_Byte ; typ_Int16 =typ_Int16 ; typ_Int32 =typ_Int32 ; typ_Int64 =typ_Int64 ; typ_SByte =typ_SByte ; typ_UInt16 =typ_UInt16 ; typ_UInt32 =typ_UInt32 ; typ_UInt64 =typ_UInt64 ; typ_Single =typ_Single ; typ_Double =typ_Double ; typ_Bool =typ_Bool ; typ_Char =typ_Char ; typ_SerializationInfo=typ_SerializationInfo ; typ_StreamingContext=typ_StreamingContext ; tref_SecurityPermissionAttribute=tref_SecurityPermissionAttribute ; tspec_Exception =tspec_Exception ; typ_Exception =typ_Exception ; generatedAttribsCache = [] ; debuggerBrowsableNeverAttributeCache = None ; debuggerTypeProxyAttributeCache = None } (* NOTE: ecma_ prefix refers to the standard "mscorlib" *) let ecmaPublicKey = PublicKeyToken (Bytes.ofInt32Array [|0xde; 0xad; 0xbe; 0xef; 0xca; 0xfe; 0xfa; 0xce |]) let ecmaMscorlibScopeRef = ILScopeRef.Assembly (ILAssemblyRef.Create("mscorlib", None, Some ecmaPublicKey, true, None, None)) let ecmaILGlobals = mkILGlobals ecmaMscorlibScopeRef None (false, true) let mkInitializeArrayMethSpec ilg = mkILNonGenericStaticMethSpecInTy(mkILNonGenericBoxedTy(mkILTyRef(ilg.mscorlibScopeRef,"System.Runtime.CompilerServices.RuntimeHelpers")),"InitializeArray", [ilg.typ_Array;ilg.typ_RuntimeFieldHandle], ILType.Void) (* e.ilg. [mkMscorlibExnNewobj "System.InvalidCastException"] *) let mkMscorlibExnNewobj ilg eclass = mkNormalNewobj (mkILNonGenericCtorMethSpec (mkILTyRef(ilg.mscorlibScopeRef,eclass),[])) let typ_is_boxed = function ILType.Boxed _ -> true | _ -> false let typ_is_value = function ILType.Value _ -> true | _ -> false let tspec_is_mscorlib ilg (tspec:ILTypeSpec) n = let tref = tspec.TypeRef let scoref = tref.Scope (tref.Name = n) && match scoref with | ILScopeRef.Assembly n -> n.Name = ilg.mscorlibAssemblyName | ILScopeRef.Module _ -> false | ILScopeRef.Local -> true let typ_is_boxed_mscorlib_typ ilg (ty:ILType) n = typ_is_boxed ty && tspec_is_mscorlib ilg ty.TypeSpec n let typ_is_value_mscorlib_typ ilg (ty:ILType) n = typ_is_value ty && tspec_is_mscorlib ilg ty.TypeSpec n let isILObjectTy ilg ty = typ_is_boxed_mscorlib_typ ilg ty tname_Object let isILStringTy ilg ty = typ_is_boxed_mscorlib_typ ilg ty tname_String let typ_is_AsyncCallback ilg ty = typ_is_boxed_mscorlib_typ ilg ty tname_AsyncCallback let isILTypedReferenceTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_TypedReference let typ_is_IAsyncResult ilg ty = typ_is_boxed_mscorlib_typ ilg ty tname_IAsyncResult let typ_is_IComparable ilg ty = typ_is_boxed_mscorlib_typ ilg ty tname_IComparable let isILSByteTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_SByte let isILByteTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Byte let isILInt16Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Int16 let isILUInt16Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_UInt16 let isILInt32Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Int32 let isILUInt32Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_UInt32 let isILInt64Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Int64 let isILUInt64Ty ilg ty = typ_is_value_mscorlib_typ ilg ty tname_UInt64 let isILIntPtrTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_IntPtr let isILUIntPtrTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_UIntPtr let isILBoolTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Bool let isILCharTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Char let isILSingleTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Single let isILDoubleTy ilg ty = typ_is_value_mscorlib_typ ilg ty tname_Double // -------------------------------------------------------------------- // Rescoping // -------------------------------------------------------------------- let qrescope_scoref scoref scoref_old = match scoref,scoref_old with | _,ILScopeRef.Local -> Some scoref | ILScopeRef.Local,_ -> None | _,ILScopeRef.Module _ -> Some scoref | ILScopeRef.Module _,_ -> None | _ -> None let qrescope_tref scoref (x:ILTypeRef) = match qrescope_scoref scoref x.Scope with | None -> None | Some s -> Some (ILTypeRef.Create(s,x.Enclosing,x.Name)) let rescopeILScopeRef x y = match qrescope_scoref x y with Some x -> x | None -> y let rescopeILTypeRef x y = match qrescope_tref x y with Some x -> x | None -> y // ORIGINAL IMPLEMENTATION (too many allocations // { tspecTypeRef=rescopeILTypeRef scoref tref; // tspecInst=rescopeILTypes scoref tinst } let rec rescopeILTypeSpecQuick scoref (tspec:ILTypeSpec) = let tref = tspec.TypeRef let tinst = tspec.GenericArgs let qtref = qrescope_tref scoref tref if ILList.isEmpty tinst && isNone qtref then None (* avoid reallocation in the common case *) else match qtref with | None -> Some (ILTypeSpec.Create (tref, rescopeILTypes scoref tinst)) | Some tref -> Some (ILTypeSpec.Create (tref, rescopeILTypes scoref tinst)) and rescopeILTypeSpec x y = match rescopeILTypeSpecQuick x y with | Some x -> x | None -> y and rescopeILType scoref typ = match typ with | ILType.Ptr t -> ILType.Ptr (rescopeILType scoref t) | ILType.FunctionPointer t -> ILType.FunctionPointer (rescopeILCallSig scoref t) | ILType.Byref t -> ILType.Byref (rescopeILType scoref t) | ILType.Boxed cr -> match rescopeILTypeSpecQuick scoref cr with | Some res -> mkILBoxedType res | None -> typ // avoid reallocation in the common case | ILType.Array (s,ty) -> ILType.Array (s,rescopeILType scoref ty) | ILType.Value cr -> match rescopeILTypeSpecQuick scoref cr with | Some res -> ILType.Value res | None -> typ // avoid reallocation in the common case | ILType.Modified(b,tref,ty) -> ILType.Modified(b,rescopeILTypeRef scoref tref, rescopeILType scoref ty) | x -> x and rescopeILTypes scoref i = if ILList.isEmpty i then i else ILList.map (rescopeILType scoref) i and rescopeILCallSig scoref csig = mkILCallSigRaw (csig.CallingConv,rescopeILTypes scoref csig.ArgTypes,rescopeILType scoref csig.ReturnType) let rescopeILMethodRef scoref (x:ILMethodRef) = { mrefParent = rescopeILTypeRef scoref x.EnclosingTypeRef; mrefCallconv = x.mrefCallconv; mrefGenericArity=x.mrefGenericArity; mrefName=x.mrefName; mrefArgs = rescopeILTypes scoref x.mrefArgs; mrefReturn= rescopeILType scoref x.mrefReturn } let rescopeILFieldRef scoref x = { EnclosingTypeRef = rescopeILTypeRef scoref x.EnclosingTypeRef; Name= x.Name; Type= rescopeILType scoref x.Type } // -------------------------------------------------------------------- // Instantiate polymorphism in types // -------------------------------------------------------------------- let rec instILTypeSpecAux numFree inst (tspec:ILTypeSpec) = ILTypeSpec.Create(tspec.TypeRef,instILGenericArgsAux numFree inst tspec.GenericArgs) and instILTypeAux numFree (inst:ILGenericArgs) typ = match typ with | ILType.Ptr t -> ILType.Ptr (instILTypeAux numFree inst t) | ILType.FunctionPointer t -> ILType.FunctionPointer (instILCallSigAux numFree inst t) | ILType.Array (a,t) -> ILType.Array (a,instILTypeAux numFree inst t) | ILType.Byref t -> ILType.Byref (instILTypeAux numFree inst t) | ILType.Boxed cr -> mkILBoxedType (instILTypeSpecAux numFree inst cr) | ILType.Value cr -> ILType.Value (instILTypeSpecAux numFree inst cr) | ILType.TypeVar v -> let v = int v let top = inst.Length if v < numFree then typ else if v - numFree >= top then ILType.TypeVar (uint16 (v - top)) else ILList.nth inst (v - numFree) | x -> x and instILGenericArgsAux numFree inst i = ILList.map (instILTypeAux numFree inst) i and instILCallSigAux numFree inst csig = mkILCallSigRaw (csig.CallingConv,ILList.map (instILTypeAux numFree inst) csig.ArgTypes,instILTypeAux numFree inst csig.ReturnType) let instILType i t = instILTypeAux 0 i t // -------------------------------------------------------------------- // MS-IL: Parameters, Return types and Locals // -------------------------------------------------------------------- let mkILParam (name,ty) = { Name=name; Default=None; Marshal=None; IsIn=false; IsOut=false; IsOptional=false; Type=ty; CustomAttrs=emptyILCustomAttrs } let mkILParamNamed (s,ty) = mkILParam (Some s,ty) let mkILParamAnon ty = mkILParam (None,ty) let mkILReturn ty : ILReturn = { Marshal=None; Type=ty; CustomAttrs=emptyILCustomAttrs } let mkILLocal ty = { IsPinned=false; Type=ty; } type ILFieldSpec with member fr.ActualType = let env = fr.EnclosingType.GenericArgs instILType env fr.FormalType // -------------------------------------------------------------------- // Make a method mbody // -------------------------------------------------------------------- let mkILMethodBody (zeroinit,locals,maxstack,code,tag) = { IsZeroInit=zeroinit; MaxStack=maxstack; NoInlining=false; Locals= locals ; Code= code; SourceMarker=tag } let mkMethodBody (zeroinit,locals,maxstack,code,tag) = MethodBody.IL (mkILMethodBody (zeroinit,locals,maxstack,code,tag)) // -------------------------------------------------------------------- // Make a constructor // -------------------------------------------------------------------- let mkILVoidReturn = mkILReturn ILType.Void let mkILCtor (access,args,impl) = { Name=".ctor"; mdKind=MethodKind.Ctor; CallingConv=ILCallingConv.Instance; Parameters=mkILParametersRaw args; Return= mkILVoidReturn; Access=access; mdBody= mkMethBodyAux impl; mdCodeKind=MethodCodeKind.IL; IsInternalCall=false; IsManaged=true; IsForwardRef=false; SecurityDecls=emptyILSecurityDecls; HasSecurity=false; IsEntryPoint=false; GenericParams=mkILEmptyGenericParams; IsReqSecObj=false; IsHideBySig=false; IsSpecialName=true; IsUnmanagedExport=false; IsSynchronized=false; IsNoInline=false; IsMustRun=false; IsPreserveSig=false; CustomAttrs = emptyILCustomAttrs; } // -------------------------------------------------------------------- // Do-nothing ctor, just pass on to monomorphic superclass // -------------------------------------------------------------------- let mkCallBaseConstructor (typ,args: ILType list) = [ mkLdarg0; ] @ List.mapi (fun i _ -> mkLdarg (uint16 (i+1))) args @ [ mkNormalCall (mkILCtorMethSpecForTy (typ,[])) ] let mkNormalStfld fspec = I_stfld (Aligned,Nonvolatile,fspec) let mkNormalStsfld fspec = I_stsfld (Nonvolatile,fspec) let mkNormalLdsfld fspec = I_ldsfld (Nonvolatile,fspec) let mkNormalLdfld fspec = I_ldfld (Aligned,Nonvolatile,fspec) let mkNormalLdflda fspec = I_ldflda fspec let mkNormalLdobj dt = I_ldobj(Aligned,Nonvolatile,dt) let mkNormalStobj dt = I_stobj(Aligned,Nonvolatile,dt) let mkILNonGenericEmptyCtor tag superTy = let ctor = mkCallBaseConstructor (superTy,[]) mkILCtor(ILMemberAccess.Public,[],mkMethodBody(false,[],8, nonBranchingInstrsToCode ctor,tag)) // -------------------------------------------------------------------- // Make a static, top level monomophic method - very useful for // creating helper ILMethodDefs for internal use. // -------------------------------------------------------------------- let mkILStaticMethod (genparams,nm,access,args,ret,impl) = { GenericParams=genparams; Name=nm; CallingConv = ILCallingConv.Static; mdKind=MethodKind.Static; Parameters= mkILParametersRaw args; Return= ret; Access=access; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; IsEntryPoint=false; CustomAttrs = emptyILCustomAttrs; mdBody= mkMethBodyAux impl; mdCodeKind=MethodCodeKind.IL; IsInternalCall=false; IsManaged=true; IsForwardRef=false; IsReqSecObj=false; IsHideBySig=false; IsSpecialName=false; IsUnmanagedExport=false; IsSynchronized=false; IsNoInline=false; IsMustRun=false; IsPreserveSig=false; } let mkILNonGenericStaticMethod (nm,access,args,ret,impl) = mkILStaticMethod (mkILEmptyGenericParams,nm,access,args,ret,impl) let mkILClassCtor impl = { Name=".cctor"; CallingConv=ILCallingConv.Static; GenericParams=mkILEmptyGenericParams; mdKind=MethodKind.Cctor; Parameters=emptyILParameters; Return=mkILVoidReturn; Access=ILMemberAccess.Private; IsEntryPoint=false; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; CustomAttrs = emptyILCustomAttrs; mdBody= mkMethBodyAux impl; mdCodeKind=MethodCodeKind.IL; IsInternalCall=false; IsManaged=true; IsForwardRef=false; IsReqSecObj=false; IsHideBySig=false; IsSpecialName=true; IsUnmanagedExport=false; IsSynchronized=false; IsNoInline=false; IsMustRun=false; IsPreserveSig=false; } // -------------------------------------------------------------------- // Make a virtual method, where the overriding is simply the default // (i.e. overrides by name/signature) // -------------------------------------------------------------------- let mk_ospec (typ:ILType,callconv,nm,genparams,formal_args,formal_ret) = OverridesSpec (mkILMethRef (typ.TypeRef, callconv, nm, genparams, formal_args,formal_ret), typ) let mkILGenericVirtualMethod (nm,access,genparams,actual_args,actual_ret,impl) = { Name=nm; GenericParams=genparams; CallingConv=ILCallingConv.Instance; mdKind= MethodKind.Virtual { IsFinal=false; // REVIEW: We'll need to start setting this eventually IsNewSlot = false; IsCheckAccessOnOverride=true; IsAbstract=(match impl with MethodBody.Abstract -> true | _ -> false) ; }; Parameters= mkILParametersRaw actual_args; Return=actual_ret; Access=access; IsEntryPoint=false; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; CustomAttrs = emptyILCustomAttrs; mdBody= mkMethBodyAux impl; mdCodeKind=MethodCodeKind.IL; IsInternalCall=false; IsManaged=true; IsForwardRef=false; IsReqSecObj=false; IsHideBySig=false; IsSpecialName=false; IsUnmanagedExport=false; IsSynchronized=false; IsNoInline=false; IsMustRun=false; IsPreserveSig=false; } let mkILNonGenericVirtualMethod (nm,access,args,ret,impl) = mkILGenericVirtualMethod (nm,access,mkILEmptyGenericParams,args,ret,impl) let mkILGenericNonVirtualMethod (nm,access,genparams, actual_args,actual_ret, impl) = { Name=nm; GenericParams=genparams; CallingConv=ILCallingConv.Instance; mdKind=MethodKind.NonVirtual; Parameters= mkILParametersRaw actual_args; Return=actual_ret; Access=access; IsEntryPoint=false; HasSecurity=false; SecurityDecls=emptyILSecurityDecls; CustomAttrs = emptyILCustomAttrs; mdBody= mkMethBodyAux impl; mdCodeKind=MethodCodeKind.IL; IsInternalCall=false; IsManaged=true; IsForwardRef=false; IsReqSecObj=false; IsHideBySig=true; // see Bug343136: missing HideBySig attribute makes it problematic for C# to consume F# method overloads. IsSpecialName=false; IsUnmanagedExport=false; IsSynchronized=false; IsNoInline=false; IsMustRun=false; IsPreserveSig=false; } let mkILNonGenericInstanceMethod (nm,access,args,ret,impl) = mkILGenericNonVirtualMethod (nm,access,mkILEmptyGenericParams,args,ret,impl) // -------------------------------------------------------------------- // Add some code to the end of the .cctor for a type. Create a .cctor // if one doesn't exist already. // -------------------------------------------------------------------- let ilmbody_code2code f il = {il with Code = f il.Code} let mdef_code2code f md = let il = match md.mdBody.Contents with | MethodBody.IL il-> il | _ -> failwith "mdef_code2code - method not IL" let b = MethodBody.IL (ilmbody_code2code f il) {md with mdBody= mkMethBodyAux b } let prependInstrsToCode c1 c2 = let internalLab = generateCodeLabel () joinCode (checkILCode (mkBasicBlock {Label=internalLab; Instructions=Array.ofList (c1 @ [ I_br (uniqueEntryOfCode c2)])})) c2 let prependInstrsToMethod new_code md = mdef_code2code (prependInstrsToCode new_code) md (* Creates cctor if needed *) let cdef_cctorCode2CodeOrCreate tag f cd = let mdefs = cd.Methods let md,mdefs = match mdefs.FindByName ".cctor" with | [mdef] -> mdef,filterILMethodDefs (fun md -> md.Name <> ".cctor") mdefs | [] -> mkILClassCtor (mkMethodBody (false,emptyILLocals,1,nonBranchingInstrsToCode [ ],tag)), mdefs | _ -> failwith "bad method table: more than one .cctor found" let md' = f md {cd with Methods = addILMethod md' mdefs} let code_of_mdef (md:ILMethodDef) = match md.Code with | Some x -> x | None -> failwith "code_of_mdef: not IL" let mkRefToILMethod (tref, md: ILMethodDef) = mkILMethRefRaw (tref, md.CallingConv, md.Name, md.GenericParams.Length, md.ParameterTypes, md.Return.Type) let mkRefToILField (tref,fdef:ILFieldDef) = mkILFieldRef (tref, fdef.Name, fdef.Type) let mkRefForILMethod scope (tdefs,tdef) mdef = mkRefToILMethod (mkRefForNestedILTypeDef scope (tdefs,tdef), mdef) let mkRefForILField scope (tdefs,tdef) (fdef:ILFieldDef) = mkILFieldRef (mkRefForNestedILTypeDef scope (tdefs,tdef), fdef.Name, fdef.Type) (* Creates cctor if needed *) let prependInstrsToClassCtor instrs tag cd = cdef_cctorCode2CodeOrCreate tag (prependInstrsToMethod instrs) cd let mkILField (isStatic,nm,ty,init,at,access,isLiteral) = { Name=nm; Type=ty; IsStatic = isStatic; LiteralValue = init; Data=at; Offset=None; IsSpecialName = false; Marshal=None; NotSerialized=false; IsInitOnly = false; IsLiteral = isLiteral; Access = access; CustomAttrs=emptyILCustomAttrs } let mkILInstanceField (nm,ty,init,access) = mkILField (false,nm,ty,init,None,access,false) let mkILStaticField (nm,ty,init,at,access) = mkILField (true,nm,ty,init,at,access,false) let mkILLiteralField (nm,ty,init,at,access) = mkILField (true, nm, ty, Some init, at, access, true) // -------------------------------------------------------------------- // Scopes for allocating new temporary variables. // -------------------------------------------------------------------- type ILLocalsAllocator(numPrealloc:int) = let newLocals = ResizeArray() member tmps.AllocLocal loc = let locn = uint16(numPrealloc + newLocals.Count) newLocals.Add loc; locn member tmps.Close() = ResizeArray.toList newLocals let mkILFieldsLazy l = Fields (LazyOrderedMultiMap((fun (f:ILFieldDef) -> f.Name),l)) let mkILFields l = mkILFieldsLazy (notlazy l) let emptyILFields = mkILFields [] let mkILEventsLazy l = Events (LazyOrderedMultiMap((fun (e: ILEventDef) -> e.Name),l)) let mkILEvents l = mkILEventsLazy (notlazy l) let emptyILEvents = mkILEvents [] let mkILPropertiesLazy l = Properties (LazyOrderedMultiMap((fun (p: ILPropertyDef) -> p.Name),l) ) let mkILProperties l = mkILPropertiesLazy (notlazy l) let emptyILProperties = mkILProperties [] let addExportedTypeToTable (y: ILExportedTypeOrForwarder) tab = Map.add y.Name y tab let mkILExportedTypes l = ILExportedTypesAndForwarders (notlazy (List.foldBack addExportedTypeToTable l Map.empty)) let mkILExportedTypesLazy (l:Lazy<_>) = ILExportedTypesAndForwarders (lazy (List.foldBack addExportedTypeToTable (l.Force()) Map.empty)) let addNestedExportedTypeToTable (y: ILNestedExportedType) tab = Map.add y.Name y tab let mkILNestedExportedTypes l = ILNestedExportedTypes (notlazy (List.foldBack addNestedExportedTypeToTable l Map.empty)) let mkILNestedExportedTypesLazy (l:Lazy<_>) = ILNestedExportedTypes (lazy (List.foldBack addNestedExportedTypeToTable (l.Force()) Map.empty)) let mkILResources l = ILResources (notlazy l) let mkILResourcesLazy l = ILResources l let addMethodImplToTable y tab = let key = (y.Overrides.MethodRef.Name,y.Overrides.MethodRef.ArgTypes.Length) let prev = Map.tryFindMulti key tab Map.add key (y::prev) tab let mkILMethodImpls l = MethodImpls (notlazy (List.foldBack addMethodImplToTable l Map.empty)) let mkILMethodImplsLazy l = MethodImpls (lazy (List.foldBack addMethodImplToTable (Lazy.force l) Map.empty)) let emptyILMethodImpls = mkILMethodImpls [] // -------------------------------------------------------------------- // Make a constructor that simply takes its arguments and stuffs // them in fields. preblock is how to call the superclass constructor.... // -------------------------------------------------------------------- let mkILStorageCtorWithParamNames(tag,preblock,typ,flds,access) = mkILCtor(access, flds |> List.map (fun (pnm,_,ty) -> mkILParamNamed (pnm,ty)), mkMethodBody (false,emptyILLocals,2, nonBranchingInstrsToCode begin (match tag with Some x -> [I_seqpoint x] | None -> []) @ preblock @ List.concat (List.mapi (fun n (_pnm,nm,ty) -> [ mkLdarg0; mkLdarg (uint16 (n+1)); mkNormalStfld (mkILFieldSpecInTy (typ,nm,ty)); ]) flds) end,tag)) let mkILSimpleStorageCtorWithParamNames(tag,base_tspec,typ,flds,access) = let preblock = match base_tspec with None -> [] | Some tspec -> ([ mkLdarg0; mkNormalCall (mkILCtorMethSpecForTy (mkILBoxedType tspec,[])) ]) mkILStorageCtorWithParamNames(tag,preblock,typ,flds,access) let addParamNames flds = flds |> List.map (fun (nm,ty) -> (nm,nm,ty)) let mkILSimpleStorageCtor(tag,base_tspec,typ,flds,access) = mkILSimpleStorageCtorWithParamNames(tag,base_tspec,typ, addParamNames flds, access) let mkILStorageCtor(tag,preblock,typ,flds,access) = mkILStorageCtorWithParamNames(tag,preblock,typ, addParamNames flds, access) let mkILGenericClass (nm, access, genparams, extends, impl, methods, fields, nestedTypes, props, events, attrs, init) = { tdKind=ILTypeDefKind.Class; Name=nm; GenericParams= genparams; Access = access; Implements = mkILTypes impl; IsAbstract = false; IsSealed = false; IsSerializable = false; IsComInterop=false; IsSpecialName=false; Layout=ILTypeDefLayout.Auto; Encoding=ILDefaultPInvokeEncoding.Ansi; InitSemantics=init; Extends = Some extends; Methods= methods; Fields= fields; NestedTypes=nestedTypes; CustomAttrs=attrs; MethodImpls=emptyILMethodImpls; Properties=props; Events=events; SecurityDecls=emptyILSecurityDecls; HasSecurity=false; } let mkRawDataValueTypeDef ilg (nm,size,pack) = { tdKind=ILTypeDefKind.ValueType; Name = nm; GenericParams= []; Access = ILTypeDefAccess.Private; Implements = emptyILTypes; IsAbstract = false; IsSealed = true; Extends = Some ilg.typ_ValueType; IsComInterop=false; IsSerializable = false; IsSpecialName=false; Layout=ILTypeDefLayout.Explicit { Size=Some size; Pack=Some pack }; Encoding=ILDefaultPInvokeEncoding.Ansi; InitSemantics=ILTypeInit.BeforeField; Methods= emptyILMethods; Fields= emptyILFields; NestedTypes=emptyILTypeDefs; CustomAttrs=emptyILCustomAttrs; MethodImpls=emptyILMethodImpls; Properties=emptyILProperties; Events=emptyILEvents; SecurityDecls=emptyILSecurityDecls; HasSecurity=false; } let mkILSimpleClass ilg (nm, access, methods, fields, nestedTypes, props, events, attrs, init) = mkILGenericClass (nm,access, mkILEmptyGenericParams, ilg.typ_Object, [], methods, fields, nestedTypes, props, events, attrs, init) let mkILTypeDefForGlobalFunctions ilg (methods,fields) = mkILSimpleClass ilg (typeNameForGlobalFunctions, ILTypeDefAccess.Public, methods, fields, emptyILTypeDefs, emptyILProperties, emptyILEvents, emptyILCustomAttrs,ILTypeInit.BeforeField) let destTypeDefsWithGlobalFunctionsFirst ilg (tdefs: ILTypeDefs) = let l = tdefs.AsList let top,nontop = l |> List.partition (fun td -> td.Name = typeNameForGlobalFunctions) let top2 = if isNil top then [mkILTypeDefForGlobalFunctions ilg (emptyILMethods, emptyILFields)] else top top2@nontop let mkILSimpleModule assname modname dll subsystemVersion useHighEntropyVA tdefs hashalg locale flags exportedTypes metadataVersion = { Manifest= Some { Name=assname; AuxModuleHashAlgorithm= match hashalg with | Some(alg) -> alg | _ -> 0x8004; // SHA1 SecurityDecls=emptyILSecurityDecls; PublicKey= None; Version= None; Locale=locale CustomAttrs=emptyILCustomAttrs; AssemblyLongevity=ILAssemblyLongevity.Unspecified; DisableJitOptimizations= 0 <> (flags &&& 0x4000); JitTracking=0 <> (flags &&& 0x8000); // always turn these on Retargetable= 0 <> (flags &&& 0x100); ExportedTypes=exportedTypes; EntrypointElsewhere=None }; CustomAttrs=emptyILCustomAttrs; Name=modname; NativeResources=[]; TypeDefs=tdefs; SubsystemVersion = subsystemVersion UseHighEntropyVA = useHighEntropyVA SubSystemFlags=defaultSubSystem; IsDLL=dll; IsILOnly=true; Platform=None; StackReserveSize=None; Is32Bit=false; Is32BitPreferred=false; Is64Bit=false; PhysicalAlignment=defaultPhysAlignment; VirtualAlignment=defaultVirtAlignment; ImageBase=defaultImageBase; MetadataVersion=metadataVersion; Resources=mkILResources []; } //----------------------------------------------------------------------- // Intermediate parsing structure for exception tables.... //----------------------------------------------------------------------- type ILExceptionClause = | Finally of (ILCodeLabel * ILCodeLabel) | Fault of (ILCodeLabel * ILCodeLabel) | FilterCatch of (ILCodeLabel * ILCodeLabel) * (ILCodeLabel * ILCodeLabel) | TypeCatch of ILType * (ILCodeLabel * ILCodeLabel) type ILExceptionSpec = { exnRange: (ILCodeLabel * ILCodeLabel); exnClauses: ILExceptionClause list } type exceptions = ILExceptionSpec list //----------------------------------------------------------------------- // [instructions_to_code] makes the basic block structure of code from // a primitive array of instructions. We // do this be iterating over the instructions, pushing new basic blocks // everytime we encounter an address that has been recorded // [bbstartToCodeLabelMap]. //----------------------------------------------------------------------- type ILLocalSpec = { locRange: (ILCodeLabel * ILCodeLabel); locInfos: ILDebugMapping list } type structspec = SEH of ILExceptionSpec | LOCAL of ILLocalSpec let delayInsertedToWorkaroundKnownNgenBug _s f = (* Some random code to prevent inlining of this function *) let mutable res = 10 for i = 0 to 2 do res <- res + 1; //printf "------------------------executing NGEN bug delay '%s', calling 'f' --------------\n" s; let res = f() //printf "------------------------exiting NGEN bug delay '%s' --------------\n" s; res let popRangeM lo hi (m:Zmap<'Key,'U>) = let collect k v (rvs,m) = (v :: rvs) , Zmap.remove k m let rvs,m = Zmap.foldSection lo hi collect m ([],m) List.rev rvs,m type BasicBlockStartsToCodeLabelsMap(instrs,tryspecs,localspecs,lab2pc) = // Find all the interesting looking labels that form the boundaries of basic blocks. // These are the destinations of branches and the boundaries of both exceptions and // those blocks where locals are live. let bbstartToCodeLabelMap = let res = ref CodeLabels.empty let add_range (a,b) = res := CodeLabels.insert a (CodeLabels.insert b !res) instrs |> Array.iter (fun i -> res := CodeLabels.addList (destinationsOfInstr i) !res); tryspecs |> List.iter (fun espec -> add_range espec.exnRange; List.iter (function | Finally r1 | Fault r1 | TypeCatch (_,r1)-> add_range r1 | FilterCatch (r1,r2) -> add_range r1; add_range r2) espec.exnClauses); localspecs |> List.iter (fun l -> add_range l.locRange) ; !res // Construct a map that gives a unique ILCodeLabel for each label that // might be a boundary of a basic block. These will be the labels // for the basic blocks we end up creating. let lab2clMap = Dictionary<_,_>(10, HashIdentity.Structural) let pc2clMap = Dictionary<_,_>(10, HashIdentity.Structural) let addBBstartPc pc pcs cls = if pc2clMap.ContainsKey pc then pc2clMap.[pc], pcs, cls else let cl = generateCodeLabel () pc2clMap.[pc] <- cl; cl, pc::pcs, CodeLabels.insert cl cls let bbstartPcs, bbstart_code_labs = CodeLabels.fold (fun bbstart_lab (pcs, cls) -> let pc = lab2pc bbstart_lab if logging then dprintf "bblock starts with label %s at pc %d\n" (formatCodeLabel bbstart_lab) pc; let cl,pcs',cls' = addBBstartPc pc pcs cls lab2clMap.[bbstart_lab] <- cl; pcs', cls') bbstartToCodeLabelMap ([], CodeLabels.empty) let cl0,bbstartPcs, bbstart_code_labs = addBBstartPc 0 bbstartPcs bbstart_code_labs member c.InitialCodeLabel = cl0 member c.BasicBlockStartPositions = bbstartPcs member c.BasicBlockStartCodeLabels = bbstart_code_labs member c.lab2cl bbLab = try lab2clMap.[bbLab] with :? KeyNotFoundException -> failwith ("basic block label "+formatCodeLabel bbLab+" not declared") member c.pc2cl pc = try pc2clMap.[pc] with :? KeyNotFoundException -> failwith ("internal error while mapping pc "+string pc+" to code label") member c.remapLabels i = match i with | I_leave l -> I_leave(c.lab2cl l) | I_br l -> I_br (c.lab2cl l) | I_other e -> I_other (find_extension "instr" (fun ext -> if ext.internalInstrExtIs e then Some (ext.internalInstrExtRelabel c.lab2cl e) else None) !instrExtensions) | I_brcmp (x,l1,l2) -> I_brcmp(x,c.lab2cl l1, c.lab2cl l2) | I_switch (ls,l) -> I_switch(List.map c.lab2cl ls, c.lab2cl l) | _ -> i let disjoint_range (start_pc1,end_pc1) (start_pc2,end_pc2) = ((start_pc1 : int) < start_pc2 && end_pc1 <= start_pc2) || (start_pc1 >= end_pc2 && end_pc1 > end_pc2) let merge_ranges (start_pc1,end_pc1) (start_pc2,end_pc2) = (min (start_pc1:int) start_pc2, max (end_pc1:int) end_pc2) let rangeInsideRange (start_pc1,end_pc1) (start_pc2,end_pc2) = (start_pc1:int) >= start_pc2 && start_pc1 < end_pc2 && (end_pc1:int) > start_pc2 && end_pc1 <= end_pc2 let lranges_of_clause cl = match cl with | Finally r1 -> [r1] | Fault r1 -> [r1] | FilterCatch (r1,r2) -> [r1;r2] | TypeCatch (_ty,r1) -> [r1] type CodeOffsetViewOfLabelledItems(lab2pc) = member x.labelsToRange p = let (l1,l2) = p in lab2pc l1, lab2pc l2 member x.lrange_inside_lrange ls1 ls2 = rangeInsideRange (x.labelsToRange ls1) (x.labelsToRange ls2) member x.disjoint_lranges ls1 ls2 = disjoint_range (x.labelsToRange ls1) (x.labelsToRange ls2) member x.clause_inside_lrange cl lr = List.forall (fun lr1 -> x.lrange_inside_lrange lr1 lr) (lranges_of_clause cl) member x.clauses_inside_lrange cls lr = List.forall (fun cl -> x.clause_inside_lrange cl lr) cls member x.tryspec_inside_lrange tryspec1 lr = (x.lrange_inside_lrange tryspec1.exnRange lr && x.clauses_inside_lrange tryspec1.exnClauses lr) member x.tryspec_inside_clause tryspec1 cl = List.exists (fun lr -> x.tryspec_inside_lrange tryspec1 lr) (lranges_of_clause cl) member x.locspec_inside_clause locspec1 cl = List.exists (fun lr -> x.lrange_inside_lrange locspec1.locRange lr) (lranges_of_clause cl) member x.tryspec_inside_tryspec tryspec1 tryspec2 = x.tryspec_inside_lrange tryspec1 tryspec2.exnRange || List.exists (fun c2 -> x.tryspec_inside_clause tryspec1 c2) tryspec2.exnClauses member x.locspec_inside_tryspec locspec1 tryspec2 = x.lrange_inside_lrange locspec1.locRange tryspec2.exnRange || List.exists (fun c2 -> x.locspec_inside_clause locspec1 c2) tryspec2.exnClauses member x.tryspec_inside_locspec tryspec1 locspec2 = x.tryspec_inside_lrange tryspec1 locspec2.locRange member x.disjoint_clause_and_lrange cl lr = List.forall (fun lr1 -> x.disjoint_lranges lr1 lr) (lranges_of_clause cl) member x.disjoint_clauses_and_lrange cls lr = List.forall (fun cl -> x.disjoint_clause_and_lrange cl lr) cls member x.disjoint_tryspec_and_lrange tryspec1 lr = (x.disjoint_lranges tryspec1.exnRange lr && x.disjoint_clauses_and_lrange tryspec1.exnClauses lr) member x.disjoint_tryspec_and_clause tryspec1 cl = List.forall (fun lr -> x.disjoint_tryspec_and_lrange tryspec1 lr) (lranges_of_clause cl) member x.tryspec_disjoint_from_tryspec tryspec1 tryspec2 = x.disjoint_tryspec_and_lrange tryspec1 tryspec2.exnRange && List.forall (fun c2 -> x.disjoint_tryspec_and_clause tryspec1 c2) tryspec2.exnClauses member x.tryspec_disjoint_from_locspec tryspec1 locspec2 = x.disjoint_tryspec_and_lrange tryspec1 locspec2.locRange member x.locspec_disjoint_from_locspec locspec1 locspec2 = x.disjoint_lranges locspec1.locRange locspec2.locRange member x.locspec_inside_locspec locspec1 locspec2 = x.lrange_inside_lrange locspec1.locRange locspec2.locRange member x.structspec_inside_structspec specA specB = (* only for sanity checks, then can be removed *) match specA,specB with | SEH tryspecA,SEH tryspecB -> x.tryspec_inside_tryspec tryspecA tryspecB | SEH tryspecA,LOCAL locspecB -> x.tryspec_inside_locspec tryspecA locspecB | LOCAL locspecA,SEH tryspecB -> x.locspec_inside_tryspec locspecA tryspecB | LOCAL locspecA,LOCAL locspecB -> x.locspec_inside_locspec locspecA locspecB // extent (or size) is the sum of range extents // We want to build in increasing containment-order, that's a partial order. // Size-order implies containment-order, and size-order is a total order. member x.extent_structspec ss = let extent_range (start_pc,end_pc) = end_pc - start_pc let extent_lrange lrange = extent_range (x.labelsToRange lrange) let extent_locspec locspec = extent_lrange locspec.locRange let extent_list extent_item items = List.fold (fun acc item -> acc + extent_item item) 0 items let extent_list2 extent_item items = List.fold (fun acc item -> acc + extent_item item) 0 items let extent_clause cl = extent_list extent_lrange (lranges_of_clause cl) let extent_tryspec tryspec = extent_lrange tryspec.exnRange + (extent_list2 extent_clause tryspec.exnClauses) match ss with | LOCAL locspec -> extent_locspec locspec | SEH tryspec -> extent_tryspec tryspec (* DIAGNOSTICS: START ------------------------------ *) member x.string_of_structspec ss = let stringOfRange (l1,l2) = let pc1,pc2 = x.labelsToRange ((l1,l2)) formatCodeLabel l1+"("+string pc1+")-"+ formatCodeLabel l2+"("+string pc2+")" let string_of_clause cl = String.concat "+" (List.map stringOfRange (lranges_of_clause cl)) let string_of_tryspec tryspec = "tryspec"+ stringOfRange tryspec.exnRange + "--" + String.concat " / " (List.map string_of_clause tryspec.exnClauses) let string_of_locspec locspec = "local "+(String.concat ";" (locspec.locInfos |> List.map (fun l -> l.LocalName)))+": "+ stringOfRange locspec.locRange match ss with | SEH tryspec -> string_of_tryspec tryspec | LOCAL locspec -> string_of_locspec locspec // Stage 2b - Given an innermost tryspec, collect together the // blocks covered by it. Preserve the essential ordering of blocks. let blockForInnerTrySpec (codeOffsetView:CodeOffsetViewOfLabelledItems, coverageOfCodes, addBlocks, computeCoveredBlocks, bbstartToCodeLabelMap:BasicBlockStartsToCodeLabelsMap) tryspec state0 = let (blocks, remainingBasicBlockStarts) = state0 let tryBlocks, otherBlocks = computeCoveredBlocks (codeOffsetView.labelsToRange tryspec.exnRange) blocks if isNil tryBlocks then (dprintn "try block specification covers no real code"; state0) else let getClause r otherBlocks = let clauseBlocks, otherBlocks = computeCoveredBlocks (codeOffsetView.labelsToRange r) otherBlocks if isNil clauseBlocks then failwith "clause block specification covers no real code"; (* The next line computes the code label for the entry to the clause *) let clauseEntryLabel = bbstartToCodeLabelMap.lab2cl (fst r) // Now compute the overall clause, with labels still visible. let clauseBlock = mkGroupBlock ([],List.map snd clauseBlocks) (* if logging then dprintf "-- clause entry label is %s" clauseEntryLabel; *) (clauseEntryLabel, clauseBlocks, clauseBlock), otherBlocks let tryCodeBlocks = List.map snd tryBlocks let tryEntryLabel = bbstartToCodeLabelMap.lab2cl (fst tryspec.exnRange) let tryHiddn = CodeLabels.remove tryEntryLabel (List.foldBack (entriesOfCodeAsSet >> CodeLabels.union) tryCodeBlocks CodeLabels.empty) let tryBlock = mkGroupBlock (CodeLabels.toList tryHiddn,tryCodeBlocks) match tryspec.exnClauses with | Finally _ :: _ :: _ -> failwith "finally clause combined with others" | [ Finally r ] | [ Fault r ] -> let maker = match tryspec.exnClauses with [ Finally _ ] -> mkTryFinallyBlock | [ Fault _ ] -> mkTryFaultBlock | _ -> failwith "" let (clauseEntryLabel, clauseBlocks, clauseBlock), otherBlocks = getClause r otherBlocks let newBlockRange = coverageOfCodes (tryBlocks@clauseBlocks) // The next construction joins the blocks together. // It automatically hides any internal labels used in the // clause blocks. Only the entry to the clause is kept visible. // We hide the entries to the try block up above. let newBlock = maker (tryBlock,clauseEntryLabel,clauseBlock) // None of the entries to the clause block are visible outside the // entire try-clause construct, nor the other entries to the try block // apart from the one at the. top let newStarts = CodeLabels.diff remainingBasicBlockStarts (CodeLabels.union tryHiddn (entriesOfCodeAsSet clauseBlock)) // Now return the new block, the remaining blocks and the new set // of entries. addBlocks otherBlocks [(newBlockRange, newBlock)], newStarts | clauses when clauses |> List.forall (function | FilterCatch _ -> true | TypeCatch _ -> true | _ -> false) -> let clause_infos, otherBlocks (*(prior,posterior)*) = List.fold (fun (sofar,otherBlocks) cl -> match cl with | FilterCatch(r1,r2) -> let ((lab1,_,bl1) as _info1),otherBlocks = getClause r1 otherBlocks let info2,otherBlocks = getClause r2 otherBlocks (sofar@[(Choice1Of2 (lab1,bl1),info2)]), otherBlocks | TypeCatch(typ,r2) -> let info2,otherBlocks = getClause r2 otherBlocks (sofar@[(Choice2Of2 typ,info2)]), otherBlocks | _ -> failwith "internal error") ([],otherBlocks) clauses let newBlockRange = // Ignore filter blocks when computing this range // REVIEW: They must always come before the catch blocks. coverageOfCodes (tryBlocks@ ((List.collect (fun (_,(_,blocks2,_)) -> blocks2) clause_infos))) // The next construction joins the blocks together. // It automatically hides any internal labels used in the // clause blocks. Only the entry to the clause is kept visible. let newBlock = mkTryMultiFilterCatchBlock (tryBlock, List.map (fun (choice,(lab2,_,bl2)) -> choice, (lab2,bl2)) clause_infos) // None of the entries to the filter or catch blocks are // visible outside the entire exception construct. let newStarts = CodeLabels.diff remainingBasicBlockStarts (CodeLabels.union tryHiddn (List.foldBack (fun (flt,(_,_,ctch_blck)) acc -> CodeLabels.union (match flt with | Choice1Of2 (_,flt_block) -> entriesOfCodeAsSet flt_block | Choice2Of2 _ -> CodeLabels.empty) (CodeLabels.union (entriesOfCodeAsSet ctch_blck) acc)) clause_infos CodeLabels.empty)) // Now return the new block, the remaining blocks and the new set // of entries. addBlocks otherBlocks [ (newBlockRange, newBlock)], newStarts | _ -> failwith "invalid pattern of exception constructs" let doStructure' (codeOffsetView:CodeOffsetViewOfLabelledItems, computeCoveredBlocks, coverageOfCodes, addBlocks, bbstartToCodeLabelMap:BasicBlockStartsToCodeLabelsMap) structspecs blockState = (* Stage 2b - Given an innermost tryspec, collect together the *) (* blocks covered by it. Preserve the essential ordering of blocks. *) let blockForInnerLocSpec locspec ((blocks, remainingBasicBlockStarts) as state0) = let scopeBlocks, otherBlocks (*(prior,posterior)*) = computeCoveredBlocks (codeOffsetView.labelsToRange locspec.locRange) blocks if isNil scopeBlocks then (dprintn "scope block specification covers no real code"; state0) else let newBlock = mkScopeBlock (locspec.locInfos,mkGroupBlock ([],List.map snd scopeBlocks)) let newBlockRange = coverageOfCodes scopeBlocks addBlocks otherBlocks [ (newBlockRange, newBlock)], remainingBasicBlockStarts // Require items by increasing inclusion-order. // Order by size/extent. // a) size-ordering implies containment-ordering. // b) size-ordering is total, so works with List.sort let buildOrder = Order.orderOn codeOffsetView.extent_structspec int_order (* checkOrder: checking is O(n^2) *) (* let rec checkOrder = function | [] -> () | sA::sBs -> List.iter (fun sB -> if codeOffsetView.structspec_inside_structspec sB sA && not (codeOffsetView.structspec_inside_structspec sA sB) then ( dprintf "sA = %s\n" (codeOffsetView.string_of_structspec sA); dprintf "sB = %s\n" (codeOffsetView.string_of_structspec sB); assert false )) sBs; checkOrder sBs *) let structspecs = List.sortWithOrder buildOrder structspecs (* if sanity_check_order then checkOrder structspecs; *) (* note: this check is n^2 *) let buildBlock blockState = function | SEH tryspec -> blockForInnerTrySpec (codeOffsetView,coverageOfCodes,addBlocks,computeCoveredBlocks,bbstartToCodeLabelMap) tryspec blockState | LOCAL locspec -> blockForInnerLocSpec locspec blockState List.fold buildBlock blockState structspecs // REVIEW: this function shows up on performance traces. If we eliminated the last ILX->IL rewrites from the // F# compiler we could get rid of this structured code representation from Abstract IL altogether, and // never convert F# code into this form. let buildILCode methName lab2pc instrs tryspecs localspecs = let bbstartToCodeLabelMap = BasicBlockStartsToCodeLabelsMap(instrs,tryspecs,localspecs,lab2pc) let codeOffsetView = CodeOffsetViewOfLabelledItems(lab2pc) let basicInstructions = Array.map bbstartToCodeLabelMap.remapLabels instrs (* DIAGNOSTICS: END -------------------------------- *) let buildCodeFromInstructionArray instrs = // Consume instructions until we hit the end of the basic block, either // by hitting a control-flow instruction or by hitting the start of the // next basic block by fall-through. let rec consumeBBlockInstrs instrs rinstrs (pc:int) nextBBstartPc = (* rinstrs = accumulates instructions in reverse order *) if pc = (Array.length instrs) then dprintn "* WARNING: basic block at end of method ends without a leave, branch, return or throw. Adding throw\n"; pc,List.rev (I_throw :: rinstrs) // The next test is for drop-through at end of bblock, when we just insert // a branch to the next bblock. elif (match nextBBstartPc with Some pc' -> pc = pc' | _ -> false) then if logging then dprintf "-- pushing br, pc = nextBBstartPc = %d\n" pc; pc,List.rev (I_br (bbstartToCodeLabelMap.pc2cl pc) :: rinstrs) else // Otherwise bblocks end with control-flow. let i = instrs.[pc] let pc' = pc + 1 if instrIsBasicBlockEnd i then if instrIsTailcall i then if pc' = instrs.Length || (match instrs.[pc'] with I_ret -> false | _ -> true) then failwithf "a tailcall must be followed by a return, instrs = %A" instrs elif (match nextBBstartPc with Some pc'' -> pc' = pc'' | _ -> false) then // In this obscure case, someone branches to the return instruction // following the tailcall, so we'd better build a basic block // containing just that return instruction. pc', List.rev (i :: rinstrs) else // Otherwise skip the return instruction, but keep the tailcall. pc'+1, List.rev (i :: rinstrs) else pc', List.rev (i :: rinstrs) else // recursive case consumeBBlockInstrs instrs (i::rinstrs) pc' nextBBstartPc (* type block = (int * int) * Code // a local type (alias) would be good, good for intelisense too *) let rec consumeOneBlock bbstartPc nextBBstartPc currentPc = if currentPc = (Array.length instrs) then None elif bbstartPc < currentPc then failwith "internal error: bad basic block structure (missing bblock start marker?)" elif bbstartPc > currentPc then (* dprintn ("* ignoring unreachable instruction in method: "^ methName); *) consumeOneBlock bbstartPc nextBBstartPc (currentPc + 1) else let pc', bblockInstrs = consumeBBlockInstrs instrs [] bbstartPc nextBBstartPc if logging then dprintf "-- making bblock, entry label is %s, length = %d, bbstartPc = %d\n" (formatCodeLabel (bbstartToCodeLabelMap.pc2cl bbstartPc)) (List.length bblockInstrs) bbstartPc; let bblock = mkBasicBlock {Label= bbstartToCodeLabelMap.pc2cl bbstartPc; Instructions=Array.ofList bblockInstrs} let bblockRange = (bbstartPc, pc') // Return the bblock and the range of instructions that the bblock covered. // Also return any remaining instructions and the pc' for the first // such instruction. Some ((bblockRange, bblock), pc') let fetchBasicBlocks bbstartToCodeLabelMap currentPc = let rec loop bbstartToCodeLabelMap currentPc acc = match bbstartToCodeLabelMap with | [] -> (* if currentPc <> Array.length instrs then dprintn ("* ignoring instructions at end of method: "+ methName); *) List.rev acc | h::t -> let h2 = match t with [] -> None | h2:: _ -> assert (not (h = h2)); Some h2 match consumeOneBlock h h2 currentPc with | None -> List.rev acc | Some (bblock, currentPc') -> loop t currentPc' (bblock :: acc) loop bbstartToCodeLabelMap currentPc [] let inside range (brange,_) = if rangeInsideRange brange range then true else if disjoint_range brange range then false else failwith "exception block specification overlaps the range of a basic block" (* A "blocks" contain blocks, ordered on startPC. * Recall, a block is (range,code) where range=(pcStart,pcLast+1). *) let addBlock m (((startPC,_endPC),_code) as block) = match Zmap.tryFind startPC m with | None -> Zmap.add startPC [block] m | Some blocks -> Zmap.add startPC (block :: blocks) m in (* NOTE: may reverse block *) let addBlocks m blocks = List.fold addBlock m blocks let mkBlocks blocks = let emptyBlocks = (Zmap.empty int_order : Zmap) List.fold addBlock emptyBlocks blocks let sanityCheck = false (* linear check - REVIEW: set false and elim checks *) let computeCoveredBlocks ((start_pc,end_pc) as range) (blocks: Zmap ) = // It is assumed that scopes never overlap. // locinfo scopes could overlap if there is a bug elsewhere. // If overlaps are discovered, an exception is raised. see NOTE#overlap. let pcCovered,blocks = popRangeM start_pc (end_pc - 1) blocks let coveredBlocks = pcCovered |> List.concat // Look for bad input, e.g. overlapping locinfo scopes. let overlapBlocks = List.filter (inside range >> not) coveredBlocks if not (isNil overlapBlocks) then notFound(); (* see NOTE#overlap *) if sanityCheck then ( let assertIn block = assert (inside range block) let assertOut block = assert (not (inside range block)) List.iter assertIn coveredBlocks; Zmap.iter (fun _ bs -> List.iter assertOut bs) blocks ); coveredBlocks,blocks let coverageOfCodes blocks = match blocks with | [] -> failwith "start_of_codes" | [(r,_)] -> r | ((r,_)::t) -> List.foldBack (fun (x,_) acc -> merge_ranges x acc) t r delayInsertedToWorkaroundKnownNgenBug "Delay4i3" <| fun () -> let doStructure = doStructure' (codeOffsetView, computeCoveredBlocks,coverageOfCodes,addBlocks,bbstartToCodeLabelMap) (* Apply stage 1. Compute the blocks not taking exceptions into account. *) let bblocks = fetchBasicBlocks (List.sort bbstartToCodeLabelMap.BasicBlockStartPositions) 0 let bblocks = mkBlocks bblocks (* Apply stage 2. Compute the overall morphed blocks. *) let morphedBlocks,remaining_entries = let specs1 = List.map (fun x -> SEH x) tryspecs let specs2 = List.map (fun x -> LOCAL x) localspecs try doStructure (specs1 @ specs2) (bblocks,bbstartToCodeLabelMap.BasicBlockStartCodeLabels) with :? KeyNotFoundException-> // NOTE#overlap. // Here, "Not_found" indicates overlapping scopes were found. // Maybe the calling code got the locspecs scopes wrong. // Try recovery by discarding locspec info... let string_of_tryspec _tryspec = "tryspec" let stringOfRange (l1,l2) = let pc1,pc2 = codeOffsetView.labelsToRange ((l1,l2)) formatCodeLabel l1+"("+string pc1+")-"+ formatCodeLabel l2+"("+string pc2+")" let string_of_locspec locspec = "local "+(String.concat ";" (locspec.locInfos |> List.map (fun l -> l.LocalName)))+": "+ stringOfRange locspec.locRange dprintf "\nERROR: could not find an innermost exception block or local scope, specs = \n%s\nTrying again without locals." (String.concat "\n" (List.map string_of_tryspec tryspecs @ List.map string_of_locspec localspecs)); doStructure specs1 (bblocks,bbstartToCodeLabelMap.BasicBlockStartCodeLabels) delayInsertedToWorkaroundKnownNgenBug "Delay4k" <| fun () -> let morphedBlocks = Zmap.values morphedBlocks |> List.concat in (* NOTE: may mixup order *) (* Now join up all the remaining blocks into one block with one entry. *) if logging then dprintn "-- computing entry label"; if logging then dprintn ("-- entry label is "+formatCodeLabel bbstartToCodeLabelMap.InitialCodeLabel); mkGroupBlock (CodeLabels.toList (CodeLabels.remove bbstartToCodeLabelMap.InitialCodeLabel remaining_entries),List.map snd morphedBlocks) try buildCodeFromInstructionArray basicInstructions with e -> dprintn ("* error while converting instructions to code for method: " + methName); reraise() // -------------------------------------------------------------------- // Detecting Delegates // -------------------------------------------------------------------- let mkILDelegateMethods ilg (parms,rtv:ILReturn) = let rty = rtv.Type let one nm args ret = let mdef = mkILNonGenericVirtualMethod (nm,ILMemberAccess.Public,args,mkILReturn ret,MethodBody.Abstract) {mdef with mdKind= match mdef.mdKind with | MethodKind.Virtual vinfo -> MethodKind.Virtual {vinfo with IsAbstract=false; } | k -> k mdCodeKind=MethodCodeKind.Runtime; IsHideBySig=true; } let ctor = mkILCtor(ILMemberAccess.Public, [ mkILParamNamed("object",ilg.typ_Object); mkILParamNamed("method",ilg.typ_IntPtr) ], MethodBody.Abstract) let ctor = { ctor with mdCodeKind=MethodCodeKind.Runtime; IsHideBySig=true } [ ctor; one "Invoke" parms rty; one "BeginInvoke" (parms @ [mkILParamNamed("callback",ilg.typ_AsyncCallback); mkILParamNamed("objects",ilg.typ_Object) ] ) ilg.typ_IAsyncResult; one "EndInvoke" [mkILParamNamed("result",ilg.typ_IAsyncResult)] rty; ] let mkCtorMethSpecForDelegate ilg (typ:ILType,useUIntPtr) = let scoref = typ.TypeRef.Scope mkILInstanceMethSpecInTy (typ,".ctor",[rescopeILType scoref ilg.typ_Object; rescopeILType scoref (if useUIntPtr then ilg.typ_UIntPtr else ilg.typ_IntPtr)],ILType.Void,emptyILGenericArgsList) type ILEnumInfo = { enumValues: (string * ILFieldInit) list; enumType: ILType } let getTyOfILEnumInfo info = info.enumType let computeILEnumInfo (mdName,mdFields: ILFieldDefs) = match (List.partition (fun fd -> fd.IsStatic) mdFields.AsList) with | staticFields,[vfd] -> { enumType = vfd.Type; enumValues = staticFields |> List.map (fun fd -> (fd.Name, match fd.LiteralValue with Some i -> i | None -> failwith ("info_of_enum_tdef: badly formed enum "+mdName+": static field does not have an default value"))) } | _,[] -> failwith ("info_of_enum_tdef: badly formed enum "+mdName+": no non-static field found") | _,_ -> failwith ("info_of_enum_tdef: badly formed enum "+mdName+": more than one non-static field found") //--------------------------------------------------------------------- // Primitives to help read signatures. These do not use the file cursor, but // pass around an int index //--------------------------------------------------------------------- let sigptr_get_byte bytes sigptr = Bytes.get bytes sigptr, sigptr + 1 let sigptr_get_bool bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr (b0 = 0x01) ,sigptr let sigptr_get_u8 bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr byte b0,sigptr let sigptr_get_i8 bytes sigptr = let i,sigptr = sigptr_get_u8 bytes sigptr sbyte i,sigptr let sigptr_get_u16 bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr let b1,sigptr = sigptr_get_byte bytes sigptr uint16 (b0 ||| (b1 <<< 8)),sigptr let sigptr_get_i16 bytes sigptr = let u,sigptr = sigptr_get_u16 bytes sigptr int16 u,sigptr let sigptr_get_i32 bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr let b1,sigptr = sigptr_get_byte bytes sigptr let b2,sigptr = sigptr_get_byte bytes sigptr let b3,sigptr = sigptr_get_byte bytes sigptr b0 ||| (b1 <<< 8) ||| (b2 <<< 16) ||| (b3 <<< 24),sigptr let sigptr_get_u32 bytes sigptr = let u,sigptr = sigptr_get_i32 bytes sigptr uint32 u,sigptr let sigptr_get_i64 bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr let b1,sigptr = sigptr_get_byte bytes sigptr let b2,sigptr = sigptr_get_byte bytes sigptr let b3,sigptr = sigptr_get_byte bytes sigptr let b4,sigptr = sigptr_get_byte bytes sigptr let b5,sigptr = sigptr_get_byte bytes sigptr let b6,sigptr = sigptr_get_byte bytes sigptr let b7,sigptr = sigptr_get_byte bytes sigptr int64 b0 ||| (int64 b1 <<< 8) ||| (int64 b2 <<< 16) ||| (int64 b3 <<< 24) ||| (int64 b4 <<< 32) ||| (int64 b5 <<< 40) ||| (int64 b6 <<< 48) ||| (int64 b7 <<< 56), sigptr let sigptr_get_u64 bytes sigptr = let u,sigptr = sigptr_get_i64 bytes sigptr uint64 u,sigptr let float32_of_bits (x:int32) = System.BitConverter.ToSingle(System.BitConverter.GetBytes(x),0) let float_of_bits (x:int64) = System.BitConverter.Int64BitsToDouble(x) let sigptr_get_ieee32 bytes sigptr = let u,sigptr = sigptr_get_i32 bytes sigptr float32_of_bits u,sigptr let sigptr_get_ieee64 bytes sigptr = let u,sigptr = sigptr_get_i64 bytes sigptr float_of_bits u,sigptr let sigptr_get_intarray n (bytes:byte[]) sigptr = let res = Bytes.zeroCreate n for i = 0 to n - 1 do res.[i] <- bytes.[sigptr + i] res, sigptr + n let sigptr_get_string n bytes sigptr = let intarray,sigptr = sigptr_get_intarray n bytes sigptr System.Text.Encoding.UTF8.GetString(intarray , 0, intarray.Length), sigptr let sigptr_get_z_i32 bytes sigptr = let b0,sigptr = sigptr_get_byte bytes sigptr if b0 <= 0x7F then b0, sigptr elif b0 <= 0xbf then let b0 = b0 &&& 0x7f let b1,sigptr = sigptr_get_byte bytes sigptr (b0 <<< 8) ||| b1, sigptr else let b0 = b0 &&& 0x3f let b1,sigptr = sigptr_get_byte bytes sigptr let b2,sigptr = sigptr_get_byte bytes sigptr let b3,sigptr = sigptr_get_byte bytes sigptr (b0 <<< 24) ||| (b1 <<< 16) ||| (b2 <<< 8) ||| b3, sigptr let sigptr_get_serstring bytes sigptr = let len,sigptr = sigptr_get_z_i32 bytes sigptr sigptr_get_string ( len) bytes sigptr let sigptr_get_serstring_possibly_null bytes sigptr = let b0,new_sigptr = sigptr_get_byte bytes sigptr if b0 = 0xFF then // null case None,new_sigptr else // throw away new_sigptr, getting length & text advance let len,sigptr = sigptr_get_z_i32 bytes sigptr let s, sigptr = sigptr_get_string len bytes sigptr Some(s),sigptr //--------------------------------------------------------------------- // Get the public key token from the public key. //--------------------------------------------------------------------- let mkRefToILAssembly (m: ILAssemblyManifest) = ILAssemblyRef.Create(m.Name, None, (match m.PublicKey with Some k -> Some (PublicKey.KeyAsToken(k)) | None -> None), m.Retargetable, m.Version, m.Locale) let z_unsigned_int_size n = if n <= 0x7F then 1 elif n <= 0x3FFF then 2 else 3 let z_unsigned_int n = if n >= 0 && n <= 0x7F then [| byte n |] elif n >= 0x80 && n <= 0x3FFF then [| byte (0x80 ||| (n >>>& 8)); byte (n &&& 0xFF) |] else [| byte (0xc0 ||| (n >>>& 24)); byte ((n >>>& 16) &&& 0xFF); byte ((n >>>& 8) &&& 0xFF); byte (n &&& 0xFF) |] let string_as_utf8_bytes (s:string) = System.Text.Encoding.UTF8.GetBytes s (* Little-endian encoding of int64 *) let dw7 n = byte ((n >>> 56) &&& 0xFFL) let dw6 n = byte ((n >>> 48) &&& 0xFFL) let dw5 n = byte ((n >>> 40) &&& 0xFFL) let dw4 n = byte ((n >>> 32) &&& 0xFFL) let dw3 n = byte ((n >>> 24) &&& 0xFFL) let dw2 n = byte ((n >>> 16) &&& 0xFFL) let dw1 n = byte ((n >>> 8) &&& 0xFFL) let dw0 n = byte (n &&& 0xFFL) let u8AsBytes (i:byte) = [| i |] let u16AsBytes x = let n = (int x) in [| byte (b0 n); byte (b1 n) |] let i32AsBytes i = [| byte (b0 i); byte (b1 i); byte (b2 i); byte (b3 i) |] let i64AsBytes i = [| dw0 i; dw1 i; dw2 i; dw3 i; dw4 i; dw5 i; dw6 i; dw7 i |] let i8AsBytes (i:sbyte) = u8AsBytes (byte i) let i16AsBytes (i:int16) = u16AsBytes (uint16 i) let u32AsBytes (i:uint32) = i32AsBytes (int32 i) let u64AsBytes (i:uint64) = i64AsBytes (int64 i) let bits_of_float32 (x:float32) = System.BitConverter.ToInt32(System.BitConverter.GetBytes(x),0) let bits_of_float (x:float) = System.BitConverter.DoubleToInt64Bits(x) let ieee32AsBytes i = i32AsBytes (bits_of_float32 i) let ieee64AsBytes i = i64AsBytes (bits_of_float i) let et_END = 0x00uy let et_VOID = 0x01uy let et_BOOLEAN = 0x02uy let et_CHAR = 0x03uy let et_I1 = 0x04uy let et_U1 = 0x05uy let et_I2 = 0x06uy let et_U2 = 0x07uy let et_I4 = 0x08uy let et_U4 = 0x09uy let et_I8 = 0x0Auy let et_U8 = 0x0Buy let et_R4 = 0x0Cuy let et_R8 = 0x0Duy let et_STRING = 0x0Euy let et_PTR = 0x0Fuy let et_BYREF = 0x10uy let et_VALUETYPE = 0x11uy let et_CLASS = 0x12uy let et_VAR = 0x13uy let et_ARRAY = 0x14uy let et_WITH = 0x15uy let et_TYPEDBYREF = 0x16uy let et_I = 0x18uy let et_U = 0x19uy let et_FNPTR = 0x1Buy let et_OBJECT = 0x1Cuy let et_SZARRAY = 0x1Duy let et_MVAR = 0x1Euy let et_CMOD_REQD = 0x1Fuy let et_CMOD_OPT = 0x20uy let formatILVersion ((a,b,c,d):ILVersionInfo) = sprintf "%d.%d.%d.%d" (int a) (int b) (int c) (int d) let encodeCustomAttrString s = let arr = string_as_utf8_bytes s Array.concat [ z_unsigned_int arr.Length; arr ] let rec encodeCustomAttrElemType x = match x with | ILType.Value tspec when tspec.Name = "System.SByte" -> [| et_I1 |] | ILType.Value tspec when tspec.Name = "System.Byte" -> [| et_U1 |] | ILType.Value tspec when tspec.Name = "System.Int16" -> [| et_I2 |] | ILType.Value tspec when tspec.Name = "System.UInt16" -> [| et_U2 |] | ILType.Value tspec when tspec.Name = "System.Int32" -> [| et_I4 |] | ILType.Value tspec when tspec.Name = "System.UInt32" -> [| et_U4 |] | ILType.Value tspec when tspec.Name = "System.Int64" -> [| et_I8 |] | ILType.Value tspec when tspec.Name = "System.UInt64" -> [| et_U8 |] | ILType.Value tspec when tspec.Name = "System.Double" -> [| et_R8 |] | ILType.Value tspec when tspec.Name = "System.Single" -> [| et_R4 |] | ILType.Value tspec when tspec.Name = "System.Char" -> [| et_CHAR |] | ILType.Value tspec when tspec.Name = "System.Boolean" -> [| et_BOOLEAN |] | ILType.Boxed tspec when tspec.Name = "System.String" -> [| et_STRING |] | ILType.Boxed tspec when tspec.Name = "System.Object" -> [| 0x51uy |] | ILType.Boxed tspec when tspec.Name = "System.Type" -> [| 0x50uy |] | ILType.Value tspec -> Array.append [| 0x55uy |] (encodeCustomAttrString tspec.TypeRef.QualifiedNameWithNoShortMscorlib) | ILType.Array (shape, elemType) when shape = ILArrayShape.SingleDimensional -> Array.append [| et_SZARRAY |] (encodeCustomAttrElemType elemType) | _ -> failwith "encodeCustomAttrElemType: unrecognized custom element type" /// Given a custom attribute element, work out the type of the .NET argument for that element let rec encodeCustomAttrElemTypeForObject x = match x with | ILAttribElem.String _ -> [| et_STRING |] | ILAttribElem.Bool _ -> [| et_BOOLEAN |] | ILAttribElem.Char _ -> [| et_CHAR |] | ILAttribElem.SByte _ -> [| et_I1 |] | ILAttribElem.Int16 _ -> [| et_I2 |] | ILAttribElem.Int32 _ -> [| et_I4 |] | ILAttribElem.Int64 _ -> [| et_I8 |] | ILAttribElem.Byte _ -> [| et_U1 |] | ILAttribElem.UInt16 _ -> [| et_U2 |] | ILAttribElem.UInt32 _ -> [| et_U4 |] | ILAttribElem.UInt64 _ -> [| et_U8 |] | ILAttribElem.Type _ -> [| 0x50uy |] | ILAttribElem.TypeRef _ -> [| 0x50uy |] | ILAttribElem.Null _ -> [| et_STRING |]// yes, the 0xe prefix is used when passing a "null" to a property or argument of type "object" here | ILAttribElem.Single _ -> [| et_R4 |] | ILAttribElem.Double _ -> [| et_R8 |] | ILAttribElem.Array (elemTy,_) -> [| yield et_SZARRAY; yield! encodeCustomAttrElemType elemTy |] let rec decodeCustomAttrElemType ilg bytes sigptr x = match x with | x when x = et_I1 -> ilg.typ_SByte, sigptr | x when x = et_U1 -> ilg.typ_Byte, sigptr | x when x = et_I2 -> ilg.typ_Int16, sigptr | x when x = et_U2 -> ilg.typ_UInt16, sigptr | x when x = et_I4 -> ilg.typ_Int32, sigptr | x when x = et_U4 -> ilg.typ_UInt32, sigptr | x when x = et_I8 -> ilg.typ_Int64, sigptr | x when x = et_U8 -> ilg.typ_UInt64, sigptr | x when x = et_R8 -> ilg.typ_Double, sigptr | x when x = et_R4 -> ilg.typ_Single, sigptr | x when x = et_CHAR -> ilg.typ_Char, sigptr | x when x = et_BOOLEAN -> ilg.typ_Bool, sigptr | x when x = et_STRING -> ilg.typ_String, sigptr | x when x = et_OBJECT -> ilg.typ_Object, sigptr | x when x = et_SZARRAY -> let et,sigptr = sigptr_get_u8 bytes sigptr let elemTy,sigptr = decodeCustomAttrElemType ilg bytes sigptr et mkILArr1DTy elemTy, sigptr | x when x = 0x50uy -> ilg.typ_Type, sigptr | _ -> failwithf "decodeCustomAttrElemType ilg: unrecognized custom element type: %A" x /// Given a custom attribute element, encode it to a binary representation according to the rules in Ecma 335 Partition II. let rec encodeCustomAttrPrimValue ilg c = match c with | ILAttribElem.Bool b -> [| (if b then 0x01uy else 0x00uy) |] | ILAttribElem.String None | ILAttribElem.Type None | ILAttribElem.TypeRef None | ILAttribElem.Null -> [| 0xFFuy |] | ILAttribElem.String (Some s) -> encodeCustomAttrString s | ILAttribElem.Char x -> u16AsBytes (uint16 x) | ILAttribElem.SByte x -> i8AsBytes x | ILAttribElem.Int16 x -> i16AsBytes x | ILAttribElem.Int32 x -> i32AsBytes x | ILAttribElem.Int64 x -> i64AsBytes x | ILAttribElem.Byte x -> u8AsBytes x | ILAttribElem.UInt16 x -> u16AsBytes x | ILAttribElem.UInt32 x -> u32AsBytes x | ILAttribElem.UInt64 x -> u64AsBytes x | ILAttribElem.Single x -> ieee32AsBytes x | ILAttribElem.Double x -> ieee64AsBytes x | ILAttribElem.Type (Some ty) -> encodeCustomAttrString ty.QualifiedNameWithNoShortMscorlib | ILAttribElem.TypeRef (Some tref) -> encodeCustomAttrString tref.QualifiedNameWithNoShortMscorlib | ILAttribElem.Array (_,elems) -> [| yield! i32AsBytes elems.Length; for elem in elems do yield! encodeCustomAttrPrimValue ilg elem |] and encodeCustomAttrValue ilg ty c = match ty, c with | ILType.Boxed tspec, _ when tspec.Name = "System.Object" -> [| yield! encodeCustomAttrElemTypeForObject c; yield! encodeCustomAttrPrimValue ilg c |] | ILType.Array (shape, elemType), ILAttribElem.Array (_,elems) when shape = ILArrayShape.SingleDimensional -> [| yield! i32AsBytes elems.Length; for elem in elems do yield! encodeCustomAttrValue ilg elemType elem |] | _ -> encodeCustomAttrPrimValue ilg c let encodeCustomAttrNamedArg ilg (nm, ty, prop, elem) = [| yield (if prop then 0x54uy else 0x53uy) yield! encodeCustomAttrElemType ty; yield! encodeCustomAttrString nm; yield! encodeCustomAttrValue ilg ty elem |] let mkILCustomAttribMethRef (ilg: ILGlobals) (mspec:ILMethodSpec, fixedArgs: list<_>, namedArgs: list<_>) = let argtys = mspec.MethodRef.ArgTypes let args = [| yield! [| 0x01uy; 0x00uy; |] for (argty,fixedArg) in Seq.zip argtys fixedArgs do yield! encodeCustomAttrValue ilg argty fixedArg yield! u16AsBytes (uint16 namedArgs.Length) for namedArg in namedArgs do yield! encodeCustomAttrNamedArg ilg namedArg |] { Method = mspec; #if SILVERLIGHT Arguments = fixedArgs, namedArgs #endif Data = args } let mkILCustomAttribute ilg (tref,argtys,argvs,propvs) = mkILCustomAttribMethRef ilg (mkILNonGenericCtorMethSpec (tref,argtys),argvs,propvs) (* Q: CompilerGeneratedAttribute is new in 2.0. Unconditional generation of this attribute prevents running on 1.1 Framework. (discovered running on early mono version). *) let tref_CompilerGeneratedAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_CompilerGeneratedAttribute) let tname_DebuggerNonUserCodeAttribute = "System.Diagnostics.DebuggerNonUserCodeAttribute" let tname_DebuggableAttribute_DebuggingModes = "DebuggingModes" let tname_DebuggerHiddenAttribute = "System.Diagnostics.DebuggerHiddenAttribute" let tname_DebuggerDisplayAttribute = "System.Diagnostics.DebuggerDisplayAttribute" let tname_DebuggerTypeProxyAttribute = "System.Diagnostics.DebuggerTypeProxyAttribute" let tname_DebuggerStepThroughAttribute = "System.Diagnostics.DebuggerStepThroughAttribute" let tname_DebuggerBrowsableAttribute = "System.Diagnostics.DebuggerBrowsableAttribute" let tname_DebuggerBrowsableState = "System.Diagnostics.DebuggerBrowsableState" let tref_DebuggerNonUserCodeAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerNonUserCodeAttribute) let tref_DebuggerStepThroughAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerStepThroughAttribute) let tref_DebuggerHiddenAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerHiddenAttribute) let tref_DebuggerDisplayAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerDisplayAttribute) let tref_DebuggerTypeProxyAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerTypeProxyAttribute) let tref_DebuggerBrowsableAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggerBrowsableAttribute) let tref_DebuggableAttribute ilg = mkILTyRef (ilg.mscorlibScopeRef,tname_DebuggableAttribute) let tref_DebuggableAttribute_DebuggingModes ilg = mkILNestedTyRef (ilg.mscorlibScopeRef,[tname_DebuggableAttribute],tname_DebuggableAttribute_DebuggingModes) let typ_DebuggerBrowsableState ilg = let tref_DebuggerBrowsableState = mkILTyRef(ilg.mscorlibScopeRef,tname_DebuggerBrowsableState) ILType.Value (mkILNonGenericTySpec tref_DebuggerBrowsableState) let mkCompilerGeneratedAttribute ilg = mkILCustomAttribute ilg (tref_CompilerGeneratedAttribute ilg,[],[],[]) let mkDebuggerNonUserCodeAttribute ilg = mkILCustomAttribute ilg (tref_DebuggerNonUserCodeAttribute ilg,[],[],[]) let mkDebuggerHiddenAttribute ilg = mkILCustomAttribute ilg (tref_DebuggerHiddenAttribute ilg,[],[],[]) let mkDebuggerDisplayAttribute ilg s = mkILCustomAttribute ilg (tref_DebuggerDisplayAttribute ilg,[ilg.typ_String],[ILAttribElem.String (Some s)],[]) let mkDebuggerTypeProxyAttribute ilg (ty:ILType) = mkILCustomAttribute ilg (tref_DebuggerTypeProxyAttribute ilg,[ilg.typ_Type],[ILAttribElem.TypeRef (Some ty.TypeRef)],[]) let mkDebuggerBrowsableAttribute ilg n = mkILCustomAttribute ilg (tref_DebuggerBrowsableAttribute ilg,[typ_DebuggerBrowsableState ilg],[ILAttribElem.Int32 n],[]) let mkDebuggerBrowsableNeverAttribute ilg = match ilg.debuggerBrowsableNeverAttributeCache with | None -> let res = mkDebuggerBrowsableAttribute ilg 0 ilg.debuggerBrowsableNeverAttributeCache <- Some res res | Some res -> res let mkDebuggerStepThroughAttribute ilg = mkILCustomAttribute ilg (tref_DebuggerStepThroughAttribute ilg,[],[],[]) let mkDebuggableAttribute ilg (jitTracking, jitOptimizerDisabled) = mkILCustomAttribute ilg (tref_DebuggableAttribute ilg,[ilg.typ_Bool;ilg.typ_Bool], [ILAttribElem.Bool jitTracking; ILAttribElem.Bool jitOptimizerDisabled],[]) // Bug 2129. Requests attributes to be added to compiler generated methods let addGeneratedAttrs ilg (attrs: ILAttributes) = let attribs = match ilg.generatedAttribsCache with | [] -> let res = [ if not ilg.noDebugData then yield mkCompilerGeneratedAttribute ilg yield mkDebuggerNonUserCodeAttribute ilg] ilg.generatedAttribsCache <- res res | res -> res mkILCustomAttrs (attrs.AsList @ attribs) let addMethodGeneratedAttrs ilg (mdef:ILMethodDef) = {mdef with CustomAttrs = addGeneratedAttrs ilg mdef.CustomAttrs} let addPropertyGeneratedAttrs ilg (pdef:ILPropertyDef) = {pdef with CustomAttrs = addGeneratedAttrs ilg pdef.CustomAttrs} let addFieldGeneratedAttrs ilg (fdef:ILFieldDef) = {fdef with CustomAttrs = addGeneratedAttrs ilg fdef.CustomAttrs} let add_never_attrs ilg (attrs: ILAttributes) = if ilg.generateDebugBrowsableData then mkILCustomAttrs (attrs.AsList @ [mkDebuggerBrowsableNeverAttribute ilg]) else attrs let addPropertyNeverAttrs ilg (pdef:ILPropertyDef) = {pdef with CustomAttrs = add_never_attrs ilg pdef.CustomAttrs} let addFieldNeverAttrs ilg (fdef:ILFieldDef) = {fdef with CustomAttrs = add_never_attrs ilg fdef.CustomAttrs} // PermissionSet is a 'blob' having the following format: // • A byte containing a period (.). // • A compressed int32 containing the number of attributes encoded in the blob. // • An array of attributes each containing the following: // o A String, which is the fully-qualified type name of the attribute. (Strings are encoded // as a compressed int to indicate the size followed by an array of UTF8 characters.) // o A set of properties, encoded as the named arguments to a custom attribute would be (as // in §23.3, beginning with NumNamed). let mkPermissionSet (ilg: ILGlobals) (action,attributes: list<(ILTypeRef * (string * ILType * ILAttribElem) list)>) = let bytes = [| yield (byte '.'); yield! z_unsigned_int attributes.Length; for (tref:ILTypeRef,props) in attributes do yield! encodeCustomAttrString tref.QualifiedNameWithNoShortMscorlib let bytes = [| yield! z_unsigned_int props.Length; for (nm,typ,value) in props do yield! encodeCustomAttrNamedArg ilg (nm,typ,true,value)|] yield! z_unsigned_int bytes.Length; yield! bytes |] PermissionSet(action,bytes) // Parse an IL type signature argument within a custom attribute blob type ILTypeSigParser(tstring : string) = let mutable startPos = 0 let mutable currentPos = 0 let reset() = startPos <- 0 ; currentPos <- 0 let nil = '\r' // cannot appear in a type sig // take a look at the next value, but don't advance let peek() = if currentPos < (tstring.Length-1) then tstring.[currentPos+1] else nil let peekN(skip) = if currentPos < (tstring.Length - skip) then tstring.[currentPos+skip] else nil // take a look at the current value, but don't advance let here() = if currentPos < tstring.Length then tstring.[currentPos] else nil // move on to the next character let step() = currentPos <- currentPos+1 // ignore the current lexeme let skip() = startPos <- currentPos // ignore the current lexeme, advance let drop() = skip() ; step() ; skip() // return the current lexeme, advance let take() = let s = if currentPos < tstring.Length then tstring.[startPos..currentPos] else "" drop() s // The format we accept is // "{`[,+]}{}{}" E.g., // // System.Collections.Generic.Dictionary // `2[ // [System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089], // dev.virtualearth.net.webservices.v1.search.CategorySpecificPropertySet], // mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" // // Note that // • Since we're only reading valid IL, we assume that the signature is properly formed // • For type parameters, if the type is non-local, it will be wrapped in brackets ([]) // • Still needs testing with jagged arrays and byref parameters member private x.ParseType() = // Does the type name start with a leading '['? If so, ignore it // (if the specialization type is in another module, it will be wrapped in bracket) if here() = '[' then drop() // 1. Iterate over beginning of type, grabbing the type name and determining if it's generic or an array let typeName = while (peek() <> '`') && (peek() <> '[') && (peek() <> ']') && (peek() <> ',') && (peek() <> nil) do step() take() // 2. Classify the type // Is the type generic? let typeName, specializations = if here() = '`' then drop() // step to the number // fetch the arity let arity = while (int(here()) >= (int('0'))) && (int(here()) <= ((int('9')))) && (int(peek()) >= (int('0'))) && (int(peek()) <= ((int('9')))) do step() System.Int32.Parse(take()) // skip the '[' drop() // get the specializations typeName+"`"+(arity.ToString()), Some(([for _i in 0..arity-1 do yield x.ParseType()])) else typeName, None // Is the type an array? let rank = if here() = '[' then let mutable rank = 0 while here() <> ']' do rank <- rank + 1 step() drop() Some(ILArrayShape(List.repeat rank (Some 0, None))) else None // Is there a scope? let scope = if (here() = ',' || here() = ' ') && (peek() <> '[' && peekN(2) <> '[') then let grabScopeComponent() = if here() = ',' then drop() // ditch the ',' if here() = ' ' then drop() // ditch the ' ' while (peek() <> ',' && peek() <> ']' && peek() <> nil) do step() take() let scope = [ yield grabScopeComponent() // assembly yield grabScopeComponent() // version yield grabScopeComponent() // culture yield grabScopeComponent() // public key token ] |> String.concat "," ILScopeRef.Assembly(ILAssemblyRef.FromAssemblyName(System.Reflection.AssemblyName(scope))) else ILScopeRef.Local // strip any extraneous trailing brackets or commas if (here() = ']') then drop() if (here() = ',') then drop() // build the IL type let tref = mkILTyRef(scope, typeName) let genericArgs = match specializations with | None -> emptyILGenericArgs | Some(genericArgs) -> genericArgs let tspec = ILTypeSpec.Create(tref,genericArgs) let ilty = match tspec.Name with | "System.SByte" | "System.Byte" | "System.Int16" | "System.UInt16" | "System.Int32" | "System.UInt32" | "System.Int64" | "System.UInt64" | "System.Char" | "System.Double" | "System.Single" | "System.Boolean" -> ILType.Value(tspec) | _ -> ILType.Boxed(tspec) // if it's an array, wrap it - otherwise, just return the IL type match rank with | Some(r) -> ILType.Array(r,ilty) | _ -> ilty member x.ParseTypeSpec() = reset() let ilty = x.ParseType() ILAttribElem.Type(Some(ilty)) let decodeILAttribData ilg (ca: ILAttribute) scope = let bytes = ca.Data let sigptr = 0 let bb0,sigptr = sigptr_get_byte bytes sigptr let bb1,sigptr = sigptr_get_byte bytes sigptr if not (bb0 = 0x01 && bb1 = 0x00) then failwith "decodeILAttribData: invalid data"; let rec parseVal argty sigptr = match argty with | ILType.Value tspec when tspec.Name = "System.SByte" -> let n,sigptr = sigptr_get_i8 bytes sigptr ILAttribElem.SByte n, sigptr | ILType.Value tspec when tspec.Name = "System.Byte" -> let n,sigptr = sigptr_get_u8 bytes sigptr ILAttribElem.Byte n, sigptr | ILType.Value tspec when tspec.Name = "System.Int16" -> let n,sigptr = sigptr_get_i16 bytes sigptr ILAttribElem.Int16 n, sigptr | ILType.Value tspec when tspec.Name = "System.UInt16" -> let n,sigptr = sigptr_get_u16 bytes sigptr ILAttribElem.UInt16 n, sigptr | ILType.Value tspec when tspec.Name = "System.Int32" -> let n,sigptr = sigptr_get_i32 bytes sigptr ILAttribElem.Int32 n, sigptr | ILType.Value tspec when tspec.Name = "System.UInt32" -> let n,sigptr = sigptr_get_u32 bytes sigptr ILAttribElem.UInt32 n, sigptr | ILType.Value tspec when tspec.Name = "System.Int64" -> let n,sigptr = sigptr_get_i64 bytes sigptr ILAttribElem.Int64 n, sigptr | ILType.Value tspec when tspec.Name = "System.UInt64" -> let n,sigptr = sigptr_get_u64 bytes sigptr ILAttribElem.UInt64 n, sigptr | ILType.Value tspec when tspec.Name = "System.Double" -> let n,sigptr = sigptr_get_ieee64 bytes sigptr ILAttribElem.Double n, sigptr | ILType.Value tspec when tspec.Name = "System.Single" -> let n,sigptr = sigptr_get_ieee32 bytes sigptr ILAttribElem.Single n, sigptr | ILType.Value tspec when tspec.Name = "System.Char" -> let n,sigptr = sigptr_get_u16 bytes sigptr ILAttribElem.Char (char (int32 n)), sigptr | ILType.Value tspec when tspec.Name = "System.Boolean" -> let n,sigptr = sigptr_get_byte bytes sigptr ILAttribElem.Bool (not (n = 0)), sigptr | ILType.Boxed tspec when tspec.Name = "System.String" -> let n,sigptr = sigptr_get_serstring_possibly_null bytes sigptr ILAttribElem.String n, sigptr | ILType.Boxed tspec when tspec.Name = "System.Type" -> let nOpt,sigptr = sigptr_get_serstring_possibly_null bytes sigptr match nOpt with | None -> ILAttribElem.TypeRef(None), sigptr | Some n -> try let parser = ILTypeSigParser(n) parser.ParseTypeSpec(),sigptr with e -> failwith (sprintf "decodeILAttribData: error parsing type in custom attribute blob: %s" e.Message) | ILType.Boxed tspec when tspec.Name = "System.Object" -> let et,sigptr = sigptr_get_u8 bytes sigptr if et = 0xFFuy then ILAttribElem.Null, sigptr else let ty,sigptr = decodeCustomAttrElemType ilg bytes sigptr et parseVal ty sigptr | ILType.Array(shape,elemTy) when shape = ILArrayShape.SingleDimensional -> let n,sigptr = sigptr_get_i32 bytes sigptr let rec parseElems acc n sigptr = if n = 0 then List.rev acc else let v,sigptr = parseVal elemTy sigptr parseElems (v ::acc) (n-1) sigptr let elems = parseElems [] n sigptr ILAttribElem.Array(elemTy,elems), sigptr | ILType.Value _ -> (* assume it is an enumeration *) let n,sigptr = sigptr_get_i32 bytes sigptr ILAttribElem.Int32 n, sigptr | _ -> failwith "decodeILAttribData: attribute data involves an enum or System.Type value" let rec parseFixed argtys sigptr = match argtys with [] -> [],sigptr | h::t -> let nh,sigptr = parseVal h sigptr let nt,sigptr = parseFixed t sigptr nh ::nt, sigptr let fixedArgs,sigptr = parseFixed (ILList.toList ca.Method.FormalArgTypes) sigptr let nnamed,sigptr = sigptr_get_u16 bytes sigptr let rec parseNamed acc n sigptr = if n = 0 then List.rev acc else let isPropByte,sigptr = sigptr_get_u8 bytes sigptr let isProp = (int isPropByte = 0x54) let et,sigptr = sigptr_get_u8 bytes sigptr // We have a named value let ty,sigptr = // REVIEW: Post-M3, consider removing the restriction for scope - it's unnecessary // because you can reconstruct scope using the qualified name from the CA Blob if (0x50 = (int et) || 0x55 = (int et)) && Option.isSome scope then let qualified_tname,sigptr = sigptr_get_serstring bytes sigptr // we're already getting the qualified name from the binary blob // if we don't split out the unqualified name from the qualified name, // we'll write the qualified assembly reference string twice to the binary blob let unqualified_tname = qualified_tname.Split([|','|]).[0] let scoref = Option.get scope let tref = mkILTyRef (scoref,unqualified_tname) let tspec = mkILNonGenericTySpec tref ILType.Value(tspec),sigptr else decodeCustomAttrElemType ilg bytes sigptr et let nm,sigptr = sigptr_get_serstring bytes sigptr let v,sigptr = parseVal ty sigptr parseNamed ((nm,ty,isProp,v) :: acc) (n-1) sigptr let named = parseNamed [] (int nnamed) sigptr fixedArgs,named let mkDebuggableAttributeV2 ilg (jitTracking, ignoreSymbolStoreSequencePoints, jitOptimizerDisabled,enableEnC) = mkILCustomAttribute ilg (tref_DebuggableAttribute ilg,[mkILNonGenericValueTy (tref_DebuggableAttribute_DebuggingModes ilg)], [ILAttribElem.Int32( (* See System.Diagnostics.DebuggableAttribute.DebuggingModes *) (if jitTracking then 1 else 0) ||| (if jitOptimizerDisabled then 256 else 0) ||| (if ignoreSymbolStoreSequencePoints then 2 else 0) ||| (if enableEnC then 4 else 0))],[]) // -------------------------------------------------------------------- // Functions to collect up all the references in a full module or // asssembly manifest. The process also allocates // a unique name to each unique internal assembly reference. // -------------------------------------------------------------------- type ILReferences = { AssemblyReferences: ILAssemblyRef list; ModuleReferences: ILModuleRef list; } type ILReferencesAccumulator = { refsA: Hashset; refsM: Hashset; } let emptyILRefs = { AssemblyReferences=[]; ModuleReferences = []; } (* Now find references. *) let refs_of_assref s x = Hashset.add s.refsA x let refs_of_modref s x = Hashset.add s.refsM x let refs_of_scoref s x = match x with | ILScopeRef.Local -> () | ILScopeRef.Assembly assref -> refs_of_assref s assref | ILScopeRef.Module modref -> refs_of_modref s modref let refs_of_tref s (x:ILTypeRef) = refs_of_scoref s x.Scope let rec refs_of_typ s x = match x with | ILType.Void | ILType.TypeVar _ -> () | ILType.Modified(_,ty1,ty2) -> refs_of_tref s ty1; refs_of_typ s ty2 | ILType.Array (_,ty) | ILType.Ptr ty | ILType.Byref ty -> refs_of_typ s ty | ILType.Value tr | ILType.Boxed tr -> refs_of_tspec s tr | ILType.FunctionPointer mref -> refs_of_callsig s mref and refs_of_inst s i = refs_of_typs s i and refs_of_tspec s (x:ILTypeSpec) = refs_of_tref s x.TypeRef; refs_of_inst s x.GenericArgs and refs_of_callsig s csig = refs_of_typs s csig.ArgTypes; refs_of_typ s csig.ReturnType and refs_of_genparam s x = refs_of_typs s x.Constraints and refs_of_genparams s b = List.iter (refs_of_genparam s) b and refs_of_dloc s ts = refs_of_tref s ts and refs_of_mref s (x:ILMethodRef) = refs_of_dloc s x.EnclosingTypeRef ; refs_of_typs s x.mrefArgs; refs_of_typ s x.mrefReturn and refs_of_fref s x = refs_of_tref s x.EnclosingTypeRef; refs_of_typ s x.Type and refs_of_ospec s (OverridesSpec(mref,ty)) = refs_of_mref s mref; refs_of_typ s ty and refs_of_mspec s (x: ILMethodSpec) = refs_of_mref s x.MethodRef; refs_of_typ s x.EnclosingType; refs_of_inst s x.GenericArgs and refs_of_fspec s x = refs_of_fref s x.FieldRef; refs_of_typ s x.EnclosingType and refs_of_typs s l = ILList.iter (refs_of_typ s) l and refs_of_token s x = match x with | ILToken.ILType ty -> refs_of_typ s ty | ILToken.ILMethod mr -> refs_of_mspec s mr | ILToken.ILField fr -> refs_of_fspec s fr and refs_of_custom_attr s x = refs_of_mspec s x.Method and refs_of_custom_attrs s (cas : ILAttributes) = List.iter (refs_of_custom_attr s) cas.AsList and refs_of_varargs s tyso = Option.iter (refs_of_typs s) tyso and refs_of_instr s x = match x with | I_call (_,mr,varargs) | I_newobj (mr,varargs) | I_callvirt (_,mr,varargs) -> refs_of_mspec s mr; refs_of_varargs s varargs | I_callconstraint (_,tr,mr,varargs) -> refs_of_typ s tr; refs_of_mspec s mr; refs_of_varargs s varargs | I_calli (_,callsig,varargs) -> refs_of_callsig s callsig; refs_of_varargs s varargs | I_jmp mr | I_ldftn mr | I_ldvirtftn mr -> refs_of_mspec s mr | I_ldsfld (_,fr) | I_ldfld (_,_,fr) | I_ldsflda fr | I_ldflda fr | I_stsfld (_,fr) | I_stfld (_,_,fr) -> refs_of_fspec s fr | I_isinst ty | I_castclass ty | I_cpobj ty | I_initobj ty | I_ldobj (_,_,ty) | I_stobj (_,_,ty) | I_box ty |I_unbox ty | I_unbox_any ty | I_sizeof ty | I_ldelem_any (_,ty) | I_ldelema (_,_,_,ty) |I_stelem_any (_,ty) | I_newarr (_,ty) | I_mkrefany ty | I_refanyval ty | EI_ilzero ty -> refs_of_typ s ty | I_ldtoken token -> refs_of_token s token | I_stelem _|I_ldelem _|I_ldstr _|I_switch _|I_stloc _|I_stind _ | I_starg _|I_ldloca _|I_ldloc _|I_ldind _ | I_ldarga _|I_ldarg _|I_leave _|I_br _ | I_brcmp _|I_rethrow|I_refanytype|I_ldlen|I_throw|I_initblk _ |I_cpblk _ | I_localloc|I_ret |I_endfilter|I_endfinally|I_arglist | I_other _ | I_break | AI_add | AI_add_ovf | AI_add_ovf_un | AI_and | AI_div | AI_div_un | AI_ceq | AI_cgt | AI_cgt_un | AI_clt | AI_clt_un | AI_conv _ | AI_conv_ovf _ | AI_conv_ovf_un _ | AI_mul | AI_mul_ovf | AI_mul_ovf_un | AI_rem | AI_rem_un | AI_shl | AI_shr | AI_shr_un | AI_sub | AI_sub_ovf | AI_sub_ovf_un | AI_xor | AI_or | AI_neg | AI_not | AI_ldnull | AI_dup | AI_pop | AI_ckfinite | AI_nop | AI_ldc _ | I_seqpoint _ | EI_ldlen_multi _ -> () and refs_of_il_block s c = match c with | ILBasicBlock bb -> Array.iter (refs_of_instr s) bb.Instructions | GroupBlock (_,l) -> List.iter (refs_of_il_code s) l | RestrictBlock (_nms,c) -> refs_of_il_code s c | TryBlock (l,r) -> refs_of_il_code s l; match r with | FaultBlock flt -> refs_of_il_code s flt | FinallyBlock flt -> refs_of_il_code s flt | FilterCatchBlock clauses -> clauses |> List.iter (fun (flt,ctch) -> refs_of_il_code s ctch; match flt with | CodeFilter fltcode -> refs_of_il_code s fltcode | TypeFilter ty -> refs_of_typ s ty) and refs_of_il_code s c = refs_of_il_block s c and refs_of_ilmbody s il = ILList.iter (refs_of_local s) il.Locals; refs_of_il_code s il.Code and refs_of_local s loc = refs_of_typ s loc.Type and refs_of_mbody s x = match x with | MethodBody.IL il -> refs_of_ilmbody s il | MethodBody.PInvoke (attr) -> refs_of_modref s attr.Where | _ -> () and refs_of_mdef s md = ILList.iter (refs_of_param s) md.Parameters; refs_of_return s md.Return; refs_of_mbody s md.mdBody.Contents; refs_of_custom_attrs s md.CustomAttrs; refs_of_genparams s md.GenericParams and refs_of_param s p = refs_of_typ s p.Type and refs_of_return s (rt:ILReturn) = refs_of_typ s rt.Type and refs_of_mdefs s x = Seq.iter (refs_of_mdef s) x and refs_of_event_def s (ed: ILEventDef) = Option.iter (refs_of_typ s) ed.Type ; refs_of_mref s ed.AddMethod ; refs_of_mref s ed.RemoveMethod; Option.iter (refs_of_mref s) ed.FireMethod ; List.iter (refs_of_mref s) ed.OtherMethods ; refs_of_custom_attrs s ed.CustomAttrs and refs_of_events s (x: ILEventDefs) = List.iter (refs_of_event_def s) x.AsList and refs_of_property_def s pd = Option.iter (refs_of_mref s) pd.SetMethod ; Option.iter (refs_of_mref s) pd.GetMethod ; refs_of_typ s pd.Type ; refs_of_typs s pd.Args ; refs_of_custom_attrs s pd.CustomAttrs and refs_of_properties s (x: ILPropertyDefs) = List.iter (refs_of_property_def s) x.AsList and refs_of_fdef s fd = refs_of_typ s fd.Type; refs_of_custom_attrs s fd.CustomAttrs and refs_of_fields s fields = List.iter (refs_of_fdef s) fields and refs_of_method_impls s mimpls = List.iter (refs_of_method_impl s) mimpls and refs_of_method_impl s m = refs_of_ospec s m.Overrides; refs_of_mspec s m.OverrideBy and refs_of_tdef_kind _s _k = () and refs_of_tdef s (td : ILTypeDef) = refs_of_types s td.NestedTypes; refs_of_genparams s td.GenericParams; refs_of_typs s td.Implements; Option.iter (refs_of_typ s) td.Extends; refs_of_mdefs s td.Methods; refs_of_fields s td.Fields.AsList; refs_of_method_impls s td.MethodImpls.AsList; refs_of_events s td.Events; refs_of_tdef_kind s td.tdKind; refs_of_custom_attrs s td.CustomAttrs; refs_of_properties s td.Properties and refs_of_string _s _ = () and refs_of_types s (types: ILTypeDefs) = Seq.iter (refs_of_tdef s) types and refs_of_exported_type s (c: ILExportedTypeOrForwarder) = refs_of_custom_attrs s c.CustomAttrs and refs_of_exported_types s (tab: ILExportedTypesAndForwarders) = List.iter (refs_of_exported_type s) tab.AsList and refs_of_resource_where s x = match x with | ILResourceLocation.Local _ -> () | ILResourceLocation.File (mref,_) -> refs_of_modref s mref | ILResourceLocation.Assembly aref -> refs_of_assref s aref and refs_of_resource s x = refs_of_resource_where s x.Location; refs_of_custom_attrs s x.CustomAttrs and refs_of_resources s (tab: ILResources) = List.iter (refs_of_resource s) tab.AsList and refs_of_modul s m = refs_of_types s m.TypeDefs; refs_of_resources s m.Resources; Option.iter (refs_of_manifest s) m.Manifest and refs_of_manifest s m = refs_of_custom_attrs s m.CustomAttrs; refs_of_exported_types s m.ExportedTypes let computeILRefs modul = let s = { refsA = Hashset.create 10; refsM = Hashset.create 5; } refs_of_modul s modul; { AssemblyReferences = Hashset.fold (fun x acc -> x::acc) s.refsA []; ModuleReferences = Hashset.fold (fun x acc -> x::acc) s.refsM [] } let tspan = System.TimeSpan(System.DateTime.Now.Ticks - System.DateTime(2000,1,1).Ticks) let parseILVersion (vstr : string) = // matches "v1.2.3.4" or "1.2.3.4". Note, if numbers are missing, returns -1 (not 0). let mutable vstr = vstr.TrimStart [|'v'|] // if the version string contains wildcards, replace them let versionComponents = vstr.Split([|'.'|]) // account for wildcards if versionComponents.Length > 2 then let defaultBuild = (uint16)tspan.Days % System.UInt16.MaxValue - 1us let defaultRevision = (uint16)(System.DateTime.Now.TimeOfDay.TotalSeconds / 2.0) % System.UInt16.MaxValue - 1us if versionComponents.[2] = "*" then if versionComponents.Length > 3 then failwith "Invalid version format" else // set the build number to the number of days since Jan 1, 2000 versionComponents.[2] <- defaultBuild.ToString() ; // Set the revision number to number of seconds today / 2 vstr <- System.String.Join(".",versionComponents) + "." + defaultRevision.ToString() ; elif versionComponents.Length > 3 && versionComponents.[3] = "*" then // Set the revision number to number of seconds today / 2 versionComponents.[3] <- defaultRevision.ToString() ; vstr <- System.String.Join(".",versionComponents) ; let version = System.Version(vstr) let zero32 n = if n < 0 then 0us else uint16(n) // since the minor revision will be -1 if none is specified, we need to truncate to 0 to not break existing code #if SILVERLIGHT let minorRevision = if versionComponents.Length < 4 then 0us else uint16(version.Revision) #else let minorRevision = if versionComponents.Length < 4 then 0us else uint16(version.MinorRevision) #endif (zero32 version.Major, zero32 version.Minor, zero32 version.Build, minorRevision);; let compareILVersions (a1,a2,a3,a4) ((b1,b2,b3,b4) : ILVersionInfo) = let c = compare a1 b1 if c <> 0 then c else let c = compare a2 b2 if c <> 0 then c else let c = compare a3 b3 if c <> 0 then c else let c = compare a4 b4 if c <> 0 then c else 0 let resolveILMethodRef td (mref:ILMethodRef) = let args = mref.ArgTypes let nargs = args.Length let nm = mref.Name let possibles = td.Methods.FindByNameAndArity (nm,nargs) if isNil possibles then failwith ("no method named "+nm+" found in type "+td.Name); match possibles |> List.filter (fun md -> mref.CallingConv = md.CallingConv && // REVIEW: this uses equality on ILType. For CMOD_OPTIONAL this is not going to be correct (md.Parameters,mref.ArgTypes) ||> ILList.lengthsEqAndForall2 (fun p1 p2 -> p1.Type = p2) && // REVIEW: this uses equality on ILType. For CMOD_OPTIONAL this is not going to be correct md.Return.Type = mref.ReturnType) with | [] -> failwith ("no method named "+nm+" with appropriate argument types found in type "+td.Name); | [mdef] -> mdef | _ -> failwith ("multiple methods named "+nm+" appear with identical argument types in type "+td.Name) let mkRefToILModule m = ILModuleRef.Create(m.Name, true, None) let ungenericizeTypeName n = let sym = '`' if String.contains n sym && (* check what comes after the symbol is a number *) (let m = String.rindex n sym let res = ref (m < n.Length - 1) for i = m + 1 to n.Length - 1 do res := !res && n.[i] >= '0' && n.[i] <= '9'; !res) then let pos = String.rindex n sym String.sub n 0 pos else n type ILEventRef = { erA: ILTypeRef; erB: string } static member Create(a,b) = {erA=a;erB=b} member x.EnclosingTypeRef = x.erA member x.Name = x.erB type ILPropertyRef = { prA: ILTypeRef; prB: string } static member Create (a,b) = {prA=a;prB=b} member x.EnclosingTypeRef = x.prA member x.Name = x.prB fsharp-3.0.34/src/absil/ilprint.fs0000775000175000017500000014344112260314606015776 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.ILAsciiWriter open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants open Microsoft.FSharp.Compiler.AbstractIL.IL open System.Text open System.IO #if DEBUG let pretty () = true // -------------------------------------------------------------------- // Pretty printing // -------------------------------------------------------------------- let tyvar_generator = let i = ref 0 fun n -> incr i; n^string !i // Carry an environment because the way we print method variables // depends on the gparams of the current scope. type ppenv = { ppenvClassFormals: int; ppenvMethodFormals: int } let ppenv_enter_method mgparams env = {env with ppenvMethodFormals=mgparams} let ppenv_enter_tdef gparams env = {env with ppenvClassFormals=List.length gparams; ppenvMethodFormals=0} let mk_ppenv = { ppenvClassFormals=0; ppenvMethodFormals=0 } let debug_ppenv = mk_ppenv let ppenv_enter_modul env = { env with ppenvClassFormals=0; ppenvMethodFormals=0 } // -------------------------------------------------------------------- // Pretty printing - output streams // -------------------------------------------------------------------- let output_string (os: TextWriter) (s:string) = os.Write s let output_char (os: TextWriter) (c:char) = os.Write c let output_int os (i:int) = output_string os (string i) let output_hex_digit os i = assert (i >= 0 && i < 16); if i > 9 then output_char os (char (int32 'A' + (i-10))) else output_char os (char (int32 '0' + i)) let output_qstring os s = output_char os '"'; for i = 0 to String.length s - 1 do let c = String.get s i if (c >= '\000' && c <= '\031') || (c >= '\127' && c <= '\255') then let c' = int32 c output_char os '\\'; output_int os (c'/64); output_int os ((c' % 64) / 8); output_int os (c' % 8) else if (c = '"') then (output_char os '\\'; output_char os '"') else if (c = '\\') then (output_char os '\\'; output_char os '\\') else output_char os c done; output_char os '"' let output_sqstring os s = output_char os '\''; for i = 0 to String.length s - 1 do let c = s.[i] if (c >= '\000' && c <= '\031') || (c >= '\127' && c <= '\255') then let c' = int32 c output_char os '\\'; output_int os (c'/64); output_int os ((c' % 64) / 8); output_int os (c' % 8) else if (c = '\\') then (output_char os '\\'; output_char os '\\') else if (c = '\'') then (output_char os '\\'; output_char os '\'') else output_char os c done; output_char os '\'' let output_seq sep f os (a:seq<_>) = use e = a.GetEnumerator() if e.MoveNext() then f os e.Current; while e.MoveNext() do output_string os sep; f os e.Current let output_parens f os a = output_string os "("; f os a; output_string os ")" let output_angled f os a = output_string os "<"; f os a; output_string os ">" let output_bracks f os a = output_string os "["; f os a; output_string os "]" let output_id os n = output_sqstring os n let output_label os n = output_string os n let output_lid os lid = output_seq "." output_string os lid let string_of_type_name (_,n) = n let output_byte os i = output_hex_digit os (i / 16); output_hex_digit os (i % 16) let output_bytes os (bytes:byte[]) = for i = 0 to bytes.Length - 1 do output_byte os (Bytes.get bytes i); output_string os " " let bits_of_float32 (x:float32) = System.BitConverter.ToInt32(System.BitConverter.GetBytes(x),0) let bits_of_float (x:float) = System.BitConverter.DoubleToInt64Bits(x) let output_u8 os (x:byte) = output_string os (string (int x)) let output_i8 os (x:sbyte) = output_string os (string (int x)) let output_u16 os (x:uint16) = output_string os (string (int x)) let output_i16 os (x:int16) = output_string os (string (int x)) let output_u32 os (x:uint32) = output_string os (string (int64 x)) let output_i32 os (x:int32) = output_string os (string x) let output_u64 os (x:uint64) = output_string os (string (int64 x)) let output_i64 os (x:int64) = output_string os (string x) let output_ieee32 os (x:float32) = (output_string os "float32 ("; output_string os (string (bits_of_float32 x)); output_string os ")") let output_ieee64 os (x:float) = (output_string os "float64 ("; output_string os (string (bits_of_float x)); output_string os ")") let rec goutput_scoref _env os = function | ILScopeRef.Local -> () | ILScopeRef.Assembly aref -> output_string os "["; output_sqstring os aref.Name; output_string os "]" | ILScopeRef.Module mref -> output_string os "[.module "; output_sqstring os mref.Name; output_string os "]" and goutput_type_name_ref env os (scoref,enc,n) = goutput_scoref env os scoref; output_seq "/" output_sqstring os (enc@[n]) and goutput_tref env os (x:ILTypeRef) = goutput_type_name_ref env os (x.Scope,x.Enclosing,x.Name) and goutput_typ env os ty = match ty with | ILType.Boxed tr -> goutput_tspec env os tr | ILType.TypeVar tv -> // Special rule to print method type variables in Generic EE preferred form // when an environment is available to help us do this. let cgparams = env.ppenvClassFormals let mgparams = env.ppenvMethodFormals if int tv < cgparams then output_string os "!"; output_tyvar os tv elif int tv - cgparams < mgparams then output_string os "!!"; output_int os (int tv - cgparams); else output_string os "!"; output_tyvar os tv; output_int os (int tv) | ILType.Byref typ -> goutput_typ env os typ; output_string os "&" | ILType.Ptr typ -> goutput_typ env os typ; output_string os "*" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_SByte.Name -> output_string os "int8" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Int16.Name -> output_string os "int16" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Int32.Name -> output_string os "int32" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Int64.Name -> output_string os "int64" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_IntPtr.Name -> output_string os "native int" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Byte.Name -> output_string os "unsigned int8" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_UInt16.Name -> output_string os "unsigned int16" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_UInt32.Name -> output_string os "unsigned int32" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_UInt64.Name -> output_string os "unsigned int64" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_UIntPtr.Name -> output_string os "native unsigned int" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Double.Name -> output_string os "float64" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Single.Name -> output_string os "float32" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Bool.Name -> output_string os "bool" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_Char.Name -> output_string os "char" | ILType.Value tspec when tspec.Name = ecmaILGlobals.tspec_TypedReference.Name -> output_string os "refany" | ILType.Value tspec -> output_string os "value class "; goutput_tref env os tspec.TypeRef; output_string os " "; goutput_gactuals env os tspec.GenericArgs | ILType.Void -> output_string os "void" | ILType.Array (bounds,ty) -> goutput_typ env os ty; output_string os "["; output_arr_bounds os bounds; output_string os "]"; | ILType.FunctionPointer csig -> output_string os "method "; goutput_typ env os csig.ReturnType; output_string os " *("; output_seq "," (goutput_typ env) os csig.ArgTypes; output_string os ")" | _ -> output_string os "NaT" and output_tyvar os d = output_u16 os d; () and goutput_ldtoken_info env os = function | ILToken.ILType x -> goutput_typ env os x | ILToken.ILMethod x -> output_string os "method "; goutput_mspec env os x | ILToken.ILField x -> output_string os "field "; goutput_fspec env os x and goutput_typ_with_shortened_class_syntax env os = function ILType.Boxed tspec when tspec.GenericArgs = emptyILGenericArgs -> goutput_tref env os tspec.TypeRef | typ2 -> goutput_typ env os typ2 and goutput_gactuals env os inst = if inst.Length = 0 then () else output_string os "<"; output_seq ", " (goutput_gactual env) os inst output_string os ">"; and goutput_gactual env os ty = goutput_typ env os ty and goutput_tspec env os tspec = output_string os "class "; goutput_tref env os tspec.TypeRef; output_string os " "; goutput_gactuals env os tspec.GenericArgs; and output_arr_bounds os = function | bounds when bounds = ILArrayShape.SingleDimensional -> () | ILArrayShape l -> output_seq "," (fun os -> function | (None,None) -> output_string os "" | (None,Some sz) -> output_int os sz | (Some lower,None) -> output_int os lower; output_string os " ... " | (Some lower,Some d) -> output_int os lower; output_string os " ... "; output_int os d) os l and goutput_permission _env os p = let output_security_action os x = output_string os (match x with | ILSecurityAction.Request -> "request" | ILSecurityAction.Demand -> "demand" | ILSecurityAction.Assert-> "assert" | ILSecurityAction.Deny-> "deny" | ILSecurityAction.PermitOnly-> "permitonly" | ILSecurityAction.LinkCheck-> "linkcheck" | ILSecurityAction.InheritCheck-> "inheritcheck" | ILSecurityAction.ReqMin-> "reqmin" | ILSecurityAction.ReqOpt-> "reqopt" | ILSecurityAction.ReqRefuse-> "reqrefuse" | ILSecurityAction.PreJitGrant-> "prejitgrant" | ILSecurityAction.PreJitDeny-> "prejitdeny" | ILSecurityAction.NonCasDemand-> "noncasdemand" | ILSecurityAction.NonCasLinkDemand-> "noncaslinkdemand" | ILSecurityAction.NonCasInheritance-> "noncasinheritance" | ILSecurityAction.LinkDemandChoice -> "linkdemandchoice" | ILSecurityAction.InheritanceDemandChoice -> "inheritancedemandchoice" | ILSecurityAction.DemandChoice -> "demandchoice") match p with | PermissionSet (sa,b) -> output_string os " .permissionset "; output_security_action os sa ; output_string os " = (" ; output_bytes os b ; output_string os ")" ; and goutput_security_decls env os (ps: ILPermissions) = output_seq " " (goutput_permission env) os ps.AsList and goutput_gparam env os (gf: ILGenericParameterDef) = output_string os (tyvar_generator gf.Name); output_parens (output_seq "," (goutput_typ env)) os gf.Constraints and goutput_gparams env os b = if nonNil b then output_string os "<"; output_seq "," (goutput_gparam env) os b; output_string os ">"; () and output_bcc os bcc = output_string os (match bcc with | ILArgConvention.FastCall -> "fastcall " | ILArgConvention.StdCall -> "stdcall " | ILArgConvention.ThisCall -> "thiscall " | ILArgConvention.CDecl -> "cdecl " | ILArgConvention.Default -> " " | ILArgConvention.VarArg -> "vararg ") and output_callconv os (Callconv (hasthis,cc)) = output_string os (match hasthis with ILThisConvention.Instance -> "instance " | ILThisConvention.InstanceExplicit -> "explicit " | ILThisConvention.Static -> "") ; output_bcc os cc and goutput_dlocref env os (dref:ILType) = match dref with | dref when dref.IsNominal && isTypeNameForGlobalFunctions dref.TypeRef.Name && dref.TypeRef.Scope = ILScopeRef.Local -> () | dref when dref.IsNominal && isTypeNameForGlobalFunctions dref.TypeRef.Name -> goutput_scoref env os dref.TypeRef.Scope; output_string os "::" | ty ->goutput_typ_with_shortened_class_syntax env os ty; output_string os "::" and goutput_callsig env os (csig:ILCallingSignature) = output_callconv os csig.CallingConv; output_string os " "; goutput_typ env os csig.ReturnType; output_parens (output_seq "," (goutput_typ env)) os csig.ArgTypes and goutput_mref env os (mref:ILMethodRef) = output_callconv os mref.CallingConv; output_string os " "; goutput_typ_with_shortened_class_syntax env os mref.ReturnType; output_string os " "; // no quotes for ".ctor" let name = mref.Name if name = ".ctor" || name = ".cctor" then output_string os name else output_id os name; output_parens (output_seq "," (goutput_typ env)) os mref.ArgTypes and goutput_mspec env os (mspec:ILMethodSpec) = let fenv = ppenv_enter_method mspec.GenericArity (ppenv_enter_tdef (mkILFormalTyparsRaw mspec.EnclosingType.GenericArgs) env) output_callconv os mspec.CallingConv; output_string os " "; goutput_typ fenv os mspec.FormalReturnType; output_string os " "; goutput_dlocref env os mspec.EnclosingType; output_string os " "; let name = mspec.Name if name = ".ctor" || name = ".cctor" then output_string os name else output_id os name; goutput_gactuals env os mspec.GenericArgs; output_parens (output_seq "," (goutput_typ fenv)) os mspec.FormalArgTypes; and goutput_vararg_mspec env os (mspec, varargs) = match varargs with | None -> goutput_mspec env os mspec | Some varargs' -> let fenv = ppenv_enter_method mspec.GenericArity (ppenv_enter_tdef (mkILFormalTyparsRaw mspec.EnclosingType.GenericArgs) env) output_callconv os mspec.CallingConv; output_string os " "; goutput_typ fenv os mspec.FormalReturnType; output_string os " "; goutput_dlocref env os mspec.EnclosingType; let name = mspec.Name if name = ".ctor" || name = ".cctor" then output_string os name else output_id os name goutput_gactuals env os mspec.GenericArgs; output_string os "("; output_seq "," (goutput_typ fenv) os mspec.FormalArgTypes; output_string os ",...,"; output_seq "," (goutput_typ fenv) os varargs'; output_string os ")"; and goutput_vararg_sig env os (csig:ILCallingSignature,varargs:ILVarArgs) = match varargs with | None -> goutput_callsig env os csig; () | Some varargs' -> goutput_typ env os csig.ReturnType; output_string os " ("; let argtys = csig.ArgTypes if argtys.Length <> 0 then output_seq ", " (goutput_typ env) os argtys output_string os ",...,"; output_seq "," (goutput_typ env) os varargs'; output_string os ")"; and goutput_fspec env os (x:ILFieldSpec) = let fenv = ppenv_enter_tdef (mkILFormalTyparsRaw x.EnclosingType.GenericArgs) env goutput_typ fenv os x.FormalType; output_string os " "; goutput_dlocref env os x.EnclosingType; output_id os x.Name let output_member_access os access = output_string os (match access with | ILMemberAccess.Public -> "public" | ILMemberAccess.Private -> "private" | ILMemberAccess.CompilerControlled -> "privatescope" | ILMemberAccess.Family -> "family" | ILMemberAccess.FamilyAndAssembly -> "famandassem" | ILMemberAccess.FamilyOrAssembly -> "famorassem" | ILMemberAccess.Assembly -> "assembly") let output_type_access os access = match access with | ILTypeDefAccess.Public -> output_string os "public" | ILTypeDefAccess.Private -> output_string os "private" | ILTypeDefAccess.Nested ilMemberAccess -> output_string os "nested "; output_member_access os ilMemberAccess let output_encoding os e = match e with | ILDefaultPInvokeEncoding.Ansi -> output_string os " ansi " | ILDefaultPInvokeEncoding.Auto -> output_string os " autochar " | ILDefaultPInvokeEncoding.Unicode -> output_string os " unicode " let output_field_init os = function | ILFieldInit.String s -> output_string os "= "; output_string os s | ILFieldInit.Bool x-> output_string os "= bool"; output_parens output_string os (if x then "true" else "false") | ILFieldInit.Char x-> output_string os "= char"; output_parens output_u16 os x | ILFieldInit.Int8 x-> output_string os "= int8"; output_parens output_i8 os x | ILFieldInit.Int16 x-> output_string os "= int16"; output_parens output_i16 os x | ILFieldInit.Int32 x-> output_string os "= int32"; output_parens output_i32 os x | ILFieldInit.Int64 x-> output_string os "= int64"; output_parens output_i64 os x | ILFieldInit.UInt8 x-> output_string os "= uint8"; output_parens output_u8 os x | ILFieldInit.UInt16 x-> output_string os "= uint16"; output_parens output_u16 os x | ILFieldInit.UInt32 x-> output_string os "= uint32"; output_parens output_u32 os x | ILFieldInit.UInt64 x-> output_string os "= uint64"; output_parens output_u64 os x | ILFieldInit.Single x-> output_string os "= float32"; output_parens output_ieee32 os x | ILFieldInit.Double x-> output_string os "= float64"; output_parens output_ieee64 os x | ILFieldInit.Null-> output_string os "= nullref" let output_at os b = Printf.fprintf os " at (* no labels for data available, data = %a *)" (output_parens output_bytes) b let output_option f os = function None -> () | Some x -> f os x let goutput_alternative_ref env os (alt: IlxUnionAlternative) = output_id os alt.Name; alt.FieldDefs |> Array.toList |> output_parens (output_seq "," (fun os fdef -> goutput_typ env os fdef.Type)) os let goutput_curef env os (IlxUnionRef(tref,alts,_,_)) = output_string os " .classunion import "; goutput_tref env os tref; output_parens (output_seq "," (goutput_alternative_ref env)) os (Array.toList alts) let goutput_cuspec env os (IlxUnionSpec(IlxUnionRef(tref,_,_,_),i)) = output_string os "class /* classunion */ "; goutput_tref env os tref; goutput_gactuals env os i let output_basic_type os x = output_string os (match x with | DT_I1 -> "i1" | DT_U1 -> "u1" | DT_I2 -> "i2" | DT_U2 -> "u2" | DT_I4 -> "i4" | DT_U4 -> "u4" | DT_I8 -> "i8" | DT_U8 -> "u8" | DT_R4 -> "r4" | DT_R8 -> "r8" | DT_R -> "r" | DT_I -> "i" | DT_U -> "u" | DT_REF -> "ref") let output_custom_attr_data os data = output_string os " = "; output_parens output_bytes os data let goutput_custom_attr env os attr = output_string os " .custom "; goutput_mspec env os attr.Method; output_custom_attr_data os attr.Data let goutput_custom_attrs env os (attrs : ILAttributes) = List.iter (fun attr -> goutput_custom_attr env os attr; output_string os "\n" ) attrs.AsList let goutput_fdef _tref env os fd = output_string os " .field "; match fd.Offset with Some i -> output_string os "["; output_i32 os i; output_string os "] " | None -> () match fd.Marshal with Some _i -> output_string os "// marshal attribute not printed\n"; | None -> () output_member_access os fd.Access; output_string os " "; if fd.IsStatic then output_string os " static "; if fd.IsLiteral then output_string os " literal "; if fd.IsSpecialName then output_string os " specialname rtspecialname "; if fd.IsInitOnly then output_string os " initonly "; if fd.NotSerialized then output_string os " notserialized "; goutput_typ env os fd.Type; output_string os " "; output_id os fd.Name; output_option output_at os fd.Data; output_option output_field_init os fd.LiteralValue; output_string os "\n"; goutput_custom_attrs env os fd.CustomAttrs let output_alignment os = function Aligned -> () | Unaligned1 -> output_string os "unaligned. 1 " | Unaligned2 -> output_string os "unaligned. 2 " | Unaligned4 -> output_string os "unaligned. 4 " let output_volatility os = function Nonvolatile -> () | Volatile -> output_string os "volatile. " let output_tailness os = function | Tailcall -> output_string os "tail. " | _ -> () let output_after_tailcall os = function | Tailcall -> output_string os " ret " | _ -> () let rec goutput_apps env os = function | Apps_tyapp (actual,cs) -> output_angled (goutput_gactual env) os actual; output_string os " "; output_angled (goutput_gparam env) os (mkILSimpleTypar "T") ; output_string os " "; goutput_apps env os cs | Apps_app(ty,cs) -> output_parens (goutput_typ env) os ty; output_string os " "; goutput_apps env os cs | Apps_done ty -> output_string os "--> "; goutput_typ env os ty /// utilities to help print out short forms of instructions let output_short_u16 os (x:uint16) = if int x < 256 then (output_string os ".s "; output_u16 os x) else (output_string os " "; output_u16 os x) let output_short_i32 os i32 = if i32 < 256 && 0 >= i32 then (output_string os ".s "; output_i32 os i32) else (output_string os " "; output_i32 os i32 ) let output_code_label os lab = output_string os (formatCodeLabel lab) let goutput_local env os (l: ILLocal) = goutput_typ env os l.Type; if l.IsPinned then output_string os " pinned" let goutput_param env os (l: ILParameter) = match l.Name with None -> goutput_typ env os l.Type; | Some n -> goutput_typ env os l.Type; output_string os " "; output_sqstring os n let goutput_params env os ps = output_parens (output_seq "," (goutput_param env)) os ps let goutput_freevar env os l = goutput_typ env os l.fvType; output_string os " "; output_sqstring os l.fvName let goutput_freevars env os ps = output_parens (output_seq "," (goutput_freevar env)) os ps let output_source os (s:ILSourceMarker) = if s.Document.File <> "" then output_string os " .line "; output_int os s.Line; if s.Column <> -1 then output_string os " : "; output_int os s.Column; output_string os " /* - "; output_int os s.EndLine; if s.Column <> -1 then output_string os " : "; output_int os s.EndColumn; output_string os "*/ "; output_sqstring os s.Document.File let rec goutput_instr env os inst = match inst with | si when isNoArgInstr si -> output_lid os (wordsOfNoArgInstr si) | I_brcmp (cmp,tg1,_tg2) -> output_string os (match cmp with | BI_beq -> "beq" | BI_bgt -> "bgt" | BI_bgt_un -> "bgt.un" | BI_bge -> "bge" | BI_bge_un -> "bge.un" | BI_ble -> "ble" | BI_ble_un -> "ble.un" | BI_blt -> "blt" | BI_blt_un -> "blt.un" | BI_bne_un -> "bne.un" | BI_brfalse -> "brfalse" | BI_brtrue -> "brtrue"); output_string os " "; output_code_label os tg1 | I_br tg -> output_string os "/* br "; output_code_label os tg; output_string os "*/"; | I_leave tg -> output_string os "leave "; output_code_label os tg | I_call (tl,mspec,varargs) -> output_tailness os tl; output_string os "call "; goutput_vararg_mspec env os (mspec,varargs); output_after_tailcall os tl; | I_calli (tl,mref,varargs) -> output_tailness os tl; output_string os "calli "; goutput_vararg_sig env os (mref,varargs); output_after_tailcall os tl; | I_ldarg u16 -> output_string os "ldarg"; output_short_u16 os u16 | I_ldarga u16 -> output_string os "ldarga "; output_u16 os u16 | (AI_ldc (dt, ILConst.I4 x)) -> output_string os "ldc."; output_basic_type os dt; output_short_i32 os x | (AI_ldc (dt, ILConst.I8 x)) -> output_string os "ldc."; output_basic_type os dt; output_string os " "; output_i64 os x | (AI_ldc (dt, ILConst.R4 x)) -> output_string os "ldc."; output_basic_type os dt; output_string os " "; output_ieee32 os x | (AI_ldc (dt, ILConst.R8 x)) -> output_string os "ldc."; output_basic_type os dt; output_string os " "; output_ieee64 os x | I_ldftn mspec -> output_string os "ldftn "; goutput_mspec env os mspec | I_ldvirtftn mspec -> output_string os "ldvirtftn "; goutput_mspec env os mspec | I_ldind (al,vol,dt) -> output_alignment os al; output_volatility os vol; output_string os "ldind."; output_basic_type os dt | I_cpblk (al,vol) -> output_alignment os al; output_volatility os vol; output_string os "cpblk" | I_initblk (al,vol) -> output_alignment os al; output_volatility os vol; output_string os "initblk" | I_ldloc u16 -> output_string os "ldloc"; output_short_u16 os u16 | I_ldloca u16 -> output_string os "ldloca "; output_u16 os u16 | I_starg u16 -> output_string os "starg "; output_u16 os u16 | I_stind (al,vol,dt) -> output_alignment os al; output_volatility os vol; output_string os "stind."; output_basic_type os dt | I_stloc u16 -> output_string os "stloc"; output_short_u16 os u16 | I_switch (l,_dflt) -> output_string os "switch "; output_parens (output_seq "," output_code_label) os l | I_callvirt (tl,mspec,varargs) -> output_tailness os tl; output_string os "callvirt "; goutput_vararg_mspec env os (mspec,varargs); output_after_tailcall os tl; | I_callconstraint (tl,ty,mspec,varargs) -> output_tailness os tl; output_string os "constraint. "; goutput_typ env os ty; output_string os " callvirt "; goutput_vararg_mspec env os (mspec,varargs); output_after_tailcall os tl; | I_castclass ty -> output_string os "castclass "; goutput_typ env os ty | I_isinst ty -> output_string os "isinst "; goutput_typ env os ty | I_ldfld (al,vol,fspec) -> output_alignment os al; output_volatility os vol; output_string os "ldfld "; goutput_fspec env os fspec | I_ldflda fspec -> output_string os "ldflda " ; goutput_fspec env os fspec | I_ldsfld (vol,fspec) -> output_volatility os vol; output_string os "ldsfld "; goutput_fspec env os fspec | I_ldsflda fspec -> output_string os "ldsflda "; goutput_fspec env os fspec | I_stfld (al,vol,fspec) -> output_alignment os al; output_volatility os vol; output_string os "stfld "; goutput_fspec env os fspec | I_stsfld (vol,fspec) -> output_volatility os vol; output_string os "stsfld "; goutput_fspec env os fspec | I_ldtoken tok -> output_string os "ldtoken "; goutput_ldtoken_info env os tok | I_refanyval ty -> output_string os "refanyval "; goutput_typ env os ty | I_refanytype -> output_string os "refanytype" | I_mkrefany typ -> output_string os "mkrefany "; goutput_typ env os typ | I_ldstr s -> output_string os "ldstr "; output_string os s | I_newobj (mspec,varargs) -> // newobj: IL has a special rule that the CC is always implicitly "instance" and need // not be mentioned explicitly output_string os "newobj "; goutput_vararg_mspec env os (mspec,varargs) | I_stelem dt -> output_string os "stelem."; output_basic_type os dt | I_ldelem dt -> output_string os "ldelem."; output_basic_type os dt | I_newarr (shape,typ) -> if shape = ILArrayShape.SingleDimensional then output_string os "newarr "; goutput_typ_with_shortened_class_syntax env os typ else output_string os "newobj void "; goutput_dlocref env os (mkILArrTy(typ,shape)); output_string os ".ctor"; let rank = shape.Rank output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) ecmaILGlobals.typ_int32)) | I_stelem_any (shape,dt) -> if shape = ILArrayShape.SingleDimensional then output_string os "stelem.any "; goutput_typ env os dt else output_string os "call instance void "; goutput_dlocref env os (mkILArrTy(dt,shape)); output_string os "Set"; let rank = shape.Rank output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) ecmaILGlobals.typ_int32) @ [dt]) | I_ldelem_any (shape,tok) -> if shape = ILArrayShape.SingleDimensional then output_string os "ldelem.any "; goutput_typ env os tok else output_string os "call instance "; goutput_typ env os tok; output_string os " "; goutput_dlocref env os (mkILArrTy(tok,shape)); output_string os "Get"; let rank = shape.Rank output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) ecmaILGlobals.typ_int32)) | I_ldelema (ro,_,shape,tok) -> if ro = ReadonlyAddress then output_string os "readonly. "; if shape = ILArrayShape.SingleDimensional then output_string os "ldelema "; goutput_typ env os tok else output_string os "call instance "; goutput_typ env os (ILType.Byref tok); output_string os " "; goutput_dlocref env os (mkILArrTy(tok,shape)); output_string os "Address"; let rank = shape.Rank output_parens (output_seq "," (goutput_typ env)) os (Array.toList (Array.create ( rank) ecmaILGlobals.typ_int32)) | I_box tok -> output_string os "box "; goutput_typ env os tok | I_unbox tok -> output_string os "unbox "; goutput_typ env os tok | I_unbox_any tok -> output_string os "unbox.any "; goutput_typ env os tok | I_initobj tok -> output_string os "initobj "; goutput_typ env os tok | I_ldobj (al,vol,tok) -> output_alignment os al; output_volatility os vol; output_string os "ldobj "; goutput_typ env os tok | I_stobj (al,vol,tok) -> output_alignment os al; output_volatility os vol; output_string os "stobj "; goutput_typ env os tok | I_cpobj tok -> output_string os "cpobj "; goutput_typ env os tok | I_sizeof tok -> output_string os "sizeof "; goutput_typ env os tok | I_seqpoint s -> output_source os s | (EI_ilzero ty) -> output_string os "ilzero "; goutput_typ env os ty | I_other e when isIlxExtInstr e -> match (destIlxExtInstr e) with | EI_castdata (check,ty,n) -> if not check then output_string os "/* unchecked. */ "; output_string os "castdata "; goutput_cuspec env os ty; output_string os ","; output_int os n | (EI_isdata (_,ty,n)) -> output_string os "isdata "; goutput_cuspec env os ty; output_string os ","; output_int os n | (EI_brisdata (_,ty,n,tg1,_)) -> output_string os "brisdata "; goutput_cuspec env os ty; output_string os ","; output_string os "("; output_int os n; output_string os ","; output_code_label os tg1; output_string os ")" | (EI_lddata (_,ty,n,m)) -> output_string os "lddata "; goutput_cuspec env os ty; output_string os ","; output_int os n; output_string os ","; output_int os m | (EI_lddatatag (_,ty)) -> output_string os "lddatatag "; goutput_cuspec env os ty | (EI_stdata (ty,n,m)) -> output_string os "stdata "; goutput_cuspec env os ty; output_string os ","; output_int os n; output_string os ","; output_int os m | (EI_newdata (ty,n)) -> output_string os "newdata "; goutput_cuspec env os ty; output_string os ","; output_int os n | (EI_datacase (_,ty,l,_)) -> output_string os "datacase"; output_string os " "; goutput_cuspec env os ty; output_string os ","; output_parens (output_seq "," (fun os (x,y) -> output_int os x; output_string os ","; output_code_label os y)) os l | (EI_callfunc (tl,cs)) -> output_tailness os tl; output_string os "callfunc "; goutput_apps env os cs; output_after_tailcall os tl; | _ -> output_string os "" let goutput_ilmbody env os il = if il.IsZeroInit then output_string os " .zeroinit\n"; output_string os " .maxstack "; output_i32 os il.MaxStack; output_string os "\n"; let output_susp os susp = match susp with | Some s -> output_string os "\nbr "; output_code_label os s; output_string os "\n" | _ -> () let commit_susp os susp lab = match susp with | Some s when s <> lab -> output_susp os susp | _ -> () if il.Locals.Length <> 0 then output_string os " .locals("; output_seq ",\n " (goutput_local env) os il.Locals output_string os ")\n" // Print the code by left-to-right traversal let rec goutput_block env os (susp,block) = match block with | ILBasicBlock bb -> commit_susp os susp bb.Label; output_code_label os bb.Label; output_string os ": \n" ; Array.iter (fun i -> goutput_instr env os i; output_string os "\n") bb.Instructions; bb.Fallthrough | GroupBlock (_,l) -> let new_susp = ref susp List.iter (fun c -> new_susp := goutput_code env os (!new_susp,c)) l; !new_susp | RestrictBlock (_,c) -> goutput_code env os (susp,c) | TryBlock (c,seh) -> commit_susp os susp (uniqueEntryOfCode c); output_string os " .try {\n"; let susp = goutput_code env os (None,c) if (susp <> None) then output_string os "// warning: fallthrough at end of try\n"; output_string os "\n}"; match seh with | FaultBlock flt -> output_string os "fault {\n"; output_susp os (goutput_code env os (None,flt)); output_string os "\n}" | FinallyBlock flt -> output_string os "finally {\n"; output_susp os (goutput_code env os (None,flt)); output_string os "\n}"; | FilterCatchBlock clauses -> List.iter (fun (flt,ctch) -> match flt with | TypeFilter typ -> output_string os " catch "; goutput_typ_with_shortened_class_syntax env os typ; output_string os "{\n"; output_susp os (goutput_code env os (None,ctch)); output_string os "\n}" | CodeFilter fltcode -> output_string os "filter {\n"; output_susp os (goutput_code env os (None,fltcode)); output_string os "\n} catch {\n"; output_susp os (goutput_code env os (None,ctch)); output_string os "\n}";) clauses None and goutput_code env os (susp,code) = goutput_block env os (susp,code) let goutput_topcode env os code = let final_susp = goutput_code env os (Some (uniqueEntryOfCode code),code) (match final_susp with Some s -> output_string os "\nbr "; output_code_label os s; output_string os "\n" | _ -> ()) goutput_topcode env os il.Code; let goutput_mbody is_entrypoint env os md = match md.mdCodeKind with | MethodCodeKind.Native -> output_string os "native " | MethodCodeKind.IL -> output_string os "cil " | MethodCodeKind.Runtime -> output_string os "runtime " output_string os (if md.IsInternalCall then "internalcall " else " "); output_string os (if md.IsManaged then "managed " else " "); output_string os (if md.IsForwardRef then "forwardref " else " "); output_string os " \n{ \n" ; goutput_security_decls env os md.SecurityDecls; goutput_custom_attrs env os md.CustomAttrs; match md.mdBody.Contents with | MethodBody.IL il -> goutput_ilmbody env os il | _ -> () if is_entrypoint then output_string os " .entrypoint"; output_string os "\n"; output_string os "}\n" let goutput_mdef env os md = let attrs = match md.mdKind with | MethodKind.Virtual vinfo -> "virtual "^ (if vinfo.IsFinal then "final " else "")^ (if vinfo.IsNewSlot then "newslot " else "")^ (if vinfo.IsCheckAccessOnOverride then " strict " else "")^ (if vinfo.IsAbstract then " abstract " else "")^ " " | MethodKind.NonVirtual -> "" | MethodKind.Ctor -> "rtspecialname" | MethodKind.Static -> "static "^ (match md.mdBody.Contents with MethodBody.PInvoke (attr) -> "pinvokeimpl(\""^ attr.Where.Name^"\" as \""^ attr.Name ^"\""^ (match attr.CallingConv with | PInvokeCallingConvention.None -> "" | PInvokeCallingConvention.Cdecl -> " cdecl" | PInvokeCallingConvention.Stdcall -> " stdcall" | PInvokeCallingConvention.Thiscall -> " thiscall" | PInvokeCallingConvention.Fastcall -> " fastcall" | PInvokeCallingConvention.WinApi -> " winapi" ) + (match attr.CharEncoding with | PInvokeCharEncoding.None -> "" | PInvokeCharEncoding.Ansi -> " ansi" | PInvokeCharEncoding.Unicode -> " unicode" | PInvokeCharEncoding.Auto -> " autochar") + (if attr.NoMangle then " nomangle" else "") + (if attr.LastError then " lasterr" else "") + ")" | _ -> "") | MethodKind.Cctor -> "specialname rtspecialname static" let is_entrypoint = md.IsEntryPoint let menv = ppenv_enter_method (List.length md.GenericParams) env output_string os " .method "; if md.IsHideBySig then output_string os "hidebysig "; if md.IsReqSecObj then output_string os "reqsecobj "; if md.IsSpecialName then output_string os "specialname "; if md.IsUnmanagedExport then output_string os "unmanagedexp "; output_member_access os md.Access; output_string os " "; output_string os attrs; output_string os " "; output_callconv os md.CallingConv; output_string os " "; (goutput_typ menv) os md.Return.Type; output_string os " "; output_id os md.Name ; output_string os " "; (goutput_gparams env) os md.GenericParams; output_string os " "; (goutput_params menv) os md.Parameters; output_string os " "; if md.IsSynchronized then output_string os "synchronized "; if md.IsMustRun then output_string os "/* mustrun */ "; if md.IsPreserveSig then output_string os "preservesig "; if md.IsNoInline then output_string os "noinlining "; (goutput_mbody is_entrypoint menv) os md; output_string os "\n" let goutput_pdef env os pd = output_string os "property\n\tgetter: "; (match pd.GetMethod with None -> () | Some mref -> goutput_mref env os mref); output_string os "\n\tsetter: "; (match pd.SetMethod with None -> () | Some mref -> goutput_mref env os mref) let goutput_superclass env os = function None -> () | Some typ -> output_string os "extends "; (goutput_typ_with_shortened_class_syntax env) os typ let goutput_superinterfaces env os imp = if imp = [] then () else output_string os "implements "; output_seq "," (goutput_typ_with_shortened_class_syntax env) os imp let goutput_implements env os (imp:ILTypes) = if imp.Length = 0 then () else output_string os "implements "; output_seq "," (goutput_typ_with_shortened_class_syntax env) os imp let the = function Some x -> x | None -> failwith "the" let output_type_layout_info os info = if info.Size <> None then (output_string os " .size "; output_i32 os (the info.Size)); if info.Pack <> None then (output_string os " .pack "; output_u16 os (the info.Pack)) let splitTypeLayout = function | ILTypeDefLayout.Auto -> "auto",(fun _os () -> ()) | ILTypeDefLayout.Sequential info -> "sequential", (fun os () -> output_type_layout_info os info) | ILTypeDefLayout.Explicit info -> "explicit", (fun os () -> output_type_layout_info os info) let goutput_fdefs tref env os (fdefs: ILFieldDefs) = List.iter (fun f -> (goutput_fdef tref env) os f; output_string os "\n" ) fdefs.AsList let goutput_mdefs env os (mdefs: ILMethodDefs) = List.iter (fun f -> (goutput_mdef env) os f; output_string os "\n" ) mdefs.AsList let goutput_pdefs env os (pdefs: ILPropertyDefs) = List.iter (fun f -> (goutput_pdef env) os f; output_string os "\n" ) pdefs.AsList let rec goutput_tdef (enc) env contents os cd = let env = ppenv_enter_tdef cd.GenericParams env let layout_attr,pp_layout_decls = splitTypeLayout cd.Layout if isTypeNameForGlobalFunctions cd.Name then if contents then let tref = (mkILNestedTyRef (ILScopeRef.Local,enc,cd.Name)) goutput_mdefs env os cd.Methods; goutput_fdefs tref env os cd.Fields; goutput_pdefs env os cd.Properties; else let isclo = match cd.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure _ -> true | _ -> false | _ -> false let isclassunion = match cd.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Union _ -> true | _ -> false | _ -> false if not (isclo || isclassunion) || contents then output_string os "\n"; match cd.tdKind with | ILTypeDefKind.Class | ILTypeDefKind.Enum | ILTypeDefKind.Delegate | ILTypeDefKind.ValueType -> output_string os ".class " | ILTypeDefKind.Interface -> output_string os ".class interface " | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure _ -> output_string os ".closure " | IlxTypeDefKind.Union _ -> output_string os ".classunion " | ILTypeDefKind.Other _ -> failwith "unknown extension" output_init_semantics os cd.InitSemantics; output_string os " "; output_type_access os cd.Access; output_string os " "; output_encoding os cd.Encoding; output_string os " "; output_string os layout_attr; output_string os " "; if cd.IsSealed then output_string os "sealed "; if cd.IsAbstract then output_string os "abstract "; if cd.IsSerializable then output_string os "serializable "; if cd.IsComInterop then output_string os "import "; output_sqstring os cd.Name ; goutput_gparams env os cd.GenericParams; output_string os "\n\t"; if isclo then match cd.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure _cloinfo -> () //goutput_freevars env os cloinfo.cloFreeVars | _ -> () | _ -> () else goutput_superclass env os cd.Extends; output_string os "\n\t"; goutput_implements env os cd.Implements; output_string os "\n{\n "; if contents then let tref = (mkILNestedTyRef (ILScopeRef.Local,enc,cd.Name)) goutput_custom_attrs env os cd.CustomAttrs; goutput_security_decls env os cd.SecurityDecls; pp_layout_decls os (); goutput_fdefs tref env os cd.Fields; goutput_mdefs env os cd.Methods; match cd.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure x -> output_string os "\n.apply "; (goutput_lambdas env) os x.cloStructure; output_string os "\n { "; (goutput_ilmbody env) os (Lazy.force x.cloCode); output_string os "}\n"; | IlxTypeDefKind.Union x -> Array.iter (fun x -> output_string os " .alternative "; goutput_alternative_ref env os x) x.cudAlternatives; | _ -> () goutput_tdefs contents (enc@[cd.Name]) env os cd.NestedTypes; output_string os "\n}"; and output_init_semantics os f = match f with ILTypeInit.BeforeField -> output_string os "beforefieldinit"; | ILTypeInit.OnAny -> () and goutput_lambdas env os lambdas = match lambdas with | Lambdas_forall (gf,l) -> output_angled (goutput_gparam env) os gf; output_string os " "; (goutput_lambdas env) os l | Lambdas_lambda (ps,l) -> output_parens (goutput_param env) os ps; output_string os " "; (goutput_lambdas env) os l | Lambdas_return typ -> output_string os "--> "; (goutput_typ env) os typ and goutput_tdefs contents (enc) env os (td: ILTypeDefs) = List.iter (goutput_tdef enc env contents os) td.AsList let output_ver os (a,b,c,d) = output_string os " .ver "; output_u16 os a; output_string os " : "; output_u16 os b; output_string os " : "; output_u16 os c; output_string os " : "; output_u16 os d let output_locale os s = output_string os " .Locale "; output_qstring os s let output_hash os x = output_string os " .hash = "; output_parens output_bytes os x let output_publickeytoken os x = output_string os " .publickeytoken = "; output_parens output_bytes os x let output_publickey os x = output_string os " .publickey = "; output_parens output_bytes os x let output_publickeyinfo os = function | PublicKey k -> output_publickey os k | PublicKeyToken k -> output_publickeytoken os k let output_assref os (aref:ILAssemblyRef) = output_string os " .assembly extern "; output_sqstring os aref.Name; if aref.Retargetable then output_string os " retargetable "; output_string os " { "; (output_option output_hash) os aref.Hash; (output_option output_publickeyinfo) os aref.PublicKey; (output_option output_ver) os aref.Version; (output_option output_locale) os aref.Locale; output_string os " } " let output_modref os (modref:ILModuleRef) = output_string os (if modref.HasMetadata then " .module extern " else " .file nometadata " ); output_sqstring os modref.Name; (output_option output_hash) os modref.Hash let goutput_resource env os r = output_string os " .mresource "; output_string os (match r.Access with ILResourceAccess.Public -> " public " | ILResourceAccess.Private -> " private "); output_sqstring os r.Name; output_string os " { "; goutput_custom_attrs env os r.CustomAttrs; match r.Location with | ILResourceLocation.Local _ -> output_string os " /* loc nyi */ "; | ILResourceLocation.File (mref,off) -> output_string os " .file "; output_sqstring os mref.Name; output_string os " at "; output_i32 os off | ILResourceLocation.Assembly aref -> output_string os " .assembly extern "; output_sqstring os aref.Name output_string os " }\n " let goutput_manifest env os m = output_string os " .assembly "; match m.AssemblyLongevity with | ILAssemblyLongevity.Unspecified -> () | ILAssemblyLongevity.Library -> output_string os "library "; | ILAssemblyLongevity.PlatformAppDomain -> output_string os "platformappdomain "; | ILAssemblyLongevity.PlatformProcess -> output_string os "platformprocess "; | ILAssemblyLongevity.PlatformSystem -> output_string os "platformmachine "; output_sqstring os m.Name; output_string os " { \n"; output_string os ".hash algorithm "; output_i32 os m.AuxModuleHashAlgorithm; output_string os "\n"; goutput_custom_attrs env os m.CustomAttrs; goutput_security_decls env os m.SecurityDecls; (output_option output_publickey) os m.PublicKey; (output_option output_ver) os m.Version; (output_option output_locale) os m.Locale; output_string os " } \n" let output_module_fragment_aux _refs os modul = try let env = mk_ppenv let env = ppenv_enter_modul env goutput_tdefs false ([]) env os modul.TypeDefs; goutput_tdefs true ([]) env os modul.TypeDefs; with e -> output_string os "*** Error during printing : "; output_string os (e.ToString()); os.Flush(); reraise() raise e let output_module_fragment os modul = let refs = computeILRefs modul output_module_fragment_aux refs os modul; refs let output_module_refs os refs = List.iter (fun x -> output_assref os x; output_string os "\n") refs.AssemblyReferences; List.iter (fun x -> output_modref os x; output_string os "\n") refs.ModuleReferences let goutput_module_manifest env os modul = output_string os " .module "; output_sqstring os modul.Name; goutput_custom_attrs env os modul.CustomAttrs; output_string os " .imagebase "; output_i32 os modul.ImageBase; output_string os " .file alignment "; output_i32 os modul.PhysicalAlignment; output_string os " .subsystem "; output_i32 os modul.SubSystemFlags; output_string os " .corflags "; output_i32 os ((if modul.IsILOnly then 0x0001 else 0) ||| (if modul.Is32Bit then 0x0002 else 0) ||| (if modul.Is32BitPreferred then 0x00020003 else 0)); List.iter (fun r -> goutput_resource env os r) modul.Resources.AsList; output_string os "\n"; (output_option (goutput_manifest env)) os modul.Manifest let output_module os modul = try let refs = computeILRefs modul let env = mk_ppenv let env = ppenv_enter_modul env output_module_refs os refs; goutput_module_manifest env os modul; output_module_fragment_aux refs os modul; with e -> output_string os "*** Error during printing : "; output_string os (e.ToString()); os.Flush(); raise e #endif fsharp-3.0.34/src/absil/zmap.fsi0000775000175000017500000000410412260314606015425 0ustar chrischris(* (c) Microsoft Corporation. Apache 2.0 License *) namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open Internal.Utilities open Internal.Utilities.Collections.Tagged open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System.Collections.Generic /// Maps with a specific comparison function type internal Zmap<'Key,'T> = Internal.Utilities.Collections.Tagged.Map<'Key,'T> [] module internal Zmap = val empty : IComparer<'Key> -> Zmap<'Key,'T> val isEmpty : Zmap<'Key,'T> -> bool val add : 'Key -> 'T -> Zmap<'Key,'T> -> Zmap<'Key,'T> val remove : 'Key -> Zmap<'Key,'T> -> Zmap<'Key,'T> val mem : 'Key -> Zmap<'Key,'T> -> bool val memberOf : Zmap<'Key,'T> -> 'Key -> bool val tryFind : 'Key -> Zmap<'Key,'T> -> 'T option val find : 'Key -> Zmap<'Key,'T> -> 'T // raises KeyNotFoundException val map : mapping:('T -> 'U) -> Zmap<'Key,'T> -> Zmap<'Key,'U> val mapi : ('Key -> 'T -> 'U) -> Zmap<'Key,'T> -> Zmap<'Key,'U> val fold : ('Key -> 'T -> 'U -> 'U) -> Zmap<'Key,'T> -> 'U -> 'U val fmap : ('State -> 'Key -> 'T -> 'State * 'U) -> 'State -> Zmap<'Key,'T> -> 'State * Zmap<'Key,'U> val iter : action:('T -> 'U -> unit) -> Zmap<'T, 'U> -> unit val foldSection: 'Key -> 'Key -> ('Key -> 'T -> 'U -> 'U) -> Zmap<'Key,'T> -> 'U -> 'U val first : ('Key -> 'T -> bool) -> Zmap<'Key,'T> -> ('Key * 'T) option val exists : ('Key -> 'T -> bool) -> Zmap<'Key,'T> -> bool val forall : ('Key -> 'T -> bool) -> Zmap<'Key,'T> -> bool val choose : ('Key -> 'T -> 'U option) -> Zmap<'Key,'T> -> 'U option val chooseL : ('Key -> 'T -> 'U option) -> Zmap<'Key,'T> -> 'U list val toList : Zmap<'Key,'T> -> ('Key * 'T) list val ofList : IComparer<'Key> -> ('Key * 'T) list -> Zmap<'Key,'T> val ofFlatList : IComparer<'Key> -> FlatList<'Key * 'T> -> Zmap<'Key,'T> val keys : Zmap<'Key,'T> -> 'Key list val values : Zmap<'Key,'T> -> 'T list fsharp-3.0.34/src/absil/ilsupp.fsi0000775000175000017500000001255712260314606016005 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Functions associated with writing binaries which /// vary between supported implementations of the CLI Common Language /// Runtime, e.g. between the SSCLI, Mono and the Microsoft CLR. /// /// The implementation of the functions can be found in ilsupp-*.fs module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.Support type PdbReader type PdbWriter val pdbReadClose: PdbReader -> unit val pdbInitialize : string -> string -> PdbWriter val absilWriteGetTimeStamp: unit -> int32 #if SILVERLIGHT #else open System open System.Runtime.InteropServices open System.Diagnostics.SymbolStore open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.IL type IStream = System.Runtime.InteropServices.ComTypes.IStream /// Takes the output file name and returns debug file name. val getDebugFileName: string -> string /// Unmanaged resource file linker - for native resources (not managed ones). /// The function may be called twice, once with a zero-RVA and /// arbitrary buffer, and once with the real buffer. The size of the /// required buffer is returned. type PEFileType = X86 | X64 val linkNativeResources: unlinkedResources:byte[] list -> rva:int32 -> PEFileType -> tempFilePath:string -> byte[] val unlinkResource: int32 -> byte[] -> byte[] /// PDB reader and associated types type PdbDocument type PdbMethod type PdbVariable type PdbMethodScope type PdbSequencePoint = { pdbSeqPointOffset: int; pdbSeqPointDocument: PdbDocument; pdbSeqPointLine: int; pdbSeqPointColumn: int; pdbSeqPointEndLine: int; pdbSeqPointEndColumn: int; } val pdbReadOpen: string (* module *) -> string (* path *) -> PdbReader val pdbReadClose: PdbReader -> unit val pdbReaderGetMethod: PdbReader -> int32 (* token *) -> PdbMethod val pdbReaderGetMethodFromDocumentPosition: PdbReader -> PdbDocument -> int (* line *) -> int (* col *) -> PdbMethod val pdbReaderGetDocuments: PdbReader -> PdbDocument array val pdbReaderGetDocument: PdbReader -> string (* url *) -> byte[] (* guid *) -> byte[] (* guid *) -> byte[] (* guid *) -> PdbDocument val pdbDocumentGetURL: PdbDocument -> string val pdbDocumentGetType: PdbDocument -> byte[] (* guid *) val pdbDocumentGetLanguage: PdbDocument -> byte[] (* guid *) val pdbDocumentGetLanguageVendor: PdbDocument -> byte[] (* guid *) val pdbDocumentFindClosestLine: PdbDocument -> int -> int val pdbMethodGetToken: PdbMethod -> int32 val pdbMethodGetRootScope: PdbMethod -> PdbMethodScope val pdbMethodGetSequencePoints: PdbMethod -> PdbSequencePoint array val pdbScopeGetChildren: PdbMethodScope -> PdbMethodScope array val pdbScopeGetOffsets: PdbMethodScope -> int * int val pdbScopeGetLocals: PdbMethodScope -> PdbVariable array val pdbVariableGetName: PdbVariable -> string val pdbVariableGetSignature: PdbVariable -> byte[] val pdbVariableGetAddressAttributes: PdbVariable -> int32 (* kind *) * int32 (* addrField1 *) //--------------------------------------------------------------------- // PDB writer. //--------------------------------------------------------------------- type PdbDocumentWriter type idd = { iddCharacteristics: int32; iddMajorVersion: int32; (* actually u16 in IMAGE_DEBUG_DIRECTORY *) iddMinorVersion: int32; (* acutally u16 in IMAGE_DEBUG_DIRECTORY *) iddType: int32; iddData: byte[];} val pdbInitialize: string (* .exe/.dll already written and closed *) -> string (* .pdb to write *) -> PdbWriter val pdbClose: PdbWriter -> unit val pdbSetUserEntryPoint: PdbWriter -> int32 -> unit val pdbDefineDocument: PdbWriter -> string -> PdbDocumentWriter val pdbOpenMethod: PdbWriter -> int32 -> unit val pdbCloseMethod: PdbWriter -> unit val pdbOpenScope: PdbWriter -> int -> unit val pdbCloseScope: PdbWriter -> int -> unit val pdbDefineLocalVariable: PdbWriter -> string -> byte[] -> int32 -> unit val pdbSetMethodRange: PdbWriter -> PdbDocumentWriter -> int -> int -> PdbDocumentWriter -> int -> int -> unit val pdbDefineSequencePoints: PdbWriter -> PdbDocumentWriter -> (int * int * int * int * int) array -> unit val pdbGetDebugInfo: PdbWriter -> idd //--------------------------------------------------------------------- // Strong name signing //--------------------------------------------------------------------- type keyContainerName = string type keyPair = byte[] type pubkey = byte[] val signerOpenPublicKeyFile: string -> pubkey val signerOpenKeyPairFile: string -> keyPair val signerGetPublicKeyForKeyPair: keyPair -> pubkey val signerGetPublicKeyForKeyContainer: string -> pubkey val signerCloseKeyContainer: keyContainerName -> unit val signerSignatureSize: pubkey -> int val signerSignFileWithKeyPair: string -> keyPair -> unit val signerSignFileWithKeyContainer: string -> keyContainerName -> unit #endif fsharp-3.0.34/src/absil/ilread.fsi0000775000175000017500000000655012260314606015725 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Binary reader. Read a .NET binary and concert it to Abstract IL data /// structures. /// /// Notes: /// - The metadata in the loaded modules will be relative to /// those modules, e.g. ILScopeRef.Local will mean "local to /// that module". You must use [rescopeILType] etc. if you want to include /// (i.e. copy) the metadata into your own module. /// /// - PDB (debug info) reading/folding: /// The PDB reader is invoked if you give a PDB path /// This indicates if you want to search for PDB files and have the /// reader fold them in. You cannot currently name the pdb file /// directly - you can only name the path. Giving "None" says /// "do not read the PDB file even if one exists" /// /// The debug info appears primarily as I_seqpoint annotations in /// the instruction streams. Unfortunately the PDB information does /// not, for example, tell you how to map back from a class definition /// to a source code line number - you will need to explicitly search /// for a sequence point in the code for one of the methods of the /// class. That is not particularly satisfactory, and it may be /// a good idea to build a small library which extracts the information /// you need. module internal Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal open System.IO type ILReaderOptions = { pdbPath: string option; ilGlobals: ILGlobals; optimizeForMemory: bool (* normally off, i.e. optimize for startup-path speed *) } val defaults : ILReaderOptions // The non-memory resources (i.e. the file handle) associated with // the read can be recovered by calling CloseILModuleReader. Any reamining // lazily-computed items in the metadata graph returned by MetadataOfILModuleReader // will no longer be valid. [] type ILModuleReader = member ILModuleDef : ILModuleDef member ILAssemblyRefs : ILAssemblyRef list val OpenILModuleReader: string -> ILReaderOptions -> ILModuleReader val CloseILModuleReader: ILModuleReader -> unit /// Open a binary reader, except first copy the entire contents of the binary into /// memory, close the file and ensure any subsequent reads happen from the in-memory store. /// PDB files may not be read with this option. val OpenILModuleReaderAfterReadingAllBytes: string -> ILReaderOptions -> ILModuleReader /// Open a binary reader based on the given bytes. val OpenILModuleReaderFromBytes: fileNameForDebugOutput:string -> assemblyContents: byte[] -> options: ILReaderOptions -> ILModuleReader #if STATISTICS (* report statistics from all reads *) val report: TextWriter -> unit #endif fsharp-3.0.34/src/absil/ilx.fsi0000775000175000017500000001425012260314606015255 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// ILX extensions to Abstract IL types and instructions F# module internal Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.IL // -------------------------------------------------------------------- // Union references // -------------------------------------------------------------------- [] type IlxUnionField = new : ILFieldDef -> IlxUnionField member Type : ILType member Name : string /// The name used for the field in parameter or IL field position member LowerName : string member ILField : ILFieldDef type IlxUnionAlternative = { altName: string; altFields: IlxUnionField[]; altCustomAttrs: ILAttributes } member FieldDefs : IlxUnionField[] member FieldDef : int -> IlxUnionField member Name : string member IsNullary : bool member FieldTypes : ILType[] type IlxUnionHasHelpers = | NoHelpers | AllHelpers | SpecialFSharpListHelpers | SpecialFSharpOptionHelpers type IlxUnionRef = | IlxUnionRef of ILTypeRef * IlxUnionAlternative[] * bool (* cudNullPermitted *) * IlxUnionHasHelpers (* cudHasHelpers *) type IlxUnionSpec = | IlxUnionSpec of IlxUnionRef * ILGenericArgs member EnclosingType : ILType member GenericArgs : ILGenericArgs member Alternatives : IlxUnionAlternative list member AlternativesArray : IlxUnionAlternative[] member TypeRef : ILTypeRef member IsNullPermitted : bool member HasHelpers : IlxUnionHasHelpers member Alternative : int -> IlxUnionAlternative member FieldDef : int -> int -> IlxUnionField // -------------------------------------------------------------------- // Closure references // -------------------------------------------------------------------- type IlxClosureLambdas = | Lambdas_forall of ILGenericParameterDef * IlxClosureLambdas | Lambdas_lambda of ILParameter * IlxClosureLambdas | Lambdas_return of ILType type IlxClosureFreeVar = { fvName: string ; fvCompilerGenerated:bool; fvType: ILType } type IlxClosureRef = | IlxClosureRef of ILTypeRef * IlxClosureLambdas * IlxClosureFreeVar[] type IlxClosureSpec = | IlxClosureSpec of IlxClosureRef * ILGenericArgs * ILType member TypeRef : ILTypeRef member ILType : ILType member ClosureRef : IlxClosureRef member FormalLambdas : IlxClosureLambdas member GenericArgs : ILGenericArgs static member Create : IlxClosureRef * ILGenericArgs -> IlxClosureSpec member Constructor : ILMethodSpec /// IlxClosureApps - i.e. types being applied at a callsite type IlxClosureApps = | Apps_tyapp of ILType * IlxClosureApps | Apps_app of ILType * IlxClosureApps | Apps_done of ILType /// ILX extensions to the intruction set /// type IlxInstr = | EI_lddata of (* avoidHelpers: *) bool * IlxUnionSpec * int * int | EI_isdata of (* avoidHelpers: *) bool * IlxUnionSpec * int | EI_brisdata of (* avoidHelpers: *) bool * IlxUnionSpec * int * ILCodeLabel * ILCodeLabel | EI_castdata of bool * IlxUnionSpec * int | EI_stdata of IlxUnionSpec * int * int | EI_datacase of (* avoidHelpers: *) bool * IlxUnionSpec * (int * ILCodeLabel) list * ILCodeLabel (* last label is fallthrough *) | EI_lddatatag of (* avoidHelpers: *) bool * IlxUnionSpec | EI_newdata of IlxUnionSpec * int | EI_callfunc of ILTailcall * IlxClosureApps val mkIlxExtInstr: (IlxInstr -> IlxExtensionInstr) val isIlxExtInstr: (IlxExtensionInstr -> bool) val destIlxExtInstr: (IlxExtensionInstr -> IlxInstr) val mkIlxInstr: IlxInstr -> ILInstr // -------------------------------------------------------------------- // ILX extensions to the kinds of type definitions available // -------------------------------------------------------------------- type IlxClosureInfo = { cloStructure: IlxClosureLambdas; cloFreeVars: IlxClosureFreeVar[]; cloCode: Lazy; cloSource: ILSourceMarker option} and IlxUnionInfo = { /// Is the representation public? cudReprAccess: ILMemberAccess; /// Are the representation helpers public? cudHelpersAccess: ILMemberAccess; /// Generate the helpers? cudHasHelpers: IlxUnionHasHelpers; cudDebugProxies: bool; cudDebugDisplayAttributes: ILAttribute list; cudAlternatives: IlxUnionAlternative[]; cudNullPermitted: bool; /// Debug info for generated code for classunions cudWhere: ILSourceMarker option; } type IlxTypeDefKind = | Closure of IlxClosureInfo | Union of IlxUnionInfo val mkIlxExtTypeDefKind: (IlxTypeDefKind -> IlxExtensionTypeKind) val isIlxExtTypeDefKind: (IlxExtensionTypeKind -> bool) val destIlxExtTypeDefKind: (IlxExtensionTypeKind -> IlxTypeDefKind) val mkIlxTypeDefKind: IlxTypeDefKind -> ILTypeDefKind // -------------------------------------------------------------------- // MS-ILX constructs: Closures, thunks, classunions // -------------------------------------------------------------------- val instAppsAux: int -> ILGenericArgs -> IlxClosureApps -> IlxClosureApps val destTyFuncApp: IlxClosureApps -> ILType * IlxClosureApps val mkILFormalCloRef: ILGenericParameterDefs -> IlxClosureRef -> IlxClosureSpec // -------------------------------------------------------------------- // MS-ILX: Unions // -------------------------------------------------------------------- val actualTypOfIlxUnionField: IlxUnionSpec -> int -> int -> ILType val mkILFreeVar: string * bool * ILType -> IlxClosureFreeVar fsharp-3.0.34/src/absil/bytes.fsi0000775000175000017500000000425212260314606015610 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Blobs of bytes, cross-compiling namespace Microsoft.FSharp.Compiler.AbstractIL.Internal open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal module internal Bytes = /// returned int will be 0 <= x <= 255 val get: byte[] -> int -> int val zeroCreate: int -> byte[] /// each int must be 0 <= x <= 255 val ofInt32Array: int[] -> byte[] /// each int will be 0 <= x <= 255 val blit: byte[] -> int -> byte[] -> int -> int -> unit val stringAsUnicodeNullTerminated: string -> byte[] val stringAsUtf8NullTerminated: string -> byte[] /// Imperative buffers and streams of byte[] [] type internal ByteBuffer = member Close : unit -> byte[] member EmitIntAsByte : int -> unit member EmitIntsAsBytes : int[] -> unit member EmitByte : byte -> unit member EmitBytes : byte[] -> unit member EmitInt32 : int32 -> unit member EmitInt64 : int64 -> unit member FixupInt32 : pos: int -> value: int32 -> unit member EmitInt32AsUInt16 : int32 -> unit member EmitBoolAsByte : bool -> unit member EmitUInt16 : uint16 -> unit member Position : int static member Create : int -> ByteBuffer [] type internal ByteStream = member ReadByte : unit -> byte member ReadBytes : int -> byte[] member ReadUtf8String : int -> string member Position : int static member FromBytes : byte[] * start:int * length:int -> ByteStream #if LAZY_UNPICKLE member CloneAndSeek : int -> ByteStream member Skip : int -> unit #endif fsharp-3.0.34/src/absil/ilwrite.fsi0000775000175000017500000000312212260314606016134 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// The IL Binary writer module internal Microsoft.FSharp.Compiler.AbstractIL.ILBinaryWriter open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.IL [] type ILStrongNameSigner = member PublicKey: byte[] static member OpenPublicKeyFile: string -> ILStrongNameSigner static member OpenPublicKey: byte[] -> ILStrongNameSigner static member OpenKeyPairFile: string -> ILStrongNameSigner static member OpenKeyContainer: string -> ILStrongNameSigner type options = { mscorlib: ILScopeRef; pdbfile: string option; signer : ILStrongNameSigner option; fixupOverlappingSequencePoints : bool; emitTailcalls: bool; showTimes : bool; dumpDebugInfo : bool } /// Write a binary to the file system. Extra configuration parameters can also be specified. val WriteILBinary: filename: string -> options: options -> input: ILModuleDef -> noDebugData: bool -> unit fsharp-3.0.34/src/absil/ilmorph.fs0000775000175000017500000006112312260314606015763 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Morphs open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL type 'T morph = 'T -> 'T type EnclosingTypeDefs = ILTypeDef list * ILTypeDef let checking = false let notlazy v = Lazy.CreateFromValue v // REVIEW: Consider removing Post-Dev11 M3 let mutable morphCustomAttributeData = false let enablemorphCustomAttributeData() = morphCustomAttributeData <- true let disablemorphCustomAttributeData() = morphCustomAttributeData <- false let mdef_code2code f md = let code = match md.mdBody.Contents with | MethodBody.IL il-> il | _ -> failwith "mdef_code2code - method not IL" let code' = MethodBody.IL {code with Code = f code.Code} {md with mdBody= mkMethBodyAux code'} let code_block2block f (c:ILCode) = checkILCode (f c) let bblock_instr2instr f bb = let instrs = bb.Instructions let len = Array.length instrs let res = Array.zeroCreate len for i = 0 to len - 1 do res.[i] <- f instrs.[i] {bb with Instructions=res} // This is quite performance critical let nonNil x = match x with [] -> false | _ -> true let bblock_instr2instrs f bb = let instrs = bb.Instructions let codebuf = ref (Array.zeroCreate (Array.length instrs)) let codebuf_size = ref 0 for i = 0 to Array.length instrs - 1 do let instr = instrs.[i] let instrs = f instr let curr = ref instrs while nonNil !curr do match !curr with | instr2::t -> let sz = !codebuf_size let old_buf_size = Array.length !codebuf let new_size = sz + 1 if new_size > old_buf_size then begin let old = !codebuf let new' = Array.zeroCreate (max new_size (old_buf_size * 4)) Array.blit old 0 new' 0 sz; codebuf := new'; end; (!codebuf).[sz] <- instr2; incr codebuf_size; curr := t; | [] -> () {bb with Instructions = Array.sub !codebuf 0 !codebuf_size} // Map each instruction in a basic block to a more complicated block that // may involve internal branching, but which will still have one entry // label and one exit label. This is used, for example, when macro-expanding // complicated high-level ILX instructions. // The morphing function is told the name of the input and output labels // that must be used for the generated block. // Optimize the case where an instruction gets mapped to a // straightline sequence of instructions by allowing the morphing // function to return a special result for this case. // // Let [i] be the instruction being morphed. If [i] is a control-flow // then instruction then [f] must return either a control-flow terminated // sequence of instructions or a block both of which must targets the same labels // (or a subset of the labels) targeted in [i]. If [i] // is not a if not a control-flow instruction then [f] // must return a block targeting the given output label. let rec countAccInstrs (xss:ILInstr list list) acc = match xss with | [] -> acc | xs :: rest -> countAccInstrs rest (acc + List.length xs) let rec commitAccInstrsAux (xs:ILInstr list) (arr:ILInstr[]) i = match xs with | [] -> () | x :: rest -> arr.[i] <- x; commitAccInstrsAux rest arr (i+1) // Fill in the array chunk by chunk from the end and work backwards let rec commitAccInstrs xss arr i = match xss with | [] -> assert (i = 0) | xs :: rest -> let n = List.length xs commitAccInstrsAux xs arr (i - n) commitAccInstrs rest arr (i - n) // Write the accumulated instructions into an array. The fragments come in in reverse order. let commitAccBasicBlock (sofar: ILInstr list list) = let n = countAccInstrs sofar 0 let arr = Array.zeroCreate n commitAccInstrs sofar arr n arr [] type InstrMorph(isInstrs:bool, instrs:ILInstr list, code: ILCode) = new (instrs:ILInstr list) = InstrMorph(true,instrs,Unchecked.defaultof<_>) new (code:ILCode) = InstrMorph(false,Unchecked.defaultof<_>,code) member x.IsInstrs = isInstrs member x.Instrs = instrs member x.Code = code let rec bblockLoop f bb currBBlockInpLabel currInpLabel currOutLabel sofar instrs = match instrs with | (i::rest) -> let res : InstrMorph = f currInpLabel currOutLabel i if res.IsInstrs then // First possibility: return a list of instructions. No addresses get consumed. bblockLoop f bb currBBlockInpLabel currInpLabel currOutLabel (res.Instrs :: sofar) rest else let middle_bblock = res.Code let before_bblock = let instrs = commitAccBasicBlock ([I_br currInpLabel] :: sofar) mkBasicBlock {Label=currBBlockInpLabel;Instructions=instrs} if checking && uniqueEntryOfCode middle_bblock <> currInpLabel then dprintn ("*** warning when transforming bblock "^formatCodeLabel bb.Label^": bblock2code_instr2code: input label of returned block does not match the expected label while converting an instruction to a block."); let afterBlocks = match rest with | [] -> [] // the bblock has already been transformed | _ -> let newInLab = generateCodeLabel () let newOutLab = generateCodeLabel () [ bblockLoop f bb currOutLabel newInLab newOutLab [] rest ] checkILCode (mkGroupBlock ( currInpLabel :: (match rest with [] -> [] | _ -> [ currOutLabel ]), before_bblock :: middle_bblock :: afterBlocks)) | [] -> let instrs = commitAccBasicBlock sofar mkBasicBlock {Label=currBBlockInpLabel;Instructions=instrs} let bblock2code_instr2code (f:ILCodeLabel -> ILCodeLabel -> ILInstr -> InstrMorph) bb = bblockLoop f bb bb.Label (generateCodeLabel ()) (generateCodeLabel ()) [] (Array.toList bb.Instructions) let rec block_bblock2code_typ2typ ((fbb,fty) as f) x = match x with | ILBasicBlock bblock -> fbb bblock | GroupBlock (locs,l) -> GroupBlock(locs,List.map (code_bblock2code_typ2typ f) l) | TryBlock (tryb,seh) -> let seh = match seh with | FaultBlock b -> FaultBlock (code_bblock2code_typ2typ f b) | FinallyBlock b -> FinallyBlock (code_bblock2code_typ2typ f b) | FilterCatchBlock clsl -> FilterCatchBlock (List.map (fun (flt,ctch) -> (match flt with CodeFilter fltcode -> CodeFilter (code_bblock2code_typ2typ f fltcode) | TypeFilter ty -> TypeFilter (fty ty)), code_bblock2code_typ2typ f ctch) clsl) TryBlock (code_bblock2code_typ2typ f tryb,seh) | RestrictBlock (ls,c) -> RestrictBlock (ls,code_bblock2code_typ2typ f c) and code_bblock2code_typ2typ f (c:ILCode) = checkILCode (block_bblock2code_typ2typ f c) let topcode_bblock2code_typ2typ f (c:ILCode) = code_bblock2code_typ2typ f c let rec block_bblock2code f x = match x with | ILBasicBlock bblock -> f bblock | GroupBlock (locs,l) -> GroupBlock(locs,List.map (code_bblock2code f) l) | TryBlock (tryb,seh) -> TryBlock (code_bblock2code f tryb, begin match seh with | FaultBlock b -> FaultBlock (code_bblock2code f b) | FinallyBlock b -> FinallyBlock (code_bblock2code f b) | FilterCatchBlock clsl -> FilterCatchBlock (List.map (fun (flt,ctch) -> (match flt with |CodeFilter fltcode -> CodeFilter (code_bblock2code f fltcode) | TypeFilter _ty -> flt), code_bblock2code f ctch) clsl) end) | RestrictBlock (ls,c) -> RestrictBlock (ls,code_bblock2code f c) and code_bblock2code f (c:ILCode) = checkILCode (block_bblock2code f c) let topcode_bblock2code f (c:ILCode) = code_bblock2code f c // -------------------------------------------------------------------- // Standard morphisms - mapping types etc. // -------------------------------------------------------------------- let rec typ_tref2tref f x = match x with | ILType.Ptr t -> ILType.Ptr (typ_tref2tref f t) | ILType.FunctionPointer x -> ILType.FunctionPointer { x with ArgTypes=ILList.map (typ_tref2tref f) x.ArgTypes; ReturnType=typ_tref2tref f x.ReturnType} | ILType.Byref t -> ILType.Byref (typ_tref2tref f t) | ILType.Boxed cr -> mkILBoxedType (tspec_tref2tref f cr) | ILType.Value ir -> ILType.Value (tspec_tref2tref f ir) | ILType.Array (s,ty) -> ILType.Array (s,typ_tref2tref f ty) | ILType.TypeVar v -> ILType.TypeVar v | ILType.Modified (req,tref,ty) -> ILType.Modified (req, f tref, typ_tref2tref f ty) | ILType.Void -> ILType.Void and tspec_tref2tref f (x:ILTypeSpec) = mkILTySpecRaw(f x.TypeRef, ILList.map (typ_tref2tref f) x.GenericArgs) let rec typ_scoref2scoref_tyvar2typ ((_fscope,ftyvar) as fs)x = match x with | ILType.Ptr t -> ILType.Ptr (typ_scoref2scoref_tyvar2typ fs t) | ILType.FunctionPointer t -> ILType.FunctionPointer (callsig_scoref2scoref_tyvar2typ fs t) | ILType.Byref t -> ILType.Byref (typ_scoref2scoref_tyvar2typ fs t) | ILType.Boxed cr -> mkILBoxedType (tspec_scoref2scoref_tyvar2typ fs cr) | ILType.Value ir -> ILType.Value (tspec_scoref2scoref_tyvar2typ fs ir) | ILType.Array (s,ty) -> ILType.Array (s,typ_scoref2scoref_tyvar2typ fs ty) | ILType.TypeVar v -> ftyvar v | x -> x and tspec_scoref2scoref_tyvar2typ fs (x:ILTypeSpec) = ILTypeSpec.Create(morphILScopeRefsInILTypeRef (fst fs) x.TypeRef,typs_scoref2scoref_tyvar2typ fs x.GenericArgs) and callsig_scoref2scoref_tyvar2typ f x = { x with ArgTypes=ILList.map (typ_scoref2scoref_tyvar2typ f) x.ArgTypes; ReturnType=typ_scoref2scoref_tyvar2typ f x.ReturnType} and typs_scoref2scoref_tyvar2typ f i = ILList.map (typ_scoref2scoref_tyvar2typ f) i and gparams_scoref2scoref_tyvar2typ f i = List.map (gparam_scoref2scoref_tyvar2typ f) i and gparam_scoref2scoref_tyvar2typ _f i = i and morphILScopeRefsInILTypeRef fscope (x:ILTypeRef) = ILTypeRef.Create(scope=fscope x.Scope, enclosing=x.Enclosing, name = x.Name) let callsig_typ2typ f (x: ILCallingSignature) = { CallingConv=x.CallingConv; ArgTypes=ILList.map f x.ArgTypes; ReturnType=f x.ReturnType} let gparam_typ2typ f gf = {gf with Constraints = ILList.map f gf.Constraints} let gparams_typ2typ f gfs = List.map (gparam_typ2typ f) gfs let typs_typ2typ (f: ILType -> ILType) x = ILList.map f x let mref_typ2typ (f: ILType -> ILType) (x:ILMethodRef) = ILMethodRef.Create(enclosingTypeRef= (f (mkILBoxedType (mkILNonGenericTySpec x.EnclosingTypeRef))).TypeRef, callingConv=x.CallingConv, name=x.Name, genericArity=x.GenericArity, argTypes= ILList.map f x.ArgTypes, returnType= f x.ReturnType) type formal_scopeCtxt = Choice let mspec_typ2typ (((factualty : ILType -> ILType) , (fformalty: formal_scopeCtxt -> ILType -> ILType))) (x: ILMethodSpec) = mkILMethSpecForMethRefInTyRaw(mref_typ2typ (fformalty (Choice1Of3 x)) x.MethodRef, factualty x.EnclosingType, typs_typ2typ factualty x.GenericArgs) let fref_typ2typ (f: ILType -> ILType) x = { x with EnclosingTypeRef = (f (mkILBoxedType (mkILNonGenericTySpec x.EnclosingTypeRef))).TypeRef; Type= f x.Type } let fspec_typ2typ ((factualty,(fformalty : formal_scopeCtxt -> ILType -> ILType))) x = { FieldRef=fref_typ2typ (fformalty (Choice2Of3 x)) x.FieldRef; EnclosingType= factualty x.EnclosingType } let rec celem_typ2typ f celem = match celem with | ILAttribElem.Type (Some ty) -> ILAttribElem.Type (Some (f ty)) | ILAttribElem.TypeRef (Some tref) -> ILAttribElem.TypeRef (Some (f (mkILBoxedType (mkILNonGenericTySpec tref))).TypeRef) | ILAttribElem.Array (elemTy,elems) -> ILAttribElem.Array (f elemTy, List.map (celem_typ2typ f) elems) | _ -> celem let cnamedarg_typ2typ f ((nm, ty, isProp, elem) : ILAttributeNamedArg) = (nm, f ty, isProp, celem_typ2typ f elem) let cattr_typ2typ ilg f c = let meth = mspec_typ2typ (f, (fun _ -> f)) c.Method // dev11 M3 defensive coding: if anything goes wrong with attribute decoding or encoding, then back out. if morphCustomAttributeData then try let elems,namedArgs = IL.decodeILAttribData ilg c (Some(meth.MethodRef.EnclosingTypeRef.Scope)) let elems = elems |> List.map (celem_typ2typ f) let namedArgs = namedArgs |> List.map (cnamedarg_typ2typ f) IL.mkILCustomAttribMethRef ilg (meth, elems, namedArgs) with _ -> { c with Method = meth } else { c with Method = meth } let cattrs_typ2typ ilg f (cs: ILAttributes) = mkILCustomAttrs (List.map (cattr_typ2typ ilg f) cs.AsList) let fdef_typ2typ ilg ftype (fd: ILFieldDef) = {fd with Type=ftype fd.Type; CustomAttrs=cattrs_typ2typ ilg ftype fd.CustomAttrs} let altfdef_typ2typ ilg ftype (fd: IlxUnionField) = IlxUnionField( fdef_typ2typ ilg ftype fd.ILField) let alts_typ2typ ilg f alts = Array.map (fun alt -> { alt with altFields = Array.map (altfdef_typ2typ ilg f) alt.altFields; altCustomAttrs = cattrs_typ2typ ilg f alt.altCustomAttrs }) alts let curef_typ2typ ilg f (IlxUnionRef(s,alts,nullPermitted,helpers)) = IlxUnionRef(s,alts_typ2typ ilg f alts,nullPermitted,helpers) let local_typ2typ f (l: ILLocal) = {l with Type = f l.Type} let freevar_typ2typ f l = {l with fvType = f l.fvType} let varargs_typ2typ f (varargs: ILVarArgs) = Option.map (ILList.map f) varargs (* REVIEW: convert varargs *) let morphILTypesInILInstr ((factualty,fformalty)) i = let factualty = factualty (Some i) let conv_fspec fr = fspec_typ2typ (factualty,fformalty (Some i)) fr let conv_mspec mr = mspec_typ2typ (factualty,fformalty (Some i)) mr match i with | I_calli (a,mref,varargs) -> I_calli (a,callsig_typ2typ (factualty) mref,varargs_typ2typ factualty varargs) | I_call (a,mr,varargs) -> I_call (a,conv_mspec mr,varargs_typ2typ factualty varargs) | I_callvirt (a,mr,varargs) -> I_callvirt (a,conv_mspec mr,varargs_typ2typ factualty varargs) | I_callconstraint (a,ty,mr,varargs) -> I_callconstraint (a,factualty ty,conv_mspec mr,varargs_typ2typ factualty varargs) | I_newobj (mr,varargs) -> I_newobj (conv_mspec mr,varargs_typ2typ factualty varargs) | I_ldftn mr -> I_ldftn (conv_mspec mr) | I_ldvirtftn mr -> I_ldvirtftn (conv_mspec mr) | I_ldfld (a,b,fr) -> I_ldfld (a,b,conv_fspec fr) | I_ldsfld (a,fr) -> I_ldsfld (a,conv_fspec fr) | I_ldsflda (fr) -> I_ldsflda (conv_fspec fr) | I_ldflda fr -> I_ldflda (conv_fspec fr) | I_stfld (a,b,fr) -> I_stfld (a,b,conv_fspec fr) | I_stsfld (a,fr) -> I_stsfld (a,conv_fspec fr) | I_castclass typ -> I_castclass (factualty typ) | I_isinst typ -> I_isinst (factualty typ) | I_initobj typ -> I_initobj (factualty typ) | I_cpobj typ -> I_cpobj (factualty typ) | I_stobj (al,vol,typ) -> I_stobj (al,vol,factualty typ) | I_ldobj (al,vol,typ) -> I_ldobj (al,vol,factualty typ) | I_box typ -> I_box (factualty typ) | I_unbox typ -> I_unbox (factualty typ) | I_unbox_any typ -> I_unbox_any (factualty typ) | I_ldelem_any (shape,typ) -> I_ldelem_any (shape,factualty typ) | I_stelem_any (shape,typ) -> I_stelem_any (shape,factualty typ) | I_newarr (shape,typ) -> I_newarr (shape,factualty typ) | I_ldelema (ro,isNativePtr,shape,typ) -> I_ldelema (ro,isNativePtr,shape,factualty typ) | I_sizeof typ -> I_sizeof (factualty typ) | I_ldtoken tok -> match tok with | ILToken.ILType typ -> I_ldtoken (ILToken.ILType (factualty typ)) | ILToken.ILMethod mr -> I_ldtoken (ILToken.ILMethod (conv_mspec mr)) | ILToken.ILField fr -> I_ldtoken (ILToken.ILField (conv_fspec fr)) | x -> x let return_typ2typ ilg f (r:ILReturn) = {r with Type=f r.Type; CustomAttrs=cattrs_typ2typ ilg f r.CustomAttrs} let param_typ2typ ilg f (p: ILParameter) = {p with Type=f p.Type; CustomAttrs=cattrs_typ2typ ilg f p.CustomAttrs} let morphILMethodDefs f (m:ILMethodDefs) = mkILMethods (List.map f m.AsList) let fdefs_fdef2fdef f (m:ILFieldDefs) = mkILFields (List.map f m.AsList) (* use this when the conversion produces just one type... *) let morphILTypeDefs f (m: ILTypeDefs) = mkILTypeDefs (List.map f m.AsList) let morphExpandILTypeDefs f (m:ILTypeDefs) = mkILTypeDefs (List.foldBack (fun x y -> f x @ y) m.AsList []) let morphILTypeDefsInILModule typesf m = {m with TypeDefs=typesf m.TypeDefs} let locals_typ2typ f ls = ILList.map (local_typ2typ f) ls let freevars_typ2typ f ls = Array.map (freevar_typ2typ f) ls let ilmbody_bblock2code_typ2typ_maxstack2maxstack fs il = let (finstr,ftype,fmaxstack) = fs {il with Code=topcode_bblock2code_typ2typ (finstr,ftype) il.Code; Locals = locals_typ2typ ftype il.Locals; MaxStack = fmaxstack il.MaxStack } let morphILMethodBody (filmbody) (x: ILLazyMethodBody) = let c = match x.Contents with | MethodBody.IL il -> MethodBody.IL (filmbody il) | x -> x mkMethBodyAux c let ospec_typ2typ f (OverridesSpec(mref,ty)) = OverridesSpec(mref_typ2typ f mref, f ty) let mdef_typ2typ_ilmbody2ilmbody ilg fs md = let (ftype,filmbody) = fs let ftype' = ftype (Some md) let body' = morphILMethodBody (filmbody (Some md)) md.mdBody {md with GenericParams=gparams_typ2typ ftype' md.GenericParams; mdBody= body'; Parameters = ILList.map (param_typ2typ ilg ftype') md.Parameters; Return = return_typ2typ ilg ftype' md.Return; CustomAttrs=cattrs_typ2typ ilg ftype' md.CustomAttrs } let fdefs_typ2typ ilg f x = fdefs_fdef2fdef (fdef_typ2typ ilg f) x let mdefs_typ2typ_ilmbody2ilmbody ilg fs x = morphILMethodDefs (mdef_typ2typ_ilmbody2ilmbody ilg fs) x let cuinfo_typ2typ ilg ftype cud = { cud with cudAlternatives = alts_typ2typ ilg ftype cud.cudAlternatives; } let cloinfo_typ2typ_ilmbody2ilmbody fs clo = let (ftype,filmbody) = fs let c' = filmbody None (Lazy.force clo.cloCode) { clo with cloFreeVars = freevars_typ2typ ftype clo.cloFreeVars; cloCode=notlazy c' } let morphIlxClosureInfo f clo = let c' = f (Lazy.force clo.cloCode) { clo with cloCode=notlazy c' } let mimpl_typ2typ f e = { Overrides = ospec_typ2typ f e.Overrides; OverrideBy = mspec_typ2typ (f,(fun _ -> f)) e.OverrideBy; } let edef_typ2typ ilg f e = { e with Type = Option.map f e.Type; AddMethod = mref_typ2typ f e.AddMethod; RemoveMethod = mref_typ2typ f e.RemoveMethod; FireMethod = Option.map (mref_typ2typ f) e.FireMethod; OtherMethods = List.map (mref_typ2typ f) e.OtherMethods; CustomAttrs = cattrs_typ2typ ilg f e.CustomAttrs } let pdef_typ2typ ilg f p = { p with SetMethod = Option.map (mref_typ2typ f) p.SetMethod; GetMethod = Option.map (mref_typ2typ f) p.GetMethod; Type = f p.Type; Args = ILList.map f p.Args; CustomAttrs = cattrs_typ2typ ilg f p.CustomAttrs } let pdefs_typ2typ ilg f (pdefs: ILPropertyDefs) = mkILProperties (List.map (pdef_typ2typ ilg f) pdefs.AsList) let edefs_typ2typ ilg f (edefs: ILEventDefs) = mkILEvents (List.map (edef_typ2typ ilg f) edefs.AsList) let mimpls_typ2typ f (mimpls : ILMethodImplDefs) = mkILMethodImpls (List.map (mimpl_typ2typ f) mimpls.AsList) let rec tdef_typ2typ_ilmbody2ilmbody_mdefs2mdefs ilg enc fs td = let (ftype,filmbody,fmdefs) = fs let ftype' = ftype (Some (enc,td)) None let mdefs' = fmdefs (enc,td) td.Methods let fdefs' = fdefs_typ2typ ilg ftype' td.Fields {td with Implements= ILList.map ftype' td.Implements; GenericParams= gparams_typ2typ ftype' td.GenericParams; Extends = Option.map ftype' td.Extends; Methods=mdefs'; NestedTypes=tdefs_typ2typ_ilmbody2ilmbody_mdefs2mdefs ilg (enc@[td]) fs td.NestedTypes; Fields=fdefs'; MethodImpls = mimpls_typ2typ ftype' td.MethodImpls; Events = edefs_typ2typ ilg ftype' td.Events; Properties = pdefs_typ2typ ilg ftype' td.Properties; CustomAttrs = cattrs_typ2typ ilg ftype' td.CustomAttrs; tdKind = match td.tdKind with | ILTypeDefKind.Other e when isIlxExtTypeDefKind e -> match destIlxExtTypeDefKind e with | IlxTypeDefKind.Closure i -> mkIlxTypeDefKind (IlxTypeDefKind.Closure (cloinfo_typ2typ_ilmbody2ilmbody (ftype',filmbody (enc,td)) i)) | IlxTypeDefKind.Union i -> mkIlxTypeDefKind (IlxTypeDefKind.Union (cuinfo_typ2typ ilg ftype' i)) | _ -> td.tdKind } and tdefs_typ2typ_ilmbody2ilmbody_mdefs2mdefs ilg enc fs tdefs = morphILTypeDefs (tdef_typ2typ_ilmbody2ilmbody_mdefs2mdefs ilg enc fs) tdefs // -------------------------------------------------------------------- // Derived versions of the above, e.g. with defaults added // -------------------------------------------------------------------- let manifest_typ2typ ilg f (m : ILAssemblyManifest) = { m with CustomAttrs = cattrs_typ2typ ilg f m.CustomAttrs } let morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs ilg ((ftype: ILModuleDef -> (ILTypeDef list * ILTypeDef) option -> ILMethodDef option -> ILType -> ILType), (filmbody: ILModuleDef -> ILTypeDef list * ILTypeDef -> ILMethodDef option -> ILMethodBody -> ILMethodBody), fmdefs) m = let ftdefs = tdefs_typ2typ_ilmbody2ilmbody_mdefs2mdefs ilg [] (ftype m, filmbody m, fmdefs m) { m with TypeDefs=ftdefs m.TypeDefs; CustomAttrs=cattrs_typ2typ ilg (ftype m None None) m.CustomAttrs; Manifest=Option.map (manifest_typ2typ ilg (ftype m None None)) m.Manifest } let module_bblock2code_typ2typ_maxstack2maxstack ilg fs x = let (fbblock,ftype,fmaxstack) = fs let filmbody modCtxt tdefCtxt mdefCtxt = ilmbody_bblock2code_typ2typ_maxstack2maxstack (fbblock modCtxt tdefCtxt mdefCtxt, ftype modCtxt (Some tdefCtxt) mdefCtxt, fmaxstack modCtxt tdefCtxt mdefCtxt) let fmdefs modCtxt tdefCtxt = mdefs_typ2typ_ilmbody2ilmbody ilg (ftype modCtxt (Some tdefCtxt), filmbody modCtxt tdefCtxt) morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs ilg (ftype, filmbody, fmdefs) x let module_bblock2code_typ2typ ilg (f1,f2) x = module_bblock2code_typ2typ_maxstack2maxstack ilg (f1, f2, (fun _modCtxt _tdefCtxt _mdefCtxt x -> x)) x let morphILInstrsAndILTypesInILModule ilg (f1,f2) x = module_bblock2code_typ2typ ilg ((fun modCtxt tdefCtxt mdefCtxt i -> mkBasicBlock (bblock_instr2instr (f1 modCtxt tdefCtxt mdefCtxt) i)), f2) x let morphILInstrsInILCode f x = topcode_bblock2code (fun i -> mkBasicBlock (bblock_instr2instrs f i)) x let morphExpandILInstrsInILCode f x = topcode_bblock2code (bblock2code_instr2code f) x let morphILTypeInILModule ilg ftype y = let finstr modCtxt tdefCtxt mdefCtxt = let fty = ftype modCtxt (Some tdefCtxt) mdefCtxt morphILTypesInILInstr ((fun _instrCtxt -> fty), (fun _instrCtxt _formalCtxt -> fty)) morphILInstrsAndILTypesInILModule ilg (finstr,ftype) y let morphILTypeRefsInILModuleMemoized ilg f modul = let fty = Tables.memoize (typ_tref2tref f) morphILTypeInILModule ilg (fun _ _ _ ty -> fty ty) modul let morphILScopeRefsInILModuleMemoized ilg f modul = morphILTypeRefsInILModuleMemoized ilg (morphILScopeRefsInILTypeRef f) modul fsharp-3.0.34/src/absil/ilpars.fsy0000775000175000017500000003276112260314606016002 0ustar chrischris%{ //---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- #nowarn "1182" // the generated code often has unused variable "parseState" open Internal.Utilities open Internal.Utilities.Text open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library let pfailwith s = stderr.WriteLine ("*** error: "+s); raise Parsing.RecoverableParseError /// vararg sentinels type SigArg = SigArg of (string option * ILType) | Sentinel let decodeVarargs args = let rec normals = function | [] -> ([],None) | Sentinel :: t -> ([],Some (ILList.ofList (varargs t))) | SigArg (_,p)::t -> let (n,r) = normals t in (p::n, r) and varargs = function | [] -> [] | SigArg (_,ty):: t -> let l = varargs t in ty::l | Sentinel :: t -> pfailwith "two sentinels in vararg call" normals args type ResolvedAtMethodSpecScope<'T> = ResolvedAtMethodSpecScope of (ILGenericParameterDefs -> 'T) let noMethodSpecScope x = ResolvedAtMethodSpecScope (fun _cgparams -> x) let resolveMethodSpecScope (ResolvedAtMethodSpecScope f) x = f x let resolveMethodSpecScopeThen (ResolvedAtMethodSpecScope f) g = ResolvedAtMethodSpecScope (fun x -> resolveMethodSpecScope (g(f x)) x) let resolveFormalMethodSpecScope tspeco obj = match tspeco with None -> resolveMethodSpecScope obj mkILEmptyGenericParams | Some (tspec:ILTypeSpec) -> resolveMethodSpecScope obj (mkILFormalTyparsRaw tspec.GenericArgs) let resolveCurrentMethodSpecScope obj = resolveMethodSpecScope obj mkILEmptyGenericParams let findMscorlibAssemblyRef() = match (!parseILGlobals).mscorlibScopeRef with | ILScopeRef.Assembly aref -> aref | _ -> pfailwith "mscorlibScopeRef not set to valid assembly reference in parseILGlobals" let findAssemblyRef nm = if nm = "mscorlib" then findMscorlibAssemblyRef() else pfailwith ("Undefined assembly ref '" + nm + "'") %} /*----------------------------------------------------------------------- * The YACC Grammar *----------------------------------------------------------------------*/ %token VAL_INT64 /* 342534523534534 0x34FA434644554 */ %token VAL_INT32_ELIPSES /* 342534523534534... */ %token VAL_FLOAT64 /* -334234 24E-34 */ %token INSTR_I %token INSTR_I32_I32 %token INSTR_I8 %token INSTR_R %token INSTR_METHOD %token INSTR_NONE %token INSTR_STRING %token INSTR_TOK %token INSTR_TYPE %token INSTR_INT_TYPE %token INSTR_VALUETYPE %token VAL_HEXBYTE /* 05 1A FA */ %token VAL_ID /* testing343 */ %token VAL_DOTTEDNAME /* testing343.abd */ %token VAL_QSTRING /* "Hello World\n" */ %token VAL_SQSTRING /* 'Hello World\n' */ %token AMP %token BANG %token BOOL %token BYTEARRAY %token CHAR %token CLASS %token COMMA %token DCOLON %token DEFAULT %token DOT %token ELIPSES %token EOF %token EXPLICIT %token FIELD %token FLOAT32 %token FLOAT64 %token GREATER %token INSTANCE %token INT %token INT16 %token INT32 %token INT64 %token INT8 %token LBRACK %token LESS %token LPAREN %token METHOD %token NATIVE %token OBJECT %token PLUS %token RBRACK %token RPAREN %token SLASH %token STAR %token STRING %token UINT %token UINT16 %token UINT32 %token UINT64 %token UINT8 %token UNMANAGED %token UNSIGNED %token VALUE %token VALUETYPE %token VARARG %token VOID %type name1 %type typ %type ilInstrs %type ilType %start ilInstrs ilType /**************************************************************************/ %% /* ENTRYPOINT */ ilType: typ EOF { resolveMethodSpecScope $1 [] } /* ENTRYPOINT */ ilInstrs: instrs2 EOF { Array.ofList $1 } compQstring: VAL_QSTRING { $1 } | compQstring PLUS VAL_QSTRING { $1 + $3 } methodName: name1 { $1 } instrs2: | instr instrs2 { $1 :: $2 } | { [] } methodSpecMaybeArrayMethod: callConv typ typSpec DCOLON methodName opt_actual_tyargs LPAREN sigArgs0 RPAREN { let callee_class_typ : ILType = resolveCurrentMethodSpecScope $3 let gscope = (if isILArrTy callee_class_typ then None else Some callee_class_typ.TypeSpec) let argtys_n_varargs = resolveFormalMethodSpecScope gscope $8 let (argtys,varargs) = decodeVarargs argtys_n_varargs let minst = resolveCurrentMethodSpecScope $6 let callee_retty = resolveFormalMethodSpecScope gscope $2 (callee_class_typ, $1, $5, argtys, callee_retty, minst), varargs } instr: INSTR_NONE { ($1 ()) } | INSTR_I int32 { ($1 $2) } | INSTR_I32_I32 int32 int32 { ($1 ($2,$3)) } | INSTR_I8 int64 { ($1 $2) } | INSTR_R float64 { ($1 (ILConst.R8 $2)) } | INSTR_R int64 { ($1 (ILConst.R8 (float $2))) } | INSTR_METHOD methodSpecMaybeArrayMethod { let ((encl_typ, _cc, nm, _argtys, _retty, _minst) as data),varargs = $2 if isILArrTy encl_typ then let (shape,ty) = destILArrTy encl_typ match nm with | "Get" -> I_ldelem_any(shape,ty) | "Set" -> I_stelem_any(shape,ty) | "Address" -> I_ldelema(NormalAddress,false,shape,ty) | ".ctor" -> I_newarr(shape,ty) | _ -> failwith "bad method on array type" else $1 (mkILMethSpecInTy data, varargs) } | INSTR_TYPE typSpec { $1 (resolveCurrentMethodSpecScope $2) } | INSTR_INT_TYPE int32 typSpec { $1 ( $2,resolveCurrentMethodSpecScope $3) } | INSTR_VALUETYPE typSpec { $1 (resolveCurrentMethodSpecScope $2) } | INSTR_TOK typSpec { ($1 (ILToken.ILType (resolveCurrentMethodSpecScope $2))) } /*----------------------------------------------- * Formal signatures of methods etc. *---------------------------------------------*/ sigArgs0: { noMethodSpecScope [] } | sigArgs1 { $1 } sigArgs1: sigArgs1a { ResolvedAtMethodSpecScope (fun c -> List.map (fun obj -> resolveMethodSpecScope obj c) (List.rev $1)) } sigArgs1a: sigArg { [$1] } | sigArgs1a COMMA sigArg { $3:: $1 } sigArg: | typ opt_id { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (SigArg($2, ty))) } opt_id: { None } | id { Some $1 } /*----------------------------------------------- * Type names *---------------------------------------------*/ name1: | id { $1 } | VAL_DOTTEDNAME { $1 } | name1 DOT id { $1 + "." + $3 } className: LBRACK name1 RBRACK slashedName { let (enc,nm) = $4 let aref = findAssemblyRef $2 ILScopeRef.Assembly aref, enc, nm } | slashedName { let enc, nm = $1 in (ILScopeRef.Local, enc, nm) } slashedName: name1 { ([],$1) } | name1 SLASH slashedName { let (enc,nm) = $3 in ($1::enc, nm) } typeNameInst: className opt_actual_tyargs { let (a,b,c) = $1 resolveMethodSpecScopeThen $2 (fun inst -> noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), inst)))) } typeName: className { let (a,b,c) = $1 noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), []))) } typSpec: typeName { resolveMethodSpecScopeThen $1 (fun tref -> noMethodSpecScope (mkILBoxedType tref)) } | typ { $1 } | LPAREN typ RPAREN { $2 } callConv: INSTANCE callKind { Callconv (ILThisConvention.Instance,$2) } | EXPLICIT callKind { Callconv (ILThisConvention.InstanceExplicit,$2) } | callKind { Callconv (ILThisConvention.Static,$1) } callKind: /* EMPTY */ { ILArgConvention.Default } | DEFAULT { ILArgConvention.Default } | VARARG { ILArgConvention.VarArg } /*----------------------------------------------- * The full algebra of types, typically producing results * awaiting further info about how to fix up type * variable numbers etc. *---------------------------------------------*/ typ: STRING { noMethodSpecScope (!parseILGlobals).typ_String } | OBJECT { noMethodSpecScope (!parseILGlobals).typ_Object } | CLASS typeNameInst { resolveMethodSpecScopeThen $2 (fun tspec -> noMethodSpecScope (mkILBoxedType tspec)) } | VALUE CLASS typeNameInst { resolveMethodSpecScopeThen $3 (fun tspec -> noMethodSpecScope (ILType.Value tspec)) } | VALUETYPE typeNameInst { resolveMethodSpecScopeThen $2 (fun tspec -> noMethodSpecScope (ILType.Value tspec)) } | typ LBRACK RBRACK { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (mkILArr1DTy ty)) } | typ LBRACK bounds1 RBRACK { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (mkILArrTy (ty,ILArrayShape $3))) } | typ AMP { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (ILType.Byref ty)) } | typ STAR { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (ILType.Ptr ty)) } | CHAR { noMethodSpecScope (!parseILGlobals).typ_char } | VOID { noMethodSpecScope ILType.Void } | BOOL { noMethodSpecScope (!parseILGlobals).typ_bool } | INT8 { noMethodSpecScope (!parseILGlobals).typ_int8 } | INT16 { noMethodSpecScope (!parseILGlobals).typ_int16 } | INT32 { noMethodSpecScope (!parseILGlobals).typ_int32 } | INT64 { noMethodSpecScope (!parseILGlobals).typ_int64 } | FLOAT32 { noMethodSpecScope (!parseILGlobals).typ_float32 } | FLOAT64 { noMethodSpecScope (!parseILGlobals).typ_float64 } | UNSIGNED INT8 { noMethodSpecScope (!parseILGlobals).typ_uint8 } | UNSIGNED INT16 { noMethodSpecScope (!parseILGlobals).typ_uint16 } | UNSIGNED INT32 { noMethodSpecScope (!parseILGlobals).typ_uint32 } | UNSIGNED INT64 { noMethodSpecScope (!parseILGlobals).typ_uint64 } | UINT8 { noMethodSpecScope (!parseILGlobals).typ_uint8 } | UINT16 { noMethodSpecScope (!parseILGlobals).typ_uint16 } | UINT32 { noMethodSpecScope (!parseILGlobals).typ_uint32 } | UINT64 { noMethodSpecScope (!parseILGlobals).typ_uint64 } | NATIVE INT { noMethodSpecScope (!parseILGlobals).typ_IntPtr } | NATIVE UNSIGNED INT { noMethodSpecScope (!parseILGlobals).typ_UIntPtr } | NATIVE UINT { noMethodSpecScope (!parseILGlobals).typ_UIntPtr } | BANG int32 { noMethodSpecScope (ILType.TypeVar (uint16 ( $2))) } bounds1: bound { [$1] } | bounds1 COMMA bound { $1 @ [$3] } bound: /*EMPTY*/ { (None, None) } | int32 { (None, Some $1) } | int32 ELIPSES int32 { (Some $1, Some ($3 - $1 + 1)) } | int32 ELIPSES { (Some $1, None) } /* We need to be able to parse all of */ /* ldc.r8 0. */ /* float64(-657435.) */ /* and int32[0...,0...] */ /* The problem is telling an integer-followed-by-ellipses from a floating-point-nubmer-followed-by-dots */ | VAL_INT32_ELIPSES int32 { (Some $1, Some ($2 - $1 + 1)) } | VAL_INT32_ELIPSES { (Some $1, None) } id: VAL_ID { $1 } | VAL_SQSTRING { $1 } int32: VAL_INT64 { int32 $1 } int64: VAL_INT64 { $1 } float64: VAL_FLOAT64 { $1 } | FLOAT64 LPAREN int64 RPAREN { System.BitConverter.Int64BitsToDouble $3 } opt_actual_tyargs: /* EMPTY */ { noMethodSpecScope [] } | actual_tyargs { resolveMethodSpecScopeThen $1 (fun res -> noMethodSpecScope res) } actual_tyargs: LESS actualTypSpecs GREATER { $2 } actualTypSpecs: typSpec { resolveMethodSpecScopeThen $1 (fun res -> noMethodSpecScope [ res]) } | actualTypSpecs COMMA typSpec { resolveMethodSpecScopeThen $1 (fun x -> resolveMethodSpecScopeThen $3 (fun y -> noMethodSpecScope (x @ [ y]))) } fsharp-3.0.34/src/absil/ilsupp.fs0000775000175000017500000021331612260314606015630 0ustar chrischris//---------------------------------------------------------------------------- // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.Support let DateTime1970Jan01 = new System.DateTime(1970,1,1,0,0,0,System.DateTimeKind.Utc) (* ECMA Spec (Oct2002), Part II, 24.2.2 PE File Header. *) let absilWriteGetTimeStamp () = (System.DateTime.UtcNow - DateTime1970Jan01).TotalSeconds |> int #if SILVERLIGHT type PdbReader = | NeverImplemented let pdbReadClose (_pdb:PdbReader) = () type PdbWriter = | NeverImplemented let pdbInitialize (_:string) (_:string) = PdbWriter.NeverImplemented #else open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Bytes open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open System open System.IO open System.Text open System.Reflection open System.Diagnostics.SymbolStore open System.Runtime.InteropServices open System.Runtime.CompilerServices // Force inline, so GetLastWin32Error calls are immediately after interop calls as seen by FxCop under Debug build. let inline ignore _x = () // Native Resource linking/unlinking type IStream = System.Runtime.InteropServices.ComTypes.IStream let check _action (hresult) = if uint32 hresult >= 0x80000000ul then System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(hresult) //printf "action = %s, hresult = 0x%nx \n" action hresult // Depending on the configuration, we may want to include the output file extension in the name // of the debug symbols file. This function takes output file name and returns debug file name. let getDebugFileName outfile = if IL.runningOnMono then outfile^".mdb" else (Filename.chopExtension outfile)^".pdb" type PEFileType = X86 | X64 let MAX_PATH = 260 let E_FAIL = 0x80004005 let bytesToWord ((b0 : byte) , (b1 : byte)) = (int16)b0 ||| ((int16)b1 <<< 8) let bytesToDWord ((b0 : byte) , (b1 : byte) , (b2 : byte) , (b3 : byte)) = (int)b0 ||| ((int)b1 <<< 8) ||| ((int)b2 <<< 16) ||| ((int)b3 <<< 24) let bytesToQWord ((b0 : byte) , (b1 : byte) , (b2 : byte) , (b3 : byte) , (b4 : byte) , (b5 : byte) , (b6 : byte) , (b7 : byte)) = (int64)b0 ||| ((int64)b1 <<< 8) ||| ((int64)b2 <<< 16) ||| ((int64)b3 <<< 24) ||| ((int64)b4 <<< 32) ||| ((int64)b5 <<< 40) ||| ((int64)b6 <<< 48) ||| ((int64)b7 <<< 56) let dwToBytes n = [| (byte)(n &&& 0xff) ; (byte)((n >>> 8) &&& 0xff) ; (byte)((n >>> 16) &&& 0xff) ; (byte)((n >>> 24) &&& 0xff) |], 4 let wToBytes (n : int16) = [| (byte)(n &&& 0xffs) ; (byte)((n >>> 8) &&& 0xffs) |], 2 // REVIEW: factor these classes under one hierarchy, use reflection for creation from buffer and toBytes() // Though, everything I'd like to unify is static - metaclasses? type IMAGE_FILE_HEADER (m:int16, secs:int16, tds:int32, ptst:int32, nos:int32, soh:int16, c:int16) = let mutable machine = m let mutable numberOfSections = secs let mutable timeDateStamp = tds let mutable pointerToSymbolTable = ptst let mutable numberOfSymbols = nos let mutable sizeOfOptionalHeader = soh let mutable characteristics = c member x.Machine with get() = machine and set(value) = machine <- value member x.NumberOfSections with get() = numberOfSections and set(value) = numberOfSections <- value member x.TimeDateStamp with get() = timeDateStamp and set(value) = timeDateStamp <- value member x.PointerToSymbolTable with get() = pointerToSymbolTable and set(value) = pointerToSymbolTable <- value member x.NumberOfSymbols with get() = numberOfSymbols and set(value) = numberOfSymbols <- value member x.SizeOfOptionalHeader with get() = sizeOfOptionalHeader and set(value) = sizeOfOptionalHeader <- value member x.Characteristics with get() = characteristics and set(value) = characteristics <- value static member Width with get() = 20 member x.toBytes () = let buf = ByteBuffer.Create IMAGE_FILE_HEADER.Width buf.EmitUInt16 ((uint16)machine) buf.EmitUInt16 ((uint16)numberOfSections) buf.EmitInt32 timeDateStamp buf.EmitInt32 pointerToSymbolTable buf.EmitInt32 numberOfSymbols buf.EmitUInt16 ((uint16)sizeOfOptionalHeader) buf.EmitUInt16 ((uint16)characteristics) buf.Close() let bytesToIFH (buffer : byte[]) (offset : int) = if (buffer.Length - offset) < IMAGE_FILE_HEADER.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_FILE_HEADER" IMAGE_FILE_HEADER( bytesToWord(buffer.[offset], buffer.[offset+1]), // Machine bytesToWord(buffer.[offset+2], buffer.[offset+3]), // NumberOfSections bytesToDWord(buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), // TimeDateStamp bytesToDWord(buffer.[offset+8], buffer.[offset+9], buffer.[offset+10], buffer.[offset+11]), // PointerToSymbolTable bytesToDWord(buffer.[offset+12], buffer.[offset+13], buffer.[offset+14], buffer.[offset+15]), // NumberOfSymbols bytesToWord(buffer.[offset+16], buffer.[offset+17]), // SizeOfOptionalHeader bytesToWord(buffer.[offset+18], buffer.[offset+19])) // Characteristics type IMAGE_SECTION_HEADER(n:int64, ai:int32, va:int32, srd:int32, prd:int32, pr:int32, pln:int32, nr:int16, nl:int16, c:int32) = let mutable name = n let mutable addressInfo = ai // PhysicalAddress / VirtualSize let mutable virtualAddress = va let mutable sizeOfRawData = srd let mutable pointerToRawData = prd let mutable pointerToRelocations = pr let mutable pointerToLineNumbers = pln let mutable numberOfRelocations = nr let mutable numberOfLineNumbers = nl let mutable characteristics = c member x.Name with get() = name and set(value) = name <- value member x.PhysicalAddress with get() = addressInfo and set(value) = addressInfo <- value member x.VirtualSize with get() = addressInfo and set(value) = addressInfo <- value member x.VirtualAddress with get() = virtualAddress and set(value) = virtualAddress <- value member x.SizeOfRawData with get() = sizeOfRawData and set(value) = sizeOfRawData <- value member x.PointerToRawData with get() = pointerToRawData and set(value) = pointerToRawData <- value member x.PointerToRelocations with get() = pointerToRelocations and set(value) = pointerToRelocations <- value member x.PointerToLineNumbers with get() = pointerToLineNumbers and set(value) = pointerToLineNumbers <- value member x.NumberOfRelocations with get() = numberOfRelocations and set(value) = numberOfRelocations <- value member x.NumberOfLineNumbers with get() = numberOfLineNumbers and set(value) = numberOfLineNumbers <- value member x.Characteristics with get() = characteristics and set(value) = characteristics <- value static member Width with get() = 40 member x.toBytes () = let buf = ByteBuffer.Create IMAGE_SECTION_HEADER.Width buf.EmitInt64 name buf.EmitInt32 addressInfo buf.EmitInt32 virtualAddress buf.EmitInt32 sizeOfRawData buf.EmitInt32 pointerToRawData buf.EmitInt32 pointerToRelocations buf.EmitInt32 pointerToLineNumbers buf.EmitUInt16 ((uint16)numberOfRelocations) buf.EmitUInt16 ((uint16)numberOfLineNumbers) buf.EmitInt32 characteristics buf.Close() let bytesToISH (buffer : byte[]) (offset : int) = if (buffer.Length - offset) < IMAGE_SECTION_HEADER.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_SECTION_HEADER" IMAGE_SECTION_HEADER(bytesToQWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3], buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), // Name bytesToDWord(buffer.[offset+8], buffer.[offset+9], buffer.[offset+10], buffer.[offset+11]), // AddressInfo bytesToDWord(buffer.[offset+12], buffer.[offset+13], buffer.[offset+14], buffer.[offset+15]), // VirtualAddress bytesToDWord(buffer.[offset+16], buffer.[offset+17], buffer.[offset+18], buffer.[offset+19]), // SizeOfRawData bytesToDWord(buffer.[offset+20], buffer.[offset+21], buffer.[offset+22], buffer.[offset+23]), // PointerToRawData bytesToDWord(buffer.[offset+24], buffer.[offset+25], buffer.[offset+26], buffer.[offset+27]), // PointerToRelocations bytesToDWord(buffer.[offset+28], buffer.[offset+29], buffer.[offset+30], buffer.[offset+31]), // PointerToLineNumbers bytesToWord(buffer.[offset+32], buffer.[offset+33]), // NumberOfRelocations bytesToWord(buffer.[offset+34], buffer.[offset+35]), // NumberOfLineNumbers bytesToDWord(buffer.[offset+36], buffer.[offset+37], buffer.[offset+38], buffer.[offset+39])) // Characteristics type IMAGE_SYMBOL(n:int64, v:int32, sn:int16, t:int16, sc:byte, nas:byte) = let mutable name = n let mutable value = v let mutable sectionNumber = sn let mutable stype = t let mutable storageClass = sc let mutable numberOfAuxSymbols = nas member x.Name with get() = name and set(v) = name <- v member x.Value with get() = value and set(v) = value <- v member x.SectionNumber with get() = sectionNumber and set(v) = sectionNumber <- v member x.Type with get() = stype and set(v) = stype <- v member x.StorageClass with get() = storageClass and set(v) = storageClass <- v member x.NumberOfAuxSymbols with get() = numberOfAuxSymbols and set(v) = numberOfAuxSymbols <- v static member Width with get() = 18 member x.toBytes() = let buf = ByteBuffer.Create IMAGE_SYMBOL.Width buf.EmitInt64 name buf.EmitInt32 value buf.EmitUInt16 ((uint16)sectionNumber) buf.EmitUInt16 ((uint16)stype) buf.EmitByte storageClass buf.EmitByte numberOfAuxSymbols buf.Close() let bytesToIS (buffer : byte[]) (offset : int) = if (buffer.Length - offset) < IMAGE_SYMBOL.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_SYMBOL" IMAGE_SYMBOL( bytesToQWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3], buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), // Name bytesToDWord(buffer.[offset+8], buffer.[offset+9], buffer.[offset+10], buffer.[offset+11]), // Value bytesToWord(buffer.[offset+12], buffer.[offset+13]), // SectionNumber bytesToWord(buffer.[offset+14], buffer.[offset+15]), // Type buffer.[offset+16], // StorageClass buffer.[offset+17]) // NumberOfAuxSymbols type IMAGE_RELOCATION(va:int32, sti:int32, t:int16) = let mutable virtualAddress = va // Also RelocCount let mutable symbolTableIndex = sti let mutable ty = t // type member x.VirtualAddress with get() = virtualAddress and set(v) = virtualAddress <- v member x.RelocCount with get() = virtualAddress and set(v) = virtualAddress <- v member x.SymbolTableIndex with get() = symbolTableIndex and set(v) = symbolTableIndex <- v member x.Type with get() = ty and set(v) = ty <- v static member Width with get() = 10 member x.toBytes() = let buf = ByteBuffer.Create IMAGE_RELOCATION.Width buf.EmitInt32 virtualAddress buf.EmitInt32 symbolTableIndex buf.EmitUInt16 ((uint16)ty) buf.Close() let bytesToIR (buffer : byte[]) (offset : int) = if (buffer.Length - offset) < IMAGE_RELOCATION.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_RELOCATION" IMAGE_RELOCATION( bytesToDWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3]), bytesToDWord(buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), bytesToWord(buffer.[offset+8], buffer.[offset+9])) type IMAGE_RESOURCE_DIRECTORY(c:int32, tds:int32, mjv:int16, mnv:int16, nne:int16, nie:int16) = let mutable characteristics = c let mutable timeDateStamp = tds let mutable majorVersion = mjv let mutable minorVersion = mnv let mutable numberOfNamedEntries = nne let mutable numberOfIdEntries = nie member x.Characteristics with get() = characteristics and set(v) = characteristics <- v member x.TimeDateStamp with get() = timeDateStamp and set(v) = timeDateStamp <- v member x.MajorVersion with get() = majorVersion and set(v) = majorVersion <- v member x.MinorVersion with get() = minorVersion and set(v) = minorVersion <- v member x.NumberOfNamedEntries with get() = numberOfNamedEntries and set(v) = numberOfNamedEntries <- v member x.NumberOfIdEntries with get() = numberOfIdEntries and set(v) = numberOfIdEntries <- v static member Width = 16 member x.toBytes () = let buf = ByteBuffer.Create IMAGE_RESOURCE_DIRECTORY.Width buf.EmitInt32 characteristics buf.EmitInt32 timeDateStamp buf.EmitUInt16 ((uint16)majorVersion) buf.EmitUInt16 ((uint16)minorVersion) buf.EmitUInt16 ((uint16)numberOfNamedEntries) buf.EmitUInt16 ((uint16)numberOfIdEntries) buf.Close() let bytesToIRD (buffer:byte[]) (offset:int) = if (buffer.Length - offset) < IMAGE_RESOURCE_DIRECTORY.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_RESOURCE_DIRECTORY" IMAGE_RESOURCE_DIRECTORY( bytesToDWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3]), // Characteristics bytesToDWord(buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), // TimeDateStamp bytesToWord(buffer.[offset+8], buffer.[offset+9]), // MajorVersion bytesToWord(buffer.[offset+10], buffer.[offset+11]), // MinorVersion bytesToWord(buffer.[offset+12], buffer.[offset+13]), // NumberOfNamedEntries bytesToWord(buffer.[offset+14], buffer.[offset+15])) // NumberOfIdEntries type IMAGE_RESOURCE_DIRECTORY_ENTRY(n:int32, o:int32) = let mutable name = n let mutable offset = o member x.Name with get() = name and set(v) = name <- v member x.OffsetToData with get() = offset and set(v) = offset <- v member x.OffsetToDirectory with get() = offset &&& 0x7fffffff member x.DataIsDirectory with get() = (offset &&& 0x80000000) <> 0 static member Width = 8 member x.toBytes () = let buf = ByteBuffer.Create IMAGE_RESOURCE_DIRECTORY_ENTRY.Width buf.EmitInt32 name buf.EmitInt32 offset buf.Close() let bytesToIRDE (buffer:byte[]) (offset:int) = if (buffer.Length - offset) < IMAGE_RESOURCE_DIRECTORY_ENTRY.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_RESOURCE_DIRECTORY_ENTRY" IMAGE_RESOURCE_DIRECTORY_ENTRY( bytesToDWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3]), // Name bytesToDWord(buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7])) // Offset type IMAGE_RESOURCE_DATA_ENTRY(o:int32, s:int32, c:int32, r:int32) = let mutable offsetToData = o let mutable size = s let mutable codePage = c let mutable reserved = r member x.OffsetToData with get() = offsetToData and set(v) = offsetToData <- v member x.Size with get() = size and set(v) = size <- v member x.CodePage with get() = codePage and set(v) = codePage <- v member x.Reserved with get() = reserved and set(v) = reserved <- v static member Width = 16 member x.toBytes() = let buf = ByteBuffer.Create IMAGE_RESOURCE_DATA_ENTRY.Width buf.EmitInt32 offsetToData buf.EmitInt32 size buf.EmitInt32 codePage buf.EmitInt32 reserved let bytesToIRDataE (buffer:byte[]) (offset:int) = if (buffer.Length - offset) < IMAGE_RESOURCE_DATA_ENTRY.Width then invalidArg "buffer" "buffer too small to fit an IMAGE_RESOURCE_DATA_ENTRY" IMAGE_RESOURCE_DATA_ENTRY(bytesToDWord(buffer.[offset], buffer.[offset+1], buffer.[offset+2], buffer.[offset+3]), // OffsetToData bytesToDWord(buffer.[offset+4], buffer.[offset+5], buffer.[offset+6], buffer.[offset+7]), // Size bytesToDWord(buffer.[offset+8], buffer.[offset+9], buffer.[offset+10], buffer.[offset+11]), // CodePage bytesToDWord(buffer.[offset+12], buffer.[offset+13], buffer.[offset+14], buffer.[offset+15])) // Reserved type ResFormatHeader() = let mutable dwDataSize = 0 let mutable dwHeaderSize = 32 // The eventual supposed size of this structure in memory let mutable dwTypeID = 0xffff let mutable dwNameID = 0xffff let mutable dwDataVersion = 0 let mutable wMemFlags = 0s let mutable wLangID = 0s let mutable dwVersion = 0 let mutable dwCharacteristics = 0 member x.DataSize with get() = dwDataSize and set(v) = dwDataSize <- v member x.HeaderSize with get() = dwHeaderSize and set(v) = dwHeaderSize <- v member x.TypeID with get() = dwTypeID and set(v) = dwTypeID <- v member x.NameID with get() = dwNameID and set(v) = dwNameID <- v member x.DataVersion with get() = dwDataVersion and set(v) = dwDataVersion <- v member x.MemFlags with get() = wMemFlags and set(v) = wMemFlags <- v member x.LangID with get() = wLangID and set(v) = wLangID <- v member x.Version with get() = dwVersion and set(v) = dwVersion <- v member x.Characteristics with get() = dwCharacteristics and set(v) = dwCharacteristics <- v static member Width = 32 member x.toBytes() = let buf = ByteBuffer.Create ResFormatHeader.Width buf.EmitInt32 dwDataSize buf.EmitInt32 dwHeaderSize buf.EmitInt32 dwTypeID buf.EmitInt32 dwNameID buf.EmitInt32 dwDataVersion buf.EmitUInt16 ((uint16)wMemFlags) buf.EmitUInt16 ((uint16)wLangID) buf.EmitInt32 dwVersion buf.EmitInt32 dwCharacteristics buf.Close() type ResFormatNode(tid:int32, nid:int32, lid:int32, dataOffset:int32, pbLinkedResource:byte[]) = let mutable resHdr = ResFormatHeader() let mutable dataEntry = Unchecked.defaultof let mutable cType = 0 let mutable wzType = Unchecked.defaultof let mutable cName = 0 let mutable wzName = Unchecked.defaultof do if (tid &&& 0x80000000) <> 0 then // REVIEW: Are names and types mutually exclusive? The C++ code didn't seem to think so, but I can't find any documentation resHdr.TypeID <- 0 ; let mtid = tid &&& 0x7fffffff cType <- bytesToDWord(pbLinkedResource.[mtid], pbLinkedResource.[mtid+1], pbLinkedResource.[mtid+2], pbLinkedResource.[mtid+3]) ; wzType <- Bytes.zeroCreate ((cType + 1) * 2) ; Bytes.blit pbLinkedResource 4 wzType 0 (cType * 2) else resHdr.TypeID <- (0xffff ||| ((tid &&& 0xffff) <<< 16)) ; if (nid &&& 0x80000000) <> 0 then resHdr.NameID <- 0 ; let mnid = nid &&& 0x7fffffff cName <- bytesToDWord(pbLinkedResource.[mnid], pbLinkedResource.[mnid+1], pbLinkedResource.[mnid+2], pbLinkedResource.[mnid+3]) ; wzName <- Bytes.zeroCreate ((cName + 1) * 2) ; Bytes.blit pbLinkedResource 4 wzName 0 (cName * 2) else resHdr.NameID <- (0xffff ||| ((nid &&& 0xffff) <<< 16)) resHdr.LangID <- (int16)lid ; dataEntry <- bytesToIRDataE pbLinkedResource dataOffset ; resHdr.DataSize <- dataEntry.Size member x.ResHdr with get() = resHdr member x.DataEntry with get() = dataEntry member x.Type with get() = wzType member x.Name with get() = wzName member x.Save(ulLinkedResourceBaseRVA:int32, pbLinkedResource:byte[], pUnlinkedResource:byte[], offset:int) = // Dump them to pUnlinkedResource // For each resource write header and data let size = ref 0 let unlinkedResourceOffset = ref 0 //resHdr.HeaderSize <- 32 if Unchecked.defaultof <> wzType then resHdr.HeaderSize <- resHdr.HeaderSize + ((cType + 1) * 2) - 4 if Unchecked.defaultof <> wzName then resHdr.HeaderSize <- resHdr.HeaderSize + ((cName + 1) * 2) - 4 let SaveChunk(p : byte[], sz : int) = if Unchecked.defaultof <> pUnlinkedResource then Bytes.blit p 0 pUnlinkedResource (!unlinkedResourceOffset + offset) sz unlinkedResourceOffset := !unlinkedResourceOffset + sz ; size := !size + sz ; () // ---- Constant part of the header : DWORD, DWORD SaveChunk(dwToBytes resHdr.DataSize) SaveChunk(dwToBytes resHdr.HeaderSize) let mutable dwFiller = 0 if Unchecked.defaultof <> wzType then SaveChunk(wzType,((cType + 1) * 2)) dwFiller <- dwFiller + cType + 1 else SaveChunk(dwToBytes resHdr.TypeID) if Unchecked.defaultof <> wzName then SaveChunk(wzName, ((cName + 1) * 2)) dwFiller <- dwFiller + cName + 1 else SaveChunk(dwToBytes resHdr.NameID) let bNil = Bytes.zeroCreate 3 // Align remaining fields on DWORD (nb. poor bit twiddling code taken from ildasm's dres.cpp) if (dwFiller &&& 0x1) <> 0 then SaveChunk(bNil, 2) //---- Constant part of the header: DWORD,WORD,WORD,DWORD,DWORD SaveChunk(dwToBytes resHdr.DataVersion) SaveChunk(wToBytes resHdr.MemFlags) SaveChunk(wToBytes resHdr.LangID) SaveChunk(dwToBytes resHdr.Version) SaveChunk(dwToBytes resHdr.Characteristics) //---- Header done, now data // just copying to make the code a bit cleaner - can blit if this ends up being a liability let pbData = pbLinkedResource.[(dataEntry.OffsetToData - ulLinkedResourceBaseRVA) ..] SaveChunk(pbData, dataEntry.Size) dwFiller <- dataEntry.Size &&& 0x3 ; if dwFiller <> 0 then SaveChunk(bNil, 4 - dwFiller) !size let linkNativeResources (unlinkedResources:byte[] list) (ulLinkedResourceBaseRVA:int32) (fileType:PEFileType) (outputFilePath:string) = let nPEFileType = match fileType with X86 -> 0 | X64 -> 2 let mutable tempResFiles : string list = [] let mutable objBytes : byte[] = [||] let unlinkedResources = unlinkedResources |> List.filter (fun arr -> arr.Length > 0) if unlinkedResources.Length = 0 then // bail if there's nothing to link objBytes else // Part 1: Write unlinked resources to an object file for linking // check if the first dword is 0x0 let firstDWord = bytesToDWord(unlinkedResources.[0].[0], unlinkedResources.[0].[1], unlinkedResources.[0].[2], unlinkedResources.[0].[3]) if firstDWord = 0 then // build the command line invocation string for cvtres.exe let corSystemDir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() // We'll use the current dir and a random file name rather than System.IO.Path.GetTempFileName // to try and prevent the command line invocation string from being > MAX_PATH let outputFilePaths = if outputFilePath = "" then [ FileSystem.GetTempPathShim() ] else [ FileSystem.GetTempPathShim() ; (outputFilePath ^ "\\") ] // Get a unique random file let rec GetUniqueRandomFileName(path) = let tfn = path ^ System.IO.Path.GetRandomFileName() if FileSystem.SafeExists(tfn) then GetUniqueRandomFileName(path) else tfn let machine = if 2 = nPEFileType then "X64" else "X86" let cmdLineArgsPreamble = sprintf "/NOLOGO /READONLY /MACHINE:%s" machine let cvtres = corSystemDir^"cvtres.exe " let createCvtresArgs path = let tempObjFileName = GetUniqueRandomFileName(path) let mutable cmdLineArgs = sprintf "%s \"/Out:%s\"" cmdLineArgsPreamble tempObjFileName let mutable resFiles : string list = [] for _ulr in unlinkedResources do let tempResFileName = GetUniqueRandomFileName(path) resFiles <- tempResFileName :: resFiles ; cmdLineArgs <- cmdLineArgs ^ " \"" ^ tempResFileName ^ "\"" let trf = resFiles let cmd = cmdLineArgs cmd,tempObjFileName,trf let cmdLineArgs,tempObjFileName,tempResFileNames = let attempts = outputFilePaths |> List.map (fun path -> createCvtresArgs path) |> List.filter (fun ((argstring:string),(_t:string),(_f:string list)) -> (cvtres.Length + argstring.Length) < MAX_PATH) let invoc,tmp,files = match attempts with | [] -> createCvtresArgs ".\\" // hope for the best... | (i,t,f) :: _rest -> i,t,f // use the first one, since they're listed in order of precedence tempResFiles <- files (invoc,tmp,files) let cvtresInvocation = cvtres ^ cmdLineArgs try let mutable iFiles = 0 for ulr in unlinkedResources do // REVIEW: What can go wrong here? What happens when the various file calls fail // dump the unlinked resource bytes into the temp file System.IO.File.WriteAllBytes(tempResFileNames.[iFiles], ulr) ; iFiles <- iFiles + 1 // call cvtres.exe using the full cmd line string we've generated // check to see if the generated string is too long - if it is, fail with E_FAIL if cvtresInvocation.Length >= MAX_PATH then System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) // REVIEW: We really shouldn't be calling out to cvtres let mutable psi = System.Diagnostics.ProcessStartInfo(cvtres) psi.Arguments <- cmdLineArgs ; psi.CreateNoWindow <- true ; // REVIEW: For some reason, this still creates a window unless WindowStyle is set to hidden psi.WindowStyle <- System.Diagnostics.ProcessWindowStyle.Hidden ; let p = System.Diagnostics.Process.Start(psi) // Wait for the process to finish p.WaitForExit() check "Process.Start" p.ExitCode // TODO: really need to check against 0 // Conversion was successful, so read the object file objBytes <- FileSystem.ReadAllBytesShim(tempObjFileName) ; //Array.Copy(objBytes, pbUnlinkedResource, pbUnlinkedResource.Length) System.IO.File.Delete(tempObjFileName) finally // clean up the temp files List.iter (fun tempResFileName -> System.IO.File.Delete(tempResFileName)) tempResFiles // Part 2: Read the COFF file held in pbUnlinkedResource, spit it out into pResBuffer and apply the COFF fixups // pResBuffer will become the .rsrc section of the PE file if (objBytes = Unchecked.defaultof) then System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) let hMod = bytesToIFH objBytes 0 if hMod.SizeOfOptionalHeader <> 0s then System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) let rsrc01Name = 0x313024637273722eL // ".rsrc$01" let rsrc02Name = 0x323024637273722eL // ".rsrc$02" let nullHdr = Unchecked.defaultof let mutable rsrc01 = nullHdr let mutable rsrc02 = nullHdr for i = 0 to (int)hMod.NumberOfSections do let pSection = bytesToISH objBytes (IMAGE_FILE_HEADER.Width + (IMAGE_SECTION_HEADER.Width * i)) if pSection.Name = rsrc01Name then rsrc01 <- pSection else if pSection.Name = rsrc02Name then rsrc02 <- pSection if (nullHdr = rsrc01) || (nullHdr = rsrc02) then // One of the rsrc sections wasn't found System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) let size = rsrc01.SizeOfRawData + rsrc02.SizeOfRawData let pResBuffer = Bytes.zeroCreate size // Copy over the raw data Bytes.blit objBytes rsrc01.PointerToRawData pResBuffer 0 rsrc01.SizeOfRawData // map all the relocs in .rsrc$01 using the reloc and symbol tables in the COFF object let symbolTableHead = hMod.PointerToSymbolTable let IMAGE_SYM_CLASS_STATIC = 0x3uy let IMAGE_SYM_TYPE_NULL = 0x0s let GetSymbolEntry (buffer : byte[]) (idx : int) = bytesToIS buffer (symbolTableHead + (idx * IMAGE_SYMBOL.Width) ) for iReloc = 0 to (int)(rsrc01.NumberOfRelocations - 1s) do let pReloc = bytesToIR objBytes (rsrc01.PointerToRelocations + (iReloc * IMAGE_RELOCATION.Width)) let IdxSymbol = pReloc.SymbolTableIndex let pSymbolEntry = GetSymbolEntry objBytes IdxSymbol // Ensure the symbol entry is valid for a resource if ((pSymbolEntry.StorageClass <> IMAGE_SYM_CLASS_STATIC) || (pSymbolEntry.Type <> IMAGE_SYM_TYPE_NULL) || (pSymbolEntry.SectionNumber <> 3s)) then System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) // Ensure that RVA is a valid address inside rsrc02 if pSymbolEntry.Value >= rsrc02.SizeOfRawData then // pSymbolEntry.Value is too big System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) // store the value let vBuff, vSize = dwToBytes (ulLinkedResourceBaseRVA + rsrc01.SizeOfRawData + pSymbolEntry.Value) //Bytes.blit objBytes rsrc02.PointerToRawData pResBuffer pReloc.VirtualAddress rsrc02.SizeOfRawData Bytes.blit vBuff 0 pResBuffer pReloc.VirtualAddress vSize // Copy $02 (resource raw into pResBuffer Bytes.blit objBytes rsrc02.PointerToRawData pResBuffer rsrc01.SizeOfRawData rsrc02.SizeOfRawData // return the buffer pResBuffer let unlinkResource (ulLinkedResourceBaseRVA:int32) (pbLinkedResource:byte[]) = let mutable nResNodes = 0 let pirdType = bytesToIRD pbLinkedResource 0 let mutable pirdeType = Unchecked.defaultof let nEntries = pirdType.NumberOfNamedEntries + pirdType.NumberOfIdEntries // determine entry buffer size // TODO: coalesce these two loops for iEntry = 0 to ((int)nEntries - 1) do pirdeType <- bytesToIRDE pbLinkedResource (IMAGE_RESOURCE_DIRECTORY.Width + (iEntry * IMAGE_RESOURCE_DIRECTORY_ENTRY.Width)) ; if pirdeType.DataIsDirectory then let nameBase = pirdeType.OffsetToDirectory let pirdName = bytesToIRD pbLinkedResource nameBase let mutable pirdeName = Unchecked.defaultof let nEntries2 = pirdName.NumberOfNamedEntries + pirdName.NumberOfIdEntries for iEntry2 = 0 to ((int)nEntries2 - 1) do pirdeName <- bytesToIRDE pbLinkedResource (nameBase + (iEntry2 * IMAGE_RESOURCE_DIRECTORY_ENTRY.Width)) ; if pirdeName.DataIsDirectory then let langBase = pirdeName.OffsetToDirectory let pirdLang = bytesToIRD pbLinkedResource langBase let nEntries3 = pirdLang.NumberOfNamedEntries + pirdLang.NumberOfIdEntries nResNodes <- nResNodes + ((int)nEntries3) ; else nResNodes <- nResNodes + 1 ; else nResNodes <- nResNodes + 1 ; let pResNodes : ResFormatNode [] = Array.zeroCreate nResNodes nResNodes <- 0 ; // fill out the entry buffer for iEntry = 0 to ((int)nEntries - 1) do pirdeType <- bytesToIRDE pbLinkedResource (IMAGE_RESOURCE_DIRECTORY.Width + (iEntry * IMAGE_RESOURCE_DIRECTORY_ENTRY.Width)) ; let dwTypeID = pirdeType.Name // Need to skip VERSION and RT_MANIFEST resources // REVIEW: ideally we shouldn't allocate space for these, or rename properly so we don't get the naming conflict let skipResource = (0x10 = dwTypeID) || (0x18 = dwTypeID) if pirdeType.DataIsDirectory then let nameBase = pirdeType.OffsetToDirectory let pirdName = bytesToIRD pbLinkedResource nameBase let mutable pirdeName = Unchecked.defaultof let nEntries2 = pirdName.NumberOfNamedEntries + pirdName.NumberOfIdEntries for iEntry2 = 0 to ((int)nEntries2 - 1) do pirdeName <- bytesToIRDE pbLinkedResource (nameBase + (iEntry2 * IMAGE_RESOURCE_DIRECTORY_ENTRY.Width)) ; let dwNameID = pirdeName.Name if pirdeName.DataIsDirectory then let langBase = pirdeName.OffsetToDirectory let pirdLang = bytesToIRD pbLinkedResource langBase let mutable pirdeLang = Unchecked.defaultof let nEntries3 = pirdLang.NumberOfNamedEntries + pirdLang.NumberOfIdEntries for iEntry3 = 0 to ((int)nEntries3 - 1) do pirdeLang <- bytesToIRDE pbLinkedResource (langBase + (iEntry3 * IMAGE_RESOURCE_DIRECTORY_ENTRY.Width)) ; let dwLangID = pirdeLang.Name if pirdeLang.DataIsDirectory then // Resource hierarchy exceeds three levels System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(E_FAIL) else if (not skipResource) then let rfn = ResFormatNode(dwTypeID, dwNameID, dwLangID, pirdeLang.OffsetToData, pbLinkedResource) pResNodes.[nResNodes] <- rfn ; nResNodes <- nResNodes + 1 ; else if (not skipResource) then let rfn = ResFormatNode(dwTypeID, dwNameID, 0, pirdeName.OffsetToData, pbLinkedResource) pResNodes.[nResNodes] <- rfn ; nResNodes <- nResNodes + 1 ; else if (not skipResource) then let rfn = ResFormatNode(dwTypeID, 0, 0, pirdeType.OffsetToData, pbLinkedResource) // REVIEW: I believe these 0s are what's causing the duplicate res naming problems pResNodes.[nResNodes] <- rfn ; nResNodes <- nResNodes + 1 ; // Ok, all tree leaves are in ResFormatNode structs, and nResNodes ptrs are in pResNodes let mutable size = 0 if nResNodes <> 0 then size <- size + ResFormatHeader.Width ; // sizeof(ResFormatHeader) for i = 0 to (nResNodes - 1) do size <- size + pResNodes.[i].Save(ulLinkedResourceBaseRVA, pbLinkedResource, Unchecked.defaultof, 0) ; let pResBuffer = Bytes.zeroCreate size if nResNodes <> 0 then let mutable resBufferOffset = 0 // Write a dummy header let rfh = ResFormatHeader() let rfhBytes = rfh.toBytes() Bytes.blit rfhBytes 0 pResBuffer 0 ResFormatHeader.Width resBufferOffset <- resBufferOffset + ResFormatHeader.Width ; for i = 0 to (nResNodes - 1) do resBufferOffset <- resBufferOffset + pResNodes.[i].Save(ulLinkedResourceBaseRVA, pbLinkedResource, pResBuffer, resBufferOffset) ; pResBuffer // PDB Writing [] [] type IMetaDataDispenser = abstract DefineScope : unit -> unit // need this here to fill the first vtable slot abstract OpenScope : [] szScope : string * [] dwOpenFlags:Int32 * [] riid : System.Guid byref * [] punk:Object byref -> unit [] [] [] type IMetadataImport = abstract Placeholder : unit -> unit [] [] [] type IMetadataEmit = abstract Placeholder : unit -> unit [] [< Guid("B01FAFEB-C450-3A4D-BEEC-B4CEEC01E006") ; InterfaceType(ComInterfaceType.InterfaceIsIUnknown) >] [< ComVisible(false) >] type ISymUnmanagedDocumentWriter = abstract SetSource : sourceSize : int * source : byte[] -> unit abstract SetCheckSum : algorithmId : System.Guid * checkSumSize : int * checkSum : byte [] -> unit // Struct used to retrieve info on the debug output [] type ImageDebugDirectory = val Characteristics : int32 val TimeDateStamp : int32 val MajorVersion : int16 val MinorVersion : int16 val Type : int32 val SizeOfData : int32 val AddressOfRawData : int32 val PointerToRawData : int32 [] [] type ISymUnmanagedWriter2 = abstract DefineDocument : [] url : string * language : System.Guid byref * languageVendor : System.Guid byref * documentType : System.Guid byref * [] RetVal : ISymUnmanagedDocumentWriter byref -> unit abstract SetUserEntryPoint : entryMethod : uint32 -> unit abstract OpenMethod : meth : int -> unit abstract CloseMethod : unit -> unit abstract OpenScope : startOffset : int * pRetVal : int byref -> unit abstract CloseScope : endOffset : int -> unit abstract SetScopeRange : scopeID : int * startOffset : int * endOffset : int -> unit abstract DefineLocalVariable : [] varname : string * attributes : int * cSig : int * []signature : byte[] * addressKind : int * addr1 : int * addr2 : int * addr3 : int * startOffset : int * endOffset : int -> unit abstract DefineParameter : [] paramname : string * attributes : int * sequence : int * addressKind : int * addr1 : int * addr2 : int * addr3 : int -> unit abstract DefineField : parent : int * [] fieldname : string * attributes : int * cSig : int * []signature : byte[] * addressKind : int * addr1 : int * addr2 : int * addr3 : int -> unit abstract DefineGlobalVariable : [] globalvarname : string * attributes : int * cSig : int * []signature : byte[] * addressKind : int * addr1 : int * addr2 : int * addr3 : int -> unit abstract Close : unit -> unit abstract SetSymAttribute : parent : int * [] attname : string * cData : int * []data : byte[] -> unit abstract OpenNamespace : [] nsname : string -> unit abstract CloseNamespace : unit -> unit abstract UsingNamespace : [] fullName : string -> unit abstract SetMethodSourceRange : startDoc : ISymUnmanagedDocumentWriter * startLine : int * startColumn : int * endDoc : ISymUnmanagedDocumentWriter * endLine : int * endColumn : int -> unit abstract Initialize : emitter : nativeint * [] filename : string * stream : IStream * fullBuild : bool -> unit abstract GetDebugInfo : iDD : ImageDebugDirectory byref * cData : int * pcData : int byref * []data : byte[] -> unit abstract DefineSequencePoints : document : ISymUnmanagedDocumentWriter * spCount : int * []offsets : int [] * []lines : int [] * []columns : int [] * []endLines : int [] * []endColumns : int [] -> unit abstract RemapToken : oldToken : int * newToken : int -> unit abstract Initialize2 : emitter : nativeint * [] tempfilename : string * stream : IStream * fullBuild : bool * [] finalfilename : string -> unit abstract DefineConstant : [] constname : string * value : Object * cSig : int * []signature : byte[] -> unit abstract Abort : unit -> unit abstract DefineLocalVariable2 : [] localvarname2 : string * attributes : int * sigToken : int * addressKind : int * addr1 : int * addr2 : int * addr3 : int * startOffset : int * endOffset : int -> unit abstract DefineGlobalVariable2 : [] globalvarname2 : string * attributes : int * sigToken : int * addressKind : int * addr1 : int * addr2 : int * addr3 : int -> unit abstract DefineConstant2 : [] constantname2 : string * value : Object * sigToken : int -> unit abstract OpenMethod2 : method2 : int * isect : int * offset : int -> unit type PdbWriter = { symWriter : ISymUnmanagedWriter2 } type PdbDocumentWriter = { symDocWriter : ISymUnmanagedDocumentWriter } (* pointer to pDocumentWriter COM object *) type idd = { iddCharacteristics: int32; iddMajorVersion: int32; (* actually u16 in IMAGE_DEBUG_DIRECTORY *) iddMinorVersion: int32; (* acutally u16 in IMAGE_DEBUG_DIRECTORY *) iddType: int32; iddData: byte[];} let pdbInitialize (binaryName:string) (pdbName:string) = // collect necessary COM types let CorMetaDataDispenser = System.Type.GetTypeFromProgID("CLRMetaData.CorMetaDataDispenser") // get the importer pointer let mdd = System.Activator.CreateInstance(CorMetaDataDispenser) :?> IMetaDataDispenser let mutable IID_IMetaDataEmit = new Guid("BA3FEE4C-ECB9-4E41-83B7-183FA41CD859"); let mutable o = Object() mdd.OpenScope(binaryName, 0x1, &IID_IMetaDataEmit, &o) // 0x1 = ofWrite let emitterPtr = Marshal.GetComInterfaceForObject(o, typeof) let writer = try let writer = Activator.CreateInstance(System.Type.GetTypeFromProgID("CorSymWriter_SxS")) :?> ISymUnmanagedWriter2 writer.Initialize(emitterPtr, pdbName, Unchecked.defaultof, true) writer finally // Marshal.GetComInterfaceForObject adds an extra ref for emitterPtr if IntPtr.Zero <> emitterPtr then Marshal.Release(emitterPtr) |> ignore { symWriter = writer } [] do() [] let pdbClose (writer:PdbWriter) = writer.symWriter.Close() // CorSymWriter objects (ISymUnmanagedWriter) lock the files they're operating // on (both the pdb and the binary). The locks are released only when their ref // count reaches zero, but since we're dealing with RCWs, there's no telling when // that will be. The result is that sometimes, the pdb and object files will // still be locked well after the call to this function. // The SymReader class gets around this problem by implementing the ISymUnmanagedDispose // interface, which the SymWriter class, unfortunately, does not. // Right now, take the same approach as mdbg, and manually forcing a collection. let rc = Marshal.ReleaseComObject(writer.symWriter) for i = 0 to (rc - 1) do Marshal.ReleaseComObject(writer.symWriter) |> ignore System.GC.Collect(); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.GC.Collect(); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.GC.Collect(); System.GC.Collect(); System.GC.WaitForPendingFinalizers() let pdbSetUserEntryPoint (writer:PdbWriter) (entryMethodToken:int32) = writer.symWriter.SetUserEntryPoint((uint32)entryMethodToken) let pdbDefineDocument (writer:PdbWriter) (url:string) = //3F5162F8-07C6-11D3-9053-00C04FA302A1 //let mutable corSymLanguageTypeCSharp = System.Guid(0x3F5162F8u, 0x07C6us, 0x11D3us, 0x90uy, 0x53uy, 0x00uy, 0xC0uy, 0x4Fuy, 0xA3uy, 0x02uy, 0xA1uy) let mutable corSymLanguageTypeFSharp = System.Guid(0xAB4F38C9u, 0xB6E6us, 0x43baus, 0xBEuy, 0x3Buy, 0x58uy, 0x08uy, 0x0Buy, 0x2Cuy, 0xCCuy, 0xE3uy) let mutable corSymLanguageVendorMicrosoft = System.Guid(0x994b45c4u, 0xe6e9us, 0x11d2us, 0x90uy, 0x3fuy, 0x00uy, 0xc0uy, 0x4fuy, 0xa3uy, 0x02uy, 0xa1uy) let mutable corSymDocumentTypeText = System.Guid(0x5a869d0bu, 0x6611us, 0x11d3us, 0xbduy, 0x2auy, 0x0uy, 0x0uy, 0xf8uy, 0x8uy, 0x49uy, 0xbduy) let mutable docWriter = Unchecked.defaultof writer.symWriter.DefineDocument(url, &corSymLanguageTypeFSharp, &corSymLanguageVendorMicrosoft, &corSymDocumentTypeText, &docWriter) { symDocWriter = docWriter } let pdbOpenMethod (writer:PdbWriter) (methodToken:int32) = writer.symWriter.OpenMethod(methodToken) let pdbCloseMethod (writer:PdbWriter) = writer.symWriter.CloseMethod() let pdbOpenScope (writer:PdbWriter) (startOffset:int32) = let mutable retInt = 0 writer.symWriter.OpenScope(startOffset, &retInt) check "action" (retInt) let pdbCloseScope (writer:PdbWriter) (endOffset:int32) = writer.symWriter.CloseScope(endOffset) let pdbDefineLocalVariable (writer:PdbWriter) (name:string) (signature:byte[]) (addr1:int32) = writer.symWriter.DefineLocalVariable(name, 0, signature.Length, signature, (int)System.Diagnostics.SymbolStore.SymAddressKind.ILOffset, addr1, 0, 0, 0, 0) let pdbSetMethodRange (writer:PdbWriter) (docWriter1: PdbDocumentWriter) (startLine:int) (startCol:int) (docWriter2: PdbDocumentWriter) (endLine:int) (endCol:int) = writer.symWriter.SetMethodSourceRange(docWriter1.symDocWriter, startLine, startCol, docWriter2.symDocWriter, endLine, endCol) let pdbDefineSequencePoints (writer:PdbWriter) (docWriter: PdbDocumentWriter) (pts: (int * int * int * int * int) array) = let offsets = (Array.map (fun (x,_,_,_,_) -> x) pts) let lines = (Array.map (fun (_,x,_,_,_) -> x) pts) let columns = (Array.map (fun (_,_,x,_,_) -> x) pts) let endLines = (Array.map (fun (_,_,_,x,_) -> x) pts) let endColumns = (Array.map (fun (_,_,_,_,x) -> x) pts) writer.symWriter.DefineSequencePoints(docWriter.symDocWriter, pts.Length, offsets, lines, columns, endLines, endColumns) let pdbGetDebugInfo (writer: PdbWriter) = let mutable iDD = new ImageDebugDirectory() let mutable length = 0 writer.symWriter.GetDebugInfo(&iDD, 0, &length, null) let mutable data : byte [] = Array.zeroCreate length writer.symWriter.GetDebugInfo(&iDD, length, &length, data) { iddCharacteristics = iDD.Characteristics; iddMajorVersion = (int32)iDD.MajorVersion; iddMinorVersion = (int32)iDD.MinorVersion; iddType = iDD.Type; iddData = data} // PDB reading type PdbReader = { symReader: ISymbolReader } type PdbDocument = { symDocument: ISymbolDocument } type PdbMethod = { symMethod: ISymbolMethod } type PdbVariable = { symVariable: ISymbolVariable } type PdbMethodScope = { symScope: ISymbolScope } type PdbSequencePoint = { pdbSeqPointOffset: int; pdbSeqPointDocument: PdbDocument; pdbSeqPointLine: int; pdbSeqPointColumn: int; pdbSeqPointEndLine: int; pdbSeqPointEndColumn: int; } let pdbReadOpen (moduleName:string) (path:string) : PdbReader = if IL.runningOnMono then { symReader = null } else let CorMetaDataDispenser = System.Type.GetTypeFromProgID("CLRMetaData.CorMetaDataDispenser") let mutable IID_IMetaDataImport = new Guid("7DAC8207-D3AE-4c75-9B67-92801A497D44"); let mdd = System.Activator.CreateInstance(CorMetaDataDispenser) :?> IMetaDataDispenser let mutable o : Object = new Object() mdd.OpenScope(moduleName, 0, &IID_IMetaDataImport, &o) ; let importerPtr = Marshal.GetComInterfaceForObject(o, typeof) try #if CROSS_PLATFORM_COMPILER // ISymWrapper.dll is not available as a compile-time dependency for the cross-platform compiler, since it is Windows-only // Access it via reflection instead.System.Diagnostics.SymbolStore.SymBinder try let isym = System.Reflection.Assembly.Load("ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") let symbolBinder = isym.CreateInstance("System.Diagnostics.SymbolStore.SymBinder") let symbolBinderTy = symbolBinder.GetType() let reader = symbolBinderTy.InvokeMember("GetReader",BindingFlags.Public ||| BindingFlags.InvokeMethod ||| BindingFlags.Instance, null,symbolBinder,[| box importerPtr; box moduleName; box path |]) { symReader = reader :?> ISymbolReader } with _ -> { symReader = null } #else let symbolBinder = System.Diagnostics.SymbolStore.SymBinder() { symReader = symbolBinder.GetReader(importerPtr, moduleName, path) } #endif finally // Marshal.GetComInterfaceForObject adds an extra ref for importerPtr if IntPtr.Zero <> importerPtr then Marshal.Release(importerPtr) |> ignore // Note, the symbol reader's finalize method will clean up any unmanaged resources. // If file locks persist, we may want to manually invoke finalize let pdbReadClose (_reader:PdbReader) : unit = () let pdbReaderGetMethod (reader:PdbReader) (token:int32) : PdbMethod = { symMethod = reader.symReader.GetMethod(System.Diagnostics.SymbolStore.SymbolToken(token)) } let pdbReaderGetMethodFromDocumentPosition (reader:PdbReader) (document:PdbDocument) (line:int) (column:int) : PdbMethod = { symMethod = reader.symReader.GetMethodFromDocumentPosition(document.symDocument, line, column) } let pdbReaderGetDocuments (reader:PdbReader) : PdbDocument array = let arr = reader.symReader.GetDocuments() Array.map (fun i -> { symDocument=i }) arr let pdbReaderGetDocument (reader:PdbReader) (url:string) (language:byte[]) (languageVendor:byte[]) (documentType:byte[]) : PdbDocument = { symDocument = reader.symReader.GetDocument(url, System.Guid(language), System.Guid(languageVendor), System.Guid(documentType)) } let pdbDocumentGetURL (document:PdbDocument) : string = document.symDocument.URL let pdbDocumentGetType (document:PdbDocument) : byte[] (* guid *) = let guid = document.symDocument.DocumentType guid.ToByteArray() let pdbDocumentGetLanguage (document:PdbDocument) : byte[] (* guid *) = let guid = document.symDocument.Language guid.ToByteArray() let pdbDocumentGetLanguageVendor (document:PdbDocument) : byte[] = let guid = document.symDocument.LanguageVendor guid.ToByteArray() let pdbDocumentFindClosestLine (document:PdbDocument) (line:int) : int = document.symDocument.FindClosestLine(line) let pdbMethodGetToken (meth:PdbMethod) : int32 = let token = meth.symMethod.Token token.GetToken() let pdbMethodGetRootScope (meth:PdbMethod) : PdbMethodScope = { symScope = meth.symMethod.RootScope } let pdbMethodGetSequencePoints (meth:PdbMethod) : PdbSequencePoint array = let pSize = meth.symMethod.SequencePointCount let offsets = Array.zeroCreate pSize let docs = Array.zeroCreate pSize let lines = Array.zeroCreate pSize let cols = Array.zeroCreate pSize let endLines = Array.zeroCreate pSize let endColumns = Array.zeroCreate pSize meth.symMethod.GetSequencePoints(offsets, docs, lines, cols, endLines, endColumns) Array.init pSize (fun i -> { pdbSeqPointOffset = offsets.[i]; pdbSeqPointDocument = { symDocument = docs.[i] }; pdbSeqPointLine = lines.[i]; pdbSeqPointColumn = cols.[i]; pdbSeqPointEndLine = endLines.[i]; pdbSeqPointEndColumn = endColumns.[i]; }) let pdbScopeGetChildren (scope:PdbMethodScope) : PdbMethodScope array = let arr = scope.symScope.GetChildren() Array.map (fun i -> { symScope=i }) arr let pdbScopeGetOffsets (scope:PdbMethodScope) : int * int = (scope.symScope.StartOffset, scope.symScope.EndOffset) let pdbScopeGetLocals (scope:PdbMethodScope) : PdbVariable array = let arr = scope.symScope.GetLocals() Array.map (fun i -> { symVariable=i }) arr let pdbVariableGetName (variable:PdbVariable) : string = variable.symVariable.Name let pdbVariableGetSignature (variable:PdbVariable) : byte[] = variable.symVariable.GetSignature() // the tuple is (AddressKind, AddressField1) let pdbVariableGetAddressAttributes (variable:PdbVariable) : (int32 * int32) = (int32 variable.symVariable.AddressKind,variable.symVariable.AddressField1) // Key signing type keyContainerName = string type keyPair = byte[] type pubkey = byte[] // new mscoree functionality // This type represents methods that we don't currently need, so I'm leaving unimplemented type UnusedCOMMethod = unit -> unit [] [] type ICLRMetaHost = [] abstract GetRuntime : [] version : string * [] interfaceId : System.Guid -> [] System.Object // Note, methods that we don't need are stubbed out for now... abstract GetVersionFromFile : UnusedCOMMethod abstract EnumerateInstalledRuntimes : UnusedCOMMethod abstract EnumerateLoadedRuntimes : UnusedCOMMethod abstract Reserved01 : UnusedCOMMethod // Note, We don't currently support ComConversionLoss [] [] type ICLRStrongName = // Note, methods that we don't need are stubbed out for now... abstract GetHashFromAssemblyFile : UnusedCOMMethod abstract GetHashFromAssemblyFileW : UnusedCOMMethod abstract GetHashFromBlob : UnusedCOMMethod abstract GetHashFromFile : UnusedCOMMethod abstract GetHashFromFileW : UnusedCOMMethod abstract GetHashFromHandle : UnusedCOMMethod abstract StrongNameCompareAssemblies : UnusedCOMMethod [] abstract StrongNameFreeBuffer : [] pbMemory : nativeint -> unit abstract StrongNameGetBlob : UnusedCOMMethod abstract StrongNameGetBlobFromImage : UnusedCOMMethod [] abstract StrongNameGetPublicKey : [] pwzKeyContainer : string * [] pbKeyBlob : byte[] * [] cbKeyBlob : uint32 * [] ppbPublicKeyBlob : nativeint byref * [] pcbPublicKeyBlob : uint32 byref -> unit abstract StrongNameHashSize : UnusedCOMMethod [] abstract StrongNameKeyDelete : [] pwzKeyContainer : string -> unit abstract StrongNameKeyGen : UnusedCOMMethod abstract StrongNameKeyGenEx : UnusedCOMMethod abstract StrongNameKeyInstall : UnusedCOMMethod [] abstract StrongNameSignatureGeneration : [] pwzFilePath : string * [] pwzKeyContainer : string * [] pbKeyBlob : byte [] * [] cbKeyBlob : uint32 * [] ppbSignatureBlob : nativeint * [] pcbSignatureBlob : uint32 byref -> unit abstract StrongNameSignatureGenerationEx : UnusedCOMMethod [] abstract StrongNameSignatureSize : [] pbPublicKeyBlob : byte[] * [] cbPublicKeyBlob : uint32 * [] pcbSize : uint32 byref -> unit abstract StrongNameSignatureVerification : UnusedCOMMethod [] abstract StrongNameSignatureVerificationEx : [] pwzFilePath : string * [] fForceVerification : bool * [] pfWasVerified : bool byref -> [] bool abstract StrongNameSignatureVerificationFromImage : UnusedCOMMethod abstract StrongNameTokenFromAssembly : UnusedCOMMethod abstract StrongNameTokenFromAssemblyEx : UnusedCOMMethod abstract StrongNameTokenFromPublicKey : UnusedCOMMethod [] [] type ICLRRuntimeInfo = // REVIEW: Methods that we don't need will be stubbed out for now... abstract GetVersionString : unit -> unit abstract GetRuntimeDirectory : unit -> unit abstract IsLoaded : unit -> unit abstract LoadErrorString : unit -> unit abstract LoadLibrary : unit -> unit abstract GetProcAddress : unit -> unit [] abstract GetInterface : [] coClassId : System.Guid * [] interfaceId : System.Guid -> []System.Object [] [] let CreateInterface ( ([] _clsidguid : System.Guid), ([] _guid : System.Guid), ([] _metaHost : ICLRMetaHost byref)) : unit = failwith "CreateInterface" let signerOpenPublicKeyFile filePath = FileSystem.ReadAllBytesShim(filePath) let signerOpenKeyPairFile filePath = FileSystem.ReadAllBytesShim(filePath) let mutable iclrsn : ICLRStrongName option = None let getICLRStrongName () = match iclrsn with | None -> let CLSID_CLRStrongName = System.Guid(0xB79B0ACDu, 0xF5CDus, 0x409bus, 0xB5uy, 0xA5uy, 0xA1uy, 0x62uy, 0x44uy, 0x61uy, 0x0Buy, 0x92uy) let IID_ICLRStrongName = System.Guid(0x9FD93CCFu, 0x3280us, 0x4391us, 0xB3uy, 0xA9uy, 0x96uy, 0xE1uy, 0xCDuy, 0xE7uy, 0x7Cuy, 0x8Duy) let CLSID_CLRMetaHost = System.Guid(0x9280188Du, 0x0E8Eus, 0x4867us, 0xB3uy, 0x0Cuy, 0x7Fuy, 0xA8uy, 0x38uy, 0x84uy, 0xE8uy, 0xDEuy) let IID_ICLRMetaHost = System.Guid(0xD332DB9Eu, 0xB9B3us, 0x4125us, 0x82uy, 0x07uy, 0xA1uy, 0x48uy, 0x84uy, 0xF5uy, 0x32uy, 0x16uy) let clrRuntimeInfoGuid = System.Guid(0xBD39D1D2u, 0xBA2Fus, 0x486aus, 0x89uy, 0xB0uy, 0xB4uy, 0xB0uy, 0xCBuy, 0x46uy, 0x68uy, 0x91uy) let runtimeVer = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() let mutable metaHost = Unchecked.defaultof CreateInterface(CLSID_CLRMetaHost, IID_ICLRMetaHost, &metaHost) if Unchecked.defaultof = metaHost then failwith "Unable to obtain ICLRMetaHost object - check freshness of mscoree.dll" let runtimeInfo = metaHost.GetRuntime(runtimeVer, clrRuntimeInfoGuid) :?> ICLRRuntimeInfo let sn = runtimeInfo.GetInterface(CLSID_CLRStrongName, IID_ICLRStrongName) :?> ICLRStrongName if Unchecked.defaultof = sn then failwith "Unable to obtain ICLRStrongName object" iclrsn <- Some(sn) sn | Some(sn) -> sn let signerGetPublicKeyForKeyPair (kp:byte[]) = if IL.runningOnMono then let snt = System.Type.GetType("Mono.Security.StrongName") let sn = System.Activator.CreateInstance(snt, [| box kp |]) snt.InvokeMember("PublicKey", (BindingFlags.GetProperty ||| BindingFlags.Instance ||| BindingFlags.Public), null, sn, [| |], Globalization.CultureInfo.InvariantCulture) :?> byte[] else let mutable pSize = 0u let mutable pBuffer : nativeint = (nativeint)0 let iclrSN = getICLRStrongName() iclrSN.StrongNameGetPublicKey(Unchecked.defaultof, kp, (uint32) kp.Length, &pBuffer, &pSize) |> ignore let mutable keybuffer : byte [] = Bytes.zeroCreate ((int)pSize) // Copy the marshalled data over - we'll have to free this ourselves Marshal.Copy(pBuffer, keybuffer, 0, (int)pSize) iclrSN.StrongNameFreeBuffer(pBuffer) |> ignore keybuffer let signerGetPublicKeyForKeyContainer kc = if IL.runningOnMono then failwith "the use of key containers for strong name signing is not yet supported when running on Mono" else let mutable pSize = 0u let mutable pBuffer : nativeint = (nativeint)0 let iclrSN = getICLRStrongName() iclrSN.StrongNameGetPublicKey(kc, Unchecked.defaultof, 0u, &pBuffer, &pSize) |> ignore let mutable keybuffer : byte [] = Bytes.zeroCreate ((int)pSize) // Copy the marshalled data over - we'll have to free this ourselves later Marshal.Copy(pBuffer, keybuffer, 0, (int)pSize) iclrSN.StrongNameFreeBuffer(pBuffer) |> ignore keybuffer let signerCloseKeyContainer kc = if IL.runningOnMono then failwith "the use of key containers for strong name signing is not yet supported when running on Mono" else let iclrSN = getICLRStrongName() iclrSN.StrongNameKeyDelete(kc) |> ignore let signerSignatureSize (pk:byte[]) = if IL.runningOnMono then if pk.Length > 32 then pk.Length - 32 else 128 else let mutable pSize = 0u let iclrSN = getICLRStrongName() iclrSN.StrongNameSignatureSize(pk, uint32 pk.Length, &pSize) |> ignore int pSize let signerSignFileWithKeyPair fileName (kp:byte[]) = if IL.runningOnMono then let snt = System.Type.GetType("Mono.Security.StrongName") let sn = System.Activator.CreateInstance(snt, [| box kp |]) let conv (x:obj) = if (unbox x : bool) then 0 else -1 snt.InvokeMember("Sign", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, sn, [| box fileName |], Globalization.CultureInfo.InvariantCulture) |> conv |> check "Sign" snt.InvokeMember("Verify", (BindingFlags.InvokeMethod ||| BindingFlags.Instance ||| BindingFlags.Public), null, sn, [| box fileName |], Globalization.CultureInfo.InvariantCulture) |> conv |> check "Verify" else let mutable pcb = 0u let mutable ppb = (nativeint)0 let mutable ok = false let iclrSN = getICLRStrongName() iclrSN.StrongNameSignatureGeneration(fileName, Unchecked.defaultof, kp, uint32 kp.Length, ppb, &pcb) |> ignore iclrSN.StrongNameSignatureVerificationEx(fileName, true, &ok) |> ignore let signerSignFileWithKeyContainer fileName kcName = if IL.runningOnMono then failwith "the use of key containers for strong name signing is not yet supported when running on Mono" else let mutable pcb = 0u let mutable ppb = (nativeint)0 let mutable ok = false let iclrSN = getICLRStrongName() iclrSN.StrongNameSignatureGeneration(fileName, kcName, Unchecked.defaultof, 0u, ppb, &pcb) |> ignore iclrSN.StrongNameSignatureVerificationEx(fileName, true, &ok) |> ignore #endif fsharp-3.0.34/src/absil/illex.fsl0000775000175000017500000001504412260314606015603 0ustar chrischris { //---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiLexer open Internal.Utilities open Internal.Utilities.Collections open Internal.Utilities.Text open Internal.Utilities.Text.Lexing open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library open Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser open Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants let lexeme (lexbuf : LexBuffer) = new System.String(lexbuf.Lexeme) let unexpectedChar lexbuf = dprintf "Unexpected character '%s'" (lexeme lexbuf); raise Parsing.RecoverableParseError ;; // -------------------------------------------------------------------- // Keywords // -------------------------------------------------------------------- let keywords = lazy [ "void",VOID; "bool",BOOL; "bytearray",BYTEARRAY; "char",CHAR; "class",CLASS; "default",DEFAULT; "explicit",EXPLICIT; "float32",FLOAT32; "float64",FLOAT64; "instance",INSTANCE; "int",INT; "int16",INT16; "int32",INT32; "int64",INT64; "int8",INT8; "method",METHOD; "native",NATIVE; "object", OBJECT; "string",STRING; "uint",UINT; "uint16",UINT16; "uint32",UINT32; "uint64",UINT64; "uint8",UINT8; "unmanaged",UNMANAGED; "unsigned",UNSIGNED; "value",VALUE; "valuetype",VALUETYPE; "vararg",VARARG ] // -------------------------------------------------------------------- // Instructions // -------------------------------------------------------------------- let kwdInstrTable = lazy (let t = HashMultiMap(1000, HashIdentity.Structural) List.iter t.Add (Lazy.force keywords); let addTable f l = List.iter (fun (x,i) -> t.Add (String.concat "." x,f i)) (Lazy.force l) addTable (fun i -> INSTR_NONE i) NoArgInstrs; addTable (fun i -> INSTR_I i) Int32Instrs; addTable (fun i -> INSTR_I32_I32 i) Int32Int32Instrs; addTable (fun i -> INSTR_I8 i) Int64Instrs; addTable (fun i -> INSTR_R i) DoubleInstrs; addTable (fun i -> INSTR_METHOD i) MethodSpecInstrs; addTable (fun i -> INSTR_TYPE i) TypeInstrs; addTable (fun i -> INSTR_INT_TYPE i) IntTypeInstrs; addTable (fun i -> INSTR_VALUETYPE i) ValueTypeInstrs; addTable (fun i -> INSTR_STRING i) StringInstrs; addTable (fun i -> INSTR_TOK i) TokenInstrs; t) let kwdOrInstr s = (Lazy.force kwdInstrTable).[s] (* words *) let eval = function | '0' -> 0 | '1' -> 1 | '2' -> 2 | '3' -> 3 | '4' -> 4 | '5' -> 5 | '6' -> 6 | '7' -> 7 | '8' -> 8 | '9' -> 9 | 'A' -> 10 | 'B' -> 11 | 'C' -> 12 | 'D' -> 13 | 'E' -> 14 | 'F' -> 15 | 'a' -> 10 | 'b' -> 11 | 'c' -> 12 | 'd' -> 13 | 'e' -> 14 | 'f' -> 15 | _ -> failwith "bad hexbyte" let kwdOrInstrOrId s = if (Lazy.force kwdInstrTable).ContainsKey s then kwdOrInstr s else VAL_ID s } // -------------------------------------------------------------------- // The Rules // -------------------------------------------------------------------- rule token = parse | "," { COMMA } | "." { DOT } | "*" { STAR } | "!" { BANG } | "&" { AMP } | "(" { LPAREN } | ")" { RPAREN } | "[" { LBRACK } | "]" { RBRACK } | "/" { SLASH } | "<" { LESS } | ">" { GREATER } | "..." { ELIPSES } | "::" { DCOLON } | "+" { PLUS } | (['0'-'9']) | (['0'-'9']['0'-'9']['0'-'9']+) { VAL_INT64(int64(lexeme lexbuf)) } (* We need to be able to parse all of *) (* ldc.r8 0. *) (* float64(-657435.) *) (* and int32[0...,0...] *) (* The problem is telling an integer-followed-by-ellipses from a floating-point-nubmer-followed-by-dots *) | ((['0'-'9']) | (['0'-'9']['0'-'9']['0'-'9']+)) "..." { let b = lexeme lexbuf in VAL_INT32_ELIPSES(int32(String.sub b 0 (String.length b - 3))) } | ['0'-'9' 'A'-'F' 'a'-'f' ] ['0'-'9' 'A'-'F' 'a'-'f' ] { let c1 = String.get (lexeme lexbuf) 0 in let c2 = String.get (lexeme lexbuf) 1 in if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then VAL_INT64(int64 (10*eval c1 + eval c2) ) else VAL_ID(lexeme lexbuf) } | '0' 'x' ['0'-'9' 'a'-'f' 'A'-'F']+ { VAL_INT64(int64(lexeme lexbuf)) } | "FFFFFF" ['0'-'9' 'A'-'F' 'a'-'f' ] ['0'-'9' 'A'-'F' 'a'-'f' ] { let c1 = (lexeme lexbuf).[6] in let c2 = (lexeme lexbuf).[7] in if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then VAL_INT64(int64 (10*eval c1 + eval c2)) else VAL_ID(lexeme lexbuf) } | '-' ['0'-'9']+ { VAL_INT64(int64(lexeme lexbuf)) } | ('+'|'-')? ['0'-'9']+ ('.' ['0' - '9']*)? (('E'|'e') ('-'|'+')? ['0' - '9']+)? { VAL_FLOAT64( (float (lexeme lexbuf)) ) } | ("conv"|"cgt"|"clt"|"ceq"|"add"|"sub"|"div"|"rem"|"mul"|"beq"|"bne"|"cne"|"ldarga"|"ldloca"|"ldind"|"newarr"|"shr"|"starg"|"stind"|"ldelem"|"ldelema"|"ldlen"|"stelem"|"unbox"|"box"|"initobj") '.' ['a'-'z' 'A'-'Z' '0'-'9' '.']+ { let s = (lexeme lexbuf) in kwdOrInstr s } | [ '`' '\128'-'\255' '@' '?' '$' 'a'-'z' 'A'-'Z' '_'] [ '`' '\128'-'\255' '$' 'a'-'z' 'A'-'Z' '0'-'9' '-' '_' '@' '$' ] * { kwdOrInstrOrId (lexeme lexbuf) } | [ '`' '\128'-'\255' '@' '?' '$' 'a'-'z' 'A'-'Z' '_'] [ '`' '\128'-'\255' '$' 'a'-'z' 'A'-'Z' '0'-'9' '-' '_' '@' '$' ]+ ('.' [ '`' '\128'-'\255' '@' '?' '$' 'a'-'z' 'A'-'Z' '_'] [ '`' '\128'-'\255' '$' 'a'-'z' 'A'-'Z' '0'-'9' '-' '_' '@' '$' ] +)+ { VAL_DOTTEDNAME(lexeme lexbuf) } | [' ' '\t' '\r' '\n'] { token lexbuf } | _ { unexpectedChar lexbuf } | eof { EOF } fsharp-3.0.34/src/absil/ildiag.fs0000775000175000017500000000311412260314606015536 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Configurable AppDomain-global diagnostics channel for the Abstract IL library /// /// REVIEW: review if we should just switch to System.Diagnostics module internal Microsoft.FSharp.Compiler.AbstractIL.Diagnostics open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal let diagnosticsLog = ref (Some stdout) let dflushn () = match !diagnosticsLog with None -> () | Some d -> d.WriteLine(); d.Flush() let dflush () = match !diagnosticsLog with None -> () | Some d -> d.Flush() let dprintn (s:string) = match !diagnosticsLog with None -> () | Some d -> d.Write s; d.Write "\n"; dflush() let dprintf (fmt: Format<_,_,_,_>) = Printf.kfprintf dflush (match !diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt let dprintfn (fmt: Format<_,_,_,_>) = Printf.kfprintf dflushn (match !diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt let setDiagnosticsChannel s = diagnosticsLog := s fsharp-3.0.34/src/absil/ilascii.fsi0000775000175000017500000000514012260314606016074 0ustar chrischris//---------------------------------------------------------------------------- // // Copyright (c) 2002-2012 Microsoft Corporation. // // This source code is subject to terms and conditions of the Apache License, Version 2.0. A // copy of the license can be found in the License.html file at the root of this distribution. // By using this source code in any fashion, you are agreeing to be bound // by the terms of the Apache License, Version 2.0. // // You must not remove this notice, or any other, from this software. //---------------------------------------------------------------------------- /// Various constants and utilities used when parsing the ILASM format for IL module internal Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstants open Internal.Utilities open Microsoft.FSharp.Compiler.AbstractIL open Microsoft.FSharp.Compiler.AbstractIL.Internal open Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types open Microsoft.FSharp.Compiler.AbstractIL.IL // -------------------------------------------------------------------- // IL Parser state - must be initialized before parsing a module // -------------------------------------------------------------------- val parseILGlobals: ILGlobals ref // -------------------------------------------------------------------- // IL Lexer and pretty-printer tables // -------------------------------------------------------------------- type NoArgInstr = unit -> ILInstr type Int32Instr = int32 -> ILInstr type Int32Int32Instr = int32 * int32 -> ILInstr type Int64Instr = int64 -> ILInstr type DoubleInstr = ILConst -> ILInstr type MethodSpecInstr = ILMethodSpec * ILVarArgs -> ILInstr type TypeInstr = ILType -> ILInstr type IntTypeInstr = int * ILType -> ILInstr type ValueTypeInstr = ILType -> ILInstr type StringInstr = string -> ILInstr type TokenInstr = ILToken -> ILInstr type SwitchInstr = ILCodeLabel list * ILCodeLabel -> ILInstr type InstrTable<'T> = (string list * 'T) list type LazyInstrTable<'T> = Lazy> val NoArgInstrs: LazyInstrTable val Int64Instrs: LazyInstrTable val Int32Instrs: LazyInstrTable val Int32Int32Instrs: LazyInstrTable val DoubleInstrs: LazyInstrTable val MethodSpecInstrs: LazyInstrTable val StringInstrs: LazyInstrTable val TokenInstrs: LazyInstrTable val TypeInstrs: LazyInstrTable val IntTypeInstrs: LazyInstrTable val ValueTypeInstrs: LazyInstrTable #if DEBUG val wordsOfNoArgInstr : (ILInstr -> string list) val isNoArgInstr : (ILInstr -> bool) #endif fsharp-3.0.34/lib/0000775000175000017500000000000012260314606012636 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/0000775000175000017500000000000012260314606014653 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/4.0/0000775000175000017500000000000012260314606015154 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/4.0/FSharp.Core.sigdata0000664000175000017500000166523712260314606020610 0ustar chrischris FSharp.Coremscorlib System.CoreSystem.NumericsSystem'‹†uŽâ FSharp.Core|/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/../../assemblyinfo/assemblyinfo.FSharp.Core.dll.fsSystemT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/math/z.fsiNumerics MicrosoftFSharpTexta/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/../../utils/sformat.fsiStructuredPrintfImpl get_Default`/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/../../utils/sformat.fsCoreunit FormatOptionsLayout3T:Microsoft.FSharp.Text.StructuredPrintfImpl.Layout LayoutOps6T:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOpsemptyL=P:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.emptyLisEmptyLboollayoutrM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.isEmptyL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)objLobjvalueJM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.objL(System.Object)wordLstringtextKM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.wordL(System.String)sepLJM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.sepL(System.String)rightLLM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.rightL(System.String)leftLKM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.leftL(System.String) op_HatHatlayout1layout2€¥M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_HatHat(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout) op_PlusPlus€§M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_PlusPlus(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout) op_MinusMinus€©M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_MinusMinus(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)op_MinusMinusMinus€®M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_MinusMinusMinus(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)op_AtAt€£M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_AtAt(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout) op_AtAtMinus€¨M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_AtAtMinus(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)op_AtAtMinusMinus€­M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.op_AtAtMinusMinus(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout) commaListL Collectionslist`1layouts€M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.commaListL(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout}) spaceListL€M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.spaceListL(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout}) semiListL€œM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.semiListL(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout})sepListL€ÍM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.sepListL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout})bracketLrM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.bracketL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)squareBracketLxM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.squareBracketL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)braceLpM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.braceL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)tupleL€™M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.tupleL(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout})aboveL€¢M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.aboveL(Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout) aboveListL€M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.aboveListL(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Text.StructuredPrintfImpl.Layout})optionLToption`1selector€ÂM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.optionL``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout},Microsoft.FSharp.Core.FSharpOption{``0})listL€ÅM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.listL``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout},Microsoft.FSharp.Collections.FSharpList{``0})tagAttrLmaps€ÓM:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.tagAttrL(System.String,Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}},Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)unfoldLStateintfolderstatecount M:Microsoft.FSharp.Text.StructuredPrintfImpl.LayoutOps.unfoldL``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout},Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpOption{System.Tuple{``0,``1}}},``1,System.Int32)NoEqualityAttribute.ctorNoComparisonAttributeFloatingPointFormatAttributeProcessorIFormatProviderFormatProvider Reflection BindingFlags PrintWidth PrintDepth PrintLength PrintSizeShowPropertiesShowIEnumerable:T:Microsoft.FSharp.Text.StructuredPrintfImpl.FormatOptionsDisplay4T:Microsoft.FSharp.Text.StructuredPrintfImpl.Display any_to_stringJM:Microsoft.FSharp.Text.StructuredPrintfImpl.Display.any_to_string``1(``0) output_anyIO TextWriterwriter\M:Microsoft.FSharp.Text.StructuredPrintfImpl.Display.output_any``1(System.IO.TextWriter,``0)anyToStringForPrintfoptions bindingFlagslayout_to_string€±M:Microsoft.FSharp.Text.StructuredPrintfImpl.Display.layout_to_string(Microsoft.FSharp.Text.StructuredPrintfImpl.FormatOptions,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout)U/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/reflect.fsiget_NameT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/reflect.fs UnionCaseInfo0P:Microsoft.FSharp.Reflection.UnionCaseInfo.Nameget_DeclaringTypeType9P:Microsoft.FSharp.Reflection.UnionCaseInfo.DeclaringTypeGetCustomAttributes[]`1?M:Microsoft.FSharp.Reflection.UnionCaseInfo.GetCustomAttributes attributeTypeLM:Microsoft.FSharp.Reflection.UnionCaseInfo.GetCustomAttributes(System.Type)GetCustomAttributesDataGenericIList`1CustomAttributeDataCM:Microsoft.FSharp.Reflection.UnionCaseInfo.GetCustomAttributesData GetFields PropertyInfo5M:Microsoft.FSharp.Reflection.UnionCaseInfo.GetFieldsget_Tag/P:Microsoft.FSharp.Reflection.UnionCaseInfo.Tag MakeRecord FSharpValue recordTypevaluesOptionalArgumentAttribute€”M:Microsoft.FSharp.Reflection.FSharpValue.MakeRecord(System.Type,System.Object[],Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})GetRecordFieldrecordinfofM:Microsoft.FSharp.Reflection.FSharpValue.GetRecordField(System.Object,System.Reflection.PropertyInfo)GetRecordFields€‹M:Microsoft.FSharp.Reflection.FSharpValue.GetRecordFields(System.Object,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeRecordFieldReadereM:Microsoft.FSharp.Reflection.FSharpValue.PreComputeRecordFieldReader(System.Reflection.PropertyInfo)PreComputeRecordReader€M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeRecordReader(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeRecordConstructor€•M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeRecordConstructor(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeRecordConstructorInfoConstructorInfo€™M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeRecordConstructorInfo(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags}) MakeUnion unionCaseargs€±M:Microsoft.FSharp.Reflection.FSharpValue.MakeUnion(Microsoft.FSharp.Reflection.UnionCaseInfo,System.Object[],Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})GetUnionFields unionType€–M:Microsoft.FSharp.Reflection.FSharpValue.GetUnionFields(System.Object,System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeUnionTagReader€’M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionTagReader(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeUnionTagMemberInfo MemberInfo€–M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionTagMemberInfo(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeUnionReader€­M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionReader(Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeUnionConstructor€²M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionConstructor(Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})PreComputeUnionConstructorInfo MethodInfo€¶M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionConstructorInfo(Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags}) MakeTuple tupleElements tupleTypePM:Microsoft.FSharp.Reflection.FSharpValue.MakeTuple(System.Object[],System.Type) GetTupleFieldtupleindexSM:Microsoft.FSharp.Reflection.FSharpValue.GetTupleField(System.Object,System.Int32)GetTupleFieldsGM:Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields(System.Object)PreComputeTupleReaderLM:Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleReader(System.Type)PreComputeTuplePropertyInfo_M:Microsoft.FSharp.Reflection.FSharpValue.PreComputeTuplePropertyInfo(System.Type,System.Int32)PreComputeTupleConstructorQM:Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleConstructor(System.Type)PreComputeTupleConstructorInfoUM:Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleConstructorInfo(System.Type) MakeFunction functionTypeimplementation€M:Microsoft.FSharp.Reflection.FSharpValue.MakeFunction(System.Type,Microsoft.FSharp.Core.FSharpFunc{System.Object,System.Object})GetExceptionFieldsexn€ŽM:Microsoft.FSharp.Reflection.FSharpValue.GetExceptionFields(System.Object,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags}) FSharpType€ˆM:Microsoft.FSharp.Reflection.FSharpType.GetRecordFields(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags}) GetUnionCases€†M:Microsoft.FSharp.Reflection.FSharpType.GetUnionCases(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})MakeFunctionTypedomainrangeRM:Microsoft.FSharp.Reflection.FSharpType.MakeFunctionType(System.Type,System.Type) MakeTupleTypetypesEM:Microsoft.FSharp.Reflection.FSharpType.MakeTupleType(System.Type[])IsTupletyp=M:Microsoft.FSharp.Reflection.FSharpType.IsTuple(System.Type) IsFunction@M:Microsoft.FSharp.Reflection.FSharpType.IsFunction(System.Type)IsModule>M:Microsoft.FSharp.Reflection.FSharpType.IsModule(System.Type)IsRecord€M:Microsoft.FSharp.Reflection.FSharpType.IsRecord(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})IsUnion€€M:Microsoft.FSharp.Reflection.FSharpType.IsUnion(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})GetTupleElementsFM:Microsoft.FSharp.Reflection.FSharpType.GetTupleElements(System.Type)GetFunctionElementsIM:Microsoft.FSharp.Reflection.FSharpType.GetFunctionElements(System.Type) exceptionType€‹M:Microsoft.FSharp.Reflection.FSharpType.GetExceptionFields(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})IsExceptionRepresentation€’M:Microsoft.FSharp.Reflection.FSharpType.IsExceptionRepresentation(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})SealedAttribute+T:Microsoft.FSharp.Reflection.UnionCaseInfoAbstractClassAttribute)T:Microsoft.FSharp.Reflection.FSharpValue(T:Microsoft.FSharp.Reflection.FSharpType QuotationsX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/quotations.fsiget_TypeW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/quotations.fsVar,P:Microsoft.FSharp.Quotations.FSharpVar.Type,P:Microsoft.FSharp.Quotations.FSharpVar.Name get_IsMutable1P:Microsoft.FSharp.Quotations.FSharpVar.IsMutablename isMutable{M:Microsoft.FSharp.Quotations.FSharpVar.#ctor(System.String,System.Type,Microsoft.FSharp.Core.FSharpOption{System.Boolean})GlobalIM:Microsoft.FSharp.Quotations.FSharpVar.Global(System.String,System.Type) SubstituteExpr substitution€ÇM:Microsoft.FSharp.Quotations.FSharpExpr.Substitute(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Quotations.FSharpExpr}}) GetFreeVarsseq`14M:Microsoft.FSharp.Quotations.FSharpExpr.GetFreeVars-P:Microsoft.FSharp.Quotations.FSharpExpr.Typeget_CustomAttributes9P:Microsoft.FSharp.Quotations.FSharpExpr.CustomAttributesEquals AddressOftargetZM:Microsoft.FSharp.Quotations.FSharpExpr.AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) AddressSet€‚M:Microsoft.FSharp.Quotations.FSharpExpr.AddressSet(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) Application functionExprargument€ƒM:Microsoft.FSharp.Quotations.FSharpExpr.Application(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) Applications arguments€ÖM:Microsoft.FSharp.Quotations.FSharpExpr.Applications(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})Call methodInfo€›M:Microsoft.FSharp.Quotations.FSharpExpr.Call(System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})€ÂM:Microsoft.FSharp.Quotations.FSharpExpr.Call(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})CoercesourcecM:Microsoft.FSharp.Quotations.FSharpExpr.Coerce(Microsoft.FSharp.Quotations.FSharpExpr,System.Type) IfThenElseguardthenExprelseExpr€©M:Microsoft.FSharp.Quotations.FSharpExpr.IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)ForIntegerRangeLoop loopVariablestartendExprbody€ØM:Microsoft.FSharp.Quotations.FSharpExpr.ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)FieldGet FieldInfo fieldInfoNM:Microsoft.FSharp.Quotations.FSharpExpr.FieldGet(System.Reflection.FieldInfo)uM:Microsoft.FSharp.Quotations.FSharpExpr.FieldGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.FieldInfo)FieldSetuM:Microsoft.FSharp.Quotations.FSharpExpr.FieldSet(System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr)€œM:Microsoft.FSharp.Quotations.FSharpExpr.FieldSet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr)Lambda parameter}M:Microsoft.FSharp.Quotations.FSharpExpr.Lambda(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr)Let letVariableletExpr€¡M:Microsoft.FSharp.Quotations.FSharpExpr.Let(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) LetRecursivebindings€áM:Microsoft.FSharp.Quotations.FSharpExpr.LetRecursive(Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr}},Microsoft.FSharp.Quotations.FSharpExpr) NewObjectconstructorInfo€¥M:Microsoft.FSharp.Quotations.FSharpExpr.NewObject(System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) DefaultValueexpressionTypeBM:Microsoft.FSharp.Quotations.FSharpExpr.DefaultValue(System.Type)NewTupleelements€‚M:Microsoft.FSharp.Quotations.FSharpExpr.NewTuple(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) NewRecord€M:Microsoft.FSharp.Quotations.FSharpExpr.NewRecord(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})NewArray elementType€ŽM:Microsoft.FSharp.Quotations.FSharpExpr.NewArray(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) NewDelegate delegateType parameters€·M:Microsoft.FSharp.Quotations.FSharpExpr.NewDelegate(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpVar},Microsoft.FSharp.Quotations.FSharpExpr) NewUnionCase€°M:Microsoft.FSharp.Quotations.FSharpExpr.NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) PropertyGetproperty indexerArgs€ïM:Microsoft.FSharp.Quotations.FSharpExpr.PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})€ÈM:Microsoft.FSharp.Quotations.FSharpExpr.PropertyGet(System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}}) PropertySetM:Microsoft.FSharp.Quotations.FSharpExpr.PropertySet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.PropertyInfo,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})€ïM:Microsoft.FSharp.Quotations.FSharpExpr.PropertySet(System.Reflection.PropertyInfo,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})QuoteinnerVM:Microsoft.FSharp.Quotations.FSharpExpr.Quote(Microsoft.FSharp.Quotations.FSharpExpr) Sequentialfirstsecond€‚M:Microsoft.FSharp.Quotations.FSharpExpr.Sequential(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)TryWith filterVar filterBodycatchVar catchBody€òM:Microsoft.FSharp.Quotations.FSharpExpr.TryWith(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr) TryFinally compensation€‚M:Microsoft.FSharp.Quotations.FSharpExpr.TryFinally(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)TupleGetfM:Microsoft.FSharp.Quotations.FSharpExpr.TupleGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Int32)TypeTesteM:Microsoft.FSharp.Quotations.FSharpExpr.TypeTest(Microsoft.FSharp.Quotations.FSharpExpr,System.Type) UnionCaseTest€ˆM:Microsoft.FSharp.Quotations.FSharpExpr.UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo)ValueIM:Microsoft.FSharp.Quotations.FSharpExpr.Value(System.Object,System.Type)6M:Microsoft.FSharp.Quotations.FSharpExpr.Value``1(``0)variableSM:Microsoft.FSharp.Quotations.FSharpExpr.Var(Microsoft.FSharp.Quotations.FSharpVar)VarSet}M:Microsoft.FSharp.Quotations.FSharpExpr.VarSet(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr) WhileLoop€M:Microsoft.FSharp.Quotations.FSharpExpr.WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)CastExpr`1XM:Microsoft.FSharp.Quotations.FSharpExpr.Cast``1(Microsoft.FSharp.Quotations.FSharpExpr)TryGetReflectedDefinition MethodBase methodBase`M:Microsoft.FSharp.Quotations.FSharpExpr.TryGetReflectedDefinition(System.Reflection.MethodBase) DeserializebytequalifyingType spliceTypes spliceExprsbytes€ÔM:Microsoft.FSharp.Quotations.FSharpExpr.Deserialize(System.Type,Microsoft.FSharp.Collections.FSharpList{System.Type},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},System.Byte[])RegisterReflectedDefinitionsAssemblyassemblyresourceserializedValue}M:Microsoft.FSharp.Quotations.FSharpExpr.RegisterReflectedDefinitions(System.Reflection.Assembly,System.String,System.Byte[]) GlobalVarDM:Microsoft.FSharp.Quotations.FSharpExpr.GlobalVar``1(System.String)ToStringfullAM:Microsoft.FSharp.Quotations.FSharpExpr.ToString(System.Boolean)get_Raw.P:Microsoft.FSharp.Quotations.FSharpExpr`1.Raw FSharpVarCompiledNameAttribute IComparable'T:Microsoft.FSharp.Quotations.FSharpVar FSharpExprClassAttribute(T:Microsoft.FSharp.Quotations.FSharpExpr FSharpExpr`1*T:Microsoft.FSharp.Quotations.FSharpExpr`1PatternsModule"CompilationRepresentationAttributeCompilationRepresentationFlags,T:Microsoft.FSharp.Quotations.PatternsModule |AddressOf|_|AddressOfPatterninputeM:Microsoft.FSharp.Quotations.PatternsModule.AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr)|AddressSet|_|AddressSetPatternfM:Microsoft.FSharp.Quotations.PatternsModule.AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Application|_|ApplicationPatterngM:Microsoft.FSharp.Quotations.PatternsModule.ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Call|_| CallPattern`M:Microsoft.FSharp.Quotations.PatternsModule.CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Coerce|_| CoercePatternbM:Microsoft.FSharp.Quotations.PatternsModule.CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) |FieldGet|_|FieldGetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |FieldSet|_|FieldSetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|ForIntegerRangeLoop|_|ForIntegerRangeLoopPatternoM:Microsoft.FSharp.Quotations.PatternsModule.ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) |WhileLoop|_|WhileLoopPatterneM:Microsoft.FSharp.Quotations.PatternsModule.WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr)|IfThenElse|_|IfThenElsePatternfM:Microsoft.FSharp.Quotations.PatternsModule.IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Lambda|_| LambdaPatternbM:Microsoft.FSharp.Quotations.PatternsModule.LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Let|_| LetPattern_M:Microsoft.FSharp.Quotations.PatternsModule.LetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|LetRecursive|_|LetRecursivePatternhM:Microsoft.FSharp.Quotations.PatternsModule.LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewArray|_|NewArrayPatterndM:Microsoft.FSharp.Quotations.PatternsModule.NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr)|DefaultValue|_|DefaultValuePatternhM:Microsoft.FSharp.Quotations.PatternsModule.DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr)|NewDelegate|_|NewDelegatePatterngM:Microsoft.FSharp.Quotations.PatternsModule.NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewObject|_|NewObjectPatterneM:Microsoft.FSharp.Quotations.PatternsModule.NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewRecord|_|NewRecordPatterneM:Microsoft.FSharp.Quotations.PatternsModule.NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr)|NewUnionCase|_|NewUnionCasePatternhM:Microsoft.FSharp.Quotations.PatternsModule.NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewTuple|_|NewTuplePatterndM:Microsoft.FSharp.Quotations.PatternsModule.NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr)|PropertyGet|_|PropertyGetPatterngM:Microsoft.FSharp.Quotations.PatternsModule.PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|PropertySet|_|PropertySetPatterngM:Microsoft.FSharp.Quotations.PatternsModule.PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Quote|_| QuotePatternaM:Microsoft.FSharp.Quotations.PatternsModule.QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Sequential|_|SequentialPatternfM:Microsoft.FSharp.Quotations.PatternsModule.SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TryWith|_|TryWithPatterncM:Microsoft.FSharp.Quotations.PatternsModule.TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr)|TryFinally|_|TryFinallyPatternfM:Microsoft.FSharp.Quotations.PatternsModule.TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TupleGet|_|TupleGetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TypeTest|_|TypeTestPatterndM:Microsoft.FSharp.Quotations.PatternsModule.TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr)|UnionCaseTest|_|UnionCaseTestPatterniM:Microsoft.FSharp.Quotations.PatternsModule.UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Value|_| ValuePatternaM:Microsoft.FSharp.Quotations.PatternsModule.ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Var|_| VarPattern_M:Microsoft.FSharp.Quotations.PatternsModule.VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) |VarSet|_| VarSetPatternbM:Microsoft.FSharp.Quotations.PatternsModule.VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)DerivedPatternsModule3T:Microsoft.FSharp.Quotations.DerivedPatternsModule |Lambdas|_|LambdasPatternjM:Microsoft.FSharp.Quotations.DerivedPatternsModule.LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Applications|_|ApplicationsPatternoM:Microsoft.FSharp.Quotations.DerivedPatternsModule.ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) |AndAlso|_|AndAlsoPatternjM:Microsoft.FSharp.Quotations.DerivedPatternsModule.AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) |OrElse|_| OrElsePatterniM:Microsoft.FSharp.Quotations.DerivedPatternsModule.OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Unit|_| UnitPatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Bool|_| BoolPatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) |String|_| StringPatterniM:Microsoft.FSharp.Quotations.DerivedPatternsModule.StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Single|_| SinglePatternfloat32iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Double|_| DoublePatternfloatiM:Microsoft.FSharp.Quotations.DerivedPatternsModule.DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Char|_| CharPatternchargM:Microsoft.FSharp.Quotations.DerivedPatternsModule.CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) |SByte|_| SBytePatternsbytehM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Byte|_| BytePatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int16|_| Int16Patternint16hM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt16|_| UInt16Patternuint16iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int32|_| Int32Patternint32hM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt32|_| UInt32Patternuint32iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int64|_| Int64Patternint64hM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt64|_| UInt64Patternuint64iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr)|SpecificCall|_|SpecificCallPatterntemplateParameteroM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr)!|MethodWithReflectedDefinition|_|$MethodWithReflectedDefinitionPatternvM:Microsoft.FSharp.Quotations.DerivedPatternsModule.MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase))|PropertyGetterWithReflectedDefinition|_|,PropertyGetterWithReflectedDefinitionPattern propertyInfo€€M:Microsoft.FSharp.Quotations.DerivedPatternsModule.PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo))|PropertySetterWithReflectedDefinition|_|,PropertySetterWithReflectedDefinitionPattern€€M:Microsoft.FSharp.Quotations.DerivedPatternsModule.PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo)ExprShapeModule-T:Microsoft.FSharp.Quotations.ExprShapeModule'|ShapeVar|ShapeLambda|ShapeCombination| ShapePatternChoice`3bM:Microsoft.FSharp.Quotations.ExprShapeModule.ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr)RebuildShapeCombinationshape€¤M:Microsoft.FSharp.Quotations.ExprShapeModule.RebuildShapeCombination(System.Object,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) PrimitivesS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/local.fsiBasicsList)T:Microsoft.FSharp.Primitives.Basics.ListinitR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/local.fsiterfilter predicatecollectU partitionmapmappingmap2T1T2mapiforallexistsrevconcatiteriactionunzipunzip3T3zipzip3ofArraytoArraysortWithArray*T:Microsoft.FSharp.Primitives.Basics.ArrayzeroCreateUncheckedpermuteindexMapunstableSortInPlaceByKey projectionarrayunstableSortInPlacestableSortInPlaceBystableSortInPlace NativeInteropW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/nativeptr.fsiNativePtrModuleRequireQualifiedAccessAttribute0T:Microsoft.FSharp.NativeInterop.NativePtrModule ofNativeIntOfNativeIntInlinedV/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/nativeptr.fs nativeint nativeptr`1UnverifiableAttributeNoDynamicInvocationAttributeaddressUM:Microsoft.FSharp.NativeInterop.NativePtrModule.OfNativeIntInlined``1(System.IntPtr) toNativeIntToNativeIntInlinedLM:Microsoft.FSharp.NativeInterop.NativePtrModule.ToNativeIntInlined``1(``0*)addAddPointerInlinedXM:Microsoft.FSharp.NativeInterop.NativePtrModule.AddPointerInlined``1(``0*,System.Int32)getGetPointerInlinedXM:Microsoft.FSharp.NativeInterop.NativePtrModule.GetPointerInlined``1(``0*,System.Int32)readReadPointerInlinedLM:Microsoft.FSharp.NativeInterop.NativePtrModule.ReadPointerInlined``1(``0*)writeWritePointerInlinedQM:Microsoft.FSharp.NativeInterop.NativePtrModule.WritePointerInlined``1(``0*,``0)setSetPointerInlined\M:Microsoft.FSharp.NativeInterop.NativePtrModule.SetPointerInlined``1(``0*,System.Int32,``0) stackalloc StackAllocateOM:Microsoft.FSharp.NativeInterop.NativePtrModule.StackAllocate``1(System.Int32)MathT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/math/n.fsiLinqS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Query.fsiR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Query.fsQ QuerySource`2WM:Microsoft.FSharp.Linq.QuerySource`2.#ctor(System.Collections.Generic.IEnumerable{`0}) get_Source,P:Microsoft.FSharp.Linq.QuerySource`2.Source QueryBuilder*M:Microsoft.FSharp.Linq.QueryBuilder.#ctorSource IQueryable`1KM:Microsoft.FSharp.Linq.QueryBuilder.Source``2(System.Linq.IQueryable{``0}) IEnumerable`1 IEnumerable[M:Microsoft.FSharp.Linq.QueryBuilder.Source``1(System.Collections.Generic.IEnumerable{``0})ForResultQ2€¨M:Microsoft.FSharp.Linq.QueryBuilder.For``4(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Linq.QuerySource{``2,``3}})Zero,M:Microsoft.FSharp.Linq.QueryBuilder.Zero``2Yield2M:Microsoft.FSharp.Linq.QueryBuilder.Yield``2(``0) YieldFrom computation]M:Microsoft.FSharp.Linq.QueryBuilder.YieldFrom``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})ZM:Microsoft.FSharp.Linq.QueryBuilder.Quote``1(Microsoft.FSharp.Quotations.FSharpExpr{``0})Run IQueryable€’M:Microsoft.FSharp.Linq.QueryBuilder.Run``1(Microsoft.FSharp.Quotations.FSharpExpr{Microsoft.FSharp.Linq.QuerySource{``0,System.Linq.IQueryable}})RunQueryAsQueryableRunQueryAsEnumerableRunQueryAsValueContainsCustomOperationAttributecontainskey`M:Microsoft.FSharp.Linq.QueryBuilder.Contains``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},``0)CountYM:Microsoft.FSharp.Linq.QueryBuilder.Count``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})LastlastXM:Microsoft.FSharp.Linq.QueryBuilder.Last``2(Microsoft.FSharp.Linq.QuerySource{``0,``1}) LastOrDefault lastOrDefaultaM:Microsoft.FSharp.Linq.QueryBuilder.LastOrDefault``2(Microsoft.FSharp.Linq.QuerySource{``0,``1}) ExactlyOne exactlyOne^M:Microsoft.FSharp.Linq.QueryBuilder.ExactlyOne``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})ExactlyOneOrDefaultexactlyOneOrDefaultgM:Microsoft.FSharp.Linq.QueryBuilder.ExactlyOneOrDefault``2(Microsoft.FSharp.Linq.QuerySource{``0,``1}) HeadOrDefault headOrDefaultaM:Microsoft.FSharp.Linq.QueryBuilder.HeadOrDefault``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})SelectselectAllowIntoPatternProjectionParameterAttribute€„M:Microsoft.FSharp.Linq.QueryBuilder.Select``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})WherewhereMaintainsVariableSpace€ŽM:Microsoft.FSharp.Linq.QueryBuilder.Where``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})MinByminBy valueSelector€ƒM:Microsoft.FSharp.Linq.QueryBuilder.MinBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})MaxBymaxBy€ƒM:Microsoft.FSharp.Linq.QueryBuilder.MaxBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})GroupBy IGrouping`2groupBy keySelector€…M:Microsoft.FSharp.Linq.QueryBuilder.GroupBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})SortBysortBy€„M:Microsoft.FSharp.Linq.QueryBuilder.SortBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})SortByDescendingsortByDescending€ŽM:Microsoft.FSharp.Linq.QueryBuilder.SortByDescending``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})ThenBythenBy€„M:Microsoft.FSharp.Linq.QueryBuilder.ThenBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})ThenByDescendingthenByDescending€ŽM:Microsoft.FSharp.Linq.QueryBuilder.ThenByDescending``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2}) GroupValBy groupValByresultSelector€²M:Microsoft.FSharp.Linq.QueryBuilder.GroupValBy``4(Microsoft.FSharp.Linq.QuerySource{``0,``3},Microsoft.FSharp.Core.FSharpFunc{``0,``2},Microsoft.FSharp.Core.FSharpFunc{``0,``1})JoinOuterInnerjoin IsLikeJoinJoinConditionWordon outerSource innerSourceouterKeySelectorinnerKeySelector'M:Microsoft.FSharp.Linq.QueryBuilder.Join``5(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Linq.QuerySource{``2,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``3},Microsoft.FSharp.Core.FSharpFunc{``2,``3},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``2,``4}}) GroupJoin groupJoinIsLikeGroupJoinTM:Microsoft.FSharp.Linq.QueryBuilder.GroupJoin``5(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Linq.QuerySource{``2,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``3},Microsoft.FSharp.Core.FSharpFunc{``2,``3},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{System.Collections.Generic.IEnumerable{``2},``4}}) LeftOuterJoin leftOuterJoinXM:Microsoft.FSharp.Linq.QueryBuilder.LeftOuterJoin``5(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Linq.QuerySource{``2,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``3},Microsoft.FSharp.Core.FSharpFunc{``2,``3},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{System.Collections.Generic.IEnumerable{``2},``4}}) SumByNullable op_Additionget_Zero ValueType Nullable`1 sumByNullable€œM:Microsoft.FSharp.Linq.QueryBuilder.SumByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}}) MinByNullable minByNullable€œM:Microsoft.FSharp.Linq.QueryBuilder.MinByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}}) MaxByNullable maxByNullable€œM:Microsoft.FSharp.Linq.QueryBuilder.MaxByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}})AverageByNullable DivideByIntaverageByNullable€ M:Microsoft.FSharp.Linq.QueryBuilder.AverageByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}}) AverageBy averageBy€‡M:Microsoft.FSharp.Linq.QueryBuilder.AverageBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})Distinctdistinct\M:Microsoft.FSharp.Linq.QueryBuilder.Distinct``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})Exists€M:Microsoft.FSharp.Linq.QueryBuilder.Exists``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})Findfind€M:Microsoft.FSharp.Linq.QueryBuilder.Find``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})Allall€ŒM:Microsoft.FSharp.Linq.QueryBuilder.All``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})HeadheadXM:Microsoft.FSharp.Linq.QueryBuilder.Head``2(Microsoft.FSharp.Linq.QuerySource{``0,``1})NthnthdM:Microsoft.FSharp.Linq.QueryBuilder.Nth``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},System.Int32)SkipskipeM:Microsoft.FSharp.Linq.QueryBuilder.Skip``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},System.Int32) SkipWhile skipWhile€’M:Microsoft.FSharp.Linq.QueryBuilder.SkipWhile``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})SumBysumBy€ƒM:Microsoft.FSharp.Linq.QueryBuilder.SumBy``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,``2})TaketakeeM:Microsoft.FSharp.Linq.QueryBuilder.Take``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},System.Int32) TakeWhile takeWhile€’M:Microsoft.FSharp.Linq.QueryBuilder.TakeWhile``2(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean})SortByNullablesortByNullable€M:Microsoft.FSharp.Linq.QueryBuilder.SortByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}})SortByNullableDescendingsortByNullableDescending€§M:Microsoft.FSharp.Linq.QueryBuilder.SortByNullableDescending``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}})ThenByNullablethenByNullable€M:Microsoft.FSharp.Linq.QueryBuilder.ThenByNullable``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}})ThenByNullableDescendingthenByNullableDescending€§M:Microsoft.FSharp.Linq.QueryBuilder.ThenByNullableDescending``3(Microsoft.FSharp.Linq.QuerySource{``0,``1},Microsoft.FSharp.Core.FSharpFunc{``0,System.Nullable{``2}})RuntimeHelpers\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/QueryExtensions.fsK Grouping`2get_KeySystem-Linq-IGrouping`2-get_KeyTKeystartupTElement GetEnumerator,System-Collections-IEnumerable-GetEnumerator IEnumerator6System-Collections-Generic-IEnumerable`1-GetEnumerator IEnumerator`1 get_Item1Y/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/MutableTuple.fsAnonymousObject`1Item1AnonymousObject`2 get_Item2Item2AnonymousObject`3 get_Item3Item3T4AnonymousObject`4 get_Item4Item4T5AnonymousObject`5 get_Item5Item5T6AnonymousObject`6 get_Item6Item6T7AnonymousObject`7 get_Item7Item7T8AnonymousObject`8 get_Item8Item8LeafExpressionConverterR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Linq.fsi>T:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter"ImplicitExpressionConversionHelperQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Linq.fs Expressions Expression`1iM:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.ImplicitExpressionConversionHelper``1(``0)MemberInitializationHelperaM:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.MemberInitializationHelper``1(``0)NewAnonymousObjectHelper_M:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.NewAnonymousObjectHelper``1(``0)QuotationToExpression Expression|M:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.QuotationToExpression(Microsoft.FSharp.Quotations.FSharpExpr)QuotationToLambdaExpression€ŠM:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.QuotationToLambdaExpression``1(Microsoft.FSharp.Quotations.FSharpExpr{``0})EvaluateQuotationxM:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation(Microsoft.FSharp.Quotations.FSharpExpr) SubstHelper€­M:Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.SubstHelper``1(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar[],System.Object[])|SpecificCallToMethod|_|RuntimeMethodHandle1T:Microsoft.FSharp.Linq.RuntimeHelpers.Grouping`2item1item2item3item4item5item6item7item88T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`88T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`78T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`68T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`58T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`48T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`38T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`28T:Microsoft.FSharp.Linq.RuntimeHelpers.AnonymousObject`1Adapters/T:Microsoft.FSharp.Linq.RuntimeHelpers.Adaptersmemoize?unknownfisPartiallyImmutableRecordMemberInitializationHelperMethNewAnonymousObjectHelperMeth|LeftSequentialSeries|enM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.|LeftSequentialSeries|(Microsoft.FSharp.Quotations.FSharpExpr)|PropSetList|_|varArglist€¶M:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.|PropSetList|_|(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})|ObjectConstruction|_|nM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.|ObjectConstruction|_|(Microsoft.FSharp.Quotations.FSharpExpr) tupleTypesanonObjectTypestupleToAnonTypeMap Dictionary`2anonToTupleTypeMap|NewAnonymousObject|_|nM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.|NewAnonymousObject|_|(Microsoft.FSharp.Quotations.FSharpExpr)OneNewAnonymousObjectNewAnonymousObjectAnonymousObjectGetiRewriteTupleTypetyconv |RecordFieldGetSimplification|_|exprConvImmutableTypeToMutableTypeConversionDescription€ŸM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.ConvImmutableTypeToMutableType(Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.ConversionDescription,System.Type)IsNewAnonymousObjectHelperQ CleanupLeafcM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.CleanupLeaf(Microsoft.FSharp.Quotations.FSharpExpr)SimplifyConsumingExprmM:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.SimplifyConsumingExpr(Microsoft.FSharp.Quotations.FSharpExpr)ProduceMoreMutablestipf-M:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.ProduceMoreMutables(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Quotations.FSharpExpr,System.Tuple{Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.ConversionDescription}},Microsoft.FSharp.Quotations.FSharpExpr) MakeSeqConvItem TupleConv RecordConv GroupingConvSeqConvNoConvET:Microsoft.FSharp.Linq.RuntimeHelpers.Adapters.ConversionDescription%T:Microsoft.FSharp.Linq.QuerySource`2QueryRunExtensions LowPriority6T:Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority€™M:Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority.RunQueryAsValue``1(Microsoft.FSharp.Linq.QueryBuilder,Microsoft.FSharp.Quotations.FSharpExpr{``0}) HighPriority7T:Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority€áM:Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority.RunQueryAsEnumerable``1(Microsoft.FSharp.Linq.QueryBuilder,Microsoft.FSharp.Quotations.FSharpExpr{Microsoft.FSharp.Linq.QuerySource{``0,System.Collections.IEnumerable}})$T:Microsoft.FSharp.Linq.QueryBuilderNullableOperatorsAutoOpenAttribute)T:Microsoft.FSharp.Linq.NullableOperatorsop_QmarkGreaterEquals\M:Microsoft.FSharp.Linq.NullableOperators.op_QmarkGreaterEquals``1(System.Nullable{``0},``0)op_QmarkGreaterVM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkGreater``1(System.Nullable{``0},``0)op_QmarkLessEqualsYM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLessEquals``1(System.Nullable{``0},``0) op_QmarkLessSM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLess``1(System.Nullable{``0},``0)op_QmarkEqualsUM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkEquals``1(System.Nullable{``0},``0)op_QmarkLessGreaterZM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLessGreater``1(System.Nullable{``0},``0)op_GreaterEqualsQmark\M:Microsoft.FSharp.Linq.NullableOperators.op_GreaterEqualsQmark``1(``0,System.Nullable{``0})op_GreaterQmarkVM:Microsoft.FSharp.Linq.NullableOperators.op_GreaterQmark``1(``0,System.Nullable{``0})op_LessEqualsQmarkYM:Microsoft.FSharp.Linq.NullableOperators.op_LessEqualsQmark``1(``0,System.Nullable{``0}) op_LessQmarkSM:Microsoft.FSharp.Linq.NullableOperators.op_LessQmark``1(``0,System.Nullable{``0})op_EqualsQmarkUM:Microsoft.FSharp.Linq.NullableOperators.op_EqualsQmark``1(``0,System.Nullable{``0})op_LessGreaterQmarkZM:Microsoft.FSharp.Linq.NullableOperators.op_LessGreaterQmark``1(``0,System.Nullable{``0})op_QmarkGreaterEqualsQmarkrM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkGreaterEqualsQmark``1(System.Nullable{``0},System.Nullable{``0})op_QmarkGreaterQmarklM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkGreaterQmark``1(System.Nullable{``0},System.Nullable{``0})op_QmarkLessEqualsQmarkoM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLessEqualsQmark``1(System.Nullable{``0},System.Nullable{``0})op_QmarkLessQmarkiM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLessQmark``1(System.Nullable{``0},System.Nullable{``0})op_QmarkEqualsQmarkkM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkEqualsQmark``1(System.Nullable{``0},System.Nullable{``0})op_QmarkLessGreaterQmarkpM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkLessGreaterQmark``1(System.Nullable{``0},System.Nullable{``0}) op_QmarkPlusSM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkPlus``3(System.Nullable{``0},``1) op_PlusQmarkSM:Microsoft.FSharp.Linq.NullableOperators.op_PlusQmark``3(``0,System.Nullable{``1})op_QmarkPlusQmarkiM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkPlusQmark``3(System.Nullable{``0},System.Nullable{``1}) op_QmarkMinusop_SubtractionTM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkMinus``3(System.Nullable{``0},``1) op_MinusQmarkTM:Microsoft.FSharp.Linq.NullableOperators.op_MinusQmark``3(``0,System.Nullable{``1})op_QmarkMinusQmarkjM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkMinusQmark``3(System.Nullable{``0},System.Nullable{``1})op_QmarkMultiply op_MultiplyWM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkMultiply``3(System.Nullable{``0},``1)op_MultiplyQmarkWM:Microsoft.FSharp.Linq.NullableOperators.op_MultiplyQmark``3(``0,System.Nullable{``1})op_QmarkMultiplyQmarkmM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkMultiplyQmark``3(System.Nullable{``0},System.Nullable{``1})op_QmarkPercent op_ModulusVM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkPercent``3(System.Nullable{``0},``1)op_PercentQmarkVM:Microsoft.FSharp.Linq.NullableOperators.op_PercentQmark``3(``0,System.Nullable{``1})op_QmarkPercentQmarklM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkPercentQmark``3(System.Nullable{``0},System.Nullable{``1})op_QmarkDivide op_DivisionUM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkDivide``3(System.Nullable{``0},``1)op_DivideQmarkUM:Microsoft.FSharp.Linq.NullableOperators.op_DivideQmark``3(``0,System.Nullable{``1})op_QmarkDivideQmarkkM:Microsoft.FSharp.Linq.NullableOperators.op_QmarkDivideQmark``3(System.Nullable{``0},System.Nullable{``1})NullableModule&T:Microsoft.FSharp.Linq.NullableModuleToByte op_ExplicitFM:Microsoft.FSharp.Linq.NullableModule.ToByte``1(System.Nullable{``0})ToSByteGM:Microsoft.FSharp.Linq.NullableModule.ToSByte``1(System.Nullable{``0})ToInt16GM:Microsoft.FSharp.Linq.NullableModule.ToInt16``1(System.Nullable{``0})ToUInt16HM:Microsoft.FSharp.Linq.NullableModule.ToUInt16``1(System.Nullable{``0})ToIntEM:Microsoft.FSharp.Linq.NullableModule.ToInt``1(System.Nullable{``0})enumToEnumOM:Microsoft.FSharp.Linq.NullableModule.ToEnum``1(System.Nullable{System.Int32})ToInt32GM:Microsoft.FSharp.Linq.NullableModule.ToInt32``1(System.Nullable{``0})ToUInt32HM:Microsoft.FSharp.Linq.NullableModule.ToUInt32``1(System.Nullable{``0})ToInt64GM:Microsoft.FSharp.Linq.NullableModule.ToInt64``1(System.Nullable{``0})ToUInt64HM:Microsoft.FSharp.Linq.NullableModule.ToUInt64``1(System.Nullable{``0})ToSingleHM:Microsoft.FSharp.Linq.NullableModule.ToSingle``1(System.Nullable{``0})ToDoubleHM:Microsoft.FSharp.Linq.NullableModule.ToDouble``1(System.Nullable{``0})ToIntPtrHM:Microsoft.FSharp.Linq.NullableModule.ToIntPtr``1(System.Nullable{``0}) unativeint ToUIntPtrIM:Microsoft.FSharp.Linq.NullableModule.ToUIntPtr``1(System.Nullable{``0})decimal ToDecimalIM:Microsoft.FSharp.Linq.NullableModule.ToDecimal``1(System.Nullable{``0})ToCharFM:Microsoft.FSharp.Linq.NullableModule.ToChar``1(System.Nullable{``0})DataO/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/SI.fs UnitSystemsSI UnitSymbolsmMeasureAttribute UnitNamesmetre4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.mkgkilogram5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.kgs4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.sAampere4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Akelvin4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Kmolmole6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.molcdcandela5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.cdHzhertz5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.HzNnewton4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.NPapascal5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.PaJjoule4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.JWwatt4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.WCcoulomb4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.CVvolt4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.VFfarad4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.FSsiemens4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Sohm6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.ohmWbweber5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Wbtesla4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Tlmlumen5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.lmlxlux5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.lxBq becquerel5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.BqGygray5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.GySvsievert5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.Svkatkatal6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.katHhenry4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols.H6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.metremeter6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.meter9T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kilogram7T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.second7T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ampere7T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.kelvin5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.mole8T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.candela6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.hertz7T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.newton7T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.pascal6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.joule5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.watt8T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.coulomb5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.volt6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.farad4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.ohm8T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.siemens6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.weber6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.tesla6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.henry6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.lumen4T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.lux:T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.becquerel5T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.gray8T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.sievert6T:Microsoft.FSharp.Data.UnitSystems.SI.UnitNames.katald/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/fslib-extra-pervasives.fsiT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/printf.fsiS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/printf.fsPrinterResiduePrintfFormat`4;M:Microsoft.FSharp.Core.PrintfFormat`4.#ctor(System.String) get_Value,P:Microsoft.FSharp.Core.PrintfFormat`4.ValueTuplePrintfFormat`5;M:Microsoft.FSharp.Core.PrintfFormat`5.#ctor(System.String)X/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fsiW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fs-M:Microsoft.FSharp.Core.SealedAttribute.#ctor-P:Microsoft.FSharp.Core.SealedAttribute.Value=M:Microsoft.FSharp.Core.SealedAttribute.#ctor(System.Boolean)4M:Microsoft.FSharp.Core.AbstractClassAttribute.#ctorReflectedDefinitionAttribute:M:Microsoft.FSharp.Core.ReflectedDefinitionAttribute.#ctorEqualityConditionalOnAttributeM:Microsoft.FSharp.Core.ComparisonConditionalOnAttribute.#ctorStructAttribute-M:Microsoft.FSharp.Core.StructAttribute.#ctor.M:Microsoft.FSharp.Core.MeasureAttribute.#ctor%MeasureAnnotatedAbbreviationAttributeCM:Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute.#ctorInterfaceAttribute0M:Microsoft.FSharp.Core.InterfaceAttribute.#ctor,M:Microsoft.FSharp.Core.ClassAttribute.#ctorAllowNullLiteralAttribute7M:Microsoft.FSharp.Core.AllowNullLiteralAttribute.#ctorLiteralAttribute.M:Microsoft.FSharp.Core.LiteralAttribute.#ctorCLIEventAttribute/M:Microsoft.FSharp.Core.CLIEventAttribute.#ctorCLIMutableAttribute1M:Microsoft.FSharp.Core.CLIMutableAttribute.#ctorDefaultAugmentationAttribute:P:Microsoft.FSharp.Core.DefaultAugmentationAttribute.ValueJM:Microsoft.FSharp.Core.DefaultAugmentationAttribute.#ctor(System.Boolean)VolatileFieldAttribute4M:Microsoft.FSharp.Core.VolatileFieldAttribute.#ctorEntryPointAttribute1M:Microsoft.FSharp.Core.EntryPointAttribute.#ctorReferenceEqualityAttribute8M:Microsoft.FSharp.Core.ReferenceEqualityAttribute.#ctorStructuralEqualityAttribute9M:Microsoft.FSharp.Core.StructuralEqualityAttribute.#ctorStructuralComparisonAttribute;M:Microsoft.FSharp.Core.StructuralComparisonAttribute.#ctorEM:Microsoft.FSharp.Core.CustomOperationAttribute.#ctor(System.String)5P:Microsoft.FSharp.Core.CustomOperationAttribute.Nameget_AllowIntoPatternAP:Microsoft.FSharp.Core.CustomOperationAttribute.AllowIntoPatternset_AllowIntoPatternQP:Microsoft.FSharp.Core.CustomOperationAttribute.AllowIntoPattern(System.Boolean) get_IsLikeZip:P:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeZip set_IsLikeZipJP:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeZip(System.Boolean)get_IsLikeJoin;P:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeJoinset_IsLikeJoinKP:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeJoin(System.Boolean)get_IsLikeGroupJoin@P:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeGroupJoinset_IsLikeGroupJoinPP:Microsoft.FSharp.Core.CustomOperationAttribute.IsLikeGroupJoin(System.Boolean)get_JoinConditionWordBP:Microsoft.FSharp.Core.CustomOperationAttribute.JoinConditionWordset_JoinConditionWordQP:Microsoft.FSharp.Core.CustomOperationAttribute.JoinConditionWord(System.String)get_MaintainsVariableSpaceGP:Microsoft.FSharp.Core.CustomOperationAttribute.MaintainsVariableSpaceset_MaintainsVariableSpaceWP:Microsoft.FSharp.Core.CustomOperationAttribute.MaintainsVariableSpace(System.Boolean)#get_MaintainsVariableSpaceUsingBindPP:Microsoft.FSharp.Core.CustomOperationAttribute.MaintainsVariableSpaceUsingBind#set_MaintainsVariableSpaceUsingBind`P:Microsoft.FSharp.Core.CustomOperationAttribute.MaintainsVariableSpaceUsingBind(System.Boolean):M:Microsoft.FSharp.Core.ProjectionParameterAttribute.#ctor1M:Microsoft.FSharp.Core.NoEqualityAttribute.#ctorCustomEqualityAttribute5M:Microsoft.FSharp.Core.CustomEqualityAttribute.#ctorCustomComparisonAttribute7M:Microsoft.FSharp.Core.CustomComparisonAttribute.#ctor3M:Microsoft.FSharp.Core.NoComparisonAttribute.#ctor get_CheckDefaultValueAttribute3P:Microsoft.FSharp.Core.DefaultValueAttribute.Check3M:Microsoft.FSharp.Core.DefaultValueAttribute.#ctorcheckCM:Microsoft.FSharp.Core.DefaultValueAttribute.#ctor(System.Boolean)7M:Microsoft.FSharp.Core.OptionalArgumentAttribute.#ctor&RequiresExplicitTypeArgumentsAttributeDM:Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute.#ctorGeneralizableValueAttribute9M:Microsoft.FSharp.Core.GeneralizableValueAttribute.#ctorget_CompiledName:P:Microsoft.FSharp.Core.CompiledNameAttribute.CompiledName compiledNameBM:Microsoft.FSharp.Core.CompiledNameAttribute.#ctor(System.String)AutoSerializableAttribute7P:Microsoft.FSharp.Core.AutoSerializableAttribute.ValueGM:Microsoft.FSharp.Core.AutoSerializableAttribute.#ctor(System.Boolean) get_Major#FSharpInterfaceDataVersionAttributeAP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.Major get_MinorAP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.Minor get_ReleaseCP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.ReleasemajorminorreleaseiM:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.#ctor(System.Int32,System.Int32,System.Int32)get_SourceConstructFlagsCompilationMappingAttributeSourceConstructFlagsHP:Microsoft.FSharp.Core.CompilationMappingAttribute.SourceConstructFlagsget_SequenceNumberBP:Microsoft.FSharp.Core.CompilationMappingAttribute.SequenceNumberget_VariantNumberAP:Microsoft.FSharp.Core.CompilationMappingAttribute.VariantNumbersourceConstructFlagseM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags)sequenceNumberrM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags,System.Int32) variantNumberM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags,System.Int32,System.Int32)get_SourceNameCompilationSourceNameAttributeAP:Microsoft.FSharp.Core.CompilationSourceNameAttribute.SourceName sourceNameKM:Microsoft.FSharp.Core.CompilationSourceNameAttribute.#ctor(System.String) get_Flags@P:Microsoft.FSharp.Core.CompilationRepresentationAttribute.FlagsflagsvM:Microsoft.FSharp.Core.CompilationRepresentationAttribute.#ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) get_MessageExperimentalAttribute5P:Microsoft.FSharp.Core.ExperimentalAttribute.MessagemessageBM:Microsoft.FSharp.Core.ExperimentalAttribute.#ctor(System.String) get_Counts"CompilationArgumentCountsAttributeAP:Microsoft.FSharp.Core.CompilationArgumentCountsAttribute.CountscountsPM:Microsoft.FSharp.Core.CompilationArgumentCountsAttribute.#ctor(System.Int32[]) StructuredFormatDisplayAttribute>P:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute.ValueMM:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute.#ctor(System.String)CompilerMessageAttribute8P:Microsoft.FSharp.Core.CompilerMessageAttribute.Messageget_MessageNumber>P:Microsoft.FSharp.Core.CompilerMessageAttribute.MessageNumber get_IsError8P:Microsoft.FSharp.Core.CompilerMessageAttribute.IsError set_IsErrorHP:Microsoft.FSharp.Core.CompilerMessageAttribute.IsError(System.Boolean) get_IsHidden9P:Microsoft.FSharp.Core.CompilerMessageAttribute.IsHidden set_IsHiddenIP:Microsoft.FSharp.Core.CompilerMessageAttribute.IsHidden(System.Boolean) messageNumberRM:Microsoft.FSharp.Core.CompilerMessageAttribute.#ctor(System.String,System.Int32)3M:Microsoft.FSharp.Core.UnverifiableAttribute.#ctor:M:Microsoft.FSharp.Core.NoDynamicInvocationAttribute.#ctor=M:Microsoft.FSharp.Core.RequireQualifiedAccessAttribute.#ctorget_Path.P:Microsoft.FSharp.Core.AutoOpenAttribute.Path/M:Microsoft.FSharp.Core.AutoOpenAttribute.#ctorpath>M:Microsoft.FSharp.Core.AutoOpenAttribute.#ctor(System.String) CompareToChoice`2 IComparable`1 IComparerIStructuralComparable GetHashCodeIEqualityComparerIStructuralEquatableChoice`4Choice`5Choice`6Choice`7MatchFailureException SpecializeFSharpTypeFunc4M:Microsoft.FSharp.Core.FSharpTypeFunc.Specialize``1,M:Microsoft.FSharp.Core.FSharpTypeFunc.#ctorInvoke FSharpFunc`2func/M:Microsoft.FSharp.Core.FSharpFunc`2.Invoke(`0) op_Implicit Converter`2YM:Microsoft.FSharp.Core.FSharpFunc`2.op_Implicit(Microsoft.FSharp.Core.FSharpFunc{`0,`1}) converterIM:Microsoft.FSharp.Core.FSharpFunc`2.op_Implicit(System.Converter{`0,`1}) ToConverterYM:Microsoft.FSharp.Core.FSharpFunc`2.ToConverter(Microsoft.FSharp.Core.FSharpFunc{`0,`1}) FromConverterKM:Microsoft.FSharp.Core.FSharpFunc`2.FromConverter(System.Converter{`0,`1}) InvokeFastXYarg1arg2arg3arg4arg5M:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``4(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``3}}}}},`0,`1,``0,``1,``2)€ÛM:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``3(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}}}},`0,`1,``0,``1)€±M:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``2(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}}},`0,`1,``0)€‡M:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``1(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,``0}},`0,`1)*M:Microsoft.FSharp.Core.FSharpFunc`2.#ctor ToFSharpFuncAction`1 FuncConvertGM:Microsoft.FSharp.Core.FuncConvert.ToFSharpFunc``1(System.Action{``0})NM:Microsoft.FSharp.Core.FuncConvert.ToFSharpFunc``2(System.Converter{``0,``1})FuncFromTupledrM:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``3(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{``0,``1},``2})vM:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``4(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{``0,``1,``2},``3})zM:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``5(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{``0,``1,``2,``3},``4})~M:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``6(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{``0,``1,``2,``3,``4},``5})Ref`1)P:Microsoft.FSharp.Core.FSharpRef`1.Value set_Value-P:Microsoft.FSharp.Core.FSharpRef`1.Value(`0)Option`1get_None+P:Microsoft.FSharp.Core.FSharpOption`1.NoneSome/M:Microsoft.FSharp.Core.FSharpOption`1.Some(`0),P:Microsoft.FSharp.Core.FSharpOption`1.Value get_IsSome-P:Microsoft.FSharp.Core.FSharpOption`1.IsSome get_IsNone-P:Microsoft.FSharp.Core.FSharpOption`1.IsNoneUnitT:Microsoft.FSharp.Core.unit`/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types-prelude.fsiUIntPtr"T:Microsoft.FSharp.Core.unativeintuint8ByteT:Microsoft.FSharp.Core.uint8UInt64T:Microsoft.FSharp.Core.uint64UInt32T:Microsoft.FSharp.Core.uint32UInt16T:Microsoft.FSharp.Core.uint16StringT:Microsoft.FSharp.Core.stringsingleSingleT:Microsoft.FSharp.Core.singleMeasuresbyte`1T:Microsoft.FSharp.Core.sbyte`1SByteT:Microsoft.FSharp.Core.sbyteref`1T:Microsoft.FSharp.Core.ref`1 T:Microsoft.FSharp.Core.option`1ObjectT:Microsoft.FSharp.Core.objmscorlib System.IntPtr#T:Microsoft.FSharp.Core.nativeptr`1IntPtr!T:Microsoft.FSharp.Core.nativeintint`1T:Microsoft.FSharp.Core.int`1int8T:Microsoft.FSharp.Core.int8int64`1T:Microsoft.FSharp.Core.int64`1Int64T:Microsoft.FSharp.Core.int64Int32T:Microsoft.FSharp.Core.int32int16`1T:Microsoft.FSharp.Core.int16`1Int16T:Microsoft.FSharp.Core.int16T:Microsoft.FSharp.Core.int ilsigptr`1"T:Microsoft.FSharp.Core.ilsigptr`1float`1T:Microsoft.FSharp.Core.float`1 float32`1!T:Microsoft.FSharp.Core.float32`1T:Microsoft.FSharp.Core.float32DoubleT:Microsoft.FSharp.Core.float ExceptionT:Microsoft.FSharp.Core.exndoubleT:Microsoft.FSharp.Core.double decimal`1!T:Microsoft.FSharp.Core.decimal`1DecimalT:Microsoft.FSharp.Core.decimalCharT:Microsoft.FSharp.Core.charT:Microsoft.FSharp.Core.bytebyref`1T:Microsoft.FSharp.Core.byref`1BooleanT:Microsoft.FSharp.Core.boolbigint BigIntegerarray`1T:Microsoft.FSharp.Core.array`1T:Microsoft.FSharp.Core.[]`1[,]`1T:Microsoft.FSharp.Core.[,]`1[,,]`1T:Microsoft.FSharp.Core.[,,]`1[,,,]`1T:Microsoft.FSharp.Core.[,,,]`1AttributeUsageAttributeSystem.AttributeUsageAttributeSystem.AttributeTargetsAttributeTargets AllowMultiple Attribute.T:Microsoft.FSharp.Core.VolatileFieldAttributearg0 op_BitwiseOr-T:Microsoft.FSharp.Core.UnverifiableAttributeT:Microsoft.FSharp.Core.Unit8T:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute3T:Microsoft.FSharp.Core.StructuralEqualityAttribute5T:Microsoft.FSharp.Core.StructuralComparisonAttribute'T:Microsoft.FSharp.Core.StructAttribute StringModuleT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/string.fsi$T:Microsoft.FSharp.Core.StringModuleConcatS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/string.fssepstringspM:Microsoft.FSharp.Core.StringModule.Concat(System.String,System.Collections.Generic.IEnumerable{System.String})Iteratestr€„M:Microsoft.FSharp.Core.StringModule.Iterate(Microsoft.FSharp.Core.FSharpFunc{System.Char,Microsoft.FSharp.Core.Unit},System.String)IterateIndexed€ºM:Microsoft.FSharp.Core.StringModule.IterateIndexed(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Char,Microsoft.FSharp.Core.Unit}},System.String)MapqM:Microsoft.FSharp.Core.StringModule.Map(Microsoft.FSharp.Core.FSharpFunc{System.Char,System.Char},System.String) MapIndexed€§M:Microsoft.FSharp.Core.StringModule.MapIndexed(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Char,System.Char}},System.String)CollectwM:Microsoft.FSharp.Core.StringModule.Collect(Microsoft.FSharp.Core.FSharpFunc{System.Char,System.String},System.String) Initialize initializerzM:Microsoft.FSharp.Core.StringModule.Initialize(System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,System.String})ForAllwM:Microsoft.FSharp.Core.StringModule.ForAll(Microsoft.FSharp.Core.FSharpFunc{System.Char,System.Boolean},System.String)wM:Microsoft.FSharp.Core.StringModule.Exists(Microsoft.FSharp.Core.FSharpFunc{System.Char,System.Boolean},System.String) replicate ReplicateJM:Microsoft.FSharp.Core.StringModule.Replicate(System.Int32,System.String)lengthLength:M:Microsoft.FSharp.Core.StringModule.Length(System.String)value__None1F:Microsoft.FSharp.Core.SourceConstructFlags.NoneSumType4F:Microsoft.FSharp.Core.SourceConstructFlags.SumType RecordType7F:Microsoft.FSharp.Core.SourceConstructFlags.RecordType ObjectType7F:Microsoft.FSharp.Core.SourceConstructFlags.ObjectTypeField2F:Microsoft.FSharp.Core.SourceConstructFlags.Field6F:Microsoft.FSharp.Core.SourceConstructFlags.ExceptionClosure4F:Microsoft.FSharp.Core.SourceConstructFlags.ClosureModule3F:Microsoft.FSharp.Core.SourceConstructFlags.Module UnionCase6F:Microsoft.FSharp.Core.SourceConstructFlags.UnionCase2F:Microsoft.FSharp.Core.SourceConstructFlags.ValueKindMask5F:Microsoft.FSharp.Core.SourceConstructFlags.KindMaskNonPublicRepresentationDF:Microsoft.FSharp.Core.SourceConstructFlags.NonPublicRepresentationEnum,T:Microsoft.FSharp.Core.SourceConstructFlags'T:Microsoft.FSharp.Core.SealedAttributeSRO/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/SR.fsT:Microsoft.FSharp.Core.SR resources ResourcesResourceManagermatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptyinputSequenceTooLongmapCannotBeMutated notComparable outOfRangearraysHadDifferentLengths arrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStarted$mailboxProcessorPostAndReplyTimedOut)mailboxProcessorPostAndAsyncReplyTimedOut cannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverload keyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaN checkInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypes notATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionType notAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifier printfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifier"printfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHS QtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBool QtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeInt%QtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRange'controlContinuationInvokedMultipleTimes&invalidRecordTypeConstructorNotDefined%invalidTupleTypeConstructorNotDefined thenByError/failDueToUnsupportedInputTypeInSumByOrAverageByunsupportedIfThenElseunsupportedQueryConstructunsupportedQueryConstructKindunsupportedQueryCallunsupportedQueryProperty GetString GetString1 GetString2 GetString3>T:Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute7T:Microsoft.FSharp.Core.RequireQualifiedAccessAttribute4T:Microsoft.FSharp.Core.ReflectedDefinitionAttribute2T:Microsoft.FSharp.Core.ReferenceEqualityAttribute FSharpRef`1contentsBF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.FSharpRef`1.contents#T:Microsoft.FSharp.Core.FSharpRef`14T:Microsoft.FSharp.Core.ProjectionParameterAttribute PrintfModule$T:Microsoft.FSharp.Core.PrintfModulebprintfPrintFormatToStringBuilder StringBuilderBuilderFormat`1builderformat€ÕM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringBuilder``1(System.Text.StringBuilder,Microsoft.FSharp.Core.PrintfFormat{``0,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})fprintfPrintFormatToTextWriterTextWriterFormat`1 textWriter€ÈM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})fprintfnPrintFormatLineToTextWriter€ÌM:Microsoft.FSharp.Core.PrintfModule.PrintFormatLineToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})eprintfPrintFormatToError€®M:Microsoft.FSharp.Core.PrintfModule.PrintFormatToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})eprintfnPrintFormatLineToError€²M:Microsoft.FSharp.Core.PrintfModule.PrintFormatLineToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})printf PrintFormat€§M:Microsoft.FSharp.Core.PrintfModule.PrintFormat``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})printfnPrintFormatLine€«M:Microsoft.FSharp.Core.PrintfModule.PrintFormatLine``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})sprintfPrintFormatToStringThenStringFormat`1€ŸM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThen``1(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,System.String})kbprintfPrintFormatToStringBuilderThenBuilderFormat`2 continutationM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringBuilderThen``2(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0},System.Text.StringBuilder,Microsoft.FSharp.Core.PrintfFormat{``1,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,``0})kfprintfPrintFormatToTextWriterThenTextWriterFormat`2€öM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToTextWriterThen``2(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0},System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``1,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,``0})kprintfPrintFormatThenStringFormat`2€ÁM:Microsoft.FSharp.Core.PrintfModule.PrintFormatThen``2(Microsoft.FSharp.Core.FSharpFunc{System.String,``0},Microsoft.FSharp.Core.PrintfFormat{``1,Microsoft.FSharp.Core.Unit,System.String,``0})ksprintf€ÉM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThen``2(Microsoft.FSharp.Core.FSharpFunc{System.String,``0},Microsoft.FSharp.Core.PrintfFormat{``1,Microsoft.FSharp.Core.Unit,System.String,``0}) failwithfPrintFormatToStringThenFail€™M:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail``2(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,``1})Format`44T:Microsoft.FSharp.Core.PrintfModule.BuilderFormat`23T:Microsoft.FSharp.Core.PrintfModule.StringFormat`27T:Microsoft.FSharp.Core.PrintfModule.TextWriterFormat`24T:Microsoft.FSharp.Core.PrintfModule.BuilderFormat`13T:Microsoft.FSharp.Core.PrintfModule.StringFormat`17T:Microsoft.FSharp.Core.PrintfModule.TextWriterFormat`1&T:Microsoft.FSharp.Core.PrintfFormat`5&T:Microsoft.FSharp.Core.PrintfFormat`41T:Microsoft.FSharp.Core.OptionalArgumentAttributeFSharpOption`1+T:Microsoft.FSharp.Core.FSharpOption`1.None+T:Microsoft.FSharp.Core.FSharpOption`1.Some&T:Microsoft.FSharp.Core.FSharpOption`1 OptionModuleT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/option.fsi$T:Microsoft.FSharp.Core.OptionModuleisSomeIsSomeS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/option.fsoptionWM:Microsoft.FSharp.Core.OptionModule.IsSome``1(Microsoft.FSharp.Core.FSharpOption{``0})isNoneIsNoneWM:Microsoft.FSharp.Core.OptionModule.IsNone``1(Microsoft.FSharp.Core.FSharpOption{``0})GetValueYM:Microsoft.FSharp.Core.OptionModule.GetValue``1(Microsoft.FSharp.Core.FSharpOption{``0})VM:Microsoft.FSharp.Core.OptionModule.Count``1(Microsoft.FSharp.Core.FSharpOption{``0})foldFold€©M:Microsoft.FSharp.Core.OptionModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,Microsoft.FSharp.Core.FSharpOption{``0})foldBackFoldBack€­M:Microsoft.FSharp.Core.OptionModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},Microsoft.FSharp.Core.FSharpOption{``0},``1)€ŒM:Microsoft.FSharp.Core.OptionModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Core.FSharpOption{``0})€ŒM:Microsoft.FSharp.Core.OptionModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Core.FSharpOption{``0})€™M:Microsoft.FSharp.Core.OptionModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpOption{``0})~M:Microsoft.FSharp.Core.OptionModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Core.FSharpOption{``0})bindBindbinder€£M:Microsoft.FSharp.Core.OptionModule.Bind``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Core.FSharpOption{``0})ToArrayXM:Microsoft.FSharp.Core.OptionModule.ToArray``1(Microsoft.FSharp.Core.FSharpOption{``0})toListToListWM:Microsoft.FSharp.Core.OptionModule.ToList``1(Microsoft.FSharp.Core.FSharpOption{``0})OptimizedClosures)T:Microsoft.FSharp.Core.OptimizedClosures FSharpFunc`3DM:Microsoft.FSharp.Core.OptimizedClosures.FSharpFunc`3.Invoke(`0,`1)Adapt€ŠM:Microsoft.FSharp.Core.OptimizedClosures.FSharpFunc`3.Adapt(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,`2}})M:Microsoft.FSharp.Core.Operators.op_RangeStep``2(``0,``1,``0)lockLock lockObjectoM:Microsoft.FSharp.Core.Operators.Lock``2(``0,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``1})usingUsing IDisposableYM:Microsoft.FSharp.Core.Operators.Using``2(``0,Microsoft.FSharp.Core.FSharpFunc{``0,``1})typeofTypeOf+M:Microsoft.FSharp.Core.Operators.TypeOf``1methodhandleofMethodHandleOfTResult^M:Microsoft.FSharp.Core.Operators.MethodHandleOf``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1}) typedefof TypeDefOf.M:Microsoft.FSharp.Core.Operators.TypeDefOf``1sizeofSizeOf+M:Microsoft.FSharp.Core.Operators.SizeOf``1hashHash.M:Microsoft.FSharp.Core.Operators.Hash``1(``0) limitedHashlimitBM:Microsoft.FSharp.Core.Operators.limitedHash``1(System.Int32,``0)absAbs-M:Microsoft.FSharp.Core.Operators.Abs``1(``0)acosAcos.M:Microsoft.FSharp.Core.Operators.Acos``1(``0)asinAsin.M:Microsoft.FSharp.Core.Operators.Asin``1(``0)atanAtan.M:Microsoft.FSharp.Core.Operators.Atan``1(``0)atan2Atan23M:Microsoft.FSharp.Core.Operators.Atan2``2(``0,``0)ceilCeiling1M:Microsoft.FSharp.Core.Operators.Ceiling``1(``0)expExp-M:Microsoft.FSharp.Core.Operators.Exp``1(``0)floorFloor/M:Microsoft.FSharp.Core.Operators.Floor``1(``0)signSignget_Sign.M:Microsoft.FSharp.Core.Operators.Sign``1(``0)roundRound/M:Microsoft.FSharp.Core.Operators.Round``1(``0)logLog-M:Microsoft.FSharp.Core.Operators.Log``1(``0)log10Log10/M:Microsoft.FSharp.Core.Operators.Log10``1(``0)sqrtSqrt.M:Microsoft.FSharp.Core.Operators.Sqrt``2(``0)cosCos-M:Microsoft.FSharp.Core.Operators.Cos``1(``0)coshCosh.M:Microsoft.FSharp.Core.Operators.Cosh``1(``0)sinSin-M:Microsoft.FSharp.Core.Operators.Sin``1(``0)sinhSinh.M:Microsoft.FSharp.Core.Operators.Sinh``1(``0)tanTan-M:Microsoft.FSharp.Core.Operators.Tan``1(``0)tanhTanh.M:Microsoft.FSharp.Core.Operators.Tanh``1(``0)truncateTruncate2M:Microsoft.FSharp.Core.Operators.Truncate``1(``0)op_ExponentiationPow?M:Microsoft.FSharp.Core.Operators.op_Exponentiation``2(``0,``1)pown PowIntegerAM:Microsoft.FSharp.Core.Operators.PowInteger``1(``0,System.Int32)0M:Microsoft.FSharp.Core.Operators.ToByte``1(``0)1M:Microsoft.FSharp.Core.Operators.ToSByte``1(``0)1M:Microsoft.FSharp.Core.Operators.ToInt16``1(``0)2M:Microsoft.FSharp.Core.Operators.ToUInt16``1(``0)/M:Microsoft.FSharp.Core.Operators.ToInt``1(``0)9M:Microsoft.FSharp.Core.Operators.ToEnum``1(System.Int32)1M:Microsoft.FSharp.Core.Operators.ToInt32``1(``0)2M:Microsoft.FSharp.Core.Operators.ToUInt32``1(``0)1M:Microsoft.FSharp.Core.Operators.ToInt64``1(``0)2M:Microsoft.FSharp.Core.Operators.ToUInt64``1(``0)2M:Microsoft.FSharp.Core.Operators.ToSingle``1(``0)2M:Microsoft.FSharp.Core.Operators.ToDouble``1(``0)2M:Microsoft.FSharp.Core.Operators.ToIntPtr``1(``0)3M:Microsoft.FSharp.Core.Operators.ToUIntPtr``1(``0)2M:Microsoft.FSharp.Core.Operators.ToString``1(``0)3M:Microsoft.FSharp.Core.Operators.ToDecimal``1(``0)0M:Microsoft.FSharp.Core.Operators.ToChar``1(``0) |KeyValue|KeyValuePatternKeyValuePair`2 keyValuePairfM:Microsoft.FSharp.Core.Operators.KeyValuePattern``2(System.Collections.Generic.KeyValuePair{``0,``1})OperatorIntrinsics4T:Microsoft.FSharp.Core.Operators.OperatorIntrinsics GetArraySlice€®M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice``1(``0[],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32}) SetArraySlice€´M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice``1(``0[],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[])GetArraySlice2Dstart1finish1start2finish2M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice2D``1(``0[0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice2D"M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice2D``1(``0[0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:])GetArraySlice3Dstart3finish3|M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice3D``1(``0[0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice3DŠM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice3D``1(``0[0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:,0:])GetArraySlice4Dstart4finish4áM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice4D``1(``0[0:,0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice4DòM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice4D``1(``0[0:,0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:,0:,0:])GetStringSlice€´M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetStringSlice(System.String,Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32}) RangeInt32LThis function is for use by compiled F# code and should not be used directlystopgM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt32(System.Int32,System.Int32,System.Int32) RangeDoublekM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeDouble(System.Double,System.Double,System.Double) RangeSinglekM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeSingle(System.Single,System.Single,System.Single) RangeInt64gM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt64(System.Int64,System.Int64,System.Int64) RangeUInt64kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt64(System.UInt64,System.UInt64,System.UInt64) RangeUInt32kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt32(System.UInt32,System.UInt32,System.UInt32) RangeIntPtrkM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeIntPtr(System.IntPtr,System.IntPtr,System.IntPtr) RangeUIntPtroM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUIntPtr(System.UIntPtr,System.UIntPtr,System.UIntPtr) RangeInt16gM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt16(System.Int16,System.Int16,System.Int16) RangeUInt16kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt16(System.UInt16,System.UInt16,System.UInt16) RangeSBytegM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeSByte(System.SByte,System.SByte,System.SByte) RangeBytecM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeByte(System.Byte,System.Byte,System.Byte) RangeCharWM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeChar(System.Char,System.Char) RangeGenericone€¡M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeGeneric``1(``0,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},``0,``0)RangeStepGenericzero€©M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeStepGeneric``2(``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,``0,``1) AbsDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AbsDynamic``1(``0) AcosDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AcosDynamic``1(``0) AsinDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AsinDynamic``1(``0) AtanDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AtanDynamic``1(``0) Atan2DynamicMM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.Atan2Dynamic``2(``0,``0)CeilingDynamicKM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CeilingDynamic``1(``0) ExpDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.ExpDynamic``1(``0) FloorDynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.FloorDynamic``1(``0)TruncateDynamicLM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TruncateDynamic``1(``0) RoundDynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RoundDynamic``1(``0) SignDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SignDynamic``1(``0) LogDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.LogDynamic``1(``0) Log10DynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.Log10Dynamic``1(``0) SqrtDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SqrtDynamic``2(``0) CosDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CosDynamic``1(``0) CoshDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CoshDynamic``1(``0) SinDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SinDynamic``1(``0) SinhDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SinhDynamic``1(``0) TanDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TanDynamic``1(``0) TanhDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TanhDynamic``1(``0) PowDynamicKM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDynamic``2(``0,``1)PowByteVM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowByte(System.Byte,System.Int32)PowSByteXM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowSByte(System.SByte,System.Int32)PowInt16XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt16(System.Int16,System.Int32) PowUInt16ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt16(System.UInt16,System.Int32)PowInt32XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt32(System.Int32,System.Int32) PowUInt32ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt32(System.UInt32,System.Int32)PowInt64XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt64(System.Int64,System.Int32) PowUInt64ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt64(System.UInt64,System.Int32) PowIntPtrZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowIntPtr(System.IntPtr,System.Int32) PowUIntPtr\M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUIntPtr(System.UIntPtr,System.Int32) PowSingleZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowSingle(System.Single,System.Int32) PowDoubleZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDouble(System.Double,System.Int32) PowDecimal\M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDecimal(System.Decimal,System.Int32) PowGenericmulexponent€¨M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowGeneric``1(``0,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},``0,System.Int32) Unchecked+T:Microsoft.FSharp.Core.Operators.UncheckedCM:Microsoft.FSharp.Core.Operators.Unchecked.Unbox``1(System.Object) defaultof DefaultOf8M:Microsoft.FSharp.Core.Operators.Unchecked.DefaultOf``1?M:Microsoft.FSharp.Core.Operators.Unchecked.Compare``1(``0,``0)equals>M:Microsoft.FSharp.Core.Operators.Unchecked.Equals``1(``0,``0)8M:Microsoft.FSharp.Core.Operators.Unchecked.Hash``1(``0)Checked)T:Microsoft.FSharp.Core.Operators.CheckedBM:Microsoft.FSharp.Core.Operators.Checked.op_UnaryNegation``1(``0)DM:Microsoft.FSharp.Core.Operators.Checked.op_Subtraction``3(``0,``1)AM:Microsoft.FSharp.Core.Operators.Checked.op_Addition``3(``0,``1)AM:Microsoft.FSharp.Core.Operators.Checked.op_Multiply``3(``0,``1)8M:Microsoft.FSharp.Core.Operators.Checked.ToByte``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToSByte``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt16``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt16``1(``0)7M:Microsoft.FSharp.Core.Operators.Checked.ToInt``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt32``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt32``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt64``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt64``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToIntPtr``1(``0);M:Microsoft.FSharp.Core.Operators.Checked.ToUIntPtr``1(``0)8M:Microsoft.FSharp.Core.Operators.Checked.ToChar``1(``0)NumericLiterals'T:Microsoft.FSharp.Core.NumericLiteralsNumericLiteralI7T:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralIFromZeroS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/math/z.fsCM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromZero``1FromOneBM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromOne``1 FromInt32RM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt32``1(System.Int32) FromInt64RM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt64``1(System.Int64) FromStringTM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromString``1(System.String)FromInt64DynamicVM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt64Dynamic(System.Int64)FromStringDynamicXM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromStringDynamic(System.String)+T:Microsoft.FSharp.Core.NoEqualityAttribute4T:Microsoft.FSharp.Core.NoDynamicInvocationAttribute-T:Microsoft.FSharp.Core.NoComparisonAttribute(T:Microsoft.FSharp.Core.MeasureAttribute=T:Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute-T:Microsoft.FSharp.Core.MatchFailureExceptionData0Data1Data2(T:Microsoft.FSharp.Core.LiteralAttributeLanguagePrimitives*T:Microsoft.FSharp.Core.LanguagePrimitivesGenericEqualityFM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEquality``1(``0,``0)GenericEqualityERHM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityER``1(``0,``0)GenericEqualityWithComparercompwM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityWithComparer``1(System.Collections.IEqualityComparer,``0,``0)GenericComparisonHM:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparison``1(``0,``0)GenericComparisonWithComparerqM:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparisonWithComparer``1(System.Collections.IComparer,``0,``0)GenericLessThanFM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLessThan``1(``0,``0)GenericGreaterThanIM:Microsoft.FSharp.Core.LanguagePrimitives.GenericGreaterThan``1(``0,``0)GenericLessOrEqualIM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLessOrEqual``1(``0,``0)GenericGreaterOrEqualLM:Microsoft.FSharp.Core.LanguagePrimitives.GenericGreaterOrEqual``1(``0,``0)GenericMinimumEM:Microsoft.FSharp.Core.LanguagePrimitives.GenericMinimum``1(``0,``0)GenericMaximumEM:Microsoft.FSharp.Core.LanguagePrimitives.GenericMaximum``1(``0,``0)PhysicalEqualityGM:Microsoft.FSharp.Core.LanguagePrimitives.PhysicalEquality``1(``0,``0) PhysicalHash?M:Microsoft.FSharp.Core.LanguagePrimitives.PhysicalHash``1(``0)GenericEqualityComparerBP:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityComparerGenericEqualityERComparerDP:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityERComparerGenericComparer:P:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparerFastGenericComparer IComparer`1AM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericComparer``1FastGenericComparerCanBeNullJM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericComparerCanBeNull``1FastGenericEqualityComparerIEqualityComparer`1IM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericEqualityComparer``1"FastLimitedGenericEqualityComparer^M:Microsoft.FSharp.Core.LanguagePrimitives.FastLimitedGenericEqualityComparer``1(System.Int32) GenericHash>M:Microsoft.FSharp.Core.LanguagePrimitives.GenericHash``1(``0)GenericLimitedHashRM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLimitedHash``1(System.Int32,``0)GenericHashWithComparercompareroM:Microsoft.FSharp.Core.LanguagePrimitives.GenericHashWithComparer``1(System.Collections.IEqualityComparer,``0) EnumOfValue>M:Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue``2(``0) EnumToValue>M:Microsoft.FSharp.Core.LanguagePrimitives.EnumToValue``2(``0)FloatWithMeasureMM:Microsoft.FSharp.Core.LanguagePrimitives.FloatWithMeasure``1(System.Double)Float32WithMeasureOM:Microsoft.FSharp.Core.LanguagePrimitives.Float32WithMeasure``1(System.Single)DecimalWithMeasurePM:Microsoft.FSharp.Core.LanguagePrimitives.DecimalWithMeasure``1(System.Decimal)Int32WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int32WithMeasure``1(System.Int32)Int64WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int64WithMeasure``1(System.Int64)Int16WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int16WithMeasure``1(System.Int16)SByteWithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.SByteWithMeasure``1(System.SByte) ParseInt32DM:Microsoft.FSharp.Core.LanguagePrimitives.ParseInt32(System.String) ParseUInt32EM:Microsoft.FSharp.Core.LanguagePrimitives.ParseUInt32(System.String) ParseInt64DM:Microsoft.FSharp.Core.LanguagePrimitives.ParseInt64(System.String) ParseUInt64EM:Microsoft.FSharp.Core.LanguagePrimitives.ParseUInt64(System.String)GenericZeroDynamic@M:Microsoft.FSharp.Core.LanguagePrimitives.GenericZeroDynamic``1GenericOneDynamic?M:Microsoft.FSharp.Core.LanguagePrimitives.GenericOneDynamic``1AdditionDynamicZThis function is for use by dynamic invocations of F# code and should not be used directlyFM:Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamic``3(``0,``1)CheckedAdditionDynamicMM:Microsoft.FSharp.Core.LanguagePrimitives.CheckedAdditionDynamic``3(``0,``1)MultiplyDynamicFM:Microsoft.FSharp.Core.LanguagePrimitives.MultiplyDynamic``3(``0,``1)CheckedMultiplyDynamicMM:Microsoft.FSharp.Core.LanguagePrimitives.CheckedMultiplyDynamic``3(``0,``1)DivideByIntDynamicRM:Microsoft.FSharp.Core.LanguagePrimitives.DivideByIntDynamic``1(``0,System.Int32) GenericZero9M:Microsoft.FSharp.Core.LanguagePrimitives.GenericZero``1 GenericOne8M:Microsoft.FSharp.Core.LanguagePrimitives.GenericOne``1anyToStringShowingNullKM:Microsoft.FSharp.Core.LanguagePrimitives.DivideByInt``1(``0,System.Int32) ErrorStrings7T:Microsoft.FSharp.Core.LanguagePrimitives.ErrorStringsInputSequenceEmptyStringIThis value is for use by compiled F# code and should not be used directlyInputArrayEmptyStringAddressOpNotFirstClassStringNoNegateMinValueStringInputMustBeNonNegativeStringIntrinsicOperators=T:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsop_Amp/In F# code, use 'e1 && e2' instead of 'e1 & e2'cM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_Amp(System.Boolean,System.Boolean) op_BooleanAndjM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_BooleanAnd(System.Boolean,System.Boolean)orOr0In F# code, use 'e1 || e2' instead of 'e1 or e2'_M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.Or(System.Boolean,System.Boolean) op_BooleanOriM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_BooleanOr(System.Boolean,System.Boolean) op_AddressOfRM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_AddressOf``1(``0)op_IntegerAddressOfYM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_IntegerAddressOf``1(``0)IntrinsicFunctions=T:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions UnboxGeneric\M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxGeneric``1(System.Object) UnboxFastYM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxFast``1(System.Object)TypeTestGeneric_M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric``1(System.Object) TypeTestFast\M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.TypeTestFast``1(System.Object)cM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetString(System.String,System.Int32)CreateInstanceOM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.CreateInstance``1 MakeDecimallowmediumhigh isNegativescale€ŒM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.MakeDecimal(System.Int32,System.Int32,System.Int32,System.Boolean,System.Byte)DisposeMM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.Dispose``1(``0)FailInitFM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.FailInitFailStaticInitLM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.FailStaticInit CheckThisOM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.CheckThis``1(``0)GetArray]M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray``1(``0[],System.Int32) GetArray2Dindex1index2qM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray2D``1(``0[0:,0:],System.Int32,System.Int32) GetArray3Dindex3€M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray3D``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32) GetArray4Dindex4€‘M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray4D``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)SetArrayaM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray``1(``0[],System.Int32,``0) SetArray2DuM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray2D``1(``0[0:,0:],System.Int32,System.Int32,``0) SetArray3D€…M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray3D``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32,``0) SetArray4D€•M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray4D``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32,``0) HashCompare6T:Microsoft.FSharp.Core.LanguagePrimitives.HashComparePhysicalHashIntrinsicfThis function is a primitive library routine used by optimized F# code and should not be used directlyTM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.PhysicalHashIntrinsic``1(``0)PhysicalEqualityIntrinsic\M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.PhysicalEqualityIntrinsic``1(``0,``0)GenericHashIntrinsicSM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericHashIntrinsic``1(``0)LimitedGenericHashIntrinsicgM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.LimitedGenericHashIntrinsic``1(System.Int32,``0) GenericHashWithComparerIntrinsic€„M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic``1(System.Collections.IEqualityComparer,``0)&GenericComparisonWithComparerIntrinsic€†M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic``1(System.Collections.IComparer,``0,``0)GenericComparisonIntrinsic]M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericComparisonIntrinsic``1(``0,``0)GenericEqualityIntrinsic[M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityIntrinsic``1(``0,``0)GenericEqualityERIntrinsic]M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic``1(``0,``0)$GenericEqualityWithComparerIntrinsic€ŒM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic``1(System.Collections.IEqualityComparer,``0,``0)GenericLessThanIntrinsic[M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericLessThanIntrinsic``1(``0,``0)GenericGreaterThanIntrinsic^M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericGreaterThanIntrinsic``1(``0,``0)GenericGreaterOrEqualIntrinsicaM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericGreaterOrEqualIntrinsic``1(``0,``0)GenericLessOrEqualIntrinsic^M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericLessOrEqualIntrinsic``1(``0,``0)FastHashTuple2€„M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple2``2(System.Collections.IEqualityComparer,System.Tuple{``0,``1})FastHashTuple3€ˆM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple3``3(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2})FastHashTuple4€ŒM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple4``4(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2,``3})FastHashTuple5€M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple5``5(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2,``3,``4})FastEqualsTuple2tuple1tuple2€œM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple2``2(System.Collections.IEqualityComparer,System.Tuple{``0,``1},System.Tuple{``0,``1})FastEqualsTuple3€¤M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple3``3(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2},System.Tuple{``0,``1,``2})FastEqualsTuple4€¬M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple4``4(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2,``3},System.Tuple{``0,``1,``2,``3})FastEqualsTuple5€´M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple5``5(System.Collections.IEqualityComparer,System.Tuple{``0,``1,``2,``3,``4},System.Tuple{``0,``1,``2,``3,``4})FastCompareTuple2€•M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple2``2(System.Collections.IComparer,System.Tuple{``0,``1},System.Tuple{``0,``1})FastCompareTuple3€M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple3``3(System.Collections.IComparer,System.Tuple{``0,``1,``2},System.Tuple{``0,``1,``2})FastCompareTuple4€¥M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple4``4(System.Collections.IComparer,System.Tuple{``0,``1,``2,``3},System.Tuple{``0,``1,``2,``3})FastCompareTuple5€­M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple5``5(System.Collections.IComparer,System.Tuple{``0,``1,``2,``3,``4},System.Tuple{``0,``1,``2,``3,``4})*T:Microsoft.FSharp.Core.InterfaceAttribute3T:Microsoft.FSharp.Core.GeneralizableValueAttribute#T:Microsoft.FSharp.Core.FuncConvertFormat`5 T:Microsoft.FSharp.Core.Format`5 T:Microsoft.FSharp.Core.Format`4&T:Microsoft.FSharp.Core.FSharpTypeFunc;T:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute$T:Microsoft.FSharp.Core.FSharpFunc`2ExtraTopLevelOperators.T:Microsoft.FSharp.Core.ExtraTopLevelOperatorsc/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/fslib-extra-pervasives.fs€±M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormat``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€µM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLine``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€¸M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€¼M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLineToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})PrintFormatToString€¥M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToString``1(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,System.String})€£M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToStringThenFail``2(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,``1})€ÒM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€ÖM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLineToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}) CreateSetSet`1hM:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateSet``1(System.Collections.Generic.IEnumerable{``0})asyncDefaultAsyncBuilderControl AsyncBuilderBP:Microsoft.FSharp.Core.ExtraTopLevelOperators.DefaultAsyncBuilder?M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToSingle``1(``0)?M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToDouble``1(``0)=M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToByte``1(``0)>M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToSByte``1(``0)dictCreateDictionary IDictionary`2 keyValuePairs€M:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateDictionary``2(System.Collections.Generic.IEnumerable{System.Tuple{``0,``1}})array2D CreateArray2DrowslM:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateArray2D``2(System.Collections.Generic.IEnumerable{``0}) op_SpliceSpliceExpression expressionoM:Microsoft.FSharp.Core.ExtraTopLevelOperators.SpliceExpression``1(Microsoft.FSharp.Quotations.FSharpExpr{``0})op_SpliceUntypedSpliceUntypedExpressionqM:Microsoft.FSharp.Core.ExtraTopLevelOperators.SpliceUntypedExpression``1(Microsoft.FSharp.Quotations.FSharpExpr)|Lazy| LazyPatternLazy`1OM:Microsoft.FSharp.Core.ExtraTopLevelOperators.LazyPattern``1(System.Lazy{``0})query4P:Microsoft.FSharp.Core.ExtraTopLevelOperators.query-T:Microsoft.FSharp.Core.ExperimentalAttribute6T:Microsoft.FSharp.Core.EqualityConditionalOnAttribute+T:Microsoft.FSharp.Core.EntryPointAttribute-T:Microsoft.FSharp.Core.DefaultValueAttribute4T:Microsoft.FSharp.Core.DefaultAugmentationAttribute0T:Microsoft.FSharp.Core.CustomOperationAttribute/T:Microsoft.FSharp.Core.CustomEqualityAttribute1T:Microsoft.FSharp.Core.CustomComparisonAttributeCompilerServicesTypeProviderAttributeDM:Microsoft.FSharp.Core.CompilerServices.TypeProviderAttribute.#ctorTypeProviderAssemblyAttributeLM:Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute.#ctor assemblyName[M:Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute.#ctor(System.String)get_AssemblyNameTypeProviderXmlDocAttribute commentTextYM:Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttribute.#ctor(System.String)get_CommentText'TypeProviderDefinitionLocationAttribute get_FilePath set_FilePathget_Lineset_Line get_Column set_Column&TypeProviderEditorHideMethodsAttributeUM:Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute.#ctorTypeProviderConfigsystemRuntimeContainsTypeget_ResolutionFolderLP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.ResolutionFolderset_ResolutionFolder[P:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.ResolutionFolder(System.String)get_RuntimeAssemblyKP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.RuntimeAssemblyset_RuntimeAssemblyZP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.RuntimeAssembly(System.String)get_ReferencedAssembliesPP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.ReferencedAssembliesset_ReferencedAssembliesaP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.ReferencedAssemblies(System.String[])get_TemporaryFolderKP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.TemporaryFolderset_TemporaryFolderZP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.TemporaryFolder(System.String)get_IsInvalidationSupportedSP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.IsInvalidationSupportedset_IsInvalidationSupportedcP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.IsInvalidationSupported(System.Boolean)get_IsHostedExecutionMP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.IsHostedExecutionset_IsHostedExecution]P:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.IsHostedExecution(System.Boolean) get_SystemRuntimeAssemblyVersionVersionXP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.SystemRuntimeAssemblyVersion set_SystemRuntimeAssemblyVersionhP:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.SystemRuntimeAssemblyVersion(System.Version)SystemRuntimeContainsTypedM:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig.SystemRuntimeContainsType(System.String)get_NamespaceNameIProvidedNamespaceIP:Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace.NamespaceNameGetNestedNamespacesOM:Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace.GetNestedNamespacesGetTypesDM:Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace.GetTypesResolveTypeNametypeNameZM:Microsoft.FSharp.Core.CompilerServices.IProvidedNamespace.ResolveTypeName(System.String) GetNamespaces ITypeProviderDM:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.GetNamespacesGetStaticParameters ParameterInfotypeWithoutArgumentsWM:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.GetStaticParameters(System.Type)ApplyStaticArgumentstypePathWithArgumentsstaticArgumentsxM:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.ApplyStaticArguments(System.Type,System.String[],System.Object[])GetInvokerExpressionsyntheticMethodBase€’M:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.GetInvokerExpression(System.Reflection.MethodBase,Microsoft.FSharp.Quotations.FSharpExpr[])get_InvalidateIEvent`2 EventHandler EventArgsAP:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.Invalidateadd_InvalidateZM:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.add_Invalidate(System.EventHandler)remove_Invalidate]M:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.remove_Invalidate(System.EventHandler)GetGeneratedAssemblyContentsoM:Microsoft.FSharp.Core.CompilerServices.ITypeProvider.GetGeneratedAssemblyContents(System.Reflection.Assembly)GetFreshEnumeratorQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/seq.fsiP/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/seq.fsGeneratedSequenceBase`1SM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.GetFreshEnumerator GenerateNextresultzM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.GenerateNext(System.Collections.Generic.IEnumerable{`0}@)CloseFM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.Closeget_CheckCloseKP:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.CheckCloseget_LastGeneratedNP:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.LastGeneratedFM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.#ctorDT:Microsoft.FSharp.Core.CompilerServices.TypeProviderXmlDocAttributeTypeProviderTypeAttributesSuppressRelocateIsErasedCT:Microsoft.FSharp.Core.CompilerServices.TypeProviderTypeAttributesOT:Microsoft.FSharp.Core.CompilerServices.TypeProviderEditorHideMethodsAttribute;T:Microsoft.FSharp.Core.CompilerServices.TypeProviderConfig>T:Microsoft.FSharp.Core.CompilerServices.TypeProviderAttributeFT:Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute7T:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers StructBox`1 get_ComparerEnumerateWhile€ÂM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateWhile``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.Boolean},System.Collections.Generic.IEnumerable{``0})EnumerateThenFinally€ÔM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateThenFinally``1(System.Collections.Generic.IEnumerable{``0},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})EnumerateFromFunctionscreatemoveNextcurrent€òM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateFromFunctions``2(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0},Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Core.FSharpFunc{``0,``1})EnumerateUsing CollectionxM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateUsing``3(``0,Microsoft.FSharp.Core.FSharpFunc{``0,``1}) CreateEventDelegateArgs addHandler removeHandler createHandler`M:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.FSharpFunc{System.Object,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}},``0})Measure1Measure2MeasureProduct`29T:Microsoft.FSharp.Core.CompilerServices.MeasureProduct`2 MeasureOne3T:Microsoft.FSharp.Core.CompilerServices.MeasureOneMeasureInverse`19T:Microsoft.FSharp.Core.CompilerServices.MeasureInverse`1@T:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`10T:Microsoft.FSharp.Core.CompilerMessageAttribute-T:Microsoft.FSharp.Core.CompiledNameAttribute6T:Microsoft.FSharp.Core.CompilationSourceNameAttributeFlagsAttributeSystem.FlagsAttribute;F:Microsoft.FSharp.Core.CompilationRepresentationFlags.NoneStatic=F:Microsoft.FSharp.Core.CompilationRepresentationFlags.StaticInstance?F:Microsoft.FSharp.Core.CompilationRepresentationFlags.Instance ModuleSuffixCF:Microsoft.FSharp.Core.CompilationRepresentationFlags.ModuleSuffixUseNullAsTrueValueIF:Microsoft.FSharp.Core.CompilationRepresentationFlags.UseNullAsTrueValueEventM:Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1.Reply(`0)MsgMailboxProcessor`1M:Microsoft.FSharp.Control.FSharpMailboxProcessor`1.#ctor(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Control.FSharpMailboxProcessor{`0},Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})M:Microsoft.FSharp.Control.FSharpMailboxProcessor`1.Start(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Control.FSharpMailboxProcessor{`0},Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})PostP:Microsoft.FSharp.Collections.FSharpList`1.Item(System.Int32)Constail`M:Microsoft.FSharp.Collections.FSharpList`1.Cons(`0,Microsoft.FSharp.Collections.FSharpList{`0})$T:Microsoft.FSharp.Collections.seq`1%T:Microsoft.FSharp.Collections.list`1 FSharpSet`1 ICollection`1*T:Microsoft.FSharp.Collections.FSharpSet`1 SetModule(T:Microsoft.FSharp.Collections.SetModuleemptyEmpty1M:Microsoft.FSharp.Collections.SetModule.Empty``1 singleton Singleton:M:Microsoft.FSharp.Collections.SetModule.Singleton``1(``0)`M:Microsoft.FSharp.Collections.SetModule.Add``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0})elementeM:Microsoft.FSharp.Collections.SetModule.Contains``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0})isSubsetIsSubset€M:Microsoft.FSharp.Collections.SetModule.IsSubset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})isProperSubsetIsProperSubset€“M:Microsoft.FSharp.Collections.SetModule.IsProperSubset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) isSuperset IsSuperset€M:Microsoft.FSharp.Collections.SetModule.IsSuperset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})isProperSupersetIsProperSuperset€•M:Microsoft.FSharp.Collections.SetModule.IsProperSuperset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})^M:Microsoft.FSharp.Collections.SetModule.Count``1(Microsoft.FSharp.Collections.FSharpSet{``0})€”M:Microsoft.FSharp.Collections.SetModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})€”M:Microsoft.FSharp.Collections.SetModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})€†M:Microsoft.FSharp.Collections.SetModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpSet{``0})€±M:Microsoft.FSharp.Collections.SetModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpSet{``0})€µM:Microsoft.FSharp.Collections.SetModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},Microsoft.FSharp.Collections.FSharpSet{``0},``1)€”M:Microsoft.FSharp.Collections.SetModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0}) intersect Intersect€ŽM:Microsoft.FSharp.Collections.SetModule.Intersect``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) intersectMany IntersectManysets€ŽM:Microsoft.FSharp.Collections.SetModule.IntersectMany``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpSet{``0}})unionUnion€ŠM:Microsoft.FSharp.Collections.SetModule.Union``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) unionMany UnionMany€ŠM:Microsoft.FSharp.Collections.SetModule.UnionMany``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpSet{``0}})isEmptyIsEmpty`M:Microsoft.FSharp.Collections.SetModule.IsEmpty``1(Microsoft.FSharp.Collections.FSharpSet{``0})€¡M:Microsoft.FSharp.Collections.SetModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Collections.FSharpSet{``0})€—M:Microsoft.FSharp.Collections.SetModule.Partition``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})removecM:Microsoft.FSharp.Collections.SetModule.Remove``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0}) minElement MinElementcM:Microsoft.FSharp.Collections.SetModule.MinElement``1(Microsoft.FSharp.Collections.FSharpSet{``0}) maxElement MaxElementcM:Microsoft.FSharp.Collections.SetModule.MaxElement``1(Microsoft.FSharp.Collections.FSharpSet{``0})ofListOfList`M:Microsoft.FSharp.Collections.SetModule.OfList``1(Microsoft.FSharp.Collections.FSharpList{``0})_M:Microsoft.FSharp.Collections.SetModule.ToList``1(Microsoft.FSharp.Collections.FSharpSet{``0})OfArray:M:Microsoft.FSharp.Collections.SetModule.OfArray``1(``0[])`M:Microsoft.FSharp.Collections.SetModule.ToArray``1(Microsoft.FSharp.Collections.FSharpSet{``0})toSeqToSeq^M:Microsoft.FSharp.Collections.SetModule.ToSeq``1(Microsoft.FSharp.Collections.FSharpSet{``0})ofSeqOfSeq^M:Microsoft.FSharp.Collections.SetModule.OfSeq``1(System.Collections.Generic.IEnumerable{``0}) difference Difference€M:Microsoft.FSharp.Collections.SetModule.Difference``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) SeqModule(T:Microsoft.FSharp.Collections.SeqModuleappendAppend€‹M:Microsoft.FSharp.Collections.SeqModule.Append``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})averageAverage`M:Microsoft.FSharp.Collections.SeqModule.Average``1(System.Collections.Generic.IEnumerable{``0})€ŒM:Microsoft.FSharp.Collections.SeqModule.AverageBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})cacheCache^M:Microsoft.FSharp.Collections.SeqModule.Cache``1(System.Collections.Generic.IEnumerable{``0})castPM:Microsoft.FSharp.Collections.SeqModule.Cast``1(System.Collections.IEnumerable)€­M:Microsoft.FSharp.Collections.SeqModule.Choose``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})€ŠM:Microsoft.FSharp.Collections.SeqModule.Collect``3(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0}) compareWith CompareWith€éM:Microsoft.FSharp.Collections.SeqModule.CompareWith``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,System.Int32}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})sources_M:Microsoft.FSharp.Collections.SeqModule.Concat``2(System.Collections.Generic.IEnumerable{``0})countByCountBy€ŠM:Microsoft.FSharp.Collections.SeqModule.CountBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})delay€›M:Microsoft.FSharp.Collections.SeqModule.Delay``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable{``0}})aM:Microsoft.FSharp.Collections.SeqModule.Distinct``1(System.Collections.Generic.IEnumerable{``0}) distinctBy DistinctBy€M:Microsoft.FSharp.Collections.SeqModule.DistinctBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})1M:Microsoft.FSharp.Collections.SeqModule.Empty``1€”M:Microsoft.FSharp.Collections.SeqModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})exists2Exists2€çM:Microsoft.FSharp.Collections.SeqModule.Exists2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})€”M:Microsoft.FSharp.Collections.SeqModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})€“M:Microsoft.FSharp.Collections.SeqModule.Where``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})€’M:Microsoft.FSharp.Collections.SeqModule.Find``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0}) findIndex FindIndex€—M:Microsoft.FSharp.Collections.SeqModule.FindIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})€±M:Microsoft.FSharp.Collections.SeqModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,System.Collections.Generic.IEnumerable{``0})€”M:Microsoft.FSharp.Collections.SeqModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})forall2ForAll2€çM:Microsoft.FSharp.Collections.SeqModule.ForAll2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})€ŠM:Microsoft.FSharp.Collections.SeqModule.GroupBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})]M:Microsoft.FSharp.Collections.SeqModule.Head``1(System.Collections.Generic.IEnumerable{``0})]M:Microsoft.FSharp.Collections.SeqModule.Last``1(System.Collections.Generic.IEnumerable{``0})cM:Microsoft.FSharp.Collections.SeqModule.ExactlyOne``1(System.Collections.Generic.IEnumerable{``0})`M:Microsoft.FSharp.Collections.SeqModule.IsEmpty``1(System.Collections.Generic.IEnumerable{``0})wM:Microsoft.FSharp.Collections.SeqModule.Initialize``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0}) initInfiniteInitializeInfiniterM:Microsoft.FSharp.Collections.SeqModule.InitializeInfinite``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0})€¡M:Microsoft.FSharp.Collections.SeqModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},System.Collections.Generic.IEnumerable{``0})€×M:Microsoft.FSharp.Collections.SeqModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.IEnumerable{``0})iter2Iterate2€ôM:Microsoft.FSharp.Collections.SeqModule.Iterate2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})_M:Microsoft.FSharp.Collections.SeqModule.Length``1(System.Collections.Generic.IEnumerable{``0})€†M:Microsoft.FSharp.Collections.SeqModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})Map2€ÙM:Microsoft.FSharp.Collections.SeqModule.Map2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})€¼M:Microsoft.FSharp.Collections.SeqModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},System.Collections.Generic.IEnumerable{``0})\M:Microsoft.FSharp.Collections.SeqModule.Max``1(System.Collections.Generic.IEnumerable{``0})€ˆM:Microsoft.FSharp.Collections.SeqModule.MaxBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})\M:Microsoft.FSharp.Collections.SeqModule.Min``1(System.Collections.Generic.IEnumerable{``0})€ˆM:Microsoft.FSharp.Collections.SeqModule.MinBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})GetiM:Microsoft.FSharp.Collections.SeqModule.Get``1(System.Int32,System.Collections.Generic.IEnumerable{``0}):M:Microsoft.FSharp.Collections.SeqModule.OfArray``1(``0[])`M:Microsoft.FSharp.Collections.SeqModule.OfList``1(Microsoft.FSharp.Collections.FSharpList{``0})aM:Microsoft.FSharp.Collections.SeqModule.Pairwise``1(System.Collections.Generic.IEnumerable{``0})pickPick€«M:Microsoft.FSharp.Collections.SeqModule.Pick``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})readonlyReadOnlyaM:Microsoft.FSharp.Collections.SeqModule.ReadOnly``1(System.Collections.Generic.IEnumerable{``0})reduceReduce reduction€¯M:Microsoft.FSharp.Collections.SeqModule.Reduce``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},System.Collections.Generic.IEnumerable{``0})€±M:Microsoft.FSharp.Collections.SeqModule.Scan``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,System.Collections.Generic.IEnumerable{``0}):M:Microsoft.FSharp.Collections.SeqModule.Singleton``1(``0)jM:Microsoft.FSharp.Collections.SeqModule.Skip``1(System.Int32,System.Collections.Generic.IEnumerable{``0})€—M:Microsoft.FSharp.Collections.SeqModule.SkipWhile``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})sortSort]M:Microsoft.FSharp.Collections.SeqModule.Sort``1(System.Collections.Generic.IEnumerable{``0})€‰M:Microsoft.FSharp.Collections.SeqModule.SortBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})sumSum\M:Microsoft.FSharp.Collections.SeqModule.Sum``1(System.Collections.Generic.IEnumerable{``0})€ˆM:Microsoft.FSharp.Collections.SeqModule.SumBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.IEnumerable{``0})jM:Microsoft.FSharp.Collections.SeqModule.Take``1(System.Int32,System.Collections.Generic.IEnumerable{``0})€—M:Microsoft.FSharp.Collections.SeqModule.TakeWhile``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})`M:Microsoft.FSharp.Collections.SeqModule.ToArray``1(System.Collections.Generic.IEnumerable{``0})_M:Microsoft.FSharp.Collections.SeqModule.ToList``1(System.Collections.Generic.IEnumerable{``0})tryFind€•M:Microsoft.FSharp.Collections.SeqModule.TryFind``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0}) tryFindIndex TryFindIndex€šM:Microsoft.FSharp.Collections.SeqModule.TryFindIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})tryPickTryPick€®M:Microsoft.FSharp.Collections.SeqModule.TryPick``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})nM:Microsoft.FSharp.Collections.SeqModule.Truncate``1(System.Int32,System.Collections.Generic.IEnumerable{``0})unfoldUnfold€—M:Microsoft.FSharp.Collections.SeqModule.Unfold``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{System.Tuple{``1,``0}}},``0)windowedWindowed windowSizenM:Microsoft.FSharp.Collections.SeqModule.Windowed``1(System.Int32,System.Collections.Generic.IEnumerable{``0})Zip€ˆM:Microsoft.FSharp.Collections.SeqModule.Zip``2(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})Zip3source3€µM:Microsoft.FSharp.Collections.SeqModule.Zip3``3(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Collections.Generic.IEnumerable{``2}) ResizeArray`1,T:Microsoft.FSharp.Collections.ResizeArray`1 FSharpMap`2*T:Microsoft.FSharp.Collections.FSharpMap`2 MapModule(T:Microsoft.FSharp.Collections.MapModuletablehM:Microsoft.FSharp.Collections.MapModule.Add``2(``0,``1,Microsoft.FSharp.Collections.FSharpMap{``0,``1})rM:Microsoft.FSharp.Collections.MapModule.OfList``2(Microsoft.FSharp.Collections.FSharpList{System.Tuple{``0,``1}})LM:Microsoft.FSharp.Collections.MapModule.OfArray``2(System.Tuple{``0,``1}[])pM:Microsoft.FSharp.Collections.MapModule.OfSeq``2(System.Collections.Generic.IEnumerable{System.Tuple{``0,``1}})bM:Microsoft.FSharp.Collections.MapModule.ToSeq``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})cM:Microsoft.FSharp.Collections.MapModule.ToList``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})dM:Microsoft.FSharp.Collections.MapModule.ToArray``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})dM:Microsoft.FSharp.Collections.MapModule.IsEmpty``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})1M:Microsoft.FSharp.Collections.MapModule.Empty``2eM:Microsoft.FSharp.Collections.MapModule.Find``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ØM:Microsoft.FSharp.Collections.MapModule.TryPick``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpOption{``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÕM:Microsoft.FSharp.Collections.MapModule.Pick``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpOption{``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ßM:Microsoft.FSharp.Collections.MapModule.FoldBack``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1},``2)€ÛM:Microsoft.FSharp.Collections.MapModule.Fold``3(Microsoft.FSharp.Core.FSharpFunc{``2,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}}},``2,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ËM:Microsoft.FSharp.Collections.MapModule.Iterate``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€¾M:Microsoft.FSharp.Collections.MapModule.Exists``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€¾M:Microsoft.FSharp.Collections.MapModule.Filter``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€¾M:Microsoft.FSharp.Collections.MapModule.ForAll``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€°M:Microsoft.FSharp.Collections.MapModule.Map``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) containsKeylM:Microsoft.FSharp.Collections.MapModule.ContainsKey``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÁM:Microsoft.FSharp.Collections.MapModule.Partition``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})gM:Microsoft.FSharp.Collections.MapModule.Remove``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})hM:Microsoft.FSharp.Collections.MapModule.TryFind``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})findKeyFindKey€¿M:Microsoft.FSharp.Collections.MapModule.FindKey``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) tryFindKey TryFindKey€ÂM:Microsoft.FSharp.Collections.MapModule.TryFindKey``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) FSharpList`1op_NilTail op_ColonColon+T:Microsoft.FSharp.Collections.FSharpList`1 ListModuleR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/list.fsi)T:Microsoft.FSharp.Collections.ListModuleQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/list.fs€ŽM:Microsoft.FSharp.Collections.ListModule.Append``1(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``0})bM:Microsoft.FSharp.Collections.ListModule.Average``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŽM:Microsoft.FSharp.Collections.ListModule.AverageBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})€¯M:Microsoft.FSharp.Collections.ListModule.Choose``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})€µM:Microsoft.FSharp.Collections.ListModule.Collect``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Collections.FSharpList{``1}},Microsoft.FSharp.Collections.FSharpList{``0})lists€‰M:Microsoft.FSharp.Collections.ListModule.Concat``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpList{``0}})2M:Microsoft.FSharp.Collections.ListModule.Empty``1€–M:Microsoft.FSharp.Collections.ListModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€êM:Microsoft.FSharp.Collections.ListModule.Exists2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€”M:Microsoft.FSharp.Collections.ListModule.Find``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€™M:Microsoft.FSharp.Collections.ListModule.FindIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€–M:Microsoft.FSharp.Collections.ListModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€³M:Microsoft.FSharp.Collections.ListModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpList{``0})fold2Fold2M:Microsoft.FSharp.Collections.ListModule.Fold2``3(Microsoft.FSharp.Core.FSharpFunc{``2,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}}},``2,Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€·M:Microsoft.FSharp.Collections.ListModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},Microsoft.FSharp.Collections.FSharpList{``0},``1) foldBack2 FoldBack2 M:Microsoft.FSharp.Collections.ListModule.FoldBack2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``2}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},``2)€–M:Microsoft.FSharp.Collections.ListModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€êM:Microsoft.FSharp.Collections.ListModule.ForAll2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})_M:Microsoft.FSharp.Collections.ListModule.Head``1(Microsoft.FSharp.Collections.FSharpList{``0})xM:Microsoft.FSharp.Collections.ListModule.Initialize``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0})bM:Microsoft.FSharp.Collections.ListModule.IsEmpty``1(Microsoft.FSharp.Collections.FSharpList{``0})€£M:Microsoft.FSharp.Collections.ListModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Collections.FSharpList{``0})€÷M:Microsoft.FSharp.Collections.ListModule.Iterate2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€ÙM:Microsoft.FSharp.Collections.ListModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpList{``0})iteri2IterateIndexed2-M:Microsoft.FSharp.Collections.ListModule.IterateIndexed2``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})aM:Microsoft.FSharp.Collections.ListModule.Length``1(Microsoft.FSharp.Collections.FSharpList{``0})€ˆM:Microsoft.FSharp.Collections.ListModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})€ÜM:Microsoft.FSharp.Collections.ListModule.Map2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})map3Map3list3/M:Microsoft.FSharp.Collections.ListModule.Map3``4(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``3}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},Microsoft.FSharp.Collections.FSharpList{``2})€¾M:Microsoft.FSharp.Collections.ListModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},Microsoft.FSharp.Collections.FSharpList{``0})mapi2 MapIndexed2M:Microsoft.FSharp.Collections.ListModule.MapIndexed2``3(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})^M:Microsoft.FSharp.Collections.ListModule.Max``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŠM:Microsoft.FSharp.Collections.ListModule.MaxBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})^M:Microsoft.FSharp.Collections.ListModule.Min``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŠM:Microsoft.FSharp.Collections.ListModule.MinBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})kM:Microsoft.FSharp.Collections.ListModule.Get``1(Microsoft.FSharp.Collections.FSharpList{``0},System.Int32);M:Microsoft.FSharp.Collections.ListModule.OfArray``1(``0[])_M:Microsoft.FSharp.Collections.ListModule.OfSeq``1(System.Collections.Generic.IEnumerable{``0})€™M:Microsoft.FSharp.Collections.ListModule.Partition``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€­M:Microsoft.FSharp.Collections.ListModule.Pick``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})Permute€žM:Microsoft.FSharp.Collections.ListModule.Permute``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,System.Int32},Microsoft.FSharp.Collections.FSharpList{``0})€±M:Microsoft.FSharp.Collections.ListModule.Reduce``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},Microsoft.FSharp.Collections.FSharpList{``0}) reduceBack ReduceBack€µM:Microsoft.FSharp.Collections.ListModule.ReduceBack``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},Microsoft.FSharp.Collections.FSharpList{``0})initialHM:Microsoft.FSharp.Collections.ListModule.Replicate``1(System.Int32,``0)ReversebM:Microsoft.FSharp.Collections.ListModule.Reverse``1(Microsoft.FSharp.Collections.FSharpList{``0})€³M:Microsoft.FSharp.Collections.ListModule.Scan``2(Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpList{``0})scanBackScanBack€·M:Microsoft.FSharp.Collections.ListModule.ScanBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},Microsoft.FSharp.Collections.FSharpList{``0},``1)SortWith€¼M:Microsoft.FSharp.Collections.ListModule.SortWith``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,System.Int32}},Microsoft.FSharp.Collections.FSharpList{``0})€‹M:Microsoft.FSharp.Collections.ListModule.SortBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})_M:Microsoft.FSharp.Collections.ListModule.Sort``1(Microsoft.FSharp.Collections.FSharpList{``0})^M:Microsoft.FSharp.Collections.ListModule.Sum``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŠM:Microsoft.FSharp.Collections.ListModule.SumBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})_M:Microsoft.FSharp.Collections.ListModule.Tail``1(Microsoft.FSharp.Collections.FSharpList{``0})bM:Microsoft.FSharp.Collections.ListModule.ToArray``1(Microsoft.FSharp.Collections.FSharpList{``0})`M:Microsoft.FSharp.Collections.ListModule.ToSeq``1(Microsoft.FSharp.Collections.FSharpList{``0})€°M:Microsoft.FSharp.Collections.ListModule.TryPick``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})€—M:Microsoft.FSharp.Collections.ListModule.TryFind``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€œM:Microsoft.FSharp.Collections.ListModule.TryFindIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})UnziprM:Microsoft.FSharp.Collections.ListModule.Unzip``2(Microsoft.FSharp.Collections.FSharpList{System.Tuple{``0,``1}})Unzip3wM:Microsoft.FSharp.Collections.ListModule.Unzip3``3(Microsoft.FSharp.Collections.FSharpList{System.Tuple{``0,``1,``2}})€‹M:Microsoft.FSharp.Collections.ListModule.Zip``2(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€¹M:Microsoft.FSharp.Collections.ListModule.Zip3``3(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},Microsoft.FSharp.Collections.FSharpList{``2}) HashIdentityY/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/collections.fsi+T:Microsoft.FSharp.Collections.HashIdentity StructuralX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/collections.fs9M:Microsoft.FSharp.Collections.HashIdentity.Structural``1LimitedStructural Reference8M:Microsoft.FSharp.Collections.HashIdentity.Reference``1 FromFunctionshasherequality€ËM:Microsoft.FSharp.Collections.HashIdentity.FromFunctions``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Int32},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean}})ComparisonIdentity1T:Microsoft.FSharp.Collections.ComparisonIdentity?M:Microsoft.FSharp.Collections.ComparisonIdentity.Structural``1 FromFunction€›M:Microsoft.FSharp.Collections.ComparisonIdentity.FromFunction``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,System.Int32}}) ArrayModuleS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array.fsi*T:Microsoft.FSharp.Collections.ArrayModuleR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array.fsarray1array2AM:Microsoft.FSharp.Collections.ArrayModule.Append``1(``0[],``0[])M:Microsoft.FSharp.Collections.ArrayModule.Zip``2(``0[],``1[])array3EM:Microsoft.FSharp.Collections.ArrayModule.Zip3``3(``0[],``1[],``2[])3T:Microsoft.FSharp.Collections.ArrayModule.Parallel€’M:Microsoft.FSharp.Collections.ArrayModule.Parallel.Choose``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},``0[])qM:Microsoft.FSharp.Collections.ArrayModule.Parallel.Collect``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1[]},``0[])kM:Microsoft.FSharp.Collections.ArrayModule.Parallel.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},``0[])€¡M:Microsoft.FSharp.Collections.ArrayModule.Parallel.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},``0[])€†M:Microsoft.FSharp.Collections.ArrayModule.Parallel.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},``0[])€¼M:Microsoft.FSharp.Collections.ArrayModule.Parallel.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}},``0[])€‚M:Microsoft.FSharp.Collections.ArrayModule.Parallel.Initialize``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0})|M:Microsoft.FSharp.Collections.ArrayModule.Parallel.Partition``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},``0[]) Array4DModuleT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array3.fsi,T:Microsoft.FSharp.Collections.Array4DModuleS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array3.fslength1length2length3length4oM:Microsoft.FSharp.Collections.Array4DModule.Create``1(System.Int32,System.Int32,System.Int32,System.Int32,``0)/M:Microsoft.FSharp.Collections.Array4DModule.Initialize``1(System.Int32,System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0}}}})Length1IM:Microsoft.FSharp.Collections.Array4DModule.Length1``1(``0[0:,0:,0:,0:])Length2IM:Microsoft.FSharp.Collections.Array4DModule.Length2``1(``0[0:,0:,0:,0:])Length3IM:Microsoft.FSharp.Collections.Array4DModule.Length3``1(``0[0:,0:,0:,0:])Length4IM:Microsoft.FSharp.Collections.Array4DModule.Length4``1(``0[0:,0:,0:,0:])oM:Microsoft.FSharp.Collections.Array4DModule.ZeroCreate``1(System.Int32,System.Int32,System.Int32,System.Int32)yM:Microsoft.FSharp.Collections.Array4DModule.Get``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)}M:Microsoft.FSharp.Collections.Array4DModule.Set``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32,``0) Array3DModule,T:Microsoft.FSharp.Collections.Array3DModulebM:Microsoft.FSharp.Collections.Array3DModule.Create``1(System.Int32,System.Int32,System.Int32,``0)€óM:Microsoft.FSharp.Collections.Array3DModule.Initialize``1(System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0}}})iM:Microsoft.FSharp.Collections.Array3DModule.Get``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32)€‡M:Microsoft.FSharp.Collections.Array3DModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},``0[0:,0:,0:])M:Microsoft.FSharp.Collections.Array3DModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}}}},``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length1``1(``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length2``1(``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length3``1(``0[0:,0:,0:])lM:Microsoft.FSharp.Collections.Array3DModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},``0[0:,0:,0:])M:Microsoft.FSharp.Collections.Array3DModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}}}},``0[0:,0:,0:])mM:Microsoft.FSharp.Collections.Array3DModule.Set``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32,``0)bM:Microsoft.FSharp.Collections.Array3DModule.ZeroCreate``1(System.Int32,System.Int32,System.Int32) Array2DModuleT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array2.fsi,T:Microsoft.FSharp.Collections.Array2DModulebase1Base1S/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array2.fsAM:Microsoft.FSharp.Collections.Array2DModule.Base1``1(``0[0:,0:])base2Base2AM:Microsoft.FSharp.Collections.Array2DModule.Base2``1(``0[0:,0:])@M:Microsoft.FSharp.Collections.Array2DModule.Copy``1(``0[0:,0:]) sourceIndex1 sourceIndex2 targetIndex1 targetIndex2€›M:Microsoft.FSharp.Collections.Array2DModule.CopyTo``1(``0[0:,0:],System.Int32,System.Int32,``0[0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)€·M:Microsoft.FSharp.Collections.Array2DModule.Initialize``1(System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0}})UM:Microsoft.FSharp.Collections.Array2DModule.Create``1(System.Int32,System.Int32,``0)UM:Microsoft.FSharp.Collections.Array2DModule.ZeroCreate``1(System.Int32,System.Int32) initBasedInitializeBased€ÖM:Microsoft.FSharp.Collections.Array2DModule.InitializeBased``1(System.Int32,System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0}}) createBased CreateBasedtM:Microsoft.FSharp.Collections.Array2DModule.CreateBased``1(System.Int32,System.Int32,System.Int32,System.Int32,``0)zeroCreateBasedZeroCreateBasedtM:Microsoft.FSharp.Collections.Array2DModule.ZeroCreateBased``1(System.Int32,System.Int32,System.Int32,System.Int32)€„M:Microsoft.FSharp.Collections.Array2DModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},``0[0:,0:])€éM:Microsoft.FSharp.Collections.Array2DModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}}},``0[0:,0:])CM:Microsoft.FSharp.Collections.Array2DModule.Length1``1(``0[0:,0:])CM:Microsoft.FSharp.Collections.Array2DModule.Length2``1(``0[0:,0:])iM:Microsoft.FSharp.Collections.Array2DModule.Map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},``0[0:,0:])€ÎM:Microsoft.FSharp.Collections.Array2DModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}}},``0[0:,0:])rebaseRebaseBM:Microsoft.FSharp.Collections.Array2DModule.Rebase``1(``0[0:,0:])]M:Microsoft.FSharp.Collections.Array2DModule.Set``1(``0[0:,0:],System.Int32,System.Int32,``0)YM:Microsoft.FSharp.Collections.Array2DModule.Get``1(``0[0:,0:],System.Int32,System.Int32)I/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core'     pgg€g€–g€Ö€ù€ù€ý€ù€ù~€ù¡€ù‚€ù‚V‚_‚_‚a‚_‚a‚b‚_‚a‚€‚Œ‚Œ‚Ž‚¯‚±‚±ƒa‚±ƒaƒ‚±ƒaƒd‚±ƒaƒŠ‚±ƒaƒ†‚±ƒaƒ‚‚±ƒaƒ~‚±ƒaƒz‚±ƒaƒv‚±ƒaƒs‚±ƒaƒq‚±ƒaƒµ‚±ƒaƒµƒØ‚±‚µ‚±ƒë‚±ƒëƒì‚±ƒëƒï‚±‚¹‚±ƒó‚±„<„b„b„d„b„d„e„b„d„e„f„b„d„e„f„g„b„d„e„f„l„b„d„e„f„o„b„d„e„f„q„b„d„e„fƒc„b„d„e„f„v„b„d„e„f„y„b„d„e„f„|„b„d„e„f„„b„d„e„f„‚„b„d„e„f„…„b„d„e„f„ˆ„b„d„e„f„‹„b„d„e„f„Ž„b„d„e„f„‘„b„d„e„f„”„b„d„e„f„—„b„d„e„f„™„b„d„e„fP„b„d„e„f„ž„b„d„e„f„¡„b„d„e„f„¤„b„d„e„f„§„b„d„e„f„ª„b„d„e„f„­„b„d„e„f„°„b„d„e„i„b„d„e„i„j„b„d„e„i„´„b„d„e„i„m„b„d„e„ic„b„d„e„i„r„b„d„e„i„t„b„d„e„i„w„b„d„e„i„z„b„d„e„i„}„b„d„e„i„€„b„d„e„i„ƒ„b„d„e„i„†„b„d„e„i„‰„b„d„e„i„Œ„b„d„e„i„„b„d„e„i„’„b„d„e„i„—„b„d„e„i„•„b„d„e„i„š„b„d„e„i„œ„b„d„e„i„±„b„d„e„i„Ÿ„b„d„e„i„¢„b„d„e„i„¥„b„d„e„i„¨„b„d„e„i„«„b„d„e„i„®   „Z …È ‚F ‚> ‚6  …Ó …× ‚+ …Û Q  ‚• ‚” …å …ç …é ‚B ‚: …ï ‚2 [ …ô …ö …ø ‚ ‚# €Ô …ÿ † „] ‚' … †  †  † €‡ † † † „ú ‚– …à …g … … „ç †& …H €ô †_ …0 ‚ „á „þ …µ ‚ì ‡ ‡‡% ‡‡. ‡‡* ‡‡ ‡‡! ‡‡  „Ù „Ô €™ …¹ ‡C ‡d ‡d‡f ‡d‡k ‡d‡o ‡d‡s ‡{ ‡{ˆ« ‡{‰1 ‡{‰; ‰M ‰M‰O ` ‚— b „h „ê …Œ „ñ ‰j ‰j‰Í ‰j‰Õ ‰j‰æ ‰jŠ „ì …2 …­ ŠR ‡5 …Ž …< …’ ŠX …^ „ã „ü …* „÷ ‚Ô …$ …& ŠŽ ŠŽŠ– ŠŽŠ÷ ŠŽŠ¡ ŠŽŠš ŠŽŠ£ ŠŽŠ ŠŽŠ‘ ŠŽƒa ŠŽƒa‹ ŠŽ‹ ŠŽ‹ ŠŽ‹ ŠŽŠÏ ŠŽŠÅ ŠŽŠê …j ™ …U £ ¢ …G …c „å  …‹ …Š …‰ …ˆ ‚Z … „õ „ó …8 ƒô „ï €öŠiŠiŒ.ŠiŒ0ŠiŒ;Ši‹ñŠiŠ‚ŠiŒ`ŠiŠÝŠiŒŠiŒŠiŒŠiŒ ŠiŒ%ŠiŒsŠiŒŠiŒ…Ši‹Ši‹îŠiŠjŠi‹‚99 9:9Še9ŒÙ9!9š9Œº9ž9ŒÆ9Ä9Ž9Ž)9Ž.9Ž.‹¡9Ž—9ެ9ŽºJ       9: Q [ `  begh  puvg€€„ €‡9€Œ€g€Žg€‘g€– €™g€¨g€´g€»g€Ö €ôg €ö€ù€ý€ù9 g1€ù~g …gŒ ™€ùš  ¢ £€ù¡€ù‚ ‚ ‚# ‚' ‚+ ‚2 ‚6 ‚: ‚> ‚B ‚F ‚Z€ù‚V‚_‚a‚b‚_‚a‚€ ‚ ‚” ‚• ‚– ‚—‚Œ‚Ž‚±‚µ‚±‚¹‚±‚¼9€Œ‚¾9‚¿‚±‚Î ‚Ô ‚삱‚úƒ$ƒ%‚±ƒaƒd9ƒl9€Œƒn‚±ƒaƒq‚±ƒaƒs‚±ƒaƒv‚±ƒaƒz‚±ƒaƒ~‚±ƒaƒ‚‚±ƒaƒ†‚±ƒaƒŠ‚±ƒ’ƒ“‚±ƒaƒ‚±ƒ’ƒšƒ£‚±ƒa‚±ƒaƒµ9€ŒƒÊ‚±ƒaƒµƒØ‚±‚±ƒëƒì‚±ƒëƒï ƒô‚±ƒó‚±„< „Z „] „h„b„d„e„i„j„b„d„e„i„m„b„d„e„ic„b„d„e„i„r„b„d„e„i„t„b„d„e„i„w„b„d„e„i„z„b„d„e„i„}„b„d„e„i„€„b„d„e„i„ƒ„b„d„e„i„†„b„d„e„i„‰„b„d„e„i„Œ„b„d„e„i„„b„d„e„i„’„b„d„e„i„•„b„d„e„i„—„b„d„e„i„š„b„d„e„i„œ„b„d„e„i„Ÿ„b„d„e„i„¢„b„d„e„i„¥„b„d„e„i„¨„b„d„e„i„«„b„d„e„i„®„b„d„e„i„± „Ô „Ù „á „ã „å „ç „ê „ì „ï „ñ „ó „õ „÷ „ú „ü „þ … … …$ …& …* …0 …2 …8 …< …G …H …U …^ …c …g …j ……‚9…ƒ9…„9…†9…‡ …ˆ …‰ …Š …‹ €Ô …Œ …Ž …’…–…¬ …­ …µ …¹ …Ã…Æ…É…Ë…Í…Ï…Ñ…Ô…Ù…Þ…ã…ë…í…ñ…û…ý††† † ††† †&†\†c†d †_‡ ‡‡ ‡ ‡‡  ‡‡! ‡‡% ‡‡* ‡‡. ‡5 ‡C ‡d‡f ‡d‡k ‡d‡o ‡d‡s ‡d ‡{‡Ã …Ûuˆ'ˆ=9€Œˆ¨ ‡{ˆ« † † † ‡{‰1 ‡{‰; ‰M‰O ‰j9€Œ‰Ž9€Œ‰“ …ö …ø † …å …é …ï …× ‰j‰Í ‰j‰Õ † ‰j‰æ ‰jŠ ŠX9ŠeŠiŠj …Ó …ÿ9€ŒŠrŠiŠ‚ ŠŽŠ ŠŽŠ‘ ŠŽŠ– ŠŽŠš ŠŽŠ¡ ŠŽŠ£о ŠŽŠÅ ŠŽŠÏgŠÒŠiŠÝŠÞŠß ŠŽŠê ŠŽ ŠŽŠ÷ ŠŽƒa‹ ŠŽƒa‹‹!Ši‹‹€‹Ši‹‚‹€‹‰‹Š‹€‹‰‹‹‹“‹€‹©‹€‹µ‹¹‹ÃŠi‹îŠi‹ñŠiŒŠiŒŠiŒŠiŒŠiŒ ŠiŒ%Š‚Œ3Œ4Œ3Œ5ŠiŒ0Œ3Œ8Œ9Œ?ŠiŒ;ŠiŠiŒ`ŒmŠiŒsuŒˆŠiŒ…9Œº9ŒÆ99€ŒŒ×9ŒÙ9!9€ŒŒÆ9ž9Ä9Ž9Ž)9Ž.9Ž.‹¡9Ž—9ެ9Žº€š  !"$&'()+,.-123456789:?@BCFIJKLNQ]^bfijk€ˆ€‰€Š€‹€Œ€€Ž€€€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¨€©€ª€«€°€²€¹€º€»€¼€½€¾€¿€À€Á€Â€Ã€Ä€Å€Æ€Ç€È€É€Ê€Ë€Ì€Î€Ï€Ñ€Ò€Ô€æ€ç  !"#-.0168ÿ uPÜt' u F   t' uÔs' u  %%Þ  ! % %4—  !  €î€î €ñ€ñÿ¤@ 44  t t ‘  w w €Ž €Žÿ¤@ y y € €ÿ¤@ yy ~ ~ €ˆ €ˆÿ¤@ ~~ € € €Š €Šÿ¤@ €€!" €ƒ €ƒ €‹ €‹ÿ¤@ €ƒ€ƒ#$ €… €… €Œ €Œÿ¤@ €…€…%& €‡ €‡ € €ÿ¤@ €‡€‡'( €Š€Š €¤ €¤ÿ¤@) €Š€Š * €Š+€Š2+ , €Œ€Œ €¥ €¥ÿ¤@) €Œ€Œ * €Œ+€Œ2- . €Ž€Ž €¦ €¦ÿ¤@) €Ž€Ž * €Ž+€Ž2/ 0 €€ €§ €§ÿ¤@) €€ * €+€21 2 €’€’ €¨ €¨ÿ¤@) €’€’ * €’+€’23 4 €”€” €© €©ÿ¤@) €”€” * €”+€”256 €–€– €ª €ªÿ¤@) €–€– * €–+€–278 €™ €™ €´ €´ÿ¤@; €™€™ <= €œ €œ €¶ €¶ÿ¤@; €œ€œ >? €Ÿ €Ÿ €µ €µÿ¤@; €Ÿ€Ÿ @A €¢ €¢ €· €·ÿ¤@) €¢€¢ ; €¢+€¢2BC €¥ €¥ €¸ €¸ÿ¤@ €¥€¥DE €§ €§ €Å €Åÿ¤@ €§€§%FG €© €© €Ç €Çÿ¤@ €©€©HI €« €« €¹ €¹ÿ¤@; €«€« JK €­ €­ €— €—ÿ¤@) €­€­ * €­+€­2LM €¯ €¯ €º €ºÿ¤@; €¯€¯ NO €² €² €¿ €¿P €²#€²%„ÿ¤@P €²#€²%R €²€²! €²4€²9ST €´ €´ €Ã €ÃP €´#€´%„ÿ¤@P €´#€´%R €´€´! €´4€´9UV €· €· €Ÿ €Ÿÿ¤@ €·€·W €·&€·* €·E€·KXY €¼ €¼ €× €×P €¼ €¼"„Z €¼9€¼?„ÿ¤@P €¼ €¼"Z €¼9€¼?R €¼€¼\ €¼1€¼7] €¼\€¼a^ €¼l€¼q_  €Ü €Ü   `a  ba c €Ý €Ýd €Þ €Þ f €æ €æ h €ç €çi €è €èj €é €ék €ê €êl €ë €ëm €ì €ìn €í €í  o   p €ø €ø q i !r   „† „†P !#„ÿ¤@P !#  st  „‚ „‚P 3 5„ ÿ¤@P 3 5w   - 2xy   „‰„‰)P pr„ ÿ¤@P prz "){ ;G jo |   „| „|ÿ¤@z % 7=} g~% È !L+!~ €€‚r ‚r ÿ¤@€‚"€ƒ~ €€‚w ‚w  ÿ¤@€…#€†~# #€€‚} ‚}  ÿ¤@€ˆ$€†~' '€€‚ ‚   ÿ¤@€‰~' '-€Š%€‹~- -"€€‚ƒ ‚ƒ$ ÿ¤@€&€~3 3€€‚y ‚y ÿ¤@€’'€“~6 6€€‚… ‚… ÿ¤@€”(€•~FF€€‚Ü‚Ü  ÿ¤@€—~FF(€˜~F0F6 €™a{~FAFM€š)€›~OO €€‚á‚á ÿ¤@€œ~O#O)€~O0O4€ž*€Ÿ~XX!€€‚è‚è! ÿ¤@€œ~X$X* €™a{~X2X>€ +€¡~ee-€€‚ï‚ï-ÿ¤@€~e0e4€¢,€£~uu(€€‚ó‚ó(  ÿ¤@€—~u+u5 €™a{~u?uK€¤-€¥~€€€€-€€‚ø‚ø-  ÿ¤@€—~€€0€€: €™a{~€€D€€P€¦.€§~€†€†1€€‚ý‚ý1  ÿ¤@€—~€†3€†= €™a{~€†F€†R€©/€ª~€€€€ƒ0ƒ0  ÿ¤@€«~€€&€¬~€7€; €™a{~€F€R€­0€®~€›€› €€ƒ?ƒ?    ÿ¤@~€›#€›(€¯~€›/€›8 €™a{~€›A€›M€°1€±~€¦€¦*€€ƒSƒS*  ÿ¤@€¯~€¦6€¦? €™a{~€¦I€¦U€²2€³~€¬€¬.€€ƒZƒZ.  ÿ¤@€¯~€¬1€¬: €™a{~€¬D€¬P€µ3€¶~€´€´'€€ƒaƒa'  ÿ¤@€«~€´0€´9 €™a{~€´L€´X€·4€¸~€º€º,€€ƒ5ƒ5,  ÿ¤@€«~€º/€º8 €™a{~€ºK€ºW€¹5€º~€À€À0€€ƒ:ƒ:0  ÿ¤@€«~€À2€À; €™a{~€ÀM€ÀY€¼6€½~€É€É€€ƒ ƒ  ÿ¤@€¾~€É€É*€¿~€É3€É<€À7€Á~€Ñ€Ñ€€ƒƒÿ¤@€Â~€Ñ!€Ñ&€Ã~€Ñ-€Ñ2€Ä8€Å~€Ù€Ù €€ƒƒ ÿ¤@€Â~€Ù"€Ù'€Æ9€Ç~€â€â'€€ƒ ƒ ' ÿ¤@€¿~€â4€â=€È:€É~€è€è-€€ƒ$ƒ$-  ÿ¤@€¿~€è/€è8€Ã~€è@€èE€Ê;€Ë~€ñ€ñ,€€ƒ(ƒ(, ÿ¤@€¿~€ñ4€ñ=€Ì<€Í~€ÿ€ÿ0€€ƒ,ƒ,0  ÿ¤@€¿~€ÿ2€ÿ;€Î=€Ï~€€ƒƒ ÿ¤@€Ð~+7€Ñ~?M€Ò>€Ó~$€€ƒhƒh$ ÿ¤@€Ô~'* €™a{~2>€Õ?€Ÿ~!€€‚½‚½!  ÿ¤@€—~#- €™a{~6B€×@€Ø~$$€€‚‚   ÿ¤@€¯~$!$* €™a{~$3$?€ÙA€Ú~**"€€‚©‚©"   ÿ¤@€Û~*$**€Ü~*2*7€ÝB€Þ~//€€‚®‚®  ÿ¤@€ß~/!/&€àC€á~44€€‚‘‚‘ ÿ¤@€â~44€ãD€ä~99€€‚ ‚  ÿ¤@€â~99"€åE€æ~>>€€‚¥‚¥ ÿ¤@€â~>>€çF€è~DD€€‚•‚•  ÿ¤@€â~DD €™a{~D(D4€éG€ê~JJ€€‚š‚š  ÿ¤@€â~JJ €™a{~J'J3€ëH€ì~OO"€€‚´‚´"  ÿ¤@€¿~O%O.€íI€î~TT%€€‚¸‚¸%   ÿ¤@€Ð~T(T4€ïJ€Ó~]]$€€‚΂Î$  ÿ¤@€ð~]&]3 €™a{~]<]H€ñK€ò~cc+€€‚É‚É+  ÿ¤@€ð~c-c: €™a{~cCcO€ó €~  €ôa€ €ƒ€€ƒ  €†€€† €†€€†  €‹€€‹ €€€ €“€€“ €õg LL €–~<<   €öa €ôa€•€–€•  €›€–€›€Ÿ€–€Ÿ €¡€–€¡€£€–€£  €¥€–€¥  €§€–€§  €ª€–€ª  €®€–€®   €±€–€±  €³€–€³  €¶€–€¶  €¸€–€¸  €º€–€º  €½€–€½ €Á€–€Á€Å€–€Å€Ç€–€Ç €É€–€É  €Ë€–€Ë €Í€–€Í  €Ï€–€Ï €Ó€–€Ó €÷gLL€Ö~  €öa €ôa €Ÿ€Ö€Ÿ  €Ø€Ö€Ø   €Ú€Ö€Ú   €Þ€Ö€Þ  €á€Ö€á €ä€Ö€ä €æ€Ö€æ €è€Ö€è  €ê€Ö€ê  €ì€Ö€ì  €î€Ö€î   €Ó€Ö€Ó  €ò€Ö€ò  €øgLL€ù€ú  %¹2L¼8L€û€ú €üf f ÿ¤@!€þ!M€ú €üd dÿ¤@!€ÿ!N€ú €üe eÿ¤@!!Oa€ú&&€üZZ ÿ´@!€ú& &€â€ú&& €™a€ú&$&-!P€ú,,€üii ÿ¤@!€ú,,€â€ú,),,!Q€ú; ;€ü…ñ …ñÿ¤@" €ú;;$ "R €ú? ?€ü…ò …ò#ÿ¤@" "S€û€úB B€ü…ó …ó ÿ¤@""T€úE E€ü€Ä €Äÿ¤@""U€úG G€ü€Å€Åÿ´@"€úGG"V€úLL€ü…õ…õÿ¤@"€úLL$"W€úRR€ü…ø…øÿ¤@"€úRR%€úR-R2"X€úXX€ü…û…ûÿ¤@"€úXX+€úX3X;"Y€ú^^€ü…þ…þÿ¤@"€ú^ ^,€ú^4^="Z€údd€ü††ÿ¤@"€údd#€úd1d: "[€úkk€ü††ÿ¤@"€úkk€úk$k.€úk"e?€ú€«€«€ü†)†)ÿ¤@"@€ú€«!€«).€ú€«>€«BA"fB€ú€±€±€ü†+†+ÿ¤@"C€ú€±€±,€ú€±?€±HD"gE€ú€·€·€ü†/†/ ÿ¤@"F€ú€· €·.G"hH€ú€½€½€ü†3†3ÿ¤@"I€ú€½€½$J"iK€ú€Ã€Ã€ü†6†6 ÿ¤@"€—€ú€Ã€Ã'I€ú€Ã/€Ã7L"jM€ú€É€É€ü†:†: ÿ¤@"N€ú€É€É'I€ú€É/€É7O"kP€ú€Ð€Ð€ü†>†> ÿ¤@"Q€ú€Ð€Ð+R€ú€Ð3€Ð=.€ú€ÐI€ÐMS"lT€ú€Ö€Ö€ü†B†B ÿ¤@"€«€ú€Ö €Ö)€ú€Ö:€ÖCU"mV€ú€Ý€Ý€ü†E†Eÿ¤@"€ú€Ý€Ý"W€ú€Ý*€Ý2 €™aX€ú€ÝD€ÝOY"nV€ú€ã€ã€ü†I†Iÿ¤@"W€ú€ã€ã' €™aX€ú€ã8€ãCZ"o[€ú€ë€ë€ü†M†Mÿ¤@"€ú€ë€ë"W€ú€ë*€ë2€ú€ëB€ëG €™aX€ú€ëP€ë[\"p[€ú€ò€ò€ü†Q†Qÿ¤@"W€ú€ò€ò'€ú€ò7€ò< €™aX€ú€òE€òP]"q^€ú€÷€÷€ü†T†Tÿ¤@"_€ú€÷€÷`"ra€ú€ý€ý€ü†V†Vÿ¤@"b€ú€ý€ý#c€ú€ý+€ý1d"se€ú€ü†Y†Yÿ¤@".€úf€ú'0g€ú7Ah€úIQi€úXaj"tk€ú  €ü†\†\ÿ¤@".€ú  "l€ú * 6m"un€ú€ü†_†_ÿ¤@"€Â€ú!€Ã€ú).o"vp€ú€ü†b†b ÿ¤@"#€ú"€ú*0q"wr€ú€ü†f†f ÿ¤@"#€ú!'€«€ú/8s"xt€ú%%€ü†l†l ÿ¤@"€ú%%F€ú%&%4u"yt€ú**€ü†i†iP€ú* *"„ÿ¤@"P€ú* *"€ú**v"z€ý€ú//€ü†p†pÿ¤@"w€ú// x"{y€ú55€ü†s†sÿ¤@"w€ú55#€ú5*5/z"|{€ú;;€ü†v†vÿ¤@"&€ú;;#.€ú;+;/|"}}€úEE€ü†~†~P€úE-E/„%ÿ¤@"P€úE-E/#€úEE"~€€úKK+€ü†z†z+ÿ¤@"‚€úK.K8ƒ"„€úWW€ü†€†€  ÿ¤@"†€úW W.‡€úW=WHˆ€úW]Wh‰€úWvW{Š"€€‹€ú``.€ü†…†….ÿ¤@"€ú`0`8Ž€ú`D`L€ú`V`e"€‘€úff€ü†‰†‰ P€úff„% ÿ¤@"P€úff€úf"f&’"€‚“€úk k€ü€Ï €Ïÿ¤@"”€úkk•"€ƒ–€úuu€ü  P€úr r „% ÿ¤@%P€úr r —%€ý˜€ú €ôa) ™a˜˜€û*€ý€û *€ý*€ýa*€ýa *€ý ›€ù „„œ€ú33 ) ™aœœ, a2* * #€û*€û ********"*" %*%***0*00*05*55*58*8;*;?*?B*BE*E H*HK*K M*M P*P T*T V*VV*V[*[[*[^*^a*ae*ek*kn*np*p r*r t*t t*t P€ú* *"„ €ý*€ýy*y{*{}*} P€úE-E/„% €*€„*„  ‹*‹‘*‘ P€úff„% “*“ž€ù„„P€úr r „~Ÿ€úrr) ™aŸŸ, a–*~–P€úr r „% €ù„„¡€úzz- ¢a ¤€ùI „¤ €„¥¦€ú€ €€ü¢ ¢ÿ¤@) ™a¦¦§€ú€ €%¨/€…©ª€ú… …€ü ÿ¤@) ™aªª§€ú… …%«/€†¬­€úРЀüi iÿ¤@) ™a­­§€úŠ Š%®/€‡¯°€ú €üÆ Æÿ¤@) ™a°°§€ú %±/€ˆ²³€ú” ”€ü‡ ‡ ÿ¤@) ™a³³§€ú” ”%´/€‰µ¶€ú™ ™€ü» »ÿ¤@) ™a¶¶§€ú™ ™%·/€Š¸¹€úž ž€ü¿ ¿ÿ¤@) ™a¹¹§€úž ž%º/€‹»¼€ú£ £ €ü¨ ¨ ÿ¤@) ™a¼¼§€ú£$£)½/€Œ¾¿€ú¨ ¨€ü« «ÿ¤@) ™a¿¿§€ú¨ ¨%À/€Á€ú­ ­€ür rÿ¤@) ™a§€ú­ ­%Ã/€ŽÄÅ€ú² ²€ül lÿ¤@) ™aÅŧ€ú² ²%Æ/€ÇÈ€ú· ·€üÎ Îÿ¤@) ™aÈȧ€ú· ·%É/€ÊË€ú¼ ¼€üã ãÿ¤@) ™aË˧€ú¼&¼+Ì/€‘Í΀úÁ Á€ü  ÿ¤@) ™aÎΧ€úÁ Á%Ï/€’ÐÑ€úÆ Æ€üx x ÿ¤@) ™aÑѧ€úÆ Æ%Ò/€“ÓÔ€úË Ë€üÙ Ù ÿ¤@) ™aÔÔ§€úË Ë%Õ/€”Ö×€úРЀüà Ãÿ¤@) ™a××§€úÐ Ð%Ø/€•ÙÚ€úÕ Õ€ü{ { ÿ¤@) ™aÚÚ§€úÕ Õ%Û/€–ÜÝ€úÚ Ú€ü~ ~ ÿ¤@) ™aÝݧ€úÚ Ú%Þ/€—ßà€úß ß€üu uÿ¤@) ™aàà§€úß ß%á/€˜âã€úä ä€ü® ®ÿ¤@) ™aãã§€úä$ä)ä/€™åæ€úé é€ü³ ³ÿ¤@) ™aææ§€úé$é)ç/€šèé€úî î€üo oÿ¤@) ™aéé§€úî î%ê/€›ëì€úó ó€ü¥ ¥ÿ¤@) ™aìì§€úó ó%í/€œîï€úø ø€ü– –ÿ¤@) ™aïï§€úøø$ð/€ñò€úý ý€ü“ “ÿ¤@) ™aòò§€úý ý%ó/€žôõ€ú‚ ‚€ü„ „ÿ¤@) ™aõõ§€ú‚ ‚%ö/€Ÿ÷ø€ú‚ ‚€üŠ Š ÿ¤@) ™aøø§€ú‚ ‚%ù/€ úû€ú‚ ‚ €ü  ÿ¤@) ™aûû§€ú‚ ‚ %ü/€¡ýþ€ú‚ ‚€üœ œ ÿ¤@) ™aþþ§€ú‚ ‚%ÿ/€¢‚‚€ú‚ ‚€üf fÿ¤@) ™a‚‚§€ú‚ ‚%‚/€£‚‚€ú‚ ‚€ü™ ™ÿ¤@) ™a‚‚§€ú‚ ‚%‚/‚€ú‚"‚"- ¢a ‚€ùФº€¤‚‚ €ú‚( ‚(€ü†Ê †Êÿ¤@) ™a‚ ‚ §€ú‚(‚(#‚ 0€¥‚ ‚ €ú‚- ‚-€ü†Ì †Ìÿ¤@) ™a‚ ‚ §€ú‚-‚-#‚ 0€¦‚‚€ú‚2 ‚2€ü†Ï †Ïÿ¤@) ™a‚‚§€ú‚2‚2#‚0€§‚‚€ú‚7 ‚7€ü†Õ †Õÿ¤@) ™a‚‚§€ú‚7‚7#‚0€¨‚‚€ú‚= ‚=€ü†¬ †¬ÿ¤@) ™a‚‚§€ú‚=‚=#‚0€©‚‚€ú‚B ‚B€ü†’ †’ÿ¤@) ™a‚‚§€ú‚B‚B#‚0€ª‚‚€ú‚G ‚G€ü†” †”ÿ¤@) ™a‚‚§€ú‚G‚G#‚0€«‚‚€ú‚L ‚L€ü†– †–!ÿ¤@) ™a‚‚§€ú‚L‚L#‚ 0€¬‚!‚"€ú‚Q ‚Q€ü†˜ †˜"ÿ¤@) ™a‚"‚"§€ú‚Q‚Q#‚$0€­‚%‚&€ú‚V ‚V€ü†š †š#ÿ¤@) ™a‚&‚&§€ú‚V‚V#‚(0€®‚)‚*€ú‚[ ‚[€ü†œ †œ$ÿ¤@) ™a‚*‚*§€ú‚[‚[#‚,0€¯‚-‚.€ú‚` ‚`€ü†ž †žÿ¤@) ™a‚.‚.§€ú‚`‚`#‚/0€°‚0‚1€ú‚e ‚e€ü†  † %ÿ¤@) ™a‚1‚1§€ú‚e‚e#‚30€±‚4‚5€ú‚j ‚j€ü†¢ †¢&ÿ¤@) ™a‚5‚5§€ú‚j‚j#‚70€²‚8‚9€ú‚o ‚o€ü†¤ †¤'ÿ¤@) ™a‚9‚9§€ú‚o‚o#‚;0€³‚<‚=€ú‚t ‚t€ü†¦ †¦(ÿ¤@) ™a‚=‚=§€ú‚t‚t#‚?0€´‚@‚A€ú‚y ‚y€ü†¨ †¨)ÿ¤@) ™a‚A‚A§€ú‚y‚y#‚C0€µ‚D‚E€ú‚~ ‚~€ü†ª †ª*ÿ¤@) ™a‚E‚E§€ú‚~‚~#‚G0€¶‚H‚I€ú‚ˆ ‚ˆ€ü†Û †Û ÿ¤@) ™a‚I‚I‚J€ú‚ˆ‚ˆ/‚K0€·‚L‚M€ú‚Ž ‚Ž*€ü†÷ †÷*ÿ¤@) ™a‚M‚M‚€ú‚Ž.‚Ž8‚N0€¸‚O‚P€ú‚” ‚”2€ü†û †û2ÿ¤@) ™a‚P‚P‚Q€ú‚”6‚”B‚R0€¹‚S‚T€ú‚™ ‚™2€ü†ÿ †ÿ2ÿ¤@) ™a‚T‚T‚Q€ú‚™6‚™B‚U0‚V€ú‚‚- ¢a ‚W€ùȺ¼€º‚X‚Y€ú‚¢ ‚¢0€ü‡4 ‡44;ÿ¤@) ™a‚Y‚Y§€ú‚£ ‚£‚[<€»‚\€ú‚«‚«€ü‡‡ÿ¤@‚]€ú‚«#‚«(€ú‚«/‚«8‚^<‚_‚`  % 8¼×‚a‚` & ,‚_Ç 8¼×‚b‚`‚c‚_‚am/¼Ð€¼‚d‚` ‚e€ã€ã P‚` „ÿ¤@P‚` =€½‚f‚` ‚e# #P‚`„ÿ¤@P‚`=€¾‚g‚`‚e€¦ €¦P‚`„ÿ¤@P‚`‚h‚`=€¿‚i‚`‚e€ €P‚`„‚j‚`„ÿ¤@P‚`‚j‚`=€À‚k‚`‚eP‚`!„ÿ¤@P‚`!‚h‚`=€Á‚l‚` ‚e44 P‚`„‚j‚`„ÿ¤@P‚`‚j‚`‚m‚`=€Â‚n‚` ‚eZZ ‚o‚`„‚p‚`"„‚j‚`&(„ÿ¤@‚o‚`‚p‚`"‚j‚`&(‚m‚`=€Ã‚q‚` ‚eFF P‚`„‚j‚`„ÿ¤@P‚`‚j‚`=€Ä‚r‚`‚ed dP‚`„ÿ¤@P‚`‚h‚`=€Å‚s‚`‚ei iP‚`„ÿ¤@P‚`‚h‚`=€Æ‚t‚` ‚euu P‚` „ÿ¤@P‚` =€Ç‚u‚`‚e€Ó€Ó P‚`„#  ÿ¤@P‚`=€È‚v‚` ‚e€²€² !P‚`!„!!ÿ¤@P‚`!‚w‚`=€É‚x‚`  ‚e44 "‚o‚`  „#‚p‚`  „"#"#ÿ¤@‚o‚`  ‚p‚`  =€Ê‚y‚`!!‚eQQ$‚o‚`!!„%‚p‚`!!„&‚z‚`!!!„$%&$%&ÿ¤@‚o‚`!!‚p‚`!!‚z‚`!!!=€Ë‚{‚`"" ‚ekk '‚o‚`""„(‚p‚`""„'('(ÿ¤@‚o‚`""‚p‚`""=€Ì‚|‚`## ‚e„„ )‚o‚`##„*‚p‚`##„+‚z‚`#'#*„)*+)*+ÿ¤@‚o‚`##‚p‚`##‚z‚`#'#*=€Í‚}‚`$$‚e››,P‚`$$„,,ÿ¤@P‚`$$=€Î‚~‚`%%‚e-P‚`%%„--ÿ¤@P‚`%%=€Ï‚‚`&&‚eÜÜ.P‚`&&„....ÿ¤@P‚`&&=‚€‚`((‚‚_‚a¹/8Ð׀Ђ‚‚`**"‚e‚/‚/"/P‚`*,*.„/ÿ„@P‚`*,*.>€Ñ‚d‚`,,‚e‚2‚20P‚`,%,'„00ÿ„@P‚`,%,'>€Ò‚ƒ‚`..‚e‚9‚91P‚`.+.-„11ÿ¤@P‚`.+.-‚„‚`..>€Ó‚…‚`00‚e‚F‚F2P‚`0+0-„3‚†‚`0R0V„ 232ÿ¤@P‚`0+0-‚†‚`0R0V‚‡‚`00)‚ˆ‚`0:0?>€Ô‚‰‚`22‚e‚P‚P4P‚`2527„ 4ÿ¤@P‚`2527‚ˆ‚`22">€Õ‚Š‚`44‚e‚r‚r5P‚`4)4+„6‚†‚`4P4T„ 565ÿ¤@P‚`4)4+‚†‚`4P4T‚‡‚`44'‚ˆ‚`484=>€Ö‚‹‚`66‚e‚|‚|7P‚`6365„ 7ÿ¤@P‚`6365‚ˆ‚`66 >‚Œ‚  (Ñ8@×߂ނ ? ‚a+- ¢a ‚‚ŒR8@×߀ׂ‘‚’‚‚“  8P‚@B„ ,A8ÿ„@B ‚–a-C ‚—a.) ™a‚’‚’P‚@B‚˜‚!(‚™D€Ø‚š‚›‚&&‚“$$9P‚&3&5„ A9,ÿ„@B ‚–a-C ‚—a.) ™a‚›‚›P‚&3&5‚˜‚&!&(‚œD€Ù‚‚ž‚11‚“((:P‚1+1-„ A:A:ÿ„@B ‚–a-C ‚—a.) ™a‚ž‚žP‚1+1-‚˜‚11 €Ã‚1217‚ŸD€Ú‚ ‚¡‚;;‚“,,;P‚;+;-„ A;;ÿ„@B ‚–a-C ‚—a.) ™a‚¡‚¡P‚;+;-‚˜‚;; €Ã‚;2;7‚¢D€Û‚£‚¤‚CC‚“44P‚U+U-„ A>>ÿ„@B ‚–a-C ‚—a.) ™a‚ª‚ªP‚U+U-‚˜‚UU €Ã‚U2U7‚U?UD‚«D€Þ‚¬‚­‚]]‚“<<?P‚]7]9„ A?ÿ„@B ‚–a-C ‚—a.) ™a‚­‚­P‚]7]9^‚] ]%‚®D‚¯‚°  @@ßß‚±‚²  Mº2@³ß—6€ßa‚² ‚³&&@P‚²„A‚´‚²„#@E@Aÿ´@EP‚²‚´‚²‚¶E€à‚·‚²""‚³''BP‚²„C‚´‚²„EBC#Bÿ¤@EP‚²‚´‚²‚¸E€áa‚²(( ‚³::/ÿ´@F‚ºF€â‚»‚²--‚³AADP‚²---/„E‚´‚²-C-E„/GDEDEÿ¤@FP‚²---/‚´‚²-C-E#‚²--!‚½F€ã‚»‚²22‚³BBFP‚²2.20„/HFEF0ÿ¤@FP‚²2.20#‚²22!‚ÀF€ä‚Á‚²77‚³<<GP‚²7.70„H‚´‚²7173„I‚‚²7O7V„J‚²7W7Z„/EGHGEIJEIHÿ¤@FP‚²7.70‚´‚²7173‚‚²7O7V‚²7W7Z#‚²77!.‚²777;‚ÄF€å‚Å‚²<<‚³==KP‚²>MP‚²A!A#„N‚´‚²A6A8„/MEMNÿ¤@FP‚²A!A#‚´‚²A6A8‚²AA ‚ÈF€ç‚É‚²FF‚³??OP‚²F3F5„P‚´‚²F6F8„/EOPEOPÿ¤@FP‚²F3F5‚´‚²F6F8‚Ê‚²FF&‚ËF€è^‚²KK‚³@@QP‚²K(K*„/%Q%Qÿ¤@FP‚²K(K*‚ÌF€é‚Í‚²PP‚³†œ†œRP‚²P1P3„/%ER1GRÿ¤@FP‚²P1P3‚ÏF€ê‚Ђ²QQ+‚³†›†›!SP‚²QJQL„/%ES1GSÿ¤@FP‚²QJQLF€ë‚Ñ‚²RR,‚³†–†–"TP‚²RKRM„/%ET0#Tÿ¤@FP‚²RKRMF€ì‚Ò‚²SS'‚³†”†”UP‚²S:S<„/%UUÿ¤@FP‚²S:S<F€í‚Ó‚²XX‚³DDVP‚²X-X/„W‚´‚²X0X2„/EVWVÿ¤@FK ‚Ôa2‚Õ‚ÕP‚²X-X/‚´‚²X0X2#‚²XX ‚Ö‚²X6X9‚×F€î‚Ø‚²]]‚³KKXP‚²]*],„Y‚´‚²]-]/„/EXYÿ¤@FK ‚Ôa2^^P‚²]*],‚´‚²]-]/#‚²]]‚ÙF€ï‚Ú‚²bb‚³GGZP‚²b)b+„[‚´‚²b,b.„/EZ[Zÿ¤@FK ‚Ôa2‚Û‚ÛP‚²b)b+‚´‚²b,b.#‚²bb‚ÜF€ð‚Ý‚²gg‚³HH\P‚²g2g4„]‚´‚²g5g7„/E\]\ÿ¤@FK ‚Ôa2‚Þ‚ÞP‚²g2g4‚´‚²g5g7#‚²gg%‚ßF€ñ‚à‚²ll‚³II^P‚²l/l1„_‚´‚²l2l4„/E^_^ÿ¤@FK ‚Ôa2‚á‚áP‚²l/l1‚´‚²l2l4#‚²ll"‚âF€ò‚ゲqq"‚³JJ!`P‚²q8q:„a‚´‚²q;q=„/E`a`ÿ¤@FK ‚Ôa2‚ä‚äP‚²q8q:‚´‚²q;q=#‚²q%q+‚åF€ó‚悲vv‚³WWbP‚²v2v4„c‚´‚²v5v7„/Ebcbÿ¤@FK ‚Ôa2‚ç‚çP‚²v2v4‚´‚²v5v7#‚²vv%‚èF€ô‚邲{{‚³EEdP‚²{+{-„e‚´‚²{.{0„f‚‚²{^{e„/EdedfEfeÿ¤@FK ‚Ôa2‚ê‚ê‚ëP‚²{+{-‚´‚²{.{0‚‚²{^{e#‚²{{L ‚ìa3‚‡‚²{L{V‚íF€õ‚€€€€‚³FFgP‚²€€*€€,„h‚´‚²€€-€€/„/EghgEghÿ¤@FK ‚Ôa2‚ï‚ï‚ð‚ëP‚²€€*€€,‚´‚²€€-€€/#‚²€€€€L ‚ìa3‚h‚²€€K€€T‚ñF€ö‚ò‚²€…€…‚³YYiP‚²€…*€…,„j‚´‚²€…-€…/„kt‚²€…w€…}„ /Eijikkÿ¤@FK ‚Ôa2‚ó‚óP‚²€…*€…,‚´‚²€…-€…/t‚²€…w€…}#‚²€…€…L ‚ìa3‚ô‚²€…K€…X‚õF€÷‚ö‚²€Š€Š‚³\\lP‚²€Š*€Š,„m‚´‚²€Š-€Š/„nt‚²€Šw€Š}„ /Elmlnnÿ¤@FK ‚Ôa2‚÷‚÷P‚²€Š*€Š,‚´‚²€Š-€Š/t‚²€Šw€Š}#‚²€Š€ŠL ‚ìa3‚ô‚²€ŠK€ŠX‚øF€ø‚ù‚²€€‚³€§€§oP‚²€,€.„p‚´‚²€/€1„q‚†‚²€€€€¡„ /EopoqEMqopÿ¤@FK ‚Ôa2‚û‚û‚ëP‚²€,€.‚´‚²€/€1‚†‚²€€€€¡#‚²€€L ‚ìa3‚ü‚²€M€X‚ýF€ù‚þ‚²€”€”‚³€ª€ªrP‚²€”+€”-„s‚´‚²€”.€”0„t‚†‚²€”€€€”€„„ /ErsrtErsÿ¤@FK ‚Ôa2‚ÿ‚ÿ‚ð‚ëP‚²€”+€”-‚´‚²€”.€”0‚†‚²€”€€€”€„#‚²€”€”L ‚ìa3‚ü‚²€”L€”WƒF€úƒ‚²€™€™‚³€­€­uP‚²€™5€™7„v‚´‚²€™8€™:„w‚†‚²€™€Š€™€Ž„ /EuvuwEuvÿ¤@FK ‚Ôa2ƒƒ‚ð‚ëP‚²€™5€™7‚´‚²€™8€™:‚†‚²€™€Š€™€Ž#‚²€™"€™(L ‚ìa3‚ü‚²€™V€™aƒF€ûƒ‚²€Ÿ€Ÿ‚³€°€°xP‚²€Ÿ+€Ÿ-„y‚´‚²€Ÿ.€Ÿ0„z‚†‚²€Ÿ€€€Ÿ€„„ /ExyxzExyÿ¤@FK ‚Ôa2ƒƒ‚ð‚ëP‚²€Ÿ+€Ÿ-‚´‚²€Ÿ.€Ÿ0‚†‚²€Ÿ€€€Ÿ€„#‚²€Ÿ€ŸL ‚ìa3‚ü‚²€ŸL€ŸWƒF€üƒ‚²€¥€¥‚³€³€³{P‚²€¥5€¥7„|‚´‚²€¥8€¥:„}‚†‚²€¥€Š€¥€Ž„ /E{|{}E{|ÿ¤@FK ‚Ôa2ƒƒ‚ð‚ëP‚²€¥5€¥7‚´‚²€¥8€¥:‚†‚²€¥€Š€¥€Ž#‚²€¥"€¥(L ‚ìa3‚ü‚²€¥V€¥aƒ F€ýƒ ‚²€ª€ª‚³€Â€Â~P‚²€ª€ª„‚†‚²€ª€ª!„ €€t‚²€ª"€ª(„€‚´‚²€ª)€ª+„/E~€~€€~EM€€€ÿ¤@FK ‚Ôa2ƒ ƒ ‚ëP‚²€ª€ª‚†‚²€ª€ª!t‚²€ª"€ª(‚´‚²€ª)€ª+#‚²€ª/€ª5L ‚ìa3ƒ ‚²€ªc€ªqL ‚ìa3‚ü‚²€ª€›€ª€¦ƒ F€þƒ‚²€°€°‚³€É€É€‚ƒ‚²€°.€°4„€ƒ‚´‚²€°5€°7„€„ƒ‚²€°S€°Y„€…‚†‚²€°|€°€€„€†‚‚²€°€Ì€°€Ó„/E€‚€ƒE€„€ƒ€‚€…€„€…€‚€„€†E€†€ƒÿ¤@FK ‚Ôa2ƒƒƒƒƒƒƒ‚²€°.€°4‚´‚²€°5€°7ƒ‚²€°S€°Y‚†‚²€°|€°€€‚‚²€°€Ì€°€Óƒ‚²€°€°!ƒ‚²€°;€°Fƒ‚²€°`€°pƒ‚²€°€„€°€”ƒ ‚²€°€¨€°€¶ƒF€ÿƒ‚²€¶€¶‚³€Ì€Ì€‡ƒ‚²€¶3€¶9„€ˆ‚´‚²€¶:€¶<„€‰ƒ‚²€¶X€¶^„€Š‚†‚²€¶€€¶€…„€‹‚‚²€¶€Ö€¶€Ý„/E€‡€ˆE€‰€ˆ€‡€Š€‰€Š€‡#€‰€‹E€‹€ˆÿ¤@FK ‚Ôa2ƒƒƒƒƒƒƒ‚²€¶3€¶9‚´‚²€¶:€¶<ƒ‚²€¶X€¶^‚†‚²€¶€€¶€…‚‚²€¶€Ö€¶€Ýƒ‚²€¶€¶&ƒ‚²€¶@€¶Kƒ‚²€¶e€¶uƒ‚²€¶€‰€¶€™ƒ ‚²€¶€­€¶€»ƒFƒ‚²€½€½‚³€Ï€Ï€Œƒ‚²€½7€½=„€‚´‚²€½>€½@„€Žƒ‚²€½\€½b„€‚†‚²€½€…€½€‰„€‚‚²€½€Ú€½€á„/E€Œ€E€Ž€€Œ€€Ž€€Œ#€Ž€E€€ÿ¤@FK ‚Ôa2ƒƒƒƒƒƒƒ‚²€½7€½=‚´‚²€½>€½@ƒ‚²€½\€½b‚†‚²€½€…€½€‰‚‚²€½€Ú€½€áƒ‚²€½€½*ƒ‚²€½D€½Oƒ‚²€½i€½yƒ‚²€½€€½€ƒ ‚²€½€±€½€¿ƒ Fƒ!‚²€Ë€Ë#‚³ee"€‘P‚²€Ë9€Ë;„€’‚´‚²€Ë<€Ë>„€“t‚²€Ì/€Ì4„€“ƒ"€“€“€“€“ƒ#€“4/E€‘€’€‘O€“O€“ÿ„@FK ‚Ôa2ƒ&ƒ&P‚²€Ë9€Ë;‚´‚²€Ë<€Ë>t‚²€Ì/€Ì4#‚²€Ë&€Ë,L ‚ìa3‚ô‚²€ËZ€Ëgƒ'Fƒ(‚²€Ô€Ô‚³__€”P‚²€Ô2€Ô4„€•‚´‚²€Ô5€Ô7„€–t‚²€Õ.€Õ4„ 4/E€”€•€”O€–O€–ÿ¤@FK ‚Ôa2ƒ)ƒ)P‚²€Ô2€Ô4‚´‚²€Ô5€Ô7t‚²€Õ.€Õ4#‚²€Ô€Ô%L ‚ìa3‚ô‚²€ÔS€Ô`ƒ*Fƒ+‚²€Ü€Ü‚³bb€—P‚²€Ü2€Ü4„€˜‚´‚²€Ü5€Ü7„€™t‚²€Ü€“€Ü€™„ 4/E€—€˜€—O€™O€™ÿ¤@FK ‚Ôa2ƒ,ƒ,P‚²€Ü2€Ü4‚´‚²€Ü5€Ü7t‚²€Ü€“€Ü€™#‚²€Ü€Ü%L ‚ìa3‚ô‚²€ÜS€Ü`ƒ-Fƒ.‚²€â€â'‚³ww&€šP‚²€â?€âA„€›‚´‚²€âB€âD„€œt‚²€ã€ã$„€œƒ"€œ€œ€œ€œƒ/€œ€œ€œƒ#€œ"4/E€š€›€šO€œO€œÿ„@FK ‚Ôa2ƒ0ƒ0P‚²€â?€âA‚´‚²€âB€âDt‚²€ã€ã$#‚²€â,€â2L ‚ìa3‚‡‚²€â`€âjƒ1Fƒ2‚²€ì€ì‚³€€€P‚²€ì7€ì9„€ž‚´‚²€ì:€ì<„€Ÿt‚²€í,€í1„€Ÿƒ"€Ÿ€Ÿ€Ÿ€Ÿƒ/€Ÿ€Ÿ€Ÿƒ#€Ÿ"/E€€ž€€Ÿ€Ÿÿ„@FK ‚Ôa2ƒ3ƒ3P‚²€ì7€ì9‚´‚²€ì:€ì<t‚²€í,€í1#‚²€ì$€ì*L ‚ìa3‚‡‚²€ìX€ìbƒ4Fƒ5‚²€ö€ö‚³LL€ P‚²€öN€öP„ €¡‚´‚²€ö/€ö1„/E€ €¡E€ €¡ÿ¤@FK ‚Ôa2ƒ6ƒ6‚ð‚ëP‚²€öN€öP‚´‚²€ö/€ö1#‚²€ö€öƒ7Fƒ8‚²€û€û‚³MM€¢P‚²€û*€û,„€£‚´‚²€û-€û/„/E€¢€£€¢ÿ¤@FK ‚Ôa2‚s‚sP‚²€û*€û,‚´‚²€û-€û/#‚²€û€ûL ‚ìa3‚h‚²€ûK€ûTƒ9Fƒ:‚²‚³VV€¤P‚²(*„€¥‚´‚²+-„/E€¤€¥€¤€¤ÿ¤@FK ‚Ôa2ƒ;ƒ;P‚²(*‚´‚²+-#‚²L ‚ìa3‚h‚²IRƒ<F ƒ=‚²‚³NN€¦P‚²')„€§‚´‚²*,„/E€¦€§€¦ÿ¤@FK ‚Ôa2ƒ>ƒ>P‚²')‚´‚²*,#‚²L ‚ìa3‚h‚²HQƒ?F ƒ@‚²  ‚³OO€¨P‚² ( *„€©‚´‚² + -„/E€¨€©€¨ÿ¤@FK ‚Ôa2ƒAƒAP‚² ( *‚´‚² + -#‚²  ƒBF ƒC‚²‚³PP€ªP‚²')„€«‚´‚²*,„/E€ª€«€ªÿ¤@FK ‚Ôa2ƒDƒDP‚²')‚´‚²*,#‚²€Ã‚²05ƒEF ƒF‚²‚³RR€¬P‚²)+„€­‚´‚²,.„/E€¬€­E€¬€­ÿ¤@FK ‚Ôa2ƒGƒG‚ð‚ëP‚²)+‚´‚²,.#‚²^‚²27ƒHF ƒI‚²‚³SS€®P‚²-/„€¯‚´‚²02„/E€®€¯€®E€®€¯ÿ¤@FK ‚Ôa2ƒJƒJ‚ð‚ëP‚²-/‚´‚²02#‚² L ‚ìa3‚h‚²NWƒKFƒL‚²‚³€Ÿ€Ÿ€°P‚²35„€±‚´‚²68„€²t‚² , 1„€²ƒ"€²€²€²€²ƒ#€²/E€°€±€°€²€²ÿ„@FK ‚Ôa2ƒMƒMP‚²35‚´‚²68t‚² , 1#‚² &L ‚ìa3‚‡‚²T^ƒNFƒO‚²''‚³TT€³P‚²'('*„€´‚´‚²'+'-„/E€³€´E€³€´ÿ¤@FK ‚Ôa2ƒPƒP‚ð‚ëP‚²'('*‚´‚²'+'-#‚²''^‚²'1'6ƒQFƒR‚²,,‚³UU€µP‚²,-,/„€¶‚´‚²,0,2„/E€µ€¶€µE€µ€¶ÿ¤@FK ‚Ôa2ƒSƒS‚ð‚ëP‚²,-,/‚´‚²,0,2#‚²,, L ‚ìa3‚h‚²,N,WƒTFƒU‚²11‚³€¶€¶€·P‚²1315„€¸‚´‚²1618„€¹‚†‚²1€’1€–„ 4/E€·€¸€·O€¹E€·€¸ÿ¤@FK ‚Ôa2ƒVƒV‚ð‚ëP‚²1315‚´‚²1618‚†‚²1€’1€–#‚²1 1&L ‚ìa3‚ü‚²1T1_ƒWFƒX‚²66'‚³€¹€¹&€ºP‚²6=6?„€»‚´‚²6@6B„€¼‚†‚²6€œ6€ „ 4/E€º€»€ºO€¼E€º€»ÿ¤@FK ‚Ôa2ƒYƒY‚ð‚ëP‚²6=6?‚´‚²6@6B‚†‚²6€œ6€ #‚²6*60L ‚ìa3‚ü‚²6^6iƒZFƒ[‚²<<‚³€¼€¼€½P‚²<3<5„€¾‚´‚²<6<8„€¿‚†‚²<€’<€–„ 4/E€½€¾€½O€¿E€½€¾ÿ¤@FK ‚Ôa2ƒ\ƒ\‚ð‚ëP‚²<3<5‚´‚²<6<8‚†‚²<€’<€–#‚²< <&L ‚ìa3‚ü‚²‚oƒp||„?‚pƒp||„@‚zƒp||"„Aƒyƒp|$|'„Bƒ}ƒp|)|,„Cƒƒp|.|1„Dƒ…ƒp|3|6„Y>?@ABCD>€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y5ƒtƒp€ €ƒp€ €E‚oƒp||„F‚pƒp||„G‚zƒp||"„Hƒyƒp|$|'„Iƒ}ƒp|)|,„Jƒƒp|.|1„Kƒ…ƒp|3|6„YEFGHIJKF€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y6ƒwƒp€„ €„ƒp€„ €„L‚oƒp||„M‚pƒp||„N‚zƒp||"„Oƒyƒp|$|'„Pƒ}ƒp|)|,„Qƒƒp|.|1„Rƒ…ƒp|3|6„YLMNOPQRN€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y7ƒ{ƒp€‡ €‡ƒp€‡ €‡S‚oƒp||„T‚pƒp||„U‚zƒp||"„Vƒyƒp|$|'„Wƒ}ƒp|)|,„Xƒƒp|.|1„Yƒ…ƒp|3|6„YSTUVWXYV€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y8ƒƒp€Š €Šƒp€Š €ŠZ‚oƒp||„[‚pƒp||„\‚zƒp||"„]ƒyƒp|$|'„^ƒ}ƒp|)|,„_ƒƒp|.|1„`ƒ…ƒp|3|6„YZ[\]^_`^€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y9ƒƒƒp€ €ƒp€ €a‚oƒp||„b‚pƒp||„c‚zƒp||"„dƒyƒp|$|'„eƒ}ƒp|)|,„fƒƒp|.|1„gƒ…ƒp|3|6„Yabcdefgf€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y:ƒ‡ƒp€ €ƒp€ €h‚oƒp||„i‚pƒp||„j‚zƒp||"„kƒyƒp|$|'„lƒ}ƒp|)|,„mƒƒp|.|1„nƒ…ƒp|3|6„Yhijklmnn€¤Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6Y;aƒp€’€’ƒp€’€’o‚oƒp||„p‚pƒp||„q‚zƒp||"„rƒyƒp|$|'„sƒ}ƒp|)|,„tƒƒp|.|1„uƒ…ƒp|3|6„opqrstuYopqrstu€´Y‚oƒp||‚pƒp||‚zƒp||"ƒyƒp|$|'ƒ}ƒp|)|,ƒƒp|.|1ƒ…ƒp|3|6ƒrƒp€’ €’ƒuƒp€’€’ƒxƒp€’€’ƒ|ƒp€’€’#ƒ€ƒp€’%€’*ƒ„ƒp€’,€’1ƒˆƒp€’3€’8Y<ƒoƒp€— €—ƒp€— €—v‚oƒp€•€•„w‚pƒp€•€•„x‚zƒp€•€•"„yƒyƒp€•$€•'„zƒ}ƒp€•)€•,„{ƒƒp€•.€•1„|ƒ…ƒp€•3€•6„}ƒ‰ƒp€•8€•;„Zvwxyz{|}v€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;Z=ƒtƒp€š €šƒp€š €š~‚oƒp€•€•„‚pƒp€•€•„€‚zƒp€•€•"„ƒyƒp€•$€•'„‚ƒ}ƒp€•)€•,„ƒƒƒp€•.€•1„„ƒ…ƒp€•3€•6„…ƒ‰ƒp€•8€•;„Z~€‚ƒ„…€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;Z>ƒwƒp€ €ƒp€ €†‚oƒp€•€•„‡‚pƒp€•€•„ˆ‚zƒp€•€•"„‰ƒyƒp€•$€•'„Šƒ}ƒp€•)€•,„‹ƒƒp€•.€•1„Œƒ…ƒp€•3€•6„ƒ‰ƒp€•8€•;„Z†‡ˆ‰Š‹Œˆ€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;Z?ƒ{ƒp€  € ƒp€  € Ž‚oƒp€•€•„‚pƒp€•€•„‚zƒp€•€•"„‘ƒyƒp€•$€•'„’ƒ}ƒp€•)€•,„“ƒƒp€•.€•1„”ƒ…ƒp€•3€•6„•ƒ‰ƒp€•8€•;„ZŽ‘’“”•‘€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;Z@ƒƒp€£ €£ƒp€£ €£–‚oƒp€•€•„—‚pƒp€•€•„˜‚zƒp€•€•"„™ƒyƒp€•$€•'„šƒ}ƒp€•)€•,„›ƒƒp€•.€•1„œƒ…ƒp€•3€•6„ƒ‰ƒp€•8€•;„Z–—˜™š›œš€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;ZAƒƒƒp€¦ €¦ƒp€¦ €¦ž‚oƒp€•€•„Ÿ‚pƒp€•€•„ ‚zƒp€•€•"„¡ƒyƒp€•$€•'„¢ƒ}ƒp€•)€•,„£ƒƒp€•.€•1„¤ƒ…ƒp€•3€•6„¥ƒ‰ƒp€•8€•;„ZžŸ ¡¢£¤¥£€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;ZBƒ‡ƒp€© €©ƒp€© €©¦‚oƒp€•€•„§‚pƒp€•€•„¨‚zƒp€•€•"„©ƒyƒp€•$€•'„ªƒ}ƒp€•)€•,„«ƒƒp€•.€•1„¬ƒ…ƒp€•3€•6„­ƒ‰ƒp€•8€•;„Z¦§¨©ª«¬­¬€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;ZCƒ‹ƒp€¬ €¬ƒp€¬ €¬®‚oƒp€•€•„¯‚pƒp€•€•„°‚zƒp€•€•"„±ƒyƒp€•$€•'„²ƒ}ƒp€•)€•,„³ƒƒp€•.€•1„´ƒ…ƒp€•3€•6„µƒ‰ƒp€•8€•;„Z®¯°±²³´µµ€¤Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;ZDaƒp€®€®ƒp€®€®¶‚oƒp€•€•„·‚pƒp€•€•„¸‚zƒp€•€•"„¹ƒyƒp€•$€•'„ºƒ}ƒp€•)€•,„»ƒƒp€•.€•1„¼ƒ…ƒp€•3€•6„½ƒ‰ƒp€•8€•;„¶·¸¹º»¼½Z¶·¸¹º»¼½€´Z‚oƒp€•€•‚pƒp€•€•‚zƒp€•€•"ƒyƒp€•$€•'ƒ}ƒp€•)€•,ƒƒp€•.€•1ƒ…ƒp€•3€•6ƒ‰ƒp€•8€•;ƒrƒp€® €®ƒuƒp€®€®ƒxƒp€®€®ƒ|ƒp€®€®#ƒ€ƒp€®%€®*ƒ„ƒp€®,€®1ƒˆƒp€®3€®8ƒŒƒp€®:€®?Z ƒƒŽ€í €í"ƒ‚±ƒaq ¾ÃEMEƒƒŽ€û €û.ƒ‘€¥€¥*¾PƒŽ€û1€û3„¾[¾ÿ¤@PƒŽ€û1€û3ƒ”\Fƒ•ƒŽ &ƒ‘€€"¿PƒŽ)+„¿¿ÿ¤@PƒŽ)+ƒ–\Gƒ—ƒŽ $ƒ‘€¡€¡ ÀPƒŽ ' )„ÀÀÿ¤@PƒŽ ' )ƒ˜\Hƒ™ƒŽ !ƒ‘ƒ ƒ 6ÿ¤@ƒ›\IƒœƒŽ 'ƒ‘ƒ ƒ #ÁPƒŽ/1„%Á[Áÿ¤@PƒŽ/1ƒ\JƒžƒŽ ƒ‘ƒƒÿ¤@ƒŸ\Kƒ ƒŽ ƒ‘€Ä€ÄÂPƒŽ79„%Âÿ¤@PƒŽ79ƒ¡\Lƒ¢ƒŽ.ƒ‘€Ì €Ì!7 ÿ¤@\ Ãcƒb„ÄPƒb„ƒdƒb  #Ä€˜ƒb$‚±ƒaƒdÂփb‚±ƒaƒda_ƒdaŃcƒb„ÆPƒb„Å#ÆPÅÆHÄ0MÃ㤂±ƒa!!ÇÇMM!Ç‚oƒp€•€•„È‚pƒp€•€•„É‚zƒp€•€•"„ʃyƒp€•$€•'„˃}ƒp€•)€•,„̃ƒp€•.€•1„̓…ƒp€•3€•6„΃‰ƒp€•8€•;„ƒŠƒp€•€•!ǃ¥ƒp€–€–‚±ƒaƒŠȃ¦ƒp€™€™‚±ƒaƒŠɃ§ƒp€œ€œ‚±ƒaƒŠʃ¨ƒp€Ÿ€Ÿ‚±ƒaƒŠ˃©ƒp€¢€¢‚±ƒaƒŠ̃ªƒp€¥€¥‚±ƒaƒŠ̓«ƒp€¨€¨‚±ƒaƒŠ΃¬ƒp€«€«‚±ƒaƒŠ ƒo_ƒŠƒoÏ‚oƒp€•€•„Ђpƒp€•€•„Ñ‚zƒp€•€•"„Òƒyƒp€•$€•'„Óƒ}ƒp€•)€•,„Ôƒƒp€•.€•1„Õƒ…ƒp€•3€•6„Öƒ‰ƒp€•8€•;„ZÏÐÑÒÓÔÕÖσt_ƒŠƒtׂoƒp€•€•„Ø‚pƒp€•€•„Ù‚zƒp€•€•"„Úƒyƒp€•$€•'„Ûƒ}ƒp€•)€•,„܃ƒp€•.€•1„݃…ƒp€•3€•6„Þƒ‰ƒp€•8€•;„ZרÙÚÛÜÝÞ؃w_ƒŠƒwß‚oƒp€•€•„à‚pƒp€•€•„á‚zƒp€•€•"„âƒyƒp€•$€•'„ãƒ}ƒp€•)€•,„䃃p€•.€•1„僅ƒp€•3€•6„惉ƒp€•8€•;„Zßàáâãäåæáƒ{_ƒŠƒ{ç‚oƒp€•€•„è‚pƒp€•€•„é‚zƒp€•€•"„êƒyƒp€•$€•'„ëƒ}ƒp€•)€•,„샃p€•.€•1„탅ƒp€•3€•6„ƒp€•8€•;„Zçèéêëìíîêƒ_ƒŠƒï‚oƒp€•€•„ð‚pƒp€•€•„ñ‚zƒp€•€•"„òƒyƒp€•$€•'„óƒ}ƒp€•)€•,„ôƒƒp€•.€•1„õƒ…ƒp€•3€•6„öƒ‰ƒp€•8€•;„Zïðñòóôõöóƒƒ_ƒŠƒƒ÷‚oƒp€•€•„ø‚pƒp€•€•„ù‚zƒp€•€•"„úƒyƒp€•$€•'„ûƒ}ƒp€•)€•,„üƒƒp€•.€•1„ýƒ…ƒp€•3€•6„þƒ‰ƒp€•8€•;„Z÷øùúûüýþüƒ‡_ƒŠƒ‡ÿ‚oƒp€•€•„‚‚pƒp€•€•„‚‚zƒp€•€•"„‚ƒyƒp€•$€•'„‚ƒ}ƒp€•)€•,„‚ƒƒp€•.€•1„‚ƒ…ƒp€•3€•6„‚ƒ‰ƒp€•8€•;„Zÿ‚‚‚‚‚‚‚‚ƒ‹_ƒŠƒ‹‚‚oƒp€•€•„‚‚pƒp€•€•„‚ ‚zƒp€•€•"„‚ ƒyƒp€•$€•'„‚ ƒ}ƒp€•)€•,„‚ ƒƒp€•.€•1„‚ ƒ…ƒp€•3€•6„‚ƒ‰ƒp€•8€•;„Z‚‚‚ ‚ ‚ ‚ ‚ ‚‚a_ƒŠa‚‚oƒp€•€•„‚‚pƒp€•€•„‚‚zƒp€•€•"„‚ƒyƒp€•$€•'„‚ƒ}ƒp€•)€•,„‚ƒƒp€•.€•1„‚ƒ…ƒp€•3€•6„‚ƒ‰ƒp€•8€•;„‚‚‚‚‚‚‚‚Z‚‚‚‚‚‚‚‚ƒ­‚±ƒa""MM"‚‚oƒp||„‚‚pƒp||„‚‚zƒp||"„‚ƒyƒp|$|'„‚ƒ}ƒp|)|,„‚ƒƒp|.|1„‚ƒ…ƒp|3|6„ƒ†ƒp||"‚ƒ¥ƒp}}‚±ƒaƒ†‚ƒ¦ƒp€€€€‚±ƒaƒ†‚ƒ§ƒp€ƒ€ƒ‚±ƒaƒ†‚ƒ¨ƒp€†€†‚±ƒaƒ†‚ƒ©ƒp€‰€‰‚±ƒaƒ†‚ƒªƒp€Œ€Œ‚±ƒaƒ†‚ƒ«ƒp€€‚±ƒaƒ†ƒo_ƒ†ƒo‚‚oƒp||„‚‚pƒp||„‚ ‚zƒp||"„‚!ƒyƒp|$|'„‚"ƒ}ƒp|)|,„‚#ƒƒp|.|1„‚$ƒ…ƒp|3|6„Y‚‚‚ ‚!‚"‚#‚$‚ƒt_ƒ†ƒt‚%‚oƒp||„‚&‚pƒp||„‚'‚zƒp||"„‚(ƒyƒp|$|'„‚)ƒ}ƒp|)|,„‚*ƒƒp|.|1„‚+ƒ…ƒp|3|6„Y‚%‚&‚'‚(‚)‚*‚+‚&ƒw_ƒ†ƒw‚,‚oƒp||„‚-‚pƒp||„‚.‚zƒp||"„‚/ƒyƒp|$|'„‚0ƒ}ƒp|)|,„‚1ƒƒp|.|1„‚2ƒ…ƒp|3|6„Y‚,‚-‚.‚/‚0‚1‚2‚.ƒ{_ƒ†ƒ{‚3‚oƒp||„‚4‚pƒp||„‚5‚zƒp||"„‚6ƒyƒp|$|'„‚7ƒ}ƒp|)|,„‚8ƒƒp|.|1„‚9ƒ…ƒp|3|6„Y‚3‚4‚5‚6‚7‚8‚9‚6ƒ_ƒ†ƒ‚:‚oƒp||„‚;‚pƒp||„‚<‚zƒp||"„‚=ƒyƒp|$|'„‚>ƒ}ƒp|)|,„‚?ƒƒp|.|1„‚@ƒ…ƒp|3|6„Y‚:‚;‚<‚=‚>‚?‚@‚>ƒƒ_ƒ†ƒƒ‚A‚oƒp||„‚B‚pƒp||„‚C‚zƒp||"„‚Dƒyƒp|$|'„‚Eƒ}ƒp|)|,„‚Fƒƒp|.|1„‚Gƒ…ƒp|3|6„Y‚A‚B‚C‚D‚E‚F‚G‚Fƒ‡_ƒ†ƒ‡‚H‚oƒp||„‚I‚pƒp||„‚J‚zƒp||"„‚Kƒyƒp|$|'„‚Lƒ}ƒp|)|,„‚Mƒƒp|.|1„‚Nƒ…ƒp|3|6„Y‚H‚I‚J‚K‚L‚M‚N‚Na_ƒ†a‚O‚oƒp||„‚P‚pƒp||„‚Q‚zƒp||"„‚Rƒyƒp|$|'„‚Sƒ}ƒp|)|,„‚Tƒƒp|.|1„‚Uƒ…ƒp|3|6„‚O‚P‚Q‚R‚S‚T‚UY‚O‚P‚Q‚R‚S‚T‚Uƒ®‚±ƒa##VVMM#‚V‚oƒpee„‚W‚pƒpee„‚X‚zƒpee"„‚Yƒyƒpe$e'„‚Zƒ}ƒpe)e,„‚[ƒƒpe.e1„ƒ‚ƒpee#‚Vƒ¥ƒpff‚±ƒaƒ‚‚Wƒ¦ƒpii‚±ƒaƒ‚‚Xƒ§ƒpll‚±ƒaƒ‚‚Yƒ¨ƒpoo‚±ƒaƒ‚‚Zƒ©ƒprr‚±ƒaƒ‚‚[ƒªƒpuu‚±ƒaƒ‚ƒo_ƒ‚ƒo‚\‚oƒpee„‚]‚pƒpee„‚^‚zƒpee"„‚_ƒyƒpe$e'„‚`ƒ}ƒpe)e,„‚aƒƒpe.e1„X‚\‚]‚^‚_‚`‚a‚\ƒt_ƒ‚ƒt‚b‚oƒpee„‚c‚pƒpee„‚d‚zƒpee"„‚eƒyƒpe$e'„‚fƒ}ƒpe)e,„‚gƒƒpe.e1„X‚b‚c‚d‚e‚f‚g‚cƒw_ƒ‚ƒw‚h‚oƒpee„‚i‚pƒpee„‚j‚zƒpee"„‚kƒyƒpe$e'„‚lƒ}ƒpe)e,„‚mƒƒpe.e1„X‚h‚i‚j‚k‚l‚m‚jƒ{_ƒ‚ƒ{‚n‚oƒpee„‚o‚pƒpee„‚p‚zƒpee"„‚qƒyƒpe$e'„‚rƒ}ƒpe)e,„‚sƒƒpe.e1„X‚n‚o‚p‚q‚r‚s‚qƒ_ƒ‚ƒ‚t‚oƒpee„‚u‚pƒpee„‚v‚zƒpee"„‚wƒyƒpe$e'„‚xƒ}ƒpe)e,„‚yƒƒpe.e1„X‚t‚u‚v‚w‚x‚y‚xƒƒ_ƒ‚ƒƒ‚z‚oƒpee„‚{‚pƒpee„‚|‚zƒpee"„‚}ƒyƒpe$e'„‚~ƒ}ƒpe)e,„‚ƒƒpe.e1„X‚z‚{‚|‚}‚~‚‚a_ƒ‚a‚€‚oƒpee„‚‚pƒpee„‚‚‚zƒpee"„‚ƒƒyƒpe$e'„‚„ƒ}ƒpe)e,„‚…ƒƒpe.e1„‚€‚‚‚‚ƒ‚„‚…X‚€‚‚‚‚ƒ‚„‚…ƒ¯‚±ƒa$$††MM$‚†‚oƒpQQ„‚‡‚pƒpQQ„‚ˆ‚zƒpQQ"„‚‰ƒyƒpQ$Q'„‚Šƒ}ƒpQ)Q,„ƒ~ƒpQQ$‚†ƒ¥ƒpRR‚±ƒaƒ~‚‡ƒ¦ƒpUU‚±ƒaƒ~‚ˆƒ§ƒpXX‚±ƒaƒ~‚‰ƒ¨ƒp[[‚±ƒaƒ~‚Šƒ©ƒp^^‚±ƒaƒ~ƒo_ƒ~ƒo‚‹‚oƒpQQ„‚Œ‚pƒpQQ„‚‚zƒpQQ"„‚ŽƒyƒpQ$Q'„‚ƒ}ƒpQ)Q,„W‚‹‚Œ‚‚Ž‚‚‹ƒt_ƒ~ƒt‚‚oƒpQQ„‚‘‚pƒpQQ„‚’‚zƒpQQ"„‚“ƒyƒpQ$Q'„‚”ƒ}ƒpQ)Q,„W‚‚‘‚’‚“‚”‚‘ƒw_ƒ~ƒw‚•‚oƒpQQ„‚–‚pƒpQQ„‚—‚zƒpQQ"„‚˜ƒyƒpQ$Q'„‚™ƒ}ƒpQ)Q,„W‚•‚–‚—‚˜‚™‚—ƒ{_ƒ~ƒ{‚š‚oƒpQQ„‚›‚pƒpQQ„‚œ‚zƒpQQ"„‚ƒyƒpQ$Q'„‚žƒ}ƒpQ)Q,„W‚š‚›‚œ‚‚ž‚ƒ_ƒ~ƒ‚Ÿ‚oƒpQQ„‚ ‚pƒpQQ„‚¡‚zƒpQQ"„‚¢ƒyƒpQ$Q'„‚£ƒ}ƒpQ)Q,„W‚Ÿ‚ ‚¡‚¢‚£‚£a_ƒ~a‚¤‚oƒpQQ„‚¥‚pƒpQQ„‚¦‚zƒpQQ"„‚§ƒyƒpQ$Q'„‚¨ƒ}ƒpQ)Q,„‚¤‚¥‚¦‚§‚¨W‚¤‚¥‚¦‚§‚¨ƒ°‚±ƒa%%©©MM%‚©‚oƒp??„‚ª‚pƒp??„‚«‚zƒp??"„‚¬ƒyƒp?$?'„ƒzƒp??%‚©ƒ¥ƒp@@‚±ƒaƒz‚ªƒ¦ƒpCC‚±ƒaƒz‚«ƒ§ƒpFF‚±ƒaƒz‚¬ƒ¨ƒpII‚±ƒaƒzƒo_ƒzƒo‚­‚oƒp??„‚®‚pƒp??„‚¯‚zƒp??"„‚°ƒyƒp?$?'„V‚­‚®‚¯‚°‚­ƒt_ƒzƒt‚±‚oƒp??„‚²‚pƒp??„‚³‚zƒp??"„‚´ƒyƒp?$?'„V‚±‚²‚³‚´‚²ƒw_ƒzƒw‚µ‚oƒp??„‚¶‚pƒp??„‚·‚zƒp??"„‚¸ƒyƒp?$?'„V‚µ‚¶‚·‚¸‚·ƒ{_ƒzƒ{‚¹‚oƒp??„‚º‚pƒp??„‚»‚zƒp??"„‚¼ƒyƒp?$?'„V‚¹‚º‚»‚¼‚¼a_ƒza‚½‚oƒp??„‚¾‚pƒp??„‚¿‚zƒp??"„‚Àƒyƒp?$?'„‚½‚¾‚¿‚ÀV‚½‚¾‚¿‚Àƒ±‚±ƒa&&ÁÁMM&‚Á‚oƒp11„‚‚pƒp11„‚Âzƒp11"„ƒvƒp11&‚Áƒ¥ƒp22‚±ƒaƒv‚ƒ¦ƒp55‚±ƒaƒv‚çƒp88‚±ƒaƒvƒo_ƒvƒo‚Ä‚oƒp11„‚Å‚pƒp11„‚Æ‚zƒp11"„U‚ĂłƂăt_ƒvƒt‚Ç‚oƒp11„‚È‚pƒp11„‚É‚zƒp11"„U‚ǂȂɂȃw_ƒvƒw‚Ê‚oƒp11„‚Ë‚pƒp11„‚Ì‚zƒp11"„U‚ʂ˂̂Ìa_ƒva‚Í‚oƒp11„‚΂pƒp11„‚Ï‚zƒp11"„‚͂΂ÏU‚Í‚Î‚σ²‚±ƒa''ÐÐMM'‚Ђoƒp''„‚Ñ‚pƒp''„ƒsƒp'''‚Ѓ¥ƒp((‚±ƒaƒs‚у¦ƒp++‚±ƒaƒsƒo_ƒsƒo‚Ò‚oƒp''„‚Ó‚pƒp''„T‚Ò‚Ó‚Òƒt_ƒsƒt‚Ô‚oƒp''„‚Õ‚pƒp''„T‚Ô‚Õ‚Õa_ƒsa‚Ö‚oƒp''„‚ׂpƒp''„‚Ö‚×T‚Ö‚׃³‚±ƒa((ØØMM(‚Ø‚oƒp  „ƒqƒp  (‚؃¥ƒp!!‚±ƒaƒqƒo_ƒqƒo‚Ù‚oƒp  „S‚Ù‚Ùa_ƒqa‚Ú‚oƒp  „‚ÚS‚Úƒ´‚±ƒa))ÛÛMM)ƒµƒb)))ƒ¶‚±ƒag*+ÛÝMdMƒ·ƒb++ƒb++‚Ûƒ¸ƒ¹P ‚܃¸ƒb?3?4‚ۂ܂ۂ܀¤ƒ¸ƒ¹Pƒ¸ƒb?3?4ƒºƒb++`Nƒ»ƒbCC"ƒbCC" €¤`Oƒ¼ƒbHH&ƒbHH&€¤`Pƒ½ƒbMM$ƒbMM$€¤`Qƒ¾ƒbV VƒbV V€¤ƒ¿ƒbV!V"ƒÀ`RƒÁƒb` `ƒb` `€¤ƒÂƒb`` ƒÃƒb`"`&ƒÄ`SƒÅƒbn nƒbn n€¤ƒ¿ƒbn!n"ƒÆ`TƒÇƒbyyƒbyy  €¤`UƒÈƒb€‚€‚ƒb€‚€‚ €¤`VƒÉƒb€ƒ€ƒƒb€ƒ€ƒa  €¤`WƒËƒb€ˆ€ˆƒb€ˆ€ˆa  €¤`XƒÌƒb€ €ƒb€ €€¤ƒ¿ƒb€!€"ƒÍ`YƒÎƒb€—€—ƒb€—€—€¤€¬ƒb€—€—#`ZƒÏƒb€  € ƒb€  € €¤€¬ƒb€  € $`[ƒÐƒb€¨€¨ƒb€¨€¨€¤ƒ¿ƒb€¨€¨ƒÑƒb€¨#€¨$`\ƒÒƒb€¶€¶ƒb€¶€¶    €¤ƒÓƒb€¶€¶ƒÔƒb€¶#€¶'`]ƒÕƒb€Â €Â)ƒb€Â €Â)€¤ƒÖƒb€Â,€Â0`^ƒ×ƒb€Ù €Ù*ƒb€Ù €Ù*8  €¤ƒÔƒb€Ù+€Ù/ƒÓƒb€Ù0€Ù2ƒÙ`_ƒÚƒb€õ€õ#ƒb€õ€õ#€¤``ƒÛƒb€ÿ €ÿƒb€ÿ €ÿ€¤ƒÖƒb€ÿ€ÿƒÜ`aƒÝƒb !ƒb !€¤ƒ¿ƒb"#ƒÞ`bƒßƒb) )ƒb) )88€¤ƒàƒb) )$ƒÖƒb)%))ƒá`cƒâƒb99ƒb9988€¤ƒÔƒb99`*ƒØƒb€Ð €Ð*  ba  `a8ƒãƒb€Ñ€Ñ18ƒäƒäƒb€Ñ €Ñ ƒrƒb€Ò€Ò8ƒuƒb€Ò€Ò98ƒåƒåƒb€Ò €Ò ƒrƒb€Ó-€Ó1 ƒuƒb€ÓH€ÓL8ƒxƒb€ÓO€Ód8ƒæƒæƒb€Ó €Ó8ƒãƒb€Ô€Ô*8ƒçƒçƒb€Ô €Ô8ƒèƒèƒb€Õ €Õƒé‚±ƒaƒµ++ÝÝdd+‚ÝP‚²„‚Þ‚´‚²„‚µ‚² +  ba  `a €ôaac‚µa‚ßP‚²„‚à‚´‚²„#‚ßE‚ß‚à‚·c‚µ‚·‚áP‚²„‚â‚´‚²„E‚á‚â#‚áƒê‚±,,ããdd,ƒë‚²h h2,‚±¿-/ãådf-ƒì‚²l l-ƒí‚±ƒëŒ..ãäded‚͂҂²rr‚³†¨†¨‚ãP‚²r:r<„/%‚ã‚ãÿ¤AF) ™a‚Ò‚ÒP‚²r:r<ƒîd.ƒï‚²t t.ƒð‚±ƒë–//äåefe‚͂т²zz‚³†®†®‚äP‚²z\z^„/%E‚ä0#‚äÿ¤AF) ™a‚Ñ‚ÑP‚²z\z^ƒñe/‚¹‚²& &/, a4ac‚¹a/‚»c‚¹‚»‚åP‚²---/„‚æ‚´‚²-C-E„/G‚åE‚傿‚»c‚¹‚»‚çP‚²2.20„/H‚çE‚ç0‚Ác‚¹‚Á‚èP‚²7.70„‚é‚´‚²7173„‚ê‚‚²7O7V„‚낲7W7Z„/E‚è‚é‚èE‚ê‚ëE‚ê‚é‚Åc‚¹‚Å‚ìP‚²€½@„ƒ/ƒ‚²€½\€½b„ƒ0‚†‚²€½€…€½€‰„ƒ1‚‚²€½€Ú€½€á„/Eƒ-ƒ.Eƒ/ƒ.ƒ-ƒ0ƒ/ƒ0ƒ-#ƒ/ƒ1Eƒ1ƒ.ƒ!c‚¹ƒ!ƒ2P‚²€Ë9€Ë;„ƒ3‚´‚²€Ë<€Ë>„ƒ4t‚²€Ì/€Ì4„ƒ4ƒ"ƒ4ƒ4ƒ4ƒ4ƒ#ƒ44/Eƒ2ƒ3ƒ2Oƒ4Oƒ4ƒ(c‚¹ƒ(ƒ5P‚²€Ô2€Ô4„ƒ6‚´‚²€Ô5€Ô7„ƒ7t‚²€Õ.€Õ4„ 4/Eƒ5ƒ6ƒ5Oƒ7Oƒ7ƒ+c‚¹ƒ+ƒ8P‚²€Ü2€Ü4„ƒ9‚´‚²€Ü5€Ü7„ƒ:t‚²€Ü€“€Ü€™„ 4/Eƒ8ƒ9ƒ8Oƒ:Oƒ:ƒ.c‚¹ƒ.ƒ;P‚²€â?€âA„ƒ<‚´‚²€âB€âD„ƒ=t‚²€ã€ã$„ƒ=ƒ"ƒ=ƒ=ƒ=ƒ=ƒ/ƒ=ƒ=ƒ=ƒ#ƒ="4/Eƒ;ƒ<ƒ;Oƒ=Oƒ=ƒ2c‚¹ƒ2ƒ>P‚²€ì7€ì9„ƒ?‚´‚²€ì:€ì<„ƒ@t‚²€í,€í1„ƒ@ƒ"ƒ@ƒ@ƒ@ƒ@ƒ/ƒ@ƒ@ƒ@ƒ#ƒ@"/Eƒ>ƒ?ƒ>ƒ@ƒ@ƒ5c‚¹ƒ5ƒAP‚²€öN€öP„ ƒB‚´‚²€ö/€ö1„/EƒAƒBEƒAƒBƒ8c‚¹ƒ8ƒCP‚²€û*€û,„ƒD‚´‚²€û-€û/„/EƒCƒDƒCƒ:c‚¹ƒ:ƒEP‚²(*„ƒF‚´‚²+-„/EƒEƒFƒEƒEƒ=c‚¹ƒ=ƒGP‚²')„ƒH‚´‚²*,„/EƒGƒHƒGƒ@c‚¹ƒ@ƒIP‚² ( *„ƒJ‚´‚² + -„/EƒIƒJƒIƒCc‚¹ƒCƒKP‚²')„ƒL‚´‚²*,„/EƒKƒLƒKƒFc‚¹ƒFƒMP‚²)+„ƒN‚´‚²,.„/EƒMƒNEƒMƒNƒIc‚¹ƒIƒOP‚²-/„ƒP‚´‚²02„/EƒOƒPƒOEƒOƒPƒLc‚¹ƒLƒQP‚²35„ƒR‚´‚²68„ƒSt‚² , 1„ƒSƒ"ƒSƒSƒSƒSƒ#ƒS/EƒQƒRƒQƒSƒSƒOc‚¹ƒOƒTP‚²'('*„ƒU‚´‚²'+'-„/EƒTƒUEƒTƒUƒRc‚¹ƒRƒVP‚²,-,/„ƒW‚´‚²,0,2„/EƒVƒWƒVEƒVƒWƒUc‚¹ƒUƒXP‚²1315„ƒY‚´‚²1618„ƒZ‚†‚²1€’1€–„ 4/EƒXƒYƒXOƒZEƒXƒYƒXc‚¹ƒXƒ[P‚²6=6?„ƒ\‚´‚²6@6B„ƒ]‚†‚²6€œ6€ „ 4/Eƒ[ƒ\ƒ[Oƒ]Eƒ[ƒ\ƒ[c‚¹ƒ[ƒ^P‚²<3<5„ƒ_‚´‚²<6<8„ƒ`‚†‚²<€’<€–„ 4/Eƒ^ƒ_ƒ^Oƒ`Eƒ^ƒ_ƒ^c‚¹ƒ^ƒaP‚²B=B?„ƒb‚´‚²B@BB„ƒc‚†‚²B€œB€ „ 4/EƒaƒbƒaOƒcEƒaƒbƒò‚±00ddff0ƒóƒŽ 0f ƒôa9ƒõ‚±R11d£f‡!fƒöƒŽƒ‘  ƒdPƒŽBD„ 4Oƒdƒdÿ¤@PƒŽBDƒ÷ggƒøƒŽƒ‘  ƒePƒŽBD„ 4Oƒeƒeÿ¤@PƒŽBDƒùghƒúƒŽƒ‘  ƒfPƒŽBD„ 4Oƒfƒfÿ¤@PƒŽBDƒûgiƒüƒŽ  ƒ‘  ƒgPƒŽ B D„ 4Oƒgƒgÿ¤@PƒŽ B DƒýgjƒþƒŽ""ƒ‘  ƒhPƒŽ"B"D„ 4Oƒhƒhÿ¤@PƒŽ"B"Dƒÿgk„ƒŽ$$ƒ‘  ƒiPƒŽ$B$D„ 4Oƒiƒiÿ¤@PƒŽ$B$D„gl„ƒŽ''ƒ‘! ! ƒjPƒŽ'B'D„ 4ƒjOƒjÿ¤@PƒŽ'B'D„gm„ƒŽ))ƒ‘# # ƒkPƒŽ)B)D„ 4ƒkOƒkÿ¤@PƒŽ)B)D„gn„ƒŽ++ƒ‘% % ƒlPƒŽ+B+D„ 4ƒlOƒlÿ¤@PƒŽ+B+D„go„ƒŽ--ƒ‘' ' ƒmPƒŽ-B-D„ 4ƒmOƒmÿ¤@PƒŽ-B-D„ gp„ ƒŽ//ƒ‘) ) ƒnPƒŽ/B/D„ 4ƒnOƒnÿ¤@PƒŽ/B/D„ gq„ ƒŽ11ƒ‘+ + ƒoPƒŽ1B1D„ 4ƒoOƒoÿ¤@PƒŽ1B1D„ gr„ƒŽ44ƒ‘- - ƒpPƒŽ4B4D„ 4OƒpOƒpÿ¤@PƒŽ4B4D„gs„ƒŽ66ƒ‘/ / ƒqPƒŽ6B6D„ 4OƒqOƒqÿ¤@PƒŽ6B6D„gt„ƒŽ88ƒ‘1 1 ƒrPƒŽ8B8D„ 4OƒrOƒrÿ¤@PƒŽ8B8D„gu„ƒŽ::ƒ‘3 3 ƒsPƒŽ:B:D„ 4OƒsOƒsÿ¤@PƒŽ:B:D„gv„ƒŽ<<ƒ‘5 5 ƒtPƒŽ>ƒ‘7 7 ƒuPƒŽ>B>D„ 4OƒuOƒuÿ¤@PƒŽ>B>D„gx„ƒŽBBƒ‘;;ƒv‚oƒŽBYB[„ƒvƒwƒ"ƒvƒwƒxƒxƒw4ƒw‚pƒŽB`Bb„ƒvƒwƒ"ƒvƒwƒxƒxƒx‚zƒŽB€ŽB€„ƒvƒw4OƒvƒwOƒxÿ„@‚oƒŽBYB[‚pƒŽB`Bb‚zƒŽB€ŽB€„gy„ƒŽDDƒ‘<<ƒy‚oƒŽDZD\„ƒyƒzƒ"ƒyƒzƒ{ƒ{ƒzƒz‚pƒŽDaDc„ƒyƒzƒ"ƒyƒzƒ{ƒ{4ƒ{‚zƒŽD€D€‘„ƒyƒz4ƒyOƒzOƒ{ÿ„@‚oƒŽDZD\‚pƒŽDaDc‚zƒŽD€D€‘„gz„ƒŽFFƒ‘==ƒ|‚oƒŽF\F^„ƒ|ƒ}ƒ"ƒ|ƒ}ƒ~ƒ~ƒ}4ƒ}‚pƒŽFcFe„ƒ|ƒ}ƒ"ƒ|ƒ}ƒ~ƒ~4ƒ~‚zƒŽF€‘F€“„ƒ|ƒ}4Oƒ|Oƒ}Oƒ~ÿ„@‚oƒŽF\F^‚pƒŽFcFe‚zƒŽF€‘F€“„g{„ ƒŽIIƒ‘??ƒ‚oƒŽIYI[„ƒƒ€„!ƒƒ€ƒƒƒ€4ƒ€‚pƒŽI`Ib„ƒƒ€„!ƒƒ€ƒƒƒ‚zƒŽI€ŽI€„ƒƒ€4Oƒƒ€Oƒÿ„@‚oƒŽIYI[‚pƒŽI`Ib‚zƒŽI€ŽI€„"g|„#ƒŽKKƒ‘@@ƒ‚‚oƒŽKZK\„ƒ‚ƒƒ„!ƒ‚ƒƒƒ„ƒ„ƒƒƒƒ‚pƒŽKaKc„ƒ‚ƒƒ„!ƒ‚ƒƒƒ„ƒ„4ƒ„‚zƒŽK€K€‘„ƒ‚ƒƒ4ƒ‚OƒƒOƒ„ÿ„@‚oƒŽKZK\‚pƒŽKaKc‚zƒŽK€K€‘„$g}„%ƒŽMMƒ‘AAƒ…‚oƒŽM\M^„ƒ…ƒ†„!ƒ…ƒ†ƒ‡ƒ‡ƒ†4ƒ†‚pƒŽMcMe„ƒ…ƒ†„!ƒ…ƒ†ƒ‡ƒ‡4ƒ‡‚zƒŽM€‘M€“„ƒ…ƒ†4Oƒ…Oƒ†Oƒ‡ÿ„@‚oƒŽM\M^‚pƒŽMcMe‚zƒŽM€‘M€“„&g~„'ƒŽPPƒ‘CCƒˆ‚oƒŽPYP[„ƒˆƒ‰„(ƒˆƒ‰ƒŠƒŠƒ‰4ƒ‰‚pƒŽP`Pb„ƒˆƒ‰„(ƒˆƒ‰ƒŠƒŠƒŠ‚zƒŽP€ŽP€„ƒˆƒ‰4Oƒˆƒ‰OƒŠÿ„@‚oƒŽPYP[‚pƒŽP`Pb‚zƒŽP€ŽP€„)g„*ƒŽRRƒ‘DDƒ‹‚oƒŽRZR\„ƒ‹ƒŒ„(ƒ‹ƒŒƒƒƒŒƒŒ‚pƒŽRaRc„ƒ‹ƒŒ„(ƒ‹ƒŒƒƒ4ƒ‚zƒŽR€R€‘„ƒ‹ƒŒ4ƒ‹OƒŒOƒÿ„@‚oƒŽRZR\‚pƒŽRaRc‚zƒŽR€R€‘„+g€„,ƒŽTTƒ‘EEƒŽ‚oƒŽT\T^„ƒŽƒ„(ƒŽƒƒƒƒ4ƒ‚pƒŽTcTe„ƒŽƒ„(ƒŽƒƒƒ4ƒ‚zƒŽT€‘T€“„ƒŽƒ4OƒŽOƒOƒÿ„@‚oƒŽT\T^‚pƒŽTcTe‚zƒŽT€‘T€“„-g„.ƒŽWWƒ‘GGƒ‘‚oƒŽWYW[„ƒ‘ƒ’„/ƒ‘ƒ’ƒ“ƒ“ƒ’4ƒ’‚pƒŽW`Wb„ƒ‘ƒ’„/ƒ‘ƒ’ƒ“ƒ“ƒ“‚zƒŽW€ŽW€„ƒ‘ƒ’4Oƒ‘ƒ’Oƒ“ÿ„@‚oƒŽWYW[‚pƒŽW`Wb‚zƒŽW€ŽW€„0g‚„1ƒŽYYƒ‘HHƒ”‚oƒŽYZY\„ƒ”ƒ•„/ƒ”ƒ•ƒ–ƒ–ƒ•ƒ•‚pƒŽYaYc„ƒ”ƒ•„/ƒ”ƒ•ƒ–ƒ–4ƒ–‚zƒŽY€Y€‘„ƒ”ƒ•4ƒ”Oƒ•Oƒ–ÿ„@‚oƒŽYZY\‚pƒŽYaYc‚zƒŽY€Y€‘„2gƒ„3ƒŽ[[ƒ‘IIƒ—‚oƒŽ[\[^„ƒ—ƒ˜„/ƒ—ƒ˜ƒ™ƒ™ƒ˜4ƒ˜‚pƒŽ[c[e„ƒ—ƒ˜„/ƒ—ƒ˜ƒ™ƒ™4ƒ™‚zƒŽ[€‘[€“„ƒ—ƒ˜4Oƒ—Oƒ˜Oƒ™ÿ„@‚oƒŽ[\[^‚pƒŽ[c[e‚zƒŽ[€‘[€“„4g„„5ƒŽ^^ƒ‘KKƒš‚oƒŽ^Y^[„ƒšƒ›„6ƒšƒ›ƒœƒœƒ›4ƒ›‚pƒŽ^`^b„ƒšƒ›„6ƒšƒ›ƒœƒœƒœ‚zƒŽ^€Ž^€„ƒšƒ›4Oƒšƒ›Oƒœÿ„@‚oƒŽ^Y^[‚pƒŽ^`^b‚zƒŽ^€Ž^€„7g…„8ƒŽ``ƒ‘LLƒ‚oƒŽ`Z`\„ƒƒž„6ƒƒžƒŸƒŸƒžƒž‚pƒŽ`a`c„ƒƒž„6ƒƒžƒŸƒŸ4ƒŸ‚zƒŽ`€`€‘„ƒƒž4ƒOƒžOƒŸÿ„@‚oƒŽ`Z`\‚pƒŽ`a`c‚zƒŽ`€`€‘„9g†„:ƒŽbbƒ‘MMƒ ‚oƒŽb\b^„ƒ ƒ¡„6ƒ ƒ¡ƒ¢ƒ¢ƒ¡4ƒ¡‚pƒŽbcbe„ƒ ƒ¡„6ƒ ƒ¡ƒ¢ƒ¢4ƒ¢‚zƒŽb€‘b€“„ƒ ƒ¡4Oƒ Oƒ¡Oƒ¢ÿ„@‚oƒŽb\b^‚pƒŽbcbe‚zƒŽb€‘b€“„;g1„<ƒŽg g1- ¢a ? ‚a+„=‚±Ù 22£³‡—‡…„>ƒŽooƒ‘UUƒ£PƒŽoSoT„ƒ£„?ƒ£4Oƒ£Oÿ„@) ™a„>„>PƒŽoSoTƒŽo o%„@hˆ‚+„AƒŽwwƒ‘XXƒ¤PƒŽwSwT„ƒ¤„?ƒ¤$4Oƒ¤O$ÿ„@) ™a„A„APƒŽwSwTƒŽw w%„Bh‰‚2„CƒŽƒ‘[[ƒ¥PƒŽST„ƒ¥„?ƒ¥%4Oƒ¥O%ÿ„@) ™a„C„CPƒŽSTƒŽ %„DhŠ‚6„EƒŽ€‡€‡ƒ‘^^ƒ¦PƒŽ€‡S€‡T„ƒ¦„?ƒ¦&4Oƒ¦O&ÿ„@) ™a„E„EPƒŽ€‡S€‡TƒŽ€‡ €‡%„Fh‹[„GƒŽ€€ƒ‘aaƒ§PƒŽ€S€T„ƒ§„?ƒ§4Oƒ§Oÿ„@) ™a„G„GPƒŽ€S€TƒŽ€ €%„HhŒ„I„JƒŽ€•€•ƒ‘ddƒ¨‚jƒŽ€•W€•X„'4O'Oƒ¨ÿ„@) ™a„J„J‚jƒŽ€•W€•XƒŽ€• €•%„Kh‚:„LƒŽ€€ƒ‘ggƒ©PƒŽ€T€U„ƒ©„?ƒ©'4Oƒ©O'ÿ„@) ™a„L„LPƒŽ€T€UƒŽ€ €%„MhŽ‚>„NƒŽ€¥€¥ƒ‘jjƒªPƒŽ€¥T€¥U„ƒª„?ƒª(4OƒªO(ÿ„@) ™a„N„NPƒŽ€¥T€¥UƒŽ€¥ €¥%„Oh‚B„PƒŽ€­€­ƒ‘mmƒ«PƒŽ€­S€­T„ƒ«„?ƒ«)4Oƒ«O)ÿ„@) ™a„P„PPƒŽ€­S€­TƒŽ€­ €­%„Qh‚F„RƒŽ€µ€µƒ‘ppƒ¬PƒŽ€µS€µT„ƒ¬„?ƒ¬*4Oƒ¬O*ÿ„@) ™a„R„RPƒŽ€µS€µTƒŽ€µ €µ%„Sh‘‚„TƒŽ€½€½ƒ‘ssƒ­PƒŽ€½S€½T„ƒ­„?ƒ­!4Oƒ­O!ÿ„@) ™a„T„TPƒŽ€½S€½TƒŽ€½ €½%„Uh’‚#„VƒŽ€Å€Åƒ‘vvƒ®PƒŽ€ÅS€ÅT„ƒ®„?ƒ®"4Oƒ®O"ÿ„@) ™a„V„VPƒŽ€ÅS€ÅTƒŽ€Å €Å%„Wh“‚”„XƒŽ€Í€Íƒ‘yyƒ¯PƒŽ€ÍS€ÍT„ƒ¯„?ƒ¯,4Oƒ¯O,ÿ„@) ™a„X„XPƒŽ€ÍS€ÍTƒŽ€Í €Í%„Yh”„Z„[ƒŽ€Õ€Õƒ‘||ƒ°PƒŽ€ÕS€ÕT„ƒ°„?ƒ°:4Oƒ°O:ÿ„@) ™a„[„[PƒŽ€ÕS€ÕTƒŽ€Õ €Õ%„\h•„]„^ƒŽ€Ý€Ýƒ‘ƒ±PƒŽ€ÝM€ÝN„ƒ±„?ƒ±;4Oƒ±O;ÿ„@) ™a„^„^PƒŽ€ÝM€ÝNƒŽ€Ý€Ý"„_h–‚'„`ƒŽ€ä€äƒ‘€‚€‚ƒ²PƒŽ€äS€äT„ƒ²„?ƒ²#4Oƒ²O#ÿ„@) ™a„`„`PƒŽ€äS€äTƒŽ€ä!€ä&„ah2„b„c  2…3l³³——3„d„c +3„b;4l³³——4„e„c , .4„b„dî5l³³——5„f„c~/~:5„b„d„eN 6P³³——6„g„c€„ €„ 6k „ha<l„k„b„d„e„f77³³——7„l„c€ˆ €ˆ 7k „ha<m„n„b„d„e„f88³³——8„o„c€Œ €Œ 8k „ha<n„p„b„d„e„f99³³——9„q„c€ € 9k „ha<o„s„b„d„e„f::³³——:ƒc„c€” €” :k „ha<p„u„b„d„e„f;;³³——;„v„c€˜ €˜ ;k „ha<q„x„b„d„e„f<<³³——<„y„c€œ €œ <k „ha<r„{„b„d„e„f==³³——=„|„c€  €  =k „ha<s„~„b„d„e„f>>³³——>„„c€¤ €¤ >k „ha<t„„b„d„e„f??³³——?„‚„c€¨ €¨ ?k „ha<u„„„b„d„e„f@@³³——@„…„c€¬ €¬ @k „ha<v„‡„b„d„e„fAA³³——A„ˆ„c€° €° Ak „ha<w„Š„b„d„e„fBB³³——B„‹„c€´ €´ Bk „ha<x„„b„d„e„fCC³³——C„Ž„c€¸ €¸ Ck „ha<y„„b„d„e„fDD³³——D„‘„c€¼ €¼ Dk „ha<z„“„b„d„e„fEE³³——E„”„c€À €À Ek „ha<{„–„b„d„e„fFF³³——F„—„c€Ä €Ä Fk „ha<|„˜„b„d„e„fGG³³——G„™„c€È €È Gk „ha<}„›„b„d„e„fHH³³——HP„c€Ì €Ì Hk „ha<~„„b„d„e„fII³³——I„ž„c€Ð €Ð Ik „ha<„ „b„d„e„fJJ³³——J„¡„c€Ô €Ô Jk „ha<€€„£„b„d„e„fKK³³——K„¤„c€Ø €Ø Kk „ha<€„¦„b„d„e„fLL³³——L„§„c€Ü €Ü Lk „ha<€‚„©„b„d„e„fMM³³——M„ª„c€à €à Mk „ha<€ƒ„¬„b„d„e„fNN³³——N„­„c€ä €ä Nk „ha<€„„¯„b„d„e„fOO³³——O„°„c€è €è Ok „ha<€…„²„b„d„e„fPP³³——P„i„c / 8P„b„d„e Ql³³——Q„j„c Qk „ha<„³„b„d„e„iRR³³——R„´„c Rk „ha<l„µ„b„d„e„iSS³³——S„m„c Sk „ha<„¶„b„d„e„iTT³³——Tc„c Tk „ha<„·„b„d„e„iUU³³——U„r„c" "Uk „ha<„¸„b„d„e„iVV³³——V„t„c& &Vk „ha<„¹„b„d„e„iWW³³——W„w„c* * Wk „ha<„º„b„d„e„iXX³³——X„z„c. .Xk „ha<„»„b„d„e„iYY³³——Y„}„c2 2Yk „ha<n„¼„b„d„e„iZZ³³——Z„€„c6 6Zk „ha<lmnn„½„b„d„e„i[[³³——[„ƒ„c: :[k „ha<tll„¾„b„d„e„i\\³³——\„†„c> >\k „ha<lt„¿„b„d„e„i]]³³——]„‰„cB B ]k „ha<vn„À„b„d„e„i^^³³——^„Œ„cF F^k „ha<on„Á„b„d„e„i__³³——_„„cJ J _k „ha<wo„„b„d„e„i``³³——`„’„cN N`k „ha<xy„Äb„d„e„iaa³³——a„—„cR R ak „ha<yo„Ä„b„d„e„ibb³³——b„•„cV Vbk „ha<oy„Å„b„d„e„icc³³——c„š„cZ Zck „ha<ny„Æ„b„d„e„idd³³——d„œ„c^ ^dk „ha<}ll„Ç„b„d„e„iee³³——e„±„cb bek „ha<}o„È„b„d„e„iff³³——f„Ÿ„cf ffk „ha<r„É„b„d„e„igg³³——g„¢„cj j gk „ha<ll„Ê„b„d„e„ihh³³——h„¥„cn nhk „ha<n„Ë„b„d„e„iii³³——i„¨„cr r ik „ha<vm„Ì„b„d„e„ijj³³——j„«„cv vjk „ha<vm„Í„b„d„e„ikk³³——k„®„cz zkk „ha<qn„΄b„d„e„ill³³——l „Ï  lòm³ —¶€¦—a„Єу³„҄Єƒ´Z„Ð!„ƒµ„Ó„Ð"*„ƒ¶‚„Ð+2„€†ƒ³ƒ´ƒµƒ¶ÿ´@€†„Ò„ÐZ„Ð!„Ó„Ð"*‚„Ð+2„Ð „Õ€†˜„Ö„Ð „у·„҄Єƒ¸Z„Ð!„ƒ¹„Ó„Ð"*„ƒº‚„Ð+2„€†ƒ·ƒ¸ƒ¹ƒºÿ¤@€†„Ò„ÐZ„Ð!„Ó„Ð"*‚„Ð+2„×€†™a„Ð--„у»„Ò„Ð((„ƒ¼Z„Ð((!„ƒ½„Ó„Ð("(*„ƒ¾‚„Ð(+(2„ƒ¿„Ø„Ð(3(9„€‡ƒ»ƒ¼ƒ½ƒ¾ƒ¿ÿ´@€‡„Ò„Ð((Z„Ð((!„Ó„Ð("(*‚„Ð(+(2„Ø„Ð(3(9„Ð- -„Ú€‡ša„Û „Üzz ÿ´@„Ý›„Ö„Û€‚€‚„Üyyÿ¤@„Þœa„Û€†€† „Üw wÿ´@„Û€†€†„ßa„Û€€ „Ü~ ~ÿ´@ „à ža„Û€œ€œ „Ü€Ü €Ü%=ÿ´@€ˆ„ Ÿa„Û€­€­ „Ü€ƒ €ƒ'>ÿ´@€‰„䀉 a„Û€¾€¾ „Ü€ˆ €ˆ)?ÿ´@€Š„怊¡a„Û€Ç€Ç „Ü€ç €ç@ÿ´@€‹„耋¢a„Û€Ñ€Ñ „Ü€ì €ì<ÿ´@k„ék£a„Û€Û€Û „Ü€ñ €ñ.Aÿ´@€Œ„뀌¤a„Û€ä€ä „Ü€ö €öBÿ´@€„퀥a„Û€í€í „Ü€û €ûÿ´@,„î,¦a„Û€ø€ø „Ü€ €"Cÿ´@€Ž„ð€Ž§a„Û „Ü Dÿ´@€„ò€¨a„Û  „Ü€ €Eÿ´@€„ô€©a„Û „Ü€¢ €¢Fÿ´@€‘„ö€‘ª„Ö„Û  „Ü€™€™Gÿ¤@€’„ø€’«a„Û%% „Ü€— €—%Gÿ´@€’„Û%%„ù€’¬a„Û// „Ü€’ €’Hÿ´@€“„û€“­a„Û:: „Ü€´ €´Iÿ´@€”„ý€”®a„ÛEE „Ü€¹ €¹#Jÿ´@€•„ÿ€•¯a„ÛPP „܀à €Ã$Kÿ´@€–…€–°a„ÛZZ „Ü€¾ €¾&Lÿ´@€—…€—±a„Ûdd „Ü4 4!2ÿ´@K„Ûdd…K²„Ûff„Ü==2ÿ¤@K…K³…„Ûhh„Ü>'>*2ÿ¤@K…K´…„Ûhh„Ü>=>@2ÿ¤@K… Kµ… „Ûjj„Ü? ?#2ÿ¤@K… K¶… „Ûjj„Ü?5?82ÿ¤@K… K·…„Ûll„Ü@!@$2ÿ¤@K…K¸…„Ûll„Ü@4@72ÿ¤@K…K¹…„Ûnn„ÜA&A)2ÿ¤@K…Kº…„Ûnn„ÜA>AA2ÿ¤@K…K»…„Ûpp „ÜB(B+2ÿ¤@K…K¼…„Ûpp „ÜB?BB2ÿ¤@K…K½…„Ûrr%„ÜD-D02ÿ¤@K…K¾…„Ûrr%„ÜDKDN2ÿ¤@K…K¿…„Ûtt.„ÜE6E92ÿ¤@K…KÀ… „Ûtt.„ÜE\E_2ÿ¤@K…!KÁa„Û~~ „ÜI I%3ÿ´@L…"LÂa„ÛŒŒ „Ü€È €Èÿ´@ …# Ãa„Û–– „Ü€Í €Í Mÿ´@€˜…%€˜Äa„ÛŸŸ „Ü€Ò €Ò"Nÿ´@€™…'€™Åa„Û­­ „Ü€× €×ÿ´@ …( Æ…)„Û¸¸„Ü€¯€¯Oÿ¤@€š…+€šÇa„Û»» „Ü€°€° Oÿ´@€š…,€šÈa„Û¿¿ „Ü€­ €­Oÿ´@€š…-„Û¿¿….€šÉa„ÛÈÈ „Üj j"ÿ´@…/Êa„ÛÒÒ „Üt t/Pÿ´@€›…1€›Ëa„ÛÜÜ „Üo o$Qÿ´@€œ…3€œÌ…4„Ûåå„Ü€ã€ãÿ¤@)…5)Ía„Ûéé „Ü€á €áÿ´@)…6„Ûéé…7)΄Ö„Ûòò„Ü€©€©Rÿ¤@€…9€Ïa„Ûöö „Ü€§ €§"Rÿ´@€„Ûöö…:€Ð…;„Û‚‚„ÜSÿ¤@€ž…=€žÑ…>„Û‚‚„ÜSÿ¤@€ž…?€žÒ…@„Û‚‚„Ü  Sÿ¤@€ž…A€žÓa„Û‚ ‚ „Ü ,Sÿ´@€ž…B„Û‚ ‚ …C„Û‚ ‚ …D„Û‚ &‚ -…E€žÔ…F„Û‚‚#„Ü%TUÿ¤@€Ÿ…I€ŸÕ…J„Û‚‚„ÜTÿ¤@€Ÿ…K€ŸÖ…L„Û‚‚„ÜTÿ¤@€Ÿ…M€Ÿ×a„Û‚‚ „Ü UTÿ´@€Ÿ…N„Û‚‚"…O€ŸØa„Û‚"‚" „Ü UTÿ´@€Ÿ…N„Û‚"‚""…P„Û‚":‚"H…Q€ŸÙa„Û‚&‚& „Ü $UTÿ´@€Ÿ…N„Û‚&‚&"…R„Û‚&:‚&G…P„Û‚&P‚&^…S€ŸÚ…T„Û‚0‚0„ÜVÿ¤@€¡…V€¡Ûa„Û‚4‚4 „Ü 'Vÿ´@€¡…W„Û‚4‚4…X€¡Ü…Y„Û‚>‚>„Ü"" ÿ¤@-…Z-Ýa„Û‚B‚B „Ü + ÿ´@-…[„Û‚B‚B…\-Þ…]„Û‚K‚K„Ü((Wÿ¤@€¢…_€¢ßa„Û‚O‚O „Ü& &Wÿ´@€¢…`„Û‚O‚O…a€¢à…b„Û‚X‚X„Ü..XHÿ¤@€£…d€£áa„Û‚\‚\ „Ü, ,+Xÿ´@€£…e„Û‚\‚\…f€£â„Ö„Û‚i‚i„ÜPPYÿ¤@€¤…h€¤ãa„Û‚m‚m „ÜN N)Yÿ´@€¤„Û‚m‚m…i€¤ä…]„Û‚u‚u„ÜXXZÿ¤@€¥…k€¥å…l„Û‚w‚w„ÜYYZÿ¤@€¥…m€¥æ…n„Û‚z‚z„ÜZZ!Zÿ¤@€¥…o€¥ç…p„Û‚z‚z„ÜZ2Z5Zÿ¤@€¥…q€¥è…r„Û‚|‚|„Ü[["Zÿ¤@€¥…s€¥é…t„Û‚|‚|„Ü[4[7Zÿ¤@€¥…u€¥êa„Û‚~‚~ „ÜT T!Zÿ´@€¥…`„Û‚~‚~…v„Û‚~‚~,…w€¥ëa„Û‚Š‚Š „Ü` `-ÿ´@B…xBìa„Û‚—‚— „Üe e%.ÿ´@C…yCía„Û‚¢‚¢ „Üy y(+ÿ´@?…z?î…{„Û‚±‚±„Ü€€9ÿ¤@f…|fïa„Û‚´‚´ „Ü 9ÿ´@f…}fða„Û‚¹‚¹ „Ü~ ~9ÿ´@f…~„Û‚¹‚¹…fñ…€„Û…M …M„Û…M …MƒÀ‚o„Û…M…MŽƒÁ‚p„Û…M…MŽ€¦ƒÀƒÁ€¬€¦…€‚o„Û…M…M‚p„Û…M…M€¦ò…€„Û…M …M„Û…M …MƒÂ‚o„Û…M…MŽƒÃ‚p„Û…M…MŽ€¦ƒÂƒÃ€¦ƒÂƒÃ€¬€¦…€€§€¦ƒÂƒÃ€¦ƒÂƒÃ‚o„Û…M…M‚p„Û…M…M€¦ó…€„Û…M …M„Û…M …MƒÄ‚o„Û…M…MŽƒÅ‚p„Û…M…MŽ€¦ƒÄƒÅ[€¬€¦…€\[‚o„Û…M…M‚p„Û…M…M€¦ô……„Û…M …M„Û…M …MƒÆ‚o„Û…M…MŽƒÇ‚p„Û…M…MŽ€¦ƒÆƒÇ€¬€¦……‚o„Û…M…M‚p„Û…M…M€¦õ……„Û…M …M„Û…M …MƒÈ‚o„Û…M…MŽƒÉ‚p„Û…M…MŽ€¦ƒÈƒÉ]€¬€¦……^]‚o„Û…M…M‚p„Û…M…M€¦ö„Û…M …M„Û…M …MƒÊ‚o„Û…M…MŽƒË‚p„Û…M…MŽ€¦ƒÊƒË]€¬€¦^]‚o„Û…M…M‚p„Û…M…M€¦÷…€„Û…V …V„Û…V …VƒÌ‚o„Û…V…VŽƒÍ‚p„Û…V…VŽƒÎ‚z„Û…V…VŽ;ƒÌƒÍƒÎ€¬;…€‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;ø…€„Û…V …V„Û…V …VƒÏ‚o„Û…V…VŽƒÐ‚p„Û…V…VŽƒÑ‚z„Û…V…VŽ;ƒÏƒÐƒÑ;ƒÏƒÐƒÑ€¬;…€€§;ƒÏƒÐƒÑ;ƒÏƒÐƒÑ‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;ù…€„Û…V …V„Û…V …VƒÒ‚o„Û…V…VŽƒÓ‚p„Û…V…VŽƒÔ‚z„Û…V…VŽ;ƒÒƒÓƒÔ[€¬;…€\[‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;ú……„Û…V …V„Û…V …VƒÕ‚o„Û…V…VŽƒÖ‚p„Û…V…VŽƒ×‚z„Û…V…VŽ;ƒÕƒÖƒ×€¬;……‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;û……„Û…V …V„Û…V …VƒØ‚o„Û…V…VŽƒÙ‚p„Û…V…VŽƒÚ‚z„Û…V…VŽ;ƒØƒÙƒÚ]€¬;……^]‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;ü„Û…V …V„Û…V …VƒÛ‚o„Û…V…VŽƒÜ‚p„Û…V…VŽƒÝ‚z„Û…V…VŽ;ƒÛƒÜƒÝ]€¬;^]‚o„Û…V…V‚p„Û…V…V‚z„Û…V…V;ý…€„Û…a …a„Û…a …aƒÞ‚o„Û…a…aŽƒß‚p„Û…a…aŽƒà‚z„Û…a…aŽƒáƒy„Û…a…aŽ€¬ƒÞƒßƒàƒá€¬€¬…€‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬þ…€„Û…a …a„Û…a …aƒâ‚o„Û…a…aŽƒã‚p„Û…a…aŽƒä‚z„Û…a…aŽƒåƒy„Û…a…aŽ€¬ƒâƒãƒäƒå€¬ƒâƒãƒäƒå€¬€¬…€€§€¬ƒâƒãƒäƒå€¬ƒâƒãƒäƒå‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬ÿ…€„Û…a …a„Û…a …aƒæ‚o„Û…a…aŽƒç‚p„Û…a…aŽƒè‚z„Û…a…aŽƒéƒy„Û…a…aŽ€¬ƒæƒçƒèƒé[€¬€¬…€\[‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬‚……„Û…a …a„Û…a …aƒê‚o„Û…a…aŽƒë‚p„Û…a…aŽƒì‚z„Û…a…aŽƒíƒy„Û…a…aŽ€¬ƒêƒëƒìƒí€¬€¬……‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬‚……„Û…a …a„Û…a …aƒî‚o„Û…a…aŽƒï‚p„Û…a…aŽƒð‚z„Û…a…aŽƒñƒy„Û…a…aŽ€¬ƒîƒïƒðƒñ]€¬€¬……^]‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬‚„Û…a …a„Û…a …aƒò‚o„Û…a…aŽƒó‚p„Û…a…aŽƒô‚z„Û…a…aŽƒõƒy„Û…a…aŽ€¬ƒòƒóƒôƒõ]€¬€¬^]‚o„Û…a…a‚p„Û…a…a‚z„Û…a…aƒy„Û…a…a€¬‚…€„Û…n …n„Û…n …nƒö‚o„Û…n…nŽƒ÷‚p„Û…n…nŽƒø‚z„Û…n…nŽƒùƒy„Û…n…nŽƒúƒ}„Û…n …n#Ž€­ƒöƒ÷ƒøƒùƒú€¬€­…€‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚…€„Û…n …n„Û…n …nƒû‚o„Û…n…nŽƒü‚p„Û…n…nŽƒý‚z„Û…n…nŽƒþƒy„Û…n…nŽƒÿƒ}„Û…n …n#Ž€­ƒûƒüƒýƒþƒÿ€­ƒûƒüƒýƒþƒÿ€¬€­…€€§€­ƒûƒüƒýƒþƒÿ€­ƒûƒüƒýƒþƒÿ‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚…€„Û…n …n„Û…n …n„‚o„Û…n…nŽ„‚p„Û…n…nŽ„‚z„Û…n…nŽ„ƒy„Û…n…nŽ„ƒ}„Û…n …n#Ž€­„„„„„[€¬€­…€\[‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚……„Û…n …n„Û…n …n„‚o„Û…n…nŽ„‚p„Û…n…nŽ„‚z„Û…n…nŽ„ƒy„Û…n…nŽ„ ƒ}„Û…n …n#Ž€­„„„„„ €¬€­……‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚……„Û…n …n„Û…n …n„ ‚o„Û…n…nŽ„ ‚p„Û…n…nŽ„ ‚z„Û…n…nŽ„ ƒy„Û…n…nŽ„ƒ}„Û…n …n#Ž€­„ „ „ „ „]€¬€­……^]‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚„Û…n …n„Û…n …n„‚o„Û…n…nŽ„‚p„Û…n…nŽ„‚z„Û…n…nŽ„ƒy„Û…n…nŽ„ƒ}„Û…n …n#Ž€­„„„„„]€¬€­^]‚o„Û…n…n‚p„Û…n…n‚z„Û…n…nƒy„Û…n…nƒ}„Û…n …n#€­‚ …€„Û…} …}„Û…} …}„‚o„Û…}…}Ž„‚p„Û…}…}Ž„‚z„Û…}…}Ž„ƒy„Û…}…}Ž„ƒ}„Û…} …}#Ž„ƒ„Û…}$…}'Ž€®„„„„„„€¬€®…€‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚ …€„Û…} …}„Û…} …}„‚o„Û…}…}Ž„‚p„Û…}…}Ž„‚z„Û…}…}Ž„ƒy„Û…}…}Ž„ƒ}„Û…} …}#Ž„ƒ„Û…}$…}'Ž€®„„„„„„€®„„„„„„€¬€®…€€§€®„„„„„„€®„„„„„„‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚ …€„Û…} …}„Û…} …}„ ‚o„Û…}…}Ž„!‚p„Û…}…}Ž„"‚z„Û…}…}Ž„#ƒy„Û…}…}Ž„$ƒ}„Û…} …}#Ž„%ƒ„Û…}$…}'Ž€®„ „!„"„#„$„%[€¬€®…€\[‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚ ……„Û…} …}„Û…} …}„&‚o„Û…}…}Ž„'‚p„Û…}…}Ž„(‚z„Û…}…}Ž„)ƒy„Û…}…}Ž„*ƒ}„Û…} …}#Ž„+ƒ„Û…}$…}'Ž€®„&„'„(„)„*„+€¬€®……‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚ ……„Û…} …}„Û…} …}„,‚o„Û…}…}Ž„-‚p„Û…}…}Ž„.‚z„Û…}…}Ž„/ƒy„Û…}…}Ž„0ƒ}„Û…} …}#Ž„1ƒ„Û…}$…}'Ž€®„,„-„.„/„0„1]€¬€®……^]‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚„Û…} …}„Û…} …}„2‚o„Û…}…}Ž„3‚p„Û…}…}Ž„4‚z„Û…}…}Ž„5ƒy„Û…}…}Ž„6ƒ}„Û…} …}#Ž„7ƒ„Û…}$…}'Ž€®„2„3„4„5„6„7]€¬€®^]‚o„Û…}…}‚p„Û…}…}‚z„Û…}…}ƒy„Û…}…}ƒ}„Û…} …}#ƒ„Û…}$…}'€®‚…€„Û…Ž …Ž„Û…Ž …Ž„8‚o„Û…Ž…ŽŽ„9‚p„Û…Ž…ŽŽ„:‚z„Û…Ž…ŽŽ„;ƒy„Û…Ž…ŽŽ„<ƒ}„Û…Ž …Ž#Ž„=ƒ„Û…Ž$…Ž'Ž„>ƒ…„Û…Ž(…Ž+Ž€¯„8„9„:„;„<„=„>€¬€¯…€‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚…€„Û…Ž …Ž„Û…Ž …Ž„?‚o„Û…Ž…ŽŽ„@‚p„Û…Ž…ŽŽ„A‚z„Û…Ž…ŽŽ„Bƒy„Û…Ž…ŽŽ„Cƒ}„Û…Ž …Ž#Ž„Dƒ„Û…Ž$…Ž'Ž„Eƒ…„Û…Ž(…Ž+Ž€¯„?„@„A„B„C„D„E€¯„?„@„A„B„C„D„E€¬€¯…€€§€¯„?„@„A„B„C„D„E€¯„?„@„A„B„C„D„E‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚…€„Û…Ž …Ž„Û…Ž …Ž„F‚o„Û…Ž…ŽŽ„G‚p„Û…Ž…ŽŽ„H‚z„Û…Ž…ŽŽ„Iƒy„Û…Ž…ŽŽ„Jƒ}„Û…Ž …Ž#Ž„Kƒ„Û…Ž$…Ž'Ž„Lƒ…„Û…Ž(…Ž+Ž€¯„F„G„H„I„J„K„L[€¬€¯…€\[‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚……„Û…Ž …Ž„Û…Ž …Ž„M‚o„Û…Ž…ŽŽ„N‚p„Û…Ž…ŽŽ„O‚z„Û…Ž…ŽŽ„Pƒy„Û…Ž…ŽŽ„Qƒ}„Û…Ž …Ž#Ž„Rƒ„Û…Ž$…Ž'Ž„Sƒ…„Û…Ž(…Ž+Ž€¯„M„N„O„P„Q„R„S€¬€¯……‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚……„Û…Ž …Ž„Û…Ž …Ž„T‚o„Û…Ž…ŽŽ„U‚p„Û…Ž…ŽŽ„V‚z„Û…Ž…ŽŽ„Wƒy„Û…Ž…ŽŽ„Xƒ}„Û…Ž …Ž#Ž„Yƒ„Û…Ž$…Ž'Ž„Zƒ…„Û…Ž(…Ž+Ž€¯„T„U„V„W„X„Y„Z]€¬€¯……^]‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚„Û…Ž …Ž„Û…Ž …Ž„[‚o„Û…Ž…ŽŽ„\‚p„Û…Ž…ŽŽ„]‚z„Û…Ž…ŽŽ„^ƒy„Û…Ž…ŽŽ„_ƒ}„Û…Ž …Ž#Ž„`ƒ„Û…Ž$…Ž'Ž„aƒ…„Û…Ž(…Ž+Ž€¯„[„\„]„^„_„`„a]€¬€¯^]‚o„Û…Ž…Ž‚p„Û…Ž…Ž‚z„Û…Ž…Žƒy„Û…Ž…Žƒ}„Û…Ž …Ž#ƒ„Û…Ž$…Ž'ƒ…„Û…Ž(…Ž+€¯‚……„Û…¤…¤#„Û…¤…¤#_€¬€±……€±‚……„Û…¤…¤#„Û…¤…¤#_]€¬€±……^]€±‚„Û…¤…¤#„Û…¤…¤#_]€¬€±^]€±‚…„Û…°…°„Ü‹³‹³„bP„Û…°…°„`ÿ´@€²P„Û…°…°…€²‚a„Û…³…³ „Ü‹² ‹²`ÿ´@€²…€²‚…‘„Û…¼…¼„Ü‹·‹·„cP„Û…¸…¸„„d‚j„Û…¸…¸„€³„c„d„c„dÿ´@€³P„Û…¸…¸‚j„Û…¸…¸…“„Û…¼!…¼%…”€³‚…•„Û…Â…Â!„ÜŒ/Œ/!„eP„Û…¸…¸„„f‚j„Û…¸…¸„„e„f€´„e„fÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸…“„Û…Â$…Â(…—€³‚…•„Û…Æ…Æ!„ÜŒ-Œ-!„gP„Û…¸…¸„„h‚j„Û…¸…¸„€´„g„h„g„hÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸…˜„Û…Æ$…Æ-…™€³‚…š„Û…Ë…Ë!„ÜŒ2Œ2!„iP„Û…¸…¸„„j‚j„Û…¸…¸„„i„j€´„i„jÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸…“„Û…Ë$…Ë(…›€³‚…œ„Û…Ï…Ï#„ÜŒ1Œ1#„kP„Û…¸…¸„„l‚j„Û…¸…¸„€´„k„l„k„lÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸…˜„Û…Ï&…Ï/…€³‚…ž„Û…Ú…Ú „ÜŒ7Œ7 „mP„Û…¸…¸„„n‚j„Û…¸…¸„„o„Ž„Û…Ú>…Ú@„„p„ˆ„Û…ÚD…ÚF„„q…Ÿ„Û…ÚJ…ÚL„„r… „Û…ÚP…ÚR„€³„m„n„o„p„q„r„m„n„o„p„q„rÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸„Ž„Û…Ú>…Ú@„ˆ„Û…ÚD…ÚF…Ÿ„Û…ÚJ…ÚL… „Û…ÚP…ÚR…“„Û…Ú#…Ú'…¡„Û…ÚW…Ú[…¢„Û…Úa…Úe…£„Û…Úk…Úo…¤„Û…Úu…Úy…¥„Û…Ú…Ú€ƒ…¦€³‚ …ž„Û…ã…ã „ÜŒ6Œ6 „sP„Û…¸…¸„„t‚j„Û…¸…¸„„u„Ž„Û…ã>…ã@„„v„ˆ„Û…ãD…ãF„„w…Ÿ„Û…ãJ…ãL„€³„s„t„u„v„w„s„t„u„v„wÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸„Ž„Û…ã>…ã@„ˆ„Û…ãD…ãF…Ÿ„Û…ãJ…ãL…“„Û…ã#…ã'…¡„Û…ãQ…ãU…¢„Û…ã[…ã_…£„Û…ãe…ãi…¤„Û…ão…ãs…§€³‚!…ž„Û…ë…ë „ÜŒ5Œ5 „xP„Û…¸…¸„„y‚j„Û…¸…¸„„z„Ž„Û…ë>…ë@„„{„ˆ„Û…ëD…ëF„€³„x„y„z„{„x„y„z„{ÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸„Ž„Û…ë>…ë@„ˆ„Û…ëD…ëF…“„Û…ë#…ë'…¡„Û…ëK…ëO…¢„Û…ëU…ëY…£„Û…ë_…ëc…¨€³‚"…ž„Û…ò…ò „ÜŒ4Œ4 „|P„Û…¸…¸„„}‚j„Û…¸…¸„„~„Ž„Û…ò>…ò@„€³„|„}„~„|„}„~ÿ¤@€³P„Û…¸…¸‚j„Û…¸…¸„Ž„Û…ò>…ò@…“„Û…ò#…ò'…¡„Û…òE…òI…¢„Û…òO…òS…©€³‚#a„Û…ö…ö „Ü‹¶ ‹¶„P„Û…¸…¸„„€‚j„Û…¸…¸„€³„„€ÿ´@€³P„Û…¸…¸‚j„Û…¸…¸…ª€³‚$…«„Û††#„ÜŒ<Œ<#„P„Û†:†<„€µ„„ÿ¤@€¶P„Û†:†<‚w„Û†,†2…®€¶‚%…«„Û††#„ÜŒ?Œ?#„‚P„Û†@†B„„ƒ‚j„Û†C†E„€´„‚„ƒ„‚„ƒÿ¤@€¶P„Û†@†B‚j„Û†C†E…˜„Û†,†5…¯€¶‚&…°„Û† † $„ÜŒAŒA$„„‚o„Û† -† 0„„…‚p„Û† 3† 6„„†‚j„Û† :† <„„„„…„†„„„…„†ÿ¤@€¶‚o„Û† -† 0‚p„Û† 3† 6‚j„Û† :† <…“„Û† '† +…±€¶‚'…°„Û††$„ÜŒBŒB$„‡‚o„Û†-†0„„ˆ‚p„Û†3†6„„‰‚z„Û†9†<„„Š‚j„Û†@†B„„‡„ˆ„‰„Š„‡„ˆ„‰„Šÿ¤@€¶‚o„Û†-†0‚p„Û†3†6‚z„Û†9†<‚j„Û†@†B…“„Û†'†+…²€¶‚(…°„Û††$„ÜŒCŒC$„‹‚o„Û†-†0„„Œ‚p„Û†3†6„„‚z„Û†9†<„„Žƒy„Û†?†B„„‚j„Û†F†H„„‹„Œ„„Ž„„‹„Œ„„Ž„ÿ¤@€¶‚o„Û†-†0‚p„Û†3†6‚z„Û†9†<ƒy„Û†?†B‚j„Û†F†H…“„Û†'†+…³€¶‚)…°„Û††$„ÜŒDŒD$„‚o„Û†-†0„„‘‚p„Û†3†6„„’‚z„Û†9†<„„“ƒy„Û†?†B„„”ƒ}„Û†E†H„„•‚j„Û†L†N„„„‘„’„“„”„•„„‘„’„“„”„•ÿ¤@€¶‚o„Û†-†0‚p„Û†3†6‚z„Û†9†<ƒy„Û†?†Bƒ}„Û†E†H‚j„Û†L†N…“„Û†'†+…´€¶‚*…€„Û†† †† „Û†† †† „–P„Û†† ††Ž€·„–€¬€·…€P„Û†† ††€·‚+…€„Û†† †† „Û†† †† „—P„Û†† ††Ž€·„—€·„—€¬€·…€€§€·„—€·„—P„Û†† ††€·‚,…€„Û†† †† „Û†† †† „˜P„Û†† ††Ž€·„˜[€¬€·…€\[P„Û†† ††€·‚-……„Û†† †† „Û†† †† „™P„Û†† ††Ž€·„™€¬€·……P„Û†† ††€·‚.……„Û†† †† „Û†† †† „šP„Û†† ††Ž€·„š]€¬€·……^]P„Û†† ††€·‚/„Û†† †† „Û†† †† „›P„Û†† ††Ž€·„›]€¬€·^]P„Û†† ††€·‚0„Ö„Û†Š†Š„ÜŒZŒZ„œP„Û†† ††Ž€·„œ„œÿ¤@€·P„Û†† ††…¶€·‚1…·„Û†Š†Š„ÜŒ[Œ[„P„Û†† ††Ž€·„„ÿ¤@€·P„Û†† ††…¸€·‚2…€„Û†¢ †¢„Û†¢ †¢„žP„Û†¢†¢Ž€¸„ž€¬€¸…€P„Û†¢†¢€¸‚3…€„Û†¢ †¢„Û†¢ †¢„ŸP„Û†¢†¢Ž€¸„Ÿ€¸„Ÿ€¬€¸…€€§€¸„Ÿ€¸„ŸP„Û†¢†¢€¸‚4…€„Û†¢ †¢„Û†¢ †¢„ P„Û†¢†¢Ž€¸„ [€¬€¸…€\[P„Û†¢†¢€¸‚5……„Û†¢ †¢„Û†¢ †¢„¡P„Û†¢†¢Ž€¸„¡€¬€¸……P„Û†¢†¢€¸‚6……„Û†¢ †¢„Û†¢ †¢„¢P„Û†¢†¢Ž€¸„¢]€¬€¸……^]P„Û†¢†¢€¸‚7„Û†¢ †¢„Û†¢ †¢„£P„Û†¢†¢Ž€¸„£]€¬€¸^]P„Û†¢†¢€¸‚8…º„Û†¬†¬„ÜŒƒŒƒ„¤P„Û†¢†¢Ž„¤ÿ¤@€¸P„Û†¢†¢…»€¸‚9…¼„Û†±†±„ÜŒ…Œ…„¥P„Û†¢†¢Ž„¥„¥ÿ¤@€¸P„Û†¢†¢„Û†±†±"…½€¸‚:„Ö„Û†µ†µ„ÜŒqŒq„¦P„Û†¢†¢Ž€¸„¦„¦ÿ¤@€¸- ¢a P„Û†¢†¢…¾€¸‚;…¿„Û†¸†¸„ÜŒ}Œ}„§P„Û†¢†¢Ž€¸„§ÿ¤@€¸P„Û†¢†¢…À€¸‚<…Á„Û†»†»„ÜŒwŒw„¨P„Û†¢†¢Ž€¸„¨ÿ¤@€¸P„Û†¢†¢…€¸sm„Û ma…Ä nn©©==n„Z…Å nb…Ç oo©©==o…È…Å3 3oc…Ê pp©©==p‚F…ÅB Bpd…Ì qq©©==q‚>…Å= =qe…Î rr©©==r‚6…Å8 8rf…Ð ss©©==s…Å! !sg…Ò tt©©==t…Ó…Å( (th…Õ uu©©==u„©…Ö„Û‚ß‚ß#……×„Û‚ß ‚ßu€Œ „êaA$…Ø vvªª==v‚+…Å- -vi…Ú wwªª==w„ªP„Û†Ž†Ž „…Û„Û†Ž †Žw€·„ª…Ü xx««==x„«P„Û†Ç†Ç „Q„Û†Ç †Çx€¸„«…Ý yy¬¬==y…Å  yj…ß zz¬¬==z„¬P…Å„ ‚•…Å z…à·z\V4à‰…á…â {{­­=={‚”…Å {k…ä ||­­==|„­…Ö„Û‚Ø‚Ø!……å„Û‚Ø ‚Ø |€Œ „êaA…æ }}®®==}…ç…Å1 1 }i…è ~~®®==~„®…Ö„Û‚í‚í#……é„Û‚í ‚í~€Œ „êaA)…ê ¯¯==‚B…Å@ @l…ì €€¯¯==€€‚:…Å; ;€€m…î ¯¯==€„¯…Ö„Û‚æ‚æ#……ï„Û‚æ ‚æ€€Œ „êaA%…ð ‚‚°°==€‚‚2…Å6 6€‚n…ò ƒƒ°°==€ƒ[…ÅL L €ƒ'…ó „„°°==€„„°P…Å€‚€‚„…ô…Å€‚ €‚€„…õ ……±±==€…„±…քۂÂÃ#……ö„Û‚Ã ‚À…€Œ „êaA"…÷ ††²²==€†„²…Ö„Û‚Ê‚Ê%……ø„Û‚Ê ‚Ê€†€Œ „êaA!…ù ‡‡³³==€‡‚…Å$ $€‡h…ú ˆˆ³³==€ˆ‚#…Å& &€ˆo…ü ‰‰³³==€‰€Ô…Å  €‰p…þ ŠŠ³³==€Š…ÿ…Å* *€Šo† ‹‹³³==€‹„³…Ö„Û‚Ñ‚Ñ%…†„Û‚Ñ ‚Ñ€‹€Œ „êaA;† ŒŒ´´==€Œ„]…ÅI I€Œq† ´´==€‚'…ÅE E €r† ŽŽ´´==€Ž……Å/ / €Žc† ´´==€„´P…Åvv„†…Åv v€†  µµ==€…ÅG G €s†  ‘‘µµ==€‘† ` `€‘t ’’µµ==€’„µP…År r „†…År r€’„µ† ““¶¶==€“„¶P…ÅR R „€‡…ÅR R€“† ””··==€”„·P…Å[ [ „†…Å[ [€”† ••¸¸==€•„¸P…Åc c „†…Åc c€•† ––¹¹==€–„¹P…Åk k „†…Åk k€–† ——ºº==€—„ú„Û+ +€—€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „úaHv† ˜˜ºº==€˜‚–„Û‚† ‚†€˜€Í…à·z\V4à‰†a…à·z\V4à‰†‚=†u,‚>…¡u,uu†uuu‚=‚>uuuuuu@u€€u€Àu† €ôaa ‚–a-v†  ™™ºº??€™…ÄÛ  €™†! ššºº??€š…g„Û‚d ‚d)€š€Í…à·z\V4à‰†a…à·z\V4à‰†‚?†u,‚@…¡u,uu†uuu‚?‚@uuuuuu‚A†u,‚B…¡u,uu†uuu‚A‚Buuuuuu‚C†u,‚D…¡u,uu†uuu‚C‚Duuuuuu‚E†u,‚F…¡u,uu†uuu‚E‚Fuuuuuuu„uuuu”u† €ôa„Ö …g„ÖYa …gaYv†" ››ººGG€›…„ÛL L$€›€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa …aKv†# œœººGG€œ…„ÛV V&€œ€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa …aLv†$ ººGG€„ç„ۀà €Ã€€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „ça@v†% žžººGG€ž†&†' €ž- ¢a ? ‚a+†( ˜ŸŸººGR ‚G‚u†)†'$ $†* #ÿ¤@) ™a†)†)†+†'$$†,†'$"$)†-€Ð‚H‚f†.†'+ +†*! !#ÿ¤@) ™a†.†.‚w†'++†/†'+++.†0€Ð‚I‚v†1†'3 3†*' '#ÿ¤@) ™a†1†1‚w†'33†/†'3336†2€Ð‚J‚l†3†'< <†*- -##ÿ¤@) ™a†3†3‚m†'<<†/†'<+<.†4€Ð‚K‚q†5†'E E†*4 4##ÿ¤@) ™a†5†5‚m†'EE†/†'E3E6†6€Ð‚L‚i†7†'O O†*; ;#ÿ¤@) ™a†7†7‚m†'OO†/†'O1O4†8€Ð‚M‚d†9†'Z Z†*B Bÿ¤@) ™a†9†9^†'ZZ†:†'ZZ*†;€Ð‚N‚r†<†'b b†*S S#ÿ¤@) ™a†<†<‚h†'bb†/†'b0b3†=€Ð‚O‚sƒ8†'j j†*Y Y#ÿ¤@) ™aƒ8ƒ8‚h†'jj†/†'j0j3†>€Ð‚P†?†@†'r r†*J Jÿ¤@) ™a†@†@^†'rr†/†'r$r'†A€Ð‚Q†B†C†'y y†*_ _ÿ¤@) ™a†C†C†/†'yy†D€Ð€Ÿ…H„ÛB B€Ÿ †E„ÛDZ%U†F„ÛD D †GU†H„ÛF F†IU†J„ÛH H†KU†L„ÛJ J†MU†N„ÛL L†OU…ý„ÛN N†PU†Q„ÛP P†RU†S„ÛR R†TU†U„ÛT T†VU t„ÛV V†WU†X„ÛX X†YU †Z„ÛZ Z †[w†]   ººRR€ €ô„Û{ {€ €Í…à·z\V4à‰†a…à·z\V4à‰†uu†a €ôa„Ö €ô„Öa €ôav†^ ¡¡ººRR€¡†_†`€¡†a ]¢¢ººR瀕‚R†b†`†`x€¤ †_€Ó‚S†e†`†`€¤€Ó‚T†f†`†`€¤€Ó‚U†g†`†`€¤€Ó‚V†h†`  †`  €¤€Ó‚W†i†`  †`  €¤€Ó‚X†j†`  †`  €¤€Ó‚Y†k†`  †`  €¤€Ó‚Z†l†`  "†`  "€¤€Ó‚[†m†`†`€¤€Ó‚\†n†` †` €¤€Ó‚]†o†`†`€¤€Ó‚^†p†`†`€¤€Ó‚_†q†`†`€¤€Ó‚`†r†`"†`"€¤€Ó‚a†s†`†`€¤€Ó‚b†t†`†`€¤€Ó‚c†u†`†`€¤€Ó‚d†v†`†`€¤€Ó‚e†w†`†`€¤€Ó‚f†x†`!†`!€¤€Ó‚g†y†`†`€¤€Ó‚h†z†`†`€¤€Ó‚i†{†`†`€¤€Ó‚j†|†`†`€¤€Ó‚k†}†`†`€¤€Ó‚l†~†`†`€¤€Ó‚m††`  †`  €¤€Ó‚n†€†`!!&†`!!&€¤€Ó‚o††`"",†`"",€¤€Ó‚p†‚†`##1†`##1€¤€Ó‚q†ƒ†`$$†`$$€¤€Ó‚r†„†`%%†`%%€¤€Ó‚s†…†`&&†`&&€¤€Ó‚t†††`''†`''€¤€Ó‚u†‡†`((†`((€¤€Ó‚v†ˆ†`))†`))€¤€Ó‚w†‰†`**†`**€¤€Ó‚x†Š†`++†`++€¤€Ó‚y†‹†`,,†`,,€¤€Ó‚z†Œ†`--†`--€¤€Ó‚{††`..†`..€¤€Ó‚|†Ž†`//†`//€¤€Ó‚}††`00†`00€¤€Ó‚~††`11†`11€¤€Ó‚†‘†`22†`22€¤€Ó‚€†’†`33†`33€¤€Ó‚†“†`44†`44€¤€Ó‚‚†”†`55†`55€¤€Ó‚ƒ†•†`66†`66€¤€Ó‚„†–†`77†`77€¤€Ó‚…†—†`88†`88€¤€Ó‚††˜†`99†`99€¤€Ó‚‡†™†`::†`::€¤€Ó‚ˆ†š†`;;†`;;€¤€Ó‚‰†›†`<<†`<<€¤€Ó‚Іœ†`==†`==€¤€Ó‚‹††`>>†`>>€¤€Ó‚Œ†ž†`??†`??€¤€Ó‚†Ÿ†`@@†`@@€¤€Ó‚ކ †`AA†`AA€¤€Ó‚†¡†`BB†`BB€¤€Ó‚†¢†`CC†`CC€¤€Ó‚‘†£†`DD†`DD€¤€Ó‚’†¤†`EE†`EE€¤€Ó‚“†¥†`FF†`FF€¤€Ó‚”†¦†`GG†`GG€¤€Ó‚•†§†`HH†`HH€¤€Ó‚–†¨†`II$†`II$€¤€Ó‚—†©†`JJ(†`JJ(€¤€Ó‚˜†ª†`KK&†`KK&€¤€Ó‚™†«†`LL#†`LL#€¤€Ó‚š†¬†`MM#†`MM#€¤€Ó‚›†­†`NN †`NN €¤€Ó‚œ†®†`OO*†`OO*€¤€Ó‚†¯†`PP†`PP€¤€Ó‚ž†°†`QQ†`QQ€¤€Ó‚Ÿ†±†`RR†`RR€¤€Ó‚ †²†`SS#†`SS#€¤€Ó‚¡†³†`TT'†`TT'€¤€Ó‚¢†´†`UU#†`UU#€¤€Ó‚£†µ†`VV †`VV €¤€Ó‚¤†¶†`WW†`WW€¤€Ó‚¥†·†`YY†`YY€¤€Ó‚¦†¸†`ZZ†`ZZ€¤€Ó‚§†¹†`[[†`[[€¤€Ó‚¨†º†`\\†`\\€¤€Ó‚©†»†`]]†`]]€¤€Ó‚ª†¼†`^^†`^^€¤€Ó‚«†½†`__†`__€¤€Ó‚¬†¾†```†```€¤€Ó‚­†¿†`aa†`aa€¤€Ó‚®†À†`bb#†`bb#€¤€Ó‚¯†Á†`cc†`cc€¤€Ó‚°†Â†`dd†`dd€¤€Ó‚±†Ã†`ee†`ee€¤€Ó‚²†Ä†`ff!†`ff!€¤€Ó‚³†Å†`gg †`gg €¤€Ó‚´†Æ†`hh†`hh€¤€Ó‚µ†Ç†`ii!†`ii!€¤€Ó‚¶†È†`jj†`jj€¤€Ó‚·†É†`kk†`kk€¤€Ó‚¸†Ê†`ll†`ll€¤€Ó‚¹†Ë†`mm$†`mm$€¤€Ó‚º†Ì†`nn-†`nn-€¤€Ó‚»†Í†`oo†`oo€¤€Ó‚¼†Î†`pp†`pp€¤€Ó‚½†Ï†`qq#†`qq#€¤€Ó‚¾†Ð†`rr†`rr€¤€Ó‚¿†Ñ†`ss†`ss€¤€Ó‚À†Ò†`tt†`tt€¤€Ó‚Á†Ó†`uu†`uu€¤€Ó‚†Ô†`vv†`vv€¤€Ó‚ÆÕ†`ww†`ww€¤€Ó‚ĆÖ†`xx†`xx€¤€Ó‚ņ׆`yy†`yy€¤€Ó‚Ɔ؆`zz!†`zz!€¤€Ó‚džÙ†`{{†`{{€¤€Ó‚ȆÚ†`||!†`||!€¤€Ó‚ɆÛ†`}}"†`}}"€¤€Ó‚ʆ܆`~~†`~~€¤€Ó‚ˆÝ†`†`€¤€Ó‚̆Þ†`€€€€†`€€€€€¤€Ó‚͆߆`€€†`€€€¤€Ó‚Άà†`€‚€‚†`€‚€‚€¤€Ó‚φá†`€ƒ€ƒ †`€ƒ€ƒ €¤€Ó‚Іâ†`€„€„#†`€„€„#€¤€Ó‚цã†`€…€…†`€…€…€¤€Ó‚Ò†ä†`€†€††`€†€†€¤€Ó‚Ó†å†`€‡€‡†`€‡€‡€¤€Ó‚Ô†æ†`€ˆ€ˆ†`€ˆ€ˆ€¤€Ó‚Õ†ç†`€‰€‰†`€‰€‰€¤€Ó‚Ö†è†`€Š€Š†`€Š€Š€¤€Ó‚׆é†`€‹€‹†`€‹€‹€¤€Ó‚؆ê†`€Œ€Œ†`€Œ€Œ€¤€Ó‚Ù†ë†`€€/†`€€/€¤€Ó‚Ú†ì†`€Ž€Ž.†`€Ž€Ž.€¤€Ó‚Û†í†`€€-†`€€-€¤€Ó‚܆î†`€€†`€€€¤€Ó‚݆ï†`€‘€‘7†`€‘€‘7€¤€Ó‚Þ†ð†`€’€’†`€’€’€¤€Ó‚߆ñ†`€“€“!†`€“€“!€¤€Ó‚à†ò†`€”€”%†`€”€”%€¤€Ó‚á†ó†`€•€•†`€•€•€¤€Ó‚â†ô†`€–€– †`€–€– €¤€Ó‚ã†õ†`€˜€˜†`€˜€˜gg€¤†`€˜€˜€Ó‚ä†ö†`€š€š†`€š€šggg€¤†`€š€š…¡†`€š'€š+€Ó‚å†÷†`€œ€œ†`€œ€œgggg€¤†`€œ€œ…¡†`€œ'€œ+…¢†`€œ;€œ?€Ó‚æ†ø†`€ž€ž†`€ž€žggggg€¤†`€ž€ž…¡†`€ž'€ž+…¢†`€ž;€ž?…£†`€žO€žS€Ó€¢…0„ÛÎ Î/€¢€Í…à·z\V4à‰†a…à·z\V4à‰†@u@u† €ôaa …0aPv†ù ££ººç瀣‚„Û‚ž ‚ž(€£€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa ‚a+v†ú ¤¤ººç瀤„á„Û€˜ €˜%€¤€Í…à·z\V4à‰†a…à·z\V4à‰†‚ç†u,‚è…¡u,uu†uuu‚ç‚èuuuuuu‚é†u,‚ê…¡u,uu†uuu‚é‚êuuuuuu‚ë†u,‚ì…¡u,uu†uuu‚ë‚ìuuuuuuu@u€€u u€äu† €ôaa „áa=v†û ¥¥ººí퀥„þ„ÛA A#€¥€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „þaJv†ü ¦¦ººí퀦„ºP„Û†† ††Ž…µ†ý„Û†† †† €¦€– …aK€— …aL) ™a†ý†ý„º†þ„Û†ˆ†ˆ†ÿ …µ…€„»P„Û†† ††Ž€·„» …µ…€„¼P„Û†† ††Ž€·„¼€·„¼ …µ…€„½P„Û†† ††Ž€·„½[ …µ……„¾P„Û†† ††Ž€·„¾ …µ……„¿P„Û†† ††Ž€·„¿] …µ„ÀP„Û†† ††Ž€·„À]„Ö …µ„Ö„ÁP„Û†† ††Ž€·„Á„Á…· …µ…·„ÂP„Û†† ††Ž€·„„Â^€§€·„º\‡ §§ÃÃí퀧‚ì„Û{ {%€§€Í…à·z\V4à‰†a…à·z\V4à‰†ˆuˆu† €ôaa ‚ìa3v‡ ¨¨ÃÃí퀨‡„Ѐ€ €¨- ¢a ‡ Ñ ©¯ÃÞíú ‚퇇„Ѐ­€­„Ñ‚h‚h„ÃP„Ѐ­@€­B„y€Õ„ÄÃÿ¤@) ™a‡‡P„Ѐ­@€­B‡„Ѐ­€­‡ „Ѐ­+€­1‡ €Ö‚î‡ ‡ „Ѐ´€´„Ñ‚k‚k„ÄP„Ѐ´C€´E„ €×„Ä„Äÿ¤@) ™a‡ ‡ P„Ѐ´C€´E‡„Ѐ´€´‡ „Ѐ´+€´1‡€Ö‚„Ѐ»€»„Ñ‚n‚n„ÅP„Ѐ»D€»F„ €×„Å„Åÿ¤@) ™a‡‡P„Ѐ»D€»F‡„Ѐ»€»‡ „Ѐ»,€»2‡€Ö‚ð‡‡„ЀÀÄтƒ‚ƒ„ÆP„ЀÃ:€Ã<„€×„Æ„Æÿ¤@) ™a‡‡P„ЀÃ:€Ã<‡ „ЀÃ"€Ã(‡€Ö‚ñ‡‡„ЀɀɄт‰‚‰„ÇP„ЀÉ:€É<„€×„Ç„Çÿ¤@) ™a‡‡P„ЀÉ:€É<‡ „ЀÉ"€É(‡€Ö‚ò‡‡„Ѐπτт€‚€„ÈP„ЀÏ:€Ï<„€×„È„Èÿ¤@) ™a‡‡P„ЀÏ:€Ï<‡ „ЀÏ"€Ï(‡€Ö‚󇇄ЀÕ€Õ„Ñ‚†‚†„ÉP„ЀÕ:€Õ<„€×„É„Éÿ¤@) ™a‡‡P„ЀÕ:€Õ<‡ „ЀÕ"€Õ(‡€Ö‚ô‡‡ „Ѐ܀܄тb‚b„ÊP„ЀÜ6€Ü8„€Ø„Ê„Êÿ¤@) ™a‡ ‡ P„ЀÜ6€Ü8‡ „ЀÜ"€Ü(‡"€Ö‚õ‡#‡$„Ѐå€å„Ñ‚\‚\„˂„Ѐå*€å1„„ÌP„Ѐåi€åk„„Ëy€Ù„̄˄Ìÿ¤@) ™a‡$‡$‚„Ѐå*€å1P„Ѐåi€åk‡&„Ѐå€å ‡„Ѐå8€å?‡ „ЀåT€åZ‡'€Ö‚ö‡(‡)„Ѐî€î„Ñ‚_‚_„͂„Ѐî*€î1„„ÎP„Ѐîi€îk„„Í €Ú„΄̈́Îÿ¤@) ™a‡)‡)‚„Ѐî*€î1P„Ѐîi€îk‡&„Ѐî€î ‡„Ѐî8€îB‡ „ЀîQ€îW‡+€Ö‚÷‡,‡-„Ѐ÷€÷„Ñ‚S‚S„ς„Ѐ÷,€÷3„„ÐP„Ѐ÷[€÷]„„πۄЄτÐÿ¤@) ™a‡-‡-‚„Ѐ÷,€÷3P„Ѐ÷[€÷]‡&„Ѐ÷€÷ ‡ „Ѐ÷G€÷M‡/€Ö‚ø‡0‡ „Ѐÿ€ÿ„Ñ‚I‚I„т„Ѐÿ,€ÿ3„„ÒP„Ѐÿ[€ÿ]„„Ñ€Û„Ò„Ñ„Òÿ¤@) ™a‡ ‡ ‚„Ѐÿ,€ÿ3P„Ѐÿ[€ÿ]‡&„Ѐÿ€ÿ ‡ „ЀÿG€ÿM‡1€Ö‚ù‡2‡3„Єтe‚e„ÓP„Ð')„„Ԃ„Ð*1„€Û„Ó„Ô„Óÿ¤@) ™a‡3‡3P„Ð')‚„Ð*1‡ „Ї4€Ö€©„ÕP„Ѐ”€”„„ւ„Ѐ”€”!„‡%„Ѐ” €”€©€Ü„Õy„Ö‡6 ‡ªª××úú€ª„×P„Ѐ—€—„„؂„Ѐ—€— „‡.„Ѐ— €—€ª€Ü„ׄ؇7 ‡««ÙÙúú€«„ÙP„Ѐš€š„„ڂ„Ѐš€š$„‡*„Ð€š €š€«€Ü„Ù „Ú‡8 ‡¬¬ÛÛúú€¬„ÛP„Ѐž€ž„‡„Ѐž €ž€¬€Ù„Û‡9 ‡­­ÜÜúú€­„ÜP„Ѐ¡€¡„‡!„Ѐ¡ €¡€­€Û„܇: ‡®®ÝÝúú€®„ÝP„Ѐ¤€¤„‡ „Ѐ¤ €¤€®€Ú„݇; ‡¯¯ÞÞúú€¯„Þ„Ò„Ð((„„ßZ„Ð((!„„à„Ó„Ð("(*„„á‚„Ð(+(2„„â„Ø„Ð(3(9„„Ù„Ð((€¯a „Ùa„ã„Ò„Ð((„„äZ„Ð((!„„å„Ó„Ð("(*„„æ‚„Ð(+(2„„ç„Ø„Ð(3(9„€‡„ã„ä„儿„瀆„Þ„ß„à„á‡< °°èèúú€°„è„҄Є„éZ„Ð!„„ê„Ó„Ð"*„„ë‚„Ð+2„„ԄЀ°a „Ôa„ì„҄Є„íZ„Ð!„„î„Ó„Ð"*„„ï‚„Ð+2„€†„ì„í„î„ï„Ö „Ô„Ö„ð„҄Є„ñZ„Ð!„„ò„Ó„Ð"*„„ó‚„Ð+2„€†„ð„ñ„ò„ó‡= ±±ôôúú€±€™„ÛÄ Ä"€±€Í…à·z\V4à‰†a…à·z\V4à‰†ˆuˆu† €ôaa €™av‡> ²²ôôúú€²„ôP„Û†¢†¢Ž…¹‡?„Û†¢ †¢€²€’ „÷aG- ¢a €– …aK€— …aL) ™a‡?‡?„ô†F†F„Û†¤ †¤‡@„ôt„Û†©†©„ô…¼…¼„Û†© †©‡A …¹…€„õP„Û†¢†¢Ž€¸„õ …¹…€„öP„Û†¢†¢Ž€¸„ö€¸„ö …¹…€„÷P„Û†¢†¢Ž€¸„÷[ …¹……„øP„Û†¢†¢Ž€¸„ø …¹……„ùP„Û†¢†¢Ž€¸„ù] …¹„úP„Û†¢†¢Ž€¸„ú]…º …¹…º„ûP„Û†¢†¢Ž„û…¼ …¹…¼„üP„Û†¢†¢Ž„ü„ü„Ö …¹„Ö„ýP„Û†¢†¢Ž€¸„ý„ý…¿ …¹…¿„þP„Û†¢†¢Ž€¸„þ…Á …¹…Á„ÿP„Û†¢†¢Ž€¸„ÿ^€§€¸„ô\‡B ³³úú€³‡C‡D €³- ¢a ‡E F´´ú ‚ú‡F‡G‡D ‡H …P‡D„…ÿ¤@) ™a‡G‡GP‡D‡I‡D‡J€Ý‚û‡K‡L‡D" "‡H …P‡D""„…ÿ¤@) ™a‡L‡LP‡D""‡I‡D""‡M€Ý‚ü‚ ‡N‡D) )‡H …P‡D))„……ÿ¤@) ™a‡N‡NP‡D))‡I‡D))‡O€Ý‚ý^‚؇D/ /‡H" "…P‡D//„…ÿ¤@) ™a‚Ø‚ØP‡D//‡I‡D//‡P€Ý‚þ‡Q‡R‡D8 8‡H% %…P‡D88„…Z‡D88„………………ÿ¤@) ™a‡R‡RP‡D88Z‡D88\‡D88$]‡D8A8F‡I‡D8Q8W‡S€Ý‚ÿ‡T‡U‡DA A‡H( (…P‡DAA„…Z‡DAA„………………ÿ¤@) ™a‡U‡UP‡DAAZ‡DAA\‡DA"A(‡I‡DAEAK]‡DAYA^‡V€Ýƒ‚sƒ8‡DI I‡H+ +…P‡DII!„……ÿ¤@) ™aƒ8ƒ8P‡DII!‚h‡DII‡I‡DI.I4‡W€Ýƒ‚r†<‡DQ Q‡H. .… P‡DQQ!„… … ÿ¤@) ™a†<†<P‡DQQ!‚h‡DQQ‡I‡DQ.Q4‡X€Ýƒ‚f†.‡DY Y‡H1 1… P‡DYY„… … ÿ¤@) ™a†.†.P‡DYY‚w‡DYY‡I‡DY)Y/‡Y€Ýƒ‚l†3‡D` `‡H4 4… P‡D``„… ‚j‡D` `"„… … … … ÿ¤@) ™a†3†3P‡D``‚j‡D` `"‚m‡D``‡I‡D`'`-‡Z€Ýƒ‡[‡\‡Dh h‡H7 7… P‡Dhh„…‚j‡Dh h"„… …… …ÿ¤@) ™a‡\‡\P‡Dhh‚j‡Dh h"‡]‡Dhh‡I‡Dh.h4‡^€Ýƒ‚~‡_‡Do o‡H: :…P‡Doo„……ÿ¤@) ™a‡_‡_P‡Doo‡I‡Doo‡`€Ýƒ‡a‡b‡Du u‡H= =…P‡Duu„……ÿ¤@) ™a‡b‡bP‡Duu‡I‡Duu‡c€Ý€´‡d„Û† †€´‡e yµ¹ ƒ…‘„Û†*†*"„Ü‹¾‹¾…‚o„Û†$†$„…‚p„Û†$†$„…‚j„Û†$ †$"„€Þ………………ÿ´@€Þ‚o„Û†$†$‚p„Û†$†$‚j„Û†$ †$"…¡„Û†*%†*)…¢„Û†*0†*4‡g€Þƒ‡h„Û†/†/„Ü‹À‹À!…‚o„Û†$†$„…‚p„Û†$†$„…‚j„Û†$ †$"„………€Þ………ÿ¤@€Þ‚o„Û†$†$‚p„Û†$†$‚j„Û†$ †$"…“„Û†/"†/&‡i€Þƒ a„Û†3 †3„Ü‹¼‹¼…‚o„Û†$†$„…‚p„Û†$†$„…‚j„Û†$ †$"„€Þ………ÿ´@€Þ‚o„Û†$†$‚p„Û†$†$‚j„Û†$ †$"‡j€Þƒ …‘„Û†A†A"„܋ˋ˅‚o„Û†9†9„…‚p„Û†9†9„…‚z„Û†9 †9#„…‚j„Û†9$†9&„€ß……………………ÿ´@€ß‚o„Û†9†9‚p„Û†9†9‚z„Û†9 †9#‚j„Û†9$†9&…¡„Û†A%†A)…¢„Û†A0†A4…£„Û†A;†A?‡l€ßƒ ‡h„Û†F†F„܋͋Í!…‚o„Û†9†9„…‚p„Û†9†9„… ‚z„Û†9 †9#„…!‚j„Û†9$†9&„……… …!€ß……… …!ÿ¤@€ß‚o„Û†9†9‚p„Û†9†9‚z„Û†9 †9#‚j„Û†9$†9&…“„Û†F"†F&‡m€ßƒ a„Û†J †J„܋ɋɅ"‚o„Û†9†9„…#‚p„Û†9†9„…$‚z„Û†9 †9#„…%‚j„Û†9$†9&„€ß…"…#…$…%ÿ´@€ß‚o„Û†9†9‚p„Û†9†9‚z„Û†9 †9#‚j„Û†9$†9&‡n€ßƒ …‘„Û†Y†Y"„܋݋݅&‚o„Û†P†P„…'‚p„Û†P†P„…(‚z„Û†P †P#„…)ƒy„Û†P$†P'„…*‚j„Û†P(†P*„€à…&…'…(…)…*…&…'…(…)…*ÿ´@€à‚o„Û†P†P‚p„Û†P†P‚z„Û†P †P#ƒy„Û†P$†P'‚j„Û†P(†P*…¡„Û†Y%†Y)…¢„Û†Y0†Y4…£„Û†Y;†Y?…¤„Û†YF†YJ‡p€àƒ‡h„Û†^†^„܋ދÞ!…+‚o„Û†P†P„…,‚p„Û†P†P„…-‚z„Û†P †P#„….ƒy„Û†P$†P'„…/‚j„Û†P(†P*„…+…,…-….…/€à…+…,…-….…/ÿ¤@€à‚o„Û†P†P‚p„Û†P†P‚z„Û†P †P#ƒy„Û†P$†P'‚j„Û†P(†P*…“„Û†^"†^&‡q€àƒa„Û†b †b„܋ۋۅ0‚o„Û†P†P„…1‚p„Û†P†P„…2‚z„Û†P †P#„…3ƒy„Û†P$†P'„…4‚j„Û†P(†P*„€à…0…1…2…3…4ÿ´@€à‚o„Û†P†P‚p„Û†P†P‚z„Û†P †P#ƒy„Û†P$†P'‚j„Û†P(†P*‡r€àƒ…‘„Û†r†r"„Ü‹ô‹ô…5‚o„Û†h†h„…6‚p„Û†h†h„…7‚z„Û†h †h#„…8ƒy„Û†h$†h'„…9ƒ}„Û†h(†h+„…:‚j„Û†h,†h.„€á…5…6…7…8…9…:…5…6…7…8…9…:ÿ´@€á‚o„Û†h†h‚p„Û†h†h‚z„Û†h †h#ƒy„Û†h$†h'ƒ}„Û†h(†h+‚j„Û†h,†h.…¡„Û†r%†r)…¢„Û†r0†r4…£„Û†r;†r?…¤„Û†rF†rJ…¥„Û†rQ†rU‡t€áƒ‡h„Û†w†w„Ü‹ö‹ö!…;‚o„Û†h†h„…<‚p„Û†h†h„…=‚z„Û†h †h#„…>ƒy„Û†h$†h'„…?ƒ}„Û†h(†h+„…@‚j„Û†h,†h.„…;…<…=…>…?…@€á…;…<…=…>…?…@ÿ¤@€á‚o„Û†h†h‚p„Û†h†h‚z„Û†h †h#ƒy„Û†h$†h'ƒ}„Û†h(†h+‚j„Û†h,†h.…“„Û†w"†w&‡u€áƒa„Û†{ †{„Ü‹ò‹ò…A‚o„Û†h†h„…B‚p„Û†h†h„…C‚z„Û†h †h#„…Dƒy„Û†h$†h'„…Eƒ}„Û†h(†h+„…F‚j„Û†h,†h.„€á…A…B…C…D…E…Fÿ´@€á‚o„Û†h†h‚p„Û†h†h‚z„Û†h †h#ƒy„Û†h$†h'ƒ}„Û†h(†h+‚j„Û†h,†h.‡v€á€µ…G‚o„Û†$†$„…H‚p„Û†$†$„…I‚j„Û†$ †$"„‡f„Û†$ †$€µ  €öa€â‡f…‘…J‚o„Û†$†$„…K‚p„Û†$†$„…L‚j„Û†$ †$"„€Þ…J…K…L…J…K…L…‘€â‡f…‘…J‚o„Û†$†$„…K‚p„Û†$†$„…L‚j„Û†$ †$"„€Þ…J…K…L…J…K…L‡h€â‡f‡h…M‚o„Û†$†$„…N‚p„Û†$†$„…O‚j„Û†$ †$"„…M…N…O€Þ…M…N…Oa€â‡fa…P‚o„Û†$†$„…Q‚p„Û†$†$„…R‚j„Û†$ †$"„€Þ…P…Q…R€³…G…H…I‡w ‡d¶¶SS€¶…S‚o„Û†9†9„…T‚p„Û†9†9„…U‚z„Û†9 †9#„…V‚j„Û†9$†9&„‡k„Û†9 †9€¶  €öa€â‡k…‘…W‚o„Û†9†9„…X‚p„Û†9†9„…Y‚z„Û†9 †9#„…Z‚j„Û†9$†9&„€ß…W…X…Y…Z…W…X…Y…Z…‘€â‡k…‘…W‚o„Û†9†9„…X‚p„Û†9†9„…Y‚z„Û†9 †9#„…Z‚j„Û†9$†9&„€ß…W…X…Y…Z…W…X…Y…Z‡h€â‡k‡h…[‚o„Û†9†9„…\‚p„Û†9†9„…]‚z„Û†9 †9#„…^‚j„Û†9$†9&„…[…\…]…^€ß…[…\…]…^a€â‡ka…_‚o„Û†9†9„…`‚p„Û†9†9„…a‚z„Û†9 †9#„…b‚j„Û†9$†9&„€ß…_…`…a…b€³…S…T…U…V‡x ‡d··cc€·…c‚o„Û†P†P„…d‚p„Û†P†P„…e‚z„Û†P †P#„…fƒy„Û†P$†P'„…g‚j„Û†P(†P*„‡o„Û†P †P€·  €öa€â‡o…‘…h‚o„Û†P†P„…i‚p„Û†P†P„…j‚z„Û†P †P#„…kƒy„Û†P$†P'„…l‚j„Û†P(†P*„€à…h…i…j…k…l…h…i…j…k…l…‘€â‡o…‘…h‚o„Û†P†P„…i‚p„Û†P†P„…j‚z„Û†P †P#„…kƒy„Û†P$†P'„…l‚j„Û†P(†P*„€à…h…i…j…k…l…h…i…j…k…l‡h€â‡o‡h…m‚o„Û†P†P„…n‚p„Û†P†P„…o‚z„Û†P †P#„…pƒy„Û†P$†P'„…q‚j„Û†P(†P*„…m…n…o…p…q€à…m…n…o…p…qa€â‡oa…r‚o„Û†P†P„…s‚p„Û†P†P„…t‚z„Û†P †P#„…uƒy„Û†P$†P'„…v‚j„Û†P(†P*„€à…r…s…t…u…v€³…c…d…e…f…g‡y ‡d¸¸ww€¸…w‚o„Û†h†h„…x‚p„Û†h†h„…y‚z„Û†h †h#„…zƒy„Û†h$†h'„…{ƒ}„Û†h(†h+„…|‚j„Û†h,†h.„‡s„Û†h †h€¸  €öa€â‡s…‘…}‚o„Û†h†h„…~‚p„Û†h†h„…‚z„Û†h †h#„…€ƒy„Û†h$†h'„…ƒ}„Û†h(†h+„…‚‚j„Û†h,†h.„€á…}…~……€……‚…}…~……€……‚…‘€â‡s…‘…}‚o„Û†h†h„…~‚p„Û†h†h„…‚z„Û†h †h#„…€ƒy„Û†h$†h'„…ƒ}„Û†h(†h+„…‚‚j„Û†h,†h.„€á…}…~……€……‚…}…~……€……‚‡h€â‡s‡h…ƒ‚o„Û†h†h„…„‚p„Û†h†h„……‚z„Û†h †h#„…†ƒy„Û†h$†h'„…‡ƒ}„Û†h(†h+„…ˆ‚j„Û†h,†h.„…ƒ…„………†…‡…ˆ€á…ƒ…„………†…‡…ˆa€â‡sa…‰‚o„Û†h†h„…Š‚p„Û†h†h„…‹‚z„Û†h †h#„…Œƒy„Û†h$†h'„…ƒ}„Û†h(†h+„…Ž‚j„Û†h,†h.„€á…‰…Š…‹…Œ……Ž€³…w…x…y…z…{…|‡z ‡d¹¹€¹‡{„Û‡ ‡€¹f ƒôa9‡| ¹vº½YÔqƒ‡}„Û‡4‡4„ÜŽŽ…P„Û‡4-‡4.„…‡}…………ÿ„@P„Û‡4-‡4.‡~„Û‡4‡4‡€ãƒƒ"„Û‡:‡:„ÜŽŽ…‚o„Û‡:9‡:;„……‘ƒ"……‘…’…’…‘…‘‚p„Û‡:@‡:B„……‘ƒ"……‘…’…’…’‚z„Û‡:n‡:p„……‘……‘…’ÿ„@‚o„Û‡:9‡:;‚p„Û‡:@‡:B‚z„Û‡:n‡:p‡€„Û‡:‡:‡„Û‡:$‡:%‡‚€ãƒ„!„Û‡@‡@„ÜŽ4Ž4…“‚o„Û‡@9‡@;„…“…”„!…“…”…•…•…”…”‚p„Û‡@@‡@B„…“…”„!…“…”…•…•…•‚z„Û‡@n‡@p„…“…”…“…”…•ÿ„@‚o„Û‡@9‡@;‚p„Û‡@@‡@B‚z„Û‡@n‡@p‡€„Û‡@‡@‡„Û‡@$‡@%‡ƒ€ãƒ„(„Û‡F‡F„ÜŽEŽE…–‚o„Û‡F9‡F;„…–…—„(…–…—…˜…˜…—…—‚p„Û‡F@‡FB„…–…—„(…–…—…˜…˜…˜‚z„Û‡Fn‡Fp„…–…—…–…—…˜ÿ„@‚o„Û‡F9‡F;‚p„Û‡F@‡FB‚z„Û‡Fn‡Fp‡€„Û‡F‡F‡„Û‡F$‡F%‡„€ãƒ„6„Û‡L‡L„ÜŽZŽZ…™‚o„Û‡L9‡L;„…™…š„6…™…š…›…›…š…š‚p„Û‡L@‡LB„…™…š„6…™…š…›…›…›‚z„Û‡Ln‡Lp„…™…š…™…š…›ÿ„@‚o„Û‡L9‡L;‚p„Û‡L@‡LB‚z„Û‡Ln‡Lp‡€„Û‡L‡L‡„Û‡L$‡L%‡…€ãƒ„/„Û‡R‡R„ÜŽkŽk…œ‚o„Û‡R;‡R=„…œ…„/…œ……ž…ž……‚p„Û‡RB‡RD„…œ…„/…œ……ž…ž…ž‚z„Û‡Rp‡Rr„…œ……œ……žÿ„@‚o„Û‡R;‡R=‚p„Û‡RB‡RD‚z„Û‡Rp‡Rr‡€„Û‡R‡R‡„Û‡R$‡R%‡†€ãƒ‡‡„Û‡X‡X„ÜŽ«Ž«…ŸP„Û‡X7‡X8„…Ÿ‡‡…Ÿ…Ÿ…Ÿ…Ÿ…Ÿ…Ÿÿ„@P„Û‡X7‡X8‡€„Û‡X‡X‡„Û‡X"‡X#‡ˆ€ãƒ†„Û‡^‡^„ÜŽ¹޹… P„Û‡^7‡^8„… †… … … … … … ÿ„@P„Û‡^7‡^8‡€„Û‡^‡^‡„Û‡^#‡^$‡‰€ãƒ‡Š„Û‡d‡d„ÜŽÇŽÇ…¡P„Û‡d7‡d8„…¡‡Š…¡…¡…¡…¡…¡…¡ÿ„@P„Û‡d7‡d8‡€„Û‡d‡d‡„Û‡d#‡d$‡‹€ãƒ‡Œ„Û‡j‡j„ÜŽŽ…¢P„Û‡j?‡j@„…¢‡Œ…¢'…¢…¢'…¢ÿ„@P„Û‡j?‡j@„Û‡j‡j ‡„Û‡j'‡j,‡Ž€ãƒ‡„Û‡p‡p„ÜŽŽ…£P„Û‡p?‡p@„…£‡…£'…£…£'…£ÿ„@P„Û‡p?‡p@„Û‡p‡p ‡„Û‡p'‡p,‡€ãƒ‡‘„Û‡u‡u„ÜŽÕŽÕ…¤P„Û‡u9‡u:„…¤‡‘…¤…¤…¤…¤ÿ„@P„Û‡u9‡u:„Û‡u‡u!‡’€ãƒ‡“„Û‡z‡z„ÜŽ|Ž|…¥P„Û‡z9‡z:„…¥‡“…¥…¥…¥…¥ÿ„@P„Û‡z9‡z:„Û‡z‡z‡”€ãƒ ‡•„Û‡€‡€„ܵµ…¦P„Û‡€5‡€7„ …¦…¦ÿ„@P„Û‡€5‡€7‡€„Û‡€‡€‡„Û‡€#‡€$‡–€ãƒ!‡—„Û‡†‡†„ܶ¶…§P„Û‡†5‡†7„ …§…§ÿ„@P„Û‡†5‡†7‡€„Û‡†‡†‡„Û‡†#‡†$‡˜€ãƒ"‡™„Û‡Œ‡Œ„Ü··…¨P„Û‡Œ6‡Œ8„ …¨…¨ÿ„@P„Û‡Œ6‡Œ8‡€„Û‡Œ‡Œ‡„Û‡Œ$‡Œ%‡š€ãƒ#‡›„Û‡’‡’„ܸ¸…©P„Û‡’6‡’8„ …©…©ÿ„@P„Û‡’6‡’8‡€„Û‡’‡’‡„Û‡’$‡’%‡œ€ãƒ$‡„Û‡˜‡˜„ܹ¹…ªP„Û‡˜5‡˜7„ …ª…ªÿ„@P„Û‡˜5‡˜7‡€„Û‡˜‡˜‡„Û‡˜#‡˜$‡ž€ãƒ%‡Ÿ„Û‡ž‡ž„ܺº…«P„Û‡ž6‡ž8„ …«…«ÿ„@P„Û‡ž6‡ž8‡€„Û‡ž‡ž‡„Û‡ž$‡ž%‡ €ãƒ&‡¡„Û‡¤‡¤„ÜŽŽ…¬‚o„Û‡¤ ‡¤#„…­‚p„Û‡¤'‡¤*„…®‚z„Û‡¤=‡¤@„…¬…­…­…®…¬…®ÿ„@‚o„Û‡¤ ‡¤#‚p„Û‡¤'‡¤*‚z„Û‡¤=‡¤@‡¢„Û‡¤‡¤‡£„Û‡¤/‡¤4‡¤€ãƒ'‡¥„Û‡ª‡ª„ÜŽŽ…¯‚p„Û‡ª ‡ª#„…°‚z„Û‡ª'‡ª*„…±‚o„Û‡ª6‡ª9„…¯…°…±…¯…±…°ÿ„@‚p„Û‡ª ‡ª#‚z„Û‡ª'‡ª*‚o„Û‡ª6‡ª9‡£„Û‡ª‡ª‡¢„Û‡ª/‡ª4‡¦€ãƒ(‡§„Û‡°‡°„Ü÷÷…²‚o„Û‡°‡° „…³‚j„Û‡°1‡°3„…²…²…³…³ÿ„@‚o„Û‡°‡° ‚j„Û‡°1‡°3‡¨„Û‡°‡°…“„Û‡°$‡°(‡©€ãƒ)‡ª„Û‡¶‡¶„Üùù…´‚o„Û‡¶‡¶"„…µ‚p„Û‡¶*‡¶-„…¶‚j„Û‡¶E‡¶G„…´…µ…´…µ…¶…¶ÿ„@‚o„Û‡¶‡¶"‚p„Û‡¶*‡¶-‚j„Û‡¶E‡¶G…¡„Û‡¶‡¶…¢„Û‡¶%‡¶)…“„Û‡¶1‡¶5‡«€ãƒ*‡¬„Û‡½‡½„Üûû…·‚o„Û‡½ ‡½#„…¸‚p„Û‡½+‡½.„…¹‚z„Û‡½6‡½9„…º‚j„Û‡½X‡½Z„…·…¸…¹…·…¸…¹…º…ºÿ„@‚o„Û‡½ ‡½#‚p„Û‡½+‡½.‚z„Û‡½6‡½9‚j„Û‡½X‡½Z…¡„Û‡½‡½…¢„Û‡½&‡½*…£„Û‡½1‡½5…“„Û‡½=‡½A‡­€ãƒ+‡®„ۇÇÄÜýý…»P„ۇÇÃ!„…¼‚j„Û‡Ã%‡Ã'„…»…¼…»…¼ÿ„@P„ۇÇÃ!‚j„Û‡Ã%‡Ã'…“„ۇÇÅ¡„Û‡Ã,‡Ã0‡¯€ãƒ,‡°„ۇʇʄÜÿÿ…½‚o„Û‡Ê ‡Ê#„…¾‚p„Û‡Ê'‡Ê*„…¿‚j„Û‡Ê.‡Ê0„…½…¾…¿…½…¾…¿ÿ„@‚o„Û‡Ê ‡Ê#‚p„Û‡Ê'‡Ê*‚j„Û‡Ê.‡Ê0…“„ۇʇʅ¡„Û‡Ê5‡Ê9…¢„Û‡Ê@‡ÊD‡±€ãƒ-‡²„Û‡Ò‡Ò„ÜŽŽ…À‚o„Û‡Ò!‡Ò$„…Á‚p„Û‡Ò(‡Ò+„…‚z„Û‡Ò/‡Ò2„…Âj„Û‡Ò6‡Ò8„…À…Á…Â…Ã…À…Á…Â…Ãÿ„@‚o„Û‡Ò!‡Ò$‚p„Û‡Ò(‡Ò+‚z„Û‡Ò/‡Ò2‚j„Û‡Ò6‡Ò8…“„Û‡Ò‡Ò…¡„Û‡Ò=‡ÒA…¢„Û‡ÒH‡ÒL…£„Û‡ÒS‡ÒW‡³€ãƒ.‡´‡µ„Û‡Ù ‡Ù„ÜŽ Ž …ÄP„ۇهل…Ä…Ä…Äÿ¤@) ™a‡µ‡µP„ۇهه¨„ۇهه¶„Û‡Ù*‡Ù6‡·€ãƒ/‡¸„Û‡Ý ‡Ý„ÜŽ Žÿ¤@€¥ …jaZ‡¹‡¹>>‡º‡»„ۇ݇݇¼„Û‡Ý‡Ý ‡½€ãƒ0‡¾‡¿„ۇ㠇ã„ܪ ª…ÅP„Û‡ã,‡ã.„p…Åÿ¤@) ™a‡¿‡¿P„Û‡ã,‡ã.€Ô„Û‡ã‡ã‡À€ãƒ1‡Á‡Â„Û‡ê‡ê„ÜÞÞ…ÆP„Û‡ê%‡ê'„…Æÿ„@C ‚—a.) ™a‡Â‡Â€ä…à·z\V4à‰‡Äa…à·z\V4à‰‡Å…à·z\V4à‰‡Æ‡Ç‡ÇP„Û‡ê%‡ê'‡È€ãƒ2‡É‡Ê„Û‡ð‡ð„Üââ…ÇP„Û‡ð%‡ð'„…Çÿ„@C ‚—a.) ™a‡Ê‡ÊP„Û‡ð%‡ð'‡Ë€ãƒ3‡Ì„Û‡õ ‡õ„ܬ ¬_ÿ¤@…`„Û‡õ‡õ‡Í€ãƒ4‡Î‡Ï„Û‡û ‡û„ܯ ¯_ÿ¤@) ™a‡Ï‡Ï‡Ð„Û‡û‡û!‡Ñ€ãƒ5‡Ò‡Ó„Ûˆ ˆ„Üæ æ…È‚o„Ûˆˆ„…É‚p„Ûˆˆ"„…È…É…Èÿ¤@) ™a‡Ó‡Ó‚o„Ûˆˆ‚p„Ûˆˆ"€Â„Ûˆˆ‡Ô€ãƒ6‡Õ‡Ö„Ûˆ ˆ„Üê ê…Ê‚o„Ûˆˆ„…Ë‚p„Ûˆˆ"„…Ê…Ë…Ëÿ¤@) ™a‡Ö‡Ö‚o„Ûˆˆ‚p„Ûˆˆ"€Â„Ûˆˆ‡×€ãƒ7‡Ø‡Ù„Ûˆˆ„ܽ½…ÌP„Ûˆ7ˆ9„ …Ì…Ìÿ„@) ™a‡Ù‡ÙP„Ûˆ7ˆ9‡Ú„Ûˆˆ‡Û„Ûˆ%ˆ'‡Ü€ãƒ8‡Ý‡Þ„Ûˆˆ„ÜÀÀ…ÍP„Ûˆ4ˆ6„ …Í…Í…Íÿ„@) ™a‡Þ‡ÞP„Ûˆ4ˆ6‡Ú„Ûˆˆ‡Û„Ûˆ"ˆ$‡ß€ãƒ9‡à‡á„Ûˆˆ„ÜÃÃ…ÎP„Ûˆ4ˆ6„ …Î…Î…Îÿ„@) ™a‡á‡áP„Ûˆ4ˆ6‡Ú„Ûˆˆ‡Û„Ûˆ"ˆ$‡â€ãƒ:‡ã‡ä„Ûˆ!ˆ!„Üíí…ÏP„Ûˆ!"ˆ!$„…Ïÿ„@) ™a‡ä‡äP„Ûˆ!"ˆ!$„Ûˆ!ˆ!!‡å€ãƒ;‡æ‡ç„Ûˆ'ˆ'„ܤ¤…ÐP„Ûˆ'(ˆ'*„…Ðÿ„@) ™a‡ç‡çP„Ûˆ'(ˆ'*„Ûˆ'ˆ' ‡è€ãƒ<‡é‡ê„Ûˆ-ˆ-„ܧ§…ÑP„Ûˆ-ˆ-!„…Ñÿ„@) ™a‡ê‡êP„Ûˆ-ˆ-!„Ûˆ-ˆ-‡ë€ãƒ=‡ì‡í„Ûˆ3 ˆ3„ÜÌ Ì…ÒP„Ûˆ3)ˆ3+„…Òÿ¤@) ™a‡í‡íP„Ûˆ3)ˆ3+…`„Ûˆ3ˆ3‡î€ãƒ>‡ï‡ð„Ûˆ;ˆ;„ÜÑÑ…ÓP„Ûˆ;Iˆ;K„…Óÿ„@) ™a‡ð‡ðP„Ûˆ;Iˆ;K‡ñ„Ûˆ; ˆ;,…`„Ûˆ;7ˆ;>‡ò€ãƒ?‡ó‡ô„ÛˆAˆA„ÜÖÖ…ÔP„ÛˆA4ˆA6„…Ôÿ„@) ™a‡ô‡ôP„ÛˆA4ˆA6‡ñ„ÛˆAˆA)‡õ€ãƒ@‡ö‡÷„ÛˆGˆG„ÜÚÚ…ÕP„ÛˆG1ˆG3„…Õÿ„@) ™a‡÷‡÷P„ÛˆG1ˆG3…`„ÛˆGˆG&‡ø€ãƒA‡ù‡ú„ÛˆM ˆM„ÜÄ Ä…ÖP„ÛˆMˆM„…Ö…Öÿ¤@) ™a‡ú‡úP„ÛˆMˆM‡€„ÛˆMˆM‡û€ãƒB‡ü‡ý„ÛˆS ˆS„Üñ ñ…×P„ÛˆSˆS„…×€å…×ÿ¤@) ™a‡ý‡ýP„ÛˆSˆS„ÛˆSˆS‡þ€ãƒC‡ÿ„ÛˆXˆX„Üó ó…ØP„ÛˆXˆX„€å…Ø…Øÿ¤@P„ÛˆXˆXˆ„ÛˆXˆX„ÛˆX$ˆX)ˆ€ãƒDˆ„Ûˆ]ˆ]„Üõ õ…ÙP„Ûˆ]ˆ]„€å…Ù…Ùÿ¤@P„Ûˆ]ˆ]ˆ„Ûˆ]ˆ]ˆ€ãƒEˆˆ„Ûˆb ˆb„ÜŽþ Žþ€åÿ¤@) ™aˆˆˆ„Ûˆbˆbˆ€ãƒFˆˆ„Ûˆg ˆg„ÜŽû Žû€åÿ¤@) ™aˆˆˆ„Ûˆgˆgˆ €ãƒGˆ „Ûˆm ˆm„ÜŽí Ží…ÚP„Ûˆmˆm„…Ú…Ú…Úÿ¤@P„Ûˆmˆmˆ „Ûˆmˆmˆ „Ûˆm"ˆm'ˆ €ãƒHˆˆ„Ûˆsˆs„ܲ²ÿ„@) ™aˆˆ„Ûˆsˆsˆ€ãƒIˆˆ„Ûˆy ˆy„Ü¡ ¡…ÛP„Ûˆyˆy!„#…Û#…Ûÿ¤@) ™aˆˆP„Ûˆyˆy!ˆ„Ûˆyˆyˆ€ãƒJˆˆ„Ûˆƒ ˆƒ„Ü …ÜP„Ûˆƒ4ˆƒ6„…Üÿ¤@) ™aˆˆP„Ûˆƒ4ˆƒ6ˆ„Ûˆƒˆƒˆ€ãƒKˆˆ„Ûˆˆ ˆˆ„Üš š"ÿ¤@) ™aˆˆˆ€ãƒLˆˆ„ÛˆŒ ˆŒ„Ü "ÿ¤@) ™aˆˆˆ€ãƒMˆˆ „Ûˆ ˆ„Ü   !ÿ¤@) ™aˆ ˆ ˆ!€ãƒNˆ"ˆ#„Ûˆ” ˆ”„Ü£ £!ÿ¤@) ™aˆ#ˆ#ˆ$€ãƒOˆ%ˆ&„Ûˆ™ ˆ™„ÜË Ë…ÝP„Ûˆ™ˆ™„zÿ¤D) ™aˆ&ˆ&P„Ûˆ™ˆ™ˆ(€ãƒPˆ)ˆ*„Ûˆ ˆ„ÜÑ Ñ…ÞP„Ûˆˆ„ ÿ¤D) ™aˆ*ˆ*P„Ûˆˆˆ+€ãƒQˆ,ˆ-„Ûˆ¡ ˆ¡„ÜÎ Î…ßP„Ûˆ¡ˆ¡„ ÿ¤D) ™aˆ-ˆ-P„Ûˆ¡ˆ¡ˆ.€ãƒRˆ/„Ûˆ¨ˆ¨„Ü••…àP„Ûˆ©&ˆ©'„…àƒ"…à…à…à…àˆ0…à …à…à#…àÿ„@P„Ûˆ©&ˆ©',„Ûˆ¨ˆ¨"ˆ1„Ûˆ¨/ˆ¨5ˆ2€ãƒSˆ3„Ûˆ´ˆ´„Ü••…áP„Ûˆµ'ˆµ(„…á…âƒ"…á…â…á …âˆ4„Ûˆµ-ˆµ1„…á…âƒ"…á…â…á…âƒ#…â…á…á…â…á#…áÿ„@P„Ûˆµ'ˆµ(ˆ4„Ûˆµ-ˆµ1,„Ûˆ´ˆ´"ˆ5„Ûˆ´)ˆ´-ˆ1„Ûˆ´7ˆ´=ˆ6€ãƒTˆ7ˆ8„ÛˆÁˆÁ„Üžž…ãˆ8„ÛˆÁLˆÁQ„…äP„ÛˆÁ=ˆÁ?„…ã…ä…äÿ„@) ™aˆ8ˆ8ˆ8„ÛˆÁLˆÁQP„ÛˆÁ=ˆÁ?ˆ9„ÛˆÁˆÁ#‚w„ÛˆÁ-ˆÁ3ˆ:€ãƒUˆ;ˆ<„ÛˆÊ ˆÊ„ܪ ª…åP„ۈʈʄ{…æ‚j„ÛˆÊHˆÊJ„…å…å…æ…æÿ¤@) ™aˆ<ˆ<P„ۈʈʂj„ÛˆÊHˆÊJŽ„ÛˆÊˆÊ‚w„ÛˆÊ:ˆÊ@ˆ>€ãƒVˆ?ˆ@„ۈшфܰ°…çP„ۈшф ÿ„D€› …0aP) ™aˆ@ˆ@P„ۈшшA€ãƒWˆBˆC„ÛˆÙˆÙ#„ܳ ³…èP„ÛˆÙ'ˆÙ)„…éˆD„ÛˆÙ-ˆÙ5„…è…é7ÿ¤@) ™aˆCˆCP„ÛˆÙ'ˆÙ)ˆD„ÛˆÙ-ˆÙ5ˆE€ãƒXˆFˆG„Ûˆáˆá„ܶ¶…êP„Ûˆáˆá„ ÿ„D€› …0aP) ™aˆGˆGP„ÛˆáˆáˆH€ãƒYˆIˆJ„Ûˆæˆæ„ܺº…ëP„Ûˆæˆæ„ÿ„D) ™aˆJˆJ€› …0aPP„ÛˆæˆæˆK€ãƒZˆLˆM„Ûˆðˆð„ܾ¾…ìP„Ûˆð,ˆð.„ …ìÿ„@) ™aˆMˆMP„Ûˆð,ˆð.„ÛˆðˆðˆN€ãƒ[ˆO„Ûˆúˆú„ÜÁÁ…íP„ÛˆúAˆúC„ …íÿ„@P„ÛˆúAˆúCˆP„Ûˆú ˆú%„Ûˆú.ˆú1ˆQ€ãƒ\ˆRˆS„Û‰‰„Ü•!•!…îP„Û‰9‰:„…îˆS…î…î…î…îÿ„@) ™aˆSˆSP„Û‰9‰:„Û‰‰#ˆT€ãƒ]ˆUˆV„Û‰‰„Ü•'•'…ïP„Û‰9‰:„…ïˆV…ï…ï"…ï…ïÿ„@) ™aˆVˆVP„Û‰9‰:„Û‰‰#ˆW€ãƒ^ˆXˆY„Û‰ ‰ „Ü•-•-…ðP„Û‰ 9‰ :„…ðˆY…ð…ð"…ð…ðÿ„@) ™aˆYˆYP„Û‰ 9‰ :„Û‰ ‰ #ˆZ€ãƒ_ˆ[ˆ\„Û‰‰„Ü•3•3…ñP„Û‰9‰:„…ñˆ\…ñ…ñ"…ñ…ñÿ„@) ™aˆ\ˆ\P„Û‰9‰:„Û‰‰#ˆ]€ãƒ`ˆ^ˆ_„Û‰‰„Ü•9•9…ò‚o„Û‰:‰<„…òˆ_…ò…ò…ó"…ó‚p„Û‰f‰i„…ò…ò…óÿ„@) ™aˆ_ˆ_‚o„Û‰:‰<‚p„Û‰f‰i‡„Û‰‰‡€„Û‰'‰(ˆ`€ãƒaˆaˆb„Û‰ ‰ „Ü•?•?…ôP„Û‰ 9‰ :„…ôˆb…ô…ô"…ô…ôÿ„@) ™aˆbˆbP„Û‰ 9‰ :„Û‰ ‰ #ˆc€ãƒbˆdˆe„Û‰&‰&„Ü•E•E…õP„Û‰&9‰&:„…õˆe…õ…õ"…õ…õÿ„@) ™aˆeˆeP„Û‰&9‰&:„Û‰&‰&#ˆf€ãƒcˆgˆh„Û‰,‰,„Ü•K•K…öP„Û‰,9‰,:„…öˆh…ö…ö"…ö…öÿ„@) ™aˆhˆhP„Û‰,9‰,:„Û‰,‰,#ˆi€ãƒdˆjˆk„Û‰2‰2„Ü•]•]…÷P„Û‰29‰2:„…÷ˆl…÷"…÷ÿ„@) ™aˆkˆkP„Û‰29‰2:„Û‰2‰2#ˆm€ãƒeˆnˆo„Û‰8‰8„Ü•W•W…øP„Û‰89‰8:„…øˆo…ø…ø"…ø…øÿ„@) ™aˆoˆoP„Û‰89‰8:„Û‰8‰8#ˆp€ãƒfˆqˆr„Û‰>‰>„Ü•c•c…ùP„Û‰>9‰>:„…ùˆr…ù…ù"…ù…ùÿ„@) ™aˆrˆrP„Û‰>9‰>:„Û‰>‰>#ˆs€ãƒgˆtˆu„Û‰D‰D„Ü•i•i…úP„Û‰D9‰D:„…úˆu…ú…ú"…ú…úÿ„@) ™aˆuˆuP„Û‰D9‰D:„Û‰D‰D#ˆv€ãƒhˆwˆx„Û‰J‰J„Ü•o•o…ûP„Û‰J9‰J:„…ûˆx…û…ü…ü"…ü‚j„Û‰J^‰J_„…û…û…üÿ„@) ™aˆxˆxP„Û‰J9‰J:‚j„Û‰J^‰J_„Û‰J‰J#ˆy€ãƒiˆzˆ{„Û‰P‰P„Ü•u•u…ýP„Û‰P9‰P:„…ýˆ{…ý…ý"…ý…ýÿ„@) ™aˆ{ˆ{P„Û‰P9‰P:„Û‰P‰P#ˆ|€ãƒjˆ}ˆ~„Û‰V‰V„Ü•{•{…þP„Û‰V9‰V:„…þˆ~…þ…þ"…þ…þÿ„@) ™aˆ~ˆ~P„Û‰V9‰V:„Û‰V‰V#ˆ€ãƒkˆ€ˆ„Û‰\‰\„Ü••…ÿP„Û‰\9‰\:„…ÿˆ…ÿ…ÿ"…ÿ…ÿÿ„@) ™aˆˆP„Û‰\9‰\:„Û‰\‰\#ˆ‚€ãƒlˆƒˆ„„Û‰b‰b„Ü•‡•‡†P„Û‰b9‰b:„†ˆ„††"††ÿ„@) ™aˆ„ˆ„P„Û‰b9‰b:„Û‰b‰b#ˆ…€ãƒmˆ†ˆ‡„Û‰h‰h„Ü••†P„Û‰h9‰h:„†ˆ‡††"††ÿ„@) ™aˆ‡ˆ‡P„Û‰h9‰h:„Û‰h‰h#ˆˆ€ãƒnˆ‰ˆŠ„Û‰n‰n„Ü•“•“†P„Û‰n9‰n:„†ˆŠ††"††ÿ„@) ™aˆŠˆŠP„Û‰n9‰n:„Û‰n‰n#ˆ‹€ãƒoˆŒˆ„Û‰v‰v„Ü•Q•Q†P„Û‰v9‰v:„†ˆ††"††ÿ„@) ™aˆˆP„Û‰v9‰v:„Û‰v‰v#ˆŽ€ãƒpˆ„Û‰}‰}„Ü•—•—†P„Û‰}7‰}8„†ˆ†††"†‚j„Û‰}V‰}W„"†††ÿ„@P„Û‰}7‰}8‚j„Û‰}V‰}W‡€„Û‰}‰}‡„Û‰}&‰}'ˆ‘€ãƒqˆ’ˆ“„Û‰„‰„„Ü•¢•¢†P„Û‰„5‰„6„†ˆ0††„(††††„6†††††ÿ„@) ™aˆ“ˆ“P„Û‰„5‰„6‡€„Û‰„‰„‡~„Û‰„#‰„$ˆ”€ãƒr…„>„Û‰‰„܆P„Û‰=‰>„†„?††ÿ„@) ™a„>„>P„Û‰=‰>„Û‰ ‰%ˆ•€ãƒs‚+„A„Û‰™‰™„Ü##†P„Û‰™=‰™>„†„?†$†$ÿ„@) ™a„A„AP„Û‰™=‰™>„Û‰™ ‰™%ˆ–€ãƒt‚2„C„Û‰¢‰¢„ÜII† P„Û‰¢=‰¢>„† „?† %† %ÿ„@) ™a„C„CP„Û‰¢=‰¢>„Û‰¢ ‰¢%ˆ—€ãƒu‚6„E„Û‰«‰«„Ü66† P„Û‰«=‰«>„† „?† &† &ÿ„@) ™a„E„EP„Û‰«=‰«>„Û‰« ‰«%ˆ˜€ãƒv[„G„Û‰´‰´„܆ P„Û‰´=‰´>„† „?† † ÿ„@) ™a„G„GP„Û‰´=‰´>„Û‰´ ‰´%ˆ™€ãƒw„I„J„Û‰º‰º„Ü““† ‚j„Û‰º?‰º@„''† ÿ„@) ™a„J„J‚j„Û‰º?‰º@„Û‰º ‰º%ˆš€ãƒx‚:„L„ۉÉÄÜww† P„Û‰Ã=‰Ã>„† „?† '† 'ÿ„@) ™a„L„LP„Û‰Ã=‰Ã>„ۉà ‰Ã%ˆ›€ãƒy‚>„N„ۉ̉̄Ü\\†P„Û‰Ì=‰Ì>„†„?†(†(ÿ„@) ™a„N„NP„Û‰Ì=‰Ì>„Û‰Ì ‰Ì%ˆœ€ãƒz‚B„P„Û‰Õ‰Õ„ÜÁÁ†P„Û‰Õ=‰Õ>„†„?†)†)ÿ„@) ™a„P„PP„Û‰Õ=‰Õ>„Û‰Õ ‰Õ%ˆ€ãƒ{‚F„R„Û‰Þ‰Þ„ܧ§†P„Û‰Þ=‰Þ>„†„?†*†*ÿ„@) ™a„R„RP„Û‰Þ=‰Þ>„Û‰Þ ‰Þ%ˆž€ãƒ|‚„T„Û‰ç‰ç„ÜØØ†P„Û‰ç=‰ç>„†„?†!†!ÿ„@) ™a„T„TP„Û‰ç=‰ç>„Û‰ç ‰ç%ˆŸ€ãƒ}‚#„V„Û‰ð‰ð„Üìì†P„Û‰ð=‰ð>„†„?†"†"ÿ„@) ™a„V„VP„Û‰ð=‰ð>„Û‰ð ‰ð%ˆ €ãƒ~‚”„X„Û‰ø‰ø„Ü22†P„Û‰ø=‰ø>„†„?†,†,ÿ„@) ™a„X„XP„Û‰ø=‰ø>„Û‰ø ‰ø%ˆ¡€ãƒ„Z„[„ÛŠŠ„Ü†P„ÛŠ=Š>„†„?†:†:ÿ„@) ™a„[„[P„ÛŠ=Š>„ÛŠ Š%ˆ¢€ãƒ€“„ÛŠ Š „ÜJJ†P„ÛŠ $Š %„†ÿ„@) ™a““P„ÛŠ $Š %„ÛŠ Š "ˆ£€ãƒ„]„^„ÛŠŠ„Ü†P„ÛŠ7Š8„†„?†;†;ÿ„@) ™a„^„^P„ÛŠ7Š8„ÛŠŠ"ˆ¤€ãƒ‚‚'„`„ÛŠŠ„Ü^^†P„ÛŠ=Š>„†„?†#†#ÿ„@) ™a„`„`P„ÛŠ=Š>„ÛŠ!Š&ˆ¥€ãƒƒˆ¦ˆ§„ÛŠ Š „Ü––†‚†„ÛŠ 6Š :„†t„ÛŠ ;Š A„€è††††ÿ¤@) ™aˆ§ˆ§‚†„ÛŠ 6Š :t„ÛŠ ;Š Aˆ©„ÛŠ Š (ˆª€ã€ºˆ«„ÛŠbŠb!€ºˆ¬ ‡{®&»»>„¿;ƒ„ˆ­„ÛŠiŠi$„Ü“-“-$†P„ÛŠi.Ši0„††ÿ„@P„ÛŠi.Ši0#„ÛŠi'Ši-,„ÛŠi6Ši;ˆ1„ÛŠiJŠiPˆ®€éƒ…ˆ¯„ÛŠpŠp$„Ü“2“2$†P„ÛŠp.Šp0„††ÿ„@P„ÛŠp.Šp0„ÛŠp'Šp-,„ÛŠp6Šp;ˆ1„ÛŠpJŠpP#„ÛŠp_Špeˆ°€éƒ†ˆ±„ÛŠyŠy„Ü“7“7†P„ÛŠy)Šy+„€ê†€ê†ÿ¤@P„ÛŠy)Šy+#„ÛŠy"Šy(ˆ²„ÛŠy2Šy8ˆ³„ÛŠyGŠyNˆ´„ÛŠy]Šycˆµ„ÛŠyrŠyyˆ¶€éƒ‡ˆ·„ÛŠ‚Š‚„Ü“@“@†P„ÛŠ‚)Š‚+„€ê†€ê†ÿ¤@P„ÛŠ‚)Š‚+„ÛŠ‚"Š‚(ˆ²„ÛŠ‚2Š‚8ˆ³„ÛŠ‚GŠ‚Nˆ´„ÛŠ‚]Š‚cˆµ„ÛŠ‚rŠ‚y#„ÛŠ‚€ˆŠ‚€Žˆ¸€éƒˆˆ¹„ÛŠŠ„Ü“G“G†P„ÛŠ)Š+„€ë†€ë†ÿ¤@P„ÛŠ)Š+#„ÛŠ"Š(ˆ²„ÛŠ3Š9ˆ³„ÛŠHŠOˆ´„ÛŠ^Šdˆµ„ÛŠsŠzˆº„ÛŠ€‰Š€ˆ»„ÛŠ€žŠ€¥ˆ¼€éƒ‰ˆ½„ÛŠ˜Š˜„Ü“S“S†P„ÛŠ˜)Š˜+„€ë†€ë†ÿ¤@P„ÛŠ˜)Š˜+„ÛŠ˜"Š˜(ˆ²„ÛŠ˜3Š˜9ˆ³„ÛŠ˜HŠ˜Oˆ´„ÛŠ˜^Š˜dˆµ„ÛŠ˜sŠ˜zˆº„ÛŠ˜€‰Š˜€ˆ»„ÛŠ˜€žŠ˜€¥#„ÛŠ˜€´Š˜€ºˆ¾€éƒŠˆ¿„ÛŠ¥Š¥„Ü“\“\† P„ÛŠ¥)Š¥+„€ì† €ì† ÿ¤@P„ÛŠ¥)Š¥+ #„ÛŠ¥"Š¥(ˆ²„ÛŠ¥4Š¥:ˆ³„ÛŠ¥IŠ¥Pˆ´„ÛŠ¥_Š¥eˆµ„ÛŠ¥tŠ¥{ˆº„ÛŠ¥€ŠŠ¥€ˆ»„ÛŠ¥€ŸŠ¥€¦ˆÀ„ÛŠ¥€µŠ¥€»ˆÁ„ÛŠ¥€ÊŠ¥€ÑˆÂ€éƒ‹ˆÃ„ÛŠ²в„Ü“k“k†!P„ÛŠ²)в+„€ì†!€ì†!ÿ¤@P„ÛŠ²)в+ „ÛŠ²"в(ˆ²„ÛŠ²4в:ˆ³„ÛŠ²IвPˆ´„ÛŠ²_вeˆµ„ÛŠ²tв{ˆº„ÛŠ²€ŠŠ²€ˆ»„ÛŠ²€ŸŠ²€¦ˆÀ„ÛŠ²€µŠ²€»ˆÁ„ÛŠ²€Êв€Ñ#„ÛŠ²€àв€æˆÄ€éƒŒˆÅ„ÛŠ¹й%„Ü“v“v%ÿ„@#„ÛŠ¹(й.,„ÛŠ¹9й>ˆ1„ÛŠ¹MйSˆÆ€éƒˆÇ„ÛŠ½н„Ü’Ý’Ý#ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠ½$н)ˆ5„ÛŠ½8н<ˆÉ„ÛŠ½KнOˆÊ€éƒŽˆË„ÛŠÁŠÁ„Ü’ç’ç"""#"ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÁ#ŠÁ(ˆ5„ÛŠÁ7ŠÁ;ˆÉ„ÛŠÁJŠÁNˆÌ€éƒˆÍ„ۊŊńܒè’è!!!#!ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÅ!ŠÅ&ˆ5„ÛŠÅ5ŠÅ9ˆÉ„ÛŠÅHŠÅLˆÎ€éƒˆÏ„ۊɊɄܒޒÞ)))#)ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÉ"ŠÉ'ˆ5„ÛŠÉ6ŠÉ:ˆÉ„ÛŠÉIŠÉMˆÐ€éƒ‘ˆÑ„ۊ͊̈́ܒߒß***#*ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÍ"ŠÍ'ˆ5„ÛŠÍ6ŠÍ:ˆÉ„ÛŠÍIŠÍMˆÒ€éƒ’ˆÓ„ۊъфܒà’à(((#(ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÑ"ŠÑ'ˆ5„ÛŠÑ6ŠÑ:ˆÉ„ÛŠÑIŠÑMˆÔ€éƒ“ˆÕ„ÛŠÕŠÕ„Ü’á’á,,,#,ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÕŠÕ$ˆ5„ÛŠÕ3ŠÕ7ˆÉ„ÛŠÕFŠÕJˆÖ€éƒ”ˆ×„ۊيلܒâ’â:::#:ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÙŠÙ$ˆ5„ÛŠÙ3ŠÙ7ˆÉ„ÛŠÙFŠÙJˆØ€éƒ•ˆÙ„ۊ݄݊ܒã’ã%%%#%ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠÝ"ŠÝ'ˆ5„ÛŠÝ6ŠÝ:ˆÉ„ÛŠÝIŠÝMˆÚ€éƒ–ˆÛ„ÛŠáŠá„Ü’ä’ä&&&#&ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠá"Šá'ˆ5„ÛŠá6Šá:ˆÉ„ÛŠáIŠáMˆÜ€éƒ—ˆÝ„ÛŠåŠå„Ü’å’å$$$#$ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠå"Šå'ˆ5„ÛŠå6Šå:ˆÉ„ÛŠåIŠåMˆÞ€éƒ˜ˆß„ÛŠéŠé„Ü’æ’æ#ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠé"Šé'ˆ5„ÛŠé6Šé:ˆÉ„ÛŠéIŠéMˆà€éƒ™ˆá„ÛŠíŠí„Ü’ë’ë####ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º,„ÛŠí"Ší'ˆÉ„ÛŠíIŠíMˆâ€éƒšˆã„ÛŠñŠñ„Ü’é’é†"P„ÛŠñ%Šñ'„†"†"†"†"†"†"#†"ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„ÛŠñ%Šñ'ˆä„ÛŠñ!Šñ$‚„ÛŠñ+Šñ.,„ÛŠñCŠñHˆÉ„ÛŠñQŠñUˆå€éƒ›ˆæ„ÛŠõŠõ „Ü’ê’ê †#ˆ4„ÛŠõ*Šõ/„†$P„ÛŠõ8Šõ:„†#†$†#†$†$†#†$#†$ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºˆ4„ÛŠõ*Šõ/P„ÛŠõ8Šõ:ˆç„ÛŠõ%Šõ)‚„ÛŠõ3Šõ6,„ÛŠõNŠõSˆ5„ÛŠõ\Šõ`ˆÉ„ÛŠõjŠõnˆè€éƒœˆé„ÛŠùŠù„Ü”å”å†%P„ÛŠùŠù!„†%†%ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„ÛŠùŠù!‡€„ÛŠùŠùˆê€éƒˆë„ÛŠýŠý„Ü”æ”æ†&P„ÛŠý Šý"„†&†&ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„ÛŠý Šý"‡€„ÛŠýŠýˆì€éƒžˆí„Û‹‹„Ü”ç”ç†'P„Û‹ ‹"„†'†'ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹ ‹"‡€„Û‹‹ˆî€éƒŸˆï„Û‹‹„Ü”è”è†(P„Û‹ ‹"„†(†(ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹ ‹"‡€„Û‹‹ˆð€éƒ ˆñ„Û‹ ‹ „Ü”é”é†)‚o„Û‹ !‹ $„†*‚p„Û‹ 1‹ 4„†)†)†*ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‚o„Û‹ !‹ $‚p„Û‹ 1‹ 4‡„Û‹ ‹ ‡€„Û‹ (‹ )ˆò€éƒ¡ˆó„Û‹ ‹ „Ü”ê”ê†+P„Û‹ #‹ %„†+†+ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹ #‹ %‡€„Û‹ !‹ "ˆô€éƒ¢ˆõ„Û‹‹„Ü”ë”ë†,P„Û‹‹!„†,†,ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹‹!‡€„Û‹‹ˆö€éƒ£ˆ÷„Û‹‹„Ü”ì”ì†-P„Û‹!‹#„†-†-ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹!‹#‡€„Û‹‹ ˆø€éƒ¤ˆù„Û‹‹„Ü”í”í†.P„Û‹$‹&„†.†.ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹$‹&‡€„Û‹"‹#ˆú€éƒ¥ˆû„Û‹‹„Ü”î”î†/P„Û‹!‹#„†/†/ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹!‹#‡€„Û‹‹ ˆü€éƒ¦ˆý„Û‹!‹!„Ü”ï”ï†0P„Û‹!‹! „†0ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹!‹! ˆþ€éƒ§ˆÿ„Û‹%‹%„Ü”ð”ð†1P„Û‹%‹%!„†1†1ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹%‹%!‡€„Û‹%‹%‰€éƒ¨‰„Û‹)‹)„Ü”ñ”ñ†2P„Û‹)!‹)#„†2†2ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹)!‹)#‡€„Û‹)‹) ‰€éƒ©‰„Û‹-‹-„Ü”ò”ò†3‚o„Û‹-‹-!„†4‚p„Û‹-%‹-(„†3†4ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‚o„Û‹-‹-!‚p„Û‹-%‹-(‰€éƒª‰„Û‹1‹1„Ü”ó”ó†5P„Û‹1‹1!„†5†5ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹1‹1!‡€„Û‹1‹1‰€éƒ«‰„Û‹5‹5„Ü”ô”ô†6P„Û‹5 ‹5"„†6†6ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹5 ‹5"‡€„Û‹5‹5‰€éƒ¬‰ „Û‹9‹9„Ü”õ”õ†7P„Û‹9‹9!„†7†7ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹9‹9!‡€„Û‹9‹9‰ €éƒ­‰ „Û‹=‹=„Ü”ö”ö†8P„Û‹= ‹="„†8†8ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹= ‹="‡€„Û‹=‹=‰ €éƒ®‰ „Û‹A‹A„Ü”÷”÷†9P„Û‹A‹A!„†9†9ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹A‹A!‡€„Û‹A‹A‰€éƒ¯‰„Û‹E‹E„Ü”ø”ø†:P„Û‹E ‹E"„†:†:ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹E ‹E"‡€„Û‹E‹E‰€éƒ°‰„Û‹I‹I„Ü”ù”ù†;P„Û‹I‹I!„†<‚j„Û‹I'‹I)„†;†<†;ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹I‹I!‚j„Û‹I'‹I)‡€„Û‹I‹I‡„Û‹I%‹I&‰€éƒ±‰„Û‹M‹M„Ü““ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹M‹M‡~„Û‹M$‹M%‰€éƒ²‰„Û‹Q‹Q„Ü““$$ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹Q‹Q‡~„Û‹Q&‹Q'‰€éƒ³‰„Û‹U‹U„Ü““%%ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹U‹U‡~„Û‹U&‹U'‰€éƒ´‰„Û‹Y‹Y„Ü“ “ &&ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹Y‹Y‡~„Û‹Y(‹Y)‰€éƒµ‰„Û‹]‹]„Ü““''ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹]‹]‡~„Û‹]&‹]'‰€éƒ¶‰„Û‹a‹a„Ü““((ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹a‹a‡~„Û‹a(‹a)‰€éƒ·‰„Û‹e‹e„Ü““))ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹e‹e‡~„Û‹e&‹e'‰ €éƒ¸‰!„Û‹i‹i„Ü““**ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹i‹i‡~„Û‹i(‹i)‰"€éƒ¹‰#„Û‹m‹m„Ü““,,ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹m‹m‡~„Û‹m+‹m,‰$€éƒº‰%„Û‹q‹q„Ü““::ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹q‹q‡~„Û‹q-‹q.‰&€éƒ»‰'„Û‹u‹u„Ü“ “ !!ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹u‹u‡~„Û‹u)‹u*‰(€éƒ¼‰)„Û‹y‹y„Ü“#“#""ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹y‹y‡~„Û‹y'‹y(‰*€éƒ½‰+„Û‹}‹}„Ü“&“&;;ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‡€„Û‹}‹}‡~„Û‹}*‹}+‰,€éƒ¾‰-„Û‹‹„Ü“)“)†=P„Û‹!‹#„†=†=†=†=†=†=ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û‹!‹#ˆä„Û‹‹ ‰.„Û‹&‹)„Û‹>‹C‰/„Û‹I‹Q‰0€é€»‰1„Û‹…‹…€»‰2 ‡{j¼¼>C¿Äƒ¿‡æ‡ç„Û‹‹‹‹„ÜØØ†>P„Û‹‹‹‹„†>ÿ„@) ™a‡ç‡çP„Û‹‹‹‹‰3€íƒÀ‰4‰5„Û‹’‹’ „ÜÛÛ †?P„Û‹’!‹’#„†?ÿ„D€› …0aP) ™a‰5‰5P„Û‹’!‹’#‰6€íƒÁ‡Ø‡Ù„Û‹˜‹˜„ÜÞÞ†@P„Û‹˜!‹˜#„†@†@ÿ„@) ™a‡Ù‡ÙP„Û‹˜!‹˜#‰7€íƒÂ‰8„Û‹ž‹ž„Üáá†AP„Û‹ž ‹ž"„†A†Aÿ„@) ™aP„Û‹ž ‹ž"‰9€íƒÃˆLˆM„Û‹¤‹¤„Üää†BP„Û‹¤‹¤ „†Bÿ„@) ™aˆMˆMP„Û‹¤‹¤ ‰:€í€¼‰;„Û‹§‹§€¼‰< ‡{¥ ½½CYÄԃć}„Û‹¬‹¬„Ü‘‘†CP„Û‹¬5‹¬6„†C‡}†C†C†C†Cÿ„@C ‚—a.P„Û‹¬5‹¬6„Û‹¬ ‹¬%‰=€îƒÅ„!„Û‹³‹³„Üÿÿ†D‚o„Û‹³=‹³?„†D†E„!†D†E†F†F†E†E‚p„Û‹³D‹³F„†D†E„!†D†E†F†F†F‚z„Û‹³r‹³t„†D†E†D†E†Fÿ„@C ‚—a.‚o„Û‹³=‹³?‚p„Û‹³D‹³F‚z„Û‹³r‹³t‡€„Û‹³‹³ ‡„Û‹³(‹³)‰>€îƒÆƒ"„Û‹¹‹¹„Üèè†G‚o„Û‹¹=‹¹?„†G†Hƒ"†G†H†I†I†H†H‚p„Û‹¹D‹¹F„†G†Hƒ"†G†H†I†I†I‚z„Û‹¹r‹¹t„†G†H†G†H†Iÿ„@‚o„Û‹¹=‹¹?‚p„Û‹¹D‹¹F‚z„Û‹¹r‹¹t‡€„Û‹¹‹¹ ‡„Û‹¹(‹¹)‰?€îƒÇ„(„Û‹À‹À„Ü‘‘†J‚o„Û‹À=‹À?„†J†K„(†J†K†L†L†K†K‚p„Û‹ÀD‹ÀF„†J†K„(†J†K†L†L†L‚z„Û‹Àr‹Àt„†J†K†J†K†Lÿ„@C ‚—a.‚o„Û‹À=‹À?‚p„Û‹ÀD‹ÀF‚z„Û‹Àr‹Àt‡€„Û‹À‹À ‡„Û‹À(‹À)‰@€îƒÈ…„>„ۋʋʄܑ1‘1†MP„Û‹ÊA‹ÊB„†M„?†M†Mÿ„@C ‚—a.) ™a„>„>P„Û‹ÊA‹ÊB„Û‹Ê$‹Ê)‰A€îƒÉ‚+„A„Û‹Ô‹Ô„Ü‘D‘D†NP„Û‹ÔA‹ÔB„†N„?†N$†N$ÿ„@C ‚—a.) ™a„A„AP„Û‹ÔA‹ÔB„Û‹Ô$‹Ô)‰B€îƒÊ‚2„C„Û‹Þ‹Þ„Ü‘‘†OP„Û‹ÞA‹ÞB„†O„?†O%†O%ÿ„@C ‚—a.) ™a„C„CP„Û‹ÞA‹ÞB„Û‹Þ$‹Þ)‰C€îƒË‚6„E„Û‹è‹è„Ü‘W‘W†PP„Û‹èA‹èB„†P„?†P&†P&ÿ„@C ‚—a.) ™a„E„EP„Û‹èA‹èB„Û‹è$‹è)‰D€îƒÌ[„G„Û‹ò‹ò„Ü‘º‘º†QP„Û‹òA‹òB„†Q„?†Q†Qÿ„@C ‚—a.) ™a„G„GP„Û‹òA‹òB„Û‹ò$‹ò)‰E€îƒÍ‚:„L„Û‹ü‹ü„Ü‘§‘§†RP„Û‹üA‹üB„†R„?†R'†R'ÿ„@C ‚—a.) ™a„L„LP„Û‹üA‹üB„Û‹ü$‹ü)‰F€îƒÎ‚>„N„ÛŒŒ„Ü‘”‘”†SP„ÛŒAŒB„†S„?†S(†S(ÿ„@C ‚—a.) ™a„N„NP„ÛŒAŒB„ÛŒ$Œ)‰G€îƒÏ‚B„P„ÛŒŒ„ܑёцTP„ÛŒAŒB„†T„?†T)†T)ÿ„@C ‚—a.) ™a„P„PP„ÛŒAŒB„ÛŒ$Œ)‰H€îƒÐ‚F„R„ÛŒŒ„Ü‘¾‘¾†UP„ÛŒAŒB„†U„?†U*†U*ÿ„@C ‚—a.) ™a„R„RP„ÛŒAŒB„ÛŒ$Œ)‰I€îƒÑ‚”„X„ÛŒ#Œ# „Ü‘÷‘÷ †VP„ÛŒ#AŒ#B„†V„?†V,†V,ÿ„@C ‚—a.) ™a„X„XP„ÛŒ#AŒ#B„ÛŒ#$Œ#)‰J€îƒÒ„Z„[„ÛŒ,Œ,!„Ü‘ä‘ä!†WP„ÛŒ,AŒ,B„†W„?†W:†W:ÿ„@C ‚—a.) ™a„[„[P„ÛŒ,AŒ,B„ÛŒ,$Œ,)‰K€îƒÓ‚'„`„ÛŒ6Œ6„Ü‘j‘j†XP„ÛŒ6AŒ6B„†X„?†X#†X#ÿ„@C ‚—a.) ™a„`„`P„ÛŒ6AŒ6B„ÛŒ6%Œ6*‰L€î€½‰Md d€½f ƒôa9‰N :¾¿Y^ÔÛ€¾‰Ogg€¾‰P ‰Mì¿¿Y^ÔÛƒÔ‰Qkk‰RAA†YPk)k+„†Yÿ¤@Pk)k+‰S€ïƒÕ‰Tmm‰REE†ZPm(m*„†Zÿ¤@Pm(m*‰U€ïƒÖ‰Voo‰RII†[Po+o-„'†[ÿ¤@Po+o-oo!‰W€ïƒ×‰Xqq‰RMM†\Pq+q-„)†\ÿ¤@Pq+q-qq!‰Y€ïƒØ‰Zss‰R˜˜†]Ps,s.„†]ÿ¤@Ps,s. ss!‰[€ïƒÙ‰\uu ‰R44 )ÿ¤@u#u(‰]€ïƒÚ‰^ww!‰R••!ÿ¤@ w$w(‰_€ï€¿`„Ûˆ ˆ€¿€Í…à·z\V4à‰†a…à·z\V4à‰†ƒÛ†u,ƒÜ…¡u,uu†uuuƒÛƒÜuuuuuuƒÝ†u,ƒÞ…¡u,uu†uuuƒÝƒÞuuuuuuƒß†u,ƒà…¡u,uu†uuuƒßƒàuuuuuuƒá†u,ƒâ…¡u,uu†uuuƒáƒâuuuuuuu„uuuu”u† €ôaa `av‰` ÀÀ^^ãã€À‚—„Û‚“ ‚“%€À€Í…à·z\V4à‰†a…à·z\V4à‰†ƒã†u,ƒä…¡u,uu†uuuƒãƒäuuuuuu@u€€u€Àu† €ôaa ‚—a.v‰a ÁÁ^^åå€Áb„Û© ©€Á€Í…à·z\V4à‰†a…à·z\V4à‰†ƒå†u,ƒæ…¡u,uu†uuuƒåƒæuuuuuuƒç†u,ƒè…¡u,uu†uuuƒçƒèuuuuuuƒé†u,ƒê…¡u,uu†uuuƒéƒêuuuuuuƒë†u,ƒì…¡u,uu†uuuƒëƒìuuuuuuu„uuuu”u† €ôaa bav‰b ÂÂ^^íí€Â„h„Û€Í €Í€Â€Í…à·z\V4à‰†a…à·z\V4à‰†ƒí†u,ƒî…¡u,uu†uuuƒíƒîuuuuuuÿ@uuÿ@u† €ôaa „ha<v‰c ÃÃ^^ïï€Ã„ê„Û€× €×.€Ã€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „êaAv‰d ÄÄ^^ïï€Ä…Œ„Û…¤…¤#€Ä€– …aK  ba …Œ……_ …Œ……_] …Œ_]^_‰e ÅÅ^^ïï‰f„Û…¤'…¤-‰g„Û…¤0…¤3‰h„Û…¤6…¤9€Å„ñ„Û€ý €ý€Å€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „ñaDv‰i ÆÆ^^ïï€Æ‰j„Û‚ñ ‚ñ€Æ‰k ˆ;ÇË^ÙïV/ƒï‰l„Û‚ø‚ø"„܇Û‡Û"†^P„Û‚øA‚øC„ †^†^ÿ„@P„Û‚øA‚øC‡Ú„Û‚ø%‚ø'‡Û„Û‚ø.‚ø0‰m€ðƒð‰n„Û‚þ‚þ$„܇܇Ü$†_P„Û‚þC‚þE„ †_†_ÿ„@P„Û‚þC‚þE‡Ú„Û‚þ'‚þ)‡Û„Û‚þ0‚þ2‰o€ðƒñ‰p„Ûƒƒ.„܇݇Ý.†`P„Ûƒzƒ|„ ]†`†`ÿ„@P„Ûƒzƒ|‰q„Ûƒ1ƒ5‡Ú„Ûƒ^ƒ`‡Û„Ûƒgƒi‰r€ðƒò‰s„Ûƒ ƒ $„܇Þ‡Þ$†aP„Ûƒ Bƒ D„ †a†aÿ„@P„Ûƒ Bƒ D‡Ú„Ûƒ 'ƒ )‡Û„Ûƒ 0ƒ 2‰t€ðƒó‰u„Ûƒƒ0„܇߇ß0†bP„Ûƒsƒu„ [†b†bÿ„@P„Ûƒsƒu‰q„Ûƒ3ƒ7‡Ú„ÛƒXƒZ‡Û„Ûƒaƒc‰v€ðƒô‰w„Ûƒƒ"„܇à‡à"†cP„ÛƒAƒC„ †c†cÿ„@P„ÛƒAƒC‡Ú„Ûƒ%ƒ'‡Û„Ûƒ.ƒ0‰x€ðƒõ‰y„Ûƒƒ%„܇á‡á%†dP„ÛƒDƒF„ †d†dÿ„@P„ÛƒDƒF‡Ú„Ûƒ(ƒ*‡Û„Ûƒ1ƒ3‰z€ðƒö‰{„Ûƒ%ƒ%%„܇â‡â%†eP„Ûƒ%Dƒ%F„ †e†eÿ„@P„Ûƒ%Dƒ%F‡Ú„Ûƒ%(ƒ%*‡Û„Ûƒ%1ƒ%3‰|€ðƒ÷‰}„Ûƒ+ƒ+(„܇ã‡ã(†fP„Ûƒ+Gƒ+I„ †f†fÿ„@P„Ûƒ+Gƒ+I‡Ú„Ûƒ++ƒ+-‡Û„Ûƒ+4ƒ+6‰~€ðƒø‰„Ûƒ1ƒ1!„܇ç‡ç!†gP„Ûƒ1>ƒ1@„ †g†g†gÿ„@P„Ûƒ1>ƒ1@‡Ú„Ûƒ1$ƒ1&‡Û„Ûƒ1-ƒ1/‰€€ðƒù‰„Ûƒ7ƒ7!„܇ì‡ì!†hP„Ûƒ7>ƒ7@„ †h†h†hÿ„@P„Ûƒ7>ƒ7@‡Ú„Ûƒ7$ƒ7&‡Û„Ûƒ7-ƒ7/‰‚€ðƒú‰ƒ„Ûƒ?ƒ?#„܇ò‡ò#†iP„Ûƒ?Bƒ?D„†i†iÿ„@P„Ûƒ?Bƒ?D‡Ú„Ûƒ?&ƒ?(‡Û„Ûƒ?/ƒ?1‰„€ðƒû‰…„ÛƒEƒE„܇ó‡ó†jP„ÛƒE5ƒE7„†jÿ„@P„ÛƒE5ƒE7„ÛƒE"ƒE%‰†€ðƒü‰‡„ÛƒJ ƒJ#„܇ö ‡ö#]ÿ¤@‰ˆ€ðƒý‰‰„ÛƒP ƒP%„܇÷ ‡÷%]ÿ¤@‰Š€ðƒþ‰‹„ÛƒS ƒS„܇õ ‡õ[ÿ¤@‰Œ€ðƒÿ‰„ÛƒV ƒV„ÜˆŠ ˆŠ†kP„ÛƒV ƒV"„ €ñ†kÿ¤DP„ÛƒV ƒV"‰€ð„‰„ÛƒYƒY1„܈‹ ˆ‹(†lP„ÛƒY2ƒY4„ €ñ†lÿ¤DP„ÛƒY2ƒY4‰‘€ð„‰’„Ûƒ\ƒ\.„܈3ˆ3.†mP„Ûƒ\/ƒ\1„ €ò†mÿ„DP„Ûƒ\/ƒ\1‰”€ð„‰•„Ûƒbƒb5„܈4ˆ45†nP„Ûƒb6ƒb8„ €ò†nÿ„@P„Ûƒb6ƒb8ˆP„Ûƒb<ƒbA‰–€ð„‰—„Ûƒhƒh„܇ù‡ù†oP„Ûƒh%ƒh'„†oÿ„@P„Ûƒh%ƒh'„Ûƒh!ƒh$‰˜€ð„‰™„Ûƒoƒo%„܇ú‡ú%†pP„Ûƒo:ƒo<„†pÿ„@P„Ûƒo:ƒo<ˆP„Ûƒo(ƒo-„Ûƒo6ƒo9‰š€ð„‰›„Ûƒuƒu*„܇û‡û*†qP„Ûƒudƒuf„]†qÿ„@P„Ûƒudƒuf‰œ„Ûƒu-ƒu5„Ûƒu`ƒuc‰€ð„‰ž„Ûƒzƒz„܈ŽˆŽ†rP„ÛƒzEƒzG„†s†\„Ûƒz8ƒz=„†r†r†sÿ„@P„ÛƒzEƒzG†\„Ûƒz8ƒz=„Ûƒz!ƒz&‰Ÿ€ð„‰ „Ûƒƒ„܈’ˆ’†t†\„Ûƒ7ƒ<„†u†uP„ÛƒDƒF„†t†uÿ„@†\„Ûƒ7ƒ<P„ÛƒDƒF„I„Ûƒ!ƒ%‰¡€ð„‰¢„Ûƒ„ƒ„#„܈™ˆ™#†v…Ö„Ûƒ„5ƒ„="€ó†vÿ„@…Ö„Ûƒ„5ƒ„=‰£€ð„ ‰¤„Ûƒ‰ƒ‰%„܈šˆš%†w…Ö„Ûƒ‰;ƒ‰C!€ô†wÿ„@…Ö„Ûƒ‰;ƒ‰C‰¥€ð„ ‰¦„ÛƒŽƒŽ%„܈›ˆ›%†x…Ö„ÛƒŽ;ƒŽC;€õ†xÿ„@…Ö„ÛƒŽ;ƒŽC‰§€ð„ ‰¨„Ûƒ“ƒ“#„܈œˆœ#†y…Ö„Ûƒ“1ƒ“9€ö†yÿ„@…Ö„Ûƒ“1ƒ“9‰©€ð„ ‰ª„Ûƒ˜ƒ˜#„܈ŸˆŸ#†z…Ö„Ûƒ˜5ƒ˜=)€÷†zÿ„@…Ö„Ûƒ˜5ƒ˜=‰«€ð„ ‰¬„Ûƒƒ#„܈ˆ#†{…Ö„Ûƒ5ƒ=%€ø†{ÿ„@…Ö„Ûƒ5ƒ=‰­€ð„‰®„Ûƒ¢ƒ¢#„܈žˆž#†|…Ö„Ûƒ¢5ƒ¢=$€ù†|ÿ„@…Ö„Ûƒ¢5ƒ¢=‰¯€ð„‰°„Ûƒ§ ƒ§„Üˆê ˆê'ÿ¤@„o„Ûƒ§ƒ§‰±€ð„‰²„Ûƒ¬ ƒ¬„܈٠ˆÙ(ÿ¤@„o„Ûƒ¬ƒ¬‰³€ð„‰´„Ûƒ± ƒ±„܈ù ˆù)ÿ¤@„o„Ûƒ±ƒ±‰µ€ð„‰¶„Ûƒ¶ ƒ¶„܉ ‰*ÿ¤@„o„Ûƒ¶ƒ¶‰·€ð„‰¸„Ûƒº ƒº„܉G ‰G†}P„Ûƒº)ƒº+„†}ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Ûƒº)ƒº+‰¹€ð„‰º„Ûƒ¾ ƒ¾„܉H ‰H†~P„Ûƒ¾(ƒ¾*„†~ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Ûƒ¾(ƒ¾*‰»€ð„‰¼„ۃ ƒÂ„܉¯ ‰¯†‚o„ۃ ƒÂ#„†€‚p„ÛƒÂ)ƒÂ,„†‚j„ÛƒÂ0ƒÂ2„††€†ÿ¤@€¥ …jaZ‰½‰½„´„´‡º‚o„ۃ ƒÂ#‚p„ÛƒÂ)ƒÂ,‚j„ÛƒÂ0ƒÂ2‡€„ۃƒ‡„ÛƒÂ'ƒÂ(‰¾€ð„‰¿„ÛƒÆ ƒÆ"„Ü‰Ö ‰Ö"†‚‚o„ÛƒÆ'ƒÆ*„†ƒ‚p„ÛƒÆ0ƒÆ3„†„‚j„ÛƒÆ7ƒÆ9„†‚†ƒ†„ÿ¤@€¥ …jaZ‰½‰½„´„´‡º‚o„ÛƒÆ'ƒÆ*‚p„ÛƒÆ0ƒÆ3‚j„ÛƒÆ7ƒÆ9‡€„ÛƒÆ%ƒÆ&‡„ÛƒÆ.ƒÆ/‰À€ð„‰Á„ÛƒÊ ƒÊ„܉ü ‰ü†…‚o„ÛƒÊ ƒÊ#„††‚p„ÛƒÊ)ƒÊ,„†‡‚j„ÛƒÊ0ƒÊ2„†…†††‡ÿ¤@€¥ …jaZ‰½‰½„´„´‡º‚o„ÛƒÊ ƒÊ#‚p„ÛƒÊ)ƒÊ,‚j„ÛƒÊ0ƒÊ2‡€„ۃʃʇ„ÛƒÊ'ƒÊ(‰Â€ð„‰Ã„ۃΠƒÎ"„ÜŠ! Š!"†ˆ‚o„ÛƒÎ'ƒÎ*„†‰‚p„ÛƒÎ0ƒÎ3„†Š‚j„ÛƒÎ7ƒÎ9„†ˆ†‰†Šÿ¤@€¥ …jaZ‰½‰½„´„´‡º‚o„ÛƒÎ'ƒÎ*‚p„ÛƒÎ0ƒÎ3‚j„ÛƒÎ7ƒÎ9‡€„ÛƒÎ%ƒÎ&‡„ÛƒÎ.ƒÎ/‰Ä€ð„‰Å„ÛƒÒ ƒÒ„܉‚ ‰‚†‹P„ÛƒÒ#ƒÒ%„†‹†‹ÿ¤@€¥ …jaZ‰½‰½„´„´‡ºP„ÛƒÒ#ƒÒ%‡€„ÛƒÒ!ƒÒ"‡„ÛƒÒ)ƒÒ*‰Æ€ð„‰Ç„ÛƒÕƒÕ„܉J‰J†ŒP„ÛƒÕ!ƒÕ"„†Œƒ#†Œ†Œÿ„DP„ÛƒÕ!ƒÕ"‰È€ð„‰É„ۃ؃؄܉^‰^†P„ÛƒØ ƒØ!„†ˆ0††ÿ„DP„ÛƒØ ƒØ!‰Ê€ð„‰Ë„ÛƒÚƒÚ+„܃q ƒq"†ŽP„ÛƒÚ.ƒÚ0„†Žÿ¤@P„ÛƒÚ.ƒÚ0€ð„ƒ/„Ûƒàƒà„܉„‰„†P„Ûƒà!ƒà"„†ƒ/††††ÿ„@P„Ûƒà!ƒà"‡€„Ûƒà(ƒà)‡„Ûƒà0ƒà1‰Ì€ð€Ç‰Í„Ûƒãƒã*€Ç‰Î ‰j)ÈÈ#„‰Ï„Ûƒæƒæ(„Ü‚…‚…(ÿ¤@€¥ …jaZ‰Ð‰Ð„´„´‡º€ú„‰Ñ„Ûƒéƒé%„Ü‚‡‚‡%ÿ¤@€¥ …jaZ‰Ð‰Ð„´„´‡º€ú„ ‰Ò„Ûƒìƒì,„Ü‚‚‚‚,ÿ¤@€¥ …jaZ‰Ð‰Ð„´„´‡º€ú„!‰Ó„Ûƒïƒï&„Ü‚ƒ‚ƒ&ÿ¤@€¥ …jaZ‰Ð‰Ð„´„´‡º€ú„"‰Ô„Ûƒòƒò,„Ü‚‰‚‰,ÿ¤@€¥ …jaZ‰Ð‰Ð„´„´‡º€ú€È‰Õ„Ûƒøƒø!€È‰Ö ‰jÌÉÉ’#)„#‰×„Ûƒüƒü„Ü‚‚ÿ¤@€¥ …jaZ‰Ø‰Ø„³„³‡º‡Ú„Ûƒüƒü‡Û„Ûƒü#ƒü%‰Ù€û„$‰Ú„Û„„„Ü‚‘‚‘ÿ¤@‡Ú„Û„„‡Û„Û„$„&‰Û€û„%‰Ü‰Ý„Û„„„Ü‚“‚“ÿ¤@) ™a‰Ý‰Ý€¥ …jaZ‰Þ‰Þ„³„³‡º‡Ú„Û„„‡Û„Û„$„&‰ß€û„&‰à„Û„ „ „Ü‚”‚”ÿ¤@‡Ú„Û„ „ ‡Û„Û„ $„ &‰á€û„'‰â„Û„„„Ü‚œ‚œ†P„Û„$„&„†€ü†ÿ„@C ‚—a.P„Û„$„&„Û„ „#‰ã€û„(‰ä„Û„„„Ü‚¢‚¢†‘P„Û„%„'„ †‘A†‘ÿ„@C ‚—a.P„Û„%„'„Û„!„$‰å€û€É‰æ„Û„„!€É‰ç ‰j¹ ÊÊ’¡)<„)‰è„Û„"„"„Ü‚á‚ᆒP„Û„"„"„†’ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„"„"#„Û„"#„")‰é€ý„*‰ê„Û„&„& „Ü‚é‚é †“P„Û„&!„&#„†“ÿ„@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„&!„&##„Û„&'„&-‰ë€ý„+‰ì„Û„*„*„Ü‚ï‚P„Û„* „*"„ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„* „*"#„Û„*&„*,‰í€ý„,‰î„Û„.„.#„Ü‚õ‚õ#†•P„Û„.$„.&„ÿ„@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„.$„.&#„Û„.*„.0‰ï€ý„-†õ„Û„2„2 „܃ ƒ #ÿ„@#„Û„2#„2)€Ã„Û„24„29‰ð€ý„.‰ñ„Û„7„7%„܃ ƒ %†–P„Û„78„7:„†–ÿ„@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„78„7:‰ò€ý„/‰ó„Û„;„;"„܃ƒ";ÿ„@€¥ …jaZˆÈˆÈ„´„´‡º‰ô„Û„;%„;(‰õ„Û„;0„;6‰ö„Û„;>„;B‰÷„Û„;J„;T‰ø„Û„;]„;b‰ù€ý„0‰ú„Û„?„?„Ü‚ù‚ù†—P„Û„?„?„{†—ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„?„?Ž„Û„?=„?E‰û€ý„1‰ü„Û„C„C„Ü‚þ‚þÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‰ý€ý„2‰þ„Û„G„G„܃ƒÿ¤@€¥ …jaZˆÈˆÈ„´„´‡º‰ÿ€ý„3Š„Û„K„K„܃ƒ†˜P„Û„K*„K,„†˜†˜ÿ¤@€¥ …jaZˆÈˆÈ„´„´‡ºP„Û„K*„K,Š€ý„4Š„Û„O„O„܃ƒ†™P„Û„O-„O/„†™†™ÿ„@P„Û„O-„O/#„Û„O&„O,€Ã„Û„O5„O:Š€ý„5Š„Û„S„S!„܃ƒ!†šP„Û„S.„S0„€ê†š†šÿ„@P„Û„S.„S0#„Û„S'„S-Š„Û„S7„S=Š„Û„SE„SKŠ€ý„6Š„Û„W„W!„܃3ƒ3!†›P„Û„W-„W/„€ë†›†›ÿ„@P„Û„W-„W/#„Û„W&„W,Š„Û„W6„W<Š„Û„WD„WJŠ „Û„WR„WXŠ €ý„7Š „Û„[„[!„܃NƒN!†œP„Û„[-„[/„€ì†œ†œÿ„@P„Û„[-„[/#„Û„[&„[,Š„Û„[7„[=Š„Û„[E„[KŠ „Û„[S„[YŠ „Û„[a„[gŠ €ý„8Š„Û„_„_„܃ƒ†P„Û„_+„_-„††ÿ„@P„Û„_+„_-„Û„_$„_*€Ã„Û„_3„_8„Û„_@„_EŠ€ý„9Š„Û„c„c!„܃ƒ!†žP„Û„c,„c.„€ê†ž†žÿ„@P„Û„c,„c.„Û„c%„c+Š„Û„c5„c;Š„Û„cC„cI„Û„cQ„cVŠ€ý„:Š„Û„g„g!„܃4ƒ4!†ŸP„Û„g+„g-„€ë†Ÿ†Ÿÿ„@P„Û„g+„g-„Û„g$„g*Š„Û„g5„g;Š„Û„gC„gIŠ „Û„gQ„gW„Û„g_„gdŠ€ý„;Š„Û„k„k!„܃OƒO!† P„Û„k+„k-„€ì† † ÿ„@P„Û„k+„k-„Û„k$„k*Š„Û„k6„k<Š„Û„kD„kJŠ „Û„kR„kXŠ „Û„k`„kf„Û„kn„ksŠ€ý€ÊŠ„Û„n„n€ÊŠ ‰jiËË¡Ù<V„<Š„Û„q„q%„܃}ƒ}%†¡P„Û„q=„q?„†¡ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„q=„q?§„Û„q(„q-Š€þ„=Š„Û„u„u)„܃wƒw)†¢P„Û„uF„uH„†¢†¢ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„uF„uH‡€„Û„u,„u-‡„Û„u4„u5Š€þ„>Š„Û„y„y$„܇d‡d$†£P„Û„y-„y/„†£ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„y-„y/§„Û„y'„y,Š€þ„?Š„Û„}„}+„܇f‡f+†¤P„Û„}B„}D„†¤ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„}B„}DˆP„Û„}.„}3§„Û„}<„}AŠ €þ„@Š!„Û„„0„܇j‡j0†¥P„Û„f„h„]†¥ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„f„h‰q„Û„3„7§„Û„`„eŠ"€þ„AŠ#„Û„…„…6„Ü„›„›6†¦P„Û„…`„…b„[†¦†¦ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„…`„…b‰q„Û„…9„…=‡€„Û„…^„…_‡„Û„…f„…gŠ$€þ„BŠ%„Û„‰„‰*„Ü„À„À*†§P„Û„‰/„‰1„†§†§ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„‰/„‰1‡€„Û„‰-„‰.‡„Û„‰5„‰6Š&€þ„CŠ'„Û„„(„܆c†c,†¨P„Û„-„/„†¨†¨ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„-„/‡€„Û„+„,‡„Û„3„4Š(€þ„DŠ)„Û„‘„‘*„܆f†f.†©P„Û„‘/„‘1„†©†©ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„‘/„‘1‡€„Û„‘-„‘.‡„Û„‘5„‘6Š*€þ„EŠ+„Û„•„•4„܆i†i8†ªP„Û„•f„•h„]†ª†ªÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„•f„•h‰q„Û„•7„•;‡€„Û„•d„•e‡„Û„•l„•mŠ,€þ„FŠ-„Û„™„™(„܄ʄÊ(†«P„Û„™-„™/„†«†«ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„™-„™/‡€„Û„™+„™,‡„Û„™3„™4Š.€þ„GŠ/„Û„„+„܄фÑ+†¬P„Û„0„2„†¬†¬ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„0„2‡€„Û„.„/‡„Û„6„7Š0€þ„HŠ1„Û„¡„¡.„܄؄Ø.†­P„Û„¡3„¡5„†­†­ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„¡3„¡5‡€„Û„¡1„¡2‡„Û„¡9„¡:Š2€þ„IŠ3„Û„¥„¥+„Ü„à„à+†®P„Û„¥0„¥2„†®†®ÿ¤@€¥ …jaZŠŠ„´„´‡ºP„Û„¥0„¥2‡€„Û„¥.„¥/‡„Û„¥6„¥7Š4€þ„JŠ5„Û„©„©%„܇–‡–%†¯‚o„Û„©`„©c„†°‚p„Û„©f„©i„]†¯†°ÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„©`„©c‚p„Û„©f„©i‰œ„Û„©(„©0€Â„Û„©Y„©^Š6€þ„KŠ7„Û„­„­%„܇™‡™%†±‚o„Û„­`„­c„†²‚p„Û„­f„­i„†³‚z„Û„­l„­o„]†±†²†³ÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„­`„­c‚p„Û„­f„­i‚z„Û„­l„­o‰œ„Û„­(„­0€Â„Û„­Y„­^Š8€þ„LŠ9„Û„±„±%„܇œ‡œ%†´‚o„Û„±`„±c„†µ‚p„Û„±f„±i„†¶‚z„Û„±l„±o„†·ƒy„Û„±r„±u„]†´†µ†¶†·ÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„±`„±c‚p„Û„±f„±i‚z„Û„±l„±oƒy„Û„±r„±u‰œ„Û„±(„±0€Â„Û„±Y„±^Š:€þ„MŠ;„Û„µ„µ%„܇Ÿ‡Ÿ%†¸‚o„Û„µ`„µc„†¹‚p„Û„µf„µi„†º‚z„Û„µl„µo„†»ƒy„Û„µr„µu„†¼ƒ}„Û„µx„µ{„]†¸†¹†º†»†¼ÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„µ`„µc‚p„Û„µf„µi‚z„Û„µl„µoƒy„Û„µr„µuƒ}„Û„µx„µ{‰œ„Û„µ(„µ0€Â„Û„µY„µ^Š<€þ„NŠ=„Û„¹„¹'„܇£‡£'†½‚o„Û„¹c„¹f„†¾‚p„Û„¹i„¹l„]†½†¾†½†¾ÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„¹c„¹f‚p„Û„¹i„¹l‰œ„Û„¹*„¹2Š>„Û„¹[„¹aŠ?„Û„¹q„¹wŠ@€þ„OŠA„Û„½„½'„܇§‡§'†¿‚o„Û„½c„½f„†À‚p„Û„½i„½l„†Á‚z„Û„½o„½r„]†¿†À†Á†¿†À†Áÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„½c„½f‚p„Û„½i„½l‚z„Û„½o„½r‰œ„Û„½*„½2Š>„Û„½[„½aŠ?„Û„½w„½}ŠB€þ„PŠC„Û„Á„Á'„܇¬‡¬'†Â‚o„Û„Ác„Áf„†Ã‚p„Û„Ái„Ál„†Ä‚z„Û„Áo„Ár„†Åƒy„Û„Áu„Áx„]†Â†Ã†Ä†Å†Â†Ã†Ä†Åÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„Ác„Áf‚p„Û„Ái„Ál‚z„Û„Áo„Árƒy„Û„Áu„Áx‰œ„Û„Á*„Á2Š>„Û„Á[„ÁaŠ?„Û„Á}„Á€ƒŠD€þ„QŠE„Û„Å„Å'„܇²‡²'†Æ‚o„Û„Åc„Åf„†Ç‚p„Û„Åi„Ål„†È‚z„Û„Åo„År„†Éƒy„Û„Åu„Åx„†Êƒ}„Û„Å{„Å~„]†Æ†Ç†È†É†Ê†Æ†Ç†È†É†Êÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„Åc„Åf‚p„Û„Åi„Ål‚z„Û„Åo„Årƒy„Û„Åu„Åxƒ}„Û„Å{„Å~‰œ„Û„Å*„Å2Š>„Û„Å[„ÅaŠ?„Û„Å€ƒ„Å€‰ŠF€þ„RŠG„Û„É„É(„܇¹‡¹(†Ë‚o„Û„É\„É_„†Ì‚p„Û„Éb„Ée„[†Ë†Ì†Ë†Ìÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„É\„É_‚p„Û„Éb„Ée‰œ„Û„É+„É3Š>„Û„ÉT„ÉZŠ?„Û„Éj„ÉpŠH€þ„SŠI„Û„Í„Í(„܇¾‡¾(†Í‚o„Û„Í\„Í_„†Î‚p„Û„Íb„Íe„†Ï‚z„Û„Íh„Ík„[†Í†Î†Ï†Í†Î†Ïÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„Í\„Í_‚p„Û„Íb„Íe‚z„Û„Íh„Ík‰œ„Û„Í+„Í3Š>„Û„ÍT„ÍZŠ?„Û„Íp„ÍvŠJ€þ„TŠK„Û„Ñ„Ñ(„܇ŇÅ(†Ð‚o„Û„Ñ\„Ñ_„†Ñ‚p„Û„Ñb„Ñe„†Ò‚z„Û„Ñh„Ñk„†Óƒy„Û„Ñn„Ñq„[†Ð†Ñ†Ò†Ó†Ð†Ñ†Ò†Óÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„Ñ\„Ñ_‚p„Û„Ñb„Ñe‚z„Û„Ñh„Ñkƒy„Û„Ñn„Ñq‰œ„Û„Ñ+„Ñ3Š>„Û„ÑT„ÑZŠ?„Û„Ñv„Ñ|ŠL€þ„UŠM„Û„Õ„Õ(„܇·Î(†Ô‚o„Û„Õ\„Õ_„†Õ‚p„Û„Õb„Õe„†Ö‚z„Û„Õh„Õk„†×ƒy„Û„Õn„Õq„†Øƒ}„Û„Õt„Õw„[†Ô†Õ†Ö†×†Ø†Ô†Õ†Ö†×†Øÿ„@€¥ …jaZŠŠ„´„´‡º‚o„Û„Õ\„Õ_‚p„Û„Õb„Õe‚z„Û„Õh„Õkƒy„Û„Õn„Õqƒ}„Û„Õt„Õw‰œ„Û„Õ+„Õ3Š>„Û„ÕT„ÕZŠ?„Û„Õ|„Õ€‚ŠN€þ€Ë„ì„Û€à €à€Ë€Í…à·z\V4à‰†a…à·z\V4à‰†„u„u† €ôaa „ìaBvŠO ÌÌÙÙVV€Ì…2„ÛØ Ø$€Ì€Í…à·z\V4à‰†a…à·z\V4à‰†@u@u† €ôaa …2aQvŠP ÍÍÙÙVV€Í…­„Û…ü …ü€Í  €öa €ôa…« …­…«†ÙP„Û†:†<„€µ†Ù†Ù…« …­…«†ÚP„Û†@†B„†Û‚j„Û†C†E„€´†Ú†Û†Ú†Û…° …­…°†Ü‚o„Û† -† 0„†Ý‚p„Û† 3† 6„†Þ‚j„Û† :† <„†Ü†Ý†Þ†Ü†Ý†Þ…° …­…°†ß‚o„Û†-†0„†à‚p„Û†3†6„†á‚z„Û†9†<„†â‚j„Û†@†B„†ß†à†á†â†ß†à†á†â…° …­…°†ã‚o„Û†-†0„†ä‚p„Û†3†6„†å‚z„Û†9†<„†æƒy„Û†?†B„†ç‚j„Û†F†H„†ã†ä†å†æ†ç†ã†ä†å†æ†ç…° …­…°†è‚o„Û†-†0„†é‚p„Û†3†6„†ê‚z„Û†9†<„†ëƒy„Û†?†B„†ìƒ}„Û†E†H„†í‚j„Û†L†N„†è†é†ê†ë†ì†í†è†é†ê†ë†ì†íŠQ ÎÎîîVV€Î†î„Ò„Ð< <„†ïZ„Ð<<„†ð„Ó„Ð<<$„†ñ‚„Ð<%<,„†ò„Ø„Ð<-<3„ŠR„Ð<< €Î€‡†î†ï†ð†ñ†òŠS ÏÏóóVV€Ï†ó„Ò„Ð4 4„†ôZ„Ð44„†õ„Ó„Ð44$„†ö‚„Ð4%4,„‡5„Ð44 €Ï€††ó†ô†õ†öŠT ÐÐ÷÷VV€Ð…Ž„Û…­ …­€Ð  €öa …Ž…†÷P„Û…°…°„`… …Ž…†÷P„Û…°…°„`a …Ža`ŠU ÑÑøøVV€Ñ…<„Ûý ý,€Ñ€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôa…; …<…;S…> …<…>S…@ …<…@Sa …<aSvŠV ÒÒøøVV€Ò†øP„Û…¸…¸„†ù‚j„Û…¸…¸„…’„Û…¸ …¸€Ò  €öa …’…‘†úP„Û…¸…¸„†û‚j„Û…¸…¸„€³†ú†û†ú†û …‘ …’…‘†úP„Û…¸…¸„†û‚j„Û…¸…¸„€³†ú†û†ú†û…• …’…•†üP„Û…¸…¸„†ý‚j„Û…¸…¸„†ü†ý€´†ü†ý…• …’…•†þP„Û…¸…¸„†ÿ‚j„Û…¸…¸„€´†þ†ÿ†þ†ÿ…š …’…š‡P„Û…¸…¸„‡‚j„Û…¸…¸„‡‡€´‡‡…œ …’…œ‡P„Û…¸…¸„‡‚j„Û…¸…¸„€´‡‡‡‡…ž …’…ž‡P„Û…¸…¸„‡‚j„Û…¸…¸„‡„Ž„Û…Ú>…Ú@„‡„ˆ„Û…ÚD…ÚF„‡…Ÿ„Û…ÚJ…ÚL„‡ … „Û…ÚP…ÚR„€³‡‡‡‡‡‡ ‡‡‡‡‡‡ …ž …’…ž‡ P„Û…¸…¸„‡ ‚j„Û…¸…¸„‡ „Ž„Û…ã>…ã@„‡ „ˆ„Û…ãD…ãF„‡…Ÿ„Û…ãJ…ãL„€³‡ ‡ ‡ ‡ ‡‡ ‡ ‡ ‡ ‡…ž …’…ž‡P„Û…¸…¸„‡‚j„Û…¸…¸„‡„Ž„Û…ë>…ë@„‡„ˆ„Û…ëD…ëF„€³‡‡‡‡‡‡‡‡…ž …’…ž‡P„Û…¸…¸„‡‚j„Û…¸…¸„‡„Ž„Û…ò>…ò@„€³‡‡‡‡‡‡a …’a‡P„Û…¸…¸„‡‚j„Û…¸…¸„€³‡‡ŠW ÓÓVV€ÓŠX„Ï€Óf ƒôa9ŠY # ÔÔ-Vj„V‡‡„ÏŠZ€”€”‡P„Ï@B„€×‡‡ÿ¤@) ™a‡‡P„Ï@B‡ „Ï!'Š[€ÿ„W‡‡„Ï%%ŠZ€š€š‡P„Ï%A%C„€×‡‡ÿ¤@) ™a‡‡P„Ï%A%C‡ „Ï%"%(Š\€ÿ„X‡‡„Ï++ŠZ€—€—‡P„Ï+@+B„€×‡‡ÿ¤@) ™a‡‡P„Ï+@+B‡ „Ï+!+'Š]€ÿ„Y‡‡„Ï11ŠZ€€‡P„Ï1A1C„€×‡‡ÿ¤@) ™a‡‡P„Ï1A1C‡ „Ï1"1(Š^€ÿ„Z‡Š_„Ï88ŠZ€†€†‡P„Ï8<8>„€Ø‡‡ÿ¤@) ™aŠ_Š_P„Ï8<8>‡ „Ï8!8'Š`€ÿ„[‡2‡3„Ï??ŠZ€‰€‰‡P„Ï?.?0„‡‚„Ï?1?8„€Û‡‡‡ÿ¤@) ™a‡3‡3P„Ï?.?0‚„Ï?1?8‡ „Ï??Ša€ÿ„\‡ ‡ „ÏFFŠZ€Œ€Œ‡P„ÏFTFV„ €×‡‡ÿ¤@) ™a‡ ‡ P„ÏFTFV‡„ÏFF‡ „ÏF5F;Šb€ÿ„]‡‡„ÏMMŠZ€€‡ P„ÏMUMW„ €×‡ ‡ ÿ¤@) ™a‡‡P„ÏMUMW‡„ÏMM‡ „ÏM6M<Šc€ÿ„^‚©Šd„ÏSS ŠZ(( ‡!P„ÏSS„ #‡!‡!ÿ¤@) ™aŠdŠdP„ÏSSI„ÏSSŠf€ÿ„_ŠgŠh„ÏWW ŠZ€¤€¤ |ÿ¤@) ™aŠhŠhŠk€ÿ„`…Ó„T„Ï]]ŠZ€§€§‡"P„Ï]9]:„‡"„?‡"}‡"}ÿ„@) ™a„T„TP„Ï]9]:„Ï]]!Šl€ÿ„a…ÿ„V„ÏccŠZ€ª€ª‡#P„Ïc9c:„‡#„?‡#~‡#"ÿ„@) ™a„V„VP„Ïc9c:„Ïcc!Šm€ÿ„b…È„>„ÏiiŠZ€­€­‡$P„Ïi:i;„‡$„?‡$‡$ÿ„@) ™a„>„>P„Ïi:i;„Ïii"Šn€ÿ„c…ç„A„ÏppŠZ€°€°‡%P„Ïp8p9„‡%„?‡%$‡%$ÿ„@) ™a„A„AP„Ïp8p9„Ïpp Šo€ÿ„dŠpŠq„Ïuu ŠZ++ ‡&‚†„Ïulup„ ‡'t„Ïu(u.„#‡&‡'‡&‡'ÿ¤@) ™aŠqŠq‚†„Ïulupt„Ïu(u.Šs„ÏuuŠt€ÿ„eŠuŠv„ÏyyŠZll‡(ƒ¸„Ïyy#„#‡)‡)P„Ïy y"„#‡(€ê‡)ÿ¤@) ™aŠvŠvƒ¸„Ïyy#P„Ïy y"Šw„ÏyyŠx€ÿ„fŠyŠz„Ï€€ €€ ŠZ€¶ €¶ ‡*P„Ï€€;€€=„%‡*‡*ÿ¤@) ™aŠzŠzP„Ï€€;€€=Š{„Ï€€€€Š|€ÿ„gŠ}Š~„Ï€„ €„ ŠZ€¹ €¹ ‡+P„Ï€„?€„A„‡+ÿ¤@) ™aŠ~Š~P„Ï€„?€„AŠ{„Ï€„€„Š€ÿ„hŠ€Š„Ï€‰ €‰ŠZ€È €È‡,P„Ï€‰€‰ „‡,‡,ÿ¤@) ™aŠŠP„Ï€‰€‰ §„Ï€‰€‰Šƒ€ÿ„iŠ„„Ï€Ž€Ž ŠZ€Ì€Ì /ÿ¤@Š…€ÿ€Ô…^„Û‚H ‚H€Ô€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu† €ôa…] …^…]Wa …^aWvІ ÕÕ--jj€Õ„ã„Û€© €©'€Õ€Í…à·z\V4à‰†a…à·z\V4à‰†ÿ@uÿ@u† €ôaa „ãa>vЇ ÖÖ--jj€Ö„ü„Û6 6€Ö€Í…à·z\V4à‰†a…à·z\V4à‰†@u@u† €ôaa „üaIvŠˆ ××--jj€×…*„Ûµ µ€×€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôa…) …*…)Oa …*aOa …*aOvЉ ØØ--jj€Ø„÷„Û %€Ø€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôa„Ö „÷„ÖGa „÷aGvŠŠ ÙÙ--jj€Ù‚Ô„Ûa a!€Ù€Í…à·z\V4à‰†a…à·z\V4à‰†@u@u† €ôaa ‚Ôa2 ‚Ô2… ‚Ô…2… ‚Ô…2…  ‚Ô… 2…  ‚Ô… 2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2… ‚Ô…2…  ‚Ô… 2vŠ‹ ÚÚ--jj€Ú…$„Û’ ’ €Ú€Í…à·z\V4à‰†a…à·z\V4à‰†„j†u,„k…¡u,uu†uuu„j„kuuuuuuuu u† €ôaa …$aMvŠŒ ÛÛ--ll€Û…&„Û› ›"€Û€Í…à·z\V4à‰†a…à·z\V4à‰†„l†u,„m…¡u,uu†uuu„l„muuuuuuuu u† €ôaa …&aNvŠ ÜÜ--nn€ÜŠŽ„Ï€› €›0€Ü ¡#Ýì-Pn¦0„na„Ï€³€³ ŠZ€î €îÿ´@Š„oa„Ï€Á€Á ŠZ€ô€ô €€ÿ´@Š’„pa„πŀŠŠZ€ò €ò&€€ÿ´@Š“„πŀŊ”„qŠ•„πƀƊZ€õ€õ€€ÿ¤@„ra„πЀРŠZ€ø €ø$€ÿ´@Š—„πЀЊ˜„sŠ™„πръZ€ú€ú€ÿ¤@„ta„Ï€Ö€Ö ŠZ€ý €ý0€‚ÿ´@  „uŠ›„π׀׊Z"%€‚ÿ¤@  „vŠœ„π׀׊Z7:€‚ÿ¤@  „wŠ„Ï€Ø€ØŠZ!€‚ÿ¤@  „xŠž„π؀؊Z/2€‚ÿ¤@  „yŠŸ„πـيZ #€‚ÿ¤@  „zŠ „πـيZ36€‚ÿ¤@  „{a„Ï€á€á ŠZ /€ƒÿ´@ Š¢ „|a„Ï€æ€æ ŠZ €„ÿ´@ Ф„Ï€æ€æ( „}Š¥„Ï€é€éŠZ25€„ÿ¤@ Ц „~Ч„Ï€é€éŠZVY€„ÿ¤@ Ѝ „Š©„Ï€ì€ìŠZ25€„ÿ¤@ Šª „€Š«„Ï€ì€ìŠZVY€„ÿ¤@ Ь „Š­„Ï€ï€ï#ŠZ25€„ÿ¤@ Š® „‚Н„Ï€ï€ï#ŠZVY€„ÿ¤@ а „ƒŠ±„Ï€ò€òŠZ25€„ÿ¤@ в „„г„Ï€ò€òŠZVY€„ÿ¤@ Š´ „…е„Ï€õ€õ&ŠZ25€„ÿ¤@ ж „†Š·„Ï€õ€õ&ŠZVY€„ÿ¤@ Џ „‡Š¹„Ï€ø€ø ŠZ+.€„ÿ¤@ Šº „ˆŠ»„Ï€ø€ø ŠZTW€„ÿ¤@ м „‰Š½„Ï€û€û+ŠZ7:€„€…ÿ¤@ Š¿ „ŠŠÀ„Ï€û€û+ŠZ`c€„€…ÿ¤@ ŠÁ „‹ŠÂ„Ï€þ€þ(ŠZ-€„ÿ¤@ ŠÃ „ŒŠÄ„ÏŠZ11€†ÿ´@ ŠÆ „ŠÇ„Ï$ŠZ22$€†€†ÿ´@ ŠÈ „ŽŠÉ„ÏŠZ33€† ÿ´@ ŠÊ „ŠË„Ï$$ ŠZ44 €† ÿ´@ ŠÌ„Ï$#$+ŠÍ „ŠÎ„Ï,,ŠZ88€‡€†ÿ´@ŠÐ„‘ŠÑ„Ï33$ŠZ99$€‡ €ˆÿ´@ŠÓ„Ï3'3;ŠÔ„’ŠÕ„Ï==%ŠZ::%€‡  ÿ´@ŠÓ„Ï=(=<ŠÖ„Ï=D=YŠ×„Ï=e=tŠØ„“ŠÙ„ÏEE%ŠZ;;%€‡ÿ´@ŠÚ„ÏE(E;R„ÏEIESŠÛ„”ŠÜ„ÏKKŠZ>>€‡€‰€Šÿ´@€ „óaEŠà„•Šá„ÏKKŠZ>>€‡€‰ÿ´@€ „óaEŠâ„–Šã„ÏKKŠZ>>€‡€‰ÿ´@€ „óaEŠä„—Šå„ÏPP-ŠZ??-€‡ÿ´@„ÏP0P8Šæ„˜ŠçŠè„„#Šé‚ø‚ø#‡-PŠè„„!„‡-R‡-ÿ´@PŠè„„!Šë„™ŠìŠè„%„%Šé‚ù‚ù‡.PŠè„„!„‡.€üH‡.ÿ´@PŠè„„!ŠíŠè„% „%&Šî„šŠïŠè„'„'Šé‚ú‚ú‡/PŠè„„!„‡/ÿ´@PŠè„„!Šð„›ŠñŠè„)„)Šé‚û‚û‡0PŠè„„!„‡0ÿ´@PŠè„„!Šò„œŠóŠè„+„+Šé‚ü‚ü‡1PŠè„„!„‡1‡1ÿ´@PŠè„„!Šô„aŠè„„ Šé‚ô ‚ô‡2PŠè„„!„‡2ÿ´@PŠè„„!Šõ€ÝŠ–„Ï€Ì €Ì$€Ý€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu†aŠ–a€Š™Š–Š™€vŠö ŠŽÞÞ33žž€ÞŠ÷„Ï€¶ €¶#€Þ†E„Ï€·€¸€‹ÿ€Šø„Ï€· €·€‹ÿ@Šù„Ï€¸ €¸wŠú ŠŽßß33žž€ßŠ¡„Ï€Ý €Ý/€ß€Í…à·z\V4à‰†a…à·z\V4à‰†€ã†‡3P„Û‡^7‡^8„‡3†‡3‡3‡3‡3‡3‡3u€ã†‡4P„Û‡^7‡^8„‡4†‡4‡4‡4‡4‡4‡4u€ã†‡5P„Û‡^7‡^8„‡5†‡5‡5‡5‡5‡5‡5uu„uuu” u†aŠ¡a€ƒvŠû ŠŽàà66žž€àŠš„Ï€Ô €Ô0€à€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu†aŠša€‚Š›ŠšŠ›€‚ŠœŠšŠœ€‚ŠŠšŠ€‚ŠžŠšŠž€‚ŠŸŠšŠŸ€‚Š ŠšŠ €‚v ŠŽáá66žž€áŠ£„Ï€å €å€áaŠ£a€„Š¥УХ€„ЧУЧ€„Š©УЩ€„Š«УЫ€„Š­УЭ€„НУН€„бУሄгУ㈄еУе€„Š·У爄йУй€„Š»У누нУ툄€…ŠÀŠ£ŠÀ€„€…ŠÂŠ£ŠÂ€„Šü ŠŽââ66žž€âŠ„Ï€¯ €¯€â€Í…à·z\V4à‰†a…à·z\V4à‰†uu†aŠavŠý ŠŽãã66žž€ãŠ‘„Ï€½ €½&€ã€Í…à·z\V4à‰†a…à·z\V4à‰†uu†aŠ‘a€€aŠ‘a€€Š•БЕ€€vŠþ ŠŽää66žž€äƒaŠèƒß ƒß€ä? ‚a+Šÿ ŠŽ¡åæ6Fž¦„žaŠèƒã ƒãŠé‚‚‡6PŠèƒâ ƒâ"„ ‡6‡6ÿ´@PŠèƒâ ƒâ"Šèƒãƒã„Ÿ„ÖŠèƒäƒäŠé‚‚‡7PŠèƒâ ƒâ"„ €ü‡7‡7ÿ¤@PŠèƒâ ƒâ"„ ‹Šèƒåƒå"Šé‚‚"‡8PŠèƒâ ƒâ"„ €ò‡8ÿ¤@PŠèƒâ ƒâ"„¡‹Šèƒî ƒîŠé‚Å ‚Ň9PŠèƒîBƒîD„#‡9#‡9ÿ¤@PŠèƒîBƒîD&Šèƒîƒî$#Šèƒî7ƒî=‹„¢‹Šèƒ÷ ƒ÷ Šé‚ß ‚ß ‡:PŠèƒ÷/ƒ÷1„#‡:#‡:ÿ¤@PŠèƒ÷/ƒ÷1#Šèƒ÷$ƒ÷*lŠèƒ÷6ƒ÷B‹„£‹Šè„ „"Šé‚9 ‚9"‡;PŠè„4„6„‡<‚jŠè„c„e„‡;‡;‡;‡<#‡<ÿ¤@PŠè„4„6‚jŠè„c„e‹Šè„$„*‹Šè„;„C‹ Šè„T„[‹ „¤‹ Šè„ „ Šé‚¾ ‚¾‡=PŠè„ W„ Y„{‡>‹ Šè„ m„ x„#‡?‡?‚jŠè„ €€„ €‚„‡=‡=‡>#‡?ÿ¤@PŠè„ W„ Y‹ Šè„ m„ x‚jŠè„ €€„ €‚ŽŠè„ „ %#Šè„ ,„ 2‹ „¥‹Šè„ „Šé‚â ‚â‡@‹Šè„(„1„ ‡A€Œ‡A‹Šè„~„€ƒ„‡@‡@‡A‡@‡@‡Aÿ¤@‹Šè„(„1‹Šè„~„€ƒ‹Šè„„$‹Šè„>„K‹Šè„e„r‹€å‡BPŠèƒâ ƒâ"„ ‹Šèƒâƒâ€å€‹ „ça@  ba  `aa‹a‡CPŠèƒâ ƒâ"„ ‡C‡C„Ö‹„Ö‡DPŠèƒâ ƒâ"„ €ü‡D‡D‹‹‹‡EPŠèƒâ ƒâ"„ €ò‡E4 ŠŽƒaææFF¦¦€æ‡F‹„Ï€¥€¥!„‡G‹„Ï€¥#€¥,„‹„Ï€¥ €¥€æ‹ ŠŽççHH¦¦€ç‹„Ï€« €«€ç‹ ŠŽèèHH¦¦€è‡H…Ö„Ï€¨€¨ „‹„Ï€¨ €¨€è‹ ŠŽééII¦¦€éŠÏ„Ï& &€éŠÏŠÎ€‡€†ŠÏŠÑ€‡ €ˆŠÏŠÕ€‡  ŠÏŠÙ€‡ŠÏŠÜ€‡€‰€ŠŠÏŠá€‡€‰ŠÏŠã€‡€‰ŠÏŠå€‡ŠÎŠÏŠÎ€‡€†ŠÑŠÏŠÑ€‡ €ˆŠÕŠÏŠÕ€‡  ŠÙŠÏŠÙ€‡ŠÜŠÏŠÜ€‡€‰€ŠŠáŠÏŠá€‡€‰ŠãŠÏŠã€‡€‰ŠåŠÏŠå€‡{ ŠŽêêII¦¦€êŠÅ„Ï €êŠÅŠÄ€†ŠÅŠÇ€†€†ŠÅŠÉ€† ŠÅŠË€† ŠÄŠÅŠÄ€†ŠÇŠÅŠÇ€†€†ŠÉŠÅŠÉ€† ŠËŠÅŠË€†  ŠŽëëII¦¦€ë‡IPŠè„„!„ŠêŠè„ „€ë  €öaŠêŠç‡JPŠè„„!„‡JR‡JŠêŠì‡KPŠè„„!„‡K€üH‡KŠêŠï‡LPŠè„„!„‡LŠêŠñ‡MPŠè„„!„‡MŠêŠó‡NPŠè„„!„‡N‡NŠçŠêŠç‡JPŠè„„!„‡JR‡JŠìŠêŠì‡KPŠè„„!„‡K€üH‡KŠïŠêŠï‡LPŠè„„!„‡LŠñŠêŠñ‡MPŠè„„!„‡MŠóŠêŠó‡NPŠè„„!„‡N‡NaŠêa‡OPŠè„„!„‡O5R‡I0H‡I‹ ŠŽììPP¦¦€ì…j„Û‚r ‚r!€ì€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu† €ôa…] …j…]Z…l …j…lZ…n …j…nZ…p …j…pZ…r …j…rZ…t …j…tZa …jaZv‹ ííPP¦¦€í™„Ûâ â€í€Í…à·z\V4à‰†a…à·z\V4à‰†„¦†u,„§…¡u,uu†uuu„¦„§uuuuuu„¨†u,„©…¡u,uu†uuu„¨„©uuuuuu„ª†u,„«…¡u,uu†uuu„ª„«uuuuuu„¬†u,„­…¡u,uu†uuu„¬„­uuuuuu„®†u,„¯…¡u,uu†uuu„®„¯uuuuuu„°†u,„±…¡u,uu†uuu„°„±uuuuuu„²†u,„³…¡u,uu†uuu„²„³uuuuuu@uuu„uuuu€€u•Üu† €ôa…4 ™…4a ™av‹ îîPP´´€î…U„Û‚- ‚-'€î€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu† €ôa…T …U…TVa …UaVv‹  ïïPP´´€ï£„Û^ ^'€ï…à·z\V4à‰‹"a†E„Û`j†F„Û` ` ‹#‹$„Ûb b‹%‹&„Ûd d‹'‹(„Ûf f‹)‹*„Ûh h‹+‹,„Ûj j‹-w‹. ððPP´´€ð¢„Û‚; ‚;+€ð€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu† €ôa…Y ¢…Y a ¢a v‹/ ññPP´´€ñ…G„Û‚ ‚$€ñ€Í…à·z\V4à‰†a…à·z\V4à‰†ÿÿuÿÿu† €ôa…F …G…FTU…J …G…JT…L …G…LTa …GaUTa …GaUTa …GaUTv‹0 òòPP´´€ò…c„Û‚U ‚U+€ò€Í…à·z\V4à‰†a…à·z\V4à‰†@u@u† €ôa…b …c…bXHa …caXv‹1 óóPP´´€ó„å„Û€º €º)€ó€Í…à·z\V4à‰†a…à·z\V4à‰†ÿ@uÿ@u† €ôaa „åa?v‹2 ôôPP´´€ô„Û€é €é€ô€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa av‹3 õõPP´´€õ‡P‚o„Û…Ž…ŽއQ‚p„Û…Ž…ŽއR‚z„Û…Ž…ŽއSƒy„Û…Ž…ŽއTƒ}„Û…Ž …Ž#އUƒ„Û…Ž$…Ž'އVƒ…„Û…Ž(…Ž+Ž…‹‹4„Û…Ž …Ž€õ€– …aK€— …aL) ™a‹4‹4‡Pƒã„Û……€¯‡P‡Q‡R‡S‡T‡U‡V‹5‹5„Û……‹6‡Qƒã„Û…’…’€¯‡P‡Q‡R‡S‡T‡U‡V‹7‹7„Û…’…’‹8‡Rƒã„Û…”…”€¯‡P‡Q‡R‡S‡T‡U‡V‹9‹9„Û…”…”‹:‡Sƒã„Û…–…–€¯‡P‡Q‡R‡S‡T‡U‡V‹;‹;„Û…–…–‹<‡Tƒã„Û…˜…˜€¯‡P‡Q‡R‡S‡T‡U‡V‹=‹=„Û…˜…˜‹>‡Uƒã„Û…š…š€¯‡P‡Q‡R‡S‡T‡U‡V‹?‹?„Û…š…š‹@‡Vƒã„Û…œ…œ€¯‡P‡Q‡R‡S‡T‡U‡V‹A‹A„Û…œ…œ‹B …‹…€‡W‚o„Û…Ž…ŽއX‚p„Û…Ž…ŽއY‚z„Û…Ž…ŽއZƒy„Û…Ž…Žއ[ƒ}„Û…Ž …Ž#އ\ƒ„Û…Ž$…Ž'އ]ƒ…„Û…Ž(…Ž+Ž€¯‡W‡X‡Y‡Z‡[‡\‡] …‹…€‡^‚o„Û…Ž…Žއ_‚p„Û…Ž…Žއ`‚z„Û…Ž…Žއaƒy„Û…Ž…Žއbƒ}„Û…Ž …Ž#އcƒ„Û…Ž$…Ž'އdƒ…„Û…Ž(…Ž+Ž€¯‡^‡_‡`‡a‡b‡c‡d€¯‡^‡_‡`‡a‡b‡c‡d …‹…€‡e‚o„Û…Ž…Žއf‚p„Û…Ž…Žއg‚z„Û…Ž…Žއhƒy„Û…Ž…Žއiƒ}„Û…Ž …Ž#އjƒ„Û…Ž$…Ž'އkƒ…„Û…Ž(…Ž+Ž€¯‡e‡f‡g‡h‡i‡j‡k[ …‹……‡l‚o„Û…Ž…Žއm‚p„Û…Ž…Žއn‚z„Û…Ž…Žއoƒy„Û…Ž…Žއpƒ}„Û…Ž …Ž#އqƒ„Û…Ž$…Ž'އrƒ…„Û…Ž(…Ž+Ž€¯‡l‡m‡n‡o‡p‡q‡r …‹……‡s‚o„Û…Ž…Žއt‚p„Û…Ž…Žއu‚z„Û…Ž…Žއvƒy„Û…Ž…Žއwƒ}„Û…Ž …Ž#އxƒ„Û…Ž$…Ž'އyƒ…„Û…Ž(…Ž+Ž€¯‡s‡t‡u‡v‡w‡x‡y] …‹‡z‚o„Û…Ž…Žއ{‚p„Û…Ž…Žއ|‚z„Û…Ž…Žއ}ƒy„Û…Ž…Žއ~ƒ}„Û…Ž …Ž#އƒ„Û…Ž$…Ž'އ€ƒ…„Û…Ž(…Ž+Ž€¯‡z‡{‡|‡}‡~‡‡€]^€§€¯‡P‡Q‡R‡S‡T‡U‡V\‹C öö´´€ö‡‚o„Û…}…}އ‚‚p„Û…}…}އƒ‚z„Û…}…}އ„ƒy„Û…}…}އ…ƒ}„Û…} …}#އ†ƒ„Û…}$…}'Ž…Š‹D„Û…} …}€ö€– …aK€— …aL) ™a‹D‹D‡ƒã„Û……€®‡‡‚‡ƒ‡„‡…‡†‹E‹E„Û……‹F‡‚ƒã„Û……€®‡‡‚‡ƒ‡„‡…‡†‹G‹G„Û……‹H‡ƒƒã„Û…ƒ…ƒ€®‡‡‚‡ƒ‡„‡…‡†‹I‹I„Û…ƒ…ƒ‹J‡„ƒã„Û…………€®‡‡‚‡ƒ‡„‡…‡†‹K‹K„Û…………‹L‡…ƒã„Û…‡…‡€®‡‡‚‡ƒ‡„‡…‡†‹M‹M„Û…‡…‡‹N‡†ƒã„Û…‰…‰€®‡‡‚‡ƒ‡„‡…‡†‹O‹O„Û…‰…‰‹P …Š…€‡‡‚o„Û…}…}އˆ‚p„Û…}…}އ‰‚z„Û…}…}Ž‡Šƒy„Û…}…}އ‹ƒ}„Û…} …}#އŒƒ„Û…}$…}'Ž€®‡‡‡ˆ‡‰‡Š‡‹‡Œ …Š…€‡‚o„Û…}…}އނp„Û…}…}އ‚z„Û…}…}އƒy„Û…}…}އ‘ƒ}„Û…} …}#އ’ƒ„Û…}$…}'Ž€®‡‡Ž‡‡‡‘‡’€®‡‡Ž‡‡‡‘‡’ …Š…€‡“‚o„Û…}…}އ”‚p„Û…}…}އ•‚z„Û…}…}އ–ƒy„Û…}…}އ—ƒ}„Û…} …}#އ˜ƒ„Û…}$…}'Ž€®‡“‡”‡•‡–‡—‡˜[ …Š……‡™‚o„Û…}…}އš‚p„Û…}…}އ›‚z„Û…}…}އœƒy„Û…}…}އƒ}„Û…} …}#އžƒ„Û…}$…}'Ž€®‡™‡š‡›‡œ‡‡ž …Š……‡Ÿ‚o„Û…}…}އ ‚p„Û…}…}އ¡‚z„Û…}…}އ¢ƒy„Û…}…}އ£ƒ}„Û…} …}#އ¤ƒ„Û…}$…}'Ž€®‡Ÿ‡ ‡¡‡¢‡£‡¤] …Ї¥‚o„Û…}…}އ¦‚p„Û…}…}އ§‚z„Û…}…}އ¨ƒy„Û…}…}އ©ƒ}„Û…} …}#އªƒ„Û…}$…}'Ž€®‡¥‡¦‡§‡¨‡©‡ª]^€§€®‡‡‚‡ƒ‡„‡…‡†\‹Q ÷÷««´´€÷‡«‚o„Û…n…nއ¬‚p„Û…n…nއ­‚z„Û…n…nއ®ƒy„Û…n…nއ¯ƒ}„Û…n …n#Ž…‰‹R„Û…n …n€÷€– …aK€— …aL) ™a‹R‹R‡«ƒã„Û…p…p€­‡«‡¬‡­‡®‡¯‹S‹S„Û…p…p‹T‡¬ƒã„Û…r…r€­‡«‡¬‡­‡®‡¯‹U‹U„Û…r…r‹V‡­ƒã„Û…t…t€­‡«‡¬‡­‡®‡¯‹W‹W„Û…t…t‹X‡®ƒã„Û…v…v€­‡«‡¬‡­‡®‡¯‹Y‹Y„Û…v…v‹Z‡¯ƒã„Û…x…x€­‡«‡¬‡­‡®‡¯‹[‹[„Û…x…x‹\ …‰…€‡°‚o„Û…n…nއ±‚p„Û…n…nއ²‚z„Û…n…nއ³ƒy„Û…n…nއ´ƒ}„Û…n …n#Ž€­‡°‡±‡²‡³‡´ …‰…€‡µ‚o„Û…n…nއ¶‚p„Û…n…nއ·‚z„Û…n…nއ¸ƒy„Û…n…nއ¹ƒ}„Û…n …n#Ž€­‡µ‡¶‡·‡¸‡¹€­‡µ‡¶‡·‡¸‡¹ …‰…€‡º‚o„Û…n…nއ»‚p„Û…n…nއ¼‚z„Û…n…nއ½ƒy„Û…n…nއ¾ƒ}„Û…n …n#Ž€­‡º‡»‡¼‡½‡¾[ …‰……‡¿‚o„Û…n…nއÀ‚p„Û…n…nއÁ‚z„Û…n…nŽ‡Âƒy„Û…n…nŽ‡Ãƒ}„Û…n …n#Ž€­‡¿‡À‡Á‡Â‡Ã …‰……‡Ä‚o„Û…n…nއłp„Û…n…nŽ‡Æ‚z„Û…n…nŽ‡Çƒy„Û…n…nŽ‡Èƒ}„Û…n …n#Ž€­‡Ä‡Å‡Æ‡Ç‡È] …‰‡É‚o„Û…n…nŽ‡Ê‚p„Û…n…nŽ‡Ë‚z„Û…n…nŽ‡Ìƒy„Û…n…nŽ‡Íƒ}„Û…n …n#Ž€­‡É‡Ê‡Ë‡Ì‡Í]^€§€­‡«‡¬‡­‡®‡¯\‹] øøÎδ´€ø‡Î‚o„Û…a…aŽ‡Ï‚p„Û…a…aŽ‡Ð‚z„Û…a…aŽ‡Ñƒy„Û…a…aŽ…ˆ‹^„Û…a …a€ø€– …aK€— …aL) ™a‹^‹^‡Îƒã„Û…c…c€¬‡Î‡Ï‡Ð‡Ñ‹_‹_„Û…c…c‹`‡Ïƒã„Û…e…e€¬‡Î‡Ï‡Ð‡Ñ‹a‹a„Û…e…e‹b‡Ðƒã„Û…g…g€¬‡Î‡Ï‡Ð‡Ñ‹c‹c„Û…g…g‹d‡Ñƒã„Û…i…i€¬‡Î‡Ï‡Ð‡Ñ‹e‹e„Û…i…i‹f …ˆ…€‡Ò‚o„Û…a…aއӂp„Û…a…aŽ‡Ô‚z„Û…a…aŽ‡Õƒy„Û…a…aŽ€¬‡Ò‡Ó‡Ô‡Õ …ˆ…€‡Ö‚o„Û…a…aއׂp„Û…a…aŽ‡Ø‚z„Û…a…aŽ‡Ùƒy„Û…a…aŽ€¬‡Ö‡×‡Ø‡Ù€¬‡Ö‡×‡Ø‡Ù …ˆ…€‡Ú‚o„Û…a…aŽ‡Û‚p„Û…a…aއ܂z„Û…a…aŽ‡Ýƒy„Û…a…aŽ€¬‡Ú‡Û‡Ü‡Ý[ …ˆ……‡Þ‚o„Û…a…aއ߂p„Û…a…aއà‚z„Û…a…aއáƒy„Û…a…aŽ€¬‡Þ‡ß‡à‡á …ˆ……‡â‚o„Û…a…aއã‚p„Û…a…aއä‚z„Û…a…aއåƒy„Û…a…aŽ€¬‡â‡ã‡ä‡å] …ˆ‡æ‚o„Û…a…aއç‚p„Û…a…aއè‚z„Û…a…aއéƒy„Û…a…aŽ€¬‡æ‡ç‡è‡é]^€§€¬‡Î‡Ï‡Ð‡Ñ\‹g ùùêê´´€ù‡ê‚o„Û…V…Vއë‚p„Û…V…Vއì‚z„Û…V…VŽ‚Z‹h„Û…V …V€ù€– …aK€— …aL) ™a‹h‹h‡êƒã„Û…X…X;‡ê‡ë‡ì‹i‹i„Û…X…X‹j‡ëƒã„Û…Z…Z;‡ê‡ë‡ì‹k‹k„Û…Z…Z‹l‡ìƒã„Û…\…\;‡ê‡ë‡ì‹m‹m„Û…\…\‹n ‚Z…€‡í‚o„Û…V…Vއî‚p„Û…V…Vއï‚z„Û…V…VŽ;‡í‡î‡ï ‚Z…€‡ð‚o„Û…V…Vއñ‚p„Û…V…Vއò‚z„Û…V…VŽ;‡ð‡ñ‡ò;‡ð‡ñ‡ò ‚Z…€‡ó‚o„Û…V…Vއô‚p„Û…V…Vއõ‚z„Û…V…VŽ;‡ó‡ô‡õ[ ‚Z……‡ö‚o„Û…V…Vއ÷‚p„Û…V…Vއø‚z„Û…V…VŽ;‡ö‡÷‡ø ‚Z……‡ù‚o„Û…V…Vއú‚p„Û…V…Vއû‚z„Û…V…VŽ;‡ù‡ú‡û] ‚Z‡ü‚o„Û…V…Vއý‚p„Û…V…Vއþ‚z„Û…V…VŽ;‡ü‡ý‡þ]^€§;‡ê‡ë‡ì\‹o úúÿÿ´´€ú‡ÿ‚o„Û…M…MŽˆ‚p„Û…M…MŽ…‹p„Û…M …M€ú€– …aK€— …aL) ™a‹p‹p‡ÿƒã„Û…O…O€¦‡ÿˆ‹q‹q„Û…O…O‹rˆƒã„Û…Q…Q€¦‡ÿˆ‹s‹s„Û…Q…Q‹t ……€ˆ‚o„Û…M…MŽˆ‚p„Û…M…MŽ€¦ˆˆ ……€ˆ‚o„Û…M…MŽˆ‚p„Û…M…MŽ€¦ˆˆ€¦ˆˆ ……€ˆ‚o„Û…M…MŽˆ‚p„Û…M…MŽ€¦ˆˆ[ ………ˆ‚o„Û…M…MŽˆ‚p„Û…M…MŽ€¦ˆˆ ………ˆ ‚o„Û…M…MŽˆ ‚p„Û…M…MŽ€¦ˆ ˆ ] …ˆ ‚o„Û…M…MŽˆ ‚p„Û…M…MŽ€¦ˆ ˆ ]^€§€¦‡ÿˆ\‹u ûû  ´´€û„õ„Û €û€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „õaFv‹v üü  ´´€ü„ó„Û €ü€Í…à·z\V4à‰†a…à·z\V4à‰†€€u€€u† €ôaa „óaEv‹w ýý  ´´€ý…8„Ûï ï"€ý€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôa„Ö …8„ÖRa …8aRv‹x þþ  ´´€þƒô„Û‚­ ‚­€þ€Í…à·z\V4à‰†a…à·z\V4à‰†„´†u,„µ…¡u,uu†uuu„´„µuuuuuuuuu† €ôa…{ ƒô…{9a ƒôa9a ƒôa9v‹y ÿÿ  ¶¶€ÿ„ï„Û€ô €ô"€ÿ€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa „ïaCv‹z   ¶¶€ö„Û€Œ €Œ€Í…à·z\V4à‰†a…à·z\V4à‰†uu† €ôaa €öav‹{   ¶¶Ši‹|ff"ÃV à¶H„¶‹}‹|€¨€¨&‹~……&ˆ P‹|€¨;€¨=„ˆ €ˆ ÿ¤@P‹|€¨;€¨=‚Ê‹|€¨)€¨4 €™a‹ƒ‹|€¨B€¨I €™a‹„‹|€¨S€¨d‹…„·‹†‹|€°€°‹~… … €ÿ¤@‚Ê‹|€°€°) €™a‹„‹|€°9€°J‹‡„¸‹ˆ‹|€¹€¹!‹~…&…&!ˆP‹|€¹6€¹8„ˆ€Ž€ˆÿ¤@P‹|€¹6€¹8‚Ê‹|€¹$€¹/ €™a‹Œ‹|€¹=€¹P €™a‹„‹|€¹h€¹y‹„¹‹Ž‹|€¼€¼&‹~…*…*&ˆP‹|€¼;€¼=„ˆ€Žˆÿ¤@P‹|€¼;€¼=‚Ê‹|€¼)€¼4 €™a‹Œ‹|€¼B€¼U‹„º‹‹|€Å€Å‹~……ˆP‹|€Å0€Å2„ˆ€¦ˆ_ÿ¤@P‹|€Å0€Å2‚Ê‹|€Å€Å)‹‘„»‹’‹|€Î€Î"‹~‡e‡e"ˆP‹|€Î7€Î9„ˆ€ˆÿ¤@P‹|€Î7€Î9‚Ê‹|€Î%€Î0l‹|€Î=€ÎI‹”„¼‹•‹|€Ý€Ý‹~‡T‡T{ÿ¤@‹–‹|€Ý!€Ý-‹—„½‹˜‹|€å€å'‹~„ë„ë'€ÿ¤@‹™„¾‹š‹|€ë€ë(‹~……(ÿ¤@‹›„¿‹œ‹|€ï€ï.‹~… … .€ÿ¤@‹„À‹ž‹| ‹~‡/‡/ ˆP‹|57„ˆˆÿ¤@P‹|57‚Ê‹|#. €™a‹Ÿ‹|<O‹ „Á‹¡‹|‹~…0…0ˆP‹|8:„#ˆˆÿ¤@P‹|8:‹¢‹|!-‹£„‹¤‹|'‹~‡*‡*'ÿ¤@‹¥„˦‹|##(‹~‡+‡+(ÿ¤@‹§„Ä‹¨‹|,,%‹~‡J‡J%€ÿ¤@‹ª‹|,),4‹«„Å‹¬‹|66'‹~„ï„ï'ˆP‹|6567„ˆ_€ˆÿ¤@P‹|6567‹­‹|6*62‹®„Æ‹¯‹|HH ‹~†ú†ú ˆ‹°‹|HkHo„ ˆ€ŒˆP‹|H{H}„ˆˆˆÿ¤@‹°‹|HkHoP‹|H{H}‹±‹|H"H' €™a‹²‹|H;HG‹³„Ç‹´‹|RR%‹~…»…»%€‘ÿ¤@‹¶‹|R'R1 €™a‹Ÿ‹|RART‹·„È‹¸‹|[['‹~†$†$'€’ÿ¤@‹º‹|[)[, €™a‹Ÿ‹|[E[X‹»„É‹¼‹|aa‹~‡j‡jˆP‹|a,a.„ˆˆÿ¤@P‹|a,a.‹½‹|a!a%‹¾„Ê‹¿‹|kk‹~……ÿ¤@‹À‹|kk0‹Á„ˋ‹|~~"‹~†\†\"ˆP‹|~€‰~€‹„€“€’€’ˆˆÿ¤@P‹|~€‰~€‹‹Ä‹|~%~0‹Å‹|~g~p €™a‹²‹|~€~€œ‹Æ„̋‹|““"‹~†Œ†Œ"ˆ‹Ç‹|“)“.„ˆP‹|“€“€Ÿ„ˆˆ€“€’€’ˆˆÿ¤@‹Ç‹|“)“.P‹|“€“€Ÿ‡¨‹|“%“(‹Ä‹|“1“<‹Å‹|“{“€„ €™a‹²‹|“€¤“€°‹È„͋‹|©©"‹~††"ˆ‹Ç‹|©*©/„ˆ‹É‹|©7©<„ˆP‹|©€³©€µ„ˆˆˆˆ€“€’€’ˆˆÿ¤@‹Ç‹|©*©/‹É‹|©7©<P‹|©€³©€µ…¡‹|©%©)…¢‹|©2©6‹Ä‹|©?©J‹Å‹|©€‘©€š €™a‹²‹|©€º©€Æ‹Ê„΋‹|ÀÀ"‹~†“†“"ˆ‹Ç‹|À*À/„ˆ‹É‹|À7À<„ˆ ‹Ë‹|ÀDÀI„ˆ!P‹|À€ÈÀ€Ê„ˆˆˆ ˆˆˆ €“€’€’ˆ!ˆ!ÿ¤@‹Ç‹|À*À/‹É‹|À7À<‹Ë‹|ÀDÀIP‹|À€ÈÀ€Ê…¡‹|À%À)…¢‹|À2À6…£‹|À?ÀC‹Ä‹|ÀLÀW‹Å‹|À€¦À€¯ €™a‹²‹|À€ÏÀ€Û‹Ì„ϋ͋|ää ‹~†î†î ˆ"‹Î‹|ä0ä4„ˆ#P‹|ä>ä@„ˆ"ˆ#ˆ"€“€’€’ˆ#€’ÿ¤@‹Î‹|ä0ä4P‹|ä>ä@‚Ê‹|ä#ä.‹Ï„Їä‹|ðð‹~‡)‡)ˆ$P‹|ð2ð4„ˆ$ÿ¤@P‹|ð2ð4‚Ê‹|ðð*‹Ð„ыы|üü,‹~…ˆ…ˆ,ˆ%P‹|ýý „ˆ%ˆ%_€€ÿ¤@P‹|ýý ‚Ê‹|ý ý‹Ò‹|þ þ‹Ó‹|þ(þ=‹Ô‹|þNþf €™a‹„‹|ÿ ÿ‹Õ„Ò‹Ö‹|‚‚$‹~…Œ…Œ$€ÿ¤@‚Ê‹|‚ ‚ €™a‹„‹|‚'‚8‹×„Ó‚Á‹|‚‚‹~ƒpƒpˆ&P‹|‚!‚#„|#ˆ&ˆ&ÿ¤@P‹|‚!‚#ˆ‹|‚‚.‹|‚'‚+‹Ø„Ô‚Å‹|‚%‚%‹~ƒiƒi|ÿ¤@‹Ù„Õ‹Ú‹|‚1‚1‹~ƒqƒqˆ'P‹|‚1G‚1I„|ˆ'ˆ'ÿ¤@P‹|‚1G‚1I‹Û‹|‚1‚1%‹Ü‹|‚14‚1@‹Ý„Ö‹Þ‹|‚>‚>‹~ƒoƒo|ÿ¤@&‹|‚>‚>‚Ê‹|‚>.‚>9‹ß„׋à‹|‚H‚H‹~ƒkƒkˆ(P‹|‚H‚H „|ˆ(ˆ(ÿ¤@P‹|‚H‚H ‹|‚H‚H‹á„Ø‹â‹|‚P‚P‹~ƒlƒlˆ)P‹|‚P.‚P0„|ˆ)ˆ)ÿ¤@P‹|‚P.‚P0‚Ê‹|‚P‚P'‹ã„Ù‹ä‹|‚W‚W‹~ƒjƒjˆ*P‹|‚W0‚W2„|ˆ*ˆ*ÿ¤@P‹|‚W0‚W2‹å‹|‚W‚W ‹æ„Úˆ<‹|‚e‚e‹~ƒnƒnˆ+P‹|‚eO‚eQ„{ˆ,‚j‹|‚e8‚e:„|ˆ+ˆ+ˆ,ˆ,ÿ¤@P‹|‚eO‚eQ‚j‹|‚e8‚e:Ž‹|‚e‚e‡]‹|‚e$‚e*‹ç„Û‡\‹|‚r‚r‹~ƒmƒmˆ-P‹|‚r(‚r*„ˆ.‚j‹|‚rC‚rE„|ˆ-ˆ-ˆ.ˆ.ÿ¤@P‹|‚r(‚r*‚j‹|‚rC‚rE‚Ê‹|‚r‚r ‡]‹|‚r.‚r4‹è„Ük‹|‚‚‹~ƒrƒrˆ/P‹|‚.‚0„|ˆ/ˆ/ÿ¤@P‹|‚.‚0‚Ê‹|‚‚'l‹|‚4‚@‹é„Ýe‹|‚ނދ~ƒsƒsˆ0P‹|‚Ž+‚Ž-„|ˆ0_ˆ0ˆ0ÿ¤@P‹|‚Ž+‚Ž-‚Ê‹|‚Ž‚Ž$‹ê‹|‚Ž1‚Ž=‹ë„Þa‹|‚”‚”‹~ƒh ƒh|ÿ´@‹ì„ß‹í‹|‚ë‚ë‹~ˆÙˆÙˆ1‹í‹|‚è‚è!„$ˆ1ˆ1ÿ¤@$‹í‹|‚è‚è!‹|‚ë‚ë‹ï$„àa‹|ƒƒ ‹~ˆÞ ˆÞˆ2‹ð‹|‚ú‚ú„%ˆ2€%ˆ2ÿ´@%‹ð‹|‚ú‚ú.‹|ƒƒ €™a‹„‹|ƒ?ƒP‹ò%„዆‹|ƒ ƒ ‹~‰=‰=ˆ3‹ð‹|‚ú‚ú„%ˆ3€%ˆ3ÿ¤@%‹ð‹|‚ú‚ú.‹|ƒ ƒ $ €™a‹„‹|ƒ Pƒ a‹ó%„â‹ô‹|ƒƒ‹~ˆÿˆÿˆ4‹ð‹|‚ú‚ú„%ˆ4ˆ4ÿ¤@%‹ð‹|‚ú‚ú…`‹|ƒƒ‹õ%„ã‹ö‹|ƒƒ‹~‰ ‰ ˆ5‹ð‹|‚ú‚ú„ˆ6‹í‹|ƒ>ƒD„%ˆ5$ˆ6ˆ5ˆ6ÿ¤@%‹ð‹|‚ú‚ú‹í‹|ƒ>ƒD‹÷‹|ƒƒ* €™a‹ƒ‹|ƒRƒY‹ø%„ä‹ù‹|ƒ)ƒ) ‹~‰$‰$"ˆ7‹ð‹|‚ú‚ú„ˆ8‹í‹|ƒ)Cƒ)I„%ˆ7$ˆ8ˆ7ˆ8ÿ¤@%‹ð‹|‚ú‚ú‹í‹|ƒ)Cƒ)I‹÷‹|ƒ)#ƒ)/ €™a‹ƒ‹|ƒ)Wƒ)^‹ú%„å‹û‹|ƒ1ƒ1‹~‰‰ ˆ9‹ð‹|‚ú‚ú„ˆ:‹í‹|ƒ1Aƒ1G„%ˆ9$ˆ:ˆ9ˆ:ÿ¤@%‹ð‹|‚ú‚ú‹í‹|ƒ1Aƒ1G‹÷‹|ƒ1!ƒ1- €™a‹ƒ‹|ƒ1Uƒ1\‹ü%„æ‹ý‹|ƒ9ƒ9#‹~‰‰%ˆ;‹ð‹|‚ú‚ú„ˆ<‹í‹|ƒ9Fƒ9L„%ˆ;$ˆ<ˆ;ˆ<ÿ¤@%‹ð‹|‚ú‚ú‹í‹|ƒ9Fƒ9L‹÷‹|ƒ9&ƒ92 €™a‹ƒ‹|ƒ9Zƒ9a‹þ%„ç‹ÿ‹|ƒFƒF‹~‰5‰5ˆ=‹ð‹|‚ú‚ú„%ˆ=ˆ=ÿ¤@%‹ð‹|‚ú‚ú €™a‹ƒ‹|ƒFƒF!Œ%„茋|ƒUƒU‹~‰6‰6ˆ>‹ð‹|‚ú‚ú„%ˆ>ˆ>ÿ¤@%‹ð‹|‚ú‚ú €™a‹ƒ‹|ƒUƒU$Œ%„錋|ƒeƒe‹~‰7‰7ˆ?‹ð‹|‚ú‚ú„ˆ@P‹|ƒe.ƒe0„%ˆ?ˆ?ˆ@ˆ@ÿ¤@%‹ð‹|‚ú‚úP‹|ƒe.ƒe0Œ‹|ƒeƒe €™a‹ƒ‹|ƒe>ƒeEŒ%„ꌋ|ƒrƒr‹~‰8‰8ˆA‹ð‹|‚ú‚ú„ˆBP‹|ƒr1ƒr3„%ˆAˆAˆBˆBÿ¤@%‹ð‹|‚ú‚úP‹|ƒr1ƒr3Œ‹|ƒrƒr  €™a‹ƒ‹|ƒrAƒrHŒ%„닆‹|ƒuƒu‹~ˆñˆñˆC‹ð‹|‚ú‚ú„%ˆCÿ¤@%‹ð‹|‚ú‚úŒ%„ìŒ ‹|ƒyƒy‹~ˆèˆèˆD‹ð‹|‚ú‚ú„%ˆDÿ¤@%‹ð‹|‚ú‚úŒ %„íŒ ‹|ƒyƒy‹~ˆéˆéˆE‹ð‹|‚ú‚ú„%ˆEÿ¤@%‹ð‹|‚ú‚úŒ %„îŒ ‹|ƒ}ƒ}‹~ˆìˆìˆF‹ð‹|‚ú‚ú„%ˆF&pÿ¤@%€ „óaE‹ð‹|‚ú‚úŒ%„|ƒ}ƒ}‹~ˆìˆìˆG‹ð‹|‚ú‚ú„%ˆG'pÿ¤@%€ „óaE‹ð‹|‚ú‚úŒ%„ðŒ‹|ƒ}ƒ}‹~ˆìˆìˆH‹ð‹|‚ú‚ú„%ˆH'pÿ¤@%€ „óaE‹ð‹|‚ú‚úŒ%„ñŒ‹|ƒ‚ƒ‚!‹~ˆåˆå#ˆI‹ð‹|‚ú‚ú„%ˆIÿ¤@%‹ð‹|‚ú‚úŒ%„òaŒ Œ$ $ˆJ‹Œ „€Œ(ˆJÿ´@(‹Œ Œ(„󌌌&&ˆK‹Œ „€Œ(ˆKÿ¤@(‹Œ €¬ŒŒ(„ôŒŒ  Œ**ˆL‹Œ „€Œ(ˆL)ˆLÿ¤@(‹Œ Œ(„õaŒ(( ŒN NˆM‹Œ%%„ ˆN€ŒˆN‹Œ%%„*ˆMˆNÿ´@*‹Œ%%‹Œ%%Œ!*„öŒŒ,,ŒttˆO‹Œ%%„ ˆP€ŒˆP‹Œ%%„*ˆOˆPˆPÿ¤@*‹Œ%%‹Œ%%Œ"Œ,,€¬Œ,&,*Œ#*„÷ŒŒ..Œ€‡€‡ˆQ‹Œ%%„ ˆR€ŒˆR‹Œ%%„*ˆQˆRˆQˆRÿ¤@*‹Œ%%‹Œ%%Œ$*„øaŒ66 Œ€Ÿ€Ÿ ˆSPŒ33„+ˆSÿ´@+PŒ33Œ&+„ùŒŒ99Œ€¡€¡ˆTPŒ33„+ˆTˆTÿ¤@+PŒ33‡¨Œ99Œ'+„úŒŒ;;Œ€¥€¥ˆUPŒ33„+ˆU&ˆUÿ¤@+PŒ33Œ(+„ûŒ)„ÛŒ°Œ°„Ü–…–…ˆV‹„ÛŒ«Œ«!„€Œ)ˆVˆVÿ´@)‹„ÛŒ«Œ«!Œ*„ÛŒ°Œ°$Œ+)„üŒ,„ÛŒ³Œ³„Ü–‡–‡ˆW‹„ÛŒ«Œ«!„€Œ)ˆWˆWÿ´@)‹„ÛŒ«Œ«!Œ*„ÛŒ³ Œ³'Œ-)„ý…‘„ÛŒÀŒÀ@„Ü–‘–‘FˆXP„ÛŒÀŒÀ„'ˆXˆXÿ´@'P„ÛŒÀŒÀŒ"„ÛŒÀ$ŒÀ*€¬„ÛŒÀ1ŒÀ5'ˆYP„ÛŒƒŒƒ „Œ.„ÛŒƒ Œƒ€ä…à·z\V4à‰‡Äa…à·z\V4à‰‡Å…à·z\V4à‰‡ÆŒ/Œ/,ˆYŠiZZþþŒ0‹|‚Ì ‚Ìf ƒôa9Œ1ŠiåZZþ„þŒ2‹|‚Õ‚Õ#‹~‡­‡­'€”€•ÿ¤A-) ™aŒ2Œ2Œ6/„ÿŒ7‹|‚ß‚ß&‹~‡Ã‡Ã+€–€—ÿ¤A0) ™aŒ7Œ7‚˜‹|‚ß)‚ß0Œ:/Œ;‹|ƒˆ ƒˆ- ¢a ? ‚a+Œ<ŠißZi  …Œ=Œ>‹|ƒ• ƒ•‹~‰û ‰ûˆZP‹|ƒ•'ƒ•)„2ˆZ2ˆZ2ˆZÿ¤@) ™aŒ>Œ>P‹|ƒ•'ƒ•)Œ@‹|ƒ•ƒ•ŒA‹|ƒ•.ƒ•5ŒB3…‚l†3‹|ƒŸ ƒŸ‹~‰º ‰ºˆ[P‹|ƒŸƒŸ„ˆ\‚j‹|ƒŸ ƒŸ"„ˆ[ˆ\2ˆ[2ˆ\ÿ¤@) ™a†3†3P‹|ƒŸƒŸ‚j‹|ƒŸ ƒŸ"‚m‹|ƒŸƒŸ#‹|ƒŸ'ƒŸ-ŒC3…‚gŒD‹|ƒ« ƒ«‹~‰Î ‰Îˆ]P‹|ƒ«ƒ«!„ˆ]2ˆ]2ˆ]ÿ¤@) ™aŒDŒDP‹|ƒ«ƒ«!‚h‹|ƒ«ƒ«#‹|ƒ«.ƒ«4ŒE3…‚kŒF‹|ƒº ƒº‹~‰Ò ‰Òˆ^P‹|ƒº"ƒº$„ˆ^2ˆ^2ˆ^2ˆ^ÿ¤@) ™aŒFŒFP‹|ƒº"ƒº$‚h‹|ƒºƒº #‹|ƒº1ƒº7ŒG3…ŒHŒI‹|ƒÉ ƒÉ‹~Š& Š&ˆ_P‹|ƒÉƒÉ„ˆ`ŒJ‹|ƒÉ*ƒÉ-„ˆaŒK‹|ƒÉ.ƒÉ1„ˆ_€¦ˆ`ˆa2ˆ_2ˆ`2ˆaÿ¤@) ™aŒIŒIP‹|ƒÉƒÉŒJ‹|ƒÉ*ƒÉ-ŒK‹|ƒÉ.ƒÉ1ŒL‹|ƒÉƒÉ#‹|ƒÉ7ƒÉ=ŒM3…ŒNŒO‹|ƒÔ ƒÔ‹~‰Ä ‰ÄˆbP‹|ƒÔƒÔ„ˆc‚j‹|ƒÔ#ƒÔ%„ˆbˆc2ˆb2ˆcÿ¤@) ™aŒOŒOP‹|ƒÔƒÔ‚j‹|ƒÔ#ƒÔ%ŒP‹|ƒÔƒÔ#‹|ƒÔ1ƒÔ7ŒQ3…ŒRŒ‹|ƒä ƒä‹~‰× ‰×ˆd‚j‹|ƒäƒä„ˆeP‹|ƒä#ƒä%„ˆdˆeˆdˆd2ˆe2ˆdÿ¤@) ™aŒŒ‚j‹|ƒäƒäP‹|ƒä#ƒä%ŒS‹|ƒäƒä]‹|ƒä0ƒä5#‹|ƒä<ƒäBŒT3…‚ŒU‹|ƒë ƒë‹~‰æ ‰æˆfP‹|ƒëƒë„ˆf2ˆfÿ¤@) ™aŒUŒUP‹|ƒëƒë‹­‹|ƒëƒë#‹|ƒë+ƒë1ŒV3…ŒWŒX‹|ƒó ƒó‹~‰é ‰éˆgP‹|ƒó"ƒó$„ˆg2ˆg{ÿ¤@) ™aŒXŒXP‹|ƒó"ƒó$‹­‹|ƒóƒó #‹|ƒó1ƒó7ŒY3… ŒZŒ[‹|„ „‹~‰ì ‰ìˆhP‹|„)„+„2ˆh2ˆhˆhÿ¤@) ™aŒ[Œ[P‹|„)„+#‹|„„Œ\3ˆi‹ð‹|‚ú‚ú„‹ñŒ]‹|‚ú ‚ú €ôa€ …8aR) ™aŒ]Œ]a4‹ñaˆj‹ð‹|‚ú‚ú„%ˆj€%ˆj‹†4‹ñ‹†ˆk‹ð‹|‚ú‚ú„%ˆk€%ˆk‹ô4‹ñ‹ôˆl‹ð‹|‚ú‚ú„%ˆlˆl‹ö4‹ñ‹öˆm‹ð‹|‚ú‚ú„ˆn‹í‹|ƒ>ƒD„%ˆm$ˆnˆmˆn‹ù4‹ñ‹ùˆo‹ð‹|‚ú‚ú„ˆp‹í‹|ƒ)Cƒ)I„%ˆo$ˆpˆoˆp‹û4‹ñ‹ûˆq‹ð‹|‚ú‚ú„ˆr‹í‹|ƒ1Aƒ1G„%ˆq$ˆrˆqˆr‹ý4‹ñ‹ýˆs‹ð‹|‚ú‚ú„ˆt‹í‹|ƒ9Fƒ9L„%ˆs$ˆtˆsˆt‹ÿ4‹ñ‹ÿˆu‹ð‹|‚ú‚ú„%ˆuˆuŒ4‹ñŒˆv‹ð‹|‚ú‚ú„%ˆvˆvŒ4‹ñŒˆw‹ð‹|‚ú‚ú„ˆxP‹|ƒe.ƒe0„%ˆwˆwˆxˆxŒ4‹ñŒˆy‹ð‹|‚ú‚ú„ˆzP‹|ƒr1ƒr3„%ˆyˆyˆzˆz‹†4‹ñ‹†ˆ{‹ð‹|‚ú‚ú„%ˆ{Œ 4‹ñŒ ˆ|‹ð‹|‚ú‚ú„%ˆ|Œ 4‹ñŒ ˆ}‹ð‹|‚ú‚ú„%ˆ}Œ 4‹ñŒ ˆ~‹ð‹|‚ú‚ú„%ˆ~&pŒ4‹ñŒˆ‹ð‹|‚ú‚ú„%ˆ'pŒ4‹ñŒˆ€‹ð‹|‚ú‚ú„%ˆ€'pŒ4‹ñŒˆ‹ð‹|‚ú‚ú„%ˆ{Œ^Ši‚‚  ˆ‚P„ÛŒ€Œ€„Š‚„ÛŒ€ Œ€ ,ˆ‚Œ_Šiƒƒ  Œ`„ÛŒf Œff ƒôa9ŒaŠi©ƒ†  … Œb„ÛŒlŒl „Ü–L–L ˆƒP„ÛŒgŒg„ˆƒ,ˆƒÿ¤A,) ™aŒbŒbP„ÛŒgŒgŒc„ÛŒl#Œl*Œd5… Œe„ÛŒrŒr)„Ü–Q–Q)ˆ„P„ÛŒgŒg„ˆ„,ˆ„ÿ¤A,) ™aŒeŒeP„ÛŒgŒg„ÛŒr,Œr1Œf5… Œg„ÛŒxŒx„Ü–[–[ˆ…P„ÛŒgŒg„,ˆ…ˆ…ÿ¤A,) ™aŒgŒgP„ÛŒgŒgŒh5ˆ†‹„ÛŒ·Œ·„ ˆ‡€Œˆ‡‹„ÛŒ·Œ·„ŠÝ„ÛŒ· Œ·€ „ìaB2ˆ‡)ˆ†ŒiŠi  ˆˆ   ˆˆP„یČĄŒ„ÛŒÄ ŒÄ 'ˆˆˆˆŒjŠi  ‰‰   ˆ‰‹„ÛŒ«Œ«!„€ŒŒ„ÛŒ« Œ« 4ŒŒ)ˆŠ‹„ÛŒ«Œ«!„€Œ)ˆŠˆŠ4ŒŒ,ˆ‹‹„ÛŒ«Œ«!„€Œ)ˆ‹ˆ‹Œ)4ŒŒ)ˆŠ‹„ÛŒ«Œ«!„€Œ)ˆŠˆŠŒ,4ŒŒ,ˆ‹‹„ÛŒ«Œ«!„€Œ)ˆ‹ˆ‹ŒkŠi  ŒŒ   ˆŒP„ÛŒÀŒÀ„ŒŒl„ÛŒÀ ŒÀ ) ™aŒlŒl…‘'ˆŒˆP„ÛŒÀŒÀ„Œ"€¬ˆ4Œ…‘ˆŽP„ÛŒÀŒÀ„'ˆŽˆŽ…‘4Œ…‘ˆŽP„ÛŒÀŒÀ„'ˆŽˆŽ€˜ŒnŠi     ˆ‹Œ%%„ ˆ€Œˆ‹Œ%%„Œ ŒoŒ% % ) ™aŒoŒoa4Œ aˆ‘‹Œ%%„ ˆ’€Œˆ’‹Œ%%„*ˆ‘ˆ’Œ4Œ Œˆ“‹Œ%%„ ˆ”€Œˆ”‹Œ%%„*ˆ“ˆ”ˆ”Œ4Œ Œˆ•‹Œ%%„ ˆ–€Œˆ–‹Œ%%„*ˆ•ˆ–ˆ•ˆ–ŒpŠi  ——   ˆ—PŒ33„Œ%ŒqŒ3 3 ) ™aŒqŒqa4Œ%aˆ˜PŒ33„+ˆ˜Œ4Œ%Œˆ™PŒ33„+ˆ™ˆ™Œ4Œ%ŒˆšPŒ33„+ˆš&ˆšŒrŠi››  Œs‹|„ „- ¢a ? ‚a+ŒtŠi뛳  … Œ=Œ>‹|„ „ ‹~‰ ‰ˆ›Œu‹|„ !„ &„ ˆœ€ŒˆœP‹|„ '„ )„ˆŒv‹|„ <„ A„ ˆœ€Œˆ›ˆœˆˆœ&ˆœÿ¤@) ™aŒ>Œ>Œu‹|„ !„ &P‹|„ '„ )Œv‹|„ <„ AŒw‹|„ „ Œx‹|„ .„ 4Œy7…‚l†3‹|„ „‹~‰L ‰LˆžP‹|„„„ˆŸ‚j‹|„ „"„ˆ ‹°‹|„:„>„ ˆž€ŒˆžˆŸˆ ˆž&ˆŸÿ¤@) ™a†3†3P‹|„„‚j‹|„ „"‹°‹|„:„>‚m‹|„„Œz‹|„'„2Œ{7…‚gŒD‹|„ „‹~‰R ‰Rˆ¡P‹|„„!„ˆ¢‹°‹|„A„E„ ˆ¡€Œˆ¡ˆ¢ˆ¡&ˆ¡ÿ¤@) ™aŒDŒDP‹|„„!‹°‹|„A„E‚h‹|„„Œz‹|„.„9Œ|7…‚kŒF‹|„$ „$‹~‰X ‰Xˆ£P‹|„$"„$$„ˆ¤‹°‹|„$D„$H„ ˆ£€Œˆ£ˆ¤ˆ£&ˆ£&ˆ£ÿ¤@) ™aŒFŒFP‹|„$"„$$‹°‹|„$D„$H‚h‹|„$„$ Œz‹|„$1„$<Œ}7…ŒHŒI‹|„. „.‹~‰† ‰†ˆ¥P‹|„.„.„ˆ¦ŒJ‹|„.*„.-„ˆ§ŒK‹|„..„.1„ˆ¨‹°‹|„.J„.N„ ˆ¥€Œˆ¥€¦ˆ¦ˆ§ˆ¨ˆ¥&ˆ¦&ˆ§ÿ¤@) ™aŒIŒIP‹|„.„.ŒJ‹|„.*„.-ŒK‹|„..„.1‹°‹|„.J„.NŒL‹|„.„.Œz‹|„.7„.BŒ~7…ŒNŒO‹|„6 „6‹~‰_ ‰_ˆ©P‹|„6„6„ˆª‚j‹|„6#„6%„ˆ«‹°‹|„6D„6H„ ˆ©€Œˆ©ˆªˆ«ˆ©&ˆªÿ¤@) ™aŒOŒOP‹|„6„6‚j‹|„6#„6%‹°‹|„6D„6HŒP‹|„6„6Œz‹|„61„6<Œ7…ŒRŒ‹|„B „B‹~‰e ‰eˆ¬‚j‹|„B„B„ˆ­P‹|„B#„B%„ˆ®‹°‹|„BO„BS„ ˆ­€Œˆ¬ˆ­ˆ¬ˆ¬ˆ®ˆ­&ˆ¬ÿ¤@) ™aŒŒ‚j‹|„B„BP‹|„B#„B%‹°‹|„BO„BSŒS‹|„B„B]‹|„B0„B5Œz‹|„B<„BGŒ€7…‚ŒU‹|„H „H‹~‰p ‰pˆ¯P‹|„H„H„ˆ°‹°‹|„H>„HB„ ˆ¯€Œˆ¯ˆ°ˆ¯ÿ¤@) ™aŒUŒUP‹|„H„H‹°‹|„H>„HB‹­‹|„H„HŒz‹|„H+„H6Œ7…ŒZŒ[‹|„Q „Q‹~‰s ‰sˆ±‹°‹|„Q)„Q-„ ˆ²€Œˆ²P‹|„Q.„Q0„ˆ±ˆ²&ˆ²ˆ²ÿ¤@) ™aŒ[Œ[‹°‹|„Q)„Q-P‹|„Q.„Q0Œz‹|„Q„Q!Œ‚7ˆ³‹Œ „€ŒŒŒƒŒ ) ™aŒƒŒƒa4Œaˆ´‹Œ „€Œ(ˆ´Œ4ŒŒˆµ‹Œ „€Œ(ˆµŒ4ŒŒˆ¶‹Œ „€Œ(ˆ¶)ˆ¶Œ„Ši··Œ…‹|‚˜ ‚˜f ƒôa9Œ†ŠiB·¹…Œ‡‹|‚¦‚¦‹~‡‡#€™ÿ¤A8) ™aŒ‡Œ‡Œ‰‹|‚¦‚¦% €™aŒŠ‹|‚¦0‚¦6 €™a^‹|‚¦>‚¦CŒ‹9…Œ‡ŒŒ‹|‚¬‚¬‹~‡…‡…#€™ÿ¤A8) ™aŒŒŒŒ^‹|‚¬‚¬$Œ9…ŒŽ‹|‚·‚·‹~‡‡$€™ÿ¤A8) ™aŒŽŒŽŒ‰‹|‚· ‚·& €™aŒŠ‹|‚·1‚·7 €™a^‹|‚·?‚·DŒ9…ŒUŒ‹|‚À‚À‹~‡œ‡œˆ·P‹|‚»‚»„2ˆ·ˆ·ÿ¤A2) ™aŒŒP‹|‚»‚»‹­‹|‚À‚À Œ‘9…ŒXŒ’‹|‚Ȃȋ~‡Ÿ‡Ÿˆ¸P‹|‚»‚»„2ˆ¸ˆ¸{ÿ¤A2) ™aŒ’Œ’P‹|‚»‚»‹­‹|‚È‚È&Œ“9ˆ¹P‹|€€„‹Œ”‹|€ € €ôa  `a  ba) ™aŒ”Œ”Œ•Šiººˆº‹í‹|‚è‚è!„‹îŒ–‹|‚è ‚è €ôa) ™aŒ–Œ–‹í4‹î‹íˆ»‹í‹|‚è‚è!„$ˆ»ˆ»Œ—Ši¼¼ŠjŒ˜‹|‚ ‚) ™aŒ˜Œ˜ €ôa ‚Á4Šj‚Áˆ¼P‹|‚!‚#„|#ˆ¼ˆ¼‚Å4Šj‚Å|‹Ú4Šj‹Úˆ½P‹|‚1G‚1I„|ˆ½ˆ½‹Þ4Šj‹Þ|‹à4Šj‹àˆ¾P‹|‚H‚H „|ˆ¾ˆ¾‹â4Šj‹âˆ¿P‹|‚P.‚P0„|ˆ¿ˆ¿‹ä4Šj‹äˆÀP‹|‚W0‚W2„|ˆÀˆÀˆ<4Šjˆ<ˆÁP‹|‚eO‚eQ„{ˆÂ‚j‹|‚e8‚e:„|ˆÁˆÁˆÂˆÂ‡\4Šj‡\ˆÃP‹|‚r(‚r*„ˆÄ‚j‹|‚rC‚rE„|ˆÃˆÃˆÄˆÄk4ŠjkˆÅP‹|‚.‚0„|ˆÅˆÅe4ŠjeˆÆP‹|‚Ž+‚Ž-„|ˆÆ_ˆÆˆÆa4Šja|Œ™ŠiÇÇ‹‚Œš‹|€• €• €ôa) ™aŒšŒš‹}4‹‚‹}ˆÇP‹|€¨;€¨=„ˆÇ€ˆÇ‹†4‹‚‹†€‹ˆ4‹‚‹ˆˆÈP‹|€¹6€¹8„ˆÈ€Ž€ˆÈ‹Ž4‹‚‹ŽˆÉP‹|€¼;€¼=„ˆÉ€ŽˆÉ‹4‹‚‹ˆÊP‹|€Å0€Å2„ˆÊ€¦ˆÊ_‹’4‹‚‹’ˆËP‹|€Î7€Î9„ˆË€ˆË‹•4‹‚‹•{‹˜4‹‚‹˜€‹š4‹‚‹š‹œ4‹‚‹œ€‹ž4‹‚‹žˆÌP‹|57„ˆÌˆÌ‹¡4‹‚‹¡ˆÍP‹|8:„#ˆÍˆÍ‹¤4‹‚‹¤‹¦4‹‚‹¦‹¨4‹‚‹¨€‹¬4‹‚‹¬ˆÎP‹|6567„ˆÎ_€ˆÎ‹¯4‹‚‹¯ˆÏ‹°‹|HkHo„ ˆÐ€ŒˆÐP‹|H{H}„ˆÏˆÐˆÐ‹´4‹‚‹´€‘‹¸4‹‚‹¸€’‹¼4‹‚‹¼ˆÑP‹|a,a.„ˆÑˆÑ‹¿4‹‚‹¿‹Â4‹‚‹ÂˆÒP‹|~€‰~€‹„€“€’€’ˆÒˆÒ‹Â4‹‚‹ÂˆÓ‹Ç‹|“)“.„ˆÔP‹|“€“€Ÿ„ˆÓˆÓ€“€’€’ˆÔˆÔ‹Â4‹‚‹ÂˆÕ‹Ç‹|©*©/„ˆÖ‹É‹|©7©<„ˆ×P‹|©€³©€µ„ˆÕˆÖˆÕˆÖ€“€’€’ˆ×ˆ×‹Â4‹‚‹ÂˆØ‹Ç‹|À*À/„ˆÙ‹É‹|À7À<„ˆÚ‹Ë‹|ÀDÀI„ˆÛP‹|À€ÈÀ€Ê„ˆØˆÙˆÚˆØˆÙˆÚ€“€’€’ˆÛˆÛ‹Í4‹‚‹ÍˆÜ‹Î‹|ä0ä4„ˆÝP‹|ä>ä@„ˆÜˆÝˆÜ€“€’€’ˆÝ€’‡ä4‹‚‡äˆÞP‹|ð2ð4„ˆÞ‹Ñ4‹‚‹ÑˆßP‹|ýý „ˆßˆß_€€‹Ö4‹‚‹Ö€Œ›Šiàà9Œœ  &ï'à u%…aŒœ!! Œ‚æ‚æ ˆàPŒœ&(€‰ „ãa>Œ #ˆàˆàÿ´@PŒœ&(IŒœ!!Œž…ŒUŒœ((Œ‚I‚IˆáPŒœ&(€‰ „ãa>Œ ˆáˆáˆáÿ¤@PŒœ&(Œœ((ŒŸ…Œ Œœ//Œ‚Q‚QˆâPŒœ&(€‰ „ãa>Œ ˆâˆâˆâÿ¤@PŒœ&(Œœ//Œ¡…Œ¢Œœ22Œ‚X‚XˆãPŒœ&(€‰ „ãa>Œ ˆãÿ¤@PŒœ&(Œ£…‚ÓŒœ77Œ‚Z‚ZˆäPŒœ&(€‰ „ãa>Œ ˆäˆäÿ¤@PŒœ&(Œœ77Œ¤… Œ¥Œœ::Œ‚h‚hˆåPŒœ&(€‰ „ãa>Œ ˆåÿ¤@PŒœ&(Œ¦…!„!Œœ@@Œ‚}‚}ˆæPŒœ&(€‰ „ãa>Œ ˆæˆæˆæÿ¤@PŒœ&(Œ§Œœ@@ Œ¨Œœ@+@/Œ©…"ƒ"ŒœFFŒ‚†‚†ˆçPŒœ&(€‰ „ãa>Œ ˆçˆçˆçÿ¤@PŒœ&(Œ§ŒœFF Œ¨ŒœF+F/Œª…#Œ«ŒœLLŒ‚¶‚¶ˆèPŒœ&(€‰ „ãa>Œ ˆèˆèÿ¤@PŒœ&(Œ¬ŒœLL#Œ­…$Œ®ŒœRRŒ‚¸‚¸!ˆéPŒœ&(€‰ „ãa>Œ ˆéˆéÿ¤@PŒœ&(Œ¬ŒœR!R)Œ¯…%Œ°ŒœWWŒ‚·‚·ˆêPŒœ&(€‰ „ãa>Œ ˆêˆêÿ¤@PŒœ&(Œ¬ŒœWW%Œ±…&Œ²Œœ]]!Œ‚¹‚¹#ˆëPŒœ&(€‰ „ãa>Œ ˆëˆëÿ¤@PŒœ&(Œ¬Œœ]#]+Œ³…'Œ´ŒœaaŒ‚®‚®ˆìPŒœ&(€‰ „ãa>Œ ˆìˆìÿ¤@PŒœ&(Œµ…(Œ¶ŒœddŒ‚´‚´ˆíPŒœ&(€‰ „ãa>Œ ˆíˆíÿ¤@PŒœ&(Œ·…)ŒœkkŒ‚ƂƈîPŒœ&(€‰ „ãa>Œ ˆîÿ´@PŒœ&(…*ŒUŒ¸Œ¹ééˆï‚†Œ¸&*€‰ „ãa>Œ ˆðtŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆïˆðˆïˆð:ˆïˆðÿ¤@:‚†Œ¸&*tŒ¸\b‚ÖŒ¸Œ¸$Œ»:…+Œ¥Œ¸""Œ¹øøˆñ‚†Œ¸&*€‰ „ãa>Œ ˆòtŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆñˆòÿ¤@:‚†Œ¸&*tŒ¸\bŒ¼:…,aŒ¸'' Œ¹ÞÞ ˆó‚†Œ¸&*€‰ „ãa>Œ ˆôtŒ¸\b€‰ „ãa>€Š „åa?Ž#ˆóˆô:ˆóˆôÿ´@:‚†Œ¸&*tŒ¸\bIŒ¸''Œ½:…-Œ¾Œ¸,,Œ¹‚‚ˆõ‚†Œ¸&*€‰ „ãa>Œ ˆötŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆõˆöˆõÿ¤@:‚†Œ¸&*tŒ¸\b‚ÖŒ¸,,Œ¿:….Œ¢Œ¸//Œ¹‚‚ˆ÷‚†Œ¸&*€‰ „ãa>Œ ˆøtŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆ÷ˆøÿ¤@:‚†Œ¸&*tŒ¸\bŒÀ:…/ŒÁŒ¸66Œ¹úúˆù‚†Œ¸&*€‰ „ãa>Œ ˆútŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆùˆúˆùˆúÿ¤@:‚†Œ¸&*tŒ¸\b‚ÖŒ¸66ŒÂ:…0Œ Œ¸;;Œ¹‚‚ˆû‚†Œ¸&*€‰ „ãa>Œ ˆütŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆûˆüˆû:ˆûˆüÿ¤@:‚†Œ¸&*tŒ¸\b‚ÖŒ¸;;ŒÃ:…1ŒÄŒ¸AAŒ¹‚"‚"ˆý‚†Œ¸&*€‰ „ãa>Œ ˆþtŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆýˆþˆýˆþÿ¤@:‚†Œ¸&*tŒ¸\b‚ÖŒ¸AAŒÅ:…2Œ¸HHŒ¹‚:‚:ˆÿ‚†Œ¸&*€‰ „ãa>Œ ‰tŒ¸\b€‰ „ãa>€Š „åa?Ž:ˆÿ‰ÿ´@:‚†Œ¸&*tŒ¸\b:…3…€„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰€¬;…€P„ۆ؆Ø;…4…€„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰;‰€¬;…€€§;‰;‰P„ۆ؆Ø;…5…€„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰[€¬;…€\[P„ۆ؆Ø;…6……„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰€¬;……P„ۆ؆Ø;…7……„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰]€¬;……^]P„ۆ؆Ø;…8„Û†Ø †Ø „Û†Ø †Ø ‰P„ۆ؆؎;‰]€¬;^]P„ۆ؆Ø;…9ŒÇ„ۆ܆܄ÜBB‰P„ۆ؆؎‰ÿ¤@;P„ۆ؆،È;…:ŒÉ„ۆ߆߄Ü%%‰P„ۆ؆؎;‰ÿ¤@;P„ۆ؆،Ê;…;Œ¥„Û†á†á„Ü;;‰ P„ۆ؆؎;‰ ÿ¤@;P„ۆ؆،Ë;…<ŒÌ„Û†ä†ä„Ü44‰ P„ۆ؆؎;‰ ‰ ÿ¤@;P„ۆ؆،Í;…=ŒÎ„Û†ç†ç„Ü55‰ P„ۆ؆؎;‰ ‰ ÿ¤@;P„ۆ؆،Ï;…>ŒÁ„Û†í†í„Ü<<‰ P„ۆ؆؎;‰ ‰ ÿ¤@;P„ۆ؆؀Äۆí†íŒÐ;…?ŒÑ„Û†ö†ö„ÜDD‰ P„ۆ؆؎‰ ‰ ‰ ÿ¤@;P„ۆ؆؃A„Û†ö†ö!ŒÒ„Û†ö'†ö+ŒÓ;‰P„Û‡ ‡„ „Û‡ ‡ H‰ŒÔ9  @@‰P„Û‡‡ „:„Û‡ ‡;‰ŒÕ9  @@‰PŒœ&(€‰ „ãa>Œ ŠeŒÖŒœ   €ôa) ™aŒÖŒÖa<Šea‰PŒœ&(Œ #‰‰ŒU<ŠeŒU‰PŒœ&(Œ ‰‰‰Œ <ŠeŒ ‰PŒœ&(Œ ‰‰‰Œ¢<ŠeŒ¢‰PŒœ&(Œ ‰‚Ó<Še‚Ó‰PŒœ&(Œ ‰‰Œ¥<ŠeŒ¥‰PŒœ&(Œ ‰„!<Še„!‰PŒœ&(Œ ‰‰‰ƒ"<Šeƒ"‰PŒœ&(Œ ‰‰‰Œ«<ŠeŒ«‰PŒœ&(Œ ‰‰Œ®<ŠeŒ®‰PŒœ&(Œ ‰‰Œ°<ŠeŒ°‰PŒœ&(Œ ‰‰Œ²<ŠeŒ²‰PŒœ&(Œ ‰‰Œ´<ŠeŒ´‰PŒœ&(Œ ‰‰Œ¶<ŠeŒ¶‰PŒœ&(Œ ‰‰<Še‰PŒœ&(Œ ‰0H‰=‰ŒØ9 @@ŒÙŒœy y- ¢a ? ‚a+ŒÚ9ú C @` …@ŒÛŒÜŒœ~ ~Œƒ0 ƒ0‰ PŒœ~~„ ‰ ÿ¤D€œ …2aQ) ™aŒÜŒÜPŒœ~~ŒÝ>…AŒÞŒßŒœ€„ €„Œƒ ƒ‰!PŒœ€„€„„ ‰!‰!ÿ¤@) ™aŒßŒßPŒœ€„€„Œœ€„€„Œà>…B‚ŒUŒœ€Œ €ŒŒƒ ƒ‰"PŒœ€Œ€Œ„ ‰"‰"‰"ÿ¤@) ™aŒUŒUPŒœ€Œ€ŒŒœ€Œ€Œ‚©Œœ€Œ€Œ Œá>…C‚Õ‚ÓŒœ€“ €“Œƒ ƒ‰#PŒœ€“€“ „ ‰#‰#ÿ¤@) ™a‚Ó‚ÓPŒœ€“€“ ŒâŒœ€“€“‚©Œœ€“$€“'Œã>…DŒäŒåŒœ€š €šŒƒg ƒg‰$PŒœ€š €š"„ ‰$‰$ÿ¤@) ™aŒåŒåPŒœ€š €š"Œ§Œœ€š€šŒ¨Œœ€š'€š+Œæ>…EŒçŒèŒœ€¢ €¢Œƒm ƒm‰%PŒœ€¢&€¢(„ ‰%‰%ÿ¤@) ™aŒèŒèPŒœ€¢&€¢(Œ§Œœ€¢€¢ Œ¨Œœ€¢-€¢1Œé>…FŒêŒëŒœ€© €©Œƒj ƒj‰&PŒœ€©"€©$„ ‰&‰&ÿ¤@) ™aŒëŒëPŒœ€©"€©$Œ§Œœ€©€©Œ¨Œœ€©)€©-Œì>…GŒíŒîŒœ€± €±Œƒp ƒp‰'PŒœ€±(€±*„ ‰'‰'ÿ¤@) ™aŒîŒîPŒœ€±(€±*Œ§Œœ€±€±"Œ¨Œœ€±/€±3Œï>…H^‚ØŒœ€¸ €¸ŒƒH ƒH‰(PŒœ€¸€¸„ ‰(ÿ¤@) ™a‚Ø‚ØPŒœ€¸€¸‚©Œœ€¸€¸Œð>…I‚sƒ8Œœ€Á €ÁŒƒ6 ƒ6‰)PŒœ€Á€Á!„ ‰)‰)ÿ¤@) ™aƒ8ƒ8PŒœ€Á€Á!‚hŒœ€Á€Á‚©Œœ€Á.€Á1Œñ>…J‚gŒDŒœ€É €ÉŒƒ9 ƒ9‰*PŒœ€É€É!„ ‰*‰*‰*ÿ¤@) ™aŒDŒDPŒœ€É€É!‚hŒœ€É€É‚©Œœ€É.€É1Œò>…K‚l†3Œœ€Ñ €ÑŒƒE ƒE‰+PŒœ€Ñ€Ñ„ ‰,‚jŒœ€Ñ €Ñ"„ ‰+‰,‰+‰,ÿ¤@) ™a†3†3PŒœ€Ñ€Ñ‚jŒœ€Ñ €Ñ"‚mŒœ€Ñ€Ñ‚©Œœ€Ñ'€Ñ*Œó>…L‡Q‡RŒœ€Ù €ÙŒƒ? ƒ?‰-PŒœ€Ù€Ù„ ‰.ZŒœ€Ù€Ù„‰.‰-‰.‰.‰-‰.ÿ¤@) ™a‡R‡RPŒœ€Ù€ÙZŒœ€Ù€Ù\Œœ€Ù€Ù$]Œœ€ÙA€ÙF‚©Œœ€ÙQ€ÙTŒô>…M‡T‡UŒœ€á €áŒƒB ƒB‰/PŒœ€á€á„ ‰0ZŒœ€á€á„‰/‰0‰0‰/‰0‰0ÿ¤@) ™a‡U‡UPŒœ€á€áZŒœ€á€á\Œœ€á"€á(‚©Œœ€áE€áH]Œœ€áT€áYŒõ>…N‚r†<Œœ€ê €êŒƒ3 ƒ3‰1PŒœ€ê€ê!„ ‰1‰1ÿ¤@) ™a†<†<PŒœ€ê€ê!‚hŒœ€ê€ê‚©Œœ€ê.€ê1Œö>…OŒ÷ŒøŒœ€ñ €ñŒƒ& ƒ&‰2PŒœ€ñ €ñ"„ ‰2‰2‰2ÿ¤@) ™aŒøŒøPŒœ€ñ €ñ"Œ§Œœ€ñ€ñŒ¨Œœ€ñ'€ñ+Œù>…PŒúŒûŒœ€÷ €÷Œƒ) ƒ)‰3PŒœ€÷(€÷*„ #‰3‰3ÿ¤@) ™aŒûŒûPŒœ€÷(€÷*ŒüŒœ€÷€÷Œý>…QŒþŒÿŒœ€þ €þŒƒ ƒ ‰4PŒœ€þ€þ„ ‰4‰4‰4ÿ¤@) ™aŒÿŒÿPŒœ€þ€þŒ§Œœ€þ€þŒ¨Œœ€þ#€þ'>…RŒœ Œƒ# ƒ#‰5PŒœ$&„ #‰5‰5ÿ¤@) ™aPŒœ$&ŒüŒœ>…SŒœ Œƒ ƒ‰6PŒœ  „ ‰6ÿ¤@) ™aPŒœ  ‚©Œœ  >…T‚f†.Œœ Œƒ- ƒ-‰7PŒœ„ ‰7‰7ÿ¤@) ™a†.†.PŒœ‚wŒœ‚©Œœ),>…U‚kŒFŒœ Œƒ< ƒ<‰8PŒœ"$„ ‰8‰8‰8‰8ÿ¤@) ™aŒFŒFPŒœ"$‚hŒœ ‚©Œœ14>…V Œ Œœ" "Œƒ ƒ‰9PŒœ""„ ‰9‰9‰9ÿ¤@) ™aŒ Œ PŒœ""Œœ""‚©Œœ"!"$ >…W  Œœ( (Œƒs ƒs‰:PŒœ( ("„ ‰:‰:ÿ¤@) ™a  PŒœ( ("‚©Œœ(( >…XŒœ. .Œƒv ƒv‰;PŒœ. ."„ ‰;‰;ÿ¤@) ™aPŒœ. ."‚©Œœ..>…YŒœ4 4ŒƒQ ƒQ‰…Z‡a‡bŒœ: :ŒƒW ƒW‰=PŒœ::„ ‰=‰=ÿ¤@) ™a‡b‡bPŒœ::‚©Œœ::>…[‚}Œœ@ @ŒƒT ƒT‰>PŒœ@@„ ‰>‰>ÿ¤@) ™aPŒœ@@‚ˆŒœ@@>…\‚~‡_ŒœF FŒƒZ ƒZ‰?PŒœFF„ ‰?‰?ÿ¤@) ™a‡_‡_PŒœFF‚©ŒœFF>…]ŒœL LŒƒ] ƒ]‰@PŒœLL„ ‰@#‰@ÿ¤@) ™aPŒœLL‚©ŒœLL>…^ŒœR RŒƒ` ƒ`‰APŒœR R"„ #‰A‰Aÿ¤@) ™aPŒœR R"IŒœRR>…_ŒœY YŒƒd ƒd‰BPŒœY!Y#„ ‰B‰B‰Bÿ¤@) ™aPŒœY!Y#Œ§ŒœYYŒ¨ŒœY(Y, >!Šè ? ‚a+- ¢a "9á+C ¢ `¤D…`#$Šè) )Šé„) „)‰CPŠè) )"„#‰C#‰C#‰Cÿ¤@) ™a$$PŠè) )"Œ@Šè))ŒAŠè)()/%?…a&'Šè77Šé…Y…Y‰DPŠè8,8-„‰Dƒ"‰D‰D‰D‰Dƒ/‰D‰D‰Dƒ#‰D#‰D‰Dÿ„@) ™a''PŠè8,8-#Šè77%(?…bƒ3ƒ2ŠèJJŠé…f…f‰EPŠèJ-J/„‰F‚jŠèK,K-„‰Fƒ"‰F‰F‰F‰Fƒ/‰F‰F‰Fƒ#‰F‰E‰F#‰E‰Fÿ„@) ™aƒ2ƒ2PŠèJ-J/‚jŠèK,K-‚‡ŠèJ!J+#ŠèJ:J@)?…c*+Šèk kŠé„º „º‰GPŠèkk „#‰G#‰Gÿ¤@) ™a++PŠèkk #Šèkk,?…d-}Šèz zŠéƒÁ ƒÁ‰HPŠèz,z.„0#‰Hÿ¤@) ™a}}PŠèz,z.#Šèzz.?…eŒNŒOŠè€‹ €‹Šéƒ¯ ƒ¯‰IPŠè€‹€‹„‰J‚jŠè€‹#€‹%„‰I‰J#‰I#‰Jÿ¤@) ™aŒOŒOPŠè€‹€‹‚jŠè€‹#€‹%ŒPŠè€‹€‹#Šè€‹1€‹7/?…f‚i†7Šè€š €šŠé„0 „0‰KPŠè€š€š „‰L‹ Šè€šT€š_„#‰M‰M‚jŠè€šg€ši„‰K‰L#‰K#‰Mÿ¤@) ™a†7†7PŠè€š€š ‹ Šè€šT€š_‚jŠè€šg€ši‚mŠè€š€š#Šè€š4€š:0?…g12Šè€« €«Šé„3 „3‰NPŠè€«#€«%„‰N‰N#‰N#‰Nÿ¤@) ™a22PŠè€«#€«%‰œŠè€«€«!Œ@Šè€«7€«>ŒAŠè€«J€«Q3?…h‚u†)Šè€¹ €¹Šéƒÿ ƒÿ‰O‹ Šè€¹=€¹H„#‰P‰PPŠè€¹P€¹R„#‰O#‰Pÿ¤@) ™a†)†)‹ Šè€¹=€¹HPŠè€¹P€¹R4Šè€¹€¹5?…i67Šè€Ì €ÌŠé…9 …9‰QPŠè€Ì"€Ì$„‰R‚†Šè€ÌX€Ì\„ ‰Q‰R#‰Q#‰Rÿ¤@) ™a77PŠè€Ì"€Ì$‚†Šè€ÌX€Ì\‚‡Šè€Ì€Ì #Šè€Ì1€Ì78?…j9‹äŠè€Ö €ÖŠéƒN ƒN‰SPŠè€Ö-€Ö/„#‰S#‰Sÿ¤@) ™a‹ä‹äPŠè€Ö-€Ö/‹åŠè€Ö€Ö:?…kƒ6ƒ5Šè€â €âŠé… …‰TPŠè€â5€â7„ #‰T#‰Tÿ¤@) ™aƒ5ƒ5PŠè€â5€â7#Šè€â€â;?…l<=Šè€ï €ïŠé… …‰UPŠè€ï$€ï&„‰V‚†Šè€ïR€ïV„ ‰U‰V#‰U#‰Uÿ¤@) ™a==PŠè€ï$€ï&‚†Šè€ïR€ïV‚‡Šè€ï€ï"#Šè€ï3€ï9>?…mŒÛŒÜŠè€ö €öŠéƒT ƒT‰WPŠè€ö€ö„#‰Wÿ¤D€œ …2aQ) ™aŒÜŒÜPŠè€ö€ö??…n‚sƒ8Šè Šéƒu ƒu‰XPŠè!„‰X#‰Xÿ¤@) ™aƒ8ƒ8PŠè!‚hŠè#Šè.4@?…oABŠè Šé…ü …ü‰Y‚oŠè #„‰Z‚pŠè'*„‰Y‰Z#‰Y#‰Zÿ¤@) ™aBB‚oŠè #‚pŠè'*‚hŠèŒ@Šè7>ŒAŠèKRC?…p‚gŒDŠè' 'Šéƒ— ƒ—‰[PŠè''!„‰[#‰[#‰[ÿ¤@) ™aŒDŒDPŠè''!‚hŠè''#Šè'.'4D?…q‚ï‚îŠè: :Šéƒœ ƒœ‰\PŠè:: „‰\#‰\#‰\ÿ¤@) ™a‚î‚îPŠè:: ‚hŠè::#Šè:-:3E?…rƒ;ƒ:ŠèG GŠéƒà ƒà‰]PŠèGG„‰]#‰]‰]ÿ¤@) ™aƒ:ƒ:PŠèGG‚hŠèGG#ŠèG,G2F?…sGHŠèT TŠé„ „‰^PŠèT"T$„‰^#‰^ÿ¤@) ™aHHPŠèT"T$‚hŠèTT #ŠèT1T7I?…t‡Q‡RŠèb bŠé„ „‰_PŠèbb„‰`ZŠèbb„‰`‰_‰`‰`#‰_‰`ÿ¤@) ™a‡R‡RPŠèbbZŠèbb\Šèbb$]ŠèbAbF#ŠèbQbWJ?…u‚r†<Šèq qŠéƒ~ ƒ~‰aPŠèqq!„‰a#‰aÿ¤@) ™a†<†<PŠèqq!‚hŠèqq#Šèq.q4K?…vLMŠè Šé…ð …ð‰b‚oŠè #„‰c‚pŠè'*„‰b‰c#‰b#‰cÿ¤@) ™aMM‚oŠè #‚pŠè'*‚hŠèŒ@Šè7>ŒAŠèKRN?…w‚û‚ùŠè Šé„ú „ú‰dPŠè"$„‰e‚†Šè\`„ ‰d‰e#‰d#‰e#‰dÿ¤@) ™a‚ù‚ùPŠè"$‚†Šè\`‚‡Šè #Šè17O?…xƒAƒ@Šèš šŠé† †‰fPŠèšš„#‰f‰fÿ¤@) ™aƒ@ƒ@PŠèšš#ŠèššP?…y‚Û‚ÚŠè¥ ¥Šé† †‰gPŠè¥¥„#‰g‰gÿ¤@) ™a‚Ú‚ÚPŠè¥¥#Šè¥¥Q?…z‚á‚àŠè° °Šé† †‰hPŠè°#°%„#‰h‰hÿ¤@) ™a‚à‚àPŠè°#°%#Šè°°R?…{Šèº ºŠéƒó ƒó‰iPŠèº º"„#‰iÿ¤@) ™aPŠèº º"#ŠèººS?…|‚d†9ŠèË ËŠéƒZ ƒZ‰jPŠèË3Ë5„‰j#‰jÿ¤@) ™a†9†9PŠèË3Ë5^Šèˈ:ŠèËË*T?…}UVŠèÛ ÛŠéƒW ƒW‰kPŠèÛ.Û0„‰k#‰kÿ¤@) ™aVVPŠèÛ.Û0†:ŠèÛÛ%W?…~‚f†.Šèä äŠéƒ_ ƒ_‰lPŠèä䄉l#‰lÿ¤@) ™a†.†.PŠèää‚wŠèää#Šèä)ä/X?…‚v†1Šèî îŠéƒl ƒl‰mPŠèî"î$„‰m#‰mÿ¤@) ™a†1†1PŠèî"î$‚wŠèîî#Šèî1î7Y?…€Z[Šèù ùŠéƒˆ ƒˆ‰n‚oŠèùù„‰o‚pŠèù"ù%„‰n‰o#‰n#‰oÿ¤@) ™a[[‚oŠèùù‚pŠèù"ù%‚wŠèùùŒ@Šèù2ù9ŒAŠèùFùM\?…†B†CŠè‚ ‚Šé„ „‰pPŠè‚‚!„#‰pÿ¤@) ™a†C†CPŠè‚‚!#Šè‚‚]?…‚‚l†3Šè‚ ‚ŠéƒŸ ƒŸ‰qPŠè‚‚„‰r‚jŠè‚"‚$„‰q‰r#‰q#‰rÿ¤@) ™a†3†3PŠè‚‚‚jŠè‚"‚$‚mŠè‚‚#Šè‚)‚/^?…ƒ‚n_Šè‚" ‚"Šéƒ© ƒ©‰s‚oŠè‚"‚"„‰t‚pŠè‚""‚"%„‰u‚jŠè‚")‚"+„‰s‰t‰u#‰s#‰t#‰uÿ¤@) ™a__‚oŠè‚"‚"‚pŠè‚""‚"%‚jŠè‚")‚"+‚mŠè‚"‚"Œ@Šè‚"0‚"7ŒAŠè‚"D‚"K`?…„‚q†5Šè‚/ ‚/Šéƒ¤ ƒ¤‰vPŠè‚/"‚/$„‰w‚jŠè‚/(‚/*„‰v‰w#‰v#‰wÿ¤@) ™a†5†5PŠè‚/"‚/$‚jŠè‚/(‚/*‚mŠè‚/‚/#Šè‚//‚/5a?……‡Ý‡ÞŠè‚:‚:Šé…¢…¢‰xPŠè‚:7‚:9„ #‰x‰xÿ„@) ™a‡Þ‡ÞPŠè‚:7‚:9#Šè‚:‚:#b?…†‚÷‚öŠè‚F‚FŠé…¯…¯‰yPŠè‚F(‚F*„‰z‚jŠè‚FO‚FQ„ ‰y‰z#‰y‰yÿ„@) ™a‚ö‚öPŠè‚F(‚F*‚jŠè‚FO‚FQ‚‡Šè‚F‚F&#Šè‚F5‚F;c?…‡‡à‡áŠè‚_‚_Šé…s…s‰{PŠè‚_7‚_9„ #‰{‰{ÿ„@) ™a‡á‡áPŠè‚_7‚_9#Šè‚_‚_#d?…ˆ‚ó‚òŠè‚k‚kŠé…€…€‰|PŠè‚k(‚k*„‰}‚jŠè‚kO‚kQ„ ‰|‰}#‰|‰|ÿ„@) ™a‚ò‚òPŠè‚k(‚k*‚jŠè‚kO‚kQ‚‡Šè‚k‚k&#Šè‚k5‚k;e?…‰ƒDfŠè‚„ ‚„Šéƒf ƒf‰~PŠè‚„)‚„+„#‰~‰~ÿ¤@) ™affPŠè‚„)‚„+€ÃŠè‚„‚„#Šè‚„‚„$g?…Š‚}Šè‚ ‚Šé„W „W‰PŠè‚‚„‰#‰ÿ¤@) ™aPŠè‚‚#Šè‚‚h?…‹Šè‚— ‚—Šé„E „E‰€PŠè‚—‚—„‰€#‰€ÿ¤@) ™aPŠè‚—‚—#Šè‚—‚—i?…ŒŒZŒ[Šè‚¢ ‚¢Šé„x „x‰PŠè‚¢!‚¢#„#‰#‰‰ÿ¤@) ™aŒ[Œ[PŠè‚¢!‚¢##Šè‚¢‚¢j?…klŠè‚° ‚°ŠéƒÏ ƒÏ‰‚PŠè‚°‚°„‰ƒ‚jŠè‚°!‚°#„‰‚‰ƒ#‰‚‰ƒÿ¤@) ™allPŠè‚°‚°‚jŠè‚°!‚°#ŒPŠè‚°‚°#Šè‚°/‚°5m?…ŽnoŠè‚½ ‚½Šé„ó „ó‰„PŠè‚½"‚½$„#‰„#‰„ÿ¤@) ™aooPŠè‚½"‚½$#Šè‚½‚½p?…qrŠè‚Í ‚ÍŠé„ „‰…PŠè‚Í‚Í!„‰…‰…‰…#‰…‰…ÿ¤@) ™arrPŠè‚Í‚Í!sŠè‚Í‚Í#Šè‚Í2‚Í8t?…ŒRŒŠè‚Ù ‚ي鄃 „ƒ‰†PŠè‚قل‰‡ZŠè‚قل‰‡‰†‰‡‰‡#‰†#‰‡ÿ¤@) ™aŒŒPŠè‚Ù‚ÙZŠè‚Ù‚Ù\Šè‚Ù‚Ù$]Šè‚ÙA‚ÙF#Šè‚ÙQ‚ÙWu?…‘ŒÞŒßŠè‚á ‚áŠé„k „k‰ˆPŠè‚á‚ᄉˆ#‰ˆÿ¤@) ™aŒßŒßPŠè‚á‚áŠè‚á‚áv?…’ƒGƒFŠè‚ï ‚ïŠé…Ú …Ú‰‰PŠè‚ï*‚ï,„#‰‰#‰‰ÿ¤@) ™aƒFƒFPŠè‚ï*‚ï,^Šè‚ï‚ï#Šè‚ï‚ï%w?…“ƒJƒIŠè‚û ‚ûŠé…ä …ä‰ŠPŠè‚û"‚û$„‰Š#‰Š#‰Šÿ¤@) ™aƒIƒIPŠè‚û"‚û$‚hŠè‚û‚û #Šè‚û1‚û7x?…”yzŠèƒ ƒ Šé…1 …1‰‹PŠèƒ 2ƒ 4„ #‰‹#‰‹ÿ¤@) ™azzPŠèƒ 2ƒ 4#Šèƒ ƒ {?…•‚ÿ‚þŠèƒ ƒŠé…) …)‰ŒPŠèƒ!ƒ#„‰‚†ŠèƒOƒS„ ‰Œ‰#‰Œ#‰Œÿ¤@) ™a‚þ‚þPŠèƒ!ƒ#‚†ŠèƒOƒS‚‡Šèƒƒ#Šèƒ0ƒ6|?…–}~Šèƒ)ƒ)Šé…I…I‰ŽPŠèƒ*,ƒ*-„‰Žƒ"‰Ž‰Ž‰Ž‰Žƒ#‰Ž#‰Ž‰Žÿ„@) ™a~~PŠèƒ*,ƒ*-#Šèƒ)ƒ)!?…—ƒMƒLŠèƒ5ƒ5Šé…Q…Q‰PŠèƒ5)ƒ5+„‰‚jŠèƒ6,ƒ6-„‰ƒ"‰‰‰‰ƒ#‰‰‰#‰‰ÿ„@) ™aƒLƒLPŠèƒ5)ƒ5+‚jŠèƒ6,ƒ6-‚‡Šèƒ5ƒ5'#Šèƒ56ƒ5<€?…˜ƒPƒOŠèƒH ƒHŠéƒç ƒç‰‘PŠèƒH*ƒH,„#‰‘#‰‘ÿ¤@) ™aƒOƒOPŠèƒH*ƒH,^ŠèƒHƒH#ŠèƒHƒH%?…™ƒSƒRŠèƒT ƒTŠé…Ò …Ò‰’PŠèƒT"ƒT$„‰’#‰’#‰’ÿ¤@) ™aƒRƒRPŠèƒT"ƒT$‚hŠèƒTƒT #ŠèƒT1ƒT7‚?…š‚~‡_Šèƒ^ ƒ^Šé„\ „\‰“PŠèƒ^ ƒ^"„#‰“‰“ÿ¤@) ™a‡_‡_PŠèƒ^ ƒ^"#Šèƒ^ƒ^ƒ?…›‡a‡bŠèƒh ƒhŠé„I „I‰”PŠèƒhƒh!„#‰”‰”ÿ¤@) ™a‡b‡bPŠèƒhƒh!#Šèƒhƒh„?…œ…ŒÄŠèƒt ƒtŠéƒÖ ƒÖ‰•PŠèƒt ƒt"„‰•#‰•‰•ÿ¤@) ™aŒÄŒÄPŠèƒt ƒt"‚hŠèƒtƒt#Šèƒt/ƒt5†?…‡ˆŠèƒ€ ƒ€Šé„š „š‰–PŠèƒ€&ƒ€(„‰–#‰–ÿ¤@) ™aˆˆPŠèƒ€&ƒ€(‚hŠèƒ€ƒ€$#Šèƒ€5ƒ€;‰?…žŠ‹ŠèƒŒ ƒŒŠéƒÆ ƒÆ‰—PŠèƒŒƒŒ „‰˜‚jŠèƒŒ$ƒŒ&„‰—‰˜#‰—‰˜ÿ¤@) ™a‹‹PŠèƒŒƒŒ ‚jŠèƒŒ$ƒŒ&ŒPŠèƒŒƒŒ#ŠèƒŒ2ƒŒ8Œ?…ŸˆŒˆŠèƒ— ƒ—Šé„o „o‰™PŠèƒ—.ƒ—0„#‰™#‰™ÿ¤@) ™aˆˆPŠèƒ—.ƒ—0^Šèƒ—ƒ—#Šèƒ—#ƒ—)?… ŽŠèƒª ƒªŠéƒQ ƒQ‰šZŠèƒª"ƒª(„‰›PŠèƒª-ƒª/„‰š‰›‰š‰š#‰›ÿ¤@) ™aZŠèƒª"ƒª(PŠèƒª-ƒª/‹åŠèƒªƒª ]ŠèƒªEƒªJ?…¡‘’Šèƒ· ƒ·Šé„ª „ª‰œPŠèƒ·3ƒ·5„#‰œ#‰œÿ¤@) ™a’’PŠèƒ·3ƒ·5“Šèƒ·ƒ· #Šèƒ·(ƒ·.”?…¢‚{•ŠèƒÄ ƒÄŠéƒ´ ƒ´‰‚oŠèƒÄƒÄ „‰ž‚pŠèƒÄ1ƒÄ4„#‰#‰ž#‰‰žÿ¤@) ™a••‚oŠèƒÄƒÄ ‚pŠèƒÄ1ƒÄ4Œ@ŠèƒÄƒÄŒAŠèƒÄ%ƒÄ,–?…£‚|—ŠèƒÒ ƒÒŠéƒº ƒº‰Ÿ‚oŠèƒÒƒÒ!„‰ ‚pŠèƒÒ2ƒÒ5„‰¡‚zŠèƒÒFƒÒI„#‰Ÿ#‰ #‰¡#‰Ÿ‰ ‰¡ÿ¤@) ™a——‚oŠèƒÒƒÒ!‚pŠèƒÒ2ƒÒ5‚zŠèƒÒFƒÒIŒ@ŠèƒÒƒÒŒAŠèƒÒ&ƒÒ-˜ŠèƒÒ:ƒÒA™?‰¢P„Û‡‡„š„Û‡ ‡@‰¢›9£ £ ¤¤‰£‚†Œ¸&*€‰ „ãa>Œ ‰¤tŒ¸\b€‰ „ãa>€Š „åa?ŽŒºœŒ¸  ) ™aœœ €ôa ŒU<ŒºŒU‰¥‚†Œ¸&*Œ ‰¦tŒ¸\bŽ:‰¥‰¦‰¥‰¦:‰¥‰¦Œ¥<ŒºŒ¥‰§‚†Œ¸&*Œ ‰¨tŒ¸\bŽ:‰§‰¨a<Œºa‰©‚†Œ¸&*Œ ‰ªtŒ¸\bŽ#‰©‰ª:‰©‰ªŒ¾<ŒºŒ¾‰«‚†Œ¸&*Œ ‰¬tŒ¸\bŽ:‰«‰¬‰«Œ¢<ŒºŒ¢‰­‚†Œ¸&*Œ ‰®tŒ¸\bŽ:‰­‰®ŒÁ<ŒºŒÁ‰¯‚†Œ¸&*Œ ‰°tŒ¸\bŽ:‰¯‰°‰¯‰°Œ <ŒºŒ ‰±‚†Œ¸&*Œ ‰²tŒ¸\bŽ:‰±‰²‰±:‰±‰²ŒÄ<ŒºŒÄ‰³‚†Œ¸&*Œ ‰´tŒ¸\bŽ:‰³‰´‰³‰´<Œº‰µ‚†Œ¸&*Œ ‰¶tŒ¸\bŽ:‰µ‰¶0H€è‰£‰¤=€è‰£‰¤‰£‰¤9· · ¤¤žŒ¸M M- ¢a ? ‚a+Ÿ9· î ¤½…¤‚ŒUŒ¸U UŒ¹‚  ‚ ‰·‚†Œ¸UU„ ‰¸PŒ¸U#U%„‰·‰¸:‰·‰¸:‰·‰¸ÿ¤@) ™aŒUŒU‚†Œ¸UUPŒ¸U#U%‚ÖŒ¸UUŒ¸UU" Œ¸U)U.¡A…¥Œ¸[ [Œ¹‚Ü ‚܉¹‚†Œ¸[["„ ‰ºPŒ¸[%['„‰¹‰º:‰¹‰ºÿ¤@) ™a‚†Œ¸[["PŒ¸[%['IŒ¸[[¢A…¦‚}Œ¸a aŒ¹‚⠂≻‚†Œ¸aa#„ ‰¼PŒ¸a&a(„‰»‰¼:‰»‰¼ÿ¤@) ™a‚†Œ¸aa#PŒ¸a&a(IŒ¸aa£A…§Œ¸g gŒ¹‚ß ‚߉½‚†Œ¸g g$„ ‰¾PŒ¸g'g)„#‰½‰¾:‰½‰¾ÿ¤@) ™a‚†Œ¸g g$PŒ¸g'g)IŒ¸gg¤A…¨Œ¸n nŒ¹‚Ó ‚Ó‰¿‚†Œ¸nn!„ ‰ÀPŒ¸n"n$„:‰¿‰À#‰¿‰Àÿ¤@) ™a‚†Œ¸nn!PŒ¸n"n$ Œ¸nn¥A…©‡a‡bŒ¸u uŒ¹‚ç ‚ç‰Á‚†Œ¸uu"„ ‰ÂPŒ¸u#u%„:‰Á‰Â‰Á‰Âÿ¤@) ™a‡b‡b‚†Œ¸uu"PŒ¸u#u% Œ¸uu¦A…ª‚~‡_Œ¸| |Œ¹‚ê ‚ê‰Ã‚†Œ¸||#„ ‰ÄPŒ¸|$|&„:‰Ã‰Ä‰Ã‰Äÿ¤@) ™a‡_‡_‚†Œ¸||#PŒ¸|$|& Œ¸||§A…«Œ¸€‚ €‚Œ¹‚ ‚‰Å‚†Œ¸€‚€‚#„ ‰ÆPŒ¸€‚$€‚&„:‰Å‰Æÿ¤@) ™a‚†Œ¸€‚€‚#PŒ¸€‚$€‚& Œ¸€‚€‚¨A…¬ŒÛŒÜŒ¸€‡ €‡Œ¹‚î ‚î‰Ç‚†Œ¸€‡€‡„ ‰ÈPŒ¸€‡€‡„:‰Ç‰Èÿ¤D€œ …2aQ) ™aŒÜŒÜ‚†Œ¸€‡€‡PŒ¸€‡€‡©A…­ƒ;ƒ:Œ¸€ €Œ¹‚£ ‚£‰É‚†Œ¸€€„ ‰ÊPŒ¸€-€/„‰É:‰É‰Ê‰Êÿ¤@) ™aƒ:ƒ:‚†Œ¸€€PŒ¸€-€/‚ÖŒ¸€€ Œ¸€€#ªA…®Š‹Œ¸€— €—Œ¹‚² ‚²‰Ë‚†Œ¸€—€—"„ ‰ÌPŒ¸€—&€—(„‰Í‚jŒ¸€—,€—.„‰Ë‰Ì‰Í:‰Ë‰Ì‰Íÿ¤@) ™a‹‹‚†Œ¸€—€—"PŒ¸€—&€—(‚jŒ¸€—,€—.ŒPŒ¸€—€— Œ¸€—:€—?«A…¯klŒ¸€ž €žŒ¹‚µ ‚µ‰Î‚†Œ¸€ž€ž„ ‰ÏPŒ¸€ž#€ž%„‰Ð‚jŒ¸€ž)€ž+„‰Î‰Ï‰Ð:‰Î‰Ï‰Ðÿ¤@) ™all‚†Œ¸€ž€žPŒ¸€ž#€ž%‚jŒ¸€ž)€ž+ŒPŒ¸€ž€ž Œ¸€ž7€ž<¬A…°‡T‡UŒ¸€¦ €¦Œ¹‚Î ‚Ήт†Œ¸€¦€¦„ ‰ÒPŒ¸€¦€¦„‰ÓZŒ¸€¦€¦#„‰Ñ‰Ò‰Ó‰Ó:‰Ñ‰Ò‰Ó‰Óÿ¤@) ™a‡U‡U‚†Œ¸€¦€¦PŒ¸€¦€¦ZŒ¸€¦€¦#\Œ¸€¦'€¦- Œ¸€¦R€¦W]Œ¸€¦h€¦m­A…±‡Q‡RŒ¸€® €®Œ¹‚É ‚ɉԂ†Œ¸€®€®„ ‰ÕPŒ¸€®€®„‰ÖZŒ¸€®€®„‰Ö‰Ô‰Õ‰Ö‰Ö:‰Ô‰Õ‰Öÿ¤@) ™a‡R‡R‚†Œ¸€®€®PŒ¸€®€®ZŒ¸€®€®\Œ¸€®#€®)]Œ¸€®N€®S Œ¸€®^€®c®A…²‚f†.Œ¸€´ €´Œ¹‚¯ ‚¯‰×‚†Œ¸€´€´„ ‰ØPŒ¸€´"€´$„‰×‰Ø:‰×‰Øÿ¤@) ™a†.†.‚†Œ¸€´€´PŒ¸€´"€´$‚wŒ¸€´€´ Œ¸€´1€´6¯A…³‚sƒ8Œ¸€¼ €¼Œ¹‚¸ ‚¸‰Ù‚†Œ¸€¼€¼#„ ‰ÚPŒ¸€¼'€¼)„‰Ù‰Ú:‰Ù‰Úÿ¤@) ™aƒ8ƒ8‚†Œ¸€¼€¼#PŒ¸€¼'€¼)‚hŒ¸€¼€¼ Œ¸€¼6€¼;°A…´‚gŒDŒ¸€Ã €ÃŒ¹‚» ‚»‰Û‚†Œ¸€Ã€Ã#„ ‰ÜPŒ¸€Ã'€Ã)„‰Û‰Ü:‰Û‰Ü:‰Û‰Üÿ¤@) ™aŒDŒD‚†Œ¸€Ã€Ã#PŒ¸€Ã'€Ã)‚hŒ¸€Ã€Ã Œ¸€Ã6€Ã;±A…µ‚r†<Œ¸€Ë €ËŒ¹‚Á ‚Á‰Ý‚†Œ¸€Ë€Ë#„ ‰ÞPŒ¸€Ë'€Ë)„‰Ý‰Þ:‰Ý‰Þÿ¤@) ™a†<†<‚†Œ¸€Ë€Ë#PŒ¸€Ë'€Ë)‚hŒ¸€Ë€Ë Œ¸€Ë6€Ë;²A…¶‚l†3Œ¸€Ô €ÔŒ¹‚Æ ‚Ɖ߂†Œ¸€Ô€Ô„ ‰àPŒ¸€Ô"€Ô$„‰á‚jŒ¸€Ô(€Ô*„‰ß‰à‰á:‰ß‰à:‰ß‰áÿ¤@) ™a†3†3‚†Œ¸€Ô€ÔPŒ¸€Ô"€Ô$‚jŒ¸€Ô(€Ô*‚mŒ¸€Ô€Ô Œ¸€Ô/€Ô4³A…·´Œ¾Œ¸€Û €ÛŒ¹‚¬ ‚¬‰â‚†Œ¸€Û€Û!„ ‰ãPŒ¸€Û4€Û6„‰â:‰â‰ãÿ¤@) ™aŒ¾Œ¾‚†Œ¸€Û€Û!PŒ¸€Û4€Û6‚ÖŒ¸€Û€Û Œ¸€Û%€Û*µA…¸‚kŒFŒ¸€ä €äŒ¹‚¾ ‚¾‰ä‚†Œ¸€ä"€ä&„ ‰åPŒ¸€ä*€ä,„‰ä‰å:‰ä‰å:‰ä‰å:‰ä‰åÿ¤@) ™aŒFŒF‚†Œ¸€ä"€ä&PŒ¸€ä*€ä,‚hŒ¸€ä€ä  Œ¸€ä9€ä>¶A…¹ Œ Œ¸€ë €ëŒ¹‚© ‚©‰æ‚†Œ¸€ë€ë„ ‰çPŒ¸€ë/€ë1„‰æ:‰æ‰ç:‰æ‰çÿ¤@) ™aŒ Œ ‚†Œ¸€ë€ëPŒ¸€ë/€ë1‚ÖŒ¸€ë€ë Œ¸€ë €ë%·A…º…ŒÄŒ¸€ó €óŒ¹‚¦ ‚¦‰è‚†Œ¸€ó€ó„ ‰éPŒ¸€ó0€ó2„‰è:‰è‰é‰éÿ¤@) ™aŒÄŒÄ‚†Œ¸€ó€óPŒ¸€ó0€ó2‚ÖŒ¸€ó€ó Œ¸€ó!€ó&¸A…»¹ºŒ¸€ü €üŒ¹‚Ö ‚։ꂆŒ¸€ü €ü$„ ‰ëPŒ¸€ü(€ü*„‰ê‰ë:‰ê‰ë‰êÿ¤@) ™aºº‚†Œ¸€ü €ü$PŒ¸€ü(€ü*‚hŒ¸€ü€ü Œ¸€ü7€ü<»A…¼¼½Œ¸ Œ¹‚Ù ‚ى삆Œ¸#'„ ‰íPŒ¸+-„‰ì‰í:‰ì‰í‰ìÿ¤@) ™a½½‚†Œ¸#'PŒ¸+-‚hŒ¸! Œ¸:?¾A‰îP„ۆ؆؎ŒÆ¿„Û†Ø †Ø €’ „÷aG€– …aK€— …aL) ™a¿¿‰îŒÜÀ„Û†Ù †Ù ‰îƒ@„Û†Ú†Ú‰îÁ„Û†Ú†Ú!‰îŒÑÂ„Û†Ú †Ú <ŒÆ…€‰ïP„ۆ؆؎;‰ï<ŒÆ…€‰ðP„ۆ؆؎;‰ð;‰ð<ŒÆ…€‰ñP„ۆ؆؎;‰ñ[<ŒÆ……‰òP„ۆ؆؎;‰ò<ŒÆ……‰óP„ۆ؆؎;‰ó]<ŒÆ‰ôP„ۆ؆؎;‰ô]ŒÇ<ŒÆŒÇ‰õP„ۆ؆؎‰õŒÉ<ŒÆŒÉ‰öP„ۆ؆؎;‰öŒ¥<ŒÆŒ¥‰÷P„ۆ؆؎;‰÷ŒÌ<ŒÆŒÌ‰øP„ۆ؆؎;‰ø‰øŒÎ<ŒÆŒÎ‰ùP„ۆ؆؎;‰ù‰ùŒÁ<ŒÆŒÁ‰úP„ۆ؆؎;‰ú‰úŒÑ<ŒÆŒÑ‰ûP„ۆ؆؎‰û‰û‰û^€§;‰î\0H‰îÃ9ü ü ½½ÄÅ - ¢a ? ‚a+Æ9C*  ü ^ ½û>…½#$Å ÇA A‰üPÅ„‰ü‰ü‰üÿ¤@) ™a$$Pň ň Å%*ÈB…¾&'Å''ÇŠŠ‰ýPÅ()(*„‰ýƒ"‰ý‰ý‰ý‰ýƒ/‰ý‰ý‰ýƒ#‰ý‰ý‰ýÿ„@) ™a''PÅ()(*ƒÃÅ''#ÉB…¿ƒ3ƒ2Å44ljþPÅ4-4/„‰ÿ‚jÅ5)5*„‰ÿƒ"‰ÿ‰ÿ‰ÿ‰ÿƒ/‰ÿ‰ÿ‰ÿƒ#‰ÿ‰þ‰ÿ‰þ‰ÿÿ„@) ™aƒ2ƒ2PÅ4-4/‚jÅ5)5*‚‡Å4!4+ƒÃÅ4:4>ÊB…ÀŒNŒOÅ@ @ÇT TŠPÅ@@„Š‚jÅ@#@%„ŠŠŠŠÿ¤@) ™aŒOŒOPÅ@@‚jÅ@#@%ŒPÅ@@ƒÃÅ@1@5ËB…Á‚i†7ÅG GÇ ŠPÅGG „Š‚jÅG$G&„ŠŠŠŠÿ¤@) ™a†7†7PÅGG ‚jÅG$G&‚mÅGGƒÃÅG0G4ÌB…‚u†)ÅM MÇ# #ŠPÅMM „#ŠŠÿ¤@) ™a†)†)PÅMM ÍÅMMÎB…ÌیÜÅR RÇ5 5ŠPÅRR„Šÿ¤D€œ …2aQ) ™aŒÜŒÜPÅRRÏB…Ä‚sƒ8Å] ]Ç ŠPÅ]]!„ŠŠÿ¤@) ™aƒ8ƒ8PÅ]]!‚hÅ]]ƒÃÅ].]2ÐB…ÅABÅl lÇ!!Š‚oÅl l#„Š‚pÅl'l*„ŠŠŠŠÿ¤@) ™aBB‚oÅl l#‚pÅl'l*‚hÅllˆ Ål7l<ˆ ÅlIlNÑB…ƃ;ƒ:Åv vÇ))Š PÅvv„Š Š Š ÿ¤@) ™aƒ:ƒ:PÅvv‚hÅvvƒÃÅv,v0ÒB…ÇGHÅ€ €Çn nŠ PÅ€"€$„Š Š ÿ¤@) ™aHHPÅ€"€$‚hÅ€€ ƒÃÅ€1€5ÓB…È‚gŒDÅ€‰ €‰ÇA AŠ PÅ€‰€‰!„Š Š Š ÿ¤@) ™aŒDŒDPÅ€‰€‰!‚hÅ€‰€‰ƒÃÅ€‰.€‰2ÔB…ɇQ‡RÅ€– €–Ç€’ €’Š PÅ€–€–„Š ZÅ€–€–„Š Š Š Š Š Š ÿ¤@) ™a‡R‡RPÅ€–€–ZÅ€–€–\Å€–€–$]Å€–A€–FƒÃÅ€–Q€–UÕB…ÊÖ×Å€¢ €¢Ç€­ €­Š‚oÅ€¢€¢„Š‚pÅ€¢€¢„ŠZÅ€¢€¢ „ŠŠŠŠŠŠŠŠÿ¤@) ™a×ׂoÅ€¢€¢‚pÅ€¢€¢ZÅ€¢€¢ \Å€¢$€¢*]Å€¢O€¢Tˆ Å€¢_€¢dˆ Å€¢q€¢vØB…ˇT‡UÅ€¬ €¬Ç€¾ €¾ŠPÅ€¬€¬„ŠZÅ€¬€¬„ŠŠŠŠŠŠÿ¤@) ™a‡U‡UPÅ€¬€¬ZÅ€¬€¬\Å€¬"€¬(ƒÃÅ€¬E€¬I]Å€¬U€¬ZÙB…ÌÚÛÅ€¸ €¸Ç€ù€ùŠ‚oÅ€¸€¸„Š‚pÅ€¸€¸„ŠZÅ€¸€¸$„ŠŠŠŠŠŠŠŠÿ¤@) ™aÛÛ‚oÅ€¸€¸‚pÅ€¸€¸ZÅ€¸€¸$\Å€¸(€¸.ˆ Å€¸S€¸Xˆ Å€¸e€¸j]Å€¸w€¸|ÜB…Í‚r†<ŀà €ÃÇ ŠPŀÀÃ!„ŠŠÿ¤@) ™a†<†<PŀÀÃ!‚hŀÀÃÃÅ€Ã.€Ã2ÝB…ÎLMÅ€Ò €ÒÇ Š‚oÅ€Ò €Ò#„Š‚pÅ€Ò'€Ò*„ŠŠŠŠÿ¤@) ™aMM‚oÅ€Ò €Ò#‚pÅ€Ò'€Ò*‚hÅ€Ò€Òˆ Å€Ò7€Ò<ˆ Å€ÒI€ÒNÞB…σAƒ@Å€Ú €ÚÇ8 8ŠPÅ€Ú€Ú„ŠŠÿ¤@) ™aƒ@ƒ@PÅ€Ú€ÚƒÃÅ€Ú€ÚßB…Ђd†9Å€á €áÇZ ZŠPÅ€á4€á6„ŠŠÿ¤@) ™a†9†9PÅ€á4€á6†BÅ€á€á†:Å€á €á+àB…ÑÅ€ç €çÇ> >ŠPÅ€ç€ç„Šÿ¤@) ™aPÅ€ç€çƒÃÅ€ç€çáB…Ò‚f†.Å€í €íÇ, ,ŠPÅ€í€í„ŠŠÿ¤@) ™a†.†.PÅ€í€í‚wÅ€í€íƒÃÅ€í)€í-âB…ÓZ[Å€õ €õÇe eŠ‚oÅ€õ€õ„Š‚pÅ€õ"€õ%„ŠŠŠŠÿ¤@) ™a[[‚oÅ€õ€õ‚pÅ€õ"€õ%‚wÅ€õ€õˆ Å€õ2€õ7ˆ Å€õD€õIãB…Ô‚v†1Å€ü €üÇW WŠPÅ€ü"€ü$„ŠŠÿ¤@) ™a†1†1PÅ€ü"€ü$‚wÅ€ü€üƒÃÅ€ü1€ü5äB…ÕåæÅ Ço oŠ ‚oÅ#&„Š!‚pÅ*-„Š Š!Š Š!ÿ¤@) ™aææ‚oÅ#&‚pÅ*-‚wň Å:?ˆ ÅLQçB…Ö†B†CÅ Ç Š"PÅ  „Š"ÿ¤@) ™a†C†CPÅ  ƒÃÅ  èB…ׂl†3Å Ç& &Š#PÅ„Š$‚jÅ "„Š#Š$Š#Š$ÿ¤@) ™a†3†3PÅ‚jÅ "‚mŃÃÅ'+éB…Ø‚n_Šǀ €Š%‚oÅ„Š&‚pÅ"%„Š'‚jÅ)+„Š%Š&Š'Š%Š&Š'ÿ¤@) ™a__‚oÅ‚pÅ"%‚jÅ)+‚mň Å05ˆ ÅBGêB…ÙëìÅ& &Ç Š(‚oÅ&&„Š)‚pÅ&"&%„Š*‚zÅ&)&,„Š+‚jÅ&0&2„Š(Š)Š*Š+Š(Š)Š*Š+ÿ¤@) ™aìì‚oÅ&&‚pÅ&"&%‚zÅ&)&,‚jÅ&0&2‚mÅ&&ˆ Å&7&<ˆ Å&I&NíÅ&[&`îB…Ú‚q†5Å/ /Ç) )Š,PÅ/"/$„Š-‚jÅ/(/*„Š,Š-Š,Š-ÿ¤@) ™a†5†5PÅ/"/$‚jÅ/(/*‚mÅ//ƒÃÅ///3ïB…ÛðñÅ7 7Ç€Š €ŠŠ.‚oÅ7#7&„Š/‚pÅ7*7-„Š0‚jÅ7173„Š.Š/Š0Š.Š/Š0ÿ¤@) ™aññ‚oÅ7#7&‚pÅ7*7-‚jÅ7173‚mÅ77ˆ Å787=ˆ Å7J7OòB…܇݇ÞÅ@@Ç~~Š1PÅ@5@7„ Š1Š1ÿ„@) ™a‡Þ‡ÞPÅ@5@7ƒÃÅ@@!óB…Ý‚÷‚öÅJJÇŠ2PÅJ)J+„Š3‚jÅJNJP„ Š2Š3Š2Š2ÿ„@) ™a‚ö‚öPÅJ)J+‚jÅJNJP‚‡ÅJJ'ƒÃÅJ6J:ôB…Þ‡à‡áÅSSÇ„„Š4PÅS5S7„ Š4Š4ÿ„@) ™a‡á‡áPÅS5S7ƒÃÅSS!õB…ß‚ó‚òÅ]]LJ‡Š5PÅ])]+„Š6‚jÅ]N]P„ Š5Š6Š5Š5ÿ„@) ™a‚ò‚òPÅ])]+‚jÅ]N]P‚‡Å]]'ƒÃÅ]6]:öB…àƒDfÅd dÇDDŠ7PÅdd„Š7Š7ÿ¤@) ™affPÅddƒÃÅdd€ÃÅd!d&÷B…á‚}Åj jÇ/ /Š8PÅjj„Š8Š8ÿ¤@) ™aPÅjj‚ˆÅjjøB…âÅp pÇh hŠ9PÅpp „#Š9Š9ÿ¤@) ™aPÅpp #ÅppùB…ã‚kŒFÅz zÇD DŠ:PÅz"z$„Š:Š:Š:Š:ÿ¤@) ™aŒFŒFPÅz"z$‚hÅzz ƒÃÅz1z5úB…äklÅ„ „Ç88Š;PÅ„„„Š<‚jÅ„!„#„Š;Š<Š;Š<ÿ¤@) ™allPÅ„„‚jÅ„!„#ŒPÅ„„ƒÃÅ„/„3ûB…傃üÅŒ ŒÇ“ “Š=PÅŒ4Œ6„Š=Š=ÿ¤@) ™aüüPÅŒ4Œ6‚„ÅŒŒƒÃÅŒ/Œ3ýB…æqrÅš šÇ€ž €žŠ>PÅšš!„Š>Š>Š>Š>Š>ÿ¤@) ™arrPÅšš!sÅššƒÃÅš2š6þB…çÿŽŦ ¦ǀΠ€ÎŠ?PŦ#¦%„Š?Š?Š?Š?Š?ÿ¤@) ™aŽŽPŦ#¦%sŦ¦!ƒÃŦ6¦:ŽB…è†?†@Å­ ­Ç` `Š@PÅ­,­.„Š@Š@ÿ¤@) ™a†@†@PÅ­,­.^Å­­ŽÅ­$­+ŽB…é‚tŽų ³Ç ŠAPų³„ŠAŠAÿ¤@) ™aŽŽPų³ƒÃų³ŽB…êŒRŒž ¾Ç€¤ €¤ŠBPž¾„ŠCZž¾„ŠCŠBŠCŠCŠBŠCÿ¤@) ™aŒŒPž¾Zž¾\ž¾%]žB¾GƒÃžR¾VŽB…ëŽŽÅÆ ÆÇ€à €àŠDPÅÆÆ„ŠEZÅÆÆ„ŠDŠEŠEŠDŠEŠEÿ¤@) ™aŽŽPÅÆÆZÅÆÆ\ÅÆ"Æ(ƒÃÅÆEÆI]ÅÆUÆZŽ B…삎 ÅÏ ÏÇS SŠFPÅÏ Ï"„ŠFŠFŠFŠFÿ¤@) ™aŽ Ž PÅÏ Ï"‰œÅÏσÃÅÏ4Ï8Ž B…í‚ÿ‚þÅØ ØÇV VŠGPÅØ Ø"„ŠH‚†ÅØLØP„ ŠGŠHŠGŠGÿ¤@) ™a‚þ‚þPÅØ Ø"‚†ÅØLØP‚‡ÅØØƒÃÅØ/Ø3Ž B…îyzÅà àÇ_ _ŠIPÅà/à1„ ŠIŠIÿ¤@) ™azzPÅà/à1ƒÃÅààŽ B…ï}~ÅææÇxxŠJPÅç)ç*„ŠJƒ"ŠJŠJŠJŠJƒ#ŠJŠJŠJÿ„@) ™a~~PÅç)ç*ƒÃÅææŽB…ðƒMƒLÅïïÇ{{ŠKPÅï'ï)„ŠL‚jÅð)ð*„ŠLƒ"ŠLŠLŠLŠLƒ#ŠLŠKŠLŠKŠLÿ„@) ™aƒLƒLPÅï'ï)‚jÅð)ð*‚‡Åïï%ƒÃÅï4ï8ŽB…ñŒÒÁÅù ùÇ; ;ŠMPÅùù„ŠMŠMÿ¤@) ™aÁÁPÅùùƒÃÅùùŽB…ò‚~‡_Åÿ ÿÇ2 2ŠNPÅÿÿ„ŠNŠNÿ¤@) ™a‡_‡_PÅÿÿƒÃÅÿÿŽB…óÅ‚ ‚Çk kŠOPÅ‚‚„ŠO#ŠOÿ¤@) ™aPÅ‚‚ƒÃÅ‚‚ŽB…ôЋł ‚Ç//ŠPPÅ‚‚ „ŠQ‚jÅ‚$‚&„ŠPŠQŠPŠQÿ¤@) ™a‹‹PÅ‚‚ ‚jÅ‚$‚&ŒPÅ‚‚ƒÃÅ‚2‚6ŽB…õ…ŒÄÅ‚ ‚Ç,,ŠRPÅ‚ ‚"„ŠRŠRŠRÿ¤@) ™aŒÄŒÄPÅ‚ ‚"‚hÅ‚‚ƒÃÅ‚/‚3ŽB…ö‡ˆÅ‚! ‚!Çs sŠSPÅ‚!%‚!'„ŠSŠSÿ¤@) ™aˆˆPÅ‚!%‚!'‚hÅ‚!‚!#ƒÃÅ‚!4‚!8ŽB…÷‚xŽÅ‚' ‚'ÇG GŠT‚oÅ‚'‚'„ŠU‚pÅ‚'‚'"„ŠTŠUŠTŠUÿ¤@) ™aŽŽ‚oÅ‚'‚'‚pÅ‚'‚'"ƒÃÅ‚'‚'ŽB…ø‚yŽÅ‚- ‚-ÇJ JŠV‚oÅ‚-‚-„ŠW‚pÅ‚- ‚-#„ŠX‚zÅ‚-&‚-)„ŠVŠWŠXŠVŠWŠXÿ¤@) ™aŽŽ‚oÅ‚-‚-‚pÅ‚- ‚-#‚zÅ‚-&‚-)ƒÃÅ‚-‚-ŽB…ù‚{•Å‚4 ‚4ÇM MŠY‚oÅ‚4‚4„ŠZ‚pÅ‚4)‚4,„ŠYŠZŠYŠZÿ¤@) ™a••‚oÅ‚4‚4‚pÅ‚4)‚4,ˆ Å‚4‚4ˆ Å‚4#‚4(ŽB…ú‚|—Å‚< ‚<ÇP PŠ[‚oÅ‚<‚<„Š\‚pÅ‚<*‚<-„Š]‚zÅ‚<<‚E†Ž?Ž@Ž/P PŽ1~ ~ŠlPŽ/PP„ŠlŠlÿ¤@) ™aŽ@Ž@PŽ/PP‚ˆŽ/PPŽAE†‹ŒbŽ/W WŽ14 4ŠmPŽ/W'W)„ŠmŠmÿ¤@) ™aŒbŒbPŽ/W'W)^Ž/WWŽ/W!W&ŽBE† Š‹Ž/` `Ž1 ŠnPŽ/`` „Šo‚jŽ/`$`&„ŠnŠoŠnŠoÿ¤@) ™a‹‹PŽ/`` ‚jŽ/`$`&ŒPŽ/``‚ˆŽ/`2`7ŽCE† ŽDŽEŽ/h hŽ1‚› ‚›ŠpPŽ/hh„ŠpŠpÿ¤@) ™aŽEŽEPŽ/hhŽ/hhŽ:Ž/h!h,^Ž/h4h9Ž/hAhFŽFE† klŽ/s sŽ1 ŠqPŽ/ss„Šr‚jŽ/s!s#„ŠqŠrŠqŠrÿ¤@) ™allPŽ/ss‚jŽ/s!s#ŒPŽ/ss‚ˆŽ/s/s4ŽGE† ŒNŒOŽ/| |Ž1 ŠsPŽ/||„Št‚jŽ/|#|%„ŠsŠtŠsŠtÿ¤@) ™aŒOŒOPŽ/||‚jŽ/|#|%ŒPŽ/||‚ˆŽ/|1|6ŽHE† ŒÛŒÜŽ/€ €Ž1B BŠuPŽ/€€„Šuÿ¤D€œ …2aQ) ™aŒÜŒÜPŽ/€€ŽIE†‚sƒ8Ž/€Œ €ŒŽ1€á €áŠvPŽ/€Œ€Œ!„ŠvŠvÿ¤@) ™aƒ8ƒ8PŽ/€Œ€Œ!‚hŽ/€Œ€Œ‚ˆŽ/€Œ.€Œ3ŽJE†ABŽ/€š €šŽ1€è €èŠw‚oŽ/€š €š#„Šx‚pŽ/€š'€š*„ŠwŠxŠwŠxÿ¤@) ™aBB‚oŽ/€š €š#‚pŽ/€š'€š*‚hŽ/€š€šŽ2Ž/€š7€š=Ž3Ž/€šG€šMŽKE†‚gŒDŽ/€¢ €¢Ž1# #ŠyPŽ/€¢€¢!„ŠyŠyŠyÿ¤@) ™aŒDŒDPŽ/€¢€¢!‚hŽ/€¢€¢‚ˆŽ/€¢.€¢3ŽLE†ƒ;ƒ:Ž/€¬ €¬Ž16 6ŠzPŽ/€¬€¬„ŠzŠzŠzÿ¤@) ™aƒ:ƒ:PŽ/€¬€¬‚hŽ/€¬€¬‚ˆŽ/€¬,€¬1ŽME†GHŽ/€· €·Ž1‚" ‚"Š{PŽ/€·"€·$„Š{Š{ÿ¤@) ™aHHPŽ/€·"€·$‚hŽ/€·€· ‚ˆŽ/€·1€·6ŽNE†‚r†<Ž/€Â €ÂŽ1€ò €òŠ|PŽ/€Â€Â!„Š|Š|ÿ¤@) ™a†<†<PŽ/€Â€Â!‚hŽ/€Â€Â‚ˆŽ/€Â.€Â3ŽOE†LMŽ/€Ò €ÒŽ1€ù €ùŠ}‚oŽ/€Ò €Ò#„Š~‚pŽ/€Ò'€Ò*„Š}Š~Š}Š~ÿ¤@) ™aMM‚oŽ/€Ò €Ò#‚pŽ/€Ò'€Ò*‚hŽ/€Ò€ÒŽ2Ž/€Ò7€Ò=Ž3Ž/€ÒG€ÒMŽPE†‡Q‡RŽ/€Ü €ÜŽ1 ŠPŽ/€Ü€Ü„Š€ZŽ/€Ü€Ü„Š€ŠŠ€Š€ŠŠ€ÿ¤@) ™a‡R‡RPŽ/€Ü€ÜZŽ/€Ü€Ü\Ž/€Ü€Ü$]Ž/€ÜA€ÜF‚ˆŽ/€ÜQ€ÜVŽQE†‡T‡UŽ/€æ €æŽ1‹ ‹ŠPŽ/€æ€æ„Š‚ZŽ/€æ€æ„ŠŠ‚Š‚ŠŠ‚Š‚ÿ¤@) ™a‡U‡UPŽ/€æ€æZŽ/€æ€æ\Ž/€æ"€æ(‚ˆŽ/€æE€æJ]Ž/€æS€æXŽRE†Ö׎/€ô €ôŽ1¢ ¢Šƒ‚oŽ/€ô€ô„Š„‚pŽ/€ô€ô„Š…ZŽ/€ô€ô „Š…ŠƒŠ„Š…Š…ŠƒŠ„Š…ÿ¤@) ™a×ׂoŽ/€ô€ô‚pŽ/€ô€ôZŽ/€ô€ô \Ž/€ô%€ô+]Ž/€ôP€ôUŽ2Ž/€ô`€ôfŽ3Ž/€ôp€ôvŽSE†ÚÛŽ/ Ž1– –І‚oŽ/„Ї‚pŽ/„ŠˆZŽ/$„ІЇŠˆŠˆІЇŠˆŠˆÿ¤@) ™aÛÛ‚oŽ/‚pŽ/ZŽ/$\Ž/(.Ž2Ž/SYŽ3Ž/ci]Ž/sxŽTE†‚ fŽ/ Ž1‚“ ‚“ЉPŽ/„ЉЉÿ¤@) ™affPŽ/‚ˆŽ/€ÃŽ/$ŽUE†‚d†9Ž/Ž1,,ŠŠPŽ/:<„ŠŠŠŠÿ„@) ™a†9†9PŽ/:<^Ž/†:Ž/&1ŽVE†ŽWŽXŽ/ Ž1/ /Š‹PŽ/%'„Š‹ÿ¤@) ™aŽXŽXPŽ/%'^Ž/ŽYE†Ž/ Ž1= =ŠŒPŽ/„ŠŒÿ¤@) ™aPŽ/‚ˆŽ/ŽZE†‚f†.Ž/!!Ž1€“€“ŠPŽ/!!!#„ŠŠÿ„@) ™a†.†.PŽ/!!!#‚wŽ/!!‚ˆŽ/!0!5Ž[E†Z[Ž/+ +Ž1€£ €£ŠŽ‚oŽ/++„Š‚pŽ/+"+%„ŠŽŠŠŽŠÿ¤@) ™a[[‚oŽ/++‚pŽ/+"+%‚wŽ/++Ž2Ž/+2+8Ž3Ž/+B+HŽ\E†‚v†1Ž/2 2Ž1€Å €ÅŠPŽ/2"2$„ŠŠÿ¤@) ™a†1†1PŽ/2"2$‚wŽ/22‚ˆŽ/2126Ž]E† åæŽ/< <Ž1€Í €ÍŠ‘‚oŽ/<#<&„Š’‚pŽ/<*<-„БВБВÿ¤@) ™aææ‚oŽ/<#<&‚pŽ/<*<-‚wŽ/<<Ž2Ž/<:<@Ž3Ž/Ž3Ž/bHbNŽbE†%‚q†5Ž/k kŽ1€× €×ŠœPŽ/k"k$„Š‚jŽ/k(k*„ŠœŠŠœŠÿ¤@) ™a†5†5PŽ/k"k$‚jŽ/k(k*‚mŽ/kk‚ˆŽ/k/k4ŽcE†&‡Ý‡ÞŽ/ttŽ1‚c‚cŠžPŽ/t4t6„ ŠžŠžÿ„@) ™a‡Þ‡ÞPŽ/t4t6‚ˆŽ/tt"ŽdE†'‚÷‚öŽ/~~Ž1‚n‚nŠŸPŽ/~(~*„Š ‚jŽ/~K~M„ ŠŸŠ ŠŸŠŸÿ„@) ™a‚ö‚öPŽ/~(~*‚jŽ/~K~M‚‡Ž/~~&‚ˆŽ/~5~:ŽeE†(‡à‡áŽ/‡‡Ž1‚J‚JŠ¡PŽ/‡4‡6„ ССÿ„@) ™a‡á‡áPŽ/‡4‡6‚ˆŽ/‡‡"ŽfE†)‚ó‚òŽ/‘‘Ž1‚U‚UŠ¢PŽ/‘(‘*„Š£‚jŽ/‘K‘M„ ТУТТÿ„@) ™a‚ò‚òPŽ/‘(‘*‚jŽ/‘K‘M‚‡Ž/‘‘&‚ˆŽ/‘5‘:ŽgE†*Ž/— —Ž1€ €ФPŽ/——„ФФÿ¤@) ™aPŽ/——ƒÃŽ/——ŽhE†+Ž/ Ž1‚ ‚Š¥PŽ/ „#ХХÿ¤@) ™aPŽ/ #Ž/ŽiE†,‚kŒFŽ/§ §Ž1, ,ЦPŽ/§"§$„ЦЦЦЦÿ¤@) ™aŒFŒFPŽ/§"§$‚hŽ/§§ ‚ˆŽ/§1§6ŽjE†-‚ƒüŽ/¯ ¯Ž1‚5 ‚5ЧPŽ/¯5¯7„ЧЧÿ¤@) ™aüüPŽ/¯5¯7‚„Ž/¯¯‚ˆŽ/¯/¯4ŽkE†.qrŽ/º ºŽ1× ×ЍPŽ/ºº!„ЍЍЍЍЍÿ¤@) ™arrPŽ/ºº!sŽ/ºº‚ˆŽ/º2º7ŽlE†/ÿŽŽ/Å ÅŽ1ä 䊩PŽ/Å#Å%„ЩЩЩЩЩÿ¤@) ™aŽŽPŽ/Å#Å%sŽ/ÅÅ!‚ˆŽ/Å6Å;ŽmE†0‚tŽŽ/Ë ËŽ1x xŠªPŽ/ËË„ŠªŠªÿ¤@) ™aŽŽPŽ/ËË‚ˆŽ/ËËŽnE†1ŒRŒŽ/Ó ÓŽ1Ë ËŠ«PŽ/ÓÓ„ЬZŽ/ÓÓ„ЬŠ«ЬЬŠ«Ьÿ¤@) ™aŒŒPŽ/ÓÓZŽ/ÓÓ\Ž/ÓÓ$]Ž/ÓAÓF‚ˆŽ/ÓQÓVŽoE†2ŽŽŽ/Û ÛŽ1Ñ ÑŠ­PŽ/ÛÛ„Š®ZŽ/ÛÛ„Š­Š®Š®Š­Š®Š®ÿ¤@) ™aŽŽPŽ/ÛÛZŽ/ÛÛ\Ž/Û"Û(‚ˆŽ/ÛEÛJ]Ž/ÛSÛXŽpE†3‚©ŽqŽ/â âŽ1‚— ‚—НPŽ/ââ„ННÿ¤@) ™aŽqŽqPŽ/â₈Ž/ââ€ÃŽ/ââ$Ž/â,â1ŽrE†4ŽsŽtŽ/ë ëŽ1‚† ‚†аPŽ/ëë„ааÿ¤@) ™aŽtŽtPŽ/ë낈Ž/ëëŽuŽ/ëë)^Ž/ë1ë6ŽvE†5yzŽ/ô ôŽ1‚ ‚бPŽ/ô*ô,„ ббÿ¤@) ™azzPŽ/ô*ô,‚ˆŽ/ôôŽwE†6‚ÿ‚þŽ/ÿ ÿŽ1‚ ‚ вPŽ/ÿ ÿ"„ゆŽ/ÿGÿK„ вгввÿ¤@) ™a‚þ‚þPŽ/ÿ ÿ"‚†Ž/ÿGÿK‚‡Ž/ÿÿ‚ˆŽ/ÿ/ÿ4ŽxE†7‚Ž Ž/‚ ‚ Ž1‚ ‚Š´PŽ/‚ ‚ "„Š´Š´Š´Š´ÿ¤@) ™aŽ Ž PŽ/‚ ‚ "‰œŽ/‚ ‚ ‚ˆŽ/‚ 4‚ 9ŽyE†8ŽzŽ{Ž/‚ ‚Ž1ù ùеPŽ/‚'‚)„悆Ž/‚N‚R„ ежеÿ¤@) ™aŽ{Ž{PŽ/‚'‚)‚†Ž/‚N‚R‚‡Ž/‚‚%‚ˆŽ/‚6‚;Ž|E†9Ž}Ž~Ž/‚ ‚Ž1ë 늷PŽ/‚'‚)„Š·Š·Š·ÿ¤@) ™aŽ~Ž~PŽ/‚'‚)‰œŽ/‚‚%‚ˆŽ/‚;‚@ŽE†:Ž€ŽŽ/‚! ‚!Ž1þ þЏPŽ/‚!1‚!3„ Џÿ¤@) ™aŽŽPŽ/‚!1‚!3‚ˆŽ/‚!‚!Ž‚E†;}~Ž/‚'‚'Ž1‚:‚:йPŽ/‚(&‚('„йƒ"ййййƒ#йййÿ„@) ™a~~PŽ/‚(&‚('‚ˆŽ/‚'‚' ŽƒE†<ƒMƒLŽ/‚1‚1Ž1‚B‚BŠºPŽ/‚1)‚1+„Š»‚jŽ/‚2(‚2)„Š»ƒ"ллллƒ#Š»ŠºŠ»ŠºŠ»ÿ„@) ™aƒLƒLPŽ/‚1)‚1+‚jŽ/‚2(‚2)‚‡Ž/‚1‚1'‚ˆŽ/‚16‚1;Ž„E†=‡a‡bŽ/‚9 ‚9Ž1€ˆ €ˆмPŽ/‚9‚9„ммÿ¤@) ™a‡b‡bPŽ/‚9‚9‚ˆŽ/‚9‚9Ž…E†>Ž/‚? ‚?Ž1‚ ‚нPŽ/‚?‚?„н#нÿ¤@) ™aPŽ/‚?‚?‚ˆŽ/‚?‚?ކE†?…ŒÄŽ/‚G ‚GŽ1> >оPŽ/‚G ‚G"„оооÿ¤@) ™aŒÄŒÄPŽ/‚G ‚G"‚hŽ/‚G‚G‚ˆŽ/‚G/‚G4އE†@‡ˆŽ/‚O ‚OŽ1‚. ‚.Š¿PŽ/‚O&‚O(„Š¿Š¿ÿ¤@) ™aˆˆPŽ/‚O&‚O(‚hŽ/‚O‚O$‚ˆŽ/‚O5‚O:ŽˆE†A‚xŽŽ/‚U ‚UŽ1^ ^ŠÀ‚oŽ/‚U‚U„ŠÁ‚pŽ/‚U ‚U#„ŠÀŠÁŠÀŠÁÿ¤@) ™aŽŽ‚oŽ/‚U‚U‚pŽ/‚U ‚U#‚ˆŽ/‚U‚UމE†B‚yŽŽ/‚[ ‚[Ž1j jŠÂ‚oŽ/‚[‚[„ŠÃ‚pŽ/‚[!‚[$„ŠÄ‚zŽ/‚['‚[*„ŠÂŠÃŠÄŠÂŠÃŠÄÿ¤@) ™aŽŽ‚oŽ/‚[‚[‚pŽ/‚[!‚[$‚zŽ/‚['‚[*‚ˆŽ/‚[‚[ŽŠE†C‚{•Ž/‚d ‚dŽ1F FŠÅ‚oŽ/‚d‚d„ŠÆ‚pŽ/‚d(‚d+„ŠÅŠÆŠÅŠÆÿ¤@) ™a••‚oŽ/‚d‚d‚pŽ/‚d(‚d+Ž2Ž/‚d‚dŽ3Ž/‚d!‚d'Ž‹E†D‚|—Ž/‚n ‚nŽ1Q QŠÇ‚oŽ/‚n‚n„ŠÈ‚pŽ/‚n)‚n,„ŠÉ‚zŽ/‚n9‚n<„ŠÇŠÈŠÉŠÇŠÈŠÉÿ¤@) ™a——‚oŽ/‚n‚n‚pŽ/‚n)‚n,‚zŽ/‚n9‚n<Ž2Ž/‚n‚nŽ3Ž/‚n"‚n(ŽŒŽ/‚n2‚n8ŽE#‹¡Ž/‚s‚s#ŽŽ9Ž.b$$Ê Ö EM†EŒNŒOŽ/‚‚Ž1‚©‚©ŠÊPŽ/‚!‚#„ŠË‚jŽ/‚'‚)„ŠÊŠËŠÊŠËÿ¤@) ™aŒOŒOPŽ/‚!‚#‚jŽ/‚'‚)ŒPŽ/‚‚‚ˆŽ/‚5‚:ŽF†F‚i†7Ž/‚‰‚‰Ž1‚ǂNJÌPŽ/‚‰#‚‰%„ŠÍ‚jŽ/‚‰)‚‰+„ŠÌŠÍŠÌŠÍÿ¤@) ™a†7†7PŽ/‚‰#‚‰%‚jŽ/‚‰)‚‰+‚mŽ/‚‰‚‰!‚ˆŽ/‚‰2‚‰7ŽF†G‚l†3Ž/‚”‚”Ž1‚ЂЊÎPŽ/‚”‚”!„ŠÏ‚jŽ/‚”%‚”'„ŠÎŠÏŠÎŠÏÿ¤@) ™a†3†3PŽ/‚”‚”!‚jŽ/‚”%‚”'‚mŽ/‚”‚”‚ˆŽ/‚”,‚”1Ž‘F†H‚q†5Ž/‚ ‚ Ž1‚قيÐPŽ/‚ &‚ („ŠÑ‚jŽ/‚ ,‚ .„ŠÐŠÑŠÐŠÑÿ¤@) ™a†5†5PŽ/‚ &‚ (‚jŽ/‚ ,‚ .‚mŽ/‚ ‚ ‚ˆŽ/‚ 3‚ 8Ž’F†I‚f†.Ž/‚©‚©Ž1‚ã‚ãŠÒPŽ/‚©‚©!„ŠÒŠÒÿ¤@) ™a†.†.PŽ/‚©‚©!‚wŽ/‚©‚©‚ˆŽ/‚©.‚©3Ž“F†J‚v†1Ž/‚³‚³Ž1‚è‚èŠÓPŽ/‚³&‚³(„ŠÓŠÓÿ¤@) ™a†1†1PŽ/‚³&‚³(‚wŽ/‚³‚³‚ˆŽ/‚³5‚³:Ž”F†K‚d†9Ž/‚½‚½Ž1‚î‚îŠÔPŽ/‚½8‚½:„ŠÔŠÔÿ¤@) ™a†9†9PŽ/‚½8‚½:^Ž/‚½‚½†:Ž/‚½$‚½/Ž•F†L‚kŒFŽ/‚ɂɎ1‚ô‚ôŠÕPŽ/‚É'‚É)„ŠÕŠÕŠÕŠÕÿ¤@) ™aŒFŒFPŽ/‚É'‚É)‚hŽ/‚É‚É%‚ˆŽ/‚É6‚É;Ž–F$Ž—Ž˜€ €$- ¢a ? ‚a+Ž™9ò%%Ö ß MV †M‹ŒbŽ˜€‹ €‹Žš€ €ŠÖPŽ˜€‹X€‹Z„ŠÖ€ìŠÖÿ¤@) ™aŒbŒbPŽ˜€‹X€‹ZŽ›Ž˜€‹€‹ŽœŽ˜€‹#€‹*ŽŽ˜€‹2€‹9ŽžŽ˜€‹A€‹HŽŽ˜€‹P€‹WŽŸG†N‚d†9Ž˜€• €•Žš€š €šŠ×PŽ˜€•y€•{„Š×€ìŠ×ÿ¤@) ™a†9†9PŽ˜€•y€•{Ž›Ž˜€•€•ŽœŽ˜€•!€•(ŽŽ˜€•0€•7ŽžŽ˜€•@€•G†:Ž˜€•P€•[Ž G†OŽ›Ž¡Ž˜€› €›Žš| |ŠØPŽ˜€›€›„€ìŠØÿ¤@) ™aޡޡPŽ˜€›€›‚ˆŽ˜€›€›Ž¢G†PŽœŽ£Ž˜€¡ €¡Žš ŠÙPŽ˜€¡€¡„€ìŠÙÿ¤@) ™aޣޣPŽ˜€¡€¡‚ˆŽ˜€¡€¡ޤG†QŽŽ¥Ž˜€§ €§Žš€‚ €‚ŠÚPŽ˜€§€§„€ìŠÚÿ¤@) ™aޥޥPŽ˜€§€§‚ˆŽ˜€§€§ަG†RŽžާŽ˜€­ €­Žš€… €…ŠÛPŽ˜€­€­„€ìŠÛÿ¤@) ™aާާPŽ˜€­€­‚ˆŽ˜€­€­ލG†SŽWŽXŽ˜€¶ €¶Žš€ˆ €ˆŠÜPŽ˜€¶V€¶X„€ìŠÜÿ¤@) ™aŽXŽXPŽ˜€¶V€¶XŽ›Ž˜€¶€¶ŽœŽ˜€¶'€¶.ŽŽ˜€¶6€¶=ŽžŽ˜€¶F€¶MŽ©G†T‚ fŽ˜€À €ÀŽš€¥ €¥ŠÝPŽ˜€À€À„€ìŠÝŠÝÿ¤@) ™affPŽ˜€À€À‚ˆŽ˜€À€ÀŠŽ˜€À"€À(ŠŽ˜€À0€À6Š Ž˜€À>€ÀDŠ Ž˜€ÀL€ÀRŽªG†U‚©ŽqŽ˜€Ë €ËŽš€¨ €¨ŠÞPŽ˜€Ë€Ë„€ìŠÞŠÞÿ¤@) ™aŽqŽqPŽ˜€Ë€Ë‚ˆŽ˜€Ë€ËŠŽ˜€Ë"€Ë(ŠŽ˜€Ë0€Ë6Š Ž˜€Ë>€ËDŠ Ž˜€ËL€ËRŽ˜€ËZ€Ë_Ž«G%Ž¬Ž˜ %- ¢a ? ‚a+Ž­93&&ß í Vb †V‹ŒbŽ˜ Žš6 6ŠßPŽ˜ I K„Šß€ëŠßÿ¤@) ™aŒbŒbPŽ˜ I KŽ›Ž˜  ŽœŽ˜ # *ŽŽ˜ 2 9ŽŽ˜ A HŽ®H†W‚d†9Ž˜) )Žš? ?ŠàPŽ˜)b)d„Šà€ëŠàÿ¤@) ™a†9†9PŽ˜)b)dŽ›Ž˜))ŽœŽ˜)!)(ŽŽ˜)0)7†:Ž˜)@)KޝH†X‚ fŽ˜2 2Žš) )ŠáPŽ˜22„€ëŠáŠáÿ¤@) ™affPŽ˜22‚ˆŽ˜22ŠŽ˜2!2'ŠŽ˜2/25Š Ž˜2=2CްH†Y‚f†.Ž˜8 8ŽšH HŠâPŽ˜88„Šâ€ëŠâÿ¤@) ™a†.†.PŽ˜88‚wŽ˜88‚ˆŽ˜8)8.ޱH†Z‚v†1Ž˜? ?Žš` `ŠãPŽ˜?0?2„Šã€ëŠãÿ¤@) ™a†1†1PŽ˜?0?2‚wŽ˜??‚ˆŽ˜???D޲H†[Ž›Ž¡Ž˜E EŽš ŠäPŽ˜EE„€ëŠäÿ¤@) ™aޡޡPŽ˜EE‚ˆŽ˜EE޳H†\ŽœŽ£Ž˜K KŽš# #ŠåPŽ˜KK„€ëŠåÿ¤@) ™aޣޣPŽ˜KK‚ˆŽ˜KKŽ´H†]ŽŽ¥Ž˜Q QŽš& &ŠæPŽ˜QQ„€ëŠæÿ¤@) ™aޥޥPŽ˜QQ‚ˆŽ˜QQ޵H†^‚l†3Ž˜\ \ŽšS SŠçPŽ˜\\„Šè‚jŽ˜\ \"„ŠçŠè€ëŠç€ëŠèÿ¤@) ™a†3†3PŽ˜\\‚jŽ˜\ \"‚mŽ˜\\‚ˆŽ˜\'\,޶H†_‚q†5Ž˜h hŽšk kŠéPŽ˜h0h2„Šê‚jŽ˜h6h8„ŠéŠê€ëŠé€ëŠêÿ¤@) ™a†5†5PŽ˜h0h2‚jŽ˜h6h8‚mŽ˜hh‚ˆŽ˜h=hBŽ·H†`‚©ŽqŽ˜r rŽš, ,ŠëPŽ˜rr„€ëŠëŠëÿ¤@) ™aŽqŽqPŽ˜rr‚ˆŽ˜rrŠŽ˜r!r'ŠŽ˜r/r5Š Ž˜r=rCŽ˜rKrPޏH†aŽWŽXŽ˜z zŽš/ /ŠìPŽ˜zFzH„€ëŠìÿ¤@) ™aŽXŽXPŽ˜zFzHŽ›Ž˜zzŽœŽ˜z'z.ŽŽ˜z6z=޹H&ŽºŽ» &- ¢a ? ‚a+޼9Ù ''í  bu†b޽޾Ž»( (Ž¿* *ŠíPŽ»((„€êŠíÿ¤@) ™a޾޾PŽ»((‚ˆŽ»((ŽÀI†cŽÁŽÂŽ»0 0Ž¿, ,ŠîPŽ»00„€êŠîÿ¤@) ™aŽÂŽÂPŽ»00‚ˆŽ»00ŽÃI†dŽ?Ž@Ž»; ;Ž¿€‚ €‚ŠïPŽ»;;„€êŠï€êŠïÿ¤@) ™aŽ@Ž@PŽ»;;‚ˆŽ»;;ŽÄI†eŽ7Ž8Ž»J JŽ¿€Ž €ŽŠðPŽ»JJ„€êŠð€êŠðÿ¤@) ™aŽ8Ž8PŽ»JJ#Ž»JJŽÅŽ»J"J.ŽÆŽ»J6JBŽ»JJJPŽÇŽ»JZJfŽÈŽ»JnJzޛ޻J€‚J€‰ŽœŽ»J€‘J€˜ŽÉI†f‚d†9Ž»U UŽ¿^ ^ŠñPŽ»UKUM„Šñ€êŠñÿ¤@) ™a†9†9PŽ»UKUMޛ޻UUŽœŽ»U!U(†:Ž»U0U;ŽÊI†g‹ŒbŽ»` `Ž¿Z ZŠòPŽ»`8`:„Šò€êŠòÿ¤@) ™aŒbŒbPŽ»`8`:ޛ޻``ŽœŽ»`#`*Ž»`2`7ŽËI†hŽWŽXŽ»j jŽ¿3 3ŠóPŽ»j7j9„€êŠóÿ¤@) ™aŽXŽXPŽ»j7j9ޛ޻jj ŽœŽ»j(j/ŽÌI†iŽÍŽÎŽ»y yŽ¿Q QŠôPŽ»yjyl„Šô€êŠôÿ¤@) ™aŽÎŽÎPŽ»yjyl޽޻yyŽÁŽ»y$y)ޛ޻y1y8ŽœŽ»y@yG†:Ž»yOyZŽÏI†jŽÐŽÑŽ»€† €†Ž¿I IŠõPŽ»€†Z€†\„Šõ€êŠõÿ¤@) ™aŽÑŽÑPŽ»€†Z€†\޽޻€†€†ŽÁŽ»€†&€†+ޛ޻€†3€†:ŽœŽ»€†B€†IŽŽ»€†Q€†XŽÒI†kŽÓŽÔŽ»€’ €’Ž¿9 9ŠöPŽ»€’V€’X„€êŠöÿ¤@) ™aŽÔŽÔPŽ»€’V€’X޽޻€’€’#ŽÁŽ»€’+€’0ޛ޻€’8€’?ŽœŽ»€’G€’NŽÕI†l‚f†.Ž»€š €šŽ¿b bŠ÷PŽ»€š€š„Š÷€êŠ÷ÿ¤@) ™a†.†.PŽ»€š€š‚wŽ»€š€š‚ˆŽ»€š)€š.ŽÖI†m‚v†1Ž»€¢ €¢Ž¿m mŠøPŽ»€¢)€¢+„Šø€êŠøÿ¤@) ™a†1†1PŽ»€¢)€¢+‚wŽ»€¢€¢‚ˆŽ»€¢8€¢=Ž×I†nޛޡ޻€ª €ªŽ¿& &ŠùPŽ»€ª€ª„€êŠùÿ¤@) ™aޡޡPŽ»€ª€ª‚ˆŽ»€ª€ªŽØI†oŽœŽ£Ž»€² €²Ž¿( (ŠúPŽ»€²€²„€êŠúÿ¤@) ™aޣޣPŽ»€²€²‚ˆŽ»€²€²ŽÙI†p‚l†3Ž»€¿ €¿Ž¿x xŠûPŽ»€¿€¿„Šü‚jŽ»€¿ €¿"„ŠûŠü€êŠû€êŠüÿ¤@) ™a†3†3PŽ»€¿€¿‚jŽ»€¿ €¿"‚mŽ»€¿€¿‚ˆŽ»€¿'€¿,ŽÚI†q‚q†5Ž»€Î €ÎŽ¿} }ŠýPŽ»€Î)€Î+„Šþ‚jŽ»€Î/€Î1„ŠýŠþ€êŠý€êŠþÿ¤@) ™a†5†5PŽ»€Î)€Î+‚jŽ»€Î/€Î1‚mŽ»€Î€Î‚ˆŽ»€Î6€Î;ŽÛI†rŽÜŽÝŽ»€Ù €ÙŽ¿€‡ €‡ŠÿPŽ»€Ù€Ù„€êŠÿ€êŠÿÿ¤@) ™aŽÝŽÝPŽ»€Ù€Ù‚ˆŽ»€Ù€ÙŽÞI†s‚©ŽqŽ»€ã €ãŽ¿0 0‹PŽ»€ã€ã„€ê‹‹ÿ¤@) ™aŽqŽqPŽ»€ã€ã‚ˆŽ»€ã€ãŠŽ»€ã €ã&ŠŽ»€ã.€ã4Ž»€ã<€ãAŽßI†t‚ fŽ»€î €îŽ¿. .‹PŽ»€î€î„€ê‹‹ÿ¤@) ™affPŽ»€î€î‚ˆŽ»€î€îŠŽ»€î €î&ŠŽ»€î.€î4ŽàIŽáfsharp-3.0.34/lib/bootstrap/4.0/fsi.exe0000775000175000017500000071100012260314606016442 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELXjPà Œª À@ @·©dà $ª  H.text0‹ Œ `.rsrcÀŽ@@.reloc à@Bó©Hpñ\¯ ¤L¡kÌ €*o &*rþ~ / ( +~*vþ~ / ( +€*0rps  r p(+*Žs"r-pr?ps s þ(+*0rps  rQp(+*0rps  rmp(+*0rps  r‘p(+*0rps  r»p(+*0rps  rÓp(+*0rps  rõp(+*Žs&r pr?ps s þ(+*0rps  rOp(+*0rps  r]p(+*0rps  rmp(+*0rps  r‡p(+*0rps  r—p(+*0rps  r§p(+*0rps  rµp(+*0rps  rÇp(+*0rps  rßp(+*0rps  rõp(+*® ýs*rpr?ps s (+s *® þs.r?pr?ps s (+s *’s4rqpr™ps s þ(+*0rps  rµp(+*–s<rÓprÿps s þ(+*0rps  r%p(+*Žs@r¡pr?ps s þ(+*0rps  rãp(+*0rps  rp(+*0rps  rKp(+*0rps  rwp(+*0rps  r©p(+*0rps  rÛp(+*0rps  r p(+*0rps  r?p(+*ŽsDr}pr?ps s þ(+*0rps  r¥p(+*0rps  rÙp(+*0rps  róp(+*0rps  rp(+*ŽsHr/pr?ps s þ(+*ŽsLrmpr?ps s þ(+*ŽsPr‡pr?ps s þ(+*0rps  r¡p(+*0rps  rÅp(+*0rps  rëp(+*ŽsTr/pr?ps s þ(+*ŽsXrepr?ps s þ(+*Žs\rpr?ps s þ(+*0r p(5 r-p(5 rQp(5 rmp(5 r‘p(5 r»p(5 rÓp(5 rõp(5 r p(5 rOp(5 r]p(5 rmp(5 r‡p(5 r—p(5 r§p(5 rµp(5 rÇp(5 rßp(5 rõp(5 rp(5 r?p(5 rqp(5 rµp(5 rÓp(5 r%p(5 r¡p(5 rãp(5 rp(5 rKp(5 rwp(5 r©p(5 rÛp(5 r p(5 r?p(5 r}p(5 r¥p(5 rÙp(5 róp(5 rp(5 r/p(5 rmp(5 r‡p(5 r¡p(5 rÅp(5 rëp(5 r/p(5 rep(5 rp(5 *¶þ~/ ( +~o ( þo *v££( þ( *–o ,+o ,+o! þ*þ(7, o" +,'o# þ~/ ( +~þo$ **00(8, o% s& *o' ,+Ûr«ps( z0' (9 () £ s^þ(6*0i o* %YEDdYE%fYEsYE réps( zs`þ(:*Xþ(+*þrprpo, rpr#po, r'pr-po, r1pr7po, *06o- o.   (/ Є(0 (þ(+*0<þ~ / ( +~, þ(+*(5 (< (+*6€Ë~Ë&*( *s6 **u…þ*s8 **u†þ*0 u†,+*Zr;ps9 ( +o; *0aþ,X u…,(t…  ¹y7ž{< ( +bcXXX *t†  ¹y7ž {> ( +bcXXX **6(? o@ *0¥þ9“u 9„  u†,+   u†,+ 3\u…,-t… t… {< {< þ( +*t†t†{> {> þ( +***þþ*0þ9‹þ9€u†,+   u†,+ 3Xu…,*t… t… {<  {< þ(+*t†t†{> {> þ(+***þþ*0u , þoC **:(H }< *{< *:(H }> *{> *:( }J *2{J {< *:( }K *2{K {> *0Ko &}L }M }N (O }P K(+ {L /+}R *0oT o+*02oT o+ (W (X (Y  o+*0JoT o+ (W (X (Y  o+-*([ (\ (] *0O oT o+, o++ (` sa (b (c  o+o+*0)!oT o+ (c (b  o+*0'oT (e þ-(+(+(h **0"oT (` o+*0${N , (i oj &**0 & (+*6o+þ*nsk (l (m þ(+*žso (+sq (r (s þ(+*0!(st (+ (v (w sx *03+o+ -sy * (z ({ o +sy *0:/þŸþ þ¡þ¢ s} þ(!+*0’3o {R Y /+ {L Y  / + s€ ("+s‚ (#+(ƒ („ s… ($+}P s‡ (%+s‰ þ(&+*0m5o &}Š }‹ {‹ ('+  sŒ } sŽ ((+} s ()+}‘ s’ ()+}“ *0X6{ oT o+ -* ([ (\  ([ (” {‹ s• o– ,(] **0y7{ o— - (*+* ([ (\ ([ (” {‹ s• o– ,{ s˜ o™ +,{“ oš &*(*+*6{ o› *F{ þoœ *B{ þo *>{ þož *0ÛAsŸ s  s¡ s¢ ¥´o£ o¤ ,u o¥ (¦ (++o§ 20(¦ s¨ (© oª s« o¬ +¦o­   (® (© oª 8ƒÿÿÿÞ u€  ,  o¯ &Ü&Ü&s° ¥¹(,+þ(-+*%‚§01C(.+s³ s´ (/+sµ ¥½(0+þ(1+*Šso€so€so€*:( }*~**(vþ*~**(vþ*~**(vþ*{*Zr;ps· (2+o¸ *01þ, þ,{ { 3*Y**þ,**:¥ ox*0BE¥  þ,%¥ þ,{ { 3*Y**¥ þ,**0.Fþ,% (vE * * **6(? o{*0.Eþ,u  ,{ { þ**þþ*0*þ,þ,{ { þ**þþ*0Gu  ,o~**ro &s¹ }}*>{þoº *ú{2{{oº þ+,{{þo» *~¼ *R{o½ }*†, rIp(¾ ,*{þo¿ *Â, rIp(¾ ,*{o¿ {oº }*0B{oº 1){Y{oº X{oº ]}+þo‚*Ú{oº 1{X{oº ]}+þo‚*Vo€&rIp}*"{*&}*>sì(Ê*08H(À (Á YZ( YXX (Á Y[ (Á Y]X (‹*{ *{!*V( } }!*0fJþ,Uþ,M(à {  {   /+ þ /*1*(à {! {!  /* þ**þ,**:¥o*0kL¥ þ,N¥þ,A{  {   /+ þ /*1*{! {!  /* þ**¥þ,**07Fþ,. ¹y7ž{!bcXXX ¹y7ž{ bcXXX **6(? o“*0:Mþ,+u ,{ { 3{!{!þ***þþ*0F(À ( /+s*09{!YX(Á Y]X { {!YX(Á Y[X (‹*Úþ,'þ,{ { 3{!{!þ***þþ*0Mu ,o˜**‚o &s€}"sî}#*&}#*rKp*rQp*2rKpo. *0Rsˆ  o. (Û o. YoÄ oÅ o. >Î .oÆ / oÄ sÇ ++ oÄ (È XoÉ XXoÄ sÇ (Ê (Ë (Ì sðsò{#sÍ oÎ (3+(4+oŠ Þt4 {o½ } Þ &sÑ *sÑ *¢;ÝjYErWp*r]p*²(Ò ,!YErWp+r]po. ***0 …X(ÜrKpo. (–sÓ sŸ sÔ sˆsÕ sÖ sŸ (Þ     þ(é*0W[(× (Ø ,s¥(5++,(Ú (Û (Ú (Ü +(Ý (Þ (ß sŸ o¡*(â *6rcpoã *0*Frypoä .rypo. XoÉ +Ø*Fs(6+&*0HrIp(¾ ,r“p*(æ ,rIp(¾ ,r“p**(ç oè ,*r“p*0]-* (é (ê së oì *0U_(í (î ,3r—psï (7+ sŠ(ê oñ (ê oò (8+&+(ô (õ þ(ö *0 ñc{‚ {ƒ :Ó-*  sÔ (÷  sŒo9+(ù  2d è Ð '(ú (û (û (û (û (û (û ¥Ëoü o¤ ,oý (î - (þ +Û+ØÞu€  ,  o¯ &Ü&Ü&(î - ((ÿ  ** 8,ÿÿÿ‡-´0'd( ( o Þ ( &Ü*  0'( ( ( ( ( ( *0 .g {Ì s×{Ã{Ä(  þ(  *0h sÛþ(:+*0k{ {„(ª{ {jrÝps  (;+((o  &(í} { (ý (? o,?( }s-þ.s s rãpo o o **0 7nŒµ(/ ( ( r p 8(<+( o *0Hrsno^ ( ( (O  (? oZ,+Às *0uw( ,k ( ( st(=+ ( ( sv (>+, o`+sxo?+( +*&s  *0¬xsŸ (! (" X(# (" X(# (" X(# (" X(# (" X(# (" X(#  ÞBt4 (" Y(# (" Y(# (" Y(# (" Y(#  Þ&*_gB0/ys“þ”s s o  o o *Vr ps—(·*&s$ *0 ®}(í (î ,{ir3 ps% (@+&+(Os' o8s( (ê o) sþžs s ri po  (í (î ,{ir ps% (@+&+ o *0 €(í (î ,{irË ps% (@+&+(í (î ,{irñ ps% (@+&+(* o+ o, Ýrt4 u½ ,NrÝps  rIps% oA+&oB+(0o  &(- Þ t4Þ& Þ(. (/  Þ (í (î ,{ir- ps% (@+&+, 8ôþÿÿ*¤ ¯ ( (? (@ (H+re ps< (G+sÛ(= (> (? (@ (H+r psB (I+(  oC   sß(J+¥ßrŸ p(K+(D (o  &*Z,oL+*þo *²}(})}*}+},(F *0¸{+YE + +o+b8‡{({'(G oü }*}+{*o¤ ,5{*oý })}+{)(H },*})+¾}+{*(M+}*}+},*0‡Š {+YE++e{+E + ++++}+{*(M+}+}, Þ t4   Þ&8„ÿÿÿþ,z*Qj Æ{+E + + +++***"{,*0 {(sÁ*Ò}-}.}/}0}1}2(F *0Í{1YE +8+t8™{-{'(G oü }0}1{0o¤ ,G{0oý }/}1{/(H {.{/£ÆY}2*}/+¬}1{0(M+}0}1}2*0‡Š {1YE++e{1E + ++++}1{0(M+}1}2 Þ t4   Þ&8„ÿÿÿþ,z*Qj Æ{1E + + +++***"{2*0 {-{.sÇ*:(J }3*B{3þoK *:(L }4*0Œ{4oM sÍ*:(N }5*0{5oO sÏ*:(P }6*0{6oQ sÑ*:(J }7*B{7þoK *:(L }8*0Œ{8oM sÕ*:(N }9*0{9oO s×*:(P }:*0{:oQ sÙ*:(J };*B{;þoK *:(L }<*0Œ{<oM sÝ*^sâ€>sâ€?*:( }=*~>**(çþ*~?**(çþ*{=*Zr;psR (N+oS *01þ, þ,{= {= 3*Y**þ,**:¥$oé*0B‘¥$ þ,%¥$þ,{= {= 3*Y**¥$þ,**0Fþ, (ç3 * **6(? oì*0.‘þ,u$ ,{= {= þ**þþ*0*þ,þ,{= {= þ**þþ*0’u$ ,oï**žo &}D}E}B}C*0±˜(T (* oU þâ þãsþ(O+ (* oV (* oW (* oX (* oY (* oZ  (* o[  (* o\ (] (^ (_   s` *08šsss{D{E{Bsa s sb *0ùÐ (0 oc r¥ pod (ç3=rý p(e (f ŒÈŒ(/ ( ( (È(P+ Ý“r p(e (f ŒÈŒ(/ ( ( (È(P+ ÞYt4 u½, rIp(g Þ: rÝps  (Þ (;+oh (o  &rIp(g Þ*žY0ÙŸ(* oi 9Çoò (j (] (k (l Y /+(m (_ (l (n (o (p  [s` oóoq Þ t4Þ ,D (r (s (r (t (åoô(u ,*(v ***l 0ú¡oò (w (x (ãoô (y (z ({ (| (} (~ ( (€ ( (‚ (ƒ („ (… († (‡ (ˆ (‰ (Š (‹ (Œ ( sŽ  (u , ( +( r= p(g ( (‘ {C(’ {Cþo“ *0©¦9¡uÙ 9’ o” s s(* oX [X(Q+rA p(g rK p(– rO p(— (˜ rS p(— (™ (™ (‘ (v Þu€,o¯ &Ü&Ü ***i†V(š }F}G*0:§,5{Go› oœ , {Fo , ož (v ****V(š }H}I*09,4{Io› oœ ,{HoŸ , (g (v ****:(š }J*>{Jo÷*0\}K}L}M}N}O}P}Q}R }S }T }U(  *0ݨ{TYE +8o8>8»8‘8’(* o¡ ¥éo¢ }S}T{So¤ 9&{So£ }L{Luã9}{Ltã}P{P(¤ (¥ }Q{P(¤ (¦ }R}T{Q{Rsø}U*}R}Qþã}P+{{Ltâ}M{M(§ (¨ }N{M(§ (© }O}T{N{Osú}U*}O}Nþâ}M}L8Êþÿÿ}T{S(R+}S}T{Ksü}U*}T}U*0žŠ {TYE+8y{TE ++*++ + ++++}T{S(R+}T}U Þ t4   Þ&8mÿÿÿþ,z*e 0C{TE ++++ + ++*****"{U*0'©{Kþâþãsþ*:(ª }V*V{V(« þ(S+*:(­ }W*V{W(® þ(T+*:(¯ }X*V{X(° þ(U+*V(± }Y}Z*Z{Z{Yþ(² *:(³ }[*B{[þož *:(´ }\*Þ{\o¤ ,'{\oµ {\o¶ s· s¸ (¹ **ro &}]sÖ }^*0ª{^oº *0ª{^o» *0a«(¼ (¾ -rIp*{^oh (§ †% ¤†o½ / Žiþþ+, Y£i*rIp*0¬(¨ Þ t4  Þ&* :(¾ }_*>{_o*:(¿ }`*ZrW p{`(À *’(¿ }a}b}c}d*0 ${a{b{c{d(Á *r( }e}f}g*0 ž¯{e{]o“ {e{]{es s{g(V+{e{]{f( {f(Ä {f(Å {f(Æ  s{g(V+{e{]o“ *¾o &}h}i}j~Ç sÈ }k*¢{h(É , {k+{iþ(W+*¢{h(É , {k+{iþ(X+*š{h(É , {k+{ioY+*jrIps% oA+&oZ+*jrIps% oA+&o[+*jrIps% oA+&o\+*"{i*"{j*Fs'þ(]+*:( }l*f{lo“ {lo“ *®r] poË &}m}n}o}p*&}p*0A{n{mo{pX}p{m(Ì , (^+&+sÎ z.{pþ*&}p*Bs8(6+&**o_+&*"{p*0F{p1;{o{jrÝps  (;+(o  &{o{joÏ sÎ z*:(¾ }q*>{qo*:(¿ }r*ZrW p{r(À *’(¿ }s}t}u}v*0 ${s{t{u{v(Á *V( }w}x*0 ±{w{m(Ð {w{m(Ñ {w{m(Ò {w{m(Ó {w{m(Ô {w{m(Õ {x(Ö ,{w{xo_+*{w{m(Ð {w{m(Ñ {w{m(Ò {x(× 9Î{w{o{jo“ {w{o{j{w{n s2 s4{x(V+{w{o{j{w{m( {w{m(Ä {w{m(Å {w{m(Æ  s6{x(V+{w{o{jo“ **0ݸo &}y}z(Ø ,(Ù oÚ þ+þ}{}|}}rIp}~}(Û }€(Ü }}‚}ƒ}„}…}†sP(`+}‡rŸ p}ˆrIp}‰sR {yoN{y(Þ {yoO(a+(a+ {y(ß  (à (b+(â  Þt4(. (/ (^+ Þ&{}Š{y(ã ,@(ä (Ú (Ü (å sTsVsZ(c+s\(d++{Š( - £i+{Š(e+(f+(è (* {€(é (g+oê *ÁU0}¹{z rÝps  rIps% oA+&oB+{y(ë o  &{zrÝps  oh+(ì o  &{zrÝps  oB+(o  &*0 r­ ps (i+{‡oí (î oï {zrIps% oA+&{zrÝps  oh+(o  &{zrÁ ps  oB+(o  &{zrý ps  oB+( o  &{zr9 ps  oB+(!o  &{zru ps  oB+("o  &{zr± ps  oB+(#o  &{zrí ps  oB+($o  &{zrIps% oA+&{zrÝps  oh+(%o  &{zrÝps  oB+(&o  &{zrIps% oA+&{zrIps% oA+&*"{}*&}}*"{~*"{‚*"{ƒ*"{„*&}„*"oK*"{…*"{{*"{*"{†*"{Š*"{|*V{~rIp(¾ þ*z{€(Û (é (j+}€*0c(ð {z{irIps% (@+&{z{irÝps  (F+{‡oí (o  &(ñ þ(k+*0(r) p{ˆs^(ò ( (È (ó r1 p{ˆs`(ò ((È (ó (ô (õ (õ (ö ((ô (ö ((ô (ö ( (ô (ö ( (ô (ö ( (ô (ö rcprIpsb(ò (ó r; prIpsd(÷ (ó ro prIpsf(÷ (ó r¥ prIpsh(ø (ó rÑ prIpsj(÷ (ó rñ prIpslsp(ù (ó (ô (õ (õ (õ (õ (õ (õ (ú r#prIpsr(û (ó r=prIpst(û (ó (ô (õ (õ (ú (ü (ý (ý (ý (ý (ý (ý (ý (ý *0»(þ rQprIpsv(ÿ ((È (ó (ô (õ (ö ( rWp{‰sx( ((È (ó (ô (õ (ö rap{‰sz( (ó rWp{‰s|( (ó rep{‰s~( (ó (ô (õ (õ (õ (ú ( ryprIps€(ø ((È (ó rƒp{‰s‚(û ((È (ó r‹prIps„(ø ((È (ó r—p{‰s†(û ((È (ó (ô (õ (õ (õ (õ (ö (ü (ý (ý (ý (ý *( *0»(3 o o ( *:( }‹*06¼( {‹{‹{s  (Ü (  (l+}*:(  }Œ*>{Œo  *:(  }*>{o  *:}Ž( *B{Ž(m+&*( *NsXþYs *:( }*:{(Ü *:( }*¾{{{s  (Ü (  (l+}*:( }‘*¾{‘{‘{s  (Ü (  (l+}*:( }’*>{’}~*:( }“*R{“( }‚*:( }”*R{”( }ƒ*:( }•*n{•}ƒ{•}‚*:( }–*R{–( }„*( *no 1o þ( **:( }—*B{—oL*V( }˜}™*0l½o (b+ {˜{˜{s  (Ü (  (l+}{˜sn(n+{™( {˜}(Û *:( }š*0 ¿{š( (? o }…*:( }›*0 ¿{›( (? o }†*:( }œ*B{œoL*V( }}ž*R{{žoo+*V( }Ÿ} *R{Ÿ{ oo+*V( }¡}¢*R{¡{¢oo+*V( }£}¤*R{£{¤oo+*:( }¥*>{¥}*:( }¦*0 ¿{¦( (? o }|*:( }§*>{§( *:( }¨*0 ¿{¨( (? o }{*:( }©*B{©þo  *:( }ª*0À{ªo sˆ*r( }«}¬}­*0d]{¬,{¬ (é (  (Û +{«,{« (é (  (Ü +{­(! (÷ þo" *0@o &}®}¯}°{®oK,r©p+rKp}±*ê{°-"{¯rÝps  op+{±o  &*{°Y}°*Æ{°X}°{¯rÝps  op+{±o  &*B{°X}°*"{®*0à¼o &}´}³}²{´{{, o˜+, sš(# +}µ{´oK,+s$ }¶}·{´{,`{´{†,s™þšs s o +6(í (î ,{²rÉps% (@+&+{¶o% +*0Á{· }·*"{µ*"{³*0¼ñ%{¶¤ñ(& *0ÇÄ{´{…9´(í (î ,{²rps% (@+&+(' &(( () ( (* (í (î ,'{²rYps+ (q+ s(r+&+þþ Þ1t4(í (î ,{²ræps% (@+&+ Þ**7[’1:}¸( *0FÆ{¸{µ 9 {¸{´{{,{¸{´oKþ+9Þ(- {¸{´{Š( þ9~(í (î ,{¸{²r.ps% (@+&+{¸o£(È }·(í (î ,.{¸{²rŒps. (s+{¸{·o/ &++{¸{¶o% (í (î ,{¸{²rìps% (@+&**{¸{³o0 {¸{¶o% *:(1 }¹*B{¹þo2 *:(3 }º*0È{ºo4 s›*{»*{¼*{½*{¾*{¿*{À*Ò( }»}¼}½}¾}¿}À*02Ëo &}Á}Å}Â}Ì}Ç}Ã}Ä}É }Ê }Ë }È }ÆrTp}Írlp}Î}Ï}Ð{Å(6 }Ñ{É{Ñ{Æ{Çsñ}Ò{Î{Å(7 o8 {Ñ(9 (: }Ó(; }Ô(¼ (< }Õ{Óo= {Ä{Ão> s? }Ö*"{Î*"{Ô*0 /Îo³ o´ sµ(t+ o²(@ *0 ÐÔo³ o´ (A ( ( {Õ(B (¼ {Õ(C (D (E (F (G (H (I (J (K o²(L (@ {¾ {»{¼{½ oM {¿{Às¥*0öÛ{Å(N o¬ oª {¾oO oP r†poQ (R @« t(S oT -&{Ò{¾oO oU oV oö+{Ð,N(W oV oX þ,0(W {¿{Ò{¼oóoV oY +(Z }Ð+*0 âo[ r†p(\ (] (^ (® rŒpr pr®prÀprØpröp(Û (é (é (é (é (é (é o Y{Õ(u+(v+(a {Õs·(w+(b (c (d (® (e (f (g  (e (f (g    (h (i (i *0 öè(j ,(sk (x+&+{Ã(m (n oo {Åop {¾ {ÃoO (q Þt4{Åor þ (s (t (u {Äs¹{»(y+{¿s»(z+ow {¼{½oM {¿{Às¥sx *Mdr{Å(©sÃ({+*0&í{Å(N (y -*sÅ(|+ {Å(N (z ({ {Ërps  op+('o  &sÇ(| (}+{ËrS ps% oA+&sÉ(~ (~+sË( (~+sÍ(| (+(€+ (  (‚ {Ìo1sÏ(+, rps( zsÑ(‚+sÓ(ƒ+o©*0  î{Å(N {Ã{Ä(… {Õ{Ã{Ä(† {Î {Õ {Ä{Ã{È(‡ (ˆ {Ä{Ã{Ä{ÄsÕo‰ (Š s¥*0^ò(í (î ,{Ë{ir&ps% (@+&+(‹ (Œ (‹ ( (? oŽ ( ( (‘ (’ (“ (” rIp(• o– (— (˜ (™ (š (› (œ ( (ž (Ÿ (  (¡ (¢ (£ (¤ s¥ (¦ (§ (¨ (© (ª (« (¬ (­ (® (¯ (° (± (² (³ (´ (µ (¶ (· (¸ (¹ sº *0ã{» {¼ {¾ {¿ {Å(N {Â(» (¯Þ, (¼ &Ü&Ü(½  (¾  (¿  (À  {Ìo1{Ão>  {Ä{ÄsÙ{Í  o‰  (Á ( (à {Ìo1(Ä (Å (Ø   (Æ {Ìo1  oÇ rVp(È {Ìo1rnp(È {Å{Îo±{Ìo1r~p(È {É(É r¤p(È {É(Ê {Ìo1rÈp(È {É{Ã(Ë (Ì {Ìo1rúp(È {É{Ô{Ó{Ñ{Æ(Í (Î (Ï {Ìo1(Ð ¥ oÑ o¤ ,oÒ  {Ô (Ó +ÛÞu€!!, !o¯ &Ü&Ü&rp(È {Á"{ÀsÝ#, "#o„+&+ (°{Ìo1, oT þ+9³ oO oU $9¤$(y $(z $({ $(| $(} $(~ $( $(€ $( $(‚ $(Ô $(ƒ $(„ $(… $(† $(‡ $(ˆ $(‰ $(Š $(‹ $(Œ  sßsŽ +$%%(A oÕ & (Ö ''¥o× ((o¤ 9œ(oØ ))(Ù *&{Ö(Ú {Õ*(Û ++(u -^{ËrIps% oA+&{Òoò,,+(Ü -{Ç(Ý -(…+.{ËrIps% o†+&8^ÿÿÿ8XÿÿÿÞ(u€!!, !o¯ &Ü&Ü&+{½ {Às¥ sß *(6Pb*Œõ­¢Z{ÏX}Ï{Ï*Ú{Õ(à r4psá (‡+oK (â (\ (ã (ä *:(å }×*B{×þ(æ *:(ç }Ø*B{Øþ(\ *:(è }Ù*F{Ùþ(é *(ê *"(ë *:(ì }Ú*0$ (í (î {Ú{Åoï *:(ì }Û*0# (í (î {Ûo­(ð *(ñ **’(ò }Ü}Ý}Þ}ß*0 F{Üs½{Üs¿sÁ{Ü{Å{ß{Þ(æ {Ýþ(ˆ+*V(ô }à}á*ª{á{à{áoõ oö {às÷ *:(ø }â*0r (ù (ú -#{â{ËrÝps  op+þo  *{â{Ë r>psû rIps% oA+& o‰+('þ(Š+*(ý **(þ *(ý **(ÿ *r( }ã}ä}å*0 L (ù (ú -1{å{ärLp(Û (é {ã{Ì( +s *( *þ*( **þ(‹+*:( }æ*B{æo®*:( }ç*0 {çþ( *:( }è*6{èo,*:( }é*0 {éþ( *:(  }ê*0fo  -* (  {ê{Ë{jrÝps  (F+oh o  &{ê{Ìo*{ê{Ìo1*V( }ë}ì*Z{ë{ì(°*r(  }í}î}ï*~{í{Ò{ï{îoõ*¦o &}ñ}ð(¼ (< }ò*0 r“poä 2<.(  ( (Œ+o½ Ži Y(+(Ž+Y£is + (Û s ( ( {¾{ðo> {ñs? {ñsãs (  oO oP {ñ {ò   så{ò (  sç{ñ  sé (+þ(+*( *.þ( *r( }ó}ô}õ*0 {ô{ó{õþ( *:(â }ö*>{öo *:( }÷*B{÷þ( *^sì€ùsì€ú*:( }ø*~ù**(ñþ*~ú**(ñþ*{ø*Zr;ps (‘+o *01þ, þ,{ø {ø 3*Y**þ,**:¥oó*0B¥ þ,%¥þ,{ø {ø 3*Y**¥þ,**0Fþ, (ñ3 * **6(? oö*0.þ,u ,{ø {ø þ**þþ*0*þ,þ,{ø {ø þ**þþ*0u ,où**^sü€þsü€ÿ*:( }ý*~þ**(þ*~ÿ**(þ*{ý*Zr;ps (’+o  *01þ, þ,{ý {ý 3*Y**þ,**:¥o*0B¥ þ,%¥þ,{ý {ý 3*Y**¥þ,**0Fþ, (3 * **6(? o*0.þ,u ,{ý {ý þ**þþ*0*þ,þ,{ý {ý þ**þþ*0u ,o **¶s €s €s €s €*:( }*~**(þ*~**(þ*~**(þ*~**(þ*{*Zr;ps! (“+o" *01þ, þ,{ { 3*Y**þ,**:¥ƒo*0B¥ƒ þ,%¥ƒþ,{ { 3*Y**¥ƒþ,**06Fþ,- (E  * * * **6(? o*0.þ,uƒ ,{ { þ**þþ*0*þ,þ,{ { þ**þþ*0uƒ ,o**0ao &} } (ï} }(ÿ}(}(# }($ }s)}*"{ *&} *&}*"{*&}*Rs+{þ(”+*"{*0Ï#(í (î ,{ {irdps% (@+&+s/ s1þ2sà {(% }{(& }(  ÝOt4(í (î ,{ {jr–ps% (@+&+rup(' (( Þt4() Þu#,Et#(* { {jrÝps  (;+o+ (+o  & ݤt$  (,  (í (î ,{ {jrps% (@+&+ rbpod  (í (î ,{ {jr’ps% (@+&+ rðpod  (í (î ,{ {jr.ps% (@+&+o( rXp(-  (í (î ,{ {jrpps% (@+&+ r¬pod rÜp(.   s3 }  (² s5þ6s s rêpo o o  Þ7t4{ {jrÝps  (;+o+ (+o  & Þ Þ*AL±Å;W’7,R~O0N$2H{o/ &(í} { (ý (? o,( +(}**( **(0 *.þo/ *r}}}( *0¬%{{ {„(ª{(þ {{ (  (? o,h(í (î ,={{  rÝps  rIps% oA+& oB+(*o  &+{(}{o1 +*r( }}}*r{{{(±*r}}}( *²{{3{{{(±**r( }}}*r{{{(²*’} }!}"}#( *0 Ë&{ { {„(ª9­{"Z(þ { {(EX+Å{ { {jrÝps  (;+((o  &{ { {joÏ { (}8pÿÿÿ{ { {jrÝps  (;+((o  &{ { {joÏ (í (î ,={ {  rÝps  rIps% oA+&oB+(*o  &+{ (}{!o1 8Æþÿÿ{ { {jrÝps  (;+()o  &{ { {joÏ ŒÆ(/ ( {#r(p 8 (<+( o 8Mþÿÿ*0j(o &}$}&})}(}'}%}*{$(2 (3 (•+þ s5 }+*0‰*{){µ ,A {'{{,{'oKþ+,(- {& s=o:+{&s?o: {&{^oº (¼ o<*0+{$(6 (7 o<*FsCþ(8 *æ(¾ -r2poã +,sE¥'(–+(—+s9 **0a-(: rLp{$(; (é {+{%(< s= {*(˜+ {+{$(? sGs@ *V( },}-*0\0{,{) {· }· -5(í (î ,r6ps% (Þ (@+&+{-þo£*(A *:( }.*0I1(í (î ,r~ps% (Þ (@+&+{.{.{){³oB o;*:( }/*0!2rp(â {/{^o» *r(C }0}1}2*0]5(D (E (F (í (î ,rÂps% (Þ (@+&+{2oG (È Þt4u0,Þþ{1sA(™+-2(í (î ,#{0{({iräps% (@+&+*(A ,Á(A rp(â   o.   1-{0{({jrÝps  (;+(o  &+ /+    Y   2! X  o* ¤† X   X3ß *>T(I *&þþ*:(J }3*F{3þ(K *¶sJ€5sJ€6sJ€7sJ€8*:( }4*~5**(Sþ*~6**(Sþ*~7**(Sþ*~8**(Sþ*{4*Zr;psL (š+oM *01þ, þ,{4 {4 3*Y**þ,**:¥”oU*0B6¥” þ,%¥”þ,{4 {4 3*Y**¥”þ,**06Fþ,- (SE  * * * **6(? oX*0.6þ,u” ,{4 {4 þ**þþ*0*þ,þ,{4 {4 þ**þþ*07u” ,o[**0`o &}=}E}@}B}C}D}A}? }>(¼ (< }F*0r8oN oO ,E{A{  (í (? oø,{A(ï} (K+(Ms *{Coslo?+*099{=(N oõ oö {=(©sp(›+*0k:(y ,a (P (y sro?+ (  ( (SE+ ****0D<  {@{Š(´ {@{Š( þþ,{Co+*Rszo?+( *"{@*0:>{Eo-oQ Þ t4 (. (/ (QsR Þ* 0>9{=(N oS (T , {=( *(sk (x+&*0ùB(U sV (í (î ,{D{ir.ps% (@+&+oN s~(œ+(X Ý¢t4 (í (î ,){D{ir\ps  (F+oh o  &+(Y (Z Cþþ,?(U (Z Cþþ,oN oO þ+,oN o+ +Ê+(. (/  Þ* IU¢Ns„o?+*0EJ9’ (\ u39t(\ t3 (] (^ 9N(] (_ (` 3V (_ t4(a (b (c  (^ (d (X (e (X sf 8(b (] s†¥2(ž+(Ÿ+ sˆ¥2( +(Ÿ+  oi 0+  oi þ, +\ (¡+(¢+  (k (` 3< (k t5  (l  (m (¡+{Bo¬(£++   (e (X  (e (X sf +sf +sf +sf (n (o 9€(\ og( ( (SE/"8îýÿÿ(Qs *(Os *(Ks *(Os *0K{=(N (í (î ,{D{ir˜ps% (@+&+{A(ý}oh {A(}{A(ÿ} ݘt4 u½,H{A(}{A(ÿ}(- Þ t4Þ&(Ks Þ> {A(}{A(ÿ}(. (/ (Qs Þ*® ¹ {|˜r(p }G}H}I*j{G{H{Ioi*’(p }J}K}L}M*0çM(í (î ,#{J{D{irêps% (@+&+{J{Mof (í (î ,#{J{D{ir$ps% (@+&+{L{J{Ksjoq or (í (î ,A{J{D{ir¤pss (¤+ ( (  s ot &+*(u *.þor *’(v }N}O}P}Q*0žO{N{?{Qo9 {N {O  {N{O{P(³( ( (SE% rþps( z(Qs *(Os *(Ks *r(p }R}S}T*0 %{R{S{T{R{Fo_*:(w }U*0P(è ( {Uþþ*(x *"(è *V(p }V}W*0 9{V{B{V{F{W{V{>o¯(Os *:(p }X*0 ${X{B(h oª(Os *V(y }z }{ *0Q{z o¥+ {{ (| *V(} }[}\*š{[{\(¦+{[oN þ(~ *:( }]*0C¹{]{D rÝps  rIps% oA+&oh+(€ (,þo  *V( }^}_*n{^{={_oï *’(p }`}a}b}c*0 g U{cu69ž {ct6 ( (‚ r1 p(¾ ,B( (ƒ ( („ {`{B{`{>o¯(Os *( (‚ rnp(¾ 9( (ƒ (y 9Ø( (ƒ (y (y -Z(P ( („ {`{B o­(… (ð {`s€(§+(Os *( (‚ ( (ƒ {`{DrÝps  oB+ ¥ßr‚p(K+(D (o  &(Os *( (‚ ( (ƒ  +™( (‚ r†p(¾ 9( (ƒ (y ,O( (ƒ (y (y -(P ( („ 8Üþÿÿ( (‚ ( (ƒ  8ÿÿÿ( (‚ ( (ƒ  8ÿÿÿ( (‚ rŠp(¾ 9õ( (ƒ (y 9Â( (ƒ (y (y :ˆ(P ( („ {`{= {boõ o† {`{D rÝps    rIps% oA+&  oh+{b oS (-o  &(Os *( (‚ ( (ƒ  8þÿÿ( (‚ ( (ƒ  8ñýÿÿ( (‚ rŽp(¾ 9”( (ƒ (y ,d( (ƒ (y (y --(P ( („ {` oe(Os *( (‚ ( (ƒ  8aýÿÿ( (‚ ( (ƒ  8Cýÿÿ( (‚ r”p(¾ 9´( (ƒ (y 9( (ƒ (y (y -J(P ( („ {` oe{`{C   {°X}°(Os *( (‚ ( (ƒ  8“üÿÿ( (‚ ( (ƒ  8uüÿÿ( (‚ r¦p(¾ 9[( (ƒ (y 9…( (ƒ (P r°p(¾ 9ý(y (y :Ï(P r°p(¾ -B{`{D rÝps    rIps% oA+&  oh+(/o  &+@{`{D rÝps    rIps% oA+&  oh+(.o  &{»{¼{½{¾{¿ r°p(¾ s¥(Os *( (‚ ( (ƒ  8(ûÿÿ(P r¶p(¾ ,7(y (y - (P 8ïþÿÿ( (‚ ( (ƒ  8ßúÿÿ( (‚ ( (ƒ  8Áúÿÿ{À,B{`{D rÝps    rIps% oA+&  oh+(/o  &+@{`{D rÝps    rIps% oA+&  oh+(.o  &{»{¼{½{¾{¿{Àþs¥(Os *( (‚ r¾p(¾ ,7( (ƒ ( („ {`s‚(n+(Os *( (‚ rÌp(¾ ,Z( (ƒ (y -*{`{={bo‡ þ(ˆ (Os *( (‚ ( (ƒ  8Aùÿÿ( (‚ rØp(¾ ,_( (ƒ (y -/{`{@{`{@{}þ}}(Os *( (‚ ( (ƒ  8Ëøÿÿ( (‚ räp(¾ ,d( (ƒ (y -4{a,"{`{A(} è(þ +þ(¨+*( (‚ ( (ƒ  8Pøÿÿ( (‚ rèp(¾ ,5( (ƒ (y -8€ÿÿÿ( (‚ ( (ƒ  8øÿÿ( (‚ rWp(¾ ,M( (ƒ (y -{`{@o<(Os *( (‚ ( (ƒ  8 ÷ÿÿ( (‚ ( (ƒ  8‚÷ÿÿ{ct3  (] (^ 9 (]   (_ (` 3l (_ t5 (^ (^ -'(m {`{Bo«(Os * (] {`{Boª(Os * (] +Õ(Os *(‰ *>(` þþ*(‰ *>(` þþ**oŠ &**þo‹ * *îo &}e}dsŠ}f{fo‹sÔ }g*0t{g(! (í (î ,{e{iròps% (@+&+(Œ (í (î ,{e{ir4ps% (@+&+{g(î *0xX(í (î ,{e{ir‚ps% (@+&+{fo - þo *sŽ s (í (î ,{e{irÎps% (@+&+{fs þ‘ s’ o“ (í (î ,{e{ir ps% (@+&+s” o• -=(í (î ,.{e{ir“ps% (©+&{e{ioÏ +µ+²(í (î ,-{e{iržps– (ª+(— þo˜ &+(— («+ Þu€, o¯ &Ü&Ü*AQ ]N{g(! (™ *’}› }œ } }ž ( *0FY{› {d(ª{ {œ oŸ (  (¡  Þ{ž o% &Ü&*23:}l( *>{lo/ &*F}mo¢ &*0¬{mo% Þ t4  Þ&* r( }n}o}p*0j[{n{„(ª{ps• {n{~(£  Þ3t4 {o{jrÝps  (F+oh ( o  Þ*#53’(¤ }¥ }¦ }§ }¨ *¶{¦ («{¥ (ª{§ {¨ þo© *V(ª }« }¬ *0 =](* o+ {« {¬ s­ o¬+ Þt4 (Os® Þ*&'0\}w}x}y}z}{}|}}}~ } }€ }( *0 ©^{y(«{w(ª(í (î ,{{{irps% (@+&+ñ%{z{¶¤ñ(& (í (î ,{{{irXps% (@+&+{(¯ (Q (? oZ,+!{(¯ (O (? oZ,+!{(¯ (K (? oZ9ã{(¯ (K (? oZ,{€{|o8(° +{}{~{w{y(­+{x(± {€(² o^( ( {x(³ { (´ (í (î ,1{{{ir¦psµ (®+{(¯ o¶ &8°þÿÿ8ªþÿÿ(í (î ,{{{irÊps% (@+ Þ Þt4(. (/  Þ Ýu(ê {o· (í (î ,{{{irps% (@+&+(Ø ,{}{@{|+,(¸ (3 o¹ &Ü(^+&Ü&*A4ø1u0 Dbo &}‚(Ø - (º +(ä o» éý.&(ä o» (ê o) o¼ o½ þþ+,&(ä o» (ê o) o¼ o¾ þþ+,!(ê r£ps¿ oì ( + {‚s¾}ƒ(Ø , (À +(Á ( (å oà (Ä (Å }„{„(Æ {„(Ç (È {„(É {„( (Ê {„r¯p(È ( (Ë {„( (Ì {„(Í , (Î (Ï + (Ð (Ï (Ñ s{„{‚s}…{„{…s)}†{†(«o¢{„{…s:}‡{‡{…sŽ{‡{„-{„(Ò +{‡{„-+(é (ê së oì {‡(¬ Þt4  (Ó  Þ &o¢{„(Ô ,{‡o;+{…rIps% oA+&{‡{Š( þ, o+{‡{‚s“}ˆ (Õ  Þt4  (. (/ (¯+ Þ   (Ö }‰ (× }Š{Š(Ø }‹sÙ }ŒsÚ  ŒÆ}s¥(°+}Ž{ŽoÛ {‡{…s}{„{‰{…(½o°sÜ }{„{ˆ{…{‡ {†s7}‘{Š{‰sá}’{„{†{‡{…{{‘ s]}“*Qcï ú:{o%*0 þc(í r¿p(Ý (! (í (î ,{…{ir÷ps% (@+&+{ˆ{µ ,% {‡{{,(- s§}#+(Ø -{‡oK+,{‡{…{(¸+(õ (Þ {‡{9o(í (î ,{…{ir- ps% (@+&+{{“{(± ob(³ (í (î ,{…{irO ps% (@+&+{‡{|, +d{(ê o'(í (î ,{…{ir ps% (@+&+(å s«s­s±(±+s³(²+{‡{|9ö(ß Þ t4 Þ&sµþ¶sà (á (Ø -(¶Þ t4 Þ&+(* {…{‡{„s¥Coâ Þnt4 rÏ ps%  (Þ  (@+&rR!ps%  (Þ  (@+&rÐ!ps%  (Þ  (@+&ra"ps%  (Þ  (@+Þ&+{{“{(± oa(³ {‡{„{{†{ˆ{…{‘{“(º{…(¼8˜(í (î ,{…{irè"ps% (@+&+{{“{(± oa(³ (í (î ,{…{irB#ps% (@+&+{†oã /+(^+&{{(ä Þ u€  ,  o¯ &Ü&Ü&*AdÑ Ü   ',Snµ,á^{„(å (3(æ *0(d{‰oç -* (A (è (é *0Wf{ƒ{„{{†{‚{‰{Š{‹{‡{…{Œs· s¹s¦*:(ê }”*>{”&o¤*:(ë }•*0Ug(ì (í {•{’{•{(± -+ (A r“p(â (â oâ¥ß*V( }î }ï *0^h{î {…{jrÝps  (F+{ï þŸoh o  &{î {†o*{î {†o1*:(ð }˜*>{˜oñ *:(ð }™*>{™oò *:}š( *B{š(³+&*(ô *Ns¯þ°sõ *:(ö }›*0%io÷ u4 , {›(´+**:}œ( *V{œoø þ(´+*:(ê }*J{{ŽoÛ *V(ù }ž}Ÿ*R{ž{Ÿoµ+*"(ú *0 Ir(N †%,¤†o½ £i (í (î ,r\#ps  oB+o  &+rÆ#poû ,+ rÜ#poû ,+(Ø ,rü#p(¾ +, ݳ{Î(¾ , {Ô Ý™r&$p(â r0$p(â  (m (ü oý uN,YtN(þ (ÿ ,B(þ (ÿ (ÿ -+(  (    (€ ( ( 8v(m (ü oý   uN,Y tN  (þ (ÿ ,B (þ   (ÿ (ÿ -+ (   (    (€ ( ( 8ÿ(í (î ,r:$ps  oB+ o  &+ s¾o (¶+,m( uN,[( tN(þ (ÿ ,?(þ (ÿ (ÿ -((  (    (€ ( ( +N( oç -( (1s( (  +(A ( ( ( uT,l(·+uU,tU(  ÞgtV(  r’$p(¾ -!rÝps  oB+(2o  &+(ú Þ Þt4(. (/  Þ*A./0/s(¼ (< (å sÀþÁs  þo *’( } }¡}¢}£*0…(í (î ,${¡r¨$ps  oB+o o  &+o ( {¢( -+o ( {£( þ,{ (ü oý ( **²}¤}¥}¦}§}¨( *0 +{¨{¤{¥{¦{§o (¼*0  8(<+( þo *0)u 8o (¸+o (<+þo *0¬o/ Þ t4  Þ&* 0Kwo/ Þo (»+ sÐ(¼+ ( , ( ( - ( *sÖ(½+,( *r&ps( z:( }©*B{©þoï *:( }ª*0}{ªo  sÌ*:(! }«*No" {«(¾ *(# **þo$ *(% **þo" *r(! }¬}­}®*0‘o& , o' + Ži{¬.*sÒo( (¾+(¿+ o) {­Žio* .*{®{­(Ž+(é sÔ(f (À+ (? þo+ *~¯*~°*0S€(Ù(î ,Di0i ÿþþ+,*(, J%Ò¤Jo- Ži3£†****0Ï 0*Yo* (. , Y+Ú(YEvd.YE{[YE\]YE=_YET{YE5}YE1Y8gÿÿÿ*XY8SÿÿÿYY8AÿÿÿY81ÿÿÿ0KF( rKpo. /6-&,rQp+ rKpo. s/ (0 +sô(Ê**0±(À (1 Y3( (Á Yþ+,((2 (2 { Y{!s(3 +(Ü(Ò ,8YErWp+r]p (0 (" o. X(# +(4 (" X(# (Ü*04‚(" (2 rKpo. o—sÖ  o5 Y 2b3 o5 +o6 (Ò ,'YErWp+r]po» + o7 X X3žo5 3 o5 +(" (# o5 Y2o6 (ÝXX3â("  Y2 (4 (ÜXX3ä(2 rKpo. o—*0Zª(" o5 3"(" X(# o7 (Ý*(" o8 (" X(# (Þ*0)(" ]Y  0 (ßY Y3ê*0V (" 1(" Yo5 þ+,4(" Y(# (" o6 rKpo. o¡e(Œ**0C (" o5 /3(" o6 (" X(# rKpo. o¡(Œ**0)ªo9 o» o5 (# (Þ*0š„(î ,(! oh oŸ+(: sÑ (; (< (= {oº 1/, o†+o‡ o‰ (â (ã*,(> *(à*0:ªo5 1(" o5 þ+,(" o? (Þ**0, (@ u3+(A (Ú(ß*0Eªo5 1 (" þ+,*(" Yo? (" Y(# (Þ**0=rp(0 oh rÛ&p(¾ ,*o. 1{"o…+*0 ܈(B (@ YE]} YEFYE#YEó0b«Ê.YEÆ(C (A YE\(A .+ (@ uþ, (æþ(ê*8 ÿÿÿ YEí YEs}º YE< YE8aÿÿÿ{"o†(ãþ(ê*{"o‡(ãþ(ê*sD zo5 (# (2 rKpo. (" o—þ(ê*(âþ(ê*(# (2 rKpo. o—þ(ê*(áþ(ê*(åþ(ê*o5 (# (2 rKpo. (" o—þ(ê*(# (2 rKpo. o—þ(ê*(áþ(ê*{"o†(ãþ(ê*(âþ(ê*{"o‡(ãþ(ê*~¼ (ãþ(ê*(è*(çþ(ê*(C _þþ(ä8$üÿÿ0 (! þ(é*z(Ø þ€¯(ØsÔ €°*V( }²}³*f{²(E {³(* *(ë *0‰(ì (í þ(Á+*:( }´*B{´o„*:(â }µ*>{µo *( *JrKpo. (* *0] (G ,Q (H (I (G (H (J {K sL oM ,sN (O * +¥*0+{P oQ {R oS {T oU &*0F‘ oV sW (X ,(Y *(" oZ (" X(# (" Y*V([ }\ }] *0/’(” (\ {\ {^ {] s• o– þ*V([ }_ }` *0.’(” (\ {_ {^ {` s• þo– *0d}a }b }c }d }e }f }g }h  }i  }j  }k  }l (m *0ß“{k YE +88G8Û8ž{a {P ¥fon }j }k {j o¤ 9K{j oo }b {b (p }c {b (q }d {c u¢9„{c t¢}g {g {r }h {h os }i {i ,(}k {d {i (Â+s˜ }l *+}i }h þ¢}g +a{c t }e {e {t }f }k {d {f s˜ }l *þ¡}f þ }e þŸ }d }c }b 8¥þÿÿ}k {j (Ã+}j }k }l *0”Š {k YE+8o{k E ++$+ ++++}k {j (Ã+}k }l  Þ t4   Þ&8wÿÿÿþ,z*[w ê{k E +++ +++****"{l *08/{a þŸþ þ¡þ¢ s} *(u *&sv *:(w }x *0•(y (z {x þþ*:({ }| *0E–(y (z (\ (” {| /Œ¡s} (~ +( s€ *:( }‚ *V{‚ (ƒ o„ *:(… }† *j{† (z (\ o‡ *([ **(ˆ **(ˆ ***o &**þ(Ä+*.þ(Å+*(Œ *0!˜( (Ž ¥o(Æ+s *:(ˆ } *B{ o‘ *(’ *&(“ *0 ¾šsb 2+o* %3 Xþþ+,)sÖ sd(Ç+o” oh Œi*(• ,X8‚ÿÿÿo* %YEX8SÿÿÿXþ(;*ús(È+€€Ðp(0 o# €€€ €*(– *Frß&p(— s˜ *:( }Ì*B{Ìþoï *(™ *0 (š (›   (É+ s *:( }Í*B{Íþoï *(™ *0 (š (›   (É+ s$*:( }Î*B{Îþoï *(™ *0 (š (›   (É+ s(*:( }Ï*B{Ïþoï *(™ *0 (š (›   (É+ s,*:( }Ð*B{Ðþoï *:( }Ñ*0}{Ño  s0*(œ *0  ( (ž   (Ê+ s2*:( }Ò*B{Òþoï *:( }Ó*0}{Óo  s6*:(Ÿ }Ô*0¡{Ôo  s8*(¡ *0 ¥(¢ (£   (Ë+ s:*:( }Õ*B{Õþoï *(™ *0 (š (›   (É+ s>*:( }Ö*B{Öþoï *(™ *0 (š (›   (É+ sB*:( }×*B{×þoï *(™ *0 (š (›   (É+ sF*:( }Ø*B{Øþoï *(™ *0 (š (›   (É+ sJ*:( }Ù*B{Ùþoï *(™ *0 (š (›   (É+ sN*:( }Ú*B{Úþoï *(™ *0 (š (›   (É+ sR*:( }Û*B{Ûþoï *(™ *0 (š (›   (É+ sV*:( }Ü*B{Üþoï *(™ *0 (š (›   (É+ sZ*V(¤ }Ý}Þ*Z{Ý{Þþ(Ì+*r(¦ }ß}à}á*0 ${á{à( {ßXþ(+*r(§ }â}ã}ä*0 {â{ã{äþ(*²}å}æ}ç}è}é(¨ *0±{èYE + +h+[8€{å(Í+¥uo© }ç}è{ço¤ ,0{çoª }æ}è{æ}é*}æ+Ã}è{ç(Î+}ç}è}é*0‡Š {èYE++e{èE + ++++}è{ç(Î+}è}é Þ t4   Þ&8„ÿÿÿþ,z*Qj Æ{èE + + +++***"{é*0 {åsd*BSJB v4.0.30319l(µ#~”µ€n#Strings$ø&#US K#GUIDK@d#BlobW¢ ú3Méi)'ªø¥[avðQÎaZ®ZλgZuZ» ìÖ ‡` tÖ'gª† ÇÖÖ†oJ;?„r;©µr;ÛåZ;Z ,Önb¢ˆg|g¢ŽZ¿Z I,„ˆw« †mÍZ( ˆ“ “: g ˆŸL k Ÿ ˆ«– ã ˆ³Ý '. '[ «h «o «z «€ ¦ Z«Ä «ë  ˆßý O ˆçJ Ž ZÍ ® ß ˆ÷Ù “(“^–­;V.<!lZ¬Z;ö ÖrFgX™Zër!B!w!ÕÄ Ö XÖ‚rŸr¸rÏrêr"6ZlL€Lœ‰{°ÝZ Ö‡ nÖlWœL Ó· ï· !Ö Zx Z » Ö ÿ Ö !Ö4!‰Q!‰l!‰¯!Z Ø!Ö‡"F"» É"Ö å"Öû"‰#‰ #Ö ”#Ö m$,Ù$! ç$, ì%Öø%!&Z&» a&, Š&Ö:'»¯'ZÍ(Z)Z4)!) d),p)b¸)®)Ã)®) Ü)Öð)Z*Z4*ˆR*†*®)Ï*¡*Oœ*Sæ*!++q+ˆ+JgÞ+A, f,m ,m‘,+©,“$-“A-“N-“X-“t-“-“Á-“×-“á-“è-“ý-4.Z<.O.ˆ³D.«[.³i.o.x.Œ.ˆË‚.ã.+C/Zu/r‚/rÖ/ˆãÌ/O6j00¸1+Í1;Þ1;|2‰Œ2‰¬2ZÁ2Z \3Öç34Z;×4ó4†5Z'5'56J3 626ˆ;!63N6Öˆ;À67ˆO7$7;«69]9ˆ˜9†Ô9»à9»ö9† »:Ö+;ˆÜ;a<®)m<®)g/= @,#@ZM@Zj@Z u@m $7` %Am .AmOAZ|ŽAZCuCD‰ØE+óE+%F+ TGÖ“¼G'HHEHHßkH•HvHŸÁH%IˆçI“nI“¾I“ÒI“ßI“óIë{Jç J“MK“K“¦KËK†*ÚKg´&!LM*MwaM;lNxN;‡N;èN;O;O;'O;SO;ÅO; P;%P;HP;ÃP;@Q;èQŸ,R«7R«ERGbRkR+;£R9SSSSS;wS‚SJ öSÚSßETG¥TG®TçgVòVˆˆ\ZwÝ\5]ˆwÂ]“û]V^®)k^ˆ±`®)ÿaa)aÿÇaøakb+bÍc_Þc;dWeˆ÷e>f+eg+3¬g;h^hZÉh!)ûhZXiZeiZ¹ir@jrkZslZ‚lZ¼lZQ |q€ ž@…ãL$è L$ï Nô P  R  T +e!6l a;n‚〠—;€ Ÿ;8ˆ!§; ‹!®;  µ;"š€Å;$¤ Ê$¥€Å$§€>;$§D$¾%T"(Á%Ÿ"-Ç ª&3Í ·*4Ï Ä.5Ñ Ñ26Ó Ü&7Õ é*8× ö.9Ù 2:Û &;Ý *<ß *=á…ã@ñ >Bñ N>Fø Ý>Hú ö>Jü%BKþ &FV ŽJW ÀNX êRY   V[  Z\ 1] @^_ Qb` ®ba ¿fe Îh ßfl' émm)  ^q2 br4 0bs6 Cfw8 Ty: jj‹P vn‹R ‚rŒT ›rV%§ŽX ³vZ Éz\ Õn^ ßn‘` ên’b õ~“d ~”f  f•h ~–j !‚—l Vn—n a†˜p lŠšr ŠŠ›t •nœv  Žx ¿ŽŸz ÊŽ¡| ÕŽ£~ àf¥€ ëЦ‚ öf§„ Ѝ†  n©ˆ 2’ªŠ V–«Œ ”®Ž ¥²“%µ¸™ š¹› Úžºå»Ÿ ýÁ¦  ¢×µ , ¦Ø· @ ªÙ¹ | ®Ú» ¤ ²Ú½ é ²Û¿ " ¶ÜÁ [ ºÜà ’ ¾àÅ £ ÂâÇ ¸ ÆãÉ Ï ÆãË æ ÊãÍ ý ÎæÏ  ÒæÑ " ÖæÓ ; ÚçÕ … Þè×  ÚéÙ › âêÛ ° fëÝ » æíß È ðá à êóã ñ îóå  öç * ò÷é W øë…ãûû n ýû…ã  Š  …ã ´   Ë f) Ù +%è - ú f/% 1 " f3%2  5 F $7 \ j,= h j.? v n/A ‚ 0C – 3E ¢ 3G æ 4I…ã9] ÿ =] &Gj  &Jl T*Nn _.Np w&Rr 2Ut Ÿ6Vv ²&Vx Á&Xz Û:Y| û>[~ B]€ ;n^‚ G&`„ SFd† lFdˆ w dŠ ›d%Ýh‘%l“%"m• Œfn— ¨Jq™ ÃNu›%Þw õ‚Ÿ  R”¥ V•§ Jf–© aZ˜« ‹Z™­%–𝠡^›± Èb›³%Óœµ ÞR· êfž¹… » 4j ¾%j¤À…w©Â!…5©Ã…«©Ç€>©Êµ;©Ê »n©Ì ÆrªÎ Ïv«Ð Ýz¬Ò ù~¬Ô v¬Ö;¯Ø€2 ¯Û ;f²ì GV´î Sn´ð bµò sf¶ô€‡ ¶ö œ‚¶ù ¥‚¸û%®†ºý ·ŠÆ ÂŽÆ Ë’Ç Ø–È  âšÉ  ì‚Ê  öžÊ žÊ%Ê 1¦Ê IžÊ _ªË€ª†Ë€® Ë º®Ì ånÌ  ô²Í" nÍ$ 7²Î& \nÎ( u²Ï* ŒnÏ, «²Ð. ÈnÐ0 ârÑ2 ü¶Ò4 nÒ6 0rÓ8 LºÔ: h¾Õ< ‚nÕ> ©²Ö@ ÎnÖB è²×D n×F %²ØH HnØJ [²ÙL lnÙN ²ÚP nÚR ±²ÛT ÐnÛV ê²ÜX nÜZ ²Ý\ *ÂÝ^ 1Æß` :Êâb%GÎådÓûäë ÿ V€è V€ï #!} #!˜ 8#u 8# H#|X# e#Šm#™r# ,%Òe#Š4%¾:%ÜK%ëc%ë#Â& 3Ç&43Ö&43â&4V€š& V€ª& V€´& R'©W' …' õ' ú' I()Q(-h2.#r23#†28#”2 v3²$+ y3Ô~3 W' v3²$û3O#+ y3Ô~3 W'  4%4„#4S%*4S# 4%4„#4S%*4S#4%4„##Â& 3a4Ü%3s4Ü%V€54 V€K4 Á4*&h2.#Í4@&á4 F:*P:o:*P:}:¸*}:¸*¨$Ä*€:…&o:*P:Š:¤&F:*•:y3ã*~3 W'+N6(-N6(-N6(-N6(- 6ç'A:¬-þ:û) ;.#;;b*8.q;D.¬; ¸; Ä; Ð;}.b*8.i*›.y* .-›.h2.# ;.#Y<.#ì<.#-›.ú<8.ô0ó" = ª=8.q;D.¬; ¸; Ä; Ð;}.¨$y* .-›.ô0ó"(? C? G? Q? _? h?Ë u?¥ ƒ?&š?&²?&º? Ó? ô?ð/@ @ 60¥ –.0¹D0¹D0öDo2E0–.0–.0–.0–.0–.0–.0–.0–.0–.0-›.–.0–.0–.0–.0-›.–.0-›.–.0-›.–.0-›.–.0–.0-›.–.04ø/*4R#E&5E&FE*Ì,0ô0ó"mE xE h2.#«E–3Ì,0´E›3¿E£3éEm–.b44¸44è3ÐFY5ØF(-ßF^5êFc5óFh5G ŒG²$™G ¦G¨5¿F^5-›.Á4*&h2.#°G­5Í4@&Ì,0ô0ó"5,ÎG ÖG ãG îG²5á4 õG¸*H»55HÀ5UHÅ5`HÊ5"Ue6.Å5$E02ƒì#˜Gp2ƒ¶# I¸2ƒ $ïIX3|SKÔ3ƒÎ%àT84ƒÛ%j UÀ4ƒ…$]VÐ4ƒß%Vä4ƒW$Ü Xø4ƒ”$Y5R&¯Y6x&6Z@6ø [d6|œ[t6ð&8\|6†û&v \ˆ6'8\6†'v \œ6'8\¤6†$'v \°6†Ð!X \¸6ƒ "q \Ð6æ0'n\7æ0't] 7æ0'€^p7æX"µ `¬7æX"X a¼7æ¤ aø7椌c08æ¤I dT8|et8†@&X e„8†4&T eÄ8†”$eÜ8†I$*e9†j'*f49†r'T g„9†{'T g¼9|gÔ9†Š'T gà9†“'*gì9ž'¾hü9ä'¾j@:†(X lH:†(X lP:|èlh:æ0'nÜ:æ0'toì:æ0'€pd;æX"µ r¨;æX"X s¸;æ¤ s<J'u(<†%(èvp<æ¤x¨<æ¤I yÌ<|zð<†Z(Czü<†ð&T {=†r(T { =†~(X {=†­( {H>†¾(|d>†Ü(}”>í(Ä~˜>†ù(T ~,?Î)á~?|˜?F"ð¨?%*Ê€à?M*ô?+ʆH@O+I‡t@,«ˆØ@¹,b‰èA-xŠ,B.í`B.TœB».—–¼B / ™hC‰/K ¬CÃ/Ž ¡D)0U!¥„DB0ƒ!©D´0«XEÑ0¹!«”EÝ0Æ!­¬E1æ!°¸EQ1q"²tF02ê"º¬G=2þ"¼ÄGO2$#½àG|C#¿HƒG3#ÀtIƒN3£$ÁŒI|¶$üIF¯3æ$È€JFÁ3É$KFÇ3v ÉXKFÖ3X ÉdKFè3ü$É„K|%ɼKF¯3æ$ϘLFÁ3Ð_ƒ¨< /?4_ƒ±< /@P_ƒ»< /Al_ƒ'!/Bx_ƒ'!/B„_ƒâ=x/IL`ƒN=v JX`ƒ]=Jd`Æm=€/Jx`Æz=€/K„`ƈ=X L`ƒ=Lä`|=.Lô`F" .Ma|Q.OaF"t.P,a|‚.RTaF"t.V„a|†/XœaF"ç.Z8c|1[4eƒ£A^ÀeƒÊA^lgƒÓAv ^xgƒáA ^„gƒïAT _gƒBU)_œgƒBU)_¨gƒ8BU)_´gƒDBD1_ÀgƒPBv `ÌgƒhBv `Øgƒ…Bv `ägƒ¤Bv `ðgƒ±Bv `ügƒÖBM1`hƒæBv `hƒîBv `,hƒC*`LhƒDCl1a¼hƒõC2cÌjƒcD2d”l|eœlF"?2eÀl|E2fÐlF"U2gm|[2h$mF"h2i4m|[2jDmF"h2kTm|~2ldmƒ"—2mxm|o€mF"ž2o”m|°2p¤mF"·2q´m|E2rÄmF"U2sôm|E2tnF"U2u4n|E2vDnF"U2wTn|E2xdnF"¾2y|n|E2zŒnF"¾2{¤n|E2|´nF"ç.}Ðn|E2~ànF"¾2øn|€oF"Ä2€o|E2,oF"U2‚@o|Í2ƒXoF"à2…Ðo|E2†àoF"þ2‡ p|E2ˆpF"þ2‰Hp|E2ŠXpF"U2‹lp|Í2Œ„pF"3Žœp|Í2´pF"3‘Ìp|Í2’äpF"3”üp|Í2•qF"3—,q|E2˜3£×ƒ¾T0BÚ †ƒâTX à8†ƒUsBàp†|~BဆF"™B┆|¢B㤆F"©B丆|°BåȆF"ÆBæ܆|èä†F"ÒBèð†|ÛBé‡F"òBê0‡|ÛBì@‡F"òBíp‡|ïx‡F"Cï|‡|Cñ¤‡F"lCõø‡|tCöˆF"Cø<ˆ|ÛBùLˆF" Dú̈|üÔˆF"8Düàˆ|ýèˆF"8Dýôˆ|DDþ‰F"vDl‰|t‰F"‘D|‰|„‰F"¢D‰|ÛB ‰F"Å:´‰|°BĉF"ÏD ä‰|ìD ô‰F"óDŠ|°BŠF"ÏD4Š|ÛBDŠF",E¸Š|>EЊF"ç.èŠ|VE‹F"cE(‹|oET‹ƒ¹VCFlŒ|!tŒF"cF!€Œ|wF# ŒF"—F&ÌŒ|*(ÜŒF"ð)ìŒ|°B*üŒF"³F+ø ,(|œ,8XÅF-@ƒ3Xv -LfXÅF-TƒvXv -`ƒÐ!X -hƒ "q -€æ0'òF-Àæ0't.Ðæ0'€/ ŽæX"µ 1HŽæX"X 2XŽæ¤ 2”Žæ¤G4ÌŽæ¤I 5ðŽø 6|œ6 YG7 ƒ?Yv 7,`YG74ƒuYv 7@ƒÐ!X 7Hƒ "q 7`æ0'AG7 æ0't8°æ0'€9æX"µ ;(æX"X <8æ¤ <tæ¤PG>¬æ¤I ?Ðø @‘|œ@‘qZhGA‘ƒˆZv A$‘¡ZhGA,‘ƒ¯Zv A8‘¿ZhGA@‘ƒÏZv AL‘áZhGAT‘ƒûZv A`‘ƒÐ!X Ah‘ƒ "q A€‘æ0'¢GAÀ‘æ0'tBБæ0'€C ’æX"µ Ed’æX"X Ft’æ¤ F°’椱GHè’æ¤I I “|€3J|“ƒ·[ HLˆ“ƒÒ[HL”“ƒí[HM “ƒ\HN¬“ƒ\%HN¸“ƒ0\OГƒ:\7HOÜ“ƒ“\IO—ƒ¥\œQ`—|Rh—F"ç.Rl—|St—F".IS€—|@IT —ƒ"WX˜|@IWx˜F"ç.Z˜˜|@I[¸˜ƒ"jI^è˜|oI^™F"ç.a(™|yIbP™ƒ"f(›|ÛIf ›ƒ]Jm8œƒW]7Jmdœƒ]^Jnxœƒ¨]~Jp´œƒ-^ Kq$|Ks<F"?2u¤|VKv´F"?2w ž|=.xžF"U2yLž|}KzlžF"ßK}èŸ|~ðŸF"ìK~üŸ|ñK  F"L€  ø P |œ` 8_L‚h ƒB_v ‚t N_L‚| ƒ\_v ‚ˆ l_L‚ ƒz_v ‚œ Š_L‚¤ ƒ©_v ‚° ƒÐ!X ‚¸ ƒ "q ‚Рæ0'GL‚¡æ0'tƒ ¡æ0'€„p¡æX"µ †´¡æX"X ‡Ä¡æ¤ ‡¢æ¤VL‰8¢æ¤I Š\¢|hL‹È¢ƒÿ_™L”H£ƒB`çL˜£ƒU`Mœ¤ƒi`5MŸX¤ƒz`?M¡p¤ƒ™EŠ3¢|¤ƒ`|M¢Ô¤ƒ»`šM¤ ¥ƒì`N¦8¦ƒý`"N§L¦ƒcawO« ¨ƒta·O¯à©|ÏO²ªF"ÞOµª|P¶DªF"ÞOº8«|»@«F"úP»L«|Q½t«F"AQÁ ¬|PQÂ@¬F"ÞOÅt¬| Æ„¬F"^QǬ¬|È´¬F"hQÈÀ¬|rQÉجF"ÞOË ­|~QÌ0­F"ÞOÍ`­|t!Îx­F"“QР­|t!Ѹ­F"´QÓà­|~QÔð­F"¼QÕ@®|ÄQÖX®F"U2Øt®|ÎQÙœ®F"ÞOݹ|Þ¹F"bRÞ(¹|ß0¹F"bRß@¹|àL¹ƒ bàX¹Æbà\¹|nRà˜¹Á6bv âºÁ£b#⸻ÁÛbãÌ»| Rãô»ƒ"çX¼|PSçh¼ƒ"èx¼|\S茼Æ0\éȼ|cSéè¼F"ç.ìp½|¥S혽F"ÑSñȽ|Û!òà½F"Tô<¾|>Tö¤¾ƒ"Á|ÉUüŃ0\ ƃÿ1|ʃ¹f”ʃûf^VÈʃƒUŠV,Ë|V<ËF"—VLË|V \ËF"­V ÀË| # ØËF"ç. DÌ|[2TÌF"ÔVdÌ|[2tÌF"ÔV„Ì|ìV”̃"W¨Ì|°ÌF"WÄÌ|VÔÌF"3WÍ|V̓"AW0Í|V@ÍF"—VTÍ|IWlÍF"hW„Í›grH Í@h»Y!цhÞY'@Ñ|îY+hÑF"Z/üÑ|Z0,Òƒ",Z5€ i6Z7ƒ|ñ9Ã"jI;ÃLi>Z;Ã{iIZ=dÒŒiPZ>ÒÄi}ZAÈÒãi¨ZEÓj¨ZFhÓjM[GÜÓ|a[LìÓF"~JMÔ|k[NÔF"ƒ[O4Ô|*PDÔF"[QXÔ|R`ÔF"“[RlÔ|StÔF"›[S€Ô|¡[T ÔF"[W@ÕÍjXHÕßj`XPÕ%k\X°Õ~k\YŒÖ˜k\äÖ»k$\]¤×ÙkI\`äØëkk\eLÙúkI\j„Ùl…\oèÙl…\s8Ú.l•\wpÚ@lÆ\|ÛhlI\„`Û™l]‰˜Û¤lI\ŽìÛ²l]“8ÜãlR]– àìlR]žHàø ¦hà|覀àF"ç.¨œà|©¤àF"­V©Èà|]ªØàF"U2«ìà|*¬üàF"ð­ á|®áF"ç.®(á m^¯”ámf^²Ìá/mš^µ â|0¸8âF"Õ^ºtâ|0»ŒâF"Õ^½Èâ|¨¾8ãF¯3x_Ê$åFÁ3ËÔåFÇ3v ËæFÖ3Š_ËæFè3•_Ë`æ|ËhæF"³_Ëtæ|œÍ„æF"Ø_άæ|œÏ¼æF"`Ðç|"Ñ çF"G`Ò8ç|VÓHçF"T`Ôdç|ÕlçF"Õ^Õpç|ÖxçF"f`Ö|ç|ׄçF"f`׈ç|Ø”çáÅmt`Ø çánz`Ù¬ç|Û´çF"º`Ûäç|õÜôçF"f`Ýè|ÞèF"ú`ÞèYnHaßèèø å(é|å0éF"kaåDé|a[æTéF"~Jçhé|èpéF"¿aèœé|a[é¬éF"~JêÀé|ëÈéF"¿aëôé|a[ìêF"~Jíê|î êF"¿aîLê|a[ï\êF"~Jðpê|ñxêF"¿añ¤ê|a[ò´êF"~JóÈê|k[ôØêF"ƒ[õüê|öëF"Lbö0ë|a[÷@ëF"~JøTë|k[ùdëF"ƒ[úˆë|‹bû˜ëF"­bü¼ë|ýÄëF"[cýðë|a[þìF"~Jÿì|ìF"¿aHì|a[XìF"~Jlì|tìF"¿a ì|a[°ìF"~JÄì|ÌìF"¿aøì|a[íF"~Jí| $íF"¿a Pí|a[ `íF"~J tí| |íF"¿a ¨í|a[ ¸íF"~JÌí|ÔíF"¿aî|a[îF"~J$î|,îF"¿aXî|a[hîF"~J|î|„îF"¿a°î|¢cÈîF"¼càî|ÁcïF"àc0ï|çcPïF"îc!|ï|d$¬ïF¯3+d)lðFÁ3*ñFÇ3v *DñFÖ3q *PñFè36d*l£££££Ê£Êò££££££££—vºvv' + - v2 O « ' î ' !!d"ª"d"ª"ª"!!ª"ª"X#e#H#®#è#è#è#è#Q$è#¨$ª$è#ª$è#ª$è#Q$ª$è#Q$ª$è#ª$è#%%X#,%e#z%‡%%±%Ä% ®#è#è#è#Q$è#_&_&Â&ª"ª"ª"d"d"ª"d"ª"ª"e'e'œ'¦'ª'é'ï'¦'ª'ª"ª"ª"d"d"ª"d"é'é'-(ª"ª"p(¸(Ë(Ë(×)¨$/*b*i*r*y*}*O l+5,Ì,- -p(...–.›.¦.­.i*µ.–.Å.}*/$/1/}*—/¦/²/}*à/ê/ü/0à/ê/060ü/`0—p(Ì,ô01l+5,l+p15,z1ô0Š1 1ê/ô0}*ô0¨$d2h2p(W3p(v3+ y3~3W'¼3v3û3+ y3~3W'¼3 44444$4*4/4 44444$4*4/4444$4Â&ª"ª"ª"d"d"ª"d"ª"ª"Í4á4Á4h2N6ƒ66¨$vN67œ'Ê9Ï9A:ª"F:P:A:ª"o:P:w:ª"}:A:ª"}:¨$€:o:P:Š:F:•: y3 ~3 W'¼3N6¨$N6¨$N6¨$N6 6ú:A:ª"þ:}* ;';W;+ i*r*y*b*k;/4q;ž;¥;¬;¸;Ä;Ð;ü;ž;b*i*y*}*-h2 ;' ' ' ' ' ' ì<' ì<µ.-ú<ô0y*y*y*ª=k;/4q;ž;¥;¬;¸;Ä;Ð;ü;ž;¨$y*}*×)-ô0œ'œ'C-SC--¨D–.—¹DÕD¹DÕDöDÿDš<öDEµ.–.O –.O –.O –. E–. E–.}*–. E- –.C–.-- –.W3–.W3–.C–.-SC–.-SC–.-SC–.-SC–.}*–.W3-}*–.µ.4$4*4/4#E5EFE¨DÌ,ô0Ì,«Eh2–.444$4¸FN6¿F­.7ÉFŒG-™G5,h2¦G¿FÍ4 Ì, ô0 °G Á40¦.0G?bJvJ0..0.ØL0MM0.60ÊM-ÖGR0¦.G?ÌTbJ›.+ "Uü;.O iEiöDsi…iv—- v—Üi- p(p(&jíU.j5jmHmè#–.è#¨U–.è#¨U–.SmQ$è#€:^mŠ:em sm y3 ~3 W'¼3 EŠmm¨U›m¨U–.¨$–.¨$ªmµ.µ.ª"¨$6n¨U8n+ Šm« ' dn- v+ ¨D*4/4¨U*4/4¨U*4/4¨U*4/4¨U4$4*4/4¨U444$4*4/4¨U*4/4¨U*4/4¨U*4/4¨U*4/4¨U*4/4¨U*4/4¨U*4/4¨U*4/4¨U$”\ b œ|œé¾ œÿ#% \I$t”^$-Ùx$6Ù€$Q|+${¤M% ¬"j ´|¼\ b ¼±$òɶ$Ä|0ÙÀ$>Ì|Ô\ b Ô±$òÜ|0ÙÏ$Àäé¾ äÿ#% ä|ì|ôM% Ìé¾ \Ç$v|¨éñ$ô”Q X $|Ùø$],|œ4ÿ#% 4é¾ <|œÙ%âD|"Ù%.L|VT,%ÒTe#Š\|ÜT4%¾\|T:%Üd|TK%ël|Tc%ë„ÿ#% t||"j \$N„|"j <"j \…$]\M$\W$Ü \”$„|Ü Œ|”|œ|¬¤&Å +&v ¬4&% ´ÿ#% Œ@&X ´|´é¾ ´I$Ü ¼|ŒI$Ü Œ#ó¼é¾ J&Ä|é%n&ÙÔ|¬Ü|õä||ô|*ü"j |@&X #óI_' ”$I¤¸I$Ü )·'Ä)Å'Ä)Õ'Ä (óIˆ(yI’(T I—( |‘+${Iˆ(¡ £(¦ é¾ ÿ#% |¬"j éÀ$¶é%Ï$|1Ò(,|Ü 4|Ü <|Ü Á|9)¬AF)I7$±Qy)À)‚)Æ)”)Æ)§)Í)'Ó)'Ói|q|<|I*ðI *õ<*ý‘‹*Ê¡×* ©ñ*ðDM% ±(+3!|œ±:+9¹u+`4‚+% L|*Á›+ˆ±¤+X ±¸+T L²ÉÁ+«Éé+±Éù+·‘N,áÙy,çá‹,ÿT\ b T±$ò\&Åd4&% ±£,%ñ´,*‰×,T ‰î,*l"j ù3-›t\ b \ ©`-¯!›-µ)Ì-»|+${ù.„|*YË.ÐÜ"j ¡|ñ±|÷±ï.*±ø. ±‹,±$òIL/$ !S/* ¡h/1 Œÿ#% Œé¾ Œ|”^$-” 0% œé¾ Ñ0À¤ÿ#% ¤é¾ ¬|t!Ùv0›!„‚+% „§0Ü ´|Û!¼|*Y51ÐÄ|Ü Ì|Ü ±xO"ñÖ1«"ùñ1±"ÿ1v ±2a2·"É2½"Ô| #"#| š2=#¯2Ä Ê2‘#éá2—#é2‹,ï2ô2¥#3‘#Ü|*3X 3X %3X 13X äà ì|*ô"j IB3P$!| D|)”3Å$Ÿ3Ñ$J&Ö$L|L"j T|T"j \|\"j d|d"j |* "j A'5Ã&ù35É&ùF5X ùU5X ùd5X ùt5X ù‚5v ù•5v ù©5T AÁ5'AØ5X Aè5<'A|B'i|ì'y|(¡T6D(Qa6J($\ b $±$ò‰i6\( o6T ù’6v A©5T A¬6£(AF5X A35É&AU5X Ad5X At5X ‘Õ6»(,M% 4é¾ 4ÿ#% ‰ê6ã(<+${©37/)©>73)¡M7v ¡t78)¡‹7I)¡Ÿ7v ¡²7v ¡Ê7U)¡Ù7v ¡ñ7v ¡8v ¡)8v ¡C8v ¡\8v ¡q8v ¡‹8v ¡ž8v ¡°8v ¡Ó8v ¡÷8v ¡9])¡9c)¡D9i)¡|y)¹g9¼)‰y9Ç)‰…9Ç)Á 9Ð)a®9É&*Ù:*‰:\(‰:\(‰:H*‰:Ç)|| a6€ ¡T:… „"j Ye:“*D"j „|ùš:½+L&ÅT4&% #¾ \é¾ \ÿ#% #% dé¾ dÿ#% Œ|a¬:4-áÈ:B-”|aÑ:Z-œ|aá:t-¤|aï:˜-¬|´|Ñ;q ÑMq l|t||+${Á”$.Á ; .é3;dII;.¼|Ä|ù‚;`.ùç;Œ.Ì|¹<°.‰)/‰>v ù4>—/ùI>³/q-@9?@!0!]@'0„\ b ”\ b 1„@30‹@F0¥@Y0³@f0ÙË@6ùÐ@v0‰å@v )ô@ÀA09A“0I?AÊ0œÿ#% „±$òù]Aã0‰qAT Y•AdŒM% ‘®AÊÜ"j CZ1ù*Ca1aeC|1i„C‰1”\ b ”±$ò –C¨1a§C¶1a´CÃ1aÂCÑ1 ÓCï1aåCü1œ\ b œ±$òYDdaD|1Y+Dda>D 2YLDdÔ| rD32qDT ‘œDÊÜ|ù°DL2œ|”±$òä|ÅDb2ãDb2¤²ì|á|ñô|ü|D+${|„Q X „#ó |‰ E |Eò2¤ |$|$"j ,|QQE]34§0Ü Ù]Ed3¬+${y| Fv ‰0FÛ3)SF)dFú3)xFú3)ŒF%´|*¼²¬M% Ä|*Ì"j Y³FX 4|4"j <|<"j ‘|‰£Hv ‰±Hà5ÁÖHv aßHæ5Ôé¾ Ôÿ#% aúH6¡I 6‰I6±|6Üÿ#% !ƒIÈ6ÙI×6ù¥I7ä\ b ì\ b ô\ b ô±$òùJ&7)JG7ü\ b ü±$òÜé¾ Y*JX7„@À7YJÊ7y”JÐ7 ²JÖ7ÑÐ!X #Ý7zL9‰OL“9‰hL£9ù„L«9‰L£9ÿ#% é¾ $é¾ Ù®Lþ9‘³L,:,|„^$-Q6M;IEM;ItM6;ÙMI;IŽMp;IMp;Ù®M”;4ÿ#% 4é¾ Ù7$Ô;Ù´Mý;ÝM†<ùôM’<ù N©a¸+T aßP1>aìPF=aQv aQX a)Qv a3Qv a]@7>aKQU)a`Qv alQv aQv aQX a¢QX a¸QX aÆQT aÚQA>aôQG>a|U>ùsRX?ù*=_?Lé¾ Lÿ#% LyRv?L£(¦ƒR{?Tÿ#% T£(¦!™Rã? ±Rî?ÆRô?‘ÖR @úR@ HS@ HS@aS*@! ‰S:@a¬SP@\é¾ \ÿ#% y¿S¨@d&Ål4&% ) TÁ@¡Tv ¡9TË@q#Ö@t&Å|4&% á£(ò@1 TTø@¹pTþ@ÁŽTA‰œTA‰¶T.AÜ|!ñTd„|*I Ue Œ\ b Œ±$òD|ù)U‰BL|T|CU·B\|IbUÈÛ8 >£8 >Û8 >£8 @>Û8 @>£8 `>Û8 €>Û8  >Û8 À>Û8 à>Û8 ?Û8 ?Û8 @?Û8 €?Û8 €?£8  ?»õ À?Û8 À?£8 à?» @Û8 @£8 @Û8 @£8 @@Û8 @@£8 `@Û8 €@Û8  @Û8 À@Û8 à@Û8 AÛ8 AÛ8 @AÛ8 €AÛ8 €A£8  A»õ ÀAÛ8 ÀA£8 àA» BÛ8 B£8 B»=@BÛ8 @B£8 `B»nG€BÛ8 €B£8  BÛ8  B£8 ÀBÛ8 ÀB£8 àBÛ8 CÛ8 CÛ8 @CÛ8 `CÛ8 €CÛ8  CÛ8 ÀCÛ8 @Góe @GÛ8 `GÛ8 €GÛ8 @IÛ8 @I£8 `I»õ €IÛ8 €I£8  I» ÀIÛ8 ÀI£8 àI»=JÛ8 J£8 J»nG@JÛ8 @J£8 `JÛ8 `J£8 €JÛ8 €J£8  JÛ8 ÀJÛ8 àJÛ8 KÛ8 KÛ8 @KÛ8 `KÛ8 €KÛ8 €Lóe €LÛ8  Lóe  LÛ8 ÀLÛ8 àLÛ8 MÛ8 MÛ8 @TÛ8 `Tóe `TÛ8 €TÛ8 àXó°:YóZ `Û8 `£8 @`Û8 @`£8 mÛ8 m£8 mÛ8 m£8 .K  › ® ¹ à æ ÿ ‚ ) 1 u } £ Î  ×ÿ?_}‹†ë›êl|¾Ñ–þ+Yv~‚+™bŠCÏ!)=GVZdm|[Ï$4yˆ’Èîù [_mtë!*2;?Z£§Ù&@R¾ÍÔÜ1rüK‘±¶þ  B W c h x ¥ ± Ë !¢!°!""'"U"‘"–"Ç"ó"ø"J#O#S#j#r#„#W$ñ$%@%y%S%¯%Ü%&$&d&i&n&…&¤&ƒ'ç',(;(?(b(–(ð(*)Ü)ö)û)**U*™*f,Ò,..&.D.}.Ó.8.Ä/ø/00000é018#92Q2×2í2ø243¼3ã3è3E4›3¥4¸4ì4Ï5Û56e6n6‹6­6²6·6Ã6c5a7£7¨7±7¶7»7²58Å578<8A8F8O8 9@9I9d9Y5^5F:Ò:à:å:û:/< =#=(=-=’>(-h5®>Á>Æ>Ë>Ð>å>›.ê>???(?²$,?6???I?N?S?HAëBœC¥CúCkDùDEyEÊ5…EŠEEFÀFùFGHGWGcG©G¸GAHFHSH`HmHÊH%IKI†IªIÍIôIüI.JƒJKb4(K8K]KnKŽK’K´KNL]LLàLüL&M+MHMmM¢M¬MµMýM9NMNRNWN\NlNqNïN’OLPÐPP'QYQQÜQáQcLRzR‡RóRJSpS}SçST©TÖTÛT?D‰UþUPVsV~VŸVÈV)W{W‹W™W§W°WµWÇWÒWYØY\ZxZ´ZÏZâZêZóZ)[Y[z[©[Ì[ý[\<\¯\¸\&]+]0]B]‡]–] ]®]õ]B^a^x^^Î^e__Ì_õ_‚`®`a,asa…a–aÝaùabŸb¼bybßb c $6 8"=#]/^0b1c79>ƒC…L”P–YÊZ¿÷0!½ ƒ!Ñ Œ!Ñ J w J æ J w J æ =#m=#m0!½ š&/¡&Ñ ª&/®&Ñ ´&/º&Ñ D'½ J'¥€'¥¦'½ ª'½ š&¥3(¥;(½ A(%0!½ 54Ö%?4Ñ K4Ö%U4Ñ ª&î.´&î.ï<½ W>Ñ a>¥o>Û/†>Û/ž>Û/¦>Ñ º>Ñ Ó>Ñ î>Ñ ÷>Ñ ?ã/$?Ñ bEz3¨E3¸F5N6 5¿F5­.&5795ÉFÑ hG¥|G¢50!½ CWºFpWÑ ŸWºF«WÑ 0!½ ˆXG£XÑ ÀXGÑXÑ 0!½ ŒY]GŸYÑ ´Y]G¾YÑ ÊY]GÖYÑ äY]GúYÑ W ÃG[ÉG([ÏG9[ÕG0!½ q^Lw^Ñ ^L‰^Ñ •^LŸ^Ñ «^LÆ^Ñ bEz3j÷«jí[EBD M O QSZhvpqrst!u#%‚'Š)‰)+Ž-œ/1ž3¢5ç7ã9ä;å=æ?$A%C0E>G=G?I@KAMCOBODQESFUGWHYI[J]’_–aŸc e¡g¢i£k¤m§o¨qñsíuîwïyð{}ýþÿƒ…‡ ‰‹‘“•—!™ ™"›$#&ŸS¡K£L¥M§N©O«P­Q¯R±c³ØµÙ·¨c¨Y¨ 5Ý* Ý( 1i #*1AHNUarˆ¡¯ÅÎ×àéö  )19BV_gr‹™¦´¾ÏÚãñü!+9MVs€Ÿ¿ÇÛéÿ $,4<DSbiw‡™¼ÍÙåïù ;EZdz„™±¸ÄÌÖÞìù'EThqy—¦°ÐÿKR[j:hy—Ïàû k ´  ‘ î H \ k Õ  : ^ K\«´Æã^ktJW‡”Üå$`i´á/LŠ”—žS’±ØLõ(;¸Áˆ›£·ÏÝåùäí Jf±„›«ãCKR-ii¡»m Ò Ý í l!Ó!,"="F"#±#ñ#þ#3$I$ç%&Ï&í&P(Ï(Û(é(±*á+,',4,È-Ï-Ü--0=1 1 22¨34:4n4™4ö5€6777P7ï7ê89Ñ9ë97:¿;f=#>d?Ï?@±@¹@à@é@QBkBâB‡C¿CÌCEE˜E®EËFéFG8G{G™GöGþGyH¡H­H¹I>JqJ›JªJ—K L>LSMcMÀMãM¢NµNÚN^P…P¿P…QŒR˜RÌRëR&S.S7S>SSÁSßSþSqTzTŸT2UiU€U:VCVÀVþVòWÿWXXuX­XÉXñXûX["[²]¿]È]Ñ]Ú]è]F^O^X^‰^¹^Å^á^ _2_D_¥_î_)`5`>`‹`™`¡`à`è`ñ`´cdd… i€pTh8ù˜·˜¸˜nZ øˆû6  !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„ƒ…†‡ˆ‰Š‹ŒŽ‘’“”•”–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¼¾¼¿À¿ÁÄÃÅÃÆÃÇÃÈÃÉÃÌËÍËÎËÏËÐËÒÑÓÑÔÑÕÑÖÑ×ÑØÑÙÑÚÑÛÑÜÑÝÑÞÑßÑàÑãâäâåâæâçâèâéâêâëâìâíâîâïâðâñâòâóâôâõâöâ÷âøâùâúâûâüâýâþâÿââââââââ¹ ¹ ¹ ¹ ¹ ¹  %%% %%%{¹ }¹ »¯$½¯$¿¯$¿lÁ¯$ï$ů$ɯ$Ù %Ù%%Û¹ @¯$R¯$Z¯$[¯$\¯$f¯$k¯$s¯${¯$l¯$¤ %¤¯$¤%%¦ %¦¯$¦%%¨ %¨%%ª %ª%%¬ %¬%%® %®%%°%%°¯$° %² %²%%´ %´%%¶ %¸ %º %¼ %¼%%¾¹ À¹ =p(?š<A¦<CË(ElG¯$M¯$W¯$›¯$ɯ$¯$G¯$Glí %í%%ílï %ï%%ñ %|G!G)` / Wú c} e} z} uP {“ { ƒ“ ƒ …“ … £Ó«:­:µ ½:¿:É”µ“ ÍFÏFìÈ«} ÝáUÝUëUù} ýFzë¡ úA¡£þ££0î”ð} c0ýLe} } cý} u\ŸG¡G³GË áœç ñ ç) ;ä !È!M > >çc mÓýÓMçeÙ#ƒø#e $D$mG~} “Ý$uú%ý 'cW(+=*“A,YN-Yh-Y‚-‡È.} M} L} <} >} @} •F/› V »GÝS0ÃGÍÃ0ÏÞ0Íä Ïä )G@çe41ÝG›} Ýä  Gš <çM'4Y M‹4 w6¿‡8Á‡8 £8Ù í: #:Z! ;ûa;È. y;´;æ; ð; %<~ ½?A@ ebBç!<ëCù YœD)žEGÁG  FáGuÞFu-GuŽG,Hi¿IŸžEmžE}G‘Gu3LZÓL¯ÝM·ôMϾNý¾NѾN;NÕ¾NݾNM¬P·“ jôMñQ›ÓL MáRY} còSr!M“T›\U»zUÍáUÏêUç z#WFYW cXåX)‚-eÁZùGÁh-áh-9h-Á¸[ ¾[ Æ[Gc:“Q_ “ i“ ý:m »Wa|41|ÁZ|úbK Í “"dfsi.exeFSIstrings.resourcesFSharpSignatureData.fsiFSharpOptimizationData.fsiSystemObjectmscorlibFSIstringsSRInternal.Utilities.CollectionsValueStrength`1IEquatable`1System.CollectionsIStructuralEquatableTagsStrongWeakStrong@DebugTypeProxyWeak@DebugTypeProxyAgedLookup`2MruCache`2ListMicrosoft.FSharp.Compiler.InteractiveStyleIComparable`1IComparableIStructuralComparableHistoryOptionsCursorAnchorReadLineConsoleMainMainMain@39Microsoft.FSharp.CoreFSharpFunc`2FSharp.Core.$Microsoft.FSharp.Compiler.InteractiveShellFsiTimeReporterstartGC@124Microsoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1spanGC@130TimeOp@132-3TimeOp@132-2TimeOp@132-1TimeOp@132TimeOp@132-7TimeOp@132-6TimeOp@132-5TimeOp@132-4TimeOp@132-9TimeOp@132-8FsiValuePrinterModeFsiValuePrinterGetFsiPrintOptions@201-1FSharpFunc`3OptimizedClosuresInternal.Utilities.StructuredFormatIEnvironmentFSharp.CompilerFSharpOption`1LayoutGetFsiPrintOptions@191-2GetFsiPrintOptions@209-3GetFsiPrintOptions@188GetEvaluationContext@220ILFieldRefMicrosoft.FSharp.Compiler.AbstractILILSystem.ReflectionFieldInfoGetEvaluationContext@221-1ILMethodRefMethodInfoGetEvaluationContext@222-2ILTypeRefTypeGetEvaluationContext@223-3ILTypeitemLs@159Tuple`2itemLs@161-1UnitFsiStdinSyphonPrintError@361-1PrintError@361-2System.TextStringBuilderPhasedErrorMicrosoft.FSharp.CompilerErrorLoggerPrintError@362-3PrintError@359FsiConsoleOutputclo@371-8ErrorLoggerThatStopsOnFirstErrorWarnSinkImpl@406-1WarnSinkImpl@406-2WarnSinkImpl@407-3WarnSinkImpl@401FsiCommandLineOptions-ctor@468-4collect@568-ctor@584-5EventHandler-ctor@584-6-ctor@584-8-ctor@584-7EventArgs-ctor@584-9clo@494-9clo@496-10clo@506-11clo@507-12clo@508-13clo@509-14clo@510-15clo@514-16Microsoft.FSharp.CollectionsFSharpList`1clo@518-18clo@515-17clo@528-19OptionSwitchBuildclo@529-20clo@536-21clo@541-22CompilerOptionBlockclo@545-23clo@546-24clo@547-25clo@550-26clo@552-27clo@554-28clo@557-29InstallErrorLoggingOnThisThread@663-1InstallErrorLoggingOnThisThread@663SetServerCodePages@677Microsoft.FSharp.ControlFSharpAsync`1FsiConsolePromptFsiConsoleInput-ctor@773-10clo@737-31ConsoleColorclo@737-30FsiDynamicCompilerStateFsiDynamicCompilerinputs@1014ParsedInputAstbindingB@1069IdentoptEnv@1088IncrementalOptimizationEnvOptImportedAssemblyEvalRequireReference@1089CcuThunkTastProcessMetaCommandsFromInputAsInteractiveCommands@1098-1rangeRangeProcessMetaCommandsFromInputAsInteractiveCommands@1099-2ProcessMetaCommandsFromInputAsInteractiveCommands@1100-3ProcessMetaCommandsFromInputAsInteractiveCommands@1096sourceFiles@1112EvalSourceFiles@1119EvalSourceFiles@1125-1EvalSourceFiles@1126-2EvalSourceFiles@1131-3EvalSourceFiles@1140-4inputs@1141-1istate@1142FSharpFunc`4GetInitialInteractiveState@1155FSharpFunc`5ValRefValUseFlagTTypeExprclo@882-32clo@898-33clo@955-34Exceptionclo@954-35denv@974ValFsiIntellisenseProviderncenv@1185TyparnItems@1188MethInfoInfosCompletionsForPartialLID@1190CompletionsForPartialLID@1189-1ItemNameresFsiInterruptStdinStateFsiInterruptControllerStateFsiInterruptControllerKillerThreadRequestFsiInterruptController-ctor@1254-11Interrupt@1262killerThread@1285raiseCtrlC@1278-1ctrlEventHandler@1298register@1321-1killerThread@1325-1FsiStdinLexerProviderlexbuf@1603lexbuf@1611-1clo@1560-37clo@1556-36Tuple`3clo@1581-38clo@1591-39Internal.Utilities.Text.LexingLexBuffer`1tokenParserFsiInteractionStepStatusFsiInteractionProcessorres@1891ParseAndProcessAndEvalOneInteractionFromLexbuf@1880run@1908-1EvalIncludedScript@1903EvalIncludedScripts@1927consume@1941-1sourceFiles@1942-1consume@1947-2LoadDummyInteraction@1959lexerWhichSavesLastToken@1676-1clo@1674-40ParsedFsiInteractionclo@1711-42AssemblyResolutionclo@1743-43clo@1697-41defsA@1798SynModuleDecldefsB@1799DummyFormSystem.Windows.FormsFormWinFormsEventLoopIEventLoopFSharp.Compiler.Interactive.SettingsMicrosoft-FSharp-Compiler-Interactive-IEventLoop-Invoke@2012th@2048server@2060Microsoft.FSharp.Compiler.Server.SharedFSharpInteractiveServerFSharp.Compiler.Server.SharedSpawnInteractiveServer@2056runCodeOnMainThread@2135-2runCodeOnMainThread@2134-1stdinReaderThread@2108FsiEvaluationSession-ctor@2386-12Run@2431System.Collections.GenericIEnumerable`1threadException@2442-1Run@2464-1UnhandledExceptionEventHandlerRun@2464-2Run@2464-4Run@2464-3UnhandledExceptionEventArgsRun@2464-5Run@2476-6clo@2386-44clo@2386-45ILAssemblyRefFSharpChoice`2AssemblyMagicAssemblyResolutionsearchResult@1478AssemblyReferenceOperationResult`1Install@1532NativeMethodsControlEventHandlerMulticastDelegateUtilitiesUtilsguard@93-1guard@93methInfos@108haveArgTs@119ParameterInfoselect@123-1select@114ConsoleOptions$ConsoleResetTo@134-ctor@155-3GetOptions@192GetOptions@191-1checkLeftEdge@219-1$InternalCollectionsclo@61-2clo@65-3clo@77-4newdata@91clo@92-5newdata@95-1clo@104-6clo@105-7-ctor@159-ctor@162-1-ctor@165-2keyToIndex@207IEqualityComparer`1groupByFirst@226List`1referenceDistinct@231referenceDistinct@232-1KeyValuePair`2.$Assemblyinfo.fsiexe$FSIstrings-cctor@17System.ResourcesResourceManagerfsiUsage@108-1fsiUsage@108PrintfFormat`5fsiExceptionRaisedStartingServer@129-1fsiExceptionRaisedStartingServer@129fsiInvalidAssembly@162-1fsiInvalidAssembly@162fsiDirectoryDoesNotExist@165-1fsiDirectoryDoesNotExist@165fsiInvalidDirective@168-2fsiInvalidDirective@168-1fsiInvalidDirective@168fsiTimeInfoMainString@174-3fsiTimeInfoMainString@174-2fsiTimeInfoMainString@174-1fsiTimeInfoMainString@174fsiExceptionDuringPrettyPrinting@180-1fsiExceptionDuringPrettyPrinting@180fsiIntroTextHeader3@207-1fsiIntroTextHeader3@207fsiCouldNotInstallCtrlCHandler@222-1fsiCouldNotInstallCtrlCHandler@222fsiDidAHashr@225-1fsiDidAHashr@225fsiDidAHashI@228-1fsiDidAHashI@228fsiFailedToResolveAssembly@240-1fsiFailedToResolveAssembly@240fsiBindingSessionTo@243-1fsiBindingSessionTo@243fsiProductName@246-1fsiProductName@246clo@48clo@55-1capture@68-1capture@71-2fsiFSharpInterfaceDataVersionAttribute.ctorAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeSystem.Runtime.CompilerServicesDependencyAttributeLoadHintSystem.DiagnosticsDebuggableAttributeDebuggingModesSwallowResourceTextresourcesLazy`1funTyCswallowResourceTextinit@14IntrinsicFunctionsLanguagePrimitivesFailStaticInitget_SwallowResourceTextset_SwallowResourceTextbPrintfFormat`4stoppedDueToErrorInvokeFastfsiUsagea0fsiInputFilesfsiCodeGenerationfsiErrorsAndWarningsfsiLanguagefsiMiscellaneousfsiAdvancedfsiExceptionRaisedStartingServerfsiUsefsiLoadfsiRemainingfsiHelpfsiExecfsiGuifsiQuietfsiReadlinefsiBanner3fsiConsoleProblemfsiInvalidAssemblyfsiDirectoryDoesNotExistfsiInvalidDirectivea1fsiLineTooLongfsiTimeInfoMainStringa2fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGenerationfsiExceptionDuringPrettyPrintingfsiIntroTextHeader1directivesfsiIntroTextHashrInfofsiIntroTextHashIInfofsiIntroTextHashloadInfofsiIntroTextHashtimeInfofsiIntroTextHashhelpInfofsiIntroTextHashquitInfofsiIntroTextHeader2commandLinefsiIntroTextHeader3fsiLoadingFilesPrefixTextfsiInterruptfsiExitfsiAbortingMainThreadfsiCouldNotInstallCtrlCHandlerfsiDidAHashrfsiDidAHashIfsiTurnedTimingOnfsiTurnedTimingOfffsiUnexpectedThreadAbortExceptionfsiFailedToResolveAssemblyfsiBindingSessionTofsiProductNameRunStartupValidationget_ValueSystem.GlobalizationCultureInfoget_CurrentUICultureGetStringnameCompilerGeneratedAttributeMicrosoft.FSharp.ReflectionFSharpTypeMakeFunctionTypeFSharpValueMakeFunctionmkFunctionValuetysimplCompilationArgumentCountsAttributeget_IsArrayget_IsByRefget_IsPointerisNamedTypetyget_IsGenericTypeGetGenericTypeDefinitionEqualsisFunctionTypety1GetGenericArgumentsget_BaseTypedestFunTyget_Item2buildFunctionForOneArgPatStringget_Charscapture1fmtiargsgoReplacepostProcessStringsget_Lengthget_EmptyGetTypeFromHandleRuntimeTypeHandleUnboxGenericcreateMessageStringmessageStringTPrintfModulePrintFormatToStringThenGetStringFuncmessageID.cctorCompilationMappingAttributeSourceConstructFlagsTagDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsStrongIsWeakNewStrongitemget_IsStrongWeakReferenceNewWeakget_IsWeakget_TagExtraTopLevelOperatorsPrintFormatToStringInvoke__DebugDisplayHashCompareGenericHashWithComparerIntrinsicIEqualityComparerGetHashCodecompget_GenericEqualityComparerGenericEqualityWithComparerIntrinsicobjGenericEqualityERIntrinsicStructuralEqualityAttributeNoComparisonAttributeDebuggerDisplayAttributeget_ItemDebuggerTypeProxyAttribute_objMostRecentonStrongDiscardkeepStronglyareSamerefskeepMax@38-1OperatorsDefaultArgOptionalArgumentAttributekeepMaxFilterAndHoldTryPeekKeyValueImplTryPeekKeyValuekeyTryGetKeyValueImplget_Item1AssignWithStrengthTryGetKeyValueSomeTryGetExistsRemoveImplAddPutvalueRemoveget_TailOrNullListModuleReverseHeadget_MostRecentClearstrongDiscardxdataaConsop_AppendFilterPromotePartitionIEnumerator`1SeqModuleToListMapIndexedMapIteratenewdatadiscard1TKeyTValuecomputecacheisStillValid@159logComputedNewValue@162logUsedCachedValue@165isStillValidareSameForSubsumptionlogComputedNewValuelogUsedCachedValueonDiscardGetAvailableGetSetAlternateFSharpRef`1Dictionary`2IDisposableGetEnumeratorIEnumeratorMoveNextget_Currentget_CountDisposegroupByFirstlHashIdentityReferencereferenceDistinctSealedAttributePromptIsPromptOutIsOutErrorIsError_tag_unique_Prompt_unique_Out_unique_Errorget_Promptget_IsPromptget_Outget_IsOutget_Errorget_IsErrorCompareToIComparerCountCurrentlistcurrentEmptylineAddLastPreviousNextRootrootget_Rootset_RootvResetTotopleftConsoleget_CursorTopget_BufferWidthget_CursorLeftMoveinsetdeltatop@left@get_topget_leftget_GenericComparerPlaceAtindexPrompt2InsetTabSizehistorycompleteSetCompletionFunctionfget_Prompt2get_InsetSubstringTrimLastIndexOfget_Item3GetOptionsinputMapCharactercCharIsControlGetCharacterSizeget_TabSizeReadLineEnvironmentGetCommandLineArgsInternal.UtilitiesFSharpEnvironmentget_IsRunningOnNetFx45OrAboveArrayModuleEncodingget_UTF8set_InputEncodingset_OutputEncodingget_InSystem.IOTextReaderTextWriterMainMainargvEntryPointAttributeSTAThreadAttributeContainsIndexOfStringComparisonprune@344textFscoptsDoWithErrorColorf@99TcConfigBuildersyphontcConfigisWarnerrunitVar0PathGetDirectoryNameShimMicrosoft.FSharp.Compiler.AbstractIL.InternalLibraryget_FileSystemFileSystemIsPathRootedShimdirectoryNameSystem.ThreadingThreadget_CurrentThreadset_CurrentUICultureSetCurrentUICultureForThreadlcidLibget_progressget_contentsDiagnosticsdprintfnget_ManagedThreadIdget_NameSetThreadErrorLoggerNoUnwindBuildPhaseget_InteractiveSetThreadBuildPhaseNoUnwindInstallErrorLoggingOnThisThreaderrorLoggerDialogResultget_DefaultAsyncBuilderFSharpAsyncBuilderDelayFSharpAsyncStartCancellationTokenSleepMessageBoxShowSetServerCodePagesfsiOptionsget_implicitIncludeDirset_implicitIncludeDirWithImplicitHometcConfigBdirSynBindingKindget_DoBindingSynAttributePreXmlDocSynInfoget_emptySynValDataSynValDataSequencePointInfoForBindingget_NoSequencePointAtInvisibleBindingSynBindingNewBindingSynAccessSynPatSynBindingReturnInfoSynExprmkBind@1065mpatexprTypecheckClosedInputSetTuple`4TcStateTopAttribsTypeCheckerTypedAssemblyTcEnvTcConfigTcImportsTcGlobalsEnvf@1-1thisprefixPathinputstcState_arg1arg10@954execsPrintFormatToTextWriterThreadStartset_Nameset_IsBackgroundraiseCtrlC@1278controllerthreadToKillpauseMillisecondsDelegateOfListget_InvariantCultureInvokeMemberBindingFlagsBinderregister@1321monoUnixStdlibmonoHandlermonoSignalNumberrun@1907LexFilterLexfilterprocessorexitViaKillThreadtokenizeristateget_HeadOrDefaulttakeUntilconsume@1937sourceFileslexerWhichSavesLastToken@1675lastTokenApplicationSetUnhandledExceptionModeUnhandledExceptionModeset_contentsTrySetUnhandledExceptionModeSpawnThreadSpawnInteractiveServerfsiConsoleOutputfsiInterruptControllerrunCodeOnMainThread@2133PrintFormatLineToTextWriterStartStdinReadAndProcessThreadistateReffsiConsoleInputfsiStdinLexerProviderfsiInteractionProcessorThreadAbortExceptionSettingsget_fsiInteractiveSessionget_EventLoopRunResetAbortget_range0stopProcessingRecoveryrunLoop@2183DriveFsiEventLoopthreadException@2440exnoutWriterstopwatchStopwatchptimeProcessnumGCGetCurrentProcessGCget_MaxGenerationTimeSpanget_TotalProcessorTimeToArrayResetStopop_Subtractionget_Elapsedget_Hoursget_Minutesget_Secondsget_MillisecondsJoinTimeOpTimeOpIfflagAutoSerializableAttributetrenumpcOperatorIntrinsicsRangeInt32CollectionCountGenerateNextnextCloseget_CheckCloseget_LastGeneratedGetFreshEnumeratorstartGCInt32clo4arg40clo3arg30clo2arg20clo1arg10PrintExprIsPrintExprPrintDeclIsPrintDecl_unique_PrintExpr_unique_PrintDeclget_PrintExprget_IsPrintExprget_PrintDeclget_IsPrintDeclresolvePathilGlobalsILGlobalsgenerateDebugInfoFormatOptionsIFormatProviderChoice1Of2Choice2Of2get_Defaultget_FormatProviderget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerableget_FloatingPointFormatget_AttributeProcessorget_StringLimitget_BindingFlagsGetFsiPrintOptionscenvILRuntimeWriterExecutionContextIlxgenGetEvaluationContextemEnvget_AssemblyGetTypewordLToStringPrintValueprintModeoptsget_ShowDeclarationValuesget_PrintInterceptsIlxAssemblyGeneratorLookupGeneratedValueisEmptyLInvokeDeclLayoutilxGeneratorDisplayEnvTastopsRuntimeHelpersGetSavedItGetSavedItTypeget_includeStaticParametersInTypeNamesget_openTopPathsSortedget_openTopPathsRawget_shortTypeNamesget_suppressNestedTypesget_maxMembersget_showObsoleteMembersget_showTyparBindingget_showImperativeTyparAnnotationsget_suppressInlineKeywordget_showMemberContainersget_shortConstraintsget_useColonForReturnTypeget_showAttributesget_showOverridesget_showConstraintTyparAnnotationsget_abbreviateAdditionalConstraintsget_showTyparDefaultConstraintsget_gget_contextAccessibilityAccessibilityget_generatedValueLayoutNicePrintlayoutValOrMemberop_PlusPlusop_MinusMinusMinusDisplayoutput_layoutWriteLineInvokeExprPrinterdenvvrefIDictionaryIDictionaryEnumeratorLayoutOpsunfoldLleftLrightLsepListLop_HatHatDefaultPrintingInterceptienvconverteratyIsAssignableFromGetLayoutprinter_ienv__unionCaseunionCase0aty0get_AddedPrintersLookupFieldRefOptionModuleGetValueLookupMethodRefLookupTypeRefLookupTypetypitget_KeyerrorWritersyphonTextAppendstrLexhelpget_stdinMockFilenameSplitGetLinefilenamePrintErrorarg00fileLineFunctionOutputErrorOrWarningContextarg20@arg30@tupledArg_0tupledArg_1tupledArg_2tupledArg_3ErrorStyleOutputErrorOrWarningarg10@writeViaBufferWithEnvironmentNewLinesget_showFullPathsget_flatErrorsget_errorStylenullOutStreamNullStreamWriterget_noFeedbackuprintfuprintfneuprintfnnduprintnfuprintnfnuprintnfnnPrintFormatToTextWriterThenfprintfnnosErrorCountfsiStdinSyphonerrorsSetErrorget_abortOnErrorExitStopProcessingErrorSinkHelperCheckForErrorsResetErrorCountWarnSinkImplErrorSinkImplget_ErrorCountFlushAbortOnErrorobjectArgget_globalWarnLevelget_specificWarnOffget_specificWarnOnget_specificWarnAsErrorget_specificWarnAsWarnget_globalWarnAsErrorReportWarningAsErrorReportWarningShowTypesFsiServerNameFsiServerInputCodePageFsiServerOutputCodePageFsiLCIDIsInteractiveServerProbeToSeeIfConsoleWorksEnableConsoleKeyProcessingInteractPeekAheadOnConsoleToPermitTypingSourceFilesGuienableConsoleKeyProcessingguishowTypesfsiServerNameinteractexplicitArgsinputFilesAccfsiServerInputCodePagefsiServerOutputCodePagefsiLCIDprobeToSeeIfConsoleWorkspeekAheadOnConsoleToPermitTypingexecutableFileNametagFiletagNoneFSharpSet`1AppDomainget_runningOnMonoget_OSVersionOperatingSystemget_PlatformPlatformIDLazyExtensionsCreateGetCoreFsiCompilerOptionsabbrevFlagSetPostProcessCompilerArgsTailParseCompilerOptionsget_utf8outputget_OutputEncodingget_CurrentDomainCreateEventIEvent`2CommonExtensionsAddToObservableIObservable`1set_CommandLineArgsget_productNameForBannerTextFSCompoptsCopyrightShowBannerGetFileNameWithoutExtensionShowHelpget_ShowTypesset_ShowTypesget_FsiServerNameget_FsiServerInputCodePageget_FsiServerOutputCodePageget_FsiLCIDset_FsiLCIDget_IsInteractiveServerget_ProbeToSeeIfConsoleWorksget_EnableConsoleKeyProcessingget_Interactget_PeekAheadOnConsoleToPermitTypingget_SourceFilesget_GuiisInteractiveServerrecordExplicitArgargDisplayBannerTextprintCompilerOptionBlocksdisplayHelpFsiblocksOptionSpecNewOptionStringCompilerOptionNewCompilerOptionNewPublicOptionsNewOptionIntNewOptionUnitNewOptionGeneralNewPrivateOptionsNewOptionSwitchfsiUsagePrefixoptsHelpBannerInputFilesNewOptionRestoptsHelpBannerMiscNewOptionHelpoptsHelpBannerAdvancedfsiUsageSuffixget_MainModuleProcessModuleget_FileNameGetFileNameunitVarIsScripteventTargetadd_ProcessExiteventDelegateremove_ProcessExitcallbacksenderprevnset_noFeedbackget_OnoutputCodePageOptinputCodePageOptsuccessfulGetEncodingZeroFsiOptionsdropPromptpromptPrintPrintAheadSkipNextget_FsiOptionsIninReaderconsoleOptconsoleReaderStartupDoneManualResetEventfirstLineEventWaitHandleSetTryGetFirstLineTryGetConsoleWaitHandleWaitAllWaitForInitialConsoleInputget_KeyAvailableget_ForegroundColorget_BackgroundColorset_CursorLeftconsoleLooksOperationalPeekoptEnvtcGlobalstimingoptEnv@emEnv@tcGlobals@tcState@ilxGenerator@timing@get_optEnvget_emEnvget_tcGlobalsget_tcStateget_ilxGeneratorget_timingNoEqualityAttributeDynamicAssemblyNameDynamicAssemblytimeReportertcLockObjecttcImportsniceNameGenNiceNameGeneratoroutfileassemblyNamefragmentIdprevItvaluePrintermoduleBuilderSystem.Reflection.EmitModuleBuilderassemblyBuilderAssemblyBuilderrangeStdininfoReaderInfoReaderSystem.Diagnostics.SymbolStoreISymbolWriterget_debuginfoget_optSettingsOptimizationSettingslocalOptmkDynamicAssemblyAndModulerangeNGetSymWriterGetImportMapImportMapImportget_DynamicAssemblyNameget_DynamicAssemblyEvalParsedSourceFilesSynModuleOrNamespacepathOfLidNewSynModuleOrNamespaceQualFileNameOfUniquePathQualifiedNameOfFileScopedPragmaParsedHashDirectiveParsedImplFileInputNewParsedImplFileInputNewImplFileNextStateAfterIncrementalFragmentEvalParsedDefinitionsisInteractiveItExprdefsValueget_TcEnvFromImplsget_NameEnvNameResolutionEnvFindUnqualifiedItemget_DisplayEnvget_Derefget_HasBeenReferencedClearGeneratedValueEvalParsedExpressionget_RangemkSynIdNewIdentmkSynPatVarNewWildLongIdentWithDotsNewLongIdentWithDotsNewLongIdentSynSimplePatAlternativeIdInfoNewAppExprAtomicFlagNewLetBuildItBindingImportedBinaryInternal.Utilities.FileSystemIsInvalidPatherrorNewAssemblyReferenceResolveAssemblyReferenceModeget_ReportErrorsResolveAssemblyReferenceAddReferencedAssemblyByPathRequireDLLRemoveReferencedAssemblyByPathFoldAddExternalCcusEvalRequireReferencepathProcessMetaCommandsFromInputAsInteractiveCommandssourceFileinpLoadClosureCodeContextget_EvaluationComputeClosureOfSourceFilesLexResourceManagerget_InputsIterateIndexedget_RootErrorsget_RootWarningsUnzipFold2EvalSourceFileslexResourceManagerInitialOptimizationEnvGetInitialTypecheckerEnvTypecheckInitialStateget_emEnv0get_CcuCreateIlxAssemblyGeneratorGetInitialInteractiveStateILModuleDefCompilerTargetILAssemblyManifestget_targetfsharpModuleNameget_Dllget_subsystemVersionget_useHighEntropyVAIlxGenResultsget_ilTypeDefsILTypeDefmkILTypeDefsILTypeDefsILExportedTypeOrForwardermkILExportedTypesILExportedTypesAndForwardersmkILSimpleModuleget_ManifestOfAssemblyget_AuxModuleHashAlgorithmget_SecurityDeclsILPermissionsget_PublicKeyget_Versionget_Localeget_ilAssemAttrsILAttributemkILCustomAttrsILAttributesget_AssemblyLongevityILAssemblyLongevityget_DisableJitOptimizationsget_JitTrackingget_Retargetableget_ExportedTypesget_EntrypointElsewhereILModuleRefget_CustomAttrsget_TypeDefsget_SubsystemVersionget_UseHighEntropyVAget_SubSystemFlagsget_IsDLLget_IsILOnlyILPlatformget_StackReserveSizeget_Is32Bitget_Is32BitPreferredget_Is64Bitget_VirtualAlignmentget_PhysicalAlignmentget_ImageBaseget_MetadataVersionget_ResourcesILResourcesget_NativeResourcesCreateModuleFragmentcodegenResultsModuleInfoTypedImplFileModuleOrNamespaceExprWithSigNoResultMonitorEnterget_Item4ApplyAllOptimizationstextOfLidIlxGenBackendget_IlReflectBackendGenerateIlxCodeAddIncrementalLocalAssemblyFragmentReportTimeMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILXEraseIlxUnionsConvModuleEraseIlxFuncsNormalizeAssemblyRefsILScopeRefMorphsmorphILScopeRefsInILModuleMemoizedemitModuleFragmentget_quotationResourceBytesMicrosoft.FSharp.QuotationsFSharpExprRegisterReflectedDefinitionsget_suppressMutableKeywordAddOpenPathAccessorDomainget_AccessibleFromSomewherelayoutInferredSigOfModuleExprsquash_layoutchannelRrender`2NoStaterenderLProcessInputsisIncrementalFragmentnextFragmentIdget_FsiDynamicModulePrefixConcatmkFragmentPathprefixPrependPathToInputarg00@AddExternalCcuToOpimizationEnvget_FSharpViewOfMetadataccuinfofsiDynamicCompilerTurnWarningOffsttupledArg_arg3_arg2ProcessMetaCommandsFromInputResolveSourceFilenmerrorSinkpewarnSinkParseOneInputFileoptiongLightweightTcValForUsingInBuildMethodCallvrefFlagsvrefTypeInstexecNameResolverGetSubArrayget_AccessibleFromSomeFSharpCodeResolvePartialLongIdentCompletionsForPartialLIDFakeInstantiationGeneratoramapConstraintSolverIsApplicableMethApproxarg40@stemStartsWithDisplayNameOfItemStdinEOFPermittedBecauseCtrlCRecentlyPressedIsStdinEOFPermittedBecauseCtrlCRecentlyPressedStdinNormalIsStdinNormal_unique_StdinEOFPermittedBecauseCtrlCRecentlyPressed_unique_StdinNormalget_StdinEOFPermittedBecauseCtrlCRecentlyPressedget_IsStdinEOFPermittedBecauseCtrlCRecentlyPressedget_StdinNormalget_IsStdinNormalInterruptCanRaiseExceptionIsInterruptCanRaiseExceptionInterruptIgnoredIsInterruptIgnored_unique_InterruptCanRaiseException_unique_InterruptIgnoredget_InterruptCanRaiseExceptionget_IsInterruptCanRaiseExceptionget_InterruptIgnoredget_IsInterruptIgnoredThreadAbortRequestIsThreadAbortRequestNoRequestIsNoRequestExitRequestIsExitRequestPrintInterruptRequestIsPrintInterruptRequest_unique_ThreadAbortRequest_unique_NoRequest_unique_ExitRequest_unique_PrintInterruptRequestget_ThreadAbortRequestget_IsThreadAbortRequestget_NoRequestget_IsNoRequestget_ExitRequestget_IsExitRequestget_PrintInterruptRequestget_IsPrintInterruptRequestInterruptRequestInterruptAllowedEventHandlersstdinInterruptStateCTRL_CinterruptAllowedkillThreadRequestctrlEventHandlersctrlEventActionsposixReinstateget_FsiInterruptStdinStateset_FsiInterruptStdinStateset_InterruptRequestreqget_InterruptAllowedset_InterruptAllowedInterruptget_EventHandlersLoadNewChoice1Of2NewChoice2Of2get_MessageCreateDelegateEnumParseInstallKillThreadPosixInvokeactAbortinteractiveInputLightSyntaxStatusLightSyntaxStatusget_lightGenericEqualityIntrinsicCreateStdinLexerget_inputCodePageUnicodeLexingUnicodeFileAsLexbufCreateIncludedScriptLexersourceFileNameFromFunctionLexbufFromLineReaderreadfremoveZeroCharsFromStringlexargsresetLexbufPosget_conditionalCompilationDefinesLexerIfdefStackEntrymkLexargsget_compilingFslibCreateLexerForLexBufferlexbufconsoletEndOfStreamExceptionLexerCtrlCIsCtrlCEndOfFileIsEndOfFileCompletedIsCompletedCompletedWithReportedErrorIsCompletedWithReportedError_unique_CtrlC_unique_EndOfFile_unique_Completed_unique_CompletedWithReportedErrorget_CtrlCget_IsCtrlCget_EndOfFileget_IsEndOfFileget_Completedget_IsCompletedget_CompletedWithReportedErrorget_IsCompletedWithReportedErrorfsiConsolePromptget_LexBufferget_IsPastEndOfStreamParseAndProcessAndEvalOneInteractionFromLexbufrunCodeOnMainThreadEvalIncludedScriptEvalIncludedScriptsLoadInitialFilesLoadDummyInteractionInteractiveCatchMakePathAbsoluteDirectoryChangeDirectoryget_ELSEreusingLexbufForParsingParseInteractionExecInteractionactionIDefnsHashDirectiveDoExprNewIHashNewIDefnsTakeWhileSkipWhileheadAndTailExecInteractionsMainThreadProcessParsedInteractionisScript1tupleinteractionget_resolvedPatharIHashAddIncludePathget_showTermsset_showTermsControlCreateHandleDoCreateHandleFinalizemainFormrestartMicrosoft-FSharp-Compiler-Interactive-IEventLoop-RunAutoResetEventget_InvokeRequiredMethodInvokerWaitOneMicrosoft-FSharp-Compiler-Interactive-IEventLoop-InvokeMicrosoft-FSharp-Compiler-Interactive-IEventLoop-ScheduleRestartScheduleRestartmainFormInvokeResultHolderdoneSignalStartServerconttokenizerRefcultureset_CurrentCultureset_ExitCodeKillfsiDynamicCompiler@2386fsiIntellisenseProviderTcConfigProviderUnmanagedProcessExecutionOptionsEnableHeapTerminationOnCorruptionget_CodePageget_TextInfoTextInfoget_OEMCodePageget_ANSICodePageset_enableConsoleColoringget_AssertFalseErrorLoggerSetUninitializedErrorLoggerFallbackget_BaseDirectoryGetCurrentDirectoryCreateNewBasedOnMutableBuilderResolutionEnvironmentMSBuildResolverget_RuntimeLikeset_resolutionEnvironmentset_useFsiAuxLibSetOptimizeSwitchSetDebugSwitchSetTailcallSwitchget_Is64BitProcessget_AMD64get_X86set_platformset_lcidwarningget_showBannerBuildTcImportsget_ilgconditionPushThreadBuildPhaseUntilUnwindEnableVisualStylesThreadExceptionEventHandleradd_ThreadExceptionset_EventLoopKeepAliveget_DotNetBuildStringset_productNameForBannerTextupdateBannerTextTryFindExistingFullyQualifiedPathFromAssemblyRefresolveType_fsiDynamicCompilerarefadd_UnhandledExceptionremove_UnhandledExceptionget_ExceptionObjectThreadExceptionEventArgsget_ExceptionUnsafeLoadFromassemblyLoadFromOkResultEndsWithget_SpeculativeTryResolveAssemblyReferenceNewOkResultget_referencedDLLsTryPickPublicKeyNewErrorResultCommitOperationResultResolveAssemblyfullAssemNameResolveEventHandleradd_AssemblyResolveInstallassemblyReferenceTextDllassemblyReferenceTextExeget_TextFilenamefileNameOfPathCompareassemblyReferenceResolveEventArgsSetConsoleCtrlHandler_callback_addkernel32.dllobjectmethodBeginInvokeIAsyncResultAsyncCallbackobjectsEndInvokeresultcallStaticMethodGetMethodMakeGenericMethodMethodBasecallGenericStaticMethodtyargsignoreAllErrorsget_StackTraceguardGetMethodsTryFindfindMethodparentTmarityargtysrtyMemberInfomethInfoget_ParameterTypeparamget_IsGenericMethodGetParametersget_ReturnTypefixupRequiredfixNonUnicodeSystemConsoleReadKeyget_fixupRequiredget_fixNonUnicodeSystemConsoleReadKeyget_InputEncodingByteGetCharsreadKeyFixupfixupRequired@18fixNonUnicodeSystemConsoleReadKey@20init@IsLetterOrDigitlook@167parenCountWritecheckLeftEdge@215get_BufferHeightwriteChar@238anchorrenderedrender@257InsertinsertChar@289insertTab@299moveLeft@303moveRight@309set_LengthsetInput@315BeeptabPress@321changedoptionsCacheshiftdelete@342ConsoleKeyInfoConsoleKeyget_KeyCharinsert@347backspace@355enter@361ConsoleModifiersReadKeyget_Modifiersread@370change@450set_CursorTopprefLookup@42Compute@175bcTryGetValueindexOfKey@208nextIndexkeyToIndexmatchValuevalue0weakReferencematchValue0get_TargetkvtossThresholdweakThreshhold_arg5GenericHashIntrinsicSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-EqualsysetAppendFormatIsSurrogatePaircapture@68lenGetExecutingAssembly,,,#stoppedDueToErrorfsiUsage,,,%s,,,fsiInputFiles#fsiCodeGeneration)fsiErrorsAndWarningsfsiLanguage!fsiMiscellaneousfsiAdvancedAfsiExceptionRaisedStartingServer fsiUsefsiLoadfsiRemainingfsiHelpfsiExec fsiGuifsiQuietfsiReadlinefsiBanner3#fsiConsoleProblem%fsiInvalidAssembly1fsiDirectoryDoesNotExist'fsiInvalidDirective,,,%s,,,%s,,,fsiLineTooLong+fsiTimeInfoMainString%,,,%s,,,%s,,,%s,,,{fsiTimeInfoGCGenerationLabelSomeShorthandForTheWordGenerationAfsiExceptionDuringPrettyPrinting;fsiIntroTextHeader1directives+fsiIntroTextHashrInfo+fsiIntroTextHashIInfo1fsiIntroTextHashloadInfo1fsiIntroTextHashtimeInfo1fsiIntroTextHashhelpInfo1fsiIntroTextHashquitInfo=fsiIntroTextHeader2commandLine'fsiIntroTextHeader33fsiLoadingFilesPrefixTextfsiInterruptfsiExit+fsiAbortingMainThread=fsiCouldNotInstallCtrlCHandlerfsiDidAHashrfsiDidAHashI#fsiTurnedTimingOn%fsiTurnedTimingOffCfsiUnexpectedThreadAbortException5fsiFailedToResolveAssembly'fsiBindingSessionTofsiProductName=destFunTy: not a function type)bad format specifier\n \t \r \"" %+0.8A> - ^?^Zfsi-server# 1 "stdin" .EInstalling logger on id=%d name=%s%s'ControlCAbortThread signalServerThread5creating stdinReaderThread#StdinReaderThread=MAIN: starting stdin thread...%GUI thread runLoop;MAIN: entering event loop...7MAIN: exited event loop...'%02d:%02d:%02d.%03d%s%d: %d, WInternal.Utilities.StructuredFormat.Displayany_to_layout#fsi_any_to_layout= dict[;] AErrorLoggerThatStopsOnFirstError <file>%s --help; #r "file.dll";; %s; #I "path";; %s; #load "file.fs" ...;; %s; #time ["on"|"off"];; %s; #help;; %s; #quit;; %suse load3fsi-server-input-codepage5fsi-server-output-codepage+fsi-server-no-unicodefsi-server-lcid1script.fsx arg1 arg2 ...probeconsolepeekahead-- help?full-help execgui quietreadlineSERVER-PROMPT> Ifirst-line-reader-thread not in use.Eprobing to see if console works...‹probe succeeded, we might have a console, comparing foreground (%A) and background (%A) colors, if they are the same then we're running in emacs or VS on unix and we turn off readline by default...Gprobe failed, we have no console...]first-line-reader-thread reading first line..._first-line-reader-thread got first line = %A...gfirst-line-reader-thread has set signal and exited.TMPFSCI.exeFSI-ASSEMBLYitMicrosoft FSharpCompilerInteractiveRuntimeHelpers SaveIt [%s parse error/Creating main module...TAST -> ILXLinking%ILX -> IL (Unions)#ILX -> IL (Funcs)1Assembly refs NormalisedReflection.EmitRun Bindings %04d %s %sINTERACTIVE1installing CtrlC handler€ÝFailed to install ctrl-c handler using Windows technique - trying to install one using Unix signal handling...€›Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756Oloading type Mono.Unix.Native.Stdlib.../Mono.Unix.Native.Stdlib]loading type Mono.Unix.Native.SignalHandler...=Mono.Unix.Native.SignalHandler)creating delegate...PosixInvoke;registering signal handler.../Mono.Unix.Native.Signum SIGINT=ControlCAbortAlternativeThread exitGhave console... calling ReadLine...Cno console... calling ReadLine...!calling readf...IEnd of file from TextReader.ReadLine-In ParseInteraction...;Error in ParseInteraction: %sQIn MainThreadProcessParsedInteraction...9entering ParseInteraction...returned from ParseInteraction...calling runCodeOnMainThread...YJust called runCodeOnMainThread, res = %O...oEvalIncludedScript: Completed expected to have reloopedreference rIcdsilentCd timeonoff nowarn terms typesq quitAMAIN: Calling Application.Run...MMAIN: Returned from Application.Run...KRunCodeOnWinFormsMainThread: entry...QRunCodeOnWinFormsMainThread: invoking...}RunCodeOnWinFormsMainThread: Waiting for completion signal....yRunCodeOnWinFormsMainThread: Got completion signal, res = %b?READER: stdin thread started...MREADER: stdin thread got first line...#READER: cont = %OG- READER: Exiting stdinReaderThread€- READER: Exiting process because of failure/exit on stdinReaderThread en-USpdbonly7FSHARP_INTERACTIVE_PROGRESS5Run: Calling TryGetConsole!Run: Interact...1MAIN: InstallKillThread!MMAIN: got initial state, creating form€Your system doesn't seem to support WinForms correctly. You will}need to set fsi.EventLoop use GUI windows from F# Interactive.€You can set different event loops for MonoMac, Gtk#, WinForms and other€…UI toolkits. Drop the --gui argument if no event loop is required.YRun: not interact, loading intitial files...Run: done...iATTEMPT MAGIC LOAD ON ASSEMBLY, simpleAssemName = %s.resources.XmlSerializers)UIAutomationWinforms .dll .exeWATTEMPT LOAD, assemblyReferenceTextDll = %sMono.Posix]ATTEMPT MAGIC LOAD ON FILE, referencedDLL = %s‡Note: an unexpected exception in fsi.exe readline console support. Consider starting fsi.exe with the --no-readline option and report the stack trace below to the .NET or Mono implementors %s %s KInternal Error: cannot bind to methodFSIstringsXjP`×ݧEƒXjP·z\V4à‰     00 DD°?_Õ :!  €€õ6€J ë”[ )-15!-15=AEIMQUQ Y5]1YY]) )ai]]]]]q]u]qu]] yyy €] y€…] ] ]€‰] €]€€] €•€•€™ )€¡€¥€¡ €¥€­)ˆY€µˆ)ˆY€µ] ]ˆ Y€µ)Y1€•]i]Y1€•Y1€• 1€•1€•€•€¹ˆ€•ˆ€½€Á€Åy€É€µY€Í€É]]1€Ñ] €Õ15)€µy€Ùy€É )€á€É€é üü ‚‚ ‚ ‚ ]]]€í €ñ€ù ‚P‚PˆYˆ‚P")ˆYˆ‚PˆYˆ‚P]Yˆ‚P Y Y €ù ]€ý ]]Y‚P)Y‚PY‚P ]ŒY1 ]] ]!1%)-11y I 9QQ Y !Y)YYYYYYYY Y]YY]]=YAYyE ]IYM].YM]Y:YM]€í)Q€¹yQ!€ $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî   fsi.exeMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#  uFSharp.Compiler FSharp.Core } IQ  M]] ] M]] M]]]M]YM] YM]Y YM]YYM]Y$YM]Y !M]€í&YM]€í+YM]€í' I ‘ ‘QQQ Q Q  Q Q Q Q YQQQ YQQQ YQQQ YQQQQQQ  yQ !yQyQ  ]  yyQ© ]] µ( Á(    µ  Å  Å   M ]       Ñ Å Å ÑÑ Ñ2     Ñ,      {__DebugDisplay(),nq}!( µ QIDInternal.Utilities.Collections.ValueStrength`1+Strong@DebugTypeProxy(Å ÅGBInternal.Utilities.Collections.ValueStrength`1+Weak@DebugTypeProxy   (1Y 1]YyY $yY  1 " Y1]1 yY yY01YyY yY 1YY1YyY 1Y yY-0Y1YyYyYY1YyY yY0yYyY MyYY1YyY1YyYyY 1YY1 1YyYY1YyY1YyYyY1Y 1YyYyY0yY-0YyYyYyY yYYyYyY0yYyY NyYYyYyYyYyYyYByYYyYyYyYyY yyy Y y 1YyYyY 1]]1]1]  $  $Y yYyyyyy Y ƒH $yy YY yY0yYyYYyYyY ƒL YyyyYyYyYYyYyY 1YY1YyY 1Y1Y1Y ƒPK $Y  ÅñY YyyYY'YyYYyYY ƒTyy YYY ƒX  YY&YyYYyYY ƒ\yy YYY  ƒ` $]y Y ƒd $o yYYYyYYyYYyYYyYYyY  Y ]( Y ƒh Yƒl ]ƒpYd Y1Y1Y1]1]1]1Y Y21Y$yY1Y1Y1YùAYA ýñY] YAYA‚ùAYAƒtý = Y ñ ñYA YA  ƒxYA YAYy YyS ùAYAýñY]YAYA‚yYyyY ý =ýƒ| ýƒ€ E E ý000 M0] 00 0 0 ‚ 00(AA   ‚‚‚ DDDDD D8Y1 Y1< €í11€Ñ   €í1 1   Y1]Y<  <€í11]€Ñ Y< ùDùù<aHùDùùyYYyYyYyYyYyˆ‚XˆyY‚€ ‚åù€ù€ù‚åù€ù‚ñ ù]€Ñ‚Y‚Y ]] €ô€Ø‚‚¸ 1m,Y‚PY‚P1m ù‚P ù‚å‘M]‚1]]]ù‚Pù‚å ‘ù‚Pù‚å‘‚Y‚Y1ùˆmx€Ø‚4‚X‚õ]‚1]]‚ý  €µ €Ñ€µ"€Ñ‚õ]‚1]]]€Ñ€Ø]€Ø€Ø€Ø‚Ì ‚À 0] ‚À‚1ƒƒƒ ‚1ƒ   ƒ  ƒ ƒ ƒ 'M]‚©  !M]€í  K ƒ ƒ yƒ 0]\ \ñ  ñ  €Ñ]€Ñ ñ \ñ        €€€M€] €€ €€ €€!1%)ƒ ƒ!1%)‚1ƒ!ƒ%y-15ƒ)YQYQƒ-YQYQƒ! ƒ%ƒ)YQYQƒ-YQYQ -15 yY] ‚Ù@ yY]y-15ƒ%‚Ù] ƒ!ƒ%y-15ƒ)YQYQƒ-YQYQ ƒ!ƒ5 ƒ!1%)# =AEIMQUQƒ5 ƒ=ƒA5) ) QyQ 55%5)Q€Ñ‚õ€Ñ]‚1]] 5€ƒ!Q 1YQ y-15 1YQƒ=€Õ 1YQYQ515' ƒ!ƒ!1YQ1YQ€ÑQ5 15ƒAƒI€ÕƒQQ yy yy 1 ‚Í ƒY €Õ15B yyyy1‚̓Y€Õ15 5ƒQ€Õ555 ƒ!‚15ƒ!Q5ƒQ5 ƒQ€Õƒeƒi15y5 ƒi&y551Y Y] 55y5ƒeƒeƒi15y5‚‚ 15- Q 5 Q€˜ €˜%YQYQ#ñ%YQYQ-15€¡ €˜%YQYQƒ)YQYQQƒ-YQYQQñ%YQYQ-15# y%YQYQ"%YQYQ"ñ%YQYQ YQ YQ$ ñ%YQYQ<ƒ-YQYQƒ)YQYQ -15 -15<ƒ)YQYQƒ-YQYQ ñ-15ƒA ƒA 1AƒA= 1 A A= 1IƒAE I IE 1QƒAM Q QM ƒAƒ5 Qƒ5ƒAU QU- - 5Y ƒiY YY]1YY] 1YY]] aa a  ]€Ñ ‚Ei€Ä €Ä  ai ]aiƒy ƒyƒyai‚Ei €Ä‚Ei‚1a] i ƒyƒy ]](‚1ƒ} ƒ} ‚E‚1‚10‚1]] ‚1]‚1‚1] ]0‚1‚1]] ‚E€Ä€Ø0i i €ài yyyyyiyyi€Äƒy(1 (yY]€ôy€…ƒ‰‚)ƒƒ‘ ƒ•y] y€…‚E €… ƒ‰‚Eyƒ‰]y€…yƒ/ƒ¡]]] quƒ©] u % ]€ô]y€…ƒ‰€Ñ‚)ƒ ‚E€Ø€Ø]‚1]]  1 yY‚E y€…0‚Ey€… ƒ±]ƒµƒ±1€Ñ1yƒµ €…yƒµ ƒ±] ƒ±]]ƒ±yyy €…yƒµƒ±€]y€… y€…‚Eƒ±y€…] ƒ¹ƒ ] €ô ] ƒ q ]qu] u]u u qu] ‚) ]u ] y €ô‚Ey yy€€€ ]€ ]y€… ‚E ] ] ] ] 11ù‚) €‰] €‰]](€ô €ô€Ø €ô(‚-‚-1Hƒ½1H €ô‚-‚11 1 1H ‚-ƒÅ€€€]€&M€€]‚1]]Y€€ €€] €€€€€€]€Ñx xM1]‚1]]1 1] 1]1H1HH €] €] ]€ €€] €] €]€(€¡(ƒA(‚Í (‚­ (ƒI  €¡‚Í‚­ƒI €¡ ƒA ‚­ ƒI €¡ƒA‚Í‚­ƒI"()‚ŃÍ1€ÁƒÑƒÕ€µƒÙ YƒÕƒÑƒÝ ƒáYƒÕƒÑ YƒÕƒÑ€µ ƒÝ ƒé ‚̓éYƒÕƒÑƒÝ5 \‚E€à‚1‚ł̓€ô€ØƒÍ!1%)y€™y€• €•€• Yˆ‚½y€™y€• ˆˆy€•ƒí€• Yˆ‚½‚½yy€™(ƒíy€™y‚…y‚1‚™€µ ƒñ€µyyƒõyƒùyƒí ƒýƒñyƒõyƒùyƒí€•ƒýy€• ‚­‚½/ y€™yƒí€•Yˆ‚½y€•‚½ˆ‚­ ˆˆy‚Áy€é„€Á ‚Á‚E ‚½ „ €é €Á ƒQ €Õ1€Á ƒ=€Õ) ‚Áyˆ€é„€Á1€Á1€Á€Á ˆˆ‚¥€™‚¥‚•y€µ €µ €™€µ‚¥€™‚1‚™€™  €µ y‚€µ €™„ y€™y€µ‚¥„ 1ù„ €µ‚¥„‚¥‚¥€µy‚•y‚•€µy' €µ€™‚¥‚•yy€µ€µ‚• y‚¥yY‚½Yy„y€¥y€¥ Y€µ€Ñ -€µ„! y-„! €µ%Y‚½Yy„y€¥‚Å‚½€µY‚½Yy„y€¥Yy„y€¥y €¥€¡ €¥€­ y€­YyˆQ y‚­Y‚½Yy„y€¥Y‚½Yy„y€¥€Ñ‚½y€¥€¡‚Í Yyˆˆ€µ ˆˆ€• yY€µ„%Yyy1€• y1€• Y€µ„)„%‚ÁyY€µ„)„- yY1€•]y Y1€• yi Y1€•Y1€•YyyyY 1€•Yyy1€•y 1€• 1€•€•'yy €•ˆB‚ÁyY€µ„%Yyy1€•yy1€•y€•ˆ ˆˆ€µy„- €¡‚ł͂½1€µ‚Á‚ł͂­€µ‚Á‚͂Ń͂½ƒA €­;ƒI‚Á‚ł̀Á€Åy€É€µY€Í€É€­‚Á€¡‚½‚­‚Í ˆ„1„5„9 „5„5„5 Y y„A „Ey„Ay„I „My„I! „1Y„E11„M „9 „Q 1 1‚© y„U „Yy„U „] „M 1„a3 „Q11‚©1„Y„]„M1„a1„9 „Y „E 1„e „i y< 1„9„Y„EY1„e1„iy„1„5„5„9 „1‚E„=‚©‚­‚µ‚¹‚½‚µ‚¹ƒé€í‚¹„m€¡„=YƒAy]1€Ñy]1€Ñyñ ]]y„q ñ„q„q„u„y‚©‚­‚µ‚¹‚½ S €í‚¹„m€¡‚Á‚Í€Á€Åy€É€µY€Í€Éƒé€¡€­‚¹€í‚¹„m€¡ y€™„ „=„‚Á‚µ‚¹ƒI ‚¹‚Á „1ƒ„1„„‚Å„1ƒ„„„1>YƒAy]1€ÑƒƒAƒÕƒÑ„1!1%)YƒAy]1€Ñ yñ ) ƒQy y„q„qñ„q „u„™5ƒQƒÙ„™€µ„u 5ƒ!5„„y„¡‚1„5 „y„¡€æ/€¡ƒA‚­ƒI‚Á‚©‚­‚µ‚¹‚½‚©‚­‚µ‚¹‚½‚µ‚­‚½‚¹ƒé€í‚¹„m€¡‚Í‚¹€¡„=„1‚E„1„1„1YƒAy]1€Ñy]1€ÑƒAyñ]‚\]]ƒQƒQƒQy„qñ„q„q„u5ƒ!5„y Yˆ‚½ˆy€•y€™M] y€™ y€™ y€™€•y€™€• €•€• €µ €™ ‚Í€¡‚Í€¡€¥ €¡€¡€¥ €­€¥ ŒY€µ€µ ˆˆY€µ ]ˆY€µ Œˆ€•JY€µY€µY€µ]‚E€• ˆ] €µ‚Á €µY€µ Y€µ1€•]‚1]] Y1€•M]‚1]]Y ]%1€•€Ø]‚1]] ]Y1€•i ]i„- Œ„-‚Á1€•‚Á„-ym 1€• Y1€•Y1€• 1€• €• €•1€•Y€Í€É‚Í€Á€Åy€É€µ Y€Í€É€Á€Åy€É€µ €à ]1€Ñ ]1€Ñ1€Ñ1€Ñ1€Ñ€Ñ ]]1€Ñ Œy]1€Ñ ŒƒIƒA 15€Õ ‚͂ŠYy„¥„™y€éy   Yy% ‚̓éƒÙ€µy€Ùy€É*y€é„¥„€á€É€µ„™y €é1 Yyy‚­ƒéƒÙ„¥„™y€é‚Í€µ yˆy€É€µy€Ù y€É€µy€Ù ƒé‚Í€µ‚̓逵€á€É €á€É ‚= ‚Í€é €éüüüMü] üü üü üü‚‚M‚] ‚‚ ‚‚ ‚‚‚ ‚ ‚ M‚ ] ‚ ‚  ‚ ‚  ‚ ‚ (ü(‚ (‚ (yƒyƒ y]]yƒ y]] ü ü ‚  ‚ ‚ ]] yƒƒ %)€Ñ ƒ-)€Ñ ƒ))€Ñ‚Õ) %)€Ñ % % ƒ-)€Ñ ƒ))€Ñ ‚ÕQQR]]ƒ€Ñ%)€Ñ%)€Ñ€Ñƒ-)€Ñƒ))€Ñ)QQ‚Õ‚Y‚Y ‚Y‚‚ ]]]‚ ‚‚Y‚ ‚ €Ø]‚1]]  Q‚Õ ‚‚YQ€Ø]‚1]]y„±1 11 1  11 ‚E€Äx€Ø€ô„-€à€ñ€ñ1H1HH€Äa ‚å€ñ1€ñ ‚å€ñ€ñ€í €ñ€Ä]  „¹ €ñ yyY„½€µùyY„½€µ(„¹y„±„-ùyY„½€µm „±€ñ€ù€ñ y„¹ ‚å€ñ‚4 ‚4H]‚1]]1x1]‚1]] ‚4]‚1]]a] ‚4€Ä]„Á €í]1*]‚1]]11€Ñ„Á €í  „¹€ù„¹€ñ €ù€ñ‚P‚PM‚P] ‚P‚P ‚P‚P ‚P‚Pt ‚E€à€ôŒt€Ø‚‚4„- €ñüü9 Yˆ‚PˆYˆ‚PˆYˆ‚Pˆ‚å Yˆ‚P‚Á Yˆ‚Pˆ€µyyYˆ‚Pˆ ˆˆy‚X ‚Xˆ ˆˆ ˆˆ Y‚PY‚P Y‚PY‚P€Ñ0Y‚PY‚P €µ ù€ù1€ý€ù€ùù€ù€ñ] €ý1€ý0€ù €ñù€ù1€ý€Ñ€ù 1€ý‚å Yˆ‚P‚Áˆ€ýY1€ý1€ý„̈́уùYy„Õ€ý y ƒù €ýƒù€µ€ýy€µY1€ý1€ý YyyYy ‚¥€†Y1€ý1€ý1€ý„Íy„Ñ€µ€µƒùyyyyYy„Õy‚¥1€ý1€ý€ýYˆ‚Pˆ Yˆ‚P‚Áˆ1€ý$Yˆ‚P‚ÁYˆ‚P€Ñ‚õ]€Ñ Yˆ‚P1€ýˆ ‚X1€ý Yˆ‚Pˆ'ˆYˆ‚PˆYˆ‚P‚å0 ‚XˆYˆ‚PˆYˆ‚P‚åYˆ‚P]&ˆYˆ‚PˆYˆ‚P&MYˆ‚P]‚1]]Yˆ‚P Yˆ‚P]Yˆ‚P])1€ýYˆ‚PYˆ‚P]ˆ‚P Yˆ‚PˆYˆ‚Pˆ ‚Xˆ‚å‚X‚åYˆ‚Pˆ Yˆ‚P] ‚X Y Y ‚Xy ‚X‚€€ù €ù€ý€ñ€ù€ñ €ý] ] ‚X€µ ‚X‚Á€ý„ÙYyˆ  €µa„Ùy€µYyˆyˆy€Ø]‚1]]t„Íy„Õ‚¥y ‚œ €Ø1 ù1„á ù1‚¤ ‚ ]ù1„á ‚Õ ƒ M]‚1]] ]]ù1„á‚‚  ] ù1‚¤]1 ù1] ]] ‚ €ô€Ø‚ ]€ÑmY‚P‚´ 1mY‚PY‚P Y‚P]‚¸ Y‚P Y‚P Y‚PY‚P€Ñ Y‚PY‚P ùˆ2 1ùˆmx€Ø‚4‚Xù‚Pù‚å‘ùˆM‚P]‚1]]‚P ‚P] ‚P]]]‚P‚PYˆ‚Pˆ€Ñ Œè„é Y‚͂Š„ñm ‚E„é‚E„ù „ù ‚E€‚E1€„e1„e 1„e€ÑY‚͂ńé Y‚͂ŠY‚͂Šƒ ŒŒ?1„é€Ät11]€ÑY‚Í‚ÅY‚͂ń-Œˆ ‚-‚1‚1‚‚e  „ý  0 1H1HH‚]ƒ]€Ñ]‚1]]‚ 1!% 1% 1101%! ]Œ ]Œ Œ ‚À Œ] 11 Y1‚Ì  ]] ]  ] €Ñ €Ñ€Ñ ] €Ñ … ‚À]Œ ]Œ) 1%)!1%) 1y …yy€Ñ11y %) ƒ)) 1y-„! …yy y€Ñ %)1%)1y€Ñ y-11y -1y11y&!11… 1‚©1y€Ñ1y€Ñ€Ñ…%) 1 %) ƒ-) ƒ))€´)‚Á1%)1y…yyy€Ñ1y…yy11y11y…yy11%)ƒ))€Ñ)€µ‚E‚ÅŒ€Ø … €µ‚E‚ÅŒ€Ø ‚ŀ؂= 11y- ‚E‚ÅŒ€Ø€µ )…ƒ …… … QyI I‚Ù IQ IQyQy ]]  ]€ÑyII1I I‚ÙyI1y1I#yIyIyIII1I IQ    I Q9 Q yQ 9 9 9Q QQyQQyy ù  DùDù a aaùDùaù] aùDùaùHaù]ùDùaùY< Y<<(HùDùùù<aù a …1 ùDùaù…- Ha]…-…1…5…- …5…-…1…5„Á)HùDùùù<aù] 1 < $ yY yYY$Y Y 1Y&$yYyY%1Y$yY(](]Y Y Yùý $ ƒH$ Y ƒL Y  ñY  YY ñY  Y  ñY  Y Y ñY YY YYY Y YY   Y Y YY $ ƒ`Y$ ]Y ]YY ]  A YA Yy A YyYA ýƒ|ýE EyQ ayQaayQ I) ) I]M]](M]] YM]M]Y]<M]Y], YM]Y   "M]€í] MM]€í]8 YM]€í Q QQQ  yyQ Q  yQñ yññ ñ  ñÂ0ìÌõÇ9²EZ†šœÂS@Õk=ó!¤PÛÛÃ"‡tT¸bÍ•nì ÆÚå€umÿ¡ÞǯÓGšÝÁÉó,»×ö6uXó"Spm‡¡ìO0¡Z>æ’ð?:G#Êq"¬öwÜŽWÐT÷6ð_¯pMƒKñŽ‹5âÐôÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet0PADPADPÏ€‹‰%P–ôÅšËÍEœîìÈœïâøÅÅb0Ê6á/ÑÇúÔ„ÙâÞÊ’ßñ’ßE“áÿªá \çGÍ%ò»pëö~DüV ˆýâ¸Ó ZIÉ ª‘«‚%$Ï"§ ©*´ç.Æ…4ãêò:_ì?u°&A½˜ÁA’Y>CénUD«“&IÎaÛI);9Pº@úPbxúPþ\heZ¨îgÈÂCp¿ FpB_JpÙ`Jp øûrÅHx\[xJËfis›//Ð:ÿ74‚·åß¹ú3¹µ#´þÞcŽLWÜN¦¢JƳoCVŒÿ‘ *fsiAbortingMainThreadfsiAdvancedfsiBanner3)&fsiBindingSessionTo@"fsiCodeGeneration]"fsiConsoleProblemrOptions->F# Interactive for Visual Studio and enter '--fsi-server-no-unicode'.[Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was:\n\t{0}'--> Added '{0}' to library include path--> Referenced '{0}'Directory '{0}' doesn't exist- ERRORS AND WARNINGS -b\n\nException raised during pretty printing.\nPlease report this so it can be fixed.\nTrace: {0}\n4Exception raised when starting remoting server.\n{0}UExit fsi after loading the files or running the .fsx script given on the command line \n- Exit...\n Failed to resolve assembly '{0}'BExecute interactions on a Windows Forms event loop (on by default)+Display this usage message (Short form: -?)- INPUT FILES -\n- Interrupt\n Display help-Add the given search path for referenced DLLs4Load the given file(s) as if compiled and referencedExit*Reference (dynamically load) the given DLLToggle timing on/off F# Interactive directives:& F# Interactive command line options: See '{0}' for options"'{0}' is not a valid assembly nameInvalid directive '#{0} {1}' - LANGUAGE -2Warning: line too long, ignoring some characters\n#load the given file on startupLoading- MISCELLANEOUS -F# Interactive for F# 3.0 {0}Suppress fsi writing to stdout1Support TAB completion in console (on by default)WTreat remaining arguments as command line arguments, accessed using fsi.CommandLineArgsgenReal: {0}, CPU: {1}, GC {2}--> Timing now off--> Timing now onV- Unexpected ThreadAbortException (Ctrl-C) during event handling: Trying to restart.../Usage: {0} [script.fsx []].Use the given file on startup as initial inputStopped due to error\n†éfsi FSharp.CoremscorlibFSharp.Compiler$FSharp.Compiler.Interactive.SettingsSystemSystem.Windows.Forms1l6‚ÙfsiL/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/fsimain.fs MicrosoftFSharpCompiler Interactive CompareToL/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/console.fsStyleCoreobjintSystem IComparable IComparable`1TU/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/.libs/FSIstrings.fsother Collections IComparerIStructuralComparablecomparer GetHashCodeunitObjectIEqualityComparerIStructuralEquatableEqualsbool IEquatable`1.ctorHistory get_Count get_CurrentstringClearAddlineAddLastPreviousNextOptionsget_Rootset_RootvResetToCursortopleftMoveinsetdeltaAnchorCurrentPlaceAtindexReadLineConsoleSetCompletionFunctionoption`1seq`1f get_Prompt>P:Microsoft.FSharp.Compiler.Interactive.ReadLineConsole.Prompt get_Prompt2 get_Inset GetOptionsinput MapCharactercharcGetCharacterSize get_TabSizeReadLineUtils-T:Microsoft.FSharp.Compiler.Interactive.Utilsguard findMethodType[]`1 Reflection MethodInfoparentTnmmarityargtysrtyPromptOutErrorShellH/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/fsi.fs-T:Microsoft.FSharp.Compiler.Interactive.ShellIO TextWriterFsiTimeReporter outWriterTimeOp?unknownTimeOpIfflagFsiValuePrinterMode AbstractILIL ILGlobals ILAssemblyRefChoice`2AssemblyFsiValuePrinter ilGlobalsgenerateDebugInfo resolvePathGetFsiPrintOptionsInternal UtilitiesStructuredFormat FormatOptionsPM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinter.GetFsiPrintOptionsGetEvaluationContextILRuntimeWriteremEnvIlxgenExecutionContext€ŽM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinter.GetEvaluationContext(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv) PrintValueLayout printModeoptsxty€ÕM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinter.PrintValue(Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinterMode,Internal.Utilities.StructuredFormat.FormatOptions,System.Object,System.Type)InvokeDeclLayoutIlxAssemblyGeneratorTastVal ilxGenerator€ãM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinter.InvokeDeclLayout(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv,Microsoft.FSharp.Compiler.Ilxgen.IlxAssemblyGenerator,Microsoft.FSharp.Compiler.Tast.Val)InvokeExprPrinterTastops DisplayEnvdenvvref€ M:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinter.InvokeExprPrinter(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.Val)DefaultPrintingIntercept IEnvironmentienvFsiStdinSyphon errorWriterResetBM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiStdinSyphon.ResetstrOM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiStdinSyphon.Add(System.String)GetLinefilenamei`M:Microsoft.FSharp.Compiler.Interactive.Shell.FsiStdinSyphon.GetLine(System.String,System.Int32) PrintErrorBuildTcConfigBuilder ErrorLogger PhasedErrortcConfigisWarnerr€¹M:Microsoft.FSharp.Compiler.Interactive.Shell.FsiStdinSyphon.PrintError(Microsoft.FSharp.Compiler.Build.TcConfigBuilder,System.Boolean,Microsoft.FSharp.Compiler.ErrorLogger.PhasedError)FsiConsoleOutput tcConfigBuprintf PrintfModuleTextWriterFormat`1fmt€½M:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleOutput.uprintf``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})uprintfn uprintfnnTextWriterFormat`2uprintnf uprintnfn uprintnfnnget_Out get_Error fprintfnnos ErrorLoggerThatStopsOnFirstErrorfsiStdinSyphonfsiConsoleOutputSetErrorErrorSinkHelperCheckForErrorsResetErrorCount WarnSinkImpl ErrorSinkImplget_ErrorCount AbortOnError[M:Microsoft.FSharp.Compiler.Interactive.Shell.ErrorLoggerThatStopsOnFirstError.AbortOnError directoryNamesJM:Microsoft.FSharp.Compiler.Interactive.Shell.directoryName(System.String)FsiCommandLineOptionsargv ShowBannerShowHelp get_ShowTypes set_ShowTypesget_FsiServerNameget_FsiServerInputCodePageget_FsiServerOutputCodePage get_FsiLCID set_FsiLCIDget_IsInteractiveServerget_ProbeToSeeIfConsoleWorksget_EnableConsoleKeyProcessing get_Interact$get_PeekAheadOnConsoleToPermitTypingget_SourceFileslist`1get_GuiisInteractiveServerrecordExplicitArgargdisplayHelpFsiCompilerOptionBlockblocksfsiUsagePrefixfsiUsageSuffixSetCurrentUICultureForThreadlcid|M:Microsoft.FSharp.Compiler.Interactive.Shell.SetCurrentUICultureForThread(Microsoft.FSharp.Core.FSharpOption{System.Int32})InstallErrorLoggingOnThisThread errorLoggerSetServerCodePages fsiOptions€ƒM:Microsoft.FSharp.Compiler.Interactive.Shell.SetServerCodePages(Microsoft.FSharp.Compiler.Interactive.Shell.FsiCommandLineOptions)FsiConsolePromptPrint PrintAheadSkipNextget_FsiOptions TextReaderFsiConsoleInputinReaderTryGetFirstLineMM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleInput.TryGetFirstLine TryGetConsoleKM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleInput.TryGetConsoleget_InWaitForInitialConsoleInputconsoleLooksOperationalWithImplicitHomedir TcImportsEnv TcGlobalsAstNiceNameGeneratorFsiDynamicCompiler timeReporter tcLockObject tcImports tcGlobals niceNameGenget_DynamicAssemblyNameget_DynamicAssemblyEvalParsedSourceFilesFsiDynamicCompilerState ParsedInputistateinputsEvalParsedDefinitionsSynModuleDecls showTypesisInteractiveItExprdefsM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompiler.EvalParsedDefinitions(Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,System.Boolean,System.Boolean,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Ast.SynModuleDecl})EvalParsedExpressionSynExprexpr€ÀM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompiler.EvalParsedExpression(Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,Microsoft.FSharp.Compiler.Ast.SynExpr)BuildItBindingvM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompiler.BuildItBinding(Microsoft.FSharp.Compiler.Ast.SynExpr)EvalRequireReferenceRangerangeAssemblyResolutionmpath1ProcessMetaCommandsFromInputAsInteractiveCommands sourceFileinpEvalSourceFilesLexhelpLexResourceManager sourceFileslexResourceManagerGetInitialInteractiveStateCreateModuleFragment IlxGenResults ILModuleDef assemblyNamecodegenResults ProcessInputs LongIdent TypeCheckerTcEnvisIncrementalFragment prefixPathnextFragmentIdmkFragmentPathIdentFsiIntellisenseProviderCompletionsForPartialLIDprefixFsiInterruptStdinStateFsiInterruptControllerState)FsiInterruptControllerKillerThreadRequestFsiInterruptControllerget_FsiInterruptStdinStateset_FsiInterruptStdinStateset_InterruptRequestreqget_InterruptAllowedset_InterruptAllowed Interruptget_EventHandlers NativeMethodsControlEventHandlerInstallKillThread ThreadingThread threadToKillpauseMilliseconds PosixInvokenFsiStdinLexerProviderfsiConsoleInputCreateStdinLexer Lexfilter LexFilterCreateIncludedScriptLexersourceFileNameLexbufFromLineReader UnicodeLexingLexbufreadfremoveZeroCharsFromStringStringCreateLexerForLexBufferlexbufFsiInteractionStepStatusFsiInteractionProcessorfsiDynamicCompilerfsiConsolePromptfsiInterruptControllerfsiStdinLexerProvider.ParseAndProcessAndEvalOneInteractionFromLexbufexitViaKillThreadrunCodeOnMainThread tokenizerƒM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionProcessor.ParseAndProcessAndEvalOneInteractionFromLexbuf(System.Boolean,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,System.Tuple{Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionStepStatus}},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,System.Tuple{Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionStepStatus}}},Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,Microsoft.FSharp.Compiler.Lexfilter.LexFilter)EvalIncludedScript€àM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionProcessor.EvalIncludedScript(System.Boolean,Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,System.String,Microsoft.FSharp.Compiler.Range.range)EvalIncludedScripts€äM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionProcessor.EvalIncludedScripts(Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState,System.Boolean,Microsoft.FSharp.Collections.FSharpList{System.String})LoadInitialFilesLoadDummyInteraction€ŸM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiInteractionProcessor.LoadDummyInteraction(Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompilerState)InteractiveCatchChangeDirectoryParseInteractionParsedFsiInteractionExecInteractionTcConfigactionExecInteractions"MainThreadProcessParsedInteraction DummyFormDoCreateHandleFinalize@M:Microsoft.FSharp.Compiler.Interactive.Shell.DummyForm.FinalizeWinFormsEventLoopRun4Microsoft-FSharp-Compiler-Interactive-IEventLoop-Run IEventLoopInvoke7Microsoft-FSharp-Compiler-Interactive-IEventLoop-Invokep/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings/../fsiaux.fsiScheduleRestart@Microsoft-FSharp-Compiler-Interactive-IEventLoop-ScheduleRestartTrySetUnhandledExceptionMode SpawnThreadnameSpawnInteractiveServerStartStdinReadAndProcessThreadref`1 istateReffsiInteractionProcessorDriveFsiEventLoopFsiEvaluationSessionLM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.InterruptFM:Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.RunupdateBannerText resolveType_fsiDynamicCompileraref7T:Microsoft.FSharp.Compiler.Interactive.Shell.UtilitiescallStaticMethodargscallGenericStaticMethodtyargsignoreAllErrorsAutoSerializableAttribute Diagnostics Stopwatch stopwatchProcessptimenumGC PrintExpr PrintDecl=T:Microsoft.FSharp.Compiler.Interactive.Shell.FsiValuePrinterText StringBuilder syphonTextT:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleOutputerrorsNT:Microsoft.FSharp.Compiler.Interactive.Shell.ErrorLoggerThatStopsOnFirstErrorenableConsoleKeyProcessinggui fsiServerNameinteract explicitArgs inputFilesAccfsiServerInputCodePagefsiServerOutputCodePagefsiLCIDprobeToSeeIfConsoleWorks peekAheadOnConsoleToPermitTypingControlLazy`1executableFileNametagFiletagNoneOF:Microsoft.FSharp.Compiler.Interactive.Shell.FsiCommandLineOptions.sourceFilesCT:Microsoft.FSharp.Compiler.Interactive.Shell.FsiCommandLineOptions dropPromptprompt consoleOptManualResetEventconsoleReaderStartupDoneVF:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleInput.consoleReaderStartupDone firstLineGF:Microsoft.FSharp.Compiler.Interactive.Shell.FsiConsoleInput.firstLineNoEqualityAttributeNoComparisonAttributeOptIncrementalOptimizationEnvoptEnvTcStatetcStatetimingoutfile fragmentIdValRefprevIt valuePrinterEmit ModuleBuilder moduleBuilderAssemblyBuilderassemblyBuilder rangeStdinInfos InfoReader infoReader@T:Microsoft.FSharp.Compiler.Interactive.Shell.FsiDynamicCompiler;T:Microsoft.FSharp.Compiler.Interactive.Shell.NativeMethodsSetConsoleCtrlHandlerRuntimeInteropServicesDllImportAttributemscorlib1System.Runtime.InteropServices.DllImportAttribute System.String kernel32.dll _callback_addMulticastDelegate,StdinEOFPermittedBecauseCtrlCRecentlyPressed StdinNormalInterruptCanRaiseExceptionInterruptIgnoredThreadAbortRequest NoRequest ExitRequestPrintInterruptRequeststdinInterruptStateCTRL_CinterruptAllowedkillThreadRequestctrlEventHandlersctrlEventActionsposixReinstateMagicAssemblyResolutionET:Microsoft.FSharp.Compiler.Interactive.Shell.MagicAssemblyResolutionassemblyLoadFromResolveAssembly fullAssemNameInstallLightSyntaxStatus!interactiveInputLightSyntaxStatusCtrlC EndOfFile CompletedCompletedWithReportedErrorWindowsFormsForm7T:Microsoft.FSharp.Compiler.Interactive.Shell.DummyFormmainFormrestart?T:Microsoft.FSharp.Compiler.Interactive.Shell.WinFormsEventLoopOF:Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.tcLockObjectfsiDynamicCompiler@2386fsiIntellisenseProviderBT:Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSessionhistorycompleteroot/T:Microsoft.FSharp.Compiler.Interactive.OptionsMain,T:Microsoft.FSharp.Compiler.Interactive.MainMainMainEntryPointAttributeSTAThreadAttributeSystem.STAThreadAttributeGenericList`1listcurrent/T:Microsoft.FSharp.Compiler.Interactive.HistorySealedAttributeConsoleOptions6T:Microsoft.FSharp.Compiler.Interactive.ConsoleOptions fixupRequired!fixNonUnicodeSystemConsoleReadKey readKeyFixup\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/../InternalCollections.fsi[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/fsi/../InternalCollections.fsTKeyTValue AgedLookup`2 keepStronglyareSameOptionalArgumentAttributeonStrongDiscardkeepMaxTryPeekKeyValuekeyAM:Internal.Utilities.Collections.AgedLookup`2.TryPeekKeyValue(`0)TryGetKeyValue@M:Internal.Utilities.Collections.AgedLookup`2.TryGetKeyValue(`0)TryGet8M:Internal.Utilities.Collections.AgedLookup`2.TryGet(`0)Put8M:Internal.Utilities.Collections.AgedLookup`2.Put(`0,`1)Remove8M:Internal.Utilities.Collections.AgedLookup`2.Remove(`0)3M:Internal.Utilities.Collections.AgedLookup`2.Clear MruCache`2compute isStillValidareSameForSubsumptionlogComputedNewValuelogUsedCachedValue onDiscard1M:Internal.Utilities.Collections.MruCache`2.ClearGet3M:Internal.Utilities.Collections.MruCache`2.Get(`0) GetAvailable?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcefghijklmprstx{€ÿ]ž 9ž1l6  Ây)(ç  y)(ç ! ):y)(ç * 5óx)(ç)&& && €¬ && && €¬,5„&& && €¬&& && €¬&& && €¬ && &&  €¬  && &&  €¬  && &&  €¬ ,5„ )) ))  ‚´  !- -- - €¤  ". .. .  €¤  $1 11 1 €¤  %2 22 2  €¤ &22 '7 77 7  €¤ &77 (@ @@ @  €¤  )E EE E  €¤  LL LL  ‚´+OOOO  €¤,O(O+O(O+  €¤-O,O-.€…€…€…€…€¤0€…€…1€…€…"2€‰€‰€‰€‰€¤3€‰€‰4€‰€‰#€€ €€ €¬ €€ €€ €¬,5„€€ €€ €¬€€ €€ €¬€€ €€ €¬ €€ €€  €¬  6€‘€‘€‘€‘€¤3€‘€‘7€“ €“€“ €“€¤3€“€“8€“€“!€€ €€  €¬  €€ €€  €¬ ,5„ €™€™€™€™‚´ :€œ €œ"€œ €œ"   €¤=€œ#€œ$!>€Ÿ €Ÿ€Ÿ €Ÿ €¤?"@€  € €  €  €¤#A€¡ €¡€¡ €¡€¤$B€£ €£€£ €£   €¤C€£€£%D€É €É€É €É €¤F€É€É&G€Î €Î€Î €Î€¤F€Î€Î'H€Ó€Ó€Ó€Ó€¤(I€Õ €Õ€Õ €Õ €¤ JSS KŽ)+)LZZ ZZ €¤=ZZ*Mhhhh   €¤RhhSh!h#Th$h*Uh+h1Vh>hA && WW& &XX&&YY&&!             ++Z[ 6 ;\Ye"(+〰+[vv[vv‚´`[vv,a[zz[zzbcP€¤bcP=[zz-d[€‡€‡[€‡€‡bcP €¤bcPe[€‡€‡=[€‡€‡.[€Ž€Ž[€Ž€Ž€¬ /[€Ž€Ž[€Ž€Ž€¬,5„0[€Ž€Ž[€Ž€Ž€¬1[€Ž€Ž[€Ž€Ž€¬2[€Ž€Ž[€Ž€Ž€¬ 3[€Ž€Ž[€Ž€Ž €¬  4[€Ž€Ž[€Ž€Ž €¬  5[€Ž€Ž[€Ž€Ž €¬ ,5„ 6[€”€”[€”€”   ‚´"n[€”€”o[€” €”1p[€”3€”>`[€”@€”I"7q[€µ€µ [€µ€µ €¤"v"8w[€Û€Û"[€Û€Û"€¤"y[€Û#€Û(|"9}[€â€â[€â€â€¤"[€â€â#€€[€â%€â)€[€â9€â:€‚[€â@€âB€ƒ":€„[([(€¤"y[*/€ˆ[1=-[\]€‰";€Š[..)[..) €¤"€[.+./€Ž[.1.5€"<€[€—€— [€—€— !‚¼"€’[€—"€—& [€—[€—^"=[>>[>>"‚´+€”[>>+>€•[B B[B B"€¤+€–+?%[J J[J J" €¤+€—[JJ€˜+@€™[N N[N N"  €¤+€š[NN€›[NN€œ+A€[ee[ee"# $€¤+€¢[ee&€£[e8e>€¤[e@eC€¥+B[pp[pp#%‚´.€§[pp`[p!p*€”[p7pB.C€¨[uu[uubcP%/€¤.bcP€«[uu€¬.D€­[vv[vv bcP%/  €¤.bcP€«[vv.E€®[ww[ww bcP%0  €¤.bcP€«[ww.F€°[xx[xx bcP%/  €¤.bcP€«[xx.G€±[yy[yy bcP%/  €¤.bcP€«[yy.H€²[zz[zz bcP%0  €¤.bcP€«[zz.I€³[||[||%€¤..J€´[}}[}}%€¤..K€µ[ss[ssbcP%0‚¼.bcP€¶[ss€«[s#s&.L[%[%#"%&‚´1€§[&/€¸[AO€¹[`p1M€º[„ „[„ „&€¤11N€»[† †[† †bcP&$€¤1bcP€¤[†† 1O€¼[ [ & €¤11P€½[Ž Ž[Ž Ž&€¤11Q€¾[[&$€´1€¾'$€¤[1R€¿[šš[šš&$€´1€¿'$€¤[šš 1S€À[››[››&€´1€À'1T€Á[ž ž[ž ž&€¤1€Â1U€Ã[¥¥[¥¥  €¤€Ä[¥¥€Å3V[´´[´´ #%(‚´4€Ç[´´€§[´+´4€¹[´6´F4W€È[‚X‚X[‚X‚X(€¤44X€É[‚]‚][‚]‚](€¤44Y€Ê[‚x‚x [‚x‚x ( €¤44Z€Ë[‚x3‚x6[‚x3‚x6( €¤4-[‚x7‚x84[€Ì[‚y‚y[‚y‚y( €¤44\€Í[‚z‚z$[‚z‚z$(€¤44]€Î[‚{‚{%[‚{‚{%(€¤44^€Ï[‚|‚|[‚|‚|(€¤44_€Ð[‚|/‚|2[‚|/‚|2(€¤4-[‚|3‚|44`€Ñ[‚}‚}![‚}‚}!( €¤44a€Ò[‚~‚~&[‚~‚~&( €¤44b€Ó[‚‚([‚‚(( €¤44c€Ô[‚‚[‚‚( €¤44d€Õ[‚‚‚‚.[‚‚‚‚.( €¤44e€Ö[‚ƒ‚ƒ[‚ƒ‚ƒ(5  €¤44f€Ø[‚„‚„[‚„‚„( €¤44g€Ù[ÐÐ[ÐÐ( ‚¼44h€Ú[ÑÑ[ÑÑ( ‚¼4€Û[ÑÑ4i€Ü[àà[ààbcP(#5)‚¼4bcP€§[àà €Þ[à"à(4j€ß[ìì[ìì(#5)‚¼4€§[ìì 4k€à[‚‚[‚‚(#5)‚¼4€§[‚‚ 4l€á[‚‡‚‡ [‚‡‚‡ €¤€â[‚‡"‚‡&€ã3m€ä[‚–‚–#[‚–‚–#'€¤€å[‚–$‚–/3n€æ[‚‚[‚‚(€¤€ç[‚‚!€è3o[‚Á‚Á[‚Á‚Á(%*‚´7€ç[‚Á‚Á €¹[‚Á9‚ÁI7p€ê[‚Ê‚Ê[‚Ê‚Ê*€¤77q€ë[‚Ë‚Ë[‚Ë‚Ë*€¤77r€ì[‚Ì‚Ì[‚Ì‚Ì*€¤77s€í[‚Í‚Í[‚Í‚Í*(€¤77t[‚Ô‚Ô[‚Ô‚Ô(+,‚´9€ç[‚Ô‚Ô€ð[‚Ô8‚Ô@`[‚ÔN‚ÔW9u€ñ[ƒƒ[ƒƒ, €¤9€ò9v€ó[ƒƒ[ƒƒ,€¤9€ô9w€õ[ƒƒ[ƒƒ,+€¤99x€ö[ƒƒ([ƒƒ(,€¤99y€÷[‚Ø‚Ø[‚Ø‚Ø, ‚¼99z€ø[ƒ1ƒ1[ƒ1ƒ1bcP# €¤bcP€§[ƒ1ƒ1€ù[ƒ1!ƒ1$=[ƒ1&ƒ1'3{[ƒ=ƒ=[ƒ=ƒ= #&-.(%/  0‚´= [ƒ=ƒ=$€§[ƒ>ƒ>![ƒ?ƒ?$€å[ƒ@ƒ@#`[ƒAƒA![ƒBƒB![ƒCƒC!n[ƒDƒD!€ç[ƒEƒE"€¹[ƒFƒF([ƒGƒG#p[ƒHƒH#=|[ƒïƒï![ƒïƒï!0 €¤==}[ƒðƒð[ƒðƒð0€¤==~[ƒòƒò#[ƒòƒò#01521€¤= [ƒò%ƒò+ [ƒò-ƒò3= [ƒûƒû#[ƒûƒû#01  31€¤= [ƒû%ƒû+[ƒû-ƒû6[ƒû8ƒûK[ƒûMƒûQ=€€[„„2[„„20141€¤= [„4„:[„<„@=€[„#„#[„#„#043€¤=[„#„#"=€‚[„3„3"[„3„3"015 561€¤= [„3#„3)[„3*„3+[„3,„30=€ƒ[„E„EO[„E„EO01 21€¤= [„EP„EV[„EW„Ea [„Eb„Ee=€„![„R„R-[„R„R-0155 71€¤= [„R.„R4[„R6„R7$[„R9„RD%[„RF„RX=€…&[„z„z([„z„z(01€¤==€†'[ƒ`ƒ`[ƒ`ƒ`0# 89‚¼=€§[ƒ`ƒ`'*[ƒ`)ƒ`5+[ƒ`7ƒ`E=€‡,[ƒhƒh[ƒhƒh0152   :1;‚¼= [ƒhƒh [ƒh7ƒh=[ƒhQƒhZ0[ƒhbƒhw[ƒhƒh€’1[ƒh€šƒh€¤=€ˆ2[ƒéƒé[ƒéƒé0‚¼==€‰3[ƒëƒë[ƒëƒë05<‚¼=€›[ƒëƒë=€Š[„„[„„.-=‚´J[„„&[„(„1J€‹6[„•„•&[„•„•&=1 5 €¤J [„•'„•-7[„•/„•5J€Œ[„΄Î[„΄Î>€¬K K€[„΄Î[„΄Î>>€¬K>,5„K€Ž[„΄Î[„΄Î>€¬KK€[„΄Î[„΄Î>€¬KK€[„΄Î[„΄Î>€¬K K€‘[„΄Î[„΄Î> €¬K  K€’[„΄Î[„΄Î> €¬K  K€“[„΄Î[„΄Î>> €¬K >,5„ K€”[„Ò„Ò [„Ò„Ò ?€¬L L€•[„Ò„Ò [„Ò„Ò ??€¬L?,5„L€–[„Ò„Ò [„Ò„Ò ?€¬LL€—[„Ò„Ò [„Ò„Ò ?€¬LL€˜[„Ò„Ò [„Ò„Ò ?€¬L L€™[„Ò„Ò [„Ò„Ò ? €¬L  L€š[„Ò„Ò [„Ò„Ò ? €¬L  L€›[„Ò„Ò [„Ò„Ò ?? €¬L ?,5„ L€œ[„Ö„Ö.[„Ö„Ö.@€¬M M€[„Ö„Ö.[„Ö„Ö.@@€¬M@,5„M€ž[„Ö„Ö.[„Ö„Ö.@€¬MM€Ÿ[„Ö„Ö.[„Ö„Ö.@€¬MM€ [„Ö„Ö.[„Ö„Ö.@€¬M M€¡[„Ö„Ö.[„Ö„Ö.@ €¬M  M€¢[„Ö„Ö.[„Ö„Ö.@ €¬M  M€£[„Ö„Ö.[„Ö„Ö.@@ €¬M @,5„ M€¤[„Ü„Ü[„Ü„Ü(%A‚´N€ç[„Ü„Ü&€¹[„Ý„Ý,N€¥<[„è*„è-[„è*„è-A>€¤NN€¦=[„èK„èN[„èK„èNA>€¤N-[„èO„èPN€§>[„ê$„ê'[„ê$„ê'A@€¤N?[„ê(„ê+N€¨@[„ì$„ì'[„ì$„ì'A?€¤NN€©A[„ìB„ìE[„ìB„ìEA?€¤N-[„ìF„ìGN€ªB[„î„î[„î„îA€¤NN€«C[„ð„ð[„ð„ðA5B€¤NN€¬F[„ó„ó'[„ó„ó'AC €¤NI[„ó(„ó4J[„ó=„óNN€­K[…S …S[…S …SA€¤NL[…S…SN€®[††[††#",%(7&D‚´Q€§[††$€¸[†&†4N[††*€¹[††+€ç[† † %%[† † -€å[† † &Q€¯O[†<†<[†<†<DE€¤QQ€°R[†T†T'[†T†T'D E€¤QS[†T(†T6Q€±T[††[††D" F‚¼Q€¸[††,W[†>†CQ€²X[†+†+![†+†+!D G‚¼Q€—[†+#†+&Q€³Z[†1†1[†1†1D FE‚¼QS[†1!†1/[[†11†17Q€´[†]†][†]†]H€¬U U€µ[†]†][†]†]HH€¬UH,5„U€¶[†]†][†]†]H€¬UU€·[†]†][†]†]H€¬UU€¸[†]†][†]†]H€¬U U€¹[†]†][†]†]H €¬U  U€º[†]†][†]†]H €¬U  U€»[†]†][†]†]HH €¬U H,5„ U€¼[†d†d[†d†d #&(0*%AD7I‚´V €§[†d†d&€å[†e†e(€ç[†f†f'^[†g†g/_[†h†h-€¹[†i†i-`[†j†j3a[†k†k2%[†l†l/V€½b[‡G‡G<[‡G‡G<I 11H11H1E1H€¤Vc[‡G>‡GOd[‡GQ‡Gd [‡Gf‡Gle[‡G€†‡G€fV€¾g[‡i‡i'[‡i‡i'I 1 51H€¤Vc[‡i)‡i: [‡i<‡iB[‡iD‡iN[‡iP‡iQhV€¿i[‡‚‡‚([‡‚‡‚(I1 5 1€¤V [‡‚*‡‚0c[‡‚2‡‚C$[‡‚E‡‚PjV€Àk[‡‡%[‡‡%I 11€¤Vc[‡'‡8 [‡:‡@V€Ál[‡¦‡¦)[‡¦‡¦)I11€¤V [‡¦*‡¦0mV€Â€í[‡©‡©[‡©‡©I(€¤VV€Ãn[†n†n[†n†nbcPIHH‚¼VbcP=[†n†n [†n†n!V€Äo[†z†z[†z†zI 5‚¼V[†z†z[†z&†z'V€Åp[†„†„[†„†„IEJ‚¼Ve[†„†„#V€Ær[† † [† † I K1J1H‚¼Vc[† † *€¢[† 1† 9 [† D† Jt[† L† RV€Çu[†û †û[†û †ûI K1J1H‚¼Vc[†û†û/€¢[†û1†û9 [†û;†ûAt[†ûC†ûIV€Èv[‡‡*[‡‡*I J11H‚¼Vc[‡,‡=t[‡?‡E [‡G‡MV€É[‡´‡´[‡´‡´L‚´YY€Êx[‡¶ ‡¶[‡¶ ‡¶L€¤YY€Ëy[‡¹‡¹[‡¹‡¹L€´YyzY€Ì[‡½‡½[‡½‡½%M‚´Z€¹[‡½‡½'€â[‡½;‡½?Z€Í|}[‡Ã‡Ã[‡Ã‡ÃM €´Z|N Z€Î€[‡É‡É[‡É‡ÉbcP„Mÿ´@ZN  !„bcP=[‡É‡ÉZ€Ï‚ƒ[‡ì‡ì![‡ì‡ì!M€´Z‚NZ€Ð„[‡î‡î [‡î‡î €¤3€Ñ…[‡ÿ‡ÿ[‡ÿ‡ÿ €¤†[‡ÿ‡ÿ=[‡ÿ‡ÿ3€Ò‡[ˆˆ[ˆˆ(%A€¤€ç[ˆˆ&€¹[ˆˆ,`[ˆˆ23€Óˆ[ˆ0ˆ0"[ˆ0ˆ0"\1',%DI €¤€â[ˆ0#ˆ0'Š[ˆ0)ˆ02€å[ˆ04ˆ0?N[ˆ1#ˆ12€¹[ˆ2#ˆ23a[ˆ3#ˆ38‹[ˆ4#ˆ4:c[ˆ5#ˆ543€ÔŒ[ˆ†ˆ†[ˆ†ˆ†%€¤€¹[ˆ†ˆ†'3€Õ[ˆ¥ˆ¥"[ˆ¥ˆ¥" +O‚´]€Ç[ˆ¥$ˆ¥(€ð[ˆ¥3ˆ¥;`[ˆ¥Hˆ¥Q€”[ˆ¥^ˆ¥i]€ÖB[‰d ‰d[‰d ‰dO€¤]Ž]€×|[‰n ‰n[‰n ‰nO€¤]]€Ø[ˆéˆé[ˆéˆéO‚¼]]€Ù‘[‰F‰F[‰F‰FbcPbcPO  ‚¼]bcPbcP’[‰F‰F'“[‰F)‰F-]€Ú^[‰R ‰R[‰R ‰RO0‚¼]]s[VV”Zè ÛÞ€Û•[WW[WW 5€¤€‚[WW†[W#W'–[W(W,^€Ü—[^^[^^ 55€¤€‚[^!^#†[^*^.˜[^/^5–[^6^:^€Ý™[cc[cc€¤=[cc^ _[vv _`š P  `[vvZ_Q[wwZ_RŸ[xx Z_ [yy Z_3_a3_abcPd3_d bcP   Z !!ÞÞ f[€Ž€Ž ¡¡[€€¢¢[€€3f3f3f3f3f3f 3f 3f   Z !!ÞÞ m[€”€”   p[€”3€”>Zm`[€”@€”IZmn[€”€”Zm o[€” €”1Zm3m   q3mqw3mw}3m}€„3m€„€Š3m€Š £Z !!ÞÞ €“[>> €”[>>Z€“S¦[??Z€“3€“"€•3€“€•"%3€“%" €™3€“€™"  €3€“€"# $§Z !!ÞÞ €¦[pp #€§[ppZ€¦`[p!p*Z€¦€”[p7pBZ€¦¨[rrZ€¦ 3€¦#%€¨3€¦€¨!bcP%/!!€­3€¦€­"bcP%/""€®3€¦€®#bcP%0##€°3€¦€°$bcP%/$$€±3€¦€±%bcP%/%%€²3€¦€²&bcP%0&&€³3€¦€³%€´3€¦€´%©Z''ÞÞ€·[%#€§[&/Z€·"€¸[AOZ€·%€¹[`pZ€·ª[ƒƒZ€· 3€·#"%&€º3€·€º&€»3€·€»'bcP&$'€¼3€·€¼& €½3€·€½&€¾3€·€¾&$€¿3€·€¿&$€À3€·€À&€Á3€·€Á&'«Z((ÞÞ€Æ[´´#€§[´+´4Z€Æ%€¹[´6´FZ€Æ ¬[µµ*Z€Æ ­[¹¹Z€Æ [ÀÀZ€Æ ®[ÁÁZ€Æ ¯[ÂÂZ€Æ5 °[ÃÃZ€Æ5  ±[ÅÅZ€Æ²[ÇÇ&Z€Æ³[ÈÈ'Z€Æ´[ÉÉZ€Æ µ[ÌÌ(Z€Æ ¶[ÍÍ0Z€Æd ¹[ÓÓZ€Æ º[èèZ€Æ »[ééZ€Æ5  $[‚6‚6¼Z€Æ3€Æ #%(€È3€Æ€È(€É3€Æ€É(€Ê3€Æ€Ê( €Ë3€Æ€Ë( €Ì3€Æ€Ì( €Í3€Æ€Í(€Î3€Æ€Î(€Ï3€Æ€Ï(€Ð3€Æ€Ð(€Ñ3€Æ€Ñ( €Ò3€Æ€Ò( €Ó3€Æ€Ó( €Ô3€Æ€Ô( €Õ3€Æ€Õ( €Ö3€Æ€Ö(5  €Ø3€Æ€Ø( ½Z((ÞÞ€é[‚Á‚Á(€ç[‚Á‚Á Z€é%€¹[‚Á9‚ÁIZ€é¾[‚Å‚ÅZ€é ¿[‚È‚ÈZ€é3€é(%*€ê3€é€ê*€ë3€é€ë*€ì3€é€ì*€í3€é€í*(Z((ÞÞ€ï[‚Ô‚Ô`[‚ÔN‚ÔWZ€ï+€ð[‚Ô8‚Ô@Z€ï(€ç[‚Ô‚ÔZ€ïÀ[‚ë‚ëZ€ïTÂ[‚û‚û ÃZ€ï Ä[‚þ‚þÅZ€ï3€ï(+,€ñ3€ï€ñ, €ó3€ï€ó,€õ3€ï€õ,+€ö3€ï€ö,Z((ÞÞ[ƒ(ƒ(_`š P  f`ÆUg`ÇVWÊ[ƒ)ƒ) y[ƒ*ƒ* .[ƒ+ƒ+XÌ[ƒ,ƒ, €ˆ[ƒ-ƒ- Í[ƒ/ƒ/ Z((ÞÞ€ÿ[ƒ=ƒ=[ƒ=ƒ=$Z€ÿ[ƒ?ƒ?$Z€ÿ-[ƒBƒB!Z€ÿ.[ƒCƒC!Z€ÿ#€§[ƒ>ƒ>!Z€ÿ  p[ƒHƒH#Z€ÿ`[ƒAƒA!Z€ÿ/[ƒGƒG#Z€ÿn[ƒDƒD!Z€ÿ(€ç[ƒEƒE"Z€ÿ%€¹[ƒFƒF(Z€ÿ&€å[ƒ@ƒ@#Z€ÿ Î[ƒJƒJZ€ÿ *[ƒKƒKZ€ÿÏ[ƒMƒMZ€ÿYÑ[ƒNƒNZ€ÿ o[ƒPƒPZ€ÿÒ[ƒRƒRZ€ÿZÕ[ƒTƒT%Z€ÿ[×[ƒTƒTZ€ÿ5Ø[ƒVƒVZ€ÿ\Û[ƒ]ƒ]Z€ÿ 3€ÿ  #&-.(%/  03€ÿ0 3€ÿ03€ÿ01521 3€ÿ 01  313€ÿ01413€ÿ0433€ÿ015 5613€ÿ01 21!3€ÿ!0155 71&3€ÿ&01ÜZ((ÞÞ5[„„-[„(„1Z5.[„„&Z55Ø[„„Z535.-=6356=1 5 Z((ÞÞD[„ÄÃÝZ{((Þà€Þ[„Å„Å6[„Å„Å6B ÿ´@OO€ßÞ[„È„È%[„È„È%B  €´nâ·z\V4à‰ãâ·z\V4à‰äå å æ[„È:„ÈCç[„ÈI„ÈMoE[„Å „ÅB oEB oEB ]ZD((àà8[„΄Î>éé[„Ï„Ï2>êê[„ЄÐ38>38>>38>38>38>38> 38> 38>>  > >Z((àà9[„Ò„Ò ?ëë[„Ó„Ó ?ìì[„Ô„Ô39?39??39?39?39?39? 39? 39??  ? ?Z((àà:[„Ö„Ö.@íí[„ׄ×@îî[„Ø„Ø@ïï[„Ù„Ù@ðð[„Ú„Ú3:@3:@@3:@3:@3:@3:@ 3:@ 3:@@  @ @Z((àà;[„Ü„Ü (€ç[„Ü„Ü&Z;%€¹[„Ý„Ý,Z;>ñ[„ß„ß#Z;ò[„à„àZ;?ó[„á„á Z;@ô[„â„â!Z;5Bõ[„ã„ã!Z;5ö[„ä„ä Z;÷[„æ„æZ; 3;(%A<3;<A>=3;=A>>3;>A@@3;@A?A3;AA?B3;BAC3;CA5BF3;FAC K3;KAZ((ààø[…Š…ŠùZ(((àã€àú[…… [……  €¤[…"…&Zøq€áû[……[……5#-0% €¤[……€§[……#[…%….^[…;…M€¹[…c…sü[…€‡…€”q€âý[…ø…ø[…ø…ø#-0%€¤€§[…ø…ø[…ø…ø$^[…ø1…øC€¹[…øY…øiqM[††#€§[††$ZM7%[† † -ZM"€¸[†&†4ZM(€ç[† † %ZM%€¹[††+ZM,N[††*ZM&€å[† † &ZM^ÿ[††)ZM3M#",%(7&DO3MODER3MRD EZ((ãã\[†]†]H‚‚[†^†^ H‚‚[†_†_H‚‚[†`†`H‚‚[†a†a 3\H3\HH3\H3\H3\H3\H 3\H 3\HH  H HZ((ãã][†d†d #€§[†d†d&Z]7%[†l†l/Z]Da[†k†k2Z](€ç[†f†f'Z]A`[†j†j3Z]0^[†g†g/Z]*_[†h†h-Z]%€¹[†i†i-Z]&€å[†e†e(Z]5Ø[†x†xZ]3]  #&(0*%AD7Ib3]bI 11H11H1E1Hg3]gI 1 51Hi3]iI1 5 1k3]kI 11l3]lI11€í3]€íI(Z((ããw[‡´‡´3wLx3wxLy3wyL_‚Z ((ãã {[‡½‡½ €â[‡½;‡½?Z{%€¹[‡½‡½'Z{L‚[‡¾‡¾Z{\ ‚ [‡Á‡ÁZ{3{%MN‚ Z!!((ãã![ˆ¥ˆ¥"!`[ˆ¥Hˆ¥QZ[ˆ´ˆ´Z#€§[ˆÌˆÌZ%€¹[ˆãˆãZ&€å[ˆåˆåZ(€ç[ˆîˆîZ,N[‰‰Z-[‰‰Z.[‰‰Zn[‰!‰!Z/[‰#‰#Z[‰)‰)‚ Zd0‚ [‰R ‰RZA`[‰T‰TZ\1Š[‰Z‰ZZDa[‰\‰\Z=‚ [‰^‰^ZI‹[‰`‰`Z3 +OB3BO|3|O‚Z""((ãã"9€™€™" ‚€š€š9   ‚€›€›9 9:9:   >9> @9@ A9AB9B   D9D G9GH9HI9I ##((ãã#*LL # ‚NN** +*+  ,*,   ‚$$((ãã$‚ 6 :$‚t%%((ãä€ã‚   €¤t`‚`uâ·z\V4à‰‚€Ç v% )) %w ‚**  ‚++   ! ! " "  $ $ % %  ' '  ( (  ) )  ‚&&((ää&/€„€„ &x`‚a./.2/2''((ää'‚'‚ |((((äç€ä‚! €¤y€å‚"''\ €¤y€æ‚#€¤Fy(5€€ (0€€1€€555555 5 5 656757  ))((çç)r‚$ ){*/(jç÷*s‚$*r7+/(jç÷+‚$(+rsñ,/(jç÷€ç‚$‚%(‚&‚$ „)‚'‚$!(„(( )z()ÿ´@z‚&‚$ ‚'‚$!(‚)‚$ ‚*‚${`‚+b‚,‚$  {`‚+b‚-‚$  z€è‚.‚$ ‚%kk*‚&‚$ „+‚'‚$!(„z*+**+ÿ¤@z‚&‚$ ‚'‚$!(‚/‚$ ‚0z€é‚1‚$ ‚%pp,‚&‚$ „-‚'‚$!(„z,-,,-ÿ¤@z‚&‚$ ‚'‚$!(‚/‚$‚2z€ê‚3‚$ ‚%uu.‚&‚$ „/‚'‚$!(„z././ÿ¤@z‚&‚$ ‚'‚$!(‚/‚$‚4z€ë‚5‚$ ‚%||0‚&‚$ „1‚'‚$!(„z0101ÿ¤@z‚&‚$ ‚'‚$!(‚6z€ì‚7‚$ ‚%€‚€‚2‚&‚$ „3‚'‚$!(„z232ÿ¤@z‚&‚$ ‚'‚$!(‚/‚$‚8z€í$‚$ ‚%€Ž€Ž4‚&‚$ „5‚'‚$!(„z45ÿ¤@z‚&‚$ ‚'‚$!(‚9z€î‚$""‚%€”€”6‚&‚$!!„7‚'‚$!!&„ 6766 67 66 667|67ÿ´@|‚&‚$!!‚'‚$!!& ‚)‚$" "‚;‚$##‚*‚$$${`‚+b‚<‚$%%{`‚+b‚=‚$&&${`‚+b‚>‚$''"{`‚+b‚?‚$((!{`‚+b‚@‚$)){`‚+b‚-‚$**|€ï$‚$- -‚%€Å€Å8‚&‚$!!„9‚'‚$!!&„|89ÿ¤@|‚&‚$!!‚'‚$!!&‚A|€ð‚B‚$/ /‚%€®€®:‚&‚$!!„;‚'‚$!!&„|:;:;ÿ¤@|‚&‚$!!‚'‚$!!&‚/‚$//‚C|€ñ‚D‚$1 1‚%€§€§<‚&‚$!!„=‚'‚$!!&„|<=<=ÿ¤@|‚&‚$!!‚'‚$!!&‚/‚$11‚E|€ò‚7‚$3 3‚%€Â€Â>‚&‚$!!„?‚'‚$!!&„|>?>ÿ¤@|‚&‚$!!‚'‚$!!&‚/‚$33‚F|€ó‚G‚$5 5‚%€¿€¿@‚&‚$!!„A‚'‚$!!&„|@A@Aÿ¤@|‚&‚$!!‚'‚$!!&‚/‚$55‚H‚$5&5+‚I|€ô‚J‚$7 7‚%€¼€¼B‚&‚$!!„C‚'‚$!!&„|BCBCÿ¤@|‚&‚$!!‚'‚$!!&‚K|€õ‚L‚$<<‚%€Ì€ÌD‚&‚$<^>#‚%€å€å#F‚$>>>@„5F5Fÿ¤@}‚$>>>@‚Q},G‚&‚$ „H‚'‚$!(„‚(‚$,~‚(I‚&‚$ „J‚'‚$!(„II JzIJ‚.~‚(‚.K‚&‚$ „L‚'‚$!(„zKLKKL‚1~‚(‚1M‚&‚$ „N‚'‚$!(„zMNMMN‚3~‚(‚3O‚&‚$ „P‚'‚$!(„zOPOP‚5~‚(‚5Q‚&‚$ „R‚'‚$!(„zQRQR‚7~‚(‚7S‚&‚$ „T‚'‚$!(„zSTS$~‚($U‚&‚$ „V‚'‚$!(„zUV‚Rrs--WW÷÷-W‚&‚$!!„X‚'‚$!!&„‚:‚$!!-~‚: Y‚&‚$!!„Z‚'‚$!!&„ YZYY YZ YY YYZ|YZ$~‚:$[‚&‚$!!„\‚'‚$!!&„|[\‚B~‚:‚B]‚&‚$!!„^‚'‚$!!&„|]^]^‚D~‚:‚D_‚&‚$!!„`‚'‚$!!&„|_`_`‚7~‚:‚7a‚&‚$!!„b‚'‚$!!&„|aba‚G~‚:‚Gc‚&‚$!!„d‚'‚$!!&„|cdcd‚J~‚:‚Je‚&‚$!!„f‚'‚$!!&„|efef‚Srs..gg÷÷.‚M‚$::.x`‚a‚L~‚M‚Lg‚&‚$<^>>@„5i5irs//jj÷÷/‚T /01jl÷6?€÷c‚´‚T‚U€ø‚Vcc%cc% €¤‚W€ù‚Xcc%cc% €¤‚Yd/d0‚Z€ú‚[ii#ii# €¤‚\€û‚]llllG €¤‚^ll‚_€ü‚`oooo €¤‚a€ý‚brr#rr# €¤‚c€þ‚duu&uu& €¤‚e€ÿ‚fxxxx €¤‚g‚h{{"{{" €¤‚i‚j~~~~ €¤‚k‚l€€2€€2G €¤‚^€3€5‚m‚n€„€„€„€„ €¤‚o‚p€‡€‡€‡€‡ €¤‚q‚r€Š€Š€Š€Š €¤‚s‚t€€€€ €¤‚u‚v€€€€ €¤‚w‚x€“€“€“€“ €¤‚y ‚z€–€–€–€– €¤‚{ ‚|€™€™€™€™ €¤‚} ‚~€œ€œ€œ€œ €¤‚ ‚€€Ÿ€Ÿ#€Ÿ€Ÿ# €¤‚ ‚‚€¢€¢$€¢€¢$G €¤‚^€¢%€¢'‚ƒ‚„€¥€¥*€¥€¥*G €¤‚^€¥+€¥-‚…‚†€¨€¨%€¨€¨%GG €¤‚^€¨&€¨(‚‡€¨:€¨<‚ˆ‚‰€«€« €«€«  €¤‚Š‚‹€®€®'€®€®'GGG €¤‚^€®(€®*‚‡€®<€®>‚Œ€®P€®R‚‚Ž€±€±O€±€±O €¤‚‚€´€´2€´€´2G €¤‚^€´3€´5‚‘‚’€·€·/€·€·/ €¤‚“‚”€º€º'€º€º' €¤‚•‚–€½€½'€½€½' €¤‚—‚˜€À€À*€À€À* €¤‚™‚š€Ã€Ã*€Ã€Ã* €¤‚›‚œ€Æ€Æ*€Æ€Æ* €¤‚‚ž€É€É*€É€É* €¤‚Ÿ‚ €Ì€Ì0€Ì€Ì0 €¤‚¡‚¢€Ï€Ï%€Ï€Ï%G €¤‚^€Ï&€Ï(‚£‚¤€Ò€Ò+€Ò€Ò+ €¤‚¥‚¦€Õ€Õ€Õ€Õ €¤‚§‚¨€Ø€Ø€Ø€Ø €¤‚© ‚ª€Û€Û'€Û€Û' €¤‚«!‚¬€Þ€Þ0€Þ€Þ0G €¤‚^€Þ1€Þ3‚­"‚®€á€á€á€áG €¤‚^€á€á!‚¯#‚°€ä€ä€ä€äG €¤‚^€ä€ä!‚±$‚²€ç€ç#€ç€ç# €¤‚³%‚´€ê€ê$€ê€ê$ €¤‚µ&‚¶€í€í3€í€í3 €¤‚·'‚¸€ð€ð,€ð€ð,G €¤‚^€ð-€ð/‚¹(‚º€ó€ó%€ó€ó%G €¤‚^€ó&€ó(‚»)‚¼€ö€ö €ö€ö G €¤‚^€ö!€ö#‚½*‚¾€ù€ù&€ù€ù&€¤‚¿+‚À  ‚¼†,‚Á‚¼‚ #‚Ã59-‚Ä     ‚¼€‚  .‚Å!!!! ‚¼‚Æ!!"/‚Ç$$$$‚¼€‚$$ 0‚È,,(,,(‚¼€‚,*,,‚Ã,;,?1‚É2222 55‚¼€«22€›2%2&–2'2+€‚2,2.‚Ê20222‚Ë<< <<   ‚¼€Ä<"<#3‚Ì??"??"j?W?Y„ €€jj‚¼?W?Y‚Î?$?1€«?=?@4‚ÏZZZZkZMZO„ €€kk‚¼ZMZO‚ÐZZ'€«Z3Z65‚Ñ‚´‚T‚U0‚U0dd‚Ô‚T‚U‚Õ‚T‚U ‚ÖXX*‚T‚U‚ׂT5€‚‚Uc‚V€‚‚U‚V ‚X€‚‚U‚X ‚[€‚‚U‚[ ‚]€‚‚U‚]G ‚`€‚‚U‚` ‚b€‚‚U‚b ‚d€‚‚U‚d ‚f€‚‚U‚f ‚h€‚‚U‚h ‚j€‚‚U‚j ‚l€‚‚U‚lG ‚n€‚‚U‚n ‚p€‚‚U‚p ‚r€‚‚U‚r ‚t€‚‚U‚t ‚v€‚‚U‚v ‚x€‚‚U‚x ‚z€‚‚U‚z ‚|€‚‚U‚| ‚~€‚‚U‚~ ‚€€‚‚U‚€ ‚‚€‚‚U‚‚G ‚„€‚‚U‚„G ‚†€‚‚U‚†GG ‚‰€‚‚U‚‰ ‚‹€‚‚U‚‹GGG ‚Ž€‚‚U‚Ž ‚€‚‚U‚G ‚’€‚‚U‚’ ‚”€‚‚U‚” ‚–€‚‚U‚– ‚˜€‚‚U‚˜ ‚š€‚‚U‚š ‚œ€‚‚U‚œ ‚ž€‚‚U‚ž ‚ €‚‚U‚  ‚¢€‚‚U‚¢G ‚¤€‚‚U‚¤ ‚¦€‚‚U‚¦ ‚¨€‚‚U‚¨ ‚ª€‚‚U‚ª ‚¬€‚‚U‚¬G ‚®€‚‚U‚®G ‚°€‚‚U‚°G ‚²€‚‚U‚² ‚´€‚‚U‚´ ‚¶€‚‚U‚¶ ‚¸€‚‚U‚¸G ‚º€‚‚U‚ºG ‚¼€‚‚U‚¼G ‚¾€‚‚U‚¾‚Ñ€‚‚U‚Ñ‚T11ll66‚Øß fsi FSharp.CoremscorlibR FSIstringsInternal Utilities Collections MicrosoftFSharpCompiler InteractiveStyle CompareToCoreintobjthisSystem IComparer GetHashCodeIEqualityComparerunitunitArg FSharp.Core(Microsoft.FSharp.Core.LanguagePrimitivesget_GenericEqualityComparermscorlib$System.Collections.IEqualityComparerEqualsboolHistory.ctor get_Count get_CurrentstringClearAddAddLastPreviousNextOptionsget_Rootset_RootCursorResetToMoveAnchorCurrentPlaceAtReadLineConsoleSetCompletionFunctionoption`1seq`1 get_PromptxunitVar1> get_Prompt2- get_Inset System.String get_Length System.Int32 GetOptions MapCharactercharc^Z^?GetCharacterSize get_TabSizeunitVar0ReadLineConsoleOptions fixupRequired!fixNonUnicodeSystemConsoleReadKey readKeyFixupMainShellMagicAssemblyResolution NativeMethodsUtilsguard findMethod     &,/ 12 ?GO  ˆüà@!E&è)   , ,   ,, °?_Õ :·z\V4à‰°?_Õ :!"#$%& &' &( )*)+,   ,    , ,,       ,  , ,   ,,,   °?_Õ :·z\V4à‰°?_Õ : , ,- ,. ,  , / /0  /3 4 & 5,6 /7  4 & 5,8 /9  4 & 5,·z\V4à‰:;·z\V4à‰<6 /=  />  4 &@ $  AB   /C  /DE,/F G HIJKL_MNOPQß©ª ó©_CorExeMainmscoree.dllÿ% @  :fsharp-3.0.34/lib/bootstrap/4.0/FSharp.Compiler.Server.Shared.dll0000775000175000017500000001700012260314606023260 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELKjPà! ^6 @@ €@6X` d6  H.textØ  `.rsrc@@@.reloc `@B?6Hø Ä SystemObjectmscorlibMicrosoft.FSharp.Compiler.Server.SharedFSharpInteractiveServerMarshalByRefObject$Fsiserver.$Assemblyinfo.FSharp.Compiler.Server.ShareddllFSharp.Compiler.Server.SharedMicrosoft.FSharp.CoreFSharpInterfaceDataVersionAttributeFSharp.Core.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.CompilerServicesInternalsVisibleToAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesInterruptSystem.Runtime.Remoting.Channels.IpcIpcChannelSystem.Runtime.RemotingObjRefTimeSpanSystem.Runtime.Remoting.LifetimeLifetimeServicesset_LeaseTimeset_LeaseManagerPollTimeset_RenewOnCallTimeset_SponsorshipTimeoutSystem.Runtime.Remoting.ChannelsIChannelChannelServicesRegisterChannelRemotingServicesMarshalStartServerchannelNameserverTypeGetTypeFromHandleRuntimeTypeHandleStringConcatActivatorGetObjectIntrinsicFunctionsLanguagePrimitivesUnboxGenericStartClientAbstractClassAttributeCompilationMappingAttributeSourceConstructFlagsFSIServer ipc:///FSIServerKjPá°“O§EƒKjP·z\V4à‰€ $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî°?_Õ :  &!FSharp.Compiler.Server.Shared.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#UOfsi, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee_YFSharp.VS.FSI, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee  5 9= AI= 9=UYU  usþ!álVLоpQ¨@—"h„A½~¡c–g’ž›ž ÈÕŸðEº ÞuÍÔ4AÏ›ÁÂp:Àš'Õ&…·ô,“½òÖå%Ów2@û —ê6YR.¤[”Ó³¹ÑáÆ-ƒ> ÅÎÁ˜ŽpÄ0²ZœcîBìäÅÐFSharp.Compiler.Server.Shared FSharp.CoremscorlibFSharp.Compiler.Server.Sharedu/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Server.Shared/../fsiserver/fsiserver.fs MicrosoftFSharpCompilerServerShared InterruptFSharpInteractiveServerCoreunit.ctor StartServerstring channelNameserver StartClientAbstractClassAttributeSystemMarshalByRefObject[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Server.Shared      ƒ–PS Ï#Š$*C+1ú( (( (ÿ´@ &&%&&%‚´----€´ 0000€¤00)0107::::€¤::) &&%         ë MicrosoftFSharpCompilerServerShared€¹~_@!+6M6 ?6_CorDllMainmscoree.dllÿ% @0 `6fsharp-3.0.34/lib/bootstrap/4.0/Microsoft.FSharp.Targets0000664000175000017500000003063212260314606021642 0ustar chrischris true true $(MSBuildAllProjects);$(MSBuildThisFileFullPath) .fs F# Managed $(Optimize) Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier) RootNamespace false $(Prefer32Bit) false true <_Temporary Remove="@(_Temporary)" /> <_Temporary Remove="@(_Temporary)" /> <_DebugSymbolsIntermediatePathTemporary Include="$(PdbFile)"/> <_DebugSymbolsIntermediatePath Include="@(_DebugSymbolsIntermediatePathTemporary->'%(RootDir)%(Directory)%(Filename).pdb')"/> <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" /> fsharp-3.0.34/lib/bootstrap/4.0/FSharp.Compiler.dll0000775000175000017500005425100012260314606020617 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELjPà! L±¾j± €±@ À±@bj±Y ± Äj±  H.textL± L± `.rsrc€±N±@@.reloc  ±P±@Bžj±HÀ=.Ö_ DŽ] ÄŽ€*o &*rþ~ / ( +~*vþ~ / ( +€*Žs4Årpr/ps s þ(+*Žs8ÅrApr/ps s þ(+*Žs<Årpr/ps s þ(+*Žs@ÅrËpr/ps s þ(+*ŽsDÅr%pr/ps s þ(+*ŽsHÅrepr/ps s þ(+*ŽsLÅrµpr/ps s þ(+*ŽsPÅr pr/ps s þ(+*ŽsTÅr-pr/ps s þ(+*ŽsXÅrupr/ps s þ(+*Žs\År§pr/ps s þ(+*Žs`ÅrÝpr/ps s þ(+*’sfÅr!prQps s þ(+*® ËsjÅrmpr/ps s (+s *® ÌsnÅr¡pr/ps s (+s *® ÍsrÅrÕpr/ps s (+s *ŽsvÅrpr/ps s þ(+*² Îs|År'prYps s (+s *0$ Ïrups  r}p(+s *0$ Ðrups  r«p(+s *0$ Ñrups  råp(+s *® Òs€Årpr/ps s (+s *® Ós„ÅrIpr/ps s (+s *® ÔsˆÅrƒpr/ps s (+s *® ÕsŒÅr­pr/ps s (+s *® ÖsÅrßpr/ps s (+s *® ×s”Årpr/ps s (+s *® Øs˜ÅrKpr/ps s (+s *0rups  rop(+*® ÙsœÅrÁpr/ps s (+s *® Ús Årpr/ps s (+s *® Ûs¤ÅrGpr/ps s (+s *0$ Ürups  rp(+s *² ÝsªÅrÉprYps s (+s *0$ Þrups  rp(+s *0$ ßrups  rip(+s *Žs®År£pr/ps s þ(+*® às²ÅrÑpr/ps s (+s *® ás¶År pr/ps s (+s *® âsºÅrC pr/ps s (+s *® ãs¾Årƒ pr/ps s (+s *² äsÄÅr½ prYps s (+s *² åsÊÅr prYps s (+s *® çsÎÅrK pr/ps s (+s *0$ èrups  r‘ p(+s *0$ érups  rÇ p(+s *0$ êrups  rý p(+s *0$ ërups  r9 p(+s *0$ ìrups  ru p(+s *® ísÒÅr» pr/ps s (+s *® îsÖÅrù pr/ps s (+s *® ïsÚÅrE pr/ps s (+s *® ðsÞÅr… pr/ps s (+s *® ñsâÅrÍ pr/ps s (+s *® òsæÅró pr/ps s (+s *® ósêÅr pr/ps s (+s *0$ ôrups  rM p(+s *’sðÅr‘ prYps s þ(+*® õsôÅrÕ pr/ps s (+s *ŽsøÅr pr/ps s þ(+*® ÷süÅrYpr/ps s (+s *® øsÆr³pr/ps s (+s *² ùsÆrýprYps s (+s *² ús ÆrIprYps s (+s *0$ ûrups  r«p(+s *0$ ürups  ráp(+s *0$ ýrups  rp(+s *0$ þrups  rap(+s *0$ ÿrups  r£p(+s *0$ rups  rËp(+s *0$ rups  r p(+s *0rups  rEp(+*0$ rups  rsp(+s *® sÆrÕpr/ps s (+s *² sÆr=prYps s (+s *0rups  r§p(+*0rups  r÷p(+*0rups  r[p(+*0$ rups  rÃp(+s *0$ rups  rp(+s *0$ rups  rMp(+s *–sÆrƒprÛps s þ(+*–s&ÆrprÛps s þ(+*–s.ÆrOprÛps s þ(+*–s6Ær­prÛps s þ(+*–s>Ær prÛps s þ(+*–sFÆrcprÛps s þ(+*–sNÆr½prÛps s þ(+*–sVÆr+prÛps s þ(+*–s^Ær…prÛps s þ(+*–sfÆrçprÛps s þ(+*–snÆr5prÛps s þ(+*–svÆrprÛps s þ(+*0 /s‚ÆråprKps s  (+þo *–sŠÆr…prÛps s þ(+*0 7sšÆrprSps s  (+þ(+*–s¢Ær¡prÛps s þ(+*–sªÆrûprÛps s þ(+*–s²ÆrMprÛps s þ(+*–sºÆr¡prÛps s þ(+*–sÂÆr÷prÛps s þ(+*–sÊÆrGprÛps s þ(+*–sÒÆrprÛps s þ(+*–sÚÆrõprÛps s þ(+*–sâÆrOprÛps s þ(+*® "sæÆr©pr/ps s (+s *® #sêÆr pr/ps s (+s *® $sîÆr}pr/ps s (+s *² %sôÆríprYps s (+s *® &søÆrWpr/ps s (+s *® &süÆrÍpr/ps s (+s *® 'sÇrE pr/ps s (+s *® 'sÇr± pr/ps s (+s *® (sÇr!pr/ps s (+s *® )s Çr‘!pr/ps s (+s *® *sÇr "pr/ps s (+s *® +sÇr‡"pr/ps s (+s *® ,sÇr÷"pr/ps s (+s *² -sÇrw#prYps s (+s *¶ .s&ÇrÛ#prÛps s (+s *¶ /s.Çrb$prÛps s (+s *® 0s2Çré$pr/ps s (+s *® 1s6ÇrU%pr/ps s (+s *® 2s:Çrà%pr/ps s (+s *® 3s>ÇrB&pr/ps s (+s *® 4sBÇr²&pr/ps s (+s *® 5sFÇr 'pr/ps s (+s *² 7sLÇr€'prYps s (+s *® 8sPÇrè'pr/ps s (+s *² 9sVÇrR(prYps s (+s *² :s\ÇrÕ(prYps s (+s *² ;sbÇrK)prYps s (+s *² <shÇrË)prYps s (+s *¶ =spÇrI*prÛps s (+s *¶ >sxÇrÁ*prÛps s (+s *® ?s|Çr1+pr/ps s (+s *® @s€Çr©+pr/ps s (+s *’s†Çr,prYps s þ(+*’sŒÇrg,prYps s þ(+*’s’ÇrÁ,prYps s þ(+*’s˜Çr!-prYps s þ(+*’sžÇrƒ-prYps s þ(+*’s¤Çr½-prYps s þ(+*’sªÇr .prYps s þ(+*’s°ÇrI.prYps s þ(+*’s¶Çr‰.prYps s þ(+*’s¼ÇrÉ.prYps s þ(+*² KsÂÇr/prYps s (+s *® LsÆÇrc/pr/ps s (+s *0$ Mrups  rÅ/p(+s *0$ Nrups  r0p(+s *0$ Orups  rU0p(+s *0$ Qrups  r£0p(+s *0$ Rrups  rÉ0p(+s *0$ Srups  r!1p(+s *² TsÌÇr‘1prYps s (+s *² UsÒÇré1prYps s (+s *® VsÖÇrM2pr/ps s (+s *® WsÚÇrÁ2pr/ps s (+s *® XsÞÇr73pr/ps s (+s *® YsâÇr›3pr/ps s (+s *® ZsæÇrï3pr/ps s (+s *’sìÇr94prYps s þ(+*’sòÇr‘4prYps s þ(+*’søÇrý4prYps s þ(+*’sþÇrm5prYps s þ(+*’sÈrÃ5prYps s þ(+*–s Èr/6prÛps s þ(+*–sÈr6prÛps s þ(+*’sÈrë6prYps s þ(+*0$ crups  rC7p(+s *0$ drups  r§7p(+s *² es Èrã7prYps s (+s *® fs$Èr8pr/ps s (+s *® gs(ÈrG8pr/ps s (+s *® hs,Èr{8pr/ps s (+s *¶ is4Èr¥8prÛps s (+s *0$ jrups  rõ8p(+s *® ks8Èr'9pr/ps s (+s *0$ lrups  ri9p(+s *® ms<ÈrÇ9pr/ps s (+s *® ns@Èrÿ9pr/ps s (+s *² osFÈrS:prYps s (+s *² psLÈr³:prYps s (+s *² qsRÈr;prYps s (+s *¶ rsZÈr‹;prÛps s (+s *0$ srups  rÃ;p(+s *0$ trups  ró;p(+s *0rups  r+<p(+*0$ vrups  re<p(+s *0$ xrups  r«<p(+s *0$ yrups  rÙ<p(+s *0$ zrups  rù<p(+s *0$ {rups  r7=p(+s *0$ |rups  ry=p(+s *0$ }rups  r¿=p(+s *0$ ~rups  r>p(+s *0$ rups  rE>p(+s *0$ €rups  ry>p(+s *0$ rups  r­>p(+s *0$ ‚rups  rã>p(+s *0$ ‚rups  r?p(+s *0$ ƒrups  r??p(+s *0rups  r…?p(+*0rups  rÍ?p(+*Žs^Èr@pr/ps s þ(+*0rups  r!@p(+*0rups  r_@p(+*0rups  r“@p(+*0rups  r³@p(+*ŽsbÈrË@pr/ps s þ(+*0rups  rÿ@p(+*ŽsfÈr7Apr/ps s þ(+*0rups  rwAp(+*0rups  r£Ap(+*0rups  rÇAp(+*’slÈrëAprYps s þ(+*ŽspÈr#Bpr/ps s þ(+*0rups  r]Bp(+*0rups  r‰Bp(+*0$ •rups  r³Bp(+s *® –stÈråBpr/ps s (+s *® —sxÈrCpr/ps s (+s *0$ ˜rups  rMCp(+s *Žs|Èr}Cpr/ps s þ(+*² šs‚ÈrµCprYps s (+s *0$ ›rups  rñCp(+s *0$ œrups  r%Dp(+s *0$ rups  rKDp(+s *0$ žrups  r‡Dp(+s *0$ Ÿrups  r¿Dp(+s *0$  rups  rïDp(+s *0$ ¡rups  r!Ep(+s *® ¢s†ÈrOEpr/ps s (+s *0$ £rups  r{Ep(+s *0$ ¤rups  r³Ep(+s *® ¥sŠÈrûEpr/ps s (+s *® ¦sŽÈr/Fpr/ps s (+s *® §s’ÈruFpr/ps s (+s *0$ ¨rups  r¯Fp(+s *0$ ©rups  rûFp(+s *0$ ªrups  r-Gp(+s *0$ ¬rups  rWGp(+s *® ­s–ÈrƒGpr/ps s (+s *¶ ®sžÈr·GprÛps s (+s *0$ ¯rups  rëGp(+s *0$ °rups  rHp(+s *0$ ±rups  rIHp(+s *0rups  roHp(+*0rups  r¡Hp(+*® ²s¢ÈráHpr/ps s (+s *® ³s¦ÈrIpr/ps s (+s *® ´sªÈrYIpr/ps s (+s *0$ µrups  rIp(+s *® ¶s®Èr½Ipr/ps s (+s *® ¶s²ÈrãIpr/ps s (+s *® ·s¶ÈrJpr/ps s (+s *0$ ¸rups  rQJp(+s *® ¹sºÈr—Jpr/ps s (+s *® ¹s¾ÈrÁJpr/ps s (+s *® ºsÂÈrÿJpr/ps s (+s *® ºsÆÈr?Kpr/ps s (+s *² »sÌÈr“KprYps s (+s *0$ ¼rups  rçKp(+s *0$ ½rups  rALp(+s *® ¾sÐÈroLpr/ps s (+s *0$ ¿rups  r¡Lp(+s *0$ Àrups  ríLp(+s *0$ Árups  rAMp(+s *0$ Ârups  r…Mp(+s *0$ Ãrups  rËMp(+s *0$ Ärups  rNp(+s *0$ Årups  r_Np(+s *0$ Ærups  r·Np(+s *0$ Çrups  rÿNp(+s *0$ Èrups  rAOp(+s *0$ Érups  r‹Op(+s *0$ Êrups  rÉOp(+s *0$ Ërups  rPp(+s *0$ Ìrups  r[Pp(+s *0$ Írups  r¯Pp(+s *0$ Îrups  r Qp(+s *ŽsÔÈrOQpr/ps s þ(+*0$ Ðrups  r—Qp(+s *0$ Ñrups  r»Qp(+s *0rups  rëQp(+*’sÚÈrRprCRps" s# þ( +*ŽsÞÈr_Rpr/ps s þ(+*ŽsâÈr±Rpr/ps s þ(+*’sèÈrýRprYps s þ(+*’sîÈr5SprYps s þ(+*’sôÈroSprYps s þ(+*’súÈr·SprYps s þ(+*’sÉrTprYps s þ(+*–sÉr?TprÛps s þ(+*–sÉrqTprÛps s þ(+*0$ Ørups  r©Tp(+s *ŽsÉrçTpr/ps s þ(+*ŽsÉrUpr/ps s þ(+*ŽsÉrOUpr/ps s þ(+*Žs ÉrUpr/ps s þ(+*Žs$ÉrÏUpr/ps s þ(+*Žs(ÉrVpr/ps s þ(+*Žs,ÉrKVpr/ps s þ(+*Žs0Ér‡Vpr/ps s þ(+*Žs4ÉrÃVpr/ps s þ(+*Žs8ÉrëVpr/ps s þ(+*Žs<Ér-Wpr/ps s þ(+*0rups  r]Wp(+*Žs@ÉrWpr/ps s þ(+*ŽsDÉrçWpr/ps s þ(+*’sJÉr7XprYps s þ(+*ŽsNÉr}Xpr/ps s þ(+*ŽsRÉr×Xpr/ps s þ(+*ŽsVÉr#Ypr/ps s þ(+*0$ ãrups  r‰Yp(+s *0$ ärups  rÍYp(+s *® åsZÉrZpr/ps s (+s *® æs^Ér;Zpr/ps s (+s *0$ çrups  rgZp(+s *0$ èrups  r™Zp(+s *0$ érups  rÍZp(+s *² êsdÉrùZprYps s (+s *² ësjÉr)[prYps s (+s *® ìsnÉr[[pr/ps s (+s *® ísrÉr‘[pr/ps s (+s *–szÉrÍ[prÛps s þ(+*® ïs~Ér\pr/ps s (+s *¶ ðs†ÉrE\pry\ps% s& ( +s *¶ ñsŽÉrŸ\pry\ps% s& ( +s *0 . òs˜ÉrÕ\pr ]ps( s) ( +s *0 . ós¢Ér;]pr ]ps( s) ( +s *0 7 ôs®Érq]pr¹]ps+ s,  ( +o s *0 . õs¸Éró]pr1^ps. s/ ( +s *0 . ösÂÉra^pr1^ps. s/ ( +s *0 . ÷sÌÉr§^prÓ^ps1 s2 (+s *¶ øsÔÉr_prC_ps4 s5 (+s *¶ ùsÜÉri_pr¥_ps7 s8 (+s *¶ úsäÉrË_prC_ps4 s5 (+s *0 . ûsîÉr`prE`ps: s; (+s *0 . üsøÉru`pr³`ps= s> (+s *® ýsüÉrã`pr/ps s (+s *ŽsÊrapr/ps s þ(+*ŽsÊr+apr/ps s þ(+*ŽsÊrUapr/ps s þ(+*0rups  roap(+*0$ rups  rŸap(+s *0$ rups  ríap(+s *0$ rups  r bp(+s *0$ rups  r-bp(+s *0$ rups  r]bp(+s *0$ rups  rbp(+s *0$ rups  r±bp(+s *0$ rups  róbp(+s *0$ rups  rcp(+s *0$ rups  r;cp(+s *0$ rups  recp(+s *0$ rups  r‘cp(+s *0$ rups  rõcp(+s *0$ rups  r5dp(+s *0$ rups  r‹dp(+s *0$ rups  rÑdp(+s *0$ rups  rep(+s *0$ rups  r1ep(+s *0$ rups  ryep(+s *0$ rups  rµep(+s *0$ rups  r!fp(+s *0$ rups  r[fp(+s *0$ rups  r©fp(+s *0$ rups  rûfp(+s *0$ rups  rggp(+s *0$ rups  rÓgp(+s *0$ rups  r hp(+s *0$ rups  rChp(+s *0$ rups  rhp(+s *0rups  r½hp(+*0$ rups  rýhp(+s *0$ rups  rmip(+s *0$ !rups  rip(+s *0$ "rups  rÛip(+s *0$ #rups  r#jp(+s *0$ &rups  rSjp(+s *0$ 'rups  rwjp(+s *0$ (rups  r¡jp(+s *0$ )rups  rçjp(+s *0$ *rups  r kp(+s *0$ +rups  rGkp(+s *0$ ,rups  rwkp(+s *0$ -rups  r¯kp(+s *0$ .rups  rùkp(+s *0$ /rups  rClp(+s *0$ 0rups  r_lp(+s *0$ 1rups  r¿lp(+s *0$ 2rups  rmp(+s *0$ 3rups  rMmp(+s *0$ 4rups  r‹mp(+s *0$ 5rups  rãmp(+s *0$ 6rups  rnp(+s *0$ 7rups  rƒnp(+s *0$ 8rups  rßnp(+s *0$ 9rups  rop(+s *® ;s Êrƒopr/ps s (+s *0$ <rups  rµop(+s *0$ =rups  rpp(+s *0rups  rqpp(+*0$ ?rups  r¹pp(+s *0$ @rups  rqp(+s *0$ Grups  rSqp(+s *0$ Hrups  ryqp(+s *0$ Jrups  rÓqp(+s *0$ Krups  rrp(+s *® LsÊrYrpr/ps s (+s *0$ Mrups  r•rp(+s *0$ Nrups  r·rp(+s *0$ Rrups  rõrp(+s *0$ Srups  r#sp(+s *0$ Trups  rOsp(+s *0$ Urups  r{sp(+s *0$ Vrups  rÍsp(+s *0$ Wrups  r÷sp(+s *0rups  r9tp(+*® YsÊrctpr/ps s (+s *® ZsÊr‹tpr/ps s (+s *0$ [rups  r§tp(+s *0$ \rups  r×tp(+s *0$ arups  rýtp(+s *0$ brups  rup(+s *0$ crups  roup(+s *0$ erups  rŸup(+s *0$ grups  rÙup(+s *0rups  rvp(+*0$ jrups  rgvp(+s *0$ krups  r™vp(+s *0$ lrups  rçvp(+s *0$ mrups  rAwp(+s *® nsÊrywpr/ps s (+s *0$ orups  r±wp(+s *0rups  r xp(+*0rups  rKxp(+*0rups  r“xp(+*0$ srups  rÕxp(+s *® us Êr+ypr/ps s (+s *0$ xrups  rWyp(+s *0$ yrups  r—yp(+s *0$ zrups  rÇyp(+s *0$ {rups  rzp(+s *0rups  r?zp(+*0$ |rups  rzp(+s *0rups  r½zp(+*0rups  r÷zp(+*0$ €rups  r-{p(+s *0$ rups  r]{p(+s *0rups  r™{p(+*0$ Érups  rå{p(+s *0$ „rups  r#|p(+s *0$ …rups  ru|p(+s *0$ †rups  r³|p(+s *0rups  rÿ|p(+*’s&Êr?}prYps s þ(+*’s,Êr‘}prYps s þ(+*’s2ÊrÏ}prYps s þ(+*Žs6Êr÷}pr/ps s þ(+*Žs:Êr3~pr/ps s þ(+*Žs>Êr~pr/ps s þ(+*ŽsBÊrÇ~pr/ps s þ(+*ŽsFÊrÿ~pr/ps s þ(+*ŽsJÊrApr/ps s þ(+*® ‡sNÊrpr/ps s (+s *® ˆsRÊrÅpr/ps s (+s *® ‰sVÊr€pr/ps s (+s *0$ rups  ro€p(+s *0$ ‘rups  r­€p(+s *0$ ’rups  rí€p(+s *0$ “rups  rEp(+s *² ”s\ÊrprYps s (+s *0$ •rups  rÃp(+s *® –s`Êr‚pr/ps s (+s *® —sdÊrg‚pr/ps s (+s *0$ ˜rups  r«‚p(+s *0$ ™rups  rõ‚p(+s *0$ šrups  r3ƒp(+s *0$ ›rups  r“ƒp(+s *® œshÊráƒpr/ps s (+s *0$ rups  r„p(+s *® žslÊr7„pr/ps s (+s *0$ Ÿrups  r…„p(+s *0$  rups  rׄp(+s *0$ ¡rups  r#…p(+s *0$ ¢rups  ra…p(+s *0$ £rups  r£…p(+s *0$ ¤rups  rë…p(+s *0$ ¥rups  r3†p(+s *0$ ¦rups  rs†p(+s *0$ §rups  r·†p(+s *0$ ¨rups  rû†p(+s *0rups  r-‡p(+*0$ ªrups  ro‡p(+s *0$ «rups  r™‡p(+s *® ­spÊrÕ‡pr/ps s (+s *® ®stÊr%ˆpr/ps s (+s *² ¯szÊrmˆprCRps" s# ( +s *0$ °rups  r§ˆp(+s *0rups  råˆp(+*0$ ±rups  r‰p(+s *0$ ²rups  r]‰p(+s *0$ ³rups  r‰p(+s *® ´s~Êr½‰prÿ‰ps@ sA (+s *® µs‚ÊrŠpr/ps s (+s *0$ ¶rups  rCŠp(+s *0$ ·rups  rƒŠp(+s *0$ ¸rups  rÅŠp(+s *0$ ¹rups  r‹p(+s *0$ ºrups  r9‹p(+s *0$ »rups  ru‹p(+s *0$ ¼rups  r¥‹p(+s *0$ ½rups  rÓ‹p(+s *0$ ¾rups  rÿ‹p(+s *0$ ¿rups  rQŒp(+s *0$ Àrups  rŒp(+s *0$ Árups  r¿Œp(+s *0$ Ârups  rýŒp(+s *0$ Ãrups  r9p(+s *® Äs†Êr‹pr/ps s (+s *0$ Årups  r¹p(+s *® ÇsŠÊrçpr/ps s (+s *0$ Èrups  r-Žp(+s *0$ Érups  r}Žp(+s *0$ Êrups  r½Žp(+s *0$ Ërups  r p(+s *0$ Ìrups  rUp(+s *0$ Írups  r…p(+s *0$ Îrups  r¹p(+s *® ÏsŽÊrñpr/ps s (+s *0$ Ðrups  r!p(+s *0$ Ñrups  rwp(+s *0$ Òrups  r­p(+s *0$ Órups  rõp(+s *0$ Ôrups  r=‘p(+s *0$ Õrups  r‡‘p(+s *0$ Örups  rÇ‘p(+s *® ×s’Êr’prÿ‰ps@ sA (+s *® Øs–ÊrI’pr/ps s (+s *0$ Ùrups  ro’p(+s *0$ Úrups  r½’p(+s *0$ Ûrups  rý’p(+s *0rups  r“p(+*0$ Ýrups  rK“p(+s *0$ Þrups  rm“p(+s *² ßsœÊr§“prCRps" s# ( +s *0$ àrups  rÛ“p(+s *0$ árups  rû“p(+s *0$ ârups  r5”p(+s *0$ ãrups  r}”p(+s *0$ ärups  rÑ”p(+s *0rups  r•p(+*® ås Êri•pr/ps s (+s *0$ ærups  r¡•p(+s *0$ çrups  rË•p(+s *0$ èrups  r–p(+s *0$ érups  ru–p(+s *0$ êrups  r£–p(+s *0$ ërups  rË–p(+s *0$ ìrups  r—p(+s *0$ írups  rm—p(+s *0$ îrups  rÁ—p(+s *0$ ïrups  r˜p(+s *0$ ðrups  rI˜p(+s *0$ ñrups  r³˜p(+s *0$ òrups  ró˜p(+s *0$ órups  rc™p(+s *® ôs¤Êr¡™pr/ps s (+s *0$ õrups  rÉ™p(+s *0$ örups  ršp(+s *0$ ÷rups  rUšp(+s *0$ ørups  r›šp(+s *® ùs¨Êrךpr/ps s (+s *® ús¬Êr)›pr/ps s (+s *² ûs²Êr]›prYps s (+s *² üs¸Êr›prYps s (+s *0$ ýrups  r³›p(+s *0$ þrups  rï›p(+s *® ÿs¼ÊrWœpr/ps s (+s *² sÂÊr™œprQps s (+s *² sÈÊrÉœprQps s (+s *0$ rups  rp(+s *0$ rups  rEp(+s *0$ rups  r•p(+s *0$ rups  rÏp(+s *0$ rups  ržp(+s *0$ rups  rOžp(+s *0$ rups  r¹žp(+s *0$ rups  rŸp(+s *0$ rups  rƒŸp(+s *0$ rups  ráŸp(+s *0$ rups  r p(+s *0$ rups  rk p(+s *0$ rups  r© p(+s *0$ rups  rç p(+s *® sÌÊr#¡pr/ps s (+s *0$ rups  ra¡p(+s *0$ rups  r™¡p(+s *0$ rups  rá¡p(+s *0$ rups  r)¢p(+s *0$ rups  rÄ¢p(+s *0$ rups  rî¢p(+s *0$ rups  r:£p(+s *0$ rups  rh£p(+s *0$ rups  rÄ£p(+s *0$ rups  r¤p(+s *0$ rups  rb¤p(+s *0$ rups  rœ¤p(+s *0$ rups  rÞ¤p(+s *0$ rups  r ¥p(+s *0$ rups  rH¥p(+s *0$ !rups  rv¥p(+s *0$ "rups  r¸¥p(+s *® #sÐÊr¦pr/ps s (+s *0$ $rups  rb¦p(+s *0$ %rups  rš¦p(+s *® &sÔÊrȦpr/ps s (+s *® 'sØÊrô¦pr/ps s (+s *0$ (rups  r$§p(+s *® )sÜÊrV§pr/ps s (+s *® *sàÊr|§pr/ps s (+s *0$ +rups  rª§p(+s *0$ ,rups  rø§p(+s *® -säÊrh¨pr/ps s (+s *® .sèÊrˆ¨pr/ps s (+s *® /sìÊr®¨pr/ps s (+s *0$ 0rups  rä¨p(+s *0rups  r0©p(+*0$ 1rups  rt©p(+s *0$ 2rups  rÞ©p(+s *0$ 3rups  rªp(+s *0$ 4rups  rtªp(+s *0$ 5rups  r¸ªp(+s *0$ 7rups  rîªp(+s *0$ 8rups  r0«p(+s *0$ 9rups  r‚«p(+s *0$ :rups  rÈ«p(+s *0$ ;rups  r¬p(+s *0$ <rups  rJ¬p(+s *0$ =rups  r¦¬p(+s *0$ >rups  râ¬p(+s *0$ ?rups  r8­p(+s *0$ @rups  rd­p(+s *0$ Arups  rš­p(+s *0$ Brups  rÖ­p(+s *0$ Crups  r®p(+s *0$ Drups  r8®p(+s *0$ Erups  r‚®p(+s *0$ Frups  rº®p(+s *0$ Grups  rä®p(+s *0$ Hrups  r4¯p(+s *0$ Irups  rp¯p(+s *0$ Jrups  rʯp(+s *0$ Krups  r°p(+s *0$ Lrups  r|°p(+s *0$ Mrups  rª°p(+s *0$ Nrups  rô°p(+s *0$ Orups  r>±p(+s *0$ Prups  r‚±p(+s *0$ Qrups  rбp(+s *0$ Rrups  r*²p(+s *0$ Srups  rX²p(+s *0$ Trups  r’²p(+s *0$ Urups  rº²p(+s *0$ Vrups  r³p(+s *0$ Wrups  rB³p(+s *0$ Xrups  rx³p(+s *0$ Yrups  r¨³p(+s *0$ Zrups  rò³p(+s *0$ [rups  r´p(+s *® \sðÊrR´pr/ps s (+s *0$ ]rups  r–´p(+s *0$ ^rups  rÈ´p(+s *0$ _rups  rµp(+s *® `sôÊr^µpr/ps s (+s *® `søÊrœµpr/ps s (+s *0$ arups  rîµp(+s *0$ brups  r<¶p(+s *0$ crups  rжp(+s *0$ drups  rÒ¶p(+s *0$ erups  r·p(+s *0$ frups  rz·p(+s *0$ grups  rÖ·p(+s *0$ hrups  r¸p(+s *0$ irups  r†¸p(+s *0$ jrups  rÀ¸p(+s *0$ krups  r¹p(+s *0$ lrups  rX¹p(+s *0$ mrups  r¨¹p(+s *0$ nrups  rþ¹p(+s *0$ orups  rTºp(+s *0$ prups  rºp(+s *0$ qrups  rܺp(+s *0$ rrups  r.»p(+s *0$ srups  rV»p(+s *0$ trups  r¢»p(+s *0$ urups  rò»p(+s *0$ vrups  r>¼p(+s *® wsüÊrv¼pr/ps s (+s *0$ xrups  rª¼p(+s *0$ yrups  rà¼p(+s *0$ zrups  r ½p(+s *® |sËr6½pr/ps s (+s *® }sËrv½pr/ps s (+s *0$ ~rups  rÀ½p(+s *0$ rups  r¾p(+s *0$ €rups  rP¾p(+s *0$ rups  r¾p(+s *0rups  rä¾p(+*0$ …rups  r&¿p(+s *0$ †rups  rj¿p(+s *0$ ˆrups  rÞ¿p(+s *® ‰sËrPÀpr/ps s (+s *0$ Šrups  r¢Àp(+s *0$ ‹rups  rÁp(+s *0$ Œrups  r`Áp(+s *0$ rups  r”Áp(+s *0$ Žrups  rêÁp(+s *0$ rups  rXÂp(+s *0$ rups  r´Âp(+s *0$ ‘rups  rÃp(+s *0rups  rRÃp(+*0rups  r‚Ãp(+*® ’s Ër Ãpr/ps s (+s *® “sËröÃpr/ps s (+s *0$ ”rups  r8Äp(+s *0$ •rups  r¸Äp(+s *0$ –rups  rÅp(+s *0$ —rups  rˆÅp(+s *0$ ˜rups  rîÅp(+s *0$ ™rups  rwÆp(+s *0$ œrups  r™Æp(+s *0$ rups  rÁÆp(+s *0$ žrups  rïÆp(+s *0$ Ÿrups  rKÇp(+s *0$  rups  r£Çp(+s *0$ ¡rups  rýÇp(+s *0rups  r/Èp(+*0$ £rups  r‘Èp(+s *0$ ¤rups  r Ép(+s *0$ ¦rups  rgÉp(+s *0$ §rups  röÉp(+s *0$ ¨rups  rXÊp(+s *0$ ©rups  r¢Êp(+s *0$ ªrups  räÊp(+s *0$ «rups  r4Ëp(+s *0$ ¬rups  rnËp(+s *0$ ­rups  rÖËp(+s *0$ ®rups  r.Ìp(+s *0$ ®rups  r`Ìp(+s *0$ ®rups  ršÌp(+s *0$ ®rups  ràÌp(+s *0$ ®rups  rÍp(+s *0$ ®rups  rXÍp(+s *0$ ¯rups  rŽÍp(+s *0$ °rups  rîÍp(+s *0$ ±rups  r0Îp(+s *0$ ²rups  rlÎp(+s *0$ ³rups  r®Îp(+s *0$ ´rups  rÏp(+s *0$ µrups  r@Ïp(+s *0$ ¶rups  r~Ïp(+s *0$ ·rups  r´Ïp(+s *0$ ¹rups  rúÏp(+s *0$ ºrups  r,Ðp(+s *0rups  r‚Ðp(+*0$ ¼rups  rÂÐp(+s *® ½sËr4Ñpr/ps s (+s *0$ ¿rups  r¢Ñp(+s *0$ Àrups  rÒp(+s *0$ Árups  r³Òp(+s *0$ Ârups  rýÒp(+s *0$ Ãrups  rcÓp(+s *0$ Ärups  rÁÓp(+s *® ÅsËrÔpr/ps s (+s *¶ Æs ËrYÔprÛps s (+s *¶ Çs(Ër‡ÔprÛps s (+s *² Ês.Ër¹ÔprYps s (+s *® Ës2ËrõÔpr/ps s (+s *® Ìs6ËrÕpr/ps s (+s *0$ Írups  r7Õp(+s *Žs:ËryÕpr/ps s þ(+*0$ Ïrups  r¹Õp(+s *® Ðs>ËrûÕpr/ps s (+s *0$ Òrups  r7Öp(+s *0$ Órups  rÖp(+s *0$ Ôrups  ráÖp(+s *0$ Õrups  r1×p(+s *0$ Örups  ry×p(+s *0$ ×rups  rã×p(+s *0$ Ørups  r/Øp(+s *® ÙsBËreØpr/ps s (+s *0$ Úrups  r™Øp(+s *0$ Ûrups  rãØp(+s *0$ Ürups  rÙp(+s *0$ Ýrups  r?Ùp(+s *0$ Þrups  rƒÙp(+s *0$ ßrups  r½Ùp(+s *0$ àrups  r Úp(+s *0$ árups  r_Úp(+s *0$ ârups  r¿Úp(+s *² èsHËrÛprIÛpsC sD (+s *0rups  reÛp(+*0rups  rÛp(+*0rups  r«Ûp(+*0rups  rÍÛp(+*0rups  rïÛp(+*0rups  rÜp(+*0rups  r1Üp(+*0rups  rMÜp(+*0rups  rgÜp(+*0rups  r‹Üp(+*0rups  r¹Üp(+*0rups  rÓÜp(+*0rups  rçÜp(+*0rups  rÝp(+*0rups  rÝp(+*0rups  r3Ýp(+*0rups  rMÝp(+*0rups  rqÝp(+*0rups  r™Ýp(+*0rups  r³Ýp(+*0rups  rÕÝp(+*0rups  ríÝp(+*0rups  rÞp(+*0rups  rÞp(+*0rups  r7Þp(+*0rups  r[Þp(+*0rups  rÞp(+*0rups  rŸÞp(+*0rups  r±Þp(+*0rups  rÇÞp(+*0rups  rÝÞp(+*0rups  rõÞp(+*0rups  r ßp(+*0rups  r3ßp(+*0rups  rIßp(+*0rups  r[ßp(+*0rups  rußp(+*0rups  r“ßp(+*0rups  r¯ßp(+*0rups  r¿ßp(+*0rups  rßßp(+*0rups  rÿßp(+*0rups  ràp(+*0rups  r;àp(+*0rups  rUàp(+*0rups  reàp(+*® sLËràpr/ps s (+s *® sPËr½àpr/ps s (+s *® sTËrñàprÿ‰ps@ sA (+s *ŽsXËr!ápr/ps s þ(+*0rups  rAáp(+*0rups  rsáp(+*0rups  r¡áp(+*0rups  rÕáp(+*0rups  râp(+*0rups  r7âp(+*0rups  rcâp(+*0rups  r‘âp(+*0rups  r·âp(+*0rups  råâp(+*® 's\Ërãpr/ps s (+s *® (s`Ëraãpr/ps s (+s *ŽsdËr‰ãpr/ps s þ(+*ŽshËr½ãpr/ps s þ(+*’snËréãprYps s þ(+*ŽsrËr3äpr/ps s þ(+*0rups  rSäp(+*0rups  rwäp(+*0rups  r¡äp(+*® svËrËäpr/ps s (+s *0rups  råp(+*0rups  r%åp(+*0rups  r?åp(+*0rups  raåp(+*ŽszËr‡åprÿ‰ps@ sA þ(+*0rups  rµåp(+*0rups  rÙåp(+*0rups  ræp(+*0rups  rCæp(+*0rups  r_æp(+*0rups  r{æp(+*0rups  ræp(+*0rups  rÍæp(+*0rups  rïæp(+*0rups  rçp(+*0rups  rCçp(+*0rups  raçp(+*Žs~Ër•çpr/ps s þ(+*Žs‚Ër¹çpr/ps s þ(+*0rups  rÛçp(+*0rups  rèp(+*0rups  r;èp(+*0rups  r“èp(+*0rups  rïèp(+*0rups  r-ép(+*® As†ËrYépr/ps s (+s *0$ Brups  r‰ép(+s *¶ CsŽËrÙéprÛps s (+s *® Ds’Ër êpr/ps s (+s *® Es–Ër1êpr/ps s (+s *® FsšËrgêpr/ps s (+s *® GsžËr‘êpr/ps s (+s *® Hs¢ËrÃêpr/ps s (+s *® Is¦Ëríêpr/ps s (+s *0rups  r1ëp(+*0$ Krups  r]ëp(+s *0rups  r‡ëp(+*0$ Mrups  rÁëp(+s *0$ Nrups  rìp(+s *0$ Orups  r=ìp(+s *0$ Prups  rìp(+s *ŽsªËråìpr/ps s þ(+*® Rs®Ërípr/ps s (+s *0$ Srups  r?íp(+s *² Ts´Ër•íprYps s (+s *² UsºËrËíprYps s (+s *0$ Vrups  r!îp(+s *¶ WsÂËryîprÛps s (+s *® XsÆËrÁîpr/ps s (+s *® YsÊËr ïpr/ps s (+s *® ZsÎËrOïpr/ps s (+s *® [sÒËr«ïpr/ps s (+s *0$ \rups  rûïp(+s *0$ ]rups  rIðp(+s *® ^sÖËr•ðpr/ps s (+s *® _sÚËrÃðpr/ps s (+s *0rups  ríðp(+*ŽsÞËr+ñpr/ps s þ(+*0rups  rƒñp(+*0$ crups  rßñp(+s *² dsäËròprYps s (+s *² esêËròprYps s (+s *0$ frups  råòp(+s *0$ grups  róp(+s *0$ hrups  rUóp(+s *² isðËr…óprYps s (+s *0$ jrups  rÁóp(+s *® lsôËréópr/ps s (+s *® msøËrôpr/ps s (+s *® osüËrSôpr/ps s (+s *0$ rrups  rƒôp(+s *ŽsÌr±ôpr/ps s þ(+*ŽsÌróôpr/ps s þ(+*0$ trups  rõp(+s *® usÌrIõpr/ps s (+s *0$ vrups  r}õp(+s *0$ wrups  r¯õp(+s *0$ xrups  rçõp(+s *0$ yrups  röp(+s *0$ zrups  rSöp(+s *0$ {rups  röp(+s *0$ |rups  rÇöp(+s *0$ }rups  r÷p(+s *0$ ~rups  r?÷p(+s *0$ rups  r}÷p(+s *0$ €rups  r«÷p(+s *0$ rups  rÝ÷p(+s *0$ ‚rups  rý÷p(+s *0$ ƒrups  røp(+s *0$ „rups  rUøp(+s *0$ …rups  r‡øp(+s *0$ †rups  r³øp(+s *0$ ‡rups  rßøp(+s *0$ ˆrups  r%ùp(+s *0$ ‰rups  rGùp(+s *® Šs Ìrkùpr/ps s (+s *0$ ‹rups  r•ùp(+s *0rups  r¿ùp(+*0rups  rïùp(+*0$ Žrups  r'úp(+s *0rups  rUúp(+*0$ rups  r‰úp(+s *0$ ‘rups  r¹úp(+s *0$ ’rups  rçúp(+s *0$ “rups  rûp(+s *® ”sÌrQûpr/ps s (+s *² •sÌr¡ûprQps s (+s *® –sÌrùûpr/ps s (+s *0$ —rups  rSüp(+s *² ˜s ÌrüprYps s (+s *² ™s&ÌrÕüprYps s (+s *¶ šs.ÌrýprÛps s (+s *¶ šs6ÌrIýprÛps s (+s *¶ šs>ÌruýprÛps s (+s *¶ šsFÌrýprÛps s (+s *² ›sLÌrÅýprYps s (+s *² œsRÌr þprYps s (+s *0$ rups  rMþp(+s *® žsVÌr¹þpr/ps s (+s *® ŸsZÌr×þpr/ps s (+s *0$  rups  rÿp(+s *0$ ¡rups  r;ÿp(+s *0$ ¢rups  ruÿp(+s *0$ £rups  rÿp(+s *0$ ¤rups  rùÿp(+s *0$ ¥rups  r]p(+s *0$ ¦rups  r‰p(+s *0rups  rµp(+*² §s`ÌrÙprYps s (+s *² ¨sfÌrprYps s (+s *¶ ©snÌrQprÛps s (+s *¶ ªsvÌr™prÛps s (+s *¶ «s~ÌrÉprÛps s (+s *0$ ¬rups  rp(+s *® ­s‚ÌrQpr/ps s (+s *® ®s†Ìrƒpr/ps s (+s *0$ ¯rups  r¯p(+s *® °sŠÌrpr/ps s (+s *® ±sŽÌr?pr/ps s (+s *0$ ²rups  r}p(+s *Žs’ÌrÍpr/ps s þ(+*² ¶s˜ÌríprYps s (+s *0$ ·rups  rMp(+s *0$ ¸rups  rŸp(+s *0$ ¸rups  rÓp(+s *0rups  rp(+*0rups  rYp(+*® ¹sœÌr}pr/ps s (+s *® ºs ÌrÇpr/ps s (+s *0$ »rups  r p(+s *0$ ¼rups  rQp(+s *0$ ½rups  r§p(+s *0$ ¿rups  rßp(+s *0$ Àrups  r+p(+s *® Ás¤Ìr}pr/ps s (+s *0$ Ârups  r­p(+s *² ÃsªÌrÝprYps s (+s *0$ Ärups  r1p(+s *0$ Årups  rp(+s *® Æs®Ìr«pr/ps s (+s *0$ Çrups  rûp(+s *0$ Èrups  r- p(+s *® És²Ìro pr/ps s (+s *0$ Êrups  r¹ p(+s *² Ës¸Ìrû prYps s (+s *0$ Ìrups  r= p(+s *0$ Îrups  rm p(+s *® Ïs¼Ìr­ pr/ps s (+s *0$ Ðrups  rç p(+s *0$ Ñrups  r p(+s *® ØsÀÌre pr/ps s (+s *0$ Ùrups  r• p(+s *0$ Úrups  r½ p(+s *0$ Ûrups  rë p(+s *0$ Ürups  rr p(+s *0rups  r° p(+*0$ Ñrups  rÒ p(+s *0$ Òrups  rø p(+s *® ÓsÄÌr* pr/ps s (+s *0$ Ôrups  rV p(+s *® ÕsÈÌr† pr/ps s (+s *0$ Örups  rÊ p(+s *0$ ×rups  rp(+s *0$ Ørups  r<p(+s *® ÙsÌÌrrpr/ps s (+s *® ÛsÐÌrªpr/ps s (+s *® ÜsÔÌrþpr/ps s (+s *® ÝsØÌrDpr/ps s (+s *² ÞsÞÌrzprYps s (+s *0$ ßrups  rªp(+s *0$ àrups  rðp(+s *0$ árups  r2p(+s *0$ ârups  rZp(+s *0$ ãrups  r~p(+s *® äsâÌr¢pr/ps s (+s *0$ årups  rÖp(+s *® æsæÌrøpr/ps s (+s *® çsêÌrpr/ps s (+s *² ¸ sðÌrLprYps s (+s *® ¹ sôÌr’pr/ps s (+s *® º søÌrÂpr/ps s (+s *² » sþÌrÜprYps s (+s *¶ ¼ sÍrprÛps s (+s *² ½ s ÍrvprYps s (+s *² ¾ sÍr¼prYps s (+s *® ¿ sÍrþpr/ps s (+s *® à sÍr4pr/ps s (+s *® Å sÍrZpr/ps s (+s *² Æ s$Ír€prYps s (+s *² Ç s*Ír°prYps s (+s *² È s0ÍràprYps s (+s *² É s6Ír prYps s (+s *² Ê s<Ír`prYps s (+s *² Ë sBÍr¢prYps s (+s *0$ Ì rups  räp(+s *¶ Í sJÍrDprÛps s (+s *® Î sNÍrœpr/ps s (+s *® Ñ sRÍrÐpr/ps s (+s *² Ô sXÍrprYps s (+s *² Õ s^ÍrPprYps s (+s *² Ö sdÍrjprYps s (+s *¶ × slÍrŠprÛps s (+s *0$ Ø rups  rÐp(+s *² Ù srÍrprYps s (+s *² Ú sxÍr<prYps s (+s *0 . Û s‚Írzpr³`ps= s> (+s *² Ü sˆÍr®prYps s (+s *® ß sŒÍrìpr/ps s (+s *² á s’ÍrBprYps s (+s *² â s˜Ír‚prYps s (+s *0 . ã s¢ÍrÐpr,psF sG (+s *0$ ä rups  r\p(+s *® å s¦Írßpr/ps s (+s *0$ æ rups  rp(+s *² ç s¬ÍrYprYps s (+s *0rups  r‘p(+*0rups  rÑp(+*® ë s°Írpr/ps s (+s *® í s´Ír=pr/ps s (+s *® ð s¸Írƒpr/ps s (+s *¶ ñ sÀÍrµprÛps s (+s *² ô sÆÍrùprYps s (+s *² õ sÌÍrprYps s (+s *² ö sÒÍr;prYps s (+s *0$ ÷ rups  r]p(+s *² ù sØÍr™prYps s (+s *0$ ú rups  rÝp(+s *² ü sÞÍr prYps s (+s *² ý säÍriprCRps" s# ( +s *® þ sèÍrŸpr/ps s (+s *0 . ÿ sòÍrÙpr,psF sG (+s *² søÍrprYps s (+s *®  süÍrOpr/ps s (+s *²  sÎr“prYps s (+s *®  sÎrÏpr/ps s (+s *®  s Îrpr/ps s (+s *0$  rups  r7p(+s *0 . sÎrepr,psF sG (+s *® sÎr¥pr/ps s (+s *® sÎrÝpr/ps s (+s *® s Îr pr/ps s (+s *0$ rups  rc p(+s *0$  rups  rê p(+s *®  s$Îr.!pr/ps s (+s *0$  rups  rv!p(+s *0$  rups  rÎ!p(+s *0$  rups  r "p(+s *0$  rups  rx"p(+s *®  s(Îrä"pr/ps s (+s *®  s,Îr2#pr/ps s (+s *®  s0Îrx#pr/ps s (+s *²  s6Îr¼#prYps s (+s *–s>Îr$prÛps s þ(+*–sFÎr:$prÛps s þ(+*ŽsJÎr|$pr/ps s þ(+*²  sPÎr²$prYps s (+s *²  sVÎrô$prYps s (+s *²  s\Îr(%prYps s (+s *¶  sdÎrb%pr¥_ps7 s8 (+s *0$  rups  r®%p(+s *0$  rups  rð%p(+s *0$  rups  r&&p(+s *0$  rups  rV&p(+s *0$ rups  r&p(+s *0$ ! rups  rÆ&p(+s *0$ " rups  r'p(+s *0$ # rups  r6'p(+s *0$ $ rups  rn'p(+s *0$ % rups  r¦'p(+s *0$ & rups  rÞ'p(+s *0$ ' rups  r(p(+s *0$ ( rups  r\(p(+s *0$ ) rups  r¦(p(+s *0$ * rups  rò(p(+s *0$ + rups  r<)p(+s *0$ , rups  r€)p(+s *0$ - rups  rÄ)p(+s *0$ . rups  rú)p(+s *0$ / rups  r*p(+s *0$ 0 rups  rF*p(+s *0$ 1 rups  rp*p(+s *0$ 2 rups  r’*p(+s *0$ 3 rups  rº*p(+s *® 5 shÎrÞ*pr/ps s (+s *0rups  r+p(+*¶ 6 spÎr2+pr¥_ps7 s8 (+s *² 7 svÎrx+prYps s (+s *® 7 szÎr®+pr/ps s (+s *² 8 s€Îrä+prYps s (+s *0$ 9 rups  r&,p(+s *® : s„ÎrT,pr/ps s (+s *® ; sˆÎrŠ,pr/ps s (+s *0$ < rups  r¼,p(+s *0$ = rups  r-p(+s *0$ > rups  rt-p(+s *0$ ? rups  rÄ-p(+s *® @ sŒÎr(.pr/ps s (+s *® A sÎrP.pr/ps s (+s *0$ B rups  r„.p(+s *0$ C rups  r¬.p(+s *0$ D rups  rà.p(+s *0$ E rups  r/p(+s *0$ F rups  r./p(+s *0$ G rups  rd/p(+s *0$ H rups  rœ/p(+s *0$ I rups  rØ/p(+s *0$ J rups  r0p(+s *0$ K rups  rN0p(+s *¶ L s˜Îrˆ0pr¼0psI sJ (+s *® M sœÎrâ0pr/ps s (+s *0$ N rups  r$1p(+s *0$ O rups  rP1p(+s *² P s¢Îr†1prYps s (+s *0$ Q rups  rÀ1p(+s *0$ R rups  r2p(+s *0$ S rups  rN2p(+s *0rups  rn2p(+*Žs¦Îr 2prÿ‰ps@ sA þ(+*0rups  rÒ2p(+*® T sªÎrä2pr/ps s (+s *0$ U rups  r3p(+s *0$ V rups  r^3p(+s *0$ W rups  rš3p(+s *² X s°ÎrÎ3prYps s (+s *0$ Y rups  r4p(+s *0rups  r44p(+*0rups  rZ4p(+*0$ Z rups  rˆ4p(+s *0$ [ rups  rÊ4p(+s *² \ s¶Îr5prQps s (+s *® ] sºÎr`5pr/ps s (+s *² _ sÀÎrž5prYps s (+s *0$ ` rups  rÈ5p(+s *0$ a rups  r6p(+s *0$ b rups  rb6p(+s *0$ c rups  r 6p(+s *¶ d sÈÎrô6prÛps s (+s *® e sÌÎrB7pr/ps s (+s *0ý4rp(Ö rAp(Ö rp(Ö rËp(Ö r%p(Ö rep(Ö rµp(Ö r p(Ö r-p(Ö rup(Ö r§p(Ö rÝp(Ö r!p(Ö rmp(Ö r¡p(Ö rÕp(Ö rp(Ö r'p(Ö r}p(Ö r«p(Ö råp(Ö rp(Ö rIp(Ö rƒp(Ö r­p(Ö rßp(Ö rp(Ö rKp(Ö rop(Ö rÁp(Ö rp(Ö rGp(Ö rp(Ö rÉp(Ö rp(Ö rip(Ö r£p(Ö rÑp(Ö r p(Ö rC p(Ö rƒ p(Ö r½ p(Ö r p(Ö rK p(Ö r‘ p(Ö rÇ p(Ö rý p(Ö r9 p(Ö ru p(Ö r» p(Ö rù p(Ö rE p(Ö r… p(Ö rÍ p(Ö ró p(Ö r p(Ö rM p(Ö r‘ p(Ö rÕ p(Ö r p(Ö rYp(Ö r³p(Ö rýp(Ö rIp(Ö r«p(Ö ráp(Ö rp(Ö rap(Ö r£p(Ö rËp(Ö r p(Ö rEp(Ö rsp(Ö rÕp(Ö r=p(Ö r§p(Ö r÷p(Ö r[p(Ö rÃp(Ö rp(Ö rMp(Ö rƒp(Ö rp(Ö rOp(Ö r­p(Ö r p(Ö rcp(Ö r½p(Ö r+p(Ö r…p(Ö rçp(Ö r5p(Ö rp(Ö råp(Ö r…p(Ö rp(Ö r¡p(Ö rûp(Ö rMp(Ö r¡p(Ö r÷p(Ö rGp(Ö rp(Ö rõp(Ö rOp(Ö r©p(Ö r p(Ö r}p(Ö ríp(Ö rWp(Ö rÍp(Ö rE p(Ö r± p(Ö r!p(Ö r‘!p(Ö r "p(Ö r‡"p(Ö r÷"p(Ö rw#p(Ö rÛ#p(Ö rb$p(Ö ré$p(Ö rU%p(Ö rà%p(Ö rB&p(Ö r²&p(Ö r 'p(Ö r€'p(Ö rè'p(Ö rR(p(Ö rÕ(p(Ö rK)p(Ö rË)p(Ö rI*p(Ö rÁ*p(Ö r1+p(Ö r©+p(Ö r,p(Ö rg,p(Ö rÁ,p(Ö r!-p(Ö rƒ-p(Ö r½-p(Ö r .p(Ö rI.p(Ö r‰.p(Ö rÉ.p(Ö r/p(Ö rc/p(Ö rÅ/p(Ö r0p(Ö rU0p(Ö r£0p(Ö rÉ0p(Ö r!1p(Ö r‘1p(Ö ré1p(Ö rM2p(Ö rÁ2p(Ö r73p(Ö r›3p(Ö rï3p(Ö r94p(Ö r‘4p(Ö rý4p(Ö rm5p(Ö rÃ5p(Ö r/6p(Ö r6p(Ö rë6p(Ö rC7p(Ö r§7p(Ö rã7p(Ö r8p(Ö rG8p(Ö r{8p(Ö r¥8p(Ö rõ8p(Ö r'9p(Ö ri9p(Ö rÇ9p(Ö rÿ9p(Ö rS:p(Ö r³:p(Ö r;p(Ö r‹;p(Ö rÃ;p(Ö ró;p(Ö r+<p(Ö re<p(Ö r«<p(Ö rÙ<p(Ö rù<p(Ö r7=p(Ö ry=p(Ö r¿=p(Ö r>p(Ö rE>p(Ö ry>p(Ö r­>p(Ö rã>p(Ö r?p(Ö r??p(Ö r…?p(Ö rÍ?p(Ö r@p(Ö r!@p(Ö r_@p(Ö r“@p(Ö r³@p(Ö rË@p(Ö rÿ@p(Ö r7Ap(Ö rwAp(Ö r£Ap(Ö rÇAp(Ö rëAp(Ö r#Bp(Ö r]Bp(Ö r‰Bp(Ö r³Bp(Ö råBp(Ö rCp(Ö rMCp(Ö r}Cp(Ö rµCp(Ö rñCp(Ö r%Dp(Ö rKDp(Ö r‡Dp(Ö r¿Dp(Ö rïDp(Ö r!Ep(Ö rOEp(Ö r{Ep(Ö r³Ep(Ö rûEp(Ö r/Fp(Ö ruFp(Ö r¯Fp(Ö rûFp(Ö r-Gp(Ö rWGp(Ö rƒGp(Ö r·Gp(Ö rëGp(Ö rHp(Ö rIHp(Ö roHp(Ö r¡Hp(Ö ráHp(Ö rIp(Ö rYIp(Ö rIp(Ö r½Ip(Ö rãIp(Ö rJp(Ö rQJp(Ö r—Jp(Ö rÁJp(Ö rÿJp(Ö r?Kp(Ö r“Kp(Ö rçKp(Ö rALp(Ö roLp(Ö r¡Lp(Ö ríLp(Ö rAMp(Ö r…Mp(Ö rËMp(Ö rNp(Ö r_Np(Ö r·Np(Ö rÿNp(Ö rAOp(Ö r‹Op(Ö rÉOp(Ö rPp(Ö r[Pp(Ö r¯Pp(Ö r Qp(Ö rOQp(Ö r—Qp(Ö r»Qp(Ö rëQp(Ö rRp(Ö r_Rp(Ö r±Rp(Ö rýRp(Ö r5Sp(Ö roSp(Ö r·Sp(Ö rTp(Ö r?Tp(Ö rqTp(Ö r©Tp(Ö rçTp(Ö rUp(Ö rOUp(Ö rUp(Ö rÏUp(Ö rVp(Ö rKVp(Ö r‡Vp(Ö rÃVp(Ö rëVp(Ö r-Wp(Ö r]Wp(Ö rWp(Ö rçWp(Ö r7Xp(Ö r}Xp(Ö r×Xp(Ö r#Yp(Ö r‰Yp(Ö rÍYp(Ö rZp(Ö r;Zp(Ö rgZp(Ö r™Zp(Ö rÍZp(Ö rùZp(Ö r)[p(Ö r[[p(Ö r‘[p(Ö rÍ[p(Ö r\p(Ö rE\p(Ö rŸ\p(Ö rÕ\p(Ö r;]p(Ö rq]p(Ö ró]p(Ö ra^p(Ö r§^p(Ö r_p(Ö ri_p(Ö rË_p(Ö r`p(Ö ru`p(Ö rã`p(Ö rap(Ö r+ap(Ö rUap(Ö roap(Ö rŸap(Ö ríap(Ö r bp(Ö r-bp(Ö r]bp(Ö rbp(Ö r±bp(Ö róbp(Ö rcp(Ö r;cp(Ö recp(Ö r‘cp(Ö rõcp(Ö r5dp(Ö r‹dp(Ö rÑdp(Ö rep(Ö r1ep(Ö ryep(Ö rµep(Ö r!fp(Ö r[fp(Ö r©fp(Ö rûfp(Ö rggp(Ö rÓgp(Ö r hp(Ö rChp(Ö rhp(Ö r½hp(Ö rýhp(Ö rmip(Ö rip(Ö rÛip(Ö r#jp(Ö rSjp(Ö rwjp(Ö r¡jp(Ö rçjp(Ö r kp(Ö rGkp(Ö rwkp(Ö r¯kp(Ö rùkp(Ö rClp(Ö r_lp(Ö r¿lp(Ö rmp(Ö rMmp(Ö r‹mp(Ö rãmp(Ö rnp(Ö rƒnp(Ö rßnp(Ö rop(Ö rƒop(Ö rµop(Ö rpp(Ö rqpp(Ö r¹pp(Ö rqp(Ö rSqp(Ö ryqp(Ö rÓqp(Ö rrp(Ö rYrp(Ö r•rp(Ö r·rp(Ö rõrp(Ö r#sp(Ö rOsp(Ö r{sp(Ö rÍsp(Ö r÷sp(Ö r9tp(Ö rctp(Ö r‹tp(Ö r§tp(Ö r×tp(Ö rýtp(Ö rup(Ö roup(Ö rŸup(Ö rÙup(Ö rvp(Ö rgvp(Ö r™vp(Ö rçvp(Ö rAwp(Ö rywp(Ö r±wp(Ö r xp(Ö rKxp(Ö r“xp(Ö rÕxp(Ö r+yp(Ö rWyp(Ö r—yp(Ö rÇyp(Ö rzp(Ö r?zp(Ö rzp(Ö r½zp(Ö r÷zp(Ö r-{p(Ö r]{p(Ö r™{p(Ö rå{p(Ö r#|p(Ö ru|p(Ö r³|p(Ö rÿ|p(Ö r?}p(Ö r‘}p(Ö rÏ}p(Ö r÷}p(Ö r3~p(Ö r~p(Ö rÇ~p(Ö rÿ~p(Ö rAp(Ö rp(Ö rÅp(Ö r€p(Ö ro€p(Ö r­€p(Ö rí€p(Ö rEp(Ö rp(Ö rÃp(Ö r‚p(Ö rg‚p(Ö r«‚p(Ö rõ‚p(Ö r3ƒp(Ö r“ƒp(Ö ráƒp(Ö r„p(Ö r7„p(Ö r…„p(Ö rׄp(Ö r#…p(Ö ra…p(Ö r£…p(Ö rë…p(Ö r3†p(Ö rs†p(Ö r·†p(Ö rû†p(Ö r-‡p(Ö ro‡p(Ö r™‡p(Ö rÕ‡p(Ö r%ˆp(Ö rmˆp(Ö r§ˆp(Ö råˆp(Ö r‰p(Ö r]‰p(Ö r‰p(Ö r½‰p(Ö rŠp(Ö rCŠp(Ö rƒŠp(Ö rÅŠp(Ö r‹p(Ö r9‹p(Ö ru‹p(Ö r¥‹p(Ö rÓ‹p(Ö rÿ‹p(Ö rQŒp(Ö rŒp(Ö r¿Œp(Ö rýŒp(Ö r9p(Ö r‹p(Ö r¹p(Ö rçp(Ö r-Žp(Ö r}Žp(Ö r½Žp(Ö r p(Ö rUp(Ö r…p(Ö r¹p(Ö rñp(Ö r!p(Ö rwp(Ö r­p(Ö rõp(Ö r=‘p(Ö r‡‘p(Ö rÇ‘p(Ö r’p(Ö rI’p(Ö ro’p(Ö r½’p(Ö rý’p(Ö r“p(Ö rK“p(Ö rm“p(Ö r§“p(Ö rÛ“p(Ö rû“p(Ö r5”p(Ö r}”p(Ö rÑ”p(Ö r•p(Ö ri•p(Ö r¡•p(Ö rË•p(Ö r–p(Ö ru–p(Ö r£–p(Ö rË–p(Ö r—p(Ö rm—p(Ö rÁ—p(Ö r˜p(Ö rI˜p(Ö r³˜p(Ö ró˜p(Ö rc™p(Ö r¡™p(Ö rÉ™p(Ö ršp(Ö rUšp(Ö r›šp(Ö rךp(Ö r)›p(Ö r]›p(Ö r›p(Ö r³›p(Ö rï›p(Ö rWœp(Ö r™œp(Ö rÉœp(Ö rp(Ö rEp(Ö r•p(Ö rÏp(Ö ržp(Ö rOžp(Ö r¹žp(Ö rŸp(Ö rƒŸp(Ö ráŸp(Ö r p(Ö rk p(Ö r© p(Ö rç p(Ö r#¡p(Ö ra¡p(Ö r™¡p(Ö rá¡p(Ö r)¢p(Ö rÄ¢p(Ö rî¢p(Ö r:£p(Ö rh£p(Ö rÄ£p(Ö r¤p(Ö rb¤p(Ö rœ¤p(Ö rÞ¤p(Ö r ¥p(Ö rH¥p(Ö rv¥p(Ö r¸¥p(Ö r¦p(Ö rb¦p(Ö rš¦p(Ö rȦp(Ö rô¦p(Ö r$§p(Ö rV§p(Ö r|§p(Ö rª§p(Ö rø§p(Ö rh¨p(Ö rˆ¨p(Ö r®¨p(Ö rä¨p(Ö r0©p(Ö rt©p(Ö rÞ©p(Ö rªp(Ö rtªp(Ö r¸ªp(Ö rîªp(Ö r0«p(Ö r‚«p(Ö rÈ«p(Ö r¬p(Ö rJ¬p(Ö r¦¬p(Ö râ¬p(Ö r8­p(Ö rd­p(Ö rš­p(Ö rÖ­p(Ö r®p(Ö r8®p(Ö r‚®p(Ö rº®p(Ö rä®p(Ö r4¯p(Ö rp¯p(Ö rʯp(Ö r°p(Ö r|°p(Ö rª°p(Ö rô°p(Ö r>±p(Ö r‚±p(Ö rбp(Ö r*²p(Ö rX²p(Ö r’²p(Ö rº²p(Ö r³p(Ö rB³p(Ö rx³p(Ö r¨³p(Ö rò³p(Ö r´p(Ö rR´p(Ö r–´p(Ö rÈ´p(Ö rµp(Ö r^µp(Ö rœµp(Ö rîµp(Ö r<¶p(Ö rжp(Ö rÒ¶p(Ö r·p(Ö rz·p(Ö rÖ·p(Ö r¸p(Ö r†¸p(Ö rÀ¸p(Ö r¹p(Ö rX¹p(Ö r¨¹p(Ö rþ¹p(Ö rTºp(Ö rºp(Ö rܺp(Ö r.»p(Ö rV»p(Ö r¢»p(Ö rò»p(Ö r>¼p(Ö rv¼p(Ö rª¼p(Ö rà¼p(Ö r ½p(Ö r6½p(Ö rv½p(Ö rÀ½p(Ö r¾p(Ö rP¾p(Ö r¾p(Ö rä¾p(Ö r&¿p(Ö rj¿p(Ö rÞ¿p(Ö rPÀp(Ö r¢Àp(Ö rÁp(Ö r`Áp(Ö r”Áp(Ö rêÁp(Ö rXÂp(Ö r´Âp(Ö rÃp(Ö rRÃp(Ö r‚Ãp(Ö r Ãp(Ö röÃp(Ö r8Äp(Ö r¸Äp(Ö rÅp(Ö rˆÅp(Ö rîÅp(Ö rwÆp(Ö r™Æp(Ö rÁÆp(Ö rïÆp(Ö rKÇp(Ö r£Çp(Ö rýÇp(Ö r/Èp(Ö r‘Èp(Ö r Ép(Ö rgÉp(Ö röÉp(Ö rXÊp(Ö r¢Êp(Ö räÊp(Ö r4Ëp(Ö rnËp(Ö rÖËp(Ö r.Ìp(Ö r`Ìp(Ö ršÌp(Ö ràÌp(Ö rÍp(Ö rXÍp(Ö rŽÍp(Ö rîÍp(Ö r0Îp(Ö rlÎp(Ö r®Îp(Ö rÏp(Ö r@Ïp(Ö r~Ïp(Ö r´Ïp(Ö rúÏp(Ö r,Ðp(Ö r‚Ðp(Ö rÂÐp(Ö r4Ñp(Ö r¢Ñp(Ö rÒp(Ö r³Òp(Ö rýÒp(Ö rcÓp(Ö rÁÓp(Ö rÔp(Ö rYÔp(Ö r‡Ôp(Ö r¹Ôp(Ö rõÔp(Ö rÕp(Ö r7Õp(Ö ryÕp(Ö r¹Õp(Ö rûÕp(Ö r7Öp(Ö rÖp(Ö ráÖp(Ö r1×p(Ö ry×p(Ö rã×p(Ö r/Øp(Ö reØp(Ö r™Øp(Ö rãØp(Ö rÙp(Ö r?Ùp(Ö rƒÙp(Ö r½Ùp(Ö r Úp(Ö r_Úp(Ö r¿Úp(Ö rÛp(Ö reÛp(Ö rÛp(Ö r«Ûp(Ö rÍÛp(Ö rïÛp(Ö rÜp(Ö r1Üp(Ö rMÜp(Ö rgÜp(Ö r‹Üp(Ö r¹Üp(Ö rÓÜp(Ö rçÜp(Ö rÝp(Ö rÝp(Ö r3Ýp(Ö rMÝp(Ö rqÝp(Ö r™Ýp(Ö r³Ýp(Ö rÕÝp(Ö ríÝp(Ö rÞp(Ö rÞp(Ö r7Þp(Ö r[Þp(Ö rÞp(Ö rŸÞp(Ö r±Þp(Ö rÇÞp(Ö rÝÞp(Ö rõÞp(Ö r ßp(Ö r3ßp(Ö rIßp(Ö r[ßp(Ö rußp(Ö r“ßp(Ö r¯ßp(Ö r¿ßp(Ö rßßp(Ö rÿßp(Ö ràp(Ö r;àp(Ö rUàp(Ö reàp(Ö ràp(Ö r½àp(Ö rñàp(Ö r!áp(Ö rAáp(Ö rsáp(Ö r¡áp(Ö rÕáp(Ö râp(Ö r7âp(Ö rcâp(Ö r‘âp(Ö r·âp(Ö råâp(Ö rãp(Ö raãp(Ö r‰ãp(Ö r½ãp(Ö réãp(Ö r3äp(Ö rSäp(Ö rwäp(Ö r¡äp(Ö rËäp(Ö råp(Ö r%åp(Ö r?åp(Ö raåp(Ö r‡åp(Ö rµåp(Ö rÙåp(Ö ræp(Ö rCæp(Ö r_æp(Ö r{æp(Ö ræp(Ö rÍæp(Ö rïæp(Ö rçp(Ö rCçp(Ö raçp(Ö r•çp(Ö r¹çp(Ö rÛçp(Ö rèp(Ö r;èp(Ö r“èp(Ö rïèp(Ö r-ép(Ö rYép(Ö r‰ép(Ö rÙép(Ö r êp(Ö r1êp(Ö rgêp(Ö r‘êp(Ö rÃêp(Ö ríêp(Ö r1ëp(Ö r]ëp(Ö r‡ëp(Ö rÁëp(Ö rìp(Ö r=ìp(Ö rìp(Ö råìp(Ö ríp(Ö r?íp(Ö r•íp(Ö rËíp(Ö r!îp(Ö ryîp(Ö rÁîp(Ö r ïp(Ö rOïp(Ö r«ïp(Ö rûïp(Ö rIðp(Ö r•ðp(Ö rÃðp(Ö ríðp(Ö r+ñp(Ö rƒñp(Ö rßñp(Ö ròp(Ö ròp(Ö råòp(Ö róp(Ö rUóp(Ö r…óp(Ö rÁóp(Ö réóp(Ö rôp(Ö rSôp(Ö rƒôp(Ö r±ôp(Ö róôp(Ö rõp(Ö rIõp(Ö r}õp(Ö r¯õp(Ö rçõp(Ö röp(Ö rSöp(Ö röp(Ö rÇöp(Ö r÷p(Ö r?÷p(Ö r}÷p(Ö r«÷p(Ö rÝ÷p(Ö rý÷p(Ö røp(Ö rUøp(Ö r‡øp(Ö r³øp(Ö rßøp(Ö r%ùp(Ö rGùp(Ö rkùp(Ö r•ùp(Ö r¿ùp(Ö rïùp(Ö r'úp(Ö rUúp(Ö r‰úp(Ö r¹úp(Ö rçúp(Ö rûp(Ö rQûp(Ö r¡ûp(Ö rùûp(Ö rSüp(Ö rüp(Ö rÕüp(Ö rýp(Ö rIýp(Ö ruýp(Ö rýp(Ö rÅýp(Ö r þp(Ö rMþp(Ö r¹þp(Ö r×þp(Ö rÿp(Ö r;ÿp(Ö ruÿp(Ö rÿp(Ö rùÿp(Ö r]p(Ö r‰p(Ö rµp(Ö rÙp(Ö rp(Ö rQp(Ö r™p(Ö rÉp(Ö rp(Ö rQp(Ö rƒp(Ö r¯p(Ö rp(Ö r?p(Ö r}p(Ö rÍp(Ö ríp(Ö rMp(Ö rŸp(Ö rÓp(Ö rp(Ö rYp(Ö r}p(Ö rÇp(Ö r p(Ö rQp(Ö r§p(Ö rßp(Ö r+p(Ö r}p(Ö r­p(Ö rÝp(Ö r1p(Ö rp(Ö r«p(Ö rûp(Ö r- p(Ö ro p(Ö r¹ p(Ö rû p(Ö r= p(Ö rm p(Ö r­ p(Ö rç p(Ö r p(Ö re p(Ö r• p(Ö r½ p(Ö rë p(Ö rr p(Ö r° p(Ö rÒ p(Ö rø p(Ö r* p(Ö rV p(Ö r† p(Ö rÊ p(Ö rp(Ö r<p(Ö rrp(Ö rªp(Ö rþp(Ö rDp(Ö rzp(Ö rªp(Ö rðp(Ö r2p(Ö rZp(Ö r~p(Ö r¢p(Ö rÖp(Ö røp(Ö rp(Ö rLp(Ö r’p(Ö rÂp(Ö rÜp(Ö rp(Ö rvp(Ö r¼p(Ö rþp(Ö r4p(Ö rZp(Ö r€p(Ö r°p(Ö ràp(Ö r p(Ö r`p(Ö r¢p(Ö räp(Ö rDp(Ö rœp(Ö rÐp(Ö rp(Ö rPp(Ö rjp(Ö rŠp(Ö rÐp(Ö rp(Ö r<p(Ö rzp(Ö r®p(Ö rìp(Ö rBp(Ö r‚p(Ö rÐp(Ö r\p(Ö rßp(Ö rp(Ö rYp(Ö r‘p(Ö rÑp(Ö rp(Ö r=p(Ö rƒp(Ö rµp(Ö rùp(Ö rp(Ö r;p(Ö r]p(Ö r™p(Ö rÝp(Ö r p(Ö rip(Ö rŸp(Ö rÙp(Ö rp(Ö rOp(Ö r“p(Ö rÏp(Ö rp(Ö r7p(Ö rep(Ö r¥p(Ö rÝp(Ö r p(Ö rc p(Ö rê p(Ö r.!p(Ö rv!p(Ö rÎ!p(Ö r "p(Ö rx"p(Ö rä"p(Ö r2#p(Ö rx#p(Ö r¼#p(Ö r$p(Ö r:$p(Ö r|$p(Ö r²$p(Ö rô$p(Ö r(%p(Ö rb%p(Ö r®%p(Ö rð%p(Ö r&&p(Ö rV&p(Ö r&p(Ö rÆ&p(Ö r'p(Ö r6'p(Ö rn'p(Ö r¦'p(Ö rÞ'p(Ö r(p(Ö r\(p(Ö r¦(p(Ö rò(p(Ö r<)p(Ö r€)p(Ö rÄ)p(Ö rú)p(Ö r*p(Ö rF*p(Ö rp*p(Ö r’*p(Ö rº*p(Ö rÞ*p(Ö r+p(Ö r2+p(Ö rx+p(Ö r®+p(Ö rä+p(Ö r&,p(Ö rT,p(Ö rŠ,p(Ö r¼,p(Ö r-p(Ö rt-p(Ö rÄ-p(Ö r(.p(Ö rP.p(Ö r„.p(Ö r¬.p(Ö rà.p(Ö r/p(Ö r./p(Ö rd/p(Ö rœ/p(Ö rØ/p(Ö r0p(Ö rN0p(Ö rˆ0p(Ö râ0p(Ö r$1p(Ö rP1p(Ö r†1p(Ö rÀ1p(Ö r2p(Ö rN2p(Ö rn2p(Ö r 2p(Ö rÒ2p(Ö rä2p(Ö r3p(Ö r^3p(Ö rš3p(Ö rÎ3p(Ö r4p(Ö r44p(Ö rZ4p(Ö rˆ4p(Ö rÊ4p(Ö r5p(Ö r`5p(Ö rž5p(Ö rÈ5p(Ö r6p(Ö rb6p(Ö r 6p(Ö rô6p(Ö rB7p(Ö *¶þ~/ ( +~oL (M þoN *v£/£/(P þ(Q *–oS ,+oT ,+oU þ*þ(Ø, oV +,'oW þ~/ ( +~þoX **00(Ù, oY sZ *o[ ,+Ûrž7ps\ z0' (Ú (] £/ sÎÎþ(×*0i o^ %YEDdYE%fYEsYE rÜ7ps\ zsÐÎþ(Û*Xþ(+*þr8pr 8po` r8pr8po` r8pr 8po` r$8pr*8po` *06oa ob   (c Ðù(d (.Åþ(+*0<þ~ / ( +~, þ(+*(Ö (Ý (+*6€6b~6b&*.sð€*( *~**uþ*sñ**uþ*só**uþ*0 u,+ u,+*Zr.8psk (+om *0iþ,`  u- u- u-$ *t  ¹y7ž{ bcXXX *t  ¹y7ž{ bcXXX **6(n oë*0¸þ9¦u 9—u,+ u,+ u,+ u,+ 3W  u-  u-!*t t { { þ*tt{ { þ***þþ*0²þ9 þ9•u,+ u,+ u,+ u,+ 3Uu- u-*t t {  { þ*tt{ { þ***þþ*0u ,oî**(â*:(â} *{ *:(â} *{ *:( } *:( } *2{ { *:( } *2{ { *( *&s**u þ*:s**uþ*&s**uþ*0 u,+ u,+*Zr.8pst (+ou *r(ú}}}*{*{*{*Ò(ú}}}}}}*{*{*{*{*{*{*r(ú}}}*{*{*{*:( }*2{{*2{{*2{{*:( }*2{{*2{{*2{{*2{{*2{{*2{{*:( }*2{{*2{{*2{{*{ *{!*{"*{#*{$*{%*{&*{'*{(*{)*{**{+*0d( } }!}"}#}$}%}&}' }( }) }* }+*04r<8ps,Å(w ÿÿÿ(x ¥|Pdd 's0*{,*{-*{.*{/*{0*²( },}-}.}/}0*0Pþ,?þ,7(y {, {,  /+ þ /*1*(ÆÃ**þ,**:¥o8*0[¥ þ,>¥þ,1{, {,  /+ þ /*1*(ÇÃ**¥þ,**0vþ,m ¹y7ž{0bcXXX ¹y7ž{/bcXXX ¹y7ž{.bcXXX ¹y7ž{-bcXXX ¹y7ž{,bcXXX **6(n o;*0jþ,[u ,O{,{,3?{-{-3/{.{.3{/{/3{0{0þ******þþ*"{,*"{-*"{.*"{0*"{/*"{/*>{0{/Y*¦{,{-X{.X{0{0s7*ž{,{-{.{/{0Xs7*ž{,{-{.{/{0Xs7*ž{,{-{.{/{/Ys7*n{.{0{0s7*2s7*2s7*0fþ,Wþ,O{,{,3?{-{-3/{.{.3{/{/3{0{0þ******þþ*0u ,oL**0so &}{ s| }} }~ } }€ } }‚ }ƒ }„ s7}… s7}† *0B{ƒ / rD8ps\ z{† o‡ {† oˆ oFo‰ {ƒ *"{… *&}… *"{† *&}† *n{~ {€ {‚ þ(+*6{} ¥*"{‚ *&}‚ *"{~ *&}~ *"{ *&} *"{ *&} *"{€ *&}€ *"{ƒ *&}ƒ *>{{ o‹ &*f{Œ { {Ž s *"{„ *&}„ *&o *>{€ { X*0W {€ { XX{~ Ži2<{€ { XX(+ {~ {€ {€ { (+}~ **0  (+ s“ s” *0%"s• s” ( + }~ Ži} *"(— *0<#{~ {€ { (+ Ži {~ (+}€ } *0ho &}<}= ÿÿ}> €}?{<£ŽiY{?YY[}@{?{@ZXX}A*N(ÄÃþoq*&sm*0=%i {?/{<££€i*{?   (ÈÃ*0 Ç&{=£€i {>.{˜ }Ž }™ +{˜ {š 3<o› {œ o &{<{>sÍÃsÏÃ{Aþ(!+*{Œ { {˜ X£ op {>3ož *{˜ X}˜ 89ÿÿÿ(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , ("+-***þþ*Žþ,þ, ("+-***þþ*0*u ,ox**:(Ÿ }B*(Ÿ *0 (  *0 (¡ *{B*0-þ,$ ¹y7žt(~(#+bcXXX **6(n o*0D*þ,5u ,)($+-*t(~t(~þ(%+**þþ*þþ,0þ,(($+-*t(~t(~þ(&+**þþ*0*u , þo‚**¾o &}D}E}F}C}G*"{G*Ž{DY£{EY£s¦ *B{DY£*B{EY£*:{F£*:{F£*B{CY£*~{F£{F£s¦ *srzþo &}§ }¨ }© }ª }« }¬ }­ *"{§ *"{© *"{ª *"{¨ *"{« *"{¬ *"{­ *{® *{¯ *{° *{± *{² *{³ *{´ *{µ *{¶ *{· *{¸ *{¹ *{º *{» *{¼ *{½ *0„( }® }¯ }° }± }² }³ }´ }µ  }¶  }·  }¸  }¹  }º }» }¼ }½ *.('+*vo &(+}¾ }¿ *0F+{¾ Ži 17{¾ Z /+(+}¾ {¾ {¿ þ(+**"{¿ *B{¿ Y}¿ *V{¾ {¿ Y£*0)-þþsÀ ((+þ()+*Æ{¿ Xoà {¾ {¿ ¤{¿ X}¿ *.{¿ þ*0O. {¿ Y 2>rj8p{¾ £Œ{¿ Y3rx8p+r|8p(Ä X X3Â*®o &sÅ }Æ sÇ }È }É *J oÊ }É *0-0sË  oÊ (Ì }É sÍ (*+*042þ{É / (Ï +(Ð {È oÑ ,*(Ð *0_5þ{É / (Ï +þ {Æ oÒ ,{È oÓ (Ô oÕ +{Æ þoÖ *¾þ{É / (Ï +{Æ o× {È þoØ *vþ{É / (Ï +{Æ *vþ{É / (Ï +{È *0Û>þ{É / (Ï +{Æ oÙ {Æ oÚ sÊ {Æ oÛ (Ü ,%(Ý oÞ (ß (à oá +Ò Þþoâ &Ü &{È oã (ä ,%(å oæ (ç (è oé +Ò Þþoâ &Ü &*@2r•2Ç0=?þ{É / (Ï +þ {Æ oÒ ,*r€8psê z†þ{É / (Ï +þoë *0D?þ{É / (Ï +þ {Æ oÒ ,oÓ (Ô *(Ð *0àCþ{É / (Ï + {Æ oÛ (Ü 9–(Ý (ß (à (++ (ß oÓ (í -+º¥oî oï ,oð (ß (++ +ÚÞu   ,  oâ &Ü&Ü&8^ÿÿÿ Þþoâ &Ü &*z+¥&¦Ì0ÚDþ{É / (Ï +{Æ oÛ (Ü 9“(Ý (ß (à (,+&(ß oÓ (í -+¼¥oî oï ,oð (ß (,+&+ÛÞu , oâ &Ü&Ü&8aÿÿÿ Þþoâ &Ü&*v* $£Ç–þ{É / (Ï +{Æ þoò *–þ{É / (Ï +{Æ þoò *0ÈEþ{É / (Ï +þ {Æ oÒ 9”(Ð {È oÑ ,o (í ,d (í (í -$(ó {Æ oÖ {È oô *(í (ó {Æ oÖ {È þoÕ **{Æ oõ **šþ{É / (Ï +{Æ þoÖ *09?þ{É / (Ï +þ {Æ oÒ ,(ö **’þ{É / (Ï +{Æ þoÙ *0óGþ{É / (Ï +{Æ oÙ {È o÷ Xsø {Æ oÛ (Ü 9(Ý où (ß oÓ ¥oî oï , oð (ß sú où +×Þu   ,  oâ &Ü&Ü&8uÿÿÿ Þþoâ &Ü &oû Œ¥n*{.©AОþ{É / (Ï +¥oü ¥U*zþ{É / (Ï +oý *†þ{É / (Ï +þoþ *0;Hþ{É / (Ï +þþsÿ (-+¥*0;Iþ{É / (Ï +þþs (.+¥*†þ{É / (Ï +þoþ *‚þ{É / (Ï +þo *Âþ{É / (Ï +o ,oý **0(Jþ{É / (Ï +o o *¶þ{É / (Ï +(ß (à þoþ *~þ{É / (Ï +þo *0_Kþ{É / (Ï +(ß o , (ß oý (à (/++,(ß o +*0G?þ{É / (Ï +(ß o , (ß oý (à þ(/+**®þ{É / (Ï +s ¥þ(0+*bþ{É / (Ï +*~þ{É / (Ï +þo *( * **s *’( } } } } *{ *{ *{ *{ *0 M ,+*Zr.8ps (1+o  *bo &}" }# * *"{# *"{" *NŒ¥ks$ *j{" {# (2+(3+*j{" {# (4+(3+*:{# (5+*R{" {# (6+*>{# (7+*>{# (8+*.{# þ*0HO{# -s& *{" {# (9+ (' (( (3+(3+s& *–{# -*{" {# (:+(3+*:{# (;+*:{# (<+*&() *&(* *Ò{# -*{# -*{" {# {# (=+(3+*Î{# -*{# -*{" {# {# (>+(3+*Î{# -*{# -*{" {# {# (?+(3+*r{" {# {# (@+þ*f{" {# {# (@+*6{# (A+*6{# (A+*6{# (B+*f{" {# {# (C+*f{" {# {# (C+*6{# (D+*6{# (E+*0Qu$ , ¥o+ þ**0\S ¥o, oï ,o- b (F+X wX +Ù Þu , oâ &Ü&Ü&(/ *+:"o0 *0,TŒ¥ks$ {" {# (2+(3+*ŽŒ¥kŒ¥k(G+s$ *z{" {# (H+{# (@+*2rÊ8ps1 z2rÊ8ps1 z2rÊ8ps1 zR{" {# (6+*B{# (I+**:{# (5+*6{# (J+*J{# (J+¥U*:{2 s3 *( * *2s; *²( }< }= }> }? }@ *{< *{= *{> *{? *{@ *0 V ,+*Zr.8psA (K+oB *bo &}C }D * *"{D *"{C *NŒ-¥ksE *n{C {D (L+(M+*.{D þ*R{C {D (N+*:{D (O+*:{D (P+*n{C {D (Q+(M+*:{D (R+*>{D (S+*b{C {D (T+*02Y{C {D (U+ (G (H (V+sI *>{D (W+*R{D (X+(Y+*R{D (Z+(Y+*08[{C {D ([+ (J (K (M+(M+sL *:{D (\+*R{C {D (]+*j{C {D (^+(M+*R{C {D (_+*6{D (`+*6{D (a+*ŽŒ-¥kŒ-¥k(b+sE *ŽŒ-¥kŒ-¥k(c+sE *0]u, , ¥o+ þ**0` ¥oü oï ,`oM (ß (à sN (O (P b(F+X wX b(d+X wX +˜ Þu   ,  oâ &Ü&Ü&(/ *l{"oQ *6{D (e+*J{D (e+¥U*‚sR ¥(f+¥þ(g+*:{T sU *{u*{v*{w*"}v*r( }u}v}w*0•aþ9þ9v(y {u{u(h+ /*1*(y {v {v /+ þ /*1*(y {w {w /* þ**þ,**:¥%o@*0“c¥% þ9s¥%þ,f{u{u(h+ /*1*{v {v /+ þ /*1*{w {w /* þ**¥%þ,**0Rþ,I ¹y7ž{wbcXXX ¹y7ž{vbcXXX ¹y7ž{u(i+bcXXX **6(n oC*0Pdþ,Au% ,5{u{u(j+,{v{v3{w{wþ****þþ*0=f{v{w2 rð8ps\ z{u{v£ {vX(>*0)(W {u{voX {vX(>*®/+ XŽiþ, r 9ps\ zXs?*0@h{vX{w1 r 9ps\ z{u{v(k+ {vX(>*"{v*0Kþ,<þ,4{u{u(l+,{v{v3{w{wþ****þþ*0du% ,oK**{x*{y*"}x*"}y*V( }x}y*0[þ,Jþ,B(y {x{x(h+ /*1*(y {y {y  /* þ**þ,**:¥&oR*0bj¥& þ,E¥&þ,8{x{x(h+ /*1*{y {y  /* þ**¥&þ,**0=þ,4 ¹y7ž{ybcXXX ¹y7ž{x(i+bcXXX **6(n oU*0@kþ,1u& ,%{x{x(j+,{y{yþ***þþ*0Fl{xŽi 17{x Z /+(m+(O{x{yþ(n+**Z{x{yþ(k+*0-{yX oX{x{yÒ¤(P*.ioZ*0[mŽi {yX oX{x {y Y2! X£’Ò¤XX3ß(P*0`{x ÿ_Ò¤{xXc ÿ_Ò¤{xXc ÿ_Ò¤{xXc ÿ_Ò¤*0({yX oX{yo](P*03.Ži {yX oX{x{y(n+(P*0P{yX oX{x{y ÿ_Ò¤{x{yXc ÿ_Ò¤(P*J,+oZ*.io`*®!ÿÿÿÿ_io^ c!ÿÿÿÿ_io^*"{y*:(m+sQ*îþ,,þ,${x{x(l+,{y{yþ***þþ*0ku& ,of**Fo &}z*"{z*"sh*ÞoŸ &}€}|}~}}{}}*0)n(Y (Z ([ (\ ¥7om*0 (o+ok*"{€*"{~*0Jq{ (] ,6 (] (] - (^ * (_ ¥7(p+(` * +à03srR9poa (Z s‡£{¥7(q+sm*®{€{|{~{(c (c sk*0[u{{ {} ,2 ,- (d  (d {|oe (i(Y *{|oe (N(Y *0 «w{ (] 9‘ (] (] - of &* ¥7og oï ,A oh {€{|{~([ (\ {{{}skof &+·Þ u , oâ &Ü&Ü&* 8‚ÿÿÿ9N‡{*{‚*V( }}‚*0Cþ,: ¹y7ž{‚oq²bcXXX ¹y7ž{(r+bcXXX **6(n ox*0Jzþ,;u) ,/{{(s+,{‚ {‚ þos²***þþ*0@þ,1þ,){{(t+,{‚{‚þ(u+***þþ*0{u) , þo{**âo &}i }j {i {Œ!,+ rT9ps\ z*f{i {ok þol *6{i {‚*0Õ~{j om Ý¿t u( ,þu” ,X rR9prR9p(N(Z s‰£(o+{i {ok ol ¥7smz rR9prR9p(N(Z  oe s {i {ok ol slz*¿b{i {i {sn *0ov+ {i sp *06‚ow+ (q (r {i sp {i ss st *0I…ox+ (u (v (w {i sp {i ss {i sx sy *0^ˆoy+ (z ({ (| (} {i sp {i ss {i sx {i s~ s *:($¥oz+*0s ov+ {i sp *0Ž‹o{+ ,[ŒH,+ r¨9ps‚ zŽi = Y 2,£ù{i sp ¤=X X3Ô*(\{i {ok ol slz0*o|+ , (ƒ {i sp („ ***ov+*:($¥ov+*"{j *0 s‘£þ(}+*00{j Œ (~+-*¥ù {i sp („ *f{i s… ov+sp *( *s‡ **uLþ*sˆ **uMþ*0‘ uM,+*Zr.8ps‰ (+oŠ *0a”þ,X uL,(tL  ¹y7ž{‹ (€+bcXXX *tM  ¹y7ž {Œ (+bcXXX **6(n o *0¥•þ9“u 9„  uM,+   uM,+ 3\uL,-tL tL {‹ {‹ þ(‚+*tMtM{Œ {Œ þ(ƒ+***þþ*0–þ9‹þ9€uM,+   uM,+ 3XuL,*tL tL {‹  {‹ þ(„+*tMtM{Œ {Œ þ(…+***þþ*0‘u , þoŽ **:( }‹ *{‹ *:( }Œ *{Œ *:( } *2{ {‹ *:( }‘ *2{‘ {Œ *0K.o &}’ }“ }” (• }– K(†+ {’ /+}˜ *0˜oš o‡+*02œoš oˆ+ ( (ž (Ÿ  o‰+*0Još oˆ+ ( (ž (Ÿ  o‰+-*(¡ (O (ö *0OŸoš oŠ+, o‹++ (¤ s¥ (¦ (§  oŒ+o+*0) oš o‹+ (§ (¦  o+*0'˜oš (© þ-(Ž+(+(« **0¡oš (¤ o+*0£{” , (¬ o­ &**0 ¥ (+*6o‘+þ*ns® (¯ (° þ(’+*žs² (“+s´ (µ (¶ þ(”+*0!§s· (•+ (¹ (º s» *03©o‘+ -s¼ * (½ (¾ o–+s¼ *0:¬þþcþþd sÀ þ(—+*0’°oÁ {˜ Y /+ {’ Y  / + s (˜+sÄ (™+(Å (Æ sÇ (š+}– sÉ (›+sË þ(œ+*0m²o &}Ì }Í {Í (+  sÎ }Ï sÐ (ž+}Ñ sÒ (Ÿ+}Ó sÔ (Ÿ+}Õ *0X³{Ï oš o‡+ -* (¡ (O  (¡ (P {Í sÖ o× ,(ö **0y´{Ï oØ - ( +* (¡ (O (¡ (P {Í sÖ o× ,{Ñ sN oÙ +,{Õ oÚ &*( +*6{Ï oÛ *F{Ï þoÜ *B{Ï þoÝ *>{Ï þoÞ *0Û»sß sà sá sâ ¥uoã oï ,u oä (r (¡+oå 20(r sæ (q oç sè oé +¦oê   (ë (q oç 8ƒÿÿÿÞ u   ,  oâ &Ü&Ü&sì ¥z(¢+þ(£+*%‚§01½(¤+sî sï (¥+sð ¥~(¦+þ(§+**o &*z(ñ ,*(ò oó þþ*0?¾(ô ,*(ò oó .*(õ (ö (¿,*( Áo(Á*0ho &o÷ [þ}ø {ø ,()+(¨++}ù {ø ,(ú +}û {ø ,+}ü *z(ú (ú sý €þ  €ÿ *rþ~ÿ  / ( +~þ *>(ú oý *’{ø ,{ù *{ù o þ(¨+*"{ù *"o *†{ù {û ( {ü Xsý *®{ù ((+()+{û (¨+{ü Xsý *Ro ¥þo, *J¥o, ¥U*v{ø ,(ú *{û þ()+*~ *~¡*€ *€¡**o &*nþ~Ÿ/ ( +~œ*rþ~Ÿ/ ( +€œ*nþ~Ÿ/ ( +~ž*rþ~Ÿ/ ( +€ž*ö(Òr´9p(ñ ,+(Òr¸9p( o ,*(Òo *0[À~¡(ô ,!r¼9ps@ (©+( o  þo  *rÌ9psC (ª+ sá( o  ~¡þ(«+*0+Â(  (  rì9ps (¬+( þo *: ~ s *0‹Å(Ôrø9ps (­+ så ~ s (®+o (Ôo (Ô ( (¯+þ,5( rø9ps (­+ sé ~ s (®+þo **0DÆ-* (d ~¡ (ô ,(Ð*o -r:p( ( (Ð**nþ~Ÿ/ ( +~*.(°+*B(c (°+* * * * * * *6€.~.&*^s瀣s瀤*:( }¢*~£**(ìþ*~¤**(ìþ*{¢*Zr.8ps (±+o *01.þ, þ,{¢ {¢ 3*Y**þ,**:¥7oî*0BÈ¥7 þ,%¥7þ,{¢ {¢ 3*Y**¥7þ,**0þ, (ì3 * **6(n oñ*0.Èþ,u7 ,{¢ {¢ þ**þþ*0*.þ,þ,{¢ {¢ þ**þþ*0Éu7 ,oô**{§*{¨*{©*{ª*{«*{¬*{­*{®*0D( }§}¨}©}ª}«}¬}­}®*0Êþ9yþ9n(y {§{§( /*1*(y {¨ {¨ /+ þ /*1*(y {©{©/+þ / * 1 *(y {ª{ª/+þ/*1*(y {«{«/+þ/*1*(y {¬{¬  oð/*1*(y {­{­( /*1*(y {®{®( **þ,**:¥9oÿ*0nÌ¥9 þ9N¥9þ9>{§{§( /*1*{¨ {¨ /+ þ /*1*{©{©/+þ / * 1 *{ª{ª/+þ/*1*{«{«/+þ/*1*{¬{¬  oð/*1*{­{­( /*1*{®{®( **¥9þ,**0ëÍþ9ß ¹y7ž{® , ( +bcXXX ¹y7ž{­ , ( +bcXXX ¹y7ž{¬oñbcXXX ¹y7ž{«bcXXX ¹y7ž{ªbcXXX ¹y7ž{©bcXXX ¹y7ž{¨bcXXX ¹y7ž{§ , ( +bcXXX **6(n o*0½Îþ9«u9 9œ{§{§(ñ 9„{¨{¨@q{©{©3a{ª{ª3Q{«{«3A{¬ {¬ oó,'{­{­(ñ ,{®{®(ñ *********þþ*0 Ðr:ps (²+ s×{§{¨{ª{©{«{®{¬ (è (n oó,r>:p+rN:p{­ (³+ þ(+*0 Ò( ( ( {¨s  s  (´+,+ ("  (# {©s  s    (´+,+ (" (#  ,+ -*,/{§{©{«{¬{­{®sþ+  ,5 {§ {¨ {ªX {¬ {­ {®sþ* *0 °×(‘ -+($ (D¥(˜¥ ( ( , (D¥+(E¥(˜¥( ( ds%   (­ o& o£¤ (I¥ ,(è+(ê sþ*0±þ9Ÿþ9”{§{§(ñ 9|{¨{¨3l{©{©3\{ª{ª3L{«{«3<{¬{¬oô,'{­{­(ñ ,{®{®(ñ *********þþ*0Øu9 ,o**Úo &(' }¯(ƒ¤(¡£}±sÝ(µ+}²*Rsß{¯þ(¶+*Rsá{¯þ(¶+*"{¯*0'Úo  (( -* () {­(c *nþ~³/ ( +~°*0ˆÜs  o* (+ Þt(¤(¥ Þ -.o-rR9po, Þ6(d o, Þ"(ƒ Þu , oâ &Ü&Ü*fm>s- (·+*>så(¸+&*j{²oâ {±þoâ *6€¹ ~¹ &*{Õ*{Ö*{×*{Ø*{Ù*{Ú*{Û*{Ü*0D( }Õ}Ö}×}Ø}Ù}Ú}Û}Ü*0Pþ,?þ,7(y {Õ {Õ  /+ þ /*1*(­**þ,**:¥>o*0VÞ¥> þ,9¥>þ,,{Õ {Õ  /+ þ /*(¯**¥>þ,**Fþ,(°**6(n o!*bþ, (±*þþ*0¤þ9’þ9‡{Õ{Õ@t{Ö{Ö3d{×{×3T{Ø{Ø3D{Ù{Ù34{Ú{Ú3${Û{Û(ñ ,{Ü{Üþ*********þþ*0ßu> ,o$**0do &}ð}ï}ñ}ò}ó}ô(Ú}õs. }ö{ð(¥(Ko/ *0  ò(¤(¡£ sµ(µ+ (š(0 (1 sPv, {ñ+{ò(³  (2 (3   (2 (4   (2 (5   (6   (nxEÀ•¯ (¤(7 (8 (9  ,+  (ƒ (ºv{ðo: oA{ðo; oAY   (¿vs(< s= +' ts{%Cs= + („s= (> (? (@ oQv(™{ô(»v9 E}ôsA 8(ÒzEÂÖüÿÿÖüÿÿÖüÿÿÖüÿÿÆÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿÖüÿÿ8Ñüÿÿ(B }ô(³(2 (4 (2 (3 (6  (nx ¼@ctœ!!{NC"{õ93"rZ:p(ñ ,^ ,+  (ƒ#{Õ{Ú{Û{Üs$$(< oQv#(™sA 8"r^:p(ñ ,+’"rr:p(ñ ,8ÿÿÿ"rv:p(ñ ,8lÿÿÿ"r€:p(ñ ,8Yÿÿÿ"rŠ:p(ñ ,8Fÿÿÿ"r:p(ñ ,83ÿÿÿ"r¢:p(ñ ,8 ÿÿÿ"r¦:p(ñ ,8 ÿÿÿ"r°:p(ñ ,8úþÿÿ"rº:p(ñ ,8çþÿÿsA +J"rº:p(ñ ,æ8ÈþÿÿsA ++sA +E8ôúÿÿ(Òz@çúÿÿ+Õ(C (D sA Þu %%, %oâ &Ü&Ü Þu  , oâ &Ü&Ü*A4Ê á  ò þ 6(˜(E *†!(#¥(F ¥—(¹+*0ôsG {öoH *0WrÈ:poI ,(övYsG oJ &+($¥rR9psK (îvXsG oJ &XX*0rõob YoL /oM 3 ob + 1(övXYsG oJ &+.!(ôvXob XYsG oJ &**0e÷sN s»oO &oP Y  07oQ (3  (5  (4 o*Y Y3ÉþoQ *Vs½þo-*Ns¿þo-*0aùo &}÷sUv sPv (R sS (ž£s\v}øsPv (R sS (ž£s\v}ù*01ûoT (U ob (V {÷{ø{ùs&*0"û(W {÷{ø{ùs&*0ds4€ûs4€üs4€ýs4€þs4€ÿs4€s4€s4€s4€*:( }ú*~û**(Gþ*~ü**(Gþ*~ý**(Gþ*~þ**(Gþ*~ÿ**(Gþ*~**(Gþ*~**(Gþ*~**(Gþ*~**(Gþ*{ú*Zr.8psX (º+oY *01.þ, þ,{ú {ú 3*Y**þ,**:¥CoI*0Bý¥C þ,%¥Cþ,{ú {ú 3*Y**¥Cþ,**0^þ,U (GE    * * * * * * * * **6(n oL*0.ýþ,uC ,{ú {ú þ**þþ*0*.þ,þ,{ú {ú þ**þþ*0þuC ,oO**þo &} }}}}}}*"{*"{ *"{*"{*"{*:{o\*:{o\*"{*0 ,{{{{{{sQ*0 rR9psQ*¶(@¥(?¥sZ (B¥(A¥sZ s[ *{*{*V( }}*Fo &}*"{*0ao &}}}}}}{ŽiŽi3+sï(p+}*"{*"{*"{*"{*"{*"{*"{*Šsk€sk€ sk€!*:( }*~**(rþ*~ **(rþ*~!**(rþ*{*Zr.8ps\ (»+o] *01.þ, þ,{ { 3*Y**þ,**:¥Iot*0B¥I þ,%¥Iþ,{ { 3*Y**¥Iþ,**0.þ,% (rE * * **6(n ow*0.þ,uI ,{ { þ**þþ*0*.þ,þ,{ { þ**þþ*0uI ,oz**Šs}€&s}€'s}€(*:( }%*~&**(„þ*~'**(„þ*~(**(„þ*{%*Zr.8ps^ (¼+o_ *01.þ, þ,{% {% 3*Y**þ,**:¥Ko†*0B¥K þ,%¥Kþ,{% {% 3*Y**¥Kþ,**0.þ,% („E * * **6(n o‰*0.þ,uK ,{% {% þ**þþ*0*.þ,þ,{% {% þ**þþ*0uK ,oŒ**( *"sœ**uOþ*sŸ**uPþ*s¡**uQþ*0 uQ,+ uP,+*Zr.8ps` (½+oa *0 þ9   uO- uP-p uQ:˜tO  ¹y7ž{0 (b (c  od bX(¾+abcXXX ¹y7ž{/(¿+bcXXX *tP ¹y7ž{1, ( +bcXXX *tQ ¹y7ž{2 (b (c  od bX(¾+abcXXX **6(n o—*0ƒ þ9quM 9buQ,+ uP,+ uQ,+ uP,+ @uO-uP:‚uQ:štO tO {/{/(À+,P {0{0(b (c (b  (c   oe ,  þ(Á+***tP tP  {1 {1(ñ *tQ tQ {2{2(b (c (b  (c   oe ,  þ(Á+****þþ*0 þ9ýþ9ò  uQ,+  uP,+   uQ,+  uP,+ @¯  uO- uP-H uQ-ctO tO {/ {/(Â+,{0 {0þ(Ã+**tPtP{1{1(ñ *tQtQ {2 {2þ(Ã+***þþ*0uM , þoš**V(Ž}/}0*{/*{0*:(Ž}1*{1*:(Ž}2*{2*:( }3*2{3{/*2{3{0*:( }4*2{4{1*:( }5*2{5{2*^s«€7s«€8*:( }6*~7**(´þ*"s»**(´þ*s¾**(´þ*~8**(´þ*{6*Zr.8psf (Ä+og *0½þ9± (´Eh *tW  ¹y7ž{> (b (c  od bX(¾+abcXXX ¹y7ž{=o‰bcXXX *tX ¹y7ž{?o—bcXXX * **6(n o¶*0þ9ðuU 9á{6 {6 @Ê(´E€*tW tW {={=o‹,P {>{>(b  (c  (b  (c    oe ,   þ(Á+***tX tX {?{?þo™***þþ*0¶þ9¤þ9™{6 {6 @‚(´EA*tW tW {= {=oŒ,{> {>þ(Ã+**tXtX{?{?þoš***þþ*0uU , þo¹**Z(«}=}>*{=*{>*>(«}?*{?*:( }@*2{@{=*2{@{>*:( }A*2{A{?*{B*{C*{D*{E*’( }B}C}D}E*Fo &}F*6{F{C*"{F*0){F {C,{C (h (È**^($¥sûsý(Å+*0/( ( (—¥ ($¥s·s¹(Æ+*6{F{E*0[{F{C ,E (h uù&,(h tù& {ÚM{ÒM *(h tø&{ÙM{ËM +ârR9p*0: s» rÌ:prÚ:p(°+ oÎ Þu  , oâ &Ü&Ü* "0;"s½ rÌ:pr;p(°+ oÏ Þu  , oâ &Ü&Ü* #.sç€G*( *~G**u`þ*sè**uaþ*"sê**ubþ*0$ ub,+ ua,+*Zr.8psi (Ç+oj *0ù'þ9åþ9Úub,+ ua,+   ub,+  ua,+ @•  ua-  ub-)*ta ta (y {K {K( *tbtb(y {L{L( /*1*(y {M{M( *Y**þ,**:¥^oß*0÷(¥^ þ9×¥^þ9Çub,+ ua,+   ub,+  ua,+ @‚  ua-  ub-$*ta ta {K{K( *tbtb{L{L( /*1*{M{M( *Y**¥^þ,**0²)þ9¦ u`-ua- ub-3 *ta  ¹y7ž{K , ( +bcXXX *tb  ¹y7ž {M , ( +bcXXX ¹y7ž {L , ( +bcXXX **6(n oâ*0Õ*þ9Ãu^ 9´ub,+ ua,+ ub,+ ua,+ 3t  ua-  ub-$*ta ta {K{K(ñ *tbtb{L{L(ñ ,{M{M(ñ ****þþ*0Ï+þ9½þ9²ub,+ ua,+ ub,+ ua,+ 3rua- ub-"*ta ta {K {K(ñ *tbtb{L{L(ñ ,{M{M(ñ ****þþ*0$u^ ,oå**(Ö*:(Ö}K*{K*V(Ö}L}M*{L*{M*:( }N*:( }O*2{O{K*:( }P*2{P{L*2{P{M*2sô€R*:( }Q*~R**(ýþ*"s**(ýþ*s **(ýþ*s **(ýþ*{Q*Zr.8psk (È+ol *00þ9þþ9ó{Q {Q @Ú(ýE]”*th th (y {W {W( /*1*(y {X {Xoá*titi (y {Y  {Y   þom *tj tj (y  {Z {Z( *Y**þ,**:¥foÿ*02¥f þ9è¥fþ9Ø{Q {Q @¿(ýEQ€*th th {W{W( /*1* {X{Xoá*titi {Y  {Y   þom *tj tj  {Z {Z( *Y**¥fþ,**0Î3þ9 (ýENt *th  ¹y7ž{XoâbcXXX ¹y7ž{W , ( +bcXXX *ti  ¹y7ž {Yon bcXXX *tj ¹y7ž{Z , ( +bcXXX **6(n o*0é4þ9×uf 9È{Q {Q @±(ýECr*th th {W{W(ñ , {X{Xoä**titi{Y {Y   þoo *tj tj  {Z {Z(ñ ***þþ*0Ð5þ9¾þ9³{Q {Q @œ(ýE7]*th th {W {W(ñ ,{X {Xoå**titi{Y{Yþ(É+*tjtj{Z{Z(ñ ***þþ*06uf , þo**Z(ô}W}X*{W*{X*>(ô}Y*{Y*>(ô}Z*{Z*:( }[*2{[{W*2{[{X*:( }\*2{\{Y*:( }]*2{]{Z*s*:( }^*{^*&*Zr.8psp (Ê+oq *0@9þ,/þ,'&  (y {^ {^ þor **þ,**:¥no*0K:¥n þ,.¥nþ,!&  {^ {^ þor **¥nþ,**0.;þ,% &  ¹y7ž{^os bcXXX **6(n o*0<:þ,-un ,!&  {^ {^ þot **þþ*01<þ,"þ,&  {^{^þ(Ë+**þþ*0=un , þo **¶o &}_}a}`}b}c*"{_*0 F{b :ò{` u³, t³(u *t´ (v (w (v (x (v (y (v (z (v ({ (v (| {c(Ì+,/(}  s–þ—s~ oÍ+}c+{c(Žo€  {b  -(È(×(÷( (‚ (* (ƒ *(ƒ *"{a*Fo &}d*"{d**{dŽi*N{d£o{_*b($¥s˜sš(Î+*N{d£o{a*0iJ{+1 (Ï  sœ(Ï+ (Ë (Ð+ sž (Ñ+s (Ò+s¢(Ó+(Ô+s&*0 9o%r6;p(û( (‚ ((† s"¤os&*6os&*{e*{f*{g*{h*’( }e}f}g}h*0£þ9þ9„(y {e{e( /*1*(y {f{f( /*1*(y {g{g( / * 1 *(y {h{h( **þ,**:¥qo4*0™L¥q þ9y¥qþ,l{e{e( /*1*{f{f( /*1*{g{g( / * 1 *{h{h( **¥qþ,**0 Íþ9” ¹y7ž{h , ( +bcXXX ¹y7ž{g , ( +bcXXX ¹y7ž{f , ( +bcXXX ¹y7ž{e , ( +bcXXX **6(n o7*0lMþ,]uq ,Q{e{e(ñ ,<{f{f(ñ ,'{g{g(ñ ,{h{h(ñ *****þþ*0hþ,Yþ,Q{e{e(ñ ,<{f{f(ñ ,'{g{g(ñ ,{h{h(ñ *****þþ*0Muq ,o:**{i*{j*{k*{l*’( }i}j}k}l*0xQo &}msF Œ¹,+ r¨9ps‚ zŽi r Y2#£r(/ ¤rXX3Ý (Õ+}o*"{m*"{o*0 PR{+1 (ˆ þ,rR9prsA*o‰ (= sL (Ö+ sA*6€~&*^sG€rsG€s*:( }q*~r**(Pþ*~s**(Pþ*sZ**(Pþ*s\**(Pþ*{q*Zr.8psŠ (×+o‹ *0¤Uþ9þ9…{q {q 3o(PE)*tv tv (y {x {x( *twtw(y {y{y( *Y**þ,**:¥toR*0¦W¥t þ9†¥tþ,y{q {q 3c(PE$*tv tv {x{x( *twtw{y{y( *Y**¥tþ,**0Xþ9ƒ (PE7 * *tv  ¹y7ž{x , ( +bcXXX *tw  ¹y7ž {y , ( +bcXXX **6(n oU*0•Wþ9ƒut ,w{q {q 3c(PE$*tv tv {x{x(ñ *twtw{y{y(ñ ***þþ*0Yþ9}þ,u{q {q 3a(PE"*tv tv {x {x(ñ *twtw{y{y(ñ ***þþ*0Zut ,oX**>(G}x*{x*>(G}y*{y*:( }z*2{z{x*:( }{*2{{{y*( *si**u|þ*"sk**u}þ*0\ u},+*Zr.8psŒ (Ø+o *:(b}~*{~*V(b}}€*{*{€*:( }*2{{~*:( }‚*2{‚{*2{‚{€*^st€„st€…*:( }ƒ*s**(}þ*"s**(}þ*~„**(}þ*~…**(}þ*{ƒ*Zr.8psŽ (Ù+o *>(t}Š*{Š*Z(t}‹}Œ*{‹*{Œ*:( }*2{{Š*:( }Ž*2{Ž{‹*2{Ž{Œ*^sŠ€sŠ€‘*:( }*~**(þ*~‘**(þ*{*Zr.8ps (Ú+o‘ *01.þ, þ,{ { 3*Y**þ,**:¥†o‘*0B^¥† þ,%¥†þ,{ { 3*Y**¥†þ,**0þ, (3 * **6(n o”*0.^þ,u† ,{ { þ**þþ*0*.þ,þ,{ { þ**þþ*0_u† ,o—**Šsš€•sš€–sš€—*:( }”*~•**(£þ*~–**(£þ*~—**(£þ*s¥**(£þ*{”*Zr.8ps’ (Û+o“ *>(š}œ*{œ*:( }*2{{œ*þo &}ž}¢}¡}£}Ÿ}¤} *"{ž*"{¢*"{¡*"{£*"{Ÿ*"{¤*"{ *0@arD;ps” (Ü+ sT |ž(-¥|ž(.¥sZ {¢þ(Ý+*0Ûo &}§}­}°}¨}©}«}ª}¯ }¬ }¦ }®}¥sV  (Þ+}±sX  (Þ+}²(+ sZ s– }³{­{°s4T}´{­{°{´s\ s>}µ*0 c(— (˜ sd  rT;prv;p (°+ {©(™ r–;p(š þ($¥sj sl (ß+Þu , oâ &Ü&Ü*-Gt0"d(—¥ ($¥sr st (Î+*0fs|  rT;pr ;p(°+ s› {³ oœ -"(6 {³ o  Þ#(ƒ Þu , oâ &Ü&Ü*Gd0RgsŒ  rT;pr¾;p(°+ ($¥s” s– (à+ Þu  , oâ &Ü&Ü*:r($¥s¢ s¤ (á+*0 Ów(Òz ¼@· (ž  (}?(‹s¦  oà 9q(Ÿ (  (ˆ 9X(Ÿ (  (¡ (a>E´8Ntf  {0#(¢ ,á {0#  (£ (‡Q3É (£ tÂ{(0  u¹, t¹{ 0(¤ (n+& t¸{0{à/{â/(n rR9p (¤ (¥ (O>8¢tg{2#(¢ 92ÿÿÿ{2#  (£ (‡Q@ÿÿÿ (£ tÂ{(0 8Iÿÿÿtc{+#uÚ9åþÿÿ{+#tÚ{70rR9p{à/{â/(n(¤ (¥ (O> {­ (² ,b($ {­{¨(c  (µ ( Áo+Á,(?¥Y(@¥sZ (e*(J (8 *(H (8 *(H(c*(H(c*0 s¨ þ(â+*0 1{ž{¢{¡{£{Ÿ{¤{ s¦ *0µzs§ s® {«(ã+(¨ s§ s° {«(ã+(¨ -9-{ª(´Ss© +D(ª (« (ª (¬ s© +! (ª (« (ª (¬ s© {©(¥s­ *Bs² þ(ä+*0 p‹(—¥ s´ (3 {²+{±(å+ (æ+(ç+ (® 9Ä  (¯ oº(° (a>E!M-D(± (² s¶ s¸ (è+(ä+{­sº þ(é+*(y*(° tj{6#(³ 9˜{6#-(± (² +‰(´  (µ  (± (² (¶  {µ {­ {°   s¼   ( >{­s¾ þ(é+*:=ÿÿÿ(± (² 8ôþÿÿ(° t\-(± (² 8Ìþÿÿ{!#(· (µ  (± (² (¶  -+þ, (w*{­oÆm{U;|\;(¶ioÆmom(•^ oÆm{U;|\;(¶i(¤i3o (¸S3e tX{Þ0,S{Þ0(¸ {Ý0(k^{­{°(ºH (H, +(°S+ {µ {­ {°   sÀ  ( >{­s þ(é+*09Ž{¯ sÄ ¥×(ê+(ë+ (ì+þsÆ (í+s¼ *0Õ‘(E¥o¾ (½ þ, Žiþ+,+ sÈ (î+ 9’ (¿ (À  (¿ (Á {B5(a],f (¿ (À  (¿ (  (¿ (Á  (¿ (à  (¿ (Ä {µ( >  sÅ (Æ **0 Ç•(—¥ o¾ (Ç (½ þ, Žiþ+,,(*(Ÿ*(¤{C9›{C(h (È (§- sÉ +s  (Ê (Ë (   (Ê (Ë (   (Ê  {¥ sÌ oÍ , sÉ +   sÊ  (î+sÉ +sÉ (Î  (Ï - ,(›*(Ÿ*(¿ (À (Ä ( (Á (à {µ{­{°sÌ ( >{­(Í {­(Ï o¼sÅ (¡*0 ”—(—¥ o» (Ð (Ñ (Ò (Ð (Ó {µ{­{° sÎ  (>{­(Í {­(Ï   o¼{i# sÅ *0m˜(—¥ o» (Ð (Ñ (Ò (Ð (Ó {µ (>{­(Í {­(Ï {i# sÅ *0 ¨sØ  rT;prØ;p(°+ sÚ  sÜ sä ob 2 ob +!o^ .3X+ -+Y(¸9e(Ô (´E›¢Å Y(A   ,I   (Õ   2 o^ .þ+, Yo^ .þ+,  (Õ  +  , (²(Ö (ï+þ+, ÝØ9Ž(d Y(A   ,i   (Õ o^ .3S (Õ   Y(A -(y+O(Õ X(c  oð++(y+ oñ+,K-1(× (ò+(— (˜ (c sØ + (× sØ + ([ sØ (b (c (}EYR9E,f(Ù oË(¯-(Ÿ+B  (Ú (Û !!(-¥Y !(.¥  oÀ+(ŸsÜ "(£3XtŠ##{œ%%(  %(Ý %(Þ (ó+$$,#(] þ,$(Ÿ %%(Æ Ý»(£EA:"(ß ,(] þ, Ý‚(C  Ýe Ý^ ÝW ÝP ÝItƒ&&{Œ'&{‹((à ('sÅ (Æ Ýt‚)){Š%%(  %(Ý %(Þ (ó+$$9;þÿÿ$(Ÿ %%(Æ ÝÇ ÝÀ(Ô tW**{=(„EQ£*{>(b (? % 23oô+¥oõ+¥ã32(ö+%oã ÝD*{>(b (? %45oô+¥oõ+¥ã54(ö+%oã Ýò*{>(b (? %sì 67oô+¥oõ+¥ã76(ö+%oã Ý(Ô tX++{?11uO-w1uP:õ+{?tQ,,{2(c ,{2(b (@ %%(  -%(Ý (%(Þ '-('sÅ (Æ Ý+{?tO..{0(c .{/'.{0(b 'o¿$$-A(@ %%(  -%(Ý (%(Þ /-(/sÅ (Æ Ý„$ Ý|+{?tP{1([ (\ (@ %%(  -%(Ý (%(Þ '-('sÅ (Æ Þ" 8»ùÿÿu 00, 0oâ &Ü&Ü*AÏî0l(a>E**05ª,/ (h sî  (÷+,sñ þ(ä+***{¶*no &só sä }¶*0(¬uŽ , {¶{¶¥çþoå **0%®{¶ sø sZ ¥ç(ø+( *{·*{¸*{¹*{º*{»*{¼*{½*ò( }·}¸}¹}º}»}¼}½*Jþ, (D **6(n oÒ*0°°þ9žu 9{·{·(ñ 9w{¸{¸(ù+,a{¹{¹(ù+,K{º{º3;{»{»3+{¼{¼(ú+,{½{½þ(û+********þþ*N{·{·(ñ *0i²{·{·(ñ ,{¹{¹(ü++,<{½ {½ ,& , (ç (ç þoè **þ**â(Ö,{¸{¸(ü++,{¼{¼þ(ý+**6{·(õ *0óµsé {¸ Œé,+ r¨9ps‚ zŽi  Y2'£mr<poê XX3Ùo& sé {¹ Œé,+ r¨9ps‚ zŽi  Y2'£mr(<poê XX3Ùo& r2<ps (þ+  sþ {·þ(+*0¨þ9–þ9‹{·{·(ñ 9s{¸{¸(ÿ+,^{¹{¹(ÿ+,I{º{º39{»{»3){¼{¼(+,{½{½þ(+********þþ*0°u , þoÚ**0J·o &}¾}¿{¿ , (ë (ì oœ+s }À}Á*&oæ*"{¾*.{¿þ*0 4.( ( (í (.o+s þo+*0 g¸( ( s  rÌ:pr ;p (°+ ( (s o+Þu , oâ &Ü&Ü*,K0Z¹( ( s"  rÌ:pr¾;p (°+ s& o+Þu , oâ &Ü&Ü**>0iº( ( s.  rÌ:pr†<p (°+ rR9prsAs2 o+Þu , oâ &Ü&Ü**#M0 i»( ( s<  rÌ:prœ<p (°+ (H(cs@ o+Þu , oâ &Ü&Ü*,!M0E½sB  rÌ:prÊ<p(°+ ìsD o+ Þu  , oâ &Ü&Ü*-0?¿{Á-5}Á{¿ ,# (ë (ï }¿sF o)***0„Â{¿ ,w (ë (ì ožþ,(ë (ì *,; (ë (ð  (ë (ï  (ë (ì sñ þoò *rö<p ksó z*Vs÷€Âsø€Ã*( *~Â**u“þ*~Ã**u”þ*sù**u•þ*0Ä u•,+ u”,+*Zr.8psô ( +oõ *0SÆþ,J  u“-u”- u•- * *t•  ¹y7ž{Ç( +bcXXX **6(n oò*0Çþ9~u‘ 9ou•,+ u”,+ u•,+ u”,+ 3/u•,%t• t• {Ç{Çþ( +****þþ*0‰Èþ9wþ9lu•,+ u”,+ u•,+ u”,+ 3,u•,"t• t• {Ç {Çþ( +****þþ*0Äu‘ , þoõ**(é*(é*:(é}Ç*{Ç*:( }È*:( }É*:( }Ê*2{Ê{Ç*s *:( }Ë*{Ë*&*Zr.8psö ( +o÷ *s *:( }Ó*{Ó*&*Zr.8psø (+où *0 Žsú }Õo &}Ô{Õ(û (Ë}Ö(* sH sü }×(* sJ sL sN (ý sP (þ (* (V sÿ }Ø}Ù*0]Éþ{Ù/ (Ï +sR  rÌ:prµ=p(°+ {ÖsX o+ Þu  , oâ &Ü&Ü*.E0\Éþ{Ù/ (Ï +sZ  rÌ:prÏ=p(°+ {Ös` o+ Þu  , oâ &Ü&Ü*.D0[Êþ{Ù/ (Ï +sb  rÌ:pr÷=p(°+ {Ösf o+ Þu  , oâ &Ü&Ü*.C0]Ìþ{Ù/ (Ï +sh  rÌ:pr>p(°+ {Ösl o+ Þu  , oâ &Ü&Ü*.E0 cÍþ{Ù/ (Ï +sn  rÌ:pr+>p(°+ {Ös o+ Þu  , oâ &Ü&Ü*.K¶þ{Ù/ (Ï +{Ös„ o+*0qÎþ{Ù/ (Ï +s†  rÌ:prK>p(°+ {ÖsŠ o){ÖsŒ o% Þu  , oâ &Ü&Ü&*.*X0GÐþ{Ù/ (Ï +{Øo ,  ( ( o£, o ***0]Îþ{Ù/ (Ï +sŽ  rÌ:pr{>p(°+ {Ös o) Þu  , oâ &Ü&Ü&*.Dªþ{Ù/ (Ï +{Ös’ o%*Žþ{Ù/ (Ï +{Öo'*Žþ{Ù/ (Ï +{Öo**0ÂÓs”  r—>pr§>p(°+ {×o {¸(+{¹(+{·(õ {»{º(ª (  ( oœo¡s– (+o s˜ (+s  Þu , oâ &Ü&Ü*§0KÔ{Øo -* ( (  ( ( o§  o¥s  (  *0Õ{Øo  ( o¤*0 —o &s }Ú(, sš sœ sž ( s  ( s }Ý(- s¢ s¤ s¦ ( s¨ ( s }Þ(+ sª s }ß*"s *V{Ýs o *V{Þs o *:{Úo *>{Úo *0'×{ßs o , ( ( **:{Úo *0T{Úo {ßo {Ýo {Þo  +( ( {Úo X 2â*>{Úo *>{Úo *0 ¨Ù{Ó {Ú(¤o+ u“- u•-{Úo *t• {Ç þ~à/ ( +þ~à/ ( +~ÜX€Ü{ßs  s  o! *Fmo& *J{Úo *>{Úo *:{Úo *:{Úo *nþ~à/ ( +~Û*nþ~à/ ( +~Ü*0PÚ(" (# ($ (" (# ($ (ñ , (Ö+, (ñ **0!Û(% (& {·{·(ñ *B{Úo *0Dþ~à/ ( +þ~à/ ( +~ÛX€Û{Úo *6€~&*0Üsß s_ *&(1 *0 |ß(( þ,( (%¥sû£ (¤(+&+(%¥(  sc ( Þ"t (¤(%¥(¥o+ Þ*WX"Ž() (+-() (\ (* **0Päsn  (+ ([ s+ (% sp  s† (+() þ(+*Ro¬¤1 o+&**0 Qòrß>p(8r'?p(8(> (ü (, (- (.  (m(/ (0 rY?p(8(¤(¡£s” o'(+(+ Þ$t (¤ ($¥(¥o + Þ  oé, o+&+o- (6 +oì,s–  (!++s˜  ("+  (> rs?p(8 (o o- (6 + oê, o+&+ r­?p(8(ƒ¤(¡£(c (%¥ ( sš  (#+ s ”(3 (4 (5 (6 o›(6  rÁ?p(8 s7 Þu , oâ &Ü&Ü Þu , oâ &Ü&Ü *ALw"™$“v¾40 Uú(‹ (Ë(í(Í(ø(Ë(îse  sˆ ($+ sUv ([ s+ sŒ (,(/(-(%+()() (+ {T - (|+o9 &sŽ  (&+  (:   (;   (] ,0   (^ (1(%¥sû£(¤(¥+s  (+ (5 Þ-t(¤(%¥(¥oj o'+ÞrÙ?p{ (\ (/o9 &oÞ-t(¤(%¥(¥oj o(+Þ(< (= (> {Y - ok þ+,oj o+&+(%Þtoj o)+Þ o? s’ (µ+oi {Y - (6 +rë?p(8oÀ9r @p(8s ” s›o¦(@ (A (B (C (D (E o›s7 + (7 (F (G (H (I (J (K (L sM sN *(MÛ(-y †- 0 (ýsœ  (O sž s  (8  *0Éþ(b {/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{>5{?5{@5{A5{B5{C5{D5sb(b”(d”(©h(§h(¢h(°(P (Q (Q (Q (Q (Q ob*n(R oS (R oT (U *~Ö*0=ÿrK@p(’À(À([ (\ (\ (\ ¥7 rS@p(p+(` *Voû- oýþ**0B{V^ u/,t/ {N^þoV *rW@p(%¥s¤ (¤(*+*0Ó(> 9Ž(ö (À rc@po oÿ,+{B8,+ ,(Àr£@p( (? (W +rµ@p(²(`(X (Y  s¢ (++sZ Þ6(X ([ sZ Þ$t(¤($¥(¥o,+ Þ*¬­$"(> *0 (6( s\ (] (^  o_ s` (Àrc@po oÿ,+{B8,+,:(a (b  sª (-+(ÀrÅ@p( (W +{B8,+,([ *oþ,+oÿ,$(b (a  (,(oc s` +  (a  (b  (÷([ (d *r(> , (.+*([ *~×*~Ø*~Ù*06 s¬ (D (/+ (E (f s® ¥7(0+þ(1+*0_ {F8 on{£;ox² r×@poH²oI²oJ²oK²oL²(P² s° (F ¥7(0+þ(1+*0sr÷@p{€(  rQAp{€(  r§Ap{€(  ,> (g oø,'(.(&¥sû£(¤(¥oø+ +oø- oö+k(d oöþ, oö(c   (2+þ+,'(/(&¥sû£(¤(¥oö+(c - o÷+k(d o÷þ, o÷(c   (2+þ+,'(0(&¥sû£(¤(¥o÷+(c (² *0í(h oi éý.&(h oi ( oj ok ol þþ+,&(h oi ( oj ok om þþ+,!( rýApsn oo (V + (p (< sÐ sÒ (8  (q (r (s (t (u (v (w (v (x (y  (z  (v ({  (v (|  oè, o+&+(…¤(¡£ (I  (6  {j=sÔ (3+ (ØsÚ (µ+r Bp{€( ,G(} oùu¨, (~ +$(,(%¥sû£(¤(¥+r_Bp(8(¤(¡£oñ,o\s4T (Œ +r‰Bp(8oóþ,  (r +rÅBp(8  sÜ oó(4+rãBp(8Þu , oâ &Ü&Ü&    s€ s (‚ Þ u , oâ &Ü&Ü*A4ƒ‡:–Ð0ÿ#{ƒ („ (… {ƒ („ († {ƒ (‡ {ƒ (ˆ {ƒ (‰ {ƒ („ (Š {ƒ („ (‹ {ƒ (Œ {ƒ ( {ƒ (Ž  {ƒ („ (  {ƒ (  {ƒ („ (‘  {ƒ („ (’  rCp(8on{¬;(ˆ`  (@ (“ (” (œ¥(• ,o{ (– (5++,r/Cps— (6+&+(‡¤(¡£ (:o\oú, (d +; oHoµo˜ ,(™ { {ƒ^+rR9p sÞ (;(š (›  Œù¥-+ (6 rkCp(8 s` (7+o,W!þ/!sà (8+ (ÀrCp( "" (W ([ ([ sœ + sœ ( #   #sZ   sž sŸ s  (¡ Þu $$, $oâ &Ü&Ü*Af|â~Û*€Û*~Ü*€Ü*0Ø2{¢ (£ (¤ {¢ (¥ {¢ (¦ {¢ (§ {¢ (£ (¨ {¢ (£ (© {¢ (ª {¢ (« {¢ (£ (¬ (­ {¢ (£ (®  {¢ (£ (¯  {¢ (°  {¢ (£ (¬ (±  {¢ (²  {¢ (£ (³ {¢ (£ (´ (L ,(µ o¶ &+{@8 oû, on{«;+,!($(%¥sû£(¤(+&+ (9+ rCp(8(‰¤(¡£ sæ  (<rµCpob(N ,(B   {±;(=+(@   {±;(=s· sè {€(:+(¸ (¹ {~{së5oß$oº 1 (†°+(…°   Œ:¥; (;+! Œù¥-+ (6   ! s» s¼ (½ Þu "", "oâ &Ü&Ü*A.»0 4{¾ (¿ {¾ (À {¾ (Á ( {¾ (à {¾ (Ä {¾ (Å {¾ (Æ {¾ (Á (Ç {¾ (È (‹¤(¡£ rïCp(8(<• rDp(8 (– Œù¥-+(6   s» sÉ (Ê  Þ u   ,  oâ &Ü&Ü *ˆcë0 á7{Ë (Ì {Ë (Í {Ë (Î (Ï {Ë (Ð {Ë (Ñ {Ë (Ò {Ë (Ó {Ë (Î (Ô {Ë (Õ sÖ o×  Þ%t (¤ ($¥(¥o<+ Þ  (6   sØ sÙ (Ú *}‘%0 Ž<{Û (Ü {Û (Ý {Û (Þ {Û (ß {Û (à {Û (á {Û (â (ã {Û (ä r9Dp(8(¤(¡£( Á  sê (=+ (N   ,$   (æ   sç oè &+  Œù¥%+(ì r]Dp(8 (í Œù¥%+(6 o,I(R oé +-£-rDpsê (>+oë oì &XŽi2Ë+r…Dp(8 Þu , oâ &Ü&Ü &*‚îp–(J (?+(@+(A+(B+(C+*(í *0$>rDpsê (î (D+(þoì *’(ð }á}â}ã}ä*0 ${á{â{ã{ä(´*V(í }å}æ*0 W@(î {å{ö  {å{D  {å{H  {å{E   sW {æ(E+(î oñ *’(ð }ç}è}é}ê*0 ${ç{è{é{ê(´*r(í }ë}ì}í*0 ê@{ë{ {ë{ {ë{ {ë{ {ë{ {ë{ {í(Õ,{ì{ío®¤*{ë{ {ë{ {ë{ {í(Ô,V(î {ë{ö  {ë{D  {ë{H  {ë{E   s[ {í(E+(î oñ **’}î}ï}ðr•Dpo¯¤&*0šC{ð(ò {î{I 2sU (F+&{ïo+&+{îsY (F+&{ð{ð(ò X(ó {ïT u+ ,{î{' -**(ô ,+åu‰ ,+Ù*Z{îs] (F+&*6{ð(ò *:(õ }ñ*B{ño¬¤þ*¶rÛDpo¯¤&}òsö }ósß }ô*º{ô{ô(ò X(ó {ós÷ þoø *0 E{ó sl ¥T(G+þ(H+*Z{ós÷ þoø *0‹J{ó ¥T(I+ ¥Toú oï ,6oû (ü (ý , o®¤+Îo­¤+ Þu , oâ &Ü&Ü &{óþoþ * Bb0K{ò (1 þoi *6{ô(ò *(ÿ *"(ü *:( }õ*0NL( Áo'Á, Þ9{õ{ö (U Þ%t (3(%¥sû£ (¤(J+ Þ*&'%:( }ö*B{ö(4 *( *0M{ë  ($¥(K+þ*( *"{d *( *"( *:( }÷*n{÷{ë {ì o“*:( }ø*0N( (  {øoŽ*:(  }ù*:{ùs  *(  *0P(  ( s| þ(L+*( *"(  *( *>(¤o­¤*( *>(¤o®¤*²( }ú}û}ü}ý}þ*0 øU(Ú9Ý{ý(%¥s ( ( (l{û(g sr st sv {â (M+ ¥[(N+(O+(P+ {úsx (Q+{úsz s~ {å (R+ ¥\(S+(T+{þs€ {á (U+(+s‚ {ç (V+s„ {æ (V+*{ü(4 *:( }ÿ*"{ÿ*:( }*>{o *V( }}*0nVo sŠ rEp([ (\ (W+,,(4(%¥sû£ (¤(¥{o’*{{() (\ (* *( *bo rEpo o *:( }*V{(%¥o“*:( }*"{*r( }}}*0 _W( ( (õ {{rÙ?p([ (\ {(ï -* (h s ( *( *0\Z(  (! r'Eps— ( (X+&r3Eps# ( (Y+o$ &r 8ps— ( þ(X+*(% *&(*(& *"(  *:(' }*:{(1 *(( **(( *¦(N(!("{ , (***²} } } } } () *0d{ YE++5+={ {B8- { þ+,} { } *+} } *&} *¢{ E + +++**"{ *0 { { { s¢ *:(* }+ *j{+ Œ¥cþoc *(, *.(¡(*( *Br;Ep(ñ þ*:(- }*0 9[{{F8 on{£;(_»(. (8±(X (b°så»*:(- }*0 -{(j²(_»(. (8±(X (b°så»*&s³ *r( }}}*{*{*{*&*Zr.8ps/ (Z+o0 *0š\þ9†þ9{&  (y {{/+þ /*1*(y {{([+/*1*(y {{þ([+**þ,**B¥Èþo¹ *0š]¥È þ9z¥Èþ,m&  {{/+þ / * 1 *{{([+/*1*{{þ([+**¥Èþ,**0^^þ,U &  ¹y7ž{(¾+bcXXX ¹y7ž{(¾+bcXXX ¹y7ž{bcXXX **6(n o¼ *0\_þ,MuÈ ,A&  {{3+{{(Á+,{{þ(Á+****þþ*0V`þ,Gþ,?&  {{3){{(\+,{{þ(\+****þþ*0auÈ , þo¿ **s1 *:( }2 *{2 *&*Zr.8ps3 (]+o4 *:(5 }*>{o6 *:(5 }*>{o7 *:}( *B{(^+&*(9 *NsÊ þË s: *:(; }*:{(< *(( *0od{T  -+ (Õ ( s= oo {G ,=(h (W (< (R sÆ sÈ sÌ (_+ sÎ (`+**:(( }*R{- (&**ò}}}}}}} (? *0&{YE +8Ö8©8™8å{¥ko@ }}{oï 9—{oA }{{f=¥moB }}{oï ,0{oC }}{} *}+Ã}{(a+}}8Yÿÿÿ}{(b+}}} *0¥e {YE+8€{E ++5++++)}{(a+}{(b+}}  Þ t   Þ&8fÿÿÿþ,z*lˆ ê{E +++ +++****"{ *0 {sÔ *:( }!*"{!*V( }"}#*Z{#{"(u *:(E }$*0 {$(+*0”}%}&}'}(})}*}+}, }- }. }/ }0 }1}2}3}4}5}6(F *0f{5YE  !'-39+<8”8„888ý88 8„8t8 'ÎFx(e ¥ooG }-}5{-oï ,0{-oH },}5{,}6*},+à }5{-(c+}-{%oI {&oI X(e ¥ooG }/}5{/oï ,0{/oH }.}5{.}6*}.+à }5{/(c+}/{%{&(d+¥;oJ }0}5{0oï 9£{0oK }'{'{V^}({(u/9D{(t/}){){N^}*{*oV }+{+Ži(e ¥ooG }2}5{2oï ,0{2oH }1}5{1}6*}1+Ã}5{2(c+}2{+¥ooG }4}5{4oï ,1{4oH }3 }5{3}6*}3+Â}5{4(c+}4}+}*þ/})+,¥+ rWEps\ z&}(}'8Mþÿÿ }5{0(e+}0 }5}6*0"e {5 YE+8ü{5E  !$'*+*8•8z8s+Y+U+;+$+ +++q}5{4(c++}5{2(c+ }5{0(e++. }5{/(c++ }5{-(c+ }5}6 Þ t   Þ&8éþÿÿþ,z*è 0p{5E  !+!+0+++&+!++++ +++**********"{6*0+f{%{&þ/sà *:(E }7*0 {7(+*r(L }8}9}:*0 &{9{8o\{:(%¥þ(†**:( };*B{;þo%Á*0 ph{ { { (œ¥(• ,r¥Ep(>À+oo{“^þþ,od (qš(M 8o,j(d    ,(nš(M  Þ:(pš(M  Þ*t (*(&¥sû£(¤(f+ Þ    +oæs"œo"(¦™ÞCt  (ô ,-(d (+(&¥sû£(¤(+Þþ Þ$t (¤ ($¥(¥o+ Þ &*AL„#§*5ÌC0I$0Uioô,KrÍEp(= (W sN (û Þu  , oâ &Ü&Ü Þ t Þ&**! , =F ~Ú*0k-* (O on{¨;*0[zs (g+ -+, (O {±;(#(%¥sû£ (¤ (+&s (h+,(%(%¥sû£ (¤ (+&+s (h+,(&(%¥sû£ (¤ (+&+þts (o+¥7sQ s s (i+s (j+  (R   (S   s (++ s  (j+  (R  (S s (++s% (j+(S (R s' (k+s) (l+ (d+(d+(d+s+ (m+(T s- (n+s5 (o+(p+(V (W ¥x(q+s7 (r+(š°s9 (s+(t+(*±(H±¥x(q+(Z (•°{„^o)¼(d+(:±oe¼  {e^ {f^ {g^ {h^ {i^ {j^ {k^oŠ´(b° {l^ {m^ {n^ {o^ {p^ {q^sO¼([ s; (u+(b°{t^{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^sd¼s\ *–(] þ, sÿ s\ *(ð *0ú|o¾od (f²oµ(c o"(Ú°oÎs¯(§ sA {u^ ¥²(v+(w+ sC oé {u^ ¥²(v+(w+rR9prR9psZ (•°(^ (6±rR9p(J±sI (Û­{r^{s^{t^sO (v+(•°{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼{u^ ¥²(v+{r^{s^{t^(x+(•°{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼*V(Õ±(_ s] *0 @€(%¥oG²oL -@oG²(((%¥sû£ (¤(¥oG²oG²(ó þo` * (™ (%¥oSu’,+t‘{´;(a  { oG²ráEp(ñ ,(Õ±+E{z^-+oG²('(%¥sû£ (¤(¥(Õ±+ { (b s¹¾oG²oG²(_ s] o` {Ú_(c (y+(d *0 2Œs^ se rùEpr FprFpr1FprGFpr{Fp([ (\ (\ (\ (\ (\ (\ ¥7sQ (û±{Ú_sf (c (g þþ9Œ(c (z+ (c ({+(d  oG²oh ,+ oI²(Û°(i (|+, oG² oG²(ó o` 8ƒÿÿÿ oG²oj - (ô 8cÿÿÿ8]ÿÿÿr¯Fp(8¥ƒok oï 9¦ol (m (n so (p   {x{Ú_  ¥‡oq   oï ,. or  oG²os     {y(t ([ +É Þ u , oâ &Ü&Ü &8NÿÿÿÞu , oâ &Ü&Ü&þ‰sa (}+su sg þ(~+*y<µ&·Ý¾oû-oü(] þ+,(v *(õ *0,þùþ+sw þ(+*0 s *0õ”s™  {ëH {êH {ìH oö²(] þþox 9+oy (î ,6rÓFpsz ( (€+s o³o³(+&+{^o÷²{^{^uý.,, (ü·(c»+uþ.,, (ð·(c»+{^{ ^{!^{"^{#^{$^{%^ (‚+(•°{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³»*(î ,6rýFpsz ( (€+s¡ o³o³(+&+o÷², (ü·(c»+(_»(œ°(,± (‚+(•°(4±(0±(a°(?»(G±*0X–({ ,> ({ (| o} ,(ƒ+(+ s~ *( +º(ƒ+(€ s~ *"s *0»š(] 9§ (] (^ ¥²(v+ s« („+ o‚ (ƒ ,&(ƒ („ (… († s‡ +X(† („ , (ü·(c»+(_»(œ°(,±(—°(4±(0±(a°(?»(G±s‡ (ˆ (‰ (Š   {^ {^ {^ {^ {^ { ^ {!^ {"^ {#^ {$^ {%^ {&^(ü  {'^ {(^ {)^ {*^ {+^ {,^ {-^ {.^ {/^ {0^ {1^s³»  (‹ (Z (x+(x+(•°*(”°*0 s³ (v+(•°*0 ƒžþ–þ—ss (…+ o½, o¾þ+,sŒ *oû-oü(] þ+, ( þ+,sŽ *s *( **(‘ *04k(’ ,*(’ (O on{«;,(O (a **(“ *0Ÿ(’ (” {y^þ*(“ *0Ÿ(’ (” {z^þ*0L}<}=}>}?}@}A}B}C }D(• *0, {CYE +8à8¥8õ{<¥o– }B}C{Boï 9§{Bo— }={=(” }>{>{r^}?{?,P{?}@{@(˜ }A}C{A{e^}D*}Aþt}@+}?}>}=8Iÿÿÿ}C{B(†+}B}C}D*0‡e {CYE++e{CE + ++++}C{B(†+}C}D Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{CE + + +++***"{D*0  {<þts *:( }E*r{E(Áhoh ,(f²**0L}F}G}H}I}J}K}L}M }N(™ *0f{MYE +88Û8Ë8%{F¥o– }K}M{Koï 9×{Ko— }G{G(” }H{G(’ }I{H{„^o)¼¥;oJ }L}M{Loï ,;{LoK }J}M{I{Jsš }N*}J+¸}M{L(e+}L}I}H}G8ÿÿÿ}M{K(†+}K}M}N*0¥e {MYE+8€{ME ++5++++)}M{L(e+}M{K(†+}M}N Þ t   Þ&8fÿÿÿþ,z*lˆ ê{ME +++ +++****"{N*0 {Fs *(› *6(œ (ñ*0D}O}P}Q}R}S}T}U}V() *0{UYE +8Â88×{P¥ o }T}U{Toï 9‰{Tož }Q{Q(œ }R{Q(Ÿ }S{O(> ,{S(ï þ+,}U{R}V*+}S}R}Q8gÿÿÿ}U{T(‡+}T}U}V*0‡e {UYE++e{UE + ++++}U{T(‡+}U}V Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{UE + + +++***"{V*0 {O{Ps *(› *6(œ (ò*0D}W}X}Y}Z}[}\}]}^() *0{]YE +8Â88×{X¥ o }\}]{\oï 9‰{\ož }Y{Y(œ }Z{Y(Ÿ }[{W(> ,{[(ï þ+,}]{Z}^*+}[}Z}Y8gÿÿÿ}]{\(‡+}\}]}^*0‡e {]YE++e{]E + ++++}]{\(‡+}]}^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{]E + + +++***"{^*0 {W{Xs *(› *6(œ (ó*(  *0w¢(Ÿ (œ rÔGpX Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( {V^{W^{X^s ¼*(¢ *"(œ *(£ *"(” *ò}_}`}a}b}c}d}e(¤ *0&{dYE +8Ö8©8™8å{_¥¢o¥ }a}d{aoï 9—{ao¦ }`{`{…^¥¤o§ }c}d{coï ,0{co¨ }b}d{b}e*}b+Ã}d{c(ˆ+}c}`8Yÿÿÿ}d{a(‰+}a}d}e*0¥e {dYE+8€{dE ++5++++)}d{c(ˆ+}d{a(‰+}d}e Þ t   Þ&8fÿÿÿþ,z*lˆ ê{dE +++ +++****"{e*0 {_s- *(© *J{^rþGp(ñ *(ª *0 £s3 {u^ ¥²(v+þ(Š+*(« *0¥{)^ ¥Ÿþ(‹+*(¬ *6{,^oøº*ò}f}g}h}i}j}k}l(­ *0+{kYE +8Û8®8ž8ê{f¥¢o¥ }h}k{hoï 9œ{ho¦ }g{g{s^oŠ´¥¦o® }j}k{joï ,0{jo¯ }i}k{i}l*}i+Ã}k{j(Œ+}j}g8Tÿÿÿ}k{h(‰+}h}k}l*0¥e {kYE+8€{kE ++5++++)}k{j(Œ+}k{h(‰+}k}l Þ t   Þ&8fÿÿÿþ,z*lˆ ê{kE +++ +++****"{l*0 {fs; *(© *V(D {^oh þ*(© *R(D {^þoh *( *>(D þoh *:( }m*6{m{“^*:(° }n*0e(D o÷²oh ,+sE oö²(W+,*o÷²rHp(ñ ,(f²([ r6Hp(ô²*{nsG (ª­*(± *’{eZo­³o;³oü²rˆHp(ñ þ*:(² }o*0°{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]sK {o{1^oŠ´(+(b°s º*²}p}q}r}s}t(³ *0Ú¥{sYE +8Ž8{8£{p{u^¥²o´ }r}s{roï 9P{roµ }q}s{q{^{q{^{q{^{q{^{q{^{q{ ^{q{!^{q{"^{q{#^{q{$^{q{%^{q{&^{q{'^{q{(^{qsM {q{)^ ¥Ÿ(‹+(Ž+(š°{q{*^{q{+^{q{,^{q{-^{q{.^{q{/^{q{0^{q{1^s³»}t*}q8 þÿÿ}s{r(+}r}s}t*0‡e {sYE++e{sE + ++++}s{r(+}s}t Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{sE + + +++***"{t*0 {psO *{u*{v*{w*{x*{y*{z*"}y*"}z*Ò( }u}v}w}x}y}z**o &*6,( **&(ñ *0D}{}|}}}~}}€}}‚(¸ *0w¦{YE ++U8$8ú89{{oû,{|ráEpoj +,"}{|ráEpos }‚*+{{oü¥7og }€}{€oï 9Ÿ{€oh }}{|{}o¹ }~{~-%{}()(%¥sû£ (¤(+&+6{~}}{(º }‚*þ‰}}~}}8Qÿÿÿ}{€(+}€}}‚*0”e {YE+8o{E ++$+ +++}{€(++}}‚ Þ t   Þ&8wÿÿÿþ,z*[w ê{E +++ +++****"{‚*0 !§{{{|þ‰sa *’}ƒ}„}…}†(» *0û{…YE + 8¼8Î{ƒ(¼ (½ þþ9«{ƒ(¼ (‘+}„{ƒ{ƒ(¼ (’+(¾ {„{z-_{„(\ {ƒ{„{y{ƒ(¼ (“+(¾ }…{„{w{„{vs¿ }†*+}„89ÿÿÿ}…}†*&}…*¢{…E + +++**"{†*B{ƒsg *0t}À }Á } }à }Ä }Å }Æ }Ç  }È  }É  }Ê  }Ë  }Ì }Í (Î *0 7¨{Ì YE +8ë8Ž8{Á ¥ªoÏ }Ë }Ì {Ë oï 9²{Ë oÐ } { (Ñ }à { (Ò }Ä {Ä { ox²}Å (î ,*ræHpsê ( (D+{Å oG²oì &+{À (%¥{Å oG²oL}Æ {Æ -8Õ{Æ }Ç {Ç (™ }È {À (%¥{Å oS u’,+t‘ {´;(a }É {È { }Ê }Ì {É {È { {Ê sÓ {Å oG²{à sÔ sÕ }Í *}Ê }É }È þ+ }Ç }Æ }Å }Ä þ}à } 8>þÿÿ}Ì {Ë (”+}Ë }Ì }Í *0‡e {Ì YE++e{Ì E + ++++}Ì {Ë (”+}Ì }Í  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Ì E + + +++***"{Í *0/©{À {Á þþ+sÖ *0T}•}–}—}˜}™}š}›}œ } }ž(× *0zª{YE +8.8à8C{•oH¥°oØ }œ}{œoï 9ð{œoÙ }–{– (Ú (Û sÜ }—{—(Ý }˜{˜{ 9z{˜{ }™{™,V{™}š{š(Þ }›}{˜{›sß }ž*}›þ—}š+}™+}˜}—þ–}–8ÿÿÿ}{œ(•+}œ}}ž*0e {YE+8h{E + +!+ +++}{œ(•+}}ž Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{E + ++ +++***"{ž*0&ª{•þ–þ—ss *V(à }á }â *0"«(ã (ä {á {â (ò *(à *0«(ã (ä *0Œ}¡}¢}£}¤}¥}¦}§}¨ }© }ª }« }¬ }­}®}¯}°}±(å *0Ê­{°YE !+$8o8;8 8`808u{¡¥¶oæ }­}°{­oï 9${­oç }£{£(è (é }¤{¤{íH¥ºoê }®}°{®oï 9{®oë }¥{¥ (ì (í sî }¦{¦(ï }§{¦(ð }¨}°{¨{§sî }±*}¨}§}¦þ¼}¥8Sÿÿÿ}°{®(–+}®}¤}£8Ìþÿÿ}°{­(—+}­{¢{íH¥ºoê }¯}°{¯oï 9·{¯oë }©{© (ì (í sî }ª{ª(ï }«{ª(ð }¬}°(f²{¬oö²{¬o÷²(ô²{«sî }±*}¬}«}ªþ¼}©89ÿÿÿ}°{¯(–+}¯}°}±*0Êe {°YE+8¥{°E ++R+;+$+ +++@}°{¯(–++)}°{®(–+}°{­(—+}°}± Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{°E +++++ +++ ******"{±*02­{¡{¢þ¼þ¼s} *:( }²*B{²þoì *:(ñ }³*0®{³oò sƒ *:(° }´*0”°(î ,%rfIpsê ( (D+o³oì &+ {´oó sô (õ (ö ,>(î ,4r¶Ipsz ( (€+ s… o³o³(+&+**V(÷ }µ}¶*0ˆµ(ø (è (ù (ú (û (é {¶þ¼þ¼s} (˜+¥À(™+{µs‡  (Û­sÓ *(ý *0&¶{ìH {êH sþ (ÿ þ(š+*0D}·}¸}¹}º}»}¼}½}¾( *0c{½YE ++88 8ß8Ï8}½{·{¸s }¾*{¸{&^¥²o´ }º}½{ºoï 9¨{ºoµ }¹{·{¹{^(@°{¹(ø o }¼}½{¼oï ,0{¼o }»}½{»}¾*}»+Ã}½{¼(›+}¼}¹8Hÿÿÿ}½{º(+}º}½}¾*0¯e {½YE+8Š{½E ++;+7++++,}½{¼(›+}½{º(++}½}¾ Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{½E ++++ +++*****"{¾*0 {·{¸s *0\}¿}À}Á}Â}Ã}Ä}Å}Æ }Ç }È }É( *0Û{ÈYE +8‡8L888{¿¥Æo }Ä}È{Äoï 9B{Äo }À{À(ù }Á{À(ú }Â{Â{u^¥²o´ }Å}È{Åoï 9¨{Åoµ }Ã{Á{Ã{^(<°{Ã(ø o }Ç}È{Çoï ,0{Ço }Æ}È{Æ}É*}Æ+Ã}È{Ç(›+}Ç}Ã8Hÿÿÿ}È{Å(+}Å}Â}Á}À8®þÿÿ}È{Ä(œ+}Ä}È}É*0Àe {ÈYE+8›{ÈE ++L+5++++=}È{Ç(›+}È{Å(+}È{Ä(œ+}È}É Þ t   Þ&8Kÿÿÿþ,z*‡£ 0C{ÈE ++++ +++*****"{É*0{¿s“ *V( }Ê}Ë*R{Ê{Ë(ù *:( }Ì*B{Ìþoì *:(ñ }Í*0®{Íoò s› *:( }Î*B{Îþoì *:(ñ }Ï*0®{Ïoò sŸ *0D}Ð}Ñ}Ò}Ó}Ô}Õ}Ö}×( *0 ë{ÖYE +8Ÿ8ˆ8´{ÐoV¥Èo }Õ}Ö{Õoï ,d{Õo }Ó{Ó{ëH}Ô}Ö{Ô{Ñ{Ò{Ó(ù s }×*}Ô}Ó+}Ö{Õ(+}Õ}Ö}×*0‡e {ÖYE++e{ÖE + ++++}Ö{Õ(+}Ö}× Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ÖE + + +++***"{×*0 {Ð{Ñ{Òs£ *:(  }  *0¸{  {  (ú (ž+*:(© }Ù*N{^{Ù(ñ *:( }Ú*B{Úþoì *:(ñ }Û*0®{Ûoò s­ *:(  }Ü*0 ^¹(  (  (î ,2rîIpsz ( (€+ s¯ {^o³(+&+{Üoö²(ü *0L}Ý}Þ}ß}à}á}â}ã}ä }å(³ *0\º{äYE +88ò8%{ॲo´ }ã}ä{ãoï 9×{ãoµ }á{á{^ {Þ{ß(ô²}â{Ý{âo :w(î ,*rJpsê ( (D+{âo³oì &+}ä{á{^{á{^{á{^{á{^{á{^{á{ ^{á{!^{á{"^{á{#^{á{$^{á{%^{Ý{Þ{ß{á{^([ (\ (Ÿ+{á{&^(ý {á{'^{á{(^{á{)^{á{*^{á{+^{á{,^{á{-^{á{.^{á{/^{á{0^{á{1^s³»}å*+}â}á8þÿÿ}ä{ã(+}ã}ä}å*0‡e {äYE++e{äE + ++++}ä{ã(+}ä}å Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{äE + + +++***"{å*0 ${Ý{Þ{ß{às³ *:( }æ*0¸¼(û (ù (ú {æ{æ([ {u^(ý  {r^{s^{t^ {v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼s¿ *V( }ç}è*n{è{ço þo *:(° }é*:{é(ª­*’(à } } } } *0ŸÇ(ã (ä { r”Jp(8{ { (ö  { rÆJp(8(–­{ { ( + { s‰  (¡+s‹ ( { oV¥È(¢+¥Í(£+s“ (¤+¥Ä(¥+(î 9ƒ{ oV  ¥Èo   oï ,: o   {êH rÞJpsê ( (D+ o³oì &+½ Þ u , oâ &Ü&Ü &+{ { { s£ (¤+{ {r^{s^{t^{ s± {u^(¦+{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼s¹ (§+s ( ( (—­{ { (¨+(ñ ( ( { (>{ s» s½ (Û­*æH.0=Ês sÑ ¥ (©+(ª+(«+ Þu  , oâ &Ü&Ü*%02Ìs sÓ (¬+ Þu  , oâ &Ü&Ü&*01Í{€(  , (d s ( (  *( *0þ×(! (" (œ¥(• ,rKps— (6+&+{s(•° rHKp{€( r¦Kp{€( rüKp{€( , (Õ +(2+þ,od rR9p(ñ þ+,#oã (O   (n oZþ+,!(-(&¥sû£ (¤ (+&+o½, o¿+,(G (H (­++(^  oã(?oã (O   (n oZ,+oã (Q   (n oZoÏoÐ (6± (J± ooG)þ  s# (u+(b°oùo¹o~oã (Q   (n oZ,+q oe¼ ,  (} +{e^{f^ {h^(~ {j^{l^ o{o^{p^{q^sO¼([ sÍ {v(®+s$ (++(:±oùu¨, +(~ 9ý(} rNLp{€( -+(} r¬Lp{€( -+(} rMpsõ (¯+s% (& ('  °sZ (( () ?!s* s+ ¥Ù¥Ú(°+sû (8+(, (- +(, orR9p(ñ -orR9p(ñ þ+,!("(&¥sû£ (¤ (+&+orR9p(ñ - o8o-+orR9p(ñ þ,+(°,rR9p+W(»  (. r.Mp(ñ ,(/ r8Mp( ++ (. rdMp(ñ ,(/ rnMp( +rR9ps (n+!o¸oã (Q   (n oZ, (’À+ {t^"oã (K   (n oZ,+o, (Õ + @#oã (O   (n oZ,+oã (Q   (n oZ$oà%oà'','(((0 (ϳþ+&oà'',!'(((0 (ϳE+)oá,,oã(SE+þ+, (¹(&¥sû£ (¤ (±++oá*oã (Q   (n oZ,+(X {u(²+(b°" {u^ {v^ {w^$ {z^%&*) {€^ {^# {ƒ^!sd¼*0d}1 }2 }3 }4 }5 }6 }7 }8  }9  }:  };  }< (­ *0 {; YE !'+*8™8ñ8á8^8N8´8¹{1 o-k}; {2 {@8{2 {@8{“^rªMp(<°{2 {@8{Ì^(= (> (´(? (@ (A («±}< *+{5 ¥¦o® }8 }; {8 oï ,0{8 o¯ }7 }; {7 }< *}7 +Ã}; {8 (Œ+}8 {4 {t¥¦o® }: }; {: oï ,0{: o¯ }9 }; {9 }< *}9 +Ã}; {: (Œ+}: {3 þ,?}; {2 {@8{1 o{1 o{6 (Ô±}< *+}; }< *0Ãe {; YE+8ž{; E ++G+C+*+&+ + ++2+/}; {: (Œ++}; {8 (Œ++}; }<  Þ t   Þ&8Hÿÿÿþ,z*Ц 0U{; E ++!++++ +++ *******"{< *01{1 {2 {3 {4 {5 {6 sB *:(C }ú*"{ú*(D *0oØrÔGp(·hoE ŒÁ ,-u¼ , (x ¥|o¡ +o& +rR9p( sË (¼(÷»(a°s ¼*:( }û*>{ûo *(F *j(G ¥m(H sI *:(J }ü*0Ù(K (L {üoM *:(C }ý*"{ý*0Ä}N }O }P }Q }R }S }T }U  }V  }W  }X  }Y  }Z }[ }\ }] }^ }_ }` }a }b }c }d }e () *0 'Ü{d YE  !'-39?+B8<8 8¥8•888w8g8‰8Z8 {N oÒ¥7og }\ }d {\ oï 9Î{\ oh }R {R o sÏ rEp([ (\ (W+9¦{N (%¥{R {N o¹o0 (Àr*Np( (Á ( (• (f  (g  (h {N (%¥{N o¹o0( Áo.Á( Áo,Ási +U{R (• (f  (g (h {N (%¥{N o¹o0( Áo.Ási }S {S (j }T {S (k }U {S (l }V }d {U {V sÕ (¼{T (a°s ¼}e *}V }U }T }S }R 8"þÿÿ }d {\ (+}\ {Q ¥;oJ }^ }d {^ oï ,0{^ oK }] }d {] }e *}] +à }d {^ (e+}^ {P Œ¥;oJ }` }d {` oï ,0{` oK }_ }d {_ }e *}_ +à }d {` (e+}` {O oJ }b }d {b oï ,0{b oK }a }d {a }e *}a +à }d {b (e+}b {N o¥7og }c  }d {c oï 9Ð{c oh }W {W (•}X {X (f }Y {X (g }Z {X (h }[  }d {Z {[ ( Á{[ o.Á(°(m (^²(¼{Y (a°s ¼}e *}[ }Z }Y }X }W 8 ÿÿÿ }d {c (+}c  }d }e *04e {d  YE+8{d E  !$'*-0+38£8ˆ88d+`+F+B+(+$+ +8v }d {c (++^ }d {b (e++F }d {` (e++. }d {^ (e++ }d {\ (+ }d }e  Þ t   Þ&8×þÿÿþ,z*ú 0y{d E  !$+$+5+0+++&+!++++ +++***********"{e *03{N {O {P {Q sn *:(o }*B{þop *:(q }*0Þ{or sÝ *:(s }*0à{ot sß *:(u }*0â{ov sá *:(o }*B{þop *:(q }*0Þ{or så *:(s }*0à{ot sç *:(u }*0â{ov sé *:(o }*B{þop *:(q }*0Þ{or sí *:(s } *0à{ ot sï *:(u }!*0â{!ov sñ *0Œ}"}#}$}%}&}'}(}) }* }+ }, }- }.}/}0}1}2(w *0 Üå{1YE !'-39?EKQW+Z8¾8"8†8ï8ß8m8]8ì8Ü8l8\8ì8Ü8+8-}1r@Np{$(x {$(y {$(z {$({ rbNps| (³+sã  (´+s~ }2*}1rzNp{%(x {%(y {%(z {%({ rbNps| (³+së  (´+s~ }2*}1r’Np{&(x {&(y {&(z {&({ rbNps| (³+só  (´+s~ }2*{#{"r°NprÂNp(µ+¥ëo }(}1{(oï ,0{(o€ }'}1{'}2*}'+Ã}1{((¶+}({#{"r Opr@Op(µ+¥ëo }*}1{*oï ,0{*o€ })}1{)}2*})+Ã}1{*(¶+}*{#{"r’OprªOp(µ+¥ëo },}1{,oï ,1{,o€ }+ }1{+}2*}++Â}1{,(¶+},{#{"rPprPp(µ+¥ëo }. }1{.oï ,1{.o€ }- }1{-}2*}-+Â}1{.(¶+}.{#{"rnPprŒPp(µ+¥ëo }0 }1{0oï ,1{0o€ }/ }1{/}2*}/+Â}1{0(¶+}0}1{#{"ræPprQp(µ+¥ëë*}1}2*0ke {1YE+8E{1E !'-369<?BEH+K8Ê8Ã8º8±8”88p8i+O+K+1+-+++8…8}1{0(¶++g}1{.(¶++O}1{,(¶++7}1{*(¶++}1{((¶++++}1}2 Þ t   Þ&8 þÿÿþ,z*A1N 0{1E !$'*-0+0+I+D+?+:+5+0+++&+!++++ +++***************"{2*01{"{#{${%{&sõ *²}3}4}5}6}7(F *0 Ù{6YE ++r+e88ž(X ¥ooG }5}6{5oï ,0{5oH }4}6{4}7*}4+Ã}6{5(c+}5}6{3¥oo*}6}7*0”e {6YE+8o{6E ++$+ + +++}6{5(c+}6}7 Þ t   Þ&8wÿÿÿþ,z*[w ê{6E +++ +++****"{7*0 {3sû *Ò}8}9}:};}<}=(F *0 æ{<YE ++r+e8Ê8Ë(X ¥ooG };}<{;oï ,0{;oH }:}<{:}=*}:+Ã}<{;(c+};}<( Á{9o.Á{8oã (O (n oZ( ¥oo*}<}=*0”e {<YE+8o{<E ++$+ + +++}<{;(c+}<}= Þ t   Þ&8wÿÿÿþ,z*[w ê{<E +++ +++****"{=*0 {8{9s *ò}>}?}@}A}B}C}D(¤ *0 q{CYE ++t+g8Å8'8,{?¥ío }B}C{Boï ,5{Bo‚ }A}C{A(·+}D*}A+¾}C{B(¸+}B{>orR9p(ñ -,}C( Á{>oo.Á(·+}D*+{>o,{@rR9p(ñ þ+, (°þ+,1}C{>{@s (8+(·+}D*+}C}D*0že {CYE+8y{CE ++*+++ ++++}C{B(¸+}C}D Þ t   Þ&8mÿÿÿþ,z*e 0C{CE ++++ +++*****"{D*0 {>{?{@s *0kê(Íf s (¹+ ,O („ {Ã;(… ,;(„ {Ã; († (^, (… (… -(d (c **0kë(Íf s (¹+ ,O („ {Ã;(… ,;(„ {Ã; († (Š^, (… (… -(Õ (V **0kì(Íf s (¹+ ,O („ {Ã;(… ,;(„ {Ã; († (Œ^, (… (… -(g (– **0Sí(  ,D (d (²(~ Þ*t(!(%¥sû£(¤(¥ Þ **%*V(L }E}F*º{E{B8{E{E8{F{?8{Á;(i*V(L }G}H*º{G{B8{G{E8{H{?8{Á;(i*V(L }I}J*º{I{B8{I{E8{J{?8{Á;(i*0,+ (X *Ns" þ(8+*0Qï, (‡ ,Ži[+Ži+ þæs( (8+( *0 s. þ(8+*0 lh(ˆ o‰ ’%¤’%¤’(JÀ(º+ (ˆ o‰ ’%¤’%¤’(JÀ(º+(m ñ( *0Hñ(ˆ o‰ ’%¤’%¤’(JÀ(º+ s4 (»+ ( *0Lñ(ˆ r`Qpo‰ ’%¤’%¤’(JÀ(º+ s‹ (»+ ( *0 Oñ(ˆ r~Qpo‰ ’%¤’%¤’(JÀ(º+ sŒ (»+ ( *0 0sL þ(8+*0 ‹ò(ˆ r–Qpo‰ ’%¤’%¤’(JÀ(º+ ( (Ž ( ( (‘ (’ (“ (” (• (  s– (»+ (m ( *0 0(¼+(X *²}K}L}M}N}O(F *0Ù{NYE ++r+e88ž{KŽiX(d ¥ooG }M}N{Moï ,0{MoH }L}N{L}O*}L+Ã}N{M(c+}M}N{K¥oo*}N}O*0”e {NYE+8o{NE ++$+ + +++}N{M(c+}N}O Þ t   Þ&8wÿÿÿþ,z*[w ê{NE +++ +++****"{O*0 {Ks" *0¼}P}Q}R}S}T}U}V}W }X }Y }Z }[ }\}]}^}_}`}a}b}c}d}e}f(F *0-ó{eYE !'-39?EKQ+T8­888 8Š8z8°8 888w8I898ˆ{T(d ¥ooG }Y}e{Yoï ,0{YoH }X}e{X}f*}X+Ã}e{Y(c+}Y{P(d ¥ooG }[}e{[oï ,0{[oH }Z}e{Z}f*}Z+Ã}e{[(c+}[{Q(f ¥ooG }]}e{]oï ,0{]oH }\}e{\}f*}\+Ã}e{](c+}]{R9³{R}U{U(‡ }V{V(f ¥ooG }a }e{aoï ,1{aoH }` }e{`}f*}`+Â}e{a(c+}a}Vþæ}U+u(— ¥ooG }_}e{_oï ,0{_oH }^}e{^}f*}^+Ã}e{_(c+}_{S¥ío }b }e{boï 9•{bo‚ }W{W¥ooG }d }e{doï ,1{doH }c }e{c}f*}c+ }e{d(c+}d}W8[ÿÿÿ}e{b(¸+}b}e}f*0‚e {eYE+8\{eE !'-0369<?B+E8å8Ê8Ã8¦8Ÿ8‚8{+I+E+[+W+"+ +8¦ }e{d(c+}e{b(¸+8v}e{_(c++^}e{a(c++F}e{](c++.}e{[(c++}e{Y(c+}e}f Þ t   Þ&8‰þÿÿþ,z*AHe 0”{eE !$'*-+-+D+?+:+5+0+++&+++++ +++**************"{f*0?ó{P{Q{R{S{Tþæs( *0D}g}h}i}j}k}l}m}n(F *0õ{mYE +8z+m8¶8·{gib{hi`(e ¥ooG }l}m{loï ,0{loH }k}m{k}n*}k+Ã}m{l(c+}l}m{iib{ji`(e ¥oo*}m}n*0”e {mYE+8o{mE ++$+ + +++}m{l(c+}m}n Þ t   Þ&8wÿÿÿþ,z*[w ê{mE +++ +++****"{n*0 #{g{h{i{js. *²}o}p}q}r}s(˜ *0¼{rYE + +s+f8‹{oo }q}r{qoï ,E{qo€ }p}r{p(™ {p(š ( }s*}p+®}r{q(¶+}q}r}s*0‡e {rYE++e{rE + ++++}r{q(¶+}r}s Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{rE + + +++***"{s*0 {os4 *²}› }œ } }ž }Ÿ (˜ *0Ó{ž YE +8‡+z8Ÿ{› Œ¥÷o  } }ž { oï ,O{ o¡ }œ }ž {œ (¢ {œ (£ Œ¥ë( }Ÿ *}œ +¤}ž { (½+} }ž }Ÿ *0‡e {ž YE++e{ž E + ++++}ž { (½+}ž }Ÿ  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ž E + + +++***"{Ÿ *0 {› s¤ *Ò}y}z}{}|}}}~(F *0Ú{}YE ++n+a8ž8Ÿ{y(d ¥ooG }|}}{|oï ,0{|oH }{}}{{}~*}{+Ã}}{|(c+}|}}{z(d ¥oo*}}}~*0”e {}YE+8o{}E ++$+ + +++}}{|(c+}}}~ Þ t   Þ&8wÿÿÿþ,z*[w ê{}E +++ +++****"{~*0 {y{zs@ *0D}¥ }¦ }§ }¨ }© }ª }« }¬ (˜ *0 U{« YE +8 8á8{¥ Œ¥Úo­ }ª }« {ª oï 9Ë{ª o® }¦ {¦ ( }§ {¦ ( }¨ (ˆ r¶Qpo‰ ’%¤’%¤’(JÀ(º+}© }« {© {§ {¨ s@ (8+(m ñ( }¬ *}© }¨ }§ }¦ 8%ÿÿÿ}« {ª (¾+}ª }« }¬ *0‡e {« YE++e{« E + ++++}« {ª (¾+}« }¬  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{« E + + +++***"{¬ *0 {¥ s¯ *0ô}‡}ˆ}‰}Š}‹}Œ}}Ž } } }‘ }’ }“}”}•}–}—}˜}™}š}›}œ}}ž}Ÿ} }¡}¢}£}¤(F *0 ?{£YE $*06<BHNTZ`flrx~„8„8Ü8Ì8I898Ý8Í8q8a8á8Ñ8Q8A8Á8±818!8¡8‘888E8G ½ïþ(e ¥ooG }}£{oï ,0{oH }}£{}¤*}+Ã}£{(c+} (e ¥ooG }’}£{’oï ,0{’oH }‘}£{‘}¤*}‘+Ã}£{’(c+}’{‡({ {‡(z {‡(y {‡(x ( ¥ooG }”}£{”oï ,0{”oH }“}£{“}¤*}“+Ã}£{”(c+}”{ˆ({ {ˆ(z {ˆ(y {ˆ(x ( ¥ooG }–}£{–oï ,0{–oH }•}£{•}¤*}•+Ã}£{–(c+}–{‰(e ¥ooG }˜ }£{˜oï ,1{˜oH }— }£{—}¤*}—+Â}£{˜(c+}˜{Š(e ¥ooG }š }£{šoï ,1{šoH }™ }£{™}¤*}™+Â}£{š(c+}š{‹(e ¥ooG }œ }£{œoï ,1{œoH }›}£{›}¤*}›+Â}£{œ(c+}œ{Œ(e ¥ooG }ž}£{žoï ,1{žoH }}£{}¤*}+Â}£{ž(c+}ž{(e ¥ooG } }£{ oï ,1{ oH }Ÿ}£{Ÿ}¤*}Ÿ+Â}£{ (c+} {Ž ci(e ¥ooG }¢}£{¢oï ,1{¢oH }¡}£{¡}¤*}¡+Â}£{¢(c+}¢}£{Ži(e ¥oo*}£}¤*02e {£YE+8 {£E $*06<BHNTZ`cfiloru8u8r8W8P838,888ë8ä8Ç8À8 8™8y8r+U+Q+4+0+++88ý}£{¢(c+8â}£{ (c+8Ç}£{ž(c+8¬}£{œ(c+8‘}£{š(c+8v}£{˜(c++^}£{–(c++F}£{”(c++.}£{’(c++}£{(c+}£}¤ Þ t   Þ&8Ùýÿÿþ,z*Aø 0ñ{£E $*-0369<?BEHKNQTWZ8W8{8s8k8c8[8S+N+I+D+?+:+5+0+++&+!++++ +++***********************"{¤*0"M{‡{ˆ{‰{Š{‹{Œ{{ŽsL *’}° }± }² }³ (˜ *0i{² YE + + +7+;}² {° (¿+}³ *}² {± (À+}³ *}² }³ *&}² *Æ{² E + + +++***"{³ *V{° {± s´ *0(sZ þ(8+*F(X *0Ì}©}ª}«}¬}­}®}¯}° }± }² }³ }´ }µ}¶}·}¸}¹}º}»}¼}½}¾}¿}À}Á(F *0_{ÀYE !'-39?EKQW]ciou+x8Ó8Ã8=8-8´8¤8+88–8†88ö8v8f8á8Ñ8L8<8|8~{­Ži(e ¥ooG }¯}À{¯oï ,0{¯oH }®}À{®}Á*}®+Ã}À{¯(c+}¯ (e ¥ooG }±}À{±oï ,0{±oH }°}À{°}Á*}°+Ã}À{±(c+}±{©b ÿÿ`(e ¥ooG }³}À{³oï ,0{³oH }²}À{²}Á*}²+Ã}À{³(c+}³{ªb ÿÿ`(e ¥ooG }µ}À{µoï ,0{µoH }´}À{´}Á*}´+Ã}À{µ(c+}µ(e ¥ooG }· }À{·oï ,1{·oH }¶ }À{¶}Á*}¶+Â}À{·(c+}·{«(d ¥ooG }¹ }À{¹oï ,1{¹oH }¸ }À{¸}Á*}¸+Â}À{¹(c+}¹{¬(d ¥ooG }» }À{»oï ,1{»oH }º}À{º}Á*}º+Â}À{»(c+}»(e ¥ooG }½}À{½oï ,1{½oH }¼}À{¼}Á*}¼+Â}À{½(c+}½(e ¥ooG }¿}À{¿oï ,1{¿oH }¾}À{¾}Á*}¾+Â}À{¿(c+}¿}À{­(f ¥oo*}À}Á*0e {ÀYE+8Ú{ÀE !'-39?EKQTWZ]`cf+i8K808)8 88è8á8Ä8½8 8™8y8r+U+Q+4+0+++8è8â}À{¿(c+8Ç}À{½(c+8¬}À{»(c+8‘}À{¹(c+8v}À{·(c++^}À{µ(c++F}À{³(c++.}À{±(c++}À{¯(c+}À}Á Þ t   Þ&8 þÿÿþ,z*AÆã 0Ö{ÀE !$'*-0369<?BEHK+K8k8c8[8S+N+I+D+?+:+5+0+++&+!++++ +++&********************"{Á*09{©{ª{«{¬{­sZ ** ÿ_Ò*2c ÿ_Ò*6c ÿ_Ò*6c ÿ_Ò*¢% ÿ_Ò¤%c ÿ_Ò¤*0L% ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤*0 sg þ(8+*0D}Â}Ã}Ä}Å}Æ}Ç}È}É(F *0 @{ÈYE ++o+b8æ8Ö8û{Ã¥ooG }Æ}È{Æoï ,0{ÆoH }Å}È{Å}É*}Å+Ã}È{Æ(c+}Æ{Â{ÃŽiX]Y](µ o¶ }Ç}È{Çoï ,+{Ço· }Ä}È}É*}Ä+È}È{Ç(Á+}Ç}È}É*0¯e {ÈYE+8Š{ÈE ++;+$+ +++,}È{Ç(Á++}È{Æ(c+}È}É Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{ÈE ++++ +++*****"{É*0 {Â{Ãsg *0Rõ( ‰ {ýH þ, Žiþ+,rR9p*{ýH (+ (_ ¥7 (p+(` *0ö{ýH þ, Žiþ+þ*0*{U;{d;(n ,(C` {U;(/m**&sx *0.ûsz  {g:{u:o¸ ,S (d rR9p(ñ ,{g:{l:(c +7 (d rS@p( {g:{l:( (c + rR9p(c , (d +rR9poˆj,rÎQp( {g:(àj+s| s~ {ì:¥(Â+(Ã+(Ã+o¹ oÓk(Ä+(p oÒk(Ä+oº (Å+(p oÑkþ(Ä+*0#ýsv    on{¬;(q *0!(m  s~ (» (¼ (½ *0—ÿs„  {g:{u:o¸ oˆj,{g:{w:oqj(s +s† sˆ {ì: ¥(Â+(Ã+(Ã+ oÓk(Ä+oÒk(Ä+(Å+oÑkþ(Ä+*0o rÔQpo o -((%¥sû£ (¤(+&+(¾ s¿ s€  s‚    on{¬;(t (À rÜQps— (Æ+&r*Rps— (Æ+&r6Rpsê (D+oì &r€Rps— (Æ+&sŠ (» (Ç+r”Rps— (Æ+&rªRps— (Æ+Þu   ,  oâ &Ü&Ü&*wˆÿ:(Á }Ê*F{Ê(o *V( }Ë}Ì*0  oqj(n ,{Ì(F` {g:(àj+o¶j ¥oà oï ,$oÄ {Ë{ÌoÆm(o +Ô Þu , oâ &Ü&Ü &o›j¥oÅ oï ,AoÆ {Ï:(n ,'{Ì{Ñ:{Ioij(D`(‡k+¹+¶ Þu , oâ &Ü&Ü &o’j  ¥ oÇ   oï ,X oÈ   {Õ:(n ,> {Ì {ß:{Io°j, oij+ o¾jo÷²(E`(œk+¢+Ÿ Þ u , oâ &Ü&Ü *(>0nŸNíe„V(É }Í}Î*^{Í{Î(q *(Ê *n{U;{`;þ,*oßl*(Ê *.oölþ*:(Ë }Ï*–{Ï{U;{e;{U;{d;(s *:( }Ð*0X {Ð{g:{w:oqj(s o¶j ¥oà oï ,6oÄ oÆm{Ð{U;{e;{U;{d;(s + Þu , oâ &Ü&Ü&o›j¥oÅ oï ,&oÆ {Ð{Ð:{Ï:(s +Ñ Þu , oâ &Ü&Ü&o’j  ¥ oÇ   oï ,& oÈ  {Ð {Ö: {Õ:(s +Ñ Þ u , oâ &Ü&Ü*(1Bs¤3× 3<r( }Ñ}Ò}Ó*r{Ñ{Ò{Ó(t *(Ê *n{U;{`;þ,*oßl*(Ê *.oölþ*:(Ì }Ô*0_¾(™ (š {Ôr¸Rpsê (D+oì &{ÔrDpsê (D+oì &{ÔrÞRps— þ(Æ+*0 ({j= oòrR9p(ñ ,( + oò(À oòrR9p(ñ -oò s ((W+þ+,%ròRps— (Æ+&rR9ps— (Æ+&+¥ko@ oï ,N oA {g=(: s (“”P(¶S($¥(3N(”(È+(É++ªÞ u , oâ &Ü&Ü&oòrR9p(ñ - þoÍ **•[ð:( }Õ*>{Õo *(Î *jrSpsÏ (Ê+þoì *0D(R oS (R oT (U (‘À€Ör Spr(SprFSprdSpr‚Spr Spr¾SprÜSpr;EprúSprTprfTp([ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ ¥7sQ €×r¶TprêTprHUprŽUpràUprüUpr&Vp([ (\ (\ (\ (\ (\ (\ (\ ¥7sQ €ØrLVp([ (\ ¥7sQ €Ùr‚Vp(ž¥€Ú€Û€Ü*~*~*~*~*(Ñ *"(Œ–*(Ñ *"(–*(Ò *"(£–*(Ó **þ(s*0 . É8O« æ¶ ºC ¾;X , Ì ãsÔ *~*02¾oÕ ,'ob oÖ o× () (\ (* **0<(] ,3 (] (^ rºVp(  rÂVp(  +Å*0(Üs+  (¡ () *"(¤¤*0j {ß("¥ {ã( {§{ß(ñ ,+{§rÖVp(ñ ,{áoØ -{âX}â***0 Å ,N{àoÔ{àoÕ{àoÖ{ào×{àoØ{àoÓ(Õþ+ -+({àoÔ{àoÕ{àoÖ(Ô,<s¹  (— (Ù  (Ú (¤ oÛ þ(V+**0u+ ,t+(Õ£ +*0ò (nxEÀ3%LAWbp*(nxEÀòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿòüÿÿ8íüÿÿ*(nxEÀàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿóüÿÿàùÿÿóüÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿàùÿÿ8Ûùÿÿ(nx Œþ*(nx Œþ*(nx@þ*(nx9þ*(nx5þ*(nx Œþ*tx (nx ™@yùÿÿty {+C {*C (  ( ( ( (ñ , þ+9)ùÿÿ{+C {*C *0 1!oË+ (Ü 9´ (Ý (Þ (§ 9› (Ý (Þ (Ü (Ý (ß ,_(D¥(˜¥(E¥(˜¥s[ o; o: (òˆ(D¥(˜¥(E¥(˜¥s[ sà oá +87ÿÿÿ(nxEÀ\\LPXHT8üÿÿ o; o: (òˆsâ (ã 8äûÿÿ +Ë +Ç +à +¿ +»*0 %$s®  ræVp( oT (U sä s½ (µ+(¤(¡£(ÜoÉ(Ÿ+ o)  sPv sUv  (R sS   {äs\v  sÅ (Ì+ {áoå oæ  {âþsç Þu , oâ &Ü&ÜÞu , oâ &Ü&Ü Þt(¦ þ*ALEŽÓ9ºó0%(‘ -* ($ (I¥*"sè *0§2 (é {ã onsç {æ (V+sé {ç (V+sí {á (Í+ sï (Î+ (ê  (ë sñ (Ï+(Ð+¥oì oï 9koí  ¥oî   oï 9  oï   (ð   (   (š þ9í ( ¥oñ oï 9¢oò só  (ó (Ñ+sõ (Ò+(ô (õ s÷ (Ó+sù (Ó+sº(ö (n o÷ ,(¤(¥8eÿÿÿ(¤(¥8RÿÿÿÞu , oâ &Ü&Ü&8Úþÿÿ8Ôþÿÿ Þ u , oâ &Ü&Ü &8‰þÿÿÞu , oâ &Ü&Ü&¥Toú oï ,Moû (ý (ü ,{ïT(¤(¥+Ã{ïT(¤(¥+ªÞu , oâ &Ü&Ü&*Adú³­ª1Û‡|.[‰0F;rR9p(ñ ,+(‘À 9ý (h s® sã (µ+(ƒ¤(¡£ (õ s (  }àså  (Ô+- (õ s ( + (¬ o˜  {6Noø sÇ  o\  sû   ¥Ù(ù sè? ( sý (Õ+-ÞB(ú (û (ü (ý Þ$t(¤(¥o™(ý Þ{áoå -(Õ sþ Þx(ÿ    {øo. {ù {ú {ü  s²( (× sþ Þu , oâ &Ü&ÜÞu , oâ &Ü&Ü Þ%9(Õ sþ Þt(¦ þ*AdÍj7$QàE»230¶>o &}Þ}ß}às }á}â¥( o oï ,o  3+Ö+Ü Þu , oâ &Ü&Ü ob r 8po YYsZ }ãsµ }ä*A,m"{ä*6{áoå *"{â*&}à*.{âþ*0W?o¥¤-{ïT(ƒ¤s¤+ {Þ,.{ïTu( , s» þot*  (¥ **Z}årîVpo¯¤&*F{åþo´ *F{åþo´ *6{å{â*V( }æ}ç*^{æ{ç(¤ *r( }è}é}ê*š{è{é{ê{ðTs¤(¥ *:( }ë*6{ë{ä*:( }ì*Z{ì Vþ(&v*:( }í*J{ís  Œ+*V(  }  }  *0A{  {íoÖ+*0D(  }ð}ñ}ò}ó}ô}õ}ö}÷*0 1C{ö{óo½{÷s¿ sX sÁ  {ð,6{ð {õ{ð{õ( (¨  ÝÅ{óoã(SE+,{òo þþ+,{ò(×+{ñ(š þ+ ,+ {ñ(ÚoØ+¥Š{ô{ä{ñ(ë(È Þt{ô{ä(¥ Þ*A0No &ds }øds }ùds }úsÐ s }ûds }ü*"{ø*"{ù*"{ú*"{ü*†oÏ ,{øs þo **0 (oÏ ,{ùs þo **0 ±EoÏ 9¢(a>3Wt\ {!# oÆmom(¢–  s {ûo -{ûo ++ -;{ús¦ o {üs¦ þo ***2(C¥þ**o &*01F( ( (-¥e(.¥ZX, ( +X*00G( ( ( ( (¥, (ñ **^sÔ €þsÔ €ÿ*:( }ý*~þ**(Ù þ*~ÿ**(Ù þ*{ý*Zr.8ps  (Ù+o! *01.þ, þ,{ý {ý 3*Y**þ,**:¥goÛ *0BI¥g þ,%¥gþ,{ý {ý 3*Y**¥gþ,**0þ, (Ù 3 * **6(n oÞ *0.Iþ,ug ,{ý {ý þ**þþ*0*.þ,þ,{ý {ý þ**þþ*0Jug ,oá **:( }*6{{ä*(" *0.K(ý (ü ,(¤o®¤*(¤o­¤*( *>(¤o®¤*( *>(¤o­¤*:(# }$ *0 L(% (& {$ (š þ*(' *0%M(  ( (( (n o) þ*:(ÿ }*–(ý (ü (Ú+(Û+{þ(Ü+*(* *f(ý (ü (Ú+s+ *(, *0K(ý (ü {ïTs- *(. *"(/ *(0 *"(1 *(0 *"(1 *V(õ }}*j{,*{{âþ*:(õ }*F{o2 þ*04N(a(S] (P ob (“”(f(þNþ(È+*0<O{ß:{I{×:(ÿ {×: (“”( O(È+rR9ps3*0uSs (Ý+(Þ+ (4 (5 (6 (¤ (¥ (ß+(O(7 (à+(7 s  (á+þ(â+*0DT(¤ (¥ (ß+(O (7 (à+ (7 s  (á+þ(ã+*0ŒV(a>@}tj {6# (³ ,e (´ (m] ,S(³ (³ -F (9 (:  (9 (; ofmo‹j,+ ofmoŒj,(< ****0„Ws oä+(¼U (“”(f(þN(È+ s oå+ s oæ+ rWps (þ+s  ,rWp+rR9p(+rR9ps3*0hZoÆmom (? {B5 (O]($nþ,4{B5(V] (@  (A {B5(û]( *(B *0 ès{,1 {+1 (a>Eë¡ÎA™#)xNr(  9×(¸ ofm{g:{q:( k3t{ :{¬:+ rWps\ zs oç+s r6Wpoè+  ŒB,+ r¨9ps‚ z Ži  q   Y   2(    £<( ¤q X   X3Ø þ(é+*(B *t\{!#oÆm{U;{b;9€(E oÆm{U;{Z;(þ](F (G (H ,-(I s s (ê+(ë+( *( *( *t]{"#s! {B0onokþ(ì+*t_{'#{0<oÆmom(? {B5(ô](J ( *t`{(# s#  (T]o•jþ(ì+*te{.#(K ,({.#(L ozRoyR( *(  9Xþÿÿ(¸ 8|ýÿÿtg{2#(¢ ,E{2#(£ o‘Q(]o¬Q(í+o‘Q(]o§Q( *(  9ãýÿÿ(¸ 8ýÿÿtf  {0#(¢ , {0#(£ +‰(  9£ýÿÿ(¸ 8Çüÿÿtl{;#(3>8üÿÿ(B *tk!!{9#9}!{9#"!{8##"(M #oN ,(B *(· $s% $(î+(Ef%%(O &s' $&(ï+o‘Q(]o§Q( *(  9Îüÿÿ(¸ 8òûÿÿ(B *ti{4#(´S(„P''{Ë1((Q((Q(Q (R ( *:(S }*0äv{0 {0 {0 {0   u£-  u¡-+{{B5(œ^-rR9prR9psT *,7(d (ð+ r^Wps (ñ+o  sT *(d  ,rhWps (ñ+o +r€Wps (ñ+o sT *V(U } } *0 >w(V (W { { (ÿ (“”(È+( rR9ps3*V(X } } *0<w(V (W rR9p{ { (ÿ (“”(È+rR9ps3*(Y *0z(Z ([ o‡*(\ **(] *"o:‡*(^ **þo5‡*(_ *"o8‡*:( } *B{ þo *:(` }*0{{oa s *:(b }*0|{oc s *(d *0 (Q{ä/{å/(Q*(e *0~(f (g (=P*V(h }}*R{{( *V(h }}*R{{( *(i *"{å/*(j *0 (Q{ä/(Q*0#(k ,(l Þ t  Þ**  ~*~*~*~*~*0K€{k Ži3£q{frŠWp(ñ +,{i{jq{ls@**0B(è ( (‚ ((é ( (ò+(a>þs@*0 ~„(a>E~Æ8""-Q¹ã(  ,(à (n 8h(a>E ((à 8õ(à (n 8ã(à 8Ø(à 8Ítf {/# {0# sH (ó+8£tg{1# {2# sJ (ó+8v(à (n 8d(à 8Y(à 8Nta{)#{@0{?0(ñ](¬ ,(à (n 8(à 8t\{!#oÆm{U;{Z;(¬ ,(à (n 8Ë(à 8Àt]{"#  {B0on  {Ì:{Æ:Žiþ-(à (n 8(à 8tt`{(#  (T]o•j(o þþ,(à (n +=(à +5te{.#  (ô+  opR,(à (n +(à (õ+ŒP,+ r¨9ps‚ zŽirY2(£Z(0 ¤rXX3Øþ~p/ ( +~nop *0I† þ~p/ ( +~noq sr (s ,(t *(1 *¾(ô - % ¤ou r 8p( *rR9p*0c‡{ë ( ¥ {ë  (%¥(K+þ,{ë  ($¥(K+þ+,{ë  (&¥(K+þ+ ,**0|Š (v {d  {ì  {e (ñ ,~w +{e {f (¿E'NŒšÌr(3 {g (3 ( („( 8½(3 {g (3 ( (…( 8–(3 {g (3 ( (†( +r(3 {g (3 ( +X{g (3 +J{g (3 (‡( r 8p( {h (3 ( +(3 {g (3 ( % ¤ox (×(÷( (‚ (*r($¥s‚ s„ (Î+*0…Ž(a>Eê¶vD(c*tg {2#(¢ ,ä{2# (£ (‡Q3Ï{1# (N(c*tf {0#(¢ ,¨ {0# (£ (‡Q3“ {/# +Âte{.#(K 9qÿÿÿ{.#(L uñ9Wÿÿÿ{-# 8‚ÿÿÿtd{,#u91ÿÿÿ{,#oòR(N(c*tc{+#uÛ9ýþÿÿ{+#  oùQ(N(c*09{­(  , (¸ ofmomj(L(c*(7 *0 (Í  (Ï  o¼ (ˆ þþ,N{¥(D¥(˜¥(E¥(˜¥s[ sÌ oÍ ,({* sy þoz *(y*0»‘(a>E**tj {6#(³ ,ç{6# (´ {B5(^,{B5(e`þ+,µ(´ *0£‘(a>E**tj {6#(³ ,ç{6# {B5(´ (^,Í(´ *&s{ *0 ’ s| *0‡“(} (~ (  (ˆ þþ,þ+,7 od (ö+o€ (ˆ þþ,s (‚ **(÷+(ä+s (‚ *>oÁ*6oÂ*09ob 2* 2o^ (ƒ +,Y +â2(V **^s„ s (ø+*05”þ(?  (}3Ut‚ {Š(  (ˆ þþ,4{Š(Þ {Š(  {Š(Ý  sÅ (Æ *(  (Ý (Þ (ó+,Q(Ÿ (  (ˆ þþ,7(Ÿ (Þ (Ÿ (  (Ÿ (Ý  sÅ (Æ *(£3FtŠ{œ(  (Ý (Þ (ó+,(Ÿ (Æ **0¿Í ¹y7ž{½(ù+bcXXX ¹y7ž{¼(ú+bcXXX ¹y7ž{»bcXXX ¹y7ž{ºbcXXX ¹y7ž{¹(û+bcXXX ¹y7ž{¸(û+bcXXX ¹y7ž{· , ( +bcXXX *0­rÀWp() €rîWp() €rDXp() €r|Xp() €r¾Xp() €s… €n€p(·€€Û€à€Ü€às– €s˜ €sš €sœ €*(† *0f•{k ŽiŒ[,+ r¨9ps‚ zŽi m Y2#£q{f¤mXX3Ý s‡ *:(ˆ }*b{(‰ (Š (G>*:(ˆ } *b{ (‰ (Š (I>*0\}!}"}#}$}%}&}'}( }) }* }+(‹ *0 >{*YE +8î8Á8±8ý{$¥]oŒ }'}*{'oï 9¯{'o }&{"{!{#{%{&(2 ¥_oŽ })}*{)oï ,0{)o }(}*{(}+*}(+Ã}*{)(ü+})}&8Aÿÿÿ}*{'(ý+}'}*}+*0¥e {*YE+8€{*E ++5++++)}*{)(ü+}*{'(ý+}*}+ Þ t   Þ&8fÿÿÿþ,z*lˆ ê{*E +++ +++****"{+*0+{!{"{#{${%sL *:( },*B{,þo‘ *:(’ }-*0)—( ( {-sZ o“ sR *(” *0 E˜(• (° (· (² (µ (¶ (±  s©*(” *0 E˜(• (° (· (² (µ (¶ (±  s©*(– *0Z™(— (˜ (™ (š (› (™ (š (› 3 þ+, (ñ **(œ *&(ÿ=*:( }.*B{.þož *:(Ÿ }/*0›{/o  s^ *:(¡ }0*0{0o¢ s` *r(£ }1}2}3*01ŸrYps¤ (þ+ sb {1{2{3þ(ÿ+*(¦ *"oË*:(§ }4*:{4oÄ*0L(¨ }5}6}7}8}9}:};}< }=*0  {<(ž {;(c (}? (‹{5{6{7{8{9 {:oà 9¨(Ÿ (Þ (Ÿ (  (Ÿ (Ý {5sf {6(+{7{9oÅ {=,{5sh  (ä++  {5{´ {5{¦{5{®(,*(.*(ª *"(-*:(« }>*N{>{d (4 *( *"( *V(¬ }?}@*0n¡{?{¬ ,: (é {@sn sp  {â (M+¥[(N+(++(­ (® - ( (*(5 *(¯ *^(û( (‚ (*:( }A*B{Aþož *:(Ÿ }B*0›{Bo  sv *:(¡ }C*0{Co¢ sx *r(£ }D}E}F*01ŸrXYps¤ (þ+ sz {D{E{Fþ(ÿ+*(° *0¢(± (² *r(³ }G}H}I*0 {I{G{H(è *²(¬ }J}K}L}M}N*0­£ {N(ž  (}?(‹s~ {J {K{L{Moà ,R(Ÿ (Þ (Ÿ (   (Ÿ (Ý  {J{´   s€  (+(*( (*(¯ *^(û( (‚ (*:( }O*B{Oþož *:(Ÿ }P*0›{Po  s† *:(¡ }Q*0{Qo¢ sˆ *r(£ }R}S}T*01ŸrXYps¤ (þ+ sŠ {R{S{Tþ(ÿ+*(° *0¢(± (² *r(´ }U}V}W*0É(a>EB sµ *{W-{U{V(¶ sµ *{U{V{Wsµ *{V-¶{U(¶ {Wsµ *(· *0¥(¸ (¹ (º s *²(» }X}Y}Z}[}\*0§ {\(ž  (}?(sŽ {X {Y{Z{[oà 9È(Ÿ (  (ˆ 9©  (ˆ (ˆ - (¡   þ(ç *s’ sµ (+  (º   (¹   (¸ ,B ,@ (¼ (a> 3(¼   þ(ç * , (¼   þ(ç ** ,ú (¼  +å**(½ **:(¾ }]*B{]þo¿ *:(À }^*0©{^oÁ s˜ *:( }_*0«{_oà sš *r(£ }`}a}b*01­rYpsÄ (+ sœ {`{a{bþ(+*(° *0¢(± (² *²(Å }c}d}e}f}g*0ë®{d{f{gsž  rT;pr†<p(°+ (}?(s  {c{g{d{e{foà ,F   (Ÿ (Þ   (Ÿ (    (Ÿ (Ý  {c{´   (D Þ,rR9prsA Þu   ,  oâ &Ü&Ü*+¥Ð(Æ *:rsA*(° *0¢(± (² *ò}h}i}j}k}l}m}n(Ç *0 ¼¯{mYE +8l8?8/8{{h{±¥foÈ }j}m{joï 9({joÉ }i{h{ioº (° (a>3(° t\ (· YEí{h{ioº (° (a>ES (+8Û(· YE+â(± (D¥(˜¥(E¥(˜¥s[ sË (+8“(· YE+š(± +¶{!#{h{­{B8{E8{h{­{,9(i9Ôþÿÿ{!#(± (D¥(˜¥(E¥(˜¥s[ sË (+oÍ }l}m{loï ,0{loÎ }k}m{k}n*}k+Ã}m{l(+}l}i8Èýÿÿ}m{j( +}j}m}n*0¥e {mYE+8€{mE ++5++++)}m{l(+}m{j( +}m}n Þ t   Þ&8fÿÿÿþ,z*lˆ ê{mE +++ +++****"{n*0 {hs¨ *V(Ï }o}p*0†°(Ð (« (¬ {o( ¥,`{p(¨ -{ps (Ñ (Ò * (ª (Ð (¥,{ps (Ñ (Ò ***r(Ï }q}r}s*0±(Ð (« (¬  {q(E¥(¥,(E¥{q(¥þ+9Ñ{r-+{r(ª (Ð (¥9£{s(¨ 9u(ª (Ð (E¥(E¥(¥,+-(E¥(E¥(¥,(D¥(D¥(¥+,{ss (Ñ (Ò **{ss (Ñ (Ò ***:(§ }t*0(²(a> 3(? {t(n oˆ?þ**:(Ó }u*N{ž{u(¥*(§ *0(³(a>3tk {7#rÒYp(ñ þ**:(Ô }v*N{voº(° *(Õ *"(u*r(Ö }w}x}y*0 {x{y{w(HC*(Õ *"(u*r(Ö }z}{}|*0 {{{|{z(HC*(Õ *"(u*:(× }}*0c´(Ø (À (Á (Ä (à ( {}(¥{B5(O]($nþ,þ**(× *0cµ(Ø (À (Á (Ä (à ( {B5(O]($nþ,{B5(X]ol+þ*:(× }~*0E¶(Ø (À (Á (Ä (à ( |~(D¥(D¥(¥*V(× }}€*0K¶(Ø (À (Á (Ä (à ( {{€(—¥(D¥(¥*r(Ö }}‚}ƒ*0 {‚{ƒ{(HC*r(Ö }„}…}†*0 {…{†{„(HC*:(Ó }‡*B{‡þo  *:(Ù }ˆ*0¸{ˆoÚ sÐ *:(Û }‰*0º{‰oÜ sÒ *:(Ý }Š*0¼{ŠoÞ sÔ *’(£ }‹}Œ}}Ž*0 7¾rÜYpsß ( + sÖ {‹{Œ{{Žþ( +*(á *&(: *(á *&(; *V(§ }â }ã *0#¿{â {ã ( + Þ t  Þ* ’(§ }å }æ }ç }è *0ÒÀ{è {­(= {å {æ ( + Þ t  Þ-*(a>E {ç (ñ *{ç rDZp( (ñ ,*{ç (ñ *( ’(é }ê }ë }ì }í *ž{ê {ë {ì {í sî þ(ä+*:( }™*J{™sï Œ*V( }ð }ñ *b{ð {ñ sò Œs*r(ó }ô }õ }ö *0 <Ã{ö {ñ (÷ (ø (ù {™sú ( +*(û **(á *R(: ,*(; *b}Ÿ} oü &**0HÅ(’35t³& {XM {Ÿ{ Y(—¥ ( ¥,(V **þoý *(§ *2(a>þ**o &*6(þ o¡*:(n o£*V( }¡}¢*Â{¡b(þ o¡X w{¢ZX{¢XsZ *( *0.( ( sö *:( }£*B{£þo *:(` }¤*0{{¤oa sú *:(b }¥*0|{¥oc sü **o &* *ò(¨ }¦}§}¨}©}ª}«}¬*0 1{¬{¦{ª{§{«{¨{©o³*0D( }­}®}¯}°}±}²}³}´*0 <{´{­{®{¯{°{±{²{³s o+*0L( }µ}¶}·}¸}¹}º}»}¼ }½*0N(í {¼oœ{µ{¶{·{¸{¹{º{»{½s þo+*Ò( }¾}¿}À}Á}Â}Ã*0OÆ(ð (ì (ï (í {¾{¿{À{Á{Â{Ãs þo+*:( }Ä*B{Äþo  *:(  }Å*0È{Åo  s *:(  }Æ*0Ê{Æo  s *:( }Ç*0Ì{Ço s *:( }È*0Î{Èo s *’(£ }É}Ê}Ë}Ì*0 BÐrXZps (+ s {Ì{Ë{É{Ê{Ê(»vþ(+*²(¬ }Í}Î}Ï}Ð}Ñ*0 %{Ñ{Ð{Í{Ï{Îoµ*r(¬ }Ò}Ó}Ô*f{Ô{Ó{Òo´*²( }Õ}Ö}×}Ø}Ù*0 |Æ(ð (ì (ï {×(»v(ÒzEÂ0 0( (*{Õ{Ö{Ø{Ùs o+*{Ø{Ùs o+*:( }Ú*B{Úþož *:(Ÿ }Û*0›{Ûo  s *:(¡ }Ü*0{Üo¢ s *r(£ }Ý}Þ}ß*01ŸrªZps¤ (þ+ s {Þ{ß{Ýþ(ÿ+*²(» }à}á}â}ã}ä*0 %{ä{â{à{ã{áo¶*’( }å}æ}ç}è*0 ;Æ(ð (ì (ï {å{æ{ç{ès$ o+*:(¾ }é*B{éþo¿ *:(À }ê*0©{êoÁ s( *:( }ë*0«{ëoà s* *r(£ }ì}í}î*01­rªZpsÄ (+ s, {î{í{ìþ(+*²(Å }ï}ð}ñ}ò}ó*0 %{ó{ò{ï{ñ{ðo·*’( }ô}õ}ö}÷*0 ;Æ(ð (ì (ï {ô{õ{ö{÷s0 o+*:( }ø*B{øþo *:( }ù*0Ò{ùo s4 *:( }ú*0Ô{úo s6 *:( }û*0Ö{ûo s8 *’(£ }ü}ý}þ}ÿ*0 7ØrÖZps (+ s: {ÿ{þ{ü{ýþ(+*ò(! }}}}}}}*0 6{{{{{{(»v{o¸*Ò(" }}} } } } *0 GÆ(ð (ì (ï {{{ { { { s> o+*(£ *NrR9ps þ(+*(# *0Æ(ð (ì (ï o¹*:(í } *N{ {Àoâ *($ *0Û(% (& þ(×*:(' }*:{o *($ *0Û(% (& þ(×*($ *0!Û(% (& {·{·(ñ *(( *0Ù( (  () oâ *(£ *rR9p*(£ *rR9p*(* *"{$ *’(+ }}}}*0 ÁÚr—>pr[pr6[psT (Þ {{Ø{o  ( {{{{¸(+ oŸ(© (, (- (. sV  o¢(+sÉsÊ Þu   ,  oâ &Ü&Ü*‹¦(£ *rR9p*(£ *rR9p*(* *"{$ *r(+ }}}*0•Ür—>pr[pr6[ps\ (Þ {{Ø{o  ( {o©(/ s^  o¢(+9sÉsÊ Þu , oâ &Ü&Ü*_z(£ *rR9p*(£ *rR9p*V(0 }}*0XÝr—>prL[pr6[psd (Þ {{Ø{o  ( o¨ Þu  , oâ &Ü&Ü*%@(£ *rR9p*(£ *rR9p*’(1 }}}}*0 …Þr—>prp[pr6[psj (Þ {{Ø{o  ( {{{{¸(+ oŸ(© (2 Þu , oâ &Ü&Ü*Oj(£ *rR9p*(£ *rR9p*:(3 }*B{o(*:(õ }*6{ož*0T}}} }!}"}#}$}% }& }'(4 *0Ÿ{&YE $+'8{+n8ë8Û8*8A8C{ ¥{o5 }#}&{#oï ,0{#o6 }"}&{"}'*}"+Ã}&{#(+}#{{B¥{o5 }%}&{%oï ,0{%o6 }$}&{$}'*}$+Ã}&{%(+}%{{º,'}&(. {!¥{(+{*+}&{!¥{{*}&}'*0Ãe {&YE+8ž{&E ++G+0+,+++++2+/+,}&{%(++}&{#(+}&}' Þ t   Þ&8Hÿÿÿþ,z*Ц 0U{&E ++!++++ +++ *******"{'*0%{{{ {!sv *ò(8 }9 }: }; }< }= }> }? *0 ãr—>pr[pr6[psp (Þ {9 {; {= o  9¯ (@ (A 9 (@ (A (B (C (B (D (B (E (B (F  (@ (G  (@ (H  (B (I  (B (J  {9 {×{= o  {: {D{: {C{< {; {= {·  {9 {Ösr  st {> {? Œ(­ (K (L (M (× (n oà ,`{: {=  sv (+,)(N  {9 {Ösñ (O +sÜ(î Þ)(ì Þ!(ê Þu , oâ &Ü&Ü*AÕð(P *Jr¸[p(Q ( *( *0P(  ( rÀ[p( *( *"(  *²(R }/}0}1}2}3*0 ïä{0{1(nsUv(f rÔ[prð[p([ (\ (\ {3(+(Ÿ+ s~ {â (+ s€ {å (U+  {3(+(Ÿ+(Ÿ+(Ÿ+{0r\p( s‚ {á (U+(+(+{2{ã ¥çsÇ(T sÑ{/{×oU *(£ *rR9p*:(£ }4*zr\psV ( +{4þoW *V(í }5}6*0 ¦å{6sˆ  r†\pr \p(°+ {5{Ø{6o ,P{5{6o  (   ()  ( {5{Ø{6s  oX  Þ Þu , oâ &Ü&Ü*l‹V(õ }7}8*N{7{8o *(£ *rR9p*:(í }9*R{9{ØoY *V(õ }:};*N{:{;o *:(£ }<*zrÔ\psV ( +{<þoW *V( }=}>*0Edrð\pr]ps (ñ+o (Z {={Õ([ (!+{>o *:( }?*0ç{?{Ô {Ëþoì *:(] }@*0%è($ (" (# {@o. *:(^ }A*0ê(_ (` {Ao, *(a **:(^ }B*0ê(_ (` {Bo"+*:(b }C*0%è($ (" (# {Co/ *:(^ }D*0ê(_ (` {Do, *(c **:(^ }E*0ê(_ (` {Eo"+*(d *0Iì(e (f (g (h (g (h (ñ , (n þoÔ**0!í(ó] (? (O]($nþ*0;î-6oi ,+rv]psj (#+ sô (ook (+&***0/ðuñ,tñ {U0($+*sö owRþ(%+*00ò(‡Q3tÄ {-0(&+*sø o”Qþ(%+*0/ôu,t {u0('+*sú oøRþ(%+*>sü þ((+*0¼÷(a>EO"x¥Ä õ Æõ&aA‹S7*t\{!# ,oÆm {U;{X;+oÆm {U;{Y;(l *tl{;# +Àt]{"# {B0on {Ñ:{I(l *t_{'#{0< oÆm {U;{X;(l *t`{(#ofmonj(l *ta{)#{@0on{ß:{I(l *td{,#  (° **te{.#  om (® *tj  {6#(³ 9Áþÿÿ {6#(´  sþ  (p]þ()+*tk  {9#9‹þÿÿ {9#(M (¯ **tn{=#(n 9Zþÿÿ{=#(o ofmonj(l *tf{0#(¢ 9!þÿÿ{0#(£ (¯ *tg{2#(± (¢ 9éýÿÿ(£ +Ët^{&#(l *tq{B#8Fýÿÿ*^ofmo‰j,*(ÿh*0hù(a>E$C[p´“¶ÜD·ÿæ*t\{!# (þh*tl{;# +ët]{"# {B0 {t;(³ *t_{'# {0<(þh*t`{(#(³ *ta{)#{@0{v;(³ *td{,#soøRþ(*+**te{.#som owRþ(*+*tf  {0#(¢ 9 ÿÿÿ {0#(£  s o”Qþ(*+*tg  {2#(±   (¢ 9Çþÿÿ (£  +¿tj  {6#(³ 9£þÿÿ {6#(´ s(p]þ(++**tk{9#9kþÿÿ{9#(M  s o”Qþ(*+*tn{=#(n 90þÿÿ{=#(o (³ *tq{B#8šýÿÿ*0jú(I¥ rˆ]psê (,+oì &( Áo'Á-<(-+ -, (d (U ** (O on{¦;(U **01ý(ïh uˆ, tˆ(p {n; on{¢;**0 hÿ(‡Q3YtÁ {%0 (f^ ¥‰(.+ (q þ,(r +os sþ(/+*(t *0~{+1 (ïh uˆ,etˆ(p {n;on{¢; ,? (d o~m(](n(ßP  su (v ***0¹o©m,F(¸  ,4 (w (x (w (y rÎQp{á/oü²( (Û*(×*(¶  ,Z (d ofm{g:{w:rR9p(ñ ,(H`{g:(àj+{g:{w:(Û*(×*0Ž(¶  9z (d oÆm {U;{e;rR9p(ñ ,@oÆmoülofm{g:{z:(A` (C` {U;(/m+ {U;{e;(Û*(×*0§{@0 {v; (¶  9… (d {@0on{Ö:rR9p(ñ ,F{@0onrR9p{@0on{ß:{Iofmo¾joü²(E`(œk+{@0on{Ö:(Û*(×*0§{B0 {t; (¶  9… (d {B0on{Ð:rR9p(ñ ,F{B0onrR9p{B0on{Ñ:{Iofmo¾joü²(D`(‡k+{B0on{Ð:(Û*(×*0 t {(0 {'0 u¹,$t¹{0{0(z s{ +3t¸{0(| { 0{ 0{ 0s{ (}  (~  (  (€   -7,(  ( {á/oü²{à/s‚ +.rÊ]ps\ z   (ƒ oü²(´Us‚   („  (…  o† -rR9p+ræ]ps@ (©+ o† o  (¸ 9Ä(w (x (w (‡ (w (y   (?Q -o‘Q(]oZQ+o‘Q(]o[Q{«]rS@prÈ:po` rð]p( rS@p( ( (  (@`( (Û*(×*0i{,1 (‡QE.:@tÁ {%0 {$0 {#0 (k](º *(½ *(×*(×*0 1uï-uð-I(×*tï {O0 {N0 (k] owR, (ˆ (º *(×*tð{S0{C0{S0{D0{R0 {à/  (¸   9ˆ   (w (x   (w (‡   (w (y   (ER rö]p {á/oü²( rS@p( {Ï](  (z oVR(@`( (Û*(×*0d{,1 {+1 (a>Eé  7LRÜ©Œ½õFúrx(×*t_ {'#{0< {s;Œl,+:²{s;{j;{q;{n;on{¢;-(×*(d  oÆm  {U;{e;rR9p(ñ ,9oÆmoül  ofmo¾jo÷² (C`  {U; (/m+  {U;{e;(Û*(×*t\{!# 8ÿÿÿtl{;# 8ÿÿÿt]{"#  (¼ *t`{(#  (¹ *ta{)#(» *(×*tc{+#uÚ9•þÿÿ{+#tÚ{70{80{à/(¸ ,P(w (x (w (y rü]p{á/oü²( rS@p( {Ú]( (Û*(×*tj{6#(³ 9òýÿÿ{6#(´ ($n@×ýÿÿ(´ tv{‚;  (¹ *tk{9#9¦ýÿÿ{9#(M (¾ *(×*tn{=#(n 9oýÿÿ{=#(o   (¹ *te{.#(K 9>ýÿÿ{.#(L (¿ *td{,#u9 ýÿÿ{,#t{r0{,# {f0{à/  (¸ ,P(w (x (w (y r^p{á/oü²( rS@p(  oòR( (Û*(×*tf!!{0#(¢ 9[üÿÿ!{0#(£ (¾ *tg""{2#(¢ 9*üÿÿ"{2#(£ (¾ *0`r 8ps‰ (0+&Œé,+ r¨9ps‚ zŽi  Y 2)£m r^psÏ (Ê+ oì &X X3×*0n{ýH þ, Žiþ+,rR9p+{ýH ds% (Á o& (ô ,(×+(Ù u`, (À * *0: s (1+(ù (ˆ(Š -* (‹ þoŒ *0"¥˜s sŽ þ(2+*0$(a>Eao*ti{4# ( *tg {2#(¢ ,Ö{2# (£ (‡Q3Á(£ tà (¢ (¢ -¨ {+0 +®th{3# + tj{6#(³ 9xÿÿÿ{6#(³ (³ :^ÿÿÿ(´ 8`ÿÿÿ0V(O]($nþ,(O]($nþ+, {B8{E8(k](k](i*þ(ƒ]*0Œ/{ (a>Eû6—Ky%ÂÊÑ?‡ *{ t` { (a>3ã{ t` {(# {(# {B8{E8 (i*{ tc{+#uÚ,š{+#tÚ{ (a>@{ÿÿÿ{ tc{+#uÚ9]ÿÿÿ{+#tÚ{80{80  þ*{ tk  {9#9ÿÿÿ {9# { (a>@ÿÿÿ{ tk  {9#9éþÿÿ {9#  (M  (M þ(3+*{ tm{ (a>@¢þÿÿ{ tm{<#{<#(ñ *{ tn{=#(n 9[þÿÿ{=#{ (a>@@þÿÿ{ tn{=#(n 9"þÿÿ{=#(o (o (v^(v^(ñ *{ tq{ (a>@Øýÿÿ{ tq{A#{A#{I{Is  {I{Is  (n (À+, (ñ **{ tf { (a> @Dýÿÿ{ tf!!{0#" {0##s"#¥"¥(4+þ(5+*{ t\${ (a>EŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿ<ŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿŒüÿÿ8‡üÿÿ{ t\%%{!#&${!#'{B8{E8'&þ(i*{ tl(({;#${!#'&+Ç{ tl({ (a>E¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ)¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ¶ûÿÿ8±ûÿÿ{ t\$${!#({;#'&8%ÿÿÿ{ tl)){;#({;#'&8ÿÿÿ{ t_*{ (a>@Kûÿÿ{ t_++{'#{0<&*{'#{0<'+{'#{1<,*{'#{1<-+{'#{/<.*{'#{/</-,3{B8{E8'&þ(i**{ t]0{ (a>@¬úÿÿ{ t]11{"#{B020{"#{B03{V832þ(6+*{ ta4{ (a>@Súÿÿ{ ta55{)#{@0{v; 4{)#{@0{v; 5{)#{@0{w;4{)#{@0{w;{B8{E8 (i, (ñ **{ te6{ (a> @¼ùÿÿ{ te77{.#86{.#9s$98(7+þ(8+*{ td:{ (a>@iùÿÿ{ td;;{,#<:{,#==<þ(PP*{ tg>{ (a> @ùÿÿ{ tg??{2#">{2##s&#¥"¥(4+þ(5+*0ñ1{ (a>EC¸{ (Å  ,({ (Å  ,(• (•  þ(Æ *þ(Ç *{ ti{ (a> 3({ ti{4# {4#  þ(Æ *{ (Å  ,¡{ (Å  ,’(• (• 8tÿÿÿ{ tj{6#(³ 9w{6#(³ (³ :&{ (a>@Ý{ tj{6#(³ 9ˆ{6#  (³ (³ -: (´ (´ {5# {5#   (ñ ,  þ(Æ **{ (Å  9´þÿÿ{ (Å  9¢þÿÿ(• (• 8„þÿÿ{ (Å  9}þÿÿ{ (Å  9kþÿÿ(• (• 8Mþÿÿ{ (Å  9Fþÿÿ{ (Å  94þÿÿ(• (• 8þÿÿ{ (Å  9þÿÿ{ (Å  9ýýÿÿ(• (• 8ßýÿÿ{ (Å  9Øýÿÿ{ (Å  9Æýÿÿ(• (• 8¨ýÿÿ0ð4{ (a>ElC«» 3M9Z—=…ÅrWps\ z{ tc {+#uÚ,Û{+#tÚ{80 (– *{ tm{<# ,( **{ tk {9#-* {9#(M (QP*{ tn{=#(n 9]ÿÿÿ{=#(o (v^ ,( **{ tq{A#{I{I s   (þ (¿+  b X, ( +a*{ tf{0# s( þ(9+*{ tg  {1#  {2# o— s* (9+X*{ t\{!#  oÆmom ,( **{ tl{;# +Ó{ t_{'#{0< {'#{1< {'#{/< oÆmom  s˜ , ( +bX a*{ t`{(#ofm{g:{k:þ(:+*{ t]{"#{B0{t;{"#{B0{u; ofm{g:{k:s™ (þ (;+  b X, ( +a*{ ta{)#{@0{v;{)#{@0{w; ofm{g:{k:s™ (þ (;+  b X, ( +a*{ td{,#(SP*{ te{.#{-# s,(<+(þ þoš *0\5{ (Å  ,C(• (O]($nþ,"(k] ofm {g:{k:þ(:+* ò*þ(É *"s.*6s2(=+*:(Ë (Ð+*0Y6(a>3Mtj {6#(³ ,9{6# (³ (³ -%(´ {5#  s6{»9þ(>+**Bs8þ(ä+*0v{/5{05{15{25((V {55{65{75{95{:5{<5{=5{>5{A5{B5{C5{D5sb*0U7oÆm(Ns:s<(?+oÆm {U;|\;(¶ioÆm {U;{Z;(•^ *0x9r^psÏ (Ê+(toì &{B0 {t; (ìN (•”(@+ r^psÏ (Ê+(–{Ñ:{Io oì &(N*06îr$^psj (#+ sB(u(A+(+&(N*0Kîr$^psj (#+ sF(v(l`(+&(NsHsJþ(?+*02:ofm (\N (•”(@+ sLsNþ(B+*0Â={@0 {v; (ìN (•”(@+ r^psÏ (Ê+(–{ß:{Io oì &(N{@0ono®k,P(œ r4^psÏ (Ê+(“”{B5(éN(È+oì Þ tÞ&**~3± 0*îr@^psj (#+ sR(|{I(+&*0®@r^psÏ (Ê+(woì &oöQ(NrDpsÏ (Ê+oùQoì &oþQ ,Z ( r4^psÏ (Ê+(“”{B5{,1oR(À*(éN(È+oì Þ t Þ &**\CŸ 0hAr^psÏ (Ê+(xoì &oïR(k] (ìN (•”(@+ r^psÏ (Ê+oòRoì &(N*0hAr^psÏ (Ê+(yoì &ojR(k] (ìN (•”(@+ r^psÏ (Ê+ogRoì &(N*0cCr€WpsÏ (Ê+(zoì &oN :°sT(· (î+ (Ef (O rDpsÏ (Ê+oì & ¥¤ož oï ,;oŸ rL^ps‰ (0+&(NrR^ps‰ (0+&+¼Þu , oâ &Ü&Ü&+&(d  rDpsÏ (Ê+ oì &rV^psÏ (Ê+(Ÿoì &o‰Q(k]  (ìN (•” (@+ rb^psÏ (Ê+oŒQoì &*rI»0A(k] (ìN (•”(@+ *0NA(k] (ìN (•”(@+ rl^ps‰ (0+&(NrR^ps‰ (0+&*0³þ{/5{05{15{35{45{55{65{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb (¶Sofm(NsVsX(B+*0Fsb([ ¥¦(C+ sd¥7(D+(E+ (¡ þþ,r 8ps‰ (0+&+¥¨o¢ oï ,Mo£ (Y (Z r^psÏ (Ê+-sf+sho oì &+« Þu , oâ &Ü&Ü &{B8(i,ofmoqj+ m(‰( o& (÷*_Y¸03îrp^psj (#+ sl({{I(+&(N*0  K{+1 {,1 (F+ (a>E~J¬2•6x½:‡j—î`ão þc(õ*t\{!# ds%  (Ñ o& {B8 (i, oÆm{U;{d;+ m(‰( (÷*tl{;# +•t]{"#{B0on{B0  {t;(k^ok  (o þ,+s> (G+(l_(n ds%  (Ò o& {B8{B0  {t;(i, {Ï:+ m(‰( (÷*t^  {$# {##{O  {%#ds%  (Ó o& m(‰( (÷*t_{'#{0< oÆmom(? {B5(Cf(¤  ds%   (Ô o& oÆm{U;{d;( (÷*t`{(#ds% (Õ o& {B8(i,ofmoqj+ m(‰( (÷*ta{)#{@0on{@0{?0(ñ](Cf(¤ ds% (Ö o& {B8{@0{v;(i, {Õ:+ m(‰( (÷*tb{*#ds% (× o& m(‰( (÷*tc{+#ds% (Ø o& m(‰( (÷*td{,#(¶S(ˆP(Cf(¤  ds%  (Ù o& oðR, oñR+ m(‰( (÷*te{.#om oyRopR,o{R(l_(n+  (Cf(¤ ds% (Ú o& ofR, otR+ m(‰( (÷*tk{9#9ûÿÿ{9#{8#(M {7# ds%  (Û o& oQ, o“Q+ m(‰( (÷*tg{2#!!þ(à *tf{0#!+áth{3#(Cf(¤  ds%  (Ü o& m(‰( (÷*ti{4#(Cf(¤   (¶S(„P""{Ë1ds%  (Ý o& m(‰( (÷*tj##{6#(³ 9†ùÿÿ#{6#$$(´ ($n@kùÿÿ$(´ tv%$(´ %{‚;ds% (Þ o& {B8(i,ofmoqj+ m(‰( (÷*tn&&{=#(n 9Úøÿÿ&{=#'&{=#('(o sé ((Ì )sZ)(>+**,(}+s\)(>+,(~+( r@^psj (#+++s` *, (v^+ ofmo|j(+&*-)(ß *o& m(‰( (÷*tp,,{?#,{@#(Cf(¤  ds%  (à o& m(‰( (÷*tq{B#--8ûöÿÿ0ÁL{+1 {,1 (F+ {/5 {05 {15 {25 {35 {45 {55 {65 {75 {85 {95 {:5 {;5 {=5 {>5 {?5 {@5 {A5 {B5 {C5 {D5sb (a>E 7Àã!UŽ(R¬Ïø¼*t\{!#oÆmom(? (O]($nþ9œ(V](@ (A   (¤ (¥ (¥ (O  (¥   (7   (à+  (¥ r‚^ps‰ (0+&(•”(@+rˆ^ps‰ (0+&(•” (@+*(r (O (•” (@+*tl{;#8ÿÿÿt]{"#{B0{t;(k^(N*t_{'#{0<oÆmom(? (ô](¦ (k`(H+{Oo 0+(n]{1<(I+(N*(r {¦8(O (•” (@+*ta{)#(r {@0{?0(ñ](O (•” (@+*tc{+#(r oR(O (•” (@+*td{,#(r (¶S(ˆP(O (•” (@+*te{.#(ô+oyR(r (O (•” (@+*tk{9#9ýÿÿ{9#(M o‘Q(]o§Q(r (O (•” (@+*tf{0#(¢ 9¾üÿÿ{0#(£ + tg{2#(¢ 9”üÿÿ{2#(£ 8sÿÿÿth{3#(r (O (•” (@+*ti{4#+Ñ*0EMofm {g:{r: ,' (• ($n3 tv{‚;+Ä*(< *0‚NoÆm oäl,poül om (¨ -rR9p+ rŒ^p o† þ’o& ( r’^ps (þ+sr(<`om(+(c **0’R(‡QEdsutÁ {%0 oÆm {U;{c; u,*t{:(<`rS@p( oÆmom( (c *tÂ{(0u¹,&t¹  { 0 {0 {0s© +-t¸  {0  {à/ { 0 { 0s© (ª («  (¬   , (ƒ o÷²+(<` {Á]o­ 1rŒ^pþ’o& ( +rR9pr’^ps (þ+sx {«](+(c ***0&S(¢ 9 (£ (‡QEW´õ(£ tÁ{%0 oÆm {U;{c; u,*t{:(<`r¢^p( (c *(£ tÂ{(0u¹,t¹{ 0+t¸{0{à/(<`r¢^p( (c *(£ tà  {+0  {*0   (k](<`r¢^p( (c ***0¼W(a>E9÷!…÷ÖÑдˆ1æ÷ ÷÷=àt\{!# (ä *tl{;# +ët_{'# {0<(ä *t]{"# {B0 {t;(<`rS@p( {B0on{Ñ:{I( (c *ta{)#{@0{v;(<`rS@p( {@0on{ß:{I( (c *tc{+#uÛ,*tÚ  {70  {80  {à/(<`rS@p(  {Ú]( (c *tj  {6#(³ ,? {6#  (´ ($n3' (´ tv{‚;sz(ã þ(J+**ti{4#($n3ç{4#tv{‚;+¾th{3#($n3»{3#tv{‚;+’tr{C#(n -8‹ÿÿÿ{C#(o 8dÿÿÿt`{(#8Rÿÿÿtn{=#(n -*(o ofm{g:{q:( k3$s~ofm{g:{z:þ(K+*ofmo¾joü²(c *te{.#(K -*{.#(L ((uð:«(uñ:ðtï{P0,p{P0(ˆ oÆm{U;{c;u,*t{:(<`rS@p( oÆmom(¡–( (c *{Q0,{Q0(ˆ 8‚ÿÿÿ*tð{S0{C0 {S0{D0 {à/(<`rS@p( {Ï]( (c **td{,#))u-S)u:×t{r0{f0  {à/(<`rS@p( oòR( (c *t  {n0owR!!-*!""(ˆ oÆm{U;{c;u,*t{:(<`rS@p( oÆmom(¡–( (c **tg{2###(æ *tk$${9#-*${9#(M %%(å *tf&&{0#(¢ -+Ð&{0#(£ %%(å *tq{B#''8Dúÿÿbs€s‚(L+*Zs„s†(M+*0Ã[( kE >AD†‰Œ’t {˜: {Ã:(ckE *******t {:{^(…»E ***********0\{B5 (O]($nþ,%{B5(k] ofm {g:{q:(ê *{B5 (O]($nþ,*{B5(¬ ,*{B5 (O]($nþ,**R{B5(¬ , **0%](a>Emmoqsuwzzzz7z)k}¸»*t\{!# oÆm {U;{Z;(ì *tl{;# +Ùtj {6#(³ , {6#(´ {B5 (O](ë ******** *tn{=#(n 9jÿÿÿ{=#(o ofmo‡j,****0$_(í  Þt u#+ , Þþ* 0B`(a>37t\ {!# {B5oÆm {U;{Z;(¬ , {!# **0$_(ï  Þt u#+ , Þþ* 0þ (î Z(ð X*:( }F*B{Fþoì *:(ñ }G*0®{Goò sò *(® *0aoÆm {U;{X;*(® *0aoÆm {U;{X;*(® *0aoÆm {U;{X;*(¯ *:(‡Qþþ*(° *6ofmonj*(± *"(þh*(± *"(þh*(± *"(þh*(² *"(³ *(± *"(þh*V(L }H}I*º{H{B8{H{E8{I{?8{Á;(i*(³ *"{I*0T}J}K}L}M}N}O}P}Q }R }S(´ *0b{RYE +8A88V{K¥­oµ }Q}R{Qoï 9{Qo¶ }L{L(f }M{L(g }N{J{ß8 {Js {N{5<(N+}O{O,{J{M(O]($nþ+,{J{M(V](@ +{M}P}Rs {N{6<(O+{P(àP}S*}P}O}N}M}L8èþÿÿ}R{Q(P+}Q}R}S*0‡e {RYE++e{RE + ++++}R{Q(P+}R}S Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{RE + + +++***"{S*0{J{Ks*’(· }T}U}V}W*0 hcds% {T{,1{U{V(ÒNo& oQ, o“Q+ m(‰{T{U{W( s¸ *s¹ *:( }º *{º *&*Zr.8ps» (Q+o¼ *00eþ,' &  ¹y7ž{º (€+bcXXX **6(n o½ *0<fþ,-u° ,!&  {º {º  þ(‚+**þþ*05gþ,&þ,&  {º {º  þ(„+**þþ*0hu° , þo¾ **V(¿ }À }Á *07h( {À oà ,{Á oÄ ,*{Á oÅ **(Æ *0i(Ç (È þ(3+*(É *0j(Ê (Ë þ(OP*(Æ *0i(Ç (È þ(3+*(Ì **(QPX*(Ì **(QPX*(Í *"(RP*F}[o &*0îk{ (a>ErxtzM2|~p€vSrQUO*{ tj {6#(³ ,ä{6# (³ (³ þ*{ tc {+#uÚþ*****{ tn {=#(n þ**********0*l{[(È  Þt u#+ , Þþ*0-_{[(Ê  Þt u#+ ,  Þþ**o &**0!m{Ñ {Ñ (v^(v^(ñ *0"n{Ñ ofm {g:{k:þ(:+*r(Õ }\}]}^*0„m{\{](O]($nþ,d{\{](k] {\(k^(k] {\{B8{\{E8(i,{^ofmomj(ñ +þ**:(§ }_*0)l{_(Î  Þt u#+ , Þþ*(Ö *6oÆmom*(× *"({^*(Ø *"{×:*:( }`*B{`þoì *:(ñ }a*0®{aoò s@*:( }b*B{bþoì *:(ñ }c*0®{coò sD*(Ö *6oÆmom*(× *"({^*(Ù *0oofm {g:{x:*(Ú **þ(x^*:( }d*B{dþoì *:(ñ }e*0®{eoò sP*(i *"{å/*(Ù *0oofm {g:{x:*(Ú **þ(w^*(Õ *6ofmo‡j*(Õ *6ofmoˆj*:( }f*B{fþoì *:(ñ }g*0®{goò s^*(Û *0Í(u^ , (d (\ **(Ü *&s *( **þ(€*( **þ(*:( }h*B{hþoì *:(ñ }i*0®{ioò sj*:( }j*B{jþo *:(` }k*0{{koa sn*:(b }l*0|{loc sp*:( }m*B{mþo *:(` }n*0{{noa st*:(b }o*0|{ooc sv*(Ú *"(<`*(Ý *"(Þ *:(ß }p*0rq{d: s|¥¼(R+ rS@p(p+(` rR9p(ñ ,{pofmoij+!rS@p( {pofmoij( (c *²(à }q}r}s}t}u*0 '{q{r{s{t{uþ(á *(á *"(û*’(£ }v}w}x}y*0 1cds% {v{w{x{y(â þo& *( **~|*^(ˆ(â (ã sŠ**o &*6(ˆ(ã *0#(k ,(l Þ t  Þ**  ~z*~{*0 s”oä &*0 r(ˆ ,n (¡ (a>E~?*(ˆ (ˆ -ð(|–,o^ (þ+,ob Yo^ )þ**(¡ tf {0#(¢ ,¨{0# (¢ (¢ -”(ˆ (ˆ :„ÿÿÿ+’(ˆ (ˆ :rÿÿÿ(|–*Êr°^p (Œ€zrì^p ,(Œ€{så €|*r(³ }~}}€*0 {{~{€(è *Ò(í }}‚}ƒ}„}…}†*0w={†o2 ,4{‚{„{…s’{ƒ¥](S+(+(+(É(×(÷( (‚ ( {(æ }b*ò}‡}ˆ}‰}Š}‹}Œ}( *0 4{‡{ˆ{‰{Š{‹{Œ{(*V(¬ }Ž}*v{Ž{d{£oo$*(¯ *^(û( (‚ (*:(ç }*0œs(a>EÌYž8tj {6#(³ ,å{6# (´ ($n3Ð(´ tv{‚;  ofmo~jo† X8Çth{3#($n3{3#tv{‚; è ofmo~jo† X8‚ti{4#($n@Hÿÿÿ{4#tv{‚; +¶tg{2#(¢ 9ÿÿÿ{2#(£  è {o‰Q(k] ofmo~jo† ZX {(=s˜ *:( }‘*B{‘þ(=*(è *0)t(é (ê (-r$_p(ñ þ**²(ë }’}“}”}•}–*0 ct(é (ê (ˆ - r*_ps\ z{”o‰ (ñ {’{“{”{•{–sì (í s"*"{F*0!M (D¥(˜¥(E¥(˜¥s[ *0€v(T+{I  ¥¾oî oï ,6oï {I(E¥(¥,{I(¥  +Å+ Þu , oâ &Ü&Ü &sð *B]0)w,$ (h (—¥ s¹þ(U+**’s»s½¥¾(V+(W+þ(o+*0 ñ(ŠŒ3t˜% ,{ƒJ +Ú(ŠŒE9&`(ŠŒ73tÏ% {]K8Çþÿÿ*t´% {þJ{I {K {ýJ {ÿJ(¨(ž *t¶%{K{I(©ˆ( ¥,+9pÿÿÿ{K{I{K (©  -*   (×   s¿(o+(ž *0.,) (h (—¥  sÅþ(X+**"sò *.só *0Ö„{I {I ,< (ô oŒŒ(E¥oc‰(D¥(¥sõ (ö + sËsÍ(Y+(Z+([+,b(÷ (ø (\+{I(E¥où X3+X(\+{I(D¥(¥sõ (ö **0ÈsÏ  t’}§(ŠŒE9ñ 9¶~'Ê™þoú *t´% {þJ {K{ýJ{ÿJ (­*tµ%{K {K{K oc‰ oû  (]+  (^+oŒŒ (_+ (`+(þ (ÿ (ÿ  o  þo *t¶%  {K  {K {K {K (I¥(E¥ oc‰(D¥(¥ oŒŒ(_+(`+(_+ sÑ(`+ oc‰( oû  (]+ (^+(þ (ÿ (ÿ (ÿ  o  þo *t·%{ K { K{K{ KoŒŒ (_+ (`+ oc‰ ( oû  (]+  (^+oŒŒ (_+ (`+(þ (ÿ (ÿ (ÿ  o  þo *tº%{K {K{K{K oc‰ oû  (]+  (^+oŒŒ (_+ (`+oŒŒ (_+ (`+(þ (ÿ (ÿ (ÿ  o  þo *t»%{K {K{K{K{KoŒŒ (_+ (`+ oc‰ ( oû  (]+  (^+oŒŒ (_+ (`+oŒŒ (_+ (`+(þ (ÿ (ÿ (ÿ (ÿ  o  þo *tÐ%{`K{_Koú --(E¥(¥,oŒŒ  (E¥sõ (ö ***t«%{ÑJYE8ðûÿÿ{ÒJ9äûÿÿ{ÓJ(ŠŒ@Ñûÿÿ{ÓJt³%{ÔJ{üJ{IrT_p(ñ ,oŒŒ(Dþ+9„ûÿÿ{ÔJ{üJ{ÕJoú -oŒŒ  (E¥sõ (ö **0,’,' (h (—¥ sÓ  þ(a+**0“ ( 9ù ( ( {I( ¥,T {I(.¥ {I(D¥(.¥YoL ob , (c +sØ ( * {I(D¥(¥, sØ ( *( ,C(  ( (E¥(¥, {I(\  8ÿÿÿ* {I(c sØ ( *sØ ( *0W•{I {I  ([ (° -* ( (c ( (b (+sØ ( *"sÕ*0:˜(  9& rr_p(²(  o  ,(  +Ä(  ,5 r~_p(²(  o  ,(  8‡ÿÿÿ(  ,:rš_p(²(  o  ,(  8Eÿÿÿ(  ,:r®_p(²(  o  ,(  8ÿÿÿ(  ,(  8áþÿÿr¼_p ´só zs  *0bš(³ (  , ( ,( *( ,+ï( *( ,( ,+Ö( *( ,( *( *0>œ{ÉL (rE –G‹*(´ ( E (¬(Ö *(~ (®(Ö *(´ ( E (¬(Ö *(€ (®(Ö *(¬(Ö *(´ ( E 1(¬(Ö *(~ (®(Ö *(€ (®(Ö *(‚ (®(Ö *0ÙŸ( ,H ( (e38( t {$(ŠŒ3{$t«% {ÑJYE*{ÒJ,+ó{ÓJ(ŠŒ3ä{ÓJt«% {ÑJYE+Å {ÒJ,½ {ÓJ(ŠŒ3® {ÓJt³%{üJ{Ir“`p(ñ 9‚ÿÿÿ{üJ*0ÿ¡sØ ( 9å ( (e@Ò( ( 9Â( ( (e@ª( ( 9š( ( (e@‚ ( ( ,u ( ( (e3^( t{'{öL{ÌL( ,8{'{öL{ÌL( ( -( {I(‘*(“*0Q£-+ (Ù {F{C ,. (h (—¥s×þ(b+**F}—o &*06¥(ŠŒE9€ R¼V;ðþo *t´% {þJ{I {K {ÿJ {—(¦( (¥( *tµ%{K{K{I {K oŒŒ{—(D, þo *{—(¦( (¥( *t¶%{K{K{I {K {KoŒŒ{—(D, þo *{—(¦(  ( ,oŒŒ(¥( *oŒŒ (¥(¥( *t·%  { K {K  { K{I  { K  oŒŒ{—(D,  þo *oŒŒ{—(D, þo *{—(¦( ( , oŒŒ(¥( * oŒŒ(¥(¥( *t»%  {K {K  {K  {K{I  {K  oŒŒ{—(D,  þo * oŒŒ{—(D,  þo *oŒŒ{—(D, þo *{—(¦( ( , oŒŒ(¥( * oŒŒ(¥(¥( *tÐ%{_K{`K oŒŒ{—(D, þo *oŒŒ(¥( *tÏ%{]K{^K oŒŒ{—(D, þo *(¥( *t«%{ÑJYE8`üÿÿ{ÒJ9Tüÿÿ{ÓJ(ŠŒ@Aüÿÿ{ÓJt³%{ÔJ{üJ{IrT_p(ñ ,oŒŒ{—(Dþ+9ïûÿÿ{ÔJ{üJo -oŒŒ(¥( **(³ *"{I*:( }˜*0M{˜{I (D¥(¥*ò}™}š}›}œ}}ž}Ÿ(• *0Û{žYE ++i+\8Ÿ8 {›¥7og }}ž{oï ,0{oh }œ}ž{œ}Ÿ*}œ+Ã}ž{(+}}ž{™{š(¨¥77*}ž}Ÿ*0”e {žYE+8o{žE ++$+ + +++}ž{(+}ž}Ÿ Þ t   Þ&8wÿÿÿþ,z*[w ê{žE +++ +++****"{Ÿ*0 {™{š{›s¿*F} o &*0Z¦oŒŒ{ ( ¥,C{ (© ,& (× ¥7 rS@p (p+(` (c *þo **:(  }! *>{! (c+*’(" }# }$ }% }& *0 ({% {# {$ {& Œþ(d+*:(' }¦*0"§(ø (( {¦(D¥(¥*() *&s* *:(+ }§*>{§(­*(, *0MoŒŒ (E¥sõ (ö *~}¨}©}ªo- &*0 ©{¨{©{ªoŒŒ(e+ oŒŒ{ª( ¥-D(ŠŒ837tÐ% {_K oú -oŒŒ(E¥sõ (ö * **{ªþ(®*:(. }«*0Vª{&L{I( ,B{&L{I ( ( -)( {I{«(ñ ,( (/ **F}¬o0 &*0-«(¶,o1 - (²(Ö **þo1 *0­­-?-([ (·+  (ô oŒŒ([ sØ ( (°(Ö * (2 {¬(±-*( -(b (c (·+ (ô oŒŒ( (°(Ö *0E¯(ž‹3:tx% {J {¬(± - (¬(Ö *  ( (µ**0(™ r–;p(š þ*ö(Ú,r¥`pr½`p([ (\ (\ *rÙ?pr½`p([ (\ (\ *~¯*~°*0(™ sá(Ýþ(W+*0(™ sã(Þþ(W+*:( }­*J{­(š þ*:( }®*J{®(š þ*0d sÿþ(f+*0 %±þW%þN+sþ(f+*0 %³þK%þN+s þ(f+*0 %µþQ%þN+sþ(f+*0 %·þ7%þN+sþ(f+*0 %¹þ?%þN+sþ(f+*0 %»þE%þN+s#þ(f+*0 :¿{5L {7L {9L {4L{+L  s)þ(f+*0 s/þ(f+*0 s5þ(f+*0%ÀþÃs;þ(f+*0 ÀþÃsAþ(f+*0 s•þ(f+*04Ä{÷L {øL þŽ&s›þ(f+*ns£(g+(h+þ(f+*0$zÊþ¯&þN+þ°&þ®& þN+þ±&þN+þ²&þN+s¥þ(f+*0 4Ì{“M {M ( ¥,s«þ(f+*(5 *0 s±þ(f+*0^Î    {F{C,8(h uø&,&(h tø&  {ÙM{ÐM(ö*(5 *ª(‰(‹((Ÿ+(Ÿ+€¯(€°*(£ *rR9p*:(6 }²*0=Òsù rT;prÚ:p(°+ {²{F{C 9ê (h uù&,_(h tù&{ÚM{ÓM{ÚM{ÔM{ÚM{ÖM{ÚM{ÒM {ÚM{ÕM ( Ý›(h tø&  {ÙM{ÐM  {ÙM{ÍM {ÙM{ÎM {ÙM{ËM  {ÙM{ÌM  {ÙM{ÑM {ÙM{ÏM  ( Þ!( Þu , oâ &Ü&Ü*A "(7 *(*Ò}³}´}µ}¶}·}¸(8 *0©M{·YE + 8w8|{µ{³( ¥,+%{´,|µ(?¥|¶(-¥þ+,6}·{µ (D¥(˜¥(E¥(˜¥s[ }¸*+}·}¸*&}·*¢{·E + +++**"{¸*0 !{³{´{µ{¶sÿ*ò}¹}º}»}¼}½}¾}¿(8 *0®Ó{¾YE+ +a8„{»(éŠ3n{»tW%}¼{¼{½I}½}¾{¹{º{½(å¥ÚÚ*þN+}½þW%}¼+}¾}¿*&}¾*¢{¾E + +++**"{¿*0 -±{¹{º{»þW%þN+s*ò}À}Á}Â}Ã}Ä}Å}Æ(8 *0­Ô{ÅYE+ +`8ƒ{ÂuK%,n{ÂtK%}Ã{Ã{ªI}Ä}Å{À{Á{Ä(å¥ÚÚ*þN+}ÄþK%}Ã+}Å}Æ*&}Å*¢{ÅE + +++**"{Æ*0 -³{À{Á{ÂþK%þN+s *ò}Ç}È}É}Ê}Ë}Ì}Í(8 *0­Õ{ÌYE+ +`8ƒ{ÉuQ%,n{ÉtQ%}Ê{Ê{°I}Ë}Ì{Ç{È{Ë(å¥ÚÚ*þN+}ËþQ%}Ê+}Ì}Í*&}Ì*¢{ÌE + +++**"{Í*0 -µ{Ç{È{ÉþQ%þN+s*ò}Î}Ï}Ð}Ñ}Ò}Ó}Ô(8 *0­Ö{ÓYE+ +`8ƒ{Ðu7%,n{Ðt7%}Ñ{Ñ{—I}Ò}Ó{Î{Ï{Ò(å¥ÚÚ*þN+}Òþ7%}Ñ+}Ó}Ô*&}Ó*¢{ÓE + +++**"{Ô*0 -·{Î{Ï{Ðþ7%þN+s*ò}Õ}Ö}×}Ø}Ù}Ú}Û(8 *0­×{ÚYE+ +`8ƒ{×u?%,n{×t?%}Ø{Ø{žI}Ù}Ú{Õ{Ö{Ù(å¥ÚÚ*þN+}Ùþ?%}Ø+}Ú}Û*&}Ú*¢{ÚE + +++**"{Û*0 -¹{Õ{Ö{×þ?%þN+s*ò}Ü}Ý}Þ}ß}à}á}â(8 *0­Ø{áYE+ +`8ƒ{ÞuE%,n{ÞtE%}ß{ß{¤I}à}á{Ü{Ý{à(å¥ÚÚ*þN+}àþE%}ß+}á}â*&}á*¢{áE + +++**"{â*0 -»{Ü{Ý{ÞþE%þN+s#*0\}ã}ä}å}æ}ç}è}é}ê }ë }ì }í(8 *0 €Û{ìYE +8Ü8Ì878?{èþþ,+;{å(E3+{åt-& {îK(9 þþ, {îK +}é{é:ˆ{ã{ä{ç(æ¥Úo: }ë}ì{ëoï ,0{ëo; }ê}ì{ê}í*}ê+Ã}ì{ë(i+}ë+}ì{ã{ä{é,+{ç(éŠþþ{æ(ñ¥ÚÚ*}é}ì}í*0”e {ìYE+8o{ìE ++$+ + +++}ì{ë(i+}ì}í Þ t   Þ&8wÿÿÿþ,z*[w ê{ìE +++ +++****"{í*00{ã{ä{å{æ{ç{ès)*0L}î}ï}ð}ñ}ò}ó}ô}õ }ö(8 *0 .{õYE +8Þ8±8¡8í{ðo< }ò}õ{òoï 9¤{òo= }ñ{î{ï{ñ(ñ¥Úo: }ô}õ{ôoï ,0{ôo; }ó}õ{ó}ö*}ó+Ã}õ{ô(i+}ô}ñ8Lÿÿÿ}õ{ò(j+}ò}õ}ö*0¥e {õYE+8€{õE ++5++++)}õ{ô(i+}õ{ò(j+}õ}ö Þ t   Þ&8fÿÿÿþ,z*lˆ ê{õE +++ +++****"{ö*0 {î{ï{ðs/*0L}÷}ø}ù}ú}û}ü}ý}þ }ÿ(8 *0-{þYE +8Ý8°8 8ì{ùo> }û}þ{ûoï 9£{ûo? }ú{÷{ø{ú(ì¥Úo: }ý}þ{ýoï ,0{ýo; }ü}þ{ü}ÿ*}ü+Ã}þ{ý(i+}ý}ú8Mÿÿÿ}þ{û(k+}û}þ}ÿ*0¥e {þYE+8€{þE ++5++++)}þ{ý(i+}þ{û(k+}þ}ÿ Þ t   Þ&8fÿÿÿþ,z*lˆ ê{þE +++ +++****"{ÿ*0 {÷{ø{ùs5*0|}}}}}}}} } }  }  }  } } }(8 *0 :À{ YE !+$8â88÷8›8‹8å{o@ }} {oï 9œ{oA }{{"L}{{#L}{9¼{}{(ô }{{{(ñ¥Úo: } } { oï ,0{ o; } } { }*} +Ã} { (i+} }þÃ}+{{{(ñ¥Úo: } } { oï ,0{ o; } } { }*} +Ã} { (i+} }}}8Tþÿÿ} {(l+}} }*0Êe { YE+8¥{ E ++R+;+$+ +++@} { (i++} { (i+} {(l+} } Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{ E +++++ +++ ******"{*0-À{{{þÃs;*0D}}}}}}}}(8 *0 žÀ{YE++Y+w{,g{}{(ô }}{{{{(ñ¥ÚÚ*}þÃ}+}}*&}*¢{E + +++**"{*0 +À{{{{þÃsA*r(B }}}*~{{{(ñ¥Ú*r(B }}}*~{{{(ñ¥Ú*(C **(D *0Þ(E (F (G *V(H }}*0%à{L {{¥ß(î¥Ú*r(B }} }!*–{{ sO{!¥äþ(m+*r(B }"}#}$*~{"{#{$(ñ¥Ú*’(B }%}&}'}(*0B{%{&{((ñ¥Ú{%{&{'sS(g+þ(n+*r(B })}*}+*~{){*{+(ñ¥Ú*r(B },}-}.*~{,{-{.(ñ¥Ú*’(B }/}0}1}2*0B{/{0{2(ñ¥Ú{/{0{1sY(g+þ(n+*²(B }3}4}5}6}7*0 H{3{4{7(ñ¥Ú{3{4{5{6s[(g+þ(n+*r(B }8}9}:*~{8{9{:(ñ¥Ú*’(B };}<}=}>*0B{;{<{>(ñ¥Ú{;{<{=s_(g+þ(n+*r(B }?}@}A*~{?{@{A(ñ¥Ú*V(K }B}C*0Fá{"L {#L {B{C(ð¥Ú{B{Csc(g+þ(n+*r(B }D}E}F*–{D{Ese{F¥áþ(o+*r(B }G}H}I*~{G{H{I(ñ¥Ú*V(K }J}K*0Fá{"L {#L {J{K(ð¥Ú{J{Ksi(g+þ(n+*r(B }L}M}N*–{L{Msk{N¥áþ(o+*’(B }O}P}Q}R*0B{O{P{Q(ñ¥Ú{O{P{Rsm(g+þ(n+*r(B }S}T}U*~{S{T{U(ñ¥Ú*r(B }V}W}X*Ž{V{W{X¥á(ï¥Ú*’(B }Y}Z}[}\*0B{Y{Z{[(ñ¥Ú{Y{Z{\ss(g+þ(n+*²(B }]}^}_}`}a*0 G{]{^{_(ê¥Ú{]{^{`{asu(g+þ(n+*r(B }b}c}d*z{b{c{d(ë¥Ú*’(B }e}f}g}h*0A{e{f{g(é¥Ú{e{f{hsy(g+þ(n+*²(B }i}j}k}l}m*0 H{i{j{m(ñ¥Ú{i{j{k{ls{(g+þ(n+*’(B }n}o}p}q*Â{n{o{p(pŠþþ{q(ñ¥Ú*r(B }r}s}t*~{r{s{t(ð¥Ú*’(B }u}v}w}x*0B{u{v{x(ñ¥Ú{u{v{ws(g+þ(n+*²(B }y}z}{}|}}*0 H{y{z{}(ñ¥Ú{y{z{{{|sƒ(g+þ(n+*r(B }~}}€*Ž{~{{€¥Ý(í¥Ú*r(B }}‚}ƒ*~{{‚{ƒ(ñ¥Ú*’(B }„}…}†}‡*0F{„{…{†¥Ý(í¥Ú{„{…{‡s‰(g+þ(n+*r(B }ˆ}‰}Š*~{ˆ{‰{Š(ñ¥Ú*’(B }‹}Œ}}Ž*0B{‹{Œ{Ž(ñ¥Ú{‹{Œ{s(g+þ(n+*r(B }}}‘*~{{{‘(ñ¥Ú*’(B }’}“}”}•*0B{’{“{•(ñ¥Ú{’{“{”s‘(g+þ(n+*0D}–}—}˜}™}š}›}œ}(8 *0 ü þ{œYE +8¢8’8º 8» {˜,{™(³ˆþ+9{–{—{™oŒŒ(å¥Úo: }›}œ{›oï ,0{›o; }š}œ{š}*}š+Ã}œ{›(i+}›+}œ{™(ŠŒE9ІA U ¦½)s`äŠÈÞê6z×E¤²! ô¯æ[H :bxŽMºfæ5§ HLËœ²(p+8ø {™t¼%{K {–{—(ñ¥Ú8É {™t½%{"K +Ï{™tÂ%{.K +¼{™t¥%{¼J +©{™t¤%{¸J +–{™t›%{ŽJ 8€ÿÿÿ{™tÏ%{]K 8jÿÿÿ{™tÐ%{_K 8Tÿÿÿ{™t©%{ÍJ 8>ÿÿÿ{™tª%{ÏJ 8(ÿÿÿ{™t¶%{K 8ÿÿÿ{™tµ%{K 8üþÿÿ{™tŸ%{J 8æþÿÿ{™t¬%{ÖJ 8Ðþÿÿ{™tÌ%{RK 8ºþÿÿ{™t¾%{%K 8¤þÿÿ{™t¿%{(K 8Žþÿÿ{™tÀ%{*K 8xþÿÿ{™t°%{îJ 8bþÿÿ{™tÃ%{3K 8Lþÿÿ{™t˜%{ƒJ 86þÿÿ{™tÆ%{;K {–{—oŒŒ(å¥Ú{–{—sG(g+(n+8Î{™tÇ%{>K +¯{™tÉ%{GK +œ{™tº% {K {K {–{—(ñ¥Ú{–{—sI(g+(n+8T{™t·% { K {K +ª{™tÍ%{YK{VK +‹{™t«%{ÔJ{ÓJ 8iÿÿÿ{™t%{•J{–{—¥Ý(í¥Ú8Â{™tœ%{‘J+É{™tž%{™JsKsM(q+(r+{–{—¥Ý(í¥Ú8]{™t %  {¢J  {¡J {–{— ¥ß(î¥Ú{–{— sQ(g+(n+8þ{™t¡%  {¥J  {§J  {¦J {–{— (è¥Ú{–{—sU(g+(n+8{™tÄ%{7K {5K {–{—(ñ¥Ú{–{—sW(g+(n+8F{™t¢%{©J{®J {­J {«J{–{—(ç¥Ú{–{—s](g+(n+8Ú{™t£%{°J{µJ {´J {–{—(ç¥Ú{–{—sa(g+(n+8y{™t§%{ÆJ{ÅJ{–{—(æ¥Ú{–{—sg(g+(n+8{™t¦%{ÁJ {–{—(ñ¥Ú8ì{™t¨%{ÈJ{ÉJ {ÊJ{–{—(æ¥Ú{–{—so(g+(n+8‰{™t­%{àJ {ßJ {–{— ¥ß(î¥Ú{–{—sq(g+(n+8,{™t®%{èJ{çJ{âJ {äJ{–{—(é¥Ú{–{—sw(g+(n+8¾{™t¯%{ìJ{íJ{êJ {éJ {–{—(ñ¥Ú{–{—s}(g+(n+8Q{™t±%{ðJ{óJ {òJ {–{—(pŠþþ(ñ¥Ú{–{—s(g+(n+8â{™t²%  {øJ {÷J! {öJ  {õJ {–{—(æ¥Ú{–{—!s…(g+(n+8v{™t¸%""{ K"{ K {–{—(ñ¥Ú{–{—s‡(g+(n+8{™t¹%##{K#{K #{K {–{—(ñ¥Ú{–{—s‹(g+(n+8»{™t»%$${K ${K ${K{–{—(ñ¥Ú{–{—s(g+(n++\{™tÈ%%%{@K%{EK %{DK {–{—(æ¥Ú{–{—s“(g+(n+Ú*}œ}*0”e {œYE+8o{œE ++$+ + +++}œ{›(i+}œ} Þ t   Þ&8wÿÿÿþ,z*[w ê{œE +++ +++****"{*0 #{–{—{˜{™s•*0„}ž}Ÿ} }¡}¢}£}¤}¥ }¦ }§ }¨ }© }ª}«}¬}­(8 *0†ÿ{¬YE !'+*8ô8Ç8·8þ8Ñ8Á8'{¡¥åoL }¦}¬{¦oï 9£{¦oM }¢{ž{Ÿ{¢(ó¥Úo: }¨}¬{¨oï ,0{¨o; }§}¬{§}­*}§+Ã}¬{¨(i+}¨}¢8Mÿÿÿ}¬{¦(s+}¦{ uŽ&9%{ tŽ&}£{£{ðL}¤{¤¥åoL }©}¬{©oï 9£{©oM }¥{ž{Ÿ{¥(ó¥Úo: }«}¬{«oï ,0{«o; }ª}¬{ª}­*}ª+Ã}¬{«(i+}«}¥8Mÿÿÿ}¬{©(s+}©}¤þŽ&}£+}¬}­*0èe {¬YE+8Ã{¬E +8i+R+;+7++++T}¬{«(i+}¬{©(s++)}¬{¨(i+}¬{¦(s+}¬}­ Þ t   Þ&8#ÿÿÿþ,z*¯Ë 0U{¬E ++!++++ +++ *******"{­*03ÿ{ž{Ÿ{ {¡þŽ&s›*V(N }®}¯*f{®{¯(ó¥Ú*r(B }°}±}²*0« {²(‘E Åš ðD7þ(p+*{²t™&{M {°{±¥ß(î¥Ú*{²tŸ& {-M {+M {(M{)M{&M{'M{%M{,M {°{±(ñ¥Ú*{²t—&{M {°{± (å¥Ú*{²t–&{M {°{± (ì¥Ú*{²t›&  {M9÷þÿÿ {M  (O  {M{°{±s¡¥åþ(t+*{²tœ&{M {°{± (å¥Ú*0}³}´}µ}¶}·}¸}¹}º }» }¼ }½ }¾ }¿}À}Á}Â}Ã}Ä}Å}Æ}Ç}È}É}Ê}Ë}Ì}Í}Î}Ï}Ð}Ñ }Ò!}Ó"}Ô(8 *0 Ï {ÓYE !'-39?EKQ+T88É8¹88@888“8f8V8î8À8°8*{µ(’E ³¹«‚8ä{µt¯&}¶{¶{OM}·{¶{NM}¸{·{³( ¥,3}Ó{³{´{¸¥ß(î¥ÚÚ*+}¸þN+}·þ¯&}¶8?{µt°&}¹{¹{PM}º{¹{QM}»{³{´{º(æ¥Úo: }É}Ó{Éoï ,0{Éo; }È}Ó{È}Ô*}È+Ã}Ó{É(i+}É}Ó{³{´{»(ñ¥ÚÚ*}»}ºþ°&}¹8781{µt®&}¼{¼{LM}½{¼{JM}¾{½{³( ¥9î{¾¥èoP }Ê}Ó{Êoï 9£{ÊoQ }¿{³{´{¿(ô¥Úo: }Ì}Ó{Ìoï ,0{Ìo; }Ë}Ó{Ë}Ô*}Ë+Ã}Ó{Ì(i+}Ì}¿8Mÿÿÿ}Ó{Ê(u+}Ê+}¾þN+}½þ®& }¼8Î{µt±&}À{À{SM}Á{À{TM}Â{Â{³( ¥9ð{Á¥êoR }Í}Ó{Íoï 9¥{ÍoS }Ã{³{´{Ã(ò¥Úo: }Ï }Ó{Ïoï ,1{Ïo; }Î }Ó{Î}Ô*}Î+Â}Ó{Ï(i+}Ï}Ã8Kÿÿÿ}Ó{Í(v+}Í+þN+}Â}Áþ±&}À8h{µt²&}Ä{Ä{UM{ëL}Å{Ä{VM}Æ{Æ{³( ¥9ò{Å¥åoL }Ð }Ó{Ðoï 9¦{ÐoM }Ç{³{´{Ç(ó¥Úo: }Ò }Ó{Òoï ,1{Òo; }Ñ }Ó{Ñ}Ô*}Ñ+ }Ó{Ò(i+}Ò}Ç8Jÿÿÿ}Ó{Ð(s+}Ð+þN+}Æ}Åþ²&}Ä}Ó}Ô*0€e {ÓYE+8Z{ÓE $'*06<+?8ã+6+@+<+3+f+O+K8†+o+k8§8Œ8…8ª8¤8ž}Ó{É(i+8ƒ}Ó{Ì(i+}Ó{Ê(u++W}Ó{Ï(i+}Ó{Í(v+++ }Ó{Ò(i+}Ó{Ð(s+}Ó}Ô Þ t   Þ&8‹þÿÿþ,z*AFc 0”{ÓE !$'*-+-+D+'+*+%+ +'+"++$+++!+++**************"{Ô*0&‚Ê{³{´{µþ¯&þN+þ°&þ®& þN+þ±&þN+þ²&þN+s¥*0L}Õ}Ö}×}Ø}Ù}Ú}Û}Ü }Ý(8 *02{ÜYE +8â8µ8¥8ñ{×¥èoP }Ù}Ü{Ùoï 9£{ÙoQ }Ø{Õ{Ö{Ø(ô¥Úo: }Û}Ü{Ûoï ,0{Ûo; }Ú}Ü{Ú}Ý*}Ú+Ã}Ü{Û(i+}Û}Ø8Mÿÿÿ}Ü{Ù(u+}Ù}Ü}Ý*0¥e {ÜYE+8€{ÜE ++5++++)}Ü{Û(i+}Ü{Ù(u+}Ü}Ý Þ t   Þ&8fÿÿÿþ,z*lˆ ê{ÜE +++ +++****"{Ý*0 {Õ{Ö{×s«*0L}Þ}ß}à}á}â}ã}ä}å }æ(8 *02{åYE +8â8µ8¥8ñ{à¥ìoT }â}å{âoï 9£{âoU }á{Þ{ß{á(õ¥Úo: }ä}å{äoï ,0{äo; }ã}å{ã}æ*}ã+Ã}å{ä(i+}ä}á8Mÿÿÿ}å{â(w+}â}å}æ*0¥e {åYE+8€{åE ++5++++)}å{ä(i+}å{â(w+}å}æ Þ t   Þ&8fÿÿÿþ,z*lˆ ê{åE +++ +++****"{æ*0 {Þ{ß{às±*V(V }ç}è*0Z {ç{è(÷(x+ (W , (X ( *{ç{è(÷ (W , (X ( **(Y **(£ *rR9p*(£ *rR9p*0N(ž‹E***0+(ŠŒE9o‰ü*t³% {üJ {I([ (\ {I(?¥{I(@¥XsZ {I(A¥{I(B¥XsZ (( () ()  sZ ([ *t´%{K{þJ{IsÉ(y+ (?¥(@¥XsZ (A¥(B¥XsZ (( () ()  sZ ([ *t¶%{K{K{IsË(y+ (?¥(@¥XsZ (A¥(B¥XsZ (( () ()  sZ ([ *t¬%{ÖJ  (À  9¦   (\ (] (^ 9† (\ (] (^ (^ ,f (^   (^ (^ -J  (_ (  (_ (  (\ (`  (_ (  (_ (  *  *  +ø  +ò  +ì0(ŠŒ3t«% {ÑJYE*{ÓJ(ŠŒ3î{ÓJt«% {ÑJYE+Ï{ÒJ,Ç{ÓJ(ŠŒ3¸{ÓJt³% {ÔJ(ŠŒ3{ÔJt´% {ýJ9†ÿÿÿ {þJ{I( 9qÿÿÿ {þJ{I( ( :Sÿÿÿ{üJ{IrÍ`p(ñ 95ÿÿÿ{üJ(  {ÿJ{ÕJ {K {I*0Õ(ŠŒ3t«% {ÑJYE(Á*{ÓJ(ŠŒ3é{ÓJt«% {ÑJYE+Ê{ÒJ,Â{ÓJ(ŠŒ3³{ÓJt³% {ÔJ(ŠŒ3˜{ÔJt³% {üJ{IrÍ`p(ñ 9nÿÿÿ{üJ {üJ{ÕJ{I*0ˆ oa -t(E,c(?¥ (@¥X sZ (A¥(B¥X(Âs› (b (c þ sd (e sf *sf *sf *0µ(ŠŒE96³ oa :•oŒŒ(E,zoŒŒ (?¥ oŒŒ (@¥XsZ oŒŒ (A¥oŒŒ (B¥Xs› (b (c sd (e (g sh *(g sh *(g sh *tÎ%{\K {[K (E,Y(?¥ (@¥XsZ (A¥(B¥Xs› (b (c sd (e sh *sh *tš%  {ŒJ(«‰3r {J (E,Y(?¥ (@¥XsZ (A¥(B¥Xs› (b (c sd (e sh *sh * 8<þÿÿ0!(»ˆ 9ö(i (j (ŠŒ@à(i (j tœ% {‘J (i (j (i (k (i (l {’J{“J(i (m  oa -t(E,b(?¥ (@¥X   sZ  sÍ(( (n (z+({+ þ    sd (e sh *sh *sh *(»ˆ,a(i (j (»ˆ,J(i (j (ŠŒ36(i (j (i (k (i (l  (|+*(»ˆ,J(i (j (»ˆ,3(i (j (i (l  (}+(o sh *(»ˆ,D(i (j (i (k (i (l (i (m  (|+*(~+*09(ž‹3 tx% sÏ{J{Iþ(y+*rR9p([ (\ *0(—¥  sëþ(+*0(Ç ,**(³ *"{I*(³ *"{I*(p *v(A¥(B¥X(Âs› *(³ *"{I*(q *0 (™ (š (› sZ *(r *0 (™ (š (› *(q *0 (™ (š (› sZ *(r *0 (™ (š (› *(s *"(¿*(t *^(A¥(B¥XsZ *(u *0ê"(ž‹E]*t†% {7J(ž‹3è{7Jtx% {J{I( ,Ê{J{I ( ( -±( {I*tx% {J{I( 9‡ÿÿÿ{J{I ( ( :kÿÿÿ( {I*(s *"(¿*(³ *"{I*(t *^(A¥(B¥XsZ *(u *0ê"(ž‹E]*t†% {7J(ž‹3è{7Jtx% {J{I( ,Ê{J{I ( ( -±( {I*tx% {J{I( 9‡ÿÿÿ{J{I ( ( :kÿÿÿ( {I*(q *0 (™ (š (› sZ *(r *0 (™ (š (› *F}éov &*0 è((ŠŒE9 þow *tŸ% {œJ {J {é(€+ (x  (y -,(z *þow *({ (| ({ (} ({ (~  (Æ  o ‹  (?¥o ‹  (@¥XsZ o ‹  (A¥o ‹  (B¥XsZ sÑ ¥ü(+(‚+sÓ ¥ü(ƒ+(p+sb( *t«%  {ÔJ  {ÓJ  {ÒJ ow ,*{é(€+ (x  (y -,(z *þow *({ (| ({ (} ({ (~   (À9É(\ (] (^ 9©(\ (] (^ (^ 9„(^ (^ (^ -g(_ (_ (\ (`  ,* sÕ ¥ü(+(‚+s× ¥ü(ƒ+(p+sb( **+ø+ò+ìt¬%{ÜJ {ØJ{ÖJ {×J{ÙJ{ÚJow :(I¥(D¥ (E¥(¥{é(E,sÙ(„++9Ôrå`p([ (\ oŒŒ(?¥oŒŒ(@¥XsZ oŒŒ(A¥oŒŒ(B¥XsZ (?¥(@¥XsZ sÛ¥(…+ (A¥ (B¥XsZ (( () ¥Ú(†+(‚+þsÝ¥þ(‡+(p+sb( ***0 †*(ž‹@xty% {J(ž‹@`{Jtx% {J9I{J {J ($ {J{J{I{J{J{J {J oc‰ (I¥(D¥(E¥(¥  {é(E,sß („++9±sá(y+ (?¥ (@¥XsZ  (A¥ (B¥XsZ (?¥(@¥XsZ sã¥(…+(A¥(B¥XsZ (( () ¥Ú(†+(‚+þså ¥þ(‡+(p+sb( ***0 +ow :(I¥(D¥(E¥(¥ {é(E9Ù{é(€+ (x 9¼ ({ (| ({ (} ({ (~ (Æo ‹  (?¥o ‹  (@¥XsZ o ‹  (A¥o ‹  (B¥XsZ sç¥ü(+(‚+sé¥ü(ƒ+(p+sb( ****²}ê}ë}ì}í}î(• *0Æ{íYE ++i+\8Š8‹{ê¥7og }ì}í{ìoï ,0{ìoh }ë}í{ë}î*}ë+Ã}í{ì(+}ì}í}î*}í}î*0”e {íYE+8o{íE ++$+ + +++}í{ì(+}í}î Þ t   Þ&8wÿÿÿþ,z*[w ê{íE +++ +++****"{î*0 {êsï*ž(<¥(K+,*(<¥(K+,*(¥*07,s€ (ˆ+ ( -(<¥* s ( ( þ(‰+*~*f(H¥s (Š+(õ*0B0uz&,tz& {±L(‚ o ‹*ty& {°L s(<¥þ(‹+*0/.(ƒ (Œ+(†+ X (ƒ o… († X*0/2(ƒ (+ rñ`ps7 (Ž+ sþ(+*0NrR9p(ñ -rS@p( +rR9p(¨ˆ( Z([(ús‰ *0NrR9p(ñ -rS@p( +rR9p{I( Z([(ús‰ *ž(¨ˆZ([(¨ˆ(úsŠ *ž{IZ([{I(úsŠ *0Ù7{5L {7L {4L{+L (ŠŒ3t›%{ŽJoŒŒ+oŒŒ (E@:t-&9,9#{ëK{I(‹ {AL(&E{?L, + (?sŒ + (AsŒ   (   (Ž  ( ,]  ( ( ,1 ( (  ( (+{Is +# ( {Is +  s   (  (‘      (¥(þ(’ (“ *(E3At-&{ëK{I(C(T+{I (¥(þ(’ (“ *(’ *0 ÅAt& {òL (‰EmÞP(” *tg& {ˆL {‡Ls(‘+(’+(=(÷o• (õ(“+(” (– *th&{ŠL {‰L þN+ s#(‘+(’+(=(÷o• (õ(“+(” (– *ti&  {L  {ŒL   þN+ s)(‘+(’+(=(÷o• (õ(“+(” (– *tl&  {šL (=(÷o• (õ(“+(” (– **s/*0MEs1(”+ s3¥ (•+ s5(<¥(–+s7(—+ ¥ (˜+s— *Bs9þ(™+*Js;þ(š+*0¦J(›+ Œ,+ r¨9ps‚ zŽi E Y2G £(˜ (™ {(ûoZ¤EXX3¹ s?(œ+{(ûoZs_*0ÏQ(+sœ s   o þs=(ž+(Ÿ+  Œ,+ r¨9ps‚ z Ži  F   Y   2=    £(ž (Ÿ (  (¤F X   X3à sA( +s`*~*:(¡ }¢ *N{¢ o£ {*(¤ *&(õ*(¥ *0R(˜ (™ *:(¦ }ð*:{ð(¡+*(§ *0S(¨ (© (ª *(« *:{ÈL(õ*:(Ó }ñ*B{ñþo  *:(Ù }ò*0¸{òoÚ s*:(¬ }ó*0º{óo­ s*:(® }ô*>{ô(*0D}õ}ö}÷}ø}ù}ú}û}ü(¯ *0 {ûYE +8É8¨8Þ{ö¥o° }ú}û{úoï 9{úo± }÷{÷{©L}ø{÷{ªL}ù}û{õ{ø(E{ù(ù{ø{I(¥(ÿ}ü*}ù}ø}÷8`ÿÿÿ}û{ú(¢+}ú}û}ü*0‡e {ûYE++e{ûE + ++++}û{ú(¢+}û}ü Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ûE + + +++***"{ü*0 {õ{ös*0D}ý}þ}ÿ}}}}}(¯ *0 M{YE +8»8’8Ð{þ¥o² }}{oï 9‚{o³ }ÿ{ÿ{§L}{ÿ{¤L}}{ý{(C{(ÿ}*}þN+}}ÿ8nÿÿÿ}{(£+}}}*0‡e {YE++e{E + ++++}{(£+}} Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{E + + +++***"{*0 !M{ý{þþN+s#*0D}}}}} } } } (¯ *0 M{ YE +8Ð8£8å{¥o´ } } { oï 9—{ oµ }{{ÈL}{{ÃL} { þ,4} {{ o¶ (C{(ÿ} *+} þN+}}8Yÿÿÿ} { (¤+} } } *0‡e { YE++e{ E + ++++} { (¤+} }  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ E + + +++***"{ *0 !M{{þN+s)*r(· } }}*0 ÓT{÷L {øL {ùL {öL{ÌL { {((¸ u&,{ { (*tŽ&{ðL{ñL{ {((¸ (’+ { { (=(÷ o• (õ (“+(” (– *V(¹ }}*0 ýXo’‘(‘E / '~Ns­(’ 8®t™&{M {oº (¥+8Št–&{M {(8kt& { M{ÃL,ž{ M{ÃL { M{ÄL (¶ {(Co ‹(ÿ(’ (“ 8 tŸ&{'M{+M{(M{-M {)M {&M {%M {,M {(C{I(ÿ(’ (“ 8’tš&{M{ÔL{M{ÒL{(? o ‹(ÿ(’ (“ +Fr aps\ zt›&{M9nþÿÿ{M(O {{((¸ s— *(» *"(¼ *(¤ *&(õ*(½ *"(¸ *:(¾ }*03Y(’3$t¯& {NM {oº þ(¥+*(’ *r(¿ }}}*0 ](’E SL(” *t­& {HM {GM {FM {{ (;(©ˆ(’ (¦+(” (– *t®&{LM {IM{ÌL {JM{({rR9p(ñ ,rR9p+{rS@p( (¨ˆ( {{({{(;(÷o• (©ˆ(§+(õ(“+(– *t±&  {SM {{{( þ(¨+*t²&  {UM{ëL  {VM  {UM{êL{åL{©L  {UM{êL{åL{ªL {{ ((¸ {{ (9 (ù(¦+(” (– *r(À }}}*0 Æ^{“M {ŽM {M {M {- (¨ˆ+rR9p{ ({{ ((¨ˆ,(7+(5T(÷o• (©ˆ(§+(õ{([{(¨ˆ(úsÁ (– *( *N{{( *(à *v{{{{( *0#`s  s€Fs`€*0T(D¥(E¥(¥,(D¥(¥,(E¥(¥**(D¥(¥,(E¥(¥**‚(D¥(¥,(E¥(¥**>sÄ sÅ *0°esÆ (©+ (Ç ," (Ç (Ç -(È þoÉ **oÊ ¥#oË oï ,*oÌ (Í (D¥(¥, +Ð+ÍÞu , oâ &Ü&Ü&sÎ þ(ª+*L8„b(Ð -*þ(«+*6sÑ *0 )hsÒ sÓ sÔ *0Gj{M {“M ([(Õ sÖ (¬+ (­+ þo× *0Bl -(.¥3 þoØ ** (Ù (¥, þoØ **0Ânt¥% {¼J ( ,0 ( (e3 ( t{$(ŠŒ þ+ ,8V(ŠŒE9 ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ8 ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ8ÿÿÿt³%{üJ(Ú (Û (( (]‰(Ü oØ +/t´%{ýJ,8¼þÿÿ{þJ(Ü oØ þ,*þoa *0 nrsÝ sÞ  oŒŒo®+¥o¯+¥3oß  sà oá þoâ *0 tsã sä *0Žv{ùL {÷L {øL {öL (](Õ  þŽ&þ&þl& þN+ så (°+(±+þo× *.sæ *0 _}sç sè (_(Õ (‘E !Ø%'°Þà¹*t–&  {Mþ(²+**t˜&{M{M{Mo ‹sé (³+oŒŒsê (³+(ë (ì (ì (´+  o’‘ (µ+þo× *tŸ&  {-Mþ(¶+*t™&  {M sí  (·+(´+  o’‘ (µ+þo× **t›&{M{Moî -],W(O sï (¸+(¹+(°+(´+  o’‘ (µ+þo× ***tœ&{M{Msð þoñ **tž&{"Mþ(º+*0~sò só *0€sô þoõ *0·ƒ(—¥ s• sö  tE }÷ tE}ø tE}ù tE}ú tE}û uù&,*tø&{ÙM{ÐM sü  (»+ ($¥ (¼+ þo× *:( }*sg**(eþ*si**(eþ*sk**(eþ*sm**(eþ*so**(eþ*sq**(eþ*ss**(eþ*{*Zr.8psý (½+oþ *>(V}$*{$*>(V}%*{%*>(V}&*{&*>(V}'*{'*>(V}(*{(*>(V})*{)*>(V}**{**:( }+*2{+{$*:( },*2{,{%*:( }-*2{-{&*:( }.*2{.{'*:( }/*2{/{(*:( }0*2{0{)*:( }1*2{1{***o &**.þoÿ *.þo *.þo *.þo ****V( } } *V{ { þo *:( } *0E…( ( { (D, (D¥(E¥(¥þ+,( **( **þ(¾+*²( } } } } } *0 -{ { { { { Œþ(¿+*r( }:};}<*z{:{;{<s Œ*’( } } } } *’{ { { { s ŒR*²( } } } } } *0 1ˆ{ { {:{;{<(À+þo *²(! }" }# }$ }% }& *0 ){" {# {$ {% {& þ(Á+*²(' }( }) }* }+ }, *0 ){( {) {* {+ {, þ(Â+*Ò(- }. }/ }0 }1 }2 }3 *0 7o’{. {/ {0 {1 {2 {3 (Ã+(Ä+*V(4 }5 }6 *~o{5 {6 o7 (Å+*V(8 }9 }: *~{ùL{9 {: o; (Æ+*0T(< }= }> }? }@ }A }B }C }D  }E  }F *0 ‹(Y{B (Õ (’E U”Ê   *t®& {JM {= {> {? {@ {A sG (Ç+ {F {E oH þoI *t¯&{NM{D sJ (È+ {F {E oH þoI *t°&{= {> {? {@ {A {QMþ(É+*t±&{SM{C sK (Ê+ {F {E oH þoI *****t¶& {= {> {? {@ {A  {]Mþ(Ë+*0D(< }L }M }N }O }P }Q }R }S *0qŽ{P o’ oÌ+¥oÍ+¥_oT {L {M {N {O {P {Q {R {S sU {L þoV *Ò(- }W }X }Y }Z }[ }\ *0 7o’{W {X {Y {Z {[ {\ (Ã+(Ä+*²(] }^ }_ }` }a }b *0 ){^ {_ {` {a {b þ(É+*²(' }c }d }e }f }g *0 ){c {d {e {f {g þ(Â+*:(h }i *RoŒŒ{i (Î+*:(h }j *RoŒŒ{j (Î+*ò(k }l }m }n }o }p }q }r *0hoŒŒ{m ( ¥- {q þ+,|n (.¥|r (@¥þ+,{l {o þos *{p þoÿ *²(t }u }v }w }x }y *0 -{u {v {w |x (@¥{y þ(Ï+*²(z }{ }| }} }~ } *0 ]{~ - þ(Ð+*{~ (€ ( (€ (‚ {{ {| {} { sƒ (Ñ+þ(Ò+*²(t }„ }… }† }‡ }ˆ *î{… |‡ (E¥(¥, {„ {† {ˆ ( þos **²(z }‰ }Š }‹ }Œ } *0 8{Œ {‰ {Š {‹ {Œ { sŽ (Ñ+þ(Ò+*( *"( *r(‘ }’ }“ }” *0A{” oc‰{“ ( ¥,&(• (– (— {’ þos **0L(k }˜ }™ }š }› }œ } }ž }Ÿ  }  *0m{  oŒŒ{™ ( ¥- {ž þ+,|š (.¥{Ÿ þ+,{˜ {› { þos *{œ þoÿ *Ò(t }¡ }¢ }£ }¤ }¥ }¦ *0 -{¡ {¢ {£ {¥ {¦ {¤ þ(Ï+*Ò(z }§ }¨ }© }ª }« }¬ *0 c{« ,S{« (€ ( (€ (‚ {§ {¨ {© {ª {¬ s­ (Ñ+þ(Ò+*þ(Ð+*0T(z }® }¯ }° }± }² }³ }´ }µ  }¶  }· *0Ñ’{³ -{¶ oc‰ (@¥+{³ (¸ (¹ (@¥ {· -(Ð++U{· (ô oŒŒ{® {¯ {° {± {² {´ {µ sº (Î+(Ò+{® {¯ {± {´ {µ s» (Ó+þ(Ô+*ò(¼ }½ }¾ }¿ }À }Á } }à *0““(G (E (Ä (F {À {à (Ü sÅ oc‰{½ {¾ sÆ (Õ+(Ò+{½ {¾ {¿ {À {Á { {à sÇ (Ó+þ(Ô+*0D(z }È }É }Ê }Ë }Ì }Í }Î }Ï *0 OÀs½{Ï (Ö+ {È {É {Ê {Ë {Ì {Í sÐ {Î ¥yþ(×+*0D(z }Ñ }Ò }Ó }Ô }Õ }Ö }× }Ø *0 ²•{Ø ,a{Ø (Ù (Ú ( (Ù ( oŒŒ{Õ (Î+(Ò+{Ñ {Ò {Ô sÛ (Ó+(Ô++(Ð+{Ñ {Ò {Ó {Ô {Õ {Ö {× {Ø sÜ (Ó+þ(Ô+*0D(z }Ý }Þ }ß }à }á }â }ã }ä *0 Ü–{â 9‡{â (¸ (å (¸ (¹ (¸ (æ oŒŒ{Ý {Þ {ß {à {á sç (Î+(Ò+{Ý {Þ {à sè (Ó+(Ô++(Ð+{Ý {Þ {ß {à {á {â {ã {ä sé (Ó+þ(Ô+*:(ê }ë *B{ë þoì *(í *"{L*0œ}î }ï }ð }ñ }ò }ó }ô }õ  }ö  }÷  }ø  }ù  }ú }û }ü }ý }þ }ÿ } ( *0 ¹˜{ÿ YE !'+*8¯8E858K888Z{ô 9 {ô }õ {õ ( ( }ö {ñ {ö {ñ o ‹{ö oŒŒ(¥(&Œ}÷ }ÿ {÷ {÷ oŒŒ{ð (Î+} *}÷ }ö þ}õ +{ó ¥ßo> }ü }ÿ {ü oï ,Q{ü o? }ø }ÿ {ø {ø o{î {ï o7 (Å+} *}ø +¢}ÿ {ü (k+}ü {ò ¥äo }ý }ÿ {ý oï 9Ë{ý o }ù {ù {L}ú {ú ¥ßo> }þ }ÿ {þ oï ,Q{þ o? }û }ÿ {û {û o{î {ï o7 (Å+} *}û +¢}ÿ {þ (k+}þ }ú }ù 8%ÿÿÿ}ÿ {ý (Ø+}ý }ÿ } *0Ôe {ÿ YE+8¯{ÿ E ++X+T+;+7++++C}ÿ {þ (k+}ÿ {ý (Ø++}ÿ {ü (k++}ÿ }  Þ t   Þ&87ÿÿÿþ,z*›· 0U{ÿ E ++!++++ +++ *******"{ *0E˜{î {ï {ð {ñ {ò {ó {ô þs *Ò( } } } } } } *0 7oå{ { { { { { (Ù+(Ú+*Ò( } } } } } } *0 7oä{ { { { { { (Ù+(Ú+*0\} } } } } } } }  }  }  } ( *0 ¨{ YE + +1+v+z} { { oŒŒ{ (Î+} *} { { { { { { s { (Û+¥……*} } *&} *Æ{ E + + +++***"{ *0?{ { { { { { { { { s *V(4 }! }" *~o{! {" o7 (Å+*0L}# }$ }% }& }' }( }) }*  }+ ( *0ú{* YE +8+r8»8¼{# {$ s, {' (È+¥…o- }) }* {) oï ,0{) o. }( }* {( }+ *}( +Ã}* {) (Ü+}) }* {& {& oŒŒ{% (Î+}+ *}* }+ *0”e {* YE+8o{* E ++$+ + +++}* {) (Ü+}* }+  Þ t   Þ&8wÿÿÿþ,z*[w ê{* E +++ +++****"{+ *0 ){# {$ {% {& {' s/ *Ò( }0 }1 }2 }3 }4 }5 *0 7oå{0 {1 {2 {3 {4 {5 (Ù+(Ú+*0\}6 }7 }8 }9 }: }; }< }=  }>  }?  }@ ( *0 ¨{? YE + +1+v+z}? {> {> oŒŒ{< (Î+}@ *}? {6 {7 {8 {9 {: {; sA {= (Û+¥……*}? }@ *&}? *Æ{? E + + +++***"{@ *0?{6 {7 {8 {9 {: {; {< {= {> sB *0D}C }D }E }F }G }H }I }J ( *0À{I YE ++:+b8¬8Ç}I {F {F oŒŒ{C (Î+}J *}I {E {E oŒŒ{C (Î+}J *{D ,a{D }G {G (ô }H }I {H {H oŒŒ{C (Î+}J *}H þÃ}G +}I }J *&}I *ö{I E ++++ ++ +****"{J *0 +À{C {D {E {F þÃsK *:(h }L *RoŒŒ{L (Î+*²}M }N }O }P }Q ( *0Š{P YE + +1+X+\}P {O {O oŒŒ{M (Î+}Q *}P {M sR {N (Ý+¥……*}P }Q *&}P *Æ{P E + + +++***"{Q *0 {M {N {O sS *:(h }T *RoŒŒ{T (Î+*0D}U }V }W }X }Y }Z }[ }\ ( *0){[ YE ++C8§8—8à8á}[ {X {X oŒŒ{U (Î+}\ *{U s] {V (Ý+¥…o- }Z }[ {Z oï ,0{Z o. }Y }[ {Y }\ *}Y +Ã}[ {Z (Ü+}Z }[ {W {W oŒŒ{U (Î+}\ *}[ }\ *0že {[ YE+8y{[ E ++*+&+ + +++}[ {Z (Ü++}[ }\  Þ t   Þ&8mÿÿÿþ,z*e 0C{[ E ++++ +++*****"{\ *0 #{U {V {W {X s^ *0\(k }_ }` }a }b }c }d }e }f  }g  }h  }i *0} «(W{d (Õ {f oj (ŠŒE9[]u°ëYq{ü`x‘©i™Ph¹ „œ^`bz’ö>÷[ Ü ô $ < T V n “† ˆ   ¸  4 6 8 : < > V t˜% {ƒJþoÿ *t™% {‰JoŒŒ(Î+(k (l {i {e om þoI **t›%{ŽJþoÿ *tœ%{‘Jsn (Ý+{i {e om þoI *t%  {•Jso (Ý+{i {e om þoI *tž%  {—J  {™J  {˜J {_ {b {h    sp (Ó+(Þ+(ß+{i {e om þoI *tŸ%{Jþoÿ *t %{ŸJ{¢J{¡J{ J{_ sq sÓ¥ä(à+(á+þ,*{g þs (ß+{i {e om þoI *t¡%{§J{¦JoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t¢%{®J{­J{«JoŒŒ(Î+oŒŒ(Î+oŒŒ(Î+(k (l (l (l {i {e om þoI *t£%{µJ{´JoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t¤%{¸Jþoÿ *{_ {d þ(â+*t¦%{ÁJþoÿ *t§%{ÅJ{_ {` {a {b {c ss (Û+{i {e om þoI *t¨%{ÊJ{ÉJ{_ {` {a {b {c s (ß+{i {e om þoI *t©%  {ÍJþoÿ *tª%!!{ÏJþoÿ *t«%""{ÔJ"{ÓJ"{ÒJ,JoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *oŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t¬%##{ÖJþoÿ *t­%$${àJ${ßJ{g s/ (ß+{i {e om þoI *t®%%%{äJ%{âJ{_ {` {a {b {c sB (ß+{i {e om þoI *t¯%&&{êJ&{éJoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t°%''{îJþoÿ *t±%(({óJ({òJoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t²%)){÷J*){öJ){õJ*+þÃ+sK (ß+{i {e om þoI ***tµ%,,{Kþoÿ *t¶%--{Kþoÿ *t·%..{ K.{KoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t¸%//{ K/{ KsS (ß+{i {e om þoI *t¹%00{K0{K0{Ks^ (ß+{i {e om þoI *tÄ%11{7K1{5KoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *tº%22{K2{KoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *t»%33{K3{K3{KoŒŒ(Î+oŒŒ(Î+oŒŒ(Î+(k (l (l (l {i {e om þoI *t¼%44{Kþoÿ *t½%55{"Kþoÿ *t¾%66{%Kþoÿ *t¿%77{(Kþoÿ *tÀ%88{*Kþoÿ **tÂ%99{.Kþoÿ *tÃ%::{3Kþoÿ **tÆ%;;{;Kþoÿ *tÇ%<<{>Kþoÿ *tÈ%=={EK={DKoŒŒ(Î+oŒŒ(Î+(k (l (l {i {e om þoI *tÉ%>>{GKþoÿ ******tÏ%??{]Kþoÿ *tÐ%@@{_Kþoÿ *²(t }u }v }w }x }y *0 *{u {v {w {x {y þ(ã+*(z **(z **0D(t }{ }| }} }~ } }€ } }‚ *0 r¬{{ {| {} {~ { {€ sƒ {‚ (ã+ ,*{{ {| {} {~ { {€ s„ { þ(ã+*0D(… }† }‡ }ˆ }‰ }Š }‹ }Œ } *0 ¡¯(Ž ( (ä+ ( -* ( ( 9B ( (‘ (‘@&(‘ t–&{M{5L(E@{M{5Lt-&{ìK9â{ìK( ( :È (‘ (‘@· (‘ t–&{M{5L(E@“{M{5Lt-&  {ìK,w {ìK (‘  (‘  {ëK  {ëK(¶  (¶ {† {‡ {ˆ {‰ {Š {‹   s’ s“ (” ** (‘   { {‹ {Œ (å+(æ+(” *(– *"o’‘*0D(— }˜ }™ }š }› }œ } }ž }Ÿ *0 N{˜ {™ {š {› {œ { {ž {Ÿ s  s¥å(ç+þ(è+*r(£ }¤ }¥ }¦ *n{¤ {¥ {¦ þo§ *’(z }¨ }© }ª }« *0 1°(¬ (­ {¨ {© {ª {« þo® *(z **0´}¯ }° }± }² }³ }´ }µ }¶  }·  }¸  }¹  }º  }» }¼ }½ }¾ }¿ }À }Á } }à }Ä ( *0 ¯±{à YE +8î8Þ8¾8c8d{´ u&9ç{´ t&}¼ {¼ {òL}½ {½ (‰@—{½ tl&}¾ {¾ {™L}¿ {¾ {šL}À }à {´ {´ oa‘{¯ {¿ {À sÅ (é+}Ä *þN+}À }¿ þl&}¾ +}½ þ&}¼ 8{´ tŽ&}¸ {¸ {ïL}¹ {¸ {ðL}º {¯ {¶ {¹ {º sÆ }» {¯ {° {± {² {³ {· {» (ê+{º oÇ o- } }à { oï ,0{ o. }Á }à {Á }Ä *}Á +Ã}à { (Ü+} }» }º }¹ þŽ& }¸ }à {¯ {° {± {² {³ {· sÈ (ê+{µ oÇ …*}à }Ä *0že {à YE+8y{à E ++*++ + +++}à { (Ü++}à }Ä  Þ t   Þ&8mÿÿÿþ,z*e 0C{à E ++++ + ++*****"{Ä *0j²{¯ {° {± {² {³ {´ {µ {¶ {· þŽ&þ&þl&þN+ sÉ *²(] }Ê }Ë }Ì }Í }Î *0 ){Ê {Ë {Ì {Í {Î þ(É+*²(' }Ï }Ð }Ñ }Ò }Ó *0 ){Ï {Ð {Ñ {Ò {Ó þ(Â+*’(Ô }Õ }Ö }× }Ø *0 %{Õ {Ö {× {Ø o’‘(ë+*ò(t }Ù }Ú }Û }Ü }Ý }Þ }ß *0 T¬{Ú {Ý {ß sð oà -1{Ù {Û {Ü oj {Ý {Þ {ß þoá **Ò(t }â }ã }ä }å }æ }ç *0 2{â {ã {ä oj {å {æ {ç þoá *V(4 }è }é *~o{è {é o7 (Å+*(z **ò(z }ê }ë }ì }í }î }ï }ð *0 ={ê {ë {ì {í {î {ï sñ (ê+{ð þoÇ *²(] }ò }ó }ô }õ }ö *0 ){ò {ó {ô {õ {ö þ(É+*V(h }÷ }ø *~oŒŒ{÷ {ø oj (Î+*²}¨}©}ª}«}¬(ù *0‹À{«YE + +4+Y+]{¨,8{¨}ª}«{ª(ô }¬*þÃ}ª+}«{©}¬*}«}¬*&}«*Æ{«E + + +++***"{¬*0 À{¨{©þÃs;*²(ú }û }ü }ý }þ }ÿ *0 d³{"L {#L {þ {ÿ s þà s;(ì+(Ý+ {û {ü {ý oå(í+þoI *Ò(ú } } } } } } *0 Bµ(a{ (Õ { { { { s { þo *Ò( } } } } } } *0 >{ { { { { (c{ (Õ {7Lþ(É+*²( } } } } } *0 ){ { { { { þ(Ë+*:( } *z{“M{ ( o (î+********** * * * * ************** *!*"*#******** ¢* £* ¤* ¥* ¦* §* ¨* ©* ª* «* ¬* ­* ®* ¯* °* ±* ²* ³*0Õ¹(nxEÀ4Izl^‹œ­¾¾*tn{ C *to{!C +ðti {C( +Ûtj {C( +Ætk {C( +±tp{"C +£tm{C +•tl{C 8„ÿÿÿtq{#C 8sÿÿÿtr{$C 8bÿÿÿts{%C 8QÿÿÿoÉ“(¯“*~Å***~Æ*******~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*0˼  o oï ,/o ( (‹“3_b` +X +É Þu , oâ &Ü&Ü &jb(‘_b(’_`(/¥jb(“_`,+j(Ž?_b(”_`j(?_b(•_`j(?_b(–_`* ;G0 È¿(R (•_(?_ci 1e(–_(?_ci  2FY_b_-(‡“+(‰“($¥s ( X X3º+(‘_ci(’_ci(“_ci(1¥(”_(Ž?_c!þs *0/Î(Ç“E 'ÜZŽI¸ï'Zt'{ N !(#¥s! 8™t' {N {N{ N  j(D¥s! 8ft '{'Nu',.{'Nt'{ùM  !(#¥s! 8"{'Nt'{ûM {üM{úM  j(D¥s! 8ät'{N{N !(D¥s! 8®t'{N {N{N  j(D¥s! 8wt'  {N  {N {N  j(D¥s! 8?t'  {N  {N {N  j(D¥s! 8t'  { N  {!N {N  j(D¥s! 8Ñt'  {#N  {$N {"N  j(D¥s! 8™t'  {&N {%N !(D¥s! +ft'{N{N  !(D¥s! +2t'{N{N  !(D¥s! (" (# ($ (% ¥·(ï+*0³Ð(˜ (E (& (' (( () YEjYE *C]w‘ªÃÚö(R (¯“8* r1ap(¥(±“8r1ap(¥(³“8÷ r1ap(¥(¹“8Ý r1ap(¥(½“8à r1ap(¥(¿“8©r1ap(¥(Ó8r1ap(¥(µ“8w r1ap(¥(»“+` r1ap(¥(˜“(Å“+D(–“(Å“+5r1ap(¥(·“+ r1ap(¥(Á“+(¯“s* *þ{«A(+ (n o, ,*{ªAsS {¬A{­A{®As\v*0¤Ò(Ç“E Ayø0±è Y’Ët ' {'N þ((v*t' { N (› Vþ(&v*t' {N {N { N (› þ('v*t'{N{N d(es(›þ(v*t'{N{N{N (›þ(v*t'{N{N{N (›þ(v*t'  {N {N {N (›Rþ(.v*t'  { N {!N {N (›9þ(/v*t'  {#N {$N {"N (›þ(0v*t'  {&N {%N (›þ(1v*t'  {N {N d(esŸ(›þ(v*t'{N{N d(es¡(›þ(v*(- *Z(ˆ ŽioX (jx*(- *Z(ˆ ŽioX (jx*(- *Z(ˆ ŽioX (jx*"(¤*0Õ(nxEÀºººÕ̺ºÃßéÌŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ?––––{–HH„„{„5HŸŸŸHgqqq+ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸFŸŸŸŸŸŸŸ¨ŸŸŸŸŸ±!ŸŸŸŸŸŸŸŸŸ„–ŸQ\ŸŸŸOOûOOOOOOOOOOYOOÁÁcÁÁÁËòûûtœ{NC ob 0 s. *o^ (/ o^ 3 s. *s. *s. * s. * s. *t– {HCr;ap(ñ , s. *{HCrCap(ñ ,+ã{HCrMap(ñ ,+Ï{HCrUap(ñ ,+» s. *t› {MCr_ap(ñ ,8“ÿÿÿ{MCrgap(ñ ,8|ÿÿÿ{MCroap(ñ ,¯8eÿÿÿ s. * s. * s. * s. *s. *s. * s. * @s. *s. *Bs. *s. *s. *s. *s. *s. *s. *s. *s. *s. *s. * s. * s. *s. *s. *s. *rwaps\ zrR9p**rR9p***~Ä*"(ª&*0¶Ö(y {Ù {Ù  /+ þ /*1*(y {Ú{Ú/+þ/*1*(y {Û{Û( /*1*(y {Ü{Ü/*þ*0 ×(y {Ö {Ö  /+ þ /*1*(y {×{×/+þ /*1*(y {Ø{Ø/+þ / * 1 *(¬*0™Ø{Ù {Ù /+þ /*1*{Ú{Ú/+þ / * 1 *{Û{Û( /*1*{Ü{Ü/*þ*0‘Ù1*{Ö {Ö /+þ /*1*{× {× /+ þ /*1*{Ø{Ø/+þ /*1*(®*0¼Í ¹y7ž{ÜbcXXX ¹y7ž{Û , ( +bcXXX ¹y7ž{ÚbcXXX ¹y7ž{ÙbcXXX ¹y7ž{ØbcXXX ¹y7ž{×bcXXX ¹y7ž{ÖbcXXX ¹y7ž{ÕbcXXX *0—ßu> 9‡{Õ{Õ@t{Ö{Ö3d{×{×3T{Ø{Ø3D{Ù{Ù34{Ú{Ú3${Û{Û(ñ ,{Ü{Üþ*********0_Ú{ðo; {ðo: oD {ï, o?o?1(Õ +oD  YsZ *0b ç{öo0 1{öo1 s2 Ý9 {ó{ð(œ (² ( ( (nx3gti{C(3 rR9p(ñ -G{C(4 {C(3 {C( (@¥o/s2 Ýž (nx3htj  {C(3 rR9p(ñ -H {C(4  {C(3  {C( (@¥o.s2 Ý- (nx3htk  {C(3 rR9p(ñ -H {C(4  {C(3  {C( (@¥o.s2 ݼ(nxEÀM§(nx »3_t›  {MCrS@poÕ ,D {MCoÖ (dx X   o*(†wsG s2 ÝE(nx ´3_t”{FCrS@poÕ ,D{FCoÖ (Vx X   o*(†wsG s2 ÝÙ(nx º3_tš{LCrS@poÕ ,D{LCoÖ (bx X   o*(†wsG s2 Ým(nx ¹3_t™{KCrS@poÕ ,D{KCoÖ (`x X   o*(†wsG s2 Ý(nx ¸3_t˜{JCrS@poÕ ,D{JCoÖ (^x X   o*(†wsG s2 Ý•(nx ·3_t—{ICrS@poÕ ,D{ICoÖ (\x X   o*(†wsG s2 Ý)(nx ¶3_t–{HCrS@poÕ ,D{HCoÖ (Zx X   o*(†wsG s2 ݽ(nx µ3_t•{GCrS@poÕ ,D{GCoÖ (Xx X   o*(†wsG s2 ÝQ(nx ³3_t“{ECrS@poÕ ,D{ECoÖ (Tx X   o*(†wsG s2 Ýå(nx ²3_t’{DCrS@poÕ ,D{DCoÖ (Rx X   o*(†wsG s2 Ýy sG s2 Ýdtz{,C( {,C( (†w  o*s5 ( x YsG s2 Ý tš{LC(ºV9<ûÿÿ{LC(6 (7 (6 (8 ,%(9  ŽiX   o*+ŽiY  0Cs·(ð+ X ob YXX o*Y Y3½s¹(ð+ ob YXsG s2 Þ!t („(wsG s2 Þ*A> ? !0zè9®r‹ap(R oT (ö ( r«ap( rµap(R oT (ö ( rÙap( (À (; (AÀ(œ¥(<  Þ t Þ&rR9p(Ó(W sN Þt( Þ (Õ+ (AÀ€Ä(R (¯“€Å€Æ(‡X€Ç(‡XX€È(‡XXX€É(d¦b€Ê(d¦b€Ë(‡(d¦b€Ì(d¦(Ž?_b€Í(d¦(?_b€Î(d¦(?_b€Ï*T#w  ( *(ž£*(= *&£Ã*(= *&£Ã*V(> }Ñ}Ò*0 9é(3 (5 (4 {Ò{ÑX{ÑXsG o? *’(@ }Ó}Ô}Õ}Ö*0 :{Ó{Ô{Ó{Ô{Õ{Öo+{Öo,*r(@ }×}Ø}Ù*0 ê{×{Ø{Ùo+ {ØoÖ % ¤% ¤oA ob ob Ys˜ (B (C X%/¤% ¤% ¤oó ob /+{Ù(övYsG oJ &oL (fxXYsG oJ &{×{ØX{Ùo,*¦rãaps (ñ+o s\ (D þoE *Î(æoF (E ( ***02ì (3%{  , (G ( (Â*( **0rï } (E+(H oI +7t‘ r?bp{ý(ñ++t’ {þ  (J oI ( *0pñ(E4oK &(H oI  Þt (J oI  Þ*t’ {þ (J oI ( *60ÿô (EÚÉàt‘{ü (L } (E+t‘ {ý(M o2 ,(æoF Þ_-+(N (H oI ( Þ9t- (Þ$(N (J oI ( Þ*t{û 82ÿÿÿ( **iAª90¢ö(EO#bt {û (æoF (*t‘ {ý rSbp(ñ+rSbp (ñ+( *(H oI ( *t’{þ(J oI ( *0÷ (í sO þoò+*~ *€ *(É*( *sP **uÅþ*sQ **uÆþ*0ù uÆ,+*Zr.8psR (ó+oS *0aüþ,X uÅ,(tÅ  ¹y7ž{T (€+bcXXX *tÆ  ¹y7ž {U (ô+bcXXX **6(n oV *0¥ýþ9“uq 9„  uÆ,+   uÆ,+ 3\uÅ,-tÅ tÅ {T {T þ(‚+*tÆtÆ{U {U þ(õ+***þþ*0þþ9‹þ9€uÆ,+   uÆ,+ 3XuÅ,*tÅ tÅ {T  {T þ(„+*tÆtÆ{U {U þ(ö+***þþ*0ùuq , þoW **:(X }T *{T *:(X }U *{U *:( }Y *2{Y {T *:( }Z *2{Z {U *^sá€ásá€â*:( }à*só**(ðþ*~á**(ðþ*~â**(ðþ*"sõ**(ðþ*sø**(ðþ*sú**(ðþ*sü**(ðþ*{à*Zr.8ps[ (÷+o\ *0R(ðE %rqbp*r‡bp*r©bp*rÌ:p*r³bp*r?bp*rÃbp*>(á}ê*{ê*Z(á}ë}ì*{ë*{ì*>(á}í*{í*>(á}î*{î*>(á}ï*{ï*:( }ð*2{ð{ê*:( }ñ*2{ñ{ë*2{ñ{ì*:( }ò*2{ò{í*:( }ó*2{ó{î*:( }ô*2{ô{ï*2s €ö*:( }õ*~ö**(þ*s**(þ*"s**(þ*s**(þ*{õ*Zr.8ps] (ø+o^ *Ò(E rÛbp*rébp*r cp*r)cp*>( }û*{û*Z( }ü}ý*{ü*{ý*>( }þ*{þ*:( }ÿ*2{ÿ{û*:( } *2{ {ü*2{ {ý*:( } *2{ {þ*öo &( oj o_ s= } } s.(` } *V{ (âþoF *R{ (äþoF *06{ s0où+ uÏ,tÏ {b ztÐ{c &*07{ s2où+ uÏ,tÏ {b ztÐ{c &*V{ (êþoF *06{ s4où+ uÏ,tÏ {b ztÐ{c &*0$sd se o((f þ(ú+*0(sg sh { (êoF oi *0  ( (û+*:(j } *:{ oü+*(k *"(ì*:(k } *:{ (è*(k *"(î*V(í }l }m *~{m {l on (o (p *V(í }q }r *05 {r {q on (s Þt (t Þou *’(v }w }x }y }z *0 ²( {z { oo (ðE2[„º ?t„ {ê {w {x {x {y (Â(ý+*{w {x {w {x {y (Ã(ý+*{w {x {w {x {y (Æ(ý+*t… {ë {ì{w {x {y (Å(ý+*t†{í {w {x  oK &{y Þt {y Þ(ý+*t‡  {î{w {x {w {y (Ä(ý+*tˆ  {ï{w {x {x {y (Ç(ý+*)’({ }| }} }~ } *0 7(í {} o€ {| {} {~ { s þoþ+*2s$€ *~µ *6(?oƒ *2(?{„ *~¶ *~· *~¸ *0È(ü (. (- (, s‹ (ÿ+(+oµo(o¼s†  (D o‡   -@(>  (m  (0   (/ (D  oˆ  s‰ + (Š (/ (0 s‹ *sŒ *0!rIcps (ñ+ sô sö *0!rwcps (ñ+ sø sú *Êo &(} { (+} } }‘ *0K{‘ X}‘ { { (o ¤Ö{ X} { { 3} **"{‘ *0°/+ { þ,/r¡cpr¥cps" (+ sO{ (+s“ z (ú { Y,M/ { Y+{ £Ö,(”  ( +YY +° þ()+*:(Ó } *B{ þo  *:(Ù } *0¸{ oÚ sM*.sg€ *( *sc**u¦þ*se**u§þ*~ **u¨þ*0 u¨,+ u§,+*Zr.8ps• (+o– *0Êþ9¶þ9«u¨,+ u§,+ u¨,+ u§,+ 3i  u¦-  u§-)*t¦ t¦ (y {  { ( *t§t§(y { { ( *Y**þ,**:¥¤o[*0Ï¥¤ þ9¯¥¤þ9Ÿu¨,+ u§,+ u¨,+ u§,+ 3]  u¦-  u§-$*t¦ t¦ { { ( *t§t§{ { ( *Y**¥¤þ,**0Žþ9‚ u¦-u§-8u¨-^t¦  ¹y7ž{  , ( +bcXXX *t§  ¹y7ž {  , ( +bcXXX * **6(n o^*0¾þ9¬u¤ 9u¨,+ u§,+ u¨,+ u§,+ 3]  u¦-  u§-$*t¦ t¦ { { (ñ *t§t§{ { (ñ ***þþ*0¸ þ9¦þ9›u¨,+ u§,+ u¨,+ u§,+ 3[u¦- u§-"*t¦ t¦ {  { (ñ *t§t§{ { (ñ ***þþ*0u¤ ,oa**:(R} *{ *:(R} *{ *(R*:( }! *2{! { *:( }" *2{" { *:( }# *{$ *{% *{& *r( }$ }% }& *0–!þ9‚þ9w(y {$ {$ ( /*1*(y {%  {%  /+ þ /*1*(y {&  {&  /* þ**þ,**:¥¬oq*0’#¥¬ þ9r¥¬þ,e{$ {$ ( /*1*{%  {%  /+ þ /*1*{&  {&  /* þ**¥¬þ,**0[Íþ,R ¹y7ž{& bcXXX ¹y7ž{% bcXXX ¹y7ž{$  , ( +bcXXX **6(n ot*0O$þ,@u¬ ,4{$ {$ (ñ ,{% {% 3{& {& þ****þþ*01&r dps— (+ s~{$ {% {& þ(+*0Kþ,<þ,4{$ {$ (ñ ,{% {% 3{& {& þ****þþ*0$u¬ ,ox**:( }' *B{' þo *:(™ }( *0Ò{( oš sz*:(› }) *0({) oœ s|*{* *{+ *{, *{- *{. *{/ *{0 *{1 *0D( }* }+ }, }- }. }/ }0 }1 *( *0Œ)(ž (Ÿ (  (¡ (¢ (£ (  (¡ (¢ (£  (n oe , (ñ +,(n oe +,  (ñ **(¤ *"{e *0Crgdp( rR^p( o¯¤&}2 }3 s¥ }4 s¥ }5 *2þo’*2þo’*>{3 þo¬¤*Îs“{5 (+(+s•{4 (+(+þ( +*0 ¸J,N{2 oÔ{2 oÕ{2 oÖ{2 o×{2 oØ{2 oÓ(Õþ+ -{5 o¦ {3 þo®¤*{2 oÔ{2 oÕ{2 oÖ(Ô,{4 o¦ {3 þo­¤**(§ *&s÷ *(§ *&s÷ *žo &s™(µ+}6 (¡£}7 *j{7 oâ {6 þoâ *:( }8 *"{8 *0 /9o &}9 }: }@ }; }< }? }>  }= {9 (>}A s¨ }B s¨ }C {9 (E (© }D (ª }E (« }F (¬ }G {9 o*s´( +( + s¸{9 sº( +o'( + r—dp{9 {> s(¤{: s—þ(s¼(+Þu , oâ &Ü&Ü }H }I }J s‹ rÍdp(+ rádp(+ r eps (+ r5epsÄ (+ rAepsÆ (+ryepsÈ(+r­epsÊ (+rÁepsÌ(+ råep o+ rûepo+ r!fpo+ rÁepo+sÎsÐsÒsÔ{D (+(+(+(+sÖ{F (+sØ(+(­ (® (® (® ¥ê( +}K (?(Wo¯ rÍdpo° sÚ(!+s± rádp o² sÜ ("+s± (³ (´ (´ (µ  {˜ (()}L *4vo­{J X}J sÞ*¾o­{J Y}J {J -}I þo«**.{J þ*"{9 *>{C þo¶ *>{B þo¶ *"{K *0 :;{H  , (· sà(}++(¸ (¹ þþ*0.>(5rûep{L (#+ , (» }L **0´@ErûepY{L ($++r!fp{L (%+ ,| (¼ (½ (¼ (¾ {*  (¼ (¾ {+ (¼ (¾ {, (¼ (¾ {- (¼ (¾ {1  s¿ (À **0 °BrÁep{L (4 }L rÁep{L (&+ - r;fps\ z (Á ( (B (Á ( (A (Á ( (@ (Á ( (à (Á ( (C (Á ( (D (Á ( (E sÄ *’rÍdp(%¥sÅ {L ('+((+*0gG{L rÍdp( (äoÆ {L {@ oÇ ,) (È u>, (È t>{ý {ô *rmfps\ z0nIråep{L ()+ - råep{L (4 }L +Ê (É (Ê (/ (É (Ê (Ë (É (Ê (Ì sÍ *0¿Ls  sUv (—od (‹(!,(“¿+(¿(+sê(0()Þt(¤($¥(¥Þ&("{ , (*+ -8¡(é    þý sî(*+ (Î (1 ¥ÿoÏ   oï ,! oÐ   {ë  {ì o“+ÖÞ u , oâ &Ü&Ü&  {ã (2, (-+ o(>  (%s ”süs›{¯sÑ Þu , oâ &Ü&Ü*ALHaò/!¤00M{H  ,$ (· }H ¥  , þoâ ***:(Ò }H *.{I ,**Zo­( Áþo*Á*0 žOo­r‘fp{9 {> s (¤{: s— (?(So¯ {9 {< ([ (ïo‘sÓ Þtr¥fps\ z Þu , oâ &Ü&Ü*1 s (¤{: s— ( Áo+Á, ( Áo*Á(ý+-+ Þ Þt(¥ Þ Þu , oâ &Ü&Ü*12c1J{0 yTo­r gp{9 {> s (¤{: s— o«{A {E {G {F {D (ooO¥oÔ oï ,$oÕ   on{©;s(++ÓÞu   ,  oâ &Ü&Ü&o¬Þt  (¥{G Þ {@ (c (%¥{9  {E (  (%¥{@ {9 {E  {;  (  {E {9  (Ö o‘sˆ Þu   ,  oâ &Ü&Ü*ALw2©2£Õ1-^0 Vo­9ð (h (?(Uo¯ rIgp{9 {> s (×(Ø {* {+ {, {- {. {/ {0 {1 ( +sˆ s(++{? ,(B sþ(,+* (ƒ¤{: s—(-+(× Þu , oâ &Ü&Ü*(× *Ñá0 ”Zo­ŽiY£° s (.+(/+ {* (0+ (û (Ù (Ú (û (ü (û (Û ((Ü (Ý {+ {, {- sÄ *(Þ *6(%¥s  *V(ß }M }N *R{M {N sÅ *(à *0N( (  s¶*(á *"(  *ò}O }P }Q }R }S }T }U (â *0I\{T YE +8ý8Û8{O {F ¥oã }S }T {S oï 9¿{S oä }Q  ( Á{Q {e o+Á,( Á{Q {e o*Á Þ#(  Þt {P (¥(  Þ}R }T {Q {d  {ë {Q {e {R så }U *þ(}R }Q 81ÿÿÿ}T {S (1+}S }T }U *s7ª0‡e {T YE++e{T E + ++++}T {S (1+}T }U  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{T E + + +++***"{U *0 ]{O {P þ(s¼*:(æ }V *0'^(ç (è (é {V þo®*:(ê }W *0%^(ç (è (é {W o¯*:(ë }X *0%_(ì (í (î {X o2+*:(ï }Y *:{Y o3+*:(ð }Z *0 .`(ñ (ò (ó (ô {Z  o4+*:(õ }[ *:{[ o³*(ö **sp*:( }\ *Š( Áo'Á,*{\ {: (U *( *.(Àþ*(÷ *"{í *(ø *>{e sp*(ù *0^(ç (è (é sp*(ú *"Œø*(û *"Œ *F}] o &*>{] þo*ò}^ }_ }` }a }b }c }d (ü *0+{c YE +8Û8®8ž8ê{^ oN¥ oý }` }c {` oï 9—{` oþ }_ {_ { ¥ oÿ }b }c {b oï ,0{b o }a }c {a }d *}a +Ã}c {b (5+}b }_ 8Yÿÿÿ}c {` (6+}` }c }d *0¥e {c YE+8€{c E ++5++++)}c {b (5+}c {` (6+}c }d  Þ t   Þ&8fÿÿÿþ,z*lˆ ê{c E +++ +++****"{d *0 {^ sà*:( } *0La( ( ( { (š -*( Á{ o%Á( Áo%Á(š þ*( *0a( ( ( s *( **:( }f *0!b(Q ( {f {ì (ñ *0d}g }h }i }j }k }l }m }n  }o  }p  }q  }r ( *0èc{q YE +8”8B828‡8{g { ¥ÿoÏ }o }q {o oï 9J{o oÐ }i {i sì{h {â (7+}j {j -}q {i }r *8á{j }k {k ( (Q }l {k ( ( }m {m ¥oã }p }q {p oï ,G{p oä }n }q {n {d  {ë {l (Œ}r *}n +¬}q {p (1+}p }m }l þý}k }j }i 8¦þÿÿ}q {o (8+}o }q }r *0¯e {q YE+8Š{q E ++;+$+ +++,}q {p (1++}q {o (8+}q }r  Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{q E ++++ +++*****"{r *0%d{g {h þýsî*:( }s *B{s þo *V(£ }t }u *j{u {t o& þo *:( }v *B{v þo *V(£ }w }x *j{x {w o& þo *>regpo¯¤&**&(G*&(H*:( }y *V{y {B o *r( }z }{ }| *0 ‘f(û (Ú (Û (Ù (ü {z {= ,+(Ö {| {+ {| {, {| {-  ( {| {1 {{ o‘( +sˆ(× *:(õ }} *B{} o¬¤þ*Ò( }~ } }€ } }‚ }ƒ *0 €{~ {C { o {~ { {ƒ s{‚ s{~ {9 {ƒ {+ {ƒ {, sè?{ƒ {* {€ (þ(9+*V( }„ }… *0?g{… (ƒ¤{„ {: s— o Þu  , oâ &Ü&Ü* '( *z{. {/ (:+{0 s *~² *ž( ( (ò X(ó ( (ò (@*0 ¹l(€EDgu(àþ(;+*të {¢  {¡  (à(<+(=+þ(;+*tì{¦  (à(=+þ(;+*tí{ª  +Ûtî {®  (à(<+þ(;+*0pouã-uä-6(Þþ(;+*tã {Ž  (Þ(=+þ(;+*tä {’  (Þ (<+þ(;+*0$q s s {Ó (>+þ(?+*Js(@+s *0us ( (A+(B+ *0Dxs8 ( E**t! {ß þ(C+*s *0U{{@ (‚o oÇ -* (È u>,t> {ý {ô (V *r—gps\ z0e|(€E=!/=të{¢  ( -(**tì{¦  +Ýtí{ª  +Ï(*¦ss{? {Ó (D+(>+þ(E+*0~s! {? (F+þ(G+*0Uƒ(€E+~»øtê {  (n oJ, (à( **të {Ÿ  {¢  {¡ (n oJ, (à( *(-  8fÿÿÿ*tì{¤  {¦  (n oJ, (à( * 8&ÿÿÿtí{¨  {ª  (n oJ, (à( * 8éþÿÿtî{¬  {® (n oJ, (à( *þ(*0¸…uã-4uä-dtâ {Š  (n oJ, (Þ( **tã {Œ  {Ž  (n oJ, (Þ( * þ(*tä{  {’ (n oJ, (Þ( *8Hÿÿÿ05ˆu ,t  {È þ(*t  {Ç þ(*0hŠ s#s%{? {Ó (H+(I+ ( , ( ,( ( *rågps@ (©+{† o  s\ z09‹( u ,t  {È  (þ(J+*rGhps\ z0ÂŽ{@ (Xo oÇ -(<* (È uä-Puã-eu=,t={ü  *r‡hps (K+s)(L+s\ zu=,t={ü  +·+·u=,t={ü  +™+™0{@ (‚o oÇ -* (È (€EjLˆ¬u>,t>{ý  ( *rÝhps! (M+s-(N+s\ zu>,t>{ý  +²+·u>,t>{ý  +”+™u>,t>{ý  8sÿÿÿ8uÿÿÿu>,t>{ý  8Oÿÿÿ8Qÿÿÿ0{@ (‚o oÇ -(<* (È (€EkM‰­u>,t>{ý  oo*r?ips! (M+s1(N+s\ zu>,t>{ý  +±+·u>,t>{ý  +“+™u>,t>{ý  8rÿÿÿ8uÿÿÿu>,t>{ý oo*8Pÿÿÿ0[’{@ oÇ -~# * (È u>,t> {ý ok*t={ü (Eþo$ *0[’{@ oÇ -(* (È u>,t> {ý ol*t={ü (Fþo% *"s& *0+”(O+ (O+(€ {ö o' (P+þ(ƒ+*0V•(‚o {@ oÇ -(€ * (È u>, t>{ý (Q+*r•ips\ z:s5(R+*0Œ–uä-Fuã-[tâ {‹  {Š  s7s9s;(S+(T+þ(U+*tä  {’ +tã{Ž þ((*0 á—(€E=t—¦tê {ž  {  s=sAsC(V+(W+þ(U+*të {¢  {¡ ('8mÿÿÿtì{¦ 8Jÿÿÿtí{ª +Ûtî{® þ('*0>š(     sEsG{Ó (>+(X+(Y+s*Zo( ,*o) *2(Z+þ*0#œo(,(" (n o'þ**0~(‚o ( -* (Õ {@ oÇ -*(È u>,/t>{ý {ô  . (Ûþ([+***^-(*Y( *0k¥(‚o (*,*(\+ (€E³—{*të {   {¢  {Ÿ {£ {¡ (-+Q  (Õ    s+    Y(µ (]+(^+(_+  -+ (ƒ  (`+8 ÿÿÿtì  {¥   {¦   {¤  {§  (-8“  (Õ   -V(‚ o ~, (a+~, (a+(b+, (sQ(Ù([++0+,  s-  Y(µ (]+(^+(c+8(þÿÿtí{©  {ª  {¨ {«  (-8“  (Õ   -V(‚ o ~, (a+~, (a+(b+, (sW(Ù([++0+,  s.  Y(µ (]+(^+(c+8Dýÿÿtî{­  {® {¬ {¯ (u,,bt,{ì {í {ë (a+(b+,#s](Ù([+++þ(`+*0 ‰©(Xo (*,*uã-uä:¤*tã {  {Ž  {Œ  { (-+_(/ ol (,,;(‚o ~# (a+ s_    (×([++þ(d+*tä  {‘   {’   {   {“    (u,,bt,{ì  {í {ë   (a+ (b+,# sa    (×([+++8wþÿÿ0y¬sI r¹ipréip(°+ s0   s1 sesg{? {Ó (D+(>+(?+ Þu , oâ &Ü&Ü*D^0ÿ¸si r¹iprjp(°+ (“E” þtF {  { {@ oÇ - rjps\ z(È u>,Jt>  {ý   oi  (} {@  o2  {?  s Ý4rjps\ ztD{ { { { {? (@({{@ o2 s ÝËtE{ { { { skŽiY(µ (]+(^+(e+(f+Žise(}{? {@ o2 s Ý5tC{ { { { { ({@ oÇ -~, (e+se(}+(È u>9t>  {ý  u$,t${3 (>+t%{4 ((@ oioj {?  (} {@  o2 s Þ$rjps\ zu , oâ &Ü&Ü*AËä0&¹(g+ (h+,*X+Ú0M»sm r¹ipr3jp(°+ so   (3 Þu , oâ &Ü&Ü*2~´ *s5 *0F½ss r¹iprQjp(°+ (i+(6 (j+ Þu  , oâ &Ü&Ü*.&(4*0Às{ r¹iprqjp(°+ ( u , r‘jps\ z t {Ç (Xo {@ oÇ - Ý“(È   u=,Y t=  {ü   oI  - ÞZ   (7 (8  (7 (9 (+s: (; Þ$r³jps\ zu , oâ &Ü&Ü*Îè0C‹( u ,'t  {È  s< (&(k+þ(l+*rçjps\ z0pÁ( u ,Tt  {È  ( oI -* (7 (8 (7 (9 (+s: (; *r kps\ z&s= *0¸Ä( (äoÆ {@ oÇ (m+ u>,jt> {ý (n+(n+{ö o' (o+,(Õ *r?kps> (p+s? (q+s\ zr³kpsA (r+ok s\ z0Å( (v sB *0Æ( (P sC *sA*:( }† *{† *&*Zr.8psD (s+oE *0AÇþ,0þ,(&  (y {†  {†  /* þ**þ,**:¥ßoE*0L鴧 þ,/¥ßþ,"&  {†  {†  /* þ**¥ßþ,**0(Éþ, &  ¹y7ž{† bcXXX **6(n oH*00Êþ,!uß ,&  {† {† þ**þþ*"{† *0 {†  rùkps@ (©+þo  *0,Ëþ,þ,&  {† {† þ**þþ*0Ìuß ,oM**( *"s[**uâþ**s^**uãþ**sc**uäþ*0Æ uä,+ uã,+*Zr.8psF (t+oG *sµ*s·*0ÊÍuã-Duä-xtâ {‹  {Š {†  rlpsC (ª+ s»þ(«+*tã{  {Œ {†  r-lpsC (ª+ s¿þ(«+*tä{‘  { {†  r_lpsC (ª+ sÃþ(«+*V(O}Š }‹ *{Š *{‹ *’(O}Œ } }Ž } *{Œ *{ *{Ž *{ *’(O} }‘ }’ }“ *{ *{‘ *{’ *{“ *:( }” *2{” {Š *2{” {‹ *:( }• *2{• {Œ *2{• { *2{• {Ž *2{• { *:( }– *2{– { *2{– {‘ *2{– {’ *2{– {“ *:( }— *"s…**(€þ*2sˆ**(€þ**sŽ**(€þ**s“**(€þ**s˜**(€þ*{— *Zr.8psH (u+oI *sÅ*sÇ*0NÎ(€E;xµòtê {ž  { {†  rlpsC (ª+ sËþ(«+*të{   {Ÿ {†  r§lpsC (ª+ sÏþ(«+*tì{¥  {¤ {†  rÓlpsC (ª+ sÓþ(«+*tí{©  {¨ {†  rõlpsC (ª+ s×þ(«+*tî{­  {¬ {†  rmpsC (ª+ sÛþ(«+*Z(u} }ž *{ *{ž *¶(u}Ÿ }  }¡ }¢ }£ *{Ÿ *{  *{¡ *{¢ *{£ *–(u}¤ }¥ }¦ }§ *{¤ *{¥ *{¦ *{§ *–(u}¨ }© }ª }« *{¨ *{© *{ª *{« *–(u}¬ }­ }® }¯ *{¬ *{­ *{® *{¯ *:( }° *2{° { *2{° {ž *:( }± *2{± {Ÿ *2{± {  *2{± {¡ *2{± {¢ *2{± {£ *:( }² *2{² {¤ *2{² {¥ *2{² {¦ *2{² {§ *:( }³ *2{³ {¨ *2{³ {© *2{³ {ª *2{³ {« *:( }´ *2{´ {¬ *2{´ {­ *2{´ {® *2{´ {¯ *(J *07Æ uã-uä-tâ{Š *tã{Œ *tä{ *(K *07Æ uã-uä-tâ{‹ *tã{ *tä{‘ *:( }µ *B{µ þo *:(L }¶ *0{{¶ oM s¹*:( }· *B{· þo *:(L }¸ *0{{¸ oM s½*:( }¹ *B{¹ þo *:(L }º *0{{º oM sÁ*(N *0\(€E %1tê{ *të{Ÿ *tì{¤ *tí{¨ *tî{¬ *(O *0\(€E %1tê{ž *të{  *tì{¥ *tí{© *tî{­ *:( }» *B{» þo *:(L }¼ *0{{¼ oM sÉ*:( }½ *B{½ þo *:(L }¾ *0{{¾ oM sÍ*:( }¿ *B{¿ þo *:(L }À *0{{À oM sÑ*:( }Á *B{Á þo *:(L } *0{{ oM sÕ*:( }à *B{à þo *:(L }Ä *0{{Ä oM sÙ*( *sç**u þ*sé**u þ*0Ï u ,+*Zr.8psP (v+oQ *sï*sñ*¶u ,rImps þ(+*romps þ(+*:(Ý}Ç *{Ç *:(Ý}È *{È *:( }É *2{É {Ç *:( }Ê *2{Ê {È *(R *0AÐu ,t  {È  (‚þo *t  {Ç  (X þo *(S *0AÐu ,t  {È  (ƒþoI *t  {Ç  (Y þoG *( *"sü**uþ*"sÿ**uþ*0Ò u,+*Zr.8psT (w+oU *V(õ}Í }Î *{Í *{Î *V(õ}Ï }Ð *{Ï *{Ð *:( }Ñ *2{Ñ {Í *2{Ñ {Î *:( }Ò *2{Ò {Ï *2{Ò {Ð *{Ó *:( }Ó *:(V }W *0Aˆu ,t  {W {È þ(x+*t  {W {Ç þ(y+*(X *"(Y *(Z *0S×u,&t {Ð  {Ï oó(Þs[ *t {Î  {Í  oô(às[ *(\ *0mÙ (äoÆ (åoQ o] - þo^ * (_ (n oJ-r•mps (ñ+o s\ z*Šs€Ö s€× s€Ø *:( }Õ *s,**( þ*s.**( þ*~Ö **( þ*~× **( þ*s0**( þ*~Ø **( þ*{Õ *Zr.8ps` (z+oa *0ÚÜþ9Æþ9»{Õ  {Õ  @¢( E)T*t! t! (y {ß  {ß þ({+*t"t"(y {à {à þ(|+*t#t#(y {á {á þ(|+*Y**þ,**B¥þo"*0áÝ¥ þ9Á¥þ9±{Õ  {Õ  @˜( E'N*t! t! {ß {ß þ({+*t"t"{à {à þ(|+*t#t#{á {á þ(|+*Y**¥þ,**0¯Þþ9£ ( E&LPTzt!  ¹y7ž{ß (}+bcXXX *t"  ¹y7ž{à (ú+bcXXX * * *t#  ¹y7ž {á (ú+bcXXX * **6(n o%*0ÐÝþ9¾u 9¯{Õ  {Õ  @˜( E'N*t! t! {ß {ß þ(~+*t"t"{à {à þ(ú+*t#t#{á {á þ(ú+***þþ*"(*frímpsb (+þoa *0ÇÜþ9µþ9ª{Õ  {Õ  @“( E$J*t! t! {ß  {ß þ(€+*t"t"{à {à þ(+*t#t#{á {á þ(+***þþ*0œu , þo***>(}ß *{ß *>(}à *{à *>(}á *{á *:( }â *2{â {ß *:( }ã *2{ã {à *:( }ä *2{ä {á *(c *"(*.sK€å *( *~å **u*þ*"sL**u+þ*&sO**u,þ*0ß u,,+ u+,+*Zr.8psd (+oe *s[*s]*s_*.u+þ*0*áu+,t+ {é þof *rómps\ z0Bâu*- u,-*t, {ë  {í  {ì   sg (h *0\äu+-u,- rnp*r-np*t, {ì  {ë  rCnpsi (‚+ sco& þ(ƒ+*(;*V(;}é }ê *{é *{ê *r(;}ë }ì }í *{ë *{ì *{í *:( }î *:( }ï *2{ï {é *2{ï {ê *:( }ð *2{ð {ë *2{ð {ì *2{ð {í *(k *‚u,, t,{ë *runps\ z(l *01ß u,-u+-~# *t,{ì *t+{ê *(m *nu,, t,{í *(*:(n }ñ *B{ñ þoo *:(p }ò *0æ{ò oq sa*Âo &}ô }ó }õ sr(„+}ö *J~, (e+se*"{ô *&oo*ª{ô .{ó st{õ (…+se**‚{ô {ó {õ ot se*‚(†+{ó {ö o' þ(‡+*0%é{ö o' sx(ˆ+ (‰+(*Z{ö o' þ(Š+*>{ö þo& *0ë{õ (‹+ -(<*(u *:(v }÷ *R{÷ oosw *:(x }ø *0 2{ø sp{ø {ô Y(µ (]+(^+þ(Œ+*:(y }ù *.{ù þ*(z *0(ì({ (| (Eo$ (+,**(} *0í(~ ( (Fþo% *( *s‚**u=þ*s„**u>þ*0î u>,+*Zr.8ps€ (Ž+o *0_ïu>,,t> {ý  rnps (ñ+o& þo *t= {ü  r¿nps (ñ+ o& þo *:(z}ü *{ü *:(z}ý *{ý *:( }þ *2{þ {ü *:( }ÿ *2{ÿ {ý *:( } *2s–**(“þ**sœ**(“þ**s¡**(“þ*"s¦**(“þ*{ *Zr.8ps‚ (+oƒ *0Aò(“EO›çtC {  {  {  { ránps„ (+s {† þ(‘+*tD{ {  { rops… (’+sÈ {† þ(“+*tE  {  {   { raops… (’+sÎ {† þ(“+*tF  {   {  r§ops" (+  sÒ {† þ(+*¶(Š} } } } } *{ *{ *{ *{ *{ *–(Š} } } } *{ *{ *{ *{ *–(Š} } } } *{ *{ *{ *{ *Z(Š} } *{ *{ *:( } *2{ { *2{ { *2{ { *2{ { *2{ { *:( } *2{ { *2{ { *2{ { *2{ { *:( } *2{ { *2{ { *2{ { *2{ { *:( } *2{ { *2{ { *:(n } *B{ þoo *:(‡ } *0æ{ oˆ s¼*:(‰ } *0ô{ oŠ s¾*:(‹ } *0ö{ oŒ sÀ*:( } *B{ þoa *:(Ž } *0ø{ o sÄ*:( } *0ú{ o‘ sÆ*:( } *B{ þoa *:(Ž } *0ø{ o sÊ*:( }! *0ú{! o‘ sÌ*:(Ó }" *B{" þo  *:(Ù }# *0¸{# oÚ sÐ*:( }$ *:sà**(Ýþ*2sç**(Ýþ*2sí**(Ýþ*"só**(Ýþ*{$ *Zr.8ps’ (”+o“ *0(ÝEK’ÙtY {-  {*  {,  {+ {) {.  (•+(‹*tZ{1  {0  {2 {/ {3   (–+(*t[  {6   {5   {7  {4  {8   (—+(*t\  {9  {: (‘*Ö(Ô}) }* }+ }, }- }. *{) *{* *{+ *{, *{- *{. *¶(Ô}/ }0 }1 }2 }3 *{/ *{0 *{1 *{2 *{3 *¶(Ô}4 }5 }6 }7 }8 *{4 *{5 *{6 *{7 *{8 *Z(Ô}9 }: *{9 *{: *:( }; *2{; {) *2{; {* *2{; {+ *2{; {, *2{; {- *2{; {. *:( }< *2{< {/ *2{< {0 *2{< {1 *2{< {2 *2{< {3 *:( }= *2{= {4 *2{= {5 *2{= {6 *2{= {7 *2{= {8 *:( }> *2{> {9 *2{> {: *ÂrÏoprÕops” (˜+(+(` rÝop( ( *(• *05(P (O Œo& r¸9p( Œo& ( *bo &}? }@ *"{? *"{@ *0Msé s{@ (™+rãops (­+ s{? {Ó (š+o& þ(®+*:( }A *B{A þo *:(L }B *0{{B oM s*:(— }C *0:{†  rppsC (ª+ so& («+ {C o˜ &*:( }D *B{D þo *:(` }E *0{{E oa s*(X *0(™ (Y *:(š }F *0(™ (Y {F (ñ *:(› }G *0$(åoQ {G (ñ ,( **(œ *þ*:( }H *0(™ (Y {H þ(*:(ž }I *B{I þo *:(Ÿ }J *0{J o  s'*:(ž }K *B{K þo *:(¡ }L *0{L o¢ s+*:(ž }M *B{M þo *:(¡ }N *0{N o¢ s/*:(£ }¤ *0"(¥ (¦ {¤ o§ ( *(k *‚u,, t,{ë *rMpps\ z:(¨ }P *F{P þo2 *:(© }Q *0&Ù(K (L {Q ((@({*:(ª }R *0Ù(K (L {R (ñ *:(¨ }S *F{S þo2 *:(« }T *f{T ((@sw *:(¬ }U *0? (­ (® (¯ {U s?(›+ ~, (œ+se(}*:(± }V *0# (­ (® (¯ {V (ñ *r(² }W }X }Y *0 Yˆu ,)t  {W {X {Y {È þ((*t  {W {X {Y {Ç þ('*(X *"(Y *:(£ }Z *zr—pps (ñ+{Z þo *r(³ }[ }\ }] *n{[ {] {\ þ(+*:(³ }^ *>{^ þoH*0T(µ }¶ }· }¸ }¹ }º }» }¼ }½  }¾  }¿ *0 C {¶ {¸ {¾ (. {¶ {» (  u,9 t, u,9÷t, {ì  {ë {ì {ë  {í {í  (+,+ {¶ {¸ (  (E o$    (b+,{½ sK(À + u+þ, sM(À +  -* (Á {· {¼ {º {¿  (Õ{¹ (ž+(o **(à *"*’(³ }i }j }k }l *0 3{k (D{i {j {l ( oÄ oÅ (Æ *0D(Ç }È }É }Ê }Ë }Ì }Í }Î }Ï *0 ˆ (E{È {Ì ( o$ (E{È {Ê ( o$ (b+,B{È {Ì {Î sS {É {Í {Ë {Ï (Õþ(ž+**(à *"*:(³ }u *6{u (Æ *0D(Ç }Ð }Ñ }Ò }Ó }Ô }Õ }Ö }× *0 ’{Ð {Ô (  u,,tt, {ë  (E{Ð {Ò ( o$ {Ö oØ  (ý+-/{Ñ {Õ {Ó {× sY(Õþ(ž+***V(à }~ } *V{~ { þoÙ *r(Ú }€ } }‚ *–{‚ {€ { (&(Ÿ+þoÛ *V(Ú }ƒ }„ *V{ƒ {„ þoÅ *r(V }Ü }Ý }Þ *0 Yˆu ,)t  {Ü {Ý {Þ {È þ( +*t  {Ü {Ý {Þ {Ç þ(¡+*(X *"(Y *:(š }ˆ *0(™ (Y {ˆ (ñ *(£ *rR9p*r(ß }‰ }Š }‹ *0*ß{‰ £{Š {‹ (@ þot *:(£ }Œ *zr—pps (ñ+{Œ þo *(à *0(ß (2*:(£ } *zr—pps (ñ+{ þo *:(£ }Ž *zr—pps (ñ+{Ž þo *(á *&( *:(£ } *zr—pps (ñ+{ þo *(â *0«sq r¹ipr©bp(°+ (7 sw r¹ipr§pp(°+ (ã ,& (ä (ß(2(å ÞÞu   ,  oâ &Ü&Ü Þu , oâ &Ü&Ü*>3qv:(£ } *zr—pps (ñ+{ þo *(æ **þ(¢+*V(ç }è }é *0M({ (| u,,5t, {ë  (£+{é {è (¤+,(o ***:(ë }“ *B{“ þoì *:(í }” *0{” oî s*:(ï }ð *0{ð oñ sƒ*F}ò o &*"{ò *F}ó o &*"{ó *Vo &(ô }˜ *0!(¥+ (ø{˜ (õ }˜ *0!(¦+ (ö{˜ (õ }˜ *R{˜ (()*"sö *0'(¦+oô ( (§+(z s÷ *"sø *04(¥+oó (¦+oô ( (¨+(x sù *"sú *0'(¦+oô ( (©+(R sû *"sü *0'(¦+oô ( (ª+(| sý *:sþ («+*:(ÿ } *v{ Œ(£+o Œ-*F} o &*"{ *:( } *¢{ Œ(¬+Œ(­+(®+(¯+*F} o &*"{ *:( } *0m{ Œt,+ r¨9ps‚ zŽi  Y 2+£Œ(£+¤X X3Õo Œ-*F} o &*"{ *:( } *j{ Œ(£+þo *F} o &*"{ *( **"s *0' (¥+oó ( (°+(T s *"s *0'!(¥+oó ( (±+(~ s *:(ÿ } *v{ Œ(£+o Œ-*F} o &*"{ *:( } *0i#{ Œ(£+o Œ‚,+ r¨9ps‚ zŽi  Y 2"£-Œ-¤X X3Þ*F} o &*"{ *~³ *0Ä(rÉpp(Ö9ª3rDps (ñ+o +rýpps (²+ sº(³+ ( ( o ( s¼(´+ o o*  o (  o  sÂ(´+ *þo* *:(Ó }¥ *B{¥ þo  *:( }¦ *0¸{¦ o! s¸*²}§ }¨ }© }ª }« (" *0³{ª YE + +j+]8‚{§ (µ o¶ }© }ª {© oï ,5{© o· }¨ }ª {¨ (# }« *}¨ +¾}ª {© (Á+}© }ª }« *0‡e {ª YE++e{ª E + ++++}ª {© (Á+}ª }«  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ª E + + +++***"{« *0 {§ s¼*Ò}¬ }­ }® }¯ }° }± (" *0È{° YE +8|+o8”{¬ (µ o¶ }¯ }° {¯ oï ,G{¯ o· }® }° {® (# {­ {® £’Y}± *}® +¬}° {¯ (Á+}¯ }° }± *0‡e {° YE++e{° E + ++++}° {¯ (Á+}° }±  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{° E + + +++***"{± *0 {¬ {­ sÂ*0‘ çsß €² s$ €³ sy€´ €°€³s% €µ rqp(k €· (C,(CrR9p(ñ , !2+ (C(& €¶ s‰s' €¸ *:( }º *B{º þo *:(` }» *0{{» oa sÉ*:(b }¼ *0|{¼ oc sË*:(( }½ *0){½ o) sÍ*:(* }¾ *0+{¾ o+ sÏ*:(, }¿ *0-{¿ o- sÑ*:(. }À *0/{À o/ sÓ*:(0 }Á *01{Á o1 sÕ*Z} rGqpo¯¤&*0 *{ (<¥({ {¯(2 }¯*0KØ(<¥( { { {¯(2 }¯þ~³/ ( +(3 €°*R{ {¯þo4 *:( }à *6{à sÙ*(5 *02{¬ (ê (n oó*(5 *02{¬ (è (n oó*:(6 }7 *"{7 *( ***~o *€o *ºE r]qps\ zþo8 *þo8 *04{R  {(– {!{"{#{${%{&{'{({){*s?)(z{R  {{ (– {"{#{${%{&{'{({){*s?)(z{R  {{ {!(– {#{${%{&{'{({){*s?)(z{R  {{ {!{"{#{${&{'{({){*s?)(z(e(v(w(x*04{R  {(– {!{"{#{${%{&{'{({){*s?)(z{R  {{ (– {"{#{${%{&{'{({){*s?)(z{R  {{ {!(– {#{${%{&{'{({){*s?)(z{R  {{ {!{"{#{${&{'{({){*s?)(z(e(v(w(x*0%6(Ë (n oÖ,(ì*(ë*06(Ë (n oÖ({*0m7{R  {(Ë (n oÖ(– {!{"{#{${%{&{'{({){*s?)(z*0m7{R  {{ (Ë (n oÖ(– {"{#{${%{&{'{({){*s?)(z*0m7{R  {{ {!(Ë (n oÖ(– {#{${%{&{'{({){*s?)(z*0h7{R  (Ë (n oÖ{ {!{"{#{${%{&{'{({){*s?)(z*06(Ë (n oÖ(…*06(Ë (n oÖ(4*0'9%.¤o9 þ, Žiþ+9Ú£m £m (: s; (: s;  (< 9x(< 9l(=  (= 2 ÿÿþþ+, þþ+, ÿÿþþ+,!(=  (= sZ (3*(n(&¥sû£(¤(+&*(n(&¥sû£(¤(+&*02*(ô ,(n(&¥sû£ (¤(+&*(õ*0ŠVo rwqp(ñ , (M(G*rqp(ñ , (K(G*rqp(ñ , (O(G*rqp(ñ , (Q(G*(W(&¥sû£ (¤(+&*0:-(Ë (n oÖ(d+U (d r«qp(ñ , (d+5r»qp(ñ , (d+(X(&¥sû£ (¤ (+&(Ë (n oÖ(H*rÅqp*rwqp*rqp*rqp*rqp*r×qp*råqp*rûqp*rrp*r%rp*r9rp*rWrp*rmrp*r‡rp*r›rp*rR9p*0ç?r£rps> ( (µ+{R { o? &rárps> ( (µ+{R {!o? &rsps> ( (µ+{R {"o? &r]sps@ ( (¶+{R {%oA &r›spsB ( (·+{= oC &rÙspsB ( (·+{N oC &rtpsB ( (·+{O oC &rUtpsB ( (·+{P oC &r“tpsB ( (·+{< oC &rÑtpsB ( (·+{ oC &rupsD ( (¸+{ oE &rMupsê ( (D+{U oì &{þ (+r‹upsê ( (D+sBþ(+*Ær^:pr×qpsD(ê(7(c (2(F (G *²rZ:pr×qpsF(êrÇup(Z(c (2*0 rßuprR9psH(à(B(c (2rßuprWrpsR(ä(C(c (2r÷upr›rpsT(Þ(D(c (2rº:prWrpsV(ì(E(c (2rvprWrpsX(ì(F(c (2rvprR9psZ(à(k(c (2(F (G (G (G (G (G (G *0)rK@pr×qps\(ê(*(c (2r+vprwqps^(ê(+(c (2r+vprqps`(ê(,(c (2r+vprqpsb(ê(-(c (2r+vprqpsd(ê(.(c (2r9vprR9psf(à(/(c (2rMvpr×qpsh(ê(0(c (2rUvpr×qpsj(ê(1(c (2revprÅqpsl(ê(2(c (2rvprÅqpsn(ê(3(c (2r‘vprR9psp(ð(4(c (2r·vprR9psr(ð(5(c (2r×vpr×qpst(ê(6(c (2(F (G (G (G (G (G (G (G (G (G (G (G (G (G *0 Ùrßvpr×qpsv(ê(8(c (2rñvpr×qpsx(ê(9(c (2r wprR9psz(ð(:(c (2r-wpr%rps|(ê(;(c (2r?wpr%rps~(ê(<(c (2(F (G (G (G (G (G *0 Ü@rYwprR9p s€(à(=(c (2rYwpr9rps‚(ê(>(c (2rewprR9ps„(à(?(c (2rwwprR9ps†(à(@(c (2r‹wprR9psˆ(à(A(c (2(F (G (G (G (G (G *žr§wprR9psŠ(ð(I(c (2*0frÇwprR9psŒ(à(G(c (2r×wprÅqpsŽ(ê(H(c (2((F (G (G (G *žråwprûqps(ì(O(c (2*²rr:prûqps’(ìríwp(Z(c (2*žrùwpr›rps”(Þ(L(c (2*žr xprR9ps–(ð(M(c (2*žr!xprR9ps˜(ð(N(c (2*ær5xprÅqpsš(ê([(&¥s‚(H (\(c (2*Î(((((F (G (G (G (G *¢rExprR9psœ(ð(Q(c (2*‚(((F (G þ(¹+*r(s®(º+þ(¹+*zr]xprÅqps´(ê(2*0 ¬rgxprR9ps¶(ð(2ryxprR9ps¸(ð(2r©xpr›rpsº(Þ(2r³xprR9ps¼(ð(2rÉxpr›rps¾(Þ(2(F (G (G (G (G (G *0%ÍBrÝxprR9psÀ(ð(2r yprR9psÂ(ðryp(&¥s¯(H (2r)yprR9p(Je(èr7yp(&¥s¯(H (2rIyprR9psÄ(ðrUyp(&¥s¯(H (2reyprR9psÆ(ðryyp(&¥s¯(H (2rÝxprR9psÈ(ð(2r‘yprR9psÊ(ðryp(&¥s¯(H (2r­yprR9psÌ sÎ(Þr½yp(&¥s¯(H (2rÑyprR9psÐ(êrõyp(&¥s¯(H rzp(c (2r‡zprR9psÒ(êr©zp(&¥s¯(H rÏzp(c (2r{pr›rpsÔ sÖ(Þr{p(&¥s¯(H (2r){prR9psØ(ê(2rS{pr›rpsÚ sÜ(Þro{p(&¥s¯(H (2r{prR9psÞ(ðr£{p(&¥s¯(H (2r»{prR9psà(ðr×{p(&¥s¯(H (2r÷{prR9psâ(ðrÿ{p(&¥s¯(H (2r |prR9psä(ðr|p(&¥s¯(H (2r3|prR9psæ(ðr_|p(&¥s¯(H (2r|prR9psè(ðr¿|p(&¥s¯(H (2ró|pr›rpsê(Þr}p(&¥s¯(H (2r7}prR9psì(Þre}p(&¥s¯(H (2r—}prR9psî(ðr±}p(&¥s¯(H (2rÏ}prR9psð(ðrõ}p(&¥s¯(H (2r~prR9psò(ðrR9p(&¥s¯(H (2r7~prÅqpsô(êrR9p(&¥s¯(H (2rw~prÅqpsö(êrw~p(&¥s¯(H (2rµ~prÅqpsø(êrµ~p(&¥s¯(H (2rý~prR9psú(ðrý~p(&¥s¯(H (2r!prR9psü(ðrSp(&¥s¯(H (2r‰prR9psþ(àr‰p(&¥s¯(H (2r§prR9ps(ðr¿p(&¥s¯(H (2((F (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (rÛprR9ps(àrÛp(&¥s¯(H (2rãprR9ps(àrãp(&¥s¯(H (2rÿprR9ps(àrÿp(&¥s¯(H (2r€prÅqps(êr€p(&¥s¯(H (2r+€prR9ps (ðr+€p(&¥s¯(H (2r7€prR9ps (ðr7€p(&¥s¯(H (2rg€prÅqps(êrg€p(&¥s¯(H (2(F (G (G (G (G (G (G (G (¹+þ(¹+*Ær‡€prR9ps(ðr§€p(&¥s¯(H (2*ÆrË€prR9ps(êrñ€p(&¥s¯(H (2*ÆrprR9ps(ðrAp(&¥s¯(H (2*~p *ÆrkprR9ps(ðrp(&¥s¤(H (2*0 £r³prR9ps(ðr¿p(&¥s¤(H (2rÏprR9ps(ðrõp(&¥s¤(H (2r‚prR9ps(ðrK‚p(&¥s¤(H (2(F (G (G (G *0Ü($(r{‚prR9ps (ðr•‚p(&¥s¤(H (2r³‚prR9ps"(ðrÓ‚p(&¥s¤(H (2r÷‚prR9ps$(ðrƒp(&¥s¤(H (2r/ƒprR9ps&(ðrOƒp(&¥s¤(H (2rsƒprR9ps((ðr…ƒp(&¥s¤(H (2(( (!r›ƒprÅqps*(êr«ƒp(&¥s¤(H (2r¿ƒprR9ps,(ðr݃p(&¥s¤(H (2rÿƒprR9ps.(ðr#„p(&¥s¤(H (2rK„prR9ps0(ðri„p(&¥s¤(H (2r‹„prR9ps2(ðr¯„p(&¥s¤(H (2rׄprR9ps4(ðrÿ„p(&¥s¤(H (2r+…prR9ps6(ðrA…p(&¥s¤(H (2r[…prR9ps8(ðr‰…p(&¥s¤(H (2r»…pr›rps:(ÞrÑ…prë…p(&¥s˜(H (2r†prR9ps<(êr†pr3†p(&¥s˜(H (2r?†prR9ps>(ðr[†pr{†p(&¥s˜(H (2r†prR9ps@(ðr—†pr£†p(&¥s˜(H (2("(#(F (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G (G þ(¹+*0N>{V ,DrDpsê ( (D+{U oì &rDpsê ( (D+()oì &**Ær»†prR9psB(ð(J(c (2(F (G *ú('r°:prR9psD(ò(K(c (2(F (G þ(¹+*0 Ü@rɆprÅqpsF(êr͆p(Z(c (2r߆prR9psH(àrã†p(Z(c (2r‡prR9p sJ(àr‡p(Z(c (2r‡prÅqpsL(ðr‡p(Z(c (2( ((F (G (G (G (G (G (G *"()*0 ÿ()r'‡prÅqpsN(êr+‡p(Z(c (2r7‡prÅqpsP(ðr;‡p(Z(c (2rWprR9psR(òr]‡p(Z(c (2r°:prR9psT(òr]‡p(Z(c (2rk‡prR9psV(òr]‡p(Z(c (2(F (G (G (G (G (G þ(¹+*0F([ ,sX+sZoI ¥oJ oï 9œoK {Í(öE@+¡{Ër|8p( r‡p( ([ (\ (\ (Ÿ+ 8dÿÿÿ{Ë+Á Þu , oâ &Ü&Ü &¥7sQ *,«×0 ÞG  Ži rR9p(»+ /c£moh -+Yþ, £m¤mX ++ £mrx8pX£m( ( ¤mX X +™ Y(V (Õ YXm Y   2"  X£m¤m X   X3Þþ(+*žrƒ‡prR9ps\(ò(2(F (G *0ô(]( (<(^( (<(_((<(`((<(d( (<(c((<(b(((<(a((<((+(%(¼+(L (M (M (M (M ¥“(½+(>(N (O (O (O (O (O (O (O (O (O *0Is^ s`(/þ(¾+*0ò(](F (<(^( (<(_(F (<(`((<(d( (<(c((<(b('(<(a((<(()($(¼+(L (M (M (M (M ¥“(½+(>(N (O (O (O (O (O (O (O (O (O *~q *0;Jo9.o9Ór·‡p( (2(ò (2X(ó r|8pŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9pr|8p( ( ( ( (À  À(te(” (”” (@+ Þu   ,  oâ &Ü&Ü&*rŇpsê (,+oì &(î  À(te(” (”” (@+ r ˆps— (6+&**£*Í~r *~s *03K (d o,'r5ˆpsz (¿+ sd(+&(P +oë9é(d rˆp(ñ ,sQ z(d rŸˆp(ñ , r­ˆps‚ z(d rÁˆp(ñ ,sR z(d rÕˆp(ñ ,sS z(d rãˆp(ñ ,sT z(d róˆp(ñ ,sU z(d r‰p(ñ ,sV z(d r‰p(ñ ,sW z(d r!‰p(ñ ,sX z(d r3‰p(ñ ,sY z(d rC‰p(ñ ,sZ z(d rS‰p(ñ ,s[ z(d rc‰p(ñ ,s\ z(d rq‰p(ñ ,s] z(d r‰p(ñ ,s^ z(d r‰p(ñ ,s_ z(d r›‰p(ñ ,s` z(d r©‰p(ñ ,sa z(d r·‰p(ñ , r­ˆps\ z*09O( o ( ( sf(´+ ( ob @B[(4(c (5(d 9Â9· (e (f   (d  (e (g   sl(´+ rɉpsh (À+sv Y(Á+&r Špsj (Â+s~ /+£’ /+£’ /+£’ (Ã+&+(4 sk (l (m *0B@(5(d , (6+o, (7+(5(c (n *0(Q{ oo , { (p (û'**0SoN s€(i)þ(Ä+*0®XrKŠp(3{j= raŠp(8s„sq (Å+ (r (s (t (Æ+(u (v ¥¡(î'(Crr}Šp(3rŠp(8 sw *0"Yo\sÙ$ oP oÚ$*0\(œ¥(• ,r¹Šps— (6+&+oõ -%(B   (n oK , o´+þ+ o#oäooH)oåoã(O  (n oZ,+oã(Q  (n oZ,+ {~(x o#o!s[  {€{oÜ$*"s†*0CrS@p( (SErwqp+réŠp+rñŠp( *0]oK Þ t  Þ&* 0¹`(è- þo* *(y (z  s{ (| Þ t Þ 9m (} (~ (z 3+ , + ( Þ tÞ&o* Þ( Þ tÞ&Ü*þo* *4/ cw ‘ œ PA‘:( }Å *B{Å þoì *:( }Æ *V{Æ (%¥o“*:( }Ç *V{Ç (%¥o“*:(€ }È *0#6{È (Í (n oÖþ(7*( *þ*( *þ*( *þ*( *þ*:(‚ }É *06(Í (n oÖ,D{É sJ{É { (Ç+(;{É sL{É { (È+(<*{É sN{É { (Ç+(<{É sP{É { (È+(;*:(ƒ }Ê *0A*{Ê 2 þþ+,+(Y(&¥sû£ (¤(É+(8*:( }Ë *V{Ë (&¥oŽ*:( }Ì *V{Ì (&¥o*(€ *06(Ë (n oÖ(é*:( }Í *R{Í (c (@*:( }Î *B{Î (÷*:( }Ï *B{Ï (÷*:( }Ð *B{Ð (÷*:( }Ñ *B{Ñ (÷*:(€ }Ò *0 6{Ò (Ë (n oÖ([*:( }Ó *R{Ó (c (V*:( }Ô *R{Ô (c (Y*:( }Õ *R{Õ (c (Z*:( }Ö *0ª*{Ö r‹p(ñ ,(ɳ(„ 8r ‹p(ñ , (˳(„ +er‹p(ñ , (ͳ(„ +Kr%‹p(ñ ,{Ö (E+.rO‹p(ñ ,+(f(&¥sû£ (¤(Ê+(D*:(í }× *>{× (a*:(í }Ø *>{Ø (`*:( }Ù *n{Ù (T{Ù (U*:( }Ú *>{Ú (h*:( }Û *>{Û (i*:(í }Ü *>{Ü (j*:( }Ý *B{Ý o’*:( }Þ *¦{Þ {Þ {C ([ (\ (Ÿ+(k*V(€ }ß }à *Z{ß {à (ø*:( }á *j{á (c (Ë(ø*:(€ }â *B{â (í*:(€ }ã *B{ã (î*:(€ }ä *B{ä (ñ*:(í }å *–{å (={å (&¥r]‹poŽ*:(€ }æ *0 6{æ (Ë (n oÖ(>*:( }ç *~{ç {ç { (\ (/*:( }è *‚{è (%¥{è {ö o*:( }é *‚{é (%¥{é {ö o*:(ƒ }ê *0_b(…  Þ=t uÞ ,+ oe (((&¥sû£(¤(+ Þþ&{ê (V (5* =:(í }ë *>{ë (o*:(í }ì *>{ì (l*( **V(í }í }î *–{î (*{í ,{î (,**:( }ï *f{ï (l (V (s*:(í }ð *ž{ð ("{ð (^{ð (,*:( }ñ *¦{ñ {ñ {7 ([ (\ (Ÿ+(_*(í **:( }ò *R{ò (c (K*:(í }ó *>{ó (F*:(€ }ô *B{ô (ô*:( }õ *B{õ (ö*r}ö }÷ }ø († *0 k{÷ YE  $*06+9+o8„8·8ê88U8ˆ8»8ï8ñ}÷ rc‹pr‡rp{ö sž(ê(P(c (2}ø *}÷ {ö (}ø *}÷ r{‹prR9p{ö s (ð(R(c (2}ø *}÷ r‘‹pr×qp{ö s¢(ê(S(c (2}ø *(°,6}÷ r§‹pr×qps¤(ð(T(c (2}ø *+}÷ r¹‹prÅqp{ö s¦(ê(U(c (2}ø *}÷ rÁ‹prR9p{ö s¨(ð(V(c (2}ø *}÷ rã‹prR9p{ö sª(à(l(c (2}ø * }÷ rÿ‹prÅqp{ö s¬(ê(m(c (2}ø * }÷ }ø ** }÷ *0p{÷ E  !+!+0+++&+!++++ +++**********"{ø *>{ö s®*:( }ù *0­cr!Œp(ñ ,{ù (ó(m*r9Œp(ñ , (Ž:(< *r[Œp(ñ , (¥(< *rmŒp(ñ ,a{ù {ù {R  {{ {!{"{#{${%{&{({){*s?)(z*rŒp(ñ ,a{ù {ù {R  {{ {!{"{#{${%{&{'{){*s?)(z*r«Œp(ñ ,a{ù {ù {R  {{ {!{"{#{${%{&{'{({)s?)(z*rÁŒp(ñ ,a{ù {ù {R  {{ {!{"{#{${%{&{'{({*s?)(z*rÕŒp(ñ , (*ríŒp(ñ ,{ù (I*rp(ñ ,{ù (J*r/p(ñ ,{ù (€*rYp(ñ ,{ù (*(e(&¥sû£ (¤(¥*:(í }ú *N{ú (õ(m*:(í }û *>{û (n*:(ƒ }ü *R{ü (V (|*:(í }ý *>{ý (p*:(ƒ }þ *>{þ (q*:(í }ÿ *>{ÿ (&*(í **:(í } *>{ (t*:(í } *>{ (u*:(í } *>{ (&*:(í } *>{ (ƒ*:(‡ } *>{ (v*:(ƒ } *B{ þ(Ë+*:( } *R{ (c (O*:( } *f{ (l (V (*:(‡ } *>{ (w*:(ƒ } *B{ þ(Ë+*:( } *>{ (*:(‡ } *>{ (x*:(ƒ } *B{ þ(Ë+*:(í } *>{ (M*:(í } *>{ (L*:(í } *>{ (P*:(í } *>{ (Q*:(í } *>{ (R*:(í } *>{ (S*:(ƒ } *0b4{ { {R  {{ {!{"{#{${&{'{({){*s?)(z*:(ƒ } *>{ (g*:(í } *>{ (r*:(í } *>{ (,*:(í } *>{ (?*:( } *>{ (A*:( } *>{ (B*:( } *f{ r:p( (C*:(í } *>{ (F*:(í } *>{ („*:(€ } *B{ (ó*:(í } *>{ (†*:(€ } *B{ (ï*:(€ } *B{ (ð*:(€ }! *B{! (ò*:( }" *R{" (r(\*:(í }# *>{# (*:(í }$ *>{$ (‚*:( }% *R{% (c (]*:(í }& *Ú{& (#{& (%¥rpoŽ(²£(_–(< *:( }' *R{' (c ($*:(í }( *>{( (%*(í *&(v*:(í }) *N{) (ñ(m*:(í }* *R{* (– (.*:(í }+ *R{+ (– (.*:(í }, *R{, (– (.*:(í }- *0g4{- {- {R  {(– {!{"{#{${%{&{'{({){*s?)(z*:(í }. *0g4{. {. {R  {(– {!{"{#{${%{&{'{({){*s?)(z*:(í }/ *>{/ (d*:(í }0 *>{0 (d*(í *:(œ¥(< *:( }1 *R{1 (p(\*:(í }2 *0g4{2 {2 {R  {{ (– {"{#{${%{&{'{({){*s?)(z*:(í }3 *0g4{3 {3 {R  {{ (– {"{#{${%{&{'{({){*s?)(z*:(í }4 *0g4{4 {4 {R  {{ {!(– {#{${%{&{'{({){*s?)(z*:(í }5 *0g4{5 {5 {R  {{ {!(– {#{${%{&{'{({){*s?)(z*:(í }6 *>{6 (f*:(í }7 *>{7 (W*:(í }8 *>{8 (X*:(ƒ }9 *>{9 (q*:( }: *R{: (c (K*:(í }; *>{; (H*:(í }< *>{< (ë*:(í }= *>{= (~*:(ˆ }> *v{> (&(þ(Ì+*:( }? *~{? {? { (\ (/*:(€ }@ *B{@ (í*V(€ }A }B *Z{A {B (ø*:(í }C *>{C (T*:( }D *R{D (c (@*:(í }E *N{E (O(G*:(ˆ }F *v{F (&(þ(Ì+*:(ˆ }G *v{G (&(þ(Ì+*:(ˆ }H *v{H (&(þ(Ì+*(Š *"(+*(Š *"(**(ˆ **(*(‹ *V{Í(ö þþ*:(Œ }I *:{I (*:( }J *B{J þoì *:(ñ }K *0®{K oò sb*²}L }M }N }O }P (" *0³{O YE + +j+]8‚{L (µ o¶ }N }O {N oï ,5{N o· }M }O {M (# }P *}M +¾}O {N (Á+}N }O }P *0‡e {O YE++e{O E + ++++}O {N (Á+}O }P  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{O E + + +++***"{P *0 {L sf*Ò}Q }R }S }T }U }V (" *0È{U YE +8|+o8”{Q (µ o¶ }T }U {T oï ,G{T o· }S }U {S (# {R {S £’Y}V *}S +¬}U {T (Á+}T }U }V *0‡e {U YE++e{U E + ++++}U {T (Á+}U }V  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{U E + + +++***"{V *0 {Q {R sl*:(ƒ }W *B{W þoA *:( }X *0e{X oŽ sr*:( }Y *0g{Y o st*:( }Z *B{Z þoì *:(‘ }[ *0®{[ o’ sx*:(“ }\ *0i{\ o” sz*:(• }] *0k{] o– s|*:(— }^ *>{^ (9*0L(˜ }_ }` }a }b }c }d }e }f  }g *0n{_ o {_ o{ {!{"{#{${%{&{'{({){*s?) {{ {!{"{#{${%{'{({){*s?) {d {` {a {b {e {c {_ o(( (™  (š  (› { {!{"{#{${%{'{({){*s?){ {!{"{#{${%{'{({){*s?){_ o1P{d {` {a {b {f {c {_ o((  (›  (™ sœ +{f sœ   (   (ž  {_ o,{d {`  ('+  {_ o,{d {`  (L%+ {` (ç${_ o,P{d {` {a {b {g {c {_ o((  (›  (™ sœ +{g sœ ( (ž sŸ  sq s  *Ò(¡ }h }i }j }k }l }m *0 Co(t (¢ (£ {h {i {j {k {l {m s‚*:( }n *0Qquv-- uw--*tw- {ÁY {n (%¥oG²oL -* (™ { *0n€o r“prR9ps(ðr«p(&¥s¤(H (2€p sß €q s¤ €r s¥ €s *~*~*~*~*~*~ *~!*0 Þu ,t(µC +äuL$ ,tL$(”† +ÉuK$ ,tK$(‰†(l *uW,tW(iv+ÝuX,tX(tv+Âu,t(¥C+§u ,t (›C8‰ÿÿÿu  ,t(¯C8kÿÿÿu_   ,t_ (Š,8Mÿÿÿu^   ,t^ (~,8/ÿÿÿu†   ,t† (Ö-8ÿÿÿu  ,t(ÞR8óþÿÿuL ,tL (G58Õþÿÿuq ,tq (-8·þÿÿua ,ta (›,8™þÿÿut ,tt (1-8{þÿÿuu ,tu (9-8]þÿÿuv ,tv (A-8?þÿÿu{ ,t{ (k-8!þÿÿux ,tx (O-8þÿÿuy ,ty (T-8åýÿÿuú,tú(¦<8Çýÿÿuz ,tz (^-8©ýÿÿuw ,tw (H-8‹ýÿÿuù,tù(WI8mýÿÿun ,tn (-8Oýÿÿug ,tg (Ë,81ýÿÿuø,tø(HI8ýÿÿuí,tí(êH8õüÿÿul ,tl (ô,8×üÿÿum   ,tm (ü,8¹üÿÿu !!,t (-8›üÿÿu€ "",t€ (™-8}üÿÿu… ##,t… (Ð-8_üÿÿuµ$$,tµ(d8Aüÿÿud %%,td (¯,8#üÿÿu&&,t(¤@8üÿÿu? '',t? (%58çûÿÿub ((,tb (¢,8Éûÿÿuc )),tc (ª,8«ûÿÿu+**,t+(¤8ûÿÿu+++,t+(ô£8oûÿÿu-',,,t-'(”8Qûÿÿu+--,t+( ¤83ûÿÿu¹..,t¹(]s8ûÿÿuò//,tò(I8÷úÿÿu+00,t+(Ö£8Ùúÿÿu:11,t:(‰F8»úÿÿu;22,t;(“F8úÿÿur 33,tr ("-8úÿÿus 44,ts ()-8aúÿÿuk 55,tk (è,8Cúÿÿuƒ 66,tƒ (·-8%úÿÿu 77,t (£-8úÿÿu„ 88,t„ (Á-8éùÿÿu‚ 99,t‚ (­-8Ëùÿÿup ::,tp (-8­ùÿÿue ;;,te (»,8ùÿÿu[<<,t[(ÒS8qùÿÿuZ==,tZ(ÇS8Sùÿÿu+>>,t+(8¤85ùÿÿu +??,t +(B¤8ùÿÿu+@@,t+(¤8ùøÿÿu+AA,t+(-¤8Ûøÿÿu+BB,t+("¤8½øÿÿui CC,ti (Û,8ŸøÿÿuøDD,tø(:@8øÿÿuf EE,tf (Ã,8cøÿÿuñFF,tñ( IGG{ß:{I(l *uîHH,tî(ñHII{U;{X;(l *uïJJ,tï(ùHKK{Ñ:{I(l *uðLL,tð(IMMonj(l *uo NN,to ( -OO{I(l *uPP,t(!jO+Øu·QQ,t·(Bs(l *u¸RR,t¸(Os+ÝuSS,t(ÆC+ÂuTT,t(ÎC+§uUU,t(¾C8‰ÿÿÿu} VV,t} ({-8kÿÿÿu~ WW,t~ (…-8Mÿÿÿu)XX,t)(#D8/ÿÿÿuYY,t(TC8ÿÿÿuZZ,t(]C8óþÿÿu [[,t (xC8Õþÿÿu\\,t(fC8·þÿÿu ]],t (C8™þÿÿu ^^,t (oC8{þÿÿu __,t (‹C8]þÿÿu| ``,t| (q-8?þÿÿu` aa,t` (‘,(l *u40bb, (&¥(l *u"+cc,t"+(W¤(l *u$+dd,t$+(n¤+Ýumee,tm(‡+Âunff,tn(’+§uogg,to(ž8‰ÿÿÿuphh,tp(©8kÿÿÿuqii,tq(´8Mÿÿÿuejj,te(.8/ÿÿÿufkk,tf(88ÿÿÿugll,tg(B8óþÿÿuhmm,th(N8Õþÿÿujnn,tj(d8·þÿÿukoo,tk(p8™þÿÿulpp,tl(|8{þÿÿuiqq,ti(Y8]þÿÿurrr,tr(À8?þÿÿusss,ts(Ê8!þÿÿußtt,tuuo¦ 8óÿÿu(vv,vwwoo(l **6{ïT(*0Ááu ,*u_  ,*u`  ,*uq  ,*ua ,*ut ,*uu ,*u +, *u-', *uv   , *u{   ,*uw   ,*uù  ,*un   ,*ug ,*um ,*ub ,*uc ,*u¸,*u:,*u;,*ur ,*us ,*uk ,*up ,*ue ,*ui , *uf ,!*uî,"*u+,#*uï,$*u·,%*uo   ,&*u!!,'*ud "",(*u##,)*u+$$,**u%%,+*uZ&&,,*u¹'',-*uW((,.*u| )),/*u} **,0*u++,1*uò,,,2*u --,3*uµ..,4*u? //,5*uø00,6*u€ 11,8*u+22,9*uX33,:*ux 44,;*uƒ 55,<*u~ 66,=*u+77,t+(¤88*uð99,?*u)::,@*uy ;;,B*uz <<,C*uú==,D*u >>,E*u… ??,F*u @@,G*uøAA,H*u+BB,I*u!+CC,J*u"+DD,+ïu#+EE,+áu$+FF,+ÓumGG,K*unHH,+ïuoII,+áupJJ,+ÓuqKK,+ÅueLL,L*ufMM,+ïugNN,+áu^ OO,M*uhPP,N*ujQQ,O*uL RR,Q*ukSS,R*ulTT,S*uiUU,T*urVV,U*u† WW,V*utXX,W*u„ YY,Y*u‚ ZZ,Z*u[[,[*us\\,\*u]],]*u[^^,e*uL$__,g*uK$``,+ïußaa,abbo¦ 8Múÿÿu+cc,t+(Õ£dd8+úÿÿu+ee,t+(ÿ£(Z 88*(ô ff, À*u+gg,t+(ó£(Z 88*u40hh,nt40(™Àit40(˜ÀjjiŒkk,4ku¼ll,lmm(x ¥|o¡ +knno& +rR9p((Z *u(oo, oppon* Á*6{ïT(’*0‡â{ïT ub  ,*uc  ,+òuµ ,+æu¹,+Øu+,t+(ó£(Z  š3**u+,t+(ÿ£(Z +Ó*02(“ (Í+,* žYE (”þþ**0Ìäu ,\t(ÄC t(ÆC t(ÅC t(ÃC(Î+(ö s¿C{ðTs¤s§ *u ,et (‹C t (ŠCt (ŒC(–  (Ù  (Ú   {ïTs†C{ðTs¤s§ *u  9’t(£C t(¢C t(¥C t( Ct(¤Ct(¡C(–  (Ù  (Ú     {ïTsœC{ðTs¤s§ *u 9’t (˜Ct (›C t (–Ct (šCt (—Ct (™C (–  (Ù  (Ú    {ïTs’C{ðTs¤s§ *u9’t(­C t(¬C t(¯C t(ªCt(®Ct(«C(–  (Ù  (Ú     {ïTs¦C{ðTs¤s§ *u,et(´Ct(¶C t(µC(–  (Ù  (Ú   {ïTs°C{ðTs¤s§ *u+,Vt+(Ö£ t+(Õ£(–  (Ù  (Ú   {ïTsÑ£{ðTs¤s§ *uß,o¦ 8Oüÿÿ{ðTs¤(¨ s§ *0æsÛ   {ïT(–*ZrÇprø9ps (Ï+*ZrŽprø9ps (Ï+*ZrwŽprÓŽps (Ð+*0çuÞ , oe (c **0(ÒzEÂ*(/ *0{(ÒzEÂäääääï&Rú|¨qf[P$‡E:/¸Ã??  ýò—ÔÉ`kv¾Üç)4?JU]𥰻ÆÑXcny„­­‡!,7BÎŒ¢M$³Ùßêõ :/’G<1r3Eps© (Ñ+þo  *ráŽp(åÃ*rp(åÃ*r-p(åÃ*rQp(åÃ*ryp(åÃ*r›p(åÃ*rÁp(åÃ*rïp(åÃ*rp(åÃ*r;p(åÃ*rcp(åÃ*rp(åÃ*rµp(åÃ*råp(åÃ*r#‘p(åÃ*rG‘p(åÃ*ro‘p(åÃ*r‘‘p(åÃ*r¹‘p(åÃ*rá‘p(åÃ*r ’p(åÃ*r1’p(åÃ*r]’p(åÃ*r…’p(åÃ*r§’p(åÃ*rÇ’p(åÃ*rÇ’p(åÃ*rï’p(åÃ*r“p(åÃ*r9“p(åÃ*rg“p(åÃ*r“p(åÃ*r¯“p(åÃ*rÑ“p(åÃ*rý“p(åÃ*r'”p(åÃ*r'”p(åÃ*rK”p(åÃ*rq”p(åÃ*r›”p(åÃ*r½”p(åÃ*rÝ”p(åÃ*r•p(åÃ*r!•p(åÃ*rE•p(åÃ*rm•p(åÃ*r›•p(åÃ*r½•p(åÃ*rÝ•p(åÃ*r–p(åÃ*r#–p(åÃ*rG–p(åÃ*ri–p(åÃ*r‘–p(åÃ*rµ–p(åÃ*rÛ–p(åÃ*rÿ–p(åÃ*r—p(åÃ*r?—p(åÃ*rg—p(åÃ*r‹—p(åÃ*r«—p(åÃ*rù—p(åÃ*rG˜p(åÃ*rm˜p(åÃ*r˜p(åÃ*r¿˜p(åÃ*ró˜p(åÃ*r%™p(åÃ*rU™p(åÃ*r™p(åÃ*r³™p(åÃ*rå™p(åÃ*ršp(åÃ*r;šp(åÃ*rsšp(åÃ*r•šp(åÃ*0è(ÒzEÂo€ÊÕàYNC8-" žù´¿¿¿Âm}ˆ“%¡¬Q\gr3>î‹™ŽÛI–üj0;;;uã·bö_dëWF©©¤(+AL66++++++++T++ØÍÅñæÐº¯ƒx (œ , r»šp(åÃ*þ(*réšp(åÃ*r›p(åÃ*r1›p(åÃ*rW›p(åÃ*r›p(åÃ*r¥›p(åÃ*rÉ›p(åÃ*r œp(åÃ*r1œp(åÃ*rqœp(åÃ*r­œp(åÃ*rãœp(åÃ*rp(åÃ*rEp(åÃ*rp(åÃ*r³p(åÃ*rép(åÃ*ržp(åÃ*rYžp(åÃ*rŸžp(åÃ*rÓžp(åÃ*rõžp(åÃ*rŸp(åÃ*rIŸp(åÃ*rmŸp(åÃ*r—Ÿp(åÃ*r½Ÿp(åÃ*rïŸp(åÃ*r! p(åÃ*rW p(åÃ*r p(åÃ*r§ p(åÃ*rË p(åÃ*r¡p(åÃ*r7¡p(åÃ*rk¡p(åÃ*r“¡p(åÃ*r»¡p(åÃ*rû¡p(åÃ*r!¢p(åÃ*ra¢p(åÃ*r£¢p(åÃ*rÉ¢p(åÃ*rë¢p(åÃ*r £p(åÃ*r1£p(åÃ*ra£p(åÃ*r£p(åÃ*rÑ£p(åÃ*rù£p(åÃ*r!¤p(åÃ*rI¤p(åÃ*rq¤p(åÃ*r¡¤p(åÃ*rÓ¤p(åÃ*rû¤p(åÃ*r-¥p(åÃ*r]¥p(åÃ*r•¥p(åÃ*rÍ¥p(åÃ*rõ¥p(åÃ*r¦p(åÃ*rE¦p(åÃ*rm¦p(åÃ*r—¦p(åÃ*ræp(åÃ*ró¦p(åÃ*r§p(åÃ*rK§p(åÃ*ru§p(åÃ*r§§p(åÃ*rѧp(åÃ*rý§p(åÃ*r)¨p(åÃ*rO¨p(åÃ*rw¨p(åÃ*rŸ¨p(åÃ*rͨp(åÃ*0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *0õ(N}E8*(/ *00ê(ª ,A (« (  ,0(ª (ª -#rÿ¨prR9ps (Ò+o¬ o˜ *(ª ,B (« (Ÿ,/ (ª (ª -"r1©prR9ps (Ò+o¬ o˜ *(ª ,E(« (¥,0(ª (ª -"r]©prR9ps (Ò+o¬ o˜ *(ª ,F(« (N} 30(ª (ª -"r‰©prR9ps (Ò+o¬ o˜ **þr·©p(åÃrR9po` rÍ©p(åÃrR9po` rá©p(åÃrR9po` *0-ì (9 (ºv(»v (œ ,'r÷©prR9ps (Ò+o¬ o˜ 8x(Òz 3i(nx 3,tt{&CrDpsÏ (Ê+oì &+8rjprDps (Ó+o­ (žo o˜ ++Ësåo® (Ô+sçséo¯ (Õ+(Ö+(×+  ¥7sQ (Ø+  (] 9š   (] (] 9Í (]   (] (] ,o (]   (] (] -W (^  (^   (^ rªprÓŽps (Ð+o± (¨ (¨(¨(+o˜ ** (^  (^  rWªprø9ps (Ï+o²  (¨(¨(®+o˜ * (^ rªprDps (Ó+o­ (¨o o˜ *0ï{/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb om 9²{B5 (O]($nþ,(àhoÀo+,Cr—ªprÓŽps (Ð+o± om(¢–(Nom(¢–(+o˜ *r»ªprÓŽps (Ð+o± om(¢–(Nom(¢–(+o˜ *{U;{`;,y(³ {i;{AL(&E+,6(³ rߪprDps (Ó+o­ (No o˜ *{B5 (O]($nþ,(àhoÀo+,Cr«prÓŽps (Ð+o± om(¢–(Nom(¢–(+o˜ *r'«prÓŽps (Ð+o± om(¢–(Nom(¢–(+o˜ *0 …/u 9£t(SC t(RC t(UC t(TCrK«pr«ps" (Ù+o´ oµ oµ (+o˜ (?¥(?¥..r—«prDps (Ó+o­ ()¥o o˜ **u9Èt(\Ct([Ct(^C t(]Ct(ZC  ("N  (¶   (·  r§«prø9ps (Ï+o²   (®+o˜ (?¥(?¥..r—«prDps (Ó+o­ ()¥o o˜ **u   9°t (vCt (wCt (yC t (xCt (uC rã«prDps (Ó+o­  (No o˜ (?¥(?¥..r—«prDps (Ó+o­ ()¥o o˜ **u9ãt(dC($n@ˆt(eC($n@¹t(eCt(dCt(gC t(fCt(cC  ("N  (¶   (·  (˜o²   (®+o˜ (?¥(?¥..r—«prDps (Ó+o­ ()¥o o˜ **t(eCt(dCt(gC t(fCt(cC  ("N  (¶   (·  (™o²   (®+o˜ (?¥(?¥..r—«prDps (Ó+o­ ()¥o o˜ **t(eCt(dCt(gCt(fCt(cC  8Bÿÿÿu 9Ãt (nCt (mCt (pC t (oCt (lC  ("N  (¶   (·   (¸ (šo±   (+o˜ (?¥(?¥.-r—«prDps (Ó+o­ ()¥o o˜ **u 9Œt (~C t (€C t (Cr'¬prDps (Ó+o­  o o˜ (?¥(?¥.-r—«prDps (Ó+o­ ()¥o o˜ **u ,Wt (ŠCt (ŒCu , («+rS¬psÏ (Ê+sÝþ(4+*u9Gt(¤Cu9.t(¤Ct(eCt(£Ct(¤Ct(dCt(¢Ct( C(ƒ],(ƒ]+9·t(¤Ct(eCt(£Ct(¤Ct(dCt(¢Ct( Ct(¡C  ("N  (¸   (¶   (· r[¬prÓŽps (Ð+o±   (+o˜ *u9t(¤Cu ,t(¤C8døÿÿt(¤Cu ,t(¤C+Ït(£Ct(¢Ct( Ct(¤Ct(¡C (ƒ]-l ("N  (¸   (¶   (·   ( (ñ -/r•¬prÓŽps (Ð+o±   (+o˜ ++8x÷ÿÿu   9…t (šCt (—C t (™C ($N rϬprDps (Ó+o­  o o˜ («r­prR9ps (Ò+o¬ o˜ *u!!9Çt(­Ct(¬Ct(ªCt(®Ct(«C (ƒ]-l ("N  (¸   (¶   (·   ( (ñ -/r7­prÓŽps (Ð+o±   (+o˜ ++8öÿÿu"","rƒ­prR9ps (Ò+o¬ o˜ *u? ##,"r½­prR9ps (Ò+o¬ o˜ *u$$,t(µC8õÿÿuL$%%,tL$(”†8hõÿÿuK$&&,tK$(І+Ùu('','((oso˜ *u)),t(ÅC  o˜ *u**,Xt(ÍCt(ÌCt(ËC  ("N  (¶   (·    ()o˜ *u++,[t(½Ct(¼C sé («rí­prø9ps (Ï+o²  o& (®+o˜ ,*u_ --,"r®prR9ps (Ò+o¬ o˜ *u^ ..,6t^ (}, r1®prDps (Ó+o­  o o˜ *u† //,t† (Õ-  o˜ *u00,"ri®prR9ps (Ò+o¬ o˜ *uL 11,"r—®prR9ps (Ò+o¬ o˜ *uò22,Jtò(Itò(I rÇ®prDps (Ó+o­  ($No o˜ *u` 33,Yt` (’, (@¥-"rñ®prR9ps (Ò+o¬ o˜ *r ¯prR9ps (Ò+o¬ o˜ *uf 44,ztf (Á,5tf (Â,65ofmo~jo† 77-5(w^6(o˜ *r)¯prC¯ps7 (Ú+o¹ 5(w^76(+o˜ *uø88,"rQ¯prR9ps (Ò+o¬ o˜ *u¸999Èt¸(Qs t¸(Ns t¸(Lst¸(Ps:t¸(Ms; (ñ ,   (ñ +, ;:(ñ +,+ru¯prø9ps (Ï+o² ; (®+o˜ *r‹¯pr¡¯ps (Û+oº ; : (Ü+o˜ *u·<<9t·(As t·(@s  r·¯p(ñ ,3růprDps (Ó+o­ (– o o o˜ *rÛ¯prø9ps (Ï+o²  (– o (®+o˜ *u==,;t( j>t(!j?>(–?{Io o o˜ *už@@,Rtž( s5tž( s tž( sAA5(w^ s~ o¼ BB(Y   o˜ *uCC,\t((j t(*j t('jDt()jD  s½ o¾ BB(Y ::o˜ *uq EE,"rñ¯prR9ps (Ò+o¬ o˜ *ui FF,Oti (Ú,Gti (Ù,Hr°prø9ps (Ï+o² H{w;G{w;(®+o˜ *uo II,Eto ( -?rC°prDps (Ó+o­ (–?{Io o o˜ *ua JJ9šta (š,ta (™,ta (˜,?ta (—,  ("N  (¸   (¶   (· r_°prs°psF (Ý+o¿ (–?{Io   (Þ+o˜ *ut KK,|tt (0-tt (/-tt (.-  ("N  (¸   (¶   (· r…°prÓŽps (Ð+o±   (+o˜ *uu LL,qtu (8-tu (7-tu (6-  ("N  (¶   (·  r³°prø9ps (Ï+o²   (®+o˜ *uv MM,qtv (@-tv (?-tv (>-  ("N  (¶   (·  rí°prø9ps (Ï+o²   (®+o˜ *u{ NN,qt{ (j-t{ (i-t{ (h-  ("N  (¶   (·  r%±prø9ps (Ï+o²   (®+o˜ *uøOO,"r[±prR9ps (Ò+o¬ o˜ *u)PP9Vt)( D t)(!Dt)("Dt)(Dt)(D  {B5(DfQQ(Á (A Q(Á (@ 9›RR(d  ($n3Br±prø9ps (Ï+o²  (“” (f(þN(È+(®+o˜ *r«±prø9ps (Ï+o²  (“” (f(þN(È+(®+o˜ *rɱprø9ps (Ï+o² ()¥(“” (f(þN(È+(®+o˜ *u-'SS,]t-'(”TT(ß+UsßVUo WW,UVW(©*rç±prR9ps (Ò+o¬ o˜ *uw XX9Ñtw (G-tw (F-  {B5(CfYY(¤  {B5(O]($nþ,@r²prDps (Ó+o­ (“” (f(þN(È+o o˜ *rK²prDps (Ó+o­ (“” (f(þN(È+o o˜ *ux ZZ,stx (N-tx (M-  {B5(CfYY(¤ r…²prDps (Ó+o­ (“” (f(þN(È+o o˜ *uy [[,"r¯²prR9ps (Ò+o¬ o˜ *uz \\,"rÓ²prR9ps (Ò+o¬ o˜ *uú]],&tú(¥< rDpsÏ (Ê+ oì &*uù^^9(tù(TI_tù(WI tù(SI`tù(UItù(RI tù(VIads%  `(/Ko&  _9_bb(M crû²prDps (Ó+o­  o o˜ ds% a  c(0Ko&    (ñ -)r+³prDps (Ó+o­  o o˜ **r[³prDps (Ó+o­  o o˜ *ug dd,Etg (Ê,6tg (É,7r‹³pr«ps" (Ù+o´ 67(+o˜ *un ee,"r»³prR9ps (Ò+o¬ o˜ *uîff9€tî(òHgtî(ðH5tî(ñHhtî(óHitî(ïH  hg(#Njj(š  j(™  i5(v^  s½ oà o˜ *uïkk9‘tï(úHltï(ùHmtï(ûHntï(øH n(“” rû³pŒm(ûm(MN(È+(“” rû³pŒm(ûl(MN(È+s~ oÄ o˜ *uðoo,otð(Iptð(Iqtð(Intð(I n(“” q(\N(È+(“” p(\N(È+s~ oÄ o˜ *uñrr,qtñ( Istñ( Ittñ( Intñ(I n(“” t(ON(È+(“” s(ON(È+s~ oÄ o˜ *uíuu,otí(éHvtí(çH5tí(èH sé voÅ &rÿ³prÓŽps (Ð+o± 5(v^ o& (+o˜ ,*u ww,"r/´prR9ps (Ò+o¬ o˜ *uµxx,6tµ(d r]´prDps (Ó+o­  o o˜ *u€ yy,"r‡´prR9ps (Ò+o¬ o˜ *ul zz,stl (ó,tl (ò,  {B5(CfYY(¤ rÑ´prDps (Ó+o­ (“” (f(þN(È+o o˜ *um {{9Ätm (ú,tm (û,|tm (ù,  {B5(CfYY(¤ |,@rµprDps (Ó+o­ (“” (f(þN(È+o o˜ *r%µprDps (Ó+o­ (“” (f(þN(È+o o˜ *ub }},"rIµprR9ps (Ò+o¬ o˜ *ue ~~9te (º,(Æ 9ête (º,(Æ (Æ -E(Ç €rƒµprDps (Ó+o­ €oÆmggom(¢–o o˜ *te (º,sé sëoÈ oÉ (Ê (Ë (à+(á+r¡µprø9ps (Ï+o² (â+€€oÆmggom(¢–o& (®+o˜ ,*te (º,8qÿÿÿuc ‚‚,"r¿µprR9ps (Ò+o¬ o˜ *ud ƒƒ,"róµprR9ps (Ò+o¬ o˜ *u| „„,Qt| (p-,"r!¶prR9ps (Ò+o¬ o˜ *rA¶prR9ps (Ò+o¬ o˜ *u} ……,"ra¶prR9ps (Ò+o¬ o˜ *u~ ††,"r©¶prR9ps (Ò+o¬ o˜ *u… ‡‡9 t… (Ì- t… (Ï-ct… (Î-ˆt… (Í- r÷¶prDps (Ó+o­  o o˜ ˆo‰Qco‰Q ("N  (¶   (· r5·prR9ps (Ò+o¬ o˜  (ñ --rs·prø9ps (Ï+o²  (®+o˜ +r±·prR9ps (Ò+o¬ o˜ *u+‰‰,t+(ÿ£(Y   o˜ *u+ŠŠ,t+(ó£(Y   o˜ *u+‹‹9¹t+( ¤ rï·p(åà r¸p(åà  (ñ ,)r¸prDps (Ó+o­  o o˜ * (ñ ,)r¸prDps (Ó+o­  o o˜ *r%¸prDps (Ó+o­  o o˜ *(›,(d  8:ÿÿÿ(ô RR,R(d  8ÿÿÿu¹ŒŒ,6t¹(\s r7¸prDps (Ó+o­  o o˜ *u+,t+(Õ£8sÜÿÿu:ŽŽ9ît:(‡F|t:(ˆFrW¸prR9ps (Ò+o¬ o˜ 9„(Ì ( ,9(Ì (  ry¸prDps (Ó+o­  o o˜ +:(Ì (  r›¸prDps (Ó+o­  o o˜ +|,"r½¸prR9ps (Ò+o¬ o˜ **u;‘‘,"r߸prR9ps (Ò+o¬ o˜ *ur ’’,"r¹prR9ps (Ò+o¬ o˜ *us ““,"r¹prR9ps (Ò+o¬ o˜ *u[””,ft[(ÑS r5¹prR9ps (Ò+o¬ o˜  rR9p(ñ -)rI¹prDps (Ó+o­  o o˜ **uZ••,tZ(ÆS +Œu+––,6t+(7¤ r]¹prDps (Ó+o­  o o˜ *u +——,"rw¹prR9ps (Ò+o¬ o˜ *u+˜˜,t+(¤  o˜ *u+™™,6t+(,¤ r©¹prDps (Ó+o­  o o˜ *u+šš,"r¿¹prR9ps (Ò+o¬ o˜ *uk ››,Xtk (ç,œrݹprDps (Ó+o­ œ¥7r:p(p+(` rS@p( o o˜ *up žž,6tp (-gtp (-|tp (- g| (ª*uŸŸ,"rù¹prR9ps (Ò+o¬ o˜ *uW  ,6tW(hv r%ºprDps (Ó+o­  o o˜ *uX¡¡,6tX(sv rEºprDps (Ó+o­  o o˜ *uƒ ¢¢,"rkºprR9ps (Ò+o¬ o˜ *u„ ££,"r«ºprR9ps (Ò+o¬ o˜ *u ¤¤,"rëºprR9ps (Ò+o¬ o˜ *u‚ ¥¥,"r+»prR9ps (Ò+o¬ o˜ *u"+¦¦,6t"+(V¤ rk»prDps (Ó+o­  o o˜ *u!+§§,t!+(L¤ +¼u$+¨¨,Et$+(m¤ t$+(l¤ r¡»prø9ps (Ï+o²   (®+o˜ *u#+©©,t#+(b¤t#+(a¤  +­umªª,tm(†  o˜ *un««,tn(‘  (jo˜ *uo¬¬,,to(œ to(   (io˜ *uq­­,tq(³  (go˜ *up®®,tp(¨  (ho˜ *ue¯¯,"rß»prR9ps (Ò+o¬ o˜ *uf°°,"r!¼prR9ps (Ò+o¬ o˜ *ug±±,"rg¼prR9ps (Ò+o¬ o˜ *uh²²,Eth(M th(L r­¼prø9ps (Ï+o²   (®+o˜ *ui³³,6ti(X rÕ¼prDps (Ó+o­  o o˜ *u40´´9vt40(™Àµt40(˜À  µŒTT,4Tu¼¶¶,¶··(x ¥|o¡ +T¸¸o& +rR9p((Y o˜ *ur¹¹9•tr(¾ºtr(¿»(ö ¼»¼(n o÷ ,2rý¼prR9ps (Ò+o¬ o˜ º(ã+8ŠÓÿÿr3½prR9ps (Ò+o¬ o˜ »(ã+8XÓÿÿus½½,"ri½prR9ps (Ò+o¬ o˜ *ut¾¾9tt(Õ¿tt(Ô ¿-)r«½prDps (Ó+o­  o o˜ *¿ÀÀ(d  rù½prø9ps (Ï+o²   (®+o˜ *ujÁÁ,6tj(c rG¾prDps (Ó+o­  o o˜ *ukÂÂ,Etk(o tk(n r¾prø9ps (Ï+o²   (®+o˜ *ulÃÃ,tl({tl(z  +­ußÄÄ,ÄÅÅo¦ 8ÀÑÿÿuàÆÆ,"ÆÇrDpsÏ (Ê+Çoe oì &*uáÈÈ,"ÈÉrDpsÏ (Ê+Éoe oì &*uÞÊÊ,"ÊËrDpsÏ (Ê+Ëoe oì &*uÌÌ,"ÌÍrDpsÏ (Ê+Íoe oì &*uâÎÎ,"ÎÏrDpsÏ (Ê+Ïoe oì &*uãÐÐ,"ÐÑrDpsÏ (Ê+Ñoe oì &*rÁ¾prDps (Ó+o­ oe o o˜ *B{ïTþ(«*02sé (¬,o& (У+o& o˜ *0@( Áo%Á oÕ - Þ#r¿p( rR9po` Þ t  Þ*34 0 ™  (I¥ , (\¦+(® (÷EC€Ðr¿psÍ (ä+ sr¿pr‡po` (?¥(@¥(B¥(å+&*rU¿psÏ (æ+s /~Ð oÑ (?¥(@¥X(ç+&*rm¿psÒ (è+sr‡pr¿po` (?¥(@¥X(A¥(B¥X(é+&*($¥(K+-(%¥(K+þ+,(&¥(K+þ+,Pr‘¿psÒ (è+s!r‡pr¿po` (?¥(@¥X(A¥(B¥X(é+&**Î(%¥(K+,+ (&¥(K+,*þ(¯*02 r 8ps‰ (0+&(‘ -* ($ þ(°*0r(÷34rµ¿psÓ (ê+ s',r>:p+rN:p(ë+&*rÓ¿psÔ (ì+ s+,r>:p+rN:p(“(í+&*0 ^(— (Ù (Ú (±o£¤(“(²(­s-þ(V+*0 €{ïT u+ ,rë¿ps— (6+&*u+ ,rÀps— (6+&*{ïTu( , s/þot*(³*0Ö(‘ 9Ç ($ (I¥ (?¥(A¥ (³+rR9p(ñ :‡(@¥(B¥3Y  /+ + rQÀpsj (#+  s3(+&r]ÀpsÕ (î+  s9-s ^ s (ï+&***ráEp*~"*~#*NsAþ(o+*~$*0nrmÀprR9pŒ’(Ö Œ’(ð+,s× r,ÁpsØ Þ2s× r.MpsØ Þt s× r.MpsØ Þ*OP0‚( Áo'Á  Þ9t uÞ ,' oe (sû£(¤(+ Þþ&( Áo'Á,( Áo+Á+,(c *sGþ(ñ+*905(¼ -!¥7 r6Áp(p+(` sHz(d *05(l (V Þ#t (sû£ (¤(¥ Þ*#0Fr*8prR9po` ( Áo'Á- (U Þ Þt uÞ , Þþ*-.0–{X {X @‚{Y {Y @o{Z {Z 3_{[ {[ 3O{\ {\ 3?{] {] 3/{^ {^ 3{_ {_ 3{` {` þ*********0¥{P {P @‘{Q {Q @~{R  {R  oE),d{S {S 3T{T {T (ò+,>{U {U (ñ ,){V {V 3{W {W 3 (À*********0ª{G {G @–{H {H @ƒ{I {I @p{J {J 3`{K {K (ò+,J{L {L 3:{M {M 3*{N {N 3{O {O 3 (Á**********Î{ (SE rEp*r<Áp*rRÁp*0©{W {W @•{X {X @‚{Y {Y @o{Z {Z 3_{[ {[ 3O{\ {\ 3?{] {] 3/{^ {^ 3{_ {_ 3{` {` þ**********0²{N {N @ž{O {O @‹{P {P @x{Q {Q 3h{R {R (ó+,S{S {S 3C{T {T (ô+,.{U {U (ñ ,{V {V 3 (Ä**********0?, (Ù +(f²(c (Ú° s¯ ,(©*(§*0 {r^ -{t^* (˜ {e^*0,{r^ - (²(h²* (˜ (~±(j²*0){r^ - {s^+ (˜ {k^oŠ´*Š,{k { +,s[*s]**sc**se*¢sisksm(õ+(ö+(÷+sÚ *0¨!{k { (õ {s {k {þ {k {ö {k { {k { {k { (Ê(Ë(Ì(f¿ Þ,t uõ/ ,($sû£ (¤ (ø+ Þþ*yz,‚£Â(Û £Â(Ü sÝ *0C"Œ’ ,+u¼ , (x ¥|o¡ + o& +rR9ps~ *05${B`(l £Â (Þ (Ü ss(ù+sÚ *0Jsw(ú+,*ê%rR9ps~ ¤ê(Î{C`Žiþþ*0\% {ë  {ì  {k {ö (¿ ( Á o+Á,  (c sß *(%¥(K+, (c +sß *0(“ (•, (Í+þ**0Q(•,(“(Í+þ+,+,(“(Í+þ+,*(“(Í+**0 (&þN+þs‰þ(3+*0/'uø&,tø& {ÙM{ÎM*tù& {ÚM{ÔM**s*0$(’À (À Þ t  Þ(Â*  0o s(þ(W+*00(¨ˆ(Ú,r\Áp+rR9p( sY‰(6“*00(Ù(Ú,r\Áp+rR9p( sY‰(6“*0&(¥7 rfÁp(p+(` sY‰(6“*0T)(à ,> (á {•M,/(à (à -"(á {”M (á {šM (Û*("¥(Ü*0T*(â ,> (ã {ŽM,/(â (â -"(ã {M (ã {“M (Û*("¥(Ü*04+{ÊM {IsŸ(y+{I([ (\ (Ÿ+(Ý*0 K,{M {“M {’M {‘M {M{M{ŽM(û+ (¦’*0 K.{”M {šM {™M {˜M {—M{–M{•M(û+ (²’*0 /uù&,itù& {ÚM{ÖM {ÚM{ÓM {ÚM{ÕM {ÚM{ÔM{ÚM{ÒM(à s¡(ü+(I“(U“*tø&{ÙM{ÍM {ÙM{ÐM{ÙM{ÏM {ÙM{ÑM{ÙM{ÎM{ÙM{ÌM {ÙM{ËM (à s£(ý+(>“(S“*0Ñ0(Ù ,s¥(ä þ+,FrjÁpo ,+ rrÁpo -"(’À(%sû£ (¤(¥++,7 (d ([ (\ (\ ¥7rS@p(p+(` + (I¥(#¥(#¥(¥s§(°þ(þ+*0 2tÚ& {£M{M {£M{“M {£M{M {£M{ŽM{£M{M{£M{‘M{£M{’M ( ,a ( ( -P(  , {Ir„Áp(ñ +,+(  (< {Isû£ (¤ (ÿ++@ ( ,6   (   {Ir„Áp(ñ , (   (   + (¦’*0 =6  uÙ&- uÛ&:•(å*tÙ& {¢M {¡M -o s©(Ž(W+þ+,"(&('¥sû£(¤(¥+(å þþ('¥(ä(.‰(æ (¦’*tÛ&{©M {¤M{¨M{§M{¦M {¥M ( ,7  (   {Ir„Áp(ñ , (   (   + (¦’*0 8tâ& {²M{—M {²M{šM {²M{”M {²M{•M{²M{–M{²M{˜M{²M{™M ( ,a ( ( -P(  , {Ir„Áp(ñ +,+(  (< {Isû£ (¤ (ÿ++@ ( ,6   (   {Ir„Áp(ñ , (   (   + (²’*0 8<  uá&- uã&:(ç*tá& {±M {°M -o s«(Ž(W+þ+,(&sû£(¤(¥+(ç þþ('¥(ä(.‰(æ (²’*tã&{¸M {³M{·M{¶M{µM {´M ( ,7  (   {Ir„Áp(ñ , (   (   + (²’*0¹@{ÅM {ÄM s­(+(+ ,6 oè 1+ (é ('(©ˆsû£(¤(¥+s¯(+(ß(Ú þµ& s±(3+  (>“(S“*0®C{ÇM {ÆM s·(+(+ ,6 oê 1+ (é ('(©ˆsû£(¤(¥+s¹(+(Þ þÊ& s»(3+(I“(U“*0BHo (ë s s– sÁ(+ (¤(¡£sÃ(Š(W+,((%¥(¶£+sÅ(‹(W+,#(Õvoì (+  (é+MsÇ(‰(W+,#(Õvoì (+  (ê+(((%¥s¤( +(×oÞ oš&ÜÞu   ,  oâ &Ü&ÜÞ u , oâ &Ü&Ü*(5Àõ 5Ñ)ý&>såþ( +*>sçþ( +*0 ³I(¤(¡£ o)sPv {k { (Ÿ+(R sS  s\v{k {ö (® sí( +(È Þt(¤(%¥(¥ Þ Þu , oâ &Ü&Ü* kw Œ˜0 ÄJo sï(‰(‹(Ÿ+(W+,S( Áo+Á- (*(%¥sû£ (¤(+&+{k { (•  (î ÞJ{k {ö (®(+(%¥sû£ (¤( + Þt (¤(%¥(¥ Þ*¦§0*Ls(+ s(+s(+sí *0{U^ r–Áp(Âþþ*0{U^ r¾Áp(Âþþ*0{U^ rÔGp(Âþþ*04M{V^ u/, t/{N^*rìÁps¤ (¤(+*0*h(+ s(¼(÷»(a°s ¼*0 [Non{¬; (Œ` r–ÁprS@p( {±;( (ˆY{k {ö on{«;s¬n(+*ªr¾ÁprS@p( {±;( s(+*0Ou’,*t‘ {´;(a *0HPor{ (+ -"or{  -* (· +Æ (™ (î *0HRor{ (+ -"or{  -* (· +Æ (ï (ð *0 ÊVsÔo+(q† ([ o`sÖrÂpo+ sÚ(+ +- £@([ (ó o`X Ži2Ìsàr(Âpo++£Ï(ûXŽi2Û*0Q[(Œ(`ok uÑ,*tÒ {ô {õ (+or of*0s_s< (Œ(bok(+ of (ö (÷ (+o]o\s>(+ sø sù *0þ`($¥ {›Mrr:p(ñ 9‡{M {œM -s*(¤(¥+ (] ,0 (] (] -(^  o Ýz(0sû£(¤(¥ ÝX{›Mrº:p(ñ ,%{œM {M sú  (+ Ý {›Mr^:p(ñ 9‰{M {œM -s4(¤(¥+ (] ,2 (] (] -!(^  s  ( + Ý£(1sû£(¤(¥ Ý{›MrZ:p(ñ ,{M{œM 8_ÿÿÿ{›Mrv:p(ñ ,m{M {œM -s>(¤(¥+ (] , sü (++(2sû£(¤(¥ ÝÙ{›Mr€:p(ñ 9¢{M {œM -s>(¤(¥+ (] ,g (^ rPÂp(ñ ,.(] (] -+A(3sû£(¤(¥+$(^ rVÂp(ñ ,Ð(] (] -Â+½ Þ! Þt (¤(¥ Þ*AÙà>sFþ(!+*>sHþ("+*0òd(¤(¡£ uø&,tø& {ÙM{ÌM+ sý sþ sÿ uø&,9tø& {ÙM{ÐM {ÙM{ÏM(#+($+ ÞUtù&  {ÚM{ÖM  {ÚM{ÕM(#+ (%+ Þu   ,  oâ &Ü&Ü* Ë×s *s *0 :f(  (! o& sR (&+('+((+&(%*s *0 Ag(  (! o& sZ s\()+ ((+&(%*0Oj(¤(¡£ (û ( (ú {ô  {ó sí Þu , oâ &Ü&Ü* (40 $sè?sz(°(þ+(O,*0$k, (d s|{ þ(W+**0]m(G¥ s~oN(*+ o\ (d, {k { ,!s€ (šh([ (\ þ(++* *~%*0Þs(f²(1j(6i(>i s¨ o¶ s (f²(¹hoE {k {ö  (asŸs¡(,+szns€n {k {ú ,{E8o•n+( ( ( ( (1j(6i(1j(6i(‚s—*0èÍ{k {'  9Ô (d r^Âp(ñ ,sQ z(d rlÂp(ñ , r­ˆps‚ z(d rxÂp(ñ ,sR z(d rŠÂp(ñ ,sS z(d r–Âp(ñ ,sT z(d r¤Âp(ñ ,sU z(d r²Âp(ñ ,sV z(d rÀÂp(ñ ,sW z(d rÌÂp(ñ ,sX z(d rÜÂp(ñ ,sY z(d rêÂp(ñ ,sZ z(d røÂp(ñ ,s[ z(d rÃp(ñ ,s\ z(d rÃp(ñ ,s] z(d rÃp(ñ ,s^ z(d r*Ãp(ñ ,s_ z(d r6Ãp(ñ ,s` z(d rBÃp(ñ ,sa z(d rNÃp(ñ , r­ˆps\ z*0 s»(-+*0 kts½(µ+ (ƒ¤(¡£ sè?((.+ Þu , oâ &Ü&Ü Þu  , oâ &Ü&Ü*6ES0hy(/+ ( ( ( s¿(e,(0+ ¥ã(1+(  , (  +{ý s  s  *0,{sÁ(2+ (  ( (0+*0 sÅ(-+*0F}{ú on{û (yn{ÿ  {ö  {÷  sÇo (Crs *0 ]~( (û (Ù (Ú (û (ü (û (Û ((Ü (Ý s *†uÏ, tÏ{Ô*tÎ{Ó*0EuÏ,tÏ {Ô (3+(>*tÎ {Ó {Ò(3+(<*0ïƒ{Ì {Í {Ë r^Ãp(ñ ,rR9p+ (öEüÚ\:–¸t6rdÃps (ñ+ þo *rnÃps (­+sN þ(®+*rnÃps (­+sR þ(®+*r~Ãps (ñ+ þo *r’Ãps (­+sV þ(®+*r’Ãps (­+sZ þ(®+*rnÃps (­+s^ þ(®+*rnÃps (­+sb þ(®+*rnÃps (­+sf þ(®+*r¬Ãps (ñ+ þo *rR9p(ñ ,rDps (ñ+ þo *r¾Ãps (­+sj þ(®+*0«…{Ï ( Þ t P Þ -P+ rÊÃpsê ( (4+(oì &sp,!(d % ¤o9 +m(5+rR9ps—  (  (Æ+&*  0j†( þþ,YrR9ps— ( (Æ+&rR9ps— ( (Æ+&rÖÃpsê ( (D+oì &srþ(6+**"s *"s *0!ˆsv(7+ (8+(9+(:+ *02‰{Ë {Í ràÃpsz ( (;+ s€(+&(öE>O3º›øk|Ù]‡r*Äps— ( (X+&8‚r@Äps— ( (X+&8crTÄps— ( (X+&8DrlÄps— ( (X+&8%r‚Äps— ( (X+&8r¤Äps— ( (X+&8çrÀÄps— ( (X+&8ÈrÚÄps— ( (X+&8©rÅps— ( (X+&8Šr0Åps— ( (X+&+nrJÅps— ( (X+&+Rr^Åps— ( (X+&+6rvÅps— ( (X+&+rŒÅps— ( (X+&r 8ps— ( (X+&*0GŠuÏ,tÏ s‚{Ôþ(6+*tÎ {Ó {Ò s„þ(6+*>s†þ(<+*0<o^ /3.ob 3*ob Y YXoL r‡po þ**0N‹%:¤o9 £m rR9p(ñ ,8­o^ -.o^ /þþ+, rR9p 8r^Ãp(ñ :pob 3+( , ob Y  YXoL +@ob 1r^ÃpoÕ +, ob Y  YXoL + rR9p +Ži1Yrx8pŽiY YXmY2!X£m¤mXX3ß(` +rR9p s~ *06*rR9p(ñ ,%(()(&¥sû£ (¤(¥+*0\*rR9p(ñ ,((()(&¥sû£ (¤(¥([ *%,¤%;¤o9 þ(=+*0gŒr^Ãp(ñ - ob þ+,!r¨Åpo ,+r|8po +,"ob Y(V (Õ YXoL **0I%:¤o9 £m r^Ãp(ñ -r|8po +,(Í*(Ë*0(-* (ƒ Œù¥ (¤þ(¥*0 … ¥( 9„ ( {Í(ö 3m( {Ít» ( {Ë (ñ ,rR9p(ñ +,3( {Ë {º ( {Î(>+ o &*( 9( {Í(ö 3t( {Ítº( {Ë (ñ ,rR9p(ñ +,7( {Ë {¹( {Î(>+oK &*( 9š( {Í(ö@( {Ít² ( {Ë ($(ñ ,rR9p(ñ +,=( {Ë  {± ( {Î(>+ (%o &*( 9‹  ( {Í(ö3s ( {Ít¶  ( {Ë (ñ ,rR9p(ñ +,6 ( {Ë  {µ  ( {Î(>+ (< *( 9‹( {Í(ö3s( {Ít¯( {Ë (ñ ,rR9p(ñ +,6( {Ë {® ( {Î(>+ (< *( 9¨( {Í(ö@( {Ít·( {Ë(ñ ,e( {Ë {¶( {Î( (>+("rR9p(ñ -("oì &+*( 9æ( {Í(ö@Ë( {Ít±( {Ë(ñ 9 ( {Ë {°( {Î( (>+("rR9p(ñ -O(l Þ3t("(9(&¥sû£(¤(¥ÞoA &+*( 9ý( {Í(ö@â( {Ít°( {Ë(ñ 9·( {Ë {¯( {Î( (>+("rR9p(ñ -f §(x ¥|(  Þ;t("(:(&¥sû£(¤(¥# Þ o &+*( 9{!!( {Í(ö3c!( {Ítµ"!( {Ë(ñ ,;!( {Ë "{´!( {Î(>+(+([ *( 9²##( {Í(ö@—#( {Ít³$#( {Ë(ñ ,o#( {Ë ${²#( {Î#( (>+(#%([ &%&(n oe þ,sŠ%(++*( 9Ç''( {Í(ö@¬'( {Ít´('( {Ë ($(ñ 9z'( {Ë ({³)'( {Î'( (>+(#%([ &%&(n oe þ,(%*)*sŒ%(++*( 9º++( {Í(ö @ž+( {Ít¸,+( {Ë(ñ ,v+( {Ë ,{·+( {Î+( (>+(#%([ &%&(n oe þ,sŽ(#(++*( 9Ï--( {Í(ö @³-( {Ít¹.-( {Ë ($(ñ 9-( {Ë .{¸/-( {Î-( (>+(#%([ &%&(n oe þ,$(%*/*s(#(++*( ,n00( {Í(ö 3U0( {Ít¼11{»o ,31{»21{¼30( {Î(>+3þo *( :sob -+ o^ -þ,+( ,>%:¤o9 £m (;(&¥sû£(¤(¥*oì &*44( 8{õÿÿU `3Ga;0 e§(] ,\ (] (^ (! (™  (š     ('+œ*0O¨(¤(¡£ sˆ(?+  (( Þu , oâ &Ü&Ü&* '3:(Ÿ }u *(Ÿ *0 (  *0 (¡ *{u *0-þ,$ ¹y7žte(.(¿+bcXXX **6(n o/*0D*þ,5u ,)(@+-*te(.te(.þ(À+**þþ*þþ,0þ,((@+-*te(.te(.þ(Â+**þþ*0*u , þo2**:(Ÿ }v *(Ÿ *0 (  *0 (¡ *{v *0-þ,$ ¹y7žtf(8(¿+bcXXX **6(n o9*0D*þ,5u ,)(A+-*tf(8tf(8þ(À+**þþ*þþ,0þ,((A+-*tf(8tf(8þ(Â+**þþ*0*u , þo<**:(Ÿ }w *(Ÿ *0 (  *0 (¡ *{w *0-þ,$ ¹y7žtg(B(¿+bcXXX **6(n oC*0D*þ,5u ,)(B+-*tg(Btg(Bþ(À+**þþ*þþ,0þ,((B+-*tg(Btg(Bþ(Â+**þþ*0*u , þoF**r(Ÿ }x }y }z *(Ÿ *0 (  *0 (¡ *{x *{y *{z *0‚Íþ9v ¹y7žth(N(¿+bcXXX ¹y7žth(M , ( +bcXXX ¹y7žth(L , ( +bcXXX **6(n oO*0‚*þ,su ,g(C+-*th(Lth(L(ñ ,>th(Mth(M(ñ ,th(Nth(Nþ(À+****þþ*0}þ,nþ,f(C+-*th(Lth(L(ñ ,=th(Mth(M(ñ ,th(Nth(Nþ(Â+****þþ*0*u , þoR**V(Ÿ }{ }| *(Ÿ *0 (  *0 (¡ *{{ *{| *0VÍþ,M ¹y7žti(Y(¿+bcXXX ¹y7žti(X , ( +bcXXX **6(n oZ*0c*þ,Tu ,H(D+-*ti(Xti(X(ñ ,ti(Yti(Yþ(À+***þþ*0^þ,Oþ,G(D+-*ti(Xti(X(ñ ,ti(Yti(Yþ(Â+***þþ*0*u , þo]**V(Ÿ }} }~ *(Ÿ *0 (  *0 (¡ *{} *{~ *0VÍþ,M ¹y7žtj(d(¿+bcXXX ¹y7žtj(c , ( +bcXXX **6(n oe*0c*þ,Tu ,H(E+-*tj(ctj(c(ñ ,tj(dtj(dþ(À+***þþ*0^þ,Oþ,G(E+-*tj(ctj(c(ñ ,tj(dtj(dþ(Â+***þþ*0*u , þoh**r(Ÿ } }€ } *(Ÿ *0 (  *0 (¡ *{ *{€ *{ *0‚Íþ9v ¹y7žtk(p(¿+bcXXX ¹y7žtk(o , ( +bcXXX ¹y7žtk(n , ( +bcXXX **6(n oq*0‚*þ,su ,g(F+-*tk(ntk(n(ñ ,>tk(otk(o(ñ ,tk(ptk(pþ(À+****þþ*0}þ,nþ,f(F+-*tk(ntk(n(ñ ,=tk(otk(o(ñ ,tk(ptk(pþ(Â+****þþ*0*u , þot**r(Ÿ }‚ }ƒ }„ *(Ÿ *0 (  *0 (¡ *{‚ *{ƒ *{„ *0‚Íþ9v ¹y7žtl(|(¿+bcXXX ¹y7žtl({ , ( +bcXXX ¹y7žtl(z , ( +bcXXX **6(n o}*0‚*þ,su ,g(G+-*tl(ztl(z(ñ ,>tl({tl({(ñ ,tl(|tl(|þ(À+****þþ*0}þ,nþ,f(G+-*tl(ztl(z(ñ ,=tl({tl({(ñ ,tl(|tl(|þ(Â+****þþ*0*u , þo€**V(Ÿ }… }† *(Ÿ *0 (  *0 (¡ *{… *{† *0VÍþ,M ¹y7žtm(‡(¿+bcXXX ¹y7žtm(† , ( +bcXXX **6(n oˆ*0c*þ,Tu ,H(H+-*tm(†tm(†(ñ ,tm(‡tm(‡þ(À+***þþ*0^þ,Oþ,G(H+-*tm(†tm(†(ñ ,tm(‡tm(‡þ(Â+***þþ*0*u , þo‹**V(Ÿ }‡ }ˆ *(Ÿ *0 (  *0 (¡ *{‡ *{ˆ *0VÍþ,M ¹y7žtn(’(¿+bcXXX ¹y7žtn(‘ , ( +bcXXX **6(n o“*0c*þ,Tu ,H(I+-*tn(‘tn(‘(ñ ,tn(’tn(’þ(À+***þþ*0^þ,Oþ,G(I+-*tn(‘tn(‘(ñ ,tn(’tn(’þ(Â+***þþ*0*u , þo–**r(Ÿ }‰ }Š }‹ *(Ÿ *0 (  *0 (¡ *{‰ *{Š *{‹ *0‚Íþ9v ¹y7žto(ž(¿+bcXXX ¹y7žto( , ( +bcXXX ¹y7žto(œ , ( +bcXXX **6(n oŸ*0‚*þ,su ,g(J+-*to(œto(œ(ñ ,>to(to((ñ ,to(žto(žþ(À+****þþ*0}þ,nþ,f(J+-*to(œto(œ(ñ ,=to(to((ñ ,to(žto(žþ(Â+****þþ*0*u , þo¢**V(Ÿ }Œ } *(Ÿ *0 (  *0 (¡ *{Œ *{ *0VÍþ,M ¹y7žtp(©(¿+bcXXX ¹y7žtp(¨ , ( +bcXXX **6(n oª*0c*þ,Tu ,H(K+-*tp(¨tp(¨(ñ ,tp(©tp(©þ(À+***þþ*0^þ,Oþ,G(K+-*tp(¨tp(¨(ñ ,tp(©tp(©þ(Â+***þþ*0*u , þo­**V(Ÿ }Ž } *(Ÿ *0 (  *0 (¡ *{Ž *{ *0VÍþ,M ¹y7žtq(´(¿+bcXXX ¹y7žtq(³ , ( +bcXXX **6(n oµ*0c*þ,Tu ,H(L+-*tq(³tq(³(ñ ,tq(´tq(´þ(À+***þþ*0^þ,Oþ,G(L+-*tq(³tq(³(ñ ,tq(´tq(´þ(Â+***þþ*0*u , þo¸**r(Ÿ } }‘ }’ *(Ÿ *0 (  *0 (¡ *{ *{‘ *{’ *0mþ,d ¹y7žtr(À(¿+bcXXX ¹y7žtr(¿o bcXXX ¹y7žtr(¾o bcXXX **6(n oÁ*0©þ9}u ,q(M+-*tr(¾ tr(¾ o÷ ,Ctr(¿ tr(¿ o÷ ,tr(Àtr(Àþ(À+****þþ*0}þ,nþ,f(M+-*tr(¾tr(¾(N+,=tr(¿tr(¿(N+,tr(Àtr(Àþ(Â+****þþ*0*u , þoÄ**:(Ÿ }“ *(Ÿ *0 (  *0 (¡ *{“ *0-þ,$ ¹y7žts(Ê(¿+bcXXX **6(n oË*0D*þ,5u ,)(O+-*ts(Êts(Êþ(À+**þþ*þþ,0þ,((O+-*ts(Êts(Êþ(Â+**þþ*0*u , þoÎ**V(Ÿ }” }• *(Ÿ *0 (  *0 (¡ *{” *{• *0VÍþ,M ¹y7žtt(Õ(¾+bcXXX ¹y7žtt(Ô , ( +bcXXX **6(n oÖ*0c*þ,Tu ,H(P+-*tt(Ôtt(Ô(ñ ,tt(Õtt(Õþ(Á+***þþ*0^þ,Oþ,G(P+-*tt(Ôtt(Ô(ñ ,tt(Õtt(Õþ(\+***þþ*0*u , þoÙ**:(  }– *N{– {ðTs¤*:( }— *B{— þoì *( **þ(ž*(! *0‹ª(¥ ,(È|*(Ÿ ,(L|*(  ,(.|*(¡ ,(^|*(¢,(øz*(£,(úz*(¤,( {*(¦,(äz**(" *"(¼v*:(# }˜ *0 «sásã(Q+(R+ ¥ís$ (S+ (ª 95 (« (N}E8õ,ÒäS­®?.Á‰šcå›vÀÑ ‰@w@Šw÷R(« (£ ,4(ª (ª -'{˜ r¬ÅprR9ps (Ò+o¬ o˜ *(ª ,J(« (¤,5(ª (ª -'{˜ rôÅprR9ps (Ò+o¬ o˜ *(ª ,J(« (¢,5(ª (ª -'{˜ r,ÆprR9ps (Ò+o¬ o˜ *{˜ (§*(ª (ª :>ÿÿÿ{˜ rjÆprR9ps (Ò+o¬ o˜ *(ª (ª :ÿÿÿ{˜ r’ÆprR9ps (Ò+o¬ o˜ *(ª (ª :Ðþÿÿ{˜ r¾ÆprR9ps (Ò+o¬ o˜ *(ª (ª :™þÿÿ{˜ râÆprR9ps (Ò+o¬ o˜ *(ª (ª :bþÿÿ{˜ rÇprR9ps (Ò+o¬ o˜ *(ª (ª :+þÿÿ{˜ r8ÇprR9ps (Ò+o¬ o˜ *(ª (ª :ôýÿÿ{˜ rrÇprR9ps (Ò+o¬ o˜ *(ª (ª :½ýÿÿ{˜ r¢ÇprR9ps (Ò+o¬ o˜ *(ª (ª :†ýÿÿ{˜ rÌÇprR9ps (Ò+o¬ o˜ *(ª (ª :Oýÿÿ{˜ rüÇprR9ps (Ò+o¬ o˜ *(ª (ª :ýÿÿ{˜ rÈprR9ps (Ò+o¬ o˜ *(ª (ª :áüÿÿ{˜ r@ÈprR9ps (Ò+o¬ o˜ *(ª (ª :ªüÿÿ{˜ rnÈprR9ps (Ò+o¬ o˜ *(ª (ª :süÿÿ{˜ r¢ÈprR9ps (Ò+o¬ o˜ *(ª (ª :<üÿÿ{˜ rÈÈprR9ps (Ò+o¬ o˜ *(ª (ª :üÿÿ+Ç(ª (ª :óûÿÿ{˜ rÉprR9ps (Ò+o¬ o˜ *(ª (ª :¼ûÿÿ+Ç(ª (ª :ªûÿÿ+µ(ª (ª :˜ûÿÿ{˜ r8ÉprR9ps (Ò+o¬ o˜ *(ª (ª :aûÿÿ{˜ rZÉprR9ps (Ò+o¬ o˜ *(ª (ª :*ûÿÿ{˜ rˆÉprR9ps (Ò+o¬ o˜ *(ª (ª :óúÿÿ{˜ r¶ÉprR9ps (Ò+o¬ o˜ *(ª (ª :¼úÿÿ{˜ ràÉprR9ps (Ò+o¬ o˜ *(ª (ª :…úÿÿ{˜ rÊprR9ps (Ò+o¬ o˜ *(ª (ª :Núÿÿ{˜ r&ÊprR9ps (Ò+o¬ o˜ *(ª (ª :úÿÿ{˜ rJÊprR9ps (Ò+o¬ o˜ *(ª (ª :àùÿÿ{˜ rtÊprR9ps (Ò+o¬ o˜ *(ª (ª :©ùÿÿ{˜ r ÊprR9ps (Ò+o¬ o˜ *(ª (ª :rùÿÿ{˜ rÄÊprR9ps (Ò+o¬ o˜ *(% *0(ÒzEÂ**(& *"(»v*:(' }™ *0?¬{™ ròÊprDps (Ó+o­ oÆm om(¢–o o˜ *¶s s sî€ s *:( }š *~› **(÷þ*~œ **(÷þ*~ **(÷þ*~ž **(÷þ*{š *Zr.8ps( (T+o) *01.þ, þ,{š  {š  3*Y**þ,**:¥~où*0B­¥~ þ,%¥~þ,{š  {š  3*Y**¥~þ,**06þ,- (÷E  * * * **6(n oü*0.­þ,u~ ,{š  {š  þ**þþ*0*.þ,þ,{š  {š  þ**þþ*0®u~ ,oÿ**:(ƒ }£ *B{£ þoA *:(* }¤ *0e{¤ o+ s*:(, }¥ *0°{¥ o- s*:(. }¦ *0²{¦ o/ s*:(ƒ }§ *B{§ þoA *:(* }¨ *0e{¨ o+ s *:(0 }© *0°{© o1 s *:(ƒ }ª *B{ª þoA *:(* }« *0e{« o+ s*:(, }¬ *0°{¬ o- s*:(2 }­ *0²{­ o3 s*:(4 }® *0´{® o5 s*:(ƒ }¯ *B{¯ þoA *:(* }° *0e{° o+ s*:(, }± *0°{± o- s*:(2 }² *0²{² o3 s*:(4 }³ *0´{³ o5 s*:(ƒ }´ *B{´ þoA *:(6 }µ *0e{µ o7 s#*:(8 }¶ *0µ{¶ o9 s%*:(ƒ }· *B{· þoA *:(6 }¸ *0e{¸ o7 s)*ò( }¹ }º }» }¼ }½ }¾ }¿ *0 {½ (÷3d{º {» {½ {¾ {¿ (±{¹ {½ {¾ o£¤{¿ (“(²{¾ {¼ (­*{¾ r 8ps‰ (0+&{¾ {¼ (­*ò( }À }Á } }à }Ä }Å }Æ *0 >{Ä {Á {À { {à {Å {Æ {ðTs¤(³*:( }Ç *B{Ç þoì *:(ñ }È *0®{È oò s1*:( }É *B{É þoì *:(ñ }Ê *0®{Ê oò s5*:(: }Ë *0î{Ë o; s7*V}Ì }Í (• *0o¶{Ì YE  !'-3+6+G+X+i+z8ˆ8–8Â8Ô8ã8ò8ô}Ì r Fp}Í *}Ì r1Fp}Í *}Ì rËp}Í *}Ì rHËp}Í *}Ì r¢Ëp}Í *}Ì rºËp}Í *rØËp(<  Þ t  Þ,}Ì rFp}Í *+}Ì rwÌp}Í * }Ì rÌp}Í * }Ì rµÌp}Í * }Ì }Í *ëû * }Ì *0y{Ì E  !$+$+5+0+++&+!++++ +++***********"{Í *&s;*²}Î }Ï }Ð }Ñ }Ò (• *0p{Ñ YE !'-39?EKQW]cio+r8888«8¹8Ç8Õ8ã8ò8888.8=8L8[8r8“8™}Ñ {Î }Ò *}Ñ ráEp}Ò *}Ñ r Fp}Ò *}Ñ r1Fp}Ò *}Ñ rFp}Ò *}Ñ rßÌp}Ò *}Ñ rËp}Ò *}Ñ rHËp}Ò * }Ñ r¢Ëp}Ò * }Ñ rõÌp}Ò * }Ñ rÍp}Ò * }Ñ r5Íp}Ò * }Ñ rºËp}Ò *}Ñ rwÌp}Ò *}Ñ rÌp}Ò *}Ñ rµÌp}Ò *{Ð ,}Ñ rWÍp}Ò *+{Ï o= 2}Ñ r×@p}Ò *+}Ñ }Ò **}Ñ *0Ê{Ñ E !$'*-0369<?BE+E8c8[8S+N+I+D+?+:+5+0+++&+!++++ +++$*******************"{Ò *0 {Î {Ï {Ð sA*:(½ }Ó *0${Ó (U ( Áo+Á,(c **¶sJ€Õ sJ€Ö sJ€× sJ€Ø *:( }Ô *~Õ **(Sþ*~Ö **(Sþ*~× **(Sþ*~Ø **(Sþ*{Ô *Zr.8ps> (U+o? *01.þ, þ,{Ô  {Ô  3*Y**þ,**:¥ oU*0B·¥  þ,%¥ þ,{Ô  {Ô  3*Y**¥ þ,**06þ,- (SE  * * * **6(n oX*0.·þ,u  ,{Ô  {Ô  þ**þþ*‚(SE**0*.þ,þ,{Ô  {Ô  þ**þþ*0¸u  ,o\**^s_€Þ s_€ß *:( }Ý *~Þ **(dþ*~ß **(dþ*{Ý *Zr.8ps@ (V+oA *01.þ, þ,{Ý  {Ý  3*Y**þ,**:¥¢of*0Bº¥¢ þ,%¥¢þ,{Ý  {Ý  3*Y**¥¢þ,**0þ, (d3 * **6(n oi*0.ºþ,u¢ ,{Ý  {Ý  þ**þþ*0*.þ,þ,{Ý  {Ý  þ**þþ*0»u¢ ,ol**.s†€â *( *s‚**u¦þ*s„**u§þ*~â **u¨þ*0½ u¨,+ u§,+*Zr.8psB (W+oC *0ÊÀþ9¶þ9«u¨,+ u§,+ u¨,+ u§,+ 3i  u¦-  u§-)*t¦ t¦ (y {æ  {æ ( *t§t§(y {ç {ç ( *Y**þ,**:¥¤ox*0ÏÁ¥¤ þ9¯¥¤þ9Ÿu¨,+ u§,+ u¨,+ u§,+ 3]  u¦-  u§-$*t¦ t¦ {æ {æ ( *t§t§{ç {ç ( *Y**¥¤þ,**0ŽÂþ9‚ u¦-u§-8u¨-^t¦  ¹y7ž{æ  , ( +bcXXX *t§  ¹y7ž {ç  , ( +bcXXX * **6(n o{*0¾Áþ9¬u¤ 9u¨,+ u§,+ u¨,+ u§,+ 3]  u¦-  u§-$*t¦ t¦ {æ {æ (ñ *t§t§{ç {ç (ñ ***þþ*0EÃo (² Þ0t ((%¥sû£ (¤ (¥r{Íp(² Þ* 00´Åu§-u¨:–t¦{æ *t§ {ç  ( Áo'Á,+(U ( Áo+Á-#((%¥sû£ (¤ (¥r{Íp*(D oE Þu , oâ &Ü&Ü*r{Íp*† ‘0¸Æþ9¦þ9›u¨,+ u§,+ u¨,+ u§,+ 3[u¦- u§-"*t¦ t¦ {æ  {æ (ñ *t§t§{ç {ç (ñ ***þþ*0½u¤ ,o€**:(o}æ *{æ *:(o}ç *{ç *(o*:( }è *2{è {æ *:( }é *2{é {ç *:( }ê *"s*V( }ë }ì *{ë *{ì *&*Zr.8psF (X+oG *0RÇþ,I &  ¹y7ž{ì  , ( +bcXXX ¹y7ž{ë (¿+bcXXX **6(n o’*0IÈþ,:u¬ ,.&  {ë {ë (À+,{ì {ì (ñ ***þþ*"{ë *"{ì *0™Ê{ì (“À(š -*{ì o r‡po -r¿po þ+,rEpo þ+,rRÁpo þ+,({ì sH oI (ñ Þ t  Þ**o‹ zr‹Íps (ñ+{ì þo *0DËþ,5þ,-&  {ë {ë (Â+,{ì {ì (ñ ***þþ*0Ìu¬ ,o™**"sœ*V( }í }î *{í *{î *&*Zr.8psJ (Y+oK *0RÎþ,I &  ¹y7ž{î oL bcXXX ¹y7ž{í  , ( +bcXXX **6(n o¡*0QÏþ,Bu­ ,6&  {í {í (ñ ,{î  {î  þoM ***þþ*0FÐþ,7þ,/&  {í {í (ñ ,{î {î þ(Z+***þþ*0Ñu­ , þo¤**&s§*r( }ï }ð }ñ *{ï *{ð *{ñ *&*Zr.8psN ([+oO *{ò *{ó *{ô *{õ *{ö *{÷ *{ø *{ù *{ú *{û *{ü *{ý *{þ *{ÿ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{ *{! *{" *{# *{$ *{% *{& *{' *{( *{) *{* *{+ *{, *{- *{. *{/ *{0 *{1 *{2 *{3 *{4 *{5 *{6 *{7 *{8 *{9 *{: *{; *{< *{= *{> *{? *{@ *{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 *{[ *{\ *{] *{^ *{_ *{` *"}ò *"}ó *"}ô *"}õ *"}ö *"}÷ *"}ø *"}ú *"}û *"}ü *"}ý *"}þ *"}ÿ *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"} *"}! *"}" *"}# *"}$ *"}% *"}& *"}' *"}( *"}) *"}* *"}+ *"}, *"}- *"}. *"}/ *"}0 *"}1 *"}2 *"}3 *"}4 *"}5 *"}6 *"}7 *"}8 *"}9 *"}: *"}; *"}< *"}= *"}> *"}? *"}@ *"}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 *"}[ *"}\ *"}] *"}^ *0|( }ò }ó }ô }õ }ö }÷ }ø }ù  }ú  }û  }ü  }ý  }þ }ÿ } } } } } } } } } } } } } } } } }  } !} "} #} $} %} &} '} (} )} *} +} ,} -} .} /} 0}! 1}" 2}# 3}$ 4}% 5}& 6}' 7}( 8}) 9}* :}+ ;}, <}- =}. >}/ ?}0 @}1 A}2 B}3 C}4 D}5 E}6 F}7 G}8 H}9 I}: J}; K}< L}= M}> N}? O}@ P}A Q}B R}C S}D T}E U}F V}G W}H X}I Y}J Z}K [}L \}M ]}N ^}O _}P `}Q a}R b}S c}T d}U e}V f}W g}X h}Y i}Z j}[ k}\ l}] m}^ n}_ o}` *0• Òþ9‰  ¹y7ž{` bcXXX ¹y7ž{_ bcXXX ¹y7ž{^ bcXXX ¹y7ž{] bcXXX ¹y7ž{\ bcXXX ¹y7ž{[ bcXXX ¹y7ž{Z bcXXX ¹y7ž{Y bcXXX ¹y7ž{X bcXXX ¹y7ž{W bcXXX ¹y7ž{V bcXXX ¹y7ž{U  , ( +bcXXX ¹y7ž{T (\+bcXXX ¹y7ž{S bcXXX ¹y7ž{R oC)bcXXX ¹y7ž{Q bcXXX ¹y7ž{P bcXXX ¹y7ž{O bcXXX ¹y7ž{N bcXXX ¹y7ž{M bcXXX ¹y7ž{L bcXXX ¹y7ž{K (\+bcXXX ¹y7ž{J bcXXX ¹y7ž{I bcXXX ¹y7ž{H bcXXX ¹y7ž{G bcXXX ¹y7ž{F bcXXX ¹y7ž{E oübcXXX ¹y7ž{D bcXXX ¹y7ž{C od bcXXX ¹y7ž{B bcXXX ¹y7ž{A  , ( +bcXXX ¹y7ž{@  , ( +bcXXX ¹y7ž{? bcXXX ¹y7ž{> bcXXX ¹y7ž{= bcXXX ¹y7ž{< bcXXX ¹y7ž{; bcXXX ¹y7ž{: bcXXX ¹y7ž{9 bcXXX ¹y7ž{8 bcXXX ¹y7ž{7 od bcXXX ¹y7ž{6 bcXXX ¹y7ž{5 (¾+bcXXX ¹y7ž{4 o{bcXXX ¹y7ž{3 bcXXX ¹y7ž{2 (¾+bcXXX ¹y7ž{1 (¾+bcXXX ¹y7ž{0 bcXXX ¹y7ž{/ bcXXX ¹y7ž{. (¾+bcXXX ¹y7ž{-  , ( +bcXXX ¹y7ž{, bcXXX ¹y7ž{+ bcXXX ¹y7ž{* bcXXX ¹y7ž{) bcXXX ¹y7ž{( bcXXX ¹y7ž{' (¾+bcXXX ¹y7ž{& bcXXX ¹y7ž{% bcXXX ¹y7ž{$ bcXXX ¹y7ž{# (¾+bcXXX ¹y7ž{" bcXXX ¹y7ž{! bcXXX ¹y7ž{ bcXXX ¹y7ž{ oXbcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ (]+bcXXX ¹y7ž{  , ( +bcXXX ¹y7ž{  , ( +bcXXX ¹y7ž{  , ( +bcXXX ¹y7ž{ (¾+bcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ oš bcXXX ¹y7ž{ oš bcXXX ¹y7ž{ oš bcXXX ¹y7ž{ oš bcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ od bcXXX ¹y7ž{ (\+bcXXX ¹y7ž{ bcXXX ¹y7ž{  ( b X( abcXXX ¹y7ž{ bcXXX ¹y7ž{ oP bcXXX ¹y7ž{ oL bcXXX ¹y7ž{ oQ bcXXX ¹y7ž{ od bcXXX ¹y7ž{ (^+bcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ oš¿bcXXX ¹y7ž{ bcXXX ¹y7ž{ bcXXX ¹y7ž{ÿ od bcXXX ¹y7ž{þ od bcXXX ¹y7ž{ý bcXXX ¹y7ž{ü bcXXX ¹y7ž{û (¾+bcXXX ¹y7ž{ú bcXXX ¹y7ž{ù  , ( +bcXXX ¹y7ž{ø bcXXX ¹y7ž{÷ bcXXX ¹y7ž{ö  , ( +bcXXX ¹y7ž{õ (\+bcXXX ¹y7ž{ô bcXXX ¹y7ž{ó bcXXX ¹y7ž{ò  , ( +bcXXX **6(n oˆ*0íÔþ9Ûu¯ 9Ì{ò {ò (ñ 9´{ó {ó @¡{ô {ô @Ž{õ {õ (ò+9u{ö {ö (ñ 9]{÷ {÷ @J{ø {ø @7{ù {ù (ñ 9{ú {ú @ {û {û (Á+9ó{ü {ü @à{ý {ý @Í{þ  {þ  oe 9°{ÿ  {ÿ  oe 9“{ { @€{ { @m{  {  oœ¿9N{ { @;{ { @({ { (_+9{  {  oe 9ò{ { oR 9Ñ{ { oM 9°{  {    oS 9{ { @|{  {   (   (  (  (  3 þ+90{ { @{ { (ò+9{  {  oe 9ç{ { @Ô{ { @Á{ { oT 9 { { oT 9{ { oT 9^{ { oT 9={ { @*{ { @{ { @{ { (Á+9ë{ { (ñ 9Ó{ { (ñ 9»{ { (ñ 9£{ { (`+9Š{ { @w{ { @d{ { oZ9C{ { @0{! {! @{" {" @ {# {# (Á+9ñ{$ {$ @Þ{% {% @Ë{& {& @¸{' {' (Á+9Ÿ{( {( @Œ{) {) @y{* {* @f{+ {+ @S{, {, @@{- {- (ñ 9({. {. (Á+9{/ {/ @ü{0 {0 @é{1 {1 (Á+9Ð{2 {2 (Á+9·{3 {3 @¤{4 {4 o}9ƒ{5 {5 (Á+9j{6 {6 @W{7  {7  oe 9:{8 {8 @'{9 {9 @{: {: @{; {; @î{< {< @Û{= {= @È{> {> @µ{? {? @¢{@ {@ (ñ 9Š{A {A (ñ 9r{B {B 3b{C  {C  oe ,H{D {D 38{E {E oþ,{F {F 3 (Â***************************************************************************************þþ*0q(ô , r·Íps\ zrùEp([ ([ (¿([ (U (Î ( sZ ([ (V (V (V (V r ÎprMÎprR9p(°(MrR9p(t([ rR9prR9p([ (ïd(F)rqÎp(s‡*0DÕ(¤(¡£ {þ ([ (\ (Ÿ+(½ Þu  , oâ &Ü&Ü* ,0Ö(¤(¡£ ([ (n oe ,((&¥sû£ (¤ (¥+sš(+ { (+, (d +[(] ,@(^ (’À  (À Þ t   Þ (Ã( +rK@p(Ã( (’À  o (Ão -((&¥sû£ (¤ (¥+ (“À{ ,j{#   ,M(°,&((&¥sû£ (¤ (¥(¬+( ,  (d +rŸÎp Ùsó z(¬(c +I{#     (2+þ, { þ+,((%¥sû£ (¤ (a++(c (@sW Þu   ,  oâ &Ü&Ü*A4Š –  Ýé0n×(¤(¡£ (¾ ,7 (Õ >3 (=+sœ{ (È+(9 Þ Þu , oâ &Ü&Ü&* FR0n×(¤(¡£ (¾ ,7 (Õ >3 (=+sž{ (È+(: Þ Þu , oâ &Ü&Ü&* FR0°Ø(¿ (X (– Þ&t(sû£(¤(¥ Þ -+0 (g -(sû£(¤(¥+ ,{þ (+þ+,{þ ([ (\ (Ÿ+('** &0šÙ(À,(sû£ (¤þ(¥*{þ ([ (\ (Ÿ+(¼ - (¿+(d s { ( +(+-){  s   (U (Y ( +(0**z{ ([ (\ (Ÿ+(6*0`Ú(À,(sû£ (¤þ(¥*(Œ{ (b+-'{  (Œ (Î (Z (c+(1**js¢{ (P+(1*0úÛ,([ o\ ;Ò,(üÁ oL X([ YYoL ,([ o\ ;Š,(üÁ  oL r*Np(  Xob YYoL rTÏp(ñ ,(÷»s] *rbÏp(ñ ,(ù»s] *((%¥sû£(¤(d+*(÷»s] *(’À(÷»s] *0´Üþ9¢þ9—{ò {ò (ñ 9{ó {ó @l{ô {ô @Y{õ {õ (ô+9A{ö {ö (ñ 9){÷ {÷ @{ø {ø @{ù {ù (ñ 9ë{ú {ú @Ø{û {û (\+9À{ü {ü @­{ý {ý @š{þ {þ (e+9‚{ÿ {ÿ (e+9j{ { @W{ { @D{ { o¿9,{ { @{ { @{ { (f+9î{ { (e+9Ö{ { (g+9¾{ { (Z+9¦{ { (h+9Ž{ { @{{  {  (i+9_{ { @L{ { (ô+94{ { (e+9{ { @ { { @ö{ { (j+9Þ{ { (j+9Æ{ { (j+9®{ { (j+9–{ { @ƒ{ { @p{ { @]{ { (\+9E{ { (ñ 9-{ { (ñ 9{ { (ñ 9ý{ { (k+9å{ { @Ò{ { @¿{ { o\9§{ { @”{! {! @{" {" @n{# {# (\+9V{$ {$ @C{% {% @0{& {& @{' {' (\+9{( {( @ò{) {) @ß{* {* @Ì{+ {+ @¹{, {, @¦{- {- (ñ 9Ž{. {. (\+9v{/ {/ @c{0 {0 @P{1 {1 (\+98{2 {2 (\+9 {3 {3 @ {4 {4 o€9õ{5 {5 (\+9Ý{6 {6 @Ê{7 {7 (e+9²{8 {8 @Ÿ{9 {9 @Œ{: {: @y{; {; @f{< {< @S{= {= @@{> {> @-{? {? @{@ {@ (ñ 9{A {A (ñ 9ê{B {B @×{C {C (e+9¿{D {D @¬{E {E oÿ9”{F {F @{G {G @n{H {H 3^{I {I 3N{J {J 3>{K {K (ô+,){L {L 3{M {M 3 (Å**********************************************************************************************þþ*0Ýu¯ ,o–**:( }a *>{a o *( *0o s˜(‹þ(W+*( *þ*( *þ*(á *"(  *V( }b }c *0#Ì{b {c (Œ (n o”þ*{d *{e *{f *{g *{h *{i *{j *ò( }d }e }f }g }h }i }j *0âÍþ9Ö ¹y7ž{j o^ bcXXX ¹y7ž{i bcXXX ¹y7ž{h  , ( +bcXXX ¹y7ž{g  , ( +bcXXX ¹y7ž{f o„¿bcXXX ¹y7ž{e  , ( +bcXXX ¹y7ž{d o’bcXXX **6(n o¬*0Æàþ9´u¶ 9¥{d  {d  o”9ˆ{e {e (ñ ,s{f  {f  o†¿,W{g {g (ñ ,B{h {h (ñ ,-{i {i 3{j {j þo_ ********þþ*0hâ{j (` -Q(ݰs¯ {e (§ oé oe¼(~±{j (a (b  Þ (¤&Ü *(c ***T 0­þ9›þ9{d {d o™9x{e {e (ñ ,c{f {f o‡¿,N{g {g (ñ ,9{h {h (ñ ,${i {i 3{j {j þ(l+********þþ*0ãu¶ , þo°**0rÂæo &,2{4 {ö o~  Þt (¤(¥ Þ&+{[  {ò {ó {ô {õ {ö {÷ {ø {ù {ú {û {ü {ý {þ {ÿ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { {! {" {# {$ {% {& {' {( {) {* {+ {, {- {. {/ {0 {1 {2 {3 {4 {5 {6 {7 {8 {9 {: {; {< {= {> {? {@ {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  {\ {] {^ {_ {` s‡}k {k {ò o5(d }l (e ráEpo5(d }m (e þ,+þ,{k { +,$rÔ[p((%¥sû£ (¤(+&+9›  (d  {k {ö  (¿  {k { {k {÷ {k {ò {k {^ (Æ  oé oe¼{i^9Ô(} (x (} (y (} (z (} ({ 3! ((%¥sû£ (¤(¥+( Á o%Á(õ (c iiiis× rrÏpsf (m+s9(n+sØ 3þ+,þ+sh Þ( s\ z (¤&Ü Þ)t  ("(%¥sû£(¤(o+ Þ + (»sh (i (. }n (i (j }o (k }p (l }q {k { ,{o o= þ+,(½(&¥sû£ (¤(+&+{k {ò {o {p (¹}r 9Ø  (d  {k {ö  (¿  {k { {k {÷ {k {ò {k {^ (Æ   oê  oé oe¼{i^(%¥op+( Á o%Á(õ Þ  (¤&ÜÞ)t  ("(%¥sû£(¤(J+Þ+ {k {ù }s *A| #Ýß ¥Lñ)2<n û…€)"{o *"{p *6{k {ò *6{k {ó *6{k {ô *6{k {õ *6{k {ö *6{k {÷ *6{k {ø *"{s *6{k {ú *6{k {û *6{k {ü *6{k {ý *6{k {þ *6{k {ÿ *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *"{q *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k { *6{k {! *6{k {" *6{k {# *6{k {$ *6{k {% *6{k {& *6{k {' *6{k {( *"{n *6{k {) *6{k {* *6{k {+ *6{k {, *6{k {- *6{k {. *6{k {/ *6{k {0 *6{k {1 *6{k {2 *6{k {3 *6{k {4 *6{k {5 *6{k {6 *6{k {7 *6{k {8 *6{k {9 *6{k {: *6{k {; *6{k {< *6{k {= *6{k {> *6{k {? *6{k {@ *6{k {A *6{k {B *6{k {C *6{k {D *6{k {E *6{k {F *6{k {G *6{k {H *6{k {I *6{k {K *6{k {L *6{k {M *6{k {N *6{k {O *6{k {P *6{k {R *6{k {S *6{k {T *6{k {Q *6{k {U *6{k {V *6{k {W *6{k {X *6{k {Y *6{k {Z *6{k {[ *6{k {\ *6{k {] *6{k {^ *6{k {_ *6{k {` *0.ç(¤(¡£ s² Þu  , oâ &Ü&Ü* 0q¯è{k  {k {  {ò {ó {ô {õ {ö {÷ {ø {ù {ú {û {ü {ý {þ {ÿ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { {! {" {# {$ {% {& {' {( {) {* {+ {, {- {. {/ {0 {1 {2 {3 {4 {5 {6 {7 {8 {9 {: {; {< {= {> {? {@ {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 {[ {\ {] {^ {_ {` s‡*0o s;þ(q+*0ìé(¤(¡£ {q  :™(°,&(/ (õ r€Ïp(U ([ (\ ݤ{k { (•¿3(/ ([ (\ Þ@(X¿{n (U ([ (\ Þ"t(¤($¥(¥([ Þ Þ8(d  o-([ (\ Þu , oâ &Ü&Ü*FE‹" ÅÑ0{ê(¤(¡£ o s=((W+,"{k {  (–  (5+þ Þ2{k { (– (5+ Þu , oâ &Ü&Ü* T`0fì(¤(¡£ s? sAsC{k { (r+(s+(t+ ¥(u+(v+ Þu , oâ &Ü&Ü* ?K0I¿( Áo+Á,+sEo((W+, Þ"sG{r (W+ Þ Þ t  Þ*<= 0 sKþ(o+*N{k {ö (¿*0 ?î{ì  {ë  (¤(¡£ (™ r<Áp(š þrEp(š -+rRÁp(š þ,+9ºo,(¼- ݽ(d o+ ,rR9p+Z(ݰs¯  (§  oé oe¼(~±oR²Þ  (¤&Ü ÞtrR9p Þ  (}¿  sn s«(o Þ Þu , oâ &Ü&Ü *AL¾Ù ¤Gë $0ï{ì  {ë  (¤(¡£ (™ rRÁp(š þrEp(š þr<Áp(š þ,+,+,([ (\ +6rEp( rRÁp( r<Áp( ([ (\ (\ (\ sQ(w+  -*o,¥7 r6Áp (p+(`   sHz (p Þu   ,  oâ &Ü&Ü *ãýB{k oŒ*04ð(¤(¡£ ox+ Þu  , oâ &Ü&Ü&* 0 ¤þ(¤(¡£ {k { , rˆÏps\ z(Î (n oM ,(­ ( sí ÝTsUsW(y+sY¥(z+({+(|+ {n {k { ,9(0 (ϳEr‹p+rÒÏp+rÞÏp+rèÏp{k {   -{k {ö +    (d  {k {ö  (¿ {q   -([ +*   (d  {k {ö  (¿([ (\  sg Œ,+ r¨9ps‚ z ŽiÁY2< £Â(Û (Ü (Þ (ͤÁXX3Ä(}+sq ŽiY(µ (]+(´+Œ,+ r¨9ps‚ zŽiÃY2& £’(ϤÃXX3Ú(~+Œ,+ r¨9ps‚ zŽiêY2<£Ã(r (s (t (ФêXX3Ä  (Î{C`Œ,+ r¨9ps‚ zŽiÁY2' £ü/(ѤÁXX3Ùsu(u (v (v !!¥ (+(€+Œ ,+ r¨9ps‚ zŽiS"Y2%"£Á(x ¤SXX3Û"(+  ¥[(N+  sy$$s{ (‚+(ƒ+#(`%%(n ok, #oy þ+,'(­ s}s (ƒ+(„+(…+sí Þ9ssƒ#(„+(…+sí Þu &&, &oâ &Ü&Ü*A }‰"{l *"{m *0Œÿ($¥rEp( (Œ s…{k { (P+ (z -sß * (z (z -({  (Ó*({ ((&¥sû£(¤(¥ (Ó*0P (’ÀráEprEp( (ñ s‡(†+ 9  (c oK²9(} ({ ,þ{o o= þþþ+9{p ,{o o= þ+,Q-+L(| (} (| (~  (| (   3 þ+,þ++,*(#sû£ (¤ (+&*-3{o o= þ++,(!sû£ (¤ þ(¥****:(o }t *B{t þop *:(q }u *0Þ{u or s7*V(€ }v }w *ò{w Y3.{v {k { (SE***:( }x *>{x o *( *0] ( (  ( Áo+Á-s_ (¤ (+& Þ&s  (‚ Þt (¤ (¥ Þ*5D(ƒ **þ(‡+*(„ *þ*:( }y *N{y (õ (ñ *:( }z *N{z (“À(ñ *:( }{ *:{{ o-*ò}| }} }~ } }€ } }‚ (• *0£{ YE $+'8€+s88õ828F8G{| o(¥7og }~ } {~ oï ,0{~ oh }} } {} }‚ *}} +Ã} {~ (+}~ {| sI{| {k {þ (+¥7og }€ } {€ oï ,0{€ oh } } { }‚ *} +Ã} {€ (+}€ } {| {k {ö }‚ *} {| {s }‚ *} }‚ *0Ãe { YE+8ž{ E ++G+0+,+++ ++2+/+,} {€ (++} {~ (+} }‚  Þ t   Þ&8Hÿÿÿþ,z*Ц 0U{ E ++!++++ +++ *******"{‚ *0 {| sK*V(… }ƒ }„ *f{ƒ {„ (Œo.*(† *"(‡ *(ˆ *0× (‰ (Š (ˆ+ ¥ Œ,+ ròÏps‚ z o‹ oï -(Œ ròÏps zoŽ (  oï ,&oŽ   (   1    +Ô+Ñ Þu   ,  oâ &Ü&Ü( sS(‰+s *>e£(‘ *&s’ *(“ *0 ( (‡ {ì *( *frÐpsê (,+þoì *( **(” **(¦£*(” **(§£*r(• }… }† }‡ *0x»{‡ ,(b {… (n ok+,OrÐp(ñ ,*rÐp(ñ ,+ïr(Ðp(ñ ,s_+sa{† sjþo– **r(• }ˆ }‰ }Š *0E {Š ,(b {ˆ (n ok+,{‰ sv (¤(¥**(— *0 (˜ (x (® þþ*(™ **þ(Š+*(š *þ*:(› }‹ *:{‹ o.*:(— }Œ *0 (˜ (x {Œ þ*:(œ } *0+õ(r (s (t so{ (‹+þ*V(ž }Ž } *0 R( Á{ {=`o%Á { {>`{ {?`{ {A`{Ž o+sn s«*(Ÿ *"(˜ *:(« } *0Ì{d  {ì { (ñ *0D(  }‘ }’ }“ }” }• }– }— }˜ *0 ={‘ {“ {’ {” {• {– {— {˜ (Û (Ò*:(  }™ *F{™ o¡ þ*(¢ *0 (£ (¤ (›*(¥ *0 (Û (Ü (Þ s¦ *(¢ *0 (£ (¤ (›*(¥ *0 (Û (Ü (Þ s¦ *:( }š *:{š o—*:(§ }› *voG²{› {k {ò (ñ *0T}œ } }ž }Ÿ }  }¡ }¢ }£  }¤  }¥ (? *0v {¤ YE +88Ü8?{œ {›Mrº:p(ñ 9{œ {œM} {œ {M}ž { ¥7og }£ }¤ {£ oï 9›{£ oh }Ÿ {ž {Ÿ (¾}  {  ,V{  }¡ {¡ (Õ }¢ }¤ {ž {¢ (+“}¥ *}¢ þ}¡ +}  }Ÿ 8Uÿÿÿ}¤ {£ (+}£ þN+}ž } +}¤ }¥ *0e {¤ YE+8h{¤ E + +!+ +++}¤ {£ (+}¤ }¥  Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{¤ E + ++ +++***"{¥ *0&&{œ þN+þs‰*’r8Ðpo¯¤&}§ }¦ }¨ *&}¨ *B{¦ þo®¤*>{¦ þo¬¤*0I (“ (‘ -+  ($  s”{¨ (Œ+þ,{¦ þo­¤**r(¨ }© }ª }« *0^§{ÉM {ÈM {ª 3({© {§ -+|« (F¥(F¥þ+,|« (D¥(D¥(¥**†r€Ðpo¯¤&}¬ sö }­ *Z{­ s÷ þoø *0 E{­  s›¥T(G+þ(H+*Z{­ s÷ þoø *0ˆJ{­  ¥T(I+ ¥Toú oï ,@oû (ü (ý ,{¬ o®¤+É{¬ o­¤+¸ Þu , oâ &Ü&Ü &* Ll(ÿ *"(ü *:( }® *>{® o *(³ *"{I*:(© }¯ *:{¯ (â*:(ª }° *:{° (á*(Ñ *F(« ,*_þ*:(¬ }± *:{± sY‰*:( }² *>{² o *:( }³ *>{³ o *(­ *0# uÚ&,tÚ& {£M{M(® **r(¯ }´ }µ }¶ *0 {´ {¶ {µ (+*0Œ}· }¸ }¹ }º }» }¼ }½ }¾  }¿  }À  }Á  }  }à }Ä }Å }Æ }Ç (? *0ö {Æ YE !'-+08¸8„8=8-8~8Q8A8{¸ ¥ìoT }¿ }Æ {¿ oï 9a{¿ oU }¹ {¹ {M}º {º ¥èoP }À }Æ {À oï 9ä{À oQ }» {» (’@´{» tµ&}¼ {¼ {[M}½ {½ (Ö¥moB } }Æ { oï ,0{ oC }Á }Æ {Á }Ç *}Á +Ã}Æ { (a+} }½ þµ&}¼ +}» 8 ÿÿÿ}Æ {À (u+}À }º }¹ 8þÿÿ}Æ {¿ (w+}¿ {· ¥o° }à }Æ {à oï 9—{à o± }¾ {¾ (Ö¥moB }Å }Æ {Å oï ,0{Å oC }Ä }Æ {Ä }Ç *}Ä +Ã}Æ {Å (a+}Å }¾ 8Yÿÿÿ}Æ {à (Ž+}à }Æ }Ç *0e {Æ YE+8á{Æ E  !+!8ƒ8i+R+;+7++++h}Æ {Å (a+}Æ {à (Ž++=}Æ { (a+}Æ {À (u+}Æ {¿ (w+}Æ }Ç  Þ t   Þ&8ÿÿÿþ,z*Íé 0^{Æ E  ++&+!++++ +++********"{Ç *0* {· {¸ þµ&s±*(² *0# uâ&,tâ& {²M{”M(® **r(³ }È }É }Ê *0 {È {Ê {É (+*0Œ}Ë }Ì }Í }Î }Ï }Ð }Ñ }Ò  }Ó  }Ô  }Õ  }Ö  }× }Ø }Ù }Ú }Û (? *0ö {Ú YE !'-+08¸8„8=8-8~8Q8A8{Ì ¥o´ }Ó }Ú {Ó oï 9a{Ó oµ }Í {Í {–M}Î {Î ¥o¶ }Ô }Ú {Ô oï 9ä{Ô o· }Ï {Ï (q’@´{Ï tÊ&}Ð {Ð {‚M}Ñ {Ñ (Ö¥moB }Ö }Ú {Ö oï ,0{Ö oC }Õ }Ú {Õ }Û *}Õ +Ã}Ú {Ö (a+}Ö }Ñ þÊ&}Ð +}Ï 8 ÿÿÿ}Ú {Ô (+}Ô }Î }Í 8þÿÿ}Ú {Ó (‘+}Ó {Ë ¥o° }× }Ú {× oï 9—{× o± }Ò {Ò (Ö¥moB }Ù }Ú {Ù oï ,0{Ù oC }Ø }Ú {Ø }Û *}Ø +Ã}Ú {Ù (a+}Ù }Ò 8Yÿÿÿ}Ú {× (Ž+}× }Ú }Û *0e {Ú YE+8á{Ú E  !+!8ƒ8i+R+;+7++++h}Ú {Ù (a+}Ú {× (Ž++=}Ú {Ö (a+}Ú {Ô (+}Ú {Ó (‘+}Ú }Û  Þ t   Þ&8ÿÿÿþ,z*Íé 0^{Ú E  ++&+!++++ +++********"{Û *0* {Ë {Ì þÊ&s»*:(¸ }Ü *"{Ü *:( }Ý *>{Ý o *:( }Þ *>{Þ o *:( }ß *>{ß o *:( }à *Z{à  Vþ(&v*:(¹ }á *B{á þoº *:(» }â *0 {â o¼ sË*:(½ }ã *0 {ã o¾ sÍ*(¿ *.(¥*:( }ä *:{ä oË+*:(¹ }å *B{å þoº *:(» }æ *0 {æ o¼ sÕ*(¿ *.(¥*:(¹ }ç *B{ç þoº *:(» }è *0 {è o¼ sÛ*:(À }é *0 {é oÁ sÝ*(¿ *.(¥*:( }ê *:{ê oË+*( *0+ (q’3tÅ& {xMþ(ì*(à (Ä *(Å *0+ (’3t®& {JMþ(í*(Æ (Ç *(È *>{–Mþ(ì*(É *>{Mþ(í*ò(Ê }ë }ì }í }î }ï }ð }ñ *0 “# {ï {ë {k {ú {ð sÉsX {ë {k {) 9¶9­r¦Ðpsê ( (4+{ñ oì &oË+ ròÐpsË ( (’+ sÏ(¿vsÑo; o: (òˆ(“+&(nx 3 (Ì+&+oÍ ,r"Ñps— ( (X+&8Sÿÿÿ8Mÿÿÿ+{ë {k {* 9½9­sÓ(Õvoì (”+uê&,:tê&{ÁM rNÑpsÎ (•+  s×sÙ (–+&+šté&  {¿M  {¾M r‚ÑpsÐ (—+  sß oÑ sá (˜+&8Mÿÿÿ(Ì+&+sã{î {ì {í (ë{ë {k {+ 9‘sésëuø&,=tø&{ÙM{ÐMr¼Ñps@ (™+(š+oÑ oA &+>tù&{ÚM{ÖMrúÑps@ (™+(›+oÓ oA &+*:( }ò *>{ò o *0No &}ô }ó sþ{ô (œ+(+}õ s{ô (œ+(+}ö *f{ô (ž+{ó sñ*f{ô {ó (Ÿ+sñ*"{ô *"{ó *V{õ {ì þoÔ *Vs{ô þ( +*B{ö þoÔ *B{õ þoÔ *0J$ {k { , (ð+(%¥(b(2 (Õ (Ö (Ÿ+sñ*0 s þ(*+*0D& (û {k { (ú s{ô (¡+ (× (Ø {ó sÙ *0' s(O+ (ú*(Ú *0Ì{d  {ì sÛ *(Ú *:{e sÛ *:(« }÷ *Vo¯{÷ þ(¢+*:(Ü }ø *0;) {ø o/(Ý Þ#t {ë  (¤(¥(Þ Þ*#(ß *0+ u#,t# (à (o **(á *05- u$,+t$ (â {ì (Î (Z (›(ã **0D}ù }ú }û }ü }ý }þ }ÿ } ( *0Á{ÿ YE  !'-+0+G+p8æ8Ö8½8­8)8R8T}ÿ {ù {l } *{ù {k {ú -}ÿ {ù {m } *+{ù {k { 9(·¥7og }ý }ÿ {ý oï ,:{ý oh }ú }ÿ (%¥{ú (Œ} *}ú +¹ }ÿ {ý (+}ý +{ù {k { ,+{ù {k { 9¹{ù {o o= 2{ù {p þ+9‹(¸¥7og }þ }ÿ {þ oï ,D{þ oh }û }ÿ (%¥{û rEp( (Œ} *}û +¯ }ÿ {þ (+}þ ++{ù {k { ,N{ù {s r,ÒprEp( (U }ü }ÿ (%¥{ü (Œ} *}ü +}ÿ {ù {k { ¥ÿÿ* }ÿ } *0Ûe {ÿ  YE+8µ{ÿ E  ++U+Q+K+1+-+++ ++:+7+4 }ÿ {þ (++ }ÿ {ý (+++ }ÿ }  Þ t   Þ&80ÿÿÿþ,z*¡¾ 0g{ÿ E  ++++&+!++++ +++*********"{ *0 {ù s *(« *"{i *( *"{d *:(C } *"{ *(, *.(¡(*{ *{ *{ *{ *{ *{ *{ *ò( } } } } } } } *{ *{ *{ *{ *{ *{ *{ *"} *ò( } } } } } } } *( *s0**uþ*s2**uþ*0/  u,+*Zr.8psä (£+oå *:()} *{ *:()} *{ *:( } *2{ { *:( } *2{ { *s9*:( } *{ *&*Zr.8psæ (¤+oç *B{ þoè *6s@(8*6sB(8*:(é } *"{ *:(é } *:{ (%*0wo &} } } (ê } (¥+} (ë } (¦+} (ì } }! }" }# sí }$ *Vor(Ò } *>or{ *>or{ *>or{ *0Dor{ (ë (î (§+} { {±; { oï } *0Dor{ (ê (ð (¨+} { (Áh { oñ } *06;or{  -{ * (· oK{ þ(¨+*050 or (ù -oh(ù* (™ (î *0.1 oL -(,sû£ (¤(©+*(™ *06;or{  -{ * (· oN{ þ(§+*norsu{ þ(ª+*norswoNþ(ª+*0M2 or (ú -*oh(ú -(,* (ï (** (ï (**0G6 oroQ u,t { (n*t {  { (›n*0E7 oroG²oQ u, oR²(n*t {  { (›n*0 ; syo«+ 9ï (ó oI  oRu’9ˆo](Q²(j²oI rEp( s{o¬+s}o­+{@8s¯  (ª  oé  oê sö   (÷   (ø  so®+ (ù {½9,+sú s–ˆ(û  soJs¨ o¶ so¯+(c  (1j(6i(>i(c (¹hoE rR9psƒs…s‡(,+szn s€n([ ([ (¸ (°+s(oI{ sü *t‘{´;on{¨;, oM{ sü *sü *sü *0Y> {ëH  {$ oý sþ (ÿ ,( ( + {$ o {$ s þo *0/@ s‰{$ o s‹¥8(±+(²+þ(³+*nor{ ( } *0WB rvÒps (´+ s•{ { { { {  , (· o& +r+Ópþ(µ+*0 C or{  { oè {k {ø ,b(‘ÀÞtrS@pÞ(ÀÞ tÞr5Óp( ( Áo+Á, (c ++ {k { {k {÷ {"  {k {ò {k {^ (Æs—oWoé oê sö Þ+toe (.sû£ (¤ (¶+ Þ*(, 7L W îï+0E or s™s  sœ*rorsžoKþ(·+*0G ors  o]sÎU*0:I or{#  -!{  - r?Óps\ z (· +Í(  *Vor(  }" *Vor(  }# *0 0P (] : -+Y ( s¤ {k {_ ,+ s¦o¸+  (ãk{g:{u:o¸ oÍk{g:{g:{q:( kE rðÓps\ z(¸ ( (k+At{¡:{¢:s¨(¹+-( (k+(Ûj*  (]   (^  {g:{u:o¸ oßk o   :ž(f²sª(+(º+(=j  ( ()i (%¥sY‰($‰( (1j(6i(»+(äk{g:{u:o¸ oÌk (\  8 þÿÿ (  (\  8Ðýÿÿ0ãV {k {ö {k { {k {Z s¬(p+( Áo)ÁsŸ† (¤o¬¤ s²s´(¼+(+ ¥7sQ o >`{o  s¸(½+s¾(¾+sÀ(¿+¥@(À+¥ oÿ   oï , o   sÄoW+Ý Þ u   ,  oâ &Ü&Ü &¥ oÿ   oï , o sÐ oÁ+&+Ü Þ u   ,  oâ &Ü&Ü &(¹ -<,2Ðì(d ol (: sû£ (¤ (¥8(8"{dH,)r‹Ôpsê (>+oì & sÒ(Â++¥ oÿ   oï 9ˆ o     sâr0Õp oÃ++  £Ï(ûXŽi2ÚÞt (¤  (¥Þ&8lÿÿÿ Þ u   ,  oâ &Ü&Ü &(¤o¬¤/(E sû£ (¤ (+&+*(¸ *4Ú(-)V [hø™‘0+W ( ° (— (˜ o] {F8(s*0 Z or{  { oè { o1{  {  uw-, tw-{ÁY+rLÕps¤(¤(Ä+oG²oZs¨ sä {k {ö (c o¶ (ÊU  sæ(É(¼+sè(É(¼+(¸ (°+s(  oI   s *0 j] or{  { oè { o1{  {  (Áh(É{„^o)¼ráEprc@p([ (\ (\ (+-+sì(Å+sî(Æ+  s (+9r7Öp(   ( þ-(sû£ (¤ (+&+( Á o+Á-(sû£ (¤ (+&+ ss ( ( + (Ç+ s (È+ s*0 >_ or{d  {ë  {e  oY (÷  (ø (Ço[,oMs s *(ÈsoJ(É s" (É+9‹rµ@p(²  s$ (É+-*(/sû£ (¤ (¥oÊ++R oË+ Þ,t  oe (.sû£(¤(Ì+ Þ  + oÊ+s *èø,0Ec or(c s  s&(Í+(Î+ (! (" s((Ï+s# *0d orof *0[e or{  { oè -{k { +,)rEp( (ü,*rRÁp( (ü **0"f ($¥oL , (™ { **0(g { o÷ -* (p {e (c *0¿h {  { oè {  {õ {ì oÔ :h{  {ö {ì oÔ :#{  { oè {k { ,(ö o/(­ ($ (% *(Î (Z {ë (2(Õ (Ö (® -f(& -(ö {ì {ë sT(' *{  {ô  {ó (Ÿ+sñ} (ö {ì {ë sT(' *  (v  {   {ô (ž+ {ó sñ} (ö  (­ ($ (% *  (p  (ö  (­ ($ (% *(p  (ö  (­ ($ (% *>ok(+*0 äj { oè ( (ý ( (ý {l  sD o/(­ ($ of(÷ (( ,A(÷ () u,*() t (( (( - {   +)rGÖp {ì ( (%¥s¤ (¤ (Ð+{   on{£;{k {ò (c {k {^ (Ú° or (  }" {ô orof{k {ú ,ráEps€n8À{m {õ {ì oÔ ,(p (o +<{õ {ì oÔ ,(p (o +{õ ráEpoÔ -9rÖps (ñ+{ì o (%¥s¤ (¤ (Ð+8§(p (­ ($ of(÷ (( ,A(÷ () u,*() t (( (( - { +5rûÖp{e ( {d {ë s¤ (¤ (Ð+ (`– { uu--!uv--tw-{ÁY(a +r_×p(%¥s¤ (¤ (Ñ+(b  {   s2 {“^ox²oK²,(} ({ þþ+{k {ú {   {k {ö {k { {k {\ {k {_ (Ìf(\®{@8(* or(  }# s‰ *fs6s8(Ò+þ(Ó+*0Uk { oè (ý {ô  (Ò {@8(  sD or of on *0 ]l { oè (ü (- (. (, (m(/ (0  (os‰ *0bo or}! {  (ì } ¥Ko+ oï ,o, oK &+è Þu  , oâ &Ü&Ü&*-I.{! ,**0Mp s:on{¬;(- (Ô+ -* ( {g:{u:o¸ o×k(Õ+þþ*6€&~&&*(. *"{ *(. *"{ *(/ *J, oF‡(0 **(1 *0r (2 (3 þoH‡*(4 **(5 *"oJ‡*(6 **þoG‡*V(7 }% }& *f{% o\{& (¼U*:(8 }' *Z(a{' þ(]*(9 *&þ(Ö+*(: *"(; *(< *"( *:( }( *B{( þo *:(= }) *0{{) o> s*:(? }* *0t {* o@ s*:(A }+ *0v {+ oB s‘*:(C }, *0x {, oD s“*:(í }- *>{- (¤**o &*6,( **&(ñ *r(E }. }/ }0 *0Ã{ {. {  { oè uv-9tv- {ÀY o_²{0 oF -K{/ (Œo/{. {e {/ oY(÷ {0 oG +{0 oH *r×p{/ s¤(¤(×+*:(I }1 *02| {  uw-, tw- {ÁY oG²{1 (ñ **F}2 o &*>{2 oS*>{2 oT*B{2 þoU*V(7 }3 }4 *f{3 o\{4 (¼U*(J *"oî†*:(K }5 *:{5 (Ø+*(L *6(1jsM *²}6 }7 }8 }9 }: (• *0»{9 YE + +r+e8Š{6 { {ô ¥oã }8 }9 {8 oï ,5{8 oä }7 }9 {7 {e }: *}7 +¾}9 {8 (1+}8 }9 }: *0‡e {9 YE++e{9 E + ++++}9 {8 (1+}9 }:  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{9 E + + +++***"{: *0 {6 s¬*:( }; *J,*{; (N *(O *"(`*:( }< *B{< þob*0l}= }> }? }@ }A }B }C }D  }E  }F  }G  }H  }I (P *0{H YE +8Ð8½8å{D ¥7og }G }H {G oï 9—{G oh }F }H {> {? {k {F {@ {A {F {C {? {k {` {? {k {_ {= s¶{E {B (=†}I *}F 8Yÿÿÿ}H {G (+}G }H }I *0‡e {H YE++e{H E + ++++}H {G (+}H }I  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{H E + + +++***"{I *0A{= {> {? {@ {A {B {C {D {E s¸*(Q *0} (R (S *(T *"(S *(U **:(í }J *0. s {J ($¥oÙ+oâ  Þ t  Þ*!" :(5 }K *B{K oV *:(5 }L *B{L oW *:}M ( *B{M (^+&*(9 *NsÊþËs: *V(; }N }O *¦{O r$Øp{N ( rBØp( o *V(X }P }Q *ÂsÆsÈsÌ(_+{P {Q sÎ(`+*:(Y }R *¦rS¬psê (>+oZ {R (C†þoì *([ **þo\ *(] **þo^ *(_ *"(‡*Ò}S }T }U }V }W }X (` *0¼{W YE + +s+f8‹{T ¥Ooa }V }W {V oï ,@{V ob }U }W {U sØ{S oÚ+}X *}U +³}W {V (Û+}V }W }X *0‡e {W YE++e{W E + ++++}W {V (Û+}W }X  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{W E + + +++***"{X *0 {S {T sÚ*(d **þoe *(f **þog *:(h }Y *6{Y o\*(O *"(`*(O *"(`*0\(i }j }k }l }m }n }o }p }q  }r  }s  }t *0|{t {j {k {n {o {m {q {p oe¼{k^oŠ´{s on{¬;{r {l oÜ+('{t (*(u (v *:(w }e *ò(ò,1{U^r¾Áp(ÂrS@p(Â{e (ôs (x **ò}f }g }h }i }j }k }l (y *0 {k YE +8¿8¡8Ô{g ¥;oJ }j }k {j oï 9†{j oK }h {h (ñ,Z{h {U^r–Áp(ÂrS@p(Â}i }k {i {h {f (ôs }l *}i +}h 8jÿÿÿ}k {j (e+}j }k }l *0‡e {k YE++e{k E + ++++}k {j (e+}k }l  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{k E + + +++***"{l *0 {f {g sî*(z *"(ŠY*:(C }m *R( Á{m þo.Á*:( }n *f{n rjØp( o *V(7 }o }p *f{o o\{p (¼U*:(8 }q *n(a{q o]þ(]*(9 *&þ(Ö+*:(h }r *6{r o\*({ **þ(¦(*V(| }s }t *j{s {t oR(ø*ò(} }u }v }w }x }y }z }{ *0 bƒ {z {{ (Ý+ ,J (~ {w {y {x soV (Þ+ {u {v so (€ **(O *"(`*(O *"(`*0\(í } }‚ }ƒ }„ }… }† }‡ }ˆ  }‰  }Š  }‹ *0h{‹ { {‚ {… {† {„ {ˆ {‡ oe¼{k^oŠ´{Š on{¬;{‰ {ƒ oÜ+('*0\(Œ } }Ž } } }‘ }’ }“ }”  }•  }–  }— *0ñˆ (˜ (™ { {” {“ sôoV (ß+ {• {– (+9˜{ r‚Øp( {— ( þ-"({ sû£(¤(+&+( Áo+Á-$({ sû£(¤(+&+{• sös ( ( +{— (à+{š {¸;s¨  {¹; ráEpr’Øpr´ØpràØp([ (\ (\ (\ (\   sø (á+  ,(  {’ {s rÙp(U  (d (U + (¹hoE  o¶ { (c {” {” oy²(c { { sú{º;{ sü{“ {r^- sþ(,+++(˜ { s{ {p^(ÉUszns€n{ { { {“ {” s(â+{” s{“ (É(¼+s {“ (É(¼+(¸ s({ {Ž { { {‘ {’ {“ {”  s› sœ *:(C }’ *R( Á{’ þo.Á*:( }“ *V{“ (ž oI*V(| }” }• *j{” {• oR(ø*V( }– }— *00‰ (Ÿ (ž (  {– {— so¡ *( *0 Š (Ÿ (ž (  þoK *(¢ *"(**(£ *0Š (Ÿ (ž (  *r(i }˜ }™ }š *0L{˜ {™ s{š (È+s{š (È+ss{š (ã+þ(ä+*r(i }› }œ } *’{› {œ { oQ(u (v *(± *"(`*:(± }ž *:{ž (!`*r(¤ }Ÿ }  }¡ *0WŒ {Ÿ {¡ {  oå+ Þ8t {g oe (Æ{d  {ë sû£ (¤(æ+ Þ*8(¥ *.þo¦ *V(§ }¢ }£ *R{¢ {£ (s*0d}¤ }¥ }¦ }§ }¨ }© }ª }«  }¬  }­  }®  }¯ (¨ *0þ {® YE +!+88‘88—8f8¬}® {¦ { }¯ *{¥ oP¥oÔ }¬ }® {¬ oï ,0{¬ oÕ }« }® {« }¯ *}« +Ã}® {¬ (ç+}¬ {¤ {k {ò {¤ {o {¤ {p (¹¥7og }­ }® {­ oï 9¦{­ oh }§ {¥ or{¥ { {§ o© }¨ {¨ -+N{¨ }© {© (ï }ª }® {ª { }¯ *}ª þÎ}© }¨ }§ 8Jÿÿÿ}® {­ (+}­ }® }¯ *0¹e {® YE+8”{® E ++A+=+$+ +++/}® {­ (++}® {¬ (ç++}® }¯  Þ t   Þ&8Rÿÿÿþ,z*€œ 0L{® E +++++ +++ ******"{¯ *0* {¤ {¥ {¦ þÎs,*’(ª }° }± }² }³ *0gŽ {² { (s, {² { *s*{° {± {² þÎs,(è+ -{³ *(O *:( }´ *0!*{´ {ë sT (¤(¥*(¬ *0 (£ (¤ s4(Q+*(­ *N{í {î s¦ *(® *0- ,( ( {g:{u:o¸ oØkþo **V(¯ }µ }¶ *0G u,3t {  {¶ (-{µ sû£ (¤(Ð+*t{ *r(° }· }¸ }¹ *0 '{¸ {¹ {· { { (c,*V(± }² }³ *r{² {³ s  þ(é+*r( }µ }¶ }· *†{µ {¶ {· s  þ(ê+*Ò(¸ }¹ }º }» }¼ }½ }¾ *0 -{¹ {» {º {¼ {½ {¾ (ë+*(¿ *0k‘ (q’E+*tÊ& {ƒM (4sû£ (¤(¥*tÅ& {xM(ÿ*(À *0s’ (’E +*tµ& {\M (4sû£ (¤(¥*t®& {JM(*Ò(Á } }à }Ä }Å }Æ }Ç *0 }“ (q’E;*tÊ& { {Ä {à {Å {Æ {Ç {‚M(ë+*tÅ& {xM (ÿ*Ò(È }É }Ê }Ë }Ì }Í }Î *0 9{É {Ê {Ë {Ì {Í {Î sÏ {–Mþ(ì+*Ò(Ð }Ñ }Ò }Ó }Ô }Õ }Ö *0 …” (’E ;*tµ& {Ñ {Ó {Ò {Ô {Õ {Ö {[M(ë+*t®& {JM (*Ò(× }Ø }Ù }Ú }Û }Ü }Ý *0 9{Ø {Ù {Ú {Û {Ü {Ý sÞ {Mþ(í+*:(ß }Ý *0N( (  {Ý oŽ*(à *0(P (O *(à *0(P (O *(á **:(ß }Þ *0N( (  {Þ o“*V(ß }ß }à *0%N( (  {à {ß o‘*{á *{â *{ã *{ä *{å *{æ *{ç *ò( }á }â }ã }ä }å }æ }ç *00• (¤(¡£ (˜ Þu  , oâ &Ü&Ü* 02• (¤(¡£ (™ Þu  , oâ &Ü&Ü* Šsi€é si€ê si€ë *:( }è *~é **(pþ*~ê **(pþ*~ë **(pþ*{è *Zr.8psâ (î+oã *01.þ, þ,{è  {è  3*Y**þ,**:¥Œor*0B— ¥Œ þ,%¥Œþ,{è  {è  3*Y**¥Œþ,**0.þ,% (pE * * **6(n ou*0.— þ,uŒ ,{è  {è  þ**þþ*0*.þ,þ,{è  {è  þ**þþ*0˜ uŒ ,ox**:(¬ }ï *:{ï sY‰*V( }ð }ñ *0Q™ sH oI {ñ (ñ Þ4t {ð {  on{¢;sÐ (¤(¥ Þ*4:(ä }ò *~{ { {ò ( så *r(æ }ó }ô }õ *0 {ó {õ {ô (**sƒ*’( }ö }÷ }ø }ù *{ö *{÷ *{ø *{ù *&*Zr.8psç (ï+oè *0š þ,v &  ¹y7ž{ù (ð+bcXXX ¹y7ž{ø (ð+bcXXX ¹y7ž{÷ (ñ+bcXXX ¹y7ž{ö (ò+bcXXX **6(n oŠ*0x› þ,iu’ ,]&  {ö {ö (ó+,A{÷ {÷ (ô+,+{ø {ø (õ+,{ù {ù þ(õ+*****þþ*0pœ þ,aþ,Y&  {ö {ö (ö+,>{÷ {÷ (÷+,){ø {ø (ø+,{ù {ù þ(ø+*****þþ*0 u’ , þo**(é *6{ÊM{I*{ú *{û *{ü *{ý *{þ *{ÿ *Ò( }ú }û }ü }ý }þ }ÿ *"{ü *"{ý *"{þ *"{ú *†{ú {û {ü {ÿ s—*V(7 }}*f{o\{(¼U*V(8 }}*^{{þ(]*(9 *&þ(Ö+*:(ê }*0 rž (ë (ì (í (î (ï (ð (ñ s {{ú {{ü  s—sò (ó *0T(ô }}}}} } } }  }  }*0 [Ÿ {{ {{ (‚ {(Ö (õ {{ { { {sö (÷ *0„(ô }}}}}}}} } } } } }}}}*0M  {{oø {{ÊM{I sè?{{{{(¦* {,{{ý +*sè?{{{{ý {(¦* {,,{{{{(é (O,+([ {{(ù (ú (ú (Ii(f²{{ú {±;(>i(¯À(û {{{{{ s¥(ù+þoú+*0d(ü }} }!}"}#}$}%}& }' }( }) }**0š¡ (ý (þ (ÿ {)þþ {g={K=(¯À(û {{ {!{"{#{${%{&{'{({* s§(ù+þoú+*0t(ô }+},}-}.}/}0}1}2 }3 }4 }5 }6 }7}8*0­¢ {0{þ  {-{.{/{0{1{2{3{4{5{6{8s©{-{0{ü {5{0{ú {+{,{k { {/{8{7(s,þ(û+*0|(ô }9}:};}<}=}>}?}@ }A }B }C }D }E}F}G*0¼*(¯À{@{Eo ,6{E{ÊM{I(7{Csû£ (¤(¥(û +(û {9{:{;{<{={>{?{@{A{B{D{E{F{Gs«(ù+þoú+*0T( }H}I}J}K}L}M}N}O }P }Q*0 Ï£ ( ( ( {L{Qo {I,D{I(é {Q{ÊM{I{J{H{P(O,+(Ö {K{þ  {M{N{O(‚ {K{û  (e,   sö (÷ *0l(ô }R}S}T}U}V}W}X}Y }Z }[ }\ }] }^*0ž{T{U{V{W{X{Y{Z{[{\{]s¯{T{W{ü {\{W{ú {R{S{k { {V{W{ý {^(t,þ(ü+*0t(ô }_}`}a}b}c}d}e}f }g }h }i }j }k}l*0¶*(¯À{f{ko ,6{k{ÊM{I(6{isû£ (¤(¥(û +(û {_{`{a{b{c{d{e{f{g{h{j{k{ls±(ù+þoú+*0l(ô }m}n}o}p}q}r}s}t }u }v }w }x }y*0w§ {suø&9•{stø& {ÙM{ÍM {ÙM {to (¯À(û {m{n{o{p{q{r{t{u{v{w{x{y s­(ù+þoú+*{stù&{ÚM{ÓM {ÚM(¯À{to ,8{ÊM{I(5|x(G¥sû£(¤(¥(û +(û {m{n{o{p{q{r{t{u{v{w{x{ys³(ù+þoú+*0D( }z}{}|}}}~}}€}*0 ¨ {{( {€{ÿ  {ö  {÷  {ø  {ù {oY“{|o\{€s£{z{{{}{~{{€{ sµ(ù+þ(ý+*:(  }‚*0C© (¤($¥(¥{‚{ý  (Ö (e,s {‚sò (ó *0D( }ƒ}„}…}†}‡}ˆ}‰}Š*0 N{ƒ{„{…{†{‡{ˆ{‰{Šs·(-+{‰s¹þ(þ+*:( }‹*0ª {‹(× s*(  *&(f,*²(  }Œ}}Ž}}*0 '{Œ{{Ž{{(*(  *0&« (û (Ú (  ( (0+(ó *0D( }‘}’}“}”}•}–}—}˜*0 CsÃ{‘{’{“{”{•{–{—{˜(þ(ÿ+*:( }™*0@*{™o -/{ÊM{I(8{ÊM{Isû£ (¤(¥**^sÊ€›sÊ€œ*:( }š*~›**(Ïþ*~œ**(Ïþ*{š*Zr.8ps (+o *01.þ, þ,{š {š 3*Y**þ,**:¥«oÑ*0B¬ ¥« þ,%¥«þ,{š {š 3*Y**¥«þ,**0þ, (Ï3 * **6(n oÔ*0.¬ þ,u« ,{š {š þ**þþ*0*.þ,þ,{š {š þ**þþ*06u« ,o×**:( }Ÿ*sø**(öþ*sú**(öþ*sü**(öþ*sþ**(öþ*s**(öþ*s**(öþ*s**(öþ*s**(öþ*s**(öþ*s *.(ö þ*s *.(ö þ*s*.(ö þ*s*.(ö þ*"s*.(ö þ*{Ÿ*Zr.8ps (+o *>(Ù}®*{®*>(Ù}¯*{¯*>(Ù}°*{°*>(Ù}±*{±*>(Ù}²*{²*>(Ù}³*{³*>(Ù}´*{´*>(Ù}µ*{µ*>(Ù}¶*{¶*B (Ù}·*{·*B (Ù}¸*{¸*B (Ù}¹*{¹*B (Ù}º*{º*^ (Ù}»}¼*{»*{¼*:( }½*2{½{®*:( }¾*2{¾{¯*:( }¿*2{¿{°*:( }À*2{À{±*:( }Á*2{Á{²*:( }Â*2{Â{³*:( }Ã*2{Ã{´*:( }Ä*2{Ä{µ*:( }Å*2{Å{¶*:( }Æ*2{Æ{·*:( }Ç*2{Ç{¸*:( }È*2{È{¹*:( }É*2{É{º*:( }Ê*2{Ê{»*2{Ê{¼*2s3*²( }Ë}Ì}Í}Î}Ï*{Ë*{Ì*{Í*{Î*{Ï*&*Zr.8ps (+o *( *"sB**uÎþ*sE**uÏþ*0®  uÏ,+*Zr.8ps (+o *V(;}Ò}Ó*{Ò*{Ó*:(;}Ô*{Ô*:( }Õ*2{Õ{Ò*2{Õ{Ó*:( }Ö*2{Ö{Ô*:( }×*B{×þo *:(` }Ø*0{{Øoa sL*:( }Ù*B{Ùþo *:(` }Ú*0{{Úoa sP*:( }Û*B{Ûþo *:(` }Ü*0{{Üoa sT*:( }Ý*B{Ýþo *:(` }Þ*0{{Þoa sX*:( }ß*B{ßþo *:(` }à*0{{àoa s\*:( }á*B{áþo *:(` }â*0{{âoa s`*:( }ã*B{ãþo *:(` }ä*0{{äoa sd*:( }å*B{åþo *:(` }æ*0{{æoa sh*:( }ç*B{çþoì *:(ñ }è*0®{èoò sl*:( }é*0…¯ Xob X{é2JrR9ps— ( (Æ+&r"Ùpsz ( (;+ snrR9p(+&ob X*rS¬psê ( (4+oì &Xob X*( **(*:(¿ } *B{ þ(+*( *0-° uÎ,#tÎ {Ó {Ò s ( **( *"( *:(  }ë*V{ë(! þo" *:(# }$ *0]³ (% (& (+,*sx(+sz{$ (+(+ ¥“(½+ (þo& *:( }í*B{íþoì *:(ñ }î*0®{îoò s~*( *>r4Ùp(*:( }ï*B{ï(*(' **(*(( *"(*:( }ð*0B´ {ð (l Þ't (9(&¥sû£ (¤ (¥ ÞþoA * 'V( }ñ}ò*0Hµ {ñ (l Þ't (9(&¥sû£ (¤ (¥ Þ{òþ( +* ':( }ó*B{óþoì *V( }ô}õ*Z{ô{õþ( +*0 ”¶ (pE$r¥`p([ (\ +GrÙ?p([ (\ +5r½`p(Ú,r¥`p([ (\ +rÙ?p([ (\ (\ oT (U (Ú (î*0¢· (õ (j (n ow (n (n ow (—od  (‹sº(º(+(pE(“¿+(‘¿(+(*(-(,(%*0¾º ( Áo&Á ( Áo#Á ,(Õ (… s+ +s, o- (›(. (/ Þu   ,  oâ &Ü&Ü Þu   ,  oâ &Ü&Ü Þt (¤ (¥(. Þ*(C ch‚žŸ0 Ÿ½ o& ( s0 s¼ s¾ sÀ ((+Þtu+,Þþ&(%s1 Þ0tu+,o&  (%s1 Þþ**<Zl007 s2 s· sÊ ( + ¥( +(3 s4 *0 ªË (5 9 (6 uù9(6 tù {ý9å{ý (h uø&9Æ (h tø&{ÿ{ÙM{ÎM(5 {ÙM{ÍM{ {ÙM{ËM {ü {ÙM{ÌM {ÙM{ÐM {ÙM{ÏM{û{þ    (>“(S“(È  ((/ +++ö+ñ+ì ( s0 (7 s8 ( s0 sÌ( +(¨ s9 (¨ s9 sÎsÒ(µ+(Þu , oâ &Ü&Ü(Õ (Ö sÔ(œ+(5 ,O (6 uù,@(6 tù {ÿ{þ(: (+(: (+s; +(¨ (¨ s; (< (= sÖ  (+! (+"(> (+(+(? (> (+!"se*–  0DÍ (“ ($¥(›(. (/ (– (@ (A  (—*0RÎ (+(B sØ(+ ¥( +(+ (– (@  (A (—*( *&s¡**uøþ*:s¥**uùþ*0Ð  uù,+*Zr.8psC (+oD *r(š}ø}ù}ú*{ø*{ù*{ú*Ò(š}û}ü}ý}þ}ÿ}*{û*{ü*{ý*{þ*{ÿ*{*:( }*2{{ø*2{{ù*2{{ú*:( }*2{{û*2{{ü*2{{ý*2{{þ*2{{ÿ*2{{*Vo &sE }*‚{oF -{þoG **B{þoF *:( }*V{($¥o“*:(ß }*03N( (  {s {(> ( (H *:(ß }*0N( (  {o“*V(ß }}*0%N( (  {{o‘*v} } rHÙpo¯¤&*z{ { (: (I (J *z{ { (: (I (J *R{ (: þoK *:( } *"{ *V(L } } *0 wN( (  { {oF ,(. *(Ú,{ {k { (”*{ o¸(¨ (¨ ( ((. (/ *’(M }}}}*0 ÔÓ uø9½tø {ú {ù {ø ( Á o&Á{{oF ,(. *{o¸(¨ s9 (¨ s9 sÂsÆ(µ+(õ  {(3 {{(’  --(: (: ( ((. (/  ÝÚ   (h  {(3   (•(N (O {(P {sÈ{(3 o*(+(+¥( + (È (: (: (> ((/ ( +¥( + Þu , oâ &Ü&Ü *(. (/ *AŽ«r(Q }}}*0­Ô uù9—tù { {ü {ý {û( Áo&Á{s {(> ( (H {{(> (+(H { sR {(? (S (T *rjps\ zv}}r`Ùpo¯¤&*z{{(: (I (J *z{{(: (I (J *R{(: þoK *:( }*"{*(Ú *:{e sÛ *V(U }}*0ˆÕ (‘ -* ($ (n{(n owþ,1($¥(K+,+ (%¥(K+,+(&¥(K++ {(I¥(š þ ,**:(V }*0'Ö (B (W {{k { (”*0rr~Ùpr–;p([ (\ (\ €r~ÙprˆÙp([ (\ (\ €rˆÙprÙpr˜Ùpr¬Ùp([ (\ (\ (\ (\ €rEp([ (\ €r˜Ùpr¬Ùp([ (\ (\ €r~ÙprˆÙp([ (\ (\ ((Ÿ+€ rÙpr˜Ùpr¬Ùpr–;p([ (\ (\ (\ (\ €!(Õs;(o+€"r×@p([ (\ €#rùEpráEp([ (\ (\ (·r,Òp([ (\ (Ÿ+(Ÿ+€$s(+€%*ÊrR9p€œ€ŸsÝ€€Ÿ( €ž€Ÿ**o &* *:( }/*B{/þo *:(L }0*0{{0oM sß*:( }1*B{1þo *:(` }2*0{{2oa sã*:( }3*B{3þo *:(` }4*0{{4oa sç*>s þ(+*0’{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*r¶Ùp**~…*0 ŸÙ (`° (a°sº ,7(X (&°(#µ(Ûµ(Y (Z (ƒ°( ±(±+D(X (&°(Ѱ( µ(#µ(ݵ(Y (Z (Z (ƒ°( ±(±(ì*0(Ú s[ (+ ¥7sQ s\ þ(+*>s] þ(+*0kß (™·E#=Ntp. {\ s {\þ(+*tq. s { \þ(+*tr. { \+—*0­à (^ (_ ,Z (Õ Œ’,4u¼,(x ¥|o¡ +o& +rR9p( + o` ,',  (Õ X+(V sa 8aÿÿÿob sc *07ä s! ( + s#  (ÿÁ(d (!+ ([ ("+(e *~†*~‡*~ˆ*€ˆ*0æ (ø s1 (ù*:(øof &*0Üsß s3 (ús5 *~‰*~Š*~‹*~Œ*0 lç (g ,\ (g (g -M({ -E(h (i (çŠ{U;{X;(ôn{U;{X;{¥8(Ðo(¼]sj *sj *0 ‹(ÿ´{P{@8(Ë_(ŵ(Y (Z (¤ (¼´(íµ(Y (Z (¤ (k {P{È8(¤ (¥ (Ë](k (l {P{µ8(¤ (¥ (Ë]*òo4³(çµ(Y (Z (¤ (k {P{£8(¤ (¥ (Ë]*0Nê {S{O,(ß² (n oê²+,o°³ {ÜY(º²þþ+,þ**0Åë (y {] {]  op² /*1*(y {^{^( /*1*(y {_{_([+/*1*(y {`{`om /*1*(y {a{a( *0¤ì {] {] op² /*1*{^{^( / * 1 *{_{_([+/*1*{`{`om /*1*{a{a( *0Bí -([ (\ + (d ([ (\ (\ ¥7 rS@p(p+(` *jon{£;([ s{ *0–oij {g:{u:o¸ {í:(3jE4{]{^{_{`([ (\ (Ÿ+{as{ *{]{^{_((c {`{as{ *0†ï {c: {d: s„ (#+ (n (o s† ($+¥7rS@p(p+(` sˆ  ($+rR9p(ñ ,+(c s{ *0að {` (] ,7 (] (^ {]{_ ((\ (ô²*{_( {] (<°*’(«–oó 3*sŠ («–þ(%+*²rÔÙp{a( ( rðÙp( {^( *†røÙp{a( ( r6Úp( *ª{]{^( ([ (\ {as{ *ª{]{^(([ (\ {as{ *0–ñ {` (] ,t (] (] -!(^ {_( {] (<°*{`(ò+(— (˜ {]{^{_{as{ ( *{]((<°*B,(ð·*(ü·*¦oö²(] -,(a»*(_»*((c»*0™÷ u[,`t[ {w= {y= {x= ,(p *s¶ (ë(&+ (q -(°+(=°(A°*t\{z=s¸ (ë(&+(ÿ°*0 óú (ë (¨  (n o³ ,{B8{E8{y8(i+,(?^(2^(M^{m=or +, {z88ÿÿÿofm {g:{q: ( k3@t{ :{µ:,*{ :(˜ {¤8oVkþ(*ofmo½j(*0 Ÿ (R] ($nEá!T¤Bbtv {‚;{ƒ;þ(*tw {„; (˜  (I]8{ÿÿÿtx{†;{…;{A8(˜ (ª ((˜ (ª ((ó•*ty{‡;{ˆ;  (  (s  (t þ(•*tu  {€;  {;sº  ('+  (¨ þ, (˜ 8™þÿÿ{A8(ò•*tz  {‰;o ((³*{@8{º^*Zs¼ þ((+*0_ (’  ofmo½j u[,7t[ {w=s¾ ošj()+(Q`((¯*r:Úps\ z0] ofm o™j ,@ (v {Ë:{w Œ)-,{w *((x *r‚Úps\ z0ÿ {B8{E8{R8(i,(ô®*{B8{E8{K8(i,(ö®*{9 sÀ ofm {g:{p:(¹+ ,Z („ {Ã;(… ,F („ {Ã;(† (Œ^,'(… (… -(g ,(ò®*(ð®*,2(„ {Ç;(&sû£ (¤ (¥(ò®*(ò®*®{B8{E8{l8(i,(ð®*(*01 ( (" (q -(°+( ¯*‚{t;(onsy *0 (˜ (ª þ(*Rs þ(&+*0 * ,  (˜ (¨ (• þ(*(³*0" (˜  (¨  sÄ þ(&+*fsÆ (ëþ(&+*0ƒ ,+{9 sÈ {U;{a;(N+,!om , (˜–+ (`°*(öo!” ((ß²((= (B° (`°*0 } {v;ofm(’  {U{P{v; ofmo½j({v;ofmon(i_{U{P(˜ (ª on{×:((`°*0 >{â{ã{ä{å{æ{ç{è{é{ês}!*0 N(*+sŒ o {â{ã{ä{å{æ{ç{è{é{ês}!*0 I{áo {â{ã{ä{å{æ{ç{è{é{ês}!*0 T{á{â{ã{ä(¹^sz {å({ {æ{ç{è{é{ês}!*0 ä {á{â{ã{ä{å{æ (| {ç{è{é{ês}! {B89Š{E8(Ñ`(ç] ,s (ˆ oÇm,Z(} {á{â{ã{ä{å{æ (| {ç{è{é{ês}!****Fs€!þ(++*0e |æ(~ ÞLt u‰ ,:(“”(fe(È+(sû£ (¤ (¥ œ(ç (,+ Þþo *L0  oÆm {U;{X; oÆm {U;{b;(-+oÆm {U;{Z;(_^ (€ ( (‚ (ƒ (*+sŒ  o ¥‰(.+{i;{AL (   (n o* {i;{AL (   (n o* oÆmoül  ofmo~jo†  o† /ržÚps¤(¤(+&+ (.+(„ (… oÆm(g`(  ,+ ,(³+(˜ (ª  s‚!(/+(n(,+ 9 ,(g^s† +\(q ,(‡ (f (q s† +4rIÛpoÆmom( rwÛp( s¤(¤(0+(ˆ (‰ ( ^, (’^+(n]o† oµ .LrÛpsŠ (1+sŠ!o† o† oµ (2+s¤(¤(¥+sŒ!(3+(4+(Œ ( (! sŽ!(/+("!oÆmom !(X°sŽ *(4+(Œ ( (! s!(/+("!oÆmom !(Z°sŽ *0 (#*0 Ó" 9¹ ( {U;|\;(ºi(€iþ,{U;{b;þ+,{U;{Z;(^+,P {= o s‘ (’ (“ , *(-{= o” *(-*(-*0 % oÆm {U;{Z;(^,oÆm {U;|\;(»iþ+, oãmþ+,(Û *oÆm {U;{b; , (E +@ràÜp(“”(_e(È+( oÆm {U;{X;s¤ (¤ (5+ oÆm {U;{X;oÆmomoÆmoíl9ˆr:Ýp( (z (*+sŒ o (˜ (ª oÆm {U;{Z;( (ß²((= (B°  (=  (= (Z°(á *oÆm {U;{Z;oÆm {U;{X;(þ]  (• (¨ : (G (H :ÿoàm:ó (F  oÆm (*+sŒ (˜ (ª  ( (ß²((= (B° {U;{a; {9s’! (N+ o;³(Ö²r:Ýp( (=  (P°(Ö²rDÝp(  (= (> (³(P°  (.  (ß *oÆm {U;{`;,HoÆmoßl-6(³ (,(– (— (˜ (ã *oÆm {U;{Z;(_^(€ ( (‚ (ƒ (*+sŒ o ¥‰(.+(4+(Œ ( (!(  (ß²((= (B° s”!(/+("  (Z°(ã *0 -' (™ sÁm(/ (,+()*0 V*{U;{b;,(+!( i(/*rNÝpom( {U;{X;s¤ (¤(6+*0X( s–!{g:{u:o¸ oÓk(7+ {g:{u:o¸ {ì: sš!¥þ(8+*0Œ) on{§;-*{±;( sœ!o‘n(9+ on{¬;m(Jms`m on{¬;{g:{u:o¸ {ì: s ! ¥þ(8+*ºsš s› oÓk(:+{ì:¥þ(;+*îsœ {g:{q:( kþ,o¢j{Ä:+(Ê þ(<+*Js þ(=+*0Ê2 (rEv“QttN {[= {Z= {\= ož (\^(>+sŸ s  (?+þ(@+*tL{V={,<þ(A+**tJ{T={K=(B+*tK{U=(C+*0H4 {c= {d= o‡j,+"{a {^  oj( ( þ(D+*067 {j= ( (+!  s®! s°!þ(E+*ú{¼9(F¥o¢ (?¥(@¥X(A¥(B¥X(÷³(£ *v{S{I, {P(:**0 09 s¤ s¥ þ¶s¦ (F+(G+þ(H+*03: --*(§ (¨ * ,(§ (¨ *(§ +Ý0 ]< {Ó]{Ó](I+ {Ï]{Ð]{Ñ]{Ò]{Ò](I+{Ô]{Õ]{Ö]{×]{Ø]sÚº*0f? {Ï]{×]{Ô](¼! o© ,.oª (« (¬  (J+s­ þo® *o¯ s­ þo® *0'A sË!s° sÎ!(K+¥»(L+*~*0E{S{J, ¡†+ îïþ{S{J, ¡†+ îïþ(÷³(¶*08C {P{@8{š^(= (> (çµ(Y (Z o"*0¿F Ži(e o± ŒH,+ r¨9ps‚ zŽi Y 2£ùo² &X X3ãoY(£°Ži-=(= (> (×°(“²( ¶(Y (Z (Z o"*{\{äŽioð! r¾Ýp(·hoE   ŒÁ  ,4 u¼  , (x ¥|o¡ + o& +rR9p( (˜–  (³ (m (ð·((±{Ú]{Û]{Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{å]{P{@8(ñ(X (Y (b°sïº{ä(ß²((= (B° (`°(ÿoK &{\{Z{Zoø!{P{@8{É^(= (> (> (> Ži(×°(“²( ¶(¡µ(À´(íµ(Y (Z (Z (Z (Z o"(ÿ´{P{@8(Þ°(ŵ(Y (Z (Ao"*~Ž*~*0ÿQ s" (}°(e! o&" ss"(M+ {á{â{ã{ä{å{æ {è(Z¦(³ s}!(N+&o."(µ (¶ (· (¸ (¹  (º  su"sy"(O+  ¥Á(P+(Q+ s{"(R+   s» *Bsƒ"þ(S+*0 ­V  (G (½ (¾ (¿ (À (Á ( (à  s…" (i±  (r° ,  (;+ (Ä -(&°+  sí·sÅ *03rÊÝp( (}°(e!rØÝp( (}°(e!sÆ *0=W rÊÝp( (}°(e! o&"rØÝp( (}°(e!sÆ *0"Y (K (Ç oÈ o&"**0c] (l 3*(îo3(tå {i< {.<(éŠþ, {i< *(îo36tä {e< s‡" (T+,+ s‰" (U+, {e< *(îoE**té{~<(ÒpEgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿgÿÿÿ8bÿÿÿ*0Ae (l 3*(îoEƒOÄÜ*tå {j< {i< {.<(éŠþ,*{,< {U;{b;þ, 8`ÿÿÿ*tä{f< {e<s‹"(U+, 8,ÿÿÿ*tà{Q<(®q@cÿÿÿ{R<(pŠE***tç{t<(éŠþ*té  {~<(ÒpEþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿ_A#þÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿ8Šþÿÿ {~<t  {È<u7%þ* {~<t  {Ê<u7%þ* {~<t  {Æ<uK%þ* {~<t  {Ä<uQ%þ*^(O,*(Nþ*0½– (›] (O- (Nþ+,( ]o"+{P{U(ü$ :(îoEN¤õõñ'IPx(îoE_©žrâÝp só ztæ {n< {q<{s<{r<{o<{p< (£*tê  {†<  {…< {ƒ<  {‚<  þ(*r™Þps\ ztë  {‰<r¿Þps¤ (¤ (+&*tÞ  {K<  {J< {I< (Z*tç{y< {v<{w<{t<{x<{u< (¸*tà{R<{S<{P<{O<{Q<þ(‡*tä{g<{f<{e<þ(É*tå{j<{i<rñÞp(J(É (Ç (É (Ç (ò(Ë o&" (Ï{.<(éŠE (h + +(j (P"8wüÿÿ(ª*tã!!{b<"!{d<!{a< !{`<!{c<# "#þ(|*tß$${L<%${N<%(à*té&&{<"&{~<'&{<&{€<#'(ÒpE ”­ ë îØíƈBú*’ŒÜ1ªÞ,s¦ {  Qñ¬I  Š 'tÿ{Á<((#(a*'tþ{À<))"#(b*'t**{Í<(*{Ì<++("#(c*'t,#(Ê ,9#--(Ê (Ê -',{Û<.-(Ë ".þ(`*rùÞp( ]s¤ (¤ (+&*'t/#(Ê ,Î#--(Ê (Ê -¼/{Ø<./{×<(-(Ë (.(h*'t 0#(Ê 9xÿÿÿ#--(Ê (Ê :cÿÿÿ0{Ó<)0{Ô<.-(Ë )".(k*'t 1#(Ê 9ÿÿÿ#--(Ê (Ê :ÿÿÿ1{Ñ<(-(Ë ("(l*'t 2#(Ê 9Íþÿÿ#--(Ê (Ê :¸þÿÿ2{Ò<)-(Ë )"(j*'t3#(Ê 9}þÿÿ#--(Ê (Ê 9hþÿÿ-(Ê 44(Ê (Ê :Nþÿÿ3{Ú<.3{Ù<(4(Ë -(Ë (.(i*'t 5#(Ê 9ÿýÿÿ#--(Ê (Ê 9êýÿÿ-(Ê 44(Ê (Ê :Ðýÿÿ5{Õ<)5{Ö<.4(Ë -(Ë )".(m*'t6#(Ê -6{Ï<77"(r*#--(Ê (Ê :Rýÿÿ6{Ï<7-(Ë 7"(p*'t 8#(Ê -8{Ð<77"(o*#--(Ê (Ê :êüÿÿ8{Ð<7-(Ë 7"(n*'t9#(Ê 9¯üÿÿ#--(Ê (Ê -'9{Î<7-(Ë 7"þ(s*-(Ê 44(Ê (Ê :\üÿÿ9{Î<74(Ë -(Ë 7"þ(q*#"(^*'t::{Ý<;:{Ü<<<"#;þ(‹*'t=#(Ê 9Ñûÿÿ#--(Ë (îo@»ûÿÿ-(Ë tá>>{W<(g 9œûÿÿ>{W<??(g (g :‚ûÿÿ-(Ê (Ê 9qûÿÿ-(Ê 44(Ë (îo@Vûÿÿ4(Ë tá@@{W<(g 97ûÿÿ@{W<AA(g (g :ûÿÿ4(Ê (Ê : ûÿÿ"(³ :ûÿÿ={Ä<B@{X<>{X<B(†*'tC#(Ê 9¼úÿÿ#--(Ë (îo@¦úÿÿ-(Ë tá>>{W<(g 9‡úÿÿ>{W<??(g (g :múÿÿ-(Ê (Ê 9\úÿÿ-(Ê 44(Ë (îo@Aúÿÿ4(Ë tá@@{W<(g 9"úÿÿ@{W<AA(g (g :úÿÿ4(Ê (Ê 9÷ùÿÿ4(Ê DD(Ë (îo@ÜùÿÿD(Ë táEE{W<(g 9½ùÿÿE{W<FF(g (g :£ùÿÿD(Ê (Ê :’ùÿÿ"(³ :†ùÿÿF(h GC{Æ<HE{X<@{X<>{X<IC{Ç<JHGIJ(…*'tK#(Ê 9!ùÿÿ#--(Ë (îo@ ùÿÿ-(Ë tá>>{W<(g 9ìøÿÿ>{W<??(g (g :Òøÿÿ-(Ê (Ê 9Áøÿÿ-(Ê 44(Ë (îo@¦øÿÿ4(Ë tá@@{W<(g 9‡øÿÿ@{W<AA(g (g :møÿÿ4(Ê (Ê :\øÿÿ"(³ 9Pøÿÿ";;(³ (³ :;øÿÿK{Ê<LK{Ë<M;(´ @{X<>{X< LM(„*'tN#(Ê 9ã÷ÿÿ#--(Ë (îo@Í÷ÿÿ-(Ë tá>>{W<(g 9®÷ÿÿ>{W<??(g (g :”÷ÿÿ-(Ê (Ê 9ƒ÷ÿÿ-(Ê 44(Ë (îo@h÷ÿÿ4(Ë tá@@{W<(g 9I÷ÿÿ@{W<AA(g (g :/÷ÿÿ4(Ê (Ê 9÷ÿÿ4(Ê DD(Ë (îo@÷ÿÿD(Ë táEE{W<(g 9äöÿÿE{W<FF(g (g :ÊöÿÿD(Ê (Ê :¹öÿÿ"(³ 9­öÿÿ";;(³ (³ :˜öÿÿF(h GA(h ON{É<PN{È<L;(´ E{X<@{X<>{X<IIOG LP(ƒ*'tQ"(³ :öÿÿQ{ã<RQ{å<SQ{ç<TQ{í<;Q{æ<UQ{ì<VQ{é<WQ{ê<XQ{ë<Y#-RSUTWXYV-;þ(Ž*#(Ê 9›õÿÿ#--(Ê (Ê :†õÿÿ"(³ 9zõÿÿ";;(³ (³ :eõÿÿ;(´ -(Ë  (‘*#(Ê 97õÿÿ#--(Ê (Ê :"õÿÿ"(³ 9õÿÿ";;(³ (³ 9õÿÿ;(³ VV(³ (³ :çôÿÿ;(´ V(´ Z-(Ë  Zþ(f*#(Ê :­ôÿÿ"(³ 9¡ôÿÿ";;(³ (³ :Œôÿÿ;(´  (g*'t["(³ :`ôÿÿ[{à<\#-\-þ(*'t]]{á<(žqEÓQ‚#(Ê 9 ôÿÿ#--(Ê (Ê :ôóÿÿ"(³ :èóÿÿ]{â<%-(Ë %(Þ*#(Ê :¸óÿÿ"(³ :¬óÿÿ]{â<%%(“*#(Ê 9‡óÿÿ#--(Ê (Ê :róÿÿ"(³ :fóÿÿ]{â<%-(Ë %(”*#(Ê :6óÿÿ"(³ :*óÿÿ]{â<%%(’*"(³ 9óÿÿ";;(³ (³ :ðòÿÿ#-;(´ - (e*'t^#(Ê :¾òÿÿ"(³ :²òÿÿ^{Â<_{S{F,1{P{@8{¼^_s"(V+{ä(Y*{Paas"`_Œñ,+ r¨9ps‚ z_Ži..Übcdf.Yeef2'bf`_f£oÌ ¤ÜfXffeX3Ùdcb(W+{P{¡8(d*'tg#(Ê :»ñÿÿ"(³ :¯ñÿÿg{Ã<h{S{F,1{P{@8{½^hs‘"(X+{ä(Y*{Paas“"ihŒ,+ r¨9ps‚ zhŽi..Übcdf.Yeef2'bfihf£€oÍ ¤ÜfXffeX3Ùdcb(W+{P{8(d*'t{Þ<.{\oû!{S{I, o "(§µj(Ajo"+.(»µj(Ajþo"*#(Ê -{ä(R"(Y*#--(Ê (Ê :;ðÿÿ-(Ë (j (N"8”êÿÿ't{ß<..(e!o&"{ä(]*tèkk{}<k{|<k{{<k{z<llþ(µ*tæ {q<(Î 9 êÿÿ{q<(Î (Î :‡êÿÿ{r<(Ï :wêÿÿ{P{n<(^9aêÿÿ{n< (Ð m{s<m(´*nn(Ñ oo(Ò o(Ó o(Ô o(Õ o(Ö o(× o(Ø o(Ù (Ú o(Ù (Û (¤*Js•"þ(Y+*0=— (h  (n os   s—"( ](I(Ü *0n› (T"E *t¢ {…(Ý *t£ {† {‡ s™"(Tþ(Z+*0 (V (T -*(Þ *0ž (T"3t£ {†+å*00Ÿ (T"3&t£ {† {‡ o&"+Ñ*0ï¡ (T"E º´‚,28&rAßp*t¢ {… rSßp(X( *rgßp*r}ßp*r¥ßp*t£ {† {‡{à r³ßp(X( r:p( (e°( rR^p( *t {‚{à rÑßps (ñ+ (e°þo *rßßp*rùßp*0å¤ (V (T"E  ¥R€š88Ÿt¢ {… (£µ (A o"(Y8m(õ (A o"8St¡{ƒ{„ (A o"8%(õ (A o"8 r àps\ zt {‚{\oû!{S{I,o "(§µ (A o"+{à(»µ (A o"8˜tŸ{(ß {(à {(á   ,(£µ (A o"+ (ä ,(Óµ+ {à(×µ (A o"+(Õµ (A o"(W*0 κ {U{P{á(˜ (ª ( (T , {ä(Þ (Y*{P(é_ :A(ønEPš‰ÔÂûG>Ž1ît«ãÅÓt¡{à;{P{@8{Â^(= (> ,+(×°o"8¼t¢{á; (= (>  (×°o"8ƒt¤  {ã; (= (>  (×°o"8Jt¦  {å; (= (>  (×°o"8t¨{ç;(= (> (£´(Û´(©µo"8Îtª{é;(= (> (£´(Û´(©µ(«´({µ(Y (Z (Z o"8rt£{â;(= (> i(×°o"88t¥{ä;(= (> i(×°o"8þt§{æ;(= (> (×°o"8Åt©{è;(= (> (£´(Û´(©µo"8~t«{ê;(= (> (£´(Û´(©µ(­´({µ(Y (Z (Z o"8t­{ì;(= (> (©´(ß´(©µo"8Ût¬{ë;(= (> (§´(Ý´(©µo"8˜t®{í; (= (>  i(×°o"+at¯!!{î;(C+G(\+9(•+)rWps\ z "(j "(â (J"(Q{ä(Y*0 N» {T ,(p *{U{P{á(˜ (ª {P{¥8( (ã (d *0&¼ ([(= (> (Ÿµ þo"*07½ (T -(\(Y* (Þ (Y*0 ο {P(` (ä (å (æ (ç {U {P{á(ª (oµ Y/ oµ Y+s›"([+(Roè (= (>  (]°(ϵ   o"{ä(Y*0 Á oµ 0 r?àps\ z/:(\+ {U{á(ª (oé (Ÿ`*(]+ (ê (ë  (I](¤ (¥ (ß+(\+ {U{á(ª (/+oé (Ÿ` / * Y8ÿÿÿ0 +   (j {P(_þ(Q*0—Ä (R{U{P{áofmo½j(¤ ( (T]o•j s¡"(^+ (]° oè (= (>  (ϵo"{ä(Y*0¸Ç (R{U {P {á  {t;(onsy (t (s oè {,Y{(Y{-Y(E°(= (> („¯ (Ô® oì (%¶o"{ä(Y*0 ÞÈ {U{P{á(ª ( s£"s¥"ofmo“j(_+(_+ (hq3g(Rofm(’  oè (= (> s§"(^+(]°(ϵ o"{ä(Y*s©"(`+{ä(Y*0 –É {U{P{á(˜ (ª ( (£° (= (> (Ÿ´oè (Ù´(©µ(“²( ¶(Y (Z (Z  o"s«"(a+{ä(Y*0 Í oè 0+{S{Fþ,+{P(^,(d*(b+ £Ü (îo3_tÞ {I<(ønEŠ?œT®fÀx*s­"s¯"sî 8»s±"s³"sî 8¦sµ"s·"sî 8‘s¹"s»"sî 8|s½"s¿"sî +jsÁ"sÃ"sî +XsÅ"sÇ"sî +FsÉ"sË"sî +4sÍ"sÏ"sî +"sÑ"sÓ"sî +sÕ"s×"sî (ï (ð sÙ"(c+,K{U{P{á(˜ (ª (sÛ"(d+{ä(Y*(d*0 ÊÎ {P{U(H, {P{U(¼H(H+9”{P(^,r(j (J"(Q{U{P{á(˜ (ª ( (= (> (ýµ(Y (Z o"{ä(Y*(j þ(Q*(j (J"(Q{P(^-_{U{P{á(˜ (ª ( {P{@8{˜^(= (> (ùµ(Y (Z o"+{P(^-P{U{P{á(˜ (ª ( (= (> (ýµ(Y (Z o"+{ä(Y*0 †Ï {U{P{á(˜ (ª ( (Ùµ(Y (Z (Ao"(= (> (Ÿµ(ýµ(Y (Z (Z o"{ä(Y*0 þÐ (j (J"(Q(T] {U{P{áofmo½j(¤ ( (ëµ(Y (Z (Ao"o•j(e+ {U{P{á(˜ (ª  {×:(r:Ýp {ß:{I( (= (Y°(= (> (ÿ´(ŵo"{ä(Y*0 üÑ (j (J"(Q(T] {U{P{áofmo½j(¤ ( (ëµ(Y (Z (Ao"o•j(e+ {U{P{á(˜ (ª  {×:( (i_(j (J"(Q( µ(#µ(`°(åµ(Ao"{ä(]*0¹Ò (j (J"(Q{U {P {á  {t;(onsy (t (s (•(= (> (|¯ (Ô® oì (%¶(Y (Z o"{ä(Y*0×Ó (j (J"(Q{U {P {á  {t;(onsy (t (s (ß®{P{B8{t;(i(= (> (v¯ (Ô® oì (%¶(Y (Z   o"{ä(Y*0¡Ô (j (J"(Q{U{P{á( {P{B8(i {P{@8{º^(= (> (‚¯(Ô®oì (%¶(Y (Z  o"{ä(Y*0Õ (j (J"(Q{U {P {á  {t;(onsy (t (s {,Y{(Y{-Y(E°(= (> (|¯(Ô®oì (%¶o"(j (J"(Q(~¯(Ô®oì (%¶(Ao"{ä (]*0€Ö (j (J"(Q{á($ {Zo=³{Z{Z(ÿ°($³(= (> (áµ(Y (Z o"{ä(Y*0kÖ {á($ {Zo=³{Z{Z(ÿ°($³(= (> (ßµ(Y (Z o"{ä(Y*0 6(j (J"(Q(t{ä(Y*0 =(j (J"(Q(j (J"(Q(u*0 !(t{ä(Y*0 ((j (J"(Q(u*0rØ {á($ on{Ù:,(!µ+(#µ {v;ofmon(h_,+{P{B8{v;(i,h, (Ûµ+ ( µ(ݵ ,+ {Zo=³{Z{Z(ÿ°(= (> (Y (Z  o"*,(Ö²+(Õ²{Zr:Ýpon{ß:{I( (= {Z{Z(= (V°,+ {Zo=³{Z{Z(ÿ°(= (> (ÿ´(ŵ  þo"*0Ù {á($ on {Ô:,{v;ofm(h_þ+9€,(Ö²+(Õ² {ZrDÝp{ß:{I( {Z{Z(= (> (³(= (V° ,+(ÿ´ (ŵ(Ao"+@,+,(#µ(ãµ+( µ(#µ(åµ(Ao"{ä(]*0XÚ (H ,X (I (q -H(H (H -;(Ê ,2 (Ê (Ê -"-(Ë (j (Eþ(Q*(H 9Ö (I (q 9à (I (q (q :ª (H (H 9š (H (I (q :(H (H -s(Ê ,j(Ê (Ê ,X(Ê (Ê (Ê -A3<(Ë (Ë (j (J"(Q(j (Eþ(Q*sÝ"þ(f+*0 ÔÜ oñ 3(j þ(Q*(],M(ž] oè .riàps¤ (¤(+&+sß"(Y+{ä(Y*{P(r_ r—àp (©](ò (ó (åŠ(¢orŸàp sã"(g+&*0ßÝ (H ,; (I (q -,(H (H -(Ê , (Ê (Ê --Y*(H 9 (I (q 9}(I (q (q -i(H (H ,\(H (I (q -F(H (H -8(Ê ,0(Ê (Ê ,(Ê (Ê (Ê -3Y**0[Þ (îo 3Mté {~<(Òp33{€<(Ê ,"{€< (Ê (Ê - (Ë * * +ú +ö +ò0Xß (îo3Ktã {b<(³ ,3{b< (³ (³ -{c<(Ê - {`< * * +ú +ö +òRsé"(ëþ(h+*0±í (îo@Itß {L< {P{W8{ç(i+,oÆmoçlþ+9Î{P{W8{ç(j+ (ô u`, t`så"{Û(k++,> u`, t`{Ù+ t_{Ø+ìoõ oè þ+,=(U(T"E + ++95{L< {P{W8{ç(j+ (ö (ô u`,W t`{Ý {Ü {Ú   (voÆmoßl,   (x+3 +. t_  {Øsç"(l+ (R Y    08 {`XÑ(µµ(Y (Z  (A o" Y   Y3È{à(»µ(Y (Z  (A o"(W*(îo@Otß(³ 9;(³ (³ :&(Ê 9(Ê (Ê 9(Ê (Ê (Ê :ë{L< (´ {P{B8{E8{P{:9(i,{P(O]($nþ+9{L< (´ (Ë (Ë (j (J"(Q(j (J"(Q{P{@8{Â^(= (> (qµo"{ä(Y*(îo@ˆtß(Ê 9t(Ê (Ê :_{L< {P{B8{E8{P{X9(i9+{L< {N<(Ë (îo3Vtá{X<(îoE!è(zsû£(¤(¥8{X<tã{`<(y(z(îo3°tß{L<oÆm(+  (ë 3N tF!!{·"{P{@8{È^(= (> "(¾´(íµo"8Ù(zsû£(¤(¥8¸{X<té##{~<(Òp@÷þÿÿ#{~<t$${å<%${ê<&${ë<'${ì<(%,(á²+(ß²)&)'({(({(S°""(¾´(íµ{P{@8{È^(= (> o"{ä(Y*(îo@ tß**{L< oÆm(+  (ë @} tF!!{¶!{µ+{P+oÆm--{U;{Z;(þ],,(• .,(G  .o† oµ 3 o÷ oè þþ++9P*{L< *{M</oÆm(+  (ë @ tF!!{¶!{µ+!{·"{P+oÆm--{U;{Z;(þ],,(G   o÷ (m+00(ø 10(ù 2{PoÆm--{U;{Z;1(n+{P+oÆm--{U;{Z;(_^33( 43(ƒ  {U{P{á("{P/(j`55(ú %5(û 65(ü 75(ý 8oÆm--{U;{`;,:oÆmoßl-,së"oÆmoýl99ofmo~j('+o† +oþ /r¯àps¤(¤(+&+(o+::(ÿ ;:( <"o­³o:³)"o¬³)<;(S°=4þ>/(Äq3/t<@@{0=( +?/(ÄqþA2(Ê þ,8þ+9ˆ{P{å8DDsí"oÆm--{U;{a;(N+Csï"=o²³(p+EoÆmoëlF(á²G)G(n oê²?{êE>C8F(}+(ÿ´B%,+ )=A(C/(Äq3D/t<@@{0=HB{U{P{á(˜ (ª H(=(ɵ++6, =(ϵ+C, B=(ǵ+ B=(ŵ{P{H8,8Î{S{KI(B JIJ(n oK þ,8 {P{G8,8Œoþ -8|(°,8n6,+f=o³³KK(,³30Kt‰-LL{øYMM{ÅYo þ, L{øYM+Fsñ"=o²³(p+NF,+NEE,só"(R oé (q++OE,Oþ+9{P{@8{“^([ rÏàp(ô²PP(°(³QQ(°K{P{@8{“^([ r áp(ô²RR(°(³SS(°T{P{@8{“^([ rCáp(ô²UU(°(³VV(³WOo ([ ryáp(ô²XX(°(³YY(°Z{P{@8{ ^(£°[{P{@8{š^(£°\P(Õ²rÑáp[(= (> K(P°&K&(°(«³]R(Õ²rõáp(= W(P°^T^(°(«³_X(Ö²râp{P{@8{ ^{P{@8{š^{P{@8{Ì^\{P{@8{š^(= (> (> (> (> (> K(P°`Z`(°(«³aU(Õ²r-âp(= {P{@8{Ä^(P°bWb(°(«³csõ"(r+ds÷"=o²³(s+e{U{P{á(˜ (ª (foÆmoþl3 1(t++1g{Ui{P{ájijsù"sû"{Psý"g(u+(+(&+hrSâp1 678=>KW]_acdefhsÿ"(g+&*7,+8,3=o­³(= (> h(Ѱ(Y (Z  h o"+oÆmoþl 1(vrSâp2678=>Bs#(g+&*rgâps\ z(îo3.tßkk{L<s ( þ(ß*(j (J"(Qþ(*0¶î -þ+,þ+,þ+,þ+,þ+,þ+,](V (T"E +$þ+t¢ {…(T"3ß+,(ý´*(ÿ´*0 dñ {U{P{ás#{œ(/+(" {U{P{á(" (³ ( ( ( (ß²o ³(B° o­ oµ .(sû£(¤(¥+(= (> (ýµ(Y (Z   o"{P(c (v+ rmâp(= (X° {U{P{á(˜ (ª  ( (oK & (= (> (ÿ´ (ǵ  o" *0 (R(*0Qõ u5-- u6--*t5- {=Y+×t6- {>Y {?Y (,³þ,* +¯0 Sø {P(ó] (  (? {áo s # s#s  (w+(  (  {U{P(˜ (ª ((7¯s#o  (x+ {P(n+ {U{P{á(˜ (ª  ( (€ {ê (} (oK &oè X  (= (>   (†¯(Ô®oì (%¶  o"{ä(Y*0 ˆü u8%-(u9%-'t7% {—I o"(h +(h +(j  (ö (  ( (}°(e!o&"(}°(e!(}°(e!{á{â{ã{ä{å{æ{ç{è{és}! {U{P {á(˜ (ª (  (ör‡âpo!” (ð  (   (    s (D"(Qo&"{à{à  sZ  s *0)r•âp    s#(g+&*0#r•âp s#(g+&*0 Îÿ (}°(e! o&" (}°(e! (}°(e! (}°(e!  (ö( ( (ŠqE+(ŠqE+,E(ör§âp o!”{P{@8{º^(ð  (  ( s + s   (   (   (ñ  ( uL%,+tK%{ªIo"(j (J"(Q (ï9„(j (J"(Q (ä{P{@8{º^ (å( ](í,(Oµ+(Gµ{à{à(¿µ(Ao"+ {à(»µ(Ao"o&"(h (E(Q( ](í{P{@8{º^(= (> (×°o",(eµ+(‘µ(Ao" (ï o&"( ]o"( ](í(ŠqE(Sµ+(Oµ{à{à(¿µ(H"9€{P{@8{º^ (å{P{@8{º^(= (> (×°o",(eµ+(‘µ(Ao"{ä(Y+(j (Qo&"( ( (÷ {ä (]*0 ¹ (}°(e! (}°(e! (}°(e!  o&" uR%,+tQ%{°Io"(j (Uµ{à{à(¿µ(H"(Qo&"(h (F"(L"(Qo&"{ä(]*0² (pŠE (h (h s +(j s + (j s ( ( (®q33(J"(Q(E(Q{ä (Y*(E(Q þ(Q*03 r·âps (y+ s#(z+s¤ (¤þ(¥*0E {Z{Z o9³ o:³o ³ (q -(°+(=°(A°s¹³*²(a{©8(],*(a{ª8þ(]*0  {U {P {á  s#(&+ {U {P {á  s#(&+s#s!#({+(|+( 9™( ('¶Ea˜ XA: {P (R( ,G( ('¶ 33( ( -%(T"3t¡{ƒYEY( ,F  ( ('¶33 ( ( -%(T"3t¡  {ƒYE‹( ,G  ( ('¶ 33 ( ( -%(T"3t¡  {ƒYE¼( ,F  ( ('¶33 ( ( -%(T"3t¡{ƒYEî( ,F( ('¶33( ( -%(T"3t¡{ƒYE ( 9™( ('¶EaÖç1HŒoè o"(³ þ,{ä(]*{ä(Y*( ( -ª(T"3 t¡{ƒYE8€ÿÿÿ{„('¶-@mÿÿÿ{„tÿ-{o[(Yµ @Lÿÿÿ{q[{p[(Oµ(¿µ(Aþo"*( ( :ÿÿÿ(T"@ûþÿÿt¡{ƒYE8Ûþÿÿ{„('¶-@Èþÿÿ{„tÿ-{o[(Yµ @§þÿÿ{q[{p[(Gµ(¿µ(Aþo"*( ( :cþÿÿ(T"@Vþÿÿt¡{ƒYE86þÿÿ{„('¶-@#þÿÿ{„tÿ-{o[(Yµ @þÿÿ{q[{p[(Qµ(¿µ(Aþo"*( ( :¾ýÿÿ(T"@±ýÿÿt¡{ƒYE8‘ýÿÿ{„('¶-@~ýÿÿ{„tÿ-{o[(Yµ @]ýÿÿ{q[{p[(Iµ(¿µ(Aþo"*( ( :ýÿÿ(T"@ ýÿÿt¡{ƒYE8ìüÿÿ{„('¶-@Ùüÿÿ{„tÿ-{o[(Yµ @¸üÿÿ{q[{p[(Aµ(¿µ(Aþo"*{„('¶-@Íúÿÿ{„tÿ-{o[(Yµ @¬úÿÿo (r_(Š:”úÿÿ{q[{p[(Sµ(¿µ(Aþo"*{„('¶-@ÿùÿÿ{„tÿ-{o[(Yµ @Þùÿÿo (r_(Š:Æùÿÿ{q[{p[(Mµ(¿µ(Aþo"* {„('¶-@1ùÿÿ {„tÿ-{o[(Yµ @ùÿÿo (r_(Š:øøÿÿ{q[{p[(Eµ(¿µ(Aþo"* {„('¶-@bøÿÿ {„tÿ-{o[(Yµ @Aøÿÿo (r_(Š:)øÿÿ{q[{p[(Kµ(¿µ(Aþo"*{„('¶-@”÷ÿÿ{„tÿ-{o[(Yµ @s÷ÿÿo (r_(Š:[÷ÿÿ{q[{p[(Cµ(¿µ(Aþo"*( ( :µöÿÿ(³ ,9(³ (³ -'(´ (•{ä(Y*rçâps\ z( ( :Wöÿÿ(Ê 9Köÿÿ(Ê (Ê 96öÿÿ(Ê (Ë (îo@öÿÿ(Ë tÞ{I<(ønEN­hÇ‚áœû´õÿÿ´õÿÿ´õÿÿ´õÿÿ´õÿÿ´õÿÿ´õÿÿ´õÿÿ´õÿÿ8¯õÿÿ{I<t¡{à;,8“õÿÿ(Ê (Ê :‚õÿÿ(T"@uõÿÿt¡{ƒYE8Uõÿÿ{„('¶-@Bõÿÿ{„tÿ-{o[(YµE óôÿÿóôÿÿóôÿÿóôÿÿóôÿÿóôÿÿóôÿÿóôÿÿóôÿÿóôÿÿg8îôÿÿ{q[{p[{o[(Ë (Yµ 3(Uµ+(Wµ(j (¿µ(H"þ(Q*{q[{p[{o[(Ë +œ{I<t¢  {á;E8Côÿÿ(Ê (Ê :2ôÿÿ(T"@%ôÿÿt¡{ƒYE8ôÿÿ{„('¶-@òóÿÿ{„tÿ-{o[(YµE £óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ£óÿÿ.8žóÿÿ{q[{p[{o[(Ë 8«þÿÿ{q[{p[{o[(Ë 8‚þÿÿ{I<t¤!!{ã;E8)óÿÿ(Ê (Ê :óÿÿ(T"@ óÿÿt¡{ƒYE8ëòÿÿ{„('¶-@Øòÿÿ{„tÿ-{o[(YµE ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ‰òÿÿ.8„òÿÿ{q[{p[{o[(Ë 8‘ýÿÿ{q[{p[{o[(Ë 8hýÿÿ{I<t¦""{å;E8òÿÿ(Ê (Ê :þñÿÿ(T"@ññÿÿt¡{ƒYE8Ññÿÿ{„('¶-@¾ñÿÿ{„tÿ-{o[(YµE oñÿÿoñÿÿoñÿÿoñÿÿoñÿÿoñÿÿoñÿÿoñÿÿoñÿÿoñÿÿ.8jñÿÿ{q[{p[{o[(Ë 8wüÿÿ{q[{p[{o[(Ë 8Nüÿÿ{I<t¨##{ç;:þðÿÿ(Ê (Ê :íðÿÿ(T"@àðÿÿt¡{ƒYE8Àðÿÿ{„('¶-@­ðÿÿ{„tÿ-{o[(YµE ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ^ðÿÿ.8Yðÿÿ{q[{p[{o[(Ë 8fûÿÿ{q[{p[{o[(Ë 8=ûÿÿ{I<t£$${â;E8äïÿÿ(Ê (Ê :Óïÿÿ(T"@Æïÿÿt¡{ƒYE8¦ïÿÿ{„('¶-@“ïÿÿ{„tÿ-{o[(YµE DïÿÿDïÿÿDïÿÿDïÿÿDïÿÿDïÿÿDïÿÿDïÿÿDïÿÿDïÿÿ.8?ïÿÿ{q[{p[{o[(Ë 8Lúÿÿ{q[{p[{o[(Ë 8#úÿÿ{I<t¥%%{ä;E8Êîÿÿ(Ê (Ê :¹îÿÿ(T"@¬îÿÿt¡{ƒYE8Œîÿÿ{„('¶-@yîÿÿ{„tÿ-{o[(YµE *îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ*îÿÿ.8%îÿÿ{q[{p[{o[(Ë 82ùÿÿ{q[{p[{o[(Ë 8 ùÿÿ{I<t§&&{æ;E8°íÿÿ(Ê (Ê :Ÿíÿÿ(T"@’íÿÿt¡{ƒYE8ríÿÿ{„('¶-@_íÿÿ{„tÿ-{o[(YµE íÿÿíÿÿíÿÿíÿÿíÿÿíÿÿíÿÿíÿÿíÿÿíÿÿ.8 íÿÿ{q[{p[{o[(Ë 8øÿÿ{q[{p[{o[(Ë 8ï÷ÿÿ{I<t©''{è;:Ÿìÿÿ(Ê (Ê :Žìÿÿ(T"@ìÿÿt¡{ƒYE8aìÿÿ{„('¶-@Nìÿÿ{„tÿ-{o[(YµE ÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿÿëÿÿ.8úëÿÿ{q[{p[{o[(Ë 8÷ÿÿ{q[{p[{o[(Ë 8Þöÿÿ( ( :—ëÿÿ(Ê -N(q 9‚ëÿÿ(((q (q :mëÿÿ)((  *(õ(Ao")(W*(Ê (Ê :+ëÿÿ(q 9ëÿÿ(((q (q : ëÿÿ)(Ë ((  *(j (J"(Q(õ(Ao")(W*( ( :®êÿÿ(Ê 9¢êÿÿ(Ê (Ê :êÿÿ(q 9êÿÿ(((q (q :lêÿÿ)((  *(Ë )(V++(¶,5(j (J"(Q(ѵ(Ao")(W*(}°(e!,(}°(e!-(}°(e!.(×°(Uµ-{à,{à(¿µ(Y (Z (Z (Ao",o&"*(= (> /(Ÿµ*(ýµ.{à(»µ(Y (Z (Z (Z /o"-o&"(j (J"(Q(ѵ(Ao".o&"{ä)(Y*0% {P s##{P(Â_þ(}+*0 ¾ (! -Z{P{U{R(y<(’<(s< Þ0t uù, tù(›<(¤(~+ Þþ+(" (# ($ (% (çso&  {â( {P  {^8(¤ (n {U{P {á s%#s'#(+ {P{µ8 (Œ (Œ (œp(¤ (k (æo{P (ø_(j {P  {B8 {E8{P(k]{P{]8(i,${P{P(n](€+(ù_+þ(Q* &300 „ s)#o³(p+ (Äqþ (Äqþ (Äq3t<{0=( + ,(á²+(ß² (³ þ,+þ {ê(}{U {P{á (" {U {P{á (" {U {P {á   s+# (&+   (S°,+ (,3o­³(= (> (Ѱ(Y (Z o"+ (R,(ϵ(Y (Z 8 -2,(ǵ(Y (Z +a(ŵ(Y (Z +J (• {U {P{á(˜ (ª ((ɵ(Y (Z  oè ,+X,(A+ o",3o­³(= (> (Ѱ(Y (Z o"+ {ä(*†,(]*(Y*0 Á {Q{P{U(EC(+ , (j (â þ(Q*(j {P(r_{P{º9r Fp([ (\ r%ãp(‚+{P {4;( (ðn{£8(Ðo(k (l (Í](`þ(Q*0Ÿ (j (J"(Q{á{P {J8rQãp(n(¤ (¥ ($ {Zo=³{Z{Z(ÿ°($³(= (> (áµ(Y (Z  o"{ä(Y*0p oÆm (« oÆm(+ (ë Eý˸tI {Á,ioÆmom(¢–(sû£(¤(¥($³(= (>  (­µ(Y (Z o"8œ {À($³(= (> Ñ(³µ(Y (Z o"8\tH{¿($³(= (> Ñ(­µ(Y (Z o"8tD  {¯  {¬  {ª  {«  {­ ,(sû£(¤(¥+ (,³E +,! o:³(á²(n oê²+,  ($³+  (ç+ItG{½ ($³(= (> (Ѱ (áµ(Y (Z (Z o"{ä(Y*0 ‘ (î{U{P{á(˜ (ª {PoÆm {U;{Z;(’^( (= (> ( µ(#µ(õµ(Y (Z  o"{ä(Y*0 ¡ (î(j (J"(Q{U{P{á(˜ (ª {PoÆm {U;{Z;(’^( ( µ(#µ(÷µ(Y (Z (Ao"{ä(]*0 Ï {U{P{á(˜ (ª ( {P(^,(= (> (Ÿµ þo"*{P(l] 9¤ (¸ {P{B8{E8{P{¹8(i,+){P{B8{E8{P{º8(i,+){P{B8{E8{P{»8(i,+){P{B8{E8{P{¾8(i,+){P{B8{E8{P{À8(i,+){P{B8{E8{P{¿8(i,+){P{B8{E8{P{Á8(i,+){P{B8{E8{P{Â8(i,%(¸ (= (> (ïþo"* 9Ÿ (¸ {P{B8{E8{P{¼8(i,+){P{B8{E8{P{Ã8(i,:(¸ (= (> (£´!(Û´(©µ þo"* ,l (¸ {P{B8{E8{P{Å8(i,6(¸ (= (> (§´"(Ý´(©µ þo"* ,p   (¸ {P{B8{E8{P{Æ8(i,: (¸ (= (> (©´#(ß´(©µ þo"*{U{P{á(˜ (ª ( rcãp s-#(g+&*0 è s/#{;{;(ƒ+ {U {;{ù:{I {P{á(˜ (ª  s1#(&+ s3#{;{;(„+s5#{;{;(„+ s7#{;{;(„+ {;{þ:(ü(b° {;{ú:  ,  (d +{;{ù:{I {P{B89Í rqãp(ñ , ruãp8· r…ãp(ñ , r‹ãp8ž rãp(ñ , r£ãp8… 09(( (…+(†+ox ob 3 +^ ob 2 o^ Tþ+,! ob 3+ o^ () þ+, +rµãp (Â( + (°(oº   s†º*0 ¾ {F= {H= {I= {E= {G={J=(Ò(* (+ (,  (-  (.  {U{P{á(˜ (¨ (,+ ,+,+  (ü(b°sü¹*0 ¬ {@= {D= {C= {B= {A=¥é(‡+{U{P{á(˜ (ª ( (ˆ+(&s9#(‰+{U{P{á(   (a°sºs/ *0A {F= {E= {G= {I= {H={J=("] (öq*0¨" {@= {D= {C= {B= {A=¥é(‡+ (ˆ+{P(n](](ß+(Š+s;#(‰+{U{P{ás=#(‹+( (a°sºs0 *0'# {?= {@= ,{P(k](}^**0 L% {?= (˜ (1 (2 (3 (› sA#s4 *0(& ,# (} {P(ç (,+()**0Õ* {«]{¬] (*º3.tÒ. {ˆ] {z]{{]{}]sº((º+ r¹ãps\ z{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0’{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0Ì, (ú· {«]{¬] (*º3$tÒ. {ˆ]  {}]sº((º+ råãps\ z{­]{®]{¯]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0 3 {9= {<= {== {;= {>={:={?={P(c`,(5 * (' (š(6  (7  (ü ¥î(Œ+ {PsC# (+(* {\(h (8  {D=þ,(F+(N"(S( ](œ(9 (: (ü· (¦  (:º(±, ( +(ž s; {«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á] (b°s ºs< (5 (= *0sE#þ(Ž+*0;>  (± (> (? {— {™{š{’{–{•{˜ {–  {KY {” {–  {JY{GY   (E°({\(h (8 (F(SsK#(Ž+(+(@ (A sQ#(+{U{P{á sS#sU#(‘+ (ü{P(^,{P{@8{˜^+ {P(^, (= (> +(= (’+  (¥{\ oñ!(ýoK & (ìŽi{P{A8(ö•(= (>  ot¯(ϵ! !o"{ä (Y*0ìC (Ê (Ë (Ë (à+ sW#(“+(‹](B (”+ {PsY#(•+(*  ([  oÆm{P{š8(­](­ (C  (D  (E (F  (G  (H  (I  {U {P{á(˜ (ª  ( {P (ê_ {U {P{á(˜ (ª  ( {U {P{á(˜ (ª  ( {U {P{á(˜ (ª {P (ë_({U {P{á(˜ (ª {P (ê_({U {P{á(˜ (ª {P{~8 (¤ (¥ (n((¦(ß²(°(B° (¯(_¯ {á(§(q -(°+(s¯(Œ°(s¯{\(8 räp  s[# (I(Ü {P{@8räp(ü·(X (a°sº(:º(±(DZ(j r+äp(ü·(X (³(a°sº{\(8 r+äp(F(S(:º(±(j r7äp(ü·(X {P{@8{Ô^(a°sº{\(8 r7äp (N"(S(:º(±(j {PoÆm(ç sJ (K (L (* rUäp(ü·($³!roäp(c !(±(X (M {P{@8{Ì^(a°sº{\(8 rUäp (N"(S(:º(±{P{@8ryäp(ü·(X  (a°sº{\(j (8 ryäp(¼q (Òo(N"(S(:º(±(DZ"o9³(N (O (ð·(C±o¥º (ü##"(P (Q (Q (Q (Q (Q (R (= (¥${\$oñ!(ýoK &&&þ”oS %%oï ,>%oT ((oU ,({U;{Z; (•+Ê ((í+¹'Þ%u )), )oâ &Ü&Ü'&Ži* (= (> ot¯(ϵ+*+o"{ä (Y*BLŽ0ËH o÷² (» ( {P(`(X (Y (²+(b° (=»(š°(=±(–+sæ¯(ñ¯(Ù®oV (ƒ»{S{N(O»(—° (° (ã (…°(,±(0±(4± s³»*ns]#s_#('+þ(—+*nsa#sc#('+þ(˜+*0pJ (îoE räps\ ztá{Y< (± (> (? (W ,((ˆ {“(O!sX (8 (Y +(8 {\(h  {’(N"(S {–  {JY  {GY9ö (³  (   (  (Z  (  o ³(ß²(°(B°{P{@8{˜^(±rmâp(ð·(X (a°sº(>º(±(P (Q (Q o÷²(»({P(`(X (Y (b°(=»(š°(y»{S{N(O»(—°(= (°{P{@8{˜^(ã (…°(,±(?±(0±(4±s³»{\oñ!(&°(= ( ±(ƒ°sí·rmâp(ð· {(X  {”(a°sº(:º(±(P (Q  {˜(X {• {š(R (= (¥+A {˜(X {• {š(P (R {P{@8{˜^(= (¥ (ýoK &{\ oñ! s[ *tâ{^< 8ñüÿÿ0ZK {™(ì{•Ži {P{A8{š(ö•(= (> {–ot¯(ϵ þo"*09M (¨ (\ (] (©{ä(Y*0 ;{U{U;{X;{P{á(˜ (ª {U;{Z;þ(*0 “O (+ (ë EL,{U{P(˜ (ª {U;{Z;þ(*tI {Á,Å{P{@8{˜^*tG {¾,¥+Þ0 FT se#{è(™+ -rÍäp+ (ˆ oÆmom (îoE!1(·hoE +3tæ{m<+ tá{T<+ëtâ{[<+Û( ( ]{ä(¼ho$”( (>^(_ sg# {n=o^ (Ã+ (?^{P(r_(2^(K^{m=  {t={m=   (_ o`   o`  (ˆ+(&(¦(ß²(°(B°{P,' (ˆ oÆm(ç sJ (K (L +(K (*si# sk# (š+(õ(›+sm# (œ+{P(*(   (+sb sc *0óV (îoET(ž+(Ÿ+sd *tâ {\< {_< {]< {^<(e  8eÿÿÿtá-¡{W<{Z< {X<  (%`(ò (f (ó 8 ÿÿÿ0 $Y (g :»(g , (h (g om {P(ç (,+()X(h (¯(i (j (« (c (±(¯sk *{U{P{á(˜ (ª ((¯sk *(l  (g   (' (¯(i (j   sq# ( + sk *0b] u---u/--/rÕäps\ zt-- {2Y {1Y (m +¼t/- {5Y(¡+sn *0^` (îoE +råps\ ztá{Z< +tâ{_< +ítæ{n<  (h (i (® (o (p (q (r so#(š+(­(C  (D  (E (F  (s  (G  (t (I  (¯(i (j ss#(¢+{U{P{á(˜ (ª ((¦{á(§ (¦{á (§(£+(’+,(u (°+(u sn (v (w  (x ! ! (_¯(q -(°+(s¯" o÷² " !  sØ sy *Æ{U;{b;þ- (Ž`+,(›](îoþ**0 a {– {JY {GY oõ²oö²o÷²ræåp( (ô² {œ(&{œ(¦{‘(îo3tâ{\<{_<sz +(z {P(r_sz (   (?   ('   (¦ {U{P {á(˜ (ª  (  {› (q -(°+(=° s{ *0 ?d {<= {9= {;= {9={@= {=={U{P{á(˜ (ª  (¥î(Œ+{P ( ^9Ï{P (k]  ofmo¤j  (|   {)^rúåpo¹º  (} 9†   (} (} :q (~ {®]( ,Q( ( ,?( ( ( -((€ {n]o9³o³ræp(ñ ÞÞÞÞ tÞsu#(š+(­(C (D (E (F (G (H (I (¦(°(ß²(B°('(š  (6 ! (7 {Psw#(+(*"{\(h (8 r$æp"{D=þ,(F+(N"(S#r$æp(ð·!#(:º(±{P{@8{—^(N (O (ð·(C±$$o¥º%(¯&(ü''&%(P (Q (R {P{@8{˜^(= (¥ {\ oñ!(ýoK &{á(§(&(_¯((q -(°+((s¯)(ìŽi*{P{A8&(ö•(= (> +)ot¯(ϵ,*+,o"(ß²((B°--r$æp(8°!{v](Y°.{P{@8(l±/{P{@8{Ä^(= (> +.(͵,+,o"(= (> +/(ϵ,+,o"{ä(Y*cæI ª(j {P(_3+þ(Q*0Ee (T"E **t¢ {…+»0 ag (¶,,{d r2æp( (}°(e!(J"s *(T"E ·Z{U{P{á(˜ (ª ( {d(> r2æp( (}°(e! (F" s *t£{†{‡ (·(‚ (ƒ („ (…  (P"s *t¢  {…{d r2æp( (}°(e! (F"(L" s *0 öh (éŠEtW% {½Io"+{j sy# uÄ, r>æps\ z{d r çp (·(‚ (ƒ („ (…  (¹o&"}doþ }e(q þþ, o "+{ä(Y*02(}°(e!(Z¦(† (»(¾*0!j o‡ -* (ˆ (r (+ *0en }doþ }e  uÄ:Û uÃ:útÅ { < { < o&"rçp(J (É  (Ç  (É (Ç (ò(Ëo&"(Ïo&"(}°(e!{à(»µ (A o"  8ÿÿÿtÄ  {< {< (½*tà  {< {< {< {< þ(Â*nŽi2 r+çps\ z£ù*0µt (¤+ {)< {*< {+<  (¥+:éo&"(}°(e!(}°(e!r…çp(J(É (Ç  (Á] (É (Ç  (ó     s‰ sŠ  {S{H,"     (¿+{à(»µ(Ao"   s‹  oŒ *( (Ž ( (  (g þ, o%"+^o&"oK &(j s{#(¦+ s}#(Ÿ+(Å+{à(»µ(Ao" *0öy s#¥(§+ o oï 9²o‘ (’ (“ s” (• (– (— (• (˜ ,h(™ (Ž ( (š (› (œ ( (ž (Ÿ (ž (  (ž (¡ (¿8Iÿÿÿ8Cÿÿÿ Þu , oâ &Ü&Ü&*ÁÚ0 ©z o&"(^Š3(j +(h   (g þ, (P+,+(^Š3 o "+  oK & o&" (Ýo&"}doþ }e (P"þ(Q*"s…#*"s‰#*0@‚ ( ] o&" oK &(¢ ,0 (£ {<(woEÃs#(¨+ , (}°(e!+(©+ o¤ {<(woEÛÂÀo¥ .+þ, rçps\ z(woE Eërèps\ ztÎ{<(øn3Ü(j (J"(Q(Uµ8ï(j (J"(Q{P(r_{P  (O]($nþ,[{U{P{á(˜ (ª ( {P{@8{˜^(= (>   (ùµ   o"+(Uµ+ItÏ  {< {<{P(Ó_(j (J"(Q(Wµ(©+{à {à(¿µ (A o"     (Ã*tÎ{<(øn38 þÿÿ{<(j (J"(Q(ønE&&&&&&&rièps¤(¤(ª+*r³èps\ zo¥ o¦ . rïèps\ zsƒ#(«+s‡#(¬+( (­+s‹#(¬+( (­+Yo§ Y@¡s#s#(®+(¯+,^{P{@8{º^(= (>  (×°(Y (Z  o"(‘µ(Y (Z (Ao"+ {às¨ (Áµ (A o"+réps¤(¤(+&     (Ã*rúéps¤(¤(ª+*tÌ{<{<(j (J"(Q{U{P{á{t;(o¥ o¦ . r^êps\ zs‘#(«+{P{B8{t;(i {à(€¯(Ô®oì (%¶ (A o"     (Ã*(£ {<tÎ{<(øn@¾úÿÿ{<t¡(£ {<{à;, (© +oª o¤ {< {ä,+ , +    þ(Å*(£ {<tÌ(¢ !!o¥ ,+þ9 úÿÿ{<(£ {<(¢ !{<, (© +oª o¤ {< {U{P{á{t;(on{P{B8{t;(i{ä{P{@8{Â^(= (> (x¯(Ô®oì (%¶s« (¬      þ(Å*0 B„  s“# -+  (©  (»þ(°+*09… (îo3.tÞ {I<(øn3{I<t¡{à; (– **0‹ uÄ9ÞtÄ uÄ9ÊtÄ {< {< {<{<(Ê þ, (Ê þ+,[ (¤+ (¤+{*<(Ä,1{*<(Ä  , (g  (g    þþ++9${< {< {<{< (¤+ (¤+{*<(Ä9Ò(g  (j (J"(Q,>  (® (¯   (® (°  (® (±  o"+ -]{P{@8{Â^(= (>  (×°(Y (Z  o"(qµ(Y (Z (Ao"+ (Y *rœêps\ z(}°(e!(}°(e!9¬  (® (± ('¶`@ÿ (® (± t(.{·[(Õ®o² ,(Ö®o³ (ˆ¯þ+9·{·[(Ö®o³ (ˆ¯3&tA-{[Y{\Y{]Ys´ + rgâps\ z(µ (¶ (·  (j  {à{à(z¯(Ô®oì (%¶(H"(Q8Á,{(® (¯  (® (° (® (± (j (J"(Q o"(Uµ{à{à(¿µ(Ao"+BrâÝp Ósó z(j (Uµ{à{à(¿µ(H"(Q      (» þ(»*0ŠŒ (j (J"(Q{LY(ëµ(Y (Z (Ao"(j (J"(Q( µ(#µ{Z{LYs¹³(åµ(Y (Z (Ao"*0 sŸ#*0[Ž s•#(±+ (¸ s¹ s¡#(²+(‹](B (³+ s¥#(´+&s©#(´+&*0 x rëp(K (Ç (É (Ç (ó (Ès«#(T+,+ s­#(U+,(h +(j (P"þ(Q*0›±(éŠE (j *(h *(j *tW% (îoE{½I o"(j *(j *0j {,< {.< {-< {U;{X; (+(ë E (Ê*(j *(j *0 (Ëþ(Ï*ê{å(Ò^,+{U;|\;(»iþ,+oïl(*0“ , (º _þþ**0Á œ {,< {-< om {U;{^; , , (â {\oó!+{á{â{ã{ä{å{æ{çsÁm{è(Ë {é{ês}!(Í(ð·(n o¸, oçl+,{åoýlofm(Ð^+,(ü·+{U;{X;  (+  (ë Ewvoèl,oül  ofmo~jo† þ+,U{P{U{U;{b;oE (œH  (»   (¼  (&(j (Eþ(Q* (ë E3ºþ(â* tF{µ{º{¹{·{P{U(œH  (½  (»   (¾  (¿  (¼  (À ¥î(Œ+ þ(Û* tE{´{³{U;{a;(üo³³o¯³(¡–o¬³(Á (¸²(= (°(b°sÚº{\o¬³oˆ³ où!{\(j (8 o¯³(N"(S(:º{P{@8(u o¯³(X (a°sº(±(ì(DZ(þoK &{\o¬³oˆ³oõ!uS,HtS  {Ë!(= (> "(ÿ´(ŵ#"#o" !þ(é** tD$${²${­${±%${®&${°'${¬(${¯)${ª*{U;|\;(ºi(€iþ+(,L+,( sû£,(¤,(¥++(îo3+( sû£,(¤,(¥+(-+{å(Ò^(*{Z{Z)((±.(9(îo@~tÞ00{J<10{I<2.{Ú].{Û].{Ü].{Ý].{Þ]12( ( .{à].{á].{â].{ã].{å].{æ]sïº+.+./{]rëp(ñ 4+,+ {S{M,+4þ,+(,/+[/{Ú]/{Û]/{Ü]/{Ý]/{Þ]/{ß]/{à]/{á]/{â]/{ã]/{ä]/{æ]sïº3(- s¯#{U;{a;(µ+(ü+{U;{a;(ü*{Z{Z3{Ú]3{Û]3{Ü]3{Ý]3{Þ]3{ß]3{à]3{á]3{â]3{ã]3{ä]3{å]{P{@8(ñ(X (Y (²+(b°sïºsà (Ä (Å -o;³5-¥!oÆ 66oï ,:6oÇ 88(È 98(É .{\9.oø!(ÿoK &+½7Þ6u ::, :oâ &Ü&Ü7&(: s±#{U;{a;(µ+(ü&+,+ {S{M, %(Á +'(Á (¸²)(= (°{P (`(X (Y (²+(b°sÚº{\5 où!(u 'oг(X )(a°sº(&°(#µ*(Ûµ(Y (Z (ƒ°( ±(±(ì{\5oõ!+,+ {S{M9Š(u %oгr"ëp(c )(±(X (M (³(a°sº(&°(Ѱ(#µ*(ãµ(Y (Z (Z (ƒ°( ±(±(ì;{\5;oõ!+(áuS,ItS  {Ë!)(= (> "(¡µ#"#o"*(æ !þ(é**þ(æ***(j (Eþ(Q*0Hx0Ÿ E •›¡§­³¹¿ÅËÑ×YE|YE5;AGMYEñ÷ý î"YE¶¼ÂÈÎ(YE£*YEfl„(f¸*r.ëpo&  YEsÊ (Ë + rLëpo'  YE(Ð(Ì +(–¸*(z¸*(sû£ (¤ (¶+*(¨¸*(ž¸*(v¸*(¬¸*(x¸*(®¸*(œ¸*(¢¸*(¤¸*(|¸*(¦¸*rfëpo'  E¬·ÂÊÒÚâêòú "YE³¾ÉÔßêõ !,7BMX$YE›@YE !,7BMXc(Ú¸8š(ü¸8(þ¸8„(¹8y(¹8n(¹8c(¹8X(¹8M( ¹8B( ¹87(ú¸8,(¹8!(¹8( ¹8 ("¹8(¹8õ($¹8ê(.¹8ß(0¹8Ô(¹8É(ô¸8¾(&¹8³(ð¸8¨(ö¸8(ø¸8’(è¸8‡(ê¸8|(Ú¸8q(ܸ8f(¹+^(¹+V(¹+N(¹+F(à¸+>(ä¸+6(æ¸+.(î¸+&(ò¸+(¹+(Þ¸+(ì¸+(â¸rˆëprR9po* rR9p(ñ ,+?(î¸(n o9¹,+(ì¸(n o9¹, (c +(ª¸*rÀëpo' (l¸*(˜¸*(š¸*( ¸*(p¸*(r¸*(t¸*rÀëpo' (j¸*(n¸*(f¸*(~¸*(€¸*(‚¸*(ޏ*(„¸*(¸*(†¸*(’¸*(ˆ¸*(”¸*(Џ*(Œ¸*0A£ {S{K(D 3*{P {P{î8  s³# sµ#(µ++ {P {P{î8  s·#(¹+9•(„ {Ã;(… 9{(„ {Ã;(† (Š^,[(… (… -M(Õ („ {Ä; („ {Ç;  s%        (Ð(Ì sÍ *,5(„ {Ç; ( sû£(¤(¥sÍ *sÍ *0¥ {P {P{ï8 s¹#(N+ {P {P{ð8 s»#(N+ {P {P{ñ8 s½#(N+{P {P{ñ8 s¿#sÁ#{P {P{ð8 sÃ#sÅ#{P {P{ï8 sÇ#sÉ#(µ+(µ+(µ+(Ñ (Î (Ï sÐ *0‹© o²³ oÑ oþ 3 (·++ sË#(¸+ ,4 (Ò oÓ oþ þ, (Ò sÍ#(¹++ sÏ#(º+ sÑ#(9+(»+(Ô *01ª {5<(Ñ (Î (Ï (ü(b°sº*0 ¤« , (d + om(¡–{i;{AL (" (n o*,(!±(Á +{i;{AL (  (n o*,(!±(Á +,(´²+(¸²(°sÚº*0 Ƭ om(¡– {P{U(LP {U{P{á(˜ (ª ( o­³ (ã  o;³o°³rÔëp( (= (> (³(P° o;³o°³rÞëp( (= (> (³(P°(Õ (b°sȺ*Þ{g;(Ö þ,sÓ#(× (Ø *sÙ#{g;þ(¼+*0 ­ {P {P{û8  sÛ#(¹+ ,R(„ {Ã;(… ,<(„ {Ã;(† (Š^,(… (… -(Õ + {P {P{ú8  sÝ#(¹+þ{P {P{ú8  sß#  sá#{P {P{û8  sã#  så#(µ+(µ+  €_,+ _þþ_þþ sÙ *0ê¯ {P {P{9 s$(N+ ,+ {«] {¬] {­] {®] {¯] {°] {±] {²] {³] {´] {µ]  {·],+ oº þ {¹] {º] {»] {¼] {¿] {Á] {Â]s º {«]rîëpoÚ ,+ {«]rû³poÚ ,+-{U;|\;{A:!_!þþ9“ {«] {¬] {­] {®] {¯] {°] {±] {²] {³] {´] {µ] {¶] {·] {¸] {¹] {º] {¼] {½] {¾] {¿] {À] {Á] {Â]s º+ (þoK &{\ oõ!*0%@° (± {U;{`; ,Y oßl,O (³ {i;{AL(&E+(ü(²++ (²+(²+(b°     {«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]s º(Ù*0'z¹ {U;{X; {U;{`;,e{P(g`,W (g ,( (g (h (i (f sÛ +4röëp{U;{X;s¤(¤(½++(i  sÛ (Ü (Ý (Þ {P  (¾+(ß (à  (¿+ {P{U;{Z;{U;{X;(_^  (ƒ   (€   ( ( (& (&oçl,+{Psç# (+(*sÁmoÁo   oÓ oþl(Q!sX (8 (Y {P(^,(F+,(R"+(N"{P{P{å8sé#{U;{a;(¹+9Í(„ {Ã;(… 9³(„ {Ã;(† (^9(… (… :(„ {Ä;(„ {Ç;(d   (¨ þþ,(sû£(¤(+&+om (Ü!!(á !(â sã 8,2""(„ {Ç;(sû£(¤(À+8Í{P{P{&9së#{U;{a;(N+,h{P{º9r Fp([ (\ r%ãp(‚+{Pom(  (ðn{£8(Ðo(k (l (Í](`+ #{\(h o¯³#(S(:ºsã (ä $(å %{P{P{æ8sí#''sï#{P{P{å8sñ#''só#{U;{a;(µ+(µ+&sõ#&(:+(((¹ )((¸ *{P{P{æ8s÷#{U;{a;(¹+9x(„ {Ã;(… ,a(„ {Ã;(† (^,A(… (… -3(d  {Pom(`(X (Y  (c sæ + (X sæ ++(ç ,+(è *(Ø--(é .-(ê /-(ë 0-(ì 1sù#1(:+22(¹ 32(¸ 4{P{U3(þ53oº 1 5(†°+(…°6oöl,{P{@8(½±(X (Y +(X 74sû#(u+8 (¦9(í (Ó:o³³(Ô;o¯³ o¬³oˆ³<{U;{`;==,6=>>(³ ??{i;{>L, ?{h;þ+, >(³ ?*=9«=@oßl:œ@(³ ?o­³o=³oþ 9(Á+A?{i;{ALB(CBC(n o*92{P{P{"9s$oýlEEofmFF{g:{p:(N+,(ø·+DD:$( ±G%./0346<G{«]G{¬]G{­]G{®]G{¯]G{°]G{±]G{²]G{³]G{´]G{µ]G{¶]G{·]G{¸]G{¹]G{º]G{»]G{¼]G{½]G{¾]G{¿]G{À]G{Á]8,7(²+(²+(b°s º(Ù*?{i;{ALB(CBC(n o*9Þ$(±G%./0346<G{«]G{¬]G{­]G{®]G{¯]G{°]G{±]G{²]G{³]G{´]G{µ]G{¶]G{·]G{¸]G{¹]G{º]G{»]G{¼]G{½]G{¾]G{¿]G{À]G{Á]8,7(²+(²+(b°s º(Ù*-Aom:;$(±8“?{i;{>L, ?{h;+,+ ?{i;{?L,N?(×Hom(ü·A:;$(±Is$IH(Â+J{\J{«]oô!J+omA:;$(±G?{i;{>L,oýlEEofmo¬jþ+KG{«]G{¬]LL(*º3;LtÒ.MM{ˆ]N?{i;{@LN{{]N{|]Ksº((º+LG{­]G{®]G{¯]G{°]G{±]G{²]G{³]G{´]G{µ]G{¶]G{·]G{¸]G{¹]G{º]G{»]G{¼]G{½]G{¾]G{¿]G{À]G{Á]G{Â]s ºI?{i;{AL(&EÕÕ%./0346<I{«]I{¬]I{­]I{®]I{¯]I{°]I{±]I{²]I{³]I{´]I{µ]I{¶]I{·]I{¸]I{¹]I{º]I{»]I{¼]I{½]I{¾]I{¿]I{À]I{Á]8,7(²+(²+(b°s º(Ù*A(î þþ,'rfìp{U;{X;s¤(¤(+&+{P{U;{a;(c`,HI{°]D(ú·ODO(n o¸þ,$8(ÖP{\<Pþo÷!**I{°]D(ú·ODO(n o¸þ9—{P(h^Q{U{P{á(˜ (ª Q(R{U{P{ás${P(i^(Ã+(S<I?SR8(b°(ÕT{\<Toù!+I(ìJ%./0346<J{«]J{¬]J{­]J{®]J{¯]J{°]J{±]J{²]J{³]J{´]J{µ]J{¶]J{·]J{¸]J{¹]J{º]J{»]J{¼]J{½]J{¾]J{¿]J{À]J{Á])(ü,7(²+(²+(b°s º(Ù*$%),./0346789:; <(Ú*0 $º s%  r;ípo( (K°rSípo) riípo' YE ((˹+&(˹+(ù+(Ź+(ǹ+(ɹrípo' YE (Ù¹+(Ù¹+(Û¹+(ݹ+(ß¹rípo( r¹ípo( rÓípo( ,(±¹+(¯¹rÿípo( ,(Ÿ¹+(¹só¹(<ºsï *Js $þ(Ä+*0Š» oÆm(+ (ë 3+tG {» (= (>  (Ѱo"+(j (J"(QoÆm{U;{X;(é{ä(]*0U7oÆm {U;{Z; {U{P{á(˜ (ª (oÆm(+þ(ë*~(ß{ä(Y*0 “J(îoE(J"þ(Q*{P(² ,+sÁm(ð (J"(ª*®(j (á{U;{X;þ(ï*0-Œ Ñ(³µ(óµ(Y (Z (Z (Ao"*0¼ Ñ(Õ° (Aþo"*0!¼ (= (> Ñ(Ó° þo"*0¼ (#µ(ãµ (Aþo"*0 ¼ (= (> (ßµ þo"*0%¼ (= (> (#µ(Ûµ þo"*0ž½ (ë EðX€³#tI {Àþ(ä*tD {± {­ {¬,(sû£(¤(¥+(ÿ´ (= (R°(ŵ(Aþo"*tE{³o¯³(sû£(¤(+&*tF  {· {¸ o¯³( sû£(¤(+&*(£µ(Aþo"*(sû£(¤(+&*tG  {½ ( µ(#µ (åµ(Aþo"*( sû£(¤(+&*0 Ö 9Å (ñ (ò uY9…(ñ (ò tY 9• (ó (ô (³ þþ,y(ó (ô (ó (õ (ó (ö {Ñ(ó (÷  (~(¤ s ( 84ÿÿÿ9Ð(ó (ô (³ :}(ó (÷ (Ê -(ó (õ {ä(Y*(ó (ô (ó (õ (ó (ö (ó (÷  þ(*(ó (ô (ó (õ (ó (ö (ó (÷  +³*(ñ (ò tX{Ð rîps¤ (¤ (+&*0 WÅ (ë E ?2³ÿ¿ztI {Á {À (åþ(ê*tD {° {­ {¬ {ª,(è+6(= (> (ÿ´(= (R°(ŵ  o"þ(ê*tE  {³ (= (> (ÿ´ (ŵ  o"þ(ê*tF  {¶  {µ {· {P (¼q()`(ø (ù 9§(ó (ô (ó (õ (ó (ö (ó (÷ (j (Ê þ, (³ þ+,rGîp o¯³( s\ z{P(ú (û ('`þ(Q*(J"(ª*(= (> (Ÿµ  o"þ(ê*rîps (ñ+(“”([e(È+o s¤(¤(+&*tH{¿ (= (> Ñ(а  o"þ(ê*tG{¾ {½(= (> (Ѱ( µ(#µ(ݵ(Y (Z (Z o"þ(ê*Rs $þ(Å+*0 -{U;{Z;(«(+þ(ë*0 >aoÆm {U;{Z;oÆm(«oÆm(+þ(ë*v{U;{X;(+þ(é*0§Ç sÆ ,(ü +sý (ü (þ {S{H,s $o-"+ o," {á{â{ã{ä{å{æ{ç{è{éoÿ {ês}!s *0 EÉ {U;{Z; {P(^,{U;|\;(ºi(€iþþ+,(Û s 8Âþþ,{P(Å+(²+,ds$ oölom{P{@8{˜^(ð (  ( (8!s ( (é s +9oölom(«(ð ( (é  ( s ( ( ( {P(,+()s *0 ( ( (ó*01Ì s$(Æ+ (  (  s$(Ç+*0 KÍ {,< {-< {U;{b;,{ä(õs *(  (ñ*0 Ð {S{I,{S{Hþ+, oölþ+, {U;|\;(ºi(€iþþ+,{P(ÿ]+ ,N(ñ (  (  , (  (-!s +(+!s + (+!s ( {U{P{V{S{L( (0*0LÒ {d s$(È+ ( ( s$(É+o"s s *Šo"s$(Ê+(Ë+þ(Ì+*0âÓ (ønEžð±ÆÛ/YDnƒ(øn3rÓîp(ñ ,( ´*(øn3rïîp(ñ ,(&´*(øn3/t¯ ,+ rÓîp(ñ ,{î; (c ( ´*rïp( rïp( s¤ (¤(Í+*t¢ {á;(´*t¤{ã;(´*t¦{å;(´*t¨{ç;(´*t£{â;(´*t¥{ä;(´*t§  {æ;(´*t©  {è;(´*t­  {ì;("´*t¬  {ë;( ´*t®  {í;(´*9wþÿÿ($´*0ëÔ (øn3$t¦ ryïp(ñ ,{å; h(´*(øn3#t¦ r“ïp(ñ ,{å; Ò(´*(øn3#t¦ r«ïp(ñ , {å; Ñ(´*(øn3$t¦rÇïp(ñ ,{å; (´*(øn3%t¦rãïp(ñ ,{å; j(´*(ø*0 ‚ß (îoELb(¯^ ,1(• ( ]{á(˜ (ª ((ã (&´*(±^ ,5(• ( ]{á(˜ (ª (o;³( ((´*(îo @¥té {~<(Òp@n {€<(Ê 9@ {€<(Ê (Ê -(Ë 8Òþÿÿ(¨^,(â 8¦þÿÿ(©^9›( ( ( ( (ú (ú  (,´E4m©å!]™Örÿïp(“”(pe(È+( ( ]s¤ (¤ (Í+* t­-  (,´3¹ t­-  {GZ {GZ`(´* t®- (,´@}ÿÿÿ t®-{HZ{HZ`(´* t¯- (,´@Aÿÿÿ t¯-{IZ{IZ`(´* t°- (,´@ÿÿÿ t°-{JZ{JZ`(´* t±- (,´@Éþÿÿ t±-{KZ{KZ`(´* t²-  (,´@þÿÿ t²-!!{LZ" {LZ##"`(´* t³-$ (,´ @Pþÿÿ t³-%%{MZ&${MZ''&`(´* t´-( (,´ @þÿÿ t´-)){NZ*({NZ++*`(´*roðp(“”(pe(È+( ( ]s¤ (¤ (Í+*(¨^9ýÿÿ(â 8íüÿÿ(¨^9óüÿÿ(â 8Ïüÿÿ(¨^9Õüÿÿ(â 8±üÿÿtÞ,,{J<-,{I<.o9³o³//rÓðp(ñ 0.(ønEBX.(øn3).t¦1/rïðp(ñ ,1{å;g(´*-./0(ù*.t¡{à;22( ´*.t¦10,+ /r ñp(ñ 9…ÿÿÿ1{å;(´*té {~<(Òp@§ {<(³ 9} {<33(³ (³ -M {<-3(´ {€<-{á(˜ (ª (444s$(Î+(*´*(¯^ 9Aúÿÿ(• 8 úÿÿ(¯^ 9'úÿÿ(• 8ñùÿÿ(¯^ 9 úÿÿ(• 8×ùÿÿ0»å {Ä; {Â; {Ã; s$(Ï+ u™,<t™{¾;oÆm{U;{`;(Ð+(,(– +(t˜{½;  (ß²(= (= (S°s$o²³(Ñ+ {@8 (ª±*0 æ {U {P s!$þ(Ò+*Ns#$þ(u+*0s+$þ(Ó+*0Fç ( {P{@8o÷²((œ°(,±(—°(4±(0±(üo÷²( r#ñp( ( (([ (\ (\ (\ (+,(X +{P(`(X (Y (²+(b°(G± {^{^{^{^{!^{"^{#^{$^{%^{&^{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³» þoñ!*0 +è {K= {L= rqps5$(g+&*Zs7$þ(Ô+*0ê (rE¨ÅY‚tN {Z= {\= {]= {[= s9$(Ä+ (Ès;$þ(Õ+*tL{V=( ( (Ý*tM(h {X=(Eþ(Q*tJ{T=( *tK  {U=( *0 4ë {c= {d= {å(Ð^ o‡j,+t{á{â{ã{S{C{ÊM{Ioj( ( {å{æ{ç{è{é{ês}! o‡j-.(?» {\ {ä{g:{p:(ÿ+ ( o‡j-!{\ {ä(oò!(Ö+þ+,!{\ {ä(onjþ( **0$ñ {e= {g= {i= {h= {á{â{ã{ä{]{ÊM{I{_{`{as{ {å{æ{ç{è{é{ês}!þþ{ä((ß²((= (B°(?»{á{å{æ{ç{è{é{ês}!  ( (ÿs  {ÊM{I {R  {±; ( ,( ,rëp+#,(÷+râÝp só zrëp(8   s=$ (I( (Ü {(\(óŽi1d£ï-('¶Y3=t#.{¯[oø³(B(Y (Z (Y (Z s +"(Y (Y s +(Y (Y s ( ( -.,$(:º(±o;³oõ!88—( oü!:7 (ü(b°{S{L-þ+,' (H¥(!sû£(¤(¥+(÷(ü·(X (³(a°sº(:º(±  {«] {¬] {­] {®] {¯] {°] {±] {²] {³] {´] {µ] {¶] {·] {¹] {º] {»] {¼] {½] {¾] {¿] {À] {Á]s ºo;³oõ!+E!!(ƒ ",3  "sA$o  (:º(±o;³oõ!+9¼r/ñp(˜–#{P{@8{P{@8#{P{@8{Ì^(((±(̱(ɱ$#{P{@8{Ì^(`°%(ÿoK &o;³$oø!%sC$ ¥B(×+,þ+,% oî!++{U&{P'{V({S{L)(+!*&'()*sE$  {K=(Ø+*RsI$þo  *0Ïò {P{@8{ž^r9ñp{P{@8{˜^(= (> {P{@8{º^(Y° {P {@8rMñp(ü·{P{@8{˜^ r[ñp(c (±(X (M {P{@8{Â^(a°sº(&°sK$(Ù+(ƒ°( ±(±(DZ*0‚ó (ønE»g,|?‘R¦êÿÐ)("sû£ (¤(Ú+*t¢ {á;(¸*t¤ {ã;(¸*t¦ {å;(¸*t¨{ç;(¸*t£{â;(¸*t¥{ä;(¸*t§{æ;(¸*t©{è;(¸*t¡  {à;( ¸*t®  {í;  Ñ(¸*t¬  {ë;( ¸*t­  {ì;("¸*t¯{î;( ¸*($¸*0]ô oÆm {U;{X; oÆm {U;{`;(Ð+ oÆm {U;{a; oÆm (Ø(é (ê (ë (ì {i;{>L, {h;þ+9¶sQ$(u+ {U{P(,  (˜   (!   (–   ("  (—  (ˆ+(& (¦ o³³ (Ô (Ó{PoÆm(g`oÆmom(ü·(>º(±(ž{«]{¬](*º3CtÒ.{ˆ]{i;{@L{{]{|]{i;{>Lsº((º+{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{¿]{Á]{Â]s º{i;{AL(&EÖÖ¼{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{¿]{Á] (b°s º(P (Q (# ($ s% *(#sû£(¤(Û+*oÆm {P(h^{P(c`,.  (Ö(P (# ($ (& s% *{U{P{á(˜ (ª ( {U{P{ásW${P(i^(Ã+(  (b°(Õ(ì(P (Q (# (' ($ s% *(P (# ($ s% *0{õ  (³ {i;{AL rcñp(ñ 9Ï(&E…*{PoÆm(i^(q þþ,ß{P{@8{P{@8{“^rmñp(<°{P{@8{š^(= (> (c ( ´(? (@ (A («±(( *{PoÆm(i^(q þþ9Yÿÿÿ8uÿÿÿr¿ñp(ñ 9Dÿÿÿ(&E!ÿÿÿ!ÿÿÿ!ÿÿÿ,!ÿÿÿ8ÿÿÿ{PoÆm(i^(q þþ9úþÿÿ8ÿÿÿ{PoÆm(i^(q þþ9Óþÿÿ8ïþÿÿ0úö {ß:{I (`° rDÝp( r"ëp(c (±(X (M (³(a°sº(,? (&°(Ѱ(#µ(ãµ(Y (Z (Z (ƒ°( ±(±+M (&°(Ѱ(а( µ(#µ(åµ(Y (Z (Z (Z (ƒ°( ±(±(ìþ(Ü+*0, s`m {g:{r:þ,*{g:{q:( kE ****(’ (% (k^ {U{P{á(˜ (ª ( o;³o~j(¦{U{P{á  sY$oµj(&+o÷² {å(Ð^  ,+{å(Ñ^  ( {g:{s:{‚:þ,{g:{s:{„:þ+,{P{P{Ñ8(`+,-{PrMñp{P{¤8(¤ (¥ (`þ+, o«jþ+, (Ý+(P (Q +(P o¬j,(P (# ($ s% +ks[$s]$o¶j(Þ+(ß+(à+(* (+ (, ¥H(á+¥I(â+¥J(ã+s% (- (. (/ (@(#^ s_$(ä+se$o¶j(å+(æ+{g:{q:{P{P{ø8sg${g:{p:(:+(¸ (¹ si$(:+  (¹ ! (¸ "{P{B8-{g:{q:( kþ+, (1 þ+#{P{B8{E8{P{l8(i-5{P{P{ù8sk${g:{p:(N+þ+${P{U!(þ%!oº 1 %(†°+(…°&#sm$(u+'"'sw$(u+( ()( k3_t++{˜:,,{Ã:(ckE (y»+&({»+(}»+(»+(»+(y»**(…»þ,s}$o’j(ç++..,{S{E+,o~j(¨ þþ+-{P{P{9{g:{p:(Ž^(– (5+. s$(è+/-/s™$(é+0./sŸ$(ê+1 #)./s«$(‹+22(ë+(ë+31(ì+55(í+(2±4(î+(.±60(t+(*±7{P{P{è8{g:{p:(Ž^:(– ;:;(5+þ,{S{N+9{g:{q:<<( kE `¿i rgâps\ z>{^>{^ >{^>{ ^>{!^>{"^>{#^>{$^>{%^>{&^>{'^>{(^>{)^>{*^>{+^>{,^>{-^>{.^>{/^>{0^((b°s³»8£<?{P(^@{U{P{á(˜ (ª @(A?( kþB({PB,+  ,"+(`(X (Y (²+C{ã,+o~j(¨ þ,(?»+(=»D  A3(š°7(—°46C(b°D(E±>{P{B8{E8{P{!9{?8(iE{P(e`,+EG(=±H>{^>{^>{^>{^G9{P(f`>{#^>{$^>{%^>{&^>{'^>{(^>{)^>{*^>{+^>{,^H>{.^>{/^>{0^>{1^s³»F{P{P{é8s±${g:{p:(¹+JJ92JKK(„ {Ã;(… 9K(„ {Ã;LL(† (Š^MM9õL(… (… :äK(„ {Ä;NM(Õ ONs% PPráñpo' QPrëñpo' RPrípo' YE(M»+(Q»+(O»SQ-Rþ+, s2»+R(V QÑ(2 s2»TOEOYE(»+T(»+T(»Ss3 8àJ,BJUU(„ {Ç;V(%Vsû£W(¤W(¥(»(M»s3 8š*(…»þ9zs³$o’j(ç+,+%{S{E,o~j(¨ þþ+,s2»(»(M»s3 +3(V (2 s2»(»(M»s3 +(»(M»s3 II(4 XI(5 SFsµ$Ys·$ZX``uò.- `uñ.-+Y0(ï++ Z0(ï+*F{^F{^F{^F{^F{ ^F{!^F{"^XF{$^SF{&^F{'^F{(^F{)^F{*^F{+^F{,^F{-^F{.^F{/^F{0^F{1^s³»[*(…»@‘*[{^[{^[{^[{ ^[{!^[{"^X[{$^S[{&^[{'^[{)^[{*^[{+^[{,^[{-^[{.^[{/^[{0^[{1^s³»8 [8<?8Zúÿÿs¹$ošj()+\(»X({P ,!+(`(X (Y (²+(b°](=»D3(š°^(=±H{P(Q`B)){P($'\Bsï¯(ó¯_(Ù®_oV (ƒ»  9X(O»(—°(°{P{@8{˜^(ã ^(…°7HD64]s³»88{^8{^8{^8{^8{^8{ ^8{!^8{"^8{#^8{$^8{%^8{&^8{'^8{(^8{)^&!oº þ8{,^8{-^8{.^8{/^8{0^8{1^s³»>>oñ!o~j(¨ þ,s»$o¶j(ð++,þ( **0ê s`m {g:{t:(ºkE*{U{P{áofmo½j(¤ ( o;³ {å(Ð^  ( (o•js½$(ñ+(ò+(6 (7  (8  (9  {P{@8{Ù^(N  (ó+(A±  (: þþ,0{P{@8{Ù^(N (O (C±(P (Q +(P  (ø·{P{@8{Ö^rõñp(c (±{P{@8{×^rÿñp(c (±(X (M (M (&°(Ѱ(а(а(ÿ´{P{@8{Ú^{P{@8{Ö^{P{@8{×^(= (> (> (]°(ŵ(Y (Z (Z (Z (Z (ƒ°( ±( ±ròp(ü·{P{@8{Ö^rõñp(c (±{P{@8{×^rÿñp(c (±(X (M (M (³(a°sº(Ѱ(а(а(ÿ´{P{@8{Ú^ròp{P{@8{Ö^{P{@8{×^(= (> (> (³(Y°(ŵ(Y (Z (Z (Z (Z (ƒ°(&°( ±(±{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{P{@8(L¹{P{@8{Ø^r+òp{P{@8{Ô^( ´s; (< (= s> (? (@ (ͱ(A (B (†°{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s ºo÷²{U{P{ásÃ$oµj(&+(u {P{@8{Ú^ (P (Q (P  (P (Q (Q  (ë+(ë+(ë+(ë+(š° (t+(*±(—°(í+(2±(0±{P(`(X (Y (b°(=»(E±{^{^{^{^{^{ ^{S{N{"^{#^{$^{%^{&^{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³»þoñ!*0R oC 1G(ô+ (D (E sÅ$(E+ {S{G ( oï!**0 T {±;( (F (Ê (Z¦(³ (G (*+sŒ (ݰ{˜^(H  s}!*0 ( {j= (‰¤(¡£ sí! {á{â{ã{S{C{R({å{æ{ç{è{é{ês}! {ä(( (=»(ÿ ( (ü oú!(I (J (K -(, +"(éssÎ$(õ+oL (, (-  (ü sË$ Þu   ,  oâ &Ü&Ü*ú ~*~‘*0 ¤ {{{U;{X;(*+sŒ (˜ (ª {U;{Z;(oM {U;{X;(+ (ë Eò ž tD {° {­ {¬ {ª,1{z{Z{ZoN {Z{ZoO oP +,{zo;³oN   oг8oQ oR sS (T Ý‚tE  {³ {z o¬³oˆ³oN    o¯³8oQ oR sS (T Þ.sS (T Þ Þ Þ Þ Þ Þ t  Þ*A–— 0 î {U;{X;(+ (ë @»tD {± {¬{ª-{U;|\;(ºi(€iþ+,v{z oˆ³oN {{{Zo=³{Z{Z(ÿ°oM  oг8oQ %( oU ¤oR   Þ Þ Þ t  Þ&*ßà 6€’~’&*(V *:($nþþ*(W *0 (X (Y (Z *:([ }\ *0: (X (Y (Z ( {\ oh ,+ s] *(^ *&s_ *(` *0™,*('¶Ea**(a *"(ó*(b *&sa *(c *0 (^ (_ sa (ô*‚o &s- (ö+(÷+}7*01 o+  ,# (œ (øn3(œ t¤{ã; **01 o+  ,# (œ (øn3(œ t¦{å; **01 o+  ,# (œ (øn3(œ t¡{à; **02 o+  ,$ (œ (øn3(œ t¯{î; **0% o,  , (¸ ofmomj**0E! {7(ø+ ,2 (d {É;(îo3(d {É;tÞ{I< (e **0†" {7(ø+ ,s (d {É;(îo3^(d {É;tã {b<(³ ,@{b< (´ ($n3+ (´ tv (³ (³ -{‚;(< **(f *v{Ê;(g {Ê;(h si *(j **V(j }8}9*v{9of &{8þof *V(j }:};*0v# {;(ò ,f{;(ò Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9prˆ^p( {:( ok **:(í }<*n{<{<(ò X(ó *{=*:( }=*0(þ, ¹y7ž{=(ù+bcXXX **6(n o9 *00$ þ,!u% ,{={=þ(ú+**þþ*®þ,þ,{={=þ(û+**þþ*0$ u% , þo< **^s? €?s? €@*:( }>*~?**(D þ*~@**(D þ*{>*Zr.8psl (ü+om *01.þ, þ,{> {> 3*Y**þ,**:¥&oF *0B% ¥& þ,%¥&þ,{> {> 3*Y**¥&þ,**0þ, (D 3 * **6(n oI *0.% þ,u& ,{> {> þ**þþ*0*.þ,þ,{> {> þ**þþ*0& u& ,oL **{C*{D*{E*{F*{G*{H*{I*{J*{K*{L*{M*{N*{O*0l( }C}D}E}F}G}H}I}J }K }L }M }N }O*{P*{Q*{R*{S*{T*{U*{V*{W*"}T*0D( }P}Q}R}S}T}U}V}W*^sg €Ysg €Z*:( }X*~Y**(l þ*~Z**(l þ*{X*Zr.8psn (ý+oo *01.þ, þ,{X {X 3*Y**þ,**:¥*on *0B' ¥* þ,%¥*þ,{X {X 3*Y**¥*þ,**0þ, (l 3 * **6(n oq *0.' þ,u* ,{X {X þ**þþ*0*.þ,þ,{X {X þ**þþ*0z u* ,ot **{]*{^*{_*{`*{a*²( }]}^}_}`}a*Šþ,þ, (**þ,**:¥,o| *04( ¥, þ,¥,þ, (**¥,þ,**0©Íþ9 ¹y7ž{a , ( +bcXXX ¹y7ž{`od bcXXX ¹y7ž{_(¾+bcXXX ¹y7ž{^ , ( +bcXXX ¹y7ž{]oq²bcXXX **6(n o *0‘) þ9u, ,s{] {] os²,Y{^{^(ñ ,D{_{_(Á+,.{` {` oe ,{a{a(ñ ******þþ*0}þ,nþ,f{]{](u+,Q{^{^(ñ ,<{_{_(\+,'{`{`(e+,{a{a(ñ ******þþ*0( u, ,o‚ **(p *0%+ (Þ (q (1j (n o:jþ*(Ý *"(Þ *(Ý *0, (Þ (q *(r *0H"Œ ,+u¼ , (x ¥|o¡ + o& +rR9pr|8po` *bo &}b}c*0d- {b{;{ü:os ÞGt u‰ ,5rYòp(“”(Ye(È+( s¤ (¤ (¥ š Þþ*GÚol-+{b{;{ü:{cÑot {cXsŒ **Bs” þ(þ+*6(*+sŒ *N(*+sŒ o *0. o~j (*+sŒ o *6ofm(’ *(u *&oŽ *^s— €es— €f*:( }d*~e**(œ þ*~f**(œ þ*{d*Zr.8psv (ÿ+ow *01.þ, þ,{d {d 3*Y**þ,**:¥3ož *0B/ ¥3 þ,%¥3þ,{d {d 3*Y**¥3þ,**0þ, (œ 3 * **6(n o¡ *0./ þ,u3 ,{d {d þ**þþ*0*.þ,þ,{d {d þ**þþ*00 u3 ,o¤ **^s§ €js§ €k*:( }i*~j**(¬ þ*~k**(¬ þ*{i*Zr.8psx (+oy *01.þ, þ,{i {i 3*Y**þ,**:¥5o® *0B1 ¥5 þ,%¥5þ,{i {i 3*Y**¥5þ,**0þ, (¬ 3 * **6(n o± *0.1 þ,u5 ,{i {i þ**þþ*0*.þ,þ,{i {i þ**þþ*02 u5 ,o´ **’(z }n}o}p}q*0 ,{n{o{p{q(˜ (ª þ(*’(z }r}s}t}u*0 ,{r{s{t{u(˜ (ª þ(*({ *.olþ*²(| }v}w}x}y}z*0°3 {ß:{I{v{w{x{y{×:((ü·('± {Ú]{Û]{Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{å]{x{z(`(X (Y (b°sïºsà®*’(} }{}|}}}~*0 ;{Î:{{{|{}{~{Ì:{Æ:((a°sè®*V(L }}€*º{{B8{{E8{€{?8{Á;(i*’(z }}‚}ƒ}„*0 ,{{‚{ƒ{„(˜ (ª þ(*Ò(z }…}†}‡}ˆ}‰}Š*0 .{…{†{‡{ˆ{‰{Šþ(*’(z }‹}Œ}}Ž*0 ,{‹{Œ{{Ž(˜ (ª þ(*V(L }}*º{{B8{{E8{{?8{Á;(i*{‘*{’*{“*{”*{•*{–*{—*{˜*{™*{š*{›*{œ*{*{ž*0t( }‘}’}“}”}•}–}—}˜ }™ }š }› }œ }}ž*^sÚ € sÚ €¡*:( }Ÿ*~ **(ë þ*~¡**(ë þ*0 sí **(ë þ*"s÷ **(ë þ*:sú **(ë þ**s!**(ë þ*s!**(ë þ*"s!**(ë þ*{Ÿ*Zr.8ps~ (+o *0M(Ú }ª}«}¬}­}®}¯}°}± }²*{ª*{«*{¬*{­*{®*{¯*{°*{±*{²*Z(Ú }³}´*{³*{´*Ö(Ú }µ}¶}·}¸}¹}º*{µ*{¶*{·*{¸*{¹*{º*–(Ú }»}¼}½}¾*{»*{¼*{½*{¾*>(Ú }¿*{¿*Z(Ú }À}Á*{À*{Á*:( }Â*2{Â{ª*2{Â{«*2{Â{¬*2{Â{­*2{Â{®*2{Â{¯*2{Â{°*2{Â{±*2{Â{²*:( }Ã*2{Ã{³*2{Ã{´*:( }Ä*2{Ä{µ*2{Ä{¶*2{Ä{·*2{Ä{¸*2{Ä{¹*2{Ä{º*:( }Å*2{Å{»*2{Å{¼*2{Å{½*2{Å{¾*:( }Æ*2{Æ{¿*:( }Ç*2{Ç{À*2{Ç{Á*.s1!€È*( *~È**uRþ*s2!**uSþ*04  uS,+*Zr.8ps€ (+o *(*!*:(*!}Ë*{Ë*:( }Ì*:( }Í*2{Í{Ë*( *s>!**uXþ*s@!**uYþ*06  uY,+*Zr.8ps‚ (+oƒ *:(7!}Ð*{Ð*:(7!}Ñ*{Ñ*:( }Ò*2{Ò{Ð*:( }Ó*2{Ó{Ñ*{Ô*{Õ*V( }Ô}Õ*0Cþ,: ¹y7ž{Õ(+bcXXX ¹y7ž{Ô(+bcXXX **6(n oI!*0F8 þ,7u\ ,+{Ô{Ô(+,{Õ{Õþ(+***þþ*0@þ,1þ,){Ô{Ô(+,{Õ{Õþ( +***þþ*08 u\ , þoL!**( *sU!**u_þ*2sW!**u`þ*09  u`,+*Zr.8ps„ ( +o… *:(N!}Ø*{Ø*²(N!}Ù}Ú}Û}Ü}Ý*{Ù*{Ú*{Û*{Ü*{Ý*:( }Þ*2{Þ{Ø*:( }ß*2{ß{Ù*2{ß{Ú*2{ß{Û*2{ß{Ü*2{ß{Ý*sf!*:( }à*{à*&*Zr.8ps† ( +o‡ *0A: þ,0þ,(&  (y {à {à /* þ**þ,**:¥coj!*0L; ¥c þ,/¥cþ,"&  {à {à /* þ**¥cþ,**0(< þ, &  ¹y7ž{àbcXXX **6(n om!*00= þ,!uc ,&  {à{àþ**þþ*"{à*0,> þ,þ,&  {à{àþ**þþ*0? uc ,oq!**{á*{â*{ã*{ä*{å*{æ*{ç*{è*{é*{ê*0T( }á}â}ã}ä}å}æ}ç}è }é }ê*r(ˆ }ë}ì}í*~{ë{ì{í(,+()*:(‰ }î*0@ (Š (‹ {îs~!*(Œ *"(i*:(Ó }ï*B{ïþo  *:(Ù }ð*0¸{ðoÚ s„!*:( }ñ*0º{ñoŽ s†!*:( }ò*0B {òo sˆ!*V(‘ }ó}ô*0ÇC {ó(i(ƒ]:­r¥òp{;{ù:{I( rÈ:p( {;{ü: ŒÁ ,/u¼ , (x ¥|o¡ +o& +rR9p( r˜óp( (“”([e(È+( {ôs¤ (¤(¥**(Œ *"(i*(Œ *"(i*V(L }õ}ö*º{õ{B8{õ{E8{ö{?8{Á;(i*(Œ *"(i*’(’ }÷}ø}ù}ú*0 -{÷{ø{ù( {úo¼m(2*²(“ }û}ü}ý}þ}ÿ*0 %{û{ü{ý{þ{ÿ(1*’(” }}}}*0 2{{{{{s˜!( +()*’(• }}}}*0 -{{{( {( i(2*²(“ }} } } } *0 %{{ { { { (1*’(” } }}}*0 2{{ {{{sž!( +()*V(– }— }˜ *^{— {˜ þ( +*V(™ }š }› *ª{š {› ( {g:{u:o¸ (+*V(œ } }ž *r{ {ž oÆmþ( +*V(Ÿ }  }¡ *^{  {¡ þ(+*V(¢ }£ }¤ *^{£ {¤ þ(+*V(¥ }¦ }§ *V{¦ {§ (+*’(¨ }}}} *0 #{{{{ (0*r(© }!}"}#*0 ~D {e= {g= {"{]{ÊM{I{"{_{"{`{"{as{  {!,{#{L=þ(+*{#{K=(Ø+*(ª *"(« *(¬ *"(­ *Ò}® }¯ }° }± }² }³ (´ *0ãF {² YE +8—+{8¯{® ¥{oµ }± }² {± oï ,d{± o¶ }¯ {¯ (· (¸ s¹ }° }² {° (º }³ *}° þ}}¯ +}² {± (+}± }² }³ *0‡e {² YE++e{² E + ++++}² {± (+}² }³  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{² E + + +++***"{³ *0 F {® þ}s» *&s½!*r( }*}+},*{**{+*{,*&*Zr.8ps¼ (+o½ *0œH þ9ˆþ9}&  (y {*{*( /*1*(y {+{+ o¾ /*1*(y {,{, o¾²**þ,**:¥‚oÃ!*0˜I ¥‚ þ9x¥‚þ,k&  {*{*( / * 1 *{+{+o¾ /*1*{,{,o¾²**¥‚þ,**0mJ þ,d &  ¹y7ž{,o¿²bcXXX ¹y7ž{+o¿ bcXXX ¹y7ž{* , ( +bcXXX **6(n oÆ!*0mK þ,^u‚ ,R&  {*{*(ñ ,7{+ {+ oÀ ,{,{,oÁ²****þþ*0[L þ,Lþ,D&  {*{*(ñ ,){+{+(+,{,{,þ(+****þþ*0M u‚ , þoÉ!***o &*6(þ oÆ!*:(n oÈ!*V(à }-}.*Z{-{.(?*0Qo &}/sÄ }0sÅ }1sß!s° }2sÆ }3sÙ!}4*0oN {/ {/{)^ ¥Ÿ(‹+{0(+(ë+(š° {/{,^oøº{1(+(+(t+(*± {/{0^oàº{2¥»(L+(ì+(í+(2±{/{/^oκ{3(+(+(î+(.±{^{^{^{^{^{ ^{!^{"^{#^{$^{%^{/{&^  ¥²(v+{4oÚ!(x+(•°{'^{(^{*^{+^ {-^{.^{1^s³»*B{3þoÇ *B{1þoÈ *B{0þoÉ *"{4*0P {1 ¥„þ(+*F{2þ(?*0aQ {0(+ -&{0(&°(ƒ°( ±(±þoÉ * (Õ {0{0oË (±þoÌ *šo &sâ!sÍ }5 ÿÿÿ}6*0 så!þ(v+*0LS {5oÎ (Ï (Ð Þ/t u‰ ,rêóp( rôp( s\ zþ*/Bsë!þ(+*foö²oÜ!o÷²oÛ!*0O,{6Y}6{6+ {5oÑ {5{^sÐ!sÒ sÓ þoÔ **o &*6(þ oÆ!*:(n oÈ!**o &*6,( **&(ñ *0D}7}8}9}:};}<}=}>(³ *0ØT {=YE +8Œ8`8¡{7{5¥ˆ(+¥‰oÕ }<}={<oï 9D{<oÖ }8{8(× }9{8(Ð }:{:oÑ!};{9-+${;{&^ ¥²(v+(Ø þþ,+{;{,^oøº(Ù þþ,+{;{/^oκ(Ú þþ,+{;{0^oàº(Û þþ,+${;{)^ ¥Ÿ(‹+(} þþ,}={;}>*+};}:}9}88¬þÿÿ}={<( +}<}=}>*0‡e {=YE++e{=E + ++++}={<( +}=}> Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{=E + + +++***"{>*0 {7så!*(Ü *:oÛ!{4*0kV sÝ o &}?(Þ sÙ!}@(!+sß }Asý!sÿ!sà }B}C(á }D}E*¾þ{E/ (Ï +sâ {D(ã }D*0?W þ{E/ (Ï +{C -* (ƒ s"{Dþ("+*02( þ{E/ (Ï +( {Bsä þoå *Îþ{E/ (Ï +{@oö²oÜ!þoÞ!*0JY þ{E/ (Ï +{@ oö²oÜ!o÷²oÛ! {1 ¥„þ(+*0>þ{E/ (Ï +{Aoæ {Aomsç þoè *0x\ þ{E/ (Ï + {Aoé sê (ë ,B(ì (í (ñ -/(ì (î (ì (ï {A sç þoð **0W] þ{E/ (Ï +{@ oö²oÜ!o÷²oÛ! {0oÉ {¸], ( }C**0 T^ þ{E/ (Ï +s"(Ù+ {@ oö²oÜ!o÷²oÛ!þoØ!*0D] þ{E/ (Ï +{@ oö²oÜ!o÷²oÛ! {3þoÇ *0D] þ{E/ (Ï +{@ oö²oÜ!o÷²oÛ! {1þoÈ *0E] þ{E/ (Ï +{@ oö²oÜ!o÷²oÛ! {2þ(?*0Y` þ{E/ (Ï +s "s"þ”s"(#+($+(%+ {@oÚ!sñ *vþ{E/ (Ï +{?*vþ{E/ (Ï +{C*V(ò }F}G*0Ôa (ó (ô rµãp(·hoE ŒÁ,4u¼,(x ¥|o¡ +o& +rR9p( rfÁp( Œ’,4u¼,(x ¥|o¡ +o& +rR9p( rW@p( (˜– {F{?{P{@8(F±{^(   (°(=° {^{^{^ ({^{ ^{!^{"^{#^{$^{%^{&^{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³» {G(õ (&+  oñ! **o &*0#b (ó (ô (þ o  bXa*02c (ó (ô (ó (ô (n o , þ**(ø *"{¸]*V(ù }H}I*0 Dd (ú (û {Hs"{I{H{?(;(Y (Y oö!*ò}J}K}L}M}N}O}P(ü *0k{OYE !'+*8¨8˜8Ë8ä8ý8 8 r*ôp(ž¥,(Y +rZôp(ž¥, {L+{K¥•oý }N}O{Noï ,0{Noþ }M}O{M}P*}M+Ã}O{N('+}N}O(×°}P*}O(#µ{J(ãµ}P*}O(#µ{J(Ûµ}P*}O(£µ}P*}O}P*0²e {OYE+8{OE ++6+++++ ++!++++}O{N('+}O}P Þ t   Þ&8Yÿÿÿþ,z*y• 0U{OE ++!++++ +++ *******"{P*0 {J{K{Ls"*(ÿ *"( *( *&( e*0T}Q}R}S}T}U}V}W}X }Y }Z( *0|e {YYE +808ò8E{Q{A¥˜o }X}Y{Xoï 9ò{Xo }R{R ( ( s }S{S(  }T{S(  (í }U{S(  (î }V{S(  (ï }W}Y{V{U{Ts  {Ws  s  }Z*}W}V}U}T}Sþ”}R8þþÿÿ}Y{X((+}X}Y}Z*0‡e {YYE++e{YE + ++++}Y{X((+}Y}Z Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{YE + + +++***"{Z*0e {Qþ”s"*0Ío &}^}\}]}`}_}[ s }a Ès }b s }c(= }d}e}f}g s }h s }i}j{\oû!{S{I,{b(§µo +*0€g ¥¡o oï ,Ko {d(> }d{eX}e{f {e /+ }f+­ Þu , oâ &Ü&Ü&* Wd0›h  Y ?Œ{d (q ,# (q }d{eY}e+Mr‚ôps (­+s2"{]{^()¥(®+{^s¤(¤(¥X X@tÿÿÿ*"{d*0fj {d(q þþ,Or õps ()+ s8"{]{d{^()¥(*+ {^s¤ (¤(¥+*‚o"o"{bþo *0'l o"o"{b s:"þ(++*"{j*0žm {bo >t{b{bo Yo ('¶Y3Mt#. {¯[ où³{\oû! {S{J, ¡†+ îïþþþ, {¯[ ++,{b(§µþo **0tn {\oû!{S{I,[o"{\oû!{P(: (,+(¶ {bo {g-( }g+(l }j**0}p {\oû!{S{I,{\oû!{S{Hþ+,E{\oû!{P{¼9|^(F¥o¢ {b{\oû!(Bþo **B{cþo *2(}°(e!*F{iþo *F{hþo *n{i{à{àþo *‚{h{à{bo þo *V}doþ }e*0? (}°(e! o&"*"{\*"{]*"{`*0!{ao {as o *0_r {a(-+ - o,"+: (Õ {ao (  {a(.+s o! {_X*0 t {bo" {g 9¸ (# ('¶Y@¤ (# t#.{¯[ (# {[,+foø³{\oû!{S{J, ¡†+ îïþ{\oû!{S{J, ¡†+ îïþ(÷³(¶s<"(/++ {a(0+{fs>"{c(1+{gþþs$ *0_* ÿÿÿ3 röp{^s¤ (¤(+&+{io% ,X{io& +°{hþo& *:( }k*B{kþo *:(` }l*0{{loa s0"*:( }m*B{mþo *:(' }n*0{{no( s4"*:() }o*0v {oo* s6"*:(+ }p*>{po *:(, }q*z-{q*{qþ,(§µ**:(- }r*F{rþo/"*¶sA"€tsA"€usA"€vsA"€w*:( }s*~t**(T"þ*s["**(T"þ*s]"**(T"þ*"s_"**(T"þ*~u**(T"þ*sb"**(T"þ*~v**(T"þ*"sd"**(T"þ*~w**(T"þ*{s*Zr.8ps. (2+o/ *0vx þ9j (T"E [ƒÁÅíñ5 *tŸ  ¹y7ž{ (á (à (ß  bXabXom!abcXXX *t  ¹y7ž{‚om!bcXXX *t¡  ¹y7ž {„o)¶bcXXX ¹y7ž {ƒbcXXX * *t¢  ¹y7ž {…oV"bcXXX * *t£  ¹y7ž {‡om!bcXXX ¹y7ž {†oV"bcXXX * **6(n oV"*0Ìy þ9ºu 9«{s {s @”(T"E x¥æ*tŸ tŸ {{(á (à (ß  (á  (à  (ß   3  þ+,   oo!**t  t  {‚ {‚   oo!*t¡t¡{ƒ{ƒ3{„{„þo+¶**t¢t¢{…{…8Žþÿÿt£t£{†{†oX",{‡ {‡   oo!****þþ*0Mz þ9;þ90{s {s @(T"E ,Pˆ¯*tŸ tŸ { {þ(3+*t t {‚{‚oq!*t¡t¡ {ƒ {ƒ3{„ {„þ(4+**t¢ t¢  {… {…8ûþÿÿt£ t£  {† {†oY", {‡ {‡oq!****þþ*0{ u , þoY"**>(A"}*{*>(A"}‚*{‚*Z(A"}ƒ}„*{ƒ*{„*>(A"}…*{…*Z(A"}†}‡*{†*{‡*:( }ˆ*2{ˆ{*:( }‰*2{‰{‚*:( }Š*2{Š{ƒ*2{Š{„*:( }‹*2{‹{…*:( }Œ*2{Œ{†*2{Œ{‡*:(0 }*0"| (1 (2 {s3 s4 *(5 *0X~ (6 (7 (8 (É (9 (8 (Ç {à{àsZ  s{·(: (; s†½*:(< }Ž*:{Žs= *(> *0 (  (? sw"þ(5+*(@ *:(? sæ·*:(+ }*B{þoA *:(B }*0 {oC s}"*:(D }‘*0ƒ {‘oE s"*:(F }’*0'… r.öpsG (6+ s"{’þ(7+*’(- }“}”}•}–*0W† {–oH ÞDt (e°({”sû£ (¤(¥{“{•(H ŸS Þ*D(I *B{.<(éŠþ*(I *B{.<(éŠþ*(I *0a{,< {U;{b;þ*(J *2ioZ*V(K }—}˜*z(Øn{—{˜{¡8(Ðo*(L *2io`*V(M }™}š*z(Ün{™{š{8(Ðo*r(N }›}œ}*0 &{›{œ{(j (J"(Q*’(O }ž}Ÿ} }¡*0 #{ž{Ÿ{ {¡(Q*:(P }¢*:{¢(P"*²}£}¤}¥}¦}§(Q *0´{¦YE + +k+^8ƒ{£(µ o¶ }¥}¦{¥oï ,6{¥o· }¤}¦{¤Ñ((³}§*}¤+½}¦{¥(Á+}¥}¦}§*0‡e {¦YE++e{¦E + ++++}¦{¥(Á+}¦}§ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¦E + + +++***"{§*0 {£s›"*r(R }¨}©}ª*0 @{¨{U{ª{¨{P{©{á(˜ (ª {×:þ(*(S *.{Ú:þ*(S *.o¯kþ*r(R }«}¬}­*0 ;{«{U{¬{«{P{­(˜ (ª {×:þ(*ò(T }®}¯}°}±}²}³}´*0 Ї {´(= (> {¯(Ѱo"{®{¯{°(j (J"(Q{®{¯{°{±{ß:{I(n{²{³(E(u*²(U }µ}¶}·}¸}¹*0 ©ˆ {¹{µ{P{@8{º^(= (> (> (¡µ(Ÿ´(Ù´(©µ(Y (Z (Z {¶o"{µ{¶{·(j (J"(Q(“²{¸( ¶ {¶(Ao"*(V **(W *2rWps\ z(V *.(ønþ*(W *05‰ (øn3!t¡ {à; ,+oZ*rWps\ z(V *2(øn þ*(W *0/Š (øn 3t® {í; io`*rWps\ z(V *.(ønþ*(W *0.‹ (øn3t£ {â; ioZ*rWps\ z(V *.(ønþ*(W *0.Œ (øn3t¥ {ä; io`*rWps\ z(V *.(ønþ*(W *0- (øn3t§ {æ; o^*rWps\ z(V *.(ønþ*(W *0-Ž (øn3t© {è; oc*rWps\ z(V *.(ønþ*(W *01 (øn3t¢ {á; Ò ioZ*rWps\ z(V *.(ønþ*(W *01 (øn3t¤ {ã; Ñ io`*rWps\ z(V *.(ønþ*(W *0+‘ (øn3t¦ {å;o^*rWps\ z(V *.(ønþ*(W *0+’ (øn3t¨ {ç;oc*rWps\ z:(X }º*0'“ (îo3tÞ {º{I<þoY **:(Z }»*01“ (îo3tÞ {»{I<þ(8+*rWps\ z’(\ }¼}½}¾}¿*0 ({¼{½{¾{¿(J"(w*r(N }À}Á}Â*0 &{À{Á{Â(j (J"(Q*Ò(] }Ã}Ä}Å}Æ}Ç}È*0 3{Ã{Ä{Ç{Æ{È{Å(J"(`*0L(^ }É}Ê}Ë}Ì}Í}Î}Ï}Ð }Ñ*0 «” {É{Ê(É (Ç {Ë{Ñ(ò {É{Ê{Ñ(Ì{É{P{Ï(W] {É{Ê{Ì{Ðsá"{Í(9+{É{Ë{ä{Ê{Î(Y*:(_ }Ò*n{Ò{P(iþ(ƒ]*(` *X*(a *&Ñ((³*({ *.olþ*V(L }Ó}Ô*º{Ó{B8{Ó{E8{Ô{?8{Á;(i*(b *.(,³þ*(b *03• (,³3(t‰- {øY {ÅYo þ, {øY **(c *®oë rFöpo ,od (Q²(j²(e **V(f }Õ}Ö*z{Õ{Ö((k (l *V(g }×}Ø*R{×{Ø(*’(z }Ù}Ú}Û}Ü*0 ,{Ú{Ù{Û{Ü(˜ (ª þ(*:(V }Ý*Z{Ý{P(^þ*:(h }Þ*:{Þ(r_*0¼(^ }ß}à}á}â}ã}ä}å}æ }ç }è }é }ê }ë}ì}í}î}ï}ð}ñ}ò}ó}ô}õ*0‹˜ {ß{à{á{â(É (Ç (ö ( ( {á{â{ã{ä{å{æ{ç{è{és}! {ß{à (örPöp{âo!”{ô(É (Ç (ð( ( (}°(e!{ào&"(}°(e!(}°(e! {ß{à(örXöp{âo!”{í(É (Ç (ð  (   (  {ß{à {â{äoÆmoþl{æ{å(v{è,+{é,<{êo­³(= (>  (Ѱ(Y (Z {à o"+{ß{à (j {ß{â{êo­³((J"(Q{ß{P{@8{š^(= (>  {êo¯³(çµ{à o"{ß{P{@8{Ì^(= (>  {êo²³oþ (×°{à o"{ß{à {ó{ß{P{£8{â(J"(d{ß{P{@8{š^(= (>  {êo³³o4³(çµ{à o"{ì(= (>  (ÿ´{ð(ŵ{à o"{êo®³oþ 1n{ß{à {ò{ß{P{µ8{â(J"(d{ì(= (>  (ÿ´{î(ǵ{à o"+{í(= (>  (ÿ´{ï(ǵ{à o"{à (ä{í(= (>   Ñ(³µ{à o"{ß{P{@8{Ä^(= (>  (ÿ´{ñ(ŵ{à o"{êo²³oþ X{êo°³{ÜY(º²þ,+{ç,+X{ë,+{è,+{é,(A+{ô(= (>  (ÿ´{êo¬³o³{ Z{õ(°{ôsp³(˵{à o"{è,<{êo­³(= (>  (Ѱ(Y (Z {à o"+{ß{á{â{á{ä{à{ë s (D"({ào&"{à{àsZ (}°(e!{ào&"{ß{P{@8{Ú^(= (>  {à }d{à oþ }e(ѵ{à(Ao"(}°(e!{ào&"{à{à{ß{P{@8{Ú^sZ (Y½{à{c(i (j s{½o {à o&"(=  {à }d{à oþ }e{ào "{à( ( (÷{à{ô(å{ß{á{ä{à{ã(Y*’(k }ö}÷}ø}ù*0 ó™ {ö{P(?(9Ï{ö{U{ø{ö{P{á(˜ (ª {ö{P(r_( {ö{÷(ör—àp{øo!”{ù(É {ù(Ç (ð ( ( {ö{÷ (j (J"(Q{÷(äsl (m sn *(o sn *r(p }ú}û}ü*0 eœ u²,2t² {ú{û{ü(j (q (J"(Q*t³ {û(r (s (r (t (å*0t(^ }ý}þ}ÿ}}}}} } } } } } } *0 :Ÿ {ý{þ{s#{ÿ{(:+ (u (v {o²³oþ {o°³{ÜY(º²þ,+{,+X{,+{,+{,(A+B{ý{U{{ý{P{á(˜ (ª {((= (> {þ{ o"{,<{o­³(= (> (Ѱ(Y (Z {þo"+{ý{S{I, {+,(ÿ´{ (n oµ+,((§µ(Y (Z {þ(Ao"+{(Ê þ,-{ý{{ä{þ{{(*{ý{þs#(;+{ý{þ{(¤ {{{(*(Œ *"(i*²(w } } } }}*0 L{{ {U{ { {P{ (˜ (ª {((5¯þo  *²(x }}}}}*0 K  {{P{(V] (@ (A {{{{s #s  *r(y }}}*0 )¡ (  (  {{{s #*(w **r(z }}}*0 ?{{U{{{P{{á(˜ (ª ((3¯*0l(^ }}}}}} }!}" }# }$ }% }& }'*0 †£ {{{(É (Ç {{#{${%(‚ ({ (| (} (~ ( (€ {{S{D9µ(}°(e! { o&" (}°(e! {{rföp{{{P{—8{#(B"(·  (‚   (ƒ   („   (… {&u@%,+!{&t?%{{žIo"{{P{@8{˜^(= (> {}d{oþ }e{{{ (ñ( {{P{@8{Ú^(= (> {{P{@8{Ú^(ëµ{o"{{{U;{X;{(ï{{(j {  (Q{o&"{ }d{ oþ }e{{{ä{ (Y(}°(e!{o&"{à{àsZ { o&"(}°(e!{o&"{{P{@8{˜^(= (> {}d{oþ }e{{{!(ñ( {{P{@8{Ú^(= (> {{P{@8{Ú^(ëµ{o"{{!{U;{X;{!(ï{{(h {"s (D"(Q(}°(e!{o&"{à{àsZ (W½8¡(}°(e! { o&" {&u@%,+!{&t?%{{žIo"{{P{@8{˜^(= (>  { }d{ oþ }e{{{!(ñ( {{P{@8{Ú^(= (>  {{P{@8{Ú^(ëµ{ o"{{#{!(ï{{(h {"s (D"(Q(}°(e!{o&" {à {à{{P{@8{˜^sZ (Y½{{c(i (j s{½o {o&"(=  { }d{ oþ }e{o "{ ( ( (÷{(å{{{ä{{'(Y*0T(^ }(})}*}+},}-}.}/ }0 }1*0 ¤ {({){*(É (Ç {+{-{.{/(‚ ({ (| (} (~ ( (€ (}°(e!{)o&"(=  {) }d{) oþ }e{0uF%,(j +*{0tE%  {¤I {) o"(h  {({) {,s (D"(Q(}°(e! {) o&" {à{àsZ {){c(S½(i (j s{½o {)o&"(=  {) }d{) oþ }e{)o "{) ( ( (÷{)(å{({*{ä{){1(Y*’(z }2}3}4}5*0 ,{3{2{4{5(š (ª þ(*’(z }6}7}8}9*0 ,{7{6{8{9(š (ª þ(*:( }:*B{:þo‚ *:(ƒ };*0¦ {;o„ s#*r(… }<}=}>*0³» ('¶Ea(eWŸù¿Ç£Ù>z6¿ewÆ('¶!3*{<(³ þ-{=rçâp(ˆ+*t. {Ÿ[(,³3µ{>(q ,¨{> (q (q -”(  (ýµ*t. {[(,³@nÿÿÿ{>(q 9^ÿÿÿ{> (q (q :Gÿÿÿ(  (ùµ*t.{‘[(,³@ÿÿÿ{>(q 9ÿÿÿ{> (q (q :øþÿÿ(  (éµ*t.{’[(,³@Ðþÿÿ{>(q 9Àþÿÿ{> (q (q :©þÿÿ(  (ëµ*t .{¬[(,³@þÿÿ{>(q 9qþÿÿ{> (q (q :Zþÿÿ(  {«[( ¶*t.{¨[(,³@'þÿÿ{>(q 9þÿÿ{> (q (q :þÿÿ(  {§[(¶*t.  {¦[(,³@Íýÿÿ{>(q 9½ýÿÿ{> (q (q :¦ýÿÿ(   {¥[ {£[  (¶*t.  {ª[(,³@gýÿÿ{>(q 9Wýÿÿ{> (q (q :@ýÿÿ(   {©[( ¶*t.  {™[(,³@ ýÿÿ{>(q 9ýüÿÿ{> (q (q :æüÿÿ(   {˜[  {—[ (õµ*t.{œ[(,³@¨üÿÿ{>(q 9˜üÿÿ{> (q (q :üÿÿ(  {›[ {š[ (÷µ*t.{“[uÕ-9Düÿÿ{“[tÕ-{Z(,³@$üÿÿ{>(q 9üÿÿ{> (q (q :ýûÿÿ(  (¼´(íµ*t.{ [(,³@Ðûÿÿ{>(q 9Àûÿÿ{> (q (q :©ûÿÿ(  (ÿµ*t .{‡[ {ˆ[{†[ {>(‰(ݵ*t .{Š[{>(‰(áµ*t .{Ž[ {[{[ {>(‰(åµ*t .{‹[ {Œ[ {>(‰(ãµ*t.{„[ {…[ {>(‰(Ûµ*t .{‰[{>(‰(ßµ*t&.{´[(,³@oúÿÿ{>(q 9_úÿÿ{> (q (q :Húÿÿ(  (!¶*t(.(Õ®{·[o² 9úÿÿ{·[(Ö®o³ {<(³ þ-{=rtöp(ˆ+*(† *>('¶!þþ*V(‡ }?}@*V{@{?(Ã_*’(z }A}B}C}D*0 ,{B{A{C{D(˜ (ª þ(*r(ˆ }E}F}G*~{E{F{Go‰ (*(b *.(,³þ*’(z }H}I}J}K*0 ,{I{H{J{K(˜ (ª þ(*²(^ }L}M}N}O}P*0 ‚¼ {L{M{N(ör´öp{Oo!”{P(É (Ç (ð ( {P(,³3+{M{P(ã{M{P(å*(Š *0¾ (@l3tB {;( **Ò(z }Q}R}S}T}U}V*0 .{Q{R{S{T{U{Vþ(*(‹ *0F(@lE ***(‹ *.(@lþ*(‹ *.(@lþ*r(Œ }W}X}Y*j{W{X{Y(—*’(Œ }Z}[}\}]*0 %{Z{[{\{](™(—*:( }^*:{^("]*({ *.olþ*0L(Ž }_}`}a}b}c}d}e}f }g*0 Ö¿ ( ( {do;³ (Õ²{cs?#('+o† {f(8°{e{v](P° {`('{b{_{a(š(6 (7 {_(¦(° {d(º{g(8°{v] (X°sþº*(‘ *:(ç sJ *0|}h}i}j}k}l}m}n}o }p }q }r }s }t}u}v(’ *0 š{uYE +8N88c{h{l{i{h{P{j(^{m(¡¥¶o“ }t}u{toï 9è{to” }n{n(• (– }o{n(• (— }p{n(• (˜ }q{n(™ }r{o,${p{k{qsš o› (œ +}s}u{s{rs }v*}s}r}q}p}o}n8ÿÿÿ}u{t(<+}t}u}v*0‡e {uYE++e{uE + ++++}u{t(<+}u}v Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{uE + + +++***"{v*04{h{i{j{k{l{msE#*0¤}w}x}y}z}{}|}}}~ } }€ } }‚ }ƒ}„}…}†}‡}ˆ}‰}Š(’ *0 å{‰YE !'-+08 8ß8Ï8s8?888|{z¥ºož }‚}‰{‚oï 9µ{‚oŸ }~{w{x{y{|{}{~(¢¥¼o  }„}‰{„oï ,0{„o¡ }ƒ}‰{ƒ}Š*}ƒ+Ã}‰{„(=+}„}~8;ÿÿÿ}‰{‚(>+}‚{{¥¾o¢ }…}‰{…oï 92{…o£ }{(¤ }€{€¥ºož }†}‰{†oï 9µ{†oŸ }{w{x{y{|{}{(¢¥¼o  }ˆ}‰{ˆoï ,0{ˆo¡ }‡}‰{‡}Š*}‡+Ã}‰{ˆ(=+}ˆ}8;ÿÿÿ}‰{†(>+}†}€}8¾þÿÿ}‰{…(?+}…}‰}Š*0e {‰YE+8á{‰E  !+!8ƒ8i+R+N+5++++h}‰{ˆ(=+}‰{†(>+}‰{…(?++)}‰{„(=+}‰{‚(>+}‰}Š Þ t   Þ&8ÿÿÿþ,z*Íé 0^{‰E  ++&+!++++ +++********"{Š*0>{w{x{y{z{{{|{}sK#*(¥ **’(z }‹}Œ}}Ž*0 ,{Œ{‹{{Ž(˜ (ª þ(*:(¦ }*V{(§ þo‰ *(¨ *"oÆm*(© *RoÆm(é sJ *ò(O }}‘}’}“}”}•}–*0 ÜÀ {”¥oS oï ,PoT {’oU ,"{{U;{Z;{‘(•+Á{{‘(í+¨ Þu  , oâ &Ü&Ü&{“Ži{•(= (> {–ot¯(ϵo"{{ä(N"(Y*\nV(ª }—}˜*R{—{˜(–*({ *.olþ*V(« }™}š*f{š{™o ((³*({ *.olþ*(¬ *BoÆmoölþ*’(Ê }›}œ}}ž*0€Á {œ{ž(+(ë EAAAAA{,7{ (ˆ {›{P {B8{E8sÁm(iþ***’(­ }Ÿ} }¡}¢*0 1oöl{Ÿ{ {¡{¢{á(¬sV¯*(® **þom*r(¯ }£}¤}¥*0  {£{¤(+ (ë E+tI{Á +tG{¾ +î {¥{DY{FY(`° {¥ (å sJ *(® **þom*V(° }¦}§*j{¦{§(–(¯*(± **(® **þom*(‘ *BX(ç sJ *V(í }¨}©*0Gà {©,={© ($ {¨{j {©(@+þ,{¨o"***’(² }ª}«}¬}­*0 #{ª{«{¬{­(á*V(Ë }®}¯*†{®{¯{U;{X;(ï*(³ *0Ä  (’ (“ s” (— *(´ *2(}°(e!*(µ *0Å {< (wo@êtÎ {< (ønE >Q0dvrÄöps\ zt¢ {á;8vt¤{ã;+dt¦{å;+Vt£{â;i+Ct¥{ä;i+0t§{æ;+t®{í;i+ rÄöps\ z{àsZ *:(- }°*N{°/{°**(¶ *6( (À*:(- }±*N{±/*{±*(¶ *6( (Á*(· *"( *(· *"( *(µ *0?Æ {<(wo3&{<tÌ {< on{àsZ *r÷ps\ zò(¸ }²}³}´}µ}¶}·}¸*0;{²{³{´{µ{<{¶{·{¸þ(»*V(I }¹}º*0F{º{,<{¹(+(ë E**(¹ *&sÁm*0D(í }»}¼}½}¾}¿}À}Á}Â*0 I{»{¼{½{À{–{¿{Â{¾{Á(¦]{¾(A+*0T(Ë }Ã}Ä}Å}Æ}Ç}È}É}Ê }Ë }Ì*0ÄÇ {ÈoU 9°{Æ{Ë(+ (ë 3btG {½ {É{Ç{Ã{Ä{Å{Æ{Ê{Ìs™#sº {É(» (¼ (½ *r^÷pom( rv÷p( {Æs¤ (¤ (+**²(í }Í}Î}Ï}Ð}Ñ*0 6{Í{Î{Ï(j {Ð{Ño¾ (E(Q*ò(¿ }Ò}Ó}Ô}Õ}Ö}×}Ø*0ùÈ (îoEA r®÷ps\ zþþ,{Ò{P(B+(²+ (îo3+,+ s—#(C+ {Ò{Õ{Ô{á{Ô{â{Ô{ã{Ô{ä{Ô{å{Ô{æ{Ô{ç{ÖsÁm{Ô{è(Ë {Ô{é{Ô{ês}!(± (> (? {Ò{Ó{Ô{Õ{Ö{×{Ø s›#{™(Å+*tß{L<oÆm{×oU ,D{Ø{Ö{Ò{Ó{Ôs#sº {Ø(» (¼ (½ **(À *"{,<*:(Á }Ù*0#rÞ÷p{Ù{,<om( s\ z²( }Ú}Û}Ü}Ý}Þ*0 sÉ {-< {Ú{P{,<(à {Ú{Û{Ü{Ý{,<{Þ(Ç{Ý{,<(¦]s£#(_{,<oÄ *:(Å }ß*0CÊ (Æ (Ç (È {ßoU ,+ {ßoU ,*oK &*’( }à}á}â}ã*0JË {à{á{â(Ì{,<oÄ {ãs§#{ã(» (D+(½ *(I *B{.<(éŠþ*(I *B{.<(éŠþ*(L *J{Æ; (Î*(L *J{Æ; €(Î*V(L }ä}å*º{ä{B8{ä{E8{å{?8{Á;(i*:(L }æ*F{æoÉ þ*V(L }ç}è*º{ç{B8{ç{E8{è{?8{Á;(i*V(L }é}ê*º{é{B8{é{E8{ê{?8{Á;(i*V(L }ë}ì*º{ë{B8{ë{E8{ì{?8{Á;(i*V(L }í}î*º{í{B8{í{E8{î{?8{Á;(i*V(L }ï}ð*º{ï{B8{ï{E8{ð{?8{Á;(i*:(L }ñ*F{ñoÉ þ*V(L }ò}ó*º{ò{B8{ò{E8{ó{?8{Á;(i*:(L }ô*F{ôoÉ þ*V(L }õ}ö*º{õ{B8{õ{E8{ö{?8{Á;(i*:(L }÷*F{÷oÉ þ*(Ê *6(ssË *(Ì *:(à sÍ *(Î *&sÍ *V(Ï }ø}ù*0IÎ (Ð (Ñ (Ò (Ó {ø{5<(Ò(+ (, (- (. (*  {6<  -"-+,  (}   oÚl(Ô + (¶ (Ô   - sÕ +W   (¶ {Ioh ,(»h{I{Io!”+{I(c o& sÕ (Ö (×   {ø{ù(ü(b°sü¹sØ *(² *"(ž*:(² }ú*N{ú( (Ÿ*:(² }û*N{û(ž(Ÿ*V(Ù }ü}ý*0#Ð {@= {ü{P(j] (: {ýoýl ofm{g:{s:{‚:þþ,${ü{P{ü{P{Ñ8(ƒ]+,+X ofm{g:{s:{‚:þþ,4{ü{P{B8{E8{ü{P{”8(i+ ofm{g:{s:{…:þþ,4{ü{P{B8{E8{ü{P{•8(i+ ofm{g:{s:{ƒ:þþ,${ü{P{ü{P{Ò8(ƒ]+,+H ofm{g:{s:{…:þþ,${ü{P{ü{P{Ó8(ƒ]+ {ü{P(^,þ+, þ+,þ+{ü(› , sÕ#* s×#*V(L }þ}ÿ*º{þ{B8{þ{E8{ÿ{?8{Á;(i*V(L }}*º{{B8{{E8{{?8{Á;(i*V(L }}*º{{B8{{E8{{?8{Á;(i*:(L }*F{oÉ þ*V(L }}*º{{B8{{E8{{?8{Á;(i*:(L }*F{oÉ þ*:(‘ }*V{X(ç sJ *V(L } } *º{ {B8{ {E8{ {?8{Á;(i*V(L } } *º{ {B8{ {E8{ {?8{Á;(i*V(L } }*º{ {B8{ {E8{{?8{Á;(i*:(L }*F{oÉ þ*V(L }}*º{{B8{{E8{{?8{Á;(i*:(L }*F{oÉ þ*(L *"{Å;*V(L }}*º{{B8{{E8{{?8{Á;(i*V(L }}*0 1{{P{{U{{W{þ(†**0D}}}}}}}}(­ *0ï{YE +8z+m8°8±{{{(ü¥¦o® }}{oï ,0{o¯ }}{}*}+Ã}{(Œ+}}{{(ý¥¦¦*}}*0”e {YE+8o{E ++$+ + +++}{(Œ+}} Þ t   Þ&8wÿÿÿþ,z*[w ê{E +++ +++****"{*0 #{{{{sû#*V(L }} *º{{B8{{E8{ {?8{Á;(i*V(L }!}"*º{!{B8{!{E8{"{?8{Á;(i*(Ú *.þoÛ *(Ü *"(f *r(Ý }#}$}%*0 4{#{${%{#{${%(Ë(Ï*’(Ë }&}'}(})*0 #{&{'{({)(í*V(Þ }*}+*08 (  (? {*{éoß -{+(n þo3³**r(à },}-}.*0ƒÑ {á{â{ã{ä{å{æ{ç{-sÁm{è(Ë {é{ês}! {,{-{U;{X;{.(Å+(±(? *’(á }/}0}1}2*0 !{/{0{1{2(ô*:(â }3*0¹Ô 9± (  (ë E]*tI {Á,î{Á(ñ (ò uY,*tX{Ð {3oã (:!(ä *tG{¾,’{¾(ñ +¡*²(å }4}5}6}7}8*0 7{4{5(öriøp{6o!”{7{8(ð*:(ƒ }9*B{9(ä*:(æ }:*F{:(å*’(ç };}<}=}>*0 {;{<{={>(ú*r(è }?}@}A*0 Õ {Ê;(é {Ê;(g {Ê;(ê {Ê;(h {É; ( ]{?{@{A{á(˜ (ª ({?{@{A (úsë *r(ì }B}C}D*0 {B{C{D{É;(ú*r(í }E}F}G*j{F{G{E(û*²}H}I}J}K}L(­ *0ïÖ {KYE + 8º8Â{I{U;{b;}J}K{J9~{J {I{U;|\;(»i,`(E {H{P{I(g`,oÁo(E++oÁo oõ 1{H{P(`(F++(G++(G+¦*}J}K}L*&}K*¢{KE + +++**"{L*0 {H{Is#$*(î *0&× (ï (ð (ñ (ò  s; *0Œ}M}N}O}P}Q}R}S}T }U }V }W }X }Y}Z}[}\}](ó *0 ~Ù {\YE +828à8G{P¥Çoô }[}\{[oï 9ù{[oõ }Q{Q{Á;}R{Q{Ã;}S{S(… ,.{S († (Š^ ,(… (… - (Õ + ruøps\ z}T{T( ¨oö (H+}U{Rofmo¾j}V{N{M{O{Q(û}W{M{V{Voõ²(e {W(X (Y (b°(„^ ,# (÷ (ø (÷ (ù sú +(? (A sú }X{X(ù }Ys)${Y(I+}Z}\{M{@8{U{V{Zs> (? (@ (ͱ}]*}Z}Y}X}W}V}U}T}S}R}Q8÷ýÿÿ}\{[(J+}[}\}]*0‡e {\YE++e{\E + ++++}\{[(J+}\}] Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{\E + + +++***"{]*0,{M{N{O{Ps+$*Ò(ˆ }^}_}`}a}b}c*0 ,{^{_{`{b{c{a(õ*r(û }d}e}f*0 /> {f(É {f(Ç {d{es1$*ò(^ }g}h}i}j}k}l}m*0 …Û {g{P{m{l(É^ rÏøp(ü (ý {k(K+ {g{h{i{j{g{hs3${ä{m(+{m( *²(þ }n}o}p}q}r*0 ({n{o{p{q{r( *²( }s}t}u}v}w*0 l{g:{t:(ºkþþ,&{s{t{\{v{w( *{s{t{\{u{v{w( *²(ÿ }x}y}z}{}|*0 ({x{y{z{{{|( *’(O }}}~}}€*0 7¼ {}{~{€{( (õ (Ao"*(ø *"{¸]*’( }}‚}ƒ}„*0 .{‚s?${„{{ƒ(;oö!*r( }…}†}‡*r{‡{†{…þ(L+*²(¨ }ˆ}‰}Š}‹}Œ*0 ({ˆ{‰{Š{‹{Œ(0*(ø *J{«]rëp(ñ *’( }}Ž}}*0 .{ŽsG${{{(;oö!*²}‘}’}“}”}•(ü *0 {”YE +!+2+D+y8–8¦8´8µ}”(Ѱ}•*}”(а}•*{‘ofmo³j,)}”(ÿ´{’{“(ɵ}•*+!}”(ÿ´{“(ǵ}•*}”(×°}•*}”(qµ}•*}”}•*&}”*0U{”E ++!+++++++ *******"{•*0 {‘{’{“sK$*0D}–}—}˜}™}š}›}œ}(­ *0ô{œYE +8z+m8µ8¶{–{—{™(ü¥¦o® }›}œ{›oï ,0{›o¯ }š}œ{š}*}š+Ã}œ{›(Œ+}›}œ{–{˜oÆm(ý¥¦¦*}œ}*0”e {œYE+8o{œE ++$+ + +++}œ{›(Œ+}œ} Þ t   Þ&8wÿÿÿþ,z*[w ê{œE +++ +++****"{*0 #{–{—{˜{™sQ$*(Ü *"(f *’(z }ž}Ÿ} }¡*0 ,{Ÿ{ž{ {¡(˜ (ª þ(*r( }¢}£}¤*j{¢{£{¤( *( *02a(¥oÆm {U;{Y;oÆm {U;{Y;þo *0”}¥}¦}§}¨}©}ª}«}¬ }­ }® }¯ }° }±}²}³}´}µ}¶( *0 ùÝ {µYE +8©8q8-8¸{¨{g:{s:{ˆ:(M+¥oà }³}µ{³oï 9V{³oÄ }ª{ªoÆm {U;{`;o³ }«{«{i;{?L,-{¥{P{ªoÆm {U;{a;(c`þ+9È{«{g;¥Ïo }´}µ{´oï 9y{´o }¬{¥{P{¬{@=(^9:{ªoÆm {U;{b;9{¥{P{ªoÆm(c^ -(z (z s  + (  (  (  (  s  }­{­(… }®{­(„ }¯{®{¦(&}°{¥{°{¬{§(œ}±{±(: }²}µ{²{©{¯sš o› }¶*}²}±}°}¯}®}­++}¬8wþÿÿ}µ{´(N+}´+}«}ª8šýÿÿ}µ{³(O+}³}µ}¶*0¥e {µYE+8€{µE ++5++++)}µ{´(N+}µ{³(O+}µ}¶ Þ t   Þ&8fÿÿÿþ,z*lˆ ê{µE +++ +++****"{¶*02{¥{¦{§{¨{©s_$*:(  }·*0 <Þ oÆm om(¢– oÆm {U;{`; ,{·( **V(L }¸}¹*º{¸{B8{¸{E8{¹{?8{Á;(i*V(L }º}»*0 1{º{P{º{U{º{W{»þ(†**V(L }¼}½*º{¼{B8{¼{E8{½{?8{Á;(i*0D}¾}¿}À}Á}Â}Ã}Ä}Å(­ *0{ÄYE +8z+m8Ð8Õ{¾{¿{À(ü¥¦o® }Ã}Ä{Ãoï ,0{Ão¯ }Â}Ä{Â}Å*}Â+Ã}Ä{Ã(Œ+}Ã{Á,@}Ä{¾{P{@8rÙøpr¶Ùp( rÝøp( (À±}Å*+}Ä}Å*0”e {ÄYE+8o{ÄE ++$+ + +++}Ä{Ã(Œ+}Ä}Å Þ t   Þ&8wÿÿÿþ,z*[w ê{ÄE +++ +++****"{Å*0 #{¾{¿{À{Ásm$*V(L }Æ}Ç*º{Æ{B8{Æ{E8{Ç{?8{Á;(i*:(L }È*F{ÈoÉ þ*0\}É}Ê}Ë}Ì}Í}Î}Ï}Ð }Ñ }Ò }Ó(­ *0 ™ß {ÒYE ++u+h8!88I8J{Ë¥¦o® }Ï}Ò{Ïoï ,0{Ïo¯ }Î}Ò{Î}Ó*}Î+Ã}Ò{Ï(Œ+}Ï{É{Ê{É{P {É{P{é8 ss$ su${Ì(µ+(ü¥¦o® }Ñ}Ò{Ñoï ,0{Ño¯ }Ð}Ò{Ð}Ó*}Ð+Ã}Ò{Ñ(Œ+}Ñ}Ò{Í¥¦¦*}Ò}Ó*0¹e {ÒYE+8”{ÒE ++A+*+&+ + ++/+,}Ò{Ñ(Œ++}Ò{Ï(Œ+}Ò}Ó Þ t   Þ&8Rÿÿÿþ,z*€œ 0L{ÒE +++++ +++ ******"{Ó*0+{É{Ê{Ë{Ì{Ísw$*(S *.{Ø:þ*0|}Ô}Õ}Ö}×}Ø}Ù}Ú}Û }Ü }Ý }Þ }ß }à}á}â( *0 ö{áYE +8ª8{8¿{×o’j¥ oÇ }à}á{àoï 9l{àoÈ }Û{×{Û(h_}Ü{Û{Ú:,{×o°jþ+,+{Ú,+,{Õ{å{Ø{Û{ß:{I(n(Ó^}Ý{Ô{U{Ö{Ô{P{Ù{á(˜ (ª {Û{×:(}Þ{×{Û(i_}ß}á{Ü{ß{Û{Ô:{Û{Ø:{Û{Ý:{Þ{Ý{Ûs s }â*}ß}Þ}Ý}Ü}Û8„þÿÿ}á{à(P+}à}á}â*0‡e {áYE++e{áE + ++++}á{à(P+}á}â Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{áE + + +++***"{â*09{Ô{Õ{Ö{×{Ø{Ù{Ús$*V(L }ã}ä*º{ã{B8{ã{E8{ä{?8{Á;(i*Ò}å}æ}ç}è}é}ê( *0ì{éYE +8y+l8­8®{å9|{æ{Ý:¥Çoô }è}é{èoï ,0{èoõ }ç}é{ç}ê*}ç+Ã}é{è(J+}è+}é{æ{Þ:¥ÇÇ*}é}ê*0”e {éYE+8o{éE ++$+ + +++}é{è(J+}é}ê Þ t   Þ&8wÿÿÿþ,z*[w ê{éE +++ +++****"{ê*0 {å{æs‡$*V(L }ë}ì*º{ë{B8{ë{E8{ì{?8{Á;(i*V(L }í}î*º{í{B8{í{E8{î{?8{Á;(i*:(L }ï*F{ïoÉ þ*V(L }ð}ñ*º{ð{B8{ð{E8{ñ{?8{Á;(i*:(L }ò*F{òoÉ þ*:( }ó*:{ó( *0Ü}ô}õ}ö}÷}ø}ù}ú}û }ü }ý }þ }ÿ }}}}}}}}}} } } } } }( *0Âà { YE +828¯8|8{ú¥Õo } } { oï 9ó{ o }û{û( }ü{û( }ý{û( }þ{û( }ÿ{û( }{û( }{û( ( }{ô{P {ô{P{í8 s…${{Þ:(¹+ ,T („ {Ã;(… ,@ („ {Ã;(† (Š^,!(… (… -(Õ (V +5,0(„ {Ç;($sû£ (¤ (¥+}{ü{s‡$(Q+}{ô{P {ô{P{ç8 s${(N+}{ô{P {ô{P{ç8 s$  s‘${ô{P {ô{P{í8 s“$  s•${(µ+(µ+}{ô{(Ñ}{(Î }{(Ï } {þ,+{ü- {ÿþ+} {ø( k3*{ü-"{ô{P{@8(ñ(X (Y +(X } } {{{ý{ ({ös—${o®k(R+{{rëøp(ñ ,{÷o°j+{{{o®kþ{ô{õ{ (ü{ (²+(b°sïº}*} } } }}}}}}}}}}ÿ}þ}ý}ü}û8ýûÿÿ} { (S+} {ù,7} rûøp{ô{P{@8{º^(ð·('±}*+} }*0”e { YE+8o{ E ++$+ + +++} { (S+} } Þ t   Þ&8wÿÿÿþ,z*[w ê{ E +++ +++****"{*0E{ô{õ{ö{÷{ø{ù{ús™$*0¤}}}}}}}} } } } } }}}}}} }!}"( *0ê{!YE +8ž8:8³{¥Õ(T+o } }!{ oï 9`{ o  }{(! ( }{(! (" }{(! ( }{(! ( }{(! ( }{(# }{(! ( ( }{:k{,(Ö²+(Õ²}{{ß:{I}{,+{}{{{(ü{{P{(`(X (Y (²+}}!{{,?{{rDÝp{( {(= (> (³(P°(Á +{{r:Ýp{( (= {(P°(Á {{ÜY{(= (°{(b°sÚº}"*}}}}+}}}}}}}}8ýÿÿ}!{ (U+} }!}"*0‡e {!YE++e{!E + ++++}!{ (U+}!}" Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{!E + + +++***"{"*04{{{{{sŸ$*($ *0Rá ( ( ( ( (" ( ( ( (  - o¯kþ**(% *0Wá ( ( ( ( (" ( ( ( ( {ß:{Is& *:(² }#*0—{«]{¬]{­]{®]{¯]{#{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0T}$}%}&}'}(})}*}+ }, }- }. }/ }0}1}2}3}4}5}6}7}8}9}:};}<}=}>}?}@}A}B }C!}D"}E#}F$}G%}H&}I'}J(}K)}L*}M(' *0- æ {LYE  !'-39?+B8µ8_8{88 8¨8˜8h8í8£ 8¦ {.¥Õo }F}L{Foï 9L{Fo }/{/( }0{/( }1{/( }2{/( }3{/( }4{/( ( }5{0:{5{ß:{I}6r:Ýp{6( }7{2(}8}L{7{8{1{){4{3(ð}M*}8}7}6+}5}4}3}2}1}0}/8¤þÿÿ }L{F(S+}F{.¥Õo }G}L{Goï 9Š{Go }9{9( }:{9( };{9( }<{9( }={9( }>{9( }?{9( ( }@{-,+{=, {:þ+9–{){;{<{>{?{@( o( }I}L{Ioï ,0{Io) }H}L{H}M*}H+Ã}L{I(V+}I+}@}?}>}=}<};}:}98fþÿÿ }L{G(S+}G{+9E{%|æ{${P{¶9oÆm(* }A{%|æ{${P{¹9oÆm(* }B{A- (W+8a{A (+ o (ë @5tF {B- (W+8({B (+ o (ë @òtF{·{·{${P{A8{){${P{@8{š^(ó•o¬³(ß²{${%{&([{${P{@8{š^{${P{@8{š^{${P{@8{š^(= (> (> (> (> (> (= (S° o¬³(ß²(= (= (> (S° r¶Ùp(ð·(X {${P{@8{˜^(a°sº(&°r.8p(çµ (ϵ(ÿ´ (ŵ(Ѱ(ÿ´{){${P{@8{š^(7¯(5¯(†¯ (Ô® oì (%¶(Y (Z (Z (Z (Z (Z (ƒ°( ±(± {${P  {@8 (ì(DZ(Ü++(W++ {B-ð8Íýÿÿo( }K}L{Koï ,0{Ko) }J}L{J}M*}J+à }L{K(V+}K}B}A+{*( k@8{'o°j:(s¥${.(X+}Cs§${C(Y+}D{${P{@8{—^(N {){D(ó+{,(A±}E}L{E}M*{-,+<{${P{${P{ë8{'{g:{p:(Ž^(– (5+,D }L{${P{@8{—^(N {)(O {,(C±}M*+}E}D}C8ž }L{*( k@v{*t{'o¬j9Y{˜:{Ã:(ck@2t+{Á:{@={D={C={?={B={A=(, ,j(- (. ,X(- (. (. -A(, (, -3(/ {${P{F=(^,(/ (0 +{&{${((æq(z (š(6 (7 {,s©${${P{@8(k±¥Ÿ(Z++(W++(W+Ÿ* }L}M*0e {L YE+8õ{LE  !$'*-+-8Š8o8h+N+7+3+++ ++ +c+`+]+Z }L{K(V++B}L{I(V+ }L{G(S++ }L{F(S+ }L}M Þ t   Þ&8ðþÿÿþ,z*áþ 0y{LE  !$+$+5+0+++&+!++++ +++***********"{M*0.h{${%{&{'{({){*{+{,{-{.s«$*V(L }N}O*º{N{B8{N{E8{O{?8{Á;(i*(S *.{Ø:þ*V(1 }P}Q*0O*{à]-D{Q{^{Ú]r ùprR9po` (ü{P('¥sû£ (¤(¥**:(1 }R*0/*{à],$({R('¥sû£ (¤(¥**’(} }S}T}U}V*0 ‚{Î:{S{U{U{S{P{V{á{Ì:{Æ:({S{T{Ó:(ü{S{P(`(X (Y (²+(b°sè®*(¬ *6oÆmoèl*0¬}W}X}Y}Z}[}\}]}^ }_ }` }a }b }c}d}e}f}g}h}i}j}k(2 *0¹{jYE +8m88‚{^¥ ([+o3 }i}j{ioï 9/{io4 }_{_(5 }`{_(6 }a{a{ß:{I}b{W{U{Y{W{P{X{á(˜ (ª {a{×:(}cr:Ýp{a{ß:{I( }d{Z{a(i_}e{d{]{[{e{c(ð}f{e{c(ð·('±}g{b{\(Õ²{d(= {c(P°(Á (´²{c(= (°{W{X{a{Ý:(ü{W{P{`(`(X (Y (²+(b°sÚº}h}j{f{g{h{b{e{cs& s7 }k*}h}g}f}e}d}c}b}a}`}_8Áýÿÿ}j{i(\+}i}j}k*0‡e {jYE++e{jE + ++++}j{i(\+}j}k Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{jE + + +++***"{k*0D{W{X{Y{Z{[{\{]{^s½$*’(z }l}m}n}o*0 ,{m{l{n{o(˜ (ª þ(*r(© }p}q}r*0 {p{q{r( *{s*{t*{u*{v*’( }s}t}u}v*(Œ *"(i*:(8 }w*0 Óì (9 (: (; (< {w{P(r_(îo3@tâ{\<{]<{w{PsÌ$(/+(õ]s= +(z s= (> (?  (’<o”< {w{P{w{U{w{R(w<  (s<  ($   (#   (% ( ] (³ þþ,rùps¤(¤(+&+(Ê þþ,('sû£(¤(+&+{w{P{w{U{w{R (t< s@ (A Þ6tuù, tù(›<(¤(¥Þþ*A}š6{x*{y*{z*{{*’( }x}y}z}{*(B *0 Zï л(d (C (D è%Ð5(E (F (G ,(H (I þoJ *r‡ùps\ z(K *0 -( oL /%¤/oM þoR *0Xo &}}}}|}~{~( }€sà$sN s8 }s· }‚*0)æ { {} sã${€(]+}€*0 .{{}{~{{€(9}€*0 >ð {}{|{~{{{‚se  {€( *Z{}{€( *n{{}{€( *j{}{{€(þ**o &**þ(^+*.þ(_+*V(Q }ƒ}„*V{ƒ{„(3*0º(Ÿ´(Ù´(©µ€…s ”€†r÷ùp(˜–€‡s/ €ˆrúp(ü€‰rúp(ü€Šrqúp(ü€‹rÍúp(ü€Œ(= €(J"(L"€Ž(R"(L"€sÕ$(`+€‘s×$€*0Ññ (îoE^*tß {L< {N< {M< oÆm{U;{b;-*(E  ()`(ù (  *tã{`<(îo@Ç{`<tß {L< {b< {d< {M< {a< {`< {c< oÆm{U;{b;-*(E  (a+ oÁooõ  oè 1 ()`(ù +   (ú (û  ('`(  *{b< {d< {a< {`< {c<    (ú (û  ('`(  *zsý$(R sÿ$sùd(‡`*F(r_(­]*0(ò rûp{¥8(©] (ò (r_(­]*0 ¼ó s4T(´S(‚P (¢ ,s (£ (‡Q39(£ t {(0 {'0 (¼q(¤ (_P(ù *r+ûprSûp( ( s¤(¤(b+*r‹ûpr±ûp( ( s¤(¤(b+*b(>^(_{n=oU *0©ô (îo@›tã {`<(îo@ƒ{`<tß {c<(Ê ,j{c< (Ê (Ê -V{B8{E8{L<{¢9(i,7{L< {d<(Ë {b<{a<sS (T **0Ëõ (îo@½tã {`<(îo@¥{`<tß {c<(Ê 9‰{c< (Ê (Ê ,u(Ê (Ê (Ê -a{B8{E8{L<{–9(i,B{L<{d< (Ë (Ë {b<{a< sU (V **0Zö (îo@Ltã {`<(îo@4{`<tß {c<(Ê 9{c< (Ë (îo@(Ë tá {W<(g 9ä {W<(g (g :Ë(Ê (Ê 9»(Ê (Ê (Ê :¢{L< {X<(h {B8{E8{˜9(i,(>^(_{n=oU þ+,L{L<{d< {X<(h (Ë  {b< {a<   sU (V **0\÷ (îo@Ntã {`<(îo@6{`<tß {c<(Ê 9{c< (Ê (Ê 9(Ê (Ë (îo@ë (Ë tá{W<(g 9Í{W<(g (g :³ (Ê (Ê :£{L<(h {X<{B8{E8{š9(i,(>^(_{n=oU þ+,L{L<{d< (h {X<(Ë  {b< {a<   sU (V **0…ø (îo@wtã {`<(îo@_{`<tß {b<(³ 9C{b< (³ (³ 9,(³ (³ (³ 9 (³ (³ (³ :ü{c<(Ê 9ì{c<(Ê (Ê 9Ó(Ê (Ë (îo@¸(Ë tá{W<(g 9™{W<(g (g :(Ê (Ê -q{B8{E8{L<{’9(i,R{L< (h  (Ë  {d< (´  {X<{a<    sW (X **0…ù (îo@wtã {`<(îo@_{`<tß {b<(³ 9C{b< (³ (³ 9,(³ (³ (³ :{c<(Ê 9{c<(Ë (îo@ë(Ë tá{W<(g 9Ì{W<(g (g :²(Ê (Ê 9¡(Ê (Ê (Ê :‡{B8{E8{L<{ 9(i,h{L<(h  {d< (Ë  (´  {X< (´ {a<   ( ]  (ö_  sW (X **0Ÿú (îo@Štã {`<(îo@r{`<tß {b<(³ 9V{b< (³ (³ 9?(³ (³ (³ 9( (³ (³ (³ :{c<(Ê 9ÿ{c<(Ë (îo@å(Ë tá{W<(g 9Æ{W<(g (g :¬(Ê (Ê 9›(Ê (Ê (Ê :{B8{E8{L<{9(i,b{L< (h  {d< (Ë  (´  {X<(´ {a< (´     sW (X *(ñ$*0bû (îo@Ttã {`<(îo@<{`<tß {b<(³ 9 {b< (³ (³ : {c<(Ê 9ù{c< (Ë (îo@á (Ë tá{W<(g 9Ã{W<(g (g :© (Ê (Ê :™{L<(h {X<{B8{E8{”9(i,(>^(_{n=oU þ+,B{L<(h (´  {X<{d< {a<  sY (Z **0~ü (îo3stã {`<(îo3^{`<tß {c<(Ê -E{B8{E8{L<{¤9(i,&{L< {d< {b<{a< (l **0Ñý (îo@Ãtã {`<(îo@«{`<tß {b<(³ 9{b< (³ (³ :x{c<(Ê ,k{c< (Ê (Ê -W{B8{E8{L<{,9(i,8{L<(´  (Ë {d<{a<sY (Z **"s$%*0  (ì$ ,H([ (\ ([ (] (}°  s% (V (^ (Ê s%(_ *(ó$,7(` (ù (` (ø 8gÿÿÿ(í$9Á(a (b (a (c (a (d (÷$(÷$ ,r  ,j   (e   (e   {— {—(à+  s% {• {•(c+ {–,+ {–s%(_ **(î$,v(a (b (a (c (a (d (÷$,8  (e   s % {• {– {—s%(_ **(ð$9¡(f (g (f (h (f (i (f (j (f (k ( ](ߊ{U;{Z;(¦](Ö_(é$(ñ_(¼]8_ýÿÿ(ò$9'(f (g (f (i (f (h (f (j (f (k {U;{Z;(ë_rÉûp(©](ò (ó rÓûp(ê_(k (l (ê$rïûp(k (l (ê$(é$rüp(k (l (ê$(¿](ð_(r_(­](í_8'üÿÿ(ï$9~(a (b (a (d (a (c (}°  (÷$,;  (e    s %  {•(^  {—s%(_ **(ô$,'($ s%(V (Ê s%(_ *(îoE ¬(îo @1tçs%{w<(d+9{y<{w<{t<{v<{x< {u<Œô,+ r¨9ps‚ zŽi ó!# Y""#26!##£Ö$${*<(÷$¤ó#X##"X3Ê!(e+ s% (f+,\s% (g+%s%%(h+&s%%(i+s%%(j+'%s"%&'s%(_ **( ] ,*(ö$(r_(.P((9³())(• (n](€+,.(}°  s&% (V (^ (Ê s%(_ *rüp(©](ó (ò (ö_(r_(­](ì_8ýøÿÿ*tà**{Q<(®q@Åýÿÿ*{P< *{O<*{R<+*{S< (÷$-*  (e  + s(% {• {– {—s%(_ *tå,,{i<--{,<{U;{b;þ--{,<(Ž`þ+9 ýÿÿ,{k< ,{j< ,{i<-(÷$-*  (e  -{,<{U;{b;þ,*- s*% {• {– {—s%(_ *-{,<-{.<-{-<(éŠ3tW%/(jŠ/{½Isl +(lŠ( ]sl ..(m .(n +sÁm0 +0s,% {• {–0 {—(Ë s%(_ *Ž(Èp(¤ (k (æo(\ŠoXa*0Š (çŠsVa s0%(k+oo (ø$(p (Co {—8oZa(Êp(¤ (k (æo (ªq(lŠ(Ôo(ªq(lŠ(Ôo*0 J rüp{¦8(ª] (ò (ó sÁm (}°(}°r%üp{¦8(¨](ò (ó r)üp{¦8(¨]  (ò  (šq (Îp(¤ (k (l (æo  (Ôn{¢8(Ðo {¥8(€Š(•Š(ß] (çŠsVa(Þn(oo(Èp(¤ (k (æo(\ŠoXa(ao(q (r (ôn{¥8(Ðo(\ŠoXa(p (Co{¥8oZa(Êp(¤ (k (æo (Èp(¤ (k (æo(Êp(¤ (k (æo(ªq(lŠ(Ôo(ªq(lŠ(Ôo(ªq(lŠ(Ôo(ªq(lŠ(Ôo {¥8{¥8(`(ôn{¥8(Ðo(``(ãŠ(ön{¦8(Ðo (ªq(lŠ(Ôo(¼]*0 œ  (e {• {— r/üp{š8(ª](ò (ó r5üp(ª](ò roäp(ê_(C](ª]  (ò   sÁm sÁm sÁm s.%(l+oõ XsZ sZ (m+() () (n+sZ sZ (m+() () (n+{”   ss ot (u (v (w  (Þn{š8(Ðo(â](Êp(¤ (k (æo (ön oÆm{U;{Z;(Ðo(â](Æp(¤ (Þn{š8(Ðo(k (l (æo(ªq(lŠ(Ôo(ªq(lŠ(Ôo(ªq(lŠ(Ôo(ªq(lŠ(Ôo(Êp(¤ (k (æo(Æp(¤ (Ôn{¢8(Ðo(k (l (æo(ªq(lŠ(Ôo(ªq(lŠ(Ôos6%(ù${–9«(Êp(¤ (k (æo (Þn{š8(Ðo(â] (ön oÆm{U;{Z;(Ðo(â](ªq(lŠ(Ôo(ªq(lŠ(Ôo(ªq(lŠ(Ôoox o¾ (ú$+ (Þn{š8(Ðo(â](ù$   sy sz ({ *0 t   (õ$ ,Y(` (ø (` (ù ( ](}°(}°(÷$-* (û$**:(| }“*>{“(æ$*(} **{”*{•*{–*{—*’( }”}•}–}—*Ò(~ }˜}™}š}›}œ}*0 ã ( (€ ( (‚ {› {oo (Þn{›{˜{š8(Ðo(â](jŠ{›{œ(â](Æp(¤ (Þn{›{˜{š8(Ðo(k (l {›(æo{(Êp(¤ (k {›(æo(ªq(lŠ{›(Ôo(ªq{›(Ôo(ªq(lŠ{›(Ôo{(Êp(¤ (k {›(æo{š(Èp(¤ (k {›(æo(ªq(lŠ{›(Ôo{(Êp(¤ (k {›(æo(Æp(¤ {™{šþþ(Ôn{›{˜{¢8(Ðo(k (l {›(æo(ªq(lŠ{›(Ôosƒ *r(~ }ž}Ÿ} *0 ¤ { {”ot (u (v (w {Ÿ{”ot (u (v (w (ªq(lŠ{ž(Ôo(ªq(lŠ{ž(Ôo (ªq(lŠ{ž(Ôosƒ *’(~ }¡}¢}£}¤*0 ] {¤{”ot (u (v (w {¡{£( ](ÌŠ(tq{£{¢(Ý] sƒ *Ò(~ }¥}¦}§}¨}©}ª*0 – ( (‚ {ª{”ot (u (v (w {¥(÷b{¨(U_{§{©oo (Þn{§{¥{š8(Ðo(â] (ªq(lŠ{§(Ôo{©(Êp(¤ (k {§(æo{§{¦oo (Þn{§{¥{š8(Ðo(â](ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôo{©(Êp(¤ (k {§(æo{§{¦oo (Þn{§{¥{š8(Ðo(â]{¨{¦(Èp(¤ (k {§(æo(ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôo{©(Êp(¤ (k {§(æo(Æp(¤ (Ôn{§{¥{¢8(Ðo(k (l {§(æo(ªq(lŠ{§(Ôo(ªq(lŠ{§(Ôosƒ *r(~ }«}¬}­*0 b(ôn{­{«{¥8(Ðo{¬(Èp(¤ (k {­(æo{¬(Èp(¤ (k {­(æosƒ *(„ *B{)<(g þ*(… *&þþ*(† **þ(o+*(‡ *"{•*(ˆ *"{—*(‰ *"{–*:(Š }®*0B {)< {+< {”{®ot (u  (›o(v (w s‹ *:(‡ }¯*0 (ªq(lŠ{¯(Ôo*:(‡ }°*0 (ªq(lŠ{°(Ôo*0D(~ }±}²}³}´}µ}¶}·}¸*0 à s%{³(p+{¸(q+(r+ (Œ ( (Ž {´{·{µ(s+{¶{²(¡](Ê þ,(ôn{¶{±{¥8(Ðo+{¶s%(t+ (Ê þ,(Ôn{¶{±{¢8(Ðo+{¶s % (t+sƒ *:(V }¹*0N{¹(O]($nþ,3{¹{B8{¹{E8{¹(k]{¹{þ8(i**²(~ }º}»}¼}½}¾*0 Ï ( (€ ( (‚ {½ {¾oo (Þn{½{º{š8(Ðo(â](jŠ{½{¼(ã](Æp(¤ (Þn{½{º{š8(Ðo(k (l {½(æo{¾(Êp(¤ (k {½(æo(ªq(lŠ{½(Ôo(ªq{½(Ôo(ªq(lŠ{½(Ôo{¾(Êp(¤ (k {½(æo{»(Èp(¤ (k {½(æo(ªq(lŠ{½(Ôo{¾(Êp(¤ (k {½(æo(Æp(¤ (Ôn{½{º{¢8(Ðo(k (l {½(æo(ªq(lŠ{½(Ôosƒ *’(~ }¿}À}Á}Â*0 I {Â{”ot (u {¿(ªq{À{Á(Ôo(v (w sƒ *r(~ }Ã}Ä}Å*0H {Å{”ot (u (v (w {Ä{Ãs (Þo sƒ *Ò(~ }Æ}Ç}È}É}Ê}Ë*0 ­ {Ç{”ot (u (v (w {É{Ë{È(â](ªq{Ê{Æ(Ôo{Æ{Ë(ön{Æ{ËoÆm{U;{Z;(Ðo(â](ªq(lŠ{Æ(Ôo sƒ *(` *X*0\}Ì}Í}Î}Ï}Ð}Ñ}Ò}Ó }Ô }Õ }Ö(‘ *0 q{ÕYE ++V8ß8Ï8(8){Ñ,9}Õ(Þn(oo{Ì{Ò{Í(ø$(ao}Ö*+{Î¥ýo¶ }Ô}Õ{Ôoï ,a{Ôo· }Ó}Õ{Ó(Þn(oo{Ì{Ò{Ð{Óoo (ø$(ao}Ö*}Ó+’}Õ{Ô(Á+}Ô}Õ{Ï(Þn(oo{Ì{Ò{Í(ø$(ao}Ö*}Õ}Ö*0že {ÕYE+8y{ÕE ++*+&+ + +++}Õ{Ô(Á++}Õ}Ö Þ t   Þ&8mÿÿÿþ,z*e 0C{ÕE ++++ +++*****"{Ö*05{Ì{Í{Î{Ï{Ð{Ñ{Òs0%*0D(’ }×}Ø}Ù}Ú}Û}Ü}Ý}Þ*09{×{Ø{Ù{Ú{Û{Ü{Ý{Þ(ù$**zrEüpsê (,+oì &s\ z0D sd% uý,tý {“ ( *tþ o¯+¥ÿ{” þ(u+*>(€ þ(v+*0j (›] (îo3Itã {c<(Ê -){b< {a< {`< (ß+s• *s• *s• *0$! {U;{Z;(_ (– o— þ*0>(|i()i(hi( i( (Vi($‰(æj(=i*r{Òsh%(‹](B ow+*0–# {U;|\;(ºi(€iþ {U;|\;(¹i (Xi  (n oai {U;{Z;( ^{U;{`;þ{U;{b;þ,+,+,+,**0)$ {U;{`;þ {U;|\;(»i ,**~ž*~Ÿ*¢oµ oÆmomo† 3 o™ þþ**Žr[üps·%(x+rküps¹%(y+*z{ñr‡üpsÇ%(z+(¦]*6sÑ%*04' (B%(š s› (œ ({+ (B%( (|+*Š(…s(€s(}+(~+(‚s(¶o*0* r—üps×%(+ r·üpsÙ%(x+ r×üpsÛ%(€+ om {U;{X;om(  (? (ô](¦  (J  {þ(ˆ+ sÝ%{ÿ(+ (ß+  sß%  (‚+(‘]  {ÿoÓ X(I%(»h o!”oöl (ž (>%*0#+ o^ (‹]sá%(ƒ+(„+*0 ñ7 (Ò& (Ÿ (  (¡  (¥&(¢ (£ (¤ (¥   (…+   (K%    s &  sã%(å%(†+ (ùb (¦ (V_ ÞCtuó,-tó(¯%(–sû£(¤(¥ Þþ*«¬C( *s§ **u þ*s¨ **u þ*09  u ,+*Zr.8ps© (‡+oª *0»= þ9§þ9œ  u ,+   u ,+ 3ru ,3t  t  (y {«  {« þo¬ *t t (y {­  {­    þ(ˆ+*Y**þ,**B¥wþo® *0¾> ¥w þ9ž¥wþ9Ž  u ,+   u ,+ 3du ,-t  t  {« {« þo¬ *t t {­  {­    þ(ˆ+*Y**¥wþ,**0a? þ,X u ,&t   ¹y7ž{« o¯ bcXXX *t   ¹y7ž{­  (€+bcXXX **6(n o° *0­> þ9›uw 9Œ  u ,+   u ,+ 3du ,-t  t  {« {« þo± *t t {­  {­    þ(‚+***þþ*0@ þ9‹þ9€u ,+   u ,+ 3Xu ,"t  t  {« {« þ(‰+*t t {­ {­ þ(„+***þþ*09 uw , þo² **:(³ }« *{« *:(³ }­ *{­ *:( }´ *2{´ {« *:( }µ *2{µ {­ *( *2s¶ Œÿ*:(· }¸ *0B {¸ þ(Š+*(¹ *07C {U;|\;(¹i (Ri (n oai,(Œ' (º **Æo &(\^}æ{æ(‹](B (³+}ç*"{æ*:{çoU *B{æ(g þ*Vsp%{æþ(‹+*02ÿr¨Åpsr%{æ(š+¥7 r¨Åp(p+(` ( *:(» }è*:{ès¼ *(® **þom*(½ *"{æ*( *s~%**uèþ*s€%**uéþ*0E  ué,+*Zr.8ps¾ (Œ+o¿ *0=H ué,té {ìþom*tè {ë rýpom( *:(v%}ë*{ë*:(v%}ì*{ì*:( }í*2{í{ë*:( }î*2{î{ì*(À *01I ué,té {ìsÁ *tè {ësÁ *{ï*{ð*{ñ*r( }ï}ð}ñ*0^þ,U ¹y7ž{ñ(¿+bcXXX ¹y7ž{ð(+bcXXX ¹y7ž{ï(Ž+bcXXX **6(n oŒ%*0\K þ,Muí ,A{ï{ï(+,+{ð{ð(+,{ñ{ñþ(À+****þþ*0L þès–%þ(Â+*0M þésœ%þ(Â+*–{ï(‘+{ð(’+{ñs‹%*Š(/^( (‘+(C%(à s‹%*0`ÿ(“”s¢%{ïo` (“+(”(È+r^Ãp( s¤%{ðoÄ (”+¥7 r:p(p+(` ( *0Uþ,Fþ,>{ï{ï(•+,){ð{ð(–+,{ñ{ñþ(Â+****þþ*0K uí , þo”%**Ò}ò}ó}ô}õ}ö}÷(Å *0íL {öYE +8¡88¶{ò{ð¥oÆ }õ}ö{õoï ,f{õoÇ }ó{óué,+;{ótè}ô}ö{ô{ë}÷*þè}ô}ó+}ö{õ(—+}õ}ö}÷*0‡e {öYE++e{öE + ++++}ö{õ(—+}ö}÷ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{öE + + +++***"{÷*0 L {òþès–%*Ò}ø}ù}ú}û}ü}ý(Å *0íM {üYE +8¡8~8¶{ø{ð¥oÆ }û}ü{ûoï ,f{ûoÇ }ù{ùué,={ùté}ú}ü{ú{ì}ý*þé}ú+}ù+}ü{û(—+}û}ü}ý*0e {üYE+8h{üE + +!+ +++}ü{û(—+}ü}ý Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{üE + ++ +++***"{ý*0 M {øþésœ%*(È *"(Ye*(É *0<"Œæ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*{þ*{ÿ*{*{*’( }þ}ÿ}}*:(Ÿ }*(Ÿ *0 (  *0 (¡ *{*0-þ,$ ¹y7žtó(¯%(¿+bcXXX **6(n o°%*0D*þ,5u ,)(˜+-*tó(¯%tó(¯%þ(À+**þþ*þþ,0þ,((˜+-*tó(¯%tó(¯%þ(Â+**þþ*0*u , þo³%**(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(® **þom*(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*V(Ë }}*f{{(E%(™+*(Ê *.(A%þ*:(Ê }*n{{U;{Z;( ^þ*:(Ê }*F{oU þ*:(Ê }*:{(Ž`*:(Ì }*º{{ñom{U;{Z;(©](ò sÍ *(® **þom*:(Î } *0,N (Ï (Ð { {ñ(¦](çŠ(¢o*:(Î } *0:O (Ï (Ð  {U;(-m{ {ñ(¦](çŠ(¢o*V(Î } } *0/P (Ï (Ð (çŠ { { (F%(¢o*’(Ñ } }}}*03Q { {(E% {{sÍ%oÒ þ(š+*²(Ó }}}}}*0 nV {rýpsµ%(›+ {{s»% o%o%(œ+(¿+ (‹](B (”+o^ s½% (Ã+{s¿%(Ã+{sÁ%(Ã+{sÃ%(+,(}   {U;{X;s«%zsÅ%(ƒ+ (‹] (ž+ {ï  (Ÿ+ sÉ% (š+sË%{{ sÏ% oÒ (š+o%( +(¡+{ oÔ  o`  sª%sÕ sÖ *:(× }Ø *j{Ø Œ¥âþoÙ *’(Ú }Û }Ü }Ý }Þ *0 'X {Û {Ü {Ý {Þ (G% sß *(® *R(“”(beþ(È+*(® **þom*(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(à *6{U;{Z;*(á *&(n*’(Ì }}}}*0 &{{{{(J%sÍ *:(â }*>{(ÿ%*~¡*n{.{/X{0s!&*n{.{/Y{0s!&*0N[ {. ,{/{0s!&+oã (ä {/{0s!&(å sæ *0A{/-,{.{/(ç (è s!&{0(¢+sé *(ê sé *¢{.{/(ç (è s!&{0së *0.] (& (n o&, (Ä]*s"&þ(£+*0:` (ì (í (í (î (¤+ sï (¥+ (&sð (ñ *0<a {,< {-< {U;{b;,+(_(ž {U;(-m**s<&*0oc (ò þ,( ( só *sj% {'r%ýps&&(€+ s0& (¦+ s>& (±+(î%(¦+ só *0%e {'oô , (õ {*( *0¿g s@&(§+ (ö (÷ sj% (ï%(÷ (ö  (ð%sB&(¦+ (¦+ (&3(¡+  (¡+só +"  (¡+(¡+(¡+( só   (ö  (÷ só *0Rh (îo@tß {L< {"oÆmoU ,'oÆm{$rGýpsD&(+(¨++9Ë{N< {L< oÆm {%rcýpsF&(x+{'rýpsH&(€+ {(rŸýpsJ&(z+sL&{þ(/+(ß+sN&{ÿ(©+(ª+ {!(¦]{U;{Z;sY (ú (û  (x_*(³ þ, (Ê þ+,*(Úo*0 ¤u (îoEZÕHý?‘½Yb7sP&þ(ø%*tã {b< {d< {a< {`<{c<(ó%(ø (ù sR&(k («+  (ú   (û    (¬+  (ü   (ý  (þ  (ÿ  (   (ò%s *tß{L<{N< oÆm{U;{Z;  (¤ (k (ò%s *tì{Š<( 8zþÿÿtæ{n< {q<{s< {r<{o<{p<(ó%(ø (ù sT&( (­+(  ( sV&sX&sZ& ( (®+( (  (·hoE  (ào(é%!!(  "!(  #"s^&#(¯+s *tá$${Z< ${Y< ${U<${X<${V<%${W<&(æ%(ó%(ø  (ù  (ç%(é%!!(  "!(  #"sb&#(·hoE %& (Öo(¯+s *tâ''{_< '{^< '{]<'{\<((æ%(ó%(ø  (ù  (ç%(é%!!(  "!(  #"sf&#( (®](¯+s *tç)){y< ){w<*){t<+){x< ){u<){v<,*(p+-,(ü%..(  .(  /sh&-(  (°+00(  0( 1 (é%!!(  !(  #sl&#+ /1(†_(¯+s *s *tê22{ƒ<(! -:2{†< 2{…< 2{„<32{‚<s 3 (èos *2{ƒ<(! 42{†< 2{…< 2{„<34(" (# 54(" ($ 4(" (% 2{‚<sn&(k («+  (ú  (û   5s ( s 3 (èos *té66{< 6{< 6{~<76{€<sp&(k («+  (ú  (û  7 (æos *tè88{}< 8{|<8{{<8{z<9(ó%(ø (ù (ó%::(ø  :(ù ; 9;(äos *të{‰< (•sû£<(¤<(±+*0 $s s (ß^s *R(Ôos *0 2É sx&(£+ s|&s (Üo(¯+s *01É s€&(£+ s„&s†&(£+(¯+s *0 ƒ| (îoEçY–(Þ^ 9É( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (ü%  (    (    (ý%  (   (     sr&8ãþÿÿ(ó%þo! *tà{R<{S<{P<{O<{Q<(ó%(ø  (ù  st&8`þÿÿtä{g<{f<{e<(æ%  (ê%("  (# sv& ( (²+($ (% (ê%(" (# (&(ñ%(÷  (ö !(ê%""(" #"(# $#{.#{/$(³+(ç (& (& (è s!&%%(ç%&&(é%''(  ('(  )( !)s~&8#ýÿÿtå**{k<*{j<*{i<++(ú%,,('  ,(( -(&-( ( (ñ%(÷ (ö  (é%''(   '(  ) )sˆ&8}üÿÿ0 m} {<= {;= {9= {>= {=={:=(æ%(ó%(ø (ù  (ç% (Ûqs) *0_~ {,< {.< {-< {U;|\;(¹i(½h sŠ&(´+(ø (ù (¢os* *"sŽ&*0p uÅ-UuÃ:¯tÄ {< {< sŒ&(k («+ (ú  (û (Eos+ *tÅ{ <{ <(ú%  ('  ((  (ü%  (    (      (Gos+ *tÃ{<{<{<{<(ó%(ø (ù (û%(q (µ+(,  (- s& (¶+(. (/ (Cos+ *0O‚ {)< {+< {*< (æ%  (ó%(ø (ù (ç%(›os0 *Rs’&( (²+*0@„ {K= {M= {L= (& (1  (2 (rs3 *Rs”&(4 (·+*0Љ (rE.ñr¸tN {Z= {\= {]= {[=(þ%($ (% (&(5  (6    (rs7 *tL  {W=  {V=  (ú%  ('  ((  (rs7 *tM{Y= {X=(ó%(ø  (rs7 *tK{U=(&(8 (9 ( rs7 *tJ{T=(ÿ%(: (; ( rs7 *Rs–&(< (¸+*06Š {d= {c= (& (1 (2  (4rs= *{ *{!*{"*{#*{$*{%*{&*{'*{(*0L( } }!}"}#}$}%}&}' }(*^s&€*s&€+*:( })*~***(&þ*~+**(&þ*{)*Zr.8ps> (¹+o? *01.þ, þ,{) {) 3*Y**þ,**:¥ o&*0B‹ ¥  þ,%¥ þ,{) {) 3*Y**¥ þ,**0þ, (&3 * **6(n o&*0.‹ þ,u  ,{) {) þ**þþ*0*.þ,þ,{) {) þ**þþ*0] u  ,o&**{.*{/*{0*r( }.}/}0*:(@ }1*V{1s (Þo*(A *0Œ (B (C *(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*:(D }2*:{2(¦]*V(E }3}4*R{4{3(µ_*(® **þom*(Œ *"(i*V(F }5}6*0 {.< {,< {-< {U;{X; {U;{Z;(_(– (G (H  s(&{6{ÿ(©+{5{!  s*&(º+ {5{(r¿ýps,&(z+  {U; (-m {5{!  (¦] {U;{Z;sY s.&{6{þ(ˆ+(/+(ú (û  (ª+ (x_(µ]*(® **þom*(® **þom*(Ë *6(i (f *:(@ }7*V{7s (Þo*:(@ }8*V{8s (Þo*r(F }9}:};*0 L {.< {,< {-< {9{$rÕýps2&(+ {9{(rþps4&(z+{U;{Z;(_(– (G (H (I  (»+  (J   (K   ( ]  (²]  (ø  (ù {U;{X;{:{þ(ˆ+s6&{:{ÿ(¼+ (½+s8&{:{(£+s:&{;(£+(µ]*:(I }<*b{<{&{,<oU *:(I }=*b{={"{,<oU *:(F }>*¶{>{#{,<oU ,{>{!(í%**(® **þom*(® **þom*(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(® **þom*(Œ *"(i*:(D }?*:{?(¦]*(L **:(M }@*F{@þ(ó%*:(N }A*>{A(ù%*:(N }B*>{B(ù%*:(O }C*R{C( (­+*:(P }D*0 (§ (¤ {D(¾+*r(Á }E}F}G*r{E{F{Gþ(ë%*:(Q }H*0‘ (R (S {Hs\&*r(Á }I}J}K*r{I{J{Kþ(ë%*:(Q }L*0‘ (R (S {Ls`&*r(Á }M}N}O*r{M{N{Oþ(ë%*:(Q }P*0‘ (R (S {Psd&*:(T }Q*>{Q(ý%*r(Á }R}S}T*r{R{S{Tþ(ë%*:(Q }U*0‘ (R (S {Usj&*:(M }V*F{Vþ(ó%*:(M }W*F{Wþ(ó%*0D(L }X}Y}Z}[}\}]}^}_*0J{X{Y{Z{[{\{]{^{_(ø (ù (ô%þo! *²(L }`}a}b}c}d*0 8{`{a{b{c{d(ø (ù (õ%þo! *:(U }e*>{e(ú%*:(@ }f*V{fs (Þo*r(Á }g}h}i*r{g{h{iþ(ë%*:(Q }j*0‘ (R (S {jsz&*²(L }k}l}m}n}o*0 8{k{l{m{n{o(ø (ù (ö%þo! *:(@ }p*V{ps (Þo*r(Á }q}r}s*r{q{r{sþ(ë%*:(Q }t*0‘ (R (S {ts‚&*:(@ }u*V{us (Þo*²(L }v}w}x}y}z*0 8{v{w{x{y{z(ø (ù (÷%þo! *V(V }{}|*Z{{{|þ(ó%*:(M }}*F{}þ(ó%*:(W }~*0;’ {< {< {~(ü% (  (   (aosX *:(Y }*>{(ü%*:(U }€*>{€(ú%*:(Z }*>{(&*:([ }‚*>{‚(&*~ *0[“ {æ(g þ,*{†(\ (’% s] {ƒ(^ {„{…{‡s«&*0‡• {æ(g þ,*{ƒ (_ ,Y (_ (` (a (` (b {„ oc s±&{… on%(¿+{†{‡s«&*r3þp(À+*&sd *Ê(Á+{ƒ(Â+{„{…{†{‡s«&*0@sµ&{ƒ(Ã+,*{ƒ{„{…{†{‡oe s«&**Rs·&(à^þ(Ä+*0v– oÆm of -(y%(g (h (œ&* (Õ  (Å+,(w%(g (h (œ&*(y%(g (h (œ&(&*0¤˜ s¹&(§+ (ö (÷ sj% (ž&{t={m=o` {n=o^  s»&(Ã+(‹](B (”+ (™& s½& (Æ+ s¿&  (š&þ(Æ+*0ö™ (îoEƒ`'*tß{L< (¤ (c (Ç+(i *té {~<(Òp3Â{~<t {â< {€< {<(¤ (c (Ç+ (È+(i *tã{b<{d<{a<{`< {c<   (¬+  (ü   (ÿ   (   (îo3/ tß{L<   (É+ (È+(i **tä{g<{f< {e<( & (Ê+(i *tå{k<{j< {i<( ( ( & (Ê+(i *&sk *0)› (Ë+(Ì+ (l (m ,+Ù*0 œ  (£&*0 ½ž (Í+ sË&(Í+{n (Í+{o (Í+{p (Í+{q (Í+{r (Í+{s st (Î+(˜&(Ï+ {„ {…{†(Ð+{‡ (¤&( sj%ov sÍ&(Ñ+sw *{ƒ*{„*{…*{†*{‡*²( }ƒ}„}…}†}‡*0—þ9‹ ¹y7ž{‡(Ò+bcXXX ¹y7ž{†ox bcXXX ¹y7ž{…(Ó+bcXXX ¹y7ž{„(Ô+bcXXX ¹y7ž{ƒoy bcXXX **6(n o¬&*0˜Ÿ þ9†uM  9w{ƒ {ƒ oz ,]{„{„(Õ+,G{…{…(Ö+,1{† {† o{ ,{‡{‡þ(×+******þþ*0þ,pþ,h{ƒ{ƒ(Ø+,S{„{„(Ù+,>{…{…(Ú+,){†{†(Û+,{‡{‡þ(Ü+******þþ*0  uM  , þo¯&**(| *0¡ (} (~ o *V(€ } }‚ *0 B¢ (ƒ („ (… { oU ,(z {‚ o‘%+s† *:(‡ }Š*0(£ (a (ˆ (b {ç{ŠoU *(‰ *N(>^( _(á^*:(I }‹*N{‹{,<oU *:(Ê }Œ*Z{Œ{çoU þ*:(Š }*Z{{-<þ(Ê+*:(Š }Ž*Z{Ž{-<þ(Ê+*(® **þom*(Ê *0<"Œâ ,+u¼ , (x ¥|þo¡ * þo& *rR9p*V(‹ }}*04¤ {roþpsÁ&(x+ {roþpsÃ&(›+{ï*(Œ *&( *V(Ž } } *0^¦ o% { { sÅ&(Ý+ {ï sÇ&(Þ+ ,+  (‘ þ {ð{ñs‹%s’ *V(“ }“}”*0 {“{”(¡&*:(” }•*:{•o• *0»« {Ño– 9¥ (— sÓ&(ß+ ¥ýŒý,+ ròÏps‚ zo¶ oï -(Œ ròÏps zo· oï ,o· 1+á+ÞÞu   ,  oâ &Ü&Ü**QKœ0Ÿ¬ (@%,*{ÓoU ,*{ÕoU {U;{Z;(_ (– (G o— (Ï&/+,+ þþ,+ (¨ þþ,s˜ (™ **0<¯ s×& {Ôr‹þpsÙ&(à+ (š (› -*þ(á+*0„² (™' sÛ&{Ò(â+ sÝ&(ã+ (?% sß&(ã+sá&(ä+(‹](B (”+{Õsã&oœ (‹](å+s *(ž *0´ (Ÿ (  (¡ þoè *(® **þom*:(Ê }–*0 #{–{ÒrµþpsÕ&(æ+(=%*(® **þom*V(¢ }—}˜*V{—{˜(Ð&*:(£ }™*N{™(¤ (Ñ&*:(£ }š*0µ (¤ (¥ {šoU þ*(¦ *"(¤ *:(Ê }›*n{›{U;{Z;( ^þ*0:¶ o§ Þ,t rÿpsz (¿+ sè&ok (+&z* ,:( }œ*B{œþoì *:(ñ }*0®{oò sæ&*0‚st%(‹](ç+(è+€žs†%([¦(‹](é+(ê+€Ÿ(¨ (B%(© (‹](ª (« (‹](B s«&€ (ç (è s!&€¡*0Ì· (îo@¾tã {b< {d< {a< {`<{c<(›](îo3htã{c<(Ê -?{b<{d< {a< {`<   (ß+ s¬ (­ * s¬ (­ *  s¬ (­ **0=(|i()i(hi( i( (Vi($‰(æj(=i*03¹ uo ,to  s*'{¦þ(ë+*(€s(® (¯ *0_» uo ,Qto  uo ,<to  {¦ {¦ o° o° .('*s,' (ì+('*('*('*0O½ uo ,Cto  {¦(± ,${¦ (± (± - r'ÿps\ z *r®ÿps\ z +ï0E¾ (îo 35té {~<(Òp3 {€< {< s.'(í+('*('*04¿ (O]($nþ,(W] s0'(î+('*('*0ìÄ s2' (g 9¯ uo ,vto   {¦ (² (ï+(³ (´ (ð+(µ  (¶    (³_  (l_   sY s· *(g (h   (¦] {U;{Z;sY s· *uo ,to  {¦ 8Nÿÿÿr"ps\ z0:Æ   (ò& (¸ (ù (¹ oÓ , rzps\ z *~ß*0rÇ (± ,d (º uo ,-(º to  (± {¦ ('(õ&(» *(± (õ& (± -(¼ *(' (» *(¼ *0È (± ,U (± -(± (º (¼ * (± (º (± (º (î& (ö&(» *(± , (± (º (¼ *(¼ *0Ê s6' þ(ñ+*>s8'þ(í+*0¹Ì sR'(ò+ {U;{b;-+"(…ssT'(ë+(‚s(¶o(ž sV'(ó+ o½ (ô+  (ß+sX'(‚+(‘]{U;{X;(»hom{U;{X;o!”(ì&sM'*0pÎ uo ,Rto  (O]($nþ,8{¦ (W] (û& (¾  (¿ ('sÀ *('(¤ (¥ sÀ *0-Ñ sZ' (õ+ s\'(ö+s^'(÷+sÁ *0&Ò  o° (ø+ s`'(ù+þ(ú+*0rÔ sb' uo ,]to  ( ,A {¦ (à {Ï( (à {ÐoÄ (û+('*{¦ ('*('*sÅ *0/Õ {Ño– , (— (ü+þ(ý+*('*&sh'*0&× sf' sj'(î+ ('þ(þ+*0 ¤Ú sl'(ÿ+ (÷& o— (+ (' o° (+(ü&(Æ (Ç (õ&o° (+ (± þ,* (ù&sÈ (É *0›Û {U;|\;(¹i (Xi (n oai {U;|\;(ºi(€iþ {U;{Z;( ^-þ+, þ+,{U;|\;(»iþ+,{U;{b;þþ**&sÊ *~(‹](+{Ñ(+(+*~{Æ{Ç( {Èsy'*0T"{È{ÇŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (©]*0WÜ (îo3 sË *{È{Ç{Æ(r_(©] (ó (ò (åŠ(¢o( sË *06Þ sz'(+(+ (Ì (Í (+(¡+sÎ *0 Yá ( ] {Æ{Çsy' uo 9to  (îo @ßté {~<(Òp3/ {€<{¦ {<rêp('( '*{¦('(Ï  (Ð  rîp('  {Æ (r_  {Æ (W]   ( '  (Ì   (Í (' {Æ(³_8çþÿÿ{¦8`ÿÿÿ('(Ï  (Ð  (k (l sÎ *0øâ (± 9â (Ê -(± (º rôps\ z (± (º (Ê  (Ë Œ’,4u¼,  (x ¥|o¡ +  o& +rR9p('( '  (Ì   (Í   X( '(Ì (Í  (ª+sÎ *  sÎ *Bs|'þ(£+*0ßå (îo@Ætß {L< {N< oÆm {à oÑ - (Úo*(Ò {³{µ{U;{Z; (¦] {År—àpsy'  ( ( '  (Í   (Ì  (+  (Úoþ( '*(Úo*0/ç u} ,t}  s~'{¯þ(¼+*(Ó (Ô *0˜è u} 9‡t}  (g ,d (g (g -.{° (h {¯ (åŠ(¢o( ( *{° {¯s€'(ž]þ(+*{°{¯ +×( *0 'é {-< {.< {,< {U;{X; {ÃoÑ 9î(Ò {U;{Z;(_(– (G  (H  (I  {µ {´  oÕ o— / rtps\ z( +(ø+s‚' ( +¥}( +(½+s„' ( +¥~( + s†' (£+    (µ]**0(ë (îoE^Ÿ(ë& ,R(Ö (ü (Ö (ý (Ö (þ (Ö (ÿ (Ö (  ( '(  **tä{g< {f<{e<sˆ'(¦+(Ä](  *tå  {k<  {j< {i<  ('  s (Þo(  *VsŠ'sùd(‡`*0/í (˜'(+('(+ (' su'('*.s$'€£*( *~£**un þ*s%'**uo þ*0î  uo ,+*Zr.8psØ (+oÙ *0ƒï þ9oþ,guo ,+ uo ,+ 3=uo ,3to  to  (y {¦ {¦þoÚ **Y**þ,**:¥l o'*0Žð ¥l  þ9n¥l þ,auo ,+ uo ,+ 37uo ,-to  to  {¦{¦þoÚ **Y**¥l þ,**0=ñ þ,4 un , *to   ¹y7ž{¦oÛ bcXXX **6(n o'*0}ð þ9kul  ,_uo ,+ uo ,+ 37uo ,-to  to  {¦{¦þoÜ ****þþ*0kò þ,\þ,Tuo ,+ uo ,+ 3,uo ,"to  to  {¦ {¦þ(+****þþ*0î ul  , þo"'**('*:('}¦*{¦*:( }§*:( }¨*2{¨{¦*(Ý **þ(í&*(Þ *&(î&*(ß *"(ð&*:(à }©*:{©(ñ&*V(á }ª}«*V{ª{«(ò&*(â *.þoã *(ä *&(ö&*(ß *6(ð&(ï&*.sB'€¬*( *~¬**u| þ*"sC'**u} þ*0ô  u} ,+*Zr.8pså (+oæ *(;'*V(;'}¯}°*{¯*{°*:( }±*:( }²*2{²{¯*2{²{°*{³*{´*{µ*r( }³}´}µ*(ç *¢{U;{X;om{U;{Z;(©](ò *V(è }¶}·*0]õ {¶Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( {·(©](ò *V(é }¸}¹*0 óö (ê (ë uo 9Ôto  {¦(± -(<'*oÓ oµ 3sN'(+8~(g ,$(g (g -(h om+r—àp(g ,)(g (g -(h {U;{X;+{¹sP'(+ {¸{¹ (ó&(>'*(<'*(Ý **þ(í&*(ì *"(ê *(á *&(n*:(í }º*>{º(ú&*(î *"(ï *(ð *"(ñ *V(ò }»}¼*04ø {¼{»(–](ú& (ñ (ï só sô *(õ *&(ý&*(ö *0ù (÷ (ø (ù (ý&*(ú **(ÿ&*V(û }½}¾*0sú (g ,g (g (g -(h {¾(ÿ&* uo ,to {¦+ r¸ps\ z {½{¾oü (+('* +¼:(à }¿*N{¿(ñ&(ï&*:(ý }À*:{À(–]*(þ *0û (ÿ ( ( (+*V( } } *0 ¸ü { ('-*{ {Òo 9 (â {U;{Z;(_ (–  (G  (H ¥î(Œ+(g ,A(h   {U;{X; { { s (+ ('***{Ã*{Ä*{Å*r( }Ã}Ä}Å*{Æ*{Ç*{È*r( }Æ}Ç}È*r( }É}Ê}Ë*0 Ný {É(' (ó (ò (çŠ {Ê{Ë{É{È(Î] (¢os *(@ *V( ]s (Þo*(Ë *6(i (f *(  *:(åŠ(¢o*(  *&('*(  *&('*:(@ }Ì*V{Ìs (Þo*:(F }Í*:{Í('*:(} }Î*:{Î('*0 gÿ (+ (+{  sš'(+{  (+{ (+{ (+{ (+{ s (‹](B (+þ(+*0³(y {Ò{Ò(+ /*1*(y {Ó{Ó(+ /*1*(y {Ô{Ô(+ /*1*(y {Õ{Õ(+ / * 1 *(y {Ö{Ö/*þ*0œ{Ò{Ò(+ /*1*{Ó{Ó(+ /*1*{Ô{Ô(+ /*1*{Õ{Õ(+ / * 1 *{Ö{Ö/*þ*~Ý*~Þ*0„s {Ño– -( ( {Ño +" (— ( {Ño {Ò{Ó{Ô{Õ{Ös¨'*0t,2{Ñ{Ò{Óoe {Ô{Õ{Ös¨'+ {Ö,0{Ñ{Ò{Ó{Ô{Õoe {Ös¨'**0_{,< (i (f s {Ô o {Ñ{-<{Òo {Ó{Õ{Ös¨'*0K(\^ s±'{Ô(+ {Ñs³'{Ò(+{Ó{Õ{Ös¨'*0[{Ö {Ñ{Ò{Ó{Ô{Õs¨' ( + {Ñ{Ò{Ó{Ô{Õs¨'*†{B8(i,oÆmþ(!+**0â (îo3"tß{L< sµ'("+( *(ë& ,g(Ö (ü (Ö (ÿ (Ö (  (îo37 tß{L< s·'("+(#+( **(îoEˆË*té{~<(Òp3å{~<t {€<(Ê ,É{€<(Ê (Ê -²(Ë {<  {Û<  (œ'( 8’þÿÿtá  {X<  {W<  {T<  {U< {V< ($+( *tâ{]< {\<{[<  ($+( *0 =s¹' s»' s½' (%+ s¿'sÁ'sÃ'(%+{ s  *j(˜'(+('þ(+*(! *0(" (# oe *"s'*V( }Ï}Ð*{Ï*{Ð*&*Zr.8ps$ (&+o% *{Ñ*{Ò*{Ó*{Ô*{Õ*{Ö*Ò( }Ñ}Ò}Ó}Ô}Õ}Ö*0Eþ,4þ,,(y {Ñ{Ñ('+ /*1*('**þ,**:¥¡ o©'*0S¥¡  þ,6¥¡ þ,){Ñ{Ñ('+ /*1*(Ž'**¥¡ þ,**0¬þ9  ¹y7ž{ÖbcXXX ¹y7ž{Õ(Ò+bcXXX ¹y7ž{Ô((+bcXXX ¹y7ž{Ó(Ò+bcXXX ¹y7ž{Ò()+bcXXX ¹y7ž{Ñ(*+bcXXX **6(n o¬'*0žþ9Œu¡  9}{Ñ{Ñ(++,g{Ò{Ò(,+,Q{Ó{Ó(×+,;{Ô{Ô(-+,%{Õ{Õ(×+,{Ö{Öþ*******þþ*0•þ9ƒþ9x{Ñ{Ñ(.+,c{Ò{Ò(/+,N{Ó{Ó(Ü+,9{Ô{Ô(0+,${Õ{Õ(Ü+,{Ö{Öþ*******þþ*0u¡  ,o¯'**:(& }×*0{×s o *(' *0Í {,< {-< o *:(( }Ø*0 {Ø(¤ (k (‘'*r(( }Ù}Ú}Û*0 {Ù{Ú{Û(‘'*:() }Ü*0 {Ü   {Ü(* (—'*(+ *0É {*< ($+( *(, *0É {== ($+( *(- *0(" (# (’'*(. *&(“'*(/ *&(”'*0S(‹](0 €Þ(‹](1 (‹](2 (‹](B ('(‹](B s¨'€Ýs4'€ß***~ì***** **¾rÙøpŒm(ûrpŒm(û(v”(v”*Vs3 (h”þ(1+*Vs4 (h”þ(2+*0{(È(E -A†¥Ä7t¶  {÷{ö(éN*rWpŒm(û*t±  {î+t²  {ï {ð (_erpŒm(û(v”(Ò'(y”(…”*t³ {ñ(Ó'(…”*t´ {ó(Ó'(Ï'*tµ {õ{ô  {u;  Œm(û(Ó'(…”(v”*t·   {û r(pŒm(û (pe(w”*t¸   {þ(pe*bs)(3+(4+(”*0r"o6 r0pŒm(ûs){(5+(|”rDpŒm(ûs!){ { o7 o8 (6+(|”(|”(Ï'*0hrTpŒm(û{(Ò'(|”rppŒm(û{,rªp+r´p Œm(û(|”(|”(Ï'*0¹#(y {9 {9  /+ þ /*1*(y {: {:  /+ þ /*1*(y {; {; /+þ / * 1 *(y {< {< /*þ*0ž{9 {9 /+þ /*1*{: {:  /+ þ /*1*{; {; /+þ /*1*{< {< /*þ*02*£¯ (Ú' /**0$Ži   (Ø'*0Œ%(È(E (=K Y[t± {í***t²  {ð (Ú'X*t³ {ñ (Ù'X*t´ {ó +étµ {õ +Û**0,&(È(3t±  {î+â1(¸(**02)s1) /(¶(*(È(E ì3]Úbêîðt±  {î {í /*(Ü'(Ú'(Û'*t² {ï{ð Y(Ü'(º(*t³ {ñYo=  Œœ,+ r¨9ps‚ zŽi ¯   Y   2'    £¯ o> ¤¯  X   X3Ù (¼(*t´   {ó {òYo=  Œœ,+ r¨9ps‚ zŽi ¯   Y   2'    £¯ o> ¤¯  X   X3Ù (¾(*tµ {õ{ôYo=  Œœ,+ r¨9ps‚ zŽi ¯   Y   2'    £¯ o> ¤¯  X   X3Ù (À(*****0)*(Ú' 1(Ü' (Ú'(Û'*(Û'****0´+(y {' {'  /+ þ /*1*(y {( {(  /+ þ/*1*(y {) {)  /+ þ/*1*(y {* {*  /* þ*0#(y {$ {$  /+ þ /*1*(y {% {% /+ þ /*1*(y {&{&/+þ / * 1 *(á'*0¨,(y { { (7+ /*1*(y {!{!(7+ /*1*(y {"{"(7+ /*1*(y {#{#/+þ / * 1 *(â'*0—-{' {' /+þ /*1*{( {( /+þ / * 1 *{) {) /+þ/*1*{* {* /*þ*0Ž1*{$ {$ /+þ /*1*{% {%  /+ þ /*1*{&{&/+þ /*1*(ä'*0–.1*{ { (7+ /*1*{!{!(7+ /*1*{"{"(7+ /*1*{#{#/+þ / * (å'*0 ¹y7ž{*bcXXX ¹y7ž{)bcXXX ¹y7ž{(bcXXX ¹y7ž{'bcXXX ¹y7ž{&bcXXX ¹y7ž{%bcXXX ¹y7ž{$bcXXX ¹y7ž{#bcXXX ¹y7ž{"(^+bcXXX ¹y7ž{!(^+bcXXX ¹y7ž{ (^+bcXXX ¹y7ž{bcXXX *0œ{"{"(_+9‚{#{#@o{${$3_{%{%3O{&{&3?{'{'3/{({(3{){)3{*{*þ*********0³{!{!(f+9š{"{"(f+9‚{#{#@o{${$3_{%{%3O{&{&3?{'{'3/{({(3{){)3{*{*þ**********0Œ/(È(E O;+999*t³ {ñ sj)þ(8+*t´ {ó +ätµ {õ +Ö*t² {ð 8‚ÿÿÿt± {î +ê090sl){(9+,*sn){ { o7 o8 þ(:+*0U*{U;|\;(¹i(½h, (ê'+,/om(¢–( {U;{X;sû£ (¤þ(¥**~í*0 5sp)s)sv)sx)(;+(<+s)þ(=+*01oA -(í'*(p *01oB -(í'*(p *0 n0Ži/&{£mX{(ò's)*{ { o7 o8 sÁmsC (>+(?+s){s)*0,2(@+ o6 (ñ'(=+ þoD *0 (3(A+ o6 (ñ'(=+oE *0b4{4{5{6{7{8{9{j;{q; {n;{±;{j;{q; {o;{:(B+sh)*~î*0Q6{U;|\;(ºi(€iþ,(õ'+ {(È(3*{0{U;{[;oF *0 Í7{U;|\;(ºi(€iþ,{(¶(s)+ {(È(3+A{4{5{6{7{8{9{U;{[;oG {:sh) {+{B8,6{+{E8(Ñ`(ç] -* (ˆ {s;(ô'**0?"o6 sz)s|){(C+{ { o7 o8 þ(D+*0 ={4{5{6{7sH {8(I {9{:sh)*0G8(¨ þ,*s~)s€){8(E+(@f s‚)(F+s„)þ(G+*0 ={4{5{6{7{8{9{:{±;oJ sh)*0“:om,(õ'* {0{U;{[;oK ,*{9{U;{[;oL -E{U;|\;(¹i(½h,'sÁm({^(¡sû£ (¤(¥+(õ'*(M *0(;{oN -* (p o6 (O *05=Ži2(O *£m(ý' -* (P X+Ë0;>{n; {:{±;oQ -* (p o6 {o;(þ'*0@oÆmom,(õ'*{1oI),+oÆm {U;|\;(¹i(½h9³{s;{j;{q;(ÿ' -(õ'* (P {{ o7 oÆmoR -T{+{B8,A {{ oS oÆmoÜloT -(õ'*(U (V *(õ'*(U (V *(õ'*0NB{s;Œl,+,{r;(ü'+ (( oÆm{(ì'sC *0TC(È(E *t²  {ð+½t±  {î+¬0&D(( (È(3t¶  {ö(e **0SE(( (È(3@t·  {ü {ú {ø{û{ù sW (X **0&F(( (È(3t³  {ñ(Y **0&G(( (È(3t´  {ó(Y **05H(( (È(3"tµ  {õ {ô sZ ([ **0¾I(È(E k*t²  {ï {ð {B8{E8(i,*(“”(Ò'(È+(¦sû£ (¤ (+&*8eÿÿÿt± {î8Bÿÿÿ0!J    (((º((Ý'*0åK{›8(ƒ],,+ (Ún{›8(Â(*{š8(ƒ],,+ (Þn{š8(Â(*{¡8(ƒ],,+ (Øn{¡8(Â(*{8(ƒ],,+ (Ün{8(Â(*{ž8(ƒ],,+(àn{ž8(Â(*(¶(*0ZL(È(@št¶  {ö(øn@‚{öt¥ (È(3mt¶  {ö(øn3X{öt¦ {å;2 þþ+,/ {å;{ä;_bÑ(Ün{8(Â(*(È(@¢t¶ {ö(øn@ˆ{öt£(È(3qt¶   {ö(øn3Z {öt¦  {å;2 þþ+,/ {å;{â;  _bÒ  (Øn{¡8(Â(*(¶(*0^M(È(@™t¶  {ö(øn@{öt© (È(3lt¶  {ö(øn3W{öt¦ {å;2 ?þþ+,. {å;{è;?_b(än{Ÿ8(Â(*(È(@£t¶ {ö(øn@‰{öt§(È(3rt¶   {ö(øn3[ {öt¦  {å;2 þþ+,/ {å;{æ;  _b  (àn{ž8(Â(*( (*0^N(È(@št¶  {ö(øn@‚{öt¤ (È(3mt¶  {ö(øn3X{öt¦ {å;2 þþ+,/ {å;{ã;_bh(Ún{›8(Â(*(È(@¢t¶ {ö(øn@ˆ{öt¢(È(3qt¶   {ö(øn3Z {öt¦  {å;2 þþ+,/ {å;{á;  _bg  (Ön{ 8(Â(*( (*0ZO(È(@™t¶  {ö(øn@{öt¦ (È(3lt¶  {ö(øn3W{öt¦ {å;2 þþ+,. {å;{å;_c(Þn{š8(Â(*(È(@£t¶ {ö(øn@‰{öt¨(È(3rt¶   {ö(øn3[ {öt¦  {å;2 ?þþ+,/ {å;{ç;  ?_c  (ân{œ8(Â(*(¶(*0ZP(È(@™t¶  {ö(øn@{öt§ (È(3lt¶  {ö(øn3W{öt¦ {å;2 þþ+,. {å;{æ;_d(àn{ž8(Â(*(È(@£t¶ {ö(øn@‰{öt©(È(3rt¶   {ö(øn3[ {öt¦  {å;2 ?þþ+,/ {å;{è;  ?_d  (än{Ÿ8(Â(*(¶(*0Q(ønE?ñÛZ)¤v*t¡ (øn3ît¡ {à; {à; ,+,+Xþþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;X  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   X(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;Xh(Ún{›8(Â((\ *t¢(øn@­þÿÿt¢{á;{á;Xg(Ön{ 8(Â((\ *t£(øn@_þÿÿt£{â;{â;XÒ(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! XÑ""(Ün{8(Â((\ *t§#(øn@Ãýÿÿt§$${æ;%#{æ;&&%X''(àn{ž8(Â((\ *t©((øn@výÿÿt©)){è;*({è;++*X,,(än{Ÿ8(Â((\ *0Q(ønE?ñÛZ)¤v*t¡ (øn3ît¡ {à; {à; ,+,+Yþþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;Y  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   Y(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;Yh(Ún{›8(Â((\ *t¢(øn@­þÿÿt¢{á;{á;Yg(Ön{ 8(Â((\ *t£(øn@_þÿÿt£{â;{â;YÒ(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! YÑ""(Ün{8(Â((\ *t§#(øn@Ãýÿÿt§$${æ;%#{æ;&&%Y''(àn{ž8(Â((\ *t©((øn@výÿÿt©)){è;*({è;++*Y,,(än{Ÿ8(Â((\ *0Q(ønE?ñÛZ)¤v*t¡ (øn3ît¡ {à; {à; ,+,+Zþþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;Z  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   Z(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;Zh(Ún{›8(Â((\ *t¢(øn@­þÿÿt¢{á;{á;Zg(Ön{ 8(Â((\ *t£(øn@_þÿÿt£{â;{â;ZÒ(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! ZÑ""(Ün{8(Â((\ *t§#(øn@Ãýÿÿt§$${æ;%#{æ;&&%Z''(àn{ž8(Â((\ *t©((øn@výÿÿt©)){è;*({è;++*Z,,(än{Ÿ8(Â((\ *0Q(ønE>‹ñØZ%¤r*t¡ (øn3ît¡ {à; {à; ,+,+_þþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;_  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   _(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;_(Ún{›8(Â((\ *t¢(øn@®þÿÿt¢{á;{á;_(Ön{ 8(Â((\ *t£(øn@aþÿÿt£{â;{â;_(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! _""(Ün{8(Â((\ *t§#(øn@Çýÿÿt§$${æ;%#{æ;&&%_''(àn{ž8(Â((\ *t©((øn@zýÿÿt©)){è;*({è;++*_,,(än{Ÿ8(Â((\ *0Q(ønE>‹ñØZ%¤r*t¡ (øn3ît¡ {à; {à; ,+,+`þþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;`  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   `(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;`(Ún{›8(Â((\ *t¢(øn@®þÿÿt¢{á;{á;`(Ön{ 8(Â((\ *t£(øn@aþÿÿt£{â;{â;`(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! `""(Ün{8(Â((\ *t§#(øn@Çýÿÿt§$${æ;%#{æ;&&%`''(àn{ž8(Â((\ *t©((øn@zýÿÿt©)){è;*({è;++*`,,(än{Ÿ8(Â((\ *0Q(ønE>‹ñØZ%¤r*t¡ (øn3ît¡ {à; {à; ,+,+aþþ(Ôn{¢8(Â((\ *t¦(øn3•t¦{å;{å;a  (Þn{š8(Â((\ *t¨ (øn@Hÿÿÿt¨  {ç;  {ç;   a(ân{œ8(Â((\ *t¤(øn@ûþÿÿt¤{ã;{ã;a(Ún{›8(Â((\ *t¢(øn@®þÿÿt¢{á;{á;a(Ön{ 8(Â((\ *t£(øn@aþÿÿt£{â;{â;a(Øn{¡8(Â((\ *t¥(øn@þÿÿt¥{ä; {ä;!! a""(Ün{8(Â((\ *t§#(øn@Çýÿÿt§$${æ;%#{æ;&&%a''(àn{ž8(Â((\ *t©((øn@zýÿÿt©)){è;*({è;++*a,,(än{Ÿ8(Â((\ *0þR(ønEÁð’{8dM*t¡ {à; ,+fþþ (Ôn{¢8(Â((\ *t¦ {å;f(Þn{š8(Â((\ *t¨{ç;f(ân{œ8(Â((\ *t¤  {ã;  fh  (Ún{›8(Â((\ *t¢  {á;  fg(Ön{ 8(Â((\ *t£{â;fÒ(Øn{¡8(Â((\ *t§{æ;f(àn{ž8(Â((\ *t©{è;f(än{Ÿ8(Â((\ *t¥{ä;fÑ(Ün{8(Â((\ *0CT(( 9"(œ (ønE˜h88Ãt¦ {å;e(Þn{š8(Â((\ 8’t¨{ç;e(ân{œ8(Â((\ +bt¤  {ã;  e  (Ún{›8(Â((\ +2t¢  {á;  e(Ön{ 8(Â((\ + -(¶(*(] *0ò7W( 9– ( ('¶Ea ')¢+â0ì3Z(³'O*¨)c+ö*( 9z ( ('¶ @f( tñ- {\[(±´@I( ( :9(^ 9. (^ (^ :(³ 9(³ (³ :ý(´ {8(ƒ]9å(´  (_ (((È(3bt¶ {ö(ønE²1Ý\‡3(¶(*{öt¢{á;  Ñ  (Ün{8(Â(*{öt¤{ã;  Ñ  (Ün{8(Â(*{öt¦{å;  Ñ  (Ün{8(Â(*{öt¨{ç;  Ñ  (Ün{8(Â(*{öt£{â;Ñ  (Ün{8(Â(*{öt¥{ä;  Ñ(Ün{8(Â(*{öt§{æ;Ñ  (Ün{8(Â(*{öt©{è;Ñ  (Ün{8(Â(*( 9( ('¶ @i( tñ-{\[(±´@I( ( :8(^ 9-(^ (^ :(³ 9(³ (³ :ú(´ {ž8(ƒ]9â(´ (_ (((È(3bt¶ {ö(ønE¯0ÚZ„0(¶(*{öt¢{á;  (àn{ž8(Â(*{öt¤{ã;  (àn{ž8(Â(*{öt¦{å;  (àn{ž8(Â(*{öt¨{ç;  m(àn{ž8(Â(*{öt£{â;m(àn{ž8(Â(*{öt¥{ä;  m(àn{ž8(Â(*{öt§{æ;m(àn{ž8(Â(*{öt©{è;m(àn{ž8(Â(*( 9|( ('¶ @f( tñ-{\[(±´@F( ( :5(^ 9*(^ (^ :(³ 9 (³ (³ :÷(´ {Ÿ8(ƒ]9ß(´ (_ (((È(3bt¶ {ö(ønE±1Ü\‡2(¶(*{öt¢{á;  j(än{Ÿ8(Â(*{öt¤{ã;  j(än{Ÿ8(Â(*{öt¦{å;  j(än{Ÿ8(Â(*{öt¨{ç;  (än{Ÿ8(Â(*{öt£{â;n(än{Ÿ8(Â(*{öt¥{ä;  n(än{Ÿ8(Â(*{öt§{æ;n(än{Ÿ8(Â(*{öt©{è;(än{Ÿ8(Â(*( 9‚( ('¶ @l( tñ-{\[(±´@L( ( :;(^ 90(^ (^ :(³ 9(³ (³ :ý(´ { 8(ƒ]9å(´ (_ (((È(3bt¶ {ö(ønE²1Ý\‡3(¶(*{öt¢{á;  g(Ön{ 8(Â(*{öt¤{ã;  g  (Ön{ 8(Â(*{öt¦{å;  g  (Ön{ 8(Â(*{öt¨{ç;  g  (Ön{ 8(Â(*{öt£{â;g  (Ön{ 8(Â(*{öt¥{ä;  g  (Ön{ 8(Â(*{öt§{æ;g  (Ön{ 8(Â(*{öt©{è;g  (Ön{ 8(Â(*( 9‚  ( ('¶ @l ( tñ-!!{\[(±´@L ( ( :;(^ 90""(^ (^ :(³ 9##(³ (³ :ý#(´ {›8(ƒ]9å#(´ "(_ (((È(3bt¶ {ö(ønE\1ݲ‡3(¶(*{öt¦{å;  h  (Ún{›8(Â(*{öt¤{ã;  h$$(Ún{›8(Â(*{öt¢{á;  h  (Ún{›8(Â(*{öt¨{ç;  h  (Ún{›8(Â(*{öt§{æ;h  (Ún{›8(Â(*{öt¥{ä;  h  (Ún{›8(Â(*{öt£{â;h  (Ún{›8(Â(*{öt©{è;h  (Ún{›8(Â(*( 9z%%( ('¶ @d%( tñ-&&{\[(±´@D%( ( :3(^ 9(''(^ (^ :(³ 9 (((³ (³ :õ((´ {š8(ƒ]9Ý((´ '(_ (((È(3bt¶ {ö(ønEV,Õ«€+(¶(*{öt¦{å;  (Þn{š8(Â(*{öt¤{ã;    (Þn{š8(Â(*{öt¢{á;    (Þn{š8(Â(*{öt¨{ç;  i  (Þn{š8(Â(*{öt§{æ;  (Þn{š8(Â(*{öt¥{ä;  i  (Þn{š8(Â(*{öt£{â;i  (Þn{š8(Â(*{öt©{è;i  (Þn{š8(Â(*( 9))( ('¶ @k)( tñ-**{\[(±´@K)( ( ::(^ 9/++(^ (^ :(³ 9,,(³ (³ :ü,(´ {œ8(ƒ]9ä,(´ +(_ (((È(3bt¶ {ö(ønE\1ݲ‡3(¶(*{öt¦{å;  j  (ân{œ8(Â(*{öt¤{ã;  j  (ân{œ8(Â(*{öt¢{á;  j  (ân{œ8(Â(*{öt¨{ç;  j--(ân{œ8(Â(*{öt§{æ;n  (ân{œ8(Â(*{öt¥{ä;  n  (ân{œ8(Â(*{öt£{â;n  (ân{œ8(Â(*{öt©{è;  (ân{œ8(Â(*( 9f..( ('¶ @P.( ( :?(^ 94//(^ (^ 9 /(^ 00(^ (^ :(³ 9û11(³ (³ :ç1(´ {¢8(ƒ]9Ï1(´ 0(_ /(_ ((2((32(È(3b2t¶ {ö(ønErãTÅ(¶(*{öt®43(È(3â3t¶ 55{ö(øn 3É5{öt®66{í;74{í;887þ99(Ôn{¢8(Â(*{öt£:3(È(@sÿÿÿ3t¶ 55{ö(øn@Xÿÿÿ5{öt£;;{â;:{â;<<þ99(Ôn{¢8(Â(*{öt¥=3(È(@ÿÿÿ3t¶ 55{ö(øn@çþÿÿ5{öt¥>>{ä; ={ä; þ99(Ôn{¢8(Â(*{öt§?3(È(@‘þÿÿ3t¶ 55{ö(øn@vþÿÿ5{öt§@@{æ;?{æ;þ99(Ôn{¢8(Â(*{öt©A3(È(@ þÿÿ3t¶ 55{ö(øn@þÿÿ5{öt©BB{è;A{è;CCþ99(Ôn{¢8(Â(*( 9óDD( ('¶@ÞD( ( :Í(^ 9ÂEE(^ (^ 9®E(^ FF(^ (^ :”(³ 9‰GG(³ (³ :uG(´ {¢8(ƒ]9]G(´ F(_ E(_ ((2((32(È(3b2t¶ {ö(ønEqâS(¶(*{öt¢H3(È(3â3t¶ 55{ö(øn3Ê5{öt¢II{á; H{á; þ99(Ôn{¢8(Â(*{öt¤J3(È(@tÿÿÿ3t¶ 55{ö(øn@Yÿÿÿ5{öt¤KK{ã; J{ã;$$ þ99(Ôn{¢8(Â(*{öt¦L3(È(@ÿÿÿ3t¶ 55{ö(øn@èþÿÿ5{öt¦MM{å; L{å;NN þ99(Ôn{¢8(Â(*{öt¨O3(È(@’þÿÿ3t¶ 55{ö(øn@wþÿÿ5{öt¨PP{ç; O{ç;-- þ99(Ôn{¢8(Â(*( 9eQQ( ('¶@PQ( ( :?(^ 94RR(^ (^ 9 R(^ SS(^ (^ :(³ 9ûTT(³ (³ :çT(´ {¢8(ƒ]9ÏT(´ S(_ R(_ ((2((32(È(3b2t¶ {ö(ønErãTÅ(¶(*{öt®43(È(3â3t¶ 55{ö(øn 3É5{öt®66{í;74{í;887þ99(Ôn{¢8(Â(*{öt£:3(È(@sÿÿÿ3t¶ 55{ö(øn@Xÿÿÿ5{öt£;;{â;:{â;<<þ99(Ôn{¢8(Â(*{öt¥=3(È(@ÿÿÿ3t¶ 55{ö(øn@çþÿÿ5{öt¥>>{ä; ={ä; þ99(Ôn{¢8(Â(*{öt§?3(È(@‘þÿÿ3t¶ 55{ö(øn@vþÿÿ5{öt§@@{æ;?{æ;þ99(Ôn{¢8(Â(*{öt©A3(È(@ þÿÿ3t¶ 55{ö(øn@þÿÿ5{öt©BB{è;A{è;CCþ99(Ôn{¢8(Â(*( :(^ 9 UU(^ (^ :ù(³ 9îVV(³ (³ :ÚU(_ V(´ (((È(3bt¶ {ö(ønEiä`³Z­(¶(*{öt¡{à;9{¢8(ƒ],*{ 8(ƒ], 9,+  (Ön{ 8(Â(*9( (*{öt¢{á; { 8(ƒ],*{›8(ƒ], h  (Ún{›8(Â(*{š8(ƒ],   (Þn{š8(Â(*(¶(*{öt£{â;{¡8(ƒ],*{8(ƒ],Ñ  (Ün{8(Â(*{ž8(ƒ],m(àn{ž8(Â(*(¶(*{öt¤{ã; {›8(ƒ],*{š8(ƒ],   (Þn{š8(Â(*(¶(*{öt¥{ä; {8(ƒ],*{ž8(ƒ], m(àn{ž8(Â(*(¶(*{öt¦{å; {š8(ƒ],*{ž8(ƒ], (àn{ž8(Â(*(¶(*{öt§{æ;{ž8(ƒ],*{š8(ƒ],  (Þn{š8(Â(*(¶(*{öt¨{ç; {œ8(ƒ],*{Ÿ8(ƒ], (än{Ÿ8(Â(*(¶(*{öt©{è;{Ÿ8(ƒ],*{œ8(ƒ],  (ân{œ8(Â(*(¶(*(¶(*WW( ('¶EabþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿåÈbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿbþÿÿ8]þÿÿW( ( :Lþÿÿ(^ 9AþÿÿUU(^ (^ 9-þÿÿU(^ XX(^ (^ :þÿÿX(_ U(_ ((2((32(È(@¦2t¶ {ö(øn@‹{öt¨O3(È(3s3t¶ 55{ö(øn3[5{öt¦LL{å;  2  ?þþ+,/L{å; O{ç;   ?_b--(ân{œ8(Â(*2(È(@¦2t¶ YY{ö(øn@‹Y{öt¦M3(È(3s3t¶ ZZ{ö(øn3[Z{öt¦[[{å;  2  þþ+,/[{å; M{å;NN _b\\(Þn{š8(Â(*23( (*W( ( :lüÿÿ(^ 9aüÿÿUU(^ (^ 9MüÿÿU(^ XX(^ (^ :3üÿÿX(_ U(_ ((2((32(È(@¥2t¶ {ö(øn@Š{öt¢H3(È(3r3t¶ 55{ö(øn3Z5{öt¦LL{å;  2  þþ+,/L{å; H{á;   _cg(Ön{ 8(Â(*2(È(@ª2t¶ YY{ö(øn@Y{öt¤J3(È(@t3t¶ ZZ{ö(øn3\Z{öt¦MM{å;  2  þþ+,0M{å; J{ã;   _ch$$(Ún{›8(Â(*23((*W( ( :‰úÿÿ(^ 9~úÿÿUU(^ (^ 9júÿÿU(^ XX(^ (^ :PúÿÿX(_ U(_ ((2((32(È(@¥2t¶ {ö(øn@Š{öt£:3(È(3r3t¶ 55{ö(øn3Z5{öt¦LL{å;  2  þþ+,/L{å; :{â; _dÒ<<(Øn{¡8(Â(*2(È(@ª2t¶ YY{ö(øn@Y{öt¥=3(È(@t3t¶ ZZ{ö(øn3\Z{öt¦MM{å;  2  þþ+,0M{å; ={ä;   _dÑ(Ün{8(Â(*23((*( ( :äØÿÿ(^ 9ÙØÿÿ (^ (^ 9ÇØÿÿ (^ (^ (^ :®Øÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]],](] *(¶(*( ( :=Øÿÿ(^ 92Øÿÿ (^ (^ 9 Øÿÿ (^ (^ (^ :Øÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]],](] *(¶(*( ( :–×ÿÿ(^ 9‹×ÿÿ (^ (^ 9y×ÿÿ (^ (^ (^ :`×ÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]]-(¶(*](] *( ( :ïÖÿÿ(^ 9äÖÿÿ (^ (^ 9ÒÖÿÿ (^ (^ (^ :¹Öÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]]-(¶(*](] *( ( :HÖÿÿ(^ 9=Öÿÿ (^ (^ 9+Öÿÿ (^ (^ (^ :Öÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]]-(¶(*](] *( ( :¡Õÿÿ(^ 9–Õÿÿ (^ (^ 9„Õÿÿ (^ (^ (^ :kÕÿÿ(_  (_ ((^^,-((__, _(œ `^(œ a`a((+]]-(¶(*](] *( ( :úÔÿÿ(^ 9ïÔÿÿ (^ (^ :ÝÔÿÿ (_ ((^^,^(œ ``((+]]-(¶(*](] *( ( :Ôÿÿ(^ 9‚Ôÿÿ (^ (^ :pÔÿÿ (_ ((*( ( :NÔÿÿ(^ 9CÔÿÿ (^ (^ 91Ôÿÿ (^ (^ (^ :Ôÿÿ(_  (_ ((2((32(È(3b2t¶ {ö(ønEq§âS‰Äú5(¶(*{öt¡b3(È(3â3t¶ 55{ö(øn3Ê5{öt¡cc{à;9b{à;dd9þee(Ôn{¢8(Â(*{öt¢H3(È(@tÿÿÿ3t¶ 55{ö(øn@Yÿÿÿ5{öt¢II{á; H{á; þ99(Ôn{¢8(Â(*{öt¤J3(È(@ÿÿÿ3t¶ 55{ö(øn@èþÿÿ5{öt¤KK{ã; J{ã;$$ þ99(Ôn{¢8(Â(*{öt¦L3(È(@’þÿÿ3t¶ 55{ö(øn@wþÿÿ5{öt¦MM{å; L{å;NN þ99(Ôn{¢8(Â(*{öt¨O3(È(@!þÿÿ3t¶ 55{ö(øn@þÿÿ5{öt¨PP{ç; O{ç;-- þ99(Ôn{¢8(Â(*{öt®43(È(@°ýÿÿ3t¶ 55{ö(øn @”ýÿÿ5{öt®66{í;74{í;887þ99(Ôn{¢8(Â(*{öt£:3(È(@>ýÿÿ3t¶ 55{ö(øn@#ýÿÿ5{öt£;;{â;:{â;<<þ99(Ôn{¢8(Â(*{öt¥=3(È(@Íüÿÿ3t¶ 55{ö(øn@²üÿÿ5{öt¥>>{ä; ={ä; þ99(Ôn{¢8(Â(*{öt§?3(È(@\üÿÿ3t¶ 55{ö(øn@Aüÿÿ5{öt§@@{æ;?{æ;þ99(Ôn{¢8(Â(*{öt©A3(È(@ëûÿÿ3t¶ 55{ö(øn@Ðûÿÿ5{öt©BB{è;A{è;CCþ99(Ôn{¢8(Â(*( ( :Ïÿÿ(^ 9Ïÿÿ (^ (^ 9ñÎÿÿ (^ (^ (^ :ØÎÿÿ(_  (_ ((2((32(È(3b2t¶ {ö(ønESÄqâ(¶(*{öt¡b3(È(3â3t¶ 55{ö(øn3Ê5{öt¡cc{à;9b{à;dd9þee(Ôn{¢8(Â(*{öt¦L3(È(@tÿÿÿ3t¶ 55{ö(øn@Yÿÿÿ5{öt¦MM{å; L{å;NN þ99(Ôn{¢8(Â(*{öt¨O3(È(@ÿÿÿ3t¶ 55{ö(øn@èþÿÿ5{öt¨PP{ç; O{ç;-- þ99(Ôn{¢8(Â(*{öt¢H3(È(@’þÿÿ3t¶ 55{ö(øn@wþÿÿ5{öt¢II{á; H{á; þ99(Ôn{¢8(Â(*{öt¤J3(È(@!þÿÿ3t¶ 55{ö(øn@þÿÿ5{öt¤KK{ã; J{ã;$$ þ99(Ôn{¢8(Â(*( tñ- {\[(±´@÷Ëÿÿ( ( :çËÿÿ(^ 9ÜËÿÿ (^ (^ :ÊËÿÿ(³ 9¿Ëÿÿ(³ (³ :«Ëÿÿ(´ {¡8(ƒ]9“Ëÿÿ(´  (_ (((È(3bt¶ {ö(ønE²1Ý\‡3(¶(*{öt¢{á;  Ò(Øn{¡8(Â(*{öt¤{ã;  Ò(Øn{¡8(Â(*{öt¦{å;  Ò(Øn{¡8(Â(*{öt¨{ç;  Ò(Øn{¡8(Â(*{öt£{â;Ò<<(Øn{¡8(Â(*{öt¥{ä;  Ò(Øn{¡8(Â(*{öt§{æ;Ò(Øn{¡8(Â(*{öt©{è;Ò(Øn{¡8(Â(**0*Z(` ,  (` (a {: X+Ø*0*Z(` ,  (` (a {9 X+Ø*6sb (H+*6sc (H+*0*Z(` , (` (a {; ,*+Ù*>sd þ(I+*0*Z(` , (` (a {< ,*+Ù*>se þ(I+*0_\({ ,E ({ (| of (g  (h (i (j +³(J+(K+sk *B(L+þ(M+*~ï*~ð*0$(N+ (O+(P+(Q+sl *0"(R+ (S+(T+(U+sl *0 `(È(E ‰;(È(3Tt¶  {÷ (=^(2^(K^ , (Ý^þ+,+ {k=om , {÷ (¶(*(È(E q=ŽcqqqrÀp úsó zt³  {ñŒœ,+ r¨9ps‚ zŽi¯ Y2/£¯ (((¤¯ XX3Ñ(¼(*t´   {ó {ò  ofmon ,+- s˜)  sš) ofm  oj{Æ:(V+,(¶(* Œœ,+ r¨9ps‚ zŽi¯  Y2/£¯ (((¤¯ XX3Ñ (¾(*tµ {õ{ô{t; {t;ofmon ,+$ sœ)sž) ofmošj(W+,(¶(*Œœ,+ r¨9ps‚ zŽi¯ Y2/£¯ (((¤¯ XX3Ñ(À(*t± {î((((Ú'(Û'**t² {ï{ð(((oÆm(=^(P^ , (Ý^þ+,+ {k=om ,+ oo ,*(º(*t· {û(=^(_, (Ü^þ+,+{n=op ,+{t={k=om ,+{q=om ,+{r=oq ,+{s=or 9Ôûÿÿ{û(¶(*t¸ {þ(=^(_, (Ü^þ+,+{n=op ,+{t={k=om ,+{q=om ,+{r=oq ,+{s=or 9"ûÿÿ{þ8Iÿÿÿ0 ${{(((s)*0 Sb{(X+ s )s¢){ { o7 o8 (Y+(Z+s)s)*0 ái{Y5 sŽ) {Z5 s) {[5s’) {\5s”){]5s–)    s¤)   tì  }X   tì  }Y  tì  }Z  tì  }[  tì }\ tì }] tì }^ *~ñ*0Aks¦){(X+ { s¨) { o7 o8 (Y+s)s)*~ò*0Åm(È(@«t²  {ï(ûh uÀ9tÀ(s (g þþ,s®)([++,+6(¨ þþ,%(?^(P^ {m=s°)(\++,#tÀ(s {ð8Iÿÿÿ(È(E It*(È(3]t¶ {÷(¨ þþ,*(?^(2^(K^ {m=s²)(\++,{÷(¶(*(È(E ‡‰‡‡‡‡rÀp Osó zt³ {ñ  Œœ,+ r¨9ps‚ z Ži  ¯    Y   2'    £¯ (/(¤¯  X   X3Ù (¼(*t´ {ó {ò Œœ,+ r¨9ps‚ z Ži  ¯    Y   2'    £¯ (/(¤¯  X   X3Ù (¾(*tµ {õ {ô Œœ,+ r¨9ps‚ z Ži  ¯    Y   2'    £¯ (/(¤¯  X   X3Ù (À(**t± {î(/((Ú'(Û'*t² {ï{ð(/((º(*t· {û(¨ þ,(@^+(>^(_(g þþ,{n=s´)([++,+/(¨ þþ,{t={m=s¶)(\++,+{o=9åüÿÿ{û(¶(*t¸ {þ(¨ þ,(@^+(>^(_(g þþ,{n=s¸)([++,+/(¨ þþ,{t={m=sº)(\++,+{o=9/üÿÿ{þ8Eÿÿÿj{{(/(s)*0Eos¼){(X+ { s¾) { o7 o8 (Z+s)s)*0,ps¬)(Ã+ (g - (¨ -*  (/(*0 Åq(È(E å¼+ž-?ëft²  {ï {ð (](3((º(*t³  {ñŒœ,+ r¨9ps‚ zŽi¯ Y2'£¯ (3(¤¯ XX3Ù(¼(*t´   {ó {ò {§4 ( ]Œœ,+ r¨9ps‚ zŽi¯  Y2'£¯ (3(¤¯ XX3Ù (¾(*tµ   {õ {ô {§4 (]Œœ,+ r¨9ps‚ zŽi¯ Y2'£¯ (3(¤¯ XX3Ù(À(*t± {î (3((Ú'(Û'*(¶(*t· {ø{ü{ú{û{ù(õb(._($_(Ä(*t¶ {÷{ö($_(Â(*t¸ {ý{þ(õb(._(Æ(*j{{(3(s)*0?o{(X+ { sÀ) { o7 o8 (Z+s)s)*0@r  sÂ)  tû  }ltû }mtû }n*0(s(¹^ (+(oc (6(þoc *rqp*0&t(îo3tß {L< oÆmoól**0Ÿu(îoE*tß {L< oãmþ*tã {`< {c<(Ê þ, (9(þ+, 8cÿÿÿ*^(:(,(Æ(*(¶(*0Ja{,< {1oH)-+{U;{`;þþ,+{; ,*ot oU *Zsu (]+þ(^+*0”('¶Ea**0*v(îoE%%%'ƒ³W%*tß{L< oÆmoól,*oãm**tã {c<(Ê -Å{`< (9(,*8bÿÿÿté {~< {€<(@(,*(C(*tä{f< {e<(A(,*8ÿÿÿtå{j< {i<  (B(,*8ÖþÿÿBsÆ)þ(_+*BsÈ)þ(T+*:{-<(?(*0Nx(ÒpE)DFFFÅÅÅÅÅ¥ÃHJLŇŅi£ÅÅÅÅÅÅÅÅ*t {Í< {Ì<(hq3(d_**tþ {À<  {t;(d_*****t {Ó<{Ô<(f_*tsÊ){Ü<þ(`+**t{×<{Ø<(g_**t{Ï<on{Ô:***0Dyþ,omrqpo þ+,"(@^(à^(_ {n=oU þ**0îz(Ê 9 (Ë (îo@}(Ë tß {L<(ûh uÀ,]tÀ(s (Ê  þ, (a+(ª+(D(+,(tÀ(s (Ê (a+sv (w *(Ê ,I(Ë {+(?(þ,+(Ê (Ë (l 8ÿÿÿ*0 »}{,< {.< {-< {.,{1oH)+- oölþ+,* (›](îo3Ntß{L<(ûhuÀ,.tÀ(s (k (D(,tÀ(s (  *(îo @Ftç  {v<uÃ9, {v<tà  {<(îo@  {<tß  {L<(ûh  uÀ9ä tÀ(s  {w<  {< {<þ,4(@^ (@^(à^(î^(_{n=oU þ+,| tÀ(s  {y< {w<  {t< {x< {< {< {u<oîŠ( ](Co (âo(  *(îo@tãomrqpo :ó{b<{d<{a<{`<{c<(k (l (E(-*(x (ø (Ê ,`(x (ø (x (ù (Ê (Ë {+(ú (û (l (ª+('`(  *(x (ù {+(ú (û ('`(  *(îo @’té  {€<(Ê 9O {€<(Ë (îo @ (Ë té!!{€<(Ê 9Â!{€<(Ê (Ê 9(Ê (Ê (Ê :<(Ê (Ê 9(Ê (Ê (Ê :n!{< {<"!{< {<!{~<# {~<$(Ë (Ë (Ë %(k %(k (l (l (l (E(-*(x (ø (Ê 95(x (ø &&(Ê (Ê 9–&(Ê ''(Ê (Ê -d(x (ù (Ê -Q'(Ë (&(Ë )$"#)((k (l (l (æo(k (l (l (æo(  *r}ps¤*(¤*(b+*(x (ù (Ê ,Ò(x (ù ''(Ê (Ê -¶'(Ë (&(Ë )$"#)(k (l (l (æo((k (l (l (æo(  *(x (ù (Ê 9Oÿÿÿ(x (ù &&(Ê (Ê 90ÿÿÿ&(Ê ''(Ê (Ê :ÿÿÿ'(Ë (&(Ë )$"#)(k (l (l (æo((k (l (l (æo(  * {< {< {~<# {€<&(k &(E(-*(x (ù '(x (ø +#+'(l (ª+(æo(  * {< {< {~< {€<&#8ÿÿÿ {< {< {~< {€<&#8Xÿÿÿ {< {< {~< {€<&#8/ÿÿÿ {< {< {~< {€<&#8ÿÿÿ {< {< {~< {€<&#8Ýþÿÿ {< {< {~< {€<&#8´þÿÿ*05~(c+ -s (Þosy * (â sy *0Ý€(›] (îoE$*tß{L< (¤ (k sz ({ *tã {`<(H( ,Æ (| (} {b< (| (~ {c< (| ( (ß+(ª+sz ({ *0 _ƒ(îo@Qtå {i<{,< {i<{-< (],{U;{b;þþ+,{U;{`;þþ+, oólþ+,{U;|\;(ºi(€iþþ+9Â{i<{,< {i<{.< {i<{-< {k<{j<(ž]sÌ)(d+,*{+{U;{Z;(W]sÎ)(e+(f+  (€   (  {+ (³_ sÐ)  (¼]þ(£+**0£„(îo@Ÿtã {`<(îo@‡{`<tß {c<(Ê ,n{c< (Ê (Ê ,Z(Ê (Ê (Ê -F{B8{E8{L<{e9(i,'{L< (Ë (Ë s‚ (ƒ *(îo@êtã{`<(îo@Ð{`<tß{b<(³ 9±{b<  (³ (³ :—{c<(Ê 9†{c<  (Ê (Ê ,o (Ê   (Ê (Ê -X{B8{E8{L<{f9(i,8{L< (´   (Ë  (Ë  ( s‚ (ƒ **0¤…(îo@–tã {`<(îo@~{`<tß {c<(Ê ,e{c< (Ê (Ê ,Q(Ê (Ë (ž] (Ê (Ê -0{L<{b<(Ë s„ (… **0l‡(K( ,`{B8{E8(† (‡ (i,A(† (‡ († (ˆ († (‰ († (Š  s‹ (Œ **0—‰{c9(L( 9( (Ž (³ ,o( (Ž (³ (³ -V( ( (Ê ,D( ( (Ê (Ê -+(´ (Ë ( (  s‘ (’ **0+Š{g9(L( 9( (Ž (³ 9( (Ž (³ (³ 9ä(³ (³ (³ 9Í(³ (³ (³ 9¶ (³ (³ (³ :( ( (Ê 9ˆ( ( (Ê (Ê ,m(Ê (Ê (Ê -V(´ (Ë (Ë  (´  (´  (´  ( (     s“ (” **0º‹{h9(L( 9¤( (Ž (³ 9( (Ž (³ (³ ,v(³ (³ (³ -b( ( (Ê ,P( ( (Ê (Ê -7(´  (Ë (´ ( ( s• (– **0º‹{i9(L( 9¤( (Ž (³ 9( (Ž (³ (³ ,v(³ (³ (³ -b( ( (Ê ,P( ( (Ê (Ê -7(´  (Ë (´ ( ( s• (– **0 Œ{j9(L( 9ó( (Ž (³ 9Þ( (Ž (³ (³ 9Â(³ (³ (³ 9«(³ (³ (³ :”( ( (Ê 9( ( (Ê (Ê ,d(Ê (Ê (Ê -M(´ (Ë (Ë  (´  (´  ( (    s“ (” **0}{l9(L( ,j( (Ž (³ ,X( (Ž (³ (³ ,?(³ (³ (³ -+(´ (´ ( (  s— (˜ **0YŽ(îo 39té {~<(Òp3${< {< {€< sÒ)s™ *(k (l sÔ)s™ *0 P‘(îo@Btã {`<(îo@*{`<tß {c<(Ê 9{c< (Ê (Ê 9÷(Ê (Ë (S((š (Ê 9Ò(š  (Ê (Ê :¹{L<oÆmoÿlu,+(t{B8{E8{:{m9(i,k{a< {L<{`< {b< (Ë  (Ê  (› {d<(Ë      sÖ)sœ ( **0(ò rûp{¥8(©] (ò (r_(­]*0>’{)< {+< {*< (W( , (â (›o(ž **0 ˜( ] (O( ,'(Ÿ (  (Ÿ (¡  (ö_(  *(P(,,(Ÿ (  (M(,(¢ (£ (  *(Q(,t(¤ (¥ (¤ (¦ (¤ (§ (¤ (¨ (¤ (©  (W(  -*   (â    (õ_(  *(R(  ,) (ª (@  (ª (A  (÷_(  *(N(9(¤ (¦ (M(9ç(¤ (§ (îo@Ð(¤ (§ tá{W<(g 9¬{W<(g (g :’(¤ (¥ (¢ (£ (h {X<(¤ (¨ {Y<(¤ (©  (W(  ,1   (â     (r_(­](ì_(  **(îoEW*tå{k<{j< {i<(W(  -*   (â s (Þo(  *tç{w<{t<{v<{x<{u<Œô,+ r¨9ps‚ zŽi×Y2&£Ö(V(¤×XX3ÚsØ)(g+9‚ŒØ,+ r¨9ps‚ zŽiÖ!Y2%!£×(h+¤ÖXX3Û! sÚ) (i+   (âo(  **0 ­œ(N( 9{+(¤ (© {+{ÿ8(¤ (n(ƒ]9“(¤ (¨ (¤ (© {+(W( - s¬ (­ * (â {+( ]{+( ]{+( ](U((î_(×_s— (˜ s¬ (­ *(Q(9{+(¤ (© {+{ÿ8(¤ (n(ƒ],(¤ (¨ (¤ (© 8(ÿÿÿ(O(9[{+(Ÿ (® {+{ÿ8(¤ (n(ƒ],(Ÿ (¡ (Ÿ (® 8Ëþÿÿ(P(,M{+(Ÿ (® {+{ÿ8(¤ (n(ƒ],(Ÿ (¡ (Ÿ (® 8qþÿÿ(T(  9¢ (¯ (°  (¯ (±  (X(  -*   (² (³   (² (´  -+5 (ª (A (ª (@ {+( ](Ú_ o¾ s¬ (­ **(P(9<ÿÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9 ÿÿÿ(Ÿ (¡ (Ÿ (® 8]ýÿÿ(O(9­{+(Ÿ (® {+{ÿ8(¤ (n(ƒ],(Ÿ (¡ (Ÿ (® 8ýÿÿ(P(9þÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9Nþÿÿ(Ÿ (¡ (Ÿ (® 8 üÿÿ(P(9þÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9îýÿÿ(Ÿ (¡ (Ÿ (® 8@üÿÿ(Q(9j{+(¤ (© {+{ÿ8(¤ (n(ƒ],(¤ (¨ (¤ (© 8ãûÿÿ(O(9­{+(Ÿ (® {+{ÿ8(¤ (n(ƒ],(Ÿ (¡ (Ÿ (® 8†ûÿÿ(P(9ýÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9Ôüÿÿ(Ÿ (¡ (Ÿ (® 8&ûÿÿ(P(9¥üÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9tüÿÿ(Ÿ (¡ (Ÿ (® 8Æúÿÿ(O(9­{+(Ÿ (® {+{ÿ8(¤ (n(ƒ],(Ÿ (¡ (Ÿ (® 8iúÿÿ(P(9èûÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9·ûÿÿ(Ÿ (¡ (Ÿ (® 8 úÿÿ(P(9ˆûÿÿ{+(Ÿ (® {+{ÿ8(¤ (n(ƒ]9Wûÿÿ(Ÿ (¡ (Ÿ (® 8©ùÿÿ0ž{+ (J( 9(µ (¶ (µ (· (îo @Û tê{„<9Ç{‚<(X(-*  (² (´   (² (³  -C ,:   (ª (A   (ª (@ {+( ]  (Ú_+@ +; -ô(•  {+( ] {+{ÿ8(¤ (n (Ù_(  ***0 —¢{+(§` {+(3` (›] (îoE@êI|ì­2>gŽ#sÜ)þ(k(*tÞ {K< {J< {I<þ(b(*tß{L<{N<(s(*tê  {†< {ƒ<  {…< {„<  {‚< sÞ)sà)sâ) (! (j+s     (èo(¶( s¸ s¹ *tæ{n<{q<{s<{r<{p< {o< ([(*té{<{<{~<{€<þ(`(*tã{b<{d<{a<{`< {c<(Y(- þ(z(*(â 8­ýÿÿtá{Z<{Y<{W<(º sä)(k+(® (¯ (‚s(¶o(—]þ(|(*tâ{\<{_<(…s(® (‚s(¶o(‘]þ(|(*{+{-(–H8êüÿÿtç{y<{w< {t<!{x<{u<"{v<#!"# þ(‡(*tä$${g<${f< ${e<%% (g(*tè&&{}<&{|< &{{<'&{z<('(Z())(» *)(¼ + (Z(,,(» -,(¼ .(+.(äo*{½ 0-{½ 101/0+1/(¶(*{¾ 0-{¾ 101/0+1/*{¿ ,+-{¿ *{À ,+-{À s¸ s¹ *r™Þps\ z0ަ(Z( (» (¼ (\( (Á  ( (^((à (Ä (°](¶( {½ X(l+X(l+Xs¸ s¹ *jsæ)( (Å (m+*0 À¨{<= {;= {9= {>= {=={:=oåq(Ô {5{6{8{9{:sh)(ú'sè)(n+  (Z(  (»   (¼   (Ûq(¶( {½ s¸ sÇ *jsê)( (Å (o+*09©(\( ( (Á sÈ (¶((l+s¸ sÉ *0 Ô ¬(ÒpEhr&÷”Û (Òp@—t {Ü<( :€{Ý<(³ ,s{Ý< (³ (³ -_(Ê ,V (Ê (Ê -F(´ (Ë {+{+(r_ (ƒ],(´ (Ë þ(Z(*(~((Ê (Ë (ÒpE–P8ät (Ì ,è  (Ì (Ì -Ö {Ï<  (Í    (c(8›t (Ì ,Ÿ  (Ì (Ì - {Û< (Í   (d(+Ut (Ì 9Vÿÿÿ  (Ì (Ì :Aÿÿÿ{Ô< (Í  {Ó< (e(-(¶((a(*(] (p(-(a(*(â þ(Z(*(³ 9aýÿÿ (³ (³ 9Oýÿÿ(³ (³ (³ :6ýÿÿ(Ê 9*ýÿÿ (Ê (Ê :ýÿÿ(´ (´ (Ë (Z((»  (¼ {+ (ƒ],  s¹ * (Ê](¶( {¾ X {½ Xs¸ s¹ *t(Ê 9„üÿÿ (Ë (îo@püÿÿ(Ë tá{W<(g 9Rüÿÿ{W<(g (g :8üÿÿ(Ê (Ê 9(üÿÿ(Ê (Ë (îo@üÿÿ(Ë tá{W<(g 9ïûÿÿ{W<(g (g :Õûÿÿ(Ê (Ê :Äûÿÿ{Ä<{Å<{X<{X<(n(*t (Ê 9zûÿÿ (Ë (îo@fûÿÿ(Ë tá{W<(g 9Hûÿÿ{W<(g (g :.ûÿÿ(Ê (Ê 9ûÿÿ(Ê (Ë (îo@ûÿÿ(Ë tá{W<(g 9åúÿÿ{W<(g (g :Ëúÿÿ(Ê (Ê 9ºúÿÿ(Ê !!(Ë (îo@Ÿúÿÿ!(Ë tá""{W<(g 9€úÿÿ"{W<##(g (g :fúÿÿ!(Ê (Ê :Uúÿÿ#(h $ {Æ<%"{X<{X<{X<& {Ç<'%$&'(f(*t((³ 9öùÿÿ (³ (³ :äùÿÿ(Ê 9Øùÿÿ (Ë (îo@Äùÿÿ(Ë tá{W<(g 9¦ùÿÿ{W<(g (g :Œùÿÿ(Ê (Ê 9|ùÿÿ(Ê (Ë (îo@bùÿÿ(Ë tá{W<(g 9Cùÿÿ{W<(g (g :)ùÿÿ(Ê (Ê :ùÿÿ({Ê<)({Ë<*(´ {X<{X<)* (l(*t+(³ 9Çøÿÿ (³ (³ :µøÿÿ(Ê 9©øÿÿ (Ë (îo@•øÿÿ(Ë tá{W<(g 9wøÿÿ{W<(g (g :]øÿÿ(Ê (Ê 9Møÿÿ(Ê (Ë (îo@3øÿÿ(Ë tá{W<(g 9øÿÿ{W<(g (g :ú÷ÿÿ(Ê (Ê 9é÷ÿÿ(Ê !!(Ë (îo@Î÷ÿÿ!(Ë tá""{W<(g 9¯÷ÿÿ"{W<##(g (g :•÷ÿÿ!(Ê (Ê :„÷ÿÿ#(h $(h ,+{É<-+{È<)(´ "{X<{X<{X<&&,$ )-(m(*t.(³ :÷ÿÿ.{à</ /þ(o(*t0(Ê 9ãöÿÿ (Ê (Ê :Ðöÿÿ0{ê<1(Ë 1oˆ³oõ²uw-þ,.1oˆ³oõ²ox²oG²{+{F8{±;(ñ +,1oˆ³o÷²rép(ñ +,1oгrp(ñ +,{+{+(r_(^+9öÿÿ0{ê<1(Ë 0{í< 0{ì<0{ë<2(È'{+{—8(¤ (¥ (¾p(¤ (k (l (æoþ(Z(*0f¯(l+ (p+ (q+ sì)(r+ {+(C((ÒpE3AP+PPPP^PaPaoaPaPa¼PPPØØØPPPtþ{À< (s+(À((Ý'sÎ 8ÀsÎ 8² (s+(¼((Ý'sÎ 8’sÎ 8„ oÏ   ((  ,( (Ð (Ñ  (Ð (Ò (À(+sÎ 87t  {Ý<  {Ü<  oÓ /+{+  ((sÎ 8ít{Â<Ži [sÎ 8Èt{Ã<Ži [sÎ 8£sÎ 8•t{Í<{Ì<ofmo“j(hq39 oÔ oÕ .++sî) (t+(s+(¾((Ý'+(¶(sÎ +rps¤(¤(u+(Ö  (× (Òp3't{ã<{å<-++ XX,+s¸ (q(-,(æo XX,+s¸ s¹ *(â s¹ *0b°{+(é_ -=(Â((øn3t¯ {î; ob  [+s¸ s¹ *  (â þ(Z(*0q²{Ø (( ,_ {1oH), {¿ þ+,@(Ù on Ži2rsps¤(¤(¥+ £¯ (\ **0™²{Ø (( 9„ {1oH), {¿ þ+,e(Ù Ži oµ .rßps¤(¤(¥+ 2r!ps¤(¤(¥+£¯ (\ **0¥³{Ø (( 9Ž(Ð (Ñ {1oH), {¿ þ+,{+{V8(6++,L(Ð (Ñ (Ð (Ò  Ži2r‡ps¤(¤(¥+ £¯ (\ **0 Aµ(Z( (» (¼ (Z( (»  (¼ (Z((» (¼ (Šq@ç(îo @Ùté  {~<(Òp@½ {~<t  {Ü<( 9ž {Ü<  ( ('¶Ea„z(Šq3k(îo3atÞ  {I<(øn3I {I<t¦{å; ÿÿÿ/-{å;{+( ](`(ˆqsÚ 8ÜsÚ 8Í ( ( :kÿÿÿ {€<(Ê 9Zÿÿÿ {€<(Ë (îo @>ÿÿÿ(Ë té{~<(Òp@ÿÿÿ{~<t{Ü<( 9þþÿÿ{Ü<( ('¶T@âþÿÿ( ( 9Ñþÿÿ( ( ('¶ @µþÿÿ( tñ-{\[(±´@•þÿÿ( ( :„þÿÿ{€<(Ê 9sþÿÿ{€<(Ê (Ê :Yþÿÿ(Ê (Ê 9Hþÿÿ(Ê (Ë (îo@-þÿÿ(Ë tÞ  {I<(øn@ þÿÿ {I<t¦{å;YE8èýÿÿ(Ê (Ê :×ýÿÿ(Ë (Z((» {¿ þ9³ýÿÿ(Ë {+( ](`(ˆqsÚ 8× ( ( :uýÿÿ {€<(Ê 9dýÿÿ {€<(Ë (îo @Hýÿÿ(Ë té{~<(Òp@'ýÿÿ{~<t{Ü<( 9ýÿÿ{Ü<( ('¶T@ìüÿÿ( ( 9Ûüÿÿ( ( ('¶ @¿üÿÿ( tñ-{\[(±´@Ÿüÿÿ( ( :Žüÿÿ{€<(Ê 9}üÿÿ{€<(Ê (Ê :cüÿÿ(Ê (Ê 9Rüÿÿ(Ê (Ë (îo@7üÿÿ(Ë tÞ  {I<(øn@üÿÿ {I<t¦{å;YE8òûÿÿ(Ê (Ê :áûÿÿ(Ë (Z((» {¿ þ9½ûÿÿ(Ë 8þÿÿ  (Û  (Ü (Å (Ý (Ý (Ý (q+-/{+(ôn{¥8(Ðo(¶(s¸ s¹ *{+(Þ](l+X(¶((p+Xs¸ s¹ *0ʺsð)(²+ (“( (Þ (ß (Z((» (¼ (@^(_sò) (v+ sô) (w+  sö) (x+(à  (á  (z {Ø (2(  s (Üo (Ý  (y+s¹ *0 w»{1{{1{#  (†( (» (¼  (Å (Ý (Ý  (i (›o(  (â (â  (‰(*0 ¼(ªq (n oµq,9{1oH),+*(îo3tÞ {I<(ønþ++, {¿ þ+, s¹ *(Ôo(¶({¾ {¾ X{½ {½ X(ªq (n oµqþ,+{¿ ,+{¿ (ªq (n oµq, {À +{À ,+{À s¸ s¹ *0æ¾sü)(z+,g({+ (ã (ä (¶({¾ {¾ XX{½ {½ XX{¿ ,+{¿ {À s¸ s¹ *{,<(i (f (z {Ø (2(  {¾ {¾ XY{½ {½ XY{¿ ,+{¿ {À s¸ s¹ *0<Â{1oH), (I(+ (îoEðd(Þ^ 9Ò( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (   (‹(  (å   (æ   (Š(  (ç  (è   sø)8¾þÿÿ(Z(þoé *tà{R<{S<{Q<{P<{O<(Z((»  (¼  sú)89þÿÿtå{k<{j<{i<(’((ê (ë (ì  (ë (í  sþ)8Äýÿÿ0 óÃ(Z( (» (¼ (Z( (»  (¼ (¶({¾ {¾ XX{½ {½ XX{¿ ,+{¿ s¸ {1oH), {¿ þ+,Fu8%-u9%-(jŠ+(jŠ+(lŠ(¬q(Ôos¹ *{+(à]s¹ *0 öÄ(Z( (» (¼ {1oH), {¿ þ+,s¹ *(Z( (»  (¼ (Z((» (¼ (¶({¾ {¾ X{¾ XX{½ {½ X{½ XX{¿ ,+{¿ ,+{¿ s¸  {+  (ß] s¹ *0wÅ(Z( (» (¼ (Z( (»  (¼ {+(Ý](¶({¾ {¾ XX{½ {½ XXs¸ s¹ *0 ~È{,{+{-(EC uì,&tì {î ,{î (â þ(Z(*(~( (Ê (Ìp(¤  (Ë (¶((a(*0ÅÉ(È(E ³Ö`'(È(E H[V(È(3,(£sû£ (¤(¥*,(¤sû£ (¤(¥**,µrïps\ z,§+ð,¢+ët¶  {÷ {ö (Ðo(  *t± {î8ûþÿÿt² {ï{ð(p(-(¼q(Òo(  *(â (  *t¸   {þ  {ý {+(÷b (U_(Y_(  *t·  9’þÿÿ {û {+(÷b (U_(Y_(  *n{¿ ,*{Ø (p(*Þoãm,*{Ø ( ({¾ {½ {¿ {À s¸ *0 XÊ(( oÆm {U;|\;(¹i(½h{(p( -qoÆm {U;|\;(¹i(½h,.oÆm om(¢–(¥sû£ (¤ (+&+{+{s¸ (r(s¹ *(â (îoE11(Z((» (¼ {+(r(s¹ *{+{  s¸ (r(s¹ *0mË{+ (O]($nþ, {+(j]*{+ (O]($nþ, {+(W] {+(\+sï *raps\ z0— {+ {B8{E8(i,{+(^þ+,{+ (O]($nþ+,"{+(t((: ofm(Q`þ+,{+(^-*({ þþ**0 ˆÍoÆmoæl,{+(^+,[(Ê ,G (Ê (Ë {+(÷c(Œ_ (ð  (ñ (l sò *s*sò *s*sò *0 {Ï(v( (ó (ô {+(¼q(ÒooÆm {U;{Z;(³ þ,(ú + (ú (û ('`o¾ þ(Z(*0 ”Ò(îo@¹tß (³ 9§ (³ (³ :•{L<{+{69(´ (|+,t{L< (´  (t((; (: ofm{g:{s:{‚:,(  (õ (ö   (w((÷ **(îo@Œtß (³ 9y(³ (³ :e {L<{+{79(´ (|+9? {L< (´  (t((;  (: ofm{g:{s:{ƒ:  9ï (Ê 9ß(Ê (Ê 9Ê(Ê (Ê (Ê 9°(Ê (Ê (Ê :–(Ë (Ë (ˆ  (Ë {+{+{¤8 (Ê](k (l (l s*(u+(³_(k (l (l   (w((÷ **(îo@¿tß(³ 9¬  (³ (³ :˜{L<{+{39 (´ (|+,u{L<  (´  (t((; (: ofm{g:{s:{„:,(  (õ (ö   (w((÷ **(îo@‘tß(³ 9~(³ (³ :j{L<{+{59(´ (|+9D{L< (´  (t((; (: ofm{g:{s:{…:9ô(Ê 9ä(Ê (Ê 9Ï(Ê (Ê (Ê 9µ(Ê (Ê (Ê :›(Ë (Ë (ø (ù  (Ë {+{+{¤8 (Ê](k (l (l s*(u+(³_(k (l (l  (w((÷ **(îo@¡tß(³ 9Ž(³ (³ :z{L< (´ {+{49 (|+, {+ (O]($nþþ+9,{L< (´  (t((; (: ofm{g:{s:{…:9Ü(Ê 9Ì(Ê (Ê 9·(Ê (Ê (Ê :(Ë (Ë (ø (ù  {+{+{¤8 (Ê]{+(Ð_(k (l (l s*(u+(³_(k (l (l  (w((÷ **(îo@tß (³ 9ó(³ (³ :ß {L<{+{89(´ (|+9¹ {L< (´  (t((; !(: ofm{g:{s:{…:,l(Ê ,_(Ê (Ê -M(Ë (ø (ú  {+(Ï_(k (l (l  !(w((÷ **(îo@tß"(³ 9 !!(³ (³ :÷"{L<{+{99!(´ (|+9Ñ"{L< !(´  (t((; #(: ofm{g:{s:{…:9(Ê ,t(Ê (Ê ,b(Ê (Ê (Ê -K(Ë (ø (ú  (Ë (k (l (l  #(w((÷ **(îo@Ktß$(³ 98##(³ (³ :$${L< #(´ {+{B8{E8{+{69(i,{+ (O]($nþ+9È${L< #(´ {+ (W]%%oµ YE*=+J{+{v9(ð +7{+{w9(ð +${+{x9(ð +{+{y9(ð   -* (ˆ   %{+(Î_(l (w((÷ *(îo@Ktß&(³ 98%%(³ (³ :$&{L< %(´ {+{B8{E8{+{89(i,{+ (O]($nþ+9È&{L< %(´ {+ (W]''oµ YE*=+J{+{n9(ð +7{+{o9(ð +${+{p9(ð +{+{q9(ð   -* (ˆ   '{+(Ï_(l (w((÷ *(îo@Ktß((³ 98''(³ (³ :$({L< '(´ {+{B8{E8{+{49(i,{+ (O]($nþ+9È({L< '(´ {+ (W]))oµ YE*=+J{+{r9(ð +7{+{s9(ð +${+{t9(ð +{+{u9(ð   -* (ˆ   ){+(Ð_(l (w((÷ *(îo@9tß*(³ 9&))(³ (³ :*{L< )(´ {+{B8{E8{+{79(i,{+ (O]($nþ+9¶*{L< )(´ {+ (W]++oµ YE*=+J{+{v9(ð +7{+{w9(ð +${+{x9(ð +{+{y9(ð   -* (ˆ   +(w((÷ *(îo@9tß,(³ 9&++(³ (³ :,{L< +(´ {+{B8{E8{+{99(i,{+ (O]($nþ+9¶,{L< +(´ {+ (W]--oµ YE*=+J{+{n9(ð +7{+{o9(ð +${+{p9(ð +{+{q9(ð   -* (ˆ   -(w((÷ *(îo@9tß.(³ 9&--(³ (³ :.{L< -(´ {+{B8{E8{+{59(i,{+ (O]($nþ+9¶.{L< -(´ {+ (W]//oµ YE*=+J{+{r9(ð +7{+{s9(ð +${+{t9(ð +{+{u9(ð   -* (ˆ   /(w((÷ *(îo@¡tß0(³ 9Ž//(³ (³ :z0{L< /(´ {+{B8{E8{+{}9(i,{+ (\`+,.0{L< /(´ {+{~9 (w((÷ *(îo@¡tß1(³ 9Ž22(³ (³ :z1{L< 2(´ {+{B8{E8{+{9(i,{+ ([`+,.1{L< 2(´ {+{€9 (w((÷ *(îo@ªtß33{L< {+{B8{E8{+{X9(i,q3{L< {+(¼q(ÒooÆm44{U;{Z;(³ þ,(ú + (ú (û ('`(¶(s¸ s¹ (÷ **0 fÕ{Ø (( 9O(û (ü (û (ý (û (þ {.,{1oH)+, {¿ þ+,{5 oÿ þ+,Is *(+(³ þ,+oè X3{1{%oè Xþþ++9š(û (ü (û (ý (û ( (û ( (û (þ oè 1jo (îo3Rtß  {L<  oÆm  {U;|\;(¶i (ži   (n o«i,  {L< ++{+{B8,8×{Ø (È(@Àt² {ï  oÆmoÿlu9t{:{+{B8{E8{+{U8(i,T{:ofmo½ju[,0t[{w=oõ²ox²oG²ráEp(ñ + ++{Ø (È(37t² {ï s * oÆm  {U;{a;(N++,+,+,*{+(÷b(U_(Y_s*(a+{+(ú (û ('`{4{5 o {6{7{8{9{:sh)(Z((÷ **0 5Ø(Z( (» (¼ (x( :(}+:á(îo@¹tß{L<oÆm{U;{b;þþ9‡{L<oÆm{U;{b;(-+  {3< oè   o    / +  s*  (~+(+  Y(¶((€+(3+(++ s*(‚+(ƒ+(}((Ê (Ë {+(ú (û ('`(îoE[t(H(9 (| (} (| ( (| (~ oÆmoël,+(({,+.{7, ( ( oÆmþ+9oè oè X oÆm{U;{b;-5{7-+K( (    {3<o þ+&(E    {3<o þ++{½ (l+X {¾ (p+X (;(  s¸ s¹ *(îo@˜þÿÿþ(Z(*(îo@þÿÿ+å( * ( *0óÛ{1{'9{À ,Dr©ps  ( („+ s*om(¢–{U;{X; (?¥(í+&+Er ps  ( („+ s"*om(¢–{U;{X; (?¥(í+&+{1{*,Lrwps  ( (…+ s(*om(¢–{U;{X; (?¥{½ (ç+&+{1{(,LrÃps  ( (…+ s.*om(¢–{U;{X; (?¥{¾ (ç+&+{1{)9Œ{¿ ,Brps  ( („+ s2*om(¢–{U;{X; (?¥(í+&*r‘ps  ( („+ s6*om(¢–{U;{X; (?¥(í+&**0 Ü(îoE þ(Z(*tá {Y< {T< þþ,o} {U;{b;þ+ {+{-(œH(½ (» (¾ (¿  (¼  (À  {4{5{6,  (} s  (  +{8{9{:sh) s* (n+s* (n+(ú's*(†+ (‡+ (Z((» (¼   (´]o— (¨ þ,+X{½ ,Q  (} {À - o m+{1{&, oölþ+,({(++ -(Ä(+(¶( ,+ Xs¸ s¹ *tâ{^<{[< 8ìýÿÿž(  -($(*s8*(k (Å (ˆ+*ž(Ê -($(*s:*(k (Å (‰+*†(Ê þ,(%(*s<*(Š+*N(‚(þ(ƒ(*~s>*(p+(  (Å (‹+*0~Ý(È(3st³  (îo3ctß {ñ {N< {L<{M<{+{+(r_(W]{+  s@*(3+(Œ+(³_**0.Þ(Z( (» (¼ {1{$(†(*0ay, {2+,{9 þþ+,;(@^(_ {p=- {o=þ+,{n=sB*o ***0 ß( ] rûp{+{¥8(©] (ò {+(r_ {4-rqp+(¶ {Irqp( {+{¥8 (n(©](ò  (ó    (­] {+{¥8 (n(¤ {+ (ôn {¥8(Ðo(k (l (Úo(¿]{Ø {½ {¿ {À s¸ s¹ *ž(+, (…(*s¹ *0 Iá(‹( (å (æ (( (  ( (‰(*þ(¶({9 { X{: { X{; ,+{ { s¸ *0)â(¶((y+ (†_(Ž+s¹ *0ªã{)< {+< {*< (Z( (»  (¼ {1{{1{#(†((» (¼ (z {Ø (2( (›o {¾ {½ {¿ {À s¸ s *0äuÅ-UuÃ:ntÄ {< {< (( (Ê  (Ë (Eo(¶((+s *tÅ{ <{ <(’(  (ê   (ë (ì   (ë (í   (‹(  (æ  (å sD*  (z+9› (Å (Ý (Ý (¶((y+uÄ,btÄ {< oè þ,H{< {< o  ({+(ã (k (l (Eos * (Gos *s *tÃ{<{<{<{<{+{+(r_{+{¢8(ƒ],{+(õb(U_+þ(Ž(*0åå(woE\^(wo3*(( , (œ (ön (n oÿn(– *(woE****tÎ (( ,‘(œ {< (ön(n oÿn,+(ön(n oÿn,*(n oÿn(– *0Oæ(wo3=tÌ (( ,,(Ð (Ñ {< {+{V8 (6+(– *(Œ(*0 Ôé(Z( (» (¼ {1oH), {¿ þ+,PsF*(+,&( {<(q (p s + sH*(‘+s + s (  ( (¢ -,  (© þ(‹(*((*0øìsJ*(’+(“+ ( ( ,G(© (‹((æ (å (p (Å (Ý s + (Å s (  (  o  o  XZ (Ý  (”+(¶((y+(Co{Ø {¾  X{½  X{¿ {À s¸ s *08í(È(E ÝßSyçdÝÝt·  {ú {û {ù {1{% XX1(¶(*(@^(_{o=,(¶(**t² {ð{ï(((º(*t³ {ñŒœ,+ r¨9ps‚ zŽi ¯   Y  2%   £¯ ((¤¯  X  X3Û (¼(*t´   {ò  {ó Œœ,+ r¨9ps‚ zŽi ¯    Y  2%   £¯ ((¤¯  X  X3Û  (¾(*tµ {õ{ôŒœ,+ r¨9ps‚ zŽi ¯   Y  2%   £¯ ((¤¯  X  X3Û (À(**t± {î(((Ú'(Û'*0Õ {+ {B8{E8{+{,9(i,+%{+ {B8{E8{+{˜9(i,+%{+ {B8{E8{+{š9(i,+%{+ {B8{E8{+{’9(i,+%{+ {B8{E8{+{–9(i,+%{+ {B8{E8{+{¤9(i,+%{+ {B8{E8{+{”9(i,+%{+ {B8{E8{+{¢9(i,+%{+ {B8{E8{+{ 9(i,+%{+ {B8{E8{+{9(i,+%{+ {B8{E8{+{:9(i,+%{+ {B8{E8{+{69(i,+%{+ {B8{E8{+{79(i,+%{+ {B8{E8{+{39(i,+%{+ {B8{E8{+{49(i,+%{+ {B8{E8{+{59(i,*{+ {B8{E8{+{89þ(i*0 )ï{,< {.< {-< ,={4{5{6(! {7{8{9{:sh)+oöl,{4þþ+,+;oÚl(Ô {5{6{7{8{9{:sh){U;|\;(¹i (Ri   (n oai,9{+{,{-{/{0{1{2{3s`)+(à {+(_{U;{Z;(|(  (»   (¼  {Ø  {¾ X {½ X {¿  {À s¸ s¹ (¼  (»  {U;|\;(¹i(½h, +/ {Ø (( {¾  {½  {¿  {À s¸ {U;|\;(¹i(½h-{1oI)þ+,+ {+(^,+({U;|\;(¹i (Xi   (n oai,8˜{U;{c;u,8{t{:{+{Ê8ogmþ,Q{+{-{U;{X;(k^{+{Ë8sL*(¡P(-P+,+$sÁm{+{B8, (‘(+,)(¶({¾ {½ {¿ {À s¸ +{U;|\;(¹i(½h,{Ø (ê'+, ((? (/ ((= (@ )((? (+ )( rs2 s4 s5 *Vsd*s4 (¡+*0{{c= {d= owj (˜( (' ((  (' ()  (* (+ (ø'(4r{IsA sB s4 sC *0jsh*s4 (¢+ (D (/ (E (D (+ (£+(F (G ¥¡(î'sH  s4 sI *0 S{e= {f= {g={K= {g= {i={h=,i {K= {M= {L= (&  (˜(  (' ((   (* (/   (' ()    (r sJ +l (—((7  (6  (ø'  {4 {5 {6 {7 {8 {9oK  {:sh) sJ (L  (M (N  (Í^ (:r(+( oc sO *0 * 'sP s· s`)(œ(*0- (È(E 9åB„”±ùZt¶  {÷ {ö (X(fY(¤+&(ÙX(¥+&*(X*t²  {ð {ï(Xrm p(àX(¦+&8Mÿÿÿt³ {ñ(Xsj*(§+(¨+&*tµ   {õ {ô (Xsl*(§+ (ÓX (©+& (¨+&*t·   {ü  {û  {ú {ù(X(X(X(wY (ª+&(ÙX(¥+&*t¸ {þ {ý(X(X(wY (ª+&*t´ {ò{ó(Xr{ p(ÒXsn*(§+ («+& (¨+&*t± {î8Óýÿÿ0 { { (ž((X*0^r p(àX sr*(¬+ st*(­+ {{ o7 o8 (®+ { (¯+&(°+&*Rsv*(±+(²+&*0Esx* ($XE '-DV‡Èßr› ps\ z(gYo[ (âXo\ (Â(*(¶(*(éXo] (¢((º(*(³+o^ (¼(*(³+ (ÖXo_ o^ sZ (Ñ (Ò (À(*((X ((X(xYo` (âXo\ (·hoE (Ä(*((X(xYo` (Æ(*(³+ (ÕXoa o^ sb (c (d (¾(*0(¢( (Ú'(Û'*0(£( (%Xs)*0Msz*(´+ s|*(µ+ oe of sg (h (i ¥ s) s)*Rs~*(¶+þoj *.s¨(€á*( *~á*&*Zr.8psk (·+ol *nþ, þ,**þ,**:¥® o¬(*0,¥®  þ,¥® þ,**¥® þ,**0þ, & **6(n o¯(*nþ, u® ,**þþ*Rþ,þ*þþ*0u®  ,o²(**2sµ(€ã*:( }â*~ã**(È(þ*"sÊ(**(È(þ*"sÍ(**(È(þ*sÐ(**(È(þ*"sÒ(**(È(þ*"sÕ(**(È(þ*"sØ(**(È(þ*2sÛ(**(È(þ*"sá(**(È(þ*{â*Zr.8psm (¸+on *Z(µ(}í}î*{í*{î*Z(µ(}ï}ð*{ï*{ð*>(µ(}ñ*{ñ*Z(µ(}ò}ó*{ò*{ó*Z(µ(}ô}õ*{ô*{õ*Z(µ(}ö}÷*{ö*{÷*¶(µ(}ø}ù}ú}û}ü*{ø*{ù*{ú*{û*{ü*Z(µ(}ý}þ*{ý*{þ*:( }ÿ*2{ÿ{í*2{ÿ{î*:( }*2{{ï*2{{ð*:( }*2{{ñ*:( }*2{{ò*2{{ó*:( }*2{{ô*2{{õ*:( }*2{{ö*2{{÷*:( }*2{{ø*2{{ù*2{{ú*2{{û*2{{ü*:( }*2{{ý*2{{þ*{*{*V( }}*²o &s)(¹+} s)(º+} *J{ o7 o8 *v{ o7 o8 (Z+s)*v{ o7 o8 (Y+s)*b{ o7 oÆmoR *~{ oS oÆmoÜlþoT *:(o } *0m (p { oq oï ,1or (V  (s oÆmsC ot +Ç Þu , oâ &Ü&Ü&*=PÒ} } }}}}(u *0×{YE +8‹+w8£{ oq }}{oï ,]{or } { (s }}{oÆmoÜl{ sv }*}} +–}{(»+}}}*0‡e {YE++e{E + ++++}{(»+}} Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{E + + +++***"{*0 { s )*:(w }*0 {s )(¼+þ(½+*{*{*V( }}*0Cþ,: ¹y7ž{(¾+bcXXX ¹y7ž{(¿+bcXXX **6(n o)*0F!þ,7uÆ  ,+{{(À+,{{þ(Á+***þþ*0@þ,1þ,){{(Â+,{{þ(Ã+***þþ*0!uÆ  , þo)**:(x }y *Z{y oz þ(|”*:({ }| *^{| (Ä+þ(|”*:(~ }*:{(Ò'*:( }*‚Œm(û{(Ô'(v”*:(€ }*0'"(s (V (_e{(Õ'(v”*{ *{‚ *{ƒ *{„ *{… *²( } }‚ }ƒ }„ }… *0K#þ,:þ,2(y { {  (ˆ+ /*1*(Å+**þ,**:¥-o† *0V%¥- þ,9¥-þ,,{ {  (ˆ+ /*1*(Æ+**¥-þ,**0~&þ,u ¹y7ž{… bcXXX ¹y7ž{„ bcXXX ¹y7ž{ƒ bcXXX ¹y7ž{‚ bcXXX ¹y7ž{ (€+bcXXX **6(n o‡ *0t'þ,eu- ,Y{ { (‚+,?{‚ {‚ 3/{ƒ {ƒ 3{„ {„ 3{… {… þ******þþ*0o(þ,`þ,X{ { („+,?{‚ {‚ 3/{ƒ {ƒ 3{„ {„ 3{… {… þ******þþ*0)u- ,oˆ **(‰ *&(Ü'*{*{ *{!*{"*{#*{$*{%*{&*{'*{(*{)*{**0d( }} }!}"}#}$}%}& }' }( }) }**0P*þ,?þ,7(y { {  /+ þ /*1*(ã'**þ,**:¥Î o@)*0W+¥Î  þ,:¥Î þ,-{ {  /+ þ /*(æ'**¥Î þ,**Jþ, (ç'**6(n oC)*0a4þ,RuÎ  ,F{{36{ { (_+, {!{!(_+, (è'*****þþ*0d ¸ s?)*0,{  -*(g *0,{! -*(g *0,oH),{" -*(g **"oI)*"oH)*"oH)*"oH)*"oH)*"oH)*"oH)*"oH)*"oH)*"oH)*"oH)*0Eþ,6þ,.{{3{ { (f+, (é'****þþ*04uÎ  ,oU)**{+*{,*{-*{.*{/*{0*{1*{2*{3*0L( }+},}-}.}/}0}1}2 }3*{4*{5*{6*{7*{8*{9*{:*ò( }4}5}6}7}8}9}:*0 +.(Š  (Y¦(‹ (Œ ( (Ž sh)*( *"(ê'*( *6o6 (ë'*(‘ *0"(s (V {(ê'*0D};}<}=}>}?}@}A}B(’ *0C{AYE +8ó8¿8¯8{;o“ }>}A{>oï 9¹{>o” }<{<o6 {}={={ o7 o8 oq }@}A{@oï ,0{@or }?}A{?}B*}?+Ã}A{@(»+}@}=}<87ÿÿÿ}A{>(Ç+}>}A}B*0¥e {AYE+8€{AE ++5++++)}A{@(»+}A{>(Ç+}A}B Þ t   Þ&8fÿÿÿþ,z*lˆ ê{AE +++ +++****"{B*0 {;sp)*(• *"(î'*(– *6o6 {*:(— }C*0#"(s (V {CoÆm(÷'*:(˜ }D*>{D(ø'*({ **(™ *0 /(š (› {;{ù:{I*(œ *00M(:f,%{;{;{ù:{I sY‰(úk**( *:(©((ù'*(ž *"{ƒ *(ž *"{‚ *(Ÿ *"{„ *(Ÿ *"{… *:(  }E*:{Eo¡ *:(  }F*:{Fo¡ *:(Ê }G*:{GoU *:(¢ }H*:{Ho£ *:(¤ }I*:{Io¥ *:(¦ }J*b{J{ß:{I(n*V(S }K}L*n{K{Lo§ þo¨ *:(© }M*b{M{Ñ:{I(øm*V(ª }N}O*n{N{Oo« þo¬ *ò(­ }P}Q}R}S}T}U}V*0 Z0(s (V {P{Q{R{S{T{U{V()( oÆm{(ì'sC *:(‘ }W*0$"(s (V {WoÆmoo þ*ò(® }X}Y}Z}[}\}]}^*0 >{X{Y{Z{[{\{]{^o6 (*(þ(=+*(® *Ro6 (-(þ(=+*(‘ *0,1(s (V oÆm {U;|\;(¹i(½h*(® *Ro6 (-(þ(=+*(Ê *V{U;|\;(»iþ*:(Ê }_*.{_þ*:({ }`*:{`o¯ *:({ }a*:{ao¯ *:(Ê }b*:{boU *:({ }c*:{co¯ *:(Ê }d*:{doU *:({ }e*:{eo¯ *V(® }f}g*‚{f{go6 (1(þ(=+*V(­ }h}i*0<0(s (V {h{i(0( oÆm{(ì'sC *V(­ }j}k*0O2(s (V {k(] {j{k(4( {,oÆmo m+ sC *r(® }l}m}n*š{l{m{no6 (5(þ(=+*V(° }± }² *0#3(³ (´ {± {² (È+*:(X }q*:{q(?(*:(I }r*:{r(B(*(† *"(>(*(X *.(îoþ*:(µ }s*0 4{somrfÁpŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( ( ( ](©](ó (ò (åŠ(¢os¶ *:(@ }t*V{ts (Þo*V(· }u}v*f(˜p{u{v(æo*(· *0,5(Ê , (Ê (Ê - (Ë *rWps\ zò(Á }w}x}y}z}{}|}}*0 K{x{w{y{}{{{z(l o¸ (k (l (l {|(Úo*(¹ *&þþ*:(º }~*0É {*< {~(r_( *(» **V(Á }}€*f{{€(Z((¼ *:(¼ }*B{þ(a+*:(½ }‚*0*6($ (% (# {‚o¾ s *(¿ *(s*r(À }ƒ}„}…*j{ƒ{„{…(](*(Á **r( }†}‡}ˆ*0 ) (§ (¤ {†{‡{ˆ(_(*(à *"{Ø *(Ä *F{Ô:,(¶(**(À *"{,<*(Å *R(@^(í þ( _*(Æ *&(á^*:(Ç }‰*6{‰{n=*0d(» }Š}‹}Œ}}Ž}}}‘ }’ }“ }” }•*0b{Œ{Š{‹{{Ž{{{‘{’{“{”{•(¼ (» (h(þoé *ò(» }–}—}˜}™}š}›}œ*0 D{—{–{˜{™{š{›{œ(¼ (» (i(þoé *:(Ç }*^(@^{(_{n=*Ò(» }ž}Ÿ} }¡}¢}£*0 >{Ÿ{ž{ {¡{¢{£(¼ (» (j(þoé *(Á **(Á **:(h }¤*:{¤(r_*:(h }¥*:{¥(r_*:(h }¦*:{¦(r_*(V *:($nþþ*V(L }§}¨*0 D{§{+{§{-{§{3{¨(†*,*{§{+(‡**V(Á }©}ª*f{©{ª(Z((¼ *(È *(¶(*(É *047(Ê , (Ê (Ê -(¶(*s*(É+(s+(¼(*(Ë *(¶(*(Á **(Á **(Ì **:(ƒ }«*B{«þoA *:(6 }¬*0e{¬o7 s**:(ƒ }­*B{­þoA *:(6 }®*0e{®o7 s **:(ƒ }¯*B{¯þoA *:(* }°*0e{°o+ s$**:(0 }±*0°{±o1 s&**:(ƒ }²*B{²þoA *:(* }³*0e{³o+ s***:(0 }´*0°{´o1 s,**:(ƒ }µ*B{µþoA *:(6 }¶*0e{¶o7 s0**:(ƒ }·*B{·þoA *:(6 }¸*0e{¸o7 s4**V(Í }¹}º*0%8(Î (Ï {¹{ºþ(€(*V(Ð }»}¼*Z{»{¼þ(ƒ(*V(Ð }½}¾*Z{½{¾þ(ƒ(*r(Ñ }¿}À}Á*j{¿{À{Á(Š(*’(Ò }Â}Ã}Ä}Å*0 &{Â{Ã{Å{Ä(Î](‚(*V(Ê }Æ}Ç*0°9{Ç|6(Ó :—{U;{b;þ,*{U;|\;(¶i ( i (n o«i,!{Æ{+{U;{Z;( ^þ+,{Æ{+(Ž`þ+,{U;|\;(ºi(€iþþ***:(Ç }È*r(@^{È(à^(ñ^{n=*V(Ô }É}Ê*0+:{< {É{Ê{Ø (((– (5+*V(Ô }Ë}Ì*0.:{< {Ë{Ì{Ø (((– (5+þ*r(Õ }Í}Î}Ï*0@;{< {< {Í{Î{Ï(‹( (å (ao(æ sÖ *V(V }Ð}Ñ*R{Ð{Ñ(1P*V(× }Ò}Ó*V{Ò{Ó(’(*:(Ç }Ô*6{Ô{n=*r(Ø }Õ}Ö}×*0b<(í (ì {Õ{×sP*(z+-{Ö{[5{,<oU +,{Õ{+{,<(ÿ]þ**(Ù *0<(í (ì {,<*:(Ê }Ø*F{ØoU þ*:( }Ù*B{Ù(•(*V(Ú }Ú}Û*R{Ú{Û(–(*:(I }Ü*Z{Ü{,<oU þ*r(Û }Ý}Þ}ß*05={c= {d= {Ý(•({Þ{ß(–((4r*(Ü *0/>{,< {Ø oëls) {,<sÁmsC *r(Ý }à}á}â*j{à{á{â(š(*:(Þ }ã*0?(/ (+ {ãsb**r(ß }ä}å}æ*j{ä{å{æ(˜(*:(à }ç*0?(/ (+ {çsf**(á *.(ž(*(á *.(ž(*(á *.(ž(*r(â }è}é}ê*Ž{è{é(¦+&{ê(Ÿ(*:(ã }ë*0"(s (V {ësp**(, *.(¡(*(ä *.( (*(å *"(¢(*(æ *b(éXo] (¤(sC *({ **þ(¦(*(ç *"(¥(*0 ( ¶(Ÿ´({µ(Y (Z (Z €ì(8 ¥ s)(Ê+s)(=+€í(¶(s)€î(k (Å sè €ï(k (Å sè €ðsª)€ò(.(€ñ*00b{ò8 su,(N+,*{õ8 sw,þ(N+*z{+9(¤ (¥ (é (¼F*ê{*9(¤ (¥ (é (ê (ê oÎFoÎF(¥(¼F*0/Ü (©] (ó (ò së oì (½]*0(ò rûp{¥8(©] (ò (r_(­]*0 q@{Á; {'9 {?8ogm,Sofm {g:{k: oí , þoî *sÜ-(¡P(¤ (n(-Poï **0KA{Á; {B8{E8{(9 {?8(i,*{B8{E8{)9 {?8(i*0QB{@0on{Ø:,(¼sû£ (¤(+&+{@0(&U(Ë+&{@0(U *0=*oüQ,(¼sû£ (¤(+&+(ŸU( U*0 ?Co—Q.I,#o‹Q(Isû£ (¤(+&+$o‹Q(Hsû£ (¤(+&+(Ê 9— (Ê (Ê :„(¸S@wtX {Þ0,g {Þ0(¸  {Ý0(Ë (r_(k^  (ºH(H,+(¦H,+(°S+ ( U-#o‹Q(½sû£ (¤(+&+(Ì+(Ë+&*0/*{@0on{Ô:-{@0s- (¤(+&**0 PD(ܰ(ð (=j (?(ñ (Ú (ò (ó (°S(ò (1j(6isô s.*0 VE(< {w{x{y{z{{{{{}(ó (°S{}{~{€s.*0 Y{-*{w{x{y{z{{{{{}(ó (°S{}{~{€s.*0 H{€ , (õ {oþ**0I{€ , (õ {o**0/H{€ , (õ {o3(dq*(fq*(fq*0 N{w{x{y{z{{{|{}{~{s.{€(Í+s.*6s.(’**r{m=or , {k=oö **0.J(9^(2^(K^ (”*,*s .só-(÷ *0^Os . s . {ì: s.{î:{ø où (Î+(Î+ {ú oû (Ï+þ(Ï+*0)J(2^(–* (”*,*s.só-(÷ *Bs.þ(Ð+*Bs.þ(Ñ+*0 }Pon{£;(ð (=j {}(ó {w{x{y{z{{{{(ó {(°S{}(ó {~{{€s.*0 I{woü {x{y{z{{{|{}{~{{€s.*0 `¢ s.(›* {w{U;{Z;{x(•*{y{z{{{|{}{~{{€s.*0 qQs.(›* {ws.{x(Ò+{y{z{{{|{}{~{{€s. {w{|(¾=*0 qQs.(›* {ws#.{x(Ó+{y{z{{{|{}{~{{€s. {w{|(¾=*0 vQs%.(›* {w{U;{Z;{x(•*{y{z{{{|{}{~{{€s. {w{|(¾=*0=¢ s'.(›* onj{w{|(¾={w{|(¾=*Rs).(›**0/¢ s+.(Ô+(¡* {w{|(¾=*0+¢ s-.(›* {w{|(¾=*Ns/.(›**0UR, (š*+ s1.o‘n(Ô+ s3.o’n(Ô+ s5.(¤*(›**0 ¤Ss7.oÓk(Ô+ s9.oÔk(Ô+ (¤* s;.(›* {w {x(—* {y {z {{ {| {} {~ { {€s.{w{|(¾=*0 TTs=.(›* {w{|(¾=(W> {I{w{w{i#{|(¿=*0 „Qs?.(›* {w{g:{u:o¸ {x(—*{y{z{{{|{}{~{{€s. {w{|(¾=*0 N{wsC.{x(Õ+{y{z{{{|{}{~{{€s.*VsE.(›*(©**Î{w{i#{·{¯(@]{¯(@](3C*0 TV(1j(6isô {w{x{y{z{{{|{}{{€s.sý *0W{y(Ú (Û (û+ (6isô {z{I(Æh {}(ó {(°S {w{w{i#s].(y+{15(Q ob{j#{k#{l#{m#{n#{o#{p#{q#{r#{s#{t#s?{x {}{{€s.sý *0 X,*(* {zofm {g:{l:(/j(Æh {w{x{y{z{}(ó {(°S{}{~{{€s.*’{U;{`;,oýloßl(Ö+**0 lDon{£;(ð (=j s_.{w{x(Ú {}(ó {(°S{}{~{{€s.þ(×+*fsa.sþ (Ø+(ÿ *fsc.s (Ù+( *0 ^\( þ,*{| (ö>{w(Ä= u>,*t? { se. (Ú+(£**0f]{¯ (O]($nþ,*{¯(W] o™ oµ 3+(Û++(Û+ {·(n(3C*0_^{¯ (O]($nþ,{¯(V](˜ *(¾B (¾B {·(n(5C, s— (˜ **0O_(µ* -9-s„, (¤(Ü+* ($  s‹, (¤(Ü+*(ª *00`(¾B (¾B {·(n(5C,sî, (¤(¥8ï{¯{¯{¢8(ƒ]9¹9®(â (îo@˜(â tã{`<(îo@x{`<tß{c<(Ê ,\{c<(Ê (Ê ,E(Ê (Ê (Ê -.{L<  oÆmom(‡–(ñ , {L< ++  sõ, (¤(¥*®{·{¯{¥8(5C- (·***>sg.þ(Ý+*>si.þ(Ý+*&s *0 3{w(I>(I>{w{i#{|þ(¿=*0 is˜. (ŠE¿ïó“ &(Un*t!% {hI {iI {|{µ{½(ö>{w(“?(¯?(ï=(Þ+ofm{g:{i:(Ói3(On*(  sû£(¤(ß+*t%%{rI {sI  (½* (9]*t"%  {kI  {jI  (½* (½*(Qn*t$%  {pI(Š@Î {pIt#%{mI( 9›{mI( ( ,S {pI  {oI  {qI (¾ sû£(¤(¥ (½* (½*(Sn(Qn* {pI  {oI  (½* (½*(Sn(Qn* {pI {oI  +Í {pI {oI  +¹t#%{mI(à+þ(;]*(¿sû£(¤(ß+*t'%{wI (À sû£(¤(ß+*0 ºk(«‰@„t % {II(Š3E(Ñi(éi,(i‰+(k‰(Œi(¹B(Mn("n(¤ (¥ (n+E{II (½*("n(¤ (¥ (n+(Un("n(¤ (¥ (n(«**0 On   («‰EDoFšqÅœðÇ D1šoδò{¯{¥8(«*(ôn*t÷${3I {¯{¢8(«* (Ôn*tø${4I{¯{ 8(«*(Ön*tú${6I{¯{›8(«*(Ún*tü${8I{¯{—8(«*(Þn*tþ${:I{¯{œ8(«*(ân*t%{I"þ{¯{s8(¾*(ên* {HIt%{?I#þ{¯{r8(¾*(ìn* {HIt%{AI{¯{i8(¾*(òn* {HItø${4Iþ{¯{u8(¾*(Ön* {HItú${6Iþ{¯{v8(¾*(Ún* {HItü${8Iþ{¯{t8(¾*(Þn* {HItþ${:I!þ{¯{w8(¾*(ân*t%{>I8oþÿÿt%{?I8—þÿÿt%{AI8Ãþÿÿt%{@I{¯{§8(«*(în*t%{CI{¯{£8(«*(ðn*(Âs¤ (¤ (á+*(Äs¤ (¤ (á+*(Ås¤ (¤ (á+*0Y|(&¸E-DYnƒ˜­Â×ìtŒ. {I\(ðn*(ön*t. {J\(Ôn*tŽ. {K\ iÑ(în*t.{L\(Ön*t.{M\(Ún*t‘.{N\(Þn*t’.{O\(ân*t“.{P\(Øn*t”.  {Q\(Ün*t•.  {R\(àn*t–.  {S\(än*t—.  {T\(ên*t˜.  {U\(ìn*0…{ÝL {ÜL (O]($nþ,{¥8(V](A (ƒ]+, o þ+,o o þ+,o o o  (  (3‘**0€{àL {ßL {ÞL ,bs .r¥ pr¹ prÇ prÑ p([ (\ (\ (\ (\ (þ+(( (]‰(‰(Œsë(æ (  +(æ ,(  þþ+,þ+,(Æsû£(¤(¥+- þþ+,(Çsû£(¤(¥+ (â+o  sÈo*0A‚{ÝL {ÜL  o  s¢.(ã+ o  (Â*(š.*0ƒ{Þ {Ý (…s(¶o*0¼{AL(&E q‚Trëp*rúåp*{I rúåp(ñ ,! (e{Isû£ (¤(¥*rëp(ñ , +Ð*(È{Is¤ (¤(J+*r:Ýp{I( *rDÝp{I( *09„{I (–{Io (–o ró p(ñ s³.{ÜL(ä+ ( 9º ( E™( ( .þ+, (Ùsû£(¤(¥+.+, (Ìsû£(¤(¥+oõ 1(Úsû£(¤þ(¥**( ( -(Øsû£(¤þ(¥*( ( 87ÿÿÿ0…(Å* s«.(å+,+(¤ s­.(æ+s7m (d` {>L,+ (³ þþ,$ -{Isw-(¤(¥+J+G{?L- {=L+,/- þ+,{Is-(¤(¥++9¸ofm{g:{l:rS@p( ( {AL (   (n o*þ,${AL (   (n o*þ+, {=Lþ+,rû p( + {?L, r p( + +s±.(ç+-{I(€–+,{I(’–+,(Æ*+{I(€–,+,#({Isû£(¤(¥+(¤.*~ !*~!*~!*0ã†,/ (‹ {AL (  (n o*, (‹  *,4(‹ {AL ($  (n o*,(‹ €*,4(‹ {AL (   (n o*,(‹ €*,4(‹ {AL ("  (n o*,(‹ €*- À*@*0|‡{¸,T{¶{y s@/(y+(è+(Jm oYm {g:{g:{u:o¸ (é+(»+(ßj+{~{~( (é+( *0 TˆsB/(Ì*s`m( ( (W> {µonj{w{w{i#{|þ(¿=*BsD/(Ì**BsF/(Ì**0Ï‹(Ö. (n oé.,&{~( {í: (1j (n o:j+,{U;{`;þ+,%(É{U;{X;sï£ (¤ (¥+(Ú. (n oé.,&{~( {í: (1j (n o:j+,%(Ê{U;{X;sû£ (¤ (¥+(â.E + ++, (Ï*+{U;{`;9œoöl-(Ú. (n oé.þ+,t(³ oýlofm  {g:{s:sÁm om {ˆ:(ê+(k{‡:{¯ oÆm(%^ s þo **0C*þþ, þþ+,(Ësû£ (¤(¥+þþ,**0ûŽ{{ , ( (ê.+ þþ,þ+,(Ìsû£ (¤ (¥+,C( (NŠE()i+!(ò (ó (åk+(+i+()iu,1t{:ofm  {g:{y:(,i+{z ,  ( +s *05(”– ( E‰EìÍ ,'(}–o (ÎsÑ- (¤þ(¥*(ÒsÑ- (¤þ(¥*,&(}–o (ÏsÑ- (¤þ(¥*(ÓsÑ- (¤þ(¥*,&(}–o (ÐsÑ- (¤þ(¥*(ÔsÑ- (¤þ(¥*,(ÑsÑ- (¤þ(¥**,*(ÕsÑ- (¤(+&**Ö(B¥(@¥Y0{¯{B8þ+, þ(Ó***0Q”{ { { { {"{{!{{{# {  { {î4{ï4(‘] {I (â.E + ++(Ú.(n oé. ,a -Z( {â{f;ofmo†j,%{I(Ö s¤(¤(¥+{f;(äj+( {I(Ò*( {¯{¯{å8sH/(N+,](Ri(n oai,+(Ti(n oai,(Û sû£(¤(¥+(Xi8”{¯{¯{û8sJ/(¹+,S(„ {Ã;(… ,<(„ {Ã;(† (Š^  ,(… (… - (Õ !!+_,(Xi+{¯{¯{æ8(^""þþ,I -+0 ( {â{i;{>L,+ {i;{?L,+uþ+,(= sû£(¤(¥+ 9Š ( {â{i;{AL$( %$%(n o*,+${i;{AL$("%$%(n o*,+({i;{AL$($%$%(n o*+#", #-"+ -+ ( {ä(c & - {I+ ( {ã' -+ ( {â( ('{I& ,(~i+(|i (  ,+  (=i){I(–)omo (þþ(Ô*)(Ð*{µ{÷#9¸)oöl-")om**rfÁp(Âþþþ+9ƒ)om(¢–{w)sÁm(=+{µ){U;{X;+{|(¾=)sÁm(3>,{µ){U;{X;+,,{w{i#{|(¿=++)*0 # s (ë+þ(ì+*JsN/þ(í+*‚sP/{¯{³(ŸP(-P*0e•(»hr/ñpo!” sY‰ {{(ò (ó (åk  {—8( ( ($‰rR9p sŸk*0C–(Ø*,2{¯(Ù* {¯(k]{ß:{I(n(à-*(â-*0—˜-* (¶ {¯(`]- (Ü{Isû£ (¤(¥+(z {¯(–^(oa(Xi(œi(/ (æj(à.(hi ( ($‰(Õ*(à *0¤š{ {î4 { {î4 {ï4(‘] oÆm(¨ þþ,sR/|°(  (î++oÆm(hi{U;{U;|\;(Ái()m|°oÆm(! (W.*0]›{ { {î4{ï4(‘] {U;((m{U;(-m(fi {U;{U;|\; (Ái()m*0Guò,*tñ {+: s" |°oÆms# ($ (W.(ìo*vsY/|°(  (ï+(T/*0Mžs[/(ð+(Å] s]/(ñ+o† o† .(ßsû£ (¤(¥+*0›Ÿ{ { { {" {{!{{{#{  { { {ï4 {î4  (à* (oa    (/*Zsa/('+þ(ˆ+*0™ {;{ÿ: 9x (• o l,,(“”( O(È+(àsû£ (¤ (¥+<(“”( O(È+(á{;{ù:{Isû£ (¤ (¥+(áiol*0#. {¯(Y^ se/('+(â**0¤{  { { { {{{{{ {  {  {ñ {I  (ˆ+ {¯  (à*(ä*(ä*o† o† 3sg/(ò++-(â sû£(¤(¥+(oa    (¨ þþ(/*6si/(ó+*0>¥,9, (E {3<o þ*(ã{Isû£ (¤(±+**v(ê.,{î4(Ä*(ž **®({ -(€ *({ -*o™ o™ /**0Q¦(& ,E (& ,7 (& (& (' (' (ô+ (õ+(( * * +ú0ò©{ {{ô { { {{{ó(ê.9ª-(® (‚s(š.() * þ,*,t,m(* {Þ {Ý ,(®  (š.+8{î4{ï4(‘](_  {3<   (ö+ (š.() *r p b só z*0ƒª{ { { { {{ {{{(ê.,sk/(÷++    (ç*(/*0 J®(æ* sm/(ø+ (æj(à.(hi( ($‰(ù+ so/(ú+s+ *0 ]µs, sq/ {µ(¼= (í*Þ u , oâ &Ü&Ü (- (. o/ 9ôo0 (1 (2  (3  {w sw/  s4 ¥X(û+  (5   (6  {µ   (¾=o7 (8 ,a(9 (: (1 (2 (; (< (= (3 {µ (¿=+–ÞþYoâ &Ü&+s+ * 'Ío<0A¶- (í*+ (î* (- (. {µ(*s> *0x¹sy/(ü+ (ái (n oòiþ,s{/(ð++(z (¤ (8P (? (@ s}/(/+(n (nsA *0}»(ó] (  (? (¨ þ,(z (¤ sB *(Å] (z (¤ (ÂB(C (D (E ("]sB *02¼o~m(ÃB (C (D (E (nsF *0åÀ{áL {âL (G þþ,+,(äsû£ (¤ (¥+(G þ (ZP{Ì0{Í0{Ë0o­Q o‰Q(n] ,(ái+(çi  (ÂB(C  (E    s/(ý+ (g^("]sH *0 6Ã{½ (ô= {µ (I {I{w{w{i#(¿={| (U {¯ on{Ý:(U(Ë+& {w;(þ+," {w;(æsû£ (¤(¥+{¯ {B8 {E8 {v;(i-G(ÿ+(K (+{w{i# sÔ, (¤(¥sL * {w;oM  {w;sN (O sL *0É{| (P þ,rÎ prê ps zsQ (+ sR (+ {¯s‡/s‰/(+(+(+(n , (n (n -(o +D,(åsû£ (¤ (¥+(ÿ+  (K   (+  {v;  sS (+(T sL (+  (U   (V (+sW *0qÊ{| (a>Eerô prD ps zt` {(# {¯($U(Ë+&{¯{¦8(«*(U oX (î]sY *t]{"#{B0{¯(%U(Ë+&(›U {A0(ì]{t; ofmo~j{A0(Š+(«*{A0sZ o[ (ë]sY *0 s“/s•/( +*0 s™/s›/( +*0'*.!{w{i#sÄ, (¤(+&**0 #Ì{| {µ{½(®@{w(¤?(è= (a>E/(çsû£ (¤ ( ++( +++é (\ (] oµ 2*{w{i#oµ sÌ, (¤ (+&+(I+s^ *~!*0Î{u o_ (/*0Î{u s¢/( +(/*0«Ï,+E,@ (‹ {AL ( (n o*,+{>L,+ {?L+,(Xi+,(Ri+(Vi ,(Ri(n oaiþ+,(ºsû£(¤(¥+*0BÔ{{ {| {} {´(Áˆ (` (a  (b (´/*0ZÖ(ð* (c (d (e (f  ofmo³j,þ+,{¯ (C]+ sg *0 R×uñ,Itñ {+:,(³ þþ+,&{+: {±sã/þoh **0m*{U;{`;þ- oîlþ+, oµ þ+,omo† þ+,%om(¢–(÷sû£ (¤þ(¥**0 ×Ü (i (j (i (k uò9Ñ{¯(çi(ñ* (l  (m  (n så/(+(+(p (q   (+oµ  oµ .,o†  oµ (øsû£ (¤ (+&+sç/ (+ (+ sr *tñ  {+:,8ÿÿÿoÆmom  (   (? sé/(+(+(p (q (+o† oµ .,o† oµ (øsû£ (¤ (+&+(Š+("]  së/(3+ sr *0 ÒÞ,(+8Þ{¯ {¯{ 9 sí/{U;{a;(N+,(om(¢–(ösû£ (¤ (¥+uò,2{¯(çi(ñ*(¼q(l (n sr +Mtñ{+:,+ºoÆmom(  (? (¼qsï/(/+sr (s  (t  (u  (v  (Òo   (y_  (ÄqE+,+%{¯ {B8{E8{¯{·9(i,+%{¯ {B8{E8{¯{¸9(i (Þ*  sw *0 žßoÆm {U;|\;(Ài o m{|(™U,){¯oÆm {U;{a;(U(Ë+&+oÆm {U;{Z; {¯ ( ^,"(ä]{¯ (’^(¤ sw *{U;{];:{U;|\;(¶i(œi(n o«i,{¯ (“^+,M(¼q(Òo{¯ (”^{¯{¯(À_(û_(¤ sw * (+*  (œ  {¯(çi (ñ*  (l   (n  (Ðo sw *0àoÆm oÆm {U;{Z; ( ^,(ä](’^sY *{U;{]; :–(çi(ñ*(l (m (n oµ oµ .+o† oµ (øsû£ (¤ (+&+(Š+("](Òo  (y_sY *   (œ  (çi(ñ*(n  (ÐosY *0äâ{¯(r_ ( ] sü/ {¯(ô] (¦  (J {¯sþ/(+(x þ,+ {¯s0s0(+,+s0(+, (ñ/*s0(ý+ s0{¯s 0 (+(‚+(Ê](ñ/*0“ã{¯{³(H,sZ- (¤(¥+{¯ (O]($nþ,s2- (¤(+&+{¯(e`,sB- (¤(+&+{¯(e`,+{¯ (O]($nþ,+{¯(^þ,{·( D(7C+{¯(‰],v,:($N(a{¯(S]($N(asû£ (¤þ(¥*($N(a{¯(S]($N(bsû£ (¤(+&*s 0{¯(Š]þ(+*0›ä{¯ (O]($nþ,s:- (¤(+&+{¯(e`,sI- (¤(¥+{¯(ƒ],sP- (¤(¥+{·( D(7C*0 è{¯{¯{ 9(U ,n (d {¾(+þ,T(d {¯{¥8{³o§Q(«*{¯ (ôn {¥8(Ðo{¯{¥8sY *(‡Q3VtÄ{-0{¯ s0{¯{³ (MJ(y (z sY *s0{¯{³ (¬H*0 ({¼{w{s#(c (¸T(Ï=*0 Ðéo m{| rN p{¯{­8( + (¢ , (¢ (¢ - (£ +(ús¤(¤(+ {¯{U;{Z;(^9Š{¯{³{¯{­8(ºH{U;{Z;(H,?(÷c(¼q(¤ {U;{X;(¦](k (l (k ( +(ù *{¯(ôn{¥8(Ðo*r^ p{¯{­8(©](ò (ó  (õc(¼q(¤  (k (l (k ( +  (ù  {¯{¯{­8{U;{X;(¦]{¯{¤8{U;{Z;(Ê] {¯(ôn{¥8(Ðo(]`*0 ?ëoR oûQ ,(á²+(ß² oøQ oR(r_uÛ,O(‰],EoþQ,( (À*(Ðo*(Çsû£ (¤ (b+*(÷c(Œ_  (ð   (ñ  {Z(= (B°s¹³  ( µ(#µ (ݵ(Y (Z oúQ,(§µ(Y (Z +(Y (+  (k (l (¤ (¥ (Ë]þo¾ *0 ÐìoR oûQ ,(á²+(ß² oøQ {Z(= (B°s¹³oúQ,(üsû£(¤(+&+(óc(Œ_(ð (ñ ( µ(#µ(åµ(Y (Z (k (l (l (¤ (Ë]þo¾ *0–íoR oûQ ,(á²+(ß² oøQ {Z(= (B°s¹³oúQ,(üsû£(¤(+&+(#µ(ãµ(Y (Z (k (l (¤ (Ë]*0Bîo6R (^ ,+(r_(Ê] {@0{?0þ(Ž_*0eï(ŠŒ3Yt«% {ÓJ(ŠŒ3C{ÓJt«% {ÓJ(²ˆ ,((¶ {ÔJ{ÔJ s{ (| **0\ñ(+ ,P(} (~ {I(‡–(ñ ,2(} (~ (} ( (} (€ s (‚ **0 ¡ó(ñ 9’oŒŒ {| {µ{½{w(¤?sY‰(Ú (Û (ã= (ƒ (a>3C(ƒ t\ („ ( -* {!#{¯{B8{E8þ(i***0ô(+ 9˜(} (~ (‰–{¯{?9{I(+,l(} (~ (} ( (} (€ oŒŒr„Ápr Fp([ (\ (\ r~ p(­ˆoŒŒ(>Œ s (‚ *(+,a(} (~ (Š–{¯{>9{I(+,4(} (~ (} ( (} (€ s (‚ **0õ(+ ,^(} (~ (‡–{¯{<9{I(+,2(} (~ (} ( (} (€ s (‚ *(+9›(} (~ (ˆ–{¯{=9{I(+,n(} (~ (} ( (} (€  oŒŒr„Ápr Fp([ (\ (\ r~ p(­ˆ oŒŒ(>Œs (‚ *(+*0—ø(+ 9ˆ(… († (±ˆ ,t(‡ (ˆ {I( ,](‡ (ˆ {I ( ( -?(‡ (‰ -2(‡ (Š (… (‹ (  sŒ ( **0>ú(ŠŒE9hÂ(»ˆ ,0(i (j (ŠŒ3(i (j tœ%{‘J 8â(»ˆ , (i (j (Ž ( 8¹+étš%{ŒJ(«‰3 (Ž 8’(»ˆ ,¦(i (j (ŠŒ3“(i (j tœ%{‘J 8qÿÿÿtœ%(»ˆ ,;(i (j (ŠŒ3(i (j tœ%{‘J 81ÿÿÿ{‘J 8$ÿÿÿ{‘J 8ÿÿÿ s0(+( (‘ s0(+s’ *0Kü{¯{w{i#{³  (‚F (çŠ (“ (” þ(†_*0:(• 9÷ (– {e*(ÌF@Þ(– {e*tB (– {f*:½(• (• :­(– {g*{)< {3*{c* (– {g*{+<{2*(– {h*{3*{d*{î4(– {g*{*<  s0 (+(›o(=G(— (˜ (+së *r p(©]  (ò  (z (+së *05{w{i#($N , (ÿ+( sû£(™ *02( + (¢ , (£ (š *(+*0;{³o¨Q (x ,! (› (³ -(x (x þþ**0%O{³(¤ o§Q s0þ(+*0òs0 r¦ p( + (¢ ,U (¢ (£  (+, (Š (++,#(¢ (£ {³(¤ o§Q*rcñp( + (¢ ,^ (¢ (£ (+,(Š (++,&(¢ (£ {³(¤ o§Q**0 ¢ {³ o§Q {¯(^,(++ {¯ (^,V,r¸ p (ª]+Qr¸ p{¯ (–^(ª] (ò  (ó {¯ (À_së +r¸ p (©] (ò (ó (õc(¼q(k (l (k ( +(ø (ù (óc (¼q (k (l (k ( +  (ø   (ù  (óc (¼q (k (l (k ( +  (ø   (ù ( ] (Ê]   s‘ sœ ( *0_ t {ž (ÅB {³o§Q (+, ( +*rïûp (+u9ìt{ž (ÅB{³o§Q{¯{¯{¢8(ƒ]-  ( +*(+,  ( +*rüp (+  u,P t  {ž   (ÅB   (+,  ( +*   (+* t‘  {Ÿ (  *t‘  {Ÿ (  *0 B rÓûp(+ u,( +*t‘ {Ÿ (  *0 i{w{i#{·(6C,I( ](Ê](!+ u’,t’ {¡ zt“ {¢ (£ **0 Ç{| {¯(^,rR9ps\ (  +(!+ u’,yt’ {¡ (¾B{¯(ê_("+-7{¯{ÿ8(¤ (n("+- z(¤ *(¤ *t“{¢ *0õ( ] (¾B {w{i#{·{¯(ê_(6C,sY *rÎ p(©] (ò (ó (#+(¥ (¦ (§ (¨ (©  (ª  («  (¦ (£   {¯ {¯ (…* (­]   (­](ò_(½] sY *0+O(¾B {¯(ê_(«*{¯(÷_*0 UO(¾B {¯(ê_(«*{¯{¯{¯(ê_{¯(r_(,`(ì_*0ZO{w{i#{·( D{¯{­8(7C(¾B {¯(ê_(«*{¯(í_*09O(¾B {¯(ê_(«*{¯{¯(…*(î_*0 wO(¾B {¯(ê_(«*{¯{¯{¯(ê_{¯(r_(,`{¯{¯(ê_{¯(r_(,`(ï_*0 SO(¾B {¯(ê_(«*{¯{¯{¯(ê_{¯(r_(,`(ð_*0 SO(¾B {¯(ê_(«*{¯{¯{¯(ê_{¯(r_(,`(ñ_*–(ZŠ(›ooÎF(=G(— (˜ *0 $oÎF(›F(,+(+*0 S,rê p(Ɉ+!rð p(‰oŒŒ(Œ(ˈ (õŠ(µˆ(.Œ*0»(²ˆ ,(¶ (µˆ(¬ *(»ˆ ,(i (j (²ˆ , (¶ +Ë(»ˆ,g(i (j (ŠŒ3S(i (j tœ%{‘Js0(!+s 0("+,s"0(#+oŒŒ(/(¬ ***0és$0 (ŠŒE9Õ¥ã‰ñÇW¹)ññññ*t±% {óJ {òJ (0+,8ãþÿÿ*t²%{÷J{öJ (0+, þ($+**t®%{âJ {äJ(0+,s&0þ(%+**t¨%s(0{ÊJþ(%+*t¢%{®J 8Qþÿÿt¯%{éJ +êt­%{àJ +Üt¡%{§J +Ît£%{µJ +À*0(ŠŒ3, (0++,*(ŠŒE9**0g(ŠŒ3Yt±% {ñJ,+{óJ {òJ (1+,( +¾* (1+,( (&+(® ** +ß0$   (0+, (Ž (2+**0%(›] (îo 3të {ˆ<+Ý*Ê(60E (20*(40*(00*²(60E(40*(20*â(60E (.0*(00*(20*(40*0ð  sI0  sK0  (4+ (îoEªZl'«c{Ù‘s7ôtá{X<   þ(>+*tâ{]<      8!ÿÿÿtæ{n<{q<{r<{p< (^,R  sM0('+  sO0  sQ0sS0þ((+*  (5+ (8+  sU0('+  sW0  sY0s[0þ((+*tß  {L<  {N<     (=+*té  {~<(ÒpEnNy {~< {<  {€<   (<+ (5+o¯ þ(Y+* {€< (7+o¯ þ(Y+* {€<+Þ {€<+Ó*tä{f< {e< (5+o° (Ä+  (5+    8vüÿÿtå{j< {i<  (5+(9+  (5+    8 üÿÿtç{w<{v<  (5+(:+  (5+(;+Œô,+ r¨9ps‚ zŽiY2£Öo± &XX3á*tã{`< {c<  (5+ (8+ (5+o¯ þ(Y+*tà{P< {O<  (5+(8+  (5+    8«úÿÿtè{|<{{< +‘tì{Š<  (    8Múÿÿtë{ˆ<      8úÿÿ*0"   {-<þ(8+*0>" s]0  s_0    uÄ-u uÅ: tà {< {<{<  (8+  sa0()+ o² þ(*+* tÄ{< o¯ þ(Y+* tÅ{ < { <    {-<(8+      8Âþÿÿ0   sc0*0=# (Òp31 t {â<   (5+ (=+**0$* (60E[é[{W8 (++,I  sœ, (¤(¥(• - s«, (¤(¥(< +(< **{W8 (++9z{W8 (++-K   s£, (¤(¥(< (• - s«, (¤(¥(< ++  s³ (´ (µ (¶ **{W8 (++, (< ***0A (60E  (20 þ(8+**0@%       (,0 þ(8+*0B&{U;{Z; {U;{X; (—^ {¥8(n om (©](ò (ó (…*,+ (· ( (_(ž {U;(-m+om(©]  (ò   (ó  (ÿ_ ,+(· (  (_(ž  {U;(-m+ sm0(,+(çŠ(¢o  (çŠ(¢o( ( (  (`(¢o( ( só *0 U+sC0(-+ sE0(.+ sG0(/+ s¸ s¸ s¸ s¸ (¹ sº  se0(Ê (0+sg0(/+si0(´ s»   sk0o¼ (• ,+ (•  (• , +,(sû£ (¤ (+&+ ,Gso0(1+(2+  (½  (¾ ¥~( +¥~( +só + ( só   (ö  (÷ þ(¡+*0 *(( ]sû£ (¤(¥*0 î.{€ 9Þ (õ {p,R(} (r_(²_sÁm(¼q(Òo(Á_(¬q(lŠ(Ôo+ {q  uŠ ,` tŠ   {k  (r_(²_(n]   (Þn{š8(Ðo(Ž_(¬q(lŠ(Ôo* **0'/{)< {+< {*< (E+(›o*0 ’0(îoEBò¿É(B+*té {~<(Òp 3â{~<t {Ì<(hq3È(C+*tà {Q<(®q39{R< {O<{S<{P<(E+(¬q (Ôo*{R< {P<{S<{O<(E+(ªq (Ôo*tå{k<{j<{i<(E+s (Þo*tç  {w<  {t<  {y<  {x< {v<  {u<   Œô,+ r¨9ps‚ z ŽiÖY2( £Ö(D+¤ÖXX3Ø (âo*tä{f<{e<(E+s (Üo*tã{d<{`<{c<{b<{a< (F+ (Úo(C+*0W1(îoEw,(B+*tì{Š< ( (F+ (¿ *tã {c<(Ê -À{b< {d<{a<{`< (F+ (k (Úo*tß{M<(Äq@oÿÿÿ{L<{N<oÆm  {U;{`;  ,3   (³   {i;{AL ( (n o*+-(B+*(Àq(Òo*0n2( ] (r_(_ (– (G (H (I (E+   (²]  (ù  (ø (®]*0 Ý3{¦(îo@Ö{¦tã {`<(îo@¹{`<tß {c<(Ê 9{c< (Ê (Ê :†{L< {¯{B8{E8 {¯{-9(i,+({¯{B8{E8 {¯{.9(i,((Ë {L< {¯(È](ñ/*{¦(îo@à{¦tã{`<(îo@Á{`<tß{c<(Ê 9¢{c<(Ê (Ê :ˆ{L< {¯{B8{E8 {¯{19(i,+({¯{B8{E8 {¯{29(i,)(Ë {L< {¯(É](ñ/*{¦(îo@®{¦tã  {`<(îo@ {`<tß  {c<(Ê -s {L< {¯{B8{E8 {¯{T9(i,B {L< {¯(V]  (@   ( `(ªq(lŠ(Ôo(ñ/*{¦(îo@+{¦tã  {`<(îo@  {`<tß {c<(Ê :í{L< {¯{B8{E8 {¯{/9(i,+({¯{B8{E8 {¯{09(i9‹{L< {¯{B8{E8 {¯{09(i,s‹-(¤(¥+{¯(óc (ð (Œ_(ð (ñ o¾ (ñ/*oú/*j($¥oŒŒ(Œ(x0*~!*’(äj(â-(z (Ú0(À (ã0*^(Ú0(À (ã0*0Z6{© {œ {ò sK1{© {›{U;{`;(3+ {© {˜{t (M:*0«7(îoE. rü ps\ ztâ{]< +œtë{ˆ< +‹tá {W<(g ,¾{W< (g (g -ª(h (à *Joæl,(N+**0C:([+ (Á ( {w{i#{·( D(i(4+&*0 >tj% {ñI {ðI {òI ([+(Á ( (Ä 9²(Ä (Ä 9ž(Ä (Ä (Ä :„(Å  (Å   (t+  (Æ   (Ç    (t+(Æ (Ç {w{i#{· ( D(i (AC*( sû£(¤(¥*0 JCth% {êI {ëI {ìI  (U+(È (É {4;rúåp(ñ 9Ô{5;{AL(  (n o*9¨{7; {3; {6;  (³ ,g   (³ (³ -U (³ -L{¯ (´ {¯ (g^(ƒ],+ (´ {w{i#{· ( D( {µ{I{w {w{i#{|(¿={µ{I{I(G¥{w {w{i#{|(¿=sæ *(Ói@vÿÿÿ({Isû£ (¤(+&sæ *0 íh{I {I {w{t#oç :¯{u(>+ :ƒ(®0(n o·0,-s1r p([ (\ sj(¤(+&+, (å +(Ïi(åi(Ži( (2i(ü*sæ * (è (Y+*  (è (Y+*^(Ïi(é (Z+*0 -i{ËI {ÊI  @($, {¯{¯{$9s1(N+ {¯{¯{9s‘1(N+{¯{¯{9s“1(N+{¯{¯{$9s•1  s—1(µ+ ,(Ñi+(Ïi(åi(Ži(2i {¯{¯{æ8(^  -+!   (d   {; (c (ûk *Fs™1þ(?+*0 Êl{| {µ{½(ö>{w (”?(¯?(ï=(Þ+ ofm {g:{i: 9d(å (Ói@É(Ói@ (Ä ,_ (Ä (Ä -M,I(Å  (b+(ê (ë  (On (Qn("nsì *(  sû£ (¤ (¥(¿Bsì *(  sû£ (¤ (+&(ÀB("nsì *(Ói3U,s›1 o~m(\++,(  sû£ (¤ (+&+ (¤  (r+*(  sû£ (¤ (+&(¿Bsì *(Ói@wÿÿÿ8¬þÿÿ0 ðm9Á (å (Ói@† (Ä 9z (Ä (Ä -j,f(Å  (b+ (ê  (ë  (b+(ê (ë (Qn("nsì *( sû£ (¤ (¥(¿Bsì * (Ä ,Ï (Ä (Ä -¿,»(Å 8Pÿÿÿ0Î {(ž‹EYÕÚïƒNºk½ýÛtx% {J{I( -{¯{¤8sì *{J{I {J oc‰ {|{µ{½(ö>{w(“?(¯?(ï=(Þ+ofm{g:{i:9©(å (Ói3J(Ói3(On("nsì *(  sû£ (¤ (+&(ÀB("nsì *(Ói3 (¤ (í (r+*(  sû£ (¤ (+&(¿Bsì *(Ói@fÿÿÿ+®ty%  {J(ž‹E/„á {J ( sû£ (¤ (¥(¿Bsì * {Jtx% {J{I  {J  {J  {J  {J   þ(^+* {Jt~% {J {&J  {J {J  {J {J   (_+* {Jtƒ% {J{2J {J {J {J {J    +¡tz%{J {J{J{I {J {J {|(a+(Æ (Ç {¯(O]($nþ-( sû£ (¤ (+&+{¯(j](; (:  {µ{½{w(? (”?(ž? (ë= (r+*t{%{J {J-s1(@++(å (Óiþ,4 (g+(ê (ë ("nsì * (e+(î (ï (nsì *t}%{#J{"J(t+(Æ (Ç (t+  (Ç (n (Æ sì *t|%!!{J"!{!J !{ J(t+(Æ (Ç {¯" (D]sì *t~%{%J##(Z+$$(Á $( %%{;|û:(j(Ói3%(isì *%(Mn("nsì *t%{'J (éi(Œi (c+%%{;|û:(j(Ói3%(isì *%(Mn("nsì *t€%&&{)J'&{(J(t+(Æ (Ç '(i+sì *t%(({+J({,J (Ïi(é (åi(Ži (c+%(t+(Ç (Æ {w{i#{· ( D%(i(7C%{;sì *t„%)){4J ){3J*9—(å (Ói3'(³ sû£ (¤ (¥(¿Bsì **(«‰3*tü$++{8IYE'(³ sû£ (¤ (¥(¿Bsì *(Un("nsì **(«‰3½*tü$++{8IYEÉÿÿÿ+ t†%{9J (³ sû£ (¤ (¥(¿Bsì *t…%{6J +Êtƒ%{0J{2J {1J",>(å (Ói3,r; p( sû£ (¤ (¥(¿Bsì * (b+(ê (ë "(9]("nsì *t‚%,,{.J,{-J,{/J ,>(å (Ói3,r‡p( sû£ (¤ (¥(¿Bsì * (b+(ê (ë  (b+--(ê .-(ë //(Sn(Qn("n.sì *0 (Ïi(é þ(`+*0 ­~(ž‹35t% {'J (sû£ (¤(+&(ÀBsð *(Ñi(é (`+ (Ç ($n3 (Ç t{{Š; (Æ sð *( sû£ (¤(+&(ÀBsð *0£(®0 (n o·0,(sû£ (¤(¥+(éi  (n oòi,(ª0 (n o·0+,(åi+ ,(å (Ói3(Ñi+(Ïi(i‰(¹B*ZsŸ1(A+*0 €(ñ 9ß (ñ (ñ -8(ò (ó (t+ (Ç (¤ (¥ (Æ sô *(ò (ó (ò (õ (ñ (t+ (Ç (Æ (e+(ï (î  ,(sû£ (¤ (¥+(¥  sô *r? ps¤ (¤ (B+*0 ¡(ñ 9‹ (ò (ó (ò (õ (ñ (b+(ê (ë  , (Sn(Qn+  (Qn 8iÿÿÿ sð *0 )‚    (Un(f+*0›…9| (ö o÷ oø 3s¡1(C+(D+*o÷ -(sû£ (¤(B+*o÷ oø (øsû£ (¤(B+*  s£1(A+*¦s§1où Ysú (E+(û *0/*{w{i#($N(Wo ‹sû£ (¤(F+*0 D†,@ (¶ ([> {µ{I{w{w{i#{|þ(¿=**0f‹(«‰ 3Et% {¯{¯{©8(ƒ],${?I {¯{©8(k+Œæ*(«‰3Dt% {¯{¯{§8(ƒ],#{@I {¯{§8(k+ Œ*(«‰3`t%{CI(ñ -{¯{¯{£8(ƒ]+,&{CI{¯{£8(k+Œm*(«‰3Ht÷${¯{¯{¢8(ƒ],&{3I{¯{¢8(k+Œó*(G+*0 S(«‰3Etý$ {¯{¯{ž8(ƒ],${9I {¯{ž8(k+Œô*(«‰ 3Dtÿ$ {¯{¯{Ÿ8(ƒ],#{;I {¯{Ÿ8(k+ Œõ*(«‰3Ht%{¯{¯{¨8(ƒ],&{AI{¯{¨8(k+Œñ*(«‰ 3Ht%{¯{¯{ª8(ƒ],&{>I{¯{ª8(k+Œö*(l+*0 P”(«‰3Etü$ {¯{¯{š8(ƒ],${8I {¯{š8(k+Œ’*(«‰3Dtþ$ {¯{¯{œ8(ƒ],#{:I {¯{œ8(k+ ŒÁ*(«‰3Htø${¯{¯{ 8(ƒ],&{4I{¯{ 8(k+Œ÷*(«‰3Htû${¯{¯{8(ƒ],&{7I{¯{8(k+Œ€*(m+*0Ì•tÞ {I< (ønE@¯ 3Ù[…-«ÕÿW(G+*t£{â; {¯{¡8(k+Œ*t¤{ã; {¯{›8(k+ Œø*t¦{å;{¯{š8(k+Œ’*t¨{ç;{¯{œ8(k+ŒÁ*t¢{á;{¯{ 8(k+Œ÷*t¥{ä;{¯{8(k+Œ€*t§{æ;{¯{ž8(k+Œô*t©{è; {¯{Ÿ8(k+ Œõ*t°{ï; {¯{¨8(k+ Œñ*t¬{ë; {¯{ª8(k+ Œö*t­{ì; {¯{©8(k+ Œæ*t®{í; {¯{§8(k+ Œ*t¯{î;,&{î;{¯{£8(k+Œm*(G+*t¡{à;{¯{¢8(k+Œó*0 ëš(ž‹E^ Ð(H+*t„% {3J («‰3Etù$ {¯{¯{¡8(ƒ],%{5I {¯{¡8(k+ Œ+a(«‰3Itú${¯{¯{›8(ƒ],({6I{¯{›8(k+Œø+(n+sü *t…%{5J(Š+(ý  (þ  {¯ (›`  (›]  (îo3 (o++ (Žo ‹sû£ (¤ (I+ sü *tx%{Joc‰(PŒ(š‹8þÿÿ0 [¤ofm {g:{q: ( k3t { :{¬:+ rWps\ z s©1oç+s«1r6Wpoè+s­1(J+s¯1¥¸(K+(L+Œ¹,+ r¨9ps‚ zŽi  v%   Y   2%   £º(ÿ ¤v% X   X3Û s±1¥¸(M+(N+ s³1sµ1 ¥¸(K+(N+(O+s·1 ¥¸(M+(N+( þ-(osû£(¤(+&+¥¼o oï 9êo ( s»1s½1(P+(Q+(R+( ,B( ( -+¡{I(s{Isû£(¤(+&8tÿÿÿsÁ1(S+,-{I(r{Isû£(¤(+&87ÿÿÿ{I(q{Isû£(¤(+&8 ÿÿÿÞu , oâ &Ü&Ü&Žio ŽiX/-ŽiŽio (·sû£(¤(+&+sÍ1(T+(m†,$( ( ( (  s  +(Xsû£(¤(U+( (  Žiþs  *tûo0 ý§{|(U {¯($U(Ë+&ofmo‰j9¯ (q+ (  (  ( sÏ1o¸+, (w†+,,ofmomj(Rsû£(¤(+&+ oK &,(¤ (nsì *{³(¼Usì *(ò*( (  (¾0  (n oÇ0,sÑ1(ð++ oµ oµ  oø X.6{w{i#oµ  oø Xs¼,(¤(+&+o†  oø Y(V+ sÓ1 (+  (  (h+  (î  (ï (ß+sÕ1 (+(nsì *0 i¨(`+ ÞQt o ‹ (¤(¥(®0  (n o·0þ,(¿B+ {¯{¤8sì Þ*Q0 (Ïi(é (s+*0 °©{¯ (O]($nþ-(sû£ (¤(+&+($n3Ttv {ƒ; {‚; oµ o~mo† Y/+ (W+(r+*ra ps¤ (¤(X+*0 ¬¬-* ( ( u&,( ( t&{¯K (Ô *( ( t& ( {®K {µ{½(®@{I{|{w(¤?(Ú (Û (è=(a>3* (èŽ( (Ô *05³u &:7u&:æt & {¢K {¡K { K {K{ŸK{žK(v+:£,þ+,(sû£(¤(¥+,"(¾B {¯ (™^(«*+ (Vi(È*(Ê*(|+  (   (  {I  s s *  (¶  (¿Ž8¹þÿÿt &{£K{¥K {¤K(Ïi(é (¬0(s+(Æ (Ç  u &,+t & {¡K,{¯ (™^(«*+ («*8þýÿÿt&{¦K8Ëýÿÿ03¶u!&,t!& {¿K+æt & {½K{¾Ks *0A· u &-u&-t &{¡K*t & {£K+Ðt& {¦K+¿0-º(x+ ( ( s¸  s×1þ(Y+*0½(z+u!&9øt!& {¿K {ÁK {ÀK (Ïi(é (¬0(¼0 (s+(Æ (Ç u &,mt &{½K( ,W{½K( u &,@( t &  {¡K,)( ( -{¯(™^(«*+(«*8óþÿÿt &{½K( 9{½K( ( -n(   (w+  (   ( (   ( (!   ( ("  ([ (\  s s# *{½K{¾K {w{i#(Z+sÙ1s ([+(\+($ (  ($ (!  (% ($ ("  s s# *{¾K rûpo Œ’,4u¼,(x ¥|o¡ +o& +rR9p(   sY‰{¯{¥8(«*(Vi(È*(Ê*(|+(  ( {I([ (\  s s# *0’¿þþ,+ {Ioh ,s- (¤(¥+,(¢i+( i sÛ1{I    (õ. o& {Io& s' *0ZÁ     (+ Þ4t oG (¤(¥sÝ1   s s( Þ*#$40pÉsû1 (EE1Rƒµu¤¸ýí(oGsû£ (¤(]+*t8&{ L 8qÿÿÿt&& {ÙK {ØK(Œ*t(&{ÛK(E3—{ÞK-Ž{ÜK(NŒ*t)&{àK {âK{áK (~+ (Œ*t-&  {ïK:7ÿÿÿ {ðK {ëK{I  {ëK  {ëK{I  {îK {íKsý1 o)  où 3?  o) Y (^+(]‰(PŒoŒŒ (_+(¥(ˆŒ+  (PŒþ(`+*t.&{òK{ñK(a+(( ( Œ*t/&{óK 8êýÿÿt0&{÷K{õK{öK(a+("Œ*t5&{ÿK*t2&{úK(jŒ*0mË(9 9W (* (¼ˆ (EEq”(9 (9 -(* (+ (, *-(sû£ (¤ (b+*3(sû£ (¤ (b+*( sû£ (¤ (b+*(9 (9 - (c+þ(d+*-ª+t/&{óK(¼ˆ (E3(9 (9 - +½:sÿÿÿ8Vÿÿÿ(9 (9 - (* 8-ÿÿÿ:Oÿÿÿ82ÿÿÿ:Dÿÿÿ8'ÿÿÿ0•Ð (ø* (- (. oµ  (9 9ñ (* (¼ˆ(EE: (+8|t.&(9 (9 -Ø 1Ô{ñK+St/&  {óK(¼ˆ  (E3¥ t.&(9 (9 :‹ÿÿÿ >„ÿÿÿ{ñK+®(+  o/ (ù*(0 (1 (2 (3 (4 (5 (‚+  (6     s2 (7 s( *0uå s8 {| (EEJù¨ÏëOŸ _Kànx ÝŽÒt&& {ÙK {ØK(«‰E¹' (¿* sß1   s s( *t%{FI{EI {¯   {¡8(o_(«*     sá1(e+(3     8^þÿÿ( sû£ (¤ (f+*t'&{ÚK sç1   s s( *t4&  {þK  {ýK (Ïi(é (ª0(¼0  (s+  (Æ  (Ç {w{i#  (+(EE5 rÇ ps\ zt4&{þK sé1  s s( *t(&{ÛK(E3²{ÞK{ßK{ÝK{ÜK   (|+( ( (9  së1s s( *t(&{ÛK(E3${ÛKt4&  {þK {ýK 8Rþÿÿ{ÞK{ÛK{ßK {ÝK{ÜK    (|+( ( (9    (+(:  sí1(; s( *t3&{üK ( sû£ (¤ (f+*t)&{àK{âK {áK (Ïi(é (¬0(¼0  (s+  (Æ  (Ç   («*         8æúÿÿt*&{åK (õ sû£ (¤ (f+*t+&{çK{æK{èK      (+(; (  (; (! (: (; ("     (+(; (  (; (!  (: !(; (" " (g+- sý, (¤ (+&+ "sï1(h+ !sñ1s s( *t,&##{éK$#{êK      só1$(i+$(‚+%%(6 & &s÷1%(7 s( *t-&''{ïK'{íK('{ðK '{ëK{I)'{îK$(þþ,( sû£ (¤ (¥+$(9 þ,+(®@*{µ{½* {w(¤?)(è=++(a>ESQ›oOu(# sû£ (¤ (f+*+tb,,{*#$(9 -E*     (µˆ     8»÷ÿÿsù1([ sj (¤ (f+*+t_--{'#{0<.-{'#{1</-{'#{/<0 . (j+11(< 21(= 32(+44où/$(9 -(+ (‰ (s> 8ƒ{¯(ô]66(¦ 76(J 88oµ $o/ X3{¯7(›^+,{¯{¯7(^(^+,$(‰ (s> +$(k+55(? 5(@ 99(9 þþ,0{Oo þþ+,( sû£ (¤ (+&+sÿ1::9(a+;0{O(l+8{¯  0 8(r`(n7)s2;(m+<7 4<(ï+==(ý =(þ >/8oµ 2( sû£ (¤ (+&+8/(I+?   ?(+(; (  (; (! (; (" (: ;(A þþ,+.3sB (C @ )+/08>@s2s s( *+A    )$A(€+*+A+à+tcBB{+#C{¯{³ {|C(ŸUCoüQ-$CoùQ(! sû£ (¤ (¥+{¯C ( UCoþQDD,IDEE( F  C{³ oR(«* F(À* s 2   s s( *(" sû£ (¤ (f+*+taGG{)#H{|I IH{@0(UH{@0on{Ø:-7H{@0onJJ{ß:{I(! sû£ (¤ (¥+{¯H{@0 (&U(Ë+&H{@0ono®kKK,DKLL(œ   H{@0H{?0(ñ](«* s 2   s s( *(" sû£ (¤ (f+*+t\MM{!#..oÆmNN{U;{];KK9‚KLL(œ  . (j+11(D  {|.(™U{¯.oÆmNN{U;{a; (U(Ë+&  («* s 2   s s( *(û sû£ (¤ (f+*t5&{L ($ sû£ (¤ (f+*t.&OO{òK O{ñK$$(n+3  3(n(«*    3$(‚+%%(6 & 3&s2%(7 s( *t/&{óK          8/ñÿÿt0&PP{÷K P{õKP{öK$(¾B  ,{¯(o_+{¯(š^(«*    s2$(i+$(‚+%%(6 & &s2%(7 s( *t1&QQ{ùK Q{øKR R (o+SS(E TS(F U T(ò*VV( 3V(G WV(H   («*Tofmo•jXWs2X(p+Y U s2   s Y(q+%%(6 & T3&s#2%(7 s( *t6&ZZ{L Z{L[Z{L\(% s(¤ (¤ (¥  {¯{§8(«* [\s%2   s s( *t2&{úK {w{i#{· ( D (9C s'2   s s( *t7&{L (&oGsû£ (¤ (¥ s)2   s s( *t8&{ L    s+2(r+*0 .s-2   s   (s+(t+*0$ç(¿B {·(ÇB( D(ðB *Fs/2(u+&*0\ê(I ,S (J (z03C(J tP  (I {O {P{N („++¥*0ë   (…+*0%ì(¾B (‰+ (þ (ý sK *0lí,[(¾B {w{i#{·oŒŒ( D(7C(‰+ (ý (þ {¯ (,`sL *(‰+*0jîoŒŒ (Š+ ÞPt (¤(¥{w{i#(ƒ+{¯ (Þn {š8(Ðo(`sL Þ* P0?ï(*1s12(’*+ (M (+ (þ (ý sL *0ƒð{w{x{y{z{{{|{}{~{sò-(N s. (‰+ (ý (þ {¯ (G+sL *’(*,s32(’*+(‰+*~(*, (“*+(‰+*v(*, (“*+(+*0€ò(‡+ (O (P (Q oŒŒ{w{i# (  (¸*, sL * {¯(ôn{¥8(Ðo(ªq(lŠ(ÔosL *0 ~ó(±ˆ 9Ê(‡ (R (‡ (ˆ (‡ (Š (‡ (‰  ,('sû£(¤(¥+,d( ( u&,M( ( t&{¯K (Ú (Û (( (]‰(PŒ87ÿÿÿþ(ó+*(ŠŒE9`´L(I -þ(•+*(“+(P  (O  (Q   oŒŒ (ñ/ þ(ï+*t«%  {ÕJ  {ÑJ  {ÓJ {ÔJ (t0(S 8„ýÿÿt¬%{ØJ{ÛJ {ÜJ{ÖJ(r0(S 84ýÿÿt¶%{K{I{KoŒ(v0(S 8ìüÿÿt¸%{K{K{ K{ Kþ(™+*t¹%{K{K{K{Kþ(™+*0T*oT oµ .)oµ oT ((sû£ (¤(+&+s52(v+(w+*0Uô{¯ (O]($nþ,{¯(k] ofm(#^+,(Asû£ (¤þ(¥**0%ì(¾B (•+ (þ (ý sK *0 õ(ŠŒ3at±% {ñJ,Q{ðJ {ôJ {óJ {òJ(Ž+(þ  sV +”(Œ+þoW *0ý#(ŠŒE9Þ."GÞU Ï ßÞ fAé`ôÁY·))üN²Ù ‡•)))))~Lb€‹ l | › %ôB™"Ü"ó îy ÑBþ(ŠŒE9z½(ŠŒE9G8{Vr p ã só ztÆ%{Œ(‰+*t½%$${$K ${"K(‡+(P (O (Q (ŠŒE9 srá ps\ zt½%%%{#K%{$K(Ïi(é (¬0(¼0(`+&&(Æ &(Ç («*sì + sì   (Æ  (Ç {w{i#( +(Ê]sL *t¿%''{)K'{(K 8þÿÿt¾%(({'K ({%K(‡+(P (O (Q (ŠŒE9 srï ps\ zt¾%)){&K){'K(Ïi(é (¬0(¼0(`+&&(Æ &(Ç («*sì + sì   (Æ  (Ç {w{i#(+{¯(Ñ_sL *tÀ%**{+K*{*K 8 þÿÿtÁ%{,K {w{i#{·( D(9C(ön(ÐosL *t°%++{ïJ +{îJ(¾B{¯(—^(«*(‰+!!(ý !(þ {¯{¯(…*(ÿ_sL *tœ%,,{“J ,{‘J-{w{i#-(y+.s72.(z+//.-(‘+00(\ 0(] 1{¯1.(³_sL *t%22{–J 2{”J 2{•J-{µ{w{w{i#{|(À=(¾B ,{¯(o_+{¯(š^(«*{¯44(O]($nþþ33s92-({+00(\ 0(] 1 ,(šp(¤ (¥ 1(æo+'{¯44s;21{¯(Â_(}+sL *tŸ%55{œJ5{›J 5{žJ 5{J(Ïi(é (¬0(¼0(`+  (Æ  (Ç («*o ‹(l þ(š+*t %66{ŸJ6{£J 6{¤J6{¢J76{¡J86{ J9{µ{w{w{i#{|(À=987(¦+*tž%::{˜J;:{šJ :{—J<:{™J={µ{w{w{i#{|(À=<;=(¬+*t¡%>>{¥J?>{¨J >{§J>{¦J@{¯{¥8(«*{¯{¢8@(‰+!!(ý !(þ (+AA(ý A(þ {¯?(tq(Ý]sL *t¢%BB{«JB{©JCB{¯J B{ªJDB{­J@B{¬J B{®JE{¯{¥8(«*{¯{—8(‰+!!(ý !(þ {¯{—8@(‰+AA(ý A(þ D{ID{I{¯{—8(¨](ò {µ(Ÿ*E(+FF(ý GF(þ H{¯C H(“`GsL *t£%II{°JCI{±J{¿I I{³JJI{¶J I{²J3I{´JI{µJ@ ,(*sû£ (¤(¥+J@C(®+*t¥%KK{½J K{»JLK{ºJ K{¼J(Ž* -Q(ŠŒ3(+sû£ (¤(¥+-(3+MM,(,sû£ (¤(¥++L(• -{¯{B8þ+,(-sû£ (¤(+&+þ(°+*t¤%NN{¹J N{·J N{¸J{µ{w{w{i#{|(À=(ŠŒ @/t¥%KK{¼J(3+MM9M(^ -K{¼J@@(3+OO,+(.s(¤ (¤(¥ 9‡-oT PP1s=2-(|++,"s?2-(}+(~+(§‰(Œ8xP1sA2-(|++, sC2-(+(€+(¥‰(Œ+@ -("Œ+4-oT ô1(0sû£ (¤(+&+ -("Œ8,ëÿÿ(¾B ,sE2+sG2{¯(+(«*(¾BQ{¯(ê_R{w{i#{·( DRQ(7CQ(‰+!!(ý !(þ {¯R{¯(r_(,` ,sI2+sK2{¯{¯{B8,sM2+{¯4S4SsO2R( ]Q(Ê]o¾ (‚+sL *t­%TT{áJ T{ÞJ T{ÝJ3T{àJT{ßJ8sQ2sS23 8(,*t®%UU{èJVU{çJWU{åJ U{æJU{âJU{äJ U{ãJX(‰+!!(ý !(þ sU2 (ƒ+Y{¯{¦8{¯{—8Y(,ZZ(a Z(b [{¯{¦8 (,\\(a G\(b ](£F{¯{¦8{¯{—8[(+(ò (ó (¡F{¯{¦8](+^^(ò ^(ó H{¯HWV(ß]GsL *t¯%__{ìJW_{íJ`_{ëJ _{êJ_{éJ@@(‰+!!(ý !(þ (+AA(ý A(þ {¯W`(à]sL *tÄ%aa{6K a{8Ka{7Ka{5K@rp(Âsû£ (¤(¥@sW2(„+(P sY2(„+b(ön(Ðob(P sL *tÎ%cc{\K c{[K (ön(ÐosL *tÐ%dd{`K d{_Ks[2(„+(ön(Ðo(P sL *tÏ%ee{^K e{]Ks]2(…+!(ön(Ðo!(ý sL *t±%ff{ðJgf{ôJ f{óJf{òJ@f{ñJ ,hsa2þ(†+*@(Œ+!!(ý !(þ (*.(1sû£ (¤(¥+(Ž+AA(ý A(þ (¬qg(ÔosL *t©%ii{ÎJ i{ÍJ{¯{¥8(«*þ(Ž+*t²%jj{øJ j{úJ j{ûJj{ùJ j{÷Jkj{öJj{õJ@{¯{¢8@(+!!(ý !(þ kþ, þ+,{¯{¥8(«*+(Œ+AA(ý A(þ k,6kmm(ô EE(Œ+FF(þ (ZŠF(ý sc +'{¯4(ôn4{¥8(Ðo(\Šsc ll(d Gl(e nl(f H (ZŠnH(£]GsL *tË%oo{QK o{PKo{OK@o{NKpsc2p(‡+qq(g q(h r@(‡+(P (Q (‰+!!(ý G!(þ r(äoGsL *t·%ss{ K s{ K{Its{ Kus{ Ks{K@uoe‰,6@oŒŒt(©ˆ(¥@t(v0(M (S þ(+*@oŒŒt(©ˆ(¥@t(v0(I+(M (S (S þ(+*t»%vv{K v{K{Itv{Kuv{Kv{K@v{KEuoe‰,6EoŒŒt(©ˆ(¥Et(v0(M (S þ(+*EoŒŒt(©ˆ(¥Et(v0@(t0(I+(M (S (S (S þ(+*tµ%ww{K w{Kuw{Kuoe‰,u(M þ(ó+*u(I+(M (S þ(ó+*tº%xx{K x{Kux{Kx{K@uoe‰,u(M þ(ó+*u@(t0(I+(M (S (S þ(ó+*tÃ%yy{1Kzy{2K{y{4K y{3K(¬0z{(U+||(È }|(É |(È {7;~|(È {4; |(È {6;. (ÔB(+, sy, (¤(¥+{¯~(g^(+(i €(j -€(k þþ,(2sû£ (¤(¥+{¯44se2sg2.(z+//.-(‘+00(\ 0(] 1{w{i#{·( D}(8C(«*}(Ìp(¤ 1(æosL *tÌ%‚‚{TKP‚{UK ‚{RK‚{SKt(‡+(O (P (Q tPsk2sm2(ˆ+ƒƒ(l ƒ(m „(«*„Pon sL *tÍ%……{XKP…{ZK …{YK…{VK@…{WKt{¯{¥8(«*@(‡+(O (P (Q tPsq2ss2(‰+††(o †(p ‡(‰+!!(ý !(þ ‡P(Š+sL *tÊ%ˆˆ{JK‰ˆ{IKŠˆ{LK‹ˆ{MK ˆ{KK--(‹+.(¬0(¼0‰(d+ŒŒ(ï Œ(î su2.(z+//.-(‘+00(\ 0(] 1(¬0(¼0‹(d+ŽŽ(î GŽ(ï (³ ,:(³ (³ -(´ +&rps¤ (¤(Œ++ {¯{¥8(«*Š(+1(Ë]GsL *t™%‘‘{ˆJ ‘{‡J‘{‹J ‘{ŠJ3‘{‰J@{µ{w{w{i#{|(À= @3(¯+*tÆ% {:K(r 9OÝÿÿ{úÿÿ(A (A (A 9Nýÿÿ(A (A (A 9 úÿÿ(A (A (A :ðùÿÿ8ýÿÿ{‘J rUpsw 8 (A (A 9 þÿÿ(A (A (A 9õüÿÿ(A (A (A 9‰ùÿÿ(A (A (A 9­üÿÿ(A (A (A 9Uùÿÿ(A (A (A 9eüÿÿ(A (A (A 9!ùÿÿ(A (A (A :ùÿÿ8üÿÿ(A (A 9=ýÿÿ(A (A (A 9)üÿÿ(A (A (A 9½øÿÿ(A (A (A 9áûÿÿ(A (A (A 9‰øÿÿ(A (A (A 9™ûÿÿ(A (A (A 9Uøÿÿ(A (A (A :;øÿÿ8Lûÿÿ(A (A 9qüÿÿ(A (A (A 9]ûÿÿ(A (A (A 9ñ÷ÿÿ(A (A (A 9ûÿÿ(A (A (A 9½÷ÿÿ(A (A (A 9Íúÿÿ(A (A (A 9‰÷ÿÿ(A (A (A :o÷ÿÿ8€úÿÿt¹%{K(A 9P÷ÿÿ{K(v (ŠŒ@Þ(v tœ%{‘J(A 9µ{‘J(A (A 9‘(A (A (A 9D(A (A (A 9÷(A (A (A :³(A (A 9k(A (A (A 9#(A (A (A 9iöÿÿ(A (A (A 9Á(A (A (A 95öÿÿ(A (A (A ,b(A (A (A 9öÿÿ(A (A (A :êõÿÿ{K rkp(Ž ( (“+sw 8o{K r‹p(Ž ( (“+sw 8A{K r«p(Ž ( (“+sw 8{K rËp(Ž ( (“+sw 8å{‘J{K rçp(Ž ( (“+sw 8®(A (A 9ë(A (A (A 9Ã(A (A (A 9¶ôÿÿ(A (A (A 9(A (A (A 9‚ôÿÿ(A (A (A ,B(A (A (A 9Qôÿÿ(A (A (A :7ôÿÿ{K8Hþÿÿ{K8hþÿÿ{K8ˆþÿÿ{K8¨þÿÿ{K rýp(Ž ( (“+sw 8„(A (A 9ë(A (A (A 9Ã(A (A (A 9Œóÿÿ(A (A (A 9(A (A (A 9Xóÿÿ(A (A (A ,B(A (A (A 9'óÿÿ(A (A (A : óÿÿ{K8ýÿÿ{K8>ýÿÿ{K8^ýÿÿ{K8~ýÿÿ{‘J{K rp(Ž ( (“+sw 8Q(A (A 9ë(A (A (A 9Ã(A (A (A 9Yòÿÿ(A (A (A 9(A (A (A 9%òÿÿ(A (A (A ,B(A (A (A 9ôñÿÿ(A (A (A :Úñÿÿ{K8ëûÿÿ{K8 üÿÿ{K8+üÿÿ{K8Küÿÿ{‘J{K r%p(Ž ( (“+sw 8(A (A 9ë(A (A (A 9Ã(A (A (A 9&ñÿÿ(A (A (A 9(A (A (A 9òðÿÿ(A (A (A ,B(A (A (A 9Áðÿÿ(A (A (A :§ðÿÿ{K8¸úÿÿ{K8Øúÿÿ{K8øúÿÿ{K8ûÿÿ{K8küÿÿ(A (A 9ë(A (A (A 9Ã(A (A (A 9ðÿÿ(A (A (A 9(A (A (A 9èïÿÿ(A (A (A ,B(A (A (A 9·ïÿÿ(A (A (A :ïÿÿ{K8®ùÿÿ{K8Îùÿÿ{K8îùÿÿ{K8úÿÿ{K8aûÿÿ(A (A 9ë(A (A (A 9Ã(A (A (A 9ïÿÿ(A (A (A 9(A (A (A 9Þîÿÿ(A (A (A ,B(A (A (A 9­îÿÿ(A (A (A :“îÿÿ{K8¤øÿÿ{K8Äøÿÿ{K8äøÿÿ{K8ùÿÿ{K8Wúÿÿ(x (y (z  (}– o (­ˆ(‡+!!(P "!(O #!(Q $(l {w{i##(¶*%%(@ &%(A '' («*"$(ñ/#(H+&s…2 (™+þ(ï+*,+ þþ,   þ(˜+*(:sû£(¤(x+*0<{| {¯ (O]($nþ9’,(;sû£ (¤(+&+{w{i#{·( D(sû£ (¤(+&+{½{w{i#(È=(š+(M þ(›+*0a{| ,(¾q+(¼q - +($ {¯(^,*,(?+(@ sû£ (¤ (+&+(a>E,),r;p+rKp(C sû£ (¤ (x+*tg{2#{1#s‡2(›+,){¯{³ {¯{­8(¼H(H+,(B sû£ (¤ (¥+,+(*- (’++(k  (õc -*-(m.+&{µ($ (x.+ ({  (Ž (  þ(û+*ti  {4# -+8($  {µ {w{w{i#{|(¿=    þ( ,*Bs•2þ(œ+*0`{¯(k] ofm {¯(n] («*s‰2{g:{s:{ˆ:(+,$omj(Dsû£ (¤ (¥+o•js2(ž+s“2(Ÿ+(| (} ,>  (~ (   s—2s™2s›2(_+(_+( ++(€   (¡+ s2(_+  s¡2 (¢+s£2s¥2 (£+(ÿÁ(d (¤+s§2s©2 (¥+(ÿÁ(d (¤+þ,o þ+,%(‚ oƒ sã, (¤ (+&+o -(Gsû£ (¤ (+&+s«2 (¦+s­2(§+s¯2 (¨+{¯(‘*(¾_ ,(  (~ („  (~ (…  (½]+ sL *0%(EEM3(Hsû£ (¤(©+*t)&{àK 8vÿÿÿt8&{ L 8\ÿÿÿt(& {ÛK(E3ž{ÞK-–{ÜK {{s±2(ª+((«+(J”(>”(† (  (¬+ {I(=”(3‘s‡ *0¨{‰ {‹ {Š {Œ {,L{+L(E3ct7&{L-R,N{L(‹  {L  (Å* {I   sY‰  {Is‡ *   (ž+*0Psˆ (­+ (‰ 9 (‰ (‰ :†(Š (‹ o•Q¥ýo¶  oï , o· Ö +è Þu   ,  oâ &Ü&Ü(Jsû£ (¤ (¥8(Š (‹ o•Q¥ýo¶  oï , o· Ö +è Þu   ,  oâ &Ü&Ü(Ksû£ (¤ (¥+(Isû£ (¤ (¥*T!uÚ!û0Ö"{ˆ {Œ (Œ -{¯(c`- (®+*(Œ 9” (Œ (Œ :( (Ž {¯{³ (ó*( ( (‘ (’ {¯ sµ2 s·2(+(‚+(n  s“ (” **0 j#(EE:™rSps¤ (¤(¯+*t8&{ L 8nÿÿÿt(& {ÛK(E3°-­{ÜK r‡p(˜– {IsY‰(¶ˆ(ÿ* (ss• *t7&9Xÿÿÿ{L {L(‹  {¯(š0(·. (°+ (¶ˆ(ÿ* (Å*{IsY‰ s• *0»+{‚ {‰ {ˆ { {Š{Œ{…{„{‡{ƒ {‹ {† {+L     (¢+  (–  (—  (˜   (µˆ (Ã/,(™ (š + (¾B(n(,(› (œ (Þ.(â-(z (,( (ž {,(ž {+(ž {/(ž {%(ž {&(ž {*{ñ(ž {' (±+!!(Ÿ 9ê!""(Ÿ (Ÿ :Õ"(  {#{w{i#$,.(™ (¡ &(™ (¢ '&,'++%$%(J:(B:($((¦/(  %(z (K:'{¯{w{i#%(à*))'(â**#*(‘] s£ s¤ *(Lsû£+(¤+(²+*0T/{¼{w{i#s¹2(³+(FK s¿2(´+ sá2(µ+ (¥ (¦ s§ *0×*{¯{¯{®8(ƒ],+{¯{¯{±8(ƒ],+{¯{¯{«8(ƒ],+{¯{¯{°8(ƒ],+{¯{¯{¯8(ƒ],(Msû£ (¤(+&+{¯(‰],(csû£ (¤þ(¥**0â8o ‹ (Ïi(é (¬0(¼0(`+ (Æ (Ç {¯ (O]($nþ-(Nsû£(¤(+&+{¯ (a]-{¯ (^þ+,{¯ (e`+,(Osû£(¤(¥+ o ‹(¥+{w {x(•*{y{z{{{|{}{~{{€s.{¯ (k](*{|{¯ (a],+.{¯ (`],{¯ (^þ+,þ+9Áþþ,(P sû£(¤(+&+(¨ þþ,(Qsû£(¤(+&+{¯ (`],(*þþ+,(Rsû£(¤(+&+sã2(¶+   ¥û (+*{½{w{i# (È=(š+ {¯ (`], (*þ+,(Tsû£(¤(+&+så2(·+  (©   (ª  {¯ (^, (« þþ+, (¸+(¬ +  («* (a>E -(Xsû£(¤(¹+8d tg- (Wsû£(¤(¹+87{2#{1#( (­ ( ( sç2(›+{µo ‹(x.{|  (k  (õc(¾q(Ž ( (M (û+(ý (þ ,(¶ (Ô +r‘psY‰(Ô s® +W th,(Vsû£(¤(¹++-{3# («*{¯ (`P s® (¯ (° (±  (×*{µ!!sé2(º+  s²  (³ " "(¤+##(¦ $#(¥ % sí2%(»+s÷2%(¼+&&o´ ''(¤ ('(§ &oµ )() (°]*{¯*(,`$sL *0 X9(¾B (¾B (¾B (¾B (¾B{¯ (˜^{¯(^-{w{i#{·(6C+9º{¯ (UBÞ>t(ô   ,( (d   (/sû£ (¤ (Ü+Þþ(@  (A   («* («*{¯ {¯(ðn{£8(Ðo(æ_sL *{¯{£8(«*{¯(ðn{£8(ÐosL *f|>0 X {w{i#{·{¯{£8(5C,"{¯ (ðn{£8(ÐosL *(§+*0ª:(l -0([ (\ r›p(­ˆ(‰(Œ(>Œ Ýà30([ (\ r­p(­ˆ(‰(Œ(>Œ ݬ([ (\ r½p(­ˆ(‰(Œ(>Œ Ý{t (& ([ (\ rÑp(­ˆ(‘‰(Œ(>ŒÞ7t([ (\ råp(­ˆ(£‰(Œ(>ŒÞ Þ (ÿhþþ,oO {¯{E8(èh+,rr:p(ñ +,Esù2r Fprûpr p([ (\ (\ (\ (þ+(( (]‰(€‹(Œ**¨9á7 ¢{0 ô=(«‰EÂq(¿* (ÐosL *t% {FI {EI {¯{¡8(o_(«* (œp(¤ (k (æosL *t %{GI{¯{¯{8(o_(«*(žp(¤ (k (æosL *t%{BI(š {BI(™  r#p(  {| (ö>{w  sY‰(Ú (Û (Ä=  u>, (Zsû£ (¤ (]++? t?{ (¶ ,Ë{ (· (¸   (©+(‰+*0 XM(J¥ r FprAprYp([ (\ (\ (\ rep(­ˆ($¥(Œ(>Œ(‰+*0 VC(*þ þþ 9 (Ù ( -Z(‰+(ý (þ rsp(©](ó  (ò    s¹ (º s» +7  (¸ (¼  ([ sû£ (¤ (½++s» (½ (¾ sû2(¾+(¿ -(À +Mþþ(¿+(Á ( (ò*(H («*þþ,{¯(a]þ+,(\sû£ (¤ (¥+,+,W{¯(`]-(]sû£ (¤ (+&+-!(^sû£ (¤ (¥8¤8ž(à þ,7þþ,(Ð+(_sû£ (¤ (+&+{¯(`],(`sû£ (¤ (¥+-{¯(a]-(asû£ (¤ (¥+{¯{³(%P:¨,S,L(• (‰(Œ(š+(ý (þ (  sÄ 8Ê-sÄ 8¸-)r‹ps¤ (¤ (¥sÄ 8‹r p ssó z ,§ (¸ (Å (•  (¸ (¼   (¸ (æ  (&Œ(‰+(ý (þ (  sÄ (Æ (Ç s3(À+¥û(+(ý (þ {¯(^,+(-+(â (ªq(lŠ(ÔosL *0 `D{¯(^9®rÝp(©] (ò (ó råp{¯{š8(©] (ò  (ó {¯(^s3s 3{¯(Þn{š8(Ðo{¯{¯(`(`sÈ (É sÊ *( ]rÎ p(©] (ò (ó ( ](#+(¨ (Ë (©  (ª (Ì  («  (¦ (£   s 3s 3   sÍ (Î sÊ *0¤M{¯{¥8(«*(‡+ (P (O (Q (îo@B tã{`<(îo@({`<tß{b<(³ 9 {b<(³ (³ :ï{c<(Ê 9Þ{c<(Ê (Ê 9Ä(Ê   (Ê (Ê :ª{L< (´  {¯  {B8 {E8 {¯{‰9(i,{¯ {¯{—8(ƒ]+,O{L< (´  (Ë   (Ë {¯{š8s3s3 sÏ (Ð sÊ +  (­+(Ñ (Ò (Ó  (Ô  (,(Õ (Ö (× (Ø (ÌF3DtB{3*{d*{î4(¨ -#{3*{c*{2*sÙ +ríp (©](ò sÙ (Ú (Û (+(ý (þ  s3(+oŒŒoÎF(F(z  (ZŠ(›o(=G(— (˜  (+(Á+++u-O+u:”t!!(Ý ( "!(Ý ( #{¯"#(“`8Bt$$(Þ (ß "$(Þ (à %$(Þ (á #{¯%"#(“`8ñt&&(â (ã "&(â (ä #&(â (å %&(â (æ '&(â (ç ( ( ]' %( +)uL%,(åŠ+tK%**{ªI(ߊ#( ]%#{¯{¯(Ί(vq"( ]((½](Ý]){¯{¥8(€Š(¨Š(à](¼](½]  o¾ sL *0«N(¾B ,{¯ {^8(¤ (n+ {¯(j_(«*(‰+ (ý (þ s (èo,0{¯ {^8(¤ (n{¯(r_(Ê]+ sL *0 :O-(í+* (` (ù (` (ø (é+*0­P(J¥ (A ,Q (A (A -#(v ($¥(Œ($¥(Œ++(( ( Œ($¥(Œ+ (‰(Œ sY‰(NŒ  ($¥sY‰(Ú (Û (( (]‰(TŒ(>Œ*¢(¢ -*rpoŒŒ(Ž ( (±+*0 ,{¯{¯{Þ8s3s3s!3þ(Â+*0S(è (é (ê (ë (ì (í (î (ï , +,+ ,+,+ ,+,+ ,+,#(¦{Isû£(¤(¥+ o‹Q oð  sñ (ò ,((ó (ô ,(ó   (ô (ô -+&{I(v{Isû£(¤(¥(õ *0…U {Ioð sñ (ò ,c(ó (ô ,V(ó (ô (ô -(ö (´+*(ö {I(v{Isû£ (¤ (¥(õ **0W(µ+ , (÷ (ì **0W(µ+ , (÷ (ë **0W(µ+ , (÷ (í **0W(µ+ , (÷ (î **0W(µ+ , (÷ (ï **0´X(µ+ 9ž (÷ (é (ø 9‡(÷ (é (ø (d (÷ (è (÷ (é (ê (÷ (ë (÷ (ì (÷ (í (÷ (î  (÷ (ï  (÷ (ù  *rPÂp*0W(µ+ , (÷ (ù **0t(º+,"{I(»+(»+(€(c *(¹+,!{I(»+(»+((c *(¸+,{I((c **0dY(µ+ ,U (÷ (é (ê (‡Q37tÁ {%0{¯(f^o÷ 3 oú (û ****0*[(¾+ , (ü oñ Y /* **0b](¾+ ,Q (ü oñ /=(Ã+ (g {¯{¯{ß8s;3{5<þ(N+***0…^(ŠŒ 3t£% {±J{¿I,*{µJ(ŠŒ3î{µJt±% {ñJ,Ú{óJ {³J {²J{´J{òJ{°J sý (þ **s=3*07_(ŠŒ,3+tÄ% {8K {7K {5K sÿ ( **6sA3*0™a(ŠŒ@Št«% {ÓJ(ŠŒ3t{ÓJt«% {ÔJ(²ˆ ,Y{ÔJ(/+ ,J(¶ {IrÒYp(ñ ,/{ÓJ(¶  ( {Is ( **0M(J¥ rpsY‰(µˆ*0 Çc(Å+ ,j( ( ( ( ( ( rÒYpsC3(Q>{µ{w{w{i#{|(¿= s *-8{I(½+(Ä+(ƒ{Isû£(¤(¥+oŒŒ(Æ+s *0 d(Ä+o  ,5(… (‹ (»ˆ ,!(i (j (… († s *-JsE3(„+{I(½+(Ä+(ƒ{Isû£(¤(¥+oŒŒr)p(J¥(„ŒoŒŒrCpoŒŒrGp(J¥(„ŒoŒŒrcp(J¥(„Œ(ʈs *0_e(ŠŒ3Vt«% (Â+{ÓJo  ,8{ÔJ(/+ ,)(¶ {ÕJ(  s  (  *(ŠŒ@„t«%(Â+{ÓJo  ,b(¶ {ÕJ{ÔJ {I (½+(Ä+(‚ {Isû£ (¤ (¥ (Æ+s  (  *(Â+o    ,X (¶ {I (½+(Ä+(‚ {Isû£ (¤ (¥ oŒŒ(Æ+oŒŒs  (  **03MrCp rGp(J¥(„Œ rcp(J¥(„Œ(ʈ*0 ^i(Ã+ 9(  ( (É+ ,w(  ( ( ( (  ( ( ( ( (  (È+(‹ (†   s ( *(É+  9« ( (  ( (  ( (  ( ( ,5 {I (½+(Ä+(Î {Isû£ (¤ (¥+ oŒŒ   r)p (J¥(„ŒoŒŒ(Ê+s ( **0 ™k(Ã+ 9À(  ( (É+ 9¥( ( (  ( (  ( ( ( ( ( (Ç+( (  (   (È+  (‹   (†     s ( *(É+9µ( ( ( ( ( ( ( ( ,5{I(½+(Ä+(Î{Isû£(¤(¥+oŒŒr)p(J¥(„ŒoŒŒ(Ê+oŒŒ(Æ+ s ( **0<l(Â+o  ,r(¶ {I(½+(Ä+(ƒ{Isû£ (¤(¥oŒŒ(Æ+oŒŒ rp(J¥(„ŒoŒŒs ( *(ŠŒ@©t«%(Â+{ÓJo  9„{ÔJ(/+,r( (¶ {ÕJ {I(½+(Ä+(ƒ sû£ (¤(¥oŒŒ r)p (J¥(„Œ s ( **0  o(Ë+ ,W( (  ( (! ( (" ( (# ( ($  ( s ( *(Ì+,o(% (& (% (' (% (( (% () (% (* (% (+  ( (¬ s ( *(Ã+9•(  ( (ŠŒ@}(  ( t«% (Â+ {ÓJo    ,O {ÔJ(/+  ,= ( (  (  (¶ (  (  s ( *(Í+*0 5s(Á+ 9(, (- (Î+ 9ú(, (. {µ(½={´(ÀˆÞu , oâ &Ü&Ü (/ þ9¤(0 (1 (0 (2 (0 (3 (0 (4  (0 (5  (0 (6  (, (7  (, (8  (, (. (, (9      s: s; (< *(Î+9ì(0 (3 (0 (1 (0 (4  (0 (5  (0 (6  (0 (2  {I (½+(Ä+(„ {Isû£(¤(¥oŒŒ(Æ+oŒŒr›p(J¥(„Œ   oŒŒrµp(J¥(„Œs: s; (< **K[0mu(ŠŒE9g (Ž s= *tÏ% {]K(ŠŒ3Ý{]Kt«% {ÓJ {ÔJ (Ð+(> (?  ( s= *t«% {ÓJ{ÔJ +¿0#v(Ð+ (> (? (&+s= *0Jw(Å+ ,8( ( ( ( ( ( s@ (A sB *sB *0 íz(Ò+ (C (Ñ+ (> (²ˆ 9Å(¶  (µ+þþ9ª(D (¶ (C -+d(E (F (E (G  rÒYpsG3(Q> {µ {w  {w{i#{|(¿=(¬   (µ+(Å+oŒŒsH (I **0P{(g ,< (g (g -(h oÚl(NŒ* sI3(Æ+(( ( Œ*(‰(Œ*0`|(g ,J (g (g -+(h oÚl {I(¿Ž(J (K + sK3 (Ç++(J ( *0L{(g ,8 (g (g -(h oÚl(µˆ* sM3(È+(/*(‰(*0D}(ŠŒ32t±% {ñJ,#{óJ {òJ {ðJ ( sL *sL *0ô~(Ñ+ (> (²ˆ 9(? (A 9ö(? (v (Ñ+ (> (²ˆ9Ï(A (A 9¿(A (A (A :¦(¶ (¶  (? {I(’–,(¿+þ+, oT þ+,Z(¶ (¶  (? (v  (É+oŒŒ oŒŒ(¥ (¼ sû£ (¤ (¥*(ŠŒ@Çtœ%  {‘J(A 9® {‘J(v (Ñ+  (> (²ˆ9‚(¶  (? (¿+1 oT þ+,R(¶  {“J  (? (É+oŒŒ (H¥(¥(¼sû£ (¤ (¥**0sM sU3 Œ3sN *0 M  sa3*02‚(jŠoŒŒ (H¥  (J¥(„ŒoŒŒ(JŒ*07(–o rËp(ñ ,*rÑp(ñ ,+ïr×p(ñ *0 Ò„{´ (Àˆ (O (/ þþ,'{I(m oGsû£ (¤ (¥+ (+,;(… (‹ (… (†   (Ú+sP * (+9Ê(} ( (} (~ (} (€ {I(Ü+,2(–{Io (Í oŒŒsû£ (¤ (¥+%{I(ž oŒŒsû£ (¤ (¥rßp(Û+ rcp(Û+     (Ú+sP *{I(ž oŒŒsû£ (¤ (¥    oŒŒ   rcp (J¥(„Œ(Ú+sP *0 |… (+ ,7(… (‹ (… (†     (Ú+sP * (+ 9È (} ( (} (~  (} (€ {I(Ü+,4(–{Io (Í oŒŒsû£(¤(¥+'{I(ž oŒŒsû£(¤(¥rßp(Û+rcp(Û+    (Ú+sP *{I(ž oŒŒsû£(¤(¥     oŒŒ rcp (J¥(„Œ (Ú+sP *0ÓŠ  (÷ (è (÷ (é (ê s_3 (Q (Q>{µ{I {w {w{i# {|(¿= sc3,O,G(º+,6(  (ô      (Ý+8o-?,; (¹+,* (ô     (Þ++,--(¸+, sP + rWps\ z(R  (S   oT (U (Ô+ (Ö+   oV       (»Š(õŠ (.Œ(è+( *0­‹-!(u{Isû£ (¤(+&+,(²++ (²+ sY3(Ê+ s[3(Ê+-+(  s]3(Ê+{´(Àˆ(/  (O  {´(Àˆ  (O   (/   þþ,({I(moGsû£ (¤(¥+ þþ,({I(moGsû£ (¤(¥+(µ+,9       (ß+*{I(n{Isû£ (¤(Ë+*0XŽoŒŒoT (U (Õ+ (Ö+ (×+ (W (Ó+9¥(X (Y (Z (X ([ (è (X (\  (X (]  (X ([ (é (ê  (X (^  (X ([ (í  (X ([ (î (X ([ (ï (X ([ (ë (X ([ (ì (X ([ (ù  sg3 (Q (Q>{µ {I {w {w{i# {|(¿= ,+,+9¨ {I (½+(Ä+(„ {Isû£(¤(¥,^     (ô      8Õýÿÿ  („+* (¶+ (·+ (¿+ (Ñ+(> (²ˆ9±(¶ (? oT 32si3(Ì+ oŒQ ( (±++m{IoT (…{Isû£(¤(¥ oŒQ (Ž (  sk3(Í+(“+(±++ rWps\ z9v(ô :¶,+,U          8Eüÿÿ           8ñûÿÿ  ( ! (¼+-* {I(¥!oGsû£(¤(+&+      ,(ãŠ!!oG(xŒ+(»Š(õŠ!!oG(.Œsm3(è+*-+.  ( !(¤!oGsû£(¤(¥*     ,(㊠oŒŒ(xŒ+(»Š(õŠ oŒŒ(.Œso3(è+*0C (ô (ŠŒE9+Çù-`’ oŒŒ8Nt²% {úJ {ûJ8.t¨%{ÈJ(éŠ3»{ÈJtW%{½I8ût®%{çJu7%,‰{çJt7%{—I8Ét¯%{ìJu7%9Tÿÿÿ{ìJt7%{—I8”t¢%  {©JuK%9ÿÿÿ {©JtK%{ªI+bt£%  {°JuK%9íþÿÿ {°JtK%{ªI+0t¡%  {¥JuQ%9»þÿÿ {¥JtQ%{°I  rûp( +(¢ þ,#rûp(sû£ (¤ (+&+ r p( +(¢ þ,#r p(sû£ (¤ (+&+rûpr poŒŒ     (ç+(߈(Ž ( (±+(Ž ( ( (±+oV ( *0˜(éŠ3tW%{½I+oŒŒ ,(²sû£ (¤(+&+ rp( +(¢ þ, rp(sû£ (¤(+&+ r#p( +(¢ þ, r#p(sû£ (¤(+&+     (ç+oŒŒ(ZŠ(Û(` (a (6Œ rp(NŒ(Ž ( ( (±+  {I(ZŠ(Û(` (a (6Œ,(²++r#p(Ž ( ( (±+oV ( *0„‘u7%,t7%{—I+ ,(µsû£ (¤(+&+,(xsû£ (¤(+&+     s…3(ƒ+ (åŠ(6Œ  r-p( +(¢ þ, r-p(sû£ (¤(+&+ r p( +(¢ þ, r p(sû£ (¤(+&+r-pr p     (ç+oŒŒ(J¥(߈(Ž ( (±+ (Ž ( ( (±+oV ( *0V’u7%,t7%{—I+ ,(°sû£ (¤(+&+,(wsû£ (¤(+&+ r=p( +(¢ þ, r=p(sû£ (¤(+&+ r p( +(¢ þ, r p(sû£ (¤(+&+r=pr poŒŒ     (ç+(߈(Ž ( (±+oŒŒ (J¥(߈(Ž ( ( (±+oV ( *0*˜    (Ï+ 9Å(b (c (b (d (b (e (f (b (g (b (e (h (b (i (b (j (b (e (k (b (l  (b (m          (à+*(ŠŒE9Â@}Ecë(×+      (W (Î+  9á9Ú (0 (5 oŒŒoT   (U (Ô+ (Ö+      sn (tŒ(ç+oV      (»Š(õŠoŒŒ(.Œse3     8"ýÿÿ(×+ (W (Ó+9,(X (\ (X (] (X (^ -"(uoŒŒsû£(¤(+&+oŒŒoT   (U (Ô+(·+þ     sn (tŒ(ç+oV        !      (á+( *(ŠŒE9Î r‰ û. ú 8*t±%""{ñJ,ì"{ðJ#"{ôJ"{óJ "{òJ,(Ø++,+     (è+( *,(ŠŒ6þþ+,1(ŠŒ,3+$(´oŽŒsû£(¤(¥+     sq3(æ+:Ü(ŠŒ1@˜tÉ%$${GK ${HK!#(pŠE !(ߊ+(áŠ+!(ߊ%     %(‰ oŒŒ( !(xŒ(è+( *     #ss3(è+( *     (â+*t²%&&{öJ &{øJ%&{úJ&{ûJ!&{ùJ&{õJ&{÷J:’ rSp( +(¢ þ,#rSp(sû£(¤(+&+rSp(Ž (±+      %! su3(è+( *''(ô  ,+,(ysû£(¤(+&+     (ç+      (ç+( %!(LŒoV ( *t­%(({ÞJ9s({ßJ(o 9hüÿÿ({ßJ))(p {/L( ‹@Hüÿÿ)(o (o :7üÿÿ)(p {9L%)(p {7L )(p {5L ({àJ%(éŠ3%tW%{½I+oŒŒ,(±sû£(¤(+&+oŒŒ!!     (ç+!(ZŠ(Û(` (a %!(6Œ  rp( +(¢ þ,#rp(sû£(¤(+&+rp (Ž ( ( (±+oV ( *({áJ({ÝJ({àJ ({ßJ)9Ë(×/+ +sw3)(Î+**(q ,&*,,(r {ƒ( ‹3,(r {„,W*(q ,0*--(r {Œ!(¶!sû£(¤(+&+J(¶sû£(¤(+&+,,(r {…,+™,(q (q :ˆÿÿÿ:ÿÿÿ+)s{3(Ê+     )s}3(è+( *tÈ%..{AK9e.{CK(EEJ/.{CK .{@K%.{DK .{BK.{EK(oGsû£(¤(Ë+*.{CKt(&//{ÛK(E@•/{ÝK,-.{CK.{@K.{DK.{BK.{EK % +‹.{@K%.{DK .{CK .{BK.{EK/{ÜK     %(ã+*.{CK.{@K.{DK.{BK.{EK % 8üþÿÿ.{CKt-&00{ëK{I( 9…0{ëK{I11( ( -9.{@K.{DK.{CK.{BK.{EK1(  %8,ÿÿÿ.{CK.{@K.{DK.{BK.{EK % 8Sþÿÿ.{CK.{@K.{DK.{BK.{EK % 8#þÿÿ.{@K%.{DK .{CK .{BK.{EK%(éŠ3%tW%{½I+oŒŒ,(²sû£(¤(+&+oŒŒ! r#p( +(¢ þ,#r#p(sû£(¤(+&+s3(Ê+, (²++      %! s3(è+( *t¨%22{ËJ,8öÿÿ2{ÈJ%2{ÌJ2{ÉJ 2{ÊJ3%(éŠ3%tW%{½I+!,(Ë!sû£(¤(+&+     sƒ33(ƒ+4%4(8ŒoV ( *t®%55{çJ65{æJ5{âJ 5{äJ35{èJ75{åJ!5{ãJ8     63(ä+*tÇ%99{>K 9{?K9{=K(r (²+,g r]p( +(¢ þ,#r]p(sû£(¤(+&+r]p(Ž ( (±+oV ( *,(³sû£(¤(+&+ rqp( +(¢ þ,/rqp(sû£(¤(¥oV ( *rqp(Ž ( (±+oV ( *tÆ%::{;K :{>{«J >{©J<>{¯J>{®J>{ªJ>{­J >{¬J{µ{w{w{i#{|(¿={¯  {B8 {E8{¯{d9(i+ rp( + r·p( +(¢ þþ s#3{³  s%3{¼{w{s#(¸T(Ï=((+(Ï+ s'3s)3 ¥;(Ð+(Ñ+(Ò+s+3s-3 ¥;(Ð+(Ñ+(Ò+s/3s13s33 s93(›*{µoŒŒ{w(¾=(i ss sW3st    !"#   (ô þþ(i ss s‘3st s“3(è+$r p( +(¢ -$+.r p$oŒŒ(J¥$(߈(Ž ( (±+% ,5(J¥(}–rÃpo ''sY‰(NŒ%(Œ+%&rÏp( +(¢ -&+rÏp&(Ž ( (±+((J¥sY‰***{I(¿Ž(J (K ( ((4Œ)(n)(‰+++(ý ,+(þ -{¯-{¯-(r_sY (ú (k (l (x_,sL *r( ]{¯(r_((+*0Ù œ(ŠŒE9ÍC׎ go ÿLmôB – g *t£% {´J {³J {¶J {µJ{°J{±J{¿I{²J(‡+(P  (Q  (O    ($+  (ù   (ø  (,(Õ (Ö (× (Ø (ì+(ý (þ (ÌF@{tB{2*(ÌF@`(îo@Stã{`<(îo@8{`<tß{b<(³ 9{b<(³ (³ :ÿ{c<(Ê 9î{c<(Ê (Ê :Ô{L<oÓ 3+{¯{B8{E8{¯{¢9(i+9(Ë {L<{3*{c* (´ ! ( ]"" !(­]#{¯{¯(ê_{¯ (r_ (,`${¯ !#$(õ_sL (u * ( ]""(-+%%(ò  %(ó " {¯(r_(­]# # (&+sL (u *t¢%&&{«J &{©J&{¯J &{®J&{ªJ'&{­J(&{¬J'( (.+(ì+(u *t¡%)){§J ){¦J){¥J*){¨J {¯{¢8(‰+(ý  (þ   (ì+++(ý +(þ   ( ]"{¯" (…* (ê+"(*+sL (u *t¯%,,{êJ ,{éJ,{ìJ-,{íJ.,{ëJ (ì+(ý  (þ  {¯{¥8 (‰+++(þ  +(ý  ( ]"{¯" (…* (ê+( ]//(++sL (u *t˜%{†J (c sû£0(¤0(Ó+*tÅ%{9K  (%+sL (u *tÉ%11{HK 1{GK (d sû£0(¤0(Ó+*t±%22{ñJ9Ÿúÿÿ2{ðJ32{ôJ 2{óJ 2{òJ(ë+44,q455(v (ý  5(v (þ   (ì+(ý (þ   (ê+oŒŒ ()+sL (u *(Ž+(ý  (þ   (ì+++(ý +(þ    (ªq3 (ÔosL (u *t²%66{öJ 6{øJ76{úJ 6{ûJ"6{õJ6{÷J86{ùJ{¯{¢8(‰+(ý  (þ   (ì+++(ý +(þ  8- (rŒ+8(ô (((ì+99(ý 9(þ (ZŠ:7::"  (£]sL (u *t­%;;{ÞJ9…;{ßJ(o 9søÿÿ;{ßJ<<(p {/L( ‹@Søÿÿ<(o (o :Bøÿÿ;{áJ <(p {7L <(p {5L ;{àJ<(p {.L=<(p {9L7;{ÝJ(¾B (¾B (,(Õ (Ö  (× (Ø  («* (‰+(ý (þ  (ì+++(ý +(þ   ( ]""  (-+%%(ò  %(ó   (­]   ('+sL (u *;{áJ ;{ÝJ;{àJ ;{ßJ<s•3s—3< (,(þ  (ý    sL (u *tÈ%{FK (e sû£0(¤0(Ó+*t¨%>>{ËJ,8[öÿÿ>{ÈJ7>{ÉJ >{ÊJ?(‡+(P  (O  (Q   s™3 ?(Ô+@@(a @(b A{¯ (r_ ( ]  (›FA(+%%(ò  %(ó  7    (¼]sL (u *t®%{ãJ (f sû£0(¤0(Ó+*tÇ%BB{>K B{?K B{=K(r (‡+(P  (Q  (O  -(g sû£0(¤0(¥+{w{i#{· ( D (7C   (Ê] sL (u *tÆ%CC{;K C{‚ÿÿÿ{‘J 8Qÿÿÿ0ѱ(ñ+ {| (a>EЉÇÕ»i&¡ 6 ‘ݺ (qsû£ (¤(x+* (¾B (a>@ž t^{%#{##{Oo   ELL{¯ (o`  {t;(ò*  (    (8R  (5>(÷*+((Õ+(¤ (¥ s| +  (÷*(} (~   oµ {¯s3sŸ3 (z+(I 9;(J (z0@&(J tP {O(õ+9(I {O{P{N(^ (I þ,(«*+oT   (ù*1Q(+(i (k -+4( (€ (÷{Isû£ (¤(¥+ (‘+(\ (]   o¸ (ñ/þ(ï+*(I ,](J (z03K(J tO !!{L!{K"!{M#(I $(sû£ (¤(x+*3 (a>þ+,/ (€+{¯{¥8(«*s¡3s +(-s£3s + s§3s %%(‚  %(ƒ & (ù*&o„ ''(ñ/{¯'(r_þ(ï+* 8“üÿÿ 8‹üÿÿtj(({6#(³ 9Uüÿÿ({6#  (´ ({5#)(I 9)(J (z0@(J tO !(I (I 9Ì(I (J (z0@(J tQ *!{K"(I $*{R!{M#*{Q+!{L,(¬0(¼0#"(u+--(Ç .-(Æ ).(¤ (¥ (O> {µ#{w {w{i#{|(¿={µ{½#(¥{w.+(¸T(þ=//(w /(x /(y /(z $8Púÿÿ!{K"!{M!{L#(I $(¬0(¼0"(u+--(Ç .).(¤ (¥ (O> {µ{w {w{i#{|(¿=(isû£ (¤(x+*!{K!{M!{L(I $#"8^ÿÿÿ(isû£ (¤(x+*tf00{0#10{/#)s©31(›+2(u.3(I ,$(J (z0E™/(k )(÷c23(¼q(Ž þ(û+*(J tP (I {P{N{O(k )(÷c23(¼q(Ž ( þ(û+*(J tO !(I (I 9Hÿÿÿ(I (J (z0@-ÿÿÿ(J tP !{K"(I $!{L!{M#{P,{N{O(¬0(¼0"(h+44(ï  4(î {µ#{w{w{i#{|(¿= (… (k ,)(÷c23(¼q(Ž ( $þ(û+*tg{2#11(¢ -(jsû£ (¤(Œ++155(£ o‰Q(w.3(I ,$(J (z0Eõ1o† 3\{³7{w{i#878s«31(Ö+66¥79r×p9(p+(` (lsû£ (¤(x+*(ksû£ (¤(x+*(J tP (I {P{O{µ{w{w{i#{|(À=(l 3(‡ þ(›+*(J tO !(I (I 9ìþÿÿ(I (J (z0@Ñþÿÿ(J tP !{K"(I $!{M{P#{O!{L,(¬0(¼0"(u+--(Æ -(Ç .{µ#{w.{w{i#{|(À=.s­31(×+.(l #$3(‡ þ(›+*(msû£ (¤(x+*to{>#{I(–:{I)(–)o ró p(ñ ;:,1{´oc“))sY‰(k‰(w‰(ˆ (‰ 8Ð;,z{´oc“))sY‰(k‰(w‰{´oc“))sY‰(k‰(w‰{´oc“))sY‰(k‰(w‰(ˆ (‰ (‰ (‰ +R{´oc“))sY‰(k‰(w‰{´oc“))sY‰(k‰(w‰(ˆ (‰ (‰ <{´oc“))sY‰(k‰(w‰=s¯3<(Ø+>(Ïi(çi=(Ži( (2i?s±3>(/+ ?(is³3 (Ù+(Ú+@@(Š A@(‹  (sBB(Å*) )B ( sÏ (†lC{w{i#{·( DC(8CC(Ìp(¤  (æo'(z A'(±]DD(ñ/{¯D(r_þ(ï+*ti{4#(I ,$(J (z0Ec(nsû£ (¤(x+*(J tP (I {P{N{Oþ( ,*(J tO !(I (I 9~ÿÿÿ(I (J (z0@cÿÿÿ(J tP !{K"(I $!{M{P#{N{O!{L,(¬0(¼0"(u+--(Ç .-(Æ .(M> {µ{w {w{i#{|(¿=#.$þ( ,*t\{!#E(I ,$(J (z0E­bE(j+FF(< 'F(Œ F( ::, '(ñ/+ '(+GGGoù/þ(ï+*(J tR H(I H{TH{S(I þþ,(hsû£ (¤(+&+{¯{¥8(«*EoÆmII{U;{Z;{¯( ^,{¯(’^+1Eoãm-${w{i#Es- (¤(+&+..(ˆ+JJ(ý J(þ '{¯( ^,E'(ã]+ E'(â]DD(ñ/{¯D(r_þ(ï+*(J tO !!{K"(I !{M!{L#"sµ3KE(¼qKsŽ ( (j+FF(< 'F(Œ F( ::, '(ñ/+ '(+GGGoù/þ(ï+*teLL{.#ML{-#)M(K þ,rÝps¤ (¤(+&+M(ô+NNopR, (÷++ (‰(Œ(Ž ( s OO(‘ PO(’ O(“ O(” NonR-)(osû£ (¤(+&+(I 9(J (z0@(J tR H(I $H{TH{SNopR,+(Ž Q$(I þþ,(hsû£ (¤(+&+{¯{¥8(«*M(¹*22(• þ,)(ssû£ (¤(+&+P(k )(÷c2)s·3(v.(¼qQ(Ž ( (“+$þ(û+*M(º*2)s¹3(v.32(• þ,)(psû£ (¤(+&+P(k )(÷c23(¼qþ(û+*tc{+#R{¯{³R(ŸURoüQ-#RoùQ(!sû£ (¤(+&+{¯R( URoRSR{³oR(I 9…(J (z03s(J tR HH{TH{S(I {¯{¥8(«*(ˆ+JJ(ý J(þ 'R'(+sL *RoþQTT:˜RoûQ::,(á²+(ß²USUS{Z(= (B°s¹³V(#µV(Ûµ(Y (Z RoúQ,(§µ(Y (Z +(Y (+RoøQ(k (¤ (¥ (Ë]+ TWW( XX(À*(Ðo''(+þ(ï+*ta{)#YY{@0(U:Y{@0on{Ø:-6Y{@0onZZ{ß:{I(!sû£ (¤(+&+{¯Y{@0(&U(Ë+&Y{@0[Y{@0Y{?0(ñ](I 9ë(J (z0@Ö(J tR H(I H{TH{S(I þþ,(hsû£ (¤(+&+{w{i#Y(‹*{¯{¥8(«*Y{@0Y{?0(ñ]..(ˆ+JJ(ý J(þ 'Y{@0Y{?0'(Ó]sL *Y{@0ono®k\\-[Y{?0(Ò]+\]](œ (Ðo''(+þ(ï+*td{,#^^þ(ú+*tk__{8#`_{7#)(†+`oN aa,*abb(d c)c(~sû£ (¤(x+*)(}sû£ (¤(x+*0 D²(I 92 (J (z0EJ (Ž s *(J tP  (I {N {O (Ž ( s *(J tO (I (I 9¢(I (J (z0@ƒ(J tP  {K(I {L{N {O{P (¬0(¼0(h+  (ï   (… (Ž (  (î s * 8ùþÿÿ 8òþÿÿ 8ëþÿÿ0­µ(k (l {| (¦H,(ºT+(¸T {¯ (O]($nþ,%{w{i# {¯(Y^(J:+{µ{½ {w(þ=(y (x (w (z (¥  (ñ+ (a>E}%.Ü^^(usû£ (¤ (x+*tf  {0#  {/# (÷+(‘ (’ (“ (– (” s»3 (›+(u. rïûp(ñ ,+ r)p(ñ ,(óc+(õc(¼qþ(û+*te{.#{-#(K þ,rÝps¤ (¤ (+&+(ô+opR,  (÷++!(‰(Œ(Ž (  s (‘ (’ (“ (– (” onR, (rsû£ (¤ (+&+(I 9E(J (z0@/(J tR (I {T{SopR,+(Ž (I þþ,(hsû£ (¤ (+&+{¯{¥8(«*(¹*(• þ, (ssû£ (¤ (+&+s½3(v.{¯{¯(r_(^,(óc+(õc(¼q(Ž ( (“+(M þ(û+*(º*(• þ, (psû£ (¤ (+&+ (õcs¿3(v.(¼qþ(û+*ta  {)#!{¯!(ˆ*!o6R"{¯"(^#{w{i#{·( D"(7C#,+" (Ê]$!{@0!{?0(ñ]% (I 9Õ (J (z0@¿(J tR (I {T{S(I þþ,(hsû£ (¤ (+&+{w{i#!(‹*{¯{¥8(«*%(ˆ+&&(ý &(þ '{¯$!'(+sL *{¯$!{@0!{?0 (_' '(+% þ(ï+*tc(({+#){¯{³)(‰*){³oR" (I 9Ž (J (z03{(J tR {T{S(I {¯{¥8(«*"(ˆ+&&(ý &(þ ${¯)$(+sL *{¯{³ )( +$ $(+" þ(ï+*td* sY (Z *{,# þ(ú+*(tsû£ (¤ (x+*0<O,+ r?p(` (ø (` (ù sÃ3(„**(k þo¸ *0 _¶oòR {| oóR -#,+;(wsû£ (¤ (+&+,Ý(vsû£ (¤ (+&{³oùR{¼(„P{È1{É1sÁ3(Û+(Ü+{¯{³{|(Ý+{¼(‡P {³o«Q  {D=þ-oòR(KP (¤ (¥+{¯ («_  sÅ3(ù+  (ñ/ þ(ï+*0ïºsÇ3(Þ+ (I þ,+(¾B      (, (— (˜ (™ (˜ (š (˜ (› (œ þþ,<(ß+{ {I(x{Isû£ (¤ (¥+ (ñ/{¯(r_þ(ï+*0[»(»ˆ ,(i (j +á(ŠŒE9/(¾B*tÂ% {-K,ë{.K {¯(ü+(C]*t¦%{ÁJ (¾B(ü+(n*0B¼(ž (Ÿ (  -þ+, u£- u¡-+þ***sé3*0(¾{³oªQ së3sí3(à+þ(á+*0&¿(ÿ+ sï3(â+s¡ *0EÁ (ÅB , (¢ + (ã+ {¼sý3   (ä+*0% sÿ3þ(å+*0 !{·(ÇBþ(1C*0 Å(¢ ,. (¢ (¢ -(£ (,8‚(¶* (@  (A {¯(^,(¤ +{¯(û]oµ (þ+(+,+ (¤ (¥ (ú (û s¡ (£ (¤ s4(æ+s 4(ç+s 4(è+s 4  s4(é+(¥ s¦ *0 Æ{¯(^,{¯ (O]($nþ+, {¯{³{¼(¯H*{¯(ž^,{¯{¯( ^(^+,{¯ (O]($nþ+,W{¯( ^ {¯{³{¼(¯H {¯s {¯(j_(èo(þ_*,*{¯(,`*0 e{¯( ^,{¯(“^+,0(Àp{¯(”^(¤ (¥ (k (l (æo*(,*0„Ê(úPEvcšDî(#µ{¯{@8 {¡^rWp{¡^(`°(Ûµ(§µ(Y (Z (Z (¤ (k (¤ (¥ (Ë]s§ *(ön(Ðos§ *t› {ò/ (À*(Ðos§ *(ß²{¯{@8{“^rcp(<°(= (B° {¯{@8{˜^(= (> (]°o¬³(¾q(¤ (¤ {¯{¤8(¤ (¥ (Ðp(¤ (ön(Ðo(k (l (æos§ *(ß²{¯{@8{“^rÁp(<°(= (B° {¯{@8{˜^(= (> (]°o¬³(¾q(¤ (¤ {¯{¤8(¤ (¥ (Ðp(¤ (ön(Ðo(k (l (æos§ *tœ{ó/{ô/rp(©](ò  (,  (ð   (ñ     s94 sÁm(å]s§ *0 ûþ{w{i# sÉ3 {¯ sË3(u+ sÍ3 (ê+(¢ ,g(¢ (¢ -U(£  -o•Qoõ þ+,2(£ (Ž (¾BsÏ3(ë+(ì+s¨ +@ -sÕ3(++,(ysû£(¤(í++ s¨ (©  (ª  («   s×3 (î+  (• - +  sÙ3 (ê+ (A - s¬ 8XsÛ3 (ï+(ð+(­ (®  ,4¥S(ñ+(¯ (° ¥U(ò+(± (² s³ + s³ (­ (® sÝ3(¢ 9»(¢ (¢ :¦(£ sß3(ó+,I{³oªQo´ 3oµ o¶ þ+,oµ o· (ý+++,B(£ sá3 (ô+sã3(õ+s¸ (¹  s¬ 8 (¢ 9Ï(¢ (¢ :º(£ så3(ó+, oº þ+,o» oT þ+,E{³oªQo´ 3oµ o¶ þ+,oµ (ö+++,3(£ (¾B (no» o¼ ( s¬ +2(÷+sç3(ø+s¸ (¹  s¬ (½ (¾ (¿  ,þ+,(êsû£(¤(+&+{¯ (ôn {¥8(Ðo,I!!(À (Á !(À ( sñ3(ù+só3(ú+sà 8(¢ ,m(¢ (¢ -[(£ (,""(£ #"(¤ $sõ3$(û+%%s÷3%(ü+#sà 8§(¶*&&(@ #&(A '{¯'(^,(¤ +{¯'(û]((oµ (þ+(+,(+ '(¤ (¥ )sù3)(ý+(Ä (Å %%sû3%(ü+#sà   (Æ % (Ç # (È *%¥],,oÉ -/-oï ,/-oÊ oË Ö/+ã/.Þ-u 00, 0oâ &Ü&Ü.+*¥`11oÌ 232oï ,32oÍ oÎ Ö3+ã3/Þ2u 00, 0oâ &Ü&Ü/. %* ¥b(,4 #+.4(,55uc,  oy.+5(þ+4sÏ (Ð 6(Ñ 4,U!!(À (Á !(À ( s4(ÿ+99( ,::(Ò :(Ó s¦ +(,88(Ô %8(Õ ;8(Ö #8(× 8(Ø %>(Ù <#>(Ú sÛ 77(Ü %7(Ý ;7(Þ #7(ß *7(à (‹? ?(n o‹, {²þ+,!{w{i# >(  (¸*;+*-+i*33(- (. -3(- (0 11{O(l+@{¯-(ô]AA(¦ B 1{¯oŒŒ@(r`B(«*=(,CC(2 DC(3 ;;, +,(Š sû£(¤(¥+;, +,(‹ sû£(¤(¥+;,$+,(Œ sû£(¤(¥+;,(¨ þþ+,( sû£(¤(¥+ (#)> D(,/=s4 *0@(›] (îo3 tÞ{I<*(Ž( ]sû£ (¤(¥(ôn*0U{¯ {¯{9 s{4(N+ -s5 *(‰+ (þ (,(e s5 *0 ›{áL {ãL {âL (]+ (i? (ª*(®0(¼0(i+,s}4 (ð+ ++s4 (ü+s4(ð+sƒ4 (ð+ (Ç.s6 *F{ˆ(,*0 G(×/(@: {ˆ(, (› (œ (â-(z (,*0¿ {I sY‰ (Ú (Û (û+ {| {µ{½(ö>{w (“?(¯?(ï=u‰,t‰{7 (8 *(Ïi(é (®0(¼0(û*(( (]‰(€‹(í (( (‚‹(s+(9 *0|"ofm o¤j(| {¯{à8 {>8 {¯oõ²(e {1^(„^9æ(÷ (ø (: 9Ì(÷ (ø (; (,´@¬(; t¯-(: (: 9™(: (; (,´3u(; t«- (: (: ,Y(:   (; (,´3A (; t«-  (: (: -%{IZ  {EZ  {EZ  s  * ÿs  *{IZ (÷ (ù  s‡4(# +, (g +s  *0‹#{¯ {¯{à8 s‰4ofm {g:{p:(¹+ ,V(„ {Ã;(… ,@(„ {Ã;(† (Š^, (… (… -(Õ s  *9Ä(„ {Ã;(… 9«(„ {Ã;  († (Š^  9ˆ (… (… 9w (…   († (Œ^  ,\ (… (… ,N (…   († (Œ^,3 (… (… -% (Õ (g  (g s  *,&(sû£(¤(¥ ÿs  * ÿs  *0Þ$,) (¶ {Ir~p(ñ ,(¶ *,( (¶ {IrŠp(ñ , (¶ *,% (¶ {Ir”p(ñ , (¶  *,+(¶ {Ir¬p(ñ ,(¶ *,,(¶ (‘{Isû£(¤(¥**0à%,% (¶ {Irqp(ñ , (¶ *,( (¶ {Ir¸p(ñ , (¶ *,( (¶ {Ir¾Ýp(ñ , (¶ *,+(¶ {IrÆp(ñ ,(¶ €*,((¶ {IrØp(ñ , (¶ @*( ,*0 ){&L {I {'L {(L {)L{*L($ +(< (I ,  €a@`+ s…4{IrDZp( (,(% +(& +  (Ç   (Æ  {| {¯  (U-(sû£(¤(¥+{¯ (k]{¯{¯{ 9(U,.(d {¾(+þ,(d (= *o©m, (,+ (,("  _ ,, (¶ {Iræp(ñ , (¶ + (!,_3M3+þ,(’sû£(¤(+&+(“sû£(¤(+&+{½{w{i#  (È=(š+(a> @¨tg{2#{1#s‹4(›+{µ{I(x. (k  (õc(¼q(Ž ( (¾B(M (,(˜ (›  (˜ (™ ! {¯!(r_(«*s4"  s4 (' +#!(îoE (™sû£(¤(( +8Š!té$${~<(Òp3Ç${~<t%%{ë<(³ -«%{ì<(³ -${<(³ -%{å<&${<'%{ê<(${€<)%{í<*&,(—'sû£(¤(+&+)oè (o³oþ .(˜'sû£(¤(+&+((®n")() +#(> '(¼n8‹!tã++{`<(îo@Æþÿÿ+{`<tß,,{L<-+{c<)s‘4.-(°n".)(* +() +#(> (¼n+(šsû£(¤(( +s? (= (@ *Js›4þ(+ +*^s4(#,þ(, +*0"*(A (B (¼]sC *0n+s±4 (+ (›F (\Š(›o(=G(— (˜  (+ (ñ.,{¯(;`+ sY *®,s³4sY þ(- +*sY *0&É (A (ªq(jŠ(Ôo(B sC *0 €/sŸ4(. + (D (E {t {w{i#s¡4(/ +(J:s£4(0 + sÃ4sÅ4sF þ(1 +*0ò0(îoE‡? røps\ ztå {k< {j< {i< (r(G 8zÿÿÿtà{Q<(®q3ª{S< {P< {O<(r(G 82ÿÿÿtÞ{I<(øn@^ÿÿÿþ(2 +*0 }1(), ( ( (  {¯(ôn{¥8(Ðo{¯{¥8sY o (ù (4 (*, sH *0Â4(œ0 (n o¥0, {>L+,(žsû£ (¤(¥+(¹. (n oÄ., {?L+,þ+,s³- (¤(¥+(». (n oÄ., {?L+,(Ÿsû£ (¤(+&**0 S5{| {{ {} () 9„ (I  () {w{i#(¶*(@ (A (¼0(Ž+(9+({+ (´/8Yÿÿÿ,V  (( {:L  (( {;L (Ïi(é (¬0(¼0 (s+   (Ç («*+,M(‹ {AL("(n o*, (‹ {¯{¥8(«***¶sÇ4(9^(2^(K^{m=(ˆ+(3 +or *0%6(a {¯ {³ sÉ4(4 +*0‚9{¼   (¤H (J (K (¢ -(( {Isû£(¤(¥(‰ +J(/,o† 3+6(¢ -((¡{Isû£(¤(¥(‰ +(‰ (¢ 9ž (£ {³(TP{¯{³(ó*  (   (   (‘   (’   , +{¯sË4sÍ4 (+ (‚+(«*+-sÏ4 (5 ++(L (M (¤ (¥ sN *0o: {AL (&E1M<- (¤ sN * (L (M (¤ (¥ sN *   (0,* {¼   (6 + sÑ4 (7 +(K -7{¯ (c`-((¤{Isû£(¤(¥(O +9(K ,*(K (K -(L (O (P +(O  s×4(8 +-sÙ4(9 ++ (L (M (¤ (¥ sN * 8 ÿÿÿ0u={|  - sQ +* (L (M (L (R  (S sQ  {?L,    (1,*(¤ sN *0Ñ>(^9Ä{AL ( (n o*,(«sû£ (¤(+&*{AL ( (n o*,(¬sû£ (¤(+&*{?L,(­sû£ (¤(+&*(Ú.  (n oé.,+{>L-(®sû£ (¤(+&***0?ofmo³j,6{ÜL(× ,%{ÜL (T (U -(× (× þ++,(°sû£ (¤(¥+o®m- (±{Isû£ (¤(¥+ (Û* {¯{³ (%P-+:(•  ,(} oÚl(Ô +(×* (¾B  (n(«* sV *0$B (: + 9ð  9æ (Û {o (Û {p(‹ (Û {s(Û {q(Û {r{¯{I(°+ {I(3, ofm  {g:{t:(ºkþþ,!{AL (   (n o*+,#(¯{Isû£ (¤ (+&+(Ú.(n oé. (ãi  (+(Ü (W (Ý (i?(ª*  (; +{AL(&3  (4,+sV (X (Y (Ú.(n oé.{¯  (¤ (Ç*(Õ   sZ s[ * (z  sZ s[ *0¾D (: + {ò {ñ 9 9u (Û {o (Û {p(‹  (Û {s (Û {q (Û {r {¯(< +þþ, {?L+,#(ò {Isû£ (¤ (¥+ (¶ˆ(ÿ* (Ú.(n oé. (ãi (+(Ü (\ (] (W (Ý (i?(ª* (; +o®m, +(¾B(n(«* {I(3,  (= +(^ (_ (Ç.{¯{³(%P-+:(•  ,!!(} ""oÚl(Ô + (×*{¯   (Ç*# - +) $$(¶ % {I&%{I'&'sY‰#(Õ  s` sa *(²sû£ (¤ (> +*0æF(EERás7(³sû£ (¤(? +*t8&{ L           85ÿÿÿt)& {àK {áK (Ïi(é (¬0(¼0 (s+(Æ (Ç («*          8’þÿÿt*&{åK{ãK {äK (õsû£ (¤(? +*t&&  {ØK(«‰@“þÿÿ {ÙKrŸpsY‰      (! (#     8Çýÿÿt(&  {ÛK(E@þÿÿ {ÞK  {ÜK        (@ +*t7&{L {L{L {L       (A +*0fG                  (7,*0Q{w {x {v {y {‚ {‰ {ˆ { {Œ {… {„ {Š {‡ {† {‹ {ƒ{}{,L{-L{+L{u{t(ï. ($,(¾B  (þ* ,(´sû£(¤(¥+(,(› (œ {ñ(i?(ª* (8,  (b ! (c " (d # (e $ (f % (g (h & (i ' (g (j ( (g (k ) (g (l * (m + (g (n ,þþ-'-#*(-,()(.,.()(ˆ+(oa/'sÛ4(Ã*0/0(è*1)o† þ2+/1%( i"2(/3#(,44(2 5 sÝ4(B +7så4#so 7(C +88(p (q 98(r :8(p (s ;:(D +<<(t =<(u >>¥Ÿ(E +=¥î(Œ+9;sv 66(w 96(x ;6(y ?6(z @'.(fi3 5(Õ*AAomCA{U;{X;DCDsY‰B    !B(µˆ*(Ã/E;(A&0%,$,GG(Û {r+(â-"(#1F;XHEFs>1II@({ A?(f s| 9Hso s} *0\Ssé4so (C + (p (r (D + (t  (u ¥Ÿ(E +¥î(Œ+s~ *0 ÅY {¦ {› {£ {  {¡{œ{™{¤{Ÿ {¦  {œ  {ñ(ˆ+ {µ  së4(º+ {µ  sí4  (º+(F +  {¥(,( (ž {U;{X; (‘]{U;{Z;(«*ÞGt{w{i#oÚl{U;{Z;{U;{X;s“,(¤(+Þ&9(• {,(O+,/(} {U;{Z;{U;{X;s +Z{¯( ^,{¯(’^+{¯(k]sï4(/+(n{U;{X;s (€ ( (‚ {w{i#{·(5C-2om(¢–(ö{U;{X;sû£(¤(¥++ {¦sB1   {¦  {›{U;{[;oƒ ! („ ""!(=,*Ö-G0}\sõ4(G + (³ þ,+ s÷4(H + sù4(I + (… († (‡ þ, sˆ * (J +8ƒÿÿÿ0.`{w{i# (B: só4(H +   (‰ (<,(† (…  sû4 (K +  (‡ þ,(Š s‹ +Usý4 (L +  (J: sÿ4 (M + s5  (N + ¥«(O +(ý*s‹   (Œ  ( sŽ ( ( (‘ {µs5(P +(ž*(Q +s’ *0Hb{¯{§(Å](/^( (‘+ (_ {© {› {¨{/{%{&{,{œ  {ð  {ñ {™ (ˆ+ {·  (GCs5 {U;{`;(3+  ,. (‹ {AL((n o*+  (R +(M+ om{¯(Y^{¤(F:(   (K:*0?c{© {™{œ {ñ(ˆ+{¯{›om(Y^þ(ˆ+*0 ìe{© {› {¢ { {ž{œ{™{¤{¨{% {, {1 {- om  (? oÚl ()  ( i  (õ.(å*{¯ (ë*(ì*(S +{¨{©sF1*0 \f,W (} {U;{X; {¯{U;{Z;(”^ {¯ (ön (Ðo(¿_(åŠ(¢o(“ **0og( ] , (}  (¦](_+ (Ò] , (ü_+(ý_(`(a`(ªq(lŠ(Ôo*0%hu‹ ,*tŠ  {k(B,*0 uj{¬ {› {  {¡ {Ÿ{«{,{«{0(A,  9Š   (”  ( ] {U;{Z;(_  (–  (G  (H  (I   s (Þo  (²](ù (ø (®]+oæl, oßlþ+, oçlþ+9è u‹ ,8Û tŠ {k( ] {U;{Z;(_  (–  (G  (H  (I o• o– {¯{U;{Z;(n]{¯(à {¯(Þn {š8(Ðo(B,  (²](ù (ø (®]+-+T( ] {U;{Z;(_  (–  (G  (H  (I  (´]{ª(¢osJ1*0l{® {,< {.< {-< {U;{`;9™{¯(c^-'(µ{U;{X;sû£(¤(¥+a(  (— (  (  {¯{³(¹ (˜ s;bsæK{U;{X;(!aoêK +(ß* sÁm{­(Ü*{¯{U;{X;{­  { (Æ]   (¢osB0*0jrs5(T + (:, (™ (š (q (› {µ(ž*s 5(U +(V +(Š (‰  (z     s 5 s’ (W +(œ  ( s5(X + s5s5s5 (Y +(z (Z + s5 ([ +{w{i# s5(\ +{¯(ž ,$(Ÿ {¦{¤(ê.+{w{i#(A+{µ(ž* s  *0ös{ÙL {ÓL{áL {ÓL{âL {ÑL {×L{ÛL{ÚL{ÖL{ØL(] +{t(M: (ï.  ($,  ,(¬0+(®0   (X+  (Ì  (Ë {w{i#  s5(^ +*0F*{B8-{I(«–oó þþ+,(½{Isû£ (¤þ(¥**Js¡ (_ +*0–t{¯(^-#($N(Ásû£ (¤(¥+ofm {g:{s: {¯ ofm (`,(Âsû£ (¤(¥+s¢ {‰:(£ (k*0 Õx(8Ex¨(OtZ& {]L (Ãsû£ (¤(` +*tY& {[L (Äsû£ (¤(` +*t[&{_L (×sû£ (¤(` +*tW&{UL{VL(Ê (G,*(i s¤ *04zs/5(a + (¥ (¦ ¥î(Œ+s¤ *0I|{| (ö>{w(Ä= u>,t> {§ (¨ *t? { (© *0s}ofmoj {d: (ª ,/ (ª  (« (Þ r«poÚ ,+ +(ð ofmo‡j,o¬ où þþ**0 }~(M,(b + s15s35(c +(d +s75(e +s;5(f +-s=5(e ++s?5(e +sA5(Ú+(£**09{„ {ˆ {‡ {ƒ (ò.sM5þ(g +*&s­ *0a€{„ {† {Š {ˆ {‡{ƒ{…(Ú0(À (ã0sY5 þ(h +*0hƒsW5(i +s]5(j + (û*(<8 ( ( s® Þ"t (¤ (¥( s® Þ*CD"09*où .%(â(T+{Isû£ (¤(+&+þo¯ *06„{~( oØk(k +,(Øs5{?5{@5{A5{B5{C5{D5sb s`m(äK-sÜ£z{¯(Á^(ü (!a{Â4{X5(¹ s a{¯{³sæKs`m  ofmonj oøK-sÜ£z Þt (¤ (¥ Þ &(r*š)0 -,(m,*(õb(T_(r*05“{¼ s6(g, Þt (¤(¥ Þ&*0 (n,*0c–{± oº (» ,4(¼ oK Þt(¤(¥Þ&+à Þþ¾oâ &Ü&* ,AP0 [—o2 þ {³{¼{}{¶{w{i#(×: Þt (¤(¥ Þ*@A0I˜ {ÎM  {ÍM  {ÌM  {ÑM  {ÐM s&6(x +*0 *™{ÖM {ÓM s:6(y +*V(L }ô}õ*º{ô{B8{ô{E8{õ{?8{Á;(i*V(L }ö}÷*º{ö{B8{ö{E8{÷{?8{Á;(i*V(Ÿ }ø}ù*(Ÿ *0 (  *0 (¡ *{ø*{ù*0VÍþ,M ¹y7žt^ (~,(¿+bcXXX ¹y7žt^ (}, , ( +bcXXX **6(n o,*0c*þ,Tu ,H(z +-*t^ (},t^ (},(ñ ,t^ (~,t^ (~,þ(À+***þþ*0^þ,Oþ,G(z +-*t^ (},t^ (},(ñ ,t^ (~,t^ (~,þ(Â+***þþ*0*u , þo‚,**r(Ÿ }ú}û}ü*(Ÿ *0 (  *0 (¡ *{ú*{û*{ü*’(Ÿ }ý}þ}ÿ}*(Ÿ *0 (  *0 (¡ *{ý*{þ*{ÿ*{*²(Ÿ }}}}}*(Ÿ *0 (  *0 (¡ *{*{*{*{*{*r(Ÿ }}}*(Ÿ *0 (  *0 (¡ *{*{*{*’(Ÿ } } } } *(Ÿ *0 (  *0 (¡ *{ *{ *{ *{ *:(Ÿ } *(Ÿ *0 (  *0 (¡ *{ *0-þ,$ ¹y7žtd (¯,(¿+bcXXX **6(n o°,*0D*þ,5u ,)({ +-*td (¯,td (¯,þ(À+**þþ*þþ,0þ,(({ +-*td (¯,td (¯,þ(Â+**þþ*0*u , þo³,**r(Ÿ }}}*(Ÿ *0 (  *0 (¡ *{*{*{*’(Ÿ }}}}*(Ÿ *0 (  *0 (¡ *{*{*{*{*’(Ÿ }}}}*(Ÿ *0 (  *0 (¡ *{*{*{*{*’(Ÿ }}}}*(Ÿ *0 (  *0 (¡ *{*{*{*{*’(Ÿ }}}} *(Ÿ *0 (  *0 (¡ *{*{*{*{ *r(Ÿ }!}"}#*(Ÿ *0 (  *0 (¡ *{!*{"*{#*V(Ÿ }$}%*(Ÿ *0 (  *0 (¡ *{$*{%*0Mþ,D ¹y7žtk (è,(¿+bcXXX ¹y7žtk (ç,od bcXXX **6(n oé,*0hšþ,Yu ,M(| +-*tk (ç, tk (ç, oe ,tk (è,tk (è,þ(À+***þþ*0^þ,Oþ,G(| +-*tk (ç,tk (ç,(e+,tk (è,tk (è,þ(Â+***þþ*0*u , þoì,**r(Ÿ }&}'}(*(Ÿ *0 (  *0 (¡ *{&*{'*{(*’(Ÿ })}*}+},*(Ÿ *0 (  *0 (¡ *{)*{**{+*{,*:(Ÿ }-*(Ÿ *0 (  *0 (¡ *{-*0-þ,$ ¹y7žtn (-(¿+bcXXX **6(n o-*0D*þ,5u ,)(} +-*tn (-tn (-þ(À+**þþ*þþ,0þ,((} +-*tn (-tn (-þ(Â+**þþ*0*u , þo-**:(Ÿ }.*(Ÿ *0 (  *0 (¡ *{.*²(Ÿ }/}0}1}2}3*(Ÿ *0 (  *0 (¡ *{/*{0*{1*{2*{3*r(Ÿ }4}5}6*(Ÿ *0 (  *0 (¡ *{4*{5*{6*r(Ÿ }7}8}9*(Ÿ *0 (  *0 (¡ *{7*{8*{9*r(Ÿ }:};}<*(Ÿ *0 (  *0 (¡ *{:*{;*{<*’(Ÿ }=}>}?}@*(Ÿ *0 (  *0 (¡ *{=*{>*{?*{@*’(Ÿ }A}B}C}D*(Ÿ *0 (  *0 (¡ *{A*{B*{C*{D*’(Ÿ }E}F}G}H*(Ÿ *0 (  *0 (¡ *{E*{F*{G*{H*r(Ÿ }I}J}K*(Ÿ *0 (  *0 (¡ *{I*{J*{K*r(Ÿ }L}M}N*(Ÿ *0 (  *0 (¡ *{L*{M*{N*:(Ÿ }O*(Ÿ *0 (  *0 (¡ *{O*0-þ,$ ¹y7žty (T-(¿+bcXXX **6(n oU-*0D*þ,5u ,)(~ +-*ty (T-ty (T-þ(À+**þþ*þþ,0þ,((~ +-*ty (T-ty (T-þ(Â+**þþ*0*u , þoX-**:(Ÿ }P*(Ÿ *0 (  *0 (¡ *{P*0-þ,$ ¹y7žtz (^-(¿+bcXXX **6(n o_-*0D*þ,5u ,)( +-*tz (^-tz (^-þ(À+**þþ*þþ,0þ,(( +-*tz (^-tz (^-þ(Â+**þþ*0*u , þob-**’(Ÿ }Q}R}S}T*(Ÿ *0 (  *0 (¡ *{Q*{R*{S*{T*V(Ÿ }U}V*(Ÿ *0 (  *0 (¡ *{U*{V*0Gþ,> ¹y7žt| (q-(¿+bcXXX ¹y7žt| (p-bcXXX **6(n or-*0^*þ,Ou ,C(€ +-*t| (p-t| (p-3t| (q-t| (q-þ(À+***þþ*0Yþ,Jþ,B(€ +-*t| (p-t| (p-3t| (q-t| (q-þ(Â+***þþ*0*u , þou-**:(Ÿ }W*(Ÿ *0 (  *0 (¡ *{W*0-þ,$ ¹y7žt} ({-(¿+bcXXX **6(n o|-*0D*þ,5u ,)( +-*t} ({-t} ({-þ(À+**þþ*þþ,0þ,(( +-*t} ({-t} ({-þ(Â+**þþ*0*u , þo-**:(Ÿ }X*(Ÿ *0 (  *0 (¡ *{X*0-þ,$ ¹y7žt~ (…-(¿+bcXXX **6(n o†-*0D*þ,5u ,)(‚ +-*t~ (…-t~ (…-þ(À+**þþ*þþ,0þ,((‚ +-*t~ (…-t~ (…-þ(Â+**þþ*0*u , þo‰-**:(Ÿ }Y*(Ÿ *0 (  *0 (¡ *{Y*0-þ,$ ¹y7žt (-(¿+bcXXX **6(n o-*0D*þ,5u ,)(ƒ +-*t (-t (-þ(À+**þþ*þþ,0þ,((ƒ +-*t (-t (-þ(Â+**þþ*0*u , þo“-**:(Ÿ }Z*(Ÿ *0 (  *0 (¡ *{Z*0-þ,$ ¹y7žt€ (™-(¿+bcXXX **6(n oš-*0D*þ,5u ,)(„ +-*t€ (™-t€ (™-þ(À+**þþ*þþ,0þ,((„ +-*t€ (™-t€ (™-þ(Â+**þþ*0*u , þo-**:(Ÿ }[*(Ÿ *0 (  *0 (¡ *{[*0-þ,$ ¹y7žt (£-(¿+bcXXX **6(n o¤-*0D*þ,5u ,)(… +-*t (£-t (£-þ(À+**þþ*þþ,0þ,((… +-*t (£-t (£-þ(Â+**þþ*0*u , þo§-**:(Ÿ }\*(Ÿ *0 (  *0 (¡ *{\*0-þ,$ ¹y7žt‚ (­-(¿+bcXXX **6(n o®-*0D*þ,5u ,)(† +-*t‚ (­-t‚ (­-þ(À+**þþ*þþ,0þ,((† +-*t‚ (­-t‚ (­-þ(Â+**þþ*0*u , þo±-**:(Ÿ }]*(Ÿ *0 (  *0 (¡ *{]*0-þ,$ ¹y7žtƒ (·-(¿+bcXXX **6(n o¸-*0D*þ,5u ,)(‡ +-*tƒ (·-tƒ (·-þ(À+**þþ*þþ,0þ,((‡ +-*tƒ (·-tƒ (·-þ(Â+**þþ*0*u , þo»-**:(Ÿ }^*(Ÿ *0 (  *0 (¡ *{^*0-þ,$ ¹y7žt„ (Á-(¿+bcXXX **6(n oÂ-*0D*þ,5u ,)(ˆ +-*t„ (Á-t„ (Á-þ(À+**þþ*þþ,0þ,((ˆ +-*t„ (Á-t„ (Á-þ(Â+**þþ*0*u , þoÅ-**Ò(Ÿ }_}`}a}b}c}d*(Ÿ *0 (  *0 (¡ *{_*{`*{a*{b*{c*{d*V(Ÿ }e}f*(Ÿ *0 (  *0 (¡ *{e*{f*0VÍþ,M ¹y7žt† (Ö-(¿+bcXXX ¹y7žt† (Õ- , ( +bcXXX **6(n o×-*0c*þ,Tu ,H(‰ +-*t† (Õ-t† (Õ-(ñ ,t† (Ö-t† (Ö-þ(À+***þþ*0^þ,Oþ,G(‰ +-*t† (Õ-t† (Õ-(ñ ,t† (Ö-t† (Ö-þ(Â+***þþ*0*u , þoÚ-**:(V }g*0,b{g{g{'9 {?8(¤ (nþ(ƒ]*.sé-€h*( *"sæ-**uŠ þ*~h**u‹ þ*0› u‹ ,+*Zr.8ps½ (Š +o¾ *V(ß-}k}l*{k*{l*(ß-*:( }m*2{m{k*2{m{l*:( }n*{o*{p*{q*{r*’( }o}p}q}r*ºo &}s}t(-^}u('^}v*0@J{so¿ {m=or ,"}t{k=}u{l=}v+*"{t*"{u*"{v*{w*{x*{y*{z*{{*{|*{}*{~*{*{€*0T( }w}x}y}z}{}|}}}~ } }€*6{w{i#*"{w*:(À }*ª{{ooH {p{q{rsò-*(- **:(Á }‚*f(9^{‚(2^þ(K^*( *B(9^þ(K^*:(à }ƒ*j{ƒ{U;{Z;þoÄ *(Å *j{g:{u:o¸ þ(–**:(Á }„*R{„(2^þ(–**(Æ *>sÁm(“=*(Æ *>sÁm(“=*:(Ç }…*R{…sÁm(“=*:(Ç }†*B{†þ(˜**:(È }‡*:{‡(•**(É *0O{U;{Z; s.*:(Ç }ˆ*B{ˆþ(™**:(È }‰*:{‰(•**(É *0O{U;{Z; s!.*:(Ç }Š*R{ŠsÁm(“=*:(Ç }‹*f(?{‹s`m( =*²(Ç }Œ}}Ž}}*0 ,(?{Œ{{Ž{{(Ÿ=*(Ê *&s`m*²(Ç }‘}’}“}”}•*0 -{‘{’{”{|{“{•þ(§=*²(Ç }–}—}˜}™}š*0 ,{–{—{˜{™{|{š(¥=*:(Ê }›*:{›( i*:(Ê }œ*:{œ( i*’(Ç }}ž}Ÿ} *0 '(?{{ž{Ÿ{ (Ÿ=*(Ê *&s`m*(Ê *&s`m*’(Ç }¡}¢}£}¤*0 '(?{¡{¢{£{¤(Ÿ=*V(Ç }¥}¦*R{¥{¦(¢=*²(Ç }§}¨}©}ª}«*0 @œ{ª{| {«s`m {§{¨{©( ( (¥=*:(È }¬*:{¬(•**(Ë *0O(i sA.*V(Ç }­}®*R{­{®(©=*{¯*{°*{±*{²*{³*{´*{µ*{¶*{·*{¸*{¹*{º*{»*{¼*{½*{¾*"}°*"}±*0„( }¯}°}±}²}³}´}µ}¶ }· }¸ }¹ }º }»}¼}½}¾*0e s4T s[. s>  (ØC (Ì sÍ sb“ ,+þ, {B8+sY.*(œ *&(ÄB*(³ *"{I*(Î *N(1j(­*(Ï *(Ð *0(¡(Ñ (ÿ (Åh(Åh(³^sþ *(Ò *0(¢(Ó ( (Åh(Åh(´^s *(Ô *0£(Õ (¸ (Ö *(× *ŠoiR,o}R(Ø sè (Ù **(× *ŠohR,o|R(Ø sè (Ù **.sz.€¿*( *~¿**u½ þ*"s{.**u¾ þ*&s~.**u¿ þ*0¤ u¿ ,+ u¾ ,+*Zr.8psÚ (‹ +oÛ *0¯©uK-uL-)(m.*tK {ý$ {ü$ sŠ.(o.*tL {þ$(a> 3= {þ$tf{0# {% {ÿ$ sŒ.(›+sŽ.(q.*rµp($¥s¤(¤(Œ +*0­ªuK-uL-)(m.*tK {ý$ {ü$ ( +(o.*tL {þ$(a> 3: {þ$te{.# {% {ÿ$ oÜ ( +(q.*r+p($¥s¤(¤(Œ +*0Z«uJ-&uK-#r›p($¥s¤ (¤(Œ +*(m.*tK {ý$ {ü$ s’.(o.*0U¬(¢ ,F (¢ (¢ -(¼*(m.*s”.s–.(A(o.*(m.*0H­ u¾ - u¿ -*t¾  {Ä{÷$oK &*t¿  {Ç{÷$oK &*(l.*V(l.}Ã}Ä*{Ã*{Ä*r(l.}Å}Æ}Ç*{Å*{Æ*{Ç*:( }È*:( }É*2{É{Ã*2{É{Ä*:( }Ê*2{Ê{Å*2{Ê{Æ*2{Ê{Ç*:(Ý }Ë*03®(Þ (ß {Ëo‹Q(‰ (Š (G>þoà *(á *&sè *:(Ý }Ì*03®(Þ (ß {Ìo‹Q(‰ (Š (G>þoà *V(â }ã }ä *0A¯(å (æ ,. (ç {ä {ã (O (P (E>þoà **:(Ý }Ï*03®(Þ (ß {Ïo‹Q(‰ (Š (I>þoà *²(Ý }Ð}Ñ}Ò}Ó}Ô*0 @®(Þ (ß {Ð{Ñ{Ò{Ó{Ô(‰ (Š (¼**²(í }Õ}Ö}×}Ø}Ù*0 -{Õ{Ö{×{Ø{Ù{Ù(¼**r(è }Ú}Û}Ü*r{Ú{Û{Üþ(½**"s›.*V( }Ý}Þ*{Ý*{Þ*&*Zr.8psé (Ž +oê *:(¬ }ß*:{ßsY‰*V(ë }à}á*V{à{á(Â**&s¥.*r( }â}ã}ä*{â*{ã*{ä*&*Zr.8psì ( +oí *:(V }å*B{åþ(^*:(î }æ*0 {æ(z (z (0 (æq*:( }ç*:{ç(}^*:(ï }è*0°{è(k] s¯.*(ð **þo *Šs¶.€ês¶.€ës¶.€ì*:( }é*~ê**(½.þ*~ë**(½.þ*~ì**(½.þ*{é*Zr.8psñ ( +oò *01.þ, þ,{é {é 3*Y**þ,**:¥Ô o¿.*0B±¥Ô  þ,%¥Ô þ,{é {é 3*Y**¥Ô þ,**0.þ,% (½.E * * **6(n oÂ.*0.±þ,uÔ  ,{é {é þ**þþ*0*.þ,þ,{é {é þ**þþ*0²uÔ  ,oÅ.**&sÈ.*r( }ð}ñ}ò*{ð*{ñ*{ò*&*Zr.8psó (‘ +oô *"sÏ.*V( }ó}ô*{ó*{ô*&*Zr.8psõ (’ +oö *0CsÕ.€ösÕ.€÷sÕ.€øsÕ.€ùsÕ.€úsÕ.€û*:( }õ*~ö**(â.þ*~÷**(â.þ*~ø**(â.þ*~ù**(â.þ*~ú**(â.þ*~û**(â.þ*{õ*Zr.8ps÷ (“ +oø *01.þ, þ,{õ {õ 3*Y**þ,**:¥Ø oä.*0B³¥Ø  þ,%¥Ø þ,{õ {õ 3*Y**¥Ø þ,**0Fþ,= (â.E  * * * * * **6(n oç.*0.³þ,uØ  ,{õ {õ þ**þþ*Â(â.E ******"(ê.*Â(â.E ******"(ê.*"(ê.*0@(â.E (Ë** À* À* @**Â(â.E ******Â(â.E ******0H(â.E (·.*(¹.*(».*(».*(·.*(».*0*.þ,þ,{õ {õ þ**þþ*0´uØ  ,oó.**0   sö.*0\( }}}}}}}}  }  }  } *{*{*{*{*{*{*{*{ *{ *{ *{ *&*Zr.8psù (” +oú *"{*"{*0   s/*0\( } }}}}}}} } } }*{ *{*{*{*{*{*{*{*{*{*{*&*Zr.8psû (• +oü *0   s/*0d( }}}}}}}} }  }! }" }#*{*{*{*{*{*{*{*{*{ *{!*{"*{#*&*Zr.8psý (– +oþ *6{{î4*"{*s(/*:( }$*{$*&*Zr.8psÿ (— +o *0     s-/*0t( }%}&}'}(})}*}+}, }- }. }/ }0 }1}2*{%*{&*{'*{(*{)*{**{+*{,*{-*{.*{/*{0*{1*{2*&*Zr.8ps (˜ +o *"{,*"{0*(³ *"{I*:( }3*N,*{3oÎk*:( }4*:{4oÎk*:( }5*:{5oÏk*V(L }6}7*º{6{B8{6{E8{7{?8{Á;(i*V(L }8}9*º{8{B8{8{E8{9{?8{Á;(i*0L( } } } } }  }  }  }   }  *0Y¶{ { { { {  {  {  {  {  (Õ* { s þo *r( }C}D}E*0Y·(z {E(oa(Xi(ži(/ {C{D(æj(à.(hi( ($‰(Õ**:(V }F*0W¸{F{¯(^-{F{¯ (O]($nþ+,{F{¯(k] ofmoÀj**r( }G}H}I*0 aº( ( ( :C( (îoE~,(Ýsû£(¤(¥(¼q(¤ s +mtã{`<(îo3¼{`<tß{c<(Ê - {M<{b<  s +tß{M<(¤ s (  (   oµ {H(V+(] {G(Òo{I  (ß+(k (Úo(¿ **sU/*:( }J*{J*&*Zr.8ps (™ +o *( *0»( ( ( s *V( }K}L*0e¼(i {K(c]-M{;{ù:{I(“”{L( O(È+(Þ{;{ù:{Isû£ (¤(+**( *&(åh*( *&(åh*:({ }M*Zs_/{M(š +þ*( *&(åh*:({ }N*Nsc/{N(š +*( *&(åh*( *0R½{  { {(z (oa{{{{{ { { (/*:( }O*N{O{î4(Ä**(  *:(à.(ì**(! *"(" *F}Po &* *0 &{Ps# s$ þo% * *V(& }Q}R*0›¾(' (; (= (: (< (( (3 (1 (2 (a>3t\{!#+ rps\ zoÆm  om(¢–{Q(={R(¥s4 *() *0¿(6 (5 su/*(* *"(i*:( }S*B{Sol*(Œ *"(i*:( }T*:{T("]*’(+ }, }- }. }/ *0 JÀ(0 (1 {, {½{- {w{/ {. (< (I (ó=s2 *(3 *6{v;(< *(4 *0$Á(5 (6 (7 sƒ/þ(› +*:(8 }Y*~{Y{B8{Y{E8(i*:(9 }Z*>{Z(œ +*V(¢ }[}\*0+ {[{¯ {B8{E8{\{v;(i*0D(: }; }< }= }> }? }@ }A }B *0ªÂ(5 (6 (7 {; {@ s‹/( + (C ,U (C (C -D(D {; {< {= {> {? {@ {B {A (ž +*(Ú{= sû£(¤(Ÿ +*Ò(E }F }G }H }I }J }K *0 ;Å(L (M {F {G {H {I {J {K sN *r(· }k}l}m*j{l{m{k(Ì]*:(O }n*0Æ(P (Q {ns‘/*:(R }o*>{o(Í]*r(S }p}q}r*j{q{r{p(¼F*:(T }s*0Æ(P (Q {ss—/*:(U }t*>{t(¾F*sž/*:( }u*{u*&*Zr.8psV (  +oW *(X *j{;{ù:{IþoY *^s¥/€ws¥/€x*:( }v*~w**(ª/þ*~x**(ª/þ*{v*Zr.8psZ (¡ +o[ *01.þ, þ,{v {v 3*Y**þ,**:¥ o¬/*0BÇ¥  þ,%¥ þ,{v {v 3*Y**¥ þ,**0þ, (ª/3 * **6(n o¯/*0.Çþ,u  ,{v {v þ**þþ*0*.þ,þ,{v {v þ**þþ*0Èu  ,o²/**&sµ/*r( }{}|}}*{{*{|*{}*&*Zr.8ps\ (¢ +o] **s¼/*’( }~}}€}*{~*{*{€*{*&*Zr.8ps^ (£ +o_ *0   sÄ/*0d( }‚}ƒ}„}…}†}‡}ˆ}‰ }Š }‹ }Œ }*{‚*{ƒ*{„*{…*{†*{‡*{ˆ*{‰*{Š*{‹*{Œ*{*&*Zr.8ps` (¤ +oa *^sÔ/€sÔ/€*:( }Ž*~**(Ù/þ*~**(Ù/þ*{Ž*Zr.8psb (¥ +oc *01.þ, þ,{Ž {Ž 3*Y**þ,**:¥ oÛ/*0BÉ¥  þ,%¥ þ,{Ž {Ž 3*Y**¥ þ,**0þ, (Ù/3 * **6(n oÞ/*0.Éþ,u  ,{Ž {Ž þ**þþ*0*.þ,þ,{Ž {Ž þ**þþ*0Êu  ,oá/**ò(í }“}”}•}–}—}˜}™*0 óË{“{¯{—(ó] (  (? (¨ þþ9¹{“{¯(Å] {–(Š+("]{”{w{i#{“{·{™{˜(5C-ads% {”{w{i#{•(No& {•om(¢–(f{™sû£(¤(+***(d *J{;|û:(j*r(e }š}›}œ*0 {š{›{œ(«**(d *J{;|û:(j*Ò(‘ }}ž}Ÿ} }¡}¢*0 nÌ{{ž{Ÿ(i(«* ÞGt {ž{w{i#{ oÚl{¢{¡{Ÿs“, (¤(+ Þ*$%GV(L }£}¤*º{£{B8{£{E8{¤{?8{Á;(i*(Œ *"(i*&sò/*r( }¥}¦}§*{¥*{¦*{§*&*Zr.8psf (¦ +og *6{¦( ]*0Í{¦ {¥ {¯(r_*0 &Î{§ {¦ {¥ (îo@Øtã {b< {a< {c<-+ (Ê þ,Q{¯(O]($nþ-+2{¯{¯(n+(O]($nþ+,P {b< {a< {d< {`< {c< (k (l (ª+ (¥(Úo+${¯(r_(¤ (k (l (Úo(ñ/*"{¦*:(V }¨*V{¨{¯þ(e`*:(h }©*:{©(û]*:(V }ª*:{ª( ^*:(i }«*B{«þ(§ +*:(i }¬*B{¬þ(å+*r( }­}®}¯*0 LO{­{¯(e`,*(¾B {®{w{i#{­{·{¯( D(7C*(á *&(n*:(j }°*:{°(l_*r(k }±}²}³*0 —ä{±{¯ (O]($nþ,+{²($N({³sû£ (¤(¥*{²($N{²(a{±{¯(S]($N(`{³sû£ (¤(¥*:(E }´*0 {´(+*:(l }µ*:{µsô *V(E }¶}·*0 ?Ï{¶{·(û*s0sŽ ( (j+ (< (D sY *(m *:(+þþ*(n *08*(+þþ- (ýoŒŒsû£ (¤(+&+(+*(o *þ*r(¯ }¸}¹}º*0 6{¸{¯{¸{³{¹(¤ o§Q{ºþ(ƒ]*V(¯ }»}¼*0«Ð{»{³{¼(¤ o¨Q (x 9€ (› (³ ,q(› (³ (³ -](x (x -P(´ {»{¯{»{¯{š8 (ƒ],*{»{¯{»{¯{¤8 þ(ƒ]**(p *"(²ˆ*(q *þ*(r *:o¶ (µˆ*(m **þ(0+*(s *>{#Lþ(0+*(s *>{#Lþ(0+*âs+0€¾s+0€¿s+0€Às+0€Ás+0€Â*:( }½*~¾**(60þ*~¿**(60þ*~À**(60þ*~Á**(60þ*~Â**(60þ*{½*Zr.8pst (¨ +ou *01.þ, þ,{½ {½ 3*Y**þ,**:¥3 o80*0BÒ¥3  þ,%¥3 þ,{½ {½ 3*Y**¥3 þ,**0>þ,5 (60E  * * * * **6(n o;0*0.Òþ,u3  ,{½ {½ þ**þþ*0*.þ,þ,{½ {½ þ**þþ*0Óu3  ,o>0**{È*{É*V( }È}É*(v *"{È*(w *"{É*(x *:{,<sÁm*0T(y }Ê}Ë}Ì}Í}Î}Ï}Ð}Ñ }Ò }Ó*0G{Ê{Ë{Ì{Í{Î{Ï{Ð{Ñ{Ò{Ó(8+*0T(z }Ô}Õ}Ö}×}Ø}Ù}Ú}Û }Ü }Ý*0G{Ô{Õ{Ö{×{Ø{Ù{Ú{Û{Ü{Ý(9+*0\({ }Þ}ß}à}á}â}ã}ä}å }æ }ç }è*0Q{Þ{ß{à{á{â{ã{ä{å{æ{ç{è{==(>+*0\({ }é}ê}ë}ì}í}î}ï}ð }ñ }ò }ó*0Q{é{ê{ë{ì{í{î{ï{ð{ñ{ò{ó{==(>+*:(| }ô*B{ô('+*:(} }õ*V{õ(¤ þo~ *0\({ }ö}÷}ø}ù}ú}û}ü}ý }þ }ÿ }*0]É {== {ö{÷{ø{ù{ú{û{ü{ý{þ{ÿ{(5+(6+(8+*0\({ }}}}}}}} }  }  } *0]É {== {{{{{{{{{ { { (5+(6+(8+*:(| } *B{ ('+*:(} } *V{ (¤ þo~ *0T(y }}}}}}}} } }*0G{{{{{{{{{{(8+*0T( }}}}}}}} }  }!*0G{{{{{{{{{ {!(:+*0\(€ }"}#}$}%}&}'}(}) }* }+ },*0Q{"{#{${%{&{'{({){*{+{,{<(:+*0\( }-}.}/}0}1}2}3}4 }5 }6 }7*0Q{-{.{/{0{1{2{3{4{5{6{7{*<(8+*0D(‚ }8}9}:};}<}=}>}?*0\Í {,< {-< {8{9{:{;{<{={>{?sÁm(?+sÁm(Ë *(x *:{,<sÁm*(ƒ *0aoÆm {U;{[;*:(„ }@*03Ô{@oÉ oÆm {U;{X;sµ, (¤(+*r(… }A}B}C*0 9Õ(† (‡ {A( ( ]{B{C(`(¿ *V(ˆ }D}E*0 ¡×{J {,< {.< {-< (4+(îoE{D{E (@+* (çŠ(¢o( ( ( só *:( }F*&s|0**(z0þ*&s€0**(z0þ*"s„0**(z0þ*"s‡0**(z0þ*{F*Zr.8ps‰ (© +oŠ *v(q0}K}L}M*{K*{L*{M*v(q0}N}O}P*{N*{O*{P*Z(q0}Q}R*{Q*{R*Z(q0}S}T*{S*{T*:( }U*2{U{K*2{U{L*2{U{M*:( }V*2{V{N*2{V{O*2{V{P*:( }W*2{W{Q*2{W{R*:( }X*2{X{S*2{X{T*^s™0€Zs™0€[*:( }Y*~Z**(ž0þ*~[**(ž0þ*{Y*Zr.8ps‹ (ª +oŒ *01.þ, þ,{Y {Y 3*Y**þ,**:¥W o 0*0BØ¥W  þ,%¥W þ,{Y {Y 3*Y**¥W þ,**0þ, (ž03 * **6(n o£0*0.Øþ,uW  ,{Y {Y þ**þþ*0*.þ,þ,{Y {Y þ**þþ*0ÙuW  ,o¦0**Šs©0€_s©0€`s©0€a*:( }^*~_**(°0þ*~`**(°0þ*~a**(°0þ*{^*Zr.8ps (« +oŽ *01.þ, þ,{^ {^ 3*Y**þ,**:¥Y o²0*0BÚ¥Y  þ,%¥Y þ,{^ {^ 3*Y**¥Y þ,**0.þ,% (°0E * * **6(n oµ0*0.Úþ,uY  ,{^ {^ þ**þþ*0*.þ,þ,{^ {^ þ**þþ*0ÛuY  ,o¸0**^s»0€fs»0€g*:( }e*~f**(À0þ*~g**(À0þ*{e*Zr.8ps (¬ +o *01.þ, þ,{e {e 3*Y**þ,**:¥[ oÂ0*0BÜ¥[  þ,%¥[ þ,{e {e 3*Y**¥[ þ,**0þ, (À03 * **6(n oÅ0*0.Üþ,u[  ,{e {e þ**þþ*0*.þ,þ,{e {e þ**þþ*0Ýu[  ,oÈ0**^sË0€ksË0€l*:( }j*~k**(Ð0þ*~l**(Ð0þ*{j*Zr.8ps‘ (­ +o’ *01.þ, þ,{j {j 3*Y**þ,**:¥] oÒ0*0Bߥ]  þ,%¥] þ,{j {j 3*Y**¥] þ,**0þ, (Ð03 * **6(n oÕ0*0.ßþ,u]  ,{j {j þ**þþ*0*.þ,þ,{j {j þ**þþ*0àu]  ,oØ0**2sÛ0*²( }o}p}q}r}s*{o*{p*{q*{r*{s*&*Zr.8ps“ (® +o” *"sä0*V( }t}u*{t*{u*&*Zr.8ps• (¯ +o– *"{t**së0*’( }v}w}x}y*{v*{w*{x*{y*&*Zr.8ps— (° +o˜ *2só0*²( }z}{}|}}}~*{z*{{*{|*{}*{~*&*Zr.8ps™ (± +oš **sü0*’( }}€}}‚*{*{€*{*{‚*&*Zr.8ps› (² +oœ *0 s1*0D( }ƒ}„}…}†}‡}ˆ}‰}Š*{ƒ*{„*{…*{†*{‡*{ˆ*{‰*{Š*&*Zr.8ps (³ +ož *0 s1*0D( }‹}Œ}}Ž}}}‘}’*{‹*{Œ*{*{Ž*{*{*{‘*{’*&*Zr.8psŸ (´ +o  **s1*’( }“}”}•}–*{“*{”*{•*{–*&*Zr.8ps¡ (µ +o¢ *0     s$1*0t( }—}˜}™}š}›}œ}}ž }Ÿ }  }¡ }¢ }£}¤*{—*{˜*{™*{š*{›*{œ*{*{ž*{Ÿ*{ *{¡*{¢*{£*{¤*&*Zr.8ps£ (¶ +o¤ *"{™*"{›*"{œ*0á{œ {ñ*"{—*"{˜*"{¤*{¥*{¦*V( }¥}¦*{§*{¨*{©*r( }§}¨}©*{ª*{«*{¬*r( }ª}«}¬*0·{ª {{î4*{­*{®*V( }­}®*(¥ *"{i;*(¦ *0 (9C*(¦ *0 (:C*(¦ *0 (;C*(¦ *0 (=C*(¦ *0 (>C*(¦ *0 (?C*r(§ }¯}°}±*0 {¯{±{°([+*(Œ *"(i*(Ü *"(f *r( }²}³}´*r{³{´{²(· +*(ð **þo *²}µ}¶}·}¸}¹(¨ *0­{¸YE + +d+W8|{µ(µ o¶ }·}¸{·oï ,/{·o· }¶}¸(s}¹*}¶+Ä}¸{·(Á+}·}¸}¹*0‡e {¸YE++e{¸E + ++++}¸{·(Á+}¸}¹ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¸E + + +++***"{¹*0 {µsc1*²}º}»}¼}½}¾(© *0 Ì{½YE +8€+s8˜sa1{º{ÜL(ä+¥ýo¶ }¼}½{¼oï ,>{¼o· }»}½{»sc1(¸ +}¾*}»+µ}½{¼(Á+}¼}½}¾*0‡e {½YE++e{½E + ++++}½{¼(Á+}½}¾ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{½E + + +++***"{¾*0 {ºsi1*(Ü *"(f *V(ª }¿}À*V{¿{À($,*:(« }Á*0+â(¬ (­ {ßL,{Á{¯(™^**:(® }Â*0)ä(¯ (° {Âss1(¹ +þ(º +*(Ü *0~(f (g *:(± }Ã*B{Ãþ(Ã+*(á *&(n*:(j }Ä*:{Ä(l_*0¬}Å}Æ}Ç}È}É}Ê}Ë}Ì }Í }Î }Ï }Ð }Ñ}Ò}Ó}Ô}Õ}Ö}×}Ø}Ù(² *0®Ö {ØYE ++t8Ð8O8p}Ø{Å{Æ{Ç{È{Ê{Ë{Ì{Í{Î{É{Ò{Ó{Ñ(V+}Ù*{Å{¯{Ç(c`9ë{É{I{Ò(1:}Ô{Ñ(2:}Õ{Å{¯{Å{³{É{I{É{I{Ï(LP}Ö{Õ{=L,){Ð{Ö{Å{¯{¥8(n(n+{Ö{Å{¯{¥8(n}×}Ø{Å{Æ{Ç{È{Ê{Ë{Ì{Í{ÎrÔëp{É{I( {É{I sY‰{Ô{×{Õ(V+}Ù*}Ø{Å{Æ{Ç{È{Ê{Ë{Ì{Í{ÎrÞëp{É{I( {É{I sY‰{Ô{×{Õ(V+}Ù*}×}Ö}Õ}Ô+}Ø}Ù*&}Ø*ê{ØE +++ +++****"{Ù*0g{Å{Æ{Ç{È{É{Ê{Ë{Ì{Í{Î{Ï{Ð{Ñ{Ò{Ós1*0”}Ú}Û}Ü}Ý}Þ}ß}à}á }â }ã }ä }å }æ}ç}è}é}ê}ë(² *0Ü{êYE +8ï8ß8š8›{Ú{Û{Ü{Ý{Þ{ß{à{á{â{ã{ä{å{æ{ç{=L{ç{>L{ç{?L{ç{@L( s(W+¥o³ }é}ê{éoï ,0{éo´ }è}ê{è}ë*}è+Ã}ê{é(» +}é}ê{Ú{Û{Ü{Ý{Þ{ß{à{á{â{ã{ä{å{æ{ç{=L{ç{>L{ç{?L{ç{@L("s(W+¥*}ê}ë*0”e {êYE+8o{êE ++$+ + +++}ê{é(» +}ê}ë Þ t   Þ&8wÿÿÿþ,z*[w ê{êE +++ +++****"{ë*0_{Ú{Û{Ü{Ý{Þ{ß{à{á{â{ã{ä{å{æ{çs…1*V(ª }ì}í*V{ì{í($,*( **þ(*V(L }î}ï*º{î{B8{î{E8{ï{?8{Á;(i*V(L }ð}ñ*º{ð{B8{ð{E8{ñ{?8{Á;(i*V(L }ò}ó*º{ò{B8{ò{E8{ó{?8{Á;(i*V(L }ô}õ*º{ô{B8{ô{E8{õ{?8{Á;(i*:(L }ö*F{öoÉ þ*V(µ }÷}ø*R{÷{ø(\+*({ *j{;|û:(j(Óiþ*(¶ *0å(õ (ó *²(· }ù}ú}û}ü}ý*0 '{ù{ú{û{ü{ý(t+*²(¸ }þ}ÿ}}}*0 =æ(¹ (º (é {þ{ÿ{{{þ(`+*Ò(· }}}}}}*0 /{{{{{{þ(`+*ò(» } } } } } }}*0 ?{Y{{ { { { { {(S+sú *²(¼ }}}}}*0 5ç(½ (û {{{{{s¥1*(Y *0z(Z ([ o‡*(\ **(¾ *0è(ž‹@|t†% {7J(ž‹3c{7Jtx% {J{I( ,A{J{I ( ( -{8J ( (Ô s¿ *  s¿ * +ô +ð +ì(À *.(Á þ*(À *.(Á þ*( *0é(Á (ÿ (¼ +sà *(À *:(Á þþ*(À *:(Á þþ*(^ **þo5‡*r(Ä }}}*0>ë(Å (Æ {Ži2"{{Is¹1{oå+(ñ **(Ç *&sÈ *(^ **þo5‡*:(É }*¢{{Is¿1{{Ioå+(ñ *(] *"o:‡*(^ **þo5‡*:(Ê }*0!ì( (Ë {I{(ñ *(_ *"o8‡*(Ì **þo9‡*ò(Í }}}}}}} *0 Çí{{³{sÃ1{oä+(¼U sÅ1{oå+ {Ži/-{£v% {{{(p+(Î *sÇ1{ (½ + (Ï :·sÉ1{oæ+,_sË1{o¾ +,*{ofmomj{ofmomj(p{sû£(¤(I+*{ofmomj{ofmomj(p{sû£(¤(I+* (Ï (Ï -A(Ð (Ë (Ð ( {{{(Ô (p+(Î * (s(¿ +( {Isû£(¤(I+*(J *.oï†þ*( *N{;(Ñ (ÿk*(d *J{;|û:(j*r(e }!}"}#*0 {!{"{#(«**V(Ò }$}%*0C*(y+,{%(< *{%(• ,({$sû£ (¤(+**’(Ó }&}'}(})*0 Aî(Ô (Õ {'{({&{)(  (" (! (w+*:(Ö }**0gð{$ {*{Io× -/{*{I({*{Isû£ (¤ (À ++(Ø (" (Ù (7G*:(Ú }+*6{+(²F*V(Ú },}-*N{-{,(°F*Ò}.}/}0}1}2}3(Û *0¼{2YE + +s+f8‹{/¥ooG }1}2{1oï ,@{1oH }0}2{0(‡‰{.(}3*}0+³}2{1(c+}1}2}3*0‡e {2YE++e{2E + ++++}2{1(c+}2}3 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{2E + + +++***"{3*0 {.{/sá1*:(Ú }4*6{4(²F*r(Ú }5}6}7*j{5{6{7(ÊF*’(Ú }8}9}:};*ª{8{9{;oÜ (Ý {:(ÊF*r(Ú }<}=}>*–{>o# {=oÜ {<(´F*’(Þ }?}@}A}B*0 Nò{ { {I{B(Á + ,( {?{@{A (ß {(«***r(Ú }C}D}E*Ò{Do# {Eo# (é (ê (ê {C(¶F*:(à }F*"{F*:(á }G*B{Gþo# *V(Ú }H}I*zsõ1{I( +{H(¸F*( **þ(*(â *"(~+*:(ã }J*0 (~+{J(>Œ*(â *"(~+*:(ä }K*~{K(©ˆoŒŒ(¥(t0*0\(Ú }L}M}N}O}P}Q}R}S }T }U }V*0 ‹{L{µ{O(©ˆ{M{w{P{P{M{w{i#{M{|(¿={T{S{V{Q{Rså {Uo# {N(ºF*:(á }W*B{Wþo# *Ò(Ú }X}Y}Z}[}\}]*0 o{X{µ{Z(©ˆ{Y{w{[{[{Y{w{i#{Y{|(¿={\s2{]( +þoæ *V(Ú }^}_*N{_{^(°F*V(Ú }`}a*N{a{`(°F*V(Ú }b}c*N{c{b(°F*:(á }d*B{dþo# *r(Ú }e}f}g*’s2{g( +{f{e(ÀF*:(à }h*"{h*:(á }i*B{iþo# *V(ç }j}k*V{k{j(ƒ**²(Ú }l}m}n}o}p*0 kôs2{p( + {n,{o{m(ÂF*{l{¯ {os2{l{¯{m{o(‚*þ(à +*:(è }q*f{q{×:("]sé *:(Ú }r*6{r(²F*0\(ê }s}t}u}v}w}x}y}z }{ }| }}*0Ÿõ(ë (ì {ß:{I{w(Ä +,f{s{t{u{x{y{z{{{|{}(  (" (! {ß:{I{w(Å +(+*{vs2s( *:(á }~*B{~þo# *’(Ú }}€}}‚*ª{€{s!2{‚( +{(ÄF*r(Ú }ƒ}„}…*f{…{„{ƒ(ÆF*:(Ú }†*6{†(ÈF*:(Ú }‡*6{‡(²F*0t(í }ˆ}‰}Š}‹}Œ}}Ž} } }‘ }’ }“ }”}•*0`{ˆ{‰{Š{‹{{‘{’{“{”{•{Œ{{Ž(¿B{(}+*0L(î }–}—}˜}™}š}›}œ} }ž*0`ö(ï (ð {–{—{˜{™{š{›{œ{{ž(  (" (! (+*’(í }Ÿ} }¡}¢*00÷{Ÿ{ {¡{¢(‡+  Þ t  Þ*#$ (- *Y*(- *X*V(ñ }£}¤*0 .ø(ò (ó (ô {£{¤þ(ˆ+*(V **’(õ }¥}¦}§}¨*0 #{¥{¨{§{¦þ(ˆ+*V(‡ }©}ª*V{ª{©(Ã_*(m *0"ù(ŠŒ3tš% {ŒJ(«‰þ**(ö *0=ú(ŠŒ3)tš% {ŒJ(«‰3{ŒJtû${7I *rWps\ z(m *0"ù(ŠŒ3tš% {ŒJ(«‰þ**(÷ *0=û(ŠŒ3)tš% {ŒJ(«‰3{ŒJtù${5I *rWps\ z(ø *&(o_*(ø *&(š^*(ù *2(ó_*(ù *2(ô_*(Á **þ(Æ +*r(Á }«}¬}­*j{«{¬{­(×_*:(û }®*0 {®(Œ+*(ü **(ý *0 0ü{!L {"L {$L (‰(Œ(\Š(Û*’(þ }¯}°}±}²*~{¯{°{±{²(‡+*’(þ }³}´}µ}¶*~{³{´{¶{µ(‡+*’(þ }·}¸}¹}º*~{·{¸{¹{º(‡+*²(ÿ }»}¼}½}¾}¿*0 %{»{¼{½{¾{¿(‰+*’( } } } } *0 @ý(þ (ý { { (ªq{ { (ÔosL þo *( **V( }Ä}Å*V{Ä{Å(,*:(V }Æ*^{Æ(O]($nþ*:(V }Ç*F{Ço þ*’(  }È}É}Ê}Ë*0 {É{Ê{Ë{È(Ø]*V(  }Ì}Í*0#Æ(P (Q {Ì{Ísi2*V(  }Î}Ï*V{Ï{Î(Ú]*²(  }Ð}Ñ}Ò}Ó}Ô*0 [*{Ð{¯{Ó(f_- (4{Ñsû£ (¤(¥+{Ò{Ó{Ô{Ñ(Ù]*r(  }Õ}Ö}×*0 )Æ(P (Q {Õ{Ö{×so2*V( }Ø}Ù*0 @*(g_- (4{Øsû£ (¤(¥+{Ù{Ø(Û]*(V **:( }Ú*Ž{Ú{¯{U;{Z;( ^sÁ *:( }Û*0eþ(" (# -{Û{¯{U;{Z;( ^+,/om(¢–(õ{U;{X;sû£ (¤(¥**:( }Ü*B{Üþ(Ç +*²(ÿ }Ý}Þ}ß}à}á*0 %{Ý{ß{Þ{à{á(‰+*’( }â}ã}ä}å*0 ² :ª{â{¯ (O]($nþ,:{â{¯{ä{â{¯{÷8{â{¯(k]þ(U*{â{¼{ã{w{s#rcñp(c {å(¸T{ä(Ë=(K -*rcñp(c **(¤ *&(¥*( *"oŒŒ*:( }æ*V{æ(t0(S *(á *&sè *(¬ *6oÆmoðl*:(S }ç*b{ß:{I{ç(ñ *0Œ}è}é}ê}ë}ì}í}î}ï }ð }ñ }ò }ó }ô}õ}ö}÷}ø( *0 Þ{÷YE +8’8\8§{ëo }ö}÷{öoï 9^{öo }ð{ð( }ñ{ð( }ò {ñs‹2{ï(È + ÞTt u‰ ,B{ñ{é{w{i#{ê($N(E{ìsû£(¤(É + Þþ}ó{ío~j{î(Š+{ó{×:("]}ô{è{¯{ô(O]($nþþ}õ}÷{ñ{ò{ô{õs }ø*}õ}ô}ó}ò}ñ}ð8’þÿÿ}÷{ö(Ê +}ö}÷}ø*‹¤T0‡e {÷YE++e{÷E + ++++}÷{ö(Ê +}÷}ø Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{÷E + + +++***"{ø*0@{è{é{ê{ë{ì{í{î{ïs2*V( }ù}ú*0 N( ( ( (  {ù {ú(ˆ+(þ s! (ý s" *:(# }û*0($ (% {û(ñ þ*²(& }ü}ý}þ}ÿ}*0 J{ß:{I{ü{¯{{þ{ß:{I(n{ÿ{ý(_s! *(S *.o¯kþ*:(S }*b{{ß:{I(œ+*(S *.o¯kþ*:(# }*0&($ (% {{ß:{I(ñ *r(' }}}*0I*sŸ2{(Ë +-3{ß:{I{(w^(F{sû£ (¤(+**(( *&ob *() *"($ *(( *&ob *(* *6{ß:{I*:(+ }*N{($ (n*r(, }}} *0@J{ {{|(U {{¯on{Ý:{ (U(Ë+*(- *"(% *(. *"(H”*:(/ }0 *b{0 (1 (% (ñ *(á *&(n*:(j } *:{ (l_*(2 *0(3 (¬ (4 sy *r(5 } } }*j{{ { (@:*²(6 }}}}}*0 7Ê{{(Õ/ {{s»2{(Î+s7 *V(8 }}*0 +(3 (¬ (4 {{s½2*0t}}}}}}}} } } }  }! }"}#(9 *0 ý{"YE +8©8Ü8K8;8²{¥0o: } }"{ oï 9d{ o; }{{‰}{{†}{{+L}{(Þ.(ï.}{{{{($,}}"{{s< }#*{{{(7:¥0o: }!}"{!oï ,:{!o; }}"{( s< }#*}+¹}"{!(Ì +}!}þ7}}}}}8Œþÿÿ}"{ (Ì +} }"}#*0¯e {"YE+8Š{"E ++;+$+ +++,}"{!(Ì ++}"{ (Ì +}"}# Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{"E ++++ +++*****"{#*0,{{{þ7sÁ2*(= *"{ð+*(> *fo‹Qo•Qs? s@ *V(A }$}%*R{${%(Í +*(B *"(C *(ð **þo *(D *0+(C (E sÏ2{ÜL(ä+oF s? *:(G }&*0T(H (I (J s? {&(I {&(J (ñ ,(n þoT **:(K }'*VsÓ2{'þ(Î +*’(L }(})}*}+*0 ? (M (N (O (P {({){*{+ (Ï +*r(Q },}-}.*0 * (R (S {,{-{.(£+*V(ª }/}0*V{/{0($,*0D(T }1}2}3}4}5}6}7}8*0 (C (E {4{I{1{2sÛ2(Ã* {1{¯{6(ó] (  (Ä*{1{¯{1{³{3{4{5{6{7{8(5K*r(U }9}:};*0 C (V (W (X (Y (Z {9{:{; sÝ2*V([ }<}=*0l(\ (] (^ (_ {ò+ {ó+ {ô+{<{=þ7sÁ2(Ð +(Ñ +(`  (a  sÇ2(Ò + sÉ2 (Ó + {<{=sË2 (Ô + sÍ2 (Õ +sÑ2 (Ö + sÕ2(× +{<{= s×2  (Ø +(Ù +{<{=sÙ2 (Ú +(Û +(b (c {<{=sß2 (Ü +sd se *V(f }>}?*0(Õ/{>{?(@: {†(  -H{Š(E3:{Št(& {ÛK(E3 {‹{} {ÜK {Isg *(S{8Lsû£(¤(Ý +*V(h }@}A*0 Ä{L {L { L (Ïi(é {@(¬0(¼0{A(`+ (Æ  (Ç {@{¯(^-(Usû£(¤(+&+{@{¯(‰],(csû£(¤(¥+s² si *(á *&sè *V(j }B}C*V{C{B(Ÿ**(k *"(l *V(m }D}E*0 ª(n (o (p (q (r (s së2(Þ +{E{w{i#{D{¯{D{³ ¥=(DK{E{w{i#{D{¯{D{³(BK*r(t }F}G}H*0 ;{ð+ {F{¯{F{³{G{H(ov }Y}Z{Yoï 9{Yow }N{N(x (y }O{N(l }P{N(l {ì+(z }Q{N(x ({ }R{N(l {ï+}S{N(l {ë+}T{N(x (| }U{N(x (} }V{S:ï{I{K{Psï2{T{I{L(ß +(à +}W{W-$(Y{Jo ‹sû£ (¤(++ {W(M }X}Z{X{I{³{Ko«Q{V{Q{O(i (f {R(Ô {U{T{I(Ûq}[*}X}W+}V}U}T}S}R}Q}P}O}N8ïýÿÿ}Z{Y(á +}Y}Z}[*0‡e {ZYE++e{ZE + ++++}Z{Y(á +}Z}[ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ZE + + +++***"{[*03{I{J{K{L{Msñ2*V(~ }\}]*0\(n (o (p (q (r (s {\{] sñ2(â +sÈ *:(¬ }^*:{^sY‰*0D}_}`}a}b}c}d}e}f( *0>{eYE +8ò8Ê8{_¥yo€ }d}e{doï 9¹{do }`{`(F }a{`(E (Ä }b{`(E (‚ }c{c-,¥+sÜ£z&+}e{b{I($ +{asƒ }f*}c}b}a}`87ÿÿÿ}e{d(ã +}d}e}f*0‡e {eYE++e{eE + ++++}e{d(ã +}e}f Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{eE + + +++***"{f*0 {_sû2*(„ *0*(… († þ,oô sg (‡ **(ˆ **(Á **²(ˆ }g}h}i}j}k*0 7{h{g{¯{h{k{i{j(`(½]*r(Á }l}m}n*j{l{n{m(½]*(ˆ **(Á **(o *þ*(‰ **(Š *0A {Ã;(… ,2{Ã; († (^ ,(… (… -(d (c **(‹ **(‰ **(Š *04!r1p{Ä;(‰^ ,(d (^ ,(d (c **(‹ **(Œ **:( }o*05"{o{Ä;(‰^ ,(d (Œ^ ,(g (– **(Ž **V( }p}q*0 V#{p{¯{q{p{¯{Þ8s3s3s3(ä + {p{¯{q{p{¯{Þ8s3s3s3(ä + {p{qrUp(³+(å + {p{qr•p(³+(å + {p{qrÃp(³+(å +{p{qråp(³+(å +{p{qrùp(³+(å +{p{qrp(³+(å +,*(d    s s‘ (õ **r(¯ }r}s}t*j{t{s{r( U*(’ *0%(“ (” (æ +s• *(– *0Q&(è (ë (ì (ù (í (î (ï (é (ø (é (ê *(’ *0%(“ (” (æ +s• *(– *0Y&(è (ë (ì (ù (í (î (ï (é (ø (é (ê þo‹Q*V( }u}v*R{u{v(¸+*V( }w}x*R{w{x(¹+*V( }y}z*R{y{z(º+*’(» }{}|}}}~*’{|{}{~{{sY‰(½+*r(— }}€}*0 |&(è (ë (ì (ù (í (î (ï (é (ø (é (ê {{€{s53(Q (Q>(‘=*’(Ç }‚}ƒ}„}…*²{‚{„{…s73{ƒ¥;þ(ç +*V(L }†}‡*º{†{B8{†{E8{‡{?8{Á;(i*r(p }ˆ}‰}Š*0P'(²ˆ ,D(¶ {ˆ{‰(µ+þþ,{Šo˜ +,(¶ (Ô **(» **²(™ }‹}Œ}}Ž}*0 ({Œ{{(µ+9ì(ŠŒ@Ýt«% {ÓJ(ŠŒ@Ä{ÓJt«% {ÔJ(²ˆ 9¦(¶ {I{Œ{{(»+(ñ ,{(¶ {ÔJ{ÓJ {Is?3(Q>{‹{µ {I{Ž{w{Ž{w{i#{Ž{|(¿=s (‚ ***(» **’(þ }}‘}’}“*~{{’{‘{“(‡+*(» **(š *6oÚl(NŒ*(› *0 +oÚl {I(¿Ž*(œ *:oÚl(µˆ*:(Ê }”*b{”omom(ñ *:(Ê }•*ZsO3{•([+þ*V( }ž }Ÿ *0U*{ž oT (U (  {Ÿ (è + (¢  (£ sQ3(Ã+(¿+s¤ *(¥ **(¥ **r(¦ }˜}™}š*0 ]+{˜{µ(½= {˜(¾B{™{š(, (Õ (Ø ss Þu  , oâ &Ü&Ü*3Er(¦ }›}œ}*0 ]+{›{µ(½= {›(¾B{œ{(, (Õ (Ø ss Þu  , oâ &Ü&Ü*3Er(¦ }ž}Ÿ} *0 ]+{ž{µ(½= {ž(¾B{Ÿ{ (, (Õ (Ø ss Þu  , oâ &Ü&Ü*3Er(» }¡}¢}£*f{¡{¢{£(½+*0\(§ }¤}¥}¦}§}¨}©}ª}« }¬ }­ }®*0™M|®(J¥ {¤{ªoŒQ{¥{¦{§{¨{«(4Œ{©{¬(4Œ{¨{­(4Œ(4Œ(Ž ( ( ( ( ( (±+*0D(§ }¯}°}±}²}³}´}µ}¶*0gM|µ(J¥ {¯{¶oŒQ{°{±{²{³{´(4Œ(4Œ(Ž ( ( ( (±+*(§ **r(» }·}¸}¹*f{·{¸{¹(½+*²(¨ }º}»}¼}½}¾*0 BM{º{»{¼X{¾(À+,{½oŒŒ (J¥(4Œ**:(© }¿*0_,r/pŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( {¿(J¥(„Œ*(§ **(§ **(§ **’(§ }À}Á}Â}Ã*0 ({À{Á{Ã{Â(JŒþoV *ò(§ }Ä}Å}Æ}Ç}È}É}Ê*0 >{Ä{É{Ê( {Å{È{Æ{Ç(LŒþoV *r(5 }Ë}Ì}Í*j{Í{Ë{Ì(@:*r(5 }Î}Ï}Ð*j{Ð{Î{Ï(@:*r(¦ }Ñ}Ò}Ó*0 ú-(×/ {Ñsy3{Ó(Î+ (q ," (r {ƒ( ‹3 (r {„,(tsû£ (¤ (é +*(r {…,+Ù(q (q -Ì(r {Š(r {‚{Ñ{µ(½={Ñ(¾B{Ò(,(Õ (Ø ss Þu   ,  oâ &Ü&Ü*ª3Ý’(§ }Ô}Õ}Ö}×*0 ({Ô{Ö{×{Õ(BŒþoV *r(¦ }Ø}Ù}Ú*0 ]+{Ø{µ(½= {Ø(¾B{Ù{Ú(, (Õ (Ø ss Þu  , oâ &Ü&Ü*3Eò(§ }Û}Ü}Ý}Þ}ß}à}á*0 {{ÞoG{Þ{à(ZŠ(Û(` (a {Ý{à(6Œ {Ü{Ûr#p{ß{á(Ž ( ( (±+þoV *0t(ý }â}ã}ä}å}æ}ç}è}é }ê }ë }ì }í }î}ï*0†.{%L {$L {!L {#L {"L{â{ã{ä{å{æ{ç{è{é{ê{ë{ì{í{î{ï (ç+(Û*0t(ý }ð}ñ}ò}ó}ô}õ}ö}÷ }ø }ù }ú }û }ü}ý*0Š/{%L {$L {!L {"L {#L {ð{ñ{ò{ó{ô{õ{ö{÷{ø{ù{ú{û{ü{ý(ç+(Û*r(¦ }þ}ÿ}*0 ]+{þ{µ(½= {þ(¾B{ÿ{(, (Õ (Ø ss Þu  , oâ &Ü&Ü*3E0D(§ }}}}}}}}*0y{{r“p{{{oŒŒ{{(ZŠ(Û(` (a {{(6Œ(Ž ( ( (±+þoV *²(§ } } } } } *0ƒM{ { r›p{ { oŒŒ (J¥{ (߈{ r p{ { oŒŒ(߈(Ž ( (±+(Ž ( ( (±+þoV *(§ **V(§ }}*0 ,{(nŠ{{oŒŒ(JŒþoV *(¥ **(§ **’(û }}}}*0 ${{{{(ì+*(ü **ò(ª }}}}}}}*0 Ä0{%L {!L {#L {"L {{{ (,(Õ (Ö (× (Ø (%  {{{{{(ì+  (ý   (þ    (›ooÎF(=G s& *:(« }¬ *0>1(­ , (­ (­ - (® *r9p{¬ s¤ (¤(ê +*:(V }*^{(O]($nþ*:(V }*F{o þ*r(¯ }}} *0; { {{¯ (ôn{{¥8(Ðo(k (l þo¸ *:(¯ }!*R{!(k þo¸ *:(° }"*0 S"{"r—àpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (©]*’(¯ }#}$}%}&*0 W2{$s¥3{&(Ù+(Ú+ (Š (‹ {%o¸ {$ {#{¯ (r_(«]*(á *&sè *r(± }'}(})*0 ,cds% {({'{)(ÒNþo& *’(² }*}+},}-*0 '{*{+{,o‰Q{-(«**(³ *0 (Ïi(çi(Ži( (2i*(Œ *"(i*:(° }.*0 S"{.r—àpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (©]*’(l }/}0}1}2*0 1( {/(¬0(¼0{0{2{1(h+*(´ *"(¹**(´ *"(º**(á *&sè *(´ *"(¹**(´ *"(º**(µ *"(ù *:(¶ }3*0(Í (ò (ó {3(k (l þo¸ *0D(· }4}5}6}7}8}9}:};*0â3{4{¯{6{8{;{6rap{8(©] (ò (ó {4{5(õc{6{7oöR(¼q(¤ (k (l ( + (ù {6{4{¯{¥8(­]{6rap{8(©] (ò (ó {4{5(õc{6{7o÷R(¼q(¤ (k (l ( + (ù {6{4{¯{¥8(­]{4{¯{¤8{;{4{¯{¥8(n(n{6r}p(©] (ò (ó {7(· {4{¯{4{³{8{9{:{6(®H{6{8(­](Û_*(¸ *:oŒŒ(¥*(¹ *0$4(ž (Ÿ (  sº (ý+*:(h }<*:{<(r_*(» *"(Þ *²}=}>}?}@}A(¼ *0½{@YE + +t+g8Œ{=¥Ýo< }?}@{?oï ,A{?o= }>}@{>{>oŒŒ(t0}A*}>+²}@{?(j+}?}@}A*0‡e {@YE++e{@E + ++++}@{?(j+}@}A Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{@E + + +++***"{A*0 {=sÏ3*(¯ *Bo•Qoõ þ*r(½ }B}C}D*0-®(Þ (ß {B{³{C{D( U*(» *"(Þ *(¾ *"(+*:(¿ }E*j{E(ü+oŒŒsÀ *(Á *.(k þ*:( }F*0(5{F(ü+ oŒŒ sÀ (à (Ä *(Å *(Æ *(Á *.(k þ*V(Ç }G}H*0 K6(È (€ (É {G(ü+ ,{H{B5 (™^+ oŒŒsÊ *r(¯ }I}J}K*08¾{I{³{JoªQ o´ 3oµ o¶ {Kþ**(Ë *"(ë +*:(Ì }L*B{Lþ(ì +*’(Í }M}N}O}P*0 U  {M{P{O(¶* (@ (A {M{N{O{M{¯(l_(«**:(Î }Q*0%7(Ï (Ð (Ñ {Q(ô *:(Ò }R*0 ;8(Ó (Ô (Õ (Ö (×  {R(ô ( *V(Ø }S}T*V{S{T(ô *(Ù *(Ú *V(Ø }U}V*V{U{V(ô *(Ù *(Ú *(Û *&(ÅB*0Œ}W}X}Y}Z}[}\}]}^ }_ }` }a }b }c}d}e}f}g(Ü *0ª{fYE +8Z8Ê8(8i{`oÝ }e}f{eoï 9 {eoÞ }a{a(ß }b{a(Þ }c{W{X{Y{Z{[{\{]{^{_{c{b(,}d}f{d}g*{doß ,Z}f{W{X{Y{Z{[{\{]{^{_{c{b(,}g*+}d}c}b}a8Ðþÿÿ}f{e(í +}e}f}g*0”e {fYE+8o{fE ++$+ + +++}f{e(í +}f}g Þ t   Þ&8wÿÿÿþ,z*[w ê{fE +++ +++****"{g*0J{W{X{Y{Z{[{\{]{^{_{`sÿ3*(à *0 7(Ï (Ð (Ñ ( *:(á }h*0 “"{hr—àpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9pŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( ( (©]*:(â }i*0.Í (ò (ó {i{¯(r_( ](ô *(ã *(Æ *(ä *0Í (ò (ó *:(å }j*B{jþ(î +*(æ *0 68(Ó (Ô (Õ (Ö (×  ( (ç *(è *~{æ {í {ç oß sé *(Û *&(ÅB*0D(ê }k}l}m}n}o}p}q}r*09(ë (ì (í (î {m,{m(¢ +{q{r(ã+{l{¼{ks4{n{o{p (ä+*:(ï }s*f{s{¯{ð (Y^*V(½ }t}u*0 ?®(Þ (ß (a{t{¯{t{³($¥{uþ(]P*(½ *0®(Þ (ß ošQ*(ñ *"{ò *(ó *"{ô *(õ *"{ö *(ó *"{÷ *:(ø }v*N{v(U(Ë+*r(N }w}x}y*0 @{x{w{i#{w{·{y( D{w{¯(r_(;C*:(ù }z*¢{z{¯{z{¯{Ø8{0(2P*:(ú }{*09:{, {{sZ ( ( {{3 þ+þ*(û *Ns-4{ö (ï +*(Á **r(Á }|}}}~*j{|{~{}(½]*(ü **(õ *r(ý }}€}*0 1{{€{þ {{ð {ÿ { (,*’(Á }‚}ƒ}„}…*0 %{‚{ƒ{…{„o¾ (½]*V(Á }†}‡*n{‡{†o¾ þo¾ *’( }ˆ}‰}Š}‹*0 >={, {, u£-+u¢-krp{Šs¤ (¤ (ð +8»t£{ü/{ˆ{‰{‹ {ˆ{‰{‹(,+r{ˆ{¯(›^,{ˆ{¯(^+ {‹{ˆ{¯  {K8r+Óp(øm (¤ (¥ (k {‰(Ì]s§ (ð (ñ  s;4 {‰ (ô   (õ  s *:( }Œ*0 ©>{ {, { {ÿ { {þ { { { { {ð { {,{ u¡,$,(|sû£(¤(¥+*  u£- u¢-_r½ps\ z,I{Œ{¯  {K8rÕp(øm{Œ{¯(^(¤ (¥ (Ø]8‘8‰,8~{Œ{¯(›^,g{Œ{¯(^ {Œ{¯  {K8rÕp(øm (¤ (¥ {Œ{¯ (,`(k (l (Ì]+ {Œ{¯ (r_ (ô (õ *V( }}Ž*0 ’?{, {{¯(’^ {Žrßp(ª] (ò (ó (ön{Ž(Ðo{Ž{Ž sÁm(å](ô (õ s (åŠ(¢os *(  *0@{ {,*V(  }}*0 J{{{ {,{ {,{ {ð { {ÿ { { (,*r(  }‘}’}“*0 jA{ { ,W (¶ {,([>{‘{µ {I{’{w{’{w{i#{“(¿=**:(h }”*:{”(r_*:(@ }•*V{•s (Þo*²(  }–}—}˜}™}š*0BH{  { {ÿ { {þ { { {ð { { ,(}sû£(¤(+&+u:=u:Ätÿ{, {, { , {–{¯{–{³{š(k (l {˜ (Ý+ {–{³ o¨Q(ñ +(€+ {–{˜ (, {–{¯{–{¯{š(r_(^,(óc+(õc{–{— (¼q {š(k (l  (k (l ( +(ù  ogR (O (P (E>s 8%t{,{–{¯{–{³{˜(‰*{–{³oR {–{˜ (, {–{¯{š (+(A>s 8’t{,{–{¯{˜(ˆ*{@0{?0(ñ] {™(‹*{–{˜ (, {–{¯{š (+(=>s ( (  (]>{–{µ {I{—{w{—{w{i#{˜(¿= (ªq(lŠ(Ôo*V( }›}œ*0 @(g -{›{¯{œ(…**{œ{›{¯(r_(«]*V( }}ž*V{{ž( ,*V( }Ÿ} *V{Ÿ{ ( ,*:( }¡*0I{8L {5L (EErR9p+[t(&{ÜK {I+Ft-&{ëK{I( ,È{ëK{I( ( -¬( {I rR9p(ñ -8{¡o ,r"ëps(ãiol*²( }Ï}Ð}Ñ}Ò}Ó*0 0{Ï{Ð{Ñ{Ò{Ó{Ó{I(,*(  *0;K(ï ríp(ñ ,'(ò (,´3(ò t«- {EZ(– **V(L }Ô}Õ*º{Ô{B8{Ô{E8{Õ{?8{Á;(i*(á *&sè *:(! }Ö*f{Ö{¯(›`(Çn*’(" }×}Ø}Ù}Ú*0µM{# {ÿ {# {þ { {# { {# {ð ,(”sû£(¤(+&+ ( ]{×{µ{×{½{Ø{w(F@{Ú(Ú (Û (¸T(¤?{Ù(Ù=(ƒ (a>E1Â=(–sû£(¤(¥{I{×{¯{¥8s$ 8te  {.#(K ,¬ {.#  (K (K -• (L   oiR-(•sû£(¤(¥+{I {×{³oyRs$ 8tc{+# {×{¯{×{³{Ú (ŸU{×{¯ ( U{I {×{³oRs$ 8©ta{)#{@0on{Ø:þ9¤þÿÿ{)#{×{¯{@0(&U(Ë+&{Ú{@0(U{@0{v;ofm{@0on(i_{@0{?0(ñ]s$   (%  (&  (' (]>{×{µ{I{Ø{w{Ø{w{i#{Ú(¿={Ø{w{i#{×{·( D(7C {×{¯ (›`(Çns( (Ín*() *03N(îo3&tÞ {I<(øn3(k * (ž]* +õ(* *"(+ *V(L }Û}Ü*º{Û{B8{Û{E8{Ü{?8{Á;(i*V(L }Ý}Þ*º{Ý{B8{Ý{E8{Þ{?8{Á;(i*V(L }ß}à*º{ß{B8{ß{E8{à{?8{Á;(i*r(, }á}â}ã*0 O{á{â{ã(", s“4(, + {á{¯ {á{¯{ê8 s•4(N+,+-{á{¯ {á{¯{9 s—4(N+,+-{á{¯ {á{¯{9 s™4(N+,"(›{*Lsû£(¤(¥+ Þ&t{*L(¤(¥(= Þ*áâ&(* *"(+ *r(- }ä}å}æ*0 {æ{ä{å(¾B(,*:(. }ç*0/P{. {* {ñ{ç{¯(Y^þ(ˆ+*:(/ }è*6{è(B:*’( }é}ê}ë}ì*0 {é{ê{ì{ë(å**r(  }í}î}ï*0 &{í{ï{í{î(ë*(ì**(! *"(" *( *þ*’( }ð}ñ}ò}ó*’{ð{ñ{ò{ós0 Œ[*²(1 }2 }3 }4 }5 }6 *0 ;R{6 (7 (8 {ð{ñ{ò{ós9 (ó +*(o *þ*’(: }ù}ú}û}ü*0 ”S(ù (ø {ú{ù{·{U;{X;( D{ù{¯{­8{U;{Z;(7C{ù{û{ü( + {ù{¯{ü(~Š(¨Š(à]sY *0d(ü }ý}þ}ÿ}}}}} } } } }*0l{{{{{ý{þ{ÿ{{{{{{{(ù (ø (&,(ô +*ò(ü } } } } } }}*0 D{{ { { { { {(ù (ø (',þo *V(ü }}*n{{o þo *V( }}*b{{s; Œ[*r(1 }< }= }> *0 /U{> (7 (8 {{s9 (õ +*r(ü }}}*~{{{o (ö +*0\(? }}}}}}} }! }" }# }$*0X{) {. {0 {, {+{/{2{%{&{* {( {'  {ñ  {ò (z  (ˆ+{{t (M:{{¯(Y^(¨ þ, (¨ þ+,(z +@{!o@ {{ {(F: (  (K:(z {{ s¥4(ó+sA (B (C {$(ý*{{¯{ s§4(ø+{{#{{(hi  (ù+('/o# s©4(ú+ (®](ÌFE)×(ÌF3atBs«4{3*{d*{î4(÷ +,9{3*{c*{2* {3*{d*{î4 sÙ 8¬(½h, (œsû£!(¤!(ø +8ƒrp(‘](©]""(ò {,(sû£!(¤!(¥+{(ê.,%{{{¯(_(5`+sÙ (Û (Ú  s­4#( +$#où +¥»'{{{{# $sµ4&{{{ {#$&s·4%{"%s¹4{{µ{{#(*sF *{- (¨ þ+9 þÿÿs»4##où +¥»%{"s¿4{#sF *t@(({/*(øn@»ýÿÿ{- (¨ þ+9Ÿýÿÿ+0D(D }%}&}'}(})}*}+},*0OY( (  ( {%{&{'{({){*{+{,sÁ4*(ü **(E *&oF *’(G }-}.}/}0*0 ${.{/{0{-þ(]P*(á *&(n*:(j }1*:{1(l_*(H *"o‰Q*:(I }2*0KZohR,(  {2(n o*+,*oiR,(" {2(n o***(á *&(n*:(j }3*:{3(l_*0L(ø }4}5}6}7}8}9}:}; }<*0 [(  {<(n o* , ohR+oiR-7,rp+r)p(¥{9{Isû£ (¤(+&+, o|R+o}R {4{³{7{: (TP{4{¯{4{³{7{8(ó*( (‘ (’ (¨ þþ,%r7p{9{Is¤ (¤(¥+{4{5{7{6{;{AL (   (n o*,-{4{¯ sÓ4 sÕ4(+(‚+8ˆ(x ,E  (x (x -3 (›  {4{¯ (l_{4{¯{¥8(n+:(¦{9{Isû£ (¤(+&{4{¯{¥8(n(«**(J *"ojR*V(ª }=}>*V{={>($,*0T}?}@}A}B}C}D}E}F }G }H(K *0 Ú{GYE +8Ž8~8£{?{D{C(7:¥0o: }F}G{Foï ,G{Fo; }E}G{B{@{A{E(ê0}H*}E+¬}G{F(Ì +}F}G}H*0‡e {GYE++e{GE + ++++}G{F(Ì +}G}H Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{GE + + +++***"{H*0/{?{@{A{B{C{DsÝ4*²(L }I}J}K}L}M*0 '{I{J{K{L{M(9,*r(M }N}O}P*0 )\(q (s {N{O{Psã4*²(L }Q}R}S}T}U*0 '{Q{R{S{T{U(9,*r(M }V}W}X*0 )\(q (s {V{W{Xsç4*V(j }Y}Z*V{Z{Y(Ÿ**V(j }[}\*V{\{[(Ÿ**(Œ *"(i*:(N }]*0E]{]oO ,4{]oP (9^{¦ {› {U;{Z;þ(K^**V(Á }^}_*¦{_sñ4(2^{^|°(Q þ(ú +*(S *0^{© {› {U;{Z;*V(Á }`}a*v(9^{a{`oT (M^*r(U }b}c}d*0ò_(9^{© {›om(2^(K^{m= or ,*{b{¯{§(Å](/^( (‘+  (_ or ,*{b{¯{© {œ{ñ(Å](/^( (‘+(_ or ,* {c(_ or ,*{doT {m=(V or *:(W }e*0Ã`{e{¯{¨ {,(E:,*(9^{© {›om(2^(K^{m= {e{¯{§(Å](/^( (‘+(_ {e{¯{© {œ{ñ(Å](/^( (‘+ (_ ( *:(X }f*:{f(?,*r(X }g}h}i*j{g{h{i(>,*V(Y }j}k*V{j{k(@,*(Z *0a{¬ {›*(¥ *"{i;*V([ }l}m*0 9b{• {– {“{”(×/{l{m(@:(ê0*(\ *0!^{¦ {› {U;{[;s] *0T(^ }n}o}p}q}r}s}t}u }v }w*0F{n{p{o{v{w{q{r{s{t{uþ(;,*²(_ }x}y}z}{}|*0Oc(` ( (a (œ (b {x{y{z {{{|s 5*(c *0a{¬ {—*( *&(åh*:(d }}*F{}þ(û +*(e *0·{ª {{î4*:(f }~*:{~(D,*r(g }}€}*j{{{€(E,*(h *6{â{i;*V(L }‚}ƒ*º{‚{B8{‚{E8{ƒ{?8{Á;(i*0d(i }„}…}†}‡}ˆ}‰}Š}‹ }Œ } }Ž }*07d{ {‘ {Œ { {Ž{{’{‹s5(ü +{‹{ˆ{‰(þ*{„{¯(Y^ (ˆ+ {‡(Ç. {„{ {I{(0^{(¦/  (K:  () {ˆ( i(Ê*{†(õ. {„{  (å* (ý*() (ì*{Š,n{Š(ô {„{…{Ž(,(2 (3 -#(·oŒŒsû£(¤(¥++^{„{¯{„{¯{9s5{Ž(N+,"(¶{‰sû£(¤(¥+{„{…(hi{Ž{Œo5‰(Õ*sj *:(Ÿ }*(Ÿ *0 (  *0 (¡ *{*0-þ,$ ¹y7žt? (%5(¿+bcXXX **6(n o&5*0D*þ,5u ,)(ý +-*t? (%5t? (%5þ(À+**þþ*þþ,0þ,((ý +-*t? (%5t? (%5þ(Â+**þþ*0*u , þo)5**’(k }l }m }n }o *0ie{l {o op {l op {n 1{I{I(ñ +,&{m {I{Is{ß{w(Ä=(b +{Þ(¥ sv5(Ú+(¯Àoš 1sx5(>++,/( +(v^( sû£ (¤ (¥(û +(û {Ü{ß s~5(m +þo +*{ß(— *{Ü{ß{àþ(W,*V(ž }á}â*~(¤{á(¥{â(— *²(™ }ã}ä}å}æ}ç*0 B{ã{ä{å{æ{çs‚5(m +{å{æs„5þ( +*r(Ÿ }è}é}ê*0 {è{é{ê(X,*²(™ }ë}ì}í}î}ï*¾{ë{ì{ísˆ5{î{ï¥( +*Ò(™ }ð}ñ}ò}ó}ô}õ*0 …(¯À{ð{¸,;{ð{¶{ó{y{ó{z{ôo5‰(š](û +(û {ð{ñ{ò{ó{õsŠ5(m +þo +*:(  }ö*07u(¡ (¢ {ö{g:(»+(ßj{ös£ (¤ *0L(¥ }÷}ø}ù}ú}û}ü}ý}þ }ÿ*0 É€{ù{I {ÿ(3j3rtp( + {ù{I  sY‰ {ø{z( {ü{ûo5‰{þ{ÿ(6i(»+(äks`msŽ5{÷(äj{ø{ÿ{ú{ý{û(\,þ( +*0T(¥ }}}}}}}} } } *0Ž(¯À{,1{{{{I{{I( +(û +(û {{{{{{{{{ s5(n +þo +*0L(¥ } } } } }}}} }*0ì{ { {($, { {¯{ (H,{ {¯{ (Z, (¯À{ ,K{ { { {I (3j3rtp( +{ {I( +(û +(û { { { { {{{{s’5(n +þo +*:(¦ }*0ò{( s§ (¨ *0D(© }}}}}}}}*0 `ƒ|(H¥ {{{(­* (ª (Ï s–5{{ {{(Y,þ( +*(Ô *0£(Õ (¸ (Ö *(Õ *6ofmo‡j*(Õ *Bofmo‡jþ*V(˜ }}*z{{¯{($U(Ë+*(« **Ò(¬ }}} }!}"}#*0 †„sž5{#( + {{!s 5( +oš 1&{{µ{{"{ (§*+{  s¢5 (=  sµ s¶ (³ *r(« }$}%}&*º{%(% (­ {&(< {$(r(G *:( }'*0RV{g:{r:þ-{'o¡ +,+omj (onjsû£ (¤(¥**:(Ý }(*0W…{,< om(¢– {({,<oU ,.({,< {U;{X;sû£ (¤(¥**’(« })}*}+},*0`†{)(C: s¨5{+(Ä+{)(D: sª5{,(Ä+{+{,(< {*(r(G *(« **:( }-*b{-(œ0(Ö.(1*V(« }.}/*Ž(% {/(< {.(r(G *:(« }0*B{0þ( +*(« **(« **(« **:(« }1*:{1(G *²(® }2}3}4}5}6*0 çˆ(¯ (° (± (² (³ {c=(³ {d=(% ( (4r(< (´ {5(r{2{4(Í*{2{µ{2{¯{2{³{5{3{4(¨*{6,+s¼5  sµ   s¶ (³ *:(« }7*:{7(G *²(µ }8}9}:};}<*0 ‰(¶ (· (¸ (¹ {;( þ, 8š{;{<{z{<{~( (±*{8{µ{8{¯{8{³{:{9(¦*{~([ {:{~( (ù (ú (ú (Ii( {;{<{z(²*sÀ5sµ    s¶ (³ *0T(¬ }=}>}?}@}A}B}C}D }E }F*0 Š|B(H¥ {C¥¾oî oï ,{={¯oï (H,+Þ Þu  , oâ &Ü&Ü&{D,{C($ +(< +{C{D,a{F(± (² {C($ +(I (Ú (Û {@{A{B(‘{E{B(’(Æ (Ç +{E{={¶{?(°*{={µ{={¯{={³{B(³*{={?{BsÂ5{={>{@(`,þ( +*&D²(¬ }G}H}I}J}K*0Z{K(’E ÷›ëjÜ mÅN{Kt­& {GM {HM {FM {J{|(ö>{J{w(Ä=(b +sš5(Ú+(¯Àoš 1sœ5(>++,/( +(v^( sû£(¤(¥(û +(û {G{I{J s¤5(q +þo +*{Kt²&{VM {UM {G{J{H(û* {I(Í7  (º   (»   (¼    s¦5(= sµ   s¶ (³ *{Kt±&{SM{TM {I(¥{G{J{H(û*(F6(½ (¾  (¿  {J s¬5(= sµ   s¶ (³ *{Kt³&{WM{I {XM (H¥{I(¥{G{µ{G{¯{G{³{J(O, s®5(= sµ   s¶ (³ *{Kt¯&{OM {MM{NM{Hu9{Ht{:(K+,{I(¥s°5( +(¹.{G{J(û*(F,(  (   s²5(= sµ   s¶ (³ *{G{J(Ö.(û*{I(+,(À  (Á   s´5(= sµ   s¶ (³ *{J(],*{Kt°&!!{PM"!{RM !{QM#(‹(æ (.‰(P”(!#"(ó${G{H{I{J$( (à (’(^,*{Kt´&%%{YM&{G{JC&(#,s¸5sµ {J{Js¶ (³ *sº5(= sµ {J{Js¶ (³ *{Kt®&''{IM{ÍL('{IM{ÏL)'{JM*'{LM '{IM{ÌL '{KM'{IM{ÐL'{IM{ÉL&(T, {G{J&($,+{G{¯+(Z,,{G{J {I-,(3j3-rtp( +-( +{G{J {I {I( +{J {I){H(Ò*..( /{G{I{Js¾5{G{J *(+/(a,þ( +*{Kt¶&00{]M{M(0{]M{’M)0{]M{“M 0{]M{M 0{]M{ŽM0{]M{M*0{]M{‘M&(¯À(œ¥(• ,r‚p(¨ˆ( (>À(û +(û {G{H{J()*&sÄ5(q +þo +*(« **V(Ä }L}M*0F‘{Mo’ (¤(¥sÈ5 (= sµ {L{Ls¶ (³ *²(¬ }N}O}P}Q}R*0 S{N{´}ÝM{N{O{P{Q{RsÆ5(q +{Q{RsÊ5þ( +*²(Å }S}T}U}V}W*0 B’(Æ (Ç (È {S{T{U{V(É {W(_,*ò(Ê }X}Y}Z}[}\}]}^*0 Á•{^(å -%{[( + {\{]sË (Ì *{^ (å (Í (å þ, o’{Z(¥+( +o’{Z(¥{X{Y{Z{[sÎ5{X{Y{\ (^,þ( +*:(« }_*B{_þoÎ *(Ï *0–(Ð (Ñ sÒ5*:(Ò }`*B{`þ( +*(Ó *0–(Ð (Ñ sÖ5*(Ô *0N—(Õ (Ö (× sÔ5(4 ( +( r sØ5(= (! + sØ (Ù *²(Ú }a}b}c}d}e*0 <sÚ5{a{b{c(Û {d{d{e(_,þ(" +*Ò(Ú }f}g}h}i}j}k*0 …(¯À{f{¸,;{f{¶{i{y{i{z{jo5‰(š](û +(û {f{g{h{i{ksÜ5(s +þo# +*V(Ü }l}m*0j™(¶ (· (¸ (¹ {m{g:{l( (»+(ßj{m(4r{msÝ  sÞ (ß *0L(à }n}o}p}q}r}s}t}u }v*0 š|v(H¥ {n{¯{q{t(Z, {p{I(3j3rtp( + {p{I sY‰ {n{¯(H,{o(­*(ª (Ï {o{z( {u{so5‰{t(6i(»+(äk  s`m  sà5{n (äj{s{r(`,þ($ +*’(æ }w}x}y}z*0 ®›(° (] þ,{y{z(b,*(ò+ (— (˜ {z (è+(Jm(òhs`mogm,+sè?{w{x{y( ( (£**{y{z(b,*r(á }{}|}}*0 2œ(â (ã (ä {{{|{}(c,*{~*{*{€*r( }~}}€*:( }*B{þoå *:( }‚*~{‚{g:{u:o¸ (g,*’(æ }ƒ}„}…}†*0 '{†{„( D{…{ƒþ(ìB*ò(ç }‡}ˆ}‰}Š}‹}Œ}*0 N{‡{‰{Œ{(ƒ+(ö {ˆ{‰{Š{‹{Œs’C(è *²(é }Ž}}}‘}’*0 Ñž(@l@ÃtC {;{‘@«{; {; {; {’(i{’{;{ÿ:þþ-{Ž{¯(ƒ]þ+,P{Ž{· {(ÇB sð5{Ž{{{’ sò5(% +(Ë+***’( }“}”}•}–*0 H{;{ÿ:þþ-1{“{”{•{–sô5{;{;(& +**V( }—}˜*0[ {;{ÿ:þþ-D{;|û:(j (i‰ (n ot‰þ,{—{·{˜(FC***({ *"ol*:( }™*~{™{g:{u:o¸ (j,*V( }š}›*0a¡{;|û:(j (ái (n oòiþ,{;{ÿ:þþþ+,{š{·{›(FC**:(E }œ*0 {œ(+*²}}ž}Ÿ} }¡(ê *0±{ YE + +h+[8€{¥ìoT }Ÿ} {Ÿoï ,5{ŸoU }ž} {ž(’}¡*}ž+¾} {Ÿ(w+}Ÿ} }¡*0‡e { YE++e{ E + ++++} {Ÿ(w+} }¡ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ E + + +++***"{¡*0 {s6*(ë *0£(ì (+ @_þþ*(ë *0£(ì (+ _þþ*(ë *0£(ì (+ _þþ*(* *"(+ *(* *"(+ *(* *"(+ *Ò(í }¢}£}¤}¥}¦}§*0 -{£{¢{¥{¦{¤{§(i,*V( }¨}©*^{©{¨(¢H*’(í }ª}«}¬}­*0 "{ª{«{¬{­(o,*’(í }®}¯}°}±*†{°{®{¯{±(' +*²(í }²}³}´}µ}¶*0 '{²{³{µ{´{¶(l,*0D(í }·}¸}¹}º}»}¼}½}¾*0 8{·{¸{¹{»{¼{½{¾{º(p,*V(í }¿}À*Z{¿{À(q,*0L(õ }Á}Â}Ã}Ä}Å}Æ}Ç}È }É*0>{Á{Â{Ã{Ä{Ç{È{É{Å{Æ(r,*0T(î }Ê}Ë}Ì}Í}Î}Ï}Ð}Ñ }Ò }Ó*0v¦(¶ (· (¸ (¹ {Ó( s6(( +(ï (ð s 6(( +  (ï   (ð  s 6 (( +  (ð  s6(, +s6 (, +s6 (, +së5 {w{i#{Ï{ÊM{I{Ï{ÊM{Ëon{£;(ð (=j(²^{~{{€(v +(v +{Ìo2 {Ê{Òs6, (u+&+{Ò{Ê(i,{Ìo2 {Òs6, (u+&+{Ò(o,{Ìo2 {Ís6, (u+&+{Í(' +{Ìo2 {Ê{Òs6, (u+&+{Ê{Ò(l,{Ìo2 {Ê{Í{Òs6, () ++"{Ê{Í{Ò(p,{Ìo2 {Òs 6, (u+&+{Ò(q,{Ìo2 {Ê{Ì{Ñ{Ò s"6, (* ++'{Ê{Ì{Ñ{Ò (r,{Ï{Î{Ð(:r sñ (ò *0t(ó }Ô}Õ}Ö}×}Ø}Ù}Ú}Û }Ü }Ý }Þ }ß }à}á*0ܧ{Ô{ß{Õ{Ö{×{Üþþ{Ù{Ú{Ôs6(Z. {Û(¬* (ª (Ï {ás6(+ +{Ô{×{Ø{Ü{Ý{Þ{ß{às$6(æj{Þ{ÊM{I (.‰(`,þ(, +*:(E }â*0 {â(+*²}ã}ä}å}æ}ç(ô *0±{æYE + +h+[8€{ã¥o´ }å}æ{åoï ,5{åoµ }ä}æ{ä(o’}ç*}ä+¾}æ{å(‘+}å}æ}ç*0‡e {æYE++e{æE + ++++}æ{å(‘+}æ}ç Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{æE + + +++***"{ç*0 {ãs*6*V( }è}é*^{è{é(¢H*r(õ }ê}ë}ì*08¨{ê{¼ {ë{w{i# s06{ì(g,(û *:(ö }í*0&M{í{ÊM{I (¤(¥(û *V(÷ }î}ï*z{î{î{ïsø (ù *’(ú }ð}ñ}ò}ó*0`ò{ó( (¯À{ðo2 -%{òs26(- +{ñs46(. ++(û s66(y +þo/ +*0T(÷ }ô}õ}ö}÷}ø}ù}ú}û }ü }ý*0§©{ô{õ{ö{÷{ù{ú{ôs(6(Z. {û(¬* (ª (Ï {üs*6(0 +{ø{ýs86(æj{ý{ÊM{I (.‰(Y,þ(1 +*0 ͬ{| sM6(2 +(”? {µ{½(ö>{w(¯?(ï= u†, t†{û +?, où þ+,$(s(¤(¤(¥ (Þ++ (Þ+ ofmo«j,+ ofmo¬j,+ ofmo­j{~( o×kofm{g:{l:o -2{¯{B8,!ofm{g:{l:r¶poÕ +'+#  ( (Œ]ofmoü þo~m ,(Ö. sý 8D,þ+,(Ø. sý 8",+,'(ofmonjsû£(¤(¥+ o†   oþ .+ofmomj(sû£(¤(+&+(]+ (i? (ª*(®0(¼0(û*(i+{¯{w{i#sO6 (ð+{¯(!a  (†]-+ofmomj(sû£(¤(¥+(Ú. sý   (ÿ  ( s *Fs þ(3 +*0…¯( ,% (‘ (‘þ,( (‘ + sS6(4 +( sU6sW6sY6s[6( ( ( ( ( s]6(4 +( ( ,@(‘ (‘E ‘ñ!1aQÁ*(‘ t–&{ MrÄps¤ (¤ þ(¥*(‘ tš&{Mrps¤ (¤ þ(¥*(‘ t›&{Mr\ps¤ (¤ þ(¥*(‘ t—&{Mr¬ps¤ (¤ þ(¥*(‘ tŸ&{/Mr$ps¤ (¤ þ(¥*(‘ t˜&{M(sû£ (¤ þ(¥*(‘ t™&{M(sû£ (¤ þ(¥*(‘ tœ&{M( sû£ (¤ þ(¥*(‘ tž&{$M(×sû£ (¤ þ(¥*0 °s_6sa6sc6se6sg6si6( ( ( ( ( ( ( sk6(4 + ( ( ,> (‘ (‘E 0_½þ-AUiŽ* (‘ t–&{ Mr|ps¤(¤þ(¥* (‘ t—&{MrÐps¤(¤þ(¥* (‘ t˜&{M( sû£(¤þ(¥* (‘ tŸ&{/M(¨sû£(¤þ(¥* (‘ t™&{M,8(ÿÿÿ{M( sû£(¤þ(¥* (‘ tš&{Mr|ps¤(¤þ(¥* (‘ t›&{M+Ï (‘ tœ&{M+» (‘ t&{!M+§ (‘ tž&{$M+“0>±( ,, (‘ (‘þ,( (‘ þ(>6*þ(?6*0û³s{6(5 + oŒŒ {I(˜– sY‰ (Ú (Û (( (]‰(ðˆ( (+ (-,,( (=”s o ‹({“(  +(&E+(çŠoŒŒ(  (èˆ  ( (à (‚‘(  (  *0 I½tŽ& {ñL {ïL {ðL (@6so6 (6 +sq6 (7 +ss6 (8 +su6 (9 +sw6 (: +sy6 (; + s}6 s‡6   (< +  (< +(= + (  ( (> +(D6  (  ( s‰6 (? +s‹6 (? +s6 (? +s6 (@ +s‘6 (? +((A +(_5(  ( s *0r¾{÷L {öL {øL sm6(7 + u&,;t&{òL (_5( ( (  ( ( s * (B6*0>Âs“6(B +(C + ( ( ¥–(D +¥—(E +s *0 ²Ä{ÊL {ÌL {ËL (<6 (  (  ( , o®m+,(š0+(œ0( þþ, om+,( sû£(¤(¥+(1*0 ÔÉ(  (D6 ( ( (Þ6 (  (  (  ( s™6(F +(G +(H +(S,  (   (   s›6(I +  s6(I + (Û6   (¡+(¡+ s! *0"ÊtW& {UL {VL {AL ( (n o*9ë{ÔL{ÕL{ÜL(ž‹@Ãt}%{"J(ž‹@¨{"Jtx%  {J{I( 9„ {J{I  ( ( -h(× ,_  (T (U ,M (T   (U (U -6 (× (× -( (   {Ir: p(ñ ,  (  ***0 öÏs¡6(J + s£6(K + s¥6(L + s§6(M + s©6(N +s«6(O +s­6(P +s¯6(P +(  ( (> + (J6("  (#  ((A +(_5  ( (  (Q +(R +s$ (% (&  (S +s' *0 üÓ{¾L {½L {¿L sŸ6(K + u€&9›t€&{¹L(‰3,(( þþ,( s$ (% (& s' *u€&,>t€&{¹L (_5( ( s$ (% (& s' *r p Å8só zt&{¸L{¶L {·L    (H6*0=Ös±6(T +(U + () (* ¥–(D +¥ž(V +s' *Js³6(W +*0 C×(  (J6 (# (" (Þ6 ( (K6&*:(+ }þ*N{ËI{þ(Œ‹*r( }ÿ}}*r{{{ÿ(· +*:(, }- *Z,{- o. þ**(/ *:(‘þþ*(/ *.(‘þ*(/ *.(‘þ*(/ *.(‘þ*(/ *2(‘ þ*:(/ }*:{(X +*(/ *.(‘þ*(/ *.(‘þ*(/ *.(‘þ*(/ *.(‘þ*(/ *.(‘þ*(/ *2(‘ þ*:(/ }*:{(X +*(0 *0,Ø(‘3!t›& {M o ‹sð (1 **(2 *0Ù(‘3t& { M(3 **(0 *0,Ø(‘3!t›& {M o ‹sð (1 **(4 *0’Ú(‘E -*tœ& {M {M {M  s5 (6 *t˜&{M {M {M  s5 (6 *(7 *0 Û(‘ 3tž& {"M(8 **(9 *0.Ü(‘3#tš& {M {M s: (; **(/ *0dÝ(‘E +++*tž& {$M (×sû£ (¤(+&**(< *01Þ{(L ,$ (¶ {Ir¾Ýp(ñ , (¶ **(= *0 ßß(‘E œœœœo(  *tŸ& {+M {(M {-M {)M{/M{&M{'M{%M{.M {,M  (A6*t›&  {M9}ÿÿÿ {M(O   þ(< +*(  (  *(< *01Þ{(L ,$ (¶ {Ir¾Ýp(ñ , (¶ **0d}}}}} } } }  }  } } }(> *0 à{YE +8ã8Ò8Ô{(&E8ª}{ (NŒ {,,{ ( (=”s o ‹({“(  + {{{ { (çŠoŒŒ(  { {(o? (Ê (èˆ{ (|‘}*{(&E8Ç}rüp{ sY‰{ (( (]‰(ðˆ( (µˆ(+ (, { (-{ (NŒ(NŒ(∠{{ { (çŠoŒŒ(  (æ {("o? (Ê (èˆ{ (|‘}*}}*&}*Æ{E + + +++***"{*0E{{{{{ { { { { {s6*(= *0æâ(‘E ©©©©L (  (  *tŸ& {+M {(M {)M {*M{.M{&M{'M{%M{,M {-M {/M {I s6(5 + {I(˜– sY‰,(Ú (Û +rD p sY‰(Ú (Û (Û (( (]‰(ðˆ( (+  (- (&3/,+($ (ªsû£(¤(¥+    s6þ(ä+*t›&{M9 þÿÿ{M{M(O {M (< +(@  (†‘(  (  *(  *(/ *0ã(‘E RTP<*t–& {M{4L{+L,ä{M{4L{+L(‹ {>Lþ*t›&{M þþ****(/ *.(‘þ*(/ *0eä(‘E *t—&{ M þ*t–& {M{4L{-L +á(A *0æ(‘3t—& { M(B **(/ *0¡ç(‘3ut–& {M{4L{+L,\{M{4L{+L {M{5L(¸ˆ ,7( (¹ˆ ,((‹ {AL((n o**(‘3t—&{ M( þ**V(C }}*R{{(C6*Ò(D }}}}}}*0 gè{{öL {{ùL {{øL {{¿ (Ü6þ{{{{(= +{ÐL(E6*’(E }}}}*0 /é(F (G {{{{s•6*V(H }}*0#ë(I (J {{s—6*:(K }*:{(18*V(K } }!*R{ {!(38*(L *0.í(83#tX& {YL {XL sð (1 **(M *0î(83tZ& {\L(3 **(L *0.ï(83#tX& {XL {YL sð (1 **:(N }"*0-ð(83"tY& {ZL {"s5 (6 **(O *0ñ(83t[& {^L(P **(Q *0;ò(830tW& {VL{>L,{UL {VL s: (; **(R *0zó(8E64(83)t[& {_L (×sû£ (¤(+&***tW& {VL{>Lþ,¯ {VL*(R *04ô(83)tW& {VL {AL (  (n o***(R *R(83 (G6**:(S }#*:{#(I6*r(T }$}%}&*0 Èõ(U (V (W {ÊL {ÐL{ÌL{ËL{${% (<6( (  (  (i? {%(ª* {${$ (Ú.   (n oé.(; +{& (â-(L+ (L,*0øoù .%(ão¯ {Isû£ (¤(+&+o¯ ,`¥« oX oï , oY ol,+Ö+×Þu , oâ &Ü&Ü+o† {I - {I+\{IrJ p( Œ’  ,4 u¼  ,   (x ¥|o¡ + o& +rR9p(    sY‰*J2|0kb{ 9 sß6(N+{"9 sá6(N+{9 sã6(N+{9 så6(N+{$9 sç6(N+sZ *0ßú(¶6 ([ (\ (] (^ (_ ,+ ,+X,+X,+X1+,,+ ,+X,+X,+Xþ,(äsû£(¤(+&+(r@l,+,+,(^* ,(`*,(b*,+(` þþ,(^*({ þ,+,(j*(`*,(rþþ+,+H,C(rE +þ+,+ ,(rþþ+,+,(rþþ+,(åsû£(¤(+&+*0Åû(‰@·tl& {™L(ž‹@Ÿ{™Ltx% {J{I( 9~{J{I ( ( -e( -9(ö> {I{w(´=(n þ,+{I {I(ñ +,( {šL sa (b **0aü{Ä s`m onj (i?{g:{h:oc (ª*  (; +s7(Y +(Z +þ([ +*0˜ÿ{Ä {à {Æ {Ç {ÏL{ÊL{ÎL{ÌL{ÍL(]+ {¯  s7(d +(‰þþ (µ6  {I {I( + {I {I( + {I(Ò*  (   (d (‰E,(+*+&tg&{†L++ti&{‹L++ {I(Ò*(  (,i(/j(6i(»+ {I {I (Ïi s7se o5‰ (9i*0 (‰E½uµ9r p F3só z{¯(h(c (c (\ + (k*tk& {–L {—L {¯(n(c (c  (\ + (k*ti&{L {¯(d(c (c  (\ + (f (/i(k*tj&{L{ŽL {’L{‘L{¯(] +  (r3(k* (rE $Y,rN ps¤ (¤ (^ ++C(Yk+;([k+3r$æp{¯{¥8(z (z (0 (YP(_k+(]k  (Ê (f (/ismk(k*(ak  (Ê (f (/ismk(k*0 1{Ä {à {ÊL {ÉL onjowj  ($,{¯{¯{$9  s7(N+{g:{¯{¯{æ8(^(Ùj,A{g:(Ñi(×j(G þþ,(æsû£ (¤ (+&++(‰Eîd(¸6  ,@ (g (h  {¯(f(c (c  (\ +(i (1i8×(»68Ätm&{›L {¯(j(c (c  (\ +-þ+,(ç sû£ (¤ (¥+,!(Yk(Ê (f (/ismk(k+B(k+:tg&(¸6  , (g (h  8ÿÿÿ{ˆL 8÷þÿÿ {g: (Ûj*0I(ž‹E^‘*ty% {J(ž‹3è{Jtx% {J{I {J {J{J{J sj (k *tx% {J{I {J(í oc‰sj (k *tz%{J(ž‹@Uÿÿÿ{Jtx% {J{I {J {J{I {J{J (û+ sj (k *0 ªs`m (½6 9‘ (l (m (l (n (l (o {|{µ{½(ö>{w (“?(­?(ï=u†9't†{û   ofmo‰j,  o¤mþ+9ó{û   ofm  {g:{q:  ( k3 t  { :{¬:+ rWps\ z  (w†9“ofmojs 7{d:($+ofm  {g:{l:([ (\ (Ÿ+(ž  (q+(  ( s 7o¸+, sp (q *****0 s/7*0 ‚ s17rŽ po_ + (¿6 Œ¶,+ r¨9ps‚ zŽi Õ$ Y2$ £@os ¤Õ$XX3Ü þ(` +*0 ;s`m ({ þþ, oK &+ofm{g:{q: ( k3 t{ :{«:+ rWps\ z s 7oa +s7ob +ua$,,ta${H {H   ov sw +(G†sx (G†sy sw (z  ({    (c +(Õ†  s7od +  s7oe +{³oÐUoÌU(| (} ,+ s7o¸+-; o~  s7of +(»sû£(¤(+&+ s7o¸+,{g:{y:{ø:( þ+, {²þ+,'(Òofmonjsû£(¤(¥+{¯{½9,+ {³s7(âk {g: (Ûj (u†  s7og +&-o¾j  s7og +&+   !   (À6"-To¾j-+##(Þ $${íHo€ - {³oÐU"(†ˆoÍU Þ* Þ& Þ"to ‹(¤(¥ Þ&*A "0 Á{Ä onj (Î0  (n o×0,(¼0+(¾0 (Ì0  (n o×0owjs`m{¯ {¯{$9   s37(N+{¯ {¯{%9   s57(N+ (i?{g:{h:oc (ª*  (; +  (¸6,ÝÊ(‰@Ÿtl&{˜L(O‰@…{™L{šL{g:{q:( kþ9S (¾6:Ï :À,(Ñi+(Ïi(é (®0 (s+(Ç -[{¯(Y^{g:{h:oc o† o† .#(èonjs(¤(¤(¥++,{g:( (Üjݢݚݒ( (‚ ( (ƒ ( („ ( (… ( († ,(h +Þ)Þ$ÞÞt(¤(¥Þ&*AKX£0 c(Î0 (n o×0,(¼0+(¾0 (Ì0 (n o×0 s97sI7(i +(j +*0*,(ðsû£ (¤þ(¥**0*,(ësû£ (¤þ(¥**Þ,2sW7{g:{s:{Š:(k +sY7oµjþ(+**0`*,[,s>¤ (¤þ(¥*o~mo† 1(ísû£ (¤þ(¥*(îsû£ (¤þ(¥**0£(Ç6(– (5+,+G,(– (5+þ+,({Ir² p(ñ ,{¯{B8+þ+,(ïsû£ (¤(¥+,(ðsû£ (¤þ(¥**0*,(ñsû£ (¤þ(¥**0*,(§sû£ (¤þ(¥**0,*(– (5+,o‡ sû£ (¤þ(¥**07(o ,. (ˆ (ù{ß:{Isû£ (¤þ(¥**0 ø{w s[7(_+ ¥ oÇ oï 9«oÈ {ß:{I(n('R{ß:{I(=>(‘={½{ß:{I(n(ô={µ{ß:{I{w{i#(¿={µ{ß:{I(¾=8Jÿÿÿ Þu , oâ &Ü&Ü &*"ºÜ0 É{w oÅ oï 9ŽoÆ  {Ñ:{I(øm(8R {Ñ:{I(5>(‘=(5>{µ {Ñ:{I{w{i#(¿={µ {Ñ:{I(¾=8gÿÿÿ Þu , oâ &Ü&Ü&*­0¦  (: (‰ (Š (ak (Ç6(Ê6s7(Ë6 (Å6rëøp sY‰( ( ($‰rR9p()isŸk{¯  sƒ7{¯{š8{¯{›8{¯{ 8{¯{œ8{¯{§8{¯{¢8{¯{ž8{¯{8{¯{¡8{¯{Ÿ8(¤ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (l +-( sû£ (¤ (¥+  (Í6 (Ê (‹ (/ismk(k(â-sŒ *0´ !{È {Ä onj owjs`m(äj(j^(J (¦  {¯ {¯{"9   sK7(N+ {¯{B8,{Ir² p(ñ +, (– +{¯{¯{!9(Ž^ {¯ {¯{$9   sM7(N+{¯ {¯{%9   sO7(N+{¯ {¯{9   sQ7(N+{¯ {¯{é8   sS7(N+{¯ {¯{9   sU7(N+ ,{g:{s:(k+{g:(Új(i?{g:{h:oc (ª*(; +{|(‰3f  (È6(Å6,/(Yk(Ê (f (/ismk(k(â-sŒ 8l (k(â-sŒ 8V (¸69¦(g ( (Ç6(Å6{I{I(:{I(f ( ($‰{g:{y:(/i rR9ps‰k(i (Ž (1i(â-sŒ 8›(‰E<9ÊÌer p c5só ztl&{˜L(O‰@ñ{™L  (– (5+,(úsû£!(¤!(¥+ (Ä6(Å6,U,(Ñi+(Ïi""(é (®0(¼0 (s+##(Ç $$(k(â-sŒ 8¥{g:{q:( kþþ,{g:{q:(â-sŒ 8m(k(â-sŒ 8W{™L (k(â-sŒ 88tg&{‡L%(Ê6(É6 s]7(Ë6 (Ä6(Å6(Ç6 %(:&&¥(Î6&(1i(â-sŒ 8ªti&{ŒL'(É6 s_7(Ë6 (Ä6(Å6(Ç6sa7'(m +sc7r¾Ýp(n +((Í6(/i(k(â-sŒ 8tk&{–L)(Ê6(É6 se7(Ë6(Å6(Ç6 (Ä6)(k(â-sŒ 8¨tj&**{L+*{ŽL,*{“L-*{’L.*{L/*{”L0*{‘L'-sg7'(m +01þ§1si7(o +(so7r¾Ýp((p +(n +2(Í6{g:{s:{Š:3o~m(â-(L+4{¯,+'.(] +55(r33  (È6(Å6(k(â-sŒ 8t/sq73(k +5(rE ý/rN ps¤!(¤!(^ +8f(Ê6 ss7(Ë6 (Ä6(Å6+( þþ,(ýsû£!(¤!(¥+(Ç6(]k8õ (– (5+,(þsû£!(¤!(¥+(Ê6(Ç6 (Ä6(Æ6(Ì6([k8ˆ(Ê6-þ(Ç6(Æ6(Yk8V5tc&77{{L 7{|L8(Ê6 su7(Ë6(Ç6(Å6 (Ä6(Ì6(Ïi(é (®0(¼0 (s+##(Ç ${¯(z sw78(Ã*(Ä*$(_^99( :9(ƒ ;;o÷ /(ÿsû£!(¤!(+&+;o÷ 1(sû£!(¤!(+&+o~m+4BþN+Bs{7(r +E>{¯(^(×*Fofmonj (Ú*GGu‹ ,(f +GtŠ HH{l(f (‹ 26E(2(p +(p +(/ismk(kFGsŒ +;th&II{ŠLBI{‰LJ  BJ(Ï6(• K(– G(— F{g:K(Ûj{¯(O`,{¯(P`þ+,(ôsû£!(¤!(¥+{¯ {¯{ 9   s…7(¹+,As‡7{¯{³(¡P (-P-(sû£!(¤!(¥++FGs˜ Þ$t!(¤!(¥(â-s˜ Þ *Au Ž $0 @#(i ($nEÙ‹¦×øtw {„;þ(Ó6*ty {ˆ; {‡;{t;ofm (Ó6s‰7(s +,s™ (š *om, (L]8Hÿÿÿ*tv{ƒ;{‚; +tx{†; {…; (Ñ68ùþÿÿ*tu  {;8Øþÿÿt{  {Š;(Ò6*0 ø'(i (Wn3;t† {š; s‹7ofm(s +,{š; ofms™ (š *(Wn31t† {š;om, {š; (,]8yÿÿÿ(WnE3*t‡{œ;{›;(Ò68'ÿÿÿtˆ{;8ÿÿÿJs7þ(t +*0()s7 (u + s‘7s› s“7oœ *Ús•7(s +,s—7(v +þ+,s™ (š **0; {¯ (O]($nþ,{¯ (k]ofm(Õ6**6s›7*0 ø*(i ($n@tv {‚; ofmo³j,d{ƒ; {‚; ofm{Ø:,þ+,s7 (w ++, s * (Õ6(Ú6*($n3Ptv{‚;om,:{ƒ; {‚;  (L]8ÿÿÿs *0m,{¯ sŸ7(§ +, s *(¥ s¡7o’j(_+ (×6s (x + (ž (Ÿ s *0 (Ù6*0))s£7 (u + s¥7s› s§7oœ *0"-(‰3tj& {ŽL(rþ**bs»7þ(y +*0 ú4s©7(z + s«7({ + (  (¡ s­7(| +s¯7(Ä+{¯{³s±7(Ô+(¡*s³7(} +(Ì0sµ7(~ +( +(Ì0(Ã6s·7(€ +( + (‚ +   s¹7(Ä+(¾0(Ý6s¿7(Ä+(Î0sÁ7(~ +(Î0(Ã6(¼0(Ý6sÃ7(ƒ + sÅ7 („ + sÇ7sÉ7  (… +(† +(‡ +(ˆ +  (¢  (£ (Û6{µ{¯{³(¢*s¤ *V(L }'}(*º{'{B8{'{E8{({?8{Á;(i*V(L })}**º{){B8{){E8{*{?8{Á;(i*V(L }+},*º{+{B8{+{E8{,{?8{Á;(i*V(L }-}.*º{-{B8{-{E8{.{?8{Á;(i*V(L }/}0*º{/{B8{/{E8{0{?8{Á;(i*r(¥ }1}2}3*0 S5{ÄL {ÈL (Ïi(é {1(®0(¾0{3{2(s+ (Ç sy þ(‰ +*V(ª }4}5*V{4{5($,*:(¦ }6*0O(f {6sy þ(‰ +*:(§ }7*j{7sí6¥­þ(Š +*V(¨ }8}9*~{8sï6{9¥‰þ(‹ +*r(¥ }:};}<*0 S5{ÄL {ÈL (Ïi(é {:(®0(¾0{<{;(s+ (Ç sy þ(‰ +*r(© }=}>}?*0 ;6{­L {ªL uz&9ëtz& {±L(‚ {±L(ª (Ïi(é {=(®0(¾0{?{> (s+(Ç {={¯(z {={?së6(Ã*(Ä*{3<(ü](Ô   o÷ 1"(¾sû£ (¤ (¥(Œ ++(Œ + sñ6(Y +þ( +*ty&  {°L {={>{?só6 ¥þ(Ž +*r(¥ }@}A}B*0 g7{ÄL {ÈL {ÂL -F(Ïi(é {@(®0(¾0{B{A(s+ (Ç sy þ(‰ +*þ(Œ +*( *&(åh*V(¨ }C}D*j{C{Dsy þ(‰ +*r(« }E}F}G*0ž8{Go¬ { {Go¬ {{I sù6{E{¯(Y^{Fo~j( +(¨ þþ, (äsû£ (¤ (¥(Œ ++(Œ +sû6(Y +þ( +*Ò(¨ }H}I}J}K}L}M*0 ˜9{M9…{M (­ (¾0 {K( {H (¾B{L{I(Ž+(9+({+ ($ (" (% {H{Jsý6¥7þ( +*þ(Œ +*Ò(¨ }N}O}P}Q}R}S*0 8:{Q(‰EWO{Q(‰39{Qti& {ŒL {N{O{Ssé6¥þ(Ž +*þ(Œ +*þ(Œ +*{Qtg&{‡L {N{O{Ssõ6¥þ(‘ +*{Qtj& {Po±j9Wÿÿÿ {”L {‘L {N{O{Ss÷6¥(Ž +{N{O{P{R{Ssÿ6(Y +þ( +*:(v }T*B{T(H,*(¥ **V(L }U}V*º{U{B8{U{E8{V{?8{Á;(i*(Ý *"(Þ *(J *.oï†þ*(® *"o ‡*(¯ **:(° }W*:{W(!‡*(± *"oô†*(J *.oï†þ*(² **þoò†*(J *"oî†*V(7 }X}Y*R{Y{X(¼U*V(³ }Z}[*0,J{[o‡o´ {[o‡{Zoµ *V(³ }\}]*0,J{\o‡o¶ {\o‡{]o· *(± *"oô†*(J *.oï†þ*(² **þoò†*(J *Ro ‡,*þo ‡*V(7 }^}_*R{_{^(¼U*V(³ }`}a*0,J{`o‡o´ {`o‡{aoµ *V(³ }b}c*0,J{bo‡o¶ {bo‡{co· *0D(¸ }d}e}f}g}h}i}j}k*0ˆ;s!7{foe + {d{³oÐU{foÌU (| (} ,+s#7{fo¸+-Ao~ s%7{fof +(»{fsû£(¤(+&+{kofmoj{kofm  {g:{l:(/j(Æh{e{g:{y:s'7{fo¸+,()i+(ò (ó (åk(,i {g{d{³ {f s)7{j{f (¹ ( (ãk {kofm  {g:{u:o¸  oÍk{k o¼m {f(u†{h s+7{fog +&9 o¾j{is-7{fog +&{j-%-+ (Þ {íHo€ +{d{e{f{g{h{i{j (À6(†ˆ*{d{e{f{g{h{i{j (À6(†ˆ*(º *"oþ†*V(L }l}m*º{l{B8{l{E8{m{?8{Á;(i*V(L }n}o*º{n{B8{n{E8{o{?8{Á;(i*²(» }p}q}r}s}t*0 ={Ä onj (‰E#8.8'8 88tj&{L{ŽL{’L{‘L{p{¯{s{q(] + {t(¼ 9{t  (¼ (¼ :Ù (½ (Ú   (½ (Û  {r- (rþþ+,(é sû£ (¤ (¥+{p  (¥+{p{¯ (O]($nþ,B{r,(; sû£ (¤ (¥+{p{¯{¤8( 8Ê ( 8½(êsû£ (¤ (’ +8ž (rE LLL4rN ps¤ (¤ (’ ++J{p{¯{®8( +2{p{¯{°8( ++{p{¯{±8( {g:{s: (k Þt (¤ (¥ Þ*As‚r(¾ }u}v}w*0 )>(¿ (À {u{v{ws77*’(· }x}y}z}{*0 ,(Ïi(é {x{{{y{z(s+*:(Á }|*0°(¬ (­ {|(“ +*( *0?(à (“ (” sð *’(· }}}~}}€*0 ,(Ïi(é {}{€{~{(s+*:(Á }*0°(¬ (­ {(“ +*(Ä *0)@(¬ (­ (ýsû£ (¤(¥*r(Å }‚}ƒ}„*0 65(Ú (Û {‚{„{w{i#{ƒ(J,*Ò(Æ }…}†}‡}ˆ}‰}Š*0 ¥F{Ä {Å onj s`m (i?{g:{h:oc {†(ª*{… (; +(®0{…{‰s;7s=7{‡(” +(Ç  {Š,{g:(Új+(‰Eöööööötj&  {L  {•L  {ŽL {’L {L {‘L{…{¯ {ˆ (] +s?7(• +(®0{…{‰sA7sC7{‡(” +(Ç (r3"sE7(– + (— +(È sÉ +  sÉ (Ê (Ë sÉ +  (È sÉ   (Ë  (Ê ¥ÌoÌ oï ,]oÍ (Û  (Ú {Š,{…{¯(‰]+,(c sû£(¤(¥++šÞu , oâ &Ü&Ü&{Š,{… sG7(˜ ++sÎ *òk]V(L }‹}Œ*º{‹{B8{‹{E8{Œ{?8{Á;(i*V(L }}Ž*º{{B8{{E8{Ž{?8{Á;(i*V(L }}*º{{B8{{E8{{?8{Á;(i*V(L }‘}’*º{‘{B8{‘{E8{’{?8{Á;(i*V(L }“}”*º{“{B8{“{E8{”{?8{Á;(i*V(L }•}–*º{•{B8{•{E8{–{?8{Á;(i*V(k }—}˜*05*{—{¯(S`-(ì{˜sû£ (¤(¥**V(k }™}š*05*{™{¯(S`-(ì{šsû£ (¤(¥**(S *.{Ú:þ*(Ï *(ó*(Ï *(ô*’(Ð }›}œ}}ž*0 !{›{ž{{œ(:*(Ñ *"{ß:*(Ï *(õ*²(Ð }Ÿ} }¡}¢}£*0 &{Ÿ{¢{¡{£{ (:*0”}¤}¥}¦}§}¨}©}ª}« }¬ }­ }® }¯ }°}±}²}³}´}µ(Ò *07G{´YE +8·88{©9í{©}ª{ª(­ }«{¦o±j9¥(¼0 {«{§(  {¤(¾B{¨{¥(Ž+(9+({+}¬{¬($ (" }­{¬(% }®{®¥7og }³}´{³oï 9Ø{³oh }¯{­{¯o¬ {}°{­{¯o¬ {}±{¨{{(ò (ó (åk}²}´ ( ( ($‰rR9p{° {²{±sŸk}µ*}²}±}°}¯8ÿÿÿ}´{³(+}³}®}­}¬+}«þ§}ª+}´}µ*0e {´YE+8h{´E + +!+ +++}´{³(+}´}µ Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{´E + ++ +++***"{µ*0?H{¤{¥{¦{§{¨{©þ§si7*(Ñ *"{ß:*r(k }¶}·}¸*0‡I{¸(‘ ,{¸ (’ (“ +{· {¶{¯(e`,(ûsû£ (¤(¥*{¶{¯(^-(üsû£ (¤(¥**(Ï *(ö*(Ï *(÷*V(ª }¹}º*V{¹{º($,*(Ó *0~(f (g (XP*0|}»}¼}½}¾}¿}À}Á} }à }Ä }Å }Æ }Ç}È}É(Ô *0 äM{ÈYE +8”8C838£{¾¥ÎoÕ }Æ}È{Æoï 9U{ÆoÖ }À{À(× }Á{À(Ø }Â{Á{ÛL}Ã{»{¯(š0(·.{Â{Ã(°+{»{½{¿(Ö.{Â(Ê {¼{Á(G,( }Ä{Ä¥oS }Ç}È{Çoï ,6{ÇoT }Å}È{ÅsÁm}É*}Å+½}È{Ç(™ +}Ç}ÄþN+}Ã}Â}Á}À8›þÿÿ}È{Æ(š +}Æ}È}É*0¥e {ÈYE+8€{ÈE ++5++++)}È{Ç(™ +}È{Æ(š +}È}É Þ t   Þ&8fÿÿÿþ,z*lˆ ê{ÈE +++ +++****"{É*07M{»{¼{½{¾{¿þN+s{7*(Ï *(ø*:(8 }Ê*F{Êþ(ƒ]*V(L }Ë}Ì*º{Ë{B8{Ë{E8{Ì{?8{Á;(i*:(V }Í*¾{Í{¯{Í{¯{9(¤ (nþ(ƒ]*(Ù *þ*(Ù *þ*V(Ú }Î}Ï*^{Î{Ïþ(Ñ6*:(Û }Ð*0;J{Ð  {g:{r: , {Ð (• (Ü þ(Ñ6*(Ü *(Ý *6{g:{k:*(Þ *0CKoß {g:(Üj{g:(k(Ûj(onjsû£ (¤(¥*(Ù *þ*V(à }Ñ}Ò*0&N(á (â {Ñþ, {Òþ**r(Ú }Ó}Ô}Õ*0 {Ó{Ô{Õ(Ö6*²(ã }Ö}×}Ø}Ù}Ú*0 YL(ž (Ÿ {Ö{×{Ø{Ù{Ú{Ùo~j{Ú(Š+{×:("]þ(Ø6*:(8 }Û*0‚M{Û{¯ (O]($nþ,{Û{¯ (O]($nþ+,={Û{¯(X] {Û{¯(X] {;{ü:{;{ü:þ**V(V }Ü}Ý*Z{Ý{Üþ(ƒ]*:(S }Þ*V{Þ,*{Ø:þ*V(Û }ß}à*0 ¹O{ß{às™7 {ß {à  o³j,Js`m(j^(¦ (J {ß{à(¤ (Ü (Ù6(Ÿ +(Ü {ß{à{ß{¯(^(Ö6oµjþ(t +*(Ý *6{g:{k:*(Þ *0CKoß {g:(Üj{g:(k(Ûj(onjsû£ (¤(¥*(ä *0 &{¾{¿{À{Á{Â(h5*(å *6{Ä(Ü6*r(æ }á}â}ã*j{á{â{ã(º6*V( }ä}å*0\{ä{å{g:{l:onj( +{ä{å{g:{l:onj( +{ä{å(Î**(Ê *&s`m*r(ç }æ}ç}è*0 {æ{ç{è(¼6*²(è }é}ê}ë}ì}í*0 *{é{ì{ê{ë{í(Â6*r(é }î}ï}ð*0 {î{ð{ï(¹6*’( }ñ}ò}ó}ô*Ö{ñ{ò{ó(,8{ñ{ò{ô(-8*²(» }õ}ö}÷}ø}ù*0 ˜P{à {ËL (i?{g:{h:{÷oc {ø(ª* s`m {õ (; +{õ(®0{ù{ö(i+Þt(¤{÷(¥Þ*N(vr( }ú}û}ü*r{û{ü{ú(· +*r( }ý}þ}ÿ*0IQ{ý{¯ {þ{w{i# {ÿs½7{g:{h:{ÿoc (ð+*²(è }}}}}*0 *{{{{{(Â6*’(ê }}}}*0 "{{{{(Ð6*(ë *N(â-{Ès˜ *(ì *0R(í (î (ï sð *(ñ *0R(í (î (ï *0lS(o -+(Þsû£ (¤(+&sÑ7((+ (¢ 9 (¢ (¢ :(£ {¯{³{¯{¦8 o‰Q(H-(ßsû£ (¤(¥+ (‡QE1(ßsû£ (¤(› ++h tÂ{(0oHQ+Q{¯ o‰Q(k]ofmo½ju[,t[{w=+(ßsû£ (¤(› +(´ko5‰(7i*(àsû£ (¤(œ +*0 àT{èL {äL {æL {éL {åL{©L{çL{åL{ªL($,uy&,ty&{°L+(Ü sû£ (¤ ( +{| sÏ7(ž + {I(Â- s!5 (¤ (¥+ (Ò*  (   (d  (:-& (/i(¶ko5‰(7i8t(é {µ{½  {w(¤?(ã=(ƒ (a>E™(á sû£ (¤ (œ +8¹(ƒ t`(„ ( -Å{(# {|(U oÕ ,(Ý sû£ (¤ (¥+(²ko5‰(7i+?(ƒ tg(„ ( :Hÿÿÿ{2#  (Ë7{g:{s:{¯{¦8( (k{Ir¼ p( {I( +{I{I( +(Î*sÓ7 (Ÿ +(ò (ó (% (­ ( +(ò (ó (% (­ (‚ +{g:{t:(ºkE( +!(,8(-8(18{µ{¯{³(% (­ sÕ7(Ô+(¡*( *sô *0²V{ìL {êL {ëL (Ì7 (»  (º  (¼ (Ö.s`m(â-(z (œ0(1(õ (ö (S,(  (  (38   (¡+(¡+sô *0 €W{hM {iM (Ì7 (» (º (¼  s`m(â-(z (Ú0(À (ã0(Ö.(L,( s÷ *’(ø } } } } *0 e"{ { { { rÐ pŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (:*:(¯ } *08Xo•Q { oÕ (V (^ (n oT , o˜Qþ**(ù *b{×:{ß:{Isy *(Ê *&s`m*0 ×Zså7 {¯ (O]($nþ,]{¯(X] sç7{;{;(„+,*sé7o~j(\+, (ú {;{ü:oû (ü **(X` , (¢ oý þ(å+*(O]($nþ9(j](; (: ofm{g:{k:oþ ,ofm{g:{k:oþ +_{³{Ñ8  së7($¥(¡P(-P,+-{³{Ò8  sí7($¥(¡P(-P,0{9  sï7ofm{g:{p:(N+þ+,#sñ7ofmo~j(k+***0 Ù\sÿ  só7  tm}( tm })tm}*tm}+tm},tm}-s (  +(¡ +,(ú (¡ ++,(ú s *(ú 8'ÿÿÿ0 Ta{¯ s (¢ +(£ + !sß7(¤ +¥Øs  (¥ +(¦ +(  (   ¥Øo   oï 9¦ o   o ( onj{g:{h:oc ¥«oX oï ,-oY  {;{ü:oþ , o#l+Í+ÊÞu , oâ &Ü&Ü&8Nÿÿÿ Þ u , oâ &Ü&Ü & *Ñ; }·40 Òbs 8 {¯ (O]($nþ,p{¯(X] s8{;{;(„+,*s8onj {g:{h: oc (\+, (ú {;{ü:oû (ü **(X`,(¢ oý þ(å+*(Z`,*(O]($nþ9æ(j](; (: ofm  {g:{k:oþ ,ofm  {g:{k:oþ +4ofm(xM,#ofm  {g:{s:{…:þþ+,0{9  s8ofm  {g:{p:(N+þ+,#s8ofmo~j(k+***0 Ù\sÿ  s8  t}}R t} }St}}Tt}}Ut}}Vt}}Ws (  +(¡ +,(ú (¡ ++,(ú s *(ú 8'ÿÿÿ0 Ta{¯ s (¢ +(£ + !s8(¤ +¥Øs  (¥ +(§ +(  (   ¥Øo   oï 9¦ o   o ( onj{g:{h:oc ¥«oX oï ,-oY  {;{ü:oþ , o"l+Í+ÊÞu , oâ &Ü&Ü&8Nÿÿÿ Þ u , oâ &Ü&Ü & *Ñ; }·4( *f{g:{k:s s *Ò}}}}}}( *0Ý{YE +8‰+x8¡{¥»o }}{oï ,V{o }{{¯{(wM,"}{{g:{k:}*+}+}{(¨ +}}!}*0’e {YE+8m{E + ++++}{(¨ +}!} Þ t   Þ&8yÿÿÿþ,z*Yu Æ{E + + +++***"{*0 {{!sß7*Ò( }}}}}}*0 -{{{{{{(×7*(‹ *2(@l þ*:({ }*.{þ*V(V }}*R{{(1P*V(V }}*R{{(1P*V(L }} *º{{B8{{E8{ {?8{Á;(i*ò(_ }!}"}#}$}%}&}'*0 Yol,+{%{;{ü:oþ ,1{!{"{#{${%{&{'(×7**Ò( }(})}*}+},}-*0 -{({){*{+{,{-(×7*V(L }.}/*º{.{B8{.{E8{/{?8{Á;(i*V(L }0}1*º{0{B8{0{E8{1{?8{Á;(i*:( } *V{ ( þo *:( } *V{ ( þo *:( } *F{ o þ*:( } *V{ ( þo *:( } *F{ o þ*²( } } } } } *0 Jg{ o! (" (# { {¯{B8,{ {¯(wM+,.{ { 9 { sõ7{g:{p:(N+þ+,.{ {9 { s÷7{g:{p:(N+þ+,"(Ûonjsû£(¤(¥+{ oý s$ (© +:U{ { { 9{g:{p:(Ž^:{ oý s%   s& (ª +9ß  (' (  {  (O]($nþ,Zomj{ {w{i# (“”  ( O(È+omj(Þonjsû£(¤(¥8zomj{ {w{i# (“”  ( O(È+omj(ßonjsû£(¤(¥8 rÚ ps\ z  (g 9{ oý s(   s) (ª +9É  (' (  {  (O]($nþ,Oomj{ {w{i# (“”  ( O(È+(Üonjsû£(¤(¥+^omj{ {w{i# (“”  ( O(È+(Ýonjsû£(¤(¥+rÚ ps\ z+*( *f{g:{k:s s *Ò}<}=}>}?}@}A( *0Ý{@YE +8‰+x8¡{=¥»o }?}@{?oï ,V{?o }>{<{¯{>(xM,"}@{>{g:{k:}A*+}>+}@{?(¨ +}?}@!}A*0’e {@YE+8m{@E + ++++}@{?(¨ +}@!}A Þ t   Þ&8yÿÿÿþ,z*Yu Æ{@E + + +++***"{A*0 {<{=!s8*Ò( }B}C}D}E}F}G*0 -{B{C{D{E{F{G(Ú7*(‹ *2(@l þ*:({ }H*.{Hþ*V(L }I}J*º{I{B8{I{E8{J{?8{Á;(i*ò(_ }K}L}M}N}O}P}Q*0 Yol,+{O{;{ü:oþ ,1{K{L{M{N{O{P{Q(Ú7**Ò( }R}S}T}U}V}W*0 -{R{S{T{U{V{W(Ú7*V(L }X}Y*º{X{B8{X{E8{Y{?8{Á;(i*V(L }Z}[*º{Z{B8{Z{E8{[{?8{Á;(i*:( }* *V{* ( þo *:( }+ *V{+ ( þo *:( }, *F{, o þ*:( }- *V{- ( þo *:( }. *F{. o þ*²( }/ }0 }1 }2 }3 *0 g{2 o! (" (# {/ {¯{B8,{/ {¯(xM+,.{1 {9 {1 s8{g:{p:(N+þ+,.{1 {9 {1 s8{g:{p:(N+þ+,"(Ûonjsû£(¤(¥+{3 oý s4 (© +:Š{1 {1 {9{g:{p:(Ž^:3{/ {¯(xM9{3 oý s5   s6 (ª +9ß  (' (  {1  (O]($nþ,Zomj{0 {w{i# (“”  ( O(È+omj(àonjsû£(¤(¥8™omj{0 {w{i# (“”  ( O(È+omj(áonjsû£(¤(¥8?rÚ ps\ z8.  (g 9{/ {¯(xM9{3 oý s7   s8 (ª +9É  (' (  {1  (O]($nþ,Oomj{0 {w{i# (“”  ( O(È+(âonjsû£(¤(¥+aomj{0 {w{i# (“”  ( O(È+(ãonjsû£(¤(¥+rÚ ps\ z++*Zs48{‰:þ(« +*0+j{¯(` {¯(€M (Ð (Ï {¯(M{w{i#{¯{Ò8(J,{w{i#{¯{Ñ8(J,{g:{t:(ºkþþ-þ+,{w{i#(J,+ sÁmsÁms³ (9 (ûjsÁm(ð (üj(Ö. (Ð*(Ö.(Ð*(Ö.þ(Ð**0 ]ks`m {g:{s: ofm {g:{t:(ºkþþ,(¤ {¯{¦8sz +(j^ (¦ onj{¯{”8(¤ (¥ (n{¯{¯{Ñ8(`{¯{¯{”8()8{¯{¯{Ò8(` ,%omj(×sû£ (¤ þ(¥*,%omj(Øsû£ (¤ þ(¥* ,%omj(Ùsû£ (¤ þ(¥*þ(*8*Ò{¯(wM,{g:{k:oþ +, þ(+8**01n{¯(xM,{g:{k:oþ +9s`m {g:{s: onj {¯{¯{Ó8(`,"omj(Úsû£ (¤ þ(¥*{¯(ƒM(: (; (< {w{i#{¯{Ó8(J,sÁmsÁm sÁm   s=   (> (þj(Ö.(Ð*(Ö.(Ð*(Ö.þ(Ð***¶{g:{s:{‚:þþ, {¯(†M*( *¶{g:{s:{ƒ:þþ, {¯(‰M*( *þ{¯(xM,{g:{s:{…:þþ+, {¯(ŒM*( *Ž(.8(/8(08(¡+þ(¡+*0 Âos`m {g:{s: ofm {g:{t:(ºkþþ,(¤ {¯{¦8sz +(j^ (¦ onj{¯rMñp{¯{¤8(¤ (¥ (`{¯{¯{•8()8,&omj(Ûsû£(¤(¥+-{g:{s:{…:þþ+9Æ{¯(‚M  (Ð   (Ï   sÁm  sÁm   s³ (9 (ýj{g:{t:(ºkþþ-5{w{i#{¯{•8(¤ (¥ (n(J,+(Ö. (Ð*(Ö. (Ð*{¯(M*( *~{¯(xM, (28*( *V(? }f}g*0^p(@ (A (B {f(O]($nþ,.{f{B8{f{E8{f(k]{g(i**:sC *0 ÿKofm {g:{i:(Ói3 ,+(Êsû£ (¤(+&ofmo³j, þ+,PsÊ8(¬ +,!(Ë('¥s(¤ (¤(¥+"(Ì('¥sû£ (¤(¥+ ,þ+,(Ísû£ (¤(¥+  (C8(D (E sF sG *0ar(i (H sä8sI (­ + (J (K (J (L (J (M (N (Ÿ+(® + sO *0_tsæ8(U +(V + (Š (‰ sø8 sP (¯ + (Q (R (S (R (T sU *0;wsú8(° +(± + sV (² + (W (X sY *0Czs9(³ +(´ + (Z ([ ¥þ(µ +¥~( +s\ *0þ„{| {w{i# (88 (] (^ (_ (`  (98(a (b  (c  s9  s9s 9 (Y +(z (Z + þŽs"9(¶ +  (¨ þþ9£(B: ¥«oX oï ,_oY o¯ ,H(i(“”( O(È+(è{;{ù:{Isû£(¤(+&+›+˜Þu , oâ &Ü&Ü&+(9^ s(9(· +(2^(M^{m=  þ–s.9(· +s69{¯(Z^('+¥«oX oï ,koY {;|û:(j(ái(n oòiþ,{;{ÿ:þþþ+,{·(FC+’8ŒÿÿÿÞu , oâ &Ü&Ü&   (¸ +(d (e  (;8(f (g  {¯{w{i# (A+!!(¡+{µ(ž*s  *àmMãy\^s>8€is>8€j*:( }h*sM8**(K8þ**sO8**(K8þ*2sT8**(K8þ*sZ8**(K8þ*~i**(K8þ*~j**(K8þ*{h*Zr.8psh (¹ +oi *>(>8}q*{q*–(>8}r}s}t}u*{r*{s*{t*{u*¶(>8}v}w}x}y}z*{v*{w*{x*{y*{z*>(>8}{*{{*:( }|*2{|{q*:( }}*2{}{r*2{}{s*2{}{t*2{}{u*:( }~*2{~{v*2{~{w*2{~{x*2{~{y*2{~{z*:( }*2{{{*2sl8*²( }€}}‚}ƒ}„*{€*{*{‚*{ƒ*{„*&*Zr.8psj (º +ok *^su8€†su8€‡*:( }…*"s„8**(‚8þ*"s‡8**(‚8þ*sŠ8**(‚8þ*sŒ8**(‚8þ*~†**(‚8þ*~‡**(‚8þ*{…*Zr.8psl (» +om *Z(u8}Ž}*{Ž*{*Z(u8}}‘*{*{‘*>(u8}’*{’*>(u8}“*{“*:( }”*2{”{Ž*2{”{*:( }•*2{•{*2{•{‘*:( }–*2{–{’*:( }—*2{—{“*"s™8*V( }˜}™*{˜*{™*&*Zr.8psn (¼ +oo *^sŸ8€›sŸ8€œ*:( }š*"s®8**(¬8þ*"s±8**(¬8þ*s´8**(¬8þ*s¶8**(¬8þ*~›**(¬8þ*~œ**(¬8þ*{š*Zr.8psp (½ +oq *Z(Ÿ8}£}¤*{£*{¤*Z(Ÿ8}¥}¦*{¥*{¦*>(Ÿ8}§*{§*>(Ÿ8}¨*{¨*:( }©*2{©{£*2{©{¤*:( }ª*2{ª{¥*2{ª{¦*:( }«*2{«{§*:( }¬*2{¬{¨*"sÃ8*V( }­}®*{­*{®*&*Zr.8psr (¾ +os *(t *"{/ *(u *B{/L( ‹þ*²}¯}°}±}²}³(v *0±{²YE + +h+[8€{¯¥ ow }±}²{±oï ,5{±ox }°}²{°(E8}³*}°+¾}²{±(¿ +}±}²}³*0‡e {²YE++e{²E + ++++}²{±(¿ +}²}³ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{²E + + +++***"{³*0 {¯sÌ8*0\(y }´}µ}¶}·}¸}¹}º}» }¼ }½ }¾*0õŠ{{ {~ {| {z {}{µom,"(È('¥sû£(¤(+&+{µofmo°j,"(É('¥sû£(¤(+&+(‘E [*rð ps¤(¤(À +*t—& {u,Õ {u{ M{ M (Û {o { M (Û {r {M (Û {q{ M ofm{g:{i:(Ói3(Ê sû£(¤(+&+{´{º{»     {¸{·{¶(89(i?{( {º(ª*(z (?8(D (E {»{¼{½{¾sF sG *t˜&{M{M {M{M {µofm{g:{i:(Ói3(Ê sû£(¤(+&+sÈ8{¹(Á + (A8(G8(D (E (E {¹{º{»{¼{½{¾sF sG *t™&{M {M{M{M{µ{¾{»{¼{½{¹{º (78*t–&{ M {M(×/{´{º(@:{‰{+L{µofm{g:{i:(Ói@l,e  (‹ !!{=L,(Ê sû£(¤(+&+!{AL(&3(Î sû£(¤(+&+++ (ê0"(ò.##{´{º{»{¼"(9,$$({ (| %$(} (q &$(} (s '$({ (~ ((sÌ8( +)%(Ÿ+{½(¿+*((® +{¾(à ++){¹{º&'*+sF sG *²( }¿}À}Á}Â}Ã*0Y‹(€ ( (‚ (ƒ („ (… {¿{À{Á{Â{à sÒ8*:(† }Ä*>{Ä(Ä +*(‡ *.(K8þ*(u *B{/L( ‹þ*(‡ *0B(K8E*t sÚ8{wþ(Å +**Ò}Å}Æ}Ç}È}É}Ê(v *0ø{ÉYE ++t+g8™8²8³{Æ(Æ +¥oˆ }È}É{Èoï ,0{Èo‰ }Ç}É{Ç}Ê*}Ç+Ã}É{È(Ç +}È}É(I8}Ê*}É{Å(Æ +¥*}É}Ê*0že {ÉYE+8y{ÉE ++*+++ ++++}É{È(Ç +}É}Ê Þ t   Þ&8mÿÿÿþ,z*e 0C{ÉE ++++ +++*****"{Ê*0 {Å{ÆsÞ8*V(Š }Ë}Ì*0 Ž”{ {€ { {‚ (K (L (‹ (M (Ú.  (n oé.{Ë{Ì(; + , +5{Ë{¯{Ë{³ofmonj( (  (¡* {Ëofmonj(ãi(+  (Ü   (W  (Ý  (È + (È + (È +{Ë sÔ8sÖ8 (È + (È + (É +( (… ( (‚ ( (ƒ ( („ ( ( (Ž ( 9ª( (K8@‹( (  sØ8(Ê +,+ (G8(E ! sÜ8"!(Æ +#"#¥(Ë +( +$"#¥(Ì +( +%$%sÞ8( +(E +++õ (k8sI s‘ *(\ *0!^{¦ {› {U;{[;s] *(j *&(œ**(j *&(œ**( *^(J+(œ0(Ü.(1*V(’ }Í}Î*0¤•(rE(^r!p{Íofmonjs¤ (¤(Í +*tL {V= ( ( ( ( {Î(A9s“ *tM {X=( {Î(C9s“ *(” *:{,<(œ**V(L }Ï}Ð*º{Ï{B8{Ï{E8{Ð{?8{Á;(i*V(• }Ñ}Ò*~{Ñ{µ{Ò{,<(Ÿ**²(– }Ó}Ô}Õ}Ö}×*0“œ(— (˜ (™ (š (› (œ ( (K8EÜô‚Nht‹{q{-   -+$  {Ó{µ{Õ (} (Ÿ* sè8{,  ( + {-   -+$  {Ó{µ{Õ (} (Ÿ* sê8{,  ( +{Ó{- (A,(v8  sž sŸ *tŒ{r{u{t {s(Ïi(é {Ó(®0(¼0(`+(Æ (Ç {Óo ‹(l (š+(ý (þ  -+$  {Ó{µ{Õ (} (Ÿ*  -+$  {Ó{µ{Õ (} (Ÿ*  (x8  sž sŸ *t{v{x{y{z{w,+ ,qsì8( +(».{Ó {Õ{Õ(F,  (  (   ( !!!(A9(  (¡  s¢ 8€{Ó (J+(Ü.{Õ(+,""(£ "(À  "(Á #sî8#(Î +(Ï +$$(¤ %$(¥ &%¥~( +& s¢ (¦ (§  (¨ !(© &sð8!(Ð + !¥oª ''oï 9['o« ){Ó{¯*{Ó{¯{å8+*+sò8){,<,,{U;{a;(N+,þ+,1( ){,<,,{U;{X;sû£-(¤-(¥+){,<,,om(¢–.(k^{Ó{¼){,<,,{U;{X;{Ô.(‚P/{Ó{¼){,<,,{U;{X;{Ô.(ƒP0/(¢ -0(K -8Ïþÿÿ.(Ï){,<,,{U;{X;sû£-(¤-(¥8™þÿÿ(Þ'u 11, 1oâ &Ü&Ü(&,{Ó{Õsô8!(Ñ ++ , +2&(z82 sž sŸ *(~8 sž sŸ *(€8 sž sŸ *tŽ33{{44{¦55{›,,oæl,+ {Ö( 6{Ó {Õ{×6 4(;,77(b 87(a 97( :7(`  4{¦55{—(|8 :98sž sŸ *AÉl5’(¬ }Ø}Ù}Ú}Û*0až{ƒ { {€ {„ {‚(­ (T (® (S (¯  {Ø{µ{Û{Ú(ž*  {w {x {y {z {{ {| {} {~ {(â-sò-(N s. {Ø{Ù{Ûsö8   sž (Ò +  (° (—   (° (˜  (° (™  (° (š  (° (œ  (± (˜8 sP s² *(³ *0a{¬ {—s´ *Ò(µ }¶ }· }¸ }¹ }º }» *0<¥(‚8E^€·Ÿ«t– { {Ž {+  {¶ {¯{¸ {º (á*{¶ {* (S +( 8s¼ *t—{{‘(¢8s¼ *t˜{’(¤8s¼ *(¨8s¼ *(ª8s¼ *t™{“ {»  o½  {¶  (D, {¶ {· {w{i#{¹  (E,  (¦8s¼ *Ò(¾ }¿ }À }Á } }à }Ä *0 X¨{˜ {™ {¿ {À {Á { {à {Ä sÅ (Ó + (Æ (Â8(Ç sÈ *:(I }è*F{è(’9þ*:(É }é*0EªuÙ,;tÙ {!  {  {és9(±+ , (ò þþ***:(Ê }ê*0,¬(¬83!t£ {ês9{§þ(Ô +**(Ê *.(¬8þ*(Ê *¢(¬8E**(Ë *0®(¬83t¤ {¨(Ì **ò}ë}ì}í}î}ï}ð}ñ(Í *0f¬{ðYE +88º8á8ò8{ë¥&oÎ }ï}ð{ïoï 9Í{ïoÏ }ì{ì(¬8E[r8{ìt£}í{í{§}î}ð{î(²9}ñ*}îþ£}í+,}ð(´9}ñ*+}ð(¶9}ñ*}ì8#ÿÿÿ}ð{ï(Õ +}ï}ð}ñ*0že {ðYE+8y{ðE ++*++ + + +++}ð{ï(Õ +}ð}ñ Þ t   Þ&8mÿÿÿþ,z*e 0C{ðE ++++ +++*****"{ñ*0 ¬{ëþ£s 9*(w *"{É*(Œ *"(i*r(Ð }ò}ó}ô*0 …¯{É {-< {,< {.< (O+s9{ó{U;{X;o~mo† om(Ö +(/+{ô{òo›9{È (¢osB0*(Ë *0®(¬83t¤ {¨(Ì **²(Ñ }õ}ö}÷}ø}ù*0=¹{­ {® (Ò 9 (Ó (¬8@ò(Ó t¡ {¤ {£(Ò {õ{¯{B8þ{õs9(× + , +,@{õ{¯{öofmonj(Ù*  {ß:{I(n (à-+(â-{'  s9(Ø +  (Ô (Ò ,a (Ô (Ó (¬83I(Ó t¢(Ò (Ò --{¥ (Õ {¦sÖ 8¢ ofmo³j,6{õ{¯(ôn ofmonj{¥8(ÐosÖ +^{õ{ö{÷{õ{¯{¤8(‰ ofmonj(Œ ofmonj(š+(þ sÖ   (×  (Ø  (Ù {õ{ö (; +{{s9(Ù +s 9(Ú +,9(” ( ( (A9(  (¡ (¤8(Ú +þ£s 9(Û +s9(.+{õ{÷{ù(Ü +(Û (Ü (Ý  (Þ !{*  (åŠ(¢o{õ{ö{w{i#{ù{+ sJ1(E,(ß (à !,u!##(â ${) oá %%(â &%(ã ''$(åŠ(¢o{õ{ö{w{i#{ù&sJ1(E,(ß (à +(ß (Ý +"{õ{øoš9 s9(Þ +("((Ý +s\ *s9(Ú +( s\ *+ä( *&(åh*:(d }ú*F{úþ(û +*(e *0·{ª {{î4*0|}û}ü}ý}þ}ÿ} } }  }  }  }  }  } } } (ä *0¡º{ YE !'+*8E8Ø8È8þ8·8§8B{û¥/oå } } { oï 9ô{ oæ }ü{ü{„}ý{ü{‚}þ{þ¥«oX } } { oï ,0{ oY } } { } *} +Ã} { (ß +} {ý¥oˆ } } { oï 9ë{ o‰ }ÿ{ÿ(K8@»{ÿtŽ} { {{} { {¦ {™¥«oX } } { oï ,0{ oY } } { } *} +Ã} { (ß +} } þŽ} +}ÿ8ÿÿÿ} { (Ç +} }þ}ý}ü8üýÿÿ} { (à +} } } *0èe { YE+8Ã{ E +8i+R+;+7++++T} { (ß +} { (Ç ++} { (ß +} { (à +} }  Þ t   Þ&8#ÿÿÿþ,z*¯Ë 0U{ E ++!++++ +++ *******"{ *0#»{ûþŽs"9*²} } } } } (ç *0±{ YE + +h+[8€{ ¥«oX } } { oï ,5{ oY } } { (i} *} +¾} { (ß +} } } *0‡e { YE++e{ E + ++++} { (ß +} }  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ E + + +++***"{ *0 { s(9*0l} } } } } } } }  }  }  }  }  } (ç *0:¼{ YE !+$88€8Ö8¢8u8å{ ¥1oè } } { oï ,H{ oé } } { {¬ {› {U;{Z;} *} +«} { (á +} { ¥3oê } } { oï 9 { oë } { {™} { ¥5oì } } { oï 9Ž{ oí } { (‚83a{ t–} { {Ž} } { {*  {U;{Z;} *} þ–} +} 8bÿÿÿ} { (â +} } } 8åþÿÿ} { (ã +} } } *0Êe { YE+8¥{ E ++R+;+7++++@} { (â +} { (ã ++} { (á +} }  Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{ E +++++ +++ ******"{ *0&½{ { þ–s.9*:({ } *:{ o¯ *:({ } *0>¾(9^(i(2^(K^{m= { o¯ -{ s49oî **0êÀ{¯{³  (%P -+4 (• ,(} oÚl(Ô + (×* (i? (ª*(¼0 (  (¾B(Ž+(9+ ({+($ ("  (%   (í*  (-  ofmo³j, ( þ+,"ofmonjsC5(¤(¥+ sb9 (‘+ (Û*{¯(Þh(l_  (n`($,(æ sd9(ä +(† (  (=”(3‘rKp sY‰(Ö.(êˆ{I(3,{¯(¤ (êˆ(Ç* sf9(Ã* (oa (z (., (Ä*(ž (Õ (Xi( i(/(äj(Ö.(fi($‰(Õ*sï (ð (ñ    sj9(å + r‡p sY‰(z  (oa(Xi(œi(/(æj(Ü.(hi( ($‰(Õ*s ”s`9*0¼Á{w; {U;{X; sY‰ {U;{Z;("] (ò (ó (åk{ô8sl9{U;{a;(N+{U;|\;(ºi(€iþ(  {U;{a; {U;{d;rR9p   sŸk*0*oìl-{U;{b;þþ+,om(¢–rfÁpoÕ þ+, oölþ+,/om(¢–(å{U;{X;sû£ (¤þ(¥**0Ä{U;{Z;{U;{X;(_^ (€ (ƒ sœ9(æ +(=”(3‘ ,sž9+s 9(o? {U;{X;sY‰( (¤  {U;{X;sY‰(Ç*{¯{w{i#{( {'   ofmonj(à*om ,  sò +Z{0   {U;{Z;om(n {2<{4<{3< (ƒs(¯ (¶osò   (ó  (ô  {2<{4<{3<(…s(ç +(¶o(ˆ+ (oa(ž (Õ (Xi( i(/(äj(Ö.(hi{U;{a;($‰(Õ* (:9 (s9*0Çtè {G  {F  (îoEl/(z (z {¯(r_( ]sõ 8Útë{‡<{ˆ<(z {¯(r_sõ 8tâ{]<(îo 3M{]<të{\<{_<{^< {‡< {ˆ<  sõ +7{\<{_<{^< {]<(z  sõ (ö  (÷  (ø  (ù (ˆ+ , sY +# (­]  {¯ (r_sY   (ø   (ù   om   (¯] (®]sÔ9sú (¢o( ( sû *0 sÚ9*0 ½Ì uÚ9‡ tÚ {$  {#   (à o›9 sÜ9,)sú (ü (ý (ü ( sþ  sÿ *(ü sú (ü (ý ( sþ  sÿ * tÙ{!  {" {   sÞ9 (è + ,Hsà9 (è +  (=9(é +(ê +  (!   (! s! +F (=9(é +(ê +  (!   (! sâ9 (è + s! (!  (!  (!   ¥~( +, (ü sþ  sÿ *(ü  sþ  sÿ *0Ø{w{i# {0  {U;{X; {¯{( (à* {¯{w{i#sÂ9 (ð+{*  {* om(‘]{U;((msÄ9 ( +sÆ9 (/+ sÈ9  sÒ9(à^(à^s! (ë +  (!   (!   (Ä+ (Ä+(;^(_(á^{n={n=s !   ( !  ( !   sä9  sö9sø9(o+{¯(9sþ9{, (ì +  (A9(>9( ! ( ! (! ( ! (! ( ! (! (í +(! (! (î +  (! ! (! " (! ##¥E(ï +(ð +$"¥E(ï +(ð +%!¥~( +(¡+&s:%(ñ +''(! ('(! ){¯(ôn{¥8(Ðo*s:)*(ò ++{- --,3-..(} (à   (¦]o›9(¿]++(ªq,(jŠ+(lŠ(Ôo,s:(,(ò +/(z (à {/ {, (Ó (Ô /{¯{¥8(´]$(! -8žs :${¯(ôn{¥8(Ðo(ò +*{U;{X;0{) oá 11(ã 1(! 2 om(‘]{U;((m0(z 2(Ó (Ô *{¯{¥8(´](  &s! *( *&sG9**uÙþ*"sK9**uÚþ*0Ú uÚ,+*Zr.8ps! (ó +o! *r(@9} }! }" *{ *{! *{" *V(@9}# }$ *{# *{$ *:( }% *2{% { *2{% {! *2{% {" *:( }& *2{& {# *2{& {$ *{' *{( *{) *{* *{+ *{, *{- *{. *{/ *{0 *{1 *0\( }' }( }) }* }+ }, }- }.  }/  }0  }1 *V{¯{( (à**:( }2 *B{2 þ(Ç +*:(! }3 *:{3 (G”*V(ª }4 }5 *V{4 {5 ($,*V(ª }6 }7 *V{6 {7 ($,*²(! }8 }9 }: }; }< *0tÛ{: rûp{8 {¯{¥8(©](ò (i (f {8 {¯{¥8{8 {¯{¥8(n (! († (  (=”(3‘ rR!p{: sY‰ (Ö.{9 (ëˆ {I(3,{8 {¯{9 ( (¤ (ëˆ (Ç*{: {8 {< sh9(Ã*{; (oa{; (Ä* (ž (Õ (Xi( i(LŠ( ! (/{8 {< {9 (äj(Ö.(hi( ($‰(Õ*s!! *V(L }= }> *º{= {B8{= {E8{> {?8{Á;(i*( *sw9**uæþ*&sy9**uçþ*&s}9**uèþ*0Ý uè,+ uç,+*Zr.8ps"! (ô +o#! *:(n9}B *{B *r(n9}C }D }E *{C *{D *{E *r(n9}F }G }H *{F *{G *{H *:( }I *2{I {B *:( }J *2{J {C *2{J {D *2{J {E *:( }K *2{K {F *2{K {G *2{K {H *{L *{M *{N *{O *’( }L }M }N }O *ž¥7sQ (‹]($! (‹](B s9*0:ß{N o%! ,(&! *r^!p{U;{X;s¤ (¤(õ +*0\à{,< {¯{U;{Z;(^,*{¯{-<(_ oÀo-{U;|\;(ºi(€iþþ**0 â{¯  {,< ,+ {'  omoh ,+, omo—mþ,,+ ofmo±jþ+, {1 om{U;{X;o!”+omo& s'! ((! ()!  {-<(_oÀo,+{U;|\;(ºi(€iþ9m{U;|\;(ºi(€iþ,+oU ,+ ofmo³j,( (n (:9{N o*!  (q9+(o9+ (;9s+! *0 Qä{,< {L o“9 (,! (-! {M {N  o.! {O s9*–{L {M {N {O oe s9*:{O oU *0 mæ{M  o‘9 uç-uè:­(¦]*tç {C ,5{E  {D (Þn{š8(Ðo (Ò](C,*-*{E  {D rÆ!ps¤(¤(b+*(} {E  {D (¦] (Ï]*tè  {H   {G  {F  sÁm(¼q ()`  (ø   (ù (ß+ ,(k +s¢9(ö +(Ü+ (ú (û þ('`*0 ðç{M  o‘9   uæ:£ uè:©tç {C ,7{E  {D (Þn{š8(Ðo (Ó](C,*-"{E  r2"ps¤(¤(b+*(} {E  (¦] (Ô]*sÁm(â]*rž"ps¤(¤(b+*0 êç{M  o‘9   uæ:Ÿ uè:£tç {C ,5{E  {D (Þn{š8(Ðo (Ñ](C,*-"{E  r#ps¤(¤(b+*(} {E  (¦] (Ð]*sÁm(å]*r’#ps¤(¤(b+*0“ê{'  þOþç þŠ s¦9(o + ofmo’j(p +(/iofm{g:ofmo¢j{Ã:{Ä:smk(k(Ûj*0&ìs¬9 (R s®9sùdþ(u`*(/! *0!~(f (g (æ {6<(:‘*(0! *"(îˆ*(0! *"(éˆ*:(D }P *:{P (¦]*(Œ *"(i*0¤}Q }R }S }T }U }V }W }X  }Y  }Z  }[  }\  }] }^ }_ }` }a }b }c }d (Ò *0 í{c YE +88Ÿ8K8\{Q {N ¥Po1! }b }c {b oï 9¾{b o2! }X {X  (3! (4! s5! }Y {Y (6! }Z {Y (7! }[ {[ uç90{[ tç}\ {\ {E }] {\ {C }^ {^ ,+{W ofmo±jþ9·{R {¯{S {U {( {U {'  ofmonj(à*}_ {_ s¤9{W ofmo~j(/+(Š+}` }c {Q {M {T {` {Z {^ {] (99}d *}` }_ +}^ }] þç}\ +}[ }Z }Y þO}X 82þÿÿ}c {b (÷ +}b {V u‹ ,+;{V tŠ }a }c {a {l}d *þŠ  }a }c }d *0”e {c YE+8o{c E ++$+ + +++}c {b (÷ +}c }d  Þ t   Þ&8wÿÿÿþ,z*[w ê{c E +++ +++****"{d *0Vî{Q {R {S {T {U {V {W þOþçþŠ s¦9*’(| }e }f }g }h *0 ìï(îo@Õtã {`<(îo@½{`<tß {L<oÆm {e {O oU ,{e o‘9uèþ+,v {b<{d<{c<{e {M {e {f {h {g  o—9(a+ (r_(ú  ('`(  *(îo3`tß  {L<oÆm {e {O  oU ,8   {N<{e {f {h {g  (¤ o—9(  *(îo @Üté  {~<(Òp@Á {~<t  {á<(žq@¡ {â<oÆm  {<(³ :‚ {€<(Ê ,t {€<(Ê (Ê -]{e {O  oU ,I  {<(Ë o¾ {e {f {h {g o˜9(  *(îo @ªté{~<(Òp@{~<t{á<(žq3r{â<oÆm{<(³ -V{€<(Ê -H{e {O oU ,4{<{e {f {h {g o™9(  **(} **Vs¼9€i s½9€j *( *sº9**u÷þ*~i **uøþ*~j **uùþ*0ñ uù,+ uø,+*Zr.8ps8! (ø +o9! *:(±9}n *{n *(±9*(±9*:( }o *2{o {n *:( }p *:( }q *r( }r }s }t *r{s {t {r (· +*( *&(åh*(Œ *"(i*(‰ *0É {-< (;^(_(á^*:(I }u *:{u (’9*’(:! }v }w }x }y *0¿òuÚ,FtÚ {$  {#  , {x +{x (;^(_(á^{y s! *tÙ {!  { {v sÊ9(±+,{w {x (Ä++{w {x (Ä+{w {y (Ä+s! *V(;! }z }{ *0#ó(! (! {z {{ sÌ9*’(! }Š }‹ }Œ } }Ž } } }‘ *0 Šø{,< {.< {-< {U;|\;(¹i(½h,%(Ç{U;{X;sû£ (¤ (+&+{‘ { (à {Š { o›9{‹ {- ,(} þ+{‘ o‘9uæ-/uç-[{Œ { {Ž { (<9*tæ  {B  {Ž  sÖ9sú ( sû *tç  {C   {D  (îoE%%(éŠ3tW%{½I+{U;{X;+ {U;{X; {‘ { (à { (â- o˜9 9…{Š u‹ ,+v{Š tŠ {k{ {Œ {¯ (Þn {š8(Ðo (Ó]{‘ { (à (â-{ o›9(  + sØ9sú ( sû *:(Á }’ *0 #{’ (ªq(jŠ{’ ( ](Ôo*ò(?! }“ }” }• }– }— }˜ }™ *0 3{• {“ {™ {˜ {” {– {— o”9*(?! *:{,<o•9*(?! *:{,<o•9*0T(@! }š }› }œ } }ž }Ÿ }  }¡  }¢  }£ *0F{ {› {œ {š {ž {Ÿ {  {¡ {¢ {£ (>9*:(Á }¤ *0 #{¤ (ªq(jŠ{¤ ( ](Ôo*0|}¥ }¦ }§ }¨ }© }ª }« }¬  }­  }®  }¯  }°  }± }² }³ (A! *0 Wù{² YE + 8ó8*{¦ {- }¬ {¬ 9ÿ{¬ }­ {­ (} }® {¥ {¯{© {¦ {0  {U;{Z;{© {® (¦]{© {¦ {0 (¦](Á_}¯ {« {¨ (à {§ {ª {¯ o›9}° {° sæ9}± }² {± sú }³ *}± }° }¯ }® þ }­ +}¬ }² }³ *&}² *®{² E + + +++**"{³ *0Aú{¥ {¦ {§ {¨ {© {ª {« þ sè9*:(Á }´ *0 #{´ (ªq(jŠ{´ ( ](Ôo*0|}µ }¶ }· }¸ }¹ }º }» }¼  }½  }¾  }¿  }À  }Á } }à (A! *0 cû{ YE + 886{¶ {. }¼ {¼ u‹ ,8{¼ tŠ }½ {½ {k}¾ {µ {¯{¹ {¸ (¦]{¾ {º {µ {¯ (Þn{¹ {š8(Ðo{¹ (Ž_}¿ {» {¸ (à {· {º {¿ o›9}À {À sî9}Á } {Á sú }à *}Á }À }¿ }¾ þŠ }½ }¼ } }à *&} *¢{ E + +++**"{à *0Ah{µ {¶ {· {¸ {¹ {º {» þŠ sð9*ò(B! }Ä }Å }Æ }Ç }È }É }Ê *0Sü  uù-d u÷:¯{Ä {Å {Æ {Ç {È {É þ sè9(ú + (ü ( sþ sÿ *{Ä {Å {Æ {Ç {È {É þŠ sð9(ú + (ü ( sþ sÿ *t÷ {n {Ê oC! (û +(! (! (î +(!  (!  (!   ¥E(ï + ¥E(ï + ¥~( +sþ sÿ *²}Ë }Ì }Í }Î }Ï (• *0Aa{Î YE +!8é+u8•8®8Ç8ï{Ë ¥oª }Í }Î {Í oï 9¡{Í o« }Ì }Î {Ì {,<om}Ï *}Î {Ì {,< om(¢–}Ï *}Î {Ì {,<om}Ï *}Î {Ì {,<om}Ï *}Ì 8Oÿÿÿ}Î {Í (ü +}Í }Î }Ï *0¨e {Î YE+8ƒ{Î E ++0++++ +++++}Î {Í (ü +}Î }Ï  Þ t   Þ&8cÿÿÿþ,z*o‹ 0L{Î E +++++ +++ ******"{Ï *0 {Ë sø9*(D! *z{U;{X;(¦](çŠ(¢o*(E! *0ý(F! (G! *:(Á }Ð *B{Ð þo¾ *(H! *0ý(F! (G! s:*:(Á }Ñ *B{Ñ þo¾ *(H! *0ý(F! (G! s:*:(Á }Ò *B{Ò þo¾ *(H! *0ý(F! (G! s :*02þu,(t {: ofm {g:{o:(,i**09ÿ  (Ò* (   rR9p (:sŸk*01 €(#, s:(( + (ð (ï s:(, +s: (, +(Ïi(é (®0(¼0(s+(Ç {¯ {¯{ 9   s:(N+{¯ {¯{ô8   s!:(N+ {¯(*  ,-+ þ+,(¸ sû£ (¤ (+&+ ,(€ sû£ (¤ (+&+,-+  þ+,(º sû£ (¤ (¥+,/-+ þ,+(LŠ( !  (ý +þ+,(» sû£ (¤ (¥+, (ön(e +     (þ +u,=t{:ofm(h_,{: (#,+*0z{ÆL {ÇL {ÄL {ÈL {ÂL{ÅL{ÃL{ÁL, (¶ +  sY‰o5‰ (:*0{ÆL {ÇL {ÄL {ÈL {ÂL{ÅL{ÃL{ÁL,+(¶   o5‰ (:*(¼ sû£ (¤ (É +*0\*{¯sY‰(H,(Â-(…–(ñ þ+,(†–(ñ þ+,s!5 (¤þ(¥**0W# 0rcñp*rcñpX Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( *0 ‚{«L {¬L {¨L {­L {©L{ªL À($, (Ò*( (: {I(…–(ñ ,r$p+#{I(†–(ñ ,r%$p+{I  r1$p(ñ ,$ r1$p(  sû£ (¤ (¥+ {I(:uz&9!tz&  {±L(‚  {±L(ª (Ïi(é (®0(¼0(s+(Ç {¯(z s#:(Ã*(Ä*{3< (ü](Ó (Ô o÷ 1(¾ sû£ (¤ (¥+¥‰(.+oñ  s%:(ÿ +{¯(ƒ]-(¿ sû£ (¤ (+&+sI! +5ty&{°LoJ! s':(ž +sI!   (K!  (L! o5‰(/i rR9p s‰k*0 #s):r;$ps+:( +( +*0E{¦L {¥L {£L {§L {¤L ($,(«‰E“““ (¿* (Ò*( (: {Irëøp(ñ ,#(3{Isû£ (¤ (¥+(e  (  o5‰rR9p   sŸk*(À sû£ (¤ (É +*0 .O(¾B s-:rQ$ps/:( +(n +sM! *(ë *0£(ì (+  €_þþ*(* *"(+ *(* *"(+ *V(L }Ó }Ô *º{Ó {B8{Ó {E8{Ô {?8{Á;(i*V(L }Õ }Ö *º{Õ {B8{Õ {E8{Ö {?8{Á;(i*V(ª }× }Ø *V{× {Ø ($,*²(N! }Ù }Ú }Û }Ü }Ý *0t(f (g {6< -{Ý (:{Ü sY‰+ (¶ {Ù {Ú {Û ( ( ($‰{Ü (þ +*²(ø }Þ }ß }à }á }â *0 ,{Þ {ß {à {á {â (:(:*(O! *"{Ñ:*²(P! }ã }ä }å }æ }ç *0 &{ã {ä {å {æ {ç (:*(Ñ *"{ß:*²(Q! }è }é }ê }ë }ì *0 &{è {é {ê {ë {ì (:*0Õ{ÝL {ÜL (× ,1 (T (U -7(× (× -(;”(† (  8†sÚR (¤ ( ++q(T (U (U -Õ(× (× ,È(× (T (U -²(× (× -¤(R! (! (S! (;”(† (  (  (3‘*’{=L{>L{?L{@L(s*0,, (‹ (2:(Ê *sÚR (¤( +*0+ {,L {-L {+L (3:(1:(ì*0„ (EEL5É(³oGsû£ (¤( +*t8&{ L 8tÿÿÿt)&{àK 8]ÿÿÿt(& {ÛK(E3Ÿ{ÛKt'& {ÝK{ÞK {ÚK{ßK{ÜK(!{Io  {I   sY‰(#*t7&  {L {L  {L {L {L  {Io   {I sY‰ (A*0F  s8:(5:  {} oŒŒ (4:(ŠŒ@Òt¦%{ÀJu &9¹{ÀJt &{½K( :š{ÁJ{ÂJ($¥(Œ($¥ sY‰(Ú (Û (( (]‰(TŒrk$psY‰(NŒ(>Œ (T!  (´/ rk$psY‰(µˆ (ÿ*sU! + sÚR (¤ ( +  (æ (ðˆ(V! (W! (Ã/*0²{‚ {‰ { {Œ {…{„{Š{‡{‹{ƒ {¯(c`,Q  rÔëpr{$p(6:  rÞëpr‘$p(6:(X! (Y! (Y! *(X! *:( }í *:{í ( *0L{{ {| {} {´oŒŒ(È (Z!  ([! ( +(´/*0D{+L (µˆ(Õ/ (n oà/,+þþ(::(»/*0 q{,L {-L {=L,(ësû£ (¤(+&+{AL(&E/w®(×/(;:*(ìsû£ (¤( +*(9 ,& (9 (9 -¸(×/(;:*(ísû£ (¤( +*(9 , (9 (9 :mÿÿÿ+³(îsû£ (¤( +*(9 :Fÿÿÿ{=L{>L{?L{@L( s(Ê (ì(µˆ(‰((ÿ*(»/*0-{,L {-L {=L-(ï sû£ (¤(+&+{AL(&E";mT (A (::(»/*(ð sû£ (¤( +*(ñ sû£ (¤( +*(ò sû£ (¤( +*(9 -Š{=L{>L{?L{@L( s  (A(‰ ( (ÿ* (Ê (ì(»/*0 (EEê,û(EEx(ïˆ(»/*t)& {âK {áK {àK  (>:{€{{~(%{(»/*t*&{åK (õsû£ (¤ ( +*t8&{ L  8|þÿÿt-&  {ïK  {íK  {ìK  {ðK  {ëK{I {îK ,  (\! +(ïˆ9˜(‹ ( ,t( ( -(  (<:*( ( ( -,( (   (=:*(»/*{µ(®@{w(¤?(è=(a>@{tb{*#{I(…–(ñ ,(»/*(Õ/(n oà/,(ós(¤ (¤ (¥+ (;:*(ôsû£ (¤ ( +*t(&{ÛK(E@ûüÿÿ{ÝK,8íüÿÿ,U(‹ {AL((n o*-${AL((n o*þ++9üÿÿ{ÞK {ßK {ÜK( + (ïˆ(+ (<:*0 :{| {+L    (>:*0Â{.L {4L {9L {7L {6L{5L{8L{1L{0L{3L {/L {2L {½(T!  (´/(?:  {€  { { {~   o5‰ (Ã/*0O(]! ,E (]! (^! {t,+ oô-{m= or ,+ (1^+³*J(0^{x(A:*fsN:(-^{xþ( +*fsP:('^{xþ( +*0(îoEHHHHJ(îoE|GÄ(îoE@)a*tã {c<(Ê -é{`< 8ÿÿÿtë{ˆ< 8ëþÿÿtæ{n< (^,*þ(^*tì{Š<  ( 8®þÿÿté{~<{€<(ÒpEm`)8‘8Štþ{À<(b_þ+ot{Í< {Ì<  (hq3+F (d_þ+8(Ê þ++tÿ{Á< +t  {Ü<( þ,sR:þ(d+**tä  {f<  {e< sT: (U+, 8-ýÿÿ*tå{j< {i<{-<(E:, 8øüÿÿ*tã {`<(îo@lýÿÿ{`<tß{c<(Ê :Oýÿÿ{L<oÆmoól95ýÿÿ{L<{#9sV:oÆm{U;{a;þ(N+**té{~<(Òp@›üÿÿ{<(³ 9Šüÿÿ{<(³ (³ 9püÿÿ(³ (³ (³ :Vüÿÿ{€<(Ê 9Eüÿÿ{€<(Ê (Ê :+üÿÿ(´ (´ (O]($nþ,(O]($nþ+9ìûÿÿ(´ (Ë (´ 8ûÿÿV(ð.,(¦/*(¨/*0 û(Ri (n oai,(z s  + sX:( + („ (… sZ: ( +(„ (… s\:( +(„ (…  (¨ þ, (¨ þ+, (¨ þ+,  s_! * (9^(9^(9^(2^(Q^(Q^(Q^{m=(1^8ÿÿÿ0‚sb:{;{;( + (`! (a! ,\(`! (b! (@l3G(b! tB (a! (a! -.(c! {;sd: ( +(a! -( ***0™"{¯(ô] (¦ (J {¯s^:( + {¯(Y^s`: ( +sf: ( +sr:( +  („   (…  st: (ð+ *0)#{·(ÇB sv:sx:(% +(Ë+&*0ú%{¯ (Å] ,, {¯(â (E:++,sz: ( ++ (G: (d!  (e! s|:(ð+ (I:,+s€:('+s‚:( +{¯  (êB {¯  s„: (ð+{·(ÇB  ( D (2C *0Ž9‡ (‹ {AL(&E+*({ þþ,(ésû£ (¤þ(¥**({ þþ,(êsû£ (¤þ(¥***0s&,,u, t {: ofmo¬jþ++,>,9 (‹ {AL(&E******(f! *02'{t, {u+ oô-{k= oö ,*(.^*(g! *02Ë {t, {v+ oô-{l= oh! ,*((^*:(X }î *B{î þ(E:*:(I }ï *V{ï {-<þ(E:*V(L }ð }ñ *º{ð {B8{ð {E8{ñ {?8{Á;(i*({ *0% {;|û:(j (i‰ (n ot‰*:({ }ò *F{ò o¯ þ*:({ }ó *00È(¦/ {ó (n o±/,*{;{;(a! þ*:(h }ô *:{ô (û]*:(i! }õ *j{õ {¯(Y^sj! *(‹ *.(@lþ*V(‹ }ö }÷ *š(@l3{ö {¯{÷ (S`þ**:(k! }ø *0h({ø {¯ (O]($nþ,B{ø {¯(X] {ø (H: -(z * {ø {¯ (• (Y^*(z *( *&(åh*( *&(åh*V(l! }ù }ú *0`)(m! (n! {ù {¯ (O]($nþ,0{ù {¯(X] {;{ü:{ú {;{ü:þ**( *&(åh*:(l! }û *0!*(m! (n! sn:{û (š +*’({ }ü }ý }þ }ÿ *0Ë-{;|û:(j (Œi (n o—i,{ü (H:þþ+,sh:{ý (š +þ+,sj:{ÿ (š +þ+,U{ü sl:{þ ( + (o! (p! ,-(o! (p! (p! -(q! sp:( +þ***V( }!}!*n{!{·{!(FC*V(æ }!}!*n{!( D{!þ( C*V(ç }!}!*z(ö {!{!s°C(è *( *&(åh*r( }!}!}!*0K¼{!o¯ ,:(i (“”{!( O(È+(è{!sû£ (¤(+**( *&(åh*:({ } !*Ns~:{ !(š +*(r! *6{;{;*r( } !} !} !*r{ !{ !{ !(· +* €* * À* ***C*0(z (z (Ç.€ !(z (z (Ç.€!(· ( (Î.€!( +(/€!(æj(ã0€!( ( ( së5€!*~F"*0 n0(Ž:(• ,`( ] r­$pss! ( ( + sâ:{i;{AL(I¥(?¥(@¥(A¥(B¥ ( + oA &**®{!(u! {!{!{!{!sé:*0G8(¨ þ,*sê:sì:{!( +(@f sî:(F+sð:þ( +*0ð*{!{U;{[;ov! {'!, oìlþ+,{U;{b;þþ+,om(¢–rfÁpoÚ þ+, oölþ+,v{U;|\;(¶i(¤i3/om(¢–(æ{U;{X;sû£ (¤þ(¥*om(¢–(å{U;{X;sû£ (¤þ(¥**0l1($n3Btz {‰; {;{ÿ:þ,"{‰; s;{;{;(& ++(i ow! &($nE7‘«wæ6tu {€; {;(“:s;þ(ð+**tv{ƒ;{‚;ox! &(”:sï oy! &*ty  {ˆ;(”:*tw  {„;(”:*tx  {†; {…;  (“:8•þÿÿ*Rs;þ(+*0ú6(@lE 5¹¹¹O¹h¹¹„¹tB {;þ(“:*tE {;þ(–:*tC {;þ(“:*tH  {;(”:*tJ{;þ(“:*tM{#;{";(“:þ(“:**0V8{3; {8; {7; {6; (”: (”:s ;(k +(z! þ( +*‚s ;s;s;s;þ(“:*0_9s; (@^(_ {n= - {o=+,(àsû£ (¤ (¥8 op 9o^ ( +{!!{U;{Z;( ^,*om(¢–(ásû£ (¤ (¥8°{U;|\;(ºi(€iþ,'om(¢–(âsû£ (¤ (¥+m{U;|\;(¶i(ži(n o«i,(ãsû£ (¤ (¥+(om(¢–(äs¤ (¤ (¥+({! *b{'!, (˜:**Fs;þ( +*0.;{'!,$s; s;s;s ;þ(“:**05?{'!,+s"; s,; s.; s0;þ(“:**J3(6;*(4;*09@oÆm {U;{b; -(|! * (E sL; oÁoþ( +*0A(îoE0c(|! *tß{L< (ž:*tì{Š< ( +‰tã {c<(Ê -¼{`< {b<{a< 8Vÿÿÿté{~<(Òp@‚ÿÿÿ{€<(Ê 9qÿÿÿ{€<(Ê (Ê :Wÿÿÿ(Ë 8ÿÿÿ0KB{'!,A, (}! + (@^(_ {p=,(è( ]sû£ (¤þ(¥***â{B8{E8{·9(i,*{B8{E8{¸9þ(i*0yEsN; ¥¤( + sR;( + ,R (ª (@  (ª (A {%!($N{%!($N( sû£(¤þ(¥**0|G{'!9R{!!(¡:, {!þ+,(ésû£ (¤(¥+{!!(¡:,(êsû£ (¤(¥+{!! {B8{E8{!!{/9(i,(ësû£ (¤(¥+{!! {B8{E8{!!{T9(i,(ìsû£ (¤(¥+{!!oÆm {U;{Z;( ^,H(6;  (n oA;þ,-oÆm om(¢–(ísû£ (¤(¥+++oÆm {U;{Z;þ(œ:*0æ H(›] (îoEù!/ì °B ;(îo @úté {~<(Òp@á{~<t {€<(Ê 9Å{€< (Ë (îo@­ (Ë tß{ã<{L<-4oÆm{U;|\;(¶i(ži  (n o«i+9P{ã<{í< {< (Ê  {ê< {ì<{<{ë<{L<{!!oÆm{U;{Z;(l]9(¸ o©m,o(¸ ofmo¤j(|  (²o±º,'{«](ùsû£(¤(¥ÞÞ tÞ&+sT; (+sV;(+sX;(+sZ; (+(8;(£: (°:*(îo 3?té{< {<{~<{€<   þ(ª:*{!!(¯^,{!!(• ( ^, (• *{!!(±^,{!!(• ( ^, (• *(îo@¿tã{`<(îo@¥{`<tß{c<(Ê 9†{c<  (Ê (Ê -o{L<{!!(¡:, {!+,J{L<{b< {d< (Ë s\; (+(8;86üÿÿ(îoE”÷¹lIbrñ$p  só ztã  {b<  {d< {a< {`< {c<!s^; (+(œ:s`; (+(8;(¤:!(Ÿ:(®:*tá""{Z<"{Y<"{W<#(º sb;#(k+(® (¯ (‚s(¶o#(—]þ(¬:*tâ$${\<%${_<${^<%(…s(® (‚s(¶o%(‘]þ(¬:*të&&{ˆ<(8;8ƒúÿÿtç''{y<'{w<('{x<'{v<)(œ:)(³:((±:*tä**{f<*{e<+sd;+(\^(Å++(Á:(8;8éùÿÿtè,,{}<,{|<,{{<-,{z<.-(8;(¤:(8;(¤:sf;.þ(! +*r™Þps\ ztà//{P</{O<-/{Q<0-(8;(¤:0(®q33{!{!{!{!sé:(8;8ùÿÿ8ùÿÿtå11{j<1{i<22(À:2{,<(’:(8;8¸øÿÿtÞ33{K<3{J<þ(œ:*tß{M<4{L<{N<{'!9ÜoÆm{U;|\;(¶i(ži  (n o«i,(îsû£(¤(¥+4(Äqþ,oÆmoçl+,EoÆm{U;{c;55u,!5t66{:ofm(#^++,(Asû£(¤(¥++þ(£:*tê77{†<7{ƒ<87{…<7{‚<7{„<{!{!{!{!sé:(8;(¤:{'!9Œ(ÿ:{!!{"!{&!(y<(’<(s<98(! ,ÞK89( (~! Þ8tuù::,"tù(›<;(¤;(¥Þþ&+þ(œ:*tæ<<{n<<{p<<{q<=<{s<<{r<><{o<?(8;(¤:?=(¥:?>(§:(œ:{!!@@sh;>sr;(· +(+þ(¢:*tã{`<(›](îo@ñõÿÿtß{c<(Ê 9×õÿÿ{c< (Ë (îo@¾õÿÿ (Ë tß{M<4{L<4(Äqþ,4oÆm{U;|\;(¶i(ži  (n o«i+9Wõÿÿ{M<4{L<{b< (Ê  {d<{a<-{L<AoÆm{U;{`;(Ð+BB{i;{>L,2oÆmom(¢–(ùsû£(¤þ(¥*(8;(£:A(8;(£:(œ:sx; (+ -(Ÿ:(®:*“Tç ýGD 8Jsz;þ('+*0…K{<= {;= {>= {== {:=(‘:¥î(Œ+(¹: ( :-+(} (f (™: (8;þ(¤:*Js|;þ((+*Ns~;þ('+*0$*{!,(ïsû£ (¤þ(¥**0áOs€;(+(ÒpE§2¥ å…Th x 0:s‚;(+(¯:*(Ê ,Ý (Ë (îo3Ì(Ë tá {W<(g ,³{W< (g (g -Ÿ(Ê (Ê ,’(Ê (Ë (îo@zÿÿÿ (Ë tá{W<(g 9\ÿÿÿ{W<(g (g :Bÿÿÿ (Ê (Ê :2ÿÿÿ{X<{X<s„;(+(k (l (l (¯:*(³ 9ëþÿÿ(³ (³ :×þÿÿ(Ê 9Ëþÿÿ (Ë (îo@·þÿÿ(Ë tá {W<(g 9›þÿÿ{W< (g (g :„þÿÿ(Ê (Ê 9tþÿÿ(Ê (Ë (îo@\þÿÿ (Ë tá{W<(g 9>þÿÿ{W<(g (g :$þÿÿ (Ê (Ê :þÿÿ{X<{X<s†;(+(©:(k (l (l (¯:*(Ê 9Âýÿÿ (Ë (îo@®ýÿÿ(Ë tá {W<(g 9’ýÿÿ{W< (g (g :{ýÿÿ(Ê (Ê 9kýÿÿ(Ê (Ë (îo@Sýÿÿ (Ë tá{W<(g 95ýÿÿ{W<(g (g :ýÿÿ (Ê (Ê 9 ýÿÿ (Ê   (Ë (îo@ñüÿÿ (Ë tá  {W<(g 9Òüÿÿ {W<  (g (g :¸üÿÿ (Ê (Ê :§üÿÿ {X<{X<{X< sˆ;(+ (k (l (l (l (¯:*(³ 9Püÿÿ(³ (³ :<üÿÿ(Ê 90üÿÿ (Ë (îo@üÿÿ(Ë tá {W<(g 9üÿÿ{W< (g (g :éûÿÿ(Ê (Ê 9Ùûÿÿ(Ê (Ë (îo@Áûÿÿ (Ë tá{W<(g 9£ûÿÿ{W<(g (g :‰ûÿÿ (Ê (Ê 9yûÿÿ (Ê   (Ë (îo@_ûÿÿ (Ë tá  {W<(g 9@ûÿÿ {W<  (g (g :&ûÿÿ (Ê (Ê :ûÿÿ {X<{X<{X< sŠ;(+(©:(k (l (l (¯:*t  {í< {ì< {ë<sŒ;(+sŽ;(+s;(+s’;(+(°:*us9Múÿÿts{U!{'!,,oè .r¦%ps¤(¤(¥++(°:*t{á<(žq@åùÿÿ{â<(6;(n oA;, (¯:*{'!,2oÆmom(¢–(ðsû£(¤þ(¥**t(Ê 9gùÿÿ (Ê (Ê :Tùÿÿ(Ë {Ï<s”;(+(k (l (°:*t(Ê 9ùÿÿ (Ê (Ê 9ôøÿÿ(Ê (Ê (Ê :Ýøÿÿ (Ë (Ë {Î<s–;(+(k (l (°:(k (l (¯:*(³ 9}øÿÿ(³ (³ 9iøÿÿ(³ (³ (³ :Oøÿÿ(Ê 9Cøÿÿ (Ê (Ê :0øÿÿ(Ë (´ (´ s˜;(+þ(¤:*(³ 9ê÷ÿÿ(³ (³ :Ö÷ÿÿ(Ê :Ê÷ÿÿ(´ sš;þ(+*t (Ê 9• (Ê (Ê :…÷ÿÿ(Ë {Ð<(6;(n oA;þ, {'!+,%{w;(òsû£(¤(¥+sœ;(+(6;þ(¤:*{Ð<(6;(n oA;þ, {'!+,%{w;(ñsû£(¤(¥+sž;þ(+*t{Ý<{Ü<s ;(+s¢;(+s! ( 9o  ( ('¶EaͰã!(¯:* ( t ." ( ( :–(Ê 9 (Ê (Ê ,h(Ê (Ê (Ê -K (Ë (Ë "{Ž[#"{[$"{[%(6;(¤:(8;þ(¤:*!8Rÿÿÿ!8Iÿÿÿ!8@ÿÿÿ!87ÿÿÿ ( t .& ( ( 9˜ ( ''( ('¶!3v'( ( -_(Ê ,M (Ê (Ê -4(Ë &{‡[#&{ˆ[$&{†[%(6;þ(¤:*!8›þÿÿ!8’þÿÿ!8‰þÿÿ!8€þÿÿ(Ê ,M (Ê (Ê -4(Ë &{‡[#&{ˆ[$&{†[%(6;þ(¤:*!8*þÿÿ!8!þÿÿ ( t .( ( ( :¥(Ê 9 (Ê (Ê :t(Ë ({Š[$(6;(n oA;þ, {'!+,*${Z{Z(òsû£(¤(¥+(6;þ(¤:*!8fýÿÿ!8]ýÿÿ!8Týÿÿ ( t .) ( ( -A(Ê ,/ (Ê (Ê -(Ë ){‰[$87ÿÿÿ!8ýÿÿ!8÷üÿÿ!8îüÿÿ ( t.* ( ( :˜(Ê 9ƒ (Ë *{¤[+(Ê +-(6;(n oA;þ+, {'!+,(ósû£(¤(¥+(6;(¤: (¯:*!87üÿÿ!8.üÿÿ!8%üÿÿs¤;(+(°:*0/P(@l3$tB {!!{;(^, {; **0 yS(îoEW(œ:-{!!( ^+,(6;(¤:+(8;(¤:, þ( :**të {‡< {‰< {ˆ< (‘: 8ÿÿÿtá{Y< {!!{"!(šH(½ (» (¾ (¿ (¼ (À (‘: (‡+(‡+(¿+ ¥î(Œ+   (¿+ 9’  (³  ¥oS oï ,oT o m+çÞu , oâ &Ü&Ü&{i;{=L, (g , (h o m+s¦; (Å++ s¨; (Å+sª; (Å+,  (³ (:+þþ (™: ( : (8;(¤:{'!9é-s¬;(—:+¥«oX oï 9•oY {;{;¥eo€! oï ,o! («:Ö+âÞu , oâ &Ü&Ü1 (Êsû£(¤(¥8eÿÿÿ8_ÿÿÿÞu , oâ &Ü&Ü&**tâ{^< 8yýÿÿ(–´×'þ¢¦HVŽi/£q*(8;*0U(" + s®;þ(a+*Fs°;þ(Y+*Fs²;þ(Y+*0?VŒô,+ r¨9ps‚ zŽi  Y 2£Ö(²:X X3ç*0:+{)< {*< s´;(Å+s¶;(Å+(8;þ(¤:*0šW  uÅ-& uÃ-GtÄ s¸;{<þ(Y+*tÅ { < { <  (À:+¤tÃ{<{<{<{<þ(´:*Â(8;(¤:sº;()+s¼;þ(*+*0¥Z(woE567dtÌ s¾;{<þ(+*tÍ {<þ(œ:***tÏ {< {< (œ:þ(œ:*tÐ{<(8;þ(¤:*0-[{Ä; {Ã; sÀ;(# +sÂ;þ($ +*0?\{É; {È; (8;(¤:(8;(¤:( :þ(¸:*0](îoEˆ{!!(¯^ ,*{!!(±^ ,*(îo @5té {~<(Òp@ù{€<(Ê 9Æ{€< (Ê (Ê - (Ë 85ÿÿÿ{!!(¨^,(â 8 ÿÿÿ{!!(©^,5( ( ( ( (¸:8Äþÿÿ{'!,!(ö( ]sû£(¤þ(¥**{!!(¨^9zÿÿÿ(â 8]ÿÿÿ{!!(¨^9Wÿÿÿ(â 8:ÿÿÿ{!!(¨^94ÿÿÿ(â 8ÿÿÿtÞ  {J<  {I<  (ønE&&&&&&&&&&&&&&{'!,(S sû£(¤þ(¥***té {~<(Òp@{{<(³ ,V{<  (³ (³ -({€< {<  (´  sÄ; þ(Y+*{!!(¯^ 9ýÿÿ8xýÿÿ{!!(¯^ 9gýÿÿ8`ýÿÿ{!!(¯^ 9Oýÿÿ8Hýÿÿ0 ÿa(1 þ,*þN+sÆ;(% + sÖ;sØ;sÚ;sÜ;sÞ;¥g(& +(' +(( +() +(% +(* + {'!9|¥go‚! oï ,D oƒ! („! (…! ofmomj(÷sû£(¤(¥+´Þ u , oâ &Ü&Ü&+sà;þ(+ +*~QÏ0'ƒ{4< {3< sâ;(, +(»:*B{5<(¹:*0NO{U;{a;(¹:sä;{U;{b;(- +{U;{Z; {U;{X;þ(œ:*03b,-{ø: o†! {c: (ð (=j(ó (åk**0­coæl,oýl ofmo³j+,%( {U;{X;sû£ (¤(¥+(ÿ:{U;{^;,+{U;(  (+m{!!(r_ (îo3:tâ{\<{]<{!! sò;(/+(õ]s= + (z  s= (> (? (’<o”<{!!{"!{&!(w<(s<  (%   (Ê þþ,%(ú{U;{X;sû£ (¤(¥+{!!{"!{&!om(t<  Þ2t uù  ,tù(›< (¤ (¥ Þþ&*Aqx20gd{!!{U;{Z;( ^,{,< {U;{b;þþ+,%(ù{U;{X;sû£ (¤(¥+{,< {U;{b; ,2 (E oÀo,# (E {U;{Z;sì;(—:+omþþ9­oöl-+oïl9…{!,+/{!!{!!{9sî;{U;{a;(N+,+E{!!{!!{9sð;oülofm{g:{p:(N++, (¾:***0 ©e{,< {-< sÁm(k`9 om om(/^( (‘+ {!!om(O]($nþ--om({U;{X;sû£(¤(¥+{!!(ô](¦ (J (?^(2^(M^{m= (?^(2^(K^{m=   (_   (V or --om({U;{X;sû£(¤(¥++{ !{U;{[;o‡!   ,L   ($ om(¢–()¥(ø{U;{X;sû£(¤(¥+{U;{Z; {U;{X;(œ:{U;{a;(¹:sæ;{U;{b;(- +{U;|\;(»i,+{U;{`;þ, oïlþ+,O{!(Ò^sè;{U;{_;(½:{U;{Z; sê;{U;{X;(›:+oçl, oðlþ+,!{!{!{!{!sé:+{'!,(¿:+{U;{`;,doïl-X(³ {i;{AL(&E+{!!(h^ {!!(i^+{,<{U;{b;, (E +(„s{U;|\;(¹i(½h{U;{`;{U;{X;{U;{Z;þ(¬:*Fsô;þ(Ä+*0 gofmoœj -+O (ˆ! om(¢–{U;{X;(t{Ñ:{I{Ñ:{IsHs (¤ (+&{U;{b;9…(E oÁo¥ý  o¶    oï ,  o· Ö +è  Þ u   ,  oâ &Ü&Ü oþlY0{2<o‰! þ++ofmošjŽi3+9÷ofmošj£1 {Ì:{Æ:Ži  Y  ?à 0rcñp+XrcñpXŒ’,4u¼,(x ¥|o¡ +o& +rR9p( (ñ ,?om(¢–{U;{X;(‚{Ñ:{IsHs (¤ (+&+X X@=ÿÿÿ** !Á0 -i- oäl+,&ofm {g:{u:o¸ oÜkoŠ! +,,ofm {g:{u:o¸ oÜko‹! þþ+,,om(¢–{U;{X;s<þ(—:****0kw{K= {L= {!!(É^ (ü (ý {! (¹^sz {!({ {!{!{!sé:þ(Õ:*01*{*!, {'!+,(ûsû£ (¤þ(¥**0:x(rEäým¨tN {Z= {\= {]= {[= (Ô:s@<(\^(Å+sB<(Ä+sD<(Ä+sF<þ(Õ+*tL{W= {V= (Ô:(Å:{,<þ(’:*tM{Y= {X= (Ô:( :(8;þ(¤:*tJ  {T=þ(Ó:*tK sH< {U=þ(Ô+*0 vy{d= {c= (Ò:{!{!{!{!{!,++{!! {!!{9  sJ<{g:{p:(N+sé:þ(Õ:*0©{dsL<sœ! (6 + s; {Ï8ogm {x8ogm {¶8ogm {·8ogm {Ç8ogm (z (H sé: (Ó:(¹:{)!,on(xn+{*!*:(ƒ }!*B{!þoA *:(* }!*0e{!o+ sØ:*:(, }!*0°{!o- sÚ:*:(2 }!*0²{!o3 sÜ:*:(4 }!*0´{!o5 sÞ:*:(! }!*0|{!ož! sà:*{!*{!*{!*{!*{!*²( }!}!}!}!}!*({ **(Ÿ! *J{;{ù:{I*(œ *00M(:f,%{;{;{ù:{I sY‰(úk**( ! *&(:*{!*{ !*{!!*{"!*{#!*{$!*{%!*{&!*{'!*{(!*{)!*{*!*"} !*"})!*"}*!*0d( }!} !}!!}"!}#!}$!}%!}&! }'! }(! })! }*!*:(é }+!*03}(@l3(tE {;{8; {+!(z! ( +**’(é },!}-!}.!}/!*0 "{,!{-!{.!{/!(•:*’( }0!}1!}2!}3!*Æ{0!{1!{2!{3!s;{;{;(& +*’(k }4!}5!}6!}7!*0 "{4!{5!{6!{7!(“:*’(k }8!}9!}:!};!*0 "{8!{9!{:!{;!(“:*(k **V(˜ }!}?!*0š~s;{?!(7 + ,*{U;|\;(ºi(€iþ,{U;{b;þ+,+.{U;|\;(¶i (ži (n o«i,þ+,*{>!{!!{U;{Z;( ^*:(£! }@!*>{@!('i*’(k }A!}B!}C!}D!*0º{A!{!!(l] 9Ÿ (¸ {A!{&!on{£;(ð (=j {A!{$!ofm{g:{y:(š:{C!(&i,:ofmomj{B!o¤! (å{D!sû£(¤(¥***(˜ **(¡! **(¢! **r(˜ }E!}F!}G!*0“ã{E!-{F!{!!(^+, (ç{G!sû£ (¤(¥+{F!{!! {B8{E8{F!{!!{Ï8(i,(æ{G!sû£ (¤(¥**r(k }H!}I!}J!*0k€{H!{!!(l] ,S (¸ {H!{!!(^,5{H!{%!{J!($N(«{I!sû£ (¤ (¥***(˜ **(¡! **(¢! **r(¡! }K!}L!}M!*0 U(: (; {K!{!!(^,1{K!{L!{M!s$; s&;s(;s*;(”:**V(¢! }N!}O!*0˜ƒ( l@Št_ {A; {N!{!!{B8(i,({N!{!oÆm {U;{[;o¥! þ+,5{N!{N!{ !oÆm {U;{[;{O!o¦! (þ:***(k **VsF;€P!sG;€Q!*( *sD;**usþ*~P!**utþ*~Q!**uuþ*0„ uu,+ ut,+*Zr.8ps§! (8 +o¨! *0Ÿ†þ9‹þ9€uu,+ ut,+ uu,+ ut,+ 3>us,4ts ts (y {U! {U!/*þ**Y**þ,**:¥qo<;*0«‡¥q þ9‹¥qþ9{uu,+ ut,+ uu,+ ut,+ 39us,/ts ts {U!{U!/*þ**Y**¥qþ,**0Mˆþ,D  us-ut-(uu-$ts  ¹y7ž{U!bcXXX * * **6(n o?;*0Љþ9xuq 9iuu,+ ut,+ uu,+ ut,+ 3)us,ts ts {U!{U!þ****þþ*0„Šþ9rþ9guu,+ ut,+ uu,+ ut,+ 3'us,ts ts {U! {U!þ****þþ*0„uq ,oB;**:(3;}U!*{U!*(3;*(3;*:( }V!*2{V!{U!*:( }W!*:( }X!*(©! *"(:*:(ª! }Y!*0&n{Y!{!!(k] ofm {g:{k:*V(«! }Z!}[!*0  {Z!{!! {B8{E8{Z!{!!{[!(k]{Z!{!!(k](i,"(a{Z!{!!{[!(]þ+,{[!s— (˜ **V(«! }\!}]!*0Dn{\!sP;{\!{!!(k] ofm {g:{k:{]!(9 +þ( +*V(k }^!}_!*^{^!{_!(œ:*V(k }`!}a!*^{`!{a!(œ:*V(k }b!}c!*^{b!{c!(œ:*V(k }d!}e!*^{d!{e!(œ:*V(k }f!}g!*^{f!{g!(œ:*V(k }h!}i!*^{h!{i!(œ:*V(k }j!}k!*^{j!{k!(œ:*(¿ *(s*:(Ë }l!*B{l!(’:*V(¬! }m!}n!*0juA,#tA {m!{n!{6=(œ:*t@ {5= {4= {m!{n! (œ:{m!{n!(œ:*:(V }o!*B{o!þ(^*:(8 }p!*F{p!þ(ƒ]*:(­! }q!*>{q!(: +*:(8 }r!*F{r!þ(ƒ]*:(­! }s!*>{s!(: +*0l}t!}u!}v!}w!}x!}y!}z!}{! }|! }}! }~! }! }€!(ç *0 7Ž{!YE !+$8³8£8Ó8Ÿ88â{t!{!! (ŸPsj; sl;{t!{"!{v!{u!(¤ (5 +¥¤ož }{!}!{{!oï ,0{{!oŸ }z!}!{z!}€!*}z!+Ã}!{{!(; +}{!{w!¥¾o¢ }|!}!{|!oï 9å{|!o£ }x!{x!(§ }y!{t!{!! (ŸPsn; sp;{t!{"!{v!{y!(¤ (5 +¥¤ož }~!}!{~!oï ,0{~!oŸ }}!}!{}!}€!*}}!+Ã}!{~!(; +}~!}y!}x!8 ÿÿÿ}!{|!(?+}|!}!}€!*0Êe {!YE+8¥{!E ++R+;+7++++@}!{~!(; +}!{|!(?++}!{{!(; +}!}€! Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{!E +++++ +++ ******"{€!*0({t!{u!{v!{w!sr;*V(k }!}‚!*^{!{‚!(œ:*r({ }ƒ!}„!}…!*r{ƒ!{„!{…!(¦:*r(} }†!}‡!}ˆ!*0 + (§ (¤ {†!{‡!{ˆ!(¨:*r({ }‰!}Š!}‹!*r{‰!{Š!{‹!(¦:*V(k }Œ!}!*^{Œ!{!(œ:*V(k }Ž!}!*^{Ž!{!(œ:*V(k }!}‘!*^{!{‘!(œ:*V(k }’!}“!*^{’!{“!(œ:*V(k }”!}•!*^{”!{•!(œ:*V(k }–!}—!*^{–!{—!(œ:*V(k }˜!}™!*^{˜!{™!(œ:*V(k }š!}›!*^{š!{›!(œ:*V(k }œ!}!*^{œ!{!(œ:*V(k }ž!}Ÿ!*^{ž!{Ÿ!(œ:*V(k } !}¡!*^{ !{¡!(œ:*V(k }¢!}£!*^{¢!{£!(œ:*V(k }¤!}¥!*^{¤!{¥!(œ:*V(k }¦!}§!*^{¦!{§!(œ:*V(k }¨!}©!*^{¨!{©!(œ:*V(k }ª!}«!*^{ª!{«!(œ:*V(k }¬!}­!*^{¬!{­!(œ:*V(k }®!}¯!*^{®!{¯!(œ:*V(k }°!}±!*^{°!{±!(œ:*:(Ë }²!*¦{²!{!!{U;{Z;( ^, o m**V(Ë }³!}´!*Z{³!{´!(¼:*:(Ë }µ!*B{µ!(’:*V(í }¶!}·!*0L*{·!o— -(ô{¶!sû£ (¤(¥*(õ{¶!sû£ (¤(¥*r(U }¸!}¹!}º!*0 "{¸!{¹!{º!(­:(¤:*V(N }»!}¼!*n{»!{¼!(8;(¤:*V(N }½!}¾!*n{½!{¾!(6;(¤:*:(Ë }¿!*B{¿!(’:*V(Ë }À!}Á!*Z{À!{Á!(¼:*V(N }Â!}Ã!*n{Â!{Ã!(8;(¤:*r(€ }Ä!}Å!}Æ!*0={< {< {Ä!{Å!{Æ!(µ:{Ä!{Å!(³:*V(®! }Ç!}È!*Z{Ç!{È!(³:*V(k }É!}Ê!*^{É!{Ê!(œ:*V(¯! }Ë!}Ì!*‚{Ë!{Ì!{Ê;(h (·:*V(°! }Í!}Î!*Z{Í!{Î!(·:*V(N }Ï!}Ð!*Z{Ï!{Ð!(¸:*ò}Ñ!}Ò!}Ó!}Ô!}Õ!}Ö!}×!(±! *0øM{Ö!YE +8¬8ƒ8Á{Ñ!¥Çoô }Õ!}Ö!{Õ!oï ,v{Õ!oõ }Ò!{Ò!{Á;}Ó!{Ò!{Ç;}Ô!}Ö!{Ó!{Ô!s²! }×!*þN+}Ô!}Ó!}Ò!8}ÿÿÿ}Ö!{Õ!(J+}Õ!}Ö!}×!*0‡e {Ö!YE++e{Ö!E + ++++}Ö!{Õ!(J+}Ö!}×! Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Ö!E + + +++***"{×!*0 M{Ñ!þN+sÆ;*(  *0;K(ï rs&p(ñ ,'(ò (,´3(ò t«- {EZ(– **(Œ *0(ø (ù sÌ;þ(# +*(³! *0<‘{Ê;(g rs&p(ñ ,#{Ê;(h (Œ^ ,(g (– **( *RsÐ;{Ä;þ(< +*(Ž **:(´! }Ø!*0 S’(„! (…! {Ø!{!!{Ø!{!!{à8sÎ;sÒ;sÔ;(= + (–  (5+þ*(µ! *"(¶! *(·! *0“(¶! (¸! þ*(¹! *0&•(º! (»! (% +(> +(? +s¼! *(½! *0"–(„! (…! ofm {g:{k:*V(¾! }Ù!}Ú!*Z{Ù!{Ú!(¶:*V(¿! }Û!}Ü!*Z{Û!{Ü!(»:*V(À! }Ý!}Þ!*Z{Ý!{Þ!(º:*V(À! }ß!}à!*Z{ß!{à!(º:*:(Á! }á!*0°{á!oül ofmoj*V(£ }â!}ã!*j{â!{%!{ã!þ(N*:(í }ä!*0**(ù{ä!{U;{X;sû£ (¤(¥*V(L }å!}æ!*º{å!{B8{å!{E8{æ!{?8{Á;(i*V(L }ç!}è!*º{ç!{B8{ç!{E8{è!{?8{Á;(i*(Œ *"(i*V(Ý }é!}ê!*^{é!{ê!(À:*V(L }ë!}ì!*º{ë!{B8{ë!{E8{ì!{?8{Á;(i*V(L }í!}î!*º{í!{B8{í!{E8{î!{?8{Á;(i*V(L }ï!}ð!*º{ï!{B8{ï!{E8{ð!{?8{Á;(i*V(L }ñ!}ò!*º{ñ!{B8{ñ!{E8{ò!{?8{Á;(i*V(L }ó!}ô!*º{ó!{B8{ó!{E8{ô!{?8{Á;(i*:(Á! }õ!*6{õ!oj*:(£ }ö!*J{ö!{ß:{I*:(í }÷!*0%*({÷!onjsû£ (¤(¥*V(L }ø!}ù!*º{ø!{B8{ø!{E8{ù!{?8{Á;(i*(¯ *"ošQ*0D}ú!}û!}ü!}ý!}þ!}ÿ!}"}"(Â! *0 {"YE +8…+x8×8Ø{û!o¼j¥oà }ÿ!}"{ÿ!oï ,G{ÿ!oÄ }þ!}"{ú!{!!{ý!{þ!(Q}"*}þ!+¬}"{ÿ!(O+}ÿ!}"(¶S{ú!{!!{ú!{"!{ü!{ý!(hP¥*}"}"*0”e {"YE+8o{"E ++$+ + +++}"{ÿ!(O+}"}" Þ t   Þ&8wÿÿÿþ,z*[w ê{"E +++ +++****"{"*0 #{ú!{û!{ü!{ý!s <*ò}"}"}"}"}"}"}"(Â! *0ì{"YE +8™8…8µ{"{"o‹QoÃ! }"{"¥o! }"}"{"oï ,G{"o‘! }"{"{"(Ä! -}"{"}"*+}"+¬}"{"(@ +}"}"}"}"*0‡e {"YE++e{"E + ++++}"{"(@ +}"}" Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{"E + + +++***"{"*0 {"{"s<*²(¯ } "} "} "} "} "*0 R{ "(Ê:-{ "o—Qo—Qþ+,'{ "{ "{ "{ "{ "þ(Ç:**:(¯ }"*F{"(Ê:þ*:(ù }"*0]—{0 {0 {0 {0 ,+ ,+u£- u¡-+,*{"{!!( ^*’(I }"}"}"}"*0 j{"omR, ooR+,+omR,{"ooR+-/{"{"{!!{"{"!{"{"(\P**r(I }"}"}"*¾{"{"!{"o{Roµ þ{"þþþ*’(¯ }"}"}"}"*0 =oQ,2{"{"{!!{"{"!{"{"þ(]P**’(¯ }"}"}"}"*0 3{"{"{!!{"{"!{"{"þ(]P*V(Ë }"} "*†{"{ "{U;{Z;(œ:*V(k }!"}""*^{!"{""(œ:*r(' }#"}$"}%"*0 {#"{%"{$"(Æ:*r(Å! }&"}'"}("*ú{&"{("{Ó:(¹:{&"{'"{("s(<ok(¢+*:(Á! })"*6{)"oj*:(£ }*"*>{*"omj*r(k }+"},"}-"*r{+"{,"{-"(Ñ:*r(Ë }."}/"}0"*š{."{/"{0"{U;{Z;(Ñ:*r(Æ! }1"}2"}3"*†{1"{2"{3"{F=(Ñ:*:(V }4"*B{4"þ(^*:(8 }5"*F{5"þ(ƒ]*:(­! }6"*>{6"(: +*r(' }7"}8"}9"*0~˜{7"{!!{7"{!!{ 9{Þ:(Ž^ (– (5+,F{8"s`m(k^ {7"{!!(W`-( {9"sû£ (¤(¥***:(í }:"*0%*( {:"onjsû£ (¤(¥*:(Ë };"*B{;"(’:*V( }<"}="*Z{<"{="(Ò:*V(Ý }>"}?"*Z{>"{?"(Å:*V(ÿ }@"}A"*Z{@"{A"(Ö:*V(þ }B"}C"*Z{B"{C"(Õ:*V(L }D"}E"*º{D"{B8{D"{E8{E"{?8{Á;(i**o &**þ(:+*þ*6s¸ €F"*~Š"*rR9p*~‹"*VsÉ! sÊ! s‹<*ª{S"{T"(A +{V"{W"s‘<o”<*08š{T" {S" (Ë! {T"X{U"{V"{W"s‘<*07{S"{T"{U"{V" s‘ (Ì! {W"s‘<*0 /Ÿ{S"{T"{U"{V"{W" (Í! s‘<*0 ¸ (›] (îo@—tã {`<(›] (îo3{tß {L<oÆm{U;|\;(»i,P {L< {M<{b<{a< {c< {d<   (ª+sÎ! (Ï! *(îoEI*tã  {b<(³ -è {`<  {c<  {a<  (ª+8Åþÿÿtß  {L<oÆm{U;{c;uþþ9€ÿÿÿ {L< {M<  {N< {M" (r_ (¤ sÎ! (Ï! *0¢ (k (X<*â{B8{E8{·9(i,*{B8{E8{¸9þ(i*0&´{M"(§` {M"(3` (›] (îo@4tã {`<(›](îo@tß {c<(Ê 9ú {c<{M"{L<(Z<9Û(Ë {L<(Ê  {d< {Q"oÐ!  {M"(r_ (<^(_{n=s¬<¥(B +  -+? (} om(¢–( {U;{X;sû£(¤(¥{Q"oÑ! s®<  (j< (¤s þ(C +*(Y<9Î(Ò! (Ó! {M"(Z<þ9«(Ò! (Ó! (Ò! (Ô! (Ò! (Õ! (Ò! (Ö!  (Ò! (×!  (Ò! (Ø! ( ] {M"(j`(ü (Ù! (Ú!  (ý (Û! (Ü! (Ý! (û oÆm{U;{`;,;oÆmoßl--{M"(œ`(€ (ƒ ( sÞ! +PoÆm(àh{M"oÆm{U;{Z; (_^(€ (ƒ ( sÞ! (ß! (à!  (á! !(â! ",T (Ê -'r&poÆmom(  s¤s—<z $$(Ë (k (l $(Ê sv + (k  sv ##(ø $#(ù %(P<,DrX'ps  (D +&&s´<oÆmom(¢–$oè %oè (ç+&+%oè "o÷ /+s¶<"o÷ %(E +"(F +9ï(P<,-rÊ'psê (>+oÆmom(¢–oì &+oÆm{U;{b;'', '(E +?r(poÆmom( oÆm{U;{X;s¤(¤(5+{M" ()`(((ø )((ù *{M"*)(ú (û % ('`8 ûÿÿ"o÷ %(m+++(ù ,+(ø -s¸<sº<-"(G +.(P<,Irl(psä! (H +//sÀ<oÆmom(¢–sÂ<.(I +"o÷ (J +&+!9½$.(æ! 22¥†(K +1oÆmoül (q<3,+,+4(T<5sÄ<"¥‰(.+(Ã+65 6(k<75  (r<8oÆmom9oµ  Y: 43789:1(a<+ .(b<0-(Ê 9Ï-11(Ê (Ê :º"(H 9®";;(I (q :™;(H (H :ˆ1(Ë **(îoE*([<<<0(Ìs+#0+*tÞ=={I<(øn3Ë+à0,þ(C +*(îoEé3­ÀÃSbБ(îoEe¦*Fr')psç! (L +oè! ( ]s¤s—<ztè{|<8ì÷ÿÿ{M"{N"(–H8Í÷ÿÿtà>>{Q<(®q3„>{P<>{O<**([<([<(Ìs*tæ??{s< ?{n< ?{q<@?{m<A?{r<B?{o< ?{p<( sû£s—<ztéCC{<C{~<DC{< C{€< D(ÒpETQ 1™   S.…—ƒW&íÃ|sþÙDˆP ù žK re)p s¤s—<zDtþ{À<EE (e<F (k<7 (c<GF7G(³s*6 {M"6(l_(j<8 (c<G8G(ªs*Dt{Í<HH (q<3 (k<7 (c<G37G(°s*Dt I (Ê 9(ÿÿÿ $$(Ê (Ê :ÿÿÿI{Ó<E6I{Ô< $(Ë  6(k<7E (e<FF(é! 3F(ê! 939 së! JJ7([<(´s*Dt K6K{Ð<L( sû£s—<zDtM (Ê -#6M{Ï<L( sû£s—<z6M{Ï<L $ L6$(]<*DtN (Ê 9þÿÿ $$(Ê (Ê :ýýÿÿ6N{Û< $(Ë  {M"6(l_(j<88 ([<(¶s*DtOO{Ü<( 9–O{Ü<PP( ('¶EaµtguïO{Ü<Q( sû£s—<zP( t .RP( ( -!R{ˆ[S6 $ S6$(\<*O{Ü<Q+¢P( t.TP( ( ,VP( QQ( ('¶!3/Q( ( -T{…[ $6S+O{Ü<Q8>ÿÿÿO{Ü<Q80ÿÿÿT{…[ $6S8]ÿÿÿP( t .UP( ( -\U{[S6 $ 6(k<7 S{Z{Z(n<3$(_<G3S{Z{Zsì! 7G(Õs*O{Ü<Q8”þÿÿP( t .VP( ( -V{Œ[ $6S8uÿÿÿO{Ü<Q8TþÿÿP( ( :  (Ê 9† $$(Ê (Ê ,f$(Ê %%(Ê (Ê -A%(Ë $(Ë *{M"*(r_ {M"  *(Ý_8CðÿÿO{Ü<Q8¿ýÿÿO{Ü<Q8±ýÿÿO{Ü<Q8£ýÿÿO{Ü<Q8•ýÿÿP( ( -h (Ê ,Q $$(Ê (Ê -1$(Ë {M" {M"(r_(ç_8±ïÿÿO{Ü<Q8-ýÿÿO{Ü<Q8ýÿÿO{Ü<Q8ýÿÿO{Ü<Q8ýÿÿDtÿWW{Á<H $H (q<3H (q<XsÆ<H(T]o•j(G+6 6(k<7$(c<GX7s8t(í! G(Ös0 {M"{¦8(j<880(·s*DtYY{Î<L $6$(_<G (k<7L (f<FF(ê! 9L{v;o­m, F7G(²s*LonZL{v;HH (q<3HofmZ(h_, F7G(Õs*Hofmo~j(T<55 Z{×:(j<8398(í! sî! 7G(Ós*Dt[(³ :x÷ÿÿ (Ê 9l÷ÿÿ $$(Ê (Ê :W÷ÿÿ[{×<H$(Ë [{Ø< H(T]\\o•j oï! ZH (q<3 Z{×:(j<8([<0 H(k^(j<]3Z{ß:{I8(í! sî! (í! ]0(·s(ð! (ñ! (Òs*(³ 9¤öÿÿ66(³ (³ 9öÿÿ6(³ ^^(³ (³ :uöÿÿ (Ê 9iöÿÿ $$(Ê (Ê :Töÿÿ$(Ë 6(´  ^(´ )([<0{M" )(ƒ],0*  (j<0(·s*(³ 9ûõÿÿ66(³ (³ :æõÿÿ (Ê :Úõÿÿ6(´  {M"  ( `80ìÿÿDt__{á<(žqE§—8(³ :õÿÿ (Ê :sõÿÿ_{â< (¤ (d<(¹s*(³ :Gõÿÿ (Ê 9;õÿÿ $$(Ê (Ê :&õÿÿ_{â<$(Ë  (¤ (d<([<(ºs*(³ :èôÿÿ (Ê 9Üôÿÿ $$(Ê (Ê :Çôÿÿ_{â<$(Ë oÆm{U;{c;``u9Ž`ta{M"oÆm(ÿ],qa{:HH (q<3oÆmom9 oÆm{U;{Z;(j<8398(í! sî! (í! ([<(ð! (ñ! (Ós* (¤ (d<([<(»s*(³ :Øóÿÿ (Ê :Ìóÿÿ_{â< (¤ þ(d<*(³ 9£óÿÿ66(³ (³ :Žóÿÿ $6(´    (j<$(c<(¾s*(³ :[óÿÿ (Ê 9Oóÿÿ $$(Ë (îo@9óÿÿ$(Ë tább{W<(g 9óÿÿb{W<cc(g (g :óÿÿ$(Ê (Ê 9ïòÿÿ$(Ê %%(Ë (îo@Ôòÿÿ%(Ë tádd{W<(g 9µòÿÿd{W<ee(g (g :›òÿÿ%(Ê (Ê :Šòÿÿb{X<d{X<*([<*([<(Îs*Dtf(³ :Kòÿÿ (Ê 9?òÿÿ $$(Ë (îo@)òÿÿ$(Ë tább{W<(g 9 òÿÿb{W<cc(g (g :ðñÿÿ$(Ê (Ê 9ßñÿÿ$(Ê %%(Ë (îo@Äñÿÿ%(Ë tádd{W<(g 9¥ñÿÿd{W<ee(g (g :‹ñÿÿ%(Ê (Ê 9zñÿÿ%(Ê ,,(Ê (Ê :`ñÿÿd{X<b{X<*f{Ç<g,(Ë hg(Šq3!*([<([<h([<(Ís*( sû£s—<zDti(³ :æðÿÿi{ç<i{ì<6i{è<i{æ<i{ê<ji{ë<^ $i{í<k joˆ³(n<3,+&(ÄqE+ sÈ<jo³(M +7 jo޳(o<8joг9,9r:ÝpoÚ +,9rDÝpoÚ +^6(ß+l 3789l6oµ $(a<*(³ 9Æïÿÿ66(³ (³ :±ïÿÿ (Ê 9¥ïÿÿ $$(Ë (îo@ïÿÿ$(Ë tább{W<(g 9pïÿÿb{W<cc(g (g :Vïÿÿ$(Ê (Ê 9Eïÿÿ$(Ê %%(Ë (îo@*ïÿÿ%(Ë tádd{W<(g 9 ïÿÿd{W<ee(g (g :ñîÿÿ%(Ê (Ê :àîÿÿd{X<b{X<*6(´  *([<([<(Ïs*(³ 9¡îÿÿ66(³ (³ :Œîÿÿ (Ê 9€îÿÿ $$(Ë (îo@jîÿÿ$(Ë tább{W<(g 9Kîÿÿb{W<cc(g (g :1îÿÿ$(Ê (Ê 9 îÿÿ$(Ê %%(Ë (îo@îÿÿ%(Ë tádd{W<(g 9æíÿÿd{W<ee(g (g :Ìíÿÿ%(Ê (Ê 9»íÿÿ%(Ê ,,(Ë (îo@ íÿÿ,(Ë támm{W<(g 9íÿÿm{W<nn(g (g :gíÿÿ,(Ê (Ê :Víÿÿn(h e(h om{X<d{X<*b{X<h6(´  o(g<po(U<5(g<q(U<rh([<p5*([<qr([<(Ðs*Dts(³ :ºìÿÿ (Ê :®ìÿÿs{Â<t(šp{M"{¡8(¤ (¥ {M"v vsÊ<utŒñ,+ r¨9ps‚ ztŽi  Üw6x5yz Y::z2'wzutz£oÌ ¤ÜzXzz:X3Ùy5x6w(W+ (æo8lâÿÿDt{(³ :Üëÿÿ (Ê :Ðëÿÿ{{Ã<|(šp{M"{8(¤ (¥ {M"v vsÌ<}|Œ,+ r¨9ps‚ z|Ži  Üw6x5yz Y::z2'wz}|z£€oÍ ¤ÜzXzz:X3Ùy5x6w(W+ (æo8Žáÿÿ (Ê 9ëÿÿ $$(Ê (Ê :òêÿÿ$(Ë 8UáÿÿDt ~ (Ê 9Åêÿÿ $$(Ê (Ê :°êÿÿ~{Ñ<H6$(Ë ( sû£s—<zDt  (Ê 9oêÿÿ $$(Ê (Ê 9Zêÿÿ$(Ê %%(Ê (Ê :@êÿÿ%(Ë 6{Ö< $(Ë *{Õ<E( sû£s—<zDt€(³ :íéÿÿ (Ê 9áéÿÿ $$(Ê (Ê 9Ìéÿÿ$(Ê %%(Ê (Ê :²éÿÿ%(Ë €{Ù<H€{Ú< $(Ë *( sû£s—<z( sû£s—<zDt{à<( sû£s—<ztã‚‚{b<(³ 9K‚{c<(Ê :Í‚{`<(›](îo3Gt߃ƒ{L<‚{b<ƒ{N< ƒ{M<‚{a<  þ(d<*‚{b<‚{d< ‚{`<*‚{c< ‚{a< (³ þþ,( sû£s—<zsÎ<*([< þ(C +*‚{b<‚{d< ‚{a< ‚{`<‚{c< {M" (õ]) (k  (Úo)(¤   (Úo8UÞÿÿ‚{`<(›](îo3{t߃‚{c<(Ê -2ƒ{L<‚{b<ƒ{N<ƒ{M<‚{a<  8³þÿÿ‚{b<‚{d<‚{`<‚{c<‚{a<  * 8¿þÿÿ‚{b<‚{d<‚{`<‚{c<‚{a<  * 8þÿÿtÞ=={K< ={J< ={I<„ „ þ(l<*t߃ƒ{L<ƒ{N< ƒ{M< (¤ þ(d<*tå……{j<…{i<††(^<‡‡(ò! ,-‡(ò! ˆ‡(ó! 5ˆ(ô! ‰‰5([<(«s*‡(ó! 8¶Üÿÿt䊊{f<Š{e<‹‹(\^csÐ<c(N +ŒsÒ<c(O +55([<0Œ5sÔ<‹(P +(Q +0(¯s*tább{W<cb{X<c(%`ŽŽ(ò Ž(ó *(g<p(U<*([<0p0(¦s*tê{‚<([<(§s*tâ{^< ( sû£s—<ztç{w<{y< {u< {v<‘{t<’  (j<‘þ(m<*tà>>{Q<(®q@Èâÿÿ>{P<>{O<**([<([<(Ìs*tæ??{q<(Î 9…âÿÿ?{q<@@(Ð {<=( 9fâÿÿ@(Ð {<=““( ( :Gâÿÿ@(Î (Î :6âÿÿ{M"?{n<(^9âÿÿ?{n< @(Ð {;=“( c@(Ð ”?{s< @(Ð {==@(Ð {9={@=) c{M"{M"”("^(g^(±]**([<0 )(j<880(Ñs*0Bµ(k< {Z{Z(n< (_< {Z{Zsì! (Ôs*0ª¶(k< (_< (f< (é! (ê! {v;o­m, (±s*on{v;ofm(h_, (Ôs*ofmo~j(T<{×:(j< (í! sî! (Òs*0ì·{-< (îoEtš(îo 3Rté {~<(Òp3<{€<(Ê ,/{€< (Ê (Ê -(Ë {,< (W<sõ! *{,<(g<{-<([<sö! (÷! (U<sõ! *té {~<(Òp@Mÿÿÿ{~<t{Ü<( 9/ÿÿÿ{Ü<( ('¶B@ÿÿÿ( ( :ÿÿÿ{<(³ 9òþÿÿ{<  (³ (³ :Ùþÿÿ{€<(Ê 9Éþÿÿ{€< (Ê (Ê :²þÿÿ (´  (Ë {,< (V<sõ! *{,<oöl9|þÿÿ{,<{-<(W<sõ! *05¸(Ê -(ð! * (Ê (Ë (`<(c<(ñ! *0 ù¹(îo @áté {< {~< {< {€<(ÒpE?Z þ([<*t{á<(žq3Ý{â< (¤ þ(d<*t {Ð< (]<*t{Ü<( ,{Ü<  ( ('¶EaòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿDòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿƒòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿòýÿÿ8íýÿÿ ( t .  ( ( :Îýÿÿ {Š[ {Ý<   (\<* ( t .  ( ( :ýÿÿ {‰[ {Ý<   (\<* ( t. ( ( :Pýÿÿ(Ê 9Dýÿÿ(³ 95ýÿÿ  (³ (³ :!ýÿÿ{¥[(Ê  (´ (Ë {¦[{£[{¤[{ÅYo YE K°@þ([<*(Ê ,ì(Ê (Ê -Ú(Ë {M" (á_þ([<*(Ê ,¬(Ê (Ê ,š(Ê (Ê (Ê :€ÿÿÿ(Ë (Ë {M" (â_þ([<*(Ê 9Dÿÿÿ(Ê (Ê 9/ÿÿÿ(Ê (Ê (Ê 9ÿÿÿ(Ê (Ê (Ê :ûþÿÿ(Ë (Ë (Ë {M" (ã_þ([<*(Ê 9´þÿÿ(Ê (Ê 9Ÿþÿÿ(Ê (Ê (Ê 9…þÿÿ(Ê (Ê (Ê 9kþÿÿ(Ê (Ê (Ê :Qþÿÿ(Ë (Ë (Ë (Ë {M" (ä_þ([<*þ([<*0™» (k<  (_< ,+,K (¡– ,sî! (Òs*(R + (ø!  (ù! sî! (Ós*,s8t(Ös*  sFt(×s*0‹½oÆm {U;{c; u,dt {: {M"oÆm(ÿ] (q<(k<oÆmomsÖ<(S +(©s*r)ps\ zFsØ<þ(T +*0 ¦¿oÆm |V"(ú! ,3|V"(û! (§ (£ {M" (Ñ_þ([<*|W"(ü! ,|W"(ý! þ([<*|S"(þ! ,8(³ þþ,rÃ)ps¤s—<z|S"(ÿ! (£s*{U;|\;(¶i(œi(n o«i, {R"(w<(n o‚<+,{U;{Z;(j<(½s*{U;{Z; {U;{c;u,(" (b<*-(¾sû£s—<z{Q"oÐ!  {Q"{M"(¼q(Òo(ú_oÑ! (j< (¤s*0g{t;(q<{M"{V8{M"{*9(6+,r$p+-{M"{V8{M"{+9(6+,r%$p+{u;sì! *0L{v;(q<{v;ofmon(h_,{v;ofmon(i_+{w;sì! *0EÀ{U;{X;{U;{Z;(j< om{U;|\;(ºi(€iþ(Ús*0XQ {U"{;{ü:o" -6sÚ<{P"(U + -{P"o" {P"o" *(Õ *(Õ *>sÜ<þ(+*0ÜÁ{M"(R] ($n3ktv {ƒ;(³ ,W{ƒ; (³ (³ -C{M"{‚;(^,0(´ {‚;{M"(^ (j<s" (¡s*($nE|Ϙý(sû£s—<zty{ˆ;{‡;{t;(p<,  (• 8ùþÿÿ(q<(k<s" (¢s*tv  {ƒ; {‚;+œtx  {†;  {…;  (j< (j<s" ( s*tw  {„;{M"(I]8Zþÿÿtz{‰;(V +(Ÿs*(sû£s—<z^sÞ<(i<þ(W +*0 Â{M"(é_ :ä(j< (ønE+E_y“­ÇáûI/ci(sû£ s—<zt¡ {à;(¿s*t¢{á;(Äs*t£{â;(Ås*t¤  {ã;  (Æs*t¥  {ä;  (Çs*t¦  {å;(Ès*t§{æ;(És*t¨{ç;(Ês*t©{è;(Ës*t­{ì;(Âs*t¬{ë;(Ás*t¯{î;(Às*t®{í;(Ãs*(¬s*{M"(^,(­s*(¼s*(â þ([<*0 pÃuÄ-ouÅ:Þtà {< {< {< sà<{< -(sû£s—<z (© (m<þ(X +*tÄ{<{<£Ö  {)<  {*< (a+  (Ÿ+ sâ<sä< (N + sæ< (O +([<þ(Y +*tÅ  { < { <(^<(ò! ,/(ò! (ó! (ô! (m<(«s*(ó! 8þÿÿ0ÞÄoõ² uu--uw--oõ²oy²8¡rS@p8–tw- {ÁY {M"{½9-! oG²{M"{F8{±;(ñ þ+,B{N"oÐU oËUu’,+#t‘{´;on{¨;+9[ÿÿÿ{ÁY rS@p oý²søs*0ÞÆ(,³E ”F8šššzšt‹-{ûY o ³(n<sè<o³(M +s" (¢s*tŠ-{úY +Æt‰- {ùY {øY {ÅYo (o<s" (¡s*t-{ÿYi(Ÿs*(R<*(sû£s—<z0RÇofm {g:{q: ( k33t { :{µ:,{ : {M"{¤8oVk( **0¬È(p< :vofm {g:{q: ( k3Vt { :{M"{½9- {µ:þ+,) { :{¬:(v†oý²rS@psøs*ofmo½ju[,jt[{w={q;Œn,+,#{M"{½9,ofmoŒj+þ+,oý²rS@psøs*(n<*t\{z=  (,³E 2(sû£  s—<z t‹-{ûY  o ³(n<* tŠ-{úY +á  (•  {M" (k]8Tþÿÿ0 , (• (j<*(R<*0 ªÉ(S< ([< ( ] {M"{M"(I¥(ðn {£8(Ðo{M"(?¥  (Þn {š8(Ðo{M"(@¥  (Þn {š8(Ðo{M"(A¥  (Þn {š8(Ðo{M"(B¥  (Þn {š8(Ðo(k (l (l (l (l (l  sê<(u+(³_{M"{M"r/*p(ðn {£8(Ðo(k (l (l  sì<(u+(³_  ([<  (Øs sî<{P"(Z +(/+{Q"([ +s *0YÊ(w<(S< {U;{X; oül(q< {U;{`; 9 oßl:ñ(³ sÁm{M"(a^(€ (  (ƒ  oÆmoýl  ofmo~jo†  sð< ¥‰(.+(Ã+ {i;{AL((n o*(T< (k< (r<o†  Y,s8t(«u*sFt(©u*{M"(ÿ]su(§u*^sv<€I"sv<€J"*:( }H"*~I"**({<þ*~J"**({<þ*{H"*Zr.8ps" (\ +o " *01.þ, þ,{H" {H" 3*Y**þ,**:¥ôo}<*0BË¥ô þ,%¥ôþ,{H" {H" 3*Y**¥ôþ,**0þ, ({<3 * **6(n o€<*0.Ëþ,uô ,{H" {H" þ**þþ*0*.þ,þ,{H" {H" þ**þþ*0Ìuô ,oƒ<**{M"*{N"*{O"*{P"*{Q"*{R"*Ò( }M"}N"}O"}P"}Q"}R"*{S"*{T"*{U"*{V"*{W"*²( }S"}T"}U"}V"}W"*r( " (A +( " ( " s‘<*0B{U"o " {S"{T"{U"{;{ü:o" {V"{W"s‘<*Bs•<þ(] +*(" *&o“<*:(Ÿ }X"*(Ÿ *0 (  *0 (¡ *{X"*0-þ,$ ¹y7žtù(›<(ô+bcXXX **6(n oœ<*0D*þ,5u ,)(^ +-*tù(›<tù(›<þ(õ+**þþ*þþ,0þ,((^ +-*tù(›<tù(›<þ(ö+**þþ*0*u , þoŸ<**V(Ÿ }Y"}Z"*(Ÿ *0 (  *0 (¡ *{Y"*{Z"*0VÍþ,M ¹y7žtú(¦<(¿+bcXXX ¹y7žtú(¥< , ( +bcXXX **6(n o§<*0c*þ,Tu ,H(_ +-*tú(¥<tú(¥<(ñ ,tú(¦<tú(¦<þ(À+***þþ*0^þ,Oþ,G(_ +-*tú(¥<tú(¥<(ñ ,tú(¦<tú(¦<þ(Â+***þþ*0*u , þoª<**:(" }["*v{["|S"(þ! ,(à **V(" }\"}]"*j{\"{]"([<(¥s*:(ƒ }^"*B{^"þoA *:(* }_"*0e{_"o+ s°<*:(0 }`"*0°{`"o1 s²<*(" *Voñ (ž]oè þ*V(" }a"}b"*j{a"{b"([<(¥s*(" *0(oñ -(k *3 (k (l *(ž]*:(ƒ }c"*B{c"þoA *:(" }d"*0e{d"o" s¼<*:(" }e"*0Î{e"o" s¾<*(" **þ(` +*(Ü *"(f *(Ø *"{×:*r(" }f"}g"}h"*j{f"{g"{h"(o<*V(K }i"}j"*z(Øn{i"{j"{¡8(Ðo*V(M }k"}l"*z(Ün{k"{l"{8(Ðo*V(" }m"}n"*j{m"{n"([<(¥s*V(" }o"}p"*R{o"{p"(g<*(" *&(U<*V(" }q"}r"*n{q"{r"{-<þ([<*V(" }s"}t"*R{s"{t"(c<*V(" }u"}v"*Z{u"{v"þ([<*:({ }w"*:{w"(åh*(V *:($nþþ*r( " }x"}y"}z"*j{x"{y"{z"(j<*Ò(!" }{"}|"}}"}~"}"}€"*0 Ï{< {< (woE¹Ì'ŸtÌ {< {<{{"{|"{€"([<{{" {"(e<{{"{|"{"(k<(µs{{"{|"{}"{~"(m<(¨s*tÎ{<(øn@—{<t¡  {à;,@{{"{|"{€"([<{{"{|"{}"{~"(m<(¨s*{{"{|"{€"([<{{"{|"{}"{~"(m<(¨s*{< {{"{M"{€"(r_ {{"{M"{" {€" {" (Ðo(Ý_ {{"{|" ([<{{"{|"{}"{~"(m<(¨s*{€"(îo@Ä{€"tß  {L<{|"|V"oÆm(ú! 9’ {L<{|"|V"oÆm(û! (§  (£  {{"{|"{" (j<{{"{|" ([<(¸s{{"{|"{}"{~"(m<(¨s*{{"{M"{€"(r_ {{"{M"{" {€"(ön{" (Ðo(Ý_ {{"{|" ([<{{"{|"{}"{~"(m<(¨s*tÏ{< {<{{"{|"{€"([<{{"{|"{" (j<(¸s{{"{|"{}"{~"(m<(¨s*rE*p{"s¤s—<z({"sû£s—<zV("" }"}‚"*‚{"{‚"([<sö! («s*V(" }ƒ"}„"*R{ƒ"{„"(g<*(" *&(U<*r(" }…"}†"}‡"*j{…"{†"{‡"(o<*:(h }ˆ"*:{ˆ"(r_*:(h }‰"*:{‰"(r_*(Œ *"(i*(Ü *"(f *Ör§*p(ž¥€Š"rÉ*prR9psøs(í! s" (¢s€‹"*00Ñs&= (:^{Ž"(@](2^(K^{m=o#" *Fs$" þ(+*0 Ò(›] (îoEZr•ó=°) aásE%tà {P< {O<  (õ<+ˆtå{j< {i<(=8WÿÿÿtÞ{K<(a +**tê{†<{‚< (õ<(a +*tæ  {n< {q<  {r<  {o<  {p< (a +(õ<  (ö<  (ø<*té  {< {< {~< {€<(ú<*tã{b<{a<{`< {c<(a +s*=(+(õ<(ü<*tá{Z<{Y<{W<(º s,=(k+(® (¯ (‚s(¶o(—]þ(û<*tâ{\<{_<(…s(® (‚s(¶o(a +(‘]þ(û<*të{ˆ<8Pýÿÿtç{y<{w<{x<{v<(a +(=(þ<*tä{f< {e<( =8Ðüÿÿtè{|< {{< {z< (õ<(õ<s.=þ(! +*r™Þps\ zJs0=þ('+*0(Ó{<= {== s2=(b +þ(õ<*Js4=þ((+*r(a +s6=þ('+*0_Ôs8=(+(ü<(ÒpE¡I*t {í< {ì< {ë< s:= (+s<=(+s>=þ(+*t{à<{3; {à<{7;{à<{6; (c +s@=(k +sB=þ(+*tsD={Ý<þ(+*0îÕ(îoE** þ(õ<*të {ˆ<+{Ž"{"(šH (½ (¾ (¿ (¼ (À (a +sF=(b +sH=(d +sJ= (d +þ(õ<*FsL=þ(Y+*FsN=þ(Y+*0DVŒô,+ r¨9ps‚ zŽi  Y 2£Ö(ÿ<X X3ä*J{*<þ(õ<*0™W  uÅ-& uÃ-FtÄ sP={<þ(Y+*tÅ { < { <  (=+¥tÃ{<{<{<{<þ(=*¦(õ<sR=()+sT=þ(*+*0¶Ö(woE334^tÌ sV={<þ(+*tÍ {<(a +**tÏ {< {<(a + (a +*tÐ{ <{<(õ<sX=þ(+*0-[{Ä; {Ã; sZ=($ +s\=þ(# +*Fs^=þ(+ +*0'ƒ{4< {3< s`=(, +(=*Zsb={5<þ(+ +*0@{U;{a;(=sd={U;{b;(- +{U;{Z;(a +*0V×{,<(={,< {U;{b; , (E +(„s{-<{,< {U;{Z;þ(û<*Fsf=þ(Ä+*¦sh={Ý:(+ +sj={Þ:þ(+ +*0Øsl={g:{p:(+ +oj{Æ: Œu,+ r¨9ps‚ zŽi  Y  2 £2(e + X X3æ{g:{q:( kþ,sr=o›jþ(3 +**Fst=þ(Ä+*F{L=þ(=*Fsv=þ(Ô+*0×Ù(rEušC\tN {Z= {\= {[= sx=(Ä+sz= (Ä+(=*tL{V=þ(=*tM{X=þ(õ<*tJ{T={L=8GÿÿÿtKs|={U=þ(Ô+*Fs~=þ(Õ+*0#Ú{d= {c= ( =þ(=*0?Ý(z s%= (=(=(= s€=(+ +{‘"þ(f +*.s=€"*( *~"*&*Zr.8ps%" (g +o&" *nþ, þ,**þ,**:¥ o=*0,Þ¥  þ,¥ þ,**¥ þ,**0þ, & **6(n o=*nþ, u ,**þþ*Rþ,þ*þþ*0Þu  ,o=**{Ž"*{"*{"*{‘"*"}‘"*’( }Ž"}"}"}‘"*:( }’"*0I¡{;|û:(j (ái (n oòiþ,{’"{’"{‘"(u! ($=**V(k }'" }(" *Z{'" {(" (h +*V(k }•"}–"*Z{•"{–"(a +*(¿ *(s*V(¬! }—"}˜"*0guA,"tA {—"{˜"{6=(a +*t@ {5= {4= {—"{˜" (a +{—"{˜"(a +*r({ }™"}š"}›"*r{™"{š"{›"(÷<*V(Ë }œ"}"*Z{œ"{"(=*r(} }ž"}Ÿ"} "*0 + (§ (¤ {ž"{Ÿ"{ "(ù<*r({ }¡"}¢"}£"*r{¡"{¢"{£"(÷<*V(k }¤"}¥"*Z{¤"{¥"(a +*V(k }¦"}§"*Z{¦"{§"(a +*V(k }¨"}©"*Z{¨"{©"(a +*V(k }ª"}«"*Z{ª"{«"(a +*V(k }¬"}­"*Z{¬"{­"(a +*V(k }®"}¯"*Z{®"{¯"(a +*V(k }°"}±"*Z{°"{±"(a +*V(Ë }²"}³"*Z{²"{³"(=*V(Ë }´"}µ"*Z{´"{µ"(=*V(Ë }¶"}·"*Z{¶"{·"(=*V(N }¸"}¹"*Z{¸"{¹"(õ<*V(N }º"}»"*Z{º"{»"(õ<*V(N }¼"}½"*Z{¼"{½"(õ<*V(€ }¾"}¿"*07{< {< {¾"{¿"(={¾"{¿"(=*V(®! }À"}Á"*Z{À"{Á"(=*V(k }Â"}Ã"*Z{Â"{Ã"(a +*V(k }Ä"}Å"*Z{Ä"{Å"(a +*V(°! }Æ"}Ç"*n{Æ"{Ç"{È;(õ<*V(¯! }È"}É"*–{È"{É"{Ê;(h {È;(õ<*V(¾! }Ê"}Ë"*Z{Ê"{Ë"(=*V(¿! }Ì"}Í"*Z{Ì"{Í"(=*V(¾! }Î"}Ï"*Z{Î"{Ï"(=*V(À! }Ð"}Ñ"*Z{Ð"{Ñ"(=*V(Ý }Ò"}Ó"*Z{Ò"{Ó"(=*V(¾! }Ô"}Õ"*Z{Ô"{Õ"(=*V(¾! }Ö"}×"*Z{Ö"{×"(=*V(¾! }Ø"}Ù"*Z{Ø"{Ù"(=*V(¾! }Ú"}Û"*Z{Ú"{Û"(=*r(' }Ü"}Ý"}Þ"*r{Ü"{Ý"{Þ"(e +*r(Å! }ß"}à"}á"*0C{ß"{à"sn={Ó:(+ +{ß"{à"{á"sp=ok(¢+*V( }â"}ã"*Z{â"{ã"( =*V(þ }ä"}å"*Z{ä"{å"(=*V( }æ"}ç"*Z{æ"{ç"( =*V(Ý }è"}é"*Z{è"{é"(=*V(þ }ê"}ë"*Z{ê"{ë"(=*V(ÿ }ì"}í"*Z{ì"{í"(=*V(¾! }î"}ï"*Z{î"{ï"(=*Zs>o›jþ(i +*0 s>þ(j +*04ßs$> ofm {g:{u:o¸ {î: ¥»þ(k +*04ßs&> ofm {g:{u:o¸ {î: ¥»þ(k +*06à(k` -()" * (* {O (*  s(>þ(l +*0*á ( i(ð Þt u#+ , Þþ*0 â(‡= , (ˆ (†=*()" *0 'äs*>(m + s0>(n +þ(o +*0Kèofm {g:{u:o¸ {ï: (*" -(‰=(+" (," * (-" *Ns×>(p +(G>*NsÙ>(p +(I>*0é(a>E9&kŽÂ×ì!6hwú ŒœÐårR9p*t\{!# oÆm om(¢–*t_{'# (l`*t]{"# (– {B0on{Ñ:{Iþo *t`{(#ofm{g:{l:*ta{)#(–{@0on{ß:{Iþo *tb{*#  {I*tc{+#  oùQ*td{,#  oòR*te{-#  *tf{/#  *tg{1#  (ž–*th{3#  (k]ofm{g:{l:(ž–*ti{4# +Ìtj{5#  (ž–*tm{<#  *tn{=#(n 9Kþÿÿ{=#(o ofmo|j*tp{?#  {I*tq{A#  {I*tk{7#  *tl{:#  *0­ís%?(q + Ži-*(?3 £p oÆmom(3>o." *Œ ,+ r¨9ps‚ zŽi ¡ Y25 £p oÆmom(3>s/" ¤¡XX3Ë o0" *Þoàm,oÆmoßl+,oÆmoýl(Ü>(1" **0[{i#{j#(3>o." {k#{l#{m#{n#{o#{p#{q#{r#{s#{t#s?*0V{i#{j#o." {k#{l#{m#{n#{o#{p#{q#{r#{s#{t#s?*0qï{j#(Ž= s'?{s#(r + {i#s+?{k#(s +{l#{m#{n#{o#{p#{q#{r#{t#s?*0 &(?(¹hoE p%¤p(’=*0pñ{O s-?(t + {i#s1?{j#(u +{k#{l#{m#{n#{o#{p#{q#{r#{s#{t#s?*b{t;(j^(J (8R*08òofm {g:{l: ofmo~j (ž–o† (Ös2" *0rôŒ¤,+ r¨9ps‚ zŽi £ Y 2"£o(–=¤£X X3Þ (?3s3?þ(v +*o3" *0-ös5?(w + (?3s7?þ(x +*o5" *0€÷ofmo¤j (| (6" (7" {1^(…^,K(¹hoE  (°(¤ (ÍPs9?{)^¥Ÿ(‹+þ(y +*(8" *Bs;?þ(z +*b{u;(•=(5>s/" *0|ù(?3s=?þ({ +*(| + Œ¨,+ r¨9ps‚ zŽi ¡ Y2#£q(›=¤¡XX3Ý o0" *0O(k^ (^,*(^*0Lüo©m ,(9" +s??ofmo›j(i + , 2+ofm oj{Æ: ,sA?{s#(™=(} ++{s#o­m-+,+Žiþ,+0-+{9sC?ofm {g:{p:(N++, {n#+sE?{n#(~ +{i#{j# (= Þt  u#+  , Þþ  ,ofmomjsG?o:" +,+ o;" þ,+0-+{9sI?ofm {g:{p:(N++,+ (œ=,+ o;" þ,+0-+{9sK?ofm {g:{p:(N++, {k#+{k#(š={l#{m#{o#{p#{q#{r#{t#s?* 0³sM?( + (€ + ,{r#(—=+{r# ,{p#(˜=+{p# {q#(—={i#{j#{k#{l#{m#{n#{o#(˜= {s#{t#s?*0Ã(;> {i#(?3!{j#ofm {g:{l:o." +1{j#¡%ofm {g:{l:s/" ¤¡o0" {k#ofm {g:{l:o<" {l#{m#{n#{o#{p#{q#{r#{s#{t#s?*s=" *0l{i#{j#{k#( +{I (‚ +o>" {l#(ƒ +{m#{n#{o#{p#{q#{r#{s#{t#s?*0+osQ?ofm {g:{u:o¸ oÓkþ(Ô+*FsU?þ(„ +*0šsS?(… + sW?{i#{j#{k#{l#(¤=,{m#(¤=+{m#{n#{o#{p#{q#{r#{s#{t#s?þ( +*0:(¹hoE ofm {g:{u:o¸ oÔk oÒk{i#ob{j#{k#{l#{m#{n#{o#{p#{q#{r#{s#{t#s?sY?s[? (Ô+( +s]?s_?(Ô+( +(?  sa?( +(?(Ÿ= sc?{ì:o?" († +(‡ + (?  (’=(£=(¥=*Zse?þ(ˆ +*0 ( ( (¥=*0lÎsw?( +(‰ + {i#{j#{k#{l#{m#{n#{o#{p#{q#{r#{s#sy?{t#(Š +s?*‚{ð"{t;o~m(‹ +(8R*0-(a>3"t] {"#{B0 (ª=(5>**0; u­,t­ {A" (B" *t¯ {C" (€ ( (D" *0˜ u°9#t° u°9èt° {E" u 9‹{E" u ,K{E" t(j{E" t(j{E" {E" /(B" *(B" *{E" u+,{E" (B" *{E" (B" *{E" u+,){E" u ,{E" (B" *{E" +¾{E" +´t±  {F" ({ -* {F"   (D" *t±  {F" ({ -*u°, {F"   (D" *t±  {F" ({ -+¤ {F"   {F"    (Œ +(D" *0^ ({ ,K ({ ({ -(| oG" ( +*({ (| oG" ( +(Ž +( +*(H" (I" *07u°,t° {E" (J" *t± {F" ( +(I" *0qu±,Vt± {F" ({ ,1{F" ({ ({ -(| (K" *(| (K" *(ªsû£(™ *t°{E" (™ *0(o×ko—?o -o×kþo **0U(œ–, (–+(Ö o?oL" -s©?o?oM" þ(‘ +* (¸ (< *0L(œ–,;(–oN" -oO" -(€ *(P" * (ƒ (€ ( *oQ" *Zo?o?(’ +*0V{¹#uÀþ,o?o?(’ +*{¹# uÁ,tÁ{µ#+(²=þ(“ +*0(±?3uofm {g:{q: ( k3Wt { : {µ:þ,>{ : {¬:(w†,(ofmomj(Rsû£(¤(+&****0 ^s»? oÏU{½9,+s½?o¸+ (ãk ofm {g:{u:o¸ oÍko¼m*0 ˜ofm {g:{q: ( kE „( *t {¢: {¡:ofm {g:{x:-( *(R" {e:s¿? (” + þÐ sÁ?þ(• +*t  { :  {¬:  {«:uÁ,tÁ{µ#+1(Vsû£ (¤ (+&+{dH,/rá*psz (– +sÉ? sË?of +(+&+ sÍ?od +(— +,( *(·=( ( *0¢ofm {g:{u:o¸ uÁ,4(±= -( +U ( o¼m( ( +5oÕkoÖk(˜ +(S" -( +sÏ?(Ô+ (n - (¸=**00oµ o~m(V+ {ð"(‹ + (ß+(n*0 @{ò" sá?{ñ" (¡P {41sT" oU" þ( +*0 {÷# (ù (ç?sð?*0 {÷# (ç?sò?*0!{÷# , (V" þoã?**0 .!{÷# ," (V" (E¥þoå?**0 *!{÷# , (V" (E¥þoä?**0¢"(a>E999999999999999999999te sô?{.#þ(™ +*tf sø?{0#þ(+**0 Î's @s @¥º(š +(› +(œ + (X" 9” (Y" (Z" o[" 1{¹#uÀþ+, o~mo† þ+,s@¥º( +(ž +þ+,2(Y" (Z" (Y" (\" s@(› +8µ(X" 9¨(X" (X" :”(Y" (Z" {¹#uÀþ, o~mo† þ+, {¸#(?(n oˆ?+,<(Y" (Z" (Y" (\"  s@o@ s]" (^" (_" + ¥ºo`" oï ,oa"   (Z" (¶=+Ú Þu   ,  oâ &Ü&Ü &*„+¯0ª(( 9 ( ( oßk{Io ,R ( o¼m(ŒU,6( Xo¼m{g:{u:o¸ 8{ÿÿÿs@([ sj(b" *sc" (d" *0)*( 9 ( ( ->( {Ir„Áp(ñ ,%( (­{Isû£ (¤(Ÿ +*( ,@ ( {Ir„Áp(ñ ,% (  ( (ô>8`ÿÿÿ( ,d( ( o?{Ioe" -s@([ sj(¨ *(f"  s @(  +*rK+p v só z(g" (© *0s+( ,` ( ( (Ú (Û (Ä= u>, t>{§ (B" * t?sh" { (¡ +*(€ (D" *0,{ñ"(mP (^, (¢ þ+,(K> si" (j" *(^,s$@(+þ+,(ƒQ(‰ (Š +(‰ (¢ þ, (¢ þ+,+(O]($nþþ,($N(³sû£(k" *s&@((+ (k]ofm{g:{l: (¢ +(Œ= si" (j" *0 @-{ò" {ó" (^,(M> si" (j" *(£ +*r(c (¤ +s(@(¥ +*0 '{+1{,1(¡P(}P({P*0>.{+1 {,1 s.@(¡P {31sT" oU" þ(¦ +*0 &(É=(§ +þ(¨ +*0 ${+1{,1(|P(zP*0T/{+1 (O]($nþ,2(k] s0@s2@ (l" (© +þ(ª +*(‰ *010sm" (¡P {31sT" oU" þ(« +*0 +(¡P(Ì=(¬ +þ(¢ +*0h1(O]($nþ,R(j] (; (: ofmoœj ,* (ˆ! {Ñ:{I(øm(8R(n" ***0¯3uð-`uñ-qtï {Q0,{Q0(ˆ oÆmþom*{P0,{P0(ˆ oÆmþom*r,ps\ ztð {S0{D0 {Ï]*tñ{U0{W0sV@o­ +*0û4(Ñ= rÔëp( (c {ó"ojR(hP rÞëp( (c {ó"ojR(hP (¢ 9Œ (£ (‡Q@y (£ tÁ (¢ (¢ -_(¢ ,W(£ (‡Q3E(£ tÁ(¢ (¢ -){%0{%0(çR(C>(¶ *(E>(¶ *0 p5(K ,2 (K (K -#(L oqR,(L (Ò=*(K ,, (K þþ,(L (Ñ= (E>(¶ **0 î6{ñ"{s#  (§ + (K þþ, (L@þ+, (E>  sp" (q" *{ñ"{s#  (¬ + (¢ þþ, (L@þ+, (‹=  sp" (q" *(O]($nþ,  {I(¥s6@(r" *sZ@ ([ sj(r" *0ï;,] (s" (T3L(s" ty {$1(t" ,3{$1 (L@þ, (u" (C> sp" (q" *,j(s" (T3W(s" tx(L@E+,"{#1(=> sp" (q" *     (Ô=*0E@9• (s" (T@(s" tv (L@þ,i{!1 {ó" (zP (L@3{ñ"{s#  (¬ ++(‰  (¢ +(‹= sp" (q" *9(s" (T3n(s" tz{%1(v" ,R{%1(L@E+,"(w"   (A> sp" (q" *     (Õ=*0†G{ò" ( 9W ( (  {I(¥ {I(c (L@E+,  (Ð=+:Ô{ñ" (P  9–   (s" (T@€ (s" tw (L@þ,f {"1 {ó" ({P  (Ó=-sX@ ([ sj(r" +c(¼ sp" (q" +E   (Ö=+%(x" (5>sp" (q" (c ( þ,  {¹#+(? (»=( þ9(³ þ,(y" (z" 8{ {¸#(?3*(O>sp" (y" ({" (z" +Bs\@{i#s^@(® +(¯ ++X (Ø=(° +(± +*rt,ps¤(¤(² +*0 'I s`@ sb@ (³ +*0[J(@ (×=(´ +(µ + (|" (}" (~"  sd@(@ s" *0F (¯?(¶=(¸T {ð" o~m(‹ +(n(×=*0 sf@ (¶ +*0°o¼m (ŒU,(< **0qK ( 9S ( ( {I(¥ oÜk{Io€" ,^(} ( ioÆm{U;{_;(…U,)(} ( i(3>  sp" (q" *(„=  ,a   (   o¼m(ŽU,C (   o¼m{I(øm   (ª=(5>  sp" (q" *oÞk{Io ,G(   o¼m(ŽU,)(   o¼m(;>  sp" (q" *{ó"{I{I( þ, {¹#+(?(¹=sh@(· +( þþ,D(F@X {I(?(?(ž?(¯? {I(¥(Â=(Û=+p(¯? {I(¥(Â={¸#(?3)sj@sl@ sn@(¸ +(¹ +(¯ ++ sp@(º +(z" ( þþ9’oßk{Io ,m( (Ü=,T(¸ {Is" o@X ofm  {g:{u:o¸ (Ý=(° ++(y" (z" + (y" (z" {I(± +sv@([ sj(‚" (± +(´ +*(¯sû£(r" *0xMsx@(· + (¯?(Â= {¸#(?3!sz@(¸ + sƒ" (» +(„" *s~@(¸ + s…" s‚@(¹ +(¼ +*0/N(ø>3*{j#o†" , (¼ (a>þ**0 sŒ@(½ +*0nO{Io?o?(’ + s@(· + (F@{I(?(?(ž?(¯?{I(¥(Â=(Û=*0 kR(@ ( 99 ( ( -=( {Ir„Áp(ñ ,$( (­{Isû£ (¤ (¾ +*( 9~( ( ,l( ( ( -U( {Ir„Áp(ñ ,;( ( (Ú (Û 8ÿÿÿ( ,T( {Ir„Áp(ñ ,6( ( (ô>8¹þÿÿ( 9( ( :(ô>  (n oÿ>þ9ç( {j#{Io†"   -8Ô   (¼ (a>@› (¼ tr{C# s„@ ( +(¿ +(´ +uÑ,M(µ +(|" (}" (~" s†@(@s" (‡" +&+" (¼ («=(Ú s" (‡"   :Ú{I(µ=  (¿ +{I(€–,#(Y>(Ú sp" (y" ({" (z" + (y" (z" sˆ@([ sj(‚" (± +(± +(´ +(µ +(|" (}" (~" sŠ@(@s" * (ˆ" *( 9Ã( ( {I(¥{I(ß=,{j#{Io‰" s" *(ø>3p{j#{Io†"   - (y" (z" +V   (¼ (a>3+Ý (¼ («=sp" (y" ({" (z" + (y" (z" (à=(á=(± +(± +(´ +uÑ, (µ ++`s’@([ sj(‚" (´S(à=(± +(´S(á=(± +(± +(´ +(µ +(|" (}" (~" s”@(@s" *rK+p  só z(¨ˆ(²sû£ (¤ (¾ +*0 (ö>(â=*0 »T ( 9 ( ( {I(¥ („=,e( o¼m(ŽU,G( o¼m{I(øm (ª=  (5>  sp" (q" *oÞk{Io   ,G   ( o¼m(ŒU,) ( o¼m(;>  sp" (q" *(Š={IoŠ"   ,_ (‹" {0<oÆm{U;{_;(…U,0(‹" {0<(‹" (9>  sp" (q" *oÜk{Io€" ,^(} ( ioÆm{U;{_;(…U,)(} ( i(3>  sp" (q" *{ó"{I{I(?(¹=s–@(· + ( ,K ( ( þþ,2( ( (D@X {I(Û=+ (y" (z" ( þ,)s˜@sš@ sœ@(¸ +(¹ +(¯ ++ (y" (z" ( þþ9’oßk{Io ,m( (Ü=,T(¸ {Is" o@  X ofm{g:{u:o¸ (ä=(° ++(y" (z" + (y" (z" {I(± +(± +sž@([ sj(‚" (± +(´ +*rª,ps¤(r" *0 sº@(½ +*0 }U( ,i ( ( þþ,R( ( {Io?o?(’ + (D@{I{Is¾@ (· +(Û=*(y" (z" *0 ’V ( ,N ( ( ->( {Ir„Áp(ñ ,%( (­{Isû£ (¤(À +* ( ,X ( {Ir„Áp(ñ ,< (  ( (ô> 8Hÿÿÿ ( 9ì ( ( :×(ô>(n oÿ>þ9»( {k#{IoŒ" ,-(¼ («=*-(¬@  (n o·@+,{Iob þþ+,%{Io^ (" {Io^ þþ+,s @ (¤(¥+(?>* (æ= (å=(± +(´ +  uÑ,  (µ ++6 (´S(æ= (´S(å=(± +(´ +(µ +  (|"   (}"   (~"  sÀ@(@ ( þþ,&(® (T+{Isû£ (¤(+&+*0 (ö>(ç=*0«Wom,o~m(¨ þ+,2{ò" ofm {g:{r:o• (O]($nþ+,-{ò"ofm {g:{r:o• (n](³ þ+,#{ò"ofm {g:{r:o• (k]**0 X(é= ( 9Z ( ( :‘( (¯?(¶={I(¥ {ó"{I{I{¹#(¹=sÂ@(· + (Â=(X" -sÄ@([ sj(Ž" *(Y" (" *( ( (¯?(¶={I(¥ {ó"{I{I(?(¹=sÆ@(· +{¸#(?(ž? (Â=(X" -sÈ@([ sj(" + s‘" (Á +( +*(¯sû£ (¤ (à +*0 CY(@(¯?(Ä +(Å + (Z" (\" sÌ@(@*0 »[ ( 9” ( ( -V( {ó"{I{I{¹#(¹= (n -sÎ@([ sj(" *sÐ@(Æ +*( ( {I(¥ofm{g:{u:o¸ oßk{Io ,e( (Ü=  ,L (¸  {I s" o@X  ofm{g:{u:o¸ (ì=+sÒ@([ sj(" {ó"{I{I(?(¹= (n -sÔ@([ sj(" + sÖ@(Æ +(Ç +*(¯sû£ (¤ (È +*0 6\(´S{¸#(?(ž? sà@(É +sä@(Ê +*0 –^(?(ž? ( 9d ( ( -=( {Ir„Áp(ñ ,$( (­{Isû£ (¤ (à +*( ,T( {Ir„Áp(ñ ,6( ( (ô>8<ÿÿÿ( 9œ( ( :Ù( {IuÁ,tÁ{µ#+(²=-^{Io?o?(’ +(n -sØ@([ sj(Ž" *(o  (@   s]" (" *  (¸  (@ s]" (^" (_" {I(¥(Â=  o’" (" *(  ( {I(¥(ø>@v{IuÁ,tÁ{µ#+(²=,<  (¸ (ŒU,( (¸  (@  (Ä +(Ë ++(^" (“" + (^" (“" sÚ@(É +sÞ@(Ê +(Ç +uØ9’tØ{”"   (©ˆ(Â=(X" -5(Ç +(í=(Ç +sæ@(Ì +( +*(Y" (Z"  (Y" (\"    s]" (" *(Ç +(í=(Ç +sè@(Ì +( +*rK+p F só z(¯sû£ (¤ (à +*0 ºa(©ˆ (î= uÙ9†tÙ {•" (Z" {•" (\" sê@(@ ofmomj {ð" o~m(‹ +(n(¤ (¥ (O>{i#(¿=+sì@(Í +*0 Oe(}?(?(ž? ( -r-ps¤ (¤(Î +* ( ( {I(¥sî@([ sj(–" (…=,N  (   o¼m(ŒU,0 (   o¼m{I(n  s—" (˜" +( 9  ( ( þþ,w (  ( {ó"{I{I(?(¹=sð@(· +(B@X{I(Û=sò@sô@(Ï ++ (™" (š"  ( þþ9šofm  {g:{u:o¸ oßk{Io ,d  ( (Ü=,K(¸ {Is" o@Xofm  {g:{u:o¸ (ð=++(Ð + (Ñ +(Ð +(Ñ +(Ò +*0 ›f( 9… ( ( ,v( ( {I (ö>{Io?o?(’ +sú@(· +(B@ {I(Û=sü@sþ@(Ï +*(™" (š" *0 (ö>sA(Ó +*0 Êj(}?(?(ž? {ò" {I ( :ã(O]($nþ,_{ñ"{Io*0Ek(}?(?(ž? (F@(@(×=(´ + uÑ,(µ +*( 9œ ( {n#{Io " 9z (  ( {n#{Io¡" (C ,@(D (ô= (@   sp"   (y" ({" (z" +(y" (z" + (y" (z" (´ +  uÑ, (µ +*(F@(@(´S(×=  (± +(´ +(µ +*0;l({ -*où o™ Y /+(Ù + ( -*(©ˆ*07m(a> 3+tf {/# {0# sA((+(G>**0ên(a>EW-*tf {0#(¢ ,é{0# (¢ (¢ þ*tg {2#(¢ ,¿{2# (¢ (¢ þ*te {.#(K ,• {.#(K (K þ*0 {i#þ(¿=*0 šo(ö>(â= („ (ƒ (Ú +  (÷= s%A {÷#,;(ø=, s'A(A(A+ (ù=( A+( As¢" *0`p(a> 3#tf s)A{0#(+, {0# *(a> 3"te s+A{.#(2 +, {.# *(/ *0 4q(õ= (|" (}" (~" (Ú +s£" *0 1r(÷= (÷= {i#þ(¿=*0mu(ü= (¤" (¥" (¦" (§"  s-A(@ {÷#9 (¼T3  s¨" +W(û=,+å(¼T3,(ºT(ü=(§" (¦" s¨" +rK+p esó z(©" (ª"  («"   s/A (ø=  ,@ ,!  s1A(A(A+D (ý=( A+) ,á  s3A(A(A+( As¢" *>s5Aþ(/+*0So(ŒU-*-Bo©m,ofm o¤j(| {1^(Û +*ofm {g:{p:(Ü +**0[aoÆm {U;{_;(…U-+ oÆmoöl,+ oÆmoèl,*oÆm {U;{a;(Ü +*Ö(šU-+{t;(Ý +,*on{Ó:(Ü +*0´v(a>E6*t\ {!#(Þ +*t] {"# {B0(ß +*t`  {(#(Ý +*Þofmomj{ð"o~m(‹ +(n(¤ (¥ (O>*0D°(O]($nþ,(k] ofmomj+rWp(¤ (¥ (O>*Š([ 2oL r@-p(ñ þ**0rwofm {g:{u:o¸ (] ,G (] (^ oßko -(€ *(  o¼m+˜þo¬" *0Nx(] -(€ * (] (^ {l#(à + -(€ * s­" (f" þ(á +*0 .ys9As;A{ñ"  o9T(â +þ(ã +*01z(¢ ,' (¢ (£ o‹Q  (ä ++Ñ*0°}{ò" {ó" s=A{ñ"  o9T(â + ,(O]($nþ+,Q(j](; (: s?AsAAsCAofmo›j(i +(å +(æ ++(à sEA{ñ"o;T(ç + ,(?(»=+(¤ sGA{ñ"o:T(è + sIA{ñ"{s#(ºT(Ë=(7 + sKAsMA (7 +(é +sOAsQA (7 +(é +(Ÿ+  sSA(o+   (Ÿ+(ÿÁ(d (!+sYA (7 +s[As]As_AsaA(ê +(ë +(ì +scA(í +¥ä(î +sgA{ñ"{s#(ºT(Ï=((+((+siA(ã +skA (ï +smA (ð +soA(ñ +sqA(ò +( >(ó +(ô +(õ +(õ +(õ +(õ +(õ +þ(õ +*0)OoyR opR,o{R(l_(n**0 ¦€{ò" {ó" (] 9{ (] (^ ssAsuA{ñ"o9T(â +(â +(c (?(»= swAsyA(â +(ö + s{As}AsA{ñ"{s#(c (¸T(Ë=(7 +(7 +(÷ +{ñ"sA  sƒA   s…A{ñ"(c o;T(ø + s‡A(ù + s‰As‹A{ñ"(c o:T(è +(ú +(õ +(õ +(õ +þ(õ +*( >*0=ƒ{ò" {ó" om,(à *{ð"o~m(‹ +(n (b(È= uå,(à * tæ{¯" (a>E (à (n *(à *tg{1#{2#sAsA((+((+  (¢ -(à * (Œ=(à (n *0Q„( i oÆmoöl-(Þ +þ+,%oÆmoßl,*oÆm {U;{`;þ**0~…{ò" ofm {g:{u:o¸ {ì: s°" ¥(û +,+"s±" {î:¥»(ü +,*s²" oßkþ(ý +*0 êŠ{ò" ofm {g:{u:o¸ s—As™AoÑk(þ +(þ + s›AoÖko³" o´" ¥ì(ÿ +( +( +¥7sQ (] 9è(] (^  oßk o   ,i   ( o¼m( +þ,E ( ([   (n oe þ,+ o¼m (>+(à sAofm {g:{u:o¸  oÕkoÖk(˜ +( +þ(õ +*sŸAs¡As£As¥A{ì:¥(Â+(† +( +( +( +s§As©As«A(ƒ=(å +( +( +s­As¯A(Š=( +( +( +s±As³AsµAs·AoÞk( +(Ô+( +( +s¹As»As½As¿AsÁAsÃAsÅAoßk( +(þ +(þ +(Ô+( +( +( +sÇA ( +sÉA ( +¥í( +(õ +(õ +(õ +(õ +(õ +þ(õ +*0Ÿ{ò" (] ,D (^ rD-p(ñ ,/(] (^ (ô>+«(] 9b (] (^  ([ (\ sËA( +{j# o¶" 9¿{j# o‰" (a>@–t\  {!#  oÆm  {U;{Z;  oÆm  {U;|\;(¶i(œi(n o«i,  (“^+,  (”^+   ( >s·" +(à s·" + (à s·" (¸" (¹"  sÍA(S+(õ +þ(õ +*sÓAo?oº" o»" ¥ð( +(• +( + ¥7sQ (ø>3?sÕAs×A{j#o¼" o½" ¥](S+(ä+(ä++(à (ø>3sÙA{k#( +(ä++(à sÛAsÝAsßAsáAsãAsåAo?( +( +( +( +( +( +sçAséAsëAsíAsïAo?o¾" o¿" ¥¦(• +( +( +( +( +sñAsóAsõAo?o¾" o¿" ¥¦(• +( +( +(õ +(õ +(õ +þ(õ +*0 (ö>(>*0-{ò" ofm {g:{u:o¸ s÷AsùAsûAoÑk(þ +(þ +(þ + sýAoÖko³" o´" ¥ì(ÿ +( +( +¥7sQ (] 9(] (^  oßk o   ,f   ( o¼m( +þ,C ( ([   (n oe þ,+ o¼m ( ++(à (] -Zofm {g:{u:o¸  oÕkoÖk(˜ +sÿAsBsB(þ +( +(ã ++(à þ(õ +*sBsBs Bs Bs BsBsBoßk( +(þ +(þ +(Ô+( +( +( +sB ( + sB(S+(õ +þ(õ +*0 (ö>(>*0 ‘{ò" (] ,@ (^ rD-p(ñ ,+(] (^ (ô>+¯(] 9„ (] (^  ([ (\ sB( +(] -<(ö> o?o?(’ +sBs!B( +(ã ++(à þ(õ +*s#Bo?oº" o»"   ¥ð( +(• +( + ¥7sQ s%Bs'B  s)Bs+Bs-Bs/Bo?( +( +( +( +( +( + s1Bs3B  s5Bs7Bs9Bo?o¾" o¿"   ¥¦(• +( +( +( +( + s=B{n#s?B¥ó( +( +(S+  (õ +þ(õ +*žo &}ò"}ó"}ñ"}ð"*"{ð"*"{ò"*"{ó"*"{ñ"*V(© }ô"}õ"*Ž{ô"{õ"o¼m{Ñ:{I(øm*ò}ö"}÷"}ø"}ù"}ú"}û"}ü"(À" *0Go{û"YE +8÷8Ê8º8{ö"ofm {g:{u:o¸ {î:¥»o }ø"}û"{ø"oï 9{ø"o }÷"{ö"{÷"(‚=¥ôoÁ" }ú"}û"{ú"oï ,0{ú"oÂ" }ù"}û"{ù"}ü"*}ù"+Ã}û"{ú"( +}ú"}÷"8Sÿÿÿ}û"{ø"(¨ +}ø"}û"}ü"*0¥e {û"YE+8€{û"E ++5++++)}û"{ú"( +}û"{ø"(¨ +}û"}ü" Þ t   Þ&8fÿÿÿþ,z*lˆ ê{û"E +++ +++****"{ü"*0 {ö"s>*:(  }ý"*f{ý"{Ioœjþþ*:(  }þ"*0'’{þ"{I oj {Ç:oÃ" þþ*V(Ä" }ÿ"}#*R{#{ÿ"(¬o*0D}#}#}#}#}#}#}#}#(Å" *01{#YE +8á8´8¤8ð{#{ì:¥oS }#}#{#oï 9{#oT }#{#{#(ˆ=¥÷oÆ" }#}#{#oï ,0{#oÇ" }#}#{#}#*}#+Ã}#{#( +}#}#8Sÿÿÿ}#{#(™ +}#}#}#*0¥e {#YE+8€{#E ++5++++)}#{#( +}#{#(™ +}#}# Þ t   Þ&8fÿÿÿþ,z*lˆ ê{#E +++ +++****"{#*0 {#{#s*>*(È" *0(l` þoÉ" *:( } #*sc>**(a>þ*se>**(a>þ**sg>**(a>þ*sl>**(a>þ*sn>**(a>þ*sp>**(a>þ*sr>**(a>þ*st>**(a>þ*sv>**(a>þ*"sx>*.(a> þ*"s{>*.(a> þ*"s~>*.(a> þ*s>*.(a> þ*sƒ>*.(a> þ*"s…>*.(a>þ*&sˆ>*.(a>þ*"sŒ>*.(a>þ*s>*.(a>þ*s‘>*.(a>þ*s“>*.(a>þ*"s•>*.(a>þ*"s˜>*.(a>þ*s›>*.(a>þ*{ #*Zr.8psÊ" ( +o‘ *>(2>}!#*{!#*>(2>}"#*{"#*–(2>}##}$#}%#}&#*{##*{$#*{%#*{&#*>(2>}'#*{'#*>(2>}(#*{(#*>(2>})#*{)#*>(2>}*#*{*#*>(2>}+#*{+#*>(2>},#*{,#*^ (2>}-#}.#*{-#*{.#*^ (2>}/#}0#*{/#*{0#*^ (2>}1#}2#*{1#*{2#*B (2>}3#*{3#*B (2>}4#*{4#*^(2>}5#}6#*{5#*{6#*z(2>}7#}8#}9#*{7#*{8#*{9#*^(2>}:#};#*{:#*{;#*B(2>}<#*{<#*B(2>}=#*{=#*B(2>}>#*{>#*^(2>}?#}@#*{?#*{@#*^(2>}A#}B#*{A#*{B#*B(2>}C#*{C#*:( }D#*2{D#{!#*:( }E#*2{E#{"#*:( }F#*2{F#{##*2{F#{$#*2{F#{%#*2{F#{&#*:( }G#*2{G#{'#*:( }H#*2{H#{(#*:( }I#*2{I#{)#*:( }J#*2{J#{*#*:( }K#*2{K#{+#*:( }L#*2{L#{,#*:( }M#*2{M#{-#*2{M#{.#*:( }N#*2{N#{/#*2{N#{0#*:( }O#*2{O#{1#*2{O#{2#*:( }P#*2{P#{3#*:( }Q#*2{Q#{4#*:( }R#*2{R#{5#*2{R#{6#*:( }S#*2{S#{7#*2{S#{8#*2{S#{9#*:( }T#*2{T#{:#*2{T#{;#*:( }U#*2{U#{<#*:( }V#*2{V#{=#*:( }W#*2{W#{>#*:( }X#*2{X#{?#*2{X#{@#*:( }Y#*2{Y#{A#*2{Y#{B#*:( }Z#*2{Z#{C#*(Ë" *0O“o•Q ¥ý o¶ oï ,o· Ö+ê Þu , oâ &Ü&Ü *4(Ë" *0O“o•Q ¥ý o¶ oï ,o· Ö+ê Þu , oâ &Ü&Ü *4( *"sä>**uŽþ*&sç>**uþ*0• u,+*Zr.8psÌ" ( +oÍ" *0v˜u,,t u,t {`# {`# þ**tŽuŽ,îtŽ{]#{]#{B8{E8þ(i*†u, t{a#*tŽ{^#*V(Û>}]#}^#*{]#*{^#*r(Û>}_#}`#}a#*{_#*{`#*{a#*:( }b#*2{b#{]#*2{b#{^#*:( }c#*2{c#{_#*2{c#{`#*2{c#{a#*^só>€e#só>€f#*:( }d#*~e#**(ø>þ*~f#**(ø>þ*{d#*Zr.8psÎ" ( +oÏ" *01.þ, þ,{d# {d# 3*Y**þ,**:¥’oú>*0B™¥’ þ,%¥’þ,{d# {d# 3*Y**¥’þ,**0þ, (ø>3 * **6(n oý>*0.™þ,u’ ,{d# {d# þ**þþ*0*.þ,þ,{d# {d# þ**þþ*0šu’ ,o?**{i#*{j#*{k#*{l#*{m#*{n#*{o#*{p#*{q#*{r#*{s#*{t#*0d( }i#}j#}k#}l#}m#}n#}o#}p# }q# }r# }s# }t#*0Lœ(‚ + (‚ + ( + (Ð" (b(Ñ" (! +(Ò" (Ò" (Ð" (Ó" ( +s?*"{i#*:{j#o‰" *b(ø>3{q#*{r#*b(ø>3{o#*{p#*b(ø>3{l#*{m#*^s?€v#s?€w#*:( }u#*~v#**(?þ*~w#**(?þ*{u#*Zr.8psÔ" (" +oÕ" *01.þ, þ,{u# {u# 3*Y**þ,**:¥•o?*0B¥• þ,%¥•þ,{u# {u# 3*Y**¥•þ,**0þ, (?3 * **6(n o ?*0.þ,u• ,{u# {u# þ**þþ*0*.þ,þ,{u# {u# þ**þþ*0žu• ,o#?**(¬ *0aoÆm {U;{`;þ*:(Ö" }z#*>{z#(=*(×" *0Ÿ(l` (9> þo<" *(Ø" *0G¡s)?(†=(# + oÆm {U;{];,oÆmom (3>  þo<" **(Ù" *&s˜ *²(Ú" }{#}|#}}#}~#}#*0 +{~#{{#{|#{#{}#(7>o." *r(Û" }€#}#}‚#*0 )n(C (B {€#{#{‚#s/?*(Ü" *0.¤ (Ý" (Þ" sß" (à" (á"  oâ" *(ã" *0oofm {g:{l:($ +*(ä" *0.¦ (å" (æ" s‚ („ (…  oç" *²(è" }ƒ#}„#}…#}†#}‡#*0ا{Â](…^,{®]oé" þ+9¬{®](% + {n] (,³E [(8" *t‹-{ûY {ƒ#{„#{…#(ù°o ³(´U{‡#{á/{†#(Þ>sê" (8" (ë" *tŠ-{úY +©(8" *(ì" *0ˆ(•=(5> {u;þo<" *(í" *0ˆ(•=(5> {u;o." *:(© }ˆ#*b{ˆ#{Ñ:{I(øm*(î" *0¨(ï" (ð" (1" *V(L }‰#}Š#*º{‰#{B8{‰#{E8{Š#{?8{Á;(i*:(ñ" }‹#*0=©{Ø:,+{Ú:,*{‹#{ß:{I(n {w;(& +*:(ò" }Œ#*0Nª,5 (¼ (a>3$(¼ tr{C# {Œ#( (_>*{Œ#( ( (_>*V(L }#}Ž#*º{#{B8{#{E8{Ž#{?8{Á;(i*V(L }#}#*º{#{B8{#{E8{#{?8{Á;(i*²(ó" }‘#}’#}“#}”#}•#*0 '{‘#{’#{“#{”#{•#(ž=*(ô" *.þ(¨+*:(Ê }–#*:{–#o¼m*(Ú *6ofmo|j*:(õ" }—#*f{—#(ŒU,( **’(ó" }˜#}™#}š#}›#*0 joofmoˆj,6{˜#{˜#{9ofm {g:{p:(Ž^(– (5++, {˜#{™#{›#{š#(¦=**:(Õ }œ#*:{œ#(ŒU*:(Ê }#*:{#o¼m*:(Õ }ž#*:{ž#(ŒU*:(Ê }Ÿ#*:{Ÿ#o¼m*:(ó" } #*>{ #( =*V(ö" }¡#}¢#*¢{¡#{U;{_;(…U, {¢#(‡=**’(÷" }£#}¤#}¥#}¦#*0 !{£#{¤#{¥#{¦#(¦=*^sh?€¨#sh?€©#*:( }§#*~¨#**(m?þ*~©#**(m?þ*{§#*Zr.8psø" (' +où" *01.þ, þ,{§# {§# 3*Y**þ,**:¥¸oo?*0B¬¥¸ þ,%¥¸þ,{§# {§# 3*Y**¥¸þ,**0þ, (m?3 * **6(n or?*0.¬þ,u¸ ,{§# {§# þ**þþ*0*.þ,þ,{§# {§# þ**þþ*0­u¸ ,ou?**:(ú" }¬#*0w®{¬#(m?3+I{;{ù:{I(( +,0rR-pol{;{ù:{Is+;ofmomj{${ð"o~m(‹ +(n(¤ (¥ (O> {${$ {${${i#{$(¿=*(# **V(# }$}$*v{$o# &{$þo# *:(# } $*0#¾(\" (Z" { $o~mþo† *(# *0"¿(\" (Z" ofm {g:{k:*:(# } $*0#¾(\" (Z" { $o~mþo† *V(# } $} $*0D*{ $ofmomj{ $ofmomj(«{ $sû£ (¤(¥*0L} $}$}$}$}$}$}$}$ }$(# *0{$YE +8Ð8¨8å{$¥ºo`" }$}${$oï 9—{$oa" }${$(Z" }${$(\" }${${ ${$s@o@}$}${${$s]" }$*}$}$}$}$8Yÿÿÿ}${$(8 +}$}$}$*0‡e {$YE++e{$E + ++++}${$(8 +}$}$ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{$E + + +++***"{$*0 { ${$s@*V(# }$}$*0O*o2 -C{$ofmomj{$ofmomj(¬{$sû£ (¤(¥**( **þ(*( **þ(*( **þ(*r(# }$}$}$*0 Vo{$(ŒU,+{$ofm {g:{u:o¸ {$(Ã=*s@{$([ sj(b" *r(# }# }# } # *0 \À(Õ (¸ (Ö {# (@{ # {Is" o@X{ # {I{# (9 + þo"# *(¯ *"o¤Q*r(¯ }$}$} $*j{ ${${$( U*(## *0Á($# (%# *:(&# }!$*F{!$þ(â>*:('# }"$*0NÂu,*tŽ {]# oÆm {U;{`; ,(³ {"$oùS**Ò((# }#$}$$}%$}&$}'$}($*0 …Å{'$(O]($nþ,f{'$(k] {'$s*@{#$ (l" (© + {'${(${&${$${%$søS s,@(: + oúS*(O *²()# })$}*$}+$},$}-$*0 „Æu9t {`# {*$,{*$ (d {«](ñ +9Ý{a# {`# {_#{-${,$( ^,?{-${,$(ßP{)${,1{+$( (*# (cQ(Q *{-${,$(j](: o®m,Eofmo¢j{Ã:{)${,1oÏU( (AQ (*# (Q(Q *rŽ-ps\ z*tŽ  {]#  {^#  oÆm  {U;{`;  ,+  {-${*${,$ (*#  (³  (; +**:(&# }.$*F{.$þ(â>*Ò(+# },# }-# }.# }/# }0# }1# *0 ,{,# {-# {.# {/# {0# {1# (< +*:(Ÿ }5$*(Ÿ *0 (  *0 (¡ *{5$*0-þ,$ ¹y7žtø(:@(¿+bcXXX **6(n o;@*0D*þ,5u ,)(= +-*tø(:@tø(:@þ(À+**þþ*þþ,0þ,((= +-*tø(:@tø(:@þ(Â+**þþ*0*u , þo>@**âsA@€7$sA@€8$sA@€9$sA@€:$sA@€;$*:( }6$*~7$**(L@þ*~8$**(L@þ*~9$**(L@þ*~:$**(L@þ*~;$**(L@þ*{6$*Zr.8ps2# (> +o3# *01.þ, þ,{6$ {6$ 3*Y**þ,**:¥ùoN@*0BÈ¥ù þ,%¥ùþ,{6$ {6$ 3*Y**¥ùþ,**0>þ,5 (L@E  * * * * **6(n oQ@*0.Èþ,uù ,{6$ {6$ þ**þþ*0*.þ,þ,{6$ {6$ þ**þþ*0Éuù ,oT@**(4# **þo-‡*( **þ(*( **þ(*(5# *0Ê(6# (7# (Ú sp" *²(8# }A$}B$}C$}D$}E$*0 &{A${E${B${D${C$(? +*0T(9# }F$}G$}H$}I$}J$}K$}L$}M$ }N$ }O$*0D{F${G${H${I${J${K${L${M${N${O$(×=*V(:# }P$}Q$*f{P${Q$o;# (´ +*r(õ }R$}S$}T$*z{R${ó"{S${T$(Á=*0L(<# }U$}V$}W$}X$}Y$}Z$}[$}\$ }]$*0eË(\" (Z" {]$s" o@ {Y${U${V${W${X${Y${Z${[${\$(Ú=(´ +*:(=# }^$*:{^$s]" *(5# *0Ê(6# (7# (Ú sp" *’(># }_$}`$}a$}b$*0 9Ì(?# (@# {_${`${i#{b${I{a$(? +*V(A# }c$}d$*0 >¾(\" (Z" {c${ð"{d${d$o~m(‹ +(nsB# *0l}e$}f$}g$}h$}i$}j$}k$}l$ }m$ }n$ }o$ }p$ }q$(C# *0 w{p$YE +8+8õ8@{h$¥ºo`" }o$}p${o$oï 9ò{o$oa" }i${i$(Z" }j${i$(\" }k${j${e${ð"{g${j${g$o~m(‹ +(n}l${f${I{l$(¤ (¥ (O>}m$(Ú }n$}p${k${m${n$sp" }q$*}n$}m$}l$}k$}j$}i$8þþÿÿ}p${o$(8 +}o$}p$}q$*0‡e {p$YE++e{p$E + ++++}p${o$(8 +}p$}q$ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{p$E + + +++***"{q$*0({e${f${g${h$sp@*( **þ(*:(=# }r$*:{r$s]" *V(A# }s$}t$*0 >¾(\" (Z" {s${ð"{t${t$o~m(‹ +(nsB# *:(D# }E# *06Ì(?# (@# {E# {I(¤ (¥ (O>(ú sF# *V(A# }v$}w$*0 >¾(\" (Z" {v${ð"{w${w$o~m(‹ +(nsB# *(G# *0Ê(6# (7# (ú sF# *’(># }x$}y$}z$}{$*0 9Ì(?# (@# {x${z${i#{{${I{y$(? +*V(Õ }|$}}$*0Q{}${¹#uÀþ,*{}${¹# uÁ,tÁ{µ#+{|$o~mo† þ*r(õ }~$}$}€$*z{~${ó"{${€$(Á=*( **þ(*r(õ }$}‚$}ƒ$*z{${ó"{‚${ƒ$(Á=*’(H# }„$}…$}†$}‡$*0 &{„${…${†${‡$sŽ@*0T(I# }ˆ$}‰$}Š$}‹$}Œ$}$}Ž$}$ }$ }‘$*0SÎ{Œ$ {$ {Ž$ {$ {${‘${„${…${†${‡$ (Ý=*:(=# }’$*:{’$s]" *( **þ( *r(õ }“$}”$}•$*z{“${ó"{”${•$(Á=*:(=# }–$*:{–$s]" *(5# *0Ê(6# (7# (Ú sp" *’(># }—$}˜$}™$}š$*0 9Ì(?# (@# {—${˜${i#{š${I{™$(? +*V(A# }›$}œ$*0 >¾(\" (Z" {›${ð"{œ${œ$o~m(‹ +(nsB# *( **þ( *:(Ÿ }$*(Ÿ *0 (  *0 (¡ *{$*0-þ,$ ¹y7žt(¤@(¿+bcXXX **6(n o¥@*0D*þ,5u ,)(@ +-*t(¤@t(¤@þ(À+**þþ*þþ,0þ,((@ +-*t(¤@t(¤@þ(Â+**þþ*0*u , þo¨@**^s«@€Ÿ$s«@€ $*:( }ž$*~Ÿ$**(°@þ*~ $**(°@þ*{ž$*Zr.8psJ# (A +oK# *01.þ, þ,{ž$ {ž$ 3*Y**þ,**:¥o²@*0BÏ¥ þ,%¥þ,{ž$ {ž$ 3*Y**¥þ,**0þ, (°@3 * **6(n oµ@*0.Ïþ,u ,{ž$ {ž$ þ**þþ*0*.þ,þ,{ž$ {ž$ þ**þþ*0Ðu ,o¸@**’(H# }£$}¤$}¥$}¦$*0 &{£${¤${¥${¦$s¼@*0T(I# }§$}¨$}©$}ª$}«$}¬$}­$}®$ }¯$ }°$*0SÒ{«$ {¬$ {­$ {®$ {¯${°${£${¤${¥${¦$ (ä=*(=# *6(@s]" *(õ **:(=# }±$*:{±$s]" *( **þ( *:(=# }²$*:{²$s]" *( **þ( *ò(L# }M# }N# }O# }P# }Q# }R# }S# *0 C¾(\" (Z" {M# {N# {O# {P# {Q# X{S# {R# (B +*(õ **( **þ( *:(T# }º$*N{º$s]" (" *( **þ(*( **þ( *0D(T# }»$}¼$}½$}¾$}¿$}À$}Á$}Â$*0 :{»${¼${½${¿${¾${À$X{Â${Á$(Ä +*( **þ( *’(U# }Ã$}Ä$}Å$}Æ$*0 &{Ã${Ä${Å${Æ$sÜ@*0T(V# }Ç$}È$}É$}Ê$}Ë$}Ì$}Í$}Î$ }Ï$ }Ð$*0SÔ{Ë$ {Ì$ {Í$ {Î$ {Ï${Ð${Ã${Æ${Ä${Å$ (ì=*(W# *>¥$þ(C +*’(U# }Ñ$}Ò$}Ó$}Ô$*0 &{Ñ${Ò${Ó${Ô$sâ@*0T(V# }Õ$}Ö$}×$}Ø$}Ù$}Ú$}Û$}Ü$ }Ý$ }Þ$*0SÖ{Ù$ {Ú$ {Û$ {Ü$ {Ý${Þ${Ñ${Ô${Ò${Ó$ (ì=*(W# *>¥$þ(C +*r(X# }ß$}à$}á$*~{á${à${ß$(©ˆ(Â=*r(X# }â$}ã$}ä$*~{ä${ã${â$(©ˆ(Â=*(õ **(Y# *"(Z" *( **þ( *(=# *6(@s]" *(Z# *0C×(}" (~" (|" (a>3#ta {)#{@0s—" ([# **:(\# }å$*B{å$þ(D +*:(]# }æ$*¦{æ${B8{æ${E8{v;{v;(i*( **þ( *(=# *6(@s]" *(Z# *0C×(}" (~" (|" (a>3#ta {)#{@0s—" ([# **:(\# }ç$*B{ç$þ(D +*r(^# }è$}é$}ê$*0 {è${é${ê$sA*0L(_# }ë$}ì$}í$}î$}ï$}ð$}ñ$}ò$ }ó$*0MÙ{î$ {ï$ {ð$ {ñ$ {ò${ó${è${é${ê$ (ð=*r(¯ }ô$}õ$}ö$*0 5{ö${ô${ó"{õ$o‘Q(]o©Q(³ þþ*sA*:( }÷$*{÷$*&*Zr.8ps`# (E +oa# *.sA€ø$*( *~ø$**uJþ*"sA**uKþ*&sA**uLþ*0Ú uL,+ uK,+*Zr.8psb# (F +oc# *( A*V( A}ü$}ý$*{ü$*{ý$*r( A}þ$}ÿ$}%*{þ$*{ÿ$*{%*:( }%*:( }%*2{%{ü$*2{%{ý$*:( }%*2{%{þ$*2{%{ÿ$*2{%{%*²(d# }%}%}%}%}%*0 ({%{%{%{%{%(ù=*²(í } %} %} %} %} %*0 -{ %{ %{ %{ %{ %{ %(ù=*(¯ *JošQ,*oŸQ*(I *"okR*r(õ }%}%}%*z{%{ó"{%{%(Á=*ò(d# }%}%}%}%}%}%}%*0 4{%{%{%{%{%{%{%(ý=*ò(í }%}%}%}%}%}%}%*0 9{%{%{%{%{%{%{%{%(ý=*ò(í }%} %}!%}"%}#%}$%}%%*0 9{%{ %{!%{"%{#%{$%{%%{$%(ý=*(Œ *"(i*V(e# }f# }g# *Z{f# {g# þ(G +*(h# *"(=>*V(i# }(%})%*Þ{@0on{Ø:{)%3{(%{@0on{Ü:(…U**V(i# }*%}+%*Þ{@0on{Ø:{+%3{*%{@0on{Ü:(…U**:(j# },%*N{,%(8R(5>*r(¤ }-%}.%}/%*v{.%{/%{-%(H +þ*:(© }0%*b{0%{Ñ:{I(øm*’(k# }1%}2%}3%}4%*Æ{1%{ñ"{2%{3%(†P,oóR{4%þ**²(l# }5%}6%}7%}8%}9%*0 ?oýQ-oüQ{7%þ+,{8%{9%{5%{6%(”U**²(I }:%};%}<%}=%}>%*0 0onR{<%3{=%{>%{:%{;%(¢U**(m# *>o|Rþo‹Q*(I *"ohR*(m# *>o}Rþo‹Q*(I *"oiR*0d}?%}@%}A%}B%}C%}D%}E%}F% }G% }H% }I% }J%(• *0 ~Û{I%YE +8.8ã8ü8={C%¥+on# }H%}I%{H%oï 9ï{H%oo# }D%{D%{B%{@%oùR}E%{?%{ñ"{E%{@%{A%(„P}F%{F%{È1}G%{G%{B%{@%o«Q {D=þ,A}I%{D%oöRoŒQ}J%*}I%{D%o÷RoŒQ}J%*+}G%}F%}E%}D%8ÿÿÿ}I%{H%(I +}H%}I%}J%*0”e {I%YE+8o{I%E ++$+ + +++}I%{H%(I +}I%}J% Þ t   Þ&8wÿÿÿþ,z*[w ê{I%E +++ +++****"{J%*0,{?%{@%{A%{B%{C%sSA*:(I }K%*F{K%(J +þ*0D(¯ }L%}M%}N%}O%}P%}Q%}R%}S%*0Ü{Q%{P%(^:•o‹Q r¾-p(ñ ,8|rÄp(ñ ,{Q%{P%(Mþ+XrÎ-p(ñ ,+GrMñp(ñ ,$o—Q,{Q%{P%(M+þ+{Q%o‰Q(^+ -o—Qþ{O%þ+,{R%{M%{N%( U+,{Q%{M%{P%("Uþ+, o›Qþ+, oœQþ+,o‹Qrëp(ñ þ+,o‹Qrúåp(ñ þ+,{L%{P%(K ++,{S%o‹Qo` þ**(ò" **þo¼ *(q# *þ*’(r# }T%}U%}V%}W%*0 *(O (P {V%{W%{T%{U%(Ó=*(s# *0dÝ(a>3Utd {,#u,A{,#t {p0 {o0 oÆmomoÆmom([ (\ (\ *([ *:( }X%*N{X%o‹Q(ñ *:(¯ }Y%*ZseA{Y%(W+þ*(h# *"(=>*(t# *"(A>*(u# *"(C>*:(v# }Z%*:{Z%(>*(w# *0Þ(x# (y# (‹=*:(i# }[%*j{@0on{Ø:{[%þ*:(i# }\%*N{\%{@0(œU*Ò(z# }]%}^%}_%}`%}a%}b%*0 ={]%{^%{_%{`%{a%{b%{@0{?0(ñ]( >*:(i# }c%*0$–{@0on {ß:{I{c%(ñ *0D({# }d%}e%}f%}g%}h%}i%}j%}k%*0D{d%{e%{f%{g%{h%{k%{g%{i%{j%( >( >*’(I }l%}m%}n%}o%*0 {n%{o%{l%{m%(¢U*:(I }p%*BonR{p%þ*r(|# }q%}r%}s%*j{s%{q%{r%(ˆP*Ò(}# }t%}u%}v%}w%}x%}y%*0 -{t%{u%{v%{w%{x%{y%( >*V(~# }z%}{%*n{{%{z%o# þo€# *ò(}# }|%}}%}~%}%}€%}%}‚%*0 2{|%{}%{~%{%{€%{%{‚%( >*ò(# }ƒ%}„%}…%}†%}‡%}ˆ%}‰%*0>{ƒ%{„%{…%{†%{‡%{‰%{ˆ%{†%oR( >*²(l# }Š%}‹%}Œ%}%}Ž%*0 ?oýQ-oüQ{Œ%þ+,{%{Ž%{Š%{‹%(”U**r(¯ }%}%}‘%*v{%{%{‘%("Uþ*r(¯ }’%}“%}”%*j{”%{’%{“%( U*’(Ê }‚# }ƒ# }„# }…# *0 =l{‚# {ƒ# {„# {…# (L + Þt u#+ , Þ Þ*"#’(  }†# }‡# }ˆ# }‰# *0 3o†j-({‡# {‰# {†# {ˆ# o¼m(M +þ**’(Š# }‹# }Œ# }# }Ž# *0 '{‹# {Œ# {# {Ž# o¼mþ(N +*’(  }¡%}¢%}£%}¤%*0 ){¢%{¤%{¡%{£%o¼m( +þ*(  *j{g:{l:r:po þ*(# *ž{g:{q:( kþ,omj(c **0L(# }¥%}¦%}§%}¨%}©%}ª%}«%}¬% }­%*0 e°{ª%o¼m {©%{¬%{¨%{«%( +-1{¥%{¦%{§%{¨%{©%{­%(k^( >*(à *(‘# *"(3>*r(¬ }®%}¯%}°%*v{¯%{°%{®%(O +þ*(¬ *0aoÆm {U;{`;þ*:(ö" }±%*:{±%(‡=*(’# *"(5>*(“# *"(•=*r(¤ }²%}³%}´%*v{³%{´%{²%(H +þ*(”# *"(9>*r(•# }µ%}¶%}·%*Š{¶%{·%{µ%{0<(O +þ*(–# *"(;>*r(Õ }¸%}¹%}º%*0 {¹%{º%{¸%( +*:(Õ }»%*F{»%o—# þ*:(Ê }¼%*:{¼%o¼m*(–# *J( ( (W>*r(Õ }½%}¾%}¿%*r{½%{¾%{¿%þ(P +*r(Õ }À%}Á%}Â%*0 {Á%{Â%{À%( +*:(Õ }Ã%*F{Ã%o—# þ*:(Ê }Ä%*:{Ä%o¼m*(  *6o|j(>*:(  }Å%*0o|j {Å%(+þ*r(˜# }Æ%}Ç%}È%*~{Æ%{Ç%{È%o¼m(>*’(# }É%}Ê%}Ë%}Ì%*0 %{É%{Ê%{Ë%{Ì%o¼m(>*ò(™# }Í%}Î%}Ï%}Ð%}Ñ%}Ò%}Ó%*0 uß([ {Ó%(n oe þ, {Ò%+ {Í%{Ð%{Ñ%(P +,,{Í%{Î%{Ï%{Ð%{Ñ%{Ó%(>*(à *0„}Ô%}Õ%}Ö%}×%}Ø%}Ù%}Ú%}Û% }Ü% }Ý% }Þ% }ß% }à%}á%}â%}ã%(š# *0 àš{â%YE +8Œ8Q8A8Ÿ{Û%:Œ(ö> {Ú%{Õ%o?{Õ%o?(’ +¥¦o # }ß%}â%{ß%oï 9{ß%o # }Ü%{Ô%{Ü%{×%(é=}Ý%{Ý%{Ô%{ð"{×%{Ý%{×%o~m(‹ +(n}Þ%{Ô%{Õ%{Ö%{×%{Ø%{Ù%{Þ%( >¥]oŒ }á%}â%{á%oï ,0{á%o }à%}â%{à%}ã%*}à%+Ã}â%{á%(ý+}á%}Þ%}Ý%}Ü%8Ñþÿÿ}â%{ß%(. +}ß%+}â%}ã%*0¥e {â%YE+8€{â%E ++5++++)}â%{á%(ý+}â%{ß%(. +}â%}ã% Þ t   Þ&8fÿÿÿþ,z*lˆ ê{â%E +++ +++****"{ã%*0?{Ô%{Õ%{Ö%{×%{Ø%{Ù%{Ú%{Û%sÍA*(›# *zo©m,ofmomj(c **r(§ }ä%}å%}æ%*v{å%{æ%{ä%(Q +þ*(§ *>(a>þþ*(§ *.(a>þ*(–# *J( ( (W>*r(Õ }ç%}è%}é%*0 {è%{é%{ç%( +*:(Õ }ê%*F{ê%o—# þ*r(Õ }ë%}ì%}í%*r{ë%{ì%{í%þ(P +*:(Õ }î%*0ofmo|j {î%(+þ*(Õ *Jofmo|j(>*V(–# }ï%}ð%*R{ï%{ð%(>*r(Õ }ñ%}ò%}ó%*0 {ò%{ó%{ñ%( +*:(Õ }ô%*F{ô%o—# þ*(Õ *.o}mþ*(Õ *0!oofm {g:{l:r:po þ*r(™# }õ%}ö%}÷%*j{õ%{ö%{÷%(>*r(Õ }ø%}ù%}ú%*0 {ù%{ú%{ø%( +*:(Õ }û%*F{û%o—# þ*’(  }ü%}ý%}þ%}ÿ%*0 ){ý%{ÿ%{ü%{þ%o¼m( +þ*(  *V{g:{q:( kþ*(  *j{g:{l:r:po þ*(# *ž{g:{q:( kþ,omj(c **(h# *"(=>*’(œ# }&}&}&}&*0 \à{&o¼m {&{ð"{&{&o~m(‹ +(n {&{ñ"   {&{&þo9T*(  *V{g:{q:( kþ*(–# *J( ( (W>*r(Õ }&}&}&*r{&{&{&þ(P +*r(Õ }&}&} &*0 {&{ &{&( +*:(Õ } &*F{ &o—# þ*:(Ê } &*:{ &o¼m*(  *6o|j(>*:(  } &*0o|j { &(+þ*r(˜# } &}&}&*~{ &{&{&o¼m(>*(h# *"(=>*0d}&}&}&}&}&}&}&}& }& }& }& }&(š# *0 ¸á{&YE +8h808 8w{&¥»o }&}&{&oï 9){&o }&{&{&{&o¼m(ŒU9é{&{&o¼m {&{ð"{&{&o~m(‹ +(n}&sB{&{ñ"  {&{&{&o9T(ã +¥]oŒ }&}&{&oï ,0{&o }&}&{&}&*}&+Ã}&{&(ý+}&}&+}&8Çþÿÿ}&{&(¨ +}&}&}&*0¥e {&YE+8€{&E ++5++++)}&{&(ý+}&{&(¨ +}&}& Þ t   Þ&8fÿÿÿþ,z*lˆ ê{&E +++ +++****"{&*0,{&{&{&{&{&sB*Ò(™# }&}&}&}&} &}!&*0 oß([ {!&(n oe þ, { &+ {&{&{&(P +,&{&{&{&{&{!&(R +*(à *(h# *"(=>*r(# }"&}#&}$&*0 Oâ{"&{ð"{#&{#&o~m(‹ +(n {"&{ñ"  {$&{#&þo9T*(›# *zo©m,ofmomj(c **(–# *J( ( (W>*r(Õ }%&}&&}'&*0 {&&{'&{%&( +*:(Õ }(&*F{(&o—# þ*r(Õ })&}*&}+&*r{)&{*&{+&þ(P +*:(Õ },&*0ofmo|j {,&(+þ*(Õ *Jofmo|j(>*V(–# }-&}.&*R{-&{.&(>*r(Õ }/&}0&}1&*0 {0&{1&{/&( +*:(Õ }2&*F{2&o—# þ*(Õ *"o­m*(Õ *0!oofm {g:{l:r:po þ*(Œ *"{;*(ž# *0+ãs;B{v; ofmo~j(/+ ('R(=>*(Ÿ# *0å ( # (¡# s¢# (£# *00æ(çi(z (¤ (z (u! (ÂB (D þ(€+**0 gç(Ïi(áirà-psY‰(k‰(w‰(Ži( (2i (2l((l(Ñ (¤# (¤# {;(ÿk(AB*0{¡8{›8{š8{œ8{ 8{8{ž8{Ÿ8{˜8{™8(¤ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ {—8(CB*Ò{©8{ª8{¨8(¤ (¥ (¥ (¥ {©8(CB*F00 9þþ**0©+(y {9& {9&  /+ þ /*1*(y {:&{:&(S +/*1*(y {;& {;&  /+ þ/*1*(y {<& {<&  /* þ*0Ž-{9& {9& /+þ /*1*{:&{:&(S + / * 1 *{;& {;& /+þ/*1*{<& {<& /*þ*0Øé2"sBrDps¥# (T +(Ðoì &+o^  YEC#YE+YE°-YEY0YE*{;&,'sBrDps¥# (T +rè-p(Ñoì &+(jBX8Cÿÿÿ{9&,'sƒBrDps¥# (T +r|8p(Ñoì &+(hBX8ùþÿÿ{:&  (U +þ,"s…BrDps¥# (T +(Òoì &++(§# (iBX8¡þÿÿs‡BrDps¨# (V +(Óþo©# *{:&  (U +þ,"s‰BrDps¥# (T +(Òoì &+ (§# (iBX8(þÿÿ0G 2"s‹BrDps¥# (T +(Ôoì &+o^ (FB, X+»*0 2"sBrDps¥# (T +(Õoì &+o^ (FB,(kBX(JBs; **YE!sBrDpsª# (W +(×þo«# *(kBXs; *0Q2"s‘BrDps¥# (T +(Ôoì &+o^ .YEs; *Xþ(KB*0T 2"s“BrDps¥# (T +(Ôoì &+o^ (FB,X+¸þ(LB*0w 2"s•BrDps¥# (T +(Ôoì &+o^ (FB,(MBs¬# **YE(LBs¬# *X(LBs¬# *0v 2"s—BrDps¥# (T +(Ôoì &+o^ (FB, ZiX0iYX+®$YEs­# *(V Xs­# *0]ëo^ 12 9þþ+,8i0iYX(OB (®# (¯# (X +,s­# * s­# *s­# *09{<&,/sŸBrDps¥# (T + þùo& (Øoì &**09{;&,/s¡BrDps¥# (T + þùo& (Öoì &**0_ì{:&  (U +þ,Hs£BrDps¥# (T + þùo& {:&(Y + þo& (Üoì &**0 =ð2]suB(Z +,swB([ +(\ ++syBrDps°# (] +(Ïo±# s{B(‚+(l_s— *(²# ,'X8kÿÿÿo^ %YE'X80ÿÿÿX 2"s}BrDps¥# (T +(Ðoì &+slB      (PB  (®#  (¯# (IB(NB(³# (´# (< (´# (= 2"s™BrDps¥# (T +(Ôoì &+,!s›B(^ +{—8sµ# (¶# +,!sB(^ +{—8sµ# (¶# +o^ %YEúAYEIEYEHHH‚LYEÏäOYEƒXYE—aYE ÄD˜iììì&ilYEwoYEMsYE©ý7xYE)s¥BrDps·# (_ +s (Ýþo¸# *{<&,/s§BrDps¥# (T +þo& (Øoì &+(DBsµ# (¶# X8…üÿÿ(` +(a +(b +{£8sµ# (¶# X81üÿÿ(` +(a +(b +(nsµ# (¶# X8Ûûÿÿ{<&,/s©BrDps¥# (T +þo& (Øoì &+X2"s«BrDps¥# (T +(Ùoì &+s­BrDps¥# (T +(Úoì &o^ XYEgdYEYiYEKoYE=uYE/xYE!s¯BrDps·# (_ +(Ùþo¸# *(DBsµ# (¶# X8œúÿÿ(` +(a +(b +(¾B(n(ns±B(^ +sµ# sµ# (¶# (¶# X8úÿÿ(` +(a +(b +{¢8sµ# (¶# X8Èùÿÿ(` +(a +(b +{§8sµ# (¶# X8tùÿÿ(EBsµ# (¶# X8:ùÿÿs³BrDps·# (_ +(Ûþo¸# *(` +(a +(b +(¾Bsµ# (¶# X8Æøÿÿ{¨8sµ# (¶# X8øÿÿ{:&,_(¹# +YEHsµBrDps·# (_ +þo& {:&(Y +þo& (Üþo¸# *(¾Bsµ# (¶# X8ê÷ÿÿX8Ã÷ÿÿ0 3ñ([    (º# þ(TB*.s`B€3&*( *s^B**uÜþ*~3&**uÝþ*0ó uÝ,+*Zr.8ps»# (c +o¼# *:(WB}6&*{6&*(WB*:( }7&*2{7&{6&*:( }8&*{9&*{:&*{;&*{<&*"}9&*"}:&*"};&*"}<&*’( }9&}:&};&}<&*Šþ,þ, (GB**þ,**:¥àomB*04ô¥à þ,¥àþ, (HB**¥àþ,**0gþ,^ ¹y7ž{<&bcXXX ¹y7ž{;&bcXXX ¹y7ž{:&(d +bcXXX ¹y7ž{9&bcXXX **6(n opB*0`ôþ,Quà ,E{9&{9&35{:&{:&(e +,{;&{;&3{<&{<&þ*****þþ*0[þ,Lþ,D{9&{9&34{:&{:&(f +,{;&{;&3{<&{<&þ*****þþ*0ôuà ,osB**(½# *0õ(¾# (¿# þ(X +*(À# *"(¿# *(Á# *"s\ z(á *&(n*( *"s\ z( *"s\ z( *"s\ z( *"s\ z( *"s\ z(Â# *"s\ z( *"s\ z( *"s\ z( *"s\ z(Ã# *"s\ z( *"s\ z( *"s\ z( *"s\ z( *"s\ z( *"s\ z(- *X*(- *X*( *"s\ z( *"s\ z( *"s\ z(Ä# *"s\ z( *"s\ z( *"s\ z( *"s\ z( *"s\ z(Ä# *"s\ z(- *X*(Ä# *"s\ z(Ä# *"s\ z~ **0 (·B(w‰( (2i*0 %rWpsY‰(w‰( (2i*0 "(Ñi(w‰(Œi( (2i*r(Ñi(çi(i‰(Œi(¸B*r(Ïi(çi(i‰(Œi(¸B*r(Ñi(çi(i‰(Œi(¸B*0 3(Ïi(çi(·B(i‰(w‰(Œi( (2i(i*2(¼B(i*2(½B(Mn*>sÅ# þ(g +*00÷sKC (ü+ (8P (@ (? sÆ# *b(çi(z (¤ (ÂB*r(¨ -(¤ *(ÃB(D *–(çio­QoQo‘Q(ÂB(D *JsÇ# þ(h +*>(!asàC*0ãø(O] ($nE–,:k*ty{ˆ; säCþ(§ +*tv{ƒ; +âtw{„; +Ôtx {†; {…;(ÈB,* 8dÿÿÿtz{‰;{;{ü:{;{ü:þ*tu{;8ÿÿÿ0I(a{˜8(],+(a{™8(],*(^,(_+º*0w(a{ 8(],+(a{›8(],+(a{š8(],+(a{˜8(],*(a{œ8þ(]*0w(a{¡8(],+(a{8(],+(a{ž8(],+(a{™8(],*(a{Ÿ8þ(]*Î(ÊB,+(ËB,*(^,(_+Ð*Z(ÊB,*þ(ËB*²(a{©8(],*(a{ª8þ(]*Z(ÌB,*þ(ÎB*†(ÏB,*(a{¨8þ(]*Z(ÍB,*þ(ÎB*†(ÑB,*(a{¨8þ(]*0–ù(m] 9†(9 (; (³ ,t(9 (; (³ (³ -[(´ (9 (: (O]($n31t{{Š;(Un(ˆ],* sÈ# (É# ***~**0"û(ì sÊ# (þC oË# oD*BsÌ# þ(i +*~**0ü{;|û:(j {;|û:(j (ëiE+}T*(ëiE*****(ëiE*****(ëiE*****(ëiE****o l o l , ,olol,*** ,â*0Úþ(Í# 9Í (Í# (Î# (Ï# (Î# (Ð# (ÙB(Í# 9…(Í# (Î# (Ï# (Î# (Ð#  (/ (/ /+ (/ (/ 3 (ØB+, sÑ# (Ò# *sÑ#  sÑ# (Ò# (Ò# * sÑ# (Ó# (Ò# **"(ÙB*0ï{;|û:(j (ái (n oòi,*rì-p{;{ù:{Is¤ (¤(+&+{;|û:(j (Ïi (n oÚi,*r.p{;{ù:{Is¤ (¤(+&+{;{ÿ:,(rD.p{;{ù:{Is¤ (¤(+&*("n( (þk*0Ç{‡& {;|û:(j(ëiþ,#{;|û:(j (n ot‰þ+,'(ö {;{ù:{I(szC(è *{;|û:(j u$,.t$ {&{™& s,D (Ô# ( (Õ# +o l(¾£*08 {;|û:(j (_ (n ot‰- (ÜB*(¾£*0x(m‰3i(i ($n3$t{ {Š; s.D(4]þ(j +*{†&{&(c],{†&{&(Y](ÝB*(¾£*(¾£*0W{;|û:(j u$,.t$ {&{™& s0D(Ô# ( (Õ# +o!l(¾£*0v(i3g{†&{&(c],M{†&{&(Y] {;|û:(j (Ži (n o—iþ, (Ži(ßB*(¾£*(¾£*(¾£*0Ö@{;|û:(j(ëiE+,{†&{&("n(c]þ+,Ro l,+{;{ù:{I(c {;|û:(j("n(ÞBs2Dþ(k +*{;|û:(j("n(ÞBs4Dþ(k +*0)./+ /+ 3[*YX[*0 ï s6D(4](l + (Ö# (×# {†&{&(6] {†&{&(6](ÚB(Í# 9x(Í# (Î# (Ï# (Î# (Ð#   s8D(m +, s:D(n +(o ++,8 sD(n +(q +(r +(;]þ(áB* s@D (p + sBD(n +(q +(r +(;]  sDD (m +, sFD(n +(o ++, þ(áB*(Í# þ,(×B*(Ñi{;{ù:{I{;|û:(j{;|û:(j{;|û:(j(¹B  (Mn (Qn(ÛB8-þÿÿ(Í# - (Ø# -(¾£*(×B*0Ë sHDsJD(s +(t +(ÚB (Í# 9› (Í# (Î# (Ï# (Î# (Ð# /x(Ñi {;{ù:{I(çi {;|û:(j {;|û:(j(¹BsLD (u +(u!  (Mn(Sn(ÛB89ÿÿÿ o l,B(Ñi {;{ù:{I(çi {;|û:(j {;|û:(j(¹B+6 {;{ù:{I(çi {;|û:(j {;{ù:(v +sND (u +sPD(6](p + sRD(4](q +(r +(;] (ÛB(Í# -(Ù# sÚ# *(u! 8=þÿÿsÚ# *0   (äB*09 s  (i ($nE†$2„¨ty{ˆ; (çB*tv{ƒ; +ètw{„; +Útx {†; {…;,(¤ (¥ (¥ (çB*(¤ (¥ (¥ (çB**tu{;8ÿÿÿt{{Š;(åB  (Û#   (Ü#   ,   (è    (u! s  * s  *0Is  (³ ,7 (³ (´  (æB(… („ +¹*0¶s  (@lE (>*tC{; (æB*tB{; +çtH {;(çB*tM {#; {";(¤ (¥ (¥ (çB*0Hs  (a! ,6 (a! (b!  (èB(… („ +º*0ssTD( + („ (… (¨ ,N(z (éB(… („ (æB (…  („ (f +(ˆ+þ(ˆ+**0ì{†&{& {‰& {;|û:(j(ëiE+,D(c]-+9(Y] o l-#o l,+olol(ñ þ++,To l,+{;{ù:{I(c  {;{ù:{I{‡&sD(ö (Ý# (Þ# *(¾£*0 -{‡& {‰& (÷Bs^Dþ(k +*0 0 {†&{& (àBsfDþ(k +*0 '($nEêM‘¡(×B*($n3ï(×B*tw ($n3×tw {„; {„;  þ(òB*tx($n3 tx{†;{†;{…;{…;  þ(óB*t{ ($n@Iÿÿÿt{  {Š;  {Š;   (Sn(Qnþ(ãB*tu($n@ÿÿÿtu{€;{€;{;{;o† o† .(×B*o#a{†&{‡&{‰&sàC(†]-(×B*þ(ðB*ty($n@Yþÿÿty{V8{‡;{‡;(6+91þÿÿ{‡;{‡;{ˆ; {ˆ;  þ(òB*0 •X {ˆ& {†&{& þ,(¾£*u$þþ {†&{& (O]{†&{& (O]($n@’tz($n@|tz{‰;{‰;  {;{ü:{;{ü:3+){Â4 oß# ,{Â4 oà# (ƒ]+,{‰;{‰; (¾£*($n3Stz ($n3@tz  {‰; {‰;(ØB," {‰; {‰; þ(ìB*($n3Stz ($n3@tz  {‰; {‰;(ØB," {‰; {‰; þ(ìB*($n3Xtz{‰;{;|û:(j(ái(n oòiþ,{‰;þ(ìB*($n3Xtz{‰;{;|û:(j(ái(n oòiþ,{‰;þ(ìB*($n@¹tv{ƒ;(³ 9Ÿ{ƒ;(³ (³ :…{‚;(´ o£m,3{†&{&{†&{&(¤ (¥ (N](ƒ]+,3{‚;(´ (Un("n8¿üÿÿ($n@¹tv{ƒ;(³ 9Ÿ{ƒ;(³ (³ :…{‚;(´ o£m,3{†&{&{†&{&(¤ (¥ (N](ƒ]+,3{‚;(´ (Un("n8ùûÿÿ($n3qtv($n3^tv{B8{E8{‚;{‚;(i,4{‚;{‚;{ƒ;{ƒ;þ(òB*þ(îB*0)þ{‰& shDsjDþ(% +*0 ‹(³ ,s (³ ,F (³ (³ (´ (´ (ðB slDþ(k +*(ö {‰&{‡&sMC(è *(³ -Ö(¾£*0 =(³ -(³ -(¾£*    þ(ñB*0 #(ðBsnDþ(k +*0  X {†&{& {†&{‚& {ˆ& {‰&{‡&(^,(¾£*u$þþ{†&{&(O]{†&{&(O]($n3Jtz {Â4 {‰;oß# ,- {‰;  {Â4 oà# 8-ÿÿÿ($n3btz ($n3Otz  {‰;  {‰;  {;{ü: {;{ü:þ, {‰;  {‰; (¾£*($nEw6—($n3þ(ðB*($n@°tv{ƒ;(³ 9–{ƒ;(³ (³ :|{‚;(´ o£m,3{†&{&{†&{&(¤ (¥ (N](ƒ]+,*{‚;(´ (Un("nþ(ðB*($n3qtv($n3^tv{B8{E8{‚;{‚;(i,4{‚;{‚;{ƒ;{ƒ;þ(òB*($n3kty($n3Xty{V8{‡;{‡;(6+,4{‡;{‡;{ˆ;{ˆ;þ(òB*(^,(¾£*(^,(O]($nþ+,e(k]{B8{E8{ü8(i,+{B8{E8{ý8(i,+{B8{E8{þ8(i+,h(j](; (³ ,1(³ (³ -(´ (^þ(ðB*rb.ps¤(¤(w +*(£H,"(• 8šûÿÿ(ö shC(è *tz{‰;  þ(öB*tw($nE³üÿÿ³üÿÿ³üÿÿ³üÿÿ£üÿÿ³üÿÿ8®üÿÿtw {„; {„;þ(òB*tx!($nERüÿÿRüÿÿRüÿÿRüÿÿBüÿÿRüÿÿ8Müÿÿtx"!{†;"{†;#!{…;$"{…;%%$#þ(óB*t{&($nEÛûÿÿÛûÿÿÛûÿÿÛûÿÿÛûÿÿËûÿÿ8Öûÿÿt{'&{Š;('{Š;))((Sn(Qnþ(ãB*tv($n38{ûÿÿ{ƒ;(³ 9zûÿÿ{ƒ;(³ (³ :`ûÿÿ{‚;(´ o£m,3{†&{&{†&{&(¤ (¥ (N](ƒ]+9 ûÿÿ{‚;(´ (Un("nþ(ðB*0)þ{‰& spDsrDþ(% +*0 p{†&{& {‡& (^,(¾£*(i(ƒ],(¾£*(e`,(iþ(ðB*(&lþ(C*0'* ,1( sû£ (¤(w +*(¾£*0 S{†&{&(ÓB -(¾£* (á# (â# (Un("n(¤ (¥ (nþ(ðB*0(³ ,! (³ (³ -(´ ($N+(s˜D(x + ¥7rz.p(p+(` (–o r€.p(ñ ,&oµ 3((8f('8Xrˆ.p(ñ ,+ÊrŽ.p(ñ ,+ºr–.p(ñ ,+ªrËp(ñ ,8—ÿÿÿrœ.p(ñ ,8„ÿÿÿr¤.p(ñ ,8qÿÿÿr¬.p(ñ ,8^ÿÿÿr².p(ñ ,8Kÿÿÿrº.p(ñ ,88ÿÿÿrÑp(ñ ,8%ÿÿÿrÀ.p(ñ ,8ÿÿÿrÈ.p(ñ ,8ÿþÿÿrÒ.p(ñ ,8ìþÿÿrÚ.p(ñ ,8Ùþÿÿrä.p(ñ ,8Æþÿÿr×p(ñ ,8³þÿÿrì.p(ñ ,8 þÿÿoµ 3 (&+ (%(ö szC(ã# *0 , (ôn{¥8(Ðo  sžDs D((+(y +   s¢D(z + (ã (ä :² ,R (å {æ  (²S ( (0C(ä  s¦Dþ({ +* (C (C , (¨ þ+,+  (¨ þ,+   ( Cs¨Dþ({ +* -œ (ä#  (ö  (å# *0Ñ"r:ÝpoÕ rDÝpoÕ (³ þ,+,+,bob YYXoL  sD (| +(æ# ,%(æ# (æ# -(ç# (è# ++ (¢ ::üs’D (§ +:és”D (§ +,$(ö (–o (#szC(ã# *s–D (§ +,$(ö (–o ($szC(ã# *rC&p(ñ ,b(³ ,Y(³ (³ -G(´  (ö (“”  ( O(È+(“”  ( O(È+()szC(ã# *  (ùB*    þ(úB*0e(ÐB,,+(O]($nþþ+,6(¢ þ,*(ÓBþþ,(a{¨8þ(]***0e(ÐB,,+(O]($nþþ+,6(¢ þ,*(ÓBþþ,(a{¨8þ(]***0±#{3; {8; {7; {4; {5;{6;(z! þ, (ö (é# *{†&{&{‡&{†&{‚&{ˆ& {‰& X  (÷B    søDþ(} +*0±'(ðCEB [(ö (é# *t {”& {“& (C  (C(ö (é# *(žl(C(ö (é# *t{•&{–&(C  (C(ö (é# *0 *súD(¤ o¨Q ¥P(~ +(Ù+(Ú+ (‹ (Š o—Q,r‡po‰Q(¨](ê# (ë# +(ê# (Ú+(‹ (Š {„&(÷c(¼q(MJ(ì# (z  (y  (z  (¿+  (±](œl 9  (îo @  té  {~<(Òp@ï {~<t{ç<(Äq@Ï {<(³ :¾süD {€< (¿+( +9  (í#  {<{ê< {€<{ì<{ã<{é<{ä<{è<{æ<{í<{ë<sþDo€ +(¼U( ^, (šl* * *0 +(‡QE‰®Èt {(0u¸,[{(0t¸ {0{á/ {0{â/ {0{à/{ 0{ 0 (n(!±(šl*rö.ps¤(¤( +*tÁ{%0 {$0   (–l*rŸ/ps¤(¤( +*tÄ  {-0  {/0  {,0 {.0  (C*R{?0{@0(˜l*0S-{8;(z! {8;(ï# (ð# u$,,t$ {&{™& sE(Ô# ( (Õ# **0 þ/{3; {8; {7; {5; {6;,+(C(¨ þ9~{‡&{†&{&{†&{ƒ& (c  (´S (ŸP (¸T      sE(‚ +sEsE(ƒ +(„ +(… ++(‰ rC&p(ñ ,&r[&pr[&p (†l(Cþ(¢ +**VsE{3;þ(† +*090{3; {7; {6; {†&{&(‡ +(ß+(ß+([^*Rs Eþ(Ì£*0•3{†&{…& {;{ü: oñ# (ò# þ, (ö (é# *sE(ˆ +u$,2t$ {&{™&sE(Ô# ( (Õ# +sEþ(‰ +*:þ(C*0 J4{†&{& {ˆ& {†&{…& sE(ð+sEþ(Š +*0/6(¤ só# s&E(¡P(,P(ô# þ(\ +*0 £7(@l@¹tE (@l@¤tE {;{3; {;{3; {;{4;{;{4;{;{5;{;{5;{;{6;{;{6; (n o, (ñ +,%rC&p(ñ ,+ r[&p(ñ þ+, oµ oµ þ+,sE (w ++9¾{;{3; {;{3; {;{7; {;{7; {;{4;{;{4;{;{5;{;{5;{;{6;{;{6;  (g^  (g^ s E (‹ +  s$Eþ(k +*(@lE T·ü‹yelA­f(¾£*tB(@l3çtB{; {;  ( C  ( C  s*Eþ(Œ +*tJ(@l3ˆtJ{; {; {;  þ(ðB*tM(@lE ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ_ ÿÿÿ ÿÿÿ8ÿÿÿtM{$;{#; {#; {";{";(ðB  s,Eþ(k +*(ö (,sû£(è *(@lE TþÿÿTþÿÿTþÿÿTþÿÿTþÿÿTþÿÿTþÿÿTþÿÿTþÿÿTþÿÿ©ÿÿÿTþÿÿ8Oþÿÿ(¾£*(@lE þÿÿ þÿÿ þÿÿ þÿÿºÿÿÿ^ÿÿÿ þÿÿ þÿÿ þÿÿ þÿÿ þÿÿ þÿÿ þÿÿ8þÿÿ(@lE ÄýÿÿÄýÿÿÄýÿÿÄýÿÿÿÿÿuÿÿÿÄýÿÿÄýÿÿÄýÿÿÄýÿÿÄýÿÿÄýÿÿÄýÿÿ8¿ýÿÿ(@l @±ýÿÿ8]ÿÿÿ(@l@Ÿýÿÿ8Kÿÿÿ(@l @Œýÿÿ88ÿÿÿ(@l@zýÿÿ8&ÿÿÿ(@l@hýÿÿ8ÿÿÿ0~8(@lE :æmx¥š€a»ƒtE (@l3&tE {; {; (a (w]**tB(@l3ëtB{;{;s.E(¡P(-P*tJ(@l3¥tJ  {;{;þ(ƒ]*tM (@l @fÿÿÿtM  {#; {#; {";  {";   (ƒ], þ(ƒ]**(@lE ÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿÞþÿÿ8Ùþÿÿ*(@l þ*(@lþ*(@lþ*(@l þ*(@lþ*(@lþ*tH(@l@}þÿÿtH{;{;s0E( +*tC(@l@<þÿÿtC{;{;{;{;3 þ(ƒ]**0 V9 (a! ,G (a! (b! s2E(Ž +s4Eþ(k +*(¾£*0 R9(a! ,F (a! (b! s8E(„+,+ (¤# +±*0–:{†&{& {ˆ& {†&{‚& {‰& {‡&{;{;( +(¤#      (C s>Eþ(k +*0£;{†&{& {‡& {‰& (O]($nþ,(X](*lþ(C*(S`,(¾£*(q] ,(ö ($N(.szC(è *(ö ($N(-szC(è *0<{†&{& {‡& {†&{‚& {‰& (O]($nþ,(X](8lþ(C*(O]($nþ,7{9s@E(k]ofm{g:{p:(N++,(ö ($N(/szC(è *(X`,(¢ sBEþ(Œ +*{Ñ8  sDE(¡P(-P,+ {Ò8  sFE(¡P(-P,U(O]($nþ,;(j]  (;  (: sHEofmo~jþ( +*(¾£*(O]($nþ,=(k]ofm(wM, ofm{g:{s:{ƒ:þ++,(ö ($N(1szC(è *(ö ($N(0szC(è *0¶={†&{& {‡& {‰& (O]($nþ,(X](:lþ(C*(O]($nþ,5{9  sJE(k]ofm{g:{p:(N++,(ö ($N(2szC(è *(X`,(¢ sLEþ(Œ +*(Z`,(ö ($N(3szC(è *(O]($nþ9(j]  (;  (: ofm(xM, ofm{g:{s:{…:þ+,(ö ($N(4szC(è *sNEofmo~jþ( +*(¾£*0 ”>{†&{& {‡& {‰& (O]($nþ,(X](6lþ(C*(^, (_(ðBsPEþ(k +*(ö ($N(5szC(è *0 ò?{†&{& {‡& {‰& (O]($nþ,(X](lþ(C*(R]  (^,(¾£*(ö ($N(:szC(è *0 A{†&{& {‡& {‰& (O]($nþ,(X](2lþ(C*(O] ($n3e tv{ƒ;(³ ,O{ƒ;(³ (³ -8{‚;o£m,*{‚;(´ (Un("nþ(ðB*sVE(§ +,(¾£*(ö ($NsXE(x +¥7r:p(p+(` (;szC(è *0x>{†&{& {‡& {‰& (O]($nþ,(X](0lþ(C*(^,(¾£*(ö ($N(<szC(è *0|B{†&{& {†&{‚& {‡& {‰& (R](O]($nþ,(X](4lþ(C*(^, (W`+,(¾£*sZE(²Ss\E{†&{ƒ&(mP((+(+,t(O]($nþ,7{"9s^E(k]ofm{g:{p:(N++,(ö ($N(=szC(è *(¾£*(O]($nþ,(k]ofmo¿j+,(¾£*(ö ($N(>szC(è *0¿D{†&{& {†&{‚& {‡& {õ# {ö# {÷# {ø# {ù# {ú# {û#  {ü#  oµ oµ .(ö (?sû£(è *(‹ +   sý# þ(k +*0jE{†&{ƒ&(´S(„P {Ë1 {É1 (³ þ,{¥8(¤ (¥ + (ô](J oµ oµ 3**0F{†&{& ( ^,( ^,*(’^(–^*(^,(O]($nþ+,(C+G(ž^,(O]($nþ+,$( ^ (^,(C++  u¡-1 u¢-+u¢-u£-rB0p ¥só z**- (›^+,Ã(^*0 9G{, {, {þ# {ÿ# {$ ,* (C*†s|Es~Eþ(% +*†s€Es‚Eþ(% +*0 aH{, {þ# {$ {†&{& {†&{‚&(‘ +(C s„Eþ(k +*0 .I{þ# {$ ( D(‘ +þ(C*0LJ{$ {$ (’ + {†&{&(ƒ]-(ö (Dsû£(è *(¾£*0 ÌL1No$ (“ + (ŸH (] -rR9ps$ +. ¥7r¸9p(p+(` s$ + rR9ps$ ($ ,"($ - s +)s +-rR9ps + rR9ps (Z YE D}ÀrWps\ z(ö Yds% (ÒNo& (Lsû£($ *(ö Yds% (ÒNo& (Msû£($ *(Y (ö Yds% (ÒNo& (Nsû£($ *(Y (ö Yds% (ÒNo& (Osû£($ *0 M{ù# o$ o $ o $ {ø# oµ {÷# oµ  ;›1+{ü# o $ þ,L 1 (” +*(ö X ds% (ÒNo& (Psû£($ *(ö  ds% (ÒNo& (Qsû£($ *(ö ds% (ÒNo& (Rsû£($ *0¼Q( $ ( $ :w($ ( $ ,;($ ($ ( H{÷# oµ (T (ö sû£($ *( $ ( $ :¦($ ( $ 9•($ ($ {ù# (ö o $ o•Q¥ýo¶   oï , o· Ö +è  Þu   ,  oâ &Ü&Ü  (Usû£($ *-( H(V+Os$ (• +¥b(– +  o$ ,( H(W+ o$ ( H(X (ö sû£($ *( $ ( $ :xÿÿÿ($ ( $ 9gÿÿÿ($ ($ 8Íþÿÿ¼!Ý0 ØY{†&{‚& {‡& {‰& s$ (— + s$ (— +s$ (— +s$ (— +s$ (— + ( $ ( $ -T ($ ( $ þþ,(ö ( H(Gsû£($ *(ö ( H(Fsû£($ *( $ ( $ :‘($ ( $ ,X($ ($   {ù#  {ø# o©Qoµ ,(ö (Hsû£($ *(ö (Isû£($ *( $ ( $ :¸($ ( $ 9E($ ( $ ( $ :Ð($   {ù#  ds%    (ÒN o& (K  (Y   (Z  {$ ($ -  s$ +0($ {$ {I (J{Is$ ($ ($ ( $ (ö s sû£($ *( $ ( $ -P($ ( $ ,B($ ( $ ( $ -+($   o!$ þ,($   (˜ +* ( $ ( $ 9Ú ( $ ( $ ($   o!$ - s"$ (™ ++9Ÿ( $ ($  (ö  {#$ ¥lo$$  oï ,o%$ {&$ o'$ Ö+ÚÞu , oâ &Ü&Ü  o$ (Ssû£($ *(š +*( $ ( $ :òþÿÿ($ ( $ 9áþÿÿ($ ( $ ( $ :Çþÿÿ($   o!$ þ9¯þÿÿ($  8”þÿÿ( $ ( $ :þÿÿ($ ( $ 9þÿÿ($ ( $ ( $ :eþÿÿ($   o!$ þ9Mþÿÿ($  82þÿÿ( $ ( $ :ú($ ( $ 9‡($ ( $ ( $ -($  8Óüÿÿ( $ ( $ :çýÿÿ($ ( $ 9Öýÿÿ($ ( $ ( $ :¼ýÿÿ($   o!$ þ9¤ýÿÿ($  8‰ýÿÿ( $ ( $ :…ýÿÿ($ ( $ 9týÿÿ($ ( $ ( $ :Zýÿÿ($   o!$ þ9Býÿÿ($  8'ýÿÿ( $ ( $ :#ýÿÿ($ ( $ 9ýÿÿ($ ( $ ( $ :øüÿÿ($   o!$ þ9àüÿÿ($  8Åüÿÿ,/[0»Z,<(($ ,0 ,+ (• ()$ {æ o‰Q s— (˜ ++ -O(› +(*$ þ,+%r@^ps (­+s®E(](®+s¿C*(ª (A (ª (@ sÇC*"s+$ *fs²E(œ +þ( +*0Ô[{ù# o¢Q,{-$ o¢Q+,M{ù# {ø# o©Q {-$ {.$ o©Q oµ oµ 3 (ž ++(V +(V o$ o/$ (Ÿ +(c+ sºE(  +,s¼E(¡ ++,*s¾E(  +,sÀE(¡ ++,**0¿\{ù# o¢Qþ {-$ o¢Qþ /+þ ,*{ù# o¢Q,{-$ o¢Q+,-{ù# oŠQ{-$ oŠQ4+ þ+ , *{ø# (³ þ {.$ (³ þ /+þ,**0 &]o0$ , o1$ +,>o2$ oó {,(^o3$ oó {,(^(*C+ ,*{õ# (4$ þþþ {5$ (4$ þþþ /+ þ ,*{ö# (4$ þþþ {6$ (4$ þþþ /+ þ,*o$ o7$ 3(¢ ++,*(£ +*0 _^þ  þ /+þ ,*o0$ þ  o1$ þ /+þ , * (¤ +*0 Abs´E s¸E  sÄE (¥ + (8$ 9þ (8$ (8$ - (9$ (:$ (;$ (¾£s<$ *(8$ - (8$ - +sÆE (¦ ++ sÈE(¦ +sÊE(§ +(+([(] -+?r@^ps (­+  sÎE¥7 rz.p (p+(` (\(®+ (ö   (=$ (¨ +(è s<$ *8+ÿÿÿ0ad{†&{& {†&{‚& {‡& {‰& rC&p(ñ ,+ r[&p(ñ s–E(© +(($ ,6(($ (($ -$- ()$ (;$ (¾£s<$ 8{(($ -&-"(ö (Ysû£(è s<$ 8L(($ --(ª +s<$ 8$,+ s˜E(« +    s¢E(¬ +  (8$ ,7   (8$ (8$ -% (9$ (:$ (;$ (¾£s<$ 8´   sªE(¬ +  (8$ ,R   (8$ (8$ -" (9$ (:$ (;$ (¾£s<$ +^   (/C+@   sØE(­ +(ö   (Z(® +(è s<$ (ä (ã - s<$ *(å   sàE(k +s<$ *0 ôe{†&{& {†&{‚& {‡& sâE(© + (($ -:(($ -(ö (Ysû£(>$ *(ª +säEþ(} +* (($ (($ -U()$ ( DsæE( DsèE( DsêE( (¯ +sìEþ(} +*(($ -8[ÿÿÿ(ö (é# *FsòEþ(ð+*’(!asàC( D( C(Ë+&*0Ng(ì sÊ# (þC o?$ (° + Þ t  Þ , (@$ (+*oD*" JsôE(± +*JsöE(± +*†(!asàC(C(Ë+&*~súEsüE(% +(Ë+&*~sþEsF(% +(Ë+&*~sFsF(% +(Ë+&*~sFsF(% +(Ë+&*~s Fs F(% +(Ë+&*~sFsF(% +(Ë+&*~sFsF(% +(Ë+&*~sFsF(% +(Ë+&*†sFsF(% +(Ë+&*0 #sFs F(% +(Ë+&*0yk (A$ ( lEÈ<5ta {F; {H;{I;{G; (j](; (:   ofmo¤j  (|   (6"   (7"   (²   (°s%F {Á](¾U  (ÍP(?Q(QsB$ (C$ *t_{A;{@; {B; (QsB$ (C$ *t`{C;{D;{E;sD$ (E$ *(F$ *tb{J;(G$ *0 ¤ot{ (H$ (I$ (H$ (J$ o¨Q¥P(~ +o—Q,;(Ê ,'(Ê (Ë   (  sK$ +sK$ + sK$ (L$  (M$ s'F(² + -+   (â (l oQo‰Q(^, o—Q+,, (Ê , (Ë   (r_( ^þ++,p (³ +  (N$  (O$  (õc (Œ_  (ð  (ñ (ö (Ìp(¤ (l (æoo¾ (  (P$ *(ö  (dP(  (P$ *0 øqt (Q$ (R$ (Q$ (S$ (Q$ (T$ (ö on{Ø:oè  ,`,.YE8‘o (Ó](  8wYE+Ðo o (Ž_(  +I,E+ (Ò](  +(YE8~ÿÿÿo (_(  (P$ *0Xr s"FsU$ s4Ts×C (b (!a sàC ( D(þBs)Fþ(´ +*0Ys{& {‚& (’H (Ú (Û (!asàC s+F s-F(% +(Ë+&*~s5Fs7F(% +(Ë+&*0Ÿto¢Q9‘s9F  s;FsU$ s4Ts×C (b(!asàC (ÅBo©Q(³ ,6(³ (³ -$(´  s@FsBF(µ +(þ+***(V$ *(¾B*:(* }=&*0 Uu{;|û:(j{=&{;|û:(j(ái {=&(n oòi,(Ži+(Œi(¸B*²(Ÿ }>&}?&}@&}A&}B&*(Ÿ *0 (  *0 (¡ *{>&*{?&*{@&*{A&*{B&*²(Ÿ }C&}D&}E&}F&}G&*(Ÿ *0 (  *0 (¡ *{C&*{D&*{E&*{F&*{G&*²(Ÿ }H&}I&}J&}K&}L&*(Ÿ *0 (  *0 (¡ *{H&*{I&*{J&*{K&*{L&*²(Ÿ }M&}N&}O&}P&}Q&*(Ÿ *0 (  *0 (¡ *{M&*{N&*{O&*{P&*{Q&*²(Ÿ }R&}S&}T&}U&}V&*(Ÿ *0 (  *0 (¡ *{R&*{S&*{T&*{U&*{V&*r(Ÿ }W&}X&}Y&*(Ÿ *0 (  *0 (¡ *{W&*{X&*{Y&*0vÍþ,m ¹y7žt (€C(¿+bcXXX ¹y7žt (C(¿+bcXXX ¹y7žt (~C , ( +bcXXX **6(n oC*0†*þ9tu ,h(¶ +-*t (~Ct (~C(ñ ,?t (Ct (C(À+,t (€Ct (€Cþ(À+****þþ*0}þ,nþ,f(¶ +-*t (~Ct (~C(ñ ,=t (Ct (C(Â+,t (€Ct (€Cþ(Â+****þþ*0*u , þo„C**r(Ÿ }Z&}[&}\&*(Ÿ *0 (  *0 (¡ *{Z&*{[&*{\&*0mþ,d ¹y7žt (ŒC(ô+bcXXX ¹y7žt (‹C(¿+bcXXX ¹y7žt (ŠC(¾+bcXXX **6(n oC*0‡*þ9uu ,i(· +-*t (ŠCt (ŠC(Á+,?t (‹Ct (‹C(À+,t (ŒCt (ŒCþ(õ+****þþ*0}þ,nþ,f(· +-*t (ŠCt (ŠC(\+,=t (‹Ct (‹C(Â+,t (ŒCt (ŒCþ(ö+****þþ*0*u , þoC**Ò(Ÿ }]&}^&}_&}`&}a&}b&*(Ÿ *0 (  *0 (¡ *{]&*{^&*{_&*{`&*{a&*{b&*Ò(Ÿ }c&}d&}e&}f&}g&}h&*(Ÿ *0 (  *0 (¡ *{c&*{d&*{e&*{f&*{g&*{h&*Ò(Ÿ }i&}j&}k&}l&}m&}n&*(Ÿ *0 (  *0 (¡ *{i&*{j&*{k&*{l&*{m&*{n&*r(Ÿ }o&}p&}q&*(Ÿ *0 (  *0 (¡ *{o&*{p&*{q&*’(Ÿ }r&}s&}t&}u&*(Ÿ *0 (  *0 (¡ *{r&*{s&*{t&*{u&*’(Ÿ }v&}w&}x&}y&*(Ÿ *0 (  *0 (¡ *{v&*{w&*{x&*{y&*’(Ÿ }z&}{&}|&}}&*(Ÿ *0 (  *0 (¡ *{z&*{{&*{|&*{}&*r(W$ }X$ }Y$ }Z$ *0 Qw([$ (\$ {Z$ {]$ ds% {X$ {Y$ {Z$ (ÒN o& {Y$ s·C*{&*{‚&*{ƒ&*{„&*{…&*"}…&*²( }&}‚&}ƒ&}„&}…&*^ sÙCsU$ s×C**o &**þ(:+*þ*{†&*{‡&*{ˆ&*{‰&*’( }†&}‡&}ˆ&}‰&*6{†&{ƒ&*6{†&{&*6{†&{‚&*V(V }Š&}‹&*R{Š&{‹&(ÈB*^sçC€&sçC€Ž&*:( }Œ&*~&**(ðCþ*~Ž&**(ðCþ*"sòC**(ðCþ*"sõC**(ðCþ*{Œ&*Zr.8ps^$ (¸ +o_$ *Z(çC}“&}”&*{“&*{”&*Z(çC}•&}–&*{•&*{–&*:( }—&*2{—&{“&*2{—&{”&*:( }˜&*2{˜&{•&*2{˜&{–&*sÿC*:( }™&*{™&*&*Zr.8ps`$ (¹ +oa$ *F(ì sÊ# (þC*0x{™& sD(Ô# þ(º +*(3 *.þoK *.sD€š&*( *~š&**u#þ*sD**u$þ*0y u$,+*Zr.8psb$ (» +oc$ *.u$þ*(D*:(D}&*{&*:( }ž&*:( }Ÿ&*2{Ÿ&{&*V(d$ }e$ }f$ *Z{e$ {f$ þ(¼ +*:(h$ }i$ *0:{{i$ sj$ (½ +(¾ + , (@$  ok$ sl$ (m$ **Ò(Ÿ }£&}¤&}¥&}¦&}§&}¨&*(Ÿ *0 (  *0 (¡ *{£&*{¤&*{¥&*{¦&*{§&*{¨&*(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (¿ +-***þþ*Žþ,þ, (¿ +-***þþ*0*u ,o*D**V(í }©&}ª&*V{©&{ª&o l*r(n$ }«&}¬&}­&*0(|(Ï# (Ð# {«&{¬&{­&(ÝB*V(í }®&}¯&*V{®&{¯&o!l*’(æ }°&}±&}²&}³&*0 u{±&{²&(ÛB{°&{‰&{³&{±&{;{ù:{I{±&(Mn("n{²&("n{°&{‡&sD(ö (Ý# (Þ# *r(æ }´&}µ&}¶&*0š¡{µ&{¶&(ÛB{µ&{;|û:(j (éi (n oòi,#{´&{†&{&{¶&(Un(ˆ]+,0({µ&{;{ù:{Isû£(ö (Ý# (Þ# *(¾£*(o$ *03}(Ï# (Ð# {;|û:(j (ái  (n oòi*:(p$ }·&*0~(q$ (r$ {·&]þ*:(o$ }¸&*0|(Ï# (Ð# {¸&]þ*:(s$ }¹&*0(~(q$ (r$ (On{¹&(âBe(9]*:(t$ }º&*0(|(Ï# (Ð# (Mn{º&(âBe(9]*:(s$ }»&*0(~(q$ (r$ (On{»&(âBe(9]*:(t$ }¼&*0(|(Ï# (Ð# (Mn{¼&(âBe(9]*:(p$ }½&*0~(q$ (r$ {½&]þ*:(o$ }¾&*0|(Ï# (Ð# {¾&]þ*(o$ *0|(Ï# (Ð# þþ*:(u$ }¿&*R{¿&(0]sÑ# *( *&(åh*( *&(åh*:(s$ }À&*0(~(q$ (r$ (On{À&(âBe(9]*r(t$ }Á&}Â&}Ã&*0Q|(Ï# (Ð# {Á&{;{ü:{;{ü:3 {Ã&(Mn*(Mn{Â&(âBe(9]*({ *0O{;|û:(j (Ñi (n oÚi,'{;|û:(j (ái  (n oòiþ**:(í }Ä&*>{Ä&(þk*r(v$ }Å&}Æ&}Ç&*0 {Å&{Æ&{Ç&þ(C*Ò(æ }È&}É&}Ê&}Ë&}Ì&}Í&*0 a{È&{É&{Ê&{Ë&{Ì&{Í&{;|û:(j{Í&{;|û:(j{Í&{;{;þ(íB*Ò(æ }Î&}Ï&}Ð&}Ñ&}Ò&}Ó&*0 õ€{Ó&{; {Ñ&u$,2{Ñ&t$ {&{™& sVD(Ô# ( (Õ# +{Ò&( (þk{Ó&ol,(¾£*{Î&{†&{…&{Ó&{;{ü:ow$ ,%{Ï&{Î&{Ñ&{Ó&sXD(Ì£+(¾£{Î&{Ï&{Ð&{Ñ&{Ò&{Ó&sZDþ(k +*0D(æ }Ô&}Õ&}Ö&}×&}Ø&}Ù&}Ú&}Û&*0 5{Ø&($nE Örù0ps\ z{Ø&tz{‰; {Ô&{†&{&{Ø&{Ù&(ƒ],(¾£*{Ô&{†&{&{Ù&(ÈB,.(ö {Û&{Ø&{Ù&{Ú&{Ö&sVC(è *{Ô&{Ø&{Ù&(ëB{Ô&{Õ&{Ö&{×&{Ù&s\Dþ(k +*{Ø&t{ {Š;(Wn@ ÿÿÿ{Š;t…{™; 8ÿÿÿ(x$ *(¾£*Ò(y$ }Ü&}Ý&}Þ&}ß&}à&}á&*0 :‰(@lE „’º’ðNÁ÷&UÁtC {; {; {; {á&{à&(O]($nþ-+{á&{à& (ƒ],(¾£*{Ü&{Ý&{Þ&{ß&{á&{à&(X] ((lþ(C*tD{Ü&{Ý&{;{ß&{à&þ(C*tJ{Ü&{Ý&{;{ß&{à&{;þ(C*tK{Ü&{Ý&{ ;{ß&{à&þ(C*tL{Ü&{Ý&{!;{ß&{à&þ(C*tM{Ü&{Ý&{$;{ß&{à&{";{#;þ(C*tF {Ü&{Ý& {;{ß&{à&þ(C*tN {Ü&{Ý& {%;{ß&{à&þ(C*tG {Ü&{Ý& {;{ß&{à&þ(C*tI {Ü&{Ý& {;{ß&{à&þ(C*tH {Ü&{Ý& {;{ß&{à& {;þ(C*tB{Ü&{Ý&{;{ß&{;{à&þ(õB*tE{;{; {Ü&{Ý&{ß&(þBs`Dþ(À +*ò(æ }â&}ã&}ä&}å&}æ&}ç&}è&*0 8{â&{ã&{ä&{å&{æ&{è&sbD{ç&þ(Á +*0D(æ }é&}ê&}ë&}ì&}í&}î&}ï&}ð&*0 U{é&{ì&{î&{í&(ÞB{é&{ê&{ë&{ì&{í&{ï&{ð&sdDþ(k +*Ò(æ }ñ&}ò&}ó&}ô&}õ&}ö&*0 -{ñ&{ò&{ó&{ô&{õ&{ö&þ(ïB*²(ç }÷&}ø&}ù&}ú&}û&*0 L‹u* ,4(ö {û&{ù&{ú&{÷&{‡&{ø&s_C(è * (ö (è *0D(æ }ü&}ý&}þ&}ÿ&}'}'}'}'*0 9{ü&{ý&{þ&{ÿ&{'{'{'{'þ(ñB*Ò(æ }'}'}'}'}'} '*0 -{'{'{'{'{'{ 'þ(ðB*Ò(æ } '} '} '} '}'}'*0 -{ '{ '{ '{ '{'{'þ(ôB*²(ç }'}'}'}'}'*0 L‹u* ,4(ö {'{'{'{'{‡&{'shC(è * (ö (è *V(8 }'}'*0 (a{'{'þ(}]*r(z$ }'}'}'*r{'{'{'þ(ÞB*r(æ }'}'}'*0'Œ(k‰ {'{'svD{'þ(Œ +*({$ *F(ö (êC(å# *Ò({$ }'}'}'} '}!'}"'*0 <{'{!'{'{'{"'{ '{§8(ðBszDþ({ +*²(z$ }#'}$'}%'}&'}''*0 -{#'{''{$'{%'{&'{—8þ(ðB*({$ *F(ö (êC(å# *ò({$ }('})'}*'}+'},'}-'}.'*0 DO{+'{.'(^ {('{,'{)'{*'{-'(ðBs€Dþ({ +*0D({$ }/'}0'}1'}2'}3'}4'}5'}6'*0 f{/'{0'{1'{2'{3's~D{6'(Œ +{/'{0'{1'{2'{3'{4'{5's‚Dþ({ +*²(z$ }7'}8'}9'}:'};'*0 -{7'{;'{8'{9'{:'{—8þ(ðB*({$ *F(ö (êC(å# *ò({$ }<'}='}>'}?'}@'}A'}B'*0 DO{?'{A'(^ {<'{@'{='{>'{B'(ðBsˆDþ({ +*ò({$ }C'}D'}E'}F'}G'}H'}I'*0 v{I'( + (¦ (J {C'{D'{E'{F'{G's†D(Œ +{C'{D'{E'{F'{G'{H'sŠDþ({ +*({$ *F(ö (êC(å# *Ò(|$ }J'}K'}L'}M'}N'}O'*0 Ž{J'{†&{ƒ&{O'(²S(¸T{L'(P 9Ô (s" (T@Á(s" tx {#1 {M',+ {@0on{Ô:,# {@0on{Ø:{K'{=Lþþ+,(²S {@0(œU+, {@0ono®kþþ+, {@0on{Ú:þ+,{#1 {N'(îC(è# **:(V }P'*:{P'(c]*:(V }Q'*^{Q'(O]($nþ*:(V }R'*^{R'(O]($nþ*:(}$ }S'*B{S'þ($N*V(Ø }T'}U'*V{T'{U'(ô *(Û *&(ÅB*²(~$ }V'}W'}X'}Y'}Z'*0‚{W'{Z'sšD{Y'(ý+ {W'(ÅB {X'{W'o©Q {V'{†&{ƒ&sœD{W'(²S(Ú s$ (€$ ($ (ä+*(¯ *No•Qoõ þþ*²(‚$ }['}\'}]'}^'}_'*09{['( D{\'{]'(²S{_'{^'( (0C*V({$ }`'}a'*Š(ö {a'{`'{í (ìC(å# *0D({$ }b'}c'}d'}e'}f'}g'}h'}i'*0ìJ{i'o—Q {d'{=L;,M(ö {g'{i'o‰Q($N(–{c'o {c'(+{f'{b'szC(ã# *(ö {g'{i'o‰Q($N(–{c'o {c'(*{f'{b'szC(ã# *{e'{f'{i'(à +{h'{i's¤Dþ({ +*({$ *F(ö (èC(å# *ò(æ }j'}k'}l'}m'}n'}o'}p'*0 {m'{p'(ÓB ,N (á# (â# {j'{n'{k'{l'{o'(Un("n(¤ (¥ (nþ(ðB*{j'{n'{k'{l'{o'{p'þ(ðB*({$ *F(ö (êC(å# *({$ *F(ö (êC(å# *Ò({$ }q'}r'}s'}t'}u'}v'*0 7{q'{t'{r'{s'{u'{v'(ðBs®Dþ({ +*ò({$ }w'}x'}y'}z'}{'}|'}}'*0 [{w'{z'{x'{y'{|'{}'(ðB{w'{x'{y'{z'{{'{}'s°Dþ({ +*({$ *F(ö (êC(å# *Ò({$ }~'}'}€'}'}‚'}ƒ'*0 7{~'{'{'{€'{‚'{ƒ'(ðBs´Dþ({ +*({$ *F(ö (êC(å# *({$ *F(ö (êC(å# *ò({$ }„'}…'}†'}‡'}ˆ'}‰'}Š'*0 Q{„'{‡'{…'{†'{ˆ'{‰'{Š'("n(¤ (¥ (n(ðBsºDþ({ +*({$ *F(ö (êC(å# *({$ *F(ö (êC(å# *²({$ }‹'}Œ'}'}Ž'}'*0 1{‹'{Ž'{Œ'{'{'(øBsÀDþ({ +*({$ *F(ö (êC(å# *({$ *F(ö (êC(å# *({$ *F(ö (êC(å# *²({$ }'}‘'}’'}“'}”'*0 1{'{“'{‘'{’'{”'(øBsÈDþ({ +*Ò({$ }•'}–'}—'}˜'}™'}š'*0 U{•'{˜'{–'{—'{™'{š'(ðB{•'{–'{—'{˜'{š'sÊDþ({ +*({$ *F(ö (êC(å# *²({$ }›'}œ'}'}ž'}Ÿ'*0 1{›'{ž'{œ'{'{Ÿ'(øBsÎDþ({ +*Ò({$ } '}¡'}¢'}£'}¤'}¥'*0 U{ '{£'{¡'{¢'{¤'{¥'(ðB{ '{¡'{¢'{£'{¥'sÐDþ({ +*({$ *F(ö (êC(å# *Ò({$ }¦'}§'}¨'}©'}ª'}«'*0 7{¦'{©'{§'{¨'{ª'{«'(ðBsÔDþ({ +*({$ *F(ö (êC(å# *Ò({$ }¬'}­'}®'}¯'}°'}±'*0 7{¬'{¯'{­'{®'{°'{±'(ðBsØDþ({ +*({$ *F(ö (êC(å# *:(¯ }²'*Z{²'o‰Q(ÍBþ*({$ *F(ö (êC(å# *Ò({$ }³'}´'}µ'}¶'}·'}¸'*0 7{³'{¶'{´'{µ'{·'{¸'(ðBsàDþ({ +*:(¯ }¹'*Z{¹'o‰Q(ÍBþ*:(¯ }º'*Z{º'o‰Q(ÍBþ*({$ *F(ö (êC(å# *0L({$ }»'}¼'}½'}¾'}¿'}À'}Á'}Â' }Ã'*0 }{»'{¿'{¼'{½'{À'{Á'{Â'{¾'r!1p(ñ , {Ã'+ {Ã'(Sn(Qn("n(¤ (¥ (n(ðBsèDþ({ +*({$ *F(ö (êC(å# *0L({$ }Ä'}Å'}Æ'}Ç'}È'}É'}Ê'}Ë' }Ì'*0 }{Ä'{È'{Å'{Æ'{É'{Ê'{Ì'{Ç'r!1p(ñ , {Ë'+ {Ë'(Sn(Qn("n(¤ (¥ (n(ðBsìDþ({ +*({$ *F(ö (êC(å# *Ò({$ }Í'}Î'}Ï'}Ð'}Ñ'}Ò'*0 7{Í'{Ð'{Î'{Ï'{Ñ'{Ò'(ðBsðDþ({ +*0|({$ }Ó'}Ô'}Õ'}Ö'}×'}Ø'}Ù'}Ú' }Û' }Ü' }Ý' }Þ' }ß'}à'}á'*0¤"{Ø'{=L,{Ù'(Ä ++{Ù' {Ó'{Ô'{×'{à'(C {Ø'{=L 9R9Ì(¢ -'{ß'(³ ,{ß' (³ (³ -9-(¢ -){ß'(³ ,{ß'(³ (³ -9M(¢ -9I(¢ :ï{ß'(³ 9ß{ß'(³ (³ :Æ9À{×'r¦ p(ñ 9«(³ 9 (³ (³ :Œ{Ú'{Ú'{£8(´ (ƒ],m(´ (´ {Ó'{Þ'{Õ'{Ö'{Ú'{—8(ðB{Ó'{Õ'{Ö'{Ú'{Þ'{á's|Dþ({ +*(¢ :{ß'(³ 9ö{ß'  (³ (³ :Ý9×{×'r¦ p(ñ 9Â{Ú' (´ (^9« (´  {Ú'{Ú'(k](^ oµ .B(ö {Ú'{Ú'(k](^ oµ ("{Û'{Õ'szC(è +(¾£{Ó'{Õ'{Ö'{Ú'{Þ'{á' s„Dþ({ +*(¢ :{ß'(³ 9ô{ß'  (³ (³ :Û9Õ{×'r91p(ñ 9À{Ú' (´ (^9© (´  {Ú'{Ú'(k](^ oµ Y.D(ö {Ú'{Ú'(k](^ oµ Y("{Û'{Õ'szC(è +(¾£{Ó'{Õ'{Ö'{Ú'{Þ' sŒDþ({ +*(¢ -9~(¢ -9&9š9Ò 9¯{×'rK1p(ñ 9š(³ :{ß'oƒ$ {Ú'(ÊB,+{Ú'(ÎB,+(a{Ú'{Ú'{¨8(],;{Ó'{Þ'{Õ'{Ö'{á'{Ú'{š8(ðBsŽDþ({ +*9 9V 9, 9#9¹9(¢ -91,_{Ó'{Ô'{Õ'{Ö'{×'{Ø'{Ú'{Û'{Ü'{Ý'{Þ'{ß'{à'{á'þ(ûB*{×'r]1p(ñ ,(³ ,‡  (³ (³ 9sÿÿÿ (³   (³ (³ :Yÿÿÿ{Ú' (´ (ÎB9Bÿÿÿ (´  (´ {Ó'{Þ'{Õ'{Ö'(ðB{Ó'{Õ'{Ö'{Ú'{Þ'{á'sªD(k +s¬Dþ({ +*{×'ri1p(ñ 9ºþÿÿ(³ 9¯þÿÿ  (³ (³ 9›þÿÿ (³   (³ (³ :þÿÿ{Ú' (´ (ÎB9jþÿÿ (´  (´ {Ó'{Þ'{Õ'{Ö'(øB{Ó'{Õ'{Ö'{Þ'{á's²Dþ({ +*{×'rC&p(ñ 9çýÿÿ(³ 9Üýÿÿ  (³ (³ :Èýÿÿ (´ {Ú'(ÐB,+{Ú'{Ú'{£8(ƒ],$(a{Ú'{Ú'{¨8{á'(]+9fýÿÿ (´ (ö (êC(å# *{×'rC&p(ñ 92ýÿÿ(³ 9'ýÿÿ  (³ (³ :ýÿÿ (´ {Ú'(ÏB,+{Ú'{Ú'{£8(ƒ],+{Ú'{Ú'{§8(ƒ],6{Ú'{á'(ÏB,+!{Ú'{Ú'{§8{á'(ƒ]+,6{Ú'{Ú'{£8(ƒ],{Ú'{á'(ÉB+þ+,F{Ú'{Ú'{§8(ƒ],$(a{Ú'{Ú'{¨8{á'(]+þ+9üûÿÿ (´ (ö (êC(å# *{×'rq1p(ñ 9‹(³ 9½ûÿÿ  (³ (³ :©ûÿÿ{Ú' (´ (ÎB9’ûÿÿ (´ {Ó'{Þ'{Õ'{Ö'(øB{Ó'{Õ'{Ö'{Þ'{á's¶Dþ({ +*{×'ry1p(ñ ,D(³ 9 ûÿÿ  (³ (³ : ûÿÿ{Ú' (´ (ÎB9õúÿÿ (´ 8^ÿÿÿ{×'r1p(ñ ,D(³ 9Êúÿÿ  (³ (³ :¶úÿÿ{Ú' (´ (ÎB9Ÿúÿÿ (´ 8ÿÿÿ{×'r‰1p(ñ ,D(³ 9túÿÿ  (³ (³ :`úÿÿ{Ú' (´ (ÎB9Iúÿÿ (´ 8²þÿÿ{×'r“1p(ñ ,D(³ 9úÿÿ  (³ (³ : úÿÿ{Ú' (´ (ÎB9óùÿÿ (´ 8\þÿÿ{×'r1p(ñ ,D(³ 9Èùÿÿ  (³ (³ :´ùÿÿ{Ú' (´ (ÎB9ùÿÿ (´ 8þÿÿ{×'r§1p(ñ ,D(³ 9rùÿÿ  (³ (³ :^ùÿÿ{Ú' (´ (ÎB9Gùÿÿ (´ 8°ýÿÿ{×'r±1p(ñ ,D(³ 9ùÿÿ  (³ (³ :ùÿÿ{Ú' (´ (ÎB9ñøÿÿ (´ 8Zýÿÿ{×'r»1p(ñ ,D(³ 9Æøÿÿ  (³ (³ :²øÿÿ{Ú' (´ (ÎB9›øÿÿ (´ 8ýÿÿ{×'rÅ1p(ñ ,D(³ 9pøÿÿ  (³ (³ :\øÿÿ{Ú' (´ (ÎB9Eøÿÿ (´ 8®üÿÿ{×'rÍ1p(ñ ,D(³ 9øÿÿ  (³ (³ :øÿÿ{Ú' (´ (ÎB9ï÷ÿÿ (´ 8Xüÿÿ{×'rÝ1p(ñ ,D(³ 9Ä÷ÿÿ  (³ (³ :°÷ÿÿ{Ú' (´ (ÎB9™÷ÿÿ (´ 8üÿÿ{×'ré1p(ñ ,D(³ 9n÷ÿÿ  (³ (³ :Z÷ÿÿ{Ú' (´ (ÎB9C÷ÿÿ (´ 8¬ûÿÿ{×'rõ1p(ñ ,D(³ 9÷ÿÿ  (³ (³ :÷ÿÿ{Ú' (´ (ÎB9íöÿÿ (´ 8Vûÿÿ{×'r2p(ñ ,D(³ 9Âöÿÿ  (³ (³ :®öÿÿ{Ú' (´ (ÎB9—öÿÿ (´ 8ûÿÿ{×'r2p(ñ ,D(³ 9löÿÿ  (³ (³ :Xöÿÿ{Ú' (´ (ÎB9Aöÿÿ (´ 8ªúÿÿ{×'r2p(ñ 9öÿÿ(³ 9öÿÿ  (³ (³ :ÿõÿÿ{Ú' (´ (ÎB9èõÿÿ (´ 8Qúÿÿ{×'r2p(ñ 9¿õÿÿ(³ 9´õÿÿ  (³ (³ : õÿÿ{Ú' (´ (ÎB9‰õÿÿ (´ {Ú'(ÓB  -2{Ó'{Þ'{Õ'{Ö'{á'(ðBs¸Dþ({ +* (á# (â# (»B(Mn{Ó'{Þ'{Õ'{Ö'(Qn("n(¤ (¥ (n(ðB{Ó'{Õ'{Ö'{Þ'{á's¼Dþ({ +*{×'r%2p(ñ 9•ôÿÿ(³ 9Šôÿÿ  (³ (³ :vôÿÿ (´ {Ú'(ÊB,+{Ú'(ÎB,+(a{Ú'{Ú'{¨8(]9#ôÿÿ (´ {Ó'{Þ'{Õ'{Ö'{á'(ðBs¾Dþ({ +*{×'r-2p(ñ 9‹(³ 9Âóÿÿ  (³ (³ :®óÿÿ{Ú' (´ (ÌB9—óÿÿ (´ {Ó'{Þ'{Õ'{Ö'{á'(ðB{Ó'{Õ'{Ö'{Þ'sÂDþ({ +*{×'rI2p(ñ 9-óÿÿ(³ 9"óÿÿ  (³ (³ :óÿÿ{Ú' (´ (ÌB9÷òÿÿ (´ 8[ÿÿÿ{×'rm2p(ñ 9òÿÿ(³ 9òÿÿ  (³ (³ :úñÿÿ (´ {Ú'(ÊB,+{Ú'(ÎB,+(a{Ú'{Ú'{¨8(]9§ñÿÿ (´ {Ó'{Þ'{Õ'{Ö'{á'(ðBsÄDþ({ +*{×'r2p(ñ 9Qñÿÿ(³ 9Fñÿÿ  (³ (³ :2ñÿÿ{Ú' (´ (ÐB9ñÿÿ (´ {Ó'{Þ'{Õ'{Ö'{á'(ðBsÆDþ({ +*{×'r©2p(ñ 9¹(³ 9ºðÿÿ  (³ (³ 9¦ðÿÿ (³   (³ (³ :Œðÿÿ{Ú' (´ (ÌB9uðÿÿ (´  (´ {Ó'{Þ'{Õ'{Ö'{Ú'{—8(ðB{Ó'{Õ'{Ö'{Þ'{á'sÌDþ({ +*{×'rÃ2p(ñ 9÷ïÿÿ(³ 9ìïÿÿ  (³ (³ 9Øïÿÿ (³   (³ (³ :¾ïÿÿ{Ú' (´ (ÌB9§ïÿÿ (´  (´ 8-ÿÿÿ{×'rß2p(ñ 9R(³ 9bïÿÿ  (³ (³ 9Nïÿÿ (³   (³ (³ :4ïÿÿ (´  (´ {Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+,+N{Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+9{îÿÿ (´  (´ {Ó'{Þ'{Õ'{Ö'(ðB{Ó'{Õ'{Ö'{Þ'{á'sÒDþ({ +*{×'rû2p(ñ 9 (³ 9ûíÿÿ  (³ (³ 9çíÿÿ (³   (³ (³ :Ííÿÿ (´  (´ {Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+,+N{Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+9íÿÿ (´  (´ 8”þÿÿ{×'r3p(ñ 9èìÿÿ(³ 9Ýìÿÿ  (³ (³ 9Éìÿÿ (³   (³ (³ :¯ìÿÿ (´  (´ {Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+,+N{Ú'(ÌB,+{Ú'(^,){Ô',+{Ú'(O]($nþþ+9öëÿÿ (´  (´ 8výÿÿ{×'r33p(ñ 9¢èÿÿ(³ 9—èÿÿ(³ (³ 9ƒèÿÿ(³ (³ (³ :ièÿÿ(´ {Ú'(ÎB,+(a{Ú'{Ú'{¨8(]9*èÿÿ(´ (´ {Ó'{Þ'{Õ'{Ö'{Ú'{—8(ðB{Ó'{Õ'{Ö'{Þ'{á'sÖDþ({ +*{×'rK3p(ñ 9žçÿÿ(³ :“çÿÿ(´ {Ú'(ÒB,+{Ú'{Ú'{§8(ƒ]9Yçÿÿ(´ {Ó'{Þ'{Õ'{Ö'(øB{Ó'{Õ'{Ö'{Þ'{á'sÚDþ({ +*{×'r[3p(ñ 9¾æÿÿ(³ :³æÿÿ{Ú' (´ (ÒB9æÿÿ (´ {Ó'{Þ'{Õ'{Ö'{á'(ðBsÜDþ({ +*{×'rm3p(ñ 9ñ(³ 9æÿÿ (³ (³ 9æÿÿ (³ (³ (³ :éåÿÿ(´  (´ {Ú'sÞD((+(¢ þ9%{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+{Ú'(O]($nþþ+,8‘{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+#{Ú'(O]($nþþ++9äÿÿ(´  (´ {Ó'{Þ'{Õ'{Ö'(ðB{Ó'{Õ'{Ö'{Þ'{á'sâDþ({ +*{×'r…3p(ñ 9¨(³ 9äÿÿ (³ (³ 9üãÿÿ (³ (³ (³ :ããÿÿ(´  (´ {Ú'säD((+(¢ þ9%{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+{Ú'(O]($nþþ+,8‘{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+#{Ú'(O]($nþþ++9‡âÿÿ(´ (´ 8õýÿÿ{×'r£3p(ñ 9\âÿÿ(³ 9Qâÿÿ (³ (³ 9?âÿÿ (³ (³ (³ :&âÿÿ(´  (´ {Ú'sæD((+(¢ þ9%{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+{Ú'(O]($nþþ+,8‘{Ú'(ÐB,+M{×'rm3p(ñ ,9{Ú'{Ú'{§8(ƒ],+{Ú'{Ú'{£8(ƒ]+,){Ô',+#{Ú'(O]($nþþ++9Êàÿÿ(´ (´ 88üÿÿ{×'r¹3p(ñ 9>(³ 9Žàÿÿ (³ (³ 9|àÿÿ (³ (³ (³ :càÿÿ(´  (´ {Ô'{Ú'(üB,+{Ô'{Ú'(üB9àÿÿ(´  (´ {Ú'(ÓB  9š (á# (â# (á# („$ (»B(Mn{Ó'{Þ'{Õ'{Ö'("n(¤ (¥ (n(ðB{Ó'{Õ'{Ö'{×'{Þ'{á'sêDþ({ +*{Ú'(ÓB9š(á# (â# (á# („$ (»B(Mn{Ó'{Þ'{Õ'{Ö'("n(¤ (¥ (n(ðB{Ó'{Õ'{Ö'{×'{Þ'{á'sîDþ({ +*{Ó'{Þ'{Õ'{Ö'(ðB{Ó'{Õ'{Ö'{Þ'{á'sòDþ({ +*{×'r!1p(ñ 9FÞÿÿ(³ 9;Þÿÿ (³ (³ 9)Þÿÿ (³ (³ (³ :Þÿÿ(´  (´ {Ô'{Ú'(ýB,+{Ô'{Ú'(ýB9ÇÝÿÿ(´ (´ 8¨ýÿÿ’(…$ }â'}ã'}ä'}å'*0 %{â'{†&{ä'{ã'{å'(ÿB*0„(†$ }æ'}ç'}è'}é'}ê'}ë'}ì'}í' }î' }ï' }ð' }ñ' }ò'}ó'}ô'}õ'*0|‘{ð'{ó'stD{ê'(Å + {í'{î'{ï'{ì'{ë'(†l {ð'{ì'(g^ {î'{=L9„(³ ,Y (³ (³ -J{ï'(³ ,={ï' (´ (´ {æ'{õ'{è'{é'(ðB+)(ö (!{ñ'{è'szC(è +(¾£{æ'{é'sxD(k +{æ'{ç'{è'{é'{í'{î'{ï'{ð'{ñ'{ò'{ô'{õ'sôD({ +{æ'{é'{ñ'söDþ(Æ +*:(° }ö'*0 S"{ö'r—àpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (¨]*(‡$ *0$t(îo3tß {L< oÆmþ**(ˆ$ *"o.‡*V(í }÷'}ø'*f{÷'{8;{ø'(ð# *Ò(+# }ù'}ú'}û'}ü'}ý'}þ'*0 ,{ú'{ü'{ý'{þ'{û'{ù'(P*:(G }ÿ'*F{ÿ'þ(Ç +*:(‰$ }(*>{((È +*:(Š$ }(*Þ{({†&{&(c],{({†&{&(Y](Ù# **’(‹$ }(}(}(}(*0 bO(i {({†&{&(c],6{({({({({({†&{&(Y]þ(C*(ö (é# *’(v$ }(}(}(} (*ž{({({(s E{ (þ(É +*V(Œ$ } (} (*V{ ({ (o$ *V(Œ$ } (} (*Z{ ({ (oŽ$ *r(í }(}(}(*‚{({(sE{((ˆ +*’($ }(}(}(}(*0 T’($ (‘$ {({†&{({ˆ&{({‰&sàC{({(X{(þ(þB*r(’$ }(}(}(*0 -’($ (‘$ (a{({({((w]*V(í }(}(*~{({†&{…&{(o$ *ò( }(}(}(}(}(}(} (*0«“{;{ü: { (oñ# {({({(sE(Ê +-p{(u$,8{(t$ {&{™& {(sE (Ô# ( (Õ# +{({†&{…&{({(s“$ oŽ$ **²(”$ }!(}"(}#(}$(}%(*0 3{!({"({#({$({%({#((,lþ(C*:(8 }&(*F{&(þ(ƒ]*’(•$ }'(}((})(}*(*0 #{'({(({)({*(þ(ðB*(æ *(¾£*Ò(æ }+(},(}-(}.(}/(}0(*0 7{+({,({-({.({/({0((ðBs"Eþ(k +*:(k }1(*~{1({1((ô# (¥ (–$ *Ò(z$ }2(}3(}4(}5(}6(}7(*0 B{6({7((1P-(¾£*{2({3({4({5({7(þ(ðB*Ò(z$ }8(}9(}:(};(}<(}=(*0 3{8({9({:({;({<(s(E{=(þ(Œ +*Ò(æ }>(}?(}@(}A(}B(}C(*0 -{>({?({A({@({C({B(þ(ðB*V(V }D(}E(*R{D({E((1P*:(8 }F(*F{F(þ(ƒ]*0L(—$ }G(}H(}I(}J(}K(}L(}M(}N( }O(*0 I{N(3(¾£*{G({H({I({J({K({L({M({O(þ( C*0T(æ }P(}Q(}R(}S(}T(}U(}V(}W( }X( }Y(*0G{P({Q({R({S({T({U({V({W({X(X{Y(þ(C*²(‹ }Z(}[(}\(}](}^(*0 ({[({\({]({^({Z(þ( C*²(‹ }_(}`(}a(}b(}c(*0 ({_({`({a({b({c(þ( C*V(í }d(}e(*R{d({e((ÿk*ò(æ }f(}g(}h(}i(}j(}k(}l(*0 ³”{h( {i( {j( {k({h({i({j({k({l((Ñ (C {g({;{;{f(u$,:{f(t${&{™&s:E(Ô# ( (Õ# +(ÿk(¾£*0\(æ }m(}n(}o(}p(}q(}r(}s(}t( }u( }v( }w(*0 ‚¡{p({q({r({s({u(s6E{v((„+,(¾£*{o({;|û:(j(ëiE+ {p((@lþ+{p((@lþ,(¾£*{o({;|û:(j (ái (n oòi,.(ö {t({o({p({u({m(sqC(è *{o({;|û:(j(ëiþ,6{t({o({p({u({m(sqC(ö (Ý# (Þ# +(¾£{n({o({q({r({s({u({w(s)}?)*0 ¾Ÿ{>){†&{&(l] 9ž (¸ ofmomjrÑ3p(ñ ,Iofm{g:{x: ,- (R" oXjm%r Fp¤m(ü+++,{?)(^+,{?)(^+, (¸ **’(% }@)}A)}B)}C)*0 S {, {, {@){A){C)(*C ,*{@){B)s¶E(œ +( + , **(% *&þþ*(% *þ*(% *&þþ*(% *þ*0D(% }D)}E)}F)}G)}H)}I)}J)}K)*0f{K)(Ü +,*{D){E){F){G){H){I){J){K)(:$ {K)( % (:$ ( % (Ý +þ*0D(!% }L)}M)}N)}O)}P)}Q)}R)}S)*0 G{L){M){N){O){P){R){S)sÂE{Q)(Þ +,("% **(#% *"(:$ *(#% *"(:$ *r($% }T)}U)}V)*0 3¡{æ ds% {T){U){V)(ÒNþo& *:( }W)*B{W)þo *:(` }X)*0{{X)oa sÌE*r(•$ }Y)}Z)}[)*0 -{Y){Z){Y){‡&{[)( Dþ( C*’(•$ }\)}])}^)}_)*0 #{\){]){^){_)þ(C*’(% }`)}a)}b)}c)*0 #{`){a){c){b)þ(Ú +*0D(%% }d)}e)}f)}g)}h)}i)}j)}k)*0 py{d){g){j){d){e)sÐE( D {d){e){i)sÒE{d){e){f)sÔE{h){k)þ(¯ +*ò(&% }l)}m)}n)}o)}p)}q)}r)*0 \£{l){m){n){o){p){q){r)sÖE(ß + u­,t­ {'% s(% ()% **r(•$ }s)}t)}u)*0 ({s){u){s){‡&{t)þ( C*’(•$ }v)}w)}x)}y)*0 #{v){x){y){w)þ(C*’(% }z)}{)}|)}})*0 #{z){|){{){})þ(à +*0D(æ }~)})}€)})}‚)}ƒ)}„)}…)*0 s{~){‚){~){){€)sÚE{~){){€){„)sÜE{~){){€){)sÞE{ƒ){…)þ(¯ +*’(% }†)}‡)}ˆ)}‰)*0 {‡){ˆ){‰){†)oØ +*(†$ *6(ö (é# *V(•$ }Š)}‹)*0 #{Š){Š){‡&{‹)þ( C*r(•$ }Œ)})}Ž)*0 {Œ){){Ž)þ(C*V(% })})*0 {){)þ(à +*(†$ *6(ö (é# *r(í }‘)}’)}“)*–{‘){†&{…&{’){“)oŽ$ *’(Œ$ }”)}•)}–)}—)*0_¤{—){–)o$ {•)u$,={•)t$ {&{™& {”){–)sîE(Ô# ( (Õ# **V( }˜)}™)*0P¥{;{ü: {˜){†&{…& oñ# (ò# þ,*{˜){™)sðE(ˆ +*²(%% }š)}›)}œ)})}ž)*0 >{›){œ)(!a{š)sàC{œ)( D{){ž)þ(ðB*²(%% }Ÿ)} )}¡)}¢)}£)*0 >{ ){¡)(!a{Ÿ)sàC{¡)( D{¢){£)þ(õB*(x$ *(¾£*²(æ }¤)}¥)}¦)}§)}¨)*0 C{¥){¦)(!a{¤)sàC{¦){§){¨)(þBsøEþ(À +*V(ç }©)}ª)*z(ö {©){ª)s°C(è *²(æ }«)}¬)}­)}®)}¯)*0 8{¬){­)(!a{«)sàC{­){®){¯)þ(C*V(ç }°)}±)*z(ö {°){±)s°C(è *²(æ }²)}³)}´)}µ)}¶)*0 8{³){´)(!a{²)sàC{´){µ){¶)þ(C*V(ç }·)}¸)*z(ö {·){¸)s°C(è *²(æ }¹)}º)}»)}¼)}½)*0 8{º){»)(!a{¹)sàC{»){¼){½)þ(C*V(ç }¾)}¿)*z(ö {¾){¿)s°C(è *²(æ }À)}Á)}Â)}Ã)}Ä)*0 8{Á){Â)(!a{À)sàC{Â){Ã){Ä)þ(C*V(ç }Å)}Æ)*z(ö {Å){Æ)s°C(è *²(æ }Ç)}È)}É)}Ê)}Ë)*0 8{È){É)(!a{Ç)sàC{É){Ê){Ë)þ(C*V(ç }Ì)}Í)*z(ö {Ì){Í)s°C(è *²(æ }Î)}Ï)}Ð)}Ñ)}Ò)*0 8{Ï){Ð)(!a{Î)sàC{Ð){Ñ){Ò)þ(C*V(ç }Ó)}Ô)*z(ö {Ó){Ô)s°C(è *²(æ }Õ)}Ö)}×)}Ø)}Ù)*0 8{Ö){×)(!a{Õ)sàC{×){Ø){Ù)þ(C*V(ç }Ú)}Û)*z(ö {Ú){Û)s°C(è *Ò(æ }Ü)}Ý)}Þ)}ß)}à)}á)*0 >{Ý){Þ)(!a{Ü)sàC{Þ){ß){à){á)þ(C*V(ç }â)}ã)*z(ö {â){ã)s°C(è *ò(æ }ä)}å)}æ)}ç)}è)}é)}ê)*0 D{å){æ)(!a{ä)sàC{æ){ç){è){é){ê)þ(C*V(ç }ë)}ì)*z(ö {ë){ì)s°C(è **o &**þ(:+*þ*:(h }í)*"{í)*:(*% }î)*n{î){î)(r_(,`*²(+% }ï)}ð)}ñ)}ò)}ó)*0 é¨{ò){8;(z! ,{ï){ð){ñ)(BC+(F$ (,% E&Aˆ{ï){ð){ñ){ò){ó)(CC*{ï){ñ){ó)(DC*t° (-% (ö {ï) {ï) (r_(ú {ó){ñ)('`(  (P$ *(ö (P$ *’(æ }ô)}õ)}ö)}÷)*0 ,{÷){ö)( D{ô)(i{õ)þ(ìB*²(ç }ø)}ù)}ú)}û)}ü)*0 0(ö {ú){ø){ù){û){ü)s’C(è *(Œ *"(i*(Œ *"(i*²(%% }ý)}þ)}ÿ)}*}**0 R{þ){ÿ)(!a{ý)sàC{ÿ)( Ds/F{*(/+s1F{*(/+þ(òB*²(æ }*}*}*}*}**0 *{*{*{*{*{*s3F(ß +*V(ç }*}**z(ö {*{*s°C(è *(.% *2rÛ3ps\ z*o &**þ(:+*þ*(†$ *6(ö (é# *’(†$ } *} *} *} **0 1{ *{ *( D{ *{ *(ôBs>Fþ(} +*(/% *6(ö (é# *0-ØrWp($¥sY‰€ *r¹3pr!1prm3pr…3pr£3pr[3prK3pr33pr¦ pr91prß2prû2pr3pr©2prÃ2pr2prm2prK1pr-2prI2pr%2pr2prq1pry1pr1pr‰1pr“1pr1pr§1pr±1pr»1prÅ1prÍ1prÝ1pré1pr2pr2pr2prõ1prC&pri1pr]1p([ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ €*(ö s$D(è €**"(K" *"(™ *02©u­,t­ {A" (0% *t¯ {C" þoG" *07 u­,t­ {A" (0% *t¯ {C" o1% (2% *0#ªu­,t­ {A" zt¯{C" *0&«u­, þo3% *t¯ {C" (K" **0 ç®{c* {d* {j*(4% {j*(5% {i*(¨ þ,(6% (á +8|s¸ sRG(/+ (• ,  (•H+ (Š+ {U;{Z;sY (ú (û (k {U;{X;(x_(á +(z (Æ]së *0 z¯{j*(4% {j*(5% {i* ({ þ,(6% þ(á +*{U;{Z;sY (ú (û (k {U;{X;(x_þ(á +*0]¸(eGEH–ä5†×(tc (eG35tc {x* {x* {y*{y*3 +’**td(eG3ìtd{z* {z* {{*{{*  3 8Aÿÿÿ*te (eG3žte  {|*  {|*  {~* {~*  3 8óþÿÿ*tf (eG@Mÿÿÿtf  {*  {*  {‚* {‚*  3 8¢þÿÿ*tg(eG@üþÿÿtg{ƒ* {ƒ* {†*{†*  3 8Qþÿÿ*th(eG@«þÿÿth{‡* {‡* {Š*{Š*  3 8þÿÿ*ti(eG@Zþÿÿti{‹* {‹* {*{*  3 8¯ýÿÿ*(eGþ*r4p*r-4p*0 A»s¿G (eGE![ÓTŸösµGztd {z*+¬te {}* {|*{~* sÁG8rÿÿÿtf{* {€*{*{‚*ofm  o~j (Š+(ê] (â + o9%  sÃG8úþÿÿtg  {„*  {…*  {ƒ* {†* {t;ofm  o~j (Š+ (ë] (â + o9%  sÅG8yþÿÿth  {ˆ* {‡* {Š* {‰*sÇG8.þÿÿti{‹*{*{Œ*(î] (â + o9% sÉG8×ýÿÿtj{Ž*þo:% *NsËGþ(ã +*0¾sÍG(ä +(;% ¥ºs<% sÏG(ønE,‰]ª”ËËè*sR‘°ÎsµGzsÑG(=% (>% (>% ¥½(å +8¾sÓG(?% (æ +€(?% (æ +(ç +(è +8sÕG ÿ(@% (é + €ÿÿ(@% (é +(ê +(ë +8Vs×G ÿÿÿ(µ (]+ €(µ (]+(ì +(í +8sÙG!!!ÿÿÿÿÿÿÿ(A% (î +!€!!(A% (î +(ï +(ð +8ÀsÛG!!!ÿÿÿÿÿÿÿ(A% (î +!€!!(A% (î +(ï +(ð +8asÝG ÿ(B% (ñ +(ò +8@sßG ÿÿ(C% (ó +(ô +8sáG(D% (õ +(ö +8sãG!!!ÿÿÿÿÿÿÿÿ(E% (÷ +(ø +8ÍsåG!!!ÿÿÿÿÿÿÿÿ(E% (÷ +(ø +8˜sçG ÿÿÿ(µ (]+(í +8wséG ÿÿÿ(µ (]+(í ++YsëG  ÿÿ(C% (ó +(ô ++:síG ÿÿÿ(µ (]+(í ++sïG ÿÿÿ(µ (]+(í +(ù + , (œ (Ðo*sµGz0 Às½G   sùGþ(QF*06V([ ([ /+þ /*1*(ú +,**0Â(îo@Ãtß {L< oÆmomrfÁp(ñ , {L<  *(îo30tß {L< oÆmomrfÁp(ñ , {L< +Ä(îo@tß{L< oÆmomr4p(ñ , {L<  *(îo33tß{L< oÆmomr4p(ñ , {L< +Â(îo@Htß{L< oÆmomr-4p(ñ , {L<  *(îo33tß{L< oÆmomr-4p(ñ , {L< +Â(îo @Øté{~<(Òp@¾{~<tÿ (îo @£té  {~<(Òp@‰ {~<tÿ {B8{E8 {Á< {Á<(i,Z{< {~< {< {€<{€< {Á< {Á<  sûG(û +(æo*(îoEl*té{~<(Òp@ {~<tþ(îo 3Ìté{~<(Òp@’{~<tþ{À<{À<{< {~< {<{€<{€<{V8(6+,  sýG(û +(æo*{u;{u;(ú +,**{< {~< {<{€<{€<  sÿG(û +(æo*(îo @Ëþÿÿté{<{~<{<{€<{€<  +¡tÞ(îo@€þÿÿtÞ{K<{J<{I<{I<(ønE[(ü +,88ˆt¯(øn3Ñt¯{î; {î;!! (UF(ðn+Ht°"(øn3‘t°##{ï;$"{ï;%%$(F% ,$+%(òn(Ðo*(îo@üÿÿtß{L< oÆmomr-4p(ñ 9ñûÿÿ{L< 8¤ûÿÿ(îo@[ûÿÿtß{L< oÆmomr4p(ñ 91ûÿÿ{L< 8äúÿÿ(îo@›úÿÿtß {L< oÆmomrfÁp(ñ 9súÿÿ{L< 8)úÿÿ0¿ÄsH(ý + (Ê , sH (Ë (Ê (þ ++sµGz (“”('N(È+sH(ÿ +s5 (G% ÞPtuy, Þ8rS4ps (ñ+o& o s¤ (¤ (¥ Þ*lmP03Æ(H% ,( (H% (I% {È* (NF,*+Ð*0WÈ(H% ,I (H% (I% {Ê* (I% {É* (I% {È*(NF, sJ% *+¯sZ z0DÊ(H% ,6 (H% (I% (I% {È*  (NF,*(ZF(K% *(L% *0Ð(ÌFEhá†<µ*(qo(M% *tM {R* {Q* ("]("](so(M% *tG {@*{¦8(¤ (n(so(M% *t@{/*(oo(M% *tF{=*{<*  (#](ko(M% *tI  {G*  {F*  oN% (mo(M% *tE  {9*(O%  {9*(P%   {9*(Q%  {9*(R%  {9*(S%  (#](uo(M% *†(wo3 tÎ{<*r³4ps\ z0ïÑ(woE8j¤® tÌ (wo3&tÌ {< {< {V8 þ(6+**tÍ(wo3ítÍ{<{<þ*tÎ(wo3»tÎ  {< {<   (n oÿn*(woþ*tÏ (wo@tÿÿÿtÏ  {< {< {< {<(ƒ], þ(ƒ]**tÐ(wo@ÿÿÿtÐ{!<{!<{"<{"<9z,r(T% (U% (T% (U% (T% (V% (T% (V% {B8{E8(i, þ+,sH(w +***0NÒ(]F,*(wo36tÏ (wo3%tÏ {< {<  þ(H**0¡Õ(` 9† (` (W% ( + (Y% -(( +(Z% ([% (i s\% * (Y% (ƒ (+ ( +([% ( (Z% s\% *(€ (H" s\% *0X(ønE**0íÖ(woE (6(woþ*(woþ*(woþ*(woþ*(wo3**tÐ (wo3îtÐ {!< {!< ,j ,d(T% (U% (T% (U% (T% (V% (T% (V%  {B8{E8(i,sH (w +***0º×(H% 9¤ (I% {Ê*(ÌFE:C(1L (H% +™(I% *(I% +õ(I% +ì(I% +ã(I% +Ú(I% +Ñ(I% +È(I% +¿rÕ4ps\ z0)Ù(]% - rp5ps\ z (^% {Ì* (bF*0Û9à (¢ 9ž (_% (¢ 9(_% (¢ (£ (¢ (£ {<(\F{<(\F(øn3it¢ (øn3Vt¢  {á;  {á;  X þ,1 {á;  {á; (r (r (`% 8%ÿÿÿ(øn3it¤ (øn3Vt¤ {ã;{ã;Xþ,1 {ã;{ã;(r (r (`% 8²þÿÿ(øn3_t¦(øn3Lt¦{å;X{å;31{å;{å;(r (r (`% 8Iþÿÿ(øn3kt£(øn3Xt£{â;{â;iXiþ,1{â;{â;(r (r (`% 8Ôýÿÿ(øn3kt¥(øn3Xt¥{ä;{ä;iXiþ,1{ä;{ä;(r (r (`% 8_ýÿÿ(øn3it§(øn3Vt§{æ;{æ; X þ,1{æ;{æ; (r (r (`% 8ìüÿÿ(øn 3lt®!(øn 3Xt®"!{í;#"{í;$#iX$iþ,1!{í;#"{í;$(r (r (`% 8uüÿÿ(r ( +(dF(a% *rÖ5ps\ z(_% ( +(b% (a% *(¢ ,, (¢ (£ (q (r (`% 8üÿÿ(b% *0 µÝ(¢ 9‘ (¢ (¢ :A-(£ {< *(£ {<(wo3Oþþ,E(£ {< (¢  (qo ( +(ao(q (r (p (Co*(¢ ,/ (£ {<(woEÀq«(¢ ,](£ {<(wo3r 6ps¤(¤( +*-'(£ {< (¢ (p (Co*(Co*(¢ (£  (q (r  ( +(p (Co*(¢ (£  +Ä(£ {<tÎ{<(ønE¹æFv¦Öêþ«&U9Îþÿÿ {<(`F9ºþÿÿ (© {< s H  ( +s"H(dFþ( +*,(© s$Hþ( +*rr6ps¤(¤( +*,á(© +Ä,Ó(© +¶,Å(© +¨,· {<(`F9þÿÿ (© {< 8Eÿÿÿ9‡ÿÿÿ {<(`F9Ôýÿÿ (© {< 8ÿÿÿ9Wÿÿÿ {<(`F9¤ýÿÿ (© {< 8åþÿÿ9'ÿÿÿ {<(`F9týÿÿ (© {< 8µþÿÿ9÷þÿÿ {<(`F9Dýÿÿ (© {< 8…þÿÿ9Çþÿÿ {<(`F9ýÿÿ (© {< 8Uþÿÿ9—þÿÿ(© 8wþÿÿ9ƒþÿÿ(© 8cþÿÿ9oþÿÿ(© 8Oþÿÿ9[þÿÿ(© 8;þÿÿ9Gþÿÿ {<(`F9”üÿÿ (© {< 8Õýÿÿ9xüÿÿ(© 8÷ýÿÿ(£ {<(wo@üÿÿþþ9üÿÿ(£ {<(¢  8Çûÿÿ, (© *rÈ6ps\ zBs&Hþ( +*0Þ(ÌFE),.B^š|m‹©¸º¼tE {:* {9*(R% {O-*+”**tB {2*8{ÿÿÿtC{5*s(Hþ( +*tD{7*+âtH{C*+ÓtG{A*+ÄtI{F*+µtF{>*+¦tJ{K*+—***0Xä(ÌFE†¶Ý˜4fÓtE {9*(O% {:* {;* {9*(Q% {9*(P% {9*(R% {9*(S% {O,så (hF (ºF*(é (¶F*tB{3* {2* {4* (hF (´F*tC  {5*  {6*  (iF (¶F*tD  {7*  {8*  (iF (¸F*tH  {D*  {C*  {E*  (iF (ÀF*tG{@*{A* {B*  (iF (¾F*tI{G*{F* {H*  (iF (ÂF*tF{=* {<*{>* {?*  (iF (¼F*tJ{J* {I*{K* {L* s*H ( + (ÄF**>s,Hþ( +*0 ¦æ ,e(¥FE$+C (WFsƒF (¤(¥+" (WFsƒF (¤(¥+(¥FE<È&(Þn{š8(Ðo8Â( `8´(¦](`8ž{E8(²hr7p(£f(I¥ (ðn{£8(Ðo(?¥(Þn{š8(Ðo(@¥(Þn{š8(Ðo(k (l (l (l (Í](`+(ôn{¥8(Ðo (i (\Š(›ooWa(²F(=G(c% (d% *0 +è(e% ,(f% * (jF*0 8  /   £]*  3 (kF*rD7ps\ z0ýí(]% 9æ (^% {Í* (]% (^% {Ë* (^% {Ì*(H% -(      (nF*(cF{É*{È*{Ê*(ÌFE     (oF(g% (h%       (qF  (i%   (j%        (rF  (k%       (tF - ol% + (â  ( + , (” (Go**rX7ps\ zr~7ps\ z0Ñî     (lF {g*{)< s=H(©+ (Eo      (lF {f*- *(â ( ]s?H(Á](£+      (©G(m% (mF(¢]*RsAH( +*0Gï(n% 93 (o% {Ú*(wo@(o% {Ú*tÐ { < {< (o% {Û*{#<{!<(¨ þþ,r/8ps¤(¤(+&+(r`r¾8p(©]  (ó   (ò  {U;|\;(»i, {U;{c;(„s(5`+ol%    (r_sY (ú  (k (l (x_  (    (çŠ(¢o(“ sp% *sp% *0 $ð(n% 9 (o% {Ú*(wo@í(o% {Ú*tÏ {< ([`, (¨ þ+9¸{< (o% {Û* {<(n% (o% {Ù* ræ8p(©](ó (ò  {U;|\;(»i, {U;{c;(„s(5`+ol%   (Ê_ (    (çŠ(¢o(“ sp% *(pF*09     sEH(q% ( +*0Nò{Ì* (XF,:(YF(r% os% -* (t% sIHþ( +**0õsGH( + (u% ,J (v% (wo3:(v% tÎ {<(øn3 {<t¡ o¥ 3 {à;*(u% ,,(v% (woEµ’(u% ,-(v% (wo3r 6ps¤(¤( +*sKH( +(§G(m%  (]% -*      (mF(p *(v% tÎ  {<(øn@Mÿÿÿ*(v% tÌ  {< o¥  {t;  ofmošjŽiþ9ÿÿÿ {< *0F÷sw% ( +      (}F(fF*0 sx% *.sy% *0VøtE {9*(O% {:* {;* {9*(Q% {9*(R% {9*(S% {O9§þ, þ+,+os% ( +(]F,Z{Oo       ( +(é (ê sQH( +*þ, (z% ({% *(z% *3F     ( +(é (ê sUH( +*(z% ({% *0)     seH*‚( +o}% (JG(H*6s~% *06ÿ(% (€% s% {É* {È*{Ê* {j* {i*sgH(ÌFEEâ%îhƒ(K% s% (‚% (ƒ% *     (L% þ(}F*tB  {3*  {2*  {4*   (LF  (ò  (ó        (H(Í! s%      8þÿÿtH{D*{C*skHsmH     &'o +¥×'&( +( +þ(}F*tJ{J*{I*{K*     ssHsuHofmo•j( +( +þ(}F*tC      swH{5*þ( +*tD{7*     syHs{H()o +¥×)(( +( +þ(}F*tK{O* {N*{M*(‚% s…% ii2Z      Ñ(în (°F(H(|F(†% ( +(‡% XX3¦(†% *tE  {9*(S% !!,*!##(T% (U% $$oÆm{U;{[;+ (·hoE e""(UG (H%%(K% s% (‚% (ƒ% *0H     s}H s% sH(‚% (ƒ% þ( +*0k (çŠsVa s5H ( +sˆ%  ( + Ži s7H (/+ (Š+ s9Hs;Hs‰% (Š% (‹%             sƒH (! +¥Û(" +(L% ( " s% (‚% (ƒ% (fF(# +   (Œ% (mFoYa,%(V (z_($ +s…H ( ++s% *j{e*(gF,*{f*þ*0 s‹H (% + (Ž% (• ,F(Ž% (• (% (–  (— (˜ (& +(F*(%  (~F*0¢   (€F (” (“ (çŠ (†_ ( ](K+,(\Š+(ZŠ(²F(i (›o(=G (— (˜ (& + (~F*0‹s‡H (' +,bs‰H (( +   (~F&          þ(€F*   (~F*r(Ÿ }*}*}**(Ÿ *0 (  *0 (¡ *{**{**{**0gþ,^ ¹y7žt:(‰F(¿+bcXXX ¹y7žt:(ˆF() +bcXXX ¹y7žt:(‡FbcXXX **6(n oŠF*0~*þ,ou ,c(* +-*t:(‡Ft:(‡F3?t:(ˆFt:(ˆF(+ +,t:(‰Ft:(‰Fþ(À+****þþ*0xþ,iþ,a(* +-*t:(‡Ft:(‡F3=t:(ˆFt:(ˆF(, +,t:(‰Ft:(‰Fþ(Â+****þþ*0*u , þoF**:(Ÿ }**(Ÿ *0 (  *0 (¡ *{**0-þ,$ ¹y7žt;(“F(¿+bcXXX **6(n o”F*0D*þ,5u ,)(- +-*t;(“Ft;(“Fþ(À+**þþ*þþ,0þ,((- +-*t;(“Ft;(“Fþ(Â+**þþ*0*u , þo—F**âsšF€*sšF€*sšF€*sšF€*sšF€**:( }**~***(¥Fþ*~***(¥Fþ*~***(¥Fþ*~***(¥Fþ*~***(¥Fþ*{**Zr.8ps% (. +o‘% *01.þ, þ,{* {* 3*Y**þ,**:¥<o§F*0B¥< þ,%¥<þ,{* {* 3*Y**¥<þ,**0>þ,5 (¥FE  * * * * **6(n oªF*0.þ,u< ,{* {* þ**þþ*0*.þ,þ,{* {* þ**þþ*0u< ,o­F**:( } **"sÏF**(ÌFþ*sÒF**(ÌFþ*&sÔF**(ÌFþ*"sØF**(ÌFþ*"sÛF**(ÌFþ*&sÞF**(ÌFþ**sâF**(ÌFþ*&sçF**(ÌFþ*&sëF**(ÌFþ*&sïF*.(ÌF þ**sóF*.(ÌF þ*&søF*.(ÌF þ*süF*.(ÌF þ**sþF*.(ÌF þ*{ **Zr.8ps’% (/ +o“% *0ì(ÌFE %1=IUamy…‘t@{0**tA{1**tB{4**tC{6**tD{8**tE{;**tF{?**tG{B**tH{E**tI{H**tJ{L**tK{O**tL{P**tM{T**Z(¯F}/*}0**{/**{0**>(¯F}1**{1**v(¯F}2*}3*}4**{2**{3**{4**Z(¯F}5*}6**{5**{6**Z(¯F}7*}8**{7**{8**v(¯F}9*}:*};**{9**{:**{;**–(¯F}<*}=*}>*}?**{<**{=**{>**{?**v(¯F}@*}A*}B**{@**{A**{B**v(¯F}C*}D*}E**{C**{D**{E**z (¯F}F*}G*}H**{F**{G**{H**š (¯F}I*}J*}K*}L**{I**{J**{K**{L**z (¯F}M*}N*}O**{M**{N**{O**B (¯F}P**{P**š (¯F}Q*}R*}S*}T**{Q**{R**{S**{T**:( }U**2{U*{/**2{U*{0**:( }V**2{V*{1**:( }W**2{W*{2**2{W*{3**2{W*{4**:( }X**2{X*{5**2{X*{6**:( }Y**2{Y*{7**2{Y*{8**:( }Z**2{Z*{9**2{Z*{:**2{Z*{;**:( }[**2{[*{<**2{[*{=**2{[*{>**2{[*{?**:( }\**2{\*{@**2{\*{A**2{\*{B**:( }]**2{]*{C**2{]*{D**2{]*{E**:( }^**2{^*{F**2{^*{G**2{^*{H**:( }_**2{_*{I**2{_*{J**2{_*{K**2{_*{L**:( }`**2{`*{M**2{`*{N**2{`*{O**:( }a**2{a*{P**:( }b**2{b*{Q**2{b*{R**2{b*{S**2{b*{T**"s8G*V( }c*}d**{c**{d**&*Zr.8ps”% (0 +o•% **s>G*’( }e*}f*}g*}h**{e**{f**{g**{h**&*Zr.8ps–% (1 +o—% *"{f**"{e**"{h**"{g**6{g*{)<*"sKG*V( }i*}j**{i**{j**&*Zr.8ps˜% (2 +o™% *( *þ*’(Œ }k*}l*}m*}n**þsPG{m*{î4(š +,(i*{n*(< {k*{l*(“H*:( }o**"sgG**(eGþ*"sjG**(eGþ*&smG**(eGþ**sqG**(eGþ**svG**(eGþ**s{G**(eGþ*&s€G**(eGþ*s„G**(eGþ*{o**Zr.8psš% (3 +o›% *Z(TG}x*}y**{x**{y**Z(TG}z*}{**{z**{{**v(TG}|*}}*}~**{|**{}**{~**–(TG}*}€*}*}‚**{**{€**{**{‚**–(TG}ƒ*}„*}…*}†**{ƒ**{„**{…**{†**–(TG}‡*}ˆ*}‰*}Š**{‡**{ˆ**{‰**{Š**v(TG}‹*}Œ*}**{‹**{Œ**{**>(TG}Ž**{Ž**:( }**2{*{x**2{*{y**:( }**2{*{z**2{*{{**:( }‘**2{‘*{|**2{‘*{}**2{‘*{~**:( }’**2{’*{**2{’*{€**2{’*{**2{’*{‚**:( }“**2{“*{ƒ**2{“*{„**2{“*{…**2{“*{†**:( }”**2{”*{‡**2{”*{ˆ**2{”*{‰**2{”*{Š**:( }•**2{•*{‹**2{•*{Œ**2{•*{**:( }–**2{–*{Ž**.s°G€—**( *"s­G**uuþ*~—***uvþ*0 uv,+*Zr.8psœ% (4 +o% *V(¦G}š*}›**{š**{›**(¦G*:( }œ**2{œ*{š**2{œ*{›**:( }**(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (5 +-***þþ*Žþ,þ, (5 +-***þþ*0*u ,o»G**:(ˆ }ž**b{ž*rfÁp(©](ó *V(ž% }Ÿ*} **0 {Ÿ*{ *(RF*²(ˆ }¡*}¢*}£*}¤*}¥**0 <{¡*{¢*{¡*{¢*{£*{¥*{¤*(RF{¤*(³_*’(ˆ }¦*}§*}¨*}©**¦(fq{¨*(¨p{§*{©*{¦*(æo*’(ˆ }ª*}«*}¬*}­**’{«*(”p{¬*{­*{ª*(æo*Ò(ˆ }®*}¯*}°*}±*}²*}³**0 U(šp{±*(¤ (¥ {®*{¯*{°*{²*{³*{±*(6 +(7 +(RF{¯*(æo*r(ˆ }´*}µ*}¶**Ž{µ*(–p(¤ {¶*{´*(æo*r(Ÿ% }·*}¸*}¹**Â{¹*3{¸*þo:% *{·*rfÁp(©](ó *( % *0(wo3tÎ {<(e **:(V }º**F{º*o¡% þ*(¢% *"(Ôn*(£% *"(Ön*(¤% *"(Ún*(¥% *"(Þn*(¦% *"(ân*(¦% *"(æn*(§% *"(Øn*(¨% *"(Ün*(©% *"(àn*(ª% *"(än*(ª% *"(èn*(¥% *&l(ìn*(¥% *&k(ên*(¨% *&Ñ(în*(¥% *>as (ðn*(¥% *6(«% (òn*(¬% *0(wo3tÌ {<(­% **(®% *"{u;*V(¤ }»*}¼**†{»*{V8o¯% {¼*(8 +þ*:(© }½**b{½*{Ñ:{I(øm*’(ˆ }¾*}¿*}À*}Á**0 ó{À*(u% ,/{À* (v% (woEyLO+sµGz(u% (u% -ì{¿*r4p(©](ó *(u% (u% -È{¿*r-4p(©](ó *(v% tÎ (u% {< {¿* (SF*(v% tÌ{<{<(u% sñG(9 +(°% {t;sóG{¾*sõGs÷Gofmo›j(i +(å +(: +  (±% ,K   (²%   (”p{Á*ofm  o~j(Š+ (ë](+{¿*(æo*sµGz(v% tÍ (u% (u% :—þÿÿ {< {<(šp(¤ (¥ {Á*X(6 +(7 +(+{¿*(æo*:(‡ }Â**>{Â*(VF*:(‡ }Ã**>{Ã*(VF*:(‡ }Ä**>{Ä*(VF*V(³% }Å*}Æ**0Buu,4tu {š* {›* {Å*{Æ*(TF(k (l *(k *:(‡ }Ç**>{Ç*(VF*(´% *.uvþ*&sH*r( }È*}É*}Ê**{È**{É**{Ê**&*Zr.8psµ% (; +o¶% *&sH*r( }Ë*}Ì*}Í**{Ë**{Ì**{Í**&*Zr.8ps·% (< +o¸% *&sH*r( }Î*}Ï*}Ð**{Î**{Ï**{Ð**&*Zr.8ps¹% (= +oº% *:(8 }Ñ**F{Ñ*þ(ƒ]*:(8 }Ò**F{Ò*þ(ƒ]*(»% *0{<(\F {<(\F (ønE ¸Aõ{2or9ps\ zt¢ (øn3åt¢ {á;{á;/*þ*t¤(øn3®t¤{ã;{ã;  /* þ*t¦ (øn@qÿÿÿt¦  {å;  {å;   /*  þ*t£(øn@4ÿÿÿt£{â;{â;4*þ*t¥(øn@÷þÿÿt¥{ä;{ä;4*þ*t§(øn@ºþÿÿt§{æ;{æ;4*þ*t®(øn @|þÿÿt®{í;{í;4*þ*V(¼% }Ó*}Ô**j{Ó*(p {Ô*(Co*r(½% }Õ*}Ö*}×**0Š{< {< {×*(woE"×rV9p{×*s¤ (¤(b+8(tÍ{< {Õ*rt9p{×*{Ö*(Ä_(¾% (¿% {Õ*{×*{Õ*{×*(_`{Õ*{×*{Õ*{×*(` (Þn{×*{Õ*{š8(Ðo(`(È]{×*s (Þo8stÎ{<(ønEÈþÿÿÈþÿÿÈþÿÿÈþÿÿÈþÿÿÈþÿÿÈþÿÿãîùØ—ÈþÿÿNÈþÿÿÈþÿÿ8Ãþÿÿ{<{Õ*{×*{Õ*{£8{Ö*{×*{Õ*{£8(Ðo(Ý_8Ä{<{Õ*{×*{Õ*{¨8{Ö*{×*{Õ*{¨8(Ðo(Ý_8{{<{Õ*{×*{Ö*{×*{Õ*{Ö*(r_(Ðo(`+:{<+½{<+²{<+§{<+œ{<8Žÿÿÿ(¢]*:(À% }Ø**0(% (€% {Ø*(H*(Á% *"(gF*(Â% *"(hF*(Â% *"(hF*&s/H*r( }Ù*}Ú*}Û**{Ù**{Ú**{Û**&*Zr.8psÃ% (> +oÄ% *:(Å% }Ü**0{Ü*{g*oWa *:(Œ }Ý**6{Ý*{¥8*’(Æ% }Þ*}ß*}à*}á**0 "{Þ*{ß*{à*{á*þ(? +*V(Ç% }â*}ã**R{â*{ã*([F*:(D }ä**0E|ä*(È% ,(â *om(¢–(™{U;{X;sû£ (¤(b+*:(@ }å**V{å*s (Þo*r(É% }æ*}ç*}è**0¦{Ë* {Ì* {è*(XF9~{è*(YF(r% {ç*os% -sÊ% * (t% ,{æ*(Ë% {Ú*(aF+,oÎF(.H(Ì% sÊ% *sÊ% *sÊ% *’(Í% }é*}ê*}ë*}ì**0 "{é*{ê*{ë*{ì*þ(^F*0¬(Î% }í*}î*}ï*}ð*}ñ*}ò*}ó*}ô* }õ* }ö* }÷* }ø* }ù*}ú*}û*}ü*}ý*}þ*}ÿ*}+}+*0] {Û* {Ù* {Ú* {í*{ï*sCH( +, (q sÏ% *(wo@ütÌ{<{õ*(¨ þ,{ô*{U;|\;(»iþ+,onokoÕ þþ+,{t;ofmošjŽiþ+9}{<{<r†9p(n(©](ó (ò  {ü*{+ol%   (Ö] (    (çŠ(¢o(“ sp% +sp% (j%  (i%  (wo@·tÐ{ <{"<{#<{Oo {O-þ+,(šsû£(¤(+&+-{í*{K8rÕp(øm(ko+.0 (ôn(oo+{í*(o`(ko+{þ*(H{í*{î*{ï*{ð*{ñ*{ò*{ó*{ô*{õ*{ö*{÷*{ø*{ù*{ú*{û*{ü*{+ (yF{ý*(@ +{í*{î*{ï*{ð*{ñ*{ò*{ó*{ô*{õ*{ö*{÷*{ø*{ù*{ú*{û*{ü*{ÿ*(mF , (” (Go+(ao(q (r (Ð% sÏ% *(Ñ% *"{<*’(Í% }+}+}+}+*0 "{+{+{+{+þ(^F*Ò(Ò% }+}+}+} +} +} +*0 /{+{+{+{ +{ +{ +(sFþ*’(Ó% }Ô% }Õ% }Ö% }×% *03!{Ö% oØ% {Ô% (JG {×% {Õ% (A +(H*ò(Ú% }Û% }Ü% }Ý% }Þ% }ß% }à% }á% *0 ["{á% 0{Ý% þ(Å+*{Û% {ß% {á% {à% (o` {Ý% (Å+{Þ% (#]{Ü% (Ø]*(â% **j(UG*’(ã% }ä% }å% }æ% }ç% *0 :{æ% (Å+{ä% {K8rÕp(øm{ç% (#]{å% (Ø]*(â% **j(UG*Ò(è% }+}+}+}+}+} +*0 ]#{+--{+(á +{+{+(#]{+(Ø]*{+ (â {+{ +{+(×]*V(â% }!+}"+*V{!+{"+(]G*’(è% }#+}$+}%+}&+*0 B{#+{$+{&+{%+(á +(Þn{$+{#+{š8(Ðo(á_*V(â% }'+}(+*j{'+{(+oN% (_G*r(è% })+}*+}++*†{*+(á +{++{)+(Ú]*:(â% },+*>{,+(aG*²(é% }-+}.+}/+}0+}1+*0 @{/+, {/+(â *{-+{.+{1+("]{0+(á +(Ò_*0œ(ê% }2+}3+}4+}5+}6+}7+}8+}9+ }:+ };+ }<+ }=+ }>+}?+}@+}A+}B+}C+}D+*0&{D+{Ð* {D+{Î* {D+{Ï* {Í* {Ë*{Ì*(XF9¹(YF(ë% {j*(r% (ë% {i* (ZF (ÌFEÇ ‘  ¦ –rš9ps\ zr):ps\ z{2+{3+{4+{5+{6+{7+{8+{9+{:+{;+{<+{=+{>+{?+{@+{A+{B+  (xF*tF  {<*  {=*  {>*(wo@ÊtÌ{2+{V8 {<(6+9¤{<{<{2+{3+{4+{5+{6+{7+{8+{9+{:+{;+{<+{=+{>+{?+{@+{A+ {5+{C+   sWH   sYH( +*(wo3(z% *(z% ({% *tI{G*{F*(wo@¸tÍ{<oN% þ9—{<{2+{3+{4+{5+{6+{7+{8+{9+{:+{;+{<+{=+{>+{?+{@+{A+ {2+{5+ s[H s]H( +*(wo3(z% *(z% ({% *tG{@*{A*(wo@ÃtÏ{2+(¤ (n{<(ƒ]9˜{<{<{2+{3+{4+{5+{6+{7+{8+{9+{:+{;+{<+{=+{>+{?+{@+{A+ {5+ s_H saH( +*(z% ({% *tM{R*{S*(wo@ÔtÏ{2+{<(ƒ]9³{<{<- (H(z% ({% *(ì% {2+{5+{B+ scH{2+{4+{:+{5+(JG(LF  (ò ! (ó " ##!"(Í! (H(z% ({% *(z% ({% *(wo3 (H(z% ({% *(z% ({% *t@$${/*%(wo3?tÎ&&{<'%'(n oÿn,&{<' (H(z% ({% *(wo3(z% *(z% ({% *(z% ({% *V( }E+}F+*b{E+{F+sí% Œü*r(î% }ï% }ð% }ñ% *0 ({ñ% {E+{F+(B +*r(è% }J+}K+}L+*ž{K+(á +{L+(#]{J+(Î]*:(â% }M+*>{M+(YG*²(ò% }ó% }ô% }õ% }ö% }÷% *0 4{ó% {õ% (á +{÷% {ö% (#]{ô% þ(_*V(â% }S+}T+*V{T+{S+([G*ò(ø% }U+}V+}W+}X+}Y+}Z+}[+*0 D{W+{X+{Z+{[+sqH{U+{V+{Y+{Z+(C +(D +*:(¦ }\+*b{\+{ß:{I(n*0œ(ù% }]+}^+}_+}`+}a+}b+}c+}d+ }e+ }f+ }g+ }h+ }i+}j+}k+}l+}m+}n+}o+*0{]+{^+{_+{`+{a+{b+{c+{d+{e+{f+{g+{h+{i+{j+{k+{l+{o+{n+(H{m+þ(|F*(â% *&(WG*:(ú% }p+*"{p+*0„(û% }q+}r+}s+}t+}u+}v+}w+}x+ }y+ }z+ }{+ }|+ }}+}~+}+}€+*0(% (€% {q+{r+{s+{t+{u+{v+{w+{x+{y+{z+{{+{|+{}+{~+{+{€+s% þ(|F*:(ü% }+*Z{+oý% þ(E +*(é% **0Œ(þ% }‚+}ƒ+}„+}…+}†+}‡+}ˆ+}‰+ }Š+ }‹+ }Œ+ }+ }Ž+}+}+}‘+}’+*0Ä!sH{‰+{U;{X;{‰+(¦]{‰+sÿ% (JG {‚+{ƒ+{„+{…+{†+{‡+{ˆ+{‰+{Š+{Œ+{+{Ž+{+{+{‘+{’+{‹+(cG{e*(H(L% ( " s% (|F(fF*:(Å% }“+*0+*{“+o% -{h*sF (¤(¥**(& *"(F*(& *06){f* {g* {e* {h* (hF (=G(— (˜ *(& *"(F*0Þ*d11re:p(“”([e(È+( s¤ (¤(+&+þ,*(ƒ],*(O] (O] ($n3jtv ($n3Ztv{B8{E8 {‚;{‚;(i,2{‚; {‚;{ƒ; {ƒ;s°H(w +*($n3hty ($n3Wty {V8 {‡; {‡;(6+,4 {‡;  {‡;  {ˆ; {ˆ;s²H(w +*($nEÛ6{¤8(ƒ], (^+,*(O]($nþ, (^+,[(%P  , X(• (H+,*(^,!Xs´H('Pþ(§ +***tw($n@Oÿÿÿtw{„;{„;s¶H(w +*tx($n@ÿÿÿtx{†;{†;{…;{…;(ƒ], þ(ƒ]**t{($n@¶þÿÿt{{Š;{Š;(ˆ]*0ë+d11r;p(“”([e(È+( s¤ (¤(+&+(O] (O] ($nEá ($n3*($nE>¥*tw ($n3îtw{„; {„;s& (w +*tx($n3±tx{†; {†; {…; {…;   (F +,  8¸þÿÿ*($nþ*tv ($nEûþÿÿûþÿÿûþÿÿûþÿÿùþÿÿûþÿÿ8öþÿÿtv{B8{E8 {‚;{‚;(i9Êþÿÿ{‚; {‚;{ƒ; {ƒ;s& (w +*0 ¶-d11r;p(“”([e(È+( s¤ (¤(+&+(O] (O] ($nE¬ ($n3*($nEÌ l(^,#(ºH  (n oÅH,+ (^+,*(O]($nþ,#(ºH  (n oÅH,+ (^+,2(%P,X(¼H(• (H++,*X(¼H  sÌH('Pþ(§ +*tw($n@ ÿÿÿtw{„; {„; sÎH  (w +*tx ($n@ßþÿÿtx  {†;  {†; {…; {…;(Õ +, (Õ +**($n@ˆþÿÿ*tv($nE0þÿÿ0þÿÿ0þÿÿ0þÿÿ.þÿÿ0þÿÿ8+þÿÿtv{B8{E8{‚;{‚;(i9ÿýÿÿ{‚;{‚;{ƒ; {ƒ; sÐH  (w +*0 g*(ºH(H,*(ºH(H,*(“”([e(È+(“”([e(È+(—sû£ (¤(¥*0,.(@lE ×'SÁk«ï³Ù!ytB {; {; (Hsy *tE {;{4; {; (¢–(˜sû£(¤(¥sy *tH{; (™sû£(¤(¥sy *tD{;sy *tK{ ; {Ñ8(Hsy *tL  {!;sy *tJ  {; (šsû£(¤(¥sy *tM  {$; (›sû£(¤(¥sy *tF  {; {—8(Hsy *tN  {%; (úsû£(¤(¥sy *tI{;sy *tG{;sy *tC{;sy *0s/{;{ù:{I {;|û:(j(Ói3 (Un("n+{¤8 sÔHsy {;{;(G + (Ú (Û sy *0}0(’H (Ú {;|û:(j (éi  (n oòi,(Un("n(ƒ]+,,({;{ù:{Isû£(¤(¥+*04¿ (#] (1+sÖH(H +,*X+Ì01(Š+   (”H*0q2(îo 3etë {‡< {ˆ< (:^(_{t={m= sØH('+sÚH(/+(•H(Š+þ(W_**0x4(îo3btá {U<-S{V<-K1G{W< {Z< {X< Y (—H(& (Ô (& (& s& *(Ó s& *0¥5(îo3ftá 1[{W< {Z< {U< {V<{X<Y(—H(&  (Ô (& (& s& *(îo 3(–H8kÿÿÿ(Ó s& *0ê7{2<   {3<o (îo3@tâ( & þþ,){\<{_<{]<s= +(z s= (> ( & (?  (˜H  ( &   ( &   ( &   (&   (&  o— .*    s& (& *049(™H ,(& *(œ( ]sû£ (¤(I +*0:(Ó sÜHs& þ(J +*0Æ<(r_(šH (½ (» (¾ (¿ (¼ (À oÁooõ o— .Hr£;ps" (+  sàHoõ o— (+( ]s¤(¤(¥+(›H   (&  (& s& *VsèIo¬Q(K +*0ž?{+1 {,1 o§Q (H   s&  (L + s& (M +s& (N +s& (O +s& (O +s& (P +s& (P +(& *>sJþ(Q +*Ò(¸SE rTÏp*r<<p*rR<p*rR9p*0‰@{g:{s: onj rÄp(¤ (` rMñp{¤8(¤ (¥ (` {g:{s:{…:þþ, ,+ +,%omj(£sû£(¤(¥+ -+,%omj(¤sû£(¤(¥+ ,þ+,%omj(¥sû£(¤(¥+(ÿjoªj-{g:{r:þþ+,{g:{q:( kþþ+,{g:{q:( kþþ+, o«jþ+, o¬jþ+, (HK**0A{+1 {,1 {g:{s: (k, oŒjþ+,{g:{s:{‚:þ+,{Ñ8(`+,"rMñp{¤8(¤ (¥ (`þ+, o«jþ+,Y(xM,(omj(¡onjsû£ (¤ (¥+)omj(¢onjsû£ (¤ (¥+(uM, oŒjþ+, (¡H**0MB(O]($nþ-*(¼H sJ(%P(‡ +('P(ß+þ(R +*0 ªD(& -'{I(c (ŸP(¸T(& (P++(& ( & {ó+ sJ{I(ß +(Ò + sJ((+ sJ{ÜL(ä+oõ 1 oF + sJ ((+s!& *0 ]EsJ(& -'{I(c (ŸP(¸T(& (€P+(& sJ( & {õ+(7 +þ(7 +*0tF(Ê ,j (Ë (îo3Z(Ë tß (Ê (Ê -A{L< oÆm{U;|\;(¶i (ži (n o«i, {L< **0¥G(Ê 9˜ (Ê (Ê :†o¢Q:z(Ë o‰Q (r_  (H,+F(^,;{¬8(ƒ],+{®8(ƒ],+{±8(ƒ]þ+,* ( **0 6I(§H oQo‰Q(^, o¢Qþ+,+þþ (Ê 9¡ (Ê (Ê :Ž (Ë (r_þþ(Œ_(ð (ñ þ,o‰Q(Hþ+,o‰Q(Ê]+  (k (l sò + s Jsò (ó (ô  (S +  (B   (A o¾  sC *0yLs"JoT + s$JoU +(¼U oÏU (O]($nþ98oÏU(k] {q;Œn,+-" {q;{n;oÏU{E8(èh+9ëoÏU{¾9 ofm{g:{l:s~ o%& s (&& , ('& (ð * oÏU{¿9 ofm{g:{l: o(&  s)& (*& ,`(+&   ofm{g:{u:o¸ oÜk s&J ¥(V +  -*   (}    ( i(ð ****0 M(½U  , (Äqþ+  (O]($nþ, (W](I](n]+J (O]($nþ,. (V](A  (V](@ (¤ (¥ (¥ +oQ  - o޳(³(n o3³+,(¤ + (¤ (¥     (Ðp(¤ (æosY *0„NtÄ {-0 {,0 {.0 o‰Q(^,-oŒQ(Ôo,& sl(¤(+&+(^o›QoœQ,(o‹QrŽ<p( s¤(¤(+&+-þ+, ošQ+ o™Q ,+  o§Q (©H  -    (ªH*   (ˆ  oÏU{B8{E8 oÏU{T9(i, ( ` sY *oQ(ß+(W +(ù (ø (bP*0-J (¦H   s(J(X +*0€Ps*J(§ +,"oµ (þsû£ (¤(+&+s,J(Y + -@(³ þ,!(ôn{¥8(Ðo(k (l 8ñs.J(©+8ß (.& (g 9¯(h {U;{Z;(^þ,((h oòR(KP (¤(Z +8~(g ,J(g (h (¦]s0J(©+(Þh(³_(k (l (l +,rÒ<p só zoòR(KP (¤(Z + sY (ú (x_sj *0 =Qo«Q (º oµ (€s(}+(~+(‚s(¶o þþ,+ (™H9€(³ þ,?(i sY (ú (ôn{¥8(Ðo(k (l (x_sj +F(œH(½ (¼ ¥î(Œ+sj +(­H (à (ß ( (z (Ó (Ô (Ûq(`P( (/& ( (°]*0 .R(„P {È1 {É1 (®H*:(8 }”+*F{”+þ(ƒ]*:(8 }•+*F{•+þ(ƒ]*²(V }–+}—+}˜+}™+}š+*0 ({š+{–+{—+{˜+{™+þ(H*:(8 }›+*F{›+þ(ƒ]*^s¹H€+s¹H€ž+*:( }œ+*~+**(¾Hþ*~ž+**(¾Hþ*{œ+*Zr.8ps0& ([ +o1& *01.þ, þ,{œ+ {œ+ 3*Y**þ,**:¥ÞoÀH*0BS¥Þ þ,%¥Þþ,{œ+ {œ+ 3*Y**¥Þþ,**0þ, (¾H3 * **6(n oÃH*0.Sþ,uÞ ,{œ+ {œ+ þ**þþ*0*.þ,þ,{œ+ {œ+ þ**þþ*0BuÞ ,oÆH**’(8 }2& }3& }4& }5& *0 !{2& {3& {4& {5& (\ +*’(8 }6& }7& }8& }9& *0 !{6& {7& {8& {9& (\ +*Ò(V }©+}ª+}«+}¬+}­+}®+*0 ,{­+{©+{ª+{«+{¬+{®+(H*’(8 }¯+}°+}±+}²+*0 !{¯+{°+{±+{²+(Õ +*’(8 }³+}´+}µ+}¶+*0 !{³+{´+{µ+{¶+(Õ +*²(:& }·+}¸+}¹+}º+}»+*0 G{¹+{;{ÿ:þþ,{»+{º+sy *{·+{¸+{»+(‘H*’(;& }¼+}½+}¾+}¿+*0 .5(Ú (Û {¼+{½+{¾+{¿+sÒH*:(8 }À+*F{À+þ(ƒ]*:({ }Á+*:{Á+o¯ *V(Œ }Â+}Ã+*R{Â+{Ã+(“H*:(<& }Ä+*06T(& (& {Ä+($` (ß (Ô (à s& *:(Ó }Å+*B{Å+þo  *:(Ù }Æ+*0¸{Æ+oÚ sÞH*²(Ÿ }Ç+}È+}É+}Ê+}Ë+*(Ÿ *0 (  *0 (¡ *{Ç+*{È+*{É+*{Ê+*{Ë+*²(Ÿ }Ì+}Í+}Î+}Ï+}Ð+*(Ÿ *0 (  *0 (¡ *{Ì+*{Í+*{Î+*{Ï+*{Ð+*’(Ÿ }Ñ+}Ò+}Ó+}Ô+*(Ÿ *0 (  *0 (¡ *{Ñ+*{Ò+*{Ó+*{Ô+*’(Ÿ }Õ+}Ö+}×+}Ø+*(Ÿ *0 (  *0 (¡ *{Õ+*{Ö+*{×+*{Ø+*’(Ÿ }Ù+}Ú+}Û+}Ü+*(Ÿ *0 (  *0 (¡ *{Ù+*{Ú+*{Û+*{Ü+*r(Ÿ }Ý+}Þ+}ß+*(Ÿ *0 (  *0 (¡ *{Ý+*{Þ+*{ß+*¶sI€á+sI€â+sI€ã+sI€ä+*:( }à+*~á+**(Iþ*~â+**(Iþ*~ã+**(Iþ*~ä+**(Iþ*{à+*Zr.8ps=& (] +o>& *01.þ, þ,{à+ {à+ 3*Y**þ,**:¥óoI*0BV¥ó þ,%¥óþ,{à+ {à+ 3*Y**¥óþ,**06þ,- (IE  * * * **6(n o"I*0.Vþ,uó ,{à+ {à+ þ**þþ*0*.þ,þ,{à+ {à+ þ**þþ*0Wuó ,o%I**0 s(I*ò( }é+}ê+}ë+}ì+}í+}î+}ï+*{é+*{ê+*{ë+*{ì+*{í+*{î+*{ï+*&*Zr.8ps?& (^ +o@& *"{ï+*6{ë+{I*6{ë+{I*"{ê+*"s7I*V( }ð+}ñ+*{ð+*{ñ+*&*Zr.8psA& (_ +oB& **s=I*’( }ò+}ó+}ô+}õ+*{ò+*{ó+*{ô+*{õ+*&*Zr.8psC& (` +oD& *:(Ÿ }ö+*(Ÿ *0 (  *0 (¡ *{ö+*0-þ,$ ¹y7žtø(HI(¿+bcXXX **6(n oII*0D*þ,5u ,)(a +-*tø(HItø(HIþ(À+**þþ*þþ,0þ,((a +-*tø(HItø(HIþ(Â+**þþ*0*u , þoLI**Ò(Ÿ }÷+}ø+}ù+}ú+}û+}ü+*(Ÿ *0 (  *0 (¡ *{÷+*{ø+*{ù+*{ú+*{û+*{ü+**sE& *’( }F& }G& }H& }I& *{F& *{G& *{H& *{I& *&*Zr.8psJ& (b +oK& *"{F& *:sbI*Ò( },},},},},},*{,*{,*{,*{,*{,*{,*&*Zr.8psL& (c +oM& *"{,*"{,*&sN& *r( }O& }®$ }¯$ *{O& *{®$ *{¯$ *&*Zr.8psP& (d +oQ& *"{®$ *0@{®$ {,*( *&sI**uÿþ*sƒI**uþ*s…I**uþ*0X u,+ u,+*Zr.8psR& (e +oS& *r(vI} ,},},*{ ,*{,*{,*:(vI},*{,*:(vI},*{,*:( },*2{,{ ,*2{,{,*2{,{,*:( },*2{,{,*:( },*2{,{,*&sT& *r( }U& }·$ }¸$ *{U& *{·$ *{¸$ *&*Zr.8psV& (f +oW& *"sX& *V( }% }Y& *{% *{Y& *&*Zr.8psZ& (g +o[& *"{% *6{% {I*2s\& *²( }œ$ }$ }]& }^& }²$ *{œ$ *{$ *{]& *{^& *{²$ *&*Zr.8ps_& (h +o`& *"{œ$ *"{$ *"{]& *"{^& *"{²$ *>{$ þož$ *>{²$ þoa& *>{œ$ þo'$ *0   sb& *0d( }]$ } % } % }c& }Ï$ }d& }e& }f&  } %  }g&  }h&  }i& *{]$ *{ % *{ % *{c& *{Ï$ *{d& *{e& *{f& *{ % *{g& *{h& *{i& *&*Zr.8psj& (i +ok& *"{]$ *"{]$ *"{ % *"{ % *"{c& *"{Ï$ *>{Ï$ þol& *"{e& *"{f& *"{ % *"{g& *N{h& (4$ þþ*N{i& (4$ þþ*Rsm& {Ï$ þ(j +*Rsn& {Ï$ þ(k +*Rso& {Ï$ þ(l +*0@oÞ$ oó {,þ(^*>{e& þop& *V{]$ { % o©Q*>{ % þoµ *>{ % þoµ *B{ % ( % þ*º{ % oµ { % oµ 3sq& {Ï$ þ(m +**j{ % oµ { % oµ þ*B{]$ ( U*ž{]$ { % o©Qoµ {c& oµ þ*0A{]$ ( U, o% +, oÖ ++,{ % ( % þ**Rsr& {Ï$ þ(n +*0]]{Ï$ ¥6 os& oï ,ot& {œ$ o'$ Ö+Ü Þu , oâ &Ü&Ü *,B0]]{Ï$ ¥6 os& oï ,ot& {$ ož$ Ö+Ü Þu , oâ &Ü&Ü *,B0]]{Ï$ ¥6 os& oï ,ot& {²$ oa& Ö+Ü Þu , oâ &Ü&Ü *,B(u& *.{]& þ*(v& *"{]& *(w& *z{]& þþ, {^& (x& **(u& *j{œ$ o'$ {$ ož$ þ*(y& *"{œ$ *(z& *0 ,sZ {0{0{0{0{0(aI*:({& }|& *0+{% {|& {I(ñ þ*:(}& }~& *0-k{,,#{, (d s& {~& þ(o +**:(}& }-,*0O{, {,, {-,( ^**(€& *0 +{,{,{,{,{,{,(aI*(}& *0^{, u£-u¡-**V(& }‚& }ƒ& *0<_{% {Y& {ƒ& {I(ñ ,(Ô {‚& („& (…& **:(†& }‡& *0.k{,,${, (d sˆ& {‡& þ(p +**:(}& }1,*0,@{,,"{, {1,{I(d (ñ þ**:({& }‰& *0+{% søI{‰& þ(q +*ò(Š& }‹& }Œ& }& }Ž& }& }& }‘& *0 s`{% {Y& {I {‹& (c {Ž& (¡P(¸T{I{‘& (}P {& {& {& ({P(K 9t(K (K -b(L oiR, opRþ+,?(L o}R{Œ& {& (r +(wI(“& (”& *{‹& (c {Ž& {& {‘& o:T  (v" ,!   (w"   (yI(“& (”& *{‹& {& {‘& oJ* (' sÑJo• +(' (' (EJ(IJ(FJ(r_(­]   (r_sY sí& *  ( '   sÓJo˜ +  ( '   (' (IJ(a(r_(S](û] sÕJo™ +(Î]   (r_sY sí& *0í¢ s™Još + : s›Jo› + -   þ(?J* (' s×Joœ +(' (' (¼UsÙJrÍ=po +Œq,+ r¨9ps‚ zŽi  Ü   Y   21   £R(IJ¤Ü X   X3Ï (ž + (šp(¤ (¥  (æo(r_sY sí& *(' sÛJrÍ=po +Œq,+ r¨9ps‚ zŽi  Ü   Y   21   £R(IJ¤Ü X   X3Ï (ž +  sÝJ (u+(³_(r_sY sí& *0{© s“JoŸ + :¯ s•Jo  + -] s—Jo¡ + -   þ(@J* (' (5J(r_sY sí& *(' (HJ(' (r_sY sí& *  ('   sßJo¢ +  ('   ('   ('  (IJ (IJ(IJ(åŠ(\Š(r_(£](r_sY sí& *0O­ sJo£ + :¨ s‘Jo£ + -   þ(AJ* (' sáJo¤ +( ' (!' (IJsãJod +(¼U(Ó_   (r_sY sí& * (' såJo¤ +( ' (!' (IJsçJod +(¼UséJo¥ +(¼U  (,`   (r_sY sí& *0k°s‰J s‹J  (¦ + , o#' (^sû£ (¤ (§ +* þ(BJ*0k³sëJo¨ + (%' (&' (õcsíJo© +(…Q(¤ (k sñJ(ª +(¬H*0†µs÷Jo« + sùJo¬ + sûJo­ + sýJo® +(¼U ,  (ª]+  (©](ó (ò (à s*' o+' *0¶sÿJo­ + o,' *0ˆ» sKo¯ + (.' (/' (0' sKo° +(…QsKo± +,-(2' (IJ(k (l +(k  s K(ª + sKo² +,sKr¥=po³ ++@  Œ¶,+ r¨9ps‚ z Ži  s  Y2(  £@(¼U¤sXX3Ø (´ + ,+(õc,+(¼q,+(5'   (¬Hsí& *0U¼sKo­ + o6' -0o7' (C† oׇ(Osï£ (¤(+&+þo8' *0 "¾(CJ (9' (ù *0 lÁ s~J(µ + o:' s„Js;' s‡J(¶ +       þ(CJ*:sKoä+*0 ŸÄsKrõ=p o· + ŒB,+ r¨9ps‚ zŽi @ Y2%  £<(KJ¤@XX3Û Œ¶,+ r¨9ps‚ zŽi @Y2+£@ (8J¤@XX3Õ  sK (¸ +(Ê - s=' +s  (Ê (Ê -V (Ë   sK oU +(8JsK o¹ +  (  ~% ¤~(º +s=' + r>ps\ z  (>'   (?' s)K o» +  þ(JJ*0 ¥Å (LJ (9' (ø (A' (9' (ù  (VP(g^ (,`sB' ÞDtu(,.s+K oT + s-K oT +   orzþ*^_D(C' **²(D' }h,}i,}j,}k,}l,*0 £9e{h,{l,{h,{¢8(ƒ],"¥ó(Ôn{i,{k,(Ðo ÝZ{h,{l,{h,{ 8(ƒ],"¥÷(Ön{i,{k,(Ðo Ý{h,{l,{h,{¡8(ƒ],"¥(Øn{i,{k,(Ðo ÝÚ{h,{l,{h,{›8(ƒ],"¥ø(Ún{i,{k,(Ðo Ýš{h,{l,{h,{8(ƒ],¥€(Ün{i,{k,(Ðo Þ]{h,{i,{j,{k,{l,(4J Þ5(ön{i,{k,(Ðo Þt {i,{j,(| + Þ*A„…(J **þo‡*(J **þoó†*(° *"o‡*(E' **þo‡*:(° }m,*Æ{m,3o‡oF' +o‡{m,oG' (‡*(J **þo ‡*(° *"o‡*(° *Jo‡oH' (‡*(J **þo ‡*(° *"o‡*(° *Jo‡oI' (‡*(J **þoð†*(° *"o‡*(° *0Æo‡ ,*Ð(d (‡*(º *"o‡*0D}n,}o,}p,}q,}r,}s,}t,}u,(` *0&Ç{t,YE +8Ú8µ8ï{n,¥{o,¥«(¼ +oJ' }s,}t,{s,oï 9‘{s,oK' }p,{p,(L' }q,{p,(M' }r,{q,{;|û:(j (Ïi (n oÚi,}t,{r,}u,*+}r,}q,}p,8_ÿÿÿ}t,{s,(½ +}s,}t,}u,*0‡e {t,YE++e{t,E + ++++}t,{s,(½ +}t,}u, Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{t,E + + +++***"{u,*0 {n,{o,spJ*(N' *"o‡*:(° }v,*0sÈ{v,Œ¶,+ r¨9ps‚ z{v,Ži / Y 2'{v,£@(6J¤/X X3Ù o‡oO' (‡*(P' **:(Q' }w,*NszJ{w,o­ +*0T}x,}y,}z,}{,}|,}},}~,}, }€, },(R' *0&{€,YE +8Ú8¹8ï{{,s|J{z,¥‰(¾ +{x,(Ü+{y,(ª+¥Š(¿ +oS' },}€,{,oï ,t{,oT' }|,{|,(U' }},{|,(V' }~,}€,{},{~,s*' sW' },*}~,}},}|,8ÿÿÿ}€,{,(À +},}€,},*0‡e {€,YE++e{€,E + ++++}€,{,(À +}€,}, Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{€,E + + +++***"{,*0%{x,{y,{z,{{,s~J**o &**þ(Á +*.þ( +*:(Z' }‚,*0É([' (\' {‚,o]' *0D(^' }ƒ,}„,}…,}†,}‡,}ˆ,}‰,}Š,*0 8{ƒ,{„,{…,{†,{‡,{ˆ,{‰,{Š,(EJ*0D(_' }‹,}Œ,},}Ž,},},}‘,}’,*0 :{‹,{Œ,{,{Ž,{,{,{‘,{’,(FJ*(`' **þoЇ*(a' *0Ì(R† ,(b' (c' **(a' *0Ì(Z† ,(b' (c' **(d' *0Ï(^† ,(e' (f' **(g' *0Ñ(_† ,(h' (i' **(j' *0Ô(Q† ,(k' (l' **(m' *0×(S† ,(n' (o' **(p' *0Ú(U† ,(q' (r' **(s' *0Ý(T† ,(t' (u' **(v' *0à(W† ,(w' (x' **(y' *0ã([† ,(z' ({' **(v' *0à(]† ,(w' (x' **(|' *0æ(M† ,(}' (~' **(' *0é(\† ,(€' (' **(‚' *0ì(N† ,(ƒ' („' **(…' *0î(P† ,(†' (‡' **(ˆ' *0ñ(O† ,(‰' (Š' **(|' *0æ(V† ,(}' (~' **(|' *0æ(X† ,(}' (~' **(‹' *0ô(Y† ,(Œ' (' **(Ž' *0÷(L† ,(' (' **(‘' *0'ù(’' (“' (”' (•' (–' *(—' *0'ù(’' (“' (”' (•' (–' *(‘' *0'ù(’' (“' (”' (•' (–' *(—' *0'ù(’' (“' (”' (•' (–'  *(‘' *0(ù(’' (“' (”' (•' (–' *(˜' **(˜' **(™' **(š' **(›' **(˜' **(œ' **(' **(œ' **(ž' **(- **(Ÿ' **( ' **( ' **:(h }“,*:{“,(r_*(¡' **(¢' **(° **(¢' **(° **(£' *"o͇*(¤' **(¥' **( ' **0l}”,}•,}–,}—,}˜,}™,}š,}›, }œ, }, }ž, }Ÿ, } ,(¦' *0ü{Ÿ,YE +8°8 8Å{œ,sïJrÍ=p{–,o +¥ o§' }ž,}Ÿ,{ž,oï ,e{ž,o¨' },}Ÿ,{”,{•,{–,{—,{˜,{™,{š,{›,{,(IJ} ,*},+Ž}Ÿ,{ž,(à +}ž,}Ÿ,} ,*0‡e {Ÿ,YE++e{Ÿ,E + ++++}Ÿ,{ž,(à +}Ÿ,} , Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Ÿ,E + + +++***"{ ,*0A{”,{•,{–,{—,{˜,{™,{š,{›,{œ,sñJ*(©' *"oׇ*(ª' *"o؇*(P' **(«' *"oÖ‡*(P' **(¬' **(­' **(®' **( ' **0l}¡,}¢,}£,}¤,}¥,}¦,}§,}¨, }©, }ª, }«, }¬, }­,(¦' *0ü{¬,YE +8°8 8Å{©,sKrÍ=p{£,o +¥ o§' }«,}¬,{«,oï ,e{«,o¨' }ª,}¬,{¡,{¢,{£,{¤,{¥,{¦,{§,{¨,{ª,(IJ}­,*}ª,+Ž}¬,{«,(à +}«,}¬,}­,*0‡e {¬,YE++e{¬,E + ++++}¬,{«,(à +}¬,}­, Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¬,E + + +++***"{­,*0A{¡,{¢,{£,{¤,{¥,{¦,{§,{¨,{©,s K*(¯' **þoO‡*(°' *"o[‡*(P' **(±' *"oZ‡*(] *"o:‡*:(²' }®,*Žr—àp|®,þ’o& ( (܇*:(³' }¯,*RsK{¯,o¹ +*(ß& *"o.‡*(²' *6r‡p(܇*(P' **²}°,}±,}²,}³,}´,(´' *0»{³,YE + +r+e8Š{°,¥‰oµ' }²,}³,{²,oï ,?{²,o¶' }±,}³,{±,s!K($¥o­ +}´,*}±,+´}³,{²,(Ä +}²,}³,}´,*0‡e {³,YE++e{³,E + ++++}³,{²,(Ä +}³,}´, Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{³,E + + +++***"{´,*0 {°,s#K*:(·' }µ,*0 +û(¸' (¹' {µ,s#K(Å +(`†*(Þ& *>o.‡þoò†*(Þ& **þo-‡*02ü{î+ {ì+(z {ì+(º' {ë+ {í+{/5{05{15{25{35{45{55{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb{B5(g^(x --{B5{¥8(ss»' (r (¼' (½' (¾' + sIK(Æ + {I  ( O(•”(@+ *0ñý{/5{05{15{25{35{45{55{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb (ZP {Î0 {Ì0 {Í0{Ë0 (g^sKK(Æ +o‹Q( O (•” (@+ *0cds% (/Kþo& *0cds% (0Kþo& *0 cþo‹Q (ZP {Î0 {Ì0 {Í0{Ë0o£Qo‰Q(k]sY‰s¿'  ('I*0 Ü(a^ ( (ƒ oÆmom sMK(Ç +oÆm(c^-/(¯oÆm{U;{X;sû£(¤(È ++A  (  (À'   (  (    sOK(ý+ sQK(‹+sÁ' (Â'  (Ã'  (Ä'  (Å'  oÆm(%^9ooÆm{U;{`;o³ {g;(Ö ,1(Æ' {@=(^,{@=(ƒ]++,(I+?(I+7oÆm{U;{`;o³ {i;{>L,(I+(I(p{Is¤(¤(É +*b{ë+{Io‹Q(ñ *0D{é+(IE**o‰Q(^þ*o‰Qþ(^*0*{ì+(z (ZP sUK{Í0(÷ +*0Ž{ì+(z {í+ {ë+{Io‹Q(ñ ,^(ZP {Ë0 {Í0o† o† 3(8K+,oÉ' oÉ' þ+, þ(7K***BsWKþ(Ê +*BsÊ' þ(Ë +*0ú{î+ {ì+(z {ì+(º' {í+ (9K9¾(ZP{Ì0{Ë0{Î0{Í0(%a  s[K  s]K (Ì +,(a (x]+,Ps_K  saK  scK(Í +,+(:KseK(Ê +  ($a(†]***0@(ps (­+  sƒKo‰Qo& o‹Q(®+(hsû£(¤(¥**s…K((+(¢ ,>(¢ (¢ -,(£ (Q sNI(¤þ(¥*s‡K((+  (¢ ,>   (¢ (¢ -, (£ (Q sNI(¤þ(¥*sNI(¤þ(¥*0 i syK¥=(Ñ + oÍ' oï ,&oÎ' {ï+- (CK+Õ+Ò Þu , oâ &Ü&Ü&*2Mž(k]oÏ' ,s¡Kþ(§ +**0{+1 {,1 þN+ þ›s‰K(· + sK(Ó +s•K(Ô +¥©oÐ' oï ,^oÑ'   (Ò'   (Ó'  (Ô'   (^,  (³ þ+,(µ sû£ (¤ (¥+œ+™Þu   ,  oâ &Ü&Ü&¥©oÐ' oï 9¯oÑ'   (Ó'  (Ô'   (Õ' ¥©oÐ' oï ,MoÑ' (Õ' (Ô' 1) s—K (Õ + s›K(++­+ªÞu   ,  oâ &Ü&Ü&8EÿÿÿÞu   ,  oâ &Ü&Ü&þN+ sµKþ(Ö +*(ilÕ=[˜ÀÀ&sÁK*0 ({+1 {,1 {g:{s: {g:{s:{‰: s»K (× +s`m(k^onjsy (Ö' o¶jo¼j(à+(FK(Ø + s½K( +  ¥¬o×'   oï 9D oØ'   (Ù'  (Ú' (Ú  (Ú' (Û {ó+{ò+{ô+sÃK (Ù +,(^þ+9¨sÅK(Ú +{Œ:(BK- {Œ:þ+,(^þ+,sDI(¤(¥+sÇK(GKsÉK(Û +(Ú +¥=(DKÞ Þt(¤(¥Þ&8°þÿÿ Þ u , oâ &Ü&Ü & s×K þ(á+*A4ø×Ï£Uø(Û' *6(ss»' *(Û' *6(ss»' *(Ü *"(f *:( }¶,*:{¶,("]*:( }·,*:{·,("]*(Ü *"(f *( *00Ç{;|û:(j {;|û:(j (n oÚi*:(Ü' }¸,*0'(Ý' (Þ' {¸,(X](isß' *:(à' }á' *0"(â' (ã' {á' ("]sä' *V(8 }º,}»,*0 (a{º,{»,þ(}]*:(å' }¼,*>{¼,(w +*:(V }½,*^{½,(O]($nþ*:(æ' }¾,*V{¾,(Þ' þo *:(æ' }¿,*F{¿,oç' þ*:(Ü' }À,*0"(Ý' (Þ' {À,("]sß' *V(V }Á,}Â,*R{Á,{Â,(2P*’(è' }Ã,}Ä,}Å,}Æ,*0 {Ã,{Ä,{Å,{Æ,(=K*(é' *6{ë+{I*(é' *6{ë+{I*’(è' }Ç,}È,}É,}Ê,*0 {Ç,{È,{É,{Ê,(=K*’(è' }Ë,}Ì,}Í,}Î,*0 "{Ë,{Ì,{Í,{Î,þ(9K*’(ê' }Ï,}Ð,}Ñ,}Ò,*0 %{Ï,{Ð,{Ñ,{ð+{Ò,(=K*V(è' }Ó,}Ô,*Ö{ë+{I{Ô,o‹Q(ñ ,{Ó,{Ô,þ(7K**0\(ë' }Õ,}Ö,}×,}Ø,}Ù,}Ú,}Û,}Ü, }Ý, }Þ, }ß,*0E{ñ+ {ð+ {Ö,{×,{Ø,soKo‹Q{ß,(Î +(Ð + (Ë' :”-${Ö,{×,{Ø,{Þ,(>Kþ+9d{Ö,{×,{Ø,(ZP {Ë0 {Í0{Ö,{×,{Ø,sqK{Ú,(Ð +(Ë' 9Ë(Ë' (Ë' -d(Ì' {Ö,{×,{Ø,ssK{Ù,(Ü +(ì' -*{Ø,{Õ,{×,{Û,{Ü,{Ý,(@K*{Ü,{Ý,ds%  {Ö,{×,{Ø,{Õ, (0K o& (±{Ø,sû£(?K*{Ú,{Ø,{Ö,{Õ,{×,{Û,{Ü,{Ý,(AK**(Ë' (Ë' -*{Ü,{Ý,ds%  {Ö,{×,{Ø,{Õ, (0K o& (²{Ø,sû£(?K*(é' *6{ë+{I*(= *"{ð+*’(¯ }à,}á,}â,}ã,*0 {à,{á,{ã,{â,(=K*’(¯ }ä,}å,}æ,}ç,*0 8{ä,o‰Q(^,*{ä,{å,{ç,{æ,(>Kþ*:( }è,*B{è,þo *:(` }é,*0{{é,oa sK*’(¯ }ê,}ë,}ì,}í,*0 "{ê,{ë,{í,{ì,þ(9K*:(¯ }î,*v{î,{ë+{Io‹Q(ñ *0|}ï,}ð,}ñ,}ò,}ó,}ô,}õ,}ö, }÷, }ø, }ù, }ú, }û,}ü,}ý,(ç *0 {ü,YE +8Â8Z8J8Ñ{ð,¥ÌoÌ }ù,}ü,{ù,oï 9ƒ{ù,oÍ }ó,{ó,(Ú }ô,{ó,(Û }õ,{ñ,{ô,(^:{ï,,{ô,( +{ñ,{ò,{õ,{ô,(%P}ö,{ö,9Æ{ö,}÷,{÷,(• }ø,{ñ,{ò,{õ,(ŸP{ø,(0P¥¤ož }û,}ü,{û,oï ,0{û,oŸ }ú,}ü,{ú,}ý,*}ú,+Ã}ü,{û,(; +}û,}ø,þ›}÷,+}ö,+þN+}õ,}ô,}ó,8mþÿÿ}ü,{ù,(Ý +}ù,}ü,}ý,*0¨e {ü,YE+8ƒ{ü,E ++8+!+ ++,+}ü,{û,(; +}ü,{ù,(Ý +}ü,}ý, Þ t   Þ&8cÿÿÿþ,z*o‹ ö{ü,E ++++ ++ +****"{ý,*0:{ï,{ð,{ñ,{ò,þN+þ›s‰K*V(í' }þ,}ÿ,*0 K(Ú (Û {þ,{ÿ,(ŸP(0P {þ,(^,+(¥ sî' *r(8 }-}-}-*0 {-{-{-(Õ +*’(ï' }-}-}-}-*0 h (ð' (ñ' (ò' (ó' {-."{-{- (ºH{-(H+,{-{- s‘K(Þ +**r(ô' }-}-} -*0 E (ð' (ñ' (ò' (ó'  {-{-s“K{ -(ß +sõ' *r(8 } -} -} -*0 { -{ -{ -(Õ +*(¯ *"ošQ*²(k } -}-}-}-}-*0 n*s™K(¶S{-{-{-(hP((+(¢ þþ,5{ -{-(€+($N(¶{-sû£ (¤(¥**:(ö' }-*R{-(k]s÷' *:(V }-*B{-þ(^*’(V }-}-}-}-*0 !{-{-{-{-(Õ +*:(8 }-*F{-þ(ƒ]*0„}-}-}-}-}-}-}-} - }!- }"- }#- }$- }%-}&-}'-}(-(ø' *0 O{'-YE !+$8D888ä8Ð8ú{-{-(^90{-¥¤ož }$-}'-{$-oï 9ã{$-oŸ } -{-s£K{ -{-(l +}!-(¶S{-{-{-{ -(hP¥o! }%-}'-{%-oï ,;{%-o‘! }"-}'-{"-{!-(6I}(-*}"-+¸}'-{%-(@ +}%-}!-} -8 ÿÿÿ}'-{$-(; +}$-8­{-(¶S(ŸP(¸T{-{-(P¥o! }&-}'-{&-oï ,G{&-o‘! }#-{#-oQ,}'-{#-(6I}(-*+}#-+¬}'-{&-(@ +}&-}'-}(-*0Êe {'-YE+8¥{'-E ++R+$+ + +2+.+@}'-{%-(@ +}'-{$-(; ++}'-{&-(@ +}'-}(- Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{'-E +++++ ++ + ******"{(-*0:{-{-{-{-{-{-{-s¥K*0\})-}*-}+-},-}--}.-}/-}0- }1- }2- }3-(ù' *0 j{2-YE +88í8Ù8){)-(¶S(ŸP{,-{--o7T¥µoú' }0-}2-{0-oï 9¿{0-oû' }.-{.-¥o! }1-}2-{1-oï ,]{1-o‘! }/-{/-oŸQ-4}2-{*-{+-{,-(I{/-(3K}3-*+}/-+–}2-{1-(@ +}1-}.-81ÿÿÿ}2-{0-(à +}0-}2-}3-*0¥e {2-YE+8€{2-E ++5++++)}2-{1-(@ +}2-{0-(à +}2-}3- Þ t   Þ&8fÿÿÿþ,z*lˆ ê{2-E +++ +++****"{3-*0+{)-{*-{+-{,-{--s«K*Ò(I }4-}5-}6-}7-}8-}9-*0 PokR,{4-{7-(^þ+,*{4-{5-{6-{8-{9-ojR(EK*(ü' *>{ð+þo‹Q*0„}:-};-}<-}=-}>-}?-}@-}A- }B- }C- }D- }E- }F-}G-}H-}I-(ý' *0î"{H-YE +8ž8L8<8­{?-¥©oÐ' }E-}H-{E-oï 9_{E-oÑ' }@-{@-(Ó' }A-{@-(Ò' }B-{@-(Ô' }C-{<-sK{<-sŸK{C-(+(á +(þ' }D-{:-{<-{=-{>-{A-{B-{C-s¥K(â + {<-{B-(^, (ÿ' 8t{;-,{B-( +{<-{=-{A-{B-(%P , (• +{B- {:-{<-{=-{A-s«K(ã + {<-{=-{A-{B-{C-{D-s±K{:-(¶S(ŸP(¸T{A-{B-(€P(7 +s³K¥·(ä +(-{?-þN+sµK*(( *0p(@ (A (B sy *(¬ *0D#oÆmoæl, (9P+,'oÆm {U;{`;o³ {i;{>Lþ**V(( }J-}K-*0@O{@= {J-(^,{J-{K-þ(ƒ]*{J-{K-(^þ*V(¬ }L-}M-*0y$oÆm {U;{`;o³ {L-({g; (Ö -{L-{M-(^þ*{L-{M-s¿Kþ(è +**V(( }N-}O-*j{N-{O-(4Ks( *(( *"(( *(( *"(( *:(( }P-*V{P-( ( þo ( *0|}Q-}R-}S-}T-}U-}V-}W-}X- }Y- }Z- }[- }\- }]-}^-}_-( ( *0 [%{^-YE +88ê8${V-{ë+{I{U-(ß +¥·o ( }]-}^-{]-oï 9Á{]-o ( }W-{W-{ð+}X-{Q-{R-{T-{X-{V-(=K9b{Q-{B8{Q-{E8{V-{ê+{Q-{X-o‰Q(k](i9Í{X-o”Q}Y-{Y--8¤{Y-}Z-{Z-(ˆ }[-{[-oÆm {U;{`;o³ {h;,*(¢{V-{ë+{Isû£ (¤(¥+{[-oÆm {U;{`;o³ (6m}[-þ“}Z-}Y-+{X-{R-{T-o«Q}\-}^-{Q-{T-{S-{\-(WP}_-*}\-+}X-}W-8/þÿÿ}^-{]-(é +}]-}^-}_-*0‡e {^-YE++e{^-E + ++++}^-{]-(é +}^-}_- Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{^-E + + +++***"{_-*0<&{Q-{R-{S-{T-{U-{V-þ“sËK*0t}`-}a-}b-}c-}d-}e-}f-}g- }h- }i- }j- }k- }l-}m-( ( *0Ý'{l-YE +88<8,8œ{b-¥¬o×' }i-}l-{i-oï 9N{i-oØ' }d-{d-(Ú' (Ú }e-{d-(Ú' (Û }f-{d-(Ù' {ó+}g-{`-{e-{c-(4K}h-{`-{a-{c-{f-{g-{h-þ“sËK(ê +¥Ïo }k-}l-{k-oï ,0{k-o }j-}l-{j-}m-*}j-+Ã}l-{k-(N+}k-}h-}g-þN+}f-}e-}d-8¢þÿÿ}l-{i-(ë +}i-}l-}m-*0¥e {l-YE+8€{l-E ++5++++)}l-{k-(N+}l-{i-(ë +}l-}m- Þ t   Þ&8fÿÿÿþ,z*lˆ ê{l-E +++ +++****"{m-*01M{`-{a-{b-{c-þN+sÑK*r(' }n-}o-}p-*0b({n-(sìLþ(î +*0+- {r-r"ëpsMsâH (¤þ(¥*0[oÜl{O;oÜl{O;(2+,oÜl{Q;oÜl{Q;(ñ +,oÜl{R;oÜl{R;þ**0Ž/ofmonj ofm {g:{u:o¸ s,Ms.Mo×ko×k(ï +,"s2Ms4Moßkoßk(ï ++,!s8Ms:MoÝkoÝkþ(ð +**2þ(äK*0V0o &}q-}t-}r-}s-(Ñ` süK{W5sL{X5(ñ +(ò +}u-*bofmonjþoøK*6oêK*0\3{q- {u- sL(ó + sL sL  ( (ÛK(v +o( &*0F4o† o† .(sû£ (¤(¥*o#a sLþ(ò+*0  6onj sL {g:{l:{g:{l:(ñ -*{g:{i:o& (msû£ (¤(¥*oijoij(ñ -*{g:{i:o& (msû£ (¤(¥*sL{g:{t:{g:{t:oîK9à{g:{h:oc {g:{h:oc  o† o† .*{g:{i:o& (nsû£ (¤(¥*{g:{y:{g:{y:(&i,*{g:{i:o& (osû£ (¤(¥* o#aoµjoµjsLsL{g:{s:{‰:(ô +(õ +(ÜK (ÜK (ÜK s&L  (Þ + s(L (å+9°{q-s*L  (Þ + s0L (+{q-(Q`{q-(Q`,þ+,+{g:{i:o& (qsû£ (¤(¥+<,þ+,+{g:{i:o& (ssû£ (¤(¥+{q-s`m(k^(S`{q-s`m(k^(S`,þ+,+{g:{i:o& (rsû£ (¤(¥+<,þ+,+{g:{i:o& (tsû£ (¤(¥+{q-s`m(k^(e`{q-s`m(k^(e`,þ+,+{g:{i:o& (usû£ (¤(¥+-+,+{g:{i:o& (vsû£ (¤(¥+(#^(#^,þ+,+{g:{i:o& (wsû£ (¤(¥+-+,+{g:{i:o& (xsû£ (¤(¥+(a{q-{q-(^{q-(^(}]-+{g:{i:o& (ysû£ (¤(¥+ oêK,"{g:{q:{g:{q:oöK+,8{g:{i:{g:{i:{g:{r:{g:{r:o÷K+,'{g:{p:{g:{p:s2Loö ++,(onjs`m{g:{u:o¸ þoøK****0Ê8oÚl {U;{b; {U;{b; 9¡ 9‹ (E  (E {2< (E {4< (E {3<(E  (E {2< (E {4< (E {3<  o‰!  o‰!  . s4Lþo( * oÂooÂo(n o( þ,s6Lþo( *o  o 0"s8Lo  (÷ +(( (ø ++-s:Lþo( *o  (~+s5 {?5 {@5 {A5 {B5 {C5 {D5sbsZL(ÝK*o#a  oêK9í(a{q-  (}]-{r-s\L(ÝK* {r-o( oü +-*oßloßl.{r-s^L(ÝK*{r-o(  {U;{a; {U;{`;{U;{a;{U;{`;  oñK-* {U;{a;{U;{a;s`Loö +**0 ”?(ºkE•!jt6 (ºkE5sbLo( (¤(¥*sdLo( (¤(¥*t6 {ç: {ç: (ý +-sfLo( (¤(¥**t5(ºkEjÿÿÿjÿÿÿ8eÿÿÿshLo( (¤(¥*t5{æ:{æ:{q-(|]-sjLo( (¤(¥**t7 (ºk@íþÿÿt7  {è:  {è: {q-{r-  oóK*(ºk@¬þÿÿ*0µ{Ñ:{I{Ñ:{I(ñ -slL(ÞK*okoÕ okoÕ .snL(ÞK*spLokok(þ +-srL(ÞK*{Ò:{Ò:(&i,stL(ÞK*{Ó:{Ó:svLoö +*0@{ß:{I{ß:{I(ñ -sxL(ßK*{Ü:{Ü:(&i,szL(ßK*{Ø:{Ø:.s|L(ßK*{Ô:{Ô:.s~L(ßK*o®k o®k (û +þ,s€L(ßK*(a{q-{×:{×:(}]-s‚L(ßK*{Þ:{Þ:s„Loö +,{Ý:{Ý:s†Loö +**0|A9o 9c (³ (³ omom(ñ -sˆLþo( * {i;{=L{i;{=L.sŠLþo( * {i;{>L{i;{>L.sŒLþo( * {i;{@L-{i;{@L+,sŽLþo( * {i;{?L{i;{?L.sLþo( * {i;{AL{i;{AL(n o*-s’Lþo( *{q-(g`{q-(g`,þ+,s”Lþo( *-+,s–Lþo( ***þ*0šCotk otk s˜L(ÿ + sšL(ÿ + s( s L (+,s( s¦L (++,:s¨L(þ +,*sªLo( Œ:¥(¤(¥**0Cotk otk s¬L(ÿ + s®L(ÿ + s²Ls´L (+,s¸LsºL (++,/s¼L(þ +,*s¾Lo( (¤(¥**0HEsÀL(+ sÂL(+ s( sÈL(+,s( sÎLþ(+**0aFotk otk sÐL(ÿ + sÒL(ÿ + s( sØL (+,,s ( sÞL þ(+***0 ®L( kE ˆ/³AÎXt ( kE sêLo( (¤(¥**t {™: {™:{q-{t-{r- o+*t( kE wÿÿÿwÿÿÿwÿÿÿwÿÿÿwÿÿÿwÿÿÿwÿÿÿ‘ÿÿÿ8rÿÿÿt{š:{š:o~k o~k  o!(  o!( .r;$p (áK (áK(àK*sîL  þ(+*( k@ûþÿÿ8ÿÿÿt ( kE ¾þÿÿ¾þÿÿ¾þÿÿ¾þÿÿ¾þÿÿ¾þÿÿ¾þÿÿØþÿÿ8¹þÿÿt  { :  { :{¬:o"(  {¬:o"( (Ø+,{¬: {¬:("‡**( kE 9þÿÿ9þÿÿ9þÿÿ9þÿÿ9þÿÿ9þÿÿ9þÿÿSþÿÿ84þÿÿ*t( kE Oúýÿÿúýÿÿúýÿÿúýÿÿúýÿÿúýÿÿúýÿÿ8õýÿÿ{˜:{Ã:(ckE*sðLo( (¤(¥*t{˜:{˜:{Ã:{Ã:(ckE @0(ckþ8ª(ckþ8š(ckþ8Š(ckþ8zt+(ck@bt+{Á:{@={Á:{@={Á:{D={Á:{D={Á:{C={Á:{C={Á:{B={Á:{B={Á:{A={Á:{A= (a{q-(}], o† o† þ+9˜ o#a!{q-! (†],o† o† þ+,^!o#a"{q-"(†],"sòL##sôL(++,(a{q-"(x]++ ++-söLo( (¤(¥*{Ã:(ckþ$${q-{t-{r-{Å:{Å:o+,%{q-{r-{Ä:{Ä:þo+**t%( kE êúÿÿêúÿÿêúÿÿêúÿÿêúÿÿêúÿÿêúÿÿ8åúÿÿsøLo( (¤(¥*t&&{ž:'%{ž:(('(n o3³-súLo( (¤(¥**t)( kE LúÿÿLúÿÿLúÿÿLúÿÿLúÿÿLúÿÿLúÿÿ8GúÿÿsüLo( (¤(¥*t**{Ÿ:){Ÿ:(a{q-(}],*sþLo( (¤(¥*( k3*sMo( (¤(¥*0ÜM(n oÚi-sMo( (¤(¥*- ,sMo( (¤(¥** -sMo( (¤(¥* (• (• (a{q- (}]-@{r- ("N(¶ (· sMo( (¤(¥**0ÊNofm {g:{u:o¸ {í: {í:  (n o:jþ,(®sû£(¤(¥+s MsMo×ko×k(ï +,$sMsMoßkoßk(ï ++,&sMs&MoÝkoÝkþ(ð +**0Zoofmonj{g:{u:o¸ oøK,2ofm {g:{p:{g:{p:ofm s(Moö +**V(#( }v-}w-*z{w-oÆm{v-oÆm(¸^*($( *0O(%( (ö súK*V(#( }x-}y-*R{y-{x-( ]*(&( *0m('( ((( sþK*V()( }z-}{-*R{z-{{-(!_*:(*( }|-*0"){|- {q-{É;{É;þ(š`*:(+( }}-*0»Q{Ê;(é {Ê;(g {Ê;(ê {Ê;(h {Ê;(é {Ê;(g {Ê;(ê {Ê;(h (ñ ,{}-{q-(ƒ]+,þ+,${}-{q- {É;{É;þ(š`**’(L }~-}-}€-}-*0†R{€-{Á; {€-{Ä; {€-{Ã; {Á; {Ä;{Ã;{-{q-{B8{E8 (i,{~-(++,{-( +**V(L }‚-}ƒ-*04S{‚-{Á; {Á; {ƒ-{q- {B8{E8(i*r(‹ }„-}…-}†-*0 !(a{†-{„-{…-þ(y]*²(‹ }‡-}ˆ-}‰-}Š-}‹-*0 “ä(@l3*{‡-{q- {ˆ-s L{Š-{;{;(„+-U{Š-{;{ù:{I(“”{‡-{r-{‰-(O(È+(Ÿ{‹-sû£ (¤(¥**r(‹ }Œ-}-}Ž-*0 &(a{Œ-{q-{-{Ž-þ(y]*²(‹ }-}-}‘-}’-}“-*0 Æ*(@lE ƒ…{-{-sL{‘-{;{;(„+-U{’-{;{ù:{I(“”{-{r-{’-(O(È+( {“-sû£ (¤(¥*****:(,( }”-*R{”-{;(ýk*V( }•-}–-*0 5T{;{ù:{I {;|û:(j {;|û:(j (n ot‰þ,(žsû£ (¤ (¥+{;{ù:{I{;{ù:{IsY‰{;(úkol{•-{–-sL{;{;( +,'{•-{–-sL{;{;( ++,={•-{s--*{•-{–-{;{þ:{;{þ:sLoö +**V(-( }—-}˜-*¢{—-{g:{i:o& oa {˜-sû£*r(.( }™-}š-}›-*~{™-{r-{š-{›-süH*(/( *0p(@ (A (B *(? *0p(@ (A (B þ*:(V }œ-*B{œ-þ(^*:(8 }-*F{-þ(ƒ]*’(h }ž-}Ÿ-} -}¡-*0 {Ÿ-{ -{ž-{¡-(/P*V(8 }¢-}£-*0 !(a{¢-{q-{£-þ(}]*r(V }¤-}¥-}¦-*0H®{¥-{g:{i:o& {¤-{r-($N(p{¦-sû£ (¤(¥*V(8 }§-}¨-*0 (a{¨-{§-þ(}]*(” *"( +*(” **(§£*V(k }©-}ª-*0A{ª-o«j,s,L+s.L{©-{r-{ª-onjs Iþo– *:(,( }«-*R{«-{g:(Új*V(0( }¬-}­-*0 ¯U(· (¶ (¸ {­-Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p{¬-Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9pþ(a*(0( *0!(· (¶ (¸ þ(b*(1( *NoÑ oÑ þþ*V(0( }®-}¯-*0 ”V(· (¶ (¸ {®-{I{¯-o Œ’,4u¼,(x ¥|o¡ +o& +rR9p{®-{I{®-{Iþ(c*(2( *:oÑ ( +*V(,( }°-}±-*–{°-{±-{6<(Ço{°-(Æo*V(3( }4( }5( *0 &{4( {5( {5<{5<s>Lo +*:(1( }´-*F{´-þ(+*V(,( }µ-}¶-*–{¶-{µ-{6<(Ço{¶-(Æo*(0( *0!(· (¶ (¸ þ(`*r(6( }·-}¸-}¹-*0 {·-{¸-{¹-(ÝK*(0( *0!(· (¶ (¸ þ(U*(0( *0!(· (¶ (¸ þ(V*(0( *0!(· (¶ (¸ þ(W*(0( *0!(· (¶ (¸ þ(X*(0( *0!(· (¶ (¸ þ(Y*(0( *0!(· (¶ (¸ þ(Z*(0( *0!(· (¶ (¸ þ([*(0( *0!(· (¶ (¸ þ(\*(0( *0!(· (¶ (¸ þ(]*(0( *0!(· (¶ (¸ þ(^*(0( *0!(· (¶ (¸ þ(_*:(,( }º-*R{º-{U;(,m*(7( *0¾(™ (š þ(ª*(7( *0¾(™ (š þ(¦*(7( *0¾(™ (š þ(§*(7( *0¾(™ (š þ(¨*(7( *0¾(™ (š þ(©*(7( *0¾(™ (š þ(*(7( *0¾(™ (š þ(Ž*V(8( }»-}¼-*V{»-{¼-oðK*(7( *0¾(™ (š þ(*(7( *0¾(™ (š þ(*:(,( }½-*>{½-(ˆk*(7( *0¾(™ (š þ(‘*(7( *0¾(™ (š þ(’*(7( *0¾(™ (š þ(“*(7( *0¾(™ (š þ(”*(7( *0¾(™ (š þ(•*(7( *0¾(™ (š þ(–*:(,( }¾-*>{¾-(žk*:(,( }¿-*>{¿-(k*(0( *0!(· (¶ (¸ þ(d*(0( *0!(· (¶ (¸ þ(e*(0( *0!(· (¶ (¸ þ(g*(0( *0!(· (¶ (¸ þ(h*(0( *0!(· (¶ (¸ þ(i*(0( *0!(· (¶ (¸ þ(j*(0( *0!(· (¶ (¸ þ(k*(0( *0!(· (¶ (¸ þ(l*(* *6{ß:{I*(* *6{ß:{I*:(9( }À-*:{À-(…*:(:( };( *0+*{;( sœLo<( Œ¥ (¤(¥*V(8( }Â-}Ã-*V{Â-{Ã-oðK*:(9( }Ä-*:{Ä-(ƒ*:(:( }=( *0+*{=( s¢Lo<( Œ¥ (¤(¥*V(8( }Æ-}Ç-*V{Æ-{Ç-oðK*V(8( }È-}É-*V{È-{É-oðK*(9( *"(„*(* *6{ß:{I*(* *6{ß:{I*:(7( }Ê-*0¾(™ (š {Ê-þ(«*:(:( }Ë-*0!*{Ë-s°Lo( (¤(¥*V(8( }Ì-}Í-*V{Ì-{Í-oðK*:(7( }Î-*0¾(™ (š {Î-þ(¬*:(:( }Ï-*0!*{Ï-s¶Lo( (¤(¥*V(8( }Ð-}Ñ-*V{Ð-{Ñ-oðK*V(8( }Ò-}Ó-*V{Ò-{Ó-oðK*(7( *0¾(™ (š þ(­*(× *0aoÆm om(¢–*(× *0aoÆm om(¢–*V(9( }Ô-}Õ-*0*a{Õ-oÆm (“”{Ô-(âN(È+(‡*V(>( }?( }@( *01*{@( {?( sÄLo<( Œ¥ (¤(¥*(A( **V(9( }Ø-}Ù-*0*a{Ù-oÆm (“”{Ø-(âN(È+(ˆ*V(>( }B( }C( *01*{C( {B( sÊLo<( Œ¥ (¤(¥*(A( **(* *6{ß:{I*(* *6{ß:{I*:(9( }Ü-*:{Ü-(…*:(:( }D( *0+*{D( sÔLo<( Œ¥ (¤(¥*V(8( }Þ-}ß-*V{Þ-{ß-oðK*:(9( }à-*:{à-(†*:(:( }E( *0+*{E( sÚLo<( Œ¥ (¤(¥*V(8( }â-}ã-*V{â-{ã-oðK*(( *&ob *(( *&ob *:(9( }ä-*:{ä-(z*V(9( }å-}æ-*0*ÿ{å-{æ-¥7 r¸9p(p+(` ({*V(9( }ç-}è-*0*ÿ{ç-{è-¥7 r¸9p(p+(` (|*(9( *"(‚*(F( *6{Ñ:{I*V(G( }é-}ê-*V{é-{ê-oïK*(9( *"(}*V(H( }ë-}ì-*0 +(a{ë-{q-{ì-{F={F=þ(}]*:(I( }í-*>{í-(+*(9( *"(€*(9( *"(~*(9( *"(*(9( *"(*(9( *"(‚*(9( *"(‚*V(9( }î-}ï-*z{ï-o& {î-o& (‰*(9( *"(Œ*(9( *"(‹*V(9( }ð-}ñ-*R{ñ-{ð-(Š*:(J( }ò-*~rDpsÏ (Ê+{ò-þoì *r(Š# }ó-}ô-}õ-*0 7*{ó-{r-{õ-rŠps M{ô-sâH (¤(¥*V(Ù }ö-}÷-*^{ö-{÷-þoëK*:(J( }ø-*~rDpsÏ (Ê+{ø-þoì *r(Š# }ù-}ú-}û-*0 H*{ù-{r-{û-oˆj,rqp+r£>psM{ú-sâH (¤(¥*V(Ù }ü-}ý-*n{ü-{ý-s`moùK*V(J( }þ-}ÿ-*0Y{þ-{U;{`;þ,{ÿ-{r-{þ-(N*rDpsÏ (Ê+{þ-om(¢–þoì *r(K( }.}.}.*0 "{.{.{.o– (âK*r(Ê }.}.}.*†{.{q-{.{.þ(¼^*r(L( }.}.}.*0:W{.{.sM{.(+ , (} sÍ (M( **(N( **r(O( } .} .} .*0 )N (Ï (Ð { .{ .{ .oíK*:(Ê } .*:{ .(ãK*:(P( } .*03Ws"M{ .(+ , (} sÍ (Q( *(R( *’(S( }.}.}.}.*0 åZ(g 9Ï (g 9 (g (g -[(g (g -N(h (h (ãK,{.{.{. oíK*{.{.{.(âK*{.{.sM(+sM{.{.{.s M(+(+oT( oÓ þ9ïs$M(+(U( (V(  ¥ÖoW(   oï ,7 oX(   (Ï  (Ð {.{.{. oíK +À Þ u , oâ &Ü&Ü & ¥oS oï ,#{.{.{.oT (âK+Ô Þu , oâ &Ü&Ü &+,þ**rWps\ z EQ|1­:(,( }.*R{.{g:(Új*:(J( }.*~rDpsÏ (Ê+{.þoì *r(Š# }.}.}.*0 2*{.{.rŠps*M{.sâH (¤(¥*(Ù **:(J( }.*~rDpsÏ (Ê+{.þoì *r(Š# }.}.}.*0 C*{.{.oˆj,rqp+r£>ps0M{.sâH (¤(¥*:(Ù }.*š{.s`m{g:{u:o¸ þ(åK*V(J( }.}.*0W{.{U;{`;þþ,{.{.(N*rDpsÏ (Ê+{.om(¢–þoì *r(K( }.}.} .*0 ?[o– {.{.r"ëp{.s6M{ .sâH (¤(¥*(S( **0 Xr9ñp{Ñ8(z (z r[ñp(c {¤8( (öq(Y( (Z( (0 ( {—8( (æq*0 cr9ñp{”8(¤ (¥ (n(z (z r[ñp(c ( (öq(Y( (Z( (0 ( {—8( (æq*0 ir9ñp{Ò8(z (z {¤8{Ô8(¤ (¥ (¥ (n( (öq(Y( (Z( (0 ( {—8( (æq*0 crMñp{•8(¤ (¥ (n(z (z r[ñp(c ( (öq(Y( (Z( (0 ( {¢8( (æq*0 irMñp{Ó8(z (z {¤8{Õ8(¤ (¥ (¥ (n( (öq(Y( (Z( (0 ( {¢8( (æq*0 OrÄp{Ó8(z (z {Õ8( (öq(Y( (Z( (0 ( {—8( (æq*ÚrÄp{¤8(z (z (Y( (0 ( {—8( (æq*0 XrMñp{¤8(z (z r[ñp(c {¤8( (öq(Y( (Z( (0 ( {¢8( (æq*R(^,(C]**~(DM{¤8{—8(n(n*j(DM{—8(n(n*æ(DM{¤8{Ô8(¤ (¥ (¥ (n{—8(n(n*~(DM{¤8{¢8(n(n*j(DM{¢8(n(n*æ(DM{¤8{Õ8(¤ (¥ (¥ (n{¢8(n(n*~(DM{¥8{—8(n(n*~(DM{Õ8{—8(n(n*ê(Y (Z (¤ (k (l (l {¢8(¤ (¥ (Ë]*0#°(ß²{Ý8 ofmo¾j(= (B°*0q\(ß²{Ö8 ofmo¾j(= (B° (NMr·>p(= ([° (ÿ´(ŵ(Y (Z (¤ (k {Ô8(¤ (¥ (Ë]*0q\(ß²{×8 ofmo¾j(= (B° (NMrß>p(= ([° (ÿ´(ŵ(Y (Z (¤ (k {Õ8(¤ (¥ (Ë]*0N(‹µ(Y (Z (¤ (Þn{š8(Ðo(k (l (l {—8(¤ (¥ (Ë]*0N(µ(Y (Z (¤ (Þn{š8(Ðo(k (l (l {—8(¤ (¥ (Ë]*ö(eµ(Y (Z (¤ (k (l (l {—8(¤ (¥ (Ë]*0I ¹y7ž(Þn{š8(Ðo(QM(RM(SM(SM(SM(â]*Zs‘Mþ(þ +*0I]r‡p(DM(©] (ò (ó r[ñp(DM(©]  (ò  (ó s[( *0D^(^,1r[ñp(ª] (ò sÁm(å](½]së *së *ª(^,r?p(C](ª]*r?p(©]*º(^,sÁm(å](½]*(½]*0X`(Ê ,= (Ê (Ê - (Ë * (+ s“M (\( (]( þ(}+*(Þn{š8(Ðo*0X`(Ê ,= (Ê (Ê - (Ë * (+ s•M (\( (]( þ(}+*(Þn{š8(Ðo*09oofm {g:{t:(ºkþþ,(¤ {¦8sz *(j^*0d{—8{—8(Þn{š8(Ðo(``{—8(Þn{š8(Ðo(Þn{š8(Ðo(``(``*0D{¢8{—8(Ôn{¢8(Ðo(Ôn{¢8(Ðo(``(``*0-{¢8(Ôn{¢8(Ðo(``(^M*0 #{—8(Þn{š8(Ðo(``*0Áconj o“j (\M (¦ (J  (VM(^( (_( (`( (a(  (OM   s—M  (+(ZM o³j, +  (]M   (WM(ò (ó sb( *0 ½donj o“j (\M (¦ (J r'?p (©](ò (ó  (XM(ò  (ó   s™M  (+(ZM o³j, + (]M    (YM(½]*0¶eonj o“j (\M (¦ (J  (VM(^( (_( (`( (a(   s›M  (+([M o³j, +  (_M   (WM  (ò  (ó sb( *0 ±fonj o“j (\M (¦ (J  (XM(ò (ó sM(+([M   (YM   (Ôn{¢8(Ðo(]` o³j, * (^M*0 honj r[ñp{¦8(©] (ò (ó {¦8r‡p(DM(©](ò (ó  sŸMo“j(+([M (çŠsVa {¦8(¤ (n(so  (\ŠoXa(ao(q (r  (Ôn{¢8(Ðo(\ŠoXa(p (Co   {¢8oZa   (_Msb( *0 ionj {¦8(XM (ò (ó  s¡Mo“j(+([M(çŠsVa {¦8(¤ (n(so(\ŠoXa(ao(q (r (Ôn{¢8(Ðo(\ŠoXa(p (Co{¢8oZa{¦8(YM {¦8 (Ôn{¢8(Ðo(]` o³j, * (^M*0@monj o›j (\M (¦ (J r‡p (©](ò (ó r[ñp (©](ò  (ó  r7?p{—8(©]  (ò   (ó  rG?p{—8(©](ò (ó (OM(çŠsVa s¥Ms§M(+(+(c( (d( (e( þ,(Þn{š8(Ðo+\s©M(+(e( þ,+$(Þn{š8(Ðo(\ŠoXa(p (Co{—8oZao!( 38•(åŠ(\Š{—8 (`(‘µ(Y (Z (¤  (k (l (l {—8(¤ (¥ (Ë](£] (Õ] (Õ](½](½]  (]Msb( *0nonj o›j (\M (¦ (J r7?p{—8(©](ò (ó rG?p{—8(©](ò  (ó   (XM  (ò   (ó  (çŠsVa s­Ms¯M(+(+(c( (d( (e( þ,(Þn{š8(Ðo+\s±M(+(e( þ,+$(Þn{š8(Ðo(\ŠoXa(p (Co{—8oZao!( 38•(åŠ(\Š{—8 (`(‘µ(Y (Z (¤  (k (l (l {—8(¤ (¥ (Ë](£](Õ]  (Õ](½](½]  (]M(YM*0 oonj o›j (\M (¦ (J r‡p (©](ò (ó r[ñp (©](ò  (ó  r7?p{—8(©]  (ò   (ó  rG?p{—8(©](ò (ó (çŠsVa sµMs·M(+(+(c( (d( (e( þ,(Ôn{¢8(Ðo+\s¹M(+(e( þ,+$(Ôn{¢8(Ðo(\ŠoXa(p (Co{¢8oZao!( 3+j(åŠ(\Š{¢8 (`(Ôn{¢8(Ðo(£] (Õ] (Õ](½](½]  (_Msb( *0 ponj o›j (\M (¦ (J r7?p{—8(©](ò (ó rG?p{—8(©](ò  (ó   (XM  (ò   (ó  (çŠsVa s½Ms¿M(+(+(c( (d( (e( þ,(Ôn{¢8(Ðo+\sÁM(+(e( þ,+$(Ôn{¢8(Ðo(\ŠoXa(p (Co{¢8oZao!( 3+j(åŠ(\Š{¢8 (`(Ôn{¢8(Ðo(£](Õ]  (Õ](½](½]  (YM (Ôn{¢8(Ðo(]`o³j,*(^M*0Ùqonj o“j (\M (¦ (J r‡p (DM(©](ò (ó sÃMr‡p{—8(ª]  (ò   (ó  (+ sÁm (UM  (Þn{š8(Ðo (½] o³j, +  (`Msë *0³ronj {¦8 r‡p(DM(©] (ò (ó sÅMr‡p{—8(ª](ò (ó o“j(+sÁm(UM (Þn{š8(Ðo (½]  (`Msë *0 étonj o›j (\M (¦ (J r‡p (DM(©](ò (ó (çŠsVar‡p{—8(ª]  (ò   (ó    sÉM  (+(Co  {—8oZa (Þn{š8(Ðo(½](`Msë *ª{g:{t:(ºkE**Vo±j, o­jþ**0e{g:{q:( kþ,+{g:{q:( kþ,+${g:{t:(ºkþþ, (nM+,*(+*î{g:{q:( kþ,+{g:{q:( kþ,*(+*0 »(+(+{9{g:{p:(Ž^{9{g:{p:(Ž^{9{g:{p:(Ž^{9{g:{p:(Ž^{9{g:{p:(Ž^{9{g:{p:(Ž^{ 9{g:{p:(Ž^sf( sg( *0)Os`m(k^ sËMonj(¡P(-P*0áu(h( ,E(h( (g ,6,þ+,þ+,(Êsû£ (¤þ(¥*(i( (j( ,H(i( (j( (g ,4,þ+,þ+,(Ësû£ (¤þ(¥*(k( ,6(k( (g ,',+,(Ésû£ (¤þ(¥**0 .!wonj (rM (l( 9æ(l( (g 9˜(h( 9ó(m( -(Äsû£ (¤ (¥8Æ(n( 9š(o( 9ö(p( 9§(p( (g ,U(k( ,/(k( (g ,(Çsû£ (¤ (¥8](Ãsû£ (¤ (¥8?(k( ,Ú(k( (g ,É(i( (q( ,¼(i( (q( (g ,¦8ƒÿÿÿ(i( (q( ,”(i( (q( (g 9{ÿÿÿ(Åsû£ (¤ (¥8º(k( 9Rÿÿÿ(k( (g 9>ÿÿÿ(p( ,D(p( (g ,8ÿÿÿ(i( (q( 9ÿÿÿ(i( (q( (g 9÷þÿÿ8Ôþÿÿ(i( (q( 9âþÿÿ(i( (q( (g 9Éþÿÿ8¦þÿÿ(k( 9£(k( (g ,(Èsû£ (¤ (¥8ç(p( ,>(p( (g ,+Ç(i( (q( 9_þÿÿ(i( (q( (g 9Fþÿÿ+œ(i( (q( 94þÿÿ(i( (q( (g 9þÿÿ8nÿÿÿ(p( ,D(p( (g ,8Pÿÿÿ(i( (q( 9èýÿÿ(i( (q( (g 9Ïýÿÿ8"ÿÿÿ(i( (q( 9ºýÿÿ(i( (q( (g 9¡ýÿÿ8ôþÿÿ(k( 9Ë(k( (m( -8õüÿÿ(n( 9#(o( 9’(p( ,\(p( (g ,(g 9Aýÿÿ8ýÿÿ(g 90ýÿÿ(i( (q( 9 ýÿÿ(i( (q( (g 9ýÿÿ8äüÿÿ(i( (q( 9òüÿÿ(i( (q( (g 9Ùüÿÿ8Yýÿÿ(g 9Èüÿÿ(p( ,D(p( (g ,8Œüÿÿ(i( (q( 9šüÿÿ(i( (q( (g 9üÿÿ8^üÿÿ(i( (q( 9lüÿÿ(i( (q( (g 9Süÿÿ80üÿÿ(g ,8˜ýÿÿ(p( ,D(p( (g ,8zýÿÿ(i( (q( 9üÿÿ(i( (q( (g 9ùûÿÿ8Lýÿÿ(i( (q( 9äûÿÿ(i( (q( (g 9Ëûÿÿ8ýÿÿ(p( ,i(p( (m( -8"ûÿÿ(g ,(n( 9íüÿÿ8ûÿÿ(n( ,8ƒûÿÿ(i( (q( 9sûÿÿ(i( (q( (g 9Zûÿÿ8­üÿÿ(m( -8Áúÿÿ(m( (g 9Ã(i( (j( -G(i( (q( ,4(i( (q( (g 9ûÿÿ(n( 9Nüÿÿ(o( 9ëúÿÿ8kûÿÿ8=(n( ,9(o( 9Íúÿÿ(i( (q( 9½úÿÿ(i( (q( (g 9¤úÿÿ8$ûÿÿ(i( (q( 9úÿÿ(i( (q( (g 9vúÿÿ8Éûÿÿ(n( ,9(o( 9^úÿÿ(i( (q( 9Núÿÿ(i( (q( (g 95úÿÿ8µúÿÿ(i( (q( 9 úÿÿ(i( (q( (g 9úÿÿ8Zûÿÿ(n( 9(o( 9B(p( 9‘(p( (g 9(m( :á(i( (q( 9³(h( 9„(h( (g ,O(i( (j( -(Îsû£ (¤ (¥8È(k( 9`ùÿÿ(k( (g 9Lùÿÿ8)ùÿÿ(k( 9<ùÿÿ(k( (g 9(ùÿÿ8ùÿÿ(k( 9ùÿÿ(k( (g 9ùÿÿ8áøÿÿ(Æsû£ (¤ (¥8>(k( 9Öøÿÿ(k( (g 9Âøÿÿ8Ÿøÿÿ(h( 9(h( (g 9´(m( -_(i( (j( -8ûþÿÿ(k( 9yøÿÿ(k( (g 9eøÿÿ(i( (q( 9Uøÿÿ(i( (q( (g 9<øÿÿ8øÿÿ(k( 9,øÿÿ(k( (g 9øÿÿ(i( (q( 9øÿÿ(i( (q( (g 9ï÷ÿÿ8Ì÷ÿÿ(k( 9ß÷ÿÿ(k( (g 9Ë÷ÿÿ(i( (q( 9»÷ÿÿ(i( (q( (g 9¢÷ÿÿ8÷ÿÿ(k( 9’÷ÿÿ(k( (g 9~÷ÿÿ(i( (q( 9n÷ÿÿ(i( (q( (g 9U÷ÿÿ82÷ÿÿ(i( (q( ,Z(i( (q( (g ,8­÷ÿÿ(h( 9÷ÿÿ(h( (g 9 ÷ÿÿ(m( :þöÿÿ(i( (j( :îöÿÿ8`ýÿÿ(h( 9Þöÿÿ(h( (g 9Êöÿÿ(m( :¿öÿÿ(i( (j( :¯öÿÿ8!ýÿÿ(p( 9W(p( (g 9Ö(m( :§(i( (q( 9qýÿÿ(h( ,k(h( (g ,6(i( (j( -8¼üÿÿ(k( 9:öÿÿ(k( (g 9&öÿÿ8öÿÿ(k( 9öÿÿ(k( (g 9öÿÿ8ßõÿÿ(k( 9òõÿÿ(k( (g 9Þõÿÿ8»õÿÿ(k( 9Îõÿÿ(k( (g 9ºõÿÿ8—õÿÿ(h( 9(h( (g 9´(m( -_(i( (j( -8óûÿÿ(k( 9qõÿÿ(k( (g 9]õÿÿ(i( (q( 9Mõÿÿ(i( (q( (g 94õÿÿ8õÿÿ(k( 9$õÿÿ(k( (g 9õÿÿ(i( (q( 9õÿÿ(i( (q( (g 9çôÿÿ8Äôÿÿ(k( 9×ôÿÿ(k( (g 9Ãôÿÿ(i( (q( 9³ôÿÿ(i( (q( (g 9šôÿÿ8wôÿÿ(k( 9Šôÿÿ(k( (g 9vôÿÿ(i( (q( 9fôÿÿ(i( (q( (g 9Môÿÿ8*ôÿÿ(h( 9(h( (g 9´(m( -_(i( (j( -8†úÿÿ(k( 9ôÿÿ(k( (g 9ðóÿÿ(i( (q( 9àóÿÿ(i( (q( (g 9Çóÿÿ8¤óÿÿ(k( 9·óÿÿ(k( (g 9£óÿÿ(i( (q( 9“óÿÿ(i( (q( (g 9zóÿÿ8Wóÿÿ(k( 9jóÿÿ(k( (g 9Vóÿÿ(i( (q( 9Fóÿÿ(i( (q( (g 9-óÿÿ8 óÿÿ(k( 9óÿÿ(k( (g 9 óÿÿ(i( (q( 9ùòÿÿ(i( (q( (g 9àòÿÿ8½òÿÿ(k( 9(k( (g ,8ôÿÿ(p( ,D(p( (g ,8ôóÿÿ(i( (q( 9Œòÿÿ(i( (q( (g 9sòÿÿ8Æóÿÿ(i( (q( 9^òÿÿ(i( (q( (g 9Eòÿÿ8˜óÿÿ(p( ,D(p( (g ,8zóÿÿ(i( (q( 9òÿÿ(i( (q( (g 9ùñÿÿ8Lóÿÿ(i( (q( 9äñÿÿ(i( (q( (g 9Ëñÿÿ8óÿÿ(h( 9} (h( (g 93(n( 9(k( 9õ(k( (o( 9^(p( 9ë(p( (g ,L(m( -3(i( (q( 9Møÿÿ(i( (j( -8±÷ÿÿ(g 9.ñÿÿ8 ñÿÿ(g 9ñÿÿ8úðÿÿ(m( -L(i( (j( -8u÷ÿÿ(g 9òðÿÿ(i( (q( 9âðÿÿ(i( (q( (g 9Éðÿÿ8¦ðÿÿ(g 9¸ðÿÿ(i( (q( 9¨ðÿÿ(i( (q( (g 9ðÿÿ8lðÿÿ(i( (q( ,;(i( (q( (g ,8çðÿÿ(m( :Wðÿÿ(i( (j( :Gðÿÿ8¹öÿÿ(m( :7ðÿÿ(i( (j( :'ðÿÿ8™öÿÿ(p( 9ë(p( (g ,L(m( -3(i( (q( 9ïöÿÿ(i( (j( -8Söÿÿ(g 9Ðïÿÿ8­ïÿÿ(g 9¿ïÿÿ8œïÿÿ(m( -L(i( (j( -8öÿÿ(g 9”ïÿÿ(i( (q( 9„ïÿÿ(i( (q( (g 9kïÿÿ8Hïÿÿ(g 9Zïÿÿ(i( (q( 9Jïÿÿ(i( (q( (g 91ïÿÿ8ïÿÿ(m( -L(i( (j( -8‰õÿÿ(g 9ïÿÿ(i( (q( 9öîÿÿ(i( (q( (g 9Ýîÿÿ8ºîÿÿ(g 9Ìîÿÿ(i( (q( 9¼îÿÿ(i( (q( (g 9£îÿÿ8€îÿÿ(p( ,c(p( (g ,2(m( :zîÿÿ(i( (q( -8iõÿÿ(i( (j( :Xîÿÿ8Êôÿÿ(m( :Hîÿÿ(i( (j( :8îÿÿ8ªôÿÿ(m( 9Ï(m( (g 9‚(i( (j( -<(i( (q( ,)(i( (q( (g 9áíÿÿ(o( 9Öíÿÿ8Vîÿÿ8( (o( 9Àíÿÿ(i( (q( 9°íÿÿ(i( (q( (g 9—íÿÿ8îÿÿ(o( 9‡íÿÿ(i( (q( 9wíÿÿ(i( (q( (g 9^íÿÿ8Þíÿÿ(i( (j( -9(o( 9¸óÿÿ(i( (q( 9¨óÿÿ(i( (q( (g 9óÿÿ8˜íÿÿ(i( (j( (g ,9(i( (q( 9ÿÿÿ(i( (q( (g 9Ôìÿÿ(o( 9Éìÿÿ8Iíÿÿ(o( 9¹ìÿÿ(i( (q( 9©ìÿÿ(i( (q( (g 9ìÿÿ8íÿÿ(k( 9(k( (g ,8Âíÿÿ(p( ,D(p( (g ,8¤íÿÿ(i( (q( 9<ìÿÿ(i( (q( (g 9#ìÿÿ8víÿÿ(i( (q( 9ìÿÿ(i( (q( (g 9õëÿÿ8Híÿÿ(p( ,D(p( (g ,8*íÿÿ(i( (q( 9Âëÿÿ(i( (q( (g 9©ëÿÿ8üìÿÿ(i( (q( 9”ëÿÿ(i( (q( (g 9{ëÿÿ8Îìÿÿ(n( 9(o( 9÷(p( 9¾(p( (g ,`(m( -4(i( (q( 9-òÿÿ(k( 9!ëÿÿ(k( (g 9 ëÿÿ8êêÿÿ(k( 9ýêÿÿ(k( (g 9éêÿÿ8Æêÿÿ(k( 9Ùêÿÿ(k( (g 9Åêÿÿ(i( (q( 9µêÿÿ(i( (q( (g 9œêÿÿ8yêÿÿ(i( (q( 9‡êÿÿ(i( (q( (g 9nêÿÿ8îêÿÿ(p( 9¾(p( (g ,`(m( -4(i( (q( 96ñÿÿ(k( 9*êÿÿ(k( (g 9êÿÿ8óéÿÿ(k( 9êÿÿ(k( (g 9òéÿÿ8Ïéÿÿ(k( 9âéÿÿ(k( (g 9Îéÿÿ(i( (q( 9¾éÿÿ(i( (q( (g 9¥éÿÿ8‚éÿÿ(k( 9•éÿÿ(k( (g 9éÿÿ(i( (q( 9qéÿÿ(i( (q( (g 9Xéÿÿ85éÿÿ(k( 9(k( (g ,8Šêÿÿ(p( ,D(p( (g ,8lêÿÿ(i( (q( 9éÿÿ(i( (q( (g 9ëèÿÿ8>êÿÿ(i( (q( 9Öèÿÿ(i( (q( (g 9½èÿÿ8êÿÿ(p( ,D(p( (g ,8òéÿÿ(i( (q( 9Šèÿÿ(i( (q( (g 9qèÿÿ8Äéÿÿ(i( (q( 9\èÿÿ(i( (q( (g 9Cèÿÿ8–éÿÿ(k( 9»(k( (g 9s(n( 9néÿÿ(p( ,_(p( (g , (m( :Ôçÿÿ(i( (q( 9ãîÿÿ8¿çÿÿ(i( (q( 9Íçÿÿ(i( (q( (g 9´çÿÿ8‘çÿÿ(m( :Ô(i( (j( -c(i( (q( ,)(i( (q( (g 9qçÿÿ(o( 9Hçÿÿ8æçÿÿ(+,(Âsû£ (¤ (¥8—8‘(o( ,.(i( (q( 9çÿÿ(i( (q( (g 9çÿÿ8ƒçÿÿ(i( (q( 9îæÿÿ(i( (q( (g 9Õæÿÿ8²æÿÿ(m( (g 9ª(i( (j( -9(i( (q( 9>ÿÿÿ(i( (q( (g 9†æÿÿ(o( 9]æÿÿ8ûæÿÿ(o( ,.(i( (q( 9^æÿÿ(i( (q( (g 9Eæÿÿ8Åæÿÿ(i( (q( 90æÿÿ(i( (q( (g 9æÿÿ8ôåÿÿ(o( ,.(i( (q( 9úåÿÿ(i( (q( (g 9áåÿÿ8aæÿÿ(i( (q( 9Ìåÿÿ(i( (q( (g 9³åÿÿ8åÿÿ(n( 9±(o( ,j(p( ,4(p( (g 9åÿÿ(m( :tåÿÿ(i( (q( :dåÿÿ8`ìÿÿ(i( (q( 9Oåÿÿ(i( (q( (g 96åÿÿ8¶åÿÿ(p( 9&åÿÿ(p( (g 9åÿÿ(m( :åÿÿ(i( (q( :÷äÿÿ8óëÿÿ(p( ,D(p( (g ,8,æÿÿ(i( (q( 9Ääÿÿ(i( (q( (g 9«äÿÿ8þåÿÿ(i( (q( 9–äÿÿ(i( (q( (g 9}äÿÿ8Ðåÿÿ(p( 9Ä(p( (g 9w(n( 9¨åÿÿ(o( 9¾(m( ,9(m( (g 9)äÿÿ(i( (j( :äÿÿ(i( (q( : äÿÿ8éÿÿ(i( (j( ,@(i( (j( (g ,(i( (q( :Ñãÿÿ8æèÿÿ(i( (q( :¼ãÿÿ8¸êÿÿ(i( (q( -8¦êÿÿ(i( (q( (g 9Œãÿÿ8¡èÿÿ(m( -b(i( (j( ,@(i( (j( (g ,(i( (q( :Lãÿÿ8aèÿÿ(i( (q( :7ãÿÿ83êÿÿ(i( (q( :"ãÿÿ8êÿÿ(m( (g 9 ãÿÿ(i( (j( :ùâÿÿ(i( (q( :éâÿÿ8þçÿÿ(n( ,8×âÿÿ(i( (q( 9Çâÿÿ(i( (q( (g 9®âÿÿ8äÿÿ(m( 9A(m( (g 9À(i( (j( -D(i( (q( 9‰çÿÿ(i( (q( (g 9Vâÿÿ(n( 9£ãÿÿ(o( 9@âÿÿ8Àâÿÿ(n( ,9(o( 9(âÿÿ(i( (q( 9âÿÿ(i( (q( (g 9ÿáÿÿ8âÿÿ(i( (q( 9êáÿÿ(i( (q( (g 9Ñáÿÿ8$ãÿÿ(n( ,9(o( 9¹áÿÿ(i( (q( 9©áÿÿ(i( (q( (g 9áÿÿ8âÿÿ(i( (q( 9{áÿÿ(i( (q( (g 9báÿÿ8µâÿÿ(i( (j( -B(i( (q( 9oóÿÿ(i( (q( (g 9)áÿÿ(n( 9vâÿÿ(o( 9áÿÿ8“áÿÿ(n( ,7(o( 9ûàÿÿ(i( (q( 9ëàÿÿ(i( (q( (g 9Ôàÿÿ8Táÿÿ(i( (q( 9¿àÿÿ(i( (q( (g 9¨àÿÿ8ûáÿÿ{Û8(sM,+{Ú8(sM{”8(sM rMñp{¤8(¤ (¥ (`,+{Ü8(sM {•8(sM (l( ,6(l( (g ,' ,+ ,(Ìsû£ (¤ þ(¥*(m( ,8(m( (g ,',+ ,(Ísû£ (¤ þ(¥*   þ(tM*0¹x(rM (n( 9l(o( ,d(l( -\(h( -T(k( -L(p( ,F(p( (g ,5(m( --(i( (j( - (i( (q( ,(i( (q( (g **(m( -ö(i( (j( -é(i( (q( ,(i( (q( (g **0/J{B8,omjr² p(ñ + - (vM**0hy{B8,omjr² p(ñ + -B(rM (n( ,0(l( -((h( - (k( -(p( ,(p( (g ****&(xM*0 "(r( (s( (ss7m*0 (r( (ss7m*~ß.*~à.*~á.*0Ê{ofmonj o~m (^],+(a],+(^ ,(t( (zM+({M (Vi(€s(¯ (…s(‚s(¶o(ž (|i(hi ( ( i( ($‰(äj(=i*0 ™|ofmonj (\M (¦ o~m ofm{g:{o:(M(u( r9ñp (GM(‘](~M(M*0 À~ofmonj (\M (¦ ofm{g:{o: o~m (CM(u( rMñp(HM(‘](}M(M ofm{g:{t:(ºkþþ,+ (?M(u( rMñp(IM(‘](}M(MsÍ *0 À(\M (¦ ofm {g:{o: ofmonjo~m(BM(u( rÄp(KM(‘](|M(M(AM(u( rÄp(LM(‘](}M(M(@M(u( rMñp(JM(‘](~M(Msv( *0Æ (õ (ö (õ (%( oÆm oÆm(\M(¦ (J r‡p(DM(©]  (ò   (ó  r[ñp{¤8(©]  (ò   (ó (^,(Þn{š8(Ðo+t{¤8(Ê](¼q(ÒooÆm{U;{Z;sY (³ þ,(ú + (ú (û  (k (l (l (x_  (i (f (f {—8(±](+(x(  (y(  (z(   (i (f (f {—8(±]  (åŠ(¢o (åŠ(¢o( ( ( *0 +‚{g:{s:{‚: ,(„M*( *0ˆƒs`m onj onj {g:{h: oc {g:{q:( kþ,sÍM(…M*{g:{q:( kþ,+o³j,sÏM(…M*( *0 j„ (ˆ oÆm (\M (¦ rW?p{Ô8(©](ò (ó r‡p(DM(©](ò  (ó  r[ñp{¤8(©]  (ò   (ó   {¤8(Ê]  së  së ( +o¾ (^,(Þn{š8(Ðo+ (i (f  (i (f (f (Ó (Ô (Ô {—8(²](ù (ø (®](åŠ(¢o( ( *0 +&{g:{s:{ƒ: ,(‡M*( *0ˆƒs`m onj onj {g:{h: oc {g:{q:( kþ,sÕM(ˆM*{g:{q:( kþ,+o³j,sÛM(ˆM*( *0 !… (ø (ú (ø (ù (ø (|( rW?p{Õ8(©](ò (ó (!+(ò  (ó   (i (f (f  {—8(±](\M  (¦  r‡p (DM(©](ò (ó  r[ñp{¤8(©](ò  (ó  ra?p (©](ò (ó rW?p{Õ8(©](ò (ó  së  së ("+(#+(i (f  (i (f (f (Ó (Ô (Ô {¢8(²](ù (ø (®](\M  (¦   (J r‡p (DM(©](ò (ó  rk?p{¥8(©](ò   (^,(Þn{š8(Ðo+k(PM(¼q(ÒooÆm{U;{Z;sY (³ þ,(ú + (ú (û  (k (l (l (x_ (i (f (f {—8(±] oÆm(åŠ(¢o oÆm (åŠ(¢ooÆm(åŠ(¢o( ( ( ( *0 -†{g:{s:{…: ,(ŠM*( *0 Àƒs`m onj onj {g:{h: oc {g:{q:( kþ,sÝMsãM(‹M*{g:{q:( kþ,+o³j,såMsëM(‹M*{g:{t:(ºkþþ,síMsóM(‹M*( *0 ï‡ (õ (%( (õ (ö (+(x( (y( (z( (i (f (f {¢8(±] (\M(¦  (J  r‡p (DM(©]  (ò  (ó  r[ñp{¤8(©]  (ò  (ó  (^,(Ôn{¢8(Ðo8¢ra?p (©](ò (ó  (¼q(ÒooÆm{U;{Z;sY  (³ þ,(ú +  (ú (û  (k (l (l (x_(Ôn{¢8(Ðo(]`(i (f (f {¢8(±]oÆm (åŠ(¢ooÆm(åŠ(¢o( ( ( *0 +‚{g:{s:{„: ,(M*( *0ªˆs`m onj {g:{h:oc {g:{t:(ºkþþ,sõM(ŽM*{g:{q:( kþ,s÷M(ŽM*{g:{q:( kþ,+o³j,sùM(ŽM*( *01‰(O]($nþ,0{9 sûM(k] ofm {g:{p:(N++,*(O]($nþ, sýM(X] {;{;(„++,*(X`,(¢ sÿMþ(å+*(Z`,*(O]($nþ,d(j](; (: ofm(xM,ofm {g:{s:{…:þ+-sNofmo~j(k+***’(‡ }!.}".}#.}$.*0 6{!.{".{#.{$.(TM(ªq(lŠ{".(Ôo*V(‡ }%.}&.*0ôŠ{&.r¡cp{%.{—8(©] (ò (ó {&.(åŠ (\Š {&.{%.{—8{%.(wµ{&.(Þn{&.{%.{š8(Ðo(MM(åŠ(\Š{&.{%.{—8{%.(sµ{&.(Þn{&.{%.{š8(Ðo(MM(£](£](½]*V(‡ }'.}(.*0E‹(åŠ (\Š {(.{'.{¢8(Ôn{(.{'.{¢8(Ðo(£]*Ò(( }).}*.}+.},.}-.}..*0 lŒ{×: {*.{ß:{I(n on {ß:{I {).{..{,.{+.(Ï]{-.{+.(Ï](Ü_*Ò(( }/.}0.}1.}2.}3.}4.*0 lŒ{×: {0.{ß:{I(n on {ß:{I {/.{2.{1.{3.(Ï]{4.{3.(Ï](Ü_*²(( }5.}6.}7.}8.}9.*0 fŒ{×: {6.{ß:{I(n on {ß:{I {5.{8.{7.(Ï]{9.{7.(Ï](Þ_*Ò(( }:.};.}<.}=.}>.}?.*0 lŒ{×: {;.{ß:{I(n on {ß:{I {:.{=.{<.{>.(Ï]{?.{>.(Ï](ß_*²(€( }@.}A.}B.}C.}D.*0 I{@.{B.{×:{D.{A.{B.(Ú]{C.{A.{B.(Ú](Þ_*Ò(€( }E.}F.}G.}H.}I.}J.*0 O{E.{I.{×:{H.{G.{F.{I.(Ú]{J.{F.{I.(Ú](ß_*ò(€( }K.}L.}M.}N.}O.}P.}Q.*0[{K.{O.{×:{M.{P.{N.{L.{O.(×]{Q.{N.{L.{O.(×](Ü_*ò(( }R.}S.}T.}U.}V.}W.}X.*0&{S.{Ñ:{I(øm on {Ñ:{I r{?p{T.(n(©] (ó  (ò r?p{T.(n(©](ó (ò {R.{T.{W.s£M ok  (o þ,*{T.(ko{X.{U.{T.(Ö]{V.{T.(Ö]{R.  (+(ZM(½](½](\ŠoXa(ao(‚( *(ƒ( *þ*(„( *Z- r?ps\ z( *ò(€( }Y.}Z.}[.}\.}].}^.}_.*0[{Y.{].{×:{Z.{^.{\.{[.{].(×]{_.{\.{[.{].(×](Ü_*ò(( }`.}a.}b.}c.}d.}e.}f.*0&{a.{Ñ:{I(øm on {Ñ:{I r«?p{d.(n(©] (ó  (ò r¿?p{d.(n(©](ó (ò {`.{c.{d.s«M ok  (o þ,*{d.(ko{f.{b.{d.(Ö]{e.{d.(Ö]{`.  (+(ZM(½](½](\ŠoXa(ao(‚( *(ƒ( *þ*(„( *Z- r?ps\ z( *Ò(€( }g.}h.}i.}j.}k.}l.*0 U{g.{j.{×:{k.{i.{h.{j.(×]{l.{i.{h.{j.(×](Þ_*Ò(( }m.}n.}o.}p.}q.}r.*0 {n.{Ñ:{I(øm on {Ñ:{I r{?p{o.(n(©] (ó  (ò r?p{o.(n(©](ó (ò {m.{o.s³M ok  (o þ,*{o.(ko{r.{p.{o.(Ö]{q.{o.(Ö]{m.  (+([M(½](½](\ŠoXa(ao(‚( *(ƒ( *þ*(„( *Z- rÓ?ps\ z( *ò(€( }s.}t.}u.}v.}w.}x.}y.*0[{s.{w.{×:{t.{x.{v.{u.{w.(×]{y.{v.{u.{w.(×](ß_*ò(( }z.}{.}|.}}.}~.}.}€.*0&{{.{Ñ:{I(øm on {Ñ:{I r«?p{~.(n(©] (ó  (ò r¿?p{~.(n(©](ó (ò {z.{}.{~.s»M ok  (o þ,*{~.(ko{€.{|.{~.(Ö]{.{~.(Ö]{z.  (+([M(½](½](\ŠoXa(ao(‚( *(ƒ( *þ*(„( *Z- rÓ?ps\ z( *²(( }.}‚.}ƒ.}„.}….*0 YŒ{×: {‚.{ß:{I(n on {ß:{I {.{ƒ.{….{„.(Ï](à_*²(€( }†.}‡.}ˆ.}‰.}Š.*0 7{†.{‰.{×:{ˆ.{Š.{‡.{‰.(Ú](à_*Ò(€( }‹.}Œ.}.}Ž.}.}.*0 ={‹.{.{×:{Œ.{.{Ž.{.{.(×](à_*0L(…( }‘.}’.}“.}”.}•.}–.}—.}˜. }™.*0Ž{’.{Ñ:{I(øm {”.r†9p{•.(n(©] (ó (ò on{Ñ:{I{‘.{“.{•.sÇM{•.(ko{—. {–.{•.(Ö]{˜.sÁm(Þn{‘.{š8(Ðo(â]{‘.ok(+{˜.sÁm{™.(UM(ªq(lŠ(Ôo(½](\ŠoXa(ao*V(V }š.}›.*R{š.{›.(2P*(†( **(gM*(†( **(aM*ò(Á }œ.}.}ž.}Ÿ.} .}¡.}¢.*0 2{œ.{.{ž.{Ÿ.{ .{¡.{¢.($+*²(‡( }£.}¤.}¥.}¦.}§.*0 5Í (ò (ó {£.{¤.{¥.{¦.{§.sÑM*(ˆ( *0 Í (ò (ó sÓM*ò(Á }¨.}©.}ª.}«.}¬.}­.}®.*0 2{¨.{©.{ª.{«.{¬.{­.{®.(%+*²(‡( }¯.}°.}±.}².}³.*0 5Í (ò (ó {¯.{°.{±.{².{³.s×M*(ˆ( *0 Í (ò (ó sÙM*(‰( *2(mM*0D(Á }´.}µ.}¶.}·.}¸.}¹.}º.}».*0 8{´.{µ.{¶.{·.{¸.{¹.{º.{».(&+*²(Š( }¼.}½.}¾.}¿.}À.*0 6Í (ò (ó {¼.{½.{¾.{¿.{À.sßM*(‹( *0 Í (ò (ó sáM*(‰( *2(kM*0D(Á }Á.}Â.}Ã.}Ä.}Å.}Æ.}Ç.}È.*0 8{Á.{Â.{Ã.{Ä.{Å.{Æ.{Ç.{È.('+*²(Š( }É.}Ê.}Ë.}Ì.}Í.*0 6Í (ò (ó {É.{Ê.{Ë.{Ì.{Í.sçM*(‹( *0 Í (ò (ó séM*(‰( *2(lM*0D(Á }Î.}Ï.}Ð.}Ñ.}Ò.}Ó.}Ô.}Õ.*0 8{Î.{Ï.{Ð.{Ñ.{Ò.{Ó.{Ô.{Õ.((+*²(Š( }Ö.}×.}Ø.}Ù.}Ú.*0 6Í (ò (ó {Ö.{×.{Ø.{Ù.{Ú.sïM*(‹( *0 Í (ò (ó sñM*(†( **(eM*(†( **(iM*(†( **(cM*V(L }Û.}Ü.*º{Û.{B8{Û.{E8{Ü.{?8{Á;(i*(‹ *2(@l þ*:(V }Ý.*:{Ý.(M*:(_ }Þ.*bol-*{Þ.(M*0H(s€ß.(€s(® (¯ €à.(s(s(Œ( (( (( (® (¯ €á.*>( O**(O*0(f(þN (•”(@+ *0%Œm(û(O (•”(@+ *0(ìN (•”(@+ **(éN**(O**('N*0(âN (•”(@+ *V(“”(âNþ(È+*0œ{/5{05{15{25{35{45{55{65{75{85{95{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb (âN (•”(@+ *.(N*0˜(“”{/5{05{15{25{35{45{55{65{75{85{95{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb(âNþ(È+*:(ÒN*0cds% (ÒNþo& *0cds% (ÎNþo& *0(“O(”O (•”(@+ *0(\N (•”(@+ *j(“”(f(õNþ(È+*0 .rŠpŒm(û([N (•”(@+ *0.“sŽ( (( (( (“”(f(õNþ(È+*n(“”(f(þNþ(È+*V(“”( Oþ(È+*Z(“”(ONþ(È+*š(“”rû³pŒm(û(MNþ(È+*V(“”(\Nþ(È+*Fþ(3N*.þ(âN*&(O*0O•(“”(f(þN(È+ (“”(f(þN(È+ (ñ -%(“”(f(õN(È+s½ (‘( + :ß(P ob  {05 {15 {25 {35 {45 {55 {65 {75 {85 {95 {:5 {;5 {<5 {=5 {>5 {?5 {@5 {A5 {B5 {C5 {D5sb(“”(f(þN(È+(“”(f(þN(È+(“”(f(õN(È+s½ *(’( *0–{B5(Df (“( (Á (@ (Á (A {/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{@5{A5{B5{C5{D5sb(“”(f (þN(È+(“”(f(þN(È+(ñ -rR9ps½ (‘( +:ü{/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{@5{A5{B5{C5{D5sb(P ob(“”(f (þN(È+(“”(f(þN(È+(ñ -rR9ps½ (‘( +-  (!N*(’( *(’( *0y—{/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{@5{A5{B5{C5{D5sb ds% (No& ds% (No&  (ñ - s~ *{/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{@5{A5{B5{C5{D5sbds% (No& ds% (No& s~ *0¯˜{B5(Cf (¤ {/5{05{15{25{35{45{55{65{85{95{:5{;5{<5{=5{>5{@5{A5{B5{C5{D5sb (“”(f(þNþ(È+**('N*0x™(îo 3hté {~<(Òp3S{€<(Ê ,F{€< (Ê (Ê ,2(Ê (Ê (Ê -(Ë (Ë  (&N(l *(k *0ü›(îoE„ÖµrWpŒm(û*tÞ {K< {I< {B5(^,@rÉûpŒm(û(f(þN(P{B5(éN(…”(v”(v”*{B5(éN*tß{L< oÆmom(¢–Œm(û*tì{Š<( 8ãþÿÿté{~<(ÒpEÛ8Ü•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿi•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ•þÿÿ8þÿÿ{~<tþ{À< {€< {B5{V8 {B5{+9(6+,r$_pŒm(û*{B5{V8 {B5{*9(6+,s)N(&N()+* (Ê þ, {u;Œm(û* {u;Œm(û ((N(”(…”(w”*{~<tÿ  {Á< {€<  ofm  {g:{l:Œm(û ((N(”(…”(w”*{€<  ((Nr:pŒm(û(„”(…”*{~<t{€< {Í<  ofmo•js+NrÙøpŒm(û (*+(‚”rpŒm(û(v”(v”*{<(³ 9¨üÿÿ{<(³ (³ :Žüÿÿ{€< ró?pŒm(û ((N(‚”rù?pŒm(û(v”(v”*Bs-Nþ(++*:(”( }ã.*>{ã.('N*:(•( }ä.*0C{ß:{I Œm(ûrCpŒm(û(v”{ä.('N(y”*:(”( }å.*>{å.('N*0®s4N (rEmUQStN {Z= {\= {[=(S" þþ,+(ò þþ,*s6N þ(,+***tK{U=þ(-+*tJ{T={L=8RÿÿÿZ{L=þ(1N*0 VŸs8N s:N sN(\^(Ã+(.+(‡”(2N(/+(‡”(|”(|”þ(|”*tL{V=s@N{,<(i (f (Ã+(.+(‡”*tK  {U= o–(  (0+(‡”*(h”*tJ  {T=  {L=8ªþÿÿ6sHN*0     þ(0N*(—( *"(/N*(˜( *0o{c= o‡jþ*’(™( }æ.}ç.}è.}é.*0 #{æ.{ç.{è.{é.þ(1N*(Ê *joöl-{U;{`;þ**(Ê *"oßl*:(š( }ê.*B{ê.þ(âN*:(š( }ë.*B{ë.þ(âN*(Ý *"(Þ *(Ý *"(Þ *(p *0"+ (Þ (q (1j (n o:j*²(›( }ì.}í.}î.}ï.}ð.*0 L¡{c= {d= o|j (i{d: oj{d:sBN ($+{ð.{ð.{15(Q obo‡j,t{ì.{í.{î.{ï.(1N(/N,Grÿ?psDN ($+¥7 rS@p (p+(` (   Œm(ûþ(~”**{g:{y:Œm(û(ëN{g:{y:ob {ì.{í.{î.{ï. (1N sFN(1+9¡{ì.9“(ª þ,"rqpŒm(û(v” þ(|”*rqpŒm(ûrCpŒm(ûr@pŒm(û(v”(v”(v” (~”r!@pŒm(ûþ(|”* *rqpŒm(ûrCpŒm(ûr@pŒm(û(v”(v”(v” (~”r!@pŒm(ûþ(|”*0³¢oýlofm omj Œm(û {g:{y:(ëN {B5(c^-(z +(  (  rŠpŒm(û o…j(O(v”r)@pŒm(û(v”(âNþ(~”*Ns^N(.+(‡”*’r´9pŒm(ûs`N(2+(„”*0k£{Ñ:{I(¢– Œm(û sbNok(G+ (³ -(v”*r3@pŒm(û(v”(v”(LN(y”*0#rû³pŒm(û sdNþ(3+*0‡¤{ß:{I Œm(û ,{Ü:(ëN+ {Ô:,r9@pŒm(û(y”+ rx8pŒm(û(v”(f{×:(þN(y”*0X¥( kE %''''''*t {š: {Ê:ozko!( þ***0ަoüQ,rI@pŒm(û+(h” oùQ(…v Œm(û (foR(þN rW@pŒm(ûrx8pŒm(û (v”(v”(v”(v”*0ަoóR,rI@pŒm(û+(h” oòR(…v Œm(û (foùR(þN r¬pŒm(ûrx8pŒm(û (v”(v”(v”(v”*0#§onR,rI@pŒm(û+(h” ogR(…v Œm(û (foyR(þN ohRoiR,L,@r)@pŒm(ûr_@pŒm(ûri@pŒm(û(v”(v”+4(h”+,,ôr)@pŒm(ûrq@pŒm(û(v”r·¯pŒm(ûrx8pŒm(û (v”(v”(v”(v”(v”*0ƒ¨o›Qþo—QþoŒQo•Q ¥ý o¶ oï ,o· Ö+êÞu , oâ &Ü&Ü o•Qoõ sœ( *3R0 ª{,1 (mP (hP (P,(( +sjN('P(2+ (¡P(ºT(€Po;TslN(o+¥7sQ Þt (9+ÞsrNstN(4+ szNs|Ns~N((+(5+(6+ s€No:T(7+ s‚N(8+ s„N(9+s†NsˆN   (:+(:+(:+(;+(<+ofm{g:{q:( k35t{ :sŠNsN(o+(+(=++(( (P,(( +l(%P,U(• (^þ,:(• r;pŒm(û(f(þN(v”(( (ž( +((   (( (>+(>+(>+(>+(>+(Ÿ( þ,*{45  (( (>+(>+(>+(>+(>+(P(‡”-+9(d Œm(û(~”r!@pŒm(û(|”rCpŒm(û(v”þ(~”*w'ž0 ~«{B5 (j] (: (^,FsfNshNo:T(è +(?+(‡” rCpŒm(û(v” þ(~”*þ(UN*0\(Ÿ( þ,*,(‡”þ(|”*r)@pŒm(û(‡”(~”r!@pŒm(û(|”þ(|”*0 Ó¬{Ã: {g:{s:{Š: (ckEG(( +f,õ (• r;pŒm(û(f(þN(v”(( (ž( +'s¸NsºN{g:{s:{‰:(ô +(@+ s¼Ns¾NsÀNo¶j( +( +(A+sÂNsÄNo”j(_+(B+sÆNsÈNo”j(_+(B+(>+(>+(>+(>+(>+(>+(>+(Ÿ( þ,*{45(P {g:{i:(Ói3  (Ÿ( þ+,* (‡” - +8  (d   Œm(û (~”r!@pŒm(û(|”( ( *0 ±¯ (Ÿ( þþ,+ (PN {g:{o:ob  ( kE W<¾}–8×s²N {45 o”j(B+(P(‡”(P {g:{o:(ëN(WN( ( 8‡ t{˜:{Ã:(ck3st+{Á:{D= {Á:{C= {B5 (g^ r{@pŒm(û(fs´N (C+ (( (O(y”( ( 8ï{Ã:(ck3#s¶No”j(B+(‡”( ( 8½ (XN8¢{45o›j(NN(P(‡” {g:{o:(ëN(WN( ( +ar“@pŒm(û( ( +H t  {Ÿ: (f (þN( ( +  t  {:(·O( ( {g:{q:( k3+,P(¡( ,!rCpŒm(û(v”þ(~”*rCpŒm(û(v”(y”**0˜²s˜NsšNsœNsžNo¶j( +( +( +( + s N (D+ {g:{q:( k35t{˜:{Ã:(ckþ,{˜:(¢( +{g:{s:{‰:s¢N(ô +s¤N(@+s¦Ns¨N ( +(A+sªNs¬N ( +(A+s®Ns°N ( +(A+s£( (¤(  (¥(  (¦(  (§(      (>+(>+(>+ {g:{q:( kE ÝÝÝÝÝÝ{g:{r:9½(• rCpŒm(û(v”{/5{05{15{35{45{55{65{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb(f(þN(y”+( (WN+     (YN{g:{i:{g:{p:þ(ñN*0 ³{B5 omj Œm(û {g:{y:(ëN {g:{y:obo~j o…j(O(v”s`m(j^(¦ (^,,+=rÕ@p(c +0(^, rá@p(c +(^, rõ@p(c + o‰j, þ(VN* þ(ZN*0-µ{g:{l: Œm(û {g:{o:(ëN rApŒm(û(v”{g:{t: (ºkE5g_ t5{æ:rCpŒm(û(ìN(y”8†rCpŒm(ûrApŒm(û(y”+\(h”+T t7{è:otk(o -(h”+)r3@pŒm(ûsÊN(G+(LN(y”(v”*0 Ѷ(S" 9¿ (S" (S" -0(¨( {g:{t:(ºkþþ,(¨( (\N*(S" ,d (S" (¨( rŠpŒm(û([Nr+ApŒm(ûsÌN (E+(ž( (‡”*r3Ap Ysó z(h”*:(š( }ñ.*B{ñ.þ(JN*:(©( }ò.*R{ò.(f(þN*(Ø *"{×:*V(ª( }ó.}ô.*R{ó.{ô.(MN*(«( *NoùQoþQ(¨O*(l# *VoùQrëøp(ñ þ*r(©( }õ.}ö.}÷.*0 I{÷.{ö.(^,r;p+rá@p Œm(û{õ.(f(þN(y”*0D}ø.}ù.}ú.}û.}ü.}ý.}þ.}ÿ.(• *0È{þ.YE !'+*8Ï8ˆ8²8Z8+8D8i{ø.¥so˜! }ü.}þ.{ü.oï 9~{ü.o™! }ú.{ú.ohR,"}þ.{ú.o|RoŒQ}ÿ.*+{ú.oiR,"}þ.{ú.o}RoŒQ}ÿ.*+}ú.8rÿÿÿ}þ.{ü.(F+}ü.{ù.¥+on# }ý.}þ.{ý.oï ,Y{ý.oo# }û.}þ.{û.oöRoŒQ}ÿ.*}þ.{û.o÷RoŒQ}ÿ.*}û.+š}þ.{ý.(I +}ý.}þ.}ÿ.*0Ãe {þ.YE+8ž{þ.E ++G+0+,+&+ + ++2+}þ.{ý.(I +++}þ.{ü.(F+}þ.}ÿ. Þ t   Þ&8Hÿÿÿþ,z*Ц 0U{þ.E ++!++++ +++ *******"{ÿ.*0 {ø.{ù.slN*r(¬( }/}/}/*j{/{/{/(ÔN*(­( **r(¬( }/}/}/*j{/{/{/(ÔN*(®( *:(TNs¯( *r(°( }/}/}/*02Þ(x# (y# {/{/{/svNsxN(G+*(± **þoŒQ*:(¯ } /*Z{ /oŒQoh þ*r(±( } /} /} /*0 3oüQoùQsœ( { /{ /{ /(QNs¯( *r(²( } /}/}/*0 3onRogRsœ( { /{/{/(SNs¯( *r(³( }/}/}/*0 3oóRoòRsœ( {/{/{/(RNs¯( *(´( *"(µ( *(¶( *"(·( *(¸( *0 ;rðApŒm(ûrŠpŒm(ûŒm(û(v”(v”*(º *"oÿ†*(² **þo-‡*Ò}/}/}/}/}/}/(• *0 Ü{/YE +88€8¥{/{¬:sŒNrp-p{/o_ +¥o # }/}/{/oï ,@{/o # }/}/{/sŽN{/of +}/*}/+³}/{/(/ +}/}/}/*0‡e {/YE++e{/E + ++++}/{/(/ +}/}/ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{/E + + +++***"{/*0 {/{/sN*V(L }/}/*º{/{B8{/{E8{/{?8{Á;(i*:(¬ }/*0O·{/{55,*{/{B5 {/{B5{ä8 s–NoÆm {U;{a;(N+þ*:(¬ }/*0Z¸oÆm {U;{`;o³ {g; (Ö -* (Æ' {@= {/{>5,{/{B5 (^þ**(¬ *BoÆmoèlþ*(¬ *BoÆmomþ*(¹( *0‚¹oÆmoçlþoÆmoÚl{IoØm,&oÆm {U;{b;oE {3<o +oØm,oÆm {U;{b;oE oÁo+(V sº( *(? *0p(@ (A (B þ*:(»( }/*0 ?p(@ (A (B rá@pŒm(û{/(f(þN(y”*:(¼( }/*V{/oÆmþ(âN*(¬ *6oÆmoçl*:(¼( }/*V{/oÆmþ(âN*(¬ *roÆmoçl- oÆmoæl**:(¼( } /*V{ /oÆmþ(âN*(¬ *~oÆmoçl-oÆmoælþ**:(½( }!/*–{!/(ONr¸9pŒm(û(v”*(¾( *J{F=(ss»' *V(½( }"/}#/*0 |ºo®k ,k (œ rþApŒm(û{ß:{I  Œm(ûrBpŒm(û{#/{B5{"/(éN(v”(v”(v”*(h”*:(»( }$/*0 ?p(@ (A (B r;pŒm(û{$/(f(þN(v”*(? *0p(@ (A (B þ*:(¼( }%/*V{%/oÆmþ(âN*(¬ *6oÆmom*(¬ *0&aoÆm {U;{`;(Ð+{g;(Ö þ*:(½( }&/*0 ;rI@pŒm(ûrW@pŒm(û{&/(ON(v”(v”*(S *"{Ø:*:(½( }'/*–rW@pŒm(û{'/(ON(v”*(S *.{Ø:þ*(Ø *"{×:*²(¿( }(/})/}*/}+/},/*0 ){(/{)/{*/{+/{,/þ([N*0ïv{0 {0 {0 {0   u£-  u¡-+{B5(œ^- (N*,:(d (ð+ r BpsÏ (Ê+oì & (N* ,+(d rhWpsÏ (Ê+oì &(N*(d r€WpsÏ (Ê+oì &(N*0î¼o›Q- o—Qþ+,rBps‰ (0+&+o›Q,r(Bps‰ (0+&+9r6Bps‰ (0+&o‹Qo‘Q(NrFBps‰ (0+&o¬Q ¥ë(H+oÀ( -r: ps‰ (0+&+s×N(I+o§Q rNBps‰ (0+&(N*0˾o§Q oÏUo‰Q(k] (ìN (•”(@+ o›Q,rl^ps‰ (0+&+9rS@ps‰ (0+&o‹Qo‘Q(Nrl^ps‰ (0+&o¬QsÙNsÛN(J+rXBps‰ (0+&(N*0пu¹,oÏU(Q(¤ sB$ *t¸ {0{á/ {0{â/ {0{ã/ {0{à/{ 0{ 0oÏUo‘Q(](ß+(Ef(O oµ (K+  (ë   (ê   (ÍP(cQ sB$ *0eÁ(‡QEFø0tà {*0 o‰Q(k] (ìN (•” (@+rbBps‰ (0+&*tÁ{%0{/5{05{15{25{35{45{55{65{75{85{95{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sboÆm(âN (•” (@+*tÂ{(0(ÑN  (I$  (J$ (ÐN*o‘Q(](ÐN*fo‘Q(](ÏN*0)Âds% (ÓNo& Œm(û*V(Á( }-/}./*Ò1{./rhBps‰ (0+&+{-/{./(ÎN*V(Â( }//}0/*æ1{0/rNBps‰ (0+&+{//{0/sÕN(L+*V(Á( }1/}2/*Ò1{2/rz.ps‰ (0+&+{1/{2/(ÎN*:(Ã( }3/*B{3/(L+*0†Ã(¢– Œm(û {:5,0oÆmoýl(ìNrS@pŒm(û(v”(v”+ {65, (O+ oÆm{U;{_; (ëN*0 mÅ(H þ,d(FoÆmoÚl{Isû£ (¤(¥oÆm om(¡– Œm(û(y”rpBpŒm(û(y”*(H ,f(I (q ,T(I (q (q -=(H (H -/{B5(‡ (f (^,(‡ (f (½' +  ( O(Ä( (Å(   oÆm om(¡–(ÝN  rx8pŒm(û (H þ,+rpBpŒm(û(y”(v”(v”(y”*0 <Ço÷ .+oú (q þ,d(GoÆmoÚl{Isû£ (¤(¥oÆm om(¡– Œm(û(y”r‚BpŒm(û(y”*oú (M+ (Æ(  (Ç( (q þ,(½' + (½' (¾' (f ( O(Ä( (Å( oÆm om(¡–(ÝN  rx8pŒm(ûr‚BpŒm(û(y”(v”(v”(y”*0ZÈsÁm oÆm {U;{`;(Ð+ {i;(íN {B5(b^(F (G {i;{AL(&E[[ÄÓÂ( O(Ä( (Å(   oÆmom(ÝN  rx8pŒm(û(v”(v”(y”*( O(Ä( oÆm {U;{_;rKpŒm(û(ëN  (w”rx8pŒm(û(v”(v”* * (ÞN* (ßN*0øÊ(¤ (¥ (f {ã7 {B5(àh {3<{U;{X;(ü] (Ó (Ô om(¢–Œm(û{U;{_;(ëN{U;|\;(ºi(€iþ, {95þ+,r9@pŒm(û(w”+ {U;|\;(¹i(½h, {85þ+,r”BpŒm(û (w”+  (:^(2^(K^{m=o` o† o† þ oól  ,+ ,+{65,  (O+  rW@pŒm(û rx8pŒm(û(y”(v”(O(y”{D5oÈ( ,-(¡( rCpŒm(û(w”(y”**0ÞË{U;{`;, (àN8§om (  (? {B5{U;|\;(¶i (•^{B5(Cf(É( (¤ (Ê( {B5  sãN{B5  såNsçN(](N+(+(O+  (áN (Ïi{U;{a;þ(ñN*:(Ë( }4/*:{4/(Y]*:(V }5/*:{5/(c]*:( }6/*:{6/("]*0"Ì(ønE%‰ñYÁ$Œô\Ä,†×C8¨t¡ {à;, rªp8¥r´p8št¢ {á; Œ÷,4u¼,(x ¥|o¡ +o& +rR9pr¢Bp( 86t£{â;  Œ,4u¼,(x ¥|o¡ +o& +rR9pr¦Bp( 8Ît¤  {ã;  Œø,4u¼,(x ¥|o¡ +o& +rR9pr¬Bp( 8ft¥  {ä;  Œ€,4u¼,(x ¥|o¡ +o& +rR9pr°Bp( 8þt¦{å;Œ’,:u¼,(x ¥|o¡ 8·o& 8¦rR9p8›t§{æ;Œô,4u¼,(x ¥|o¡ +o& +rR9pr¶Bp( 83t¨{ç;ŒÁ,4u¼,(x ¥|o¡ +o& +rR9prºBp( 8Ët©{è;Œõ,4u¼,(x ¥|o¡ +o& +rR9pr¾Bp( 8ctª{é;ŒÁ,4u¼,(x ¥|o¡ +o& +rR9pr¡cp( 8ût«{ê;Œõ,4u¼,(x ¥|o¡ +o& +rR9prÄBp( 8“t¬{ë;rÊBp(x ¥|(Ì( s O(ä ,rÒBp( +rØBp( 89t­{ì;rÊBp(x ¥|(Í( sO(ä ,rÒBp( 8ð8èt®{í;rêpþo& ( rêp( 8°t¯r*8p{î;( r*8p( 8‡rbBp8|t°  {ï;!!Œñ,4u¼,(x ¥|o¡ +o& +rR9prÜBp( +(^,ràBp+r´öp Œm(û*0.Í{ø: ( -(Î( *(P+,(Ï( *(Ð( *0¥ÐsO {C5 (êN uï- uð-Q*(êN uð- uñ-+ßrêBpŒm(û(w”*rbÏpŒm(û(w”*(êN uñ,ŸrbÏpŒm(û(w”*0ÕÑ{/5,ofmomj+Iofmomjofmomj(ñ ,ofmomj+ofmomjrüBp( Œm(û {25,*ofmoj(i {/5,+ sO(+  (€^rR9p(ñ ,*Œm(û(v”*0ÙÒ{=L,+{AL ( (n o*,(h”+rI@pŒm(û {>L,rCpŒm(û(w”+${?L,rCpŒm(û(w”+ {?L, *{AL(&E * r·¯pŒm(û(w”*0 Ó(îoEzë{B5(¯^ ,<(• r,CpŒm(û(Or6ÚpŒm(û(v”(v”*{B5(±^ ,;(• r+(„”(P(v”*0~ÖrÓŽps (þ+ sAO{?5,({;|û:(j(m‰3rºCp+rêp+rêp{75, (m^+rR9pol(+ Œm(û*0¯×(óN {=5,%{;|û:(j{;{þ:(òN+ {â7oÑ( ,c (• {á7o¯ , rÈ:pŒm(û(O(v”*rRCpŒm(û(O(v”(v”(…”**0ÔØsEO(S+ sGO(T+ (Ÿ( -(h”*{@5,rÀCpŒm(û*{;5,Zrl^pŒm(ûræCpŒm(ûr+ApŒm(û(„”rR^pŒm(û(v”(v”(v”*røCpŒm(ûr+ApŒm(û(„”(v”*š(ôNrx8pŒm(û(v”(v”*0 *Ù(@lE fHElüD‘Ð<„Ì´tB {; (ôNrRCpŒm(û(O(y”(v”(( (ž( *tE {;  (øN(( (ž( *tC{; {A5,Lr´öpŒm(û(ôNrDpŒm(û(O(v”(v”(v”(( (ž( *(( *tJ{; {;5,rÉûpŒm(û(( (ž( *rÉûpŒm(û(¤ (¥ (üN(öN(( (ž( *{;5,rDpŒm(û(( (ž( *rDpŒm(û(öN(( (ž( *{;5,rDpŒm(û(( (ž( *rDpŒm(û(öN(( (ž( *tM{#; {";{;5,r0DpŒm(û(( (ž( *r0DpŒm(û(¤ (¥ (¥ (üN(öN(( (ž( *ràBpŒm(û(öN(( (ž( *{;5,rBDpŒm(û(( (ž( *rõ@pŒm(û(öN(( (ž( *{;5,rXDpŒm(û(( (ž( *rXDpŒm(û(öN(( (ž( *{;5,rlDpŒm(û(( (ž( *rŠDpŒm(û(öN(( (ž( *tH{; rû³pŒm(ûsIO (2+(„”(…”(öN(( (ž( *{;5,r DpŒm(û(( (ž( *rÈDpŒm(û(ôN(v”(…”(öN(( (ž( *0 lÚ{3; {7; {4; {5; {6;(¢–{;5,r6Bp( Œm(û*{B5(g^ (íN{B5  sKO(Å +  (³ ,N   (³ (³ - (´   (O+-  ræDpŒm(û (ÿN(…”+  +×rx8pŒm(ûŒm(û(w”rx8pŒm(ûr´9pŒm(û(ÿNrìDpŒm(û(y”(O(y”(y”(v”(…”(y”(v”*>sÒ( þ(U+*>sÓ( þ(V+*0 iÞsOO sUO sYO(4] o +¥õ (W+(l + (×# (Ö# s[O{B5(6]o +¥ö(X+(Y+(Ô( (Õ(  s]O (Z+s_O([+(>+(ƒ” saO(Z+scO ([+(>+(ƒ” (Í# -/ (Ø# -& (Í# -(Ø# -ròDpŒm(û* * r‡pŒm(ûoÖ(  o×( X11rl^pŒm(û rR^pŒm(û(v”(v”+ (v”(v”*0 ß9¡(³ 9“ (³ (³ -C(´ r@-pŒm(û(þNr6ÚpŒm(û(v”(v”(v”* þþ r:pŒm(û(ÿN(P(v” ,(…”***(³ ,g (³ (³ -(´ (þN(v”* þþ r:pŒm(û(ÿN(…”(y” ,(…”***0 ià(i ($n3Gtx {†; {…;  (þNrìDpŒm(û(v”(y”+§(þN(y”*0iá(i ($n3dtv {‚; {ƒ; o£m,{B5seO (å++,+{‚; {ƒ; {B5 (N]8Šÿÿÿ($nE±mr4Ÿ¶tv{‚; {ƒ; (ìNofmo…j (üN*ty{‡;{t; {ˆ; (ìNofmo…j (üN*tw{„; þþr´9pŒm(û (ÿN , (…”* *tu  {€;  {;  (þN  (¨ 9Œ   (¨ (¨ -0 (· (ôNrS@pŒm(û (y”(v”* (¨  (· sgO(u! (“+(ƒ”rS@pŒm(û (y”(v”* *þþ(h”(ýN , (…”* *tz{‰;(ôN*t{{Š;(ûN*^siO(2+(„”*.(þN*>(f(þN*0•ä(þN (õN (H -(y”*soO {<5,rx8p+rìDp sqOssO(\+r´9pŒm(ûsuO(]+(^+swO(_+(y”*0¿ås{O(`+ (¨ 9 (¨ (¨ -%(Ø( --(· (f(ôN(y”*(f(õN r:pŒm(ûs}O(“+(„”,+ (Ø( þþ, (y”(P(v”*(…”(y”*(Ø( -*0$æ(f(÷N (Ÿ( -(h”*(Ù( *0Eç{B5(Ef (O (Ú( (f  sO(2+ {ã7(õNsÛ( *01èsO sƒO(a+(¥ (f {ã7(O*0Bê{B5(Ff (Ü( (Ý( (Þ( (Ü( (ß(  (½' (¾' (O*0Oì{B5(Gf (à( (á( (à( (â( (ã( (à( (ä( s‡O (b+(O*0iîs‰O(c+(9f (z (º' ("] sO(d+sO(e+s‘O(/+ (Oså( *0Xï{B5oÆm(c^ -(z ¥‰(.+(Oså( * (  (À' (  (   ( O*0gð( O (Ä( (Å( (¢–Œm(û {65,  (O+ rx8pŒm(û(v”(v”*0Oñ{B5(Cf (¤ (Ê( (¤ (¥ (f  {ã7(õN (þN(y”*(Ñ *F(æ( ,*-þ*(Ñ *F(æ( ,*-þ*(ç( *~{c:uu-,{d:(ª þ**( *0#,oM .oL rüBp( **:(”( }7/*:{7/(îN*:(è( }8/*N{8/{È;(îN*V(L }9/}:/*º{9/{B8{9/{E8{:/{?8{Á;(i*:(L };/*F{;/oÉ þ*V(L }/*F{>/oÉ þ*V(L }?/}@/*º{?/{B8{?/{E8{@/{?8{Á;(i*:(L }A/*F{A/oÉ þ*V(L }B/}C/*º{B/{B8{B/{E8{C/{?8{Á;(i*:(L }D/*F{D/oÉ þ*V(L }E/}F/*º{E/{B8{E/{E8{F/{?8{Á;(i*:(L }G/*F{G/oÉ þ*V(L }H/}I/*º{H/{B8{H/{E8{I/{?8{Á;(i*:(L }J/*F{J/oÉ þ*V(L }K/}L/*º{K/{B8{K/{E8{L/{?8{Á;(i*:(L }M/*F{M/oÉ þ*V(L }N/}O/*º{N/{B8{N/{E8{O/{?8{Á;(i*:(L }P/*F{P/oÉ þ*:(é( }Q/*:{Q/(ðN*:(é( }R/*:{R/(ðN*:( }S/*B{S/þo *:(` }T/*0{{T/oa s=O*:(b }U/*0|{U/oc s?O*V(ê( }V/}W/*0 jò(ë( (ì( {W/(@l3L{W/tE (@l37tE {;{;(a{V/{B5(!a(w]**:(í( }X/*0ó(ë( (ì( {X/sCO*V(î( }Y/}Z/*0#ó(ë( (ì( {Y/{Z/(÷N*V(©( }[/}\/*R{[/{\/(O*:(8 }]/*F{]/þ(ƒ]*(ï( *0ô(ð( (ñ( ol*( *2sò( Œþ*:(ó( }ô( *0ö{ô( (f+*(õ( *0÷(ö( (÷( ofmomj*( *2sø( Œ*:(ù( }ú( *0ù{ú( (g+*(o$ *0|(Ï# (Ð# þ*(p$ *0~(q$ (r$ þ*:(û( }`/*0Uú(Ï# (Ð# 3 {`/(óN*{`/(óNröDps@ (©+o  Œm(û(x”*:(ü( }a/*0Uû(q$ (r$ 3 {a/(ìN*{a/(ìNröDps@ (©+o  Œm(û(x”*:(û( }b/*0Vú(Ï# (Ð# 3 {b/(óN*{b/(óNröDps@ (©+eo  Œm(û(x”*:(ü( }c/*0Vû(q$ (r$ 3 {c/(ìN*{c/(ìNröDps@ (©+eo  Œm(û(x”*:(V }d/*:{d/(<]*V(È }e/}f/*R{e/{f/(ôN*r(©( }g/}h/}i/*j{g/{h/{i/(þN*V(L }j/}k/*º{j/{B8{j/{E8{k/{?8{Á;(i*V(L }l/}m/*º{l/{B8{l/{E8{m/{?8{Á;(i*V(ý( }n/}o/*0 –ü(f (g {n/{B5 {n/{B5{ 9 skO{5<(N+ {n/{B5 {n/{B5{á8 smO{5<(N+{6<{n/{B5(œ^-{n/{o/(þN*9Ö,g  (•  (¶  rWp {I(   Œm(ûrx8pŒm(û{n/{o/ (þN(v”(v”* (¶   ,rEp+rR9p {I(   Œm(ûrx8pŒm(û{n/{o/(þN(v”(v”*(¶   +“:(þ( }p/*j{p/Œm(û(v”*:(ÿ( }q/*B{q/þ(h+*:() }r/*:{r/(„”*() *&(y”*:() }s/*:{s/sŽ( *() *jsyO{;{;þ(i+*:(È }t/*N{t/(f(ôN*V(©( }u/}v/*V{u/{v/(þN*(Ü *0~(f (g *:(± }w/*B{w/þ(Ã+*V(V }x/}y/*0Rý{x/{B5 (O]($nþ,0{x/{B5(X] {y/{;{ü:{;{ü:þ**V(ê( }z/}{/*0*ó(ë( (ì( {z/s…O{{/(§ +þ*:() }|/*ú(:f,$rEps@ (©+{|/o) Xþo  *{;{ù:{I*:() }}/*0"~(f (g {}/("]s»' *V() }~/}/*0F(q þ,%{~/{B5{¥8(ss»' (r (¼' *{/s‹Oþ(j+*() *"(Ý' *:(Œ }€/*N{€/(i("]*ºs¹Ooö²o÷²(²([ (\ (Ÿ+þ(k+*0^þ(] ,\ (^ r Fp(ñ ,H(] (] ,;(] (^ rEp(ñ ,)(] (] -r: p([ (\ 8 8™(^ r"Ep(ñ ,"(] (] -Úr[ñp([ (\ 8e(^ r0Ep(ñ ,"(] (] -¦r>Ep([ (\ 81(^ rLEp(ñ ,%(] (] :oÿÿÿrZEp([ (\ 8ú(^ rjEp(ñ ,%(] (] :8ÿÿÿrxEp([ (\ 8Ã(^ r„Ep(ñ ,%(] (] :ÿÿÿr”Ep([ (\ 8Œ(^ r¤Ep(ñ ,%(] (] :Êþÿÿr®Ep([ (\ 8U(^ r¸Ep(ñ ,%(] (] :“þÿÿrÂEp([ (\ 8(^ rÌEp(ñ ,%(] (] :\þÿÿrØEp([ (\ 8ç(^ räEp(ñ ,%(] (] :%þÿÿrðEp([ (\ 8°(^ rüEp(ñ ,%(] (] :îýÿÿrFp([ (\ 8y(^ rFp(ñ ,%(] (] :·ýÿÿrFp([ (\ 8B(^ r(Fp(ñ ,%(] (] :€ýÿÿr6Fp([ (\ 8 (^ rDFp(ñ ,%(] (] :IýÿÿrRFp([ (\ 8Ô(^ r`Fp(ñ ,%(] (] :ýÿÿrnFp([ (\ 8(^ r|Fp(ñ ,"(] (] :ÛüÿÿrŠFp([ (\ +i(^ ržFp(ñ ,"(] (] :§üÿÿr®Fp([ (\ +5(^ rÄFp(ñ 9€üÿÿ(] (] :püÿÿrÔFp([ (\ (ò+ (˜ (— {25,Œm(û*(€^Œm(ûŒm(û(v”*:(“O(”O*0(…v (€–,(¢–**0Eÿ{É]o³{ Z {ÜY(º²þ,*{Ê]o³{ Z {ÜY(º²þ*0k{ÅY rÞFpŒm(ûs»O(l+(m+ ¥7 rR9p (p+(` Œm(ûrâFpŒm(û(v”(v”*>s½Oþ(n+*0D(Ÿ( -(h”*(” r@-pŒm(ûr6ÚpŒm(û(v”(v”*0R(£–(×+  (x ¥|( ) s; (< , (= + (o+(p+þ(o+*00(,³E <zˆ¢°Èår: pŒm(û*t‰- {ùY {øY (œO(˜O(v”*tŠ-{úY o ³(“O(”Os¿O o³(q+(šO(v”*t‹-{ûY +ÀtŒ-{üY 8/ÿÿÿt-{ýY +ätŽ-{þY(O*t-{ÿYiþ(r+*t-{Z8Ðþÿÿ0÷sÁO{ Z(q+ -{Z(œO+, (d  (²(£–(”O (›O(šO(v” (Ÿ( ,m(Ÿ( (Ÿ( -((Ù( rìDpŒm(û(v”(v”*r´9pŒm(û(„”rìDpŒm(û(v”(v”*r: pŒm(ûrìDpŒm(û(v”(v”*0ï{B5{á8{t](‘^ {m] {s] -rx8pŒm(û8› ,1 (d rWp( rx8p( Œm(û+e,= (d ræFpŒm(ûrx8p( Œm(û(v”+% (d rx8p( Œm(û{n](œO(v”*0÷- (œO+, (d (²(£–(”O(›O(šO(v” ( 9 ( ( -. (€ (žOrìDpŒm(û(v”(v”*r´9pŒm(ûsÃO(s+(„”rìDpŒm(û(v”(v”*r: pŒm(ûrìDpŒm(û(v”(v”*0< {Á](™O (>+ {«](–O {¬](*ºþ,"rKpŒm(û(c s ) 8“{¬](*ºþ,MrI@pŒm(ûr·¯pŒm(ûŒm(û(šO(v”(v”(v”s ) +5r·¯pŒm(ûŒm(û(šO(v”(v”s ) ( )  ( ) {®]{¯]{v](ŸOrx8pŒm(û(v”(v”*0‡¤{Ü],rI@pŒm(û+(h” {Ú](…v Œm(û {Û](œO rW@pŒm(ûrx8pŒm(û (v”(v”(v”(v”*0¢ (—O,rI@pŒm(û+(h” {Æ](…v Œm(û {Å],(p (œO+(h” r¬pŒm(ûrx8pŒm(û (v”(v”(v”(v”*¾o³(q þ,o޳(œO*o³(O*0z o³ (q þ,(h”*(t+ ( ) () sÅO (q+r´9pŒm(û(„”rìDpŒm(û(œO(v”(v”*0x{Ô] (¸² (n oÁ²,rI@pŒm(û+(h” {Ï](…v  Œm(û{Ó]{Ò],() (£O+',() (¤O+{Õ](œO{Ó]{Ò],L,@r)@pŒm(ûr_@pŒm(ûri@pŒm(û(v”(v”+4(h”+,,ôr)@pŒm(ûrq@pŒm(û(v” r·¯pŒm(ûrx8pŒm(û (v”(v”(v”(v”(v”*0Ö ( (&¸E(cÏ-•oÛ9*t. {J\, rªp(c *r´p(c *tŽ. {K\rêpÑþo& ( rêp( (c *t.{M\Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9pr¬Bp( (c *t‘.  {N\Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p(c *t’.{O\ŒÁ  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9prºBp( (c *t”.{Q\iŒ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9pr°Bp( (c *t•.{R\nŒÁ  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9pr¶Bp( (c *t–.{S\ŒÁ  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9pr¾Bp( (c *t—.{T\rÊBp(x ¥|(Ì( sÇO(ä ,rÒBp( +rØBp( (c *t˜.{U\rÊBp(x ¥|(Í( sÉO(ä ,rÒBp( (c *(c *0o-+ (¦O ,- (d rCpŒm(ûŒm(û(v”*rCpŒm(ûrôFpŒm(û(P(v”*07rû³pŒm(û(…v Œm(û(§O(v”(v”*N{Ú]{ß](¨O*0c{Ó] {Ò] -+-* () o³{ Z{ÜY(º²þ* () o³{ Z{ÜY(º²þ*0{°] (ü· (n o¸*08¿{É](²(«O,{Ê](²(«O Þ Þ t  Þ*+, 0[{Ó] -({Ò] , () (²(«O Þ) Þ% () (²(«O Þ t Þ*MN 0-{°] (ü· (n o¸,{¬](*ºþ**.{»]þ*0{Ý] (ü· (n o¸*04{^  uý.- uÿ.-**tÿ. {^(þ·þ*V{Ú]rëøp(ñ þ*~ /*j(³O(“”(È+oh þ*07-(‡”* (¡( (Ÿ( -(h”*(‡”(~”þ(|”*0{^ sËOsÍOsÏOsÑO¥Ÿ(‹+(u+(v+(w+ sÓOsÕOoøº(x+(y+ s×OsÙOoàº(z+({+ sÛOsÝOoκ(|+(}+sçOséOsëOsíOsïO¥Ÿ(‹+(u+(u+(~+(+(€+sñOsóO (+(‚+(ƒ+(>+(>+þ(>+*0 {^(™O {^(…»Ej¢3{^(…»E (rWps\ z+rõ@pŒm(û( ( + {(^ -(( +Z (p (œO(³O(“”(È+oh -%r;pŒm(û(v”(( (ž( +(( sõO{,^oøº(x+(t+(*±s÷O{)^  ¥Ÿ(‹+(u+(š°sùO{0^oàº(z+  (í+(2±sûO{/^oκ(|+  (î+(.±(¶OsýO{,^oøº(x+(t+(*±sÿO{)^  ¥Ÿ(‹+(u+(š°sP{0^oàº(z+  (í+(2±sP{/^oκ(|+  (î+(.±(¶O  (>+ {45 (PsPsPs P{&^¥²(v+(w+(„+(…+r!@pŒm(û(>+(>+þ(µO*{45s Ps P{,^oøº(x+(y+(P(h”þ(µO*sP{)^  ¥Ÿ(‹+(u+(} ,(~ o²º(O+rGpŒm(û(Pr0DpŒm(ûr3@pŒm(û(v”(v”*r^GpŒm(û(P*0Õ{^(…v Œm(û {^(™O {^(›O(šO {35,4rðApŒm(ûrŠpŒm(û (v”(v”(v”*rðApŒm(ûrŠpŒm(û (v”(v”(v”(·OrCpŒm(û(v”þ(~”*(Ò *"(°*() *r:p*() *0 rêp{¤]( Œm(û*V() }/}‚/*R{/{‚/(œO*V() }ƒ/}„/*R{ƒ/{„/(œO*V() }…/}†/*R{…/{†/(žO*V() }‡/}ˆ/*R{‡/{ˆ/(œO*(Ñ *F(æ( ,*-þ*(Ñ *F(æ( ,*-þ*r() }‰/}Š/}‹/*j{‰/{Š/{‹/( O*() **() *>{®]þoé" *(ø *"(®O*V() }Œ/}/*R{Œ/{/(¡O*() *"(°O*V() }Ž/}/*¾{Ï]{×]oþ s˜ {Ž/{/(¥Os) *:() }/*:{/(­O*V() }‘/}’/*R{‘/{’/(¢O*:() }“/*:{“/(¬O*r() }”/}•/}–/*j{”/{•/{–/( O*:() }—/*V{—/() þo ) *(!) *:(") s) *(#) *"(") *r($) }˜/}™/}š/*0J(%) (&) {™/{^ {˜/{š/ sßO sáOsãOsåO(†+(‡+*(') *6(") (C *(() *z{«]{®]oé" s˜ s)) *(ø *.{»]þ*(ø *"(«O*(*) *"(+) *(,) *"(-) *() *"{Ü]*(ø *B{¬](*ºþ*() *"(ªO*() *"(—O*() *.{Ü]þ*(ø *R{¬](*ºþþ*() *.(ªOþ*() *.(—Oþ*:(.) }›/*B{›/þ(¸O*(/) *6{^(…v*(© *"(±O*() *N{Ú]{ß](¨O*() *V{Ú]rëøp(ñ þ*(ø *J{«]r$æp(ñ *6,(…”**¾r€GpŒm(ûr†GpŒm(û(v”(v”*¾r@-pŒm(ûr6ÚpŒm(û(v”(v”*¾rÙøpŒm(ûrpŒm(û(v”(v”*¾rŒGpŒm(û(w”r’GpŒm(û(w”*RŒm(û(P*0D(Ÿ( ,6 (Ÿ( (Ÿ( - (Ù( *(Ÿ( (Ù( sPþ(ˆ+*(h”*0Z°(^,+(^,+{n8 sP(¡P(-P,*{9 s P(¡P(-P*0UŒ,P (Õ o0) þ,<(Õ ¥ (‰+(Š+r˜GpŒm(û(( (ž( þ(>+**"(…v*0 ({ 9 ({ ({ -!(| o1) (‹+(H" (i *(| ({ o1) o™ YE (À+(¿  Œm(û(x”(‹+(H" (i *(H" *() *&(v”*V(V }œ/}/*R{œ/{/(2P*V(V }ž/}Ÿ/*R{ž/{Ÿ/(2P*0HrÓðpr"Epr GprÂGpr[ñp([ (\ (\ (\ (\ (\ ¥7sQ € /*J(ú°(¶U*Ž(O]($nþ, (k]o}m**0#(O]($nþ,(k] ofmo‰j+, (O]+(R] (^ u·-Uu¸:©t¹ {5{¬:s‰PoŒ+,( (¼U( **t·  {5  {5 (j]  (;   {(^,%(p   (ú°(¶U( **(`],+($P,/(j]  (: (s]ofm(^("]( *(^, {«8( *(^, (^þ+, {¤8( **b{ü8(¤ (¥ (n*0#$(O]($nþ9å(j] (; (: o£m,& þs‹P(· +8§(^  u·-0 u¸-[t¹{5s“P(· ++at·{5 {5  s™P {'^(++- ofmoµj (s]  s›P (N++(¤ (^,(^(&P(¥ **0 g((4) (5) (6) s7) s8) (O]($nþ,((k]ofm{g:{k:(Ž++,s¯P(k](9) (§ ++,*,(¡P  (n oªP+,*(O]($nþ,9(k]ofm{g:{k:oû (:) s8) + d15(“”([e(È+(ˆsû£ (¤ (¥s8) *(^,8 Xo;) ('P{¤8 (+(+8¥(O]($nþ,J(X] X{¤8 (+s<)  {;{;(‘++G, Xo;) ('P (++  Xo;) (%P(’+  (4)  (5)  (6) (“+s8) *0 8*    (¥ +(>) s8) (+(6) *0 (”+*0 (”+*0 s³P(•+&*0 sµP(–+*0 (¡Ps·P(—+*0 +s¹P s»P(¤ (5 +*0 -+s½Ps¿P sÁP(¤ (5 +þ(+*0M(O]($nþ,(O]($nþ+, {B8{E8(k](k](i**Â(O]($nþ,{B8{E8(k](i**bsÃP(¡P(-P*bsÅP(¡P(-P*f(ß+(ú°(¶U*¦(,³3*(ß+(ú°(¶U( *nsÉP{;{;þ(˜+*0­,o† oµ o† o† .(gsû£(¤(+&+ . (gsû£(¤(+&+((](? (@ (Š+(™+sËP(š+s?) *0/-oÆm {U;{`;o³ {i; {>L,*{?L*0F.oÆm {U;{`;o³ {i; {>L-{?L,*{g;(Ö þþ**0%#oÆm {U;{`;o³ {i;{>L*09aoàm,oÆm {U;{a;(c`+,oÆmoßlþ**bsæP{6<(O+(àP*NsèP(f^(›+*0O{å/ {ä/("](àP*:sêP(œ+*0hO( ^,(’^ (AP(øP*(^,8{â8{t](‘^,(ôP*{ã8{t](‘^,(öP*(òP*(ðP*0 l/{s],\{o] , ( (îP( Q* (¤ {n](ß+(ú°(¶U(AP( Q*(Q*0¬0ok o@) ,rëøpoO oP + (+:i(ž+:N(Ÿ+:3( +:um ,  ( ¸*(¡+:é(¢+:Î(£+:³(¤+:˜(¥+:}(¦+-e(§+-M(¨+-5o& ÞtrWp Þ (¸sû£(¤(Ú+*¥õ(¸*¥Á(¸*¥ô(¸*¥’  (¸*¥€  (¸*¥ø  (¸*¥  (¸*¥÷  (¸*¥Ñ(¸*¥ó( ¸*¥æ("¸*¥ö( ¸*· Áj(ð+,($¸*(CP*05O( ^,(’^ (EP(øP*(^,(òP*(ðP*0Z1s"Qoæ+,Es$Qo¾ + ,(DP(îP( Q* s&Qoä+(¼U (EP( Q*(Q*0Q2sA) o©+ (ª+ ,6sC) o«+sE) o«+s~ o¼ sû£ (¤(¬+**0q*s.Qo­+,s0Qs2Q(®+*s4Qo­+,s6Qs8Q(®+*s:Qo­ +s  u-3 u:§t {r0 {g0{Æ] ,( **t {p0 {o0 {n0(RPoÆmom oÆmomsH)  bX, ( +a  b X, ( +a*t  {u0(‡*0å@(‡QEUµt {(0 {)0 u¸,-t¸ {0oÝPoGQoFQ(cQ*rÖGps\ ztÁ{%0{$0{&0 {#0("](Q*tÃ{+0{*0("](ƒQ*(I) -*ròGps\ z^(Š+(Š+þ(™+*0SAs2So°+,s4SoU ++o±+s6So€ + (¼U oÏU( ^,*( *0FBoÆm(c^ -* (  (  oÆmoýlo~m((] (@ (&]*†s8S{6<(O+{5<(öq*R(æq(']*0BCo‘Q (] o¨Qo¦Qo‰Q(n] o­Q(Š+( S*0ªDo‹Qo‹Q(ñ ,o˜Qo˜Qþ+,,+ožQožQþ+,^o‘Q (] o‘Q (] o¨Q o¨Q(%as¨SsªS(²+**ÞogRogR(ñ ,s¬So{Ro{R(w +**0 ˆE([P,u(ZP {Ì0 {Í0 (ZP {Ì0 {Í0,5,,(• (•  (%a þ(}]**þ**º(\P,oyRoyRþ(]**0 ²Fu¹,?t¹ { 0oek, { 0 +cu¹,+VrHp O só zt¸{0 {ã/{^(…»E+ oQQoRQ,.oFQ{«]rŽ<p( s¤(¤(+&+-þ+, oTQ+oSQo^Q , (Äqþ+ , o]Q+ obQ oLQ -! o޳(³(n o3³+,(¤ +  (¤ (¥  o_Q    (Ðp(¤ (æo sY *0XG{@8{˜^(= (]°o¬³ (¾q(¤ (¤ {¤8(¤ (¥ (Ðp(¤ (k (æo*0Hoè <³rÃHpŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( rIp( oè Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( s¤ (¤(+&+(m+(ø (ù sØS(u+  (³_(V](@ sK) sL) *0ñJoÆm(àhoÁo sÞSsK) (³+ (M) (N) (M) (O) (P)  (Ê þ:{r-Ip oè Œ’,4u¼,  (x ¥|o¡ +  o& +rR9p( rEIp( s¤(¤(+&+sY (ú (x_sY *0 K(Òo oÆm {U;{Z; oÆmom (   (? (n](ß+o† oµ .r›Ips¤(¤(+&+(y_(Š+("](bP*0 ;L(¼q (‡QE6mˆt {(0 {'0 ošQþ (_P(ù *tÁ{%0{$0{#0 (cP(ù *tÃ(ön{+0(Ðo*tÄ  {-0  {/0  {.0    (½U  sàS o°+ sâS o°+  (¤ o¦Q(‡ + (¤ (¤ (Ðp(¤  (æo*0pNofm {g:{s: sQ) ,1 (d ofm {g:{s:{ˆ:(´+þ(µ+*ofm {g:{s:{ˆ:þ(¶+*0@, (d (ñ **žoÆmom(fP,(Q(Q **0 1PsæS(^   u·-v u¸:Ät¹ {5 {¬: - sèSr†<po·++!(d  sìSr†<po·+sîS(. +8”t·{5(ßP {)^  sôS, (d o¹º+  ¥Ÿ(‹+(¸++:(O]($nþ-(‰ +  söS(k](¹+þ((+*0ogR ,( **0 gRsT(^ u·:žu¸:åt¹ {5 {¬: - s Tr Jpoº++C(d  s To»+(¼+, Å+Å%¤Ås T¥(½+(¾+8žt·  {5 (ßP  {0^  sT, (d oáº+ oàº(¿++K(O]($nþ-(O +/søS  sT(k](À+ oúSþ(7 +*0îS,E (s" (T35(s" tw (K þþ,{"1 (R) (T(S) *(K þþ,(T) (R) (T(S) *(v" þþ, (T(S) *(t" þþ, (T(S) *(U) þþ,9(U) ,% (U) (U) - (V) (T(S) *r%Jps\ z*08T(ßP s¦Ts¨T{ã/{)^rúåpo¹º(u+þ(¸+*0 ÆU{+1 {,1 (O]($nþ9›(^ u·-7u¸-8t¹ {5{¬:s¬Tþ(. +*(lP*(k]s²Ts´Trúåpofm{g:{s:{ˆ:(´+(Á+þ(Â+*(‰ *JsW) þ(2+*F(X) (Ã+sY) *0GW(& ,/ (& (' (Ä+  (Å+ oZ) *(X) (Ã+sY) *0Z  (Ä+{[) *0K[(& ,5 (& (' s\) (2+  oZ) +Ã{[) þ(Æ+*0]  (X) (Ã+sY) (Ç+*>s]) (È+*–o} , o} +, þ(É+***s_) *0 b_s`) (¼T39sa) sb) sc) sd) (Ê+(Ë+(È+*se) (Ê+(Ì+*0 2`sèTsêTsìTsîT(a sðTsòT(Í+*0 2`sôTsöTsøTsúT(a süTsþT(Î+*0#asUsU(Ï+ ¥µþ(Ð+*0*bsU(a sU(Ñ+ ¥*þ(Ò+*0 ${+1{,1o7T(xP*0 ${+1{,1o8T(yP*>þo9T*0 a(|P ¥µþ(Ð+*0 c(}P ¥*þ(Ò+*0¤eo=T -* (s" (TE7(S) *tw {"1{+1{,1(yP(T(S) *tv{!1{+1{,1(xP(T(S) *0 (c (¡P(¸T(P*0 (c (¡P(¸T(€P*0 Ef{+1 {,1 r$æp(c (¡P(¸T(P (¢ -(’sû£(¤(++E (¢ (¢ -(£ +&(£ (“s¤(¤(¥ (¤ o¨Q(x ,   (x (x - (›   +(”sû£(¤(Ó+(³ -{¥8(¤ (¥ + (¤ o§Q (à +(Ë+& sU  (‚+(U*0bg{+1 („P {Ê1 {É1 (³ ,8 (´ (^,&(´ (³ (l_s— (˜ **0O{,1oùR (…Pþþ*0Gh{,1 oùR (…P -oòR(KP (¤ (Œ+*(ª (A *0'i{+1 {,1 oùR(‡P(«_*(f) *0Æo‡ ,(‡' **0l}¢/}£/}¤/}¥/}¦/}§/}¨/}©/ }ª/ }«/ }¬/ }­/ }®/(ç *0 \j{­/YE +8‰8g8ç88{¦/ofm {g:{q:}§/{§/( k@v{§/t}¨/{¨/{Ÿ:}©/{¢/{£/{¤/{©/('P¥¤ož }¬/}­/{¬/oï 9Ý{¬/oŸ }ª/{¢/{ª/(O]($nþ9ž{¢/{ª/(k]}«/{¢/{B8{¢/{E8{«/{¢/{”8(i-2{¢/{B8{¢/{E8{«/{¢/{•8(iþ+,}­/{ª/}®/*+}«/+}ª/8ÿÿÿ}­/{¬/(; +}¬/}©/þ}¨/+}§/}­/{¢/{”8{¥/(¤ (¥ (n}®/*}­/{¢/{•8{¥/(¤ (¥ (n}®/*}­/}®/*0že {­/YE+8y{­/E ++*+++ ++++}­/{¬/(; +}­/}®/ Þ t   Þ&8mÿÿÿþ,z*e 0C{­/E ++++ +++*****"{®/*05k{¢/{£/{¤/{¥/{¦/þs‹P*(º *"oõ†*ò}¯/}°/}±/}²/}³/}´/}µ/(ç *0 Ý{´/YE +8‘88¦{±/{¬:s‘PrJp{°/o_ +¥o # }³/}´/{³/oï ,A{³/o # }²/}´/{¯/{°/{²/(¼U}µ/*}²/+²}´/{³/(/ +}³/}´/}µ/*0‡e {´/YE++e{´/E + ++++}´/{³/(/ +}´/}µ/ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{´/E + + +++***"{µ/*0 {¯/{°/{±/s“P*’(g) }¶/}·/}¸/}¹/*0 %{¶/{·/{¸/{¹/(ú°(¶U*:( }º/*:{º/("]*^sžP€¼/sžP€½/*:( }»/*~¼/**(£Pþ*~½/**(£Pþ*{»/*Zr.8psh) (Ô+oi) *01.þ, þ,{»/ {»/ 3*Y**þ,**:¥‚o¥P*0Bl¥‚ þ,%¥‚þ,{»/ {»/ 3*Y**¥‚þ,**0þ, (£P3 * **6(n o¨P*0.lþ,u‚ ,{»/ {»/ þ**þþ*0*.þ,þ,{»/ {»/ þ**þþ*00u‚ ,o«P**Ò(j) }k) }l) }m) }n) }o) }p) *0Jm(q) (r) (s) {k) {l) {m) {n) {o) {p) st) (Õ+*V(V }Æ/}Ç/*Z{Æ/{Ç/þ(ƒ]*ò(u) }v) }w) }x) }y) }z) }{) }|) *0 ‚¾ (@lE *tB {v) {w) {x) {y) {z) {{) {|) X{;(Õ+*:(}) }Ï/*B{Ï/þow! *:(~) }Ð/*V,*{Ð/þo *:() }Ñ/*v,*{Ñ/o ,( **:(8 }Ò/*F{Ò/þ(ƒ]*:(­! }Ó/*>{Ó/(: +*:(V }Ô/*B{Ô/þ(^*:(8 }Õ/*F{Õ/þ(ƒ]*:(­! }Ö/*>{Ö/(: +*V(V }×/}Ø/*R{×/{Ø/(1P*V(V }Ù/}Ú/*R{Ù/{Ú/(2P*:( }Û/*:{Û/("]*V(€) }Ü/}Ý/*0£n(@lE 'S:Ûóÿ._…‘çtB {; {Ý/("]{Ü/(&l*tC {; {;{Ý/("]{Ü/((l*{Ü/(*l*tJ {; {Ý/("]{Ü/(6l*{Ü/(8l*{Ü/(:l*tM{#; {";{Ý/("]{Ý/("]{Ü/(l*{Ü/(0l*tH{;{Ý/sÇP(N+{Ü/(2l*{Ü/(4l*tE{; {Ý/ ($]{Ü/(,l*V() }Þ/}ß/*0"o{Þ/{ß/(7P {;(ÿk**sÎP*’( }à/}á/}â/}ã/*{à/*{á/*{â/*{ã/*&*Zr.8ps‚) (Ö+oƒ) *"{à/*"{á/*"{â/*"{ã/*N{à/{â/(n*6{á/oõ²*6{á/o÷²*04p{ã/ {^(…»E**0+q{á/ {â/ {ã/ {à/(#](ÍP*:{à/o~m*0dr( ^,O(j] (; (: ofmo¤j (|  (6"  (7" (°(ÍP*rJps\ z"sáP*V( }ä/}å/*{ä/*{å/*&*Zr.8ps„) (×+o…) *(³ *"{I*(e *0~(f (g (=P*:(†) }æ/*:{æ/(?P*¶síP€è/síP€é/síP€ê/síP€ë/*:( }ç/*süP**(úPþ*~è/**(úPþ*~é/**(úPþ*~ê/**(úPþ*~ë/**(úPþ*"sþP**(úPþ*{ç/*Zr.8ps‡) (Ø+oˆ) *>(íP}ò/*{ò/*Z(íP}ó/}ô/*{ó/*{ô/*:( }õ/*2{õ/{ò/*:( }ö/*2{ö/{ó/*2{ö/{ô/*VsQ€÷/sQ€ø/*( *~÷/**u¡þ*~ø/**u¢þ*sQ**u£þ*0^ u£,+ u¢,+*Zr.8ps‰) (Ù+oŠ) *0^ u£-u¡-**(Q*(Q*:(Q}ü/*{ü/*:( }ý/*:( }þ/*:( }ÿ/*2{ÿ/{ü/*2sQ*²( }0}0}0}0}0*{0*{0*{0*{0*{0*&*Zr.8ps‹) (Ú+oŒ) *(_ *"o8‡*(Ì **þo9‡*(] *"o:‡*:() }Ž) *B{Ž) þo) *() *RŒ¥h$þo-‡*() *fŒ¥h$o.‡þo-‡*(‘) **þo{‡*(’) *"oy‡*(“) *0¾(™ (š (A*(‘) **þo|‡*(’) *"oz‡*(“) *0¾(™ (š (C*(4# **þo-‡*(4# *>o.‡þo-‡*( **sdQ**u¸þ**siQ**u¹þ*0s u¹,+*Zr.8ps”) (Û+o•) *0tu¹,*t¸ {0(| *†u¹, t¹{0*t¸{ 0*†u¹, t¹{0*t¸{ 0*0)uu¹, rÊ]ps\ zt¸ {0 {á/*6oFQ{«]*.oGQþ*0voGQ ,(ƒ *oHQ*0/woGQ,(¤ *oEQ -(¤ * ( {â/*6oKQoõ²*0$xoFQ{®] oGQþ, þ(Ü+**>oNQþoé" *RoFQ{Á]þo­ *0yoFQ {¬](*ºþ*0yoFQ {¬](*ºþ*0NzoFQ {¬](*ºþ-{¬](*ºþþ+,{°] (ø· (n o¸**0yoFQ {¬](*ºþ*6oFQo®º*0+{oFQ{¬] (*º3tÒ. {ˆ]{}]**0*ÿoGQþ-oFQ{­] {ÜY(º²þ**0+{oFQ{¬] (*º3tÒ. {ˆ]{{]**VoQQ- oWQþ**bsxQoNQþ(Ý+*vszQoFQ{®]þ(Ý+*bs|QoNQþ(Þ+*0A|u¹,t¹ { 0(¤ (n*t¸ {0 {à/{â/(n*0%GoKQoFQ(!± oKQoõ²(ý°*05}{å8 {>8 oFQ{Â] oõ²(e („^þþ*0w~oGQþ,KoFQ{®](ß+ oKQoõ² oLQ {n] (ß+ (ú°(¶U(¤ (¥ *oYQ,o]Q(¤ (¥ *(¤ *®oFQ{¯]{v]oKQoõ²oLQ(6P*0 oaQ oÏU(g^*0x€, (ƒ (¤ oõ²s–) +{â/{á/oõ²s–) (—) (˜) s,S {Á](¾UoÏU(?Q(Q*’(>Q}0} 0} 0} 0*{0*{ 0*{ 0*{ 0*’(>Q} 0} 0}0}0*{ 0*{ 0*{0*{0*:( }0*2{0{0*2{0{ 0*2{0{ 0*2{0{ 0*:( }0*2{0{ 0*2{0{ 0*2{0{0*2{0{0*’(™) }0}0}0}0*0 J{0oKQoõ² {0oLQ {n] {0{0{0(ß+(ú°(¶U*’(™) }0}0}0}0*0 J{0oKQoõ² {0oLQ {n] {0{0{0(ß+(ú°(¶U*’(š) }0}0}0}0*0 U{m]{0oKQoõ² {0oLQ {n] {0{0{0(ß+(ú°(¶U(àP*:( }0**s®Q**(‡Qþ*&s³Q**(‡Qþ*"s·Q**(‡Qþ**sºQ**(‡Qþ*{0*Zr.8ps›) (à+oœ) *0u‚(‡QE ,t {(0o]Q*tÁ{$0*tÃ{+0*tÄ {-0 {/0 {.0 sÐQ oU +(¼U*0`ƒ(‡QE( !ÿÿÿÿÿÿÿÿ*t {)0,æ{)0() *tÁ {&0,É{&0() *0„(‡QE`7t {(0 oFQ{«]*tÁ {%0 oÆmþom*tÄ{-0{/0sÒQoT +*rúåp*04…(‡Q3"tÁ {%0 oÆm om(¢–*þo‹Q*0B†(‡QE%*tÁ {%0 {#0 {B8(i**bo‰Qo& o‹Q( *0o‡(‡QE-;t {(0oLQ*tÁ{#0 o‰Q(n]*tÃ{*0 +åtÄ {,0o‰Q(n]*0L(‡QE %tÂ{'0*tÁ{#0*tÃ{*0*tÄ{,0*0Lj(‡QE) ¦t {(0 u¸, t¸{ 0*(z *tÁ {%0 {$0{#0 oÆm{U;{b;oE oÆm{U;{Z;(ý](  (n]  oµ (V+*(z *(z *6o‘Q(]*0v‰(‡QE(.($‰*tÁ {%0 oÆm {U;{d;*($‰*tÄ {-0 {/0sÖQoá+(‰*0Š(‡Q3tÁ {%0(ð **0ª‹(‡QE%P\t {(0 oNQoé" (V (^ *tÁ {%0 {#0sØQ (f^þ(â+*(V (^ *tÄ{-0{/0sÚQoã+(V (^ *Bo•Qoõ þ*0qŒ(‡QE.0t {(0oYQ*tÁ {%0 oÆmoæl**tÄ {-0 {/0sÜQo°+*0¡Ž(‡QE"[]t {(0 oFQ{Á]þo­ *tÁ {%0 {$0{#0 (IP(ž) þo† **tÄ{-0{/0 sÞQ oã+*0U‚(‡QEt {(0oSQ***tÄ {-0 {/0 sàQ o°+*0h(‡QE')t {(0oTQ*tÁ {%0(9P**tÄ {-0 {/0 sâQo°+*0¥(‡QE_at {(0oQQ*tÁ {%0 oÆm{U;{`;(Ð+{i; {AL((n o***tÄ{-0{/0 säQ o°+*0U‚(‡QEt {(0oRQ***tÄ {-0 {/0 sæQ o°+*0‘(‡QE]_t {(0oTQ*tÁ {%0 {#0 o‰Q(^,*oÆm{U;{`;o³ {i;{>L**ošQ*0h’ošQ-*(‡QEt {(0 oFQo®º***tÄ {-0 {/0 sèQo°+*0§“(‡QEact {(0oVQ*tÁ {%0 {#0 o‰Q(^,*oÆm{U;{`;o³ {i;{>L**tÄ{-0{/0sêQo°+*0°”oQo‰Q(^,*ošQ9Ž(‡QEqHt {(0oXQ*tÁ {%0 oÆm{U;{`;o³ {i;{>L*tÄ{-0{/0sìQo°+***05Š(‡QE*tÁ {%0(:P***0R•(‡QE35t {(0 oGQþ*tÁ {%0 oÆmoßl***09Š(‡QE*tÁ {%0{#0(S (f^(ä+ (Š+ (Š+(™+  s@S (å+*(ú *tÄ  {-0 {/0 {.0sFS(· +(ú (û *0Çš(‡QEKQt {(0o`Q*tÁ {%0 {$0 oÆmoæl, (¤ (¥ *(¤ *(¤ *tÄ{-0{/0{.0sLSo°+,(¤ *sNSoU +(¼U(¤ (¥ *0 Ä›(‡QE6`pt {(0 {'0 sPS(æ+(¢) (£) *tÁ {%0 {#0 s\S(f^(ç+*(¤) (¢) (£) *tÄ{-0{,0 sfS(æ+(¢) (£) *0Òž(‡QEoQ o‰Q(k] o~m slS(ü+ (z (¤  (8P(? snSo‘Q(ü+ o‘Q(8P(? (‡QE ‚rWps\ zt  {(0 (n(ßP  oFQ{¯]{v] {á/oõ² {â/(6P  spS(è+(0 ( s¥) +CtÄ  {-0o¦Qs~S(è+(0 ( s¥)   (¦)  (§) o‹Qo‰Q (YP*tÁ{%0{$0{#0 oÆm{U;|\;(Àiuñ,tñ{+:,+(‰sû£(¤(+&(a^( (€ (k]o~m o† (.+(„ (…  ((](@ s„Ss†S(f^(é+sˆS(‹+o‹Qo‰Q (YP*rÅJps¤(¤(ê+*0 4 (‡QE'¬¾t {(0 o\Q(¨) (©) 8ÑtÁ {%0 {$0 {#0(IP( ) (¡)  (ž)  sŠS  sŒS(f^(ä+  (Š+ (Š+(™+ (@P+L(t (¨) (©) +:tÄ  {-0 {.0s”S(/+(¨) (©) sœSsžSoªQþ(ë+*0â¡(‡QEDx¢t {(0 u¸,(t¸ oGQþ-{0 {à/o~m*(z *tÁ{%0{$0{#0(IP(¡) *tÃ{+0{*0(k]o~m*tÄ  {,0o‰Q(k]o~m*–(~Q}#0}$0}%0}&0*{#0*{$0*{%0*{&0*v(~Q}'0}(0})0*{'0*{(0*{)0*Z(~Q}*0}+0*{*0*{+0*–(~Q},0}-0}.0}/0*{,0*{-0*{.0*{/0*:( }00*2{00{#0*2{00{$0*2{00{%0*2{00{&0*:( }10*2{10{'0*2{10{(0*2{10{)0*:( }20*2{20{*0*2{20{+0*:( }30*2{30{,0*2{30{-0*2{30{.0*2{30{/0*(ß& *"o.‡*(Þ& **þo-‡*(U **:(ª) }40*¦¥f${40o«) sÔQ($¥oÙ+þo(‡*(¬) **þoñ *(­) **oZ‡Ži*(®) *VoY‡- oP‡þ**(­) *RoO‡, o[‡Ži**(®) **þoQ‡*(®) **þoT‡*(®) **þoY‡*(®) *RoY‡, þoP‡**(®) **þoU‡*(®) **þoW‡*(®) **þoX‡*( *"sR**uÚþ**sR**uÛþ*0¢ uÛ,+*Zr.8ps¯) (ì+o°) *0Z¥uÛ,/tÛ {<0 {:0 {;0sRoí+(¼U*tÚ {70{à/{â/(n*0W¦uÛ,6tÛ {<0 {:0 {;0 sRoí+(¸Uo;³*tÚ{70{á/*6oöQoõ²*0$§uÛ,(¤ *tÚ {70 {â/*0<¨uÛ,!tÛ {<0 {:0sRoî+*tÚ {80{Ú]*0<¨uÛ,!tÛ {<0 {:0sRoï+*tÚ {80{å]*0c©uÛ,tÛ {90oõQ(^*tÚ {70 {ã/ {^(…»E**0<¨uÛ,!tÛ {<0 {:0sRoï+*tÚ {80{Ü]*0<¨uÛ,!tÛ {<0 {:0sRoï+*tÚ {80{á]*0hªuÛ,>tÛ {<0 {:0 sRoï+,s!Roð+(DP( **tÚ {80{ä],{ß]**0J«uÛ,/tÛ {<0 {:0 {;0s#Roí+(¸U*tÚ {80{Û]*0¬uÛ,/tÛ {<0 {:0 {;0s%Roí+(¼U*tÚ {70 {80{á/oõ²{â/(¤ {Û] (ß+ (ú°(¶U*¦oöQoõ²oöQoùQoÿQs—³(þ°*"oùQ*V(îQ}70}80*{70*{80*’(îQ}90}:0};0}<0*{90*{:0*{;0*{<0*:( }=0*2{=0{70*2{=0{80*:( }>0*2{>0{90*2{>0{:0*2{>0{;0*2{>0{<0*(³) *"o.‡*(³) *"o.‡*(´) **þo-‡*(µ) **þob‡*(µ) **þoc‡*(µ) **þod‡*(µ) **þoe‡*(¶) **þof‡*(³) *"og‡*(³) *"og‡*"s(R*V( }?0}@0*{?0*{@0*&*Zr.8ps·) (ñ+o¸) *"{?0*"{@0*6{@0on*J{@0on{Ø:*J{@0ono®k*0©{@0 {v;*0©{@0 {v;ofm*0–{@0on {ß:{I*N{@0{?0(ñ]*0©{@0 {v;{?0(n*0:­{@0 {v;o& rKp( {@0on {ß:{I( *"s9R*V( }A0}B0*{A0*{B0*&*Zr.8ps¹) (ò+oº) *"{A0*"{B0*6{B0on*0"{B0 {t;*0"{B0 {t;ofm*0®{B0on {Ñ:{I*0:¯{B0 {t;o& rKp( {B0on {Ñ:{I( *"sFR*V( }C0}D0*{C0*{D0*&*Zr.8ps») (ó+o¼) *"{C0*"{D0*6{D0{Ï]*05T{C0{C0 {ã/{D0{Ó](ô+(²(z (?Q*05T{C0{C0 {ã/{D0{Ò](ô+(²(z (?Q*N{D0{Ó]þþ*N{D0{Ò]þþ*0 °{D0{Ô] (¸² (n oÁ²*0K{D0{Ó]þþ,oNRoTQ+,*{D0{Ò]þþ, oORoTQ**0K{D0{Ó]þþ,oNRoXQ+,*{D0{Ò]þþ, oORoXQ**0%±{C0 {D0 sYR{×]þ(õ+*0%±{C0 {D0 s[R{×]þ(+*0I²{C0 {D0 {á/oõ² {â/ (¤ {Õ] (ß+(ú°(¶U*ž{C0o& rKp( {D0{Ï]( *r(½) }E0}F0}G0*0 J³{G0{á/oõ² {G0{â/ (¤ {E0{F0(ß+(ú°(¶U(àP*r(g) }H0}I0}J0*0 D³{J0{á/oõ² {J0{â/ (¤ {H0{I0(ß+(ú°(¶U*( **s~R**uïþ*"sƒR**uðþ**s†R**uñþ*0´ uñ,+ uð,+*Zr.8ps¾) (ö+o¿) *0jµuï- uñ-S*tï {P0,"{P0 (ˆ {N0 {B8(i*{Q0,Ä{Q0 (ˆ {N0 +Ô*0¦¶uï-"uñ-htð{S0 {D0{Ï]*tï {P0,{P0(ˆ oÆm om(¡–*{Q0,{Q0(ˆ +×rWps\ ztñ{U0{W0s˜Ro­ +*0p·uï-)uñ-4tð {S0 {D0{Ó]þþ*tï {P0þþ*tñ {U0 {W0sšRo­+*0p·uï-)uñ-4tð {S0 {D0{Ò]þþ*tï {Q0þþ*tñ {U0 {W0sœRo­+*0|¸uï-1uñ-4tð {S0 {C0 {à/{â/(n*tï{O0*tñ {U0 {W0 {V0sžRo÷+(¼U*0™¹uï-uñ-Wtð{S0 oSR*tï {P0,{P0(ˆ (9P*{Q0,{Q0(ˆ +ãrWps\ ztñ {U0 {W0(HPs Ro°+*0»ºuï-uñ-vtð{S0 oTR*tï {P0-E{Q0- rWps\ z{Q0(ˆ oÆm{U;{`;o³ {i;{>L*{P0(ˆ +Ìtñ{U0{W0(HPs¢Ro°+*0ñ»  uï-  uñ:©tð{S0 oSR*tï {P0,S{P0 (ˆ {O0{N0(^,* oÆm{U;{`;(Ð+{i;{>L*{Q0, {Q0 (ˆ {O0{N0 +£rWps\ ztñ{U0 {W0   (HPs¤R o°+*0¡¹uï-uñ-_tð{S0 oRR*tï {P0-.{Q0- rWps\ z{Q0(ˆ oÆmoælþ*{P0(ˆ +ãtñ {U0 {W0(HPs¦Ro°+*0Z¼ uï- uñ-F*tï {P0-&{Q0- rWps\ z{Q0(ˆ (:P*{P0(ˆ +ë*0½  uï-2 uñ:Êtð {S0{D0 {×]oþ þþ*tï {P0-T{Q0- rWps\ z{Q0 (ˆ {N0(f^o÷ 3oú oñ þþ**{P0 (ˆ {N0(f^o÷ 3oú oñ þþ**tñ{U0{W0 s¨R oø+þ*0Nµuï- uñ-7*tï {P0,î{P0 {Q0-ß(ˆ {N0  (oÆmþom*(× *>oÆmþom*(®) **þoY‡*(ß& *"o.‡*(ˆ$ *"oq‡*(³ *"{I*:( }|0*:{|0("]*(e *0~(f (g (=P*:(Õ) }}0*B{}0þ(ê+*:(i }~0*N{~0{å/("]*(±' *"oZ‡*(] *"o:‡*ò}0}€0}0}‚0}ƒ0}„0}…0(ç *0 è{„0YE +8œ8Œ8±{0sBSrõ=p{€0o· +¥LoÈ) }ƒ0}„0{ƒ0oï ,Q{ƒ0oÉ) }‚0}„0{0{€0{‚0sDS{€0oä+(¼U}…0*}‚0+¢}„0{ƒ0(ü+}ƒ0}„0}…0*0‡e {„0YE++e{„0E + ++++}„0{ƒ0(ü+}„0}…0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{„0E + + +++***"{…0*0 {0{€0{0sFS*(®) *RoP‡,*þoY‡*(ß& *"o.‡*0\}†0}‡0}ˆ0}‰0}Š0}‹0}Œ0}0 }Ž0 }0 }0(Ö) *0 h{0YE +88ô81{ˆ0oNQ¥So×) }Ž0}0{Ž0oï 9Þ{Ž0oØ) }Š0{‰0{á8{Š0{t](‘^}‹0{Š0{r],{Š0{q]þ+}Œ0{‰0{†0{‡0{ˆ0oKQoõ²{ˆ0oLQ{Š0(BP}0}0{‹0{Œ0{0sº }0*}0}Œ0}‹0}Š08ÿÿÿ}0{Ž0(+}Ž0}0}0*0‡e {0YE++e{0E + ++++}0{Ž0(+}0}0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{0E + + +++***"{0*0&{†0{‡0{ˆ0{‰0sPS*V(L }‘0}’0*º{‘0{B8{‘0{E8{’0{?8{Á;(i*V(L }“0}”0*º{“0{B8{“0{E8{”0{?8{Á;(i*V(L }•0}–0*º{•0{B8{•0{E8{–0{?8{Á;(i*:(Ù) }—0*0«Î(f (g {—0{á8 {—0 sVS{5<(N+ {—0{ð8 {—0 sXS{5<(N+,{—0( ^+{—0{ 9 {—0 sZS{5<(N+,( Q+(Qsº *(±' *"oZ‡*(U **:(_ }˜0*æ¥f${˜0oÚ) s`S($¥oÙ+Ð(d ol o*‡þ*(_ *"o6‡*0T}™0}š0}›0}œ0}0}ž0}Ÿ0} 0 }¡0 }¢0(Ö) *0 A{¡0YE +8õ8Ô8 {›0s^Srõ=p{š0o· +¥LoÈ) } 0}¡0{ 0oï 9§{ 0oÉ) }0{0{0sbS{š0oæ+}ž0{œ0{™0{š0{0(FP}Ÿ0}¡0{ž0{0sdS{š0oæ+{Ÿ0sº }¢0*}Ÿ0}ž0}08Iÿÿÿ}¡0{ 0(ü+} 0}¡0}¢0*0‡e {¡0YE++e{¡0E + ++++}¡0{ 0(ü+}¡0}¢0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¡0E + + +++***"{¢0*0%{™0{š0{›0{œ0sfS*(* *"(i*(* *"(i*0T}£0}¤0}¥0}¦0}§0}¨0}©0}ª0 }«0 }¬0(Û) *0 R{«0YE +88ì8{¦0oFQ{®]¥So×) }ª0}«0{ª0oï 9Ã{ª0oØ) }¨0{§0{á/oõ² {§0{â/ {¨0{n] {£0{¤0{¥0(ß+(ú°(¶U}©0}«0{¨0{m]{©0{¨0{q]{¨0{r]{¨0{s]( (öq}¬0*}©0}¨08-ÿÿÿ}«0{ª0(+}ª0}«0}¬0*0‡e {«0YE++e{«0E + ++++}«0{ª0(+}«0}¬0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{«0E + + +++***"{¬0*0*{£0{¤0{¥0{¦0{§0spS*(±' *"oZ‡*(Æ) *0o5‡ ,(c **(] *"o:‡*(Ü) *fo7‡o6‡o8‡s  *0l}­0}®0}¯0}°0}±0}²0}³0}´0 }µ0 }¶0 }·0 }¸0 }¹0(Û) *0 ±{¸0YE +8e8(8z{¯0svSrõ=p{®0o· +¥LoÈ) }·0}¸0{·0oï 9{·0oÉ) }°0{°0sxS{®0oû+}±0{­0{®0{°0szS{®0oä+(¼U}²0{°0s|S{®0o+}³0{³0( }´0{³0( }µ0{³0(  }¶0}¸0{±0{²0{¶0{´0{µ0( (öq}¹0*}¶0}µ0}´0}³0}²0}±0}°08Ùþÿÿ}¸0{·0(ü+}·0}¸0}¹0*0‡e {¸0YE++e{¸0E + ++++}¸0{·0(ü+}¸0}¹0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¸0E + + +++***"{¹0*0#{­0{®0{¯0s~S*:() }º0*0"~(f (g {º0("]s»' *:(Ó }»0*0 Ï{»0oÝ) (f (g (XP*:( }¼0*:{¼0("]*(e *0~(f (g (=P*:(Õ) }½0*B{½0þ(ê+*(±' *"oZ‡*(^ **þo5‡*(] *"o:‡*0L}¾0}¿0}À0}Á0}Â0}Ã0}Ä0}Å0 }Æ0(´ *0 ^Ð{Å0YE +88ñ8'{¿0sŽSrõ=p{¾0o· +¥LoÈ) }Ä0}Å0{Ä0oï 9Ä{Ä0oÉ) }Á0{Á0sS{¾0oå+ , (c +}Â0{Á0s’S{¾0oä+ (— + ,{À0oÏU{¥8+{À0{¾0(¼U}Ã0}Å0{Â0{Ã0(àP}Æ0*}Ã0}Â0}Á08,ÿÿÿ}Å0{Ä0(ü+}Ä0}Å0}Æ0*0‡e {Å0YE++e{Å0E + ++++}Å0{Ä0(ü+}Å0}Æ0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Å0E + + +++***"{Æ0*0 {¾0{¿0{À0s”S*r(d }Ç0}È0}É0*0 %{Ç0{È0{É0{ä/{å/(Q*(Þ) *04(ž (Ÿ (  sšS*:(ß) }Ê0*F{Ê0þ(+**s¡S*’( }Ë0}Ì0}Í0}Î0*{Ë0*{Ì0*{Í0*{Î0*&*Zr.8psà) (+oá) *r(8 }Ï0}Ð0}Ñ0*0 {Ï0{Ð0{Ñ0þ(}]*:(å' }Ò0*>{Ò0(w +*V(8 }Ó0}Ô0*^{Ó0{Ô0þ(]*Šs¯S€Ö0s¯S€×0s¯S€Ø0*:( }Õ0*"s¼S**(¸Sþ*~Ö0**(¸Sþ*~×0**(¸Sþ*~Ø0**(¸Sþ*{Õ0*Zr.8psâ) (+oã) *’(¸SE****0¾Ñ(¸SE…™tX (¸S3stX {Þ0 {Þ0 {Ý0{Ý0(n oä) ,< ,4 ,,(¸ (¸  {B8{E8 (i**þ***(¸Sþ*(¸Sþ*(¸Sþ*Z(¯S}Ý0}Þ0*{Ý0*{Þ0*:( }ß0*2{ß0{Ý0*2{ß0{Þ0*V(Ÿ }à0}á0*(Ÿ *0 (  *0 (¡ *{à0*{á0*0VÍþ,M ¹y7žtZ(ÇS(¿+bcXXX ¹y7žtZ(ÆS , ( +bcXXX **6(n oÈS*0c*þ,Tu ,H( +-*tZ(ÆStZ(ÆS(ñ ,tZ(ÇStZ(ÇSþ(À+***þþ*0^þ,Oþ,G( +-*tZ(ÆStZ(ÆS(ñ ,tZ(ÇStZ(ÇSþ(Â+***þþ*0*u , þoËS**V(Ÿ }â0}ã0*(Ÿ *0 (  *0 (¡ *{â0*{ã0*0VÍþ,M ¹y7žt[(ÒS(¿+bcXXX ¹y7žt[(ÑS , ( +bcXXX **6(n oÓS*0c*þ,Tu ,H( +-*t[(ÑSt[(ÑS(ñ ,t[(ÒSt[(ÒSþ(À+***þþ*0^þ,Oþ,G( +-*t[(ÑSt[(ÑS(ñ ,t[(ÒSt[(ÒSþ(Â+***þþ*0*u , þoÖS**:(h }ä0*:{ä0(r_*(”( *"(pe*’(å) }å0}æ0}ç0}è0*0 ÒE0³E!Â{å0{æ0{è0{ç0(aP*{ç0(Ê ,Ò{ç0 (Ê (Ë rwKps (ñ+(“”r¸9pŒm(ûsÚS{ç0(++(„”(È+o {æ0s¤ (¤ (¥{å0{è0(V](@ sK) sL) *{ç0(Ê -r¹Kp{æ0s¤ (¤ ( +*{ç0 (Ê (Ë {å0{è0(V](@ sK) sL) *{ç0(Ê :Àþÿÿ{å0{å0{è0(V](A {å0{¥8(ƒ]9þÿÿ(ôn{æ0{å0{¥8(Ðo{ç0{å0{è0(V](@ sK) sL) *{ç0(Ê :=þÿÿ{å0{å0{è0(V](A {å0{¥8(ƒ]9 þÿÿ8xÿÿÿV(æ) }é0}ê0*0#Ó(O) (N) {é0{ê0sÜS*(®) **þoY‡*(®) *>o.‡þo ‡*V(ç) }è) }é) *0EÔoÆm {U;{`; ,, {è) oÆm(%^-(³ {é) þ( +**r(¯ }í0}î0}ï0*j{î0{ï0{í0( U*(ë) *"oö†*:(¯' }ð0*No-‡{ð0(ñ *:(ë) }ñ0*j{ñ0sêSoö†þ( +*0D}ò0}ó0}ô0}õ0}ö0}÷0}ø0}ù0(Â! *0 Ñ{ø0YE +8…+x8{õ0¥[oì) }÷0}ø0{÷0oï ,R{÷0oí) }ö0}ø0{ò0{ö0{ô0o+{ó0{ô0(…Q}ù0*}ö0+¡}ø0{÷0(+}÷0}ø0}ù0*0‡e {ø0YE++e{ø0E + ++++}ø0{÷0(+}ø0}ù0 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ø0E + + +++***"{ù0*0 #{ò0{ó0{ô0{õ0sîS*r(ï) }ú0}û0}ü0*0 {ú0{û0{ü0(cQ*’(ð) }ý0}þ0}ÿ0}1*0 !{þ0{ý0{ÿ0{1(; +*0XØo &}1}1}1}1}1}1süS (ñ) sþS sò) }1*0ÿÙ{i;{AL(&Ei*{1{1(ð (^R {1oÆm om(¡–(fP,!{1{1{1{1(¢U+, þoûS**{1{1(ð (^R {1oÆm om(¡–(fP,!{1{1{1{1(¢U+, þoûS**0Ûþ^sTþ(¾+*0FÜ{1oó) 9${1oô) uï9¿tï {P09®{P0 uï9›tï {Q0,P {Q0(ˆ (ˆ {O0{1(ð (ð (^R{1þoõ) * {P0,4 {P0{Q0,${Q0  (ˆ (ˆ {O0+•*{Q0,÷{Q0 uï,ètï {P0,Ù {P0(ˆ (ˆ {O08Hÿÿÿ{1þoõ) *:(ö) }1*0 TonRonR30(a{1{1{1{1{1{1(\P+,ooRooRþ**F} 1o &*"(iP*F{ 1þo÷) *Ò} 1} 1} 1} 1}1}1(ú) *0ëÛ{1YE +8Ÿ8€8´{ 1{1¥_oû) } 1}1{ 1oï ,d{ 1oü) } 1{ 1 (ý) (þ) sÿ) } 1}1{ 1(Ë }1*} 1þ^} 1+}1{ 1(+} 1}1}1*0‡e {1YE++e{1E + ++++}1{ 1(+}1}1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{1E + + +++***"{1*0 Û{ 1þ^sT*’(I }1}1}1}1*0 {1{1{1{1(¢U*(* *"où†*:(* }1*:{1oú†*r(* }1}1}1*j{1{1{1(bR*V(* }1}1*f{1{1(ER(`R*:(* }1*F{1oùS*:( }1*s T**(Tþ*s"T**(Tþ*s$T**(Tþ*s&T**(Tþ*s(T**(Tþ*{1*Zr.8ps* (+o* *>(T}!1*{!1*>(T}"1*{"1*>(T}#1*{#1*>(T}$1*{$1*>(T}%1*{%1*:( }&1*2{&1{!1*:( }'1*2{'1{"1*:( }(1*2{(1{#1*:( })1*2{)1{$1*:( }*1*2{*1{%1*0ßo &}+1},1sNT sQT {+1sTTo+o+}-1{+1sVTo+o+}.1{+1sXTo+}/1{+1sZTo+}01{+1s\To+}11{+1s^To+}21{+1s`TsbTo+}31{+1seTsgTo+}41*"{+1*"{,1*‚{-1s* s* þo * *‚{.1s* s* þo * *z{/1s * s * þo * *z{01s * s * þo* *z{11s * s * þo* *0Và{/1(c (¶Ss * s * o * (U) ,( (U) (U) -(V) (* *rÿKps\ z*z{21s* s* þo* *^{31sT" þoU" *^{41sT" þoU" *0 ,á{+1 {,1 sjT{+1(^ u·:’u¸:Ýt¹ {5{¬:,V(d slTo+(+  , (* 8“{+1{,1(ñQ(* (* +rspT(++]t·  {5 {+1(ßP  {,^  svT, (d oùº+ oøº(++(* þ(è +*0 â{+1(^   u·:† u¸:Ýt¹ {5 {¬: ,N(d  sxTo+(+,(* *{+1{,1(ëR(* (* * s|Tþ( +*t·{5 {+1(ßP  {/^ , (d oϺ+ oκ   s‚Tþ( +*(* *‚(n]{ß:{I(n('R*0 ˜ã{+1(l] 9} (¸ -sˆTþ(!+* (d o—m,>(Œ! {Ú:þ,%(Œ! {+1oBT(* (* *(* *(* *0 :ä(* (* (* sŽT{+1{,1(* ("+*0 :ä(* (* (* sT{+1{,1(T) (#+*0 7å(* (* (¡Ps’T{+1{,1(* ($+*0 7å(* (* (¡Ps”T{+1{,1(* (%+*0 7æ( * (!* (¡Ps"* {+1{,1(* (&+*0 !s˜T{+1{,1(¤ (5 +*0 !sšT{+1{,1(¤ (5 +*0 Iç(#* ($* rúåp(ñ ,*(c (¡PsœT{+1{,1('+*js%* s&* ('* s(* *"s)* *F}51o &*0å(* (* ((+(ºSX*0;è(* (* (* (* (2+,{51{+1 (»S**F}61o &*0%é(#* ($* , ( +(ºSX*0;ê(#* ($* (#* ($* (ñ ,{61{+1 (»S**:(.* }71*0%ì(/* (0* (1* {71oDT*:(2* }81*0%ì(/* (0* (1* {81oET*:(3* }91*0%î(4* (5* (6* {91o)+*:(7* }:1*0%î(4* (5* (6* {:1oFT*:(8* };1*0%î(4* (5* (6* {;1oGT*:(9* }<1*0%ð(:* (;* (<* {<1oKT*:(=* }=1*0%ñ(>* (?* (@* {=1oIT**o &*6(þ o¨P*:(n oªP*:(=* }>1*0%ñ(>* (?* (@* {>1oJT**o &*6(þ o¨P*:(n oªP*’(l# }?1}@1}A1}B1*0 {A1{B1{@1{?1(”U*:(C* }C1*:{C1oý†*(D* *"oü†*ò}D1}E1}F1}G1}H1}I1}J1(E* *0 è{I1YE +8œ8Œ8±{F1snTrSLp{E1o*+¥woF* }H1}I1{H1oï ,Q{H1oG* }G1}I1{D1{+1{G1{D1{,1{E1(ñQ}J1*}G1+¢}I1{H1(++}H1}I1}J1*0‡e {I1YE++e{I1E + ++++}I1{H1(++}I1}J1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{I1E + + +++***"{J1*0 {D1{E1{F1spT*:(H* }K1*:{K1(ïQ*:(I* }L1*:{L1oø†*(J* *"o÷†*ò}M1}N1}O1}P1}Q1}R1}S1(K* *0 è{R1YE +8œ8Œ8±{O1szTrgLp{N1o,+¥yoL* }Q1}R1{Q1oï ,Q{Q1oM* }P1}R1{M1{+1{M1{,1{P1{N1(ëR}S1*}P1+¢}R1{Q1(-+}Q1}R1}S1*0‡e {R1YE++e{R1E + ++++}R1{Q1(-+}R1}S1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{R1E + + +++***"{S1*0 {M1{N1{O1s|T*0T}T1}U1}V1}W1}X1}Y1}Z1}[1 }\1 }]1(K* *0 {\1YE +8Í8¯8â{X1¥{oN* }[1}\1{[1oï 9”{[1oO* }Y1{W1{Y1(ÌR}Z1{T1{+1{T1{,1{V1{U1{Z1(•U,(}\1{T1{+1{Z1(éR}]1*+}Z1}Y18\ÿÿÿ}\1{[1(.+}[1}\1}]1*0‡e {\1YE++e{\1E + ++++}\1{[1(.+}\1}]1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{\1E + + +++***"{]1*0*{T1{U1{V1{W1{X1s‚T*ò}^1}_1}`1}a1}b1}c1}d1(P* *0 öo{c1YE +8ª8–8¿{`1ofm oj{Æ:¥ oÇ }b1}c1{b1oï ,c{b1oÈ }a1{a1{Ú:-:}c1{^1{^1{+1{_1{`1{a1oBT}d1*+}a1+}c1{b1(P+}b1}c1}d1*0‡e {c1YE++e{c1E + ++++}c1{b1(P+}c1}d1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{c1E + + +++***"{d1*0 {^1{_1{`1sˆT*’(Q* }e1}f1}g1}h1*0 6{g1{h1{e1{+1{e1{,1{f1(hP(R* *’(S* }i1}j1}k1}l1*0 6{k1{l1{i1{+1{i1{,1{j1(jP(R) *’(T* }m1}n1}o1}p1*0 ({m1{o1{p1{n1o@Tþ(/+*’(U* }q1}r1}s1}t1*0 ({q1{s1{t1{r1oATþ(0+*’(V* }W* }X* }Y* }Z* *0 ({W* {Y* {Z* {X* o1+þ(2+*(­! *&(¥ *(­! *&(¥ *’([* }y1}z1}{1}|1*0 =ò{|1{{1{y1{+1{y1{,1{z1(hP {|1{{1{y1{+1{y1{,1{z1(jP {y1{|1{{1{z1o@T {y1{|1{{1{z1oAT {y1{|1{{1{z1o3+,K(s" (T39(s" tv(¢ þþ,{!1(R* (T(S) *(¢ þþ,(* (R* (T(S) * (kP*b}\* }]* o &*0Åó(^* (_* (^* (_* {]*  o`* 9•{\* (O]{\* (O]($n3ktv{ƒ;(³ -T($n3Jtv{ƒ;(³ -3{‚;{‚; {\* {B8{\* {E8 (i***0wô(^* {]* (_* oa* {\* (O] ($n3Ctv {ƒ;(³ -/{‚; ofm{g:{l:, ( ++X*:(d* }e* *0iõ(_* (f* (^* {e* (O] ($n3: tv{ƒ;(³ -${‚;ofm{g:{s:{‹:**F}g* o &*0å(h* (i* ((+(ºSX*0]ö(h* (j* (i* (h* (j* (i*  (2+,{g* {+1(»S+, þ(+**r(ï) }1}‚1}ƒ1*0 {1{‚1{ƒ1(cQ*(ø *B{¬](*ºþ*(m* *"oû†*0D}„1}…1}†1}‡1}ˆ1}‰1}Š1}‹1(Â! *0 é{Š1YE +888²{‡1sªTr{Lp{„1o4+¥ƒon* }‰1}Š1{‰1oï ,R{‰1oo* }ˆ1}Š1{…1{ˆ1{„1o5+{†1{„1(…Q}‹1*}ˆ1+¡}Š1{‰1(6+}‰1}Š1}‹1*0‡e {Š1YE++e{Š1E + ++++}Š1{‰1(6+}Š1}‹1 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Š1E + + +++***"{‹1*0 #{„1{…1{†1{‡1s¬T*V(q* }Œ1}1*V{1{Œ1(Q*(r* *0T÷oÆm {U;{`; ,; (³ {i;{AL((n o*,(³ (ð **^s·T€1s·T€1*:( }Ž1*~1**(¼Tþ*~1**(¼Tþ*{Ž1*Zr.8pss* (7+ot* *01.þ, þ,{Ž1 {Ž1 3*Y**þ,**:¥¨o¾T*0Bø¥¨ þ,%¥¨þ,{Ž1 {Ž1 3*Y**¥¨þ,**0þ, (¼T3 * **6(n oÁT*0.øþ,u¨ ,{Ž1 {Ž1 þ**þþ*0*.þ,þ,{Ž1 {Ž1 þ**þþ*0ùu¨ ,oÄT**bo &}u* }v* *"{u* *:{v* (8+*–{u* (w* sx* {v* (9+sy* *:(z* }{* *V{{* o|* (:+*V(¿ }}* }~* *Z{}* {~* þ(;+*r(¿ }€* }* }‚* *Æ{€* sƒ* {* o|* {‚* {„* (<+þ(=+*r(¿ }…* }†* }‡* *²{†* {…* o|* {‡* {v* (8+þ(>+*V(¿ }‰* }Š* *Z{‰* {Š* þ(Û +*:(‹* }Œ* *^{Œ* s* (?+þ*V(Ž* }* }* *^{* {* þ(@+*r(¿ }‘* }’* }“* *ú{‘* {“* o. ,{‘* o. +,{’* {“* þ(Û +**’(¿ }”* }•* }–* }—* *Æ{•* {—* o. ,{”* {–* {—* þ(@+**’(‹* }˜* }™* }š* }›* *0U{™* o. ,{™* {›* (A+(?++,!{˜* {š* {›* sœ* (?++þ*’(Ž* }* }ž* }Ÿ* } * *0d{* o. ,{Ÿ* o. +,+{* o. þ,+ {ž* o. ,*{* { * (@+þ*:(¿ }¡* *F{¡* o. þ*:(¢* }£* *B{£* þ(B+*r(¿ }¤* }¥* }¦* *²{¤* o. ,*{¥* o§* {¦* (?+þ*V(¢* }¨* }©* *0)ú{¨* (B+ {¨* {©* sª* þ(B+*(¯ *"ošQ*(¯ *"o Q*(¯ *"o¡Q*(¯ *"ožQ*’(G }¹1}º1}»1}¼1*0 ${¼1{¹1{º1{»1þ(]P*(± **þo‹Q*(I *"okR*(I *"olR*(I *"ooR*(I **’(ö) }½1}¾1}¿1}À1*0 #{À1{½1{¾1{¿1þ(^P*(m# *"ogR*(± **þo‹Q*r(G }Á1}Â1}Ã1*0 b{Á1{B8{Á1{E8{Á1o‰Q(k]{Á1o‰Q(k](i- (a{Á1{Â1{Ã1([P**(m# *"ogR*’(ö) }Ä1}Å1}Æ1}Ç1*0 !{Ç1{Ä1{Å1{Æ1(\P**s U*’( }È1}É1}Ê1}Ë1*{È1*{É1*{Ê1*{Ë1*&*Zr.8ps«* (C+o¬* *(á *&(n*0þý{>8 ofm(^ u·-Zu¸:•t¹ {5 {¬:s)UoD+s-UoE+-*(®* þo¯* *t·{5oõ²(e {1^(„^  ,   (÷ þo°* **s/Uofm  {g:{p:(¹+  ,   („ þo±* **0Ÿþ(‡QE#N\t {(0 oFQ{Â]þo²* *tÁ {%0  oÆm{U;{a;þo³* *( þo³* *tÄ{-0s1UoF+þo´* *0 -ÿ{>8 sµ* s¶* s·* þ(G+*0 s?UsAUsCUþ(ä +*0 sEUsGUsIUþ(H+*0h{ä8 {>8 oõ²(e („^ -(¾£* (÷ (ø (: ,] (÷ (ø (; (,´3A(; tª-{DZ-F(: (: -rR9psÂS(ö (Ý# (Þ# *rR9psÂS(ö (Ý# (Þ# *{DZ(: (: ,v(: (; (,´3µ(; t«-(: (: -™(d  {EZ  ,(ö  sÍS(è * sÂS(ö (Ý# (Þ# *(d   sÂS(ö (Ý# (Þ# *0{ä8 sKU(¹+ ,e („ {Ã;(… ,Q(„ {Ã; († (^,4 (… (… -'(d sÂS(ö (Ý# (Þ# 8æ9¹(„ {Ã;(… 9 („ {Ã;(† (^9}(… (… ,o(…   († (Œ^  ,T (… (… -F(d  (g   ,(ö sÍS(è +BsÂS(ö (Ý# (Þ# +'-(¾£+rR9psÂS(ö (Ý# (Þ# sOU(k +sSU(k +sWUþ(k +*‚(1 þ,(¾£*þ(U*0T{ä8 {>8 s[UoE+ -(¾£* (®* (¸* ,; (®* (¹* -F(¸* (¸* -rR9psÂS(ö (Ý# (Þ# *rR9psÂS(ö (Ý# (Þ# *(¹* (º* um,É(¸* (¸* 9~(¸* (¹* ,¦(¹* (º* (Ÿ+-+(¸* (¸* :|ÿÿÿ (º* ¥ó  ,(ö  sÍS(è * sÂS(ö (Ý# (Þ# *  sÂS(ö (Ý# (Þ# *0){ä8 {>8 oõ²(e („^þþ*0{ä8 s]U(¹+þþ {9 s_U(¹+ 9Ø („ {Ã;(… 9¿(„ {Ã;(† (^9œ(… (… 9‹(… († (Š^9m(… (… -_r›Lp(„ {Ä;(‰^  ,C (d (Œ^  ,1 (g  (Õ   , >3 {C8+þ++ ,**n(1 þþ, (U**>scUoI+*0ö  uï-5 uñ:œtð {S0{D0 {R0 {Ø](U*tï {P0,7 {P0(ˆ  {N0 oÆm{U;{a;þ(U* {Q0, {Q0(ˆ {N0 +¿r­Lps\ ztñ{U0{W0 {T0 {V0  seU oJ+(U*0euÛ,7tÛ {<0 {90 {:0  sgUoK+(U(Ë+&*tÚ{80{æ](U(Ë+&*0 0 siUs»* sqU(L+ -(¾£*(¼* *0õ ssUsuUswU(M+ -+(g (^-(O]($nþ+,o‰Q(^+9ˆ(k] ofm{g:{q:( k3)t{ :{¬:s{Uo¸++9 o©m,+s}U ofmo¤j(| {1^oŠ´(É+++ ,**0ó  uï-5 uñ:štð {S0{D0 {R0 {Ø](Û +*tï {P0,5 {P0(ˆ  {N0 oÆm{U;{a;(Ü +* {Q0, {Q0(ˆ {N0 +Ár­Lps\ ztñ{U0{W0 {T0 {V0 sU oJ+ (U*0Doo©m,ofm o¤j(| {1^(U*ofm {g:{p:þ(U*z{t;($UsUþ(k +*z{v;($UsƒUþ(k +*0aoÆm {U;{a;þ(U*F{@0þ(&U*(½* *"¥f$*(U **V(¾* }Ì1}Í1*¾{Í1o¿* s+U($¥oÙ+{Ì1oü²þo*‡*V(L }Î1}Ï1*º{Î1{B8{Î1{E8{Ï1{?8{Á;(i*(À* *"¥f$*r(Á* }Â* }Ã* }Ä* *0 1{Ã* {Â* {Ä* {Ä* oõ²(e („^þ(N+*V(L }Ó1}Ô1*º{Ó1{B8{Ó1{E8{Ô1{?8{Á;(i*r(Å* }Æ* }Ç* }È* *š{È* {Æ* {Ç* s5U(¹+þ(O+*(U **V(¾* }Ø1}Ù1*¾{Ù1o¿* s9U($¥oÙ+{Ø1oü²þo*‡*r(É* }Ê* }Ë* }Ì* *05 {Ì* s;U{Ê* oE+ -* {Ë* (®* þoÍ* *(‰ *0[ (ø (: ,L(ø (; (,´37(; tª- {DZ,#{DZ (: (: -(d (c **(Š *0A {Ã;(… ,2{Ã; († (^ ,(… (… -(d (c **(‹ *0A(¸* ,7 (¹* ,-(¹* (º* um ,(¸* (¸* -  (c **(‰ *0[ (ø (: ,L(ø (; (,´37(; tª- {DZ,#{DZ (: (: -(d (c **(Š *0A {Ã;(… ,2{Ã; († (^ ,(… (… -(d (c **(‹ *0A(¸* ,7 (¹* ,-(¹* (º* um ,(¸* (¸* -  (c **V(L }Ý1}Þ1*º{Ý1{B8{Ý1{E8{Þ1{?8{Á;(i*V(L }ß1}à1*º{ß1{B8{ß1{E8{à1{?8{Á;(i*r(æ }á1}â1}ã1*0,{á1{9 {á1sMU{â1(¹+ 9û („ {Ã;(… 9ä(„ {Ã; († (^9Ä (… (… 9´ (… († (Š^9—(… (… :†(d („ {Ä;(Õ   {ã1s¤ r÷Lp(‰^  ,  (d (Œ^  , (g   +, (ö  (è * (ö (Ý# (Þ# *(¾£*V(L }ä1}å1*º{ä1{B8{ä1{E8{å1{?8{Á;(i*r(æ }æ1}ç1}è1*0·ê{æ1{9 {æ1sQU{ç1(¹+ ,e („ {Ã;(… ,Q(„ {Ã; († (^,4 (… (… -'(d {è1s3¤(ö (Ý# (Þ# *,!(‘{è1s3¤(ö (Ý# (Þ# *(¾£*V(L }é1}ê1*º{é1{B8{é1{E8{ê1{?8{Á;(i*r(æ }ë1}ì1}í1*0Hb{ë1{9 {ë1sUU{ì1(¹+,{í1s>¤(ö (Ý# (Þ# *(¾£*(U **V(¾* }î1}ï1*¾{î1o¿* sYU($¥oÙ+{ï1oü²þo*‡*V(L }ð1}ñ1*º{ð1{B8{ð1{E8{ñ1{?8{Á;(i*V(L }ò1}ó1*º{ò1{B8{ò1{E8{ó1{?8{Á;(i*(U **:(Î* }ô1*Ò{ô1o¿* saU($¥oÙ+Ð(d ol o*‡þ*(Ï* *"¥f$*(Ð* *"¥f$*V(Ñ* }õ1}ö1*f{õ1{ö1(U(Ò* *V(L }÷1}ø1*º{÷1{B8{÷1{E8{ø1{?8{Á;(i*²(æ }Ó* }Ô* }Õ* }Ö* }×* *0cb{Õ* þ,&{Ó* { 9 {Ó* skU{×* (N++,&(ö {Ö* o‹Q(ö{Ô* sû£(è *(¾£*’(Ø* }Ù* }Ú* }Û* }Ü* *0 <{Ù* {Ú* (U{Ù* {Ú* {Û* {Ü* sÝ* (k +(Ò* *V(Þ* }2}2*f{2{2(U(Ò* *V(ß* }2}2*f{2{2(P+(– *V(à* }2}2*f{2{2(Q+(– *:(á* }2*N{2(U(– *(U **:(J } 2*º¥f${ 2{¬:o"( syU($¥oÙ+þo)‡*(± *®{eZo­³o9³o³Ð(d ol (ñ *(Ï* *"¥f$*r(æ } 2} 2} 2*–{ 2{ 2on{Ó:{ 2þ(U*r(æ } 2}2}2*–{ 2{2on{Ý:{2þ(U*0J(¸SE{ø:( þ***tX s¤U{Ý0þ(R+*0ÑtX {Þ0 {Ý0 (ø·(n o¸,+(ö·(n o¸,1,*(¸ s¦U(¡P(k^(-P++ (ð·(n o¸,ofmoj("i+(ü·(n o¸,+ ,**0 ‡(¸SEZi(ü· (n o¸*(ü· (n o¸,+(ø· (n o¸,*(ö· (n o¸*(†U**0Z(¸SE*{^ (_» (n ol»,*{^ (ü·(c» (n ol»*0<(¸SE*tX {Ý0ofmoj("i*0"{ã/ {à/ (ˆU,*(‰U*‚(ŠU,{à/(‡U**0_o©m,=(‰U,*ofmo¤j (| (7" s¨U(S+,(ˆU**ofm {g:{y:(…U*07¿(ŒU -(ofmomj(‹sû£ (¤(¥+*0%o(ŒU,ofm {g:{o:(…U**0T(U,Hofm {g:{o:(…U -(ofmomj(Œsû£ (¤(¥+**0@(O]($nþ-*(j] (; (: (ŒU, (’U**0A(U -*(O]($nþ-*(j] (: (‡U*n(³ -*sªUþ(å+*®,(ü·*,(ø·*,(ö·*,(ô·*(ú·*0uÛ,HtÛ {:0 {<0 {90 {;0s¬UoT+ oõQ(‘U*tÚ{70{80{Ý](‹U*0 2{f0 {g0 {ã/{É](²{°](‹U*0Zu¹,(t¹ { 0 {0 {°](‡U*t¸ {0 { 0 {°](‹U*0 x{C0 {D0 {ã/ {Ó] -1{Ò],() (²{°]+"(ü·+ () (²{°](‹U*0aoÆm {U;{_;(…U*0H[oÆm {U;{_;(…U-,oÆm om(¢–(sû£ (¤þ(¥**Ž{t;(ŽU,on{Ò:(…U**0K¿{t;(U,:on{Ò:(…U -!{u;(Žsû£ (¤(¥+**Ž{v;(ŽU,on{Ü:(…U**0K¿{v;(U,:on{Ü:(…U -!{w;(sû£ (¤(¥+**0J{@0(U *00*(”U-!oùQ(sû£ (¤þ(¥**0Ã(‡QEDat {'0{(0(–U*tÁ {%0 oÆm {U;{_;(…U*tÃ{*0{+0(U*tÄ{-0{/0{,0s®UoU+ o‰Q (‘U*¦,$oV‡oQ‡oR‡oS‡(“U(â* **0Ý  uï-" uñ-ftð{S0 (—U*tï {P0,%{P0(ˆ oÆm {U;{_;(…U*{Q0,{Q0(ˆ +Ñ*tñ{U0{W0{T0{V0 s°UoV+(ü·(W+  ojR (‘U*b{@0on{Ü:(…U*:(ç( }2*:{2(#i*V(V }2}2*R{2{2(2P*:(© }2*:{2(ˆU*V(V }2}2*R{2{2(U*(ã* *~oi‡oj‡ol‡om‡(“U*(ä* *~oV‡oQ‡oR‡oS‡(“U*(å* *0"!oy‡ (¡U -oz‡ (¡U**0Ð#uv--#uw--4rMps¤ (¤(X++6rWMps¤ (¤(X++tw- {ÁY {2 oËU u’,/t’{µ;(›sû£ (¤(Y++ t‘{´;(Jm(òh  s`mofm ÞWt m%¤m(Z+¥7 rS@p (p+(` {±;(œsû£ (¤ (œ + Þ   {g:{q:( k3&t{ :{¬:(e†+ (æ],(¸ *(+([ (\ (Ÿ+¥7 rS@p (p+(` (Ÿsû£ (¤( +*Ì ØW0 %oö² (] ,M (] (^ ( °(æ* (ç*  sÒU(p+o÷²sè* + o÷²( ° (æ* (ç* oõ²(²U*06°{2oé* ,{2þoê* *(³U {2oë* *0& {2{I8([+ -(n*(• *0n((,³E vC©„ÎùÚ{2{¥8*t‰- {ùY {øY {2{ÅYo (¶U(D]*t‹-{ûY  o ³(´UsØU o³(+(µU*tŠ-{úY +Ët-{ýY {2(¶U(C]*tŒ-{üY {2(¶U(B]*{2{˜8*t-{Z8Øþÿÿt-{ÿYi(I+ Þ$t (sû£ (¤ (Œ+ Þ *9G$02)sÚUo\+ -(v†þ(´U* (º* þ(]+*02,sÜUo¸+,(³*sÞUo¸+,sàUo€ +Ñ((³*sâUo¸+,,säUod +(¸U sæUo€ +(”²(³*sèUo¸+,sêUod +(¸U($³*sìUo¸+,sîUod +(¸U("³*sðUo¸+9ˆsòUr¥=po_ + Œ¶,+ r¨9ps‚ z Ži‡-Y2& £@(¸U¤‡-XX3Ú(^+ sôUod +sí* + (= sí* (î* (ï* (v† (·U  o~m  o† oþ .6 ofmoij o† oþ ( sû£ (¤ (+&+söUsøU (_+(`+(a+   (q -(°+ (=°súUo¸+,(³*(°*0Ç{B8{E8{º8(i, oµ þ+,{v8*{B8{E8{»8(i, oµ þ+,{t8*{B8{E8{¼8(i, oµ þ+,{w8*{B8{E8{¹8(i, oµ þ+,{u8**0+-($n3Atv {ƒ;(³ --{B8{E8{‚;{8(i,{‚; (Un*($n3Ttv {ƒ;(³ -@{‚; ofm{g:{i: (Ñi (n oÚi,{‚; (On*($n3Ktv{‚; ofmoij{;{ù:{I(¡sû£(¤(¥(Un*{;{ù:{I(¢sû£(¤(¥(Un*0.($n@tv {ƒ;(³ 9y{ƒ; (³ (³ ,e(³ (³ (³ -Q{B8{E8{‚;{8(i,2{‚; (´ (´ (»U(»U(Qn*($n3ntv{ƒ;(³ ,X{ƒ;(³ (³ -A{B8{E8{‚;{€8(i,!{‚; (´ (»U(Sn*(ºU*0s/{2 süUo¸+,)sþUod +(¼U sVo€ +(D]*sVo¸+,sVod +(¼U(C]*sVo¸+,sVod +(¼U(B]*s Vo¸+9‘s Vod +(·UsVr¥=po_ + Œ¶,+ r¨9ps‚ z ŽisY2& £@(¼U¤sXX3Ú(´ +sï +(·U(¤ sï (: (;  {B8{E8{Æ8(i,  oµ þ+, {r88w{B8{E8{Å8(i,  oµ þ+, {s8+B{B8{E8{¸8(i,  oµ þ+, {i8+  (¹U  o~m  o†  oµ .7 ofmoij o†  oµ ( sû£ (¤ (+&+ sV  (b+(µU*0 Ç2sVoU +(v† oc+ 9ó (í# sVo² +9Û (í# sVo€ +sVo¸+,sVod ++sVr†<po·+sVod+s"V(e+  -Ps$Vof+ s&Vof + oñ* (C†  (Psï£ (¤ (¬+8   (í# o+8øog+9ç(ò* s(Voh+9Ì(ò* s*Voi+s,Vod +s.Vr{Lpo4+s4V(· +{2(¼U(n]sFV(j+-:sHVof + oô* (C† (Qsï£ (¤ (¬++(ò* o5++ oc+ -"og+,sJVoU ++rÜMps\ z (í# sLVo€ +sNVo°+,sPVoã++sRVo°+,(Ö²+(Õ²sXV([+s^VoT +(¸U(P°*0N3(î -(z *oõ* s`V(k+ sbV(/+ (ß+  sfV(l+*0 9þ¹þ:sö* (m+ s÷* ¥¼oø*  oï ,t où* (ú* (û* ({ ,L({  (|    sü*  oý* ,  oþ* +(ÿ* (+ o+ 8Šÿÿÿ8„ÿÿÿÞ u   ,  oâ &Ü&Ü& þÀ  þù  þÁ s+ (n+s+ *8¹0 H;stV(o+ ( svV sxV Œ´se (:i*0e=s+ s+ (p+ (+ (+ (Ø -(1j+(/j (q+(i  s$ s+ sÈk*0?   (r+*zs€Voû(s+(t+*‚(ð (=j(‹ {u^(ÃU*0 tA{A^,(ù *s„V(u+ {@^( ° (˜ (— (ð (=j(‹  s + s + ( + ( + (t+(ù (ú *0 s†Vþ(v+*0<C(j² oe¼{p^(ÆU (ÄU ([ (ú (Ii*0sŒVþ(w+*Fs˜Vþ(,+*0ÈDuw-,tw-{ÁY+ròMps¤ (¤(Ä+ oG² (ÇU sšVoy²(c  (>i(¹hoE sœV{r^,(˜   {p^(ÉU+ sžV(,+szns€n*Žo &}2}2s + }2*"{2*"{2*"{2*ò}2}2}2}2}2}2}2(• *0ï{2YE ++o+b8•8©8ª{2¥7og }2}2{2oï ,0{2oh }2}2{2}2*}2+Ã}2{2(+}2}2{2}2*}2{2¥77*}2}2*0že {2YE+8y{2E ++*+++ ++++}2{2(+}2}2 Þ t   Þ&8mÿÿÿþ,z*e 0C{2E ++++ +++*****"{2*0 {2{2{2sÒU*r(g) } 2}!2}"2*j{ 2{!2{"2(¶U*(+ *"o‡*(J **þo‡*(J **þo‡*(E' **þo‡*(J **þoó†*(° *"o‡*(E' **þo‡*(J **þo ‡*(° *"o‡*(J **þo ‡*(° *"o‡*(J **þoð†*(º *"o‡*(° *"o‡*(+ *"(+ *(+ *0E(+ (+ olþ*(J **þo ‡*(J **þoó†*(° *"o‡*(E' **þo‡*(J **þo ‡*(° *"o‡*(J **þo ‡*(° *"o‡*(J **þoð†*(° *"o‡*(º *"o‡*V(+ }#2}$2*0RF{;|û:(j (Ñi (n oÚi,*{#2 {$2 {#2{$2(»U("n**(ß& *"o.‡*(¯' *foO‡,*o.‡þoð†*(ˆ$ *"o.‡*(J **þoð†*(° *"o‡*(ë) *"oö†*(+ **þou‡*(+ **þou‡*V(+ }%2}&2*ns V{%2od+{&2þ*(+ **þo-‡*(² **þoò†*(+ *>o.‡þoð†*(+ *"o.‡*(° *"o‡*(m* *"oû†*(+ *"oZ‡*(] *"o:‡*ò}'2}(2})2}*2}+2},2}-2(ç *0 è{,2YE +8œ8Œ8±{)2s0Vrõ=p{(2ox+¥LoÈ) }+2},2{+2oï ,Q{+2oÉ) }*2},2{'2{(2{*2s2V{(2oä+(¼U}-2*}*2+¢},2{+2(ü+}+2},2}-2*0‡e {,2YE++e{,2E + ++++},2{+2(ü+},2}-2 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{,2E + + +++***"{-2*0 {'2{(2{)2s4V*:(8 }.2*F{.2þ(ƒ]*(+ *"oZ‡*(] *"o:‡*0L}/2}02}12}22}32}42}52}62 }72(ç *0 {62YE +8É8¯8Þ{22sV{02oä+(¸U}42}62{/2{02{12{42(¶U}72*}42}328uÿÿÿ}62{52(ü+}52}62}72*0‡e {62YE++e{62E + ++++}62{52(ü+}62}72 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{62E + + +++***"{72*0 ${/2{02{12{22s@V*’(+ }82}92}:2};2*0A {82{2 s:V{82{92{;2s@V(· +{:2(w +*(² **þoò†*(ß& *(‡*(ˆ$ *"oq‡*(®) **þoO‡*(­) **o[‡Ži*(®) **þoP‡*(±' *"oZ‡*(] *"o:‡*ò}<2}=2}>2}?2}@2}A2}B2(Q *0 è{A2YE +8œ8Œ8±{>2sTVrõ=p{=2o· +¥LoÈ) }@2}A2{@2oï ,Q{@2oÉ) }?2}A2{<2{=2{?2sVV{=2oä+(¸U}B2*}?2+¢}A2{@2(ü+}@2}A2}B2*0‡e {A2YE++e{A2E + ++++}A2{@2(ü+}A2}B2 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{A2E + + +++***"{B2*0 {<2{=2{>2sXV*(Þ& **þo-‡*:(+ }C2*N{¤]{C2(3i*(Œ *"(i*’(+ }D2}E2}F2}G2*0 0{F2{D2{G2{E2(ú°(¶U{D2(&l*’(+ }H2}I2}J2}K2*0˜G{H2{I2{J2{K2sdV{¥](y+ {§],{H2(0l(¤# + {©],{H2(.l(¤# + {ª],{H2(4l(¤# + {; (ÿk*ò}+ } + }!+ }"+ }#+ }$+ }%+ (&+ *0þI{$+ YE +8ª8„8¿{ + ¥Ìo'+ }#+ }$+ {#+ oï ,t{#+ o(+ }!+ {!+ ()+ }"+ {!+ (*+ (í -#}$+ {+ {"+ o++ }%+ *+þ-}"+ }!+ 8ÿÿÿ}$+ {#+ (z+}#+ }$+ þ}%+ *0’J {$+ YE+8m{$+ E + ++++}$+ {#+ (z+}$+ þ}%+  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{$+ E + + +++***"{%+ *0 (I{+ { + þ-þs,+ *0L}-+ }.+ }/+ }0+ }1+ }2+ }3+ }4+  }5+ (&+ *08L{4+ YE +8ä8¬8ù{.+ ¥Ño6+ }3+ }4+ {3+ oï 9«{3+ o7+ }/+ {/+ (8+ (9+ s:+ }0+ {0+ (;+ }1+ {0+ (<+ }2+ }4+ {-+ {1+ {2+ ({+}5+ *}2+ þ}1+ }0+ þÓ}/+ 8Eÿÿÿ}4+ {3+ (|+}3+ }4+ þ}5+ *0’J {4+ YE+8m{4+ E + ++++}4+ {3+ (|+}4+ þ}5+  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{4+ E + + +++***"{5+ *0 2L{-+ {.+ þÓþþs>+ *ò(?+ }\2}]2}^2}_2}`2}a2}b2*0 U{\2{]2{^2{_2{a2(/j(Æh{`2{b2(‹ (Z (x+{b2{&^(ÃU*r(@+ }c2}d2}e2*0 ${c2{d2(¤ {e2{^(¾U*(¥ *"(™£*Ò(?+ }A+ }B+ }C+ }D+ }E+ }F+ *0 5{A+ {B+ {C+ {D+ {E+ (1j(Æh{F+ (}+*’(G+ }H+ }I+ }J+ }K+ *0 SM{H+ {I+ {J+ {K+ sL+ (o+ {K+ ( ()i{I+ sY‰($‰( (äk*’(M+ }N+ }O+ }P+ }Q+ *0 LQ(R+ (S+ oT+ (U+ (V+ {N+ {O+ {Q+ {P+ oW+ (ÀU*:(X+ }t2*0 <R(Y+ (Z+ ([+ (\+ {t2 s]+ (~+s + s + *V(^+ }u2}v2*v{v2{u^{u2{@^oÄ»*’(_+ }w2}x2}y2}z2*0²T{x2{z2{?^o`+ {z2s‚V(+(a+ Þt u‰, Þþ , {y2{z2{D^(b+ s]+ *{z2{?^oy²{y2oy²{z2{@^(ž{w2sû£ (¤ (€+*130\}{2}|2}}2}~2}2}€2}2}‚2 }ƒ2 }„2 }…2(c+ *0 C{„2YE +8ó8Æ8¶8{2oàod+ }2}„2{2oï 9¯{2oe+ }€2{{2{|2{}2{~2{€2(ÅU¥âof+ }ƒ2}„2{ƒ2oï ,0{ƒ2og+ }‚2}„2{‚2}…2*}‚2+Ã}„2{ƒ2(+}ƒ2}€28Aÿÿÿ}„2{2(‚+}2}„2}…2*0¥e {„2YE+8€{„2E ++5++++)}„2{ƒ2(+}„2{2(‚+}„2}…2 Þ t   Þ&8fÿÿÿþ,z*lˆ ê{„2E +++ +++****"{…2*0+{{2{|2{}2{~2{2s†V*0d}†2}‡2}ˆ2}‰2}Š2}‹2}Œ2}2 }Ž2 }2 }2 }‘2(h+ *0 æ{2YE +8’8È8X8H8›{‰2oÜ»¥äoi+ }2}2{2oï 9H{2oj+ }‹2{‡2oõ* {†2{ˆ2{?^{Š2{‹2{:^(ô²(³U}Œ2}2{Š2(è+{ˆ2{@^sè* {Œ2sk+ }‘2*{†2{‡2{ˆ2{‹2{<^{Š2{‹2{:^([ (\ (Ÿ+(ÈU¥çol+ }2}2{2oï ,0{2om+ }Ž2}2{Ž2}‘2*}Ž2+Ã}2{2(ƒ+}2}Œ2}‹28¨þÿÿ}2{2(„+}2}2}‘2*0¯e {2YE+8Š{2E ++;+$+ +++,}2{2(ƒ++}2{2(„+}2}‘2 Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{2E ++++ +++*****"{‘2*0,{†2{‡2{ˆ2{‰2{Š2sŒV*0l}’2}“2}”2}•2}–2}—2}˜2}™2 }š2 }›2 }œ2 }2 }ž2(h+ *0 =V{2YE +8é8ú8š8Š8ò{”2oàod+ }š2}2{š2oï 9Ÿ{š2oe+ }•2{•2{@^( °}–2{–2(˜ }—2{–2(— }˜2{’2oõ* {“2{•2{?^([ {•2{@^(ô²(³U}™2}2{—2(è+{˜2sè* {™2sk+ }ž2*{“2 {’2 {•2 {“2{’2{•2{•2{C^{—2{˜2([ (\ (Ÿ+(ÈU¥çol+ }œ2}2{œ2oï ,0{œ2om+ }›2}2{›2}ž2*}›2+Ã}2{œ2(ƒ+}œ2}™2}˜2}—2}–2}•28Qþÿÿ}2{š2(‚+}š2}2}ž2*0¯e {2YE+8Š{2E ++;+$+ +++,}2{œ2(ƒ++}2{š2(‚+}2}ž2 Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{2E ++++ +++*****"{ž2*0#{’2{“2{”2s’V*r(9 }Ÿ2} 2}¡2*0/{Ÿ2{ 2{¡2s’V(w+þ(…+*V(7 }¢2}£2*j{¢2oõ* {£2(¼U*:(8 }¤2*†(a{¤2oõ* {2þ(]*(9 *&þ(Ö+**0+ºrÁNps" (+ sÑVo@oDþ(+*0+°rÁNpsn+ (†+ sÕVo@oD(‡+&*0-ºrÁNps" (+ sÙVo?oDXþ(+*0(nxEÀ**2(nxEþ*0¹Y(nxEÀ 79=;¬?C A$‚XEtfž********t} {/C,+Þ*t~ {0C,+Ë********t˜{JC ob *t•{GC +ëtš{LC +Ýt™{KC +Ït”{FC +Át–{HC +³t›{MC +¥*0([(nxEÀ ****tu {'C8Øüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0$[(nxEÀ**tu {'C8Üüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0$[(nxEÀ**tu {'C8Üüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ0&[(nxEÀ***tu {'C8Úüÿÿ00[(¤V,*(nxEÀ***tu {'C8Ðüÿÿ0$[(nxEÀ**tu {'C8Üüÿÿ0(nxEÀ**0(nxEÀ**0(nxEÀ**0,\(nxEÀ2N@\$”¢g*(nx\þ*(nx:þ*(nx9þ*(nx Œþ*(nx Œþ*(nx Œþ*(nx Œþ*(nx@þ*t} {/C,Š(nx ž@zÿÿÿt~ {0C*(nx Œþ*tx (nx ™@Gÿÿÿty {+C{*C( ( ( (  (ñ ,  þ+9ñþÿÿ {+C{*C*0^¥((ˆ+ (o+ 9À (p+ !YE6(p+ $YE¸Ä(p+ *YEƺ(p+ -YE¨(p+ /YEŠ(p+ (p+ |YE (p+ ~YE*(\x(q+ *(^x(q+ *(`x(q+ *(bx(q+ *(Zx(q+ *(Vx(q+ *(o+ (o+ ,Û(o+ (p+ *YE+À(dx(q+ *(Xx(q+ *(o+ (o+ 9hÿÿÿ(o+ (p+ =YEsÿÿÿ8Jÿÿÿ09_¥((‰+sr+ rS@p(ñ ,(†w(q+ 8írâFp(ñ ,(`w(q+ 8Ðr|8p(ñ ,(hw(q+ 8³rê p(ñ ,(x(q+ 8–rWp(ñ ,(‚w(q+ 8yrgâp(ñ ,(„w(q+ 8\rÑNp(ñ ,(’w(q+ 8?rKp(ñ ,(Šw(q+ 8"r´9p(ñ ,(¬w(q+ 8rýp(ñ ,(žw(q+ 8èrìDp(ñ ,(°w(q+ 8Ër×Np(ñ ,(vw(q+ 8®rCp(ñ ,(xw(q+ 8‘r@-p(ñ ,((x(q+ 8srÝNp(ñ , (jw(q+ +YráNp(ñ ,ráNp($x(q+ +:råNp(ñ ,råNp($x(q+ +rR9p(ñ ,+ (¸V sÙW(Š+ss+ (t+ *0A`sÓW¥((‹+(ˆ+ sÕW¥((Œ+(ˆ+ ou+ -*(¹V*0Æc(v+ ,~ (w+ (WE7.*(w+ t~ {ä2(nxIþ*(v+ 8Lÿÿÿ(v+ +ï(v+ +æ0^&f(v+ 9F& (w+ (WE˜%­%(v+ ,* (w+ (W3-(v+ 8Eÿÿÿ(v+ ,~ (w+ (WEŸ$#Ó$ë\’$ì"á# $¹$ù"£!##"Â"H$U$w"¬$b$Æ$›"o†rëNp {só z(v+ (v+ 9-(v+ (w+ (W@ (v+ (v+ 9ê (v+ (w+ (W@Â(w+ t~{ä2(nxEÀ‡!(w+ oWoWoDsx+ *(w+ (w+ (v+ oWoDoWoD0oWoWoDsx+ *oWoWoDsx+ *(w+ (w+ (v+ +˜(w+ 8Xÿÿÿ(w+ 8Kÿÿÿ(w+ 8>ÿÿÿ(w+ 81ÿÿÿ(v+ (v+ 9ö(v+ (w+ (W@¼ (v+ (v+ 9Ž (v+ (w+ (W3L(W3+(w+ (v+ oWoWoDsx+ *(v+ 8Çùÿÿ(W3(v+ 8¦ùÿÿ(v+ +Æ(W3 (v+ +Ó(v+ +¨(W3 (v+ +µ(v+ 8‡ÿÿÿ(W3 (v+ 8‘ÿÿÿ(v+ 8cÿÿÿ(v+ (v+ ,K(v+ (w+ (W3) (w+  (v+ oWoWoDsx+ *(w+ 8¯ýÿÿ(w+ 8¢ýÿÿ(v+  8¿øÿÿ(w+ t~{ä2(nxEÀ=ÄÚ ³ ÇöŒ(w+ 8búÿÿ(v+ (v+ 9é(v+ (w+ (WE d(w+ 8Âùÿÿ (v+ (v+ ,= (v+ (w+ (W3(v+ 8·ôÿÿ(w+ 8xùÿÿ(w+ 8kùÿÿ (v+ (v+ 9å (v+ (w+ (WE÷; q¼(w+ 8Éøÿÿ(v+ (v+ ,I(v+ (w+ (W3$(w+ oWoWoDXsx+ *(w+ 8røÿÿ(w+ 8eøÿÿ(v+ (v+ ,0(v+ (w+ (W3 (w+ +š(w+ 8'øÿÿ(w+ 8øÿÿ(W3$(w+ oWoWoDXsx+ *(w+ 8ß÷ÿÿ(W3 (w+ +Ã(w+ 8½÷ÿÿ(W3 (w+ +¡(w+ 8›÷ÿÿ(W3(w+ 8|ÿÿÿ(w+ 8v÷ÿÿ(w+ 8i÷ÿÿ(w+ 8\÷ÿÿ(v+ (v+ 9”(v+ (w+ (W3q (v+ (v+ ,W (v+ (w+ (W32(w+ t{  {á2, (w+ 8íöÿÿ(w+ 8Eþÿÿ(w+ 8Òöÿÿ(w+ 8Åöÿÿ(w+ 8¸öÿÿ(w+ 8«öÿÿ(v+ (v+ 9(v+ (w+ (W@ï (v+ (v+ 9Ò (v+ (w+ (WE? (w+ 8àõÿÿ(w+ t{  {á2, (w+ 8¼õÿÿ(w+ 8ýÿÿ(w+ 8ýÿÿ(w+ 8“õÿÿ(w+ 8†õÿÿ(w+ 8yõÿÿ(v+ (v+ 9î(v+ (w+ (WE (w+ 8Ùôÿÿ (v+ (v+ 9ô (v+ (w+ (WEJ?Û% (w+ 87ôÿÿ(w+ t{  {á2, (w+ 8ôÿÿ(w+ 8kûÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 87ûÿÿ(w+ 8Äóÿÿ(w+ 8·óÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8éúÿÿ(w+ 8vóÿÿ(w+ 8ióÿÿ(W3(w+ 8Jûÿÿ(w+ 8Dóÿÿ(W3(w+ 8%ûÿÿ(w+ 8óÿÿ(W3(w+ 8ûÿÿ(w+ 8úòÿÿ(W3(w+ 8Ûúÿÿ(w+ 8Õòÿÿ(w+ 8Èòÿÿ (v+ (v+ ,3 (v+ (w+ (W3(w+ 8ûùÿÿ(w+ 8ˆòÿÿ(w+ 8{òÿÿ(w+ 8nòÿÿ(v+ (v+ 9¼(v+ (w+ (WEì (w+ 8Îñÿÿ (v+ (v+ 9 (v+ (w+ (WEÎ [©ó(w+ 8,ñÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8^øÿÿ(w+ 8ëðÿÿ(w+ 8Þðÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8øÿÿ(w+ 8ðÿÿ(w+ 8ðÿÿ(W3(w+ 8qøÿÿ(w+ 8kðÿÿ(W3(w+ 8Løÿÿ(w+ 8Fðÿÿ(W3(w+ 8'øÿÿ(w+ 8!ðÿÿ(W3(w+ 8øÿÿ(w+ 8üïÿÿ(w+ 8ïïÿÿ (v+ (v+ ,3 (v+ (w+ (W3(w+ 8"÷ÿÿ(w+ 8¯ïÿÿ(w+ 8¢ïÿÿ(w+ 8•ïÿÿ(v+ (v+ 9¼(v+ (w+ (WEì (w+ 8õîÿÿ (v+ (v+ 9 (v+ (w+ (WEÎ [©ó(w+ 8Sîÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8…õÿÿ(w+ 8îÿÿ(w+ 8îÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 87õÿÿ(w+ 8Äíÿÿ(w+ 8·íÿÿ(W3(w+ 8˜õÿÿ(w+ 8’íÿÿ(W3(w+ 8sõÿÿ(w+ 8míÿÿ(W3(w+ 8Nõÿÿ(w+ 8Híÿÿ(W3(w+ 8)õÿÿ(w+ 8#íÿÿ(w+ 8íÿÿ (v+ (v+ ,3 (v+ (w+ (W3(w+ 8Iôÿÿ(w+ 8Öìÿÿ(w+ 8Éìÿÿ(w+ 8¼ìÿÿ(v+ (v+ 9¼(v+ (w+ (WEì (w+ 8ìÿÿ (v+ (v+ 9 (v+ (w+ (WEÎ [©ó(w+ 8zëÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8¬òÿÿ(w+ 89ëÿÿ(w+ 8,ëÿÿ(v+ (v+ ,3(v+ (w+ (W3(w+ 8^òÿÿ(w+ 8ëêÿÿ(w+ 8Þêÿÿ(W3(w+ 8¿òÿÿ(w+ 8¹êÿÿ(W3(w+ 8šòÿÿ(w+ 8”êÿÿ(W3(w+ 8uòÿÿ(w+ 8oêÿÿ(W3(w+ 8Pòÿÿ(w+ 8Jêÿÿ(w+ 8=êÿÿ (v+ (v+ ,3 (v+ (w+ (W3(w+ 8pñÿÿ(w+ 8ýéÿÿ(w+ 8ðéÿÿ(w+ 8ãéÿÿ{ä2t}  {/C9Š(v+ (v+ ,p(v+ (w+ (W 3M (v+ (v+ ,3 (v+ (w+ (W3(w+ 8Ùðÿÿ(w+ 8féÿÿ(w+ 8Yéÿÿ(w+ 8Léÿÿ(w+ 8?éÿÿ(w+ 82éÿÿ(v+ (v+ ,p(v+ (w+ (W3M (v+ (v+ ,3 (v+ (w+ (W3(w+ 8Bðÿÿ(w+ 8Ïèÿÿ(w+ 8Âèÿÿ(w+ 8µèÿÿ(w+ 8¨èÿÿ(v+ (v+ ,p(v+ (w+ (W3M (v+ (v+ ,3 (v+ (w+ (W3(w+ 8¸ïÿÿ(w+ 8Eèÿÿ(w+ 88èÿÿ(w+ 8+èÿÿ(w+ 8èÿÿ(v+ (v+ 9(v+ (w+ (W@ñ (w+ t~{ä2(nxEÀ·E )›(w+ 8Êäÿÿ (v+ (v+ ,t (v+ (w+ (W 3O(v+ (v+ ,4(v+ (w+ (W3(v+ 8Üêÿÿ(w+ 8cäÿÿ(w+ 8Väÿÿ(w+ 8Iäÿÿ(w+ 8<äÿÿ (v+ (v+ ,t (v+ (w+ (W 3O(v+ (v+ ,4(v+ (w+ (W3(w+ 8Ûëÿÿ(w+ 8Õãÿÿ(w+ 8Èãÿÿ(w+ 8»ãÿÿ(w+ 8®ãÿÿ (v+ (v+ ,t (v+ (w+ (W 3O(v+ (v+ ,4(v+ (w+ (W3(w+ 8Mëÿÿ(w+ 8Gãÿÿ(w+ 8:ãÿÿ(w+ 8-ãÿÿ(w+ 8 ãÿÿ (v+ (v+ ,t (v+ (w+ (W 3O(v+ (v+ ,4(v+ (w+ (W3(w+ 8¿êÿÿ(w+ 8¹âÿÿ(w+ 8¬âÿÿ(w+ 8Ÿâÿÿ(w+ 8’âÿÿ (v+ (v+ ,t (v+ (w+ (W 3O(v+ (v+ ,4(v+ (w+ (W3(w+ 81êÿÿ(w+ 8+âÿÿ(w+ 8âÿÿ(w+ 8âÿÿ(w+ 8âÿÿ(w+ 8÷áÿÿ(w+ 8êáÿÿ(v+ (v+ ,i(v+ (w+ (W3J(W3) (w+  (v+ oWoWoDsx+ *(v+ 8°Üÿÿ(v+ +ç(v+ +Ý(W3((w+ (v+ oWoWoDsx+ *(w+ oWoWoDXsx+ *(W3(w+ (v+ +ª(w+ +Á(W3(w+ (v+ 8ƒÿÿÿ(w+ +š(W3(w+ (v+ 8\ÿÿÿ(w+ 8¡àÿÿ(v+ 8ÿÿÿ(v+ 8úþÿÿ(v+ 8íþÿÿ(WE F5(w+ 8Åþÿÿ(w+ (v+ oWoWoDsx+ *(w+ (v+ +Ö(w+ (v+ +Å(W3((w+ (v+ oWoWoDsx+ *(w+ 8mßÿÿ(W3(w+ (v+ +¿(w+ 8Eßÿÿ(w+ 8þÿÿ(w+ 8úýÿÿ(w+ t{  {á2, (w+ 8ßÿÿ(w+ 8Êýÿÿ(w+ 8½ýÿÿ(w+ 8°ýÿÿ(w+ 8£ýÿÿ(w+ 8ÇÞÿÿ(w+ 8ºÞÿÿ(w+ 8­Þÿÿ(v+ 8ÊÙÿÿ:MÚÿÿ(v+ 8¯ÙÿÿoWsx+ *0Þ i oéW {3 sy+ (z+ ({+ (|+ oåW (nxEÀ  , (++,*(nxEÀçÅÅççœ(nxEÀPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPše3PPP18öÿÿ*X8höÿÿtš{LCr¨Op(ñ ,²+Ì86öÿÿt™{KCr; p(ñ ,+Î{KCr®Op(ñ 9hÿÿÿ+¶t–{HCr‡p(ñ 9Hÿÿÿ+–Y18Áõÿÿ*Y(nx žþþ16þsy+ (z+ o}+ ({+ (|+ 8kõÿÿ-(oóW  ,   (9 (nx[þ++,.oðW  (0woÑWsy+ (z+ ({+ (|+ +*tš{LC(ºV  9Gûÿÿ (6 (7   (6 (8   ŽiY1: þþsy+ (z+ o}+ ({+ (|+ 8‰ôÿÿ þ,(oóW  , (9 (nx[þ++,.oðW  (0woÑWsy+ (z+ ({+ (|+ +**0)j (nx 3*oðWoåWo@o@þ*00j (nx 3*(¾V-*oñW(nxEÀ**0mk oéW {3(nxEÀE8@89oéW {3(nxEÀ+ +(ÀV oçW+ oçW*0l (nxEÀ* (ÀV*09m oçW{3(~+ oG |3{3 oâWoöW*0/m oçWoåW |3{3 oâWoöW*ÒsX(Ž+-*sX(Ž+,*sX(+þþþ*0çp(WE$5*(w(q+ *(w(q+ *(w(q+ *tf {Ç2,Í+ät {è2(WE¨ÿÿÿ +¦( w(q+ *(w(q+ *0Õq (nxEÀúý½Ý(nxC@V(v+ ,~ (w+ (WE­*(v+ (v+ ,ð(v+ (w+ (WEmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿmÿÿÿ8hÿÿÿ*(w+ t{ {á2*(w+ t~{ä2(·V*(v+ 9%ÿÿÿ (w+ (W@ÿÿÿ(w+ t~{ä2+¼(v+ 9Xþÿÿ (w+ (W@Eþÿÿ*(v+ 98þÿÿ (w+ (W@%þÿÿ+Þ(v+ 9þÿÿ (w+ (W@þÿÿ+¾(v+ 9øýÿÿ (w+ (W@äýÿÿ+(v+ 9×ýÿÿ (w+ (WEYýÿÿYýÿÿÿÿÿYýÿÿYýÿÿYýÿÿYýÿÿÿÿÿYýÿÿYýÿÿYýÿÿYýÿÿYýÿÿYýÿÿYýÿÿÿÿÿÿÿÿYýÿÿYýÿÿÿÿÿÿÿÿYýÿÿYýÿÿÿÿÿYýÿÿYýÿÿ8Týÿÿ(v+ (v+ 9Dýÿÿ(v+ (w+ (W@+ýÿÿ(w+ t~{ä2(nxI@ ýÿÿ8Áþÿÿ(v+ 9ûüÿÿ (w+ (W@èüÿÿ8žþÿÿ(v+ 9 (w+ (WEoìW9Nüÿÿ **oìW9<üÿÿ +ì0'r({ , ({ o+ ,*+Ü*0st(v+ þþ9^(nxEÀB**(ÆVþ*(ÆV-#o€+ o+¥òo+ þo‚+ **t~ {0C,¯+¿*0+u(v+ 9• (v+ (v+ -*(v+ (w+ (WE**(w+ t~ {ä2(nxEÀàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿ@àüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿàüÿÿ8Ûüÿÿ(v+ (v+ 9Ëüÿÿ(v+ (w+ (W@²üÿÿoƒ+ oƒ+ 8üÿÿ(v+ (v+ 9üÿÿ(v+ (w+ (W@wüÿÿ+Ã0Šv (ì {$3:õ{*3(v+ þ-{*3(ÉVþ+9²{*3o„+ (WE+'8*t~ {ä2(nxEÀâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿâüÿÿ8Ýüÿÿ+ ++9{*3o„+ (WE€ r´Ops\ zoîW8ƒûÿÿt{è2(WE(oîWs X( 8CûÿÿoîW86ûÿÿoîWsX( 8ûÿÿoîW8ûÿÿ+oÑWoèW+oÑWoèWX2ç(‘+¥Ko+ oï ,o, oK &+æÞu   ,  oâ &Ü&Ü&*Mlî|3{3|3{3|3{3sÅW{3sÎWoçW*0tw {3 (nxEÀ9)1 rWps\ zt”{FC +$t{{-C +îrýp+r(Pp+r|8p (Tx oçWoÑWoçW*0—‚{3 (nxEÀ5Ù­5éQ (ÌV*t‘ {CC(…+ {CC(†+ ,+e, +s‡+ (Px(ËV*t{BC(ˆ+ {BC(‰+ ,+e, +sŠ+ (Nx(ËV*tŽ{@C(" {@C(# ,+e, +s  (Jx(ËV*t{AC(" {AC(# ,+e, +s  (Lx(ËV*t  {?C(‹+   {?C(Œ+ , + e, +s+ (Hx(ËV*t‡  {9C , + e(W*.(Wþ*sAW*.(Wþ*sCW*.(Wþ*"sEW*.(Wþ*sHW*.(Wþ*sJW*.(Wþ*"sLW*.(Wþ*&sOW*.(Wþ*"sSW*.(Wþ*{«2*Zr.8ps+ (’+o+ *0+(WEGè_N=µÆù ,’pUcq“¤+9‚£×tw{Ú2 *tx{Ü2 +ït}{ã2 +át{{à2 +Ót|{â2 +Åtf{È2 +·tt{×2 +©tu{Ø2 +›tv{Ù2 8Šÿÿÿt~{å2 8yÿÿÿty{Þ2 8hÿÿÿtz{ß2 8Wÿÿÿtk{Í2 8Fÿÿÿtl{Î2 85ÿÿÿt€{ê2 8$ÿÿÿtg{É2 8ÿÿÿtm{Ï2 8ÿÿÿtn{Ð2 8ñþÿÿto{Ñ2 8àþÿÿtp{Ò2 8Ïþÿÿtj{Ì2 8¾þÿÿti{Ë2 8­þÿÿth{Ê2 8œþÿÿtr{Õ2 8‹þÿÿts{Ö2 8zþÿÿtq{Ó2 8iþÿÿt{ç2 8Xþÿÿ6oWoD*0;Š(WE RX^Y†L—djŒ’˜¤ª ž°r.Pp*r(ÛV}É2*{É2*>(ÛV}Ê2*{Ê2*>(ÛV}Ë2*{Ë2*>(ÛV}Ì2*{Ì2*>(ÛV}Í2*{Í2*>(ÛV}Î2*{Î2*>(ÛV}Ï2*{Ï2*>(ÛV}Ð2*{Ð2*B (ÛV}Ñ2*{Ñ2*B (ÛV}Ò2*{Ò2*^ (ÛV}Ó2}Ô2*{Ó2*{Ô2*B (ÛV}Õ2*{Õ2*B (ÛV}Ö2*{Ö2*B(ÛV}×2*{×2*B(ÛV}Ø2*{Ø2*B(ÛV}Ù2*{Ù2*^(ÛV}Ú2}Û2*{Ú2*{Û2*^(ÛV}Ü2}Ý2*{Ü2*{Ý2*B(ÛV}Þ2*{Þ2*B(ÛV}ß2*{ß2*^(ÛV}à2}á2*{à2*{á2*B(ÛV}â2*{â2*B(ÛV}ã2*{ã2*^(ÛV}ä2}å2*{ä2*{å2*z(ÛV}æ2}ç2}è2*{æ2*{ç2*{è2*^(ÛV}é2}ê2*{é2*{ê2*:( }ë2*2{ë2{Ç2*2{ë2{È2*:( }ì2*2{ì2{É2*:( }í2*2{í2{Ê2*:( }î2*2{î2{Ë2*:( }ï2*2{ï2{Ì2*:( }ð2*2{ð2{Í2*:( }ñ2*2{ñ2{Î2*:( }ò2*2{ò2{Ï2*:( }ó2*2{ó2{Ð2*:( }ô2*2{ô2{Ñ2*:( }õ2*2{õ2{Ò2*:( }ö2*2{ö2{Ó2*2{ö2{Ô2*:( }÷2*2{÷2{Õ2*:( }ø2*2{ø2{Ö2*:( }ù2*2{ù2{×2*:( }ú2*2{ú2{Ø2*:( }û2*2{û2{Ù2*:( }ü2*2{ü2{Ú2*2{ü2{Û2*:( }ý2*2{ý2{Ü2*2{ý2{Ý2*:( }þ2*2{þ2{Þ2*:( }ÿ2*2{ÿ2{ß2*:( }3*2{3{à2*2{3{á2*:( }3*2{3{â2*:( }3*2{3{ã2*:( }3*2{3{ä2*2{3{å2*:( }3*2{3{æ2*2{3{ç2*2{3{è2*:( }3*2{3{é2*2{3{ê2*Šs–W€3s–W€3s–W€ 3*:( }3*~3**(Wþ*~3**(Wþ*~ 3**(Wþ*{3*Zr.8ps“+ (•+o”+ *01.þ, þ,{3 {3 3*Y**þ,**:¥œoŸW*0BŒ¥œ þ,%¥œþ,{3 {3 3*Y**¥œþ,**0.þ,% (WE * * **6(n o¢W*0.Œþ,uœ ,{3 {3 þ**þþ*0*.þ,þ,{3 {3 þ**þþ*0uœ ,o¥W**^s¨W€3s¨W€3*:( } 3*~3**(­Wþ*~3**(­Wþ*{ 3*Zr.8ps•+ (–+o–+ *01.þ, þ,{ 3 { 3 3*Y**þ,**:¥žo¯W*0BŽ¥ž þ,%¥žþ,{ 3 { 3 3*Y**¥žþ,**0þ, (­W3 * **6(n o²W*0.Žþ,už ,{ 3 { 3 þ**þþ*0*.þ,þ,{ 3 { 3 þ**þþ*0už ,oµW**:( }3*B{3þo *:(—+ }3*0{{3o˜+ s·W*:( }3*B{3þo *:(` }3*0{{3oa s»W*0o‘ (y {3{3(—+ /*1*(y {3{3(—+ /*1*(y {3{3/*þ*:¥¤(¿W*0h“¥¤  {3{3(—+ /*1*{3{3(—+ / * 1 *{3{3/*þ*0P ¹y7ž{3bcXXX ¹y7ž{3(˜+bcXXX ¹y7ž{3(˜+bcXXX *6(n (ÂW*0P”(™+-*¥¤  {3{3(š+,%{3{3(š+,{3{3þ***^}3}3}3*"{3*"{3*"{3*0=• {3{3(›+,${3{3(›+,{3{3þ***b(™+-*¥¤(ÉW*{3*{3*{3*~o &}3}3}3*6|3{3*6|3{3*0)–{3 {3{3sÅW{3sÎW*05–{3 {3oG{3oGsÅW{3sÎW*(Ñ *>þ*(Ñ *>þ*(š+ *"(*x*²}3}3}3}3} 3(›+ *0«{3YE + +b+U8z{3¥(o }3}3{3oï ,/{3o }3}3s×W} 3*}3+Ä}3{3(œ+}3}3} 3*0‡e {3YE++e{3E + ++++}3{3(œ+}3} 3 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{3E + + +++***"{ 3*0 {3sÙW*0h–o &}!3}$3}"3}#3þ¤}%3}&3sœ+ }'3}(3})3(+ }*3}+3*"{#3*00—{)3- oêW +{!3oQv,o÷W*oûW**sÅW*¢{#3o; {#3o: {#3oÍ sÅW*î{#3{3ož+ {#3{3o/ {#3{3oŸ+ *¶{3(nx 3|3{3oH*|3{3*0l˜{&3, {%3+oãW oäW{3 {3 {"3{#3o + oãW}%3}&3 s¦ sÎW*:{'3o¡+ *boçW{(3X}(3*Š{'3o¢+ 1 {'3o£+ *oæW*0@—oéW oçW})3(©WoåW(™W(W{*3(¤+ }*3*0-*oåW|3{3(òˆsov (¤þ(¥*0*™(v+ , (w+ (W 3(v+ (»V**0h› (W 3+E{*3(¼V (¥+ (¦+ oWoD /(£V(¨oëW+{*3(¤+ }*3*0 ™{*3 (v+ , (v+ }*3**JoîWoíW*0—oéW oçW*6oðW{3*0oåW |3{3þ(+*02—oðW {3(nxEÀ*oòW, {3(q+ **FoðWþoòW*0‹oðW {3 (nxEÀ*tš {LCr¨Op(ñ ,å|3{3 oòW,>(§+ s¨+   (½V  sþW(z+ (ž+ **^oäW(¶V}+3*09b´oéW oøW,+çoåW {3 {3 oD(nxCþsXsX{*3 {(31{(3Y}(3 oöW*{*3(ÈV,L{*3o„+  oîW (ÅV  ,   (9 (ÃV*  oçW 8ÿÿÿ(nxEÀ^æ]0^(nxEÀwY#YËYÒXxWX`XZsZ(nx Œ@x (v+ ,o (w+ (W3\(w+ tl{Î2XoDþþþ,0{Î2oîW(woÑWoçW (woöW* (v+ 9 (w+ (WE’DðHêS (v+ ,l (w+ (W 3X(w+ tq{Ó2,+oDþþ,({Ó2oîW  oçW 8|÷ÿÿ (v+ 9y (w+ (W3e(w+ t{æ2(­W3H(nx5þ,;{ç2{è2(©W(WoïWoçW8÷öÿÿ (v+ ,o (w+ (W3[(w+ t{æ2(­W3>,;{ç2{è2(«W(WoïWoçW8öÿÿ (v+ 9. (w+ (W@(w+ t{æ2(­W@÷(v+ {ç29r(v+ ,(w+ (Wþ+(v+ ,(w+ (Wþ+,(nx ”þ+, (±V+(²Vþ+,oDþ+,o@o@þþ+,>(v+ {ç2{è2(©W(WoïW(w(ÂV* (v+ 9y (w+ (W3f(w+ tf{Ç2,O{È2,+(°V,X+oDþþ,{È2oîW(w(ÃV* (v+ 9q (w+ (W3](w+ tt{×2,+(ªV,X+oDþþ,{×2oîW(w(ÃV* (v+ 9|   (w+ (W3h (w+ tu!!{Ø2,+(«V,X+oDþþ,(!{Ø2oîW  oçW 8»óÿÿ (v+ 9| ""(w+ (W3h"(w+ tv##{Ù2,+(­V,X+oDþþ,(#{Ù2oîW  oçW 83óÿÿ (v+ 9 $$(w+ (W@v$(w+ t{%%{á2%{à2,þ+,+oDþþ,1%{á2%{à2oîW  oçW 8šòÿÿ (v+ ,s &&(w+ (W3_&(w+ t|''{â2(¬V,X+oDþþ,('{â2oîW  oçW 8òÿÿ (v+ ,l (((w+ (W3X((w+ t})){ã2,+oDþþ,(){ã2oîW  oçW 8©ñÿÿ (v+ ,a **(w+ (W3M*(w+ tz++{ß2,+oDþþ,+{ß2oîW(w(ÃV* (v+ ,l ,,(w+ (W3X,(w+ ty--{Þ2,+oDþþ,(-{Þ2oîW  oçW 8Êðÿÿ (v+ 9{ ..(w+ (W3h.(w+ tg//{É2,+(§V,X+oDþþ,(/{É2oîW  oçW 8Cðÿÿ (v+ 9p 00(w+ (W3]0(w+ tk11{Í2,+(°V,X+oDþþ,1{Í2oîW(w(ÃV* (v+ 9p 22(w+ (W3]2(w+ tl33{Î2,+(³V,X+oDþþ,3{Î2oîW(w(ÃV* (v+ ,k 44(w+ (W3X4(w+ tm55{Ï2,+oDþþ,(5{Ï2oîW  oçW 8×îÿÿ (v+ 9{ 66(w+ (W3h6(w+ tn77{Ð2,+(®V,X+oDþþ,(7{Ð2oîW  oçW 8Pîÿÿ (v+ 9| 88(w+ (W 3h8(w+ to99{Ñ2,+(¯V,X+oDþþ,(9{Ñ2oîW  oçW 8Èíÿÿ (v+ ,l ::(w+ (W 3X:(w+ tp;;{Ò2,+oDþþ,(;{Ò2oîW  oçW 8Síÿÿ (v+ ,` <<(w+ (W3M<(w+ ti=={Ë2,+oDþþ,={Ë2oîW(w(ÃV* (v+ ,k >>(w+ (W3X>(w+ tj??{Ì2,+oDþþ,(?{Ì2oîW  oçW 8vìÿÿ (v+ 9{ @@(w+ (W3h@(w+ thAA{Ê2,+(¨V,X+oDþþ,(A{Ê2oîW  oçW 8ïëÿÿ (v+ 9| BB(w+ (W 3hB(w+ trCC{Õ2,+(©V,X+oDþþ,(C{Õ2oîW  oçW 8gëÿÿ (v+ ,l DD(w+ (W 3XD(w+ tsEE{Ö2,+oDþþ,(E{Ö2oîW  oçW 8òêÿÿ (v+ 9 FF(w+ (W@F(w+ t€GG{ê2G{é2,8­(nxEÀ‹,+XoDþ8†,+XoDþH,+XoDþIHI.3(©oåW|3{3(òˆsovJ(¤J(¥+H+,+XoDþ,&G{ê2G{é2oîW(w(ÃV*(nxEÀ¾//]/á/(nxEÀé+,þ+(,=,^+þ*(*(nxEÀ &x&A&¯&æ&Ä%(nxEÀ"Y"‰"(nxu3] (v+ ,T KK(w+  oñW(nx[þ, (Wþþ+, K(w+  (WoíW oöW*(nxEÀ°qçqqqq,,qqš(nxa@z (v+ 9 LL(w+ (WE8Ê8ÃL(v+ (v+ ,äL(v+ MM(w+ (WE^ÿÿÿ^ÿÿÿ-^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ---^ÿÿÿ---^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ-8YÿÿÿM(w+ t~NN{ä2(nxEÀ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ:üÿÿ85üÿÿ+,(›WoùW oöW*(nxD3%(¿V,(—WoùW oöW*(nxEÀÛÛ(¤V,(¾Vþ+,' (v+ , LL(w+ (Wþþ++,(™WoùW oöW*(nxEÀe \ Û D4  tÚñYËÃIà (v+ ,2 LL(w+ (W3(ÁV(òVoíW oöW* oöW* (v+ 9Æ LL(w+ (WE,,»Ÿ­Ép× M(èVoíW(—WoùW oöW*oðWOOoåWoñW(nx8þO(WoíW ( woöW*L(w+  oðWOOoåWO{3(nxEÀO{3(nxHþ,o@|3{3o@þ+,(æVoíW ( woöW* oWPP(èVoíW(—WoùW oöW*oD|3{3oD1+ oWPP(æVoíWoéWQQ{3(ÁVHQoçWH,(™WoùW+ ( woöW*L(w+  8ÌûÿÿL(w+  8¾ûÿÿL(w+  8°ûÿÿL(w+  8¢ûÿÿL(v+ (v+ ,WL(v+ MM(w+ (W35M(w+ t~NN{ä2(nxI3L(w+  8Oûÿÿ M8Ñúÿÿ M8Èúÿÿ M8¿úÿÿ M8¶úÿÿ (v+ 9úÿÿ LL(w+ (WEùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿqùÿÿùÿÿ8Šùÿÿ(—WoùW oöW*oðWOOoåWoñW(nx8þ(äVoíWO(WoíW (woöW*(ôVoíW(—WoùW ($woöW*oðWOOoåWoñW(nx|3-(¾V,"oéW&(ÞVoíW (xoöW*(öVoíW(—WoùW ("woöW*(ÞVoíW oöW*(êVoíW oöW*(ìVoíW oöW*(îVoíW oöW* (v+ 9øÿÿ LL(w+ (W@ù÷ÿÿ(ðVoíW oöW*(âVoíW (woöW*oðWOOoåWO{3(nxEÀ(úVoíW (woöW*( WoíW(—WoùW oöW*( WoíW(—WoùW oöW*rÆQp(4w(6w(ÊV(üVoíW8Ñ¿ÿÿ(àVoíW(›WoùW oöW* oöW*8•¿ÿÿ(øVoíW(—WoùW (nxEÀ rWps\ z((w+(&woöW* (v+ 9 åÿÿ LL(w+ (WEŒäÿÿŒäÿÿŒäÿÿŒäÿÿ9ŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿsŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿ|ŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿŒäÿÿ8‡äÿÿ(—WoùW oöW*(—WoùW oöW*(¿V,(—WoùW+(™WoùW oöW*L(w+ tqRR{Ô29ÿãÿÿL(v+ (v+ 9îãÿÿL(v+ MM(w+ (W@ÒãÿÿM(v+ (v+ 9ÁãÿÿM(v+ SS(w+ (WE;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿèþÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ;ãÿÿ86ãÿÿS(w+ t~NN{ä2(nxI@ãÿÿ8½þÿÿL(w+ ty{Þ2(WoïW(—WoùW oöW*(¿V,1(—WoùW (nxq3(Òw+(öwoöW* oöW*( WoíW(™WoùW oöW*t}TT{/C9Râÿÿ+Á (v+ 9® LL(w+ (W@—L(v+ (v+ 9†L(v+ MM(w+ (WE+9‹áÿÿ L( WoíW(™WoùW oöW* (v+ 9àÝÿÿ KoñW(nxuþ9ÇÝÿÿK(w+  (WoíW oöW* (v+ 9›Ýÿÿ KoñW(nxuþ9‚ÝÿÿK(w+  +¹ (v+ 9kÝÿÿ KoñW(nxuþ9RÝÿÿK(w+  +‰ (v+ 90Úÿÿ KK(w+ (Wþþ9ÚÿÿK(w+  (WoíW oöW* (v+ 9çÙÿÿ KK(w+ (Wþþ9ÊÙÿÿK(w+  +µ (v+ 9³Ùÿÿ KK(w+ (Wþþ9–ÙÿÿK(w+  8~ÿÿÿ (v+ 9|Ùÿÿ KK(w+ (Wþþ9_ÙÿÿK(w+  8Gÿÿÿ (v+ 9EÙÿÿ KK(w+ (Wþþ9(ÙÿÿK(w+  8ÿÿÿ (v+ 9Ùÿÿ KK(w+ (Wþþ9ñØÿÿK(w+  8ÙþÿÿtU (v+ 9ÄÕÿÿ KU{1CK(w+   (WE++HH(ÜVoíW H, (,w+oöW*t|V (v+ 9îÔÿÿ KK(w+  V{.CW (Wþ(ÜVoíW , W(*w+oöW* (ÄV9–Ôÿÿ KoèW{*3o„+ (Wþþ,F{*3o„+ (ÅV  ,&   (9 XoîWXoÑWoèW+©oîW+ŸoîW8дÿÿ (ÄV9 Ôÿÿ K8pÿÿÿ (ÄV9öÓÿÿ K8[ÿÿÿ (ÄV9áÓÿÿ K8Fÿÿÿ (ÄV9ÌÓÿÿ K81ÿÿÿ (ÄV9·Óÿÿ K8ÿÿÿ (v+ 9—Ðÿÿ(þVoíW oöW* (v+ 9sÐÿÿrÐQp(8w(:w(ÊV(WoíW8´ÿÿ (v+ 96Ðÿÿ( WoíW oöW*tU (v+ 9 Ðÿÿ KK(w+ (Wþ9ñÏÿÿU{1CK(w+   (W3 ty{Þ2+oîW(ÜVoíW (,woöW*(w+ twYY{Û2XY{Ú2X(nx ”32(nx,3(oDoD/(þVoïW oöW*X(nxEÀΓX(nx ¼32(nxL3(oDoD/(þVoïW oöW*oîW{3(nx 3  oöW*oçW(WoíW(—WoúW8`¯ÿÿ(nx ¼@]ÿÿÿoDoD{.3(ÆV*( *2s®+ Œ*:(¯+ }°+ *0º{°+ (Ÿ+*V(í }03}13*~{13{03( woÑWoèW*V(í }23}33*~{33{23(woÑWoèW*–o &sßW}43s±+ }53*6{43{#3*0 » (ÎV*:{53o²+ *ª{53o³+ 1 {53o´+ *{43þo +*0oX + oXX 2ð**>{F3oZ*^{F3,+oZ*0V{F3 ÿ_oZ{F3c ÿ_oZ{F3c ÿ_oZ{F3c ÿ_oZ*0…2 þþ+,{F3 ÿ_oZ* €2 ÿ?þþ+,){F3 €c`oZ{F3 ÿ_oZ*{F3 ÿoZ(X**0#. Y 2{F3oZX X3é*0Ži (X{F3o_*0'¼(W o‰ Ži (X{F3o_**(X*†!ÿÿÿÿ_i(X ci(X*&sµ+ **s¶+ *.s·+ *:{V3oFi*F{V3oFiþ*0E½{V3oFi {V3oFi {V3oFi {V3oFi b`b` b`*08{V3oFi 0* ¿0_b{V3oFi`*(&X*"('X*0"¾('Xj!ÿÿÿÿ_ ('Xj  b`*0#V Y 2{V3oFi X X3é*&s¸+ **s¹+ *.sº+ *0:¿{»+ o¼+ {½+ o¾+ {¿+ oÀ+ (X(¡+&*0¬À('X /+{Â+ Žiþþ9z{`3 rêQp{Ã+ ( r0Rp( Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (=s\ z{Â+ £¹*0-Á('X oÄ+ {Â+ £¹ {Å+ (¢+&*0ùÂ{Ç+ /+ Žiþþ9Ñ{`3 r>Rp{È+ ( rjRp( Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( r’Rp( ŽiŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (=s\ z£ù*"sÉ+ *02Ã,! (ƒ {F3oZ(¡+&*{F3oZ*"sÊ+ *0ÅsË+ sÌ+ sÍ+ sÎ+ *"sÏ+ *08Æ('X (£+  Y  2 Y Y(¤+¤ù X X3ã*0À{V3oFi Eeg{`3 r´RpŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (=s\ z*oÄ+ (+ *"sÑ+ *0ÈsÒ+ sÓ+ sÔ+ sÕ+ *~64*R{\3('X(¥+*~74*~84*~94*V{L3oÖ+ (X*~:4*~;4*0À{V3oFi Ee{`3 räRpŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (=s\ z{V3('XoG*0RÉŒ,+ r¨9ps‚ zŽi m  Y  2  £’(¥+¤m X X3á(Mj*~<4*0eË{e: Œé,+ r¨9ps‚ zŽi ’ Y2$£moÖ+ ¤’XX3Ü o×+ *~=4*0fÌ(¦+Œ,+ r¨9ps‚ zŽi m Y 2%£’(¥+¤mX X3Û(Jm*~>4*~?4*0ÓÍoYm {g:{x: ,( oYmoŒj, (R" {e:(Jm+ {o;{n;{±;oÖ+ Œé,+ r¨9ps‚ zŽi  ’   Y   2&   £moÖ+ ¤’ X   X3Ú sØ+ oÙ+ *~@4*~A4*ž{H3{L3{N3{G3(KX(X*04(§+ s`m(¤ (n*0>Ñ{H3 {L3 {N3 {O3 {G3 (KXoÚ+ (X*j(X(X(X*0Vßr$Sp(¨+  †(er6Sp(©+sZsZsZsZrBSprBSp(ª+sÜ+ sZsZs!Zs#ZrRSprRSp(ª+sÝ+ s%Zs'Zs)Zs+ZrbSprbSp(ª+sÞ+ rnSp(©+r€Sp(«+r”Sp(¬+s»Y (¡+&{I3{ß+ {à+ oá+ {J3{â+ {à+ oá+ {K3  {ã+ {à+ oá+ {H3 sä+ {L3{M3{N3{O3{F3oYså+ (æ+  (ç+  (è+  (é+  (ê+ (ë+ (ì+ {í+ ¥7(p+ {í+ ¥7(p+ {î+ ¥)(­+{ï+ ¥*(®+ {ð+ ¥ý(´+  †(er¬Sp(©+s-Zs/Zs1Zs3ZrBSprBSp(ª+sÜ+ s5Zs7Zs9Zs;ZrRSprRSp(ª+sÝ+ s=Zs?ZsAZsCZrbSprbSp(ª+sÞ+ rÆSp(©+ræSp(«+rTp(¨+r(Tp(¬+s»Y sEZ(¯+(?X(¯+(GX(°+(LX(±+sGZ(²+(³+& (ò+  (ó+  (ô+ (QX(³+&(´+&(µ+&(¶+&(X{F3oY*0aïrNTpnsø+ Ži(HrnTpŽsù+ sIZsKZsMZrˆTp(·+sOZsQZsSZr˜Tp(¸+sUZsWZsYZr¨Tp(¹+r´Tpmsû+ rÔTpsü+ röTpssý+ sÐY s[Z(º+ (;X(º+(EX(»+(IX(¼+s]Z(½+ oþ+ ('X('X('Xsä+ oþ+ oÿ+ o, o, {V3('XoIs, (, (,  (,  (,  (,  (,  ( , rUpŒé,+ r¨9ps‚ zŽiŽY2+£ms€n¤ŽXX3Õsù+ r(UpŒé,+ r¨9ps‚ zŽimY2 £m¤mXX3àsû+ r:Up Œ:,+ r¨9ps‚ z ŽiY2( £(DX¤XX3Øsü+ rNUp Œ;,+ r¨9ps‚ z ŽinY2B £( , ( , (HX¤nXX3¾sø+ r`Up Œ,+ r¨9ps‚ z ŽisY2+ £’(¾+¤sXX3Õsý+  (ô+  (ó+  (ò+   Ži(Hs_ZsaZscZrˆTp(·+seZsgZsiZr˜Tp(¸+skZsmZsoZr¨Tp(¹+sÐYoÄ+ { , (¿+s , *0Qòum-,%tm- {®Y {F3oZ(X*tl- {­Y {F3oZ(X*ªi(Xi(Xi(Xi(X*0WõsqZ ssZ o_² o`² oa²{L3oÖ+ (X{F3 ,+oZ(À+&*0Íý{F3oZsuZ swZ syZ s{Z sZsZsƒZs…ZoG²oH² oI² oJ² oK² oL² {L3oÖ+ (X (À+& (Á+&{F3 ,+oZ (Â+& (Ã+&*0nþuv--uw--4{F3oZ*tv- {ÀY {F3oZþ(VX*tw- {ÁY {F3oZ þ(WX*0b¾{V3oFiE1{`3 rxUp(= s\ z{V3('XoI(²*{V3('XoI(²*Ž('XÑ('XÑ('XÑ('XÑs, *0^s‡Z s‰Z {\3('X(¥+{V3oFiþo, s, (, (, (,  (^²*0 õ {V3oFiE{`3 r”Up(= s\ zs‹ZsZ sZs‘Zs“Zs•Zs—Z  s™Z {\3('X(¥+ o, o, {V3oFiþo,  o, s, (,  (,  (,  (, ( , (!,    (P²*0f¾{W3{V3oFiE"0{`3 r´Up(= s\ z(f²+([X(h²+ (\X(j²(ö°*¾{F3(º²E++oZ*~B4*~C4*~D4*0À (,³E Fm–¾æ8{F3oZ*t‰- {ùY {øY {F3oZ(_X(Ä+&+‹tŠ- {úY{F3oZþ(hX*t‹-{ûY{F3oZþ(hX*tŒ-{üY {F3oZ8ÿÿÿt-{ýY {F3oZ8ëþÿÿtŽ-{þY {F3oZ þ(fX*t-  {ÿY {F3oZ i(X*t-  {Z  {Z  {Z{F3oZ{F3,+oZ (gX8@þÿÿ0s«Z s­Z*0G{F3(¨²E +++ ++oZ*0 {ÝY {ÜY (^X(dX*05{ Z { Z {Z (eX(cXo#, &þ(bX*0?oõ² oö² o÷² (XX(AX(Å+&{L3oÖ+ (X*0%o ³ o³ (gX(cXo#, &*0h¾{V3oFiE &,28{`3 rÎUp(= s\ z(œ²*(ž²*( ²*(¢²*(¤²*(¦²*0J¾{V3oFiE &{`3 ròUp(= s\ z(´²*(¶²*(¸²*N(jX(iX(IJ*00(]X (=Xo%, {\3('X(¥+ (ô²*~E4*~F4*~G4*0ܾ{V3oFiE  7CO[gx…{`3 r Vp(= s\ z(³*(mXo&, (pX(³*(rX(³*(rX(°*(pX("³*(pX($³*(qXo', (&³*('XÑ((³*{V3oFiþ(lX(pX(*³*~H4*0&(lX sÃZ(Æ+o(, (Ç+ (³*0qoˆ³ o‰³ o‹³ oг o³o޳(gX(eX(X{L3 oÖ+ (X(cXo#, &þ(bX*0;{Z {Z {Z (gX{L3oÖ+ (Xþ(bX*04o¬³ o­³ o®³ (sX(bX(cXo#, &*0!{Z {Z (tXþ(bX*0‡(±´E  $).38+7+3+/+++'+#+++ + +  + + (X*0V(lX (kX ('X {\3('X(¥+ sÅZ(Æ+o(, (Ç+(pX (³*–(lX{\3('X(¥+(pXs—³*0.(xX (pX sÇZ(Æ+o(, (Ç+ («³*N(yX(pXs¹³*0²¾('XE &,28>DJPV\bh{`3 rVp(= s\ z(•´*(—´*(™´*(›´*(´*(Ÿ´*(¡´*(£´*(¥´*(§´*(©´*(«´*(­´*(¯´*0:¾('XE {`3 r8Vp(= s\ z(!µ*(#µ*0:¾('XE {`3 rVVp(= s\ z(1µ*(3µ********** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*~I4*~J4*~K4*~L4*~M4*"s[*~N4*~O4*0d(¿Xo), ,{F3(¿Xo*, oZ*('¶Ea:_ð.zä„þØŽ.mW1$Ê}Ó›Áç)ÐN ŠO {Q3 rpVps+, (È+o‚ (= s\ zt.{s[(µ3.{u[-!{t[{F3oZþ(uX* + 8ˆÿÿÿt.{v[(µ32{x[-"{w[{F3oZþ(uX* 8?ÿÿÿ 88ÿÿÿt.{”[{F37oZþ(uX*tõ-{a[{F3oZi(X*tñ-{\[{F3oZ(wX*tò-{][{F3oZ(wX*tó-{^[{F3oZ(wX*t .  {†[(µ3B {ˆ[  {‡[ {F3oZ (%µ3+(X þ(vX* 8þÿÿt.  {…[  {„[ {F3"oZ (%µ3+(X þ(vX*t .  {[(µ3B {[  {Ž[ {F3!oZ (%µ3+(X þ(vX* 8týÿÿt .{Œ[ {‹[ {F3$oZ (%µ3+(X þ(vX*t .{Š[ {F3 oZ þ(vX*t .{‰[ {F3#oZ þ(vX*t.{“[uÕ-,,{“[tÕ-{Z{F3+oZþ(bX* 8•üÿÿt.{[ {F3oZ{L3oÖ+ (X*t.{[{F3&oZþ(bX*t.{ž[{F3oZþ(bX*t.{Ÿ[{F3=oZþ(bX*t .{¬[{«[{F3'oZ(_X(Ä+&þ(bX*t.{ª[{©[{F3oZ(X(X*t&.{´[{F3oZþ(bX*‚s[(ÁX{V3oFiþ(É+*0 s-, s., s/, *6s[(Ê+*0#s0, s1, s2, *6s"[(Ë+*0".(-¥ (.¥ (X(X*0=$(I¥ (D¥ (E¥ {L3oÖ+ (X(ÌX(ÌX*0+Ö {I {I {L3oÖ+ (X(ÍX*î{\3('X(¥+('X('X(¥('X('X(¥(¥*0#Ö {\3('X(¥+ (ÏX sY‰*&s3, *"s&[*~P4*07%{w; {v; rÆVp(ÒX («+&{L3oÖ+ (X*~Q4*~R4*’(ÕXoa {\3('X(¥+(n*~S4*~T4*~U4*~V4*~W4*~X4*~Y4*0“({k; {j; {T; rÒVp(ÒX(«+&s0[{O;(Ì+{P; {F3 ,+oZ{Q;{L3oÖ+ (X{R;(X(ÙX{S;þ(Í+*"s2[*~Z4*~[4*~\4*~]4*~^4*~_4*~`4*0i)(ÕXoa s6[(Î+ {V3oFiþ {\3('X(¥+ ('X(âX(Ï+ sÄlsÍls:m*~a4*~b4*0_¾{F3(&E +*+&+"++{Q3 ràVp(= s\ zoZ*0@¾{V3oFiE {`3 rcWp(= s\ z(Ïi*(Ñi*0^¾{V3oFiE &,2{`3 rqWp(= s\ z(*( *("*(*(*0*{=L {>L {?L {@L {AL{F3,+oZ{F3oZ{F3,+oZ{F3,+oZ{F3 ,+oZ(ëX*0[$ {V3oFiþ {V3oFiþ {V3oFiþ{V3oFiþ{V3oFiþ(íXs*~c4*~d4*~e4*~f4*~g4*~h4*0ˆ-( lEp àÒta {I; {H; {G; {F;{F3oZs<[s>[(ÙX(¥+& (Ð+&(sX(ÛX(Ñ+&*t_{B; {A;{@;{F3oZrWp(àX (ÙX(¥+& (¦+&(ÛX(Ñ+&*{F3oZ*tb  {J; {F3oZ(ôX (ª+&*t`  {E;  {D; {C; {F3oZ(ÛX(Ñ+&(ÔX{F3 ,+oZ*0™1{8; {7; {6; {5; {4;{3;s@[sB[sD[(z!  (ÛX(Ñ+&{L3oÖ+ (X (îX(ÛX(Ñ+&(Ò+& (Ó+&*0ú5{V3oFiEp—®{`3 r™Wp(= s\ zsF[sH[ (âXo\ o8, (xX(äXo9, s:, (;, (<, (=, (>, (šl*(âXo\ (éXo] (äXo9, (–l*(žl*(ñXo` (œl*(äXo9, (×X{V3oFiþ(˜l*0 …9sJ[ sL[ (äXo9, {\3('X(¥+(ïX(äXo9, (âX(Ï+o?, s@, (A, (B, (C, (D, (E, (F, sÏ (†l*0ý;(i (WnES.Çt† {š; {F3oZr±Wp(ÒX(«+&*tˆ {;{F3oZ+…t‡{œ;{›;{F3oZ(úX8Iÿÿÿt…{™;{F3oZrÁWp{J3(Ô+o#, &*{F3oZ*0‡¾{V3oFiE+7I[{`3 rÍWp(= s\ z(ÕXoa (On*(ûX(Sn*(ûX(ûX(Qn*{Z3(Õ+(Mn*(Un*0¹<(@lE Oz*ˆ–²¤ßM\ ktB {; {F3oZ(ÙX(¥+&*tE {; {F3oZ þ(÷X*tC{; {F3oZ(ÙX(¥+&*{F3oZ*{F3oZ*{F3oZ*{F3oZ*tH{;{F3oZ(ÛX(Ñ+&*tJ{; {F3oZ(ÙX(¥+&*tM{#; {"; {F3 oZ(ÙX (¥+&(ÙX(¥+&*{F3 oZ*{F3 oZ*{F3 oZ*~i4*0={V3oFiE -;NTZ`f{ް¶¼{`3 rëWp(= s\ z(âXo\ sR[*(ùX sT[*(âXo\ sV[*sX[*sZ[*s\[*s^[*(äXo9, s`[*(âXo\ sb[*(âXo\ (âXo\ sd[*sf[*sh[*sj[*~j4*0n>{ù: {þ: |û:{R:j {; {ý:(ÎX(ÝX(Ö+&( X(ýX (×+&sp[(¯+{ýH(³+&*0O*ol,0rXps {;{ù:{Isû£ (¤(¥+{J3sr[þ(Ø+*~k4*0 e?(ÐX (æXoI, ()X (ÿXoJ, sx[(º+oþ+ (‰(¹hoE isþi sl*N{Z3sz[(Ù+*~l4*~m4*~n4*~o4*~p4*~q4*~r4*~s4*~t4*~u4*~v4*~w4*~x4*~y4*~z4*~{4*~|4*~}4*~~4*~4*~€4*~4*~‚4*~ƒ4*~„4*~…4*~†4*~‡4*~ˆ4*~‰4*~Š4*~‹4*~Œ4*~4*~Ž4*~4*~4*~‘4*~’4*~“4*~”4*~•4*~–4*ž(ÝX{5<(Ö+&s„[{6<þ(Ú+*03@{8< {7< (ÎX{F3(Ói3+oZ*0]D{4< {3< {2< s†[(Û+ (Ü+ (Ý+&sˆ[sŠ[(Þ+(ß+(à+&þ(0Y*02E(æXoI, sŒ[(á+ (1 - -(s*sÈo*0@HsŽ[(â+oM, (ã+s[ s’[ (ä+oN, (~+(3Y(¶o*Bs–[þ(å+*0B(3jE{F3oZ*{F3oZ*{F3oZ*0.K{d: {c: sš[ sœ[ (XX(æ+&*6sž[(ç+*0J¾{V3oFiE &{`3 rCXp(= s\ z(-j*(/j*(1j*03Os [ s¢[ (]XoP, sQ, (R, (S, (=j*0!Q( kE Á3¼‹÷A­2t {™: {F3oZ{F3oZ(AY*t {š: {F3oZ{F3oZ {Ê:{È:(è+s¤[(é+(ê+(ë+&*t{ž:{F3oZ{F3oZ(bX*t{˜: {F3oZ{F3oZ (Y(X*0•hrµXp(àX rÍXp(àX  s¸[ sº[ rÝXp(àX s¼[rùXp(àX r Yp(àX r!Yp(àX sÀ[sÂ[r;Yp(àX rEYp(àX  sÆ[ sÈ[rSYp(àX sÌ[  sÎ[ sÒ[  sÔ[ sÖ[ sØ[{‚:{ƒ:{…:{„:sÚ[sÜ[{‡:(ú+(û+(ü+{‰:{Š:{Œ:(ý+&(þ+&(ÿ+&(ý+& (+& (+& (Ò+&{F3,+oZ(+&*Z{I3sÞ[þ(+*0Eiu,/t {: {F3oZr_Yp(ÒX(«+&*{F3oZ*0\ju™,/t™ {¾; {F3oZryYp(àX(¦+&*t˜ {½; {F3oZ þ(sX*0Žo{Å; {Ä; {Ã; {Â; {Á;ryYp(ÒXsà[sâ[sä[  sæ[(«+& (FY(+&(+&{F3,+oZ*0*\{É; {È; (wY(ª+&(wY(ª+&*0pp{Ê;(h {Ê;(ê {Ê;(é {Ê;(g {L3 oÖ+ (X(ÙX(¥+&{F3,+oZþ(HY*0ksr‡Yp(ÒX sè[ sê[ {f; {i;{g;{h; («+&(îX(+&{F3,+oZ*0}t(ckE+P{F3oZ*{F3oZ*{F3oZ*t+ {Á: {F3oZþ({Y*{F3oZ*0u(ÄqE+T{F3oZ*{F3oZ*{F3oZ*t< {0= {F3oZ(ÙX(¥+&*{F3oZ*0j{sì[ sî[ sð[ sò[ sô[sö[sø[sú[{V;{W; {b;þ,{X;{Y;sd, (e, + {Z; |\;  {A:!ÿgþÿÿÿÿÿ_ {`;{a;{b;{e;{_;{c;{];{L3oÖ+ (X (Ã+& (5Y(ÙX (¥+& ( X(+&(ÝX(Ö+&(+&{L3oÖ+ (X(?Y(EY(ð+&(+&*Z{K3sü[þ( +*0c‚sþ[ s\ s\ s\s\s\ {í:{ì:{î:(6Y( +& ( +&*0Xƒ(] ,8 (] (^ oÄ» oÄ»(Z  {&^+À( +o÷²oÄ»sj, *0Ú„{V3oFiE {`3 rŸYp(= s\ zs \*{V3oFiE(EVf{`3 rŸYp(= s\ z(WY s \*s\( +ok, (è+ s\*(pXs\*(RYs\*(âXo\ s\*z(aY(êXol, (WYsmk*0 lT(WY (âXo\ {\3('X(¥+ (ÐX (æXoI, {\3('X(¥+(UY($‰ s‰k*0k¾{V3oFiE+7C{`3 r¹Yp(= s\ z(ÕXoa (²k*(lX(´k*(WY(¶k*(¸k*0,Ís\(+om, (+ ( -()i*(åk*0†{V3oFiþ{V3oFiþ(âXo\ {V3oFiþ{V3oFiþ(gY(+(ÐX(æXoI, (æXoI, {\3('X(¥+(UYsn, so, (p, (q, (p, (r, (p, (s, (p, (t, (u, (v, (w, (x, (y,  (z,  ({, ($‰   sŸk*rs\(+o|, (ñ+(/i*0:Žs\ s\ s \s"\ s$\s&\s(\(+(Yo}, {\3('X(¥+o, (ÏX o~, (UY(UYs, (æXoI, (QY(âX(Ï+(YY{\3('X(¥+(ìX()Xo€, o, (TY(*Xs‚, sƒ, s„, (…, (†, (…, (‡,  (…, (ˆ,  (‰,  (Š, (‹,  (Š, (Œ,  (, (Ž, (, (, (…, (‘, (’, (…, (‘, (“, (…, (”, (…, (•, (…, (–, (…, (—, (˜,  !_!þþo™, !ïÿÿÿÿÿÿÿ_(¹hoE ($‰s*\se sj    sš, sáj*0 ˜s,\ s.\ s0\s2\ s4\ s6\s8\s:\s<\  s>\o›, (éX(+ oœ, o›, o, ož, (âX(Ï+{V3oFiþ(*XsŸ, s , (¡, (¢,  (£,  (¤,  (¥,  (¦, (§, (¨, (©, s@\ (+¥‚sª,  (+   sk*N{Y3sB\(+*0K¾{V3oFiE {`3 rÑYp(= s\ z(æj*(ÕXoa (äj*0Q¾{V3oFiE&{`3 rÑYp(= s\ z(xX(®n*(éXo] (°n*0 žsD\ sF\ sH\sJ\ (ÕXoa (\Yo«, o¬, {V3oFiþ($¥s­, (®, (¯, (°, (±, (², (³, (¼n*v(xYo` (xYo` (Çn*0FŸ{\3('X(¥+ (âXo\ {V3oFiþ (^Y  s( (Ín*0Y£sL\ sN\ (ÕXoa (ïXo´, {V3oFiþsµ, (¶, (·, (¸, (¹, s7m*0d¾{V3oFiE &,8{`3 rëYp(= s\ z(Yk*([k*(]k*(‚Y(_k*(ak*0i¾{V3oFiE &,={`3 rZp(= s\ z(¼q*(¾q*(Àq*(âXo\ (ºq*(Âq*0¡©sP\ sR\ sT\sV\ sX\sZ\{\3('X(¥+o, (8Y(âXo\ ()X oº, (æXoI, o», {\3('X(¥+(UY([Y(gY(+(*Xs¼, s½, (¾, (¿, (À,  (Á,  (Â,  (Ã,  (Ä, (Å,  (Ä, (Æ, (Ä, (Ç, (Ä, (È, (Ä, (É, (Ê, ($‰  , (Ë, (Ì, +($¥ , (Ë, (Í, +($¥ (¹hoE  s´i s0m*N{[3s\\(+*0m±s^\ s`\ sb\ sd\sf\sh\(9YoÎ, oÏ, sÐ, (Ñ, (Ò, (Ó,   sÈk*~—4*~˜4*0ÿ¶uÄ-xuÅ:«tà {< {< {< {F3oZsr\st\sv\sx\(wY (ª+&(+&(+&*tÄ{< {< {F3oZ(Y (+& (X*tÅ  { <  { < {F3oZ (lY 8ÿÿÿ0 {< {< (jY(hY*0;·(woE»>iwútÌ {< {< {F3oZ(ÓX(©+&(ÛX(Ñ+&*tÎ {<{F3oZ(fY(¤+&*{F3oZ*tÏ{<{<{F3oZ(ÙX(¥+&(ÙX(¥+&*tÍ{<{< {F3oZ (X(ÙX(¥+&*{Q3  r/Zp(=  s\ z0*¸{*< {)< (Y(+&(wY(ª+&*0%¹{-< {,< (NY(wY(ª+&*Þ{F3(žqE + ++oZ*0%¾(hq3{Q3 r¶Zp(= s\ z*0ÿ{V3oFiE|“{`3 rm[p(= s\ zsz\s|\ s~\s€\(xYo` oØ, oÙ, ($¥sÚ, (Û, (Ü, (Ý, (Þ, (Co*(%Yoß, ('X(Eo*(sY(oY(Go*N(qY(oY(ao*0¦¾{V3oFiE6GMi{`3 r}[p(= s\ z(ÖXo_ (äXo9, (ko*(gYo[ (oo*(qo*(âXo\ (âXo\ (so*('X(âXo\ (mo*Š(.Yoà, (xYo` (\Š(›o*¢{[3s‚\(+(xYo` (åŠ(¢o*0T¾{V3oFiE &,{`3 r[p(= s\ z(–q*(˜q*(šq*(œq*0QÃ(ÒpE*X¦ }µÄ6Ef¬ÔTü¾,i¦í4]¯ê°¿¿¿ù#ltþ {À< {F3oZ(ÓX(©+&*tÿ {Á< {F3oZr·[p(ÒX («+&*{F3oZ*t{Í< {Ì<{F3oZr½[p(ÒX(nY («+&*t{Î<{F3oZ(ÔX*t  {Ï<{F3oZ(ÔX*t   {Ñ< {F3oZrÍ[p(ÒX («+&*t   {Ô<  {Ó< {F3oZ(ÓX(©+& (X*t   {Ö<  {Õ< {F3oZ(ÓX(©+& (X*t{Ø< {×< {F3 oZrß[p(ÒX («+& (X*t{Ú< {Ù< {F3 oZrß[p(ÒX («+& (X*t{Û< {F3 oZ (X*t{Ý<{Ü<{F3 oZs„\s†\(+&(ÛX(Ñ+&*{F3 oZ*t {Ò< {F3oZ(ÓX(©+&*{F3oZ*t{à<{F3oZþ(÷X*t{â<{á<{F3oZrí[p(àX(mY(¦+&*t{í<{ì<{ë<{ê< {é<!{è<"{ç<#{æ<${å<%{ä<&{ã<'{F3oZ{F3',+oZ{F3&,+oZ{F3%,+oZ{F3$,+oZ#(LY{F3",+oZ{F3!,+oZ (sX(ÛX(Ñ+&(ÛX(Ñ+&(ÛX(Ñ+&*{F3oZ*{F3oZ*t(({Ç<){F3oZ)(ŠqE++(X*t**{Â<+{F3oZ+(X*{F3oZ*{F3oZ*t ,,{Ð<{F3oZ(ÔX*t--{Ã<.{F3oZsˆ\(+.(+&*{F3oZ*r÷[ps\ z0Å{V3oFiE+<BXdp˜¯ÆÝé(.:QÞäô7N^nz{`3 rQ\p(= s\ z(ÖXo_ (”p*(ÕXoa (–p*(˜p*(fq(ÕXoa (¨p*(×X(ªp*(×X(¬p*(ÕXoa (°p*(ÖXo_ ('X(´p*(ÖXo_ ('X(¶p*(ÕXoa ('X(¸p*(ÕXoa ('X(ºp*('X(¼p*sŠ\ (+oã, (+(äXo9, (¾p*(Àp*(ÖXo_ (²p*(Âp*(ùX(Ìp*(tY(éXo] (Îp*{V3oFiþ{V3oFiþ{V3oFiþ{V3oFiþ(bY{V3oFiþ{V3oFiþ(xX(äXo9, (äXo9, (äXo9, (Ðp*(šp*(Ί(tq( p*(»Š('XE r[\ps\ z(„q+(ˆq+(†q(¢p*{V3('XoI(œp*(€Š(•Š(¤p*(€Š(¨Š(¦p*(×X(®p*sŒ\( +oä, (žp*(Äp*~™4*~š4*0oÆuA,*tA {6= {F3oZ(ÙX(¥+&*t@ {5= {4= {F3oZ(ÙX (¥+&(ÙX(¥+&*0£Ç{J= {I= {H= {G= {F={E=s¤\s¦\(Ã+&(ÙX(¥+&{F3 ,+oZ{F3,+oZ{F3,+oZ(ÝX(Ö+&*0žË{D= {C= {B= {A= {@={?=s¨\sª\s¬\s®\ {L3oÖ+ (X(ÙX(¥+&(Y (õ+&(Y(õ+&(!+& (Ò+&*0gÍ{== {<= {;= {:= {9=s°\({Y(ÝX (Ö+&(Y(õ+&("+&(wY(ª+&*0Ïs²\(#+ ($+(%+&*b(ÙX(¥+&þ(}Y*0Ñs¶\(&+ ('+((+&*0a¾{V3oFiE6{`3 r}\p(= s\ z(âXo\ (âXo\ (Ëq*(âXo\ (Íq*0 ˆÓs¸\ sº\ o, (âXo\ {V3oFiþ{V3oFiþ{V3oFiþ(æXoI, sé, (ê, (ë, (ì, (í, (î, (ï, (öq*0 ŠØs¼\ s¾\ sÀ\ {\3('X(¥+(âXo\ (Yo}, (Yo}, oð, (âX(Ï+sñ, (ò, (ó, (ô, (õ, (ö, (÷, (æq*0qÚ(‚Y(æXoI, (Yo}, (+Y()+oø, (*+(xYo` ($¥sù, (ú, (û, (ü, (ý, (þ, ($¥(Ûq*fsÂ\(++oÿ, þ(,+*ž(âXo\ sÄ\(++oÿ, (,+sÈ *fsÆ\(-+o- þ(.+*~›4*~œ4*N{Y3s](+*0ZÜ{Y3s](+{\3('X(¥+{V3oFiþ(*Xs- (- (- (- s¬n*{- *{- *V( }- }- *jsY{- (/+{- *js’Y{- (/+{- *:(- }83*n{83{±;o- o•n*:(- }93*00Ý{93{±;o - - o–n* (O o•n*{ - *{ - *{ - *{ - *"} - *"} - *’( } - } - } - } - *R{ - ¥þ(-+*>{ - þo- *01{ - { - X(- { - o- { - o- *0 { - o- ,*o- *Š ès- s- ès- s- **o &**þ(F+*.þ(+*{- *{- *V( }- }- *{- *{- *{- *{- *{- *{- *Ò( }- }- }- }- }- }- *0Þ{- {à+ þoá+ *R(ª+s - *{F3*{G3*{H3*{I3*{J3*{K3*{L3*{M3*{N3*{O3*{P3*{Q3*0d( }F3}G3}H3}I3}J3}K3}L3}M3 }N3 }O3 }P3 }Q3*{!- *{"- *{#- *{$- *’( }!- }"- }#- }$- *:{$- £**{$- Ži*0[à/(%- r¿\ps zù Y2o* ¤ùXX3ã s&- *{V3*{W3*{X3*{Y3*{Z3*{[3*{\3*{]3*{^3*{_3*{`3*{a3*0d( }V3}W3}X3}Y3}Z3}[3}\3}]3 }^3 }_3 }`3 }a3*’(â }'- }(- })- }*- *¦{'- {)- (0+&{(- {*- þ(1+*V(-- }.- }/- *0#(P (O {.- {/- s0- *Ò(â }1- }2- }3- }4- }5- }6- *ò{1- {4- (0+&{2- {5- (1+&{3- {6- þ(2+*r(8- }9- }:- };- *0 1á(<- (=- (>- {9- {:- {;- s?- *0D(â }@- }A- }B- }C- }D- }E- }F- }G- *0O{@- {D- (0+&{A- {E- (1+&{B- {F- (2+&{C- {G- þ(3+*’(I- }J- }K- }L- }M- *0 ?ã(N- (O- (P- (Q- {J- {K- {L- {M-  sR- *V(S- }T- }U- *0#{T- oV- {U- oW- sN *r(X- }Y- }Z- }[- *01á{Y- oV- {Z- oW- {[- o\- s]- *’(^- }_- }`- }a- }b- *0?ã{_- oV- {`- oW- {a- o\- {b- oc-  sd- *:(e- }f- *0/Ži(X +{f- £(0+&X Ži2â*:(g- }h- *0ìäoi- {F3od (X{F3od (X{F3od (X{F3od(X{F3od(X{F3od(X{F3od(X{F3od{I3  {ß+   {à+ oá+  {J3  {â+   {à+ oá+  {K3{ã+   {à+ oá+ {h- (0+&{F3od{F3Yo]{I3  {ß+   {à+ oá+ {J3  {â+   {à+ oá+ {K3{ã+   {à+ oá+ {F3 o]{F3 o]{F3 o]{F3o]{F3o]{F3o]*:(j- }k- *R{k- (l- (m- *:(n- }o- *0<æ{o- (p- -{Q3 rË\p(= s\ z (q- þ(0+*:(r- }s- *08ç('X (+  Y  2 {s- oV- ¤ X X3ã*:(t- }u- *0Iè(&X (&X (&X (&X (&X(&X(&X{u- oV- þ(4+*:(v- }w- *R{w- (x- (y- *:(z- }{- *0;ê{{- (|- -{`3 r÷\p(= s\ z (}- þoV- *(~- *N{V3('XoG*(~- *R{\3('X(¥+*:(- }Ž3*j{Ž3(º+oþ+ þ(+*(€- *"('X*:(- }3*j{3(½+o, þ(5+*(‚- *.(X*(‚- *Z{L3oÖ+ (X*:(ƒ- }3*0ö{3(è+ (¯+þ(³+*(„- *.(X*:(…- }‘3*0ë{‘3(6+ (²+þ(¶+*(€- *"('X*(„- *.(X*(€- *"('X*(†- *b('X(JXo, sØ+ *(„- *.(X*V(â }’3}“3*Š{’3(X(MX{“3þ(¶+*(‡- *0ì( , ( , sZ*(Ý *6{g:{k:*(ˆ- *6{g:{l:*(‰- *"onj*(Š- *"{g:*(‹- *6{;{ü:*(Ÿ! *"ol*(Œ- *J{;{ù:{I*(- *"{;*(Ž- *6{U;{[;*(® **þom*(- *6{U;{X;*(- *"{U;*(Ý *6{g:{k:*(ˆ- *6{g:{l:*(‰- *"onj*(Š- *"{g:*(‹- *6{;{ü:*(Ÿ! *"ol*(Œ- *J{;{ù:{I*(- *"{;*(Ž- *6{U;{[;*(® **þom*(- *6{U;{X;*(- *"{U;*(‚- *b{F3oZ(X*(„- *.(X*(‘- *"sgj*(’- **(fj*(  *J{g:Œ,**(“- *(l*(”- **(l*({ *J{;Œ>,**(•- *"sÒl*(–- **(Ñl*(Ê *J{U;Œj,**(~- *"(CX*(€- *"('X*(‘- *"sgj*(’- **(fj*(  *J{g:Œ,**(“- *(l*(”- **(l*({ *J{;Œ>,**(•- *"sÒl*(–- **(Ñl*(Ê *J{U;Œj,**(—- *.(X*:(˜- }”3*F{”3(7+*(—- *.(X*:(˜- }•3*F{•3(7+*(™- *.(TX*:(š- }–3*F{–3(8+*’(â }—3}˜3}™3}š3*0 "{—3{˜3{™3{š3(UX*(›- *0'í({ (z (y (x  s}Z*:(œ- }›3*F{›3(9+*(‚- *Z{L3oÖ+ (X*:(- }œ3*F{œ3(Ì+*(ž- *N{V3('XoI*:(Ÿ- }3*:{3(:+*(ž- *N{V3('XoI*:(Ÿ- }ž3*:{ž3(:+*( - *"(YX*:(¡- }Ÿ3*:{Ÿ3(;+*(¢- *"(ZX*:(£- } 3*:{ 3(<+*(~- *R{\3('X(¥+*:(¤- }¡3*:{¡3(Î+*(„- *.(X*:(¥- }¢3*F{¢3(=+*(„- *.(X*:(¥- }£3*F{£3(=+*V(â }¤3}¥3*ž(`X{¤3(>+&(aX{¥3þ(>+*(§- *0î(¨- (©- s£Z*:(ª- }¦3*0ð{¦3(?+ (@+þ(A+*:(¬- }§3*Z{§3{ÅYþ(B+*(®- *.(bX*V(â }¨3}©3*0"ñ{©3{¨3(C+ (D+þ(E+*(€- *"('X*:(°- }ª3*:{ª3(F+*(€- *"('X*:(°- }«3*:{«3(F+*(±- *v(nXo²- (oXo²- s³- *:(´- }¬3*j{¬3(G+oµ- þ(H+*:(¶- }­3*N{­3o·- (‡²*(¸- *"(pX*(¹- *¢(kXs½Z(Æ+o(, (Ç+(pXsº- *:(»- }®3*0&ó{®3o¼- (½- (¾- (¿- sp³*(¸- *"(pX*(¸- *"(pX*(¸- *"(pX**o &*6(þ o)¶*B(n þo+¶*(Â- *0ô(Ã- (Ä- (¿XoÅ- *(Æ- *:('XÑ(а*(Æ- *N(ÿ´(zX(ŵ*(Æ- *N(ÿ´(zX(ǵ*(Æ- *6(zX(ïµ*(Æ- *6(|X({µ*(Æ- *6(|X(}µ*(Æ- *6(|X(µ*(Æ- *b( µ(}X({X(ݵ*(Æ- *6({X(áµ*(Æ- *N(}X({X(Ûµ*(Æ- *6({X(ßµ*(Æ- *b( µ(}X({X(åµ*(Æ- *N(}X({X(ãµ*(Æ- *0õ(pX (¼´(íµ*(Æ- *f{\3('X(¥+(çµ*(Æ- *6(pX(ùµ*(Æ- *6(pX(ûµ*(Æ- *6(pX(ýµ*(Æ- *b(mXo&, (pX( ¶*(Æ- *b(mXo&, (pX( ¶*(Æ- *b(mXo&, (pX(¶*(Æ- *~(~X(mXo&, (pX(¶*(Æ- *6(pX(ëµ*(Æ- *6(pX(éµ*(Æ- *^( µ(#µ(pX(õµ*(Æ- *^( µ(#µ(pX(÷µ*(Æ- *6(pX(ÿµ*(Æ- *N('X('X(#¶*(Æ- *6(pX(!¶*:(Æ- }¯3*0hö{`3 r#]p{¯3Œ’ ,/u¼ , (x ¥|o¡ +o& +rR9p( (=s\ z(Ç- *0÷(È- (É- (ÂX¤ *:(Æ- }°3*"{°3*(Â- *0"ô(Ã- (Ä- (ÂXs [¤ *(Ê- *&£ *’(â }Ë- }Ì- }Í- }Î- *¦{Ë- {Í- (0+&{Ì- {Î- þ(1+*V(-- }Ï- }Ð- *0#(P (O {Ï- {Ð- sÑ- *:(Ò- }Ó- *0ù{Ó- (I+ (J+þ(K+*:(Õ- }Ö- *Z{Ö- (L+þ(M+*(‚- *Z{L3oÖ+ (X*V(S- }Ø- }Ù- *~{Ø- oV- {Ù- oW- sN *:(Ú- }Û- *j{Û- (N+oÜ- þ(O+*:(Ý- }Þ- *V{Þ- oß- þ(P+*(~- *R{\3('X(¥+*V(â }à- }á- *Â{à- {- {à- {- {á- oâ- o¾+ (X*:(ã- }¿3*0gú(ïh uˆ,$tˆ(p {F3oZ(NX*tÝ(ä- {F3oZ{¿3{I3(Q+þo#, *(å- *08%{u; {t; r[]p(ÒX («+&{L3oÖ+ (X*(æ- *0bû{V3oFiE-{`3 rg]p(= s\ z{Y3(R+s`m*{^3('X(§+ s`m*(ç- *’(ÕXoa {\3('X(¥+(øm*(è- *0ü(ÙX(S+ (T+þ(U+*(‚- *Z{L3oÖ+ (X*:(ê- }À3*0gý(ûh uß,$tß(ë- {F3oZ(ßX*tÀ(s {F3oZ{À3{K3(V+þo#, *(ì- *f(âX(W+oí- þ(7 +*(~- *R{\3('X(¥+*(î- *0Vþ{V3oFiE-{`3 rg]p(= s\ z{[3(X+sÁm*(èX sÁm*(ï- *f(éX(Y+oð- þ(Z+*(ñ- *.(gX*:(ò- }Á3*F{Á3([+*(ó- *B(ÙX(Í+*(ô- *.(öX*:(õ- }Â3*F{Â3(\+*(ö- *"(lX*:(÷- }Ã3*:{Ã3(]+*(ø- *"(øX*:(ù- }Ä3*:{Ä3(^+*(ú- *.(üX*:(û- }Å3*0{Å3(_+ (`+þ(a+*:(ý- }Æ3*J{Æ3($¥(&l*:(ý- }Ç3*J{Ç3($¥(,l*:(ý- }È3*N{È3($¥((l*(ý- *2($¥(*l*(ý- *2($¥(.l*(ý- *2($¥(0l*(ý- *2($¥(4l*:(ý- }É3*J{É3($¥(2l*:(ý- }Ê3*J{Ê3($¥(6l*V(ý- }Ë3}Ì3*b{Ë3{Ì3($¥(l*(þ- *"(þX*:(ÿ- }Í3*V{Í3(b+þ(c+*(‚- *Z{L3oÖ+ (X*(. *.(Y*(. *.(Y*:(. }Î3*0{Î3(d+ (e+þ(f+*(~- *R{\3('X(¥+*(. *"(Y*(. *"(Y*:(. }Ï3*j{Ï3(g+o. þ(h+*(. *0(i ($nEB(Ȭ ‡tw{„; {F3oZ(ÛXþ(Ñ+*tv {‚;(ïh uˆ,t{ƒ;(³ -% tˆ(p {F3oZ(PX*{ƒ; {‚;{F3oZr}]p(ÒX(«+&(ÛXþ(Ñ+*{ƒ;{‚; +¼tx{†;{…; {F3oZ(ÙX (¥+&(ÙXþ(¥+*tz{‰; {F3oZrÁWp{J3 (Ô+þo#, *tu  {€;  {;{F3oZ(Y (õ+&(ÙXþ(¥+*t{{Š; {F3oZ (úX*ty{‡;{ˆ; {F3oZ(ÓX(©+&(ÛXþ(Ñ+*( . *0þ¾{V3oFiE+>Zvˆ¤°{`3 r…]p(= s\ z(äXo9, (n*{_3('X(i+*(ÕXoa (äXo9, (n*(âXo\ (âXo\ (n*{Z3(Õ+{;*(Yo}, (âXo\ (n*(ûX("n*(ÖXo_ (äXo9, (n*( . *.(ÎX*( . *.(1Y*( . *.(0Y*:( . }Ð3*0{Ð3(j+ (k+þ(l+*(. *"(ÐX*(. *N(ÐX(ìX(Éo*(. *"(3Y*:(. }Ñ3*j{Ñ3(m+o. þ(n+*V(â }Ò3}Ó3*v{Ò3(ÍX{Ó3(ÍX*(. *0‚(Ì, (Í, s”[*V(â }Ô3}Õ3*¢{L3{Ô3oÖ+ (X{Õ3(6Y*(. *0, (Þ (q s˜[*:(. }Ö3*0{Ö3(o+ (p+þ(q+*(. *N(ÏX(ÏXsd, *(. *~{\3('X(¥+(9YsM *:(. }×3*j{×3(r+o. þ(s+*(. *.(=Y*:(. }Ø3*0{Ø3(t+ (u+þ(v+*(. *.(7Y*( . *B(fY(w+*(!. *.(@Y*(‚- *Z{L3oÖ+ (X*(". *r{L3{M3(FX(X*(. *.(7Y*(#. *.(OY*’(â }Ù3}Ú3}Û3}Ü3*¦{Ù3{Û3(¦+&{Ú3{Ü3þ(¦+*V($. }Ý3}Þ3*0#O(%( (ö {Ý3{Þ3s¶[*:(%. }ß3*F{ß3(x+*:(&. }à3*F{à3(y+*Ò(â }á3}â3}ã3}ä3}å3}æ3*ò{á3{ä3(¦+&{â3{å3(¦+&{ã3{æ3þ(¦+*r('. }ç3}è3}é3*0 1 (|( (ú (ù {ç3{è3{é3s¾[*:((. }ê3*F{ê3(z+*’(â }ë3}ì3}í3}î3*¦{ë3{í3(¦+&{ì3{î3þ(¦+*V($. }ï3}ð3*0#O(%( (ö {ï3{ð3sÄ[*:(%. }ñ3*F{ñ3(x+*r(â }ò3}ó3}ô3*º{L3{ó3oÖ+ (X{ò3{ô3þ(¦+*:(). }õ3*0 (*. (+. {õ3sÊ[*:(,. }ö3*0 {ö3({+ (|+þ(}+*V(â }÷3}ø3*¾(ÙX{÷3(¥+&{F3{ø3,+oZ*(.. *0p(@ (A (B sÐ[*:(/. }ù3*0{ù3(~+ (+þ(€+*(ó- *B(ÙX(Í+*(1. *2(X*(2. *0!(&& ('& oÆmoms3. *(4. *0(&& ('& þ*(5. *.(BY*(6. *.(HY*:(7. }ú3*0{ú3(+ (‚+þ(ƒ+*(9. *.(IY*:(:. }û3*0{û3(„+ (…+þ(†+*(<. *.({Y*:(=. }ü3*0{ü3(‡+ (ˆ+þ(‰+*(‚- *Z{L3oÖ+ (X*:(- }ý3*F{ý3(Ì+*(?. *.(JY*:(@. }þ3*F{þ3(Š+*(A. *.(2Y*:(B. }ÿ3*F{ÿ3(‹+*( . *B(fY(w+*(1. *2(X*(C. *.(MY*(D. *.(NY*:(E. }4*0{4(Œ+ (+þ(Ž+*:(G. }4*n{4¥(Â+þ(+*(H. *.(DY*:(I. }4*0{4(+ (+þ(‘+*:(K. }4*n{4¥»( +þ(’+*(M. *(k*:(M. }4*6{4(k*(N. *"(SY*:(M. }4*6{4(1i*V(M. }4}4*0q,a{4o;³  (‹ oö²{4{a3{u^(PY {4{W3 (O. (P. (k Þt(k Þ*{4(k*DT:(M. }4*6{4(k*:(M. } 4*6{ 4(k*(Q. *"(:Y*(R. *"(VY*(~- *R{\3('X(¥+*:(¤- } 4*:{ 4(Î+*(S. *R{]3('X(“+*:(T. } 4*:{ 4(”+*(Q. *"(:Y*:(U. } 4*:{ 4(•+*(V. *"(eY*(¥ **(W. *v(éXo] (éXo] s³ *:(X. } 4*:{ 4(–+*(Y. *¢(éXo] (éXo] (éXo] s= *:(Z. }4*:{4(—+*(W. *v(éXo] (éXo] s³ *:(X. }4*:{4(–+*([. *’{\3('X(¥+(éXo] s3. *:(\. }4*j{4(˜+o]. þ(™+*(^. *š(âXo\ {V3oFiþ($¥s¢ *:(_. }4*j{4(š+o`. þ(›+*(a. *0 (*. (+. s *(b. *"(XY*(c. *"(^Y*:(d. }4*j{4(œ+oe. þ(+*(f. *"(_Y*:(g. }4*j{4(ž+oh. þ(Ÿ+*(i. *"(‚Y*:(j. }4*j{4( +ok. þ(¡+*(~- *R{\3('X(¥+*:(¤- }4*:{4(Î+*(l. *"(`Y*:(m. }4*:{4(¢+*(n. *"(4Y*:(o. }4*:{4(£+*(p. *"(cY*(q. *"(dY*:(r. }4*j{4(¤+os. þ(¥+*:(t. }4*N{4oà, s$ *(u. *"(ZY*:(v. }4*j{4(¦+ow. þ(§+*:(x. }4*N{4oy. s+ *(„- *.(X*(z. *0L(ønE3X‡°Ú,U~¨Ò6g¼œ¬t¡ {à; {F3oZ{F3,+oZ*t¢ {á; {F3oZ (X*t£{â;{F3oZ{F3ioZ*t¤{ã;{F3oZ(X*t¥{ä; {F3oZ i(X*t¦  {å; {F3oZ (X*t§  {æ; {F3oZ (X*t¨{ç;{F3oZ( X*t©{è;{F3oZ( X*tª{é;{F3 oZ( X*t«{ê;{F3 oZ( X*t¬{ë;{F3 oZ({. (|. (X*t­{ì;{F3 oZ(}. ( X*t®{í;{F3 oZiÑ  i(X*t¯{î;{F3oZ{L3oÖ+ (X*{F3oZ*{F3oZ*t°{ï;{F3oZsj\(~. (²+þ(¶+*(€- *"('X*(. *0…{V3oFiE/<O\iu™¥±ÊÛê{`3 r‘]p(= s\ z{V3oFiþ(Ôn*('Xg(Ön*{V3oFiÒ(Øn*('Xh(Ún*('XÑ(Ün*('X(Þn*('X(àn*()X(ân*()X(än*()X(æn*()X(èn*('X (€. (. (ên*()X(‚. (ìn*('XÑiÑ(în*{\3('X(¥+(ðn*(ôn*(ön*sn\(½+o, sƒ. (òn*(„. *.(iY*:(…. }4*0{4(¨+ (©+þ(ª+*(‡. *.(hY*:(ˆ. }4*F{4(«+*(‰. *"(pY*:(Š. }4*j{4(¬+o‹. þ(­+*(Œ. *"(oY*:(. }4*:{4(®+*(p. *"(cY*(Ž. *.(ÆX*:(. } 4*0 { 4(¯+ (°+þ(±+*(‘. *2i(X*(Æ- **þ(ÇX*(’. *&('XÑ*(D. *.(NY*:(“. }!4*F{!4(²+*(D. *.(NY*:(“. }"4*F{"4(²+*(D. *.(NY*:(“. }#4*F{#4(²+*(”. *0C#(îoE\ü]ýUÄ™A#¥ºxtì {Š< ( +tÞ {I< {K<{F3oZ(fY (¤+&(ÙXþ(¥+*tß{M<{L<{F3oZrW@p(àX(¦+&(LY*té  {€<  {<  {~< {F3oZ (uY(ÛX (Ñ+&( Y (+&*tà  {Q< {P< {O<{F3oZ(®q3+(ª+&(ª+&(X*tá{Z<{X<{W<{V<{U<{F3oZsŽ\s\s’\s”\(³+&(³+&(Y(+&(ª+&(ÙXþ(¥+*tâ{_<{]<{\<{F3oZ(Y(õ+&(ª+&(ÙXþ(¥+*tã{c< {b< {a<{`<{F3oZ(ª+&(ÙX(¥+&(ÛX (Ñ+&( Y (+&*tä{f<{e<{F3oZ(Y(´+&(ª+&*tå{j<{i<{F3oZ(lY(ª+&*tç  {y< {w<! {v<"{F3 oZ"(hY( Y!(µ+&(ÙXþ(¥+*tæ##{r<$#{q<%#{p<#{o<#{n<{F3 oZs–\s˜\(ÙX(¥+&(³+&(ª+&%(}Y$(Y*tè&&{|<&{{<&{z<'{F3 oZ(Y'(¶+&(ª+&(ª+&*të(({ˆ<({‡<{F3 oZ(Y(õ+&(ª+&*tê)){†<){‚<{F3 oZ(ª+&(ÙXþ(¥+*(q. *"(dY*(q. *"(dY*(q. *"(dY*(™. *0 "${V3oFiE;W~ß:wªÍëm‘®{`3 r¡]p(= s\ z(gYo[ ($¥(âXo\ (Ðo*(éXo] (bY($¥(Òo*(vY(äXo9, ("Yoß, ($¥(æo*o` o` ('X E"{`3 r¯]p(= s\ z(ªq+(¬q(lŠ($¥(Ôo*sœ\(·+sž\(·+(+Yoà, o` (âXo\ (·hoE ($¥(Öo*(Yo},  o` (âXo\ (·hoE  ($¥(Øo*o` (âXo\ (äXo9, ("Yoß, ($¥(Úo*(Yoš. o` ($¥s (Üo*(sYo` ($¥s (Þo*(åŠ($¥(oY(Yo›. ($¥(âXo\ (âo*(âXo\ s \(·+o` („Y (†Y (·hoE   ($¥(ào*((Yoœ. o` o` ($¥(äo*(Yo}, o` ($¥(êo*o` (âXo\ s ($¥(èo*(‚- *Z{L3oÖ+ (X*:(- }$4*F{$4(Ì+*(. *.(zY*:(ž. }%4*0&{%4(¸+ (¹+þ(º+*:( . }&4*0({&4(»+ (¼+þ(½+*(ó- *B(ÙX(Í+*(¢. *0*(Y(¾+ (¿+þ(À+*(¤. *.(|Y*V(â }'4}(4*Z{'4{(4(~Y*(¥. *0 (§ (¤ s´\*(~- *R{\3('X(¥+*:(¤- })4*:{)4(Î+*(¦. *"(Y*:(§. }*4*j{*4(Á+o¨. þ(Â+*:(©. }+4*j{+4(Ã+oª. þ(Ä+*(«. *"(ƒY*(«. *"(ƒY*(¬. *"(…Y*(­. *.(lY*:(®. },4*0,{,4(Å+ (Æ+þ(Ç+*(°. *.(kY*(±. *.(yY*:(². }-4*0.{-4(È+ (É+þ(Ê+*(´. *0/(wY(b+ (Ë+þ(Ì+*(´. *0/(wY(b+ (Ë+þ(Ì+*(¶. *.(GY*:(·. }.4*01{.4(Í+ (Î+þ(Ï+*(D. *.(NY*:(E. }/4*0{/4(Œ+ (+þ(Ž+*(D. *.(NY*:(E. }04*0{04(Œ+ (+þ(Ž+*(¹. *"(sY*:(º. }14*j{14(Ð+o». þ(Ñ+*(¼. *"(rY*(½. *"(€Y*:(¾. }24*j{24(Ò+o¿. þ(Ó+*(À. *f(xY(Ô+oÁ. þ(ž +*(À. *f(xY(Ô+oÁ. þ(ž +*(Â. *"(]Y*:(Ã. }34*j{34(Õ+oÄ. þ(Ö+*(q. *"(dY*:(r. }44*j{44(¤+os. þ(¥+*(q. *"(dY*:(r. }54*j{54(¤+os. þ(¥+*(H. *.(DY*(1. *2(X*(Å. *0\2sþ\ {¸; {¹; {º; (‡Y(×+&{L3oÖ+ (X{F3 ,+oZþ(+*(b. *"(XY*(b. *"(XY*0$Ì DsóY€64sõY s÷Y€74sùY sûY€84sýY€94sÿY sZ€:4sZ sZ€;4sZ(½+€<4s Z(²+€=4s Z(½+€?4s Z€>4sZ(²+€A4sZ€@4s›Z sZ€C4sŸZ s¡Z€D4s¥Zs§Zs©Z€B4s¯Z s±Z€F4s³Z sµZ€G4s·Zs¹Zs»Z€E4s¿ZsÁZ€H4(eµsÇ. ,(gµsÇ. -(iµsÇ.  (kµsÇ. (mµsÇ.  (oµsÇ. 2(qµsÇ. 3(sµsÇ. 4(uµsÇ. 5(wµsÇ. 6(yµsÇ. (µsÇ. .(ƒµsÇ. /(…µsÇ.  (‡µsÇ.  (‰µsÇ. (‹µsÇ. (µsÇ. (µsÇ. (‘µsÇ. 0(“µsÇ. 1(•µsÇ. (—µsÇ.  (™µsÇ. (›µsÇ. (µsÇ. (ŸµsÇ. *(¥µsÇ. (§µsÇ. 8(¶sÇ. (ѵsÇ. (( ¶sÇ. 9(ÙµsÇ. (È. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. €I4 ,sÉZsÊ. €J4sÌZ(¾X(Ø+sÎZsË. sÐZsË. sÒZsË. 7sÔZsË. sÖZsË. sØZsË. sÚZsË. sÜZsË.  sÞZsË. "sàZsË. #sâZsË. !säZsË. $sæZsË. +sèZsË. sêZsË. &sìZsË. sîZsË. =sðZsË. 'sòZsË. s[sË. s[sË. (Ì. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. (Í. €K4  €N4 +(ÄX  (ÃX¤  X  2Þ(ÄX€M4s [€O4(ÅX(ÀX(Ù+s[(¾X(Ø+(ÂX€L4s([€P4s*[€Q4s,[€R4(Ú+€S4(ØX(Î. €T4(ØX(Ï. €U4s.[€V4(Û+€W4(ÜX(Ð. €X4(ÜX(Ñ. €Y4(Ü+€Z4(áX(Ò. €[4(áX(Ó. €\4s4[€]4(Ý+€^4(åX(Ô. €_4(åX(Õ. €`4s8[€a4s:[€b4(Þ+€c4(ðX(Ö. €d4(ðX(×. €e4(ß+€f4(óX(Ø. €g4(óX(Ù. €h4sN[  sP[€i4sl[  sn[€j4st[  sv[€k4s|[  s~[€l4(ÚXs€[oÚ. &(ãXs‚[oÛ. &(à+€m4(Y(Ü. €n4(Y(Ý. €o4(á+€p4( Y(Þ. €q4( Y(ß. €r4(â+€s4( Y(à. €t4( Y(á. €u4(â+€v4(Y(à. €w4(Y(á. €x4(ã+€y4(Y(â. €z4(Y(ã. €{4(ä+€|4(Y(ä. €}4(Y(å. €~4(ä+€4(Y(ä. €€4(Y(å. €4(å+€‚4(Y(æ. €ƒ4(Y(ç. €„4(æ+€…4(Y(è. €†4(Y(é. €‡4(ç+€ˆ4(!Y(ê. €‰4(!Y(ë. €Š4(ç+€‹4($Y(ê. €Œ4($Y(ë. €4(è+€Ž4('Y(ì. €4('Y(í. €4(é+€‘4(*Y(î. €’4(*Y(ï. €“4(é+€”4(-Y(î. €•4(-Y(ï. €–4sl\€—4sp\€˜4sš\€™4s¢\€š4(YsÈ\sÊ\oð. &( YsÌ\(ê+oñ. &(YsÎ\sÐ\oò. &(YsÒ\oó. &(õX(wYoô. &(YsÔ\oó. &(ÞXsÖ\sØ\oõ. &(YsÚ\sÜ\oö. &(YsÞ\sà\oö. &(Ysâ\sä\o÷. &( Ysæ\(ë+oø. &()Ysè\sê\où. &(#Ysì\oú. &(òX(xYoû. &(&Ysî\oú. &(çXsð\sò\oü. &(,Ysô\sö\oý. &(/Ysø\sú\oý. &sü\€›4s]€œ4*~8*(6% *~8*0=F{¥4{¦4{§4 {þ. ofm {g:{k:oÿ. s/ sÐ`*0BH{¥4(I) þ,{§4 {þ. o/ +,|¦4 {/ þo/ **0QJ(/ ,G (/ (/ (/ (/ (/ {;{ü:{;{ü:3* +±*0+K{þ. ofm {g:{k:o/ -*(¸ *0L{t; {u; ( ](øm*0L{v; {w; ( ](n*.þ(Š+*>sÒ`þ(/+*08N(i ($nE¦-Wétz {¥4{‰;(ì+*tv {ƒ; {‚;{§4{þ. ofm{g:{k:o/ -& (³ -* (] þ,*(n*  (¸  (](n*ty  {ˆ;  {‡;{t; {‡;{u; {§4{þ. ofm{g:{k:o/ - (øm (](n*  (¸  (øm (](n*tw  {„;  (] þ,*(n*tx  {†; {…;(](]þ, þ+,*(n*tu{;{€;(]( / ( / (](n*t{{Š;(]("n*0ƒO(WnEœM}*t† {š; {§4 {þ. ofm{g:{k:o/ -*(¸ (On*t‡{œ;{›;(](](Qn*tˆ  {;(](Sn*t…  {™;  {;{ÿ:  ,Y   (• ($n3 (• t{{Š;8ðþÿÿ (• sÔ`rÍ]ps / (í+þo / *sÖ` {¥4(î+,6sØ` {¥4(ï+($n3 t{{Š;*rõ]ps\ z*:sÚ`(ð+*BsÜ`þ(ñ+*0’P{3; {8; {7; {4; {5;{6;(z! 9&(A$   ( lELÛÓ ta  {F;  {I;  {H;  {G; (]  (](šl8¥ t_{A;{@; {B;  (](] (](–l+a t`{C; {D;{E; (]{§4(](˜l+(žl+ tb{J;(œl(ï# +(] (]sÞ`(‹+sÏ (†l*‚({ -*s / (ò+þ(’+*0]Q(¨ - s/ *sâ`(ü+ sä`(/+{¥4(ó+{¦4{§4sÐ` sæ`(š+s/ *:sè`(]*0JR{S; ,' (•  (] þ,+ ( + þ,*{T;sÍl*0?S{j; {§4( ] {k; (] þ, þ+,* s:m*0iT|¦4 oÆm {/ {U;{[;o/ ,(ˆ *{s;Œl,+,*{s;  (] þ,*sÁm*N( ],*(]*N( ],*(]*0aU( ],*(i ($n3=tu {€; {; (]( / ( /  (](n*(]*0K {F= {E= {I= {H= {G={J=( ],*(] (öq*0 §W{@= {D= {C= {?= {B={A=( ],*(](]( / ( /  (]  ( /    ( /  sê`  sì`(ô+ sî`(‹+(æq*®(I) þ,*(õ+s/ (]sÐ`(]*®(I) þ,*(õ+s/ (]sÐ`(]*®(I) þ,*(õ+s/ (]sÐ`(]*®(I) þ,*(õ+s/ (]sÐ`(]*Šsð`(õ+s/ (]sÐ`(!]*Jsò`( ](!]*0¿ sô`(/+ (Š+s?) *0oofm o~jþ(Š+*V{B8{E8(i*^{B8{E8þ(i*0JXofm {g:{r: ,# (• ($n3(• t{{Š; *r7^pr“^ps z0<Y(i (Wn3(t† {š;om,{š; (,]+Æ*0«Z, (-]+(i (WnED)*t† {š; {B8{E8(i,**tˆ {;(.]e*t‡{œ;{›;(.](.]X*0¢Z(-] (WnEJ/*t† {š; {B8{E8o/ (i,**tˆ {;(/]e*t‡{œ;{›;(/](/]X*0™[(-] (WnEE,*t… {™; {;{ü:{;{ü:3**tˆ {;(0]e*t‡{œ;{›;(0](0]X*0\(-] (WnE(O*t… {™; sö`(\+,*(u! *t‡ {œ; {›;(1]+‰tˆ{;8pÿÿÿ6(z (1]*0°](-] (WnE;l*t… {™; sø`(ö+,*(0] -* sÑ# (Ò# *t‡{œ;{›;(3]8lÿÿÿtˆ{;8Pÿÿÿ0^ (Ó# (3]*0 Ò_, (-]+ (i (WnE>w*t† {š; sú`(÷+,*(.] -* s/ (/ *t‡{œ;{›;(5]8Pÿÿÿtˆ{;8.ÿÿÿ0`   (/ (5]*0³a(-] (WnE7l*t† {š; o/  sü`(ø+,*o/ ( *t‡{œ;{›;(7]8lÿÿÿtˆ{;8Mÿÿÿ0c  ( (7]*Ê-(Un*3*/e(9](Sn*Y(9](Qn*~(Wn3*(Wn3*(Qn*0*e(/ , sþ`(/ (/ þ(ù+*(Un*0F(i ($n32t{ {Š; (4](Í# þ,(6](Ø# þ***0_f(4] (6] (Í# , (Î# (Ð# YE rŸ^ps\ z(Í# (Í# -è(Ø# -à(Î# (Ï# *0Jg(4] (6] (Í# , (Î# (Ð# YE*(Í# (Í# -ñ(Ø# þ*0¥h(4] (6] (Í# 9t (Î# (Ð# YE$ sa sa(Un(ú+þ(û+*(Í# (Í# -$(Ø# -(Î# (Ï# (Mn* +° +©(Ø# -(Un* +”0‡i($n@yt{ {Š;(Wn3d{Š;t…{™; {;{ÿ: ,A (• ($n31 (• t{{Š;{;(?]("n( (þk***0ij(i (WnE)?**t‡ {œ; {›;  (ü+(ü+X*tˆ{;+™*b{y8(¤ (¥ (n*b{x8(¤ (¥ (n*0œ*3{‚8(¤ (¥ (n*3{ƒ8(¤ (¥ (n*3{„8(¤ (¥ (n*3{…8(¤ (¥ (n*(­sû£ (¤(¥{…8(¤ (¥ (n***0ó{B8{E8{†8(i,+{B8{E8{‡8(i,+{B8{E8{ˆ8(i,+{B8{E8{‰8(i,+{B8{E8{Š8(i,+{B8{E8{‹8(i,+{B8{E8{Œ8(i,+{B8{E8{8(i*0}o™ 3{†8*3{‡8*3{ˆ8*3{‰8*3{Š8*3{‹8*3{Œ8*3{8*sar_ps/ (ý+þo/ *0Skoµ /(\+(n*(]+ (ê (ë {8 (I](¤ (¥ (ß+(n*Š(³ þ,*o~j(Š+("]*00l{g:{r: , (• (J]*rG_prŸ_ps z:ofm(K]*0¦m{g:{q: ( kE =r«_prý_ps zt{Ÿ: (³ þ,*o~j(Š+("]*t { :{µ:,¯{ : ($¥{¤8oVk*>ofm(M]*0¬n(i ($n@•tv {ƒ; {‚; ofm{g:{r:-B{g:{q:( kþ,s a(å++,(M]8|ÿÿÿ*(• (J]8Vÿÿÿ**(O]*0&o(O] ($nE$¶($n3tw ,{„; (I]**tv {‚; {ƒ; ofm{g:{q:( kþ,+o‹j,(M]8Qÿÿÿ{B8{E8{y8(i,+,{˜88ÿÿÿ*tx9<ÿÿÿ{†;{…;{{8(¤ (¥ (¥ (n**(Q]*Î(aE (O]*(Q]*(Q]*00pofm {g:{t: (ºk3t5 {æ:+Ò*07q(O] ($n3tu {€;{;sz *r`ps\ z07r(O] ($n3tx {…;{†;s— *rž7ps\ z0*O(O] ($n3 tw{„;*rK`ps\ z0*O(O] ($n3 tz{‰;*r‡`ps\ z0\s(O] ($nE rÃ`ps\ ztz{‰;*t{ {Š;(=]*0*O(O] ($n3 t{{Š;*raps\ zJ(O]($nþ*J(O]($nþ*J(O]($nþ*0(t(O] ($n3tv {‚;o¬m**0/u(O] ($n3tv {‚; ofmoªj**0(t(O] ($n3tv {‚;o®m**0(t(O] ($n3tv {‚;o­m**J(O]($nþ*0Is(O] ($nE**t{ {Š;(>]*J(O]($nþ**.($nþ*&(n*&(n*J(O]($nþ*07t(O] ($n3tv {‚;{ƒ;sï *rgaps\ z0*O(O] ($n3 tv{‚;*r{aps\ z0(t(O] ($n3tv {‚;(< **07v(O] ($n3"tv {ƒ; {‚; sï (/ **0%O(O] ($n3 tv{ƒ;*(¤ *:(k]ofm*0rw(i ($nE*tv{‚; (< *t{ {Š;(Wn3Ö{Š;t†{š; (< *0wx(m] ,j(9 (; (³ ,X(9 (; (³ (³ -?{B8{E8(9 (: {“8(i,(´ (9 (: ( **0rx(m] ,e(9 (; (³ ,S(9 (; (³ (³ -:{B8{E8(9 (: {“8(i,(´ (9 (: **0Fy(O]($nþ,,(j] (; (: ofm o~jþ(Š+*(6% *:(V](A *:(V](@ *~8*0­z{3; {7; {4; {5; {6;{3;{7;{4;{5;{6; s,a(þ+, (n o+,(x]+,s.a (w ++, (ñ **00{,' , (• (•  þ(}]**þ*0|(@lE qœ7§²BÉ©„ä½tB (@l3$tB {; {;  þ(}]**tE(@l3ìtE{;{;(w]*tC(@l3²tC  {; {;  þ(}]*tJ (@l@wÿÿÿtJ  {;  {;  þ(}]*tM (@l @;ÿÿÿtM  {#;  {#;  {"; {";(}],  þ(}]**tH(@l@ÞþÿÿtH{;{;s0a(þ+*(@l þ*(@l þ*(@lþ*(@lþ*(@lþ*(@l þ*(@lþ*0Y {;|û:(j {;|û:(j (n ot‰,%s2a{;{;{;{;(ÿ+**09}o† o† 3(s4a(/+o"a s6aþ(ò+**0wF{B8{E8(i,*{Ã4 {þ. ofm {g:{k:o/ ,7{B8{E8{Ã4 {þ. ofm {g:{k:o/ (i**0o(S] (S] ($nE`Ù($n3`tz {‰; {Â4{/ {;{ü:o/ ,1{‰; {Â4{/ {;{ü:o/ þ(]*($nEê%[‹*tv($n3ítv{‚;{‚;{ƒ; {ƒ; (|],   (€]**ty ($n3”ty  {‡;{t; {‡;{t; {‡;{u;  {‡;{u; {ˆ;  {ˆ;  (ñ ,(|]+,   (€]**tw($n@ÿÿÿtw{„; {„;   (€]*tx($n@Çþÿÿtx{†;{†;{…;{…;(}],8¬ýÿÿ*t{($n@aþÿÿt{{Š;{Š;(a3 (]**tu($n@Œýÿÿtu{€;{€;{;{;({],)s8a(/+o"a8îüÿÿ*tz ($n@ýÿÿtz{‰; {‰;  {;{ü: {;{ü:þ9Þüÿÿ{‰; {‰; *0F€{Â4 {/ {;{ü:o/ ,${Â4 {/ {;{ü:o/ (Y]**0‰(2] s:a sa(2] ( +(8](8]s@a(+,sBa(++,sDa(+þ(>+**JsFa(w +*J(v]þ(}]*J(aþ(}]*Z(a(v]þ(}]*B(a(w]*J(aþ(y]*B(a({]*J(aþ(x]*>(v](]*0/u(O] ($n3tv {‚; ofmo‹j**0‚(O] (‰], (¤ (¥ *($nE<m|^®tu {;+¦tz {‰; ol, (¤ (¥ *(¤ *tv{ƒ;sHa(¤ þ(+*ty{ˆ;+Ütw{„;+Ítx{†;{…;(Š](Š]þ(ß+*(¤ (¥ *~8*~8*~8*~8*&(n*&(n*^(¨ þ,*(n*&(‘]*"(n*BsRaþ(‚+*0@ƒ(³ ,  (³ (³ - (´ *(n*r•aps¤ (¤(Œ+*:(Þh(•]*R(Þh(•](n*RsTa(‚+(‘]*0 ä…{g:{u:o¸ ( 9Å (/ 9· ( (/ ( / (!/ ( {IoØk(k +-4(=j( ()i( (6i(»+(äkoÌk+oØk(+(1jsM (ð ("/ (+ 8ÿÿÿ*03†{d: on{£;   (ð on{¬;(+*0%‡(îo3tì {Š< ( +Ý*&(ao*0#ˆ(îo 3té {~<(Òpþ**05‰(îo 3té {~<(Òp3 {€< *(k (l *09Š(îoEUq‚G¤µ9Æc+“×tß{N< *té{< +ïtÞ{J< +átê{…< +Ótæ{s< +Åtã{d< +·tà{S< +©tè{}< +›tá{Y< 8Šÿÿÿtâ{^< 8yÿÿÿtë{‰< 8hÿÿÿtä{g< 8Wÿÿÿtå{k< 8Fÿÿÿtç{x< 85ÿÿÿtì {Š< ( 8Çþÿÿ"(Ÿ]*>(âo*ª(Ôn(oo(ao(q (r (p (Co*0/ sVa oXaoXa(¢] oZa*0 (£]*:(¼q(Òo*RsÁm(¼q(Òo*0Ha()i(hi( i( (Vi($‰(æj(=i (¦]së *B(|i(§]*B(|i(§]*B(~i(§]*0 (·hoE (Öo*0 (·hoE (Öo*V(i (f («]*‚(¨ -*(·hoE (Øo*R(¨ -*(êo*0 (·hoE (ào*0*‹s[asY (- + (ù (ø (®]*^s]asY þ(+*0 ‹(²] (ù (ø (®]*0 ´Œ--(²]8†( ,c ( ( (²](ø (ù (·hoE  (Öo (Þh(•](nsY +r±aps¤(¤(+ (ù (ø (®]*0 )‹(²] (ù (ø (®](¢o**(¢o*:(åŠ(¢o*ªoÓ oè . rLbps\ zs_aþ(+*Bs (Þo*Fsaaþ(£+*Fscaþ(£+*b(¢os (Þo*n(åŠ(¢os (Þo*:(çŠ(¢o*n(çŠ(¢os (Þo*ªoÓ oè . rŽbps\ zseaþ(+*ªoÓ oè . rÔbps\ zsgaþ(+*^sia(À]þ(£+*^ska(Á]þ(£+*z(ò þ,*s (Üo*z(¨ -(z *smaþ(ü+*06{ï4 {î4 (Å] sua( +  (¯](®]*Nswa{î4(š +*0 1‹(åŠ (\Š {¢8(Ôn{¢8(Ðo(£]*0 1‹(åŠ (\Š {¢8(Ôn{¢8(Ðo(£]*¦(Âp(¤ (¥ (¥ (k (l (æo*J(¾p(æo*B(”p(æo*R(–p(¤ (æo*j(¼p(k (l (æo*j(¬p(k (l (æo*j(®p(k (l (æo*R(®p(k (æo*R(¬p(k (æo*j(ªp(k (l (æo*†(ªp(k (l (l (æo*j(°p(k (l (æo*j(²p(k (l (æo*r(´p(k (l (æo*Z(Ö](×]*Ž(¶p(k (l (l (æo*~(¸p(¤ (k (l (æo*š(ºp(¤ (k (l (l (æo*0-M(Ÿ] rûp{¥8(|i(§](ò (­]*þ( p(¤ {¢8(Ü]{¥8(Ü](k (l (l (æo*0 Z(¢p(¤ {—8(Ü]{—8(Ü](Ÿ]{¥8(­](k (l (l (l (æo*0 \ (¤p(¤ (¥ (Ü](Ÿ](­](Ÿ](­](k (l (l (l (æo*0B(¦p(¤ (¥ (Ü]{¥8(Ü](k (l (l (æo*:(ön(Ðo*Ž(šq(Îp(¤ (k (l (æo*Ž(œq(Îp(¤ (k (l (æo*v(˜q(Îp(¤ (k (æo*v(–q(Îp(¤ (k (æo*05Ž{g:{x: -* (R" {e:(Jm  s`m(< *0Œom -* (#/ {l; (#/ {m;  (]oãl,%( is`ms:msÁm+({e:(Jms`ms:msÁm(ð *:{×:("]*Bs’aþ(G+*Nofmo“j(é]*~s”aon{Ì:oskþ(G+*0,n{t; ofm o~j(Š+on{Í:("]*6(T]o•j*0 (6% s–a(T]o•jþ(G+*0(‘(6% (T] ojoqk {×:("]*fo~j(Š+{×:("]*0,’{v;ofm on o~j(Š+{×:("]*0%“(U] (  (? (Å]sz *¢(O]($nþ,(ò]*(z sz *0V”(O]($nþ,6(V] (@ (A (ô]  (J (¥ (¦ sz *(¤ sz *0%“(ò] (  (? (Š+("]*Fs$/ þ(+*~(O]($nþ, (õ]**F(÷]( +*š({ þ,+ (ò](? ( +*0a”1(O]($nþ+,9(V] (@ (A Y(ú]  (J (¥ (¦ sz *(¤ sz *¢(O]($nþ,(W]*(¤ (¥ *0Z•o (ú] (¦ (J  oµ .(Dsû£(¤(+&+sša ( +s%/ *0H–{2< ( & þ,(z sz +(ó] (  (? (Å] sz *0I—{4< {3< (ý] (  (? (ü] (Ô (Ó s&/ *0s˜{U;{b;þþ,]{U;{b;oE {U;{Z;{U;{X;(þ] (• (¨ - (G (H -{U;{`;þþ***Noíl-(ÿ]**0t{B8{E8{‚8(i,+{B8{E8{ƒ8(i,+{B8{E8{„8(i,*{B8{E8{…8(i*0|{B8{E8{‚8(i,*{B8{E8{ƒ8(i,*{B8{E8{„8(i,*{B8{E8{…8(i,*r(cps\ z0;™(j] (; (³ , (³ (³ - (´ *rb.ps\ z0t{B8{E8{x8(i,+{B8{E8{¶8(i,+{B8{E8{·8(i,*{B8{E8{Ç8(i*0)t(O] ($n3tv {‚;(^**0:t(O] ($n3%tv {B8{E8{‚;{‚8(i**0:t(O] ($n3%tv {B8{E8{l8{‚;(i**0:t(O] ($n3%tv {B8{E8{Î8{‚;(i**0:t(O] ($n3%tv {B8{E8{Ï8{‚;(i**0(t(O] ($n3tv {‚;o©m**0:t(O] ($n3%tv {B8{E8{x8{‚;(i**0)t(O] ($n3tv {‚;(^**0:š(O] ($n3!tv {‚; ofm {g:{q:*(k*0^›{g:{q: ( k3t { :(¢a*{g:{q:( kþ,o¤j (6" (| (ža*( a*0dœ( ^ ( k3t { :(¢a*( ^,0(j] (: ofmo¤j(6" (| (ža*( a*0€(^ u·-!u¸-Zt¹ {5 {±:þ*t· {5{^(…»E+þ*(^*0`ž(^ u·-u¸-At¹ {5{°:*t· {5 {^(}»(n þo‰»**>(k](^*0MŸ(`],B(j] (: ofmo¢j{Ã:(ckE***¢(O]($nþ,(k]ofmo®j**¢(O]($nþ,(k]ofmo±j**¢(O]($nþ,(k]ofmo«j**0’ (^ u·-&u¸-Mt¹ {5 {´:þo2 *t· {5{^(»(n þo‰»*(O]($nþ,(k]ofmo¬j**0gž(^ u·-u¸-At¹ {5{°:*t· {5 {^(}»(n þo‰»*(^*0gž(^ u·-u¸-At¹ {5{®:*t· {5 {^(y»(n þo‰»*(^*0{(^],+(O]($nþ,+(a],+(^,+(O]($nþ,+(_],+(^,*(^*®(O]($nþ,(k]ofmo³j+*0-n(O]($nþ9(k] {B8{E8{y8(i,+{B8{E8{_8(i,+{B8{E8{f8(i,+{B8{E8{j8(i,+{B8{E8{a8(i,+{B8{E8{c8(i,+{B8{E8{`8(i,+{B8{E8{d8(i,+{B8{E8{b8(i,+{B8{E8{e8(i,+{B8{E8{o8(i,+{B8{E8{q8(i,+{B8{E8{p8(i,+{B8{E8{g8(i,+{B8{E8{k8(i,*ofm o°j,*o³j,#o~j(¨ -s²ao“jþ( +****J(^,*o«j*6ofm(^*0# (l] , (¸ ofmo°j**0A¡{A= {B= {D= (Š+ (Š+ (™+s´aþ(‹+*.{D=þ*04¢{9= {9={@= {;= (n]s¶a(/+( ^*0[{g:{q:( kþ,o¬j-{g:{s:{Œ:**{g:{q:( kþ,o¤j(| {^**00£{i;{?L,!{g; (Ö -*s¸aþ(è +**0!¤{U;{`; , (³ ($^**:oÆm(%^*~8*†('^þ,*('^þ,*(º *~8*†()^þ,*()^þ,*('/ *~8*†(+^þ,*(+^þ,*((/ *~8*†(-^þ,*(-^þ,*()/ *~ 8*~!8*†(0^þ,*(0^þ,*( *~"8*0R(2^þ,*(2^þ,*{k={k=(.^{l={l=((^{m={m=(1^sKr*0´+(y {5 {5  /+ þ /*1*(y {5 {5  /+ þ/*1*(y {5 {5  /+ þ/*1*(y {5 {5  /* þ*0ž+(y { 5 { 5  /+ þ /*1*(y { 5 { 5  /+ þ/*1*(y {5 {5  /+ þ/*1*(4^*0—-{5 {5 /+þ /*1*{5 {5 /+þ / * 1 *{5 {5 /+þ/*1*{5 {5 /*þ*0-1*{ 5 { 5 /+þ /*1*{ 5 { 5 /+þ / * 1 *{5 {5 /+þ/*1*(6^*0’¦u 9‚{ 5{ 5@o{ 5{ 53_{ 5{ 53O{5{53?{5{53/{5{53{5{53{5{5þ*********~#8*~$8*~%8*~&8*~'8*~(8*~)8*~*8*æ{ 5-*{k=o¡ ,*{k=o*/ {l={m=sKr*Â{ 5-*{q;Œn,+,{p;(A^**rsÍasÏa( +þ( +*FsÑaþ(+*0ß§(@lE /žžžFž[žžtžtB {;þ(K^*tE {;þ(F^*tC {;þ(K^*tH  {;(M^*tJ{;þ(K^*tM{#;{";(K^þ(K^**0 L8{3; {8; {7; {6; sÓa(z!  sÕa(+(M^(M^þ(+*0 ™¨( lE(_xvta {F; {I; (M^þ(K^*t_ {A; {@; {B; (M^(I^þ(K^*t`{C;(M^***¾{l=oU ,*{k={l=oe {m=sKr*š{s;Œl,+,{r;(+**0L{5-*{m=o¯ ,*{;{;{k={l={m=o+/ sKrþ(D^*0d©(i ($nEê¤uÑtw {„;(M^*tv {ƒ; {‚;(B^ (³ ,4 (³ (³ -(´ 8hÿÿÿ (M^**ty{ˆ; {‡;{t; (B^(M^*tx  {†; {…;(K^8ÿþÿÿtz  {‰;þ(J^*tu  {€;  {; (N^(C^(3^*t{  {Š;þ(L^*ZsÙa(4]þ(+*0-ª(³ ,# (³ (´ (K^+Õ*B(2^þ(K^*:(2^(M^*j{U;{Z;(2^þ(K^*FsÛaþ( +*0/«sÝa(+ ,sßa sáaþ(+**Rsãaþ(+*0 ö6(@lE 3´´´M´e´´´tB {;þ(W^*tE {;(U^*tC {;þ(W^*tH  {;(X^*tJ{;þ(W^*tM{#;{";(W^þ(W^**0?¬{3; {7; {6; (X^ såa (X^þ(+*0B. sça(š +,*séa(+ ,sëa{;{;þ(+**0 D­, (O]+ (i ($nE—E.~Ùtw {„;(X^*tv {ƒ;(X^*ty  {ˆ;(X^*tx{†;{…;(W^8@ÿÿÿtz{‰;(V^*tu{€; {;sía (z (W^(R^þ(û +*t{  {Š; sña (4]þ(+*0 7ª(³ ,, (³ (´ (W^+Ë*^(z (W^þ(f +*^(z (X^þ(f +*^(z (X^þ(f +*>sóaþ(²+*0~®(þ] (• (F (,/ (G {=L,+33(H , (H +#r€cps¤(¤(¥+ s&/ *0U¯,8 , (ƒ (§  s® *rÐcps¤(¤(+*rdps¤(¤(+*0¹°(þ] (• (F (,/ (G {3<(H 9,(I (q 9Z(I (q (q :Q(H (H 9ô(H (I (q 9Ò(I   (q (q :¸(H (H :§(-/ 9›  (./ (Ê 9† (./   (Ê (Ê -o (-/ (-/ ,a (-/   (./ (Ê -J (-/ (-/ -<(I   (//  (‡ (f  (r (½' (¾' (¾' 858-(-/ ,ï  (./ (Ê -Ý (-/ (-/ -Ï(‡ (f (r (½' (¾' 8á(H (H ,ž(H (I (q 9„ÿÿÿ(I   (q (q :jÿÿÿ(H (H :Yÿÿÿ(-/ 9Mÿÿÿ  (./ (Ê 98ÿÿÿ (./   (Ê (Ê :ÿÿÿ (-/ (-/ 9 ÿÿÿ (-/   (./ (Ê :óþÿÿ (-/ (-/ :âþÿÿ(I  (//  (‡ (f  8¡þÿÿ(H (H 9¬þÿÿ(H (I (q 9’þÿÿ(I (q (q :xþÿÿ(H (H :gþÿÿ(-/ 9[þÿÿ  (./ (Ê 9Fþÿÿ (./   (Ê (Ê :,þÿÿ (-/ (-/ 9þÿÿ (-/   (./ (Ê :þÿÿ (-/ (-/ :ðýÿÿ(I  (// (‡ (f  8¯ýÿÿ(^,+( s0/ *0_±(]^ (• (F (,/ (G {3<(H 9Ô(I (q 9¿(I (q (q :¥(H (H :”(-/ 9ˆ(./ (Ê 9x(./   (Ê (Ê -\(-/ (-/ ,N(-/   (./ (Ê -7 (-/ (-/ -)(‡ (f   (//  (r (½' (¾' +1+,(-/ (-/ -í(‡ (f  (r (½' (¾' (^,+( s0/ *0}³oÆm {U;{`;oÆm {U;{b;oÆm {U;{X;(+ (1/ (2/  {i;oÆm {U;{Z;oÆm {U;{X;(`^*0}³oÆm {U;{`;oÆm {U;{b;oÆm {U;{X;(+ (1/ (2/  {i;oÆm {U;{Z;oÆm {U;{X;(]^*0Ö´{U;{b; 9Ÿ (E {U;{Z;(ý] (  oýlofmo~jo† o† 0O(.+(…  („   ((]  (?   (@      s3/ (4/ **r>dp{U;{X;s¤(¤(+*:oÆm(c^*0_µ{U;{`;{U;{b;{U;{X;(+ (1/ (2/ {i;{U;{Z;{U;{X;(`^(ƒ *:oÆm(e^*J,(• *{¥8*0A¶{U;{`;{U;{b;{U;{X;(+ (1/ (2/ {i;{AL(&E«"r†dp{U;{X;s¤ (¤ (Œ+*{i;{U;{Z;{U;{X;(`^(ƒ (H þ-oú (q þþ+,oú (+(f *(E{U;{X;sû£ (¤ (Œ+*{i;{U;{Z;{U;{X;(`^( (g^*0&·{U;{`;{U;{b;{U;{X;(+ (1/ (2/ {i;{AL(&E":r¶dp{U;{X;s¤ (¤ (+*(e^¥‰þ(.+*{i;{U;{Z;{U;{X;(`^(ƒ (H þ-oú (q þþ+,oú (M+(Ç( *(E{U;{X;sû£ (¤ (+*0%¿ sõaofmo~j(/+ (nsz *vs÷aofmo~j(/+(n*Z(m‰3rºCp*rêp*05¡{;|û:(j (ái (n oòiþ,rfÁp*rR9p*ŠrR9p(ñ ,*rS@p( ( *0D¸{e: þ, Žiþ+,*oXj(+¥7 rS@p(p+(` (c *0%¸{e: (+¥7 rS@p(p+(` *0H¸{o;Ži-+ {o;Žiþ,*oWm (=+¥7 rS@p(p+(` (c *0P¹(ïh uˆ,tˆ(p (q^*tÝ(ä- {g:{x: , (R" (o^**0*Í(r^ , (d o5/ (n^*þo5/ *0hº(ûh uß,#tß(ë- sb{j;(s^(c *tÀ(s om , (#/ {l;(p^(c **"(r^*>sbþ(s^*>sbþ(s^*>s!bþ(s^*b{t;(w^{u;(n^*b{v;(w^{w;(n^*0>»(t^ ,  (d oÆm om(¢–(n^*oÆm om(¢–*0P¼(ïh uˆ,tˆ(p oWm*ofm {g:{x: ,(R" oXj*m*0T½(|^(+ofm {g:{l:r|8p( ( ([ (\ (Ÿ+¥7 r|8p(p+(` *0L¾({ ,B ({ (| ({ ,' ({  (| (Z+, +»***0¿({ , ({ (++ã*0XÁs#b {05o6/ (+ -4(] þ,rR9p*¥7 rS@p(p+(` rS@p( *(d *0# {g:{s:{Š: ,(• *{¤8*0QÂ{eZo­³o9³o³o÷²(ñ ,,{eZo­³o9³o³ oö² (n þoe **Vs%boŠ´þ(É+*^s'boŠ´þ( +*Rs)boŠ´þ(É+*~{B8{E8{?8{Á;(i*Fs+bþ(N+*Fs-bþ(¹+*Bs/bþ(!+*0CÃ{É;(îo33{É;tÞ {I<(øn3{I<t¦{å; (V **0CÄ{É;(îo33{É;tÞ {I<(øn3{I<t¤{ã; (7/ **0C… {É;(îo33{É;tÞ {I<(øn3{I<t¡{à; (– **0DÅ{É;(îo34{É;tÞ {I<(øn3{I<t¯{î; (c **0gÆs1b(¹+ ,L („ {Ã;(… ,:(„ {Ã; († (Œ^ ,(… (… - (g (– **(– *0`Çs3b(¹+ ,L („ {Ã;(… ,8(„ {Ã; († (Š^ ,(… (… - (Õ (V **0`Ès5b(¹+ ,L („ {Ã;(… ,8(„ {Ã; († (^ ,(… (… - (d (c **0ÿ{>8 s7boŠ´þ(É+*’( ^,(n]þ(€+*râdps\ z0.É(l] ,  {B8{E8{J8(¸ (i**’(“^,(n]þ(€+*reps\ z0-Ê(œi (n o«i, (“^+,(”^**b{X8(¤ (¥ (n*b{[8(¤ (¥ (n*0 2{\8(¤ (¥ (¥ (¥ (¥ (¥ (n*b{Y8(¤ (¥ (n*b{Z8(¤ (¥ (n*0.É(l] ,  {B8{E8{K8(¸ (i**09ª(n] (³ ,& (³ (³ -(›^,(´ ( **0 (œ^ - rZeps\ z(• *0.É(l] ,  {B8{E8{Ð8(¸ (i**09ª(n] (³ ,& (³ (³ -(ž^,(´ ( **0 (Ÿ^ - rœeps\ z(• *J{K8r+Óp(øm*J{K8rÕp(øm*0.ÔoÆm {U;{`; -* (³ {i;{>L*0kË(îo3`tã {`<(îo3K{`<tß {c<(Ê ,2{c< (Ê (Ê -{L< (Ë  s8/ (9/ **0ŽÌ(îo@€tã {`<(îo3k{`<tß {c<(Ê ,R{c< (Ê (Ê ,>(Ê (Ê (Ê -*{L< (Ë (Ë s:/ (;/ **0LÎ("+ ,?{B8{E8(/ (  **0^Ð(#+ ,Q{B8{E8(?/ (@/ (i,2(?/ (@/ (?/ (A/ (?/ (B/ sÏ (C/ **>{\9(¦^*0¹Ñ{E9(§^ ,&( ( ( ( sÏ (C/ *(îo@ttã {`<(îo3_ {c<(Ê ,R {c<(Ê (Ê ,<(Ê (Ê (Ê -%{B8,(Ë (Ë sÏ (C/ **ö{B8{E8{Q9(i,*{B8,oÆmomröep(ñ **ö{B8{E8{V9(i,*{B8,oÆmomr fp(ñ **ö{B8{E8{Y9(i,*{B8,oÆmomrfp(ñ **ö{B8{E8{[9(i,*{B8,oÆmomr&fp(ñ **0ƒÒ(îo@utã {`<(îo3`{`<tß {b<(³ ,G{b< (³ (³ -3{c<(Ê -&{L<(ª^,{L< (´ ( **0ƒÒ(îo@utã {`<(îo3`{`<tß {b<(³ ,G{b< (³ (³ -3{c<(Ê -&{L<(«^,{L< (´ ( **0ƒÒ(îo@utã {`<(îo3`{`<tß {b<(³ ,G{b< (³ (³ -3{c<(Ê -&{L<(¬^,{L< (´ ( **0ƒÒ(îo@utã {`<(îo3`{`<tß {b<(³ ,G{b< (³ (³ -3{c<(Ê -&{L<(­^,{L< (´ ( **Ž( ()i($‰( (»+(äk*0NÓ( ()i($‰( (»+(äk (1j (% (­ (i  s$ s+ sÈk*0So( ()i($‰( (1j(6i(»+(äk (% ( (4r(< (´ {I(r*0Ô{g= {K=*0¦½(y {Y5{Y5($+ /*1*(y {Z5{Z5($+ /*1*(y {[5{[5(+ /*1*(y {\5{\5(%+ / * 1 *(y {]5{]5þ(&+*0’½{Y5{Y5($+ /*1*{Z5{Z5($+ /*1*{[5{[5(+ /*1*{\5{\5(%+ / * 1 *{]5{]5þ(&+*0AÖ{¥4{¦4 sÁm  {/ {U;{[;oD/ s/ {§4sÐ`*²(]sMb{W5('+(E/ {X5(¹ sÐ`*0×{g:{l:oØk(Õ+ 9Ï ( s`m s`m{W5 sF/ {X5(G/ s;b{g:{q:( kþþ,{g:{q:( kþ+,,{Y5{Z5o*/ {[5{\5{]5sCb+1sOboj{Æ:((+sQbo›j()+sI/ *{Y5o*/ {Z5{[5{\5{]5sCbsI/ *0ŠØ{g:{l:oØk(Õ+ ,? ( s`m s`m{W5 sF/ {X5(G/ s;bsI/ *{Y5o*/ {Z5{[5{\5{]5sCbsI/ *0lÙoÜl oÜl (n oÊl,N{U;{`;þ,{U;{`;þ+,%(a{U;{Z;{U;{Z;þ(}]***0›ÛsSboÚk oÜl(*+(+ sÁm ,8 (} sÁms³ {W5(µ {X5s;bsI/ *{Y5{Z5{[5oe {\5{]5sCbsI/ *06p oØk(Õ+ , ( {g:{u:o¸ *(/j(6i*0[ÝsI/ sUb {î:  {ø  où (++(++ {î: sWb  {ø  où (++þ(++*0gßsI/ sYb {î:  {ø  où (++(++ {ì:s[b{ú oû (,+þ(,+*0Sà(¹ (˜ s;b(Jb(¿^ (ü (v]{Â4{X5(¹ s a(ü (ý (À^*fs]bs_b(-+þ(“+*0¨ásI/ (rE`FBDtN {Z= {\= sab (.+scbseb(++þ(++***tK{U=þ(Ä^*tJ{T={K=(¿^*^sgbsI/ þ(/+*0=â{c= {d= {g:{l:(¾^(Ã^ (ü (ý (»^*0öãsI/ (rE¨ŠcˆtN {Z= {\= {[=sib (.+skbsmb(0+sob(Â^þ(,+*tL{V=  {,<(½^**tK  {U=þ(È^*tJ  {T=  {K=(À^*0 Aâ{c= {d= {g:{l:(¾^(Æ^ (ü (ý (»^*nsqbsI/ þ(/+*0Uà(¹ (˜ s;b(Jb(Ã^ (ü (v]{Â4{X5(¹ s a(ü (ý þ(Æ^*0¼ä{g:{y: {ø:( þ-*{Y5o*/ {Z5{[5{\5{]5sCb*{g:{o: {ø:( þ-*{Y5{Z5o*/ {[5{\5{]5sCb*ssboj{Æ:((+ subo›jþ()+*0qå{U;{_; {ø:( þ-+oïl,+{U;|\;(»iþ,*{Y5{Z5{[5oe {\5{]5sCb**0~èswb {î: {ø où (1+(1+ syb {î: {ø où (1+(1+ s{b{ì:{ú oû (2+þ(2+*6(Jb(Ì^*0 uêoJ/ {ø:( þ-*(K/ ,N (L/ (r (K/ (L/ (q oM/ oN/ ,* (3++Ž*0î   sP/ *’sbsbsƒbs…b(4+þ(5+*’s‡bs‰bs‹bsb(4+þ(5+*’sbs‘bs“bs•b(6+þ(7+*’s—bs™bs›bsb(8+þ(9+*0qðsT/ {î: {ø où (?+(?+ {î: {ø où (?+(?+ {ì:{ú oû (>+þ(>+*0ò  þ(:+*^s¡bs£b(i (;+*^s¥bs§b(% (<+*r{U;{_;()i(n oïk*ron{Ò:()i(n oïk*ron{Ü:()i(n oïk*r{g:{y:()i(n oïk*0Y{n=s©bo ,{s=s«boU/ +,{r=s­boV/ +,{t={k=s¯boW/ **J{k=s±boW/ *0 Äó(îo @µtç {w< þ, Žiþ+9‘{w<£Ö{)<(g -y{y< {w<£Ö {w<£Ö{+<{t<{x<{u<{w<£Ö{*<{v<  s s (X/ **0 rô( ( ( ( ( ( ( ( ( Ö% ¤Ö%(i (›o¤Ö(¡]*~.8*0 œJ(à^þ,*(à^þ,*{t={t=(3^ {n={n=((^{o=,+{o={p=,+{p={q={q=(.^{r={r=(*^{s={s=(,^s[r*0 Nõ{ 5-*{t= (K^ þ,*{n={o={p={q={r={s=s[r*0 \õ(³ þ,*{ 5-*{t= (M^ þ,*{n={o={p={q={r={s=s[r*0 Nõ{ 5-*{t= (B^ þ,*{n={o={p={q={r={s=s[r*0 Xõ{ 5-*{t= {U;{Z;(K^ þ,*{n={o={p={q={r={s=s[r*0 Nõ{ 5-*{t= (G^ þ,*{n={o={p={q={r={s=s[r*0 Zy{5-*(å^ {n=oU -*{n=oÄ {o={p={q={r={s={t=s[r*0 6{o=,+{n={p={q={r={s={t=s[r**0 A, {o=þ+,+{n={p={q={r={s={t=s[r**0 6{p=,+{n={o={q={r={s={t=s[r**0 A, {p=þ+,+{n={o={q={r={s={t=s[r**Fs³bþ(=+*08{ 5,%{Y/ Œù,{Y/ *o* (Z/ *þo* *vsµbs·b(>+þ(?+*0!{< {< (ð^þ(ñ^*0 Êö(woE&;;=etÌ {< {< (ã^(ö^*tÍ  {<(â^**tÏ{<{<(â^(â^*tÐ{ < {<{!<s»b(@+(ã^þ(û^*0¡÷uÄ-9uÅ-Ità {< {< {<  (î^þ(û^*tÄ{<þ(_*tÅ{ <{ <{,<{-<(_(û^(ç^(á^*0 ›ø(ÄqE+ (é^ (Äq3at< {0= { 5-*{t= (K^þ,*{n={o={p={q={r={s=s[r**0 Zy{5-*{n=oU ,*(å^ {n=oe {o={p={q={r={s={t=s[r*0 Q{5-*{q=o¡ ,*{n={o={p={q=o*/ {r={s={t=s[r*0N{g:{q:( kE +, (ô^**0 ró{5-*{s=o¥ ,*{t;ofm(õ^ {t;(ä^ {n={o={p={q={r={s=o[/ {t=s[r*0 ró{5-*{r=o£ ,*{v;ofm(õ^ {v;(ä^ {n={o={p={q={r=o\/ {s={t=s[r*š{s;Œl,+,{r;(ó^**0  ù{;= {<= {9= {== s½b (_(A+{ 5-+S{t=(C^þ,+2{n={o={p={q={r={s=s[r(á^(_*Fs¿bþ(B+*–(îo3sÁbþ(ý^*þ(þ^*bsÃb(C+(á^*0 Rû(îo38tå {j< {l< {i< (à^ sÅb+¿(û^þo]/ *0 1ü(îoEJLˆhËÖä¶fxjtá {W< {Z< {U< {V<{X<sÇb sÉbsËb(_(â^(=+(D+(D+(á^*tâ{\<{_< {]<(_(â^{ 5-+T{t=  (C^   þ,+2{n={o={p={q={r={s= s[r(á^*të  {‡< {ˆ<(_{ 5-+T{t=  (C^   þ,+2{n={o={p={q={r={s= s[r(á^*tä  {f< {h<  {e< sÑb(C+(á^*r:fps\ ztæ{n< {q<{r<{o< {p<sÓb s×b(à^(E+(ú^(û^(â^(D+(è^(á^**tß{L<{M<(ø^(ò^*tê{ƒ<(! -${†< {‚<(â^þ(û^*{ƒ<(! {†< {‚<(" ($ (" (% (" (# (â^(ã^(_þ(û^*tã{b<{a< {`<{c<(_(ã^(û^(â^*tì{Š<( þ(û^*tà{P<{O<(û^þ(û^*tè{|<{{<(û^þ(û^*tç{w< {v<!(Þ^"",J"( ( #"( ( "( ( $$(ñ^#(_þ(û^* !(ñ^(_*té%%{~<(Òp@J%{€<(Ê 9%{€<(Ê (Ê 9å(Ê &&(Ê (Ê 9®&(Ê ''(Ê (Ê -^%{<'(Ë &(Ë (Ë (((k (l (l (_(ã^(à^(û^(ê^(á^*%{<%{~<)%{€<*)(ÿ^*(ã^(_*%{<%{~<%{€<*)+Å%{<%{~<%{€<*)+¨%{<%{~<%{€<*)+‹%{<%{~<%{€<*)8kÿÿÿ0 æý(ÒpE4^¹«ˆBPlz\s{î*t  {Ñ< ofm(õ^*t {Ò< (ö^*tþ{À< +ét {Ó< +Ût {Õ< +Ítÿ{Á< *t{×< +ðt{Ù< +ât{Ï<  (÷^*t {Ð< +ét{Î< +Ût{Í< {Ì<(dq(n ooq(é^ofm{ 5-+S{t=(B^  þ,+2{n={o={p={q={r={s= s[r(õ^*t  {Ý<(ã^*(ë^*t  {à<{3;  {à<{8;  {à<{7; {à<{6;sÙb (z!  sÛb(F+(ã^(ã^þ(G+*t{â<(ø^*t{ç<{í< {ì<{ä<{ë< (é^(ã^(ò^(ã^(ã^*FsÝbþ(H+*0&+{)< {*< sßb(û^þ(=+*Fsábþ(I+*0-¸(Ê ,# (Ê (Ë (û^+Õ*>{@=(â^*B(à^þ(ñ^*B(à^þ(û^*0Àþ(rE€g0NtN {\= sãb{[=såb(J+þ(K+*tL {V=  {-<þ(û^*tM{X=þ(û^*tK{U=þ( _*tJ{T={L=8@ÿÿÿF{d=þ(_*Fsçbþ(L+*V{-<(à^þ(û^*B(à^þ(_*0Ðÿ(îo@·tá {W< {Z< {U< {V<{X< þþ,"rnfp(Ÿ]s¤(¤(¥+þþ,"ržfp(Ÿ]s¤(¤(¥+( _(& (Ô (& (& s& *(Ó s& *0Ð(îo@·tá >©{W< {U< {X< {V<þþ,"rnfp(Ÿ]s¤(¤(¥+þþ,"ržfp(Ÿ]s¤(¤(¥+Y ( _(^/ (Ô (_/ (`/ sa/ *(Ó sa/ *0T(îo3Itá {U<-:{V<-2( _ (`/ (_/ (^/ - s& (b/ ***0u(îo3!tâ {\<{]<{_<s= + (z s= (> ( & (?  ( _(& (& (& sc/ *0ž(îoE A(Ó s& *tá {W< {X< (_  (& (Ô (& s& *të{ˆ<8bÿÿÿ0](îo3tâ {\<{]<sd/ + (z sd/ (e/ (f/ (_(& (& sg/ *0t (_ (h/ (i/ o—  (ó](? (ú](J (M+sñb(N+(O+sÈo(…s(¶o*04 {U;{b; -{U;{Z;(· ( (_*(E *08 t· {5 {^{,^(n± {i_ o9³o³r“ïp(ñ ,{¡8*rïðp(ñ ,{ 8*ryïp(ñ ,{›8*r ñp(ñ ,{š8*rÆfp(ñ ,{œ8*r«ïp(ñ ,{8*rÇïp(ñ ,{ž8*rãïp(ñ ,{Ÿ8*ràfp(ñ ,{ª8*rüfp(ñ ,{©8*rgp(ñ ,{§8*r0gp(ñ ,{¢8*{š8*0± (k]ofm (^ u·-&u¸-'t¹ {5 {³:þoj/ *(_*oj{Ç:rëøpoÃ" -/rNgp{g:{l:( onjs¤(¤(Œ+*(Œ! {×:*0  {U;(-m*Z(^, þ(_**0ÛuA,ItA {6= (Q](_ (l] -* (¸ ofmo³j,**t@{5= {4= (Q](_(Q](_(l] -* (¸ (l]  -*   (¸  {B8{E8 (i,**07(k/ ,- (k/ (l/ (_ 3* 3+Í**0 (_ 3*3*(äo*0¦(ûbþ |\;|\; {A:!_!þþ,+(¸i {V;{W;{X;{Y;{Z;{[;{];{^;{_;{`;{a;{b;{c;{d;{e;s0m*0AÖ{¥4{¦4 sÁm  {/ {U;{[;oD/ s/ {§4sÐ`*–{¥4sc{¦4(P+{§4sÐ`*–{¥4{¦4sc{§4(Q+sÐ`*0&u™,t™ {¾; (](°n**0(] ( / ( / s/ *0 n{Á; {Æ; {Ä; {Ç; {Â;{Å;{Ã;{§4( ](_s c(R+s c(S+ (¼n*0/\{É; {È; (õb(._(õb(._(Çn*Fs cþ(ó +*Bsc(]*~sc{5<(ó +{6<sÈo*09{2< {4< {3< sc sc(T+(%_(¶o*0½{Z; {b; ($_ {c;((_ sc{b;(U+{`;{Y;sc(V+{a;(#_{V;{W;{X;{Y;{[;{\;{];{^;{_; {d;{e;s0m*0/iu,!t {: {§4( ](äj*(æj*0S{ì: ¥(W+ (Â+s$ {î:¥»(X+( +s+ {í: sÈk*ª(ûb3{U;|\;(»i,*sc(Ai*Þ(ûb3{U;|\;(»i,*{U;('_(_(Ñl*0.sc(+ (_ sc(Å+sm/ *0$(*_ (_ (+_sn/ *0  (îoEó,Ç<.×Kn(îoE¤„P(r¬gp , só zté {< {~< {< {€<(4_(](6_þ,þ+, þ+,* (æo*tã{b< {d< {a< {`< {c< (._ s!c (] (](6_  þ,   þ+,þ+, þ+,*   (Úo*tì  {Š<( 8"þÿÿtè{}< {|< {{< {z<s#c(Y+ (._ (._ (_*tÞ{K< {J< {I< (]   þ,*  (Ðo*tá{W<{Z< {Y< {U<{V<{X< s%c(Z+(o/ (p/ s'c(Z+(o/ (p/ (,_(q/ (r/  (._  (] (·hoE   (Öo*tâ  {\<! {_<  {^<  {]< s)c!( _""( / #"( /  # (._ (](®]*të$${‡<!${‰< ${ˆ< s+c!( _""( / #"( / # (._ (êo*tä%%{g< %{f< %{e<&&(9_''(s/ '(t/  (._ s (Üo*s-cþ(2_*tç(({y< ({w<)({t<*({v<+({x< ({u<,*,+(7_)Œô,+ r¨9ps‚ z)Ži--Ö./013-Y2232(.3)3£Ö(/_¤Ö3X332X3Ø10/.  (](¡]*tß44{L<54{M<64{N< 5(]76(5_857þ, 68þ+,*78 (Òo*tê99{ƒ<(! -D9{†< 9{…< 9{„<:9{‚<  (._s :  (](èo*9{ƒ<(! ;9{†< 9{…< 9{„<:;(" (# <;(" ($ ;(" (% 9{‚<  (._(](6_={s< ={r<?={o<={p< s/c(Z+(o/ (p/  (] (._s1c>([+s3c?(\+ (°]*té {~<(Òp @ùÿÿ{~<t @{€<(Ê 9óøÿÿ{€<(Ê (Ê :Úøÿÿ@{Ð<AAon{Ô:-{B8A{v;(iþ+9¤øÿÿ{< @{Ð<A{< (Ë  (] (._ rehpA(ñ](~i(§]BB(ò C C A (Ï] CsÁm(å](½]*0C!{)< {+< {*< (,_ (q/  (r/ (._(›o*0 s s (ß^*–þ,þ+,*(Ôo*0í#(îoE=Ó(Þ^ 9³( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (7_ (/_ (]     s5c8ùþÿÿ(._þo¾ *tå  {k< {j< {i<  (8_(u/ (v/ s7cs9c8|þÿÿtà{R<{S<{P<{O<{Q<(._s;c8þÿÿ0MÆuA,tA {6= (](Íq*t@ {5= {4=  (](](Ëq*0f$(ÒpEI /S)kw¦±ÞÕû@*t {Í< {Ì<{§4( ](¨p*t  {Ñ< {§4( ](°p*tþ {À<{§4(](”p*t {Ò<{§4(](²p*tÿ{Á< {§4( ](–p*t{Ø<{×< {§4( ](¸p*t  {Ú< {Ù< {§4( ](ºp*t  {Î< {§4 (](ªp*t  {Ï< {§4 (](¬p*t   {Ð< {§4 (](®p*t {Ó<{Ô<{§4(](´p*t {Õ<{Ö<{§4(](¶p*t{Ý<{Ü<(](¾p*t{à<(](Ìp*t{â<{á<(](Îp*t{å<{ç<{í<{é<{ì<{ã<{ä<{è<{æ<{ê<{ë< (5_ (](](](Ðp*0'u(Äq3t< {0= (](ºq**Bs=c(]+*0â%  uÄ-^ uÅ:ƒtà {< {< {< {<(._s?c(^+sAc (_+(Co*tÄ{<{<sCc(]+(Eo*tÅ{ < { <  (8_  (u/   (v/   (7_(Go*01'{,< (-_ (w/ (x/  (;_ sy/ *0/((\^(,_ (q/ (r/ (:_sz/ *RsEcþ(`+*0!){-< {.< (._(¢o*0 §+{<= {;= {9= {>= {=={:=(#_sGc(!]sIc( _( /  ( /  sKc (a+  ({/   (|/     (._ (Ûq*v(]sMc([+sÈ *0j,{×:($_ {Ý:(#_ {Þ:(#_ {Ô:{Õ:{Ö:{Ø:{Ù:{Ú:{Û:{Ü:{ß:sŸk*fsOcosk(b+(/i*0 M-{Ó:(#_ {Ì:(?_{Í:(]{Î:{Ï:{Ð:{Ñ:{Ò:s‰k*0&.sQco~k(c+ (.is}/ s}k*0w/{Ã: (ckE$$$$t+ {Á: sSc(!](_k+{Ã:sUc{Ä:(d+{Å:(?_smk*0j2( kE 9Yfdt {˜: (B_(k*t {™:  (?_(k*t{š:(A_(k*rhps\ z*t{ :{­:($¥{¤8s~/ o/ (]sWcs€/ {«:{¬: s_c   ($¥od +{®:{¯:{°:{±:{²:{³:{´:{µ:{¶:sTk(k***t  {Ÿ:  (](k*0 ¶6sac{„:(e+ scc sec{ˆ:(f+ sgc{‡:(g+ sic{Š:(‹+skc{‰:(h+smc{‚:(e+soc{ƒ:(i+sqc{…:(j+{†: {‹:{Œ:sk*0Z7(ºkE=!=t5 {æ: {§4( ](²k*t7 {è:  (?_(¶k**0·9{i;(-+(]^ (• {i;(-+(]^ (•  ((](@ {¥4(™+{¦4{§4sÐ`{§4{f;( ]sscsuc{g;(k+{h;{i;s7m*01;(×^ (Ö^ (K_ (/  (H_ s‚/ *Rswcsyc()_*0<{§4 s`m {þ. ofm {g:{k:o/ ÞTtu‰,>rÁhp(“”(ne(È+( onjs¤(¤(¥s`m Þþofm*02T02=|¦4 {/ {U;{[;o/ -* (ˆ oÆm*0a@s{c(l+ (_ (,_ (q/ (r/ s}cscs‰c(m+ sƒ/ *0 s‹c*07AþNþKþJs‘c*0@BþNþLþKþJ s—c*0ND{K= {L= {M= (Q_ (G_(„/ (…/  (rs†/ *0:E{K= {L= {M= (Q_ scsŸc()_ (r*03F(M_( + (N_(Â+ (K_ (/ (R_*0-G(rEíÇbtN {Z= {\= {]= {[=s¡c(l+s£cs¥c(²+(`+s§c(˜+ (r*tL{W= {V={,<(J_(;_ (r*tM{Y= {X=  (._ (r*tK  {U= s©c (™+( r*tJ  {T=  (P_( r*0%={c= {d= (I_(R_(4r*R( ](G_(…/ *F( ]þ(._*fs«c( ](n+(‡/ *–(õb(õ+s/ (]sÐ`þ(._*0"+{)< {*< (Y_(\Š(›o*0 ÁH(îoE]ÌàK›³ï(+!‘éˆttá {W< {T< {Z< {U<{V<{X<(Y_ (Öo*tâ{[< {\<{_< {]<(Y_ (Øo*të  {‡< {ˆ<(Y_(êo*tä  {h<  {f< {e<  (^_(Y_ (Üo*tå  {l<  {j< {i<(__(Y_ (Þo*tç{y< {w<{v<(çŠ(]_Œô,+ r¨9ps‚ zŽiÖY2&£Ö(X_¤ÖXX3Ú (¡]*tß{L<{M<(Òo*tê{†< {„<{ƒ<{‚<(Y_ (èo*tæ{n< {q<{m< {r<{o<{p< (Y_s­c([+s¯c(\+(ào*té  {<! {~<" {€<#"(ÒpE"+"(€Š(¨Š(¦p+(€Š(•Š(¤p!#(\_(æo*tì$${Š<%%%( (Y_(¿ *tã&&{b<!&{a< &{`<&{c<#(Y_ !#(\_(Úo*tà''{P<'{O<('{Q<)((Y_(Y_)(lŠ(Ôo*tè**{z<+*{|<*{{<(+((Y_(Y_(äo*tÞ,,{I<,{K<(Ðo*04I{<= {;= {9= {== {:= (Y_(Ûq*Rs±c([+sÈ *Bs³cþ(a+*0·J  uÄ-L uÅ-rtà {< {< {< (Y_sµc (^+s·c(_+(Co*tÄ{<{<s¹c(a+(Eo*tÅ{ <{ <  (__(]_(Go*Bs»cþ(¦+*0"Í {,< {-< (Y_(åŠ(¢o*J{Ø:-{Ô:**fs½c{Ì:{Æ:þ(V+*0 ®on s¿c{Ì:{Æ:þ(V+*0g{g:{q:( kþ,+o³j,sÁcoj{Æ:þ(V+*{g:{q:( kþ,sÃcošjþ(W+**:ofm(c_**0Q{B8, {B8{E8{t;{R8(i+,þ+,*on{Ì:oqk{Ô:*0ŠK/+(T]o•joÕ þþ,Nrÿhps (²+ sÇcofm {g:{l:(³+ofmonjs¤ (¤(¥+(T] ojoqk{Ô:*0[o®kþþ,+o°j,+{Ú:,*{Ø:- {Ô:+,{g:{q:( kþþ**ž(h_, {ß:{I*{ß:{I(˜–*b{]8(¤ (¥ (n*J{^8(¤ (n*0/L(³ ,  (³ (³ - (´ *(n*{¥8*:(Þh(l_*nsÉcsËc(+þ(‚+*b{|8(¤ (¥ (n*:{¡8(o_*0ÖMté {< {~< (ÒpE“ÕÜéOO¿®˜|*©1®®ö…´333çµM(³ ,: (³ (³ ,+ (³ (³ (³ - (´ (´ *rIips\ zt{í< (³ , (³ (³ - (´ *{¥8*t{Ý< +Ætþ{À<(ì]*t {Ò<(n*t{Í<(n*{¦8*{¡8(o_*{8(o_*t{Û<  þ(I+*(n*{¥8*(³ ,  (³ (³ - (´ (o_*rqips\ z(³ , (³ (³ - (´ *r—ips\ zt {Ð<  (ñ](C]*t{Ï<  (ñ]*{¥8*t  {á<(žqE'ÐÿÿÿÐÿÿÿ+Î {â<  oÆm  {U;{Z;(’^* {â<  oÆm  {U;{Z;(C]*{—8*t {Ô< {Ó<{t;ofmo~j(Š+on{Ì: oqk{×:("]*t{Ø< {×< (ï]*(³ ,  (³ (³ - (´ (C]*r¹ips\ zt{à<{7;(g^*(³ , (³ (³ - (´ *réips\ z{¥8*0ÂN(îoEWeŒËøc-;TrI-<tã {b< {a< {c< (÷] (o+*tæ{n< *tç{y< +ðtê{†< +âtÞ{K< +Ôtß{L<oÆm{U;{Z;*tà{Q<{P< {O< (®q3 + 8îþÿÿtá  {W<  {Z<  (Þh(l_(n*tâ  {\< {_<(‘]*tå{j<  8Œþÿÿtë{ˆ< +åtì{Š<(  +Ítè{|< +¾tä{f< +¯(q_*Z(ù (ø (Úo*0?r({ ,4 ({ (O]($nþ-*(V](@ +Ä*0AO(O]($nþ,,(p+ (O]($nþ-* (q+**0LP(Ê -*(îo@ótã {b< {c< {a< {`<(Ê þ,+j(›](îo3Utß{L<oÆm  {U;{b;-+&  (E   {3<o oè þ+, (r+þ+,?{b< {c< {d< {a< {`< (ª+ (¥(Úo*(O]($nþ-rjps¤ (¤ (+&+(¤ (Úo*0oQ(x -(v_* (› (x (³ -+¼(k (Úo(õ]+‘b(ù (ø (w_*j(³ -*(k (Úo*0oRuÄ-9uÅ-Dtà {< {< sÏcsÑc(s+þ(t+*tÄ {<(^ *tÅ{ <+‘0 SuÄ-OuÅ-età {< {< {< {< sÓc(^+sÕc(_+(Co*tÄ{<{<þ(u+*tÅ{ <{ <({_(Go*0T{< {< ({_(ao*Bs×cþ({_*0½UsÙc(V (z_(v+(6+ ŽiŽi<Ž(w+Ži (x+ sÛc(y+sÝc(}_Œ,+ r¨9ps‚ zŽi ù Y2%£’£ù¤ùXX3ÛsŠ/ *sŠ/ *09V uÄ- uÅ-*tÄ {<(V *tÅ { <+Ç0dWuÄ-;uÅ-5tà {< {< sßc(z+,*sácþ({+**tÅ { <(_þ*0YuÄ:ŒuÅ:½tà {< {< ¥f oŒ/ oï , o/ {<(_+ÞÞ u , oâ &Ü&Ü&,(© 8fÿÿÿ*tÄ{< {<  (+ sÎ  £h (Ž/ ¤h *tÅ  { <  { <  (  8øþÿÿ='d0¿({ , ({ ({ þ**0œ[sçc (_ ,* (Õ  £h (|+,(Õ (k (Eo*  uÄ-O uÅ-HtÃ{<{<{<{<(^+(_+(Co***0›^(€_,s/ *Ži(/ (}+  ( (_sãc o~+¥j (+ -s/ *séct¯}6t¯}Ž6(ƒ_sïc(€+s/ *0:_uÄ9 tÄ {< {< Ži2 rEjps\ z£Ö {)< {*<oÓ oè ;¶r™jpŒ’,4u¼,  (x ¥|o¡ +  o& +rR9prójpŽi  Œ’,4u¼,  (x ¥|o¡ +  o& +rR9p( ( ( s\ z(Ÿ]þ(Ã]*(¡]*0[a(s+ uÄ,þ(…_*(+ (‘/ (’/  („_(‘/ (’/ þ(…_*0_ (l] ,Q (¸ ofm(c_-+{B8{E8{g8(i,*{B8{E8{h8(i**0`aoãm-oÆm {U;|\;(»iþ+,5(ùcE*oÆm {U;{Z;(‡_***boãm, {B8(i**ron{Ø:- on{Ô:**0@b(óc (n odþ,{B8{v;(i+,(ñ](‡_**0 · c- sds§ *(îoE – (îo @Üté {~<(Òp @Â{~<t {€<(Ê 9¦{€< (Ê (Ê :{< {Ï<(Š_,+  (‹_,f{< {Ï<{<(Ë (r_(^(Œ_(ð  (ñ     (Ð]s§ *(îo @–té  {~<(ÒpEŒÛ(îo@¡tã  {`<(îo@† {`<tß  {b<(³ 9g {b< (³ (³ :O {c<(Ê 9> {c<(Ê (Ê 9$(Ê (Ê (Ê : {B8{E8 {L<{‹9(i9ç {L<(Ë  (´ (Ë  (“²(O]($nþ,+,(1µ+(3µ,%{B8{E8(ˆ {09(i+sd((³(¶(Y (Z (C](¤ (¥ (¾p(¤ (¥  (k (l (l (æos§ *(îo@ºtã{`<(îo@Ÿ{`<tß{b<(³ 9€{b<(³ (³ :f{c<(Ê 9U{c<{L<{B8{E8{Œ9(i,+{B8{E8{9(i,+{B8{E8{Ž9(i9å{L<(´ (Ê (Ë oè (”²(O]($nþ,+,(1µ+(3µ,%{B8{E8(ˆ {09(i+sd((³(¶(Y (Z (C](¤ (¥ (¾p(¤ (¥ (l (æos§ *(îo@¯tß(óc(n od9{L<{N<oÆm{U;{Z;( ^,(Hsû£(¤(+&+oãm,(ësû£(¤(ð +*(Isû£(¤(ð +*(r_(^,V(ùcE!+=(Jsû£(¤(¥+(Ksd(¤(¥+rehp(~i(§](ò sdsÁm(å]s§ * {~<t{Ü<( 9ûÿÿ{Ü<  ( ('¶EahùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿËhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿhùÿÿ8cùÿÿ ( t.! ( ( :Dùÿÿ{Ý<(³ 93ùÿÿ{Ý< (³ (³ :ùÿÿ {€<(Ê : ùÿÿ (´  {< {<!{…["!{„[#sd"(ßµ(Y (Z (C](¤ (¥ (¾p(k (æos§ * ( t .$ ( ( :~øÿÿ{Ý<(³ 9møÿÿ{Ý< (³ (³ :Uøÿÿ {€<(Ê 9Døÿÿ {€<(Ê (Ê :*øÿÿ (´  {< {<${ˆ["(Ë ${‡[#${†[%(r_&&(^(Œ_(ð  (ñ   "(áµ(Y (Z (C](¤ (¥ (¾p (k (l (æos§ * {~<t' {€<(Ê :U÷ÿÿ {< '{Ï<(Š_,+  (‹_9'÷ÿÿ {< '{Ï< {<sd (Ñ]s§ *té {~<(Òp@Põÿÿ{~<t(({á<(žq@1õÿÿ{€<(Ê :!õÿÿ({â<{<sd(¼q(Òos§ *tß  {L<(‰_,+ (ˆ_9Èôÿÿ {L< {N<sd(å]s§ *0 Cd{v;ofmo³j(÷c(Œ_ (ð (ñ (Ï]þo¾ *0 Ed{v;ofmo³j(óc(Œ_ (ð (ñ (Ô]þo¾ *0½e(›] (îoE`````**té {~<(ÒpE/kÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿqkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿkÿÿÿ8fÿÿÿ{< {< {€< s"dþ(a+*{~<tþ{< {< {À<{€< s(dþ(a+*{~<t{< {Í<{< {€< s,ds.dofmo•j( +þ(‚+*(ƒ+&*0Œ(m‰3(m‰3* * +ú0 *s”/ s•/ s–/ s—/ s˜/ s™/ sš/ s›/ *0Ùhsœ/   („+ :« (îoE1sè†Ó1›Ï!1K * * té {€< {<{~< þ(…+* tà{P<{O<{Q<  (k (l (l þ(…+* tá  {X< {Z<  {Y<  {T<  {U< {V< {W<   8©þÿÿ tâ{]<{_< {^< {[< {\<   8Fþÿÿ të{ˆ<   8 þÿÿ tã{`<{c< {b<{a<  (†+ þ(…+* tä{f<{e< (‡+  8`ýÿÿ tå{j<{i< (ˆ+  8ýÿÿ tì{Š< (   8Âüÿÿ tç{w<{v<{y< {t<{x< {u< (‰+þ(Š+* tê{ƒ<(! -{…< {‚< *{ƒ<(! (" (% {‚<(" ($  þ(…+* tæ  {q<! {r<" {p< {n<  {m<  {s<  {o< (†+#sž/ $$sŸ/ #!(‹+"þ(Œ+* tè%%{|<%{{<%{z<& (k (l (l þ(…+*(ƒ *0#   (+ (Ž+*0 3js¡/   (+  o£/  þ(+*02   {,<sÁ (‘+ {-<(†+*0ls¥/ s¦/   (’+    uÄ-k uÃ-| tÅ { < { <(+(Ž+  8Sÿÿÿ tÄ{<þ(…+* tÃ{<{< {< (†+   (“+ þ(”+*0%ns¨/  (rE¬‘8k tN {\= {[=  (‡+þ(•+* tL{V= (+(Ž+* tM {X=(†+* tK {U=þ(=+* tJ{T=   {L=  8Ûþÿÿ0 ü{{©/ {ª/ {«/ {¬/ {­/ {®/ {¯/ s°/ s±/ s²/  s³/  s´/  sµ/   s¶/   t† }·/  t… }¸/  t„ }¹/  tƒ }º/ t‚ }»/ t }¼/  t† }½/  t… }¾/  t„ }¿/  tƒ }À/ t‚ }Á/ t }Â/  t† }Ã/  t… }Ä/  t„ }Å/  tƒ }Æ/ t‚ }Ç/ t }È/  t† }É/  t… }Ê/  t„ }Ë/  tƒ }Ì/ t‚ }Í/ t }Î/  t† }Ï/  t… }Ð/  t„ }Ñ/  tƒ }Ò/ t‚ }Ó/ t }Ô/  t† }Õ/  t… }Ö/  t„ }×/  tƒ }Ø/ t‚ }Ù/ t }Ú/   t† }Û/  t… }Ü/  t„ }Ý/  tƒ }Þ/ t‚ }ß/ t }à/   t† }á/  t… }â/  t„ }ã/  tƒ }ä/ t‚ }å/ t }æ/   t† }ç/  t… }è/  t„ }é/  tƒ }ê/ t‚ }ë/ t }ì/   sí/ *6(–+(î/ *6(–+(ï/ *R(ðn{£8(Ðo*R(Ôn{¢8(Ðo*R(Øn{¡8(Ðo*R(Ün{8(Ðo*R(Ôn{¢8(Ðo*R(Ôn{¢8(Ðo*N(ôn{¥8(Ðo*R(Þn{š8(Ðo*R(Þn{š8(Ðo*R(Þn{š8(Ðo*R(Þn{š8(Ðo*R(Þn{š8(Ðo*R(Þn{š8(Ðo*09Ã(îo3.tÞ {I<(øn3{I<t¦{å; (V **Ö(O]($nþ,{B8{E8{’8(k](i**0Hª(©_,3(n] (³ , (³ (³ - (´ *r%kps\ zrskps\ zz{‘8(¤ (¥ (¥ (n*b{8(¤ (¥ (n*b{8(¤ (¥ (n*J{J8rQãp(n*B(ªq(Ôo*R(ªq(lŠ(Ôo*0X|(Ê -(ôn{¥8(Ðo* (Ê (Ê - (Ë *(Ê (Ë (±_(ªq(Ôo*²(Ѱ(Y (Z (¤ (k (¤ (¥ (Ë]*0A5(Ê ,' (Ê (Ê - (Ë *(˜p(æo*(ôn{¥8(Ðo*Zsbd(u+(³_*nsdd(©+(Þh(³_*01}Ži (x+  Y  2 £’ ¤’ X X3è*0Y~Ži (¶_ /(%- r¿\ps zù Y 2#£’£ù¤ùX X3Ý*~0oð/ ,*X+ã*0p‚(` ,\ (` (W% (—+ (ò/  (ó/ X(˜+(ô/ (õ/ (j sö/ *(÷/ sö/ *.(˜+*0£’ Ysfd(¸_*0Q„(¶_ shd (ž + ( (™+ (Ì  (Í (+(b+(š+sø/ *03†(b+(S+(è+(¼_ (ù/ (ú/ (ž +sÎ *0¶ˆ(n(j] (; (: sjd(›+(œ+ sld (+ Ži(x+snd (ž+spd(Ÿ+srd( +(½_(Í (Ì  std(¨p (æoþ(£+*0 F(fq{J8(¤ (¥ {J8rQãp(n(œ" (" (k (l þ(¾_*ž{J8rQãp(n(¤ (¥ þ(_*¦{J8rQãp(n(¤ (¥ þ(Ž_*z{+9(¤ (¥ (k (Ì]*ê{*9(¤ (¥ (k (l (l (Ÿ](Ÿ](¥(Ì]*06^(r_(|i(§] (ò (ó (çŠ(¢osü/ *~/8*~08*~18*â(Ç_(Y (Z (¤ (¥ (k (l (¤ (¥ (Ë]*Ê(Å_(Y (Z (¤ (k (l (¤ (¥ (Ë]*â(Æ_(Y (Z (¤ (¥ (k (l (¤ (¥ (Ë]*¢{ ^rÙkp{Ç^(= (> { ^([°*b{¡^rWp{¡^(`°*0"‰{<8 (¡f (¼q(ÒosY *R{9(¡+(ù *R{‚9(¡+(ù *R{ƒ9(¡+(ù *Ú{„9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{…9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{†9(¡+(¤ (¥ (ú (û (k (l (x_*Â{U9(¡+(¤ (¥ (ú (û (k (x_*Â{Z9(¡+(¤ (¥ (ú (û (k (x_*Ú{ˆ9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{R9(¡+(¤ (¥ (ú (û (k (l (x_*0F{{9(¡+(¤ (¥ (ú (û (ôn{¥8(Ðo(k (l (x_*0 S{°9(¡+(¤ (¥ (¥ (ú (û (ôn{¥8(Ðo(k (l (l (x_*ö{±9(¡+(¤ (¥ (¥ (ú (û (k (l (x_*0 K{|9(¡+(¤ (¥ (¥ (ú (û (k (l (l (l (x_*0 D{^9(¡+(¤ (¥ (ú (û (k (l (l (l (x_*ö{b9(¡+(¤ (¥ (ú (û (k (l (l (x_*ö{_9(¡+(¤ (¥ (ú (û (k (l (l (x_*0 D{`9(¡+(¤ (¥ (ú (û (k (l (l (l (x_*ö{a9(¡+(¤ (¥ (ú (û (k (l (l (x_*ö{©9(¡+(¤ (¥ (ú (û (k (l (l (x_*0 D{ª9(¡+(¤ (¥ (ú (û (k (l (l (l (x_*0 K{«9(¡+(¤ (¥ (ú (û (k (l (l (l (l (x_*0 R{¬9(¡+(¤ (¥ (ú (û (k (l (l (l (l (l (x_*0 A{]9(¡+(ú (k (l (l (l (l (l (x_*0 R{¥9(¡+(¤ (¥ (¥ (¥ (¥ (¥ (ú (û (k (l (x_*Ú{¦9(¡+(¤ (¥ (ú (û (k (l (x_*0 øŠt° {ï; (~. þ, Žiþ+9Á£’ £’£’£’ ÿ_c ÿ_/+Ò €_þþ (Þn{š8(Ðo(Þn{š8(Ðo(Þn{š8(Ðo (Ôn{¢8(Ðo(Øn{¡8(Ðo(å_(  *rWps\ z^(øn3 (è_**b{}8(¤ (¥ (n*b{9(¤ (¥ (n*0v‹(r_ (V](@ Þt (ê_ Þ {9(¡+(¤ (¥ (¥ (¥ (ú (û (k (l (l (x_*0v‹(r_ (V](@ Þt (ê_ Þ {‘9(¡+(¤ (¥ (¥ (¥ (ú (û (k (l (l (x_*Ú{“9(¡+(¤ (¥ (ú (û (k (l (x_*ö{•9(¡+(¤ (¥ (ú (û (k (l (l (x_*ö{—9(¡+(¤ (¥ (ú (û (k (l (l (x_*ö{™9(¡+(¤ (¥ (ú (û (k (l (l (x_*0 K{›9(¡+(¤ (¥ (¥ (ú (û (k (l (l (l (x_*Ú{9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{ž9(¡+(¤ (¥ (ú (û (k (l (x_*0D{Ÿ9(¡+(¤ (¥ (¥ (ú (û (k (l (l (x_*Ú{¡9(¡+(¤ (¥ (ú (û (k (l (x_*Â{£9(¡+(¤ (¥ (ú (û (k (x_*0 YŒ(k (l (l (l (l {­9(¡+(ú svd(u+(³_(k (l (x_*Ú{®9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{¯9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{´9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{²9(¡+(ú (ôn{¥8(Ðo(k (l (x_*Ú{³9(¡+(ú (ôn{¥8(Ðo(k (l (x_*Ú{µ9(¡+(¤ (¥ (ú (û (k (l (x_*Ú{¨9(¡+(¤ (¥ (ú (û (k (l (x_*0 L{§9(¡+(¤ (¥ (ú (û (ôn{¥8(Ðo(k (l (l (x_*0N(‘µ(Y (Z (¤ (Þn{š8(Ðo(k (l (l {—8(¤ (¥ (Ë]*0N(eµ(Y (Z (¤ (Þn{š8(Ðo(k (l (l {—8(¤ (¥ (Ë]*0F( ¶(Ÿ´({µ(Y (Z (Z (¤ (k (l {—8(¤ (¥ (Ë]*0J(“²((³(¶(Y (Z (¤ (¥ (k (l (l (¤ (¥ (Ë]*ö(qµ(Y (Z (¤ (k (l (l {¢8(¤ (¥ (Ë]*ö(wµ(Y (Z (¤ (k (l (l {¢8(¤ (¥ (Ë]*:(ön(Ðo*Ê(ѵ(Y (Z (¤ (k (l (¤ (¥ (Ë]*0é(îo @Úté {~<(Òp@Á{~<t {Ü<( 9¥{Ü< ( ('¶6@Œ( ( :|{Ý<(³ ,o{Ý< (³ (³ -[{<(³ -N{€<(Ê ,A{€<(Ê (Ê -+ (´ {<(Ë sý/ (þ/ **:( `þþ*0H‹{S9(¡+ (ù (ø (¤ (¥ (ôn{¥8(Ðo(k (l (Úo*v(Äp(¤ (¥ (k (æo*~28*~38*~48*~58*0{[{@8{E8 on{£;(`(<°(á²{E8 on{£;(`(<°(= (B°sxd(¢+(> szd(^ (£+(A («±*:(V (`*R(V (^ (`*j(V (^ (^ (`*0m[{@8{E8 on{£;(`(<°{@8{Ì^(£°(= (> {@8{Ì^s|d(£+(*´(? (@ (A («±*0X[{@8{E8 on{£;( `(<°{@8{š^(= (> (c ( ´(? (@ (A («±*š{eZo­³o4³Ðì(d ol (ñ *0p(`,e(ݰ(Ó± (ø (: -(c * (; (,´30(; tª- {DZ-(c * {DZ(d (c ***~68*0 ”(y (z ({ {@8(a–(`(<°{@8{Ì^{@8{Ì^{@8{Ì^(= (> (> (> i(´i(´i(´(? (@ (@ (@ (A («±*~78*^(a–(`(<°(‚^*0ˆ‘(a–(`(<°(‚^,n(ݰ(Ó± (ø (: -*(ø (; (,´3"(; tª- (: (: - {DZ *(Os\ (¤(¥**F(ܰrýkp(<°*0~‘(`(‚^,n(ݰ(Ó± (ø (: -*(ø (; (,´3"(; tª- (: (: - {DZ *(Ps\ (¤(¥**0’(ݰ(Ó± (ø (: 9Ï(ø (; (,´@·(; t¯- (: (: 9›(: (; (,´@ƒ (; t¯- (: (: ,i (: (; (,´3R(; t¯-(: (: -6{IZ{IZ{IZ  Ñ3 Ñþ+,Ñþ**(Qs\  (¤ (¥*0:(y (z ({ (a–(`(<°(‚^, ( `**0s[{@8{E8 on{£;(`(<°(á²{E8 on{£;(`(<°(= (B°(= (> (´(? (@ (A («±*0c“(Þh (¤+ {U;{X; rulp(n(|i(§] (ò (ó s~d(ã +s€dsÿ/ *0 ú•oÓ 3+þ,+þ- r‰lps\ z-sj *3sj *@~o– {U;{Z;(W] oµ . r³lps\ zs‚d(Ù+(Ú+ (Š  (‹ {U;{X;{U;{X;(³_(¿]sj *(#`(0 (0 (i (f o¾ sj *0W–(g ,D (g (g -(h së * (#` (0  (0 o¾ së *rëlps\ z0 æ˜(îo36tå {k< {j< {i<(&`s (Þo*(x :‚(Ê -*oè (_ ,Y (0 (& (0 (& s„d(¥+(à (ß s†d(¸]þ(£+*(v_*  (› (³ -# (x   8ÿÿÿ (›   (x  (îo@†tâ  {\<  o†  oµ þ,c {\<  {_< {]<   (](ó+(W_(Y_("] 8\þÿÿ (ú (û (k (w_  (÷] 8þÿÿFþ(&`*FsŠdþ(¦+*0™oÆm {U;{Z;(þ] (• (F (G sŒd(ü+sŽd(/+(](ó+ ("](§+ (Òo oÆm {U;{Z; (ú (û  sd (º+   (&` s’d  sY (+(ø  (ù    (®] (‘]sY *0*(ô] (¦ (J s”d(+s¡ *0âš(îoEh*tã {`<(îo3è{`<tß {c<(Ê -Ï{L< {b< {N<{M<{a< s0 (0 *tß {L< {N<{M<(¤ s0 (0 *š(a(v](}],*(Ÿ](Ê]*²sžds d(¨+(—+s¢d(©+(³_*rs¤d(ª+(³_*0›(r_ (³ ,% (³ (³ -(r_(¤ (¥ +(û] (] ,(] (] -(^ +r—àp 9‘ (|i(§](ó (ò s¦d(³ ,I (³ (³ -9(³ ,1  (³ (³ -  (´  (´    (,`+ (.`s§ *(a(v](l_(}], s¨ds§ *(³ ,> (³ (³ -.(´  (k (l (r_(¤ (¥ s0 +(ž](û]s0   (µ   (¶  oè oµ 3sªd (-`s§ * (|i(§](ó (ò s¬d(.`s§ *s0 *s0 *0 ×£(îo @Èté {~<(Òp@¯{<(³ 9Ÿ{< (³ (³ 9ˆ(³ (³ (³ :q{€<(Ê 9a{€< (Ê (Ê :J(´ (´ (O]($nþ,(O]($nþ+9 {<(´  (Ë (´ (a(v](}],s0 ( 0 *(*`(£  (¤  (ô]  (J  s–d  («+ (›](+`9ˆ( 0 ( 0 oÆm{U;{b;þ,_( 0 ( 0 oÆm{U;{b;oE oÆm{U;{Z;(Ÿ](þ]sšd(G (¬++(P o 0  (­+( 0 (0 oè o 0 /+(m+(ø (ù sœd(®+oè o 0 þþrOmp (|i(§](ó (ò  o0 s²d s0 (¯+(0  (0 !s´d(°+o 0 oè Y(±+(²+(³+"(0 þ,! (¿]8sÂd"(´+(µ+$$(0 %$(0 &$(0 'o0 -sY (ú &(x_+$!sY (ú &(x_ (¿](sÄd'sÆd%((¶+(¶+##s0 ( 0 **0Ñ¥(›] (îo36tã {b<(³ -"{`< {c<{a< s0 + (k s0 (O$ (N$ (2`,\(0 (N$ (Ê -(0 (O$ *(0 (O$ (0 (N$   (r_(¤ (Ÿ](Úo**0 B(¨ þ,*sY sÈd(/+(ú (û (k (x_(®]*0( (ž {U;(-m{U;(.mo m*0@¦(³ ,- (³ (³ -* (¼p(k (l (æo*r]mps\ z0É {*< ( `þþ*0S¨{*< {)< {+< ( ` -* (0 (0 (0 (0 (`(›o*0 I©sÌd(·+(h+ {)< {+< {*< sÎd(+sÐd(+(Þh(l_r‡mp(|i(§](ó (ò   („s(5`sÒd(©+(Þh(³_(›o Œô,+ r¨9ps‚ zŽi  Ö  Y2(  £Ö(8`¤ÖXX3Ø  sÔd(¸+  (¡]sÖd (£+(½]*0 B«(p+ sÊd (¹+Xo0 3(9`*(¡]*0 R¬(îo 3Ftç {y< {v< {w< {t<{x<{u< (:`**0?­(|^(+ofmoij([ (\ (Ÿ+ ¥7 rS@p(p+(` *0 ®sØd(º+ :™sÚd(º+ --r«mp{;{ù:{Is¤ (¤(¥rýmp* (Õ rŒ^pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( * (Õ rJ pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( *0 ¯(O] ($n3rnp*(^,v(j] (; (:  (^YE #rOnps\ zr$_p+r¿np+rÏnp+rånp(€+(>`( *($nE&Cs³Ër¬gp ÷ só zty{ˆ; {‡;{t; {B8{E8{x8 (i,(€+(>`r ùp( *{B8{E8 {y8(i,(€+(>`r´9p( *(Q]($n3btv{‚;(|^(+ofmoij([ (\ (Ÿ+ sÜd (+¥7 rS@p (p+(` + rps\ z(?`( *tv{ƒ;{‚; 8ìþÿÿtw  {„; rops (ñ+(?`þo *tx  {†; {…; rop (¤ (¥ (¥ (?`( *tz{‰;(»+*rWp*0€°(³ ,r (³ (³ -((´ (O]($nþ, (´ rR9p*sÞd(x +¥7 r:p (p+(` rÙøprp( ( *rR9p*0Lÿ(³ þ,rR9p*rl^psàd(x +¥7 r:p(p+(` ( rR^p( *03±-raop* (0 rS@psâd{d:($+(+(` *ŠrR9p(ñ ,*rS@p( ( *0³{U;{`; 9U oßl:H(³  {i;{U;{b;(-+{U;{Z;{U;{X;(`^(€ (ƒ  {i;{AL(&E%%%rð]props~ +)rð]poms~ +rö]pom(¡–s~ (™ (š  oül  ofmoij(B` (c^  -(z s  +" (  (  (  (  s    (…  („   s0 8(àh{U;{Z;{U;{X;(_^(€ (ƒ om(z {3<o - (¨ þ+,rö]p+rð]ps0 (0 ( 0  (!0 ("0  (#0 ($0 säd¥‰(.+(Ã+(@`o† -rR9p+ræ]ps@ (©+o    (B`( ( ( *0(B` rÎQp(B`( *0(B` rü]p(B`( *brÎQpoij(B`( *6rÎQp( *07´ofm {g:{z:(A` ofm rÎQpoij(B`( ******0'Q {9(^ , (Õ _þþ**N{g:{p:(N`*0Dµ{g:{q:( kþ,,ošj Ži-*sæd(¼+,sèdþ(W+***0\µ{g:{q:( kþ,Došj Ži-*{g:{p:(N`,sêd(¼++,sìdþ(W+***0O(Q] (^,*( ^*0no(^,+(^,*(R`-(O]($nþ+,2{9(k]ofm {g:{p:(Ž^(– þ(5+**Þ(O]($nþ,(k]ofm(Q`+,*(^*¢(S`- (T`þ+, (R`þ**.þ(S`*0‹·(Q] (S`,*(^,k(^,`(j] (; (: sîd ofmo“j(_+ ofmo~j(Š+sðdsòdþ( +***0œ(O]($nþ, (W](… *(O]($nþ,f(j] (; (: (^,+{B8{E8{Ä8(i,+{B8{E8{½8(i,(… ***&(X`*v(O]($nþ,(/ **Ê(O]($nþ- (T`þ+, (R`þ**†(O]($nþ- (U`þ**0¸([`,w(çŠsVa (\ŠoXa (\ŠoXa (¦](qo(ao(q (r (p (Co  (r_oZa(Ê_(¿]*(çŠsVa (Ñ_(k (l (i (f (\Š(›ooWa(Eo (\ŠoXa (r_(so(ao(q (r (p (Co  (r_oZa*0[¹(çŠsVa (\ŠoXa (\ŠoXa (qo(ao(q (r (p (Co  (r_oZa*0A(Ÿµ(uµ(Y (Z (Z (¤ (k (l {¢8(¤ (¥ (Ë]*0 $‹(åŠ (\Š (_`(£]*0 0‹(åŠ (\Š {¥8(ôn{¥8(Ðo(£]*0'Q {9(^ , (Õ _þþ**0b{9 sôdþ(N+*0§»,*{i;{?L,*{g;(Ö þþ,*{9(^ ,# (Õ _þþ _þþsn +sn (X (r ,*{i;{=L,þ+,ofm(Q`þ**0μ(Q] (^-+(^,+(^,*(^ u·-u¸-&t¹ {5{¯:*t· {5{ ^*(^,+(^,A(j](: {!9ofm{g:{p:(Ž^(– þ(5+**0<½(j] (: {ì8ofm {g:{p:(Ž^(– þ(5+*0:¾{U;{`; ,( (³ oýloßl{U;{a;(d`**:oÆm(g`*0 œ¿oÆmoýl ofmo~jo† {i;{?L,+ {i;{>L,{i;{@Lþ+,(Äqþþ+ {i;{AL((n o*, (Äqþ+ {i;{AL((n o*, (Äqþ+{i;{AL((n o*, (Äqþ+oÆm(g` , þ+{i;{AL( (n o*,{i;{=Lþ+{i;{AL("(n o*,{i;{=Lþ+s%0 s&0 *0 KÔoÆm {U;{`; ,! oÆmoßl-(³  (i`*s%0 s&0 *0=oÆmom ob -+o^ |þþ,*oÆmom(®–*0©À{0< {1< (k` ,c (* {O/+o þþ,0r‹opoÆm{U;{X;s¤(¤(+&+þ(A+*rppoÆm{U;{X;s¤(¤(J+*0*E18?FMT(Rsû£ (¤( +*r=pps¤ (¤( +*{L8*{M8*{N8*{O8*{P8*{Q8*âoµ Eoµ (m`(n*{¥8*þ(€+*0¦# (m`r_ppX Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( rmpp( Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( (øm*"{O*"{O*0O(n` {O,*(™^*J(r`(n*0%Á{,< {.< {-< (u`(¢o*0zö(îoE$$(v` - (x`+(â (w`*súdþ(|`*0&Ä{7 -* ('0  südþ(½+*0ö{‘7o)0 ,(â **0 NÅ(îoE…)“6zZÜßgÔÂ*tã {b< {d< {a< {`<{c<(u`(}`þ, þ+,* (Úo*tê{ƒ<(! -I{†< {…< {„< {‚<{’7, (u`+s   (èo*{ƒ<(!  {†< {…< {„<  (" (#  {‚< (" ($  (" (% {’7, (u`+(}` s ( s   (èo*tæ  {n<  {q<  {s<  {r< {o< {p< (u`sþd ([+se(\+(°]*tì{Š<( þ(u`*té{< {< {~<{€<(}`þ,*(æo*tá{Z< {Y< {U<{X<{V<{W<{T<(u`(·hoE  (Öo*tâ{_< {^< {]<{\<{[<(u` (®]*tç{y< {w<{t<{x< {u<{v< (~`(€`þ(†_*tä{g< {f<{e<se(¦+(u`s (Üo*rspps\ zr¥pps\ ztè  {}<  {|< {{< {z<!!(u`(u`(äo*të""{‰< "{ˆ<"{‡<(u`(êo*0 s s (ß^*Bs (Þo*–þ,þ+,*(Ôo*0 áÆ(v` :µ(îoE Ç(Þ^ 9 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (   (~`  (`   se8ýþÿÿ(u`(w`þo¾ *tå  {k< {j< {i<  (t`se8þÿÿtà{R<{S<{P<{O<{Q<(u`se8<þÿÿ(â (w`þo¾ *:s e(]+*0ÑÇ  uÃ-? uÅ:‰tÄ {< {< s e(]+  þ,* (Eo*tÃ{<{<{<{<(u`se(^+se(_+(Co*tÅ  { <  { <  (t` (~`(Go*0%/{)< {+< {*< (u`(›o*Vse(p+þ(¾+*0=È{<= {;= {9= {>= {=={:=(u` (Ûq*Rse([+sÈ *0%É{K= {M= {L= („`(r*0óÊ(rEµ‘AitN {Z= {\= {]= {[=se(¦+(†` (r*tL{W= {V=(t` (r*tM{Y= {X=(u` (r*tK  {U= se (™+( r*tJ  {T=  (ƒ`( r*0Ë{d= {c=(„`(4r*Bseþ(˜+*:se(áh*0BÎse s e {g:{u:o¸ (×^ (Ö^ ( ](¿+þ(À+*0 Ïs"e{h:{n:oc ( _ ( / ( / {p:(#_ {q:(C_s$e{r:(‹+{s:(D_s&es(e{u:o¸ ()_(»+{t:(E_s*ese {i:{j:{k:{l:{m:{n:{o: {v:{w:{x:{y:{z:{{:sáj*>s,e(?i*>s.e(Ai*>s0e(?i*0D(@lE **0EO{U;{Z; (O]($nþ,#s4e{U;{Z;(ò](  þ(\+**‚s6e{g:{s:{‰:þ(« +*šsofm(`*Bofm(`*0 &Ð,(„q+(†q (Þ]*0rÑ(›] (îo @té {~<(Òp@Œ{€<(Ê 9 {€< (Ê (Ê -(Ë  +œ("+9Ò(/  8ºþÿÿ(#+9¤(?/ (@/ (?/ (B/ {B8{E8{<9(i,+{B8{E8{;9(i,+{B8{E8{K9(i,+{B8{E8{A9(i,+{B8{E8{B9(i,+{B8{E8{C9(i,+{B8{E8{D9(i,+{B8{E8{@9(i,+{B8{E8{K9(i,+{B8{E8{P9(i,+{B8{E8{O9(i,+{B8{E8{I9(i,+{B8{E8{J9(i,+{B8{E8{G9(i,+{B8{E8{F9(i,+{B8{E8{E9(i,F(a(v] (r_{£8(}]-#(a(v] (r_{¨8(}]þ++,D(?/ (@/ (?/ (A/ (?/ (B/ (”`, 8üÿÿ*(îoE - h ó(®^,*(°^  ,+ï(¯^  þ*tß{L<oÆmoíl,*oÆm  {U;{[;þoþ *tç  {w<  {v<(•`,(—` þ(d+**tå{j< {i<{-<(”`,({,<  {U;{[;oû 8Îúÿÿ*të{ˆ<  8²úÿÿté{~<(Òp3F{€<(Ê -8Öþÿÿ(®^,8Äþÿÿ(°^  ,8²þÿÿ(¯^  þ*(®^,8‘þÿÿ(°^  ,8þÿÿ(¯^  þ*("+9Xûÿÿ(/ 8~úÿÿ("+9|úÿÿ(/ 8¢ùÿÿ("+9 ùÿÿ(/ 8Æøÿÿ0íÔs>e s@e   uÃ-' uÅ-ttÄ {< o*0 þ(d+*tÃ{<{<{<(”`,(–`(Á++,o+0 þ(Â+**tÅ{ < { <  {-<(”`,) {,<  {U;{[;oû  8ÿÿÿ*&sBe*&sFe*0  (¥ +(”`*0€ Õ(îo@…tÞ {J< {I< (ønE(Ssû£ (¤ (¥**(¯^,*(±^,*(îo @  té{~<(Òp@a {€<(Ê 9, {€<(Ê (Ê -(Ë 8ìþÿÿ{\9(¦^  , (â 8Äþÿÿ(©^  9N ( (  ( (   (™` (™`  (îo3` tÞ {I<(ønEsØêOÆa=*{I<t¦ (îo3ç tÞ{I<(øn3Ï{I<t¦{å;{å;{K<{J< `(Þn(Ðo*{I<t¢ (îo@sÿÿÿ tÞ{I<(øn@Xÿÿÿ{I<t¢{á;{á;{K<{J< `(Ön(Ðo*{I<t¤ (îo@üþÿÿ tÞ{I<(øn@áþÿÿ{I<t¤{ã;{ã;{K<{J< `(Ún(Ðo*{I<t¨ (îo@…þÿÿ tÞ{I<(øn@jþÿÿ{I<t¨{ç;{ç;{K<{J< `(ân(Ðo*{I<t£  (îo@þÿÿ tÞ{I<(øn@óýÿÿ{I<t£!!{â;" {â;#{K<{J< #"`(Øn(Ðo*{I<t¥$ (îo@—ýÿÿ tÞ{I<(øn@|ýÿÿ{I<t¥%%{ä;&${ä;'{K<{J< '&`(Ün(Ðo*{I<t§( (îo@ ýÿÿ tÞ{I<(øn@ýÿÿ{I<t§)){æ;*({æ;+{K<{J< +*`(àn(Ðo*{I<t©, (îo@©üÿÿ tÞ{I<(øn@Žüÿÿ{I<t©--{è;.,{è;/{K<{J< /.`(än(Ðo*{K9(§^009ç0( ( 0( (   (™` (™`  (îo@ tÞ {I<(øn3v{I<t¯1 (îo3_ tÞ{I<(øn3F{I<t¯22{î;31{î;4{K<{J< 43( (ðn(Ðo*(T(Ÿ]sû£ (¤ (b+*(©^559N5( ( 5( (   (™` (™`  (îo3` tÞ {I<(ønEsØêOÆa=*{I<t¦ (îo3ç tÞ{I<(øn3Ï{I<t¦{å;{å;{K<{J< `(Þn(Ðo*{I<t¢ (îo@sÿÿÿ tÞ{I<(øn@Xÿÿÿ{I<t¢{á;{á;{K<{J< `(Ön(Ðo*{I<t¤ (îo@üþÿÿ tÞ{I<(øn@áþÿÿ{I<t¤{ã;{ã;{K<{J< `(Ún(Ðo*{I<t¨ (îo@…þÿÿ tÞ{I<(øn@jþÿÿ{I<t¨{ç;{ç;{K<{J< `(ân(Ðo*{I<t£  (îo@þÿÿ tÞ{I<(øn@óýÿÿ{I<t£!!{â;" {â;#{K<{J< #"`(Øn(Ðo*{I<t¥$ (îo@—ýÿÿ tÞ{I<(øn@|ýÿÿ{I<t¥%%{ä;&${ä;'{K<{J< '&`(Ün(Ðo*{I<t§( (îo@ ýÿÿ tÞ{I<(øn@ýÿÿ{I<t§)){æ;*({æ;+{K<{J< +*`(àn(Ðo*{I<t©, (îo@©üÿÿ tÞ{I<(øn@Žüÿÿ{I<t©--{è;.,{è;/{K<{J< /.`(än(Ðo*(T(Ÿ]sû£ (¤ (¥*{\9(¦^  9öÿÿ (â 8øõÿÿ{\9(¦^  9îõÿÿ (â 8Ôõÿÿ{\9(¦^  9Êõÿÿ (â 8°õÿÿ0øÖ(îo@»tÞ (îo3#tÞ {I< {I< (n oÿn*(¯^,6(¯^,)(• (• (a(v]þ(}]*(±^,6(±^  ,) (• (• (a(v]þ(}]**(¯^,®(¯^,¡(• (• 8sÿÿÿ0–×(îo @“té {~<(ÒpEµ (™`*{€<(Ê ,ê{€< (Ë (îo 3Ô(Ë té {~<(Òp3º{<(³ ,­{< (³ (³ -™(Ê (Ê :‰ÿÿÿ{< (´ {€<(šp(¤ (¥ sHe(a+(æo*{<(³ 9;ÿÿÿ{< (³ (³ :$ÿÿÿ{< (´ {€<+™01ØoÆm {U;{`;oÆm {U;{b;oÆm {U;{X;(+ (1/ (2/ (a^(€ ( (‚ (ƒ  {i;{=L,oÆm(g`þ+9„oÆm {U;{Z;oÆm {U;{X;(þ]  (G   (H ,   (I (¾' +3r€cpoÆm {U;{X;s¤ (¤ (¥+s0/ *0ÁÙoµ 0 r×pps\ z/(\+s,0 *(]+ (ê (ë (Ã+(ù (ø (³ 9Ã(³ (³ :¯(Ê 9£  (Ê (Ê :Ž(´   (Ë   ($n30 tv  {‚;(G], {‚;   s‘ 8{†8 (¤ (¥ (n(˜p (¤ (¥  (k (l (æos‘ +K(`(æ (ç (ä (å (n(˜p(æos‘ (£  (§   (¤ (¥ (ß+(\+ (k (l (ª+s,0 *0</r¦ pX þ’o& ( +r÷pp(= Ñ((³(Y°*0B(ÿ´(ž`(ŵ(Y (Z (¤ (k (l (¤ (¥ (Ë]*09Ã(îo3.tÞ {I<(øn3{I<t¦{å; (V **0=Ú(îo @.té {~<(Òp @{<(³ 9{< (³ (³ :î{€<(Ê 9Þ{€< (Ë (îo@Æ(Ë tá {W<(g 9ª {W<(g (g :‘(Ê (Ê 9(Ê (Ë (îo3j(Ë tá{W<(g ,N{W<(g (g -7(Ê (Ê -){X< {X< (´   sÏ (C/ **04Û(îo @%té {~<(Òp@ {~<t {Å<(xq@ð{€<(Ê 9à{€< (Ë (îo@È(Ë tá {W<(g 9¬ {W<(g (g :“(Ê (Ê 9ƒ(Ê (Ë (îo3l(Ë tá{W<(g ,P{W<(g (g -9(Ê (Ê -+{<{X< {X<   sU (V **0OÜ(îo3Dtå {i<{,< {i<{.< {j< {i<{-< s-0 (.0 **0÷Ý(îo@étã {`<(îo@Ñ{`<tß {b<(³ :µ{c<(Ê 9¥{c< (Ê (Ê 9Ž(Ê (Ë ( `,v (Ê (Ê ,i (Ê (Ê (Ê -S{B8{E8{L<{Š9(i,4{L<(Ë (Õ (Ë   s/0 (00 **0Þ(îo@tã {`<(îo@ï{`<tß {b<(³ 9Ó{b< (³ (³ :¼{c<(Ê 9¬{c< (Ê (Ê 9• (Ê (Ê (Ê :|{L<(´ {B8{E8{‰9(i,(a(v]{—8(}]+,2{L<(´  (Ë (Ë s/0 (00 *(¤`*0 zá(£` 9k(10 (20 (¥` 9S(10 (30 (£` 9<(10 (30 (¡` 9% ( ( (¢`9 (a (c (£`9ò(40 (50 (40 (60 (10 (70 (a (b  (40 (80  (10 (90  (10 (30  (a (d  (10 (20 (10 (90 (10 (90 (10 (20  ( ( (éŠ3tW%{½I(¹Š+(»Š    s:0 (;0 **0 ™ã(¦` 9‰(<0 (=0 3+þ,n(<0 (=0 (<0 (>0 (<0 (?0 (<0 (@0 (<0 (A0 (<0 (B0 (<0 (C0  þ(“`**"(›]*sD0 *:( }E0 *{E0 *&*Zr.8psF0 (Ä+oG0 *j{E0 {;{ü:þoH0 *j{E0 {;{ü:þoI0 *0 å{E0 {;{ü:oJ0 (K0 *2(Å+(K0 *Fo &}L0 *0!o{L0 ofm {g:{k:þoH0 *0!o{L0 ofm {g:{k:þoM0 *0!o{L0 ofm {g:{k:þoI0 *0%o{L0 ofm {g:{k:oJ0 sN0 *0$o{L0 ofm {g:{k:oO0 sN0 *>{L0 þoP0 *2(Å+sN0 *fsQ0 (Å+sN0 þ(Æ+*V(R0 }S0 }T0 *0/o{L0 {S0 ofm {g:{k:{T0 oJ0 sN0 *(U0 *0÷(ö( (÷( sV0 *&}W0 *"{W0 *j{W0 {U;{[;þoH0 *j{W0 {U;{[;þoM0 *j{W0 {U;{[;þoI0 *z{W0 {U;{[;oJ0 sX0 *v{W0 {U;{[;oO0 sX0 *2(Å+sX0 *>{W0 þoP0 *fsY0 (Å+sX0 þ(Ç+*V(Z0 }[0 }\0 *0-è  {W0 {[0 {U;{[;{\0 oJ0 sX0 *(]0 *0é(^0 (_0 s`0 *{¥4*{¦4*{§4*r( }¥4}¦4}§4*( ]*(Œ *"(i*(a0 *"s\ z( *&(åh*( *&(åh*:( }¨4*:{¨4(]*:(b0 }©4*0†ê(@lE ]@.@@@˜@@È@tB {; {; {©4(](&l(c0 *tE {; {; {©4(](,l(c0 *tC{; {;{; {©4(]((l(c0 *tJ{; {; {©4(](6l(c0 *tM{#; {"; {$; {©4 (]{©4(]( (Ê (Ê -(// s»' (r (¼' *{ý4(W]þ(Ñ+*{ý4{¥8(ss»' (r (¼' *.s©a€þ4*( *"s¦a**u·þ*~þ4**u¸þ*sªa**u¹þ*0ú u¹,+ u¸,+*Zr.8ps¥0 (Ò+o¦0 *V(a}5}5*{5*{5*(a*:(a}5*{5*:( }5*2{5{5*2{5{5*:( }5*:( }5*2{5{5*:(S }5*N{5{×:(^*:( } 5*:{ 5("]*(Œ *"(i*:(( } 5*V{ 5{@=þ(^**o &*0$¾{;{ü: {;{ü: /*þ*{ 5*{ 5*{ 5*{5*{5*{5*{5*{5*0D( } 5} 5} 5}5}5}5}5}5*0P*þ,?þ,7(y { 5 { 5  /+ þ /*1*(5^**þ,**:¥ÂoÅa*0Vû¥Â þ,9¥Âþ,,{ 5 { 5  /+ þ /*(7^**¥Âþ,**0¸þ9¬ ¹y7ž{5bcXXX ¹y7ž{5bcXXX ¹y7ž{5bcXXX ¹y7ž{5bcXXX ¹y7ž{5bcXXX ¹y7ž{ 5bcXXX ¹y7ž{ 5bcXXX ¹y7ž{ 5bcXXX **6(n oÈa*bþ, (8^*þþ*0Ÿþ9þ9‚{ 5{ 5@o{ 5{ 53_{ 5{ 53O{5{53?{5{53/{5{53{5{53{5{5þ*********þþ*0¦u ,oËa**(¨0 *~{k={l={m=oF sKr*:(¨0 }5*n{5{;{;þ(D^*:(©0 }5*F{5þ(E^*:(ª0 }5*F{5þ(G^*:( }5*F{5þ(K^*V(«0 }5}5*Z{5{5þ(J^*:(¬0 }5*0|(Ï# (Ð# {5s×a*:(¨0 }5*F{5þ(J^*r(­0 }5}5}5*0 %{5{5{5{;{;(S^*( *&(åh*:(®0 }5*>{5(u +*r(¯0 }5} 5}!5*0 {5{ 5{!5þ(T^*r(°0 }"5}#5}$5*0 {"5{#5{$5þ(W^*( *&(åh*( *&(åh*r(¯0 }%5}&5}'5*0 {%5{&5{'5þ(T^*( *&(åh*’(±0 }(5})5}*5}+5*0 {(5{)5{*5{+5(V^*r(²0 },5}-5}.5*0(|(Ï# (Ð# {,5{-5{.5sïa*(À *"{,<*(Œ *"(i*(Œ *"(i*{/5*{05*{15*{25*{35*{45*{55*{65*{75*{85*{95*{:5*{;5*{<5*{=5*{>5*{?5*{@5*{A5*{B5*{C5*{D5*0´( }/5}05}15}25}35}45}55}65 }75 }85 }95 }:5 };5}<5}=5}>5}?5}@5}A5}B5}C5}D5*0‹{/5sb(Ó+{25{35{45{55{65{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5{D5sb*04ü(P (P (Ô+()isbsb*R{15(Q ob*0%8ofm(i(i {15(Q ob*0‘{/5{05{15{25{35{45{55{65{75{85{95{:5{;5{<5{=5{>5{?5{@5{A5{B5{C5(,i{D5sb*(³0 **o´0 e*:(µ0 }E5*Rsb{E5þ(Õ+*(¶0 **(Ú *6ofmo|j*(Ú *6ofmo|j*(Ú *>ofmomj*(Ú *>ofmomj*:(·0 }F5*0gý{F5(Ö+,V{F5(×+ ([ (n oe þ,'¥7 rS@p(p+(` rS@p( (c *rR9p(c **:(± }G5*:{G5(‚^*r(¸0 }H5}I5}J5*º{I5(‚^,{H5{@8{J5(Ó±(¹0 **(± *†{eZo­³o9³o³r1qp(ñ *V(L }K5}L5*º{K5{B8{K5{E8{L5{?8{Á;(i*V(L }M5}N5*º{M5{B8{M5{E8{N5{?8{Á;(i*:(º0 }O5*²{O5{Ê;(g (ñ ,{Ê;(h (»0 **V(L }P5}Q5*º{P5{B8{P5{E8{Q5{?8{Á;(i*V(L }R5}S5*º{R5{B8{R5{E8{S5{?8{Á;(i*V(L }T5}U5*º{T5{B8{T5{E8{U5{?8{Á;(i*:(± }V5*:{V5(‚^*{W5*{X5*V( }W5}X5*r(v]{Â4{X5(¹ s a*F(¹ (˜ s;b*{Y5*{Z5*{[5*{\5*{]5*²( }Y5}Z5}[5}\5}]5*’þ,þ, þ(¶^**þ,**B¥íþoDb*06þ¥í þ,¥íþ, þ(·^**¥íþ,**0—þ9‹ ¹y7ž{]5(Ø+bcXXX ¹y7ž{\5(Ù+bcXXX ¹y7ž{[5(Ò+bcXXX ¹y7ž{Z5(Ú+bcXXX ¹y7ž{Y5(Ú+bcXXX **6(n oGb*0‹þþ9yuí ,m{Y5{Y5(Û+,W{Z5{Z5(Û+,A{[5{[5(×+,+{\5{\5(Ü+,{]5{]5þ(Ý+******þþ*æ(Œ](¼0 (Œ](¼0 (‹](B (](½0 (Ž](¾0 sCb*0þ,pþ,h{Y5{Y5(Þ+,S{Z5{Z5(Þ+,>{[5{[5(Ü+,){\5{\5(ß+,{]5{]5þ(à+******þþ*0þuí , þoKb**(¿0 *0O(%( (ö oÆmsÀ0 *V(Á0 }^5}_5*0 jÿ{ß:{I {^5oj {Ç:oÃ" ,*{_5{ß:{I(n {Y5{Z5{[5{\5o\/ {]5sCb*V(Â0 }`5}a5*0 \"{`5{Ñ:{Ioœj,*{a5{Ñ:{I(øm {Y5{Z5{[5{\5{]5o[/ sCb*r(Ê }b5}c5}d5*r{b5{c5{d5þ(¼^*:(Ã0 }e5*0=(ü (ý {g:{u:o¸ {g:{l:{e5(¾^(¿^*:(Ã0 }f5*0(ü (ý {f5(º^*r(Ã0 }g5}h5}i5*0 I(ü (ý {g5{h5{g:{u:o¸ {g:{l:{i5(¾^(À^*r(Ä0 }j5}k5}l5*0 *(ü (ý {j5{k5{l5(½^*(¨ *"oÆm*(Å0 *¦{g:{q:( kþ, o¢j{Ä:*(Ê *:(Æ0 }m5*0(ü (ý {m5(Å^*:(Ã0 }n5*æ{g:{u:o¸ {g:{l:{n5(¾^(ü (ý (¿^*:(Ã0 }o5*0(ü (ý {o5(º^*:(Ç0 }p5*0 (ü (ý {p5þ(Ã^*r(Æ0 }q5}r5}s5*0 *(ü (ý {q5{r5{s5(Ç^*r(Ä0 }t5}u5}v5*0 *(ü (ý {t5{u5{v5(½^*:(È0 }w5*V{w5{,<þoÉ0 *r(Ä0 }x5}y5}z5*0 *(ü (ý {x5{y5{z5(½^*r(Ç0 }{5}|5}}5*0 ,(ü (ý {{5{|5{}5þ(Æ^*:(Á0 }~5*0 d{Ü: {ø:( þ-I{~5s`m {ß:{I(n {Y5{Z5{[5{\5o\/ {]5sCb**:(Â0 }5*0 d{Ò: {ø:( þ-I{5s`m {Ñ:{I(øm {Y5{Z5{[5{\5{]5o[/ sCb**(Ê0 *b{g:{u:o¸ (Ì^*(Ê0 *.þ(Ê^*(Ë0 *&(Ë^*r(Ì0 }Í0 }Î0 }Ï0 *0 {Í0 {Î0 {Ï0 (á+*(Ð0 *"{Y5*(Ñ0 *6{g:{y:*(Ò0 *f{§4s`m( ]ofm*(¿( **þ(ne*(Ð0 *"{Z5*(Ñ0 *6{g:{o:*(Ò0 *f{§4s`m( ]ofm*(¿( **þ(ne*(Ó0 *"{[5*(Ô0 *6{U;{_;*(Õ0 *RsÁm(]oÆm*(š( *"(be*(Ö0 *"{\5*(×0 *6on{Ü:*(Ø0 *:{§4(]*(Ù0 *"(he*V(¥ }Ú0 }Û0 *š{Ú0 {Û0 {g:{u:o¸ þ(â+*(Ü0 **(Ý0 *&(f *(Þ0 *&(­ *(ß0 **(Ê *"(Ø^*(¤ *"(Ù^*(¢ *"(Ú^*(  *"(Û^*(  *"(Û^*:(à0 }…5*>{…5(ç^*:(á0 }†5*F{†5þ(ñ^*:(â0 }‡5*F{‡5þ(ï^*r(ã0 }ˆ5}‰5}Š5*0 %{ˆ5{‰5{ˆ5{Š5(ã^(ø^*:(ä0 }‹5*0(U% (V% {‹5s¹b*:(å0 }Œ5*F{Œ5þ(ì^*:(æ0 }5*F{5þ(ù^*(ã0 **r(ç0 }Ž5}5}5*0 4{Ž5{5{,<{Ž5{5{-<{5(û^(ç^*²(ã0 }‘5}’5}“5}”5}•5*0 -{“5{‘5{’5{”5{•5(ü^þo]/ *:(à0 }–5*>{–5(ç^*:(à0 }—5*>{—5(ç^*:(à0 }˜5*>{˜5(ç^*:(è0 }™5*R{™5{,<(ç^*:(è0 }š5*Z{š5{-<þ(û^*r(ç0 }›5}œ5}5*0 A{›5sÍb{5{›5sÏb{5{›5{œ5(_(K+þ(K+*:(à0 }ž5*>{ž5(ç^*r(ã0 }Ÿ5} 5}¡5*0 %{Ÿ5{ 5{Ÿ5{¡5(ú^(â^*:(é0 }¢5*0 (§ (¤ {¢5sÕb*:(ê0 }£5*>{£5(æ^*:(ë0 }¤5*>{¤5(â^*:(ì0 }¥5*F{¥5þ(_*:(à0 }¦5*>{¦5(ç^*:(í0 }§5*F{§5þ(û^*:(è0 }¨5*Z{¨5{-<þ(û^*:(î0 }©5*F{©5þ(_*:(ï0 }ª5*F{ª5þ(_*(ð0 *&sÈo*(ñ0 *6oÚl(Ô *(ò0 **(ó0 *( *V(ô0 }«5}¬5*0±(õ0 (ö0 {¬5Ži/{¬5£Ê +(÷0 -{«5(^+,(¤ + {«5(û] séboÓ oµ 3sëb(ã++ síb (ä+oø0 oµ 3+ sïb (å+þ(æ+*Šsôb€®5sôb€¯5sôb€°5*:( }­5*~®5**(ûbþ*~¯5**(ûbþ*~°5**(ûbþ*{­5*Zr.8psù0 (ç+oú0 *01.þ, þ,{­5 {­5 3*Y**þ,**:¥Aoýb*0B¥A þ,%¥Aþ,{­5 {­5 3*Y**¥Aþ,**0.þ,% (ûbE * * **6(n oc*0.þ,uA ,{­5 {­5 þ**þþ*0*.þ,þ,{­5 {­5 þ**þþ*0uA ,oc**(û0 *0+Ö sÁm  {/ {U;{[;oD/ s/ *(ü0 *05s`m s`m {þ. ofm {g:{k:oÿ. s/ *V(ý0 }´5}µ5*R{´5{µ5("_*V(þ0 }¶5}·5*0 \ {Ê;(é {Ê;(g {Ê;(ê {Ê;(h {·5(]{¶5{·5 ("_s( (Ín*V()( }¸5}¹5*R{¸5{¹5(!_*V(f0 }º5}»5*R{º5{»5(#_*V()( }¼5}½5*R{¼5{½5(!_*V(ÿ0 }¾5}¿5*R{¾5{¿5(%_*:(1 }À5*B{À5þ(è+*V(1 }Á5}Â5*R{Á5{Â5(&_*Ò(1 }Ã5}Ä5}Å5}Æ5}Ç5}È5*0 ,{Ã5{È5{Æ5{Å5{Ç5{Ä5(F_*(1 **:(ç }É5*:{É5(*_*r(Ë }Ê5}Ë5}Ì5*r{Ê5{Ë5{Ì5(+_*V(f0 }Í5}Î5*R{Í5{Î5(#_*:(1 }Ï5*:{Ï5(3_*V(1 }Ð5}Ñ5*V{Ð5{Ñ5(-_*V(1 }Ò5}Ó5*V{Ò5{Ó5(-_*V(f0 }Ô5}Õ5*R{Ô5{Õ5(#_*V(f0 }Ö5}×5*R{Ö5{×5(#_*(Á **V(1 }Ø5}Ù5*V{Ø5{Ù5(-_*r(1 }Ú5}Û5}Ü5*j{Ú5{Û5{Ü5(<_*r(1 }Ý5}Þ5}ß5*0 ) (§ (¤ {Ý5{Þ5{ß5(=_*0D(Á }à5}á5}â5}ã5}ä5}å5}æ5}ç5*0 ?{à5{á5{â5{ã5{ä5{å5{æ5{ç5(0_þo¾ *V(Á }è5}é5*j{é5{è5s (Þo*V(Á }ê5}ë5*n{ê5{ë5o¾ þo¾ *0D(Á }ì5}í5}î5}ï5}ð5}ñ5}ò5}ó5*0 ?{í5{ì5{î5{ï5{ð5{ñ5{ò5{ó5(1_þo¾ *r(Á }ô5}õ5}ö5*r{ô5{õ5{ö5þ(._*r(1 }÷5}ø5}ù5*0  {< {< (woE?l¬p´tÌ {< {<{ù5{§4 (]{ù5(](ko8€tÍ{<{<{ù5(](mo+S+OtÏ{<{<{ù5(]{ù5(](so+(qo+ r—qps\ z{÷5{ø5{ù5(7_(ao*r( 1 }ú5}û5}ü5*j{ú5{û5{ü5(7_*r(Á }ý5}þ5}ÿ5*r{ý5{þ5{ÿ5þ(._*r( 1 }6}6}6*0 {6{6{6(;_*V(f0 }6}6*R{6{6(#_*V(f0 }6}6*R{6{6(#_*V( 1 }6}6*V{6{6(,_*r(1 } 6} 6} 6*j{ 6{ 6{ 6(<_*V( 1 } 6} 6*R{ 6{ 6(>_*V( 1 }6}6*R{6{6(@_*V(f0 }6}6*R{6{6(#_*:(1 }6*:{6(]*(¥ **:(u0 }6*:{6( ]*:(1 }6*V{6(]+þo/ *:(1 }6*N{6o1 Œo*:(° }6*05 o ‡{6{§4 sYc s[c s]coà† (!‡*:(1 }6*0-O(%( (ö {6(]{6(]s³ *:(1 }6*:{6(]*:(1 }6*B{6þ(d+*:(1 }6*0"(&& ('& {6(]s *:( }6*:{6(]*:(1 }6*0*p(@ (A (B {6(]s¢ *:(1 }6*0-O(%( (ö {6(]{6(]s³ *:(1 }6*:{6(]*:(1 }6*0@ (|( (ú (ù {6(]{6(]{6(]s= *V(f0 } 6}!6*R{ 6{!6(#_*V(1 }"6}#6*R{#6{"6(!]*:(1 }$6*:{$6(I_*:(ç }%6*:{%6(J_*:(1 }&6*b{&6(ûb3*(Ci*:(ç }'6*0„ {'6|¦4 {/ {U;{[;o1 ÞUt u‰ ,Cr0rps (ñ+omo {U;{X;s¤(¤(¥sÁm ÞþoÆm*&(U:(1 }(6*0’<{(6{§4 s`m {þ. ofm {g:{k:o/ ÞTtu‰,>rÁhp(“”(ne(È+( onjs¤(¤(¥s`m Þþofm*57TV(f0 })6}*6*R{)6{*6(#_*(¥ **V()( }+6},6*R{+6{,6(!_*:( }-6*:{-6(]*’(1 }.6}/6}06}16*0{g: {g: {.6{/6sc{/6{h:{n:oc ( _ ( / ( /  sƒcse (Öj{.6s…c{p:(ó +(Új{.6{q:(C_(Ûjs‡c{r:(‹+(Üj{s:(D_(Ýj{16{06{u:o¸ ()_(»+(ßj{.6{t:(E_(Þj*ò}26}36}46}56}66}76}86(1 *0Q{76YE ++-8ú8Í8½8 }76{26}86*{26{g:{u:o¸ {î:¥»o }46}76{46oï 9’{46o }36{36(L_o }66}76{66oï ,0{66o }56}76{56}86*}56+Ã}76{66(¨ +}66}368^ÿÿÿ}76{46(¨ +}46}76}86*0¯e {76YE+8Š{76E ++;+7++++,}76{66(¨ +}76{46(¨ ++}76}86 Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{76E ++++ +++*****"{86*0 {26s‹c*0Ä}96}:6};6}<6}=6}>6}?6}@6 }A6 }B6 }C6 }D6 }E6}F6}G6}H6}I6}J6}K6}L6}M6}N6}O6}P6(1 *0A{O6YE  !'-39?E+H8X8+88e8Ð8$88z8M8=8ã8ü{96(rEr[OU{96tN}:6{:6{Z=};6{:6{\=}<6{;6¥»o }F6}O6{F6oï 9’{F6o }=6{=6(L_o }H6}O6{H6oï ,0{H6o }G6}O6{G6}P6*}G6+Ã}O6{H6(¨ +}H6}=68^ÿÿÿ }O6{F6(¨ +}F6{<6¥Í o1 }I6}O6{I6oï 9×{I6o1 }>6{>6{c=}?6{>6{d=}@6}O6{?6}P6*{@6(M_o }K6}O6{K6oï ,0{K6o }J6}O6{J6}P6*}J6+Ã}O6{K6(¨ +}K6}@6}?6}>68ÿÿÿ }O6{I6(é+}I6}<6};6þN}:688{8u{96tK}A6{A6{U=}B6{B6¥Ï o1 }L6}O6{L6oï 9”{L6o1 }C6{C6(M_o }N6 }O6{N6oï ,1{N6o }M6 }O6{M6}P6*}M6+Â}O6{N6(¨ +}N6}C68\ÿÿÿ }O6{L6(ê+}L6}B6þK}A6+^{96tJ}D6{D6{T={K=}E6 }O6{E6(×^¥»»*}E6þJ}D6 }O6}P6*0Me {O6 YE+8'{O6E  !'*-3+68¸8n+W+S+9+5++8‚+k+g88ˆ}O6{K6(¨ ++ }O6{I6(é++Y}O6{H6(¨ + }O6{F6(¨ ++-}O6{N6(¨ + }O6{L6(ê++ }O6}P6 Þ t   Þ&8¾þÿÿþ,z*A0 0‚{O6E  !$'+'+:+-+(+#+++++++++************"{P6*0<A{96þNþKþJs‘c*0Ì}Q6}R6}S6}T6}U6}V6}W6}X6 }Y6 }Z6 }[6 }\6 }]6}^6}_6}`6}a6}b6}c6}d6}e6}f6}g6}h6}i6(Å *0ÝB{h6YE  !'-39?EK+N88ÿ8}8m8P8#88¿8À8’8‚8)8B{Q6(rE¸ŸA™{Q6tN}R6{R6{Z=}S6{R6{\=}T6{R6{[=}U6{S6(Â^¥oS }_6}h6{_6oï ,0{_6oT }^6}h6{^6}i6*}^6+à }h6{_6(™ +}_6{U6(\^¥oS }a6}h6{a6oï ,0{a6oT }`6}h6{`6}i6*}`6+à }h6{a6(™ +}a6{T6¥Í o1 }b6}h6{b6oï 9—{b6o1 }V6{V6{d=(N_oS }d6}h6{d6oï ,0{d6oT }c6}h6{c6}i6*}c6+Ã}h6{d6(™ +}d6}V68Yÿÿÿ }h6{b6(é+}b6}U6}T6}S6þN}R68Õ{Q6tL}W6{W6{V=}X6}h6{X6{,<}i6*}X6þL}W68}8w{Q6tK}Y6{Y6{U=}Z6{Z6¥Ï o1 }e6 }h6{e6oï 9•{e6o1 }[6{[6(N_oS }g6 }h6{g6oï ,1{g6oT }f6 }h6{f6}i6*}f6+ }h6{g6(™ +}g6}[68[ÿÿÿ }h6{e6(ê+}e6}Z6þK}Y6+^{Q6tJ}\6{\6{T={K=}]6 }h6{]6(Ö^¥*}]6þJ }\6 }h6}i6*0_e {h6 YE+89{h6E !$*036<+?8Æ8x8q+W+S+9+"+8t8‡+o+k8’8}h6{d6(™ + }h6{b6(é++a }h6{a6(™ ++I }h6{_6(™ ++1+. }h6{g6(™ + }h6{e6(ê++ }h6}i6 Þ t   Þ&8¬þÿÿþ,z*A%B 0‹{h6E !$'*+*+?+0+++&+!+++++ ++++*************"{i6*0EB{Q6þNþLþKþJ s—c*:(1 }j6*:{j6(I_*:(ç }k6*:{k6(J_*:(1 }l6*:{l6(I_*r( 1 }m6}n6}o6*0 {m6{n6{o6(;_*:(À }p6*N{p6{,<(J_*r(Û }q6}r6}s6*j{q6{r6{s6(S_*r(Ú }t6}u6}v6*j{t6{u6{v6(R_*V( 1 }w6}x6*V{w6{x6(O_*:(1 }y6*:{y6(Z_*:(1 }z6*0 (§ (¤ {z6([_*:(1 }{6*:{{6(Z_*:(Á }|6*:{|6(Y_*:(1 }}6*0 {< {<{}6(]_(ao*:( 1 }~6*:{~6(]_*:(Á }6*:{6(Y_*:(F }€6*:{€6(__*(S *"(`_*(S *"(`_*(S *"(`_*(ª *"(a_*:(Ó }6*B{6þo  *:( }‚6*0¸{‚6o! sÅc*(á *&(n*:(j }ƒ6*:{ƒ6(l_*:(!1 }„6*B{„6þ(z_*("1 *0{< sÍc*(#1 *.þ(z_*:(1 }…6*:{…6(|_*:( 1 }†6*B{†6þ({_*:($1 }‡6*R{‡6oH (Eo*( *þ*:(%1 }ˆ6*B{ˆ6¤’*:(- }‰6*¦{‰6£’3 rvrps\ z{‰6£’*(Ô *>{<þ(€_*(&1 **þ(€_*( *2s'1 Œð*:((1 })1 *0{)1 (ë+*V( 1 }‹6}Œ6*R{‹6{Œ6(ƒ_*V(1 }6}Ž6*0(T{< {< {6{Ž6(ƒ_(ao*:(Á }6*:{6(Y_*:(@ }6*V{6s (Þo*:(*1 }‘6*0 Š{)< {+< {*< {‘6£h (|+,_{‘6£h o+1 (Ì  (Í (Ÿ]sëc(a+(i síc(Ã](£+(›o**Šsòc€“6sòc€”6sòc€•6*:( }’6*~“6**(ùcþ*~”6**(ùcþ*~•6**(ùcþ*{’6*Zr.8ps,1 (ì+o-1 *01.þ, þ,{’6 {’6 3*Y**þ,**:¥³oûc*0B¥³ þ,%¥³þ,{’6 {’6 3*Y**¥³þ,**0.þ,% (ùcE * * **6(n oþc*0.þ,u³ ,{’6 {’6 þ**þþ*0*.þ,þ,{’6 {’6 þ**þþ*0bu³ ,od**V(Ÿ }™6}š6*(Ÿ *0 (  *0 (¡ *{™6*{š6*0VÍþ,M ¹y7žtµ(d(¿+bcXXX ¹y7žtµ(d , ( +bcXXX **6(n o d*0c*þ,Tu ,H(í+-*tµ(dtµ(d(ñ ,tµ(dtµ(dþ(À+***þþ*0^þ,Oþ,G(í+-*tµ(dtµ(d(ñ ,tµ(dtµ(dþ(Â+***þþ*0*u , þo d**(Á **(Á **(Á **r(Á }›6}œ6}6*j{œ6{6{›6(½]*(Á **(Á **(Á **(Á **:(Á }ž6*0 *(L{ž6sû£ (¤(¥*²(N }Ÿ6} 6}¡6}¢6}£6*0 ({Ÿ6{¡6{ 6{¢6{£6(_*²(.1 }¤6}¥6}¦6}§6}¨6*0 = {¦6{¨6{§6(Î] {§6sd {¤6{¥6s d*²(Á }©6}ª6}«6}¬6}­6*0 a{¬6{t; ofm {g:{l:(M{«6sû£ (¤(¥{©6{¬6{ª6{­6{«6(Ù]*²(N }®6}¯6}°6}±6}²6*0 ({®6{°6{¯6{±6{²6(_*Ò(.1 }³6}´6}µ6}¶6}·6}¸6*0 V {µ6{¸6{¶6{·6(Ø] {µ6{¶6{·6{¸6s$d {³6{´6s&d*ò(Á }¹6}º6}»6}¼6}½6}¾6}¿6*0 {¿6{Ô:-{¹6{B8{¼6(iþ+,G{¿6{ß:{I{¼6ofm {g:{l:(N{½6sû£ (¤(¥+{¹6{º6{¾6{»6{½6þ(Ž_*Ò(/1 }À6}Á6}Â6}Ã6}Ä6}Å6*0[–on {À6{Á6{Â6{Ã6{Å6(Ï]{À6{Â6{Ã6{Ä6{Å6s*d(_*:(¦ }Æ6*b{Æ6{ß:{I(n*{01 *{11 *{21 *{31 *{41 *{51 *{61 *ò( }01 }11 }21 }31 }41 }51 }61 *(71 **(81 **(91 **(:1 **(;1 **(<1 **(=1 **0L(>1 }?1 }@1 }A1 }B1 }C1 }D1 }E1 }F1  }G1 *0?{?1 {@1 {A1 {B1 {C1 {D1 {E1 {F1 {G1 (î+*:(H1 }I1 *F{I1 þ(ï+*:(J1 }K1 *Z{K1 (¤ þ(ð+*0L(M1 }N1 }O1 }P1 }Q1 }R1 }S1 }T1 }U1  }V1 *0@{N1 {O1 {P1 {Q1 {R1 {S1 {T1 {U1 {V1 (ñ+*0L(>1 }W1 }X1 }Y1 }Z1 }[1 }\1 }]1 }^1  }_1 *0?{W1 {X1 {Y1 {Z1 {[1 {\1 {]1 {^1 {_1 (î+*0L(;1 }`1 }a1 }b1 }c1 }d1 }e1 }f1 }g1  }h1 *0A{`1 {a1 {b1 {c1 {d1 {e1 {f1 {g1 {h1 þ(ò+*0L(Ÿ }i1 }j1 }k1 }l1 }m1 }n1 }o1 }p1  }q1 *0?{i1 {j1 {k1 {l1 {m1 {n1 {o1 {p1 {q1 (ó+*0L(>1 }r1 }s1 }t1 }u1 }v1 }w1 }x1 }y1  }z1 *0?{r1 {s1 {t1 {u1 {v1 {w1 {x1 {y1 {z1 (î+*0L({1 }|1 }}1 }~1 }1 }€1 }1 }‚1 }ƒ1  }„1 *0F{|1 {}1 {~1 {1 {€1 {1 {‚1 {ƒ1 {„1 {<þ(ò+*0\(…1 }†1 }‡1 }ˆ1 }‰1 }Š1 }‹1 }Œ1 }1  }Ž1  }1  }1 *0b¬{†1 {‡1 (ô+ -C{ˆ1 {‰1 {Š1 {‹1 {Œ1 {1 {Ž1 {1 {1 {*<(î+*(” *0\(’1 }“1 }”1 }•1 }–1 }—1 }˜1 }™1 }š1  }›1  }œ1  }1 *0b¬{“1 {”1 (õ+ -C{•1 {–1 {—1 {˜1 {™1 {š1 {›1 {œ1 {1 {==(î+*(” *0L(ž1 }Ÿ1 } 1 }¡1 }¢1 }£1 }¤1 }¥1 }¦1  }§1 *0D{Ÿ1 { 1 {¡1 {¢1 {£1 {¤1 {¥1 {¦1 {§1 {d=(ó+*0L(¨1 }©1 }ª1 }«1 }¬1 }­1 }®1 }¯1 }°1  }±1 *0KÔ{g= {©1 {ª1 {«1 {¬1 {­1 {®1 {¯1 {°1 {±1 {L=(ó+*:(²1 }³1 *Z{³1 {j=þ(ö+*:(h }87*:{87(r_*:(D }97*:{97(¦]*V(% }:7};7*Z{:7£’{;7þ*’(´1 }<7}=7}>7}?7*0 l^{<7{?7(»_,O(Ÿ]{>7£m{=7£s(|i(§] (ò (åŠ(¢o( (ó sË *sË *(µ1 *&s¶1 *(·1 *0(¸1 (¹1 on*V(º1 }@7}A7*0N(¸1 (¹1 {A7£’. rsp{@7s¤ (¤(+&+{A7¤’*:(»1 }B7*:{B7(ñ]*(¼1 *"{w;*:(@ }C7*V{C7s (Þo*:(h }D7*:{D7(r_*:(½1 }E7*J{E7{@8{Ì^*(¾1 *"(´*(¾1 *"(´*r(Ÿ% }F7}G7}H7*j{H7{F7{G7(Î]*r(Á }I7}J7}K7*r{J7{I7{K7þ(Â]*:(° }L7*0 s"{L7{U;{X;{L7omrfÁpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( ( (|i(§]*(¿1 *&(%`*:(@ }M7*V{M7s (Þo*r(À1 }N7}O7}P7*0 ÿ(f (g {O7("] {6<,(¶ {I8¦r—àp{P7Œ’,4u¼,(x ¥|o¡ +  o& +rR9pŒ’,4u¼,(x ¥|o¡ +  o& +rR9p( ( (˜– {N7 (|i(§](ò *V(Á1 }Q7}R7*r{Q7{R7sˆdþ(÷+*(* *"(i*(Œ *"(i*V(E }S7}T7*R{S7{T7(µ_*V(}0 }U7}V7*0:ï(ù (ø {V7(«]{U7(Þh(l_(nsY *:(h }W7*:{W7(û]*(Â1 **sÃ1 *:(Ä1 }X7*0 Í(f (g {6< , (¶ {I*r—àp{X7Œ’,4u¼,(x ¥|o¡ +o& +rR9pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( ( (˜–*(Å1 *Bs˜dþ(ø+*(Æ1 *:(Ÿ](¥*(¤ *&(¥*(Ç1 *"(Ÿ]*:(È1 }Y7*B{Y7(,`*’(É1 }Z7}[7}\7}]7*0 '{Z7{\7{]7{[7(Î](,`*r(Á }^7}_7}`7*j{^7{`7{_7(½]*(Á **(Á **r(Á }a7}b7}c7*j{a7{c7{b7(½]*V(° }d7}e7*0 ž"{d7r—àp{e7Œ’ ,+u¼ , (x ¥|o¡ + o& +rR9pŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( ( (|i(§]*Ò(Ê1 }f7}g7}h7}i7}j7}k7*0ë(0 (0 (Ë1 {k7(³ ,){k7(³ (³ -{j7(¤ (¥ +{f7{j7(W] {g7{i7s®d (Ù+(Ú+(Š (‹ {f7 {k7(-`{f7{k7(l_{U;{Z;(n {j7(n {g7rÍäp{i7Œ’  ,4 u¼  , (x ¥|o¡ + o& +rR9p(  (|i(§]  (ó  (ò {i7{h7Y3<{g7{f7 sY (ú (k (l {g7(x_(«]+G{g7{g7{f7 sY (ú (k (l {g7(x_(¿](«] s0 *r(Ì1 }l7}m7}n7*0 1(Í1 (Î1 (Ï1 {l7{m7{n7s°d*(} *"(  *:(Ð1 }o7*0H"{o7Œ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( *:(Ñ1 }p7*0 {p7(|i(§]*r(Á }q7}r7}s7*0 {r7{s7{q7(r_(«]*(Ò1 **(Ò1 **²(Ó1 }t7}u7}v7}w7}x7*0 N{x7(³ ,'{x7 (³ (³ -{w7(¤ (¥ +{t7{w7(W] o oµ 3+<(] ,/ (] (] - (^ s¶d(ù++ ++ö -e{u7s¸d(ú+(Ú+(Š (‹ {t7{x7(-` {t7{u7sºd  (û+ sÔ1 *  (â  {t7{u7{v7 {x7(/`  (ñ   (ð  (ü+  sÔ1 *r(Õ1 }y7}z7}{7*0 0(Í1 (Î1 (Ï1 {y7{z7{{7sÀd*(Ö1 *.þo¾ *(Ö1 *.þo¾ *(Œ *"(i*(„ *"(7`*(„ *.(7`þ*(ç *0 .{U;{X;om{U;{Z;(|i(§](ò *(à *6{U;{Z;*:(D }|7*:{|7(¦]*’(×1 }}7}~7}7}€7*0 t{U;{Z; {}7{~7om{~7{7{€7(6`(4` {}7(· ( (_(ž {U;(-m(çŠ(¢o*:(@ }7*V{7s (Þo*:({ }‚7*:{‚7(åh*:({ }ƒ7*:{ƒ7(åh*( *"(ž–*r(}$ }„7}…7}†7*r{„7{…7{†7þ(>`*r(}$ }‡7}ˆ7}‰7*r{‡7{ˆ7{‰7þ(>`*(Ý *"(Þ *(Ü *"(f *(ª *J{Ì:{Æ:Žiþ*(ª *V{Ì:{Æ:Žiþþ*(ª *J{Ì:{Æ:Žiþ*(ª *V{Ì:{Æ:Žiþþ*:(S }Š7*²{Š7{Š7{ 9{Þ:(Ž^(– (5+þ*:(Ø }‹7*N{‹7{×:("]*V(S }Œ7}7*f{Œ7{7oØ1 (W`*V(L }Ž7}7*º{Ž7{B8{Ž7{E8{7{?8{Á;(i*{7*{‘7*{’7*r( }7}‘7}’7*(Á **:(Á }“7*B{“7þ(u`*:(1 }”7*:{”7(`*:(1 }•7*0 (§ (¤ {•7(‚`*:(F }–7*:{–7(t`*0L(Á }—7}˜7}™7}š7}›7}œ7}7}ž7 }Ÿ7*0 LÉ {™7{š7{›7{œ7{7{ž7{Ÿ7(y` {˜7{—7(w`þo¾ *’(Á } 7}¡7}¢7}£7*0.É {¢7{£7(z` {¡7{ 7(w`þo¾ *0L(Á }¤7}¥7}¦7}§7}¨7}©7}ª7}«7 }¬7*0 LÉ {¥7{§7{¨7{©7{ª7{«7{¬7({` {¦7{¤7(w`þo¾ *:(Á }­7*B{­7þ(u`*:(Á }®7*B{®7þ(u`*:(1 }¯7*0 {< {<{¯7(~`(ao*:( 1 }°7*:{°7(~`*:(Ù1 }±7*:{±7(`*:(1 }²7*:{²7(`*:(F }³7*:{³7(t`*:(Ú }´7*:{´7(„`*:(Û }µ7*:{µ7(…`*:(Ú1 }¶7*:{¶7(ƒ`*:(Û1 }·7*0P {·7(æ] -'o‡j,*r'sponjs¤ (¤(ý+* (¸ s`m ( ]*:(Ü1 }¸7*0x!{¸7(ç] -"rªsp{U;{X;s¤ (¤(ý+* (ˆ {¥4{¦4{/ {U;{[; oD/ s/ {§4sÐ`*V(f0 }¹7}º7*R{¹7{º7(#_*:( }»7*:{»7(]*V(1 }¼7}½7*R{¼7{½7(Š`*V(ç }¾7}¿7*R{¾7{¿7(‹`*(¥ **V(Ý1 }À7}Á7*R{À7{Á7(‰`*V(1 }Â7}Ã7*R{Â7{Ã7('_*V(Ý1 }Ä7}Å7*R{Ä7{Å7(‰`*(‹ *"(`*({ *fs2e{;{;þ(„+*V(? }Æ7}Ç7*0 5p(@ (A (B (a{Æ7(v]{Ç7þ(}]*:(8 }È7*0 (a{È7(v]þ(}]*(Ü *"(f *V(¬ }É7}Ê7*0{"oÆm {U;{`; ,b (³ {É7oÆm(e^o÷ 3*{É7s8es:e(þ+(Ã+{Ê7(w ++, {i;{?L***:(Þ1 }Ë7*>{Ë7(”`*:(ß1 }Ì7*F{Ì7þ(•`*V(Ô }Í7}Î7*02{< {< (woþ,{Í7{Î7þ(•`**(à1 *V{U;{[;þoû *V(„ }Ï7}Ð7*0-+{)< {*< {Ï7sDe{Ð7(ÿ+(”`*:(Á }Ñ7*:{Ñ7(™`*~-8*0Mõ Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p Œm(û*0($sá1 {â1 oã1 (h”(+þ(+*0d(žqE%7r*tpŒm(û*rtu {€; {; rntpŒm(û(]e (Re(y”(v”(Qe*ty{ˆ;{‡;{t;ofmo…j(Oe(Pe*tv{ƒ;{‚;+Ätw  {„;r´9pŒm(ûse(2+(„”(Qe*tx  {†;  {…;  (RerìDpŒm(û(v” (Re(y”(Qe*tz  {‰;(Te*rrtpŒm(û*6,(…”**0Ó({;|û:(j(m‰3rºCp+rêp(m^( ol( Œm(û {;{ü:  {â7oÑ( ,e(• {á7o¯ ,rÈ:pŒm(û(Ue(v”*rRCpŒm(û(Ue(v”(v”(Se**2þ(Re*š(Terx8pŒm(û(v”(v”*0 …)(@lE pD;¨ÚÀ]vùÁtB {; (TerRCpŒm(û(Re(y”(v”*(Terx8pŒm(ûrWpŒm(û(y”(v”*tC {; r´öpŒm(û(Terx8pŒm(û(Re(v”(v”(v”*tJ {; rÉûpŒm(û(¤ (¥ (Pe(Ve*tM{#; {";r0DpŒm(û(¤ (¥ (¥ (Pe(Ve*ràBpŒm(û(Ve*rDpŒm(û(Ve*rDpŒm(û(Ve*rõ@pŒm(û(Ve*rŠDpŒm(û(Ve*rXDpŒm(û(Ve*tH{;rû³pŒm(ûse(2+(„”(…”(Ve*rÈDpŒm(û(Te(v”(…”(Ve*Þ(Ø( -(h”*røCpŒm(ûs‘e(+(‡”(y”*:(f(Te*0m*(¤ (¥ (( sä1 (å1 s“e(f(+(f {ã7(Ø( - þ(Re*(Re{ã7(Xe(y”(…”*0h*(¤ (¥ (( sä1 (å1 s•e(f(+(f {ã7(Ø( - þ(Re*(Re{ã7(Xe(y”*0u+(i s—e{;{;(i+ (¤ (¥ s™e(f (+(f {ã7(Ø( - þ(Re*(Re{ã7(Xe(y”*0*æs›e(“+ r:pŒm(û(„”(Ne*0H({ -(h”*r†tpŒm(û(+(”râFpŒm(û(v”(v”*00,oÆmom Œm(û oÆm {U;{[; *0w-{Â; r€GpŒm(ûu™,t™ {¾;(_e+%t˜ {½; oгŒm(ûr†GpŒm(û(v”(v”*0 r.{2< oÁo rŒtpŒm(ûo‰! (KerštpŒm(ûse(+(”râFpŒm(û(v”(v”(v”(v”*0O/(–omo Œm(û {U;{[; {U;{a; sŸe (R+(‡”(x”*0£(be{U;|\;(¹i(½h,r tpŒm(û+(h”{U;|\;(ºi(€iþ,r°tpŒm(û+(h”rx8pŒm(û(v”(v”(v”{U;{Z;([e(x”*NrÂtpŒm(û*0frÒtpŒm(ûom Œm(û(v”rötpŒm(ûs¡e{g;(+(v”(( (ž( (ž( (‡”*0/0(be {U;|\;(ºi(€iþ,r9@pŒm(û(w”+rx8pŒm(û{U;{Z;([e(v”(( (ž( {U;{`; ,3 (³ rntpŒm(û (ee(v”(( (ž( +(( {U;{b;,7(E rÈ:pŒm(û(ae(v”(( (ž( +(( (æ1 (ç1 (ç1 (ç1 ¥í (+(‡”(y”*0{u; Œm(û*0{w; Œm(û*0Ì(ønE%‰ñYÁ$Œô\Ä,†×@8¥t¡ {à;, rªp8‘r´p8†t¢ {á; Œ÷,4u¼,(x ¥|o¡ +o& +rR9pr¢Bp( 8"t£{â;  Œ,4u¼,(x ¥|o¡ +o& +rR9pr¦Bp( 8ºt¤  {ã;  Œø,4u¼,(x ¥|o¡ +o& +rR9pr¬Bp( 8Rt¥  {ä;  Œ€,4u¼,(x ¥|o¡ +o& +rR9pr°Bp( 8êt¦{å;Œ’,:u¼,(x ¥|o¡ 8£o& 8’rR9p8‡t§{æ;Œô,4u¼,(x ¥|o¡ +o& +rR9pr¶Bp( 8t¨{ç;ŒÁ,4u¼,(x ¥|o¡ +o& +rR9prºBp( 8·t©{è;Œõ,4u¼,(x ¥|o¡ +o& +rR9pr¾Bp( 8Otª{é;ŒÁ,4u¼,(x ¥|o¡ +o& +rR9pr¡cp( 8çt«{ê;Œõ,4u¼,(x ¥|o¡ +o& +rR9prÄBp( 8t¬{ë;rÊBp(x ¥|(Ì( s£e(ä ,rÒBp( +rØBp( 8%t­{ì;rÊBp(x ¥|(Í( s¥e(ä ,rÒBp( 8Ü8Ôt®{í;rêpþo& ( rêp( 8œt¯r*8p{î;( r*8p( 8srbBp+kt°  {ï;!!Œñ,4u¼,(x ¥|o¡ +o& +rR9prÜBp( +r´öp Œm(û*"s¹e*05o!( 1rû³pŒm(û+(h” (jeþ(3+*0i1{ß:{I Œm(û {Ô:,r9@pŒm(û(y”+ rx8pŒm(û(v”{×:([e(y”*0n2( kE " ÞïrWps\ zs»eo”j(B+(‡”*t {˜: {Ã:(ck3r upŒm(û*{Ã:(ckE #r:ups\ zrÕ@p+rá@p+rõ@p+rÉûp {Ã:{g:{s:{Š:(ckEC(( +`,ô(• r;pŒm(û([e(v”(( (ž( +%s½es¿e{g:{s:{‰:(ô +(@+ sÁesÃeo¶j( +(A+sÅeo”j(B+  (>+(>+ {g:{i:(Ói3  (Ÿ( þ+,(h”*Œm(û (‡”(~”r!@pŒm(ûþ(|”*o›j(ke(‡”*rApŒm(û*t  {Ÿ:þ([e*t  {:  {^ Œm(û*0h3o†j, þ(|e*{g:{i:(Ói3rŠp+rBup Œm(ûomj Œm(ûo~j(]e(v”(v” {g:{p: s§e (R+(‡”(y” s©es«es­eo¶j( +( +( +{g:{q:( k35t{˜:  {Ã:(ckþ,{˜: (¢( +{g:{s:{‰:s¯e(ô + (Æ þ,  (è1 þ+,(h”+Ws±e (@+ s³e(A+ r)@pŒm(û  (>+(‡”(~”r!@pŒm(û(|”{g:{q:( kE 222(me(|” rCpŒm(û(v” þ(~”*{g:{r:,8(• rCpŒm(û(v”([e(|”(y”*þ(~”*07Í {,< {-< (ferCpŒm(û(pe(v”(y”*&(se*0!æsÇesÉe(+ (‡”þ(|”*òrñÞpŒm(û(oerpŒm(û(v”(v”þ(|”*0 a5sËe (îoEÝN4Xiþ l"¤ÂtÞ{I< (ie8ƒtß {L< {M<oÆm(be(ÄqEx<ZrdupŒm(û(v”8 r€upŒm(û(v”8r–upŒm(û(v”8är®upŒm(û(v”8Æ8¾tà{P<{O< {Q<  (®q3rÂup+rÜup  (se Œm(û(v”(se(|”oé1 8Mtá  {X< {V<  {W<sÍe(.+(ƒ” ,` (} r(pŒm(ûrðupŒm(û(fe(v”(y”rS@pŒm(û(v”(v”+/r(pŒm(ûrS@pŒm(û(v”(v”(se(w”oé1 8gtâ{]<{\<rüupŒm(ûsÏe(“+(ƒ”rS@pŒm(û(v”(v”(se(w”oé1 8÷të{ˆ<{‡<rvpŒm(ûsÑe(“+(ƒ”rS@pŒm(û(v”(v”(se(w”oé1 8‡tã{b<{`<{c<(se(ueoé1 8Ctä{f<{e<(se(qeoé1 8tå{j<{i<(se(reoé1 8Ùtì{Š<rvpŒm(û( (se(y”oé1 8tç{w<{v<rÞFpŒm(û(}esÓe(p+(+(‡”râFpŒm(û(v”(|”(v”8/té  {~<(ÒpED[Ofú¥ú=ê5÷ê¬`lÏøÕp }Â á ¦D §  {€< {<r"vpŒm(ûsÕe(++(”(…”(v”8V {~<tþ!!{À<" {€<"{u;  Œm(ûs×e(++(ƒ”(w”oé1 8ý {~<tÿ##{Á<$ {€<$ofm%%{g:{l:  Œm(ûsÙe(++(”(…”(v”8— {€<sÛe(++&r:pŒm(û&(„”(…”8] {~<t' {€<'{Í<$'{Ì<($ofmo•j)sÝe*((hq3r:vpŒm(û+(h”rÙøpŒm(û*)(*+(‚”rpŒm(û(v”(v”(v”8° {~<t+ {€<(Ê 9 {€<(Ê (Ê -R(Ë +{Î<,,{w;  Œm(ûr×NpŒm(û(se(y”(v”8((Ê --(Ê (Ê -~-(Ë (Ë  +{Î<, (serS@pŒm(û(y”,{w;  Œm(ûr×NpŒm(û(se(y”(v”(v”8“ {€< {<8ôüÿÿ {€< {<8Ýüÿÿ {~<t. {€<(Ê -&.{Ï<,,{w;  Œm(û8# {€<(Ê (Ê -R(Ë .{Ï<,(serFvpŒm(û,{w;  Œm(û(v”(v”8º {€< {<8üÿÿ {~<t / {€<(Ê -</{Ð<,rýpŒm(û,{w;  Œm(û(v”8K {€<(Ê (Ê -m(Ë /{Ð<,rýpŒm(û(serLvpŒm(û,{w;  Œm(û(v”(v”(…”(v”8Ç {€< {<8(ûÿÿ {~<t 0 {€<(Ê 9Œ {€<(Ê (Ê -^(Ë 0{Ñ<$rÈ:p$ofm%%{g:{l:rRvp( (   Œm(û(se(v”8 {€< {<8}úÿÿ {€< {<8fúÿÿ {~<t 1 {€<(Ê 9~ {€<(Ê (Ê -P(Ë 1{Ò<"rÈ:p"{u;r\vp( (   Œm(û(se(v”8h {€< {<8Éùÿÿ {€< {<8²ùÿÿ {~<t 2 {€<(Ê 9Ö {€<(Ê (Ê :¥(Ë 2{Ô<32{Ó<"rÈ:p"{u;rS@p3Œ’44,44u¼55,566(x ¥|o¡ +477o& +rR9p( ( (   Œm(û(se(y”8\ {€< {<8½øÿÿ {€< {<8¦øÿÿ {~<t 8 {€<(Ê 93 {€<(Ê (Ê 9(Ê --(Ê (Ê :Ñ-(Ë (Ë  8{Ö<38{Õ<" (serÈ:p"{u;rS@p3Œ’44,44u¼55,566(x ¥|o¡ +477o& +rR9p( ( (   Œm(û(y”rÑNpŒm(û(v”(se(y”8  {€< {<8k÷ÿÿ {€< {<8T÷ÿÿ {€< {<8=÷ÿÿ {~<t9 {€<(Ê 9· {€<(Ê (Ê :†(Ë 9{Û<3rÈ:p3Œ’44,44u¼55,566(x ¥|o¡ +477o& +rR9p(   Œm(û(se(y”8  {€< {<8göÿÿ {€< {<8Pöÿÿ {<(³ 9÷ {<(³ (³ 9Æ(³ ::(³ (³ :• {€<(Ê ,p {€<(Ê (Ê -B(Ë (´ ;(serRCpŒm(û;([e(v”(y”8,  {€< {<8õÿÿ {€< {<8võÿÿ {€< {<8_õÿÿ {€< {<8Hõÿÿ {€< {<81õÿÿ {<(³ ,j {<(³ (³ -< {€<(Ê -rhvpŒm(û8o  {€< {<8Ðôÿÿ {€< {<8¹ôÿÿ {€< {<8¢ôÿÿ {~<t<<{Ý< {<: {€<<{Ü<=r3Eps+, (È+??sße>>sáe=( +(ƒ”rzvpŒm(ûr€vpŒm(û(v”(v”:(uerx8pŒm(û(y”sãe(2+(ƒ”(v”oé1 8V  {~<t@@{â<@{á<A {€<A(Me(_esåe(++(”(…”(y”(v”oé1 8ó  {~<tB {<B{ë<:B{ì<CB{ê<D {€<B{å<EB{ç<B{í<FB{é<GB{ã<HB{ä<IB{è<JB{æ<KDoг r†vpŒm(ûr”vpŒm(ûDoˆ³oü²LLŒm(û(y”rS@pŒm(û Œm(û(v”(v”r¢vpŒm(ûsçe:( +(y”r°vpŒm(ûséeC( +(y”r¾vpŒm(ûsëe( +(y”rÌvpŒm(ûsíe()+(y”(( (ž( (ž( (ž( (ž( (ž( (‡”(v”oé1 8? {<(³ ,z {<(³ (³ -L {€<ró?pŒm(ûsïe(++(”rù?pŒm(û(v”(v”8Î {€< {<8/ñÿÿ {€< {<8ñÿÿ {<(³ :ö {€<(Ê 9Î {€<(Ê (Ê 9(Ê --(Ê (Ê -o-(Ë (Ë  rÚvpŒm(û (ser¨PpŒm(û(serpŒm(û(v”(v”(v”(v”8Þ {€< {<8?ðÿÿ {€< {<8(ðÿÿ {€< {<8ðÿÿ {€< {<8úïÿÿ {<(³ :e {€<(Ê 9= {€<(Ê (Ê 9 (Ê --(Ê (Ê 9Û-(Ê MM(Ê (Ê :ªM(Ë -(Ë  (Ë NrTQpŒm(ûN(serævpŒm(û (ser¨PpŒm(û(v”(v”(v”(se(( (ž( (ž( (‡”rìvpŒm(û(v”(v”8h {€< {<8Éîÿÿ {€< {<8²îÿÿ {€< {<8›îÿÿ {€< {<8„îÿÿ {€< {<8mîÿÿ {<(³ 90 {<(³ (³ : {€<(Ê 9Ý {€<(Ê (Ê 9¯(Ê --(Ê (Ê -o-(Ë (Ë  rpQpŒm(û (ser)@pŒm(û(serpŒm(û(v”(v”(v”(v”8 {<: {€<MrövpŒm(û8ð {< {€<M:+Õ {< {€<M:+Á {< {€<M:+­ {< {€<M:+™ {<(³ 90 {<(³ (³ : {€<(Ê 9Ý {€<(Ê (Ê 9¯(Ê --(Ê (Ê -o-(Ë (Ë  rpQpŒm(û (serwpŒm(û(serpŒm(û(v”(v”(v”(v”8Ä {<: {€<Mr&wpŒm(û8› {< {€<M:+Õ {< {€<M:+Á {< {€<M:+­ {< {€<M:+™rJwpŒm(û84rZwpŒm(û8 {< {€<rlwpŒm(û8ô {< {€<rˆwpŒm(û8Ë {< {€<r¢wpŒm(û8¢ {< {€<rÈwpŒm(û8ytê{‚<rîwpŒm(û(serôwpŒm(û(v”(v”82tæOO{n<;O{q<PO{r<QO{p<O{o< O{m<RrúwpŒm(û;([e(sesñe ( +sóeP( +(‡”sõeQ( +(‡”(( (ž( (ž( (ž( (ž( (ž( (‡”(v”+{tèSS{|<S{{< S{z<TrxpŒm(û(se(}”rû³pŒm(û (ser xpŒm(û(y”(v”(~” (Je(• ,hrÙøpŒm(û(Ÿ]UU()¥  Œm(ûrx8pŒm(û(v”(w”rpŒm(û(v”(v”**06{j= s÷e(+(‡”*0@sùe(+(v” rJ pŒm(û(y”sûe(++(ƒ”(y”*04Ô{g= rxpŒm(û(we(~”(( (ž( (‡”*09è {K= {L= (yerx8pŒm(û({e(}”þ(}”*ªrDxpŒm(ûsýe(0+(‡”þ(~”*0×7(rE¡ŠXttN {Z= {\= {[= sÿe(E+ (h”(qe(( (ž( sf(/+(>+(>+(‡”*tL{V=(h”þ(re*tM{X=(se*tK{U=þ(xe*tJ{T=þ(we*0j8{d= {c= o‡j,r£>p+rqp Œm(ûo|j Œm(û {g:{k: (v”(yeþ(~”*Úsf{ì:(+sf{î:(+(( (ž( (ž( (‡”*0Š9rqpŒm(ûo|j Œm(û {g:{k: rx8pŒm(û(v”(v” r!@pŒm(û {g:{u:o¸ ({e(~”þ(|”*0}:  uÄ-b uÃ:ÑtÅ { < { < rñÞpŒm(û(oerpŒm(û(v”(v”(}eþ(|”*tÄ {< {<r\xpŒm(ûrµãpŒm(û(Kesf(++r:pŒm(û(„”(…”(v”(v”(v”*tÃ{<{< {< rlxpŒm(û(se(y”s f (+(‡” ,+   (© rzxpŒm(û(}e(y”+(h”(|”þ(~”*07T{< {< (er†xpŒm(û(v”(}e(y”*0X;(woEQ•ÄÖtÌ {< {< rŒxpŒm(û{u;  Œm(ûs f(+(v”(v”*tÍ{<{<r’xpŒm(û(Ke([e(v”(v”*tÎ{<rŒxpŒm(û(ie(v”*r xpŒm(û*tÏ  {<r®xpŒm(û([e(v”*tÐ  {< r¼xpŒm(û (se(v”*0v<{*< {)< rµãpŒm(û(Ke(e r:pŒm(û(„”(…”rx8pŒm(û(se(y”(v”(v”(v”*>s fþ(.+*00?{<= {;= {9={?= {== rÈxpŒm(ûŒm(û(y”rCpŒm(û(v”ræxpŒm(ûsf(“+r:pŒm(û(„”(Ne(y”rS@pŒm(û(v”(x”røxpŒm(ûsfsfsf(+r:pŒm(û(„”(…”(y”rS@pŒm(û(v”(y” (se(y”*zr)@pŒm(û(‚e(v”*Îr ypŒm(û([esf( +(ž( (‡”(v”*R(“”([eþ(È+*V(“”(seþ(È+*NrWpŒm(û*"(]e*:(ê1 }ë1 *Z{ë1 oz þ(|”*:(©( }Ó7*F{Ó7þ(Re*:(©( }Ô7*F{Ô7þ(Re*:(©( }Õ7*F{Õ7þ(Re*:(ì1 }Ö7*0ó(ë( (ì( {Ö7(We*(í1 *&(f*(í1 *&(f*:() }×7*:{×7sŽ( *(í1 *&(f*(È **þ(\e*(î1 *"(Ke*(é( *"(`e*(ï1 *NrÂtpŒm(û*(Ñ *F(æ( ,*-þ*(Ñ *F(æ( ,*-þ*(é( *"(`e*(¬ *0&aoÆm {U;{`;(Ð+{g;(Ö þ*(¬ *BoÆmoèlþ*(¬ *BoÆmomþ*(? *0p(@ (A (B þ*(»( *03p(@ (A (B rá@pŒm(û([e(y”*(¼( *6oÆm(fe*(Ø *"{×:*(©( **þ([e*:(ª( }Ø7*0 £{Ñ:{I(¢– Œm(û sµeok(G+ (³ - {Ø7(v”*{Ø7r3@pŒm(û(v”(v”r´9pŒm(ûs·e(2+(„”(y”*(½( *z(ler¸9pŒm(û(v”*(»( *03p(@ (A (B r;pŒm(û([e(v”*(? *0p(@ (A (B þ*(¼( *6oÆm(fe*(¬ *6oÆmom*(½( *0F{Ø:,rI@pŒm(û+(h”rW@pŒm(û(le(v”(v”*(ð1 *0 4rypŒm(û(oerpŒm(û(v”(v”*(ð1 *0 4r+ApŒm(û(oerpŒm(û(v”(v”*:(þ( }Ù7*J{Ù7,(…”**(š( *"(fe*(È *:(f(Te*(È *:(f(Te*(ñ1 *&(€e*(”( *&(se*(”( *&(se*(”( *&(se*(”( *&(se*(•( *0={ß:{I Œm(ûrCpŒm(û(v”(se(y”*:( }Ú7*B{Ú7þo‚ *:(ò1 }Û7*0{Û7o‚ Œm(û*(©( **þ(Ze*(”( *&(se*(©( **þ([e*(©( **þ([e*(©( **þ([e*(”( *&(se*(”( *&(se*(š( *"(fe*(ó1 *"(ƒe*(ô1 *0 (§ (¤ („e*(õ1 *"(ve*(©( **þ([e*(”( *&(se*(ö1 **þ(ye*(¿( **þ(ne*(›( **þ(ze*(š( *"(ce*(¿( **þ(ne*(”( *&(se*(÷1 *"(~e*(©( **þ([e*(š( *"(be*(È *:(f(Te*(š( *"(fe*:(ø1 }Ü7*B{Ü7þ(.+*:(ù1 }Ý7*0+æ{Ý7oú1 r:pŒm(û(„”(…”*(ó1 *"(‚e*0Ý@(i (+ ($nEQo3 ¢tu {;+°tv sü1  {ƒ;þ(+*tysý1 {ˆ;þ(+*twsþ1 {„;þ(+*tx{†;{…;(+8'ÿÿÿ**0&oÿ1 ,o2 X o2 *o2 *:s&f(+*~+8*~,8*0œB,s,f(++(z (/^( (‘+ (:^s.f(+(2^(D^{m= s0fo2  s2f(+(2 (2 s4f(+ (/^(+s+f*fs6f(f(+(f*:(2 }2 *>{2 (+*:(2 }2 *>{2 (+*:(2 }2 *>{2 (+*(í1 *0NC($n3Ctz {‰; {;|û:(j (ái  (n oòi,{‰; (+**{á7*{â7*{ã7*r( }á7}â7}ã7*( 2 *:3(Ù# **( 2 *"(ì( *:({ }ä7*F{ä7o¯ þ*V(ê( }å7}æ7*0Pó(ë( (ì( {å7, (@lþ+,{æ7o¯ +,{;{;o 2 þ**( 2 *08¾ (ì( (@l3(ì( tB (ë( {;sß' *ryps\ z(í1 *&(f*0 bM{;|û:(j{;|û:(j{;{ù:{I sY‰{;|û:(j(w‰(Ži( (2i*0;DsHf(+ ((] (@ (™+ sJf(š+ s¿' *îo l,{;{ú:þ+,{;{ù:{IrWp(ñ **0 (\ þ(?f*b(u! þ(?f*0 ((+, þo 2 *þ(;f*0-F(:f9ð{;|û:(j(Ói3Xus2 +Xas2 (2 (2 (2 (2 (2  /iXÑs +]s  YXŒ’,4u¼,  (x ¥|o¡ +  o& +rR9p( sLfþ(=f*{;{ù:{IsPfþ(=f*0 ^G(¨ ,L (¨ (· o2 ,þ(>f*{;{ù:{Iþ(;f*þ(+*0H  ([ þ(?f*0kI(¨ ,Q (· (¨ (:f-sTf(\+þ+,(u! +¸(u! +§(f +(f +s  *0¯KsRf(€ ( + (f + (z (z (Af (… („ sVf ( +sXf(@f(6% (9f(º' (z  sZf  (!+ s\f (!+s`f (`+s2 *Nsbfsdf("+*fsffshfs— (#+*Nsjfslf($+*fstfs|fs2 (%+*jsˆfsfs2 (&+*(2 *&(8f*:() }ç7*0&o{ç7{;{;(%] {;(ÿk*ò(2 }è7}é7}ê7}ë7}ì7}í7}î7*0 3{è7{é7{ê7{ë7{ì7{í7{î7þ(T(â( (ä( (á( {8{8{8(-+(.+þ((+*(12 *0&Ws~f s€f s‚f s„f s†f*:() }8*0"~(f (g {8o!2 s»' *:(22 }8*:{8(/+*V(32 }8}8*0@T(â( (ä( (á( {8(N+{8o42 {8o!2 s2 *(52 *0YsŠf sŒf sŽf*0 o(0+s/ €8(](õ+s/ (]sÐ`€8(1+(62 (]s a€8sJa€8sLa€8sNa€8sPa€8(‹](B €8(](½0 €8(Ž](¾0 €8(Œ](¼0 €8sºa€ 8(/^( €!8(-^('^(0^sKr€"8sÄa€#8sÄa€$8sÄa€%8sÄa€&8sÄa€'8sÄa€(8(>^€)8(>^€*8(/^(72 €+8(/^( (/^(82 (( s+f€,8s¸ €-8('^(-^()^(+^(2^s[r€.8((³(ùµ€/8((³(éµ€08((³(ýµ€18(c”rPyp( €28(c”ryp( €38(c”rØyp( €48(c”rzp( €58(c”r>zp( €68(c”rˆzp( €78*rÖVp*~ô9*~õ9*~ö9*~÷9*~ø9*~ù9*~ú9*~û9*~ü9*~ý9*~þ9*~ÿ9*~:*0%Z{98 {=8 s`ms:m sÁm*6(¤ (n*0[(Jm (òh s`m*:(²h(£f*:(¯h(£f*:(³h(£f*:(µh(£f*:(¬h(£f*:(®h(£f*:(´h(£f*‚(2+(è+(£f(¤ (n*N(¤ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*N(¨ -*(n*0ã](+ (‚+(¯f þþ ,^sjh(3+ ¥ýo¶ oï ,o· Ö+èÞu , oâ &Ü&Ü+ , ( + sÄl sÍl  (Îf (4+ oVm s~  (¡fo92  *E!fv(€ ( (X) (( s:2 *¶(€ ( (€ ( (X) (( (( s:2 *¶(¤ (¥ (¤ (¥ (ú (û (û s¡ *¶(€ ( (€ ( (X) (( (( s;2 *¶(€ ( (€ ( (X) (( (( s<2 *¶(€ ( (€ ( (X) (( (( s<2 *v(€ ( (X) (( s<2 *ö(¤ (¥ (¤ (¥ (¤ (¥ (ú (û (û (û s¡ *ö(¤ (¥ (¤ (¥ (¤ (¥ (ú (û (û (û s¡ *¶(¤ (¥ (¤ (¥ (ú (û (û s¡ *N(¤ (¥ (n*N(¤ (¥ (n*f(¤ (¥ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*0 -(¤ (¥ (¥ (¥ (¥ (¥ (n*š(¤ (¥ (¥ (¥ (¥ (n*N(¤ (¥ (n*N(¤ (¥ (n*0 ý^ ($n@Š tv {ƒ;(³ ,u{ƒ; (³ (³ -a{‚;(i,Q{‚; (´    (¤ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (n* ($n3U tw{„;  (¤ (¥ (¥ (¥ (¥ (¥ (¥ (¥ (ß+(n*(n*0*_(³ 9 (³ (³ 9(³ (³ (³ 9ï(³ (³ (³ 9Ø(³ (³ (³ 9Á (³ (³ (³ 9¨(³ (³ (³ 9Ž(³ (³ (³ ,w(³ (³ (³ -`(´ (´  (´  (´  (´  (´  (´ (´      (Çf*(n*z(a–(<°(²h(£f(×f*0<`( ° (— (˜ {“^(<°(2+(è+(£f(×f*.(ä³*0‚éLp(²hrFp(£f (²hrŠFp(£f (²hr®Fp(£f (²hr®zp(£f (²hrðEp(£f(²hrFp(£f(²hr6Fp(£f(²hrRFp(£f(²hrnFp(£f(²hrØEp(£f (²hr”Ep(£f (²hrºzp(£f (²hrÂEp(£f (²hrÔFp(£f (²hr>Ep(£f(²hr[ñp(£f(²hr² p(£f(²hr: p(£f(²hrüp(£f(²hr®Ep(£f(²hrxEp(£f(²hrZEp(£f(²hrÎzp(£f(²hrÞzp(£f(²hròzp(£f(²hrþzp(£f(²hr{p(£f(²hr{p(£f(²hr.{p(£f(²hr>{p(£f(²hrV{p(£f(²hrl{p(£f sah r Fp([ (\ !r Fpr†{p([ (\ (\ "r Fpr{p([ (\ (\ #r Fpr{pr¨{p([ (\ (\ (\ $ !r¸{p(2+!(è+r¸{p(£f%(´hrÆ{p(£f& "rØ{p(2+"(è+rØ{p(£f' !rò{p(2+!(è+rò{p(£f( !r|p(2+!(è+r|p(£f)(´hr&|p(£f*(²hrH|p(£f+(µhrZ|p(£f,(µhrh|p(£f-(´hr¸{p(£f.(µhrv|p(£f/(²hr‚|p(£f0(²hr |p(£f1 !r¾|p(2+!(è+r¾|p(£f2 $rÐ|p(2+$(è+rÐ|p(£f3 $rì|p(2+$(è+rì|p(£f4 !rDZp(2+!(è+rDZp(£f5(¯hr}p(£f6(¯hr}p(£f7(³hr }p(£f8(³hr:}p(£f9r Fpr†{prV}p([ (\ (\ (\ ; ;rn}p(2+;(è+rn}p(£f:(²hrˆ}p(£f<(²hr’}p(£f=(²hrž}p(£f>(²hr¬}p(£f? (¤ (n@(¤ (nA(¤ (nB(¤ (nC (¤ (nD !r„Ep(«fE(¤ (nF !r¼}p(«fG r FprÆ}p([ (\ (\ rÜ}p(«fH !rò}p(2+!(è+rò}p(£fIschJFsehKsghs=2 L #r~p(«fM #r~p(«fN !r@~p(«fO #rh~p(2+#(è+rh~p(£fP7(¤ (nQ8(¤ (nR,r€~p(ømS,rœ~p(ømT(±h(JmU(²h(JmV(³h(JmW(µh(JmX(¬h(JmY(­h(JmZ(´h(Jm[Vrãp(òh\\rª~p(òh]\r p(òh^\rÐ~p(òh_Vr/p(òh``rCp(òha`rè~p(òhb`rü~p(òhcVr p(òhdWr:p(òheWr^p(òhffr„p(òhgfrœp(òhhXr¶p(òhiXrÊp(òhjXràp(òhkXrøp(òhlXr€p(òhmXr0€p(òhnXrL€p(òhoXr`€p(òhpXrt€p(òhqVrŽ€p(òhrYr¨€p(òhsUrÆ€p(òhtZrÜ€p(òhu[r p(òhv !r*p(2+!(è+r*p(£fw !r:p(2+!(è+r:p(£fx !rJp(2+!(è+rJp(£fy !rZp(2+!(è+rZp(£fz !rjp(2+!(è+rjp(£f{ !rzp(2+!(è+rzp(£f| !rŠp(2+!(è+rŠp(£f} !ršp(2+!(è+ršp(£f~(²hrªp(£f(²hr¼p(£f€(²hrÎp(£f(²hràp(£f‚(²hròp(£fƒ(²hr‚p(£f„slh…snh†(²hr‚p(£f(²hr(‚p(£f(²hr4‚p(£f(²hrl{p(£f(²hr² p(£f( ( ( ( ( ( ‡\]^_`abcdefghijklmnopqrssph(5+¥!(6+ˆwsvh‰sxhszhs>2 Š(}–rýpo ŒŽ(z @@(7+JKL]ŒŽ(¤ (£ (°f‹JKL](}–rÓ po (•f(z (u! (œf(¤ (¥ (ú (û (œf(­f(°f‘JKL](}–rÙ po (•f(z (u! (œf(¤ (¥ (ú (û (œf(®f(°f’(}–r(Ppo ŒŽ(z @@(7+JKL]ŒŽ(¤ (£ (°f“rR‚p(c Ž(z @@(7+JKL]ræDpŽ(¤ (£ (°f”(}–rX‚po ŒŽ(z @@(7+JKL]ŒŽ(¤ (£ (°f•r^‚p(c Ž(•f(z (u! A(œf(8+JKL`rÍXpŽ(¤ (£ (°f–(}–rCpo ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°f—JKLe(}–rÑpo (•f(z (u! (œf(¤ (¥ I(œf(¬f(¤ (¥ (ú (û (û @(°f˜JKLe(}–rËpo (•f(z (u! I(œf(¬f(¤ (¥ (œf(¤ (¥ (ú (û (û @(°f™JKLe(}–r×po (•f(z (u! I(œf(¬f(¤ (¥ I(œf(¬f(¤ (¥ (ú (û (û @(°fš(}–rn‚po ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°f›(}–r@-po ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°fœ(}–rt‚po ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°f(}–r6Úpo ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°fž(}–rz‚po ŒŽ(•f(z (u! @(œf(7+JKL`ŒŽ(¤ (£ (°fŸŽ(•f(z (u! AM(œf(¸fJKL\r€‚pŽ(¤ (£ (°f Ž(•f(–f(z (u! (u! ANw(œf(f(¤ (¥ (¥ (Èf(ºfJKL_r¼‚pŽ(¤ (£ (°f¡Ž(•f(–f(—f(z (u! (u! (u! ANw(œf(f(žf(¤ (¥ (¥ (¥ (Èf(ºfJKL_rÚ‚pŽ(¤ (£ (°f¢Ž(•f(–f(—f(˜f(z (u! (u! (u! (u! ANw(œf(f(žf(Ÿf(¤ (¥ (¥ (¥ (¥ (Èf(ºfJKL_rø‚pŽ(¤ (£ (°f£Ž(•f(–f(—f(˜f(™f(z (u! (u! (u! (u! (u! ANw(œf(f(žf(Ÿf( f(¤ (¥ (¥ (¥ (¥ (¥ (Èf(ºfJKL_rƒpŽ(¤ (£ (°f¤Ž(•f(–f(z (u! (u! @Nw(œf(f(¤ (¥ (¥ (Èf(¹fJKL_r4ƒpŽ(¤ (£ (°f¥Ž(•f(–f(—f(z (u! (u! (u! @Nw(œf(f(žf(¤ (¥ (¥ (¥ (Èf(¹fJKL_rVƒpŽ(¤ (£ (°f¦Ž(•f(–f(—f(˜f(z (u! (u! (u! (u! @Nw(œf(f(žf(Ÿf(¤ (¥ (¥ (¥ (¥ (Èf(¹fJKL_rxƒpŽ(¤ (£ (°f§Ž(•f(–f(—f(˜f(™f(z (u! (u! (u! (u! (u! @Nw(œf(f(žf(Ÿf( f(¤ (¥ (¥ (¥ (¥ (¥ (Èf(¹fJKL_ršƒpŽ(¤ (£ (°f¨Ž(•f(–f(z (u! (u! AMw(œf(f(¤ (¥ (¥ (Èf(¸fJKL_r¼ƒpŽ(¤ (£ (°f©Ž(•f(–f(—f(z (u! (u! (u! AMw(œf(f(žf(¤ (¥ (¥ (¥ (Èf(¸fJKL_ràƒpŽ(¤ (£ (°fªŽ(•f(–f(—f(˜f(z (u! (u! (u! (u! AMw(œf(f(žf(Ÿf(¤ (¥ (¥ (¥ (¥ (Èf(¸fJKL_r„pŽ(¤ (£ (°f«Ž(•f(–f(—f(˜f(™f(z (u! (u! (u! (u! (u! AMw(œf(f(žf(Ÿf( f(¤ (¥ (¥ (¥ (¥ (¥ (Èf(¸fJKL_r(„pŽ(¤ (£ (°f¬Ž(•f(z (u! @(œf(7+JKL\rL„pŽ(¤ (£ (°f­JKL\rp„p(z (ú M(°f®JKL\r„p(z (ú N(°f¯JKL\rÄ„p(z (ú N(°f°Ž(•f(z (u! @N(œf(¹fJKL\rô„pŽ(¤ (£ (°f±Ž(•f(z (u! AN(œf(ºfJKL\r,…pŽ(¤ (£ (°f²Ž(•f(z (u! @(œf(7+JKL_r\…pŽ(¤ (£ (°f³Ž(•f(z (u! @(œf(7+JKL_r’…pŽ(¤ (£ (°f´Ž(•f(z (u! @N(œf(¹fJKL_rÄ…pŽ(¤ (£ (°fµŽ(•f(z (u! A(œf(8+JKL_r†pŽ(¤ (£ (°f¶Ž(•f(z (u! AM(œf(¸fJKL_rD†pŽ(¤ (£ (°f·Ž(•f(z (u! A(œf(9+JKL_r’†pŽ(¤ (£ (°f¸Ž(•f(z (u! AN(œf(ºfJKL_r¼†pŽ(¤ (£ (°f¹JKL^rþ†p(•f(z (u! F(¤ (¥ (ú (û (œf(°fºJKL^r‡p(•f(z (u! B(¤ (¥ (ú (û (œf(°f»JKL^r6‡p(•f(z (u! B(¤ (¥ (ú (û (œf(°f¼JKL^rJ‡p(•f(z (u! B(¤ (¥ (ú (û @(°f½JKL^rj‡p(•f(z (u! B(¤ (¥ (ú (û @(°f¾JKL^rN p(•f(z (u! (œf(¤ (¥ (ú (û F(°f¿Ž(•f(z (u! @(œf(7+JKL_r„‡pŽ(¤ (£ (°fÀŽ(•f(z (u! (œf(:+JKL`rû2pŽ(¤ (£ (°fÁŽ(•f(z (u! (œf(:+JKL`rß2pŽ(¤ (£ (°fÂŽ(•f(z (u! (œf(:+JKL`r3pŽ(¤ (£ (°fÃŽ(•f(z (u! (œf(;+JKL`r-2pŽ(¤ (£ (°fÄŽ(•f(z (u! A(œf(³fJKL`r©2pŽ(¤ (£ (°fÅŽ(•f(z (u! A(œf(³fJKL`rÃ2pŽ(¤ (£ (°fÆŽ(•f(–f(—f(z (u! (u! (u! (œf(f(žf(<+JKL`rm3pŽ(¤ (£ (°fÇŽ(•f(–f(—f(z (u! (u! (u! (œf(f(žf(<+JKL`r…3pŽ(¤ (£ (°fÈŽ(•f(–f(—f(z (u! (u! (u! (œf(f(žf(<+JKL`r!1pŽ(¤ (£ (°fÉŽ(•f(z (u! (œf(;+JKL`r2pŽ(¤ (£ (°fÊŽ(•f(z (u! (œf(;+JKL`rm2pŽ(¤ (£ (°fËr¸‡p(c Ž(z @(;+JKL`rÀ‡pŽ(¤ (£ (°fÌJKL`rȇprÔ‡p(c (•f(z (u!  !r¼ p(«f(¤ (¥ (ú (û (œf(°fÍJKL`rà‡prð‡p(c (•f(z (u! F(¤ (¥ (ú (û (œf(°fÎJKL`r fprˆp(c (•f(z (u! (ú G(°fÏJKL`rˆpr,ˆp(c (•f(–f(z (u! (u! (œf(f(n(¤ (¥ (ú (û O(°fÐJKL`rfprJˆp(c (•f(z (u! (ú A(°fÑJKLbröeprXˆp(c (•f(z (u! (ú (œf(°fÒJKL`r&fprlˆp(c (•f(z (u! (ú G(°fÓJKL`rÉûpr€ˆp(c (•f(z (u! A(¤ (¥ (ú (û (œf(°fÔJKL`r“`p(•f(z (u! (œf(¤ (¥ (œf(¤ (¥ (ú (û (û /(œf(¼f(°fÕJKLarŽˆp(z A(¤ (¥ A(¤ (¥ A(¤ (¥ (ú (û (û (û /A(¼f(°fÖJKL^rUp(•f(z (u! =(œf(¿f(¤ (¥ A(¤ (¥ A(¤ (¥ (ú (û (û (û (œf(°f×JKL^r?p(•f(z (u! >(œf(Àf(¤ (¥ A(¤ (¥ A(¤ (¥ A(¤ (¥ (ú (û (û (û (û (œf(°fØJKL^rp(•f(z (u! ?(œf(Áf(¤ (¥ A(¤ (¥ A(¤ (¥ A(¤ (¥ A(¤ (¥ (ú (û (û (û (û (û (œf(°fÙJKLir¤ˆpr´ˆp(c (•f(–f(—f(z (u! (u! (u! (œf(f(n(¤ (¥ /(œf(¼f(¤ (¥ (ú (û (û /(žf(¼f(°fÚJKLirĈpr p(c (–f(z (u! F/(f(¼f(n(¤ (¥ (ú (û /(f(¼f(°fÛJKLirЈprÞˆp(c (–f(z (u! /(f(¼f(¤ (¥ /(f(¼f(¤ (¥ (ú (û (û /(f(¼f(°fÜJKLsrìˆp(•f(–f(—f(z (u! (u! (u! (œf(¤ (¥ (œf(f(n(¤ (¥ (ú (û (û /(žf(¼f(°fÝJKLsr ‰p(–f(z (u! F@(n(¤ (¥ /(f(¼f(¤ (¥ (ú (û (û /(f(¼f(°fÞJKLsr(‰p(–f(z (u! /(f(¼f(¤ (¥ FF(n(¤ (¥ (ú (û (û /(f(¼f(°fßJKLsrR‰p(•f(–f(z (u! (u! F(œf(n(¤ (¥ (œf@(n(¤ (¥ (œf(f(n(¤ (¥ (ú (û (û (û /(f(¼f(°fàJKLsr€‰p(•f(–f(z (u! (u! (œfF(n(¤ (¥ (œfF(n(¤ (¥ B(fF(n(n(œf(n(¤ (¥ (ú (û (û (û &(œf(f(¤ (¥ (¥ (n(°fáJKLir˜‰pr¨‰p(c (–f(z (u! /(f(¼f(¤ (¥ (ú (û <(f(¾f(°fâJKLir¸‰prƉp(c (–f(z (u! /(f(¼f(¤ (¥ (ú (û -(f(»f(°fãJKLirÔ‰pr܉p(c (•f(–f(z (u! (u! (œf(f(n(¤ (¥ /(œf(¼f(¤ (¥ (ú (û (û /(f(¼f(°fäJKLirä‰prø‰p(c (•f(z (u! (œf(¤ (¥ (ú (û /(œf(¼f(°fåJKLir Špr%$p(c (•f(z (u! (ú /(œf(¼f(°fæJKLVrúåpr‚|p(c (•f(–f(—f(˜f(™f(z (u! (u! (u! (u! (u! C(¤ (¥ (ú (û 0(œf(f(žf(Ÿf( f(Ãf(°fçJKLdrŠpr(Šp(c (•f(z (u! 1(œfFCC(Äf(¤ (¥ (ú (û (œf(°fèJKLvrXŠpr¸{p(c (•f(z (u! %(œf(Âf(¤ (¥ (¤ (ú (û (û (œf(°féJKLvrdŠpr¸{p(c (•f(z (u! F(œf(n(¤ (¥ (ú (û %(œf(Âf(°fêJKL`rrŠprzŠp(c (•f(z (u! /(œf(¼f(¤ (¥ (ú (û /(œf(¼f(°fëJKLdr˜Šp(•f(z (u! 6(œf(Åf(¤ (¥ (ú (û (œf(°fìJKLdr¬Šp(•f(z (u! Q(¤ (¥ (ú (û (œf(°fíJKL^rΊp(z A(¤ (¥ A(¤ (¥ A(¤ (¥ @(¤ (¥ D(¤ (¥ (ú (û (û (û (û (û E(°fîJKL^r-p(•f(z (u! <(œf(¾f(¤ (¥ A(¤ (¥ (ú (û (û (œf(°fïJKLtræŠpr}p(c (z G-G(»f-Q(»f<D(¾f(¤ (¥ (¥ (¥ (¥ (ú (û Q(°fðJKLtrþŠpr}p(c (•f(z (u! Q(¤ (¥ (ú (û 6(œf(Åf(°fñJKLtrWpr}p(c (•f(z (u! (œf(¤ (¥ (ú (û Q(°fòJKLdr¼xp(z (ú R(°fóJKLgrÏpr }p(c (•f(z (u! R(¤ (¥ 6(œf(Åf(¤ (¥ (ú (û (û (œf(°fôJKLhrÏpr }p(c (•f(z (u! R(¤ (¥ 69(œfP(¤ (n(½f(Åf(¤ (¥ (ú (û (û /(œf(¼f(°fõJKLWr“pr }p(c (•f(˜f(–f(™f(z (u! (u! (u! (u! R(¤ (¥ 9(œf(Ÿf(½f(œf9(f( f(½f(n(¤ (¥ (¥ (ú (û (û 9(f(Ÿf(½f(°föJKLWr‹pr }p(c (•f(™f(–f(z (u! (u! (u! R(¤ (¥ 9(œf( f(½f(œf(f(n(¤ (¥ (¥ (ú (û (û 9(f( f(½f(°f÷JKLWr‡pr }p(c (•f(™f(z (u! (u! R(¤ (¥ (œf(¤ (¥ (ú (û (û 9(œf( f(½f(°føJKLWr]pr }p(c (•f(™f(z (u! (u! R(¤ (¥ 9(œf( f(½f(¤ (¥ (ú (û (û 9(œf( f(½f(°fùJKLWrpr }p(c (•f(z (u! R(¤ (¥ /(œf(¼f(¤ (¥ (ú (û (û 9(œfP(¤ (n(½f(°fúJKLWr‹pr:}p(c (•f(™f(z (u! (u! 9(œf( f(½f(¤ (¥ (¤ (ú (û (û /(œf(¼f(°fûJKLWrúåpr:}p(c (•f(™f(z (u! (u! /(œf(¼f(¤ (¥ (ú (û 9(œf( f(½f(°füJKLWr,‹pr }p(c (•f(™f(z (u! (u! R(¤ (¥ 9(œf( f(½f(œf@(n(¤ (¥ (¥ (ú (û (û 9(œf( f(½f(°fýJKLWrSpr }p(c (•f(™f(z (u! (u! R(¤ (¥ (¤ (ú (û (û 9(œf( f(½f(°fþJKL^r8‹p(z F(¤ (¥ (ú (û F(°fÿJKL^rJ‹p(z F(¤ (¥ (ú (û F(°fþJKL^rh‹p(•f(z (u! (œf(¤ (¥ (ú (û (œf(°fþJKLur|‹p(•f(z (u! 6(œf(Åf(¤ (¥ (ú (û :(œf(Æf(°fþL¥þ(²hr(‚p(£fþ(²hr‚p(£fþ(µhrZ|p(£fþ(µhr´‹p(£fþ(µhrÀ‹p(£fþ(²hrÌ‹p(£fþ (¬hrØ‹p(£fþ (¬hrŒp(£fþ (¬hr*Œp(£fþ (¬hrLŒp(£fþ (¤ (nþ(¤ (nþ (¤ (nþ(¤ (nþ(¤ (nþ(¤ (nþ(¤ (nþ(¤ (nþ (¤ (nþ(¤ (nþ(¤ (nþ(¤ (nþ (¤ (nþ(¤ (nþ(¤ (nþŠs}hþ !rbŒp(«fþ !r"Ep(«fþ !rnŒp(«fþ  !rÂGp(«fþ! !r†Œp(«fþ" !r˜Œp(«fþ# !r¼Œp(«fþ$ !r¼ p(«fþ% !r0Ep(«fþ& !rüEp(«fþ' !rÆŒp(2+!(è+rÆŒp(£fþ( !räŒp(2+!(è+räŒp(£fþ) !rüŒp(2+!(è+rüŒp(£fþ* !rÌEp(2+!(è+rÌEp(£fþ+ !r„Ep(2+!(è+r„Ep(£fþ, !räEp(2+!(è+räEp(£fþ- !rüEp(2+!(è+rüEp(£fþ. !rFp(2+!(è+rFp(£fþ/ !r|Fp(2+!(è+r|Fp(£fþ0 !rÄFp(2+!(è+rÄFp(£fþ1 !r¸Ep(2+!(è+r¸Ep(£fþ2 !r(Fp(2+!(è+r(Fp(£fþ3 !r¤Ep(2+!(è+r¤Ep(£fþ4 !rDFp(2+!(è+rDFp(£fþ5 !r`Fp(2+!(è+r`Fp(£fþ6 !ržFp(2+!(è+ržFp(£fþ7 !rLEp(2+!(è+rLEp(£fþ8 !rjEp(2+!(è+rjEp(£fþ9 !r(p(«fþ: !rLp(2+!(è+rLp(£fþ; !rLp(«fþ< !rbŒp(2+!(è+rbŒp(£fþ= !r"Ep(2+!(è+r"Ep(£fþ> !rEp(2+!(è+rEp(£fþ? !rrp(2+!(è+rrp(£fþ@ !r¤p(2+!(è+r¤p(£fþA !rÀp(2+!(è+rÀp(£fþB !rÚp(«fþC #ròp(«fþD #rŽp(«fþE #r~p(2+#(è+r~p(£fþF #r~p(2+#(è+r~p(£fþG $rHŽp(2+$(è+rHŽp(£fþH $rpŽp(2+$(è+rpŽp(£fþI !rÚp(2+!(è+rÚp(£fþJ #ròp(2+#(è+ròp(£fþK #rŽp(2+#(è+rŽp(£fþL(²hrãp(£fþM $rŠŽp(2+$(è+rŠŽp(£fþN $ršŽp(2+$(è+ršŽp(£fþO r¶Žp(ÊfþP rôŽp(ÊfþQ r*p(ÊfþR r p(ÊfþS rp(ÊfþT rFp(ÊfþU rªp(ÊfþV r‘p(ÊfþW r†‘p(ÊfþX rì‘p(ÊfþY rP’p(ÊfþZ r¸’p(Êfþ[ r“p(Êfþ\ rr“p(Êfþ] rÊ“p(Êfþ^ r,”p(Êfþ_ rf”p(Êfþ`rДp(Éfþa rþ”p(Êfþb r:•p(Êfþc rmñp(Êfþd rf•p(Êfþe r¾•p(Êfþf r–p(Êfþg r‚–p(Êfþhrê–p(Éfþir$—p(Éfþj rV—p(Êfþkr’—p(ÉfþlrÆ—p(Éfþmr˜p(Éfþnr.˜p(Éfþorh˜p(Éfþprš˜p(ÉfþqrƘp(Éfþrrò˜p(Éfþs r™p(Êfþtrd™p(Éfþur˜™p(Éfþvræ™p(Éfþwršp(Éfþxr0šp(ÉfþyrVšp(Éfþzrvšp(Éfþ{r°šp(Éfþ|rÜšp(Éfþ}r›p(Éfþ~rF›p(ÉfþrŒ›p(Éfþ€rÄ›p(Éfþrè›p(Éfþ‚rœp(ÉfþƒrDœp(Éfþ„rlœp(Éfþ…r˜œp(Éfþ†rÈœp(Éfþ‡rüœp(Éfþˆr:p(Éfþ‰r|p(ÉfþŠr²p(Éfþ‹rêp(ÉfþŒr&žp(ÉfþrFžp(ÉfþŽrtžp(Éfþr¬žp(ÉfþrΞp(Éfþ‘rŸp(Éfþ’ rTŸp(Êfþ“ r°Ÿp(Êfþ” r p(Êfþ•ë(¡fþ–‹(¡fþ—“(¡fþ˜‘(¡fþ™’(¡fþš”(¡fþ›ì(¡fþœí(¡fþ•(¡fþž³(¡fþŸ´(¡fþ µ(¡fþ¡¶(¡fþ¢·(¡fþ£¸(¡fþ¤¹(¡fþ¥À(¡fþ¦Á(¡fþ§Â(¡fþ¨Ã(¡fþ©Ä(¡fþªÅ(¡fþ«Æ(¡fþ¬Ç(¡fþ­Ê(¡fþ®Ë(¡fþ¯Ì(¡fþ°È(¡fþ±É(¡fþ²Ò(¡fþ³–(¡fþ´—(¡fþµ˜(¡fþ¶š(¡fþ·™(¡fþ¸›(¡fþ¹œ(¡fþº(¡fþ»ž(¡fþ¼Ÿ(¡fþ½Î(¡fþ¾Ð(¡fþ¿Ï(¡fþÀÑ(¡fþÁÓ(¡fþÂÔ(¡fþÃÕ(¡fþÄÖ(¡fþÅï(¡fþÆ×(¡fþÇØ(¡fþÈÙ(¡fþÉå(¡fþÊÚ(¡fþËÝ(¡fþÌÛ(¡fþÍÜ(¡fþÎÞ(¡fþÏß(¡fþÐà(¡fþÑä(¡fþÒæ(¡fþÓç(¡fþÔè(¡fþÕ»(¡fþÖ¼(¡fþ×½(¡fþؾ(¡fþÙú(¡fþÚó(¡fþÛô(¡fþÜõ(¡fþÝö(¡fþÞø(¡fþßù(¡fþà÷(¡fþáý(¡fþâþ(¡fþã¡(¡fþä¢(¡fþå£(¡fþæ¤(¡fþç¥(¡fþè¦(¡fþé§(¡fþê¨(¡fþë©(¡fþìª(¡fþí«(¡fþî¬(¡fþï±(¡fþð(ñ• !shrüEps‚ r|Fps‚ ržFps‚ räEps‚ rFps‚ r(Fps‚ rDFps‚ r`Fps‚ rÌEp s‚ r„Ep s‚ r¸Ep s‚ rÄFp s‚ r0Eps‚ r"Eps‚ r¼ ps‚ r¤Eps‚ rjEps‚ rLEps‚ (?2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (@2 (=+þñrl{psƒhsA2 r:px‰sA2 rJpy‰sA2 rZpz‰sA2 rjp{‰sA2 rzp|‰sA2 rŠp}‰sA2 ršp~‰sA2 (B2 (C2 (C2 (C2 (C2 (C2 (C2 (C2 (C2 þòþ ñþ ò(>+þó,Rs‡hþ ó(?+þõþ õoD2 s‰hsE2 þöþ ösŒhþ õ(@+þ öþôþ ôsŽh+Nshþ ó(A+þøþ øoF2 s’hsG2 þùþ ùs•hþ ø(B+þ ùþ÷þ ÷s—hþ þ €‚ƒ„þ þ þ %†…þ +-.067   2   </þ þ þ þ <=>?wxyz{|}~'()&*Iþ Aþ Bþ @Aþ þ þ þ þ þ þ þ þ D@Cþ Fþ þ þ þ þ þ þ þ þ !þ "þ #þ $þ %þ 'þ &Gþ (þ )þ ,þ +þ -þ .þ /þ 0þ 1þ 4þ 2þ 3þ 5þ 6þ 7þ 8þ 9þ *þ :Oþ ;þ <Hþ =þ >þ ?:þ Cþ Dþ EMNþ Fþ Gþ Hþ Iþ Jþ Kþ Lþ Mþ jþ iþ Pþ Qþ Rþ Sþ Tþ Uþ |þ kþ lþ Vþ Wþ Xþ Yþ Zþ [þ \þ ]þ ^þ _þ `þ aþ bþ cþ dþ eþ fþ gþ hþ Nþ O3P45þ mþ nþ oþ pþ qþ rþ sþ tþ uþ vþ wþ xþ yþ zþ {þ }þ ~þ þ €þ þ ƒþ ‚þ …þ „þ ‡þ †þ ˆþ ‰þ Šþ ‹þ Œþ þ Žþ þ þ ‘þ ’þ “þ ”þ •STþ –þ —þ ˜þ ™þ šþ ›þ žþ Ÿþ  þ ¡þ ¢þ £þ ¤þ ¥þ ¦þ ´þ µþ ¶þ ·þ ¸þ ¹þ ºþ »þ ¼þ ½þ §þ ¨þ ©þ ªþ «þ ¬þ ­þ ®þ ¯þ °þ ±þ ²þ ³ëÎþ ¾Ïþ ÀÐþ ¿þ ÁÓþ Âþ Ãî ­±²—þ Úþ Ûþ Üþ Ýþ Þþ ßþ àþ áþ âþ ã8þ äþ åþ æþ çþ èþ éþ êþ ëþ ìþ íþ îþ ïþ ðºáþ Öþ ×þ Øþ Ù®¯°»¼½¾¿þ Äþ Åþ Æþ Çþ Èþ Éþ ËÚÝþ ÌÛþ ÍÜþ ÎÞþ Ïßþ Ðàþ Ñâãäþ Òåþ Êæþ ÓçÍéêïרÙðñòûüÿþ þ þ þ Õþ œþ þ Ô ‡þ þ ˆs_h*0:`( ° (— (˜ {@8{“^(<°{º9(‚+(×f*2sÏf*²( }98}:8};8}<8}=8*{98*{:8*{;8*{<8*{=8*&*Zr.8psH2 (C+oI2 *"sØf*V( }>8}?8*{>8*{?8*&*Zr.8psJ2 (D+oK2 *"{?8*"{>8*{@8*{A8*{B8*{C8*{D8*{E8*{F8*{G8*{H8*{I8*{J8*{K8*{L8*{M8*{N8*{O8*{P8*{Q8*{R8*{S8*{T8*{U8*{V8*{W8*{X8*{Y8*{Z8*{[8*{\8*{]8*{^8*{_8*{`8*{a8*{b8*{c8*{d8*{e8*{f8*{g8*{h8*{i8*{j8*{k8*{l8*{m8*{n8*{o8*{p8*{q8*{r8*{s8*{t8*{u8*{v8*{w8*{x8*{y8*{z8*{{8*{|8*{}8*{~8*{8*{€8*{8*{‚8*{ƒ8*{„8*{…8*{†8*{‡8*{ˆ8*{‰8*{Š8*{‹8*{Œ8*{8*{Ž8*{8*{8*{‘8*{’8*{“8*{”8*{•8*{–8*{—8*{˜8*{™8*{š8*{›8*{œ8*{8*{ž8*{Ÿ8*{ 8*{¡8*{¢8*{£8*{¤8*{¥8*{¦8*{§8*{¨8*{©8*{ª8*{«8*{¬8*{­8*{®8*{¯8*{°8*{±8*{²8*{³8*{´8*{µ8*{¶8*{·8*{¸8*{¹8*{º8*{»8*{¼8*{½8*{¾8*{¿8*{À8*{Á8*{Â8*{Ã8*{Ä8*{Å8*{Æ8*{Ç8*{È8*{É8*{Ê8*{Ë8*{Ì8*{Í8*{Î8*{Ï8*{Ð8*{Ñ8*{Ò8*{Ó8*{Ô8*{Õ8*{Ö8*{×8*{Ø8*{Ù8*{Ú8*{Û8*{Ü8*{Ý8*{Þ8*{ß8*{à8*{á8*{â8*{ã8*{ä8*{å8*{æ8*{ç8*{è8*{é8*{ê8*{ë8*{ì8*{í8*{î8*{ï8*{ð8*{ñ8*{ò8*{ó8*{ô8*{õ8*{ö8*{÷8*{ø8*{ù8*{ú8*{û8*{ü8*{ý8*{þ8*{ÿ8*{9*{9*{9*{9*{9*{9*{9*{9*{9*{ 9*{ 9*{ 9*{ 9*{ 9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{9*{ 9*{!9*{"9*{#9*{$9*{%9*{&9*{'9*{(9*{)9*{*9*{+9*{,9*{-9*{.9*{/9*{09*{19*{29*{39*{49*{59*{69*{79*{89*{99*{:9*{;9*{<9*{=9*{>9*{?9*{@9*{A9*{B9*{C9*{D9*{E9*{F9*{G9*{H9*{I9*{J9*{K9*{L9*{M9*{N9*{O9*{P9*{Q9*{R9*{S9*{T9*{U9*{V9*{W9*{X9*{Y9*{Z9*{[9*{\9*{]9*{^9*{_9*{`9*{a9*{b9*{c9*{d9*{e9*{f9*{g9*{h9*{i9*{j9*{k9*{l9*{m9*{n9*{o9*{p9*{q9*{r9*{s9*{t9*{u9*{v9*{w9*{x9*{y9*{z9*{{9*{|9*{}9*{~9*{9*{€9*{9*{‚9*{ƒ9*{„9*{…9*{†9*{‡9*{ˆ9*{‰9*{Š9*{‹9*{Œ9*{9*{Ž9*{9*{9*{‘9*{’9*{“9*{”9*{•9*{–9*{—9*{˜9*{™9*{š9*{›9*{œ9*{9*{ž9*{Ÿ9*{ 9*{¡9*{¢9*{£9*{¤9*{¥9*{¦9*{§9*{¨9*{©9*{ª9*{«9*{¬9*{­9*{®9*{¯9*{°9*{±9*{²9*{³9*{´9*{µ9*{¶9*{·9*{¸9*{¹9*{º9*{»9*{¼9*{½9*{¾9*{¿9*0 ( }@8}A8}B8}C8}D8}E8}F8}G8 }H8 }I8 }J8 }K8 }L8}M8}N8}O8}P8}Q8}R8}S8}T8}U8}V8}W8}X8}Y8}Z8}[8}\8}]8}^8 }_8!}`8"}a8#}b8$}c8%}d8&}e8'}f8(}g8)}h8*}i8+}j8,}k8-}l8.}m8/}n80}o81}p82}q83}r84}s85}t86}u87}v88}w89}x8:}y8;}z8<}{8=}|8>}}8?}~8@}8A}€8B}8C}‚8D}ƒ8E}„8F}…8G}†8H}‡8I}ˆ8J}‰8K}Š8L}‹8M}Œ8N}8O}Ž8P}8Q}8R}‘8S}’8T}“8U}”8V}•8W}–8X}—8Y}˜8Z}™8[}š8\}›8]}œ8^}8_}ž8`}Ÿ8a} 8b}¡8c}¢8d}£8e}¤8f}¥8g}¦8h}§8i}¨8j}©8k}ª8l}«8m}¬8n}­8o}®8p}¯8q}°8r}±8s}²8t}³8u}´8v}µ8w}¶8x}·8y}¸8z}¹8{}º8|}»8}}¼8~}½8}¾8€}¿8}À8‚}Á8ƒ}Â8„}Ã8…}Ä8†}Å8‡}Æ8ˆ}Ç8‰}È8Š}É8‹}Ê8Œ}Ë8}Ì8Ž}Í8}Î8}Ï8‘}Ð8’}Ñ8“}Ò8”}Ó8•}Ô8–}Õ8—}Ö8˜}×8™}Ø8š}Ù8›}Ú8œ}Û8}Ü8ž}Ý8Ÿ}Þ8 }ß8¡}à8¢}á8£}â8¤}ã8¥}ä8¦}å8§}æ8¨}ç8©}è8ª}é8«}ê8¬}ë8­}ì8®}í8¯}î8°}ï8±}ð8²}ñ8³}ò8´}ó8µ}ô8¶}õ8·}ö8¸}÷8¹}ø8º}ù8»}ú8¼}û8½}ü8¾}ý8¿}þ8À}ÿ8Á}9Â}9Ã}9Ä}9Å}9Æ}9Ç}9È}9É}9Ê} 9Ë} 9Ì} 9Í} 9Î} 9Ï}9Ð}9Ñ}9Ò}9Ó}9Ô}9Õ}9Ö}9×}9Ø}9Ù}9Ú}9Û}9Ü}9Ý}9Þ}9ß}9à}9á} 9â}!9ã}"9ä}#9å}$9æ}%9ç}&9è}'9é}(9ê})9ë}*9ì}+9í},9î}-9ï}.9ð}/9ñ}09ò}19ó}29ô}39õ}49ö}59÷}69ø}79ù}89ú}99û}:9ü};9ý}<9þ}=9ÿ}>9þ }?9þ }@9þ }A9þ }B9þ }C9þ }D9þ }E9þ }F9þ }G9þ }H9þ }I9þ }J9þ }K9þ }L9þ }M9þ }N9þ }O9þ }P9þ }Q9þ }R9þ }S9þ }T9þ }U9þ }V9þ }W9þ }X9þ }Y9þ }Z9þ }[9þ }\9þ }]9þ }^9þ }_9þ !}`9þ "}a9þ #}b9þ $}c9þ %}d9þ &}e9þ '}f9þ (}g9þ )}h9þ *}i9þ +}j9þ ,}k9þ -}l9þ .}m9þ /}n9þ 0}o9þ 1}p9þ 2}q9þ 3}r9þ 4}s9þ 5}t9þ 6}u9þ 7}v9þ 8}w9þ 9}x9þ :}y9þ ;}z9þ <}{9þ =}|9þ >}}9þ ?}~9þ @}9þ A}€9þ B}9þ C}‚9þ D}ƒ9þ E}„9þ F}…9þ G}†9þ H}‡9þ I}ˆ9þ J}‰9þ K}Š9þ L}‹9þ M}Œ9þ N}9þ O}Ž9þ P}9þ Q}9þ R}‘9þ S}’9þ T}“9þ U}”9þ V}•9þ W}–9þ X}—9þ Y}˜9þ Z}™9þ [}š9þ \}›9þ ]}œ9þ ^}9þ _}ž9þ `}Ÿ9þ a} 9þ b}¡9þ c}¢9þ d}£9þ e}¤9þ f}¥9þ g}¦9þ h}§9þ i}¨9þ j}©9þ k}ª9þ l}«9þ m}¬9þ n}­9þ o}®9þ p}¯9þ q}°9þ r}±9þ s}²9þ t}³9þ u}´9þ v}µ9þ w}¶9þ x}·9þ y}¸9þ z}¹9þ {}º9þ |}»9þ }}¼9þ ~}½9þ }¾9þ €}¿9*r` p*:(L2 }À9*n{À9(2+(è+(£f*(á *&(n*:(j }Á9*01q(³ ," (³ (³ - (´ * (n*{Á9**o &*03r(™ (š , ( + bX, ( +a*00s(™ (š (™ (š (ñ , (ñ **(O2 **þoµ *V(A( }Â9}Ã9*^{Â9{Ã9þ(i*V(P2 }Ä9}Å9*V{Ä9{Å9(i*0ä}Æ9}Ç9}È9}É9}Ê9}Ë9}Ì9}Í9 }Î9 }Ï9 }Ð9 }Ñ9 }Ò9}Ó9}Ô9}Õ9}Ö9}×9}Ø9}Ù9}Ú9}Û9}Ü9}Ý9}Þ9}ß9}à9}á9(Q2 *0Ï{à9YE +8ƒ8s8˜{Æ9{Ç9{È9{É9{Ê9{Ë9{Ì9{Í9{Î9{Ï9{Ð9{Ñ9{Ò9{Ó9{Ô9{Õ9{Ö9{×9{Ø9{Ù9{Ú9{Û9{Ü9{Ý9(R2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 (S2 ¥!oT2 }ß9}à9{ß9oï ,F{ß9oU2 }Þ9}à9{Þ9oVm{Þ9s`ms‚ }á9*}Þ9+­}à9{ß9(E+}ß9}à9}á9*0‡e {à9YE++e{à9E + ++++}à9{ß9(E+}à9}á9 Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{à9E + + +++***"{á9*0 ›{Æ9{Ç9{È9{É9{Ê9{Ë9{Ì9{Í9{Î9{Ï9{Ð9{Ñ9{Ò9{Ó9{Ô9{Õ9{Ö9{×9{Ø9{Ù9{Ú9{Û9{Ü9{Ý9sph*r(j }â9}ã9}ä9*j{ã9{â9{ä9(Èf*:(V2 }å9*b{å9(¥(\¦(Ëf**o &**þ*:(V2 }æ9*B{æ9þoY2 *:(j }ç9*"{ç9*V(Z2 }è9}é9*0Kt(… („ (¤ (n {è9{é9(2+{é9(è+(£fshsA2 *(j *V(I+(I+(n*’([2 }ê9}ë9}ì9}í9*¾{ê9{ë9{ì9(i,{í9o\2 ( **V(]2 }î9}ï9*0 0u(^2 (_2 (`2 {î9{ï9s…hsa2 **o &*6,( **&(ñ *:(b2 }ð9*0w(c2 (d2 {ð9oe2 *:([2 }ñ9*0Io{ñ9ofm {g:{l:of2 ,'{ñ9ofm {g:{l:og2 þ([+**(h2 *0/x(^2 (_2 (`2 ofm {g:{k:si2 **o &**þ(:+*þ*:(j2 }ò9*0y(k2 (l2 {ò9om2 *:([2 }ó9*0Ko{ó9ofm {g:{k:on2 ,){ó9ofm {g:{k:oo2 o\2 ( **~:*~:*~:*~:*~:*~:*~:*~:*~ :*~ :*~ :*~ :*~ :*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*~:*0rÖVp("¥€ô9r7‡p(”f(3i€õ9rx p(”f(3i€ö9r| p(”f(3i€÷9rɆp(”f(3i€ø9r%üp(”f(3i€ù9rØBp(”f(3i€ú9r‡p(”f(3i€û9(•f(i€ü9(–f(i€ý9(—f(i€þ9(˜f(i€ÿ9(™f(i€:r€ pr¢ p( €:r€ pr p( €:r€ prò p( €:r€ pr¡p( €:r€ pr¡p( €:r€ pr*¡p( €:r€ pr\¡p( €:r€ prŠ¡p( €:r€ pr´¡p( € :r€ pr¢p( € :r€ pr:¢p( € :r€ pr„¢p( € :(™h(°(è+€ :(šh(°(è+€:(›h(°€:(œh(°€:(h(°€:(žh(°(è+€:(£h(°(è+€:(Ÿh(°(è+€:( h(°(è+€:(¡h(°(è+€:(¤h(°(è+€:(¢h(°(è+€:(b”(è+€:(d”(è+€:(¨h(è+€:(§h(è+€:(©h(è+€:*~æ=*~ç=*~è=*~é=*~ê=*~ë=*‚(ZiE**rWp*f(ž–o™ (Ösp2 *0H(œ–,*(ž– !%sq2 ¤!%sq2 ¤!*!%sq2 ¤!*0?z uv--uw--rœ¢p*tv- {ÀYo_²*tw- {ÁYoG²*0F{{c: {d: (Áhr‡p( s[j($+¥7 rS@p(p+(` ( *Rs]j{d:þ($+*Òs_j{d:($+(è+m%{I¤m(Z+(Mj*0#}{c: {d: (F+ (r2 (=j*0-~{c: {d: sM (ð ("/ (+(=j*0zss2 ($¥oG+ ,` (t2 (r ,Q(t2 (s (t2 (r (t2 (t  Y/+(¥(¥(l **0®‚þ9¢(y {O;{O;([+ /*1*(y {P; {P; /+ þ /*1*(y {Q;{Q;( /*1*(y {R;{R;/*þ**0šƒ¥gþ9‰{O;{O;([+ /*1*{P; {P;  /+ þ /*1*{Q;{Q;( /*1*{R;{R;/*þ**0Ý„(ønE2i ×E|³ê!X«þ5_*t¡ t¡ (y {à; {à; /* þ*t¢t¢(y {á;{á;/*þ*t£ t£ (y  {â;  {â;   4*  þ*t¤ t¤(y  {ã;{ã;/*þ*t¥t¥(y {ä;{ä;4*þ*t¦t¦(y {å;{å;/*þ*t§t§(y {æ;{æ;4*þ*t¨t¨(y {ç;{ç;  /* þ*t©!t©"(y !{è;#"{è;$#$4*#$þ*tª%tª&(y %{é;&{é;  /* þ*t«'t«((y '{ê;#({ê;$#$4*#$þ*t¬)t¬*(y ){ë;+*{ë;,+,þ,*+,þ,*+,þ,*+,þ(H+*t­-t­.(y -{ì;/.{ì;0/0þ,*/0þ,*/0þ,*/0þ(I+*t®1t®2(y 1{í;32{í;4344*34þ*t¯5t¯6(y 5{î;6{î;( *t°7t°8(y 7{ï;8{ï;(u2 *0z…(ønE)Z‹¼íO€±â`­Þ*t¡ t¡ {à; {à;  /* þ*t¢t¢{á;{á;/*þ*t£t£ {â;  {â;   4*  þ*t¤ t¤  {ã; {ã;/*þ*t¥t¥{ä;{ä;4*þ*t¦t¦{å;{å;/*þ*t§t§{æ;{æ;4*þ*t¨t¨{ç;{ç;/*þ*t© t©! {è;"!{è;#"#4*"#þ*tª$tª%${é;%{é;/*þ*t«&t«'&{ê;"'{ê;#"#4*"#þ*t¬(t¬)({ë;*){ë;+*+þ,**+þ,**+þ,**+þ(H+*t­,t­-,{ì;.-{ì;/./þ,*./þ,*./þ,*./þ(I+*t®0t®10{í;21{í;3234*23þ*t¯4t¯54{î;5{î;( *t°6t°76{ï;7{ï;(u2 *0Õ† (ønE Ff޶Øú"JsœÅîLuzt¡  ¹y7ž{à;bcXXX *t¢  ¹y7ž{á;(J+bcXXX *t£  ¹y7ž {â;bcXXX *t¤ ¹y7ž{ã;(K+bcXXX *t¥ ¹y7ž{ä;(L+bcXXX *t¦ ¹y7ž{å;bcXXX *t§ ¹y7ž{æ;bcXXX *t¨ ¹y7ž{ç;(;+bcXXX *t©  ¹y7ž {è;(M+bcXXX *tª  ¹y7ž {é;(;+bcXXX *t«  ¹y7ž {ê;(M+bcXXX *t¬  ¹y7ž {ë;(N+bcXXX *t­  ¹y7ž {ì;(O+bcXXX *t® ¹y7ž{í;(P+bcXXX *t¯ ¹y7ž{î;, ( +bcXXX *t° ¹y7ž{ï;(Q+bcXXX * * *0d‡(ønE<]~ŸÀá#De†§Èì*t¡ t¡ {à;{à;þ*t¢ t¢ {á; {á;þ*t£t£{â;{â;þ*t¤t¤{ã;{ã;þ*t¥t¥ {ä; {ä;þ*t¦ t¦  {å; {å;þ*t§ t§  {æ; {æ;þ*t¨t¨{ç;{ç;þ*t©t©{è;{è;þ*tªtª{é;{é;þ*t«t«{ê;{ê;þ*t¬t¬{ë;{ë;þ*t­t­{ì;{ì;þ*t®t®{í;{í;þ*t¯t¯{î;{î;(ñ *t°t°{ï;{ï;(v2 *0óˆ  u\,+ u\,+ @Åu[9ƒt[ t[ (y {w= {w=(R+/*1*(y {x= {x=oç²/*1*(y {y= {y=þ(S+*t\ t\ (y  {z=  {z=   þo0³*Y*0؉  u\,+   u\,+ @ªu[,st[ t[ {w= {w=(R+/*1*{x= {x=oç²/*1*{y= {y=þ(S+*t\t\ {z=  {z=   þo0³*Y*0ÈŠ(ª 9 (ª (« (q (« (Þ (3jE (\ +¨ (\ (+¥7rS@p(p+(` s“r($+(\ (ô²*([ (\ (+¥7rS@p(p+(` (ô²*0!‹{c: {d:   ([ (Ðh*0FŒ{g:{t: (ºkEÐå{g:{q: ( k3t {ž:(gr*o³j,(á²+(ß² {g:{q:( k32t{:{›:{œ:  (°+ojoij(Ñh o~j(¨ - (°(=°(A°(ã +(er*t5  {æ:ojm*t6  {ç:(ß²(ß²(°(=°(A°(ã (er*Š(w2 s¡roÔk(T+(U+ox2 *†(y2 s£roÔk(V+(W+oz2 *"sÓr*0 vsãr($¥od + (— + ,*sår($¥(ãk {g:{u:o¸ oÍkŽiY3(- *X+Š0 ÎŽ31sír($¥(ãk {g:{u:o¸ oÍk*oj{g:{l:(1j(Æh ( (ò (åk£m ($¥sY‰($‰( (1j(ák(»+(äk {g:{u:o¸ oÌkX82ÿÿÿ0‡þÐsçr(X+ ({2 -* ({2 ({2 -=(|2 (}2   (×h X þ(Pm*rjps\ z0 G‘Ži2*(Øh , ( (- *X+¹0 ’Ži<”Y(V (Õ YX m Y2!X£m¤mXX3ߣmo—n -X8‚ÿÿÿ(¸  X ofmþ(Pm**0y“(-/ ,o (./ (Ê ,N(./ (Ê (Ê ,)(Ê (-/ (Ê  oÑ XX+¬(-/ X+›(-/ 8‰ÿÿÿ*0¤”(ønE<]~ŸÀá#De¦ç,*t¡ t¡ {à;{à;þ*t¢ t¢ {á; {á;þ*t£t£{â;{â;þ*t¤t¤{ã;{ã;þ*t¥t¥ {ä; {ä;þ*t¦ t¦  {å; {å;þ*t§ t§  {æ; {æ;þ*t¨t¨{ç;{ç;þ*t©t©{è;{è;þ*tªtª{é;{é;þ*t«t«{ê;{ê;þ*t¬t¬{ë;{ë;. þþ+,*þ*t­t­{ì;{ì;. þþ+,*þ*t®t®{í;{í;þ*t¯ t¯! {î;!{î;(ñ *t°"t°#"{ï;#{ï;(v2 *6{U;{Z;*>ssþ(+**þom*0 {U;{b; ,(E *(„s*03•{f= {g= {i= {h= {e=o~2 (:r*0U—{f= {g= {i= {h= {e=(Y+(€2 (2  (:rs‚2 *0U™{f= {g= {i= {h= {e=(Z+(ƒ2 („2  (:rs…2 *F{g=þ([+*j{;{ü:{;{ü:þ*þ*þ*0Iþ,*o‚n,+o‚n,{±;{±;(ñ *on{¬;on{¬;þ*"oÆm*&(n*&(øm*&s`m*&s`m*&s`m*š{q;Œn, {q;(†2 *{p;(‡2 *&s`m*&(Jm*š{n;{o;m%¤m(Z+(Jm*04(òh s`m*>(òhs`m*N{Ñ:{I(øm*N{ß:{I(n*fo¼m{Ñ:{I(øm*&sÁm*&sÁm*&sÁm*š{s;Œl, {s;(ˆ2 *{r;(‰2 *0šs`ms:m sÁm*Vs`ms:msÁm*06›(ûh uß,%tß(ë- {j;{q; {n;(a **0*œ(ïh uˆ,tˆ(p {n;(a **²{;|û:(j(Ói3 (Mn("n*{;*0 J{; (¹hoE {ù:{ú:{û:{ý:{þ:{ÿ:{;sl(l*>s"sþ(ü+*0¼ž{;|û:(j (Ïi (n oÚi, r¬¢ps\ z{;{ÿ: 9m (• ($n3] (• t{{Š;,D(Wn37t…{™;{;{ÿ:,{;(þk+++*rô¢ps\ z0CŸ(Wn38t… {™; {;{ÿ:þþ,{™; (i+¿*0æ ($nE *tz {‰; {;{ÿ: -* (• ,d($n3Wtz{‰;{;{;(a! þ,.{‰;{;{ÿ:,{;(þk+++89ÿÿÿt{{Š;  (i("n*&(i*&(i*&sÁm*&s`m*&s`m*0(¡m(Jm {g:{l: (òhs`m*02œ(ïh uˆ,tˆ(p oÝl(ýh*sÁm*0d¢{e: ŽiY(V (Õ YX m Y2!X£m¤mXX3ß(Jm*:{e:(Jm*0£(ûh uß,**00¤(ïh uˆ,ofm {g:{q:( k3***0¥(ïh uˆ,**º2*£m£m(ñ ,X+Õ*0 ¦Ži Ži 3  (i**08§{o; {n; {o; {n; þ,* (èh,(i**0¨{o; {o; (iþ*N{e:{e:(i*N{o;{e:(i*0©(ïh uÝ9Ø(ïh uÝ,ktÝ(ä- tÝ(ä- {g:{x:{g:{x:,2,*(R" (R"   {e:{e:(i**tÝ(ä- tˆ(p   {n;(èh,4{g:{x:-*(R"  {o;{e:(i**(ïh uÝ,tÝ(ä- tˆ(p  +‘*0šª(ûh uÀ9Y(ûh uÀ9–tÀ(s tÀ(s omom,g,_(#/ {l;(#/ {l; (#/ {m; (#/ {m;  {e:{e:(i,   þ(\+***tÀ(s tß(ë-   {j;{q;  {n;(èh,yom-*(#/ {l;(#/ {m;  {k;{T; {T;(n oÊl," {j;{q;  {o;{e:(i***(ûh uÀ,tÀ(s tß(ë-  8;ÿÿÿ*0È«þ,*{p;Œ ,+ {p;Œ ,+ ,,-{p;{p;þ*{q;Œn,+ {q;Œn,+ ,, (i** ,+í{q;{q;(i,+&{q;{q;(i-ofmofmþ+,®*0:¬{t; {u; {t; {u; þ,*(i, (ñ **0×­þ,*{r;Œi,+ {r;Œi,+ ,,{r;{r;þ,*{s;Œl,+ {s;Œl,+ , ,{r;{r;þ,*oÇmoÇmþ,þ+,o} o} þ+,*, þ(i**0*®{ø: s$s(]+¥7 r¸9p(p+(` *Rs&s{d:þ($+*0R¯oj {c: {d: {g:{l:{g:{u:o¸ {í:sM (ð ("/ (+(=j*0ƒ°(K/ -* (K/ ,l (K/ (K/ (L/ (q (L/ (q (L/ (r (L/ (r (Z+, (^++, 8ÿÿÿ**07±{c: {d: {c: {d:  (_+,(n þos²**Bs(sþ(R+*Vs*s{ø:þ(P+*B{ø:( þ**0²{ø: {ø: s.s(P+þ*0´{ø: s0s (`+(åk*^on{£;(ð (=j*~ò=*J(ò (ó (åk*~ó=*0²{ø: {ø: (a+(åk*0þùsŠ2 *b(é+s2s(b+sxk*b(ò+s4s(ÿ +spk*N(.is}/ s}k*b(.is}/ s}k(k*0 Uµ{I {I {I (¹hoE (Ñ sÿi ($‰sl(l*0 0(Ïi(áisY‰(i‰(w‰(Ži( (2i*0 (/irR9ps‰k*Rs$ s+ sÈk*0 ¶(% (i s$ s+ sÈk*0›·(¹hoE (Ïi {I  {I( ks6s(c+(/j(6i(»+(k (z s8sse sj  rR9psš, sájsgj*0rR9p  sŸk*0|¹(¹hoE    sj ( (k(¸k ( k rR9psY‰s:s(c+sš, sájsgj*0Œº{^(…»þ,*uw-þ-ox²oG²rùEp(ñ ++ ()i()i(Ïi($‰(9i {g:(k(Ûj{g:{s:(k*0Í ¹y7žt¸(Rs(¿+bcXXX ¹y7žt¸(Qs , ( +bcXXX ¹y7žt¸(Ps , ( +bcXXX ¹y7žt¸(Os(¿+bcXXX ¹y7žt¸(Ns , ( +bcXXX ¹y7žt¸(Ms , ( +bcXXX ¹y7žt¸(Ls , ( +bcXXX *>(äk*0q»(¹hoE    sµi , (d (ñ - (d +   rR9ps0msÒl*Î(ð (=j( ()isY‰($‰( (»+(äk*0˜¼(¹hoE {g: {h:{i:{j:{l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{{:sájo‹2 sgj*:scs(?i*0€¾{U; (¹hoE {V;{W;{X;{Y;{Z;{\;{];{^;{_;{`;{a;{b;{c;{d;{e;s0moŒ2 sÒl*6ses(@i*6sgs(?i*Žs2 sŽ2 (d+(e+þ(e+*Žs2 s2 (f+(g+þ(g+*0èÀ{í: {í: (3j@(3j3S{í: susoÙkoÙk(h+ {ì:{ì:¥o‘2  ( +s+ sÈk*¥7rS@p(p+(` (@sû£(¤(i+*(3j3+Â¥7rS@p(p+(` (Asû£(¤(i+*00Á(S" , sws(¨( (S" þ(j+*r:£ps\ z0§Âo†j o†j ,Q,s{s(?i*{g:{l:¥7 rS@p (p+(` (Conjsû£ (¤(œ +*,+¼{g:{l:¥7 rS@p (p+(` (Bonjsû£ (¤(œ +*01Ã(’2 , s}s(“2 (’2 þ(k+*r^£ps\ zr¾Áp*r–Áp*(”2 *ª(¸h(¸h(•2 !X(–2 (¸h(•2 *(”2 *ª(ºh(ºh(•2 !X(–2 (ºh(•2 *¶sQi€ :sQi€!:sQi€":sQi€#:*:( }:*~ :**(Ziþ*~!:**(Ziþ*~":**(Ziþ*~#:**(Ziþ*{:*Zr.8ps—2 (l+o˜2 *01.þ, þ,{: {: 3*Y**þ,**:¥ío\i*0BÄ¥í þ,%¥íþ,{: {: 3*Y**¥íþ,**06þ,- (ZiE  * * * **6(n o_i*0.Äþ,uí ,{: {: þ**þþ*0*.þ,þ,{: {: þ**þþ*0Åuí ,obi**.svi€(:*( *sti**uñþ*~(:**uòþ*0Æ uò,+*Zr.8ps™2 (m+oš2 *0„Çþ9pþ,huò,+ uò,+ 3>uñ,4tñ tñ (y {+: {+:/*þ**Y**þ,**:¥ïoli*0È¥ï þ9p¥ïþ,cuò,+ uò,+ 39uñ,/tñ tñ {+:{+:/*þ**Y**¥ïþ,**07Éþ,. uñ, tñ  ¹y7ž{+:bcXXX * **6(n ooi*0lÊþ,]uï ,Quò,+ uò,+ 3)uñ,tñ tñ {+:{+:þ****þþ*0fËþ,Wþ,Ouò,+ uò,+ 3'uñ,tñ tñ {+: {+:þ****þþ*0Æuï ,ori**:(ei}+:*{+:*(ei*:( },:*2{,:{+:*:( }-:*^s{i€/:s{i€0:*:( }.:*~/:**(€iþ*~0:**(€iþ*{.:*Zr.8ps›2 (n+oœ2 *01.þ, þ,{.: {.: 3*Y**þ,**:¥õo‚i*0BÍ¥õ þ,%¥õþ,{.: {.: 3*Y**¥õþ,**0þ, (€i3 * **6(n o…i*0.Íþ,uõ ,{.: {.: þ**þþ*0*.þ,þ,{.: {.: þ**þþ*0Îuõ ,oˆi**^s‹i€4:s‹i€5:*:( }3:*~4:**(iþ*~5:**(iþ*{3:*Zr.8ps2 (o+ož2 *01.þ, þ,{3: {3: 3*Y**þ,**:¥÷o’i*0BÏ¥÷ þ,%¥÷þ,{3: {3: 3*Y**¥÷þ,**0þ, (i3 * **6(n o•i*0.Ïþ,u÷ ,{3: {3: þ**þþ*0*.þ,þ,{3: {3: þ**þþ*0Ðu÷ ,o˜i**¶s›i€9:s›i€::s›i€;:s›i€<:*:( }8:*~9:**(¤iþ*~::**(¤iþ*~;:**(¤iþ*~<:**(¤iþ*{8:*Zr.8psŸ2 (p+o 2 *01.þ, þ,{8: {8: 3*Y**þ,**:¥ùo¦i*0BÑ¥ù þ,%¥ùþ,{8: {8: 3*Y**¥ùþ,**06þ,- (¤iE  * * * **6(n o©i*0.Ñþ,uù ,{8: {8: þ**þþ*0*.þ,þ,{8: {8: þ**þþ*0Êuù ,o¬i**0#Ò (y {A: {A:  /* þ*:¥û(®i*0$Ó¥û  {A: {A:  /* þ*0  ¹y7ž{A:(;+bcXXX *6(n (±i*0$Ô(q+-*¥û  {A:{A:þ*&}A:*0³Õ(¤iE $!+"!+!+ !, !+ !`(ZiE $!+"!+! + !0`(€i3 !@+ !`, !€+ !`, !+ !`, !+ !` , !+ !`uñ,'tñ {+:, !+!+ !` , !@+ !` , !+ !`(´i*0\õ{A:!_ -(ži*!3(œi*!3( i*!3(¢i*rWps\ z‚{A:!_!þþ*Æ{A:!÷ÿÿÿÿÿÿÿ_, !+ !`s´i*0\õ{A:!0_ -(Ri*!3(Ti*! 3(Vi*!03(Xi*rWps\ z08õ{A:!@_ -(|i*!@3(~i*rWps\ z00õ{A:!€_ -*!€3*rWps\ z^{A:!€`s´i*‚{A:!_!þþ*‚{A:!_!þþ*‚{A:!_!þþ*0Lõ{A:!_ -(hi*!3(fi*!3(fi*rWps\ z0QÕ{A:!ÿçÿÿÿÿÿÿ_uñ,'tñ {+:, !+!+ !`s´i*‚{A:! _!þþ*^{A:! `s´i*‚{A:!@_!þþ*‚{A:!€_!þþ*^{A:!€`s´i*‚{A:!_!þþ*^{A:!`s´i*‚{A:!_!þþ*J{A:!ÿgþÿÿÿÿÿ_*0Ö {A:{A:þ*0&×(q+-*¥û   {A:{A:þ*^sÎi€C:sÎi€D:*:( }B:*~C:**(Óiþ*~D:**(Óiþ*{B:*Zr.8ps¡2 (r+o¢2 *01.þ, þ,{B: {B: 3*Y**þ,**:¥üoÕi*0BØ¥ü þ,%¥üþ,{B: {B: 3*Y**¥üþ,**0þ, (Ói3 * **6(n oØi*0.Øþ,uü ,{B: {B: þ**þþ*^(Ói3 rªCp(c **Z(Ói3r±Wp*rŠp*0*.þ,þ,{B: {B: þ**þþ*0Ùuü ,oÝi**âsài€H:sài€I:sài€J:sài€K:sài€L:*:( }G:*~H:**(ëiþ*~I:**(ëiþ*~J:**(ëiþ*~K:**(ëiþ*~L:**(ëiþ*{G:*Zr.8ps£2 (s+o¤2 *01.þ, þ,{G: {G: 3*Y**þ,**:¥þoíi*0BÚ¥þ þ,%¥þþ,{G: {G: 3*Y**¥þþ,**0>þ,5 (ëiE  * * * * **6(n oði*0.Úþ,uþ ,{G: {G: þ**þþ*.(ëiþ*’(ëiE**.(ëiþ*0*.þ,þ,{G: {G: þ**þþ*0uuþ ,oöi**0#Ü (y {R: {R:  /* þ*:¥(øi*0$Þ¥  {R: {R:  /* þ*0 ¹y7ž{R:bcXXX *6(n (ûi*0$ß(t+-*¥  {R:{R:þ*&}R:*0­,+,+`(m‰3+`(ëiE + +@+ `+ €`(Ói3 +`, +`(i3 +`, +`(þi*B{R:_þþ*B{R:_þþ*07{R:_ EYE rWps\ z(k‰*(i‰*0x{R: à_ EZ YEG@YE4`YE! €YE rWps\ z(éi*(çi*(åi*(ãi*(ái*0?{R: _ E! YE rWps\ z(Ñi*(Ïi*R{R: _þþ*0?{R: _ E! YE rWps\ z(Ži*(Œi*R{R: _þþ*"{R:*0à {R:{R:þ*0&á(t+-*¥   {R:{R:þ*0#â (y {S: {S:  /* þ*:¥( j*0$㥠 {S: {S:  /* þ*0  ¹y7ž{S:(;+bcXXX *6(n (j*0$ä(u+-*¥  {S:{S:þ*&}S:*0p, !+ !, !+ !`, !+ !`, !+ !`(j*‚{S:!_!þþ*‚{S:!_!þþ*‚{S:!_!þþ*‚{S:!_!þþ*.!*J{S:!ûÿÿÿÿÿÿÿ_*0å {S:{S:þ*0&æ(u+-*¥   {S:{S:þ*’(Ÿ }T:}U:}V:}W:*(Ÿ *0 (  *0 (¡ *{T:*{U:*{V:*{W:*’(Ÿ }X:}Y:}Z:}[:*(Ÿ *0 (  *0 (¡ *{X:*{Y:*{Z:*{[:*Šs,j€]:s,j€^:s,j€_:*:( }\:*~]:**(3jþ*~^:**(3jþ*~_:**(3jþ*{\:*Zr.8ps¥2 (v+o¦2 *01.þ, þ,{\: {\: 3*Y**þ,**:¥o5j*0Bç¥ þ,%¥þ,{\: {\: 3*Y**¥þ,**0.þ,% (3jE * * **6(n o8j*0.çþ,u ,{\: {\: þ**þþ*0*.þ,þ,{\: {\: þ**þþ*0èu ,o;j**"s>j*V( }c:}d:*{c:*{d:*&*Zr.8ps§2 (w+o¨2 *0oéþ,^þ,V&  (y {c:{c: op² /*1*(y {d:{d: þo©2 **þ,**:¥oCj*0tê¥ þ,W¥þ,J&  {c:{c:op² / * 1 *{d:{d:þo©2 **¥þ,**0Iëþ,@ &  ¹y7ž{d:oª2 bcXXX ¹y7ž{c:oq²bcXXX **6(n oFj*0Zìþ,Ku ,?&  {c: {c: os²,{d:{d:þo«2 ***þþ*"{c:*"{d:*0Fíþ,7þ,/&  {c:{c:(u+,{d:{d:þ(x+***þþ*0Du , þoKj**sNj*:( }e:*{e:*&*Zr.8ps¬2 (y+o­2 *08îþ,'þ,&  (y {e:{e:þ(z+**þ,**B¥þoRj*0Eï¥ þ,(¥þ,&  {e:{e:þ(z+**¥þ,**0.ðþ,% &  ¹y7ž{e:(û+bcXXX **6(n oUj*06ïþ,'u ,&  {e:{e:þ(ù+**þþ*0Zñ{e: ŽiY(V (Õ YX m Y2!X£m¤mXX3ß*01îþ,"þ,&  {e:{e:þ(ÿ+**þþ*0òu , þoYj**(Ý *"(Þ *(Ý *"(Þ *(Ý *"(Þ *(U **:(®2 }¯2 *0+- {¯2 o°2 saj($¥oÙ+þo'‡*{g:*"}g:*:( }g:*6{g:{l:*0#@{g:{m: ,(d *{g:{l:**omj**omj**omj*0Fô{g:{l: o‹j9º(²– (±2 (²2 , Žiþ+9r@-p( Œ@!,+ r¨9ps‚ z Žim Y 2$  £ê(š ¤m X  X3Ü¥7r:p(p+(` ( r6Úp( **o~j  (¨ -*(ž– ,  o† þ+,Dr@-p(  o† rfÁp(»+¥7r:p(p+(` ( r6Úp( **0Mõoxj ( k30t { : {¬:({+ - {g:{n:* ($ *{g:{n:*6{g:{k:*6{g:{p:*0M÷oxj ( k30t { : {¬: sr ($¥o|+(‰*{g:{v:*6{g:{w:*:{g:(àj*J{g:{u:o¸ *6{g:{s:*6{g:{i:*0Ö {g:{l: onj sY‰*6{g:{q:*6{g:{t:*b{g:{t:(ºkþþ*b(3j3 rtp( Â**08{g:{l: {g:{u:o¸ oÉk(3j3 rtp( Â**N{g:{h:oc *0Monj {g:{h:oc *6{g:{r:*B{g:{r:þ*6{g:{o:*6{g:{{:*6{g:{x:*6{g:{y:*0,å{g:|j: {S:!_!þþ*0,å{g:|j: {S:!_!þþ*¦o†j,{g:{u:o¸ oÉk(3jþ**²o†j,"{g:{u:o¸ oÉk(3jþþ**0@{g:{q:( kE ***V{g:{q:( kþ*0+ø{g:{q: ( k3t { :{µ:**0+ø{g:{q: ( k3t { :oUk**Jo©j,*o‹j*6{g:{z:*0?ù{g:{z: -({g:{l:(>onjsû£ (¤(}+*(0 *0‘ú{g:{q: ( kE @2{g:{t: (ºk3 t7{è:*2(~+spk*t{™: *t {˜:{Å: +é6oj{Æ:*Roj{Æ:þ(ñ+*Rsƒro’jþ(_+*Rs…ro’jþ(_+*Rs‡ro’jþ(_+*:ojoqk*:ojork*V{g:{q:( kþ*0+û{g:{q: ( k3t {š:(³2 **0'üo™j -1* (v {Ê:{È:*>ošjþ(è+*0*üo™j -* (v {Ê:{É:þ(+*"sgj*"sgj*&(fj*J{g:Œ,**6{g:{l:*0-ý{g:{q: ( k3 t{˜:*r £ps\ zV{g:{q:( kþ*0@þ{g:{q: ( k3t {›:{œ:{:s´2 *rî£ps\ z6o¤j(| *V{g:{q:( kþ*V{g:{q:( kþ*V{g:{q:( kþ*V{g:{q:( kþ*0(ÿ{g:{r: {g:{q: - ( kþ**¶{g:{q:( kþ,o¢j{Ã:(ckþ**¶{g:{q:( kþ,o¢j{Ã:(ckþ**¶{g:{q:( kþ,o¢j{Ã:(ckþ**¶{g:{q:( kþ,o¢j{Ã:(ckþ**04p{g:{q:( kþ,o¤j(| {^(…»þ**0bø{g:{q: ( kE $o¯j,*o­j*t { :{²:**0F{g:{q:( kþ,.o¢j{Ã:(ckE***0O{g:{q:( kþ,7o¤j(| {^(…»E***0bø{g:{q: ( kE $o²j,*o±j*t { :{±:**J{g:{s:{‰:*zs‰r{g:{s:{‰:þ(õ +*Žs‹r{g:{s:{ˆ:(€+þ( +*J{g:{s:{ˆ:*J{g:{s:{…:*J{g:{s:{ƒ:*J{g:{s:{‚:*J{g:{s:{„:*0@ þïþ“þïþòsrþ(r +*0î {g:{q: ( k3&t { :{µ:,{ : r$¤ps\ z( k3\t { : oUk, {¶:+,9 { : {¬:onj(v†o³j,(á²+(ß²(er*( k3 rŒ¤ps\ z{g:{{:{µ2 ŒY,{µ2 *(Òh(¶2 *01 o½j u\,omj(? s·2 zt[{w=*0,å{g:|j: {S:!_!þþ*0,å{g:|j: {S:!_!þþ*:{g:(Új*{h:*{i:*{j:*{k:*{l:*{m:*{n:*{o:*{p:*{q:*{r:*{s:*{t:*{u:*{v:*{w:*{x:*{y:*{z:*{{:*"}h:*"}i:*"}j:*"}m:*"}p:*"}q:*"}r:*"}s:*"}t:*"}u:*"}w:*0¤( }h:}i:}j:}k:}l:}m:}n:}o: }p: }q: }r: }s: }t:}u:}v:}w:}x:}y:}z:}{:*.sìj€|:*( *sêj**uþ*~|:**uþ*0  u,+*Zr.8ps¸2 (+o¹2 *:(ãj}:*{:*(ãj*:( }€:*2{€:{:*:( }:*{‚:*{ƒ:*{„:*{…:*{†:*{‡:*{ˆ:*{‰:*{Š:*{‹:*{Œ:*"}‚:*"}ƒ:*"}„:*"}…:*"}†:*"}ˆ:*"}‰:*"}Š:*"}‹:*"}Œ:*0\( }‚:}ƒ:}„:}…:}†:}‡:}ˆ:}‰: }Š: }‹: }Œ:*:(9 (ûj*:(ð (üj*:(9 (ýj*:(> (þj*&(ÿj*0 " (‚+  sº2 (¢( sk*2s k€Ž:*:( }:*s"k**( kþ*s$k**( kþ*s&k**( kþ*&s(k**( kþ*s,k**( kþ*s.k**( kþ*s0k**( kþ*"s2k**( kþ*~Ž:**( kþ*{:*Zr.8ps»2 (ƒ+o¼2 *>( k}˜:*{˜:*>( k}™:*{™:*>( k}š:*{š:*v( k}›:}œ:}:*{›:*{œ:*{:*>( k}ž:*{ž:*>( k}Ÿ:*{Ÿ:*>( k} :*{ :*Z( k}¡:}¢:*{¡:*{¢:*:( }£:*2{£:{˜:*:( }¤:*2{¤:{™:*:( }¥:*2{¥:{š:*:( }¦:*2{¦:{›:*2{¦:{œ:*2{¦:{:*:( }§:*2{§:{ž:*:( }¨:*2{¨:{Ÿ:*:( }©:*2{©:{ :*:( }ª:*2{ª:{¡:*2{ª:{¢:*{«:*{¬:*{­:*{®:*{¯:*{°:*{±:*{²:*{³:*{´:*{µ:*{¶:*0d( }«:}¬:}­:}®:}¯:}°:}±:}²: }³: }´: }µ: }¶:*.{µ:þ*ž{µ:,{­:s~/ o/ *rð¤ps\ z¶sXk€¸:sXk€¹:sXk€º:sXk€»:*:( }·:*~¸:**(ckþ*~¹:**(ckþ*~º:**(ckþ*sfk**(ckþ*~»:**(ckþ*{·:*Zr.8ps½2 („+o¾2 *’(ckE**>(Xk}Á:*{Á:*:( }Â:*2{Â:{Á:*{Ã:*{Ä:*{Å:*r( }Ã:}Ä:}Å:*{Æ:*{Ç:*V( }Æ:}Ç:*¾2{Æ:Žiþ+, {Æ:£2*r¥ps\ zB{Ç:þoÃ" *>{Æ:þ(ñ+*Rs•roskþ(_+*Rs—roskþ(_+*{È:*{É:*V( }È:}É:*Ò2{È:Žiþ+, {È:£1*r0¥pr¡cps z>{È:þ(è+*{Ê:*{Ë:*V( }Ê:}Ë:*R{Ê:{È:þ(è+*{Ì:*{Í:*{Î:*{Ï:*{Ð:*{Ñ:*{Ò:*{Ó:*"}Ð:*"}Ó:*0D( }Ì:}Í:}Î:}Ï:}Ð:}Ñ:}Ò:}Ó:*6{Ñ:{I*6{Ñ:{I*6{Ì:{Æ:*R{Ì:{Æ:þ(ñ+*0 {Ì: {Ç:þoÃ" *J{Ì:{Æ:Žiþ*{Ô:*{Õ:*{Ö:*{×:*{Ø:*{Ù:*{Ú:*{Û:*{Ü:*{Ý:*{Þ:*{ß:*"}Ö:*"}Ý:*"}Þ:*0d( }Ô:}Õ:}Ö:}×:}Ø:}Ù:}Ú:}Û: }Ü: }Ý: }Þ: }ß:*"{Ü:*"{Ý:*"{Þ:*6{ß:{I*"{ß:*6{ß:{I*"{Ú:*"{Ô:*"{Ø:*"{Ù:*"{×:*"{Õ:*"{Ö:*&(œk*0. {Û: ,! (œ (øn3*(œ (e **0@{Û: , (œ (ønþ**2s±k€á:*:( }à:*s¼k**(ºkþ*s¾k**(ºkþ*sÀk**(ºkþ*~á:**(ºkþ*{à:*Zr.8psÀ2 (…+oÁ2 *>(±k}æ:*{æ:*>(±k}ç:*{ç:*>(±k}è:*{è:*:( }é:*2{é:{æ:*:( }ê:*2{ê:{ç:*:( }ë:*2{ë:{è:*0‹o &}í:}ì:}î:sÂ2 }ï:sÃ2 }ð:sÃ2 }ñ:sÄ2 }ò:sÅ2 }ó:sÃ2 }ô:sÃ2 }õ:sÆ2 }ö:sÇ2 }÷:*"{í:*"{ì:*"{î:*²{î:oÈ2 }î:{ð:(É2 {õ:(É2 *0D{î:oÈ2 }î:{ô:(É2 {ò:(Ê2 {ó:(Ë2 {õ:(É2 *~{í:{ì:{î:oÈ2 sÈk*~{í:{ì:oÌ2 {î:sÈk*"{ï:*0  {î: s™r¥»(†+þ( +*0  {î: s›r¥»(†+þ( +*0  {î: sr¥»(†+þ( +*0  {î: sŸr¥»(†+þ( +*00 {ò: (Í2 -(Óh (Î2 (Ê2 *(Ï2 *0/ {ó: (Ð2 -(Ôh (Ñ2 (Ë2 *(Ò2 *0? s¥r {ô: (Ó2 - oÔk(‡+(ˆ+  (Ô2 (É2 *(Õ2 *0Y s§r {õ: (Ó2 -:{î:(‡+{ø où (ˆ+(ˆ+  (Ô2 (É2 *(Õ2 *00 s©r {î: (‡+ {ø où (ˆ+þ(ˆ+*0Y s«r {ö: (Ö2 -:{ì:(‰+{ú oû (Š+(Š+  (×2 (Ø2 *(Ù2 *0# s­roÚk oÎl(*+þ(+*0Y s¯r {÷: (Ú2 -:{ì:(‹+{ú oû (Œ+(Œ+  (Û2 (Ü2 *(Ý2 *00! s±r {ì: (+ {ú oû (Ž+þ(Ž+*0? s³r {ñ: (Ó2 - oÒk(‡+(ˆ+  (Ô2 (É2 *(Õ2 *0Y sµr {ð: (Ó2 -:{î:(‡+{ø où (ˆ+(ˆ+  (Ô2 (É2 *(Õ2 *Rs$ s+ sÈk*0 ¶(% (i s$ s+ sÈk*0¥$ s·ro¸+ s»r s½r Œç  s€/ sÁrsÅrsÇro¸+sÉro¸+sËro¸+sÍro¸+ sÏro¸+ sTk(k*0L' (¹hoE sÑrof + sY‰ sÕro+s×r($¥o+,(Ñi+(Ïi - (ò (åk+(ß2 , (0 +&oà2 (s† sÙr (º+(=j(Äh (âk  sj ( (¸k(z sÛrse   (ò (åk ( ksÝr(o+m(‰rR9p (á2 ( sš, sájsgj*0•( (¹hoE {I  {I (Ïisj(k(¸k( k sßr(c+ (z sárse   rR9p sš, sájsgj*sæk*:( }ø:*{ø:*&*Zr.8psâ2 (‘+oã2 *0@) þ,/þ,'&  (y {ø: {ø: þoä2 **þ,**:¥=oêk*0K* ¥= þ,.¥=þ,!&  {ø: {ø: þoä2 **¥=þ,**0.+ þ,% &  ¹y7ž{ø:oå2 bcXXX **6(n oík*0<* þ,-u= ,!&  {ø: {ø: þoä) **þþ*01, þ,"þ,&  {ø:{ø:þ(’+**þþ*0åu= , þoðk**{ù:*{ú:*{û:*{ü:*{ý:*{þ:*{ÿ:*{;*"}ù:*"}ú:*"}û:*"}þ:*"}ÿ:*"};*0D( }ù:}ú:}û:}ü:}ý:}þ:}ÿ:};*{;*{;*"};*"};*V( };};*J{;{ù:{I*J{;{ù:{I*6{;{ù:*6{;{ü:*6{;{ÿ:*6{;{;*0à{;|û: {R:_þþ*J{;|û:(j*J{;|û:(j*0 à{;|û: {R: _þþ*0 à{;|û: {R: _þþ*J{;|û:(j*0à{;|û: {R:_þþ*J{;|û:(j*v{;|û:(j(Óiþþ*6{;{þ:*0‚Ø{;{ù:{IrWp(ñ ,TrWp{;{ü: ŒÁ ,-u¼ , (x ¥|o¡ +o& +rR9p( *{;{ù:{I*:{;(ÿk*0- sl ( n(l*0- sl ( n(l*&(l*J{;Œ>,**N{;{ÿ:þþ*:{;(úk*0 }. {; {û: (j {R:_þþ {R:_þþ(j(j {R: _þþ {R: _þþsÿi(ük*0 s. {; {û: (j(j {R:_þþ(j(j {R: _þþ {R: _þþsÿi(ük*0 }. {; {û: (j(j {R:_þþ {R:_þþ(j {R: _þþ {R: _þþsÿi(ük*0 }. {; {û: (j(j {R:_þþ {R:_þþ(j {R: _þþ {R: _þþsÿi(ük*0 o. {; {û: (j(j {R:_þþ {R:_þþ(j(j {R: _þþsÿi(ük*0 o. {; {û: (j(j {R:_þþ {R:_þþ(j(j {R: _þþsÿi(ük*J{;{ù:{I*:( };*"sBl**(@lþ*&sEl**(@lþ*sIl**(@lþ*"sKl**(@lþ*sNl**(@lþ*sPl**(@lþ*"sRl**(@lþ*sUl**(@lþ*"sWl**(@lþ*sZl*.(@l þ*s\l*.(@l þ*&s^l*.(@l þ*sbl*.(@l þ*{;*Zr.8psæ2 (“+oç2 *Z(%l};};*{;*{;*v(%l};};};*{;*{;*{;*>(%l};*{;*Z(%l};};*{;*{;*>(%l};*{;*>(%l};*{;*Z(%l};};*{;*{;*>(%l};*{;*Z(%l};};*{;*{;*B (%l} ;*{ ;*B (%l}!;*{!;*z (%l}";}#;}$;*{";*{#;*{$;*B (%l}%;*{%;*:( }&;*2{&;{;*2{&;{;*:( }';*2{';{;*2{';{;*2{';{;*:( }(;*2{(;{;*:( });*2{);{;*2{);{;*:( }*;*2{*;{;*:( }+;*2{+;{;*:( },;*2{,;{;*2{,;{;*:( }-;*2{-;{;*:( }.;*2{.;{;*2{.;{;*:( }/;*2{/;{ ;*:( }0;*2{0;{!;*:( }1;*2{1;{";*2{1;{#;*2{1;{$;*:( }2;*2{2;{%;*:s‡l*Ò( }3;}4;}5;}6;}7;}8;*{3;*{4;*{5;*{6;*{7;*{8;*&*Zr.8psè2 (”+oé2 *"{4;*"{7;*6{8;(z! *:{8;(ð# *2s•l€:;*:( }9;*&s¢l**( lþ*&s¦l**( lþ**sªl**( lþ*s¯l**( lþ*~:;**( lþ*{9;*Zr.8psê2 (•+oë2 *v(•l}@;}A;}B;*{@;*{A;*{B;*v(•l}C;}D;}E;*{C;*{D;*{E;*–(•l}F;}G;}H;}I;*{F;*{G;*{H;*{I;*>(•l}J;*{J;*:( }K;*2{K;{@;*2{K;{A;*2{K;{B;*:( }L;*2{L;{C;*2{L;{D;*2{L;{E;*:( }M;*2{M;{F;*2{M;{G;*2{M;{H;*2{M;{I;*:( }N;*2{N;{J;*{O;*{P;*{Q;*{R;*’( }O;}P;}Q;}R;*jþ, (Èh*þ,**:¥goÅl*0(/ ¥g þ, (Éh*¥gþ,**0vÍþ,m ¹y7ž{R;bcXXX ¹y7ž{Q; , ( +bcXXX ¹y7ž{P;bcXXX ¹y7ž{O;(¾+bcXXX **6(n oÈl*0e/ þ,Vug ,J{O;{O;(Á+,4{P;{P;3${Q;{Q;(ñ ,{R;{R;þ*****þþ*0`þ,Qþ,I{O;{O;(\+,4{P;{P;3${Q;{Q;(ñ ,{R;{R;þ*****þþ*0/ ug ,oËl**bo &}T;}S;*"{T;*"{S;*{U;*"}U;*:( }U;*6{U;{X;*6{U;{[;*6{U;{Z;*6{U;{_;*6{U;{Y;*6{U;{];*6{U;{b;*0Ö om {U;{X; sY‰*B{U;{b;þ*0Tom oâl,oýlolm(c +oéloâl,{U;{b;oE oÃo+sÄl*ªoÜloâl,{U;{Z;( +sÍl*J{U;|\;(»i*0,Ö{U;|\; {A:!_!þþ*6{U;{^;*6{U;{`;*B{U;{`;þ*z{U;{`;þ, oßlþ**¢{U;|\;(»i,{U;{`;þþ**Joßl,*oäl*¾{U;{`;þ,{U;{`;o³ {i;{=L**0S0 {U;{`; ,A (³ oßl-#{i;{AL ( (n o*+, (³ **0S0 {U;{`; ,A (³ oßl-#{i;{AL ( (n o*+, (³ **01¾{U;{`; , (³ {i;{?L, (³ **j{U;|\;(ºi(€iþ*0,Ö{U;|\; {A:! _!þþ*0,Ö{U;|\; {A:!€_!þþ*0,Ö{U;|\; {A:!_!þþ*0,Ö{U;|\; {A:!@_!þþ*06Öoöl,+{U;|\; {A:!_!þþ**06Öoçl,+{U;|\; {A:!_!þþ**J{U;|\;(Ài*J{U;|\;(¶i*0,Ö{U;|\; {A:!_!þþ*J{U;|\;(¹i*^{U;|\;(¹i(½h*0,Ö{U;|\; {A:!_!þþ*6{U;{a;*6{U;{d;*6{U;{e;*:{U;(/m*6{U;{c;*0C1 {U;{c; u,"rX¥p{U;{X;s¤ (¤( +*t{:*0@2 {U;{`; -"r®¥p{U;{X;s¤ (¤( +* (³ {f;*0,¾{U;{`; -* (³ {i;{=L,**01¾{U;{`; - {U;{c;* (³ {f;(äj*0P3 {U;{c; u,*t {: o„m , (R" oÝl(?m(ì2 **0'¾{U;{`; , (³ {i;{>L**0;q{U;{Z; ($n3tu {€;{;sz *(z sz *0$O{U;{Z; ($n3 tu{;**0(O{U;{Z; ($n3 tu{€;*(z *0P4 {U;{`; ,4 (³ {g; (Ö , (Æ' oðq*{U;{V;*{U;{V;*0˜5 {U;{W; - om+(d {U;{b;þ,{U;{`;þþ+,"oöl,+{U;|\;(»iþ+,$(¼h{U;{X;{U;{[;þo$”**6om(¡–*0d¾{U;{`; - þom* (³ {i;{AL(&E þom*om(¡–*6om(¢–*z{U;{U;|\;(Ái()m*0.Ö{U;{U;|\; {A:!€`s´i()m*0.Ö{U;{U;|\; {A:! `s´i()m*0.Ö{U;{U;|\; {A:!€`s´i()m*0.Ö{U;{U;|\; {A:!`s´i()m*:{U;(-m*:{U;((m*:{U;('m*"sÒl*"sÒl*&(Ñl*J{U;Œj,***þom*{V;*{W;*{X;*{Y;*{Z;*{[;*{\;*{];*{^;*{_;*{`;*{a;*{b;*{c;*{d;*{e;*"}Y;*"}Z;*"}\;*"}];*"}^;*"}a;*"}b;*"}c;*"}e;*0„( }V;}W;}X;}Y;}Z;}[;}\;}]; }^; }_; }`; }a; }b;}c;}d;}e;*{f;*{g;*{h;*{i;*"}g;*"}h;*’( }f;}g;}h;}i;*{j;*{k;*V( }j;}k;*J{j;{q;oSm*R{j;{q;þoXm**þo& *Æ{j;{q;o& rKp( {k;{T;{Q;( *"s@m*V( }l;}m;*{l;*{m;*&*Zr.8psí2 (–+oî2 *0I7 þ,@ &  ¹y7ž{m;(—+bcXXX ¹y7ž{l;oUjbcXXX **6(n oEm*0R8 þ,Cum ,7&  {l; {l; oWj,{m;{m;þ(˜+***þþ*0F9 þ,7þ,/&  {l;{l;oYj,{m;{m;þ(™+***þþ*0: um , þoHm**"sKm*V( }n;}o;*{n;*{o;*&*Zr.8psï2 (š+oð2 *0Vp Ži2(- *{g:{u:o¸ oØk£mo - (Qm* ( X+ª0 ©; {g:{q: ( kE 2*t { : {«: {¬: (Öh*t{¢:{¡:      (Ùh*0;< {o; {n; oƒnon(Pm - þ(Úh**"{n;*"{o;*0ÿ{o;¥7 rS@p(p+(` *0ö{o; ŽiY£m*0Zñ{o; ŽiY(V (Õ YX m Y2!X£m¤mXX3ß*6{n;o†n*0[= oRm -Isïr{o;¥7 rS@p(p+(` {n;o†nrØ¥ps#j (¤(¥sZ z( *RsñroRmþ(›+*0ooYm {g:{u:o¸ *0ÿ{o;¥7 rS@p(p+(` *{p;*{q;*"}p;*V( }p;}q;*J{q;Œn,**J{p;Œ ,**"{p;*"{p;*0 ‘{q;oRm -* ( (_m*0…> {p;Œ ,{p;*oem{p;Œ ,{p;*sór{q;oWm¥7 rS@p(p+(` {q; {n;o†n{q;oVms#j (¤(œ +*ò{p;Œ , {p;(- *oem{p;Œ , {p;(- **.ogmþ*0H? {q;Œn,+,{p;omj*{q; {o;¥7 rS@p(p+(` *6ofmo½j*6ofmo¾j*0oofm {g:{l:*6ofmoij*>ofmomj*>ofmomj*>ofmomj*6ofmonj*0oofm {g:{k:*0oofm {g:{p:*6ofmoqj*0oofm {g:{w:*0oofm {g:{u:o¸ *6ofmo|j*0oofm {g:{s:*0oofm {g:{i:*6ofmowj*0oofm {g:{q:*0oofm {g:{t:*0oofm {g:{t:(ºkþþ*0oofm {g:{h:oc *6ofmo~j*0oofm {g:{r:*0oofm {g:{r:þ*0oofm {g:{o:*0oofm {g:{{:*0oofm {g:{x:*0oofm {g:{y:*6ofmo…j*6ofmo†j*6ofmo‡j*6ofmoˆj*0oofm {g:{z:*6ofmo‰j*0oofm {g:{q:( kþ*6ofmo‹j*>ofmþoŒj*6ofmoj*6ofmoj*0oofm oj{Æ:*6ofmo’j*6ofmo”j*6ofmo•j*6ofmo“j*0oofm ojoqk*0@ ofm oj {Ç:þoÃ" *6ofmo™j*6ofmošj*6ofmo›j*:ofmoœj*6ofmo¢j*0oofm {g:{s:{‰:*6ofmoµj*6ofmo¶j*0oofm {g:{s:{ˆ:*6ofmo³j*0oofm {g:{q:( kþ*0oofm {g:{q:( kþ*0'oofm {g:{q:( kþ,*o‹j*0oofm {g:{s:{…:*0oofm {g:{s:{ƒ:*0oofm {g:{s:{‚:*0oofm {g:{s:{„:*0oofm {g:{q:( kþ*6ofmo¤j*0oofm o¤j(| *0oofm {g:{q:( kþ*0oofm {g:{q:( kþ*0oofm {g:{q:( kþ*6ofmoªj*6ofmo«j*6ofmo¬j*6ofmo­j*6ofmo¯j*6ofmo°j*6ofmo±j*6ofmo²j*6ofmo¿j*6ofmoÀj*jssofmo›jþ(i +*jssofmo•jþ( +*js sofmo’jþ( +*0>A (ïh uˆ,'tˆ(p {g:{l: (òhs`m*s`m*Ro¼m{I(n*{r;*{s;*"}r;*V( }r;}s;*J{s;Œl,**J{r;Œi,**"{r;*"{r;*0ÈB {r;Œi,{r;*{s; {j;ofm {g:{u:o¸ {j;{q;{n;{k;oÛk , (} +Ysõromj{j;{q;{n;o†nr3Epsñ2 (œ+{k;{T;oò2 s#j(¤(+ (Àm*0MC {r;Œi, {r;(à *s÷r{s;{j;ogm(ž+ , (} (Àm+*0aoÆm {U;{Z;*6oÆmom*6oÆmom*6oÆmom*>oÆmþom*0aoÆm om(¢–*>oÆmþom*0aoÆm {U;{X;*0aoÆm {U;{_;*0aoÆm {U;{c;*6oÆmoÿl*0aoÆm {U;{Y;*0aoÆm {U;{];*6oÆmoÚl*0aoÆm om(¡–*0aoÆm {U;{[;*0aoÆm {U;{b;þ*6oÆmom*>oÆmþom*6oÆmom*0aoÆm {U;{^;*6oÆmoçl*6oÆmoél*0aoÆm {U;{`;*0aoÆm {U;{`;þ*6oÆmoäl*6oÆmoæl*0!aoÆm {U;|\;(ºi(€iþ*6oÆmoîl*6oÆmoël*0aoÆm {U;|\;(»i*6oÆmoßl*6oÆmoðl*6oÆmoïl*0aoÆm {U;|\;(Ài*0aoÆm {U;|\;(¶i*6oÆmoól*0aoÆm {U;{b;*0aoÆm {U;|\;(¹i*0aoÆm {U;|\;(¹i(½h*6oÆmoöl*0aoÆm {U;{a;*0aoÆm {U;{d;*0aoÆm {U;{e;*6oÆmoül*6oÆmoýl*6oÆmoþl*07a{s;Œl,+,{r; om(¢–*{s;þo& *"sùm*V( }t;}u;*{t;*{u;*&*Zr.8psó2 (Ÿ+oô2 *"{t;*"{u;*6{t;ofm*0?D {t; {u; ofmoœj -s sss (¤ ( +*(ˆ! *6on{Ó:*0®on {Ñ:{I*0’E {t; {u; ssofmošj(¡+ Þgt u‰,Sr¦ps (­+ssofm{g:{l:(®+ofmonjs¤(¤(É+ Þþ*)gJon{Ì:osk*6on{Í:*Non{Ì:oqk*"s n*V( }v;}w;*{v;*{w;*&*Zr.8psö2 (¢+o÷2 *"{v;*"{w;*6{v;ofm*0:F {v; {w; o—m -ssss (¤ (É +*(Œ! *6on{Ý:*0–on {ß:{I*0™G {v; {w; ssofm oj{Æ:(£+ Þgtu‰,QrT¦ps (­+ssofm {g:{l:(®+ofmonjs¤(¤(É+ Þþ*!0g:( }x;*"s'n**($nþ*"s*n**($nþ*s-n**($nþ*"s/n**($nþ*"s2n**($nþ*s5n**($nþ*s7n**($nþ*{x;*Zr.8psø2 (¤+où2 *0‚H ($nE ’Ú¤1tu {; r¦po& ( *tv {ƒ; {‚;ofmomj (³ -rR9p+8r@-psùr (x +¥7r:p(p+(` ( r6Úp( ( *tw{„; rl^psûr (x +¥7r:p(p+(` ( rR^p( *tx{†; {…;rl^pŒs  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p( rNBp( Œs  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p( rR^p( *ty  {‡; {ˆ; r¦¦p{u;( (³ -rR9p+8r@-psýr (x +¥7r:p(p+(` ( r6Úp( ( *tz{‰;ol*t{{Š;rímpsú2 (¥+þoû2 *Z(n}€;};*{€;*{;*Z(n}‚;}ƒ;*{‚;*{ƒ;*>(n}„;*{„;*Z(n}…;}†;*{…;*{†;*Z(n}‡;}ˆ;*{‡;*{ˆ;*>(n}‰;*{‰;*>(n}Š;*{Š;*:( }‹;*2{‹;{€;*2{‹;{;*:( }Œ;*2{Œ;{‚;*2{Œ;{ƒ;*:( };*2{;{„;*:( }Ž;*2{Ž;{…;*2{Ž;{†;*:( };*2{;{‡;*2{;{ˆ;*:( };*2{;{‰;*:( }‘;*2{‘;{Š;*2sLn€“;*:( }’;*sYn**(Wnþ*s[n**(Wnþ*"s]n**(Wnþ*s`n**(Wnþ*~“;**(Wnþ*{’;*Zr.8psü2 (¦+oû2 *>(Ln}™;*{™;*>(Ln}š;*{š;*Z(Ln}›;}œ;*{›;*{œ;*>(Ln};*{;*:( }ž;*2{ž;{™;*:( }Ÿ;*2{Ÿ;{š;*:( } ;*2{ ;{›;*2{ ;{œ;*:( }¡;*2{¡;{;*{¢;*{£;*{¤;*{¥;*{¦;*{§;*{¨;*{©;*{ª;*{«;*{¬;*{­;*{®;*"}«;*"}¬;*0l( }¢;}£;}¤;}¥;}¦;}§;}¨;}©; }ª; }«; }¬; }­; }®;*{¯;*{°;*{±;*"}¯;*"}°;*r( }¯;}°;}±;*04I {¯; ,+,+{°;, {±;sH¤z{¯;*0I {¯; ,+,*{°;*0#o‚n,rS@p(` {±;s]¤z*6on{«;*:on(xn*"{±;*6on{£;*6on{¤;*6on{¢;*6on{¨;*Von{ª;þoý2 *6on{¥;*6on{¦;*6on{§;*6on{¬;*Jon{®;oþ2 *0#oon{¬; {g:{u:o¸ oÓk*0#oon{¬; {g:{u:o¸ oÔk**s€n**s€n*0…*{¯;Œ,.rȦp{±;( r §p( s\ (¤þ(¥*{¯;Œ, {¯;+,r<§p{±;( rt§p( s\ (¤(§+(~n*0D*{¯;Œ,.rȦp{±;( r §p( s\ (¤þ(¥*(n*¢oƒnon{®;oþ2 sè* þoÿ2 *Zon{­;þ(¨+*"{±;*( *s¡n**u‘þ*s£n**u’þ*0J  u’,+*Zr.8ps3 (©+o3 *:(šn}´;*{´;*:(šn}µ;*{µ;*:( }¶;*2{¶;{´;*:( }·;*2{·;{µ;*{¸;*{¹;*{º;*r( }¸;}¹;}º;*( *s´n**u˜þ*s¶n**u™þ*0K  u™,+*Zr.8ps3 (ª+o3 *:(­n}½;*{½;*:(­n}¾;*{¾;*:( }¿;*2{¿;{½;*:( }À;*2{À;{¾;*0 s½n*ò( }Á;}Â;}Ã;}Ä;}Å;}Æ;}Ç;*{Á;*{Â;*{Ã;*{Ä;*{Å;*{Æ;*{Ç;*&*Zr.8ps3 («+o3 *"sÈn*V( }È;}É;*{È;*{É;*&*Zr.8ps3 (¬+o3 *sÎn*:( }Ê;*{Ê;*&*Zr.8ps3 (­+o 3 *fsÓn€Ì;sÓn€Í;*:( }Ë;*so**(ønþ*so**(ønþ*so**(ønþ*so**(ønþ*s o**(ønþ*s o**(ønþ*so**(ønþ*so**(ønþ*so**(ønþ*so*.(øn þ*so*.(øn þ*so*.(øn þ*so*.(øn þ*so*.(øn þ*so*.(ønþ*s o*.(ønþ*~Ì;*.(ønþ*~Í;*.(ønþ*{Ë;*Zr.8ps 3 (®+o 3 *0:.þ,)þ,!{Ë; {Ë; 3 þ(Êh*Y**þ,**B¥Ÿþoún*0LL ¥Ÿ þ,/¥Ÿþ,"{Ë; {Ë; 3 þ(Ëh*Y**¥Ÿþ,**Jþ, (Ìh**6(n oýn*08L þ,)uŸ ,{Ë; {Ë; 3 (Íh***þþ*04.þ,%þ,{Ë; {Ë; 3 (Üh***þþ*0M uŸ ,oo**>(Ón}à;*{à;*>(Ón}á;*{á;*>(Ón}â;*{â;*>(Ón}ã;*{ã;*>(Ón}ä;*{ä;*>(Ón}å;*{å;*>(Ón}æ;*{æ;*>(Ón}ç;*{ç;*>(Ón}è;*{è;*B (Ón}é;*{é;*B (Ón}ê;*{ê;*B (Ón}ë;*{ë;*B (Ón}ì;*{ì;*B (Ón}í;*{í;*B(Ón}î;*{î;*B(Ón}ï;*{ï;*:( }ð;*2{ð;{à;*:( }ñ;*2{ñ;{á;*:( }ò;*2{ò;{â;*:( }ó;*2{ó;{ã;*:( }ô;*2{ô;{ä;*:( }õ;*2{õ;{å;*:( }ö;*2{ö;{æ;*:( }÷;*2{÷;{ç;*:( }ø;*2{ø;{è;*:( }ù;*2{ù;{é;*:( }ú;*2{ú;{ê;*:( }û;*2{û;{ë;*:( }ü;*2{ü;{ì;*:( }ý;*2{ý;{í;*:( }þ;*2{þ;{î;*:( }ÿ;*2{ÿ;{ï;*( **sKo**uÃþ*"sPo**uÄþ*"sSo**uÅþ*0 uÅ,+ uÄ,+*Zr.8ps 3 (¯+o 3 *’(Bo}<}<}<}<*{<*{<*{<*{<*V(Bo}<}<*{<*{<*V(Bo} <} <*{ <*{ <*:( } <*2{ <{<*2{ <{<*2{ <{<*2{ <{<*:( } <*2{ <{<*2{ <{<*:( } <*2{ <{ <*2{ <{ <*"sbo*V( }<}<*{<*{<*&*Zr.8ps3 (°+o3 *"{<*"{<*2sjo€<*:( }<*"syo**(woþ*"s|o**(woþ*so**(woþ*~<**(woþ*"so**(woþ*2s„o**(woþ*{<*Zr.8ps3 (±+o3 *Z(jo}<}<*{<*{<*Z(jo}<}<*{<*{<*>(jo}<*{<*Z(jo}<}<*{<*{<*¶(jo}<} <}!<}"<}#<*{<*{ <*{!<*{"<*{#<*:( }$<*2{$<{<*2{$<{<*:( }%<*2{%<{<*2{%<{<*:( }&<*2{&<{<*:( }'<*2{'<{<*2{'<{<*:( }(<*2{(<{<*2{(<{ <*2{(<{!<*2{(<{"<*2{(<{#<*&sœo*r( })<}*<}+<*{)<*{*<*{+<*&*Zr.8ps3 (²+o3 *&s£o*r( },<}-<}.<*{,<*{-<*{.<*&*Zr.8ps3 (³+o3 *"{,<*"{-<*"{.<*&s­o*r( }/<}0<}1<*{/<*{0<*{1<*&*Zr.8ps3 (´+o3 *"{/<*"{0<*"{1<*&s·o*r( }2<}3<}4<*{2<*{3<*{4<*&*Zr.8ps3 (µ+o3 *"{3<*>{3<þo *>{2<þo‰! *0'N {2< {3< ( & þ, (-/ þ**Rsÿr{3<þ(¶+*Rss{2<þ(·+*0O {3< (Ûh*{5<*{6<*"}5<*"}6<*V( }5<}6<*"sÊo*V( }7<}8<*{7<*{8<*&*Zr.8ps3 (¸+o3 *:( }9<*&sðo**(îoþ*&sôo**(îoþ*2søo**(îoþ*0 sþo**(îoþ*2sp**(îoþ*2s p**(îoþ**sp**(îoþ**sp**(îoþ*0 sp**(îoþ*:s$p*.(îo þ**s+p*.(îo þ**s0p*.(îo þ*2s5p*.(îo þ*&s;p*.(îo þ*s?p*.(îoþ*{9<*Zr.8ps3 (¹+oè! *v(Ïo}I<}J<}K<*{I<*{J<*{K<*v(Ïo}L<}M<}N<*{L<*{M<*{N<*¶(Ïo}O<}P<}Q<}R<}S<*{O<*{P<*{Q<*{R<*{S<*ö(Ïo}T<}U<}V<}W<}X<}Y<}Z<*{T<*{U<*{V<*{W<*{X<*{Y<*{Z<*¶(Ïo}[<}\<}]<}^<}_<*{[<*{\<*{]<*{^<*{_<*¶(Ïo}`<}a<}b<}c<}d<*{`<*{a<*{b<*{c<*{d<*–(Ïo}e<}f<}g<}h<*{e<*{f<*{g<*{h<*–(Ïo}i<}j<}k<}l<*{i<*{j<*{k<*{l<*ö(Ïo}m<}n<}o<}p<}q<}r<}s<*{m<*{n<*{o<*{p<*{q<*{r<*{s<*Ú (Ïo}t<}u<}v<}w<}x<}y<*{t<*{u<*{v<*{w<*{x<*{y<*š (Ïo}z<}{<}|<}}<*{z<*{{<*{|<*{}<*š (Ïo}~<}<}€<}<*{~<*{<*{€<*{<*º (Ïo}‚<}ƒ<}„<}…<}†<*{‚<*{ƒ<*{„<*{…<*{†<*z (Ïo}‡<}ˆ<}‰<*{‡<*{ˆ<*{‰<*B(Ïo}Š<*{Š<*:( }‹<*2{‹<{I<*2{‹<{J<*2{‹<{K<*:( }Œ<*2{Œ<{L<*2{Œ<{M<*2{Œ<{N<*:( }<*2{<{O<*2{<{P<*2{<{Q<*2{<{R<*2{<{S<*:( }Ž<*2{Ž<{T<*2{Ž<{U<*2{Ž<{V<*2{Ž<{W<*2{Ž<{X<*2{Ž<{Y<*2{Ž<{Z<*:( }<*2{<{[<*2{<{\<*2{<{]<*2{<{^<*2{<{_<*:( }<*2{<{`<*2{<{a<*2{<{b<*2{<{c<*2{<{d<*:( }‘<*2{‘<{e<*2{‘<{f<*2{‘<{g<*2{‘<{h<*:( }’<*2{’<{i<*2{’<{j<*2{’<{k<*2{’<{l<*:( }“<*2{“<{m<*2{“<{n<*2{“<{o<*2{“<{p<*2{“<{q<*2{“<{r<*2{“<{s<*:( }”<*2{”<{t<*2{”<{u<*2{”<{v<*2{”<{w<*2{”<{x<*2{”<{y<*:( }•<*2{•<{z<*2{•<{{<*2{•<{|<*2{•<{}<*:( }–<*2{–<{~<*2{–<{<*2{–<{€<*2{–<{<*:( }—<*2{—<{‚<*2{—<{ƒ<*2{—<{„<*2{—<{…<*2{—<{†<*:( }˜<*2{˜<{‡<*2{˜<{ˆ<*2{˜<{‰<*:( }™<*2{™<{Š<*0Gs“p€›<s“p€œ<s“p€<s“p€ž<s“p€Ÿ<s“p€ <*:( }š<*sÔp**(Òpþ*sÖp**(Òpþ*~›<**(Òpþ*~œ<**(Òpþ*sØp**(Òpþ*sÚp**(Òpþ*"sÜp**(Òpþ*"sßp**(Òpþ*"sâp**(Òpþ*"såp*.(Òp þ*"sèp*.(Òp þ*sëp*.(Òp þ*síp*.(Òp þ*sïp*.(Òp þ*sñp*.(Òpþ*sóp*.(Òpþ*"sõp*.(Òpþ*"søp*.(Òpþ*"sûp*.(Òpþ*"sþp*.(Òpþ*sq*.(Òpþ*"sq*.(Òpþ*~<*.(Òpþ*~ž<*.(Òpþ*~Ÿ<*.(Òpþ*~ <*.(Òpþ*sq*.(Òpþ*sq*.(Òpþ*s q*.(Òpþ*"s q*.(Òpþ*0   sq*.(Òpþ*{š<*Zr.8ps3 (º+o3 *>(“p}À<*{À<*>(“p}Á<*{Á<*>(“p}Â<*{Â<*>(“p}Ã<*{Ã<*Z(“p}Ä<}Å<*{Ä<*{Å<*Z(“p}Æ<}Ç<*{Æ<*{Ç<*Z(“p}È<}É<*{È<*{É<*^ (“p}Ê<}Ë<*{Ê<*{Ë<*^ (“p}Ì<}Í<*{Ì<*{Í<*B (“p}Î<*{Î<*B (“p}Ï<*{Ï<*B (“p}Ð<*{Ð<*B(“p}Ñ<*{Ñ<*B(“p}Ò<*{Ò<*^(“p}Ó<}Ô<*{Ó<*{Ô<*^(“p}Õ<}Ö<*{Õ<*{Ö<*^(“p}×<}Ø<*{×<*{Ø<*^(“p}Ù<}Ú<*{Ù<*{Ú<*B(“p}Û<*{Û<*^(“p}Ü<}Ý<*{Ü<*{Ý<*B(“p}Þ<*{Þ<*B(“p}ß<*{ß<*B(“p}à<*{à<*^(“p}á<}â<*{á<*{â<*0^(“p}ã<}ä<}å<}æ<}ç<}è<}é<}ê< }ë< }ì< }í<*{ã<*{ä<*{å<*{æ<*{ç<*{è<*{é<*{ê<*{ë<*{ì<*{í<*:( }î<*2{î<{À<*:( }ï<*2{ï<{Á<*:( }ð<*2{ð<{Â<*:( }ñ<*2{ñ<{Ã<*:( }ò<*2{ò<{Ä<*2{ò<{Å<*:( }ó<*2{ó<{Æ<*2{ó<{Ç<*:( }ô<*2{ô<{È<*2{ô<{É<*:( }õ<*2{õ<{Ê<*2{õ<{Ë<*:( }ö<*2{ö<{Ì<*2{ö<{Í<*:( }÷<*2{÷<{Î<*:( }ø<*2{ø<{Ï<*:( }ù<*2{ù<{Ð<*:( }ú<*2{ú<{Ñ<*:( }û<*2{û<{Ò<*:( }ü<*2{ü<{Ó<*2{ü<{Ô<*:( }ý<*2{ý<{Õ<*2{ý<{Ö<*:( }þ<*2{þ<{×<*2{þ<{Ø<*:( }ÿ<*2{ÿ<{Ù<*2{ÿ<{Ú<*:( }=*2{={Û<*:( }=*2{={Ü<*2{={Ý<*:( }=*2{={Þ<*:( }=*2{={ß<*:( }=*2{={à<*:( }=*2{={á<*2{={â<*:( }=*2{={ã<*2{={ä<*2{={å<*2{={æ<*2{={ç<*2{={è<*2{={é<*2{={ê<*2{={ë<*2{={ì<*2{={í<*^scq€=scq€ =*:( }=*~=**(hqþ*~ =**(hqþ*{=*Zr.8ps3 (»+o 3 *01.þ, þ,{= {= 3*Y**þ,**:¥0ojq*0BP ¥0 þ,%¥0þ,{= {= 3*Y**¥0þ,**0þ, (hq3 * **6(n omq*0.P þ,u0 ,{= {= þ**þþ*0*.þ,þ,{= {= þ**þþ*0Q u0 ,opq**^ssq€ =ssq€=*:( } =*~ =**(xqþ*~=**(xqþ*{ =*Zr.8ps!3 (¼+o"3 *01.þ, þ,{ = { = 3*Y**þ,**:¥2ozq*0BR ¥2 þ,%¥2þ,{ = { = 3*Y**¥2þ,**0þ, (xq3 * **6(n o}q*0.R þ,u2 ,{ = { = þ**þþ*0*.þ,þ,{ = { = þ**þþ*0S u2 ,o€q**Šsƒq€=sƒq€=sƒq€=*:( }=*~=**(Šqþ*~=**(Šqþ*~=**(Šqþ*{=*Zr.8ps#3 (½+o$3 *01.þ, þ,{= {= 3*Y**þ,**:¥4oŒq*0BT ¥4 þ,%¥4þ,{= {= 3*Y**¥4þ,**0.þ,% (ŠqE * * **6(n oq*0.T þ,u4 ,{= {= þ**þþ*0*.þ,þ,{= {= þ**þþ*0Ðu4 ,o’q**¶s•q€=s•q€=s•q€=s•q€=*:( }=*~=**(žqþ*~=**(žqþ*~=**(žqþ*~=**(žqþ*{=*Zr.8ps%3 (¾+o&3 *01.þ, þ,{= {= 3*Y**þ,**:¥6o q*0BU ¥6 þ,%¥6þ,{= {= 3*Y**¥6þ,**06þ,- (žqE  * * * **6(n o£q*0.U þ,u6 ,{= {= þ**þþ*0*.þ,þ,{= {= þ**þþ*0V u6 ,o¦q**^s©q€"=s©q€#=*:( }!=*~"=**(®qþ*~#=**(®qþ*{!=*Zr.8ps'3 (¿+o(3 *01.þ, þ,{!= {!= 3*Y**þ,**:¥8o°q*0BW ¥8 þ,%¥8þ,{!= {!= 3*Y**¥8þ,**0þ, (®q3 * **6(n o³q*0.W þ,u8 ,{!= {!= þ**þþ*0*.þ,þ,{!= {!= þ**þþ*0X u8 ,o¶q**¶s¹q€'=s¹q€(=s¹q€)=s¹q€*=*:( }&=*sÆq**(Äqþ*~'=**(Äqþ*~(=**(Äqþ*~)=**(Äqþ*~*=**(Äqþ*{&=*Zr.8ps)3 (À+o*3 *>(¹q}0=*{0=*:( }1=*2{1={0=*( *"sÑq**u@þ*sÔq**uAþ*0Y  uA,+*Zr.8ps+3 (Á+o,3 *V(Êq}4=}5=*{4=*{5=*:(Êq}6=*{6=*:( }7=*2{7={4=*2{7={5=*:( }8=*2{8={6=*:sÜq*Ò( }9=}:=};=}<=}==}>=*{9=*{:=*{;=*{<=*{==*{>=*&*Zr.8ps-3 (Â+o.3 *0Z {9= {>= oðq sY‰*:sçq*Ò( }?=}@=}A=}B=}C=}D=*{?=*{@=*{A=*{B=*{C=*{D=*&*Zr.8ps/3 (Ã+o03 *"{?=*"{@=*"{A=*"{B=*"{C=*"{D=*:s÷q*Ò( }E=}F=}G=}H=}I=}J=*{E=*{F=*{G=*{H=*{I=*{J=*&*Zr.8ps13 (Ä+o23 *"{F=*&sr*r( }K=}L=}M=*{K=*{L=*{M=*&*Zr.8ps33 (Å+o43 *"{K=*:( }N=*sr**(rþ*sr**(rþ*"sr**(rþ*"sr**(rþ**s r**(rþ*{N=*Zr.8ps53 (Æ+o63 *>( r}T=*{T=*>( r}U=*{U=*Z( r}V=}W=*{V=*{W=*Z( r}X=}Y=*{X=*{Y=*–( r}Z=}[=}\=}]=*{Z=*{[=*{\=*{]=*:( }^=*2{^={T=*:( }_=*2{_={U=*:( }`=*2{`={V=*2{`={W=*:( }a=*2{a={X=*2{a={Y=*:( }b=*2{b={Z=*2{b={[=*2{b={\=*2{b={]=*"s5r*V( }c=}d=*{c=*{d=*&*Zr.8ps73 (Ç+o83 *2s;r*²( }e=}f=}g=}h=}i=*{e=*{f=*{g=*{h=*{i=*&*Zr.8ps93 (È+o:3 *sDr*:( }j=*{j=*&*Zr.8ps;3 (É+o<3 *{k=*{l=*{m=*r( }k=}l=}m=*0x.þ,gþ,_(y {k={k=($+ /*1*(y {l={l=(+ /*1*(y {m={m=þ(Ê+**þ,**B¥WþoLr*0}[ ¥W þ,`¥Wþ,S{k={k=($+ /*1*{l={l=(+ /*1*{m={m=þ(Ê+**¥Wþ,**0^þ,U ¹y7ž{m=(Ž+bcXXX ¹y7ž{l=(Ò+bcXXX ¹y7ž{k=(Ú+bcXXX **6(n oOr*0\Jþ,MuW ,A{k={k=(Û+,+{l={l=(×+,{m={m=þ(+****þþ*0Uþ,Fþ,>{k={k=(Þ+,){l={l=(Ü+,{m={m=þ(•+****þþ*0JuW , þoRr**{n=*{o=*{p=*{q=*{r=*{s=*{t=*ò( }n=}o=}p=}q=}r=}s=}t=*0D\ þ90þ9%(y {n={n=(+ /*1*(y {o= {o= /+ þ /*1*(y {p= {p= /+ þ/*1*(y {q={q=($+/*1*(y {r={r=(%+/*1*(y {s={s=(&+/*1*(y {t= {t=   þoNr**þ,**B¥Xþo\r*03] ¥X þ9¥Xþ9{n={n=(+ /*1*{o= {o= /+ þ /*1*{p= {p= /+ þ/*1*{q={q=($+/*1*{r={r=(%+/*1*{s={s=(&+/*1*{t= {t=   þoNr**¥Xþ,**0Áþ9µ ¹y7ž{t=oOrbcXXX ¹y7ž{s=(Ø+bcXXX ¹y7ž{r=(Ù+bcXXX ¹y7ž{q=(Ú+bcXXX ¹y7ž{p=bcXXX ¹y7ž{o=bcXXX ¹y7ž{n=(Ò+bcXXX **6(n o_r*0µ^ þ9£uX 9”{n={n=(×+9{{o={o=3k{p={p=3[{q={q=(Û+,E{r={r=(Ü+,/{s={s=(Ý+,{t= {t= þoQr********þþ*0¨þ9–þ9‹{n={n=(Ü+9s{o={o=3c{p={p=3S{q={q=(Þ+,>{r={r=(ß+,){s={s=(à+,{t={t=þoRr********þþ*0yuX , þobr**( *&ssr**u[þ*swr**u\þ*0_  u\,+*Zr.8ps=3 (Ë+o>3 *’þ,þ, þ(Îh**þ,**B¥Yþokr*06_ ¥Y þ,¥Yþ, þ(Ïh**¥Yþ,**0˜` þ9Œ u[,\t[  ¹y7ž{y=(Ì+bcXXX ¹y7ž{x=oè²bcXXX ¹y7ž{w=(Í+bcXXX *t\  ¹y7ž{z=o1³bcXXX **6(n onr*0Þa þ9ÌuY 9½  u\,+   u\,+ @’u[,[t[ t[ {w={w=(Î+,5 {x={x=oê², {y={y=þ(Ï+***t\t\{z= {z=   þo3³***þþ*0Âb þ9°þ9¥u\,+ u\,+ @zu[,Lt[ t[ {w= {w=(Ð+,){x= {x=(Ñ+,{y= {y=þ(Ò+***t\t\{z={z=þ(Ó+***þþ*0_ uY , þoqr**r(dr}w=}x=}y=*{w=*{x=*{y=*:(dr}z=*{z=*:( }{=*2{{={w=*2{{={x=*2{{={y=*:( }|=*2{|={z=*(U **:(?3 }}=*º¥f${}={¬:o"( sr($¥oÙ+þo(‡*(S *.o¨kþ*(S *.o¦kþ*(S *Vo¨k- o¦kþ**(/( *0p(@ (A (B *(¬ *.oðmþ*0”}~=}=}€=}=}‚=}ƒ=}„=}…= }†= }‡= }ˆ= }‰= }Š=}‹=}Œ=}=}Ž=}=(Ô *0  {Ž=YE  !'-3+68£8²88¤8³8^8m8|8­{~={g:{s:{‚:}={=9‚{=}€={€=(õ (ö }={€=(õ (%( }‚=}Ž={‚=}=*}Ž={=}=*}‚=}=þï}€=+}={~={g:{s:{ƒ:}ƒ={ƒ=,8{ƒ=}„=}Ž={„=(ˆ }=*þ“}„=+}ƒ={~={g:{s:{„:}…={…=9‚{…=}†={†=(õ (ö }‡={†=(õ (%( }ˆ=}Ž={ˆ=}=*}Ž={‡=}=*}ˆ=}‡=þï}†=+}…={~={g:{s:{…:}‰={‰=9´{‰=}Š={Š=(ø (ù }‹={Š=(ø (ú }Œ={Š=(ø (|( }=}Ž={=}=*}Ž={Œ=}=*}Ž={‹=}=*}=}Œ=}‹=þò}Š=+}‰= }Ž=}=** }Ž=*0j{Ž=E  ++.+)+$+++++ +++*********"{=*0> {~=þïþ“þïþòsr*(Ý *0, (Þ (q *(S *.o¦kþ*(S *Vo¨k- o¦kþ**(  *š{g:{t:(ºkþþ- o†jþ**(  *b{g:{t:(ºkþþ*(  *"o†j*(  *.o†jþ*:(@3 }=*0<c {g:{l: {g:{h:{=oc (ž–o† (ÖsA3 *(B3 *N{g:{l:(Ô+*(C3 *0{g:{l: þoD3 *(C3 *03d {g:{l: oij oD3 (ñ ,*þoD3 *(C3 *0{g:{l: þoD3 *(E3 *foÛl,oÜl(Õ+**V(Ê }‘=}’=*00e {’=oÏl , (• {‘=oÕlþo˜n**(F3 *0-oâl- oölþ+,om þoG3 **(H3 *foöl-om(Ö+**(C3 *0{g:{l: þoD3 *(C3 *0o†j,o|j þoD3 **(J *"oï†*(f) *0Æo‡ ,(‡' **V(I3 }“=}”=*0<f (J3 (K3 {“=s¹roŒ+ , {”= ( þoý2 **(¥ *"(™£*(° *"o‡*r(L3 }•=}–=}—=*–{–={•=s¿r{—=od +þoý2 *(J *0Qg o‡ ,Doð†,*o.‡ (×+þ,*oò†r”§p(ñ ,*oò†r´§p(ñ **V(õ }˜=}™=*b{˜=sÃr{™=o¸+*(J **þo‡*(J *Ro ‡,*þo‡*(J **þo‡*(J **þo‡*(J **þo‡*(² **þo-‡*:(M3 }š=*ŠoN3 oO3 ol {š=ol (ñ *(P3 *08i (Z ([ o‡oQ3 Ð(d (Õh¥ª!þ(Ø+*(N( **(L *6(1jsM *(¥ **(?+ *‚(1j(i s$ (% s+ sÈk*:(R3 }›=*:{›=(Äh*(¥ **V(° }œ=}=*f{œ={=£mo‡*:(7 }ž=*B{ž=þo‹n*0|}Ÿ=} =}¡=}¢=}£=}¤=}¥=}¦= }§= }¨= }©= }ª= }«=}¬=}­=(S3 *0 ‰k {¬=YE +858i8ì8Ü8>{ =¥ oÿ }©=}¬={©=oï 9ð{©=o }£={¢=-+[{¢=Y(V (Õ YX m Y2% {Ÿ=X£m¤mXX3Û }¤={Ÿ={¢=£m}¥={¡={£={¤={¥=($¥(o†}¦={¦=,{¦=( (— +,8é{¦=,Z{¦=}§={§=( }¨=}¬={£={¨=sT3 }­=*}¨= þÐ }§=8‡,¥«!+ræ§p [ só zoU3 }«=}¬={«=oï ,0{«=oV3 }ª=}¬={ª=}­=*}ª=+Ã}¬={«=(Ù+}«=}¦=}¥=}¤=}£=8þÿÿ}¬={©=(5+}©=}¬=}­=*0²e {¬=YE+8{¬=E ++>+'+ + + +/++}¬={«=(Ù+}¬={©=(5+}¬=}­= Þ t   Þ&8Yÿÿÿþ,z*y• 0F{¬=E ++++ + ++ +*****"{­=*02³{Ÿ={ ={¡={¢=þÐsçr*:(7 }®=*B{®=þo‹n*(W3 *0(· (¶ (¸ (ñ*(X3 *J{g:{u:o¸ *(W3 *0(· (¶ (¸ (ó*(W3 *0(· (¶ (¸ (ò*:(Y3 }¯=*0C4{g:{u:o¸ {¯={s;{j;{q; {n;{¯={s;{k;oÛk*(}$ *0<"Œs ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(}$ *0<"Œs ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(}$ *0<"Œs ,+u¼ , (x ¥|þo¡ * þo& *rR9p*(Z3 **þoÑ *([3 *"{8<*(à *6{U;{Z;*r(Ÿ }°=}±=}²=*(Ÿ *0 (  *0 (¡ *{°=*{±=*{²=*(“) *0¾(™ (š (ð*:(ª }³=*b{Ñ:{I{³=(ñ *:( }´=*B{´=þo *:(` }µ=*0{{µ=oa ss*(“) *0¾(™ (š (ï*:(S }¶=*b{ß:{I{¶=(ñ *:( }·=*B{·=þo *:(` }¸=*0{{¸=oa ss*:(© }¹=*b{¹={Ñ:{I(øm*:(¦ }º=*b{º={ß:{I(n*:(¦ }»=*b{»={ß:{I(n*(* *"(i*(\3 *"(Âh*(Ý *0&, (Þ (q (3j3 rtp( Â**:(ç( }¼=*B{¼=þ(!i*:(ç( }½=*B{½=þ(!i*:(ç( }¾=*B{¾=þ(!i*:(ç( }¿=*Vs,s{¿=þ(R+*V(]3 }À=}Á=*v{Á=(n oHj,{À=**(F( *6{Ñ:{I*(* *6{ß:{I*:(R3 }Â=*:{Â=(Äh*(¥ **:(R3 }Ã=*:{Ã=(Äh*r(Ÿ }Ä=}Å=}Æ=*(Ÿ *0 (  *0 (¡ *{Ä=*{Å=*{Æ=*0‚Íþ9v ¹y7žt·(Bs(¿+bcXXX ¹y7žt·(As , ( +bcXXX ¹y7žt·(@s , ( +bcXXX **6(n oCs*0‚*þ,su ,g(Ú+-*t·(@st·(@s(ñ ,>t·(Ast·(As(ñ ,t·(Bst·(Bsþ(À+****þþ*0}þ,nþ,f(Ú+-*t·(@st·(@s(ñ ,=t·(Ast·(As(ñ ,t·(Bst·(Bsþ(Â+****þþ*0*u , þoFs**ò(Ÿ }Ç=}È=}É=}Ê=}Ë=}Ì=}Í=*(Ÿ *0 (  *0 (¡ *{Ç=*{È=*{É=*{Ê=*{Ë=*{Ì=*{Í=*Jþ, (;i**6(n oSs*0*þ9üu 9í(Û+-*t¸(Lst¸(Ls(ñ 9Át¸(Mst¸(Ms(ñ 9Ÿt¸(Nst¸(Ns(ñ 9}t¸(Ost¸(Os(À+,]t¸(Pst¸(Ps(ñ ,>t¸(Qst¸(Qs(ñ ,t¸(Rst¸(Rsþ(À+********þþ*0þ9öþ9ë(Û+-*t¸(Lst¸(Ls(ñ 9¿t¸(Mst¸(Ms(ñ 9t¸(Nst¸(Ns(ñ 9{t¸(Ost¸(Os(Â+,\t¸(Pst¸(Ps(ñ ,=t¸(Qst¸(Qs(ñ ,t¸(Rst¸(Rsþ(Â+********þþ*0*u , þoVs**V(Ÿ }Î=}Ï=*(Ÿ *0 (  *0 (¡ *{Î=*{Ï=*0VÍþ,M ¹y7žt¹(]s(¿+bcXXX ¹y7žt¹(\s , ( +bcXXX **6(n o^s*0c*þ,Tu ,H(Ü+-*t¹(\st¹(\s(ñ ,t¹(]st¹(]sþ(À+***þþ*0^þ,Oþ,G(Ü+-*t¹(\st¹(\s(ñ ,t¹(]st¹(]sþ(Â+***þþ*0*u , þoas**:(Ý1 }Ð=*0–M{Ð={u:o¸ o^3 (»+ {h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{t:{v:{w:{x:{y:{z:{{:sáj*(_3 **(Ý1 **V(`3 }a3 }b3 *0]l {b3 (Ý+,*{a3 {b3 (Þ+(ú ( ( oc3 +{a3 (ú ( oc3 þod3 *V(`3 }e3 }f3 *03l {f3 (Ý+,*{e3 (ú ( oc3 þod3 *:(g3 }h3 *>{h3 (ß+*V(i3 }j3 }k3 *0 _sl3 {k3 (à+,*{j3 {k3 (á+(m3 (w* (w* on3 +{j3 (m3 (w* on3 þ(â+*:(g3 }o3 *>{o3 (ß+*V(i3 }p3 }q3 *Ú{q3 (à+,*sr3 {p3 (m3 (w* on3 þ(â+*:(s3 }Û=*:{Û=(Gi*:(t3 }Ü=*>{Ü=(Hi*r(?+ }Ý=}Þ=}ß=*0\{Ý={ß=o|j([ (\ (Ÿ+{ß=onj{Þ={g:{u:o¸ {ß={g:{u:o¸ (Fi*r(Ý1 }à=}á=}â=*0Ïm {á=oqj{â=oqj(‰ {á={g:{p:{â={g:{p:(v + {à={á={â=sys(o+ {h:{i:{j:{k:{l:{m:{n:{o:{q:{r:{s:{t:{w:{x:{y:{z:{{:sáj*V(u3 }ã=}ä=*V{ã={ä=(Fi*~ì=*~í=*~î=*~ï=*~ð=*~ñ=*>s‰sþ(ã+*^( oÚl(Ô sÈo*0#o (º s‹s ss(ä+(‚s(¶o*0'N {2< {3< ( & þ, (-/ þ**(v3 *Š{;{ù:{;|û:(j(Éo*(¿ *"(†s*:(w3 }å=*B{å=þ(k+*0ï!sx3 €ç=sLi€æ=!sx3 €é=sNi€è=s ”€ê=s#”€ë=( sÈo€ì=(s(Œ( (( €í=(Œ( (® (¯ €î=( sÈo€ï=(€s€ð=(º (® (‚s(¶o€ñ=(ò (åk€ò=(f²(ð (=j(ò (ó (åk€ó=*(y3 *6(§+sz3 *B¥¸!þ(å+*0q ¥¸!(æ+ (ç+s{3 *B¥¸!þ(è+*0s ¥¸!(é+ (§+sz3 *v{â1 oã1 (ê+þ(ê+*B¥¸!þ(ë+*"sz3 *>¥¸!þ(§+*B¥¸!þ(ì+*J(€ ( sz3 *&o|3 *:¥¸!o}3 *Fs~3 þ(ê+*"(t*0+t (3 (€3 (t(í! (3 (3 ( t*0&u (‚3 (ƒ3 (t(í! (3 ( t*0v („3 (t(…3 ( t*"(Lu*&(Ru*Š(]t(í! (ð! (ñ! (ñ! (Ju*&(Pu*"(Nu*¢(_t(í! (ð! (ñ! (ñ! (ñ! (Ju*r(at¥»!(í+(Ju*b(ut(í! (3 (Ju*06w (†3 (‡3 (gt(í! (Pu(ð! (ñ! (ñ! (Ju*Z(yt(í! (ð! (Ju*r(©t(í! (3 (ð! (Ju*r(ct(í! (ð! (ñ! (Ju*0=y (î+ (ˆ3 (‰3 s†u(et(í! (ñ! (Ju(ï+(®s*>(it(Ju*0z (ê! (é! (kt(Ju*0z (ê! (é! (mt(Ju*0z (ê! (é! (ot(Ju*00{ (Š3 (‹3 (Œ3 (qt(ð! (ñ! (Ju*0(z (ê! (é! (st(ð! (ñ! (Ju*Ž(wt(í! (3 (ð! (ñ! (Ju*Š(t(í! (3 (ð! (ñ! (Ju*Š(·t(í! (3 (ð! (ñ! (Ju*r(±t(í! (ð! (ñ! (Ju*Š(µt(í! (ð! (ñ! (ñ! (Ju*Š(³t(í! (ð! (ñ! (ñ! (Ju*r(«t(í! (3 (ð! (Ju*"(Tu*b(Ÿt(í! (3 (Ju*v({t(í! (3 (ð! (Ju*v(}t(í! (3 (ð! (Ju*v(t(í! (3 (ð! (Ju*v(t(í! (3 (ð! (Ju*v(ƒt(í! (3 (ð! (Ju*v(…t(í! (3 (ð! (Ju*v(‡t(í! (3 (ð! (Ju*v(‰t(í! (3 (ð! (Ju*v(‹t(í! (3 (ð! (Ju*v(t(í! (3 (ð! (Ju*v(t(í! (3 (ð! (Ju*v(‘t(í! (3 (ð! (Ju*v(“t(í! (3 (ð! (Ju*Š(£t(í! (ð! (ñ! (ñ! (Ju*¢(¥t(í! (ð! (ñ! (ñ! (ñ! (Ju*Š(§t(í! (ð! (ñ! (ñ! (Ju*Š(¹t(í! (ð! (ñ! (ñ! (Ju*Ö(»t(í! (Pu(Pu(ð! (ñ! (ñ! (ñ! (Ju*Š(¡t(í! (3 (ð! (ñ! (Ju*>(•t(Ju*>(­t(Ju*0z (ê! (é! (—t(Ju*0z (ê! (é! (¯t(Ju*>(™t(Ju*>(›t(Ju*N(ð! (ñ! (Hu*rÔGp**sRt*0:} {÷= {ø= {Ë> o3 (Ðu{Ë> o3 (Ðu*0l u×-uÕ-3{Ê>oZ*t× {þ= {Ê>oZ(Ûs*tÕ {ý= {Ê>oZ (Ðu*0b„ uÞ,4tÞ {> {> {Ê>oZ(Üs(Þs*tÝ {>{Ê>oZ(Ðu*>sˆu(ð+*0I… {> {> {> {Ë> o3 (Ðu(Ýs{Ê>,+oZ*0† (Ûs{Ë> o3 (Ðu*0† (Ûs{Ë> o3 (Ðu*0c‡ { > { > {> { > {>(ÛssŠu(ð+(Ýs{Ë> o3 (Ðu(Ðu*0%ˆ { > { > (ÛssŒu(ð+*09† (Ûs{Ë> o3 (Ðu(ÝssŽu(ð+*0d§ (½tE0‰mzõ{¡Ðÿ@o}÷¦ÚDx¨Ñ)S|¥Î4IŸrÈ׿˜§¶ù?ŠN]l{{Ê>oZ*tæ {[> {Z> {Y> {Ê>oZ (Ûs{Ë>o3 (Ðu{Ê>,+oZ*{Ê>oZ*tç{\> {Ê>oZ (Ûs*tè{^> {]> {Ê>oZ (às*tê{b> {a> {Ê>oZ (ás*të{e> {d> {c> {Ê>oZ (ás (Ðu*tì  {g>  {f> {Ê>oZ (ás*{Ê>oZ*tí  {h> {Ê> oZ (Ðu*tî  {i> {Ê> oZ{Ê>,+oZ*tï  {j> {Ê> oZ{Ë>o3 (Ðu*tð{k>{Ê> oZ({. (|. (Ðu*tñ{l>{Ê>oZ(Ž3 (3 (Óu*tò{m>{Ê>oZiÑi(Ðu*tó{n>{Ê>oZ(Ðu*tô{o>{Ê>oZ{Ê>ioZ*tõ{p>{Ê>oZ(Ðu*tö{q>{Ê>oZi(Ðu*t÷{r> {Ê>oZ (Ðu*tø{s>{Ê>oZ(Ðu*tù{t> {Ê>oZ (Óu*tú!!{u>"{Ê>oZ"(Óu*{Ê>oZ*tû##{v>${Ê>oZ$(3 $(‘3 $(’3 $(“3 (äs*tý%%{y>&{Ê>oZ&(ãs*{Ê>oZ*{Ê>oZ*{Ê>oZ*tþ''{z>({Ê>oZ((âs*{Ê> oZ*{Ê>!oZ*{Ê>"oZ*{Ê>#oZ*té)){`> ){_> {Ê>$oZ (às*tü**{x> *{w> {Ê>%oZ (Ûs{Ë>o3 (Ðu*{Ê>&oZ*{Ê>'oZ*{Ê>(oZ*{Ê>)oZ*tÿ++{{>${Ê>*oZ$(3 $(‘3 $(’3 $(“3 (äs*t,,{}> ,{|> {Ê>+oZ (Ûs{Ë>o3 (Ðu*{Ê>,oZ*{Ê>-oZ*{Ê>.oZ*{Ê>/oZ*{Ê>0oZ*{Ê>1oZ*0»² (VuE"Zø‚¾lt {¤> {£> {¥> {Ê>oZsus’u(åss”u(ð+ (ñ+&*t {¦>{Ê>oZ(Ðu*t"{¨> {©> {Ê>oZ (ßs 8ÿÿÿt#  {ª>  {«>{Ê>oZ (Ýs(Ðu*t!  {§> {Ê>oZ 8·þÿÿt{¡> {¢> {Ê>oZs–us˜u (æs (ñ+&*t${¬> {Ê>oZ (Ýs*~Í>*0Ì·   u:-p u;:Œt9 {¼> {Ê>oZ{¶>(Ûs{·> {Ë> o3 (Ðu{¸>{Ê>,+oZ*t:{½>{Ê>oZ(âs*t;{¾>{Ê>oZ(ãs*~Î>*:(•3 }–3 *Z{–3 sN þo—3 *{ö=*:( }ö=*01¸ þ, þ,(y {ö={ö=( **þ,**:¥Ñoîs*0<º ¥Ñ þ,¥Ñþ,{ö={ö=( **¥Ñþ,**01Íþ,( ¹y7ž{ö= , ( +bcXXX **6(n oñs*0-º þ,uÑ ,{ö={ö=(ñ **þþ*¦þ,þ,{ö={ö=(ñ **þþ*0º uÑ ,oôs**{÷=*{ø=*V( }÷=}ø=*0U» þ,Dþ,<(y {÷={÷=( /*1*(y {ø={ø=( **þ,**:¥Òoùs*0Z¼ ¥Ò þ,=¥Òþ,0{÷={÷=( /*1*{ø={ø=( **¥Òþ,**0UÍþ,L ¹y7ž{ø= , ( +bcXXX ¹y7ž{÷= , ( +bcXXX **6(n oüs*0Bv þ,3uÒ ,'{÷={÷=(ñ ,{ø={ø=(ñ ***þþ*úþ,/þ,'{÷={÷=(ñ ,{ø={ø=(ñ ***þþ*0v uÒ ,oÿs**.st€ù=*( *st**uÕþ*~ù=**uÖþ*st**u×þ*0½  u×,+ uÖ,+*Zr.8ps˜3 (ò+o™3 *0ä¾ þ9Ðþ9Å  u×,+  uÖ,+   u×,+  uÖ,+ @€  uÕ-  u×-6*tÕ tÕ (y {ý= {ý=/*þ*t×t×(y {þ= {þ=   oûs*Y**þ,**:¥Óo t*0å¿ ¥Ó þ9Å¥Óþ9µ  u×,+  uÖ,+   u×,+  uÖ,+ 3s  uÕ-  u×-1*tÕ tÕ {ý={ý=/*þ*t×t×{þ= {þ=   oûs*Y**¥Óþ,**0oÀ þ,f  uÕ- uÖ-( u×-$tÕ  ¹y7ž{ý=bcXXX * *t×  ¹y7ž{þ=oüsbcXXX **6(n ot*0ÄÁ þ9²uÓ 9£  u×,+  uÖ,+   u×,+  uÖ,+ 3c  uÕ-  u×-!*tÕ tÕ {ý={ý=þ*t×t×{þ={þ=oþs***þþ*0µÂ þ9£þ9˜u×,+ uÖ,+ u×,+ uÖ,+ 3XuÕ- u×-*tÕ tÕ {ý= {ý=þ*t×t×{þ={þ=oÿs***þþ*0½ uÓ ,ot**:(t}ý=*{ý=*(t*:(t}þ=*{þ=*:( }ÿ=*2{ÿ={ý=*:( }>*:( }>*2{>{þ=*( *s,t**uÝþ*"s.t**uÞþ*0À uÞ,+*Zr.8psš3 (ó+o›3 *0õà þ9áþ9Ö  uÞ,+ uÞ,+ @©uÝ,4tÝ tÝ (y {> {>/*þ*tÞtÞ(y {> {>   o t/*1*(y {> {>   þoœ3 *Y**þ,**:¥Ûo$t*0ñÄ ¥Û þ9Ñ¥Ûþ9Á  uÞ,+ uÞ,+ @”uÝ,/tÝ tÝ {>{>/*þ*tÞtÞ{> {>   o t/*1*{> {>   þoœ3 *Y**¥Ûþ,**0tÅ þ,k uÝ, tÝ  ¹y7ž{>bcXXX *tÞ  ¹y7ž{>o3 bcXXX ¹y7ž{>otbcXXX **6(n o't*0¿Æ þ9­uÛ 9ž  uÞ,+   uÞ,+ 3vuÝ,tÝ tÝ {>{>þ*tÞtÞ{>{>ot,{> {>   þož3 ****þþ*0§Ç þ9•þ9ŠuÞ,+ uÞ,+ 3buÝ,tÝ tÝ {> {>þ*tÞtÞ{>{>ot,{>{>þ(ô+****þþ*0ÀuÛ , þo*t**:(t}>*{>*V(t}>}>*{>*{>*:( }>*2{>{>*:( }>*2{>{>*2{>{>*{ >*{ >*V( } >} >*0eÈ þ,Tþ,L(y { > { >  oûs /*1*(y { >{ >þoœ3 **þ,**:¥áo9t*0jÉ ¥á þ,M¥áþ,@{ > { >  oûs /*1*{ >{ >þoœ3 **¥áþ,**0Cþ,: ¹y7ž{ >o3 bcXXX ¹y7ž{ >oüsbcXXX **6(n o { > oþs,{ > { > þož3 ***þþ*0@þ,1þ,){ >{ >oÿs,{ >{ >þ(ô+***þþ*0Ë uá , þo?t**{ >*{ >*{ >*{>*{>*²( } >} >} >}>}>*0úÌ þ9æþ9Û(y { > { >  oûs /*1*(y { >{ >( /*1*(y { >{ >oœ3 /*1*(y {> {>   o&t/*1*(y {> {>   /*  þ**þ,**:¥âoGt*0íÍ ¥â þ9Í¥âþ9½{ > { >  oûs /*1*{ >{ >( /*1*{ >{ >oœ3 /*1*{> {>   o&t/*1*{> {>   /*  þ**¥âþ,**0šÍþ9Ž ¹y7ž{>bcXXX ¹y7ž{>o'tbcXXX ¹y7ž{ >o3 bcXXX ¹y7ž{ > , ( +bcXXX ¹y7ž{ >oüsbcXXX **6(n oJt*0™Î þ9‡uâ 9x{ > { > oþs,^{ >{ >(ñ ,I{ > { > ož3 ,-{>{>o)t,{>{>þ******þþ*0zþ,kþ,c{ >{ >oÿs,N{ >{ >(ñ ,9{ >{ >(ô+,${>{>o*t,{>{>þ******þþ*0Ï uâ ,oMt**{>*{>*{>*r( }>}>}>*0“Ð þ9þ9t(y {>{>( /*1*(y {> {> o&t /*1*(y {>{>/*þ**þ,**:¥ãoSt*0Ñ ¥ã þ9o¥ãþ,b{>{>( /*1*{> {> o&t /*1*{>{>/*þ**¥ãþ,**0aÍþ,X ¹y7ž{>bcXXX ¹y7ž{>o'tbcXXX ¹y7ž{> , ( +bcXXX **6(n oVt*0YÒ þ,Juã ,>{>{>(ñ ,){> {> o)t,{>{>þ****þþ*0Pþ,Aþ,9{>{>(ñ ,${>{>o*t,{>{>þ****þþ*0Ó uã ,oYt**0øs\t€>s\t€>s\t€>s\t€>s\t€> s\t€>s\t€> s\t€>!s\t€>"s\t€>#s\t€>$s\t€>%s\t€ >&s\t€!>'s\t€">*s\t€#>+s\t€$>,s\t€%>-s\t€&>.s\t€'>/s\t€(>*:( }>*~>**(½tþ*~>**(½tþ*&sÇt**(½tþ*~>**(½tþ*~>**(½tþ*~>**(½tþ*sËt**(½tþ*"sÍt**(½tþ*"sÐt**(½tþ*"sÓt*.(½t þ*&sÖt*.(½t þ*"sÚt*.(½t þ*~>*.(½t þ*sÝt*.(½t þ*~>*.(½tþ*sßt*.(½tþ*sát*.(½tþ*sãt*.(½tþ*såt*.(½tþ*sçt*.(½tþ*sét*.(½tþ*sët*.(½tþ*sít*.(½tþ*sït*.(½tþ*sñt*.(½tþ*sót*.(½tþ*sõt*.(½tþ*s÷t*.(½tþ*sùt*.(½tþ*"sût*.(½tþ*sþt*.(½tþ*su*.(½tþ*~>*.(½t þ*~>*.(½t!þ*~>*.(½t"þ*~>*.(½t#þ*~>*.(½t$þ*~ >*.(½t%þ*~!>*.(½t&þ*~">*.(½t'þ*su*.(½t(þ*"su*.(½t)þ*~#>*.(½t*þ*~$>*.(½t+þ*~%>*.(½t,þ*~&>*.(½t-þ*~'>*.(½t.þ*~(>*.(½t/þ*{>*Zr.8psŸ3 (õ+o 3 *0Å Ô þ9± þ9¦ {> {> @ (½tE0”É*‹ì†çW‚×,dœÔ D|´ì$Ý>s¨a*tæ tæ (y {Y> {Y>oûs/*1*(y {Z> {Z>( /*1*(y {[> {[>   /*  þ*tç tç (y  {\> {\>oûs*tè tè(y  {]>{]>oûs/*1*(y  {^>{^>( *tété(y {_>{_>oûs/*1*(y {`>{`>( *têtê(y {a>{a>oûs/*1*(y {b>{b>( *tëtë(y {c>{c>oûs/*1*(y {d>{d>( /*1*(y {e>{e>/*þ*tìtì(y {f>{f>oûs/*1*(y {g>{g>( *títí(y {h>{h>/*þ*tîtî(y {i> {i>   /*  þ*tïtï(y {j>{j>( *tðtð (y {k>! {k>"!"þ,*!"þ,*!"þ,*!"þ(H+*tñ#tñ$(y #{l>%${l>&%&þ,*%&þ,*%&þ,*%&þ(I+*tò'tò((y '{m>)({m>*)*4*)*þ*tó+tó,(y +{n>-,{n>.-./*-.þ*tô/tô0(y /{o>10{o>2124*12þ*tõ3tõ4(y 3{p>54{p>656/*56þ*tö7tö8(y 7{q>98{q>:9:4*9:þ*t÷;t÷<(y ;{r><{r>/*þ*tø=tø>(y ={s>?>{s>@?@4*?@þ*tùAtùB(y A{t>CB{t>DCD/*CDþ*túEtúF(y E{u>GF{u>HGH4*GHþ*tûItûJ(y I{v>KJ{v>LK(3 K(‘3 MK(’3 NK(“3 OL(3 L(‘3 PL(’3 QL(“3 Roûs,*MP( ,*NQo&t,*ORþoœ3 *tüStüT(y S{w>T{w>oûs/*1*(y S{x>T{x>( *týUtýV(y U{y>WV{y>XWXo;t*tþYtþZ(y Y{z>[Z{z>\[\oIt*tÿ]tÿ^(y ]{{>K^{{>LK(3 K(‘3 MK(’3 NK(“3 OL(3 L(‘3 PL(’3 QL(“3 Roûs,*MP( ,*NQo&t,*ORþoœ3 *t_t`(y _{|>`{|>oûs/*1*(y _{}>`{}>( *Y**þ,**B¥äþo¿t*0ÄÕ ¥ä þ9¤¥äþ9”{> {> @{(½tE0‚¯S¥){¬ÝN›Ìý._Áò#TU‚¯^*tæ tæ {Y>{Y>oûs/*1* {Z>{Z>( /*1* {[> {[>   /*  þ*tç tç  {\> {\>oûs*tè tè {]>{]>oûs/*1* {^>{^>( *tété{_>{_>oûs/*1*{`>{`>( *têtê{a>{a>oûs/*1*{b>{b>( *tëtë{c>{c>oûs/*1*{d>{d>( /*1*{e>{e>/*þ*tìtì{f>{f>oûs/*1*{g>{g>( *títí{h>{h>/*þ*tîtî{i> {i>   /*  þ*tïtï{j>{j>( *tðtð {k>! {k>"!"þ,*!"þ,*!"þ,*!"þ(H+*tñ#tñ$#{l>%${l>&%&þ,*%&þ,*%&þ,*%&þ(I+*tò'tò('{m>)({m>*)*4*)*þ*tó+tó,+{n>-,{n>.-./*-.þ*tô/tô0/{o>10{o>2124*12þ*tõ3tõ43{p>54{p>656/*56þ*tö7tö87{q>98{q>:9:4*9:þ*t÷;t÷<;{r><{r>/*þ*tø=tø>={s>?>{s>@?@4*?@þ*tùAtùBA{t>CB{t>DCD/*CDþ*túEtúFE{u>GF{u>HGH4*GHþ*tûItûJI{v>KJ{v>LK(3 K(‘3 MK(’3 NK(“3 OL(3 L(‘3 PL(’3 QL(“3 Roûs,*MP( ,*NQo&t,*ORþoœ3 *tüStüTS{w>T{w>oûs/*1*S{x>T{x>( *týUtýVU{y>WV{y>XWXo;t*tþYtþZY{z>[Z{z>\[\oIt*tÿ]tÿ^]{{>K^{{>LK(3 K(‘3 MK(’3 NK(“3 OL(3 L(‘3 PL(’3 QL(“3 Roûs,*MP( ,*NQo&t,*ORþoœ3 *t_t`_{|>`{|>oûs/*1*_{}>`{}>( *Y**¥äþ,**0‹Ö þ9 (½tE0gkos™æ3å38[`ƒµÞ0Y|¥Îñ=fò@i’—œ¡¦«°µºF”™ž£¨­ * *tæ  ¹y7ž{[>bcXXX ¹y7ž{Z> , ( +bcXXX ¹y7ž{Y>oüsbcXXX * * * *tç  ¹y7ž {\>oüsbcXXX *tè ¹y7ž{^> , ( +bcXXX ¹y7ž{]>oüsbcXXX *té ¹y7ž{`> , ( +bcXXX ¹y7ž{_>oüsbcXXX *tê ¹y7ž{b> , ( +bcXXX ¹y7ž{a>oüsbcXXX *të ¹y7ž{e>bcXXX ¹y7ž{d> , ( +bcXXX ¹y7ž{c>oüsbcXXX *tì ¹y7ž{g> , ( +bcXXX ¹y7ž{f>oüsbcXXX * *tí  ¹y7ž {h>bcXXX * *tî  ¹y7ž {i>bcXXX *tï  ¹y7ž {j> , ( +bcXXX *tð  ¹y7ž {k>(N+bcXXX *tñ  ¹y7ž {l>(O+bcXXX *tò ¹y7ž{m>(P+bcXXX *tó ¹y7ž{n>(J+bcXXX *tô ¹y7ž{o>bcXXX *tõ ¹y7ž{p>(K+bcXXX *tö ¹y7ž{q>(L+bcXXX *t÷ ¹y7ž{r>bcXXX *tø ¹y7ž{s>bcXXX *tù ¹y7ž{t>(;+bcXXX *tú ¹y7ž{u>(M+bcXXX *tû ¹y7ž{v>(3 (‘3 (’3 (“3 oüsbX, ( +abXo'tbXo3 aabcXXX *tü ¹y7ž{x> , ( +bcXXX ¹y7ž{w>oüsbcXXX *tý ¹y7ž{y>ooJtbcXXX * *! *" *# *$ *% *& *' *tÿ!( ¹y7ž!{{>(3 (‘3 (’3 (“3 oüsbX, ( +abXo'tbXo3 aabcXXX *t") ¹y7ž"{}> , ( +bcXXX ¹y7ž"{|>oüsbcXXX ** *+ *, *- *. */ **6(n oÂt*0í× þ9Ûuä 9Ì{> {> @µ(½tE0VƒÇ O§ë -Qr“´Õö8Yz›¼b¦Ó¦*tæ tæ {Y>{Y>oþs,& {Z>{Z>(ñ , {[>{[>þ***tçtç{\>{\>oþs*tè tè  {]> {]>oþs, {^> {^>(ñ **té té  {_> {_>oþs, {`> {`>(ñ **tê tê {a>{a>oþs, {b>{b>(ñ **tëtë{c>{c>oþs,({d>{d>(ñ ,{e>{e>þ***tìtì{f>{f>oþs,{g>{g>(ñ **títí{h>{h>þ*tîtî{i>{i>þ*tïtï{j>{j>(ñ *tðtð{k>{k>þ*tñtñ{l>{l>þ*tòtò{m>{m>þ*tótó {n> {n>þ*tô!tô"!{o>"{o>þ*tõ#tõ$#{p>${p>þ*tö%tö&%{q>&{q>þ*t÷'t÷('{r>({r>þ*tø)tø*){s>*{s>þ*tù+tù,+{t>,{t>þ*tú-tú.-{u>.{u>þ*tû/tû0/{v>10{v>21(3 1(‘3 31(’3 41(“3 52(3 2(‘3 62(’3 72(“3 8oþs, 36(ñ +, 47o)t+, 58þož3 **tü9tü:9{w>:{w>oþs,9{x>:{x>(ñ **tý;tý<;{y>=<{y>>=>o>t*tþ?tþ@?{z>A@{z>BABoLt*tÿCtÿDC{{>1D{{>21(3 1(‘3 31(’3 41(“3 52(3 2(‘3 62(’3 72(“3 8oþs, 36(ñ +, 47o)t+, 58þož3 **tEtFE{|>F{|>oþs,E{}>F{}>(ñ ****þþ*0ÔØ þ9Âþ9·{> {> @ (½tE0Im¨ãm¨ÉêO±Òó5Vw˜¹ç"Hlš*tæ tæ {Y> {Y>oÿs,${Z> {Z>(ñ ,{[> {[>þ***tçtç{\>{\>oÿs*tètè{]>{]>oÿs,{^>{^>(ñ **tété {_> {_>oÿs,{`> {`>(ñ **tê tê  {a> {a>oÿs, {b> {b>(ñ **të të  {c> {c>oÿs,( {d> {d>(ñ , {e> {e>þ***tìtì{f>{f>oÿs,{g>{g>(ñ **títí{h>{h>þ*tîtî{i>{i>þ*tïtï{j>{j>(ñ *tðtð{k>{k>. þþ+,*þ*tñtñ{l>{l>. þþ+,*þ*tòtò{m>{m>þ*tó tó! {n>!{n>þ*tô"tô#"{o>#{o>þ*tõ$tõ%${p>%{p>þ*tö&tö'&{q>'{q>þ*t÷(t÷)({r>){r>þ*tø*tø+*{s>+{s>þ*tù,tù-,{t>-{t>þ*tú.tú/.{u>/{u>þ*tû0tû10{v>21{v>323þ(ö+*tü4tü54{w>5{w>oÿs,4{x>5{x>(ñ **tý6tý76{y>7{y>þo?t*tþ8tþ98{z>9{z>oMt*tÿ:tÿ;:{{>2;{{>323þ(ö+*t<t=<{|>={|>oÿs,<{}>={}>(ñ ****þþ*0Ù uä , þoÅt**v(\t}Y>}Z>}[>*{Y>*{Z>*{[>*>(\t}\>*{\>*Z(\t}]>}^>*{]>*{^>*Z(\t}_>}`>*{_>*{`>*^ (\t}a>}b>*{a>*{b>*z (\t}c>}d>}e>*{c>*{d>*{e>*^ (\t}f>}g>*{f>*{g>*B (\t}h>*{h>*B(\t}i>*{i>*B(\t}j>*{j>*B(\t}k>*{k>*B(\t}l>*{l>*B(\t}m>*{m>*B(\t}n>*{n>*B(\t}o>*{o>*B(\t}p>*{p>*B(\t}q>*{q>*B(\t}r>*{r>*B(\t}s>*{s>*B(\t}t>*{t>*B(\t}u>*{u>*B(\t}v>*{v>*^(\t}w>}x>*{w>*{x>*B(\t}y>*{y>*B(\t}z>*{z>*B((\t}{>*{{>*^)(\t}|>}}>*{|>*{}>*:( }~>*2{~>{Y>*2{~>{Z>*2{~>{[>*:( }>*2{>{\>*:( }€>*2{€>{]>*2{€>{^>*:( }>*2{>{_>*2{>{`>*:( }‚>*2{‚>{a>*2{‚>{b>*:( }ƒ>*2{ƒ>{c>*2{ƒ>{d>*2{ƒ>{e>*:( }„>*2{„>{f>*2{„>{g>*:( }…>*2{…>{h>*:( }†>*2{†>{i>*:( }‡>*2{‡>{j>*:( }ˆ>*2{ˆ>{k>*:( }‰>*2{‰>{l>*:( }Š>*2{Š>{m>*:( }‹>*2{‹>{n>*:( }Œ>*2{Œ>{o>*:( }>*2{>{p>*:( }Ž>*2{Ž>{q>*:( }>*2{>{r>*:( }>*2{>{s>*:( }‘>*2{‘>{t>*:( }’>*2{’>{u>*:( }“>*2{“>{v>*:( }”>*2{”>{w>*2{”>{x>*:( }•>*2{•>{y>*:( }–>*2{–>{z>*:( }—>*2{—>{{>*:( }˜>*2{˜>{|>*2{˜>{}>*:( }™>*"s`u**(Vuþ*&scu**(Vuþ*sgu**(Vuþ*siu**(Vuþ*"sku**(Vuþ*"snu**(Vuþ*squ**(Vuþ*{™>*Zr.8ps¡3 (÷+o¢3 *0äÚ þ9Ðþ9Å{™> {™> @¬(VuEg BwâPt t (y {¡> {¡>oZu/*1*(y {¢> {¢>  þo£3 *t t (y  {£>  {£>   oÁt/*1*(y  {¤> {¤>oœ3 /*1*(y  {¥> {¥>  þo£3 *t t (y {¦>{¦>/*þ*t!t!(y {§>{§>oZu*t"t"(y {¨>{¨>oUt/*1*(y {©>{©>oZu*t#t#(y {ª>{ª>o&t/*1*(y {«>{«>/*þ*t$t$(y {¬>{¬>o&t*Y**þ,**:¥oXu*0¤Û ¥ þ9„¥þ9t{™> {™> @[(VuEZåH¨t t {¡>{¡>oZu/*1* {¢>{¢>  þo£3 *t t  {£>  {£>   oÁt/*1* {¤> {¤>oœ3 /*1* {¥> {¥>  þo£3 *t t {¦>{¦>/*þ*t!t!{§>{§>8]þÿÿt"t"{¨>{¨>oUt/*1*{©>{©>8ýýÿÿt#t#{ª>{ª>o&t/*1*{«>{«>/*þ*t$t${¬>{¬>o&t*Y**¥þ,**0ÄÜ þ9¸ (VuEA½å)gt  ¹y7ž{¢>o¤3 bcXXX ¹y7ž{¡>o[ubcXXX *t  ¹y7ž{¥>o¤3 bcXXX ¹y7ž{¤>o3 bcXXX ¹y7ž{£>oÂtbcXXX *t   ¹y7ž {¦>bcXXX *t! ¹y7ž{§>o[ubcXXX *t" ¹y7ž{©>o[ubcXXX ¹y7ž{¨>oVtbcXXX *t# ¹y7ž{«>bcXXX ¹y7ž{ª>o'tbcXXX *t$ ¹y7ž{¬>o'tbcXXX **6(n o[u*0-Ý þ9u 9 {™> {™> @õ(VuEL»Ü`¡t t {¡>{¡>o]u, {¢>{¢>þo¥3 **t t  {£>  {£>   oÄt,? {¤>  {¤> ož3 , {¥> {¥>þo¥3 ***t t {¦>{¦>þ*t!t!{§>{§>8 þÿÿt"t"{¨>{¨>oXt,"{©>{©>8Pþÿÿ*t#t#{ª>{ª>o)t,{«>{«>þ**t$t${¬>{¬>o)t***þþ*0ÊÞ þ9¸þ9­{™> {™> @–(VuE7‹¬ÓIt t {¡> {¡>o^u,{¢> {¢>þ(ø+**tt{£>{£>oÅt,-{¤>{¤>(ô+,{¥>{¥>þ(ø+***t t {¦>{¦>þ*t!t! {§> {§>8ßþÿÿt" t"  {¨> {¨>oYt, {©> {©>8£þÿÿ*t# t#  {ª> {ª>o*t, {«> {«>þ**t$t${¬>{¬>þo*t***þþ*0ß u , þo^u**Z(Gu}¡>}¢>*{¡>*{¢>*v(Gu}£>}¤>}¥>*{£>*{¤>*{¥>*>(Gu}¦>*{¦>*>(Gu}§>*{§>*Z(Gu}¨>}©>*{¨>*{©>*Z(Gu}ª>}«>*{ª>*{«>*>(Gu}¬>*{¬>*:( }­>*2{­>{¡>*2{­>{¢>*:( }®>*2{®>{£>*2{®>{¤>*2{®>{¥>*:( }¯>*2{¯>{¦>*:( }°>*2{°>{§>*:( }±>*2{±>{¨>*2{±>{©>*:( }²>*2{²>{ª>*2{²>{«>*:( }³>*2{³>{¬>*(¦3 *0w (†3 (‡3 (Pu*(§3 *.(Ýs*(§3 *.(Ýs*(§3 *.(Ýs*(§3 *.(Ýs*(¨3 *.(æs*:(©3 }´>*F{´>(ù+*(§3 *.(Ýs*(¨3 *.(æs*:(©3 }µ>*F{µ>(ù+*{¶>*{·>*{¸>*r( }¶>}·>}¸>*0–à þ9‚þ9w(y {¶> {¶>  oûs /*1*(y {·>{·>( /*1*(y {¸>{¸>/*þ**þ,**:¥6ožu*0’á ¥6 þ9r¥6þ,e{¶> {¶>  oûs /*1*{·>{·>( /*1*{¸>{¸>/*þ**¥6þ,**0aÍþ,X ¹y7ž{¸>bcXXX ¹y7ž{·> , ( +bcXXX ¹y7ž{¶>oüsbcXXX **6(n o¡u*0Yâ þ,Ju6 ,>{¶> {¶> oþs,${·>{·>(ñ ,{¸>{¸>þ****þþ*0Pþ,Aþ,9{¶>{¶>oÿs,${·>{·>(ñ ,{¸>{¸>þ****þþ*0ã u6 ,o¤u**( *s·u**u9þ*s¹u**u:þ*s»u**u;þ*0ä  u;,+ u:,+*Zr.8psª3 (ú+o«3 *0å þ9 þ9þu;,+ u:,+ u;,+ u:,+ @¹u9-u:-:u;-ft9 t9 (y {¼> {¼>o u*t:t:(y {½> {½>   oIt*t; t; (y  {¾>  {¾> o;t*Y**þ,**:¥7o¯u*0æ ¥7 þ9ø¥7þ9èu;,+ u:,+ u;,+ u:,+ @£u9-u:-4u;-Xt9 t9 {¼>{¼>o u*t:t:{½> {½>   oIt*t; t;  {¾>  {¾> o;t*Y**¥7þ,**0žç þ9’ u9-u:-/u;-Lt9  ¹y7ž{¼>o¡ubcXXX *t:  ¹y7ž{½>oJtbcXXX *t;  ¹y7ž {¾>o{¼>o£u*t:t:{½> {½>   oLt*t; t;  {¾>  {¾> o>t***þþ*0èè þ9Öþ9Ëu;,+ u:,+   u;,+  u:,+ @ˆ  u9- u:-) u;-Dt9 t9 {¼> {¼>o¤u*t:t:{½>{½>oMt*t;t;{¾>{¾>þo?t***þþ*0ä u7 , þoµu**:(¦u}¼>*{¼>*:(¦u}½>*{½>*:(¦u}¾>*{¾>*:( }¿>*2{¿>{¼>*:( }À>*2{À>{½>*:( }Á>*2{Á>{¾>*(¨3 *.(æs*:(¬3 }Â>*:{Â>(û+*V(­3 }Ã>}Ä>*v{Ã>(ès{Ä>(æs*(®3 *0é (¯3 (°3 sÇu*:(±3 }Å>*F{Å>(ü+*:(²3 }Æ>*:{Æ>(ý+*0V{Ê> ÿ_oZ{Ê>c ÿ_oZ{Ê>c ÿ_oZ{Ê>c ÿ_oZ*0…2 þþ+,{Ê> ÿ_oZ* €2 ÿ?þþ+,){Ê> €c`oZ{Ê> ÿ_oZ*{Ê> ÿoZ(Ïu*0Ži (Ðu{Ê>o_*0'¼(W o‰ Ži (Ðu{Ê>o_*†!ÿÿÿÿ_i(Ðu ci(Ðu*0H–({ ,2 ({ (| {Ê>oZ(þ+&+Æ{Ê>oZ*0–î   †(e(ÿ+síu (þ+&{Ë> {µ3 (+{Ê>oYs¶3 (·3 (¸3   †(e(ÿ+síu sóusõu (+&(Ñu{Ê>oY*{º3 *{»3 *{¼3 *"}»3 *"}¼3 *r( }º3 }»3 }¼3 *0Xþ,O ¹y7ž{¼3 bcXXX ¹y7ž{»3 o½3 bcXXX ¹y7ž{º3 (+bcXXX **6(n o¾3 *0Zð þ,KuÏ! ,?{º3 {º3 (+,){»3 {»3 o¿3 ,{¼3 {¼3 þ****þþ*fsÀ3 sÁ3 (€ sÂ3 *>{»3 þ()+*>{»3 þo÷ *08{¼3 {¼3 X(Ã3 {º3 oÄ3 {»3 ( (Å3 *’{º3 oÆ3 , {º3 oÇ3 *oÈ3 *:{º3 oÇ3 *B{º3 þoÆ3 *0Pþ,Aþ,9{º3 {º3 (+,${»3 {»3 (+,{¼3 {¼3 þ****þþ*0ñ uÏ! ,oÉ3 ***o &**þ(F+*.þ(+*{Ê>*{Ë>*V( }Ê>}Ë>*0Cþ,: ¹y7ž{Ë>oÊ3 bcXXX ¹y7ž{Ê>(+bcXXX **6(n oîu*0Hò þ,9uH ,-{Ê>{Ê>(+,{Ë> {Ë> oË3 ***þþ*úþ,/þ,'{Ê>{Ê>(+,{Ë>{Ë>oÌ3 ***þþ*0ó uH ,oñu**(Í3 *.(Òu*:(Î3 }Ì>*F{Ì>(+*0,ö sÃu sÅu€Í>sÉu sËu sÍu€Î>*"(Ï3 *Nob XYoL *0(Ï3 ob XYoL *0(Ï3 ob XYoL *0(Ï3 ob XYoL *01÷ s o; o: (òˆ {®Asû£(¥*Öq’X2q’o^ -þ+,q’X’**0! (" x3+oþ,*bþ*ªX2o^ 0þ+,Xo^ (ÿu**07 q’(v,$q’Xo^ (" q’X’*d*Fr™¨p(åÃsÐ3 z0_/XX!Zo^ 0YEr™¨p(åÃsÐ3 z!+ !X+£*0n  !(v*0_ /XX!Zo^ 02 7þþ+,(Ñ3 0(Ñ3 Y+r™¨p(åÃsÐ3 zX+£*0n  !(v*0ªø ob  (þu (v (x (Ò3 bYEaoYECxYE(x ¥|(Ó3 *oÖ (x ¥|(Ô3 (Õ3 Z*(v(Õ3 Z*(v(Õ3 Z*0Gù (Ï3 ob XYoL (v Þ#t (µ (Z (Y ( + Þ*!"#0¦ú (Ï3 :([ o\ þþ,4rx8p(¶ o; o: (òˆ s(¤ (¤(¥+(Ï3 $([ o\ þþ,3rÝNp(¶ o; o: (òˆ s(¤ (¤þ(¥**J(Ï3 (·(w*.sÖ3 *03û d(e o; o: (òˆ o; ( +s×3 *05ý ,1 (Ø3 o& o; o?oD(¥þ(8”**0þ , (Ø3 o˜ **j(@¥, ( +**0Tro× oÖ o× % ¤% ¤%/¤oó 3 ob +oL *~¢A*~£A*~¤A*+ýF Vþ(&v*R þ('v*J þ((v*0  Úþ()v*0  Àþ(*v*0  ¦þ(+v*0  ™þ(,v*Fþ(-v*FRþ(.v*F9þ(/v*Fþ(0v*:þ(1v*05 o^ a2 zþþ+, X+Öþ("v*0: o^  YE YE (#v*X+Æ0‡ÿ o^ 02 9þþ+,X+ÓYoL (l Þ5t (Îo; o: (òˆsû£(¤(¥ Þ($vsÙ3 *9 C50_ o^  YE) YE"YE@YE*X+´XX(%v(c *¾o^ "YEX+ÜYoL *0 !(vonEx &-žÊ1‚Æ3„È>¤¸VÚ2ŒæGœ± t š Ê . ‘ ï D g Š ä  @ n œ ¢ ß  k » ê :hÑy·÷¸Ðè$*06<BHNTZ`flrx~ ¦¬²¸¾ÄÊÐÖÜãêðöü%06<BUh{Ž¡´ÇÚætËçê«ör½¨ps\ z(Ï3 („v*(îw*(0x*(0x*(Ï3 ob YoL („v(nx Ÿ3(Ï3 ob YoL (&x*rntp(¹ (Z (Y (Ï3 („v( +*rÈ:p(¹ (Z (Y (Ï3 („v( +*(v  €1+€þ,&(º (Z (Y s‡+ (Px( +* €3€s‡+ (Px*gs‡+ (Px*(v  ÿ1+þ,&(» (Z (Y s‡+ (Px( +*Ògs‡+ (Px*(v  ÿ1+þ, (¼ (Z (Y (Fx( +*Ò(Fx*(v  €1+  €ÿÿþ,&(½ (Z (Y sŠ+ (Nx( +* €3 €ÿÿsŠ+ (Nx*hsŠ+ (Nx*(v  ÿÿ1+þ,&(½ (Z (Y sŠ+ (Nx( +*ÑhsŠ+ (Nx*(v  ÿÿ1+þ, (¾ (Z (Y (Dx( +*Ñ(Dx*(Ï3  ob YoL rɨp(ñ , €s  (Lx*(l Þ%t(¿ (Z (Y ( +Þ s  (Lx*(Ï3 rɨp(ñ , €s  (Jx*(l Þ%t(¿ (Z (Y ( +Þ s  (Jx*(Ï3  ob YoL rɨp(ñ , €s  (Jx*(l Þ%t(¿ (Z (Y ( +Þ s  (Jx*(Ï3  ob YoL (& Þ-t(À (Z (Y !( +Þ!ÿÿÿÿ1+!þ, (À (Z (Y (Bx( +*m(Bx*(Ï3  ob YoL (& Þ-t(À (Z (Y !( +Þ!ÿÿÿÿ1+!þ, (À (Z (Y (Bx( +*m(Bx*(Ï3  ob YoL rߨp(ñ ,!€s+ (Hx*(& Þ-t(Á (Z (Y !( +Þs+ (Hx*(Ï3  ob YoL (Ú3 Þ-t( (Z (Y !(+Þ(@x*(Ï3 ob YoL (& (x Þ2t(Ä (Z (Y !(>x( + Þ *(Ï3 ob YoL §(x ¥|(Û3  Þ)t(Å (Z (Y "(+ Þ (:x*(Ï3 §(x ¥|(  Þ-t(Å (Z (Y #(+ Þ (8x*(Ï3  ob YoL  ï(x ¥|(Ü3 (4x Þ/t(Æ (Z (Y («% (4x( + Þ *(Ï3  ob YoL (& Þ-t(Å (Z (Y !( +Þ!ÿÿÿÿ1+!þ,$(Ç (Z (Y "(:x( +*m(€. (. (:x*(Ï3 ob YoL (& Þ-t(Å (Z (Y !( +Þ(‚. (8x*(Ï3 (Ï3  ob YoL ob Y(V  ob Y(V   (Õ  (Õ YXoL s~ (2x*(È (Z (Y s  (Jx( +*(Ï3 o^ \3o^ (Ov+o^ (6x*(Ï3 o^ \3o^ (Ov+o^ i /+þ, (É (Z (Y (Fx( +*Ò(Fx*(Ï3 o^ o^ o^ (Ivi /+  ÿþ,!(Ê (Z (Y (6x( +*(6x*(Ï3 o^ o^ o^ (Ivi /+  ÿþ, (É (Z (Y (Fx( +*Ò(Fx*(Ï3 ob YoL (Lvi /+þ, (É (Z (Y (Fx( +*Ò(Fx*(Ï3 ob YoL (MviÑ(6x*(Ï3 ob YoL (LviÑ(6x*(Ï3 ob YoL (Nv(Ý3 (Þ3 ,"(Ë (Z (Y Ñ(6x( +*Ñ(6x*-{«A(+ (¯“(ôv* V8üñÿÿ-{«A(+ (¯“(ôv* V8Îñÿÿ-{«A(+ (¯“(ôv* V8 ñÿÿ-{«A(+ (¯“(ôv* V8rñÿÿ(´w*o; o: (òˆ-{«A(+ (¹“(ôv*þ(v*o; o: (òˆ-{«A(+ (Ó(ôv*þ(1v*(+(ß3 (à3 (á3 -{«A(+ (³“(w*þ(v*(+(ß3 (à3 (á3 -{«A(+ (·“(w*þ(v*(Ì (Z (Y {«A(+ (¯“(öv( +*(+(ß3 (à3 (á3 -{«A(+ (µ“(w*þ(v*, V8¼ïÿÿ{«A(+ (¯“(öv*{­AoQv,-(Ío; o: (òˆsû£(¤(¥+-{«A(+ (¯“(öv* V8=ïÿÿo; o: (òˆ-{«A(+ (»“(þv*þ(v*o; o: (òˆ(Ï3  ob YoL ds% o˜ -{«A(+ (»“(þv*(â3 þ(v*o; o: (òˆ-{«A(+ (»“(þv*þ(v*o: oEo/ -{«A(+ (¯“(öv* V8îÿÿ(Ï3 ob YoL (‚v*o: ,j(Ï3  (!v(ã3 (ä3 - o>+(d (¥oIo/  V8„íÿÿ-{«A(+ (¯“(øv* V8Víÿÿ( vrÃps5 (x*( vr©ps5 (x*( vrÃps5 ( x*( vr©ps5 ( x*(œw*(žw*( w*( x*(¢w*(¤w*(¦w*(¬w*(®w*(°w*(‚w*(„w*(x*(†w*(ˆw*(Šw*(Œw*rÃps5 ("x*r©ps5 ("x*(²w*(Žw*(w*(’w*(tw*(”w*(vw*(xw*(zw*(|w*((x*(*x*(~w*(`w*(nw*(Xw*(€w*(^w*(bw*(jw*ráNp($x*råNp($x*(hw*(x*(x*( v(Ï3 (dx*( v(Ï3 (Zx*( v(Ï3 (Vx*( v(Ï3 (`x*( v(Ï3 (bx*( v(Ï3 (Xx*( v(Ï3 (^x*( v(Ï3 (\x*(Ï3 (Rx*{­AoSv,{­AoTv+,3r©ps o; o: (òˆsû£(¤(¥+{­AoRv-{«A(+ (¯“(úv* V8šêÿÿ{­AoRv(o; o: (òˆ(¶£-{«A(+ (¯“(úv* V8Cêÿÿo; o: (òˆ(Ï3 (v {«A(‡“s {«A(+ ( (å3 {ªA(+,8{«A(+ (–“(Å“{«A(+ (–“s5vsæ3 +<{«A(+ (˜“(Å“{«A(+ (˜“s7vsæ3 (ç3 (è3 (Ï (Z (Y sK (îv(+ - *þo + *(Ï3 {«A(+ (é3 9Ø  (ê3 (ë3 (‹“@© (é3 !o; o: (òˆ{«A(‰“s !( (å3 {«A(+ (˜“(Å“sK (ðv (Ò (Z (Y  (+"-"*{«A(+ (˜“ þ((v* (é3 !(Ñ(w*(Ð(w*(Ï3 o; o: (òˆ{«A(+ (é3 9ƒ  (é3 !{«A!(å3 {«A(+ (–“(Å“sK (òv (Ô (Z (Y  (+"-"*{«A(+ (–“ þ((v*(Ó(w*(Õ (Z (Y {«A(+ (¯“(öv( + - * V8çÿÿ(Ï3 (·(w*{«A(+ (¯“(w*¬ð û%V a%Ì ×%$ /- Í-‚ -ä ï-$%I2~%£2Ù/ ): Y -Ž 6Ä /  -¤ Ä -0#!(vonE µ-x¨ßr°©ps\ zo; o: (òˆ (Ï3 (v (@¥,7-{«A(+ (±“(üv* 8hÿÿÿ{«A(+ X(˜“(Å“(üv -*{«A(+ X(˜“ þ((v*(Ï3 o; o: (òˆ (@¥,7-{«A(+ (±“(üv* 8Ãþÿÿ:Ó{«A(+ (é3 9± (ê3 (ë3 (‹“@ƒ(é3 o; o: (òˆ{«A(‰“s ( (å3 -#{«A(+ (–“(Å“sK (ðv*{«A(+ (–“ þ((v*(é3 (Ñ(w*(Ð(w*-{«A(+ (˜“(Å“(üv*{«A(+ (˜“ þ((v*(Ï3 o; o: (òˆ (@¥,7-{«A(+ (±“(üv* 8Kýÿÿ:~{«A(+ (é3 ,_ (é3 {«A(å3 -"{«A(+ (–“(Å“sK (òv*{«A(+ (–“ þ((v*(Ó(w*{«A(+ Y(˜“(Å“(üv (Ö(Z (Y (+-*{«A(+ Y(˜“ þ((v*o: oEo/  8,üÿÿ-{«A(+ (±“(üv* 8õûÿÿ{«A(+ (±“(w*0O !(vonE —årÄ©ps\ zo: oEo/ u',@t' {ûM {üM {úM - (±“(üv* þ('v*t'{ùM - (¯“(öv* Vþ(&v*u',*t' {ûM {üM {úM (±“(w*t'{ùM (¯“(w*(×(Z (Y {«A(+ (¯“(öv( +-* Vþ(&v*0 !(vonE JŽâ1€üB›à%jr>Eps\ zo: oEo/ -{«A(+ (³“(w*þ(v*(Ï3 o^ (Ov(Ev-{«A(+ (³“(w*þ(v*(Ï3 o^ o^ o^ (Iv(Ev-{«A(+ (³“(w*þ(v*(Ï3 ob YoL (Mvi(Dv-{«A(+ (³“(w*þ(v*(Ï3 ob YoL (Lvi(Dv-{«A(+ (³“(w*þ(v*(Ï3 ob YoL (Nv (Ý3 (Þ3 , (ì3 i(Dv+i(Dv-{«A(+ (³“(w*þ(v*o; o: (òˆoYþ(+*o; o: (òˆoYþ(+*o: oEo/ (Ï3 (ˆ o‰ o_-{«A(+ (³“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (³“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (³“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (³“(w*þ(v*{«A(+ (³“(w*(Ï3 (ˆ o‰ o_-{«A(+ (³“(w*þ(v*0A(vonE ?b…Þ#h­ÄrÔ©ps\ z"(Ev-{«A(+ (µ“(w*þ(v*o; o: (òˆoYþ(+*o; o: (òˆoYþ(+*o: oEo/ (Ï3 (ˆ o‰ o_-{«A(+ (µ“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (µ“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (µ“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (µ“(w*þ(v*{«A(+ (µ“(w*(Ï3 (ˆ o‰ o_-{«A(+ (µ“(w*þ(v*0â(vonE .‡ÌVmrò©ps\ zo; o: (òˆoYþ(+*o: oEo/ (Ï3 (ˆ o‰ o_-{«A(+ (·“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (·“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (·“(w*þ(v*(Ï3 (ˆ o‰ o_-{«A(+ (·“(w*þ(v*{«A(+ (·“(w*(Ï3 (ˆ o‰ o_-{«A(+ (·“(w*þ(v*0ô(vonE Tj¤rªps\ z( vo: oEo/ -{«A(+ (¯“(þv* Vþ(&v*{«A(+ (¯“(w*(Ï3 (v-{«A(+ (»“(þv*þ(v*-{«A(+ (¯“(þv* Vþ(&v*0M(vonE 4_ŠµÞ H£Ìär:ªps\ z-{«A(+ (¹“(ôv*þ(v*-{«A(+ (½“(ôv*Rþ(.v*-{«A(+ (Á“(ôv*þ(0v*-{«A(+ (¿“(ôv*9þ(/v*-{«A(+ (¹“(ôv*þ(v*-{«A(+ X(¹“(ôv*Xþ(v*o: oEo/ -{«A(+ (¹“(ôv*þ(v*1--{«A(+ Y(¹“(ôv*Yþ(v*-{«A(+ (¯“(ôv* Vþ(&v*-{«A(+ (¹“(ôv*þ(v*{«A(+ (¹“(w*-{«A(+ (¹“(ôv*þ(v*0p(vonE S‡°ørJªps\ zo: oEo/ -{«A(+ (½“(ôv*R8ÿÿÿ-{«A(+ (½“(ôv*R8Mÿÿÿ-{«A(+ (¹“(ôv*þ(v*o: oEo/ -{«A(+ (½“(ôv*R8Üþÿÿ{«A(+ (½“(w*-{«A(+ (½“(ôv*R8þÿÿ0Y(vonE <e™áùrjªps\ z-{«A(+ (¿“(ôv*9+˜-{«A(+ (¹“(ôv*þ(v*-{«A(+ (¿“(ôv*98;ÿÿÿo: oEo/ -{«A(+ (¿“(ôv*98óþÿÿ{«A(+ (¿“(w*-{«A(+ (¿“(ôv*98§þÿÿ0$(vonE 4h°Èršªps\ z-{«A(+ (¹“(ôv*þ(v*-{«A(+ (Á“(ôv*8pÿÿÿo: oEo/ -{«A(+ (Á“(ôv*8(ÿÿÿ{«A(+ (Á“(w*-{«A(+ (Á“(ôv*8Üþÿÿ0¢ !(vonE gªÔþ-DrЪps\ zd(e o; o: (òˆ s9v(v&-{«A(+ (Ó(ôv*8jÿÿÿo: oEo/ -{«A(+ (Ó(ôv*8'ÿÿÿ-{«A(+ (¯“(ôv* Vþ(&v*-{«A(+ (¯“(ôv* Vþ(&v*-{«A(+ (Ó(ôv*8¤þÿÿ{«A(+ (Ó(w*-{«A(+ (Ó(ôv*8^þÿÿ6€¥A~¥A&*’(î3 }ï3 }ð3 }ñ3 }ò3 *0  !{ð3 {ò3 ož+ ,T{ñ3 (Gv,{ñ3 (Fv(lx*{ï3 {ð3 (¸ (Z (Y (+&{ñ3 (Fv(lx*(ˆ ŽioX (jx*r( }œA}A}žA*0 !{žA{œA{A þ((v*r( }ŸA} A}¡A*0 !{¡A{ŸA{ A þ((v*(- *Z(ˆ ŽioX (jx*0–W Ç% Ÿ€%ÐÐ>(E ¤% Ÿ€%ÐÑ>(E ¤% Ÿ€%ÐÒ>(E ¤% Ÿ€%ÐÓ>(E ¤% Ÿ€%ÐÔ>(E ¤% Ÿ€%ÐÕ>(E ¤% Ÿ€%ÐÖ>(E ¤% Ÿ€%Ð×>(E ¤% Ÿ€%ÐØ>(E ¤% Ÿ€%ÐÙ>(E ¤% Ÿ€%ÐÚ>(E ¤% Ÿ€%ÐÛ>(E ¤% Ÿ€%ÐÜ>(E ¤% Ÿ€%ÐÝ>(E ¤% Ÿ€%ÐÞ>(E ¤% Ÿ€%Ðß>(E ¤% Ÿ€%Ðà>(E ¤% Ÿ€%Ðá>(E ¤% Ÿ€%Ðâ>(E ¤% Ÿ€%Ðã>(E ¤% Ÿ€%Ðä>(E ¤% Ÿ€%Ðå>(E ¤% Ÿ€%Ðæ>(E ¤% Ÿ€%Ðç>(E ¤% Ÿ€%Ðè>(E ¤% Ÿ€%Ðé>(E ¤% Ÿ€%Ðê>(E ¤% Ÿ€%Ðë>(E ¤% Ÿ€%Ðì>(E ¤% Ÿ€%Ðí>(E ¤% Ÿ€%Ðî>(E ¤% Ÿ€%Ðï>(E ¤% Ÿ€%Ðð>(E ¤%! Ÿ€%Ðñ>(E ¤%" Ÿ€%Ðò>(E ¤%# Ÿ€%Ðó>(E ¤%$ Ÿ€%Ðô>(E ¤%% Ÿ€%Ðõ>(E ¤%& Ÿ€%Ðö>(E ¤%' Ÿ€%Ð÷>(E ¤%( Ÿ€%Ðø>(E ¤%) Ÿ€%Ðù>(E ¤%* Ÿ€%Ðú>(E ¤%+ Ÿ€%Ðû>(E ¤%, Ÿ€%Ðü>(E ¤%- Ÿ€%Ðý>(E ¤%. Ÿ€%Ðþ>(E ¤%/ Ÿ€%Ðÿ>(E ¤%0 Ÿ€%Ð?(E ¤%1 Ÿ€%Ð?(E ¤%2 Ÿ€%Ð?(E ¤%3 Ÿ€%Ð?(E ¤%4 Ÿ€%Ð?(E ¤%5 Ÿ€%Ð?(E ¤%6 Ÿ€%Ð?(E ¤%7 Ÿ€%Ð?(E ¤%8 Ÿ€%Ð?(E ¤%9 Ÿ€%Ð ?(E ¤%: Ÿ€%Ð ?(E ¤%; Ÿ€%Ð ?(E ¤%< Ÿ€%Ð ?(E ¤%= Ÿ€%Ð ?(E ¤%> Ÿ€%Ð?(E ¤%? Ÿ€%Ð?(E ¤%@ Ÿ€%Ð?(E ¤%A Ÿ€%Ð?(E ¤%B Ÿ€%Ð?(E ¤%C Ÿ€%Ð?(E ¤%D Ÿ€%Ð?(E ¤%E Ÿ€%Ð?(E ¤%F Ÿ€%Ð?(E ¤%G Ÿ€%Ð?(E ¤%H Ÿ€%Ð?(E ¤%I Ÿ€%Ð?(E ¤%J Ÿ€%Ð?(E ¤%K Ÿ€%Ð?(E ¤%L Ÿ€%Ð?(E ¤%M Ÿ€%Ð?(E ¤%N Ÿ€%Ð?(E ¤%O Ÿ€%Ð?(E ¤%P Ÿ€%Ð ?(E ¤%Q Ÿ€%Ð!?(E ¤%R Ÿ€%Ð"?(E ¤%S Ÿ€%Ð#?(E ¤%T Ÿ€%Ð$?(E ¤%U Ÿ€%Ð%?(E ¤%V Ÿ€%Ð&?(E ¤%W Ÿ€%Ð'?(E ¤%X Ÿ€%Ð(?(E ¤%Y Ÿ€%Ð)?(E ¤%Z Ÿ€%Ð*?(E ¤%[ Ÿ€%Ð+?(E ¤%\ Ÿ€%Ð,?(E ¤%] Ÿ€%Ð-?(E ¤%^ Ÿ€%Ð.?(E ¤%_ Ÿ€%Ð/?(E ¤%` Ÿ€%Ð0?(E ¤%a Ÿ€%Ð1?(E ¤%b Ÿ€%Ð2?(E ¤%c Ÿ€%Ð3?(E ¤%d Ÿ€%Ð4?(E ¤%e Ÿ€%Ð5?(E ¤%f Ÿ€%Ð6?(E ¤%g Ÿ€%Ð7?(E ¤%h Ÿ€%Ð8?(E ¤%i Ÿ€%Ð9?(E ¤%j Ÿ€%Ð:?(E ¤%k Ÿ€%Ð;?(E ¤%l Ÿ€%Ð?(E ¤%o Ÿ€%Ð??(E ¤%p Ÿ€%Ð@?(E ¤%q Ÿ€%ÐA?(E ¤%r Ÿ€%ÐB?(E ¤%s Ÿ€%ÐC?(E ¤%t Ÿ€%ÐD?(E ¤%u Ÿ€%ÐE?(E ¤%v Ÿ€%ÐF?(E ¤%w Ÿ€%ÐG?(E ¤%x Ÿ€%ÐH?(E ¤%y Ÿ€%ÐI?(E ¤%z Ÿ€%ÐJ?(E ¤%{ Ÿ€%ÐK?(E ¤%| Ÿ€%ÐL?(E ¤%} Ÿ€%ÐM?(E ¤%~ Ÿ€%ÐN?(E ¤% Ÿ€%ÐO?(E ¤% € Ÿ€%ÐP?(E ¤% Ÿ€%ÐQ?(E ¤% ‚ Ÿ€%ÐR?(E ¤% ƒ Ÿ€%ÐS?(E ¤% „ Ÿ€%ÐT?(E ¤% … Ÿ€%ÐU?(E ¤% † Ÿ€%ÐV?(E ¤% ‡ Ÿ€%ÐW?(E ¤% ˆ Ÿ€%ÐX?(E ¤% ‰ Ÿ€%ÐY?(E ¤% Š Ÿ€%ÐZ?(E ¤% ‹ Ÿ€%Ð[?(E ¤% Œ Ÿ€%Ð\?(E ¤% Ÿ€%Ð]?(E ¤% Ž Ÿ€%Ð^?(E ¤% Ÿ€%Ð_?(E ¤% Ÿ€%Ð`?(E ¤% ‘ Ÿ€%Ða?(E ¤% ’ Ÿ€%Ðb?(E ¤% “ Ÿ€%Ðc?(E ¤% ” Ÿ€%Ðd?(E ¤% • Ÿ€%Ðe?(E ¤% – Ÿ€%Ðf?(E ¤% — Ÿ€%Ðg?(E ¤% ˜ Ÿ€%Ðh?(E ¤% ™ Ÿ€%Ði?(E ¤% š Ÿ€%Ðj?(E ¤% › Ÿ€%Ðk?(E ¤% œ Ÿ€%Ðl?(E ¤% Ÿ€%Ðm?(E ¤% ž Ÿ€%Ðn?(E ¤% Ÿ Ÿ€%Ðo?(E ¤%   Ÿ€%Ðp?(E ¤% ¡ Ÿ€%Ðq?(E ¤% ¢ Ÿ€%Ðr?(E ¤% £ Ÿ€%Ðs?(E ¤% ¤ Ÿ€%Ðt?(E ¤% ¥ Ÿ€%Ðu?(E ¤% ¦ Ÿ€%Ðv?(E ¤% § Ÿ€%Ðw?(E ¤% ¨ Ÿ€%Ðx?(E ¤% © Ÿ€%Ðy?(E ¤% ª Ÿ€%Ðz?(E ¤% « Ÿ€%Ð{?(E ¤% ¬ Ÿ€%Ð|?(E ¤% ­ Ÿ€%Ð}?(E ¤% ® Ÿ€%Ð~?(E ¤% ¯ Ÿ€%Ð?(E ¤% ° Ÿ€%Ѐ?(E ¤% ± Ÿ€%Ð?(E ¤% ² Ÿ€%Ђ?(E ¤% ³ Ÿ€%Ѓ?(E ¤% ´ Ÿ€%Є?(E ¤% µ Ÿ€%Ð…?(E ¤% ¶ Ÿ€%І?(E ¤% · Ÿ€%Ї?(E ¤% ¸ Ÿ€%Ј?(E ¤% ¹ Ÿ€%Љ?(E ¤% º Ÿ€%Њ?(E ¤% » Ÿ€%Ћ?(E ¤% ¼ Ÿ€%ÐŒ?(E ¤% ½ Ÿ€%Ð?(E ¤% ¾ Ÿ€%ÐŽ?(E ¤% ¿ Ÿ€%Ð?(E ¤% À Ÿ€%Ð?(E ¤% Á Ÿ€%Б?(E ¤%  Ÿ€%Ð’?(E ¤% à Ÿ€%Г?(E ¤% Ä Ÿ€%Д?(E ¤% Å Ÿ€%Е?(E ¤% Æ Ÿ€%Ж?(E ¤% Ç Ÿ€%З?(E ¤% È Ÿ€%И?(E ¤% É Ÿ€%Й?(E ¤% Ê Ÿ€%К?(E ¤% Ë Ÿ€%Л?(E ¤% Ì Ÿ€%М?(E ¤% Í Ÿ€%Ð?(E ¤% Î Ÿ€%О?(E ¤% Ï Ÿ€%П?(E ¤% Ð Ÿ€%Р?(E ¤% Ñ Ÿ€%С?(E ¤% Ò Ÿ€%Т?(E ¤% Ó Ÿ€%У?(E ¤% Ô Ÿ€%Ф?(E ¤% Õ Ÿ€%Ð¥?(E ¤% Ö Ÿ€%Ц?(E ¤% × Ÿ€%Ч?(E ¤% Ø Ÿ€%Ш?(E ¤% Ù Ÿ€%Щ?(E ¤% Ú Ÿ€%Ъ?(E ¤% Û Ÿ€%Ы?(E ¤% Ü Ÿ€%Ь?(E ¤% Ý Ÿ€%Э?(E ¤% Þ Ÿ€%Ю?(E ¤% ß Ÿ€%Я?(E ¤% à Ÿ€%а?(E ¤% á Ÿ€%б?(E ¤% â Ÿ€%в?(E ¤% ã Ÿ€%г?(E ¤% ä Ÿ€%д?(E ¤% å Ÿ€%е?(E ¤% æ Ÿ€%ж?(E ¤% ç Ÿ€%з?(E ¤% è Ÿ€%и?(E ¤% é Ÿ€%й?(E ¤% ê Ÿ€%к?(E ¤% ë Ÿ€%л?(E ¤% ì Ÿ€%м?(E ¤% í Ÿ€%н?(E ¤% î Ÿ€%о?(E ¤% ï Ÿ€%п?(E ¤% 𠟀%ÐÀ?(E ¤% ñ Ÿ€%ÐÁ?(E ¤% ò Ÿ€%ÐÂ?(E ¤% ó Ÿ€%ÐÃ?(E ¤% ô Ÿ€%ÐÄ?(E ¤% õ Ÿ€%ÐÅ?(E ¤% ö Ÿ€%ÐÆ?(E ¤% ÷ Ÿ€%ÐÇ?(E ¤% ø Ÿ€%ÐÈ?(E ¤% ù Ÿ€%ÐÉ?(E ¤% ú Ÿ€%ÐÊ?(E ¤% û Ÿ€%ÐË?(E ¤% ü Ÿ€%ÐÌ?(E ¤% ý Ÿ€%ÐÍ?(E ¤% þ Ÿ€%ÐÎ?(E ¤% ÿ Ÿ€%ÐÏ?(E ¤%  Ÿ€%ÐÐ?(E ¤%  Ÿ€%ÐÑ?(E ¤%  Ÿ€%ÐÒ?(E ¤%  Ÿ€%ÐÓ?(E ¤%  Ÿ€%ÐÔ?(E ¤%  Ÿ€%ÐÕ?(E ¤%  Ÿ€%ÐÖ?(E ¤%  Ÿ€%Ð×?(E ¤%  Ÿ€%ÐØ?(E ¤%  Ÿ€%ÐÙ?(E ¤%  Ÿ€%ÐÚ?(E ¤%  Ÿ€%ÐÛ?(E ¤%  Ÿ€%ÐÜ?(E ¤%  Ÿ€%ÐÝ?(E ¤%  Ÿ€%ÐÞ?(E ¤%  Ÿ€%Ðß?(E ¤%  Ÿ€%Ðà?(E ¤%  Ÿ€%Ðá?(E ¤%  Ÿ€%Ðâ?(E ¤%  Ÿ€%Ðã?(E ¤%  Ÿ€%Ðä?(E ¤%  Ÿ€%Ðå?(E ¤%  Ÿ€%Ðæ?(E ¤%  Ÿ€%Ðç?(E ¤%  Ÿ€%Ðè?(E ¤%  Ÿ€%Ðé?(E ¤%  Ÿ€%Ðê?(E ¤%  Ÿ€%Ðë?(E ¤%  Ÿ€%Ðì?(E ¤%  Ÿ€%Ðí?(E ¤%  Ÿ€%Ðî?(E ¤%  Ÿ€%Ðï?(E ¤%  Ÿ€%Ðð?(E ¤% ! Ÿ€%Ðñ?(E ¤% " Ÿ€%Ðò?(E ¤% # Ÿ€%Ðó?(E ¤% $ Ÿ€%Ðô?(E ¤% % Ÿ€%Ðõ?(E ¤% & Ÿ€%Ðö?(E ¤% ' Ÿ€%Ð÷?(E ¤% ( Ÿ€%Ðø?(E ¤% ) Ÿ€%Ðù?(E ¤% * Ÿ€%Ðú?(E ¤% + Ÿ€%Ðû?(E ¤% , Ÿ€%Ðü?(E ¤% - Ÿ€%Ðý?(E ¤% . Ÿ€%Ðþ?(E ¤% / Ÿ€%Ðÿ?(E ¤% 0 Ÿ€%Ð@(E ¤% 1 Ÿ€%Ð@(E ¤% 2 Ÿ€%Ð@(E ¤% 3 Ÿ€%Ð@(E ¤% 4 Ÿ€%Ð@(E ¤% 5 Ÿ€%Ð@(E ¤% 6 Ÿ€%Ð@(E ¤% 7 Ÿ€%Ð@(E ¤% 8 Ÿ€%Ð@(E ¤% 9 Ÿ€%Ð @(E ¤% : Ÿ€%Ð @(E ¤% ; Ÿ€%Ð @(E ¤% < Ÿ€%Ð @(E ¤% = Ÿ€%Ð @(E ¤% > Ÿ€%Ð@(E ¤% ? Ÿ€%Ð@(E ¤% @ Ÿ€%Ð@(E ¤% A Ÿ€%Ð@(E ¤% B Ÿ€%Ð@(E ¤% C Ÿ€%Ð@(E ¤% D Ÿ€%Ð@(E ¤% E Ÿ€%Ð@(E ¤% F Ÿ€%Ð@(E ¤% G Ÿ€%Ð@(E ¤% H Ÿ€%Ð@(E ¤% I Ÿ€%Ð@(E ¤% J Ÿ€%Ð@(E ¤% K Ÿ€%Ð@(E ¤% L Ÿ€%Ð@(E ¤% M Ÿ€%Ð@(E ¤% N Ÿ€%Ð@(E ¤% O Ÿ€%Ð@(E ¤% P Ÿ€%Ð @(E ¤% Q Ÿ€%Ð!@(E ¤% R Ÿ€%Ð"@(E ¤% S Ÿ€%Ð#@(E ¤% T Ÿ€%Ð$@(E ¤% U Ÿ€%Ð%@(E ¤% V Ÿ€%Ð&@(E ¤% W Ÿ€%Ð'@(E ¤% X Ÿ€%Ð(@(E ¤% Y Ÿ€%Ð)@(E ¤% Z Ÿ€%Ð*@(E ¤% [ Ÿ€%Ð+@(E ¤% \ Ÿ€%Ð,@(E ¤% ] Ÿ€%Ð-@(E ¤% ^ Ÿ€%Ð.@(E ¤% _ Ÿ€%Ð/@(E ¤% ` Ÿ€%Ð0@(E ¤% a Ÿ€%Ð1@(E ¤% b Ÿ€%Ð2@(E ¤% c Ÿ€%Ð3@(E ¤% d Ÿ€%Ð4@(E ¤% e Ÿ€%Ð5@(E ¤% f Ÿ€%Ð6@(E ¤% g Ÿ€%Ð7@(E ¤% h Ÿ€%Ð8@(E ¤% i Ÿ€%Ð9@(E ¤% j Ÿ€%Ð:@(E ¤% k Ÿ€%Ð;@(E ¤% l Ÿ€%Ð<@(E ¤% m Ÿ€%Ð=@(E ¤% n Ÿ€%Ð>@(E ¤% o Ÿ€%Ð?@(E ¤% p Ÿ€%Ð@@(E ¤% q Ÿ€%ÐA@(E ¤% r Ÿ€%ÐB@(E ¤% s Ÿ€%ÐC@(E ¤% t Ÿ€%ÐD@(E ¤% u Ÿ€%ÐE@(E ¤% v Ÿ€%ÐF@(E ¤% w Ÿ€%ÐG@(E ¤% x Ÿ€%ÐH@(E ¤% y Ÿ€%ÐI@(E ¤% z Ÿ€%ÐJ@(E ¤% { Ÿ€%ÐK@(E ¤% | Ÿ€%ÐL@(E ¤% } Ÿ€%ÐM@(E ¤% ~ Ÿ€%ÐN@(E ¤%  Ÿ€%ÐO@(E ¤% € Ÿ€%ÐP@(E ¤%  Ÿ€%ÐQ@(E ¤% ‚ Ÿ€%ÐR@(E ¤% ƒ Ÿ€%ÐS@(E ¤% „ Ÿ€%ÐT@(E ¤% … Ÿ€%ÐU@(E ¤% † Ÿ€%ÐV@(E ¤% ‡ Ÿ€%ÐW@(E ¤% ˆ Ÿ€%ÐX@(E ¤% ‰ Ÿ€%ÐY@(E ¤% Š Ÿ€%ÐZ@(E ¤% ‹ Ÿ€%Ð[@(E ¤% Œ Ÿ€%Ð\@(E ¤%  Ÿ€%Ð]@(E ¤% Ž Ÿ€%Ð^@(E ¤%  Ÿ€%Ð_@(E ¤%  Ÿ€%Ð`@(E ¤% ‘ Ÿ€%Ða@(E ¤% ’ Ÿ€%Ðb@(E ¤% “ Ÿ€%Ðc@(E ¤% ” Ÿ€%Ðd@(E ¤% • Ÿ€%Ðe@(E ¤% – Ÿ€%Ðf@(E ¤% — Ÿ€%Ðg@(E ¤% ˜ Ÿ€%Ðh@(E ¤% ™ Ÿ€%Ði@(E ¤% š Ÿ€%Ðj@(E ¤% › Ÿ€%Ðk@(E ¤% œ Ÿ€%Ðl@(E ¤%  Ÿ€%Ðm@(E ¤% ž Ÿ€%Ðn@(E ¤% Ÿ Ÿ€%Ðo@(E ¤%   Ÿ€%Ðp@(E ¤% ¡ Ÿ€%Ðq@(E ¤% ¢ Ÿ€%Ðr@(E ¤% £ Ÿ€%Ðs@(E ¤% ¤ Ÿ€%Ðt@(E ¤% ¥ Ÿ€%Ðu@(E ¤% ¦ Ÿ€%Ðv@(E ¤% § Ÿ€%Ðw@(E ¤% ¨ Ÿ€%Ðx@(E ¤% © Ÿ€%Ðy@(E ¤% ª Ÿ€%Ðz@(E ¤% « Ÿ€%Ð{@(E ¤% ¬ Ÿ€%Ð|@(E ¤% ­ Ÿ€%Ð}@(E ¤% ® Ÿ€%Ð~@(E ¤% ¯ Ÿ€%Ð@(E ¤% ° Ÿ€%Ѐ@(E ¤% ± Ÿ€%Ð@(E ¤% ² Ÿ€%Ђ@(E ¤% ³ Ÿ€%Ѓ@(E ¤% ´ Ÿ€%Є@(E ¤% µ Ÿ€%Ð…@(E ¤% ¶ Ÿ€%І@(E ¤% · Ÿ€%Ї@(E ¤% ¸ Ÿ€%Ј@(E ¤% ¹ Ÿ€%Љ@(E ¤% º Ÿ€%Њ@(E ¤% » Ÿ€%Ћ@(E ¤% ¼ Ÿ€%ÐŒ@(E ¤% ½ Ÿ€%Ð@(E ¤% ¾ Ÿ€%ÐŽ@(E ¤% ¿ Ÿ€%Ð@(E ¤% À Ÿ€%Ð@(E ¤% Á Ÿ€%Б@(E ¤%  Ÿ€%Ð’@(E ¤% à Ÿ€%Г@(E ¤% Ä Ÿ€%Д@(E ¤% Å Ÿ€%Е@(E ¤% Æ Ÿ€%Ж@(E ¤% Ç Ÿ€%З@(E ¤% È Ÿ€%И@(E ¤% É Ÿ€%Й@(E ¤% Ê Ÿ€%К@(E ¤% Ë Ÿ€%Л@(E ¤% Ì Ÿ€%М@(E ¤% Í Ÿ€%Ð@(E ¤% Î Ÿ€%О@(E ¤% Ï Ÿ€%П@(E ¤% Ð Ÿ€%Р@(E ¤% Ñ Ÿ€%С@(E ¤% Ò Ÿ€%Т@(E ¤% Ó Ÿ€%У@(E ¤% Ô Ÿ€%Ф@(E ¤% Õ Ÿ€%Ð¥@(E ¤% Ö Ÿ€%Ц@(E ¤% × Ÿ€%Ч@(E ¤% Ø Ÿ€%Ш@(E ¤% Ù Ÿ€%Щ@(E ¤% Ú Ÿ€%Ъ@(E ¤% Û Ÿ€%Ы@(E ¤% Ü Ÿ€%Ь@(E ¤% Ý Ÿ€%Э@(E ¤% Þ Ÿ€%Ю@(E ¤% ß Ÿ€%Я@(E ¤% à Ÿ€%а@(E ¤% á Ÿ€%б@(E ¤% â Ÿ€%в@(E ¤% ã Ÿ€%г@(E ¤% ä Ÿ€%д@(E ¤% å Ÿ€%е@(E ¤% æ Ÿ€%ж@(E ¤% ç Ÿ€%з@(E ¤% è Ÿ€%и@(E ¤% é Ÿ€%й@(E ¤% ê Ÿ€%к@(E ¤% ë Ÿ€%л@(E ¤% ì Ÿ€%м@(E ¤% í Ÿ€%н@(E ¤% î Ÿ€%о@(E ¤% ï Ÿ€%п@(E ¤% 𠟀%ÐÀ@(E ¤% ñ Ÿ€%ÐÁ@(E ¤% ò Ÿ€%ÐÂ@(E ¤% ó Ÿ€%ÐÃ@(E ¤% ô Ÿ€%ÐÄ@(E ¤% õ Ÿ€%ÐÅ@(E ¤% ö Ÿ€%ÐÆ@(E ¤% ÷ Ÿ€%ÐÇ@(E ¤% ø Ÿ€%ÐÈ@(E ¤% ù Ÿ€%ÐÉ@(E ¤% ú Ÿ€%ÐÊ@(E ¤% û Ÿ€%ÐË@(E ¤% ü Ÿ€%ÐÌ@(E ¤% ý Ÿ€%ÐÍ@(E ¤% þ Ÿ€%ÐÎ@(E ¤% ÿ Ÿ€%ÐÏ@(E ¤%  Ÿ€%ÐÐ@(E ¤%  Ÿ€%ÐÑ@(E ¤%  Ÿ€%ÐÒ@(E ¤%  Ÿ€%ÐÓ@(E ¤%  Ÿ€%ÐÔ@(E ¤%  Ÿ€%ÐÕ@(E ¤%  Ÿ€%ÐÖ@(E ¤%  Ÿ€%Ð×@(E ¤%  Ÿ€%ÐØ@(E ¤%  Ÿ€%ÐÙ@(E ¤%  Ÿ€%ÐÚ@(E ¤%  Ÿ€%ÐÛ@(E ¤%  Ÿ€%ÐÜ@(E ¤%  Ÿ€%ÐÝ@(E ¤%  Ÿ€%ÐÞ@(E ¤%  Ÿ€%Ðß@(E ¤%  Ÿ€%Ðà@(E ¤%  Ÿ€%Ðá@(E ¤%  Ÿ€%Ðâ@(E ¤%  Ÿ€%Ðã@(E ¤%  Ÿ€%Ðä@(E ¤%  Ÿ€%Ðå@(E ¤%  Ÿ€%Ðæ@(E ¤%  Ÿ€%Ðç@(E ¤%  Ÿ€%Ðè@(E ¤%  Ÿ€%Ðé@(E ¤%  Ÿ€%Ðê@(E ¤%  Ÿ€%Ðë@(E ¤%  Ÿ€%Ðì@(E ¤%  Ÿ€%Ðí@(E ¤%  Ÿ€%Ðî@(E ¤%  Ÿ€%Ðï@(E ¤%  Ÿ€%Ðð@(E ¤% ! Ÿ€%Ðñ@(E ¤% " Ÿ€%Ðò@(E ¤% # Ÿ€%Ðó@(E ¤% $ Ÿ€%Ðô@(E ¤% % Ÿ€%Ðõ@(E ¤% & Ÿ€%Ðö@(E ¤% ' Ÿ€%Ð÷@(E ¤% ( Ÿ€%Ðø@(E ¤% ) Ÿ€%Ðù@(E ¤% * Ÿ€%Ðú@(E ¤% + Ÿ€%Ðû@(E ¤% , Ÿ€%Ðü@(E ¤% - Ÿ€%Ðý@(E ¤% . Ÿ€%Ðþ@(E ¤% / Ÿ€%Ðÿ@(E ¤% 0 Ÿ€%ÐA(E ¤% 1 Ÿ€%ÐA(E ¤% 2 Ÿ€%ÐA(E ¤% 3 Ÿ€%ÐA(E ¤% 4 Ÿ€%ÐA(E ¤% 5 Ÿ€%ÐA(E ¤% 6 Ÿ€%ÐA(E ¤% 7 Ÿ€%ÐA(E ¤% 8 Ÿ€%ÐA(E ¤% 9 Ÿ€%Ð A(E ¤% : Ÿ€%Ð A(E ¤% ; Ÿ€%Ð A(E ¤% < Ÿ€%Ð A(E ¤% = Ÿ€%Ð A(E ¤% > Ÿ€%ÐA(E ¤% ? Ÿ€%ÐA(E ¤% @ Ÿ€%ÐA(E ¤% A Ÿ€%ÐA(E ¤% B Ÿ€%ÐA(E ¤% C Ÿ€%ÐA(E ¤% D Ÿ€%ÐA(E ¤% E Ÿ€%ÐA(E ¤% F Ÿ€%ÐA(E ¤% G Ÿ€%ÐA(E ¤% H Ÿ€%ÐA(E ¤% I Ÿ€%ÐA(E ¤% J Ÿ€%ÐA(E ¤% K Ÿ€%ÐA(E ¤% L Ÿ€%ÐA(E ¤% M Ÿ€%ÐA(E ¤% N Ÿ€%ÐA(E ¤% O Ÿ€%ÐA(E ¤% P Ÿ€%Ð A(E ¤% Q Ÿ€%Ð!A(E ¤% R Ÿ€%Ð"A(E ¤% S Ÿ€%Ð#A(E ¤% T Ÿ€%Ð$A(E ¤% U Ÿ€%Ð%A(E ¤% V Ÿ€%Ð&A(E ¤% W Ÿ€%Ð'A(E ¤% X Ÿ€%Ð(A(E ¤% Y Ÿ€%Ð)A(E ¤% Z Ÿ€%Ð*A(E ¤% [ Ÿ€%Ð+A(E ¤% \ Ÿ€%Ð,A(E ¤% ] Ÿ€%Ð-A(E ¤% ^ Ÿ€%Ð.A(E ¤% _ Ÿ€%Ð/A(E ¤% ` Ÿ€%Ð0A(E ¤% a Ÿ€%Ð1A(E ¤% b Ÿ€%Ð2A(E ¤% c Ÿ€%Ð3A(E ¤% d Ÿ€%Ð4A(E ¤% e Ÿ€%Ð5A(E ¤% f Ÿ€%Ð6A(E ¤% g Ÿ€%Ð7A(E ¤% h Ÿ€%Ð8A(E ¤% i Ÿ€%Ð9A(E ¤% j Ÿ€%Ð:A(E ¤% k Ÿ€%Ð;A(E ¤% l Ÿ€%ÐA(E ¤% o Ÿ€%Ð?A(E ¤% p Ÿ€%Ð@A(E ¤% q Ÿ€%ÐAA(E ¤% r Ÿ€%ÐBA(E ¤% s Ÿ€%ÐCA(E ¤% t Ÿ€%ÐDA(E ¤% u Ÿ€%ÐEA(E ¤% v Ÿ€%ÐFA(E ¤% w Ÿ€%ÐGA(E ¤% x Ÿ€%ÐHA(E ¤% y Ÿ€%ÐIA(E ¤% z Ÿ€%ÐJA(E ¤% { Ÿ€%ÐKA(E ¤% | Ÿ€%ÐLA(E ¤% } Ÿ€%ÐMA(E ¤% ~ Ÿ€%ÐNA(E ¤%  Ÿ€%ÐOA(E ¤% € Ÿ€%ÐPA(E ¤%  Ÿ€%ÐQA(E ¤% ‚ Ÿ€%ÐRA(E ¤% ƒ Ÿ€%ÐSA(E ¤% „ Ÿ€%ÐTA(E ¤% … Ÿ€%ÐUA(E ¤% † Ÿ€%ÐVA(E ¤% ‡ Ÿ€%ÐWA(E ¤% ˆ Ÿ€%ÐXA(E ¤% ‰ Ÿ€%ÐYA(E ¤% Š Ÿ€%ÐZA(E ¤% ‹ Ÿ€%Ð[A(E ¤% Œ Ÿ€%Ð\A(E ¤%  Ÿ€%Ð]A(E ¤% Ž Ÿ€%Ð^A(E ¤%  Ÿ€%Ð_A(E ¤%  Ÿ€%Ð`A(E ¤% ‘ Ÿ€%ÐaA(E ¤% ’ Ÿ€%ÐbA(E ¤% “ Ÿ€%ÐcA(E ¤% ” Ÿ€%ÐdA(E ¤% • Ÿ€%ÐeA(E ¤% – Ÿ€%ÐfA(E ¤% — Ÿ€%ÐgA(E ¤% ˜ Ÿ€%ÐhA(E ¤% ™ Ÿ€%ÐiA(E ¤% š Ÿ€%ÐjA(E ¤% › Ÿ€%ÐkA(E ¤% œ Ÿ€%ÐlA(E ¤%  Ÿ€%ÐmA(E ¤% ž Ÿ€%ÐnA(E ¤% Ÿ Ÿ€%ÐoA(E ¤%   Ÿ€%ÐpA(E ¤% ¡ Ÿ€%ÐqA(E ¤% ¢ Ÿ€%ÐrA(E ¤% £ Ÿ€%ÐsA(E ¤% ¤ Ÿ€%ÐtA(E ¤% ¥ Ÿ€%ÐuA(E ¤% ¦ Ÿ€%ÐvA(E ¤% § Ÿ€%ÐwA(E ¤% ¨ Ÿ€%ÐxA(E ¤% © Ÿ€%ÐyA(E ¤% ª Ÿ€%ÐzA(E ¤% « Ÿ€%Ð{A(E ¤% ¬ Ÿ€%Ð|A(E ¤% ­ Ÿ€%Ð}A(E ¤% ® Ÿ€%Ð~A(E ¤% ¯ Ÿ€%ÐA(E ¤% ° Ÿ€%ЀA(E ¤% ± Ÿ€%ÐA(E ¤% ² Ÿ€%ЂA(E ¤% ³ Ÿ€%ЃA(E ¤% ´ Ÿ€%ЄA(E ¤% µ Ÿ€%Ð…A(E ¤% ¶ Ÿ€%ІA(E ¤% · Ÿ€%ЇA(E ¤% ¸ Ÿ€%ЈA(E ¤% ¹ Ÿ€%ЉA(E ¤% º Ÿ€%ЊA(E ¤% » Ÿ€%ЋA(E ¤% ¼ Ÿ€%ÐŒA(E ¤% ½ Ÿ€%ÐA(E ¤% ¾ Ÿ€%ÐŽA(E ¤% ¿ Ÿ€%ÐA(E ¤% À Ÿ€%ÐA(E ¤% Á Ÿ€%БA(E ¤%  Ÿ€%Ð’A(E ¤% à Ÿ€%ГA(E ¤% Ä Ÿ€%ДA(E ¤% Å Ÿ€%ЕA(E ¤% Æ Ÿ€%ЖA(E ¤€¢A Ç€%ЗA(E €£A(v(v(o€¤A*rÞªp*:s\v*0ˆ!(¤(¡£ oó3 rêªpsýˆŒÚ$oô3 o* Þ8t o; o: (òˆÞt($¥ÞsÑ£z Þu , oâ &Ü&Ü*(:O& 18 amR(¥(Ko/ *†(¥(Ko/ sõ3 (+*Z(ˆ ŽioX (jx*JoYþ(+*R(ˆ o‰ o_*z ]oZ [oZ*0'i ]  ]oZ [oZ*0W!oY Ži[ /(%- r¿\ps z Y 2Z£¤X X3á*07!oY   Ži[Y  2 ZX£, + X X3ã*Ro÷3 oEoø3 *vi0iYdZi0iY ZXi0iYXÑ*ž02 9þþ+,i0iY*røªps\ z0c02 9þþ+,(Jv*a2 fþþ+, iaiY X*A2 Fþþ+, iAiY X*r«ps\ z0Zob . r«ps\ zo^ (Kv Zo^ (Kv ZXo^ (KvZXo^ (KvXÑ*Òob . r0«ps\ zo^ (KvZo^ (KvXÑ*0ë.ob . rB«ps\ zo^ (Kv Zo^ (Kv ZXo^ (KvZXo^ (KvX o^ (Kv Zo^ (Kv ZXo^ (KvZXo^ (KvX - Ñsù3 * Ø ZX Y [XÑ(2 Ü ZX Y ]XÑsù3 *0‹'YE{\YEkaYEUXfYEDnYE4rYE$tYEvYE* Ñ* * * * Ñ*Ñ**\*'*~o &}§A}¦A}¨A*0,{¨A ,(g *{§A*:(– }¨A*.{¨Aþ*"{¦A*^o &dsú3 }©A*0+! {©Aoû3 ,*(fx {©Aoü3 *{ªA*{«A*{¬A*{­A*{®A*²( }ªA}«A}¬A}­A}®A*0—þ9‹ ¹y7ž{®A(+bcXXX ¹y7ž{­A(+bcXXX ¹y7ž{¬A(+bcXXX ¹y7ž{«Aoý3 bcXXX ¹y7ž{ªAod bcXXX **6(n o]v*0˜!þ9†uU 9w{ªA {ªA oe ,]{«A {«A oþ3 ,A{¬A{¬A(+,+{­A{­A(+,{®A{®Aþ(+******þþ*0þ,pþ,h{ªA{ªA(e+,S{«A{«A(+,>{¬A{¬A(+,){­A{­A(+,{®A{®Aþ( +******þþ*0!uU , þo`v**V( }ÿ3 }4 *V{4 {ÿ3 þo4 *V(Ÿ }±A}²A*(Ÿ *0 (  *0 (¡ *{±A*{²A*0VÍþ,M ¹y7žtW(iv(¿+bcXXX ¹y7žtW(hv , ( +bcXXX **6(n ojv*0c*þ,Tu ,H(!+-*tW(hvtW(hv(ñ ,tW(ivtW(ivþ(À+***þþ*0^þ,Oþ,G(!+-*tW(hvtW(hv(ñ ,tW(ivtW(ivþ(Â+***þþ*0*u , þomv**V(Ÿ }³A}´A*(Ÿ *0 (  *0 (¡ *{³A*{´A*0VÍþ,M ¹y7žtX(tv(¿+bcXXX ¹y7žtX(sv , ( +bcXXX **6(n ouv*0c*þ,Tu ,H("+-*tX(svtX(sv(ñ ,tX(tvtX(tvþ(À+***þþ*0^þ,Oþ,G("+-*tX(svtX(sv(ñ ,tX(tvtX(tvþ(Â+***þþ*0*u , þoxv**~ºA*~»A*~¼A*~½A*~¾A*~¿A*~ÀA*€ÀA*0E*@oM .+(—o; o: (òˆsû£ (¤(¥+{¬AoVv*08! (}voû3 ,E(nx ’þ,2(˜o; o: (òˆsdv (¤(¥(‚v**rd«p(ñ ,>o; o>(¥ rÞªp(ñ ,(p +( Áo&Á(õ (hx*rŽ«p(ñ ,o; o>(¥(ö (hx*r®«p(ñ ,Xo; o? Œ’,4u¼,(x ¥|o¡ +o& +rR9p(hx*(‚v*º(€v-({v(++, (‚v*(ƒv*0[sœv(ä -+ob 1o^ (‹–þ+,+ (}vo4 ,rŒ^p( rŒ^p( **^s‡v€¶As‡v€·A*:( }µA*~¶A**(Œvþ*~·A**(Œvþ*{µA*Zr.8ps4 (#+o4 *01.þ, þ,{µA {µA 3*Y**þ,**:¥ZoŽv*0B!¥Z þ,%¥Zþ,{µA {µA 3*Y**¥Zþ,**0þ, (Œv3 * **6(n o‘v*0.!þ,uZ ,{µA {µA þ**þþ*0*.þ,þ,{µA {µA þ**þþ*0!uZ ,o”v**(4 *J(Šv(xs4 *(4 *0,!(4 ( 4 (Šv (n o“v,(c **( 4 *0!(4 ( 4 ( 4 *(Ñ *"(Œ–*0Uè !(ŠvrCp(Nws4 (ˆvr+Ap(ðws4 (ˆvrÀ«p(òws4 (ˆvrÆ«p(ôws4 (ˆvroaproap(dxs4 (ˆvr‘p(xs4 (ˆvr@p(úws4 (ˆvrÕ@p(Lws4 (ŠvrÔ«p(Îws4 (Švr´öp(Rws4 (Švr0Dp(xs4 (ˆvr¨Pp(üws4 (ˆvrìvp(þws4 (Švrï p(xs4 (ˆvrà«p(xs4 (Švrî«p(xs4 (ˆvrø«p(xs4 (ˆvr!@p(xs4 (ˆvrAp(Üws4 (Švr¬p(p(xs4 (ˆvrKp(Øws4 (ŠvràBp(xs4 (ˆvr3@p(Úws4 (ˆvr¬p(¶ws4 (ˆvræDp(¸ws4 (ŠvrCp(Pws4 (ˆvrbÏp(Bws4 (ŠvrTÏp(@ws4 (ˆvryp(ºws4 (Švr¸p(.xs4 (ˆvr×vp(\ws4 (ŠvrI@p(Hws4 (ˆvrõ@p(Zws4 (ˆvr’Qp(¼ws4 (ˆvrævp(¾ws4 (ˆvrªp(Àws4 (ˆvrpQp(Âws4 (ˆvrŠp(Äws4 (Švrá p( xs4 (Švr$¬p(,xs4 (ˆvrW@p(Æws4 (Švr,¬p(>ws4 (ˆvrøCp(–ws4 (ˆvrÚvp(˜ws4 (ˆvr)@p(šws4 (Švr6¬p(.xs4 (ˆvrfÁp(rws4 (ŠvrB¬p(ws4 (Švrf¬p( ws4 (Švr‚¬p(ws4 (Švr¤¬p($ws4 (ŠvrÀ¬p("ws4 (Švrܬp(ws4 (Švrö¬p((ws4 (Švr­p(,ws4 (Švr(­p(xs4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 ( 4 s–vrN­pr\­prÇwprh­pr|­pr”prAßpr’­prž­prª­pr´­prÄ­pr±WprØprÔ­prà­prî­præFpr®pr®pr$®pr.®prB®prWprP®prb®prr®p([ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ (\ ($+(%+€ºAs˜v(zv(&+€»Asšv(zv('+€¼Adsú3 €¾A(zv¥æ!o4 €¿A(voï ,$(vo4 (~v( 4 ( 4 o4 +Ð Þ(vu  , oâ &Ü&Ü&(~v€½A€ÀA*‡ 4»  *:oŒŒ(†Œ*:oG(C*08á,$ (ô (d”rÕp(­ˆ(>Œ*(d”r+Óp(­ˆ*0 j!(4 ,K (4 (4 (4 (4 (4  (h (g s4 (4 +­s4 (4 þ((+*0! (4 ()+*žrfÁpsY‰(Ú (Û (( (]‰s4 *&s4 *0p*þþ,(^sû£ (¤(¥+,(‹+(‹(æ (.‰(P”,(‰(+(!(áŠ(ó*®(³ˆ,(áŠ+ oŒŒ(ߊoŒŒ(’*>oG('*2s4 (4 *0 !s sû£ (¤þ(¥*Z(I¥(¥(¥*B(«vsrz0S!!(Ç“E (vOÄë9`‡t'{N (_ (Z (Y þ(«v*t'{N (` (Z (Y þ(«v*t'{N ( (Z (Y þ(«v*t'{N (a (Z (Y þ(«v*t'{N (b (Z (Y þ(«v*t'{N (b (Z (Y þ(«v*t'{N (c (Z (Y þ(«v*t'{!N (d (Z (Y þ(«v*t'{$N ( (Z (Y þ(«v*t'{&N (e (Z (Y þ(«v*t ' {'Nu',C{'Nt'{ùM (é3 ,) (ê3 (4 (g (Z (Y þ(«v**{'Nt'{üM (f (Z (Y þ(«v*t'{ N +”0´$!{ÍA {ÌA {ÎA {ÏA (*+(4 (4 ,($ (¥+ (  þþ,(hsû£ (¤ (¥+,(isû£ (¤ (¥+(‚‘*0m%!{ÍA {ÌA {ÎA (æ (*+ (4  (4 (  þþ,(hsû£(¤(¥+(BŒ*0&!{ÍA {ÌA {ÎA ,(jsû£ (¤ (¥+(*+(4 (4 (’(Æ (Ç (  þþ,( ’(Æ (Ç +(Æ þ(++*0Ú'!(EEB(k (Z (Y (,+*t(& {ÛK(E3Ñ{ÝK,+Ç{ÜK *t-& {ëK{I( ,¥ {ëK{I( ( :‡ÿÿÿ( *0J !({ þþ,({ þþ+,(l (Z (Y (-+&+þ(Œ +*‚o…o‡oˆ(òˆ(9”*Fs 4 þ(.+*vsèvo!4 {*Lo"4 (/+*bsêvo¯ {I(0+*0 (ÒzE  $).38=BGLQV[`ejoty~ƒˆ’—œ¡¦«°µº¿ÄÉÎÓØÝâçìñöû #(-27<AFKPUZ_dinsx}‚‡Œ‘–› ¥ª¯´¹¾ÃÈÍÒ×Üáæëðõúÿ "',16;@EJOTY^chmrw‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *! *" *# *$ *% *& *' *( *) ** *+ *, *- *. */ *0 *1 *2 *3 *4 *5 *6 *7 *8 *9 *: *; *< *= *> *? *@ *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 *[ *\ *] *^ *_ *` *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 *{ *| *} *~ * * € * * ‚ * ƒ * „ * … * † * ‡ * ˆ * ‰ * Š * ‹ * Œ * * Ž * * * ‘ * ’ * “ * ” * • * – * — * ˜ * ™ * š * › * œ * * ž * Ÿ *   * ¡ * ¢ * £ * ¤ * ¥ * ¦ * § * ¨ * © * ª * « * ¬ * ­ * ® * ¯ * ° * ± * ² * ³ * ´ * µ * ¶ * · * ¸ * ¹ * º * » * ¼ * ½ * ¾ * ¿ * À * Á *0%  (N}E8  $).38=BGLQV[`ejoty~ƒˆ’—œ¡¦«°µº¿ÄÉÎÓØÝâçìñöû #(-27<AFKPUZ_dinsx}‚‡Œ‘–› ¥ª¯´¹¾ÃÈÍÒ×Üáæëðõúÿ "',16;@EJOTY^chmrw‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/7?GOW_gow‡—Ÿ§¯·¿ÇÏ×ßçï÷ÿ'/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *! *" *# *$ *% *& *' *( *) ** *+ *, *- *. */ *0 *1 *2 *3 *4 *5 *6 *7 *8 *9 *: *; *< *= *> *? *@ *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 *[ *\ *] *^ *_ *` *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 *{ *| *} *~ * * € * * ‚ * ƒ * „ * … * † * ‡ * ˆ * ‰ * Š * ‹ * Œ * * Ž * * * ‘ * ’ * “ * ” * • * – * — * ˜ * ™ * š * › * œ * * ž * Ÿ *   * ¡ * ¢ * £ * ¤ * ¥ * ¦ * § * ¨ * © * ª * « * ¬ * ­ * ® * ¯ * ° * ± * ² * ³ * ´ * µ * ¶ * · * ¸ * ¹ * º * » * ¼ * ½ * ¾ * ¿ * À * Á *  * à * Ä * Å * Æ * Ç * È * É * Ê * Ë * Ì * Í * Î * Ï * Ð * Ñ * Ò * Ó * Ô * Õ * Ö * × * Ø * Ù * Ú * Û * Ü * Ý * Þ * ß * à * á * â * ã * ä * å * æ * ç * è * é * ê * ë * ì * í * î * ï * ð * ñ * ò * ó * ô * õ * ö * ÷ * ø * ù * ú * û * ü * ý * þ * ÿ *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * ! * " * # * $ * % * & * ' * ( * ) * * * + * , * - * . * / * 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 *0(nxEÀ "%(+.147:=@CFILORUX[^adgjmpsvy|‚…ˆ‹Ž‘”—𠣦©¬¯²µ¸»¾ÁÄÇÊÍÐÓÖÙÜßâåèëîñô÷úý  !$'*-0369<?BEHKNQTWZ]`cfilorux~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìò********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*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*[*\*]*^*_*`*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*{*|*}*~** €* * ‚* ƒ* „* …* †* ‡* ˆ* ‰* Š* ‹* Œ* * Ž* * * ‘* ’* “* ”* •* –* —* ˜* ™* š* ›* œ* * ž* Ÿ*  * ¡* ¢* £* ¤* ¥* ¦* §* ¨* ©* ª* «* ¬* ­* ®* ¯* °* ±* ²* ³* ´* µ* ¶* ·* ¸* ¹* º* »* ¼* ½* ¾* ¿*0²EÁ"(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢ ÂYE r„®ps\ z(Îz*(Ny*(Py*(Ry*(Ty*(Vy*(Xy*(Zy*(\y*(^y*(`y*(by*(dy*(fy*(hy*(jy*(ly*(ny*(py*(ry*(ty*(vy*(xy*(zy*(|y*(~y*(€y*(‚y*(„y*(†y*(ˆy*(Šy*(Œy*(Žy*(y*(’y*(”y*(–y*(˜y*(šy*(œy*(žy*( y*(¢y*(¤y*(¦y*(¨y*(ªy*(¬y*(®y*(°y*(²y*(´y*(¶y*(¸y*(ºy*(¼y*(¾y*(Ày*(Ây*(Äy*(Æy*(Èy*(Êy*(Ìy*(Îy*(Ðy*(Òy*(Ôy*(Öy*(Øy*(Úy*(Üy*(Þy*(ày*(ây*(äy*(æy*(èy*(êy*(ìy*(îy*(ðy*(òy*(ôy*(öy*(øy*(úy*(üy*(þy*(z*(z*(z*(z*(z*( z*( z*(z*(z*(z*(z*(z*(z*(z*(z*(z*( z*("z*($z*(&z*((z*(*z*(,z*(.z*(0z*(2z*(4z*(6z*(8z*(:z*(z*(@z*(Bz*(Dz*(Fz*(Hz*(Jz*(Lz*(Nz*(Pz*(Rz*(Tz*(Vz*(Xz*(Zz*(\z*(^z*(`z*(bz*(dz*(fz*(hz*(jz*(lz*(nz*(pz*(rz*(tz*(vz*(xz*(zz*(|z*(~z*(€z*(‚z*(„z*(†z*(ˆz*(Šz*(Œz*(Žz*(z*(’z*(”z*(–z*(˜z*(šz*(œz*(žz*( z*(¢z*(¤z*(¦z*(¨z*(ªz*(¬z*(®z*(°z*(²z*(´z*(¶z*(¸z*(ºz*(¼z*(¾z*(Àz*(Âz*(Äz*(Æz*(Èz*(Êz*(Ìz*(Ðz*0&(E $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú     $ * 0 6 < B H N T Z ` f l r x ~ „ Š – œ ¢ ¨ ® ´ º À Æ Ì Ò Ø Þ ä ê ð ö ü      & , 2 8 > D J P V \ b h n t z € † Œ ’ ˜ ž ¤ ª ° ¶ ¼ Â È Î Ô Ú à æ ì ò ø þ     " ( . 4 : @ F L R X ^ d j p v | ‚ ˆ Ž ” š   ¦ ¬ ² ¸ ¾ Ä Ê Ð Ö Ü â è î ô ú     $ * 0 6 < B H N T Z ` f l r x ~ „ Š – œ ¢ ¨ ® ´ º À Æ Ì Ò Ø Þ ä ê ð ö ü      & , 2 8 > D J P V \ b h n t z € † Œ ’ ˜ ž ¤ ª ° ¶ ¼ Â È Î Ô Ú à æ ì ò ø þ  "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@FLRX^djpv|‚ˆŽ”𠦬²¸¾ÄÊÐÖÜâèîôú r¾®ps\ z(Þz*(àz*(âz*(äz*(äz*(äz*(æz*(èz*(èz*(êz*(ìz*(ìz*(îz*(îz*(ðz*(ðz*(ðz*(ðz*(ðz*(ðz*(ðz*(òz*(òz*(ôz*(öz*(øz*(øz*(øz*(úz*(úz*(úz*(üz*(þz*({*({*({*({*({*({*({*({*({*( {*( {*( {*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*({*( {*( {*( {*( {*( {*( {*( {*( {*("{*("{*(${*(${*(${*(${*(${*(${*(${*(&{*(&{*(&{*(({*(*{*(,{*(,{*(,{*(,{*(,{*(,{*(,{*(.{*(0{*(0{*(0{*(2{*(2{*(2{*(4{*(4{*(6{*(6{*(8{*(8{*(8{*(8{*(:{*(:{*(<{*(<{*(<{*(>{*(>{*(>{*(>{*(@{*(B{*(B{*(D{*(D{*(F{*(F{*(H{*(H{*(H{*(J{*(J{*(J{*(J{*(L{*(L{*(L{*(L{*(N{*(N{*(N{*(P{*(P{*(R{*(T{*(T{*(T{*(T{*(V{*(V{*(V{*(X{*(X{*(X{*(X{*(Z{*(Z{*(\{*(\{*(\{*(\{*(\{*(\{*(\{*(^{*(`{*(`{*(b{*(b{*(b{*(b{*(d{*(d{*(d{*(f{*(f{*(f{*(h{*(h{*(h{*(h{*(j{*(j{*(l{*(l{*(l{*(n{*(n{*(n{*(p{*(r{*(r{*(r{*(t{*(t{*(v{*(x{*(x{*(z{*(z{*(|{*(|{*(|{*(|{*(|{*(|{*(|{*(|{*(|{*(|{*(|{*(~{*(€{*(‚{*(‚{*(„{*(„{*(„{*(†{*(†{*(ˆ{*(ˆ{*(ˆ{*(Š{*(Š{*(Œ{*(Œ{*(Ž{*(Ž{*({*({*(’{*(’{*(’{*(”{*(”{*(–{*(˜{*(˜{*(š{*(š{*(œ{*(œ{*(œ{*(ž{*(ž{*( {*( {*( {*( {*(¢{*(¢{*(¤{*(¤{*(¤{*(¤{*(¤{*(¦{*(¦{*(¦{*(¨{*(ª{*(ª{*(ª{*(¬{*(¬{*(®{*(®{*(®{*(°{*(°{*(²{*(²{*(´{*(¶{*(¸{*(¸{*(¸{*(º{*(¼{*(¼{*(¾{*(¾{*(À{*(À{*(Â{*(Â{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Ä{*(Æ{*(Æ{*(È{*(È{*(È{*(Ê{*(Ì{*(Ì{*(Î{*(Î{*(Î{*(Î{*(Ð{*(Ð{*(Ð{*(Ò{*(Ò{*(Ò{*(Ô{*(Ô{*(Ö{*(Ö{*(Ö{*(Ø{*(Ø{*(Ú{*(Ü{*(Þ{*(à{*(â{*(ä{*(æ{*(æ{*(è{*(è{*(ê{*(ì{*(ì{*(î{*(ð{*(ò{*(ô{*(ô{*(ô{*(ô{*(ö{*(ö{*(ø{*(ú{*(ú{*(ú{*(ü{*(ü{*(þ{*(þ{*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*( |*( |*( |*( |*( |*( |*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*(|*( |*( |*("|*("|*("|*("|*("|*($|*($|*($|*($|*($|*($|*(&|*(&|*((|*((|*(*|*(*|*(*|*(*|*(*|*(*|*(,|*(,|*(,|*(,|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(.|*(0|*(0|*(2|*(2|*(2|*(2|*(2|*(2|*(2|*(2|*(4|*(4|*(6|*(6|*(8|*(:|*(:|*(<|*(>|*(>|*(>|*(@|*(@|*(@|*(B|*(B|*(D|*(D|*(F|*(F|*(H|*(H|*(H|*(H|*(H|*(H|*(J|*(J|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(L|*(N|*(N|*(P|*(P|*(P|*(R|*(R|*(R|*(R|*(T|*(V|*(V|*(V|*(V|*(V|*(X|*(X|*(Z|*(\|*(^|*(^|*(^|*(`|*(`|*(`|*(`|*(`|*(`|*(b|*(b|*(b|*(b|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(d|*(f|*(f|*(h|*(h|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(j|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(l|*(n|*(n|*(n|*(n|*(p|*(p|*(p|*(p|*(p|*(p|*(p|*(p|*(p|*(r|*(r|*(r|*(r|*(t|*(t|*(t|*(t|*(v|*(v|*(v|*(v|*(x|*(x|*(x|*(x|*(x|*(x|*(x|*(x|*(x|*(z|*(z|*(z|*(||*(||*(~|*(~|*(€|*(€|*(€|*(€|*(€|*(‚|*(‚|*(‚|*(„|*(„|*(†|*(†|*(ˆ|*(ˆ|*(ˆ|*(Š|*(Œ|*(Œ|*(Œ|*(Œ|*(Ž|*(|*(’|*(’|*(”|*(”|*(–|*(–|*(˜|*(˜|*(˜|*(š|*(š|*(š|*(š|*(š|*(š|*(š|*(š|*(œ|*(œ|*(ž|*(ž|*(ž|*(ž|*( |*( |*(¢|*(¢|*(¤|*(¤|*(¤|*(¤|*(¤|*(¦|*(¦|*(¦|*(¨|*(¨|*(¨|*(ª|*(ª|*(¬|*(¬|*(¬|*(®|*(°|*(°|*(°|*(²|*(´|*(´|*(¶|*(¶|*(¶|*(¶|*(¶|*(¶|*(¶|*(¶|*(¸|*(¸|*(º|*(º|*(¼|*(¼|*(¾|*(¾|*(À|*(À|*(Â|*(Â|*(Ä|*(Ä|*(Æ|*(Æ|*(Æ|*(Æ|*(Æ|*(Æ|*(È|*(È|*(Ê|*(Ê|*(Ê|*(Ê|*(Ì|*(Ì|*(Ì|*(Î|*(Î|*(Ð|*(Ð|*(Ò|*(Ò|*(Ô|*(Ô|*(Ô|*(Ô|*(Ô|*(Ô|*(Ô|*(Ö|*(Ö|*(Ö|*(Ö|*(Ø|*(Ú|*(Ú|*(Ú|*(Ü|*(Ü|*(Ü|*(Þ|*(Þ|*(Þ|*(Þ|*(Þ|*(Þ|*(Þ|*(à|*(à|*(à|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(â|*(ä|*(ä|*(æ|*(æ|*(æ|*(æ|*(æ|*(æ|*(æ|*(è|*(è|*(è|*(ê|*(ê|*(ì|*(î|*(î|*(ð|*(ð|*(ð|*(ò|*(ò|*(ò|*(ò|*(ô|*(ô|*(ö|*(ö|*(ö|*(ö|*(ø|*(ø|*(ú|*(ü|*(þ|*(þ|*(þ|*(þ|*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*( }*( }*( }*( }*( }*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*(}*( }*( }*("}*("}*($}*($}*(&}*(&}*((}*((}*(*}*(*}*(,}*(,}*(.}*(.}*(0}*(0}*(2}*(2}*(4}*(4}*(6}*(6}*(8}*(8}*(:}*(<}*(<}*(<}*(>}*(>}*(@}*(@}*(@}*(B}*(B}*(B}*(D}*(D}*(D}*(F}*(F}*(F}*(H}*(H}*(H}*(J}*(J}*(J}*(J}*(J}*(L}*(L}*(L}*(L}*(L}*(L}* Â* À*0Œ(nxEÀ %+17=CIOU[agmsy…‹‘—£©¯µ»ÁÇÍÓÙßåëñ÷ý !'-39?EKQW]ciou{‡“™Ÿ¥«±·½ÃÉÏÕÛáçíóùÿ #)/5;AGMSY_ekqw}ƒ‰•›¡§­³¹¿ÅËÑ×Ýãéïõû %+17=CIOU[agmsy…‹‘—£©¯µ»ÁÇÍÓÙßåëñ÷ý !'-39?EKQW]ciou{r¯p*r$¯p*r8¯p*rN¯p*r^¯p*rt¯p*rˆ¯p*rž¯p*r¸¯p*rÒ¯p*rê¯p*rò¯p*r °p*r°p*r<°p*rP°p*r|°p*r °p*r°p*rÔ°p*rÞ°p*rò°p*r ±p*r±p*r"±p*r6±p*rB±p*rN±p*rZ±p*rl±p*rt±p*r„±p*rޱp*rº±p*rî±p*r"²p*rD²p*r^²p*r„²p*r¢²p*r°²p*rº²p*rȲp*rزp*rê²p*rø²p*r³p*r³p*r ³p*r2³p*rD³p*rT³p*rl³p*r|³p*rš³p*r¨³p*r°³p*r¸³p*rƳp*rÔ³p*rú³p*r´p*r$´p*r2´p*rJ´p*r`´p*r~´p*r”´p*r¼´p*rÊ´p*rØ´p*ræ´p*rü´p*rµp*r"µp*r.µp*rFµp*rNµp*rZµp*rrµp*r޵p*r¶µp*rεp*rèµp*rüµp*r¶p*r¶p*r¶p*r&¶p*r.¶p*r>¶p*rJ¶p*rX¶p*rf¶p*rŒ¶p*rª¶p*r´¶p*rÀ¶p*rζp*rô¶p*r·p*r$·p*r*·p*r2·p*r<·p*rB·p*rL·p*rÆQp*rT·p*r\·p*rj·p*r~·p*r·p*rœ·p*r¦·p*r²·p*r¾·p*rηp*rÖ·p*rÜ·p*rð·p*rü·p*r¸p*r ¸p*r¸p*r$¸p*r*¸p*r:¸p*rJ¸p*rZ¸p*rb¸p*rh¸p*rv¸p*r†¸p*rޏp*rš¸p*r ¸p*rª¸p*r¸¸p*r¸p*r̸p*rÔ¸p*rä¸p*rô¸p*r¹p*r¹p*r¹p*rÐQp*r0¹p*rD¹p*rV¹p*rl¹p*rv¹p*r„¹p*r’¹p*r¨¹p*r¾¹p*r̹p*rÖ¹p*ræ¹p*rî¹p*rú¹p*rºp*rºp*r.ºp*r8ºp*rFºp*rTºp*rhºp*r~ºp*rŒºp*ršºp*r¨ºp*r´ºp*rÀºp*r̺p*rèºp*rôºp*rþºp*r&»p*rL»p*rh»p*r‚»p*r®»p*r»p*rÜ»p*rü»p*r¼p*rD¼p*rP¼p*rn¼p*r|¼p*0™@BDF[p…š¯ÄÙî-BWl–«ÀÕêÿ)>Sh}’§¼Ñæû%:Odyti {CŒ˜*tj {CŒ˜*tk {CŒ˜*tl {CŒ'*tm{CŒ'*tn{ CŒ'*to{!CŒ'*tp{"CŒ'*tq{#CŒ'*tr  {$CŒ'*ts  {%CŒ'*tt  {&CŒm*tu  {'CŒg******************tv  {(CŒm*tw{)CŒó*************************************************************************************************************************tx{*CŒ]*ty{+CŒ]*tz{,CŒ]*t{{-CŒm*t|{.CŒm*t}{/CŒó*t~{0CŒó*t{1CŒó*t€{2CŒó*t{3CŒó*t‚{4CŒê*tƒ{5CŒñ*t„{6CŒ*t…{7CŒæ*t†{8CŒö*t‡{9CŒÁ*tˆ{:CŒõ*t‰  {;CŒõ*tŠ!!{CŒ*t$${?CŒö*tŽ%%{@CŒ‡*t&&{ACŒ‡*t''{BCŒõ*t‘(({CCŒô*t’)){DCŒm*t“**{ECŒm*t”++{FCŒm*t•,,{GCŒm*t–--{HCŒm*t—..{ICŒm*t˜//{JCŒm*t™00{KCŒm*tš11{LCŒm*t›22{MCŒm*tœ33{NCŒm*t44{OCŒm*tž55{PCŒm*tŸ66{QCŒñ*~TH*~UH*~VH*~WH* à*~XH*~YH*~ZH*~[H*~\H*~{ÜL(× -(&3( **0ö=!(EEZm†(… (Z (Y (1+*t-& {ëK{I( ,Í{ëK{I ( ( -´( {I*t(&{ÜK {I*t)&{àK8#ÿÿÿt*&{ãK8 ÿÿÿJo 3*(;”*0??!,. ,(‰sû£ (¤(¥*( ( ! *, ( +í*0]@!(9 9º (* (E @¦(* t/& {óK(E@‰{óKt.& (9 (9 ,p(9 (9 (9 -\{Iri@p(ñ ,J (* {ñK{ôK(+ (, (2+oG(¥(/(+ (, *(9 ,t(9 (9 -(* (+ (, *(9 (9 (9 -6(* (* oGoG(¥(/(+ (, *(Š  (Z  (Y (3+*0 ÈA!(EE\²î%(… (Z (Y (4+*t-& {ëK{I( ,Í{ëK{I ( ( -´{íK {ðK{ïK( {îK(Ô {Iri@p(ñ ,(Ïv+(Îv(-*t(&{ÜK{ßK{ÞK(+ (Îv(-*t)&  {áK  {àK  {âK (Ðv (%*t*&  {ãK  {åK {äK  (Ðv ('*t'&{ÚK(!*0™E! (#4 -+(‡ sû£ (¤(¥(&3+ -+    (çŠ (   o? (Ê s$4 s%4 o&4 {.L{4L{9L{6L{7L {5L {8L {0L {3L {2L{,Lo? {=L(&E"‘ (é(Z (Y (5+8_{ÜL(× 9J{ÜL(× (× 9á(× ,r(T {ÝL(× (T (× þ-  (ç(Z (Y («v+(† (  (  (3‘8µ{ÝL(× (T (× þ-  (ç(Z (Y («v+(† (  (3‘8S,+{ÝL (ˆ(Z (Y (5+8${ÝL(× (T 8jÿÿÿ,8zþÿÿ{ÝL+ª{ÜL(× 9^þÿÿ{ÜL(× (× -9,8>þÿÿ(T {ÝL(Ív(† (  (3‘8(× (× (× 9 (× 9‡(T (T {ÝL(× (T (× þ-  (è(Z (Y («v+(Ív(6+(† (  (  (3‘8Þ(T {ÝL(× (T (× þ-  (è(Z (Y («v+(Ív(6+(† (  (3‘+j,=(T (T {ÝL(Ív(† (  (  (3‘+)(T {ÝL(× (T 8Fÿÿÿ(Ê (ì  (  (o? (Ê s$4 s%4 o&4 {3L{5L  (EE‘& " (…(Z (Y (7+8­ t-&##{ìK-P#{íK->#{îK(9 -'#{ðK$#{ïK%#{ëK&&%s'4 +] "8…ÿÿÿ "8|ÿÿÿ "8sÿÿÿ t(&''{ÞK%'{ßK$'{ÜK(((Ú (Û (( (]‰%s'4 !!((4 %!()4 & $%)&* %& (Ðv (*‰s*4 (+4 (,4  (‹    (ó(|‘(-4 *~{ÜL(× -(&3( **&s.4 *0£> 0 %sX}¤0 %sZ}¤0 %s\}¤0 %s^}¤0 %s`}¤0 %sb}¤0 %sd}¤0 %sf}¤0 %sh}¤0 % sj}¤0 % sl}¤0 % sn}¤0 % sp}¤0 % sr}¤0 %st}¤0 %sv}¤0 %sx}¤0 %sz}¤0 %s|}¤0 %s~}¤0 %s€}¤0 %s‚}¤0 %s„}¤0 %s†}¤0 %sˆ}¤0 %sŠ}¤0 %sŒ}¤0 %sŽ}¤0 %s}¤0 %s’}¤0 %s”}¤0 %s–}¤0 % s˜}¤0 %!sš}¤0 %"sž}¤0 %#s }¤0 %$s¢}¤0 %%s¤}¤0 %&s¦}¤0 %'sª}¤0 %(s¬}¤0 %)s®}¤0 %*s°}¤0 %+s´}¤0 %,s¸}¤0 %-s¾}¤0 %.sÂ}¤0 %/sÄ}¤0 %0sÆ}¤0 %1sÈ}¤0 %2sÊ}¤0 %3sÌ}¤0 %4sÎ}¤0 %5sÐ}¤0 %6sÒ}¤0 %7sÔ}¤0 %8sÖ}¤0 %9sØ}¤0 %:sÚ}¤0 %;sÜ}¤0 %sâ}¤0 %?sä}¤0 %@sæ}¤0 %Asè}¤0 %Bsê}¤0 %Csì}¤0 %Dsî}¤0 %Esð}¤0 %Fsò}¤0 %Gsô}¤0 %Hsö}¤0 %Isø}¤0 %Jsú}¤0 %Ksü}¤0 %Lsþ}¤0 %Ms~¤0 %Ns~¤0 %Os~¤0 %Ps~¤0 %Qs~¤0 %Rs~¤0 %Ss~¤0 %Ts~¤0 %Us~¤0 %Vs~¤0 %Ws~¤0 %Xs~¤0 %Ys ~¤0 %Zs"~¤0 %[s$~¤0 %\s&~¤0 %]s(~¤0 %^s*~¤0 %_s,~¤0 %`s.~¤0 %as0~¤0 %bs2~¤0 %cs4~¤0 %ds6~¤0 %es8~¤0 %fs:~¤0 %gs<~¤0 %hs>~¤0 %is@~¤0 %jsB~¤0 %ksD~¤0 %lsF~¤0 %msH~¤0 %nsJ~¤0 %osL~¤0 %psN~¤0 %qsP~¤0 %rsR~¤0 %ssT~¤0 %tsV~¤0 %usX~¤0 %vsZ~¤0 %ws\~¤0 %xs^~¤0 %ys`~¤0 %zsb~¤0 %{sd~¤0 %|sf~¤0 %}sh~¤0 %~sj~¤0 %sl~¤0 % €sn~¤0 % sp~¤0 % ‚sr~¤0 % ƒst~¤0 % „sv~¤0 % …sz~¤0 % †s~~¤0 % ‡s‚~¤0 % ˆs†~¤0 % ‰sŠ~¤0 % ŠsŒ~¤0 % ‹sŽ~¤0 % Œs~¤0 % s’~¤0 % Žs”~¤0 % s–~¤0 % s˜~¤0 % ‘sš~¤0 % ’sœ~¤0 % “sž~¤0 % ”s ~¤0 % •s¢~¤0 % –s¤~¤0 % —s¦~¤0 % ˜sª~¤0 % ™s®~¤0 % šs²~¤0 % ›s¶~¤0 % œs¸~¤0 % s¼~¤0 % žsÀ~¤0 % ŸsÂ~¤0 %  sÄ~¤0 % ¡sÆ~¤0 % ¢sÈ~¤0 % £sÊ~¤0 % ¤sÌ~¤0 % ¥sÎ~¤0 % ¦sÐ~¤0 % §sÒ~¤0 % ¨sÔ~¤0 % ©sÖ~¤0 % ªsØ~¤0 % «sÚ~¤0 % ¬sÜ~¤0 % ­sÞ~¤0 % ®sà~¤0 % ¯sâ~¤0 % °sæ~¤0 % ±sê~¤0 % ²sì~¤0 % ³sð~¤0 % ´sô~¤0 % µsø~¤0 % ¶sü~¤0 % ·s¤0 % ¸s¤0 % ¹s¤0 % ºs ¤0 % »s¤0 % ¼s¤0 % ½s¤0 % ¾s¤0 % ¿s¤0 % Às¤0 % Ás¤0 % Âs ¤0 % Ãs"¤0 % Äs$¤0 % Ås&¤0 % Æs(¤0 % Çs*¤0 % Ès,¤0 % És.¤0 % Ês0¤0 % Ës2¤0 % Ìs6¤0 % Ís@¤0 % ÎsB¤0 % ÏsD¤0 % ÐsF¤0 % ÑsH¤0 % ÒsJ¤0 % ÓsN¤0 % ÔsP¤0 % ÕsR¤0 % ÖsT¤0 % ×sV¤0 % ØsX¤0 % ÙsZ¤0 % Ús\¤0 % Ûs`¤0 % Üsd¤0 % Ýsf¤0 % Þsh¤0 % ßsj¤0 % àsl¤0 % ásn¤0 % âsp¤0 % ãsr¤0 % äst¤0 % åsv¤0 % æsx¤0 % çsz¤0 % ès|¤0 % és~¤0 % ês€¤0 % ës‚¤0 % ìs„¤0 % ís†¤0 % îsˆ¤0 % ïsФ0 % ðsŒ¤0 % ñsޤ0 % òs¤0 % ós’¤0 % ôs”¤0 % õs–¤0 % ös˜¤0 % ÷sš¤0 % øsœ¤0 % ùsž¤0 % ús ¤0 % ûs¢¤0 % üs¤¤0 % ýs¦¤0 % þsª¤0 % ÿs®¤0 % s°¤0 % s²¤0 % s´¤0 % s¶¤0 % s¸¤0 % sº¤0 % sƤ0 % sȤ0 % sʤ0 % s̤0 % sΤ0 % sФ0 % sÒ¤0 % sÔ¤0 % sÖ¤0 % sؤ0 % sÚ¤0 % sܤ0 % sÞ¤0 % sà¤0 % sâ¤0 % sä¤0 % sæ¤0 % sè¤0 % sê¤0 % sì¤0 % sî¤0 % sð¤0 % sò¤0 % sô¤0 % sö¤0 % sø¤0 % sú¤0 % !sü¤0 % "sþ¤0 % #s€¤0 % $s€¤0 % %s€¤0 % &s€¤0 % 's€¤0 % (s €¤0 % )s €¤0 % *s€¤0 % +s€¤0 % ,s€¤0 % -s€¤0 % .s€¤0 % /s€¤0 % 0s€¤0 % 1s€¤0 % 2s€¤0 % 3s €¤0 % 4s"€¤0 % 5s$€¤0 % 6s&€¤0 % 7s*€¤0 % 8s.€¤0 % 9s2€¤0 % :s6€¤0 % ;s:€¤0 % <s>€¤0 % =s@€¤0 % >sB€¤0 % ?sD€¤0 % @sF€¤0 % AsH€¤0 % BsJ€¤0 % CsL€¤0 % DsN€¤0 % EsP€¤0 % FsT€¤0 % GsV€¤0 % HsX€¤0 % IsZ€¤0 % Js\€¤0 % Ks`€¤0 % Lsd€¤0 % Msf€¤0 % Nsh€¤0 % Osj€¤0 % Psl€¤0 % Qsn€¤0 % Rsp€¤0 % Ssr€¤0 % Tst€¤0 % Usx€¤0 % Vsz€¤0 % Ws~€¤0 % Xs‚€¤0 % Ys†€¤0 % Zsˆ€¤0 % [sŠ€¤0 % \sŒ€¤0 % ]sŽ€¤0 % ^s’€¤0 % _s–€¤0 % `sš€¤0 % asœ€¤0 % bsž€¤0 % cs €¤0 % ds¢€¤0 % es¤€¤0 % fs¦€¤0 % gs¨€¤0 % hsª€¤0 % is¬€¤0 % js®€¤0 % ks°€¤0 % ls²€¤0 % ms´€¤0 % ns¶€¤0 % os¼€¤0 % ps¾€¤0 % qsÀ€¤0 % rsÄ€¤0 % ssÆ€¤0 % tsÊ€¤0 % us΀¤0 % vsÒ€¤0 % wsÔ€¤0 % xsÖ€¤0 % ysØ€¤0 % zsÚ€¤0 % {sÜ€¤0 % |sÞ€¤0 % }sà€¤0 % ~s․0 % s䀤0 % €s怤0 % s耤0 % ‚sꀤ0 % ƒs쀤0 % „s0 % …sð€¤0 % †sò€¤0 % ‡sô€¤0 % ˆsö€¤0 % ‰sø€¤0 % Šsú€¤0 % ‹sü€¤0 % Œsþ€¤0 % s¤0 % Žs¤0 % s¤0 % s¤0 % ‘s¤0 % ’s ¤0 % “s ¤0 % ”s¤0 % •s¤0 % –s¤0 % —s¤0 % ˜s¤0 % ™s¤0 % šs¤0 % ›s¤0 % œs ¤0 % s"¤0 % žs$¤0 % Ÿs&¤0 %  s(¤0 % ¡s*¤0 % ¢s,¤0 % £s.¤0 % ¤s0¤0 % ¥s2¤0 % ¦s4¤0 % §s6¤0 % ¨s8¤0 % ©s:¤0 % ªs<¤0 % «s>¤0 % ¬s@¤0 % ­sB¤0 % ®sD¤0 % ¯sF¤0 % °sH¤0 % ±sJ¤0 % ²sL¤0 % ³sN¤0 % ´sP¤0 % µsR¤0 % ¶sT¤0 % ·sV¤0 % ¸sX¤0 % ¹sZ¤0 % ºs\¤0 % »s^¤0 % ¼s`¤0 % ½sb¤0 % ¾sd¤0 % ¿sf¤0 % Àsh¤0 % Ásj¤0 % Âsl¤0 % Ãsn¤0 % Äsp¤0 % Åst¤0 % Æsx¤0 % Çsz¤0 % Ès|¤0 % És~¤0 % Ês€¤0 % Ës‚¤0 % Ìs„¤0 % Ís†¤0 % Îsˆ¤0 % ÏsФ0 % ÐsŒ¤0 % Ñsޤ0 % Òs¤0 % Ós’¤0 % Ôs”¤0 % Õs–¤0 % Ös˜¤0 % ×sš¤0 % Øsœ¤0 % Ùsž¤0 % Ús ¤0 % Ûs¢¤0 % Üs¤¤0 % Ýs¦¤0 % Þs¨¤0 % ßsª¤0 % às¬¤0 % ás®¤0 % âs°¤0 % ãs²¤0 % äs´¤0 % ås¶¤0 % æs¸¤0 % çsº¤0 % ès¼¤0 % és¾¤0 % êsÀ¤0 % ës¤0 % ìsĤ0 % ísƤ0 % îsȤ0 % ïsʤ0 % ðs̤0 % ñsΤ0 % òsФ0 % ósÒ¤0 % ôsÔ¤0 % õsÖ¤0 % ösؤ0 % ÷sÚ¤0 % øsܤ0 % ùsÞ¤0 % úsà¤0 % ûsâ¤0 % üsä¤0 % ýsæ¤0 % þsè¤0 % ÿsê¤0 % sì¤0 % sî¤0 % sð¤0 % sò¤0 % sô¤0 % sö¤0 % sø¤0 % sú¤0 % sü¤0 % sþ¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s ‚¤0 % s ‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s‚¤0 % s ‚¤0 % s"‚¤0 % s$‚¤0 % s&‚¤0 % s(‚¤0 % s*‚¤0 % s,‚¤0 % !s.‚¤0 % "s0‚¤0 % #s2‚¤0 % $s6‚¤0 % %s8‚¤0 % &s:‚¤0 % 's<‚¤0 % (s>‚¤0 % )s@‚¤0 % *sB‚¤0 % +sD‚¤0 % ,sF‚¤0 % -sH‚¤0 % .sJ‚¤0 % /sL‚¤0 % 0sN‚¤0 % 1sP‚¤0 % 2sR‚¤0 % 3sT‚¤0 % 4sV‚¤0 % 5sX‚¤0 % 6sZ‚¤0 % 7s\‚¤0 % 8s^‚¤0 % 9s`‚¤0 % :sb‚¤0 % ;sd‚¤0 % <sf‚¤0 % =sh‚¤0 % >sj‚¤0 % ?sl‚¤0 % @sn‚¤0 % Asp‚¤0 % Bsr‚¤0 % Cst‚¤0 % Dsv‚¤0 % Esx‚¤0 % Fsz‚¤0 % Gs|‚¤0 % Hs~‚¤0 % Is€‚¤0 % Js‚‚¤0 % Ks„‚¤0 % Ls†‚¤0 % Msˆ‚¤0 % NsŠ‚¤0 % OsŒ‚¤0 % PsŽ‚¤0 % Qs‚¤0 % Rs’‚¤0 % Ss”‚¤0 % Ts–‚¤0 % Us˜‚¤0 % Vsš‚¤0 % Wsœ‚¤0 % Xsž‚¤0 % Ys ‚¤0 % Zs¢‚¤0 % [s¤‚¤0 % \s¦‚¤0 % ]s¨‚¤0 % ^sª‚¤0 % _s¬‚¤0 % `s°‚¤0 % as²‚¤0 % bs´‚¤0 % cs¶‚¤0 % ds¸‚¤0 % esº‚¤0 % fs¼‚¤0 % gs¾‚¤0 % hsÀ‚¤0 % is‚¤0 % jsÄ‚¤0 % ksÆ‚¤0 % lsÈ‚¤0 % msÊ‚¤0 % nsÌ‚¤0 % os΂¤0 % psЂ¤0 % qsÒ‚¤0 % rsÔ‚¤0 % ssÖ‚¤0 % tsØ‚¤0 % usÚ‚¤0 % vsÜ‚¤0 % wsÞ‚¤0 % xsà‚¤0 % ys₤0 % zs䂤0 % {s悤0 % |s肤0 % }sꂤ0 % ~s삤0 % s0 % €sð‚¤0 % sò‚¤0 % ‚sô‚¤0 % ƒsö‚¤0 % „sø‚¤0 % …sú‚¤0 % †sü‚¤0 % ‡sþ‚¤0 % ˆsƒ¤0 % ‰sƒ¤0 % Šsƒ¤0 % ‹sƒ¤0 % Œsƒ¤0 % s ƒ¤0 % Žsƒ¤0 % sƒ¤0 % sƒ¤0 % ‘sƒ¤0 % ’s ƒ¤0 % “s$ƒ¤0 % ”s(ƒ¤0 % •s,ƒ¤0 % –s0ƒ¤0 % —s4ƒ¤0 % ˜s8ƒ¤0 % ™s<ƒ¤0 % šs>ƒ¤0 % ›s@ƒ¤0 % œsBƒ¤0 % sDƒ¤0 % žsFƒ¤0 % ŸsHƒ¤0 %  sJƒ¤0 % ¡sLƒ¤0 % ¢sNƒ¤0 % £sPƒ¤0 % ¤sRƒ¤0 % ¥sTƒ¤0 % ¦sVƒ¤0 % §sXƒ¤0 % ¨sZƒ¤0 % ©s\ƒ¤0 % ªs^ƒ¤0 % «s`ƒ¤0 % ¬sbƒ¤0 % ­sdƒ¤0 % ®sfƒ¤0 % ¯shƒ¤0 % °sjƒ¤0 % ±slƒ¤0 % ²snƒ¤0 % ³spƒ¤0 % ´srƒ¤0 % µstƒ¤0 % ¶svƒ¤0 % ·sxƒ¤0 % ¸szƒ¤0 % ¹s|ƒ¤0 % ºs~ƒ¤0 % »s€ƒ¤0 % ¼s„ƒ¤0 % ½sˆƒ¤0 % ¾sŠƒ¤0 % ¿sŒƒ¤0 % ÀsŽƒ¤0 % Ásƒ¤0 % Âs’ƒ¤0 % Ãs”ƒ¤0 % Äs–ƒ¤0 % Ås˜ƒ¤0 % Æsšƒ¤0 % Çsœƒ¤0 % Ès ƒ¤0 % És¢ƒ¤0 % Ês¤ƒ¤0 % Ës¨ƒ¤0 % Ìs¬ƒ¤0 % Ís°ƒ¤0 % Îs²ƒ¤0 % Ïs¶ƒ¤0 % Ðsºƒ¤0 % Ñs¾ƒ¤0 % ÒsÀƒ¤0 % Ósƒ¤0 % Ôsă¤0 % Õsƃ¤0 % Ösȃ¤0 % ×sʃ¤0 % Øs΃¤0 % ÙsЃ¤0 % ÚsÒƒ¤0 % ÛsÔƒ¤0 % ÜsÖƒ¤0 % Ýs؃¤0 % ÞsÚƒ¤0 % ßs܃¤0 % àsÞƒ¤0 % ásàƒ¤0 % âs⃤0 % ãs䃤0 % äs惤0 % ås胤0 % æsꃤ0 % çs샤0 % ès0 % ésðƒ¤0 % êsòƒ¤0 % ësôƒ¤0 % ìsöƒ¤0 % ísøƒ¤0 % îsúƒ¤0 % ïsüƒ¤0 % ðsþƒ¤0 % ñs„¤0 % òs„¤0 % ós„¤0 % ôs„¤0 % õs„¤0 % ös „¤0 % ÷s „¤0 % øs„¤0 % ùs„¤0 % ús„¤0 % ûs„¤0 % üs„¤0 % ýs„¤0 % þs „¤0 % ÿs"„¤0 % s$„¤0 % s&„¤0 % s(„¤0 % s,„¤0 % s.„¤0 % s0„¤0 % s2„¤0 % s4„¤0 % s6„¤0 % s8„¤0 % s:„¤0 % s<„¤0 % s>„¤0 % s@„¤0 % sB„¤0 % sD„¤0 % sF„¤0 % sH„¤0 % sJ„¤0 % sL„¤0 % sN„¤0 % sP„¤0 % sR„¤0 % sT„¤0 % sV„¤0 % sX„¤0 % sZ„¤0 % s\„¤0 % s^„¤0 % sb„¤0 % sd„¤0 % sf„¤0 % sh„¤0 % !sj„¤0 % "sl„¤0 % #sn„¤0 % $sp„¤0 % %sr„¤0 % &st„¤0 % 'sv„¤0 % (sx„¤0 % )sz„¤0 % *s|„¤0 % +s~„¤0 % ,s€„¤0 % -s‚„¤0 % .s„„¤0 % /s†„¤0 % 0sˆ„¤0 % 1sŠ„¤0 % 2sŒ„¤0 % 3sŽ„¤0 % 4s„¤0 % 5s’„¤0 % 6s”„¤0 % 7s–„¤0 % 8s˜„¤0 % 9sš„¤0 % :sœ„¤0 % ;sž„¤0 % <s „¤0 % =s¢„¤0 % >s¤„¤0 % ?s¦„¤0 % @s¨„¤0 % Asª„¤0 % Bs¬„¤0 % Cs®„¤0 % Ds°„¤0 % Es²„¤0 % Fs´„¤0 % Gs¶„¤0 % Hs¸„¤0 % Isº„¤0 % Js¼„¤0 % Ks¾„¤0 % LsÀ„¤0 % Ms„¤0 % NsÄ„¤0 % OsÆ„¤0 % PsÈ„¤0 % QsÊ„¤0 % RsÌ„¤0 % Ss΄¤0 % TsЄ¤0 % UsÒ„¤0 % VsÔ„¤0 % WsÖ„¤0 % XsØ„¤0 % YsÚ„¤0 % ZsÜ„¤0 % [sÞ„¤0 % \sà„¤0 % ]sℤ0 % ^s䄤0 % _s愤0 % `s脤0 % asꄤ0 % bs설0 % cs0 % dsð„¤0 % esò„¤0 % fsô„¤0 % gsö„¤0 % hsø„¤0 % isú„¤0 % jsü„¤0 % ksþ„¤0 % ls…¤0 % ms…¤0 % ns…¤0 % os…¤0 % ps…¤0 % qs …¤0 % rs …¤0 % ss…¤0 % ts…¤0 % us…¤0 % vs…¤0 % ws…¤0 % xs…¤0 % ys…¤0 % zs…¤0 % {s…¤0 % |s …¤0 % }s"…¤0 % ~s$…¤0 % s&…¤0 % €s(…¤0 % s*…¤0 % ‚s,…¤0 % ƒs.…¤0 % „s0…¤0 % …s2…¤0 % †s4…¤0 % ‡s6…¤0 % ˆs8…¤0 % ‰s:…¤0 % Šs<…¤0 % ‹s>…¤0 % Œs@…¤0 % sB…¤0 % ŽsD…¤0 % sF…¤0 % sH…¤0 % ‘sJ…¤0 % ’sL…¤0 % “sN…¤0 % ”sP…¤0 % •sR…¤0 % –sT…¤0 % —sV…¤0 % ˜sX…¤0 % ™sZ…¤0 % šs\…¤0 % ›s^…¤0 % œs`…¤0 % sb…¤0 % žsd…¤0 % Ÿsf…¤0 %  sh…¤0 % ¡sj…¤0 % ¢sl…¤0 % £sn…¤0 % ¤sp…¤0 % ¥sr…¤0 % ¦st…¤0 % §sv…¤0 % ¨sx…¤0 % ©sz…¤0 % ªs|…¤0 % «s~…¤0 % ¬s€…¤0 % ­s‚…¤0 % ®s„…¤0 % ¯s†…¤0 % °sˆ…¤0 % ±sŠ…¤0 % ²sŒ…¤0 % ³sŽ…¤0 % ´s…¤0 % µs’…¤0 % ¶s”…¤0 % ·s–…¤0 % ¸s˜…¤0 % ¹sš…¤0 % ºsœ…¤0 % »sž…¤0 % ¼s …¤0 % ½s¢…¤0 % ¾s¤…¤0 % ¿s¦…¤0 % Às¨…¤0 % Ásª…¤0 % Âs¬…¤0 % Ãs®…¤0 % Äs°…¤0 % Ås²…¤0 % Æs´…¤0 % Çs¶…¤0 % Ès¸…¤0 % Ésº…¤0 % Ês¼…¤0 % Ës¾…¤0 % ÌsÀ…¤0 % ÍsÂ…¤0 % ÎsÄ…¤0 % ÏsÆ…¤0 % ÐsÈ…¤0 % ÑsÊ…¤0 % ÒsÌ…¤0 % ÓsÎ…¤0 % ÔsÐ…¤0 % ÕsÒ…¤0 % ÖsÔ…¤0 % ×sÖ…¤0 % ØsØ…¤0 % ÙsÚ…¤0 % ÚsÜ…¤0 % ÛsÞ…¤0 % Üsà…¤0 % Ýsâ…¤0 % Þsä…¤0 % ßsæ…¤0 % àsè…¤0 % ásê…¤0 % âsì…¤0 % ãsî…¤0 % äsð…¤0 % åsò…¤0 % æsô…¤0 % çsö…¤0 % èsø…¤0 % ésú…¤0 % êsü…¤0 % ësþ…¤0 % ìs†¤0 % ís†¤0 % îs†¤0 % ïs†¤0 % ðs†¤0 % ñs †¤0 % òs †¤0 % ós†¤0 % ôs†¤0 % õs†¤0 % ös†¤0 % ÷s†¤0 % øs†¤0 % ùs†¤0 % ús†¤0 % ûs†¤0 % üs †¤0 % ýs"†¤0 % þs$†¤0 % ÿs&†¤0 % s(†¤0 % s*†¤0 *0YG!s,† (Ôv Âs.†s0†(Æv(Çv(Èv(Êv(Áv(Âv(Ãv(Äv(Év à Às/4 *>(Õvoì *Z(Õvoì þ(+*Z(Õvoì þ(+*Z(Õvoì þ(”+*6€]H~]H&*(04 *08H!Œ o14 o… o; o: (òˆs” (¤(¥*2sÞv*²( }ËA}ÌA}ÍA}ÎA}ÏA*{ËA*{ÌA*{ÍA*{ÎA*{ÏA*&*Zr.8ps24 (8+o34 *:(44 }54 *R{54 o64 (¥*(74 *"{*L*(84 *"{I*0µ sív€ÒAsív€ÓAsív€ÔAsív€ÕAsív€ÖAsív€×Asív€ØAsív€ÙAsív€ÚAsív€ÛAsív€ÜAsív€ÝAsív€ÞAsív€ßAsív€àAsív€áAsív€âA sív€ãA!sív€äA"sív€åA#sív€æA$sív€çA%sív€èA&sív€éA'sív€êA(sív€ëA)sív€ìA*sív€íA+sív€îA,sív€ïA-sív€ðA.sív€ñA/sív€òA0sív€óA1sív€ôA2sív€õA3sív€öA4sív€÷A5sív€øA6sív€ùA7sív€úA8sív€ûA9sív€üA:sív€ýA;sív€þAsív€B?sív€B@sív€BAsív€BBsív€BCsív€BDsív€BEsív€BFsív€ BGsív€ BHsív€ BIsív€ BJsív€ BKsív€BLsív€BMsív€BNsív€BOsív€BPsív€BQsív€BRsív€BSsív€BTsív€BUsív€BVsív€BWsív€BXsív€BYsív€BZsív€B[sív€B\sív€B]sív€ B^sív€!B_sív€"B`sív€#Basív€$Bbsív€%Bcsív€&Bdsív€'Besív€(Bfsív€)Bgsív€*Bhsív€+Bisív€,Bjsív€-Bksív€.Blsív€/Bmsív€0Bnsív€1Bosív€2Bpsív€3Bqsív€4Brsív€5Bssív€6Btsív€7Busív€8Bvsív€9Bwsív€:Bxsív€;Bysív€B|sív€?B}sív€@B~sív€ABsív€BB €sív€CB sív€DB ‚sív€EB ƒsív€FB „sív€GB …sív€HB †sív€IB ‡sív€JB ˆsív€KB ‰sív€LB Šsív€MB ‹sív€NB Œsív€OB sív€PB Žsív€QB sív€RB sív€SB ‘sív€TB ’sív€UB “sív€VB ”sív€WB •sív€XB –sív€YB —sív€ZB*:( }ÑA*spx**(nxþ*srx**(nxþ*stx**(nxþ*svx**(nxþ*sxx**(nxþ*szx**(nxþ*s|x**(nxþ*s~x**(nxþ*s€x**(nxþ*s‚x*.(nx þ*s„x*.(nx þ*s†x*.(nx þ*sˆx*.(nx þ*~ÒA*.(nx þ*~ÓA*.(nxþ*~ÔA*.(nxþ*~ÕA*.(nxþ*~ÖA*.(nxþ*~×A*.(nxþ*~ØA*.(nxþ*~ÙA*.(nxþ*~ÚA*.(nxþ*~ÛA*.(nxþ*~ÜA*.(nxþ*~ÝA*.(nxþ*~ÞA*.(nxþ*~ßA*.(nxþ*~àA*.(nxþ*~áA*.(nxþ*~âA*.(nxþ*sŠx*.(nxþ*sŒx*.(nxþ*~ãA*.(nx þ*~äA*.(nx!þ*~åA*.(nx"þ*~æA*.(nx#þ*~çA*.(nx$þ*~èA*.(nx%þ*~éA*.(nx&þ*~êA*.(nx'þ*~ëA*.(nx(þ*~ìA*.(nx)þ*~íA*.(nx*þ*~îA*.(nx+þ*~ïA*.(nx,þ*~ðA*.(nx-þ*~ñA*.(nx.þ*~òA*.(nx/þ*~óA*.(nx0þ*~ôA*.(nx1þ*~õA*.(nx2þ*~öA*.(nx3þ*~÷A*.(nx4þ*~øA*.(nx5þ*~ùA*.(nx6þ*~úA*.(nx7þ*~ûA*.(nx8þ*~üA*.(nx9þ*~ýA*.(nx:þ*~þA*.(nx;þ*~ÿA*.(nx<þ*~B*.(nx=þ*~B*.(nx>þ*~B*.(nx?þ*~B*.(nx@þ*~B*.(nxAþ*~B*.(nxBþ*~B*.(nxCþ*~B*.(nxDþ*~B*.(nxEþ*~ B*.(nxFþ*~ B*.(nxGþ*~ B*.(nxHþ*~ B*.(nxIþ*~ B*.(nxJþ*~B*.(nxKþ*~B*.(nxLþ*~B*.(nxMþ*~B*.(nxNþ*~B*.(nxOþ*~B*.(nxPþ*~B*.(nxQþ*~B*.(nxRþ*~B*.(nxSþ*~B*.(nxTþ*~B*.(nxUþ*~B*.(nxVþ*~B*.(nxWþ*~B*.(nxXþ*~B*.(nxYþ*~B*.(nxZþ*~B*.(nx[þ*~B*.(nx\þ*~ B*.(nx]þ*~!B*.(nx^þ*~"B*.(nx_þ*~#B*.(nx`þ*~$B*.(nxaþ*~%B*.(nxbþ*~&B*.(nxcþ*~'B*.(nxdþ*~(B*.(nxeþ*~)B*.(nxfþ*~*B*.(nxgþ*~+B*.(nxhþ*~,B*.(nxiþ*~-B*.(nxjþ*~.B*.(nxkþ*~/B*.(nxlþ*~0B*.(nxmþ*~1B*.(nxnþ*~2B*.(nxoþ*~3B*.(nxpþ*~4B*.(nxqþ*~5B*.(nxrþ*~6B*.(nxsþ*~7B*.(nxtþ*~8B*.(nxuþ*~9B*.(nxvþ*~:B*.(nxwþ*~;B*.(nxxþ*~B*.(nx{þ*~?B*.(nx|þ*~@B*.(nx}þ*~AB*.(nx~þ*~BB*.(nxþ*~CB*:(nx €þ*~DB*:(nx þ*~EB*:(nx ‚þ*~FB*:(nx ƒþ*~GB*:(nx „þ*~HB*:(nx …þ*~IB*:(nx †þ*~JB*:(nx ‡þ*~KB*:(nx ˆþ*~LB*:(nx ‰þ*~MB*:(nx Šþ*~NB*:(nx ‹þ*~OB*:(nx Œþ*~PB*:(nx þ*~QB*:(nx Žþ*~RB*:(nx þ*~SB*:(nx þ*~TB*:(nx ‘þ*~UB*:(nx ’þ*~VB*:(nx “þ*~WB*:(nx ”þ*~XB*:(nx •þ*~YB*:(nx –þ*~ZB*:(nx —þ*sŽx*:(nx ˜þ*sx*:(nx ™þ*s’x*:(nx šþ*s”x*:(nx ›þ*s–x*:(nx œþ*s˜x*:(nx þ*sšx*:(nx žþ*sœx*:(nx Ÿþ*sžx*:(nx  þ*s x*:(nx ¡þ*s¢x*:(nx ¢þ*s¤x*:(nx £þ*s¦x*:(nx ¤þ*s¨x*:(nx ¥þ*sªx*:(nx ¦þ*s¬x*:(nx §þ*s®x*:(nx ¨þ*s°x*:(nx ©þ*s²x*:(nx ªþ*s´x*:(nx «þ*s¶x*:(nx ¬þ*s¸x*:(nx ­þ*sºx*:(nx ®þ*s¼x*:(nx ¯þ*s¾x*:(nx °þ*sÀx*:(nx ±þ*sÂx*:(nx ²þ*sÄx*:(nx ³þ*sÆx*:(nx ´þ*sÈx*:(nx µþ*sÊx*:(nx ¶þ*sÌx*:(nx ·þ*sÎx*:(nx ¸þ*sÐx*:(nx ¹þ*sÒx*:(nx ºþ*sÔx*:(nx »þ*sÖx*:(nx ¼þ*sØx*:(nx ½þ*sÚx*:(nx ¾þ*sÜx*:(nx ¿þ*{ÑA*Zr.8ps94 (9+o:4 *>(ív}C*{C*>(ív}C*{C*>(ív}C*{C*>(ív}C*{C*>(ív}C*{C*>(ív} C*{ C*>(ív}!C*{!C*>(ív}"C*{"C*>(ív}#C*{#C*B (ív}$C*{$C*B (ív}%C*{%C*B (ív}&C*{&C*B (ív}'C*{'C*B(ív}(C*{(C*B(ív})C*{)C*N ˜(ív}*C*{*C*N ™(ív}+C*{+C*N š(ív},C*{,C*N ›(ív}-C*{-C*N œ(ív}.C*{.C*N (ív}/C*{/C*N ž(ív}0C*{0C*N Ÿ(ív}1C*{1C*N  (ív}2C*{2C*N ¡(ív}3C*{3C*N ¢(ív}4C*{4C*N £(ív}5C*{5C*N ¤(ív}6C*{6C*N ¥(ív}7C*{7C*N ¦(ív}8C*{8C*N §(ív}9C*{9C*N ¨(ív}:C*{:C*N ©(ív};C*{;C*N ª(ív}C*{>C*N ­(ív}?C*{?C*N ®(ív}@C*{@C*N ¯(ív}AC*{AC*N °(ív}BC*{BC*N ±(ív}CC*{CC*N ²(ív}DC*{DC*N ³(ív}EC*{EC*N ´(ív}FC*{FC*N µ(ív}GC*{GC*N ¶(ív}HC*{HC*N ·(ív}IC*{IC*N ¸(ív}JC*{JC*N ¹(ív}KC*{KC*N º(ív}LC*{LC*N »(ív}MC*{MC*N ¼(ív}NC*{NC*N ½(ív}OC*{OC*N ¾(ív}PC*{PC*N ¿(ív}QC*{QC*:( }RC*2{RC{C*:( }SC*2{SC{C*:( }TC*2{TC{C*:( }UC*2{UC{C*:( }VC*2{VC{C*:( }WC*2{WC{ C*:( }XC*2{XC{!C*:( }YC*2{YC{"C*:( }ZC*2{ZC{#C*:( }[C*2{[C{$C*:( }\C*2{\C{%C*:( }]C*2{]C{&C*:( }^C*2{^C{'C*:( }_C*2{_C{(C*:( }`C*2{`C{)C*:( }aC*2{aC{*C*:( }bC*2{bC{+C*:( }cC*2{cC{,C*:( }dC*2{dC{-C*:( }eC*2{eC{.C*:( }fC*2{fC{/C*:( }gC*2{gC{0C*:( }hC*2{hC{1C*:( }iC*2{iC{2C*:( }jC*2{jC{3C*:( }kC*2{kC{4C*:( }lC*2{lC{5C*:( }mC*2{mC{6C*:( }nC*2{nC{7C*:( }oC*2{oC{8C*:( }pC*2{pC{9C*:( }qC*2{qC{:C*:( }rC*2{rC{;C*:( }sC*2{sC{C*:( }vC*2{vC{?C*:( }wC*2{wC{@C*:( }xC*2{xC{AC*:( }yC*2{yC{BC*:( }zC*2{zC{CC*:( }{C*2{{C{DC*:( }|C*2{|C{EC*:( }}C*2{}C{FC*:( }~C*2{~C{GC*:( }C*2{C{HC*:( }€C*2{€C{IC*:( }C*2{C{JC*:( }‚C*2{‚C{KC*:( }ƒC*2{ƒC{LC*:( }„C*2{„C{MC*:( }…C*2{…C{NC*:( }†C*2{†C{OC*:( }‡C*2{‡C{PC*:( }ˆC*2{ˆC{QC*0Ö sMy€ŠCsMy€‹CsMy€ŒCsMy€CsMy€ŽCsMy€CsMy€CsMy€‘CsMy€’C sMy€“C sMy€”C sMy€•C sMy€–C sMy€—CsMy€˜CsMy€™CsMy€šCsMy€›CsMy€œCsMy€CsMy€žCsMy€ŸCsMy€ CsMy€¡CsMy€¢CsMy€£CsMy€¤CsMy€¥CsMy€¦CsMy€§CsMy€¨CsMy€©C sMy€ªC!sMy€«C"sMy€¬C#sMy€­C$sMy€®C%sMy€¯C&sMy€°C'sMy€±C(sMy€²C)sMy€³C*sMy€´C+sMy€µC,sMy€¶C-sMy€·C.sMy€¸C/sMy€¹C0sMy€ºC1sMy€»C2sMy€¼C3sMy€½C4sMy€¾C5sMy€¿C6sMy€ÀC7sMy€ÁC8sMy€ÂC9sMy€ÃC:sMy€ÄC;sMy€ÅCsMy€ÈC?sMy€ÉC@sMy€ÊCAsMy€ËCBsMy€ÌCCsMy€ÍCDsMy€ÎCEsMy€ÏCFsMy€ÐCGsMy€ÑCHsMy€ÒCIsMy€ÓCJsMy€ÔCKsMy€ÕCLsMy€ÖCMsMy€×CNsMy€ØCOsMy€ÙCPsMy€ÚCQsMy€ÛCRsMy€ÜCSsMy€ÝCTsMy€ÞCUsMy€ßCVsMy€àCWsMy€áCXsMy€âCYsMy€ãCZsMy€äC[sMy€åC\sMy€æC]sMy€çC^sMy€èC_sMy€éC`sMy€êCasMy€ëCbsMy€ìCcsMy€íCdsMy€îCesMy€ïCfsMy€ðCgsMy€ñChsMy€òCisMy€óCjsMy€ôCksMy€õClsMy€öCmsMy€÷CnsMy€øCosMy€ùCpsMy€úCqsMy€ûCrsMy€üCssMy€ýCtsMy€þCusMy€ÿCvsMy€DwsMy€DxsMy€DysMy€DzsMy€D{sMy€D|sMy€D}sMy€D~sMy€DsMy€ D €sMy€ D sMy€ D ‚sMy€ D ƒsMy€ D „sMy€D …sMy€D †sMy€D ‡sMy€D ˆsMy€D ‰sMy€D ŠsMy€D ‹sMy€D ŒsMy€D sMy€D ŽsMy€D sMy€D sMy€D ‘sMy€D ’sMy€D “sMy€D ”sMy€D •sMy€D –sMy€ D —sMy€!D ˜sMy€"D ™sMy€#D šsMy€$D ›sMy€%D œsMy€&D sMy€'D žsMy€(D ŸsMy€)D  sMy€*D ¡sMy€+D ¢sMy€,D £sMy€-D ¤sMy€.D ¥sMy€/D ¦sMy€0D §sMy€1D ¨sMy€2D ©sMy€3D ªsMy€4D «sMy€5D ¬sMy€6D ­sMy€7D ®sMy€8D ¯sMy€9D °sMy€:D ±sMy€;D ²sMy€D µsMy€?D ¶sMy€@D ·sMy€AD ¸sMy€BD ¹sMy€CD ºsMy€DD »sMy€ED ¼sMy€FD ½sMy€GD ¾sMy€HD ¿sMy€ID ÀsMy€JD ÁsMy€KD*:( }‰C*~ŠC**(Òzþ*~‹C**(Òzþ*~ŒC**(Òzþ*~C**(Òzþ*~ŽC**(Òzþ*~C**(Òzþ*~C**(Òzþ*~‘C**(Òzþ*~’C**(Òzþ*~“C*.(Òz þ*~”C*.(Òz þ*~•C*.(Òz þ*~–C*.(Òz þ*~—C*.(Òz þ*~˜C*.(Òzþ*~™C*.(Òzþ*~šC*.(Òzþ*~›C*.(Òzþ*~œC*.(Òzþ*~C*.(Òzþ*~žC*.(Òzþ*~ŸC*.(Òzþ*~ C*.(Òzþ*~¡C*.(Òzþ*~¢C*.(Òzþ*~£C*.(Òzþ*~¤C*.(Òzþ*~¥C*.(Òzþ*~¦C*.(Òzþ*~§C*.(Òzþ*~¨C*.(Òzþ*~©C*.(Òzþ*~ªC*.(Òz þ*~«C*.(Òz!þ*~¬C*.(Òz"þ*~­C*.(Òz#þ*~®C*.(Òz$þ*~¯C*.(Òz%þ*~°C*.(Òz&þ*~±C*.(Òz'þ*~²C*.(Òz(þ*~³C*.(Òz)þ*~´C*.(Òz*þ*~µC*.(Òz+þ*~¶C*.(Òz,þ*~·C*.(Òz-þ*~¸C*.(Òz.þ*~¹C*.(Òz/þ*~ºC*.(Òz0þ*~»C*.(Òz1þ*~¼C*.(Òz2þ*~½C*.(Òz3þ*~¾C*.(Òz4þ*~¿C*.(Òz5þ*~ÀC*.(Òz6þ*~ÁC*.(Òz7þ*~ÂC*.(Òz8þ*~ÃC*.(Òz9þ*~ÄC*.(Òz:þ*~ÅC*.(Òz;þ*~ÆC*.(Òz<þ*~ÇC*.(Òz=þ*~ÈC*.(Òz>þ*~ÉC*.(Òz?þ*~ÊC*.(Òz@þ*~ËC*.(ÒzAþ*~ÌC*.(ÒzBþ*~ÍC*.(ÒzCþ*~ÎC*.(ÒzDþ*~ÏC*.(ÒzEþ*~ÐC*.(ÒzFþ*~ÑC*.(ÒzGþ*~ÒC*.(ÒzHþ*~ÓC*.(ÒzIþ*~ÔC*.(ÒzJþ*~ÕC*.(ÒzKþ*~ÖC*.(ÒzLþ*~×C*.(ÒzMþ*~ØC*.(ÒzNþ*~ÙC*.(ÒzOþ*~ÚC*.(ÒzPþ*~ÛC*.(ÒzQþ*~ÜC*.(ÒzRþ*~ÝC*.(ÒzSþ*~ÞC*.(ÒzTþ*~ßC*.(ÒzUþ*~àC*.(ÒzVþ*~áC*.(ÒzWþ*~âC*.(ÒzXþ*~ãC*.(ÒzYþ*~äC*.(ÒzZþ*~åC*.(Òz[þ*~æC*.(Òz\þ*~çC*.(Òz]þ*~èC*.(Òz^þ*~éC*.(Òz_þ*~êC*.(Òz`þ*~ëC*.(Òzaþ*~ìC*.(Òzbþ*~íC*.(Òzcþ*~îC*.(Òzdþ*~ïC*.(Òzeþ*~ðC*.(Òzfþ*~ñC*.(Òzgþ*~òC*.(Òzhþ*~óC*.(Òziþ*~ôC*.(Òzjþ*~õC*.(Òzkþ*~öC*.(Òzlþ*~÷C*.(Òzmþ*~øC*.(Òznþ*~ùC*.(Òzoþ*~úC*.(Òzpþ*~ûC*.(Òzqþ*~üC*.(Òzrþ*~ýC*.(Òzsþ*~þC*.(Òztþ*~ÿC*.(Òzuþ*~D*.(Òzvþ*~D*.(Òzwþ*~D*.(Òzxþ*~D*.(Òzyþ*~D*.(Òzzþ*~D*.(Òz{þ*~D*.(Òz|þ*~D*.(Òz}þ*~D*.(Òz~þ*~ D*.(Òzþ*~ D*:(Òz €þ*~ D*:(Òz þ*~ D*:(Òz ‚þ*~ D*:(Òz ƒþ*~D*:(Òz „þ*~D*:(Òz …þ*~D*:(Òz †þ*~D*:(Òz ‡þ*~D*:(Òz ˆþ*~D*:(Òz ‰þ*~D*:(Òz Šþ*~D*:(Òz ‹þ*~D*:(Òz Œþ*~D*:(Òz þ*~D*:(Òz Žþ*~D*:(Òz þ*~D*:(Òz þ*~D*:(Òz ‘þ*~D*:(Òz ’þ*~D*:(Òz “þ*~D*:(Òz ”þ*~D*:(Òz •þ*~ D*:(Òz –þ*~!D*:(Òz —þ*~"D*:(Òz ˜þ*~#D*:(Òz ™þ*~$D*:(Òz šþ*~%D*:(Òz ›þ*~&D*:(Òz œþ*~'D*:(Òz þ*~(D*:(Òz žþ*~)D*:(Òz Ÿþ*~*D*:(Òz  þ*~+D*:(Òz ¡þ*~,D*:(Òz ¢þ*~-D*:(Òz £þ*~.D*:(Òz ¤þ*~/D*:(Òz ¥þ*~0D*:(Òz ¦þ*~1D*:(Òz §þ*~2D*:(Òz ¨þ*~3D*:(Òz ©þ*~4D*:(Òz ªþ*~5D*:(Òz «þ*~6D*:(Òz ¬þ*~7D*:(Òz ­þ*~8D*:(Òz ®þ*~9D*:(Òz ¯þ*~:D*:(Òz °þ*~;D*:(Òz ±þ*~D*:(Òz ´þ*~?D*:(Òz µþ*~@D*:(Òz ¶þ*~AD*:(Òz ·þ*~BD*:(Òz ¸þ*~CD*:(Òz ¹þ*~DD*:(Òz ºþ*~ED*:(Òz »þ*~FD*:(Òz ¼þ*~GD*:(Òz ½þ*~HD*:(Òz ¾þ*~ID*:(Òz ¿þ*~JD*:(Òz Àþ*~KD*:(Òz Áþ*{‰C*Zr.8ps;4 (:+o  *01.þ, þ,{‰C {‰C 3*Y**þ,**:¥×oÔz*0BI!¥× þ,%¥×þ,{‰C {‰C 3*Y**¥×þ,**Fþ,(¸v**6(n o×z*0.I!þ,u× ,{‰C {‰C þ**þþ*0*.þ,þ,{‰C {‰C þ**þþ*0J!u× ,oÚz**0ÀsÝz€EsÝz€EsÝz€EsÝz€EsÝz€EsÝz€EsÝz€EsÝz€EsÝz€E sÝz€E sÝz€E sÝz€E sÝz€E sÝz€EsÝz€EsÝz€EsÝz€EsÝz€ EsÝz€!EsÝz€"EsÝz€#EsÝz€$EsÝz€%EsÝz€&EsÝz€'EsÝz€(EsÝz€)EsÝz€*EsÝz€+EsÝz€,EsÝz€-EsÝz€.E sÝz€/E!sÝz€0E"sÝz€1E#sÝz€2E$sÝz€3E%sÝz€4E&sÝz€5E'sÝz€6E(sÝz€7E)sÝz€8E*sÝz€9E+sÝz€:E,sÝz€;E-sÝz€E0sÝz€?E1sÝz€@E2sÝz€AE3sÝz€BE4sÝz€CE5sÝz€DE6sÝz€EE7sÝz€FE8sÝz€GE9sÝz€HE:sÝz€IE;sÝz€JEsÝz€ME?sÝz€NE@sÝz€OEAsÝz€PEBsÝz€QECsÝz€REDsÝz€SEEsÝz€TEFsÝz€UEGsÝz€VEHsÝz€WEIsÝz€XEJsÝz€YEKsÝz€ZELsÝz€[EMsÝz€\ENsÝz€]EOsÝz€^EPsÝz€_EQsÝz€`ERsÝz€aESsÝz€bETsÝz€cEUsÝz€dEVsÝz€eEWsÝz€fEXsÝz€gEYsÝz€hEZsÝz€iE[sÝz€jE\sÝz€kE]sÝz€lE^sÝz€mE_sÝz€nE`sÝz€oEasÝz€pEbsÝz€qEcsÝz€rEdsÝz€sEesÝz€tEfsÝz€uEgsÝz€vEhsÝz€wEisÝz€xEjsÝz€yEksÝz€zElsÝz€{EmsÝz€|EnsÝz€}EosÝz€~EpsÝz€EqsÝz€€ErsÝz€EssÝz€‚EtsÝz€ƒEusÝz€„EvsÝz€…EwsÝz€†ExsÝz€‡EysÝz€ˆEzsÝz€‰E{sÝz€ŠE|sÝz€‹E}sÝz€ŒE~sÝz€EsÝz€ŽE €sÝz€E sÝz€E ‚sÝz€‘E ƒsÝz€’E „sÝz€“E …sÝz€”E †sÝz€•E ‡sÝz€–E ˆsÝz€—E ‰sÝz€˜E ŠsÝz€™E ‹sÝz€šE ŒsÝz€›E sÝz€œE ŽsÝz€E sÝz€žE sÝz€ŸE ‘sÝz€ E ’sÝz€¡E “sÝz€¢E ”sÝz€£E •sÝz€¤E –sÝz€¥E —sÝz€¦E ˜sÝz€§E ™sÝz€¨E šsÝz€©E ›sÝz€ªE œsÝz€«E sÝz€¬E žsÝz€­E ŸsÝz€®E  sÝz€¯E ¡sÝz€°E ¢sÝz€±E £sÝz€²E ¤sÝz€³E ¥sÝz€´E ¦sÝz€µE §sÝz€¶E ¨sÝz€·E ©sÝz€¸E ªsÝz€¹E «sÝz€ºE ¬sÝz€»E ­sÝz€¼E ®sÝz€½E ¯sÝz€¾E °sÝz€¿E ±sÝz€ÀE ²sÝz€ÁE ³sÝz€ÂE ´sÝz€ÃE µsÝz€ÄE ¶sÝz€ÅE ·sÝz€ÆE ¸sÝz€ÇE ¹sÝz€ÈE ºsÝz€ÉE »sÝz€ÊE ¼sÝz€ËE ½sÝz€ÌE ¾sÝz€ÍE ¿sÝz€ÎE ÀsÝz€ÏE ÁsÝz€ÐE ÂsÝz€ÑE ÃsÝz€ÒE ÄsÝz€ÓE ÅsÝz€ÔE ÆsÝz€ÕE ÇsÝz€ÖE ÈsÝz€×E ÉsÝz€ØE ÊsÝz€ÙE ËsÝz€ÚE ÌsÝz€ÛE ÍsÝz€ÜE ÎsÝz€ÝE ÏsÝz€ÞE ÐsÝz€ßE ÑsÝz€àE ÒsÝz€áE ÓsÝz€âE ÔsÝz€ãE ÕsÝz€äE ÖsÝz€åE ×sÝz€æE ØsÝz€çE ÙsÝz€èE ÚsÝz€éE ÛsÝz€êE ÜsÝz€ëE ÝsÝz€ìE ÞsÝz€íE ßsÝz€îE àsÝz€ïE ásÝz€ðE âsÝz€ñE ãsÝz€òE äsÝz€óE åsÝz€ôE æsÝz€õE çsÝz€öE èsÝz€÷E ésÝz€øE êsÝz€ùE ësÝz€úE ìsÝz€ûE ísÝz€üE îsÝz€ýE ïsÝz€þE ðsÝz€ÿE ñsÝz€F òsÝz€F ósÝz€F ôsÝz€F õsÝz€F ösÝz€F ÷sÝz€F øsÝz€F ùsÝz€F úsÝz€ F ûsÝz€ F üsÝz€ F ýsÝz€ F þsÝz€ F ÿsÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€F sÝz€ F sÝz€!F sÝz€"F sÝz€#F sÝz€$F sÝz€%F sÝz€&F sÝz€'F sÝz€(F sÝz€)F sÝz€*F sÝz€+F sÝz€,F sÝz€-F sÝz€.F sÝz€/F !sÝz€0F "sÝz€1F #sÝz€2F $sÝz€3F %sÝz€4F &sÝz€5F 'sÝz€6F (sÝz€7F )sÝz€8F *sÝz€9F +sÝz€:F ,sÝz€;F -sÝz€F 0sÝz€?F 1sÝz€@F 2sÝz€AF 3sÝz€BF 4sÝz€CF 5sÝz€DF 6sÝz€EF 7sÝz€FF*:( }E*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E**(N}þ*~E*.(N} þ*~E*.(N} þ*~E*.(N} þ*~E*.(N} þ*~E*.(N} þ*~E*.(N}þ*~E*.(N}þ*~E*.(N}þ*~ E*.(N}þ*~!E*.(N}þ*~"E*.(N}þ*~#E*.(N}þ*~$E*.(N}þ*~%E*.(N}þ*~&E*.(N}þ*~'E*.(N}þ*~(E*.(N}þ*~)E*.(N}þ*~*E*.(N}þ*~+E*.(N}þ*~,E*.(N}þ*~-E*.(N}þ*~.E*.(N}þ*~/E*.(N} þ*~0E*.(N}!þ*~1E*.(N}"þ*~2E*.(N}#þ*~3E*.(N}$þ*~4E*.(N}%þ*~5E*.(N}&þ*~6E*.(N}'þ*~7E*.(N}(þ*~8E*.(N})þ*~9E*.(N}*þ*~:E*.(N}+þ*~;E*.(N},þ*~E*.(N}/þ*~?E*.(N}0þ*~@E*.(N}1þ*~AE*.(N}2þ*~BE*.(N}3þ*~CE*.(N}4þ*~DE*.(N}5þ*~EE*.(N}6þ*~FE*.(N}7þ*~GE*.(N}8þ*~HE*.(N}9þ*~IE*.(N}:þ*~JE*.(N};þ*~KE*.(N}<þ*~LE*.(N}=þ*~ME*.(N}>þ*~NE*.(N}?þ*~OE*.(N}@þ*~PE*.(N}Aþ*~QE*.(N}Bþ*~RE*.(N}Cþ*~SE*.(N}Dþ*~TE*.(N}Eþ*~UE*.(N}Fþ*~VE*.(N}Gþ*~WE*.(N}Hþ*~XE*.(N}Iþ*~YE*.(N}Jþ*~ZE*.(N}Kþ*~[E*.(N}Lþ*~\E*.(N}Mþ*~]E*.(N}Nþ*~^E*.(N}Oþ*~_E*.(N}Pþ*~`E*.(N}Qþ*~aE*.(N}Rþ*~bE*.(N}Sþ*~cE*.(N}Tþ*~dE*.(N}Uþ*~eE*.(N}Vþ*~fE*.(N}Wþ*~gE*.(N}Xþ*~hE*.(N}Yþ*~iE*.(N}Zþ*~jE*.(N}[þ*~kE*.(N}\þ*~lE*.(N}]þ*~mE*.(N}^þ*~nE*.(N}_þ*~oE*.(N}`þ*~pE*.(N}aþ*~qE*.(N}bþ*~rE*.(N}cþ*~sE*.(N}dþ*~tE*.(N}eþ*~uE*.(N}fþ*~vE*.(N}gþ*~wE*.(N}hþ*~xE*.(N}iþ*~yE*.(N}jþ*~zE*.(N}kþ*~{E*.(N}lþ*~|E*.(N}mþ*~}E*.(N}nþ*~~E*.(N}oþ*~E*.(N}pþ*~€E*.(N}qþ*~E*.(N}rþ*~‚E*.(N}sþ*~ƒE*.(N}tþ*~„E*.(N}uþ*~…E*.(N}vþ*~†E*.(N}wþ*~‡E*.(N}xþ*~ˆE*.(N}yþ*~‰E*.(N}zþ*~ŠE*.(N}{þ*~‹E*.(N}|þ*~ŒE*.(N}}þ*~E*.(N}~þ*~ŽE*.(N}þ*~E*:(N} €þ*~E*:(N} þ*~‘E*:(N} ‚þ*~’E*:(N} ƒþ*~“E*:(N} „þ*~”E*:(N} …þ*~•E*:(N} †þ*~–E*:(N} ‡þ*~—E*:(N} ˆþ*~˜E*:(N} ‰þ*~™E*:(N} Šþ*~šE*:(N} ‹þ*~›E*:(N} Œþ*~œE*:(N} þ*~E*:(N} Žþ*~žE*:(N} þ*~ŸE*:(N} þ*~ E*:(N} ‘þ*~¡E*:(N} ’þ*~¢E*:(N} “þ*~£E*:(N} ”þ*~¤E*:(N} •þ*~¥E*:(N} –þ*~¦E*:(N} —þ*~§E*:(N} ˜þ*~¨E*:(N} ™þ*~©E*:(N} šþ*~ªE*:(N} ›þ*~«E*:(N} œþ*~¬E*:(N} þ*~­E*:(N} žþ*~®E*:(N} Ÿþ*~¯E*:(N}  þ*~°E*:(N} ¡þ*~±E*:(N} ¢þ*~²E*:(N} £þ*~³E*:(N} ¤þ*~´E*:(N} ¥þ*~µE*:(N} ¦þ*~¶E*:(N} §þ*~·E*:(N} ¨þ*~¸E*:(N} ©þ*~¹E*:(N} ªþ*~ºE*:(N} «þ*~»E*:(N} ¬þ*~¼E*:(N} ­þ*~½E*:(N} ®þ*~¾E*:(N} ¯þ*~¿E*:(N} °þ*~ÀE*:(N} ±þ*~ÁE*:(N} ²þ*~ÂE*:(N} ³þ*~ÃE*:(N} ´þ*~ÄE*:(N} µþ*~ÅE*:(N} ¶þ*~ÆE*:(N} ·þ*~ÇE*:(N} ¸þ*~ÈE*:(N} ¹þ*~ÉE*:(N} ºþ*~ÊE*:(N} »þ*~ËE*:(N} ¼þ*~ÌE*:(N} ½þ*~ÍE*:(N} ¾þ*~ÎE*:(N} ¿þ*~ÏE*:(N} Àþ*~ÐE*:(N} Áþ*~ÑE*:(N} Âþ*~ÒE*:(N} Ãþ*~ÓE*:(N} Äþ*~ÔE*:(N} Åþ*~ÕE*:(N} Æþ*~ÖE*:(N} Çþ*~×E*:(N} Èþ*~ØE*:(N} Éþ*~ÙE*:(N} Êþ*~ÚE*:(N} Ëþ*~ÛE*:(N} Ìþ*~ÜE*:(N} Íþ*~ÝE*:(N} Îþ*~ÞE*:(N} Ïþ*~ßE*:(N} Ðþ*~àE*:(N} Ñþ*~áE*:(N} Òþ*~âE*:(N} Óþ*~ãE*:(N} Ôþ*~äE*:(N} Õþ*~åE*:(N} Öþ*~æE*:(N} ×þ*~çE*:(N} Øþ*~èE*:(N} Ùþ*~éE*:(N} Úþ*~êE*:(N} Ûþ*~ëE*:(N} Üþ*~ìE*:(N} Ýþ*~íE*:(N} Þþ*~îE*:(N} ßþ*~ïE*:(N} àþ*~ðE*:(N} áþ*~ñE*:(N} âþ*~òE*:(N} ãþ*~óE*:(N} äþ*~ôE*:(N} åþ*~õE*:(N} æþ*~öE*:(N} çþ*~÷E*:(N} èþ*~øE*:(N} éþ*~ùE*:(N} êþ*~úE*:(N} ëþ*~ûE*:(N} ìþ*~üE*:(N} íþ*~ýE*:(N} îþ*~þE*:(N} ïþ*~ÿE*:(N} ðþ*~F*:(N} ñþ*~F*:(N} òþ*~F*:(N} óþ*~F*:(N} ôþ*~F*:(N} õþ*~F*:(N} öþ*~F*:(N} ÷þ*~F*:(N} øþ*~F*:(N} ùþ*~ F*:(N} úþ*~ F*:(N} ûþ*~ F*:(N} üþ*~ F*:(N} ýþ*~ F*:(N} þþ*~F*:(N} ÿþ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~F*:(N} þ*~ F*:(N} þ*~!F*:(N} þ*~"F*:(N} þ*~#F*:(N} þ*~$F*:(N} þ*~%F*:(N} þ*~&F*:(N} þ*~'F*:(N} þ*~(F*:(N} þ*~)F*:(N} þ*~*F*:(N} þ*~+F*:(N} þ*~,F*:(N} þ*~-F*:(N} þ*~.F*:(N} þ*~/F*:(N} þ*~0F*:(N} !þ*~1F*:(N} "þ*~2F*:(N} #þ*~3F*:(N} $þ*~4F*:(N} %þ*~5F*:(N} &þ*~6F*:(N} 'þ*~7F*:(N} (þ*~8F*:(N} )þ*~9F*:(N} *þ*~:F*:(N} +þ*~;F*:(N} ,þ*~F*:(N} /þ*~?F*:(N} 0þ*~@F*:(N} 1þ*~AF*:(N} 2þ*~BF*:(N} 3þ*~CF*:(N} 4þ*~DF*:(N} 5þ*~EF*:(N} 6þ*~FF*:(N} 7þ*{E*Zr.8ps<4 (;+o=4 *01.þ, þ,{E {E 3*Y**þ,**:¥ÙoP}*0BL!¥Ù þ,%¥Ùþ,{E {E 3*Y**¥Ùþ,**Fþ,(¹v**6(n oS}*0.L!þ,uÙ ,{E {E þ**þþ*0*.þ,þ,{E {E þ**þþ*0M!uÙ ,oV}**(>4 *0+N!o‹(+ ,¥+ Œî&szzŒ*(>4 *0+O!o‹(+ ,¥+ Œí&szzŒ*(>4 *0+P!o‹(”+ ,¥+ Œç&szzŒ*(>4 *0+Q!o‹(<+ o‰oŠ(òˆ(“Œç&*(>4 *0M*(mo‡oˆ(òˆsû£ (¤(¥(Æ o‰oŠ(òˆ(“Œç&*(>4 *Š(Æ o‰oŠ(òˆ(“Œç&*(>4 *09R!o‹¥m o‹(=+ o‰oŠ(òˆ(½’ŒÖ&*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *2([ Œ6*(>4 *02S!o‹(=+ o‹¥m ([ (\ (Ÿ+Œ6*(>4 *"Œ*(>4 *0T!o‹(>+ Œ*(>4 *fo‹¥&(Æ ŒÆ*(>4 *0"Q!o‹(<+ o‹¥&ŒÆ*(>4 *0"Q!o‹(<+ o‹¥&ŒÆ*(>4 *0"Q!o‹(<+ o‹¥&ŒÆ*(>4 *05U!o‹(<+ o‹¥&o‹(<+ (++ŒÆ*(>4 *05U!o‹(<+ o‹¥&o‹(<+ (++ŒÆ*(>4 *05U!o‹(<+ o‹¥&o‹(<+ (++ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *0(U!o‹(<+ o‹(<+ (++ŒÆ*(>4 *0«V!o‹(?+ o‹¥J o‹(@+ þþ,-(oo‡oˆ(òˆsû£ (¤ (¥+(  þþ,(¶v( ’(Æ (Ç +(Æ (¨v(Æ (Ç (++ŒÆ*(>4 *07X!o‹(A+ o‡oˆ(òˆ(’(Æ (Ç ŒÆ*(>4 *0*Y!o‹(+ o‹(>+ (®vŒî&*(>4 *0"Y!o‹(+ o‹(>+ Œî&*(>4 *0HZ!o‹(>+ (à o‡oˆ(òˆ(æ’ (?4 (@4 (A4 (“Œî&*(>4 *0*[!o‹(+ o‹(>+ (®vŒí&*(>4 *0"[!o‹(+ o‹(>+ Œí&*(>4 *0H\!o‹(>+ (Æ o‡oˆ(òˆ(Å’ (?4 (B4 (C4 (“Œí&*(>4 *0\]!o‹¥&o‹¥J o‹(B+ {I o…o‡oˆ(òˆ(9”  sD4 Œ"*(>4 *0A^!o‹(B+ {I o…o‡oˆ(òˆ(9” sE4 Œ"*(>4 *0=`!o‹(C+ (?4 (Ú (.‰sE4 oF4 (@4 (A4 (“Œî&*(G4 *0Fa!(q’3tÊ& {‚M(?4 (H4 *os’(p (Z (Y («v(?4 *(>4 *0ªb!o‹(C+ o‹(D+ (Ú (.‰sE4 oF4 uã&-uâ&- tá&{°M+= tã&{µM+/ tâ&{²M{šM(p(Z (Y (E+ sœ}(F+(“Œî&*(>4 *0(c!o‹(G+ o‹(D+ (A4 ŒÊ*(>4 *0d!o‹(G+ (@4 (A4 ŒÊ*(>4 *0If!o‹(H+ o‹¥&o‹(C+ (I4 (J4  sE4 oF4 Œß&*(>4 *0=h!o‹(I+ (?4 (Ú (.‰sE4 oK4 (B4 (C4 (“Œí&*(L4 *0Fi!(’3tµ& {[M(?4 (H4 *o’(p (Z (Y («v(?4 *(>4 *0ªj!o‹(I+ o‹(J+ (Ú (.‰sE4 oK4 uÛ&-uÚ&- tÙ&{¡M+= tÛ&{¦M+/ tÚ&{£M{“M(p(Z (Y (K+ s¨}(L+(“Œí&*(>4 *0(k!o‹(M+ o‹(J+ (C4 ŒÈ*(>4 *0l!o‹(M+ (B4 (C4 ŒÈ*(>4 *0Im!o‹(H+ o‹¥&o‹(I+ (I4 (J4  sE4 oK4 Œ×&*²(M4 }G}€G}G}‚G}ƒG*0 ’n!(J4 (I4 ( þþ, (r{‚Gsû£ (¤(¥+{€G(N4 {€G(O4 {€G(P4 (û+{G {G{ƒG(²’(è’*(>4 *0 ¬p!o‹(?+ o‹¥J o‹(N+ o‹(O+ þþ,/(qo‡oˆ(òˆsû£(¤(¥+o‡oˆ(òˆo‡oˆ(òˆ s²}Œ3 *V(M4 }„G}…G*0 Cq!(J4 (I4 ( -{„G{…G(æ’*{„G(æ {…G(ê’*(>4 *00r!o‹(O+ o‡oˆ(òˆ s¶}Œ3 *(Q4 *"o’*²(R4 }†G}‡G}ˆG}‰G}ŠG*0 ’n!(J4 (I4 ( þþ, (r{‰Gsû£ (¤(¥+{‡G(N4 {‡G(O4 {‡G(P4 (û+{ˆG {†G{ŠG(¦’(Ç’*(>4 *0 ¦s!o‹(?+ o‹¥J o‹(N+ o‹(<+ þþ,/(qo‡oˆ(òˆsû£(¤(¥+o‡oˆ(òˆsº} (P+ s¼}Œ5 *V(R4 }‹G}ŒG*0 Cq!(J4 (I4 ( -{‹G{ŒG(Å’*{‹G(æ {ŒG(É’*(>4 *00t!o‹(<+ o‡oˆ(òˆ sÀ}Œ5 *(>4 *No‹(O+ŒÇ*(>4 *0/u!o‹(O+ o‹¥&o‹¥&ŒÇ*(>4 *0"v!o‹(O+ o‹¥ó ŒÇ*(>4 *fo‹¥&(à ŒÇ*(>4 *No‹(O+ŒÇ*(>4 *2(à ŒÇ*(>4 *2(à ŒÇ*(>4 *05x!o‹(Q+ o‹¥&o‹(O+ (Ä ŒÇ*(>4 *‚o‹¥&o‹(O+ŒÇ*(>4 *0,y!o‹(Q+ o‹¥&(à (Ä ŒÇ*(>4 *0/Q!o‹(<+ o‹¥&o‹¥&ŒÆ*(>4 *0"z!o‹(<+ o‹¥ó ŒÆ*(>4 *fo‹¥&(Æ ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *2(Æ ŒÆ*(>4 *0Ã{!o‹(?+ o‹¥J o‹(@+ o‹¥&o‹(<+ þþ,/(oo‡oˆ(òˆsû£(¤(¥+(  þþ,(¶v( ’(Æ (Ç +(Æ (¨v (Ç (++ŒÆ*(>4 *0¸V!o‹(?+ o‹¥J o‹(@+ o‹¥&þþ,-(oo‡oˆ(òˆsû£ (¤ (¥+(  þþ,(¶v( ’(Æ (Ç +(Æ (¨v(Æ (Ç (++ŒÆ*(>4 *0«V!o‹(?+ o‹¥J o‹(@+ þþ,-(oo‡oˆ(òˆsû£ (¤ (¥+(  þþ,(¶v( ’(Æ (Ç +(Æ (¨v(Æ (Ç (++ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *0C|!o‹(?+ (  þþ,(¶v( ’(Æ (Ç +(Æ ŒÆ*(>4 *0(U!o‹(<+ o‹(<+ (++ŒÆ*(>4 *05U!o‹(<+ o‹¥&o‹(<+ (++ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *0"Q!o‹(<+ o‹¥&ŒÆ*(>4 *‚o‹¥&o‹(<+ŒÆ*(>4 *No‹(<+ŒÆ*(>4 *07X!o‹(A+ o‡oˆ(òˆ(’(Æ (Ç ŒÆ*(>4 *0 ‡~!o‹(?+ o‹¥J o‹(R+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(÷ˆ}ÝM{ÏA(±vŒÆ*(>4 *0 Ž€!o‹(?+ o‹¥J o‹(S+ (S4 (T4 þþ,/(qo‡oˆ(òˆsû£(¤(¥+(÷ˆ}ÝM  (±vŒÆ*(>4 *0 ˆ~!o‹(?+ o‹¥J o‹(R+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆ(±vŒÆ*(U4 *"{ùL*(>4 *0 e!o‹(?+ o‹¥J o‹¥&o‹(T+ o‹(U+ þþ,/(qo‡oˆ(òˆsû£(¤(¥+{ùL{øL{÷L{öL{ÐL{öL{ÏL {öL{ÎL {öL{ËL {öL{ÉL {öL{ÍL {öL{ÌL{öL{ÊL (â+    (‘(p‘ (V4 s~o‡oˆ(òˆ(V+(’(Æ (Ç ŒÆ*(74 *"{*L*(>4 *0 ƒ!o‹(?+ o‹¥J o‹(W+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+{ìL{ëL{êL{éL{êL{èL{êL{äL{êL{çL {êL{æL {êL{åL s~(/+ (â+   (H‘ (S‘ (’(Æ (Ç ŒÆ*(Q4 *"o’*(84 *"{I*(>4 *0‡!o‹(?+ o‹¥J o‹(N+ o‹(X+ þþ,/(qo‡oˆ(òˆsû£(¤(¥+(N4 (O4 (P4  u"9² t"(W4  où .1o‡oˆ(òˆ(s  (Z  (Y (-+&+(± (² o‡oˆ(òˆ(‘   s ~o‡oˆ(òˆ (P+(’(Æ (Ç 86 t"  (X4  þþ,/(qo‡oˆ(òˆsû£(¤(¥+où .1o‡oˆ(òˆ(s  (Z  (Y (-+&+oY4 ,1o‡oˆ(òˆ(t  (Z  (Y (-+&+þþ,1o‡oˆ(òˆ(u  (Z  (Y (-+&+(T+ s ~o‡oˆ(òˆ (0+(þ‘(Æ (Ç ŒÆ*(>4 *0Qˆ!o‹(?+ o‹¥ó (Äo‡oˆ(òˆsû£ (¤(¥(Æ ŒÆ*(>4 *0*‰!o‹(B+ oc‰( ’(Æ (Ç ŒÆ*(>4 *0'‰!o‹(B+ o‹¥&{IŒÆ*(>4 *0‰!o‹(B+ {IŒÆ*(>4 *0'Q!o‹(<+ o‹¥&(Z4 Œ "*(>4 *0'z!o‹(<+ o‹¥ó (Z4 Œ "*(>4 *0žŠ!o‹(<+ o‹¥&(å ,8 (Í (’3((Í t°& {QM(±ˆ , (‡ (Š , (Z4 +4 (‡ (‰ -ê(å (å -Ý (‡ (ˆ {I([4 Œ "*(>4 *0'z!o‹(<+ o‹¥ó (Z4 Œ "*(>4 *zo‹¥&(Æ (Z4 Œ "*(>4 *0Q!o‹(<+ (Z4 Œ "*(>4 *0‰!o‹(B+ {I([4 Œ "*(>4 *‚o‹¥&o‹(<+ŒÆ*(>4 *0[‹!o‹¥&o‹(<+ o‹¥ó o‡oˆ(òˆ(x (Z (Y («vŒÆ*(>4 *fo‹¥&(Æ ŒÆ*(>4 *"Œª*(>4 *0"Œ!o‹(Y+ o‹¥&Œš*(>4 *0-X!o‹(A+ o‡oˆ(òˆ(m’ŒÂ&*(>4 *No‹(Q+ŒÂ&*(>4 *0 f!o‹(?+ o‹¥J o‹(N+ o‹¥&o‹(Z+ þþ,/(qo‡oˆ(òˆsû£(¤(¥+(O4 (P4 où .1o‡oˆ(òˆ(s(Z (Y (-+&+oY4 ,1o‡oˆ(òˆ(t(Z (Y (-+&+þþ,1o‡oˆ(òˆ(v(Z (Y (-+&+(T+ o‡oˆ(òˆ(a’ŒÂ&*(>4 *0Ž!o‹(?+ o‹¥J o‹(N+ o‹¥&o‹(O+ (N4 (O4 (P4 où .1o‡oˆ(òˆ(y(Z (Y (-+&+(± (² o‡oˆ(òˆ(‘þþ,/(qo‡oˆ(òˆsû£ (¤ (¥+ o‡oˆ(òˆ(c’ŒÂ&*(>4 *0 È!o‹(?+ o‹¥J o‹([+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(\4 ,(]4 (\4 s^4 +.o‡oˆ(òˆ(z(Z (Y (\+(_4 (`4 {ÀL(`4 {¿L(`4 {¾L (`4 {½L{ÐL (`4 {½L{ÏL (`4 {½L{ÎL (`4 {½L{ËL (`4 {½L{ÉL(`4 {½L{ÍL(`4 {½L{ÌL(`4 {½L{ÊL(â+    (‘ (‘(a4 o‡oˆ(òˆ(g’ŒÂ&*(>4 *0 ý‘!o‹(?+ o‹¥J o‹(]+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+{jM{iM{hM{éL{hM{èL{hM{äL{hM{çL {hM{æL {hM{åL (â+   (H‘(Y’o‡oˆ(òˆ(i’ŒÂ&*(>4 *0=‰!o‹(B+ {Io‡oˆ(òˆoc‰(¥(k’ŒÂ&*(>4 *0z“!o‹(?+ o‹¥J o‹(?+ o‹¥ó o‹¥óo‹¥Jo‹(^+ o‹(_+ o‹(`+ o‹¥Ã þþ,/(qo‡oˆ(òˆsû£ (¤ (¥+o…o‡oˆ(òˆ(9” (‚  (ª  (  þþ,/({o‡oˆ(òˆs(¤ (¤ (¥+o‡ oˆ(òˆ(â+    (!‘(e’ŒÂ&*(>4 *"ŒÃ*(>4 *0o‹(@+ ( ŒÃ*(>4 *0'o‹(@+ o‹¥&( ŒÃ*(>4 *0"u!o‹(O+ o‹¥&ŒÇ*(>4 *0/u!o‹¥&o‹(O+ o‹¥&ŒÇ*(>4 *‚o‹¥&o‹(O+ŒÇ*(>4 *No‹(?+ŒÎ*(>4 *2(æ ŒÎ*(>4 *No‹(?+ŒÎ*(>4 *0(”!o‹(?+ o‹(?+ (â+ŒÎ*(>4 *0/|!o‹(?+ o‹¥&o‹¥&ŒÎ*(>4 *fo‹¥&(æ ŒÎ*(>4 *0b•!o‹(?+ o‹¥&o‹¥ó -.o‡oˆ(òˆ(ˆ (Z (Y («v+ŒÎ*(>4 *0L–!o‹¥ó -.o‡oˆ(òˆ(ˆ (Z (Y («v+(æ ŒÎ*(>4 *0˜!o‹(a+ (æ (  ŒÎ*(>4 *0?™!o‹(?+ o‹¥&o‹(a+ (æ (  (â+ŒÎ*(>4 *0 Yš!o‹(B+ o‹¥&o‹¥Ã , (ô +(‰oc‰(Œoc‰sëŒN&*(>4 *0 f›!o‹¥ o‹(B+ o‹¥&o‹¥Ã , (ô +(‰oc‰(Œoc‰sëŒN&*(>4 *0 s›!o‹¥ o‹(B+ o‹¥&o‹¥&o‹¥Ã , (ô +(‰oc‰(Œoc‰sëŒN&*(>4 *08Mo‹¥&o‡oˆ(òˆ rqpsY‰(Ô Œ*(>4 *08Mo‹¥&o‡oˆ(òˆ rŠpsY‰(Ô Œ*(>4 *0+o‹(^+ (Ô Œ*(>4 *0kœ!o‹¥ó ,.o‡oˆ(òˆ(} (Z (Y («v+o‡oˆ(òˆ r¸psY‰(Ô Œ*(>4 *‚o‹¥&o‹([+Œ "*(>4 *0(ž!o‹(b+ o‹([+ (a4 Œ "*(>4 *0Ÿ!o‹(b+ (b4 (a4 Œ "*(>4 *0;¡!o‹(c+ o‹(d+ o‡oˆ(òˆ(e+Œƒ&*(>4 *0 e¢!o‹(c+ o‹(f+ o‰oŠ(òˆ(‡o‰oŠ(òˆ(ío‰oŠ(òˆ(‘Œƒ&*²(d4 }G}ŽG}G}G}‘G*0 3{G{‘G{ŽG{G(R +{G(g+þ(h+*(>4 *0 t¤!o‹(i+ o‹¥&o‹(f+ o‹(f+ o‹¥&o‹(f+ o‰oŠ(òˆ sx~Œ "*V(d4 }’G}“G*^{’G{“Gþ(h+*(>4 *0;¥!o‹(i+ o‹(f+ o‰oŠ(òˆ s|~Œ "*V(f4 }”G}•G*‚{”G{•G(í{•G(‘*(>4 *0#¦!o‹(j+ o‹ s€~Œ"*’(f4 }–G}—G}˜G}™G*0` !{—G,{™G(( þ+,(€ (Z (Y («v+{˜G{™G{–G(ë{–G(‘*(>4 *0Q¨!o‹(k+ o‰oŠ(òˆ (g4 (h4 (i4 (h4 (j4  s„~Œ"*’(f4 }šG}›G}œG}G*0p !(( þþ,!{šG(~ (Z (Y (-+&+{›G{œG(p{G(k4 (l4 {šG(ë(k4 {šG(‘*(>4 *0{©!o‹(`+ o‰oŠ(òˆ (‚ (ª (æ r$æpsY‰(ïˆ (.‰(!‘(s(. sˆ~Œ"*(>4 *03«!o‹(l+ (m4 (n4 (\so4 sp4 Œ"*(>4 *00­!o‹(m+ o‹(f+ so4 sp4 Œ"*(>4 *0g®!o‹(m+ o‹(f+ o‹¥ó o‡oˆ(òˆ( (Z (Y («vso4 sp4 Œ"*(>4 *0)­!o‹(m+ (k4 so4 sp4 Œ"*(>4 *0(¯!o‹(f+ o‹¥&sq4 Œ"*(>4 *0[°!o‹(f+ o‹¥ó -.o‡oˆ(òˆ(’ (Z (Y («v+sq4 Œ"*(>4 *0¯!o‹(f+ sq4 Œ"*(>4 *0(±!o‹(f+ o‹¥ó sq4 Œ"*(>4 *0"¯!o‹(f+ o‹¥&Œœ*(>4 *0U°!o‹(f+ o‹¥ó -.o‡oˆ(òˆ(’ (Z (Y («v+Œœ*(>4 *No‹(f+Œœ*(>4 *No‹(f+Œœ*(>4 *2(k4 Œœ*(>4 *05²!o‹(n+ o‹¥&o‹(f+ (l4 Œœ*(0! *0 s*(>4 *Js¨~sr4 Œ"*(0! *0 s*(>4 *Js¬~sr4 Œ"*(0! *0 s*(>4 *Js°~sr4 Œ"*(0! *0 s*(>4 *Js´~sr4 Œ"*(>4 *No‹(o+Œ"*(0! *0 s*(>4 *Jsº~sr4 Œ"*(0! *0 s*(>4 *Js¾~sr4 Œ"*(>4 *0³! ( ss4 Œ"*(>4 *04´!o‹(p+ o‡oˆ(òˆ(l ss4 Œ"*(>4 *04´!o‹(p+ o‡oˆ(òˆ(l ss4 Œ"*(>4 *0^µ!o‹(p+ o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆ(l ss4 Œ"*(>4 *0t¶!o‹(^+ {Ir¼p(ñ ,( +E{Iri@p(ñ ,("++o‡oˆ(òˆ(‚ (Z (Y (q+ŒS&*(>4 *0¬·!o‹(^+ o‹(^+ {Ir¼p(ñ ,{Iri@p(ñ +,+'{Iri@p(ñ ,{Ir¼p(ñ +-.o‡oˆ(òˆ(‚ (Z (Y (-+&+($ŒS&*(>4 *0Œº!o‹(?+ o‹¥J o‹(o+ o‹¥ó o‹¥Jo‹(^+o‹(_+ o‹(`+ o‹(r+ o‹¥Ã þþ,/(qo‡oˆ(òˆsû£ (¤ (¥+o…o‡oˆ(òˆ(9” (‚  (ª  (t4 (u4 o‡oˆ(òˆ,($ (¥+ o ‹(¥    (!‘(v4  (Ëvo? (.ŒU&*(>4 *0˜»!o‹(?+ o‹¥J o‹¥&o‹(s+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆo ‹(¥(0ŒU&*(>4 *0‹»!o‹(?+ o‹¥J o‹(s+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆo ‹(¥(2ŒU&*(>4 *0‡½!o‹(?+ o‹¥J o‹(t+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(u+o‡oˆ(òˆ(4ŒU&*(>4 *0‡½!o‹(?+ o‹¥J o‹(t+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(u+o‡oˆ(òˆ(4ŒU&*(>4 *0¾!o‹(?+ o‹¥J o‹¥&o‹(b+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆ(6ŒU&*(>4 *0Á¿!o‹(?+ o‹¥J o‹(`+ o…o‡oˆ(òˆ(9” (ª (‚ o‡oˆ(òˆo ‹(¥o‡oˆ(òˆrKpsY‰(ðˆ (!‘(êˆ(.ŒU&*(>4 *0 {Á!o‹(?+ o‹(v+ o‹(w+ (x4 (y4 (z4 ({4 (|4 (}4 (x+ (©ˆ(‘Œ…&*(>4 *0(Â!o‹(T+ o‹(U+ (V4 Œ"*(>4 *2(~4 Œ"*(>4 *0;Ã!o‹(c+ {ÐL(‡{ÐL(]‘(  {ÐL(p‘Œ’&*(– *"o’‘*(>4 *0 ‡Æ!o‹(c+ o‹(y+ o‡oˆ(òˆ o4 (€4  (4 o‡oˆ(òˆoa‘(¥sä~(z+(p‘Œ’&*(– *"o’‘*(>4 *0YÇ!o‹(c+ o‹(Y+ sè~o‡oˆ(òˆ(z+ (l(  ([‘(p‘Œ’&*(>4 *0 PÈ!o‹(c+ o‹(?+ o‹¥J o‹¥&o‹({+ o‹¥o‹(y+o‡oˆ(òˆo4 (€4 (4  {ÌL   (©ˆ(~‘ uŽ&,9tŽ&  {ñL {ïL {ðL (  ([‘+1o‡oˆ(òˆ(ƒ(Z (Y («v   o‡oˆ(òˆ oa‘(¥(p‘Œ’&*²(‚4 }žG}ŸG} G}¡G}¢G*0 2{žG{¢G{ŸG{ G(= +{¡G(|+þ(}+*(>4 *0 ËÊ!o‹(~+ o‹¥&o‹(Y+ o‹(Y+ o‹¥&o‹(Y+ o‡oˆ(òˆ ( -4( -o‡oˆ(òˆ+*o‡oˆ(òˆ+o‡oˆ(òˆ(¥ sî~Œ9 *’(‚4 }£G}¤G}¥G}¦G*0 1{£G{¦G{¤G{¥G(= +(  (|+þ(}+*(>4 *0ÔË!o‹(~+ o‹¥&o‹(Y+ o‹(Y+ o‹¥ó -1o‡oˆ(òˆ(“(Z (Y («v+o‡oˆ(òˆ( -o‡oˆ(òˆ+o‡oˆ(òˆ(¥sò~Œ9 *V(‚4 }§G}¨G*Z{§G{¨Gþ(}+*(>4 *0=Ì!o‹(~+ o‹(Y+ o‡oˆ(òˆ sö~Œ9 *V(„4 }©G}ªG*f{©G{ªG(]‘s…4 *(>4 *0#¦!o‹(j+ o‹ sú~Œ"*’(„4 }«G}¬G}­G}®G*0Y !{«G,{­G( þ+,(€ (Z (Y («v+{¬G{­G{®G([‘s…4 *(>4 *0oÎ!o‹(+ (†4 (‡4 (ˆ4 (‰4 (ˆ4 (Š4 , ($ +o‰oŠ(òˆ(G¥ sþ~Œ"*r(„4 }¯G}°G}±G*0ºÏ!(æ r$æp{¯GsY‰(ïˆ{°G{±G(.‰{¯G(!‘ (s{¯G(„‘ ( þþ,!{¯G(~ (Z (Y (-+&+{°G{±G(p(  (  {¯G([‘(  s…4 *(>4 *0=Ð!o‹(`+ o‰oŠ(òˆ (‚ (ª  sŒ"*(>4 *0;Ò!o‹(€+ (‹4 (Œ4 (4 (\ sŽ4 s4 Œ"*(– *"o’‘*(>4 *0TÓ!o‹(m+ o‹(Y+ so‡oˆ(òˆ(z+ sŽ4 (l s4 Œ"*(– *"o’‘*(>4 *0ŽÔ!o‹(m+ o‹(Y+ o‹¥ó o‡oˆ(òˆ( (Z (Y («vs o‡oˆ(òˆ(z+sŽ4 (l s4 Œ"*(>4 *0CÖ!o‹(m+ (  sŽ4 o‡oˆ(òˆ(l  s4 Œ"*(– *"o’‘*(>4 *0 ‹×!o‹(Y+ o‹¥ó -.o‡oˆ(òˆ(“ (Z (Y («v+( ,&so‡oˆ(òˆ(z+(l +s4 Œ"*(– *"o’‘*(>4 *0ZØ!o‹(Y+ o‹¥&( ,&so‡oˆ(òˆ(z+(l + s4 Œ"*(>4 *0U×!o‹(Y+ o‹¥ó -.o‡oˆ(òˆ(“ (Z (Y («v+Œš*(>4 *0"Œ!o‹(Y+ o‹¥&Œš*(>4 *No‹(Y+Œš*(>4 *No‹(Y+Œš*(>4 *No‹(Y+Œš*(>4 *2(  Œš*(>4 *05Ù!o‹(Y+ o‹¥&o‹(Y+ (= +Œš*(>4 *No‹(+Œ"*(>4 *No‹(+Œ"*(>4 *0AÛ!o‹(+ o‡oˆ(òˆ( (Z (Y («vŒ"*(>4 *0Ý!o‹(‚+ (‘4 (’4 Œ"*(>4 *02Þ!o‹(‚+ o‹(‚+ (‘4 (’4 (’4 Œ"*(>4 *0 _à!o‹¥ó o‹(?+ o‹(ƒ+ o‹¥ o‹(@+oŒŒ s“4 Œ"*ò(”4 }²G}³G}´G}µG}¶G}·G}¸G*0r{¸G{²G{·G(çŠ{³G{´G{µG(  (o? (Ê s$4 s%4 o&4 {¶G{·G(¥(|‘(  (  *(>4 *0 €â!o‹¥ó o‹(ƒ+ o‹¥ o‹(@+ oŒŒo‡oˆ(òˆ(¥(•4 (–4  s4Œ"*(—4 *00à!(˜4 (™4 (š4 (›4 (œ4 (4 *(ž4 *0 {&L{'L{(L{*Lsë*0L(Ÿ4 }¹G}ºG}»G}¼G}½G}¾G}¿G}ÀG }ÁG*0íã!(˜4 (™4 (š4 (›4 (œ4 (4 (•4 (–4 {¹G,+s:(„+ {¿G (â+ {½G(çŠ (   {¾G(o? (Ê s$4 s%4 o&4   {.L  {5L  {8L {0L {2L (Ìvr¼p(ñ ,J{ÀG(• ,$(†(Z (Y («v8‹{ÀG(< ( ( 4 +rri@p(ñ ,G{ÁG(• ,!(†(Z (Y («v+6{ÁG(< ("( 4 +(†(Z (Y (…+,2{ºG{»G{¼G{¾G  (Ñv**²(”4 }ÂG}ÃG}ÄG}ÅG}ÆG*0 ?ä!s¸ s¸ {ÂG{ÃG{ÅG{ÆGs<{ÄGþ(†+*(>4 *0 på!o‹¥ó o‹(ƒ+ o‹¥ o‹(+ s8o‡oˆ(òˆ (‡+(–4  s>Œ"*(>4 *"Œ*(>4 *"Œ*(>4 *0 {æ!o‹(?+ o‹¥J o‹(R+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(¯v(  (  Œš*(>4 *0 ’æ!o‹(?+ o‹¥J o‹(R+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆ(l (¯v(  (  Œš*(>4 *0‘è!o‹(?+ o‹¥J o‹(o+ o‹(ˆ+ o‹¥&þþ,/(qo‡oˆ(òˆsû£(¤(¥+ (v4 (‰+Œš*(– *"o’‘*(>4 *0é!o‹(?+ o‹¥J o‹¥&o‹(s+ o‹¥ç (  þþ,/(|o‡oˆ(òˆsû£(¤(¥+þþ,/(‹o‡oˆ(òˆsû£(¤(¥+ ,. (O sLo‡oˆ(òˆ(z++o‡oˆ(òˆ (†‘(  (  Œš*(>4 *0jê!o‹(?+ o‹¥J o‹¥&o‹¥ó o‹(^+ o‹(_+o‹(`+ o‹(r+ o‹¥&(‚ (ª o…o‡oˆ(òˆ(9” (t4  (u4  o‡oˆ(òˆ  ,  ($ (¥+ o ‹(¥ þþ,(Œ sû£(¤(¥+   (!‘ (Òvs („‘(  (  Œš*(>4 *0¯ë!o‹(?+ o‹¥J o‹(Š+ (  þþ,-(o‡oˆ(òˆsû£ (¤ (¥+þþ,-(Žo‡oˆ(òˆsû£ (¤ (¥+(  (  Œš*(>4 *0}í!o‹(?+ o‹¥J o‹(‹+ o‹¥&þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+(Œ+Œš*(>4 *0”í!o‹(?+ o‹¥J o‹(‹+ o‹¥&þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆ(l (Œ+Œš*(>4 *0–ï!o‹(?+ o‹¥J o‹(o+ o‹(+ o‹¥&þþ,/(qo‡oˆ(òˆsû£(¤(¥+ (£4 (v4 (Ž+Œš*(>4 *0hð!o‹(?+ o‹¥J o‹(+ o‹¥ o‹(@+o‹¥&o‡oˆ(òˆoŒŒ(¥(êˆ(Ê sb“(Àˆ(O (H”(† (  (=”(3‘ (ìo‡oˆ(òˆ rKp sY‰(Ú (Û (( (]‰(ðˆ( (+ (, o‡oˆ(òˆ(-(‹o…o‡oˆ(òˆ(9”(çŠ(ó(|‘(  (  Œš*(>4 *0 ˜ñ!o‹(?+ o‹¥J o‹¥&o‹(T+ þþ,-(qo‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆ(Œ‘(  (  Œš*ò(¥4 }ÇG}ÈG}ÉG}ÊG}ËG}ÌG}ÍG*0 aò!{ÉG(Ô {ÊG{ÇG{ÌG{ÈG{ËG(‘, ($ {ÍG(¥+{ÍG(Š‘(  (  *(>4 *0 •ó!o‹¥ó o‹¥J o‹(^+ o‹(s+ o‡oˆ(òˆo…o‡oˆ(òˆ(9”o‡oˆ(òˆ s^Œ""*0D(¦4 }ÎG}ÏG}ÐG}ÑG}ÒG}ÓG}ÔG}ÕG*0D{ÏG{ÐG{ÕG{ÒG{ÎG{ÑG{ÔG{ÓG(Ž‘(  (  *(>4 *0 ðô!o‹¥ó o‹¥J o‹(^+ o‹¥ o‹(@+o‹(r+o…o‡oˆ(òˆ(9”o‡oˆ(òˆoŒŒ(¥(t4 (u4  ,/(©o‡oˆ(òˆsû£ (¤ (¥+  sbŒ#"*(>4 *"Œ*(>4 *0õ!o‹(s+ (§4 Œ*(>4 *0 kö!o‹(B+ {I {I o‡oˆ(òˆ r„Áp sY‰(Û o‡oˆ(òˆ(n (]‰s¨4 Œ$"*(>4 *0÷!o‹(B+  s¨4 Œ$"*(>4 *0/ø!o‹(+ o‹(B+ ( ! s¨4 Œ$"*(>4 *"ŒJ*(>4 *0ù!o‹(+ ( ! ŒJ*(>4 *2(LŠŒ/%*(>4 *2(HŠŒ/%*(>4 *2(JŠŒ/%*(>4 *0ù!o‹(+ ( ! ŒJ*(>4 *"ŒJ*(>4 *0'Œ!o‹(Y+ o‹¥&(@ Œç*(>4 *"Œç*(>4 *0"Œ!o‹(Y+ o‹¥&Œš*(>4 *2(  Œš*(>4 *0"¯!o‹(f+ o‹¥&Œœ*(>4 *2(k4 Œœ*(>4 *0 Fú!o‹(s+ o‹¥ o‡oˆ(òˆo ‹(¥(ˆ‘Œ“&*(>4 *0 aû!o‹(s+ o‹¥&o‹(@+ o‹¥ o‡oˆ(òˆoŒŒ(¥(€‘Œ“&*(>4 *0cü!o‹¥ó o‡oˆ(òˆ -(Åsû£ (¤(¥+(Ú (( (]‰(€‹(ˆ‘Œ“&*(>4 *0+o‹(^+ (Ô Œ*(>4 *"Œ*(>4 *No‹(^+Œð$*(>4 *0+o‹(^+ (Ô Œ*(>4 *"Œ*(>4 *0tý!o‹(^+ {Ir‘p(ñ --(o‡oˆ(òˆsû£ (¤(¥+o‡oˆ(òˆ r‘psY‰Œð$*(>4 *0Qþ!(o‡oˆ(òˆsû£ (¤(¥o‡oˆ(òˆ r‘psY‰Œð$*(>4 *0"Œ!o‹(Y+ o‹¥&Œš*(>4 *0U×!o‹(Y+ o‹¥ó -.o‡oˆ(òˆ(” (Z (Y («v+Œš*(>4 *No‹(Y+Œš*(>4 *05Ù!o‹(Y+ o‹¥&o‹(Y+ (= +Œš*(>4 *0"Œ!o‹(Y+ o‹¥&Œš*(0! *0 s*(>4 *0Hÿ!o‹(?+ o‹¥&o‹(ˆ+ o‹¥&s¨(‰+Œš*(0! *0 s*(>4 *0H"o‹(?+ o‹¥&o‹(+ o‹¥&s¬(Ž+Œš*(>4 *0&|!o‹(?+ o‹¥&(  Œš*(>4 *03ÿ!o‹(?+ o‹(ˆ+ o‹¥&(  Œš*(>4 *"Œ*(>4 *"Œ*(>4 *0 ²"o‹(?+ o‹¥J o‹(B+ o‹(‘+ o‹¥mo‹¥ó(o‡oˆ(òˆsû£(¤(¥(M‰(€‹o‡oˆ(òˆoc‰(¥(…Œe&*(>4 *0 Í»!o‹(?+ o‹¥J o‹(s+ (  þþ,-(o‡oˆ(òˆsû£ (¤ (¥+þþ,-(‘o‡oˆ(òˆsû£ (¤ (¥+(K‰o‡oˆ(òˆo ‹(¥(…Œe&*(©4 *03"u%",t%" (ª4 {­L*t&" («4 {§L*(¤ *&(¥*(¬4 *.u&"þ*(­4 *0I"u%",.t%" (ª4 {­L (“sû£ (¤(¥*t&" («4 (®4 *(¯4 *0'"u&", r˜¼ps\ zt%" (ª4 (°4 *(>4 *0 "o‹(?+ o‹¥J o‹(’+ (  þþ,-(o‡oˆ(òˆsû£ (¤ (¥+s¼(“+s¾o‡oˆ(òˆ(‰+sÀ(”+,Mþþ,-(’o‡oˆ(òˆsû£ (¤ (¥+sÂ(•+(}+sÄ(–+({Œe&*(>4 *0„ "o‹(?+ o‹¥J o‹(—+ (  þþ,-(o‡oˆ(òˆsû£ (¤ (¥+o‰oŠ(òˆ(Œe&*(>4 *0É "o‹(?+ o‹¥J o‹(j+ o‹¥&(  þþ,-(o‡oˆ(òˆsû£ (¤ (¥+o‰oŠ(òˆ(³£þþ,-(”o‡oˆ(òˆsû£ (¤ (¥+Œe&*(>4 *0" "o‹(—+ o‹¥&ŒW*(>4 *0N "o‹(—+ o‹¥ó o‡oˆ(òˆ(¬ (Z (Y («vŒW*(>4 *fo‹¥&(±4 ŒW*(>4 *0jÖ o‹¥m o‹¥&o‰oŠ(òˆ(³£o‰oŠ(òˆ o‡oˆ(òˆ(ň(ƒŒe&*(>4 *2(^Œa&*(>4 *2(`Œa&*(>4 *2(bŒa&*(>4 *"Œ*(>4 *"Œ*(>4 *0 b"o‹¥J o‹(B+ (± {I (² o…o‡oˆ(òˆ(9” s²4 Œ"*(>4 *0 i"o‹¥J o‹(˜+ o‹(B+ {I (² o…o‡oˆ(òˆ(9” s²4 Œ"*(>4 *0 s"o‹¥J o‹(B+ o‹(™+ (³4 {I(´4 o…o‡oˆ(òˆ(9” s²4 Œ"*(>4 *0)"o‹(š+ (æ (‹(± (µ4 Œ`*(>4 *0'"o‹(˜+ o‹¥&(›+Œ`*(>4 *0("o‹(˜+ o‹(œ+ (µ4 Œ`*(>4 *0"o‹(œ+ (± (µ4 Œ`*(>4 *0("o‹(?+ o‹(š+ (‹Œ]%*(>4 *0ˆ"o‹¥&o‹¥ó o‹(˜+ o‹(w+ o‹¥ó -/(ìo‡oˆ(òˆsû£(¤(¥+(›+s¶4 Œ)"*(>4 *0""o‹(˜+ (›+ s·4 Œ*"*(>4 *0""o‹(˜+ (›+ s·4 Œ*"*(>4 *0"(± s·4 Œ*"*(>4 *0Ž"o‹¥&o‹¥ó o‹(+ o‹(w+ o‹¥ó -/(ìo‡oˆ(òˆsû£(¤(¥+(¸4 (¹4 (A‘Œ‰&*(>4 *No‹(_+Œ‰&*(>4 *^(± (² (A‘Œ‰&*(>4 *0"o‹(_+ ( ŒŒ*(>4 *"ŒŒ*(>4 *2(² Œ´*(>4 *0"o‹(w+ (ž+Œ´*(>4 *0("o‹(w+ o‹(Ÿ+ (º4 Œ´*(>4 *0 "o‹(Ÿ+ (² (º4 Œ´*(>4 *0Q!"o‹(š+ o‹(s+ o‰oŠ(òˆ(³£o‰oŠ(òˆ('‹Œ^%*(>4 *09!"o‹(š+ o‹(s+ o‰oŠ(òˆ()‹Œ^%*(>4 *0+"o‹(š+ o‰oŠ(òˆ(‹Œ^%*(>4 *0v""o‹(š+ o‹¥m rÀ‡p(ñ -/o‡oˆ(òˆ(• (Z (Y («v+o‰oŠ(òˆ(‹Œ^%*(>4 *0+"o‹(š+ o‰oŠ(òˆ(!‹Œ^%*(>4 *0P#"o‹(š+ o‹(n+ o‹¥&(ˆ (‰ o‰oŠ(òˆ(+‹Œ^%*(>4 *0X$"o‹( + o‹¥&o‹(n+ o‹¥&(¡+o‰oŠ(òˆ(+‹Œ^%*(>4 *0E&"o‹(š+ o‹(¢+ (»4 (¼4 {I{I(¥(/‹Œ^%*(>4 *0‘'"o‹(š+ o‹¥m o‹(¢+ rÉûp(ñ ,'(»4 (¼4 {I{I (¥(-‹+/o‡oˆ(òˆ(•(Z (Y (£+Œ^%*(>4 *0Å""o‹(š+ o‹¥m rDp(ñ ,o‰oŠ(òˆ(#‹8zrDp(ñ ,o‰oŠ(òˆ(%‹+SrXDp(ñ ,o‰oŠ(òˆ(‹+,o‡oˆ(òˆ(• (Z (Y (£+Œ^%*(>4 *0(("o‹( + o‹(š+ (‰ ŒB*(>4 *0"o‹(š+ (ˆ (‰ ŒB*(>4 *0(*"o‹(¤+ o‹(¥+ o½4 Œ,"*(>4 *0;,"o‹(¦+ o‹(¤+ o‹(¥+ o½4 (¾4 Œ,"*(>4 *0-"o‹(¦+ (¿4 (¾4 Œ,"*(>4 *–o…o‡oˆ(òˆ(9”Œæ$*r(À4 }ÖG}×G}ØG*’{ÖGoÁ4 {ØG{×Go½4 (¾4 *(>4 *06/"o‹(§+ o‹(¤+ o‹(¥+ s(€ŒE *:(À4 }ÙG*b{ÙGoÁ4 (¿4 (¾4 *(>4 *00"o‹(§+ s,€ŒE *r(Â4 }ÚG}ÛG}ÜG*0 *{ÚG{ÛG(±4 (Ü{ÜG(Ð(Ã4 *(>4 *0’1"o‹(?+ o‹¥J o‹(^+ o‹¥&þþ,-(–o‡oˆ(òˆsû£ (¤ (¥+o‡oˆ(òˆs0€ŒF *’(Â4 }ÝG}ÞG}ßG}àG*0 +{ÝG{ÞG{ßG(Ü{àG(Ð(Ã4 *(>4 *0¢2"o‹(?+ o‹¥J o‹(^+ o‹(—+ o‹¥&þþ,/(–o‡oˆ(òˆsû£(¤(¥+o‡oˆ(òˆ s4€ŒF *’(Â4 }áG}âG}ãG}äG*0 +{áG{âG{ãG(Þ{äG(Ð(Ã4 *(>4 *0¹3"o‹(?+ o‹¥J o‹(^+ o‹(`+ o‹¥&þþ,/(–o‡oˆ(òˆsû£(¤(¥+o‰oŠ(òˆ(´£o‡oˆ(òˆ s8€ŒF *’(Â4 }åG}æG}çG}èG*0 %{åG{æG{çG{èG(Æ(Ä4 *(>4 *0¢4"o‹(?+ o‹¥J o‹(^+ o‹(¨+ o‹¥&þþ,/(—o‡oˆ(òˆsû£(¤(¥+o‡oˆ(òˆ s<€ŒF *(>4 *No‹(^+Œð$*(>4 *03Mo‹¥&o‡oˆ(òˆ (…–sY‰Œð$*(>4 *03Mo‹¥&o‡oˆ(òˆ (†–sY‰Œð$*(>4 *0 T+o‹(^+ o‹¥&(æ (±4 (Ü(.‰o‡oˆ(òˆ(Ð(Ã4 Œ-"*(>4 *0 W5"o‹(^+ o‹(¨+ o‹¥&(æ (.‰o‡oˆ(òˆ(Æ(Ä4 Œ-"*(>4 *0"-"o‹(¦+ o‹¥&Œ-"*(>4 *0 P6"o‹(^+ o‹(—+ (æ (Ü(.‰o‡oˆ(òˆ(Ð(Ã4 Œ-"*(>4 *0 W5"o‹(^+ o‹(¨+ o‹¥&(æ (.‰o‡oˆ(òˆ(Æ(Ä4 Œ-"*(>4 *0>7"o‹(—+ (˜o‰oŠ(òˆs(¤ (¤(¥ŒW*(Å4 *"(´ˆ*(>4 *028"o‹(s+ o‹(©+ sR€(Æ4 (ª+ŒW*(>4 *0$õ!o‹(s+ (´ˆ(±4 (Ç4 ŒW*(>4 *05:"o‹(«+ o‹¥&o‹(—+ (Ç4 ŒW*(>4 *0,;"o‹(«+ o‹¥&(±4 (Ç4 ŒW*(>4 *0 ¸<"o‹(?+ o‹(t+ (u+ {ÇL {ÈL{ÆL{ÅL{ÄL{ÃL{ÂL {ÁL þþ,/(™o‡oˆ(òˆsû£ (¤ (¥+  (‘Œ„&*Ò(È4 }éG}êG}ëG}ìG}íG}îG*0 2{ëG(Ô {ìG{éG{îG{êG{íG(‘*(>4 *0 ~="o‹¥ó o‹¥J o‹(^+ o‹(s+ o‡oˆ(òˆo…o‡oˆ(òˆ(9” s^€Œ."*(– *"o’‘*(>4 *0 9>"o‹(¬+ o‹(Y+ sb€{éL(z+(S‘Œ‹&*(>4 *09?"o‹(¬+ o‹(f+ o‰oŠ(òˆ(Y’ŒÁ&*(>4 *–o…o‡oˆ(òˆ(9”Œæ$*(>4 *0 ›@"o‹(¤+ o‹(?+ o‹¥J o‹(­+ o‹¥É ,/(é (·vo‡oˆ(òˆ(¥+o‡oˆ(òˆ(H‘ŒŠ&*(>4 *0 @+o‹(^+ (æ (±4 (Ü(.‰o‰oŠ(òˆ(ÐŒv&*(>4 *0 I6"o‹(^+ o‹(—+ (æ (Ü(.‰o‰oŠ(òˆ(ÐŒv&*(>4 *"ŒÉ*(>4 *0‰!o‹(B+ {I(® ŒÉ*(>4 *No‹(B+Œñ$*r(É4 }ïG}ðG}ñG*0[A"{ñG{ðG(®+ {ïG- oË4 þ+,!{ðG(š (Z (Y («v+(æ sÌ4 *(>4 *0 D"o‹¥ó o‹¥ó o‹(¯+ o‡oˆ(òˆ (Í4 (Î4   sv€, ($ (¥+o‡oˆ(òˆ(ÝvŒc*(>4 *0 1E"o‹(°+ o‰oŠ(òˆ (ÝvŒc*V(É4 }òG}óG*0 %{òG{óG(±+( (à sÌ4 *(>4 *0 FF"o‹(@+ o‡oˆ(òˆ oŒŒ(¥ s|€(ÝvŒc*r(É4 }ôG}õG}öG*0[A"{öG{õG(®+ {ôG- oË4 þ+,!{õG(š (Z (Y («v+(æ sÌ4 *(>4 *0 ÍH"o‹¥ó o‹¥ó o‹(¯+ o‹(²+ o‡oˆ(òˆ ,r$¬p+rñÞp(³+&(Í4 (Î4 ,($ (¥+o‡oˆ(òˆs€€(Ýv(¥sÐ4 Œ"*V(É4 }÷G}øG*0 %{÷G{øG(±+( (à sÌ4 *(>4 *0 YI"o‹(@+ o‹(²+ o‡oˆ(òˆ oŒŒ(¥  s„€ (ÝvsÑ4 Œ1"*(>4 *No‹(R+Œc*(>4 *No‹(R+Œc*(>4 *0J"o‹(S+ (T4 Œc*(>4 *0L"o‹(´+ (Ò4 Œc*(Ó4 **(>4 *2s€Œ2"*(Ó4 *0\ !r¢¼p(ñ ,(™+0r¬¼p(ñ ,(š+r$¬p(ñ ,(›+(˜ (Z (Y («v*(>4 *0Jo‹¥ó s”€Œ2"*0L(É4 }ùG}úG}ûG}üG}ýG}þG}ÿG}H }H*0M"{úG(Ú (Û (( (]‰(ðˆ( {ûG{þG(/(+ (, {ýG(- {üG{ÿG(çŠ{ùG(  {H{H(  (èˆ (æ ( (à sÌ4 *(>4 *0 SO"o‹(µ+ o‹¥J o‹(^+ o‹¥&o‹(¶+ o‹¥&o…o‡oˆ(òˆ(9”o‡oˆ(òˆo‡oˆ(òˆo‰oŠ(òˆo‰oŠ(òˆo‰oŠ(òˆ o‡oˆ(òˆ r¶¼p sY‰(NŒrȼpo‡oˆ(òˆ(£‰o‡oˆ(òˆ(Œ (>Œ    s˜€Œ3"*(>4 *0P"o‹(¶+ (·+ŒÛ*(>4 *0Q"o‹(+ (+ (, ŒÛ*(>4 *2(+ ŒÛ*(>4 *0(R"o‹(¶+ o‹(+ (, ŒÛ*(>4 *02S"o‹(+ o‹(+ (+ (, (, ŒÛ*(>4 *0OT"o‹(?+ o‹(s+ o‰oŠ(òˆ (!(%  oG('Œ$&*(>4 *0 hU"o‹(?+ o‹(s+ o‹(^+ o‰oŠ(òˆ (! (# (%oG('Œ$&*(>4 *0 2‰!o‹(B+ (€‹(í (( oc‰(‚‹Œv%*(>4 *0 q°o‹(s+ o‹¥&o‰oŠ(òˆ r$_psY‰(Ú (Û (( (]‰(€‹(í (Æ4 (( (‚‹Œv%*(>4 *0 d°o‹(s+ o‰oŠ(òˆ r½psY‰(Ú (Û (( (]‰(€‹(í (Æ4 (( (‚‹Œv%*(>4 *0 d°o‹(s+ o‰oŠ(òˆ r2½psY‰(Ú (Û (( (]‰(€‹(í (Æ4 (( (‚‹Œv%*(>4 *0 QMo‰oŠ(òˆ rŠFpsY‰(Ú (Û (( (]‰(€‹(í (( (‚‹Œv%*(>4 *0GV"o‹(?+ o‹(s+ (:‘s o‡oˆ(òˆ({“Œ'*(>4 *0 sW"o‹(?+ o‡oˆ(òˆ r: psY‰(Ú (Û (( (]‰(€‹(í (( (‚‹(:‘s ({“Œ'*:(Ô4 }H*"{H*V(Ô4 }H}H*0 {H(¸+{H(à *(>4 *0³\"o‹¥4" o‹(¹+ (º+ (Ö4 (×4 ( þ,+ (_+(l - s¸€sØ4 +G(Ù4 (Ú4 (Ù4 (Û4 , ($ +  (l sº€sØ4 Œ/"*(>4 *0 v]"o‹¥4" o‹(¹+ o‡oˆ(òˆ -+9 (Ù4 (Ú4  (Ù4 (Û4 (æ (¸+sÜ4 (Ý4 Œ8"*(>4 *2(Þ4 Œ8"*V(ß4 }à4 }á4 *v{á4 {à4 (â+þ(»+*(>4 *0A`"o‹(?+ o‹(¼+ (â4 (ã4  (½+sä4 (å4 Œ4"*(>4 *"Œ4"*0D(æ4 }H}H} H} H} H} H} H}H*0ra"{ H(¥ { H(³ˆ,(ãŠ+(ߊ {H{H{H{ H{ H{ H{ H{ Hs$4 s%4 þo&4 *(>4 *0 ºd"o‹¥ó o‹¥ó o‹(ƒ+ o‹¥ o‹(¾+(ç4 (è4 o‡oˆ(òˆoŒŒ(•4  (–4  o‡oˆ(òˆ(¥   sÈ€sé4 Œ:"*ò(æ4 }H}H}H}H}H}H}H*0‹e"{H(¥(ߊ {Ho‡{Hoˆ(òˆ (H¥ {H{H{H{H{H r>½p(J¥(„Œ{H(  s$4 s%4 þo&4 *(>4 *0 Œf"o‹¥ó o‹¥ó o‹(ƒ+ o‹¥ o‡oˆ(òˆo‡oˆ(òˆ(•4 (–4  sÌ€sé4 Œ:"*Ò(æ4 }H}H}H}H}H}H*0jg"{H(¥(ߊ {H{H{H{H{H{H rZ½p(J¥(„Œ{H(  s$4 s%4 þo&4 *(>4 *0 Ýh"o‹¥ó o‹¥ó o‹(ƒ+ o‹¥ o‹¥ó-1o‡oˆ(òˆ(•(Z (Y («v+ ,o‡oˆ(òˆ+o‡oˆ(òˆ(H¥(•4 (–4    sЀsé4 Œ:"*(>4 *0"i"o‹(¾+ o‹¥&Œ;"*(>4 *0wj"o‹(¾+ o‹¥ó -.o‡oˆ(òˆ(n (Z (Y («v+(ç4 (è4 oŒŒ(†Œ sê4 Œ;"*(>4 *No‹(¾+Œ;"*(>4 *0/k"o‹(@+ o‹(¿+ (À+ sê4 Œ;"*(>4 *0(m"o‹(¿+ o‹(Á+ (ë4 Œ*(>4 *2(  Œ*(>4 *0(n"o‹(Â+ o‹(@+ sì4 Œ<"*(>4 *0(p"o‹(Â+ o‹(Ã+ (í4 Œ="*(>4 *0q"o‹(Ã+ (î4 (í4 Œ="*(>4 *09!"o‹(š+ o‹(s+ o‰oŠ(òˆ(õŽŒ&*(>4 *0+"o‹(š+ o‰oŠ(òˆ(÷ŽŒ&*(>4 *0Ts"o‹(Ä+ (†+ ,+(ºo‰oŠ(òˆsû£ (¤(¥+(…+ (…‰Œõ$*(>4 *0fo‹¥ (‡‰Œõ$*(>4 *0Tu"o‹(Å+ (‰+ ,+(½o‰oŠ(òˆsû£ (¤(¥+(ˆ+ (‰‰Œõ$*(>4 *0v"o‹¥€ (‹‰Œõ$*(>4 *0Tw"o‹(Æ+ (# ,+(¿o‰oŠ(òˆsû£ (¤(¥+(" (‰Œõ$*(>4 *0x"o‹¥ô (‰Œõ$*(>4 *0Tz"o‹(Ç+ (Œ+ ,+(Áo‰oŠ(òˆsû£ (¤(¥+(‹+ (‘‰Œõ$*(>4 *0{"o‹¥õ (“‰Œõ$*(>4 *0õo‹¥Á (•‰Œõ$*(>4 *0{"o‹¥õ (—‰Œõ$*(>4 *0|"o‹¥ö (™‰Œõ$*(>4 *0}"o‹¥æ (›‰Œõ$*(>4 *0 o‹¥ (‰Œõ$*(>4 *0~"o‹¥ñ (Ÿ‰Œõ$*(>4 *0"o‹(È+ (¡‰Œõ$*(>4 *0+o‹¥m o‰oŠ(òˆ(£‰Œõ$*(>4 *0+ho‹¥ñ o‰oŠ(òˆ(¥‰Œõ$*(>4 *No‹(¨+Œõ$*(>4 *0(€"o‹(¨+ o‹(É+ (©‰Œõ$*V(ï4 }H}H*0"(ð4 (ñ4 (ò4 (ó4 (ô4 (õ4 (ö4 (÷4 (ø4 (÷4 (ù4 (÷4 (ú4  (÷4 (û4  {H{H   (èˆ*(>4 *0S‚"o‹(+ o…o‡oˆ(òˆ(9” so‡oˆ(òˆsü4 Œ"*(>4 *0 1+o‹(^+ o‡oˆ(òˆ(¿ŽŒ &*(>4 *0 1+o‹(^+ o‡oˆ(òˆ(¿ŽŒ &*(>4 *09ƒ"o‹(Ê+ o‹(s+ o‰oŠ(òˆ(ÁŽŒ &*(>4 *09„"o‹(?+ o‹(Ê+ o‰oŠ(òˆ(ÃŽŒ &*(>4 *0…"o‹(Ê+ (J (K ŒÊ*(>4 *0(†"o‹(Ê+ o‹({+ (K ŒÊ*(>4 *0"‡"o‹({+ o‹¥&ŒÊ*(>4 *fo‹¥&(J ŒÊ*(>4 *0Rˆ"o‹({+ o‹¥ó o‡oˆ(òˆ(› (Z (Y («v(J ŒÊ*(>4 *fo‹¥&(J ŒÊ*(>4 *0E–!o‹¥ó o‡oˆ(òˆ(› (Z (Y («v(J ŒÊ*(>4 *0 =‰"o‹(+ o‹(^+ o‡oˆ(òˆ(#Œ$&*(>4 *0 ;S"o‹(+ o‹(+ o‡oˆ(òˆ()Œ$&*(>4 *0 ”S"o‹(+ o‹(+ o‡oˆ(òˆ(…–(ψ(( (]‰(+ (, (, o‡oˆ(òˆ(/(+ (, o‰oŠ(òˆ(-Œ$&*(>4 *00P"o‹(¶+ (·+o‰oŠ(òˆ(/Œ$&*(>4 *00P"o‹(¶+ (·+o‰oŠ(òˆ(+Œ$&*(>4 *No‹(+Œ$&*(>4 *0(R"o‹(¶+ o‹(+ (, ŒÛ*(>4 *02S"o‹(+ o‹(+ (+ (, (, ŒÛ*(>4 *0(R"o‹(¶+ o‹(+ (, ŒÛ*(>4 *02S"o‹(+ o‹(+ (+ (, (, ŒÛ*(>4 *0 O‹"o‹(Ë+ o‹(_+ (ý4 ( (+ (þ4 o‰oŠ(òˆ(-Œ$&*(>4 *0 SŒ"o‹(Ë+ o‹¥Œ o‹(¶+ (ý4 (þ4 o‰oŠ(òˆ(-Œ$&*(>4 *0 SŒ"o‹(Ë+ o‹¥Œ o‹(¶+ (ý4 (þ4 o‰oŠ(òˆ(-Œ$&*(>4 *0 SŒ"o‹(Ë+ o‹¥Œ o‹(¶+ (ý4 (þ4 o‰oŠ(òˆ(-Œ$&*(>4 *0+õ!o‹(s+ o‰oŠ(òˆ(;Œ$&*(>4 *No‹(+Œ$&*(>4 *0("o‹(+ o‹(¶+ (, ŒÛ*(>4 *0TŽ"o‹(+ o‹(¶+ o‡oˆ(òˆ(œ (Z (Y («v(, ŒÛ*(>4 *0TŽ"o‹(+ o‹(¶+ o‡oˆ(òˆ(œ (Z (Y («v(, ŒÛ*(>4 *0Q"o‹(+ (+ (, ŒÛ*(>4 *0+o‹(@+ o‰oŠ(òˆ(=Œ$&*(>4 *0 ;"o‹¥ o‹¥ o‡oˆ(òˆ(?Œ$&*(>4 *0"Q"o‹(+ o‹¥&Œ$&*(>4 *0,P"o‹(¶+ o‰oŠ(òˆ(3Œ$&*(>4 *0,P"o‹(¶+ o‰oŠ(òˆ(3Œ$&*(>4 *vo‰oŠ(òˆ(!Œ$&*(>4 *0++o‹(^+ o‰oŠ(òˆ(9Œ$&*(>4 *0"o‹(Ë+ (þ4 (ý4 {Ioù 1+-{I(T+{Io^ (ÿ4 , () þ+,o‰oŠ(òˆ(·ˆ+{I(T+(µˆŒ$&*(>4 *01‘"o‹(¨+ o‰oŠ(òˆo­‰(Œ$&*(>4 *Ž(ƒ‰o‰oŠ(òˆ(Œ$&*(>4 *Ž(ƒ‰o‰oŠ(òˆ(Œ$&*(>4 *vo‰oŠ(òˆ(7Œ$&*(>4 *0A“"o‹(Ì+ o‹¥&o‰oŠ(òˆ o5 (1Œ$&*(>4 *0s”"o‹(Ì+ o‹¥ó o‡oˆ(òˆ(› (Z (Y («vo‡oˆ(òˆo5 oG(CŒ$&*(>4 *ªo‹¥&o‰oŠ(òˆ(!Œ$&*(>4 *0V–!o‹¥ó o‡oˆ(òˆ(› (Z (Y («vo‰oŠ(òˆ(!Œ$&*:(5 }H*"{H*(>4 *0Q"o‹(+ srŒO *(5 *6(‰(*(>4 *2svŒO *(>4 *0 =‰"o‹(+ o‹(^+ o‡oˆ(òˆ(#Œ$&*(>4 *0 ;S"o‹(+ o‹(+ o‡oˆ(òˆ()Œ$&*(>4 *00P"o‹(¶+ (·+o‰oŠ(òˆ(/Œ$&*(>4 *02P"o‹(¶+ (·+o‡oˆ(òˆ(+Œ$&*(>4 *09•"o‹(+ o‹(s+ o‰oŠ(òˆ(%Œ$&*(>4 *09–"o‹(?+ o‹(+ o‰oŠ(òˆ('Œ$&*(>4 *0 ”S"o‹(+ o‹(+ o‡oˆ(òˆ(…–(ψ(( (]‰(+ (, (, o‡oˆ(òˆ(/(+ (, o‰oŠ(òˆ(-Œ$&*(>4 *No‹(+Œ$&*(>4 *0(R"o‹(¶+ o‹(+ (, ŒÛ*(>4 *02S"o‹(+ o‹(+ (+ (, (, ŒÛ*(>4 *0(R"o‹(¶+ o‹(+ (, ŒÛ*(>4 *02S"o‹(+ o‹(+ (+ (, (, ŒÛ*(>4 *0%˜"o‹(Í+ (5 (5 (5Œ$&*(>4 *0Fš"o‹(Î+ o‹¥&(5 (5 o‰oŠ(òˆ s5 Œ>"*(>4 *0T›"o‹(Î+ o‹¥&o‹(Í+ (5 (5 o‰oŠ(òˆ  s5 Œ>"*(>4 *04œ"o‹(B+ o‹(+ {I($ + s5 Œ@"*(>4 *2(+ ŒÛ*(>4 *0,Q"o‹(+ o‹¥&(+ (, ŒÛ*(>4 *05"o‹(+ o‹¥&o‹(¶+ (, ŒÛ*(>4 *0"o‹(@+ o‹¥&Œ–%*(>4 *0`"o‹(@+ o‹¥ó -.o‡oˆ(òˆ(– (Z (Y («v+oŒŒ(†ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *0"o‹(@+ o‹¥&Œ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *09ž"o‹(@+ o‹(s+ oŒŒo ‹(¥(ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *0 LŸ"o‹(@+ o‹¥&o‹(@+ (jŠoŒŒoŒŒ(¥(JŒŒ–%*(>4 *0"o‹(@+ o‹¥&Œ–%*(>4 *No‹(@+Œ–%*(>4 *0 ?Ÿ"o‹(@+ o‹(@+ (jŠoŒŒoŒŒ(¥(JŒŒ–%*(>4 *0 LŸ"o‹(@+ o‹(@+ o‹¥&(jŠoŒŒoŒŒ(¥(JŒŒ–%*(>4 *0„ "o‹(S+ (S4 (T4 {ËA {ÍA ,r$¬p+rñÞp(Ÿ(Z (Y («v(H¥rv½p(J¥(„Œ(°vŒ–%*(>4 *"Œó*(>4 *0T!o‹(>+ Œó*(>4 *0F¡"o‹(R+ o‹(@+ o‡oˆ(òˆoŒŒ(¥(°vŒ–%*(>4 *0 T¢"o‹(R+ o‡oˆ(òˆo‡oˆ(òˆ  r†½p(J¥(„Œ(°vŒ–%*(>4 *0B£"o‹(S+ o‹(@+ (S4 (T4 oŒŒ(¥ (°vŒ–%*(>4 *0 q¤"o‹(S+ (S4 (T4 {ËA(ž (Z (Y («vo‡oˆ(òˆrš½p(J¥(„Œ(°vŒ–%*(>4 *0B£"o‹(S+ o‹(@+ (S4 (T4 oŒŒ(¥ (°vŒ–%*(>4 *0 i¥"o‹(S+ (S4 (T4 o‡oˆ(òˆ(¥o‡oˆ(òˆ r®½p(J¥(„Œ(°vŒ–%*(>4 *0(¦"o‹(´+ (5 oŒŒ(:ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *0 t¨"o‹(@+ o‹(Ï+ o‡oˆ(òˆ ( 5 ( 5 ( 5 ( 5 ( 5  (¥(ߊ(¥(8ŒŒ–%*(>4 *0`"o‹(@+ o‹¥ó -.o‡oˆ(òˆ(‰ (Z (Y («v+oŒŒ(†ŒŒ–%*(>4 *0 Œ©"o‹(@+ o‹(Ï+ o‡oˆ(òˆ (|Š ( 5 ( 5 ( 5 ( 5 ( 5 (“Š(¥(¥(¥ (DŒŒ–%*(>4 *0`"o‹(@+ o‹¥ó -.o‡oˆ(òˆ(Š (Z (Y («v+oŒŒ(†ŒŒ–%*(>4 *0 mª"o‹(@+ o‹(@+ o‡oˆ(òˆ (|Š o‡oˆ(òˆ(¦ŠoŒŒ(¥ (FŒŒ–%*(>4 *0 ;¬"o‹(@+ o‹(Ð+ o‡oˆ(òˆ(Ñ+Œ–%*(>4 *0Y"o‹(@+ o‹¥ó o‡oˆ(òˆ(  (Z (Y («voŒŒ(†ŒŒ–%*(>4 *0 §­"o‹¥ó o‡oˆ(òˆ(  (Z (Y («vo‡oˆ(òˆ (H¥ (ߊ r½p(J¥(„Œ rÔ½p(J¥(„Œ(LŒoŒŒ(†ŒŒ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(HŒŒ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(<ŒŒ–%*(>4 *01 !o‡oˆ(òˆ(¡ (Z (Y (Ò+Œ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(HŒŒ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(<ŒŒ–%*(>4 *01 !o‡oˆ(òˆ(¡ (Z (Y (Ò+Œ–%*(>4 *0 †®"o‹(@+ o‹¥&o‹(@+ o‹¥&o‡oˆ(òˆoŒŒ(¥ (ÌŠo‡oˆ(òˆoŒŒ(¥(*ŒŒ–%*(>4 *0Ò¯"o‹(@+ o‹¥&o‹(@+ o‹¥ó -.o‡oˆ(òˆ(‹ (Z (Y («v+o‡oˆ(òˆoŒŒ(¥(ÌŠo‡oˆ(òˆoŒŒ(¥(*ŒoŒŒ(†ŒŒ–%*(>4 *0˰"o‹(@+ o‹¥&o‹¥&o‡oˆ(òˆoŒŒ(¥ (ÌŠ o‡oˆ(òˆo‡oˆ(òˆ(¥ o‡oˆ(òˆo‡oˆ(òˆ(¥ rè½p(J¥(„Œ(*ŒŒ–%*(>4 *0å±"o‹(@+ o‹¥ó o‡oˆ(òˆ(œ (Z (Y («vo‡oˆ(òˆoŒŒ(¥ (ÌŠo‡oˆ(òˆo‡oˆ(òˆo‡oˆ(òˆ(¥rþ½p(J¥(„Œ(*ŒoŒŒ(†ŒŒ–%*(>4 *0n²"o‹¥ó -.o‡oˆ(òˆ(‹ (Z (Y («v+o‡oˆ(òˆ  r¾p(J¥(„ŒŒ–%*(>4 *0¯³"o‹¥&o‡oˆ(òˆ (ÌŠ o‡oˆ(òˆ o‡oˆ(òˆo‡oˆ(òˆ(¥ r*¾p(J¥(„ŒrB¾p(J¥(„Œ (*ŒoŒŒ(†ŒŒ–%*(>4 *0 е"o‹(Ó+ o‹¥&o‹(@+ o‹¥&o‡oˆ(òˆ(¹Š(õŠ(5 (5 o‡oˆ(òˆoŒŒ(¥(.ŒŒ–%*(>4 *0 ½¶"o‹(Ó+ o‹¥&o‹(@+ o‹¥ó -.o‡oˆ(òˆ(Œ (Z (Y («v+o‡oˆ(òˆ(¹Š(õŠ(5 (5 o‡oˆ(òˆoŒŒ(¥(.ŒŒ–%*(>4 *0 ª·"o‹(Ó+ o‹¥&o‹¥&o‡oˆ(òˆ (¹Š (5 (5 o‡oˆ(òˆo‡oˆ(òˆ(õŠ rX¾p(J¥(„Œ(.ŒŒ–%*(>4 *0 à¸"o‹(Ó+ o‹¥&o‹¥ó -.o‡oˆ(òˆ(† (Z (Y («v+o‡oˆ(òˆ (¹Š(5 (5 o‡oˆ(òˆo‡oˆ(òˆ(õŠ rt¾p (J¥(„Œ(.ŒŒ–%*(>4 *0 Ó¹"o‹(Ó+ o‹¥ó (5 (5 -1o‡oˆ(òˆ((Z (Y («v+o‡oˆ(òˆ(¹Šo‡oˆ(òˆo‡oˆ(òˆ(õŠ  r޾p (J¥(„Œ(.ŒŒ–%*(>4 *0 ’»"o‹(Ô+ o‹¥&o‹(@+ o‹¥&o‡oˆ(òˆ (¹Š(5 (5 (5 (5 o‡oˆ(òˆoŒŒ(¥(,ŒŒ–%*(>4 *0 î¼"o‹(Ô+ o‹¥&o‹(@+ o‹¥ó -.o‡oˆ(òˆ(Œ (Z (Y («v+o‡oˆ(òˆ(¹Š(5 (5 (5 (5  o‡oˆ(òˆoŒŒ(¥   (,Œ   oŒŒ(†ŒŒ–%*(>4 *0 ·½"o‹(Ô+ o‹¥&o‹¥&o‡oˆ(òˆ (¹Š (5 (5 (5 (5 o‡oˆ(òˆo‡oˆ(òˆ  r¨¾p (J¥(„Œ(,ŒŒ–%*(>4 *0 ý¾"o‹(Ô+ o‹¥&o‹¥ó -.o‡oˆ(òˆ(Œ (Z (Y («v+o‡oˆ(òˆ (¹Š(5 (5 (5 (5 o‡oˆ(òˆ o‡oˆ(òˆ   r¨¾p (J¥(„Œ (,Œ   oŒŒ(†ŒŒ–%*(>4 *0 ù¾"o‹(Ô+ o‹¥ó -.o‡oˆ(òˆ(Œ (Z (Y («v+o‡oˆ(òˆ (¹Š(5 (5 (5 (5 o‡oˆ(òˆ  (H¥ o‡oˆ(òˆ   r¨¾p (J¥(„Œ (,Œ   oŒŒ(†ŒŒ–%*(>4 *0 ¶¿"o‹¥&o‹(@+ o‹¥&o‡oˆ(òˆ o‡oˆ(òˆoŒŒ(¥ (¹Šr¾¾psY‰ rоp(J¥(„Œo‡oˆ(òˆ rð¾p(J¥(„Œ(,ŒŒ–%*(>4 *0g²"o‹¥ó o‡oˆ(òˆ(¢ (Z (Y («vo‡oˆ(òˆ  r ¿p(J¥(„ŒŒ–%*(>4 *0 ËÀ"o‹(+ o‹¥&o‡oˆ(òˆ(£ (Z (Y («vo‡oˆ(òˆ (¹Š o‡oˆ(òˆo‡oˆ(òˆ (õŠr"¿p(J¥(„ŒrF¿p(J¥(„Œ(.ŒŒ–%*(>4 *0 íÁ"o‹(+ o‹¥ó -.o‡oˆ(òˆ(Œ (Z (Y («v+o‡oˆ(òˆ (¹Šo‡oˆ(òˆ(H¥o‡oˆ(òˆ(õŠ r"¿p(J¥(„ŒrF¿p(J¥(„Œ(.ŒoŒŒ(†ŒŒ–%*(>4 *0 OÂ"o‹¥ó o‹(@+ þsn o‡oˆ(òˆoŒŒ(¥(tŒŒ–%*(>4 *0 OÂ"o‹¥ó o‹(@+ þsn o‡oˆ(òˆoŒŒ(¥(vŒŒ–%*(>4 *0 ›Ã"o‹¥m o‹(+ o‹(@+ o‹¥&o‹(@+ o‡oˆ(òˆ(ߊo‡oˆ(òˆ oŒŒ(¥r$¬p(ñ  (xŒŒ–%*(>4 *0 ëÄ"o‹¥m o‹(+ o‹(@+ o‹(²+ o‹¥&o‹(@+ r$¬p(ñ ,r¬¼p+r¢¼po‡oˆ(òˆ(³+&o‡oˆ(òˆoŒŒ(¥(ߊo‡oˆ(òˆoŒŒ(¥r$¬p(ñ (xŒŒ–%*(>4 *0 ÊÅ"o‹¥m o‹(+ o‹(@+ o‹(²+ o‹¥&o‡oˆ(òˆoŒŒ(¥(ߊo‡oˆ(òˆo‡oˆ(òˆ(¥oŒŒ(H¥r$¬p(ñ (rŒ(xŒŒ–%*(>4 *0 jŸ"o‹(@+ o‹¥&o‹(@+ (áŠ(‰oŒŒ(o‡oˆ(òˆoŒŒ(¥(xŒŒ–%*(>4 *0EÆ"o‹(@+ o‹(²+ o‡oˆ(òˆoŒŒ(¥(zŒŒ–%*(>4 *0 }µ"o‹(Ó+ o‹¥&o‹(@+ o‡oˆ(òˆ(¹Š(õŠ(5 (5 o‡oˆ(òˆoŒŒ(¥(.ŒŒ–%*(>4 *0 hÇ"o‹(@+ (¤o‰oŠ(òˆsû£ (¤(¥sn o‡oˆ(òˆoŒŒ(¥(tŒŒ–%*(>4 *09ž"o‹(@+ o‹(s+ oŒŒo ‹(¥(`ŒŒ–%*(>4 *09ž"o‹(@+ o‹(s+ oŒŒo ‹(¥(bŒŒ–%*(>4 *09ž"o‹(@+ o‹(s+ oŒŒo ‹(¥(dŒŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆrÑNp(ɈŒ–%*(>4 *0(Ÿ"o‹(@+ o‹(@+ (∌–%*( *"oŒŒ*(>4 *0 DÉ"o‹(Õ+ (5 (5 (&+(Ö+s4‚o5 (×+( ŒŒ–%*(>4 *0 LŸ"o‹(@+ o‹(@+ o‡oˆ(òˆoŒŒoŒŒ(¥(pŒŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆrX‚p(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆræDp(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆrýp(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆr(Pp(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆrCp(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆrÝNp(ɈŒ–%*(>4 *0MË"o‹(@+ o‹¥ó o‹(@+ o‡oˆ(òˆr@-p(ɈŒ–%*(>4 *0MË"o‹(@+ o‹¥ó o‹(@+ o‡oˆ(òˆr6Úp(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0 ¡®"o‹(@+ o‹(@+ o‡oˆ(òˆ (…–sY‰(NŒ(Ž ( ( o‡oˆ(òˆ(( (n oŒŒoŒŒ(¥( ŒoŒŒoŒŒ(¥(>ŒŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆr|8p(ɈŒ–%*(>4 *0@Ÿ"o‹(@+ o‹(@+ o‡oˆ(òˆr´9p(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0IÊ"o‹(@+ o‹¥m o‹(@+ o‡oˆ(òˆ(ɈŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆrp( (Z (Y («vo‡oˆ(òˆr`¿po‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆrX‚p( (Z (Y («vo‡oˆ(òˆrX‚po‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆræDp( (Z (Y («vo‡oˆ(òˆræDpo‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆrýp( (Z (Y («vo‡oˆ(òˆrýpo‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆr(Pp( (Z (Y («vo‡oˆ(òˆr(Ppo‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆrCp( (Z (Y («vo‡oˆ(òˆrCpo‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆrÝNp( (Z (Y («vo‡oˆ(òˆrÝNpo‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 °Î"o‹(@+ o‹¥ó o‡oˆ(òˆr@-p( (Z (Y («vo‡oˆ(òˆr@-po‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 °Î"o‹(@+ o‹¥ó o‡oˆ(òˆr6Úp( (Z (Y («vo‡oˆ(òˆr6Úpo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 Ï"o‹(@+ o‡oˆ(òˆrKp( (Z (Y («vo‡oˆ(òˆ (…–sY‰(NŒo‡oˆ(òˆ (G¥  rh¿p(J¥(„Œ(Ž ( ( o‡oˆ(òˆ(( (n oŒŒo‡oˆ(òˆ (G¥(¥( ŒoŒŒo‡oˆ(òˆ (G¥(¥(>ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆr|8p( (Z (Y («vo‡oˆ(òˆr|8po‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¡Ì"o‹(@+ o‡oˆ(òˆr´9p( (Z (Y («vo‡oˆ(òˆr´9po‡oˆ(òˆ(G¥ rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *0 ¨Í"o‹(@+ o‹¥m o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆo‡oˆ(òˆ(G¥rh¿p(J¥(„Œ(Ɉ oŒŒ(†ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *0 NÐ"o‹¥m o‡oˆ(òˆ(£‰ o‡oˆ(òˆo­‰(ŒŒ–%*(>4 *0"o‹(@+ o‹¥&Œ–%*(>4 *0/Ò"o‹(Ø+ o‡oˆ(òˆ s5 ŒA"*(>4 *0/Ò"o‹(Ø+ o‡oˆ(òˆ s5 ŒA"*(>4 *0mÓ"o‹(Ø+ o‹¥ó -.o‡oˆ(òˆ( (Z (Y («v+o‡oˆ(òˆs5 ŒA"*(>4 *No‹(Ø+ŒB"*(>4 *No‹(Ø+ŒB"*(>4 *0(Ô"(` o‡oˆ(òˆ s5 ŒB"*(>4 *0(Ô"(` o‡oˆ(òˆ s5 ŒB"*(>4 *0=üo‹(+ o‹¥Ã o‡oˆ(òˆ s5 ŒF"*(>4 *0 [Ö"o‹(Ù+ o‹(@+ (5 (5 (5  (ZŠ(Û(` (a oŒŒs5 ŒB"*(>4 *0 k×"o‹(Ù+ o‹(@+ o‹(Ø+ (5 (5 (5  (ZŠ(Û( 5 (a ( 5 s5 ŒB"*(>4 *0 hÖ"o‹(Ù+ o‹(@+ (5 (5 (5  (ZŠ(Û(` (a o‡oˆ(òˆs5 ŒB"*(>4 *0 [Ö"o‹(Ù+ o‹(@+ (5 (5 (5  (ZŠ(Û(` (a oŒŒs5 ŒB"*(>4 *0 mØ"o‹(Ù+ (5 (5 (5 o‡oˆ(òˆ (‰(H¥(Œ(ZŠ(Û(` (a s5 ŒB"*(>4 *0o‹(@+ ( ŒÃ*(>4 *"ŒÃ*(>4 *No‹(@+Œ–%*r(5 }H} H}!H*0 SÙ"{ H(¥ {H,{H(ô +{!H {!H{H(ߊoŒŒ(¥(LŒ*(>4 *07Û"o‹(Ú+ o‹¥Ã (5 (5  s®‚ŒH"*(>4 *0/Ü"o‹(@+ o‡oˆ(òˆ s 5 ŒG"*(>4 *0<Ü"o‹(@+ o‹¥&o‡oˆ(òˆ s 5 ŒG"*(>4 *0x"o‹(@+ o‹¥ó -.o‡oˆ(òˆ(Ž (Z (Y («v+oŒŒ(†Œo‡oˆ(òˆs 5 ŒG"*(>4 *"ŒÃ*(>4 *0o‹(@+ ( ŒÃ*(>4 *0'o‹(@+ o‹¥&( ŒÃ*(>4 *0e"o‹(@+ o‹¥ó -.o‡oˆ(òˆ( (Z (Y («v+oŒŒ(†Œ( ŒÃ*(>4 *0CÝ"o‹(@+ o‹(Ð+ o‡oˆ(òˆ (Ñ+( ŒÃ*(>4 *02Þ"o‹(@+ o‹¥ó oŒŒ(†Œ( ŒÃ*(>4 *0Tß"o‹(Õ+ o‹(@+ (5 (5 ( o‡oˆ(òˆ (n s!5 ŒE"*(>4 *0»à"o‹(Õ+ o‹¥ó -.o‡oˆ(òˆ(† (Z (Y («v+(5 (5 o‡oˆ(òˆ(G¥r„¿p(J¥(„Œ ( o‡oˆ(òˆ(n s!5 ŒE"*(>4 *0·á"o‹(@+ o‹¥ó -.o‡oˆ(òˆ(† (Z (Y («v+o‡oˆ(òˆ(G¥ rš¿p(J¥(„Œ(Ž ( ( o‡oˆ(òˆ(( (n s!5 ŒE"*(>4 *0Xâ"o‹(@+ o‹(@+ (Ž ( ( o‡oˆ(òˆ(( (n  s!5 ŒE"*(>4 *0 [F"o‹(@+ o‡oˆ(òˆ o‡oˆ(òˆoŒŒ(¥ r°¿p(Ȉ(>ŒŒ–%*(>4 *0 Ÿã"o‹¥m o‹(@+ (Ž–-!oŒŒ(þ (Z (Y («v+o‡oˆ(òˆ o‡oˆ(òˆoŒŒ(¥r¶¿p(  (Ȉ(>ŒŒ–%*(>4 *0 3ã"o‹¥m o‹(@+ (Ž–-!oŒŒ(þ (Z (Y («v+rýp(ñ ,>o‡oˆ(òˆo‡oˆ(òˆoŒŒ(¥(lŒ8œr(Pp(ñ ,;o‡oˆ(òˆo‡oˆ(òˆoŒŒ(¥(lŒ+To‡oˆ(òˆ o‡oˆ(òˆoŒŒ(¥r¶¿p(  (Ȉ(>ŒŒ–%*(>4 *0 Ÿã"o‹¥m o‹(@+ (Ž–-!oŒŒ(þ (Z (Y («v+o‡oˆ(òˆ o‡oˆ(òˆoŒŒ(¥r¶¿p(  (Ȉ(>ŒŒ–%*(>4 *0 Lo‹(@+ o‡oˆ(òˆo‡oˆ(òˆoŒŒ(¥(lŒŒ–%*(>4 *0 Lo‹(@+ o‡oˆ(òˆo‡oˆ(òˆoŒŒ(¥(lŒŒ–%*(>4 *0 Tä"o‹(s+ o‹¥&o‹(@+ o‡oˆ(òˆoŒŒ(¥(&ŒŒ–%*(>4 *0 må"o‹(s+ o‹¥&o‡oˆ(òˆ  rº¿p(J¥(„Œo‡oˆ(òˆo ‹(¥(&ŒŒ–%*(>4 *0.‚o‡oˆ(òˆ  rοp(J¥(„ŒŒ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(fŒŒ–%*(>4 *08o‹(@+ o‡oˆ(òˆoŒŒ(¥(hŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *0 ;Ÿ"o‹(@+ o‹(@+ oŒŒoŒŒ(¥(>ŒŒ–%*(>4 *0ç"o‹(Û+ ("5 Œ–%*(>4 *0 æè"o‹¥m o‹(Û+ (#5 ("5 (Ž–-$ oŒŒ(þ(Z (Y («v+,1o‡oˆ(òˆ(¥(Z (Y («v+o‡oˆ(òˆo‡oˆ(òˆ oŒŒ(¥r¶¿p( (Ȉ (>ŒŒ–%*(>4 *0Hé"o‹(Û+ (#5 ("5 ,!oŒŒ(¥ (Z (Y («v+Œ–%*(>4 *0 Oê"o‹(Û+ o‹(Û+ ("5 ("5  oŒŒ oŒŒ(¥(>Œs$5 ŒI"*(>4 *0 Oê"o‹(Û+ o‹(Û+ ("5 ("5  oŒŒ oŒŒ(¥(>Œs$5 ŒI"*(>4 *0 tì"o‹(Û+ o‹(Ü+ ("5 (%5 (&5 ('5 ((5 ()5 oŒŒ (¥ (@Œs$5 ŒI"*(>4 *0 ©í"o‹¥m o‹(Û+ (#5 ("5 (Ž–-$ oŒŒ(þ(Z (Y («v+o‡oˆ(òˆo‡oˆ(òˆ oŒŒ(¥(Ȉ (>Œs$5 ŒI"*(>4 *0 `ï"o‹(Û+ o‹(Ý+ (#5 ("5  o‰oŠ(òˆo‡oˆ(òˆ(Þ+s$5 ŒI"*(>4 *0 kð"o‹(Ý+ o‡oˆ(òˆ r‘psY‰(NŒ o‰oŠ(òˆo‡oˆ(òˆ(Þ+s$5 ŒI"*(>4 *0 Kñ"o‹(^+ (Ú (Û (( (]‰o‡oˆ(òˆ(PŒ s$5 ŒI"*(>4 *0Tò"o‹(Û+ o‹(@+ (#5 ("5 o‡oˆ(òˆ rWp(Ɉs$5 ŒI"*(>4 *03Ü"o‡oˆ(òˆ r„ÁpsY‰(NŒ s$5 ŒI"*(>4 *0"ñ"o‹(^+ (NŒ s$5 ŒI"*(>4 *04ô"o‹(ß+ o‰oŠ(òˆ(à+ s$5 ŒI"*(>4 *0zõ"o‹(ß+ o‹¥ó o‡oˆ(òˆ(¦ (Z (Y («vo‡oˆ(òˆ(à+ oŒŒ(†Œs$5 ŒI"*(>4 *0+(Ž o‰oŠ(òˆ("Œ s$5 ŒI"*(>4 *0 qö"o‹¥ó o‡oˆ(òˆ(¦ (Z (Y («v(Ž o‡oˆ(òˆ("Œ oŒŒ(†Œs$5 ŒI"*(>4 *0o‹(@+ s$5 ŒI"*:(,5 }"H*B{"H(ãˆ*(>4 *0/÷"o‹(^+ o‡oˆ(òˆ s ƒŒK"*(,5 *0< !(§ (Z (Y («v(I¥(D¥(E¥(¥(äˆ*(>4 *2sƒŒK"*(,5 *0; !(§ (Z (Y («v(I¥(D¥(E¥(¥(ˆŒ*(>4 *0Jo‹¥ó sƒŒK"*V(,5 }#H}$H*0@{#Ho‰{#HoŠ(òˆ(³£(…–(ψ{$H(" (€Œ*(>4 *0(ø"o‹¥&o‹(Æ+ sƒŒK"*V(,5 }%H}&H*Ú(¨{%Ho‰{%HoŠ(òˆ(¶£{&H(܈*(>4 *0(o‹(@+ o‹¥&sƒŒK"*:(,5 }'H*j{'H(Ž ( (XŒ*(>4 *0o‹(@+ sƒŒK"*:(,5 }(H*0'{(H(Ž ( (XŒ oŒŒ(†Œ*(>4 *0S"o‹(@+ o‹¥ó o‡oˆ(òˆ(¦ (Z (Y («vs"ƒŒK"*:(,5 })H*0.Ü"{)H rä¿p(J¥(„Œ (Ž ( (XŒ*(>4 *0"Mo‡oˆ(òˆ s&ƒŒK"*:(,5 }*H*0;®"{*H rþ¿p(J¥(„Œ (Ž ( (XŒ oŒŒ(†Œ*(>4 *0b²"o‹¥ó o‡oˆ(òˆ(¦ (Z (Y («vo‡oˆ(òˆ (H¥ s*ƒŒK"*:(,5 }+H*0 {+H(† {+H(‹ (؈*(>4 *0ù"o‹(á+ s.ƒŒK"*V(,5 },H}-H*0 6{,H(† {,H(‹ {-H(† {-H(‹ (Ùˆ*(>4 *0(ú"o‹(á+ o‹(á+ s2ƒŒK"*r(,5 }.H}/H}0H*0 L{.H(† {.H(‹ {/H(† {/H(‹ {0H(† {0H(‹ (Úˆ*(>4 *06û"o‹(á+ o‹(á+ o‹(á+ s6ƒŒK"*’(,5 }1H}2H}3H}4H*0b{1H(† {1H(‹ {2H(† {2H(‹ {3H(† {3H(‹ {4H(† {4H(‹ (Ûˆ*(>4 *0Dü"o‹(á+ o‹(á+ o‹(á+ o‹(á+  s:ƒŒK"*(>4 *0fý"o‹(@+ o‹(@+ o‡oˆ(òˆ( (¢v o‡oˆ(òˆ( (¢v  s Œ€*(>4 *0Tþ"o‹(@+ o‡oˆ(òˆ( (¢v o‡oˆ(òˆ(¢v s Œ€*(>4 *0Tþ"o‹(@+ o‡oˆ(òˆ(¢v o‡oˆ(òˆ( (¢v s Œ€*(>4 *0BŸ"o‡oˆ(òˆ(¢v o‡oˆ(òˆ(¢v s Œ€*(>4 *01‘"o‹(¨+ o‰oŠ(òˆo­‰(ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *vo‰oŠ(òˆ(jŒŒ–%*(>4 *Ž(ƒ‰o‰oŠ(òˆ(ŒŒ–%*(>4 *Ž(ƒ‰o‰oŠ(òˆ(ŒŒ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *No‹(@+Œ–%*(>4 *0 Xo‹(@+ o‡oˆ(òˆo‡oˆ(òˆ(l o‡oˆ(òˆ(ŒŒ–%*(>4 *0Y"o‹(@+ o‹¥ó o‡oˆ(òˆ(„ (Z (Y («voŒŒ(†ŒŒ–%*(>4 *0,‚o‰oŠ(òˆ  rÀp(J¥(„ŒŒ–%*(>4 *Š(‰o‰oŠ(òˆ(ŒŒ–%*(>4 *0 ìÿ"o‹(‘+ o‹(@+ o‹(‘+ ( ( ( (  (ñ , þ+-7o‡oˆ(òˆ( (©(Z (Y («v+o‰oŠ(òˆ(}–( o sY‰(NŒ( o‰oŠ(òˆ(ŒŒ–%*(>4 *0 Ç#o‹(‘+ o‹(@+ o‹¥ó o‡oˆ(òˆ( (ª (Z (Y («vo‡oˆ(òˆo‰oŠ(òˆ(}–( o sY‰(NŒ( (ŒoŒŒ(†ŒŒ–%*(>4 *0 •#o‹(‘+ o‹(‘+ o‰oŠ(òˆ (}–( o sY‰(NŒ( o‡oˆ(òˆ r2Àp(J¥(„Œo‰oŠ(òˆ(ŒŒ–%*(>4 *0 å#o‹(‘+ o‹¥ó o‡oˆ(òˆ( (ª (Z (Y («vo‰oŠ(òˆ(}–( o sY‰(NŒ( o‡oˆ(òˆ(H¥rFÀp(J¥(„Œo‡oˆ(òˆ(Œ oŒŒ(†ŒŒ–%*(>4 *0,#o‹(ß+ o‰oŠ(òˆ(à+Œ–%*(>4 *0tõ"o‹(ß+ o‹¥ó o‡oˆ(òˆ(« (Z (Y («vo‡oˆ(òˆ(à+ oŒŒ(†ŒŒ–%*(>4 *Ž(Ž o‰oŠ(òˆ("ŒŒ–%*(>4 *0 kö"o‹¥ó o‡oˆ(òˆ(« (Z (Y («v(Ž o‡oˆ(òˆ("Œ oŒŒ(†ŒŒ–%*(>4 *Æo‹¥&(‰o‡oˆ(òˆ(ŒŒ–%*(>4 *0 n#o‹(â+ o‹¥&o‡oˆ(òˆ o-5 o‡oˆ(òˆo‡oˆ(òˆ(l (ŒŒ–%*(>4 *0Ð#o‹(â+ o‹¥ó -.o‡oˆ(òˆ(› (Z (Y («v+o‡oˆ(òˆo‡oˆ(òˆ(D¥(I¥(¥(¥  o-5 oŒŒ(†Œo‡oˆ(òˆ (ŒŒ–%*(>4 *0 †‚o‹¥&o‡oˆ(òˆ (H¥  r\Àp(J¥(„Œo‡oˆ(òˆo‡oˆ(òˆ(l o‡oˆ(òˆ(ŒŒ–%*(>4 *0Œ#o‡oˆ(òˆ(› (Z (Y («vo‡oˆ(òˆ o‡oˆ(òˆ(D¥ (I¥ (¥(¥  rrÀp(J¥(„ŒŒ–%*(>4 *0Œ#o‡oˆ(òˆ(› (Z (Y («vo‡oˆ(òˆ o‡oˆ(òˆ(D¥ (I¥ (¥(¥  rŽÀp(J¥(„ŒŒ–%*(>4 *0Œ#o‡oˆ(òˆ(› (Z (Y («vo‡oˆ(òˆ o‡oˆ(òˆ(D¥ (I¥ (¥(¥  rªÀp(J¥(„ŒŒ–%*(>4 *0Œ#o‡oˆ(òˆ(› (Z (Y («vo‡oˆ(òˆ o‡oˆ(òˆ(D¥ (I¥ (¥(¥  rÈÀp(J¥(„ŒŒ–%*(>4 *0e²"o‹¥ó o‡oˆ(òˆ(› (Z (Y («vo‰oŠ(òˆ  rèÀp(J¥(„ŒŒ–%*r(.5 }5H}6H}7H*j{5H{6H{7H(nŒ*(>4 *0C#o‹( + o‹(n+ o‹¥&o‹(@+ s‚ƒŒR *:(.5 }8H*"{8H*(>4 *0o‹(@+ s†ƒŒR *(>4 *No‹(â+ŒR *(>4 *0"o‹(š+ (ˆ (‰ ŒB*(>4 *0' #o‹( + o‹¥&(¡+ŒB*(>4 *0(("o‹( + o‹(š+ (‰ ŒB*(>4 *0"o‹(š+ (ˆ (‰ ŒB*(>4 *0? #o‹(ã+ o‹¥&(/5 o‡oˆ(òˆo-5 Œ–%*(>4 *0| #o‹(ã+ o‹¥ó o‡oˆ(òˆ(¬ (Z (Y («v(/5 (05  o‡oˆ(òˆ(¥o-5 Œ–%*(>4 *0;‚o‹¥&o‡oˆ(òˆ  rþÀp(J¥(„ŒŒ–%*(>4 *0 _–!o‹¥ó o‡oˆ(òˆ(¬ (Z (Y («v(15 o‡oˆ(òˆ($ŒŒ–%*(>4 *0 3o‹¥&(15 o‡oˆ(òˆ($ŒŒ–%*:(.5 }9H*¦{9H(25 {9H(35 {9H(45 ($Œ*(>4 *04#o‹(ä+ o‰oŠ(òˆ sžƒ s55 ŒL"*(>4 *No‹(ã+ŒL"*(>4 *0-#o‹(å+ (65 (75 o85 s55 ŒL"*V(95 }:H};H*n{:H{;H(æ+(0Œ*(>4 *0)#o‹(å+ (65 (75 s¦ƒŒQ"*(95 *:(Ž ("Œ*(>4 *2sªƒŒQ"*:(;5 }4 *0)#o‹(@+ oŒŒ s®ƒ s<5 ŒN"*(>4 *No‹(å+ŒN"*r(;5 }=H}>H}?H*0 Y#{?H{=Hrê p{>H(Ɉ (ŠŒ3&t«% {ÑJ{ÒJ{ÓJ{ÔJ(>Œ*rps\ z(>4 *0T®"o‹(@+ o‹(@+ o‡oˆ(òˆ oŒŒoŒŒ(¥s´ƒs<5 ŒN"*r(;5 }@H}AH}BH*0 rð p{@H{AH{BH(ˈ*(>4 *0R#o‹(@+ o‹(@+ o‹(@+ oŒŒoŒŒ(¥ s¸ƒ s<5 ŒN"*r(;5 }CH}DH}EH*0 Y#{DH{CHrê p{EH(Ɉ (ŠŒ3&t«% {ÑJ{ÒJ{ÓJ{ÔJ(>Œ*rps\ z(>4 *0½#o‹(@+ o‹¥ó -.o‡oˆ(òˆ(– (Z (Y («v+o‡oˆ(òˆ o‡oˆ(òˆ(G¥rÁp(J¥(„ŒoŒŒoŒŒ(¥ s¼ƒs<5 ŒN"*(>4 *0 ?o‹(@+ sn o‡oˆ(òˆoŒŒ(¥(tŒŒ–%*(>4 *0)#o‹(+ o‹(@+ s=5 ŒC"*(>4 *0>#o‹(+ o‹(å+ (65 (75  (æ+s=5 ŒC"*(>4 *0ƒ#o‹(+ o‹¥ó -.o‡oˆ(òˆ(† (Z (Y («v+o‡oˆ(òˆ r0Áp(J¥(„Œs=5 ŒC"*(>4 *0Œ#o‹(+ o‹¥ó -.o‡oˆ(òˆ(£ (Z (Y («v+o‡oˆ(òˆ(H¥ rLÁp(J¥(„Œs=5 ŒC"*(>4 *0`#o‹(+ o‹(@+ o‹¥ó o‹(@+ o‡oˆ(òˆ(²v s>5 ŒD"*²(.5 }FH}GH}HH}IH}JH*0 0{FH{JH(Ĉ{GH{HH(&+{IH(|Œ*(>4 *0 €#o‹¥m o‹(©+ o‹(ç+ o‹(©+ o‹¥&o‰oŠ(òˆ(´£o‡oˆ(òˆ s̃ŒR *(>4 *0(#o‹(ç+ o‹(@+ ( Œ‡*(>4 *2(Ž Œ‡*(>4 *"ŒÃ*(>4 *0o‹(@+ ( ŒÃ*(>4 *2(í Œ¢*(>4 *09õ!o‹¥&o‹(s+ o‹¥&(í (Æ4 Œ¢*(>4 *2(í Œ¢*(>4 *0õ!o‹(s+ (í (Æ4 Œ¢*(>4 *fo‹¥&(í Œ¢*(>4 *0 ú#o‹(s+ o‹¥&o‹¥Ã o‹(è+ o‹¥i , (ô +(‰o‰oŠ(òˆ(Œ(é+(Ú (( (]‰s4  (ê+(ë+  (G  (ì+ o‡oˆ(òˆ o‡oˆ(òˆs?5 (@5  sA5 ŒM"*(>4 *0 Ù #o‹(@+ o‹(@+ o‹(è+ o‹¥i (±ˆ,(‡ (Š ,0o‡oˆ(òˆ(­(Z (Y (í++T(‡ (‰ -Â(‡ (R (‡ (ˆ s4 (é+ (  (ê+sA5 ŒM"*(>4 *0 n!#o‡oˆ(òˆ (Ñ (Z (Y («v(­ (Z (Y («v(¥v sB5 (15 (C5 sA5 ŒM"*(>4 *0 €!#o‡oˆ(òˆ (Ñ (Z (Y («v(¥v o‡oˆ(òˆ(­ (Z (Y («vsB5 (15 (C5 sA5 ŒM"*(>4 *0 “"#o‹(@+ o‹(è+ o‹¥i o‡oˆ(òˆ(Ñ (Z (Y («vo‡oˆ(òˆ(¥v(é+( (ê+sA5 ŒM"*(>4 *0 †$#o‹(@+ o‹(î+ o‹(è+ o‹¥i (é+(D5 (E5  (ê+o‡oˆ(òˆsF5 sG5 (H5 sA5 ŒM"*(>4 *0X%#o‹(@+ o‹¥i  o‡oˆ(òˆsF5 sG5 (H5 (15  sA5 ŒM"*(>4 *0 †$#o‹(@+ o‹(î+ o‹(è+ o‹¥i (é+(D5 (E5  (ê+o‡oˆ(òˆsF5 sG5 (H5 sA5 ŒM"*(>4 *0'#o‹(ï+ (I5 Œi*(>4 *"Œi*(>4 *0$(#o‡oˆ(òˆ  sF5 Œj*(>4 *0.Mo‡oˆ(òˆ (E¥(J5 sF5 Œj*(>4 *0C)#o‡oˆ(òˆ o‡oˆ(òˆ (E¥(J5 sF5 Œj*(>4 *0C)#o‡oˆ(òˆ o‡oˆ(òˆ (E¥(J5 sF5 Œj*(>4 *0‰!o‹(B+ s4 Œw*(>4 *0;*#o‡oˆ(òˆ (Ñ (Z (Y («v(¥vŒw*(>4 *0@+#o‹(è+ o‹(ï+ o‹(î+ (I5 sK5 (L5 ŒT"*(>4 *2(M5 ŒT"*(>4 *0/,#o‹(ð+ o‹(@+ ( sN5 ŒR"*(>4 *0G-#o‹(ð+ o‡oˆ(òˆ(­ (Z (Y («vsN5 ŒR"*(>4 *0T.#o‹(ð+ o‹¥ó o‡oˆ(òˆ(­ (Z (Y («vsN5 ŒR"*(>4 *0G-#o‹(ð+ o‡oˆ(òˆ(­ (Z (Y («vsN5 ŒR"*(>4 *0T.#o‹(ð+ o‹¥ó o‡oˆ(òˆ(­ (Z (Y («vsN5 ŒR"*’(.5 }KH}LH}MH}NH*0 0{KH(O5 {KH(P5 {LH{MH{NH((Œ*(>4 *0 0#o‹(ñ+ o‹(ò+ o‹¥&o‹(ó+ o‡oˆ(òˆ (¨ -o‡oˆ(òˆ+o‡oˆ(òˆ s„s55 ŒL"*r(.5 }OH}PH}QH*0 /{OH(O5 {OH(P5 ( {PH{QH((Œ*(>4 *0‚1#o‹(ñ+ o‹¥&o‹(ó+ o‡oˆ(òˆ (¨ -o‡oˆ(òˆ+o‡oˆ(òˆs„s55 ŒL"*V(.5 }RH}SH*0 /{RH{RHsQ5 (P5 ( (R5 {SH((Œ*(>4 *0H°o‹(s+ o‡oˆ(òˆ o‡oˆ(òˆs„s55 ŒL"*(>4 *0T2#o‹(s+ o‹¥&o‹(@+ o‹(^+ (Ô sS5 (T5  sQ5 ŒU"*(>4 *0B3#o‹(s+ o‹¥&o‹(@+ sS5 (T5 sQ5 ŒU"*(>4 *04#o‹(s+  sQ5 ŒU"*(>4 *No‹(ò+Œ9*(>4 *2( Œ9*(>4 *0 85#o‹(¯+ (Î4 (æ o‡oˆ(òˆ(®+Œ9*(>4 *0 85#o‹(¯+ (Î4 (æ o‡oˆ(òˆ(®+Œ9*(U5 *0’6#(‘E 3(®o’‘sû£ (¤(¥*t–& {M(V5 *tŸ& {/M (Ï sû£ (¤(¥*(>4 *0,Œ!o‹(Y+ o‹¥&s*„(ô+Œ9*(>4 *0(8#o‹(õ+ o‹(ó+ (W5 Œú*(>4 *2(R5 Œú*(>4 *0(8#o‹(õ+ o‹(ó+ (W5 Œú*(>4 *No‹(ó+Œú*(>4 *0`9#o‹¥&o‹(s+ o‹(ò+ o‹¥&o‹¥&o‰oŠ(òˆ(ÔŒL&*(>4 *"Œó*(>4 *"Œó*(>4 *0 W;#o‹(¶+ o‹(@+ o‡oˆ(òˆoŒŒ(¥ (÷ˆ (È([! Œ–%*(>4 *0 j<#o‹(¶+ o‡oˆ(òˆ (÷ˆ o‡oˆ(òˆrjÁp(J¥(„Œ  (È([! Œ–%*(>4 *0 W;#o‹(¶+ o‹(@+ o‡oˆ(òˆoŒŒ(¥ (÷ˆ (È([! Œ–%*(>4 *0 ª=#o‹(¶+ o‹(@+ o‹¥ó -.o‡oˆ(òˆ( (Z (Y («v+o‡oˆ(òˆoŒŒ(¥(÷ˆ(È([! oŒŒ(†ŒŒ–%*(>4 *0 —>#o‹(¶+ o‡oˆ(òˆ(¯ (Z (Y («v(÷ˆ o‡oˆ(òˆ o‡oˆ(òˆrŠÁp(J¥(„Œ (È([! Œ–%*(>4 *0 ¼?#o‹(¶+ o‹¥ó -.o‡oˆ(òˆ( (Z (Y («v+(÷ˆo‡oˆ(òˆo‡oˆ(òˆrªÁp(J¥(„Œ(È([! oŒŒ(†ŒŒ–%*(>4 *0 x@#o‹(¶+ (÷ˆ o‡oˆ(òˆ o‡oˆ(òˆrÊÁp(J¥(„Œ (È([! oŒŒ(†ŒŒ–%*(>4 *0 qA#(÷ˆ o‡oˆ(òˆ (+ o‡oˆ(òˆrêÁp(J¥(„Œ (È([! oŒŒ(†ŒŒ–%*(>4 *0 \B#o‹(Ø+ ( 5 ( 5 o‡oˆ(òˆ(¥ o‡oˆ(òˆ(çŠ (6ŒŒ–%*(>4 *0 \B#o‹(Ø+ ( 5 ( 5 o‡oˆ(òˆ(¥ o‡oˆ(òˆ(çŠ (6ŒŒ–%*(>4 *No‹(s+Œv%*(>4 *0>C#o‹(s+ o‹(w+ (ž+o‰oŠ(òˆ(‹Œv%*(>4 *No‹(`+Œ*(>4 *0RD#o‹(`+ o‹(w+ (‚ (ª (ž+o‰oŠ(òˆ(‹ sX5 Œ*(>4 *"Œ*(>4 *0cE#o‹(`+ (‚ (ª {ÜL(× - {ÝL+(=”  s o‡oˆ(òˆ({“(  Œ*(>4 *0~G#o‹(ö+ o‹(`+ (Y5 (Z5 (‚ (ª {ÝL(ª {ÜLo‰oŠ(òˆ(Š‹ (  (3‘sX5 Œ*(>4 *0\H#o‹(ö+ (Y5 (Z5 († (U , (U (U - (R! +(=”(3‘sX5 Œ*([5 *&s\5 *(>4 *0~L#o‹(÷+ o‹(ø+ (]5 (^5 (ù+(_5 (`5 s`„(Æ4 (ú+o‰oŠ(òˆ(†‹ (S! sa5 ŒW"*(>4 *03M#o‹(÷+ (]5 (^5 (! (S! sa5 ŒW"*(>4 *0(N#o‹(÷+ o‹(ø+ (b5 ŒY"*(>4 *0O#o‹(÷+ (c5 (b5 ŒY"*(>4 *0¹P#o‹(?+ o‹(s+ o‹(s+ (ž‹3Ttx% {J{I( ,; {J{I( ( - ( (Ô (:‘s +.o‡oˆ(òˆ(°(Z (Y (û+ŒŽ*(>4 *0CQ#o‹(?+ o‹(^+ o‹(s+ (Ô (:‘  s ŒŽ*(>4 *01R#o‹(?+ o‹(s+ (:‘ s ŒŽ*(>4 *0­S#o‹(s+ o‹(s+ (ž‹3Utx% {J{I( ,<{J{I ( ( -# ( (æ (Ô (:‘s +.o‡oˆ(òˆ(°(Z (Y (û+ŒŽ*(>4 *0:T#o‹(^+ o‹(s+ (æ (Ô (:‘ s ŒŽ*(>4 *0(U#o‹(s+ (æ (:‘ s ŒŽ*(>4 *09V#o‹(s+ o‹(s+ o‰oŠ(òˆ(Š‹Œv%*(>4 *No‹(s+Œv%*(>4 *0DW#o‹(s+ o‹(ü+ s\5 (d5 o‰oŠ(òˆ(†‹Œv%*(>4 *0œX#o‹¥m o‹(ü+ r‡p(ñ -.o‡oˆ(òˆ(± (Z (Y («v+(‰o‰oŠ(òˆ(˜‹s\5 (d5 o‰oŠ(òˆ(†‹Œv%*(>4 *0ŽY#o‹(s+ o‹¥m o‹(ü+ r‡p(ñ -.o‡oˆ(òˆ(± (Z (Y («v+s\5 (d5 o‰oŠ(òˆ(†‹Œv%*(>4 *No‹(s+Œv%*(>4 *0.W#o‹(s+ o‹(ü+ s\5 (d5 Œ°*(>4 *0xY#o‹(s+ o‹¥m o‹(ü+ r‡p(ñ -.o‡oˆ(òˆ(± (Z (Y («v+s\5 (d5 Œ°*(>4 *0%õ!o‹(s+ s\5 (e5 (d5 Œ°*(>4 *0(8"o‹(s+ o‹(©+ (Æ4 Œ¢*(>4 *0õ!o‹(s+ (í (Æ4 Œ¢*(>4 *0‰!o‹(B+ (€‹Œv%*(>4 *0+"o‹(š+ o‰oŠ(òˆ(Œ‹Œv%*(>4 *0ÌZ#o‹(s+ o‹¥m o‹(Æ+ r; p(ñ -r®Op(ñ þ+,.o‡oˆ(òˆ(± (Z (Y («v+r®Op(ñ ,!(" eo‰oŠ(òˆ(–‹+(" o‰oŠ(òˆ(–‹Œv%*(>4 *No‹(s+Œv%*(>4 *09[#o‹(s+ o‹¥’ o‰oŠ(òˆ(ˆ‹Œv%*(>4 *09[#o‹(s+ o‹¥’ o‰oŠ(òˆ(ˆ‹Œv%*(>4 *0 XV#o‹(s+ o‹(s+ (í (Æ4 (( o‡oˆ(òˆo ‹(¥(‚‹Œv%*(>4 *0 Ž]#o‹(ý+ o‹¥&o‹(s+ (f5 (g5 (²o‡oˆ(òˆo ‹(¥(¶£ o‡oˆ(òˆo ‹(¥(‚‹Œv%*(>4 *No‹(s+Œv%*(>4 *0e^#o‹(š+ o‹(s+ o‰oŠ(òˆ o‡oˆ(òˆ(Œ‹()‹(² (º4 (‹Œv%*(>4 *0+õ!o‹(s+ o‰oŠ(òˆ(’‹Œv%*(>4 *"Œ’*(>4 *"Œ’*(>4 *"Œ’*(>4 *"Œ’*(>4 *0s_#o‹(s+ o‹(s+ o‹(ý+ (g5 (f5  (þ+(Æ4 (Æ4 o‡oˆ(òˆ(Ö+(n sh5 ŒZ"*(>4 *0T`#o‹(ý+ o‹(s+ (g5 (f5 (Æ4 o‡oˆ(òˆ (n sh5 ŒZ"*(>4 *0‚a#o‹(ý+ o‹(s+ o‡oˆ(òˆ( (Z (Y («v(g5 (f5  (Æ4 o‡oˆ(òˆ(n sh5 ŒZ"*(>4 *0b#(í (( sh5 ŒZ"*(>4 *No‹(s+Œv%*(>4 *0ÌZ#o‹(s+ o‹¥m o‹(Æ+ r; p(ñ -r®Op(ñ þ+,.o‡oˆ(òˆ(± (Z (Y («v+r®Op(ñ ,!(" eo‰oŠ(òˆ(–‹+(" o‰oŠ(òˆ(–‹Œv%*(>4 *0‰Z#o‹(s+ o‹¥m o‹(Æ+ r; p(ñ -.o‡oˆ(òˆ(± (Z (Y («v+(" eo‰oŠ(òˆ(–‹Œv%*(>4 *0hc#o‹(s+ o‹¥’ (î o‰oŠ(òˆ  s(¤(¤(¥o‰oŠ(òˆ(ˆ‹Œv%*(>4 *0hc#o‹(s+ o‹¥’ (î o‰oŠ(òˆ  s(¤(¤(¥o‰oŠ(òˆ(ˆ‹Œv%*(>4 *0 wd#o‹(s+ o‹(s+ o‡oˆ(òˆo ‹(¥ (î s(¤(¤(¥(í (Æ4 (( (‚‹Œv%*(>4 *0 Ž]#o‹(ý+ o‹¥&o‹(s+ (f5 (g5 (²o‡oˆ(òˆo ‹(¥(¶£ o‡oˆ(òˆo ‹(¥(‚‹Œv%*(>4 *No‹(s+Œv%*(>4 *0“e#o‹(š+ o‹(s+ (î o‰oŠ(òˆ  s(¤(¤(¥o‰oŠ(òˆ o‡oˆ(òˆ(Œ‹ ()‹(² (º4 (‹Œv%*(>4 *0Xf#o‹(s+ (î o‰oŠ(òˆ s(¤ (¤ (¥o‰oŠ(òˆ(’‹Œv%*(>4 *No‹(s+Œv%*(>4 *0þg#o‹(s+ o‹¥m o‹(Æ+ r; p(ñ -r®Op(ñ þ+,.o‡oˆ(òˆ(± (Z (Y («v+(îo‰oŠ(òˆs(¤(¤(¥r®Op(ñ ,!(" eo‰oŠ(òˆ(–‹+(" o‰oŠ(òˆ(–‹Œv%*(>4 *0»g#o‹(s+ o‹¥m o‹(Æ+ r; p(ñ -.o‡oˆ(òˆ(± (Z (Y («v+(îo‰oŠ(òˆs(¤(¤(¥(" eo‰oŠ(òˆ(–‹Œv%*(>4 *0+õ!o‹(s+ o‰oŠ(òˆ(’‹Œv%*(>4 *No‹(s+Œv%*(>4 *vo‰oŠ(òˆ(Ž‹Œv%*(>4 *0"õ!o‹(s+ o‹¥&Œv%*(>4 *0Nh#o‹(s+ o‹¥ó o‡oˆ(òˆ(› (Z (Y («vŒv%*(>4 *0-‘"o‹(¨+ o‡oˆ(òˆ(˜‹Œv%*(>4 *0)Mo‡oˆ(òˆ (£‰(˜‹Œv%*(>4 *0'i#o‹(Û+ ("5 oŒŒ(š‹Œv%*(>4 *Ž(ƒ‰o‰oŠ(òˆ(˜‹Œv%*(>4 *Ž(ƒ‰o‰oŠ(òˆ(˜‹Œv%*(>4 *ªo‹¥&o‰oŠ(òˆ(Ž‹Œv%*(>4 *0 Zj#o‹(s+ o‹(¢+ (»4 (i5  (l (¼4 (j5 (k5 o ‹(¥(‚‹Œv%*(>4 *0 Rk#o‹(s+ o‹(B+ (í (( o‡oˆ(òˆoc‰(¥(„‹Œv%*(>4 *0 il#o‹(s+ o‹(B+ o‹(¢+ (»4 (i5 (l (¼4 (j5 (k5 o ‹ (¥(„‹Œv%*(>4 *0Uh#o‹(s+ o‹¥ó -.o‡oˆ(òˆ(— (Z (Y («v+Œv%*(>4 *0 m#o‹(Ü+ (l5 (&5 ('5 (%5 ((5 ()5 ,/(ío‡oˆ(òˆsû£(¤(¥+ sm5 Œ+"*(>4 *0 En#o‹(Ü+ (&5 ('5 ()5 ((5 (%5  sm5 Œ+"*(>4 *0 Ío#o‹¥ó o‹(s+ o‹(s+ o‹(ý+ o‹¥ó (g5  (f5 o‡oˆ(òˆo‡oˆ(òˆ(l (þ+(Æ4 (Æ4 o‡oˆ(òˆ(Ö+(n o‰oŠ(òˆsn5 ŒJ"*(>4 *0 Bp#o‹¥ó o‹(s+ o‹(s+ o‹(ý+ o‹¥ó-1o‡oˆ(òˆ(‘(Z (Y («v+/o‡oˆ(òˆ((Z (Y («v (g5  (f5 o‡oˆ(òˆ(G¥ o‡oˆ(òˆ(þ+(Æ4 (Æ4 o‡oˆ(òˆ(Ö+(n o‡oˆ(òˆ (¥sn5 ŒJ"*(>4 *0 Ûq#o‹¥ó o‹(s+ o‹¥ó -.o‡oˆ(òˆ( (Z (Y («v+o‡oˆ(òˆ(G¥o‡oˆ(òˆ(í (Æ4 o‡oˆ(òˆ(( (n o‡oˆ(òˆ(¥sn5 ŒJ"*(>4 *0 ’r#o‹¥ó o‹(s+ o‹¥ó o‡oˆ(òˆ o‡oˆ(òˆ(l (í (Æ4 (( o‰oŠ(òˆ sn5 ŒJ"*(>4 *0 És#o‹¥ó o‹(s+ o‹¥ó -.o‡oˆ(òˆ(‘ (Z (Y («v+,o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆ(í (Æ4 (( o‡oˆ(òˆsn5 ŒJ"*(>4 *0 }t#o‹¥ó o‹¥ó o‡oˆ(òˆ o‡oˆ(òˆ(l (í (( o‰oŠ(òˆ sn5 ŒJ"*(>4 *0 Úu#o‹¥ó o‹¥ó -.o‡oˆ(òˆ(‡ (Z (Y («v+,o‡oˆ(òˆ( (Z (Y («vo‡oˆ(òˆ (G¥o‡oˆ(òˆ(í (( o‡oˆ(òˆ(¥sn5 ŒJ"*(>4 *No‹(s+Œv%*(>4 *09V#o‹(s+ o‹(s+ o ‹o ‹(¥(œ‹Œv%*(>4 *0 wv#o‹(s+ o‡oˆ(òˆ( (Z (Y («v(‰o‡oˆ(òˆ(˜‹o‡oˆ(òˆ(œ‹Œv%*(>4 *No‹(s+Œv%*(>4 *0Av#o‹(s+ o‡oˆ(òˆ( (Z (Y («vŒv%*(>4 *0Tw#o‡oˆ(òˆ (‰(˜‹ rR9psY‰(Ú (Û (( (]‰(€‹(œ‹Œv%*(>4 *0/x#o‹¥ó o‹(É+ o‹¥ó Œ%*(>4 *07$ o‹¥ó o‹¥ó o‰oŠ(òˆ(ŠŒ%*(>4 *0%‰!o‹(B+ {Ioc‰(ŠŒ%*(>4 *0+"o‹(š+ o‰oŠ(òˆ(ŠŒ%*(>4 *0"y#o‹(É+ o‹¥&Œ%*(>4 *No‹(É+Œ%*(>4 *0Ìz#o‹(É+ o‹¥m o‹(Æ+ r; p(ñ -r®Op(ñ þ+,.o‡oˆ(òˆ(´ (Z (Y («v+r®Op(ñ ,!(" eo‰oŠ(òˆ(Š+(" o‰oŠ(òˆ(ŠŒ%*(>4 *0‰z#o‹(É+ o‹¥m o‹(Æ+ r; p(ñ -.o‡oˆ(òˆ(´ (Z (Y («v+(" eo‰oŠ(òˆ(ŠŒ%*(>4 *0R{#o‹(Æ+ (" ..o‡oˆ(òˆ(µ (Z (Y («v+(ŠŒ%*(>4 *0y#o‹(É+ (o5 (p5 ŒA*(>4 *0(|#o‹(É+ o‹(ÿ+ (p5 ŒA*(>4 *0+}#o‹(ÿ+ o‰oŠ(òˆ( ŠŒ%*(>4 *09~#o‹(É+ o‹(É+ o‰oŠ(òˆ(ŠŒ%*(>4 *0Á#o‹(É+ o‹¥m o‹(É+ r´9p(ñ -r‡p(ñ þ+,.o‡oˆ(òˆ(´ (Z (Y («v+r´9p(ñ ,o‰oŠ(òˆ(Š+o‰oŠ(òˆ( ŠŒ%*(>4 *0z€#o‹¥m o‹(É+ r‡p(ñ -.o‡oˆ(òˆ(´ (Z (Y («v+(Šo‰oŠ(òˆ( ŠŒ%*(>4 *0?#o‹(^+ o‰oŠ(òˆ {I sY‰(i‰(w‰Œô$*(>4 *No‹(š+Œô$*(>4 *0j‚#o‹¥m o‹(^+ r; p(ñ -.o‡oˆ(òˆ(¶ (Z (Y («v+(k‰(w‰Œô$*(>4 *0/Ö o‹¥m o‡oˆ(òˆ sY‰Œð$*(>4 *0:Mo‡oˆ(òˆ r„ÁpsY‰(Ú (Û (( (]‰Œñ$*(>4 *0)+o‹(^+ (Ú (Û (( (]‰Œñ$*(>4 *0 hƒ#o‹(B+ o‹(^+ {I {I (Ú (Û (û+ o‡oˆ(òˆ(( (n (z+(]‰Œñ$*(>4 *0 „#o‹(B+ o‹¥ó -.o‡oˆ(òˆ(— (Z (Y («v+{I {I o‡oˆ(òˆ(( (n (z+(]‰Œñ$*(>4 *0H…#o‹¥m o‹¥&(}–o o‡oˆ(òˆ sY‰Œð$*(>4 *0i†#o‹¥&o‰oŠ(òˆ( (Z (Y («v(}–r Âpo o‡oˆ(òˆ sY‰Œð$*(>4 *02Ö (}–r´9po o‡oˆ(òˆ sY‰Œð$*(>4 *0n‡#o‹(=+ o‹¥&rû³p(+¥7 rû³p(p+(` rû³p( ( o‡oˆ(òˆ  sY‰Œð$*(>4 *0n‡#o‹(=+ o‹¥&rû³p(+¥7 rû³p(p+(` rÂp( ( o‡oˆ(òˆ  sY‰Œð$*(>4 *0Ko‹¥m (–-,o‰oŠ(òˆ(ÿ (Z (Y («v+Œm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *2rÝNpŒm*(>4 *No‹¥mŒm*(>4 *2r|8pŒm*(>4 *2r´9pŒm*(>4 *2rCpŒm*(>4 *2ræDpŒm*(>4 *0Jo‹¥ó r@-pŒm*(>4 *0Jo‹¥ó r6ÚpŒm*(>4 *2rWpŒm*(>4 *2rýpŒm*(>4 *2r(PpŒm*(>4 *2rX‚pŒm*(>4 *2rÑNpŒm*(>4 *0ho‹¥m rÂp(ñ -r$Âp(ñ þ+,r,Âp(ñ þ+,o‰oŠ(òˆ(µ£+Œm*(>4 *No‹¥mŒm*(>4 *2rê pŒm*(>4 *2rð pŒm*(>4 *0”ˆ#o‹(‘+ o‹(‘+ ( ( ( ( (ñ , þ+-7o‡oˆ(òˆ( (·(Z (Y («v+( Œm*(>4 *0Mo‹¥m (Â-.o‡oˆ(òˆ(¸ (Z (Y («v+Œm*(>4 *0o‹¥m ([ (\ Œ6*(>4 *0(S!o‹(=+ o‹¥m (\ Œ6*(>4 *No‹(^+Œð$*(>4 *No‹(^+Œð$*(>4 *0)+o‹(^+ (Ú (Û (( (]‰Œñ$*(>4 *0)+o‹(^+ (Ú (Û (( (]‰Œñ$*(>4 *0T‰#o‹(^+ o‹(B+ {I {I (Û o‡oˆ(òˆ (n (]‰Œñ$*(>4 *0A+o‹(^+ (Ú (Û o‡oˆ(òˆ(( (n (]‰Œñ$*(>4 *No‹(^+Œð$*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *Šo‹¥&o‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *Šo‹¥&o‹¥&Œ*(>4 *Šo‹¥&o‹¥&Œ*(>4 *"Œ*(>4 *Šo‹¥&o‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *05ú (¹ o‰oŠ(òˆ s(¤ (¤(¥Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œó*(>4 *"Œó*(>4 *"Œ*(>4 *"Œ*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *’(ºo‰oŠ(òˆ(¶£Œ*(>4 *"Œ*(>4 *’(»o‰oŠ(òˆ(¶£Œ*(>4 *"Œ*(>4 *’(»o‰oŠ(òˆ(¶£Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *Vo‹¥&Œ*(>4 *"Œ*(>4 *"Œ*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *No‹¥óŒó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *"Œó*(>4 *No‹¥óŒó*(q5 *0,‹#(+ (+- or5 *(+ (s5 þot5 *(u5 *"(ºv*(v5 *"(Àv*0ï æ2€%ÐÂA(E €TH 8€%ÐÃA(E €UH ü€%ÐÄA(E €VH à€%ÐÅA(E €WH ¢‹€%ÐÆA(E €XH à€%ÐÇA(E €YH €%ÐÈA(E €ZH €%ÐÉA(E €[H à€%ÐÊA(E €\H*0¼Œ#(y {bH{bH( /*1*(y {cH{cH([+ /*1*(y {dH{dH/+þ / * 1 *(y {eH{eH(z+/*1*(y {fH{fH( *0Ÿ#{bH{bH( /*1*{cH{cH([+ /*1*{dH {dH /+ þ /*1*{eH{eH(z+/*1*{fH{fH( *0&qÐì(d ow5 oe (Lsl z08#(õ (U ( Áo/Á(ù Þt  (+ Þ*$00#sH ( Áo0Á(ù Þt (+ Þ*0 ’#rEpo , (6†+;sH oI ox5 oy5 ,rEp( (6†+ (7† -(C * (z5 o{5 s¨†(+Þt(+Þ*jˆ0-”#uß ,  þo¦ *u  ,  þo¦ **0:•#o* Þ,t (9†(9† oe (]ol sl z* ,0Θ#/%Ð (d ¤/o|5 (+þ,hs}5 {bHo~5 o5 {eH(+o€5 {fHo5 o‚5 oƒ5 o„5  s®†(+*/o|5 (+þ,s°†(+*(Mol slz0ÿš#sH (0 Þ6t uÞ,"(dsû£(¤(¥ Þþ {cH,M ,G(d (ó   oI (N (š þ,(d (ó  (…5 ÞZ-(…5 ÞOs²†(+ Þ/t u(  ,   s¸†ot(…5 Þþ*6ÍÎ/0 %›#  (<† (†5 s‡5 *Jsˆ5 ($¥o+*0Lž#o + Þt u( ,, sĆotsŒ5 ($¥o + Þþ*>:sȆo +*Rsʆ¥(þ(+*0ø¢#(ñ :ê(D†,'s̆o +(;sû£ (¤þ(¥*%.¤o9  8”£m («–oó YEm o^ Œ,4u¼,(x ¥|o¡ +  o& +rR9p (5sû£ (¤(¥+X Ži?cÿÿÿ***~îH*"s›‡*0£#(5 ,(Ž5 **"s‡*0ol oN3 oO3 ol (ñ *0 S¦#{®H (5 ,?(5 (‘5 (5 (’5 {¯H(’‡ sà‡(+s“5 (' **0O¨#{®H (”5 ,;(•5 (–5 (•5 (—5 {¯H(ч{¯H (чs˜5 (~' **0n«#{®H (™5 ,Z(š5 (›5 (š5 (œ5 (š5 (5 {¯H (‡{¯H(+(݇{¯H(чsž5 („' **0 ‡­#{®H (G ,s(H (Ÿ5 (H (I (H ( 5 ,!(¡5 {¯H(ч(¢5 +{¯H (r‡sæ‡(+s£5 (Š' **0-¯#{®H (¤5 ,(¥5 {¯H(‡(‡' **0D°#{®H (¦5 ,0(§5 (¨5 (§5 (©5 {¯H(‡sª5 (l' **0O²#{®H («5 ,;(¬5 (­5 (¬5 (®5 {¯H (ч{¯H(‡s¯5 (c' **02´#{®H (°5 ,(±5 {¯H(+(+(o' **0D¶#{®H (²5 ,0(³5 (´5 (³5 (µ5 {¯H (чs¶5 (u' **0T¸#{®H (·5 ,@(¸5 (¹5 (¸5 (º5 {¯H(‡{¯H (+(+s»5 (r' **0O¨#{®H (¼5 ,;(•5 (—5 (•5 (–5 {¯H (ч{¯H(чs˜5 (~' **0O»#{®H (½5 ,;(¾5 (¿5 (¾5 (À5 {¯H(Û‡{¯H (чsÁ5 (x' **0O¨#{®H (Â5 ,;(•5 (—5 (•5 (–5 {¯H (ч{¯H(чs˜5 (~' **0 ½#{®H (Ã5 9‰(Ä5 (Å5 (Ä5 (Æ5 (Ä5 (Ç5 (Ä5 (È5 (Ä5 (É5 {¯H(ч{¯H (Û‡{¯H(ч{¯H(Û‡{¯H(чsÊ5 (' **0O²#{®H (Ë5 ,;(¬5 (­5 (¬5 (®5 {¯H (ч{¯H(‡s¯5 (c' **0i¿#{®H (Ì5 ,U(Í5 (Î5 (Í5 (Ï5 (Í5 (Ð5 {¯H(Û‡{¯H (ч{¯H(чsÑ5 ({' **0ƒÁ#{®H (Ò5 ,o(Ó5 (Ô5 (Ó5 (Õ5 (Ó5 (Ö5 (Ó5 (×5 {¯H(Û‡{¯H(ч{¯H(ч{¯H (чsØ5 (' **0O»#{®H (Ù5 ,;(¾5 (¿5 (¾5 (À5 {¯H(Û‡{¯H (чsÁ5 (x' **0iÃ#{®H (Ú5 ,U(Û5 (Ü5 (Û5 (Ý5 (Û5 (Þ5 {¯H (ч{¯H(ч{¯H(чsß5 (f' **0-Å#{®H (à5 ,(á5 {¯H(Û‡(i' **0 *Æ#o\‡sì‡(+oâ5 oN‡(ч*0^Ç#of + Þ.t u( , sò‡o~ oqzþ (ô ,(ko~ sl z* .0›É#sô‡r8Âp(a† rJÂpsö‡(+(+,(=sû£ (¤(¥+rfÂpsø‡(+(+,(>sû£ (¤(¥+rJpe$sú‡(+ *0 EÊ#rvÂpsˆ(+ (— + ,*sˆr’Âp(a†(\ +»0 ¯Ë#sü‡r’Âp(a† (ñ -(Io~ sl zrœÂprR9psþ‡(+(+  sˆ(p+(ü+-;rS@p(` rS@p(` (Ssû£(¤þ(¥**0Ñ#s ˆr’Âp(a† rœÂp(Zs ˆ(+(+ r8Âp([sˆ(+(+ (d†  sˆ(+sã5 (ä5 (å5 (æ5 o"( (E†(b†8a£‰"(+,!(7sû£(¤(¥8"r’Âpr’Âpr°Âps ˆ(+(+ (ô ,!(6sû£(¤(¥8Ö rvÂp(Ó†Ð(d (‡s"ˆ(+  (— +  ,o+þ,8x (— +  , (8sû£(¤(¥+L  r8ÂprôÂps$ˆ( +(+  ("‡-!  (9sû£(¤(¥+o!+  :’o+:io"+:ìo#+-@o$+-1o%+-" (@sû£(¤(¥8£88—(è5  r6Ãps&ˆ(&+ rPÃps(ˆ(&+('+  ," (Jsû£(¤(¥8-('+  ," (Ksû£(¤(¥8þ8ø(é5  rpÃps*ˆ((+('+  þþ rŠÃps,ˆ((+('+  þþ r¤Ãps.ˆ()+(+ r´Ãps0ˆ()+(+,&,+@ (Bsû£(¤(¥+!,Ú (Asû£(¤(¥,&,+@ (Dsû£(¤(¥+!,Ú (Csû£(¤(¥-þ+," (£sû£(¤(¥8‘8‹( (b†+r (í#  rÆÃps2ˆ(*+(+ rØÃps4ˆ(*+(+-+, (?sû£(¤(¥+XŽi?”ûÿÿ*0Ò#s6ˆr’Âp(a† rœÂp(Zs8ˆ(+(+ r8Âp([s:ˆ(+(+ (d†(b†(«–oó YEn o^ Œ,4u¼,(x ¥|o¡ +  o& +rR9p(lsû£(¤(¥+s<ˆoç+  s>ˆo++- (e†**0\Ô#rS@p(` sLˆ  t¸$}ãHsNˆr0ÕpoÃ+  (,+,( *sPˆo-+*0>Õ#(g† (— + , Þ (ó Þt (¤ (¥ Þ*$%0KÖ#sRˆof + sTˆod + (— + ,$sVˆof + , rS@p( ( ***0>Ê#sXˆod + (— + ,([ *(j†(i†([ (\ þ(Ÿ+*0M (j†(i†sì5 *0r×#{™Hoí5 {™Hoî5 ,Q{™Hoï5 Œ ,-u¼ , (x ¥|o¡ +o& +rR9p(c +sð5 *0ÖÚ#Ži-sZˆs  (ñ5 *-ls\ˆof + (k† (˜ s^ˆo.+s`ˆo/+sbˆ(0+(1+(³– ([ (\ (Ÿ++(× sdˆo2+(— +  ,*sfˆof + shˆ  s  (ñ5 *0§Û#snˆof + spˆoå+ oõ5 -_srˆoæ+,3stˆo¾ + ,*(p($¥sû£ (¤ (I+*({($¥sû£ (¤ (I+*oö5 svˆoå+rïðp(ñ ,(l ³Œ÷*ryïp(ñ ,(l µŒø*r ñp(ñ , (l Œ’*rÆfp(ñ , (& ŒÁ*r“ïp(ñ ,(÷5 ´Œ*r«ïp(ñ ,(÷5 ¶Œ€*rÇïp(ñ , (÷5 Œô*rãïp(ñ , (Ú3 Œõ*røÃp(ñ , §(x ¥|(Ü3 Œñ*ràfp(ñ , §(x ¥|(Û3 Œö*rüfp(ñ , §(x ¥|( Œæ*rgp(ñ , (ø5 Œ*r0gp(ñ ,rÄp(ñ Œó*rÓîp(ñ ,IŒm ,2u¼,(x ¥|o¡ +o& +rR9pŒm*(Y($¥sû£ (¤ (I+*0 bÞ#(²– ÞAt uÕ' ,/tÕ'(é–(|($¥sû£(¤(3+ Þþ (±2 (²2 ¥ë(4+($¥(g†(— +  ,*sjˆ($¥oç+  slˆrR9poè+  ŒB,+ r¨9ps‚ z Ži   Y2, £<(n†¤XX3Ô  ($¥(m†-*( ( ( (  oK &(ó * A¾(ñ ,([ *ob -r Äp([ (\ *(°*0I*(ñ - ob þ+,'oZ (C†(<sû£ (¤(¥+(p†*0>è(— + ,*szˆod +(r†s|ˆof +([ (\ þ(Ÿ+*0)ß#sxˆof +(p†  s~ˆod +(r†*Ns€ˆo5+(Q²*0<à#s‚ˆoe +(t† (j² (k† (— (˜  (ô²*0 vs„ˆo6+ -(u†*(ƒ *:sˆo¸+*sy†*:( }^H*{^H*&*Zr.8psù5 (7+oú5 *07â#þ,&þ,&  (y {^H{^H( **þ,**:¥J$o}†*0Bã#¥J$ þ,%¥J$þ,&  {^H{^H( **¥J$þ,**07ä#þ,. &  ¹y7ž{^H , ( +bcXXX **6(n o€†*03ã#þ,$uJ$ ,&  {^H{^H(ñ **þþ*0/å#þ, þ,&  {^H{^H(ñ **þþ*0æ#uJ$ ,oƒ†**V(Ÿ }_H}`H*(Ÿ *0 (  *0 (¡ *{_H*{`H*0Mþ,D ¹y7žtK$(І(ô+bcXXX ¹y7žtK$(‰†(¿+bcXXX **6(n o‹†*0d*þ,Uu ,I(8+-*tK$(‰†tK$(‰†(À+,tK$(ІtK$(Іþ(õ+***þþ*0^þ,Oþ,G(8+-*tK$(‰†tK$(‰†(Â+,tK$(ІtK$(Іþ(ö+***þþ*0*u , þoކ**:(Ÿ }aH*(Ÿ *0 (  *0 (¡ *{aH*0-þ,$ ¹y7žtL$(”†(ô+bcXXX **6(n o•†*0D*þ,5u ,)(9+-*tL$(”†tL$(”†þ(õ+**þþ*þþ,0þ,((9+-*tL$(”†tL$(”†þ(ö+**þþ*0*u , þo˜†**{bH*{cH*{dH*{eH*{fH*²( }bH}cH}dH}eH}fH*Šþ,þ, (3†**þ,**:¥M$o †*04ç#¥M$ þ,¥M$þ, (4†**¥M$þ,**0£Íþ9— ¹y7ž{fH , ( +bcXXX ¹y7ž{eH(û+bcXXX ¹y7ž{dHbcXXX ¹y7ž{cH(¾+bcXXX ¹y7ž{bH , ( +bcXXX **6(n o£†*0~ç#þ,ouM$ ,c{bH{bH(ñ ,N{cH{cH(Á+,8{dH{dH3({eH{eH(ù+,{fH{fH(ñ ******þþ*0xþ,iþ,a{bH{bH(ñ ,L{cH{cH(\+,7{dH{dH3'{eH{eH(ÿ+,{fH{fH(ñ ******þþ*0ç#uM$ ,o¦†**Ò}gH}hH}iH}jH}kH}lH(û5 *0ÿ{kHYE +8³8•8È{gH¥‘"oü5 }jH}kH{jHoï 9z{jHoý5 }hH{hHÐ (d oþ5 }iH{iH(:+-{iHŽiþ+,}kH{hH}lH*+}iH}hH8vÿÿÿ}kH{jH(;+}jH}kH}lH*0‡e {kHYE++e{kHE + ++++}kH{jH(;+}kH}lH Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{kHE + + +++***"{lH*0 {gHs¨†*V(ÿ5 }mH}nH*0 ,{mH%{nHŒ ¤(6 þ(<+*:(ÿ5 }oH*R{oH(6 þ(<+*0t}pH}qH}rH}sH}tH}uH}vH}wH }xH }yH }zH }{H }|H}}H(6 *0 '{|HYE +8Û8½8ð{rH{xH{tH(8†¥‘"oü5 }{H}|H{{Hoï 9‘{{Hoý5 }yH{yH{rH{sH{uH{vH{pH{qH{tH(;†}zH{zHŒ!,#}|H{zH{wHs6 }}H*+}zH}yH8_ÿÿÿ}|H{{H(;+}{H}|H}}H*0e {|HYE+8h{|HE + +!+ +++}|H{{H(;+}|H}}H Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{|HE + ++ +++***"{}H*0B{pH{qH{rH{sH{tH{uH{vH{wH{xHs²†*:( }~H*0,*onoss {~Hsï£ (¤(¥*(Ò1 **r( }H}€H}H*02*{H{€Hos(F{Hsû£ (¤(¥*:(6 }6 *"{6 *r( }ƒH}„H}…H*02*{ƒH{„Hos(F{…Hsû£ (¤(¥*:(6 }6 *"{6 *’( }‡H}ˆH}‰H}ŠH*08*{‰H{‡H{ˆHos(U{ŠHsû£ (¤(¥*:(6 }6 *"{6 *(6 *>ok þow5 *(Ñ *"(ƒ *(6 *>ok þow5 **o &*0@è#o 6 oë ol s~ , ( + b X, ( +a*0Né#o 6 oë ol s~ o 6 oë ol  s~  (ñ , (ñ **.sㆀŒH*( *~ŒH**u`$þ*"sä†**ua$þ*0ê# ua$,+*Zr.8ps 6 (=+o 6 *0Xë#þ,O u`$, *ta$  ¹y7ž{H(>+bcXXX ¹y7ž{H(?+bcXXX **6(n oÙ†*0ì#þ9}u^$ 9nua$,+ ua$,+ 3Fua$,<ta$ ta$ {H{H(@+, {H{Hþ(A+*****þþ*(Ó†*:(c +(Õ†*0/í#ua$,%ta$ {H  o6 ,( ***06î#ua$,,ta$ {H ov  o6 , (Ž5 ***05ï#ua$,'ta$ {H {Hsë†(B+(Õ†*(Ó†*0ƒð#þ9qþ,iua$,+ ua$,+ 3Aua$,7ta$ ta$ {H {H(C+,{H {Hþ(D+*****þþ*0ê#u^$ , þoá†**(Ò†*V(Ò†}H}H*{H*{H*:( }‘H*:( }’H*2{’H{H*2{’H{H*V(6 }“H}”H*0ˆô#(G†sy {”Hov o6 (6 ,H(6 (6 (6 s6 (6 (6 {“HoÅ oµ +¯ Þþ™"oâ &Ü &*Utjo,‡&}•H}–H*f{•Ho6 €_þþ*f{•Ho6 @_þþ*>{•HþoV *>{•Hþo6 *>{•Hþol *>{•HþoS *b{–H{•Ho 6 (I‡*b{–H{•Ho6 (‡*j{–H{•Ho6 (s‡*j{–H{•Ho6 (‹‡*n{–H{•Ho6 (Ї*j{–H{•Ho6 (€‡*n{–H{•Ho 6 (‡*j{–H{•Ho!6 (“‡*j{–H{•Ho"6 (a‡*n{–H{•Ho#6 (`‡*j{–H{•H>o$6 (‡*j{–H{•Ho$6 (‡*n{–H{•Ho%6 (‡*v{–HrNÄp{•HoW (‡*b{–H{•Ho[ (‡*f{–H{•Ho&6 (<‡*b{–H{•Ho'6 (‡*b{–H{•HoY (‡*n{–H{•Ho(6 (‡*fÐ(d {•HþoX *>{•Hþo)6 *>{•Hþo*6 *>{•HþoT *>{•HþoU *>{•Hþo+6 *>{•Hþo,6 *>{•Hþo@) *>{•Hþo-6 *>{•Hþo.6 *>{•Hþo/6 *>{•Hþo06 *>{•Hþo16 *"{•H*v{–HrzÄp{•Ho26 (‡*:, sí†**N, sí†*s‚ z0Qö#,LŒœ",+ r¨9ps‚ zŽi e$  Y  2  £/(‡¤e$ X X3â**6(Ó†(‡*Z(Ó†Ð(d (‡*"{•H*0#g ue$ , {•Ho‡þoX **>{•Hþo— *N{–H{•HoÞ†*N{–H{•Ho߆*"{–H*:o‡sí†*0+vs—‡ ($¥oE+s™‡ ($¥oE+(F+*Bo&‡þo)‡*Bo&‡þo'‡*Bo&‡þo(‡*6sƇ(+‡*0ø#sŸ‡ s¯‡*bo &}—H}˜H*>{—Hþow5 *b{˜H{—HoO3 (‡*Bo3‡þo)‡*Bo3‡þo'‡*Bo3‡þo(‡*Fo3‡þo*‡*6sȇ(+‡*bo &}™H}šH*>{™Hþoí5 *6{™Ho46 *6{™Ho56 *6{™Hoî5 *>{™Hþoï5 *v{šHr Äp{™Ho66 (‡*:, s4‡**0Qú#,LŒ",+ r¨9ps‚ zŽi i$  Y  2  £C(;‡¤i$ X X3â**"{™H*0#ü#ui$ , {™H{™Hþoè **>{™Hþo— *BoD‡þo)‡*BoD‡þo'‡*BoD‡þo(‡*FoD‡þo*‡*6sʇ(+‡*Fo &}›H*>{›Hþod *>{›Hþoë *B{›Hþo76 *:, sE‡**"{›H*0#ý#uj$ , {›H{›Hþoè **>{›Hþo— *jo,‡&}œH}H*"{H*>{œHþo86 *>{œHþo96 *>{œHþo:6 *>{œHþo;6 *>{œHþo<6 *>{œHþo=6 *>{œHþo>6 *>{œHþo?6 *>{œHþo@6 *>{œHþoA6 *>{œHþoB6 *b{H{œHoC6 (<‡*b{H{œHoD6 (‡*"{œH*0ÿ#s´‡ ($¥oG+(H+*0+$s¶‡ ($¥oI+s¸‡ ($¥oI+(J+*jo,‡&}žH}ŸH*:, s_‡**0Q$,LŒž",+ r¨9ps‚ zŽi l$  Y  2  £M(`‡¤l$ X X3â**>{žHþoE6 *>{žHþoF6 *>{žHþoG6 *>{žHþoH6 *>{žHþoI6 *v{ŸHr¼Äp{žHoJ6 (‡*"{žH*>{žHþoK6 *>{žHþoL6 *>{žHþoM6 *>{žHþoN6 *>{žHþoO6 *0#$ul$ , {žHoh‡þoè **>{žHþo— *joM‡&} H}¡H*v{¡HrÐÄp{ HoP6 (‡*:, sp‡**0Q$,LŒŸ",+ r¨9ps‚ zŽi m$  Y  2  £4(r‡¤m$ X X3â**"{ H*>{ HþoQ6 *0#$um$ , { Hot‡þoè **>{ Hþo— *jo,‡&}¢H}£H*b{£H{¢HoR6 (r‡*b{£H{¢HoS6 (r‡*>{¢HþoT6 *>{¢HþoU6 *b{£H{¢HoV6 (<‡*v{£HræÄp{¢HoW6 (‡*:, sx‡**0Q $,LŒ ",+ r¨9ps‚ zŽi n$  Y  2  £?(‡¤n$ X X3â**"{¢H*0# $un$ , {¢Ho‡þoè **>{¢Hþo— *0$sº‡ ($¥oK+(H+*0+$s¼‡ ($¥oL+s¾‡ ($¥oL+(M+*jo,‡&}¤H}¥H*b{¥H{¤HoX6 (r‡*b{¥H{¤HoY6 (r‡*v{¥HrÅp{¤HoZ6 (‡*:, s†‡**0Q$,LŒ¡",+ r¨9ps‚ zŽi o$  Y  2  £@(Ї¤o$ X X3â**"{¤H*0#$uo$ , {¤HoŒ‡þoè **>{¤Hþo— *0$sÀ‡ ($¥oN+(H+*0+$s‡ ($¥oO+sć ($¥oO+(P+*NoM‡&}¦H*:, s‘‡**0Q$,LŒ¢",+ r¨9ps‚ zŽi p$  Y  2  £E(’‡¤p$ X X3â**"{¦H*0#$up$ , {¦Ho”‡þoè **>{¦Hþo— *(N' *"o‡*(N' *"o‡*:([6 }§H*¦(\6 ow5 {§H(ñ , (]6 (^6 **:(M3 }¨H*voN3 oO3 ol {¨H(ñ *(_6 *&(K†*(`6 *0/$(I† ,(º* ,(I† ,(º* (Ž5 ***(a6 *0 $s¡‡ob6 ¥¤"(Q+þ(R+*(c6 *0>!$r"Åp(H†od6 ,((e6 (I† ,(º* um ,  (c **(f6 *0F"$r4Åp(H†od6 ,(e6 (I† , (º* (¥+-*(º* ¥’ (V *(f6 *0F"$r>Åp(H†od6 ,(e6 (I† , (º* (¥+-*(º* ¥’ (V *(g6 *0^$$oh6 s¥‡¥¥"(S+(4+oh6 s§‡¥¥"(T+(†+oh6 s©‡¥¥"(T+(†+sÝ *(i6 *0m&$Ð(d (K†,Xob6 ¥¤"(Q+ (j6 ,; (k6 (I† ,* (º* um,(j6 (j6 - (c ***b}©H}ªHo &*0,'$s£‡{©Hol6 (J†¥ª!(U+þ(V+*01'${©Hol6 {ªHÐ(d om6 ¥ª!þ(Ø+*0;'$s«‡{©Hol6 {ªHÐ(d om6 ¥ª!(U+þ(W+*0&'${©Hol6 s­‡¥ª!(X+þ(p+*(n6 *0T(${—How5 {˜H{—HoO3 (‡oô† {›Hoë {˜H{—HoO3 (‡oò†s½ *(o6 *"o\‡*(o6 *"o\‡*(p6 *0T(${—How5 {˜H{—HoO3 (‡oô† {›Hoë {˜H{—HoO3 (‡oò†s½ *(q6 *"o‡*(q6 *"o‡*(r6 *0T(${—How5 {˜H{—HoO3 (‡oô† {›Hoë {˜H{—HoO3 (‡oò†s½ *(s6 *"oŒ‡*(s6 *"oŒ‡*:(t6 }«H*R{«H{•HþoQ3 *:(t6 }¬H*R{¬H{—HþoQ3 *:(t6 }­H*R{­H{™Hþou6 *bo &}®H}¯H*b{¯H{®Hov6 (‡*"{®H*"{¯H*>{®Hþo& *NŒB,ṡ**0_)$,ZŒH,+ r¨9ps‚ zŽi Š$  Y  2,  £ùŒù¥B(ч¤Š$ X X3Ô**0#*$uŠ$ , {®H{®Hþoè **>{®Hþo— *bo &}°H}±H*b{±H{°How6 (‡*>{°Hþox6 *>{°Hþoy6 *"{°H*"{±H*NŒ ,sÕ‡**jo ‡o‡sz6 (Û‡*0Q,$,LŒ¨",+ r¨9ps‚ zŽi ‹$  Y  2  £ (Û‡¤‹$ X X3â**0#-$u‹$ , {°H{°Hþoè **>{°Hþo— *Ò}²H}³H}´H}µH}¶H}·H({6 *0¼{¶HYE + +s+f8‹{³H¥©"o|6 }µH}¶H{µHoï ,@{µHo}6 }´H}¶H{²H{¯H{´H(ч}·H*}´H+³}¶H{µH(Y+}µH}¶H}·H*0‡e {¶HYE++e{¶HE + ++++}¶H{µH(Y+}¶H}·H Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¶HE + + +++***"{·H*0 {²H{³Hsà‡*Ò}¸H}¹H}ºH}»H}¼H}½H({6 *0¼{¼HYE + +s+f8‹{¹H¥©"o|6 }»H}¼H{»Hoï ,@{»Ho}6 }ºH}¼H{¸H{¯H{ºH(ч}½H*}ºH+³}¼H{»H(Y+}»H}¼H}½H*0‡e {¼HYE++e{¼HE + ++++}¼H{»H(Y+}¼H}½H Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¼HE + + +++***"{½H*0 {¸H{¹Hsæ‡*²}¾H}¿H}ÀH}ÁH}ÂH(~6 *0¶{ÁHYE + +m+`8…{¾H¥«"o6 }ÀH}ÁH{ÀHoï ,:{ÀHo€6 }¿H}ÁH{¿H{°H(6 }ÂH*}¿H+¹}ÁH{ÀH(Z+}ÀH}ÁH}ÂH*0‡e {ÁHYE++e{ÁHE + ++++}ÁH{ÀH(Z+}ÁH}ÂH Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ÁHE + + +++***"{ÂH*0 {¾Hsì‡*:(9( }ÃH*:{ÃH(j*(² **þoò†*(J **þoð†*(J **þoó†*(º *"oõ†*(² *>{—Hþow5 *(² **þoñ†*(° *b{˜H{—HoO3 (‡*(² *>{—Hþow5 *0D}ÄH}ÅH}ÆH}ÇH}ÈH}ÉH}ÊH}ËH(• *0 {ÊHYE +8ˆ+{8Í8Î{ÇH9‹{ÇH%.¤o9 ¥7og }ÉH}ÊH{ÉHoï ,0{ÉHoh }ÈH}ÊH{ÈH}ËH*}ÈH+Ã}ÊH{ÉH(+}ÉH+}ÊH{ÄH{ÆH{ÅH([ (c†¥77*}ÊH}ËH*0”e {ÊHYE+8o{ÊHE ++$+ + +++}ÊH{ÉH(+}ÊH}ËH Þ t   Þ&8wÿÿÿþ,z*[w ê{ÊHE +++ +++****"{ËH*0 #{ÄH{ÅH{ÆH{ÇHsˆ*(² *>{—Hþow5 *(² **þoñ†*(² **þoò†*(ë) *"oö†*(J* *"o÷†*(D* *"oü†*(* *"où†*(m* *"oû†*0|}ÌH}ÍH}ÎH}ÏH}ÐH}ÑH}ÒH}ÓH }ÔH }ÕH }ÖH }×H }ØH}ÙH}ÚH(‚6 *0 ˜{ÙHYE  !'-39?+B8¼8¬8K8;8Ú8Ê8i8Y8ú8ê8{ÍH{ÎHr†<p{ÌHsˆ([+¥[oì) }ÔH}ÙH{ÔHoï ,;{ÔHoí) }ÏH}ÙH{ÏH{ÌHo\+}ÚH*}ÏH+¸ }ÙH{ÔH(+}ÔH{ÍH{ÎHrgLp{ÌHsˆ(]+¥yoL* }ÕH}ÙH{ÕHoï ,;{ÕHoM* }ÐH}ÙH{ÐH{ÌHo^+}ÚH*}ÐH+¸ }ÙH{ÕH(-+}ÕH{ÍH{ÎHrSLp{ÌHsˆ(_+¥woF* }ÖH}ÙH{ÖHoï ,;{ÖHoG* }ÑH}ÙH{ÑH{ÌHo`+}ÚH*}ÑH+¸ }ÙH{ÖH(++}ÖH{ÍH{ÎHr Jp{ÌHsˆ(a+¥o…6 }×H}ÙH{×Hoï ,;{×Ho†6 }ÒH}ÙH{ÒH{ÌHob+}ÚH*}ÒH+¸ }ÙH{×H(c+}×H{ÍH{ÎHr{Lp{ÌHsˆ(d+¥ƒon* }ØH }ÙH{ØHoï ,<{ØHoo* }ÓH }ÙH{ÓH{ÌHoe+}ÚH*}ÓH+· }ÙH{ØH(6+}ØH }ÙH}ÚH*04e {ÙH YE+8{ÙHE  !$'*-0+38£8ˆ88d+`+F+B+(+$+ +8v }ÙH{ØH(6++^ }ÙH{×H(c++F }ÙH{ÖH(+++. }ÙH{ÕH(-++ }ÙH{ÔH(+ }ÙH}ÚH Þ t   Þ&8×þÿÿþ,z*ú 0y{ÙHE  !$+$+5+0+++&+!++++ +++***********"{ÚH*0%{ÌH{ÍH{ÎHsˆ*(ˆ6 *>{—Hþow5 *(‰6 *b{˜H{—HoO3 (‡*(² **þoò†*(Ô) *"o‡‡*(Ô) *"oˆ‡*(’) *"oy‡*(’) *"oz‡*(‘) **þo{‡*(‘) **þo|‡*(¯' **þoV‡*(¯' **þoO‡*(² *>{—Hþow5 *(² **þoñ†*(² **þoò†*(Y *0z(Z ([ o‡*(Š6 *Ži*([ **þo\ *:(‹6 }ÛH*b(Ó†{ÛHoŒ6 (‡*:( }ÜH*B{ÜHþoì *:(ñ }ÝH*0®{ÝHoò sDˆ*(² **þoò†*(d **þoe *Ò(6 }ÞH}ßH}àH}áH}âH}ãH*0 ü.$s@ˆ{ßHo+ {âH(ñ 9´{áHsBˆ{ßHof+ (— + ,;{ÞH{dH,+rLÅpsz (– + sFˆ{áH{âH(+&+*{ÞH{dH,)r°Åpsê (>+sHˆ{ßHof +oì &+{ßH{àH{áH(f†(ó *{ãHsJˆr(Âp{ßHo+þ(,+*(f **þog *(6 **(² *>{—Hþow5 *(° *b{˜H{—HoO3 (‡*(² **þoñ†*(° *b{˜H{—HoO3 (‡*(í **(² *>{—Hþow5 *(6 *0n/$(Z ([ o‡ Œ®",+ r¨9ps‚ zŽi Œ" Y2$£i$(l†¤Œ"XX3Ü*(‘6 **(’6 *0”1$(“6 (”6 (•6 (–6 Œ,4u¼,(x ¥|o¡ +o& +rR9p,  (d (ñ ,  (d  * s~ (—6 *V(˜6 }äH}åH*0(z(Z ([ {åH(è+{äHo‡*(² *>{—Hþow5 *’(í }æH}çH}èH}éH*0YV{çH{çHo Yo™6 {éH(ñ -/{èHo~ {éH(_{æHsû£ (¤(+**(Y *0z(Z ([ o‡*(\ **(² *>{—Hþow5 *(^ *>{™Hþoí5 *(_ *6{™Hoî5 *(Ì *>{™Hþoï5 *(^ *0@2${šHr Äp{™Ho66 (‡ o‡ o‡, o26 +þol *(² **þoñ†*(° *b{˜H{—HoO3 (‡*(² *>{—Hþow5 *(° *b{˜H{—HoO3 (‡*(š6 *>{›Hþod *(± *"oô†*(›6 *"o‡*&s‡ˆ*r( }êH}ëH}ìH*{êH*{ëH*{ìH*&*Zr.8psœ6 (g+o6 *03$þ9yþ,q&  (y {êH{êH(R+ /*1*(y {ëH{ëH(R+ / * 1 *(y {ìH{ìHþož6 **þ,**:¥Õ$oˆ*0“4$¥Õ$ þ9s¥Õ$þ,f&  {êH{êH(R+ / * 1 *{ëH{ëH(R+/*1*{ìH{ìHþož6 **¥Õ$þ,**0d5$þ,[ &  ¹y7ž{ìHoŸ6 bcXXX ¹y7ž{ëH(Í+bcXXX ¹y7ž{êH(Í+bcXXX **6(n oˆ*0h6$þ,YuÕ$ ,M&  {êH{êH(Î+,1{ëH{ëH(Î+,{ìH {ìH þo 6 ****þþ*0[7$þ,Lþ,D&  {êH{êH(Ð+,){ëH{ëH(Ð+,{ìH{ìHþ(h+****þþ*08$uÕ$ , þo“ˆ**{íH*:( }íH*0(þ, ¹y7ž{íH(i+bcXXX **6(n o—ˆ*009$þ,!uÖ$ ,{íH{íHþ(j+**þþ*2sú s–ˆ*®þ,þ,{íH{íHþ(k+**þþ*09$uÖ$ , þo›ˆ**(J *.o‡þ*2sΆ€îH*r«p*0–:$(] 9… (] (^ % ¤oA rR9p(ñ ,+¼ r@-p(Âþþ,*ròÅp([ (\ s&‰(+rÆp([ (\ (Ÿ+þ(Ÿ+*([ *&sY‰*"{I*>s%“þ(y+*Rs'“(y+þ(è+*JrS@p(p+(` *0ÿ(=+¥7 rS@p(p+(` *0#ÿs)“(y+¥7 rS@p(p+(` *0V;$( ,C ( ( -( {I*( ( {I(l+{I(¥*rÆps\ z&sY‰*Bse“þ(þ+*:sY‰(NŒ*0J<$sg“(þ+sY‰(Ú (Û (û+ où Y (m+(n+ (]‰(PŒ*¦-(NŒ*(Ú (Û (( (]‰(PŒ*J{I(¿Ž*J{I(¿Ž*0]=$(ŠŒE93*t´% {þJ {ýJ {ÿJ  of‰s¡6 (¢6 *t³%{üJ(Ú (Û (( (]‰{Is¡6 (¢6 *0W>$(ŠŒE9U*t´% {ýJ,+ì{þJ{I( ,Ú{þJ{I ( ( -Á{ÿJ-¹( (Ô *t³%{üJ (Ô *0.?$(ŠŒE9+**t«% {ÓJ(ŠŒ3å{ÔJ(ŠŒ þ*t›%{ŽJ 8Òþÿÿ0 (æ (.‰o ‹(‘*n{I(!{I(#*n{I(!{I(#*F(+ (-*0m@$(E3bt-& {ëK{I( ,I{ëK{I ( ( -0{îK(9 ,#{îK (9 (9 -(* (¬ **0CA$(E 37t/& {óK(E3"{óKt&& {ØK(«‰3(/ **f(ŠŒ73 tÏ%{]K**0EB$(ŠŒ3:t˜% {ƒJ(ºˆ {†J {…J {„J s£6 (¤6 **f(E3 t8&{ L**0©F$(EE¬` ô9oG (E@’t-& {ëK{I( 9v{ëK{I ( ( -]{íK-U{îK(9 -H{ïK-@ ( oc“sY‰(æŽs¥6 (¦6 (®ˆs§6 +%oc“sY‰sY‰(NŒs§6 (¨6 (©6 (ª6 («6 {I(¿Žsi“(¬6 s­6 *t)&  {áK  {àK  {âK  (½ˆ  (®6    (ÁŽ (¯6 s­6 *t*&{ãK {åK {äK (½ˆ  (®6   (ÃŽ (¯6 s­6 *t(&{ÛK(E@:þÿÿ{ÜK{ÝK{ßK (¿Žs­6 *t3&{ûK{üK (¿Žs­6 *t/&{óK  8pýÿÿt8&{ L  8Wýÿÿ0H$, (°6 þo±6 **0J$, (°6 s²6 (³6 **0/L$(EE´K•ì4oG (½ˆ (®6 (J (K ( (¯6 s´6 *t8&{ L  8^ÿÿÿt)&{áK{àK {âK  (Àˆ(O ( (/ s´6 *t.&{ñK {òK so“sq“ (o+(J sµ6 (p+  (¶6 (  (·6 s´6 *t/&  {óK(EE)¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ¯þÿÿ8ªþÿÿ {óKt.&{ñK{òK  84ÿÿÿ {óKt&&  {ØK(«‰@fþÿÿ {ÙK (J ( s´6 *t&&  {ØK(«‰@2þÿÿ {ÙK +Ê03M$(Àˆ (O (/ (q+oŒŒ(4Œs¸6 *0N$sb“(Àˆ (/ þ*0 eO$(T! ss“s¹6 (r+ (Z! ([! () ,* ()  (I su“(s+(4Œ+s¹6 *0^P$oT (U (Q©sw“oº6 ¥»" Þ5t u ,#(¾sû£(¤(¥ï- Þþ*&'50bQ$oT (U (Q©sy“oº6 (t+ Þ9t u ,'(¿sû£(¤(¥(ݰ{˜^ Þþ*&'9~JN*~KN*0(}–o sY‰(NŒ*0 :‚oŒŒ(¥ oŒŒoŒŒ(¥ (Ȉ(>Œ(>Œ*0 (Ȉ(>Œ(>Œ*0 %(Ȉ(>Œ(>Œ(>Œ*0 /(Ȉ(>Œ(>Œ(>Œ(>Œ*09(Ȉ(>Œ(>Œ(>Œ(>Œ(>Œ*J(Ȉ(>Œ*0(}–o sY‰(Ú (Û *2(>Œ*0 (>Œ(>Œ*0 !(>Œ(>Œ(>Œ*0 (Òˆ(>Œ*0 #(Òˆ(>Œ(>Œ*Br,Âp(ˈ*V(Ž ( (XŒ*Bró p(ˈ*r(Ž ( ( (XŒ*ª(Ž ( ( ( ( (XŒ*0 8(Ž ( ( ( ( ( ( (XŒ*0 F  (Ž ( ( ( ( ( ( ( ( (XŒ*0·R$(ŠŒ@wtœ% {‘J(A ,c{‘J (A (A ,O(A (A (A ,I(A (A (A -'(Às(¤(¤(¥(‰(Œ*r$Âp(Ɉ*(Às(¤(¤(¥(‰(Œ*6(‰(Œ*6(‰(*0 7+rûpsY‰ {I(¿Ž(J (K ( (4Œ*0S$(ŠŒ3st«% {ÓJ(ŠŒ3]{ÓJt«% {ÓJ(²ˆ ,B(¶ {I(ƈ(ñ ,)(¶ {ÔJ{ÔJr,Âp(ˈ*(ŠŒ@ýt«%{ÓJ(ŠŒE9\(Ásû£(¤(¥*{ÓJt´%{ýJ,+Ë{ÿJ-Â{ÔJ{þJ  (\Œ*{ÓJt¶% {ÔJ {K  {K (^Œ*0T$(ŠŒE9Ž *_(àˆ*t¶% {K {K (VŒ*t¸% {K {K { K { K (ZŒ*tÌ%{TK{SK {RK  (‚Œ*t«%  {ÓJ(ŠŒ@Wÿÿÿ {ÓJt«%  {ÓJ(²ˆ  94ÿÿÿ (¶   {I(Lj(ñ 9ÿÿÿ (¶   {ÔJ  {ÔJró p(ˈ*0VU$oŒŒoŒŒ(¥ (±ˆ , (‡ (Š , (áˆ*(‡ (‰ -é(‡ (ˆ (RŒ*0V$(ŠŒE9ˆ!À (Ú (Û (( (]‰(TŒ*t´% {ÿJ-Q{þJ{I {ýJ {þJ{I (Ú (Û (û+(( (n (z+(]‰(PŒ* 8zÿÿÿt³%{üJ(Ú (Û (Û (( (n (]‰(PŒ*t¶%{K{I {K {K{I{K(Ú (Û (û+(( (n (z+(]‰(TŒ*0ÖV$(ŠŒE9_ ‘ (ˆŒ*t´% {ÿJ-A{þJ{I {ýJ {þJ{I (( (n (z+(]‰(PŒ* +£t³%{üJ(Ú (Û (( (n (]‰(PŒ*t¶%{K{I {K {K{I{K(( (n (z+(]‰(TŒ*J(È([! *>(J¥(„Œ*0‰X$sƒ“(u+ - s»6 +Z (¼6 {íM (¼6 {ìM(]5 (¼6 {ìM(^5 {ÞLoŒŒ(Œ ((½6 s»6 (¾6 (¿6 s»6 *0EY$ (¬ (Q”   (çˆ (‹ (¿6 (¾6 (ó*2s*~SN*~TN*2s*2s*2s*~UN*~VN*No?oD(¥*¾o>o?oD(¥o?oD(¥(¥*NoÀ6 o÷3 (òˆ*No‰oŠ(òˆ*Vo‡oˆ(òˆ*Vo‡oˆ(òˆ*0F[$o…oó3 r2ÆpoÁ6 -r2Æpsb“Œü&oô3 +r2ÆpoÂ6 þ(v+*:(÷ˆ}ÝM*Bs&”þ(w+*Bs(”þ(x+*0 Z\$s*” (ŠŒE9]S+¢QÀÚ’E76 Oaoç³|¬Ù5‘€™z©nïÕæ÷)Í*;5Lij**t¼%{K 8îþÿÿt½%{"K +çtÂ%{.K +Ùt¥%{¼J +Ët¤%{¸J +½t›%{ŽJ +¯t©%{ÍJ +¡tª%{ÏJ 8ÿÿÿt¶%{K 8ÿÿÿtµ%{K 8nÿÿÿtŸ%{J 8]ÿÿÿt¬%{ÖJ 8LÿÿÿtÌ%{RK 8;ÿÿÿt¾%{%K 8*ÿÿÿt¿%{(K 8ÿÿÿtÀ%{*K 8ÿÿÿt°%{îJ 8÷þÿÿtÃ%{3K 8æþÿÿtÆ%{;K 8ÕþÿÿtÇ%{>K 8ÄþÿÿtÉ%{GK 8³þÿÿt˜%{ƒJ 8¢þÿÿtº% {K {K  (ûˆ,*8pýÿÿt·%{ K{K +ÐtÍ%{YK{VK +¶tÄ%{7K{5K +œt«%{ÔJ{ÓJ 8ÿÿÿt%{•Jþ(y+*tœ%{‘J+ætž%  {™J s,” (z+þ(y+*t %  {¢J  {¡J  (Å +,* s.”({+þ(Å +*t£%{µJ {´J  (ûˆ,*8Iüÿÿt¡%{§J{¦J +Ðt¢%{®J {­J {«J(ûˆ,+ (ûˆ,*8éûÿÿt§%{ÅJ(ùˆ*t¦%{ÁJ8ºûÿÿt¨%{ÉJ {ÊJ(ûˆ,*(ùˆ*t­%{àJ {ßJ  (Å +,*8]ûÿÿt®%{âJ {äJ(ûˆ,*(ùˆ*t¯%{êJ {éJ  (ûˆ,*8ûÿÿt±%{óJ {òJ  (ûˆ,*8Ôúÿÿt²%{÷J{öJ {õJ  (ûˆ,+(ûˆ,*þ(x+*t¸%{ K{ K (ûˆ,*þ(y+*t¹%{K{K {K  (ûˆ,+ (y+,*8úÿÿt»%{K {K {K(ûˆ,+ (ûˆ,*8ÔùÿÿtÈ%{EK {DK  (ûˆ,*8¦ùÿÿ0 ^$s4”  t5'}CNþ(ûˆ*0Bo &sÃ6 }ðHsÄ6 }ñHs‰(|+}òHs ‰(}+}óH*^o‰{ñHþoÅ6 *vo‰{ðHsÆ6 þoÇ6 *0%a${óHoÈ6 {òHoÉ6 s ‰(~+ s‰(+-+Y£J+s‰(~+ Y(V (Õ   YX  ¿"   Y   2"   X£¿"¤¿" X   X3Þ ŒÂ",+ r¨9ps‚ zŽi  m  Y   2%  £¿"(Ê6 ¤m X   X3Û Þtm Þ*Af(¥,*(¥,** *:(Ë6 }ôH*>{ôHo‰*:(Ì6 }õH*’{õHs‰{õH{ñHoÍ6 þ(€+*V(Ï6 }öH}÷H*0"b$(Ê6 (Ð6 {öH{÷Ho‰*:(Ñ6 }øH*0b$(Ê6 (Ð6 {øHs‰*:(Ò6 }ùH*’{ùHs ‰{ùH{ðHoÓ6 þ(+*:(Ô6 }úH*0b$(Ê6 (Ð6 {úH(¥*:(Õ6 }ûH*:{ûH(¥*:(Ô6 }üH*0b$(Ê6 (Ð6 {üH(¥*s‰*:( }ýH*{ýH*&*Zr.8psÖ6 (‚+o×6 *08c$þ,'þ,&  (y {ýH{ýHþ(z+**þ,**B¥ã$þo‰*0Ed$¥ã$ þ,(¥ã$þ,&  {ýH{ýHþ(z+**¥ã$þ,**0.e$þ,% &  ¹y7ž{ýH(û+bcXXX **6(n o‰*06d$þ,'uã$ ,&  {ýH{ýHþ(ù+**þþ*($‰*0¨{ýH {ýH (Z+(‰*0.f${ýH (+(¡ˆ o -($‰*(è+(‰*01c$þ,"þ,&  {ýH{ýHþ(ÿ+**þþ*0g$uã$ , þo!‰***o &*nþ~ÿH/ ( +~þH*6€WN~WN&*( *"(Ø6 *.sA‰€I*( *"s;‰**uè$þ*"s>‰**ué$þ*~I**uê$þ*0h$ uê$,+ ué$,+*Zr.8psÙ6 (ƒ+oÚ6 *0±k$þ9¥  uè$- ué$-L uê$:‚tè$  ¹y7ž{Io2‰bcXXX ¹y7ž{Io2‰bcXXX *té$  ¹y7ž{I(„+bcXXX ¹y7ž{I(…+bcXXX * **6(n o2‰*0 l$þ9÷uæ$ 9è  uê$,+  ué$,+   uê$,+  ué$,+ @¥  uè$-  ué$-Q*tè$ tè$ {I{Io4‰,! {I{I8Eÿÿÿ*té$té${I{I(†+,{I{Iþ(‡+****þþ*0yn$uê$-1ué$-.tè$ {I {I o5‰o5‰(‰*($‰*té$ {I {Io‰Ži-($‰*(‰*ro‰{ñHoÅ6 (,‰*(.‰*&(*‰*0ìo$þ9Úþ9Ïuê$,+ ué$,+ uê$,+ ué$,+ @Œuè$- ué$-:*tè$ tè$ {I {Io9‰,{I {I8`ÿÿÿ*té$té${I{I(ˆ+,{I{Iþ(‰+****þþ*0h$uæ$ , þo9‰**V()‰}I}I*{I*{I*V()‰}I}I*{I*{I*()‰*:( }I*2{I{I*2{I{I*:( } I*2{ I{I*2{ I{I*:( } I*^sJ‰€ IsJ‰€ I*:( } I*~ I**(O‰þ*~ I**(O‰þ*{ I*Zr.8psÛ6 (Š+oÜ6 *01.þ, þ,{ I { I 3*Y**þ,**:¥î$oQ‰*0Bq$¥î$ þ,%¥î$þ,{ I { I 3*Y**¥î$þ,**0þ, (O‰3 * **6(n oT‰*0.q$þ,uî$ ,{ I { I þ**þþ*0*.þ,þ,{ I { I þ**þþ*0r$uî$ ,oW‰**bo &}I}I*"{I*"{I*"{I*"s^‰*V( }I}I*{I*{I*&*Zr.8psÝ6 (‹+oÞ6 *0 s${I( 9ï{I ( ( :ˆ{I( ,m{I ( ( -( ( {I(¥*( ( {I {I(l+{I(¥ (_+(¥*( {I*{I( -'( ( {I(l+{I(¥*( ( {I 8|ÿÿÿrZÆps\ z"{I*0t${I {I où o) þ*0œu${I( 9{I ( ( -( {I*( ( {I o) où 3 + où (^+{I(l+{I(¥(_+(¥*rZÆps\ z^sh‰€Ish‰€I*:( }I*~I**(m‰þ*~I**(m‰þ*{I*Zr.8psß6 (Œ+oà6 *01.þ, þ,{I {I 3*Y**þ,**:¥ò$oo‰*0Bv$¥ò$ þ,%¥ò$þ,{I {I 3*Y**¥ò$þ,**0þ, (m‰3 * **6(n or‰*0.v$þ,uò$ ,{I {I þ**þþ*0*.þ,þ,{I {I þ**þþ*0Œuò$ ,ou‰**&sx‰*r( }I}I}I*{I*{I*{I*&*Zr.8psá6 (+oâ6 *6{I{I*2s€‰€I*:( }I*~I**(«‰þ*s®‰**(«‰þ*s°‰**(«‰þ*s²‰**(«‰þ*s´‰**(«‰þ*s¶‰**(«‰þ*s¸‰**(«‰þ*sº‰**(«‰þ*s¼‰**(«‰þ*s¾‰*.(«‰ þ*sÀ‰*.(«‰ þ*s‰*.(«‰ þ*sĉ*.(«‰ þ*sƉ*.(«‰ þ*sȉ*.(«‰þ*sʉ*.(«‰þ*s̉*.(«‰þ*"sΉ*.(«‰þ*"sщ*.(«‰þ*sÔ‰*.(«‰þ*"sÖ‰*.(«‰þ*{I*Zr.8psã6 (Ž+oä6 *0~M(«‰E*t%{DI *t%{FI +ð>(€‰}3I*{3I*>(€‰}4I*{4I*>(€‰}5I*{5I*>(€‰}6I*{6I*>(€‰}7I*{7I*>(€‰}8I*{8I*>(€‰}9I*{9I*>(€‰}:I*{:I*B (€‰};I*{;I*B (€‰}I*{>I*B (€‰}?I*{?I*B(€‰}@I*{@I*B(€‰}AI*{AI*B(€‰}BI*{BI*^(€‰}CI}DI*{CI*{DI*^(€‰}EI}FI*{EI*{FI*B(€‰}GI*{GI*^(€‰}HI}II*{HI*{II*:( }JI*2{JI{3I*:( }KI*2{KI{4I*:( }LI*2{LI{5I*:( }MI*2{MI{6I*:( }NI*2{NI{7I*:( }OI*2{OI{8I*:( }PI*2{PI{9I*:( }QI*2{QI{:I*:( }RI*2{RI{;I*:( }SI*2{SI{I*:( }VI*2{VI{?I*:( }WI*2{WI{@I*:( }XI*2{XI{AI*:( }YI*2{YI{BI*:( }ZI*2{ZI{CI*2{ZI{DI*:( }[I*2{[I{EI*2{[I{FI*:( }\I*2{\I{GI*:( }]I*2{]I{HI*2{]I{II*2sŠ€_I*:( }^I*"sŠ**(Šþ*&sŠ**(Šþ*"sŠ**(Šþ*&s"Š**(Šþ*&s&Š**(Šþ*~_I**(Šþ*s*Š**(Šþ*"s,Š**(Šþ*{^I*Zr.8pså6 (+oæ6 *Z(Š}hI}iI*{hI*{iI*v(Š}jI}kI}lI*{jI*{kI*{lI*Z(Š}mI}nI*{mI*{nI*v(Š}oI}pI}qI*{oI*{pI*{qI*v(Š}rI}sI}tI*{rI*{sI*{tI*>(Š}uI*{uI*Z(Š}vI}wI*{vI*{wI*:( }xI*2{xI{hI*2{xI{iI*:( }yI*2{yI{jI*2{yI{kI*2{yI{lI*:( }zI*2{zI{mI*2{zI{nI*:( }{I*2{{I{oI*2{{I{pI*2{{I{qI*:( }|I*2{|I{rI*2{|I{sI*2{|I{tI*:( }}I*2{}I{uI*:( }~I*2{~I{vI*2{~I{wI*ŠsGŠ€€IsGŠ€IsGŠ€‚I*:( }I*~€I**(NŠþ*~I**(NŠþ*~‚I**(NŠþ*{I*Zr.8psç6 (+oè6 *01.þ, þ,{I {I 3*Y**þ,**:¥/%oPŠ*0Bw$¥/% þ,%¥/%þ,{I {I 3*Y**¥/%þ,**0.þ,% (NŠE * * **6(n oSŠ*0.w$þ,u/% ,{I {I þ**þþ*0*.þ,þ,{I {I þ**þþ*0ù!u/% ,oVŠ**^sYŠ€‡IsYŠ€ˆI*:( }†I*~‡I**(^Šþ*~ˆI**(^Šþ*{†I*Zr.8psé6 (‘+oê6 *01.þ, þ,{†I {†I 3*Y**þ,**:¥1%o`Š*0Bx$¥1% þ,%¥1%þ,{†I {†I 3*Y**¥1%þ,**0þ, (^Š3 * **6(n ocŠ*0.x$þ,u1% ,{†I {†I þ**þþ*0*.þ,þ,{†I {†I þ**þþ*0y$u1% ,ofŠ**ŠsiŠ€ŒIsiŠ€IsiŠ€ŽI*:( }‹I*~ŒI**(pŠþ*~I**(pŠþ*~ŽI**(pŠþ*{‹I*Zr.8psë6 (’+oì6 *01.þ, þ,{‹I {‹I 3*Y**þ,**:¥3%orŠ*0Bz$¥3% þ,%¥3%þ,{‹I {‹I 3*Y**¥3%þ,**0.þ,% (pŠE * * **6(n ouŠ*0.z$þ,u3% ,{‹I {‹I þ**þþ*0*.þ,þ,{‹I {‹I þ**þþ*0{$u3% ,oxŠ**Vs‹Š€’IsŒŠ€“I*( *s‰Š**u7%þ*~’I**u8%þ*~“I**u9%þ*0|$ u9%,+ u8%,+*Zr.8psí6 (“+oî6 *0S}$þ,J  u7%-u8%-.u9%-*t7%  ¹y7ž{—I(¿+bcXXX * * **6(n o„Š*0~$þ9~u5% 9ou9%,+ u8%,+ u9%,+ u8%,+ 3/u7%,%t7% t7% {—I{—Iþ(À+****þþ*0‰$þ9wþ9lu9%,+ u8%,+ u9%,+ u8%,+ 3,u7%,"t7% t7% {—I {—Iþ(Â+****þþ*0|$u5% , þo‡Š**:({Š}—I*{—I*({Š*({Š*:( }˜I*2{˜I{—I*:( }™I*:( }šI*.s Š€›I*( *sžŠ**u?%þ*~›I**u@%þ*0€$ u@%,+*Zr.8psï6 (”+oð6 *0=$þ,4 u?%,&t?%  ¹y7ž{žI(¿+bcXXX * **6(n o™Š*0r‚$þ,cu=% ,Wu@%,+ u@%,+ 3/u?%,%t?% t?% {žI{žIþ(À+****þþ*0kƒ$þ,\þ,Tu@%,+ u@%,+ 3,u?%,"t?% t?% {žI {žIþ(Â+****þþ*0€$u=% , þoœŠ**:(’Š}žI*{žI*(’Š*:( }ŸI*2{ŸI{žI*:( } I*.s³Š€¡I*( *s±Š**uE%þ*~¡I**uF%þ*0„$ uF%,+*Zr.8psñ6 (•+oò6 *0=…$þ,4 uE%,&tE%  ¹y7ž{¤I(¿+bcXXX * **6(n o¬Š*0r†$þ,cuC% ,WuF%,+ uF%,+ 3/uE%,%tE% tE% {¤I{¤Iþ(À+****þþ*0k‡$þ,\þ,TuF%,+ uF%,+ 3,uE%,"tE% tE% {¤I {¤Iþ(Â+****þþ*0„$uC% , þo¯Š**:(¥Š}¤I*{¤I*(¥Š*:( }¥I*2{¥I{¤I*:( }¦I*.sÆŠ€§I*( *sÄŠ**uK%þ*~§I**uL%þ*0ˆ$ uL%,+*Zr.8psó6 (–+oô6 *0=‰$þ,4 uK%,&tK%  ¹y7ž{ªI(¿+bcXXX * **6(n o¿Š*0rŠ$þ,cuI% ,WuL%,+ uL%,+ 3/uK%,%tK% tK% {ªI{ªIþ(À+****þþ*0k‹$þ,\þ,TuL%,+ uL%,+ 3,uK%,"tK% tK% {ªI {ªIþ(Â+****þþ*0ˆ$uI% , þoŠ**:(¸Š}ªI*{ªI*(¸Š*:( }«I*2{«I{ªI*:( }¬I*.sÙŠ€­I*( *s׊**uQ%þ*~­I**uR%þ*0Œ$ uR%,+*Zr.8psõ6 (—+oö6 *0=$þ,4 uQ%,&tQ%  ¹y7ž{°I(¿+bcXXX * **6(n oÒŠ*0rŽ$þ,cuO% ,WuR%,+ uR%,+ 3/uQ%,%tQ% tQ% {°I{°Iþ(À+****þþ*0k$þ,\þ,TuR%,+ uR%,+ 3,uQ%,"tQ% tQ% {°I {°Iþ(Â+****þþ*0Œ$uO% , þoÕŠ**:(ËŠ}°I*{°I*(ËŠ*:( }±I*2{±I{°I*:( }²I*¶sÞŠ€´IsÞŠ€µIsÞŠ€¶IsÞŠ€·I*:( }³I*sñŠ**(éŠþ*~´I**(éŠþ*~µI**(éŠþ*~¶I**(éŠþ*~·I**(éŠþ*{³I*Zr.8ps÷6 (˜+oø6 *0`$þ,W (éŠE&*.2tW%  ¹y7ž{½I(¿+bcXXX * * * * **6(n oëŠ*0_‘$þ,PuU% ,D{³I {³I 30(éŠ3%tW% tW% {½I{½Iþ(À+****þþ*f(éŠ3*(éŠ3**0X’$þ,Iþ,A{³I {³I 3-(éŠ3"tW% tW% {½I {½Iþ(Â+****þþ*0“$uU% , þoïŠ**>(ÞŠ}½I*{½I*:( }¾I*2{¾I{½I*söŠ*:( }¿I*{¿I*&*Zr.8psù6 (™+oú6 *0A•$þ,0þ,(&  (y {¿I {¿I /* þ**þ,**:¥Y%oúŠ*0L–$¥Y% þ,/¥Y%þ,"&  {¿I {¿I /* þ**¥Y%þ,**0(—$þ, &  ¹y7ž{¿IbcXXX **6(n oýŠ*00˜$þ,!uY% ,&  {¿I{¿Iþ**þþ*0,™$þ,þ,&  {¿I{¿Iþ**þþ*0š$uY% ,o‹**Šs‹€ÄIs‹€ÅIs‹€ÆI*:( }ÃI*~ÄI**( ‹þ*~ÅI**( ‹þ*~ÆI**( ‹þ*{ÃI*Zr.8psû6 (š+oü6 *01.þ, þ,{ÃI {ÃI 3*Y**þ,**:¥[%o ‹*0B›$¥[% þ,%¥[%þ,{ÃI {ÃI 3*Y**¥[%þ,**0.þ,% ( ‹E * * **6(n o‹*0.›$þ,u[% ,{ÃI {ÃI þ**þþ*0*.þ,þ,{ÃI {ÃI þ**þþ*0œ$u[% ,o‹**"s‹*V( }ÊI}ËI*{ÊI*{ËI*&*Zr.8psý6 (›+oþ6 *:( }ÌI*"s3‹**(1‹þ*"s6‹**(1‹þ*"s9‹**(1‹þ*"s<‹**(1‹þ*"s?‹**(1‹þ*"sB‹**(1‹þ*&sE‹**(1‹þ*&sI‹**(1‹þ*&sM‹**(1‹þ*&sQ‹*.(1‹ þ*&sU‹*.(1‹ þ*{ÌI*Zr.8psÿ6 (œ+o7 *Z(‹}ØI}ÙI*{ØI*{ÙI*Z(‹}ÚI}ÛI*{ÚI*{ÛI*Z(‹}ÜI}ÝI*{ÜI*{ÝI*Z(‹}ÞI}ßI*{ÞI*{ßI*Z(‹}àI}áI*{àI*{áI*Z(‹}âI}ãI*{âI*{ãI*v(‹}äI}åI}æI*{äI*{åI*{æI*v(‹}çI}èI}éI*{çI*{èI*{éI*v(‹}êI}ëI}ìI*{êI*{ëI*{ìI*z (‹}íI}îI}ïI*{íI*{îI*{ïI*z (‹}ðI}ñI}òI*{ðI*{ñI*{òI*:( }óI*2{óI{ØI*2{óI{ÙI*:( }ôI*2{ôI{ÚI*2{ôI{ÛI*:( }õI*2{õI{ÜI*2{õI{ÝI*:( }öI*2{öI{ÞI*2{öI{ßI*:( }÷I*2{÷I{àI*2{÷I{áI*:( }øI*2{øI{âI*2{øI{ãI*:( }ùI*2{ùI{äI*2{ùI{åI*2{ùI{æI*:( }úI*2{úI{çI*2{úI{èI*2{úI{éI*:( }ûI*2{ûI{êI*2{ûI{ëI*2{ûI{ìI*:( }üI*2{üI{íI*2{üI{îI*2{üI{ïI*:( }ýI*2{ýI{ðI*2{ýI{ñI*2{ýI{òI*:( }þI*s¡‹**(ž‹þ*0 s£‹**(ž‹þ*0 s«‹**(ž‹þ*"s³‹**(ž‹þ*&s¶‹**(ž‹þ*&sº‹**(ž‹þ*"s¾‹**(ž‹þ*sÁ‹**(ž‹þ*&sË**(ž‹þ*"sÇ‹*.(ž‹ þ*&sÊ‹*.(ž‹ þ*&s΋*.(ž‹ þ*"sÒ‹*.(ž‹ þ*"sÕ‹*.(ž‹ þ*&sØ‹*.(ž‹þ*{þI*Zr.8ps7 (+o7 *01$(ž‹E"0>LZhv·ÈÙ„•¦tx% {Joc‰*ty%{J *tz%{J +ðt{%{J +ât|%{!J +Ôt}%{$J +Æt~%{&J +¸t%{'J +ªt€%{*J +œt„%{4J 8‹ÿÿÿt…%{6J 8zÿÿÿt†%{9J 8iÿÿÿt%{,J 8Xÿÿÿt‚%{/J 8Gÿÿÿtƒ%{2J 86ÿÿÿ>(‹}J*{J*ö(‹}J}J}J}J}J}J}J*{J*{J*{J*{J*{J*{J*{J*ö(‹}J}J}J}J}J}J}J*{J*{J*{J*{J*{J*{J*{J*Z(‹}J}J*{J*{J*v(‹}J} J}!J*{J*{ J*{!J*v(‹}"J}#J}$J*{"J*{#J*{$J*Z(‹}%J}&J*{%J*{&J*>(‹}'J*{'J*v(‹}(J})J}*J*{(J*{)J*{*J*^ (‹}+J},J*{+J*{,J*z (‹}-J}.J}/J*{-J*{.J*{/J*z (‹}0J}1J}2J*{0J*{1J*{2J*^ (‹}3J}4J*{3J*{4J*^ (‹}5J}6J*{5J*{6J*z(‹}7J}8J}9J*{7J*{8J*{9J*:( }:J*2{:J{J*:( };J*2{;J{J*2{;J{J*2{;J{J*2{;J{J*2{;J{J*2{;J{J*2{;J{J*:( }J*2{>J{J*2{>J{ J*2{>J{!J*:( }?J*2{?J{"J*2{?J{#J*2{?J{$J*:( }@J*2{@J{%J*2{@J{&J*:( }AJ*2{AJ{'J*:( }BJ*2{BJ{(J*2{BJ{)J*2{BJ{*J*:( }CJ*2{CJ{+J*2{CJ{,J*:( }DJ*2{DJ{-J*2{DJ{.J*2{DJ{/J*:( }EJ*2{EJ{0J*2{EJ{1J*2{EJ{2J*:( }FJ*2{FJ{3J*2{FJ{4J*:( }GJ*2{GJ{5J*2{GJ{6J*:( }HJ*2{HJ{7J*2{HJ{8J*2{HJ{9J*:( }IJ**sŒ**(ŠŒþ*2s•Œ**(ŠŒþ*"s›Œ**(ŠŒþ*&sžŒ**(ŠŒþ*&s¢Œ**(ŠŒþ*&s¦Œ**(ŠŒþ**sªŒ**(ŠŒþ**s¯Œ**(ŠŒþ*:s´Œ**(ŠŒþ**s»Œ*.(ŠŒ þ*0 sÀŒ*.(ŠŒ þ*0 sÈŒ*.(ŠŒ þ*&sÐŒ*.(ŠŒ þ**sÔŒ*.(ŠŒ þ*2sÙŒ*.(ŠŒþ*2sߌ*.(ŠŒþ*2såŒ*.(ŠŒþ*"sëŒ*.(ŠŒþ*"sîŒ*.(ŠŒþ*2sñŒ*.(ŠŒþ*0 s÷Œ*.(ŠŒþ*2sÿŒ*.(ŠŒþ*0 s*.(ŠŒþ*2s *.(ŠŒþ*"s*.(ŠŒþ*2s*.(ŠŒþ*0 s*.(ŠŒþ*s$*.(ŠŒþ**s&*.(ŠŒþ*&s+*.(ŠŒþ**s/*.(ŠŒþ**s4*.(ŠŒþ**s9*.(ŠŒ þ*:s>*.(ŠŒ!þ**sE*.(ŠŒ"þ*2sJ*.(ŠŒ#þ*&sP*.(ŠŒ$þ*&sT*.(ŠŒ%þ*&sX*.(ŠŒ&þ*"s\*.(ŠŒ'þ*"s_*.(ŠŒ(þ*sb*.(ŠŒ)þ**sd*.(ŠŒ*þ**si*.(ŠŒ+þ**sn*.(ŠŒ,þ*ss*.(ŠŒ-þ*&su*.(ŠŒ.þ*&sy*.(ŠŒ/þ*0 s}*.(ŠŒ0þ*"s…*.(ŠŒ1þ*2sˆ*.(ŠŒ2þ**sŽ*.(ŠŒ3þ**s“*.(ŠŒ4þ*2s˜*.(ŠŒ5þ*"sž*.(ŠŒ6þ*"s¡*.(ŠŒ7þ*"s¤*.(ŠŒ8þ*{IJ*Zr.8ps7 (ž+o7 *0£ž$(ŠŒE9+9GUcq‚“¤Æµ×ùè ,=N_p*Å¡Öç+< øM¢³Õ÷Ä;æL]n€‘^o’£´t˜%{†J *t™%{‹J +ïtš%{J +át›%{J +Ótœ%{“J +Åt%{–J +·tž%{šJ +©tŸ%{žJ +›t %{¤J 8Šÿÿÿt¡%{¨J 8yÿÿÿt¢%{¯J 8hÿÿÿt£%{¶J 8Wÿÿÿt¥%{½J 8Fÿÿÿt¤%{¹J 85ÿÿÿt¦%{ÂJ 8$ÿÿÿt¨%{ÌJ 8ÿÿÿt§%{ÇJ 8ÿÿÿt©%{ÎJ 8ñþÿÿtª%{ÐJ 8àþÿÿt«%{ÕJ 8Ïþÿÿt¬%{ÜJ 8¾þÿÿt­%{áJ 8­þÿÿt®%{æJ 8œþÿÿt¯%{ëJ 8‹þÿÿt±%{ôJ 8zþÿÿtÎ%{\K 8iþÿÿtÏ%{^K 8XþÿÿtÐ%{`K 8Gþÿÿt²%{ûJ 86þÿÿt´%{K 8%þÿÿtµ%{K 8þÿÿtº%{K 8þÿÿt¸%{K 8òýÿÿt¹%{K 8áýÿÿt¶%{K 8Ðýÿÿt·%{ K 8¿ýÿÿt»%{K 8®ýÿÿtÌ%{UK 8ýÿÿtÍ%{ZK 8ŒýÿÿtÊ%{MK 8{ýÿÿtË%{QK 8jýÿÿt¼%{!K 8Yýÿÿt½%{$K 8HýÿÿtÂ%{0K 87ýÿÿt¾%{'K 8&ýÿÿtÄ%{8K 8ýÿÿt¿%{)K 8ýÿÿtÀ%{+K 8óüÿÿtÁ%{,K 8âüÿÿt°%{ïJ 8ÑüÿÿtÃ%{4K 8ÀüÿÿtÅ%{9K 8¯üÿÿtÆ%{K}?K*{=K*{>K*{?K*ú0(Œ}@K}AK}BK}CK}DK}EK}FK*{@K*{AK*{BK*{CK*{DK*{EK*{FK*^1(Œ}GK}HK*{GK*{HK*º2(Œ}IK}JK}KK}LK}MK*{IK*{JK*{KK*{LK*{MK*š3(Œ}NK}OK}PK}QK*{NK*{OK*{PK*{QK*š4(Œ}RK}SK}TK}UK*{RK*{SK*{TK*{UK*º5(Œ}VK}WK}XK}YK}ZK*{VK*{WK*{XK*{YK*{ZK*^6(Œ}[K}\K*{[K*{\K*^7(Œ}]K}^K*{]K*{^K*^8(Œ}_K}`K*{_K*{`K*:( }aK*2{aK{ƒJ*2{aK{„J*2{aK{…J*2{aK{†J*:( }bK*2{bK{‡J*2{bK{ˆJ*2{bK{‰J*2{bK{ŠJ*2{bK{‹J*:( }cK*2{cK{ŒJ*2{cK{J*:( }dK*2{dK{ŽJ*2{dK{J*2{dK{J*:( }eK*2{eK{‘J*2{eK{’J*2{eK{“J*:( }fK*2{fK{”J*2{fK{•J*2{fK{–J*:( }gK*2{gK{—J*2{gK{˜J*2{gK{™J*2{gK{šJ*:( }hK*2{hK{›J*2{hK{œJ*2{hK{J*2{hK{žJ*:( }iK*2{iK{ŸJ*2{iK{ J*2{iK{¡J*2{iK{¢J*2{iK{£J*2{iK{¤J*:( }jK*2{jK{¥J*2{jK{¦J*2{jK{§J*2{jK{¨J*:( }kK*2{kK{©J*2{kK{ªJ*2{kK{«J*2{kK{¬J*2{kK{­J*2{kK{®J*2{kK{¯J*:( }lK*2{lK{°J*2{lK{±J*2{lK{²J*2{lK{³J*2{lK{´J*2{lK{µJ*2{lK{¶J*:( }mK*2{mK{·J*2{mK{¸J*2{mK{¹J*:( }nK*2{nK{ºJ*2{nK{»J*2{nK{¼J*2{nK{½J*:( }oK*2{oK{¾J*2{oK{¿J*2{oK{ÀJ*2{oK{ÁJ*2{oK{ÂJ*:( }pK*2{pK{ÃJ*2{pK{ÄJ*2{pK{ÅJ*2{pK{ÆJ*2{pK{ÇJ*:( }qK*2{qK{ÈJ*2{qK{ÉJ*2{qK{ÊJ*2{qK{ËJ*2{qK{ÌJ*:( }rK*2{rK{ÍJ*2{rK{ÎJ*:( }sK*2{sK{ÏJ*2{sK{ÐJ*:( }tK*2{tK{ÑJ*2{tK{ÒJ*2{tK{ÓJ*2{tK{ÔJ*2{tK{ÕJ*:( }uK*2{uK{ÖJ*2{uK{×J*2{uK{ØJ*2{uK{ÙJ*2{uK{ÚJ*2{uK{ÛJ*2{uK{ÜJ*:( }vK*2{vK{ÝJ*2{vK{ÞJ*2{vK{ßJ*2{vK{àJ*2{vK{áJ*:( }wK*2{wK{âJ*2{wK{ãJ*2{wK{äJ*2{wK{åJ*2{wK{æJ*2{wK{çJ*2{wK{èJ*:( }xK*2{xK{éJ*2{xK{êJ*2{xK{ëJ*2{xK{ìJ*2{xK{íJ*:( }yK*2{yK{îJ*2{yK{ïJ*:( }zK*2{zK{ðJ*2{zK{ñJ*2{zK{òJ*2{zK{óJ*2{zK{ôJ*:( }{K*2{{K{õJ*2{{K{öJ*2{{K{÷J*2{{K{øJ*2{{K{ùJ*2{{K{úJ*2{{K{ûJ*:( }|K*2{|K{üJ*:( }}K*2{}K{ýJ*2{}K{þJ*2{}K{ÿJ*2{}K{K*:( }~K*2{~K{K*2{~K{K*2{~K{K*:( }K*2{K{K*2{K{K*2{K{K*2{K{K*:( }€K*2{€K{K*2{€K{ K*2{€K{ K*2{€K{ K*:( }K*2{K{ K*2{K{ K*2{K{K*2{K{K*:( }‚K*2{‚K{K*2{‚K{K*2{‚K{K*2{‚K{K*2{‚K{K*2{‚K{K*:( }ƒK*2{ƒK{K*2{ƒK{K*2{ƒK{K*2{ƒK{K*:( }„K*2{„K{K*2{„K{K*2{„K{K*2{„K{K*2{„K{K*:( }…K*2{…K{K*2{…K{ K*2{…K{!K*:( }†K*2{†K{"K*2{†K{#K*2{†K{$K*:( }‡K*2{‡K{%K*2{‡K{&K*2{‡K{'K*:( }ˆK*2{ˆK{(K*2{ˆK{)K*:( }‰K*2{‰K{*K*2{‰K{+K*:( }ŠK*2{ŠK{,K*:( }‹K*2{‹K{-K*2{‹K{.K*2{‹K{/K*2{‹K{0K*:( }ŒK*2{ŒK{1K*2{ŒK{2K*2{ŒK{3K*2{ŒK{4K*:( }K*2{K{5K*2{K{6K*2{K{7K*2{K{8K*:( }ŽK*2{ŽK{9K*:( }K*2{K{:K*2{K{;K*2{K{K*2{K{?K*:( }‘K*2{‘K{@K*2{‘K{AK*2{‘K{BK*2{‘K{CK*2{‘K{DK*2{‘K{EK*2{‘K{FK*:( }’K*2{’K{GK*2{’K{HK*:( }“K*2{“K{IK*2{“K{JK*2{“K{KK*2{“K{LK*2{“K{MK*:( }”K*2{”K{NK*2{”K{OK*2{”K{PK*2{”K{QK*:( }•K*2{•K{RK*2{•K{SK*2{•K{TK*2{•K{UK*:( }–K*2{–K{VK*2{–K{WK*2{–K{XK*2{–K{YK*2{–K{ZK*:( }—K*2{—K{[K*2{—K{\K*:( }˜K*2{˜K{]K*2{˜K{^K*:( }™K*2{™K{_K*2{™K{`K*( *:sÇŽ**u &þ*&sÎŽ**u &þ*&sÒŽ**u&þ*0…" u&,+ u &,+*Zr.8ps7 (Ÿ+o7 *Ò(¾Ž}K}žK}ŸK} K}¡K}¢K*{K*{žK*{ŸK*{ K*{¡K*{¢K*r(¾Ž}£K}¤K}¥K*{£K*{¤K*{¥K*r(¾Ž}¦K}§K}¨K*{¦K*{§K*{¨K*:( }©K*2{©K{K*2{©K{žK*2{©K{ŸK*2{©K{ K*2{©K{¡K*2{©K{¢K*:( }ªK*2{ªK{£K*2{ªK{¤K*2{ªK{¥K*:( }«K*2{«K{¦K*2{«K{§K*2{«K{¨K*( *sìŽ**u&þ*sîŽ**u&þ*0¢$ u&,+*Zr.8ps7 ( +o7 *:(åŽ}®K*{®K*:(åŽ}¯K*{¯K*:( }°K*2{°K{®K*:( }±K*2{±K{¯K*( *&sûŽ**u&þ*"sÿŽ**u&þ*0q" u&,+*Zr.8ps 7 (¡+o 7 *r(ôŽ}´K}µK}¶K*{´K*{µK*{¶K*V(ôŽ}·K}¸K*{·K*{¸K*:( }¹K*2{¹K{´K*2{¹K{µK*2{¹K{¶K*:( }ºK*2{ºK{·K*2{ºK{¸K*( *"s**u &þ*&s**u!&þ*0£$ u!&,+*Zr.8ps 7 (¢+o 7 *V( }½K}¾K*{½K*{¾K*r( }¿K}ÀK}ÁK*{¿K*{ÀK*{ÁK*:( }ÂK*2{ÂK{½K*2{ÂK{¾K*:( }ÃK*2{ÃK{¿K*2{ÃK{ÀK*2{ÃK{ÁK*:( }ÄK*"sH**(Eþ*sK**(Eþ*2sM**(Eþ*&sS**(Eþ*&sW**(Eþ*&s[**(Eþ*"s_**(Eþ*:sb**(Eþ*"si**(Eþ*"sl*.(E þ*&so*.(E þ*"ss*.(E þ*sv*.(E þ*"sx*.(E þ*"s{*.(Eþ*"s~*.(Eþ*&s*.(Eþ*2s…*.(Eþ*"s‹*.(Eþ*{ÄK*Zr.8ps 7 (£+o7 *0ƒM(EEq‚+9Gc U“µùÆ×¤èt&&{ÙK *t'&{ÚK +ït(&{ßK +át+&{èK +Ót,&{êK +Åt-&{ðK +·t0&{÷K +©t.&{òK +›t)&{âK 8Šÿÿÿt*&{åK 8yÿÿÿt1&{ùK 8hÿÿÿt6&{L 8Wÿÿÿt2&{úK 8Fÿÿÿt4&{þK 85ÿÿÿt5&{L 8$ÿÿÿt7&{L 8ÿÿÿt3&{üK 8ÿÿÿt/&{ôK 8ñþÿÿt8&{ L 8àþÿÿZ(}ØK}ÙK*{ØK*{ÙK*>(}ÚK*{ÚK*¶(}ÛK}ÜK}ÝK}ÞK}ßK*{ÛK*{ÜK*{ÝK*{ÞK*{ßK*v(}àK}áK}âK*{àK*{áK*{âK*v(}ãK}äK}åK*{ãK*{äK*{åK*v(}æK}çK}èK*{æK*{çK*{èK*Z(}éK}êK*{éK*{êK*Ö(}ëK}ìK}íK}îK}ïK}ðK*{ëK*{ìK*{íK*{îK*{ïK*{ðK*Z(}ñK}òK*{ñK*{òK*^ (}óK}ôK*{óK*{ôK*z (}õK}öK}÷K*{õK*{öK*{÷K*^ (}øK}ùK*{øK*{ùK*B (}úK*{úK*^ (}ûK}üK*{ûK*{üK*^(}ýK}þK*{ýK*{þK*^(}ÿK}L*{ÿK*{L*z(}L}L}L*{L*{L*{L*º(}L}L}L}L}L*{L*{L*{L*{L*{L*^(} L} L*{ L*{ L*:( } L*2{ L{ØK*2{ L{ÙK*:( } L*2{ L{ÚK*:( } L*2{ L{ÛK*2{ L{ÜK*2{ L{ÝK*2{ L{ÞK*2{ L{ßK*:( }L*2{L{àK*2{L{áK*2{L{âK*:( }L*2{L{ãK*2{L{äK*2{L{åK*:( }L*2{L{æK*2{L{çK*2{L{èK*:( }L*2{L{éK*2{L{êK*:( }L*2{L{ëK*2{L{ìK*2{L{íK*2{L{îK*2{L{ïK*2{L{ðK*:( }L*2{L{ñK*2{L{òK*:( }L*2{L{óK*2{L{ôK*:( }L*2{L{õK*2{L{öK*2{L{÷K*:( }L*2{L{øK*2{L{ùK*:( }L*2{L{úK*:( }L*2{L{ûK*2{L{üK*:( }L*2{L{ýK*2{L{þK*:( }L*2{L{ÿK*2{L{L*:( }L*2{L{L*2{L{L*2{L{L*:( }L*2{L{L*2{L{L*2{L{L*2{L{L*2{L{L*:( }L*2{L{ L*2{L{ L*&sÕ*r( }L}L} L*{L*{L*{ L*&*Zr.8ps7 (¤+o7 *2sÜ*²( }!L}"L}#L}$L}%L*{!L*{"L*{#L*{$L*{%L*&*Zr.8ps7 (¥+o7 *04¤${"L {#L , (ô oŒŒ oŒŒ(¥*oŒŒ*0I¥${$L {"L {#L ,$ (ô oŒŒ(¥oŒŒ(¥*oŒŒ(¥*{&L*{'L*{(L*{)L*{*L*²( }&L}'L}(L})L}*L*&sí*r( }+L},L}-L*{+L*{,L*{-L*&*Zr.8ps7 (¦+o7 *0   sô*0d( }.L}/L}0L}1L}2L}3L}4L}5L }6L }7L }8L }9L*{.L*{/L*{0L*{1L*{2L*{3L*{4L*{5L*{6L*{7L*{8L*{9L*&*Zr.8ps7 (§+o7 *"{8L*0Ù"{8L {7L oŒŒ(¥*6{5LoG*&s*r( }:L};L}L*{?L*{@L*{AL*²( }=L}>L}?L}@L}AL*0|þ,s ¹y7ž{ALo(bcXXX ¹y7ž{@LbcXXX ¹y7ž{?LbcXXX ¹y7ž{>LbcXXX ¹y7ž{=LbcXXX **6(n o*0r¦$þ,cuR& ,W{=L{=L3G{>L{>L37{?L{?L3'{@L{@L3{AL {AL o*******þþ*0iþ,Zþ,R{=L{=L3B{>L{>L32{?L{?L3"{@L{@L3{AL{ALo+******þþ*0§$uR& ,o**0Cs€CLs€DLs€ELs€FLs€GLs€HL*:( }BL*~CL**(&þ*~DL**(&þ*~EL**(&þ*~FL**(&þ*~GL**(&þ*~HL**(&þ*{BL*Zr.8ps7 (©+o7 *0Fþ,= (&E  * * * * * **6(n o(*0.¨$þ,uS& ,{BL {BL þ**þþ*0*.þ,þ,{BL {BL þ**þþ*0ZuS& ,o+**:( }OL*&s:**(8þ*"s>**(8þ*"sA**(8þ*"sD**(8þ*"sG**(8þ*{OL*Zr.8ps7 (ª+o7 *v(-}UL}VL}WL*{UL*{VL*{WL*Z(-}XL}YL*{XL*{YL*Z(-}ZL}[L*{ZL*{[L*Z(-}\L}]L*{\L*{]L*Z(-}^L}_L*{^L*{_L*:( }`L*2{`L{UL*2{`L{VL*2{`L{WL*:( }aL*2{aL{XL*2{aL{YL*:( }bL*2{bL{ZL*2{bL{[L*:( }cL*2{cL{\L*2{cL{]L*:( }dL*2{dL{^L*2{dL{_L*0ps[€fLs[€gLs[€hLs[€iLs[€jLs[€kLs[€lLs[€mLs[€nL s[€oL*:( }eL*~fL**(rþ*~gL**(rþ*~hL**(rþ*~iL**(rþ*~jL**(rþ*~kL**(rþ*~lL**(rþ*~mL**(rþ*~nL**(rþ*~oL*.(r þ*"st*.(r þ*{eL*Zr.8ps7 («+o7 *^ ([}{L}|L*{{L*{|L*:( }}L*2{}L{{L*2{}L{|L*:( }~L*&sŒ**(‰þ*"s**(‰þ*&s“**(‰þ*0 s—**(‰þ*"s **(‰þ*&s£**(‰þ*s§**(‰þ*{~L*Zr.8ps7 (¬+o 7 *0ŠM(‰E+9GUtg&{ˆL *th&{ŠL +ïti&{L +átj&{•L +Ótk&{—L +Åtl&{šL +·tm&{›L +©v(z}†L}‡L}ˆL*{†L*{‡L*{ˆL*Z(z}‰L}ŠL*{‰L*{ŠL*v(z}‹L}ŒL}L*{‹L*{ŒL*{L*0E(z}ŽL}L}L}‘L}’L}“L}”L}•L*{ŽL*{L*{L*{‘L*{’L*{“L*{”L*{•L*Z(z}–L}—L*{–L*{—L*v(z}˜L}™L}šL*{˜L*{™L*{šL*>(z}›L*{›L*:( }œL*2{œL{†L*2{œL{‡L*2{œL{ˆL*:( }L*2{L{‰L*2{L{ŠL*:( }žL*2{žL{‹L*2{žL{ŒL*2{žL{L*:( }ŸL*2{ŸL{ŽL*2{ŸL{L*2{ŸL{L*2{ŸL{‘L*2{ŸL{’L*2{ŸL{“L*2{ŸL{”L*2{ŸL{•L*:( } L*2{ L{–L*2{ L{—L*:( }¡L*2{¡L{˜L*2{¡L{™L*2{¡L{šL*:( }¢L*2{¢L{›L*2sÇ*²( }£L}¤L}¥L}¦L}§L*{£L*{¤L*{¥L*{¦L*{§L*&*Zr.8ps!7 (­+o"7 *"{§L*:sÑ*Ò( }¨L}©L}ªL}«L}¬L}­L*{¨L*{©L*{ªL*{«L*{¬L*{­L*&*Zr.8ps#7 (®+o$7 *"{­L*( *sâ**uy&þ*sä**uz&þ*0©$ uz&,+*Zr.8ps%7 (¯+o&7 *:(Û}°L*{°L*:(Û}±L*{±L*:( }²L*2{²L{°L*:( }³L*2{³L{±L*( *&sò**u&þ*"sö**u€&þ*0ª$ u€&,+*Zr.8ps'7 (°+o(7 *†u€&, t€&{ºL*t&{¸L*r(ê}¶L}·L}¸L*{¶L*{·L*{¸L*V(ê}¹L}ºL*{¹L*{ºL*:( }»L*2{»L{¶L*2{»L{·L*2{»L{¸L*:( }¼L*2{¼L{¹L*2{¼L{ºL**s‘*’( }½L}¾L}¿L}ÀL*{½L*{¾L*{¿L*{ÀL*&*Zr.8ps)7 (±+o*7 *0 s ‘*0D( }ÁL}ÂL}ÃL}ÄL}ÅL}ÆL}ÇL}ÈL*{ÁL*{ÂL*{ÃL*{ÄL*{ÅL*{ÆL*{ÇL*{ÈL*&*Zr.8ps+7 (²+o,7 *0 s‘*0D( }ÉL}ÊL}ËL}ÌL}ÍL}ÎL}ÏL}ÐL*{ÉL*{ÊL*{ËL*{ÌL*{ÍL*{ÎL*{ÏL*{ÐL*&*Zr.8ps-7 (³+o.7 *"{ÐL*0   s"‘*0\( }ÑL}ÒL}ÓL}ÔL}ÕL}ÖL}×L}ØL }ÙL }ÚL }ÛL*{ÑL*{ÒL*{ÓL*{ÔL*{ÕL*{ÖL*{×L*{ØL*{ÙL*{ÚL*{ÛL*&*Zr.8ps/7 (´+o07 *6{ÒL{I*"{ÕL*"{ÔL*"s4‘*V( }ÜL}ÝL*{ÜL*{ÝL*&*Zr.8ps17 (µ+o27 *"{ÜL*&s;‘*r( }ÞL}ßL}àL*{ÞL*{ßL*{àL*&*Zr.8ps37 (¶+o47 *&sB‘*r( }áL}âL}ãL*{áL*{âL*{ãL*&*Zr.8ps57 (·+o67 *:sI‘*Ò( }äL}åL}æL}çL}èL}éL*{äL*{åL*{æL*{çL*{èL*{éL*&*Zr.8ps77 (¸+o87 *"{éL*&sT‘*r( }êL}ëL}ìL*{êL*{ëL*{ìL*&*Zr.8ps97 (¹+o:7 *( *&sb‘**uŽ&þ*"sf‘**u&þ*0«$ u&,+*Zr.8ps;7 (º+o<7 *†u&, t&{óL*tŽ&{ñL*r(Z‘}ïL}ðL}ñL*{ïL*{ðL*{ñL*V(Z‘}òL}óL*{òL*{óL*:( }ôL*2{ôL{ïL*2{ôL{ðL*2{ôL{ñL*:( }õL*2{õL{òL*2{õL{óL**sq‘*’( }öL}÷L}øL}ùL*{öL*{÷L*{øL*{ùL*&*Zr.8ps=7 (»+o>7 *"{ùL*:( }úL*"s“‘**(‘þ*"s–‘**(‘þ*2s™‘**(‘þ**sŸ‘**(‘þ**s¤‘**(‘þ*&s©‘**(‘þ*&s­‘**(‘þ*&s±‘**(‘þ*"sµ‘**(‘þ*&s¸‘*.(‘ þ*0   s¼‘*.(‘ þ*{úL*Zr.8ps?7 (¼+o@7 *0ÛM(‘E 9G+Ucq“‚t–&{ M *t›&{M +ït•&{M +át™&{M +Ót—&{M +Åt˜&{M +·tš&{M +©tœ&{M +›t&{!M 8ŠÿÿÿtŸ&{/M 8yÿÿÿtž&{$M 8hÿÿÿZ(y‘}M}M*{M*{M*Z(y‘}M} M*{M*{ M*¶(y‘} M} M} M} M}M*{ M*{ M*{ M*{ M*{M*–(y‘}M}M}M}M*{M*{M*{M*{M*–(y‘}M}M}M}M*{M*{M*{M*{M*v(y‘}M}M}M*{M*{M*{M*v(y‘}M}M}M*{M*{M*{M*v(y‘}M}M}M*{M*{M*{M*Z(y‘} M}!M*{ M*{!M*z (y‘}"M}#M}$M*{"M*{#M*{$M*0^ (y‘}%M}&M}'M}(M})M}*M}+M},M }-M }.M }/M*{%M*{&M*{'M*{(M*{)M*{*M*{+M*{,M*{-M*{.M*{/M*:( }0M*2{0M{M*2{0M{M*:( }1M*2{1M{M*2{1M{ M*:( }2M*2{2M{ M*2{2M{ M*2{2M{ M*2{2M{ M*2{2M{M*:( }3M*2{3M{M*2{3M{M*2{3M{M*2{3M{M*:( }4M*2{4M{M*2{4M{M*2{4M{M*2{4M{M*:( }5M*2{5M{M*2{5M{M*2{5M{M*:( }6M*2{6M{M*2{6M{M*2{6M{M*:( }7M*2{7M{M*2{7M{M*2{7M{M*:( }8M*2{8M{ M*2{8M{!M*:( }9M*2{9M{"M*2{9M{#M*2{9M{$M*:( }:M*2{:M{%M*2{:M{&M*2{:M{'M*2{:M{(M*2{:M{)M*2{:M{*M*2{:M{+M*2{:M{,M*2{:M{-M*2{:M{.M*2{:M{/M*:( };M*&s’**(’þ**s’**(’þ*&s’**(’þ*&s"’**(’þ*"s&’**(’þ*"s)’**(’þ*"s,’**(’þ*"s/’**(’þ*"s2’**(’þ*s5’*.(’ þ*{;M*Zr.8psA7 (½+oB7 *0ͬ$(’E +9GU‰cqt­&{HM *t®&{LM +ït¯&{OM +át°&{RM +Ót±&{TM +Åt²&{VM +·t³&{XM +©tµ&{\M +›t¶& {]M{“M 8ƒÿÿÿt´&{ZM 8rÿÿÿv(ý‘}FM}GM}HM*{FM*{GM*{HM*–(ý‘}IM}JM}KM}LM*{IM*{JM*{KM*{LM*v(ý‘}MM}NM}OM*{MM*{NM*{OM*v(ý‘}PM}QM}RM*{PM*{QM*{RM*Z(ý‘}SM}TM*{SM*{TM*Z(ý‘}UM}VM*{UM*{VM*Z(ý‘}WM}XM*{WM*{XM*Z(ý‘}YM}ZM*{YM*{ZM*Z(ý‘}[M}\M*{[M*{\M*B (ý‘}]M*{]M*:( }^M*2{^M{FM*2{^M{GM*2{^M{HM*:( }_M*2{_M{IM*2{_M{JM*2{_M{KM*2{_M{LM*:( }`M*2{`M{MM*2{`M{NM*2{`M{OM*:( }aM*2{aM{PM*2{aM{QM*2{aM{RM*:( }bM*2{bM{SM*2{bM{TM*:( }cM*2{cM{UM*2{cM{VM*:( }dM*2{dM{WM*2{dM{XM*:( }eM*2{eM{YM*2{eM{ZM*:( }fM*2{fM{[M*2{fM{\M*:( }gM*2{gM{]M*&sZ’*r( }hM}iM}jM*{hM*{iM*{jM*&*Zr.8psC7 (¾+oD7 *:( }kM*&st’**(q’þ*&sx’**(q’þ*"s|’**(q’þ*"s’**(q’þ*"s‚’**(q’þ*"s…’**(q’þ*"sˆ’**(q’þ*s‹’**(q’þ*{kM*Zr.8psE7 (¿+oF7 *0¦­$(q’E+9GjUtÄ&{vM *tÅ&{yM +ïtÆ&{{M +átÇ&{}M +ÓtÈ&{M +ÅtÉ&{M +·tË& {„M{šM +¢tÊ&{ƒM 8‘ÿÿÿv(`’}tM}uM}vM*{tM*{uM*{vM*v(`’}wM}xM}yM*{wM*{xM*{yM*Z(`’}zM}{M*{zM*{{M*Z(`’}|M}}M*{|M*{}M*Z(`’}~M}M*{~M*{M*Z(`’}€M}M*{€M*{M*Z(`’}‚M}ƒM*{‚M*{ƒM*>(`’}„M*{„M*:( }…M*2{…M{tM*2{…M{uM*2{…M{vM*:( }†M*2{†M{wM*2{†M{xM*2{†M{yM*:( }‡M*2{‡M{zM*2{‡M{{M*:( }ˆM*2{ˆM{|M*2{ˆM{}M*:( }‰M*2{‰M{~M*2{‰M{M*:( }ŠM*2{ŠM{€M*2{ŠM{M*:( }‹M*2{‹M{‚M*2{‹M{ƒM*:( }ŒM*2{ŒM{„M*0 s§’*ò( }M}ŽM}M}M}‘M}’M}“M*{M*{ŽM*{M*{M*{‘M*{’M*{“M*&*Zr.8psG7 (À+oH7 *"{“M*0 s³’*ò( }”M}•M}–M}—M}˜M}™M}šM*{”M*{•M*{–M*{—M*{˜M*{™M*{šM*&*Zr.8psI7 (Á+oJ7 *&s¾’*r( }›M}œM}M*{›M*{œM*{M*&*Zr.8psK7 (Â+oL7 *( *"sÍ’**uÙ&þ*sÐ’**uÚ&þ*:sÒ’**uÛ&þ*0l! uÛ&,+ uÚ&,+*Zr.8psM7 (Ã+oN7 *V(Ä’}¡M}¢M*{¡M*{¢M*:(Ä’}£M*{£M*Ò(Ä’}¤M}¥M}¦M}§M}¨M}©M*{¤M*{¥M*{¦M*{§M*{¨M*{©M*:( }ªM*2{ªM{¡M*2{ªM{¢M*:( }«M*2{«M{£M*:( }¬M*2{¬M{¤M*2{¬M{¥M*2{¬M{¦M*2{¬M{§M*2{¬M{¨M*2{¬M{©M*( *"sî’**uá&þ*sñ’**uâ&þ*:só’**uã&þ*0d! uã&,+ uâ&,+*Zr.8psO7 (Ä+oP7 *V(å’}°M}±M*{°M*{±M*:(å’}²M*{²M*Ò(å’}³M}´M}µM}¶M}·M}¸M*{³M*{´M*{µM*{¶M*{·M*{¸M*:( }¹M*2{¹M{°M*2{¹M{±M*:( }ºM*2{ºM{²M*:( }»M*2{»M{³M*2{»M{´M*2{»M{µM*2{»M{¶M*2{»M{·M*2{»M{¸M*( *"s “**ué&þ*"s“**uê&þ*0P! uê&,+*Zr.8psQ7 (Å+oR7 *V(“}¾M}¿M*{¾M*{¿M*V(“}ÀM}ÁM*{ÀM*{ÁM*:( }ÂM*2{ÂM{¾M*2{ÂM{¿M*:( }ÃM*2{ÃM{ÀM*2{ÃM{ÁM*"s“*V( }ÄM}ÅM*{ÄM*{ÅM*&*Zr.8psS7 (Æ+oT7 *"s “*V( }ÆM}ÇM*{ÆM*{ÇM*&*Zr.8psU7 (Ç+oV7 *(³ *"{I*(³ *"{I*(³ *"{I*"s,“*V( }ÈM}ÉM*{ÈM*{ÉM*&*Zr.8psW7 (È+oX7 *0C¯$þ,: &  ¹y7ž{ÉMbcXXX ¹y7ž{ÈM(¿+bcXXX **6(n o1“*0F°$þ,7uò& ,+&  {ÈM{ÈM(À+,{ÉM{ÉMþ***þþ*0A±$þ,2þ,*&  {ÈM{ÈM(Â+,{ÉM{ÉMþ***þþ*0²$uò& ,o4“**s7“*:( }ÊM*{ÊM*&*Zr.8psY7 (É+oZ7 *6{ÊM{I*"{ÊM*6{ÊM{I*0 s?“*ò( }ËM}ÌM}ÍM}ÎM}ÏM}ÐM}ÑM*{ËM*{ÌM*{ÍM*{ÎM*{ÏM*{ÐM*{ÑM*&*Zr.8ps[7 (Ê+o\7 *2sJ“*²( }ÒM}ÓM}ÔM}ÕM}ÖM*{ÒM*{ÓM*{ÔM*{ÕM*{ÖM*&*Zr.8ps]7 (Ë+o^7 *( *sZ“**uø&þ*s\“**uù&þ*0³$ uù&,+*Zr.8ps_7 (Ì+o`7 *0—´$uù&,Htù& {ÚM{ÖM(à -{ÚM{ÒM ("¥*{ÚM{ÖM (á {šM *tø&{ÙM{ÐM(â -{ÙM{ËM +³{ÙM{ÐM(ã {“M +·:(R“}ÙM*{ÙM*:(R“}ÚM*{ÚM*:( }ÛM*2{ÛM{ÙM*:( }ÜM*2{ÜM{ÚM*ro &}ÝMr/p}ÞM*0_# {ÝMX}ÝM{ÞM{ÝM Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( *&}ÝM*:(¬ }ßM*:{ßMsY‰*:(¬ }àM*:{àMsY‰*r(§ }áM}âM}ãM*0 =¶${áM{âM(\Š(Û (çŠ{ãM(` (a oå(8Œ*V(Ò1 }a7 }b7 *n{a7 {b7 oc7 þ(Í+*V(d7 }æM}çM*0-·$(¶6 (·6 {æM(K {çM(Î+sµ6 *(e7 *0¸$(®6 (¯6 sm“*:(f7 }èM*:{èM(½ˆ*:(g7 }éM*0@¹$(Z! ([! {éM(Àˆ (O (/  (a (q+s¹6 *V(h7 }êM}ëM*0 {ëM{êM(4Œ*(i7 *&(©*(i7 *&(©*"s|“*V( }ìM}íM*{ìM*{íM*&*Zr.8psj7 (Ï+ok7 *r(§ }îM}ïM}ðM*j{ïM{ðM{îM(~Œ*:(l7 }ñM*0n"(m7 (n7 {ñMs“*^s†“€óMs†“€ôM*:( }òM*~óM**(‹“þ*~ôM**(‹“þ*{òM*Zr.8pso7 (Ð+op7 *01.þ, þ,{òM {òM 3*Y**þ,**:¥ 'o“*0Bº$¥ ' þ,%¥ 'þ,{òM {òM 3*Y**¥ 'þ,**0þ, (‹“3 * **6(n o“*0.º$þ,u ' ,{òM {òM þ**þþ*0*.þ,þ,{òM {òM þ**þþ*0»$u ' ,o““**( *s¢“**u'þ*&s¤“**u'þ*0¼$ u',+*Zr.8psq7 (Ñ+or7 *0’½$þ9† u',&t'  ¹y7ž{ùMos7 bcXXX *t'  ¹y7ž{üM(¿+bcXXX ¹y7ž{ûMbcXXX ¹y7ž{úMos7 bcXXX **6(n oœ“*0Ú¾$þ9Èu ' 9¹  u',+   u',+ @Žu',-t' t' {ùM{ùMþo, *t't'{úM{úMo, ,){ûM{ûM3{üM{üMþ(À+*****þþ*0%¿$u',t'{úM *t'{ùM +ï0ÁÀ$þ9¯þ9¤u',+ u',+ @yu',"t' t' {ùM {ùMþ(Ò+*t't'{úM{úM(Ò+,({ûM{ûM3{üM{üMþ(Â+*****þþ*0¼$u ' , þo “**:(•“}ùM*{ùM*r(•“}úM}ûM}üM*{úM*{ûM*{üM*:( }ýM*2{ýM{ùM*:( }þM*2{þM{úM*2{þM{ûM*2{þM{üM*:( }ÿM*sÊ“**(Ç“þ*&sÌ“**(Ç“þ*"sГ**(Ç“þ*"sÓ“**(Ç“þ*"sÖ“**(Ç“þ*&sÙ“**(Ç“þ*&sÝ“**(Ç“þ*&sá“**(Ç“þ*&så“**(Ç“þ*&sé“*.(Ç“ þ*"sí“*.(Ç“ þ*sð“*.(Ç“ þ*{ÿM*Zr.8pst7 (Ó+ou7 *0òÁ$(Ç“E +U9Gcq‚“¤t'{ N *t'{ N +ït'{N +át'{N +Ót'{N +Åt'{N +·t'{N +©t'{N +›t'{N 8Šÿÿÿt'{"N 8yÿÿÿt'{%N 8hÿÿÿt ' {'NoŸ“*>(®“} N*{ N*v(®“} N}N}N*{ N*{N*{N*Z(®“}N}N*{N*{N*Z(®“}N}N*{N*{N*Z(®“}N}N*{N*{N*v(®“}N}N}N*{N*{N*{N*v(®“}N}N}N*{N*{N*{N*v(®“}N}N}N*{N*{N*{N*v(®“}N} N}!N*{N*{ N*{!N*z (®“}"N}#N}$N*{"N*{#N*{$N*^ (®“}%N}&N*{%N*{&N*B (®“}'N*{'N*:( }(N*2{(N{ N*:( })N*2{)N{ N*2{)N{N*2{)N{N*:( }*N*2{*N{N*2{*N{N*:( }+N*2{+N{N*2{+N{N*:( },N*2{,N{N*2{,N{N*:( }-N*2{-N{N*2{-N{N*2{-N{N*:( }.N*2{.N{N*2{.N{N*2{.N{N*:( }/N*2{/N{N*2{/N{N*2{/N{N*:( }0N*2{0N{N*2{0N{ N*2{0N{!N*:( }1N*2{1N{"N*2{1N{#N*2{1N{$N*:( }2N*2{2N{%N*2{2N{&N*:( }3N*2{3N{'N*V(Ÿ }4N}5N*(Ÿ *0 (  *0 (¡ *{4N*{5N*^o &dsv7 }6N*0Â$(™– {6Now7 ,{6Nox7 + r ùp( (?¥ Œ’,4u¼,(x ¥|o¡ +o& +rR9pESr|8pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( +rR9p( ( {6NXoy7 *>{6Nþoø *’o &dsz7 }7Ndsv7 }8N*0=Â$(™– {7Ns{7 o|7 ,{7Ns{7 þo}7 *{8Now7 ,{8Nox7 + r ùp( (?¥ Œ’,4u¼,(x ¥|o¡ +o& +rR9pESr|8pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( +rR9p( ( {7Ns{7 o~7 {8NXoy7 *j{8Noø {7Nþo7 *:(s }9N*0.á{"L {#L {9N(úˆ,*{9Nþ(ûˆ*:(m }:N*B{:Nþ(ûˆ*:(m };N*B{;Nþ(ûˆ*(D *0Þ(E (F (G *ò}N}?N}@N}AN}BN(€7 *0&{ANYE +8Ö8©8™8å{N}AN{>Noï 9—{>No }=N{=N{L¥ßo> }@N}AN{@Noï ,0{@No? }?N}AN{?N}BN*}?N+Ã}AN{@N(k+}@N}=N8Yÿÿÿ}AN{>N(Ø+}>N}AN}BN*0¥e {ANYE+8€{ANE ++5++++)}AN{@N(k+}AN{>N(Ø+}AN}BN Þ t   Þ&8fÿÿÿþ,z*lˆ ê{ANE +++ +++****"{BN*0 {”{ÜL(  {ÝL(3‘*0qÆ${ÝL {ÜL (× ,C (× (× -)(T (:”(! (S! (6+(† (  +rtÆps\ z(;”(† (  (3‘*RsV”{ÜLþ(ä+*"{ÞL*0‹Ç$u &-<u&-It & {K {¡K {ŸK  ,+(Ô (:‘*t &{£K+¢t&{§K{¦K(â+8uÿÿÿ0;È$u!&,t!& {¿K+æt & (æ sX”{½Kþ(ä +*0N$sb“(Àˆ (O (H”*05É$(× , (T (U -(× (× -*sZ”þ(Ö+*0+Z(& -!( (n o*, (€ (( **0@Ê$(ŠŒ3t¦% {¾J,(† *{ÀJ {ÁJ (H”(L”(  *"(L”*0Ë$, (¼6 {ìM(^5 *(=”*~QN*~RN*0Ì$,/ ( (E3( t-&{îK s\”(×++(† ,/ ( (E3( t-&{îK s^”(Ø++ (N”,j(‹ {=L,(>”(† (  +(† {AL(«+(J”  (¬+ (Ê  (3‘(ì*(M” ,+(† (¬+(J”  (3‘(ì*(7 *"{ßL*:(‚7 }DN*B{DNþ(Ù+*(ð **þo *:(! }EN*:{EN(G”*(ƒ7 *F(U -(<”**(„7 *0N$sb“(Àˆ (O (H”*(…7 *"(ˆ*6€WN~WN&*r€ p*~GN*~HN*~IN*05r€ p(°€GNr€ prœÆp( €HN(c”(°€INm(‰€þH€ÿH(}–r$Âpo €JN(}–rWpo €KN(æ (:‘€LN(:”(! (S! €MN(;”€NN(æ (:‘€ON(;”€PN(† (=”(3‘€QN(O”(ì€RN(s€SN(s€TN(± (² (A‘€UN(± (² (A‘€VN*0<Î$ u-u-t {*t{*t {+Ä0<Î$ u-u-t {*t{*t {+Ä~sN*0DÐ$u ,:t  {,+{,#{ ¥mrR9p(ñ , { **ö(i”,*(i”,*(f”(g”,+(f”(g”(ý*>Œm(û*>Œm(û*>Œm(û*>Œm(û*>(ç(j”*~tN*~uN*~vN*~wN*Šr¨Æpr¶Æps~ (¾ (¼ (ÿ*‚(i”,*(i”,*þ(Ú+*:(ã(j”*>(å(j”*>(å(j”*>(å(j”*>(å(j”*>(å(j”*Bs£”þ(u”*Bs¥”þ(u”*Bs§”þ(u”*08Ñ$(Ÿ( ,. (Ÿ( (Ù( oé1 (å(j”+Ê*0@Ò$(Ÿ( ,2 (Ÿ( (Ÿ( - (Ù( *(Ÿ( (Ù(  (”*(h”*6s©”(€”*6s«”(€”*6s­”(€”*:s¯”(€”*ærl^pŒm(ûrR^pŒm(û(ã(j”(ã(j”*zr:pŒm(û(„”(…”*0D(Ÿ( ,6 (Ÿ( (Ÿ( - (Ù( *(Ÿ( (Ù( s±”þ(ˆ+*(h”*0CÃ,. (ƒ rÕpŒm(ûo1) (å(j”*r+ÓpŒm(û*0UrÞFpŒm(ûr¸9pŒm(û(+(„”râFpŒm(û(ã(j”(ã(j”* *0GÓ${[N {ZN {YN Ži3 (x+(Û++ ¤’X (³”*0WÔ${[N {ZN {YN - rÀÆps\ zY£’þ 3Y+Y(³” sˆ7 *0MÕ${[N {ZN {YN 3*£’ £’e¤’X(³” s‰7 (Š7 *0X×$X0 Xs‹7 *(” ,, (Œ7 (7 (Œ7 (Ž7 Y+µXs‹7 *0 ËÝ$!!u -o!u:œt { { { (”(7 (7 (‘7 (’7 (ÿs‹7 80t   {  ¥mob   (Ž”8÷t  {  { {  { { {,+""u:›"u:2(”(7 (7  (‘7 (’7 X (”(‘7 (7 (7 (’7  (ã(ý XXs‹7 8t{ (”(7  (7 (‘7 (’7  YX (”(‘7 (7 (7 (’7  (ç(ýXs‹7 8_t{ (”(7  (7 (‘7 (’7 XY X>¯(‹” (”(‘7 (7 (7 (’7 (Œ”(“7 (”7  ,*  (ç(ýXs‹7 8  (å(ýXXs‹7 +U (”(‘7 (7 (7 (’7  (å(ýXXs‹7 (’7 (‘7 (7 (7 s‹7 *0%Þ$  (x+(³” (”(‘7 *0‡ß$s•7   u-B u:út { ¥mo–7 ¥mob Xs—7 þo˜7 *t {u,^{t {{ {  oÜ+¥]# (Ý+sš7 þo›7 *{{{oÜ+¥]#(Ý+sœ7 þo›7 *t{ {{   o7   oÜ+¥]#(Ý+  sž7 þo›7 *0)â$ oŸ7 s 7 (Þ+ (¡7 þo¢7 *~xN*"só”*"sù”*"s£7 *&s¤7 *>(“”þ(È+*0ã$(””(@+ *0ã$(•”(@+ *() *>(å(j”*() *>(å(j”*() *>(å(j”*() *>(å(j”*() *>(ç(j”*() *>(ç(j”*() *>(ç(j”*(þ( *zr:pŒm(û(ã(j”*(þ( *zr¸9pŒm(û(ã(j”*(þ( **:(þ( }XN*N{XN(ã(j”*() *.þ(|”*&s´”*r( }YN}ZN}[N*{YN*{ZN*{[N*&*Zr.8ps¥7 (ß+o¦7 *0«ä$þ9—þ9Œ&  (y {YN{YN/+þ /*1*(y {ZN{ZN/+þ/*1*(y {[N{[Nþ(à+**þ,**B¥O'þoº”*0¬å$¥O' þ9Œ¥O'þ9|&  {YN{YN/+þ / * 1 *{ZN{ZN/+þ/*1*{[N{[Nþ(à+**¥O'þ,**0XÞ$þ,O &  ¹y7ž{[N(á+bcXXX ¹y7ž{ZNbcXXX ¹y7ž{YNbcXXX **6(n o½”*0Væ$þ,GuO' ,;&  {YN{YN3%{ZN{ZN3{[N{[Nþ(â+****þþ*0Qç$þ,Bþ,:&  {YN{YN3${ZN{ZN3{[N{[Nþ(ã+****þþ*0è$uO' , þoÀ”**:( }§7 *J{§7 s¨7 Œj#*V(©7 }ª7 }«7 *0 ê${«7 {§7 þ(ä+*²(¬7 }­7 }®7 }¯7 }°7 }±7 *0 \ë$(²7 (³7 {­7 {­7 {®7 {±7 Xo´7 {®7 {±7 X{®7 {±7 X{°7 {¯7 þ(å+*’(¬7 }µ7 }¶7 }·7 }¸7 *0 kí$(²7 (³7 {¸7 , sl$ +{µ7 rˆ^po¹7 Xsl$ (²7 (³7 {µ7 {·7 {¶7 þ(å+*’(¬7 }º7 }»7 }¼7 }½7 *0 >î$(²7 (³7 {º7 {¼7 {½7 o¾7 {»7 sl$ þo¿7 *(À7 ***o &*([ *&(\ *j s r 8p(\ (\ **^rR9p(+(è+(` *.sÚ”€lN*( *~lN*&*Zr.8psÆ7 (æ+oÇ7 *nþ, þ,**þ,**:¥X'oÞ”*0,ð$¥X' þ,¥X'þ,**¥X'þ,**0þ, & **6(n oá”*nþ, uX',**þþ*Rþ,þ*þþ*0ð$uX' ,oä”**.s甀mN*( *~mN*&*Zr.8psÈ7 (ç+oÉ7 *nþ, þ,**þ,**:¥Y'oë”*0,ã$¥Y' þ,¥Y'þ,**¥Y'þ,**0þ, & **6(n oî”*nþ, uY',**þþ*Rþ,þ*þþ*0ã$uY' ,oñ”**F}nNo &*(Û”*>{nNo *†{nNoñ {nN s o **(è”*F}oNo &*(Û”*~{oNrDpsÏ (Ê+oì &*ò{oNr 8ps‰ (0+&{oNrDpsÏ (Ê+ s oì &**(è”*F}Ï7 o &*>{Ï7 þoÐ7 *F{Ï7 þoÑ7 *F{Ï7 þoÒ7 *0–ñ$r¨Æp(ñ 9„(Ó7 9y (Ô7 (™ r¶Æp(ñ ,`(Ó7 (Ó7 -S(Ô7 (š ,${Ï7 rèÆps (ñ+o þoÑ7 *{Ï7 rÇps (+þoÑ7 **B{Ï7 þoÕ7 *b}×7 }Ø7 o &*ž{Ø7 {Ø7 oÐ7  {×7 s þoÑ7 *F{Ø7 þoÑ7 *b{Ø7 {×7 XþoÒ7 *0 {Ø7 þoÖ7 *B{Ø7 þoÕ7 *0JrR9pŒm(û€sNs›”€tNs”€uNsŸ”€vNs¡”€wNsÓ”€xN*6oT (U *"(W *2*<*0Óò$( Áo#Á ,(Õ (… s+ +s, o- Þ u , oâ &Ü&Ü Þu , oâ &Ü&Ü ÞVtuâ  ,@, oÙ7 Ðâ(d (è++,    {–N{Ì^([°(ŵ*(ÿ´r:Ýpr-&p( (= {–N{Ì^(Y°(ŵ*0D{,Y{+Y(ø®3( •(Y (Z *{,Y{(Y{-Y(E°(ê+*0²ý$('¶-3Gtÿ- {o[(YµE <(qµ(Y (Z (Z *{q[ {p[ (Sµ(¿µ(Y (Z *{q[ {p[ (Aµ(¿µ(Y (Z *ª(!•(×°(qµ(Y (Z (Z þ(+*®(!•(×°(Y (Z ("•(+þ(+*0qÿ$(• (•oÛ7 {Y (•oà7 ,(Ÿµ(Y (Z *(•oá7 ,K{,Y{(Y{-Y(E° (#µr€Çp(  (• (`°(Ûµ(Y (Z *(•oâ7 9ª{,Y{(Y{-Y(E° (•oã7 (H•3-(×°(Y (Z {–N{Ì^(= (> sä7 +(Y (= sä7 (å7 (æ7 oí®(Ç+(’+(]°(ϵ(Y (Z þ(+*oí®(Ç+(]°(ϵ(Y (Z *0 C%(• (•oÛ7 {Y (}° (•oà7 ,<(Ÿ´(Ù´(©µ(»µ(Y (Z (Z (¯+s†·(‘·*,(Wµ+(Uµ (¿µ,+ (•oâ7 ,(Y (Z +(• (V (^ (Ó°(Z (¯+s†·(‘·(Ÿ´(Ù´(©µ(»µ(Y (Z (Z  (¯+s†·(‘·(ç7 (è7 (è7 (v°*0 °%(• (•oÛ7 {Y (}° (•oà7 ,(Uµ+(Wµ(¿µ(Ó°(Y (Z ,+ (•oâ7 ,(Y (Z +(•(+(¯+s†·(‘·*&sé7 *0 Ö %('¶`@¶ t(. (Õ®{·[o² 9™ {·[ (Ö®o³ (ˆ¯E ýo?{°F(Y (Z sÞ­*tG- {oY {pY(•{Y{,Y{(Y{-Y(E°{,Y{+Y(ø®E¥(•oà7 ,(Ÿµ(Y (Z 8Ò{YŽi-:(ÿ´r:Ýp( (= (•([°(ŵ(Y (Z 8(ÿ´(•oí®(Ç+(•([°(ŵ(Y (Z +R(•oá7 ,7(ÿ´r:Ýp( (= (•([°(ŵ(Y (Z + (%•sÞ­*tD-  {hY {fY {gY  (•(•oÛ7 {Y£%- ( µ(#µ oä® oâ®(`°(åµ(Y (Z sÞ­*t@-  {ZY {XY {YY  {WY   (•(Y (Z sÞ­*tF-{nY{mY {,Y{+Y(ø®E°‘{,Y{)Y(ë+(•oã7 (H•EƒY/ (•(Ÿµ(uµ(Y (Z (Z (Z sÞ­*{,Y{(Y{-Y(E°(ê+sÞ­*(£µ(Ÿ´(Ù´(©µ(Y (Z (Z sÞ­*{,Y{(Y{-Y(E°sæ·o0½(}° (&• s“•(ì+sê7 (í+(ë7 (ì7   (V (^ (Õ° (»µ(Y (Z (Z (¯+s†·(‘·(ç7 (è7 (è7 (v°sß­* :hþÿÿ( •(Y (Z sÞ­* :Iþÿÿ+ßtC-{dY{eY{cY (•(•oÛ7 (•oà7 9­ 9›(}°  (V (^ (¡µ(Uµ (¿µ(Y (Z (Z (¯+s†·(‘·{–Nr’Çp(ß°(ѵ(Y (Z (Z  (¯+s†·(‘·(ç7 (è7 (è7 (v°sß­*(Y sÞ­*(•oí7 , (Y sÞ­*(ëµ(Y (Z sÞ­*tB-{aY{bY {_Y{`Y{^Y (•(•oÛ7 {Y(•oà7 ,(Wµ (¿µ(Y (Z sÞ­*(•oî7 ,(Uµ (¿µ(Y (Z sÞ­*(•oã7 (H•EY;(»µ(Y (Z sÞ­* (Uµ (¿µ(•sÞ­*(Uµ (¿µ($•sÞ­*E 9rÜMps\ z (•(Wµ (¿µ(Y (Z (Z sÞ­* (•(Uµ (¿µ(Y (Z (Z sÞ­*tA-{\Y{]Y{[Y (•(•oÛ7 {Y(•oà7 ,(Ÿµ(qµ(Y (Z (Z sÞ­*(•oî7 ,(Ÿµ(uµ(Y (Z (Z sÞ­*(•oã7 (H•ET,(×°(Y (Z sÞ­* (•sÞ­*{,Y{(Y{-Y(E°(î+sÞ­*E :rÜMps\ z (•(Ÿµ(qµ(Y (Z (Z (Z sÞ­* (•(Ÿµ(uµ(Y (Z (Z (Z sÞ­*tE-{jY{lY{kY{iY {,Y{(Y{-Y(E°(•oã7 (H•E/¤÷sæ·o0½(}° (ï+(¬+(ð+(ï+sï7 (ð7 (ñ7   ( ( (ñ+ s•• sò7 (ò+(ó7 (ô7 (V (^ (Õ°(»µ(Y (Z (Z (¯+s†·(‘·(ç7 (è7 (è7 (v°sß­*sõ7 ¥Úo­   oï ,! o® ( ( o +Ö!Þ u "", "oâ &Ü&Ü!&(ó+{,Y{)Y(ë+(ô+#(!•#s¨ (Áµ(Y (Z (+sÞ­*(^ -!(£µ(»µ(Y (Z (Z sÞ­*(_ ( E rÊÇps\ z(^ (^ -ç(_ (  (£µ (»µ(Y (Z (Z sÞ­*rYÈps\ z(Y (Z sÞ­*– /Å 0W%{'\oö7 s/½ s™•{(\(Ù­ {$\{%\X{&\{'\o1½(õ+{)\sí·*0¢{«]{¬]{­]{®]{¯]{°]s›•{±](í{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*b('±(̱(ɱ*0 ((±(̱(ɱ*0 y{–Noã®(•o;³(Õ²r:Ýpoã®(•( (= oâ®(P°(Á (´²oâ®(= (°oá®{æ]sÚº(ȱ*0s%Œ~#,+ r¨9ps‚ zŽi ç.  Y  2"  £%-(.•¤ç. X X3Þ(ö+s•(‹+s÷7 *0—{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Ys º*0%oä® oâ® (c (±*0®%oä® oâ® {–Nr:Ýpoã®( (ü·(X oâ®(a°sº(&°(Ѱ( µ(#µròÈp(`°(ݵ( µ(#µ(`°(ݵ(Y (Z (Z (Z (ƒ°( ±(±(+•(DZ*0 m{–Noã®o;³(Õ²r:Ýpoã®( (= oâ®(P°(Á (´²oâ®(= (°oá®{æ]sÚº(ȱ*0Â%o9³o³rüÈp( o9³o ³ o9³o³  (ô²o=³(E° {–NròÈp(ð·(,•(ø7 (ù7 {–N(ü·r[ñp(c (±(X (M (&°s¥•(Ù+(ƒ°( ±( ±(DZŒ~#,+ r¨9ps‚ zŽiâ. Y   2(  £%-(2•¤â. X   X3Ø(÷+Œ~#,+ r¨9ps‚ zŽiç.  Y   2&   £%-(3•¤ç. X   X3Ú (ö+ (ð·(c»{^{–N{˜^(= (P (Q (ë+(š°(t+(*±(—° (í+(2±(0±(a°(=»(E±  {^ {^ {^ {^ {^ { ^ {!^ {"^ {#^ {%^ {&^ {'^ {(^ {)^ {*^ {+^ {,^ {-^ {.^ {/^ {0^ {1^s³»(‹ (Z {–N(Á±(X (Y {†Y(²+sú7 *0r%oä® oâ® {–N(ð·(,• {Ú]{Û]{Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{æ]sïº*0 "%sû7 {‰Y  {Y  {Y (• oÛ7 {„Y(ô®(n oÿ®þ{„Y(ø®E½½½ {YŽi-(• oü7 +9“r:Ýp(  {–N {‚Y(X (a°sº(&° Ži(#µr€Çp(  (•   (`°(Ûµ(Y (Z (ƒ°( ±(±(+•(DZ(P (Q +(P +(P {„Y(ø®E•{‡YŽi0(P (# sý7 8O(•oþ7 ,(P (# sý7 8-{–Nr:Ýpr=&p( ( {ƒY(X {–N{Â^(a°sº(&°(Ѱ(x¯(Ô®oì (%¶(Y (Z (Z (ƒ°( ±(±(+•(DZ(P (Q {–N{–Nr=&p( o;³(Õ²r:Ýpr=&p( ( (= {–N{Â^(P°(Á (´²{–N{Â^(= (°(a°sÚº(ȱ(˱(# (' sý7   (ÿ7  (8  {YŽi:ã {–Nr:Ýp( {ƒY(X (a°sº(&° Ži(%•(ƒ°( ±(±(+•(DZ(0•{–N{–No;³(Ö²r:Ýp( (= (P°(Á (¸²(= (°(a°sÚº(ȱ(˱(P (Q (# (' sý7 8ñ {–N(•{ƒY Œ~#,+ r¨9ps‚ z ŽiÌ. Y2$ £%-(1•¤Ì.XX3Ü (ø+(a°sº(&° Žis£• (ù+(+(%•(+(ƒ°( ±(±(+•(DZ(0•(P (Q (# sý7 (ÿ7 (8 (ë+(ì+sý7 +(P (# sý7   (ÿ7  (8 (• o8 ,(‹ (‹ (8 s8 8µ(• o8 ,(‹ (‹ (8 s8 8Œ(• oü7 9©{–Nr€Çp( (ð·(-•  {Ú] {Û] {Ü] {Ý] {Þ] {ß] {à] {á] {â] {ã] {ä] {æ]sïº!(• oí7 " !"s8 (8 (8 +(8 (• o8 ,(‹ (‹ s8 8‹{…Y-(‹ (X sú7 + (4•$$( 8 %$( 8 & Œ~#,+ r¨9ps‚ z Žié.(Y2'( £%-(5•¤é.XX3Ù((ú+'{‚Y{„Y (/•))( 8 )( 8 {–Ns«•(Ù+s±•'(û+{,Y{+Y(ò®(n oÿ®,(ð·+{‚Y(D±(DZo9³o³ {YŽi- {„Y(ò®(n oÿ®+,(ð·+{‚Y(c»{^(= (P (Q (ë+(š°'(t+(*±(—°(í+(2±(0±%(b°(=»(E±**{^*{^*{^*{^*{^*{ ^{!^*{"^*{#^*{%^*{&^*{'^*{(^*{)^*{*^*{+^*{,^*{-^*{.^*{/^*{0^*{1^s³»(‹ (Z &s8 ##( 8 #(8 s8 (8 (8 (8 s8 *0 %% (8 (8 (8 (8 sÕ{Y(ü+(ý+ {–N{‰Y{(^,(p o9³(N +{–N{—^(N  (þ+{,Y{+Y(ò®  (n oÿ®,(ð·+{‚Y(C±(DZ{‚Y{‰Y{„Y{Y(/•  ( 8   ( 8  (P (Q  (ë+ s8 *06(8 þ,*sÍ•(Ù+{‰Y(%±*0ü)%(f²(° {^ (ß²(°(B° o;³{‡Y{ˆY{„Y(¯o=³( ¯ sû7 {„Y(ô®(n oÿ®þ s³•{‡Y(ÿ+(+sµ•(+ s·•(+ s¹•(+ s»•(+ s½•(+ s¿•(+(•o8 (H•E(O +${–Nr(Çp{Ì^sÜ7 (O (8 sÁ•{‡Y(ë+(+-(O (P (# s8 + (7•(8 (8 (8 sÅ•(é+(8 þ, (8 þ+,(} þþ+,+sË•{‡Y(+,(P +b{–N{‰Y{(^,(p o9³(N +{–N{—^(N (ð·(C±(DZ(P (Q {–N{Ì^sÓ•{‡Y(+(ú+(•oþ7 9¨{–NrxÇpr-&p( {ƒY(±(X (M (a°sº(&°(Ѱ (‚¯(Ô®oì (%¶(Y (Z (Z (ƒ°{‰Y( ±(±(+•(DZ(P (Q (# sý7 8{–Nr:Ýpr-&p( {ƒY(X (a°sº(&°(Ѱ (‚¯(Ô®oì (%¶(Y (Z (Z (ƒ°{‰Y( ±(±(+•(DZ(P (Q {–N{–Nr-&po;³(Õ²r:Ýpr-&p( (= (P°(Á (´²(= (°(a°sÚº(ȱ(˱(# (' sý7 (8 (ÿ7 s8 (8 ( 8  (!8  o"8 {‡YŽiþ!!,sÕ•(Ž++"sוsÙ•{)^$$¥Ÿ(‹+(u+(Ž+#sÛ•{0^oàº(z+%o#8 08„(»r1$p{^{‚Y(c»(»(M»(—°(= (°{–N{˜^(ã (œ°(…°(t+(*±(?±(?»(0±(4±(a°s³»($8 &(y»{^{^{^!{!^{#^{$^{%^(+&(+  (‹ (Z (x+{&^(;•''¥²(v+(x+(x+(x+(x+(•°{'^{(^-{–N{˜^(ã +{(^"   #(ë+(ë+(ë+(ë+(ë+(š°{*^{+^sÝ•( +{,^oøº(+(+(((t+(*±{-^(=»{/^ %(ì+(ì+(ì+))(í+(2±{1^s³»(8•*0-0%{^ (…»@Pt/ (Ú®{^o%8 94{^ (Û®o&8 u^-, t^-{Y(9•* t]-{ŒY(‹ (Z (x+{&^(;•sß• {)^   ¥Ÿ(‹+(Ž+(š°sá•(Ê­(ñ¯ (Ù® oV (ƒ»{^{^{^{^{ ^{!^{"^{#^{$^{%^{'^{(^{*^{+^{,^{-^{.^{/^{0^{1^s³»*{^{^{^{^{^{ ^{!^{"^{#^{$^{%^(‹ (Z (x+{&^(;•{'^{(^sã• {)^ ¥Ÿ(‹+(Ž+(š°{*^{+^{,^{-^{.^{/^{0^{1^s³»*0 2%så• ¥²(v+( +(•°*03%s• (‹ sç•(À­*6€éN~éN&*¶s?•€~Ns?•€Ns?•€€Ns?•€N*:( }}N*~~N**(H•þ*~N**(H•þ*~€N**(H•þ*~N**(H•þ*{}N*Zr.8ps'8 ( +o(8 *01.þ, þ,{}N {}N 3*Y**þ,**:¥c'oJ•*0B5%¥c' þ,%¥c'þ,{}N {}N 3*Y**¥c'þ,**06þ,- (H•E  * * * **6(n oM•*0.5%þ,uc' ,{}N {}N þ**þþ*0*.þ,þ,{}N {}N þ**þþ*06%uc' ,oP•**þo &})8 }*8 }+8 },8 }-8 }.8 }/8 *:€08 €18 *n{+8 {)8 o28 þ( +*0y7%{,8 o. ,(@•*{)8 o28 Ži3(D•*Žiþ~18 / ( +~08 /{+8 {)8 o28 ( +þ+,(B•*(F•*0{9%{)8 o28 {*8 o. ,o38 (B• (n oO•+,{+8 ( ++,{+8 s48 (++,{+8 þo58 **0,7%{)8 o28 {*8 o. ,s68 ( +**0F:%{)8 o28 {+8 o58 -s78 ( ++,{+8 s88 ( +**Þ{,8 o. ,{-8 o98 r$p(ñ +,*o:8 *0A;%{+8 o58 ,o;8 þ+,o38 (B• (n oO•þ**0G{,8 o. ,+{+8 {)8 o28 ( +,+ o<8 ,*o=8 *ro;8 -{+8 þo58 **0~¾o>8 ,+ o;8 ,{.8 þo?8 *{-8 o98 {+8 o58 ,+ {,8 o. ,rfÁp( + {/8 s@8 þoA8 *:(¿ }B8 *F{B8 o. þ*V(¿ }C8 }D8 *Z{C8 {D8 þoE8 *V(¿ }F8 }G8 *®{F8 {H8 o. -*{F8 {G8 þoE8 *:(¿ }I8 *F{I8 o. þ*(J8 *6{,Y{)Y*(K8 *6{,Y{*Y*(L8 *6{YŽiþ*(K8 *0 ÷${,Y{+Y (ô® (n oÿ®*(M8 *"{Y*(N8 *b{,Y{(Y{-Y(E°*(O8 *0,<%(P8 (Q8 {,Y{(Y(@°{-Y(E°*.su•€•N*( *~•N*&*Zr.8psR8 (+oS8 *nþ, þ,**þ,**:¥q'oy•*0,>%¥q' þ,¥q'þ,**¥q'þ,**0þ, & **6(n o|•*nþ, uq',**þþ*Rþ,þ*þþ*0>%uq' ,o•**(T8 *0@%(U8 (V8 (W8 {‡Y*(X8 *0@%(U8 (V8 (W8 {ˆY*(L8 *6{YŽiþ*(X8 *02A%(U8 (V8 (W8 {„Y (ô® (n oÿ®*(M8 *"{Y*(Y8 *0@%(U8 (V8 (W8 (v•*(Z8 *0B%([8 (\8 (v•*{–N*:( }–N*(]8 *&Ñ((³*²(^8 }—N}˜N}™N}šN}›N*0mC%(_8 (ì7 (ë7 (}° X (V (^ {—N{˜N{™N{šN{›N (&•(ç7 (è7 (è7 (v°sê7 *’(`8 }œN}N}žN}ŸN*0hD%(ô7 (ó7 (}° (V (^ {œN{N{žN{ŸN( ( (ñ+(ç7 (è7 (è7 (v°sò7 *V(a8 }b8 }c8 *0 {c8 od8 ,*{b8 *V(e8 }¢N}£N*0 {¢N{£N()•*:(f8 }¤N*:{¤N(*•*0\}¥N}¦N}§N}¨N}©N}ªN}«N}¬N }­N }®N }¯N(' *0‚{®NYE +8688K{ªN¥¥#og8 }­N}®N{­Noï 9ý{­Noh8 }«N{©N{«Noä®{«Noâ®(`°}¬N}®N{¥N{–N{¥Nr:Ýp{¨N{«Noã®(•( {¦N(X {«Noâ®(a°sº(&°(а( µ(#µ{¬N(ݵ(Y (Z (Z (ƒ°{§N( ±(±(+•(DZ}¯N*}¬N}«N8óþÿÿ}®N{­N(+}­N}®N}¯N*0‡e {®NYE++e{®NE + ++++}®N{­N(+}®N}¯N Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{®NE + + +++***"{¯N*00{¥N{¦N{§N{¨N{©N{ªNs•*(i8 *&Ñ(а*²}°N}±N}²N}³N}´N(ü *0 õ{³NYE ++)+Z+k+}8«8¬}³N(Ѱ}´N*}³N(ÿ´{°N{–N{˜^(= (]°(ŵ}´N*}³N(Ѱ}´N*}³N(а}´N*}³N( µ(#µ{²NròÈp{±N(`°(åµ}´N*}³N}´N*&}³N*0L{³NE +++++ +++ ******"{´N*0 {°N{±N{²Ns¥•*Ò}µN}¶N}·N}¸N}¹N}ºN(ü *0 6{¹NYE ++)+t8­8Ô8ñ}¹N(Ѱ}ºN*(•{¸No8 (H•E“ff}¹N(Ÿ´{¶N(Ù´(©µ}ºN*}¹N(ÿ´{·N{µN{–N{Ì^(= (> (]°(ŵ}ºN*+F}¹N(ÿ´{·N(= (]°(ŵ}ºN*+,¥+ rWps\ z&}¹N}ºN*&}¹N*0C{¹NE ++++ +++*****"{ºN*0 !{µN{¶N{·N{¸Ns«•*(j8 *N{Ú]{Û]sÜ7 *Ò(k8 }»N}¼N}½N}¾N}¿N}ÀN*09{»N{½N{¾N{¼N{½N{¾N{ÀN{¿N(6•*(l8 *0/E%(m8 (n8 (o8 (p8 (q8 (r8 *(s8 *0/E%(m8 (n8 (o8 (p8 (q8 (r8 *(l8 *0/E%(m8 (n8 (o8 (p8 (q8 (r8 *(t8 *0/E%(m8 (n8 (o8 (p8 (q8 (r8  *(t8 *00E%(m8 (n8 (o8 (p8 (q8 (r8 *(u8 *00E%(m8 (n8 (o8 (p8 (q8 (r8 *:(L8 }ÁN*N(•{ÁNo8 *(v8 *Noä®oâ®sÜ7 *0\}ÂN}ÃN}ÄN}ÅN}ÆN}ÇN}ÈN}ÉN }ÊN }ËN }ÌN( *0«{ËNYE +8_878t{ÅN{ÄN(þ+¥§#ow8 }ÊN}ËN{ÊNoï 9{ÊNox8 }ÆN{ÆN(Þ7 }ÇN{ÆN(Ý7 }ÈN{ÂN{–N{ÈN{ÇN(ð·(,•}ÉN}ËN{ÉN{Ú]{ÉN{Û]{ÉN{Ü]{ÉN{Ý]{ÉN{Þ]{ÉN{ß]{ÉN{à]{ÉN{á]{ÉN{â]{ÉN{ã]{ÉN{ä]{ÃN{ÉN{æ]sïº}ÌN*}ÉN}ÈN}ÇN}ÆN8Õþÿÿ}ËN{ÊN(+}ÊN}ËN}ÌN*0‡e {ËNYE++e{ËNE + ++++}ËN{ÊN(+}ËN}ÌN Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ËNE + + +++***"{ÌN*0&{ÂN{ÃN{ÄN{ÅNsÅ•*:(L8 }ÍN*N(•{ÍNo8 *0t}ÎN}ÏN}ÐN}ÑN}ÒN}ÓN}ÔN}ÕN }ÖN }×N }ØN }ÙN }ÚN}ÛN(ü *0‚{ÚNYE !'+*8&8.8Z8Ž8°8Ê8#{ÐN¥©#oy8 }ÙN}ÚN{ÙNoï 9Õ{ÙNoz8 }ÑN{ÑN({8 }ÒN{ÑN(|8 }ÓN{ÑN(}8 }ÔN{ÑN(~8 }ÕN{ÑN(8 }ÖN{ÕN{Ú]}×N{ÏN{×N{ÏN(`°}ØN(•{ÒNo8 (H•E+}ÚN{ÖN(= (]°(ϵ}ÛN*8{ÓN,a}ÚN(Ÿ´{ÔN(Ù´(©µ}ÛN*}ÚN{ÖN{ÎN{–N{Ì^(= (> (]°(ϵ}ÛN*+&}ÚN{ÖN(= (]°(ϵ}ÛN*}ÚN(#µ{ØN(ãµ}ÛN*}ØN}×N}ÖN}ÕN}ÔN}ÓN}ÒN}ÑN8þÿÿ}ÚN{ÙN(+}ÙN}ÚN}ÛN*0²e {ÚNYE+8{ÚNE ++6+++++++!+ +++}ÚN{ÙN(+}ÚN}ÛN Þ t   Þ&8Yÿÿÿþ,z*y• 0U{ÚNE ++!++++ +++ *******"{ÛN*0${ÎN{ÏN{ÐNsÍ•*:(€8 }ÜN*0 {Y{ÜN(¸(ü·()±*(² *0–{«]{¬]{­]{®]{¯](ð·{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*:(² }ÝN*:{ÝN(+•*:(ø }ÞN*0Í÷${ÞN{„Y (ô® (n oÿ®,@{«]rÉp(ñ ,+{«]r$p(ñ ,+{«]r0Ép(ñ +-f{ÞN{„Y (ö® (n oÿ®,@{«]rHÉp(ñ ,+{«]r\Ép(ñ ,+{«]rÕp(ñ +þ**:() }ßN*0Ÿ÷${ßN{„Y (ô® (n oÿ®,){Ï]r%$p(ñ ,+{Ï]rnÉp(ñ +-O{ßN{„Y (ö® (n oÿ®,){Ï]rWp(ñ ,+{Ï]r+Óp(ñ +þ**(8 *00F%({8 (‚8 (8 (}8 (~8 (|8 *:(² }àN*:{àN(+•*:(f8 }áN*:{áN(*•*:(² }âN*:{âN(+•*V(ƒ8 }ãN}äN*R{ãN{äN(:•*V(„8 }åN}æN*R{åN{æN(;•*0 _sf•sh•sj•sl•sn•sp•sr•s…8 €çNs•sƒ•s…•s‡•s‰•s‹•s•s†8 €èN*0­¥{^{^{^{^{^{ ^{!^{"^{#^{$^{%^{&^{'^{(^s–{)^ ¥Ÿ(‹+(Ž+(š°{*^{+^{,^{-^{.^{/^{0^{1^s³»**0_I%- (H" s‡8 *o} ,:oˆ8 (‰8 (Š8 Y(+  (‹8 (i (Œ8 s‡8 *(H" s‡8 *0-J%u--,t-- {1Y{2Ys8 *r~Éps\ z0 .L%  u6--  u5-:ê (= (= sŽ8 *t6- {?Yu6-9˜{?Yt6- {?Yu6-9F{?Yt6- {?Yu6-9å {?Yt6-{?Yu6-,t{?Yt6- {>Y{>Y{>Y{>Y {>Y {?Y (=   (= (> (> (> (> (> sŽ8 * {>Y{>Y{>Y{>Y {?Y (=  (= (> (> (> (> sŽ8 * {>Y{>Y{>Y {?Y (= (= (> (> (> sŽ8 *{>Y{>Y{?Y (= (= (> (> sŽ8 *{>Y{?Y (= (= (> sŽ8 *s–s–(+  (8 (=  (8 sŽ8 *0 .O%  u.--  u--:ê (u (X s‘8 *t.- {4Yu.-9˜{4Yt.- {4Yu.-9F{4Yt.- {4Yu.-9å {4Yt.-{4Yu.-,t{4Yt.- {3Y{3Y{3Y{3Y {3Y {4Y (u   (X (M (M (M (M (M s‘8 * {3Y{3Y{3Y{3Y {4Y (u  (X (M (M (M (M s‘8 * {3Y{3Y{3Y {4Y (u (X (M (M (M s‘8 *{3Y{3Y{4Y (u (X (M (M s‘8 *{3Y{4Y (u (X (M s‘8 *s–s–(+  (’8 (X  (“8 s‘8 *0P%3(a–r„Épr°Ép( (<°*(a– r„ÉprÌÉp( ([ (\ ròÉpX Œ’,4u¼,(x ¥|o¡ +o& +rR9p( (ô²*0RR% …-  +X(𕤅-X  2è(a–r„Épr Êp( (<°(?°( ³s–*"{íN*¦(ß²{ìN£…-(= (> (> (B°*0Aoþ (ß² 0{ìNY£…-+(ð•(= (> (’+(B°*0HS% u6--u7--*{íN*t6- {?Y {>Y(õ•(ó•*t7-{@Y*0OT% u.-- u---6t/-{5Y*t.- {4Y {3Y {n](ö•(ó•*{íN*0ªU%oþ s–(é+ Ñ((³ (= (> (’+ 3*(ß²{ìN£…- (B°r$æp(Y°s”8 * o•8 o•8 (ó•r*Êps–(+(= (> (’+ o–8 o–8 (Z°s”8 *0yW%(÷• (—8 (˜8 , (ǵ+ (ŵ(Y (Z (ý´(n oµ, (¯+s†·(‘·(r°* (»µ(°*ò(Ѱ( µ(#µ{LY{DY{FY(`°(ݵ(Y (Z (Z *0"Z%  u6--o u7-:út5- {=Y { (Ì®  (ú•(™8 (š8 (Y (›8 (Y (›8 sœ8 *t6-{?Y {>Y (ú•(™8 (š8 sæ·o0½  (Õ°(Y (Z  (Ó°(Y (Z s (  (   (›8  (›8 sœ8 *(8 (8 sœ8 *0P[%,9(ú• (™8 (š8 ¥¶#(+(+¥¶#(+s *s!–s#–(+*0 ]%(î• (ž8 (q :](Ÿ8 (q þþ9F(Ÿ8 s'–(= s 8 (+ (8 (8  (Ê+(û•( ( (d°  {íNr@Êp(= {ëN{˜^(X°(ǵ(Y (Z (+ (õ•   (ýµ(Y (Z (+ (ý´   (n oµ, (¯+s†·(‘·(r°*(}° (»µ(°(ü•(V (^ (ç7 (è7 (è7 (v°*(Ÿ8 (q :3(ž8 (q þþ9(¡8 (ž8 oþ (û•( ( u7-þ(õ• (d° (}°(»µ(°(ý´   (n oµ,6  (ø•(V (^ (ç7 (è7 (è7 (v°*(}°  (ø•(ü•(V (^ (^ (ç7 (è7 (è7 (è7 (v°*(Ÿ8 (q -M(ž8 (q -@(¡8 u7-,3(Y (ý´  (n oµ,(õ+(»µ(°*rVÊps\ z0 óa%('¶`@Ót(. (Õ®{·[o² 9¶{·[ (Ö®o³ (ˆ¯þ9o­ (ˆ¯3tH-{qY{rYs¢8 + r#Ëps\ z(£8 (¤8        (Y (ü•sß­*(Y (Z sÞ­*(Y (Z sÞ­*ò('¶/3!(ùµ(õ(Y (Z (Z sÞ­*(Y (Z sÞ­*0b%{'\oö7 s/½ {'\ - {%\+ {%\X s)–{(\(Ù­ ,(p s+– (Ù­+ {&\o1½(õ+{)\sí·*0*d%(Bº3tÖ. {‘] (+(:º**0¶e%{Á](£+{±]oTº(+ {«]{¬]{­]{®]{¯]{°](5°{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0+@{m] - r[Ëps\ z(d {n]sV¯*0bh%Œ¸#,+ r¨9ps‚ zŽi w#  Y  2-  £;-{DY{FYsÜ7 ¤w# X X3Óþ(+*Vs-–(+þ(+*0 Yj%(¥8 -o¦8 YXþo§8 * (¥8 (¨8 (©8 3 þo§8 *X+§0m%    þ( +*0o%{€Yoª8 {'\oö7 s;– {(\(Ø­ s=–(!+¥¶#(+ (±{$\{%\X{&\{'\s?–("+(õ+{)\sí·*0Áq%{(^,"{^(«8 {€Yoª8 (#++{ëN{˜^(±o¥º ($+ (ü·sA–(%+{$\{'\{%\sC–(&+¥¶#(+{(\(±( ±( ± (y»{^{^{^{^{ ^{!^{"^{#^{$^{%^{&^{'^{(^ , (p (ã +{ëN{˜^(ã {^(«8 sE–{)^¥Ÿ(‹+(Ž+(Q (š°{*^{+^(–{,^oøº(+(t+(*±{-^{.^{/^{0^{1^s³»(‹ (Z (€ s¬8 *0ar%(8°(ô• r$æp(ü·(a°sº{^(«8 {€Yoª8 (#+(:º(± (Ѱ(ÿ´(= (]°(ŵ(Y (Z (Z ($+(ð·(D± {^ {^{^(= (°{!^(»(M» (=» (y»  (—°(ã (P (Q (P (Q (ë+(š°(…°(–  (t+(*±(?± (0±(4±(a°s³»(‹ (Z (€ s¬8 *0rs%(ã r@Êp(ü·(X {ëN{˜^(a°sº{^(£+(«8 {€Yoª8 (#+(:º(± (Ѱ(ÿ´{íN(= (]°(ŵ(Y (Z (Z ($+(ð·(D± {^ {^{^(= {!^(»(M» (=» (y»  (—°{íN(ã (P (Q (P (Q (ë+(š°(…°(–  (t+(*±(?± (0±(4±(a°s³»(‹ (Z (€ s¬8 *0Òv%{Y (f² {^ (ô² {^(ß²(°(B°{~Y(_¯{^(Œ°(s¯{Y {€Yoª8 {)\ {~Y(ï•  (­8  (®8   (¯8  {^(î :F ( :ë u/-, ('+8À r©Ëpo­ Œ’,4u¼,(x ¥|o¡ +o& +rR9prÌpoé" Œ’,4u¼,(x ¥|o¡ +o& +rR9p( ( ( s\ z (ö• u/-þþ9sG– (¯((+{^r/Ìp( (f² (ô²{^r3Ìp(˜–{LYsV¯s°8 sI– ()+(±8 sK–(*+(++(,+ (_¯(Œ°(s¯o¦8 ŽiX(&°sM–(+(-+sO–(.+ot¯(ϵ(Y (Z (+(+(ƒ° sí·{Y(–+{Ysæ¯(/+ (–!{^{^{ ^{!^{"^{#^{$^{%^{&^{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³» !(–+{Ysæ¯(/+"{ëN$$sQ–"( +# #(x+(€ s¬8 8  (0+8¦ ( : (ö• u/-þþ9WsS–(¯(1+{^rµãp( (f² (ô²{^(£+r3ÌpŽiŒ’,4u¼,(x ¥|o¡ +o& +rR9p( (˜–{LYsV¯;-%¤;-(,+ (_¯(Œ°(s¯s°8 (²8 (±8 (–{^{^{ ^{!^{"^{#^{$^{%^{&^{'^{(^{)^{*^{+^{,^{-^{.^{/^{0^{1^s³» (–+{Ysæ¯(/+ {ëN$$sU– ( +"ŽiX(&°sW–(+(-+(Ѱ(Y (Z ot¯(ϵ(Y (Z (+(+(ƒ° sí·!{Y!(–+{Ysæ¯(/+##"(x+(€ s¬8 +& (2++  8Húÿÿ (³8  (´8 %(µ8 %(Œ +(¶8  *0pw%{^ (…»@tt/ {^ (Ú®o%8 ,(Û®o&8 u]-þ+,?{^ (Û®o&8 u^-, r=Ìps\ z t]-{ŒY(/+*{^{^{^{^{^{ ^{!^{"^{#^{$^{%^{^([ (\ (Ÿ+{&^(3+{'^{(^{^sY–{)^¥Ÿ(‹+(Ž+(š°{*^{+^{,^{-^{.^{/^{0^{1^s³»(‹ (Z *Bs·8 (¿­*0¤x%(ñ• (c s  {r^{s^{t^([ s]–{u^(¿­{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼*:(² }êN*:{êN(DZ*(¸8 *.u5-þ*(¹8 *"(Ý®*(º8 *.u--þ*(»8 *"(í•*{ëN*{ìN*{íN*r( }ëN}ìN}íN*(]8 *&Ñ((³*:(¼8 }îN*>{îN(ó•*(½8 *.( þ*(¾8 *0(Œ ( , ( ( s¿8 *rŸÌps\ zr(À8 }ïN}ðN}ñN*0Dz%{ñN(Ý® (Á8 (Â8 {ðN(> {ïN(= (> (Ì®s 8 *:(Ã8 }òN*0{%(8 (8 {òNs%–*r(e8 }óN}ôN}õN*0 {óN{õN{ôN(ý•*:(e8 }öN*B{öN(4+*:(Ä8 }÷N*0E3 {DY{FY(ü·('± {EY,"{÷N{ëN{÷N{ëN(̱(ɱ**:(Å8 }øN*j{øNXÑ(Ó°(Y (Z *(Å8 *NÑ(а(Y (Z *:(Å8 }ùN*j{ùNXÑ(Õ°(Y (Z *(Å8 *NÑ(µµ(Y (Z *:(Å8 }úN*j{úNXÑ(³µ(Y (Z *(Å8 *NÑ(­µ(Y (Z *V(Æ8 }ûN}üN*0&%('¶Ea h:(Y (Z *tõ- {a[ {ûN{üNs/–s1–iþ(5+*tú- {h[ {ûN{üNs3–s5–iþ(5+*tö- {b[ {ûN{üNs7–s9–iþ(5+*V(Ç8 }ýN}þN*0;€%(È8 (É8 {ýN(ù•{þNXÑ(Õ°(Y (Z þ(+*(Ê8 *0%(É8 {FYsæ·*(Ë8 *0%(Ý7 (Þ7 (c (±*:(Ì8 }ÿN*0 N%(Ý7 (Þ7 (ѰXÑ(а( µ(#µ{ÿN(`°(åµ(Y (Z (Z (Z *r(² }O}O}O*j{O{O{O(6+*(Í8 *&(¯*(Î8 *BX(–s°8 *(Ï8 *"(É8 *:(Ð8 }O*:{O(ù•*(Ñ8 *0€%(È8 (É8 Ñ(а*:(ƒ8 }O*:{O(ê•*(Ò8 *&(¯*:(ƒ8 }O*:{O(ê•*:(Ð8 }O*:{O(ù•*r(² }O}O} O*j{O{O{ O(7+*r(Ó8 }Ô8 }Õ8 }Ö8 *j{Ô8 {Õ8 {Ö8 (8+*r(Ó8 } O}O}O*j{ O{O{O(9+*~O*~O*0n‚%(_–(• ,(f²*(`–(` -?ráEp’%ÐO(E (JÀ(²(i r{Íp(²(~ (P²+(c (j²*r„Ép*6€O~O&*.se–€O*( *~O*&*Zr.8ps×8 (:+oØ8 *nþ, þ,**þ,**:¥Ç'oi–*0,„%¥Ç' þ,¥Ç'þ,**¥Ç'þ,**0þ, & **6(n ol–*nþ, uÇ',**þþ*Rþ,þ*þþ*0„%uÇ' ,oo–**bs¸ €Osn €O*r$Âp*r,Âp*rWp*ró p*~!O*~"O*~#O*~$O*~%O*®ob /(x–o^ oÙ8 ,*X+Ø*0  ({–*~&O*~'O*~(O*~ob 2oL rîëp(ñ **~)O*~*O*~+O*0n†%ob -(c *s·–(w–(;+ -* (Ú8 (š (Ú8 (™  („–,(d ( (c **~,O*~-O*~.O*~/O*~0O*~1O*0Fˆ%(Û8 _3*-+þ,+þ,+þ,+þ,* þ*0xˆ%(Û8 -+þ,+þ,+þ,+þ,+ þ,+þ,+þ,+þ,+þ,*'þ*F(Œ–,*.þ*0Ìr§Ìp(ñ ,*r­Ìp(ñ ,+îr¨Åp(ñ ,+ßr|8p(ñ ,+ÐrÞQp(ñ ,+ÁräQp(ñ ,+²ráNp(ñ ,8 ÿÿÿråNp(ñ ,8Žÿÿÿrýp(ñ ,8|ÿÿÿr(Pp(ñ ,8jÿÿÿo^ !3*o^ ~3s»–þ(ä **0ár³Ìp(ñ ,*r»Ìp(ñ ,+îrÃÌp(ñ ,+ßr°¿p(ñ ,+ÐrÉÌp(ñ ,+ÁrÑÌp(ñ ,+²rÙÌp(ñ ,8 ÿÿÿrßÌp(ñ ,8ŽÿÿÿrÓ p(ñ ,8|ÿÿÿrÙ p(ñ ,8jÿÿÿo^ !3rçÌp(ñ þ+,*o^ ~3s½–þ(ä **0ê(–o r³Ìp(ñ ,*r»Ìp(ñ ,+ïrÃÌp(ñ ,+àr°¿p(ñ ,+ÑrÉÌp(ñ ,+ÂrÑÌp(ñ ,+³rÙÌp(ñ ,+¤rßÌp(ñ ,8’ÿÿÿrÓ p(ñ ,8€ÿÿÿrÙ p(ñ ,8nÿÿÿo^ !3rçÌp(ñ þ+,*o^ ~3s¿–þ(ä **^(–o ró p(ñ *0 X‰%(–o %.¤%?¤oA sÁ– rÑNp(ñ ,+ rû³poÚ ,+ rýpoÚ ,+>rCprçÌpr@-pr6ÚprÝNp([ (\ (\ (\ (\ (\ (W+,+ rÝNp(ñ ,+ r ùpr; p([ (\ (\ (W+,+ rKp(ñ ,+ r¨Åpr|8p([ (\ (\ (W+,+*r´9pr‡práNp([ (\ (\ (\ (W+,*ríÌp(ñ *0.r@-p(ñ ,+ r6Úp(ñ ,+ rt‚p(ñ ,+ rz‚p(ñ ,(Ü8 *róÌp(ñ ,+ rùÌp(ñ ,+ rÿÌp(ñ ,+ rÿÌp(ñ ,+ rÍp(ñ ,+ r Íp(ñ ,+ rÍp(ñ ,+ rÍp(ñ ,+ r; p(ñ ,+ rÑNp(ñ ,+ r ùp(ñ ,(Ý8 *rÂp(ñ ,(Þ8 *(ß8 *0zrýp(ñ ,+ ræDp(ñ ,+ r(Pp(ñ ,+ rX‚p(ñ ,(à8 *rn‚p(ñ ,+ rCp(ñ ,(á8 *(“–*r ùp*@*B@oM þþ*j@oM .*r ùp( *0<Š%r ùpoI YEY(V (Õ YXoL **Nr ùp( ( *`*0l‹%`oM ._`oâ8 ob Yþ X ob Y  26, o^ 0þþ+, o^ 9þþ+ X X3Ê**0DŒ%(œ–,3`oâ8 oL Xob YYoL (l (Ö*(Ö*n(œ–,`oâ8 oL **0'oM .oM X ob YoL **0€¾r:ÝpoÚ ,+ rDÝpoÚ ,+ .(Ÿ– ob 0+)oL r:Ýp(ñ -rDÝp(ñ þ+,*ob YoL (c *0=k( – ,(d *r%Íprêp( ( ,¥+s\ z&*0-(–o (|–,riÍproÍp( ( **0rrŒ^poÚ ,rŒ^po +, ob þ+,ob YoL ([ (\ *%.¤%`¤o9 þ(+*b1Y£\þþ**0 î 2(\ þ(+*£ 9š,*3&X(ã8 ( +­"YE*X(ã8 ( 8vÿÿÿ(¤–,ÍXr*8p( þ8Aÿÿÿ@_ÿÿÿXrR9p(\ 8ÿÿÿ0 /Ž%oT Ži   rR9p([ (¥–þ(è+*0%(¦– Ži>íY(V (Õ YX m Y2!X£m¤mXX3ßm%Y(V (Õ ŽiY YXm   Y   2!  X£m¤m X   X3ß  (ã8  ¥7 (p+(` ¤mþ(Z+**~0m%¤m*(§–*rtp*r„Áp*~2O*0f|oM -ob þþ+,|oâ8 ob Yþ+,.ob YoL sÑ–(ä ,sÓ–þ(ä8 ***0f%|oM 1LY(V (Õ YXoL X(V (Õ ob Y  YXoL (­–(\ *([ (\ *0€‘%(–o (¬–,iob Y(V (Õ  YXoL (­– (ò+(— (˜ rfÁp(ñ , (Õ–+(Õ–(å8 **0ErCp( r*8p( r¿pruÍpo` r*8pr$8po` ( r*8p( *0†’%=(¨– Ži.*£m £m ob 2Mob Y(V (Õ YXoL ruÍpr¿po` r$8pr*8po` s~ (—6 *s~ (—6 *0“%(°– ,(Ú8 *så–z07”%r:po 9,(¦– sï–ŽiY YX m Y2 X£m¤mXX3à (<+9®£mŽiY YX mY2!X£m¤mXX3ß Œé,+ r¨9ps‚ z Ži ê Y 2#  £m(±–¤êXX3Ý sæ8 *êsæ8 *êsæ8 *0‘•%r:p( Œ@!,+ r¨9ps‚ zŽi m Y23£ê(™ (š (¯–¤mXX3Í  ¥7r:p(p+(` ( *6€3O~3O&*( *0í–%(~–oç8 :Ó(|–9Æ([  ([ Y  ?… o^ (–oè8 -IŒ,4u¼,  (x ¥|o¡ +  o& +rR9p+(d (\ X X@{ÿÿÿrîëp(+¥7 rR9p (p+(` ( **(d *V(é8 }O}O*0 œ—%(ê8 (ë8 ob {O0{OoL (ñ +,aŒ ,2 u¼,(x ¥|o¡ + o& +rR9p{O{OYoL s~ (—6 **( *0E5  (‚–oì8 ,*rîëpoÚ ,!ob YoL („– -*(d **:(Ñ }O*F{Oo^ þ*:(Ñ }O*F{Oo^ þ*:(Ñ }O*F{Oo^ þ*:( }O*>{OoÚ *"sÄ–*V( }O}O*{O*{O*&*Zr.8psí8 (=+oî8 *0h˜%þ,Wþ,O&  (y {O{O( /*1*(y {O{O/*þ**þ,**:¥Ñ'oÉ–*0m™%¥Ñ' þ,P¥Ñ'þ,C&  {O{O( / * 1 *{O{O/*þ**¥Ñ'þ,**0Lš%þ,C &  ¹y7ž{ObcXXX ¹y7ž{O , ( +bcXXX **6(n oÌ–*0E›%þ,6uÑ' ,*&  {O{O(ñ ,{O{Oþ***þþ*0Aœ%þ,2þ,*&  {O{O(ñ ,{O{Oþ***þþ*0%uÑ' ,oÏ–**(Ñ *^|3*(x–oÙ8 þ*(Ñ *B(x–oÙ8 þ*"sÖ–*V( }O}O*{O*{O*&*Zr.8psï8 (>+oð8 *0vž%þ,eþ,]&  (y {O{O/+þ /*1*(y {O{O þom **þ,**:¥Ô'oÛ–*0{Ÿ%¥Ô' þ,^¥Ô'þ,Q&  {O{O/+þ / * 1 *{O{Oþom **¥Ô'þ,**0C %þ,: &  ¹y7ž{Ood bcXXX ¹y7ž{ObcXXX **6(n oÞ–*0L¡%þ,=uÔ' ,1&  {O{O3{O {O þoe ***þþ*"{O*"{O*0A¢%þ,2þ,*&  {O{O3{O{Oþ(e+***þþ*0£%uÔ' , þoã–**:(Ÿ } O*(Ÿ *0 (  *0 (¡ *{ O*06Íþ,- ¹y7žtÕ'(é– , ( +bcXXX **6(n oê–*0A*þ,2u ,&(?+-*tÕ'(é–tÕ'(é–(ñ **þþ*öþ,.þ,&(?+-*tÕ'(é–tÕ'(é–(ñ **þþ*0*u ,oí–**( *.(°–þ*0:¶¥%r$_prœ~ps~ rKpr€~ps~ r¨Åprm3ps~ rÙÌpr˜Šps~ rßÌpr¬Šps~ r{ÍprƒÍps~ rÍpr¥Íps~ r|8pr…3ps~ r´9pr!1ps~ ríÌpr¿Íps~ r‡pr¹3ps~ r ùprãÍps~ r; pr÷Íps~ ráNpr£3ps~ rÎprß2ps~ rXCprû2ps~ rÎpr3ps~ r%Îpr©2ps~ r-Îpr-2ps~ r5ÎprÃ2ps~ rÃÌpr2ps~ r°¿prm2ps~ rÓ pr=Îps~ rÙ prWÎps~ r(PprÎps~ rX‚pr›Îps~ rt‚prµÎps~ rCprÍ`ps~ rn‚prÛÎps~ rz‚pr÷Îps~ r@-pr#Ïps~ r6Úpr;Ïps~ rÍprYÏps~ r ÍprsÏps~ rÍprÏps~ rùÌpr«Ïps~ rÿÌprÃÏps~ rÝÏprçÏps~ rntprÐps~ rÍprÐps~ róÌpr?Ðps~ r]ÐpriÐps~ r›Ðpr«Ðps~ rÃprÉÐps~ r©prãÐps~ r ÑprÑps~ r=ÑprCÑps~ ruÑpr{Ñps~ r§Ñpr­Ñps~ rê pr“`ps~ rð prÙÑps~ rWpróÑps~ ró pr Òps~ r$ÂprT_ps~ r,Âpr3Òps~ (¾ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ (¼ €!O>rQÒpsñ8 o9 *6o9 *6þo9 **o9 *.o9 **o9 *&o9 *.o9 *"o 9 *&o!9 *&o"9 *&o#9 *.o$9 *&o%9 *"o&9 **o'9 *"o(9 **o)9 *.o*9 *&o+9 *.o,9 *.o-9 *6o.9 *.o/9 *&o09 *&o19 *0 (x þo29 **o39 *0—¯%(49 o^ (59 Œ ,-u¼ , (x ¥|o¡ +o& +rR9p(49 ob YYXoL ( rS@prfÁpo` r£Õpr«Õpo` *2þo69 *.þo79 *nŒù¥(þo89 **þo99 **þo:9 **þo;9 *.þo<9 **þo=9 **þo>9 **þo?9 *.þo@9 *2þoA9 *2þoB9 *2þoC9 *2þoD9 *2þoE9 *2þoF9 *2þoG9 *2þoH9 *J,*Œ’¥ù*.þoX *:sI9 (B+*foV , þoY */*fo86 , þoD6 */*RoV , þoW **0†±%sJ9 oG²oK9 oI² ,E (L9 um-,(L9 tm-{®Y  oM9 +(L9 tl-{­Y  oN9 +sË—oK²(C+(x oO9 *0n²%(] ,d (] (] -(^ ([ (\ þ(Ÿ+*(] (] (^ (^  sÑ—(o+(Ÿ++”*06´%s×—rR9poö²([ (M—(D+ rR9p(ñ -"o÷²rˆ^po ,r³Õp+r¨Åp+rR9p( o÷²( oõ²   uv-:¦ uu-:štw- {ÁY{COoP9 -(L—( Áo0Á+J(Q9 u×#,(Q9 t×#(R9   + (Q9 tØ#(S9  ( Á o/Ár¹ÕpoT9 (E+*r¹Õp(U9 (E+*0ø ¹y7ž{POoV9 bcXXX ¹y7ž{OOoW9 bcXXX ¹y7ž{NO(F+bcXXX ¹y7ž{MO(G+bcXXX ¹y7ž{LO(H+bcXXX ¹y7ž{KO(I+bcXXX ¹y7ž{JO(J+bcXXX ¹y7ž{IO(K+bcXXX ¹y7ž{HO(L+bcXXX *0Á·%{IO{IO(M+9§{JO{JO(N+9Ž{KO{KO(O+9u{LO{LO(P+,_{MO{MO(Q+,I{NO{NO(R+,3{OO {OO oX9 ,{PO {PO  þoY9 ********0Ñþ9Å{HO{HO(S+9­{IO{IO(T+9•{JO{JO(U+9}{KO{KO(V+,h{LO{LO(W+,S{MO{MO(X+,>{NO{NO(Y+,){OO{OO(Z+,{PO{POþ([+**********~"P*~#P*~$P*~%P*~&P*0 v¹%,Q sZ9 {HOo[9 {IO{JO{KO{LO{MO{NO{OO{POsâ—*sè—rÑÕps\9 (\+o÷²þo]9 *0 »%{HOr#Öp(]+ (^9 (_9 (`9 oa9 9Ë o(9 (°, o-6 +, ob9 þ+, oV þ+, oc9 þ+,!(d9 Þ tÞ&+(e9  sZ9  {HO o[9 {IO{JO{KO{LO{MO{NO{OO{POsâ—**ƒ’ 0޽%{HOof9 ,X (g9 (h9 ,I(g9 (h9 ,:(¥5 (g9 (^9 (g9 (_9 (g9 (`9 rOÖp (E+*-(N—*r—Öp(g9 (_9 (E+*0 D{HO{IOoi9 {JO{KO{LO{MO{NO{OO{POsâ—*V{IOrÑÖpþ(^+*0 D{HO{IO{JOoj9 {KO{LO{MO{NO{OO{POsâ—*V{JOrùÖpþ(_+*0 D{HO{IO{JO{KOok9 {LO{MO{NO{OO{POsâ—*V{KOr!×pþ(`+*0 D{HO{IO{JO{KO{LOol9 {MO{NO{OO{POsâ—*V{LOrM×pþ(a+*b{HOry×p(]+(`9 *b{HOr#Öp(]+(^9 *0 8{HO{IO{JO{KO{LO{NO{OO{POsâ—*:{MO£4*0 D{HO{IO{JO{KO{LO{MO{NOom9 {OO{POsâ—*:{NOon9 *0 C{HO{IO{JO{KO{LO{MO{NO{OO(o9 {POsâ—*0 B{HO{IO{JO{KO{LO{MO{NO{OO(b+{POsâ—*0n¾%{OO (p9 ,S (q9 i /+ Žiþþ,+rŸ×ps" (+sì— Ži(+s\ z £/*rí×ps\ z:{HOor9 *0 KÀ%ss9 {HO{IO{JO{KO{LO{MO{NO{OO{PO(t9 sâ—*0 G{HO{IO{JO{KO{LO{MO{NO{OO(u9 sâ—{POsv9 *0mÁ%{ÜY {ÝY (º²E +@+ (¨²E +++ ++`*0‡Ã%o ³(Y— sî—o³(c+ (w9 þ oV ,r5Øp(d+oO' (E+*, raØp(E+*sð—r•Øpsx9 (e+ sô—oy9 þ(f+*0„Ä%(,³E e‹±æ?JrÉ*p(U9 *t‰- {øY {ùY r"Ùp(p—(E+ {ÅYo 3 þoF' * {ÅYo þoG' *tŠ-{úYrLÙp(o—(E+*t‹-{ûYrlÙp(o—(E+*tŒ-{üY rŒÙp(p—(E+ r¸Ùp oI' (E+*t-  {ýY rÔÙp(p—(E+ rÚp oH' (E+*t-  {ÿY r$Úp (j—(E+*rDÚps\ zrbÚps\ z6þ(p—*Fsö—þ(c+*Zsø—(c+þ(d+*6þ(p—*0U|(&¸E'>Sh}’§¼ÑæûtŒ. {I\Œm*t. {J\Œó*tŽ. {K\ iÑŒ*t.{L\Œ÷*t.{M\Œø*t‘.{N\Œ’*t’.{O\ŒÁ*t“.{P\Œ*t”.  {Q\Œ€*t•.  {R\Œô*t–.  {S\Œõ*t—.  {T\Œö*t˜.  {U\Œæ**~'P*†uKþ,*o{9 (v—þoX *jrˆÚp{Zo?9 (f—*0t(YµE 5Oiƒ·Ñë~‡9 {NOon9 þoA9 *~ˆ9 {NOon9 þoA9 *~‰9 {NOon9 þoA9 *~Š9 {NOon9 þoA9 *~‹9 {NOon9 þoA9 *~Œ9 {NOon9 þoA9 *~9 {NOon9 þoA9 *~Ž9 {NOon9 þoA9 *~9 {NOon9 þoA9 *~9 {NOon9 þoA9 *~‘9 {NOon9 þoA9 *~’9 {NOon9 þoA9 *f(%µ3*~“9 þo@9 *0b(µE0*~”9 !þo•9 *~”9 !þo•9 *~”9 !þo•9 *Ò(µ3 oK &*~–9 o@9 oK &~—9 þo@9 *š, r¬Ûps\ z~˜9 (‚—þoH9 * *0 s˜þ(ˆ—*0AÕ%(G ,(H (I oJ + ràÛps\ z/%¤/þoM *0ÊYEHrVÜpr¡cps zÐV((d (C (D /%Ð:O(E (F þ(Œ—*ÐV((d (C (D ;%Ð;O(E (F þ(Œ—*ÐV((d (C (D G%ÐO(E (F þ(Œ—*ÐV((d (C (D S%Ð?O(E (F þ(Œ—*0ó, (‡ s™9 *~š9 *0 Öá%('¶Ea#1?M[iw…“¡¯½ÎÖÞìú$2@N\jx†”¢°¾ÌÚèö/N ¿Þ 6 7 \ ƒ º È  < ”  - W e s t 6› Ö # H m ¨ õ  9 _ 'MsÁ5[§²´™\4ÎÜDRõL‡üs˜ršÜps¥# (T +o& oì &*~›9 þo@9 *~œ9 þo@9 *~9 þo@9 *~ž9 þo@9 *~Ÿ9 þo@9 *~ 9 þo@9 *~¡9 þo@9 *~¢9 þo@9 *~£9 þo@9 *~¤9 þo@9 *~¥9 þo@9 *tñ-{\[ (±´EŒTb*p8~š¨F¶~¦9 þo@9 *~§9 þo@9 *~¨9 þo@9 *~©9 þo@9 *~ª9 þo@9 *~«9 þo@9 *~¬9 þo@9 *~­9 þo@9 *~®9 þo@9 *~¯9 þo@9 *~°9 þo@9 *~±9 þo@9 *~²9 þo@9 *rêÜps\ ztò-{][ (±´EŒTb*p8~—¢F­~³9 þo@9 *~´9 þo@9 *~µ9 þo@9 *~¶9 þo@9 *~·9 þo@9 *~¸9 þo@9 *~¹9 þo@9 *~º9 þo@9 *~»9 þo@9 *~¼9 þo@9 *r Ýps\ zr.Ýps\ zrTÝps\ zrzÝps\ ztó-{^[ (±´EŒTb*p8~—¢F­~½9 þo@9 *~¾9 þo@9 *~¿9 þo@9 *~À9 þo@9 *~Á9 þo@9 *~Â9 þo@9 *~Ã9 þo@9 *~Ä9 þo@9 *~Å9 þo@9 *~Æ9 þo@9 *r¢Ýps\ zrÌÝps\ zrøÝps\ zr$Þps\ z~Ç9 þo@9 *~È9 þo@9 *~É9 þo@9 *~Ê9 þo@9 *~Ë9 þo@9 *~Ì9 þo@9 *~Í9 þo@9 *~Î9 þo@9 *~Ï9 þo@9 *~Ð9 þo@9 *~Ñ9 þo@9 *~Ò9 þo@9 *~Ó9 þo@9 *~Ô9 þo@9 *~Õ9 þo@9 *~Ö9 þo@9 *~×9 þo@9 *~Ø9 þo@9 *~Ù9 þo@9 *~Ú9 þo@9 *tô- {_[(±´E 9g—rRÞps\ z{`[(á´3ç{`[tÝ-{˜Z ~Û9 þoC9 *{`[(á´3¹{`[tÞ-{™Z ~Ü9 þo•9 *{`[(á´3‹{`[tß-{šZ~Ý9 þoÞ9 *{`[(á´@Xÿÿÿ{`[tà-{›Z~ß9 þoà9 *tõ-{a[~á9 hþoB9 *tö-{b[~â9 hþoB9 *t÷-{d[{e[ {c[  (‡—(†—(±´EFx†*”8¢Q_m­~ã9 þo@9 *~ä9 þo@9 *~å9 þo@9 *~æ9 þo@9 *~ç9 þo@9 *r®Þps\ z~è9 þo@9 *~é9 þo@9 *rÞÞps\ z~ê9 þo@9 *~ë9 þo@9 *~ì9 þo@9 *rßps\ z~í9 þo@9 *tø-{f[~î9 hþoB9 *tù-{g[~ï9 hþoB9 *tú-{h[~ð9 hþoB9 *tû-  {j[ {k[  {i[  (‡—(†—(±´EF{‰*—8¥Q_m³~ñ9 þo@9 *~ò9 þo@9 *~ó9 þo@9 *~ô9 þo@9 *~õ9 þo@9 *r@ßps\ z~ö9 þo@9 *~÷9 þo@9 *~ñ9 þo@9 *~ò9 þo@9 *~ó9 þo@9 *~ô9 þo@9 *~õ9 þo@9 *~ø9 þo@9 *tü-{l[~ù9 hþoB9 **tþ-{n[ ~ú9  (—þoD9 *tÿ-  {p[  {o[  þ(…—*t.{r[(û9 ~ü9 s˜(m+(n+þoý9 *~—9 þo@9 *t.{u[{s[{t[ ~þ9  þ(‹—*t.{x[{v[{w[ ~ÿ9  þ(‹—*t.{|[{z[{y[{{[ ~: (p—oF9 ~ÿ9  þ(‹—*t.{[,;{[(: {}[{~[s˜þ(ˆ—*{}[{~[s ˜þ(ˆ—*t.{€[ ~:  (—þoD9 *t.{‚[{[  þ(o+*~: þo@9 *~: þo@9 **t.{ƒ[ ~: {NOon9 þoA9 *t.{„[{…[(†—~: (z—þoG9 *t .{‡[{ˆ[{†[  (‡—(†—~: (z—þoG9 *t .{‰[~: (z—þoG9 *t .{Š[~ : (z—þoG9 *t .{‹[{Œ[(†—~ : (z—þoG9 *t .{Ž[{[{[  (‡—(†—~ : (z—þoG9 *t.{[~ : þoE9 *t.{‘[~ : (p—þoF9 *t.{’[~: (p—þoF9 *t.  {“[55uÖ--45u×--U {“[tÕ-{Z~: (p—þoF9 * {“[tÖ-{ŽZ ~:  (—þoD9 * {“[t×-{Z~: (z—þoG9 *t.{”[ ~:  (—þoD9 *t.{•[~: (p—þoF9 *t.{–[~: (p—þoF9 *t.!!{˜[!{™[!{—[  (‡—(†—~: (p—þoF9 *t.""{›["{œ["{š[  (‡—(†—~: (p—þoF9 *t.{[~: (p—þoF9 *t.{ž[~: (p—þoF9 *t.{Ÿ[~: (p—þoF9 *t.{ [~: (p—þoF9 *t.{¡[ (±´EFx†*”8¢Q_m­~: þo@9 *~: þo@9 *~: þo@9 *~: þo@9 *~: þo@9 *rpßps\ z~: þo@9 *~: þo@9 *r¢ßps\ z~ : þo@9 *~!: þo@9 *~": þo@9 *rÔßps\ z~#: þo@9 *t.{¢[ (±´EFxƒ*Ž8™Q_m¤~$: þo@9 *~%: þo@9 *~&: þo@9 *~': þo@9 *~(: þo@9 *ràps\ z~): þo@9 *~*: þo@9 *r:àps\ zrlàps\ zr àps\ zrÔàps\ zráps\ z~+: þo@9 *t.##{¦[#{¥[$#{£[%#{¤[&(1µ'%'(n o<µ,~,: o@9 +(“²($((n o‘²,~-: (p—þoF9 *$(³(p—))o'6 **oH' +)r<áp +${ÅYo Ð’(d (p+o9 ,~þ9 ,þoD9 *t.--{¨[-{§[$(“²($((n o‘²,~.: (p—þoF9 *$(³(p—))o'6 *(°,${ÅYo *(—+-)rxÇp *${ÅYo Ð’(d (p+o9 ,~þ9 ,þoD9 *t...{ª[.{©[$(“²($((n o‘²,~/: (p—þoF9 *$(³(p—))o'6 *(°,${ÅYo *(Ž—+B)rLáp ${ÅYo Ð’(d (p+*(C (0: (q+(r+o9 ,~þ9 ,þoD9 *t .//{¬[/{«[$(“²($((n o‘²,~1: (p—þoF9 *$(³(p—))rúåp ${ÅYo Ð’(d (p+o9 ,~˜9 ,þoD9 *~2: þo@9 *t!.{­[~3: (p—þoF9 *~4: þo@9 *t".{®[~5: (p—þoF9 *~6: þo@9 *~7: þo@9 *t#.{¯[0{BO,0oø³oè³rÞªpo þ+,k0oø³oè³0oø³oå³(—0oø³oæ³(—0oø³oç³(—o9 0où³0oú³0oû³0oü³þo89 **~8: þo@9 *~9: þo@9 *t$.11{±[1{°[  (‡—(†—~:: þo@9 *t%.22{³[2{²[  (‡—(†—~;: þo@9 *t'.{¶[ (×°(—(ÿ´{AO{©^(Õ²rTáp{AO{º^(= (> {AO{º^(W°(ŵ8tçÿÿt(.3(Õ®3{·[o² 9åèÿÿ3{·[4s ˜rháps¥# (T +4o& oì &*0câ%{\ {NOon9 o79 {\ Œ»",+ r¨9ps‚ zŽi  Y  2 £ï-(— X X3å*0(Œ,$ (Õ ~<: {NOon9 þoA9 **0"Œ, (Õ .(Õ þ(’—**0óç%s˜ (™·E1Jntp. {\ {\(“—(‘—o‹·*tq.  { \þ(s+*tr.{ \o=: þo>: *ts.{\{ \(~°(“—o99 o=: o>: (’—(•—o:9 *0 Šë%u{.-4u|.-Utz. {\ o>9 (”—þ(’—*t{. {\ o;9 (”—þ(’—*t|. s˜ {\þ(t+*0 Hï%(q° s˜(u+   (~°(V (”—þ(’—*z{"\(p—{#\þo69 *0 ~ò%{'\(v+ Œî#,+ r¨9ps‚ zŽi 4 Y2& £†.(——¤4XX3Ú (d—{(\þ(–—*0\ó%oTº (BºE+,-tÖ. {‘] o* Œù¥Iþ(˜—***rºáps\ z0Cô%{eZ(‚— ,+ s˜ròáps?: (w+{eZo@: {fZsA: *J(š—þoB: *^s˜oŠ´þ(x+*0$õ%(î -*s˜(y+ (è+oC: *0c÷%Œœ",+ r¨9ps‚ zŽi F Y 2"£/¥F¤FX X3Þ s"˜þ(z+*0×û%{q],+{r],+`{s],+` {m] -WrâpX Œ’,4u¼,(x ¥|o¡ +o& +rR9p( +(d sD: oE: s$˜ {t]  s&˜ oŠ´þ(x+*05* {¬] (*ºE8j8b+^+ZtÒ. {ˆ] @{{], +`{z], +`{|], +`{}], +`{°](þ·E+râps\ z++ ++`{·], @+{»], +`{º], €+`{¹], €+``*0³ü%{²](_ºE++{³], +`{´],+`{µ],+`{¾], €+`{½], +`{±]oTº (Bº3tÖ. {‘]{&\+,+`*0q&( — (¡— {­](n— (!± {¸],{®](7°oþ þ+,{«](l—+{±]oTº(Bº@òt×.{’]{®](7°(s—{¯]{v](p— {g](͹E ++ ++ {h](á¹E + ++ {«]{e]o_²{f]   oF:   o!9   (\—*{«]  rëp(ñ ,1{®](7°(s—o,9 o9  (Z—* rúåp(ñ ,+¿{«]o*9   s(˜{Á]({+ (J—(I—(r+(h—{Á](ž— {®](7°(s—o#9  {¯]{v](p—o"9 (i— o!9   (\—*0À&(!± {±]oTº(Bºþ {«] rëp(ñ ,y{IOrÑÖp(^+ s*˜s,˜{®](|+ s.˜{«]{±](}+ s0˜{Â]s2˜oŠ´(x+*rúåp(ñ ,8uÿÿÿ{JOrùÖp(_+(I—(J—(r+(h—{¯]{w]oŠ´(G: -+;o$9   s4˜{¯]{w]s6˜oŠ´(x+s8˜s:˜{®](|+-"s<˜{«]{±](}++(i— s>˜{Â] s@˜oŠ´þ(x+*0A&{Ý](þ·E+rbâps\ z++ ++ {Ü],+{á], +`{ä],@+`{å], +`{ã], €+` ` {Û](p— {Þ]-{Ú] o-9 +{Ú](‡ oH: sB˜{ß](~+sD˜{à](+{Ú]{Û]s—³(^—*0M &{Ú]{Û]s—³ {KOr!×p(`+ sF˜ {æ] sH˜ oŠ´þ(x+*0 ¥ &{Ð], +{Ñ], +` {Ï]{Õ](p—{×](s—o.9 sJ˜{Ò](€+sL˜{Ó](€+sN˜{Ö](~+{Ï](¿(`—*0F&{Ï](¿ {LOrM×p(a+ sP˜ {Ø] sR˜ oŠ´þ(x+*0 Ð&{È], +{Ç], +` {Æ]{Å]op (p—o/9 {É] {JOrùÖp(_+oI: {Ê] {JOrùÖp(_+oJ: sT˜{Ë](€+sV˜{Ì](+sX˜ {Í] sZ˜oŠ´þ(x+*0N&{é]o¬³(~— {è] {x] {y]  (p—(~—oK: *ê(…»E ** ***r¤âps\ z0a& uþ.- uÿ.-**tÿ. {^(þ·E *ræâps\ z*****š(S»E * * *0 À{ô](X +,{õ](‚++,*{AO{AO{“^rªp(<°(á²{AO{“^rãp(<°(= (B°(= (> (´(? (@ s\˜{õ](ƒ+(„+s^˜{ô](…+(†+(‡+(«±(š—(L: *0V& uò.- uñ.-&sM: *tò. {ð] (­—sM: *tñ. {ï] (­—sM: *0”&{^(ª— {^(«— {#^(®— (N: (O: {%^(S»E + + {^, €+{ ^, +`{!^, +`{$^, +`{+^, +`````{^sP: oQ: rpãp(ˆ+  s`˜ (‰+ sb˜{^({+(f²(°  o³o9     (W— (‹ (Z (x+   sd˜ {&^¥²(v+þ(Š+*Rsf˜(¯—*0˜&(f²(° {HOry×p(]+(`9 (I— (h—  sh˜{(^(‹+ {^(ž— (i—(‹ (Z (x+sj˜{&^¥²(v+þ(Œ+*0ì&(f²(° {HOry×p(]+(`9 (I—(h— sl˜sn˜{'^(c+(+sp˜{)^¥Ÿ(‹+(Ž+ sr˜ {,^oøº(+st˜{0^oàº(+(i—(‹ (Z (x+sv˜{&^  ¥²(v+þ(Š+*0&(f²(° {HOry×p(]+(`9 (I—(h— {)^ sx˜ ¥Ÿ(‘+sz˜{0^oàº(K+s|˜{/^oκ(’+s~˜{,^oøº(ï+s€˜{-^o»(“+s‚˜{1^(œ—(i—(‹ (Z (x+s„˜{&^¥²(v+þ(Š+*0@&oö² (] ,* (] (^ s†˜oõ² (<°þ(”+*(S: *0í &(,³E (Iu¨³*tŒ-{üY +·t-{ýY +çt‰- {ùY ,*8ˆÿÿÿtŠ- {úY o ³sˆ˜ o³(•+(T: *t‹-{ûY ,* o ³sŠ˜ o³(•+(T: *r¼ãps\ zrìãps\ z*0ý$&sŒ˜ sŽ˜ 2(´— oU: (–++2>s˜{^(—+{)^¥Ÿ(‹+ s”˜ ¥Ÿ(‘++2{(^(˜+(‹++2{'^(˜+(™++2{)^s˜˜¥Ÿ(‘++2sš˜{,^oøº(ï++*04%&sœ˜ sž˜(S: (µ—(š+ oU: þ(–+*0Ã'&{HOry×p(]+(`9 oW: -+ oX: þ9ŠoY: {HOr#Öp(]+(^9 oö²  s ˜þ¡˜sZ: (R o[: (·—Þ(R o\: &Ü&o]: -o^: o(9 ***€“0*&   (¹—*0K+&(f²(° (º—(‹ (Z (x+ {&^ s¢˜¥²þ(›+*Zs¤˜(‹ (¯—*B(‹ (±—*>(‹ (²—*B(‹ (³—*F(‹ (»—*0Ò,&{u^ ¥²(v+ s¦˜(Š+ s¨˜(Œ+sª˜(Š+ s¬˜ (Š+ s_:  s`: s®˜(Œ+s°˜oa: ¥ý#(œ+s²˜{s^ s´˜ oŠ´(x+s¶˜{„^o)¼(+*0•.&rEp( (R sJ9 oK9 rS@po9 -SÐc(d /%Ðd(d ¤/o|5  % Œd¤sb: o9 + o9 sc: *0†1&sЗ (Á— {r^ ,4 (˜ s¸˜{k^sº˜oŠ´(x++s¾˜(m—(d:  (e:  (ž+sf: *jsÀ˜{HOof9 þ(Ÿ+*6þ(p—*js˜{KOog: þ( +*jsĘ{JOoh: þ(¡+*6€(P~(P&*(i: *~Œ¥/Œ¥/þoX *:(j: }@O*0 7í({ (z (y (x {@Oiii is× ok: *{AO*{BO*{CO*r( }AO}BO}CO*’}DO}EO}FO}GO(• *0¦{FOYE + ++X+l+q}FO{EO}GO*{EOrˆ^po ,+{DOrˆ^po ,}FOr³Õp}GO*+}FOr¨Åp}GO*}FO}GO*&}FO*ê{FOE +++ +++****"{GO*V{DO{EOsÑ—*(l: *&( *{HO*{IO*{JO*{KO*{LO*{MO*{NO*{OO*{PO*0L( }HO}IO}JO}KO}LO}MO}NO}OO }PO*Jþ, (O—**6(n oã—*0;2&þ,,uâ' , {HO{HO(¢+, (P—***þþ*jþ, þ(Q—*þþ*02&uâ' , þoæ—**(m: *"s\ z:(Ó }QO*B{QOþo  *:(Ù }RO*0¸{ROoÚ sê—*r(n: }SO}TO}UO*r{SO{TO{UOþ(p—*(o: *"s\ z:(p: }VO*B{VOþoq: *:(r: }WO*04&{WOos: sò—*V(n: }XO}YO*^{XO{YOþ(p—*V(n: }ZO}[O*^{ZO{[Oþ(p—*:(t: }\O*bow5 {\Ooг(ñ *V(n: }]O}^O*^{]O{^Oþ(p—*(u: **þo66 *’(t: }_O}`O}aO}bO*0 Ã6&(J— Ži{aOo‹³.*{`O{bO(r+(h— {_Osü—{aOo³(c+{_O{aOo޳(p—sv: (w: (x: sþ—oC6 (£+(¤+oP6 oy9 oy9 .* oX , (¥+**Ò(í }cO}dO}eO}fO}gO}hO*0 å7&{gOo¬³oгrúåp(ñ ,+{gOo¬³oгrëp(ñ ,?{cO{dO{gO(‚— {hO, r$äps\ z{eO{fOoH9 *{cO{dO{gO(— {hO,4{hO (: {eO{fO{cO{dO (s—oy: *{eO{fOoD9 *( *"s\ z:(z: }iO*N{iO{NOon9 *²(í }jO}kO}lO}mO}nO*0 s{lO~{: {nO{ Z(n—{jO{kO{nO{Z(p—{jO{kO{nO{ Z(s—{jO{kO{mO(s—o|: *’(í }oO}pO}qO}rO*0 ]{qO~{: {rO{ Z(n—{oO{pO{rO{Z(p—{oO{pO{rO{ Z(s—o|: *( *"s\ z:(}: }sO*R{sOo?9 (f—*’(~: }tO}uO}vO}wO*0 #{tO{uO{vO{wOþ(”—*’(: }xO}yO}zO}{O*0 ;&(€: (: uƒ.9Štƒ. {\ {zOo=9 {zO{{O{xO{yO{zO{{O (”—(’—{zOo<9 {zO{{O{xO{yO{zO{{O(”—(’—*t‚.{\{zO{xO{{O(p—o<9 {zO{{O{xO{yO{zO{{O(”—(’—*(‚: *"s\ zr(ƒ: }|O}}O}~O*†{~O{|O{}O(š—þo„: *(…: *"{¤]*V(n: }O}€O*^{O{€Oþ(p—*(†: **þo/6 *:(‡: }O*0<&(ˆ: (‰: {OoŠ: *r(ƒ: }‚O}ƒO}„O*†{„O{‚O{ƒO(š—þo„: *r(‹: }…O}†O}‡O*0+@&{‡O£F {…O{†Os˜{¥](c+ s˜(¦+ (Œ: (: (w9 ,1(w9 (w9 -(Ž: o: + rfäps\ z (q+o: {¨]s˜{…O{†Os ˜oŠ´(x+{¦](uºE++ {§], `+  {©], `+  {ª], `+ o‘: *:(‡: }ˆO*0<&(ˆ: (‰: {ˆOo’: *r(ƒ: }‰O}ŠO}‹O*†{‹O{‰O{ŠO(š—þo„: *:(“: }ŒO*:{ŒOo%9 *:(”: }O*0'A&(•: (–: (—: {OXo9 *r(˜: }ŽO}O}O*0 {ŽO{O{O(Ÿ—*:(™: }‘O*6{‘Oo 9 *:(‡: }’O*0<&(ˆ: (‰: {’Ooš: *r(ƒ: }“O}”O}•O*†{•O{“O{”O(š—þo„: *:(‡: }–O*0<&(ˆ: (‰: {–Oo’: *r(ƒ: }—O}˜O}™O*†{™O{—O{˜O(š—þo„: *:(”: }šO*0'A&(•: (–: (—: {šOXo$9 *r(˜: }›O}œO}O*0 {›O{œO{O(Ÿ—*:(™: }žO*6{žOo&9 *:(‡: }ŸO*0<&(ˆ: (‰: {ŸOo'9 *r(ƒ: } O}¡O}¢O*†{¢O{ O{¡O(š—þo„: *:(›: }£O*R{£O(u—oœ: *:(ƒ }¤O*>{¤Oo: *:(‡: }¥O*0<&(ˆ: (‰: {¥Oož: *r(ƒ: }¦O}§O}¨O*†{¨O{¦O{§O(š—þo„: *V(Ÿ: }©O}ªO*’{ªO{©O{JOrùÖp(_+o : *V(Ÿ: }«O}¬O*’{¬O{«O{JOrùÖp(_+o¡: *:(›: }­O*R{­O(u—o¢: *:(‡: }®O*0<&(ˆ: (‰: {®Oo£: *r(ƒ: }¯O}°O}±O*†{±O{¯O{°O(š—þo„: *V(Ÿ: }²O}³O*’{³O{²O{JOrùÖp(_+o¤: *V(Ÿ: }´O}µO*’{µO{´O{JOrùÖp(_+o¥: *:(‡: }¶O*0<&(ˆ: (‰: {¶Oo¦: *r(ƒ: }·O}¸O}¹O*†{¹O{·O{¸O(š—þo„: *:(§: }ºO*’ráñp{ºO{AO{º^i(´së *:(¨: }»O*Žrëñp{»O{AO{º^(´së *:(‡: }¼O*0<&(ˆ: (‰: {¼Oo39 *:(“: }½O*:{½Oo+9 *’(©: }¾O}¿O}ÀO}ÁO*0 !{¾O{¿O{ÀO{ÁO(°—*:(ª: }ÂO*0B&(«: (¬: {ÂOo)9 *r(­: }ÃO}ÄO}ÅO*0 !{ÄO{ÃO{ÅO(p—o09 *r(®: }ÆO}ÇO}ÈO*r{ÆO{ÈO{ÇO(±—*:(¯: }ÉO*>{ÉOo19 *V(n: }ÊO}ËO*^{ÊO{ËOþ(p—*r(°: }ÌO}ÍO}ÎO*0 {ÌO{ÍO{ÎO(¢—*r(±: }ÏO}ÐO}ÑO*0 {ÏO{ÐO{ÑO(¤—*r(²: }ÒO}ÓO}ÔO*0 {ÒO{ÓO{ÔO(¦—*V(©: }ÕO}ÖO*V{ÕO{ÖO(²—*²(³: }×O}ØO}ÙO}ÚO}ÛO*0 ({×O{ÙO{ØO{ÚO{ÛO(£—*’(à }ÜO}ÝO}ÞO}ßO*0 "{ÜO{ÝO{ÞO{ßO(§—*r(´: }àO}áO}âO*r{àO{áO{âO(¨—*’(1 }ãO}äO}åO}æO*0 "{ãO{äO{åO{æO(¥—*r(µ: }çO}èO}éO*0 {çO{èO{éO(§+*:(‡: }êO*0<&(ˆ: (‰: {êOo39 *r(©: }ëO}ìO}íO*0 {ëO{íO{ìO(³—*(¶: *&(@°*:(·: }îO*>{îO(µ—*:(·: }ïO*>{ïO(µ—*r(¸: }ðO}ñO}òO*0 {ðO{ñO{òO(¸—*r(¹: }óO}ôO}õO*0 {óO{ôO{õO(¹—*:(º: }öO*0‡ {¥] {öO(˜+(™+*:(º: }÷O*0‡ {¥] {÷O(˜+(™+*:(³: }øO*j{øOs’˜{Á](—+*:(»: }ùO*0õ{n] {ùO(˜+þo¼: *:(³: }úO*0:õ{úOs–˜{®](¨+{¯]{v] {úO(˜+þo¼: *r(1 }ûO}üO}ýO*0 #{ûO{üO{ýO{Û](¸—*r(¹: }þO}ÿO}P*0 {þO{ÿO{P(¹—*:(½: }P*N{P{HOor9 *V}P}P( *0`C&o¾: (f²{P(ô² {P{HOof9 -* (g9 (`9 oa9 - o(9 +þo 6 *’(®: }P}P}P}P*0 "{P{P{P{P(»—*:(ª: }P*0B&(«: (¬: {Po9 *V(©: } P} P*V{ P{ P(¼—*V(®: } P} P*n{ P(‹ { P(±—*:(©: } P*R{ P(‹ (²—*V(©: }P}P*0 {P(‹ {P(³—*r(®: }P}P}P*0 !{P{P(‹ {P(»—*(¿: *&(X—*:(‡: }P*0<&(ˆ: (‰: {Po9 *r(ƒ: }P}P}P*†{P{P{P(š—þo„: *V(À: }P}P*0˜F&{W^(û»3+ {V^ u/-7u/-Zt/ {N^ {P{U^ oV sÁ: o9 *t/{O^{P{U^o_²o9 *r¬äps\ z:(‡: }P*0<&(ˆ: (‰: {Po9 *r(ƒ: }P}P}P*†{P{P{P(š—þo„: *V(Â: }P}P*0 PG&{P{P (x o29  Þ$t uß , o¦ (H Þþ*)*$(Ã: *0H&(Ä: (Å: s¼˜*(Æ: *r(h9 -(_9 *(h9 (¥5 *(Ç: **(È: **08J&oÉ: -%sÊ: rUåpsË: (©+ sÌ: þ(ª+*(§ *(6 *"s\ z:(6 }Î: *B{Î: þoÏ: *:(Ð: }Ñ: *0L&{Ñ: oÒ: sÓ: *0 ¯(«+€!P(¬+€"P(­+€#P(®+€$P(¯+€%P(R—(Õ: (S—(Ö: (S—(×: (T—(Ø: (U—(Ù: 4(—(Ú: (Û: (u9 sâ—€&P(°, r…åp(Ü: + rËåp(Ü: €'P*~ÉQ*~ÊQ*~ËQ*R0* ÿ?0**02 þþ+, oZ* €2 ÿ?þþ+, €c`oZ ÿ_oZ* Àc ÿ_`oZc ÿ_oZc ÿ_oZ ÿ_oZ*0. Y 2oZX X3î*¦, o^* ÿÿ1 r+æps\ zo`*0 _b` , o^*o`*0V[<„Z £i ZX £i ,+2 þþ+,+2 þþ+,+'þ,+-þ,+þ,*X8sÿÿÿ*0lŽi   (Ö˜,**0ƒX£c ÿ_Ò. r§æps\ zX£c ÿ_Ò. r§æps\ zX£c ÿ_Ò. r§æps\ z£ ÿ_Ò. r§æps\ z*0L ÿ_Ò¤Xc ÿ_Ò¤Xc ÿ_Ò¤Xc ÿ_Ò¤*0­M&þ9¡(y {?P{?P(°+ /*1*(y {@P {@P /+ þ /*1*(y {AP{AP/+þ / * 1 *(y {BP{BPþ(±+**0˜N&¥](þ9‡{?P{?P(°+ /*1*{@P {@P  /+ þ /*1*{AP {AP /+ þ /*1*{BP{BPþ(±+**0¹O&(y {HP {HP  /+ þ /*1*(y {IP {IP /+ þ /*1*(y {JP{JP/+þ / * 1 *(y {KP{KP/*þ*0˜N&{HP {HP /+þ /*1*{IP {IP  /+ þ /*1*{JP {JP /+ þ /*1*{KP {KP /* þ**š/+Žiþ, rÛæps\ z£¦,*0R&sš(²+ ŽiY ?ó£$ (Ý: (Þ: X£$(Ý:  {FP{FP3; {JP{HP1+* {JP{HP3 {KP{IPþþ++,l {HP{HPþ {FP {GP {HP {IP, {HPY+{HP,P+{IPsÛ™sß: ¤$+X X@ ÿÿÿs šþ(³+*sà: *–{GP{HP{IP{JP{KPsá: *†(â: {Pþ(-¬*0ÿW&sš ,+{BPŽiþþ,+{?PŽiþþ9Æ(â: {@P(+¬{BP Œ $,+ r¨9ps‚ zŽi Y 2£\((ã˜X X3ä{?Poã: Œ$,+ r¨9ps‚ zŽi Y 2£](oä: &X X3â(â: {APþ(,¬**0Æa&( Áo,Á Þ t  Þ&så: (%¬(æ:  Þ%t (´(&¥sû£ (¤ (+ Þ&{VP,(Õ (â: ('¬+{XPŒ$,+ r¨9ps‚ zŽi¦,  Y   24   £¢- (â:  oè³((¬¤¦, X   X3Ì (Θrçps@ (©+{XPŽio  (´+&sš{YP(µ+(ΘrGçps@ (©+{YPŽio  (´+&{YPŒ$,+ r¨9ps‚ zŽi’ Y   2+  £d({UPŽi¤’ X   X3Õ {YPŒ$,+ r¨9ps‚ zŽi$ Y   2%  £d({UP¤$ X   X3Û(¶+¥$(·+sš(¸+, (à˜+sß  sš{YP(¹+(Θruçp(´+&(â: (0¬(â: (&¬(Θr›çp(´+&* %7%0Ác&й(d Ð(d (è+, +3й(d (ç: ,Œ¹(è: +%Œ¹¤  þùok oé: sš(º+ -( (&¥sû£(¤(»+* (9 ŒùoR þ(¼+*r³çp*0Jd&%Œm¤%Œ’¤%Œ’¤ r³çp(< r€èpoT9 (6 *00d&%Œm¤ r³çp(< rèèpoT9 (6 *¢/+ Žiþþ, rÛæps\ z£$*0†f&rPép{@P(½+ {BP  +)£\( rdép {>P {À(¦(÷˜*(;  (j¦Œ²+(n (3¨,(; (¦ (÷˜*(;  (k¦Œ²+(n (3¨,(; (’¦ (÷˜*r.îps\ z0;°&(¨o; (Ó+,(¨o; (Ô+*(2¹E, &Ar`îps\ zt´. {] ('™`*tµ. {] ('™`*t¶. {] @('™`*0å·&(¨o; (Õ+,(¨o; (Ö+ ioZ*(°¸E% ¤Èeìrîps\ z*t¨. {ª\ {©\ {«\{¬\(W o‰ (W o‰ ,oZ Ži(Ò˜ o_Ži(Ò˜o_Ži(Ò˜o_Ži(Ò˜o_*t©.{­\ oZ (Ò˜*tª.  {®\ oZ (Ò˜*t¬.  {±\  {²\ oZ ('™(Ò˜ ,C (d (W o‰ ’%¤’(JÀ(º+  Ži(Ò˜ o_**t«.{°\{¯\*oZ,<(; (f¸(n o·¸, P(Ò˜+((™+ P(Ò˜,A(; (;  (; (;  (Ò˜,(Õ (Ò˜***0k (e (*™oY( ™*0Ó¸&(&¸E"Gc„¥¼Óï &Ag‡tŒ. {I\ (ˆ o‰ o_*t. {J\ ,+ioZ*tŽ.{K\io`*t.{L\ÒioZ*t.  {M\  Ñio`*t‘.  {N\o^*t’.  {O\oc*t“.  {P\ioZ*t”.{Q\io`*t•.{R\o^*t–.{S\oc*t—.{T\({. (|. o^*t˜.{U\(}. oc*o^*0Œv"(&¸E "&+05:+8+4+0+,+(+$ +++ + +  + +Ñ is‹š*Ú(þ·E *******0a& uþ.- uÿ.-**tÿ. {^(þ·E ******r¾îps\ z0/¹&{^(-™{#^ uñ.- uò.-++`{^(…»3 +`{^, €+`{ ^, +`{"^, +`{!^, +`{%^(S»E + + `{.^(A»3{^(…»þ- +`{$^, +`{+^,+{*^o¹(; þþ, +`*0æ¼&{^( ™ ( ; ( ; {^rþGp(ñ ,+ (.™ {(^(0™(; (; —(% s‹š¤—(%¤—(%¤—(%(ñ˜¤—(%(Ö¨{ËP{; o; X(𘤗(%(ب{ÌP{; o; X(𘤗(s–š*0 ½&, (p (™*(i¦s; *0D¿&—(%(Ô¨(𘤗(%(é¨{ÎP { ; o!; X(𘤗(s–š*0DÁ&—(%(Ô¨(𘤗(%(æ¨{ÏP {"; o#; X(𘤗(s–š*0*{ËPr¾Ýps:›{Ú]{Û]sËšo$; *0Eÿ{Á]o­ {«]{¯]{v]{®](7°{­] {ÜY(º²þsÀš*0 ,{ÍP{ÌPrØps<›(4™o%; þo&; *j{Ï]{Õ]{×](Ñš*0{ÎPrÆps>›(6™o'; *0DÂ&(™ (; (; —(%(Ô¨(𘤗(%(ñ˜¤—(s–š*0${ÏPr¬ps@›{Æ](ášo(; *0 ìÄ&{^o­ s¦š {^(ïš(™ (Ô¨(×+(™  . ràîps\ z(] þþ,?(û¨—(%(Ô¨(𘤗(%(Ô¨(𘤗(s–š(™+{0^oàº(Û þþ,(ç¨(1™(™+{/^oκ(Ú þþ,(ä¨(2™(™+sB›{'^(™+sD›(K+sF›(’+sH›{,^oøº(ï+{)^sJ›¥Ÿ(‘+{&^  ¥²(v+{^([ (\ (Ÿ+(;™ ÞEt rgïp{^( r™ïp(  oe (  ,¥+ s\ z&þ&*A£¤EJsL›þ(Œ+*00Ç&{ÐP{; sV›¥;$(Ø+ -sN›z(); *02Ê&{ÌP {*; o+; Ýt u‰ 9{¥P(<™{·P{¶Pr­ïp([ (\ (Ÿ+¥7rS@p(p+(` ( rÓïp( {§P( rÝïp( (>Àr!ðp{©PŒ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p( (>À{ÌP{*;  sX› ¥>$(Ù+sN›zþ*A0cË&{ËP {,; o-; ÞIt u‰ ,7rAðp{®P( rcðp( ($¥s¤(¤(¥ Þþ*I0 ÅÌ&oˆ³ oõ²(™-sZ›r¥ðps.; (Ú+o/; &+oö²o÷²(ïš(™ o‹³oгo޳o³o‰³ {ÜY(º²þsÀš(=™ Þ9ts\›r„ñps0; (Û+s`›oгoe (+&þ*‰Š90 ((&™( ™ (A™s š*0 ($™( ™*0 BÍ&(™ (@™¥˜( (ܨ {ÉP(*¨£%$o ; *0 âÐ&þ,,+ (™+9¢(,³E +- rþñps\ z(—¦o;³ (O°(?™s1; Þ3t u¼( ,!(˜¦ (B™s1; Þþ*(˜¦ (B™s1; *e)Ž3¢ oZoþ (Ò˜sb›þ(™+*0 ŸÑ&oþ (C™ (2; (3;  (e(D™oY —(%(ù˜¤—(% ( ™s‹š¤—(s‘š¥˜((ý¨{ÉP(*¨£%$o ; *0aÒ& (—¦Œ¹+(n (y¨,(ب+- (˜¦Œ¹+(n (y¨,(ܨ+ rvòps\ z  (*¨b`*0 ‰Ô&oþ 1'(ý¨ (E™ (*¨b`*(H™ (4; (5; (6; (7; (8; (9; (:; (C™ (2; (3; (F™*0 oþ s;; *0 ,o¯³o­³o°³o²³o³³o®³s<; *0 „Ö&{y]o=³oþ s¦š {x]oг{y]{x]o‰³{x]o³{x]o޳{x]o‹³(@™ ¥˜( (ܨ {ÉP(*¨£%$o ; *0¬×&{y] (™9†(,³E +- r¶òps\ z(—¦{x](?™s1; Þ't u¼( ,(˜¦(J™s1; Þþ*(˜¦(J™s1; *Vp'0 dØ&oг(ß²oˆ³(= (B°o‰³o³o޳o‹³(@™ ¥˜( (ܨ {ÉP(*¨£%$o ; *0uÚ& ÿÿÿs¦š oˆ³ oõ²(™,A(¢¦(?™s=; Þ*t u¼(,(£¦(L™s=; Þþ*(£¦(L™s=; * 5*BŽi-*( ™*0`Û&{eZo¬³(M™ —(%(ô˜¤—(%(>; (?; (ü˜¤—(%{fZ(N™ s‹š¤—(s–š*0(Þ¨(O™(™ *^sd›oŠ´þ(x+*0`Ý&{:] {9] —(%( ¨o@; (Ü+Ñ is‹š¤—(%(ö˜¤—(%( ™  s‹š¤—(s–š*0(à¨(R™(™ *Jsf›þ(Ý+*¶{Z(&™{Z{Z( ™(X™s š*0EÍ&{Zo=³oþ s¦š (U™¥˜( (ܨ {ÉP(*¨£%$o ; *0,k (e oZ{Z{Z(!™oY*B(W™( ™*0¯ß&{Z (™9(,³E +- r.óps\ zo;³ oö²o÷²(ïš(™ {Z{Z{Z{ZsËš  (>™s; *(V™s; *0#à&,(Ö¨+(ܨ  (*¨b`*0 #{ Z{ Z{Z($™( ™*0 %—(%([™ s‹š¤—(s‘š*0/¨&(\™¥˜( (㨠{ÉP(*¨£%$o ; *žoZoö7 (Ò˜sh›þ(Þ+*0 k (e (^™oY( ™*0$—(%(_™ s‹š¤—(s‘š*0(k (e oZ(!™oY( ™*0rá&—(%{"\(a™ s‹š¤—(s‘š¥˜( (㨠{ÉP(*¨£%$o ; {"\ (e(!™oY*’(t›E****Ú(t›E*tÊ({Q*tÉ({ Q*0|å&{ÂP,d{'\(v+ Œî#,+ r¨9ps‚ zŽi ñ Y2% £†.(b™¤ñXX3Û +ñ {(\(ß+(A; (B; (C;  (D;  (E;   Ži Z(e {'\(Ä þ,{%\þþ+, (F; þ+,@þ+,gXXY[ZXY sG;  ÒbÒ` ioZ  o_ (Ó˜  oYsH;  sI; *(J; (n oK; þ,+`{$\,+`{'\(Ä þ,+K(ã¨{'\(`™¥˜((ã¨{ÉP(*¨£%$o ; (*¨b`XY[ZY ioZ 0oZ{%\Ñ io` o^ o^  o_ (Ó˜(F; þþ9âoL;  ZX ÿ0s¦›(à++,C oZ ÿ_Ò ioZ oZ oZ s¨›(á++roL; ZX AoZ ÿ_Ò ioZc ÿ_Ò ioZc ÿ_Ò ioZ sª›(á++  sG;    oYsH;  sI; *02æ&{Ý](,™{Ü],+`{å], +`{ä],@+`{ã], €+`{á], +`{á], +`{ß]  (â+þ, €+`{â]  (ã+þ, +`{Þ](ä+þ, +` —(%Ñis‹š¤—(%{Ú]( ™s‹š¤—(%(g™s‹š¤—(s–š*>{Û](a™*0 Ìç&(Ö¨(f™(™ (r¦{æ](Q™{Þ] ,_ (‡ {ÅPod{ÅP o_(益(%(—(%(Ö¨(𘤗(s–š(™+{â],k(; (ߨ—(%(ˆ¦(õ˜¤—(% (e  ((™ oY( ™s‹š¤—(s–š(™+{ß]  ,a   (  (ݨ—(% (+™¤—(%(m¦(󘤗(% ()™s‹š¤—(s–š(™+{à]  ,G (Õ (⨗(%s‹š¤—(%(Ö¨(𘤗(s–š(™**0_è&{¦](uºE++{§],+`{©],+`{ª],+` {¼P ({ (z (y (x (™ ( 3s—(%Ñis‹š¤—(%Ñis‹š¤—(%(ò˜¤—(%{¤]( ™s‹š¤—(%(i¦(ñ˜¤—(s‘š*—(%Ñis‹š¤—(%Ñis‹š¤—(%(ò˜¤—(%{¤]( ™s‹š¤—(s‘š*0DÂ&(™ (; (; —(%(ü¨(𘤗(%(ñ˜¤—(s–š*0 4(ü¨(å+¥™((™ („¦{¨](Q™*0Jé&(æ+¥˜( (ü¨ {ÉP(*¨£%$o ; s¬›{¥]þ(™+*0Ãê&{q],+{r],+`{s],+`{o]  (â+þ, +`{p]  (ã+þ, +` —(%Ñis‹š¤—(%Ñis‹š¤—(%{m]( ™s‹š¤—(s–š*0 ñë&{q]- {r]þ+, {s]þ+, {o]þ+, {m]þ+, {p]þ+,*(Ú¨(ç+(™ (u¦{t](Q™{p] ,d (; (ߨ—(%(‰¦(õ˜¤—(% (e ((™oY( ™s‹š¤—(s–š(™**0\ì&{u]  (ã+þ, + —(%Ñ  is‹š¤—(%s‹š¤—(%s‹š¤—(s–š*0 Åë&{u]þþ,+{w]oŠ´(G: þþ9”(Ú¨(o™(™ (u¦{w](Q™{u] ,d (; (ߨ—(%(‰¦(õ˜¤—(% (e ((™oY( ™s‹š¤—(s–š(™***0†f{Á]o­ {­](™ ioZ{Á]o­ 1{Á]o­ (Ò˜+{®]oé" (Ò˜{¯]{v](!™s®›{®](7°þ(™+*0k (e (q™oY*0 'ñ&{°](,™{¬](*ºE+,+`{¬] (*º3tÒ. {ˆ]{z]+, +`{¬](*ºþ,@+`{º], €+`{¬] (*º3tÒ. {ˆ]{|]+, +`{¬] (*º3tÒ. {ˆ]{{]+, +`{¬] (*º3tÒ. {ˆ]{}]+, +`{»], +`{±]oTº(Bºþ, +`{¼],+`{¬](*ºE+, +`{¹], €+`{·],+{¶]o¹(; þþ, @+` {²](_ºE++{³], +`{´],+`{µ],+`{¾], €+`{½], +`{¿],@+`{À],+1{±]oTº(Bº3tÖ.{‘]{&\+,+` {¸],9{ÇP(è+þ, rœóps\ zs; (M; (›+{±]oTº(BºE"8&tÖ.{‘] {ÀP {«] (é+  (N;   (O;   (P; {ÂP9§{ÃP(ب(*¨b`{«]\(  {)\,b{ÂP,V(Q; {ÄPoø³oR; Yoù³oú³sÌ™oû³oü³sÌ™sS; (T; + só™oU; +(V; (W; o › + rÆóps\ z—(%s‹š¤—(% Ñis‹š¤—(%Ñis‹š¤—(%{«]( ™  s‹š¤—(%(r™( ™  s‹š¤—(%(Ú¨(Ú¨{ÉP(*¨£%${X; oY; X(𘤗(s–š*0 ûó&{é]  (I™(Z; ([; (\; (]; (^; (_; (`; (H™ (4; (5; (6; (7; (8; (9; (:; (C™ (2; (3; {è](K™(2; (3;  (먗(%(Ô¨(𘤗(%(ù˜¤—(% (ù˜¤—(s–š(™ *0 bô&{ÍPoa; (ب(s™(™ . r‡ôps\ z{¯](p™s°›{®](|+(q¦{Â](Q™(Œ¦{¶]o¹(T™s²›{Á](z+{±]oTº (Bº@·t×. {’]{g](͹E $+& + + + + {h](á¹E + ++`{l](£¹E ++ `{k](µ¹E + + `{i],+`{j],@+`((%Ñis‹š¤—(%(œ¦(ú˜¤—(%{f]( ™s‹š¤—(%(ì¨{e]  (™¥˜( (ì¨ {ÉP (*¨£%$ o ; (𘤗(s–š(™**0${ÍPoa; s´›{Á]þ(z+*0 uõ&(?™ Þt u¼( , Þþ (ꨗ(%Ñis‹š¤—(%(ب(𘤗(%(•¦(ø˜¤—(s–š(™ * 0lf{Ô](º²E  +@+` ioZ{×]oþ (Ò˜{Õ](!™s¶›{×]þ(™+*0k (e (x™oY*0 ¢ö&{Ñ], +{Ð], +`{Ö]  (â+þ, +` —(%Ñ  is‹š¤—(%{Ï]( ™s‹š¤—(%(y™( ™s‹š¤—(s–š*0 µ÷&(é¨(z™(™ s¸›{Ò](€+sº›{Ó](€+{Ö] ,[ ( (ݨ—(% (+™¤—(%(o¦(󘤗(% ()™s‹š¤—(s–š(™+(z¦{Ø](Q™*0 uõ&(?™ Þt u¼( , Þþ (ꨗ(%Ñis‹š¤—(%(ب(𘤗(%(”¦(ø˜¤—(s–š(™ * 0ø&{È], +{Ç], +` {Å](0™ (; (; —(%Ñis‹š¤—(%{Æ]( ™s‹š¤—(% (ñ˜¤—(s–š*0n(æ¨(}™(™ {É](|™{Ê](|™s¼›{Ë](€+s¾›{Ì](+({¦{Í](Q™*0åü&{V^ u/:‘u/:èt/ {N^ oV {ÆPodXY[ZYŽi{ÆP(Ó˜{ÆPo^{ÆPo_(ï˜(ž¦s ; sb; 8ºt/  {P^ {O^ s‹š(ž¦ (™¥˜( (ø¨ {ÉP (*¨£%$ o ; s ; sb; +Wt/  {Q^s‹š(Ÿ¦(™¥˜( (õ¨ {ÉP (*¨£%$ o ; s ; sb; (c; (d; —(%¤—(%{W^(û»3+s‹š¤—(%{U^( ™s‹š¤—(%(e; (f; (û˜¤—(s–š*0((ú¨(™(™ (ƒ¦{X^(Q™*0 hý&{^o­ s¦š {^(ïš(™ sÀ›{0^oàº(K+s›{/^oκ(’+sÄ›{,^oøº(ï+{)^ sÆ› ¥Ÿ(‘+{-^o»{^o­ sÈ›(ê+{#^uñ.-uò.:À8Ítñ.{ï]{õ]þþ,+{ô]þþ9‚(ᨗ(%{õ]  ,  (ì3 +is‹š¤—(%{ô]  ,  (Õ +  s‹š¤—(%(Ô¨(𘤗(s–š(™++tò.{ð]8Aÿÿÿ(‹¦{*^o¹(T™(t¦{1^(Q™sÊ›{^(z+{&^  ¥²(v+ {^([ (\ (Ÿ+ (‚™ ÞEtrõp{^( r™ïp( oe ( ,¥+s\ z&þ&*A EFsÌ›þ(Œ+*0Ñþ&{^o­ s¦š {^(ïš(™ {)^ sΛ ¥Ÿ(‘+sЛ{^(z+{^([ (\ (Ÿ+{&^¥²(v+(„™ ÞEtr3õp{^( r™ïp( oe ( ,¥+s\ z&þ&*ˆ‰EFsÒ›þ(Œ+*0 V{;^(,™ (ù¨—(%s‹š¤—(%s‹š¤—(%{:^( ™ s‹š¤—(%s‹š¤—(%( ¦(û˜¤—(s–š(™ (‚¦{=^(Q™{<^(†™*ZsÔ›oÜ»þ(ë+*0 ß'{@^( ™ ( ; ( ; {B^(-™ {A^, `+ {?^(™(ù¨—(%s‹š¤—(%s‹š¤—(%¤—(%¤—(%(e; (f; (û˜¤—(s–š(™(‚¦{D^(Q™{C^sÖ›oÜ»þ(ë+*0ó' —(%{f^ s‹š¤—(%{i^ , (} ({ + is‹š¤—(%{i^ , (} (z + is‹š¤—(%{i^ , (} (y + is‹š¤—(%{i^ , (} (x + is‹š¤—(%{l^(8¼E ++ ++{o^, +`{n^, €+`{m^, @+`{h^,+`` s‹š¤—(%{h^, (‡ ( ™ s‹š+s‹š¤—(%{e^( ™ s‹š¤—(%{j^, (d   ( ™ s‹š+s‹š¤—(s–š*0Ò'(ò¨(ˆ™(™ (¦{g^o¹(T™(¦{k^(Q™{p^ sØ›oî»(ì+{q^ -* (g; {ÇP(è+þ, rœóps\ z(™¥˜((ì¨{ÉP(*¨£%$o ; s; (M; (›*0! ( ¬ {t^ , ( + % ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤% ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤% §¤% E¤% ¤% ƒ¤%  ÿ_Ò¤% c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤*0{¼(Š™ (›—(%s‹š¤—(%{t^( ™ s‹š¤—(%{ÑPo; s‹š¤—(%s‹š¤—(%s‹š¤—(s–š*0?V{˜P {˜P /+þ ,*{—P {—P /*þ*0ç'(h¦(í+9ÔŒR$,+ r¨9ps‚ zŽi S$ Y 2"£˜(oš¤S$X X3Þ (h¦(î+ sÚ›(ï+(ð+(ñ+ ŒT$,+ r¨9ps‚ zŽi ˜( Y2-£S$s‘š¥˜(¤˜(XX3Ó**0x '(Ò¨(‹™(™ sÜ›{„^o)¼(+{¹P{u^(I± (Θ{»Preõp(´+&([ sÞ›(Œ+(Θ{»Pr¡õp(´+&([ (;™(Θ{»PrÓõp(´+&{r^ , (˜ (‰™+([ sà›(Œ+(Θ{»Pröp(´+&(x¦{s^(Q™(ü¨{ÉP(*¨£%$(ü¨(ü¨{ÉP(*¨£%${X; oh; (™oi; ([ sâ›(Œ+(Θ{»Pr7öp(´+&*0j 'riöpŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( (j; ¥V$dsk; sl; sm; *0 8sê›(ò+ {^(ïš(™*0!8!'{y^ È(e È(e @%$+(™¤%$X@2ä(n; ¥Y$röpdso; sp; sq; (r; ¥^$ r›öpd ss; st; su;  ds_:  Èsv;  (w; ¥b$r«öpdsx; sy; sz;  ({; ¥d$rÁöpds|; s}; s~; d(ó+s; (€; ¥f$rÙöpds; s‚; sƒ; („; ¥i$rõöpds…; s†; s‡; (ˆ; ¥l$r ÷pds‰; sŠ; s‹; (Ú°(Œ; @œ(e(m+     sä›r÷pds; sŽ; s; sç›r+÷pds; sŽ; s; (; ¥er7÷pds‘; s’; s“; (; ¥erG÷pds‘; s’; s“; s› (Ž™{ÇP--ra÷p(>À++C(”; (= (”; (< ,(ب+(ø¨(*¨b`,+(V {ÁP{ÄP  {•; o–; {ÃPo—; sš{ÓP""{˜; o™; !!Œé,+ r¨9ps‚ z!Žiñ#%Y$$%2F#%!%£m&(W &o‰ ’%¤’(JÀ(º+¤ñ%X%%$X3º# {ÔP""{˜; o™; !(ˆ ((sì›'!Œé,+ r¨9ps‚ z!Žiñ)%Y$$%2')%'!%£moš; ¤ñ%X%%$X3Ù)#{ÒP**{›; oœ; ){ÑP**{›; oœ; +{ÉPŒs$,+ r¨9ps‚ zŽiR$-%Y$$%2.-%%£%$..{X; oh; ¤R$%X%%$X3Ò-,{¿PoY/sî›sð›sò›sô›sö›s'›0(Θ{»PrÍ÷p(´+&{ÅPoY1{ÆPoY2 #)+,/{¾P120s; sž; *FsŸ; þ(ô+*>-*YZX*0iõ Ži2YrøpŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( r/øp( s\ z£’*nŽi2 rKøps\ z£’*nŽi2 r‡øps\ z£’*0"'£R$ (+¨(™*0"u& (*¨£R$Ži _cþþ*0 +'( ; s¡; (‘™ (¢; (£; (¤; (¥; (¦; (¥; (§; (¥; (¨; (¥; (©; (ª;  («;  (¥; (¬;  (­;  (®;  (Θr·øp(´+& ŽiXY[Zsú›Xs¯; (°; Y(õ+Žisú›Xs¯; ({ (z (y (x (™( ( (y (z ({ (W rëøps±; (ö+s œ(÷+o‰ ŽiXY[Zsú›Xs¯; (°; sú›Xs¯; (°;  rÿøpob X##XY[ZX"" sú› "Xs¯; !!(°; "rùpob X%%XY[ZX##"sú›"#Xs¯; $$(°; #rùpob X''XY[ZX%%#sú›#%Xs¯; &&(°; %rùpob X))XY[ZX''%sú›%'Xs¯; (((°; 'r+ùpob X++XY[ZX))'sú›')Xs¯; **(°; )s œ(ø+X++XY[Z,s œ(ø+X--XY[Z. ŽiZ//XY[Z0sœ (ø+X11XY[Z20 þþ3, þþ42 þþ5sœsZ s³; (ù+66(´; ( 76(´; ( 8(ü¨: :(*¨£R$Ži1 +(þ¨: :(*¨£R$Ži1 +` `9(Θr7ùp(´+&ŽiX(x+<sß =?Ži>>?2><?=(ò ¤’?Y£ñ@==(ò @ŽiX(ó ?X??>X3Â<;ŽiX(x+Asß =?Ži>>?2KA?=(ò ¤’?Y£ñ@@ŽiXB==(ò BXB(јX(ó ?X??>X3µA< ŽiX(x+Csß =? Ži>>?2HC?=(ò ¤’ ?Y£ñ@==(ò @ŽiX@Ži(јX(ó ?X??>X3¸CA(Θrgùp(´+&@R$E>+E> >(—™¤R$>X>>@2ãED(Θr©ùp(´+&DŒ|$,+ r¨9ps‚ zDŽi>>óGB>Y??B20GBDB£R$HHŽi þþ¤óBXBB?X3ÐGF (Ô¨(˜™,+ (Ó¨(˜™,+ (í¨(˜™I (Ô¨(˜™,+ (ب(˜™J (Ö¨(˜™,+ (Ú¨(˜™,+ (é¨(˜™K (ب(˜™,+ (Ö¨(˜™,+ (Ó¨(˜™,+ (Ô¨(˜™,+ (Ú¨(˜™,+ (Û¨(˜™,+ (ܨ(˜™,+ (Ò¨(˜™,+ (à¨(˜™,+ (é¨(˜™,+ (æ¨(˜™,+ (ã¨(˜™,+ (ì¨(˜™,+ (í¨(˜™,+ (ò¨(˜™,+ (õ¨(˜™,+ (ø¨(˜™,+ (ù¨(˜™,+ (ú¨(˜™,+ (ü¨(˜™,+ (þ¨(˜™,+ (ý¨(˜™L (Ö¨(˜™,+ (Ú¨(˜™M (Ô¨(˜™,+ (ب(˜™,+ (ò¨(˜™N (Ó¨(˜™,+ (ì¨(˜™,+ (ب(˜™,+ (í¨(˜™O (æ¨(˜™,+ (é¨(˜™P (ب(˜™,+ (ܨ(˜™Q (Ö¨(˜™,+ (ب(˜™R (ø¨(˜™,+ (õ¨(˜™,+ (ù¨(˜™S (ب(˜™,+ (ܨ(˜™T (Ò¨(˜™,+ (ì¨(˜™,+ (õ¨(˜™,+ (Ó¨(˜™U N(eVV’%¤’%¤’%¤’%¤’%¤’%¤’%4,+3,+`5,+`¤’%¤’o\V8o^V7o^V ú3o^V9o^>+'D>£R$HHŽi,VHŽio^+>X>>DŽi2Ñ(ΘrÁùp(´+&>8,D>£R$H?8H?£˜(WWošXB8ÛXB£—(YY{—PZY{˜P[Z-[ÑVio`8žZ3V[o^8‰Z3!V)VodX[s  (ú+8cZ3!V)VodX[s  (ú+8=Z3V3[(“™(Ô˜8!Z3V5A[(–™(Ô˜8Z3V4;[(”™(Ô˜8åZw0VFZY£ó[(Ô˜8ÄZz0VZxYI[(Õ˜8¦Z|0VZ{YJ[(Õ˜8ˆZ0VZ}YK[(Õ˜8jZ •0VZ €YL[(Õ˜8FZ —0VZ –YM[(Õ˜8"Z š0VZ ˜YN[(Õ˜8þZ Ÿ0VZ ›YO[(Õ˜8ÚZ ¡0VZ  YP[(Õ˜8¶Z ¤0VZ ¢YQ[(Õ˜8’Z ¦0VZ ¥YR[(Õ˜8nZ ©0VZ §YS[(Õ˜+MZ ­0VZ ªYT[(Õ˜+,Z ²0VZ ®YU[(Õ˜+ róùps\ zBXBBXŽi?ýÿÿ?X??HŽi?íüÿÿ>X>>DŽi?ÉüÿÿVoY@(Θr)úp(´+&@Ži>>XBBXY[Z??)sú›)?Xs¯; \\(°; B?>YZ,Bsú›B,Xs¯; ]](°; [,+Y^.[sú›[.Xs¯; __(°; `.-Ya ŽiZcc`sú›`cXs¯; bb(°; cb(µ; d21Ye(Θr[úp(´+& ¡(eVV’%Ð)P(E o\Vo^Vo^Vo_hŽiYggh2VoZhXhhgX3éV%¤%¤%¤%¤o_V)o^V?o^V’%#¤’%~¤’%¤’%¤’o\VBo^V,o^V ’%Ð*P(E o\V[o^V.o^V’%#¤’%U¤’%S¤’%¤’o\Vd{_Qo^Vd{^Qo^V’%Ð+P(E o\Vco^V2o^V’%Ð,P(E o\(Θr{úp(´+&V@o_hZggh2VoZhXhhgX3é(Θr§úp(´+&VoZg+Vg£ño_gXggŽi2áh^ggh2VoZhXhhgX3é(ΘrÓúp(´+&VoZg+7g£ñiViŽiX(Ò˜Vio_Vi(טoZgXggŽi2Âhaggh2VoZhXhhgX3é(Θrûp(´+& Œ}$,+ r¨9ps‚ z ŽigjgYhhj2V j£ño_jXjjhX3áVoZg+' g£ñiViŽi(Ò˜Vio_gXgg Ži2Ñheggh2VoZhXhhgX3é(Θr9ûp(´+&VoYf¥~$o¶; kkoï 9 ko·; mm(¸; nm(¹; gn¥Úo­ oooï 9¬oo® qq( hq( jg/+ gXþþ, r]ûps\ zgjXYr r ï¾­Þ(ؘ(ÿ¨:<h(•™t:(*¨bt`srYt t£ir. rôûps\ z rs(Ù˜8HÿÿÿpÞou uu, uoâ &Ü&Üp&8ëþÿÿlÞku uu, uoâ &Ü&Ül&(ΘrVüp(´+&  f (º; s»; s¼; *A4齦´Î~ÎQ*0¨!ÿ_Òo½; c!ÿ_Òo½; c!ÿ_Òo½; c!ÿ_Òo½;  c!ÿ_Òo½; (c!ÿ_Òo½; 0c!ÿ_Òo½; 8c!ÿ_Òþo½; *0H ÿ_ÒÒo½; c ÿ_ÒÒo½; c ÿ_ÒÒo½; c ÿ_ÒÒþo½; *’ ÿ_ÒÒo½; c ÿ_ÒÒþo½; *ª{^Q-+{_Q(œ™{^Qþ(œ™*02,'{_QX {_Q/rtüp(>À+{_Q{^QX?úr®üpŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( r ýp( {_QŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( r:ýp( {^QŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( (>À+*0ù-'9ä (Õ o¾; o¿; oÀ; i ;½rhýp( r|ýp( Œ’,4u¼,(x ¥|o¡ +o& +rR9p( r¾ýp( Œ’,4u¼,(x ¥|o¡ +o& +rR9p( s\ z+ŽiþoÁ; *0-./ rÖýps\ z Y 2o½; X X3ï*0ž0' (d (å˜ (Θrþp(´+& sÂ; sÃ; o¿; {_QoH joÄ;  {X(œ™(œ™ {‚X(™ {ƒX(™ {„X(œ™ {…XŽi(œ™{_Q(œ™{_QoH (œ™o¿; {_QoH joÄ; {^Q {…XŽi/ r(þps\ z {…XŽioÁ; oÅ; ÞXt r«þp oe (  ,¥+ s\ z&oÅ; ( Áo,Á Þ t  Þ &þ Þ t þ&*ALc| Bó5X ˆ’ 0ë6'(Θrÿp(´+&{y^ {r^ :‹9 (˜ {h^,n (˜ {h^(‡ rÿp(>Àr²ÿp(>Àr;p(>ÀrÊp(>Àrcp(>Àrøp(>Àr‘p(>À(`š(M + ++ ,_(Æ; otš(m  Þ=t r¥p oe ( rR^p(  ,¥+ s\ z& Þ +{r^ ,Q (˜   {h^    (ä+þ, {h^  (ä+þ+,rùp(>À++{r^ ,m (˜   {e^ {f^ {g^ {i^ {j^ {k^ {l^ {m^ {n^ {o^ {p^ {q^sO¼([ +{s^{t^{u^{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼( ¬( Áo$ÁsÃ; Þt ràp(   s\ z{‚^{€^{^{{^(ͳ(„ (û+{^, ð+ à ˜sú› ˜Xs¯; (°; (sú›(Xs¯; (°; (sú›(Xs¯; (°; (sú›(Xs¯; (°; Y  X""XY[Z!!Y" X$$XY[Z##sú›#Xs¯; %%(°; $%(µ; &,$XY[Z+$$Y'$'X(H(sú›(HXs¯; ))(°; *)(µ; +{ƒ^rR9p(ñ -{ƒ^(²8ˆ••uv--•uw--r@ps\ zrÃps\ ztw---{ÁY..oK²//- rHps\ z/00(} ({ YE0(} 11+ rœp(²,33(2+þ, *(™™22(Ç; 2(È; 42(É; (Ê; 52(Ë; 62(É; (Ì; 72(Í; 82(Î; 92(Ï; :2(Ð; ;(Θr´p(´+&;Ži==*sú›*=Xs¯; <<(°; =:Ži??=sú›=?Xs¯; >>(°; ?6ŽiAA?sú›?AXs¯; @@(°; A@(µ; B,+(Æ; oušDDAsú›ADXs¯; +sú›As¯; CC(µ; EC(°; DŽiGGDsú›DGXs¯; FF(µ; HF(°; G9ŽiJJGsú›GJXs¯; II(µ; KI(°; Jsú›L,JXY[Z+JJYMJMXN(Nsú›N(Xs¯; OO(°; PPsú›PXs¯; QQ(°; RRsú›RXs¯; SS(°; T Tsú›T Xs¯; UU(°; VVXXXXY[ZYWWNYNsú›YY{^QVYXWXZZsú›ZXs¯; [[(°; \,+^^\sú›\^Xs¯; ]](°; ^](µ; _(2+,+aa^sú›^aXs¯; ``(°; a`(µ; b,!33(d  (ˆ  oÑ; X(X+eeXY[Zddasú›adXs¯; cc(°; dc(µ; fd#Ye!eXhhXY[Zgg!Yh#eXjjXY[Zi{^,(V¬+(T¬k{…^mm(Ò; - +c(°, +Ssœm(ü+nnik(õ (!¬oÞ,t rèp oe ( rR9p(   s\ zollŽijjisú›ijXs¯; pp(°; qp(µ; rqi3+ttqsú›qtXs¯; ss(°; ts(µ; utiYvgvXxxXY[ZwwgYxivXzzXY[Zy ysú›y Xs¯; {{(°; z{(µ; |zyY}w}XXY[Z~~wYy}XXY[Z€6HKsœ4(ý+(Θr.p(´+&(V rHp(š™( ™ €(V rbp( ™ PE(œ™ „(V r|p( ™{{^(˳(„ (û+, d†(™+", (™+ L(™(™(œ™(œ™(œ™(™{{^‚‚,!‚ƒƒ(0 (ϳE  +  + , +````(™,({ ,(z ,(y ,(x (™„ ˜(V ršp( ™{^, (™+ (™„(™h(œ™x(œ™(œ™Z(œ™#(œ™{^,j(›™+i(œ™(œ™(œ™(œ™(™(™(™(™{v^……( †…( ‡‡(™†(™(œ™€(œ™"(œ™(œ™{x^(™{^,, @…+ @+ @‡{w^,‡ `+‡††(™{^,T{|^ @(†+jˆˆ(›™!@(›™!(›™! (›™+E{|^ (†+‡‡(œ™ (œ™ (œ™ (œ™(œ™(œ™(œ™(œ™Y(ž™r(ž™(œ™(œ™(œ™(œ™|(ž™b(ž™(œ™(œ™(œ™(œ™(œ™(œ™(œ™(œ™(œ™(œ™&(ž™(œ™(œ™+(ž™(œ™(œ™(V rÀp( ™%Ð.P(E oooŽioÁ; e(œ™#(œ™h(œ™!(œ™(œ™(œ™(™(™%Ð/P(E oooŽioÁ; (V rèp( ™%Ð0P(E oooŽioÁ; v(œ™i(œ™x(œ™g(œ™(œ™(œ™(™(™%Ð1P(E oooŽioÁ; (V rp( ™%Ð2P(E oooŽioÁ; }(œ™y(œ™(œ™w(œ™(œ™(œ™(™(™%Ð3P(E oooŽioÁ; r:p! Y(þ+!#sœ‰##Y!X(V r^p( ™R(œ™(œ™{z^,+{}^,+`{~^, +`,&(Æ; ––u’(- –u“(-++,+`‡,({ ,(z ,(y ,(x (™……( Š…( ‹r‚p'(þ+(#Y!X(V r¦p( ™H(œ™‹(™Š(™B(ž™‡(œ™8(œ™r¼p( ™H(ž™E(ž™(œ™(œ™L(ž™(œ™(œ™(œ™(œ™;;ŽioÁ; râp:( ™66ŽioÁ; (ÿ+þ,/E{_Q#Y!X(V rüpE{^Q(õ+( ™+H{_Q#Y!X(V rp( ™ŽioÁ; K{_Q#Y!X(V r.p( ™99ŽioÁ; r@pM(þ+N#Y!X(V rlp( ™P(œ™(œ™(œ™T(œ™#(œ™(œ™(œ™(œ™(œ™(œ™P#Y!X(V r†p( ™R(œ™(œ™(œ™(œ™(œ™R#Y!X(V r®p( ™,%%Ð4P(E oooŽioÁ; +#%Ð5P(E oooŽioÁ; T#Y!X(V rÜp %Ð6P(E ( ™rúpX(þ+r p(þ+#XŒZ#Y!X(V rD p% ÿ¤%%¤%Œ ÿ_Ò¤%Œc ÿ_Ò¤%Œc ÿ_Ò¤%Œc ÿ_Ò¤( ™,3_{_Q#Y!X(V rf p%Ð7P(E ( ™+þ,Vb{_Q#Y!X(V r– p(õ+( ™f{_Q#Y!X(V r¶ pf{^Q(õ+( ™+rÌ pg!YeY(þ+lþ, lŽiþ+,+/iiYgX(V ræ p( ™llŽioÁ; u{^Q,3u{_QiYgX(V r p%Ð8P(E ( ™+r& pwgYvY(þ+ZX [ ZŽŽY{^,  + 0`-+"  _{_Q_{_Q [ ZY`‘yyYwX(V r@ p %Ž ÿ_Ò¤%Žc ÿ_Ò¤%Žc ÿ_Ò¤%Žc ÿ_Ò¤% ¤%¤%¤%¤% ÿ_Ò¤% c ÿ_Ò¤% ‘ ÿ_Ò¤% ‘c ÿ_Ò¤( ™rb p~wY}Y(þ+oÅ; (+’Þ t ’Þ’&5bf‰7sÓ; Þ1t oÅ; ( Áo,Á’Þ t“’Þ’&þ(Ô; ‰(Õ; 5(Ö; 7(×; &(Ø; +(Θr~ p(´+&, 5(î˜+,P3(°,3(d   5(+&+0,‰5&+(¢™+rš p ¹só z(Θre p(´+&9§(Æ; ovšorš’Ý{t r p oe ( rR^p(  ,¥+ s\ z&orš”Þ t“”Þ”&( Áo,Á”Þ t“”Þ”&’Þ’&+(Θró p(´+&7*AÜÆ×=‰žßõ,  D] ¿~=1Œš ©» :T{0´+(y {nQ {nQ  /+ þ /*1*(y {oQ {oQ  /+ þ/*1*(y {pQ {pQ  /+ þ/*1*(y {qQ {qQ  /* þ*0—-{nQ {nQ /+þ /*1*{oQ {oQ /+þ / * 1 *{pQ {pQ /+þ/*1*{qQ {qQ /*þ*0 57'{kQ{lQ{mQ{nQ{oQ{pQ{qQ(£™ *6€ÏQ~ÏQ&*:( }9P*B{9Pþoì *:(Ù; }:P*0®{:PoÚ; s¨™*:(Û; };P*09'{;PoÜ; sª™*(Ý; *0£<'9š( o ( (И(Þ; , (ß; + # (Ϙ(Þ; , (ß; +(Ϙ(à; (á; r psâ; (+s¬™YY(+&(И(à; (á; **{P*r( }P*0…='þ9qþ,i(y {P {>P /* þ**þ,**:¥\(o´™*0ƒ>'¥\( þ,f¥\(þ,Y{P {>P /* þ**¥\(þ,**0aÍþ,X ¹y7ž{>PbcXXX ¹y7ž{=P(i+bcXXX ¹y7ž{P{>Pþ****þþ*0Pþ,Aþ,9{P{>Pþ****þþ*0?'u\( ,oº™**{?P*{@P*{AP*{BP*’( }?P}@P}AP}BP*rþ, þ(Ú˜*þ,**B¥](þoÁ™*0*@'¥]( þ, þ(Û˜*¥](þ,**0mþ,d ¹y7ž{BP(+bcXXX ¹y7ž{APbcXXX ¹y7ž{@PbcXXX ¹y7ž{?P(+bcXXX **6(n oÄ™*0f@'þ,Wu]( ,K{?P{?P(+,5{@P{@P3%{AP{AP3{BP{BPþ(+*****þþ*0`þ,Qþ,I{?P{?P(+,4{@P{@P3${AP{AP3{BP{BPþ( +*****þþ*0@'u]( , þoÇ™**{CP*{DP*{EP*r( }CP}DP}EP*0 ='þ9Œþ9(y {CP {CP  /+ þ /*1*(y {DP {DP /+ þ /*1*(y {EP {EP /* þ**þ,**:¥^(oÍ™*0ŸA'¥^( þ9¥^(þ9o{CP {CP  /+ þ /*1*{DP {DP /+ þ /*1*{EP {EP /* þ**¥^(þ,**0Lþ,C ¹y7ž{EPbcXXX ¹y7ž{DPbcXXX ¹y7ž{CPbcXXX **6(n oЙ*0JB'þ,;u^( ,/{CP{CP3{DP{DP3{EP{EPþ****þþ*0Fþ,7þ,/{CP{CP3{DP{DP3{EP{EPþ****þþ*0B'u^( ,oÓ™**{FP*{GP*{HP*{IP*{JP*{KP*Ò( }FP}GP}HP}IP}JP}KP*0‡='þ9sþ9h(y {FP {FP  /+ þ /*1*(y {GP {GP /+ þ /*1*(ܘ**þ,**:¥_(oÜ™*0‰C'¥_( þ9i¥_(þ,\{FP {FP  /+ þ /*1*{GP {GP /+ þ /*1*(ݘ**¥_(þ,**0Žþ9‚ ¹y7ž{KPbcXXX ¹y7ž{JPbcXXX ¹y7ž{IPbcXXX ¹y7ž{HPbcXXX ¹y7ž{GPbcXXX ¹y7ž{FPbcXXX **6(n oß™*0zD'þ,ku_( ,_{FP{FP3O{GP{GP3?{HP{HP3/{IP{IP3{JP{JP3{KP{KPþ*******þþ*07E'rw psŠ (1+ së™{HP{IP{JP{KPþ(2+*0vþ,gþ,_{FP{FP3O{GP{GP3?{HP{HP3/{IP{IP3{JP{JP3{KP{KPþ*******þþ*0D'u_( ,oã™**:(Ó }LP*B{LPþo  *:(Ù }MP*0¸{MPoÚ så™*:( }NP*0º{NPoŽ sç™*:( }OP*0B {OPo sé™*{PP*{QP*{RP*{SP*{TP*{UP*Ò( }PP}QP}RP}SP}TP}UP*0F'þ9óþ9è(y {PP {PP  /+ þ /*1*(y {QP{QP( /*1*(y {RP{RP(±+ / * 1 *(y {SP{SPoÙ/*1*(y {TP{TP( +/*1*(y {UP{UPþ( +**þ,**B¥d(þoô™*0úG'¥d( þ9Ú¥d(þ9Ê{PP {PP  /+ þ /*1*{QP{QP( /*1*{RP{RP(±+ / * 1 *{SP{SPoÙ/*1*{TP{TP( +/*1*{UP{UPþ( +**¥d(þ,**0µÍþ9© ¹y7ž{UP( +bcXXX ¹y7ž{TP( +bcXXX ¹y7ž{SPoÄ™bcXXX ¹y7ž{RP(+bcXXX ¹y7ž{QP , ( +bcXXX ¹y7ž{PPbcXXX **6(n o÷™*0¡H'þ9ud( 9€{PP{PP3p{QP{QP(ñ ,[{RP{RP(+,E{SP {SP oÆ™,+{TP{TP(+,{UP{UPþ(+*******þþ*0•þ9ƒþ9x{PP{PP3h{QP{QP(ñ ,S{RP{RP( +,>{SP{SPoÇ™,){TP{TP(+,{UP{UPþ(+*******þþ*0I'ud( , þoú™**{VP*{WP*{XP*{YP*’( }VP}WP}XP}YP*(ã; *"{PP*(ä; *&sß: *:(å; }ZP*0J'(Þ: (Ý: {ZP(˜œ*(æ; *0J'(Þ: (Ý: sš*(å; *"(Þ: *(ç; *0aM'(è; (é; {FP (+ -(ê; (ë; sì; þoí; * (î; (ï; (ë; (ð; *(ñ; *0N'(ò; (ó; (ï; þ(+*(ô; *&(™œ*V(õ; }[P}\P*0 P'Ži>”sš(+Œ$,+ r¨9ps‚ zŽi  $ Y 2"£_((☤ $X X3Þ Ži ˆ/+{[P(â: {\P£_({FP(ߘ(/¬***:(ö; }]P*F{]P(ä˜*²(÷; }^P}_P}`P}aP}bP*0 GS'{aP{bP(ò {`P£’(+ {bP{bP(ò {`P£’X(ó {TP 9ñ (ê: (ø; (ê: (ë: {^P(â: {PP()¬{^P(â: {_P{CP(ߘ{DP{EP{_P {CP(ߘ {DP {EP(.¬(+(+(+s š(+(+{^P{_Psš(+{^P{^P{SP(ä˜{^P(â: (*¬**V(t: }cP}dP*¦ow5 {cP(ñ ,oC6 Ži{dPŽiþ**0D}eP}fP}gP}hP}iP}jP}kP}lP(ù; *0{kPYE +8Ç8¦8Ü{eP{XP¥$oú; }jP}kP{jPoï 9‰{jPoû; }gP{fPr— p{gPoè³(+}hP{fPrµ p{hP(+}iP}kP{hP{iPsü; }lP*}iP}hP}gP8gÿÿÿ}kP{jP(+}jP}kP}lP*0‡e {kPYE++e{kPE + ++++}kP{jP(+}kP}lP Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{kPE + + +++***"{lP*0 {eP{fPsš*(ã; *"{PP*:( }mP*B{mPþoì *:(‘ }nP*0®{nPo’ s!š*(ã; *"{PP*:( }oP*B{oPþo *:(L }pP*0{{pPoM s'š*²}qP}rP}sP}tP}uP(• *0âÀ{tPYE +8–8†8«{qP{RP¥Ž$oý; }sP}tP{sPoï ,[{sPoþ; }rP}tPrá psC (ª+ s)š{rP{>P{rP{P{ŠP{d' u’(- u“(-*t’( {’P(P¬*t“( {“P(Q¬*0êf'þ9Øþ9Íu“(,+ u’(,+   u“(,+  u’(,+ @Š  u‘(- u’(-+ u“(-Ht‘( t‘( {‘P {‘Pþ(l+*t’(t’({’P{’Pþ(l+*t“(t“({“P{“P(ñ ***þþ*0\'u( , þowš**:(_š}‘P*{‘P*:(_š}’P*{’P*:(_š}“P*{“P*:( }”P*2{”P{‘P*:( }•P*2{•P{’P*:( }–P*2{–P{“P*0Wh' (y {—P {—P /+ þ /*1*(y {˜P {˜P /* þ*:¥—((…š*0Ri'¥—(  {—P {—P /+ þ /*1*{˜P {˜P /* þ*0/ ¹y7ž{˜PbcXXX ¹y7ž{—PbcXXX *6(n (ˆš*04j'(#+-*¥—(  {—P{—P3{˜P{˜Pþ**B}—P}˜P*"{—P*"{˜P*0#k' {—P{—P3{˜P{˜Pþ**b(#+-*¥—((Žš*Šo &}™P{™P($+}šP*"{™P*"{šP*0#m'uš( , {™P{™Pþ(%+**"{™P*Fo &}›P*"{›P*6{›P(þ˜*0!o'u›( , {›P{›P(ÿ˜**"{›P*0§o &}œP —(%is‹š¤—(%is‹š¤—(%is‹š¤—(%is‹š¤—(%s‹š¤—(%s‹š¤—(%s‹š¤—(%s‹š¤—(% s‹š¤—(}P*"{P*"{œP*0!q'uœ( , {P{P(ÿ˜**"{P*0Xr'o &%% (þ (ˆšZXZX}žP—(%¤—(%s‹š¤—(%s‹š¤—(}ŸP*"{ŸP*"{žP*0!s'u( , {ŸP{ŸP(ÿ˜**"{ŸP*{ P*:( } P*08t'þ,'þ,(y { P { P /*þ**þ,**:¥ž(o§š*0Cu'¥ž( þ,&¥ž(þ,{ P { P /*þ**¥ž(þ,**0"þ, ¹y7ž{ PbcXXX **6(n oªš*0*v'þ,už( ,{ P{ Pþ**þþ*šþ,þ,{ P{ Pþ**þþ*0v'už( ,o­š**{< *{< *{< *"}< *r( }< }< }< *>{< þo- *Vds- s< s< *6{< o< *6{< (&+*0*{< o- X {< o- {< o- *0{< o- X {< o- *0 {< o- ,*o< *0.x'¥s< (< {< o< s< þ('+*0J{< o< ,3ru po|* ( r™ p( ( r¥ p( s\ zo< *B{< þo< *:(k }< *J{< Xo- *0o &}¥P}©P}§P}¦P}ªP}¨P%%%%{¥PZ{©PXZ{§P , ( +XZ{ªPoþ XZ{¨PX}«P*"{¥P*"{©P*"{§P*"{¦P*"{ªP*"{¨P*"{«P*0œz'u¡( 9Œ {¥P{¥P3{©P{©Pþ+,{§P{§P(ñ +,{¦P {¦P  (n o3³+,sÉš{ªP{ªP((++,{¨P{¨Pþ***(< *B(n þo3³*0Do &}­P}®P}¬P%{­PZ{®P , ( +X}¯P*"{­P*"{®P*"{¬P*"{¯P*0T{'u£( ,G {­P{­P3{®P{®P(ñ +,{¬P {¬P  (n þo3³****sÒš*’( }°P}±P}²P}³P*{°P*{±P*{²P*{³P*&*Zr.8ps< ()+o< *’þ,þ, &(™**þ,**:¥¤(oÙš*06|'¥¤( þ,¥¤(þ, &(™**¥¤(þ,**0‚}'þ,y &  ¹y7ž{³Po¿ bcXXX ¹y7ž{²Po1³bcXXX ¹y7ž{±P , ( +bcXXX ¹y7ž{°PbcXXX **6(n oÜš*0~'þ,pu¤( ,d&  {°P{°P3N{±P{±P(ñ ,9{²P {²P o3³,{³P{³PþoÀ *****þþ*0k'þ,\þ,T&  {°P{°P3>{±P{±P(ñ ,){²P{²P(Ó+,{³P{³Pþ(+*****þþ*0|'u¤( , þoßš**"sâš*V( }´P}µP*{´P*{µP*&*Zr.8ps< (*+o < *0k'þ,Zþ,R&  (y {´P{´P/+þ /*1*(y {µP{µP( **þ,**:¥¥(oçš*0p‚'¥¥( þ,S¥¥(þ,F&  {´P{´P/+þ / * 1 *{µP{µP( **¥¥(þ,**0Lƒ'þ,C &  ¹y7ž{µP , ( +bcXXX ¹y7ž{´PbcXXX **6(n oêš*0C„'þ,4u¥( ,(&  {´P{´P3{µP{µP(ñ ***þþ*0?…'þ,0þ,(&  {´P{´P3{µP{µP(ñ ***þþ*0†'u¥( ,oíš**"sðš*V( }¶P}·P*{¶P*{·P*&*Zr.8ps!< (++o"< *0d‡'þ,Sþ,K&  (y {¶P{¶P om /*1*(y {·P{·P( **þ,**:¥¦(oõš*0iˆ'¥¦( þ,L¥¦(þ,?&  {¶P{¶Pom / * 1 *{·P{·P( **¥¦(þ,**0R‰'þ,I &  ¹y7ž{·P , ( +bcXXX ¹y7ž{¶Pod bcXXX **6(n oøš*0OŠ'þ,@u¦( ,4&  {¶P {¶P oe ,{·P{·P(ñ ***þþ*0D‹'þ,5þ,-&  {¶P{¶P(e+,{·P{·P(ñ ***þþ*0Œ'u¦( ,oûš**{¸P*{¹P*{ºP*{»P*{¼P*{½P*{¾P*{¿P*{ÀP*{ÁP*{ÂP*{ÃP*{ÄP*{ÅP*{ÆP*{ÇP*{ÈP*{ÉP*{ÊP*{ËP*{ÌP*{ÍP*{ÎP*{ÏP*{ÐP*{ÑP*{ÒP*{ÓP*{ÔP*"}¾P*"}ÀP*"}ÁP*"}ÇP*0ì( }¸P}¹P}ºP}»P}¼P}½P}¾P}¿P }ÀP }ÁP }ÂP }ÃP }ÄP}ÅP}ÆP}ÇP}ÈP}ÉP}ÊP}ËP}ÌP}ÍP}ÎP}ÏP}ÐP}ÑP}ÒP}ÓP}ÔP*R{ÉP(*¨£%$*0s'(¸; (¹; {ÀP XY[Z{ÀP.r³ p(>À+{ÀPXsG; {¾P(#< (›{¿Po_{ÀPŽiX(›*6{¿PoY*{ÕP*{ÖP*{×P*{ØP*{ÙP*²( }ÕP}ÖP}×P}ØP}ÙP*($< *"{·P*V(®: }ÚP}ÛP*Z{ÚP{ÛP( ™*(%< *.(©- þ*(%< *.(¨- þ*:(&< }ÜP*0/Ž'(©- ,(©- {ÜP(Õ (Ò˜*rWps\ z:(&< }ÝP*0/Ž'(¨- ,(¨- {ÝP(Õ (Ò˜*rWps\ zr(­: }ÞP}ßP}àP*r{ÞP{ßP{àP(!™*r(­: }áP}âP}ãP*r{áP{âP{ãP(!™*r(­: }äP}åP}æP*r{äP{åP{æP(!™*('< *"{®P*((< *0Ñ# rõ p(>Àr1p{¥P Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( (>ÀrOp{§P( (>Àrop{©P Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( (>À{§P*()< *"{±P*(*< *"{µP*r(­: }çP}èP}éP*0 ,{çP(Û¨{çP{èP{éP(8™(™ *V(à }êP}ëP*Z{êP{ëP(7™*V(´: }ìP}íP*Z{ìP{íP(9™*V(1 }îP}ïP*Z{îP{ïP(3™*V(³: }ðP}ñP*Z{ðP{ñP(5™*r(®: }òP}óP}ôP*r{òP{óP{ôP(:™*(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (,+-***þþ*Žþ,þ, (,+-***þþ*0*u ,oT›**:(+< }õP*07'(,< (-< {õP3(-+,(.< *r»ps\ z*V(/< }öP}÷P*06’' (0< (1< s2< (3< {¥P{÷P{¥P3{÷P{§P{§P(ñ +9ã{öP{¥P(<™ {·P {¶Prûp([ (\ (Ÿ+¥7rS@p(p+(` ( rp( (>Àr!ðp{©PŒ’,4u¼  ,   (x ¥|o¡ +  o& +rR9p( (>Àrsps4< (.+o5< (>À**( *"s\ z( *"s\ z:( }øP*B{øPþoì *:(ñ }ùP*0®{ùPoò s^›*r(­: }úP}ûP}üP*r{úP{ûP{üP(!™*r(ƒ: }ýP}þP}ÿP*r{ýP{þP{ÿP(P™*r(6< }Q}Q}Q*r{Q{Q{Q(S™*r(7< }Q}Q}Q*†{Q{Q{Q{"\(!™*^sk›€Qsk›€Q*:( }Q*~Q**(t›þ*~Q**(t›þ*s~›**(t›þ*s€›**(t›þ*{Q*Zr.8ps8< (/+o9< *0Á•'þ9­þ9¢{Q {Q @‰(t›E6*tÉ( tÉ( (y { Q { Q/*þ*tÊ(tÊ((y {Q{Q/*þ*Y**þ,**:¥Ç(ov›*0Æ—'¥Ç( þ9¦¥Ç(þ9–{Q {Q @}(t›E1*tÉ( tÉ( { Q{ Q/*þ*tÊ(tÊ({Q{Q/*þ*Y**¥Ç(þ,**0n˜'þ,e (t›E( * *tÉ(  ¹y7ž{ QbcXXX *tÊ(  ¹y7ž{QbcXXX **6(n oy›*0™'þ9}uÇ( ,q{Q {Q 3](t›E!*tÉ( tÉ( { Q{ Qþ*tÊ(tÊ({Q{Qþ***þþ*0†š'þ,wþ,o{Q {Q 3[(t›E*tÉ( tÉ( { Q { Qþ*tÊ(tÊ({Q{Qþ***þþ*0›'uÇ( ,o|›**>(k›} Q*{ Q*>(k›}Q*{Q*:( }Q*2{Q{ Q*:( }Q*2{Q{Q*{Q*{Q*{Q*{Q*{Q*{Q*"}Q*"}Q*"}Q*Ò( }Q}Q}Q}Q}Q}Q*0²þ9¦ ¹y7ž{Q(0+bcXXX ¹y7ž{Qo:< bcXXX ¹y7ž{Qo;< bcXXX ¹y7ž{Q(1+bcXXX ¹y7ž{Qo<< bcXXX ¹y7ž{Q(+bcXXX **6(n o›*0¹ž'þ9§uÍ( 9˜{Q{Q(+9{Q {Q o=< ,e{Q{Q(2+,O{Q {Q o>< ,3{Q{QoK; ,{Q{Qþ(3+*******þþ*07Ÿ'(J; (( È(e(?<  s¡›s@<  sA< s›*R{Q(B< (Ž›*0 U{ÂP,K{ÄPoø³oR; Y {Q{Qodoù³oú³oû³oü³sÛ™þoC< **>{QoZ*B{Qio`*>{Qo^*>{Qoc*>{Qo^*Ö{QodsZ {Q() (›{Q ï¾­Þo^*0a{QodsD< {Q(E< (Œ›{QoZ(; E3{Qoõ o^+s¤›þ(É+*V(V (^ oœ›*n{Q{Qodþo *0šþ9ˆþ9}{Q{Q(+,h{Q{Q(4+,S{Q{Q(5+,>{Q{Q(6+,){Q{Q(7+,{Q{Qþ(8+*******þþ*0 'uÍ( , þoŸ›***o &**þ*:(ƒ }Q*f{Q{Q »»­Þo^*(F< *0_¡'(G< (H< (I< (J< (K<  ÿÿ0 ÿÿþþ+, ÿþþ+, ÿþþ**:(L< }Q*0¢'(G< (H< (I< (J< (K< (c™{Qo`{Qo` ÿ_Ò{QioZ{Qo` ÿ_Ò{QioZ{Q(d™o^*:(L< }Q*0…£'(G< (H< (I< (J< (K< (c™{Qo^{Qo^{Qo^{Qo^{Q o^{Q(d™o^*r(­: }Q}Q}Q*0 ,{Q(þ¨{Q{Q{Q(j™(™ *r(­: }Q}Q}Q*r{Q{Q{Q(!™*V(˜: } Q}!Q*f{ Q{!QX(9+*r(‹: }"Q}#Q}$Q*0 "{"Q{#Q(«¦{$Q(:+*r(‹: }%Q}&Q}'Q*0 "{%Q{&Q(«¦{'Q(l™*r(­: }(Q})Q}*Q*r{(Q{)Q{*Q(!™*V(Ÿ: }+Q},Q*^{+Q{,Q(w™*V(Ÿ: }-Q}.Q*^{-Q{.Q(w™*V(Ÿ: }/Q}0Q*b{/Q{0Q (|™*V(Ÿ: }1Q}2Q*^{1Q{2Q(|™*V(à }3Q}4Q*Z{3Q{4Q({™*V(´: }5Q}6Q*Z{5Q{6Q(~™*V(1 }7Q}8Q*Z{7Q{8Q(h™*V(³: }9Q}:Q*Z{9Q{:Q(u™*’(M< };Q}Q*0 "{;Q{Q{=Q(;+*r(‹: }?Q}@Q}AQ*0 "{?Q{@Q(ª¦{AQ(:+*V(®: }BQ}CQ*Z{BQ{CQ(™*V(³: }DQ}EQ*Z{DQ{EQ(v™*r(‹: }FQ}GQ}HQ*0 "{FQ{GQ(ª¦{HQ(l™*V(®: }IQ}JQ*Z{IQ{JQ(ƒ™*V(N< }KQ}LQ*Z{KQ{LQ(…™*V(N< }MQ}NQ*Z{MQ{NQ(…™*:(O< }OQ*B{OQ(‡™*:(P< }PQ*~{PQ£—({PQ£—((Œ™*:(À: }QQ*B{QQ(€™*V(®: }RQ}SQ*Z{SQ{RQ( ™*V(®: }TQ}UQ*Z{UQ{TQ(™*V(®: }VQ}WQ*Z{WQ{VQ(ƒ™**o &**þ(<+*.þ(=+**o &**þ(<+*.þ(=+*(/) *"{^*:(S< }XQ*B{XQþo‰ *:(T< }YQ*0,¤'(Ô¨ {YQ(O. (P. (™ (*¨b`*:(U< }ZQ*0J¥'{ZQ(O. (P. (™ (Ö¨ {ZQ{Ú]{Û]sËš(>™ (*¨b`*:(V< }[Q*0?¥'{[Q(O. (P. (™ (ب {[Q(4™(=™ (*¨b`*:(W< }\Q*0K¦'{\Q(O. (P. (™ (é¨ {\Q{ÎP {X< (6™oY< (*¨b`*:(Z< }]Q*0P§'{]Q(O. (P. (™ (æ¨ {]Q{ÏP {[< {Æ](ášo\< (*¨b`*{^Q*{_Q*V( }^Q}_Q*0fþ,Uþ,M(y {^Q {^Q  /+ þ /*1*(y {_Q {_Q  /* þ**þ,**:¥ø(oû›*0k¨'¥ø( þ,N¥ø(þ,A{^Q {^Q  /+ þ /*1*{_Q {_Q  /* þ**¥ø(þ,**07þ,. ¹y7ž{_QbcXXX ¹y7ž{^QbcXXX **6(n oþ›*0:©'þ,+uø( ,{^Q{^Q3{_Q{_Qþ***þþ*Úþ,'þ,{^Q{^Q3{_Q{_Qþ***þþ*0©'uø( ,oœ**:(a8 }]< *B{]< o^< X*:(o }aQ*B{aQþop *:(q }bQ*0Þ{bQor sœ*:(s }cQ*0à{cQot sœ*(_< *Ži*(_< *0ŽiX (јX*(_< *0Ži (јX*V(`< }dQ}eQ*0 zV{dQ( {dQ( Ži- {dQ+D{eQ /{eQ_b`+{eQ 2{eQ Y _b`+sZ {eQXs³; *(a< *0ª'(´; (b< sœ*(c< *"od< *r(e< }fQ}gQ}hQ*0 ˜«'(f< (g< (# (" /+{fQŽiYþþ, r‰ps\ z{fQ ÝÝ­Þ(ؘ{fQ,! {gQ{^Q2rçp(>À+ +{hQ (Ÿ™(Ù˜*V(- }iQ}jQ*F{jQY{iQX*{kQ*{lQ*{mQ*{nQ*{oQ*{pQ*{qQ*ò( }kQ}lQ}mQ}nQ}oQ}pQ}qQ*0¡¬'þ9þ9‚(y {kQ {kQ  op² /*1*(y {lQ{lQ([+/*1*(y {mQ{mQ(>+/*1*(¤™**þ,**:¥)o#œ*0¤®'¥) þ9„¥)þ9t{kQ {kQ  op² /*1*{lQ{lQ([+/*1*{mQ{mQ(>+/*1*(¥™**¥)þ,**0µþ9© ¹y7ž{qQbcXXX ¹y7ž{pQbcXXX ¹y7ž{oQbcXXX ¹y7ž{nQbcXXX ¹y7ž{mQ(?+bcXXX ¹y7ž{lQ(¾+bcXXX ¹y7ž{kQoq²bcXXX **6(n o&œ*0¦¯'þ9”u) 9…{kQ {kQ os²,k{lQ{lQ(Á+,U{mQ{mQ(@+,?{nQ{nQ3/{oQ{oQ3{pQ{pQ3{qQ{qQþ********þþ*0›þ9‰þ9~{kQ{kQ(u+,i{lQ{lQ(\+,T{mQ{mQ(A+,?{nQ{nQ3/{oQ{oQ3{pQ{pQ3{qQ{qQþ********þþ*0°'u) ,o)œ**~ÍQ*0 ±'(°9ÿrKp(< (+œ,rèps— (î (X+&+r8poT9 rrp %Œù¤(x o29  r˜p (x o29 ¥’ rÌp % í`Œ’¤(x o29  Þ9t(+œ,'rpsê (î (4+o& oì Þ Þ&** ÃÎ90M.1 r psê zX[ £ùoh< -*/Y+ÃX+³0³'  Ži(B+*0 ò¶'(i< (C+ (j< (k< (l< (i< (D+(m< £. rbps\ z (; E3+(ò X(ó Xoõ ZX(ò XX(ò Xoõ ZX (; 9¹ (;  ( 9¦  ( ( :’ (   o% -$r¤p (e°( rÂp( (>À+ o% ,  o& + *,   Y € 0  þþ+, (   (Õ   oZ+* (;   oZ E3oõ o^+(ò X(ó (ò od.rèp(>À+sKœ(É+(ò . r4pþ(>À**Æ{FP{GPoH {HP{IP{JP{KPsÛ™*0‡·'{@PoH {APoH {?P Œ$,+ r¨9ps‚ zŽi ]( Y2%£]((1œ¤](XX3Û{BPsÀ™*0 *Ã'sIœ(E+ Ži(e sn< sß sß s¸ (o< sp< (q< sr<  (i<  (?<    (n o=< þ,+ (• þ9 (i< (s< þ (ò  (ò   ,Ži+ (i< (C+(k<  Y XY(V (Õ  YXY2" X£¤XX3Þo_  sä+ (t< (u< (v< (ó (ò X(ó  ,(< 8Ñþÿÿ (/œ8¹þÿÿ(t< (F+(G+sOœoY(w< sx< (y< (z< ({<  sQœs@< o|< (}< ,I(~<   (<  (€< sZ (  (    oH o +®Þþ­$oâ &Ü&s< (H+!Œ$,+ r¨9ps‚ zŽi  _(# Y  2'#£_((0œ¤_(X X3Ù#"sVœ(I+$'sXœ&'&t)'}~Q&(J+%sZœ(K+!$"%s‚< *÷WN~ÌQ*0@ ÿ1){Qc ÿ_oZ{Q ÿ_oZ*{QoZ*0 +(4œ{Q  (G™o^*0 QÄ'(4œ{Q(I™ (Z; ([; (\; (]; (^; (_; (`; (G™o^*09i  ÿ0(4œ{QoZ*(4œ{Qio`*0P€2 þþ+,%(4œ{Q/  X+oZ*(4œ{Qo^*00Å'(ý´ (n oµ, {ºP+,  þ(4œ**0 Å'(ý´ (n oµ, *(4œ**0#Æ'(!µ (n o,µ,  þ(4œ**0k(µE6* þ(4œ{QoZ* þ(4œ{QoZ* þ(4œ{QoZ*0 ýÉ'(ª§,(3œo*, (4œ*('¶Ea¾˜Ô‘ò.¶®c c´ú@-ïÅ}9  ø: Ñ W ~=” `G‹ô‚ Æ ¡ôRU«øK¿dL…årps\ ztÿ- {p[ {o[ («§oƒ< o„< (¬§oƒ< o„< (V  sÊ (V (^ oœ›**t#.{¯[þo•›*t.{ƒ[ Þ(V  ÝsÊ (V (^ oœ›*t.{u[{s[{t[ (9œ( (6œ(:œ*t.  {x[ {v[ {w[ (9œo (6œ(:œ*t.  {|[ {z[  {y[ {{[ (9œ þ(4œ{Q (™  (;  (; (™o^o (6œ(:œ*t.{‚[{[ s (6œ*t.{€[  þ (6œ*t.{”[  þ (6œ*t.{[{}[{~[(9œ)(4œ{Q(ã¨(]™ (*¨b`o^(:œ*tõ-{a[ þ(7œ*tú-{h[ þ(7œ*tö-{b[ þ(7œ*tø-{f[ þ(7œ*tü-{l[ þ(7œ*tù-{g[ þ(7œ*t$.{±[{°[(<œ(;œ þ(4œ*t%.{³[{²[(<œ(;œ þ(4œ*tô-{_[(±´EŒ{`[(á´EÐûÿÿÐûÿÿ;8Ëûÿÿ{`[tß-{šZ"(4œ{Q({. (|. o^*{`[tà-{›Z#(4œ{Q(}. oc*{`[(á´EDûÿÿ$<8?ûÿÿ{`[tÝ-{˜Z  (8œ*{`[tß-{šZ8Pÿÿÿ{`[tà-{›Z8nÿÿÿ{`[(á´EÏúÿÿ0H8Êúÿÿ{`[tÞ-{™Z!(4œ{Qoc*{`[tß-{šZ8Ïþÿÿ{`[tà-{›Z8íþÿÿt÷-{d[{e[{c[(<œ(;œ(±´E$).38 =rØps\ zM+0F++H+&J+!G+I+K+L+ N+O+P(4œ*t.{¢[(±´E##++3; Cräps\ z ›+6 œ+. +& ž+ Ÿ+  + ¡+ ¢(4œ*t.{¡[(±´E3;#C+KS [ròps\ z —+N +F ’+> ”+6 –+. ‘+& “+ •+ ˜+ ™+ š(4œ*tû-{j[{k[{i[(<œ(;œ(±´E""', 1räps\ z ß+!R+S+T+U+ V+W+Q(4œ*t.{r[(û9 EsÊ oœ›*t .  {‡[ {ˆ[! {†[(<œ(;œ{(4œ{Q!(Y™""(< "(= (Z™o^*t .{Š[!|(4œ{Q!(Y™""(< "(= (Z™o^*t.##{„[#{…[!(;œ~(4œ{Q!(Y™""(< "(= (Z™o^*t .{‰[!(4œ{Q!(Y™""(< "(= (Z™o^*t .$${Ž[${[!${[(<œ(;œ}(4œ{Q!(Y™""(< "(= (Z™o^*t .%%{‹[%{Œ[!(;œ €(4œ{Q!(Y™""(< "(= (Z™o^*t.{“[& Ð(4œ{Q&>>uÖ-:>u×-:!&tÕ-''{Z  (™  (; (())(i¦Œ²+(n (3¨,! (; (Ô¨(*¨b`8 (; (())(j¦Œ²+(n (3¨,! (; (Ó¨(*¨b`8Ø (; (())(k¦Œ²+(n (3¨,! (; (í¨(*¨b`8’rWps\ z&tÖ-**{ŽZ  (I™--(Z; -([; -(\; -(]; -(^; -(_; -(`; (H™,,(4; ,(5; ,(6; ,(7; ,(8; ,(9; ,(:; (C™++(2; ..//(—¦Œ¹+(n (y¨,!+(3; (ب(*¨b`8®+(2; ..//(˜¦Œ¹+(n (y¨,+(3; (ܨ(*¨b`+krWps\ z&t×-00{Z!!(Y™""(< ,"(= (Ö¨(*¨b`+"(= (ܨ(*¨b`o^*t.{[1r(4œ{ÔP1o; o››*t.{[  Œ(4œ{Q (™  (;  (; (™o^*t.{ž[ y(4œ{Q (™  (;  (; (™o^*t.{Ÿ[  ¥(4œ{Q (™  (;  (; (™o^*t .22{¬[ 2{«[3(“²434(n o‘²,7 (4œ{Q (™  (;  (; (™o^*3{ÅYo swœ(L+5srúåp3 (³(Õ²5(³(°(5œ*t.66{ª[ 6{©[3(“²434(n o‘²,7 ¤(4œ{Q (™  (;  (; (™o^*3{ÅYo X 3syœ(L+5(rLáp3 (³(Õ²5(³(°(5œ*t.77{¨[ 7{§[3(“²434(n o‘²,7 £(4œ{Q (™  (;  (; (™o^*3{ÅYo s{œ(L+5(rxÇp3 (³(Õ²5 (°(5œ*t.88{¦[ 8{¥[38{£[98{¤[:(1µ;9;(n o<µ, þ(4œ+(“²434(n o‘²,7 (4œ{Q (™  (;  (; (™o^*3{ÅYo s}œ(L+5(r<áp3 (³(Õ²5 ($³(°(5œ*t.{’[ t(4œ{Q (™  (;  (; (™o^*t.{‘[ u(4œ{Q (™  (;  (; (™o^*t".{®[  Â(4œ{Q (™  (;  (; (™o^*t!.{­[  Æ(4œ{Q (™  (;  (; (™o^*t.{–[  þ(4œ{Q (™  (;  (; (™o^*t.<<{˜[<{™[ <{—[(<œ(;œq(4œ{Q (™  (;  (; (™o^*t.=={›[={œ[ ={š[(<œ(;œ (4œ{Q (™  (;  (; (™o^*t.{•[ p(4œ{Q (™  (;  (; (™o^*t.{ [  þ(4œ{Q (™  (;  (; (™o^*t'.{¶[  (8œ(ÿ´{¹P{©^(Õ²rTáp{¹P{º^(= (> {¹P{º^(W°(ŵ8êÿÿ0V(…< þ,+ {ÂPþ,*(M+sœsœ(N+(O+(P+sÀ™(†< (‡< *¾(ˆ< (‰< (Š< (‹< (Œ< (< (Ž< *0 \{Qod (< (‰< (Q+s< (‘< (’< (`œ(Œ< (R+¥»$(S+(>œs“< *02Ï'(™·E>(Bœþo”< *tr. { \+¦tq. { \ { \ {Qods•< (–< s—< (˜< s™<  (š< 9ƒ (š< (š< -<(›<  (<  sœ< 8 ÿÿÿ  sœ (T+(@œþo”< *  +È0 óÓ'(™·EX77ts. {\ { \ (~°(Dœ{Qod (Bœ(< (ž< (Ÿ< (Eœ{Qodu{.:¬u|.:=tz.  {\ {Qod  (Bœ  (<  (ž<  (Ÿ< (Eœ{Qod  Y  Y(n›s < (¡< s¢< (£< (¤< s¥< (¦< (§< 8¾t{.{\ {Qod  (Bœ  (<  (ž<  (Ÿ< (Eœ{Qod  Y  Y(l›s < (¡< s¢< (£< (¤< s¥< (¦< (§< +!t|. sƒœ{\(U+ (–< (Š< s< s‡œ (V+(’< (`œs‹œ (W+¥»$(S+(X+s“< *s‘œþ(Y+*tp.{\{\(Dœ{Q{\{Qodo {\ + £ï-(=œ X Ži2äo‹·(^œ(†< s“< *0$Ž'+(V 8sÊ (V (^ oœ›*0 Œ, (Õ .(Õ (Cœ**0Ž', (Õ (Cœ**0%Õ'u),t) s“œ{„Qþ(Z+**0.Ø's•œ([+, (¨< {Q(B< (Ž›**0 üÚ'(\+ (~°(V (Bœ (ž< (< (Ÿ<  , (Õ (Cœ+(Fœ{QoY{Q(]+{Q{Q {Q {Qo©<     (^+  (ª<   («<  (¬<  (­<  (®<  (M+Ži\(sÀ™s¯< *(°< *0Û'(l< (k< (j< *0D(ƒ }rQ}sQ}tQ}uQ}vQ}wQ}xQ}yQ*0 ${tQ(ò {rQ »»­Þ(ؘ{yQ,_{vQ{uQ(ò {wQs±< {vQ(w< (²< (³< {sQ ˜oZ{uQ{uQ(ò X(ó +]{vQ{uQ(ò {xQs±< {vQ(w< (²< (³< {sQ Ð ðo^{uQ{uQ(ò X(ó {uQ(ò {sQod.rèp(>À+{tQ{tQ(ò X(ó *:(´< }zQ*0.V(ò+ (ó+ (ô+ {zQ/*{zQ1**:(- }{Q*0¸Ü'sMœ{{Q(_+ Ývt u‰ ,drpŒ’,4u¼,(x ¥|o¡ +o& +rR9p( r&p( s\ zþ {{Q£'  (ò+  (ô+   YY*v*o &**þ*:(µ< }¶< *0"&(­ (« {¶< oH s_ *:(·< }}Q*0 ¿Ý'(G< (H< (I< (J< (K< {}QoH {}QXoH {}QoH Y{}QoH {}Q XoH {}QoH Y(t›E+%tÊ({Q{}QoH (r›s < *:(¸< }~Q*:{~Q(1œ*V(¹< }Q}€Q*0æÞ'(º< (»< (¼< (½< {€Qo% -$rHp(e°( rXp( s\ z{€Qo& Y ,:{Q£i ˜. rŠps\ z{Q ÿ_Ò¤ÞA{Q Ð ð(ؘ{Q(Ù˜Þtu‰  ,Þþ*PxÈ.slœ€Q*( *~Q**u)þ*smœ**u)þ*0ß' u),+*Zr.8ps¾< (`+o¿< *0ƒá'þ9oþ,gu),+ u),+ 3=u),3t) t) (y {„Q {„QþoÀ< **Y**þ,**:¥)odœ*0Žâ'¥) þ9n¥)þ,au),+ u),+ 37u),-t) t) {„Q{„QþoÀ< **Y**¥)þ,**0=ã'þ,4 u), *t)  ¹y7ž{„QoÁ< bcXXX **6(n ogœ*0}â'þ9ku) ,_u),+ u),+ 37u),-t) t) {„Q{„QþoÂ< ****þþ*0kä'þ,\þ,Tu),+ u),+ 3,u),"t) t) {„Q {„Qþ(a+****þþ*0ß'u) , þojœ**(]œ*:(]œ}„Q*{„Q*:( }…Q*:( }†Q*2{†Q{„Q**o &*6(þ o)¶*B(n þo+¶*(Â- *0ô(Ã- (Ä- (3œoÅ- *:(½1 }‡Q*J{‡Q{¹P{º^*r(½1 }ˆQ}‰Q}ŠQ*²{ŠQ{ÅYo /{ˆQ{¹P{º^*{‰Q*:(½1 }‹Q*J{‹Q{¹P{º^*:(½1 }ŒQ*J{ŒQ{¹P{º^*:(Ã< }Q*0›å'{ÿ[ {Q{þ[£ñ Þqt rÂp{þ[Œ’,4u¼,(x ¥|o¡ +o& +rR9p( rîp( s\ z{þ[s³™*q(Ä< *V{ÿ[rR9p(ñ þ*Ò(Å< }ŽQ}Q}Q}‘Q}’Q}“Q*0 -æ'(€: (: uƒ.9+tƒ. {\ {Q{Qod{ŽQ{Q{Q{‘Q (Bœ(< (ž< (Ÿ< {Q(Eœ{Q{Qod {ŽQ{Q{Q{‘Q(Bœ  (<   (ž<   (Ÿ<  {Q (Eœ{Q{Qod{’Q{“Q{’QY  Y(r›s < (¡< s¢<   s¢< (£< (¤< (¤< s¥< *t‚.{\{Q{Qod{ŽQ{Q{Q{‘Q(Bœ(< (ž< (Ÿ< {Q(Eœ{Q{Qod {’Q{“Q{’QY Y{ŽQ{‘Q(™(; (; (™(p›s < (¡< s¢< (£< (¤< s¥< *(Æ< *"(Ç< *(È< *0!è'(É< (Ê< s…œ(b+s< *(Ë< *"(Ì< *(Í< *0è'(É< (Ê< s‰œþ(c+*0L(Î< }Ï< }Ð< }Ñ< }Ò< }Ó< }Ô< }Õ< }Ö<  }×< *0o{Õ< {Ö< {×< (< (Ÿ< (ž< (?œ{Ò< {Ï< {Ð< {Ñ< {Ó< {Ô< {Õ< {Ö< {×< (@œþoØ< *ò(Ù< }Q}žQ}ŸQ} Q}¡Q}¢Q}£Q*0 Wé'{Q{žQ{ŸQ{ Q{¡Q(< (Bœ {¡Q{¢Q{£Q(< (Ÿ< (ž< (?œ*(Ú< **:(Û< }¤Q*0ë'(Ü< (Ý< {¤Q(Gœ*:(Þ< }¥Q*B{¥Q(Fœ*6€ÏQ~ÏQ&*0\½{FP {FP /+þ ,*{HP {HP  /+ þ ,*{IP {IP  /* þ*0.{GP {GP /*þ*0±¿sß< €ÊQsß< €ËQs®™€ÉQ ,srœsÊ. €ÌQsuœ(¨§oà< (Ø+rLp(k (ñ þ Þ t  Þ€ÍQ €%Ð-P(E €ÎQ*o† **0’ñ'u7)-\u8)-ht6) {ÞQ(á< ,{ÞQ(á< (â< þoã< *{ÝQ rŠp( r¼p( s\ zt7){ßQo¼*t8){àQoÜ*0ò'u7)-eu8)-rt6) {ÞQ(á< ,"{ÞQ(á< (â< oä< joÄ; *{ÝQ rÔp ( r¼p( s\ zt7){ßQ(²*t8){àQ(Ö*0•ñ'u7)-]u8)-jt6) {ÞQ(á< ,{ÞQ(á< (â< þoå< *{ÝQ rþp( r¼p( s\ zt7){ßQo½*t8){àQoß*0mó'(œ (œ (œ (œ (œ(œ(œ(œnnb`nb` nb`n b`n(b`n0b`n8b`*0’ô'u8)-\u7)-ht6) {ÞQ(á< ,{ÞQ(á< (â< þoæ< *{ÝQ rþp( r¼p( s\ zt8){àQoÝ*t7){ßQo¾*05ö'u8),t8) {àQoÞ*(œ (œ ÑÑ bÑ`*0Z÷'(œ 5i* ¿5_ ib(œi`*?_ (œ (œ (œibib` ib`i`*0(žœ(¡œ (€. (. *0(œi -*X+è0[ø'(žœu8), t8) {àQ {ÙQ{ØQoÍ*(¥œ (žœ(Ÿœ (W  ŽiþoX *0$ù'(£œ Y(Ÿœ (ˆ ŽiþoX *0. ÿÿÿ_ d (+¨sç< *0|ú' (Ô¨Œ±+(n ((¨,(i¦+O (Ó¨Œ±+(n ((¨,(j¦+- (í¨Œ±+(n ((¨,(k¦+ r2ps\ z sè< *0Zû' (بŒ±+(n ((¨,(—¦+- (ܨŒ±+(n ((¨,(˜¦+ rŽps\ z sé< *0g½, (¡œ+(¢œi 3+-3+%3+3+3+ râps\ z _ _d o§8 sê< *0&ý'£Xsë< (ì< þ(í< s; *0(þ'£Xsë< (í< (ì< gsî< *0Pÿ'£Xsë< (í< (ì< £Xsë< (í<  (ì< iib`Ñsï< *0((®œ (ð< h(ñ< sò< *0C(£ X£ X£ X£ iib`ib` ib`XsZ *0ª'(°œ ( ( só< *0<((±œ (ô< (õ< (±œ (ô< nn b` (õ< sö< *0((²œ (÷< (ø< sù< *0*((°œ ( ( (€. (. sú< *0$ ((³œ (û< (ü< (‚. sý< *0ý (£Xsë< (í< (ì< 5 isZ * ¿58_ £Xsë< (í< (ì<  ibi`sZ *?_ £Xsë< (í< (ì< £Xsë< (í< (ì<  £Xsë<   (í<   (ì<  ibib` ib` i` sZ *0 G (/3(d+ (ÿ< (= X( +Ç(ƒ+s= *06 ((m+  Y 2X£¤X X3æXs= *0.((¸œ (= (= (W ŽioX s˜ *0Ø({æQ ( µ (n oµþ, rps\ z{èQ (#µ  (n o,µþ, rPps\ z{çQ(ÿ´(n oµþ, rœps\ z{éQ(3µ(n o<µþ, rèps\ z{êQ  (e+þ, r4ps\ z*0”({çQ (ÿ´ (n oµþ, rœps\ z{êQ   (e+þ, r4ps\ z{éQ(3µ(n o<µþ, rèps\ z{æQ{èQs= þo= *0·({æQ ( µ (n oµþ, rps\ z{çQ (ÿ´  (n oµþ, rœps\ z{êQ(e+þ, r4ps\ z{éQ(3µ(n o<µþ, rèps\ z{èQþo= *0·({æQ ( µ (n oµþ, rps\ z{èQ (#µ  (n o,µþ, rPps\ z{êQ(e+þ, r4ps\ z{éQ(3µ(n o<µþ, rèps\ z{çQþo= *0({æQ ( µ (n oµþ, rps\ z{èQ (#µ  (n o,µþ, rPps\ z{éQ(3µ(n o<µþ, rèps\ z{êQ{çQs = þo = *0·({æQ ( µ (n oµþ, rps\ z{èQ (#µ  (n o,µþ, rPps\ z{çQ(ÿ´(n oµþ, rœps\ z{êQ(e+þ, r4ps\ z{éQþo = *0(sž s‘ž*0(s“ž s•ž*0dž +(s—ž s™ž(žs = s›ž sž(žs = sŸž s¡ž(žs = s£ž s¥ž(žs = s§ž s©ž(žs = s«ž s­ž(žs = þs¯ž s±ž(žs = þs³ž sµž(žs = þs·ž s¹ž(žs = þs»ž s½ž(žs = þs¿ž sÁž(žs = þsÞ sÅž(žs = ß(«´(Àœ(žs = R(—´(Àœ(žs = S(›´(Àœ(žs = T(Ÿ´(Àœ(žs = U(£´(Àœ(žs = V(§´(Àœ(žs = W(©´(Àœ(žs = Q(¯´(Àœ(žs = M(«´(Áœ(žs = F(—´(Áœ(žs = H(›´(Áœ(žs = J(Ÿ´(Áœ(žs = L(£´(Áœ(žs = G(™´(Áœ(žs = I(´(Áœ(žs = K(¡´(Áœ(žs = N(§´(Áœ(žs = O(©´(Áœ(žs = P(¯´(Áœ(žs = þsÇž sÉž(žs = þsËž sÍž(žs = !sÏž sÑž(žs =  sÓž sÕž(!žs = sמ sÙž(#žs = "sÛžsÝž(%žs = #sßžsáž('žs = {såžsçž()žs = }sëžsíž()žs = ~sïžsñž()žs = €sóžsõž()žs = |s÷žsùž()žs = sûžsýž()žs = (sÿž  sŸ(+žs = þsŸ  sŸ(+žs = þsŸ  s Ÿ(+žs = ss Ÿ  s Ÿ(+žs = osŸ  sŸ(+žs = ÞsŸ sŸ(/žs = +sŸ sŸ(/žs = ÝsŸ sŸ(-žs = 8s!Ÿ s#Ÿ(-žs = -s%Ÿ  s'Ÿ(3žs = ,s)Ÿ  s+Ÿ(3žs = .s-Ÿ  s/Ÿ(3žs = 2s1Ÿ  s3Ÿ(3žs = 7s5Ÿ  s7Ÿ(3žs = 1s9Ÿ  s;Ÿ(3žs = 6s=Ÿ  s?Ÿ(3žs = 0sAŸ  sCŸ(3žs = 5sEŸ  sGŸ(3žs = /sIŸ  sKŸ(3žs = 4sMŸ  sOŸ(3žs = 3sQŸ  sSŸ(3žs = :sUŸ  sWŸ(1žs = 9sYŸ  s[Ÿ(1žs = ;s]Ÿ  s_Ÿ(1žs = ?saŸ  scŸ(1žs = DseŸ  sgŸ(1žs = >siŸ  skŸ(1žs = CsmŸ  soŸ(1žs = =sqŸ  ssŸ(1žs = BsuŸ  swŸ(1žs = w ÿ_ £>)(Až3+Sr†pŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (>À¤>)*£>)(Až3+Sr†pŒ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( (>À¤>)*0n0( (?ž(f+ (?ž(f+ sÙŸ (œ(g+sÝŸ(¨§oà< (Ø+(Ü(= (= (Äœ(= (= *0)2((Ü(= , (= £>)*(Æœ+×0)2((Äœ(= , (= £>)*(Æœ+×0ç4( ( E EINSX]bglqv{€ * * * * * * *t*  ¹y7ž{´R (&¨bcXXX * * * * * * * * * * * * * *~qT*~rT*~sT*~tT*~uT*~vT*~wT*~xT*~yT*~zT*~{T*~|T*~}T*~~T*~T*~€T*~T*~‚T*~ƒT*~„T*~…T*~†T*~‡T*~ˆT*~‰T*~ŠT*~‹T*~ŒT*~T*~ŽT*~T*~T*~‘T*~’T*~“T*~”T*0}7( {= {= s= (= (=  {= {= s= (= (=  /* 1*(?¨(?¨/*þ*0}:( {= {= s= (= (=  {= {= s= (= (=  /* 1*(q¨(q¨/*þ*0}=( {= { = s!= ("= (#=  {= { = s!= ("= (#=  /* 1*(I¨(I¨/*þ*0}@( {$= {%= s&= ('= ((=  {$= {%= s&= ('= ((=  /* 1*(…¨(…¨/*þ*0}C( {)= {*= s+= (,= (-=  {)= {*= s+= (,= (-=  /* 1*(]¨(]¨/*þ*0}F( {.= {/= s0= (1= (2=  {.= {/= s0= (1= (2=  /* 1*(S¨(S¨/*þ*0}I( {3= {4= s5= (6= (7=  {3= {4= s5= (6= (7=  /* 1*(­¨(­¨/*þ*2/*þ*0 K(,s8= *s9= sß s:= *0 M(,s;= *s<= sß s== *0N( X  -DY0 +òX[  o§8 o1% o>= 1 +È/ +¾ +¹(÷/ Y>­X[  -E1 +óo§8 o1% o>= -o?= (j + X+¸(K+ Y-D- +ôo§8 o1% o>= -o?= (j + Y+¹+*0qP(, (h+*(÷/ s@=   2>o§8  o1% o>= - o?= (A= (j (B= +X X3Â(A= þ(K+*0OQ((i+ (C= -* (C= (C= -(D= (E= *(D= rÔp(>À(E= *0$S((j+ - r$ps\ z(F= *0©T(1*(y {ÜR{ÜR( /*1*(y {ÝR {ÝR o¾ /*1*(y {ÞR{ÞRo0³/*1*(y {ßR {ßR þo¾ *0·U({ÛR {ÛR o̲ /*1*{ÜR{ÜR( / * 1 *{ÝR{ÝRo¾ /*1*{ÞR{ÞR  o0³/*1*{ßR{ßRþo¾ *0¬W(&  {ÚR {ÚR  o3³9ˆ{ÛR{ÛRoϲ,j{ÜR{ÜR(ñ ,U{ÝR{ÝRoÀ ,7{ÞR {ÞR  o3³,{ßR{ßRþoÀ ******0©X(1*(y {ãR {ãR  o¾ /*1*(y {äR{äR(k+/*1*(y {åR{åRo0³/*1*(y {æR {æR  þo¾ *0ŽY(1*{ãR {ãR o¾ /*1*{äR{äR(k+ / * 1 *{åR{åRo0³/*1*{æR {æR þo¾ *0Ñ[( &  ¹y7ž{æRo¿ bcXXX ¹y7ž{åRo1³bcXXX ¹y7ž{äR(l+bcXXX ¹y7ž{ãRo¿ bcXXX ¹y7ž{âR , ( +bcXXX ¹y7ž{áRoͲbcXXX ¹y7ž{àRo1³bcXXX *0Ã\(  {àR {àR  o3³9¡{áR{áRoϲ9€{âR{âR(ñ ,k{ãR{ãRoÀ ,M{äR{äR(m+,7{åR {åR  o3³,{æR{æRþoÀ *******02]({S(*¨£ó,{ùRþ(¡œ*{ùR (¢œi*0&]({S,{ùRþ(¡œ*{ùR (¢œi*0&]({S,{ùRþ(¡œ*{ùR (¢œi*0&]({S,{ùRþ(¡œ*{ùR (¢œi*0X- rvps\ z{S(Ò¨(n+ {ùR(žœ{ùR(¢œ((((sH= *0I{S(Ó¨(n+ {ùR(žœsw¡{S{ùR(o+((sI= *0 q_((p+ {S(Ô¨(n+ {ùR(žœ{ùR(¡œ((sy¡{S{ùR(q+(Ö¨((ب(sJ= *0@`({S(Ö¨(n+ {ùR(žœ{ùR (¢œi((sä+ *0 d`({S(ب(n+ {ùR(žœ{ùR(¡œ{ùR (¢œi{ùR (¢œi(((Ú¨(sK= *0H`({S(Ú¨(n+ {ùR(žœ{ùR (¢œi{ùR (¢œi(sä+ *0O_((p+ {S(Û¨(n+ {ùR(žœ(Ô¨(s{¡{S{ùR(q+sL= *0I{S(ܨ(n+ {ùR(žœs}¡{ S{ùR(r+((sM= *0U_((p+ {S(ݨ(n+ {ùR(žœ{ùR(¢œs¡{S{ùR(s+(sN= *0Z{S(Þ¨(n+ {ùR(žœs¡{ S{ùR(t+sƒ¡{S{ùR(u+(sO= *0J_((p+ {S(ߨ(n+ {ùR(žœs…¡{ S{ùR(v+(sP= *0N{S(à¨(n+ {ùR(žœ{ùR(¢œs‡¡{ S{ùR(w+(sQ= *0G{S(á¨(n+ {ùR(žœ{ùR(¢œ{ùR(¡œ(Ô¨(sR= *0<{S(â¨(n+ {ùR(žœ{ùR(¡œ(Ö¨(sZ *0){S(ã¨(n+ {ùR(žœþ(*0<{S(ä¨(n+ {ùR(žœ(Ô¨((æ¨(sZ *0Q`({S(æ¨(n+ {ùR(žœ{ùR (¢œi(s‰¡{S{ùR(q+sS= *0C_((p+ {S(ç¨(n+ {ùR(žœ(Ô¨((é¨(sZ *0@`({S(é¨(n+ {ùR(žœ{ùR (¢œi((sä+ *0]a((p+ {S(ê¨(n+ {ùR(žœ{ùR (¢œi(ب(s‹¡{ S{ùR(x+sT= *0_{S(ë¨(n+ {ùR(žœ(Ô¨(s¡{S{ùR(y+s¡{S{ùR(y+sU= *0){S(ì¨(n+ {ùR(žœþ(*0){S(í¨(n+ {ùR(žœþ(*0\`({S(î¨(n+ {ùR(žœ{ùR (¢œis‘¡{S{ùR(z+((ì¨(sV= *0<{S(ï¨(n+ {ùR(žœ{ùR(¡œ(Ö¨(sZ *0 {S(ò¨(n+ {ùR(žœ{ùR(¡œ{ùR(¢œ{ùR(¢œ{ùR(¢œ{ùR(¢œ{ùR(¡œ(((sZ sW= *0 z{S(õ¨(n+ {ùR(žœ{ùR(¢œ{ùR(¢œ{ùR(¢œ{ùR(¢œ{ùR(¡œ((((sZ sX= *0={S(ø¨(n+ {ùR(žœ{ùR(¡œ((sä+ *0 _{S(ù¨(n+ {ùR(žœ{ùR(¡œ{ùR(¡œ((s“¡{S{ùR({+sY= *0 Y{S(ú¨(n+ {ùR(žœ{ùR(¡œ{ùR(¡œ(s•¡{S{ùR({+sZ= *0C_((p+ {S(û¨(n+ {ùR(žœ(Ô¨((Ô¨(sZ *0 Z{S(ü¨(n+ {ùR(žœ{ùR(¢œ{ùR(¢œs—¡{S{ùR(|+(s[= *0H{S(þ¨(n+ {ùR(žœ(ü¨(s™¡{S{ùR(q+sL= *0C{S(ý¨(n+ {ùR(žœs›¡{S{ùR(y+(s\= *0)b((p+ {ùR {ûRX (žœþ(§œ*0c((p+ {ùR{üRXþ(¦œ*b-*{So  (c *0/b((p+ {ùR {ýRX (žœ(£œþ(Ÿœ*b-*{So]= (m *Ö{õR-+ {ôRþ,(^= *s¡(}+(^= (_= *0 Ðf((`= sa=  {ìR(بob=  2V ( (c= (d= ,,{So  s˜ (e= (f= (g= + X X3ª(e= {íR{îRX{ïR{ðRX(V (^ (^ {ñRsŸ¡(~+r´p{òRs˜ (`= (f= {ôR-(`= +rºp{ôRs˜ (`= (f= {öR-(`= +rÜp{öRs˜ (`= (f= {÷R-(`= +rp{÷Rs˜ (`= (f= {øR-(`= +r&p{øRs˜ (`= (f= (+(+(+(+(+(+(+(€+(c+¥ýsh= (+þ(‚+*>s¥¡þ(ƒ+*0}h(( ,F ( ( /{ùR Y (žœ þ(Ÿœ*+±s§¡rRpsi= („+s¯¡{úRþ(…+*0Fi(- rùps\ z{ñRs˜ oj= {èRok=   þ(1*0-{éR(*¨ !?_b_!þþ*0›k(( (l= {So  (. i{ìR(ò¨ob= 1(5([ +(x¦sm= (s±¡(†+(–°     (” sd¼*0€m((  (n= (o= (p= (q= (r= (s= ( (s= ( (t= (u=  {So   (- (– {ëR(v= (ø¨Œ±+(n ((¨,{ëR(w= (8(x= +  _þþ (¦sy= (‚  s, (~ (+(¦sm= ( _-(.¼+:3(0¼+-3(2¼+ 3(4¼+3(6¼+(.¼ @_þþ €_þþ  sO¼*0 èo((p+ (! (z= ({= (|= (}= (~= (= (€= ( (€= (  (=  {So   (-  ,. (‡  _, (²+(²(i +   (-  _þþ s, (~ (+(P²*0( {So  (^²*0=p((" (ó+ (ô+ (ò+ {So  _þ(-(^²*0or({ìR(á¨ob= s³¡sµ¡s·¡(á¨(3s¹¡(‡+ ,, (‚= (ñ< (‚= (ð< (V (2 s2»*s2»*0G_ 3(ú·*3(ü·*3(ø·*3(ô·*3(ö·*3(ð·*(ò·*0o_ 3(_»*3 (ü·(c»*3 (ú·(c»*3 (ø·(c»*3 (ô·(c»*3 (ö·(c»*3 (ð·(c»*(a»*0/_ 3 (9(»*3 (9(»*(»*0÷s(,! (p o9³o³rp(ñ + ,! (p o9³o³r”§p(ñ + ,! (p o9³o³r´§p(ñ +r´§p(ñ ,5 (p o9³o³r Gp(ñ ,rp(ñ þ++,(»* ,þ+,+,(»*,({»*(y»*b _,(}»*(=*0+ _  3(O»* 3(Q»*(M»*08(; (a» (n ol»,*(; (_» (n ol»*0;t({So  (+ - ([ sì5 * (d (°sì5 *0Ct({So  (+ ,( (d {ÿR rS@p( ( þo **0_v({ìR(Ô¨ob= 2*{ìR(Ö¨ob= X{ìR(بob= XsZ *{9SXoƒ= („= (…= sZ *0v({9Soƒ= (ˆ+s†= *0ˆw({9Soƒ= (‡= (ˆ= (‰= , (@þ+,*(A(˜ (— (t¦sm= (s»¡(+sŠ= (‹= *0 y(þ%s½¡þ(‰+*NsÑ¡(†+(–°*0 O{({ìR(Û¨ob= sÓ¡sÕ¡sס(Û¨(3(ß² (= sÙ¡ sÛ¡(Š+*^{KS(ΠþoŒ= *0 z}({ÐR {ÒR {ÑR (p+ {ìR(ü¨ob= sÝ¡sß¡s= sá¡ (ü¨(3 sã¡(‹+så¡sç¡(Œ+þ(+*0 O{({ìR(þ¨ob= sé¡së¡sí¡(þ¨(3(ß² (= sï¡ sñ¡(Š+*01~({¹R {¸R {·R (p+  (M(³(A°*0µ({9Soƒ= (‰= (@,([ +[{ìR(û¨ob= só¡sõ¡s÷¡(û¨(3sù¡(Ž+ (M oö² o÷²([ (\ (Ÿ+ {9Soƒ= (‡= (ˆ= (B(f²(ô²*0Xƒ((p+ ( (Ž= (= (= (W(‘= (’=  (B(ô²*06~({¼R {»R {ºR (p+  {CSo“= (³(A°*0Õ…( {”= {•= s; (; (; (i¦Œ²+(n (3¨,{IS (1 þo–= *(j¦Œ²+(n (3¨,{DS (@ þo—= *(k¦Œ²+(n (3¨,'oþ 1r)p(>À+ ((c*rØps\ z0¯…( {”= {•= s; (; (; (i¦Œ²+(n (3¨,  (M*(j¦Œ²+(n (3¨,{CS þo“= *(k¦Œ²+(n (3¨,r p(>À{çR{–^*r|ps\ z09ˆ( {˜= {™= sš= (›= (œ= (¦Œ·+(n (e¨,'(ß²(= {DS (@ þo—= *(¦Œ·+(n (e¨, (7(h²(M°*(‘¦Œ·+(n (e¨,V (o{ÞR{ÜR {ßR{ÚR {ÛR {ÝR     (U°o­³*(’¦Œ·+(n (e¨, ((c*ræps\ z0 «Š( {= {ž= s1; (2; (3; (—¦Œ¹+(n (y¨,; (o{ÚR{ÛR{ÜR{ÝR{ÞR{ßR(ý *(˜¦Œ¹+(n (y¨,  þ(j*r ps\ z0s‹((S {äR {åR {âR {æR{àR{áR{ãR(+þ,rXps— (6+&+ (ë *0 ( {Ÿ= { = s=; (>; (?; (¢¦Œ¼+(n (—¨,R (o{ÞR{ÜR{ßR{ÚR {ÛR {ÝR    (U°*(£¦Œ¼+(n (—¨,R (l{ÞR{ÜR{ßR{ÚR {ÛR {ÝR    (U°*rÒps\ z0´( {¡= {¢= s ; (e; (f; -(f²*(ž¦Œ»+(n (¨,  (8(h²*(Ÿ¦Œ»+(n (¨,{=S o£= (j²*( ¦Œ»+(n (¨, r ps\ zr ps\ z0( {¤= {¥= s; (; (; (¥¦Œ½+(n (¡¨,(f²([ s¦= *(¦¦Œ½+(n (¡¨, (7(h²([ s¦= *(§¦Œ½+(n (¡¨,{=S o£= (j²([ s¦= *(¨¦Œ½+(n (¡¨,8{CS o“= oõ²oö²o÷²([ (\ (Ÿ+s¦= *rBps\ z09‘( (i¦sè< ŒÎ$(n (§= ,*(= (P(ã *0Ü’((  (ô+ (ó+ (ò+ {So   _þþ (:  _þþ @_þþ €_þþ _,+ _þþ €_-+(m¦s¨= (‡(  _-+K{ìR(ߨob= sû¡sý¡(ˆ¦s©=   sÿ¡(ߨ(3s¢(+(Ì  (d _-+K{ìR(ï¨ob= s¢s¢s¢(ï¨(3s ¢(Ž+r¾Ýp(2(m  ,þ+,>{ìR(â¨ob= s ¢s ¢s¢(â¨(3s¢(Ž+(V +   (r¦sm= (sïº*^s¢(‘+(*±*Vs!¢(’+(›°*0D((¶œ ( ( _-(i¦dsè< sª= *(j¦dsè< sª= *Ú/(“+(V +/(“+(V +s³- *0 [˜(£Xsë< (í< (ì< 3{çR{˜^sl *3{çR{š^sl *3{çR{¸^sl *3{çR{¹^sl *3{çR{º^sl * 3{çR{»^sl *3{çR{Ä^sl *3{çR{¼^sl *3{çR{½^sl * 3{çR{¾^sl * 3{çR{¿^sl *3{çR{Å^sl * 3{çR{À^sl * 3{çR{Á^sl *3{çR{Ã^sl *3{çR{Â^sl *@¯£Xsë< (í<  (ì< (\(«= (¬= (¶œ  (   (  s#¢  (= (”+  (­=   (®= 3(ß²+(á²(°(P sl *36(\(«= (¬= (ß²(= (Psl *36(\(«= (¬= (á²(= (Psl *3+(¶œ  (  ( Ñ((³sl *3-(¶œ  (  ( XÑ((³sl *3((^(s ($³(t sl *3((^(s ("³(t sl *3,(^(s (t (£°sl *@3(^(s (t (¶œ  (  (  (¶œ(  (  s%¢  (V (•+(û9 (¯= (¶œ( ( s'¢(V (•+(¯= (û9  /(%- r¿\ps z É Y2& (]¤ÉXX3Ú(H+(‡²(³sl *3 (³sl *3{çR{§^sl *3+ þ,U(\(«= (¬= (^(s (t þ(Q(*³sl *@Í£Xsë< (í<  (ì< (i(°= (±=  , rvps\ z(¶œ  (  (  (^(t  (s s)¢  (= (”+  (­=   (®=  (°sp³(&³ sl *A3 r®ps\ z(³sl *bs+¢(= (”+*0 À™(0(Ê+(°s²= s³= *£Xsë< (í< (ì< A3@(_ (®=  (­= (Ê+(°(°(´= s²= s³= *(^(s Y(t (> 8@ÿÿÿ0mš(£Xsë< (í< (ì< E3 s; +s; (= (< (^(s sæ·(t sµ= *0ôœ({½R {¾R (p+ {So]= £së< (ì< (i(°= (±= , (¶œ+sZ   (   (   (¶œ  (   (   (^(t (s  (= (` (¶= (·= (¶= (¸= s¹= *0h{So]= (^(s *Z{FS(] þoº= *0^({¿R {ÀR (p+ {So]= £së< (ì< .rÆp(>À+ (^(s *0!ž({ÁR {ÂR (p+ {So]= £së< (ì< (h_.drpŒ,4u¼  ,   (x ¥|o¡ +  o& +rR9p( rDp( (>À+ (¶œ  (   (   (^(t (s s-¢ (= (”+(®= (°s»= *0‡Ÿ({ÃR {ÄR (p+ {So]= £së< (ì< .rtp(>À+ (¶œ( ( s/¢ (¼= (–+(½= *0"f`_  3(´²*@3(¶²*(¸²*0f (_ 3(¤²+63( ²+*3(¢²+3(ž²+3(¦²+(œ² _þþ(h(IJs¾= *Z{?S(‡ þo¿= *0 ¸£({ÅR {ÆR (p+ ( (À=  (Á=  (Â= {So  (Ro=³oþ  {GS (O oÃ=   (Ä=   (Å=   (Æ=   (Ç=  (È=    s1¢(L+(ý *0w¤({?S(‡ o¿= {äR {åR {âR {æR{àR{áR{ãRþþ,rXps— (6+&+ (ë *0>¦({ÇR {ÈR (p+ (( (É=  (Ê= (S{àR{áR{âR{ãR{äR{åR{So]= £së< (ì<    .dr¼p Œ  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p( r p( (>À+(¶œ( ( s3¢(= (”+(®= (°(ý *0q§({ÉR {ÊR (p+ ( (À=  (Á=  (Â= {So  (R{FS(] oº=   (`°*B{JSþoË= *0+¨((p+ (  (Ì= (d= {S o  {ìR(Ô¨ob= s5¢s7¢s9¢s;¢(—+{GS(O oÃ= (Ä= (Å= (Ç=  (È=    (+þ,rXps— (6+&+{KS(ª¦(ΠoŒ= (Œ°  oþ {KS(«¦(ΠoŒ= (Œ° (ß²{IS (1 o–=    (ë *0¸©((p+ (  (ô+ (ó+ {S o  {ìR(Ô¨ob= s=¢s?¢sA¢sC¢(—+{FS(] oº= {KS(ª¦(ΠoŒ= (Œ°(ß² {IS (1 o–= (`°*0õ¬((  (Ì= (Í= (d= (Î= (Ï= (c= {S o  _þþ _þþ @_þþ  _þþ  €_þþ  _þþ  _þþ _þþ _þþ_þþ €_þþ @_þþ__þþ_þþ €_þþ _þþ _þþ_þþ@_þþrëp(ñ rúåp(ñ {GS(O oÃ= (Ä= (Å=  (Ç= !(È= "##(+þ,rB ps— (6+&+{ìR(بob= 2{ìR(Ú¨ob= X+X( (Í= $ "$(t%%(Ð= &%(Ñ= '(:((Œ¦sy= (‚){ëR(v= ++(بŒ±+(n ((¨,{ëR(w= þ+*þ,-(Yº++3([º+3(]º+r° p(>À([º-{KS(«¦(ΠoŒ= .(q¦sm= (/,("º+7,($º++,( º+ ,   sº((º+(&º!'&(3+,(@º(˜+(6°8k, (ˆ+[,+,+,+ þþ,%,rÜ p(>À+(>º(˜+(6°+(-,)* ./s º*0 (a°sü¹*0¨®((a°sºsÒ= (™+ Œ,%,+ r¨9ps‚ zŽi Ì. Y2$£‡-(s¤Ì.XX3Ü Y 2(vX X3è(Ó= (š+sÔ= *æ{ìR(ߨob= sE¢sG¢sI¢(ߨ(3sK¢(+*0 E¯((  (ó+ (ô+ (ò+ ÿ_ _þþ _þþ(u¦sm= (-<(Ó= ,(‰¦s©= (u(Ì +{v]sº(Õ= *Ži1 r4!pþ(>À*YY£Ì. ,(‰¦s©= (u(Ì + ,(n¦s¨= (‡( + _þþ _þþ _þþ(+ {n]    sü¹¤Ì.*RsW¢(›+(>±*0 PsY¢s[¢{ìR(ê¨ob= s]¢s_¢sa¢(ê¨(3sc¢(œ+(+þ(ž+*0J±((x (Ö= ,6 (Ö= (Ö= -(×= (Á *(×= rb!p(>À(Á **0< (y ,() *r¢!ps\ z0 º³(( (Ø= (Ù= (Ú= {So   _þþ(ß²(X _þþ(”¦sÛ= (z(”¦sÛ= (z (”¦sÛ= (y(”¦sÛ= (x({¦sm= (sȺ*Rss¢(Ÿ+(.±*0-µ(( (ô+ (ó+ (ò+ {ES(k oÜ= (Ý= (Þ= (ß= (•¦sÛ= (y(•¦sÛ= (y  -)-+>  ()   o‰³  {ÜY+   ()   o‰³  {ÜY {So  _þþ _þþ   _-+(o¦s¨= (‡( (z¦sm= (sÚº*Rsƒ¢( +(2±*:s¢(c°*0;¶( {Ÿ= { = s=; (?; (>; {AS (± þoà= *0S·({ÍR {ÌR {ËR (p+ sá= (U (--’(JÀ+(‡ sz´*Ns—¢(¡+(‡°*Z{BS(À þoâ= *0[¸({ÏR {ÎR (p+ i( ¨oö (¢+,i( ¨oö (H++ rþ!ps\ z{So]= (x¹*0Ç3{So]= (®œ(ð< (¸* 3{So]= (±œ(ô< (¸* 3{So]= (²œ(÷< (¸* 3{So]= (´œ(ã= ( ¸* 3{So]= (µœ(ä= ("¸*3+þ,($¸*($¸*0Ø3{So]= (®œ(ð< (¸*3{So]= (­œ(å= (¸*3{So]= (¯œ(æ= (¸*3{So]= (°œ( (¸* 3{So]= (³œ(û< (¸*3#{So]= £së< (ì< (¸*(…*0˜¹({ìR(ݨob= s™¢s›¢s¢(ݨ(3sŸ¢(£+ (ñ< (ð< 3"{So]= (ˆ  ŽioX ( ¸*3{So]= (¬œ(< ( ¸*(†*Rs©¢(¤+(6°*fo% , o& (V **0#Œ(‰ -(}° o *(Õ *0¡º({ùR (ò X (žœ(œi(ó (ò X(ó (ò þ3 (ò þ+,>{ùR (ò X (žœ(œi(ó (ò X(ó (ò +(ò (ó *0î(‰ , (Õ þo% **0 à([s [s s«¢ [s sß ( µ(ÿ´(#µ(3µsžsß sß sß sç=  (ò À( µ(ž8Ä(ò 3(!µ(ž8§(ò 3(1µ(ž8Š(ò 3r{ùR(ò X  (žœ(¡œ(¨œ(ò X(ó (ß²(= (v= (w= (©œ(P(ã (ž+ (ý´(ž(‹8!þÿÿ(ò =T (ò þ3(ò (Èœ+ (ò (Çœ (AžEZ³Ðƒ)Ü%ƒZ¢ Ÿ ö2 Z ( vyt@){R{ùR(ò X  (žœ(œÑ(ò X(ó (§+8e tA){R{ùR(ò X  (žœ(¢œ(ò X(ó (§+8 tB){Roï= 8ï tC){R{ùR(ò X  (žœ( œ(ò X(ó (¨+8– tE){R{ùR(ò X  (žœ(œg (ò X(ó  (©+8< tD){R{ùR(ò X  (žœ(¡œ (ò X(ó  (©+8ã tF)  {R!{ùR(ò X(¤œ"(ò X(ó !"(ª+8š tG)##{R${ùR(ò X  (žœ( œ(‚. %(ò X(ó $%(«+8< tH)&&{ R'{ùR(ò X  (žœ(¡œ(¨œ(w=  (v= ((ò X(ó '())(Ö¨Œ±+(n ((¨,{LS oô= +=())(ܨŒ±+(n ((¨,{@S (£ oõ= + rf"ps\ z(¬+8e tI)**{ R+{ùR(ò X  (žœ(¡œ(¨œ(v= ((w=  (ò X(ó ())(بŒ±+(n ((¨,(—¦ sé< (S+o())(ܨŒ±+(n ((¨,(˜¦ sé< (S+=())(ý¨Œ±+(n ((¨,{>S (• o÷= + rœ"ps\ z,,{äR-,{åR,{âR.,{æR/,{àR0,{áR1,{ãR20(,³@¢0t‰-33{ùY43{øY5.rxÇp(ñ ,54(¶8Þ.rLáp(ñ ,54( ¶8Á.r<áp(ñ ,{éQ54(¶8œ.rúåp(ñ ,54( ¶8rà"ps\ z01.2/(U°6+6-sø= (­+8ItR)77{R8{ùR(ò X  (žœ(¡œ(¨œ(ò X(ó 8(ß²(= (v= (w= (©œ(P(®+8ÉtN)99{R:{ùR(ò X  (žœ(¡œ(¨œ(v= ((w=  (ò X(ó ())(ÿ¨Œ±+(n ((¨þ,r#p(>À+:{þR o  (¯+8 tL);;{ R<{ùR(ò X  (žœ(¡œ (ò X(ó (ò  X (ò =< (Š=(ŠsZ (°+8ŸtM)>>{R<{ùR(ò X  (žœ(œg (ò X(ó (ò  X (ò =< (Š=(ŠsZ (°+8tJ)??{ R{ùR(ò X  (žœ(¡œ (ò X(ó (ò  X  (Š(©+8²tK)@@{ R{ùR(ò X  (žœ(œg (ò X(ó (ò  X  (Š(©+8Frj#p(ò   Œ’AA,4Au¼BB,BCC(x ¥|o¡ +ADDo& +rR9p( (ò þ3]r:p(ò   Œ’AA,4Au¼BB,BCC(x ¥|o¡ +ADDo& +rR9p( +rR9p( (>À(õ8etP)EE{RF{ùR(ò X  (žœ(¡œ(¨œ(v= ((w=  (ò X(ó F())(بŒ±+(n ((¨,+())(ܨŒ±+(n ((¨,d( (ªœ(TGG{ÞRG{ÜR.G{ßR/G{ÚR0G{ÛR1G{ÝR201.2/(U°(¾´8¿())(Ö¨Œ±+(n ((¨,{LS oô= (À´8‹())(Ô¨Œ±+(n ((¨,+())(Ó¨Œ±+(n ((¨,+())(í¨Œ±+(n ((¨,"(ß²(= ( (©œ(P(¼´+ r–#ps\ z(±+8—tQ)HH{RI{ùR(ò X  (žœ(¡œ(¨œ(v= ((w=  (ò X(ó ())(㨌±+(n ((¨þ,rÂ#p(>À+ ( {GS (O oÃ= JJ(Ä= -J(Å= J(þ= KJ(Ç= 1J(È= /K, r$ps\ zI1/sp³-sÿ= (²+8tO)LL{RM{ùR(ò X  (žœ(¡œ (ò X(ó  s­¢(³+Ns¯¢N(´+O(ò (Š MO s¨ (µ+o 8²ïÿÿ8¬ïÿÿ(ò  o   (Š o s±¢Ps³¢Q o" PQs> *0=p {ŒX(7¬o> {‹X{X{ŽX{X{X(÷³s> *0fã((A¬ ( ( (B¬ s·¢ (¶+(·+s¹¢(¸+s»¢s¿¢(@¬(¹+(> (º+(> *jsТ(¤+(6°*0Ô"(¨o> (»+,(¨o> (¼+* _, ÿßÿÿ_(‘((¹* _, ÿïÿÿ_(‘(*¹* @_, ÿ¿ÿÿ_(‘(,¹*{úRr£$p( Œ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( (>À(Ú¸*0h{So]= (“(> *0ãå(£Xsë< (í< (ì< (¨o > (½+,(¨o > (¾+s > *- (f¸s > *,@ù(¶œ (  ( (¸œ(= (= (¶œ  (   (    (¹œ  (B   (C  (¶œ( ( (¹œ(B (C (¶œ( ( (¸œ(= (= (h¸s > *3'(¶œ (  ( (j¸s > *3'(¶œ (  ( (l¸s > *@£Ži2(Ú¸(ª¸s > *(¶œ (  ( Ži2(‘(ª¸s > *(¶œ  (  (   (¹œ  (B   (C (‘(c (ª¸ s > **@Ži2(–¸s > *(¶œ (  ( P3(f¸s > + (“( > (> Ži2(Ì (–¸s > *(¶œ (  ( Ži2!(Ì sÊ (Ë (–¸s > *Ži2 sZ + (¶œ  (   (  (Ì  (V sÊ (Ë (–¸ s > *{úRr%p( Œ,4u¼,(x ¥|o¡ +  o& +rR9p( (>À(f¸s > *JsÚ¢(¿+(;±*Nsâ¢(À+(9±*Jsä¢(Á+(7±*09(7¬ (9¬(m (:¬(m (8¬(m (ä³þo > *0Àë({ÑQ 9° (d (1¬(5¬Žis > ŒE%,+ r¨9ps‚ zŽi Y 2 £©,(— X  X3ásæ¢  s> (> Þ"t rY%p oe ( (>À Þ **ƒš"0[V2*X (žœ(¡œ  X (žœ(¡œ 2 Xþ+,*X(X+¥0ì(   (™*0 í(?trÑ%p( ( rß%p( Œ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( ,¥+s\ z&*X(žœ(¡œ X(žœ(¡œX(žœ(¡œ2 Xþ+,YX*X(X8þþÿÿ0 +î((C (B   (›*0 ï(2*X (žœ(¡œ X (žœ(¡œ s¸ s¸ sß (• :tX(ò X(žœ(œi - (< +1(ò Ži2+(ò £’þþ, (< +(ò X(ó 8€ÿÿÿ (• ,XsZ (> *XX(ò X XY[Z8óþÿÿ0ð(    (*0ò((ž ,(> *sZ *0 u& (*¨£’ _dþþ*0ó(( E @HPX`hpx€ˆ˜ ****,**,**,**t* {´R (*¨£ó,**,**,**,**,**,** ,** ,** ,** ,** ,**,**,**,**0s÷({¶R ¥I% o> oï ,1     o> (¡Ö+Ç Þu , oâ &Ü&Ü *AX0hî-)<(žœ(¡œ X X X(žœ(¡œ PE.(sè¢rí%ps> (Â+sì¢ (Ã+&+X(žœ(¢œiX(žœ(¢œiX(žœ(¢œi à. ðþþ+, rU&ps\ z àY ðþ  YE+ d†YE (ɳ(„ +(˳(„ + (ͳ(„  X X  (žœ(¢œi  _þþX(žœ(¡œ X(žœ(¡œ X(žœ(¡œX(žœ(¡œX(žœ(¡œX(žœ(¡œ ,+X(žœ(¡œ X(žœ(¡œ$X(žœ(¡œ(X(žœ(¢œ*X(žœ(¢œ,X(žœ(¢œ.X(žœ(¢œ0X(žœ(¢œi2X(žœ(¢œi8X(žœ(¡œ; _þþ?5X<<(žœ(¡œ(¨œ@5XAA(žœ(¡œ<5XBB(žœ(¡œA5 XCC(žœ(¡œB5$XDD(žœ(¡œC5(XEE(žœ(¡œD5,XFF(žœ(¡œE r§&p8s˜ (œFF(žœ(¢œiGG BS.ar¹&p( GŒ’II,4Iu¼JJ,JKK(x ¥|o¡ +ILLo& +rR9p( HHs\ zFXNN(žœ(¢œiMM JB. rõ&ps\ zFXNN(žœ(¢œOFXNN(žœ(¢œPF XQQ(žœ(¡œNsö¢FXQQ(žœN(Ÿœ(Å+RNXSSXY[ZQFQXXTT(žœ(¢œiSFQXXTFST’%#¤’%~¤’(žVV-vFST’%#¤’%-¤’(žWW-Br)'ps— (6+&TXXX(žœ(¡œTXXX(žœ(¡œsZ +W(> +V(> UU( XFST’%ÐÐQ(E (ŸYY( ZY( [FST’%#¤’%U¤’%S¤’(Ÿ\\( ]\( ^FST’%#¤’%G¤’%U¤’%I¤’%D¤’(Ÿ__( `FST’%#¤’%B¤’%l¤’%o¤’%b¤’(Ÿaa( ba( cXXee(žœ(œidXXff(žœ(œied3eþ+g@*%(윤*%(Íœ¤*%(Ïœ¤*%(휤*%(Øœ¤*%(휤*%(Þœ¤*%(휤*%(Ýœ¤*% (Òœ¤*% (Öœ¤*% (Ûœ¤*% (Ôœ¤*% (Úœ¤*%(Õœ¤*%(圤*%(Üœ¤*%(ל¤*%(Ñœ¤*%(휤*%(㜤*%(М¤*%(휤*%(✤*%(ᜤ*%(ßœ¤*%(Ëœ¤*%(Μ¤*%(àœ¤*%(Ùœ¤*%(휤*%(휤*% (眤*%!(휤*%"(휤*%#(Êœ¤*%$(휤*%%(휤*%&(Ìœ¤*%'(朤*%((䜤*%)(Óœ¤*%*g,(èœ+(霤*%+(Ꜥ*%,(뜤*%-(휤*%.(휤*%/(휤*%0(휤*%1(휤*%2(휤*%3(휤*%4(휤*%5(휤*%6(휤*%7(휤*%8(휤*%9(휤*%:(휤*%;(휤*%<(휤*%=(휤*%>(휤*%?(휤*hXXii(žœ(œifXXii(žœ( œjXXii(žœ( œk(V s> m@(x+nXXsß oi+dj!i?_b_,Imim(> (^ (> nio(ò pp(žœ(¡œ¤’oo(ò X(ó +iXii@2–m(> (Ë+no(ò s> ll(> ql(> nl(> insø¢rqoõ pf_þþsf_þþtf_þþunŒ,+ r¨9ps‚ znŽiwwóxzwYyyz2*xznz£’ þþ¤ózXzzyX3Öxvn(Ô¨( ,+n(Ó¨( ,+n(í¨( {n(Ô¨( ,+n(ب( |n(Ö¨( ,+n(Ú¨( ,+n(é¨( }n(ب( ,+n(Ö¨( ,+n(Ó¨( ,+n(Ô¨( ,+n(Ú¨( ,+n(Û¨( ,+n(ܨ( ,+n(Ò¨( ,+n(à¨( ,+n(é¨( ,+n(æ¨( ,+n(ã¨( ,+n(ì¨( ,+n(í¨( ,+n(ò¨( ,+n(õ¨( ,+n(ø¨( ,+n(ù¨( ,+n(ú¨( ,+n(ü¨( ,+n(þ¨( ,+n(ý¨( ~n(Ö¨( ,+n(Ú¨( n(Ô¨( ,+n(ب( ,+n(ò¨( €n(Ó¨( ,+n(ì¨( ,+n(ب( ,+n(í¨( n(æ¨( ,+n(é¨( ‚n(ب( ,+n(ܨ( ƒn(Ö¨( ,+n(ب( „n(ø¨( ,+n(õ¨( ,+n(ù¨( …n(ب( ,+n(ܨ( †n(Ò¨( ,+n(ì¨( ,+n(õ¨( ,+n(Ó¨( ‡hŒO%,+ r¨9ps‚ zhŽiww’‰zwYyyz2G‰zstuv{|}~€‚ƒ„…†‡hz£*(¢¤’zXzzyX3¹‰ˆ@(x+Šisß ow+8Šwo(ò ¤’oo(ò nw£’ˆw£’ZX(ó wXww@2Љ(’Àr‚^p( H{ÓQHröp(õ¨ŒnŒ(*¨£’(Æ+‹{ÓQHrÆ'p(ý¨ŒnŒ(*¨£’[X(Ç+{ÓQHrô'p(ܨŒnŒ(*¨£’[X(È+Ž{ÓQHr (p(Þ¨ŒnŒ(*¨£’2[X(É+{ÓQHr6(p(Ó¨ŒnŒ(*¨£’[X(Ê+{ÓQHrJ(p(Ó¨ŒnŒ(*¨£’[X(Ë+‘{ÓQHrf(p(騌nŒ(*¨£’[X(Ì+’{ÓQHr’(p(Ö¨ŒnŒ(*¨£’[X(Í+“{ÓQHr¸(p(بŒnŒ(*¨£’[X(Î+”{ÓQHrà(p(Ô¨ŒnŒ(*¨£’[X(Ï+•{ÓQHrü(p(بŒnŒ(*¨£’[X(Ð+–{ÓQHr()p(ü¨ŒnŒ(*¨£’[X(Ñ+—{ÓQHrD)p(Ö¨ŒnŒ(*¨£’[X(Ò+˜{ÓQHrl)p][X(Ó+™HrŠ)pZ2[X(Ó+š{ÓQHr¢)pb2[X(Ô+›{ÓQHr¶)p(û¨ŒnŒ(*¨£’[X(Õ+œ{ÓQHrÚ)p(ݨŒnŒ(*¨£’[X(Ö+{ÓQHrö)p(ꨌnŒ(*¨£’[X(×+ž{ÓQHr *p(Ô¨ŒnŒ(*¨£’[X(Ø+Ÿ{ÓQHr>*p(Û¨ŒnŒ(*¨£’[X(Ù+ {ÓQHrd*p(ߨŒnŒ(*¨£’[X(Ú+¡{ÓQHrˆ*p(稌nŒ(*¨£’[X(Õ+¢sß osß £sß ¤sß ¥sß ¦sß §sß ¨sß ©sß ªsß «sß ¬sß ­sß ®sß ¯sß °sß ±sß ²sß ³sß ´sß µsß ¶sß ·sß ¸sß ¹sß ºsß »sß ¼sß ½sß ¾sß ¿sß Àsß Ásß Â(°,+(˜Ãˆ‰sú¢Äs> Åsü¢(Û+Ç™Åsþ¢o> ÈšÅs£o> É›Ås£o> ÊœÅs£o > ËÅs£o!> ÌžÅs£o"> ÍŸÅs £o#> ΠÅs £o$> Ï¡Ås£o%> ТÅs£o > Ñ‹Ås£o&> ÒÅs£o'> ÓŽÅs£o(> ÔÅs£ÕÅs£o)> ÖÅs£×Ås£o*> Ø’Ås £o+> Ù“Ås"£o,> Ú”Ås$£o-> ÛÅs&£Ü•Ås(£o.> Ý‘Ås*£o/> Þ–Ås,£o0> ß—Ås.£o1> à˜Ås0£o2> á{ÒQÅ(0kÃ@r0/4368+$%<BD^[cÈÇÉÊ`Äv‡{|}~€‚ƒ„…†stuo£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂËÌÍÎÏÐÑÒÓÔÕÖרÞÙÚÛÜÝßàásv¡ÆÅÆ(3> (4> Æ sZ !=>?  (W RRŽioX (4nÆs8£(Ü+Ãs5> *>{ÙRoK &*~•T*0/)-* (6> (7> þ(2¬*0°3)(Ås× (ê(£ (8> (9> (:>  s:£sè  ÞotuG,Y( Áo#Ás;> (<> s=> (æ(£ (8> (9> (:>  s<£sè  Þþ*>?o~–T*08)( Áo%Á( Áo*Ás>> s?> Þt rR9p(  s>> s?> Þ (@> (A>  -+{ÑQþ,+ (¨oB> :v( Áo.Ás³(è(£(8> (9>  (:>    s@£sè  þ, +,(¨ oC> + *(D> *%'069)s³ (è(£ (8> (9> (:> sB£sè *6€—T~—T&*{ÑQ*{ÒQ*{ÓQ*r( }ÑQ}ÒQ}ÓQ*{ÔQ*{ÕQ*"}ÔQ*V( }ÔQ}ÕQ*0`þ,Oþ,G(y {ÔQ {ÔQ  /+ þ /*1*(y {ÕQ{ÕQþ(h+**þ,**B¥.)þo´*0g:)¥.) þ,J¥.)þ,={ÔQ {ÔQ  /+ þ /*1*{ÕQ{ÕQþ(h+**¥.)þ,**0=þ,4 ¹y7ž{ÕQ(i+bcXXX ¹y7ž{ÔQbcXXX **6(n o·*0@;)þ,1u.) ,%{ÔQ{ÔQ3{ÕQ{ÕQþ(j+***þþ*N( Áo.Ás³*&s³*0 <){ÔQ {ÕQ£ X(²*0!ù'{ÔQ {ÕQ(k+ X(²*01(o¼ o¼ o¼ o¼ iib`ib` ib`*0=)o¼ o¼ ÑÑ bÑ`*&(²* *îþ,,þ,${ÔQ{ÔQ3{ÕQ{ÕQþ(l+***þþ*0;)u.) , þoÂ**bo &}×Q}ÖQ*0 >) €~ÿ8 ~ÿ8 (E£ (I£Œþoè ,"sÎrª*psE> (Ý+(F> oA &+~ÿ8 (F£ (D£ (L£Œþoè ,"sÐrÐ*psE> (Ý+(F> oA &+!Ó(G£ ~ÿ8 Œþoè ,"sÒr+psE> (Ý+(F> oA &+ sÄ*.{ÖQÓX*0?){ÖQÓX q*0h(m+ {ÖQÓX(G> *B{ÖQÓXq’*B{ÖQÓXq€*0J{ÖQ(H£ {×Q(D£ *0,@){ÖQÓX   q,!ÓX +æYi*v{ÖQÓXoÌ(W sH> *( *"s\ z( *"s\ z( *"s\ z{ØQ*{ÙQ*"}ØQ*V( }ØQ}ÙQ*0=þ,4 ¹y7ž{ÙQ(Þ+bcXXX ¹y7ž{ØQbcXXX **6(n oØ*0@A)þ,1u3) ,%{ØQ{ØQ3{ÙQ{ÙQþ(ß+***þþ*:(Ås×*00C){ÙQ {ØQ {ÖQÓX q {ØQX(Ö*0.D){ÙQ {ØQ {ÖQÓXq’ {ØQX(Ö*0.E){ÙQ {ØQ {ÖQÓXq€ {ØQX(Ö*0$h{ÙQ{ØQoÈ {ØQX(Ö*N{ÙQ{ØQoÍ*&(Ö*0!F){ÙQ {ÖQ(H£ {×Q(D£ *îþ,,þ,${ØQ{ØQ3{ÙQ{ÙQþ(à+***þþ*0A)u3) , þoã**( *"só**u6)þ*sö**u7)þ*sø**u8)þ*0]( u8),+ u7),+*Zr.8psI> (á+oJ> *0ÄH)þ9¸ u6)-u7)-Su8)-pt6)  ¹y7ž{ÞQoK> bcXXX ¹y7ž{ÝQ , ( +bcXXX *t7)  ¹y7ž {ßQo·bcXXX *t8) ¹y7ž{àQoØbcXXX **6(n oî*0#I)þ9u4) 9u8),+ u7),+ u8),+ u7),+ @¿u6)-u7)-Lu8)-rt6) t6) {ÝQ{ÝQ(ñ , {ÞQ{ÞQþoL> **t7)t7){ßQ {ßQ   þo¹*t8) t8)  {àQ  {àQ þoÚ***þþ*0J)þ9ïþ9äu8),+ u7),+   u8),+  u7),+ @¡  u6)- u7)-@ u8)-]t6) t6) {ÝQ {ÝQ(ñ ,{ÞQ {ÞQþ(â+**t7)t7){ßQ{ßQþoÂ*t8)t8){àQ{àQþoã***þþ*0](u4) , þoñ**V(å}ÝQ}ÞQ*{ÝQ*{ÞQ*:(å}ßQ*{ßQ*:(å}àQ*{àQ*:( }áQ*2{áQ{ÝQ*2{áQ{ÞQ*:( }âQ*2{âQ{ßQ*:( }ãQ*2{ãQ{àQ*{M> *{N> *0TL) (y {M> {M>  (ˆ+ /*1*(y {N> {N> /*þ*:¥q%(O> *0ON)¥q%  {M> {M>  (ˆ+ /*1*{N> {N> /*þ*07& ¹y7ž{N> bcXXX ¹y7ž{M> (€+bcXXX *6(n (P> *0>O)(ã+-*¥q%  {M> {M>  (‚+,{N> {N> þ**B}M> }N> *0,P) {M> {M> („+,{N> {N> þ**b(ã+-*¥q%(Q> *{æQ*{çQ*{èQ*{éQ*{êQ*"}æQ*"}çQ*"}èQ*"}éQ*"}êQ*²( }æQ}çQ}èQ}éQ}êQ*6sž€ìQ*:( }ëQ*sCž**(Ažþ*sEž**(Ažþ*sGž**(Ažþ*sIž**(Ažþ*sKž**(Ažþ*sMž**(Ažþ*sOž**(Ažþ*sQž**(Ažþ*sSž**(Ažþ*sUž*.(Až þ*sWž*.(Až þ*sYž*.(Až þ*s[ž*.(Až þ*s]ž*.(Až þ*s_ž*.(Ažþ*saž*.(Ažþ*scž*.(Ažþ*sež*.(Ažþ*sgž*.(Ažþ*~ìQ*.(Ažþ*{ëQ*Zr.8psR> (ä+oS> *>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž}R*{R*>(ž} R*{ R*B (ž} R*{ R*B (ž} R*{ R*B (ž} R*{ R*B (ž} R*{ R*B (ž}R*{R*B(ž}R*{R*B(ž}R*{R*B(ž}R*{R*B(ž}R*{R*B(ž}R*{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{R*:( }R*2{R{ R*:( }R*2{R{ R*:( }R*2{R{ R*:( }R*2{R{ R*:( } R*2{ R{ R*:( }!R*2{!R{R*:( }"R*2{"R{R*:( }#R*2{#R{R*:( }$R*2{$R{R*:( }%R*2{%R{R*:( }&R*2{&R{R*:(T> }'R*0Q)(U> (V> {'R(·µ*:(W> }(R*B{(Rþ(å+*:(T> })R*0Q)(U> (V> {)R(¯µ*:(W> }*R*B{*Rþ(å+*(X> *"(а*:(Y> }+R*:{+R(æ+*(X> *"(µµ*:(Y> },R*:{,R(æ+*(X> *"(­µ*:(Y> }-R*:{-R(æ+*(X> *"(Õ°*:(Y> }.R*:{.R(æ+*(X> *"(Ó°*:(Y> }/R*:{/R(æ+*(X> *"(³µ*:(Y> }0R*:{0R(æ+*(X> *"(а*:(Y> }1R*:{1R(æ+*(X> *"(µµ*:(Y> }2R*:{2R(æ+*(X> *"(­µ*:(Y> }3R*:{3R(æ+*(X> *"(Õ°*:(Y> }4R*:{4R(æ+*(X> *"(Ó°*:(Y> }5R*:{5R(æ+*(X> *"(³µ*:(Y> }6R*:{6R(æ+*(T> *0Q)(U> (V> (¶*:(W> }7R*B{7Rþ(å+*(T> *0Q)(U> (V> (¶*:(W> }8R*B{8Rþ(å+*(Z> *J(£´(Û´(©µ*:([> }9R*:{9R(ç+*(\> *"(×°*:(]> }:R*:{:R(è+*(\> *"(×°*:(]> };R*:{;R(è+*(^> *J(§´(Ý´(©µ*:(_> } *J(©´(ß´(©µ*:(a> }=R*:{=R(ê+*V(b> }>R}?R*R{>R{?R(ݵ*(c> *0Q)(U> (V> sãž*:(d> }@R*B{@Rþ(ë+*V(b> }AR}BR*R{AR{BR(åµ*(c> *0Q)(U> (V> séž*:(d> }CR*B{CRþ(ë+*(e> *&(Ûµ*:(d> }DR*B{DRþ(ì+*(e> *&(ãµ*:(d> }ER*B{ERþ(ì+*(b> *"(áµ*:(d> }FR*:{FR(í+*(b> *"(ßµ*:(d> }GR*:{GR(í+*(f> *0R)(g> (h> (ŵ*:(i> }HR*B{HRþ(î+*(j> *0R)(g> (h> (͵*:(i> }IR*:{IR(ï+*(j> *0R)(g> (h> (ïµ*:(i> }JR*:{JR(ï+*(j> *0R)(g> (h> (ϵ*:(i> }KR*:{KR(ï+*V(j> }LR}MR*0@S)(g> (h> {LR-{MR(ǵ*{LR {MR(p (ɵ*(k> *0T)(l> (m> sŸ*:(i> }NR*B{NRþ(ð+*(\> *"(×µ*:(]> }OR*:{OR(è+*(\> *"(»µ*:(]> }PR*:{PR(è+*(\> *"(×µ*:(]> }QR*:{QR(è+*(\> *"(»µ*:(]> }RR*:{RR(è+*(n> *0.( ( (Wµ(¿µ*:(o> }SR*:{SR(ñ+*(n> *0.( ( (Uµ(¿µ*:(o> }TR*:{TR(ñ+*(n> *0.( ( (Aµ(¿µ*:(o> }UR*:{UR(ñ+*(n> *0.( ( (Oµ(¿µ*:(o> }VR*:{VR(ñ+*(n> *0.( ( (Qµ(¿µ*:(o> }WR*:{WR(ñ+*(n> *0.( ( (Kµ(¿µ*:(o> }XR*:{XR(ñ+*(n> *0.( ( (Mµ(¿µ*:(o> }YR*:{YR(ñ+*(n> *0.( ( (Gµ(¿µ*:(o> }ZR*:{ZR(ñ+*(n> *0.( ( (Iµ(¿µ*:(o> }[R*:{[R(ñ+*(n> *0.( ( (Cµ(¿µ*:(o> }\R*:{\R(ñ+*(n> *0.( ( (Eµ(¿µ*:(o> }]R*:{]R(ñ+*(n> *0.( ( (Sµ(¿µ*:(o> }^R*:{^R(ñ+*(n> *0.( ( (Wµ(¿µ*:(o> }_R*:{_R(ñ+*(n> *0.( ( (Uµ(¿µ*:(o> }`R*:{`R(ñ+*(n> *0.( ( (Aµ(¿µ*:(o> }aR*:{aR(ñ+*(n> *0.( ( (Oµ(¿µ*:(o> }bR*:{bR(ñ+*(n> *0.( ( (Qµ(¿µ*:(o> }cR*:{cR(ñ+*(n> *0.( ( (Kµ(¿µ*:(o> }dR*:{dR(ñ+*(n> *0.( ( (Mµ(¿µ*:(o> }eR*:{eR(ñ+*(n> *0.( ( (Gµ(¿µ*:(o> }fR*:{fR(ñ+*(n> *0.( ( (Iµ(¿µ*:(o> }gR*:{gR(ñ+*(n> *0.( ( (Cµ(¿µ*:(o> }hR*:{hR(ñ+*(n> *0.( ( (Eµ(¿µ*:(o> }iR*:{iR(ñ+*(n> *0.( ( (Sµ(¿µ*:(o> }jR*:{jR(ñ+*(p> *"(çµ*:(q> }kR*:{kR(ò+*(r> *0U)(û9 (¯= s¨ (Áµ*:(s> }lR*:{lR(ó+*(t> *"(íµ*:(u> }mR*:{mR(ô+*(v> *0V)(w> (x> (˵*:(y> }nR*B{nRþ(õ+*(z> *"(¶*:({> }oR*:{oR(ö+*(z> *"(¶*:({> }pR*:{pR(ö+*(|> *>(“²(¶*:({> }qR*B{qRþ(÷+*(z> *6(“²(¶*:({> }rR*:{rR(ö+*(z> *6(“²( ¶*:({> }sR*:{sR(ö+*(z> *6(“²( ¶*:({> }tR*:{tR(ö+*(z> *"(ëµ*:({> }uR*:{uR(ö+*(z> *"(éµ*:({> }vR*:{vR(ö+*(z> *"(ýµ*:({> }wR*:{wR(ö+*(z> *"(ñµ*:({> }xR*:{xR(ö+*(z> *"(óµ*:({> }yR*:{yR(ö+*V(z> }zR}{R*R{zR{{R(õµ*(}> *0Q)(U> (V> sÁŸ*:({> }|R*B{|Rþ(ø+*V(z> }}R}~R*R{}R{~R(÷µ*(}> *0Q)(U> (V> sÇŸ*:({> }R*B{Rþ(ø+*(z> *"(ÿµ*:({> }€R*:{€R(ö+*(z> *"(ùµ*:({> }R*:{R(ö+*(z> *"(ûµ*:({> }‚R*:{‚R(ö+*V(~> }ƒR}„R*0*W)(= (= {ƒR{„Rs = (Åœ*:(W> }…R*:{…R(ù+*V(Â- }†R}‡R*04ô(Ã- (Ä- {†R{‡RsÛŸ(žs = (Åœ*{ˆR*{‰R*V( }ˆR}‰R*0fþ,Uþ,M(y {ˆR {ˆR  /+ þ /*1*(y {‰R {‰R  /* þ**þ,**:¥*oâŸ*0kY)¥* þ,N¥*þ,A{ˆR {ˆR  /+ þ /*1*{‰R {‰R  /* þ**¥*þ,**07þ,. ¹y7ž{‰RbcXXX ¹y7ž{ˆRbcXXX **6(n oåŸ*0:Z)þ,+u* ,{ˆR{ˆR3{‰R{‰Rþ***þþ*Úþ,'þ,{ˆR{ˆR3{‰R{‰Rþ***þþ*0Z)u* ,oèŸ**0és럀‹Rs럀ŒRs럀Rs럀ŽRs럀Rs럀Rs럀‘Rs럀’R s럀“R s럀”R s럀•R s럀–R s럀—Rs럀˜Rs럀™Rs럀šRs럀›Rs럀œRs럀Rs럀žR*:( }ŠR*~‹R**( þ*~ŒR**( þ*~R**( þ*~ŽR**( þ*~R**( þ*~R**( þ*~‘R**( þ*s  **( þ*~’R**( þ*~“R*.(  þ*~”R*.(  þ*~•R*.(  þ*~–R*.(  þ*~—R*.(  þ*~˜R*.( þ*~™R*.( þ*~šR*.( þ*~›R*.( þ*~œR*.( þ*~R*.( þ*~žR*.( þ*{ŠR*Zr.8ps> (ú+o€> *0p[)þ,_þ,W{ŠR {ŠR 3A( 36t* t* (y {´R {´RŒ±+(%¨**Y**þ,**:¥*o *0{])¥* þ,^¥*þ,Q{ŠR {ŠR 3;( 30t* t* {´R{´RŒ±+(%¨**Y**¥*þ,**Jþ, (Éœ**6(n o *0j])þ,[u* ,O{ŠR {ŠR 3;( 30t* t* {´R{´RŒ±+((¨****þþ*0X^)þ,Iþ,A{ŠR {ŠR 3-( 3"t* t* {´R {´Rþ(û+****þþ*0_)u* , þo **>(ëŸ}´R*{´R*:( }µR*2{µR{´R*s% *:( }¶R*{¶R*&*Zr.8ps> (ü+o‚> *0@a)þ,/þ,'&  (y {¶R {¶R þoƒ> **þ,**:¥*o) *0Kb)¥* þ,.¥*þ,!&  {¶R {¶R þoƒ> **¥*þ,**0.c)þ,% &  ¹y7ž{¶Ro„> bcXXX **6(n o, *0<b)þ,-u* ,!&  {¶R {¶R þo…> **þþ*01d)þ,"þ,&  {¶R{¶Rþ(ý+**þþ*0e)u* , þo/ **&s2 *r( }·R}¸R}¹R*{·R*{¸R*{¹R*&*Zr.8ps†> (þ+o‡> *0©g)þ9•þ9Š&  (y {·R{·R oç² /*1*(y {¸R{¸R o¾ /*1*(y {¹R {¹R   /*  þ**þ,**:¥*o8 *0¨h)¥* þ9ˆ¥*þ9x&  {·R{·Roç² / * 1 *{¸R{¸Ro¾ /*1*{¹R {¹R   /*  þ**¥*þ,**0^i)þ,U &  ¹y7ž{¹RbcXXX ¹y7ž{¸Ro¿ bcXXX ¹y7ž{·Roè²bcXXX **6(n o; *0jj)þ,[u* ,O&  {·R {·R oê²,-{¸R{¸RoÀ ,{¹R{¹Rþ****þþ*0Vk)þ,Gþ,?&  {·R{·R(Ñ+,${¸R{¸R(+,{¹R{¹Rþ****þþ*0l)u* ,o> **&sA *r( }ºR}»R}¼R*{ºR*{»R*{¼R*&*Zr.8psˆ> (ÿ+o‰> *0©n)þ9•þ9Š&  (y {ºR{ºR oç² /*1*(y {»R{»R o¾ /*1*(y {¼R {¼R   /*  þ**þ,**:¥*oG *0¨o)¥* þ9ˆ¥*þ9x&  {ºR{ºRoç² / * 1 *{»R{»Ro¾ /*1*{¼R {¼R   /*  þ**¥*þ,**0^p)þ,U &  ¹y7ž{¼RbcXXX ¹y7ž{»Ro¿ bcXXX ¹y7ž{ºRoè²bcXXX **6(n oJ *0jq)þ,[u* ,O&  {ºR {ºR oê²,-{»R{»RoÀ ,{¼R{¼Rþ****þþ*0Vr)þ,Gþ,?&  {ºR{ºR(Ñ+,${»R{»R(+,{¼R{¼Rþ****þþ*0s)u* ,oM **"sP *V( }½R}¾R*{½R*{¾R*&*Zr.8psŠ> (+o‹> *0xu)þ,gþ,_&  (y {½R{½R/+þ /*1*(y {¾R{¾R/*þ**þ,**:¥*oU *0}v)¥* þ,`¥*þ,S&  {½R{½R/+þ / * 1 *{¾R{¾R/*þ**¥*þ,**0=w)þ,4 &  ¹y7ž{¾RbcXXX ¹y7ž{½RbcXXX **6(n oX *0@x)þ,1u* ,%&  {½R{½R3{¾R{¾Rþ***þþ*0<y)þ,-þ,%&  {½R{½R3{¾R{¾Rþ***þþ*0z)u* ,o[ **"s^ *V( }¿R}ÀR*{¿R*{ÀR*&*Zr.8psŒ> (+o> *0x|)þ,gþ,_&  (y {¿R{¿R/+þ /*1*(y {ÀR{ÀR/*þ**þ,**:¥*oc *0}})¥* þ,`¥*þ,S&  {¿R{¿R/+þ / * 1 *{ÀR{ÀR/*þ**¥*þ,**0=~)þ,4 &  ¹y7ž{ÀRbcXXX ¹y7ž{¿RbcXXX **6(n of *0@)þ,1u* ,%&  {¿R{¿R3{ÀR{ÀRþ***þþ*0<€)þ,-þ,%&  {¿R{¿R3{ÀR{ÀRþ***þþ*0)u* ,oi **"sl *V( }ÁR}ÂR*{ÁR*{ÂR*&*Zr.8psŽ> (+o> *0xƒ)þ,gþ,_&  (y {ÁR{ÁR/+þ /*1*(y {ÂR{ÂR/*þ**þ,**:¥*oq *0}„)¥* þ,`¥*þ,S&  {ÁR{ÁR/+þ / * 1 *{ÂR{ÂR/*þ**¥*þ,**0=…)þ,4 &  ¹y7ž{ÂRbcXXX ¹y7ž{ÁRbcXXX **6(n ot *0@†)þ,1u* ,%&  {ÁR{ÁR3{ÂR{ÂRþ***þþ*0<‡)þ,-þ,%&  {ÁR{ÁR3{ÂR{ÂRþ***þþ*0ˆ)u* ,ow **"sz *V( }ÃR}ÄR*{ÃR*{ÄR*&*Zr.8ps> (+o‘> *0xŠ)þ,gþ,_&  (y {ÃR{ÃR/+þ /*1*(y {ÄR{ÄR/*þ**þ,**:¥*o *0}‹)¥* þ,`¥*þ,S&  {ÃR{ÃR/+þ / * 1 *{ÄR{ÄR/*þ**¥*þ,**0=Œ)þ,4 &  ¹y7ž{ÄRbcXXX ¹y7ž{ÃRbcXXX **6(n o‚ *0@)þ,1u* ,%&  {ÃR{ÃR3{ÄR{ÄRþ***þþ*0<Ž)þ,-þ,%&  {ÃR{ÃR3{ÄR{ÄRþ***þþ*0)u* ,o… **"sˆ *V( }ÅR}ÆR*{ÅR*{ÆR*&*Zr.8ps’> (+o“> *0x‘)þ,gþ,_&  (y {ÅR{ÅR/+þ /*1*(y {ÆR{ÆR/*þ**þ,**:¥*o *0}’)¥* þ,`¥*þ,S&  {ÅR{ÅR/+þ / * 1 *{ÆR{ÆR/*þ**¥*þ,**0=“)þ,4 &  ¹y7ž{ÆRbcXXX ¹y7ž{ÅRbcXXX **6(n o *0@”)þ,1u* ,%&  {ÅR{ÅR3{ÆR{ÆRþ***þþ*0<•)þ,-þ,%&  {ÅR{ÅR3{ÆR{ÆRþ***þþ*0–)u* ,o“ **"s– *V( }ÇR}ÈR*{ÇR*{ÈR*&*Zr.8ps”> (+o•> *0x˜)þ,gþ,_&  (y {ÇR{ÇR/+þ /*1*(y {ÈR{ÈR/*þ**þ,**:¥*o› *0}™)¥* þ,`¥*þ,S&  {ÇR{ÇR/+þ / * 1 *{ÈR{ÈR/*þ**¥*þ,**0=š)þ,4 &  ¹y7ž{ÈRbcXXX ¹y7ž{ÇRbcXXX **6(n ož *0@›)þ,1u* ,%&  {ÇR{ÇR3{ÈR{ÈRþ***þþ*0<œ)þ,-þ,%&  {ÇR{ÇR3{ÈR{ÈRþ***þþ*0)u* ,o¡ **"s¤ *V( }ÉR}ÊR*{ÉR*{ÊR*&*Zr.8ps–> (+o—> *0xŸ)þ,gþ,_&  (y {ÉR{ÉR/+þ /*1*(y {ÊR{ÊR/*þ**þ,**:¥*o© *0} )¥* þ,`¥*þ,S&  {ÉR{ÉR/+þ / * 1 *{ÊR{ÊR/*þ**¥*þ,**0=¡)þ,4 &  ¹y7ž{ÊRbcXXX ¹y7ž{ÉRbcXXX **6(n o¬ *0@¢)þ,1u* ,%&  {ÉR{ÉR3{ÊR{ÊRþ***þþ*0<£)þ,-þ,%&  {ÉR{ÉR3{ÊR{ÊRþ***þþ*0¤)u* ,o¯ **&s² *r( }ËR}ÌR}ÍR*{ËR*{ÌR*{ÍR*&*Zr.8ps˜> (+o™> *0µ¦)þ9¡þ9–&  (y {ËR{ËRŒ¼+ (”¨ /*1*(y {ÌR{ÌR/+þ/*1*(y {ÍR{ÍR/*þ**þ,**:¥*o¸ *0´§)¥* þ9”¥*þ9„&  {ËR{ËRŒ¼+(”¨ / * 1 *{ÌR{ÌR/+þ/*1*{ÍR{ÍR/*þ**¥*þ,**0[¨)þ,R &  ¹y7ž{ÍRbcXXX ¹y7ž{ÌRbcXXX ¹y7ž{ËR (•¨bcXXX **6(n o» *0b©)þ,Su* ,G&  {ËR {ËRŒ¼+(—¨,{ÌR{ÌR3{ÍR{ÍRþ****þþ*0Qª)þ,Bþ,:&  {ËR{ËR(+,{ÌR{ÌR3{ÍR{ÍRþ****þþ*0«)u* ,o¾ **"sÁ *V( }ÎR}ÏR*{ÎR*{ÏR*&*Zr.8psš> ( +o›> *0x­)þ,gþ,_&  (y {ÎR{ÎR4+þ /*1*(y {ÏR{ÏR/*þ**þ,**:¥*oÆ *0}®)¥* þ,`¥*þ,S&  {ÎR{ÎR4+þ / * 1 *{ÏR{ÏR/*þ**¥*þ,**0C¯)þ,: &  ¹y7ž{ÏRbcXXX ¹y7ž{ÎR(L+bcXXX **6(n oÉ *0@°)þ,1u* ,%&  {ÎR{ÎR3{ÏR{ÏRþ***þþ*0<±)þ,-þ,%&  {ÎR{ÎR3{ÏR{ÏRþ***þþ*0²)u* ,oÌ **&sÏ *r( }ÐR}ÑR}ÒR*{ÐR*{ÑR*{ÒR*&*Zr.8psœ> ( +o> *0µ´)þ9¡þ9–&  (y {ÐR{ÐR/+þ /*1*(y {ÑR{ÑRŒ¾+ (¨¨/*1*(y {ÒR{ÒR/*þ**þ,**:¥*oÕ *0´µ)¥* þ9”¥*þ9„&  {ÐR{ÐR/+þ / * 1 *{ÑR{ÑRŒ¾+(¨¨/*1*{ÒR{ÒR/*þ**¥*þ,**0[¶)þ,R &  ¹y7ž{ÒRbcXXX ¹y7ž{ÑR (©¨bcXXX ¹y7ž{ÐRbcXXX **6(n oØ *0b·)þ,Su* ,G&  {ÐR{ÐR31{ÑR {ÑRŒ¾+(«¨,{ÒR{ÒRþ****þþ*0Q¸)þ,Bþ,:&  {ÐR{ÐR3${ÑR{ÑR( +,{ÒR{ÒRþ****þþ*0¹)u* ,oÛ **(ž> *.þoŸ> *V(ž> } > }¡> *0r»){ > (¢> ,+{ >  s£> (¤> { > (¢> þ o¥> ,{¡> {¡> (ò X(ó *oŸ> o¦> *(§> *.þoÏ: *V(§> }¨> }©> *0n¼){¨> (ª> ,+{¨>  s«> (¬> {¨> (ª> oò ,"{©> {©> (ò X(ó þo­> *oÏ: oÖ *{×R*{ØR*{ÙR*r( }×R}ØR}ÙR*"{×R*6{ØRo®> *:sì *Ò( }ÚR}ÛR}ÜR}ÝR}ÞR}ßR*{ÚR*{ÛR*{ÜR*{ÝR*{ÞR*{ßR*&*Zr.8ps¯> ( +o°> *0½)þ,pþ,h&  (y {ÚR{ÚR o0³ /*1*(y {ÛR{ÛR o̲/*(üœ**þ,**:¥%*oõ *0a¾)¥%* þ,D¥%*þ,7&  {ÚR{ÚRo0³ / * 1 *(ýœ**¥%*þ,**0Á¿)þ9µ &  ¹y7ž{ßRo¿ bcXXX ¹y7ž{ÞRo1³bcXXX ¹y7ž{ÝRo¿ bcXXX ¹y7ž{ÜR , ( +bcXXX ¹y7ž{ÛRoͲbcXXX ¹y7ž{ÚRo1³bcXXX **6(n oø *0%À)þ,u%* , (þœ**þþ*0 Á)þ9Žþ9ƒ&  {ÚR{ÚR(Ó+,h{ÛR{ÛR( +,S{ÜR{ÜR(ñ ,>{ÝR{ÝR(+,){ÞR{ÞR(Ó+,{ßR{ßRþ(+*******þþ*0À)u%* , þoû **0 sþ *ò( }àR}áR}âR}ãR}äR}åR}æR*{àR*{áR*{âR*{ãR*{äR*{åR*{æR*&*Zr.8ps±> (+o²> *0°Â)þ9œþ9‘&  (y {àR{àR o0³ /*1*(y {áR{áR o̲/*1*(y {âR{âR(   / * (ÿœ**þ,**:¥&*o¡*0°Ã)¥&* þ9¥&*þ9€&  {àR{àRo0³ / * 1 *{áR{áRo̲/*1*{âR{âR(   / * (**¥&*þ,**Jþ, (**6(n o ¡*0'Ä)þ,u&* , &(**þþ*0¸Å)þ9¦þ9›&  {àR{àR(Ó+9}{áR{áR( +,h{âR{âR(ñ ,S{ãR{ãR(+,>{äR{äR(+,){åR{åR(Ó+,{æR{æRþ(+********þþ*0Ä)u&* , þo¡**{çR*{èR*{éR*{êR*{ëR*{ìR*{íR*{îR*{ïR*{ðR*{ñR*{òR*{óR*{ôR*{õR*{öR*{÷R*{øR*{ùR*{úR*{ûR*{üR*{ýR*{þR*{ÿR*{S*{S*{S*{S*{S*{S*{S*{S*{S*{ S*{ S*{ S*{ S*{ S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{S*{ S*{!S*{"S*{#S*{$S*{%S*{&S*{'S*{(S*{)S*{*S*{+S*{,S*{-S*{.S*{/S*{0S*{1S*{2S*{3S*{4S*{5S*{6S*{7S*{8S*{9S*{:S*{;S*{S*{?S*{@S*{AS*{BS*{CS*{DS*{ES*{FS*{GS*{HS*{IS*{JS*{KS*{LS*04( }çR}èR}éR}êR}ëR}ìR}íR}îR }ïR }ðR }ñR }òR }óR}ôR}õR}öR}÷R}øR}ùR}úR}ûR}üR}ýR}þR}ÿR}S}S}S}S}S}S }S!}S"}S#} S$} S%} S&} S'} S(}S)}S*}S+}S,}S-}S.}S/}S0}S1}S2}S3}S4}S5}S6}S7}S8}S9}S:} S;}!S<}"S=}#S>}$S?}%S@}&SA}'SB}(SC})SD}*SE}+SF},SG}-SH}.SI}/SJ}0SK}1SL}2SM}3SN}4SO}5SP}6SQ}7SR}8SS}9ST}:SU};SV}SY}?SZ}@S[}AS\}BS]}CS^}DS_}ES`}FSa}GSb}HSc}ISd}JSe}KSf}LS*(³> *"(©¦*(´> *"(l¦*(´> *"(l¦*(µ> *"(“¦*(¶> *"(p¦*(·> *"(‡¦*(¸> *"(¤¦*(¹> *"(Ц*(º> *"(ަ*(´> *"(l¦*(»> *"(–¦*(¼> *"(š¦*(¼> *"(š¦*(½> *"(¦*(¾> *"(¡¦*(¾> *"(¡¦*(¿> *"(¬¦*(´> *"(l¦*(¼> *"(š¦*:(C }MS*0oì({MS{ôR{MS{ùR {MS{ñR{MS{úRr0+p( {MS{ôRs˜ oj= {MS{õR (žœ(Ÿœ("¬*Ò}NS}OS}PS}QS}RS}SS(À> *0Ö{RSYE +8Š+v8¢{NS{óR¥›%oÁ> }QS}RS{QSoï ,R{QSoÂ> }OS{OS(ò+ }PS}RSrV+p{PSs˜ }SS*}PS}OS+¡}RS{QS(+}QS}RS}SS*0‡e {RSYE++e{RSE + ++++}RS{QS(+}RS}SS Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{RSE + + +++***"{SS*0 {NSsŸ¡*:(Ã> }TS*0%Ç){TS(p+ (`= sa= {ìR(ï¨ob= 2=(( r¾Ýps˜ (e= (f= (g= X X3Ã{ìR(ú¨ob= ?w($(Ä>   {¡=  {¢= s ; (Å> (f;   -+{öRX rr+p s˜ (e= (f= (g= +X X3‰(e= (Æ> þ,(V *(/*(S< *"s\ z:(Ç> }US*B{USþo]= *:(È> }VS*0È){VSoÉ> s©¡*:(Ê> }WS*0Ê){WSoË> s«¡*:(Ì> }XS*0Ì){XSoÍ> s­¡*:(Î> }YS*:{YS(F*:(Ï> }ZS*:{ZS(*(Ð> *0Í)(Ñ> (Ò> (Ó> *:(- }[S*:{[S(õœ*(Ô> *0Í)(Ñ> (Ò> (Ó> sï< *V(^+ }\S}]S*0mÎ){\S{9S{]Soƒ= (‡= (ˆ= (…= (‰= („= (Õ> {\S(B{\S(t¦{]Ssm= ({\S{]S(ˆ+  (   (  {\S(ª¦{]S(I  o­  {\S (ß²(X{\S{]S(<uò.þ{\S  ([{\S  (Z(+{\S{]S(G{\S {]S(H{\S(‹¦{]Ssy= (‚{\S {]S(w{\S {]S(~{\S {]S(| (; €_þþ _þþ _þþ _þþ _þþ(?(° _þþ(}»(n o‰»,(?»+ _,(=»+(?»s³»*ò}^S}_S}`S}aS}bS}cS}dS(Ö> *0 y({cSYE +8È8›8Ý{^S{ìR(Ô¨ob= (µ o¶ }bS}cS{bSoï 9~{bSo· }_S{^S{_S(E}`S{`S,8{`S}aS}cS{aS(×> }dS*þ%}aS+}`S}_S8rÿÿÿ}cS{bS(Á+}bS}cS}dS*0e {cSYE+8h{cSE + +!+ +++}cS{bS(Á+}cS}dS Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{cSE + ++ +++***"{dS*0 y({^Sþ%s½¡*:(Ø> }eS*V{eS{6SþoÙ> *(· *"( *:(- }fS*:{fS(õœ*(· *"( *0D}gS}hS}iS}jS}kS}lS}mS}nS(Ö> *0y({mSYE +8·8Š8Ì{hS¥ýo¶ }lS}mS{lSoï 9~{lSo· }iS{gS{iS(E}jS{jS,8{jS}kS}mS{kS(×> }nS*þ%}kS+}jS}iS8rÿÿÿ}mS{lS(Á+}lS}mS}nS*0e {mSYE+8h{mSE + +!+ +++}mS{lS(Á+}mS}nS Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{mSE + ++ +++***"{nS*0 !y({gS{hSþ%sË¡*V(Î> }oS}pS*0 _Ï){oS{ìR(û¨ob= {oSsásÅ¡{pSsÇ¡sÉ¡(+ {oSþ%sË¡þ(‰+*:(Ú> }qS*V{qS{:SþoÛ> *(Ü> *"(Ý> *:(- }rS*:{rS(õœ*’(Þ> }sS}tS}uS}vS*0 "{sS{tS{uS{vSþ(P*:(ß> }wS*V{wS(à> þoá> *:(â> }xS*:{xS(&*(ã> *0'Ð)(ä> (å> (æ> (ç> (è>  *:(é> }yS*:{yS(ôœ*V(ê> }zS}{S*0 ÒÒ)(ä> (å> (æ> (ç> (è> i_-(oº+ 3(qº+3(sº+(oº{{S{zS(K{{S(„¦sm= ( {{S{So  (°_þþ _þþ_þþs†ºsë> *(ì> *"(í> *(î> *"(ï> *:(Ú> }|S*:{|S('*(Ü> *"(Ý> *:(- }}S*:{}S(õœ*’(Þ> }~S}S}€S}S*0 "{~S{S{€S{Sþ(P*:(ß> }‚S*V{‚S(à> þoá> *:(Ø> }ƒS*V{ƒS{6SþoÙ> *(· *"( *:(- }„S*:{„S(õœ*(· *"( *:(ð> }…S*V{…S{;Sþoñ> *(ò> *"(ó> *:(ô> }†S*:{†S(óœ*:(õ> }‡S*N{‡S(ö> (’*:(Ø> }ˆS*:{ˆS(*(· *"( *:(- }‰S*:{‰S(õœ*(· *"( *:(Ø> }ŠS*:{ŠS(*(· *"( *:(- }‹S*:{‹S(õœ*(· *"( *0L}ŒS}S}ŽS}S}S}‘S}’S}“S }”S( *0 Ï{“SYE +8ƒ+v8›{S{SY(µ o¶ }’S}“S{’Soï ,G{’So· }‘S}“S{ŒS{S{ŽS{‘S(Y}”S*}‘S+¬}“S{’S(Á+}’S}“S}”S*0‡e {“SYE++e{“SE + ++++}“S{’S(Á+}“S}”S Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{“SE + + +++***"{”S*0 ){ŒS{S{ŽS{S{Ss¢*²(÷> }•S}–S}—S}˜S}™S*0 0{•S{–S{—S{˜S{™Ss¢þ(é+*0D}šS}›S}œS}S}žS}ŸS} S}¡S(' *0 É{ SYE +8}+p8•{œS{SY(µ o¶ }ŸS} S{ŸSoï ,A{ŸSo· }žS} S{šS{›S{žS(r}¡S*}žS+²} S{ŸS(Á+}ŸS} S}¡S*0‡e { SYE++e{ SE + ++++} S{ŸS(Á+} S}¡S Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ SE + + +++***"{¡S*0 #{šS{›S{œS{Ss¢*’(ø> }¢S}£S}¤S}¥S*0 *{¢S{£S{¤S{¥Ss¢þ(‹+*V(ù> }¦S}§S*V{¦S{§S(^*(ú> *&(¶œ*(ú> *&(¶œ*V(ù> }¨S}©S*V{¨S{©S(^*V(ù> }ªS}«S*V{ªS{«S(^*V(ù> }¬S}­S*V{­S{¬S(^*V(û> }®S}¯S*V{¯S{®S(a*:(½1 }°S*B{°SXÑ((³*V(ù> }±S}²S*V{²S{±S(^*:(ü> }³S*R{³S(Dsý> *(þ> **:(ÿ> }´S*0OÔ)(? (? (? (…= (? ( {´S0*{´S0 {´S þ+,**(ÿ> *"(? *:(ü> }µS*R{µS(Dsý> *(þ> **:(ÿ> }¶S*0OÔ)(? (? (? („= (? ( {¶S0*{¶S0 {¶S þ+,**(ÿ> *"(? *:(ð> }·S*V{·S{;Sþoñ> *(ò> *"(ó> *:(ô> }¸S*:{¸S(óœ*:(õ> }¹S*N{¹S(ö> (’*V(? }ºS}»S*0 ÕÕ)(? (? {ºS{»S(T {ÞR {ÜR {ßR {ÚR {ÛR {ÝR  (U° {ºS{»S(T {ÞR {ÜR {ßR {ÚR {ÛR {ÝR  (U°  o¬³ o­³(ºsþº*:(? }¼S*:{¼S(*(? *0Ö)( ? ( ? ( ? *:(- }½S*:{½S(õœ*( ? *0Ö)( ? ( ? ( ? s ? *r(? }¾S}¿S}ÀS*0 d{¾S{¿SsM¢{¾S{ìR(ë¨ob= {¾SsO¢sQ¢{ÀSsS¢{¾S(ë¨(3sU¢(+þ(+*(? *"(? *:(? }ÁS*0×)(? (? {ÁSþ*:(? }ÂS*V{ÂS{8Sþo? *(? *0Ø)(? (? (? *:(? }ÃS*:{ÃS(ïœ*:(? }ÄS*0 uÙ)(? (? (? {ÄS{JSoË= {ÞR {ÜR {ßR {ÚR {ÛR {ÝR  (U°o¬³s? *:(? }ÅS*R{ÅS(s? *(? *0Ú)(? ( ? ( *:(- }ÆS*Z{ÆS/*{ÆSþ*(!? *0Ú)(? ( ? ( sZ *0D}ÇS}ÈS}ÉS}ÊS}ËS}ÌS}ÍS}ÎS("? *0 É{ÍSYE +8}+p8•{ÉS{ÊSY(µ o¶ }ÌS}ÍS{ÌSoï ,A{ÌSo· }ËS}ÍS{ÇS{ÈS{ËS({}ÎS*}ËS+²}ÍS{ÌS(Á+}ÌS}ÍS}ÎS*0‡e {ÍSYE++e{ÍSE + ++++}ÍS{ÌS(Á+}ÍS}ÎS Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ÍSE + + +++***"{ÎS*0 #{ÇS{ÈS{ÉS{ÊSsm¢*r(#? }ÏS}ÐS}ÑS*0 ÌÛ){ÏS{ìR(ä¨ob= {ÏSse¢sg¢{ÑSsi¢sk¢(+ 9ƒ (> ( (> ( {ÏS{ìR(ä¨ob= 2{ÏS{ìR(æ¨ob= X+{ÏSX(( {ÏS{ÐS sm¢þ(+*($ *:(? }ÒS*f{ÒS{ s? *(? *0Ú)(? ( ? ( *:(- }ÓS*Z{ÓS/*{ÓSþ*(!? *0Ú)(? ( ? ( sZ *0D}ÔS}ÕS}ÖS}×S}ØS}ÙS}ÚS}ÛS( *0 É{ÚSYE +8}+p8•{ÖS{×SY(µ o¶ }ÙS}ÚS{ÙSoï ,A{ÙSo· }ØS}ÚS{ÔS{ÕS{ØS(}}ÛS*}ØS+²}ÚS{ÙS(Á+}ÙS}ÚS}ÛS*0‡e {ÚSYE++e{ÚSE + ++++}ÚS{ÙS(Á+}ÚS}ÛS Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ÚSE + + +++***"{ÛS*0 #{ÔS{ÕS{ÖS{×Ss}¢*r($? }ÜS}ÝS}ÞS*0 ÑÛ){ÜS{ìR(ç¨ob= {ÜSsu¢sw¢{ÞSsy¢s{¢(+ 9ˆ (> ( (> ( {ÜS{ìR(ç¨ob= 2{ÜS{ìR(é¨ob= X+{ÜS{ ( {ÜS{ÝS s}¢þ(ê+*(# *:(%? }ßS*:{ßS(*(&? *0Ü)('? ((? ()? *:(*? }àS*:{àS(ðœ*:(+? }áS*0&Ü)('? ((? ()? {áSþ(€*V(,? }âS}ãS*0 R{âS{ìR(Þ¨ob= {âSs…¢s‡¢{ãSs‰¢{âS(Þ¨(3{âSs‹¢(+*:(-? }äS*:{äS(*(.? *0Ý)(/? (0? (1? *:(2? }åS*:{åS(òœ*:(3? }æS*0&Ý)(/? (0? (1? {æSþ(ƒ*V(4? }çS}èS*0 R{çS{ìR(à¨ob= {çSs¢s‘¢{èSs“¢{çS(à¨(3{çSs•¢(+*:(5? }éS*V{éS{7Sþo6? *(7? *0Þ)(8? (9? (:? *:(;? }êS*:{êS(îœ*(? *0ß)(?? (@? (A? (B? *:(C? }ìS*:{ìS(ñœ*(D? *0&ß)(?? (@? (A? (B?  sä+ *r(E? }íS}îS}ïS*0 /ä){íS{ìR(î¨ob= {íSs¡¢s£¢(œ¦{ïSsF? s¥¢{íS(î¨(3s§¢(+ (ô+ (ó+ (ò+  _- (Á¹8f 3(ù+U 3(Ź+D 3(ǹ+3 3(ɹ+" 3(˹+r–+p(>À(Á¹_-(Ù¹+83(Û¹++3(ݹ+3(ß¹+r¾+p(>À(Ù¹0_-(¹+-3(Ÿ¹+ 3(¡¹+rè+p(>À(¹ 0_-(¯¹+3 3(±¹+" 3(³¹+r,p(>À(¯¹ _þþ @_þþ {íS (+  ,  (d +{îS {íS(7    só¹(<º*:(- }ðS*:{ðS(Š*r(- }ñS}òS}óS*0Iå){ñS{ùR {òS{óS(ò X (žœ(¡œ {óS{óS(ò X(ó *V(- }ôS}õS*j{ôS{õS(ò X(Š*:(- }öS*0Gæ){öSo& Þ4t u‰ ,"rL,p(e°( rÂp( s\ zþ*4V(- }÷S}øS*0 õ {÷S{øS(Œ, {÷S(Š*{÷S{øSX(Œ,{÷SX(Š*rt,pŒ’ ,-u¼ , (x ¥|o¡ +o& +rR9p( r¦,p( s\ z(G? *"(ë= *(H? *0ç)(E¬ ( þ*(I? *0ç)(E¬ ( (C¬s{·*r(J? }ùS}úS}ûS*ª{úSoH {ùSoH sZ {ûSs†½*:(K? }üS*B{üSþ(+*(L? *0é)( s½¢*:(M? }ýS*B{ýSþoN? *V(O? }þS}ÿS*0 Ìå){ÿSXZX {þS{ùR X (žœ(¡œ{þS{ùR X (žœ(¡œ{þS{ùR X (žœ(¡œ{þS{ùR  X (žœ(¡œ{þS{ùR X (žœ(¡œ{þS{ùR X (žœ(¡œsK= *V(O? }T}T*0 Îå){TX ZX {T{ùR X (žœ(¢œi{T{ùR X (žœ(¢œi{T{ùR X (žœ(œi{T{ùR X (žœ(¢œi{T{ùR X (žœ(œi{T{ùR X (žœ(¡œsK= **o &*0( bX( a*0(½( ( ( ( 3 þ**’(R? }T}T}T}T*0 òë)(c= (Î= (Ï= (d= (Ì= (Í= {ToH {TXoH {T oH {T XoH  -K{T{T(ß²(= (¨œ  (v=  (w= (©œ(P sZ (Y½8Ñ3({ToH sZ  sZ (W½8¥3 sZ (S½83 sZ (U½8u{T{úRr-p( Œ’  ,4 u¼  , (x ¥|o¡ + o& +rR9p( (>À sZ (S½ sZ {ToS? ,1{ToT? {T (i (j (+oU? *{T (i (j oU? *(V? *0/î) (W? (X? sY? (Z? ([? s{½(\? *:(M? }T*B{TþoN? *Ò(E? }T}T} T} T} T} T*0 dø){T{êR 9í (]? (^? (]? (_?  (ب(*¨b{T`(3¬(?¬Œ¦%,+ r¨9ps‚ zŽi  /%  Y  2' £­,(ޤ/%X X3Ù  sµ¢ (+ (+ (>  s`? Þt(> (a? s`? Þ+(> (a? s`? (b?  (c? (d? {T{ñRrd-p{ Ts˜ oj=  {T{ùR (žœ(œ_@Ž X id{T{ T  ((e? (f? (g? sÁ¢(+{ T(h? (i±(r°{ T(¼= sí·(:º*_@O_þþ_þþ{T{ùR X(žœ(¢œi {T{ùR X(žœ(¡œ{T{ùR X(žœ(¡œ(¨œ(v= (w=   X-(¼= +[  (㨌±+(n ((¨þ,rz-p(>À+{T(!{T{HS{ T!(y oi? {T{ T ((j? (e? (f? "(g? X!!XY[Zsß #s¸ $(h? sk? %$(• 9i#(ò !{T{ùR!(žœ(œ&&@_,V{T{ùR!(žœ(¡œ))d((&_,([{T!sâ(++(l? sm? +U{T{ùR!X))(žœ(œi((&_,( [{T!sÅ¢(++(l? sm? ''(n? ('(o? **op? sÇ¢sq? ,{T{ T,sÊ¢*( +sÌ¢(h? ,¥«%(!++%+(r? $& €_þþ(< #!(X(ó 8‹þÿÿs΢(+{ T"%(s? (i±(r° { T(Ä -(&°+sí·(:º*(>º*/²ár(C } T}T}T*0-º({ T{ùR {TX (žœ{Tþ(Ÿœ*0d}T}T}T}T}T}T}T}T }T }T }T }T() *0 }ù){TYE +818ä8F{T{ìR(ú¨ob= (µ o¶ }T}T{Toï 9ç{To· }T{T{T($}T{T(Å> }T{T(t? }T{T(Ä> }T{T(u? }T{T{T(V}T{Tuv--iuw-:}{T{ñRr-wp{T{T{öRXs˜ oj= {T{ùR (žœ(¡œ {TsÒ¢(¼+:{Ttv- {ÀY{T(¼+{Ttw-{ÁY( ¼}T}T{T{S{To  {T{T_,(÷»+(ù»{T(ƒ¦{Tsm= (s ¼}T*}T}T}Tþ%}T}T}T}T}T8 þÿÿ}T{T(Á+}T}T}T*0‡e {TYE++e{TE + ++++}T{T(Á+}T}T Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{TE + + +++***"{T*0 ú){Tþ%sÔ¢*:(v? }T*0'ú){Tþ%sÔ¢þ(++*0|}T}T}T} T}!T}"T}#T}$T }%T }&T }'T }(T })T}*T}+T(w? *0 û){*TYE +838É8H{T{ìR(ù¨ob= (µ o¶ })T}*T{)Toï 9é{)To· }T{T{T(#} T{ T(x? }!T{ T(y? }"T{ T(z? }#T{ T({? }$T{$T(@:4{#T {¡= {¢= s ; }%T{%T(e; }&T{%T(f; }'T{&T ( ¦Œ»+(n (¨,{'T{Tþ+9š{T{"T{!T(B}(T}*T{(T{$T(; uÿ.,tÿ.{^+ r¸-ps\ z{T{T(•{T(‚¦{Tsm= (sÓ»}+T*}(T+}'Tþ»+}&T}%T+}$Tþ%}#T}"T}!T} T}T8þÿÿ}*T{)T(Á+})T}*T}+T*0‡e {*TYE++e{*TE + ++++}*T{)T(Á+}*T}+T Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{*TE + + +++***"{+T*00ü){T{Tþ%þ»+sÜ¢*V(|? },T}-T*07ü){,T{-Tþ%þ»+sÜ¢þ("+*:(}? }.T*0 <ÿ)(^ s~?  {.T{ìR(ù¨ob= ?{.T(# (x?  (y?  (z?  ({? (@9¼  {¡=  {¢= s ; (e;     ( ¦Œ»+(n (¨þ,x{.T(B {.T(V    _þþ(;{.T(•{.T(‚¦sm= (så»(? (€? (? ++X X@ýþÿÿ(? þ(#+*:(‚? }/T*0;{/Toƒ? ,{/Tþo„? *rU.p( r{.p( s\ z( *"s\ z:(…? }0T*B{0Tþo†? *:(‡? }1T*0*{1Toˆ? sê¢*0\}2T}3T}4T}5T}6T}7T}8T}9T }:T };T }T}?T}@T*0 4n(C (B {=T{>T{?T{@Ts˜ (œ*(‹? *&þþ*:(Œ? }AT*R{AT(*¨£’*V(? }BT}CT*®{CT(*¨£’Y{BT(*¨£’ZX*( **:(Ó }DT*B{DTþ()*:(Ó }ET*B{ETþ(**:(Ç> }FT*B{FTþ(,*:(Ø> }GT*:{GT(%*:(5? }HT*:{HT(*:(? }IT*:{IT(*:(Ž? }JT*:{JT( *:(Ú> }KT*:{KT( *:(ð> }LT*:{LT(*:(Ø> }MT*:{MT(*:(? }NT*:{NT(6*:(? }OT*:{OT(m*:(‘? }PT*:{PT(k*:(’? }QT*:{QT(n*:(“? }RT*:{RT(*:(”? }ST*:{ST(„*:(•? }TT*:{TT(N*:(–? }UT*:{UT(f*:(—? }VT*:{VT(e*:(˜? }WT*:{WT(b*:(™? }XT*:{XT(g*:(š? }YT*:{YT(L*:(›? }ZT*:{ZT(O*:(œ? }[T*:{[T(p*:(? }\T*:{\T(J*:(ž? }]T*:{]T(q*Ò}^T}_T}`T}aT}bT}cT(Ÿ? *0 Óu&{bTYE +8‡+z8Ÿ(õ¨ {^T(*¨£’(µ o¶ }aT}bT{aToï ,@{aTo· }`T}bT{_T{=S{`To£= }cT*}`T+³}bT{aT(Á+}aT}bT}cT*0‡e {bTYE++e{bTE + ++++}bT{aT(Á+}bT}cT Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{bTE + + +++***"{cT*0 {^T{_Ts2£*V( ? }dT}eT*0 {dT{eTs2£þ($+*V(í }fT}gT*n{fToâ{gT(%+*r(í }hT}iT}jT*š{iT(¡? {hTo¢? {jT(%+*(£? *0I*(¤? (¥? (¦? (§? (¦? (§? (ñ ,(n þ(ú+**:(í }kT*>{kT(%+*:(í }lT*>{lT(%+*~mT** €*~nT********0 _s¨? €mT~ÿ8 €nTs©? €oTs©? €pT(ìŸ(ìŸ(ìŸ(ìŸ(îŸ(öŸ(øŸ(øŸ(öŸ(ª? («? («? («? («? («? («? («? («? («? ($ €qT(øŸ(ª? («? ($ €rT(îŸ(øŸ(öŸ(ª? («? («? («? ($ €sT( (øŸ(øŸ(ª? («? («? («? ($ €tT(öŸ(ª? («? ($ €uT(îŸ(øŸ(øŸ(üŸ(Ö¨(úŸ(ب(úŸ(ª? («? («? («? («? («? («? ($ €vT(Ô¨(úŸ(é¨(úŸ(ª? («? («? ($ €wT(Ô¨(úŸ(æ¨(úŸ(ª? («? («? ($ €xT(Ô¨(úŸ(üŸ(ª? («? («? ($ €yT(Ô¨(úŸ(Ô¨(úŸ(ª? («? («? ($ €zT( ( (öŸ(ª? («? («? («? ($ €{T(ìŸ( (öŸ(ª? («? («? («? ($ €|T( (øŸ(öŸ(ª? («? («? («? ($ €}T(öŸ(ª? («? ($ €~T(ìŸ(øŸ(öŸ(ª? («? («? («? ($ €T(òŸ(Ö¨(úŸ(ª? («? («? ($ €€T( (öŸ(ª? («? («? ($ €T(ìŸ( (öŸ(ª? («? («? («? ($ €‚T(îŸ(Ö¨(úŸ(ª? («? («? ($ €ƒT(ìŸ(ìŸ(øŸ(ª? («? («? («? ($ €„T(îŸ(ìŸ(ìŸ(øŸ(öŸ(Ú¨(úŸ(ª? («? («? («? («? («? («? ($ €…T(Ô¨(úŸ(  (  (ª? («? («? («? ($ €†T(ìŸ( (øŸ(ì¨(úŸ(ª? («? («? («? («? ($ €‡T(ìŸ(ب(úŸ(  (ª? («? («? («? ($ €ˆT(ìŸ(øŸ(öŸ(ª? («? («? («? ($ €‰T(ìŸ(øŸ(üŸ(ª? («? («? («? ($ €ŠT(îŸ(îŸ(øŸ( (ª? («? («? («? («? ($ €‹T(ìŸ(îŸ(Ô¨(úŸ(ª? («? («? («? ($ €ŒT(îŸ(îŸ(øŸ(øŸ( (ª? («? («? («? («? («? ($ €T(îŸ(ìŸ(ìŸ(ìŸ(ìŸ(îŸ(öŸ(øŸ(øŸ(ª? («? («? («? («? («? («? («? («? («? ($ €ŽT(ìŸ(ìŸ(þŸ(øŸ(üŸ(ª? («? («? («? («? («? ($ €T(ìŸ(ìŸ(þŸ(øŸ(ª? («? («? («? («? ($ €T(  (öŸ(ª? («? («? ($ €‘T(ü¨(úŸ(üŸ(ª? («? («? ($ €’T(ìŸ(øŸ(ôŸ(ôŸ(ôŸ(ª? («? («? («? («? («? ($ €“T(ª? ($ €”T(ݰs¯€•Ts>£s¬? €–T*0]* (­? ,Q (®? (ó/ (­? (®? (ò/ {¯? s°? o±? ,s²? (³? * +¥*0+*{´? o1% {µ? o¶? {·? o² &*0F* o¸? s; (< ,(= *(ò o¹? (ò X(ó (ò Y*V(º? }»? }¼? *0/(P (O {»? {½? {¼? sÖ o× þ*V(º? }¾? }¿? *0.(P (O {¾? {½? {¿? sÖ þo× *0d}À? }Á? }Â? }Ã? }Ä? }Å? }Æ? }Ç?  }È?  }É?  }Ê?  }Ë? (Ì? *0ß*{Ê? YE +88G8Û8ž{À? {– ¥·%oÍ? }É? }Ê? {É? oï 9K{É? oÎ? }Á? {Á? (Ï? }Â? {Á? (Ð? }Ã? {Â? ud9„{Â? td}Æ? {Æ? {Ñ? }Ç? {Ç? oÒ? }È? {È? ,(}Ê? {Ã? {È? (£+sN }Ë? *+}È? }Ç? þd}Æ? +a{Â? tc}Ä? {Ä? {Ó? }Å? }Ê? {Ã? {Å? sN }Ë? *þ}Å? þc}Ä? þ }Ã? }Â? }Á? 8¥þÿÿ}Ê? {É? (&+}É? }Ê? }Ë? *0”e {Ê? YE+8o{Ê? E ++$+ ++++}Ê? {É? (&+}Ê? }Ë?  Þ t   Þ&8wÿÿÿþ,z*[w ê{Ê? E +++ +++****"{Ë? *08¬{À? þþcþþd sÀ *(Ô? *&sÕ? *:(Ö? }×? *0 *(Ø? (Ù? {×? þþ*:(Ú? }Û? *0E *(Ø? (Ù? (O (P {Û? /ŒsÜ? (Ý? +(Þ? sß? *:(à? }á? *V{á? (â? oã? *:(ä? }å? *j{å? (Ù? (O oæ? *(º? **(ç? **(ç? ***o &**þ(F+*.þ(+*(è? *0! *(é? (ê? ¥('+së? *:(ç? }ì? *B{ì? oí? *(î? *&(ï? *rsð? ($¥o(+,(/ **Nsò? ($¥o(+*Nsó? ($¥o(+*Jsô? ($¥o)+*(¿ *6Œ,**:(¿ }õ? *B{õ? þ(+*:(¿ }ö? *V{ö? {j þ(*+*(÷? **þ(F+*:( }¯T*N{¯Toa (Y *²}°T}±T}²T}³T}´T(• *0¶{³TYE + +m+`8…{°Toø? ¥É%où? }²T}³T{²Toï ,5{²Toú? }±T}³T{±Toe }´T*}±T+¾}³T{²T(++}²T}³T}´T*0‡e {³TYE++e{³TE + ++++}³T{²T(++}³T}´T Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{³TE + + +++***"{´T*0 {°Ts‰£*V(6 }û? }ü? *–{ü? {û? {i {sý? þoþ? *ò}·T}¸T}¹T}ºT}»T}¼T}½T(ü *0û{¼TYE +8¯8Ž8Ä{·T¥Î%oÿ? }»T}¼T{»Toï ,y{»To@ }¸T{¸T(@ }¹T{¸T(@ }ºT}¼T{¹T{ºTsw{¹Tsn }½T*}ºT}¹T}¸T8zÿÿÿ}¼T{»T(,+}»T}¼T}½T*0‡e {¼TYE++e{¼TE + ++++}¼T{»T(,+}¼T}½T Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{¼TE + + +++***"{½T*0 {·Ts‘£*(6 *>Œþ(£+*0` *u+ ,>t+(à£,t+(à£(@ *u+ ,t+(Õ£ +º*u+ ,ôt+(Õ£ +á0$*o* Þt u#+ , Þþ* 0&*o* Þt u#+ , Þ Þ* 0Æ*($¥(K+,*uß , o¦ +Ùu!+ ,t!+(L¤ sR¤*u#+ ,#t#+(b¤ t#+(a¤sh¤*(ô ,(d rÛ.p( s¤*uÞ,oe rñ.p( s¤**~ U*~!U*~"U*~#U*0*~ôT (½¤sĤ*0,*(¤ o@ s¸ s@ (¾¤sʤ*"(½¤*"(¾¤*6( £(@ *>(¤þ(¥*>(¤þ(¥*6(¤(F+*6(¤(-+*>(¤þo®¤*>(¤þo­¤*>(¤(¥*>(¤(¥*N(¤($¥(¥*.þo* *0*s(¤ (¤þ(¥*~$U*€$U*0*(±£,s¤ (¤þ(¥**0*(±£,s¤ (¤þ(¥**0V(ß s(¤ (¤þ(¥*0*(û>s¤ (¤þ(¥*0**(¤ s̤ (¾¤o* Þ (¾¤&Ü* V,(.+*þo* *b({ -*s@ þ(¥+*0Q*uÔ%,)tÔ% {@ { @ (+(¤(F+*tÕ% { @ { @ (+*&(Ë+&*6(ö ( @ *N(ö (Ý# (Þ# *~%U*6(ö ( @ *0*uÔ%,*tÕ% { @ (@ *0Ã*uÔ%,tÔ% {@ { @ ($ *tÕ% { @ (*$ - { @ þo@ * { @ { @ o@ uØ%,)tØ%{@ {@ (/+($ *tÙ%{@ {@  (/+ (@ *05–({ ,' ({ (| o@ s@ þ(k +*(¾£*šo2 ,o@ sç¤þ(k +*(¾£*0A–({ ,( ({ (| o@ s@ þ(0+*(ö (J+(@ *0* (H" þ(1+*~&U*0*, (ƒ þo@ *(¾£*07–({ ,) ({ (| (2+s@ þ(k +*(¾£*0 * þ(3+*0f!*({ ,P (` ,; (` ({ (W% (| (4+ s@ þ(k +*r/ps\ z(` -í(¾£*0>#*o@ uÔ%,+tÔ% {@ { @ (Þ#  s@ þ(5+**^o @ sø¤þ(À +*V(6+sü¤þ(7+*~'U*J(Σ(_ o` *0Ì$*(ñ , r//ps‚ zo× sé  ob <’o^  YEA YE"(!@ , +o"@ +?(Σo˜ +.Xob /Xo^  þ+, (Σo˜   X 8bÿÿÿþo& *V(Ÿ }¾T}¿T*(Ÿ *0 (  *0 (¡ *{¾T*{¿T*0Mþ,D ¹y7žt+(Ö£(¿+bcXXX ¹y7žt+(Õ£(ô+bcXXX **6(n o×£*0d*þ,Uu ,I(8+-*t+(Õ£t+(Õ£(õ+,t+(Ö£t+(Ö£þ(À+***þþ*0^þ,Oþ,G(8+-*t+(Õ£t+(Õ£(ö+,t+(Ö£t+(Ö£þ(Â+***þþ*0*u , þoÚ£**:(Ÿ }ÀT*(Ÿ *0 (  *0 (¡ *{ÀT*0-þ,$ ¹y7žt+(à£(9+bcXXX **6(n oá£*0D*þ,5u ,)(:+-*t+(à£t+(à£þ(;+**þþ*0:%* u+ ,'t+(à£,t+(à£(@ þoe *r9/p*þþ,0þ,((:+-*t+(à£t+(à£þ(<+**þþ*0*u , þoå£**(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (=+-***þþ*Žþ,þ, (=+-***þþ*0*u ,oí£**V(Ÿ }ÁT}ÂT*(Ÿ *0 (  *0 (¡ *{ÁT*{ÂT*0j&*þ,a ¹y7žt+(ô£(¿+bcXXX ¹y7žt+(ó£ (Z (Y bX , ( +abcXXX **6(n oõ£*0˜'*þ9†u 9w(>+-*t+(ó£ t+(ó£ (Z (Y (Z (Y  3 (ñ +,t+(ô£t+(ô£þ(À+***þþ*0&(* u+ ,t+(ó£(Y *rp*0b)*þ,Sþ,K(>+-*t+(ó£ t+(ó£ (?+,t+(ô£t+(ô£þ(Â+***þþ*0*u , þoù£**V(Ÿ }ÃT}ÄT*(Ÿ *0 (  *0 (¡ *{ÃT*{ÄT*0j&*þ,a ¹y7žt+(¤(¿+bcXXX ¹y7žt+(ÿ£ (Z (Y bX , ( +abcXXX **6(n o¤*0˜'*þ9†u 9w(@+-*t+(ÿ£ t+(ÿ£ (Z (Y (Z (Y  3 (ñ +,t+(¤t+(¤þ(À+***þþ*0&** u+ ,t+(ÿ£(Y *rp*0b)*þ,Sþ,K(@+-*t+(ÿ£ t+(ÿ£ (?+,t+(¤t+(¤þ(Â+***þþ*0*u , þo¤**V(Ÿ }ÅT}ÆT*(Ÿ *0 (  *0 (¡ *{ÅT*{ÆT*0VÍþ,M ¹y7žt+( ¤(¿+bcXXX ¹y7žt+( ¤ , ( +bcXXX **6(n o ¤*0c*þ,Tu ,H(A+-*t+( ¤t+( ¤(ñ ,t+( ¤t+( ¤þ(À+***þþ*0^þ,Oþ,G(A+-*t+( ¤t+( ¤(ñ ,t+( ¤t+( ¤þ(Â+***þþ*0*u , þo¤**r(Ÿ }ÇT}ÈT}ÉT*(Ÿ *0 (  *0 (¡ *{ÇT*{ÈT*{ÉT*0pÍþ,g ¹y7žt+(¤(¿+bcXXX ¹y7žt+(¤bcXXX ¹y7žt+(¤ , ( +bcXXX **6(n o¤*0}*þ,nu ,b(B+-*t+(¤t+(¤(ñ ,9t+(¤t+(¤3t+(¤t+(¤þ(À+****þþ*0xþ,iþ,a(B+-*t+(¤t+(¤(ñ ,8t+(¤t+(¤3t+(¤t+(¤þ(Â+****þþ*0*u , þo¤**:(Ÿ }ÊT*(Ÿ *0 (  *0 (¡ *{ÊT*0-þ,$ ¹y7žt+("¤(¿+bcXXX **6(n o#¤*0D*þ,5u ,)(C+-*t+("¤t+("¤þ(À+**þþ*þþ,0þ,((C+-*t+("¤t+("¤þ(Â+**þþ*0*u , þo&¤**V(Ÿ }ËT}ÌT*(Ÿ *0 (  *0 (¡ *{ËT*{ÌT*0VÍþ,M ¹y7žt+(-¤(¿+bcXXX ¹y7žt+(,¤ , ( +bcXXX **6(n o.¤*0c*þ,Tu ,H(D+-*t+(,¤t+(,¤(ñ ,t+(-¤t+(-¤þ(À+***þþ*0^þ,Oþ,G(D+-*t+(,¤t+(,¤(ñ ,t+(-¤t+(-¤þ(Â+***þþ*0*u , þo1¤**V(Ÿ }ÍT}ÎT*(Ÿ *0 (  *0 (¡ *{ÍT*{ÎT*0VÍþ,M ¹y7žt+(8¤(¿+bcXXX ¹y7žt+(7¤ , ( +bcXXX **6(n o9¤*0c*þ,Tu ,H(E+-*t+(7¤t+(7¤(ñ ,t+(8¤t+(8¤þ(À+***þþ*0^þ,Oþ,G(E+-*t+(7¤t+(7¤(ñ ,t+(8¤t+(8¤þ(Â+***þþ*0*u , þo<¤**:(Ÿ }ÏT*(Ÿ *0 (  *0 (¡ *{ÏT*0-þ,$ ¹y7žt +(B¤(¿+bcXXX **6(n oC¤*0D*þ,5u ,)(F+-*t +(B¤t +(B¤þ(À+**þþ*þþ,0þ,((F+-*t +(B¤t +(B¤þ(Â+**þþ*0*u , þoF¤**:(Ÿ }ÐT*(Ÿ *0 (  *0 (¡ *{ÐT*06Íþ,- ¹y7žt!+(L¤ , ( +bcXXX **6(n oM¤*0A*þ,2u ,&(G+-*t!+(L¤t!+(L¤(ñ **þþ*öþ,.þ,&(G+-*t!+(L¤t!+(L¤(ñ **þþ*0*u ,oP¤**V(Ÿ }ÑT}ÒT*(Ÿ *0 (  *0 (¡ *{ÑT*{ÒT*0VÍþ,M ¹y7žt"+(W¤(¿+bcXXX ¹y7žt"+(V¤ , ( +bcXXX **6(n oX¤*0c*þ,Tu ,H(H+-*t"+(V¤t"+(V¤(ñ ,t"+(W¤t"+(W¤þ(À+***þþ*0^þ,Oþ,G(H+-*t"+(V¤t"+(V¤(ñ ,t"+(W¤t"+(W¤þ(Â+***þþ*0*u , þo[¤**V(Ÿ }ÓT}ÔT*(Ÿ *0 (  *0 (¡ *{ÓT*{ÔT*0_Íþ,V ¹y7žt#+(b¤ , ( +bcXXX ¹y7žt#+(a¤ , ( +bcXXX **6(n oc¤*0`*þ,Qu ,E(I+-*t#+(a¤t#+(a¤(ñ ,t#+(b¤t#+(b¤(ñ ***þþ*0\þ,Mþ,E(I+-*t#+(a¤t#+(a¤(ñ ,t#+(b¤t#+(b¤(ñ ***þþ*0*u ,of¤**r(Ÿ }ÕT}ÖT}×T*(Ÿ *0 (  *0 (¡ *{ÕT*{ÖT*{×T*0‚Íþ9v ¹y7žt$+(n¤(¿+bcXXX ¹y7žt$+(m¤ , ( +bcXXX ¹y7žt$+(l¤ , ( +bcXXX **6(n oo¤*0‚*þ,su ,g(J+-*t$+(l¤t$+(l¤(ñ ,>t$+(m¤t$+(m¤(ñ ,t$+(n¤t$+(n¤þ(À+****þþ*0}þ,nþ,f(J+-*t$+(l¤t$+(l¤(ñ ,=t$+(m¤t$+(m¤(ñ ,t$+(n¤t$+(n¤þ(Â+****þþ*0*u , þor¤**(6 *"s\ z*o &*09](#@  Þ t  Þ&s$@ rDps%@ (K+(Þþo, * 0|sz¤€ÙTsz¤€ÚTsz¤€ÛTsz¤€ÜTsz¤€ÝTsz¤€ÞTsz¤€ßTsz¤€àTsz¤€áT sz¤€âT sz¤€ãT*:( }ØT*~ÙT**(‘¤þ*~ÚT**(‘¤þ*~ÛT**(‘¤þ*~ÜT**(‘¤þ*~ÝT**(‘¤þ*~ÞT**(‘¤þ*~ßT**(‘¤þ*~àT**(‘¤þ*~áT**(‘¤þ*~âT*.(‘¤ þ*~ãT*.(‘¤ þ*{ØT*Zr.8ps&@ (L+o'@ *01.þ, þ,{ØT {ØT 3*Y**þ,**:¥(+o“¤*0B+*¥(+ þ,%¥(+þ,{ØT {ØT 3*Y**¥(+þ,**0pþ,g (‘¤E   $) * * * * * * * * * * **6(n o–¤*0.+*þ,u(+ ,{ØT {ØT þ**þþ*0*.þ,þ,{ØT {ØT þ**þþ*0*u(+ ,o™¤**{ïT*{ðT*V( }ïT}ðT*0Cþ,: ¹y7ž{ðTo–¤bcXXX ¹y7ž{ïT(ô+bcXXX **6(n ož¤*0H,*þ,9u*+ ,-{ïT{ïT(õ+,{ðT {ðT o˜¤***þþ*&s¤*00|rU/ps (­+ sª¤o£¤{ïToe þ(®+*0{ðT(‘¤E  $*06<rR9p*rc/p*rs/p*r‡/p*r“/p*r§/p*rewp*r·/p*rÅ/p*rÑ/p*rß/p*0ärc/p(ñ ,*rs/p(ñ ,+îr‡/p(ñ ,+ßr“/p(ñ ,+ÐrR9p(ñ ,,*r§/p(ñ ,,î+ìrewp(ñ ,,Ü+Úr·/p(ñ ,,Ê+ÈrÅ/p(ñ ,,¸+¶rÑ/p(ñ , 9£ÿÿÿ8žÿÿÿrß/p(ñ , 9‹ÿÿÿ8†ÿÿÿrêBp(ñ ,9sÿÿÿ*9kÿÿÿ*0A{ðT(‘¤E **úþ,/þ,'{ïT{ïT(ö+,{ðT{ðTo™¤***þþ*0-*u*+ ,o¦¤**:( }ñT*B{ñTþo *:(` }òT*0{{òToa s¨¤*Fo &}óT*.þo­¤*.þo®¤*zr÷/ps (ñ+{óTþo *>r0po¯¤&* * **>r?0po¯¤&* * **~ôT*~õT*€ôT*€õT*~ôT*0$£#~ôTŒ(+ (ð+þ,~ôT*({¤*"(½¤*0)£#~õTŒ-+ (ð+þ,~õT*( £((@ *"(¾¤*F}öTo &*6{öT(½¤*v})@ }*@ rm0po¯¤&*®{*@ (• ,+{)@ Œ¥-+þo­¤*®{*@ (• ,+{)@ Œ¥-+þo®¤*ª{*@ (• ,+{)@ Œ¥-+þo¬¤*b}ùT}úTo &*f{ùT(¾¤{úT(< *>r­0po¯¤&* * **( *"s+@ **uç%þ*"s,@ **uè%þ*0/* uè%,+*Zr.8ps-@ (M+o.@ *V(/@ }0@ }1@ *{0@ *{1@ *V(/@ }2@ }3@ *{2@ *{3@ *:( }4@ *2{4@ {0@ *2{4@ {1@ *:( }5@ *2{5@ {2@ *2{5@ {3@ *(ç? *0*Œ¥ (¤(¥*V(æ }6@ }7@ *V{6@ {7@ þ(N+*V(æ }U}U*V{U{Uþ(ã*r(8@ }9@ }:@ };@ *†{9@ {:@ ( {;@ þ(O+**o &*.þ(P+*6(ö ( @ **.þ(Q+*.þ(ã*(¾£*r(æ }<@ }=@ }>@ *v{<@ {>@ {=@ Xþ(R+*r(æ }?@ }@@ }A@ *n{?@ {A@ {@@ þ(S+*V(B@ }C@ }D@ *V{C@ {D@ þoE@ *V(x$ }U}U*‚,{UX{Uþ(Ì£*(¾£*(N( **(F@ *^(ö sú¤(T+(é# *080*Ð(d rÛ0p$oQ ŒùoR  Þ t  Þ&**+ 0Q2*uß ,*u ,*uâ ,*uã ,*(ô , (U+zuI,+é*0-3*u+ ,zu+ ,+ñ(À¤s¤þo®¤*0-3*u+ ,zu+ ,+ñ(À¤s¤þo­¤*V(¥(H sÜ£zjo®¤{ïT(H sÜ£z0û5*uJ ,*u+ 9¿t+(Õ£uJ ,+Ûu+ ,*t+(Õ£u+,+çu+,zt+(Õ£u+,+æ(œ£(¥(ÿ¤ÞAtu+  ,Þ(u+  ,t+(Õ£u+  ,+Õþ&*u+ ,8Rÿÿÿu+9‚ÿÿÿ8cÿÿÿx“A0¹6*u+ ,*u+ ,t+(Õ£u+ ,+Þ(¥ Ýytu+, Þau+,Et+(Õ£u+,+Öu+, Þ*t+(Õ£u+  ,+ãþu+,ñ+Ò &*,=y>($¥(¥*6€(U~(U&*0tsw¤€ Us³¤€!Us·¤€"U(Ÿ£sG@ €#U€$U(ö (Þ# €%Us뤀&U%Ѥsr+ €'U**~^U*~_U*0<. {?UoH@ ,*{>UoI@ {>UoJ@ {?Uoy7 *~`U*~aU*N(¥o5¥( ¥]*>(¥þo6¥*&s,¥*j(¥o5¥( ¥]s>¥**s>¥*~bU*~cU*0<8*r1psn+ (†+ sj¥ {=U  d {=U( ¥_(‡+&*0U;*r!1psK@ (V+ st¥ (¥{@U!ÿ?_io6¥sv¥(D¥sx¥(E¥(W+&*0<8*r1psM@ (X+ s|¥ {=U  d {=U( ¥_(‡+&*0U=*r!1psN@ (Y+ s†¥ (¥{@U!ÿ?_io6¥sˆ¥(D¥sŠ¥(E¥(Z+&*0b>* {=U  d {=U  d1* {=U  d {=U  d3! {=U( ¥_ {=U( ¥_þ**0B>* {=U  d {=U  d3! {=U( ¥_ {=U( ¥_þ**R(¥,*(¥*&(¥*0™?* {@U!ÿ?_i {@U!ÿ?_i.* {@U!Àÿ?_ci {@U!Àÿ?_ci1+e {@U!Àÿ?_ci {@U!Àÿ?_ci33 {@U!À_ci {@U!À_ciþ+,+ (A¥(A¥1+E(A¥(A¥33 {@U!À_6ci {@U!À_6ciþ+,+  {@U!ÿ?_i {@U!Àÿ?_ci {@U!À_ci(A¥ {@U!À_6cis=¥*0[@* {@U!ÿ?_i {@U!ÿ?_i3(D¥(D¥(¥+,(E¥(E¥(¥**‚(D¥(¥,(E¥(¥**>(E¥(¥*0+s,¥ Ps,¥ (¥o5¥( ¥]s>¥*~dU*~eU*~fU*~gU*0|A* {@U!Àÿ?_ci  {@U!À_ci (A¥  {@U!À_6ci 0*X {@U!ÿ?_is=¥*0<B*r1ps" (+ sŽ¥ {=U  d {=U( ¥_þ(+*0UC*r11ps (þ+ s”¥ (¥{@U!ÿ?_io6¥(D¥((¥(E¥((¥þ(+*6€hU~hU&*&}=U*00./+ /+ ( ¥_ b( ¥_`(+¥*0 {=U  d*:{=U( ¥_*"{=U**"s+¥*0"d([+-*¥J+ {=U{=Uþ*"{=U*’o & sQ@ }>U sv7 }?U*0BE* {?UoH@ ,*{?U  (R@ ( ¥ Þ, (S@ &Ü&Ü *10`/s7¥rA1psE> (Ý+oA &+{>UoI@ 2s9¥r™1psE> (Ý+oA &+{>UþoT@ *( *"s\ z( *"s\ z&}@U*B!s;¥*šjjb`jb`Yj'b`j6b`(;¥*0 C>* {=U  d {=U( ¥_ {=U  d {=U( ¥_(=¥*Z{@U!Àÿ?_ci*Z{@U!À_ci*®{@U!€ÿ?_'ci{@U!Àÿ?_ciX*Z{@U!À_6ci*r{@U!€_?ciþþ*¾{@U!Àÿ?_ci{@U!À_cis,¥*†(A¥{@U!À_6cis,¥*N{@U!ÿ?_i*’{@U!ÿ?_i(D¥(D¥s>¥*’{@U!ÿ?_i(E¥(E¥s>¥*~(¥{@U!ÿ?_iþo6¥*^{@U!€`s;¥*0 G*rï1psU@ (\+ sZ¥(¥{@U!ÿ?_io6¥{@U!Àÿ?_ci{@U!À_ci(A¥{@U!À_6ci{@U!€_?ciþþ (]+þo *0aE'r12psŠ (1+ sb¥{@U!Àÿ?_ci{@U!À_ci(A¥{@U!À_6ciþ(2+*"{@U*0"M(^+-*¥N+ {@U{@Uþ*>{@Uþ(:+*:( }AU*B{AUþo *:(V@ }BU*0Ò{BUoW@ sP¥*:(X@ }CU*0I*{CUoY@ sR¥*:(Z@ }DU*0K*{DUo[@ sT¥*:(\@ }EU*0M*{EUo]@ sV¥*:(^@ }FU*0O*{FUo_@ sX¥*:(Ó }GU*B{GUþo  *:(Ù }HU*0¸{HUoÚ s\¥*:( }IU*0º{IUoŽ s^¥*:( }JU*0B {JUo s`¥*(`@ *0$>* {=U  d {=U( ¥_sZ *(a@ *0,@* (¥{@U!ÿ?_io6¥(D¥sÆ6 *:(ƒ }KU*B{KUþoA *:(* }LU*0e{LUo+ sh¥*:(b@ }MU*B{MUþoc@ *:(d@ }NU*0Q*{NUoe@ sl¥*:(f@ }OU*0S*{OUog@ sn¥*:(h@ }PU*0U*{PUoi@ sp¥*:(j@ }QU*0W*{QUok@ sr¥*(l@ *.(¥*(l@ *.(¥*:(ƒ }RU*B{RUþoA *:(* }SU*0e{SUo+ sz¥*:(b@ }TU*B{TUþoc@ *:(m@ }UU*0Q*{UUon@ s~¥*:(o@ }VU*0Y*{VUop@ s€¥*:(q@ }WU*0[*{WUor@ s‚¥*:(s@ }XU*0]*{XUot@ s„¥*(u@ *.(¥*(u@ *.(¥*:(Ó }YU*B{YUþo  *:(Ù }ZU*0¸{ZUoÚ sŒ¥*:( }[U*B{[Uþo *:(` }\U*0{{\Uoa s¥*:(b }]U*0|{]Uoc s’¥*~(D¥(˜¥(E¥(˜¥s[ *0 X s,¥*0&>* {=U  dY {=U( ¥_sZ *0à (c¦b€^U(c¦ b€_U(c¦€`Us4¥€aUsd¥(Z¦(Z¦(_+(`+€bUsf¥(ÿÁ(¥(a+(b+€cUs,¥€dUrO2p("¥€eUrÖVp("¥€fUr_2p("¥€gU***~›U*~œU*0 ¿(k (ñ þ Þ t  Þ* :, þoâ **0"_*(c+ (v@ sw@ (x@ sy@ *0"_*(c+ (v@ sz@ (x@ s{@ *&s® ****>o1% sÖ *>o1% s|@ *Bo1% s}@ *Bo1% s~@ *Bo1% s@ *Jo1% s€@ *Jo1% s@ *Ro1% s‚@ *0 o1% sƒ@ *R(d+þ(e+*2þ(d+*v(d+(e+þ(f+*Vo1% o†@ s‡@ *zo1% o†@ oˆ@ s‰@ *0&`*(c+ (v@ (x@ sŠ@ s‹@ *0a*o1% o1% þ(^+*0cds% oÅ &þo& *0!cds% (g+&o& þo *02b*ds% (g+&o& r 8p(_ o` þo *0[e*s@ {Ž@ {@ s@ s‘@ (h+,(ƒ+o’@ &*{“@ ( o”@ {•@ þ(i+*0 þù**0þùsŠ2 *0+{Y/ Œù,{Y/ *o* (j+(Z/ *0-f*(k+ -o* (+ (l+* (ƒ *02g* sß  +(ò ([ X(ó X 2åþo* *{˜@ *{™@ *{š@ *"}š@ *r( }˜@ }™@ }š@ *0i*þ9‰þ9~(y {˜@ {˜@  (m+ /*1*(y {™@ {™@ (ˆ+/*1*(y {š@ {š@ þo›@ **þ,**:¥&oœ@ *0™k*¥& þ9y¥&þ,l{˜@ {˜@  (m+ /*1*{™@ {™@ (ˆ+/*1*{š@ {š@ þo›@ **¥&þ,**0bl*þ,Y ¹y7ž{š@ o@ bcXXX ¹y7ž{™@ (€+bcXXX ¹y7ž{˜@ (n+bcXXX **6(n ož@ *0nm*þ,_u& ,S{˜@ {˜@ (o+,9{™@ {™@  (‚+,{š@ {š@ þoŸ@ ****þþ*0]n*þ,Nþ,F{˜@ {˜@ (p+,-{™@ {™@  („+,{š@ {š@ þ(q+****þþ*0o*u& , þo @ **0®s*o &}¡@ s¢@ (r+ s£@ (s+ (t+}¤@ s¥@ (u+}¦@ {¦@ ¥&o§@ oï ,* o¨@ s©@ sª@ (v+(w+(«@ +ÎÞ u , oâ &Ü&Ü&*Z7‘N{¤@ o¬@ {™@ *0v*  s­@ {¦@ þ(x+*:(®@ }¯@ *07((°@ (±@ {¯@ {¡@ oÏ: {¯@ {¡@ oÏ: s²@ *:(³@ }´@ *Ò{´@ {¡@ oÏ: {´@ {¡@ oÏ: (µ@ s¶@ s·@ *(¸@ *"(¹@ *:(º@ }»@ *0#?(¼@ (½@ {»@ {¤@ þo¬@ *:(¾@ }¿@ *0%w*(°@ (±@ {¿@ {À@ þ(+*V(Á@ }Â@ }Ã@ *^{Â@ {Ã@ (y+*:(¿ }Ä@ *B{Ä@ þ(+*V(¿ }Å@ }Æ@ *n{Æ@ {Å@ oÏ: þo58 *V(Ç@ }È@ }É@ *n{È@ {É@ (ú (y+*{Ê@ *"}Ê@ *:( }Ê@ *08x*þ,'þ,(y {Ê@ {Ê@ þ(ˆ+**þ,**B¥'&þoË@ *0Cz*¥'& þ,&¥'&þ,{Ê@ {Ê@ þ(ˆ+**¥'&þ,**0*&þ,! ¹y7ž{Ê@ (€+bcXXX **6(n oÌ@ *04z*þ,%u'& ,{Ê@ {Ê@ þ(‚+**þþ*0/(þ, þ,{Ê@ {Ê@ þ(„+**þþ*0{*u'& , þoÍ@ **0~x"(ú8 oû8 o= 2(Î@ o= þ+,V(í¥~ü8 ~ü8 (î¥->r2pr3p( (ï¥ râp(Ï@ 0oÐ@ ( rS@p( sÑ@ z**¶{Ò@ þ,(Ó@ *(Ô@ }Ò@ {Õ@ þ(z+*0G~*(Ö@ (×@ ,sØ@ þÙ@ sÚ@ þoÛ@ *sÜ@ þÝ@ sÞ@ (ß@ *00*{Ò@ - (à@ sá@ {Õ@ (â@ }Õ@ *{Ò@ *( *sã@ **u-&þ*sä@ **u.&þ*så@ **u/&þ*0€* u/&,+ u.&,+*Zr.8psæ@ ({+oç@ *>sè@ þ(|+*:(ê@ }ë@ *{ë@ *:(ê@ }ì@ *{ì@ *:(ê@ }í@ *{í@ *:( }î@ *2{î@ {ë@ *:( }ï@ *2{ï@ {ì@ *:( }ð@ *2{ð@ {í@ *:(ñ@ }ò@ *0…‡*(ó@ (ô@ (õ@ {ò@ u.&-%u/&-9{ò@ t-&  {ë@ þoÚ *{ò@ t.&{ì@ þo– *{ò@ t/&{í@ þoö@ *žo &}÷@ (ø@ }ù@ s }ú@ *0ŸŒ*{ú@  (R@ (}+ Þ, (S@ &Ü&Ü sû@ (ü@ ,_ (ü@ (ü@ -E (ý@ (þ@  (ý@ (ÿ@  (ý@ (à@ (~+, oA &*þ(+*þ(€+** >sA þ(+*R(í sA þo‚+*V}A }A ( *R{A {A oA &*V}A }A ( *R{A {A oA &*:(A }A *0$*(þ@ (ÿ@ {A s A (+*:( A } A *0l*( A ( A (A { A {ú@ (R@ { A (ƒ+Þ, (S@ &Ü&Ü , (A þoA **&@(A *"(A *:({ }A *z(í {A oA sA þo„+*:(A (…+*0‘*oA (A ,*+ä0’*oÉ: - r„3ps\ z(§ *0,“*oÉ: oA -oA * (§ oA *N(A (…+oA *~sA ¥¸!(†+(‡+þ(ˆ+*(A *0•*(A (A ((+s A *Fs!A þ(‰+*V(¿ }"A }#A *^{"A {#A (;+þ*02–*(` ,' (W% (` (Š+,*+Ñ*V(‹+,*( *–({ -*({ -*s$A þ(Œ+*0;–({ ,- ({ (| (Š+,*X+ËsZ z.(+*0:—*(` -(H" * (` (W% (Š+,*(Ž+(i *02—*(` -* (` (W% s%A (++ÎFs&A þ(+*Fs'A þ(‘+*Z(’+, (“+**š({ -*({ -*(”+þ(Œ +*0C–({ -(€ * ({ (| (•+,(–+( *+½~s(A (ƒ+(€ (Œ+þ(ƒ+*:(á })A *>{)A (—+*:(*A }+A *F{+A þ(˜+*V(¿ },A }-A *R{,A {-A (™+*:(*A }.A *F{.A þ(˜+*V(¿ }/A }0A *f{/A s1A {0A (™+*:(á }2A *>{2A (—+*0G™*(3A ,9 (4A (g (4A (h (3A (Š+,* +¿sZ z07š*(K/ ,, (L/ (r (K/ (É+,*+Ì*2(Z¦(5A **o6A *&o7A *&o8A *&o9A *&o:A **o;A *&oš+**o›+*J,(ƒ *s·2 zFŒù,*s‚ z^(œ+Ži3s>A z*f(+ob -s‚ z*fs?A (ÿÁ(d þ(ž+*6(Ÿ+oƒ *(@A *&ob *fsT¦(ÿÁ(d þ(¤+*(( *&ob *&sAA *b}BA }CA o &*0C›*(O (P (O (P {BA  oDA ,*{CA þoEA *~ŸU*~žU*~U*0mž*( Áo'Á,+(U ( Áo%Á Þ@t uÞ , Þ,u,+îuR,+àuM,+Òþ*+@Ro o o *bo rEpo o *& ÿ_*.c ÿ_*2c ÿ_*2c ÿ_*0-*Y(c¦Y _b`*0*- !*Y(d¦Y !?_b`*6(c¦_b*6(d¦?_b*âs¸ €›Us¸ €œU( +€U(«+€žU(¡+€ŸU*~ßU*~àU*~áU*~âU*ÖEr¸3prè3ps z(i¦*(j¦*(k¦*~ãU*~äU*~åU*ÖErì3prè3ps z(m¦*(n¦*(o¦*~æU*~çU*~èU*~éU*~êU*~ëU*~ìU*~íU*~îU*~ïU*~ðU*~ñU*~òU*~óU*~ôU*~õU*~öU*~÷U*~øU*~ùU*~úU*~ûU*0êE &,28>DJPV\bhntz€†sH¨*(q¦*(r¦*(s¦*(t¦*(u¦*(v¦*(w¦*(x¦*(y¦*(z¦*({¦*(|¦*(}¦*(~¦*(¦*(€¦*(¦*(‚¦*(ƒ¦*(„¦*(…¦*(†¦*~üU*~ýU*ŠEsR¨*(ˆ¦*(‰¦*~þU*~ÿU*~V*²Es\¨*(‹¦*(Œ¦*(¦*~V*~V*~V*~V*âYEsf¨*(¦*(¦*(‘¦*(’¦*~V*~V*ŠEsp¨*(”¦*(•¦*~V*~V*~ V*²Esz¨*(—¦*(˜¦*(™¦*~ V*~ V*ŠEs„¨*(›¦*(œ¦*~ V*~ V*~V*²Esލ*(ž¦*(Ÿ¦*( ¦*~V*~V*’YEs˜¨*(¢¦*(£¦*~V*~V*~V*~V*ÚEs¢¨*(¥¦*(¦¦*(§¦*(¨¦*~V*~V*ŠEs¬¨*(ª¦*(«¦********** * * * * ***************** *A*E********** * * * * ******************* *!*"*#*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*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*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*y*z*{*|*}*~** €* * ‚* ƒ* „* …* †* ‡* ˆ* ‰* Š* ‹* Œ* * Ž* * * ‘* ’* “* ”* •* –* —* ˜* ™* š* ›* œ* * ž* Ÿ*  * ¡* ¢* ³* ´* µ* ¶* ·* ¸* ¹* º* Â* Ã* Æ* Ð* Ñ* Ò* Ó* Ô* Õ* Ö* ×* Ø* Ù* Ú* Û* Ü* Ý* Þ* ß* à* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* þ* £* ¤* ¥*~V*07£*('¶EaVªRþ**tñ- {\[(±´E¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¯ÿÿÿ¬ÿÿÿ+ªtò- {][(±´E[ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ^ÿÿÿ[ÿÿÿ[ÿÿÿ^ÿÿÿ^ÿÿÿ[ÿÿÿ8Vÿÿÿtó- {^[(±´Eÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿ ÿÿÿÿÿÿÿÿÿ ÿÿÿ ÿÿÿÿÿÿ8ÿÿÿt. {¢[(±´E³þÿÿ¶þÿÿ³þÿÿ¶þÿÿ³þÿÿ¶þÿÿ³þÿÿ¶þÿÿ³þÿÿ¶þÿÿ¶þÿÿ¶þÿÿ³þÿÿ¶þÿÿ8®þÿÿt.{¡[(±´E]þÿÿ`þÿÿ`þÿÿ`þÿÿ`þÿÿ`þÿÿ`þÿÿ`þÿÿ]þÿÿ`þÿÿ`þÿÿ`þÿÿ]þÿÿ`þÿÿ8Xþÿÿ0G§*('¶"3Rtô- {_[(±´3={`[(á´3/{`[tÝ- {˜Z 0 þþ+, {˜Z *('¶Ea?"(©§*tü- {l[5è {l[*tø-{f[5Ì{f[+átõ-{a[5¯{a[+Ä~V*~V********* * * * * ******************* *!*"*#*$*%*&*(***+*,*-*P********** * * * * ******************$*@*A*B*C*D*E*F*G*H* * * @*~V*~V*~V*~V*~V*~V*******@* €************* ** *@*0#©* (y {¡U {¡U  /* þ*:¥±+(#¨*0$ª*¥±+  {¡U {¡U  /* þ*0 ¹y7ž{¡UbcXXX *6(n (&¨*0$«*(¢+-*¥±+  {¡U{¡Uþ*&}¡U*"{¡U*"s)¨*0¬* {¡U{¡Uþ*0&­*(¢+-*¥±+   {¡U{¡Uþ*0#¯* (y {¢U {¢U  /* þ*:¥²+(.¨*0$°*¥²+  {¢U {¢U  /* þ*0 ¹y7ž{¢UbcXXX *6(n (1¨*0$±*(£+-*¥²+  {¢U{¢Uþ*&}¢U*"{¢U*0²* {¢U{¢Uþ*0&³*(£+-*¥²+   {¢U{¢Uþ*0#µ* (y {£U {£U  /* þ*:¥³+(8¨*0$¶*¥³+  {£U {£U  /* þ*0 ¹y7ž{£UbcXXX *6(n (;¨*0$·*(¤+-*¥³+  {£U{£Uþ*&}£U*"{£U*0¸* {£U{£Uþ*0&¹*(¤+-*¥³+   {£U{£Uþ*0#»* (y {¤U {¤U  /* þ*:¥´+(B¨*0$¼*¥´+  {¤U {¤U  /* þ*0 ¹y7ž{¤UbcXXX *6(n (E¨*0$½*(¥+-*¥´+  {¤U{¤Uþ*&}¤U*"{¤U*0¾* {¤U{¤Uþ*0&¿*(¥+-*¥´+   {¤U{¤Uþ*0#Á* (y {¥U {¥U  /* þ*:¥µ+(L¨*0$Â*¥µ+  {¥U {¥U  /* þ*0 ¹y7ž{¥UbcXXX *6(n (O¨*0$Ã*(¦+-*¥µ+  {¥U{¥Uþ*&}¥U*"{¥U*0Ä* {¥U{¥Uþ*0&Å*(¦+-*¥µ+   {¥U{¥Uþ*0#Ç* (y {¦U {¦U  /* þ*:¥¶+(V¨*0$È*¥¶+  {¦U {¦U  /* þ*0 ¹y7ž{¦UbcXXX *6(n (Y¨*0$É*(§+-*¥¶+  {¦U{¦Uþ*&}¦U*"{¦U*0Ê* {¦U{¦Uþ*0&Ë*(§+-*¥¶+   {¦U{¦Uþ*0#Í* (y {§U {§U  /* þ*:¥·+(`¨*0$Î*¥·+  {§U {§U  /* þ*0 ¹y7ž{§UbcXXX *6(n (c¨*0$Ï*(¨+-*¥·+  {§U{§Uþ*&}§U*"{§U*0Ð* {§U{§Uþ*0&Ñ*(¨+-*¥·+   {§U{§Uþ*0#Ó* (y {¨U {¨U  /* þ*:¥¸+(j¨*0$Ô*¥¸+  {¨U {¨U  /* þ*0 ¹y7ž{¨UbcXXX *6(n (m¨*0$Õ*(©+-*¥¸+  {¨U{¨Uþ*&}¨U*"{¨U*0Ö* {¨U{¨Uþ*0&×*(©+-*¥¸+   {¨U{¨Uþ*0#Ù* (y {©U {©U  /* þ*:¥¹+(t¨*0$Ú*¥¹+  {©U {©U  /* þ*0 ¹y7ž{©UbcXXX *6(n (w¨*0$Û*(ª+-*¥¹+  {©U{©Uþ*&}©U*"{©U*0Ü* {©U{©Uþ*0&Ý*(ª+-*¥¹+   {©U{©Uþ*0#ß* (y {ªU {ªU  /* þ*:¥º+(~¨*0$à*¥º+  {ªU {ªU  /* þ*0 ¹y7ž{ªUbcXXX *6(n (¨*0$á*(«+-*¥º+  {ªU{ªUþ*&}ªU*"{ªU*0â* {ªU{ªUþ*0&ã*(«+-*¥º+   {ªU{ªUþ*0#å* (y {«U {«U  /* þ*:¥»+(ˆ¨*0$æ*¥»+  {«U {«U  /* þ*0 ¹y7ž{«UbcXXX *6(n (‹¨*0$ç*(¬+-*¥»+  {«U{«Uþ*&}«U*"{«U*0è* {«U{«Uþ*0&é*(¬+-*¥»+   {«U{«Uþ*0#ë* (y {¬U {¬U  /* þ*:¥¼+(’¨*0$ì*¥¼+  {¬U {¬U  /* þ*0 ¹y7ž{¬UbcXXX *6(n (•¨*0$í*(­+-*¥¼+  {¬U{¬Uþ*&}¬U*"{¬U*0î* {¬U{¬Uþ*0&ï*(­+-*¥¼+   {¬U{¬Uþ*0#ñ* (y {­U {­U  /* þ*:¥½+(œ¨*0$ò*¥½+  {­U {­U  /* þ*0 ¹y7ž{­UbcXXX *6(n (Ÿ¨*0$ó*(®+-*¥½+  {­U{­Uþ*&}­U*"{­U*0ô* {­U{­Uþ*0&õ*(®+-*¥½+   {­U{­Uþ*0#÷* (y {®U {®U  /* þ*:¥¾+(¦¨*0$ø*¥¾+  {®U {®U  /* þ*0 ¹y7ž{®UbcXXX *6(n (©¨*0$ù*(¯+-*¥¾+  {®U{®Uþ*&}®U*"{®U*0ú* {®U{®Uþ*0&û*(¯+-*¥¾+   {®U{®Uþ*(GA *0xu (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ. (×°sÇ.  (Õ°sÇ.  (Õ°sÇ.  (Õ°sÇ.  (Õ°sÇ. (Ó°sÇ. (Ó°sÇ. (Ó°sÇ.  (Ó°sÇ. (аsÇ. (аsÇ. (аsÇ. (аsÇ. *(õsÇ. X(eµsÇ. Ö(gµsÇ. ×(iµsÇ. _(kµsÇ. [(mµsÇ. \(oµsÇ. þ(qµsÇ. þ(sµsÇ. þ(uµsÇ. þ(wµsÇ. þ(yµsÇ. g(—´({µsÇ. h(›´({µsÇ. i(Ÿ´({µsÇ. j(£´({µsÇ. Ó(«´({µsÇ. k(§´({µsÇ. l(©´({µsÇ. Ò(™´({µsÇ. Ñ(´({µsÇ. m(¡´({µsÇ. n(¥´({µsÇ. à(­´({µsÇ. v(•´({µsÇ. ³(—´(}µsÇ. µ(›´(}µsÇ. ·(Ÿ´(}µsÇ. ¹(£´(}µsÇ. Ô(«´(}µsÇ. ´(™´(}µsÇ. ¶(´(}µsÇ. ¸(¡´(}µsÇ. º(¥´(}µsÇ. Õ(­´(}µsÇ. ‚(—´(µsÇ. ƒ(›´(µsÇ. „(Ÿ´(µsÇ. …(£´(µsÇ. Š(«´(µsÇ. †(™´(µsÇ. ‡(´(µsÇ. ˆ(¡´(µsÇ. ‰(¥´(µsÇ. ‹(­´(µsÇ. œ(—´(¶sÇ. (›´(¶sÇ. ž(Ÿ´(¶sÇ. Ÿ(£´(¶sÇ.  (§´(¶sÇ. ¡(©´(¶sÇ. ›(«´(¶sÇ. ¢(¯´(¶sÇ. (—´(¶sÇ. ’(›´(¶sÇ. ”(Ÿ´(¶sÇ. –(£´(¶sÇ. ‘(™´(¶sÇ. “(´(¶sÇ. •(¡´(¶sÇ. ˜(§´(¶sÇ. ™(©´(¶sÇ. —(«´(¶sÇ. š(¯´(¶sÇ. Z(µsÇ. Ø(ƒµsÇ. Ù(…µsÇ. ](‡µsÇ. ^(‰µsÇ. b(‹µsÇ. c(µsÇ. d(µsÇ. Y(‘µsÇ. Ú(“µsÇ. Û(•µsÇ. a(—µsÇ. `(™µsÇ. e(›µsÇ. f(µsÇ. (ŸµsÇ. %(¡µsÇ. &(£µsÇ. Ã(¥µsÇ. (§µsÇ. (¶sÇ. þ(¶sÇ. þ(ÕµsÇ. Ü(ÓµsÇ. þ(¶sÇ. þ(¶sÇ. z(ѵsÇ. Ž( ¶sÇ. þ(ÙµsÇ. (È. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. (É. **o &*6(þ o^µ*:(n o`µ*:(JA }¯U*0ü*(KA (LA {¯UoMA *(NA *0óÿ*(Aµ;sOA (Gµ=sOA (IµBsOA (CµsOA (MµCsOA (Oµ?sOA (QµDsOA (Sµ@sOA (Uµ9sOA (Wµ:sOA (PA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA oRA s²¨sSA sµ¨(°+**o &*6(þ o^µ*:(n o`µ*:(JA }°U*0ü*(KA (LA {°UoMA *(NA *0óÿ*(Aµ.sOA (Gµ0sOA (Iµ5sOA (Cµ/sOA (Eµ4sOA (Kµ1sOA (Mµ6sOA (Oµ2sOA (Qµ7sOA (Sµ3sOA (Uµ,sOA (Wµ-sOA (PA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA (QA oRA s¹¨sSA s¼¨(°+*(TA *0$(n¸sUA ( ¸sUA (p¸sUA (r¸sUA (t¸sUA (¢¸sUA (¤¸sUA "(v¸sUA $(x¸sUA +(z¸sUA (¦¸sUA (|¸sUA -(¨¸sUA (~¸sUA (€¸sUA (‚¸sUA („¸sUA (†¸sUA  (ˆ¸sUA  (ЏsUA  (Œ¸sUA (ޏsUA (¸sUA (’¸sUA  (”¸sUA (˜¸sUA  (š¸sUA #(¬¸sUA %(®¸sUA &(œ¸sUA ((ž¸sUA (VA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA (WA *(XA *0+(YA (ZA s[A *(\A *bs¨(¨o > þ(±+*(]A *0.·(Ú¸s^A (ܸs^A (Þ¸ s^A (à¸s^A (â¸s^A (ä¸s^A (æ¸s^A (è¸s^A (ê¸s^A (ì¸ s^A (î¸ s^A (ð¸s^A (ò¸ s^A (ô¸s^A (ö¸s^A (ø¸s^A (ú¸$s^A (ü¸@s^A (þ¸As^A (¹Bs^A (¹Cs^A (¹Ds^A (¹Es^A (¹Fs^A ( ¹Gs^A ( ¹Hs^A (¹s^A (¹ s^A (¹s^A (¹s^A (¹s^A (¹s^A (¹s^A (¹s^A (¹s^A ( ¹s^A ("¹s^A ($¹s^A (&¹s^A (.¹s^A (0¹s^A (_A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A (`A *(aA *0+(bA (cA sdA *(eA *bsȨ(¨o; þ(²+*(fA *01(J¹sgA (L¹sgA (N¹sgA (P¹sgA (R¹sgA (T¹sgA (V¹sgA (X¹sgA (Z¹ sgA (\¹ sgA (^¹ sgA (`¹ sgA (b¹ sgA (d¹sgA (f¹sgA (h¹sgA (j¹sgA (l¹sgA (hA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA (iA *(jA *0+(kA (lA smA *(nA *bsΨ( ¨o@; þ(³+*~±U*~²U*~³U*~´U*~µU*~¶U*~·U*~¸U*~¹U*~ºU*~»U*~¼U*~½U*~¾U*~¿U*~ÀU*~ÁU*~ÂU*~ÃU*~ÄU*~ÅU*~ÆU*~ÇU*~ÈU*~ÉU*~ÊU*~ËU*~ÌU*~ÍU*~ÎU*~ÏU*~ÐU*~ÑU*~ÒU*~ÓU*~ÔU*~ÕU*~ÖU*~×U*~ØU*~ÙU*~ÚU*~ÛU*~ÜU*~ÝU*~ÞU*0fs)¨€±Us)¨€²Us)¨€³Us)¨€´Us)¨€µUs)¨€¶Us)¨€·Us)¨€¸Us)¨€¹U s)¨€ºU s)¨€»U s)¨€¼U s)¨€½U s)¨€¾Us)¨€¿Us)¨€ÀUs)¨€ÁUs)¨€ÂUs)¨€ÃUs)¨€ÄUs)¨€ÅUs)¨€ÆUs)¨€ÇUs)¨€ÈUs)¨€ÉUs)¨€ÊUs)¨€ËUs)¨€ÌUs)¨€ÍUs)¨€ÎUs)¨€ÏUs)¨€ÐU s)¨€ÑU!s)¨€ÒU"s)¨€ÓU#s)¨€ÔU$s)¨€ÕU%s)¨€ÖU&s)¨€×U's)¨€ØU(s)¨€ÙU)s)¨€ÚU*s)¨€ÛU+s)¨€ÜU,s)¨€ÝUps)¨€ÞU(Û¨sç< (ݨsç< (Þ¨sç< (ߨsç< (à¨sç< (á¨sç< (â¨sç< (ê¨sç< (ë¨sç< (î¨sç< (ï¨sç< (û¨sç< (ü¨sç< (þ¨sç< (oA (pA (pA (pA (pA (pA (pA (pA (pA (pA (pA (pA (pA (pA (pA €ßUs4¨€àUs4¨€áUs4¨€âUs>¨€ãUs>¨€äUs>¨€åUsH¨€æUsH¨€çUsH¨€èUsH¨€éUsH¨€êUsH¨€ëUsH¨€ìUsH¨€íUsH¨€îU sH¨€ïU sH¨€ðU sH¨€ñU sH¨€òU sH¨€óUsH¨€ôUsH¨€õUsH¨€öUsH¨€÷UsH¨€øUsH¨€ùUsH¨€úUsH¨€ûUsR¨€üUsR¨€ýUs\¨€þUs\¨€ÿUs\¨€Vsf¨€Vsf¨€Vsf¨€Vsf¨€Vsp¨€Vsp¨€Vsz¨€Vsz¨€Vsz¨€ Vs„¨€ Vs„¨€ Vsލ€ Vsލ€ Vsލ€Vs˜¨€Vs˜¨€Vs¢¨€Vs¢¨€Vs¢¨€Vs¢¨€Vs¬¨€Vs¬¨€Vs°¨(´+€Vs·¨(µ+€Vs¾¨(µ+€VsÀ¨(¶+€VsĨ(·+€Vsƨ(¸+€Vsʨ(¹+€Vs̨(º+€VsШ(»+€V*6oqA sr+ *žr4psê (,+oqA sr+ oì &srz~®V*~¯V*ZsrA osA þ(¼+*J(©otA ouA *0¸0YE rtvxz|~€‚„AYE?BEHKNaYE rB4ps\ z * * * *** * * * ************ *®(©otA ovA ,(©otA ouA *(Ù©*~°V*~±V*~²V*+ý&(©*0Ç+( ©onE #)/5;AGMSY_e{¡5³Éî -8?r½¨ps\ z(Å©*(¿©*(©*(Ï©*(Ñ©*(Ÿ©*(“©*(£©*(•©*(‘©*(¡©*(±©*(½©*(é*(—©*oqA sr+ (& (÷©*oqA sr+ ([ YoL (l (õ©*oqA sr+ o^ oqA sr+ o^ 02 9þþ+, 0þþ+, 9þþ+, (©Z(©Xj(÷©*oqA sr+ (Ù©*oqA sr+ (& (÷©*oqA sr+ o^ oqA sr+ o^ 02 9þþ+, 0þþ+, 9þþ+, (©Z(©Xj(÷©*oqA sr+ (Ù©*oqA sr+ (& (÷©*oqA sr+ §(x ¥|( (ó©*oqA sr+ (©otA ouA *oqA sr+ (©*oqA sr+ (ש*8Fýÿÿ(½+*(»©*6€³V~³V&*(wA *0"Kr,¬p(w©sxA rÔFp(Í©sxA rZ4p(Ë©sxA r®Ep(É©sxA rÕ@p(Ç©sxA r´öp(Á©sxA rn4p(¹©sxA rZEp(µ©sxA r€4p(³©sxA r4p(¯©sxA rFp(­©sxA rðEp(«©sxA r®zp(©©sxA rFp(§©sxA r¢4p(¥©sxA rØp(©sxA r¬4p(›©sxA rà­p(™©sxA r>Ep(©sxA rº4p(‹©sxA r6Fp(‰©sxA rRFp(‡©sxA rnFp(…©sxA rÄ4p(ƒ©sxA rXDp(©sxA rÐ4p(©sxA r"ëp(}©sxA râ4p({©sxA rö4p(y©sxA (yA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA (zA **o &*6,( **&(ñ *:({A }«V*0+(|A (}A {«Vo~A *V(à? }A }€A *0E+(A (â? {A Œ¥7 rS@p(p+(` {€A o‚A o~A *(ƒA *"(ç©*(„A *"(ñ©*(…A *"(ï©*(†A *"(í©*(‡A *"(ë©*(ˆA *"(é©*(‰A *"(á©*(ŠA *"(ß©*(‰A *"(Ý©*(‹A *"(å©*(ŒA *"(ã©*(A *0ä+ ès©sŽA s©(©oA (¾+s©(`®(¿+s©(b®(À+s©(c®(Á+s©(a®(Â+s!©(d®(Ã+s#©(e®(Ä+s%©(h®(Å+s'©(i®(Æ+s)©(j®(Å+s+©(f®(Ç+s-©(g®(È+*0ôs©(É+€®Vs/©(Ê+€¯V ‰% Ÿ€%Ð!V(E ¤% Ÿ€%Ð"V(E ¤% Ÿ€%Ð#V(E ¤% Ÿ€%Ð$V(E ¤% Ÿ€%Ð%V(E ¤% Ÿ€%Ð&V(E ¤% Ÿ€%Ð'V(E ¤% Ÿ€%Ð(V(E ¤% Ÿ€%Ð)V(E ¤% Ÿ€%Ð*V(E ¤% Ÿ€%Ð+V(E ¤% Ÿ€%Ð,V(E ¤% Ÿ€%Ð-V(E ¤% Ÿ€%Ð.V(E ¤% Ÿ€%Ð/V(E ¤% Ÿ€%Ð0V(E ¤% Ÿ€%Ð1V(E ¤% Ÿ€%Ð2V(E ¤% Ÿ€%Ð3V(E ¤% Ÿ€%Ð4V(E ¤% Ÿ€%Ð5V(E ¤% Ÿ€%Ð6V(E ¤% Ÿ€%Ð7V(E ¤% Ÿ€%Ð8V(E ¤% Ÿ€%Ð9V(E ¤% Ÿ€%Ð:V(E ¤% Ÿ€%Ð;V(E ¤% Ÿ€%ÐV(E ¤% Ÿ€%Ð?V(E ¤% Ÿ€%Ð@V(E ¤% Ÿ€%ÐAV(E ¤%! Ÿ€%ÐBV(E ¤%" Ÿ€%ÐCV(E ¤%# Ÿ€%ÐDV(E ¤%$ Ÿ€%ÐEV(E ¤%% Ÿ€%ÐFV(E ¤%& Ÿ€%ÐGV(E ¤%' Ÿ€%ÐHV(E ¤%( Ÿ€%ÐIV(E ¤%) Ÿ€%ÐJV(E ¤%* Ÿ€%ÐKV(E ¤%+ Ÿ€%ÐLV(E ¤%, Ÿ€%ÐMV(E ¤%- Ÿ€%ÐNV(E ¤%. Ÿ€%ÐOV(E ¤%/ Ÿ€%ÐPV(E ¤%0 Ÿ€%ÐQV(E ¤%1 Ÿ€%ÐRV(E ¤%2 Ÿ€%ÐSV(E ¤%3 Ÿ€%ÐTV(E ¤%4 Ÿ€%ÐUV(E ¤%5 Ÿ€%ÐVV(E ¤%6 Ÿ€%ÐWV(E ¤%7 Ÿ€%ÐXV(E ¤%8 Ÿ€%ÐYV(E ¤%9 Ÿ€%ÐZV(E ¤%: Ÿ€%Ð[V(E ¤%; Ÿ€%Ð\V(E ¤%< Ÿ€%Ð]V(E ¤%= Ÿ€%Ð^V(E ¤%> Ÿ€%Ð_V(E ¤%? Ÿ€%Ð`V(E ¤%@ Ÿ€%ÐaV(E ¤%A Ÿ€%ÐbV(E ¤%B Ÿ€%ÐcV(E ¤%C Ÿ€%ÐdV(E ¤%D Ÿ€%ÐeV(E ¤%E Ÿ€%ÐfV(E ¤%F Ÿ€%ÐgV(E ¤%G Ÿ€%ÐhV(E ¤%H Ÿ€%ÐiV(E ¤%I Ÿ€%ÐjV(E ¤%J Ÿ€%ÐkV(E ¤%K Ÿ€%ÐlV(E ¤%L Ÿ€%ÐmV(E ¤%M Ÿ€%ÐnV(E ¤%N Ÿ€%ÐoV(E ¤%O Ÿ€%ÐpV(E ¤%P Ÿ€%ÐqV(E ¤%Q Ÿ€%ÐrV(E ¤%R Ÿ€%ÐsV(E ¤%S Ÿ€%ÐtV(E ¤%T Ÿ€%ÐuV(E ¤%U Ÿ€%ÐvV(E ¤%V Ÿ€%ÐwV(E ¤%W Ÿ€%ÐxV(E ¤%X Ÿ€%ÐyV(E ¤%Y Ÿ€%ÐzV(E ¤%Z Ÿ€%Ð{V(E ¤%[ Ÿ€%Ð|V(E ¤%\ Ÿ€%Ð}V(E ¤%] Ÿ€%Ð~V(E ¤%^ Ÿ€%ÐV(E ¤%_ Ÿ€%ЀV(E ¤%` Ÿ€%ÐV(E ¤%a Ÿ€%ЂV(E ¤%b Ÿ€%ЃV(E ¤%c Ÿ€%ЄV(E ¤%d Ÿ€%Ð…V(E ¤%e Ÿ€%ІV(E ¤%f Ÿ€%ЇV(E ¤%g Ÿ€%ЈV(E ¤%h Ÿ€%ЉV(E ¤%i Ÿ€%ЊV(E ¤%j Ÿ€%ЋV(E ¤%k Ÿ€%ÐŒV(E ¤%l Ÿ€%ÐV(E ¤%m Ÿ€%ÐŽV(E ¤%n Ÿ€%ÐV(E ¤%o Ÿ€%ÐV(E ¤%p Ÿ€%БV(E ¤%q Ÿ€%Ð’V(E ¤%r Ÿ€%ГV(E ¤%s Ÿ€%ДV(E ¤%t Ÿ€%ЕV(E ¤%u Ÿ€%ЖV(E ¤%v Ÿ€%ЗV(E ¤%w Ÿ€%ИV(E ¤%x Ÿ€%ЙV(E ¤%y Ÿ€%КV(E ¤%z Ÿ€%ЛV(E ¤%{ Ÿ€%МV(E ¤%| Ÿ€%ÐV(E ¤%} Ÿ€%ОV(E ¤%~ Ÿ€%ПV(E ¤% Ÿ€%РV(E ¤% € Ÿ€%СV(E ¤% Ÿ€%ТV(E ¤% ‚ Ÿ€%УV(E ¤% ƒ Ÿ€%ФV(E ¤% „ Ÿ€%Ð¥V(E ¤% … Ÿ€%ЦV(E ¤% † Ÿ€%ЧV(E ¤% ‡ Ÿ€%ШV(E ¤% ˆ Ÿ€%ЩV(E ¤€°V ‰€%ЪV(E €±V( ©( ©(o€²V*r(î r5p( ok srz0‚ +(A ,n (‘A uæ+,B(‘A tæ+ (A {ÀV(’A (3© (·= (> (¸= s²= *(A (= (4©(´= s²= *(= s²= *0\ +(A ,N (‘A uç+,(A r5p(Ë+*(‘A tæ+ {ÀV(’A (A (4©(> *(= *"(3©*6s“A (”A *B{•A þo–A *0+{•A s—A (˜A *09+,# (™A {•A o³(‹°þo–A *{•A (9°þo–A *R{•A (9°þo–A *00œ&(\®(šA {“^ uw-, tw-{ÁY*rV5p(Ì+*¾rùEp(ñ ,(;©*rå5p( rêp( (Ì+*0` (ϪEC  $).38=BGLQV[`ejoty~ƒˆ’—œ¡¦«°µº¿ÄÉÎÓØÝâçìñöû #(-27<A * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *! *" *# *$ *% *& *' *( *) ** *+ *, *- *. */ *0 *1 *2 *3 *4 *5 *6 *7 *8 *9 *: *; *< *= *> *? *@ *A *B *0% («E   $).38=BGLQV[`ejoty~ƒˆ’ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *0Ê(ù©EA "%(+.147:=@CFILORUX[^adgjmpsvy|‚…ˆ‹Ž‘”—𠣦©¬¯²µ¸********* * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*0¹EB%+17=CIOU[agmsy…‹‘—£©¯µ»ÁÇÍÓÙßåëñ÷ý !'-39?EKQW]ciou{‡“™Ÿ¥CYE r„®ps\ z(˪*(Iª*(Kª*(Mª*(Oª*(Qª*(Sª*(Uª*(Wª*(Yª*([ª*(]ª*(_ª*(aª*(cª*(eª*(gª*(iª*(kª*(mª*(oª*(qª*(sª*(uª*(wª*(yª*({ª*(}ª*(ª*(ª*(ƒª*(…ª*(‡ª*(‰ª*(‹ª*(ª*(ª*(‘ª*(“ª*(•ª*(—ª*(™ª*(›ª*(ª*(Ÿª*(¡ª*(£ª*(¥ª*(§ª*(©ª*(«ª*(­ª*(¯ª*(±ª*(³ª*(µª*(·ª*(¹ª*(»ª*(½ª*(¿ª*(Áª*(ê*(Ū*(Ǫ*(ɪ*(ͪ*0ÒE` $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒØÞäêðöü &,28>DJPV\bhntz€†Œ’˜ž¤ª°¶¼ÂÈÎÔÚàæìòøþ "(.4:@Fr¾®ps\ z(Ûª*(ݪ*(ߪ*(áª*(ãª*(ãª*(åª*(çª*(çª*(éª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(ëª*(íª*(íª*(ïª*(ñª*(ñª*(óª*(õª*(õª*(÷ª*(÷ª*(÷ª*(ùª*(ùª*(ûª*(ûª*(ýª*(ÿª*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*(«*( «*( «*( «*( «*( «*( «*( «*( «*( «*( «*(«*(«*(«*(«*(«*(«*(«*(«*(«*C*A*0–(ù©EA %+17=CIOU[agmsy…‹‘—£©¯µ»ÁÇÍÓÙßåëñ÷ý !'-39?EKQW]ciou{r°²p*r6p*r%6p*r96p*rE6p*rW6p*r¨ºp*r~ºp*rŒºp*ršºp*rk6p*rn¼p*rª¶p*ru6p*rX¶p*r¸³p*r6p*r‹6p*r™6p*r§6p*rJ¶p*r̹p*rØ´p*rôºp*r´ºp*rÀºp*rèºp*rµ6p*r~·p*rÖ¹p*r½6p*rÍ6p*rÝ6p*ré6p*rê¯p*rû6p*rFµp*rD³p*r 7p*r´¶p*r³p*r.ºp*r|¼p*r7p*r#7p*r&¶p*r-7p*rG7p*r_7p*r}7p*r‹7p*r£7p*rÃ7p*rá7p*r÷7p*r 8p*r%8p*r;8p*rU8p*re8p*rw8p*r“8p*r£8p*r»8p*rß8p*0ó%+(ù©EA !#%')+-/13579;=?ACEGIKMOQSUWY[]pƒ–©¾Óèý'<Qf{¥ºÏ**********************************************tï+ {7WŒm*tð+ {8WŒm*tñ+ {9WŒm*tò+ {:WŒm*tó+{;WŒ’*tô+{WŒÁ *t÷+{?WŒ½ *tø+  {@WŒ¹ *tù+  {AWŒ*tú+  {BWŒµ *tû+  {CWŒ*tü+  {DWŒ§ *tý+{EWŒ· *tþ+{FWŒ© *tÿ+{GWŒæ*t,{HWŒ’*t,{IWŒÁ*~.X*~/X*~0X*~1X* Ž*~2X*~3X*~4X*~5X*~6X*0à`0 %s%«¤0 %s'«¤0 %s)«¤0 %s+«¤0 %s-«¤0 %s/«¤0 %s1«¤0 %s3«¤0 %s5«¤0 % s7«¤0 % s9«¤0 % s;«¤0 % s=«¤0 % s?«¤0 %sA«¤0 %sC«¤0 %sE«¤0 %sG«¤0 %sI«¤0 %sK«¤0 %sM«¤0 %sO«¤0 %sQ«¤0 %sW«¤0 %sY«¤0 %s[«¤0 %s_«¤0 %sa«¤0 %sc«¤0 %se«¤0 %sg«¤0 %si«¤0 % sk«¤0 %!sm«¤0 %"so«¤0 %#sq«¤0 %$su«¤0 %%sw«¤0 %&s{«¤0 %'s}«¤0 %(s«¤0 %)s«¤0 %*sƒ«¤0 %+s…«¤0 %,s‡«¤0 %-s‰«¤0 %.s‹«¤0 %/s«¤0 %0s«¤0 %1s“«¤0 %2s—«¤0 %3s›«¤0 %4sŸ«¤0 %5s£«¤0 %6s§«¤0 %7s««¤0 %8s­«¤0 %9s¯«¤0 %:s±«¤0 %;s³«¤0 %s¹«¤0 %?s»«¤0 %@s½«¤0 %As¿«¤0 %BsÁ«¤0 %Csë¤0 %DsÅ«¤0 %EsÇ«¤0 %FsÉ«¤0 %GsË«¤0 %HsÍ«¤0 %IsÏ«¤0 %JsÑ«¤0 %KsÓ«¤0 %LsÕ«¤0 %Ms׫¤0 %NsÙ«¤0 %OsÛ«¤0 %PsÝ«¤0 %Qsß«¤0 %Rs᫤0 %Ss㫤0 %Ts嫤0 %Us竤0 %Vs髤0 %Ws뫤0 %Xsí«¤0 %Ys﫤0 %Zsñ«¤0 %[só«¤0 %\s÷«¤0 %]sù«¤0 %^sý«¤0 %_s¬¤0 *0P'+s¬ (P©Cs¬s ¬(K©(L©(M©(O©(F©(G©(H©(I©(N©DAs›A *>(Q©oº6 *R(Q©oº6 ¥»"*Z(Q©oº6 þ(t+*6€7X~7X&*.sh©€½V*( *sf©**uæ+þ*~½V**uç+þ*0)+ uç+,+*Zr.8psœA (Í+oA *0¾++þ9ªþ9Ÿ  uç+,+   uç+,+ 3uuæ+,ktæ+ tæ+ (y {ÀV {ÀV(žA (’A (žA  (’A   ([+  , * þo0³**Y**þ,**B¥ä+þo^©*0È,+¥ä+ þ9¨¥ä+þ9˜  uç+,+   uç+,+ 3nuæ+,dtæ+ tæ+ {ÀV{ÀV(žA (’A (žA  (’A   ([+  , * þo0³**Y**¥ä+þ,**0`-+þ,W uæ+,Itæ+  ¹y7ž{ÀV (žA (’A  (¾+bXo1³abcXXX * **6(n oa©*0².+þ9 uä+ 9‘  uç+,+   uç+,+ 3iuæ+,_tæ+ tæ+ {ÀV{ÀV(žA (’A (žA  (’A   (Á+,  þo3³*****þþ*0s/+þ,dþ,\uç+,+ uç+,+ 34uæ+,*tæ+ tæ+ {ÀV {ÀVþ(Î+****þþ*0)+uä+ , þod©**:(W©}ÀV*{ÀV*(W©*:( }ÁV*2{ÁV{ÀV*:( }ÂV*sŸA *:( } A *{ A *&*Zr.8ps¡A (Ï+o¢A *:(£A }¤A *"{¤A *V(£A }¥A }¦A *0(1+{¥A {¦A o§A o¨A { A þo©A *0 sv©€ÈVsv©€ÉVsv©€ÊVsv©€ËVsv©€ÌVsv©€ÍVsv©€ÎVsv©€ÏVsv©€ÐV sv©€ÑV sv©€ÒV sv©€ÓV sv©€ÔV sv©€ÕVsv©€ÖVsv©€×Vsv©€ØVsv©€ÙVsv©€ÚVsv©€ÛVsv©€ÜVsv©€ÝVsv©€ÞVsv©€ßVsv©€àVsv©€áVsv©€âVsv©€ãVsv©€äVsv©€åVsv©€æVsv©€çV sv©€èV!sv©€éV"sv©€êV#sv©€ëV$sv©€ìV%sv©€íV&sv©€îV'sv©€ïV(sv©€ðV)sv©€ñV*sv©€òV+sv©€óV,sv©€ôV-sv©€õV*:( }ÇV*~ÈV**(ù©þ*~ÉV**(ù©þ*~ÊV**(ù©þ*~ËV**(ù©þ*~ÌV**(ù©þ*~ÍV**(ù©þ*~ÎV**(ù©þ*~ÏV**(ù©þ*~ÐV**(ù©þ*~ÑV*.(ù© þ*~ÒV*.(ù© þ*~ÓV*.(ù© þ*~ÔV*.(ù© þ*~ÕV*.(ù© þ*~ÖV*.(ù©þ*~×V*.(ù©þ*~ØV*.(ù©þ*~ÙV*.(ù©þ*~ÚV*.(ù©þ*~ÛV*.(ù©þ*~ÜV*.(ù©þ*~ÝV*.(ù©þ*~ÞV*.(ù©þ*~ßV*.(ù©þ*~àV*.(ù©þ*~áV*.(ù©þ*~âV*.(ù©þ*~ãV*.(ù©þ*~äV*.(ù©þ*~åV*.(ù©þ*~æV*.(ù©þ*~çV*.(ù©þ*~èV*.(ù© þ*~éV*.(ù©!þ*~êV*.(ù©"þ*~ëV*.(ù©#þ*~ìV*.(ù©$þ*~íV*.(ù©%þ*~îV*.(ù©&þ*~ïV*.(ù©'þ*~ðV*.(ù©(þ*~ñV*.(ù©)þ*~òV*.(ù©*þ*~óV*.(ù©+þ*~ôV*.(ù©,þ*~õV*.(ù©-þ*sû©*.(ù©.þ*sý©*.(ù©/þ*sÿ©*.(ù©0þ*sª*.(ù©1þ*sª*.(ù©2þ*sª*.(ù©3þ*sª*.(ù©4þ*s ª*.(ù©5þ*s ª*.(ù©6þ*s ª*.(ù©7þ*sª*.(ù©8þ*sª*.(ù©9þ*sª*.(ù©:þ*sª*.(ù©;þ*sª*.(ù©<þ*sª*.(ù©=þ*sª*.(ù©>þ*sª*.(ù©?þ*sª*.(ù©@þ*{ÇV*Zr.8psªA (Ð+o«A *B.(v©}7W*{7W*B/(v©}8W*{8W*B0(v©}9W*{9W*B1(v©}:W*{:W*B2(v©};W*{;W*B3(v©}W*{>W*B6(v©}?W*{?W*B7(v©}@W*{@W*B8(v©}AW*{AW*B9(v©}BW*{BW*B:(v©}CW*{CW*B;(v©}DW*{DW*B<(v©}EW*{EW*B=(v©}FW*{FW*B>(v©}GW*{GW*B?(v©}HW*{HW*B@(v©}IW*{IW*:( }JW*2{JW{7W*:( }KW*2{KW{8W*:( }LW*2{LW{9W*:( }MW*2{MW{:W*:( }NW*2{NW{;W*:( }OW*2{OW{W*:( }RW*2{RW{?W*:( }SW*2{SW{@W*:( }TW*2{TW{AW*:( }UW*2{UW{BW*:( }VW*2{VW{CW*:( }WW*2{WW{DW*:( }XW*2{XW{EW*:( }YW*2{YW{FW*:( }ZW*2{ZW{GW*:( }[W*2{[W{HW*:( }\W*2{\W{IW*0sHª€^WsHª€_WsHª€`WsHª€aWsHª€bWsHª€cWsHª€dWsHª€eWsHª€fW sHª€gW sHª€hW sHª€iW sHª€jW sHª€kWsHª€lWsHª€mWsHª€nWsHª€oWsHª€pWsHª€qWsHª€rWsHª€sWsHª€tWsHª€uWsHª€vWsHª€wWsHª€xWsHª€yWsHª€zWsHª€{WsHª€|WsHª€}W sHª€~W!sHª€W"sHª€€W#sHª€W$sHª€‚W%sHª€ƒW&sHª€„W'sHª€…W(sHª€†W)sHª€‡W*sHª€ˆW+sHª€‰W,sHª€ŠW-sHª€‹W.sHª€ŒW/sHª€W0sHª€ŽW1sHª€W2sHª€W3sHª€‘W4sHª€’W5sHª€“W6sHª€”W7sHª€•W8sHª€–W9sHª€—W:sHª€˜W;sHª€™WsHª€œW?sHª€W@sHª€žWAsHª€ŸWBsHª€ W*:( }]W*~^W**(Ϫþ*~_W**(Ϫþ*~`W**(Ϫþ*~aW**(Ϫþ*~bW**(Ϫþ*~cW**(Ϫþ*~dW**(Ϫþ*~eW**(Ϫþ*~fW**(Ϫþ*~gW*.(Ϫ þ*~hW*.(Ϫ þ*~iW*.(Ϫ þ*~jW*.(Ϫ þ*~kW*.(Ϫ þ*~lW*.(Ϫþ*~mW*.(Ϫþ*~nW*.(Ϫþ*~oW*.(Ϫþ*~pW*.(Ϫþ*~qW*.(Ϫþ*~rW*.(Ϫþ*~sW*.(Ϫþ*~tW*.(Ϫþ*~uW*.(Ϫþ*~vW*.(Ϫþ*~wW*.(Ϫþ*~xW*.(Ϫþ*~yW*.(Ϫþ*~zW*.(Ϫþ*~{W*.(Ϫþ*~|W*.(Ϫþ*~}W*.(Ϫþ*~~W*.(Ϫ þ*~W*.(Ϫ!þ*~€W*.(Ϫ"þ*~W*.(Ϫ#þ*~‚W*.(Ϫ$þ*~ƒW*.(Ϫ%þ*~„W*.(Ϫ&þ*~…W*.(Ϫ'þ*~†W*.(Ϫ(þ*~‡W*.(Ϫ)þ*~ˆW*.(Ϫ*þ*~‰W*.(Ϫ+þ*~ŠW*.(Ϫ,þ*~‹W*.(Ϫ-þ*~ŒW*.(Ϫ.þ*~W*.(Ϫ/þ*~ŽW*.(Ϫ0þ*~W*.(Ϫ1þ*~W*.(Ϫ2þ*~‘W*.(Ϫ3þ*~’W*.(Ϫ4þ*~“W*.(Ϫ5þ*~”W*.(Ϫ6þ*~•W*.(Ϫ7þ*~–W*.(Ϫ8þ*~—W*.(Ϫ9þ*~˜W*.(Ϫ:þ*~™W*.(Ϫ;þ*~šW*.(Ϫ<þ*~›W*.(Ϫ=þ*~œW*.(Ϫ>þ*~W*.(Ϫ?þ*~žW*.(Ϫ@þ*~ŸW*.(ϪAþ*~ W*.(ϪBþ*{]W*Zr.8ps¬A (Ñ+o­A *01.þ, þ,{]W {]W 3*Y**þ,**:¥,oѪ*0B3+¥, þ,%¥,þ,{]W {]W 3*Y**¥,þ,**Fþ,(=©**6(n oÔª*0.3+þ,u, ,{]W {]W þ**þþ*0*.þ,þ,{]W {]W þ**þþ*04+u, ,oת**0xsÚª€åWsÚª€æWsÚª€çWsÚª€èWsÚª€éWsÚª€êWsÚª€ëWsÚª€ìWsÚª€íW sÚª€îW sÚª€ïW sÚª€ðW sÚª€ñW sÚª€òWsÚª€óWsÚª€ôWsÚª€õWsÚª€öWsÚª€÷WsÚª€øWsÚª€ùWsÚª€úWsÚª€ûWsÚª€üWsÚª€ýWsÚª€þWsÚª€ÿWsÚª€XsÚª€XsÚª€XsÚª€XsÚª€X*:( }äW*~åW**(«þ*~æW**(«þ*~çW**(«þ*~èW**(«þ*~éW**(«þ*~êW**(«þ*~ëW**(«þ*~ìW**(«þ*~íW**(«þ*~îW*.(« þ*~ïW*.(« þ*~ðW*.(« þ*~ñW*.(« þ*~òW*.(« þ*~óW*.(«þ*~ôW*.(«þ*~õW*.(«þ*~öW*.(«þ*~÷W*.(«þ*~øW*.(«þ*~ùW*.(«þ*~úW*.(«þ*~ûW*.(«þ*~üW*.(«þ*~ýW*.(«þ*~þW*.(«þ*~ÿW*.(«þ*~X*.(«þ*~X*.(«þ*~X*.(«þ*~X*.(«þ*~X*.(«þ*{äW*Zr.8ps®A (Ò+o¯A *01.þ, þ,{äW {äW 3*Y**þ,**:¥,o«*0B6+¥, þ,%¥,þ,{äW {äW 3*Y**¥,þ,**Fþ,(>©**6(n o «*0.6+þ,u, ,{äW {äW þ**þþ*0*.þ,þ,{äW {äW þ**þþ*07+u, ,o#«**(>4 *0+ o‹¥»" ,¥+ Œ»"szzŒ*(>4 *0+õo‹(t+ ,¥+ Œ‡-szzŒ*(>4 *0$9+o‹(Ó+ {°A (u o±A Œ‡-*(>4 *0Œ o‹(Ô+ (¯+Œ»"*(>4 *No‹¥mŒm*(>4 *0(¾o‹¥m o‹¥m ( Œm*(>4 *No‹¥mŒm*(>4 *0(:+o‹(Õ+ o‹(Ô+ (Z ŒŒ*(>4 *2(Y ŒŒ*(>4 *0 ä=+o‹(Ö+ o‹(Ó+ o‹(Ó+ o‹¥m o‹(×+o‹(Ø+{°A (9°o±A (,³þ,+ o9³(N (Ù+(5©  (¸=   (·=  {²A (9°o³A  (Ú+     s´A  sµA Œ&*(>4 *0?+o‹(Û+ o¶A Œï-*(>4 *0(@+o‹(Ü+ o‹¥’ o·A Œï-*(>4 *0;A+o‹(Ý+ o‹¥’ o‹¥’ sZ o¸A Œï-*(>4 *0(B+o‹(Þ+ o‹¥Á o¹A Œï-*(>4 *0-D+o‹(ß+ o‹¥æ (ß´oºA Œï-*(>4 *0.E+o‹(ß+ o‹¥Á l(ß´oºA Œï-*(>4 *0 +I+o‹(à+ o‹(á+ (»A (¼A (½A (¼A (¾A (¼A (,³þ9–(¥°(¿A (ÀA  rxÇp(ñ ,(¶8› rLáp(ñ ,( ¶8 r<áp(ñ ,(3µ(¶+` rúåp(ñ , ( ¶+Grà"ps\ z(¾A (ÁA (½A (ÂA (ÃA (ÄA (V°sø= oÅA Œï-*(>4 *07J+o‹(â+ o‹(Ó+ {°A (9°o±A oÆA Œï-*(>4 *0JL+o‹(ã+ o‹¥’ o‹(Ó+ {°A (9°o±A sÇA oÈA Œï-*(>4 *07J+o‹(â+ o‹(Ó+ {°A (9°o±A oÆA Œï-*(>4 *0<M+o‹(ä+ o‹(Ó+ {°A (9°o±A (¼´oÉA Œï-*(>4 *F(ÊA (å+Œ&*(>4 *No‹(Ø+Œ&*:(ËA }%X*V{ÌA {%XþoÍA *:(ÎA }&X*jsS«{&X(æ+þ(ç+*(>4 *0O+o‹(è+ sU«(ÏA Œ&*(>4 *0Q+o‹(é+ (ÐA (ÑA Œ“&*(>4 *0(R+o‹(è+ o‹(é+ (ÑA Œ“&*:(ÒA }'X*b{'XsÓA (X©(ê+*(>4 *0-S+o‹(Ó+ o‹¥8 s]«(ë+Œ‘&*(>4 *"Œ8*(>4 *0o‹¥m (c Œ8*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *02¾o‹¥m o‹¥m rS@p( ( Œm*(>4 *0ET+o‹¥m o‹(ì+ (— (˜ (<©(j² sÔA Œ”&*(>4 *00U+o‹(ì+ (f² (˜ (—  sÔA Œ”&*(>4 *0!R!o‹¥m ([ sì5 ŒÈ*(>4 *0<V+o‹¥m o‹(ì+ (˜ (\ (—  sì5 ŒÈ*r(ÕA }(X})X}*X*07ÿ{*X{)X{(X(ô² (q -(°+(=°(í+*(>4 *0FX+o‹(î+ o‹(×+ (ÖA (×A (ØA  ss«(ï+Œ•&*(>4 *0DY+o‹(î+ (ÖA (×A (ØA (ô²(°(=°(í+Œ•&*(ÙA *6(°(ð+*(>4 *0[+o‹(ñ+ sy«(ò+Œˆ&*(>4 *No‹(Ó+Œˆ&*(>4 *No‹(Ó+Œˆ&*(>4 *0\+o‹(ó+ (´²(IJŒ-*(>4 *0\+o‹(ó+ (¶²(IJŒ-*(>4 *0\+o‹(ó+ (¸²(IJŒ-*(>4 *2(œ²Œ}-*(>4 *2(œ²Œ}-*(>4 *2(¦²Œ}-*(>4 *n(\®(šA {š^(ð+Œˆ&*(>4 *n(\®(šA {˜^(ð+Œˆ&*(ÙA *6(°(ð+*(>4 *0[+o‹(ñ+ s‘«(ò+Œˆ&*(ÙA *6(³(ð+*(>4 *0[+o‹(ñ+ s•«(ò+Œˆ&*(ÙA *6(³(ð+*(>4 *0[+o‹(ñ+ s™«(ò+Œˆ&*(ÚA *6(£°(ð+*(>4 *09+o‹(Ó+ s«(ô+Œˆ&*:(ÚA }+X*b{+X(‡²(³(ð+*(>4 *0-]+o‹(Ó+ o‹(õ+ s¡«(ô+Œˆ&*(ÚA *6($³(ð+*(>4 *09+o‹(Ó+ s¥«(ô+Œˆ&*(ÚA *6("³(ð+*(>4 *09+o‹(Ó+ s©«(ô+Œˆ&*(>4 *n(\®(šA {Ã^(ð+Œˆ&*(>4 *F(³(ð+Œˆ&*(>4 *n(\®(šA {Â^(ð+Œˆ&*(>4 *n(\®(šA {¸^(ð+Œˆ&*(>4 *n(\®(šA {¹^(ð+Œˆ&*(>4 *n(\®(šA {º^(ð+Œˆ&*(>4 *n(\®(šA {»^(ð+Œˆ&*(>4 *n(\®(šA {À^(ð+Œˆ&*(>4 *n(\®(šA {Á^(ð+Œˆ&*(>4 *n(\®(šA {¼^(ð+Œˆ&*(>4 *n(\®(šA {½^(ð+Œˆ&*(>4 *n(\®(šA {¾^(ð+Œˆ&*(>4 *n(\®(šA {¿^(ð+Œˆ&*(>4 *n(\®(šA {¼^(ð+Œˆ&*(>4 *n(\®(šA {½^(ð+Œˆ&*(>4 *n(\®(šA {¾^(ð+Œˆ&*(>4 *n(\®(šA {¿^(ð+Œˆ&*(>4 *n(\®(šA {Ä^(ð+Œˆ&*(>4 *n(\®(šA {Å^(ð+Œˆ&*(>4 *n(\®(šA {Å^(ð+Œˆ&*(>4 *0 o‹¥’ Ñ((³(ð+Œˆ&*(>4 *0_+o‹(ö+ (ÛA (ÜA ŒØ*(>4 *02`+o‹(õ+ o‹(ö+ (ÛA (ÜA (÷+ŒØ*(>4 *0î  s³- ŒÉ*(>4 *0$a+o‹¥’  (V s³- ŒÉ*(>4 *0:b+o‹¥’ o‹¥’ (V YX(V  s³- ŒÉ*(>4 *0$a+o‹¥’ (V  s³- ŒÉ*(>4 *0:b+o‹¥’ o‹¥’ (V YX(V  s³- ŒÉ*(>4 *0$a+o‹¥’ (V  s³- ŒÉ*(>4 *No‹¥mŒm*(>4 *No‹¥mŒm*(>4 *0õo‹¥Á iŒ’*(>4 *No‹¥ÁŒÁ*(>4 *No‹¥æŒæ*(>4 *0õo‹¥Á (‚. Œæ*(>4 *F(= (ø+ŒŠ&*(ÝA *"(ø+*(>4 *0c+o‹(×+ sõ«(ù+ŒŠ&*(>4 *No‹(×+ŒŠ&*(ÞA *J(= (> (ø+*(>4 *09+o‹(Ó+ sû«(ú+ŒŠ&*:(ÞA },X*v{,X(= (> (’+(ø+*:(ÝA }-X*N{-Xsÿ«(ú+*(>4 *0-d+o‹(×+ o‹(Ó+ s¬(ù+ŒŠ&*(ßA *0 oàA *(áA *"(?©*(âA *"(E©*0æ :€%дV(E €.X €%еV(E €/X D€%жV(E €0X Ž€%зV(E €1X P€%иV(E €2X Ž€%йV(E €3X`€%кV(E €4X`€%лV(E €5X Ž€%мV(E €6X*~‘X*0Â(ãA ( ¬(  ( i*F €7(äA **–(°, ró8p( *(Àr5Óp( * * @€*0 e+hh bh`*Viib`ib`ib`*Ænnb`nb`nb`n b`n(b`n0b`n8b`*0R% ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤s= *¾% ÿ_Ò¤%ch ÿ_Ò¤s= *0 ŽiY/rý8prW9ps z£X£(¬X£X£(¬X£X£X£X£(¬X£ X£ X£ X£(¬ X£ X£X£X£(¬X£X£(¬X£X£(¬sb¬*0ØŽiY(/re9prW9ps z£X£X£X£X£X£X£X£(¬X£ X£ X£ X£(¬ X£ X£X£X£(¬X£X£X£X£(¬X£X£X£X£(¬X£X£X£X£(¬X£X£X£X£(¬ X£!X£(¬"X£#X£(¬$X£%X£&X£'X£(¬ss¬*0 ÞŽiY/rÅ9prW9ps z£X£X£X£X£X£X£X£(¬X£ X£ X£ X£(¬ X£ X£(¬X£X£(¬X£X£sŒ¬*0 ‰ŽiY /r:prW9ps z£X£X£X£(¬X£X£X£X£(¬X£ X£(¬s›¬*0 ÔŽiY/rm:prW9ps z£X£X£X£(¬X£X£X£X£(¬X£ X£(¬ X£ X£(¬ X£ X£(¬X£X£(¬s¦¬*0 pŽiY/rÕ:prW9ps z£X£X£X£(¬X£X£X£X£(¬sµ¬*0 ÊŽiY/rI;prW9ps z£X£X£X£(¬X£X£X£X£(¬X£ X£ X£ X£(¬ X£ X£X£X£(¬s¾¬*0Fh (=+þ,&(ò X(n+(ò X(ó +(ò X(ó *0!(åA ( ( Áo+Á,+á*0«g+(¬ r³;ps (­+ sè¬(®+ ([ ¥ío oï ,:o‚ (¬ (\ rÍ;pr*8p( ( ( +½Þu , oâ &Ü&Ü&   sæA *9H0Èo+(X¬3+ ([  sä¬(û+ oçA -* oèA £ oèA £ oèA £ oèA £(¬:4(/ rR9p(ñ ,( Áo)Á([ (\ +%( Áo)Ár¿p( ([ (\ (\ 3rÓ;p+rÛ;prã;ps (ñ+o r<p(   sê¬ sì¬(ü+(ý+  (éA ,0   (êA (ëA  (êA (ìA  (êA (íA sæA + r7<p( ¬  (ìA  (ëA  (íA  sæA   (íA  (ìA  (ëA  (  ¥ío oï ,"o‚ o™6 (W X+ÕÞu , oâ &Ü&Ü&ob 2 @€(äA + sîA oïA oðA oñA (òA oóA r=<poôA (þ+( Áo.Á (õA Þsî¬(+&Ü&+(=+, @€(äA +(¬{BX, @€(äA +{>X2Q(ZX(¬{DX!.rsrc$013+{DX!.rsrc$023+XX3¯(ÿ+,+ (ÿ+, @€(äA +{GX{GXX(m+{HX{GX(n+{@X!{KX""Yh  !?×{IX! ZX(¬##{UX$$ZX(¬%%{RX.+%{QXþþ,+%{PXþþ, @€(äA +%{OX{GX2 @€(äA +{GXX%{OXX(¬&&(= '&(= #{TX'(n+!X!! X@)ÿÿÿ{HX{GX{GX(n+*Î0þ½×”0u+ (¬  {[X{\XXh  Y? ZX(¬ {^X €_þþ9Ë{^X ÿÿÿ_  (¬  {[X {\X  Xh Y   ?}  ZX(¬{^X €_þþ,?{^X ÿÿÿ_(¬{[X {\X XhX +X  X   X@ƒÿÿÿ+X XX@öþÿÿ(+  Y?ZX(¬ {]X  3+ þ{^X €_þþ9†{^X ÿÿÿ_  (¬  {[X {\X  XhY  ?8 ZX(¬{]X{^X €_þþ9É{^X ÿÿÿ_(¬{[X {\X XhY?zZX(¬{]X{^X €_þþ, @€(äA ++-& {^XsÞ¬¤˜,X +XX@†ÿÿÿ+*-% {^XsÞ¬¤˜,X +X X@Èþÿÿ+(-# {^XsÞ¬¤˜,X +XX@ýýÿÿ,= X Y 2% £˜,oã¬X X  X3Û+(m+,`sɬoݬ (n+ X Y   2' £˜,oã¬X X   X3Ù+*0­O&(y {‚X {‚X  /+ þ /*1*(y {ƒX {ƒX /+ þ /*1*(y {„X{„X/+þ / * 1 *(y {…X{…Xþ(h+*0‘N&{‚X {‚X /+þ /*1*{ƒX {ƒX  /+ þ /*1*{„X {„X /+ þ /*1*{…X{…Xþ(h+*0”y+rY<p(öA (6 (+ r›<ps÷A s oñ¬ С,(d (øA rå<p(öA (6 (+o­Þ~ÿ8 . (ùA &Ü&Üs#­*I*s0g½{Xo­{X(úA  Y 2{X(úA X X3ê( ( ( ( ( ( ( ( ( *B{Xþo­*0 ¦{+ É8O« æ¶ ºC ¾;X , Ì ãsÔ ÄEK™ éæ Ò ? ÀO £ ¡sÔ †Z f Ó ½* øI ½sÔ  {Xo­ s*­*B{Xþo­*>{Xþo ­*0 {Xo ­r=p(þ+*B{Xþo ­*0 {XŽiþo ­*0 "{X{€X{€Xþo­*0 Ä|+Œ™&,+ r¨9ps‚ zŽi ’ Y 2"£ $(ûA ¤’X X3Þ Œ™&,+ r¨9ps‚ zŽi ’Y 2#£ $(üA ¤’X X3Ý Œ™&,+ r¨9ps‚ zŽi ’Y 2#£ $(ýA ¤’X X3ÝŒ™&,+ r¨9ps‚ zŽi ’Y 2#£ $(þA ¤’X X3ÝŒ™&,+ r¨9ps‚ zŽi ’Y 2#£ $(ÿA ¤’X X3Ý{X{€XŽiþo­*0[~+þ£,  {Xo­(m+ {X o­{wX{yX{zX{{X s5­*"s?­* *b{†XsB oB sM­*j{†X{‡XoB sM­*0^€+{†XoB Œš&,+ r¨9ps‚ zŽi ©, Y 2"£XsF­¤©,X X3Þ*š{†Xs™9 s™9 s™9 oB sF­*>{‡XþoB *0+{‡XoB (B *0+{‡XoB (B *0+{‡Xo B (B *B{‡Xþo B *0ƒ+{ˆXo B ( B *J{ˆXo B s[­*0 >£’£XsF­£’£’£’£’sg­*0 £„+{ˆXoB (+ (+ (+ (+(+(+{ˆX oB /(%- r¿\ps z­, Y 2'   (>¬¤­, X  X3Ù*0^‡+{ŠXoB Œ›&,+ r¨9ps‚ zŽi ¬, Y 2"£Ys[­¤¬,X X3Þ*v{ŠXoB {ŠXoB sZ *0^‰+{ŠXoB Œœ&,+ r¨9ps‚ zŽi «, Y 2"£ZsT­¤«,X X3Þ*>{‰XþoB *>{‰XþoB *v{‰XoB {‰XoB sZ *>( Áþo.Á*>( Áþo.Á*~’X*€’X*0 ‹Ž+(I¬ ,(B * Í ›· Íõ ›@ µ ¥ ¡bDa ’sÔ Ï<ÙŸ €2 ‘C ³ © – á Í ç| sÔ €’ Ž gH ³  ¨8 „ è ÞsÔ žÛ2Ó ³¹ %A ‚ ¡H „ õ2sÔ  ÒÑ9½ /º jH ‰ ° ´ ° ËFh ‘sÔ (B  (F¬(+, r=ps\ zom­(+o‘­(+  (+, r¢=ps\ z (B (J¬ *0 ‹+(°,Hrð=p(Ü: %Œñ¤(6 r">p (x o29 ¥ñ* Ó (K¬Žio|­(m+ (G>  oy­*0F+(°, r6>ps\ z Ó (K¬ o|­(m+  (G> oy­ *0"‘+(°, r6>ps\ z(K¬ o~­*03’+(°,Ži 1Ži Y* €* (K¬ Žio„­*0 é“+(°9®rð=p(Ü: %Œñ¤(6 rï>prï>p %Œm¤(x o29 ¥ó,+(þ+rù>prù>p %Œm¤(x o29 ¥ó,+(þ+* Ó(K¬Žio‚­o†­*0 ;”+(°, r6>ps\ z Ó  (K¬ o‚­ o†­*^sS¬€9XsS¬€:X*:( }8X*~9X**(X¬þ*~:X**(X¬þ*{8X*Zr.8psB ( +oB *01.þ, þ,{8X {8X 3*Y**þ,**:¥Ž,oZ¬*0B•+¥Ž, þ,%¥Ž,þ,{8X {8X 3*Y**¥Ž,þ,**0þ, (X¬3 * **6(n o]¬*0.•+þ,uŽ, ,{8X {8X þ**þþ*0*.þ,þ,{8X {8X þ**þþ*0–+uŽ, ,o`¬**þo &}=X}>X}?X}@X}AX}BX}CX*"{=X*&}=X*"{>X*&}>X*"{?X*&}?X*"{@X*&}@X*"{AX*&}AX*"{BX*&}BX*"{CX*&}CX**0{—+(e {=XÑ io`{>XÑ io`{?Xo^{@Xo^{AXo^{BXÑ io`{CXÑ io`oY*0Wo &}DX}EX}FX}GX}HX}IX}JX}KX }LX }MX*"{DX*&}DX*"{EX*&}EX*"{EX*&}EX*"{FX*&}FX*"{GX*&}GX*"{HX*&}HX*"{IX*&}IX*"{JX*&}JX*"{KX*&}KX*"{LX*&}LX*"{MX*&}MX*(*0š—+((e {DXoc{EXo^{FXo^{GXo^{HXo^{IXo^{JXo^{KXÑ io`{LXÑ io`{MXo^oY*Þo &}NX}OX}PX}QX}RX}SX*"{NX*&}NX*"{OX*&}OX*"{PX*&}PX*"{QX*&}QX*"{RX*&}RX*"{SX*&}SX**0l˜+(e {NXoc{OXo^{PXÑ io`{QXÑ io`{RX ioZ{SX ioZoY*~o &}TX}UX}VX*"{TX*&}TX*"{TX*&}TX*"{UX*&}UX*"{VX*&}VX* *0;—+ (e {TXo^{UXo^{VXÑ io`oY*Þo &}WX}XX}YX}ZX}[X}\X*"{WX*&}WX*"{XX*&}XX*"{YX*&}YX*"{ZX*&}ZX*"{[X*&}[X*"{\X*&}\X**0n—+(e {WXo^{XXo^{YXÑ io`{ZXÑ io`{[XÑ io`{\XÑ io`oY*bo &}]X}^X*"{]X*&}]X*"{^X*&}^X*:{^X ÿÿÿ_*R{^X €_þþ**0)k(e {]Xo^{^Xo^oY*žo &}_X}`X}aX}bX*"{_X*&}_X*"{`X*&}`X*"{aX*&}aX*"{bX*&}bX**0>k(e {_Xo^{`Xo^{aXo^{bXo^*0Ro &}cX }dX ÿÿ}eX ÿÿ}fX}gX}hX}iX}jX}kX*"{cX*&}cX*"{dX*&}dX*"{eX*&}eX*"{fX*&}fX*"{gX*&}gX*"{hX*&}hX*"{iX*&}iX*"{jX*&}jX*"{kX*&}kX* *0—+ (e {cXo^{dXo^{eXo^{fXo^{gXo^{hXÑ io`{iXÑ io`{jXo^{kXo^oY*0 žo &sɬ}lX}mX}nX}oX}pX}qX €_,u{lX}eX ÿÿÿ_ £X£X£X£(¬}nX{nXXZ(m+}oX{oX{nXZ(n++{lX ÿÿ ÿÿ_b`}eX €_,u{lX}fX ÿÿÿ_ £X£X£X£(¬}pX{pXXZ(m+}qX{qX{pXZ(n++{lX ÿÿ ÿÿ_b`}fX{lXh}iX(¬}mX{lX{mX{`X}cX*"{lX*"{mX*"{oX*"{qX*0 \™+sß sß  {oX  (=+þ,&{lX{lX{dX{nXXZXY}dX+ {qX  (=+þ,&{lX{lX{dX{pXXZXY}dX+{lX{cX(¬(= (= (¬{lX{dX(¬(= (= (¬ {oX  (=+þ,+{oX{nXXZ(¬{nXXX+,{lX{eX(¬(= (= (¬ {qX  (=+þ,+{qX{pXXZ(¬{pXXX+,{lX{fX(¬(= (= (¬(m+ _,(¬+{lX{gX(¬(= (= (¬{lX{hX(¬(= (= (¬{lX{iX(¬(= (= (¬{lX{jX(¬(= (= (¬{lX{kX(¬(= (= (¬{mX{_XY(V (Õ ŽiYYX     Y   2"   X£¤ X   X3Þ  {mX{`X(¬{mX{`X_,Y(¬+(ò *(B *"Žiþ*:( }rX*B{rXþo *:(` }sX*0{{sXoa sæ¬*:(B }tX*00š+(ëA (ìA (íA {tXob ob X þ*V( B }uX}vX*R{uX{vX( ¬*( *&(õA *{wX*{xX*{yX*{zX*{{X*{|X*{}X*{~X*0«œ+ (y {wX {wX /+ þ /*1*(y {xX{xX/+þ / * 1 *(y {yX{yX/+þ/*1*(y {zX{zX/+þ/*1*(y {{X {{X   /+  þ/*1*(y {|X {|X   /+  þ  / * 1 *(y {}X {}X   /+  þ  / * 1 *(y {~X {~X   /*  þ*:¥£,(þ¬*0‚+¥£,  {wX {wX /+ þ /*1*{xX{xX/+þ / * 1 *{yX{yX/+þ/*1*{zX{zX/+þ/*1*{{X {{X   /+  þ/*1*{|X {|X   /+  þ  / * 1 *{}X {}X   /+  þ  / * 1 *{~X {~X   /*  þ*0¹ ¹y7ž{~XbcXXX ¹y7ž{}XbcXXX ¹y7ž{|XbcXXX ¹y7ž{{XbcXXX ¹y7ž{zX(K+bcXXX ¹y7ž{yX(K+bcXXX ¹y7ž{xXbcXXX ¹y7ž{wXbcXXX *6(n (­*0—ž+( +-*¥£,  {wX{wX@o{xX{xX3_{yX{yX3O{zX{zX3?{{X{{X3/{|X{|X3{}X{}X3{~X{~Xþ********0†Ÿ+ {wX{wX@o{xX{xX3_{yX{yX3O{zX{zX3?{{X{{X3/{|X{|X3{}X{}X3{~X{~Xþ********b( +-*¥£,(­*{X*:( }X*0(þ, ¹y7ž{X( +bcXXX **6(n o$­*00¡+þ,!u¥, ,{X{Xþ( +**þþ*®þ,þ,{X{Xþ( +**þþ*0¡+u¥, , þo'­**{€X*:( }€X*0(þ, ¹y7ž{€X(+bcXXX **6(n o+­*00£+þ,!u¦, ,{€X{€Xþ(+**þþ*®þ,þ,{€X{€Xþ(+**þþ*0£+u¦, , þo.­**{X*{‚X*{ƒX*{„X*{…X*²( }X}‚X}ƒX}„X}…X*0Rþ,Aþ,9(y {X {X  /+ þ /*1*þ(#¬**þ,**B¥§,þo6­*0^¤+¥§, þ,A¥§,þ,4{X {X  /+ þ /*1*þ($¬**¥§,þ,**0|þ,s ¹y7ž{…X(i+bcXXX ¹y7ž{„XbcXXX ¹y7ž{ƒXbcXXX ¹y7ž{‚XbcXXX ¹y7ž{XbcXXX **6(n o9­*0p¥+þ,au§, ,U{X{X3E{‚X{‚X35{ƒX{ƒX3%{„X{„X3{…X{…Xþ(j+******þþ*0kþ,\þ,T{X{X3D{‚X{‚X34{ƒX{ƒX3${„X{„X3{…X{…Xþ(l+******þþ*0¥+u§, , þo<­**{†X*:( }†X*0(þ, ¹y7ž{†X(+bcXXX **6(n o@­*00¦+þ,!u¨, ,{†X{†Xþ(+**þþ*®þ,þ,{†X{†Xþ(+**þþ*0¦+u¨, , þoC­**{‡X*:( }‡X*0(þ, ¹y7ž{‡X(+bcXXX **6(n oG­*00¨+þ,!u©, ,{‡X{‡Xþ(+**þþ*®þ,þ,{‡X{‡Xþ(+**þþ*0¨+u©, , þoJ­**{ˆX*:( }ˆX*0(þ, ¹y7ž{ˆX(+bcXXX **6(n oN­*00©+þ,!uª, ,{ˆX{ˆXþ(+**þþ*®þ,þ,{ˆX{ˆXþ(+**þþ*0©+uª, , þoQ­**{‰X*:( }‰X*0(þ, ¹y7ž{‰X(+bcXXX **6(n oU­*00«+þ,!u«, ,{‰X{‰Xþ(+**þþ*®þ,þ,{‰X{‰Xþ(+**þþ*0«+u«, , þoX­**{ŠX*:( }ŠX*0(þ, ¹y7ž{ŠX(+bcXXX **6(n o\­*00­+þ,!u¬, ,{ŠX{ŠXþ(+**þþ*®þ,þ,{ŠX{ŠXþ(+**þþ*0­+u¬, , þo_­**{‹X*{ŒX*{X*{ŽX*{X*{X*Ò( }‹X}ŒX}X}ŽX}X}X*0”þ9ˆ ¹y7ž{XbcXXX ¹y7ž{XbcXXX ¹y7ž{ŽXbcXXX ¹y7ž{XbcXXX ¹y7ž{ŒXoG­bcXXX ¹y7ž{‹XbcXXX **6(n oh­*0‡¯+þ9uu­, ,i{‹X{‹X3Y{ŒX {ŒX oI­,?{X{X3/{ŽX{ŽX3{X{X3{X{Xþ*******þþ*0{þ,lþ,d{‹X{‹X3T{ŒX{ŒXoJ­,?{X{X3/{ŽX{ŽX3{X{X3{X{Xþ*******þþ*0°+u­, ,ok­**0 ²s(B €‘X€’X**~Y*€Y*"(•­*"(•­*0O±+{\ Ži ( + Y 2#£ï-o)B ¤ï-X X3Ý{\s†·*05´+{\ Ži( +s*B sß  8ê £ï-o+B s,B (-B ( þþ9²(-B ( -+Ó(  (  (ò  (.B Ži  X   1<(.B  Z /+ ( + (!+(/B +(.B   ¤ï-(ò X(ó  (0B 86ÿÿÿ X Ži? ÿÿÿ{\(.B (ò ("+s†·*0(µ+(1B , (2B (1B oÓ X+Ú*0/¶+( ,& ( ( ¤ï-X+Ò*09·+(1B ,0 (2B (1B oÓ  Y(›­ Y+È*0¸+(š­ ( + (œ­*0 º+({ -(­ s†·(‘·* ({ (|  (#+{”X,%{•X(›8 +–{–X(»µ(Y (Z (›8 (­ s†·(‘·({ -(ç7 +,(}°(}°  (8 ($+(ç7 (è7 ({ -(V + (V (^ (^ (è7 (è7 (v°(r°*0 ){\(}°(}°(8 {\(+(%+*05¼+(™·Eï@tp. {\þo3B *tq. { \ { \ sã­ (&+(“·*ts.{ \{\u{.-,u|.-Ftz.{\  (¡­(··+It{.  {\  (¡­(¹·+&t|.  {\ så­ ('+(»·(¡­(—·*tr.  { \ { \(¡­(•·*>( ­(r°*0+½+(™·Eæ?tp. {\þo3B *tq. { \ { \ sç­ (&+(“·*ts.{ \{\(£­u{.-+u|.-Dtz.{\(£­(··+Gt{.  {\(£­(¹·+%t|.  {\ sé­ ('+(»·(—·*tr.  { \  { \ (£­(•·*:(¢­(r°*0V¾+(,³E !³”uX×ìtŒ- {üY (¤­("³*tŽ- {þY { Zsë­ { Z((+ {Z(¤­sp³(&³*t-{ýY (¤­($³*t‹-{ûY(¥­(°*tŠ-{úY(¥­(³*t‰-{ùY {øY(¤­(³*t-  {ÿY((³*t-  {Z  {Z  {Z o4B (¤­(*³*(³*’o ³o4B sí­o³((+(=°*0¿+(,³E ™yY;¾*tŒ- {üY (¦­("³*tŽ- {þY  (¨­(&³*t-{ýY (¦­($³*t‹-{ûY(§­(°*tŠ-{úY(§­(³*t‰-{ùY {øY(¦­(³*t-  {ÿYþo5B *‚o ³(ª­o³(©­(³*²{ Zsï­{ Z((+{Z(¦­sp³*Fsñ­þ((+*~oõ²o oö²o÷²(ô²*–{ Z{ Z((+{Zo6B sp³*0 7{¤]{¥]((+{¦]{§]{¨]{©]{ª]s†º*0 Loˆ³(?°(°o6B o;³o‰³oгo‹³o³((+o޳o6B (³*Ú(7B o8B o¬³(­­o­³o6B o®³((+(Q°*06õ{Zo6B {Z(?°(°o6B o;³{Zs—³*ª(9B o8B {Z(¯­{Zo6B s¹³*0îÃ+(,´E0l*t·- {QZ,î{QZ(p o6B (ã (&´*t¸- {RZ,Á{RZ(ƒ  (?°(°o6B o;³( ((´*t¹-{TZ{SZ o6B só­()+(*´*0˜Å+sõ­{eZ(®­ (”­,po¬³oˆ³oõ²(e (Ó± (ù (ø s÷­()+sù­ (*+(ª± Þt{fZsz´ Þ*{fZsz´*Xs0sÆ+{Ú]{Û]o6B {Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{å]{æ] sû­oŠ´(++(b°sïº*0”È+{Ysý­ {Y Œ~#,+ r¨9ps‚ zŽi %- Y2$ £%-o:B ¤%-XX3Ü {Ysÿ­oŠ´(++(b°sè®*0MÉ+Œ¤&,+ r¨9ps‚ zŽi &-  Y  2   £&-(´­¤&- X X3à*~{DY{EY{FYo6B sV¯*Bs;B þ(,+*V( oB {v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼*0LÑ+Œ¸#,+ r¨9ps‚ zŽi ;-  Y  2  £;-(¶­¤;- X X3â*0NÒ+{(\ ( ­(r° s ®{'\(/+ {$\{%\oH {&\{)\sí·*07ó%oTº (Bº3tÖ. {‘] o?B (:º+(5°*0#Ó+{y] {x] (­­o6B (º*0ïÕ+(@B oAB (@B oBB {±](í s ®{Á](0+ {«]{¬]{­]s ®{®](1+{¯](»­{°]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Â] s® oŠ´(++(b°s º*0"×+s® oøº(2+ (t+(*±*0!Ø+s® ¥Ÿ(‹+(Ž+(š°*0 >{‚Y{ƒY{„Y{…Y{†Y{‡Y(µ­{ˆY{‰Ysï¯*08Ù+{€Yoª8 (3+ {~Y{Y(Á­(–+{Ysæ¯*01Ù+{€Yoª8 o?B {~Y{Y(–+{Ysæ¯*–{è](Ä­s®{é](®­sþº*0 ‹Ú+{É](­­ {Ê](­­ s®{Ë](4+ s®{Ì](5+ {Í]s®oŠ´(++(b°{Å](6+{Æ]{Ç]{È] sȺ*0 }Æ+{Ï]{Ð]{Ñ]s®{Ò](4+s®{Ó](4+{Ô]{Õ]o6B {Ö]{×]((+{Ø] s!®oŠ´(++(b°sÚº*0 Û+s#®oàº(7+ (í+(2±*0 Ü+s%®oκ(8+ (î+(.±*08Ý+sj, (DB (9+ sj, {)^(:+ {,^(Æ­ {'^((+ s'®{^(0+{(^(6+(‹ (Z (x+{&^(;+{-^s)®o»(<+(=±{/^(Ï­ {0^(έ {1^ s+® oŠ´(++(b° {^  (…»@¸ t/(Ú®{^o%8 9™{^(Û®o&8 u^-,6t^-{Y(È­(ó¯(Ù®oV (ƒ»+Kt]-{ŒYsj, oGB (=+(ñ¯(Ù®oV (ƒ»+{^{^{^{^{ ^{!^{"^{#^{$^{%^ {*^{+^{.^   s³»*0%2%sHB ¥²(v+( +(•°*0mÆ+{e^{f^{g^{h^{i^{j^{k^ s/®oŠ´(++(b°{l^{m^{n^{o^{p^{q^sO¼*0â+(‹ oIB oJB oKB  s1® {u^o>B (>+{s^s3®oŠ´(++(b°(>+s5®{r^(?+{t^{v^{w^{x^{y^{z^{{^{|^{}^{~^{^{€^{^{‚^{ƒ^{„^{…^sd¼*0ã+(O. (P. s9®*0 æ+s=® sA® (Ó­*BsC®(Õ­*BsE®(Ö­*0è+sG® (¢­(r°*0è+sI® (¢­(r°*0ê+sS® (×­*0ë+sU®(@+ sW®(Ú­*>sY®(Û­*^}”X}•X}–X*.(Ý­*.(Ý­*"{”X*"{•X*"{–X*V(MB }—X}˜X*R{—X{˜X(¡­*V(NB }™X}šX*0{ì+(€: (: u‚.,"t‚. {\ {šX o6B (Ñ·+*tƒ.{\{™X{šX(¡­(Ó·{™X{šX(¡­sOB *:(MB }›X*:{›X(£­*:(NB }œX*0Mí+(€: (: u‚.,+ tƒ. {\ {œX (£­(Ó·{œX(£­sOB *:(PB }X*:{X(¤­*:(PB }žX*:{žX(¤­*V(PB }ŸX} X*Z{ŸX{ Xþ(¦­*V(PB }¡X}¢X*Z{¡X{¢Xþ(¦­*:(QB }£X*:{£X(±­*:(RB }¤X*"{¤X*:(QB }¥X*:{¥X(±­*:(SB }¦X*0 =× (ï (ð (ñ (ò {¦Xo6B {¦X (±­së *V(TB }§X}¨X*R{§X{¨X(²­*V(UB }©X}ªX*z{©X{ªXoá®(³­sà®*V(TB }«X}¬X*R{«X{¬X(²­*:(VB }WB *B{WB þ(A+*V(TB }®X}¯X*R{®X{¯X(²­*V(TB }°X}±X*R{°X{±X(²­*:(XB }²X*Z{²XoYB þ(x+*:(ZB }³X*z{³X{"\o6B {#\sæ·*:([B }´X*:{´X(¬­*V(\B }µX}¶X*R{µX{¶X(¼­*V(TB }·X}¸X*R{·X{¸X(²­*V(]B }¹X}ºX*R{¹X{ºX(³­*r(² }»X}¼X}½X*j{»X{¼X{½X(Å­*:(RB }¾X*"{¾X*:(^B }¿X*:{¿X(­­*:(^B }ÀX*:{ÀX(­­*V(TB }ÁX}ÂX*R{ÁX{ÂX(²­*:(^B }ÃX*:{ÃX(­­*:(^B }ÄX*:{ÄX(­­*V(TB }ÅX}ÆX*R{ÅX{ÆX(²­*V(_B }ÇX}ÈX*R{ÇX{ÈX(Í­*V(`B }ÉX}ÊX*R{ÉX{ÊX(Ì­*:([B }ËX*:{ËX(¬­*:(aB }ÌX*:{ÌX(Ë­*V(TB }ÍX}ÎX*R{ÍX{ÎX(²­*²(ƒ8 }bB }cB }dB }eB }fB *0 &{bB {cB {dB {eB {fB (B+*V(TB }ÔX}ÕX*R{ÔX{ÕX(²­*²(„8 }ÖX}×X}ØX}ÙX}ÚX*0 &{ÖX{×X{ØX{ÙX{ÚX(C+*V(TB }ÛX}ÜX*R{ÛX{ÜX(²­*V(gB }ÝX}ÞX*R{ÝX{ÞX(Ò­*r(f8 }ßX}àX}áX*j{ßX{àX{áX(­*Ò(hB }âX}ãX}äX}åX}æX}çX*0]î+{æX{çXsj, {âX{åX(D+ {ãX{åX(DB (>+ {äX{åX(E+  s7®*Ò(hB }èX}éX}êX}ëX}ìX}íX*0 8{èX{éX{êX{ëX{ìX{íXsj, (Ô­þoBB *r(jB }îX}ïX}ðX*0 *ã+(O. (P. {îX{ïX{ðXs;®*r(kB }ñX}òX}óX*j{ñX{òX{óX(Ç­*’(lB }ôX}õX}öX}÷X*0 Tñ+(O. (P. sj, {öX(DB (F+ {õX{öX{÷X(Ô­{ôX s?®*(nB **:(oB }øX*r{øX(G+(˜­(‘·*:(pB }ùX*N{ùX(™­(‘·*:(pB }úX*:{úX(Ÿ­*:(qB }ûX*"{ûX*:(rB }üX*"{üX*V(… }ýX}þX*R{ýX{þX(º­*’(sB }ÿX}Y}Y}Y*0Bô+{Y{Ysj, {ÿX{Y(DB (>+ sK® sM®  sO®*:(tB }Y*0ã+(O. (P. {YsQ®*:(PB }Y*:{Y(¤­*:(uB }Y*F{Yþo6B *:(° }Y*:{Y(ª­*&€Y*~ Y*~ Y*:sm®svB *:so®svB *~Y*~Y*~Y*~Y*~Y*~Y*~Y*~Y*~Y*~Y*~Y*(wB *0}Œr?pr?prè-p([ (\ (\ (\ (×°sxB r?pr?pròDp([ (\ (\ (\ (×°sxB r?pr?pr?p([ (\ (\ (\ (×°sxB r?pr?pr?p([ (\ (\ (\ (×°sxB r?pr?pr?p([ (\ (\ (\ (×°sxB r?pr?pr!?p([ (\ (\ (\ (×°sxB r?pr?pr%?p([ (\ (\ (\ (×°sxB r?pr?pr)?p([ (\ (\ (\ (×°sxB r?pr?pr-?p([ (\ (\ (\ (×°sxB r?pr?pr1?p([ (\ (\ (\ (×°sxB r?pr?pr7?p([ (\ (\ (\ (×°sxB r=?prè-p([ (\ (\ (Õ°sxB r=?pròDp([ (\ (\ (Õ°sxB r=?pr?p([ (\ (\ (Õ°sxB r=?pr?p([ (\ (\ (Õ°sxB rI?prè-p([ (\ (\ (Ó°sxB rI?pròDp([ (\ (\ (Ó°sxB rI?pr?p([ (\ (\ (Ó°sxB rI?pr?p([ (\ (\ (Ó°sxB rU?prè-p([ (\ (\ (аsxB rU?pròDp([ (\ (\ (аsxB rU?pr?p([ (\ (\ (аsxB rU?pr?p([ (\ (\ (аsxB ra?p([ (\ (õsxB ri?p([ (\ (eµsxB ri?prq?p([ (\ (\ (gµsxB ri?prq?prÄBp([ (\ (\ (\ (iµsxB r+Ap([ (\ (kµsxB ry?p([ (\ (mµsxB ry?prÄBp([ (\ (\ (oµsxB r?p([ (\ (qµsxB r‰?p([ (\ (sµsxB r‰?prÄBp([ (\ (\ (uµsxB r‘?p([ (\ (wµsxB r‘?prÄBp([ (\ (\ (yµsxB r™?pr£?p([ (\ (\ (—´({µsxB r™?pr©?p([ (\ (\ (›´({µsxB r™?pr?p([ (\ (\ (Ÿ´({µsxB r™?pr¯?p([ (\ (\ (£´({µsxB r™?pr‡p([ (\ (\ («´({µsxB r™?prµ?p([ (\ (\ (§´({µsxB r™?pr»?p([ (\ (\ (©´({µsxB r™?prÁ?p([ (\ (\ (™´({µsxB r™?prÇ?p([ (\ (\ (´({µsxB r™?prÍ?p([ (\ (\ (¡´({µsxB r™?prÓ?p([ (\ (\ (¥´({µsxB r™?pr¶Bp([ (\ (\ (­´({µsxB r™?prZ:prÄBp([ (\ (\ (\ (•´({µsxB r™?prq?pr£?p([ (\ (\ (\ (—´(}µsxB r™?prq?pr©?p([ (\ (\ (\ (›´(}µsxB r™?prq?pr?p([ (\ (\ (\ (Ÿ´(}µsxB r™?prq?pr¯?p([ (\ (\ (\ (£´(}µsxB r™?prq?pr‡p([ (\ (\ (\ («´(}µsxB r™?prq?prÁ?p([ (\ (\ (\ (™´(}µsxB r™?prq?prÇ?p([ (\ (\ (\ (´(}µsxB r™?prq?prÍ?p([ (\ (\ (\ (¡´(}µsxB r™?prq?prÓ?p([ (\ (\ (\ (¥´(}µsxB r™?prq?pr¶Bp([ (\ (\ (\ (­´(}µsxB r™?prq?pr£?prÄBp([ (\ (\ (\ (\ (—´(µsxB r™?prq?pr©?prÄBp([ (\ (\ (\ (\ (›´(µsxB r™?prq?pr?prÄBp([ (\ (\ (\ (\ (Ÿ´(µsxB r™?prq?pr¯?prÄBp([ (\ (\ (\ (\ (£´(µsxB r™?prq?pr‡prÄBp([ (\ (\ (\ (\ («´(µsxB r™?prq?prÁ?prÄBp([ (\ (\ (\ (\ (™´(µsxB r™?prq?prÇ?prÄBp([ (\ (\ (\ (\ (´(µsxB r™?prq?prÍ?prÄBp([ (\ (\ (\ (\ (¡´(µsxB r™?prq?prÓ?prÄBp([ (\ (\ (\ (\ (¥´(µsxB r™?prq?pr¶BprÄBp([ (\ (\ (\ (\ (­´(µsxB räpr£?p([ (\ (\ (—´(¶sxB räpr©?p([ (\ (\ (›´(¶sxB räpr?p([ (\ (\ (Ÿ´(¶sxB räpr¯?p([ (\ (\ (£´(¶sxB räprµ?p([ (\ (\ (§´(¶sxB räpr»?p([ (\ (\ (©´(¶sxB räpr‡p([ (\ (\ («´(¶sxB räpr¶Bp([ (\ (\ («´(¶sxB räprÓ?p([ (\ (\ (£´(¶sxB räprÙ?p([ (\ (\ (¯´(¶sxB ròpr£?p([ (\ (\ (—´(¶sxB ròpr©?p([ (\ (\ (›´(¶sxB ròpr?p([ (\ (\ (Ÿ´(¶sxB ròpr¯?p([ (\ (\ (£´(¶sxB ròprÓ?p([ (\ (\ (£´(¶sxB ròprÁ?p([ (\ (\ (™´(¶sxB ròprÇ?p([ (\ (\ (´(¶sxB ròprÍ?p([ (\ (\ (¡´(¶sxB ròprµ?p([ (\ (\ (§´(¶sxB ròpr»?p([ (\ (\ (©´(¶sxB ròpr¶Bp([ (\ (\ («´(¶sxB ròpr‡p([ (\ (\ («´(¶sxB ròprÙ?p([ (\ (\ (¯´(¶sxB rá?p([ (\ (µsxB rá?prq?p([ (\ (\ (ƒµsxB rá?prq?prÄBp([ (\ (\ (\ (…µsxB ré?p([ (\ (‡µsxB ré?prÄBp([ (\ (\ (‰µsxB rñ?p([ (\ (‹µsxB rù?p([ (\ (µsxB rù?prÄBp([ (\ (\ (µsxB r@p([ (\ (‘µsxB r@prq?p([ (\ (\ (“µsxB r@prq?prÄBp([ (\ (\ (\ (•µsxB r @p([ (\ (—µsxB ræDp([ (\ (™µsxB r@p([ (\ (›µsxB rÀ‡p([ (\ (µsxB r@p([ (\ (ŸµsxB r'@p([ (\ (¡µsxB r/@p([ (\ (£µsxB r7@p([ (\ (¥µsxB rI@p([ (\ (§µsxB r\­p([ (\ (¶sxB rQ@p([ (\ (¶sxB ra@p([ (\ (ÕµsxB ru@p([ (\ (ÓµsxB r‹@p([ (\ (¶sxB r¡@p([ (\ (¶sxB r³@p([ (\ (ѵsxB r¿@p([ (\ ( ¶sxB rË@p([ (\ (ÙµsxB (yB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB (zB *:({B } Y*^( µ(#µ{ Y(·µ*:({B } Y*^( µ(#µ{ Y(¯µ*:({B } Y*"{ Y*(|B *0õ+(}B (~B sq®sB *({B *F( µ(#µ(¶*({B *F( µ(#µ(¶*(€B *0!Fss®(]®oB (H+rÛ@pr¶Bp([ (\ (\ («´(I+rÛ@pr‡p([ (\ (\ («´(I+rÛ@prÁ?p([ (\ (\ (—´(I+rÛ@pr£?p([ (\ (\ (—´(I+rÛ@prÇ?p([ (\ (\ (›´(I+rÛ@pr©?p([ (\ (\ (›´(I+rÛ@prÍ?p([ (\ (\ (Ÿ´(I+rÛ@pr?p([ (\ (\ (Ÿ´(I+rÛ@prÓ?p([ (\ (\ (£´(I+rÛ@pr¯?p([ (\ (\ (£´(I+rÛ@prµ?p([ (\ (\ (§´(I+rÛ@pr»?p([ (\ (\ (©´(I+rÛ@prÙ?p([ (\ (\ (¯´(I+rØpr‡p([ (\ (\ («´(J+rØpr£?p([ (\ (\ (—´(J+rØpr©?p([ (\ (\ (›´(J+rØpr?p([ (\ (\ (Ÿ´(J+rØpr¯?p([ (\ (\ (£´(J+rØprÁ?p([ (\ (\ (™´(J+rØprÇ?p([ (\ (\ (´(J+rØprÍ?p([ (\ (\ (¡´(J+rØprÓ?p([ (\ (\ (£´(J+rØprµ?p([ (\ (\ (§´(J+rØpr»?p([ (\ (\ (©´(J+rØprÙ?p([ (\ (\ (¯´(J+rç@p([ (\ su®sB ró@p([ (\ sw®sB (‚B (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB (ƒB þ(K+*(Z> *J(£´(Û´(©µ*(„B *¾r?pr¯?p([ (\ (\ s{®s…B (†B (‡B *(\> *"(×°*(\> *"(×°*(ˆB *0 ar?pr?p([ (\ (\ s®s‰B r?pr?pr¬Bp([ (\ (\ (\ s®s‰B (ŠB (‹B (‹B *(n> *0.( ( (#¶*(ŒB *¾r¿@prAp([ (\ (\ s…®sB (ŽB (B *(B *6(§´(©µ*(B *6(©´(©µ*(‘B *0Wr?prµ?p([ (\ (\ s‰®s’B r?pr»?p([ (\ (\ s‹®s’B (“B (”B (”B *(j> *0R)(g> (h> (ÿ´(ŵ*(•B *–rAp([ (\ s®s–B (—B (˜B *(p> *"(çµ*(™B *–rAp([ (\ s“®sšB (›B (œB *(t> *"(íµ*(B *–r%Ap([ (\ s—®sžB (ŸB ( B *(z> *N(3µ(“²(¶*(z> *6(“²(¶*(z> *6(“²( ¶*(z> *6(“²( ¶*(z> *"(ëµ*(z> *"(!¶*(z> *"(éµ*(z> *"(óµ*(z> *"(ýµ*(¡B *0=r5Ap([ (\ s›®s¢B ròprEAp([ (\ (\ s®s¢B räprEAp([ (\ (\ sŸ®s¢B rMAp([ (\ s¡®s¢B r[Ap([ (\ s£®s¢B rcãp([ (\ s¥®s¢B r®xp([ (\ s§®s¢B roAprEAp([ (\ (\ s©®s¢B rAprEAp([ (\ (\ s«®s¢B (£B (¤B (¤B (¤B (¤B (¤B (¤B (¤B (¤B (¤B *(¥B *0ö+(¦B (§B (”²(¶*(¥B *0ö+(¦B (§B (”²( ¶*(¥B *0ö+(¦B (§B (”²( ¶*(¥B *0"ö+(¦B (§B (3µ(”²(¶*(¨B *0 §ròprAp([ (\ (\ s¯®s©B räprAp([ (\ (\ s±®s©B rMAprAp([ (\ (\ s³®s©B r5AprAp([ (\ (\ sµ®s©B (ªB («B («B («B («B *(z> *"(ñµ*(z> *"(óµ*(z> *J( µ(#µ(õµ*(z> *J( µ(#µ(÷µ*(z> *"(ÿµ*(z> *"(ùµ*(z> *"(ûµ*(¡B *0 Ùr‹Ap([ (\ s¹®s¢B roAp([ (\ s»®s¢B r—Ap([ (\ s½®s¢B r£Ap([ (\ s¿®s¢B rfp([ (\ sÁ®s¢B r¯Ap([ (\ sîs¢B rAp([ (\ sÅ®s¢B (£B (¤B (¤B (¤B (¤B (¤B (¤B (¤B *0Å(ݰs¬B € Ysk®(L+€ Ysy®(M+€Ys}®(N+€Ysƒ®(O+€Ys‡®(P+€Ys®(Q+€Ys‘®(R+€Ys•®(S+€Ys™®(T+€Ys­®(U+€Ys·®(V+€YsÇ®(U+€Y*0( (ñ , rfÁp( **0ø+  u5-- u6--j u7-:Ât5- t5- (y {Y {>Y o0³ /*1*(y {?Y {?Y þo=¯*t7- t7- (y  {@Y {@Y þo0³*0Šù+u6--5u7--Wt5- {Y (ÿ°(Ì®(5¯*t7-{@Y (ÿ°(7¯*0 ºú+u.--/u/-:‚t-- {2Y {1Y(Í®(¯*t.- {4Y {3Y {m] {n](ÿ° {o] {p] {q] {r] {s] {t]sü¹(Í®(¯*t/-{5Y(ÿ°(¯**sV¯*0©û+(ˆ¯E I.(V *tB- {bY {aY (V (^ (^ *tH- {qY(µ3½(V *tE-{kY{lY sÖ¯(V (W+(^ *0S(ˆ¯E *tB-{bY (V *tE-{lY +ë0"ü+(ˆ¯3tH- {qY(µþ**0¶ý+(ˆ¯E @*tB- {^Y {bY {aY {_Y{`Y oH oH (z¯*tE-{iY {jY{kY{lY sد(X+oH (€¯*~Y*~‘Y*~’Y*~“Y*J(Ô®oì (%¶*~”Y*~•Y*~–Y*~—Y*J(Ù®oV (ƒ»*0-þ+u5-,t5- {Y {>Yo0³/*1* {?Y {?Y  8Âþÿÿt7- t7-  {@Y {@Yþo0³*Y**¥3-þ,**0×,þ9Ë u5--u6--Mu7-:‚t5-  ¹y7ž{=Yo>¯bcXXX ¹y7ž{¯bcXXX ¹y7ž{>Yo1³bcXXX *t7-  ¹y7ž {@Yo1³bcXXX **6(n o>¯*0U ,þ9Cu3- 94  u7-,+  u6-,+ u7-,+ u6-,+ @ñu5--u6--[u7-:¡t5- t5- {Y {>Yo3³," {?Y {?Y8éþÿÿ*t7- t7-  {@Y {@Yþo3³***þþ*0 ,þ9þ9ýu7-,+ u6-,+   u7-,+  u6-,+ @º  u5-- u6--A u7--vt5- t5- {Y{>Y(Ó+,{?Y{?Y8ÿÿÿ*t7-t7-{@Y{@Yþ(Ó+***þþ*0,u3- , þoA¯**V(2¯}Y}?Y*{>Y*{?Y*:(2¯}@Y*{@Y*:( }AY*2{AY{Y*2{BY{?Y*:( }CY*2{CY{@Y*{DY*{EY*{FY*r( }DY}EY}FY*0— ,þ9ƒþ9x(y {DY{DY( /*1*(y {EY {EY /+ þ /*1*(y {FY{FYþo0³**þ,**B¥;-þoW¯*0“ ,¥;- þ9s¥;-þ,f{DY{DY( /*1*{EY {EY /+ þ /*1*{FY{FYþo0³**¥;-þ,**0aÍþ,X ¹y7ž{FYo1³bcXXX ¹y7ž{EYbcXXX ¹y7ž{DY , ( +bcXXX **6(n oZ¯*0Y ,þ,Ju;- ,>{DY{DY(ñ ,){EY{EY3{FY {FY þo3³****þþ*0Pþ,Aþ,9{DY{DY(ñ ,${EY{EY3{FY{FYþ(Ó+****þþ*0%u;- , þo]¯**&s`¯*r( }GY}HY}IY*{GY*{HY*{IY*&*Zr.8ps¸B (^+o¹B *&sg¯*r( }JY}KY}LY*{JY*{KY*{LY*&*Zr.8psºB (_+o»B *0,oo¯ {GY*"{LY*"{JY*0,{JY {IY*0,{JY {HY*"{KY*0ÿ{GY (=°(°(f¯*0|,{LY {JY {IY Œ¸#,+ r¨9ps‚ zŽi ‡- Y2$£;-{FY¤‡-XX3Ü(Ç+(]°*:( }MY**sН**(ˆ¯þ*&s¯**(ˆ¯þ*2s“¯**(ˆ¯þ*&s™¯**(ˆ¯þ*&s¯**(ˆ¯þ**s¡¯**(ˆ¯þ*"s¦¯**(ˆ¯þ*"s©¯**(ˆ¯þ*"s¬¯**(ˆ¯þ*{MY*Zr.8ps¼B (`+o½B *–(u¯}WY}XY}YY}ZY*{WY*{XY*{YY*{ZY*v(u¯}[Y}\Y}]Y*{[Y*{\Y*{]Y*¶(u¯}^Y}_Y}`Y}aY}bY*{^Y*{_Y*{`Y*{aY*{bY*v(u¯}cY}dY}eY*{cY*{dY*{eY*v(u¯}fY}gY}hY*{fY*{gY*{hY*–(u¯}iY}jY}kY}lY*{iY*{jY*{kY*{lY*Z(u¯}mY}nY*{mY*{nY*Z(u¯}oY}pY*{oY*{pY*Z(u¯}qY}rY*{qY*{rY*:( }sY*2{sY{WY*2{sY{XY*2{sY{YY*2{sY{ZY*:( }tY*2{tY{[Y*2{tY{\Y*2{tY{]Y*:( }uY*2{uY{^Y*2{uY{_Y*2{uY{`Y*2{uY{aY*2{uY{bY*:( }vY*2{vY{cY*2{vY{dY*2{vY{eY*:( }wY*2{wY{fY*2{wY{gY*2{wY{hY*:( }xY*2{xY{iY*2{xY{jY*2{xY{kY*2{xY{lY*:( }yY*2{yY{mY*2{yY{nY*:( }zY*2{zY{oY*2{zY{pY*:( }{Y*2{{Y{qY*2{{Y{rY*:(!1 }|Y*:{|Y(a+*(¾B *0.( ( sÔ¯*:(¿B }}Y*0".( ( {}YoH sZ *(ÀB *"(Ï®*(ÁB *"(Ю*(ÂB *"(Ñ®*(ÃB *&(Ò®*{~Y*{Y*{€Y*{Y*’( }~Y}Y}€Y}Y*{‚Y*{ƒY*{„Y*{…Y*{†Y*{‡Y*{ˆY*{‰Y*0D( }‚Y}ƒY}„Y}…Y}†Y}‡Y}ˆY}‰Y*( *s÷¯**u]-þ*sù¯**u^-þ*0, u^-,+*Zr.8psÄB (b+oÅB *:(ð¯}ŒY*{ŒY*:(ð¯}Y*{Y*:( }ŽY*2{ŽY{ŒY*:( }Y*2{Y{Y*0ŽsÚ¯sܯsÞ¯sà¯sÆB (c+€Y(Ó®(ÇB €‘Y(Ó®(ÈB €’Y(Ó®(ÉB €“Y(ÊB (d+€”Y(Ø®(ËB €•Y(Ø®(ÌB €–Y(Ø®(ÍB €—Y**~þ_*~ÿ_*²oÎB ,oÏB o1% þ(e+*sÐB þ(f+*0Q/ rÓAps\ zob Y 1 rýAps\ zoL /XYoL +rR9ps~ *0C,.oM YE!(° (š (™ (°(\ *([ (\ *~`*~`*0) (°oÑB ,*(° (°oÒB *~`*0.¨ ( °oÓB ,*(°(è+ ( °oÔB *0E,.oâ8 YE#(° (š (™ (°sì5 *([ sì5 *~`*0ß,,oM YE#(° (š (™ (c sð5 +sð5 (•6 (–6 .oâ8 YE) (° (š (™ ( °sè* + ( ° sè* (ç* (æ* , r:p(  (d ( +sè* *03ÿ(] -)¥7 rS@p(p+(` rS@p( ( **0G,.([ o\ .,.(ýÁ (° (š (™ (c sÕB *sÕB *0), (°oÖB ,*(° (°o×B *"(8¿*0¼,(y {²Y{²Y(g+ /*1*(y {³Y{³Y(h+ /*1*(y {´Y{´Y/+þ /*1*(y {µY{µY(i+/*1*(y {¶Y{¶Yþ([+*0£#{²Y{²Y(g+ /*1*{³Y{³Y(h+ /*1*{´Y {´Y /+ þ /*1*{µY{µY(i+/*1*{¶Y{¶Yþ([+*~`*š / 0(ØB X+ a(ØB  YX(ÙB *~`*~`*F(q -(°**F(q -(°***sp³*n(q -(°+sp³*:{ëYoù²*0¹O&(y {)Z {)Z  /+ þ /*1*(y {*Z {*Z /+ þ /*1*(y {+Z{+Z/+þ / * 1 *(y {,Z{,Z/*þ*0˜N&{)Z {)Z /+þ /*1*{*Z {*Z  /+ þ /*1*{+Z {+Z /+ þ /*1*{,Z {,Z /* þ*0),(á´E0gºtÝ- tÝ- (y {˜Z {˜Z /* þ*tÞ-tÞ-(y {™Z{™Z/*þ*tß- tß- (y  {šZ  {šZ   þ,*  þ,*  þ,*  þ(H+*tà- tà-(y  {›Z{›Zþ,*þ,*þ,*þ(I+*0,(á´E'X¥tÝ- tÝ- {˜Z {˜Z  /* þ*tÞ-tÞ-{™Z{™Z/*þ*tß-tß- {šZ  {šZ   þ,*  þ,*  þ,*  þ(H+*tà- tà-  {›Z {›Zþ,*þ,*þ,*þ(I+*0ó,{“Z {“Z @Û(á´E>tÝ- tÝ- {˜Z {˜Zþ*tÞ-tÞ-{™Z{™Zþ*tß-tß-{šZ{šZ .   þþ+,* þ*tà- tà-  {›Z  {›Z   .   þþ+,*  þ**~`*0w,("°(ÚB (ÛB þþ, r-Bps\ zsÜB sm· sÝB ("°sÞB sßB sàB sáB se·("°(ÚB (âB (ãB säB *0U ,({ ,. ({ (| oi , (§ *+ÊrºBp( rôp( s\ z0",  (j+*~`*F(Ä -(&°**06#,(&¸E(]”Ë9p§ÞLŸ*tŒ. tŒ. (y {I\{I\( *t. t.(y {J\{J\/*þ*tŽ.tŽ.(y {K\ {K\   4*  þ*t. t. (y  {L\  {L\ /* þ*t.t.(y {M\{M\/*þ*t‘.t‘.(y {N\{N\/*þ*t’.t’.(y {O\{O\/*þ*t“.t“.(y {P\{P\4*þ*t”.t”. (y {Q\  {Q\   4*  þ*t•.!t•."(y !{R\#"{R\$#$4*#$þ*t–.%t–.&(y %{S\'&{S\('(4*'(þ*t—.)t—.*(y ){T\+*{T\,+,þ,*+,þ,*+,þ,*+,þ(H+*t˜.-t˜..(y -{U\/.{U\0/0þ,*/0þ,*/0þ,*/0þ(I+*0æ$,(&¸E"O€±âDu¦×U*tŒ. tŒ. {I\{I\( *t. t. {J\ {J\/*þ*tŽ.tŽ.{K\{K\  4* þ*t. t.  {L\  {L\   /*  þ*t.t.{M\{M\/*þ*t‘.t‘.{N\{N\/*þ*t’.t’.{O\{O\/*þ*t“.t“.{P\{P\4*þ*t”.t”.{Q\{Q\  4* þ*t•. t•.! {R\"!{R\#"#4*"#þ*t–.$t–.%${S\&%{S\'&'4*&'þ*t—.(t—.)({T\*){T\+*+þ,**+þ,**+þ,**+þ(H+*t˜.,t˜.-,{U\.-{U\/./þ,*./þ,*./þ,*./þ(I+*0D%, (&¸E/OwŸÇé3[~§ÐùtŒ.  ¹y7ž{I\ , ( +bcXXX *t.  ¹y7ž {J\bcXXX *tŽ. ¹y7ž{K\(L+bcXXX *t. ¹y7ž{L\(J+bcXXX *t. ¹y7ž{M\(K+bcXXX *t‘. ¹y7ž{N\bcXXX *t’. ¹y7ž{O\(;+bcXXX *t“.  ¹y7ž {P\bcXXX *t”.  ¹y7ž {Q\(L+bcXXX *t•.  ¹y7ž {R\bcXXX *t–.  ¹y7ž {S\(M+bcXXX *t—.  ¹y7ž {T\(N+bcXXX *t˜. ¹y7ž{U\(O+bcXXX * *0î&,(&¸E"?`¢Ãä&Gh‰*tŒ. tŒ. {I\{I\(ñ *t. t. {J\ {J\þ*tŽ.tŽ.{K\{K\þ*t.t.{L\{L\þ*t.t. {M\ {M\þ*t‘. t‘.  {N\ {N\þ*t’. t’.  {O\ {O\þ*t“.t“.{P\{P\þ*t”.t”.{Q\{Q\þ*t•.t•.{R\{R\þ*t–.t–.{S\{S\þ*t—.t—.{T\{T\þ*t˜.t˜.{U\{U\þ*0.',(&¸E"?`¢Ãä&Gh©*tŒ. tŒ. {I\{I\(ñ *t. t. {J\ {J\þ*tŽ.tŽ.{K\{K\þ*t.t.{L\{L\þ*t.t. {M\ {M\þ*t‘. t‘.  {N\ {N\þ*t’. t’.  {O\ {O\þ*t“.t“.{P\{P\þ*t”.t”.{Q\{Q\þ*t•.t•.{R\{R\þ*t–.t–.{S\{S\þ*t—.t—.{T\{T\. þþ+,*þ*t˜.t˜.{U\{U\. þþ+,*þ*0K(,(°¸E%›ÍÿO*t¨. t¨. (y {©\{©\(h+ /*1*(y {ª\{ª\( / * 1 *(y {«\{«\( /*1*(y {¬\{¬\þ(h+*t©.t©.(y {­\ {­\  /* þ*tª.tª. (y {®\  {®\  /* þ*t«. t«. (y  {¯\ {¯\(k+ /*1*(y  {°\ {°\þ(l+*t¬. t¬. (y  {±\ {±\o6¹ /*1*(y  {²\ {²\þ([+*0),(°¸E%…°Û#*t¨. t¨. {©\{©\(h+ /*1*{ª\{ª\( / * 1 *{«\{«\( /*1*{¬\{¬\þ(h+*t©.t©.{­\ {­\  /* þ*tª.tª.{®\ {®\  /* þ*t«. t«.  {¯\ {¯\(k+ /*1* {°\ {°\þ(l+*t¬. t¬.  {±\  {±\ o6¹ /*1* {²\ {²\þ([+*0‘*, (°¸E%­ÏÓ×Ûßãèíò÷ü $).sx}‚‡Œ‘–› åê *t¨.  ¹y7ž{¬\(i+bcXXX ¹y7ž{«\ , ( +bcXXX ¹y7ž{ª\ , ( +bcXXX ¹y7ž{©\(i+bcXXX *t©.  ¹y7ž {­\bcXXX *tª. ¹y7ž{®\bcXXX * * * * * * * * * * * * * * * * * * * * *t«. ¹y7ž{°\(m+bcXXX ¹y7ž{¯\(n+bcXXX * * * * * * * * *! *t¬." ¹y7ž{²\(¾+bcXXX ¹y7ž{±\o7¹bcXXX *# *$ *0É+,(°¸E%e‚£â*t¨. t¨. {©\{©\(j+,?{ª\{ª\(ñ ,*{«\{«\(ñ ,{¬\{¬\þ(j+****t©. t©. {­\ {­\þ*tª.tª.{®\{®\þ*t«.t«.{¯\{¯\(o+,{°\{°\þ(p+**t¬.t¬. {±\  {±\   o9¹,{²\ {²\þ(Á+**0»,,(°¸E%c€¡Þ*t¨. t¨. {©\{©\(l+,>{ª\{ª\(ñ ,){«\{«\(ñ ,{¬\{¬\þ(l+****t©. t©. {­\ {­\þ*tª.tª.{®\{®\þ*t«.t«.{¯\{¯\(q+,{°\{°\þ(r+**t¬.t¬. {±\ {±\o:¹,{²\ {²\þ(\+**~ `*0´+(y {z] {z]  /+ þ /*1*(y {{] {{]  /+ þ/*1*(y {|] {|]  /+ þ/*1*(y {}] {}]  /* þ*0—-{z] {z] /+þ /*1*{{] {{] /+þ / * 1 *{|] {|] /+þ/*1*{}] {}] /*þ*6(˜+(Lº*"(Lº*>siºþ(s+*>skºþ(s+*(u *(= **(ô²*08([ (ô²*&s³*j(q -(°+s³*6(°s³*0--,{æY {çY{èY([ (\ (Ÿ+ (ô²*z(ã²3{ëYoù²*(³*‚(q -(°+s³(A°*:(á²(B°*:(ß²(B°*N(ß²s³(A°*J(á²(= (B°*J(ß²(= (B°*~ `*0_1,(H°(åB (æB þþ, rØBps\ zsçB sv¼ sèB (H°s›»(H°(åB (éB (êB sëB *6(P²**sW²*rþGp*0$2,([ rþGp(ô²(?° {ëYoù²*6rþGp(ñ *>s³*†(q -(°+(O°**s¤³*n(q -(°+s¤³*Z{Z(B°(R°*~oþ (P°(S°*†o;³oþ (O°s¤³*†o;³oþ (P°(R°*J(= (V°*J(Ú²(V°*B(= (X°*J(Û²(V°*B(= (Z°*0 #(ß²(Ú²rúåp(³(= (T°*v(Ú²rúåp(³(= (V°**s—³*&s¹³*Vo;³s—³s¹³*~ `*Z(G: -(a°*(†´*6(t+(„´*f(µ3 ,(ý´*(ÿ´*0G"rºBpŒ’ ,+u¼ , (x ¥|o¡ + o& +rR9p( *0½3,('¶Ea-TŒ’®Ê挌ŒŒ(V *t.{ƒ[ (V (^ *tý-{m[ +ætÿ- {q[ {p[ (V (^ (^ *t. {r[(û9  {r[(¯= (^ (¿(u+oìB *(V *t.{s[(µ@Tÿÿÿ+Þt.{v[(µ@8ÿÿÿ+Ât.{y[(µ@ÿÿÿ+¦t.{}[(µ@ÿÿÿ8‡ÿÿÿt(.{·[ rPCp sz¼("°(ÚB (v+*04,('¶Ea/E[*t. {s[(µþ*t. {v[(µþ*t. {y[(µþ*t. {}[(µþ*t(.{·[rPCps|¼("°(ÚB (w+*0Ç5,(g°,*('¶Ea**t(. {·[ rPCps~¼("°(ÚB (w+**0­7,(™·E7ytp. {\ {\oíB *tq. s€¼{ \þ(x+*tr. { \ { \(k°(¿(u+(îB (ïB *ts.  { \8Sÿÿÿ>(¿þ(j°*0Í8,(™·E"=„tp. {\ oŠ·(f°(u++xtq. s‚¼ { \(x++]tr.{ \{ \(m°(¿(u+  (îB (ïB +ts.  { \(l° (¿(j°(îB *6(¿(l°*09,(™·E7Ktp. {\ {\(^ *tq. s„¼{ \þ(y+*tr.  { \+šts.{\{ \(n°(o°*0V:, u{.- u|.-)tz. {\(n°*t{. {\(n°*t|. s†¼{\þ(z+*0-;,uƒ.,tƒ. {\ (n°(n°*(n°*6(V (n°*0~<,(™·3)tr. { \( þ,{ \ { \ *(™·3Atq. { \(…< -- { \(š< , { \(š< (š< - (›< **"(‘·*b(r°(ç7 (è7 (“·*b(: (“·(r°(•·*Nsˆ¼(&+(u°*z(¿(j°oðB oìB (•·*Ž(r°(r°(w°(r°(¹·(—·*Ž(r°(r°(w°(r°(··(—·*v(r°sм({+(»·(—·*0Üsß sñB *~ `*>(|°þoòB *0v=,(¿(j°oìB ( ,Q ( ( - ( * r\Cps޼ (|+¥7r:p(p+(` ( s\ zrÂCps\ z0v=,(¿(l°oìB ( ,Q ( ( - ( * rDps¼ (|+¥7r:p(p+(` ( s\ zrtDps\ zb(¯+s†·(‘·(r°*0WŒ ( þþ,(}+(h°+, r¾Dps\ z(Y (Z (+ (¯+s†·(‘·(r°*>(»µ(°*0R(|°oòB ( þþ,(}+(h°+,(¯+s†·(‘·(r°*(õ(°*0g>,(°(~°.rgEp(>À+(°(V (^ (V (ç7 (è7 (è7 s’¼(&+(u°(r°(•·(r°*~`*Z(; -(…°*(‡¹*"(‰¹*"((³*0 (°(oº(a°s†º*>s”¼þ(~+*>s–¼þ(~+*>s˜¼þ(+*>sš¼þ(+*N(ß²(°(B°*0S!sœ¼(ò+ {^ (ô²*0-?,oW+ {^( ° (˜ (— {1^sŠ= *0eB,(€+ , (óB + sž¼sôB oõB ,#rÛEps (ñ+(°o s\ zoöB þo÷B *:s¡¼(+*6søB (‚+*0"D,{2^ (ƒ+(’° („+(¹»*0$E,s©¼(…+(†+(‡+ („+(¹»*0E,s«¼(ˆ+ („+(¹»*~`*0#F,{«] (‰+ (Q þoùB *0H,{Ã] s­¼(Š+(³º*šs¯¼(P (‹+súB (Œ+(+(³º*Js³¼(Ž+(³º*~`*0H,{Ã] s·¼(Š+(³º** * * O*&(³*6(˜²(³*.(,³þ*0.I,(,³3t‰- {øY{ùYsûB *rFps\ zrÓðp*rÓîp*rFp*rMFp*rwFp*rŸFp*rÅFp*rïîp*rçFp*rGp*r=Gp*r›Gp*r÷Gp*r”§p*r Gp*rgHp*rp*r´§p*rép*rÆfp*rãïp*r ñp*rÇïp*ryïp*r«ïp*rïðp*r“ïp*ràfp*rüfp*r0gp*rgp*r“Hp*ræp*r¯Hp*réHp*rCáp*rIp*:(ÿ´(ŵ*:(ÿ´(ǵ*>(ÿ´(ɵ*&(ϵ*~`*®4(ϰŽiÑþ+, (ϰi£ï-*(«µ*~`*~`*®4(Ò°ŽiÑþ+, (Ò°i£ï-*(±µ*~`*®4(Ô°ŽiÑþ+, (Ô°i£ï-*(¹µ*~`*Î/ (Ö°Žiþ+, (Ö°£ï-*(Ÿ´(Ù´(©µ*rOIp*rÅIp*0MJ,-/uw-,tw- {ÁY {·Y{±Y+rJps\ z(d rÓðp(<° (?°{ëYoù²rÓîp(<°(?°{ëYoù²rFp(<°  (?°  {ëY où² rMFp(<°  (?°  {ëY où²rwFp(<°(?°{ëYoù²rŸFp(<°(?°{ëYoù²rÅFp(<°(?°{ëYoù²rïîp(<°(?°{ëYoù²rçFp(<°(?°{ëYoù²rGp(<°(?°{ëYoù² r=Gp(<°!!(?°""{ëY"où²#r›Gp(<°$$(?°%%(³&r÷Gp(<°'r”§p(<°(((?°)){ëY)où²*r Gp(<°++(?°,,{ëY,où²-rgHp(<°..(?°//(³0rp(<°11(?°22{ëY2où²3r´§p(<°44(?°55{ëY5où²6rép(<°(?°88{ëY8où²7rÆfp(<°9rãïp(<°:r ñp(<°;rÇïp(<°<ryïp(<°=r«ïp(<°>rïðp(<°?r“ïp(<°@ràfp(<°Arüfp(<°Br0gp(<°Crgp(<°Dr“Hp(<°Eræp(<°F9(?°8:(?°G;(?°H<(?°I=(?°J>(?°K?(?°L@(?°MA(?°NB(?°OE(?°PF(?°QD(?°RC(?°SL(³TJ(³UH(³V8(³WM(³XK(³YI(³ZG(³[N(³\O(³]S(³^R(³_P(³`Q(³aL(³bJ(³cH(³d8(³eM(³fK(³gI(³hG(³iN(³jO(³kS(³lR(³mr¯Hp(<°nn(?°oo(³préHp(<°qq(?°rr(³srCáp(<°tt(?°uu(³vrIp(<°ww(?°x   *-3/0678GHIJKLMNOPQRSTUVWXYZ[\]^_`apsvx(³fcdebghijklm#&'(X s½*~`*~`*~`*0K(ß²{“^rƒJp(<°(= (B°ráJp{©^{É^(= (> (> (³([°*0'{“^(<° (= (= (\°(ϵ*0]K,{ëY {æY {èY(ñ ,>uv--.uu--'tw- {ÁY {·Y{±Y{”^(ñ ****v(,³þ,o9³(à°**v(,³þ,o9³(à°**:rÓðp(á°*:rÓîp(á°*:rgHp(â°*:rïðp(â°*:r“ïp(â°*:ryïp(â°*:r«ïp(â°*:r ñp(â°*:rÇïp(â°*:rÆfp(â°*:rãïp(â°*:r“Hp(â°*:ræp(â°*:r0gp(â°*:rgp(â°*:ràfp(â°*:rüfp(â°*0KL, uu--!uv--  uu-- uv--***(e * uu--ëuv--(e *04M,{æY(ô° ,! ( {çY{èY(ô²( **0N,(ô° -*( *0v(õ° -*(ƒ *0dO,{ëY {ìY (õ° (q þ,þ+,*, (ƒ (û°s³(N *(û°s³(N *0P,(ø° -*(™A *0MQ,(,³E “·V9é*tŒ- {üY (ú°("³*tŽ- {þY  (ü°(&³*t-{ýY (ú°($³*t‹-{ûY(ø°-*(™A   {ëY où²*t‰-  {ùY  {øY(ú°(³*tŠ-  {úY(ø°-*(™A (³*t-  {Z  {Z  {Z (÷°(ú°(*³*z(q þ,*s!½þ((+*–{ Z{ Z(û°{Z(ú°sp³*0 ={Z(÷°{Z{Z{Z{Z(û°{Z(ú°s³*–{Z(÷°{Z{Z(ú°s—³*0`R,(,³E ;º~`ë*tŒ- {üY (ÿ°("³*tŽ- {þY  (±(&³*t‰-{ùY {øY(ÿ°(³*t-{ýY (ÿ°($³*t‹-{ûY{ëY{ìY(±s³{ëYoù²*tŠ-  {úY{ëY{ìY(±s³(³*t-  {ÿY  i oþ   /* Y 2   YÑ((³* Yþ(+*Fs#½þ((+*²{ Zs%½{ Z((+{Z(ÿ°sp³**(ÿ°*0 (a°sü¹*:(c (±*&(±*:(a°sº*&sæ·*:sí·*Nsí·(:º*~`*0Zrúåp($º(Ú²( -(2°+( ±(˜+(Lº(Yº(…°(9°(a°s º*0H(Ѱ(Y (Z s'½(+(ÿ´(= (]°(ŵ(Y (Z (+þ(+*J( µ(#µ(åµ*6(#µ(ãµ*6(#µ(Ûµ*J( µ(#µ(ݵ*"(áµ*J( µ(#µ(õµ*J( µ(#µ(÷µ*0 0Œ (= ( ± (ü·(X (¼= (ƒ°( ±( ±*0P( º(Û²( -(2°+(˜+(Lº(Yº(…°(a°s º*J(9°(±*0Qrëp("º(Û²(2°( ±(ú·(˜+(Lº(Yº(…°(9°(a°s º*0eÿ(Ú² (Bºþsº((º( -(2°+(˜+(Lº(Yº(…°(a°s º*J(9°(±*0P(&º(Ú²( -(2°+(˜+(Lº(Yº(…°(a°s º*J(9°(±*Æ{$\{%\{&\{'\{(\oüB {)\sí·*0àS,{±] {•]oýB (Bº3tÖ.{‘]+ rKps\ z (±(:º {«]{¬]{­]{®]{¯]{°](˜+(Lº{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0D(|°oòB (~°(»µ(Y (Z (+(¯+s†·(‘·(r°(„°*:s)½(±*0;U,{)^ {Ã] rëp oþB (ÿB (‰+ (} -%(&°(Y (ƒ°( ±(±sC +:(} (} -(~ s+½(°sC + r?Kps\ z (C (C oÛ {^{^{^{^{^{ ^{!^{"^{#^{$^{%^{&^{'^{(^(™°{*^{+^{,^{-^{.^{/^{0^{1^s³»*Ö{­]{«]{Á]o­ {®](7°{¯]{v](O°*R{Ú]{Û]s—³*B(°(!±*n(°{Ú]{Û]s—³*>s-½( ±*0(a°sïº*0 (&±*0 (&±*0 ( (&±*Js2½sC (ðº*6(t+(*±*~`*~`*Js4½sC (ɺ*6(î+(.±*~`*~`*Js6½sC (Ûº*6(í+(2±*~`*~`*rs8½(‘+(’+(“+(æ»*Js<½(”+(æ»*rs>½(•+(–+(—+(Ô»*JsB½(˜+(Ô»*6(™+(!¼*"(!¼*0SV,{è] {x]{Z {è] {x]{Zoþ s˜ (š+(C  þoC *rsD½(›+(œ+(+(»*JsH½(ž+(»*~ `*0 lW,sJ½(Ÿ+(&°-(Y + (Q; (¶(Y (Z sL½( +¥¶#(+(+(+(ƒ°( ±( ±*0XX,,A (™A (Ѱ(ÿ´{ëYoù²(= (]°(ŵ(Y (Z (Z +(Y (@±*>sC þ(¡+*J(¢+(A±*J(¢+(@±*0Q(y»(»(M»(q -(°+(ã (…°(?±   s³»*0u({»(u (a»(V (2 s2»(»(M»(—°(°{¤^(ã (œ°(…°(,±(?±(=»(0±(4±(a°s³»*0&(9°{˜^(=  (E±*0 -rþGp(_»(—°(4±(0±(a°(=»(G±*0\Y,¥²(v+ sP½(Š+ ( 8 (8 (Ø þ,(œ°(,±(H±(‹ (Z + þ(x+*0¢Z,(^= , (Õ + €(…°(a°(.¼ @_þþ €_þþ _þþ sO¼([ (a°  O ([ (™+(!¼sd¼*0.  +X X 2ôþo C *s C *0=^,(£+ (H" (£+s C o¤+ ( C (C (J+ s C *j(C oíB oíB (C *‚/ þþ+,*2þ**n/+/+sZ *–2þ+,þ+,þþ**0‹c,([½E1Vtd/ {_(( () *te/ {_(( () *tf/ {_ {_ (( () () *tg/{_(( () *0-d,( ( sZ oŽ ( ( Y*FsC þ(¥+*FsC þ(¥+*n{ _(S±{ _(¦+X*0ýe,( ( sZ oŽ ( ( (e°rl^p( Œ’,4u¼,(x ¥|o¡ +o& +rR9p( r™Kp( (e°( rl^p( Œ’,4u¼,(x ¥|o¡ +o& +rR9p( rR^p( *0IÿrŸKp{ _(W±( r^Ãp( { _(§+¥7 r¯Kp(p+(` ( *0Mÿr·Kpsû½{ _(¨+¥7 r¸9p(p+(` ( r‚^p( { _(W±( *0ƒh,sZ oŽ(©+ (C (C (C þ, rÅKps\ zo¬½(V sC (ª+sÿ½(&+(u° sC sC *0^o,sC { _oŽ(«+ (C (C (C þ, r#Lp(>À*sC (ª+{ _( o¬½s¾(¿(x+oðB oìB s¾(&+(u°{ _  (C 9   ( C ([½EÊ$s ¾ (¬+9®  s!C ("C s#C  (­+  ($C   (%C s&C (®+(¯+o'C s(C (°+(z°s)C (¿(±+(ïB (îB  s*C (+C (,C (²+sC *r{Lps\ z ( C td/ (C (C :0{_{ _  (C ,% ( C ([½E !rR9ps\ z(C (C -çs¾+(C (C -Ñs¾( ( (³+(.C  (/C (0C (/C (1C (/C (2C (¯+o'C s3C o4C (¿(j°(ïB (îB  s*C (+C (,C (²+sC *rËLps\ z ( C te/ (C (C -{_8¤þÿÿs¾ (¬+9`þÿÿ  8­ýÿÿs¾ (¬+9Fþÿÿ  8“ýÿÿ0¨p,s5C { _oŽ(«+ (C (C (C þ, rMp(>À*{ _(V s6C (ª+s!¾(&+(u°(t°o'C  s*C (+C (,C (²+s5C *08s,s7C s#¾(°(´+ s8C (µ+þ(¶+*0*t,Ži3"roMp(>À(ѵ(Z (+s9C *, (Õ þ+,o­½(»µ(Z (+s9C *£ï- X (h°9š(g°9|Ži3+£ï-('¶/þþ,s)¾r:Nps:C (·+þo;C *, (Õ þ+,(Z (+s9C *X(Z (+s9C *(Z (+s9C *(Z 8Öþÿÿ0…v,Ži3*/ r¤Nps\ z1X+Í(Y (^± (C s?C (@C *0šy,( 9… ( ( ( ,( (V +  (_±,=(AC (BC (AC (CC (DC 8zÿÿÿþ(¸+*þ(¸+*0{,  (EC (`±*&sFC *sGC *sHC *sIC *sJC *0å|,sZ oŽ ( ( (e°rl^p( Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( r™Kp( (e°( rl^p( Œ’ ,2 u¼,(x ¥|o¡ + o& +rR9p( rR^p( *0 &~,   s5¾ r7Op sO¾(¹+*0˜€,s¨½ sĽ Œ»",+ r¨9ps‚ zŽi ï- Y2%£ï-o®½¤ï-XX3Û (h±ÞtrIOp( (>Àþ*k{0é,(ü·(a°sº(>º(± {«]{¬] (*º3.tÒ. {ˆ] {z] {{] {|]sº((º+{­]{®]{¯]{°]{±](]º{³]{´]{µ]{¶]{·]{¸]{¹]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s º*0‰‚,{v] (ü·{˜^ rà­p(c (±{Ä^ rØp(c (±(X (M (M (>º( ± {«]{¬]{­]{®]{¯]{°]{±](]º{³]{´]{µ]{¶]{·]{¸]{¹]{»]{¼]{½]{¾]{¿]{À]{Á]{Â]s ºr$æp(j±r¿Op{œ^ r}p(c (±{˜^ r×Op(c (±(X (M (M (º+{^(j±rçOp{^ rOmp(c (±(X (M (j±(P (Q (Q (Q (Q *0Wœ&o;³{æY rúåp{˜^(ú°, {Å^+{Ä^(ú°(= (> (> (³(:°(X°*"{i_*0§…,s\¾{ç] {KC oLC (»+ (MC (Ù -rûOp( rGPp( s\ z(MC (Ù (Ù -. (NC (OC {Û]s^¾(¼+sS¾*rûOp( rPp( s\ z0)(£iXsZ ( ( Òsë< *0 þ'(o± (í< (ì< gsî< *0P†,£iXsZ ( ( £iXsZ (  ( b`Ñsï< *0((q± (ð< h(ñ< sò< *0§‡,£iXsZ ( ( £iXsZ (  ( £iXsZ ( ( £iXsZ   (   (  b`b` b` sZ *0ª'(s± ( ( só< *0_ˆ,£iXsZ ( ( £iXsZ (  ( £iXsZ ( ( £iXsZ   (   (   £i XsZ   (   (  £i XsZ ( ( £iXsZ ( ( £iXsZ ( ( jjb`jb` jb`j b`j(b`j0b`j8b`sù< *0‰,(u± (û< (ü< sö< *0*((s± ( ( (€. (. sú< *0$ ((u± (û< (ü< (‚. sý< *06 ((m+  Y 2X£¤X X3æXs= *0.((y± (= (= (W ŽioX s˜ *0ëŠ,£iXsZ ( ( 0sZ * ¿0/_ £iXsZ  b( `( sZ *?_ £iXsZ ( ( £iXsZ ( (  £iXsZ  bb` b` ( ` ( sZ *0ç)({± ( ( (z±*0u‹,£iXsZ ( (  ÿ3sPC *({± (  ( (z±(B (C (c sPC *0MŒ,{e^{h^ -+ (‡ (²o+²(²(i {o^{i^{j^(P²*0°2 þþ+,%Ò¤* €2 ÿ?þþ+,'% €d`Ò¤% ÿ_Ò¤*% Àd`Ò¤%d ÿ_Ò¤%d ÿ_Ò¤% ÿ_Ò¤*0+i % ÿ_Ò¤%c ÿ_Ò¤*0L% ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤%c ÿ_Ò¤*0´%!ÿ_Ò¤%c!ÿ_Ò¤%c!ÿ_Ò¤%c!ÿ_Ò¤% c!ÿ_Ò¤%(c!ÿ_Ò¤%0c!ÿ_Ò¤%8c!ÿ_Ò¤********** * * * * ***************** *0E,(x (y (z ({ rbNpsŠ (1+sf¾ iiiiþ(2+*02h(W o‰ Ži(±(, (- (- ¥íþ(½+*0ÿŽ,(,³3<tŠ- {úY {ëY{èYrïðp(ñ ,{úY %¤*(,³3;tŠ- {úY {ëY{èYr“ïp(ñ ,{úY %¤*(,³3;tŠ- {úY {ëY{èYryïp(ñ , {úY %¤*(,³3>tŠ-{úY {ëY{èYr«ïp(ñ ,{úY %¤*(,³3>tŠ-{úY {ëY{èYr ñp(ñ ,{úY %¤*(,³3?tŠ-{úY {ëY{èYrÇïp(ñ ,{úY % ¤*(,³3?tŠ-{úY {ëY{èYrÆfp(ñ ,{úY % ¤*(,³3?tŠ-{úY {ëY{èYrãïp(ñ ,{úY % ¤*(,³3?tŠ-  {úY {ëY{èYrüfp(ñ , {úY % ¤*(,³3?tŠ-  {úY {ëY{èYràfp(ñ , {úY % ¤*(,³3>tŠ-  {úY {ëY{èYrgp(ñ , {úY %¤*(,³3>tŠ-  {úY {ëY{èYr0gp(ñ , {úY %¤*(,³3?t‹-  {ûY {ëY{èYrÓîp(ñ , {ûY %¤*(,³3At‹-{ûY {ëY{èYrÓðp(ñ ,{ûY %КY(E *(,³3At‹-{ûY {ëY{èYrïîp(ñ ,{ûY %ЛY(E *(,³E K rÍPps\ ztŠ-{úY %МY(E {ëYoý²oþ²(£±þ(º+*t‰-{øY(˜²(n o‘²,{øY{ùY%¤(¤±þ(º+*0k,(,´E />M\l{ŠšÞîΪ¼þ%¤*%¤*%¤*%¤*%¤*%¤*% ¤*%¤*%¤*% ¤*% ¤*%ÐY(E *%ОY(E *%¤*% ¤*% ¤*t¹- {SZ sh¾þ(8+*0n,3{Î^sl *3 {Ê^sl *3 {Ë^sl *3 {Ï^sl *3 {Ì^sl * 3 {Ð^sl * 3 {Í^sl * 3 {Ñ^sl * 3 {Ó^sl * 3 {Ò^sl *3 {Õ^sl *3 {Ô^sl *3 {š^sl *3 {˜^sl *3D(o± (í< (ì< (¦± (t  (s (˜²(³sl *P3 { ^sl *sn¾rCQpsQC (¾+þoRC *0 9‘,(,´E$»Ñï/Lav‹«FXˆÅt«-{EZ %,+¤*tª- {DZ,{DZ(d (£±*%ПY(E *t·- {QZ,ß {QZ(p o4³o5³(£±*t¸-{RZ,­{RZ(ƒ oý²oþ²(£±*t¬-{FZÑ(€±*t­-{GZ%Ò¤*t®-{HZ  Ñ(€±*t¯-{IZ  (±*t°-{JZ  (‚±*t±-{KZ % ¤*t²-{LZ  (€±*t³-{MZ(±*t´-{NZ(‚±*tµ-{OZ({. (|. (±*t¶-{PZ(}. (‚±*t¹-{TZsSC þ(8+*0 Ã’,(,³3@t‹- {ûY {ëY{èYrÓðp(ñ ,{ûY sTC þ(8+*(,³3it‰- (,´3Xt¹- {øY(˜²(n o‘²,2{øY {TZ{ùYsUC þ(8+*(¿+*0 sVC þ(8+*02‡ {Z{Z sˆ¾(8+sz´*^(= (\°(ª±*J{“^rOIp(<°*rÊQp*r*Rp*rHRp*rf•p*r¾•p*ržRp*rþRp*rZSp*J{“^rÊQp(<°*J{“^ržRp(<°*J{“^rHRp(<°*J{“^rf•p(<°*J{“^r¾•p(<°*J{“^rþRp(<°*0%-,{“^ rÅIp([ (\ r*Rp(ô²*0ÿ{“^rZSp(<° (?°(³*v(¬±(= (? (A («±*v(µ±(= (? (A («±*v(·±(= (? (A («±*â(¸±{š^(= (> (c ( ´(? (@ (A («±*ö(¹±{ ^(= (> o;³( ((´(? (@ (A («±*Î(º±(¼±(= (> (´(? (@ (A («±*0(”,{Ü^ ,(WC *(± (( (½*v(¶±(= (? (A («±*0S{“^rÅIp(<°{Ô^{Ô^(= (> (> ( ´( ´(? (@ (@ (A («±*0?•,{Û^ (G: -s޾(u+ (½+ oŠ´(²+(b°*0{«]{¬]{­]{®]{¯]{°]{±]{²]{³]{´]{µ]{¶]{·]{¸]{¹]{º]{»]{¼]{½]{¾]{¿]{À]{Á]{Â](Ʊs º*0 I{Ï]{Ð]{Ñ]{Ò]{Ó]{Ô]{Õ]{Ö]{×]{Ø](ƱsÚº*0[{Ú]{Û]{Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{å]{æ](Ʊsïº*ŠoŠ´(ñ(X (Y (²+(b°*0 I{Ï]{Ð]{Ñ]{Ò]{Ó]{Ô]{Õ]{Ö]{×]{Ø](ʱsÚº*0[{Ú]{Û]{Ü]{Ý]{Þ]{ß]{à]{á]{â]{ã]{ä]{å]{æ](ʱsïº*0#sš¾(8+(x¹*0ro¦¾,3 o©¾+o¦¾ 3 o©¾+o¤¾,.o¤¾]þþ+,o¤¾{Ð_þþ+, o§¾+Àoª¾*0B—,- þ(À+*(б (XC (@ Y(YC +¾0 ž,(,³3RtŠ- {úY {ëY{èYrïðp(ñ ,-{úY (p± (ZC (å= (´ s[C *(,³3WtŠ-{úY {ëY{èYr“ïp(ñ ,0{úY (o±(í< (ì< (´ s[C *(,³3WtŠ-{úY {ëY{èYryïp(ñ ,0{úY (r±  (\C  (æ=   (´ s[C *(,³3WtŠ-  {úY {ëY{èYr«ïp(ñ ,0 {úY (q±  (ñ<  (ð<   (´ s[C *(,³3WtŠ-{úY {ëY{èYr ñp(ñ ,0{úY (s±( ( (´ s[C *(,³3WtŠ-{úY {ëY{èYrÇïp(ñ ,0{úY (t±(õ< (ô< (´ s[C *(,³3WtŠ-{úY {ëY{èYrÆfp(ñ ,0{úY (u±(ü< (û< (´ s[C *(,³3WtŠ-{úY {ëY{èYrãïp(ñ ,0{úY (v±(ø< (÷< (´ s[C *(,³3WtŠ-{úY {ëY{èYrüfp(ñ ,0{úY (x±(]C (ä= ("´ s[C *(,³3WtŠ-{úY {ëY{èYràfp(ñ ,0{úY (w±(^C (ã= ( ´ s[C *(,³3YtŠ-  {úY {ëY{èYrgp(ñ ,2 {úY (q±  (ñ<  (ð<   iÑ(´ s[C *(,³3ftŠ-!!{úY {ëY{èYr0gp(ñ ,?!{úY £iXsZ ( ( þþ( ´ s[C *(,³3Wt‹-""{ûY {ëY{èYrÓîp(ñ ,0"{ûY (}±##(_C #(`C $$( ´ s[C *(,³@´t‹-%%{ûY {ëY{èYrïîp(ñ 9Š%{ûY (}±##(_C #(`C $$,W$&&(d ''s ¾))o¢¾ s[C (Þ,t*r®Sps (ñ+*oe o ++s\ z(*((´ s[C *(,³@‡t‹-,,{ûY {ëY{èYrÓðp(ñ ,`,{ûY (o±(í< (ì<  ÿ3 ($´ s[C * (¦±--(s -(t 8Áùÿÿ(,³@}t‰-..{øY/(˜²0/0(n o‘²,U.{øY/.{ùY1(s±( ( 231411(?  (ϱ(*´ s[C *(,³3((s±( ( (´ s[C *r7Tps\ zUp,0f ,(q ,R (q (  (б (YC  (XC (ѱ(aC (@ (bC scC *(? scC *0 R¡,- þ(Á+*(o± (í< (ì< iTþ (o±(í< (ì< Pi3+Uiþ,þ+,g(|±(B  (C   %,¤o9 £m (Â+   (<°  (?°(³ sl + (¦±(s (t   (|±(B (C  (б(XC   së (dC Y(YC 8®þÿÿ0 Ì¢,{fZ £isZ ( £isZ ( 3þ+- rÊTps\ z{eZ  {Z{Z(ѱ  (bC   (aC   (q±  (ñ<  (ð<  (A i(Ò±sú *0w{“^rÅIp(<°(á²(»±(= (B°(= (> ,+, +`,+`,+`(´(? (@ (A («±*~!`*0J£, uw-- uv--*tw- {Ü_{ÁYþ(Ã+*tv- {Ý_{ÀYþ(Ä+*0Ǥ,(,³E ,\r@N€*t- {Z {Z {æY(Ö±+¥t‰-{ùY +‘tŒ-{üY +êt-{ýY +ÜtŠ-{úY  þ(ر*t‹-{ûY +ètŽ-{þYþ(Ù±*0#ÿ{ëY {æY(Ö±{ìY(ß±*v{ Z(ß±{Zþ(×±*Bsʾþ(—+*01ÿ{Z {æY(Ö±{Z(ß±{Zþ(×±*0$ÿ{Z {æY(Ö±{Zþ(×±*0!Ó+{y] {x] (Û±þ(×±*¦{Z(Û±{Z(×±{Z(ß±*Bs̾þ(™+*0l¥,uÖ-- u×---tÕ- {Zþ(×±*tÖ- {ŽZþ(Þ±*t×- {Z  {Z(ܱ {Zþ(×±*VsξoŠ´þ(x+*Bsоþ(Å+*0J¦,('¶EaººººººººººººººººººººººººººººººººººººººººººººÔººº?Y•ê(ººººº1@O^mº|”¢ø£²ÁÐß6$HZºlº~ººººººººt. {u[ {t[ (Þ±þ(â±*t. {‚[ {[ +Öt.{x[{w[ +¼t.{|[ {z[{{[ (×±(Þ±þ(â±*t.{[ {~[{ Z(ß±{Z(×±þ(â±*tþ-{n[ þ(Þ±*t.{€[ +èt.{”[ +Út.{…[  {Z(ܱ {Zþ(×±*t .{ˆ[ +Ót .{‰[ +Ät .{Š[ +µt .{Œ[ +¦t .{[ +—t.{‘[þ(×±*t.{’[+æt.{•[+×t.{–[+Èt.{™[+¹t.{œ[+ªt.{[+›t.{ž[8‰ÿÿÿt.{Ÿ[8wÿÿÿt.{ [8eÿÿÿt.{¨[8Sÿÿÿt.{¦[8Aÿÿÿt.{ª[8/ÿÿÿt .{¬[8ÿÿÿt!.{­[8 ÿÿÿt".{®[8ùþÿÿt&.{´[8çþÿÿt.  {“[þ(à±**05§,(™·E\y‘tp. {\ {\ Œ»",+ r¨9ps‚ zŽi  Y2£ï-(ã±XX3ã*tq.sÒ¾{ \þ(T+*tr.{ \þ(å±*ts.{\ { \  (å± u{.-"u|.-2 tz.  {\þ(å±* t{.  {\þ(å±* t|. sÔ¾ {\þ(t+*.þ(ä±*ŠsÖ¾{'\(Þ+{(\þ(ä±*B{"\þ(×±*0U¨,(BºE*tÖ. {‘]þ(æ±*t×. {’] {Ý_{e]þ(Ä+*0T©,sؾ{®](¨+{¯](ë±{±] {•]oýB (è±{Â](á±{Á](Ú±*B{n]þ(×±*B{v]þ(×±*BsÚ¾þ(‘+*0_sܾ{Å](‹+{É](Û±{Ê](Û±sÞ¾{Ë](€+sà¾{Ì](+{Í](á±*0!«,sâ¾{Î] {eC ofC þ(’+*0Msä¾{Ò](€+sæ¾{Ó](€+{Õ](×±{×](ß±{Ø](á±*0!­,sè¾{Ù] {gC ohC þ(K+*Bsê¾þ(ï+*Bsì¾þ(ê+*v{è](ݱ{é]þ(Þ±*0¦®,{&^(õ±{^(Ú±{'^(ß±sî¾{(^(‹+{)^¥Ÿ(ì±{,^ {ç] {KC oLC (ñ±{-^o»(ò±{/^(î±{1^(á±{0^(ð±*Vsð¾¥²þ(›+*Vsò¾oî»þ(ì+*0J¯, u/- u/-*t/ {Ý_{O^þ(Ä+*t/ {Ü_{Q^þ(Ã+*jsô¾{Y^oiC þ(+*¾{u^(õ±{„^(ø±sö¾{r^þ(Æ+*r{k^(á±{p^(ö±*0L±, (Ç+(È+sľ (ù±sø¾{Ü_(jC (É+sú¾{Ý_(b (Ê+s¹¾*~"`*~#`*€#`*~$`*€$`**/*Ñ*0|²,%v¤oA %.¤o9 Ži>ü(ü±(kC Ñ ÿÿ^Ñ YÑ (  (lC ( #@[Ñ ÿÿ^ÑYÑ £mr´9p(ñ ,PŽi1 r Ups\ zþ€o& ¤mrS@p(` rS@p( þ€o& ( +EŽi1£mr´9p(ñ +,#þ€o& ¤mrS@p(` ++smC Ži/+ onC Ñ o= (²ooC (²opC (²s, *0Ÿ³,({ (z (y (x (x (y (z ({ 4+þ,*4+þ  , *4+þ  , * 4+ þ  , **0ä´,{Z oþ {Z {)^oºº (} þ,*r:Up( r\Up( {^( s\ zsþ¾ (u+(} ,H(} (} - (~ *r|Up( r¬Up( {^( s\ zr:Up( r Vp( {^( s\ z>{t^sW²*0 µ,`([ o\ ;t`(ýÁ ob Yþs¸ X ob Y  2@(• , o^ 0þþ+, o^ 9þþ+(< X X3À(• +,`(ýÁoL **6€%`~%`&*V( }qC }rC *j{qC {rC osC þo *¾o &}tC }uC svC {uC (Ë+}wC *6{uC oxC *z{tC syC {uC (Ì+szC *z{tC s{C {uC (Ì+szC *0&¶,{wC o|C o}C , þo~C *(Ð **o &**þ(F+*.þ(+*V(ç? }C }€C *0 Jl {C {C oÏ: {€C {€C o‚C ,{€C oƒC +(ú ( o„C *:(…C }†C *0'¶,o‡C sˆC sÇ {†C s‰C (Í+*:(¢* }ŠC *:{ŠC ( *:(¢* }‹C *B{‹C þ(B+*( *s/²**ul-þ*s1²**um-þ*0¸, um-,+*Zr.8psŒC (Î+oC *0£¹,þ9þ9„um-,+ um-,+ 3Zul-,'tl- tl- (y {­Y {­Yþ(h+*tm-tm-(y {®Y{®Yþ(h+*Y**þ,**B¥j-þo!²*0®º,¥j- þ9Ž¥j-þ9~um-,+ um-,+ 3Tul-,%tl- tl- {­Y{­Yþ(h+*tm-tm-{®Y{®Yþ(h+*Y**¥j-þ,**0_»,þ,V ul-,&tl-  ¹y7ž{­Y(i+bcXXX *tm-  ¹y7ž{®Y(i+bcXXX **6(n o$²*0º,þ9‹uj- 9|um-,+ um-,+ 3Tul-,%tl- tl- {­Y{­Yþ(j+*tm-tm-{®Y{®Yþ(j+***þþ*.ul-þ*.um-þ*‚ul-, tl-{­Y*rjVps·2 z‚um-, tm-{®Y*r~Vps·2 z0(¼,um-, tm-{®Y*tl- {­Y(8¿*J(²o+²(²*0•¹,þ9ƒþ9xum-,+ um-,+ 3Pul-,"tl- tl- {­Y {­Yþ(l+*tm-tm-{®Y{®Yþ(l+***þþ*0¸,uj- , þo-²**:(²}­Y*{­Y*:(²}®Y*{®Y*:( }¯Y*2{¯Y{­Y*:( }°Y*2{°Y{®Y*{±Y*{²Y*{³Y*{´Y*{µY*{¶Y*Ò( }±Y}²Y}³Y}´Y}µY}¶Y*0H» þ,7þ,/(y {±Y{±Y( /*1*þ(°**þ,**B¥p-þo>²*0T¾,¥p- þ,7¥p-þ,*{±Y{±Y( /*1*þ(°**¥p-þ,**0µÍþ9© ¹y7ž{¶Y(¾+bcXXX ¹y7ž{µY(Ï+bcXXX ¹y7ž{´YbcXXX ¹y7ž{³Y(Ð+bcXXX ¹y7ž{²Y(Ñ+bcXXX ¹y7ž{±Y , ( +bcXXX **6(n oA²*0¿,þ9‹up- 9|{±Y{±Y(ñ ,g{²Y{²Y(Ò+,Q{³Y{³Y(Ó+,;{´Y{´Y3+{µY{µY(Ô+,{¶Y{¶Yþ(Á+*******þþ*0•þ9ƒþ9x{±Y{±Y(ñ ,c{²Y{²Y(Õ+,N{³Y{³Y(Ö+,9{´Y{´Y3){µY{µY(×+,{¶Y{¶Yþ(\+*******þþ*0¿,up- , þoD²**žo &}·Y(°{·YoC }¸Y*6{·Y{±Y*6{·Y{²Y*6{·Y{³Y*6{·Y{´Y*6{·Y{µY*6{·Y{¶Y*"{¸Y*"{¸Y*V(Ø+{¸Y{¸Yþ*Rs=²sF²*0€À,o 9 o= ÑooC ÑopC ÑoC Ñs, (~ o‘C , þ, Žiþ+,+ (²(i o’C þoI (P²*0ÐÁ,ds% {·Y{±Y o˜ {·Y{µY 9— (} (x (} (y (} (z (} ({ ržVpo˜ i  Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p o˜ rS@po˜ i  Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p o˜ rS@po˜ i  Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p o˜ rS@po˜ i  Œ’  ,4 u¼  ,   (x ¥|o¡ +   o& +rR9p o˜ r´Vpo˜ {·Y{¶Y,(d o˜ + rÊVpo˜ rÚVpo˜ {·Y{³Y,k(L9 o+² +E £(“C [(°o"@ (“C ](°o"@  X  Ži2³+ràBpo˜ +þo& *0.(Ø+{¸Y {¸Y /*þ*{¹Y*{ºY*{»Y*r( }¹Y}ºY}»Y*0!þ9yþ9n(y {¹Y{¹Y( /*1*(y {ºY {ºY /+ þ /*1*(y {»Y{»Yþ(g+**þ,**B¥r-þoX²*0‹Â,¥r- þ9k¥r-þ,^{¹Y{¹Y( /*1*{ºY {ºY /+ þ /*1*{»Y{»Yþ(g+**¥r-þ,**0aÍþ,X ¹y7ž{»Y(Ñ+bcXXX ¹y7ž{ºYbcXXX ¹y7ž{¹Y , ( +bcXXX **6(n o[²*0UÃ,þ,Fur- ,:{¹Y{¹Y(ñ ,%{ºY{ºY3{»Y{»Yþ(Ò+****þþ**sW²*"{¹Y*"{ºY*"{»Y*0Pþ,Aþ,9{¹Y{¹Y(ñ ,${ºY{ºY3{»Y{»Yþ(Õ+****þþ*0Ã,ur- , þob²**.s}²€¼Y*( *~¼Y**uu-þ*s~²**uv-þ*s€²**uw-þ*0œ& uw-,+ uv-,+*Zr.8ps”C (Ù+o•C *0ÖÄ,þ9Âþ9·  uw-,+  uv-,+   uw-,+  uv-,+ 3u  uv--  uw--5*tv- tv- (y {ÀY {ÀYþoZ²*tw-tw-(y {ÁY{ÁYþ(Ú+*Y**þ,**B¥s-þon²*0ÝÅ,¥s- þ9½¥s-þ9­  uw-,+  uv-,+   uw-,+  uv-,+ 3k  uv--  uw--/*tv- tv- {ÀY{ÀYþoZ²*tw-tw-{ÁY{ÁYþ(Ú+*Y**¥s-þ,**0uÆ,þ,l  uu-- uv-- uw--* *tv-  ¹y7ž{ÀYo[²bcXXX *tw-  ¹y7ž{ÁY(Û+bcXXX **6(n oq²*0ÌÅ,þ9ºus- 9«  uw-,+  uv-,+   uw-,+  uv-,+ 3k  uv--  uw--/*tv- tv- {ÀY{ÀYþo]²*tw-tw-{ÁY{ÁYþ(Ü+***þþ*.uu-þ*.uv-þ*.uw-þ*‚uv-, tv-{ÀY*rþVps\ z‚uw-, tw-{ÁY*r,Wps\ z0šÇ,uv--uw--$rR9p*tv-{ÀY r`Wp{¹Y( *tw- {ÁY {·Y{±YrùEp(ñ , {ÁY rR9p*uw-,tw- {ÁYþoR²*rpWp $só z0MÈ, uv-- uw--&rR9p*tv- {ÀY r`Wp{¹Y( *tw- {ÁYþoR²*0¼É,þ9ªþ9Ÿuw-,+ uv-,+ uw-,+ uv-,+ 3_uv-- uw--$*tv- tv- {ÀY {ÀYþob²*tw-tw-{ÁY{ÁYþ(Ý+***þþ*0œ&us- , þo{²**(e²*:(e²}ÀY*{ÀY*:(e²}ÁY*{ÁY*:( }ÂY*:( }ÃY*2{ÃY{ÀY*:( }ÄY*2{ÄY{ÁY*sˆ²*:( }ÅY*{ÅY*&*Zr.8ps–C (Þ+o—C *0@Ê,þ,/þ,'&  (y {ÅY {ÅY þo˜C **þ,**:¥{-oŒ²*0KË,¥{- þ,.¥{-þ,!&  {ÅY {ÅY þo˜C **¥{-þ,**0.Ì,þ,% &  ¹y7ž{ÅYo™C bcXXX **6(n o²*0<Ë,þ,-u{- ,!&  {ÅY {ÅY þošC **þþ*>{ÅYþo *(˜²*0.Í,3(˜²*(V  s³- (ß+(H+(‡²*01Î,þ,"þ,&  {ÅY{ÅYþ(à+**þþ*0Ï,u{- , þo•²***o &*nþ~ÇY/ ( +~ÆY*6€%`~%`&*0Cs›²€ÉYs›²€ÊYs›²€ËYs›²€ÌYs›²€ÍYs›²€ÎY*:( }ÈY*~ÉY**(¨²þ*~ÊY**(¨²þ*~ËY**(¨²þ*~ÌY**(¨²þ*~ÍY**(¨²þ*~ÎY**(¨²þ*{ÈY*Zr.8ps›C (á+oœC *01.þ, þ,{ÈY {ÈY 3*Y**þ,**:¥}-oª²*0BÐ,¥}- þ,%¥}-þ,{ÈY {ÈY 3*Y**¥}-þ,**0Fþ,= (¨²E  * * * * * **6(n o­²*0.Ð,þ,u}- ,{ÈY {ÈY þ**þþ*0*.þ,þ,{ÈY {ÈY þ**þþ*0\+u}- ,o°²**Šs³²€ÖYs³²€×Ys³²€ØY*:( }ÕY*~ÖY**(º²þ*~×Y**(º²þ*~ØY**(º²þ*{ÕY*Zr.8psC (â+ožC *01.þ, þ,{ÕY {ÕY 3*Y**þ,**:¥-o¼²*0BÑ,¥- þ,%¥-þ,{ÕY {ÕY 3*Y**¥-þ,**0.þ,% (º²E * * **6(n o¿²*0.Ñ,þ,u- ,{ÕY {ÕY þ**þþ*0*.þ,þ,{ÕY {ÕY þ**þþ*0Ò,u- ,o²**"sŲ*V( }ÜY}ÝY*{ÜY*{ÝY*&*Zr.8psŸC (ã+o C *0mÓ,þ,\þ,T&  (y {ÜY{ÜY o¾² /*1*(y {ÝY{ÝY o¬²**þ,**:¥-oʲ*0rÔ,¥- þ,U¥-þ,H&  {ÜY{ÜYo¾² / * 1 *{ÝY{ÝYo¬²**¥-þ,**0IÕ,þ,@ &  ¹y7ž{ÝYo­²bcXXX ¹y7ž{ÜYo¿²bcXXX **6(n oͲ*0XÖ,þ,Iu- ,=&  {ÜY {ÜY oÁ²,{ÝY{ÝYo¯²***þþ*"{ÜY*"{ÝY*B{ÜY(º²þ*B{ÜY(º²þ*B{ÜY(º²þ*(Ú²*(Û²*0D×,þ,5þ,-&  {ÜY{ÜYo²,{ÝY{ÝYo°²***þþ*0ÿu- ,oײ***o &*nþ~àY/ ( +~ÞY*nþ~àY/ ( +~ßY*6€%`~%`&*^sÞ²€âYsÞ²€ãY*:( }áY*~âY**(ã²þ*~ãY**(ã²þ*{áY*Zr.8ps¡C (ä+o¢C *01.þ, þ,{áY {áY 3*Y**þ,**:¥ƒ-oå²*0BØ,¥ƒ- þ,%¥ƒ-þ,{áY {áY 3*Y**¥ƒ-þ,**0þ, (ã²3 * **6(n oè²*0.Ø,þ,uƒ- ,{áY {áY þ**þþ*0*.þ,þ,{áY {áY þ**þþ*0Ù,uƒ- ,oë²**{æY*{çY*{èY*{éY*{êY*"}êY*²( }æY}çY}èY}éY}êY*0 >(þ oq²Z(þ od eZb, ( +/Zbaasó²*"{æY*"{çY*"{èY*"{éY*0=Ú,{ìYoþ E( ³*{êY Œ‡-,*( ³ (ò²*"{éY*0pÛ,(å+ {éY{éY3{æY {æY (n os²+,{èY{èY(ñ +,{çY {çY (n þoe **03ÿ{çY{èY([ (\ (Ÿ+¥7 rS@p(p+(` *03ÿ{çY{èY([ (\ (Ÿ+¥7 r¨Åp(p+(` *0D({æYoz² rR9p(ñ ,*([ (\ (\ ¥7 rz.p(p+(` *:oý²oþ²*0KÜ,oý² {æYoy² rR9p(ñ ,*([ (\ (\ ¥7 rz.p(p+(` *"oü²*0kÝ,(å+ {éY {éY  /+ þ ,*{æY{æYon² ,*{èY{èY( , *{çY{çYþo´0 *{ëY*{ìY*V( }ëY}ìY*0[Þ,þ,Jþ,B(y {ëY{ëY(R+ /*1*(y {ìY {ìY  þo¾ **þ,**:¥†-o³*0bß,¥†- þ,E¥†-þ,8{ëY{ëY(R+ /*1*{ìY {ìY  þo¾ **¥†-þ,**0Cþ,: ¹y7ž{ìYo¿ bcXXX ¹y7ž{ëY(Í+bcXXX **6(n o ³*0Jà,þ,;u†- ,/{ëY{ëY(Î+,{ìY {ìY þoÀ ***þþ*"{ëY*6{ëY{æY*6{ëY{çY*6{ëY{èY*"{ìY*&s³*Æ{ëYo& {ìY(q þ,rR9p+rüBp( *0a({ëYoý² {ìY(q þ,*rÞFp( sy³{ìY(æ+¥7 r:p(p+(` ( râFp( *:{ëYoþ²*6{ëYoü²*0@þ,1þ,){ëY{ëY(Ð+,{ìY{ìYþ(+***þþ*02,u†- , þo³**2s³€îY*:( }íY*~îY**(,³þ*"s?³**(,³þ*sB³**(,³þ*sD³**(,³þ*sF³**(,³þ*sH³**(,³þ*sJ³**(,³þ*sL³**(,³þ*&sN³**(,³þ*{íY*Zr.8ps¤C (ç+o¥C *0´á,þ9 þ9•{íY {íY @|(,³E ižÓ Ax°*t‰- t‰- (y {øY {øYo޲/*1*(y {ùY {ùY  þo0³*tŠ- tŠ- (y  {úY  {úY   o³*t‹-t‹-(y {ûY {ûY   o³*tŒ-tŒ-(y {üY{üY  þo0³*t-t-(y {ýY{ýY  þo0³*tŽ-tŽ-(y {þY{þYþos³*t-t-(y {ÿY{ÿY4*þ*t-t-(y {Z{Z/+þ/*1*(y {Z{Z(R+  / * 1 *(y {Z{Z  þo0³*Y**þ,**B¥‡-þo.³*0‚â,¥‡- þ9b¥‡-þ9R{íY {íY @9(,³E _Œ¹ëL}*t‰- t‰- {øY{øYo޲/*1* {ùY{ùY  8>ÿÿÿtŠ- tŠ-  {úY  {úY   o³*t‹-t‹-{ûY {ûY   o³*tŒ-tŒ-{üY{üY  8²þÿÿt-t-{ýY{ýY  8€þÿÿtŽ-tŽ-{þY{þYþos³*t-t-{ÿY{ÿY4*þ*t-t-{Z{Z/+þ/*1*{Z{Z(R+  / * 1 *{Z{Z  8“ýÿÿY**¥‡-þ,**0Èã,þ9¼ (,³E Ek‘¹á 1 *t‰-  ¹y7ž{ùYo1³bcXXX ¹y7ž{øYo²bcXXX *tŠ-  ¹y7ž{úYo ³bcXXX *t‹-  ¹y7ž {ûYo ³bcXXX *tŒ- ¹y7ž{üYo1³bcXXX *t- ¹y7ž{ýYo1³bcXXX *tŽ- ¹y7ž{þYot³bcXXX *t- ¹y7ž{ÿY(L+bcXXX *t- ¹y7ž{Zo1³bcXXX ¹y7ž{Z(Í+bcXXX ¹y7ž{ZbcXXX **6(n o1³*0"ä,þ9u‡- 9{íY {íY @ê(,³E Q~«Ý>_*t‰- t‰- {øY{øYo‘²,! {ùY{ùY8Wÿÿÿ*tŠ- tŠ-  {úY  {úY   o ³*t‹- t‹- {ûY {ûY   o ³*tŒ-tŒ-{üY{üY8Éþÿÿt-t-{ýY{ýY8—þÿÿtŽ-tŽ-{þY{þYþov³*t-t-{ÿY{ÿYþ*t-t-{Z{Z3:{Z{Z(Î+,"{Z{Z8ïýÿÿ****þþ*09å,(,³E ão¿ÔéôÿYt- {ÿY rntpŒ€ ,/u¼ , (x ¥|o¡ +o& +rR9p( *t-{Z8bÿÿÿt‰-{ùY{øY{ÅY o4³rÞFp( , o Ys ( râFp( *tŠ-{úY  o³*t‹-{ûY +ér,¬p*r1Xps\ zraXps\ zrXps\ z0­æ,(,³E R+D]hs*t- {Z+ºt‰- {ùY+¦tŠ-{úY {ëYoþ²*t‹-{ûY +år,¬ps\ zr1Xps\ zraXps\ zrXps\ z:o4³o5³*0Îç,þ9¼þ9±{íY {íY @š(,³E :`†­Ôú*t‰- t‰- {øY {øYo•²,{ùY {ùY8rÿÿÿ*tŠ-tŠ-{úY{úYþo³*t‹-t‹-{ûY{ûYþo³*tŒ-tŒ- {üY {üY8ýþÿÿt- t-  {ýY {ýY8ÖþÿÿtŽ- tŽ-  {þY {þYþow³*t-t-{ÿY{ÿYþ*t-t-{Z{Z3.{Z{Z(Ð+,{Z{Z8Cþÿÿ****þþ*0õu‡- , þo7³**0W2,(,³E  rÏXps·2 zt‹-{ûY *tŠ-{úY +ð0G(,³E  rÏXps·2 z(ß²*(á²*0\2,(,³E  rÏXps·2 zt‹-{ûY {ëY*tŠ-{úY +ëÒ(,³E **0W2,(,³E (°*t‹-{ûY {ìY*tŠ-{úY +ë.(,³þ*Z(³}øY}ùY*{øY*{ùY*>(³}úY*{úY*>(³}ûY*{ûY*>(³}üY*{üY*>(³}ýY*{ýY*>(³}þY*{þY*>(³}ÿY*{ÿY*v(³}Z}Z}Z*{Z*{Z*{Z*:( }Z*2{Z{øY*2{Z{ùY*:( }Z*2{Z{úY*:( }Z*2{Z{ûY*:( }Z*2{Z{üY*:( }Z*2{Z{ýY*:( }Z*2{Z{þY*:( } Z*2{ Z{ÿY*:( } Z*2{ Z{Z*2{ Z{Z*2{ Z{Z*sf³*:( } Z*{ Z*&*Zr.8ps¦C (è+o§C *"{ Z*0#é,u™- , { Z{ Zþ(ð+**0,é,u™- , { Z{ Zþ(é+*rõXps·2 z{ Z*{ Z*{Z*r( } Z} Z}Z*0ê,þ9‰þ9~(y { Z { Z  o̲ /*1*(y { Z{ Zo¾ /*1*(y {Z{Zþo0³**þ,**B¥š-þoq³*0™ë,¥š- þ9y¥š-þ,l{ Z { Z  o̲ /*1*{ Z{ Zo¾ /*1*{Z{Zþo0³**¥š-þ,**0^þ,U ¹y7ž{Zo1³bcXXX ¹y7ž{ Zo¿ bcXXX ¹y7ž{ ZoͲbcXXX **6(n ot³*0nì,þ,_uš- ,S{ Z { Z oϲ,9{ Z { Z oÀ ,{Z{Zþo3³****þþ*0Uþ,Fþ,>{ Z{ Zoײ,){ Z{ Z(+,{Z{Zþo7³****þþ*0í,uš- , þow³**(©C *rrÞFpo6³( râFp( *{Z*{Z*{Z*{Z*{Z*{Z*Ò( }Z}Z}Z}Z}Z}Z*0$î,þ9þ9(y {Z{Z(R+ /*1*(y {Z {Z o̲ /*1*(y {Z{Z/+þ/*1*(y {Z{Z( /*1*(y {Z{Z  o¾ /*1*(y {Z {Z   þo0³**þ,**B¥œ-þo‚³*0ï,¥œ- þ9ó¥œ-þ9ã{Z{Z(R+ /*1*{Z {Z o̲ /*1*{Z{Z/+þ/*1*{Z{Z( /*1*{Z{Z  o¾ /*1*{Z {Z   þo0³**¥œ-þ,**0µÍþ9© ¹y7ž{Zo1³bcXXX ¹y7ž{Zo¿ bcXXX ¹y7ž{Z , ( +bcXXX ¹y7ž{ZbcXXX ¹y7ž{ZoͲbcXXX ¹y7ž{Z(Í+bcXXX **6(n o…³*0²ð,þ9 uœ- 9‘{Z{Z(Î+9x{Z {Z oϲ,^{Z{Z3N{Z{Z(ñ ,9{Z {Z oÀ ,{Z{Zþo3³*******þþ*"{Z*"{Z*"{Z*"{Z*>{Zþoþ *"{Z*"{Z*f{Z{Z{Zsp³*>s³*²{Zo& rKp( {Z( rYp( *0•þ9ƒþ9x{Z{Z(Ð+,c{Z{Zoײ,N{Z{Z3>{Z{Z(ñ ,){Z{Z(+,{Z{Zþo7³*******þþ*0Guœ- , þo’³**{Z*{Z*{Z*r( }Z}Z}Z*0ñ,þ,pþ,h(y {Z{Z(R+ /*1*(y {Z{Z( /*1*(y {Z {Z þo0³**þ,**B¥-þo˜³*0‚ò,¥- þ,e¥-þ,X{Z{Z(R+ /*1*{Z{Z( /*1*{Z {Z þo0³**¥-þ,**0gÍþ,^ ¹y7ž{Zo1³bcXXX ¹y7ž{Z , ( +bcXXX ¹y7ž{Z(Í+bcXXX **6(n o›³*0_ó,þ,Pu- ,D{Z{Z(Î+,.{Z{Z(ñ ,{Z {Z þo3³****þþ*Š{Zo& rKp( {Z( *0Uþ,Fþ,>{Z{Z(Ð+,){Z{Z(ñ ,{Z{Zþo7³****þþ*0ô,u- , þoŸ³**{Z*{Z*{Z*r( }Z}Z}Z*0õ,þ9‰þ9~(y {Z {Z  o„³ /*1*(y {Z{Zo0³/*1*(y {Z{Zþo¾ **þ,**:¥ž-o¥³*0™ö,¥ž- þ9y¥ž-þ,l{Z {Z  o„³ /*1*{Z{Zo0³/*1*{Z{Zþo¾ **¥ž-þ,**0^þ,U ¹y7ž{Zo¿ bcXXX ¹y7ž{Zo1³bcXXX ¹y7ž{Zo…³bcXXX **6(n o¨³*0n÷,þ,_už- ,S{Z {Z o‡³,9{Z {Z o3³,{Z{ZþoÀ ****þþ**s¤³*"{Z*"{Z*"{Z*6{Z{Z*6{Z{Z*6{Z{Z*6{Z{Z*6{Z{Z*^{Zo& rYp( *0Uþ,Fþ,>{Z{Zo’³,){Z{Zo7³,{Z{Zþ(+****þþ*0ø,už- , þoµ³**{Z*{Z*V( }Z}Z*0eù,þ,Tþ,L(y {Z {Z  oš³ /*1*(y {Z{Zþo0³**þ,**B¥Ÿ-þoº³*0jú,¥Ÿ- þ,M¥Ÿ-þ,@{Z {Z  oš³ /*1*{Z{Zþo0³**¥Ÿ-þ,**0Cþ,: ¹y7ž{Zo1³bcXXX ¹y7ž{Zo›³bcXXX **6(n o½³*0Pû,þ,AuŸ- ,5{Z {Z o³,{Z {Z þo3³***þþ*6{Z{Z*6{Z{Z*6{Z{Z*>{Zþo& *0@þ,1þ,){Z{ZoŸ³,{Z{Zþo7³***þþ*0ü,uŸ- , þoij**z{Zo=³{Z{Z(ÿ°*Šsȳ€Zsȳ€Zsȳ€ Z*:( }Z*~Z**(ϳþ*~Z**(ϳþ*~ Z**(ϳþ*{Z*Zr.8psªC (ê+o«C *01.þ, þ,{Z {Z 3*Y**þ,**:¥ -oѳ*0Bþ,¥ - þ,%¥ -þ,{Z {Z 3*Y**¥ -þ,**0.þ,% (ϳE * * **6(n oÔ³*0.þ,þ,u - ,{Z {Z þ**þþ*0*.þ,þ,{Z {Z þ**þþ*0ÿ,u - ,o׳**{$Z*{%Z*{&Z*{'Z*’( }$Z}%Z}&Z}'Z*0 -þ9Œþ9(y {$Z{$Z(g+ /*1*(y {%Z{%Z(g+ /*1*(y {&Z{&Z(g+ /*1*(y {'Z{'Z( **þ,**:¥¢-oÞ³*0Ÿ-¥¢- þ9¥¢-þ9o{$Z{$Z(g+ /*1*{%Z{%Z(g+ /*1*{&Z{&Z(g+ / * 1 *{'Z{'Z( **¥¢-þ,**0‚Íþ,y ¹y7ž{'Z , ( +bcXXX ¹y7ž{&Z(Ñ+bcXXX ¹y7ž{%Z(Ñ+bcXXX ¹y7ž{$Z(Ñ+bcXXX **6(n oá³*0op þ,`u¢- ,T{$Z{$Z(Ò+,>{%Z{%Z(Ò+,({&Z{&Z(Ò+,{'Z{'Z(ñ *****þþ*.sݳ*"{$Z*"{%Z*"{&Z*"{'Z*0hþ,Yþ,Q{$Z{$Z(Õ+,<{%Z{%Z(Õ+,'{&Z{&Z(Õ+,{'Z{'Z(ñ *****þþ*0p u¢- ,oé³**{(Z*{)Z*{*Z*{+Z*{,Z*²( }(Z})Z}*Z}+Z},Z*0K-þ,:þ,2(y {(Z {(Z  oà³ /*1*(°**þ,**:¥£-oñ³*0V-¥£- þ,9¥£-þ,,{(Z {(Z  oà³ /*1*(°**¥£-þ,**0|þ,s ¹y7ž{,ZbcXXX ¹y7ž{+ZbcXXX ¹y7ž{*ZbcXXX ¹y7ž{)ZbcXXX ¹y7ž{(Zoá³bcXXX **6(n oô³*0t-þ,eu£- ,Y{(Z {(Z oã³,?{)Z{)Z3/{*Z{*Z3{+Z{+Z3{,Z{,Zþ******þþ*6sð³*"{(Z*"{)Z*"{*Z*"{+Z*"{,Z*07E'rw psŠ (1+ s´{)Z{*Z{+Z{,Zþ(2+*0kþ,\þ,T{(Z{(Zoé³,?{)Z{)Z3/{*Z{*Z3{+Z{+Z3{,Z{,Zþ******þþ*0-u£- ,oþ³**:(Ó }-Z*B{-Zþo  *:(Ù }.Z*0¸{.ZoÚ s´*:( }/Z*0º{/ZoŽ s´*:( }0Z*0B {0Zo s´*6 s ´€2Z*:( }1Z*s6´**(,´þ*s8´**(,´þ*s:´**(,´þ*s<´**(,´þ*s>´**(,´þ*s@´**(,´þ*sB´**(,´þ*sD´**(,´þ*sF´**(,´þ*sH´*.(,´ þ*sJ´*.(,´ þ*sL´*.(,´ þ*sN´*.(,´ þ*~2Z*.(,´ þ*sP´*.(,´þ*sR´*.(,´þ*"sT´*.(,´þ*{1Z*Zr.8ps¬C (ë+o­C *0M -þ99þ9.{1Z {1Z @(,´E)a™Ñ Ay±é!Y®.Y*tª- tª- (y {DZ {DZþ([+*t«-t«-(y {EZ{EZ/*þ*t¬- t¬- (y  {FZ  {FZ   4*  þ*t­- t­-(y  {GZ{GZ/*þ*t®-t®-(y {HZ{HZ/*þ*t¯-t¯-(y {IZ{IZ/*þ*t°-t°-(y {JZ{JZ/*þ*t±-t±-(y {KZ{KZ  4* þ*t²-!t²-"(y !{LZ#"{LZ$#$4*#$þ*t³-%t³-&(y %{MZ'&{MZ('(4*'(þ*t´-)t´-*(y ){NZ+*{NZ,+,4*+,þ*tµ--tµ-.(y -{OZ/.{OZ0/0þ,*/0þ,*/0þ,*/0þ(H+*t¶-1t¶-2(y 1{PZ32{PZ434þ,*34þ,*34þ,*34þ(I+*t·-5t·-6(y 5{QZ6{QZþ(S+*t¸-7t¸-8(y 7{RZ8{RZþ(ì+*t¹-9t¹-:(y 9{SZ;:{SZ<;<o0³/*1*(y 9{TZ=:{TZ>=>þo®C *Y**þ,**B¥¨-þo.´*0î -¥¨- þ9Î¥¨-þ9¾{1Z {1Z @¥(,´E'X‰ºëM~¯à^«Òù*tª- tª- {DZ{DZþ([+*t«-t«-{EZ{EZ/*þ*t¬- t¬-  {FZ  {FZ   4*  þ*t­- t­- {GZ{GZ/*þ*t®-t®-{HZ{HZ/*þ*t¯-t¯-{IZ{IZ/*þ*t°-t°-{JZ{JZ/*þ*t±-t±-{KZ{KZ  4* þ*t²-!t²-"!{LZ#"{LZ$#$4*#$þ*t³-%t³-&%{MZ'&{MZ('(4*'(þ*t´-)t´-*){NZ+*{NZ,+,4*+,þ*tµ--tµ-.-{OZ/.{OZ0/0þ,*/0þ,*/0þ,*/0þ(H+*t¶-1t¶-21{PZ32{PZ434þ,*34þ,*34þ,*34þ(I+*t·-5t·-65{QZ6{QZþ(S+*t¸-7t¸-87{RZ8{RZþ(ì+*t¹-9t¹-:9{SZ;:{SZ<;<o0³/*1*9{TZ=:{TZ>=>þo®C *Y**¥¨-þ,**0ç -þ9Û (,´E&Fl”¼Þ(PsœÅîóEtª-  ¹y7ž{DZ(¾+bcXXX *t«-  ¹y7ž{EZbcXXX *t¬-  ¹y7ž {FZ(P+bcXXX *t­- ¹y7ž{GZ(J+bcXXX *t®- ¹y7ž{HZ(K+bcXXX *t¯- ¹y7ž{IZbcXXX *t°- ¹y7ž{JZ(;+bcXXX *t±- ¹y7ž{KZbcXXX *t²-  ¹y7ž {LZ(L+bcXXX *t³-  ¹y7ž {MZbcXXX *t´-  ¹y7ž {NZ(M+bcXXX *tµ-  ¹y7ž {OZ(N+bcXXX *t¶-  ¹y7ž {PZ(O+bcXXX * *t·- ¹y7ž{QZ(Ì+bcXXX *t¸- ¹y7ž{RZ(í+bcXXX *t¹- ¹y7ž{TZo¯C bcXXX ¹y7ž{SZo1³bcXXX **6(n o1´*0× -þ9Åu¨- 9¶{1Z {1Z @Ÿ(,´E'HiŠ«Ìí/Pq’³Ú*tª- tª- {DZ{DZþ(Á+*t«-t«-{EZ{EZþ*t¬-t¬-{FZ{FZþ*t­- t­-  {GZ {GZþ*t®- t®-  {HZ {HZþ*t¯- t¯- {IZ{IZþ*t°-t°-{JZ{JZþ*t±-t±-{KZ{KZþ*t²-t²-{LZ{LZþ*t³-t³-{MZ{MZþ*t´-t´-{NZ{NZþ*tµ-tµ-{OZ{OZþ*t¶-t¶-{PZ{PZþ*t·-t·-{QZ{QZþ(Ï+*t¸-t¸- {RZ {RZþ(î+*t¹-!t¹-"!{SZ#"{SZ$#$o3³,!{TZ%"{TZ&%&þo°C ****þþ*0ü -þ9êþ9ß{1Z {1Z @È(,´E$Ef‡¨Éê ,Mn¯ð<*tª- tª- {DZ {DZþ(\+*t«-t«-{EZ{EZþ*t¬-t¬-{FZ{FZþ*t­-t­- {GZ {GZþ*t®- t®-  {HZ {HZþ*t¯- t¯-  {IZ {IZþ*t°-t°-{JZ{JZþ*t±-t±-{KZ{KZþ*t²-t²-{LZ{LZþ*t³-t³-{MZ{MZþ*t´-t´-{NZ{NZþ*tµ-tµ-{OZ{OZ. þþ+,*þ*t¶-t¶-{PZ{PZ. þþ+,*þ*t·- t·-! {QZ!{QZþ(Ò+*t¸-"t¸-#"{RZ#{RZþ(ï+*t¹-$t¹-%${SZ%{SZo7³,${TZ%{TZþ(ð+****þþ*0-u¨- , þo4´**>( ´}DZ*{DZ*>( ´}EZ*{EZ*>( ´}FZ*{FZ*>( ´}GZ*{GZ*>( ´}HZ*{HZ*>( ´}IZ*{IZ*>( ´}JZ*{JZ*>( ´}KZ*{KZ*>( ´}LZ*{LZ*B ( ´}MZ*{MZ*B ( ´}NZ*{NZ*B ( ´}OZ*{OZ*B ( ´}PZ*{PZ*B( ´}QZ*{QZ*B( ´}RZ*{RZ*^( ´}SZ}TZ*{SZ*{TZ*:( }UZ*2{UZ{DZ*:( }VZ*2{VZ{EZ*:( }WZ*2{WZ{FZ*:( }XZ*2{XZ{GZ*:( }YZ*2{YZ{HZ*:( }ZZ*2{ZZ{IZ*:( }[Z*2{[Z{JZ*:( }\Z*2{\Z{KZ*:( }]Z*2{]Z{LZ*:( }^Z*2{^Z{MZ*:( }_Z*2{_Z{NZ*:( }`Z*2{`Z{OZ*:( }aZ*2{aZ{PZ*:( }bZ*2{bZ{QZ*:( }cZ*2{cZ{RZ*:( }dZ*2{dZ{SZ*2{dZ{TZ*{eZ*{fZ*V( }eZ}fZ*0[-þ,Jþ,B(y {eZ {eZ  o§³ /*1*(y {fZ{fZþ(h+**þ,**B¥Ê-þo{´*0b-¥Ê- þ,E¥Ê-þ,8{eZ {eZ  o§³ /*1*{fZ{fZþ(h+**¥Ê-þ,**0Cþ,: ¹y7ž{fZ(i+bcXXX ¹y7ž{eZo¨³bcXXX **6(n o~´*0J-þ,;uÊ- ,/{eZ {eZ oª³,{fZ{fZþ(j+***þþ*0@þ,1þ,){eZ{eZoµ³,{fZ{fZþ(l+***þþ*0-uÊ- , þo´**( *s‹´**uÍ-þ*s´**uÎ-þ*0Æ+ uÎ-,+*Zr.8ps±C (ñ+o²C *0(-uÎ-, tÎ-{jZ*tÍ- {iZo³C *:(ƒ´}iZ*{iZ*:(ƒ´}jZ*{jZ*:( }kZ*2{kZ{iZ*:( }lZ*2{lZ{jZ*0 s”´€nZs”´€oZs”´€pZs”´€qZs”´€rZs”´€sZs”´€tZs”´€uZs”´€vZ s”´€wZ s”´€xZ s”´€yZ s”´€zZ s”´€{Z*:( }mZ*~nZ**(±´þ*~oZ**(±´þ*~pZ**(±´þ*~qZ**(±´þ*~rZ**(±´þ*~sZ**(±´þ*~tZ**(±´þ*~uZ**(±´þ*~vZ**(±´þ*~wZ*.(±´ þ*~xZ*.(±´ þ*~yZ*.(±´ þ*~zZ*.(±´ þ*~{Z*.(±´ þ*{mZ*Zr.8ps´C (ò+oµC *01.þ, þ,{mZ {mZ 3*Y**þ,**:¥Ñ-o³´*0B-¥Ñ- þ,%¥Ñ-þ,{mZ {mZ 3*Y**¥Ñ-þ,**0Žþ9‚ (±´E  $).38 * * * * * * * * * * * * * **6(n o¶´*0.-þ,uÑ- ,{mZ {mZ þ**þþ*0*.þ,þ,{mZ {mZ þ**þþ*0-uÑ- ,o¹´**( *sÌ´**uÕ-þ*sδ**uÖ-þ*sд**u×-þ*0- u×-,+ uÖ-,+*Zr.8ps¶C (ó+o·C *0!-þ9 þ9u×-,+ uÖ-,+ u×-,+ uÖ-,+ @½uÕ--uÖ--<u×--htÕ- tÕ- (y {Z {Zþo0³*tÖ-tÖ-(y {ŽZ {ŽZ   o§³*t×- t×- (y  {Z  {Z þo¼³*Y**þ,**B¥Ó-þoÄ´*0-¥Ó- þ9ü¥Ó-þ9ìu×-,+ uÖ-,+ u×-,+ uÖ-,+ @§uÕ--uÖ--6u×--ZtÕ- tÕ- {Z{Zþo0³*tÖ-tÖ-{ŽZ {ŽZ   o§³*t×- t×-  {Z  {Z þo¼³*Y**¥Ó-þ,**0ž-þ9’ uÕ--uÖ--/u×--LtÕ-  ¹y7ž{Zo1³bcXXX *tÖ-  ¹y7ž{ŽZo¨³bcXXX *t×-  ¹y7ž {Zo½³bcXXX **6(n oÇ´*0 -þ9ùuÓ- 9êu×-,+ uÖ-,+ u×-,+ uÖ-,+ @§uÕ--uÖ--6u×--ZtÕ- tÕ- {Z{Zþo3³*tÖ-tÖ-{ŽZ {ŽZ   oª³*t×- t×-  {Z  {Z þo¿³***þþ*0ì-þ9Úþ9Ïu×-,+ uÖ-,+   u×-,+  uÖ-,+ @Œ  uÕ-- uÖ--+ u×--HtÕ- tÕ- {Z {Zþo7³*tÖ-tÖ-{ŽZ{ŽZþoµ³*t×-t×-{Z{Zþoij***þþ*0-uÓ- , þoÊ´**:(»´}Z*{Z*:(»´}ŽZ*{ŽZ*:(»´}Z*{Z*:( }Z*2{Z{Z*:( }‘Z*2{‘Z{ŽZ*:( }’Z*2{’Z{Z*:( }“Z*së´**(á´þ*sí´**(á´þ*sï´**(á´þ*sñ´**(á´þ*{“Z*Zr.8ps¸C (ô+o¹C *0:.þ,)þ,!{“Z {“Z 3 þ(°*Y**þ,**B¥Û-þoã´*0L-¥Û- þ,/¥Û-þ,"{“Z {“Z 3 þ( °*Y**¥Û-þ,**0½-þ9± (á´E FltÝ-  ¹y7ž{˜ZbcXXX *tÞ-  ¹y7ž{™Z(;+bcXXX *tß-  ¹y7ž {šZ(N+bcXXX *tà- ¹y7ž{›Z(O+bcXXX **6(n oæ´*0Õ-þ9ÃuÛ- 9´{“Z {“Z @(á´E@atÝ- tÝ- {˜Z{˜Zþ*tÞ-tÞ-{™Z{™Zþ*tß-tß-{šZ{šZþ*tà- tà-  {›Z {›Zþ***þþ*‚þ,þ, (!°**þþ*0 -uÛ- ,oé´**>(Ø´}˜Z*{˜Z*>(Ø´}™Z*{™Z*>(Ø´}šZ*{šZ*>(Ø´}›Z*{›Z*:( }œZ*2{œZ{˜Z*:( }Z*2{Z{™Z*:( }žZ*2{žZ{šZ*:( }ŸZ*2{ŸZ{›Z*^sü´€¡Zsü´€¢Z*:( } Z*~¡Z**(µþ*~¢Z**(µþ*{ Z*Zr.8psºC (õ+o»C *01.þ, þ,{ Z { Z 3*Y**þ,**:¥å-oµ*0B!-¥å- þ,%¥å-þ,{ Z { Z 3*Y**¥å-þ,**0þ, (µ3 * **6(n oµ*0.!-þ,uå- ,{ Z { Z þ**þþ*0*.þ,þ,{ Z { Z þ**þþ*0Å'uå- ,o µ**¶s µ€¦Zs µ€§Zs µ€¨Zs µ€©Z*:( }¥Z*~¦Z**(µþ*~§Z**(µþ*~¨Z**(µþ*~©Z**(µþ*{¥Z*Zr.8ps¼C (ö+o½C *01.þ, þ,{¥Z {¥Z 3*Y**þ,**:¥ç-oµ*0B"-¥ç- þ,%¥ç-þ,{¥Z {¥Z 3*Y**¥ç-þ,**06þ,- (µE  * * * **6(n oµ*0."-þ,uç- ,{¥Z {¥Z þ**þþ*0*.þ,þ,{¥Z {¥Z þ**þþ*0#-uç- ,oµ**^s µ€¯Zs µ€°Z*:( }®Z*~¯Z**(%µþ*~°Z**(%µþ*{®Z*Zr.8ps¾C (÷+o¿C *01.þ, þ,{®Z {®Z 3*Y**þ,**:¥é-o'µ*0B$-¥é- þ,%¥é-þ,{®Z {®Z 3*Y**¥é-þ,**0þ, (%µ3 * **6(n o*µ*0.$-þ,ué- ,{®Z {®Z þ**þþ*0*.þ,þ,{®Z {®Z þ**þþ*0Æ'ué- ,o-µ**^s0µ€´Zs0µ€µZ*:( }³Z*~´Z**(5µþ*~µZ**(5µþ*{³Z*Zr.8psÀC (ø+oÁC *01.þ, þ,{³Z {³Z 3*Y**þ,**:¥ë-o7µ*0B%-¥ë- þ,%¥ë-þ,{³Z {³Z 3*Y**¥ë-þ,**0þ, (5µ3 * **6(n o:µ*0.%-þ,uë- ,{³Z {³Z þ**þþ*0*.þ,þ,{³Z {³Z þ**þþ*0&-uë- ,o=µ**0ˆs@µ€¹Zs@µ€ºZs@µ€»Zs@µ€¼Zs@µ€½Zs@µ€¾Zs@µ€¿Zs@µ€ÀZs@µ€ÁZ s@µ€ÂZ s@µ€ÃZ s@µ€ÄZ*:( }¸Z*~¹Z**(Yµþ*~ºZ**(Yµþ*~»Z**(Yµþ*~¼Z**(Yµþ*~½Z**(Yµþ*~¾Z**(Yµþ*~¿Z**(Yµþ*~ÀZ**(Yµþ*~ÁZ**(Yµþ*~ÂZ*.(Yµ þ*~ÃZ*.(Yµ þ*~ÄZ*.(Yµ þ*{¸Z*Zr.8psÂC (ù+oÃC *01.þ, þ,{¸Z {¸Z 3*Y**þ,**:¥í-o[µ*0B'-¥í- þ,%¥í-þ,{¸Z {¸Z 3*Y**¥í-þ,**0yþ,p (YµE   $). * * * * * * * * * * * **6(n o^µ*0.'-þ,uí- ,{¸Z {¸Z þ**þþ*0*.þ,þ,{¸Z {¸Z þ**þþ*0(-uí- ,oaµ**0äsdµ€ÒZsdµ€ÓZsdµ€ÔZsdµ€ÕZsdµ€ÖZsdµ€×Zsdµ€ØZsdµ€ÙZsdµ€ÚZ sdµ€ÛZ sdµ€ÜZsdµ€ÝZsdµ€ÞZsdµ€ßZsdµ€àZsdµ€áZsdµ€âZsdµ€ãZsdµ€äZsdµ€åZsdµ€æZsdµ€çZsdµ€èZsdµ€éZsdµ€êZsdµ€ëZsdµ€ìZsdµ€íZsdµ€îZ sdµ€ïZ!sdµ€ðZ/sdµ€ñZ6sdµ€òZ7sdµ€óZ8sdµ€ôZ:sdµ€õZTsdµ€öZVsdµ€÷ZXsdµ€øZZsdµ€ùZ[sdµ€úZ*:( }ÑZ*~ÒZ**('¶þ*~ÓZ**('¶þ*~ÔZ**('¶þ*~ÕZ**('¶þ*~ÖZ**('¶þ*~×Z**('¶þ*~ØZ**('¶þ*~ÙZ**('¶þ*~ÚZ**('¶þ*~ÛZ*.('¶ þ*~ÜZ*.('¶ þ*s.¶*.('¶ þ*s0¶*.('¶ þ*s2¶*.('¶ þ*~ÝZ*.('¶þ*~ÞZ*.('¶þ*~ßZ*.('¶þ*~àZ*.('¶þ*~áZ*.('¶þ*~âZ*.('¶þ*~ãZ*.('¶þ*~äZ*.('¶þ*~åZ*.('¶þ*~æZ*.('¶þ*~çZ*.('¶þ*~èZ*.('¶þ*~éZ*.('¶þ*~êZ*.('¶þ*~ëZ*.('¶þ*~ìZ*.('¶þ*~íZ*.('¶þ*~îZ*.('¶þ*~ïZ*.('¶ þ*~ðZ*.('¶!þ*"s4¶*.('¶"þ*s7¶*.('¶#þ*s9¶*.('¶$þ*&s;¶*.('¶%þ*s?¶*.('¶&þ*sA¶*.('¶'þ*sC¶*.('¶(þ*&sE¶*.('¶)þ*sI¶*.('¶*þ*sK¶*.('¶+þ*sM¶*.('¶,þ*&sO¶*.('¶-þ*sS¶*.('¶.þ*~ñZ*.('¶/þ*&sU¶*.('¶0þ*&sY¶*.('¶1þ**s]¶*.('¶2þ*&sb¶*.('¶3þ*sf¶*.('¶4þ*"sh¶*.('¶5þ*~òZ*.('¶6þ*~óZ*.('¶7þ*~ôZ*.('¶8þ*sk¶*.('¶9þ*~õZ*.('¶:þ*"sm¶*.('¶;þ*&sp¶*.('¶<þ*st¶*.('¶=þ*sv¶*.('¶>þ*"sx¶*.('¶?þ*&s{¶*.('¶@þ*s¶*.('¶Aþ*s¶*.('¶Bþ*sƒ¶*.('¶Cþ*s…¶*.('¶Dþ*s‡¶*.('¶Eþ*s‰¶*.('¶Fþ*s‹¶*.('¶Gþ*&s¶*.('¶Hþ*&s‘¶*.('¶Iþ*s•¶*.('¶Jþ*s—¶*.('¶Kþ*s™¶*.('¶Lþ*s›¶*.('¶Mþ*s¶*.('¶Nþ*sŸ¶*.('¶Oþ**s¡¶*.('¶Pþ*"s¦¶*.('¶Qþ*"s©¶*.('¶Rþ*"s¬¶*.('¶Sþ*~öZ*.('¶Tþ*s¯¶*.('¶Uþ*~÷Z*.('¶Vþ*s±¶*.('¶Wþ*~øZ*.('¶Xþ*s³¶*.('¶Yþ*~ùZ*.('¶Zþ*~úZ*.('¶[þ*"sµ¶*.('¶\þ*"s¸¶*.('¶]þ*s»¶*.('¶^þ*"s½¶*.('¶_þ*sÀ¶*.('¶`þ*{ÑZ*Zr.8psÄC (ú+o‚ *0G0-þ9; ('¶Ea  $).U|£¨­²·¼ÁÆËÐÕÚßäéîóøýLužÿ(QzÛ'P¥ðõV·4•¾ 5:à 2wØ 6_ˆ±Ú d Å î  @ i ’ » 2 w ¼   / 4 ] b ‹ • Ú  H  * * * * * * * * * * *tñ-  ¹y7ž{\[o¶´bcXXX *tò-  ¹y7ž{][o¶´bcXXX *tó-  ¹y7ž {^[o¶´bcXXX * * * * * * * * * * * * * * * * * * * *! *tô-" ¹y7ž{`[oæ´bcXXX ¹y7ž{_[o¶´bcXXX *tõ-# ¹y7ž{a[(L+bcXXX *tö-$ ¹y7ž{b[(L+bcXXX *t÷-% ¹y7ž{e[o¶´bcXXX ¹y7ž{d[o*µbcXXX ¹y7ž{c[oµbcXXX *tø-& ¹y7ž{f[(L+bcXXX *tù- ' ¹y7ž {g[(L+bcXXX *tú- ( ¹y7ž {h[(L+bcXXX *tû- ) ¹y7ž {k[o¶´bcXXX ¹y7ž {j[o*µbcXXX ¹y7ž {i[oµbcXXX *tü- * ¹y7ž {l[(L+bcXXX *tý- + ¹y7ž {m[bcXXX *tþ-, ¹y7ž{n[o¨³bcXXX *tÿ-- ¹y7ž{q[bcXXX ¹y7ž{p[bcXXX ¹y7ž{o[o^µbcXXX *t.. ¹y7ž{r[(û9 (¯= oš bXabcXXX */ *t.0 ¹y7ž{u[(l+bcXXX ¹y7ž{t[o¨³bcXXX ¹y7ž{s[oµbcXXX *t.1 ¹y7ž{x[(l+bcXXX ¹y7ž{w[o¨³bcXXX ¹y7ž{v[oµbcXXX *t.2 ¹y7ž{|[(l+bcXXX ¹y7ž{{[o¨³bcXXX ¹y7ž{z[o1³bcXXX ¹y7ž{y[oµbcXXX *t.3 ¹y7ž{[(l+bcXXX ¹y7ž{~[ot³bcXXX ¹y7ž{}[oµbcXXX *t.4 ¹y7ž{€[o¨³bcXXX *t.5 ¹y7ž{‚[(l+bcXXX ¹y7ž{[o¨³bcXXX *6 *7 *8 *t.9 ¹y7ž{ƒ[bcXXX *: *t.; ¹y7ž{…[o½³bcXXX ¹y7ž{„[o*µbcXXX *t .< ¹y7ž{ˆ[o½³bcXXX ¹y7ž{‡[o*µbcXXX ¹y7ž{†[oµbcXXX *t .= ¹y7ž{‰[o½³bcXXX *t .> ¹y7ž{Š[o½³bcXXX *t . ? ¹y7ž {Œ[o½³bcXXX ¹y7ž {‹[o*µbcXXX *t .!@ ¹y7ž!{[o½³bcXXX ¹y7ž!{Ž[o*µbcXXX ¹y7ž!{[oµbcXXX *t."A ¹y7ž"{[##, #( +bcXXX *t.$B ¹y7ž${‘[o1³bcXXX *t.%C ¹y7ž%{’[o1³bcXXX *t.&D ¹y7ž&{“[oÇ´bcXXX *t.'E ¹y7ž'{”[o¨³bcXXX *t.(F ¹y7ž({•[o1³bcXXX *t.)G ¹y7ž){–[o1³bcXXX *t.*H ¹y7ž*{™[o1³bcXXX ¹y7ž*{˜[o*µbcXXX ¹y7ž*{—[oµbcXXX *t.+I ¹y7ž+{œ[o1³bcXXX ¹y7ž+{›[o*µbcXXX ¹y7ž+{š[oµbcXXX *t.,J ¹y7ž,{[o1³bcXXX *t.-K ¹y7ž-{ž[o1³bcXXX *t..L ¹y7ž.{Ÿ[o1³bcXXX *t./M ¹y7ž/{ [o1³bcXXX *t.0N ¹y7ž0{¡[o¶´bcXXX *t.1O ¹y7ž1{¢[o¶´bcXXX *t.2P ¹y7ž2{¦[o1³bcXXX ¹y7ž2{¥[o²bcXXX ¹y7ž2{¤[bcXXX ¹y7ž2{£[o:µbcXXX *t.3Q ¹y7ž3{¨[o1³bcXXX ¹y7ž3{§[o²bcXXX *t.4R ¹y7ž4{ª[o1³bcXXX ¹y7ž4{©[o²bcXXX *t .5S ¹y7ž5{¬[o1³bcXXX ¹y7ž5{«[o²bcXXX *T *t!.6U ¹y7ž6{­[o1³bcXXX *V *t".7W ¹y7ž7{®[o1³bcXXX *X *t#.8Y ¹y7ž8{¯[oô³bcXXX *Z *[ *t$.9\ ¹y7ž9{±[o*µbcXXX ¹y7ž9{°[oµbcXXX *t%.:] ¹y7ž:{³[o*µbcXXX ¹y7ž:{²[oµbcXXX *t&.;^ ¹y7ž;{´[o1³bcXXX *t'.<_ ¹y7ž<{¶[bcXXX ¹y7ž<{µ[bcXXX *t(.=` ¹y7ž={·[o[·bcXXX **6(n o)¶*0¶1-þ9¤uï- 9•{ÑZ {ÑZ @~('¶Ea-Z‡Ôõƒ¤ÅæSt•Âp×>Å,Y Á®Ý,›¿îLy¨×F µ ä  B q ž Ë L › ê 9 h — Ä  ^ À *tñ- tñ- {\[{\[o¸´*tò-tò-{][{][o¸´*tó- tó-  {^[ {^[o¸´*tô- tô-  {_[ {_[o¸´, {`[  {`[ oè´**tõ-tõ-{a[{a[þ*tö-tö-{b[{b[þ*t÷-t÷-{c[{c[oµ,={d[{d[o,µ,{e[{e[o¸´***tø-tø-{f[{f[þ*tù-tù-{g[{g[þ*tú-tú-{h[{h[þ*tû-tû- {i[ {i[oµ,={j[ {j[o,µ,{k[ {k[o¸´***tü-!tü-"!{l["{l[þ*tý-#tý-$#{m[${m[þ*tþ-%tþ-&%{n['&{n[('(oª³*tÿ-)tÿ-*){o[+*{o[,+,o`µ,#){p[*{p[3){q[*{q[þ***t.-t..-{r[/.{r[0/(û9 1/(¯= 20(û9 30(¯= 413oT ,24þ**t.5t.65{s[76{s[878oµ,75{t['6{t[('(oª³,5{u[6{u[þ(m+***t.9t.:9{v[7:{v[878oµ,79{w[':{w[('(oª³,9{x[:{x[þ(m+***t.;t.<;{y[7<{y[878oµ,W;{z[=<{z[>=>o3³,7;{{['<{{[('(oª³,;{|[<{|[þ(m+****t.?t.@?{}[7@{}[878oµ,7?{~[A@{~[BABov³,?{[@{[þ(m+***t.Ct.DC{€['D{€[('(oª³*t.Et.FE{['F{[('(oª³,E{‚[F{‚[þ(m+**t.Gt.HG{ƒ[H{ƒ[þ*t.It.JI{„[J{„[o,µ,I{…[KJ{…[LKLþo¿³**t .Mt .NM{†[N{†[oµ,?M{‡[N{‡[o,µ,M{ˆ[KN{ˆ[LKLþo¿³***t .Ot .PO{‰[KP{‰[LKLþo¿³*t .Qt .RQ{Š[KR{Š[LKLþo¿³*t .St .TS{‹[T{‹[o,µ,S{Œ[KT{Œ[LKLþo¿³**t .Ut .VU{[V{[oµ,?U{Ž[V{Ž[o,µ,U{[KV{[LKLþo¿³***t.Wt.XW{[X{[(ñ *t.Yt.ZY{‘[=Z{‘[>=>þo3³*t.[t.\[{’[=\{’[>=>þo3³*t.]t.^]{“[_^{“[`_`þoÉ´*t.at.ba{”['b{”[('(oª³*t.ct.dc{•[=d{•[>=>þo3³*t.et.fe{–[=f{–[>=>þo3³*t.gt.hg{—[h{—[oµ,?g{˜[h{˜[o,µ,g{™[=h{™[>=>þo3³***t.it.ji{š[j{š[oµ,?i{›[j{›[o,µ,i{œ[=j{œ[>=>þo3³***t.kt.lk{[=l{[>=>þo3³*t.mt.nm{ž[=n{ž[>=>þo3³*t.ot.po{Ÿ[=p{Ÿ[>=>þo3³*t.qt.rq{ [=r{ [>=>þo3³*t.st.ts{¡[t{¡[o¸´*t.ut.vu{¢[v{¢[o¸´*t.wt.xw{£[yx{£[zyzo<µ,Qw{¤[x{¤[3?w{¥[{x{¥[|{|o‘²,w{¦[=x{¦[>=>þo3³****t.}t.~}{§[{~{§[|{|o‘²,}{¨[=~{¨[>=>þo3³**t.t.€{©[{€{©[|{|o‘²,{ª[=€{ª[>=>þo3³**t .t .‚{«[{‚{«[|{|o‘²,{¬[=‚{¬[>=>þo3³**t!.ƒt!.„ƒ{­[=„{­[>=>þo3³*t".…t".†…{®[=†{®[>=>þo3³*t#.‡t#.ˆ‡{¯[‰ˆ{¯[ЉŠoö³*t$.‹t$.Œ‹{°[Œ{°[oµ,‹{±[Œ{±[o,µ**t%.t%.Ž{²[Ž{²[oµ,{³[Ž{³[o,µ**t&.t&.{´[={´[>=>þo3³*t'.‘t'.’‘{µ[’{µ[3‘{¶[’{¶[þ**t(.“t(.”“{·[•”{·[–•–þo]·***þþ*0ü 2-þ9ê þ9ß {ÑZ {ÑZ @È ('¶Ea"Fj¥Æç9Z{œî0V Î"vá5[˜¹öJp–Ó'Kq—½ã /ƒ×ý#Io“· Z — Ô ú D  º à  *tñ- tñ- {\[ {\[o¹´*tò-tò-{][{][o¹´*tó-tó-{^[{^[o¹´*tô-tô- {_[ {_[o¹´,{`[ {`[oé´**tõ- tõ-  {a[ {a[þ*tö- tö-  {b[ {b[þ*t÷-t÷-{c[{c[oµ,+{d[{d[o-µ,{e[{e[o¹´***tø-tø-{f[{f[þ*tù-tù-{g[{g[þ*tú-tú-{h[{h[þ*tû-tû-{i[{i[oµ,+{j[{j[o-µ,{k[{k[o¹´***tü-tü-{l[{l[þ*tý-tý-{m[{m[þ*tþ-tþ-{n[{n[þoµ³*tÿ-tÿ-{o[{o[oaµ,#{p[{p[3{q[{q[þ***t. t.! {r["!{r[#"#þ(û+*t.$t.%${s[%{s[o µ,-${t[%{t[oµ³,${u[%{u[þ(+***t.&t.'&{v['{v[o µ,-&{w['{w[oµ³,&{x['{x[þ(+***t.(t.)({y[){y[o µ,D({z[){z[o7³,-({{[){{[oµ³,({|[){|[þ(+****t.*t.+*{}[+{}[o µ,-*{~[+{~[ow³,*{[+{[þ(+***t.,t.-,{€[-{€[þoµ³*t..t./.{[/{[oµ³,.{‚[/{‚[þ(+**t.0t.10{ƒ[1{ƒ[þ*t.2t.32{„[3{„[o-µ,2{…[3{…[þoij**t .4t .54{†[5{†[oµ,-4{‡[5{‡[o-µ,4{ˆ[5{ˆ[þoij***t .6t .76{‰[7{‰[þoij*t .8t .98{Š[9{Š[þoij*t .:t .;:{‹[;{‹[o-µ,:{Œ[;{Œ[þoij**t .<t .=<{[={[oµ,-<{Ž[={Ž[o-µ,<{[={[þoij***t.>t.?>{[?{[(ñ *t.@t.A@{‘[A{‘[þo7³*t.Bt.CB{’[C{’[þo7³*t.Dt.ED{“[E{“[þoÊ´*t.Ft.GF{”[G{”[þoµ³*t.Ht.IH{•[I{•[þo7³*t.Jt.KJ{–[K{–[þo7³*t.Lt.ML{—[M{—[oµ,-L{˜[M{˜[o-µ,L{™[M{™[þo7³***t.Nt.ON{š[O{š[oµ,-N{›[O{›[o-µ,N{œ[O{œ[þo7³***t.Pt.QP{[Q{[þo7³*t.Rt.SR{ž[S{ž[þo7³*t.Tt.UT{Ÿ[U{Ÿ[þo7³*t.Vt.WV{ [W{ [þo7³*t.Xt.YX{¡[Y{¡[o¹´*t.Zt.[Z{¢[[{¢[o¹´*t.\t.]\{£[]{£[o=µ,?\{¤[]{¤[3-\{¥[]{¥[o•²,\{¦[]{¦[þo7³****t.^t._^{§[_{§[o•²,^{¨[_{¨[þo7³**t.`t.a`{©[a{©[o•²,`{ª[a{ª[þo7³**t .bt .cb{«[c{«[o•²,b{¬[c{¬[þo7³**t!.dt!.ed{­[e{­[þo7³*t".ft".gf{®[g{®[þo7³*t#.ht#.ih{¯[i{¯[oþ³*t$.jt$.kj{°[k{°[oµ,j{±[k{±[o-µ**t%.lt%.ml{²[m{²[oµ,l{³[m{³[o-µ**t&.nt&.on{´[o{´[þo7³*t'.pt'.qp{µ[q{µ[3p{¶[q{¶[þ**t(.rt(.sr{·[s{·[þo^·***þþ*0¼ uï- , þo,¶**B (dµ}\[*{\[*B (dµ}][*{][*B (dµ}^[*{^[*^"(dµ}_[}`[*{_[*{`[*B#(dµ}a[*{a[*B$(dµ}b[*{b[*z%(dµ}c[}d[}e[*{c[*{d[*{e[*B&(dµ}f[*{f[*B'(dµ}g[*{g[*B((dµ}h[*{h[*z)(dµ}i[}j[}k[*{i[*{j[*{k[*B*(dµ}l[*{l[*B+(dµ}m[*{m[*B,(dµ}n[*{n[*z-(dµ}o[}p[}q[*{o[*{p[*{q[*B.(dµ}r[*{r[*z0(dµ}s[}t[}u[*{s[*{t[*{u[*z1(dµ}v[}w[}x[*{v[*{w[*{x[*š2(dµ}y[}z[}{[}|[*{y[*{z[*{{[*{|[*z3(dµ}}[}~[}[*{}[*{~[*{[*B4(dµ}€[*{€[*^5(dµ}[}‚[*{[*{‚[*B9(dµ}ƒ[*{ƒ[*^;(dµ}„[}…[*{„[*{…[*z<(dµ}†[}‡[}ˆ[*{†[*{‡[*{ˆ[*B=(dµ}‰[*{‰[*B>(dµ}Š[*{Š[*^?(dµ}‹[}Œ[*{‹[*{Œ[*z@(dµ}[}Ž[}[*{[*{Ž[*{[*BA(dµ}[*{[*BB(dµ}‘[*{‘[*BC(dµ}’[*{’[*BD(dµ}“[*{“[*BE(dµ}”[*{”[*BF(dµ}•[*{•[*BG(dµ}–[*{–[*zH(dµ}—[}˜[}™[*{—[*{˜[*{™[*zI(dµ}š[}›[}œ[*{š[*{›[*{œ[*BJ(dµ}[*{[*BK(dµ}ž[*{ž[*BL(dµ}Ÿ[*{Ÿ[*BM(dµ} [*{ [*BN(dµ}¡[*{¡[*BO(dµ}¢[*{¢[*šP(dµ}£[}¤[}¥[}¦[*{£[*{¤[*{¥[*{¦[*^Q(dµ}§[}¨[*{§[*{¨[*^R(dµ}©[}ª[*{©[*{ª[*^S(dµ}«[}¬[*{«[*{¬[*BU(dµ}­[*{­[*BW(dµ}®[*{®[*BY(dµ}¯[*{¯[*^\(dµ}°[}±[*{°[*{±[*^](dµ}²[}³[*{²[*{³[*B^(dµ}´[*{´[*^_(dµ}µ[}¶[*{µ[*{¶[*B`(dµ}·[*{·[*:( }¸[*2{¸[{\[*:( }¹[*2{¹[{][*:( }º[*2{º[{^[*:( }»[*2{»[{_[*2{»[{`[*:( }¼[*2{¼[{a[*:( }½[*2{½[{b[*:( }¾[*2{¾[{c[*2{¾[{d[*2{¾[{e[*:( }¿[*2{¿[{f[*:( }À[*2{À[{g[*:( }Á[*2{Á[{h[*:( }Â[*2{Â[{i[*2{Â[{j[*2{Â[{k[*:( }Ã[*2{Ã[{l[*:( }Ä[*2{Ä[{m[*:( }Å[*2{Å[{n[*:( }Æ[*2{Æ[{o[*2{Æ[{p[*2{Æ[{q[*:( }Ç[*2{Ç[{r[*:( }È[*2{È[{s[*2{È[{t[*2{È[{u[*:( }É[*2{É[{v[*2{É[{w[*2{É[{x[*:( }Ê[*2{Ê[{y[*2{Ê[{z[*2{Ê[{{[*2{Ê[{|[*:( }Ë[*2{Ë[{}[*2{Ë[{~[*2{Ë[{[*:( }Ì[*2{Ì[{€[*:( }Í[*2{Í[{[*2{Í[{‚[*:( }Î[*2{Î[{ƒ[*:( }Ï[*2{Ï[{„[*2{Ï[{…[*:( }Ð[*2{Ð[{†[*2{Ð[{‡[*2{Ð[{ˆ[*:( }Ñ[*2{Ñ[{‰[*:( }Ò[*2{Ò[{Š[*:( }Ó[*2{Ó[{‹[*2{Ó[{Œ[*:( }Ô[*2{Ô[{[*2{Ô[{Ž[*2{Ô[{[*:( }Õ[*2{Õ[{[*:( }Ö[*2{Ö[{‘[*:( }×[*2{×[{’[*:( }Ø[*2{Ø[{“[*:( }Ù[*2{Ù[{”[*:( }Ú[*2{Ú[{•[*:( }Û[*2{Û[{–[*:( }Ü[*2{Ü[{—[*2{Ü[{˜[*2{Ü[{™[*:( }Ý[*2{Ý[{š[*2{Ý[{›[*2{Ý[{œ[*:( }Þ[*2{Þ[{[*:( }ß[*2{ß[{ž[*:( }à[*2{à[{Ÿ[*:( }á[*2{á[{ [*:( }â[*2{â[{¡[*:( }ã[*2{ã[{¢[*:( }ä[*2{ä[{£[*2{ä[{¤[*2{ä[{¥[*2{ä[{¦[*:( }å[*2{å[{§[*2{å[{¨[*:( }æ[*2{æ[{©[*2{æ[{ª[*:( }ç[*2{ç[{«[*2{ç[{¬[*:( }è[*2{è[{­[*:( }é[*2{é[{®[*:( }ê[*2{ê[{¯[*:( }ë[*2{ë[{°[*2{ë[{±[*:( }ì[*2{ì[{²[*2{ì[{³[*:( }í[*2{í[{´[*:( }î[*2{î[{µ[*2{î[{¶[*:( }ï[*2{ï[{·[*sW·*:( }ð[*{ð[*&*Zr.8psÅC (ü+oÆC *0.3-þ,% &  ¹y7ž{ð[(#+bcXXX **6(n o[·*064-þ,'ua. ,&  {ð[{ð[þ(%+**þþ*015-þ,"þ,&  {ð[{ð[þ(&+**þþ*06-ua. , þo^·**{ñ[*{ò[*{ó[*{ô[*{õ[*²( }ñ[}ò[}ó[}ô[}õ[*{ÇC *{ÈC *{ÉC *{ÊC *’( }ÇC }ÈC }ÉC }ÊC *(ËC *6Œ(V·*(ÌC **(ÍC *>{ð[þ(¢+*:(ÎC }ÏC *~{ÏC {ÇC {ð[(¢+þoÐC *:(ÑC }ÒC *~{ÒC {ÈC {ð[(¢+þoÓC *:(ÌC }ÔC *~{ÔC {ÉC {ð[(¢+þo. *:(ÕC }ÖC *0*-{ÖC {ÊC {ð[(¢+(ý+ Œ(V·*{þ[*{ÿ[*V( }þ[}ÿ[*0_þ,Nþ,F(y {þ[ {þ[  /+ þ /*1*(y {ÿ[{ÿ[( **þ,**:¥k.o|·*0d8-¥k. þ,G¥k.þ,:{þ[ {þ[  /+ þ /*1*{ÿ[{ÿ[( **¥k.þ,**0FÍþ,= ¹y7ž{ÿ[ , ( +bcXXX ¹y7ž{þ[bcXXX **6(n o·*0=9-þ,.uk. ,"{þ[{þ[3{ÿ[{ÿ[(ñ ***þþ*æþ,*þ,"{þ[{þ[3{ÿ[{ÿ[(ñ ***þþ*09-uk. ,o‚·**{\*{\*V( }\}\*0=þ,4 ¹y7ž{\(þ+bcXXX ¹y7ž{\bcXXX **6(n o‡·*0@:-þ,1ul. ,%{\{\3{\{\þ(ÿ+***þþ*0({\Ži - rYps\ z{\Y£ï-*0ú;-oŠ· ('¶Ea#8*tý-{m[ (V *tÿ-{q[ +ët. {r[(¯= +Öt(. {·[rPCpsŽ·("°(ÚB (+*îþ,,þ,${\{\3{\{\þ(+***þþ*0:-ul. , þoŒ·**:(ØC }\*¶{ñ[{\o² ,{ó[{\oÙC (ÚC **:( }\*s ·**(™·þ*"s¢·**(™·þ*"s¥·**(™·þ*"s¨·**(™·þ*{\*Zr.8psÛC (+oÜC *0<-þ9  (™·E&g¨tp.  ¹y7ž{\o‡·bcXXX *tq.  ¹y7ž{ \oÝC bcXXX ¹y7ž{ \oÞC bcXXX *tr.  ¹y7ž { \o›·bcXXX ¹y7ž { \oš bcXXX *ts. ¹y7ž{\o¿·bcXXX ¹y7ž{ \o›·bcXXX **6(n o›·*0p=-þ9^un. 9O{\ {\ @8(™·E-|Îtp. tp. {\{\þo‰·*tq.tq.{ \ { \   oßC ,{ \ { \   þoàC **tr. tr. { \{ \oT ," { \{ \8îþÿÿ*ts.ts.{ \{ \o·,{\{\þoÁ·****þþ*0)>-þ9þ9 {\ {\ @õ(™·E"_tp. tp. {\ {\þoŒ·*tq.tq.{ \{ \(+,{ \{ \þ(+**tr.tr.{ \{ \(j+,{ \{ \8#ÿÿÿ*ts.ts. { \ { \ož·,{\ {\þo·****þþ*0?-un. , þož·**>(·}\*{\*Z(·} \} \*{ \*{ \*Z(·} \} \*{ \*{ \*Z(·} \}\*{ \*{\*:( }\*2{\{\*:( }\*2{\{ \*2{\{ \*:( }\*2{\{ \*2{\{ \*:( }\*2{\{ \*2{\{\*( *sÄ·**uz.þ*sÆ·**u{.þ*sÈ·**u|.þ*0@- u|.,+ u{.,+*Zr.8psáC (+oâC *0žA-þ9’ uz.-u{.-/u|.-Ltz.  ¹y7ž{\o›·bcXXX *t{.  ¹y7ž{\o›·bcXXX *t|.  ¹y7ž {\oãC bcXXX **6(n o¿·*0 B-þ9ûux. 9ì  u|.,+  u{.,+ u|.,+ u{.,+ @©uz.-u{.-6u|.-\tz. tz. {\{\þo·*t{.t{.{\{\þo·*t|. t|.  {\  {\   þoäC ***þþ*0ìC-þ9Úþ9Ïu|.,+ u{.,+   u|.,+  u{.,+ @Œ  uz.- u{.-+ u|.-Htz. tz. {\ {\þož·*t{.t{.{\{\þož·*t|.t|.{\{\þ(+***þþ*0@-ux. , þo·**:(¶·}\*{\*:(¶·}\*{\*:(¶·}\*{\*:( }\*2{\{\*:( }\*2{\{\*:( }\*2{\{\*( *sÜ·**u‚.þ*sÞ·**uƒ.þ*0D- uƒ.,+*Zr.8psåC (+oæC *0_E-þ,V u‚.,&t‚.  ¹y7ž{\o1³bcXXX *tƒ.  ¹y7ž{\o›·bcXXX **6(n o×·*0­F-þ9›u€. 9Œ  uƒ.,+   uƒ.,+ 3du‚.,-t‚. t‚. {\{\þo3³*tƒ.tƒ.{\ {\   þo·***þþ*0•G-þ9ƒþ9xuƒ.,+ uƒ.,+ 3Pu‚.,"t‚. t‚. {\ {\þo7³*tƒ.tƒ.{\{\þož·***þþ*0D-u€. , þoÚ·**:(з}\*{\*:(з}\*{\*:( } \*2{ \{\*:( }!\*2{!\{\*{"\*{#\*V( }"\}#\*{$\*{%\*{&\*{'\*{(\*{)\*Ò( }$\}%\}&\}'\}(\})\*0Nsï·€+\sï·€,\sï·€-\sï·€.\sï·€/\sï·€0\sï·€1\*:( }*\*~+\**(þ·þ*~,\**(þ·þ*~-\**(þ·þ*~.\**(þ·þ*~/\**(þ·þ*~0\**(þ·þ*~1\**(þ·þ*{*\*Zr.8psçC (+oèC *01.þ, þ,{*\ {*\ 3*Y**þ,**:¥ˆ.o¸*0BH-¥ˆ. þ,%¥ˆ.þ,{*\ {*\ 3*Y**¥ˆ.þ,**0Nþ,E (þ·E  * * * * * * **6(n o¸*0.H-þ,uˆ. ,{*\ {*\ þ**þþ*0*.þ,þ,{*\ {*\ þ**þþ*0uˆ. ,o¸**6 s ¸€:\*:( }9\*s0¸**(&¸þ*s2¸**(&¸þ*s4¸**(&¸þ*s6¸**(&¸þ*s8¸**(&¸þ*s:¸**(&¸þ*s<¸**(&¸þ*s>¸**(&¸þ*s@¸**(&¸þ*sB¸*.(&¸ þ*sD¸*.(&¸ þ*sF¸*.(&¸ þ*sH¸*.(&¸ þ*~:\*.(&¸ þ*{9\*Zr.8pséC ( +oêC *0:.þ,)þ,!{9\ {9\ 3 þ((°*Y**þ,**B¥Š.þo(¸*0LI-¥Š. þ,/¥Š.þ,"{9\ {9\ 3 þ()°*Y**¥Š.þ,**Jþ, (*°**6(n o+¸*08I-þ,)uŠ. ,{9\ {9\ 3 (+°***þþ*04.þ,%þ,{9\ {9\ 3 (,°***þþ*0J-uŠ. ,o.¸**>( ¸}I\*{I\*>( ¸}J\*{J\*>( ¸}K\*{K\*>( ¸}L\*{L\*>( ¸}M\*{M\*>( ¸}N\*{N\*>( ¸}O\*{O\*>( ¸}P\*{P\*>( ¸}Q\*{Q\*B ( ¸}R\*{R\*B ( ¸}S\*{S\*B ( ¸}T\*{T\*B ( ¸}U\*{U\*:( }V\*2{V\{I\*:( }W\*2{W\{J\*:( }X\*2{X\{K\*:( }Y\*2{Y\{L\*:( }Z\*2{Z\{M\*:( }[\*2{[\{N\*:( }\\*2{\\{O\*:( }]\*2{]\{P\*:( }^\*2{^\{Q\*:( }_\*2{_\{R\*:( }`\*2{`\{S\*:( }a\*2{a\{T\*:( }b\*2{b\{U\*0{se¸€d\se¸€e\se¸€f\se¸€g\se¸€h\se¸€i\ se¸€j\ se¸€k\ se¸€l\ se¸€m\ se¸€n\se¸€o\se¸€p\se¸€q\se¸€r\se¸€s\se¸€t\se¸€u\se¸€v\se¸€w\se¸€x\se¸€y\se¸€z\se¸€{\se¸€|\se¸€}\se¸€~\se¸€\ se¸€€\!se¸€\#se¸€‚\$se¸€ƒ\*:( }c\*~d\**(°¸þ**sº¸**(°¸þ*s¿¸**(°¸þ*sÁ¸**(°¸þ*~e\**(°¸þ*~f\**(°¸þ*~g\**(°¸þ*~h\**(°¸þ*~i\**(°¸þ*~j\*.(°¸ þ*~k\*.(°¸ þ*~l\*.(°¸ þ*~m\*.(°¸ þ*~n\*.(°¸ þ*~o\*.(°¸þ*~p\*.(°¸þ*~q\*.(°¸þ*~r\*.(°¸þ*~s\*.(°¸þ*~t\*.(°¸þ*~u\*.(°¸þ*~v\*.(°¸þ*~w\*.(°¸þ*~x\*.(°¸þ*"sø*.(°¸þ*~y\*.(°¸þ*~z\*.(°¸þ*~{\*.(°¸þ*~|\*.(°¸þ*~}\*.(°¸þ*~~\*.(°¸þ*~\*.(°¸þ*~€\*.(°¸ þ*~\*.(°¸!þ*"sƸ*.(°¸"þ*~‚\*.(°¸#þ*~ƒ\*.(°¸$þ*{c\*Zr.8psëC ( +oìC *0:.þ,)þ,!{c\ {c\ 3 þ(-°*Y**þ,**B¥¦.þo²¸*0LK-¥¦. þ,/¥¦.þ,"{c\ {c\ 3 þ(.°*Y**¥¦.þ,**Jþ, (/°**6(n oµ¸*0;K-þ,,u¦. , {c\ {c\ 3 þ(0°***þþ*06.þ,'þ,{c\ {c\ 3 þ(1°***þþ*0L-u¦. , þo¸¸**–(e¸}©\}ª\}«\}¬\*{©\*{ª\*{«\*{¬\*>(e¸}­\*{­\*>(e¸}®\*{®\*^(e¸}¯\}°\*{¯\*{°\*^"(e¸}±\}²\*{±\*{²\*:( }³\*2{³\{©\*2{³\{ª\*2{³\{«\*2{³\{¬\*:( }´\*2{´\{­\*:( }µ\*2{µ\{®\*:( }¶\*2{¶\{¯\*2{¶\{°\*:( }·\*2{·\{±\*2{·\{²\*0äsÙ¸€¹\sÙ¸€º\sÙ¸€»\sÙ¸€¼\sÙ¸€½\sÙ¸€¾\sÙ¸€¿\sÙ¸€À\sÙ¸€Á\ sÙ¸€Â\ sÙ¸€Ã\ sÙ¸€Ä\ sÙ¸€Å\ sÙ¸€Æ\sÙ¸€Ç\sÙ¸€È\sÙ¸€É\sÙ¸€Ê\sÙ¸€Ë\sÙ¸€Ì\sÙ¸€Í\sÙ¸€Î\sÙ¸€Ï\sÙ¸€Ð\sÙ¸€Ñ\sÙ¸€Ò\sÙ¸€Ó\sÙ¸€Ô\sÙ¸€Õ\sÙ¸€Ö\sÙ¸€×\sÙ¸€Ø\ sÙ¸€Ù\!sÙ¸€Ú\"sÙ¸€Û\#sÙ¸€Ü\$sÙ¸€Ý\%sÙ¸€Þ\&sÙ¸€ß\*sÙ¸€à\+sÙ¸€á\*:( }¸\*~¹\**(2¹þ*~º\**(2¹þ*~»\**(2¹þ*~¼\**(2¹þ*~½\**(2¹þ*~¾\**(2¹þ*~¿\**(2¹þ*~À\**(2¹þ*~Á\**(2¹þ*~Â\*.(2¹ þ*~Ã\*.(2¹ þ*~Ä\*.(2¹ þ*~Å\*.(2¹ þ*~Æ\*.(2¹ þ*~Ç\*.(2¹þ*~È\*.(2¹þ*~É\*.(2¹þ*~Ê\*.(2¹þ*~Ë\*.(2¹þ*~Ì\*.(2¹þ*~Í\*.(2¹þ*~Î\*.(2¹þ*~Ï\*.(2¹þ*~Ð\*.(2¹þ*~Ñ\*.(2¹þ*~Ò\*.(2¹þ*~Ó\*.(2¹þ*~Ô\*.(2¹þ*~Õ\*.(2¹þ*~Ö\*.(2¹þ*~×\*.(2¹þ*~Ø\*.(2¹þ*~Ù\*.(2¹ þ*~Ú\*.(2¹!þ*~Û\*.(2¹"þ*~Ü\*.(2¹#þ*~Ý\*.(2¹$þ*~Þ\*.(2¹%þ*~ß\*.(2¹&þ*s<¹*.(2¹'þ*s>¹*.(2¹(þ*s@¹*.(2¹)þ*~à\*.(2¹*þ*~á\*.(2¹+þ*{¸\*Zr.8psíC ( +oîC *0M-þ9|þ9q{¸\ {¸\ @X(2¹E,3h*t´. t´. (y {] {]o6¹*tµ.tµ.(y {]{]o6¹*t¶. t¶. (y  {] {]o6¹*Y**þ,**:¥².o4¹*0šN-¥². þ9z¥².þ9j{¸\ {¸\ @Q(2¹E,2d*t´. t´. {]{]8ßþÿÿtµ.tµ.{]{]8­þÿÿt¶. t¶.  {] {]8{þÿÿY**¥².þ,**0O-þ9ö (2¹E,  $).38=BGLQV[`ejoty~ƒˆ’—œ¡¦«°µºá/4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *! *" *# *$ *% *& *t´. ' ¹y7ž{]o7¹bcXXX *tµ. ( ¹y7ž{]o7¹bcXXX *t¶. ) ¹y7ž {]o7¹bcXXX ** *+ **6(n o7¹*0‰N-þ9wu². 9h{¸\ {¸\ @Q(2¹E,2d*t´. t´. {]{]8èþÿÿtµ.tµ.{]{]8¶þÿÿt¶. t¶.  {] {]8„þÿÿ**þþ*0bP-þ9Pþ9E{¸\ {¸\ @.(2¹E,%L*t´. t´. {] {]8ùþÿÿtµ.tµ.{]{]8Òþÿÿt¶.t¶.{]{]8«þÿÿ**þþ*0Q-u². ,o:¹**B'(Ù¸}]*{]*B((Ù¸}]*{]*B)(Ù¸}]*{]*:( }]*2{]{]*:( }]*2{]{]*:( }]*2{]{]*0ÐsI¹€]sI¹€]sI¹€]sI¹€]sI¹€]sI¹€]sI¹€]sI¹€]sI¹€] sI¹€] sI¹€] sI¹€ ] sI¹€!] sI¹€"]sI¹€#]sI¹€$]sI¹€%]sI¹€&]*:( }]*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]**(n¹þ*~]*.(n¹ þ*~]*.(n¹ þ*~ ]*.(n¹ þ*~!]*.(n¹ þ*~"]*.(n¹ þ*~#]*.(n¹þ*~$]*.(n¹þ*~%]*.(n¹þ*~&]*.(n¹þ*{]*Zr.8psïC ( +oðC *01.þ, þ,{] {] 3*Y**þ,**:¥º.op¹*0BR-¥º. þ,%¥º.þ,{] {] 3*Y**¥º.þ,**0²þ9¦ (n¹E  $).38=BGL * * * * * * * * * * * * * * * * * **6(n os¹*0.R-þ,uº. ,{] {] þ**þþ*0*.þ,þ,{] {] þ**þþ*0S-uº. ,ov¹**"sy¹*V( }9]}:]*{9]*{:]*&*Zr.8psñC ( +oòC *0eU-þ,Tþ,L&  (y {9]{9] or¹ /*1*(y {:]{:]þ(h+**þ,**B¥¼.þo~¹*0lV-¥¼. þ,O¥¼.þ,B&  {9]{9]or¹ / * 1 *{:]{:]þ(h+**¥¼.þ,**0IW-þ,@ &  ¹y7ž{:](i+bcXXX ¹y7ž{9]os¹bcXXX **6(n o¹*0RX-þ,Cu¼. ,7&  {9] {9] ou¹,{:]{:]þ(j+***þþ*0FY-þ,7þ,/&  {9]{9]ov¹,{:]{:]þ(l+***þþ*0Z-u¼. , þo„¹**( *s“¹**u¿.þ*s•¹**uÀ.þ*0[- uÀ.,+*Zr.8psóC (+oôC *0_^-þ,V u¿.,&t¿.  ¹y7ž{=]oõC bcXXX *tÀ.  ¹y7ž{>](+bcXXX **6(n o¹*0¥_-þ9“u½. 9„  uÀ.,+   uÀ.,+ 3\u¿.,-t¿. t¿. {=]{=]þoöC *tÀ.tÀ.{>]{>]þ(+***þþ*0(`-uÀ.,tÀ. {>]o÷C *t¿.{=]*0•a-þ9ƒþ9xuÀ.,+ uÀ.,+ 3Pu¿.,"t¿. t¿. {=] {=]þ(+*tÀ.tÀ.{>]{>]þ(+***þþ*0[-u½. , þo‘¹**:(†¹}=]*{=]*:(†¹}>]*{>]*:( }?]*2{?]{=]*:( }@]*2{@]{>]*Šsœ¹€B]sœ¹€C]sœ¹€D]*:( }A]*~B]**(£¹þ*~C]**(£¹þ*~D]**(£¹þ*{A]*Zr.8psøC (+oùC *01.þ, þ,{A] {A] 3*Y**þ,**:¥Ã.o¥¹*0Bb-¥Ã. þ,%¥Ã.þ,{A] {A] 3*Y**¥Ã.þ,**0.þ,% (£¹E * * **6(n o¨¹*0.b-þ,uÃ. ,{A] {A] þ**þþ*0*.þ,þ,{A] {A] þ**þþ*0c-uÃ. ,o«¹**Šs®¹€I]s®¹€J]s®¹€K]*:( }H]*~I]**(µ¹þ*~J]**(µ¹þ*~K]**(µ¹þ*{H]*Zr.8psúC (+oûC *01.þ, þ,{H] {H] 3*Y**þ,**:¥Å.o·¹*0Bd-¥Å. þ,%¥Å.þ,{H] {H] 3*Y**¥Å.þ,**0.þ,% (µ¹E * * **6(n oº¹*0.d-þ,uÅ. ,{H] {H] þ**þþ*0*.þ,þ,{H] {H] þ**þþ*0e-uÅ. ,o½¹**0CsÀ¹€P]sÀ¹€Q]sÀ¹€R]sÀ¹€S]sÀ¹€T]sÀ¹€U]*:( }O]*~P]**(͹þ*~Q]**(͹þ*~R]**(͹þ*~S]**(͹þ*~T]**(͹þ*~U]**(͹þ*{O]*Zr.8psüC (+oýC *01.þ, þ,{O] {O] 3*Y**þ,**:¥Ç.oϹ*0Bf-¥Ç. þ,%¥Ç.þ,{O] {O] 3*Y**¥Ç.þ,**0Fþ,= (͹E  * * * * * **6(n oÒ¹*0.f-þ,uÇ. ,{O] {O] þ**þþ*0*.þ,þ,{O] {O] þ**þþ*0g-uÇ. ,oÕ¹**¶sع€]]sع€^]sع€_]sع€`]*:( }\]*~]]**(á¹þ*~^]**(á¹þ*~_]**(á¹þ*~`]**(á¹þ*{\]*Zr.8psþC (+oÿC *01.þ, þ,{\] {\] 3*Y**þ,**:¥É.oã¹*0Bh-¥É. þ,%¥É.þ,{\] {\] 3*Y**¥É.þ,**06þ,- (á¹E  * * * **6(n oæ¹*0.h-þ,uÉ. ,{\] {\] þ**þþ*0*.þ,þ,{\] {\] þ**þþ*0i-uÉ. ,oé¹**{e]*{f]*{g]*{h]*{i]*{j]*{k]*{l]*0D( }e]}f]}g]}h]}i]}j]}k]}l]*{m]*{n]*{o]*{p]*{q]*{r]*{s]*{t]*0D( }m]}n]}o]}p]}q]}r]}s]}t]*{u]*{v]*{w]*r( }u]}v]}w]*"sº*V( }x]}y]*{x]*{y]*&*Zr.8psD (+oD *0oj-þ,^þ,V&  (y {x]{x] o„³ /*1*(y {y]{y] þo0³**þ,**B¥Î.þoº*0tk-¥Î. þ,W¥Î.þ,J&  {x]{x]o„³ / * 1 *{y]{y]þo0³**¥Î.þ,**0Il-þ,@ &  ¹y7ž{y]o1³bcXXX ¹y7ž{x]o…³bcXXX **6(n o º*0Zm-þ,KuÎ. ,?&  {x] {x] o‡³,{y]{y]þo3³***þþ*"{x]*"{y]*0Fn-þ,7þ,/&  {x]{x]o’³,{y]{y]þo7³***þþ*0o-uÎ. , þoº**{z]*{{]*{|]*{}]*’( }z]}{]}|]}}]*Šþ,þ, (3°**þ,**:¥Ï.oº*03p-¥Ï. þ,¥Ï.þ, (4°**¥Ï.þ,**0aþ,X ¹y7ž{}]bcXXX ¹y7ž{|]bcXXX ¹y7ž{{]bcXXX ¹y7ž{z]bcXXX **6(n oº*0Zp-þ,KuÏ. ,?{z]{z]3/{{]{{]3{|]{|]3{}]{}]þ*****þþ*0Vþ,Gþ,?{z]{z]3/{{]{{]3{|]{|]3{}]{}]þ*****þþ*0p-uÏ. ,oº**¶sº€]sº€€]sº€]sº€‚]*:( }~]*~]**(*ºþ*~€]**(*ºþ*~]**(*ºþ*~‚]**(*ºþ*s4º**(*ºþ*{~]*Zr.8psD (+oD *0kq-þ,Zþ,R{~] {~] 3<(*º31tÒ. tÒ. (y {ˆ] {ˆ]oº**Y**þ,**:¥Ð.o,º*0vr-¥Ð. þ,Y¥Ð.þ,L{~] {~] 36(*º3+tÒ. tÒ. {ˆ]{ˆ]oº**Y**¥Ð.þ,**0`s-þ,W (*ºE  * * * *tÒ.  ¹y7ž{ˆ]oºbcXXX **6(n o/º*0er-þ,VuÐ. ,J{~] {~] 36(*º3+tÒ. tÒ. {ˆ]{ˆ]oº****þþ*0Vt-þ,Gþ,?{~] {~] 3+(*º3 tÒ. tÒ. {ˆ] {ˆ]oº****þþ*0u-uÐ. ,o2º**>(º}ˆ]*{ˆ]*:( }‰]*2{‰]{ˆ]*^s9º€‹]s9º€Œ]*:( }Š]*sDº**(Bºþ*sFº**(Bºþ*~‹]**(Bºþ*~Œ]**(Bºþ*{Š]*Zr.8psD (+oD *>(9º}‘]*{‘]*>(9º}’]*{’]*:( }“]*2{“]{‘]*:( }”]*2{”]{’]*sMº*:( }•]*{•]*&*Zr.8psD (+oD *0.v-þ,% &  ¹y7ž{•](+bcXXX **6(n oQº*06w-þ,'uÚ. ,&  {•]{•]þ(+**þþ*6{•]oýB *01x-þ,"þ,&  {•]{•]þ(+**þþ*0©,uÚ. , þoUº**ŠsXº€—]sXº€˜]sXº€™]*:( }–]*~—]**(_ºþ*~˜]**(_ºþ*~™]**(_ºþ*{–]*Zr.8psD (+o D *01.þ, þ,{–] {–] 3*Y**þ,**:¥Û.oaº*0By-¥Û. þ,%¥Û.þ,{–] {–] 3*Y**¥Û.þ,**0.þ,% (_ºE * * **6(n odº*0.y-þ,uÛ. ,{–] {–] þ**þþ*0*.þ,þ,{–] {–] þ**þþ*0z-uÛ. ,ogº**( D *"{n]*( D *"{n]*Šsnº€ž]snº€Ÿ]snº€ ]*:( }]*~ž]**(uºþ*~Ÿ]**(uºþ*~ ]**(uºþ*{]*Zr.8ps D (+o D *01.þ, þ,{] {] 3*Y**þ,**:¥ß.owº*0B{-¥ß. þ,%¥ß.þ,{] {] 3*Y**¥ß.þ,**0.þ,% (uºE * * **6(n ozº*0.{-þ,uß. ,{] {] þ**þþ*0*.þ,þ,{] {] þ**þþ*0|-uß. ,o}º**{¤]*{¥]*{¦]*{§]*{¨]*{©]*{ª]*ò( }¤]}¥]}¦]}§]}¨]}©]}ª]*"{¤]*{«]*{¬]*{­]*{®]*{¯]*{°]*{±]*{²]*{³]*{´]*{µ]*{¶]*{·]*{¸]*{¹]*{º]*{»]*{¼]*{½]*{¾]*{¿]*{À]*{Á]*{Â]*0Ä( }«]}¬]}­]}®]}¯]}°]}±]}²] }³] }´] }µ] }¶] }·]}¸]}¹]}º]}»]}¼]}½]}¾]}¿]}À]}Á]}Â]*6{®](7°*09}-{±] {•]oýB (Bº3tÖ. {‘] {(\( D **0©,{±] {•]oýB (Bºþ*06~-{±] {•]oýB (Bº3tÖ. {‘]{'\*(&°*04-{±] {•]oýB (Bº3 tÖ.{‘]*rYYps\ z6o¥º{)\*6o¥º{%\*6o¥º{$\*B{¬](*ºþ*B{¬](*ºþ*B{¬](*ºþ*B{¬](*ºþ*B{¬](*ºþ*0/{{¬] (*º3tÒ. {ˆ]{z]*rgYps·2 z0/{{¬] (*º3tÒ. {ˆ]{{]*rgYps·2 z0/{{¬] (*º3tÒ. {ˆ]{|]*rgYps·2 z0/{{¬] (*º3tÒ. {ˆ]{}]*rgYps·2 zŽ{­]{®](7°{¯]{v]sp³*s´º*:( }Ã]*{Ã]*&*Zr.8psD ( +oD *>¥Ÿþ(‹+*0H,{Ã] oþB (ÿB (‰+*0'H,s½º{Ã] oþB (ÿB (‰+þ(u+*J¥Ÿo( ¥U*0$-{Ã] oþB (D ¥Ÿþo( *:(ø }Ä]*V{®]oé" {Ä]þ*{Å]*{Æ]*{Ç]*{È]*{É]*{Ê]*{Ë]*{Ì]*{Í]*0L( }Å]}Æ]}Ç]}È]}É]}Ê]}Ë]}Ì] }Í]*sʺ*:( }Î]*{Î]*&*Zr.8psD (!+oD *0«,{Î] {eC ofC *B{Î]þoD *{Ï]*{Ð]*{Ñ]*{Ò]*{Ó]*{Ô]*{Õ]*{Ö]*{×]*{Ø]*0T( }Ï]}Ð]}Ñ]}Ò]}Ó]}Ô]}Õ]}Ö] }×] }Ø]*sܺ*:( }Ù]*{Ù]*&*Zr.8psD ("+oD *0­,{Ù] {gC ohC *B{Ù]þoD *{Ú]*{Û]*{Ü]*{Ý]*{Þ]*{ß]*{à]*{á]*{â]*{ã]*{ä]*{å]*{æ]*0l( }Ú]}Û]}Ü]}Ý]}Þ]}ß]}à]}á] }â] }ã] }ä] }å] }æ]*sñº*:( }ç]*{ç]*&*Zr.8psD (#+oD *0.‚-þ,% &  ¹y7ž{ç]($+bcXXX **6(n oõº*06ƒ-þ,'uê. ,&  {ç]{ç]þ(%+**þþ*0„-{ç] {KC oLC *B{ç]þoD *01…-þ,"þ,&  {ç]{ç]þ(&+**þþ*0†-uê. , þoúº**{è]*{é]*V( }è]}é]*0c‡-þ,Rþ,J(y {è] {è]  o º /*1*(y {é]{é]o§³**þ,**:¥ë.oÿº*0h‰-¥ë. þ,K¥ë.þ,>{è] {è]  o º /*1*{é]{é]o§³**¥ë.þ,**0Cþ,: ¹y7ž{é]o¨³bcXXX ¹y7ž{è]o ºbcXXX **6(n o»*0NŠ-þ,?uë. ,3{è] {è] o º,{é] {é] oª³***þþ*0@þ,1þ,){è]{è]oº,{é]{é]þoµ³***þþ*0‹-uë. , þo»**s»*:( }ê]*{ê]*&*Zr.8psD ('+oD *0.Œ-þ,% &  ¹y7ž{ê]((+bcXXX **6(n o »*06-þ,'uì. ,&  {ê]{ê]þ()+**þþ*0 -{ê] s»oD (R þ(*+*01-þ,"þ,&  {ê]{ê]þ(++**þþ*0‘-uì. , þo»**(D *.þ(,+*.s&»€ë]*( *~ë]**uð.þ*s'»**uñ.þ*s)»**uò.þ*0¹& uò.,+ uñ.,+*Zr.8psD (-+oD *0å’-þ9Ñþ9Æ  uò.,+  uñ.,+   uò.,+  uñ.,+ @  uñ.-  uò.-5*tñ. tñ. (y {ï] {ï]þo5»*tò.tò.(y {ð]{ð]þo5»*Y**þ,**B¥î.þo»*0å“-¥î. þ9Å¥î.þ9µ  uò.,+  uñ.,+   uò.,+  uñ.,+ 3s  uñ.-  uò.-/*tñ. tñ. {ï]{ï]þo5»*tò.tò.{ð]{ð]þo5»*Y**¥î.þ,**0u”-þ,l  uð.- uñ.- uò.-* *tñ.  ¹y7ž{ï]o6»bcXXX *tò.  ¹y7ž{ð]o6»bcXXX **6(n o!»*0Ô“-þ9Âuî. 9³  uò.,+  uñ.,+   uò.,+  uñ.,+ 3s  uñ.-  uò.-/*tñ. tñ. {ï]{ï]þo8»*tò.tò.{ð]{ð]þo8»***þþ*0¼•-þ9ªþ9Ÿuò.,+ uñ.,+ uò.,+ uñ.,+ 3_uñ.- uò.-$*tñ. tñ. {ï] {ï]þo9»*tò.tò.{ð]{ð]þo9»***þþ*0¹&uî. , þo$»**(»*:(»}ï]*{ï]*:(»}ð]*{ð]*:( }ñ]*:( }ò]*2{ò]{ï]*:( }ó]*2{ó]{ð]*{ô]*{õ]*V( }ô]}õ]*0Uþ,Dþ,<(y {ô]{ô](.+ /*1*(y {õ]{õ]þ(/+**þ,**B¥ö.þo3»*0^–-¥ö. þ,A¥ö.þ,4{ô]{ô](.+ /*1*{õ]{õ]þ(/+**¥ö.þ,**0Cþ,: ¹y7ž{õ](0+bcXXX ¹y7ž{ô](\+bcXXX **6(n o6»*0F—-þ,7uö. ,+{ô]{ô](ò+,{õ]{õ]þ(1+***þþ*0@þ,1þ,){ô]{ô](ô+,{õ]{õ]þ(2+***þþ*0—-uö. , þo9»**^s<»€÷]s<»€ø]*:( }ö]*~÷]**(A»þ*~ø]**(A»þ*{ö]*Zr.8ps D (3+o!D *01.þ, þ,{ö] {ö] 3*Y**þ,**:¥÷.oC»*0B˜-¥÷. þ,%¥÷.þ,{ö] {ö] 3*Y**¥÷.þ,**0þ, (A»3 * **6(n oF»*0.˜-þ,u÷. ,{ö] {ö] þ**þþ*0*.þ,þ,{ö] {ö] þ**þþ*0™-u÷. ,oI»**ŠsL»€ü]sL»€ý]sL»€þ]*:( }û]*~ü]**(S»þ*~ý]**(S»þ*~þ]**(S»þ*{û]*Zr.8ps"D (4+o#D *01.þ, þ,{û] {û] 3*Y**þ,**:¥ù.oU»*0Bš-¥ù. þ,%¥ù.þ,{û] {û] 3*Y**¥ù.þ,**0.þ,% (S»E * * **6(n oX»*0.š-þ,uù. ,{û] {û] þ**þþ*0*.þ,þ,{û] {û] þ**þþ*0›-uù. ,o[»**Vso»€^sp»€^*( *~^**uý.þ*~^**uþ.þ*sq»**uÿ.þ*0œ- uÿ.,+ uþ.,+*Zr.8ps$D (5+o%D *0œ-þ9ˆþ9}uÿ.,+ uþ.,+ uÿ.,+ uþ.,+ 3;uÿ.,1tÿ. tÿ. (y {^ {^o¸**Y**þ,**:¥û.og»*0§ž-¥û. þ9‡¥û.þ9wuÿ.,+ uþ.,+ uÿ.,+ uþ.,+ 35uÿ.,+tÿ. tÿ. {^{^o¸**Y**¥û.þ,**0SŸ-þ,J  uý.-uþ.- uÿ.- * *tÿ.  ¹y7ž{^o¸bcXXX **6(n oj»*0–ž-þ9„uû. 9uuÿ.,+ uþ.,+ uÿ.,+ uþ.,+ 35uÿ.,+tÿ. tÿ. {^{^o¸****þþ*0‡ -þ9uþ9juÿ.,+ uþ.,+ uÿ.,+ uþ.,+ 3*uÿ., tÿ. tÿ. {^ {^o¸****þþ*0œ-uû. ,om»**(^»*(^»*:(^»}^*{^*:( }^*:( } ^*:( } ^*2{ ^{^*âsx»€ ^sx»€ ^sx»€^sx»€^sx»€^*:( } ^*~ ^**(…»þ*~ ^**(…»þ*~^**(…»þ*~^**(…»þ*~^**(…»þ*sŒ»**(…»þ*{ ^*Zr.8ps&D (6+o'D *0h¡-þ,_ (…»E  * * * * *t/  ¹y7ž{^o•»bcXXX **6(n o‡»*0g¢-þ,Xu/ ,L{ ^ { ^ 38(…»3-t/ t/ {^{^þo—»****þþ*0X£-þ,Iþ,A{ ^ { ^ 3-(…»3"t/ t/ {^ {^þo˜»****þþ*0¤-u/ , þoŠ»**>(x»}^*{^*:( }^*2{^{^*s‘»*:( }^*{^*&*Zr.8ps(D (7+o)D *0.¥-þ,% &  ¹y7ž{^(#+bcXXX **6(n o•»*06¦-þ,'u/ ,&  {^{^þ(%+**þþ*01§-þ,"þ,&  {^{^þ(&+**þþ*0¨-u/ , þo˜»**{^*:( }^*{^*{^*{^*{^*{^*{ ^*{!^*{"^*{#^*{$^*{%^*{&^*{'^*{(^*{)^*{*^*{+^*{,^*{-^*{.^*{/^*{0^*{1^*0¼( }^}^}^}^}^} ^}!^}"^ }#^ }$^ }%^ }&^ }'^}(^})^}*^}+^},^}-^}.^}/^}0^}1^*B{^(…»þ*B{^(…»þ*B{^(…»þ*B{^(…»þ*¶{^(…»E**"sº»*V( }2^}3^*{2^*{3^*&*Zr.8ps*D (8+o+D *0I—&þ,@ &  ¹y7ž{3^(9+bcXXX ¹y7ž{2^(:+bcXXX **6(n o¿»*0L©-þ,=u / ,1&  {2^{2^(;+,{3^{3^þ(<+***þþ*>¥²þ(v+*0E,{2^ o,D þ(=+*05«-{3^ ( ° (˜ (— o-D o.D o/D oW+ *J¥²o´ ¥U*0E,{2^ sÉ»þo´ *0F¬-þ,7þ,/&  {2^{2^(>+,{3^{3^þ(?+***þþ*0£u / , þoÇ»**Ò}4^}5^}6^}7^}8^}9^(³ *0Ñ{8^YE +8…+q8{4^o,D ¥Ì'o0D }7^}8^{7^oï ,M{7^o1D }5^{5^(\+ }6^}8^{6^oW+ }9^*}6^}5^+¦}8^{7^(@+}7^}8^}9^*0‡e {8^YE++e{8^E + ++++}8^{7^(@+}8^}9^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{8^E + + +++***"{9^*0 {4^sÉ»*{:^*{;^*{<^*{=^*’( }:^};^}<^}=^*sÕ»*:( }>^*{>^*&*Zr.8ps2D (A+o3D *0.­-þ,% &  ¹y7ž{>^(B+bcXXX **6(n oÙ»*06®-þ,'u / ,&  {>^{>^þ(C+**þþ*0 °-{>^ sñ»o4D (. þ(D+*01±-þ,"þ,&  {>^{>^þ(E+**þþ*0²-u / , þoÝ»**{?^*{@^*{A^*{B^*{C^*{D^*Ò( }?^}@^}A^}B^}C^}D^*sç»*:( }E^*{E^*&*Zr.8ps5D (F+o6D *0.³-þ,% &  ¹y7ž{E^(G+bcXXX **6(n oë»*06´-þ,'u/ ,&  {E^{E^þ(H+**þþ*0 ¶-{E^ só»o7D (^ þ(I+*01·-þ,"þ,&  {E^{E^þ(J+**þþ*0¸-u/ , þoï»**(8D *&(9D *(:D *&(€? *^sö»€G^sö»€H^*:( }F^*~G^**(û»þ*~H^**(û»þ*{F^*Zr.8ps;D (K+oD *:(¼}N^*{N^*V(¼}O^}P^*{O^*{P^*:(¼}Q^*{Q^*:( }R^*2{R^{N^*:( }S^*2{S^{O^*2{S^{P^*:( }T^*2{T^{Q^*{U^*{V^*{W^*{X^*’( }U^}V^}W^}X^*s"¼*:( }Y^*{Y^*&*Zr.8ps?D (M+o@D *0.¼-þ,% &  ¹y7ž{Y^(N+bcXXX **6(n o&¼*06½-þ,'u/ ,&  {Y^{Y^þ(O+**þþ*6{Y^oiC *01¾-þ,"þ,&  {Y^{Y^þ(P+**þþ*0¿-u/ , þo*¼**âs-¼€[^s-¼€\^s-¼€]^s-¼€^^s-¼€_^*:( }Z^*~[^**(8¼þ*~\^**(8¼þ*~]^**(8¼þ*~^^**(8¼þ*~_^**(8¼þ*{Z^*Zr.8psAD (Q+oBD *01.þ, þ,{Z^ {Z^ 3*Y**þ,**:¥/o:¼*0BÁ-¥/ þ,%¥/þ,{Z^ {Z^ 3*Y**¥/þ,**0>þ,5 (8¼E  * * * * **6(n o=¼*0.Á-þ,u/ ,{Z^ {Z^ þ**þþ*0*.þ,þ,{Z^ {Z^ þ**þþ*0Â-u/ ,o@¼**{e^*{f^*{g^*{h^*{i^*{j^*{k^*{l^*{m^*{n^*{o^*{p^*{q^*0l( }e^}f^}g^}h^}i^}j^}k^}l^ }m^ }n^ }o^ }p^ }q^*{r^*{s^*{t^*{u^*{v^*{w^*{x^*{y^*{z^*{{^*{|^*{}^*{~^*{^*{€^*{^*{‚^*{ƒ^*{„^*{…^*0¤( }r^}s^}t^}u^}v^}w^}x^}y^ }z^ }{^ }|^ }}^ }~^}^}€^}^}‚^}ƒ^}„^}…^*0 {r^ - rYps\ z(˜ *:{r^þþ*.sCD €DD *( *~DD *&*Zr.8psED (R+oFD *nþ, þ,**þ,**:¥Ü'oGD *0,Ä-¥Ü' þ,¥Ü'þ,**¥Ü'þ,**0þ, & **6(n oHD *nþ, uÜ',**þþ*Rþ,þ*þþ*0Ä-uÜ' ,oID **(JD *6Œ(»*(KD **(LD *>{^þ(¢+*:(MD }‡^*¶{ñ[{‡^o² ,{ò[{‡^oND (OD **:(PD }ˆ^*¶{ñ[{ˆ^o² ,{ô[{ˆ^o² (– **:(PD }‰^*æ{ñ[{‰^o² ,#{ò[{‰^oND ( þþ(– **(QD *.þ(j°*(QD *&(l°*(RD *&(n°*(SD *0Å-(€: (: (p°*(MB *"(r°*(TD *0É-(UD (VD (ô7 (ó7 uá',tá'(WD (Ñ·+=tâ'(XD (ó7 (XD (ô7 (r°(w°(r°(Ó· (r°(w°(r°sOB *:(÷? }YD *–{YD {YD (ò X(ó {YD (ò *(Ó *"(e°*(Ó *"(e°*(MB *"(r°*(ZD *0 rµãp(°(oº(a°s†º*(ZD *0 rµãp(°(oº(a°s†º*([D *&Ñ((³*([D *&Ñ((³*(/) *"{^**o &*6,( **&(ñ *:(\D }‹^*~{‹^(°(=+(]D þ(†+*’(^D }_D }`D }aD }bD *0 {_D {`D {aD {bD (S+*(cD *0'Ê-(dD (eD (fD (gD  shD *(iD *RsjD (T+þ(U+*(kD *6(ƒ+(°*(lD **þ(†+*:(mD }^*0-Ì-(D (ÿB {^(Q {^(˜°súB *(nD *0#Ì-(D (ÿB (Q (˜°súB *(nD *0#Ì-(D (ÿB (Q (˜°súB *:(oD }‘^*¢s±¼{‘^opD (P (‹+súB þ(Œ+*(qD *&(˜°*:(mD }’^*03Í-(D (ÿB {’^(u+ sµ¼(‹+(V+súB *{“^*{”^*{•^*{–^*{—^*{˜^*{™^*{š^*{›^*{œ^*{^*{ž^*{Ÿ^*{ ^*{¡^*{¢^*{£^*{¤^*{¥^*{¦^*{§^*{¨^*{©^*{ª^*{«^*{¬^*{­^*{®^*{¯^*{°^*{±^*{²^*{³^*{´^*{µ^*{¶^*{·^*{¸^*{¹^*{º^*{»^*{¼^*{½^*{¾^*{¿^*{À^*{Á^*{Â^*{Ã^*{Ä^*{Å^*{Æ^*{Ç^*{È^*{É^*{Ê^*{Ë^*{Ì^*{Í^*{Î^*{Ï^*{Ð^*{Ñ^*{Ò^*{Ó^*{Ô^*{Õ^*{Ö^*{×^*{Ø^*{Ù^*{Ú^*{Û^*{Ü^*{Ý^*"}Û^*"}Ü^*"}Ý^*0\( }“^}”^}•^}–^}—^}˜^}™^}š^ }›^ }œ^ }^ }ž^ }Ÿ^} ^}¡^}¢^}£^}¤^}¥^}¦^}§^}¨^}©^}ª^}«^}¬^}­^}®^}¯^}°^}±^ }²^!}³^"}´^#}µ^$}¶^%}·^&}¸^'}¹^(}º^)}»^*}¼^+}½^,}¾^-}¿^.}À^/}Á^0}Â^1}Ã^2}Ä^3}Å^4}Æ^5}Ç^6}È^7}É^8}Ê^9}Ë^:}Ì^;}Í^<}Î^=}Ï^>}Ð^?}Ñ^@}Ò^A}Ó^B}Ô^C}Õ^D}Ö^E}×^F}Ø^G}Ù^H}Ú^I}Û^J}Ü^K}Ý^*rx[p*’}Þ^}ß^}à^}á^(ü *0³{à^YE + +j+]8‚ €(µ o¶ }ß^}à^{ß^oï ,6{ß^o· }Þ^}à^{Þ^Ñ(«µ}á^*}Þ^+½}à^{ß^(Á+}ß^}à^}á^*0‡e {à^YE++e{à^E + ++++}à^{ß^(Á+}à^}á^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{à^E + + +++***"{á^*.s ½*’}â^}ã^}ä^}å^(ü *0³{ä^YE + +j+]8‚ (µ o¶ }ã^}ä^{ã^oï ,6{ã^o· }â^}ä^{â^Ñ(±µ}å^*}â^+½}ä^{ã^(Á+}ã^}ä^}å^*0‡e {ä^YE++e{ä^E + ++++}ä^{ã^(Á+}ä^}å^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ä^E + + +++***"{å^*.s½*’}æ^}ç^}è^}é^(ü *0³{è^YE + +j+]8‚ (µ o¶ }ç^}è^{ç^oï ,6{ç^o· }æ^}è^{æ^Ñ(¹µ}é^*}æ^+½}è^{ç^(Á+}ç^}è^}é^*0‡e {è^YE++e{è^E + ++++}è^{ç^(Á+}è^}é^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{è^E + + +++***"{é^*.s½*’}ê^}ë^}ì^}í^(ü *0¼{ì^YE + +s+f8‹ (µ o¶ }ë^}ì^{ë^oï ,?{ë^o· }ê^}ì^(Ÿ´{ê^(Ù´(©µ}í^*}ê^+´}ì^{ë^(Á+}ë^}ì^}í^*0‡e {ì^YE++e{ì^E + ++++}ì^{ë^(Á+}ì^}í^ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ì^E + + +++***"{í^*.s½*:(PB }î^*:{î^(ú°*V(PB }ï^}ð^*R{ï^{ð^(ÿ°*V(PB }ñ^}ò^*R{ñ^{ò^(ÿ°*(rD *.XÑ(а*:(MB }ó^*:{ó^(±*(ø *V{«]rëp(ñ þ*:(² }ô^*:{ô^(±*ro &}õ^ssD }ö^*0#v"{õ^{ö^otD XÑ {ö^ouD *6{ö^(W+*(vD *"{Ú]*(wD *"{Æ]*(xD *"{Ï]*(yD *0{@^ þozD *(yD *0{@^ þozD *:({D }÷^*zs:½{÷^o|D (‘+þ(’+*(}D *0{:^ þo~D *(}D *0{:^ þo~D *:(D }ø^*zs@½{ø^o€D (•+þ(–+*(D *&(<±*(D *&(<±*:(‚D }ù^*zsF½{ù^oƒD (›+þ(œ+*(„D *0#Î-(…D (†D (‡D (c (±*:(ˆD }ú^*0 UÎ-(…D (†D (‡D (ѰXÑ(а( µ(#µ{ú^(`°(åµ(Y (Z (Z (Z *(‰D *0(P (O sŠD *(© *J{^rþGp(ñ *:( }û^*se½**([½þ*sg½**([½þ*"si½**([½þ*"sl½**([½þ*{û^*Zr.8ps‹D (X+oŒD *0ÙÏ-þ9Åþ9º{û^ {û^ @¡([½ErèÚtd/ td/ (y {_ {_( ( (  (   /+ þ  , * /* þ*te/ te/ (y  {_ {_( ( (  (   /+ þ  , * /* þ*tf/tf/(y {_{_( (  (  (   /+ þ,+  /+  þ/*1*(y {_{_( (  (  (   /+ þ,*  /*  þ*tg/tg/(y {_{_o0³/*1*(y {_{_( (  (  (   /+ þ,*  /*  þ*Y**þ,**:¥b/o]½*0ÁÐ-¥b/ þ9¡¥b/þ9‘{û^ {û^ @x([½EmÜÀtd/ td/ {_{_( ( (  (   /+ þ  , * /* þ*te/ te/  {_ {_( ( (  (   /+ þ  , * /* þ*tf/tf/{_{_( (  (  (   /+ þ,+  /+  þ/*1*{_{_( (  (  (   /+ þ,*  /*  þ*tg/tg/{_{_o0³/*1*{_{_( (  (  (   /+ þ,*  /*  þ*Y**¥b/þ,**0EÑ-þ99 ([½E4jÊtd/  ¹y7ž{_ ( b X( abcXXX *te/ ¹y7ž{_ ( b X( abcXXX *tf/ ¹y7ž{_ ( b X( abcXXX ¹y7ž{_ ( b X( abcXXX *tg/ ¹y7ž{_ ( b X( abcXXX ¹y7ž{_o1³bcXXX **6(n o`½*0Ò-þ9þub/ 9ï{û^ {û^ @Ø([½ES¨Htd/ td/ {_{_( ( (  (   3 þ**te/ te/  {_ {_( ( (  (   3 þ**tf/ tf/ {_{_( ( (  (   3  þ+,E {_{_( ( (  (   3 þ***tg/tg/{_{_o3³,E{_{_( ( (  (   3 þ*****þþ*09Ó-þ9'þ9{û^ {û^ @([½E*X¥td/ td/ {_ {_þ(i+*te/te/{_{_þ(i+*tf/tf/ {_ {_(i+,{_ {_þ(i+**tg/ tg/  {_ {_o7³, {_ {_þ(i+****þþ*0Ô-ub/ , þoc½**>(R½}_*{_*>(R½}_*{_*Z(R½}_}_*{_*{_*Z(R½}_}_*{_*{_*:( }_*2{_{_*:( }_*2{_{_*:( }_*2{_{_*2{_{_*:( } _*2{ _{_*2{ _{_*{ _*{ _*V( } _} _*0°Õ-þ9œþ9‘(y { _ { _ ( (  (  ( /+þ,+/+þ /*1*(y { _ { _   þoD **þ,**:¥l/o|½*0µ×-¥l/ þ9•¥l/þ9…{ _ { _ ( (  (  ( /+þ,+/+þ /*1*{ _ { _   þoD **¥l/þ,**0QØ-þ,H ¹y7ž{ _oŽD bcXXX ¹y7ž{ _ ( bX( abcXXX **6(n o½*0yÙ-þ,jul/ ,^{ _ { _ ( ( ( (  3 þ+,{ _{ _þoD ***þþ*0DÜþ,5þ,-{ _ { _ (i+,{ _{ _þ(Y+***þþ*0Ú-ul/ , þo‚½**{ _*{ _*V( } _} _*0°Û-þ9œþ9‘(y { _ { _ ( (  (  ( /+þ,+/+þ /*1*(y { _ { _   þoD **þ,**:¥m/o‡½*0µÝ-¥m/ þ9•¥m/þ9…{ _ { _ ( (  (  ( /+þ,+/+þ /*1*{ _ { _   þoD **¥m/þ,**0QØ-þ,H ¹y7ž{ _oÞC bcXXX ¹y7ž{ _ ( bX( abcXXX **6(n oн*0yÞ-þ,jum/ ,^{ _ { _ ( ( ( (  3 þ+,{ _{ _þoßC ***þþ*0DÜþ,5þ,-{ _ { _ (i+,{ _{ _þ(+***þþ*0ß-um/ , þo½**( *sž½**up/þ*s ½**uq/þ*0á- uq/,+*Zr.8ps‘D (Z+o’D *0·ä-þ9£þ9˜  uq/,+   uq/,+ 3nup/,1tp/ tp/ (y {_ {_o~½*tq/tq/(y {_ {_   o‰½*Y**þ,**:¥n/o–½*0ºå-¥n/ þ9š¥n/þ9Š  uq/,+   uq/,+ 3`up/,+tp/ tp/ {_{_o~½*tq/tq/{_ {_   o‰½*Y**¥n/þ,**0_æ-þ,V up/,&tp/  ¹y7ž{_o½bcXXX *tq/  ¹y7ž{_oнbcXXX **6(n o™½*0©å-þ9—un/ 9ˆ  uq/,+   uq/,+ 3`up/,+tp/ tp/ {_{_o½*tq/tq/{_ {_   oŒ½***þþ*0•ç-þ9ƒþ9xuq/,+ uq/,+ 3Pup/,"tp/ tp/ {_ {_þo‚½*tq/tq/{_{_þo½***þþ*0á-un/ , þoœ½**:(½}_*{_*:(½}_*{_*:( }_*2{_{_*:( }_*2{_{_*(“D *0#é-(”D (•D (Ô o–D s—D *0î-o &(¿s˜D Œ»",+ r¨9ps‚ zŽi Y 2/£ï-(f°(C (u+(C X X3Ñs²½([+s´½(\+(C  s¶½s@< }_ s¹½s@< }_s¼½(V (¿s™D o]+(›D  (œD  o¯½  (D }_ (žD }_ (ŸD }_*"{_*"{_*"{_*0Gæ){_o& Þ4t u‰ ,"r[p(e°( r¶[p( s\ zþ*40Šï-{_o& Ýtt u‰ ,brÒ[pŒ’,4u¼,(x ¥|o¡ +o& +rR9p( r\p( s\ zþ*t0tð-('¶Eaj£9*t. {ƒ[ o¬½(×µ*tý- {m[ o¬½(»µ*t(. {·[rPCpsÀ½("°(ÚB (^+(%¶*tÿ-{o[{q[ {p[o¬½o¬½(¿µ*t.{r[(û9  {r[(¯= s½ (´+o¬½s¨ (Áµ*0Q{_o% ,{_o& s D *(|°oòB {_o (^ oíB s D *:(¡D }_*0¥ñ-([½E'C5td/{_ {_( ( (N±*te/{_ +×tg/{_ +Étf/ {_ {_ {_( ( (N±{_( ( (N±*:(¢D }_*09ç){ _ {_( ( (N±{_s°½{ _(_+*:(£D }_*0"ç){ _ {_( ( (N±**o &**þ**o &**þ*V(¤D }_}_*0`ò-(œD (›D {_oH {_o¯½ (ŸD  (žD  (D {_{_o s™D *:(- }_*:{_o¬½*V(¥D }_} _*â{ñ[{ _o² ,"{õ[{_s¾½{ _(`+(§D **:(- }!_*:{!_o¬½*Fo &}"_*0-.( ( {"_oH {"_oH sZ *0/ç)oŽ ( ( oŽ ( ( (Q±*0/ç)oŽ ( ( oŽ ( ( (O±*ZsÛ½(R±þ(a+*Fsݽþ(¬+*0GÜ{ _ oŽ ( ( oŽ ( ( (Q±,{ _oɽ**Zsß½(R±þ(b+*Zsá½(R±þ(b+*ž{ _oʽ,*sã½{ _þ(c+*0Uó-{ _ { _ oŽ ( ( oŽ ( ( (Q±,*så½{ _þ(c+*>{ _oʽ*Zsç½(R±þ(a+*Fsé½þ(¬+*0GÜ{ _ oŽ ( ( oŽ ( ( (O±,{ _oѽ**Zsë½(R±þ(a+*ž{ _oÒ½,sí½{ _þ(¬+**>{ _oÒ½*0=ó-{ _ { _ oŽ ( ( oŽ ( ( (O±*0=ó-{ _ { _ oŽ ( ( oŽ ( ( (Q±*0³ô-uq/,Ptq/ uq/,tq/ {_ {_  o×½*tp/{_{_ oν*tp/uq/,&tq/ {_{_ { _oʽ*tp/{_{_oͽ*0I÷-sï½ sõ½ up/,tp/ {_(V±*tq/ {_{ _(S±*0Aú-s÷½ sù½ uq/,tq/ {_(Y±*tp/  {_(X±*V(¨D }#_}$_*0>ç){#_oŽ ( ( {#_{$_oŽ ( ( (Q±*V(©D }%_}&_*R{%_{&_oȽ*V(¨D }'_}(_*R{'_{(_oʽ*V(¨D })_}*_*0EÜ{*_{ _ {)_oŽ ( ( {)_oŽ ( ( (Q±*V(©D }+_},_*R{+_{,_o˽*V(©D }-_}._*R{-_{._o̽*V(¨D }/_}0_*0>ç){/_oŽ ( ( {/_{0_oŽ ( ( (O±*V(©D }1_}2_*R{1_{2_oн*V(¨D }3_}4_*R{3_{4_oÒ½*V(©D }5_}6_*R{5_{6_oÓ½*:(· }7_*0".( ( {7_sZ (S±*:(a8 }ªD *B{ªD o^< X*:(a8 }«D *B{«D o^< X*:(¬D }:_*N{:_(R±(d+*:(­D };_*0".( ( {;_sZ (W±*:(®D }<_*0)ÿ{<_(R±(e+¥7 r¨Åp(p+(` *(¯D *"{ÿ[*(°D *"(±D *(MB *"(r°*(°D *"(±D *:(²D }=_*:{=_(ïB *(³D *0û-(¿(j° s¾*(MB *"(r°*(©D *Š([½E***²(´D }µD }¶D }·D }¸D }¹D *0 qþ-([½E Ør2\ps\ ztf/ {_ {_ {¶D {µD {·D ( ( {¹D (f+ (ºD  (»D (¼D  (»D (½D {¶D {µD {·D ( ( (f+(ºD (»D  {¸D sò7 (¾D  s¿D (ÀD (ÁD (g+sÂD *tg/  {_  {_ {¶D {µD {·D ( ( {¹D (f+ (ºD  (»D  {¸D  (ÃD  s¿D (ÀD (ÁD (g+sÂD *r(ÄD }ÅD }ÆD }ÇD *0 ).(ÈD (ÉD {ÅD {ÆD {ÇD sÊD *(ËD *0.(ÌD (ÍD (ÎD *(ÏD *0+.(ÌD (ÍD (¼D (½D  sò7 sÐD *V(²D }ÑD }ÒD *0c.{ÒD (½D {ÑD uá',(¿+"{ÑD tâ' (XD (ó7 (¿(j° (¿(j°(ïB  (ïB *(ÓD *0.(ÌD (ÍD sÔD *(ÕD *0.(ÖD (×D (ØD (x°*(ÕD *0.(ÖD (×D (ØD (y°*(©D *Š([½E***(©D *Š([½E***(°D *"(±D *(MB *"(r°*:(ÙD }H_*:{H_oÙ½*ò(ÚD }ÛD }ÜD }ÝD }ÞD }ßD }àD }áD *0 }.uq/,8tq/ {ÝD {ÜD {ÛD {ÞD {_{àD {áD (h+*tp/ {ÛD {ÝD {ÞD {ÜD {ßD {_{àD {áD (i+*²(âD }ãD }äD }åD }æD }çD *0 5.(èD (éD {ãD {äD {åD {æD {çD sêD *(ëD *"s\ zV(ìD }íD }îD *0\.(ïD (ðD ( ( {íD {îD (Q±,*( ( {íD {îD (O±,*rP\ps\ z(ñD *0c .(òD (óD sôD (P  oõD ,!(öD (÷D  oøD *(ùD (÷D  oøD *(úD *B(j+þ(k+*:(ûD }W_*F{W_oüD þ*V(ýD }X_}Y_*0n.{X_{Y_Y(l+ (þD (ÿD ¥((m+ {X_{Y_(n+s1¾ (o+(E þ-sZ z sE *(E *0.( ( s3¾*:(¿B }Z_*¦{Z_( {Z_( ( ( (P±*(E *0.(ïD (ðD s7¾*(E *0S.(E ,@ (E (E -(E (ïD *(E (E (ïD sE þ(p+*rÕ\ps\ zr(E }[_}\_}]_*0 4.( E ( E {\_{]_(q+(r+{[_(s+*( E *"(½*( E *"(’½*() *rŸKp*(¯D *"{ÿ[*:( E }^_*0_.r·KpsE¾{ _(¨+¥7 r¸9p(p+(` ( r‚^p( { _ {^_( ( (g±( *(E *"(E *(MB *"(r°*r(E }__}`_}a_*0S.{a_(t+ ¥((m+ {`_{__{_oðB oìB sI¾(u+ sK¾ (&+(u°*Ò(E }b_}c_}d_}e_}f_}g_*0 Ÿ.(q+ (r+ {e_{g_(q+(r+{d_sE (q+(r+{d_{e_{g_s=¾ {d_{f_{d_{_(‚+(a±(v+(°(E (w+s?¾{b_(x+ sA¾{c_(y+   (z+{d_{_sE ({+ Ýt  u‰  ,z{e_sG¾ró\psê (,+(|+{b_(}+{c_(~+(Ÿ+¥7r 8p(p+(` oì & {d_{_sE ({+ Þþ ( E ( E rÎ]p{d_sM¾(¹+*¶)ß{h_*{i_*V( }h_}i_*0e .þ,Tþ,L(y {h_ {h_  oE /*1*(y {i_{i_þo0³**þ,**B¥»/þoT¾*0j!.¥»/ þ,M¥»/þ,@{h_ {h_  oE /*1*{i_{i_þo0³**¥»/þ,**0Cþ,: ¹y7ž{i_o1³bcXXX ¹y7ž{h_oE bcXXX **6(n oW¾*0P".þ,Au»/ ,5{h_ {h_ oE ,{i_ {i_ þo3³***þþ*0@þ,1þ,){h_{h_(+,{i_{i_þo7³***þþ*0#.u»/ , þoZ¾**() *"{Ü]*:(E }j_*0@$.{Ú]{ß] -"rûOp{j_( rÞ]p( s\ z( sE *:(Ó }k_*B{k_þo  *:(Ù }l_*0¸{l_oÚ s`¾*:( }m_*0º{m_oŽ sb¾*:( }n_*0B {n_o sd¾*r}o_}p_}q_(F *0e{p_YE + ++3+7}p_}q_*}p_{o_(¤±¥oo*}p_}q_*&}p_*Æ{p_E + + +++***"{q_*>{o_sh¾*(E *"s\ z0T}E }E }E }E }E } E }!E }"E  }#E  }$E (F *0»{#E YE +!8+r8Z8-88i{E o%E (±¥ooG }E }#E {E oï ,0{E oH }E }#E {E }$E *}E +Ã}#E {E (c+}E {E ¥(o&E } E }#E { E oï 9{ E o'E }E {E {E (€+¥ooG }"E }#E {"E oï ,0{"E oH }!E }#E {!E }$E *}!E +Ã}#E {"E (c+}"E }E 8Sÿÿÿ}#E { E (+} E }#E }$E *0Êe {#E YE+8¥{#E E ++R+;+7++++@}#E {"E (c+}#E { E (++}#E {E (c+}#E }$E  Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{#E E +++++ +++ ******"{$E *0{E {E s(E *Ò})E }*E }+E },E }-E }.E (F *0à{-E YE ++n+a8¤8¥{*E (¥±¥ooG },E }-E {,E oï ,0{,E oH }+E }-E {+E }.E *}+E +Ã}-E {,E (c+},E }-E {)E {*E (€+¥oo*}-E }.E *0”e {-E YE+8o{-E E ++$+ + +++}-E {,E (c+}-E }.E  Þ t   Þ&8wÿÿÿþ,z*[w ê{-E E +++ +++****"{.E *0 {)E {*E s/E *0\}0E }1E }2E }3E }4E }5E }6E }7E  }8E  }9E  }:E (F *0Á{9E YE +!8+r8`838#8o{1E o%E (±¥ooG }5E }9E {5E oï ,0{5E oH }4E }9E {4E }:E *}4E +Ã}9E {5E (c+}5E {1E ¥(o&E }6E }9E {6E oï 9£{6E o'E }3E {0E {2E {3E (‚+¥ooG }8E }9E {8E oï ,0{8E oH }7E }9E {7E }:E *}7E +Ã}9E {8E (c+}8E }3E 8Mÿÿÿ}9E {6E (+}6E }9E }:E *0Êe {9E YE+8¥{9E E ++R+;+7++++@}9E {8E (c+}9E {6E (++}9E {5E (c+}9E }:E  Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{9E E +++++ +++ ******"{:E *0!{0E {1E {2E s;E *0\}E }?E }@E }AE }BE }CE  }DE  }EE  }FE (F *0Ÿ{EE YE $+'+C8œ8Œ8 8ù8B8C}EE {?E ,T+S}FE *{>E (¤±¥ooG }BE }EE {BE oï ,0{BE oH }AE }EE {AE }FE *}AE +Ã}EE {BE (c+}BE {=E (£±¥ooG }DE }EE {DE oï ,0{DE oH }CE }EE {CE }FE *}CE +Ã}EE {DE (c+}DE }EE {E {@E (‚+¥oo*}EE }FE *0Ãe {EE YE+8ž{EE E ++G+C+*+&+ + ++2+/}EE {DE (c++}EE {BE (c++}EE }FE  Þ t   Þ&8Hÿÿÿþ,z*Ц 0U{EE E ++!++++ +++ *******"{FE *0+{E {?E {@E sGE *0¤}˜_}™_}š_}›_}œ_}_}ž_}Ÿ_ } _ }¡_ }¢_ }£_ }¤_}¥_}¦_}§_}¨_}©_}ª_}«_(F *0 Ç{ª_YE  !'-39?+B8¡8‘8À8…8u8.88/88ò8@%РY(E ¥ooG }¡_}ª_{¡_oï ,0{¡_oH } _}ª_{ _}«_*} _+à }ª_{¡_(c+}¡_{›_¥¡{™_¥((ƒ+oHE }¢_}ª_{¢_oï 9Ó{¢_oIE }œ_{œ_(JE }_{œ_(KE }ž_{˜_{ž_{_(„+¥ooG }¤_}ª_{¤_oï ,0{¤_oH }£_}ª_{£_}«_*}£_+Ã}ª_{¤_(c+}¤_}ž_}_}œ_8ÿÿÿ }ª_{¢_(…+}¢_{š_oLE Ñ(€±¥ooG }¦_}ª_{¦_oï ,0{¦_oH }¥_}ª_{¥_}«_*}¥_+à }ª_{¦_(c+}¦_{š_¥#(oME }§_}ª_{§_oï 9Å{§_oNE }Ÿ_{˜_{Ÿ_(ï {Ÿ_(ð {Ÿ_(ñ {Ÿ_(ò (†+¥ooG }©_ }ª_{©_oï ,1{©_oH }¨_ }ª_{¨_}«_*}¨_+Â}ª_{©_(c+}©_}Ÿ_8+ÿÿÿ }ª_{§_(‡+}§_ }ª_}«_*0De {ª_ YE+8{ª_E  !$'*-0+38³8˜8‘8t+]+Y+?+;+!+ +8†}ª_{©_(c+ }ª_{§_(‡++Z }ª_{¦_(c++B}ª_{¤_(c+ }ª_{¢_(…++ }ª_{¡_(c+ }ª_}«_ Þ t   Þ&8Çþÿÿþ,z*A ' 0y{ª_E  !$+$+5+0+++&+!++++ +++***********"{«_*0/{˜_{™_{š_{›_sˆ¾*r}¬_}­_}®_(­ *0z{­_YE + +-+D+L{¬_{•^-7}­_{¬_(½±}®_*}­_{¬_(¾±}®_*+}­_}®_*&}­_*Æ{­_E + + +++***"{®_*>{¬_s޾*0l}¯_}°_}±_}²_}³_}´_}µ_}¶_ }·_ }¸_ }¹_ }º_ }»_(F *0 {º_YE +!8+r8¯8m8]8¾{°_oOE (±¥ooG }¶_}º_{¶_oï ,0{¶_oH }µ_}º_{µ_}»_*}µ_+Ã}º_{¶_(c+}¶_{°_¥%(oPE }·_}º_{·_oï 9ò{·_oQE }±_{±_(RE }²_{±_(SE }³_{±_(TE }´_{¯_{´_{³_{²_(†+¥ooG }¹_}º_{¹_oï ,0{¹_oH }¸_}º_{¸_}»_*}¸_+Ã}º_{¹_(c+}¹_}´_}³_}²_}±_8þþÿÿ}º_{·_(ˆ+}·_}º_}»_*0Êe {º_YE+8¥{º_E ++R+;+7++++@}º_{¹_(c+}º_{·_(ˆ++}º_{¶_(c+}º_}»_ Þ t   Þ&8Aÿÿÿþ,z*‘­ 0L{º_E +++++ +++ ******"{»_*0{¯_{°_s”¾*0Œ}¼_}½_}¾_}¿_}À_}Á_}Â_}Ã_ }Ä_ }Å_ }Æ_ }Ç_ }È_}É_}Ê_}Ë_}Ì_(F *0[{Ë_YE  $*06<+?+N8¬8œ8Þ8„8t88 8„8t8×}Ë_.Ò}Ì_*{½_oUE (±¥ooG }Ã_}Ë_{Ã_oï ,0{Ã_oH }Â_}Ë_{Â_}Ì_*}Â_+à }Ë_{Ã_(c+}Ã_{½_¥'(oVE }Ä_}Ë_{Ä_oï 9ö{Ä_oWE }¾_{¾_(XE }¿_{¾_(YE }À_{¿_{¿_oý²oþ²(£±¥ooG }Æ_}Ë_{Æ_oï ,0{Æ_oH }Å_}Ë_{Å_}Ì_*}Å_+Ã}Ë_{Æ_(c+}Æ_{¼_{À_s”¾(8+}Á_{Á_Ži(±¥ooG }È_}Ë_{È_oï ,0{È_oH }Ç_}Ë_{Ç_}Ì_*}Ç_+Ã}Ë_{È_(c+}È_{Á_¥ooG }Ê_ }Ë_{Ê_oï ,1{Ê_oH }É_ }Ë_{É_}Ì_*}É_+Â}Ë_{Ê_(c+}Ê_}Á_}À_}¿_}¾_8úýÿÿ }Ë_{Ä_(‰+}Ä_ }Ë_}Ì_*0.e {Ë_ YE+8{Ë_E  !$'*-0+088–8y8r+X+A+=+$+ +++s}Ë_{Ê_(c++,}Ë_{È_(c++}Ë_{Æ_(c+ }Ë_{Ä_(‰++ }Ë_{Ã_(c++ }Ë_}Ì_ Þ t   Þ&8Ýþÿÿþ,z*ô 0y{Ë_E  !$+$+5+0+++&+!++++ +++***********"{Ì_*0"{¼_{½_sš¾*žo &}Í_}Î_}Ï_ }Ð_*0 ¢'.o¦¾[3 o©¾+o¤¾`.o¤¾[þþ+,o¤¾]þþ+,o¤¾,þþ+,o¤¾{Ð_þþ+, o§¾8”ÿÿÿoª¾ o¦¾`@­o©¾o¦¾i0i2o¦¾i9iþþ+,o¤¾i0iþþ+,o¤¾i9iþþ+, o§¾+§oª¾(ZE o©¾rJ p( þ’o& ( s«¾([+(´= s[E +s[E (\E (]E o¦¾[3Q o¦¾].X o§¾+èo©¾(V s³- (ÛA (Š+(‡²(^E +o¦¾,3+ o¦¾ þ,o¤¾[.o¥¾[þþ++,?s±¾(o+  ¥7 r:p (p+(`   sH (Q²(j²+(f² o¦¾]3 o©¾+o¦¾,3 o©¾+ (<° , (: +(° s³ {èY  rïðp(ñ , (³8Ê r“ïp(ñ ,+ã ryïp(ñ ,+Ó r«ïp(ñ ,+à r ñp(ñ ,+³ rÇïp(ñ ,+£ rÆfp(ñ ,8ÿÿÿ rãïp(ñ ,8}ÿÿÿ rgp(ñ ,8jÿÿÿ rüfp(ñ ,8Wÿÿÿ ràfp(ñ ,8Dÿÿÿ r0gp(ñ ,81ÿÿÿ( ³,(_E (³**0õo£¾o¡¾ (ã (&´*B}Î_}Ï_*Æ{Ï_{Í_ob Y/{Í_{Ï_Xo^ *{Ð_*Æ{Ï_{Í_ob Y/{Í_{Ï_Xo^ *{Ð_*¶{Ï_{Í_ob /{Í_{Ï_o^ *{Ð_*B{Ï_X}Ï_*:{Ï_}Î_*^o¨¾o§¾o¨¾*0f(.{Ï_{Í_ob /A{Í_ {Î_(V {Ï_(V (Õ  (Õ YXoL +rR9p o©¾*Ò}Ñ_}Ò_}Ó_}Ô_}Õ_}Ö_(Q *0 µ{Õ_YE + +l+_8„{Ò_Y(µ o¶ }Ô_}Õ_{Ô_oï ,5{Ô_o· }Ó_}Õ_{Ñ_o¡¾}Ö_*}Ó_+¾}Õ_{Ô_(Á+}Ô_}Õ_}Ö_*0‡e {Õ_YE++e{Õ_E + ++++}Õ_{Ô_(Á+}Õ_}Ö_ Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{Õ_E + + +++***"{Ö_*0 {Ñ_{Ò_s«¾*r}×_}Ø_}Ù_(• *0¯{Ø_YE ++'+?+W+o+s}Ø_{×_(α}Ù_*}Ø_{×_(α}Ù_*}Ø_{×_(α}Ù_*}Ø_{×_(α}Ù_*}Ø_}Ù_*&}Ø_*0C{Ø_E ++++ +++*****"{Ù_*>{×_s±¾*{Ú_*{Û_*V( }Ú_}Û_*0e*.þ,Tþ,L(y {Ú_ {Ú_  o`E /*1*(y {Û_{Û_þoaE **þ,**:¥Ï/oº¾*0j+.¥Ï/ þ,M¥Ï/þ,@{Ú_ {Ú_  o`E /*1*{Û_{Û_þoaE **¥Ï/þ,**0Cþ,: ¹y7ž{Û_obE bcXXX ¹y7ž{Ú_ocE bcXXX **6(n o½¾*0P,.þ,AuÏ/ ,5{Ú_ {Ú_ odE ,{Û_ {Û_ þoeE ***þþ*0@þ,1þ,){Ú_{Ú_(‹+,{Û_{Û_þ(Œ+***þþ*0-.uÏ/ , þoÀ¾**{Ü_*{Ý_*V( }Ü_}Ý_*0Cþ,: ¹y7ž{Ý_(+bcXXX ¹y7ž{Ü_(Ž+bcXXX **6(n ož*0F±,þ,7uÐ/ ,+{Ü_{Ü_(+,{Ý_{Ý_þ(+***þþ*0@þ,1þ,){Ü_{Ü_(‘+,{Ý_{Ý_þ(’+***þþ*0±,uÐ/ , þoȾ**:(º: }Þ_*V{Þ_{¥](ß±*:(­: }ß_*B{ß_(×±*:(ƒ: }à_*V{à_{eZ(Þ±*:(fE }á_*B{á_(ß±*:(Ù< }â_*B{â_(å±*:(: }ã_*0Z..(€: (: {ã_(å±u‚.,t‚. {ã_{\(×±*tƒ. {ã_ {\(å±*:(7< }ä_*B{ä_(ç±*:(»: }å_*B{å_(ê±*:(³: }æ_*B{æ_(é±*:(­: }ç_*B{ç_(×±*:(Ÿ: }è_*B{è_(Û±*:(Ÿ: }é_*B{é_(Û±*:(´: }ê_*B{ê_(í±*:(Ÿ: }ë_*B{ë_(Û±*:(Ÿ: }ì_*B{ì_(Û±*:(à }í_*B{í_(ï±*:(1 }î_*ž{î_{Û](×±{î_{æ](á±*:(M< }ï_*B{ï_(ó±*:(­: }ð_*B{ð_(×±*:(®: }ñ_*B{ñ_(ô±*:(O< }ò_*V{ò_{D^(á±*:(À: }ó_*ž{ó_{V^(÷±{ó_{X^(á±*:(gE }ô_*B{ô_(ú±*(hE *&(iE *(jE *&(kE *(lE *V{n](n þo3³*:(ø }õ_*0m/.{õ_{Z {­] (n oϲ,sü¾{®]{õ_{Z(“++,'{¯]{v] {õ_{Z  (n þo3³**{ö_*{÷_*V( }ö_}÷_*0T» þ,Cþ,;(y {ö_{ö_(R+ /*1*(y {÷_{÷_( **þ,**:¥ì/o¿*0[1.¥ì/ þ,>¥ì/þ,1{ö_{ö_(R+ /*1*{÷_{÷_( **¥ì/þ,**0LÍþ,C ¹y7ž{÷_ , ( +bcXXX ¹y7ž{ö_(Í+bcXXX **6(n o¿*0C2.þ,4uì/ ,({ö_{ö_(Î+,{÷_{÷_(ñ ***þþ*&s¿*"{ö_*"{÷_*úþ,/þ,'{ö_{ö_(Ð+,{÷_{÷_(ñ ***þþ*02.uì/ ,o ¿**{ø_*{ù_*V( }ø_}ù_*0T» þ,Cþ,;(y {ø_{ø_(R+ /*1*(y {ù_{ù_( **þ,**:¥í/o¿*0[3.¥í/ þ,>¥í/þ,1{ø_{ø_(R+ /*1*{ù_{ù_( **¥í/þ,**0LÍþ,C ¹y7ž{ù_ , ( +bcXXX ¹y7ž{ø_(Í+bcXXX **6(n o¿*0C4.þ,4uí/ ,({ø_{ø_(Î+,{ù_{ù_(ñ ***þþ*&s¿*"{ø_*"{ù_*úþ,/þ,'{ø_{ø_(Ð+,{ù_{ù_(ñ ***þþ*04.uí/ ,o¿**~ `*.þ( +*.þ(”+*.({ þ**þ(•+**þ(–+*.þ(¥+*.þ(_ +*.þ(—+****(B+*.þ(˜+*(€ *2þ(ê+*.þ(h+*Æ/ _f_`*(/aa*3j!Zci ÿ_*?_?3(J¿j!Zi ÿ_**0e6.{ü_ {û_ {ú_Ži 3 €* X?X@[@ZY  Y/*?_83j!Z8ci ÿ_*(3¿*0C7.{û_ {ú_ {ü_Ži2 (4¿+{ü_£i {ü_X(I¿*0+V(5¿ (5¿ (5¿ bb`b`(5¿`*0 `8. #Egsß ‰«Íïsß þܺ˜sß vT2sß ðáÒÃsß sß sß sß sß sß  P(x+ {ý_:Å +  (6¿¤’ X  2å +F    Y£’  Y£’  Y£’  Y£’aaa(2¿¤’ X  P2´(ò (ó (ò (ó (ò (ó  (ò (ó  (ò (ó  8”(ò (2¿ (ò (ò (ò (,¿X (ò X  £’X (1¿X  (ò (ó (ò (ó (ò (2¿(ó (ò (ó  (ó  X  P?cÿÿÿ(ò (ò X(ó (ò (ò X(ó (ò (ò X(ó (ò (ò X(ó (ò  (ò X(ó 80þÿÿ(ò (ò (ò (ò (ò sá: *0ÿ:.(9¿sK¿(7¿ (ÿA (þA ’% ÿ_¤’%c ÿ_¤’%c ÿ_¤’%c ÿ_¤’% ÿ_¤’%c ÿ_¤’%c ÿ_¤’%c ÿ_¤’ Œ,+ r¨9ps‚ z ŽiY2  £’Ò¤XX3à*s:¿*:( }ú_*{ú_*&*Zr.8psmE (™+onE *08;.þ,'þ,&  (y {ú_{ú_þ(h+**þ,**B¥ñ/þo>¿*0E<.¥ñ/ þ,(¥ñ/þ,&  {ú_{ú_þ(h+**¥ñ/þ,**0.=.þ,% &  ¹y7ž{ú_(i+bcXXX **6(n oA¿*06<.þ,'uñ/ ,&  {ú_{ú_þ(j+**þþ*01;.þ,"þ,&  {ú_{ú_þ(l+**þþ*0>.uñ/ , þoD¿**{û_*{ü_*{ý_*"}ü_*"}ý_*r( }û_}ü_}ý_*0¦?.þ9’þ9‡(y {û_ {û_  o@¿ /*1*(y {ü_{ü_/+þ/*1*(y {ý_{ý_/*þ**þ,**:¥ò/oL¿*0¥A.¥ò/ þ9…¥ò/þ9u{û_ {û_  o@¿ /*1*{ü_{ü_/+þ/*1*{ý_{ý_/*þ**¥ò/þ,**0Rþ,I ¹y7ž{ý_bcXXX ¹y7ž{ü_bcXXX ¹y7ž{û_oA¿bcXXX **6(n oO¿*0TB.þ,Euò/ ,9{û_ {û_ oC¿,{ü_{ü_3{ý_{ý_þ****þþ*0Kþ,<þ,4{û_{û_oD¿,{ü_{ü_3{ý_{ý_þ****þþ*0C.uò/ ,oR¿**08D.r:^p(Ü: (è+þ Þ t  Þ€þ_(«+€ÿ_ soE €`dspE €` sqE €`m€`srE €`(V s³- (ÛA (ÜA (‡²€ÆY€ÇY(´²(œ²(IJ€ÞY€àY(¸²(œ²(IJ€ßY€àY(= €`(= €`(sE stE €`(¼= €`(X € `(uE svE € `(X (†´€ `(°(wE € `(š+€ `(A (‡¹€`(‹ (•°€`(P (š°€`s ½(›+€`(а€`s½(›+€`s½(›+€`s½(›+€`’%ЙY(E (JÀ(²€`rùEp(Û°(i (P²(j²€`(ܰ(Ú°€`(³(a°sº€`(ø7 €`(-±(t+(*±€`($ €`(1±(î+(.±€`(# €`(5±(í+(2±€`(R (=±€ `(jC (b s¹¾€!`(  €#`#`(xE ÐsyE €$`$`(xE YszE €"`* 0¦½(y {E`{E`(z+ /*1*(y {F`{F`(z+ /*1*(y {G`{G`(z+ /*1*(y {H`{H`(z+ / * 1 *(y {I`{I`þ(z+*0’½{E`{E`(z+ /*1*{F`{F`(z+ /*1*{G`{G`(z+ /*1*{H`{H`(z+ / * 1 *{I`{I`þ(z+*0 ¹y7ž{I`(û+bcXXX ¹y7ž{H`(û+bcXXX ¹y7ž{G`(û+bcXXX ¹y7ž{F`(û+bcXXX ¹y7ž{E`(û+bcXXX ¹y7ž{D`(û+bcXXX ¹y7ž{C`(œ+bcXXX *~—`*~˜`*0%rT^p(k rb^p( s¿¿þ(+*0«E.rüpoÚ -rüp( + r”^poÚ ,rž^p([ (\ (Z¿8)rØ^poÚ ,râ^p([ (\ (Z¿8r_poÚ ,r&_p([ (\ (Z¿8Ùrb_poÚ ,.rl_pr¢_pr&_p([ (\ (\ (\ (Z¿8rdMpoÚ ,?rÒ_pr`prl_pr¢_pr&_p([ (\ (\ (\ (\ (\ (Z¿+Pr.MpoÚ ,r8`p([ (\ (Z¿++r,ÁpoÚ ,rn`p([ (\ (Z¿+([ (è+ r¤`ps (­+ sÿr:p(` (®+oì &*0rap( -(w¿*r8ap( -(y¿*rDap( -(u¿*rzap( -(q¿*ob  2ržap oL ( þ+,(s¿*({¿*0<J.  u0,+  u0,+   u0,+  u0,+ @ö  u0- u0-3 u0:~t0 t0 (y {P` {P`( *t0t0(y {Q`{Q`( /*1*(y {R`{R`( *t0t0 (y {S` {S`( /*1*(y {T` {T`( *Y*0K.  u0,+  u0,+   u0,+  u0,+ @Ð  u0- u0-) u0-it0 t0 {P` {P`( *t0t0{Q`{Q`( /*1*{R`{R`( *t0t0{S`{S`( /*1*{T`{T`( *Y*0üL. u0-u0-;u0:‚t0  ¹y7ž{P` , ( +bcXXX *t0  ¹y7ž {R` , ( +bcXXX ¹y7ž {Q` , ( +bcXXX *t0 ¹y7ž{T` , ( +bcXXX ¹y7ž{S` , ( +bcXXX *0\]({E -;oì Þ-t (H (|E (Æ¿(}E (~E (E  Þ&*(Æ¿(}E (~E (E * -0b]({E -?(+ Þ/t (H (|E (Ê¿(}E (~E (E  Þ&*(Ê¿(}E (~E (E * /0b]({E -?(+ Þ/t (H (|E (È¿(}E (~E (E  Þ&*(È¿(}E (~E (E * /0 ÇR.(€E sE s‚E  sæ¿  sè¿ sƒE  o„E (‘¿(n oœ¿([ (n oe , ([¿+(è+sò¿(+sô¿(+ o…E o†E o‡E oˆE o‰E oŠE  sö¿(ž+o‹E  ,rap([ (\ +([  (•¿E¯ r´ap(`¿ ([ (\ ([ (\ rDap([ (\ rbpsF (Ÿ+  sÀ   (Þ+([ (\ rzap([ (\ r8ap([ (\ (Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+8» r.bp(`¿rDap([ (\  ([ (\ ([ (\ rbpsF (Ÿ+  s À   (Þ+([ (\ rzap([ (\ ([ (\ r8ap([ (\ (Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+(Ÿ+  (è+oŒE m%rEp¤m%rRÁp¤moE oŽE  ({E -+t(@ rR9pr€bp(a¿rR9prímpsE ( +oE (a¿rR9prÜbp(a¿ s À(}E (¡+ -sg¿zsÀ(¢+sÀ(p+sÀ(p+s À(p+s&À(p+s,À(p+s2À(p+s¶¿*0G"s~ ( Áo'Á,*r¿po ,+ r‡po -*(U s~ *0\(£+,0ü/mmmmmms¶¿*     (c¿*01T.Œ@!,+ r¨9ps‚ zŽi ê Y 24£ê(™ (š (d¿¤êX X3Ì s8À(¤+(’E (“E      (e¿     (e¿ %{C`¤% {C`¤¥3((¥+{D`¥7sQ   {D`¥7sQ    (f (¦+{E`¥7sQ   {E`¥7sQ    (f (¦+{F`¥7sQ   {F`¥7sQ    (f (¦+{G`¥7sQ   {G`¥7sQ    (f (¦+{H`¥7sQ   {H`¥7sQ    (f (¦+{I`¥7sQ   {I`¥7sQ    (f (¦+s¶¿*(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (§+-***þþ*Žþ,þ, (§+-***þþ*0*u ,om¿**0Csp¿€'`sp¿€(`sp¿€)`sp¿€*`sp¿€+`sp¿€,`*:( }&`*~'`**(¿þ*~(`**(¿þ*~)`**(¿þ*~*`**(¿þ*~+`**(¿þ*s‰¿**(¿þ*~,`**(¿þ*{&`*Zr.8ps•E (¨+o–E *0aV.þ,Pþ,H{&` {&` 32(¿3'tø/ tø/ (y {4` {4`( **Y**þ,**:¥ö/o¿*0mW.¥ö/ þ,P¥ö/þ,C{&` {&` 3-(¿3"tø/ tø/ {4`{4`( **Y**¥ö/þ,**0yX.þ,p (¿E C * * * * *tø/  ¹y7ž{4` , ( +bcXXX * **6(n o„¿*0\W.þ,Muö/ ,A{&` {&` 3-(¿3"tø/ tø/ {4`{4`(ñ ****þþ*0VY.þ,Gþ,?{&` {&` 3+(¿3 tø/ tø/ {4` {4`(ñ ****þþ*0Z.uö/ ,o‡¿**>(p¿}4`*{4`*:( }5`*2{5`{4`*ŠsŽ¿€7`sŽ¿€8`sŽ¿€9`*:( }6`*~7`**(•¿þ*~8`**(•¿þ*~9`**(•¿þ*{6`*Zr.8ps—E (©+o˜E *01.þ, þ,{6` {6` 3*Y**þ,**:¥ú/o—¿*0B[.¥ú/ þ,%¥ú/þ,{6` {6` 3*Y**¥ú/þ,**0.þ,% (•¿E * * **6(n oš¿*0.[.þ,uú/ ,{6` {6` þ**þþ*0*.þ,þ,{6` {6` þ**þþ*0\.uú/ ,o¿**{=`*{>`*{?`*{@`*{A`*{B`*Ò( }=`}>`}?`}@`}A`}B`*0].þ9íþ9â(y {=`{=`( /*1*(y {>` {>` oƒ¿ /*1*(y {?`{?`( /*1*(y {@`{@`( /*1*(y {A`{A`( /*1*(y {B`{B`( **þ,**:¥ü/o¦¿*0î_.¥ü/ þ9Î¥ü/þ9¾{=`{=`( /*1*{>` {>` oƒ¿ /*1*{?`{?`( /*1*{@`{@`( /*1*{A`{A`( /*1*{B`{B`( **¥ü/þ,**0ßÍþ9Ó ¹y7ž{B` , ( +bcXXX ¹y7ž{A` , ( +bcXXX ¹y7ž{@` , ( +bcXXX ¹y7ž{?` , ( +bcXXX ¹y7ž{>`o„¿bcXXX ¹y7ž{=` , ( +bcXXX **6(n o©¿*0¡`.þ9uü/ 9€{=`{=`(ñ ,k{>` {>` o†¿,Q{?`{?`(ñ ,<{@`{@`(ñ ,'{A`{A`(ñ ,{B`{B`(ñ *******þþ*zr*cps (ñ+{=`þo *0˜þ9†þ9{{=`{=`(ñ ,f{>`{>`o‡¿,Q{?`{?`(ñ ,<{@`{@`(ñ ,'{A`{A`(ñ ,{B`{B`(ñ *******þþ*0a.uü/ ,o­¿**{C`*{D`*{E`*{F`*{G`*{H`*{I`*ò( }C`}D`}E`}F`}G`}H`}I`*0j.þ,Yþ,Q(y {C`{C`(ª+ /*1*(y {D`{D`(z+ /*1*þ(U¿**þ,**B¥ý/þo·¿*0tb.¥ý/ þ,W¥ý/þ,J{C`{C`(ª+ /*1*{D`{D`(z+ /*1*þ(V¿**¥ý/þ,**Jþ, (W¿**6(n oº¿*0½c.þ9«uý/ 9œ{C`{C`(«+9ƒ{D`{D`(ù+,m{E`{E`(ù+,W{F`{F`(ù+,A{G`{G`(ù+,+{H`{H`(ù+,{I`{I`þ(ù+********þþ*0²þ9 þ9•{C`{C`(¬+9}{D`{D`(ÿ+,h{E`{E`(ÿ+,S{F`{F`(ÿ+,>{G`{G`(ÿ+,){H`{H`(ÿ+,{I`{I`þ(ÿ+********þþ*0c.uý/ , þo½¿**:( }J`*ŠrLcp{J`o` rrcp(X¿o` *:( }K`*B{K`þo *:(` }L`*0{{L`oa sÁ¿*( *sÖ¿**u0þ*"sØ¿**u0þ*"sÛ¿**u0þ*0d. u0,+ u0,+*Zr.8ps™E (­+ošE *Šþ,þ, (]¿**þ,**:¥0oο*03d.¥0 þ,¥0þ, (^¿**¥0þ,**Fþ,(_¿**6(n oÑ¿*0e.þ9u0 9ù  u0,+  u0,+   u0,+  u0,+ @¶  u0- u0-+ u0-]t0 t0 {P`{P`(ñ *t0t0{Q`{Q`(ñ ,{R`{R`(ñ **t0t0{S`{S`(ñ ,{T`{T`(ñ ****þþ*0f.þ9þ9÷u0,+ u0,+   u0,+  u0,+ @´  u0- u0-) u0-[t0 t0 {P` {P`(ñ *t0t0{Q`{Q`(ñ ,{R`{R`(ñ **t0t0{S`{S`(ñ ,{T`{T`(ñ ****þþ*0d.u0 ,oÔ¿**:(Å¿}P`*{P`*V(Å¿}Q`}R`*{Q`*{R`*V(Å¿}S`}T`*{S`*{T`*:( }U`*2{U`{P`*:( }V`*2{V`{Q`*2{V`{R`*:( }W`*2{W`{S`*2{W`{T`*r( }X`}Y`}Z`*r{X`{Y`{Z`(`¿*¾}[`}\`}]`}^`}_`o &**‚{[`{^`{_`o›E (`¿*0 &{]`{^`{_`oœE o›E (b¿*‚{[`{^`{_`o›E (`¿*0 &{\`{^`{_`oE o›E (a¿****rR9p*( *.(ô þ*(§E *0¾(™ (š (ô þ*ò}``}a`}b`}c`}d`}e`}f`(¨E *0h.{e`YE +8¹8˜8Î{``¥ëo }d`}e`{d`oï 9€{d`o€ }a`{a`(™ }b`{a`(š }c`}e`{b`s©E ržcp{c`oªE ¥T}f`*}c`}b`}a`8pÿÿÿ}e`{d`(¶+}d`}e`}f`*0‡e {e`YE++e{e`E + ++++}e`{d`(¶+}e`}f` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{e`E + + +++***"{f`*0 {``sö¿*:( }g`*B{g`þo *:(` }h`*0{{h`oa sü¿*:(b }i`*0|{i`oc sþ¿*:(«E }j`*0){j`o¬E sÀ*:( }k`*B{k`þo *:(` }l`*0{{l`oa sÀ*:(b }m`*0|{m`oc sÀ*:(«E }n`*0){n`o¬E sÀ*²(­E }o`}p`}q`}r`}s`*0 ”i. u0-0 u0-Ut0 {o`{r`{s`{P`(`¿*t0 {p`{r`{s`{S`{T`(a¿*t0 {q`{r`{s`{Q`{R`(b¿*²}t`}u`}v`}w`}x`(®E *0 {w`YE +8Ð8½8å{t`o¯E ¥:(o°E }v`}w`{v`oï 9’{v`o±E }u`}w`{u`o²E {u`r®cpo³E (\¿{u`rÈcpo³E {u`rÞcpo³E {u`rîcpo³E {u`ržcpo³E s¥¿}x`*}u`8^ÿÿÿ}w`{v`(®+}v`}w`}x`*0‡e {w`YE++e{w`E + ++++}w`{v`(®+}w`}x` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{w`E + + +++***"{x`*0 {t`sÀ*²}y`}z`}{`}|`}}`(• *0¶{|`YE + +m+`8…{y`o´E ¥:(o°E }{`}|`{{`oï ,5{{`o±E }z`}|`{z`o²E }}`*}z`+¾}|`{{`(®+}{`}|`}}`*0‡e {|`YE++e{|`E + ++++}|`{{`(®+}|`}}` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{|`E + + +++***"{}`*0 {y`sÀ*²}~`}`}€`}`}‚`(• *0¶{`YE + +m+`8…{~`oµE ¥:(o°E }€`}`{€`oï ,5{€`o±E }`}`{`o²E }‚`*}`+¾}`{€`(®+}€`}`}‚`*0‡e {`YE++e{`E + ++++}`{€`(®+}`}‚` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{`E + + +++***"{‚`*0 {~`sÀ*²}ƒ`}„`}…`}†`}‡`(• *0¶{†`YE + +m+`8…{ƒ`o¶E ¥:(o°E }…`}†`{…`oï ,5{…`o±E }„`}†`{„`o²E }‡`*}„`+¾}†`{…`(®+}…`}†`}‡`*0‡e {†`YE++e{†`E + ++++}†`{…`(®+}†`}‡` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{†`E + + +++***"{‡`*0 {ƒ`s À*²}ˆ`}‰`}Š`}‹`}Œ`(• *0¶{‹`YE + +m+`8…{ˆ`o·E ¥:(o°E }Š`}‹`{Š`oï ,5{Š`o±E }‰`}‹`{‰`o²E }Œ`*}‰`+¾}‹`{Š`(®+}Š`}‹`}Œ`*0‡e {‹`YE++e{‹`E + ++++}‹`{Š`(®+}‹`}Œ` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{‹`E + + +++***"{Œ`*0 {ˆ`s&À*²}`}Ž`}`}`}‘`(• *0¶{`YE + +m+`8…{`o¸E ¥:(o°E }`}`{`oï ,5{`o±E }Ž`}`{Ž`o²E }‘`*}Ž`+¾}`{`(®+}`}`}‘`*0‡e {`YE++e{`E + ++++}`{`(®+}`}‘` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{`E + + +++***"{‘`*0 {`s,À*²}’`}“`}”`}•`}–`(• *0¶{•`YE + +m+`8…{’`o¹E ¥:(o°E }”`}•`{”`oï ,5{”`o±E }“`}•`{“`o²E }–`*}“`+¾}•`{”`(®+}”`}•`}–`*0‡e {•`YE++e{•`E + ++++}•`{”`(®+}•`}–` Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{•`E + + +++***"{–`*0 {’`s2À*(§E *0¾(™ (š ( Áþo'Á*êrücp(k €˜`(Y¿,(Y¿+ r dp(k r:dp( €—`*~š`*0(k.(;À(ºE , (»E oñ þo **0 l.(;À(ºE , (»E þo **03k.(;À(ºE ,# (»E o r 8po þ(=À**0,m.sBÀ(;À(ºE , (»E +~¼E þ(¯+*0,m.sDÀ(;À(ºE , (»E +~¼E þ(¯+*6(;À(¾E *(í *.&(=À*(í *.&(<À*Z( (; s¿E €š`**£i**þ(m+*>þ(n+*0Fn.Ži /(%- r¿\ps z  Y  2  £’Ò¤ X X3ç*ž(W o‰ ’%¤’(JÀþ(º+*¾(ˆ o‰ ’%¤’%¤’(JÀþ(º+*"(A *"oÀE *&oÁE *&oÂE *BsÃE þ(°+*BsÄE þ(°+*:(A oÂE *&oÅE **o±+**oÇE *&oÈE *"oÉE *&oÊE *&oËE *&(A *"oA *&oÌE *&(ÍE *&(ÎE *&(ÏE *&oÁE *(ÐE *&oÑE *(ÐE *&oÑE *"(ÒE **oA *&o§ *&oÉ: *&oA *&oÓE **oÔE *:sÕE o²+*&o×E *&oØE *&o³+*&o´+**oµ+*"oÜE *6o¶+*"oÝE *0!p.sÞE o·+ (àE (áE sâE *&o¸+*NsãE (÷/ o¹+*VsäE (ÒE þ(º+*VsåE (ÒE þ(º+*6sæE (»+*6sçE (¼+*&oÓE *:(èE }éE *~{éE (˜+, sN (« **:(êE }ëE *0"r.{ëE (½+ (ìE (íE sîE *:(ïE }ðE *0#t.{ðE (¾+ , (ñE (òE **(óE *0(P (O oôE *(óE *0(P (O oôE *(õE *"(o *(öE *"(ö *~¢`*0Qv.o÷E oøE ,$oùE sŸÀ(ŒÀ(¿+,s”Àz+Ô Þu  , oâ &Ü&Ü&*08*o *0](Àob 2ob Yo^ .þ+,rê p(ñ þ+,rS@p(ñ þ+,*(úE *0A(ÀrS@p(ñ ,rR9p*(À- rªdpsûE z(õ (N (U *0O(ÀrR9p(ñ ,rS@p*(õ ,rR9p(ñ ,rS@p**( Áo'Á,*rS@p*>(À(ö *>(À(N *V(Ÿ }Ÿ`} `*(Ÿ *0 (  *0 (¡ *{Ÿ`*{ `*0VÍþ,M ¹y7žt40(™À(P+bcXXX ¹y7žt40(˜À , ( +bcXXX **6(n ošÀ*0]*þ,Nu ,B(À+-*t40(˜Àt40(˜À(ñ ,t40(™Àt40(™Àþ***þþ*0Yþ,Jþ,B(À+-*t40(˜Àt40(˜À(ñ ,t40(™Àt40(™Àþ***þþ*0*u ,oÀ**:(Ñ }¡`*.{¡`þ*2(ò €¢`*"_d**þ(Á+*&þþ*þ*.({ þ*:({ þþ*6Œù,**6Œù,**0&Œù,+,*rÆdp( s\ z.þ(Â+*Jo1% þ(Ã+*sZ z0*(f ,(ƒ *rÔdps\ z~a*09a*þ¹ {ýE oþE ,*{ÿE o1% {ýE oF *( *sF **uV(þ*sF **uW(þ*0x. uW(,+*Zr.8psF (Ä+oF *0a{.þ,X uV(,(tV(  ¹y7ž{F (€+bcXXX *tW(  ¹y7ž {F (ô+bcXXX **6(n oF *0¥|.þ9“u: 9„  uW(,+   uW(,+ 3\uV(,-tV( tV( {F {F þ(‚+*tW(tW({F {F þ(õ+***þþ*0}.þ9‹þ9€uW(,+   uW(,+ 3XuV(,*tV( tV( {F  {F þ(„+*tW(tW({F {F þ(ö+***þþ*0x.u: , þoF **:( F }F *{F *:( F }F *{F *:( } F *2{ F {F *:( } F *2{ F {F *( *s F **u\(þ*s F **u](þ*0. u](,+*Zr.8psF (Å+oF *:(F }F *{F *:(F }F *{F *:( }F *2{F {F *:( }F *2{F {F **o &*.þ(Æ+*"(F **BsF þ(Ç+*.þ(È+*.þ(É+*"(Ê+*"(û *:(F }F *"{F *†o &sF sF }F }F *.þoF *0B{F o< ,{F þo< *{F {F o- {F X}F **o &**þ(F+*.þ(+*’o &}F }F s F }!F *0~.{F , ("F o. +,Nþ {!F oÒ ,*{!F (R@ (Ë+ Þ, (S@ &Ü&Ü *{F þoÏ: *H\(Ÿ *0 (  *0 (¡ *.þ,**0((n þ,**0'*þ,u , (Ì+-***þþ*Žþ,þ, (Ì+-***þþ*0*u ,oíÀ**Fo &}¶`*"{¶`*nþ~¸`/ ( +~·`*6€a~a&*{#F *{$F *{%F *"}#F *"}$F *r( }#F }$F }%F *0-þŒJs&F *:sÿÀs&F *0ƒ.{$F ,uJ0 ,***6{$F ,**0--{$F ,('F o(F Þ (S@ &Ü*{#F *  0™….{$F 9„uJ0 , {%F {¶`o)F zuJ ,Q (ñÀŒJ0(*F o (+F (*F ÞtsïÀŒJ0(*F þ*rWps\ z{#F *I i(¥ **bo &s-F }.F *v(/F (Í+s0F €1F €2F *nþ~2F / ( +~1F *0a‰.o3F ,, oÒ **{.F (4F (5F o6F ,(7F * , oÒ **0?þ o8F *0%Š.þ o8F ,*rädpsê z0?þ o8F ,(ö **:o3F o9F *0‹.o3F ¥þ(Î+*0n.{.F (4F (5F (:F (;F þ,oF s0F *0;Ž.{.F (4F (5F (:F s?F (@F (>F s0F *0:Ž.{.F (4F (5F (:F (=F (>F s0F *0•.{.F (4F (5F (:F (;F þ-+9ÈoAF , oÙ +Xs«> ,foÛ (Ü ,:(Ý   (ß  (à sN (P (O oÖ +½Þþoâ &Ü&+sBF (Ï+ (Ð+  ¥q(oCF   oï 9Ö oDF   us(,` ts(  (EF (FF  (EF (GF þoÒ , (ö +oHF oÖ 8‚ÿÿÿ tu((IF +?£  (ß  (à sN (P (O oÖ XŽi2¹8ÿÿÿÞ u , oâ &Ü&Ü&(/F (Í+s-F }.F *oJF ,**[H£ÞçÅ:(KF }LF *B{LF oÖ *bo &sMF }NF *v(OF (Ñ+sPF €QF €RF *nþ~RF / ( +~QF *0™.oSF ,, oÑ **{NF (TF (UF oVF ,E(WF  ,+ oÑ ,(Ò++ ** , oÑ **0 2 oXF *02 oXF ,*(Ð *02 oXF ,(YF **0›.oSF oZF ¥{(þ(Ó+*0¶,oSF ¥|(þ(Ô+*0Ÿ.{NF (TF (UF ([F (\F þ,;oVF , (WF +(Ð (Ô o]F  sPF *oSF ,#(OF (Ñ+(Ð (Ô o]F sPF *r:eps\ z07ž.Ži-*{NF (TF (UF ([F  (^F sPF *05ž.{NF (TF (UF ([F  (^F sPF *0È¡.{NF (TF (UF ([F (\F þ-+9ˆo_F , o÷ +Xs`F ,foã (ä ,:(å   (ç  (è së? (B (C oÕ +½Þþoâ &Ü&+saF (Õ+ (Ö+  ¥~(obF   oï 9– ocF   +w  £(ß (à sN (O (P oÑ ,(Ô oÕ +(Ð (Ô oÕ  X   Ži?~ÿÿÿ8^ÿÿÿÞ u , oâ &Ü&Ü&(OF (Ñ+sMF }NF *odF ,**[H£Þ§…:(eF }fF *072 {fF oÑ ,{fF (Ò+oÕ *{fF oÕ *~a*€a*"(… **o &*0C¢.o#Á ogF i(m+  iohF  Þu , oâ &Ü&Ü* ("(iF *"(jF **o-Á&*"(kF *.slF *0  sÂ; *"(mF *"(mF *"(nF *v(ô ,*(oF oó þþ*(pF *"(qF *"( 9 *"(õA *BsrF þ(×+*0¤.(Ø+ ,(sF *(H" *0¥.(Ù+(i þotF *RsuF (H" þ(Ú+*&þ(Û+*jsvF (†+(‡+þ(Ü+*:(xF }yF *B{yF þ(?+*(zF *.þ(Ò+*(A *0•*(A (A ((+s A *Bs{F þ(Ý+*0¦.(Þ+ ,(P" *(€ *0¿(ß+( þo|F *Rs}F (€ þ(à+*Rs~F (€ þ(à+*VsF (H" þ(á+*:s€F (â+*&þ(Ã+*jsF (ã+(ä+þ(å+*Žs‚F sƒF ¥((æ+(ç+þ(å+*:(„F }…F *B{…F þ(?+*(†F *.þ(¨+*(†F *B()+þ(¨+*:(‡F }ˆF *Z{ˆF (è+þ(Ò+*:(‰F }ŠF *B{ŠF þ(é+*(‹F *0§.(ŒF (F ((+sŽF *(F *"(& *(F *0&©.(‘F (’F s“F (ê+((+sŽF *(”F *"(% *&þ(ë+*fs•F (H" (ì+þ(J+*2þ(í+*Fs–F þ(î+*Fs—F þ(î+*Vs˜F (ï+þ(ð+**þ(ñ+**þ(ñ+**þ(ò+*Bs™F þ(ó+*FsšF þ(ô+*0 :«.s›F sœF þ!þ!sF (õ+(ö+þ(÷+*RsžF þ(ø+*NsŸF þ(ù+*ns F (ú+s¡F þ(û+*Fs¢F þ(í+*Vs£F (+þ(ó+*Vs¤F (ü+þ(ý+*Bs¥F þ(þ+*Bs¦F þ(ÿ+*.þ(ÿ+*.þ(þ+*~s§F (+s¨F (+s©F *.þ(þ+*.þ(+*.þ(+*2þoM **þ(+*Fs«F þ(+*Fs¬F þ(+*(­F *&(Ô *:(®F }¯F *Z,{¯F þ(˜+**:(®F }°F *Z,*{°F þ(˜+*:(±F }²F *0l {²F oÏ: þo³F *(´F *2þoµF *:(¶F }·F *0 ú{·F (+(+ þo¹F *(ºF *0­. (»F (¼F sÔ (& *:(½F }¾F *0,¯.(¿F (ÀF {¾F sÁF (+oÂF sÃF *(ÄF *0­. (»F (¼F sÔ (% *ò}ÅF }ÆF }ÇF }ÈF }ÉF }ÊF }ËF (ÌF *0,­.{ÊF YE +8Ô8§88ã{ÅF oÍF }ÇF }ÊF {ÇF oï 9š{ÇF oÎF }ÆF {ÆF ¥½(oÏF }ÉF }ÊF {ÉF oï ,8{ÉF oÐF }ÈF }ÊF {ÈF }ËF *þµ(}ÈF +»}ÊF {ÉF ( +}ÉF }ÆF 8Vÿÿÿ}ÊF {ÇF ( +}ÇF }ÊF þµ(}ËF *0­°. {ÊF YE+8ˆ{ÊF E ++5++++)}ÊF {ÉF ( +}ÊF {ÇF ( +}ÊF þµ(}ËF  Þ t  Þ&8^ÿÿÿþ,z*t ê{ÊF E +++ +++****"{ËF *0 #­.{ÅF þµ(þµ(sÑF *r(ÒF }ÓF }ÔF }ÕF *0 C±.{ÔF {ÕF ( +( + Þ"t u‰ ,{ÓF ( + Þþ*":(×F }ØF *V{ØF (+,**:(ÚF }ÛF *0=´.(ÜF (ÝF {ÛF (+ (ßF (àF  oáF sâF *:(ãF }äF *F{äF þ(+*:(´F }åF *r{åF o. , þoµF **:(æF }çF *0'µ.{çF oèF , (7F þoéF **:(êF }ëF *B{ëF þoÏ: *:(ìF }íF *B{íF þoÚ *:(îF }ïF *B{ïF þo. *:(îF }ðF *F{ðF o. þ*:(ñF }òF *V,*{òF þo. *:(óF }ôF *v-{ôF o. ,(o ***0·. èsõF söF s÷F **o &**þ(F+*.þ(+*V(6 }øF }ùF *09?þ {ùF oÒ ,*{øF oÏ: {ùF oÖ *0=».uÕ(,tÕ( {úF sûF (üF *t×( {ýF Œù(Æ *0C¼.uÕ(,(tÕ( {úF o2 -*oþF +Ðt×( {ýF (+ *RsÇÁ(+þ(ú+*0K½.uÕ(,AtÕ( {úF oÿF 1oG sG (G *oþF +·*NsG þoG *0À.s$    þ(+*0:¼.uÕ(,tÕ( {úF sG (G *t×( {ýF þoG *ZsG (F þ(+*0=».uÕ(,tÕ( {úF s G ( G *t×( {ýF (K" ( G *6s G (G *Vs G (+þ(+*VsG (+þ(+*:(³ }G *N{G oG (+*(õ **’(F }G }G }G }G *†{G {G {G {G þ(+*’(F }G }G }G }G *0JÂ.{G oG {G oG {G {G {G {G {G {G {G (+*V(F }G }G *n{G {G oG þ(+*V(G }G } G *Z{G { G þ(+*:(!G }"G *Z{"G s#G þ(+*:($G }%G *0_Æ.{%G oG (&G Þt ('G Þ uî(,tî( {(G ()G (*G *tð({+G (+*:(F },G *B{,G þoG *:(-G }.G *07Ç.{.G oK &uW(,tW( {F ztV( {F (/G *:(-G }0G *07Ç.uW(,tW( {0G {F þo1G *tV( {F (/G **þ(•+*.þ(+*"(+*&(+**( +*>(÷/ (!+*0¤.(Ø+ -(H" *(sF *R("+,*( *"oÏB *6s2G s- *Zo3G - þo4G **Zs5G ¥÷(þ(#+*0!È.o™ s6G s- s7G (¥+**o &**þ(F+*.þ(+*:(8G }9G *0,Ê. (:G (;G sl$ {9G (²7 þ(+**o &**þ(F+*.þ(+*:(ç? }G (%+**o &**þ(F+*.þ(+*:(?G }@G *0(P (O {@G oá *2rÅepsê z&s *&o^ **oL *0oM 3(&+**0oâ8 3(&+**Z([ o\ þþ*~ a*"o *"oAG *¾ob 2o^ (ÿ4 +,o^ () þ**0?Œob -*oL oAG ob Y(V (Õ YXoL ( *0?Œob -*oL o ob Y(V (Õ YXoL ( *0FË.oÕ ,:ob (V ob Y(V (Õ (Õ  YXoL (c **0:ŒoBG ,.ob ob YY(V (Õ YXoL (c **>(Âþþ*0@( - r3fps\ z(d *0@( - rIfps\ z(d *BsCG þ('+*¾0 (ƒ+sDG *Y((+( ()++Ñ:(€ (*+*04–({ ,) ({ (| (++,*X+Ï*0 Í. (,+*ro™ oEG 3 þ(-+**0>–({ ,4 ({ (| o} , sFG (GG *X+Ä*0H–0 (ƒ+sDG *({ ,# ({ (| Y( +Ãr_fps\ zŽo™ 3 (€ sDG *(€ (.+*0B–({ ,1 ({ (| 0 þ(ƒ+*( Y+Çþ(ƒ+*fo™ 3*(€ (/+*0'r({ , ({ -*Y+ß(€ *0ŠÑ.({ ,p ({ (| oHG u),& t)(IG (j +± t)(JG (i 8ˆÿÿÿ(J+(K+sk *0Ó. (H" (÷/ (0+*0T!*({ ,I (` ,? (` ({ (W% (| ŒùŒ¹(KG , +±**0 ¿({ -*(1+ (2+,**0X ({ ,@ ({ ({ -(| (ƒ+sLG *({ (| ( +¸r‡fprfps z6(€ (3+*0M–({ ,C ({ (| o} ,(ƒ+(Œ +sMG (NG *( +µ*0Ô. (€ (4+*0(¿({ , (| ({ sMG *r¡fps\ zrsOG (5+(6+þ(7+*0EØ.sPG (8+(9+ (QG (RG (SG (:+ (TG (UG sVG *0ŠÙ.({ -(` - (C= -*rÃfps\ z (` ,ë (C= ,á (C= (` ({ (D= (W% (| (;+& 8vÿÿÿ0Q–({ ,8 ({ (| o} , (ƒ+sDG *( +À(ƒ+(€ sDG *0Ô. (€ (<+*0_Ú.({ ,K ({ ,? ({ (| ({ (|  oWG - +²**({ -**"sXG *08 ({ ,% ({ ({ - (| *({ +ÓrÏfps\ zB(=+þ(>+*Z(µ (]+þ(^+*2rÙfpsê z0CÛ.(K/ ,5 (K/ (L/ (q (L/ (r  (Z+,*+Ã(?+*03Ü.(K/ ,( (K/ (L/ (r (Z+,*+Ð*0.–({ ,# ({ (| (Z+,*+Õ*0.–({ ,# ({ (| (Â+,*+Õ*&("+*0sÞ. (÷/   -V(` ,E(` (W% (@+(YG  (ZG    (j  +¬ +§(K+s[G *0dá.({ ,P ({ (| (A+ (\G  (]G (B+(^G (j (_G s`G *(÷/ s`G *0C–({ ,5 ({ (| 3o±6 ( *X(C+( *(€ *0â.  (C+*0<–({ ,. ({ (| o} ,(€ *(D+( *(€ *FsaG þ(¥+*j0*Y( +æ:(€ (E+*0Y ({ ,K ({ ({ -(| o1% (H" (i *({ (| o1% ( +(i *(H" *0*å.(F+ (bG (cG ¥)(G+s[G *6(€ ( *0Uæ.(` ,@ (` (W% (H+ (ò/  (ó/ (j +¸(K+sö/ *>(÷/ (!+*Z(I+¥)þ(G+*BsdG þ(J+*BseG þ(K+*BsfG þ(L+*0è.sgG shG *BsiG þ(M+*BsjG þ(N+*BskG þ(O+*:(% }lG *F{lG þoDA *(mG *0(ê.(nG (oG (pG (qG (rG sd- *(sG *0,ã(N- (O- (P- (Q-  stG suG *F}vG o &*0ì.{vG {vG (P+*:(a8 }xG *V{xG o. ,X**:(yG }zG *B{zG (Q+*:(‰F }{G *B{{G þ(R+*:(‰F }|G *B{|G þ(é+*:(}G }~G *>{~G (S+*V(G }€G }G *R{G {€G (T+*:((1 }‚G *B{‚G þ(U+*V(ƒG }„G }…G *^{„G {…G þ(V+*:(†G }‡G *Z{‡G sˆG þ(W+*:(¿ }‰G *B{‰G þo. *:((1 }ŠG *V{ŠG s‹G þ(?+*r({ -(ŒG *(X+(G *07í.,, (§ (@+ (YG (E= (ZG sŽG *sŽG *6,(ƒ **0;î.,0 (§ (H+ (ò/ (ó/  (E= sG *sG *0’*, (§ þ(Y+**0«ï.þ, Žiþ+,*ŒH,+ r¨9ps‚ zŽi ù Y 2#£ùo±6 ¤ùX X3Ý Ži  , þ+,# £ù £ù(Â+-+ X +Î,**Ú2*£ù£ù(É+,X+Í*03ð.Ži Ži .r^gprhgps z  (Z+*ZŽiŽi3 þ([+**0_ò. Ži (\+ Y 2=£¹(@+(ZG (YG ¤Á X X3Ãs‘G *0_ó. Ži (\+ Y 2=£¹(H+(ò/ (ó/ ¤Á X X3Ãs’G *03Ži2*£ù£ùoWG ,*X+Í"s“G *žŽi2*£ùo} , X+Ü*ÖŽi/-£ùo} ,s”G X(]+*X+Í**(^+*0R3*X[ £ùo} ,&-*Y£ùo} ,+À*X+®0ô.  Ži(_+*F}•G o &*08õ.Ži Ži /+þ ,*{•G {•G (`+*:(¿ }—G *F{—G o. þ*"s˜G *&s™G *2þoWG *F}šG o &*0%?{šG oÏ: {šG oÏ: þ(a+*b}›G }œG o &*ž{œG {›G oÏ: {›G oÏ: þoEA *Ö(b+€ asÔÀ€asçÀsïÀ€·`€¸`s1Á€a*(€ *.þ(c+*.þ(h+*.þ(2+*2þ(d+*6þ(e+*2þ(ê+*6þ(f+*2þ(g+*.þ(+*2þ(-+*2þ(h+*.þ(i+*0Dö.¥ý o¶  oï , o· Ö +ì Þu , oâ &Ü&Ü*)0Jø.¥¸! oG  oï , ožG oh< Ö +æ Þu , oâ &Ü&Ü* /*þ(j+*þ*.þ(k+*>¥ãþ(1+*.({ þ*6(€ ( **þ(l+**þo™ *.þ( +*.þ(”+*.þ(¥+*.þ(_ +***þ(§+*.þ(Œ +**.þ(˜+*.þ(m+*08V, {ŸG + , {ŸG + /+ X( G *0 Ñú., {ŸG + X>­9œ {¡G {¢G {£G {¤G  , {ŸG +X1U ,G {¡G {¢G {£G  {¤G   (n+ (n+(n+*r„gps\ z (n+(n+*r„gps\ z(n+*0 ãú., {ŸG + , {ŸG +X>°9Ÿ {¡G {¢G {£G {¤G , {ŸG +X1V,G{¡G {¢G {£G  {¤G   (n+  (n+(n+*r„gps\ z(n+ (n+*r„gps\ z(o+*0&û.,! {¢G {£G X(p++Ü*2( G *0 yü.,n {¡G {¢G {£G {¤G {ŸG oWG / (q+(r+*-  ( G * (q+(r+*(s+*2rÙfpsê z0Uý.,L {¡G {¢G {£G {¤G oWG /  +Â-*+±(t+*0Vý.,Q {¡G {¢G {£G {¤G oWG /  +Â-(¨ *+¬*¾(Š+,(q+s¥G *(q+s¥G *0 tÿ.s¥G ,f {¡G {¢G {£G {¤G  (u+(¦G (§G (v+(¦G (§G +Ž*f(Š+, (q+**0 I/,D {¡G {¢G {£G {¤G  (w+(x++¹*0o/,a {¡G {¢G {£G {¤G  - s¨G * (y+(©G (ªG («G (n+s¨G *r˜gps\ z0Ž/9† {¡G {¢G {£G {¤G oWG / (z+(r+*-. -*- *(y+ («G (©G (ªG (n+* (z+(r+**0H/,C {¢G {£G {¤G  oWG / +Ë-*+º*0>/,: {¡G {¢G {£G {¤G  ({+(|+&+Ã*0O/,J {¡G {¢G {£G {¤G  (}+-(~+-+¹***0H/,B {¡G {¢G {£G {¤G (Š+,+ (+,*+»*0H/,B {¡G {¢G {£G {¤G (Š+,  (€++,+½**0L/,G {¬G {­G {®G {¯G {°G o1%  (+(+(±G **0Ný.,I {¡G {¢G {£G {¤G {ŸG (d+ (‚+(‚+(²G **0 @/,; {¡G {¢G {£G {¤G  (ƒ+(„++Â*0£ /9™ {¡G {¢G {£G {¤G oWG oWG / (…++0 þþ+,(„++/8cÿÿÿ**0# /   oWG 3*(…+*0 Š/,~ {¡G {¢G {£G {¤G (†+(³G (´G (‡+(µG  (¶G     (ˆ+8ÿÿÿs·G *Js¸G (¯ (‰+*>(Š+þ(‹+*Fs¹G þ(Œ+*03‚oï ,(oä (q (r (q++Ï*0+/oã (+ Þu  , oâ &Ü&Ü* 0/sºG s»G s¼G *(½G *>sN (¾G *:(¿G }ÀG *0(P (O {ÀG (L+*¢o &(ÁG (ÂG oŽ+}ÄG }ÅG *0j/{ÅG ,Z{ÄG (ÆG -o+* (ÈG ,/(ÈG {> - {? -{= {<  sú *rðgps\ zo+*0‡/{ÅG ,d{ÄG (ÆG -* (ÈG ,>(ÈG {> -/{? -'(ÆG  oŽ+}ÄG {ÄG (ÆG þþ*rphps\ z}ÅG {ÄG (ÆG þþ*0¾/(ÊG 9­ (ËG 9Ž(ËG {£G -W{¢G -*{¡G (ÊG {¢G {£G {¤G (s+ (ÌG (ÌG (ÌG 8‚ÿÿÿ{¡G (ÊG {¢G {£G {¤G  +²(ÊG  8Hÿÿÿ(ÍG *2róhps·2 z2rKips·2 zb}ÎG }ÏG o &*J{ÏG (ÐG oÑG *^{ÏG (ÐG oÑG Œ*J{ÏG (ÐG oÒG *b{ÏG {ÎG sÓG (ÔG * **0/+ X(×G *01/X>9  {ØG {ÙG {ÚG , {ÛG +X>¡9{ØG {ÙG {ÚG , {ÛG + , {ÛG +(‘+ , {ÛG +(‘+   ,  {ÛG +  ,  {ÛG +(‘+*r„gps\ z(‘+, {ÛG + , {ÛG +(‘+*r„gps\ z(‘+*0U/, {ÛG + , {ÛG + X> 9 {ØG {ÙG {ÚG , {ÛG +X>£9‘{ØG {ÙG  {ÚG    ,  {ÛG +(‘+ , {ÛG + , {ÛG +(‘+   ,  {ÛG +   ,  {ÛG +(‘+*r„gps\ z(‘+, {ÛG + , {ÛG +(‘+*r„gps\ z(’+*0Z/- (×G * {ØG {ÙG {ÚG  oWG /(“+ (”+*-* (“+(”+*0¦/9• 9‚ {ÛG {ØG {ÙG {ÛG {ØG {ÙG {ÚG {ÚG  X/(•+ (”+*X/ (•+(”+*(‘+* (“+* (“+*0®/- sÜG * {ØG {ÙG {ÚG  oWG /5(–+(ÝG (ÞG (ßG  (•+sÜG *- sÜG *(–+(ÝG (ÞG (ßG  (•+sÜG *0v /,h {ØG {ÙG {ÚG - sàG *(—+(áG (âG , {ÛG + , {ÛG +(‘+sàG *r˜gps\ z0 !/9˜ {ØG {ÙG {ÚG  oWG /(˜+ (”+*-M-*-*(—+(âG (áG , {ÛG +, {ÛG +(‘+* (˜+(”+**0H/-* {ØG {ÙG {ÚG  oWG / +É-*+¸04"/-* {ØG {ÙG {ÚG (™+ o² &+Ì0 6"/-* {ØG {ÙG {ÚG  (š+(›++Ê0>"/-* {ØG {ÙG {ÚG  o} , (œ++,+Ä*0>"/-* {ØG {ÙG {ÚG  o} ,+(+,*+Â>sãG (œ+*0/#/-* {ØG {ÙG {ÚG (ž+(ž+( *0 M$/-* {ØG {ÙG {ÚG  o} ,  (“++(Ÿ++³0 6"/-* {ØG {ÙG {ÚG  (˜+( ++Ê0$%/-* {ØG {ÙG X(¡++Ü0É&/- * - * {ØG {ÙG {ØG {ÙG {ÚG {ÚG {ÛG {ÛG   1:(–+  (ÝG   (ÞG   (¢+ (¢+(•+*(–+  (ÝG   (ÞG    (¢+ (¢+(•+*0N$/-* {ØG {ÙG {ÚG (£+ (¤+,  (“+++²ªo} ,(“+säG *(“+säG *0 j(/säG -* {ØG {ÙG {ÚG (¥+ (åG (æG (¦+(åG (æG +–00"/-(çG * {ØG {ÙG {ÚG sèG (éG *0”*/(§+ uW), þoêG *tY)(ëG (ìG tY)(ëG (íG tY)(ëG (îG  oWG / sïG +-(¨+þoêG *8lÿÿÿ0”*/(§+ uW), þoêG *tY)(ëG (ìG tY)(ëG (íG tY)(ëG (îG  oWG 1 sðG +-(©+þoêG *8lÿÿÿ0+/-* {ÙG {ÚG +æ0#,/-* {ÙG {ÚG (ª+(+ *0+/-* {ØG {ÚG +æ0#,/-* {ØG {ÚG («+(+ *0*(¨+ - r‡ips\ z(ƒ *0*(©+ - r¥ips\ z(ƒ *0./sñG sòG sóG *0 ô0/(ôG 9Ý (ôG 9Î (õG 9m(õG {ÙG :(õG 9·(õG {ÙG -b(ôG (ôG {ØG {ÚG  {ØG  {ÚG   oWG   , *(öG (öG 8Mÿÿÿ(ôG  {ØG  {ÙG  {ÚG (×G (öG (öG 8ÿÿÿ(ôG {ØG {ÙG {ÚG  (×G (öG (öG 8Ãþÿÿ(õG ,,(õG (ôG {ØG {ÙG {ÚG 8bÿÿÿ(ôG {ØG {ÙG {ÚG  +†(õG ,,(õG (ôG {ØG {ÙG {ÚG 8 ÿÿÿ(ôG (ôG 8þÿÿ*(ôG ,**¶--**-*(÷G (öG (÷G (öG (¬+*01"/-* {ØG {ÙG {ÚG  (­+( +Ï6(€ (­+*0Üsß søG (™+*01/(¡+ (£+ (®+*Šoï ,ožG (“++à*0+2/oG (¯+ Þu  , oâ &Ü&Ü* V(¿ }ùG }úG *R{ùG {úG (6+*V(ûG }üG }ýG *~-{üG {ýG (o þoþG **V(ûG }ÿG }H *~-{ÿG {H (o þoþG **¢o &(H (H o°+}H }H *0I4/{H ,9{H (H -o±+* (H ,(H { *rÃips\ zo²+*0p5/{H ,M{H (H -* (H ,'(H o°+}H {H (H þþ*rCjps\ z}H {H (H þþ*0¬6/(ôG 9› (õG 9|(õG {ÙG -M{ØG -*(ôG {ØG {ÙG {ÚG (×G (öG (öG (öG +Œ(ôG {ØG {ÙG {ÚG  +¼(ôG 8Zÿÿÿ(÷G *2róhps·2 z2rKips·2 zb} H } H o &*J{ H ( H o H *^{ H ( H o H Œ*J{ H ( H oH *b{ H { H sH (H * *V(ç? }H }H *Ê{H {H (ò ¤{H {H (ò X(ó *:(H }H *0?7/{H {C (ß (ß oDA ,*(à (à þ(a+*:(?G }H *0)(P (O {H (H (³+oH *²}H }H }H }H }H (&+ *0ÁH{H YE + +p+[8ˆ{H ¥oü }H }H {H oï ,={H oM }H }H |H (ß }H *þ}H +¶}H {H (´+}H }H þ}H *0’J {H YE+8m{H E + ++++}H {H (´+}H þ}H  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{H E + + +++***"{H *0 !H{H þþsÿ *²}H }H }H } H }!H (&+ *0Á9/{ H YE + +p+[8ˆ{H ¥j)o"H }H } H {H oï ,={H o#H }H } H |H ($H }!H *þl)}H +¶} H {H (µ+}H } H þ}!H *0’J { H YE+8m{ H E + ++++} H {H (µ+} H þ}!H  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{ H E + + +++***"{!H *0 !9/{H þl)þs%H *V(&H }'H }(H *^{'H {(H X¤**þo)H *.þo*H *2þo+H *0þùs,H s-H *0þùs.H s-H *0£./rÆjprôjps z/rÆjprkps z/rkpr@kps zXo)H 1rHkprôjps zXo)H 1r|kprkps z Y 2XXo*H o+H X X3ä*0 #þùþùs/H s-H *b(0H (1H (1H (¶+*0 a/rÆjpr°kps z/rkpr@kps zXo)H 1rkpr@kps zþùs2H s-H *0f./rÆjpr°kps z/rkpr@kps zXo)H 1rkpr@kps z XY 2o+H X X3î*6¥¸!s-H *00:/(€ o)H Y  0o*H ( Y Y3è*0)–({ ,  ({ (| o3H +Ø*0H Y 2)o*H o;H o?H o@H X X3×*0GJ/sæ  o)H Y 2/o*H oi , (§ oç +X X3Ñ*0>K/s<  o)H Y 2&o*H  o} ,  o3H +X X3Ú*0UL/s< s<  o)H Y  21 o*H o} , o3H + o3H X X3ÏsAH *02M/o)H s- Y   0 o*H o3H Y Y3é*0/N/ o)H Y   0 o*H (›+ Y Y3ç*0/O/ o:H  Y  2 o;H (Y+ X X3ç*"oBH *6¥¸!s-H *>¥¸!þ(¾+*fsCH þDH sEH oFH *fsGH þHH sEH oFH *Ú/.o*H o;H (Š+,*X+Í*06Q/o)H o:H .r¼kprlps z   (¿+*ºo)H 2(À+*o*H o} ,*X+Ò0C/  (Á+*¾o)H 2(À+*o*H (++,*X+Ñ0R/  (Â+*0'S/   2o;H (Y+ X X3ç*0'T/   0o*H (›+ Y Y3ç*0.o)H -r lprÝps zo*H Y(Ã+*0 0o)H -r lprÝps zYYo*H (Ä+*0^V/(IH  o:H oJH .r¼kprlps zY 2%o;H oKH oLH X X3Û*0^X/(MH  o)H o:H .r¼kprlps zY 0%o*H o;H oNH Y Y3Û*Ú2*o*H o;H (Š+,X+Í*06Q/o)H o:H .r¼kprlps z   (Å+*.o)H þ*0TZ/(OH o)H o:H .r¼kprlps z Y  2   o*H  o;H oPH & X X3à*08\/(QH o)H o:H .r¼kprlps zsRH (Æ+*0L^/(SH  XY(Ç+  0(o*H oTH YoUH Y Y3Ø*0N`/(VH  YX(È+  2*o;H oWH YXo+H X X3Ö*0o:H Y(É+*0o)H Y(Ê+*0a/s- o3H *¾o)H 2*o*H o} ,(V *X+Ñ0C/  (Ë+*Âo)H 2*o*H (++,(V *X+Ð0R/  (Ì+*00o)H o:H .r¼kprlps zsXH (Í+*0cb/oYH s- s4H Y 29oZH (q (r o3H oç X X3Çs[H *Ò}\H }]H }^H }_H }`H }aH (&+ *0¶-{`H YE + +e+X8}{\H (µ o¶ }_H }`H {_H oï ,0{_H o· }^H }`H {]H }aH *}^H +Ã}`H {_H (Á+}_H }`H þ}aH *0’J {`H YE+8m{`H E + ++++}`H {_H (Á+}`H þ}aH  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{`H E + + +++***"{aH *0 -{\H {]H þsbH *Ò}cH }dH }eH }fH }gH }hH (&+ *0 Ã-{gH YE + +r+e8Š{cH Y(µ o¶ }fH }gH {fH oï ,;{fH o· }eH }gH {dH {eH oŸ> }hH *}eH +¸}gH {fH (Á+}fH }gH þ}hH *0’J {gH YE+8m{gH E + ++++}gH {fH (Á+}gH þ}hH  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{gH E + + +++***"{hH *0 -{cH {dH þsiH *ò}jH }kH }lH }mH }nH }oH }pH (&+ *01-{oH YE +8Ù8¬8”8è{jH ¥ˆ)oqH }mH }oH {mH oï 9š{mH orH }kH {kH ¥o, }nH }oH {nH oï ,8{nH o- }lH }oH {lH }pH *þ}lH +»}oH {nH (Î+}nH }kH 8Vÿÿÿ}oH {mH (Ï+}mH }oH þ}pH *0­J {oH YE+8ˆ{oH E ++5++++)}oH {nH (Î+}oH {mH (Ï+}oH þ}pH  Þ t  Þ&8^ÿÿÿþ,z*t ê{oH E +++ +++****"{pH *0 #-{jH þþssH *ò}tH }uH }vH }wH }xH }yH }zH (&+ *0 Ò-{yH YE +8~+q8–{uH {uH {vH XY(µ o¶ }xH }yH {xH oï ,;{xH o· }wH }yH {tH {wH o{H }zH *}wH +¸}yH {xH (Á+}xH }yH þ}zH *0’J {yH YE+8m{yH E + ++++}yH {xH (Á+}yH þ}zH  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{yH E + + +++***"{zH *0 %-{tH {uH {vH þs|H *:}}H ( *F{}H þ(Ð+*:}~H ( *0%?{~H oÏ: {~H oÏ: þ(a+*r(H }€H }H }‚H *0 ({‚H {€H oƒH {H o„H þo…H *V(†H }‡H }ˆH *~{‡H o{H {ˆH oƒH sN * ** ÿÿ** @* €* À* À*0ûc/{‰H - rLlps\ z{ŠH {‰H Y£’ {‹H o’à  À_-<,4 (ƒ  ÿ?ÿÿ_{ŒH oh< o’à À_þ++,1 ÿ?ÿÿ_Œo; o: s¥ÃoH oŽH *{H - rLlps\ z{H Y}H {‰H Y}‰H 8ÿÿÿ0gs/dsH oŽH ds‘H  þù   d(Ñ+ d(Ñ+ d(Ò+ (Ñ+{’H {“H {”H sÃ{•H {–H sÃ{—H {˜H sšÃ   s„:†{‰H -+ë{ŠH {‰H Y£’{™H £€i ÿÿ.8i-=oÍ , 1  Y  +# +ošH o; o:  +,{ŒH oh< +{›H o’à À_-Y1 Y+ ÿ?ÿÿ_- rdlps\ z{œH oH s¥ÃoH oŽH  8âþÿÿ @@ ÿ?ÿÿ_£0 {žH £€i!Y  !?Ç{H - r’lps\ z{ŸH {H Y£Ó0"{H Y}H {‰H Y}‰H  !YY"{ea¤ !YY"{fa¤ !YY"{ga¤!-"{ga¤+!Y3"{fa¤+!X!! X@9ÿÿÿ-9,¤¤+ o; ¤o: ¤+o H ££s¥ÃoH {ŠH {‰H Y£’ {¡H £€i o’ÃoŽH #Þlt$$u%%,4$t(~££s¥ÃoH #Þ$$u&&,(Ó+#Þþ#&8Ãüÿÿ €@,1I ,   þ+,, (+ +(Ó++- r¸lps\ z 8iüÿÿ, (+ +'o“Ã(((¢H ((£H ))s¦Ã(^+++¥ýsh= *)*s¤H (^++ o¥H ,,s²Ã(Ô+-)*s¦H (^+.,.'-+rmps§H /{¨H /o©H &(Ó+8‹ûÿÿ À3 8yûÿÿ8sûÿÿ{ŸH {H Y£Ó0""{ea*#b…lÚo &}Ra}Qa ï}Sa{SaZ(+}Ta*0_.X[ 3*{RaZ£€i 3{RaZX£€i*/+µX+¡0¨t/b` {Sa^ {TaZ£’ {TaZX£’ 3 *{Qa£€iX{RaZ£€i{RaZX£€iXo‘Ã{TaZ¤’{TaZX¤’*0 M½{Qa£€i X {RaZ£€i {RaZX£€i s”Ã(Õ+ sªH *ò}Ua}Va}Wa}Xa}Ya}Za}[a(«H *0 õ{ZaYE +8©8™8¾{Va{Va{WaXY(µ o¶ }Ya}Za{Yaoï ,c{Yao· }Xa}Za{Ua{Ra{XaZ£€i{Ua{Ra{XaZX£€isZ }[a*}Xa+}Za{Ya(Á+}Ya}Za}[a*0‡e {ZaYE++e{ZaE + ++++}Za{Ya(Á+}Za}[a Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ZaE + + +++***"{[a*0 {Ua{Va{Was”Ã*bo &}]a}\a*0 5V{\a£€i X {]a£€i sœÃþ(^+*ò}^a}_a}`a}aa}ba}ca}da(" *0 Ð{caYE +8„+w8œ{_a{_a{`aXY(µ o¶ }ba}ca{baoï ,A{bao· }aa}ca{^a{]a{aa£€i}da*}aa+²}ca{ba(Á+}ba}ca}da*0‡e {caYE++e{caE + ++++}ca{ba(Á+}ca}da Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{caE + + +++***"{da*0 {^a{_a{`asœÃ*{ea*{fa*{ga*^}ea}fa}ga*²}ha}ia}ja}ka}la(" *0±{kaYE + +h+[8€{ha¥Úo­ }ja}ka{jaoï ,5{jao® }ia}ka{ia( }la*}ia+¾}ka{ja(¾+}ja}ka}la*0‡e {kaYE++e{kaE + ++++}ka{ja(¾+}ka}la Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{kaE + + +++***"{la*0 {has¦Ã*0d}¬H }­H }®H }¯H }°H }±H }²H }³H  }´H  }µH  }¶H  }·H (" *0 ´{¶H YE +8·8’8P8<8i{®H ¥Úo­ }´H }¶H {´H oï ,u{´H o® }°H {°H ( }±H {°H ( }²H {²H À_-}¶H {±H }·H *+}²H }±H }°H 8~ÿÿÿ}¶H {´H (¾+}´H {­H À_:—{¬H {¼ Y(µ o¶ }µH }¶H {µH oï ,G{µH o· }³H {¯H {³H o¸H -}¶H {³H }·H *+}³H +¬}¶H {µH (Á+}µH +}¶H }·H *0¯e {¶H YE+8Š{¶H E ++;+$+ +++,}¶H {µH (Á++}¶H {´H (¾+}¶H }·H  Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{¶H E ++++ +++*****"{·H *0'{¬H {­H {®H {¯H s¹H *Ò}ya}za}{a}|a}}a}~a(ºH *0·{}aYE + +n+a8†{za¥ýo¶ }|a}}a{|aoï ,;{|ao· }{a}}a{ya{{ao›Ã}~a*}{a+¸}}a{|a(Á+}|a}}a}~a*0‡e {}aYE++e{}aE + ++++}}a{|a(Á+}}a}~a Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{}aE + + +++***"{~a*0 {ya{zas²Ã*0d}»H }¼H }½H }¾H }¿H }ÀH }ÁH }ÂH  }ÃH  }ÄH  }ÅH  }ÆH (" *0 Á{ÅH YE +8¿8š8]8I8v{½H ¥Úo­ }ÃH }ÅH {ÃH oï 9z{ÃH o® }¿H {¿H ( }ÀH {¿H ( }ÁH {ÁH À_ @3}ÅH {ÀH }ÆH *+}ÁH }ÀH }¿H 8vÿÿÿ}ÅH {ÃH (¾+}ÃH {¼H À_ @@—{»H {¼ Y(µ o¶ }ÄH }ÅH {ÄH oï ,G{ÄH o· }ÂH {¾H {ÂH o¸H -}ÅH {ÂH }ÆH *+}ÂH +¬}ÅH {ÄH (Á+}ÄH +}ÅH }ÆH *0¯e {ÅH YE+8Š{ÅH E ++;+$+ +++,}ÅH {ÄH (Á++}ÅH {ÃH (¾+}ÅH }ÆH  Þ t   Þ&8\ÿÿÿþ,z*v’ 0C{ÅH E ++++ +++*****"{ÆH *0'{»H {¼H {½H {¾H sÇH *Ò}ÈH }ÉH }ÊH }ËH }ÌH }ÍH (&+ *0 Vv/{ÌH YE +88è8{ÈH {¾ {ÈH {¿ {ÉH Y /+(V {ÈH {¿ Y(V (Õ (Õ YX Y 2!  X£¤ X  X3ߥo, }ËH }ÌH {ËH oï ,9{ËH o- }ÊH }ÌH {ÊH }ÍH * þ }ÊH +º}ÌH {ËH (Î+}ËH }ÌH  þ }ÍH *0’J {ÌH YE+8m{ÌH E + ++++}ÌH {ËH (Î+}ÌH þ}ÍH  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{ÌH E + + +++***"{ÍH *0 '-{ÈH {ÉH þþsÀ *ö{ {Ž X} {š {Ž Y}š }˜ }Ž }™ *0k{˜ {š 3K££€i 3 þo* *{ÎH , rmps\ z}ÎH sÏH þoÐH *sÏH þoÐH *0¹O&(y {- {-  /+ þ /*1*(y {. {. /+ þ /*1*(y {/{//+þ / * 1 *(y {0{0/*þ*0˜N&{- {- /+þ /*1*{. {.  /+ þ /*1*{/ {/ /+ þ /*1*{0 {0 /* þ*0Šw/ {@2-{?{@ZX (Û8 {<£X£€i*{<£ZX£€iÑ 3{<£ZXX£€i*X8vÿÿÿV(ÑH }ÒH }ÓH *0 Z{ÒH {ÓH {ÓH ŽisÔH oÕH oÖH {ÓH {~ {€ { X(+{ X} *(ÑH **:(×H }“a*0x/(ØH (ÙH {“aþoq*:(0 }”a*6{”aož * *v£/£/(P þ(Q *~ a*–oS ,+oT ,+oU þ*®(ÔÃ, oV +,oW (ÓÃþoX **00(ÕÃ, oY sZ *o[ ,+Ûrž7ps\ z0' (Öà (] £/ sÜÃþ(ÒÃ*0i o^ %YEDdYE%fYEsYE rÜ7ps\ zsÞÃþ(×Ã*Xþ(+*0 ºz/sàà 2+o^ %3 Xþþ+,%sé (Ö+(×+oÚH o& Œm*(²# ,X8†ÿÿÿo^ %YEX8WÿÿÿXþ(ØÃ*06oa ob   (c Ðù(d (ÙÃþ(+*0A¾(äÃoL (M oN  r8pr 8po` r8pr8po` sÛH *V(1 }•a}–a*Z{•a{–aþ(Ø+*r(ÝH }—a}˜a}™a*0 ${™a{˜a(ÞH {—aXþ(+*r(ßH }ša}›a}œa*0 {ša{›a{œaþ(ÙÃ*bo &}àH }áH *N{àH {áH (Ù+*~Ÿa*f(äÃoL (M þoN *f(äÃoL (M þoâH *(ãH *FrTmp(9 säH *šsçÃ(Ú+€ŸaÐ- (d oW € a*0<{/rÎ-p/oƒ9 oO3 Ð(d (è+ Þ t  Þ*/0 0"}/o* (åH Þt (æH Þ* *>/£’**0~/{¤a {£a {¢a Ži3\ X/(%- r¿\ps z’Y2 (íä’XX3à+ ¤’X (Ä*0WÔ${¤a {£a {¢a - rÀÆps\ zY£’þ 3Y+Y(Ä sçH *0MÕ${¤a {£a {¢a 3*£’ £’e¤’X(Ä sèH (éH *0X€/X0 XsêH *(ðà ,, (ëH (ìH (ëH (íH Y+µXsêH *0 ø„/!!u -q!u:Àt { { { (òÃ(îH (ïH (ðH (ñH (ÿsêH 8Zt   {  {  {  oòH   (û ob    (ñÃ8ÿt{ {{ {{ { ,+""u:"u:6(òÃ(îH (ïH  (ðH (ñH X (òÃ(ðH (îH (ïH (ñH   (ã(ý XXsêH 8t{ (òÃ(îH  (ïH (ðH (ñH  YX (òÃ(ðH (îH (ïH (ñH   (ç(ýXsêH 8bt{ (òÃ(îH  (ïH (ðH (ñH XY X>°(îà (òÃ(ðH (îH (ïH (ñH (ïÃ(óH (ôH  ,*   (ç(ýXsêH 8€   (å(ýXXsêH +V (òÃ(ðH (îH (ïH (ñH   (å(ýXXsêH (ñH (ðH (îH (ïH sêH *0.†/0*   (x+(Ä (òÃ(ðH *Z(\ ob XsõH *‚ s r 8p(\ (\ sõH *0›ˆ/  u :× u:é  u- u:‹rhmp Csó zt { { { (öà ,+(öH (÷H rˆ^p(ôÃ(öH (÷H (÷H 8@ÿÿÿt{8ÿÿÿt {oòH (ôÃ*t {u9ÿþÿÿ{t{&9çþÿÿ{ { {  (öÃ(öH (÷H  X(Û+(öH (÷H  X8eþÿÿ02Š/  ([ (öà (öH (+(è+(øH *0 s oñ o *0 `‹/  u-2 u:üt { oòH o ob X*t {u,[{t {{ { (Ü+X(Ý+X8Qÿÿÿ{{{(Ü+,+rˆ^po rˆ^pob X8ëþÿÿt  {  { {  (Þ+&(Ü+ (Þ+&*0/   (Ü+&*0WŽ/(K/ ,D (K/ (K/ ,5(K/ (K/ (K/ -!(L/ (q (L/ (q súH *r3nps\ z0o‘/,j(ß+ (ÄÄ3Mt(1 {br$p(ñ ,{b (à+(ûH *{br%$p(ñ ,{b(üH -*rInps\ z*~3b*~4b*0B“/s&Ä (á+( Å rÙøp(ûrp(û(ã(ëÄ(ã(ëÄ*0B•/s(Ä (â+( Å rÙøp(ûrp(û(ã(ëÄ(ã(ëÄ*0@rÞFp(ûr¸9p(û(ÅrâFp(û(ã(ëÄ(ã(ëÄ*0@ró?p(ûr¸9p(û(Årù?p(û(ã(ëÄ(ã(ëÄ*ÒrÞFp(û( ÅrâFp(û(ã(ëÄ(ã(ëÄ*0ÂV'YE©"YEYE~\YEk(!@ ,Uid[ ] i [ ] i ] r¿pþ’o& ( þ’o& ( þ’o& ( *þo& *ruÍp*r‘np*:jÿÿÿr$8p*9Qÿÿÿr—np*òob / (ýH þ+,o^ "þþ+, X+Ç*0<8ob 3(+ (è+(øH *Xo^ (Ä(\ +Ä0¾  r*8p( r*8p( *0a.Y Y  / + r*8poL ( r*8p( rnp( ob Y þ’o& ( r£np( *j(ò 1(ò Y(ó **"sþH *0 %(,Ä(ß+Œ( Ä*0 !(ß+Œ( Ä*0 Ä›/0+(ò þþ,r˜Gp(û Ý• 9E oÿH ,r˜Gp(û Ýr oI  ok oV ,,oW Я)(d oV , oW + (è++, o& (û( ( 8] ok Ð(d oþ5 ,þ, Žiþ+,8$£(ã+oI (ñ ,+ob þþ,8çrÙøpoI rpo /+þ,+ Xþþ,8Ÿ0rR9p+#Y(V   (Õ   YXoL  Xob 2rR9p+0X(V   (Õ  ob Y    YXoL  X(V  Y(V  (Õ  (Õ     YXoL  s9Ä(ä+u°)9t°)(I um,(û+Y( Ä( Ä (û (û(ã(ëÄ(ã(ëÄ( ( Þ tÞ+>t±)(I r³npoe ( r6Úp( (û( ( -&s;Ä s?Ä{"(å++-Y (Ä+(¡(  oI  ÞIY (Ä Þ/t( Ärýnpoe ( (û Þ*A4XmÅ ’“/0®ž/sAÄ (K/ 9‘ (K/ (K/ -(L/ (q sI þ(æ+* rl^p(ûsI (ç+s I (è+r:p(û(ÅrR^p(û(ã(ëÄ(ã(ëÄ* +œÞ,/rl^p(ûrR^p(û(ã(ëÄ(ã(ëÄ**>sWÄ**s I **s I *"s I *0 /©/sQÄ sSÄ (ÄÄEÐ9(ÄÄE”™^rhmp só zt(1 {b(üH -{b ( Ä (û*{b{b ( Ä (û(é+(å(ëÄþþoI þoé1 *t)1{ b{!b( Äow5 (üH -  (û* (û(é+(å(ëÄþþoI þoé1 *t&1{b( Är opow5 ( r6Úp(  (û(0Ä3(ñÄ**t*1{"b9ok um ,I  ( Ä ob X{#0 (Ä  (û*{# (Ä  (û*uî  9¬   oI   YE6µrop þ’o& (   (û(( (ž( (Ä* oI  oI  sUÄ(ê+(ë+{((ì+-+.r%opþ’o& (   (û(ž( (Ä* oI  oI  oI  oI  sYÄs[Ä(ë+{((í+-þ+,+Yr%opþ’o& (   (ûr5opþ’o& (   (û(ž( (ž( (Ä*ok oV ,eoW Ðö(d oV , oW +(è+,+3oW Ð%(d oV , oW +(è++9Ûok oW Ðö(d oV , oW +(è+,rÔ‰p+ri@p ¥ o  (î+skÄ(ï+{( [X(ð+ (û(Ä(å(ëÄþþoI oé1 Þu ,oâ &Ü&Ü*u 9Þ{+,smÄok o6 (ñ+þ+9Žo (ê+soÄ(ï+{([X(ð+rrŠp(û(Ä(å(ëÄþþoI oé1 Þu ,oâ &Ü&Ü*rEop(û(0Ä3(ñÄ**(.Ä(n o4Ä,ok (êÃ+,(ñÄ*( Ä(û{*,g o6   [  sqÄ(I  Ži-+  þþ,* ssÄ (ò+(ó+(Ä(å(ëÄ**( Ä(ýÃ*( Ä(þÃ*t%1{b!þþr:p(û(ê+!(ô+(Å(Ä*t'1{b(õ+(ö+(ÿÃ*t(1  (ð+- ok (Ä+9Ÿøÿÿ{b{b r$p(ñ ,[(à+""(ì: "(I ##( Ä(ê+(÷+(ø+{(Y(ù+(ž( (Ä*( Är$_p(û*Ìb.—dû0 G«/ (ú+sI {)sß   {'(û+Œù( Ä*0¬/9¶(ž+:2(+:J(ü+:(¨+:ï(§+:Ä(¥+:£(¦+:x(£+:M(¤+:"(¡+:÷(¢+:Ì(ý+:¡(þ+:w(Ÿ+-[( +-0o& Þ#t rQopoe ( r6Úp( Þ*¥ rêp(Ä( rêp( *¥ó,rªp*r´p*¥ þo& rÄBp( *¥þo& r¡cp( *¥{$(I r¦Bp( *¥÷{$(I r¢Bp( *¥€{$(I r°Bp( *¥ø{$(I r¬Bp( *¥ô  {$(I r¶Bp( *¥’  {$(I *¥Á  {$(I rºBp( *¥õ  {$(I r¾Bp( *¥ñ  r‡p{$(I rÜBp( *¥ö(I , r}op8µ( I , r…op8¡(!I , r™op8{ ob 2{ o^ gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#("I   {$(I rÒBp( +{ {$(Ì( rØBp( *¥æ{ {$(Í( (#I ,r}op*($I ,r…op*(%I ,r™op*{ o^ g3sÄ(ä +, rÒBp( **ràBp*¦ °#B(,Ä(ÿ+*z{&-*{&sÄ(óÃ*r{!sƒÄ(Ä(+*Vs…Ä(Ä(÷Ã*0­/(1 (,Ä(ÿ+(Ä*Z(,Ä(ÿ+(Ä*0­/(1 (,Ä(ÿ+(Ä*B(.Ä(ÿ+*&s Ä*r( }¢a}£a}¤a*{¢a*{£a*{¤a*&*Zr.8ps&I (+o'I *((I *0 R®/()I (*I (û rCp(û(ã(ëÄr¸9p(û(ã(ëÄ(å(ëÄ*(+I *0 i¯/(,I (-I (û rCp(û(ã(ëÄ, (¡( + rWp(ûr¸9p(û(ã(ëÄ(ã(ëÄ*^s+Ä€ªas+Ä€«a*:( }©a*~ªa**(0Äþ*~«a**(0Äþ*{©a*Zr.8ps.I (+o/I *0þ, (0Ä3 * **6(n o2Ä*0.°/þ,uí0 ,{©a {©a þ**þþ*0*.þ,þ,{©a {©a þ**þþ*0±/uí0 ,o5Ä**:(¿ }0I *N{0I (ò þþ*V(Ú }¯a}°a*0 1{¯aok {°a 4{¯a(x þo29 *Þ}±a}²a}³a}´a}µa}¶ao &*0 1{±a{²a{³a{´a{µa{¶aYþ( Ä*6{³a{(*6{³a{(*V(1I }·a}¸a*Z{¸a{·aþ(+*²(3I }¹a}ºa}»a}¼a}½a*0 *{¹a{ºa{»a{¼a{½aþ( Ä*:(4I }5I *V{5I Œþo6I *:(7I }8I *0³/{8I o9I s:I *:(;I }I *:(4I }?I *V{?I Œþo6I *:(7I }@I *0³/{@I o9I sAI *:(;I }BI *0µ/{BI o=I sCI *:(DI }EI *V{EI (O þoFI *²(3I }Åa}Æa}Ça}Èa}Éa*0 *{Åa{Æa{Ça{Èa{Éaþ( Ä*²(GI }Êa}Ëa}Ìa}Ía}Îa*0 '{Êa{Ëa{Ìa{Ía{Îa(Ä*r(HI }Ïa}Ða}Ña*Ê{Ña{ÐaX3*{ÏaoII ŒXsJI (KI *Ò(HI }Òa}Óa}Ôa}Õa}Öa}×a*0W{×a{Õa{ÓaX2+{Öa{ÔaXþþ,*{Òa{×aoLI ŒXsJI (KI *0L(î1 }Øa}Ùa}Úa}Ûa}Üa}Ýa}Þa}ßa }àa*0 ^{Ûa{Úa(ê+{Üa{Ýa{Þa{ßa{àa(Ä{Ùa(ë+{àa{Øa{((ì+(Ä*V(MI }áa}âa*Š{âa{áaX2*XsZ (> *:(NI }ãa*B{ãaþo6I *:(OI }äa*0³/{äao9I s]Ä*:(PI }åa*0µ/{åao=I s_Ä*:(4I }QI *V{QI Œþo6I *:(7I }RI *0³/{RI o9I sSI *:(;I }TI *0µ/{TI o=I sUI *r(4I }VI }WI }XI *0 ¶/{XI rÔ‰p(ñ ,Œ,++, þok oV +,: þok oW Ю$(d oV , oW +(è++,s{VI saÄ{WI  þok r«opoYI ŒoZI  þok rWpoYI ŒoZI sü; þ(+*{VI s[I {WI þ(+*:(\I }ìa*ž{ìaoï ,{ìaoÖG s]I (^I **(†: *Jol r³op(ñ *:(\I }ía*ž{íaoï ,{íaoÖG s]I (^I ***o &*v¥?ow5 ¥?ow5 ( *ò(`I }îa}ïa}ða}ña}òa}óa}ôa*0{·/ow5 {îa{ïa{ða{ña{òa{ôaow5 {óaok  4{óa(x o29 ( Ä( ( Þ t  ÞsaI *ai :(4I }bI *V{bI Œþo6I *:(7I }cI *0³/{cI o9I sdI *:(;I }eI *0µ/{eI o=I sfI *r(gI }hI }iI }jI *0 ;(P (O {hI ( Ä{iI skI {jI (+slI *:(mI }nI *N{nI Œ(üÃ*(Ñ *F(æ( ,*-þ*:(oI }üa*:{üa(Ä*:(oI }ýa*:{ýa(Ä*:(oI }þa*:{þa(Ä*–oS ,+oT ,+oU þ*î(‡Ä,1oV ,oV ,oW oW þoX **þoX **~/b*~0b*~1b*~2b*0N¹/(pI ,C(qI Ži12Ðø(d oV , oW +£vorI þ(ˆÄ***2sÄ€b*:( }ÿa*sžÄ**(œÄþ*"s Ä**(œÄþ*s£Ä**(œÄþ*s¥Ä**(œÄþ*~b**(œÄþ*s§Ä**(œÄþ*{ÿa*Zr.8pssI (+otI *>(Ä}b*{b*Z(Ä}b} b*{b*{ b*>(Ä} b*{ b*>(Ä} b*{ b*>(Ä} b*{ b*:( } b*2{ b{b*:( }b*2{b{b*2{b{ b*:( }b*2{b{ b*:( }b*2{b{ b*:( }b*2{b{ b*2sµÄ€b*:( }b*sÆÄ**(ÄÄþ*sÈÄ**(ÄÄþ*sÊÄ**(ÄÄþ*"sÌÄ**(ÄÄþ*"sÏÄ**(ÄÄþ*~b**(ÄÄþ*sÒÄ**(ÄÄþ*{b*Zr.8psuI (+ovI *>(µÄ}b*{b*>(µÄ}b*{b*>(µÄ}b*{b*Z(µÄ}b}b*{b*{b*Z(µÄ} b}!b*{ b*{!b*>(µÄ}"b*{"b*:( }#b*2{#b{b*:( }$b*2{$b{b*:( }%b*2{%b{b*:( }&b*2{&b{b*2{&b{b*:( }'b*2{'b{ b*2{'b{!b*:( }(b*2{(b{"b*0ؼ/(wI (xI ,4(wI (yI (wI (zI sçÄ( + ( +(¾Ä*(wI (|I 9}(wI (}I Œ ",+ r¨9ps‚ zŽi â  Y25£?ow5 oZI sI ¤âXX3Ë( +(ºÄ*(ÂÄ*0œ¿/9ok (ç: ,(è: ( +(¶Ä*(~I ,(¸Ä*(wI (pI ,F(wI (I (€I (I o‚I såÄ( + oƒI ( +(¼Ä*(âÄ*(ÂÄ*0_À/Œù ,(ãÄ*Ðù(d Ð(d (ˆÄ,r+Óp(µ (¼Ä*Ð(d (ˆÄ,(ÀÄ*(ÂÄ*(„I *:ow5 sI *(„I *:ow5 sI *0<Î$ u-u-t {*t{*t {+Ä0<Î$ u-u-t {*t{*t {+Ħ(éÄ(êÄ,+(éÄ(êÄ(ý**(û**(û**(û**(û**(û*~*b*0CÁ/u ,9t  {,*{,"{ um , rR9p(ñ ***>(ç(ëÄ*~+b*~,b*~-b*~.b**(ÿ*‚(òÄ,*(òÄ,*þ(Ú+*:(ã(ëÄ*>(å(ëÄ*>(å(ëÄ*>(å(ëÄ*BsÅþ(ùÄ*BsÅþ(ùÄ*BsÅþ(ùÄ*08Ñ$(Ÿ( ,. (Ÿ( (Ù( oé1 (å(ëÄ+Ê*0@Ò$(Ÿ( ,2 (Ÿ( (Ÿ( - (Ù( *(Ÿ( (Ù(  (Å*(ñÄ*6sÅ(Å*6s!Å(Å*6s#Å(Å*:s%Å(Å*¾rl^p(ûrR^p(û(ã(ëÄ(ã(ëÄ*fr:p(û(Å(Å*0D(Ÿ( ,6 (Ÿ( (Ÿ( - (Ù( *(Ÿ( (Ù( s'Åþ(ˆ+*(ñÄ*09Ã,) (ƒ rÕp(ûo1) (å(ëÄ*r+Óp(û*0FrÞFp(ûr¸9p(û(+(ÅrâFp(û(ã(ëÄ(ã(ëÄ*¾rÞFp(ûrâFp(û(ã(ëÄ(ã(ëÄ*¾rÙøp(ûrp(û(ã(ëÄ(ã(ëÄ*0‚Â/o…I ,r˜Gp(û(( (ž( *o†I ,N (ˆ (q (ˆ (r 0r˜Gp(û(( (ž( * o1) Y( +(ž( *(( *0Å/   ( +*Bs‡I ( +*() *>(å(ëÄ*() *>(å(ëÄ*() *>(å(ëÄ*() *>(å(ëÄ*() *>(ç(ëÄ*() *>(ç(ëÄ*() *>(ç(ëÄ*(þ( *fr:p(û(ã(ëÄ*(þ( *fr¸9p(û(ã(ëÄ*(þ( **:(þ( })b*N{)b(ã(ëÄ*() *.þ(þÄ*(¿ **0ÄrR9p(û€*bsÅ€+bsÅ€,bsÅ€-bsÅ€.bЪ(d €0b(ŠÄoV , (ŠÄoW +(ŠÄ€/bÐ- (d €2b(ŒÄoV , (ŒÄoW +(ŒÄ€1bràBp(û€3brbBp(û€4b*(ˆI **0 ¾z/sÒÎ 2+o^ %3 Xþþ+,)sé sÔÎ(+oÚH o& Œm*(²# ,X8‚ÿÿÿo^ %YEX8SÿÿÿXþ(Ü*ús0Å(Ú+€€Ð- (d oW €€€ €*(ãH *Fráop(9 säH *:( }7b*B{7bþo *(‰I *0 È/(ŠI (‹I   (+ s2Å*:( }8b*B{8bþo *(‰I *0 È/(ŠI (‹I   (+ s6Å*:( }9b*B{9bþo *(‰I *0 È/(ŠI (‹I   (+ s:Å*:( }:b*B{:bþo *(‰I *0 È/(ŠI (‹I   (+ s>Å*:( };b*B{;bþo *(‰I *0 È/(ŠI (‹I   (+ sBÅ*:( }b*B{>bþo *(‰I *0 È/(ŠI (‹I   (+ sNÅ*:( }?b*B{?bþo *(‰I *0 È/(ŠI (‹I   (+ sRÅ*:( }@b*B{@bþo *(‰I *0 È/(ŠI (‹I   (+ sVÅ*:( }Ab*B{Abþo *(‰I *0 È/(ŠI (‹I   (+ sZÅ*:( }Bb*B{Bbþo *(‰I *0 È/(ŠI (‹I   (+ s^Å*:(Ó }Cb*B{Cbþo  *:( }Db*0¸{Dbo! sbÅ*(ŒI *0 Ë/(I (ŽI   (+ sdÅ*:( }Eb*B{Ebþo *(‰I *0 È/(ŠI (‹I   (+ shÅ*:( }Fb*B{Fbþo *(‰I *0 È/(ŠI (‹I   (+ slÅ*:( }Gb*B{Gbþo *(‰I *0 È/(ŠI (‹I   (+ spÅ*:( }Hb*B{Hbþo *(‰I *0 È/(ŠI (‹I   (+ stÅ*:( }Ib*B{Ibþo *:(` }Jb*0{{Jboa sxÅ*(I *0 Î/(I (‘I   (+ szÅ*:( }Kb*B{Kbþo *(‰I *0 È/(ŠI (‹I   (+ s~Å*:( }Lb*B{Lbþo *(‰I *0 È/(ŠI (‹I   (+ s‚Å*:( }Mb*B{Mbþo *(‰I *0 È/(ŠI (‹I   (+ s†Å*:( }Nb*B{Nbþo *(‰I *0 È/(ŠI (‹I   (+ sŠÅ*:( }Ob*B{Obþo *(‰I *0 È/(ŠI (‹I   (+ sŽÅ*:( }Pb*B{Pbþo *(‰I *0 È/(ŠI (‹I   (+ s’Å*:( }Qb*B{Qbþo *(‰I *0 È/(ŠI (‹I   (+ s–Å*:( }Rb*B{Rbþo *(‰I *0 È/(ŠI (‹I   (+ sšÅ*:( }Sb*B{Sbþo *(‰I *0 È/(ŠI (‹I   (+ sžÅ*:( }Tb*B{Tbþo *(‰I *0 È/(ŠI (‹I   (+ s¢Å*:( }Ub*B{Ubþo *:(` }Vb*0{{Vboa s¦Å*(I *0 Î/(I (‘I   (+ s¨Å*:( }Wb*B{Wbþo *(‰I *0 È/(ŠI (‹I   (+ s¬Å*:( }Xb*B{Xbþo *(‰I *0 È/(ŠI (‹I   (+ s°Å*:( }Yb*B{Ybþo *(‰I *0 È/(ŠI (‹I   (+ s´Å*:( }Zb*B{Zbþo *(‰I *0 È/(ŠI (‹I   (+ s¸Å*:( }[b*B{[bþo *(‰I *0 È/(ŠI (‹I   (+ s¼Å*:( }\b*B{\bþo *:(` }]b*0{{]boa sÀÅ*(I *0 Î/(I (‘I   (+ sÂÅ*:( }^b*B{^bþo *:(` }_b*0{{_boa sÆÅ*(I *0 Î/(I (‘I   (+ sÈÅ*:( }`b*B{`bþo *(‰I *0 È/(ŠI (‹I   (+ sÌÅ*:( }ab*B{abþo *(‰I *0 È/(ŠI (‹I   (+ sÐÅ*:( }bb*B{bbþo *(‰I *0 È/(ŠI (‹I   (+ sÔÅ*:( }cb*B{cbþo *(‰I *0 È/(ŠI (‹I   (+ sØÅ*:( }db*B{dbþo *(‰I *0 È/(ŠI (‹I   (+ sÜÅ*:( }eb*B{ebþo *(‰I *0 È/(ŠI (‹I   (+ sàÅ*:( }fb*B{fbþo *(‰I *0 È/(ŠI (‹I   (+ säÅ*:( }gb*B{gbþo *(‰I *0 È/(ŠI (‹I   (+ sèÅ*:( }hb*B{hbþo *:(` }ib*0{{iboa sìÅ*(I *0 Î/(I (‘I   (+ sîÅ*:( }jb*B{jbþo *(‰I *0 È/(ŠI (‹I   (+ sòÅ*:( }kb*B{kbþo *(‰I *0 È/(ŠI (‹I   (+ söÅ*:( }lb*B{lbþo *(‰I *0 È/(ŠI (‹I   (+ súÅ*:( }mb*B{mbþo *(‰I *0 È/(ŠI (‹I   (+ sþÅ*:( }nb*B{nbþo *:(` }ob*0{{oboa sÆ*(I *0 Î/(I (‘I   (+ sÆ*:( }pb*B{pbþo *:(` }qb*0{{qboa sÆ*(I *0 Î/(I (‘I   (+ s Æ*:( }rb*B{rbþo *(‰I *0 È/(ŠI (‹I   (+ sÆ*:( }sb*B{sbþo *:(` }tb*0{{tboa sÆ*(I *0 Î/(I (‘I   (+ sÆ*:( }ub*B{ubþo *:(` }vb*0{{vboa sÆ*:(b }wb*0|{wboc sÆ*(’I *0 Ñ/(“I (”I   (+ sÆ*:( }xb*B{xbþo *:(` }yb*0{{yboa s Æ*:(b }zb*0|{zboc s"Æ*(’I *0 Ñ/(“I (”I   (+ s$Æ*:( }{b*B{{bþo *:(` }|b*0{{|boa s(Æ*:(b }}b*0|{}boc s*Æ*(’I *0 Ñ/(“I (”I   (+ s,Æ*:( }~b*B{~bþo *:(` }b*0{{boa s0Æ*:(b }€b*0|{€boc s2Æ*(’I *0 Ñ/(“I (”I   (+ s4Æ*:( }b*B{bþo *:(` }‚b*0{{‚boa s8Æ*:(b }ƒb*0|{ƒboc s:Æ*(’I *0 Ñ/(“I (”I   (+ s<Æ*:( }„b*B{„bþo *:(` }…b*0{{…boa s@Æ*:(b }†b*0|{†boc sBÆ*(’I *0 Ñ/(“I (”I   (+ sDÆ*:( }‡b*B{‡bþo *:(` }ˆb*0{{ˆboa sHÆ*:(b }‰b*0|{‰boc sJÆ*(’I *0 Ñ/(“I (”I   (+ sLÆ*:( }Šb*B{Šbþo *:(` }‹b*0{{‹boa sPÆ*:(b }Œb*0|{Œboc sRÆ*(’I *0 Ñ/(“I (”I   (+ sTÆ*:( }b*B{bþo *:(` }Žb*0{{Žboa sXÆ*:(b }b*0|{boc sZÆ*(’I *0 Ñ/(“I (”I   (+ s\Æ*:( }b*B{bþo *:(` }‘b*0{{‘boa s`Æ*:(b }’b*0|{’boc sbÆ*(’I *0 Ñ/(“I (”I   (+ sdÆ*:( }“b*B{“bþo *:(` }”b*0{{”boa shÆ*:(b }•b*0|{•boc sjÆ*(’I *0 Ñ/(“I (”I   (+ slÆ*:( }–b*B{–bþo *:(` }—b*0{{—boa spÆ*:(b }˜b*0|{˜boc srÆ*(’I *0 Ñ/(“I (”I   (+ stÆ*:( }™b*B{™bþo *:(` }šb*0{{šboa sxÆ*:(b }›b*0|{›boc szÆ*:(«E }œb*0){œbo¬E s|Æ*:(•I }b*0Ò/{bo–I s~Æ*(—I *0 Ö/(˜I (™I   (+ s€Æ*:( }žb*B{žbþo *:(` }Ÿb*0{{Ÿboa s„Æ*:(b } b*0|{ boc s†Æ*(’I *0 Ñ/(“I (”I   (+ sˆÆ*:( }¡b*B{¡bþo *:(` }¢b*0{{¢boa sŒÆ*:(b }£b*0|{£boc sŽÆ*:(«E }¤b*0){¤bo¬E sÆ*:(•I }¥b*0Ò/{¥bo–I s’Æ*:(šI }¦b*0×/{¦bo›I s”Æ*:(œI }§b*0Ù/{§boI s–Æ*(žI *0 Ý/(ŸI ( I   (+ s˜Æ*:( }¨b*B{¨bþo *:(` }©b*0{{©boa sœÆ*:(b }ªb*0|{ªboc sžÆ*(’I *0 Ñ/(“I (”I   (+ s Æ*:( }«b*B{«bþo *:(` }¬b*0{{¬boa s¤Æ*:(b }­b*0|{­boc s¦Æ*(’I *0 Ñ/(“I (”I   (+ s¨Æ*:( }®b*B{®bþo *:(` }¯b*0{{¯boa s¬Æ*:(b }°b*0|{°boc s®Æ*(’I *0 Ñ/(“I (”I   (+ s°Æ*:( }±b*B{±bþo *:(` }²b*0{{²boa s´Æ*:(b }³b*0|{³boc s¶Æ*(’I *0 Ñ/(“I (”I   (+ s¸Æ*:( }´b*B{´bþo *:(` }µb*0{{µboa s¼Æ*:(b }¶b*0|{¶boc s¾Æ*(’I *0 Ñ/(“I (”I   (+ sÀÆ*:( }·b*B{·bþo *:(` }¸b*0{{¸boa sÄÆ*:(b }¹b*0|{¹boc sÆÆ*(’I *0 Ñ/(“I (”I   (+ sÈÆ*:( }ºb*B{ºbþo *:(` }»b*0{{»boa sÌÆ*:(b }¼b*0|{¼boc sÎÆ*(’I *0 Ñ/(“I (”I   (+ sÐÆ*:( }½b*B{½bþo *:(` }¾b*0{{¾boa sÔÆ*:(b }¿b*0|{¿boc sÖÆ*(’I *0 Ñ/(“I (”I   (+ sØÆ*:( }Àb*B{Àbþo *:(` }Áb*0{{Áboa sÜÆ*:(b }Âb*0|{Âboc sÞÆ*(’I *0 Ñ/(“I (”I   (+ sàÆ*:( }Ãb*B{Ãbþo *(‰I *0 È/(ŠI (‹I   (+ säÆ*:( }Äb*B{Äbþo *(‰I *0 È/(ŠI (‹I   (+ sèÆ*:( }Åb*B{Åbþo *(‰I *0 È/(ŠI (‹I   (+ sìÆ*:( }Æb*B{Æbþo *:(` }Çb*0{{Çboa sðÆ*(I *0 Î/(I (‘I   (+ sòÆ*:( }Èb*B{Èbþo *(‰I *0 È/(ŠI (‹I   (+ söÆ*:( }Éb*B{Ébþo *(‰I *0 È/(ŠI (‹I   (+ súÆ*:( }Êb*B{Êbþo *(‰I *0 È/(ŠI (‹I   (+ sþÆ*:( }Ëb*B{Ëbþo *(‰I *0 È/(ŠI (‹I   (+ sÇ*:( }Ìb*B{Ìbþo *(‰I *0 È/(ŠI (‹I   (+ sÇ*:( }Íb*B{Íbþo *(‰I *0 È/(ŠI (‹I   (+ s Ç*:( }Îb*B{Îbþo *(‰I *0 È/(ŠI (‹I   (+ sÇ*:( }Ïb*B{Ïbþo *(‰I *0 È/(ŠI (‹I   (+ sÇ*:( }Ðb*B{Ðbþo *(‰I *0 È/(ŠI (‹I   (+ sÇ*:( }Ñb*B{Ñbþo *:(` }Òb*0{{Òboa sÇ*(I *0 Î/(I (‘I   (+ sÇ*:( }Ób*B{Óbþo *:(` }Ôb*0{{Ôboa s Ç*:(b }Õb*0|{Õboc s"Ç*(’I *0 Ñ/(“I (”I   (+ s$Ç*:( }Öb*B{Öbþo *:(` }×b*0{{×boa s(Ç*:(b }Øb*0|{Øboc s*Ç*(’I *0 Ñ/(“I (”I   (+ s,Ç*:( }Ùb*B{Ùbþo *(‰I *0 È/(ŠI (‹I   (+ s0Ç*:( }Úb*B{Úbþo *(‰I *0 È/(ŠI (‹I   (+ s4Ç*:( }Ûb*B{Ûbþo *(‰I *0 È/(ŠI (‹I   (+ s8Ç*:( }Üb*B{Übþo *(‰I *0 È/(ŠI (‹I   (+ s<Ç*:( }Ýb*B{Ýbþo *(‰I *0 È/(ŠI (‹I   (+ s@Ç*:( }Þb*B{Þbþo *(‰I *0 È/(ŠI (‹I   (+ sDÇ*:( }ßb*B{ßbþo *:(` }àb*0{{àboa sHÇ*(I *0 Î/(I (‘I   (+ sJÇ*:( }áb*B{ábþo *(‰I *0 È/(ŠI (‹I   (+ sNÇ*:( }âb*B{âbþo *:(` }ãb*0{{ãboa sRÇ*(I *0 Î/(I (‘I   (+ sTÇ*:( }äb*B{äbþo *:(` }åb*0{{åboa sXÇ*(I *0 Î/(I (‘I   (+ sZÇ*:( }æb*B{æbþo *:(` }çb*0{{çboa s^Ç*(I *0 Î/(I (‘I   (+ s`Ç*:( }èb*B{èbþo *:(` }éb*0{{éboa sdÇ*(I *0 Î/(I (‘I   (+ sfÇ*:( }êb*B{êbþo *:(` }ëb*0{{ëboa sjÇ*:(b }ìb*0|{ìboc slÇ*(’I *0 Ñ/(“I (”I   (+ snÇ*:( }íb*B{íbþo *:(` }îb*0{{îboa srÇ*:(b }ïb*0|{ïboc stÇ*(’I *0 Ñ/(“I (”I   (+ svÇ*:( }ðb*B{ðbþo *(‰I *0 È/(ŠI (‹I   (+ szÇ*:( }ñb*B{ñbþo *(‰I *0 È/(ŠI (‹I   (+ s~Ç*:( }òb*B{òbþo *:(` }ób*0{{óboa s‚Ç*(I *0 Î/(I (‘I   (+ s„Ç*:( }ôb*B{ôbþo *:(` }õb*0{{õboa sˆÇ*(I *0 Î/(I (‘I   (+ sŠÇ*:( }öb*B{öbþo *:(` }÷b*0{{÷boa sŽÇ*(I *0 Î/(I (‘I   (+ sÇ*:( }øb*B{øbþo *:(` }ùb*0{{ùboa s”Ç*(I *0 Î/(I (‘I   (+ s–Ç*:( }úb*B{úbþo *:(` }ûb*0{{ûboa sšÇ*(I *0 Î/(I (‘I   (+ sœÇ*:( }üb*B{übþo *:(` }ýb*0{{ýboa s Ç*(I *0 Î/(I (‘I   (+ s¢Ç*:( }þb*B{þbþo *:(` }ÿb*0{{ÿboa s¦Ç*(I *0 Î/(I (‘I   (+ s¨Ç*:( }c*B{cþo *:(` }c*0{{coa s¬Ç*(I *0 Î/(I (‘I   (+ s®Ç*:( }c*B{cþo *:(` }c*0{{coa s²Ç*(I *0 Î/(I (‘I   (+ s´Ç*:( }c*B{cþo *:(` }c*0{{coa s¸Ç*(I *0 Î/(I (‘I   (+ sºÇ*:( }c*B{cþo *:(` }c*0{{coa s¾Ç*(I *0 Î/(I (‘I   (+ sÀÇ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ sÄÇ*:( } c*B{ cþo *:(` } c*0{{ coa sÈÇ*(I *0 Î/(I (‘I   (+ sÊÇ*:( } c*B{ cþo *:(` } c*0{{ coa sÎÇ*(I *0 Î/(I (‘I   (+ sÐÇ*:( } c*B{ cþo *(‰I *0 È/(ŠI (‹I   (+ sÔÇ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ sØÇ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ sÜÇ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ sàÇ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ säÇ*:( }c*B{cþo *:(` }c*0{{coa sèÇ*(I *0 Î/(I (‘I   (+ sêÇ*:( }c*B{cþo *:(` }c*0{{coa sîÇ*(I *0 Î/(I (‘I   (+ sðÇ*:( }c*B{cþo *:(` }c*0{{coa sôÇ*(I *0 Î/(I (‘I   (+ söÇ*:( }c*B{cþo *:(` }c*0{{coa súÇ*(I *0 Î/(I (‘I   (+ süÇ*:( }c*B{cþo *:(` }c*0{{coa sÈ*(I *0 Î/(I (‘I   (+ sÈ*:( }c*B{cþo *:(` }c*0{{coa sÈ*:(b }c*0|{coc sÈ*(’I *0 Ñ/(“I (”I   (+ s È*:( }c*B{cþo *:(` } c*0{{ coa sÈ*:(b }!c*0|{!coc sÈ*(’I *0 Ñ/(“I (”I   (+ sÈ*:( }"c*B{"cþo *:(` }#c*0{{#coa sÈ*(I *0 Î/(I (‘I   (+ sÈ*:( }$c*B{$cþo *:(` }%c*0{{%coa sÈ*(I *0 Î/(I (‘I   (+ sÈ*:( }&c*B{&cþo *(‰I *0 È/(ŠI (‹I   (+ s"È*:( }'c*B{'cþo *(‰I *0 È/(ŠI (‹I   (+ s&È*:( }(c*B{(cþo *(‰I *0 È/(ŠI (‹I   (+ s*È*:( })c*B{)cþo *:(` }*c*0{{*coa s.È*:(b }+c*0|{+coc s0È*(’I *0 Ñ/(“I (”I   (+ s2È*:( },c*B{,cþo *(‰I *0 È/(ŠI (‹I   (+ s6È*:( }-c*B{-cþo *(‰I *0 È/(ŠI (‹I   (+ s:È*:( }.c*B{.cþo *(‰I *0 È/(ŠI (‹I   (+ s>È*:( }/c*B{/cþo *:(` }0c*0{{0coa sBÈ*(I *0 Î/(I (‘I   (+ sDÈ*:( }1c*B{1cþo *:(` }2c*0{{2coa sHÈ*(I *0 Î/(I (‘I   (+ sJÈ*:( }3c*B{3cþo *:(` }4c*0{{4coa sNÈ*(I *0 Î/(I (‘I   (+ sPÈ*:( }5c*B{5cþo *:(` }6c*0{{6coa sTÈ*:(b }7c*0|{7coc sVÈ*(’I *0 Ñ/(“I (”I   (+ sXÈ*:( }8c*B{8cþo *(‰I *0 È/(ŠI (‹I   (+ s\È*:( }9c*B{9cþo *(‰I *0 È/(ŠI (‹I   (+ s`È*:( }:c*B{:cþo *(‰I *0 È/(ŠI (‹I   (+ sdÈ*:( };c*B{;cþo *:(` }c*B{>cþo *(‰I *0 È/(ŠI (‹I   (+ srÈ*:( }?c*B{?cþo *(‰I *0 È/(ŠI (‹I   (+ svÈ*:( }@c*B{@cþo *(‰I *0 È/(ŠI (‹I   (+ szÈ*:( }Ac*B{Acþo *:(` }Bc*0{{Bcoa s~È*(I *0 Î/(I (‘I   (+ s€È*:( }Cc*B{Ccþo *(‰I *0 È/(ŠI (‹I   (+ s„È*:( }Dc*B{Dcþo *(‰I *0 È/(ŠI (‹I   (+ sˆÈ*:( }Ec*B{Ecþo *(‰I *0 È/(ŠI (‹I   (+ sŒÈ*:( }Fc*B{Fcþo *(‰I *0 È/(ŠI (‹I   (+ sÈ*:( }Gc*B{Gcþo *(‰I *0 È/(ŠI (‹I   (+ s”È*:( }Hc*B{Hcþo *:(` }Ic*0{{Icoa s˜È*:(b }Jc*0|{Jcoc sšÈ*(’I *0 Ñ/(“I (”I   (+ sœÈ*:( }Kc*B{Kcþo *(‰I *0 È/(ŠI (‹I   (+ s È*:( }Lc*B{Lcþo *(‰I *0 È/(ŠI (‹I   (+ s¤È*:( }Mc*B{Mcþo *(‰I *0 È/(ŠI (‹I   (+ s¨È*:( }Nc*B{Ncþo *(‰I *0 È/(ŠI (‹I   (+ s¬È*:( }Oc*B{Ocþo *(‰I *0 È/(ŠI (‹I   (+ s°È*:( }Pc*B{Pcþo *(‰I *0 È/(ŠI (‹I   (+ s´È*:( }Qc*B{Qcþo *(‰I *0 È/(ŠI (‹I   (+ s¸È*:( }Rc*B{Rcþo *(‰I *0 È/(ŠI (‹I   (+ s¼È*:( }Sc*B{Scþo *(‰I *0 È/(ŠI (‹I   (+ sÀÈ*:( }Tc*B{Tcþo *(‰I *0 È/(ŠI (‹I   (+ sÄÈ*:( }Uc*B{Ucþo *:(` }Vc*0{{Vcoa sÈÈ*(I *0 Î/(I (‘I   (+ sÊÈ*:( }Wc*B{Wcþo *(‰I *0 È/(ŠI (‹I   (+ sÎÈ*:( }Xc*B{Xcþo *(‰I *0 È/(ŠI (‹I   (+ sÒÈ*:(Ó }Yc*B{Ycþo  *:(Ù }Zc*0¸{ZcoÚ sÖÈ*(¡I *0 à/(¢I (£I   (+ sØÈ*:( }[c*B{[cþo *(‰I *0 È/(ŠI (‹I   (+ sÜÈ*:( }\c*B{\cþo *(‰I *0 È/(ŠI (‹I   (+ sàÈ*:( }]c*B{]cþo *:(` }^c*0{{^coa säÈ*(I *0 Î/(I (‘I   (+ sæÈ*:( }_c*B{_cþo *:(` }`c*0{{`coa sêÈ*(I *0 Î/(I (‘I   (+ sìÈ*:( }ac*B{acþo *:(` }bc*0{{bcoa sðÈ*(I *0 Î/(I (‘I   (+ sòÈ*:( }cc*B{ccþo *:(` }dc*0{{dcoa söÈ*(I *0 Î/(I (‘I   (+ søÈ*:( }ec*B{ecþo *:(` }fc*0{{fcoa süÈ*(I *0 Î/(I (‘I   (+ sþÈ*:( }gc*B{gcþo *:(` }hc*0{{hcoa sÉ*:(b }ic*0|{icoc sÉ*(’I *0 Ñ/(“I (”I   (+ sÉ*:( }jc*B{jcþo *:(` }kc*0{{kcoa s É*:(b }lc*0|{lcoc s É*(’I *0 Ñ/(“I (”I   (+ sÉ*:( }mc*B{mcþo *(‰I *0 È/(ŠI (‹I   (+ sÉ*:( }nc*B{ncþo *(‰I *0 È/(ŠI (‹I   (+ sÉ*:( }oc*B{ocþo *(‰I *0 È/(ŠI (‹I   (+ sÉ*:( }pc*B{pcþo *(‰I *0 È/(ŠI (‹I   (+ sÉ*:( }qc*B{qcþo *(‰I *0 È/(ŠI (‹I   (+ s"É*:( }rc*B{rcþo *(‰I *0 È/(ŠI (‹I   (+ s&É*:( }sc*B{scþo *(‰I *0 È/(ŠI (‹I   (+ s*É*:( }tc*B{tcþo *(‰I *0 È/(ŠI (‹I   (+ s.É*:( }uc*B{ucþo *(‰I *0 È/(ŠI (‹I   (+ s2É*:( }vc*B{vcþo *(‰I *0 È/(ŠI (‹I   (+ s6É*:( }wc*B{wcþo *(‰I *0 È/(ŠI (‹I   (+ s:É*:( }xc*B{xcþo *(‰I *0 È/(ŠI (‹I   (+ s>É*:( }yc*B{ycþo *(‰I *0 È/(ŠI (‹I   (+ sBÉ*:( }zc*B{zcþo *:(` }{c*0{{{coa sFÉ*(I *0 Î/(I (‘I   (+ sHÉ*:( }|c*B{|cþo *(‰I *0 È/(ŠI (‹I   (+ sLÉ*:( }}c*B{}cþo *(‰I *0 È/(ŠI (‹I   (+ sPÉ*:( }~c*B{~cþo *(‰I *0 È/(ŠI (‹I   (+ sTÉ*:( }c*B{cþo *(‰I *0 È/(ŠI (‹I   (+ sXÉ*:( }€c*B{€cþo *(‰I *0 È/(ŠI (‹I   (+ s\É*:( }c*B{cþo *:(` }‚c*0{{‚coa s`É*(I *0 Î/(I (‘I   (+ sbÉ*:( }ƒc*B{ƒcþo *:(` }„c*0{{„coa sfÉ*(I *0 Î/(I (‘I   (+ shÉ*:( }…c*B{…cþo *(‰I *0 È/(ŠI (‹I   (+ slÉ*:( }†c*B{†cþo *(‰I *0 È/(ŠI (‹I   (+ spÉ*:( }‡c*B{‡cþo *:(` }ˆc*0{{ˆcoa stÉ*:(b }‰c*0|{‰coc svÉ*(’I *0 Ñ/(“I (”I   (+ sxÉ*:( }Šc*B{Šcþo *(‰I *0 È/(ŠI (‹I   (+ s|É*:( }‹c*B{‹cþo *:(L }Œc*0{{ŒcoM s€É*:(¤I }c*0À{co¥I s‚É*(¦I *0 ä/(§I (¨I   (+ s„É*:( }Žc*B{Žcþo *:(L }c*0{{coM sˆÉ*:(¤I }c*0À{co¥I sŠÉ*(¦I *0 ä/(§I (¨I   (+ sŒÉ*:( }‘c*B{‘cþo *:(` }’c*0{{’coa sÉ*:(©I }“c*0|{“coªI s’É*:(«I }”c*0æ/{”co¬I s”É*(­I *0 ê/(®I (¯I   (+ s–É*:( }•c*B{•cþo *:(` }–c*0{{–coa sšÉ*:(©I }—c*0|{—coªI sœÉ*:(«I }˜c*0æ/{˜co¬I sžÉ*(­I *0 ê/(®I (¯I   (+ s É*:( }™c*B{™cþo *:(L }šc*0{{šcoM s¤É*:(°I }›c*0À{›co±I s¦É*:(²I }œc*0ì/{œco³I s¨É*:(´I }c*0î/{coµI sªÉ*(¶I *0 ò/(·I (¸I   (+ s¬É*:( }žc*B{žcþo *:(L }Ÿc*0{{ŸcoM s°É*:(°I } c*0À{ co±I s²É*:(¹I }¡c*0ì/{¡coºI s´É*(»I *0 ö/(¼I (½I   (+ s¶É*:( }¢c*B{¢cþo *:(L }£c*0{{£coM sºÉ*:(°I }¤c*0À{¤co±I s¼É*:(¹I }¥c*0ì/{¥coºI s¾É*(»I *0 ö/(¼I (½I   (+ sÀÉ*:(Ó }¦c*B{¦cþo  *:( }§c*0¸{§co! sÄÉ*:(¾I }¨c*0÷/{¨co¿I sÆÉ*:(ÀI }©c*0ù/{©coÁI sÈÉ*(ÂI *0 ý/(ÃI (ÄI   (+ sÊÉ*:(Ó }ªc*B{ªcþo  *:( }«c*0¸{«co! sÎÉ*:(ÅI }¬c*0÷/{¬coÆI sÐÉ*(ÇI *0 0(ÈI (ÉI   (+ sÒÉ*:(Ó }­c*B{­cþo  *:(Ù }®c*0¸{®coÚ sÖÉ*:(¬ }¯c*0º{¯co­ sØÉ*(ÊI *0 0(ËI (ÌI   (+ sÚÉ*:(Ó }°c*B{°cþo  *:( }±c*0¸{±co! sÞÉ*:(ÅI }²c*0÷/{²coÆI sàÉ*(ÇI *0 0(ÈI (ÉI   (+ sâÉ*:(Ó }³c*B{³cþo  *:(Ù }´c*0¸{´coÚ sæÉ*:(¬ }µc*0º{µco­ sèÉ*:(ÍI }¶c*00{¶coÎI sêÉ*(ÏI *0 0(ÐI (ÑI   (+ sìÉ*:( }·c*B{·cþo *:(L }¸c*0{{¸coM sðÉ*:(¤I }¹c*0À{¹co¥I sòÉ*:(ÒI }ºc*0 0{ºcoÓI sôÉ*(ÔI *0 0(ÕI (ÖI   (+ söÉ*:( }»c*B{»cþo *(‰I *0 È/(ŠI (‹I   (+ súÉ*:( }¼c*B{¼cþo *(‰I *0 È/(ŠI (‹I   (+ sþÉ*:( }½c*B{½cþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }¾c*B{¾cþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }¿c*B{¿cþo *(‰I *0 È/(ŠI (‹I   (+ s Ê*:( }Àc*B{Àcþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }Ác*B{Ácþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }Âc*B{Âcþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }Ãc*B{Ãcþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }Äc*B{Äcþo *(‰I *0 È/(ŠI (‹I   (+ sÊ*:( }Åc*B{Åcþo *:(` }Æc*0{{Æcoa s"Ê*(I *0 Î/(I (‘I   (+ s$Ê*:( }Çc*B{Çcþo *:(` }Èc*0{{Ècoa s(Ê*(I *0 Î/(I (‘I   (+ s*Ê*:( }Éc*B{Écþo *:(` }Êc*0{{Êcoa s.Ê*(I *0 Î/(I (‘I   (+ s0Ê*:( }Ëc*B{Ëcþo *(‰I *0 È/(ŠI (‹I   (+ s4Ê*:( }Ìc*B{Ìcþo *(‰I *0 È/(ŠI (‹I   (+ s8Ê*:( }Íc*B{Ícþo *(‰I *0 È/(ŠI (‹I   (+ s<Ê*:( }Îc*B{Îcþo *(‰I *0 È/(ŠI (‹I   (+ s@Ê*:( }Ïc*B{Ïcþo *(‰I *0 È/(ŠI (‹I   (+ sDÊ*:( }Ðc*B{Ðcþo *(‰I *0 È/(ŠI (‹I   (+ sHÊ*:( }Ñc*B{Ñcþo *(‰I *0 È/(ŠI (‹I   (+ sLÊ*:( }Òc*B{Òcþo *(‰I *0 È/(ŠI (‹I   (+ sPÊ*:( }Óc*B{Ócþo *(‰I *0 È/(ŠI (‹I   (+ sTÊ*:( }Ôc*B{Ôcþo *:(` }Õc*0{{Õcoa sXÊ*(I *0 Î/(I (‘I   (+ sZÊ*:( }Öc*B{Öcþo *(‰I *0 È/(ŠI (‹I   (+ s^Ê*:( }×c*B{×cþo *(‰I *0 È/(ŠI (‹I   (+ sbÊ*:( }Øc*B{Øcþo *(‰I *0 È/(ŠI (‹I   (+ sfÊ*:( }Ùc*B{Ùcþo *(‰I *0 È/(ŠI (‹I   (+ sjÊ*:( }Úc*B{Úcþo *(‰I *0 È/(ŠI (‹I   (+ snÊ*:( }Ûc*B{Ûcþo *(‰I *0 È/(ŠI (‹I   (+ srÊ*:(Ó }Üc*B{Ücþo  *:(Ù }Ýc*0¸{ÝcoÚ svÊ*(¡I *0 à/(¢I (£I   (+ sxÊ*:(Ó }Þc*B{Þcþo  *(×I *0 0(ØI (ÙI   (+ s|Ê*:( }ßc*B{ßcþo *(‰I *0 È/(ŠI (‹I   (+ s€Ê*:( }àc*B{àcþo *(‰I *0 È/(ŠI (‹I   (+ s„Ê*:( }ác*B{ácþo *(‰I *0 È/(ŠI (‹I   (+ sˆÊ*:( }âc*B{âcþo *(‰I *0 È/(ŠI (‹I   (+ sŒÊ*:(Ó }ãc*B{ãcþo  *(×I *0 0(ØI (ÙI   (+ sÊ*:( }äc*B{äcþo *(‰I *0 È/(ŠI (‹I   (+ s”Ê*:(Ó }åc*B{åcþo  *:(Ù }æc*0¸{æcoÚ s˜Ê*(¡I *0 à/(¢I (£I   (+ sšÊ*:( }çc*B{çcþo *(‰I *0 È/(ŠI (‹I   (+ sžÊ*:( }èc*B{ècþo *(‰I *0 È/(ŠI (‹I   (+ s¢Ê*:( }éc*B{écþo *(‰I *0 È/(ŠI (‹I   (+ s¦Ê*:( }êc*B{êcþo *(‰I *0 È/(ŠI (‹I   (+ sªÊ*:( }ëc*B{ëcþo *:(` }ìc*0{{ìcoa s®Ê*(I *0 Î/(I (‘I   (+ s°Ê*:( }íc*B{ícþo *:(` }îc*0{{îcoa s´Ê*(I *0 Î/(I (‘I   (+ s¶Ê*:( }ïc*B{ïcþo *(‰I *0 È/(ŠI (‹I   (+ sºÊ*:(Ó }ðc*B{ðcþo  *:( }ñc*0¸{ñco! s¾Ê*(ŒI *0 Ë/(I (ŽI   (+ sÀÊ*:(Ó }òc*B{òcþo  *:( }óc*0¸{óco! sÄÊ*(ŒI *0 Ë/(I (ŽI   (+ sÆÊ*:( }ôc*B{ôcþo *(‰I *0 È/(ŠI (‹I   (+ sÊÊ*:( }õc*B{õcþo *(‰I *0 È/(ŠI (‹I   (+ sÎÊ*:( }öc*B{öcþo *(‰I *0 È/(ŠI (‹I   (+ sÒÊ*:( }÷c*B{÷cþo *(‰I *0 È/(ŠI (‹I   (+ sÖÊ*:( }øc*B{øcþo *(‰I *0 È/(ŠI (‹I   (+ sÚÊ*:( }ùc*B{ùcþo *(‰I *0 È/(ŠI (‹I   (+ sÞÊ*:( }úc*B{úcþo *(‰I *0 È/(ŠI (‹I   (+ sâÊ*:( }ûc*B{ûcþo *(‰I *0 È/(ŠI (‹I   (+ sæÊ*:( }üc*B{ücþo *(‰I *0 È/(ŠI (‹I   (+ sêÊ*:( }ýc*B{ýcþo *(‰I *0 È/(ŠI (‹I   (+ sîÊ*:( }þc*B{þcþo *(‰I *0 È/(ŠI (‹I   (+ sòÊ*:( }ÿc*B{ÿcþo *(‰I *0 È/(ŠI (‹I   (+ söÊ*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ súÊ*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sþÊ*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }d*B{dþo *:(` } d*0{{ doa sË*:(b } d*0|{ doc sË*(’I *0 Ñ/(“I (”I   (+ sË*:( } d*B{ dþo *:(` } d*0{{ doa s"Ë*:(b } d*0|{ doc s$Ë*(’I *0 Ñ/(“I (”I   (+ s&Ë*:( }d*B{dþo *:(` }d*0{{doa s*Ë*(I *0 Î/(I (‘I   (+ s,Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s0Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s4Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s8Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s<Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s@Ë*:( }d*B{dþo *:(L }d*0{{doM sDË*(ÚI *0 0(ÛI (ÜI   ( + sFË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sJË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sNË*:(Ó }d*B{dþo  *(×I *0 0(ØI (ÙI   (+ sRË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sVË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sZË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s^Ë*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sbË*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sfË*:( }d*B{dþo *:(` } d*0{{ doa sjË*(I *0 Î/(I (‘I   (+ slË*:( }!d*B{!dþo *(‰I *0 È/(ŠI (‹I   (+ spË*:( }"d*B{"dþo *(‰I *0 È/(ŠI (‹I   (+ stË*:(Ó }#d*B{#dþo  *(×I *0 0(ØI (ÙI   (+ sxË*:( }$d*B{$dþo *(‰I *0 È/(ŠI (‹I   (+ s|Ë*:( }%d*B{%dþo *(‰I *0 È/(ŠI (‹I   (+ s€Ë*:( }&d*B{&dþo *(‰I *0 È/(ŠI (‹I   (+ s„Ë*:( }'d*B{'dþo *:(` }(d*0{{(doa sˆË*:(b })d*0|{)doc sŠË*(’I *0 Ñ/(“I (”I   (+ sŒË*:( }*d*B{*dþo *(‰I *0 È/(ŠI (‹I   (+ sË*:( }+d*B{+dþo *(‰I *0 È/(ŠI (‹I   (+ s”Ë*:( },d*B{,dþo *(‰I *0 È/(ŠI (‹I   (+ s˜Ë*:( }-d*B{-dþo *(‰I *0 È/(ŠI (‹I   (+ sœË*:( }.d*B{.dþo *(‰I *0 È/(ŠI (‹I   (+ s Ë*:( }/d*B{/dþo *(‰I *0 È/(ŠI (‹I   (+ s¤Ë*:( }0d*B{0dþo *(‰I *0 È/(ŠI (‹I   (+ s¨Ë*:( }1d*B{1dþo *(‰I *0 È/(ŠI (‹I   (+ s¬Ë*:( }2d*B{2dþo *:(` }3d*0{{3doa s°Ë*(I *0 Î/(I (‘I   (+ s²Ë*:( }4d*B{4dþo *:(` }5d*0{{5doa s¶Ë*(I *0 Î/(I (‘I   (+ s¸Ë*:( }6d*B{6dþo *:(` }7d*0{{7doa s¼Ë*:(b }8d*0|{8doc s¾Ë*(’I *0 Ñ/(“I (”I   (+ sÀË*:( }9d*B{9dþo *(‰I *0 È/(ŠI (‹I   (+ sÄË*:( }:d*B{:dþo *(‰I *0 È/(ŠI (‹I   (+ sÈË*:( };d*B{;dþo *(‰I *0 È/(ŠI (‹I   (+ sÌË*:( }d*B{>dþo *(‰I *0 È/(ŠI (‹I   (+ sØË*:( }?d*B{?dþo *(‰I *0 È/(ŠI (‹I   (+ sÜË*:( }@d*B{@dþo *:(` }Ad*0{{Adoa sàË*(I *0 Î/(I (‘I   (+ sâË*:( }Bd*B{Bdþo *:(` }Cd*0{{Cdoa sæË*(I *0 Î/(I (‘I   (+ sèË*:( }Dd*B{Ddþo *:(` }Ed*0{{Edoa sìË*(I *0 Î/(I (‘I   (+ sîË*:( }Fd*B{Fdþo *(‰I *0 È/(ŠI (‹I   (+ sòË*:( }Gd*B{Gdþo *(‰I *0 È/(ŠI (‹I   (+ söË*:( }Hd*B{Hdþo *(‰I *0 È/(ŠI (‹I   (+ súË*:( }Id*B{Idþo *(‰I *0 È/(ŠI (‹I   (+ sþË*:( }Jd*B{Jdþo *(‰I *0 È/(ŠI (‹I   (+ sÌ*:( }Kd*B{Kdþo *(‰I *0 È/(ŠI (‹I   (+ sÌ*:( }Ld*B{Ldþo *(‰I *0 È/(ŠI (‹I   (+ s Ì*:( }Md*B{Mdþo *(‰I *0 È/(ŠI (‹I   (+ sÌ*:(Ó }Nd*B{Ndþo  *:( }Od*0¸{Odo! sÌ*(ŒI *0 Ë/(I (ŽI   (+ sÌ*:( }Pd*B{Pdþo *(‰I *0 È/(ŠI (‹I   (+ sÌ*:( }Qd*B{Qdþo *:(` }Rd*0{{Rdoa sÌ*(I *0 Î/(I (‘I   (+ sÌ*:( }Sd*B{Sdþo *:(` }Td*0{{Tdoa s"Ì*(I *0 Î/(I (‘I   (+ s$Ì*:( }Ud*B{Udþo *:(` }Vd*0{{Vdoa s(Ì*:(b }Wd*0|{Wdoc s*Ì*(’I *0 Ñ/(“I (”I   (+ s,Ì*:( }Xd*B{Xdþo *:(` }Yd*0{{Ydoa s0Ì*:(b }Zd*0|{Zdoc s2Ì*(’I *0 Ñ/(“I (”I   (+ s4Ì*:( }[d*B{[dþo *:(` }\d*0{{\doa s8Ì*:(b }]d*0|{]doc s:Ì*(’I *0 Ñ/(“I (”I   (+ s<Ì*:( }^d*B{^dþo *:(` }_d*0{{_doa s@Ì*:(b }`d*0|{`doc sBÌ*(’I *0 Ñ/(“I (”I   (+ sDÌ*:( }ad*B{adþo *:(` }bd*0{{bdoa sHÌ*(I *0 Î/(I (‘I   (+ sJÌ*:( }cd*B{cdþo *:(` }dd*0{{ddoa sNÌ*(I *0 Î/(I (‘I   (+ sPÌ*:( }ed*B{edþo *(‰I *0 È/(ŠI (‹I   (+ sTÌ*:( }fd*B{fdþo *(‰I *0 È/(ŠI (‹I   (+ sXÌ*:( }gd*B{gdþo *:(` }hd*0{{hdoa s\Ì*(I *0 Î/(I (‘I   (+ s^Ì*:( }id*B{idþo *:(` }jd*0{{jdoa sbÌ*(I *0 Î/(I (‘I   (+ sdÌ*:( }kd*B{kdþo *:(` }ld*0{{ldoa shÌ*:(b }md*0|{mdoc sjÌ*(’I *0 Ñ/(“I (”I   (+ slÌ*:( }nd*B{ndþo *:(` }od*0{{odoa spÌ*:(b }pd*0|{pdoc srÌ*(’I *0 Ñ/(“I (”I   (+ stÌ*:( }qd*B{qdþo *:(` }rd*0{{rdoa sxÌ*:(b }sd*0|{sdoc szÌ*(’I *0 Ñ/(“I (”I   (+ s|Ì*:( }td*B{tdþo *(‰I *0 È/(ŠI (‹I   (+ s€Ì*:( }ud*B{udþo *(‰I *0 È/(ŠI (‹I   (+ s„Ì*:( }vd*B{vdþo *(‰I *0 È/(ŠI (‹I   (+ sˆÌ*:( }wd*B{wdþo *(‰I *0 È/(ŠI (‹I   (+ sŒÌ*:( }xd*B{xdþo *(‰I *0 È/(ŠI (‹I   (+ sÌ*:( }yd*B{ydþo *:(` }zd*0{{zdoa s”Ì*(I *0 Î/(I (‘I   (+ s–Ì*:( }{d*B{{dþo *(‰I *0 È/(ŠI (‹I   (+ sšÌ*:( }|d*B{|dþo *(‰I *0 È/(ŠI (‹I   (+ sžÌ*:( }}d*B{}dþo *(‰I *0 È/(ŠI (‹I   (+ s¢Ì*:( }~d*B{~dþo *:(` }d*0{{doa s¦Ì*(I *0 Î/(I (‘I   (+ s¨Ì*:( }€d*B{€dþo *(‰I *0 È/(ŠI (‹I   (+ s¬Ì*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ s°Ì*:( }‚d*B{‚dþo *:(` }ƒd*0{{ƒdoa s´Ì*(I *0 Î/(I (‘I   (+ s¶Ì*:( }„d*B{„dþo *(‰I *0 È/(ŠI (‹I   (+ sºÌ*:( }…d*B{…dþo *(‰I *0 È/(ŠI (‹I   (+ s¾Ì*:( }†d*B{†dþo *(‰I *0 È/(ŠI (‹I   (+ sÂÌ*:( }‡d*B{‡dþo *(‰I *0 È/(ŠI (‹I   (+ sÆÌ*:( }ˆd*B{ˆdþo *(‰I *0 È/(ŠI (‹I   (+ sÊÌ*:( }‰d*B{‰dþo *(‰I *0 È/(ŠI (‹I   (+ sÎÌ*:( }Šd*B{Šdþo *(‰I *0 È/(ŠI (‹I   (+ sÒÌ*:( }‹d*B{‹dþo *(‰I *0 È/(ŠI (‹I   (+ sÖÌ*:( }Œd*B{Œdþo *:(` }d*0{{doa sÚÌ*(I *0 Î/(I (‘I   (+ sÜÌ*:( }Žd*B{Ždþo *(‰I *0 È/(ŠI (‹I   (+ sàÌ*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ säÌ*:( }d*B{dþo *(‰I *0 È/(ŠI (‹I   (+ sèÌ*:( }‘d*B{‘dþo *:(` }’d*0{{’doa sìÌ*(I *0 Î/(I (‘I   (+ sîÌ*:( }“d*B{“dþo *(‰I *0 È/(ŠI (‹I   (+ sòÌ*:( }”d*B{”dþo *(‰I *0 È/(ŠI (‹I   (+ söÌ*:( }•d*B{•dþo *:(` }–d*0{{–doa súÌ*(I *0 Î/(I (‘I   (+ süÌ*:( }—d*B{—dþo *:(` }˜d*0{{˜doa sÍ*:(b }™d*0|{™doc sÍ*(’I *0 Ñ/(“I (”I   (+ sÍ*:( }šd*B{šdþo *:(` }›d*0{{›doa sÍ*(I *0 Î/(I (‘I   (+ s Í*:( }œd*B{œdþo *:(` }d*0{{doa sÍ*(I *0 Î/(I (‘I   (+ sÍ*:( }žd*B{ždþo *(‰I *0 È/(ŠI (‹I   (+ sÍ*:( }Ÿd*B{Ÿdþo *(‰I *0 È/(ŠI (‹I   (+ sÍ*:( } d*B{ dþo *(‰I *0 È/(ŠI (‹I   (+ sÍ*:( }¡d*B{¡dþo *:(` }¢d*0{{¢doa s Í*(I *0 Î/(I (‘I   (+ s"Í*:( }£d*B{£dþo *:(` }¤d*0{{¤doa s&Í*(I *0 Î/(I (‘I   (+ s(Í*:( }¥d*B{¥dþo *:(` }¦d*0{{¦doa s,Í*(I *0 Î/(I (‘I   (+ s.Í*:( }§d*B{§dþo *:(` }¨d*0{{¨doa s2Í*(I *0 Î/(I (‘I   (+ s4Í*:( }©d*B{©dþo *:(` }ªd*0{{ªdoa s8Í*(I *0 Î/(I (‘I   (+ s:Í*:( }«d*B{«dþo *:(` }¬d*0{{¬doa s>Í*(I *0 Î/(I (‘I   (+ s@Í*:( }­d*B{­dþo *:(` }®d*0{{®doa sDÍ*:(b }¯d*0|{¯doc sFÍ*(’I *0 Ñ/(“I (”I   (+ sHÍ*:( }°d*B{°dþo *(‰I *0 È/(ŠI (‹I   (+ sLÍ*:( }±d*B{±dþo *(‰I *0 È/(ŠI (‹I   (+ sPÍ*:( }²d*B{²dþo *:(` }³d*0{{³doa sTÍ*(I *0 Î/(I (‘I   (+ sVÍ*:( }´d*B{´dþo *:(` }µd*0{{µdoa sZÍ*(I *0 Î/(I (‘I   (+ s\Í*:( }¶d*B{¶dþo *:(` }·d*0{{·doa s`Í*(I *0 Î/(I (‘I   (+ sbÍ*:( }¸d*B{¸dþo *:(` }¹d*0{{¹doa sfÍ*:(b }ºd*0|{ºdoc shÍ*(’I *0 Ñ/(“I (”I   (+ sjÍ*:( }»d*B{»dþo *:(` }¼d*0{{¼doa snÍ*(I *0 Î/(I (‘I   (+ spÍ*:( }½d*B{½dþo *:(` }¾d*0{{¾doa stÍ*(I *0 Î/(I (‘I   (+ svÍ*:( }¿d*B{¿dþo *:(L }Àd*0{{ÀdoM szÍ*:(¤I }Ád*0À{Ádo¥I s|Í*:(ÒI }Âd*0 0{ÂdoÓI s~Í*(ÔI *0 0(ÕI (ÖI   (+ s€Í*:( }Ãd*B{Ãdþo *:(` }Äd*0{{Ädoa s„Í*(I *0 Î/(I (‘I   (+ s†Í*:( }Åd*B{Ådþo *(‰I *0 È/(ŠI (‹I   (+ sŠÍ*:( }Æd*B{Ædþo *:(` }Çd*0{{Çdoa sŽÍ*(I *0 Î/(I (‘I   (+ sÍ*:( }Èd*B{Èdþo *:(` }Éd*0{{Édoa s”Í*(I *0 Î/(I (‘I   (+ s–Í*:( }Êd*B{Êdþo *:(` }Ëd*0{{Ëdoa sšÍ*:(b }Ìd*0|{Ìdoc sœÍ*:(«E }Íd*0){Ído¬E sžÍ*(ÝI *0 0(ÞI (ßI   (!+ s Í*:( }Îd*B{Îdþo *(‰I *0 È/(ŠI (‹I   (+ s¤Í*:( }Ïd*B{Ïdþo *:(` }Ðd*0{{Ðdoa s¨Í*(I *0 Î/(I (‘I   (+ sªÍ*:( }Ñd*B{Ñdþo *(‰I *0 È/(ŠI (‹I   (+ s®Í*:( }Òd*B{Òdþo *(‰I *0 È/(ŠI (‹I   (+ s²Í*:( }Ód*B{Ódþo *(‰I *0 È/(ŠI (‹I   (+ s¶Í*:( }Ôd*B{Ôdþo *:(` }Õd*0{{Õdoa sºÍ*:(b }Öd*0|{Ödoc s¼Í*(’I *0 Ñ/(“I (”I   (+ s¾Í*:( }×d*B{×dþo *:(` }Ød*0{{Ødoa sÂÍ*(I *0 Î/(I (‘I   (+ sÄÍ*:( }Ùd*B{Ùdþo *:(` }Úd*0{{Údoa sÈÍ*(I *0 Î/(I (‘I   (+ sÊÍ*:( }Ûd*B{Ûdþo *:(` }Üd*0{{Üdoa sÎÍ*(I *0 Î/(I (‘I   (+ sÐÍ*:( }Ýd*B{Ýdþo *:(` }Þd*0{{Þdoa sÔÍ*(I *0 Î/(I (‘I   (+ sÖÍ*:( }ßd*B{ßdþo *:(` }àd*0{{àdoa sÚÍ*(I *0 Î/(I (‘I   (+ sÜÍ*:(Ó }ád*B{ádþo  *:(Ù }âd*0¸{âdoÚ sàÍ*(¡I *0 à/(¢I (£I   (+ sâÍ*:( }ãd*B{ãdþo *(‰I *0 È/(ŠI (‹I   (+ sæÍ*:( }äd*B{ädþo *:(` }åd*0{{ådoa sêÍ*:(b }æd*0|{ædoc sìÍ*:(«E }çd*0){çdo¬E sîÍ*(ÝI *0 0(ÞI (ßI   (!+ sðÍ*:( }èd*B{èdþo *:(` }éd*0{{édoa sôÍ*(I *0 Î/(I (‘I   (+ söÍ*:( }êd*B{êdþo *(‰I *0 È/(ŠI (‹I   (+ súÍ*:( }ëd*B{ëdþo *:(` }ìd*0{{ìdoa sþÍ*(I *0 Î/(I (‘I   (+ sÎ*:( }íd*B{ídþo *(‰I *0 È/(ŠI (‹I   (+ sÎ*:( }îd*B{îdþo *(‰I *0 È/(ŠI (‹I   (+ sÎ*:( }ïd*B{ïdþo *:(` }ðd*0{{ðdoa s Î*:(b }ñd*0|{ñdoc sÎ*:(«E }òd*0){òdo¬E sÎ*(ÝI *0 0(ÞI (ßI   (!+ sÎ*:( }ód*B{ódþo *(‰I *0 È/(ŠI (‹I   (+ sÎ*:( }ôd*B{ôdþo *(‰I *0 È/(ŠI (‹I   (+ sÎ*:( }õd*B{õdþo *(‰I *0 È/(ŠI (‹I   (+ sÎ*:( }öd*B{ödþo *(‰I *0 È/(ŠI (‹I   (+ s"Î*:( }÷d*B{÷dþo *(‰I *0 È/(ŠI (‹I   (+ s&Î*:( }ød*B{ødþo *(‰I *0 È/(ŠI (‹I   (+ s*Î*:( }ùd*B{ùdþo *(‰I *0 È/(ŠI (‹I   (+ s.Î*:( }úd*B{údþo *:(` }ûd*0{{ûdoa s2Î*(I *0 Î/(I (‘I   (+ s4Î*:( }üd*B{üdþo *:(` }ýd*0{{ýdoa s8Î*:(b }þd*0|{þdoc s:Î*(’I *0 Ñ/(“I (”I   (+ s<Î*:( }ÿd*B{ÿdþo *:(` }e*0{{eoa s@Î*:(b }e*0|{eoc sBÎ*(’I *0 Ñ/(“I (”I   (+ sDÎ*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ sHÎ*:( }e*B{eþo *:(` }e*0{{eoa sLÎ*(I *0 Î/(I (‘I   (+ sNÎ*:( }e*B{eþo *:(` }e*0{{eoa sRÎ*(I *0 Î/(I (‘I   (+ sTÎ*:( }e*B{eþo *:(` }e*0{{eoa sXÎ*(I *0 Î/(I (‘I   (+ sZÎ*:(Ó } e*B{ eþo  *:(Ù } e*0¸{ eoÚ s^Î*:(¬ } e*0º{ eo­ s`Î*(ÊI *0 0(ËI (ÌI   (+ sbÎ*:( } e*B{ eþo *(‰I *0 È/(ŠI (‹I   (+ sfÎ*:(Ó } e*B{ eþo  *:(Ù }e*0¸{eoÚ sjÎ*:(¬ }e*0º{eo­ slÎ*(ÊI *0 0(ËI (ÌI   (+ snÎ*:( }e*B{eþo *:(` }e*0{{eoa srÎ*(I *0 Î/(I (‘I   (+ stÎ*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ sxÎ*:( }e*B{eþo *:(` }e*0{{eoa s|Î*(I *0 Î/(I (‘I   (+ s~Î*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ s‚Î*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ s†Î*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ sŠÎ*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ sŽÎ*:(Ó }e*B{eþo  *:(Ù }e*0¸{eoÚ s’Î*:( }e*0º{eoŽ s”Î*(àI *0 0(áI (âI   ("+ s–Î*:( }e*B{eþo *(‰I *0 È/(ŠI (‹I   (+ sšÎ*:( }e*B{eþo *:(` }e*0{{eoa sžÎ*(I *0 Î/(I (‘I   (+ s Î*:(Ó }e*B{eþo  *(×I *0 0(ØI (ÙI   (+ s¤Î*:( } e*B{ eþo *(‰I *0 È/(ŠI (‹I   (+ s¨Î*:( }!e*B{!eþo *:(` }"e*0{{"eoa s¬Î*(I *0 Î/(I (‘I   (+ s®Î*:(Ó }#e*B{#eþo  *:( }$e*0¸{$eo! s²Î*(ŒI *0 Ë/(I (ŽI   (+ s´Î*:( }%e*B{%eþo *(‰I *0 È/(ŠI (‹I   (+ s¸Î*:( }&e*B{&eþo *:(` }'e*0{{'eoa s¼Î*(I *0 Î/(I (‘I   (+ s¾Î*:( }(e*B{(eþo *:(` })e*0{{)eoa sÂÎ*:(b }*e*0|{*eoc sÄÎ*(’I *0 Ñ/(“I (”I   (+ sÆÎ*:( }+e*B{+eþo *(‰I *0 È/(ŠI (‹I   (+ sÊÎ*V(1 },e}-e*Z{,e{-eþ(Ø+*r(ÝH }.e}/e}0e*0 ${0e{/e(ÞH {.eXþ(+*r(ßH }1e}2e}3e*0 {1e{2e{3eþ(.Å*²}4e}5e}6e}7e}8e(ãI *0±{7eYE + +h+[8€{4e(Ö+¥å)oäI }6e}7e{6eoï ,0{6eoåI }5e}7e{5e}8e*}5e+Ã}7e{6e(#+}6e}7e}8e*0‡e {7eYE++e{7eE + ++++}7e{6e(#+}7e}8e Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{7eE + + +++***"{8e*0 {4esÔÎ*BSJB v4.0.30319ll|;#~Ø|;d’ #Strings<Iðo#US,L#GUID<LÈV#BlobWÿ¢? ú3v=68eÙÎÔù{åI¤ 2ƒ7#0< ó35÷ç) †15 #9•ŽÙŽù掎+摎*9GæS#ŽkŽq   7  q  Kd  ƒ { Ž ý à l d=‡ŽŽMŽKºöŽæ i K? u=÷ Ž $Ž S&:& .I:& XI:&KŽLŽ ïRà WyMy c{ i}W}¥}W} S=qŽ (à æ“(¨ŽK±Ž[³W} ƒÛ KçUèŽØõŽŽ¹}W}ÉÿW}W}öW}BW}GîW}¯ R6ÊKW}qtL LW}‘MLÂMW}ÖMLNLŸPW}®PL­TLºTW}ÙTL†žŽŽ °¦ ÓÚ¹ÚÛ¹ÚHãæTã¥æ”æñèæ ¶ì a¯ ‹¯W}¨¯W}Á¯W}دW}ó¯W},° °H° °\° °x°e°Œ° ï° —ܰ i³ ØKÃKL ° ?L#L [L#L L ‡WŽÝMŽ N dN €N ™Ne°¶Ne°ÑNe° ŽO ÔOæ P 'P =Pe°VPe° ñP åQŽõQW} )W §Xà 6oŽtoŽI[,[[[,[—ž[ Fbà Wbà bŽïJc•c?Jc²gW} õg h XiŽiŽ+oŽÊjƒ =oއl޼mŽ'nŽ »n ñnŽ To io :qà ÂMyûrŽ s —sŽ¿sþsŽ ìt pu Ë2ˆˆ¯9ˆ¯DˆOˆˆ`ˆˆlˆŽeŠ °~“ ý–:& ?— š:&4šŽx›Ž Ïœ ÜŸŽbÇMy y¡à ¢ÃKM¢My k¢ ·¥= Ò¥:&½¦My %§:&ªŽf¬”æ ¬”æݬŽ­å¬JoŽcF±!´Ž  » vÀe°·¥ ° ÇÉ nÐà •é ìŽ ï:& –ï:&(e°9e°ü Ž Ž+ ŽD ŽZ Žs Ž… Ž  ޏ ŽÑ Žæ Žþ Ž Ž, Ž Že ŽâW}MMycMy~MyŠŽýí  moŽj"ÃK®&MyÄ&My—ÌLï3V KW=€eMyl'Ž1§Ž P§6yoŽ †æ )ùŽCoŽPoŽfoŽ%oŽ0oŽKÏKÚKå ¨ ól¨ó®¨óY­e»ŽtŽ$Ž 6= /$ ÚJŽ ×`  âr W} rœ   Ô Ž" Ž s = g 6 J =t ޼ Ž þ  ± = Ø =§% —% ùZ  ßp ÃK°y Ž^oŽÌy å¬WoŽbz Mz §z ˆz { ÷z 2r÷z ({ ÷z E{ ÷z U{ ÷z ]| ƒ œL¯} L~ L—~ W}Ø~ L W}k L ´=W}‚€ L¬€ W}ƒ W}à W}„ L„ W}P„ L]„ W}… W}Q… L„… LY‰ ,[Œ W}ÚŒ L–” 嬨” 嬗 Žï˜ :š W}"› Ž3› Myñ­ ¯ MyÓ¯ MyÞ¯ Myç¯ Myò¯ My° MyKÇ Myrß Ž9  Í ŽB    = Y —% ž ± ¾  d :& My~Œ e°ÀŒ e°$ L 0 L > L „ L ÿ L À‘ L =’ L ©’ —% vž å¬ ‰ž  œž 嬪ž å¬Áž å¬Þž Ž7Ÿ å¬l¡ D¡  ¬ 嬒¬ Ž >ò  Xô W} Vú  †Y#j "OˆTj ¼r æór ¹Ú8s ¹ÚMs ¹ÚÍs ¹Úãs ¹Ú"ðu Tj tx Ž 5{  t… Ž ë#L… ¬¥€ Ó¯á…ð$ ð$  ñ$* ó1 õM öf ø€ |¯ú…$ƒ,$ˆ,$,’¦º  ί !!Û¯ $!é,2!Aé1N!Mé<m {[Br ›[Bz!¢[C„!®[HŽ!Â[O– Ë[_¨!òÓa± ‡adÖ…hà!‘ajà —al…q!¡as!Õ§u;!à§xM ïëzh ü{k!(üu 7üƒ}€ AÓ………œ$Q>‡œ$X>ˆž]‰ sŠ¢ ‡Ó‹¤ ”Óµ!ŸÓ–¼ ¤–¾ ÚÇ–Á€!ÿæœÍ ü¢æ‚¥ö!ü§ö!ü¯ !\/9´!p/9À!}/9É!‹/Õ!œ/9Ý&!§/9ì&!¼/ï&!Ê/÷0 Ú/ú3…Q!î/ Q!þ/]!/`!"/b ?/j…"| Q/%|…)Ž€ d/,Ž…,œ$r4/œ$41Ÿ$‹42¡3£«4¦Æ5¨ Ù/6ª…9»$ëT=»$óT?¾ÿ@ÀAÃ!1/BÅ!E/FÊ  V/GÔ …/GÕ‚Hç$xKç$ xKè$¯xLêÃNíâOîPð #/Qó‚S$#˜W$2˜Y $F˜Z e[ƒ\¦] Ô/^!à/_"!ì/d&!û/e/! /i<! /mA  /qF‚tZ$. ÐxZ$; Ðy\J z^f {` „ /|b‚|i$“ è~i$  èkª nÆ ‚p ß /ƒs…†$í Š$õ ‹ü „ ކ ) /‰…’™ : /”™…˜¥$h œ¥m § /ž©!˜ /¥² ¦ /¶Æ!¾ /·Ê!Ë /¾Ü Ü /Âè‚Ä÷$ì DÇ÷$ú DÇø$ DÇù Èû3 ÉüK Êý m /Ëÿ! /9Ì  ¢ /Ó ³ /Ô Æ /Ú €Ù üá1  à ¶áU  < ºáW   ¶åY  Å ºç[  î ¶ë] % ´¬î_  = ¾ñc  K ´¬òe  f Âõl  ƒ Æõn  — Êöp  ­ Î÷r  ¾ Ò÷t  Ï Ö÷v   Ú÷x  )Þøz  Hâù|  gæú~  †êú€  ¥îú‚  Äîú„  ãÊú†  òÿˆ  öŠ  ÊŒ  -öŽ  ?Ê  Qú’  aþ”  {–  ›˜  ¨ š  µœ  Ë ž  ÷   %% ¢  |¨  Žª  šö¬  ·"®  Ö"°  ù²  Á   .Æ  &.È %3Ê  @2Ì  W6Î  dÐ  oÒ %|:Ô  ‘ú!Ú  ¢Ê"Ü  ¯>$Þ %ÇB%à  Ô>7æ  æF8è  òÆ;ê …ÿ<ì … <î  J<ÿ  0N<  QR<  lR< %‡V<  “JE %·ZF  É^O %ÝO  ô^W % W   ^_%  6b_'  Xf_)  lj_+ %xn_-  ’rf3  ­vf5  Èzf7  Ø~f9 %ê‚f;  rmA  rmC  ömE  /JmG  A†nI  QŠoK  cŽoM %u’pO !ˆuU %‡{^ %›š{a %¦žƒg %Ò¢‡m %þ¦•s  ªŸy  /ª¡{ %A®¡}  [ʲƒ  }²³…  Ÿ†´‡  Á¶µ‰  ặ‹ %ë¾· %ø¾¿“  &ÂÊ™  IÊÌ›  l²Í  ÊΟ  ²²Ï¡ %վУ  îÆØ©  rÙ«  ÊÚ­  -²Û¯  BÊܱ %U’ݳ  _Îæ¹  qJç»  ƒ†é½  •ªê¿ …§îÁ %¹‚îÅ  ËÒúË  ãÖûÍ  ùöûÏ   ÚüÑ  )ÞüÓ  ?ÒýÕ %Pþ×  `âÝ  væß  Œêá  ¢îã  ¸âå  Îæç  äêé  úîë  âí  'æï  >ê ñ  Uî!ó %kò"õ %B3û %B8 %´n> …ÉE  ÚFE  õFG   FI …&K …=K %SBK" %gBP( %~Bg. %Šöo4 %—öt: %¦By@ %µöF %ÄB‡L %Ùö¥R …è©X %öB©Z …Â` % BÂg …+Êm  8úÊv  GþËx  XÍz  jÏ|  uÏ~  € Ï€  ŠþЂ  –þÑ„  ¥Ô†  °Ôˆ  »ÔŠ …ËÕŒ  ßöÕ  öÖ €Ù Ö‘ €H/Þ’  UÞ–  tÞ˜  —Þš  ²Þœ €Õ/Þž €é/ÞŸ €ý/Þ¤  Þ® %´¬åµ  "æ¹  /&è»  <úë½  L*ì¿  ]}íÁ  x.îà  …2ðÅ  –øÇ %¨ýÐ  ¶ýÓ …ã  Çúã  ×Bå  ìîç  îé  Fë  *Jí  ?Âï  VNñ  …Ró  œVõ  ³Z÷  ÊZù  á¾û  õ¾ý €/ÿ  ^  &b   Lf   ^j   ƒn   šr   ¢v   ¯z   ¹Æ   Ì~  ß‚  ð†   Š   Ž!  ) Ž#  < ’%  O –' €b /) €ˆ j /  ‘ šF  ž žH  ª ž J %¶ ¢!L  Ä ¦,R  Ø ª-T  ê ®.V  ÿ ®.X   !².Z  !¶.\  &!º.^  /!¾/`  8!Â0b  A!Æ1d  J!Ê4f  V!Î4h  b!Ò5j  v!Ö>l  Œ!Ú>n  ›!Ö?p  ª!Þ?r  Ñ!âAt  ú!ºAv  "¾Bx  "ÂCz  "ÆD|  ""æG~  1"êG€  @"ÞJ‚  O"âO„  ^"ºO†  h"¾Pˆ  r"ÂQŠ  |"ÆRŒ  †"æUŽ  š"îU  ®"òX’  Â"öX”  Ö"ú]–  ê"þ]˜  ô"^š  þ"_œ  #Æ`ž  #æc   $# c¢  4#h¤  F#æh¦ %b#h¨  }#o®  ‰#q°  •#Ît²  ¡#u´  «#Îv¶  ·#v¸  Ã#"wº  Ï#&w¼  Û#"z¾  ç#&zÀ  ó#"}  ÿ#*}Ä  $*~Æ  $*~È  ,$*Ê  8$&Ì  E$&„Î  R$‡Ð  [$.ˆÒ  d$2‰Ô  m$6ŠÖ  v$Æ‹Ø  $:Ú  œ$:Ü  ¹$ÎÞ  Â$Î‘à  á$>•â  %}™ä  %}šæ  9%Bœè  W%FŸê  u%:Ÿì %%JŸî  %Ρñ %™%¡ó  §%R¡ö  º%V£ø  Ë%Æ£ú  Ü%~¤ü  í%‚¥þ %þ%¦   &Ò¦  #&Z­  a&^µ  x&b¾  &fÄ  ™&jÅ  £&nÆ  ­&rÇ  ·&vÈ  Á&ÆÉ  Ë&ÞÍ  á&ÞÒ  ÷&zÕ   'ºÚ  '¾Û  'ÂÜ  )'ÆÝ"  3'öà$  G'~å&  ['þé(  e'ê*  o'ë,  y'Æì.  ƒ' ï0  •'‚ô2  §'†ø4  ±'Šù6  »'Žú8  Å'’û:  Ï'Æü<  Ù'–>  ÷'š@  (Æ B  (ž D  <(¶ F  I(¢H  W(¦J  e(¢L  s(¢N  (ªP  (ÆR  ™(ÆT  £(®V  ¸(²X  Ê(ÆZ  Ô(Æ\  Þ(®^  õ(²`  )Æb  )Æd  ")¶f  5)Æh  ?)Æj  I)ºl  Z)Æn  d)Æp  n)¾r  …)¾t %œ)Âv  ª)Æ(|  Á)Ê/~  Ó)ê/€  à)ê/‚  è)Î/„   *Æ4†  *Æ4ˆ  *¶5Š  <*¾7Œ  [*Æ9Ž  e*¶9  x*¾:’  ‹*Æ<”  •*Ê=–  ¢*Ê?˜  ¯*Ò@š  ½*ÖAœ  Ë*ÚBž  Ù*ÖB   ç*ÞC¢  õ*ÖD¤  +âE¦  +ÖE¨  +æFª €-+/F¬  B+ÊFò  W+²Gô  j+êHö  ~+êHø  ’+êHú  §+îHü  Æ+òHþ  Ö+öH ä+öH ô+öH ,úH ,öH $,FH  R,þJ %€,J ¬,T º,X Å,Y  Û,[" ü,[$ -[& >-[( _-[* €-[,%¡-[.%À-\2 Þ-*\6 ÿ-Î_8 ..`: H.2`< t.6`> }.Ê`@ ©.²aB Õ.ÊbD /²cF -/.dH Y/2dJ …/:dL ±/>dN Ý/ÊdP  0²eR 70’fT D0:fV q0>fX ž0*fZ ´0*f\ ¿0Êf^ ì0²g` 1Bhb (1Fhd 91Æhf f1Æhh “1Êhj À1²il í1Æjn 2~kp !2‚lr ;2Æmt W2~nv s2‚ox 2>pz ¡2Jp| ¯2Np~ Ã2Rq€ à2Vv‚ ÿ2Æv„ 3Æz†€93/zˆ%C3zŠ€b3/zŒ€k3j z €3ê~’ ‘3¶”%3‡– ¶3ÞŽ˜ Ç3âš Ú3Zœ ç3¦‘ž ô3^’  4b’¢€ 4/—¤%!4f—¹ =4þ˜» O4j˜½%a4V™¿%x4n Å ƒ4r¡Ç Ž4v¢É ™4z¦Ë ±4~§Í É4‚§Ï á4†¨Ñ%î4Š¨Ó û4Ž«Õ% 5’¬×€5/­Û€)5/­Ý 45ö­á D5ö®ã€_5j ¯å t5Ʋù }5–²û ˜5š³ý%µ5ž³ÿ%Æ5ž¹%Ú5žÀ %í5žÇ%6žÎ%6žÕ%)6žÜ#%@6žã)%O6žî/%_6ž÷5%o6ž;%†6žA ˜6¢G §6¢I ¶6¦K Å6ªM Ô6®O ä6¢Q ô6¢"S 7¢%U 7¢)W $7¢,Y 47¢/[ D7¢3] T7¢8_ d7¢;a t7¢?c „7²Be ”7¢Dg ¤7¢Gi ´7²Jk Ä7¢Lm Ô7¢Oo ä7¢Sq ô7¢Vs 8¢Yu 8¢]w $8¢by 48¢e{ D8¢i} T8¢n d8¢r t8¢uƒ „8¢y… ”8¢~‡ ¤8¢‰ ´8¢„‹ Ä8¢ˆ Ô8¢‹ ä8¢‘ ô8¢’“%9ž–•%9žž› #9¶®¡ 49¢°£%E9ž³¥%T9žÕ«%e9žÞ± x9ºç· ›9¾é¹ À9Æé» É9Æé½€Ò9/é¿ ó9þéÉ :þéË 7:ÂéÍ r:þéÏ „:ÆéÑ ˜:ÊéÓ ¬:ÆéÕ À:Êé× Ô:ÎéÙ è:ÒéÛ ü:ÖéÝ ;Îéß $;þéá 8;Òéã M;Öéå b;Æéç w;Êéé%Œ;Úé뀞;j êï%¹;Vêï€Å;/ïõ Ô;Þï  ç;âð  ü;æð  <êð "<îñ 1<òñ B<ñ S<.ò d<öó u<úô%Š<þõ%”<þý#% <þ) ­< / À<1 Î< 3 ã<â5 ø<7  =9 -=; O== [=? d="A€‚=j C€•=/D… ¢=V…g$¯=0 $g$´=0 %i$»=0 &k$Í=0 'm$Ö=0 (o$á=0 )q$í=0 *sõ=+u >,w>-y@>.{X>/}r>0>1… ¤>2ƒ µ>&2 ½>*4 Æ>.5‘ Ñ>25“ Ü>}:• ç>}=— ó>6A™ ?:F› ?>K 3?BPŸ I?FV¡ _?JX£ u?NZ¥ ‰?Nd§ ¥?Bl© È?Rr« Þ?>w­ ÷?V|¯  @V}± #@Z~³ 9@^…µ P@bŠ· f@^¹ }@b”» ”@f™½  @j™¿ ·@ZœÁ Î@^¥Ã å@b«Å ü@b±Ç An»É *AbÂË AAbÊÍ XAbÒÏ nArÚÑ {AvÛÓ%ˆAzÛÕ ŸA~îÛ ¶A~ôÝ%ÍAzúß äAFå%ûAzç B~í%)Bzï%@Bz!õ WBV)û%nBz*ý …BV/%œBz0 ³BZ8  ÉB‚C  åB†H &C†H gC^H ¨CŠP éCŽX *D’X kD–` …D†c ŸD†g%¹Dzg! ÓDR}' éD>‚) Eš‡+  E^‹- )E^’/ EEF˜1 aE†š3 }Ebš5 ™ER¡7 ¯EV¦9%ÆEž¨; ÝE¢­A ôE¢²C F¦¸E (Fª¾G KF®ÃI€XFj ÄK€nF/ÄK€ƒFj 〕F/ă ¨F²Ä ¸F²ÄŸ ÊF²Ä¡€ÜF/Ä£€çF/Ĥ€üF/Ä¥€Gj Ĭ Gúѵ  G¶Ñ· ;G¶Ñ¹ VGºÑ» bG¾Ó½ nG¾×¿€zG/ÚÁ… ‚GÚÌ…ÚØ$–GÆÜØ$‘ÆÝÚGÞܳGßÞ ÌGàà…ãó$ÜGêó$çGëõ$îGíø$öGîú$Hïü Hðþ&Hñ€ÖIü ? íI I þI M J. O… (J Q… c$0J c$:J e$IJ! gSJ! hlJ" jŠJ# l!£J$ m ²J†' z ÃJê( | ÔJî) ~!åJ* € úJò2 ‰ Kö2 ‹ 5K´¬2  LKú6 “ [Kú6 • lK6 — „Kú8 ™ ’K9 › ¥KþM ´ ¶KM ¶ ÉKO ¸ ÜK O º%ïKO ¼ LV  .LW Ä >LX Æ _LY È qL"Z Ê L&[ Ì —L*\ Î ·LÆ\ Ð ÙLö] Ò ûL.] Ô M2] Ö ;M6] Ø WM:] Ú hM>] Ü%{M] Þ%”MB^ à ·MFe æ ÏMJf è çMÊf ê öMNf ì% NRg î NÆs ô .NÆt ö >NÆv ø ONÆw ú%`N´¬y ü sNÊy  ‚NVz  ™N¾}  °NZ~  ÅN^„  ÒNb† €áNü†  òN† @… õN‡ O…‡ [$O€Š [$O€Œ ^$#O€ c-O” hHO• kiO– p… ‚O— u…˜ …$’O  …$žO Ÿ ˆ$­O ¤ Ž$·O ¨ “$ÃO ¬ ˜ÓO° îO±   P² ¦%P³ «@P´ ° _Pnµ µ lPrµ · {PƵ ¹ ŠPv¶ » ™PÆ· ½ ¨Pv¸ ¿ ·Pƹ Á ÆPvº à ÕPz» Å äP~» Ç õPÆ» É Qv¼ Ë Qƽ Í %Qv¾ Ï 5QÆ¿ Ñ EQvÀ Ó UQÆÁ Õ eQv × uQÆÃ Ù …QvÄ Û… •QÅ Ý…Å ç$õN Ç ç$‚O È é£QÉ ëÂQÊ í áQ‚Ë ï ñQ†Ë ñ¥ RË ó¥ RË ô¥ RË õ¥ RË õ… %RË õ…Ë ü$1RPÍ ü$CRPÏ ÿURÑ vRÒ !—RÓ  ¢RŠÔ  °RŽÕ  ÇR’Õ  ÙR–Õ  ûRÕ …Ù ,$ S|ß ,$"S|à .$8S|á 0LSâ 2sSã 4˜Sä 6 »S¢å 8… –Gå :…æ K$ÍS é K$ÛS é L$æS ë OðSî S Tï T'Tð W @T¦ñ [ UTªñ ] gT®ñ _ ~T²ñ a ŽT¶ò c žTó e «Tº÷ p ¸T¾ø r ÅTÂù t ÐTÆú v ßTÊú x… çTú z…ú ‚$ñTìü ‚$þTìý „ Uþ †'Uÿ ˆ… CU Š… –$PU –$^U œ$qU ¡$„U ¦‘U ©®U ¯ÐU ´òU ¹ V² ¼ VÎ ¾ .VÒ À >VÖ Â NVÚ Ä ^VÞ Æ nVâ È ~VÚ Ê ŽVÞ Ì žVâ! Î ®V" Ð ¾V.# Ò… ÎV$ Ô…% à$ÕV\) à$ãV\/ ç$ðV\4 í$ýV\9 óW; ö-W< ýIW= eW>  ‡W?  ŽWæ? !šW?  §WÆA  ¯WvB  ·WêC  ÇWÆD  ×W~E  çWŽF  XîF  XòG ! +XöH # 5XúH % AXþI ' [XJ ) sXþK + “XL - ±XþM / ËXN 1 ãX O 3 ñX¦P 5 YP 7 %YQ 9 ;YR ; QYS = gYT ? uYU A ‹Y"V C ¡Y&W E ¯YŽZ G ½YÆZ I ÅY*[ K ÐY*^ M ÝY._ O æY2i Q øY*i S Z6m U Z2u W +Z*u Y =Z6v [ OZ2~ ] _Z:€ _ qZ:ƒ a {ZŠ… c ZŽˆ e ¡Zîˆ g µZƉ i ½Z>‰ k ÈZÆŒ m ÐZB o áZÆ q êZÆŽ s óZF u þZÆ w [J y [Æ { [N‘ } -[R‘  >[V“  S[Z” ƒ h[^• …%{[– ‡%‹[— ‰ ›[˜ ‹…±[™  ¸[j™ ˜%Î[š š Ø[n› œ%í[œ ž ú[r  %\ž ¢ "\vŸ ¤%4\  ¦ >\z¡ ¨…K\¡ ª R\j¡ ®%b\¢ ° j\~£ ²%€\¤ ´…Ž\¥ ¶ “\¥ ¸ ¥\‚¦ º%µ\†§ ¼%À\†¬ €Í\j ² È ß\ƺ É ï\~» Ë ÿ\‚¼ Í ]н Ï ]޾ Ñ /]’¿ Ó ?]–À Õ O]šÁ ×%_]´¬Â Ù m]úà Ý {]žÄ ß ‹]žÄ á ]¢Ä ã µ]ÊÅ å€Ì]üÅ ç Ô]ÊÅ B è]ÊÆ D ÿ]ÊÇ F ^¦È H 2^ªÉ J O^ªÉ L l^ªÉ N ‰^ªÉ P ¦^®É R Ã^²Ê T à^ÊË V ý^ÊÌ X _¦Í Z 7_ÊÍ \ N_ÊÎ ^ g_ÊÏ ` €_ÊÐ b ™_ÊÑ d ²_¦Ò f Ë_ÊÓ h ä_ÊÔ j ý_ÊÕ l `ÊÖ n /`¶× p I`¶Ø r c`ÊÙ t }`ÊÚ v “`ÊÛ x «`¶Ü z Ã`ÊÝ | Û`ÊÞ ~ ó`¦ß €  aÊá ‚ %a¦â „ ?a¦ã † Ya¦ä ˆ sa¶å Š ‹a¦æ Œ aÊç Ž ±aÊè  ½aÊé ’ Ïa²ê ” àa¶ë – óa¶ì ˜ bÊí š b¶í œ )bÊï ž @b¶ð   WbÊñ ¢ nb¶ò ¤ …bÊò ¦ œb¶ó ¨ ³b¦ô ª ÊbÊõ ¬%áb¶ö ® öbÊù ´ c¶ú ¶ c¶û ¸ -c²ü º Cc¶ý ¼ Yc²þ ¾ oc¶ÿ À c¶  •c¶ Ä ©c¶ Æ ½c¶ È Ñc¶ Ê åcº Ì ùc² Î  dÊ Ð !dÊ Ò 5dº Ô Jd² Ö _dÊ Ø tdº Ú ‰d² Ü žd¶ Þ ³d¶ à Èd¶ â Ýd¶ ä òd¶ æ e¶ è e² ê 1e² ì Fe¶ î [e¶ ð pe¶ ò …eÊ ô šeÊ ö ¯eÊ ø Äe¶ ú Ùe¶ ü îe¦ þ f¶  f¦  -f¦  Bf¦!  WfÊ"  lf¶#  f¶$  –fÊ%  «f¶&  ÂfÊ'  Ûf¶(  ôf¶)  g¶)  g¶*  6g¶+  Pg¶,  jg¶-  g¶. " šg¶/ $ ³g¶0 & Ìg¶1 ( ågÊ1 * þg¶2 , h¶3 . 0h¶4 0 Ih¶5 2 bh¶6 4 |h¶7 6 –h¶8 8 °h²9 : ÊhÊ: < äh¶; > þh¶< @ i¶= B *i¾> D ;iÊ? F Ti¦@ H oi¦A J Ši¶C L ¥iÊD N ½i¶E P ×i¾F R ñi¾G T  j¾H V %jÂI X 7jÂI Z Kj¾I \ ajÆI ^ ƒjÊI ` §jÊJ b ¸j²K d%Çj†L f%Ñj†Q l Üj²W r íjÎX t þjÒY v kÊZ x  kÖ[ z 1kÚ\ | BkÞ] ~ Skâ^ € nkæ_ ‚ Škêh „ ¤kJn †…¾ko ˆ€Ì]o ˆ€Éküu ‰ Ïku * ðkv 4 lw > 6lx H Jl{ T ^l} _ {l j l‚ v ½l… ‚ Ýl‡  m‰ ˜ 1mŒ ¤ ZmŽ ¯ tm º Žm“ Æ ¯m” Ð Õmî– Û âmÊ— Ý ùmf˜ ß  nò˜ á #nö˜ ã 9nú˜ å Mnþ™ ç en™ é }n™ ë •nš í…Ÿ   n²£  ³n¤  Æn¥  Ùn¦  ìn²§  ÿn¨  o©  %o²ª  9o«  Mo¬  ao"­  to&®  ‡o²¯  ›o°  ¯o±  Ão"²  ×o&³ ! ëo²´ #  p*µ % /p.¶ ' Qp²· ) sp*¸ + •pî¹ - £p&À / ½pÊÇ 1 àp²È 3 qÊÉ 5 $q²Ê 7 Gq2Ë 9%jqVÌ ;%œqVÎ A ²qúÓ G ÐqÔ I…Ù ^ ßqÝ ^…à n… üqâ n…ã ‚$ræ ‚$rç „$"rè †/rè ‡Lré ‰grê ‹ ƒrë Œ •rí › ±rï ¦!Ìrò ­ Üröa ˜ íröb š ürªb œ sªb ž #s b   8sÎb ¢!\sd ¤!osk ² xsât 7 †sæu 9 ”s^v ; µsöx = Úsby ? ósfy A tjy C 3töy E Itöz G atÆ{ I%‡tV| K «tnƒ Q Êtr… S ãtv… U útz… W u~… Y ,uÊ… [ >uÊ… ] Pu‚… _ bu‚… a tu†… c †u†ˆ e –uŠ‹ g ªuŽ‹ i ´u’‹ k ¾u–‹ m ÈuŠŒ o Ùuš q èužŽ s ÿu¢ u vÚ w +v¦‘ y Ev¦™ { avªš } †v®š  ­vªš  Ôv®š ƒ ûvΚ … w²› ‡%w:œ ‰ ;w´¬¦  _w¶© ” qw´¬¬ – „w® › ˜wö®  ¦wþ¯ Ÿ Åwº¯ ¡ Ýw¾° £ ÷w± ¥ x± § /xö² © Hxö³ « axÆ´ ­ {xÊ´ ¯%†x:· ± ™xÎÈ · ³xÒÈ ¹%Àx:Ë » ÕxÖÜ Á ãxöÝ Ã îxöÞ Å ûxöß Ç y*à É yÚá Ë 2yÞâ Í byâã Ï }yæä Ñ ˜y*ä Ó ³yÚå Õ ÎyÞæ × éyæç Ù zÚç Û  zÞè Ý  ( ‹ 2~Æ(  C~B )  T~F * ‘ e~J + “ v~N , • ‡~¶- —%Ÿ~. ™ °~R . œ Ø~V 1 ž%ñ~2   . 3 ¤  Z 5 ¦ :^ 5 ¨ gb 6 ª%tV6 ¬ ‘Æ; ² ©f < ´ Ãö< ¶%Ôj = ¸ ãn J ¾ ôr J À €v J  )€¶J Ä K€.K Æ o€.L È%“€M Ê ·€2N Ì Û€6N Î ÿ€z P Ð #~ R Ò G‚ S Ô f† S Ö vŠ S Ø%‚Ž S Ú Œ’ Y à ™– Y â ³š Y ä ¼f Z æ Éf Z è Øž Z ê ü¢ e ì%‚¦ f î $‚ª m ô .‚Òm ö D‚ön ø Q‚. o ú \‚2 q ü g‚6 r þ r‚š r  }‚® s  ‰‚² s  ˜‚¶ u  ¥‚f |  ´‚f |  ¶|  Ý‚º ‡  õ‚Ò’  ƒ¾ “  7ƒ² ”  aƒ¾ –  ‹ƒ¾ ˜  µƒÂ ˜  ្ ˜   „ž ˜  3„ž ›  `„Šž " „Šž $ ¾„Ê Ÿ & é„Î ¢ ( …Ò ¢ *%$…Ö ¤ , 2…Ú ° 2 B…Ú´ 4 l…Þ µ 6 ”…â µ 8 ¾…æ µ : Ë…ê µ < à…î · > ð…ò º @  †Ê¼ B $†ö ¿ D >†ú Å F \†þ Å H z† Å J £† Ë L ʆ Ñ N ó† × P ‡ Ý R )‡ Þ T L‡ Þ V c‡ Þ X {‡ Þ Z ž‡ ß \!µ‡á ^ Á‡è h…ì z ͇Âï z ߇öð | þ‡& ò ~ ˆ* ó € &ˆö ‚ >ˆ2 ú !Nˆú ‘ Vˆ.  aˆ2 Ÿ lˆ6 ¡ wˆ6 £ šˆ: ¥ ½ˆ: § àˆ> © ‰: +« &‰: 9­ I‰B H¯ m‰: R± ‘‰: _³ ´‰: mµ ׉F z· ú‰J ‚¹ ŠF ƒ» ?Šú‹½ OŠN Œ¿ _ŠR ŒÁ |ŠV ‘à «ŠF ‘Å ØŠZ ™Ç ûŠšÉ…Ù… ‹ŸÙ… ø$‹´®ø$‹´¯ú$+‹´°ü$ûŠ´±þ$5‹´²$C‹´³$W‹´´$b‹´µ$l‹´¶$y‹´· $Š‹´¸ $¡‹´¹$¬‹´º$·‹´»Å‹½à‹¾û‹¿ŒÀ0ŒÁMŒÂpŒÃ!ŠŒÄ#£ŒÅ%¿ŒÆ'ߌÇ)È+É-9Ê/ VË2… eÐ;…ÐB$y0ÒB$‡0ÔE–ÕG³ÖJ ÑÆ×L ì~ØN ŽÆÙP  Ž~ÚR ;ŽÆÛT VŽ~ÜV qŽÆÝX ŒŽ~ÞZ §ŽÆß\ ÂŽ~à^ ÝŽÆá` ùŽ~âb Æãd 1~äf MÆåh i~æj …Êçl –²èn §f ép ¶j êr Îêt Ün ëv îr ëx v ëz z ì| 4Êí~ N²î€ fj ï‚ ƒj ï„ ¢~ ð† À‚ ðˆ ÍÊðŠ ÜÊñŒ ëÊóŽ úÊô… ‘ö’… !‘öš…ö¡$)5Øø¡$2‘Øû¥C‘¬]‘° }‘· †‘ʺ ¦‘ ¼ ¾‘ ¾ á‘ À%ø‘´¬   ’ú Æ ’† È 1’Š Ê B’Ž Ì%R’´¬Î e’úÒ u’ Ô ‡’’ Ö ˜’– Ø€ÉkÚ€ª’æ'Û!·’9'܀ǒj .Ü%Ò’/Ý Þ’Æ/ß õ’v0á  “Æ1ã “~2å (“Æ3ç 8“~4é€H“ü5ë O“š 6  c“ž 6  x“¢ 6  Œ“¦ 7  –“ª 7  °“® 7  Í“² 7!  Õ“¶ 7#  ò“7%  ”º 8-  ”¾ 8/  ”¾ 81  *”¾ :3  9”¶<5 !J”=7  b”>> …AN !p”CN !~”P\  ƒ”Xf …[v !š”]v  ª”Þ b„  ”Jb†  É”Jbˆ  Ò”â bŠ  ï”bŒ  û”æ d”  •d– …g¦  •i¦ …l¶  •ú n¶  %•ú r¸  5•þ vº  ?• v¼  S• {¾  c•FÀ  ~•ú   ‹•ú …Ä  •ú ‹Æ  ­•FÈ !Ì•‘Ê  Û•ŸÙ …¢í $敪í $ò•³÷ $ µú $–»!$–¿!$ –À!– !*–Ã!H–Ä!^–Å!q–Æ$!„–Ç&!… ™–È)!…É1!$­–@Ë1!$¼–@Ë2!È–Ì4!æ–Í5!… —Î7!…Î>!$—XÐ>!$<—XÑ@!^—ÒB!—ÓD!!À—ÔF!… ΗÖN!…ÖU!$Ý—tØU!$ï—tÙW!˜Þ]!!˜ß_! A˜àe!!F˜ás! P˜ ë~! m˜ î€! ˆ˜ ï‚! ‘˜ï„! ±˜.ð†! ј" ñˆ! ñ˜& òŠ! ™* óŒ! /™ õŽ! @™ õ! S™Fõ’! h™ ÷”! {™. ÷–! †™2 û˜! º™6 š! ì™: œ! õ™2 ž! š6  ! 9š> ¢! [šB ¤! šF ¦! —šJ ¨! ´šN ª! КR ¬! îšV ®! üšZ !°! 0›^ $²! E›b $´!%\›f $¶! s›*¼!%{›-Ë! ƒ›v -Î! š›/Ð! ©›5Ù!%¹›7ß!%Ç›7â!%Õ›’7å! â›z ?ë! œ?í! œ~ Fý!%œHÿ! -œ† H" \œŠ H"%‰œŽ J" ™œ’ Q " ºœ– Q"%Ýœš Q" [" Æk0" ~l2" $Æm4" /ž n6" :¢ o8" E¦ p:" Uª q<" e® r>" rs@"…x["$yt["$†t‚]"$‰tƒ_"$t…b"$©t†d"·ˆg"Ó‰i"åŠk"ž‹n"#žŒp" @ž¶ s" Ožº Žu" dž¾ Žw" {žÂ y" ’žÆ {" £ž¦ }" ¯žÊ " »žÎ ‘" ÇžÒ ’ƒ" Óž® “…" ážÖ —‡" ŸÖ —‰" %ŸÖ —‹" DŸÚ —" QŸÞ —" `Ÿâ ™‘" oŸæ ™“" ~Ÿê ›•" ŒŸî ž—" ¦Ÿò ¢™"%¾Ÿö £›" Пú ¨¡" ÞŸþ «£" òŸþ «¥"  ú «§"   ®©" .  µ«" E  º­" V  º¯" i  º±" |  º³"   ºµ" ¢  º·" µ  º¹" È  º»" Û  º½" î  º¿" ¡ ºÁ" ¡ ºÃ" )¡ ºÅ" =¡ ºÇ" Q¡ ºÉ" e¡ ºË" y¡ ºÍ" ¡ ºÏ" ¡¡ ºÑ" µ¡ ºÓ" É¡ ºÕ" Ý¡ º×" ñ¡ ºÙ" ¢ »Û" ¢ ¼Ý" @¢ê Àß" X¢ Ãá" r¢" Éã" Œ¢& Òå" ˜¢* Óç" ¥¢. Óé" »¢þ Óë" Ò¢FÓí" ã¢2 Õï" ô¢2 Õñ"  £6 Õó" £: Õõ" 6£> ×÷" H£ú Ùù" Z£š Ýû" n£B Þý" ‚£" ßÿ" £F ö# ž£J ú# ¬£" ý# º£ # Õ£N  # ë£R  # ¤V  # ¤N # +¤Z # A¤" # R¤" (# e¤ú 2# s¤ú 6# „¤^ :# ¤b ;# š¤f <# «¤j ?!# ¾¤n ?## ̤ú A%# Û¤r E'# ì¤2 H)# ÿ¤ú H+# ¥" L-# '¥v Q/# ?¥ú Q1# Y¥z W3# p¥z W5# ”¥z W7# ¶¥~ W9# Ä¥~ Z;# Ô¥‚ ^=# á¥þ _?# ø¥† _A#  ¦Š hC#%¦Ž hE#%B¦Ž wK# U¦’ ‹Q# a¦ú ‹S# s¦– U# ‡¦š W# ™¦ž Y# ¨¦î [# ¼¦¢ —]# Ò¦þ ™_# ꦦ ™a# þ¦þ ›c# §ª ›e#  §›g# 1§® Ÿi# D§² £k# Y§¶ £m# r§² ¦o# ‚§º ¦q# ˜§¾ ¨s# ¦§² ¨u# ¸§Š ¨w# ϧ¶¨y# ݧ ª{# ù§ ®}# ¨Æ °# 0¨Ê °# @¨Î °ƒ# M¨® °…# W¨Ò ±‡# a¨® ±‰# i¨Ò ²‹# s¨Ö ²# Š¨Ö ²# £¨Î ²‘# °¨Ú ²“# 欅 ¹•# ë¨Þ »—# ö¨¶»™# © Û# D©¶Í# k©â ÒŸ# ’©æ Ù¡# ¥©ê Ù£# »©î Ú¥# Ï©ò ß§# å©î à©# û©Ö ä«#  ªÖ ä­# ªFä¯# *ªFä±# ;ªFä³# MªFæµ# aªFç·# qªFé¹# }ªFë»# ŠªFí½# œªFï¿# «ªFñÁ# ºªFòÃ# ɪFôÅ# تFõÇ# çªF÷É# öªö øË#  «ú øÍ# $«þ øÏ# <« øÑ# K«ŽúÓ# r«ŽúÕ# ›«Žû×# Ä« üÙ# í«FþÛ# þ«FÝ# ¬Fß# $¬Fá# 2¬Fã# @¬Få# N¬Š ç# a¬F é# z¬F ë# ˆ¬F í# –¬Fï# ¤¬Fñ# ²¬Fó# À¬Fõ# Û¬F÷# ö¬Fù#%­‚û# 1­F$ M­F!$ [­ #$ e­ #$ s­ # $ „­ & $ ™­ * $  ­ ,$ µ­ /$ Ï­" 3$ ë­& 4$ þ­²9$ ®* :$ )®. ;$ ;®2 ?$ H®6 B$ T®: E!$%b®‚H#$ ˆ®> M)$%¤®B M+$ ¾® ^1$ Ó®F d3$ è®" g5$ û®J n7$ ¯þs9$  ¯N x;$ 4¯î }=$ D¯† ?$ V¯R A$ h¯V …C$ z¯V ˆE$ Œ¯† G$ À¯R I$%ò¯Ž ‘K$%°‚–Q$ (° žW$ 7°ú žY$ F°Z ¢[$ V°^ ¥]$%h°b ¥_$ y°f ·e$ ‘°F¸g$ £°Fºi$ µ°F¼k$%ϰ‚¾m$ í°FÆs$ ±FÈu$%±‚Éw$ $±þ Ô}$%7±j Ô$ S±Fã…$%f±n å‡$ y±Fë$ Œ±Fí$ Ÿ±Fï‘$ ²±Fð“$ űFò•$ رr ó—$%ë±v ô™$%ü±z Ÿ$ ²~ #¥$ +²‚ #§$ =²Ž#©$%O²† $«$ _²FN±$ i²þ P³$ u²Š Pµ$ ‹²Š R·$ £² S¹$ µ²ª W»$%Ç²Ž W½$ Ö²ú lÃ$ è²Z pÅ$!ô²sÇ$ ³ wÌ$  ³’ wÎ$!<³xÐ$ M³– |Õ$ f³š |×$ u³|Ù$%гƒà$ ˜³¢ ƒã$…­³…å$€H“…å$€°³ü“æ$ ¹³¦ “ý$ ʳª ”ÿ$!ݳ”% ø³® ˜% ´® ž% ´® ¡ % ´® ¥ % (´® «% 4´² ®% @´¶ ®% L´º ®% T´¾ ®% ]´Â ®% k´Æ ®% €´Ê ®% Œ´n ¯% ™´n ° % ¦´® ±"% ²´š ¹$% È´® º&% Õ´® ¿(% â´® Ã*% ï´® Æ,% ü´* Ì.%%µÎ Ì0% µÒ ×6%€°³ß8%€#µüß8%… 'µßM%…ß\%$.µÞ á\%$7µÞ â^%@µã`%Xµäb% pµ}åd% }µâ åf% ‹µæ æh% «µæj% ̵ê èp% Úµ² ér% êµî ét%… úµév%…é~%$¶˜#ë~%$¶˜#ì€%¶í‚%0¶î„% G¶ò ï†%!Y¶ïˆ%%j¶ú ò–%%~¶ú øœ% ¶þ þ¢% Ÿ¶þ¤%!¯¶þ¦% ¿¶«% ȶµ% Ó¶² ·% ç¶¹% û¶ »%  ·½% ·¿% #·Á% .·Ã% <·Å% J·² Ç% \· É% e· Ë% w· Í% Š· Ï% ›·Ñ% ©·Ó% ¼·"Õ% Í·² ×% Ô·² Ù% Ý·Û% æ·&Ý% ô·*ß% ÿ·á% ¸.ã%…/¸ å%!E¸ & T¸)&…,&!`¸.& m¸:1"& |¸>2$& …¸2&& ‘¸B2(&  ¸F3*& ­¸² 5,& ·¸ 5.& ɸJ50& Ù¸² 72& 㸲 74& ï¸ 76& þ¸:78&  ¹:8:& ¹J9<& 4¹Ö <>& G¹Ö =@& Z¹J>B& w¹² ?D& …¹² ?F& ¹?H& ›¹² ?J& §¹ ?L& ²¹B?N& ùN@P& Ò¹R@R& ã¹VAT& ô¹VBV& ºZCX& º^DZ& 'ºê E\& 8ºbH^& Iºê I`& ZºbLb& kºê Md& }ºbPf& ºfQh& ¡ºê Rj& ³ºbUl& źRVn& ׺RWp& éºNXr& þºN`t& »jev& ,»:fx& 3»ê gz& =»bj|& G»Nk~& ^»:p€& g»ê q‚& q»bt„& {»:u†& …»Nvˆ& œ»n{Š& ±»R}Œ& È»r~Ž& å»v& þ»j€’& ¼z”& )¼~‚–&…B¼ƒ˜&![¼ƒ¦& a¼†ˆ±& o¼Šˆ³& ‚¼ŽŠµ& “¼’‹·& ¦¼Ö ‹¹& µ¼Œ»& ü–½& ˼–Ž¿& Ú¼² Á& á¼Ã& ü¼šÅ& ½ž‘Ç& $½¢‘É& 4½¦“Ë& ?½ª•Í&…V½–Ï& s½®–Ó& ‹½² –Õ&  ½–×& ³½² —Ù& ̽²—Û& Ù½¶™Ý& è½¶šß& ÷½º›á& ¾›ã&…¾œå&  ¾Êœæ& +¾²è&€#µžê&€6¾ü£ë&… >¾£'…¤$'$M¾°%¦$'$X¾°%¦%'`¾§''z¾¨(' ‘¾Æ©*' ¦¾Ê©,' °¾Î©.' ľÒ©0' ؾÖª2' æ¾Ú¬4' û¾Þ¬6' ¿Î¬8'… ¿¬:'…­B'$%¿è%¯B'$.¿è%¯C'6¿±F'N¿²G'!e¿³J' o¿â¶N' x¿æ¶P' ¿ê¸R' ˜¿ÆºT' ©¿îºV' ³¿*ºX' ¼¿òºZ' Ë¿ö»\' â¿ú»^' ù¿þ»`' À½b' 'À½d' 2À ½f' DÀ½h' YÀÒ¿j' aÀÀl' kÀÁn' ÀÁp'!—ÀÃr'!œÀÆv'  ÀÉz' µÀ:Ì|' ÀÀ Ì~' ÐÀ"Ì€' àÀ&Ì‚' éÀ*Ì„' õÀ:̆' ÁJ͈' Áª Ί'…ÁÏŒ' 3Á.Ïš' JÁÏœ'!SÁÑ¢' [Á:×±' nÁ>س' ƒÁBص' “ÁBÙ·' ¡ÁFܹ' ¸ÁJÝ»' ÌÁNݽ' áÁRÝ¿' òÁVÝÁ' ÂZÝÃ'€6¾ÝÅ'€ÂüáÆ' Âá§( *Ââ´(…äÊ($8¼&íÊ($B¼&ïÍ($K¼&ñÐ($V¼&òÒ($`¼&ôÕ($o¼&öØ($z¼&øÛ($¼&ýá(œÂÿä(µÂç(ÍÂê(çÂì(Ãï(Ãò(8Ãõ(ZÃû(!xÃþ( €Ã ) ‰Ãf )%–Ãj  ) £Ãn)!°Ã) »Ãv) ÄÃz) ÑÃ~) åÂ) õÆ!)!Ä#) Ä’1)!Ä3)!~”+W)!2Ä4a) MÄž;j) bÄ¢;l) „Ħ;n)%¨Äª;p) ½Ä®Cv) ÔIJCx) ëĶCz)  źD|) -Åþ E~) 7žE€) AÅÂE‚) [ÅÆE„) wÅÊE†) ÅÊEˆ) ¦ÅÎEŠ) ¸ÅÎEŒ) ÌÅÒEŽ) ïÅÒF) ÆG’) 9ÆÖH”) ^ÆÚI–) ƒÆÞJ˜) ›Æþ Kš) ³ÆâMœ) ËÆæNž) ãÆêP ) üƦW¢) ÇîX¤) 0Çî_¦) IǦ_¨) bÇî_ª) Ç_¬) ŽÇ_®) ¦Çþ `°) ¾Çþ a²) ÖÇb´) îÇþ c¶) Èd¸)  Èþ eº) 9Èîf¼) RÈêh¾) kÈêjÀ) ÈîlÂ) ™ÈòoÄ) ½È qÆ) ÒÈÖ rÈ) êÈj sÊ) ûÈ sÌ) ÉösÎ) %É:tÐ) DÉúuÒ) YÉúwÔ) pÉê wÖ) Éþ~Ø) °É~Ú) ºÉÜ) ÌÉê Þ) ÙÉ à) èÉ‚â) ÷Ƀä)  ʃæ)  ʆè) ,ʆê) HÊ"‰ì) WÊ&‰î) sÊæ ‰ð) }Ê*‰ò) ‡Ê.‰ô) ’Ê2‰ö) ¦ÊŠø) ¾Ê–ú) ØÊ2ü) áÊžþ) ûÊê ¤* $Ëê ¤* OËB ¤* ZËB ¥* gËB ¦* tËš § * ŽËF§ * ¢Ëê ©* ¯Ë6«* ½Ë:«* ÉË>«* ×Ë«* ãË«* ïËB«* û˲«* Ì*¬* '̲­ * >Ì*®"* U̲¯$* l̰&* ƒÌ±(* šÌ²²** ±Ì³,* ÈÌ´.* ß̲µ0* ÷Ì*¶2* Ͳ·4* 'Í*¸6* ?ÍF¹8* nÍJ»:* “ÍJ½<* ¼ÍN¿>* ÝÍRÂ@* îÍÆB* Î2ÈD* +ÎVÉF* ?ÎVËH* UÎZÍJ* qΚ ÐL* |Î^ÒN* ’Î2ÔP* žÎbÕR* ¨ÎfØT* µÎØV* ¾ÎþÙX* ÏÎjÚZ* áÎÖ Ü\* óÎnÝ^* Ïrà`* Ïvàb* 8Ïzãd* TÏ~äf* nÏ‚çh* †Ï†èj* ›Ï†èl* ²Ï†èn* ÉÏŠèp* ÝÏŽër* ïÏìt* Ð’ìv* Жìx* &Кìz* 8Ю ì|* LОì~*€Âì€*€bÐüô* nÐFôu, ‰ÐFöw, ¦Ðøy, ÂÐú„, ÓÐý‹, àГ, êМ, Ñ £, !Ñ «, 8ѵ, FѼ, SÑÄ, kÑÌ, †ÑÔ, ŸÑ!Ü, ¯Ñ$ã, ½Ñ&î, ÕÑ)õ, æÑ-ý, Ò.- Ò/ - %Ò4- 5Ò7- CÒ:#- OÒ=*- fÒA2- ƒÒE:- ŸÒIB- »ÒLI- ÐÒOP- âÒPZ- öÒQd- ÓUl-  ÓWw- DÓX- kÓY‹- ‚ÓZ•- §Ó[Ÿ- ÇÓ\©- çÓ]³- Ô^½- 'Ô_Ç- EÔeÑ- iÔš gÜ-… vÔhÞ-…iæ-$ƒÔ *kæ-$‘Ô *mé-¡Ômê-¾Ôní-!ÝÔoî- æÔsó-!úÔwø- Õ¢. Õ® ‚. 3Õ¦‚ . GÕªƒ . ]Õ®ƒ . uÕ²„. Õ¦„. §Õ¶…. ¾Õ¶…. ÖÕº…. àÕº†. ëÕ¾‡. öÕˆ. Öºˆ.  Ö¾‰!. ÖŠ#. "ÖºŠ%. -Öº‹'. 8ÖºŒ). NÖÆ‘+. YÖº‘-. dÖº–/. …ÖÆ›1. ‘ÖÆœ3. ŸÖº5. ²ÖÆ¡7. ÀÖÆ¡9. ÎÖº¡;. ÙÖº¥=. äÖº§?. ïÖ¾¬A.  ×Ê­C. '׺­E.!~”¯G. =×¶¿[. X×þ¿]. i×ο_. w×Ò¿a. ×Ö¿c. §×Ú¿e. Æ×Þ¿g. Ý×Þ¿i.… ô׿k.…Àz.$Øì*Ãz.$Øì*Ã{.$$Øì*Å~.EØÈ‚._ØÉƒ.yØÊ†. ©ØâËŠ. ¸ØæÌŒ. ÉØâÌŽ. ÚØêÍ. óØâÏ’. ÙâД. Ù¶Õ–. 7ÙîÚ˜. GÙÝš. ZÙÂß . iÙòà¢. „Ùâ¤. ›Ùš å«. ®Ùöæ­. ½ÙÆç¯. ÐÙúè±. áÙþé³. Úéµ.…íÇ. ÚðÇ. ,ÚóÎ. =ÚõÔ.…üõ. FÚõ. WÚ / hÚ/ rÚ$'/ ƒÚ%,/ –Úþ3@/ ¢Ú3B/ ¹Ú4D/ ÎÚ5F/ èÚF6H/ øÚF8J/ Û:L/ ÛCN/ :Ûš FP/ `ÛGR/ ÛJT/ §Û"KY/ ÁÛ&K[/ òÛ*M]/ %Ü*M_/ JÜþ Ma/ mÜ*Nc/ ŠÜþ Ne/ §Ü*Og/ ºÜ.Oi/ ÒÜ2Ok/ âÜ6Pm/ òÜ:Po/%ÝPq/ Ý>Qu/ 0ÝBSw/ NÝFSy/ YÝ&S{/ nÝ T}/ …Ý‚ T/ žÝJU/ ¬ÝNYƒ/ ÄÝRY…/ ÚÝVY‡/ åÝZZ‰/ òÝÖ[‹/ Þ^]/ Þbe/ /Þúk‘/ OÞfn“/ mÞjo•/ Þnp—/ ³Þrs™/ ×Þvt›/ ýÞu/ ßzv¢/ /ßv¤/…y´/ Qß{´/ fß~»/ ƒß‚Ã/ •ߎÓ/…‘ã/ ¦ß¶“ã/ Ôߎšå/ ßß’šç/ ìߎé/ ùß* ë/ àF£í/ à ¥ï/  à¥ñ/ /àš ¨ü/ Fà–©þ/ ^àš ª0 ~àš«0  àš¬0 Âà‚ ­0 Üà*°0 þàž° 0  ᢱ 0 7á>´0 Bᦵ0 lá>¶0 ”᪸0 §á®¸0 ¼á²¸0 ßáî¸0 úáî»0 â¶½0 #⺽ 0 6â¾½"0 K⪽$0 \â½&0 mâ½(0 ~â½*0…Ã@0!ŸâÈ@0 ÈâÎÊC0 ÕâÒÊE0 ïâÖÊG0 øâÚÊI0  ãÞÔK0 ãâÞM0 .ãâéO0 ?ãæôQ0 PãêõS0 aãâöU0 rãâW0 ƒãæ Y0 ”ãê [0 ¥ãÚ]0 ·ãî_0 Ðãò"a0 éãö-c0 äú8e0 +äÖ@g0 9äþ@i0 Bä@k0 gäAm0 Œä Do0… ±äFq0…G|0$½ä4-K|0$Ìä4-N€0$×ä4-Q„0$èä4-S‡0óäUŠ0åVŽ0+åW’0KåX•0 eåY˜0…\¨0 på^¨0…bº0 Œåeº0…hÊ0 åjÊ0…mÚ0 ±åoÚ0 Êåtã0 Øåvê0 ñåzò0 æû0 æƒ1 $æ‹1 2æ“1 Kæ—#1!`æ¥<1!|æ§?1!žæªC1!Áæ­H1 ìæ.¯K1 ýæ2¯M1 !ç2¯O1 :ç2¯Q1 Sç2¯S1 lç2¯U1 …ç2¯W1 žç6¯Y1 ¶ç ²[1 Áç ²]1 Ïç&²_1 Þçþµa1%öç:µc1%è>ºi1 $è ¿o1 =èB¿q1 fèFÁs1 uèJÂu1 ‚è Ãw1 ‘èNÃy1  è*Ä{1 ©èžÄ}1%´èRÅ1%ÍèRÚ…1 ÞèBì‹1 øèÆî1 éFî1 %éFð‘1 7éFò“1 KéFô•1 YéFö—1 géV÷™1 yéþ ù›1 ŽéZù1 ¥é^ùŸ1 ²ébþ¡1 Éé^£1 âéf ¥1 üéj§1 êj©1 ,ên«1 Dên­1 Pêr¯1 aêr±1 pêv³1 êrµ1 ’êr·1 £êv¹1 Ðêz»1 ûê~½1 (ëv¿1 Uë‚Á1 ‚ërÃ1 ŽëvÅ1 œë†Ç1 ÏëzÉ1 ìŠË1 5ìŽÍ1 fìZ !Ï1 wì&!Ñ1 †ìŽ!Ó1 ˜ì’!Õ1 ©ì’$×1 Âì–&Ù1 Ôìš*Û1 êìž+Ý1 ÿìž,ß1% í¢.á1 íž4ç1 $íž5é1 1íž8ë1 >íž<í1 Kí¦?ï1 XížCñ1 eíªFó1 rí®Gõ1 €ížH÷1 íÆJù1 ›í²Jû1 ¶í¶Jý1 Ñí²Kÿ1 ìíºK2 ùížL2 î®W2 îžX2 #îž^ 2 1îž` 2 ?îžb 2 Mî®d2 [îže2 iîªh2 wî®i2 ‚î¾j2 îžl2 žîÂq2 ¨îžr2 ¶îÆs2 Äî®~!2 Òîž#2 à%2 î'2 ü)2  ïʈ+2 ïΖ-2 (ï¶Ÿ/2 kï® £12 wï® £32 ”ïÒ£52 ¡ïš ¥72 ­ïÖ¥92 Âïn ©;2 Ù磌=2 ðïÚ«?2 ðª«A2 ðÞ«C2 5ðâ«E2 Dðâ«G2 Uðæ«I2 lðæ«K2 ƒðê «M2 šðê «O2 ±ðê®Q2 Éðî¯S2 áðò¯U2 ôðö¯W2  ñö³Y2 $ñö·[2 <ñú»]2 TñþÀ_2 hñÄa2 €ñÄc2 ˜ñš Æe2 ¦ñš Çg2 ´ñ Èi2 ÌñÌk2 äñÎm2 üñÐo2 òÕq2 ,òØs2 Dòš Úu2 Rò"Úw2 ^ò&Ûy2 uò*Ü{2 ŽòúÝ}2 §ò.â2 µòâæ2 Ãò2æƒ2 Óò6æ…2 æòæç‡2 ôòª ç‰2 óþ ç‹2%ó:è2 ,ó>ù“2 HóBû•2 `óFü—2 qóþ ™2 „óþ ›2 —óþ 2 £óBŸ2 ¿óJ¡2 ÛóN£2 äóR¥2 ïóN§2 øóV©2 ôZ«2 ô^­2 +ôb ¯2 7ôf ±2 Sôj ³2 gô* µ2 vôž ·2 ‡ôn ¹2 ™ôr »2 ©ôv½2 ¹ôz¿2%Çô~Á2 éô‚$Ç2 þô†$É2 õŠ$Ë2 6õŽ&Í2 Eõþ&Ï2 Uõ’&Ñ2 cõ–&Ó2 …õš'Õ2 ¥õž(×2 ¶õ¢,Ù2 àõB/Û2 ôõ¦1Ý2 öª9ß2 ö®<á2 6ö²>ã2 Fö¶@å2 XöæBç2 föºBé2 rö¾Dë2 …öÂDí2 ™öÆFï2%­öÊIñ2 ÁöÎ\÷2 ÓöÂ^ù2%äöÒ_û2 ðöÖg3 ÷Úg3 ÷ê g3 (÷Úg3 =÷ê l 3 R÷Úo 3 g÷ê o 3 |÷²o3 —÷Þo3 §÷âo3 ¹÷æo3 Ë÷Þo3 â÷âo3 û÷æo3 øêo3 &øîo3 8øòp!3 Jøöp#3 føîr%3 „øúu'3 °øþu)3 Þøúu+3  ùþu-3 >ùju/3 ^ùjw13 ùjy33 ¥ùö{53 ±ù73 ½ùº‚93 ÉùF†;3 õù¶ˆ=3  úö‹?3 ú‹A3 'úöC3 3úöE3 Oúö”G3 [ú ”I3 tú”K3 ’ú”M3 ªú”O3 Ãú•Q3 Üú–S3 õú˜U3 û˜W3 !û˜Y3 <û›[3 Xûž]3 wûö¡_3 ƒû"¤a3 •û"¯c3 ¤û"·e3 ´ûö·g3 Àû&ºi3 Íû*¿k3 âû"Àm3 øû"Ào3 ü"Àq3 ü"Às3 .ü"Äu3 >ürËw3 NürÎy3 ^üÑ{3 lü"Ô}3 |üØ3 Œü"Û3 œüòâƒ3 ©üòð…3 ¸üþ‡3 Èü"‰3 Øü" ‹3 èü"3 ÿü"3  ý‘3 ý"“3 2ýê•3 Oýî—3 lý.™3 ‰ý2›3 œýš 3 ªýš Ÿ3 ¸ý6¡3 Èý6!£3 Úý:"¥3 ìý6#§3 þýæ'©3  þ>'«3 þB*­3 (þF.¯3 7þ .±3 Eþ:.³3 Wþ¦/µ3 eþJ3·3 wþJ3¹3 –þæ3»3 ¤þJ3½3 ÅþJ3¿3 ×þN3Á3 æþR3Ã3 ùþú4Å3 ÿV<Ç3 ÿZ<É3 .ÿB <Ë3 =ÿ^=Í3%Nÿb=Ï3 gÿîBÕ3 ‚ÿfB×3 žÿ^EÙ3 °ÿjEÛ3 ËÿnEÝ3 éÿrFß3 vFá3 "zGã3 >rGå3 Y~Gç3 wîIé3 «‚Lë3 Ö†Lí3 ŠMï3 )ŽQñ3 D’Ró3 _–Sõ3 šU÷3 š–Uù3 ºšWû3 ÕžWý3%ê¢Wÿ3  ¦h4 ,ªh4 D®i 4 _²j 4 {¶j 4 —ºj4 ³¾k4 ÑÂk4 ýžk4 Æk4 'Ês4 <ft4 Pfv4 fÎv4 Òv!4 ™Öv#4 ²Òv%4 ÉÚv'4 åê w)4 Þz+4 â{-4 9æ|/4 Uê |14 iê |34 …ê54 œî74 ¦ê ‚94 ³ê †;4 Àòˆ=4 ÜöŒ?4 ñúA4  þC4 )E4 5‘G4 QB ”I4 b:•K4 n –M4 ›O4 ‹Q4 ŸS4 ´¡U4 Ò¢W4 ßî¢Y4 íÖ¤[4 .§]4 B«_4 $F¯a4 4"±c4 D&²e4 V*³g4 hF´i4 F¶k4 œF¸m4 ·Fºo4 ÒB¼q4 캾s4 ú.Áu4 .Ãw4  úÃy4 'FÉ{4 ;&Ë}4 ZFÍ4 {&Í4 œ&σ4 ½2Ï…4 Î6Ô‡4 áFÔ‰4 ôæÖ‹4 :Ö4 >×4 +BÛ‘4 GFÛ“4 TFÛ•4 {FÝ—4 ¢Fß™4 ÉJá›4 îFä4  NäŸ4  Rç¡4 & Vè£4 9 .é¥4 M 6í§4 _ :ð©4 t *ð«4 ˆ }ð­4 ™ Zô¯4 « ²ù±4 È ^ù³4 Ù îýµ4 í î ·4  î¹4  }»4 ( Z½4 < î¿4 P bÁ4 d f%Ã4 x î-Å4  j-Ç4 ¤ n-É4 » *1Ë4 Ê ž1Í4 Û r2Ï4 û v2Ñ4  *3Ó4 2 ž3Õ4 T Ú4×4 v z=Ù4 ˜ B=Û4%³ ~?Ý4 Ç ‚Iã4 ì †Nå4  ‚Qç4 5 †Vé4 Y ºYë4 f º[í4 u  ]ï4 ‹ Š]ñ4 « ¦^ó4 É Ž`õ4 â ¦`÷4  ’bù4  –eû4 # šfý4 < šgÿ4 U žj5 } ¢l5 § .l5 » ¦l5 É ªn 5 æ ®n 5 ÷ ²x 5 ¶}5  *}5 Iº}5 t¾~5 ŸÂ~5 ­Æ5 ½Ê‚5 ÐF‚5 ç΄5 !5 Ò‘+5 1Ò•-5 GÖ˜/5 `Úœ15 qj35 „F55 —ÞŸ75 ªF¡95 ½â£;5 ÐÞ¤=5 ãÞ¦?5 öÚ¨A5  ¨C5 !æ©M5 @ê®O5 eî±Q5 ŠòµS5 ¯ö·U5 Êú¸W5 ãê¸Y5 þ»[5 »]5 &¾_5 4Ãh5 IºÉr5 dËt5 ÚÏv5 *Ïx5 ª*Ïz5 º Ï|5 ÕÑ~5 ð×€5  Ü‚5 &á„5 Aã†5 Zèˆ5 vëŠ5 ’ðŒ5 ¬öŽ5 Ñ"÷5 ö"’5 " ”5 >&–5 k*˜5 –Úš5 ¦*œ5 É*ž5 Ù  5 ü.¢5 2¤5 B.$¦5 eþ'¨5 ‚ (ª5 Ÿ.)¬5 º.-®5 Ý-°5 ë..²5 .0´5 1.1¶5 U.1¸5 y.1º5 .1¼5 Á62¾5 å.7À5  :8Â5 -2=Ä5 Q2GÆ5 t.LÈ5 ˜>LÊ5 ¼2NÌ5 ÝBSÎ5 FXÐ5 )._Ò5 7J`Ô5 CN`Ö5 WRaØ5 iVaÚ5 ZaÜ5 ±ZfÞ5 Ó^là5 ïbnâ5  * wä5 f{æ5!6~è5 Aþì5 iþ‚î5 “jƒð5 ©n‡ò5 ¿rŽô5 Õ&“ö5 ë&—ø5 ÿþ ™ú5  þ™ü5 &šþ5 7>œ6%Dv6 Oz¢6 ^z¢ 6 oz¢ 6 €F¢6 ‘F¢6 ¢F¢6 ³¶¢6 Ðþ¨6 í¶ª6 ¶®6 %¶²6 B~·6 [¶¿ 6 v¾Á"6 ‚Ê$6 ­†Ô&6 È>â(6%ÕŠã*6 áþè06 ýŽê26 ’í46 5–î66 Qšð86 m–ô:6…‡þ<6 šžþM6 ¨&ÿO6 âQ6 Ò¦S6 é¦U6 ¦W6 ¦Y6 4¦[6 M¦]6 f¦_6 ¦a6 ˜¦c6 ±¦e6 ʦg6 ä¦i6 þ¦k6 ªm6 *®o6 9ªq6 K²s6 \¶u6 lºw6 {¦y6 ›¾{6 «Â}6 ¾¾6%ÎÆ6 ä‡6 ø¦‰6  ¦‹6 ¦6 8Ê6 R¦‘6 uΓ6 ‹Ò•6 œÖ—6 ­Ú™6 ¼Þ›6 ÊÞ 6 ×â"Ÿ6 ëæ"¡6 úâ"£6 ê"¥6 î#§6 2ò#©6 Cö#«6 Sö#­6 fö#¯6 ‹ú#±6 ¦þ$³6…È'µ6 åF'ß6 ûF)á6  F+ã6 + F-å6 C F/ç6 [ 1é6 „ B4ë6 ­ 6í6 Ö  7ï6 ÿ 8ñ6 (!:ó6 Q!=õ6 z!@÷6 £!*Cù6 Í!Cû6 ÷!Eý6 !"Hÿ6 J"N7 q"ÚT7  "U7 Ñ"FU7 è"JW 7 #Z W 7 2#W 7 H#W7 `#"W7 #&X7 ”#Z X7 ª#*X7 µ#Z X7 Ô#. X7 ß#.Z7 '$.\7 q$&^!7 ‚$Z ^#7 –$*^%7 ¡$Z ^'7 °$. ^)7 Â$.`+7 ×$.b-7 ì$2d/7 %6l17 %Fl37 .%Fn57 G%:p77 ’%>u97 Û%^x;7 &&B|=7 q&F}?7 ‚&^}A7 •&BC7 ª&J‚E7 õ&N‚G7 @'R…I7 ‹'F‹K7 ¡'FM7 ¸'FO7 Ó'F‘Q7 ç'F“S7 (F•U7 (¢—W7 F(¢™Y7 m(þ ›[7 ‘(V›]7 Æ(V›_7 ý(Z›a7 )^Ÿc7 G)VŸe7 ~)ZŸg7%)b¤i7 ª)^¶o7 á)¢¶q7 *V¹s7 %*V¹u7 2*B¹w7 ?*f»y7%M*j»{7 a*VÊ7 ˜*2 ʃ7 Ï*FË…7 +š ͇7 =+nΉ7 U+n΋7 j+rÎ7 ƒ+vÐ7 “+zÑ‘7 µ+~Ñ“7 Ù+nÑ•7 ó+‚Ñ—7  ,rÓ™7 &,†Ö›7 =,2 Û7 X,š ÜŸ7 p,þ Þ¡7 ,vߣ7 ‘,zá¥7 »,~á§7 ç,Šá©7 ú,Žá«7 -’á­7 !-þä¯7 :-Ææ±7 K-–æ³7 b-šéµ7 {-žî·7 “-þñ¹7 ¬-:õ»7 Í-&ú½7 æ-þý¿7 ÿ-šÁ7 .¢Ã7 3.¦ Å7 U.ª Ç7 n.® É7…‡. Ë7 Ÿ.² Ï7 ­.î Ñ7 À.¶Ó7 Ö.ÆÕ7…ê.×7 /ºÝ7%/¾ß7 */Âå7 U/z ç7 €/þ é7 «/š ë7 Ö/š í7 0Fï7 ,0& !ñ7 W0Â(ó7 ‚0F.õ7 ‘0F0÷7  0Æ2ù7 ¬0Æ3û7 »0Æ4ý7 Ê0Æ5ÿ7 Ù0Æ68 è0Ê78 õ0º<8%1¾<8 1ÂB 8 G1z H8 p1þ H8 ™1FI8 Â1& K8 ë1ÂR8 2FX8 #2FZ8 22Æ\8 >2Æ]8 N2Æ^!8 ^2Æ_#8 n2Æ`%8 ~2Êa'8…2f)8 ©2Îf48…Ë2h68 à2h=8…kM8$ó2$:qM8$3$:rO8$3$:vT8$*3$:{Z863|\8X3}^8t3~c8š3i8 µ3€k8 Í3…t8…ˆ„8$à3P:Ž„8$ó3P:‡8$4P:’Š8$4P:“Œ8#4”Ž8E4•‘8a4–”8‡4—–8 ¢4˜˜8 º4šž8…®8$Í4|:£®8$à4|:¥±8$í4|:§´8$5|:¨¶85©¸825ª»8N5«¾8t5¬À8 5­Â8 §5Ò¯È8 ¸5Ö¯Ê8%6Ú¯Ì8 6Þ´Ò8 ]6â¿Ô8 ©6æÄÖ8 õ6êÅØ8 7ÖÅÚ8 7êÅÜ8% 7ÚÅÞ8 -7îËä8 w7ªÍæ8 –7ºÍè8 ¨7ºÍê8 ¸7Íì8 Æ7òÍî8  8öÏð8 8FÏò8 `8úÑô8 t8þÓö8 ¸8Øø8 ú8Üú8 9 Üü8 N9âþ8 ƒ9Ö è9 ˜9é9 ²9ê9 Ê9ë9 :ë9 :ë 9%4:ë 9 F:Òò9 X: ò9 k:"ò9 ‰:õ9 Ç:&õ9 ;*ú9 .;ºú9 Y;¾û 9%„;*û"9%¦;. (9%³;. .9 Â;þ  49 <þ  69…J< 89… \< @9… G9$\<\; G9$r<\;# K9~<% N9£<& R9!¾<' U9 Ï<*2 b9 Þ<23 d9 ð<B4 f9  =B6 h9 &=68 j9 B=F= l9… U=? n9…? w9$f=;B w9$l=;C y9$t=;F }9}=I 9’=J ƒ9©=K ‡9!Á=L ‹9 Ó=:P œ9 ä=>P ž9 ö=>P  9  >BP ¢9 > Q ¤9%)>bQ ¦9 7>¦ e ¬9 K>ª i ®9… i>i °9…k º9$Œ>Ô;n º9$š>Ô;o ¼9$·>Ô;o ½9Ò>o ¾9ï>p À9?q Á9 E?&r Â9 q?*u Ä9 Š? u Æ9 ›?’u È9 ²?Ö u Ê9 Ä?Bv Ì9 ò?Fz Î9  @J| Ð9 N@N€ Ò9 |@ê ‚ Ô9 Ž@ê ‚ Ö9  @ê ‡ Ø9 ²@RŠ Ú9 Ä@ê ’ Ü9 Ñ@V“ Þ9 Ü@Vš à9 é@Vš â9 þ@Zš ä9 Aê ¤ æ9%#A^¥ è9 1Aê ´ î9%AA^µ ð9 QAbÄ ö9%`AVË ø9 vAfÐ þ9 „AjÐ : ²Aê Ð : ÃAnÑ : ÒAê Ñ : ãAnÒ : ôAê Ò :  BnÓ :…"BÓ : ABzÓ : SBFÓ : jBFÓ : ~BFÓ : BFÕ !:  BB× #: ¶BrÙ %: ÄB²Þ ': ÜBvã ): óBzã +:  C^è -: C~è /:…2Cí 1: PCÆí 8:…aCî ::…vCî A: ŒC‚î N: ­C†î P: ÖC î R: ðCÖ ï T:  DFð V: (Dþ ò X: GDþ ò Z: hDþ ó \: ‰D–ô ^:  DŠõ `: ÃDz ö b: êDz ö d: EŽø f: *E*ù h: EE*ù j: `E’ù l: {E*û n: –E’û p: ±Eþ ü r: ÊE&!t: ÞEj!v: Fn!x: 2F*!z: SF&!|: zF* !~: “Fþ !€: ªF– !‚: ¾F& !„:…Uè !†:€bÐ !:€çFü!Ž: G²!Ø: G!Ú: 3G!Ü: KG"!Þ: cG&!à: {Gš!â:!œÀ!ä: ‘Gþ !ê: ™Gž!ì: £GÂ!î: ´G¢!ð:!~”!ò: ÅGr+!; ×Gr,!; ëG&0!; ÿG¢4!; H¢8! ; )H¢!; {Hª>!; —H²>!; ¤H>!; ³H®@!; ÚH¢A!; èH E!; ÿH¦E!; IªE! ; 1I E!"; CI¢H!$; SI K!&; mI¦K!(; ‡IªK!*; ¡I¦K!,; ¹IªN!.; ÐI¢P!0;… ÞIP!2;…R!D;$ïIÄ=U!D;$ÿIÄ=V!F;$ JÄ=V!G;JV!H;9JW!J;SJX!K; rJºY!L; †J¾Y!N; JÂZ!P; ÅJÂ\!R; ùJ¢^!T; K¢`!V; )K¢b!X; BK¢d!Z; [K¢f!\; tK¢h!^; K¢j!`; ¦Kl!b; ¿K l!d; ØKÆm!f; ñKš o!h;  L2 p!j; %LÊq!l; ?L2 r!n; YLÊs!p;%sL.t!r; L¢!x; §Lâƒ!z; ¸Lê†!|; ÐLâ‰!~; çL¢Œ!€; ÷L¢Ž!‚;  M¢!„; M¢’!†; -M¢”!ˆ; ?M¢–!Š; QM¢˜!Œ; cM¢š!Ž; uM¢œ!; ‡M¢ž!’; ™M¢ !”; ¬M¢¢!–; ¿M¢¤!˜; ÒM¢¦!š; åM¢¨!œ; øM¢ª!ž;  N¢¬! ; N¢®!¢; 1N¢°!¤; DN ²!¦; UN ³!¨; hN µ!ª; {N¶¶!¬; ŽN ¸!®; ¦Nê »!°; µNê ½!²; ÍN ¿!´; éN À!¶; Oê Â!¸; OòÄ!º; 9OÎÇ!¼; WO¢É!¾; qOÒË!À; OÖÍ!Â; “Oê Ï!Ä;%ªOÚÑ!Æ; ¸O6Ø!Ì; ÌOêØ!Î; ÞOÞØ!Ð; òOîØ!Ò; PòØ!Ô; PâØ!Ö; )PæÙ!Ø; :PêÙ!Ú; KPîÙ!Ü; \PòÙ!Þ; mPöÙ!à; ~PúÛ!â; PþÝ!ä;  Pþß!æ; ±Pá!è; ¾PÆâ!ê; ÑP¶ä!ì; äPFå!î; ÷PFç!ð;  Q é!ò; Q é!ô; 1QFë!ö; KQFí!ø; `QFï!ú; wQFñ!ü; ŽQFó!þ; ªQõ!< ¸QÆö!< ÌQ¶÷!< âQFø!< íQîú!<% Rú! <%R"< 5Rî "< HRî"< ]RÞ"< tRv"< ‡Rv"< žRî" < ±Rî""< ÄR "$< ÛR¢!"&< òRJ#"(<  S &"*<  S)",< .SÆ*".< ?S¢+"0< PS ."2< gS1"4< ~Sš 4"6< S2 5"8< ¢SÊ6":< ´SJ7"<< ËS¶:">< ãS ;"@< úSþ<"B< T >"D< ,TN @"F< ETJ B"H< ^TFD"J<%sTF"L<€çFF"O<€TüH"P< “TH"u<…K"…<!~”M"…<!©TS"Œ< ÁTX"•< ÏTX"—< áTY"¡< U"["¬< U&\"®< U²^"°< ,U_"²< ;U`"´< JU*a"¶< YU&a"¸< hU.c"º< €U²c"¼< U2d"¾< žU6e"À< ­U:f"Â< ½U f"Ä< ÊU6f"Æ< ×U>f"È< éUÞ i"Ê< ùUæ k"Ì<  V&m"Î< VBo"Ð< !VFq"Ò< +VJq"Ô< 6VNs"Ö< @VRu"Ø< NVþ w"Ú< _Vš x"Ü< wVVx"Þ< …VZ{"à< šV^"â< ±VBƒ"ä< ÈVF…"æ< ßV>…"è< îVB ˆ"ê< üVB ‰"ì<  W Š"î< W Š"ð<€TŠ"ò<€)Wü"ó< œÀ"=!~”Ž" = 6W&’"&= ?W¢“"(= NW¢•"*= YW—",= fWÆ—".= sWâ™"0= ‚W œ"2= Wêž"4= ¡Wâ¡"6= ±W¢¤"8= »W¢¦":= ÇW¢¨"<= ÓW¢ª">= ßW¢¬"@= ëW¢®"B= ÷W¢°"D= X ²"F= X ´"H= #X ¶"J= 4Xê ¸"L= AXê º"N= RXê ¼"P= _Xò¾"R= mXÎÀ"T= }X¢Â"V= ŒX¢Ä"X= XÖÆ"Z= «XÒÈ"\= »XöÊ"^= ÊXúÌ"`= ÝXöÎ"b= ðXþÐ"d= ûX Ò"f= YöÔ"h= YöÖ"j= 6YöØ"l= CYöÚ"n= RYJÜ"p= aY ß"r= pYþâ"t= ~YJ ä"v= ›Yþæ"x= ·Y è"z= ÕYJ ê"|= óYN ì"~= Zöî"€=€)Wð"‚=€/Züð"‚= 7Zð"> DZâô">%\Zjö"> €ZÒý"$> œZÒþ"&> ¸Znÿ"(>%ÖZr#*> áZv #0>…  [ #2>… #c>$[hA!#c>$[hA"#e>$ [hA##g>$4[hA'#l>$F[hA(#n>$N[hA)#p>$X[hA*#r>$_[hA+#t>$g[hA,#v>$m[hA-#x>$v[hA/#{>$‚[hA1#~>$Œ[hA3#>$ž[hA4#ƒ>$«[hA5#…>$±[hA7#ˆ>$Á[hA:#Œ>$Ï[hA<#>$×[hA=#‘>$ê[hA>#“>$õ[hA?#•>$ý[hAA#˜>$\hAC#›>\D#>,\E#Ÿ>E\F#¡>h\G#¦>‰\H#¨> \I#ª>¹\J#¬>Ï\K#®>æ\L#°>û\M#²>]N#µ>.]O#¸>G]P#»>h]Q#½>„]R#¿>™]S#Â>¸]T#Æ>Õ]U#É>ì]V#Ë>^W#Í>(^X#Ï>?^Y#Ò>X^Z#Õ> w^z[#×> ‰^z[#Ù>… ›^[#Û>…[#ä>$«^0B]#ä>$´^0B_#ç>½^b#ë>Õ^c#î> í^d#ò>…g#?!_i#? _u#?…x#%? _ª z#%? $_Žz#'? H_’{#)? V_–{#+? |_š{#-? ‡_ž{#/? ±_¢€#1? Ù_¦ƒ#3? þ_ªƒ#5?  `®ƒ#7? $`²ƒ#9? N`¶ˆ#;? c`ºˆ#=? x`âˆ#?? …`¾‰#A? ›`F‰#C? »`‹#E? Ý`ÆŒ#G? ç`F#I?  aF#K? +aÊ‘#M? 5aΖ#O? ?aÆ–#Q? Ta>—#S? caÒ—#U? taʘ#W? ša*œ#Y? ¥aÆ#[? ²a*ž#]? ½aÆŸ#_? ÊaÊ #a? ÓaÖ¡#c? ßaÚ£#e?  b§#g?…ª#w? 'bæ¬#w? 4bê­#y? Sb­#{?…°#‹?… jb²#‹?…³#˜?$‹bøBµ#˜?$—bøBµ#™? b¶#›?»b·#œ? Ób¸#ž? êböº#©?  cº#«?…½#»? 0c. ¿#»? GcZ Á#½? ^cÁ#¿?%jcÅ#Á? ŽcÊÐ#Ç? ´c²Ñ#É? Úc*Ò#Ë? d"Ò#Í? &dÆÓ#Ï? 3d Ô#Ñ? Hd6×#Ó? cd*×#Õ?%~d.×#×? ™dš ä#Ý? ´dæ#ß? Ïd–ê#á?!èd9ñ#ã?¥ öd÷#ã?! e÷#æ?%eø#ð?%:eú#ò? pevü#ô? eþ#ö? §eîþ#ø? Çe$ú? Öe$@ æe$@ õe$@ f" $ @ f& $ @ !f" $@ /f $@%=f* $@ Kf$@ YfÆ$@ ƒfÆ$@ fÆ$@ ¼f.$ @ èf2$"@ gî$$@ 1gî$&@ @g6!$(@ ^g:!$*@ ng>"$,@ •gB#$.@ ºgF)$0@ èg:.$2@ hJ/$4@ =h5$6@ Oh6$@@…<$V@ ZhVA$V@ ohÆA$X@ hÆA$Z@ ­hZA$\@ Éh^A$^@ çhbF$`@ ifP$b@ #i¾R$d@ ?ijU$f@ `in^$h@ niZ_$j@ ir_$l@ ’ivc$n@%¥ize$p@ ¸iÆr$v@ åinr$x@ ôivs$z@ þi~u$|@ jvv$~@ $j‚x$€@ @jrx$‚@ \j*|$„@ kj¾~$†@ zjÆ$ˆ@ ‹j¾$Š@ ©j†„$Œ@ ½jŠˆ$Ž@ Òjn’$@ ájÆ“$’@ ôj¾“$”@ kn–$–@ #kZ—$˜@ 3kr—$š@ Ekv›$œ@ WkÆ$ž@ ‡k$ @ ¤kž$ª@…¡$º@ ´k†£$º@ ÈkЧ$¼@ Ýkn±$¾@ ðk¾±$À@ ln±$Â@  lƲ$Ä@ Hln²$Æ@ WlƳ$È@ l–³$Ê@ «l¾º$Ì@ Ïlƺ$Î@ ülšº$Ð@ +mÆ»$Ò@ nªß$æ@ ^nªâ$è@ ~n¾å$ê@ ˜n®å$ì@ ´nÆå$î@ ¿nnå$ð@ În²å$ò@ án¶å$ô@ ônºæ$ö@ oÆç$ø@ onç$ú@ )o²ç$ü@ =o¶ç$þ@ Qo¾è$A doÂë$A xoîô$A o÷$A… ªoø$ A…ù$A$Ø Eü$A$Ø Eü$A$$Ø Eþ$AEØ%A_Ø%AyØ%!A ÂoÆ%%A Òo¶ %'A ýoî%)A pv%+A /p¾%-A [pÆ%/A mp¶%1A ›p¶%3A Ép &%5A épÊ&%7A qÎ(%9A DqÒ(%;A lqÒ*%=A yqÖ,%?A †qÚ-%AA •qâ0%CA ¤qÚ1%EA °qÞ5%GA ¼qv:%IA ×qâ?%KA ëqv?%MA râ?%OA rv?%QA%-rV?%SA ArvK%YA MrîL%[A ^rÆT%]A nræT%_A €rêT%aA ’rîX%cA ©röX%eA ·rîY%gA ÅrÎZ%iA ãròZ%kA söZ%mA #súZ%oA Csþ[%qA csÒ[%sA rsÒ\%uA s]%wA ¤sÒc%yA Ésd%{A îsvl%}A tvp%A 8t q%A ]tt%ƒA ‚tz%…A §t|%‡A Ìtƒ%‰A ñtÞŠ%‹A uî%A $uî’%A 1u•%‘A [uÒ™%“A ‡u%•A ³uÒ¡%—A ¿uÒ¥%™A Íu¥%›A ßu"¥%A v&®%ŸA Avª ®%¡A svª ±%£A ¥vÖ±%¥A ×v*²%§A  w.²%©A ;wÚ²%«A mw2µ%­A Ÿw6µ%¯A Ñw:¸%±A x*¸%³A 7x*»%µA jxƼ%·A x:½%¹A Ðx*½%»A y*À%½A 6y*Ã%¿A iyÆÄ%ÁA œyÒÅ%ÃA ÏyÒÅ%ÅA z>Æ%ÇA 5z"É%ÉA hzBÍ%ËA%xzFÔ%ÍA ’zJä%ÓA ¦zÎä%ÕA ¼zÎç%×A ÔzÎç%ÙA ìz:ç%ÛA  {*ç%ÝA ({*ê%ßA G{*ë%áA f{*î%ãA …{*ï%åA ¤{:ï%çA ²{*ñ%éA À{*ô%ëA Î{*õ%íA Ü{*õ%ïA ê{Bõ%ñA ü{*ø%óA |*û%õA $|Òü%÷A 2|Ò&ùA @|Ò&ûA N|&ýA b|Î&ÿA ¡|N&B â|Ò&B #}:&B d}*&B ¥}*& B æ}* & B '~Æ & B h~Ò &B ©~Ò &B ê~> &B ,Î&B%nF&B °B&B äÎ"&B €R"&!B P€J%&#B b€:%&%B l€*%&'B x€*(&)B „€*)&+B €*,&-B œ€*-&/B ¨€:-&1B ¸€*/&3B Ê€*2&5B Ü€*3&7B î€*3&9B  3&;B V3&=B Z3&?B€/Z3&AB€1ü3&AB… 93&VB…4&^B$DhG6&^B$KhG7&`BW7&aBm8&cB!ˆ9&dB ›f=&uB ¥j=&wB ±n=&yB ½*=&{B ÌÊ=&}B ÛÊ=&B æÊ=&B ñÊ=&ƒB üÊ=&…B ‚r=&‡B ‚Ê=&‰B ‚Ê=&‹B 5‚Ê=&B E‚v=&B U‚Ê=&‘B s‚Ê=&“B ‘‚Ê=&•B ©‚Ê=&—B ¾‚Ê=&™B ΂® =&›B Ù‚® =&B ä‚Ê=&ŸB û‚Ê=&¡B ƒÊ=&£B ,ƒz=&¥B <ƒÊ=&§B LƒÊ=&©B \ƒÊ=&«B lƒÊ=&­B |ƒz=&¯B Œƒ® =&±B ƒz=&³B ®ƒz=&µB€1=&·B€¿ƒü=&·B Ѓ~=&IC åƒF=&KC ôƒ>&MC „C&VC 3„H&_C ^„M&hC Œ„R&qC ®„W&zC Ä„Z&†C ç„]&’C …c&œC …i&¦C B…o&°C \…r&·C m…v&¿C ƒ…z&ÇC  …‚~&ÏC!¹…&ÑC%Ï…†&ÙC!×…†&ÜC ë…š Š&äC û…Œ&æC…&òC$†dH“&òC$ †dH•&õC5†—&øCQ†˜&ûC ÿ™&þC u†¾š&D… ~†š&D…›&D$Œ†„H&D$•†„H&DŸ†ž&D·†Ÿ&D І† &D 醊¢&D ‡£&D ‡©&$D 4‡¶©&,D J‡Ž«&.D `‡¶®&0D w‡j°&2D “‡j´&4D ±‡’·&6D ɇ–·&8D ㇒¸&:D ý‡š¹&D 1ˆš»&@D ;ˆž¼&BD Gˆ–½&DD aˆ’¾&FD {ˆ’¿&HD †ˆ¢¿&JD ‘ˆ*À&LD ›ˆ*À&ND ­ˆšÀ&PD ¹ˆžÁ&RD ňþ Ä&TD 戶Ä&VD ‰¦Å&XD ‰jÈ&ZD 4‰jÎ&\D N‰jÔ&^D f‰ªÜ&`D Љ®Ü&bD ®‰jâ&dD Ò‰jé&fD ô‰jñ&hD Šn÷&jD 8Šjü&lD DŠj'nD WŠj 'pD zŠn'rD ŸŠ2 'tD ©Š²'vD ÅŠj'xD ኶'zD þж'|D ‹²#'~D 8‹¶('€D U‹¶('‚D r‹¶/'„D ‹²7'†D ­‹¶<'ˆD Ë‹¶<'ŠD é‹¶C'ŒD Œ¶J'ŽD %ŒºJ'D 2Œš P'’D PŒš Q'”D nŒš R'–D ŒŒ¾S'˜D šŒ–T'šD ªŒžV'œD ÁŒÂV'žD ÖŒî[' D íŒÆ['¢D  ¶`'¤D )¶b'¦D G¶j'¨D ejj'ªD ƒ¶q'¬D ¡¶q'®D ¿¶q'°D ݶw'²D û¶~'´D ޶~'¶D 7޶„'¸D U޶„'ºD s޶„'¼D ‘޶‹'¾D ¯Ž¶‹'ÀD ÍŽ¶‹'ÂD 뎶'ÄD  ¶'ÆD '¶'ÈD E¶'ÊD c¶•'ÌD ¶›'ÎD Ÿ¶›'ÐD ½¶ 'ÒD Û¶¦'ÔD ù¶¦'ÖD ¶¬'ØD 5¶¬'ÚD S¶²'ÜD pî²'ÞD ¶³'àD ª¶³'âD Çî¹'äD äîº'æD ‘¶»'èD ‘¶»'êD ;‘¶Ä'ìD X‘¶Ä'îD u‘¶Í'ðD ’‘¶Í'òD ¯‘¶Ó'ôD Ë‘Êâ'öD é‘Îæ'øD ’:ö'úD +’Ò÷'üD U’Ö÷'þD j’¶÷'E ’Jù'E ž’nÿ'E ­’Ú(E ¼’Þ(E Þ’â( E “¦( E (“æ (E T“æ (E ‚“¶(E °“ê(E Þ“î(E ù“¶(E ”&(E -”ò!(E H”2 &(E Z”ö'( E l”j+("E ~”j+($E ”¢1(&E Ÿ”²2((E ±”²8(*E Ôj>(,E Õ”š D(.E ä”2 F(0E ó”úG(2E •jP(4E 3•z Z(6E H•z _(8E b•¶d(:E w•jf(E Ÿ•Fx(@E À•²z(BE 㕚 ~(DE –š €(FE )–þ‚(HE L–F†(JE j–²ˆ(LE Š–þŒ(NE ª–j(PE ¾–j(RE Ø–j(TE ð–š –(VE —¾˜(XE —î™(ZE B—î™(\E l—Fœ(^E –—ž(`E ¹— (bE Ü— ¢(dE ÿ—£(fE "˜¦(hE E˜§(jE h˜¨(lE Œ˜j«(nE °˜¯(pE ¿˜j°(rE ã˜j·(tE ™jÃ(vE )™jÏ(xE L™jÛ(zE m™jì(|E ™nò(~E µ™jö(€E Ö™nü(‚E ù™j)„E š)†E 4š )ˆE Sš )ŠE rš )ŒE ‘š )ŽE °š )E Ïš")’E Øš&)”E áš*)–E ñš*)˜E ›ö)šE "›ö)œE <›.)žE V›2) E p›6)¢E ˆ›ö#)¤E š›ö&)¦E ¬›2*)¨E ¾›6.)ªE ΛÆ5)¬E å›~6)®E ü›:7)°E œ2 8)²E #œ>;)´E 7œ2 >)¶E @œB@)¸E PœFD)ºE YœFD)¼E bœFD)¾E kœFD)ÀE tœJD)ÂE ‡œNL)ÄE ˜œRT)ÆE §œRT)ÈE ¶œVT)ÊE ÇœÆW)ÌE Òœ~X)ÎE ÛœöY)ÐE éœö\)ÒE ÷œ2`)ÔE Zd)ÖE ^l)ØE ös)ÚE 9öv)ÜE S2z)ÞE mj~)àE ‡*†)âE ™ÎŠ)äE µöŠ)æE ÓöŒ)èE ñ2)êE žÎ‘)ìE -ž¶‘)îE ]žæ”)ðE ž&˜)òE »žZš)ôE àžZŸ)öE  Ÿª¤)øE 'Ÿj¤)úE BŸn©)üE _Ÿj«)þE }Ÿn°)F Ÿj²)F ÁŸn·)F çŸj¹)F   n¾)F - jÀ) F R nÅ) F y jÇ)F — nÌ)F · jÎ)F Ñ nÓ)F í jÕ)F ¡nÚ)F #¡jÜ)F 8¡nâ)F O¡jä)F h¡në) F%ƒ¡í)"F Œ¡š í)%F ˜¡bî)'F «¡fï))F Ý¡jô)+F þ¡nø)-F !¢ ý)/F <¢ ý)1F W¢Zý)3F r¢j*5F ‹¢n*7F ¦¢j *9F%±¢ *;F ¼¢Î *>F ڢΠ*@F ö¢n *BF€¿ƒ *DF€£ü*EF€£*KF€£ü*KF '£*ƒF 7£*F H£*™F…*¯F… X£ *¯F…!*ÏF$`£øL/*ÏF$k£øL1*ÒF$u£øL2*ÔF$}£øL5*ØF$ˆ£øL7*ÛF$“£øL9*ÞF$ž£øL<*âF$­£øL@*çF$¼£øLC*ëF$Ç£øLF*ïF$Ò£øLI*óF$Ü£øLM*øF$ç£øLP*üF$ñ£øLQ*þFý£U*G¤V*G0¤W*GG¤X* Ga¤Y*G{¤Z*G•¤[*G³¤\*GѤ]*Gë¤^*#G¥_*'G¥`*,G8¥a*0GQ¥b*2G l¥c*7G ~¥e*=G ¥i*JG ž¥*k*PG ®¥ k*RG… Âo*TG…p*gG$¼¥„Mx*gG$Æ¥„Mz*jG$Ï¥„M|*mG$Ù¥„M*qG$⥄Mƒ*vG$ò¥„M‡*{G$ü¥„M‹*€G$ ¦„MŽ*„G¦*†G-¦*‰GE¦‘*ŒG^¦’*Gv¦“*•G•¦”*šG®¦•*ŸG˦–*£G… 䦗*¥G…˜*­G$ï¦ÌMš*­G$§ÌMœ*°G§œ*±G;§*´G ]§ž*µG j§r ž*½G x§zŸ*¿G ‰§r ¡*ÁG ’§r ¦*ÃG œ§r ª*ÅG ¦§r ®*ÇG °§r ´*ÉG º§~·*ËG ˧‚º*ÍG Ö§ º*ÏG ݧ†»*ÑG æ§Š»*ÓG ï§Ž»*ÕG ø§’»*×G ¨–»*ÙG  ¨–»*ÛG ¨š»*ÝG ¨ž»*ßG %¨¢»*áG .¨¦»*ãG 8¨¦»*åG B¨’»*çG L¨’»*éG V¨ž»*ëG `¨’»*íG j¨’»*ïG t¨ª»*ñG ¨®»*óG ЍÚ»*õG —¨â½*÷G ¤¨r ¾*ùG ¹¨n Â*ûG Шn Ã*ýG é¨n Ä*ÿG ©²Å*H ©n Ç*H %©¶È*H ;©È*H B©Ë*H K©Î*H ^©2 Ñ*H m©2 Ò*H “©ºÓ* H £©¾Ó*"H ³©ÂÕ*$H Å©ÆØ*&H Õ©ÊÙ*(H ê©ÎÙ**H ªÎÙ*,H ªÙ*.H !ªÒÜ*5H 9ª Ý*7H FªÖÞ*9H `ªÚâ*;H zªBä*=H ‚ª:å*?H ¤ªÞæ*AH ªâé*CH ߪæí*EH üªê+GH «â+IH %«î+KH C«ò +MH T«ö+OH d«ú+QH «þ+SH ­«ú+UH æ«+WH ¬ú!+YH X¬#+[H ‘¬ú'+]H ʬ)+_H ­ú,+aH <­-+cH L­ 2+eH …­}E+gH ˜­G+iH ¬­J+kH ¼­úM+mH Í­N+oH Ý­úS+qH ú­U+sH ®Þ\+uH 4®]+wH Q®úp+yH n®p+{H ‹®"q+}H ¨®&+H Æ®‚+H Ú®*‚+ƒH é®Ò“+…H ¯.”+‡H ¯2”+‰H :¯.”+‹H€£”+H€Y¯ü”+H b¯2 ”+°H Н2 •+²H ´¯š –+´H Þ¯2 ›+¶H °œ+¸H…Ÿ+ÈH °2 ¡+ÈH )°2 ¥+ÊH B°š ©+ÌH _°2 ¯+ÎH ~°2 ³+ÐH °>·+ÒH ¿°B¼+ÔH ß°2 À+ÖH ë°þ Á+ØH õ° Â+ÚH ±FÄ+ÜH '±Å+ÞH I±.Æ+àH i±Ç+âH ±Ì+ëH “±Ñ+ôH ¦±Õ+üH ¼±Ù+I αÝ+ I ã±à+I…å+'I ø±é+'I ²ð+6I ²ò+¸"n,fJ K¸Z n,hJ Z¸"n,jJ h¸"n,lJ u¸6n,nJ%ˆ¸Ž n,pJ ›¸ºv,vJ ­¸"v,xJ º¸¾w,zJ ɸÂw,|J%ظÆx,~J%市,„J ô¸Î‚,‡J ¹Òƒ,‰J ¹Ö‹,‹J "¹Ú“,J .¹Þ“,J J¹Þ“,‘J f¹â“,“J ‚¹æ“,•J ž¹ê“,—J º¹î“,™J Ö¹ò“,›J ò¹ö“,J ºú“,ŸJ *ºþ“,¡J Gºú“,£J dº“,¥J º“,§J žº “,©J »º“,«J غ“,­J õº“,¯J »“,±J /»“,³J L»“,µJ i»“,·J q»"“,¹J y»“,»J ‚»"“,½J Š»“,¿J “»&“,ÁJ °»&“,ÃJ Í»*“,ÅJ ê».“,ÇJ ò»2“,ÉJ ¼&“,ËJ ,¼6“,ÍJ I¼:“,ÏJ f¼6“,ÑJ ƒ¼>“,ÓJ  ¼® “,ÕJ «¼B“,×J ȼF“,ÙJ Õ¼F“,ÛJ â¼B “,ÝJ ï¼J”,ßJ  ½N”,áJ )½"”,ãJ 7½N”,åJ T½"”,çJ d½R”,éJ r½V”,ëJ ˆ½Z”,íJ ž½F”,ïJ%´½^”,ñJ ʽb¡,÷J Ô½f¡,ùJ ݽ¾¡,ûJ ç½j¡,ýJ 𽾡,ÿJ ü½n¡,K ¾r¡,K (¾v¡,K 5¾F¡,K%F¾^¡, K U¾z®,K k¾~®,K ƒ¾¾®,K ¾‚®,K ¡¾r®,K ¯¾†®,K À¾Š¯,K Ͼž°,K ᾆ°,K î¾¾°,!K%ø¾Ž°,#K ¿’µ,)K  ¿š¶,+K ¿š¶,-K…(¿¶,/K =¿–¶,IK L¿–¶,KK [¿ ¶,MK h¿‚ ¶,OK †¿‚ ·,QK ¦¿ ¸,SK ³¿*¸,UK É¿š¸,WK 㿞¹,YK ú¿2 º,[K  À¢¼,]K  Àš ½,_K -À¦¾,aK <À¦¿,cK KÀšÀ,eK ZÀš Á,gK ~ÀªÃ,iK ¤À®Ç,kK ÂÀ®Ç,mK ÖÀªÇ,oK þÀªË,qK &Á²Ï,sK NÁªÓ,uK vÁ¶Õ,wK œÁ®à,yK ¼Á‚à,{K ÏÁîà,}K ñÁîä,K ÂÆè,K 9Â~é,ƒK ]Âîê,…K Âîî,‡K%¥Â.ï,‰K Áºþ,K ÏÂ2 -‘K â¾-“K õÂÂ-•K Ã2 -—K Ãî -™K *â -›K ?ÃÆ-K VÚ -ŸK mÚ -¡K ‹Ã2 -£K% ÃÊ-¥K%³ÃÎ)-«K ÌÃv4-±K ìÃÒ:-³K%ÄÖ:-µK ÄÚJ-»K +Ī J-½K cÄÞJ-¿K €Äª L-ÁK ÄâN-ÃK ×ÄæP-ÅK æÄæP-ÇK üÄêP-ÉK%ÅîQ-ËK%%Åî`-ÑK 4Ån-×K…jÅq-ÙK Åq-æK ‡Åòv-úK ”Åöx-üK ¡Åòx-þK ®Åúz-L »Åþz-L ÊÅ|-L ÛÅ}-L ðÅF~-L ÆF‚- L Æz „- L &Æz ‡-L 1Æz Œ-L <Æz -L GÆ ”-L RÆ*•-L ]Æ—-L eÆ™-L pÆœ-L ÆÎœ-L Æš œ- L žÆ2 -"L ¬Æ–ž-$L ºÆ2 ¢-&L ÅÆš ¤-(L ÐÆ2 §-*L ÛÆ‚©-,L æÆ‚©-.L ñÆ¢©-0L üÆ «-2L Ǭ-4L Ç®-6L Ç®-8L (Ç®-:L 3Ç"°-L NÇ&²-@L XÇ´-BL bÇ µ-DL lÇ·-FL wÇ*·-HL Ǻ-JL ŒÇº-LL —Ǻ-NL ¢Çº-PL ­Çº-RL ¸Çº-TL ÃǺ-VL ÎǺ-XL ÙǺ-ZL äǺ-\L ïǺ-^L úÇ º-`L È.»-bL È.»-dL È.»-fL *È.»-hL 6È.»-jL BÈ.»-lL NÈ.»-nL ZÈ2»-pL fÈ.½-rL rÈ.½-tL ~È ½-vL ŠÈ.¾-xL –È.¾-zL ¢È.¾-|L ®È.¾-~L ºÈ.¾-€L ÆÈ.¾-‚L ÒÈ ¾-„L ÞÈ ¿-†L êÈÀ-ˆL öÈÀ-ŠL ÉÀ-ŒL ÉÀ-ŽL ÉÀ-L &ÉÀ-’L 2ÉÀ-”L >ÉÀ-–L JÉVÀ-˜L QÉVÀ-šL XÉ6À-œL dÉ:Á-žL pÉ2Â- L |É6Ä-¢L ˆÉ:Å-¤L ”É2Æ-¦L  É2È-¨L ¬É6Ê-ªL ¸ÉVÊ-¬L ÁÉVÊ-®L ÊÉ.Ê-°L ÖÉ:Ë-²L âÉ2Ì-´L îÉ.Î-¶L úÉ:Ï-¸L Ê2Ð-ºL Ê2Ò-¼L Ê.Ô-¾L *Ê2Ô-ÀL 3Ê2Ô-ÂL <Ê6Ô-ÄL HÊ>Ö-ÆL TÊBØ-ÈL `Ê6Ø-ÊL lÊ>Ú-ÌL xÊBÜ-ÎL „ÊVÜ-ÐL ÊVÜ-ÒL –Ê6Ü-ÔL ¢Ê:Ý-ÖL ®Ê2Þ-ØL ºÊ6à-ÚL ÆÊ:á-ÜL ÒÊ2â-ÞL ÞÊNä-àL çÊNä-âL ðÊ6ä-äL Ë6å-æL Ë6ç-èL 2Ë6é-êL >ËFé-ìL JËJé-îL VË6ë-ðL bËNë-òL nËRí-ôL zË6î-öL †Ë6î-øL ’Ë6î-úL žË6î-üL ªË6î-þL ¶Ë6î-M ÂË6î-M ÎË6ð-M ÚË6ð-M æË6ð-M òËVò- M þËó- M  Ìnö-M ÌVø-M "Ìù-M .Ìnü-M :ÌVþ-M bÌZ.M nÌ.M ‚Ì^.M ”Ìb .M £Ìf . M ´Ì ."M ÀÌj .$M ÌÌn.&M ØÌ .(M äÌV.*M Í.,M :Ín..M fÍV.0M ’Í.2M ¾Ín.4M êÍV.6M ÎZ.8M BÎn!.:M€Y¯!.N Ö¶ë.@N ÖJì.BN ÖJì.DN .ÖÞ ì.FN =Öºì.HN…LÖñ.JN cÖ¶ñ.^N Ö¾ò.`N œÖ6ó.bN ±ÖÂó.dN ÉÖÆõ.fN ÖÖÞõ.hN åÖ¾õ.jN%õÖVø.lN ×Ê/rN ×Î/tN !×Ê/vN /×Ò/xN =×Ö/zN I×> /|N W×î /~N e×Ú /€N t×Þ /‚N €×â/„N ׿/†N ™×ê/ˆN §×î/ŠN ¹×6/ŒN Í×*/ŽN%á×V/N õ×F/–N ت /˜N ت /šN ت /œN )ت /žN 6Øò/ N EØÎ/¢N SØö/¤N dØú/¦N wت /¨N ŠØú/ªN ت /¬N °Øú /®N ÃØª !/°N ÖØþ!/²N éØ "/´N óØþ"/¶N ÿØö$/¸N ÙÎ%/ºN Ùú%/¼N ,Ùª &/¾N 9Ùª &/ÀN FÙþ&/ÂN XÙþ '/ÄN lÙþ'/ÆN €Ùþ (/ÈN –Ù6(/ÊN ©Ù (/ÌN…±Ù-/ÎN ÄÙ -/ÕN íÙ //×N Ú 1/ÙN ;Ú 3/ÛN…dÚ4/ÝN zÚ 4/ãN „Úš 5/åN Ú‚ 6/çN…œÚ7/éN §Ú7/ O ±Ú7/O »Ú 7/O ÒÚÆ7/O ÝÚ¢7/O ñÚ 8/O ÛF9/O ÛF;/O ÛF/O 6ÛF?/!O BÛFA/#O NÛFB/%O ZÛFD/'O fÛFE/)O sÛFG/+O €ÛFH/-O ÛFJ//O šÛFK/1O §ÛFM/3O ´ÛFN/5O ÁÛFP/7O ÎÛ" Q/9O àÛ" R/;O ÷ÛÆS/=O  Ü~T/?O !Ü‚U/AO 4Ü& V/CO >Ü* X/EO FÜ. Y/GO Oܾ[/IO lÜ2 ]/KO tÜ2 ^/MO ƒÜ}^/OO ’Ü6 ^/QO ¢Ü: _/SO ±Ü}_/UO ÀÜ> _/WO ÐÜ’`/YO âÜ–`/[O öÜB `/]O ÝF a/_O ÝB b/aO ÝF c/cO *Ýš d/eO HÝþ e/gO hݾg/iO ‡ÝFj/kO ™ÝFl/mO ªÝJ n/oO ³ÝN p/qO ÀÝR q/sO ÏÝV r/uO ÞÝZ s/wO ðÝ^ s/yO ûÝb t/{O Þþ t/}O Þ¾u/O (Þ w/O 2ÞNw/ƒO <Þš x/…O aÞ& z/‡O „Þf |/‰O Þj }/‹O ¬Þn ~/O ¹Þr €/O ÐÞ €/‘O…ãÞ/“O ëÞ/¹O ßv /»O ßz /½O :ß~ /¿O Kß~ ƒ/ÁO Vß‚ …/ÃO mß~ ‡/ÅO „߉/ÇO Šß‰/ÉO –߆ ‰/ËO ¢ßŠ Œ/ÍO ®ßŽ Œ/ÏO ºß† Œ/ÑO Æß’ Œ/ÓO Óß– Ž/ÕO àßš Ž/×O êßž /ÙO öߢ ‘/ÛO ঠ“/ÝO à† ”/ßO ઠ—/áO &à® ˜/ãO 2ಠ˜/åO >à¶ ˜/çO Jຠ›/éO Vྠ›/ëO bà† ›/íO oà† ›/ïO |à ›/ñO ˆàÆ ›/óO –à– ›/õO ¥à† ›/÷O ¶àž ›/ùO Çঠ›/ûO Øà– ›/ýO éà† ›/ÿO üàž ›/P ᦠ›/P "áÊ ›/P ,áÎ œ/P 8árœ/ P Dá’ œ/ P Xá– œ/ P nᆠœ/P…váœ/P …áZ œ/P ‘áš œ/P Îáš ž/ P€=Õ /"P€ âü¢/#P âÒ ¢/‰P%â.¢/‹P (â6¯/‘P%3â.¯/“P >âÖ ¶/™P Iâ‚ º/›P Tâ»/P…¾/­P qââ À/­P }âš Æ/¯P ‰âæ È/±P •âê Ï/³P ¶âî Ð/µP Øâò Ñ/·P øâ2 Ò/¹P ãÊÓ/»P *ãš Ô/½P Bã2 Õ/¿P \ãÊÖ/ÁP vãš ×/ÃP ˜ãš Ù/ÅP ¼ã‚ Û/ÇP ×ãö Ü/ÉP ðãú Þ/ËP äà/ÍP ää/àP äþæ/æP =äŠæ/èP [äþ æ/êP uäç/ìP…ì/üP$ädZò/üP$™ädZó/þP£äõ/Q»äö/Q… Ôä÷/Q…ù/Q$ää|Zü/Q$ñä|Zü/Q$ýä|Zü/Qåý/Q$åþ/Q?åÿ/Q Yå0Q cåz0"Q ŠåŠ0$Q ³år0&Q »å!0(Q ßå!0*Q æ!0,Q +æ !0.Q Væ!00Q ƒæ!02Q °æ !04Q Ýæ!06Q  ç!08Q 7çV0:Q dçV0Q…0dQ$‘çØZ0dQ$œçØZ 0iQ©ç0nQÃç0sQ ßç!0xQ ñç!0zQ è!0|Q… è0~Q…0®Q$'èüZ#0®Q$.èüZ'0³Q$5èüZ*0·Q$GèüZ,0ºQTè00¿Qjè10ÄQ€è20ÈQ¡è30ËQ ½èž40ÐQ Óèš40ÒQ çèv 40ÔQ øè!40ÖQ  é"!50ØQ é&!50ÚQ +é*!50ÜQ >é&!50ÞQ Sé*!50àQ sé*!50âQ …é*!50äQ ›é*!50æQ ¶é*!50èQ Æé*!50êQ Ùé*!50ìQ… ëé50îQ…50R$ëé`[70R$÷é`[90Rê=0 R ê>0R =ê.!?0R Vê.!?0R iê2!?0R |ê6!?0R ê6!?0R ¢ê6!?0R ¹ê6!?0R Ïê:!?0!R çê.!?0#R üê.!?0%R  ë?0'R ëA08R 'ëC0ER 2ë>!E0YR OëÖ H0[R… dëK0]R…K0~R$më´[N0~R$të´[R0ƒR${ë´[T0†RˆëX0‹RžëY0R´ëZ0“R ÐëV[0˜R æë ![0šR ùë ![0œR  ìB![0žR %ì*![0 R @ì*![0¢R Uì*![0¤R mì*![0¦R ìF![0¨R ”ìv [0ªR ¦ìJ![0¬R ¸ìþ\0®R ÕìŠ\0°R òìN!]0²R íR!]0´R ,ír]0¶R%Ií]0¸R fíB!f0¾R {í†f0ÀR Ží’f0ÂR £í!f0ÄR ¹í!f0ÆR Ñí!f0ÈR çí!f0ÊR ÿíf0ÌR  îh0ÚR "îš i0äR… Gîj0æR…j0úR$Qî@\m0úR$Yî@\q0ÿR$aî@\s0Soîw0S†îx0 Sîy0S ºîV!z0S Óîv z0S åîZ!z0S ÷î^!{0S  ïb!{0S ï!{0S 2ï*!{0 S Fïb!{0"S Xï!{0$S lïb!{0&S ï!{0(S ˜ïV!{0*S ­ïš {0,S ·ï2|0.S Ðï2|00S ëï*!|02S ûïž|04S  ðÖ|06S ðþ|08S 0ð‚ |0:S IðŠ}0S kð’~0@S €ð‚0BS •ðr0DS%ªð.0FS ¿ð*!†0LS Óðž†0NS%éðj!†0PS þðF‘0VS ñF“0XS !ñF•0ZS /ñn!—0\S Fñ‚˜0^S ]ñv ˜0`S tñz˜0bS ‹ñz™0dS%¢ñj!™0fS ¹ñF£0lS ÔñF£0nS%êñr!£0pS úñ‚­0vS  òR!­0xS òr­0zS 0òv!­0|S%Bòr!­0~S Tòj º0„S fòf»0†S zò‚ ¼0ˆS ‹òн0ŠS –òf!½0ŒS £ò‚¾0ŽS ½òv¾0S ×òr¾0’S%ñò¾0”S  ó†Ç0šS óz!Ê0œS 3ó~!Ê0žS HóË0 S Tó2 Ï0¨S {ó¢Ò0ªS ¤ó2 Ó0¬S ËóÕ0®S…Ù0¼S$ÚóX]Ý0¼Séóß0¿S ôà0ÂS ôâ0ÍS %ôB ä0ØS 1ô¢å0ÚS Mô‚!å0ÜS iô†!é0ÞS ƒô*!ë0àS –ô*!ë0âS  ôŠ!ë0äS ­ôîí0æS ×ôŽ!ð0èS âôzð0êS ïôŽ!ñ0ìS%üôò0îS (õ’!ú0ôS Tõ–!ý0öS €õ1øS ’õš!1üS%¤õ 1þS%¸õ¢! 1T Ãõv1T íõ¦!1 T öª!1 T ö®!1 T Aö²!1T mö¶!1T… ™ö1T…1 T$§öÐ]!1 T$²öÐ]"1"T$¿öÐ]#1$T$ÍöÐ]$1&T$×öÐ]%1(Tãö&1*Týö'1,T÷(1.T6÷)10TO÷*12T j÷+14T%u÷51NT%…÷61QT •÷Â!71TT £÷Æ!81VT ±÷Ê!91XT ¿÷Î!:1ZT Í÷Ò!;1\T Û÷Ö!<1^T é÷Ú!=1`T%÷÷>1bT øÚ!>1eT%ø?1gT !øÞ?1jT -øâ!C1lT 9øæ!D1nT%Eøê!D1pT Qøî!K1vT ]øò!L1xT iøö!M1zT%uøú!M1|T%øú!T1‚T%øþ!^1ˆT ™ø"e1ŽT ¥ø"i1T ±ø "m1’T ½ø"q1”T Éø"u1–T ÕøÊy1˜T áøÊy1šT íø"y1œT%ùø}1žT ù"1¡T%ù€1£T ù’!1¦T ;ù† „1¨T [ù&"„1ªT%…ù„1¬T ­ù*"Œ1²T ×ù."Ž1´T úŽ1¶T…‘1ÆT ú“1ÆT ú:"•1ÊT ,ú–1ÌT @ú˜1ÎT Rú›1ÐT búž1ÒT ¥ú>" 1ÔT æúB"¡1ÖT øú£1ØT  û¦1ÚT $û>"ª1ÜT 9ûB"®1ÞT Pû²1àT gûF"³1âT ~û´1äT •ûF"·1æT ¬ûî¹1èT Ìûî¹1êT îûî¹1ìT üî¹1îT 2ün¹1ðT Tü>½1òT vüv½1ôT –üv½1öT ¸üv½1øT Úüv½1úT üüš!½1üT ýâÁ1þT @ý>Á1U ^ýnÁ1U ~ýâÄ1U œýš!Ä1U ¼ýÈ1U Õý*Ì1U…öýÌ1U þJ"Ì1)U þv Ì1+U 9þN"Ì1-U WþFÎ1/U wþR"Ð11U “þV"Ð13U ±þFÓ15U ÑþZ"Õ17U ñþv Ø19U ÿN"Ø1;U 1ÿ^"Ú1=U QÿÞÝ1?U uÿâÝ1AU ›ÿæÝ1CU ÁÿÞÝ1EU åÿâÝ1GU  æÝ1IU 1FÝ1KU LFß1MU ijá1OU †Fä1QU £jæ1SU ÀFé1UU Ýjë1WU úv î1YU N"î1[U 6Fð1]U FFò1_U Tv ô1aU |b"ô1cU ¢f"õ1eU ¿j"õ1gU Ûn"õ1iU çF÷1kU õjù1mU r"þ1oU v"2qU z"2sU =~"2uU ]‚"2wU }v 2yU žZ 2{U ½Š 2}U Þf" 2U ôj 2U j 2ƒU…02…U C 2¤U Uš 2¦U mr2¨U …š 2ªU Ÿ†"2¬U «Š"2®U ¹Ž"2°U€ â2²U€Çü2²U¥ Î2ËU!Ý2ÎU%çV2ÒU Ö 2ØU ’"#2ÚU 0Z #2ÜU OZ #2ÞU p¶#2àU ‘Z #2âU ²"#2äU ¹¶#2æU ÚZ #2èU û"#2êU Z #2ìU ="#2îU ^Z #2ðU 6#2òU Š"#2ôU ¬–"#2öU ¼š"#2øU ÎZ #2úU ðZ #2üU "#2þU ¶#2V +Z #2V D"#2V ]Z #2V v"#2V Z #2 V ¨"#2 V Á6#2V Úž"#2V óž%2V üz%2V Ö%2V Z %2V 5"%2V TŽ!%2V `¢"%2V r¢"%2 V ~¦"%2"V ˆª"'2$V —*'2&V ¦®"'2(V ²²"'2*V Æ"'2,V å&"'2.V ï¶"'20V  r'22V%%.'24V >2 .2:V J¶"/2V%b./2@V nº"82FV z*<2HV ‰ž<2JV ‘Ö<2LV ›*!<2NV ¬&!<2PV ¿*!<2RV Ï‚<2TV àr<2VV%ñö <2XV  šC2^V * ¾"C2`V 2  D2bV < Â"D2dV L Æ"H2fV%j Ê"L2hV%‰ Ê"S2nV ª Î"\2tV Ö Ò"c2vV ê f2xV  Î"f2zV  Ö"l2|V  Ú"p2~V  Þ"t2€V 3 â"u2‚V > æ"w2„V%G ê"{2†V%i î"†2ŒV%v î"’2’V › 6 Ÿ2˜V ¾ . ¢2šV Ó 2 ¤2œV ê 6 ¥2žV€Ç¥2 V€ ü¥2 V  ¥2ÏV  .¦2ÑV - ²§2ÓV < ¨2ÕV K ©2×V c .ª2ÙV… y «2ÛV…¬2W$ aÇ2W$ aÉ2W$” aÊ2W$œ aË2W$¤ aÌ2 W$± aÍ2"W$¿ aÎ2$W$Ñ aÏ2&W$Û aÐ2(W$ã aÑ2*W$í aÒ2,W$ö aÓ2.W$ aÕ21W$ aÖ23W$ a×25W$ aØ27W$- aÙ29W$; aÚ2;W$M aÜ2>W$\ aÞ2AW$k aß2CW$z aà2EW$‰ aâ2HW$› aã2JW$© aä2LW$³ aæ2OW$À aé2SWÑ ë2VWì ì2YW í2[W î2]W0 ï2_WL ð2aWi ñ2cWŠ ò2eW£ ó2gWº ô2iWÓ õ2kWë ö2mW÷2pWø2rW6ù2tWLú2vWmû2xWŠü2zW«ý2}WÉþ2€Wçÿ2‚W3„W#3‡WD3‰Wa3‹Wz3ŽW–3’W ¶3•W… 3§W  3§W…3·W ÒÆ3·W á#3¹W ðÆ3»W ~3½W !å3¿W &3ËW /3ÓW :3ÕW J#3×W%b#3ÙW x!3ßW †¶,3üW ‘#,3þW œ#.3X è#.3X 4#.3X €#.3X  }/3X ´"#/3 X ɶ03 X ç¶23X 43X€ 63X€ü63X!63‹Y 2SY ;]’Y!L:3”Y%T>3 Y!a>3£Y!n@3¦Y!}F3¯Y!‰R3¼Y!—V3ÄY £Šb3ÑY °*#f3ÓY »Šh3ÕY È.#n3×Y ÓŠq3ÙY à2#y3ÛY ë6#}3ÝY ö:#3ßY >#‚3áY  B#†3ãY F#‡3åY #J#ˆ3çY .N#‰3éY ;R#Š3ëY GV#‹3íY RZ#Œ3ïY ]^#3ñY jb#Ž3óY b#Ž3õY f#Ž3÷Y j#3ùY ¨n#3ûY µr#3ýY Êr#3ÿY Øv#3Z èz#‘3Z ó~#‘3Z j#’3Z z#’3 Z ,j#’3 Z A‚#’3 Z Xz#’3Z mŠ’3Z „†#”3Z ›z”3Z £Š#”3Z ­Ž#”3Z ·’#”3Z Á–#”3Z Ëž”3Z Õš#”3!Z ßž#”3#Z é¢#”3%Z ó² ”3'Z ý¦#”3)Z ª#”3+Z z”3-Z Š#”3/Z %Ž#”31Z /’#”33Z 9–#”35Z Cž”37Z Mš#”39Z Wž#”3;Z a¢#”3=Z k² ”3?Z u¦#”3AZ €ª#”3CZ ‹r#”3EZ ©z#”3GZ É®#”3IZ Ô²#”3KZ ßÒ”3MZ ê¶#”3OZ õº#”3QZ þ ”3SZ  ¾#”3UZ Â#”3WZ !”3YZ ,b#”3[Z ;j#”3]Z L®#”3_Z l²#”3aZ ŽÒ”3cZ °¶#”3eZ Òº#”3gZ ôþ ”3iZ ¾#”3kZ 8Â#”3mZ Z”3oZ |Æ#”3qZ ŽÊ#”3sZ ¢Æ#•3uZ ¶Ê#•3wZ ÌÎ#–3yZ âÒ#–3{Z øŠ—3}Z Ö#›3Z $Ú#›3Z :r#œ3ƒZ PÞ#œ3…Z fâ#3‡Z xæ#3‰Z Œâ#ž3‹Z  æ#ž3Z ¶ê#Ÿ3Z Ìî#Ÿ3‘Z âò# 3“Z øö# 3•Z b#¡3—Z $ú#¡3™Z :z#¢3›Z Mþ#¢3Z bz#£3ŸZ wþ#£3¡Z ŒŠ¤3£Z ¡$¦3¥Z ¶$¦3§Z Ë $§3©Z à$¨3«Z 3­Z þj#ª3¯Z $ª3±Z &j#«3³Z ;$«3µZ P$¬3·Z e$¬3¹Z z$­3»Z "$®3½Z ¡&$®3¿Z ±*$®3ÁZ Ã"$¯3ÃZ Ô"$¯3ÅZ æ"$¯3ÇZ%ù¯3ÉZ  2$¯3ÌZ 6$¯3ÎZ %6$¯3ÐZ 56$¯3ÒZ E6$¯3ÔZ U6$¯3ÖZ e6$¯3ØZ u6$¯3ÚZ …6$¯3ÜZ •6$¯3ÞZ ¥6$¯3àZ µ6$¯3âZ Æ6$¯3äZ ×6$¯3æZ è6$¯3èZ ù6$¯3êZ  6$¯3ìZ 6$¯3îZ ,6$¯3ðZ =6$¯3òZ N6$¯3ôZ _6$¯3öZ p6$¯3øZ 6$¯3úZ ’6$¯3üZ £6$¯3þZ ´6$¯3[ Å6$¯3[ Ö6$¯3[ ç6$¯3[ ø6$¯3[ :$°3 [ 6$°3 [ &2$±3[ 6>$±3[ Eб3[ R*#µ3[ ]B$·3[ jF$¸3[ wr#¹3[ †6#¹3[ ‘J$»3[ žN$¼3 [ «b#½3"[ ºŠ½3$[ ÐR$¿3&[ ÝV$À3([ êZ$À3*[ ÷^$À3,[ b$À3.[ r#À30[ (f$À32[ 4j$Á34[ @b#Á36[ Hn$Á38[ Tr$Á3:[ av$Á3<[ rz$Á3>[ …~$Â3@[ ’‚$Â3B[ ¡†$Â3D[ °Š$Ã3F[ ÁŽ$Ã3H[ Ô’$Ä3J[ á–$Ä3L[ ðš$Å3N[  ž$Å3P[ $¢$Æ3R[ <¢$Ç3T[ V¢$È3V[ p¢$É3X[ Š¢$É3Z[ ¤¢$É3\[ ¾¢$É3^[ Ø¢$É3`[ ò¢$Ê3b[  ¢$Ë3d[ & ¢$Í3f[ A ¢$Í3h[ \ ¢$Í3j[ w ¦$Í3l[  ª$Í3n[ « r#Î3p[  ®$Î3r[ Ô ²$Î3t[ ç ¶$Î3v[ ü b#Ï3x[ !º$Ï3z[ %!¾$Ï3|[ 8!Â$Ï3~[ M!Æ$Ð3€[ Y!Ê$Ð3‚[ e!Î$Ð3„[ x!Ò$Ð3†[ ‹!Ö$Ð3ˆ[  !Ú$Ð3Š[ µ!Þ$Ñ3Œ[ ¼!â$Ñ3Ž[ Ï!æ$Ñ3[ ä!ê$Ñ3’[ ù!ŠÒ3”[  "î$Ô3–[ "ŠÔ3˜[ &"ò$Ö3š[ 3"ö$Ö3œ[ B"ú$×3ž[ P"þ$×3 [ ]"%×3¢[ l"%Ø3¤[ ~" %Ø3¦[ ™"%Ù3¨[ §"%Ù3ª[ ½"%Ù3¬[ Ñ"r#Ù3®[ é"%Ù3°[ #%Ù3²[ #%Ù3´[ 7#ŠÙ3¶[ F#"%Ý3¸[ S#&%ß3º[ b#*%à3¼[ q#Šá3¾[ €#.%ç3À[ #2%ê3Â[ ž#Šë3Ä[ ­#"%ï3Æ[ ¼#&%ñ3È[ Ë#Šò3Ê[ Û#6%õ3Ì[ ë#:%ö3Î[ û#Š÷3Ð[  $>%ù3Ò[ $B%ù3Ô[ +$~$ú3Ö[ ;$F%ú3Ø[ K$J%ú3Ú[ [$N%ú3Ü[ k$R%ú3Þ[ }$V%ú3à[ ‹$Z%ú3â[ ›$^%û3ä[ «$b%û3æ[ »$f%ü3è[ Î$j%ü3ê[ ã$r#ý3ì[ ò$Þ#ý3î[ %n%þ3ð[ %r%þ3ò[ %%v%ÿ3ô[ 6%z%ÿ3ö[ G%%4ø[ X%F%4ú[ i%~%4ü[ t%‚%4þ[ …%†%4\ ˜%Š%4\ «%Ž%4\ ¾%’%4\ Ñ%–%4\ ä%š%4 \ ö%š%4 \  &ž%4\ &š%4\ %&š%4\ 9&š%4\ M&š% 4\ a&¢% 4\ o&¦% 4\ ƒ&b# 4\ ›&ú# 4\ µ&ª% 4 \ Ï&®% 4"\ é&¢% 4$\ '²% 4&\ '¶% 4(\ 7' 4*\ Q'º% 4,\ ^'¾% 4.\ m'Â%40\ |'Æ%42\ ‹'º%44\ š'¾%46\ ©'Ê%48\ ¸'Î%4:\ Ç'Ò%4<\ Ö'Ö%4>\ å'Ú%4@\ õ'Þ%4B\ (â%4D\ (æ%4F\ %(ê%4H\ 5(î%4J\ E(ò%4L\ X(ö%4N\ m(b#4P\ |(ú#4R\ (ú%4T\ ž(þ%4V\ ¯(&4X\ À(&4Z\ Ñ( &4\\ Ü(&4^\ í(&4`\ )&4b\ )&4d\ &)&4f\ 9)"&4h\ L)z#4j\ [)&&4l\ h)j#4n\ w)*&4p\ „).&4r\ ‘)2&4t\  )6&4v\ ¯):&4x\ ¾)>&4z\ Ë)B&4|\ Ú)F&4~\ é)J&4€\ ø) & 4‚\ *N& 4„\ *R& 4†\ *V&!4ˆ\ &*6$!4Š\ 0*Z&!4Œ\ <*‚%!4Ž\ J*^&!4\ X*‚%"4’\ f*^&"4”\ t*‚%#4–\ ƒ*^˜\ ’*b&$4š\  *&$4œ\ ¨*&$4ž\ °*&$4 \ ·*f&$4¢\ Ã*r#$4¤\ Ô*Þ#$4¦\ ç*j&%4¨\ ö*n&%4ª\ +r&&4¬\ +~$'4®\ )+v&'4°\ 7+z&'4²\ F+Š'4´\ U+~&)4¶\ b+b#)4¸\ s+ú#)4º\ †+‚&*4¼\ •+†&*4¾\ ¦+Š&+4À\ ·+Ž&,4Â\ Æ+Ž&,4Ä\ Ò+’&,4Æ\ ß+–&,4È\ ë+š&,4Ê\ ÷+ž&-4Ì\ ,¢&-4Î\ ,¦&-4Ð\ ,ª&.4Ò\ ',ª&.4Ô\ 3,®&.4Ö\ ?,²&.4Ø\ K,‚%/4Ú\ W,†%/4Ü\ c,‚%04Þ\ o,†%04à\ {,¶&14â\ ‡,º&14ä\ “,¾&24æ\ Ÿ,Â&24è\ «,Æ&24ê\ ·,Ê&34ì\ Ã,Ê&34î\ Ï,Î&34ð\ Û,Ò&34ò\ ç,&44ô\ ó,&44ö\ ÿ,&54ø\  -&54ú\ -Ž%64ü\ 4-F%64þ\ L-Ö&64] b-Þ%64] -Þ%64]€64]€™-üž4] ¡-ž4©`!¬-Ÿ4²` º-Ú& 4»` Æ-Þ&¢4½` !Ð-å¢4¿` Ù-â&£4É` å-æ&¥4Ë`!ñ-¥4Í` ÷- ¨4Ò`  .ê&¨4Ô`  .*¨4Ö` 6.*¨4Ø` L.‚ ¨4Ú` ^.î&©4Ü` {.‚ ª4Þ` .ò&«4à` œ.F«4â` ¥. «4ä` ¯.ú «4æ` Ñ.ö&­4è` ï.ú&­4ê` /þ&®4ì` /‚ ¯4î` &/ö&°4ð` 6/ö&°4ò` F/ °4ô` P/þ °4ö` ]/’±4ø` j/–²4ú` w/*´4ü` „/'¶4þ` •/'¶4a ¬/ '¸4a Á/'¸4a Ø/'º4a ï/'º4a  0š º4 a 0»4 a…¿4a!$0Â4a 10'Ä4&a G0 Ä4(a [0 Ä4*a o02 Ä4,a ƒ02 Ç4.a ™02 Ê40a ·0"'Í42a Ø0 Ð44a á0*Ð46a õ0 Ó48a 1FÓ4:a 1&'Õ4a /1þ Ö4@a A1þ Ú4Ba U1*Ü4Da i12 à4Fa |1Êã4Ha%1ä4Ja%œ1ä4La%«1ä4Na%Á1ä4Pa ×1*ä4Ra ë1*ä4Ta ú1ä4Va 2^ç4[a 2:'è4]a .2"é4_a B2:é4aa R2:ê4ca j2"ë4ea €2"ë4ga 2:ë4ia ²2:ì4ka Ó2Fí4ma  3î4oa 3*ð4ua *3*ð4wa B3ð4ya%L3Ê"ñ4‚a !\3å÷4ˆa !j3åø4Ža }36ù4’a ˜36ú4”a ¸36û4–a Õ3>'ü4˜a î3B'ý4ša…  4þ4œa…ÿ4¦a$4Ôj5¦a$,4Ôj5©a$Z4Ôj5ªap45¬aŽ45¯aË45°a ð4þ 5²a 5‚ 5´a  5 5¶a 65Þ 5¸a%P5 5ºa!`5 5¼a o5R'5Ía €5R'5Ïa “5V'5Ña ²5Z'5Óa Æ5ª5Õa Ü5^'5×a ô5b'5Ùa  6R'5Ûa 6f'5Ýa (6*5ßa D6j'5áa b6n'5ãa Œ6r'"5åa «6*%5ça Ë6*%5éa Ö6n'%5ëa ø6*(5ía 7v'(5ïa 67z',5ña V7æ /5óa g7 /5õa t7 /5÷a!7/5ùa ˜7~'E5b ¬7‚'E5b ¾7†'F5b É7>F5b ç7>F5b 8>F5b #8>F5!b @8Š'F5#b Y8ŠG5%b m8Ž'H5'b ‡8ŠK5)b ©8FK5+b Á8FM5-b Ý8’'O5/b ü8FP51b 9FR53b =9FT55b _9ŠV57b!w9W59b!Ž9Y5>b ¢9ž'^5Mb ¼9¢'^5Ob Ð9¦'`5Qb æ9b5Sb õ9ª'e5Ub :ª'f5Wb -:ª'g5Yb 8:®'j5[b b:š m5]b €:²'m5_b  :¶'m5ab «:ª'n5cb Ô:ª'o5eb ÿ:º'p5gb ,;¶'q5ib 7;®'t5kb B;¾'w5mb M;®'x5ob s;º'{5qb ;¢'~5sb Ç;¦'5ub ó;Â'€5wb þ;Â'€5yb  <Æ'€5{b ?<Ê'€5}b M<Î'ƒ5b `<Ò'ƒ5b u<Ö'ƒ5ƒb Š< ƒ5…b Ÿ<Î'ƒ5‡b ¶<Ò'ƒ5‰b Ï<Ö'ƒ5‹b è< ƒ5b =Ú'ƒ5b =Þ'ƒ5‘b %=â'ƒ5“b 8=¶ƒ5•b K=æ'ƒ5—b b=ê'ƒ5™b {=î'ƒ5›b ”=ò'ƒ5b ­=R ƒ5Ÿb ¹=ö'…5¡b Û=ú'…5£b ÿ=þ'…5¥b %>(…5§b M>…5©b d>Ú…5«b }>Ö…5­b –>Ò…5¯b ¯>Ò…5±b È>(…5³b Ü> (†5µb ö>(‡5·b ?(ˆ5¹b '?(‹5»b :?(Œ5½b O?(5¿b e?(Ž5Áb x?"(Ž5Ãb ‘?(‘5Åb ¬?(–5Çb È?(—5Éb æ?(˜5Ëb @&(™5Íb "@&(š5Ïb @@"(›5Ñb ^@(ž5Ób |@(Ÿ5Õb š@*(¢5×b ¸@.(£5Ùb É@2(¤5Ûb Ü@6(¥5Ýb ò@(¦5ßb A:(§5áb A&(¨5ãb ?A>(©5åb aAB(ª5çb ‚AF(«5éb ™AJ(«5ëb °AN(«5íb ÇAR(«5ïb ÞAV(«5ñb óA­5ób…±5c ÿAb(´5c Bf(´5c "Bj(´5 c 3Bn(¶5 c FBþ¸5 c XBö&º5c sBþ¼5c …Br(¾5c ›Bv(À5c ³Bz(Á5c ÅB~(Ã5c ÙB‚(É5c æBâÉ5c ïB Ê5c  Cö&Í5!c C†(Ï5#c &CŠ(Ð5%c 7CŠ(Ò5'c HCö&Ô5)c YCö&Ö5+c jCê Ø5-c {CŠ(Ø5/c ŒCŽ(Ú51c C’(Ý53c ®Cê à55c ÃCê è57c ÚCê ê59c ñCê ì5;c Dê ô5=c D–(÷5?c /Dš(ú5Ac HDê ý5Cc aDž(6Ec zDö&6Gc ˆDö&6Ic ™D¢(6Kc ¬DŽ( 6Mc ÄD¦( 6Oc ÙDª(6Qc îDö&6Sc E®(6Uc E6Wc ,E&'6Yc 9E²(6[c FE¶(6]c SE"6_c iEº(6ac |E®(6cc ‘E¾(6ec ¦EÂ(6gc »E‚ 6ic ÐEÆ(6kc åEº(6mc úE®(6oc FÊ(6qc $Fö& 6sc 9FÎ("6uc PFÒ($6wc `Fâ%6yc rFÒ(&6{c Fâ'6}c ŽFÒ((6c ŸFö&)6c ÇF+6ƒc ïFþ+6…c G‚ -6‡c ?GÖ(.6‰c%eGÚ(26‹c%{GÚ(96‘c%’Gú Q6—c §GÒ(j6c ¹Gâk6Ÿc ÍGÒ(l6¡c çGž(m6£c Hæ p6¥c Hnq6§c ;Hjt6©c WHÞ(w6«c iHŽ(y6­c yH’(z6¯c ‹HŽ({6±c ¤Hê |6³c µH–(}6µc ÍHš(~6·c çHê 6¹c IJ€6»c Iþ 6½c ,Iþ 6¿c LIþ 6Ác {Iæ6Ãc ¬I6Åc ÅI‚‚6Çc ÜI*ƒ6Éc ìIžƒ6Ëc þIâ(„6Íc Jæ(…6Ïc N)Î6>d QN")Î6@d dN&)Î6Bd wN*)Î6Dd ŠN.)Î6Fd —N2)×6Hd ¤N6)Ø6Jd ±N:)Ù6Ld ¾N.)â6Nd ËN")ë6Pd ÙNJ ô6Rd æN.)ý6Td óN>)7Vd ÿNB)7Xd  OF)7Zd OJ)%7\d &ON).7^d 1OR)77`d =OB 87bd ROB97dd dOF:7fd xOV)<7hd …OZ)@7jd –O^)@7ld ¨Ob)@7nd ¼Of)B7pd ÉOj)C7rd ÖO:C7td êOB D7vd Pn)E7xd )Pr)F7zd MPr)F7|d rP~F7~d „Pê I7€d šP:L7‚d ·Pv)M7„d ÜP:M7†d Qz)N7ˆd Q~)Q7Šd 5QFS7Œd AQ S7Žd NQFS7d XQ:'U7’d wQ–W7”d Q‚)X7–d ™Q†)X7˜d ±QŠ)Y7šd ÇQŽ)Y7œd ÑQâY7žd çQ’)Y7 d ýQ–)Y7¢d Rš)Z7¤d +Rê ^7¦d ?Rê a7¨d SRê a7ªd gRê a7¬d {R:d7®d  Rž)f7°d ÅR¢)l7²d èRª o7´d úR¦)o7¶d  Sª)p7¸d Sê q7ºd 2S®)t7¼d GS®)t7¾d \S²)t7Àd rS¶)y7Âd †Sº)|7Äd œSº)|7Æd ²S |7Èd ËS² |7Êd ãS² |7Ìd ýSâ|7Îd T&|7Ðd TB|7Òd T¾)}7Ôd &T:7Öd BTþ ‚7Ød PTþ ƒ7Úd `TÆ„7Üd mT¾„7Þd |T¾‡7àd TJŠ7âd ¤T Š7äd ¯TæŠ7æd ×TæŠ7èd UæŠ7êd %UæŠ7ìd KUþ Š7îd UU6‹7ðd nUþ Œ7òd ‰UFŽ7ôd!U7öd ®Uê “7úd ¿Uê “7üd ÓUŽ(”7þd íU’(•7e  VJ–7e %Vê —7e e UYÚ)Ì7@e nYVÍ7Be ‹YÞ)Ï7De ªY² Ï7Fe ÉYê Ñ7He…ÜYÒ7Je çYâ)Ò7‰e óY¾Ó7‹e ÿY¾Ô7e Z¾Õ7e *Zæ)Ö7‘e DZê)×7“e OZê)×7•e ZZ^ ×7—e jZê)Ø7™e uZþ Ø7›e ‹Zî)Ø7e ›Z" Ø7Ÿe ¥Zò)Ø7¡e ²ZØ7£e »ZØ7¥e ÆZ" Ø7§e ÐZª Ø7©e ÛZª Ø7«e èZª Ø7­e õZÎØ7¯e [öØ7±e [úØ7³e [6Ø7µe *[¾Ø7·e 8[ÂØ7¹e F[þÙ7»e X[öÙ7½e f[ÎÙ7¿e v[úÙ7Áe [ª Ù7Ãe Ž[þÙ7Åe ˜[ö)Ù7Çe £[ö)Ù7Ée °[N Ù7Ëe ¼[¶Ú7Íe Ê[þ Ú7Ïe Ó[þ Ú7Ñe Þ[ú)Ú7Óe é[¢Ú7Õe ô[¢Ú7×e ÿ[¢Ú7Ùe  \¢Ú7Ûe \¦Ú7Ýe  \^ Ú7ße 0\þ)Û7áe @\¾Ü7ãe K\¢Ü7åe V\¾Ü7çe b\¾Ü7ée n\¾Ü7ëe z\¢Ü7íe †\¢Ü7ïe ’\¶Ü7ñe ž\*Ü7óe ª\*Ü7õe ¶\ *Ü7÷e Å\¾Ü7ùe Ì\¢Ü7ûe Ö\*Ü7ýe â\ Ü7ÿe í\ºÜ7f ú\¶Ü7f  ] Ü7f ]¢Ü7f 1]*Ü7 f F]¾Ü7 f R]¶Ü7 f a]þ Ü7f o]¶Ü7f ]*Ü7f ]*Ý7f Ÿ]*Þ7f…«]Þ7f ¹]*Þ7 f Ø]*ß7"f ù]*à7$f ^ê)á7&f!.^á7(f E^"*ä7,f U^&*ä7.f k^þ ä70f }^& å72f ˜^**ç74f ¥^ê)ç76f…¶^ç78f Â^.*ç7Hf Ò^ú ç7Jf ç^2*è7Lf õ^2*ï7Nf _2*ö7Pf _r'ý7Rf _þ þ7Tf ._žÿ7Vf @_þ ÿ7Xf K_‚ 8Zf ^_‚ 8\f q_^ 8^f †_b 8`f ›_6*8bf ¯_:*8df Å_>*8ff Ù_B*8hf ï_F*8jf `J*8lf `N*8nf 0`R*8pf G`V*8rf ^`Z*8tf s`j 8vf Š`n 8xf ¡`^*8zf ¸`b* 8|f Ï`f* 8~f ç`N* 8€f ÿ`R* 8‚f aj* 8„f /an*8†f Gar*8ˆf ]aj 8Šf uav*8Œf az*8Žf ¥a~*8f€™-8’f€–ü98“f ½a98Îf Ía>8×f!ßa@8ßf éa‚*À9ah ûa*Á9ch bžÁ9eh%(bÂ9gh oÂpÿ;@o… Ùpt܃>t… õƒ>t…>,t$þƒl{>,t$„l{>.t„>1t%„>3t!<„ >6t!E„ >At!P„>Ot X„>[t…)>Çt$_„{Y>Çt$m„{\>Ët$v„{]>Ít$€„{_>Ðt$Š„{a>Ót$’„{c>Öt$ „{f>Út$­„{h>Ýt$¸„{i>ßt$¿„{j>át$È„{k>ãt$Ñ„{l>åt$Ú„{m>çt$á„{n>ét$é„{o>ët$ð„{p>ít$ø„{q>ït$…{r>ñt$ …{s>ót$…{t>õt$…{u>÷t$#…{v>ùt$-…{w>ût$8…{y>þt$C…{z>u$P…{{>u$Z…{|>ue…~>u‚…> uš…€> u³…>uÌ…‚>uã…ƒ>u†„>u†…>u6††>uL†‡>!ud†ˆ>#u|†‰>%u”†Š>'uª†‹>)uÁ†Œ>+u׆>-u>/u‡>1u‡>3u5‡‘>5uL‡’>7ud‡“>9u}‡”>;u—‡•>>u±‡–>@u͇—>Bu懘>Du… ˆ™>Gu…š>`u$ ˆp|¡>`u$ˆp|£>cu$ˆp|¦>gu$#ˆp|§>iu$-ˆp|¨>ku$8ˆp|ª>nu$Aˆp|¬>quMˆ­>sueˆ®>vu}ˆ¯>zu”ˆ°>|u­ˆ±>~uLj²>u߈³>„u úˆB,´>†u ‰F,´>ˆu ‰F,´>Šu $‰F,´>Œu 3‰F,´>Žu F‰J,´>u Q‰N,´>’u ^‰F,µ>”u k‰J,µ>–u x‰N,µ>˜u!…‰¶>šu… ”‰¹>¦u…¹>·u$£‰Ü|¼>·u$ Ü|½>¹u$®‰Ü|¾>»u³‰¿>½uH–À>¿u͉Á>Áu á‰J,Â>Ãu ì‰b,Â>Åu ù‰f,Ã>Çu  Šj,Å>Éu Šn,Å>Ëu -Šr,Æ>Íu…?ŠÇ>Ïu!LÇ>Öu%LŠÊ>èu!ZŠÊ>ëu rŠ~,Ì>óu Š‚,Ì>õu€KƒÍ>÷u€’ŠüÐ>øu ˜Š†,˜A3v ¢Š*œA5v ³Š*ŸA7v ÆŠ²¢A9v€’Š¢A;v€ÙŠü¦AC¶x$Mœ}?C¸x$Sœ}@Cºx$Yœ}AC¼x$gœ}BC¾x$mœ}CCÀx$rœ}DCÂx$†œ}ECÄx$™œ}FCÆx$§œ}GCÈx$´œ}HCÊx$Êœ}ICÌx$Ôœ}JCÎx$áœ}KCÐx$ñœ}LCÒx$Žœ}MCÔx$Žœ}NCÖx$Žœ}OCØx$*Žœ}PCÚx$1Žœ}QCÜx;ŽRCÞxRŽSCàxkŽTCâx…ŽUCäxœŽVCæx¶ŽWCèxÏŽXCêxéŽYCìxZCîx![Cðx<\CòxO]Côxj^Cöx€_Cøx—`Cúx«aCüxÁbCþx×cCyñdCy eCy!fCy5gCyLhC y_iC ytjCyŽkCy¤lCy»mCyÏnCyåoCyûpCy‘qCy.‘rCyD‘sC yZ‘tC"yp‘uC$y…‘vC&yš‘wC(y¯‘xC*yÌ‘yC,yá‘zC.yõ‘{C0y’|C2y:’}C4yW’~C6ys’C8y˜’€C:y±’Cyì’ƒC@y “„CBy.“…CDyC“†CFya“‡CHyw“ˆCJy “‰CLy…LDÜz ˜“EÜz…GFX} ¦“Â,GX} “Â,GZ} Þ“Â,G\} ú“Â,G^} ”Â,G`} 2”Â,Gb} N”Â,Gd} j”Â,Gf} †”Â,Gh} ¢”Â,Gj} ¾”Â,Gl} Ú”Â,Gn} ö”Â,Gp} •Â,Gr} .•Â,Gt} J•Â,Gv} f•Â,Gx} ‚•Â,Gz} ž•Â,G|} º•Â,G~} Ö•Â,G€} ò•Â,G‚} –Â,G„} *–Â,G†} F–Â,Gˆ} b–Â,GŠ} ~–Â,GŒ} š–Â,GŽ} ¶–Â,G} Ò–Â,G’} î–Â,G”}  —Â,G–} &—Â,G˜} B—Â,Gš} ^—Æ,Gœ} y—Â,Gž} •—Â,G } ±—Â,G¢} Í—Â,G¤} é—Â,G¦} ˜Ê,G¨}  ˜Â,Gª} <˜Â,G¬} X˜Â,G®} t˜Â,G°} ˜Î,G²} «˜Â,„G´} ǘÎ,„G¶} â˜Â,†G¸} þ˜Ò,†Gº} ™Ö,†G¼} ™Â,‹G¾} ;™Ö,‹GÀ} V™Â,GÂ} r™Â,GÄ} Ž™Â,GÆ} ª™Â,GÈ} Æ™Â,GÊ} â™Â,GÌ} þ™Â,GÎ} šÂ,GÐ} 6šÂ,GÒ} RšÂ,GÔ} nšÂ,GÖ} ŠšÂ,GØ} ¦šÂ,GÚ} šÂ,GÜ} ÞšÂ,GÞ} úšÂ,Gà} ›Â,Gâ} 2›Â,Gä} N›Â,Gæ} j›Â,Gè} †›Â,Gê} ¢›Â,Gì} ¾›Â,Gî} Ú›Â,Gð} ö›Â,Gò} œÂ,Gô} .œÂ,Gö} JœÂ,Gø} fœÂ,Gú} ‚œÂ,Gü} žœÂ,Gþ} ºœÂ,G~ ÖœÚ,G~ ñœÂ,G~  ª,G~ Â,G~ 2Ò,G ~ M®,G ~ hÂ,G~ „Â,G~  Â,G~ ¼Â,G~ ØÂ,G~ ôÂ,G~ žÂ,G~ ,žÂ,G~ HžÂ,G~ džÂ,G ~ €žÂ,G"~ œžÂ,G$~ ¸žÂ,G&~ ÔžÂ,G(~ ðžÂ,G*~  ŸÂ,G,~ (ŸÂ,G.~ DŸÂ,G0~ `ŸÂ,G2~ |ŸÂ,G4~ ˜ŸÂ,G6~ ´ŸÂ,G8~ ПÂ,G:~ ìŸÂ,G<~  Â,G>~ $ Â,G@~ @ Â,GB~ \ Â,GD~ x Â,GF~ ” Â,GH~ ° Â,GJ~ Ì Â,GL~ è Â,GN~ ¡Â,GP~  ¡Â,GR~ <¡Â,GT~ X¡Â,GV~ t¡Â,GX~ ¡Â,GZ~ ¬¡Â,G\~ È¡Â,G^~ ä¡Â,G`~ ¢Â,Gb~ ¢Â,Gd~ 8¢Â,Gf~ T¢Â,Gh~ p¢Â,Gj~ Œ¢Â,Gl~ ¨¢Â,Gn~ Ä¢Â,Gp~ à¢Â,Gr~ ü¢Â,Gt~ £Â,Gv~ 4£Þ,Gx~ P£Â,’Gz~ l£Þ,’G|~ ˆ£Â,”G~~ ¤£â,”G€~ À£Â,–G‚~ Ü£â,–G„~ ø£Â,šG†~ ¤â,šGˆ~ 0¤Â,žGŠ~ L¤Â,žGŒ~ h¤Â,žGŽ~ „¤Â,žG~  ¤Â,žG’~ ¼¤Â,žG”~ ؤÂ,žG–~ ô¤Â,žG˜~ ¥Â,žGš~ ,¥Â,žGœ~ H¥Â,žGž~ d¥Â,žG ~ €¥Â,žG¢~ œ¥Â,žG¤~ ¸¥Â,žG¦~ Ô¥>žG¨~ ð¥Â,žGª~  ¦>žG¬~ (¦Â,žG®~ D¦>žG°~ `¦Â,žG²~ |¦>žG´~ ˜¦Â,žG¶~ ´¦Â,žG¸~ Ц>žGº~ ì¦Â,žG¼~ §>žG¾~ $§Â,žGÀ~ @§Â,žGÂ~ \§Â,žGÄ~ x§Â,žGÆ~ ”§Â,žGÈ~ °§Â,žGÊ~ ̧Â,žGÌ~ è§Â,žGÎ~ ¨Â,žGÐ~  ¨Â,žGÒ~ <¨Â,žGÔ~ X¨Â,žGÖ~ t¨Â,žGØ~ ¨Â,žGÚ~ ¬¨Â,žGÜ~ ȨÂ,žGÞ~ ä¨Â,žGà~ ©Â,žGâ~ ©ŽžGä~ 8©Â,žGæ~ T©ŽžGè~ ]©Â,žGê~ y©Â,žGì~ •©æ,žGî~ ±©Â,£Gð~ Í©æ,£Gò~ é©Â,§Gô~ ªæ,§Gö~ !ªÂ,©Gø~ =ªê,©Gú~ YªÂ,«Gü~ uªê,«Gþ~ ‘ªÂ,¯G ­ªê,¯G ɪÂ,²G åªÂ,²G «Ž²G  «Â,²G  &«Ž²G  /«Â,²G K«Â,²G g«Ž²G ƒ«Â,²G Ÿ«Ž²G »«Â,²G ׫Â,²G ó«Â,²G ¬Â,²G +¬Â,²G  G¬Â,²G" c¬Â,²G$ ¬Â,²G& ›¬Â,²G( ·¬Â,²G* Ó¬Â,²G, ï¬Â,²G.  ­Â,²G0 '­Â,²G2 C­î,²G4 _­Â,¹G6 {­ò,¹G8 ‡­ö,¹G: •­ú,¹G< ±­î,ÂG> Í­Â,ÇG@ é­Â,ÇGB ®Â,ÇGD !®Â,ÇGF =®Â,ÇGH Y®Â,ÇGJ u®ŽÇGL ƒ®Â,ÇGN Ÿ®Â,ÇGP »®Â,ÇGR ×®Â,ÇGT ó®Â,ÇGV ¯Â,ÇGX +¯Â,ÇGZ G¯Â,ÇG\ c¯þ,ÇG^ ¯Â,ÎG` ›¯-ÎGb ·¯Â,ÖGd Ó¯Â,ÖGf ï¯Â,ÖGh  °Â,ÖGj '°Â,ÖGl C°Â,ÖGn _°Â,ÖGp {°Â,ÖGr —°Â,ÖGt ³°Â,ÖGv ϰÂ,ÖGx ë°Â,ÖGz ±Â,ÖG| #±Â,ÖG~ ?±Â,ÖG€ [±Â,ÖG‚ w±Â,ÖG„ “±Â,ÖG† ¯±Â,ÖGˆ ˱Â,ÖGŠ ç±Â,ÖGŒ ²Â,ÖGŽ ²Â,ÖG ;²Â,ÖG’ W²Â,ÖG” s²Â,ÖG– ²Â,ÖG˜ «²Â,ÖGš DzÂ,ÖGœ ã²Â,ÖGž ÿ²Â,ÖG  ³Â,ÖG¢ 7³Â,ÖG¤ S³Â,ÖG¦ o³>ÖG¨ ‹³Â,ÖGª §³>ÖG¬ óÂ,ÖG® ß³Â,ÖG° û³Â,ÖG² ´Â,ÖG´ 3´Â,ÖG¶ O´Â,ÖG¸ k´Â,ÖGº ‡´-ÖG¼ –´âÖG¾ ¤´ -ÖGÀ À´-ÖG ܴ-ÖGÄ ø´Â,ÖGÆ µÂ,ÖGÈ 0µÂ,ÖGÊ LµÂ,ÖGÌ hµÂ,ÖGÎ „µÂ,ÖGÐ  µÂ,ÖGÒ ¼µÂ,ÖGÔ صÂ,ÖGÖ ôµÂ,ÖGØ ¶Â,ÖGÚ ,¶Â,ÖGÜ H¶Â,ÖGÞ d¶Â,ÖGà €¶Â,ÖGâ œ¶Â,ÖGä ¸¶Â,ÖGæ Ô¶Â,ÖGè ð¶Â,ÖGê  ·Â,ÖGì (·Â,ÖGî D·Â,ÖGð `·Â,ÖGò |·Â,ÖGô ˜·Â,ÖGö ´·Â,ÖGø зÂ,ÖGú ì·Â,ÖGü ¸Â,ÖGþ $¸Â,ÖG€ @¸Â,ÖG€ \¸Â,ÖG€ x¸Â,ÖG€ ”¸Â,ÖG€ °¸Â,ÖG € ̸Â,ÖG € è¸Â,ÖG€ ¹Â,ÖG€  ¹Â,ÖG€ <¹Â,ÖG€ X¹Â,ÖG€ t¹Â,ÖG€ ¹Â,ÖG€ ¬¹Â,ÖG€ ȹÂ,ÖG€ ä¹Â,ÖG € ºÂ,ÖG"€ ºÂ,ÖG$€ 8ºÂ,ÖG&€ Tº-ÖG(€ pºÂ,ÙG*€ Œº-ÙG,€ ¨ºÂ,ÚG.€ ĺ-ÚG0€ àºÂ,ÝG2€ üº-ÝG4€ »Â,áG6€ 4»-áG8€ P»Â,åG:€ l»-åG<€ ˆ»Â,éG>€ ¤»Â,éG@€ À»Â,éGB€ Ü»Â,éGD€ ø»Â,éGF€ ¼Â,éGH€ 0¼Â,éGJ€ L¼Â,éGL€ h¼Â,éGN€ „¼Â,éGP€  ¼-éGR€ ¼¼Â,éGT€ ؼÂ,éGV€ ô¼Â,éGX€ ½Â,éGZ€ ,½Â,éG\€ H½"-éG^€ d½Â,ïG`€ €½ŽïGb€ œ½Â,ïGd€ ¸½Â,ïGf€ Ô½Â,ïGh€ ð½Â,ïGj€  ¾Â,ïGl€ (¾Â,ïGn€ D¾Â,ïGp€ `¾Â,ïGr€ |¾Â,ïGt€ ˜¾&-ïGv€ ´¾Â,òGx€ оÂ,òGz€ ì¾&-òG|€ ¿Â,ôG~€ $¿&-ôG€€ @¿Â,÷G‚€ \¿&-÷G„€ x¿Â,ùG†€ ”¿Â,ùGˆ€ °¿Â,ùGŠ€ Ì¿Â,ùGŒ€ è¿Â,ùGŽ€ À*-ùG€  ÀÂ,ùG’€ <À*-ùG”€ XÀÂ,ùG–€ tÀ&-ùG˜€ ÀÂ,Hš€ ¬ÀÂ,Hœ€ ÈÀÂ,Hž€ äÀÂ,H € ÁÂ,H¢€ ÁÂ,H¤€ 8ÁÂ,H¦€ TÁÂ,H¨€ pÁÂ,Hª€ ŒÁÂ,H¬€ ¨ÁÂ,H®€ ÄÁÂ,H°€ àÁÂ,H²€ üÁÂ,H´€ ÂÂ,H¶€ 4Â.-H¸€ PÂ.-Hº€ lÂÂ,H¼€ ˆÂÂ,H¾€ ¤ÂÂ,HÀ€ ÀÂ2-H€ ßÂÂ,HÄ€ ûÂÂ,HÆ€ Ã6-HÈ€ 3ÃÂ,HÊ€ OÃ6-HÌ€ kÃÂ,H΀ ‡Ã6-HЀ £ÃÂ,HÒ€ ¿ÃÂ,HÔ€ ÛÃÂ,HÖ€ ÷ÃÂ,HØ€ ÄÂ,HÚ€ /ÄÂ,HÜ€ KÄÂ,HÞ€ gÄÂ,Hà€ ƒÄÂ,H†ŸÄÂ,Hä€ »ÄÂ,Hæ€ ×ÄÂ,Hè€ óÄÂ,Hê€ ÅÂ,Hì€ +ÅÂ,Hî€ GÅÂ,Hð€ cÅÂ,Hò€ ÅÂ,Hô€ ›ÅÂ,Hö€ ·ÅÂ,Hø€ ÓÅÂ,Hú€ ïÅÂ,Hü€  ÆÂ,Hþ€ 'ÆÂ,H CÆÂ,H _ÆÂ,H {ÆÂ,H —ÆÂ,H ³ÆÂ,H  ÏÆÂ,H  ëÆÂ,H Ç:-H #ÇÂ,H ?ÇÂ,H [ÇÂ,H wÇÂ,H “ÇÂ,H ¯ÇÂ,H ËÇÂ,H çÇÂ,H  ÈÂ,H" ÈÂ,H$ ;ÈÂ,H& WÈÂ,H( sÈÂ,H* ÈÂ,H, «ÈÂ,H. ÇÈÂ,H0 ãÈÂ,H2 ÿÈÂ,H4 ÉÂ,H6 7ÉÂ,H8 SÉÂ,H: oÉÂ,H< ‹ÉÂ,H> §ÉÂ,H@ ÃÉÂ,HB ßÉÂ,HD ûÉÂ,HF ÊÂ,HH 3ÊÂ,HJ OÊÂ,HL kÊÂ,HN ‡ÊÂ,HP £ÊÂ,HR ¿ÊÂ,HT ÛÊÂ,HV ÷ÊÂ,HX ËÂ,HZ /ËÂ,H\ KËÂ,H^ gËÂ,H` ƒËÂ,Hb ŸËÂ,Hd »ËÂ,Hf ×ËÂ,Hh óËÂ,Hj ÌÂ,Hl +ÌÂ,Hn GÌÂ,Hp cÌ>-Hr ÌÂ,Ht ›Ì>-Hv ·ÌÂ,Hx ÓÌÂ,Hz ïÌÂ,H|  ÍÂ,H~ 'ÍÂ,H€ CÍÂ,H‚ _ÍÂ,H„ {ÍÂ,H† —ÍÂ,Hˆ ³ÍÂ,HŠ ÏÍÂ,HŒ ëÍÂ,HŽ ÎÂ,H #ÎÂ,H’ ?ÎÂ,H” [ÎÂ,H– wÎÂ,H˜ “ÎÂ,Hš ¯ÎÂ,Hœ ËÎÂ,Hž çÎÂ,H  ÏÂ,H¢ ÏÂ,H¤ ;ÏÂ,H¦ WÏÂ,H¨ sÏÂ,Hª ÏÂ,H¬ «ÏÂ,H® ÇÏÂ,H° ãÏÂ,H² ÿÏÂ,H´ ÐÂ,H¶ 7ÐÂ,H¸ SÐÂ,Hº oÐÂ,H¼ ‹ÐÂ,H¾ §ÐÂ,HÀ ÃÐÂ,H ßÐÂ,HÄ ûÐÂ,HÆ ÑÂ,HÈ 3ÑÂ,HÊ OÑÂ,HÌ kÑÂ,HÎ ‡ÑÂ,HÐ £ÑÂ,HÒ ¿ÑÂ,HÔ ÛÑÂ,HÖ ÷ÑÂ,HØ ÒÂ,HÚ /ÒÂ,HÜ KÒÂ,HÞ gÒÂ,Hà ƒÒÂ,Hâ ŸÒÂ,Hä »ÒÂ,Hæ ×ÒÂ,Hè óÒÂ,Hê ÓÂ,Hì +ÓÂ,Hî GÓÂ,Hð cÓÂ,Hò ÓÂ,Hô ›ÓÂ,Hö ·ÓÂ,Hø ÓÓÂ,Hú ïÓÂ,Hü  ÔÂ,Hþ 'ÔÂ,H‚ CÔÂ,H‚ _ÔÂ,H‚ {ÔÂ,H‚ —ÔÂ,H‚ ³ÔÂ,H ‚ ÏÔÂ,H ‚ ëÔÂ,H‚ ÕÂ,H‚ #ÕÂ,H‚ ?ÕÂ,H‚ [ÕÂ,H‚ wÕÂ,H‚ “ÕÂ,H‚ ¯ÕÂ,H‚ ËÕÂ,H‚ çÕÂ,H ‚ ÖÂ,H"‚ ÖÂ,H$‚ ;ÖÂ,H&‚ WÖÂ,H(‚ sÖÂ,H*‚ ÖÂ,H,‚ «ÖÂ,H.‚ ÇÖÂ,H0‚ ãÖÂ,H2‚ ×2H4‚ ×Â,H6‚ 9×Â,H8‚ V×Â,H:‚ s×Â,H<‚ ×Â,H>‚ ­×Â,H@‚ Ê×Â,HB‚ ç×Â,HD‚ ØÂ,HF‚ !ØÂ,HH‚ >ØÂ,HJ‚ [ØÂ,HL‚ xØÂ,HN‚ •ØÂ,HP‚ ²ØÂ,HR‚ ÏØÂ,HT‚ ìØÂ,HV‚  ÙÂ,HX‚ &ÙÂ,HZ‚ CÙÂ,H\‚ `ÙÂ,H^‚ }ÙÂ,H`‚ šÙÂ,Hb‚ ·ÙÂ,Hd‚ ÔÙÂ,Hf‚ ñÙÂ,Hh‚ ÚÂ,Hj‚ +ÚÂ,Hl‚ HÚÂ,Hn‚ eÚÂ,Hp‚ ‚ÚÂ,Hr‚ ŸÚÂ,Ht‚ ¼ÚÂ,Hv‚ ÙÚÂ,Hx‚ öÚÂ,Hz‚ ÛÂ,H|‚ 0ÛÂ,H~‚ MÛÂ,H€‚ jÛÂ,H‚‚ ‡ÛÂ,H„‚ ¤ÛÂ,H†‚ ÁÛÂ,Hˆ‚ ÞÛÂ,HŠ‚ ûÛÂ,HŒ‚ ÜÂ,HŽ‚ 5ÜÂ,H‚ RÜÂ,H’‚ oÜÂ,H”‚ ŒÜÂ,H–‚ ©ÜÂ,H˜‚ ÆÜÂ,Hš‚ ãÜÂ,Hœ‚ ÝÂ,Hž‚ ÝÂ,H ‚ :ÝÂ,H¢‚ WÝÂ,H¤‚ tÝÂ,H¦‚ ‘ÝÂ,H¨‚ ®ÝÂ,Hª‚ ËÝÂ,H¬‚ èÝB-H®‚ ÞÂ,"H°‚ !ÞÂ,"H²‚ >ÞÂ,"H´‚ [ÞÂ,"H¶‚ xÞÂ,"H¸‚ •ÞÂ,"Hº‚ ²ÞÂ,"H¼‚ ÏÞÂ,"H¾‚ ìÞÂ,"HÀ‚  ßÂ,"H‚ &ßÂ,"HÄ‚ CßÂ,"HÆ‚ `ßÂ,"HÈ‚ }ßÂ,"HÊ‚ šßÂ,"HÌ‚ ·ßÂ,"H΂ ÔßÂ,"HЂ ñßÂ,"HÒ‚ àÂ,"HÔ‚ +àÂ,"HÖ‚ HàÂ,"HØ‚ eàÂ,"HÚ‚ ‚àÂ,"HÜ‚ ŸàÂ,"HÞ‚ ¼àÂ,"Hà‚ ÙàÂ,"Hâ‚ öàÂ,"Hä‚ áÂ,"Hæ‚ 0áÂ,"Hè‚ MáÂ,"Hê‚ jáÂ,"Hì‚ ‡áÂ,"Hî‚ ¤áÂ,"Hð‚ ÁáÂ,"Hò‚ ÞáÂ,"Hô‚ ûáÂ,"Hö‚ âÂ,"Hø‚ 5âÂ,"Hú‚ RâÂ,"Hü‚ oâÂ,"Hþ‚ ŒâÂ,"Hƒ ©âÂ,"Hƒ ÆâÂ,"Hƒ ãâÂ,"Hƒ ãÂ,"Hƒ ãF-"H ƒ 9ãÂ,#H ƒ VãF-#Hƒ rãÂ,#Hƒ ãF-#Hƒ «ãÂ,#Hƒ ÈãF-#Hƒ äãÂ,%Hƒ äF-%Hƒ äÂ,'Hƒ :äF-'Hƒ VäÂ,(H ƒ säF-(H"ƒ äÂ,)H$ƒ ¬äF-)H&ƒ ÈäÂ,*H(ƒ åäF-*H*ƒ åÂ,+H,ƒ åF-+H.ƒ :åÂ,,H0ƒ WåF-,H2ƒ såÂ,.H4ƒ åF-.H6ƒ ¬åÂ,1H8ƒ ÉåF-1H:ƒ ååÂ,5H<ƒ æÂ,5H>ƒ æÂ,5H@ƒ <æÂ,5HBƒ YæÂ,5HDƒ væÂ,5HFƒ “æÂ,5HHƒ °æÂ,5HJƒ ÍæÂ,5HLƒ êæÂ,5HNƒ çÂ,5HPƒ $çÂ,5HRƒ AçÂ,5HTƒ ^çÂ,5HVƒ {çÂ,5HXƒ ˜çÂ,5HZƒ µçÂ,5H\ƒ ÒçÂ,5H^ƒ ïçÂ,5H`ƒ  èÂ,5Hbƒ )èÂ,5Hdƒ FèÂ,5Hfƒ cèÂ,5Hhƒ €èÂ,5Hjƒ èÂ,5Hlƒ ºèÂ,5Hnƒ ×èÂ,5Hpƒ ôèÂ,5Hrƒ éÂ,5Htƒ .éÂ,5Hvƒ KéÂ,5Hxƒ héÂ,5Hzƒ …éÂ,5H|ƒ ¢éÂ,5H~ƒ ¿éÂ,5H€ƒ ÜéJ-5H‚ƒ øéÂ,8H„ƒ êJ-8H†ƒ 1êÂ,9Hˆƒ NêÂ,9HŠƒ kêÂ,9HŒƒ ˆêÂ,9HŽƒ ¥êÂ,9Hƒ ÂêÂ,9H’ƒ ßêÂ,9H”ƒ üêÂ,9H–ƒ ëÂ,9H˜ƒ 6ëÂ,9Hšƒ SëÂ,9Hœƒ pëJ-9Hžƒ ŒëÂ,:H ƒ ©ëÂ,:H¢ƒ ÆëÂ,:H¤ƒ ãëN-:H¦ƒ ÿëÂ,„ ‘ôÂ,TH@„ ®ôÂ,THB„ ËôÂ,THD„ èôÂ,THF„ õÂ,THH„ "õÂ,THJ„ ?õÂ,THL„ \õÂ,THN„ yõÂ,THP„ –õÂ,THR„ ³õÂ,THT„ ÐõÂ,THV„ íõÂ,THX„  öÂ,THZ„ 'öÂ,TH\„ DöÂ,TH^„ böZ-TH`„ öÂ,THb„ öÂ,THd„ »öÂ,THf„ ÙöÂ,THh„ ÷öÂ,THj„ ÷Â,THl„ 3÷Â,THn„ Q÷Â,THp„ o÷Â,THr„ ÷Â,THt„ «÷Â,THv„ É÷Â,THx„ ç÷Â,THz„ øÂ,TH|„ #øÂ,TH~„ AøÂ,TH€„ _øÂ,TH‚„ }øÂ,TH„„ ›øÂ,TH†„ ¹øÂ,THˆ„ ×øÂ,THŠ„ õøÂ,THŒ„ ùÂ,THŽ„ 1ùÂ,TH„ OùÂ,TH’„ mùÂ,TH”„ ‹ùÂ,TH–„ ©ùÂ,TH˜„ ÇùÂ,THš„ åùÂ,THœ„ úÂ,THž„ !úÂ,TH „ ?úÂ,TH¢„ ]úÂ,TH¤„ {úÂ,TH¦„ ™úÂ,TH¨„ ·úÂ,THª„ ÕúÂ,TH¬„ óúÂ,TH®„ ûÂ,TH°„ /ûÂ,TH²„ MûÂ,TH´„ kûÂ,TH¶„ ‰ûÂ,TH¸„ §ûÂ,THº„ ÅûÂ,TH¼„ ãûÂ,TH¾„ üÂ,THÀ„ üÂ,TH„ =üÂ,THÄ„ [üÂ,THÆ„ yüÂ,THÈ„ —üÂ,THÊ„ µüÂ,THÌ„ ÓüÂ,TH΄ ñüÂ,THЄ ýÂ,THÒ„ -ýÂ,THÔ„ KýÂ,THÖ„ iýÂ,THØ„ ‡ýÂ,THÚ„ ¥ýÂ,THÜ„ ÃýÂ,THÞ„ áýÂ,THà„ ÿýÂ,THâ„ þÂ,THä„ ;þÂ,THæ„ YþÂ,THè„ wþÂ,THê„ •þÂ,THì„ ³þÂ,THî„ ÑþÂ,THð„ ïþÂ,THò„  ÿÂ,THô„ +ÿÂ,THö„ IÿÂ,THø„ gÿÂ,THú„ …ÿÂ,THü„ £ÿÂ,THþ„ ÁÿÂ,TH… ßÿÂ,TH… ýÿÂ,TH… Â,TH… 9Â,TH… WÂ,TH … uÂ,TH … “Â,TH… ±Â,TH… ÏÂ,TH… íÂ,TH…  Â,TH… )Â,TH… GÂ,TH… eÂ,TH… ƒÂ,TH… ¡Â,TH … ¿Â,TH"… ÝÂ,TH$… ûÂ,TH&… Â,TH(… 7Â,TH*… UÂ,TH,… sÂ,TH.… ‘Â,TH0… ¯Â,TH2… ÍÂ,TH4… ëÂ,TH6…  Â,TH8… 'Â,TH:… EÂ,TH<… cÂ,TH>… Â,TH@… ŸÂ,THB… ½Â,THD… ÛÂ,THF… ùÂ,THH… Â,THJ… 5Â,THL… SÂ,THN… qÂ,THP… Â,THR… ­Â,THT… ËÂ,THV… éÂ,THX… Â,THZ… %Â,TH\… CÂ,TH^… aÂ,TH`… Â,THb… Â,THd… »Â,THf… ÙÂ,THh… ÷Â,THj… Â,THl… 3Â,THn… QÂ,THp… oÂ,THr… Â,THt… «Â,THv… ÉÂ,THx… çÂ,THz… Â,TH|… #Â,TH~… AÂ,TH€… _Â,TH‚… }Â,TH„… ›Â,TH†… ¹Â,THˆ… ×Â,THŠ… õÂ,THŒ… Â,THŽ… 1Â,TH… OÂ,TH’… mÂ,TH”… ‹Â,TH–… ©Â,TH˜… ÇÂ,THš… åÂ,THœ…  Â,THž… ! Â,TH … ? Â,TH¢… ] Â,TH¤… { Â,TH¦… ™ Â,TH¨… · Â,THª… Õ Â,TH¬… ó Â,TH®…  Â,TH°… / Â,TH²… M Â,TH´… k Â,TH¶… ‰ Â,TH¸… § Â,THº… Å Â,TH¼… ã Â,TH¾…  Â,THÀ…  Â,THÂ… = Â,THÄ… [ Â,THÆ… y Â,THÈ… — Â,THÊ… µ Â,THÌ… Ó Â,THÎ… ñ Â,THÐ…  Â,THÒ… - Â,THÔ… K Â,THÖ… i Â,THØ… ‡ Â,THÚ… ¥ Â,THÜ… à Â,THÞ… á Â,THà… ÿ Â,THâ…  Â,THä… ; Â,THæ… Y Â,THè… w Â,THê… • Â,THì… ³ Â,THî… Ñ Â,THð… ï Â,THò…  Â,THô… +Â,THö… IÂ,THø… gÂ,THú… …Â,THü… £Â,THþ… ÁÂ,TH† ßÂ,TH† ýÂ,TH† Â,TH† 9Â,TH† WÂ,TH † uÂ,TH † “Â,TH† ±Â,TH† ÏÂ,TH† íÂ,TH†  Â,TH† )Â,TH† GÂ,TH† eÂ,TH† ƒÂ,TH† ¡Â,TH † ¿Â,TH"† ÝÂ,TH$† ûÂ,TH&† Â,TH(† 7Â,TH*† U^-TH,† db-TH.† sf-TH0†€ýTH2†€‚ü^H3† ’^Hx† ª_H…† ÁaH†!ßbHš†%õz-gH¨† ~-mH®† 3~-oH°†%L‚-pH²† ^&~H¸† r®)Hº† €&H¼† ’†-‚H¾† ¦&ƒHÀ† ³†-†H† Ì&‡HĆ à†-‹HƆ öŠ-ŒHȆ ŒHʆ %Š-ŒH̆%?ŒHΆ… ^ŒHц…Hã†$rx‘Hã†$}x‘H䆅‘H熟’Hè† ¶–-“Hë†!.  ‘•H톥 Ö—H'‡ ÷—H+‡… —H,‡!*™H4‡!@›HE‡… Q ‘œHM‡!d ‘žH_‡!v¬‘ Hp‡!‰ ‘¢Hx‡!ž ‘¤H†‡!°¬‘¦H‘‡ Ⱥ§H—‡ Úº§H™‡ îš-§H›‡ 9¦+¨H‡ Pž-©HŸ‡ a¢-©H¡‡ n¦-©H£‡ {ª-©H¥‡ ˆ®-©H§‡ •®-©H©‡ £²-©H«‡ °¶-©H­‡%¾©H¯‡ ˺-«H´‡ â¾-«H¶‡ ¾-«H¸‡ Â-«Hº‡ .Æ-«H¼‡ OÆ-«H¾‡ cÊ-«HÀ‡ |Î-«H‡ Î-«Hć ¤Ò-«HƇ ·Ò-¬Hȇ ÂÒ-­Hʇ!Í®Ḣ!Ú°HÕ‡%æÖ-²Hà‡%Ö-¸Hæ‡%Ú-¾Hì‡ ]6ÃHò‡ j*ÄHô‡ wZ ÄHö‡ œZ ÄHø‡ Ã6ÄHú‡ ê*ÄHü‡ ó*ÄHþ‡ "ÄHˆ *ÄHˆ%/VÄHˆ 8*ÌH ˆ C*ÌH ˆ W*ÌHˆ fŽ!ÌHˆ šö!ÌHˆ Îæ!ÌHˆ ¦!ÌHˆ 6&"ÌHˆ%jÞ-ÌHˆ œâ-ÛH ˆ ¬æ-ÛH"ˆ Á*ÛH$ˆ Þb!ÛH&ˆ éb!ÛH(ˆ ö!ÛH*ˆ !ÛH,ˆ  !ÛH.ˆ $ !ÛH0ˆ 2zÛH2ˆ @zÛH4ˆ U*ÛH6ˆ a*ÛH8ˆ u*ÛH:ˆ „jÛH<ˆ šê-ÛH>ˆ ¾‚ ÛH@ˆ Ùî-ÛHBˆ ëÊÜHDˆ ÿ²ÝHFˆ *ÞHHˆ '’ ÞHJˆ ;ò-ÞHLˆ M– äHNˆ eö-äHPˆ v*äHRˆ „"äHTˆ —*äHVˆ ª"äHXˆ ¼¶äHZˆ Ö*äH\ˆ Þú-äH^ˆ ôþ-äH`ˆ  .äHbˆ  .äHdˆ <*æHfˆ L¶æHhˆ _jêHjˆ wnêHlˆ *êHnˆ ¬vêHpˆ ¸zêHrˆ ÈŠêHtˆ ÚvêHvˆ î*êHxˆ "êHzˆ *êH|ˆ 8"êH~ˆ Y .êH€ˆ €&êH‚ˆ Š.êH„ˆ ªêH†ˆ!ÀíH•ˆ áZ îHˆ€j îHŸˆ€ üðH ˆ ðHýˆ .ôH‰ *".õH‰ 6&.öH‰ B*.øH ‰ N..ùH ‰ Z2.úH ‰ z6.ûH‰ Œ2.üH‰ °ýH‰ ·þH#‰ ÅÆI&‰… ØI(‰…I;‰$☓I;‰$ؘ“I>‰$IA‰þIB‰ IE‰2 IH‰ Q II‰…IY‰!^IY‰ dI]‰ vIg‰…Iw‰ …Iw‰ ŽI‰…I®‰$ oÔ“3I®‰$%oÔ“4I°‰$+oÔ“5I²‰$0oÔ“6I´‰$6oÔ“7I¶‰$=oÔ“8I¸‰$CoÔ“9Iº‰$JoÔ“:I¼‰$PoÔ“;I¾‰$WoÔ“Iĉ$moÔ“?IƉ$toÔ“@Iȉ$yoÔ“AIʉ$—Ô“BỈ$‡WÔ“CIΉ$¤sÔ“EIщ$ªsÔ“GIÔ‰$ŸÔ“HIÖ‰oJIÙ‰•oKIÛ‰ªoLI݉¾oMI߉ÓoNIá‰éoOIã‰þoPIå‰pQIç‰)pRIé‰?pSIë‰UpTIí‰lpUIpVIñ‰˜pWIó‰ÂpXIõ‰§YI÷‰¬pZIù‰ªt[Iü‰¿t\Iÿ‰¾]IŠ Õ^IŠ…`IŠ$à|”hIŠ$æ|”jIŠ$î|”mIŠ$ò|”oI"Š$ù|”rI&Š$ÿ|”uI*Š$ |”vI,Š xI/Š yI2Š4 zI6ŠG {I9Š] |I=Šr }IAІ ~ICŠ ™ IFŠ…ƒIXŠ £ †IXŠ…‰IhŠ ¾ ‹IhŠ…IzŠ… Ö ’IzŠ…”I‰Š$î Ô”—I‰Š$!Ô”˜I‹Š$!Ô”˜IŒŠ1!˜IŠS!™IŠ|!šIŠ… ¡!›I‘Š…œIžŠ$º!ô”žIžŠ$Î!ô”ŸI Šå!ŸI¡Š" I£Š… ."¡I¤Š…¢I±Š$J" •¤I±Š$a" •¥I³Š{"¥I´Š¡"¦I¶Š… Ê"§I·Š…¨IÄŠ$æ"$•ªIÄŠ$ý"$•«IÆŠ#«IÇŠ=#¬IÉŠ… f#­IÊŠ…®I׊$„#<•°I׊$#<•±IÙŠ¹#±IÚŠá#²IÜŠ  $³IÝŠ…¸IñŠ$($T•½IñŠ?$¾IóŠ e$¿IõŠ!q$9ÀI‹ €$ÃI‹…ÇI‹ $ÊI‹… œ$ÌI‹…ÍI3‹$®$x•ØI3‹$Ä$x•ÚI6‹$Þ$x•ÜI9‹$ô$x•ÞI<‹$ %x•àI?‹$"%x•âIB‹$8%x•äIE‹$Q%x•çII‹$i%x•êIM‹$‚%x•íIQ‹$“%x•ðIU‹¨%óIY‹Í%ôI\‹ö%õI_‹&öIb‹A&÷Ie‹g&øIh‹Œ&ùIk‹´&úIo‹Û&ûIs‹'üIw‹#'ýI{‹… G'þI‹…ÿI¡‹$O'Ø•J¡‹$rØ•J£‹$Y'Ø•J«‹$f'Ø•J³‹$l'Ø•J¶‹$r'Ø•"Jº‹$ Ø•%J¾‹$ÿØ•'JÁ‹$v'Ø•(JË$Œ'Ø•+JÇ‹$›'Ø•-JÊ‹$©'Ø•0J΋$¶'Ø•3JÒ‹$Å'Ø•5JÕ‹$Ø'Ø•7JØ‹ì':JÜ‹½r;JÞ‹(Jñ‹K(?Jõ‹† @Jù‹r AJü‹^(BJþ‹ƒ(CJŒ¡(DJŒ¾(EJ ŒÚ(FJ Œø(GJŒ)HJŒ… =)IJŒ…JJŒ$E)X–ƒJŒ$NrX–‡J•Œ$oX–ŒJ›Œ$K)X–ŽJžŒ$f'X–‘J¢Œ$Q)X–”J¦Œ$])X–—JªŒ$‹X–›J¯Œ$d)X–ŸJ´Œ$²sX–¥J»Œ$¸sX–©JÀŒ$l)X–°JÈŒ$t)X–·JÐŒ$‰)X–ºJÔŒ$rX–¾JÙŒ$’)X–ÃJߌ$2rX–ÈJåŒ$ž)X–ÍJëŒ$¡)X–ÏJîŒ$rX–ÑJñŒ$¨)X–ÖJ÷Œ$°)X–ÝJÿŒ$¹)X–âJ$ÅsX–éJ $Á)X–îJ$rX–ðJ$Æ)X–õJ$^X–üJ$$O'X–ýJ&$Ñ)X–K+$Þ)X–K/$å)X–K4$ì)X– K9$ú)X–K>$*X–KE$ *X–KJ$;*X–KP$D*X–"KT$K*X–%KX$T*X–(K\$c*X–*K_$t*X–,Kb$y*X–-Kd$wtX–1Ki$ƒ*X–5Kn$Š*X–9Ks$—*X–:Ku$¥*X–=Ky$·*X–@K}$Ä*X–GK…$Ë*X–IKˆ$á*X–NKŽ$ÿ*X–RK“$+X–VK˜$9+X–[Kž$M+X–]K¡$\+X–_K¤…+aK§UsbK¬‹qcK²š+dKµ!(eK¹¯+fK½Ê+gKÁÆhKÆà+iKËÖtjKÒëtkK×÷+lKß,mKç2,nKëroKðJ,pKö sqKüe,rKŽw,sK޽rtKŽ,uKޤ,vK޼,wKŽuxK$ŽÓ,yK*ŽurzK-Žç,{K3Ž-|K;Žì'}K=Ž-~KBŽ2-KFŽH-€KKŽ^-KPŽ{-‚KUŽ˜-ƒK\Ž¿-„KaŽé-…KgŽ.†KkŽ.‡KoŽ/.ˆKsŽM.‰KvŽm.ŠKyŽ.‹K{Ž©vŒK€Žš.K…ް.ŽKŠŽÌ.KŒŽé.KŽ /‘K”Ž&/’KœŽ$ëT™ZLA$#3T™\LD$,3T™^LG73`LJM3aLNÿbLQf3cLT~3dLW ˜3eLZ…pLt$¨3„™{Lt¶3}Lw… Ó3~Lz…LŒ$é3”™†LŒ$k”™‰L$])”™‹L“$ï3”™ŽL—$Ë*”™–L $÷3”™˜L£$4”™›L§4œL©4L­Ê+žL°04ŸL´“ j9ÒMI“… }9×MR“…×MZ“$‰9Ø›ÙMZ“$’9Ø›ÚM\“š9ÛM^“²9ÜM`“ É9ÝMb“ Ý9ÂßMe“ ï9ÂàMg“ ø9"áMi“  :®)äMk“ :¢.æMm“ 6:¦.èMo“ K:ª.èMq“ b:®.éMs“ :².êMu“ ¢:¶.ìMw“ Å:¶.ìMy“ à:ìM{“ î:"îM“ ý:º.ñMƒ“  ;òM…“…õM•“… ;÷M•“…÷M¢“$8;4œùM¢“$>;4œúM¤“C;ýM¨“X;þMª“… l;ÿM®“…NÊ“$8;Lœ NÊ“$ˆ;Lœ NÌ“$‡WLœNГ$’;LœNÓ“$¡;LœNÖ“$³;LœNÙ“$»;LœNÝ“$Í;LœNá“$Ý;LœNå“$õ;Lœ"Né“$<Lœ%Ní“$<Lœ'Nð“C;(Nò“<)Nô“¬p*Nø“8<+Nû“V<,Nþ“w<-N”Ž<.N”¯</N ”Î<0N ”õ<1N”=2N”5=3N” L=4N” X=6N ” j=7N#” ‚=Â9N&” š=ª:N(” ­=ª;N*” ½=ªDN:”  >Î.DNR” >Ò.DNT” 6>þENV” I>2ENX” l>Ö.FNZ” Ž>Ú.FN\” ¨>Þ.FN^”…Ã>FN`”…scGNa”€ GNe”€|üXNf” Ô>Z XN›” Þ>Z XN” é>Z XNŸ” ô>Z XN¡” ÿ>Z XN£”  ?Z XN¥” ?Z XN§” 5?N XN©” F?N XN«” V?N XN­” g?N XN¯” v?Z YN±” ‡?YN³”¥ Ž?\N” —?}\NÇ” ¢?ê.]NÉ” ®?î._NË” ¹?î.dNÍ” Ä?î.hNÏ” Ï?ò.lNÑ”%Û?lNÓ” ç?lNÙ” ï?mNæ”%ø?nNó”%@oNù”%@pNÿ”%@qN•€|sN •'@üzN •€'@zN•€5@j zN•€‚@N@zN• ‘@}N>•…‚NR• ©@†NR• ¾@N^• Û@N`• þ@’Nb• NA”Nd•  A/•Nf• ¯A/•Nh• ÀA"/•Nj• ÑA/•Nl• âA&/•Nn• óA*/•Np• B./•Nr• B•Nt• 8B:/–N• FB>/–Nƒ• VB"/–N…• fB>/–N‡• vB&/–N‰• †BB/–N‹• –BF/–N•!~”–N• ¦BJ/—N‘• ¹BN/—N“• ÇBR/œN•• ×BV/ N—• äBZ/¢N™• íB^/¤N›•%ÿB† ¥N• #Cb/°N£•%:CŽ °N¥•%MCŽ µN«• _Cf/»N±• sCj/»N³• Cn/ÁNµ• ”Cr/ÁN·• ©Cn/ÁN¹• ½Cv/ÁN»• ÍCv/ÁN½• âCz/ÁN¿• ÷C"/ÁNÁ•  D~/ÂNÕ%Dv ÂNÅ• -D"/ÍNË•%;DŽ ÎNÍ• SD‚/ÜNÓ• eDŽÝNÕ• vDŽÝNו ‰D† ÞNÙ• žDž ßNÛ• ±D†/àNÝ• ÊDŽàNß• ÝD^/áNá• ðDŽâNã• EŠ/ãNå• EŽ/åNç•€‚@)EçNé•€|EN@êNê• ŠEŽêN– ®E’/ëN– ÌE–/ëN– ìEš/ëN–  Fž/ëN–!~”ëN– *FJ/îN– ;F¢/îN– UF¦/ïN!– jFª/ïN#– F®/ïN%– ŽF²/òN'– FZ/óN)– §FZ/öN+– ³F¶/÷N-– ÆFº/øN/– ìFº/ùN1– Gº/ùN3– 8Gº/úN5– ^Gº/úN7– „Gº/ûN9– ªG¾/ûN;– ÎGÂ/ýN=– ÜGÆ/ÿN?– HÊ/ÿNA– HÎ/ÿNC– 'HŽOE– =HÒ/OG– KHÖ/OI– _HÚ/OK– qHÞ/OM– }Hâ/OO– ‹HŠ/OQ– Hæ/OS– ­HŠ/OU– ÁHÞ/OW– ÏHŽOY– ßHê/ O[– ðHê/ O]–€|E)EO_–€ÿHN@O_–  IOd–€ÿH)EOq–€HüOr– !IÆOµ– 3Iö/O·– >IÆO¹– RIO»– oIO½– —IO¿– ¬IöOÁ– ÄIOÖ ÒIOÑ– êIOÓ– JOÕ– J Oå– .Jö!Oï–€H!Oñ–€KJÇ4Oò– ]Jú4O —…hJ4O —€oJj 4O —€«J†J:O— »J 0@OÉ— ÎJ0@OË—!~”AOÍ—%ÝJVDOÑ— öJ0HO×—KHOÙ— K0QOè— KQOê— ,K.ROì— 0tO˜ yLB0xO˜ ŒLF0|O˜ °LJ0|O˜ ÅLN0O˜ ÓL0O˜ åLR0O˜ MV0O˜ MJ0‚O ˜ 9MZ0…O"˜ SMV0ˆO$˜ fMJ0‰O&˜ {M^0ŒO(˜ ­Mb0O*˜ çMf0ŽO,˜ ýMj0‘O.˜ !NV0’O0˜ 9NJ0“O2˜ QNV0–O4˜ iNJ0—O6˜ Nb0šO8˜ ˜Nf0›O:˜ °Nj0žO<˜ ÈNV0ŸO>˜ àNJ0 O@˜ øNn0£OB˜  O²¤OD˜ $OV0¥OF˜ 9OJ0¦OH˜ POr0©OJ˜ hOr0«OL˜ ‚On0­ON˜ œOV0®OP˜ ´OJ0¯OR˜ ÎOr0²OT˜ ãOr0´OV˜ úOV0¶OX˜ PJ0·OZ˜ (Pv0ºO\˜ 4Pz0»O^˜ @PV0¼O`˜ WP^0½Ob˜ pP~0¾Od˜ ‰P‚0ÂOf˜ ºP†0ÃOh˜ ÒPŠ0ÆOj˜ ìPŽ0ÉOl˜ Q0ÊOn˜ Q’0ÌOp˜ )Q–0ÏOr˜ 6Qš0ÒOt˜ CQ~0ÕOv˜ \Qž0×Ox˜ sQv ÜOz˜ ŒQ¢0àO|˜ ¥QŠ ãO~˜ ¾Q¦0çO€˜ ËQV0êO‚˜ äQ~0ëO„˜ ýQª0îO†˜ R®0îOˆ˜ .R®0ïOŠ˜ GR²0ðOŒ˜ [R¶0óOŽ˜ rRº0öO˜ ‰Rº0÷O’˜  Rž0øO”˜ ·R¾0ùO–˜ ÎRž0úO˜˜ åRŠ ûOš˜ üR¶0þOœ˜ SÂ0Pž˜%'SP ˜ @SŠ0P¢˜ WS‚0P¤˜ qS~0 P¦˜ ~SŠ0 P¨˜ —S~0 Pª˜ ¤S~0P¬˜ ±SŠ0P®˜ ÌSÆ0P°˜ ÙSV0P²˜ ôSJ0P´˜ TÊ0P¶˜ *TV0P¸˜ BTJ0Pº˜ \TÎ0P¼˜ rTÒ0P¾˜ †TÖ0PÀ˜ ™TÚ0P˜ ÄTÞ0PĘ…¾PƘ çT¢Pǘ óT†-Pɘ ÿTâ0 P˘€«J U!P͘€OU†J)PΘ ^UÊ9P¨™ nUæ0:Pª™ ~Uê0;P¬™ ŽUî01^Pš âV.0cPš%ðVB1ePš ùV1mPš  WÊmP!š WÖnP#š 0W1oP%š DWÆoP'š XWvpP)š%lWVqP+š €WvP1š •W.wP3š ªW" xP5š ¿W& yP7š ÓWF1zP9š çWJ1{P;š ûWN1|P=š X²|P?š $X}PAš 9X~PCš NX"PEš cXR1€PGš xXV1PIš X²‚PKš žXƒPMš ¯X„POš ÀXZ1…PQš ÑX^1†PSš âXƇPUš óXvˆPWš%YV‰PYš… YŽP_š…ŽPyš$(Y<¢‘Pyš$8Y<¢’P{š$@Y<¢“P}šMY”PšlY•PšƒY–Pƒš !ŸYå—P…š¥ ªY™P𥠶Y™P‘š ÁY™P‘š ÑY›P–š ÝYœP›š ìYžP š!ùY P¥š! Z¡P¯š ZÒ¤P¾š ,Z¥PÀš 9Zz1¬PÉš DZ¬PËš PZ°PÑš aZ´Páš oZ¶Pïš!~”¸Pýš!ZÕP"› Z–1ÚP(› ¤ZŠ0ÚP*› ºZš1ÜP,› ÅZš1ÜP.› ÔZž1ÜP0› èZž1ÝP2› þZ†0ÞP4› [†0áP6› "[†0äP8› 1[¢1çP:› G[¦1çP<› ^[ª1çP>› w[®1çP@› [†0çPB› ¢[v êPD› ¹[¢0ìPF› Ð[Š îPH› ç[ž0ðPJ› þ[Š0òPL› \õPN› &\²1õPV› ;\¶1öPX› Q\ÊøPZ› q\ÊøP\› “\ÊøP^› µ\²ùP`› ×\†0úPb› á\J0ýPd› ú\º1Qf› ]¾1Qh› ']Qj›… Q~›$;]£ Q~›$L]£Q€›Y]Q‚›y]Q„›!•]Q†›% ]Q¡› ®]²Q¤› Æ]Î1Q¦› ×]Ò1Q¨› ì]Ò1Qª› ^†0Q¬› ^†0Q®› 9^f0 Q°› P^Z0"Q²› i^Z0%Q´› €^†0(Q¶› ›^r0+Q¸› ±^r0-Qº› É^r0/Q¼› Ü^r01Q¾› ñ^v 3QÀ› _¢05Q› _Š 7QÄ› 4_ž09QÆ› K_Ö1;QÈ› b_Z0?QÊ› y_Š0BQÌ› _ž0DQΛ ¤_Z0FQЛ »_Š0IQÒ› Ñ_Ú1KQÔ› ò_Ú1MQÖ›  `Þ1OQØ› "`â1PQÚ› 5`Ê0QQÜ› D`Š0RQÞ› U`Š0TQà› f`Š0VQâ›%w`XQä›%`XQç› `Î XQê› –`ê1XQì› §`î1YQî› µ`ò1ZQð› Å`ö1[Qò› Õ`ú1\Qô› å`þ1]Qö›!õ`^Qø› aV/`Qœ aâaQœ aæbQœ ,aêcQ œ 9a 2dQ œ Xa 2dQ œ {a 2dQœ ˜a2dQœ ¶a2fQœ Òa2fQœ ëa2fQœ  b® iQœ!bkQœ…"brQ+œ…5brQ-œ =b&2rQIœ Zb²rQKœ mb*2zQMœ tb® {QOœ%‚b|QQœ ‹b.2|QTœ ¤b22}QVœ ·b62~QXœ Äb:2QZœ… ÙbQ\œ…‚Qlœ$ábD¤„Qlœ$ˆD¤„Qmœæb…Qoœ¦†Qpœ%úb‡Qrœ c2$‡Quœ #cn)‡Qwœ -cn)ˆQyœ 9cn)‹Q{œ Ecn)ŒQ}œ QcF2Qœ bcJ2ŽQœ ucN2ŽQƒœ †cR2”Q…œ –cV2”Q‡œ ¤cZ2”Q‰œ ´c^2”Q‹œ Äcb2”Qœ Úcf2Qœ ðcj2¤Q‘œ dn2¤Q“œ dr2¥Q•œ…=d¦Q—œ…LdÉQ˜œ€OU UÉQšœ€Zd†JÐQ›œ!idÑQ¬!ydÔQ° „dÖQÄ •dÊØQÎ  dÊØQÐ ­dÊØQÒ!ºdØQÔ… ÆdÚQå…ÚQó$ÓdФÝQó$ØdФßQö$ÜdФàQøádáQúõdâQýeãQÿ !eåäQž!*eæQ ž BeëQž…íQCž$Qeø¤RCž$`eø¤REž$peø¤RGž$}eø¤RIž$‰eø¤RKž$™eø¤RMž$¨eø¤ROž$³eø¤RQž$¾eø¤ RSž$Ìeø¤ RUž$Ûeø¤ RWž$õeø¤ RYž$fø¤ R[ž$&fø¤R]ž$=fø¤R_ž$Lfø¤Raž$[fø¤Rcž$gfø¤Rež$sfø¤Rgž€fRižžfRkž½fRmžÙfRožôfRqžgRsž1gRužKgRwžegRyž‚gR{ž gR}žÉgRžñg Ržh!Rƒž>h"R…ž\h#R‡žzh$R‰ž•h%R‹ž°h&Rž ÌhŽ2'Rž Øh’2(R‘ž æhŽ2)R“ž òh’2*R•ž i–2+R—ž  iš2+R™ž i–2,R›ž %iš2,Rž 2i–2-RŸž ?iš2-R¡ž Li–2.R£ž Yiš2.R¥ž fi–2/R§ž siš2/R©ž €i–20R«ž Žiš20R­ž œi–21R¯ž ªiš21R±ž ¸i–22R³ž Æiš22Rµž Ôi–23R·ž âiš23R¹ž ði–24R»ž þiš24R½ž  j–25R¿ž jš25RÁž (j–26RÞ 6jš26RÅž DjŽ27RÇž Rj’27RÉž `jŽ28RËž nj’28RÍž |jž29RÏž Šj¢29RÑž ˜j¦2:RÓž ¦jª2:RÕž ´j¦2;Rמ Âjª2;RÙž Ðj®2Rãž kÂ2@Råž $kÆ2@Rçž 2k¾2ARéž @kÂ2CRëž NkÆ2CRíž \kÊ2DRïž jkÆ2DRñž xkÊ2ERóž †kÆ2ERõž ”k¾2FR÷ž ¢kÆ2FRùž °k¾2GRûž ¾kÆ2GRýž ÌkÎ2HRÿž ÚkÒ2HRŸ èkÖ2IRŸ ökÒ2IRŸ lÖ2JRŸ lÒ2JR Ÿ  lÖ2KR Ÿ .lÒ2KR Ÿ oâ2hR{Ÿ MoÞ2iR}Ÿ \oâ2iRŸ koÞ2jRŸ zoâ2jRƒŸ ‰oæ2kR…Ÿ ˜oê2kR‡Ÿ §oî2lR‰Ÿ ¶oò2lR‹Ÿ Åoö2mRŸ Ôoú2mRŸ ãoþ2nR‘Ÿ òo3nR“Ÿ p3oR•Ÿ p 3oR—Ÿ p3pR™Ÿ .p 3pR›Ÿ =p3qRŸ Lp 3qRŸŸ [p3rR¡Ÿ jp 3rR£Ÿ yp3sR¥Ÿ ˆp 3sR§Ÿ —p3tR©Ÿ ¦p 3tR«Ÿ µp3uR­Ÿ Äp 3uR¯Ÿ Óp3vR±Ÿ âp 3vR³Ÿ ñp3wRµŸ q 3wR·Ÿ q3xR¹Ÿ q 3xR»Ÿ -q3yR½Ÿ 4†Sÿ¡ zB4‡S¢ *z 4ˆS¢ 3zÖ ‰S¢ >z® ‰S¢ IzÖ ŠS ¢ Tz 4ŠS ¢ izÖ ‹S ¢ ~z® ‹S¢ “zÖ ŒS¢%¨zv ŒS¢ ¾zF4•S¢%Òz† šS¢ ézJ4¢S!¢ þzN4¦S#¢ {R4¨S%¢ "{R4¨S'¢ 5{N4¨S)¢ H{N4ªS+¢ `{N4¬S-¢ ‡{V4®S/¢ ¬{n)°S1¢ ×{N4±S3¢ |Z4³S5¢  |^4´S7¢ |b4´S9¢ %|b4µS;¢ 1|Z4µS=¢ =|^4¶S?¢ I|b4¶SA¢ U|b4·SC¢ a|64·SE¢ q|:4¸SG¢ |>4¸SI¢ ‘|B4¹SK¢ ¡|f4ºSM¢ ¼|j4¼SO¢ ×|n4½SQ¢ ò|® ½SS¢  }r4¾SU¢ (}v4¾SW¢ A}z4ÁSY¢ f}~4ÁS[¢ }‚4ÂS]¢ ´}†4ÃS_¢ Û}Š4ÃSa¢ ~Ž4ÄSc¢ )~’4ÅSe¢ ?~–4ÆSg¢ U~® ÆSi¢ k~š4ÇSk¢%~ž4ÇSm¢ —~¢4ÏSs¢ «~’4ÒSu¢ Å~–4ÓSw¢ ß~® ÓSy¢ ù~š4ÔS{¢%z ÔS}¢ -¦4ÜSƒ¢ Eª4ßS…¢ `®4àS‡¢ {²4àS‰¢ –¶4áS‹¢ ±º4âS¢ ʾ4äS¢ çÂ4åS‘¢ €Æ4åS“¢ !€Ê4æS•¢ >€Î4çS—¢ Y€Ò4éS™¢ o€Ö4êS›¢ ‡€Ú4êS¢ Ÿ€Þ4ëSŸ¢ ·€â4ëS¡¢ ΀æ4ìS£¢ å€ê4ìS¥¢ ü€î4íS§¢ ò4íS©¢ (® ðS«¢ :® ñS­¢ G® ôS¯¢ R® öS±¢ ^® ÷S³¢ oö4ùSµ¢ ~ú4ùS·¢ ˆþ4ùS¹¢ •5ùS»¢ £5üS½¢ ± 5ýS¿¢ ¿5ýSÁ¢ Ó5þSâ ì5TÅ¢%‚TÇ¢ ‚5TÊ¢ !‚5TÌ¢ 3‚5T΢ I‚ò4TТ `‚Ò TÒ¢%‚TÔ¢ ¢‚"5TÚ¢%Á‚&5TÜ¢ ä‚*5,T⢠ƒ.5.Tä¢ #ƒ25/Tæ¢ /ƒÊ0Tè¢ Hƒ650Tê¢ cƒ:51Tì¢%~ƒ>52Tî¢ ’ƒB5=Tô¢  ƒF5ATö¢ ·ƒJ5ATø¢ ǃN5BTú¢ ÔƒÆDTü¢ ÞƒDTþ¢ êƒET£ öƒæ3FT£ „ 4GT£ „Ò4HT£ „‚4IT£ &„R5JT £ 2„4KT £ >„64LT£ J„ 4MT£ W„V5NT£ d„Z5OT£ q„^5PT£ ~„b5QT£ ‹„f5RT£ ˜„j5ST£ ¥„n5TT£ ²„r5UT £ ¿„v5VT"£ Ì„z5WT$£ Ù„~5XT&£ æ„‚5YT(£ ó„†5ZT*£ …Š5[T,£  …Ž5\T.£ …’5]T0£%'…–5^T2£ B…š5dT8£ ]…¶fT:£ u…¶hT<£ …ž5kT>£ ¨…¶kT@£ ¼…¶lTB£…Ý…mTD£€Zd UmTT£€ë…j ˜TU£ †¢5˜TX£  †¢5šTZ£%†¦5œT\£ †ª5¨Tb£ )†®5¨Td£ 3†²5©Tf£ @†¶5ªTh£ K†º5«Tj£ V†¢5¬Tl£ c†¾5¬Tn£ p†¾5¬Tp£%}†¬Tr£ Œ†Â5¬Tu£ ¤†¾5¬Tw£ º†Æ5­Ty£€Ò†ü­T{£ Ú†­T£ 熭T£ Tƒ£ ü†Ê5¯T…£€‡j ¯T‡£ ‡ƯT‡£%'‡V°T‰£ 3‡†-µT£%9‡B·T‘£ G‡†-¾T—£€R‡ü¾T™£ ^‡¾TÑ£ k‡ÀTÜ£ y‡ÁTç£ ˆ‡ÁTï£ –‡ÃTû£ œ‡ÅT¤ ª‡ÇT¤ ¾‡ÊT¤ ͇ËT(¤ ؇ÍT3¤ å‡ÏT>¤ þ‡ÐTH¤ ˆÑTR¤ 2ˆÓT]¤ QˆÕTh¤¥ iˆØTt¤ pˆ¢ØTu¤%ˆˆØTw¤ žˆØTy¤…äT›¤!©ˆïT›¤ µˆÆñT¨¤ Ȉ~òTª¤… R‡óT¬¤%Ùˆ´¬ôT³¤%ñˆ´¬ôT·¤ ‰ôT»¤% ‰öTĤ%D‰´¬÷TƤ%W‰ùTʤ%{‰´¬ûT̤… ‹‰ûTФ…ûTפ$‰Ú5ýTפ$¦‰Ú5ÿTÚ¤²‰UݤʉUठ剾5U㤠ø‰jUå¤ ŠjUç¤ ŠÞ5Ué¤ Š Uë¤ /Šj Uò¤ ;Šj Uô¤ IŠâ5Uö¤ RŠªUø¤ cŠbUú¤ uŠæ5Uü¤……ŠUþ¤…›ŠU¥€R‡ U¥±Šü)U ¥ !·Šå=U+¥ »Š>U4¥ ÊŠÊ@U7¥ ÚŠÊ@U9¥ !ìŠå@U;¥ òІAUP¥ ‹ê5BUR¥ ‹î5CUT¥ ‹ò5DUV¥ .‹ö5EUX¥ =‹ú5FUZ¥ L‹GU\¥ `‹.HU^¥ t‹" IU`¥ ˆ‹& JUb¥ š‹þ5KUd¥ §‹6KUf¥ ¶‹²KUh¥ Æ‹LUj¥ Ô‹6MUl¥ æ‹ 6NUn¥ ø‹6OUp¥  Œ6PUr¥ Œ6QUt¥ ,Œ6RUv¥ >Œ6RUx¥ PŒ²RUz¥ aŒSU|¥ pŒ6TU~¥ ƒŒ6UU€¥ –Œ"6VU‚¥ ©Œ&6WU„¥ ¼Œ*6XU†¥ ÍŒ.6YUˆ¥ àŒ.6YUŠ¥ óŒYUŒ¥ .ZUŽ¥ Æ[U¥ )~\U’¥ =‚]U”¥‚±Š^U–¥‚Q^U—¥€±Š^U™¥€UüiUš¥!YiUÀ¥ elUÍ¥ m:6oUÐ¥ w>6pUÒ¥ B6qUÔ¥ F6qUÖ¥ ™J6rUØ¥ ¥N6sUÚ¥ ±uUÜ¥ ½vUÞ¥ ÉR6xUà¥!ÛzU⥅ã{Uí¥…Ž{Uñ¥… Ž{Uô¥…{Uþ¥$Ž^6~Uþ¥$$Ž^6U¦$3Ž^6€U¦AŽU¦XŽ‚U¦vŽƒU¦ “Žb6„U ¦!¹Ž…U ¦%ËŽˆU¦%ÝŽŠU¦ ïŽf6ŒU¦ )j6U¦ Fn6ŽU¦ \ÖŽU¦…pU¦…¾U¦…ŸU ¦ ur6U"¦…U$¦ U%¦…˜‘U'¦  F‘U4¦ µv6’U6¦ “U8¦ Ñv6•U:¦ ä–U<¦ õF˜U>¦…™U@¦… ™UB¦…™UK¦…™UO¦ %z6™UQ¦…0™US¦ >N™UT¦…J™UV¦%O™UW¦…Jo›UY¦…=o›UZ¦… o›U[¦…Z›U\¦…c›U_¦€U›Ug¦€h§¡Uh¦ !xå¡U#¨ !‚å¢U.¨ !’å£U8¨ !¡å¤UB¨ !·å¥UL¨ !Êå¦UV¨ !Ýå§U`¨ !ðå¨Uj¨ !‘å©Ut¨ !‘åªU~¨ !%‘å«Uˆ¨ !7‘å¬U’¨ !N‘å­Uœ¨ !a‘å®U¦¨ t‘ò6¯U°¨%†‘¯U²¨ š‘ú6¯Uµ¨ ®‘þ6°U·¨%À‘°U¹¨ בú6°U¼¨ î‘þ6±U¾¨ ’7±UÀ¨ ’7±U¨ 0’ 7±UĨ G’7±Uƨ \’7±UȨ v’7±Uʨ Ž’7±Ų ¦’7±UΨ Ã’"7±UШ…Þ’±UÒ¨€hé’±U©€6“§!V© A“&7«V©%M“«V© T“*7«V© g“¶5¬V© u“.7®V© ˆ“27®V© ›“67®V© ®“:7®V© Á“>7®V!© Ô“B7®V#© ç“F7®V%© ú“J7®V'©  ”F7®V)© !”N7®V+© 5”R7®V-© I”V7®V/©€6“é’®V1©€Z”§´V2©… f”½VV©…¾Vf©$f”¯ÀVf©$m”¯ÁVh©w”ÁVi©”ÂVk© ¦”ÃVl© ”b7ÄVq© ×”b7ÅVs© ŒÇVu©…öVû©$õ”´¯7Wû©$•´¯8Wý©$•´¯9Wÿ©$•´¯:Wª$$•´¯;Wª$0•´¯W ª$Z•´¯?W ª$d•´¯@W ª$q•´¯AWª$|•´¯BWª$‰•´¯CWª$‘•´¯DWª$š•´¯EWª$¨•´¯FWª$°•´¯GWª$¼•´¯HWª$Ε´¯IWªØ•JW!ªô•KW#ª–LW%ª-–MW'ªC–NW)ª^–OW+ª}–PW-ª›–QW/ªµ–RW1ªΖSW3ªê–TW5ª—UW7ª —VW9ª7—WW;ªO—XW=ªl—YW?ªƒ—ZWAªž—[WCª¿—\WEª “]WGª…¡WÙª ˜“äWÙª…X%« Ø—Â,%X%« ï—Â,%X'« ˜Â,%X)« !˜Â,%X+« :˜Â,%X-« S˜Â,%X/« l˜Â,%X1« …˜Â,%X3« ž˜Â,%X5« ·˜Â,%X7« ИÂ,%X9« ê˜Â,%X;« ™Â,%X=« ™Â,%X?« 8™Â,%XA« R™Â,%XC« l™Â,%XE« †™Â,%XG«  ™Â,%XI« º™Â,%XK« Ô™Â,%XM« î™Â,%XO« šÂ,%XQ« "šv7%XS« <šz7&XU« VšÂ,'XW« pšÂ,'XY« ŠšÂ,'X[« ¤š~7'X]« ¾šÂ,(X_« ØšÂ,(Xa« òšÂ,(Xc«  ›Â,(Xe« &›Â,(Xg« A›Â,(Xi« \›Â,(Xk« w›Â,(Xm« ’›Â,(Xo« ­›Â,(Xq« È›‚7(Xs« â›Â,+Xu« ý›Â,+Xw« œ†7+Xy« 2œÂ,+X{« MœÂ,+X}« hœÂ,+X« ƒœÂ,+X« žœÂ,+Xƒ« ¹œÂ,+X…« ÔœÂ,+X‡« ïœÂ,+X‰«  Â,+X‹« %Â,+X« @Â,+X« [†7+X‘« uÂ,+X“« †7+X•« ªÂ,+X—« ņ7+X™« ßÂ,+X›« úŠ7+X« žÂ,+XŸ« /žŠ7+X¡« IžÂ,,X£« džŠ7,X¥« ~žÂ,,X§« ™žŠ7,X©« ³žÂ,,X«« ΞÂ,,X­« éžÂ,,X¯« ŸÂ,,X±« ŸÂ,,X³« :ŸÂ,,Xµ« UŸÂ,,X·« pŸÂ,,X¹« ‹ŸÂ,,X»« ¦ŸÂ,,X½« ÁŸÂ,,X¿« ÜŸÂ,,XÁ« ÷ŸÂ,,Xë  Â,,XÅ« - Â,,XÇ« H Â,,XÉ« c Â,,XË« ~ Â,,XÍ« ™ Â,,XÏ« ´ Â,,XÑ« Ï Â,,XÓ« ê Â,,XÕ« ¡Â,,X׫  ¡Â,,XÙ« ;¡Â,,XÛ« V¡Â,,XÝ« q¡Â,,Xß« Œ¡Â,,Xá« §¡Â,,Xã« ¡Â,,Xå« Ý¡Â,,Xç« ø¡Â,,Xé« ¢Â,,Xë« .¢Â,,Xí« J¢Â,,Xï« f¢Â,,Xñ« ‚¢Â,,Xó« ž¢Ž7,Xõ« ¹¢Â,,X÷« Õ¢Â,,Xù« ñ¢’7,Xû«  £Â,,Xý« (£’7,Xÿ« C£Ž7-X¬ ^£Â,.X¬ z£–7.X¬ †£š7.X¬ ”£ž7.X ¬€Z”é’.X ¬€¢£§8X ¬ ª£8XR¬…;Xb¬ µ£=Xb¬ Ç£DXs¬ Ü£NXŒ¬ é£TX›¬ ú£WX¦¬ ¤]Xµ¬ 2¤_X¾¬ L¤cXɬ \¤lXÞ¬ j¤ª7rXä¬ €¤ÆrXæ¬ ’¤~sXè¬ ¢¤®7tXê¬ ¯¤²7uXì¬ ¾¤ÊwX0Ö¤wXð¬¥0é¤wXò¬¥0ù¤wXó¬¥0¥wXô¬ !#¥åwXö¬¥07¥X­!L¥X"­!V¥€X)­!h¥X0­!l¥†X>­!v¥‡XE­!‚¥ˆXL­!Œ¥‰XS­!¨UŠXZ­!ÄU‹Xa­¥0˜¥‘Xm­¥0¥¥‘Xr­¥0´¥‘X‹­€¢£é’‘X’­€Ä¥†J”X“­ !Ë¥å”XÝ­ Ö¥æ7—Xã­ ô¥ê7™Xå­ ü¥æ7›Xç­ ¦ê7œXé­ *¦î7Xë­ <¦î7žXí­ P¦î7ŸXï­ t¦î7¡Xñ­ •¦ò7£Xó­ §¦ö7¤Xõ­ ¿¦ò7¥X÷­ ɦú7¦Xù­ צþ7§Xû­ è¦8©Xý­ ù¦þ7«Xÿ­  §8­X®  §þ7®X® 3§þ7°X® E§ 8²X® _§8³X ® ‘§8´X ® ²§8µX ® Õ§þ7·X® ø§8¹X®  ¨Ž»X® ,¨ö7¾X® >¨8¿X® O¨8ÀX® b¨þ7ÁX® u¨8ÃX® †¨8ÄX® ™¨þ7ÅX!® ¬¨"8ÇX#® ¾¨&8ÉX%® Ш8ËX'® ý¨*8ÌX)® ,©þ7ÍX+® [©Š/ÏX-® ‰©þ7ÔX/® ž©Ž/ÖX1® ©©þ7ÛX3® ß©.8ÝX5® ª^/ßX7® &ª28âX9® 5ª28èX;® Dª68îX=® Sª:8ñX?® `ª>8ôXA® kªB8øXC® ŠªF8øXE® °ªJ8ùXG® ʪJ8úXI® êªN8ûXK® ÷ªR8üXM® «f ýXO® «V8ÿXQ® «Z8YS® )«î7YU® 1«^8YW® W«†YY®€Ä¥ UY[®€~«†J Y\®€~« U Y\®€Œ«§ Y\® ›«b8 Yk® ª«f8 Ym® ·«f8 Yo® Ä«f8 Yq® Ö«j8 Ys® è«f8 Yu® ú«f8 Yw®  ¬n8 Yy® ¬ž2 Y{® .¬r8 Y}® >¬¦2 Y® P¬¦2 Y® b¬v8 Yƒ® r¬Þ2 Y…® ‰¬z8 Y‡® ž¬~8 Y‰® ±¬~8 Y‹® Ĭ‚8 Y® Õ¬Ö2 Y® 쬆8 Y‘® ­æ2 Y“® ­Š8 Y•® %­ö2 Y—® 7­Ž8 Y™® G­3 Y›® X­3 Y® i­3 YŸ® z­3 Y¡® ‹­3 Y£® œ­3 Y¥® ­­3 Y§® ¾­3 Y©® Ï­3 Y«® à­’8 Y­® ï­–8 Y¯® ®–8 Y±® ®–8 Y³® +®–8 Yµ® ?®š8 Y·® Q®3 Y¹® g®3 Y»® }®3 Y½® “®3 Y¿® ©®3 YÁ® ¿®3 Yî Õ®3 YÅ® ë®’8 YÇ®€Œ«é’ YÉ®€«[N@YÊ®!ÿ®Yà®! ¯Yå® !¯Yî®…$Y¯ 4¯(Y¯ @¯,Y ¯… M¯.Y¯….Y"¯$_¯¬´1Y"¯$n¯¬´3Y%¯$}¯¬´5Y(¯Œ¯6Y*¯ª¯7Y-¯ȯ8Y0¯… æ¯9Y2¯…9YC¯$õ¯Ì´YF¯$ °Ì´@YI¯°AYK¯-°BYN¯E°CYQ¯!^°DYS¯ p°GY_¯ ~°JYf¯… °MYu¯…NYН$–°ø´WYН$ °ø´[Y¯$ª°ø´^Y“¯$¶°ø´cY™¯$°ø´fY¯$̰ø´iY¡¯$ذø´mY¦¯$å°ø´oY©¯$ð°ø´qY¬¯ü°sY¯¯±tY´¯.±uY¸¯I±vY¾¯d±wY¯}±xYƯ˜±yY˯´±zYία{Yѯ é±â(|YÔ¯ ü±¶8}YÖ¯  ²º8}Yد  ²¾8~YÚ¯ *²Â8~Yܯ 4²Æ8~YÞ¯ >²Ê8~Yà¯!Ì•~Yâ¯!H²‚Y篅 U²ŠY𯅊Y÷¯$d²lµŒY÷¯$é3lµYù¯l²ŽYû¯4Yý¯€«[)EYÿ¯€ƒ²†J™Y° †²&¡Y² ‘²£Y ²%§²¦Y² ¯²¾5¦Y² »²Î8¨Y² DzF"©Y² ϲF"ªY²… Ú²«Y²…«Y/²$Ú²¨µ­Y/²$䲨µ®Y1²ó²¯Y3² ³°Y5²!*³±Y7²!:³·YF²!H³¹YT²… T³¼Yd²…½Y}²$_³̵ÀY}²$´=̵ÀY~²$¥}̵ÁY€²f³ÂY‚² >ÃYƒ²|³ÄY…² ”³ÅY‡² ¡³ÆY—² µ³ÈYš²…ÏY²² ųÕY²²…ÙYIJ Ö³ÜYIJ ä³ÞYÙ² ù³áYݲ…äYí²!´æYí²! ´ëY³ ´íY³…ïY?³$l'¶øY?³$[¶úYB³$´¶ûYD³$$´¶üYF³$(´¶ýYH³$.´¶þYJ³$Ï[¶ÿYL³$>´¶ZN³6(ZR³\ZU³G´ZW³\´ZY³o´Z[³„´Z]³Õ] Z_³£´ Za³ »´ Ze³!Ì´ Zm³ ß´29Zy³!ú´Z{³!µZ”³!µZ¡³!µZ·³ *µZdz…!ZÙ³!5µ$ZÙ³!Fµ(Zë³ Uµ-Z´ dµ..Z´ sµ" /Z´ ‚µ& 0Z´ µ1Z´…3Z6´$‡W ¶DZ6´$ o ¶EZ8´$to ¶FZ:´$%o ¶GZ<´$0o ¶HZ>´$=o ¶IZ@´$Jo ¶JZB´$+o ¶KZD´$6o ¶LZF´$Co ¶MZH´$Po ¶NZJ´$fo ¶OZL´$mo ¶PZN´$q ¶QZP´$œµ ¶RZR´$l' ¶SZT´¬pUZW´oVZY´˜pWZ[´•oXZ]´¾oYZ_´éoZZa´p[Zc´ªo\Ze´Óo]Zg´þo^Zi´)p_Zk´lp`Zm´‚paZo´¤µbZq´¸µcZs´6(dZu´!ϵeZx´… ÛµgZƒ´…gZ‹´$èµ,·iZ‹´$øµ,·jZ´¶kZ´#¶lZ‘´ >¶mZ“´…|Z»´… J¶ŠZ»´…ŠZÌ´$´L·ZÌ´$R¶L·ŽZδ$_[L·Zд[¶ZÒ´q¶‘ZÔ´Ï\’ZÖ´… ‰¶“ZØ´…”Zë´$‘¶l·˜Zë´$”¶l·™Zí´$—¶l·šZï´$š¶l·›Zñ´¶œZ󴯶Zõ´Á¶žZ÷´Ó¶ŸZù´ å¶ Zû´…£Z µ ð¶¥Z µ…ªZµ ü¶®Zµ…±Z/µ  ·³Z/µ…¶Z?µ ·¸Z?µ…ÅZcµ &·ÑZcµ…ûZ.¶$.·¼·\[.¶$6·¼·][0¶$B·¼·^[2¶$Q·¼·_[4¶$X·¼·a[7¶$`·¼·b[9¶$i·¼·c[;¶$q·¼·f[?¶$y·¼·g[A¶$‚·¼·h[C¶$Š·¼·i[E¶$’·¼·l[I¶$š·¼·m[K¶$Ÿ·¼·n[M¶$¥·¼·o[O¶$­·¼·r[S¶$¶·¼·s[U¶$½·¼·v[Y¶$È·¼·y[]¶$Ù·¼·}[b¶$á·¼·€[f¶$é·¼·[h¶$ò·¼·ƒ[k¶$ú·¼·„[m¶$¸¼·†[p¶$ ¸¼·‰[t¶$¸¼·Š[v¶$¸¼·‹[x¶$'¸¼·[{¶$/¸¼·[¶$7¸¼·‘[¶$@¸¼·’[ƒ¶$L¸¼·“[…¶$V¸¼·”[‡¶$b¸¼·•[‰¶$j¸¼·–[‹¶$t¸¼·—[¶$|¸¼·š[‘¶$„¸¼·[•¶$Џ¼·ž[—¶$’¸¼·Ÿ[™¶$ž¸¼· [›¶$§¸¼·¡[¶$°¸¼·¢[Ÿ¶$¹¸¼·£[¡¶$ø¼·§[¦¶$и¼·©[©¶$ݸ¼·«[¬¶$渼·­[¯¶$ñ¸¼·®[±¶$ý¸¼·¯[³¶$¹¼·°[µ¶$¹¼·²[¸¶$¹¼·´[»¶$$¹¼·µ[½¶$3¹¼··[À¶;¹¸[¶R¹¹[Ķm¹º[ƶ‹¹»[ȶ¡¹¼[˶¸¹½[Ͷй¾[϶繿[Ó¶þ¹À[Õ¶ºÁ[×¶-ºÂ[Ù¶DºÃ[ݶ[ºÄ[ß¶oºÅ[á¶„ºÆ[ã¶›ºÇ[ç¶³ºÈ[é¶ɺÉ[í¶ãºÊ[ñ¶»Ë[ö¶»Ì[ú¶1»Í[ü¶I»Î[ÿ¶`»Ï[·x»Ð[·»Ñ[·¨»Ò[ ·À»Ó[ ·Ø»Ô[·ï»Õ[·¼Ö[·¼×[·9¼Ø[·R¼Ù[·m¼Ú[·„¼Û[·¼Ü[!·´¼Ý[%·˼Þ[)·à¼ß[+·÷¼à[-·½á[/·*½â[1·B½ã[3·Z½ä[5·s½å[:·½æ[=·«½ç[@·ýè[C·ݽé[E·ø½ê[G·¾ë[I·)¾ì[L·B¾í[O·[¾î[Q·y¾ï[T· ¾ð[V·!¢¾ñ[`·!»¾ö[f· ѾÆ9ú[k· Ù¾Ê9ú[m· ã¾Î9ú[o· í¾Ò9ú[q· ¿Ö9û[s· 9¿Ê9ü[u· `¿Ú9ý[w·!‡¿þ[y·!–¿\„· £¿ê9\Ž·… ¸¿\·…\ ·$–¿¸¹\ ·$¿¿¸¹ \¢·$Ê¿¸¹ \¥·$Ø¿¸¹ \¨·á¿\«·ý¿\­·À\°·4À\³·… LÀ\¶·…\Ä·$]Àà¹\Ä·$hÀà¹\Æ·$uÀà¹\È·†À\Ê· À\Ì·¼À\η… ÜÀ\з…\Ü·$êÀº\Ü·$õÀº\Þ·Á \à·Á!\â·!4Á"\ä·!<Á$\ç· IÁ*\î·…2\¸ XÁ9\¸…;\0¸$‡W(ºI\0¸$ o(ºJ\2¸$to(ºK\4¸$dÁ(ºL\6¸$0o(ºM\8¸$=o(ºN\:¸$Jo(ºO\<¸$iÁ(ºP\>¸$6o(ºQ\@¸$Co(ºR\B¸$Po(ºS\D¸$fo(ºT\F¸$mo(ºU\H¸¬pV\J¸oW\L¸˜pX\N¸oÁY\P¸¾oZ\R¸éo[\T¸p\\V¸ƒÁ]\X¸Óo^\Z¸þo_\\¸)p`\^¸lpa\`¸‚pb\b¸ ˜Ác\d¸…„\º¸$¥Á˜º©\º¸$¬Á˜º­\¿¸$»Á˜º®\Á¸$l'˜º¯\ø$ÆÁ˜º±\ƸÐÁ³\ɸæÁ´\θµ\и6(¶\Ҹ·\Õ¸ 7¸\ظ…â\<¹$l'Ⱥ]<¹$±[Ⱥ]>¹$(´Ⱥ]@¹6(]B¹GÂ]D¹o´]F¹ ]Â]H¹…']x¹ nÂ9]x¹… {Â;]†¹…;]“¹$‰Âôº=]“¹$—Âôº>]•¹©Â?]—¹ÆÂ@]™¹ çÂA]›¹…E]­¹ úÂH]­¹…L]¿¹ ÃO]¿¹…V]×¹ 0Ã\]×¹…a]ë¹!DÃe]ë¹!RÃm]ô¹!^Ãu]ý¹ gÃx]º!wÃz]º ‹Ã~]º…ƒ]4º$–Ã@»ˆ]4ºžÃ‰]6º µÃŠ]8º…]Dº$ƒ²P»‘]Dº$ÀÃP»’]FºÈÓ]HºÚÔ]Jº ñÕ]Lº Ä–]Wº…š]iº Är:]iº )Är:]kº BÄ]mº…¡]º!TĤ]º!jÄ«]ˆº vÄÃ]³º ƒÄ† Ä]½º!›ÄÅ]¿º ¦ÄÎ]ɺ!²ÄÏ]к ÀÄÙ]Ûº!ÏÄÚ]⺠ÚÄç]ðº!æÄè]üº öÄê]» Å’:ë]»… Åë]»…ì]&»$'Ÿ»ï]&»$r¸»ï]'»$-Ÿ»ð])»6Åñ]+»urò],»KÅó].»!cÅô]0» wÅö];»…ù]K» ‚Åû]K»…ÿ]]»… ›Å^]»…^o»$«Åì»^o»$³Åì»^p»$¼Åì»^q»ÃÅ^s»ÚÅ ^t»òÅ ^u» Æ ^w»…^Œ»$Æ ¼^Œ»Æ^Ž» 1Æ^»!FÆ^š»!gÆ^œ» qÆ2^¹»%|Æ’4^É»!¸Æ:^Ï» ÍÆ>^Ô»!ãÆ?^ß» ýÆE^æ» ÇÖ:F^ñ» ,ÇÚ:F^ó» >ÇF^õ»…I^¼… OÇK^¼…K^¼$ –P¼N^¼$bÇP¼O^¼$¥}P¼Q^¼„–R^¼gÇS^¼|³T^¼!{ÇU^¼ †ÇY^!¼ ’ÇZ^,¼…`^B¼!¦Çe^B¼!¹Çr^P¼ Ådž^g¼ ÞÇú:‡^t¼ èÇþ:‡^v¼ ôÇ;‡^x¼ È;‡^z¼ È ;ˆ^|¼ .È ;‰^~¼ HÈ;Š^€¼ ^È;Š^‚¼ vÈ;Š^„¼ ‹È;Š^†¼ ŸÈæ7Š^ˆ¼ ±È;Š^м ÑÈÊ5Š^Œ¼ äÈ‹^޼ ûÈ‹^¼ Éæ7‹^’¼ É;‹^”¼ 5É;‹^–¼ NÉ";‹^˜¼ lÉ";‹^š¼ ‡ÉÎ ‹^œ¼%¤É‹^ž¼ ®É&;‹^¡¼ ÉÉ*;Œ^£¼ ÛÉ.;^¥¼ íÉ2;^§¼ ýÉ6;^©¼ Ê:;^«¼ %Ê>;^­¼ 6ÊB;‘^¯¼ GÊB;‘^±¼ ^ÊF;‘^³¼ sÊJ;’^µ¼ Ê>;’^·¼!¥Ê“^¹¼%¯ÊŽ Þ^ ½%»ÊŽ â^½%ÇÊŽ æ^½%ÓÊŽ ê^½ ßÊî7î^!½ óÊî7ï^#½  Ëî7ñ^%½ #ËN;ó^'½ >Ëæ7ó^)½ Yˆ ô^+½ zËŽô^-½ ˜Ëõ^/½ ªËR;÷^2½ ¾ËV;÷^4½ ÒËZ;÷^6½ êË^;÷^8½ Ì^;÷^:½ Ìb;÷^<½ 9Ìf;ø^>½ VÌf;ø^@½ yÌj;ø^B½ šÌn;ù^D½ ¯Ìn;ù^F½ ÊÌr;ù^H½ ãÌv;ú^J½ Íz;ú^L½ +Í~;û^N½ >Írû^P½… hÍû^R½…ü^e½$z͈½_e½$‚͈½_g½$ˆÍˆ½_i½$”͈½_l½žÍ_o½µÍ_q½ÊÍ_s½åÍ _v½!þÍ _y½!Î _„½… Î_½…_ž½$%θ½_ž½$)θ½_ ½/Î_¢½BÎ_¤½ W΢;_¦½ fÎ_¨½ †Î¦;_°½ £Îª;_²½ ¾Î®;_´½%ÛÎ_¶½%èÎ_¹½ õβ;_¼½ Ï® _¾½ ϶;_À½ &Ï® !_½ 9Ï"_Ľ WϺ;#_Û½ qϾ;%_ݽ ŒÏº;'_ß½ §Ïº;)_á½ ÂϾ;+_ã½ ÞϾ;-_å½ úϺ;/_ç½ Ð¾;1_é½ ;к;3_ë½ \о;5_í½ ÐÖ 7_ï½ ”ÐV/8_ñ½ §ÐV/9_ó½ »ÐÂ;:_õ½ ÎÐÆ;;_÷½ ãÐÊ;<_ù½ ùÐÎ;=_û½ ÑÒ;=_ý½ #Ñæ7=_ÿ½ 6ÑÒ;=_¾ IÑÖ;=_¾ YÑÚ;>_¾ gÑæ7>_¾ uѾ;>_ ¾ ÑÞ;>_ ¾ «Ñâ;C_ ¾ ÇÑæ;F_¾ ÚÑê;F_¾ èÑÖ;F_¾ ùÑî;H_¾ Òò;H_¾ Òò;H_¾  Ò¾;H_¾ <Ò¾;H_¾ XÒÒ;H_¾ hÒæ7H_!¾ xÒö;H_#¾ ˆÒú;I_%¾ œÒþ;P_'¾ ®ÒØÞ1ò_ò¾ ZØÊ0ó_ô¾ qØ^<ô_ö¾ „Øb<õ_ø¾ —Øf<õ_ú¾ ¬Øj<õ_ü¾ ÆØ† õ_þ¾!ÞØö_¿!騸_¿…÷Øú_¿…Ùú_¿…Ùú_,¿ Ùú_9¿!Ùû_F¿€ƒ² Uþ_T¿€&Ùü&`U¿ 6Ù&`g¿ HÙ&`o¿…-`‰¿$ÂØ¿4`‰¿UÙ5`‹¿ ß6`¿…:`Ÿ¿!iÙ=`Ÿ¿!vÙC`¯¿ ˆÙÆJ`¿¿ ¥ÙÆK`Á¿ ËÙ~L`ÿ… ïÙM`Å¿…M`Ö¿$üÙÀP`Ö¿$ÚÀQ`Ø¿$"ÚÀS`Û¿6ÚU`Þ¿YÚV`à¿zÚW`ã¿ ÚÊX`æ¿%®Ú[`è¿ àÚö``ò¿ øÚ¶<``ô¿%Ûº<``ö¿ !ÛÆg`ü¿ 3Û~h`þ¿ EÛ‚i`À W۾ݢ`¡Àpݧ¤`¢À‚ ‚G¤`±À‚¤`½À$–Gê<¦`½À$‘ê<§`¿ÀG¨`ÁÀ³G©`ÃÀ‚ xݪ`ÅÀ‚ª`ÌÀ$…Ýî<¬`ÌÀ$ŠÝî<­`ÎÀ•Ý®`ÐÀ©Ý¯`ÒÀ Ãݰ`ÔÀ ÕÝò<°`ÝÀ áݱ`ßÀ%øÝ³`âÀ Þ³`åÀ Þ¶`çÀ *Þ¶`ïÀ!AÞ¹`óÀ SÞ¼`ÿÀ _Þ¼`Á lÞö<¿`Á wÞÀ`Á ‰Þú<Ã`Á‚”ÞÄ` Á‚ ™ÞÄ`#Á%¤ÞHÁÄ`1Á‚´ÞÄ`=Á ÃÞþ<Ä`CÁ ×Þ=Å`EÁ ãÞr6Å`GÁ‚ðÞÅ`IÁ ß=Å`SÁ ß =Æ`UÁ #ß =Æ`WÁ @ß=Æ`YÁ Pß=Ç`[Á Zß=È`]Á eß=È`_Á rß=È`aÁ ß"=È`cÁ‚È`eÁ Œß&=È`ƒÁ –ß*=È`…Á ¡ß*=É`‡Á ¬ß.=Ê`‰Á ¼ß2=Ë`‹Á Æß6=Ë`Á Øß:=Ì`Á äß>=Ì`‘Á îßB=Í`“Á%úßF=Í`•Á àJ=Ô`›Á àN=×`Á àR=Ø`ŸÁ +àV=Ù`¡Á =à2=Ú`£Á MàZ=Û`¥Á [à^=Ü`§Á càb=Ý`©Á làf=Þ`«Á zàf=ß`­Á Šàj=à`¯Á œàn=á`±Á‚¯àâ`³Á%¶àâ`´Á ¾à†-â`·Á‚Êàä`¹Á Ûà*ä`ÅÁ ãà¾å`ÇÁ íàò<å`ÉÁ ùàò<é`ËÁ  áò<í`ÍÁ ár=ï`ÏÁ  áv=ñ`ÑÁ +áz=ò`ÓÁ 5áò<ó`ÕÁ ?á~=ô`×Á Ná~=õ`ÙÁ‚Záö`ÛÁ‚cáö`áÁ‚˜ö`âÁ‚Á)ö`ãÁ‚gáö`äÁ%uáö`èÁ ‚á‚=ö`ëÁ%‹á÷`íÁ ‘á¾5÷`ðÁ‚žáø`òÁ%©áø`óÁ ²á†=ø`öÁ‚‡Wù`øÁ‚Ÿù`  ¿á:ù`D ÑáŠ=ú`F ÚáŽ=ú`HÂ%åáú`J ñáV/û`L ûá–=ü`N  â=ý`P â=þ`R -âš=ÿ`T @âž=aV Uâú(aX gâ¢=aZ yâ¦=a\ ‰âa^ âú(a`‚¯âab‚hJac‚l'agÂ%¼âat Æâ av‚Òâ axÂ%Øâ a{Â%ãâ a}€pÝé’ a€îâÇa€Â€ýâj a¡Â€ãaa¡Â ã²=aÁ !ã¶=aà-ãaÅÂ%;ãaË€bãaaÑ pãaú {ã¾=aü Œã¾=aþ ãaÃ%«ãaà µã¾5 a ÀÅãj "aà ØãÆ="aÀúãj #aà ä†=#aÃ%äÊ"$aÃ%GäÊ")aà äÊ=.aÀ³äÇ0a Ã%ÅäÊ"0afÃ%ÏäÊ"6alÃ%×äÊ"¹aAÄ 'ç>¾aCÄ >ç >¿aEÄ Uç>ÀaGÄ lç>ÁaIÄ ƒç >ÂaKÄ šç>ÃaMÄ ±ç>ÄaOÄ Èç>ÅaQÄ Óç>ÊaSÄ äç>ÏaUÄ ðç>ÒaWÄ ÿçî)ØaYÄ è>áa[Ä è">ãa]Ä -è&>äa_Ä Eè*>åaaÄ ]è>æacÄ uè >çaeÄ è>èagÄ ¥è>éaiÄ ½è.>ìakÄ ÉèR0íamÄ Öè.>íaoÄ%äèîaqÄ ûè2>îasÄ é>õauÄ é >öawÄ  é>÷ayÄ ,é6>øa{Ä 8é:>ûa}Ä FéüaÄ Yé>>üaÄ lé>>ýaƒÄ é>>þa…Ä€•é¯ÿa‡Ä ¢éÿaŽÄ…bžÄ$«é\ÄbžÄ$µé\Äb Ä$Âé\Ä b£Ä$Íé\Ä b¥Ä$Õé\Ä b§Äàé b©Äùéb«Äêb®Ä/êb°ÄFêb²Ä nåb´Ä…bÆÄ$KÂŒÄbÆÄ$`êŒÄbÈÄ$uêŒÄbÊÄ$êŒÄbÌÄ$’êŒÄ bÏÄ$¡êŒÄ"bÒÄÍÂ#bÔÄ­ê$bÖÄÑê%bØÄìê&bÚÄ ë'bÝÄ*ë(bàÄ…[)bâÄ EëB>)båÄ OëB>)bçÄ…q)béÄ€[ë¯)béÄ eëZ )bÅ nëZ )bÅ xëZ )bÅ ‚ëZ )bÅ ŒëZ )bÅ ˜ëZ )bÅ ©ëZ )bÅ ¿ëN )bÅ ÎëN )b!Å ÜëN )b#Å ëëN )b%Å øëZ *b'Å ì*b)Å€ìj *b+Å ìF>6b,Å€hì,ì6b.Å€lìj 6b.Å tìî=7b0Å ~ìÆ7b2Å ›ìJ>8b4Å ÅìÆ8b6Å êìJ>9b8Å  íÆ9b:Å 9íJ>:b<Å cíÆ:b>Å –íJ>;b@Å ÇíÆ;bBÅ ííJ>=bHÅ kîÆ=bJÅ ›îJ>>bLÅ ÉîÆ>bNÅ áîJ>?bPÅ ÷îÆ?bRÅ !ïJ>@bTÅ IïÆ@bVÅ hïJ>AbXÅ …ïÆAbZÅ ¦ïJ>Bb\Å ÅïÆBb^Å íïJ>Cb`Å ðCbbÅ 1ð‚DbdÅ OðN>EbfÅ kðÆEbhÅ ‹ðJ>FbjÅ ©ðÆFblÅ ÉðJ>GbnÅ çðÆGbpÅ ñJ>HbrÅ !ñÆHbtÅ 8ñJ>IbvÅ MñÆIbxÅ lñ~JbzÅ ‹ñR>Kb|Å ¨ñÆKb~Å ÊñJ>Lb€Å êñÆLb‚Å  òJ>Mb„Å .òÆMb†Å IòJ>NbˆÅ bòÆNbŠÅ òJ>ObŒÅ žòÆObŽÅ ¸òJ>PbÅ ÐòÆPb’Å øòJ>Qb”Å óÆQb–Å 6óJ>Rb˜Å LóÆRbšÅ }óJ>SbœÅ ¬óÆSbžÅ ÊóJ>Tb Å æóÆTb¢Å ôJ>Ub¤Å 6ôÆUb¦Å dô~Vb¨Å ’ôR>WbªÅ ¾ôÆWb¬Å ÛôJ>Xb®Å öôÆXb°Å õJ>Yb²Å :õÆYb´Å \õJ>Zb¶Å |õÆZb¸Å ¢õJ>[bºÅ ÆõÆ[b¼Å éõJ>\b¾Å  öÆ\bÀÅ ;ö~]bÂÅ löR>^bÄÅ ›öÆ^bÆÅ ½ö~_bÈÅ ßöR>`bÊÅ ÿöÆ`bÌÅ (÷J>abÎÅ O÷ÆabÐÅ t÷J>bbÒÅ —÷ÆbbÔÅ Ã÷J>cbÖÅ í÷ÆcbØÅ øJ>dbÚÅ 7øÆdbÜÅ aøJ>ebÞÅ ‰øÆebàÅ ¢øJ>fbâÅ ¹øÆfbäÅ ÔøJ>gbæÅ íøÆgbèÅ  ùJ>hbêÅ 'ùÆhbìÅ Où~ibîÅ wùR>jbðÅ ùÆjbòÅ ¿ùJ>kbôÅ ßùÆkböÅ  úJ>lbøÅ 5úÆlbúÅ húJ>mbüÅ ™úÆmbþÅ ÄúJ>nbÆ íúÆnbÆ û~obÆ EûR>pbÆ oûÆpbÆ ¦û~qb Æ ÝûR>rb Æ üÆrbÆ LüJ>sbÆ „üÆsbÆ ¿ü~tbÆ úüR>ubÆ 3ýÆubÆ eý~vbÆ —ý‚wbÆ ÉýV>xbÆ ùýÆxb Æ &þ~yb"Æ Sþ‚zb$Æ €þV>{b&Æ «þÆ{b(Æ àþ~|b*Æ ÿ‚}b,Æ JÿV>~b.Æ }ÿÆ~b0Æ ±ÿ~b2Æ åÿ‚€b4Æ V>b6Æ KÆb8Æ ~~‚b:Æ ±‚ƒb<Æ äV>„b>Æ Æ„b@Æ H~…bBÆ {‚†bDÆ ®V>‡bFÆ ßƇbHÆ ~ˆbJÆ Y‚‰bLÆ –V>ŠbNÆ ÑÆŠbPÆ ~‹bRÆ 7‚ŒbTÆ jV>bVÆ ›ÆbXÆ Ò~ŽbZÆ  ‚b\Æ @V>b^Æ uÆb`Æ ¢~‘bbÆ Ï‚’bdÆ üV>“bfÆ 'Æ“bhÆ Y~”bjÆ ‹‚•blÆ ½V>–bnÆ íÆ–bpÆ ~—brÆ Q‚˜btÆ ƒV>™bvÆ ³Æ™bxÆ ì~šbzÆ %‚›b|Æ ^¾<œb~Æ —Z>b€Æ Ð^>žb‚Æ Æžb„Æ K~Ÿb†Æ ‚ bˆÆ ÓV>¡bŠÆ  Æ¡bŒÆ D ~¢bŽÆ s ‚£bÆ ¢ ¾<¤b’Æ Ñ Z>¥b”Æ  b>¦b–Æ / f>§b˜Æ ^ j>¨b像 ƨbœÆ ¾ ~©bžÆ ñ ‚ªb Æ $ V>«b¢Æ U Æ«b¤Æ „ ~¬b¦Æ ³ ‚­b¨Æ â V>®bªÆ  Æ®b¬Æ ? ~¯b®Æ o ‚°b°Æ Ÿ V>±b²Æ Í Ʊb´Æ þ ~²b¶Æ / ‚³b¸Æ ` V>´bºÆ  Æ´b¼Æ ½ ~µb¾Æ ë ‚¶bÀÆ V>·bÂÆ EÆ·bÄÆ v~¸bÆÆ §‚¹bÈÆ ØV>ºbÊÆ ƺbÌÆ 9~»bÎÆ k‚¼bÐÆ V>½bÒÆ ÍƽbÔÆ ~¾bÖÆ 3‚¿bØÆ fV>ÀbÚÆ —ÆÀbÜÆ Ê~ÁbÞÆ ý‚ÂbàÆ 0V>ÃbâÆ aÆÃbäÆ —J>ÄbæÆ ËÆÄbèÆ  J>ÅbêÆ IÆÅbìÆ ‡J>ÆbîÆ ÃÆÆbðÆ þ~ÇbòÆ 9R>ÈbôÆ rÆÈböÆ ³J>ÉbøÆ òÆÉbúÆ 4J>ÊbüÆ tÆÊbþÆ °J>ËbÇ êÆËbÇ 'J>ÌbÇ bÆÌbÇ ¡J>ÍbÇ ÞÆÍb Ç "J>Îb Ç dÆÎbÇ §J>ÏbÇ èÆÏbÇ &J>ÐbÇ bÆÐbÇ ¨J>ÑbÇ ìÆÑbÇ $~ÒbÇ \R>ÓbÇ ’ÆÓb Ç Û~Ôb"Ç $‚Õb$Ç mV>Öb&Ç ´ÆÖb(Ç ý~×b*Ç F‚Øb,Ç V>Ùb.Ç ÖÆÙb0Ç J>Úb2Ç LÆÚb4Ç —J>Ûb6Ç àÆÛb8Ç J>Üb:Ç LÆÜb<Ç ŠJ>Ýb>Ç ÆÆÝb@Ç ùJ>ÞbBÇ *ÆÞbDÇ jJ>ßbFÇ ¨ÆßbHÇ â~àbJÇ R>ábLÇ TÆábNÇ J>âbPÇ ÈÆâbRÇ ~ãbTÇ VR>äbVÇ ›ÆäbXÇ Ü~åbZÇ  R>æb\Ç \ Ææb^Ç ¢ ~çb`Ç è R>èbbÇ ,!ÆèbdÇ q!~ébfÇ ¶!R>êbhÇ ù!ÆêbjÇ ;"~ëblÇ }"‚ìbnÇ ¿"V>íbpÇ ÿ"ÆíbrÇ =#~îbtÇ {#‚ïbvÇ ¹#V>ðbxÇ õ#ÆðbzÇ 7$J>ñb|Ç w$Æñb~Ç ´$J>òb€Ç ï$Æòb‚Ç %~ób„Ç K%R>ôb†Ç w%ÆôbˆÇ ª%~õbŠÇ Ý%R>öbŒÇ &ÆöbŽÇ D&~÷bÇ z&R>øb’Ç ®&Æøb”Ç å&~ùb–Ç 'R>úb˜Ç Q'ÆúbšÇ t'~ûbœÇ —'R>übžÇ ¸'Æüb Ç å'~ýb¢Ç (R>þb¤Ç =(Æþb¦Ç b(~ÿb¨Ç ‡(R>cªÇ ª(Æc¬Ç Ð(~c®Ç ö(R>c°Ç )Æc²Ç @)~c´Ç f)R>c¶Ç Š)Æc¸Ç ­)~cºÇ Ð)R>c¼Ç ñ)Æc¾Ç '*~cÀÇ ]*R>cÂÇ ‘*ÆcÄÇ È*J> cÆÇ ý*Æ cÈÇ /+~ cÊÇ a+R> cÌÇ ‘+Æ cÎÇ É+~ cÐÇ ,R> cÒÇ 7,Æ cÔÇ w,J>cÖÇ µ,ÆcØÇ ö,J>cÚÇ 5-ÆcÜÇ m-J>cÞÇ £-ÆcàÇ Ó-J>câÇ .ÆcäÇ ,.J>cæÇ U.ÆcèÇ ‡.~cêÇ ¹.R>cìÇ é.ÆcîÇ %/~cðÇ a/R>còÇ ›/ÆcôÇ Ù/~cöÇ 0R>cøÇ S0ÆcúÇ „0~cüÇ µ0R>cþÇ ä0ÆcÈ  1~cÈ \1R>cÈ –1ÆcÈ Ë1~cÈ 2‚c È 52V>c È h2ÆcÈ 2~ cÈ Ò2‚!cÈ 3V>"cÈ :3Æ"cÈ l3~#cÈ ž3R>$cÈ Î3Æ$cÈ ë3~%cÈ 4R>&c È #4Æ&c"È D4J>'c$È c4Æ'c&È ƒ4J>(c(È ¡4Æ(c*È ¼4J>)c,È Õ4Æ)c.È 5~*c0È 15‚+c2È _5V>,c4È ‹5Æ,c6È ²5J>-c8È ×5Æ-c:È ù5J>.c<È 6Æ.c>È I6J>/c@È w6Æ/cBÈ ­6~0cDÈ ã6R>1cFÈ 7Æ1cHÈ R7~2cJÈ 7R>3cLÈ Æ7Æ3cNÈ 8~4cPÈ @8R>5cRÈ {8Æ5cTÈ 8~6cVÈ ¿8‚7cXÈ á8V>8cZÈ 9Æ8c\È 9J>9c^È +9Æ9c`È K9J>:cbÈ i9Æ:cdÈ 9J>;cfÈ ³9Æ;chÈ Õ9~=clÈ :Æ=cnÈ ::J>>cpÈ [:Æ>crÈ z:J>?ctÈ —:Æ?cvÈ ¸:J>@cxÈ ×:Æ@czÈ ù:J>Ac|È ;ÆAc~È =;~Bc€È a;R>Cc‚È ƒ;ÆCc„È Ÿ;J>Dc†È ¹;ÆDcˆÈ Ù;J>EcŠÈ ÷;ÆEcŒÈ  <J>FcŽÈ G<ÆFcÈ j<J>Gc’È ‹<ÆGc”È «<J>Hc–È É<ÆHc˜È é<~IcšÈ  =‚JcœÈ )=V>KcžÈ G=ÆKc È g=J>Lc¢È …=ÆLc¤È ­=J>Mc¦È Ó=ÆMc¨È ô=J>NcªÈ >ÆNc¬È ,>J>Oc®È C>ÆOc°È f>J>Pc²È ‡>ÆPc´È §>J>Qc¶È Å>ÆQc¸È à>J>RcºÈ ù>ÆRc¼È ?J>Sc¾È A?ÆScÀÈ g?J>TcÂÈ ‹?ÆTcÄÈ »?J>UcÆÈ é?ÆUcÈÈ @~VcÊÈ I@R>WcÌÈ w@ÆWcÎÈ –@J>XcÐÈ ³@ÆXcÒÈ Ý@J>YcÔÈ AYcÖÈ #A.ZcØÈ AAn>[cÚÈ ]AÆ[cÜÈ ŒAJ>\cÞÈ ¹AÆ\càÈ åAJ>]câÈ BÆ]cäÈ 1B~^cæÈ SBR>_cèÈ sBÆ_cêÈ –B~`cìÈ ¹BR>acîÈ ÚBÆacðÈ C~bcòÈ .CR>ccôÈ VCÆccöÈ C~dcøÈ ¬CR>ecúÈ ÕCÆecüÈ úC~fcþÈ DR>gcÉ BDÆgcÉ aD~hcÉ €D‚icÉ ŸDV>jcÉ ¼DÆjc É ÞD~kc É E‚lcÉ "EV>mcÉ BEÆmcÉ ^EJ>ncÉ xEÆncÉ œEJ>ocÉ ¾EÆocÉ åEJ>pcÉ  FÆpcÉ 1FJ>qc É VFÆqc"É }FJ>rc$É ¢FÆrc&É ÇFJ>sc(É êFÆsc*É GJ>tc,É 2GÆtc.É WGJ>uc0É zGÆuc2É •GJ>vc4É ®GÆvc6É ÖGJ>wc8É üGÆwc:É HJ>xc<É 8HÆxc>É dHJ>yc@É ŽHÆycBÉ ½HJ>zcDÉ êHÆzcFÉ I~{cHÉ >IR>|cJÉ fIÆ|cLÉ šIJ>}cNÉ ÌIÆ}cPÉ ùIJ>~cRÉ $JÆ~cTÉ ^JJ>cVÉ –JÆcXÉ ±JJ>€cZÉ ÊJÆ€c\É çJJ>c^É KÆc`É !K~‚cbÉ @KR>ƒcdÉ ]KƃcfÉ }K~„chÉ KR>…cjÉ »KÆ…clÉ ÝKJ>†cnÉ ýKƆcpÉ "LJ>‡crÉ ELƇctÉ rL~ˆcvÉ ŸL‚‰cxÉ ÌLV>ŠczÉ ÷LÆŠc|É MJ>‹c~É /MÆ‹c€É PMvŒc‚É qMr>c„É ’Mv>Žc†É ±MÆŽcˆÉ ÓMvcŠÉ õMr>cŒÉ Nv>‘cŽÉ 7NÆ‘cÉ YN~’c’É {Nz>“c”É N~>”c–É ¿N‚>•c˜É ßNÆ•cšÉ O~–cœÉ #Oz>—cžÉ EO~>˜c É gO‚>™c¢É ‡OÆ™c¤É ²Ovšc¦É ÝO†>›c¨É PŠ>œcªÉ 3PŽ>c¬É ^P’>žc®É ‡PÆžc°É ­PvŸc²É ÓP†> c´É ùP–>¡c¶É Qš>¢c¸É CQÆ¢cºÉ mQv£c¼É —Q†>¤c¾É ÁQ–>¥cÀÉ ëQš>¦cÂÉ R¦cÄÉ 0R‚§cÆÉ MRž>¨cÈÉ jR¢>©cÊÉ ‡R¦>ªcÌÉ ¢RªcÎÉ ÉR‚«cÐÉ ðRª>¬cÒÉ S®>­cÔÉ °cÜÉ ÎS°cÞÉ óS‚±càÉ Tª>²câÉ =T®>³cäÉ `T³cæÉ †T.´cèÉ ¬TöµcêÉ ÒT¶>¶cìÉ øTº>·cîÉ UÆ·cðÉ BUv¸còÉ hUr>¹côÉ ŽU¾>ºcöÉ ´UÂ>»cøÉ ØUÆ»cúÉ ðUJ>¼cüÉ VƼcþÉ  VJ>½cÊ 8VƽcÊ TVJ>¾cÊ nVƾcÊ ‚VJ>¿cÊ ”VÆ¿c Ê ´VJ>Àc Ê ÒVÆÀcÊ ÷VJ>ÁcÊ WÆÁcÊ 5WJ>ÂcÊ NWÆÂcÊ cWJ>ÃcÊ vWÆÃcÊ ™WJ>ÄcÊ ºWÆÄcÊ ×WJ>Åc Ê òWÆÅc"Ê "X~Æc$Ê RXR>Çc&Ê €XÆÇc(Ê ¦X~Èc*Ê ÌXR>Éc,Ê ðXÆÉc.Ê  Y~Êc0Ê &YR>Ëc2Ê ?YÆËc4Ê dYJ>Ìc6Ê ‡YÆÌc8Ê ´YJ>Íc:Ê ßYÆÍc<Ê  ZJ>Îc>Ê 3ZÆÎc@Ê VZJ>ÏcBÊ wZÆÏcDÊ ŸZJ>ÐcFÊ ÅZÆÐcHÊ ìZJ>ÑcJÊ [ÆÑcLÊ :[J>ÒcNÊ a[ÆÒcPÊ ‘[J>ÓcRÊ ¿[ÆÓcTÊ ò[J>ÔcVÊ #\ÆÔcXÊ K\~ÕcZÊ s\R>Öc\Ê ™\ÆÖc^Ê Å\J>×c`Ê ï\Æ×cbÊ ]J>ØcdÊ ?]ÆØcfÊ b]J>ÙchÊ ƒ]ÆÙcjÊ ±]J>ÚclÊ Ý]ÆÚcnÊ  ^J>ÛcpÊ 9^ÆÛcrÊ d^J>ÜctÊ ^ÜcvÊ ±^.ÝcxÊ Õ^n>ÞczÊ ÷^Þc|Ê _Æ>ßc~Ê E_Æßc€Ê e_J>àc‚Ê ƒ_Æàc„Ê ¡_J>ác†Ê ½_ÆácˆÊ ç_J>âcŠÊ `ÆâcŒÊ .`J>ãcŽÊ K`ãcÊ t`Æ>äc’Ê ›`Æäc”Ê µ`J>åc–Ê Í`åc˜Ê î`.æcšÊ an>çcœÊ .aÆçcžÊ QaJ>èc Ê raÆèc¢Ê aJ>éc¤Ê ¦aÆéc¦Ê ÖaJ>êc¨Ê bÆêcªÊ %bJ>ëc¬Ê DbÆëc®Ê \b~ìc°Ê tbR>íc²Ê ŠbÆíc´Ê «b~îc¶Ê ÌbR>ïc¸Ê ëbÆïcºÊ cJ>ðc¼Ê 9cðc¾Ê Xc‚ñcÀÊ wcN>òcÂÊ ”còcÄÊ ¾c‚ócÆÊ ècN>ôcÈÊ dÆôcÊÊ 6dJ>õcÌÊ ZdÆõcÎÊ ’dJ>öcÐÊ ÈdÆöcÒÊ ådJ>÷cÔÊ eÆ÷cÖÊ eJ>øcØÊ ùcÜÊ neÆùcÞÊ ŒeJ>úcàÊ ¨eÆúcâÊ ¿eJ>ûcäÊ ÔeÆûcæÊ îeJ>ücèÊ fÆücêÊ (fJ>ýcìÊ HfÆýcîÊ qfJ>þcðÊ ˜fÆþcòÊ ¾fJ>ÿcôÊ âfÆÿcöÊ gJ>døÊ @gÆdúÊ agJ>düÊ €gÆdþÊ §gJ>dË ÌgÆdË øgJ>dË "hÆdË RhJ>dË €hÆd Ë ²hJ>d Ë âhÆdË  iJ>dË 0iÆdË niJ>dË ªiÆdË ÒiJ>dË øiÆdË j~ dË 4j‚ dË RjV> d Ë njÆ d"Ë Žj~ d$Ë ®j‚ d&Ë ÎjV>d(Ë ìjÆd*Ë k~d,Ë 6kR>d.Ë YkÆd0Ë qkJ>d2Ë ‡kÆd4Ë žkJ>d6Ë ³kÆd8Ë ÚkJ>d:Ë ÿkÆd<Ë $lJ>d>Ë GlÆd@Ë hlJ>dBË ‡lÆdDË ¦lvdFË ÅlÊ>dHË âlÆdJË mJ>dLË mÆdNË =mJ>dPË \mdRË {mÆ>dTË ˜mÆdVË ¯mJ>dXË ÄmÆdZË îmJ>d\Ë nÆd^Ë 1nJ>d`Ë JnÆdbË knJ>ddË ŠnÆdfË §nJ>dhË ÂnÆdjË în~ dlË oR>!dnË DoÆ!dpË [oJ>"drË poÆ"dtË “oJ>#dvË ´o#dxË ÒoÆ>$dzË îoÆ$d|Ë pJ>%d~Ë pÆ%d€Ë 6pJ>&d‚Ë LpÆ&d„Ë kpJ>'d†Ë ˆpÆ'dˆË §p~(dŠË Æp‚)dŒË åpV>*dŽË qÆ*dË qJ>+d’Ë 6qÆ+d”Ë XqJ>,d–Ë xqÆ,d˜Ë ”qJ>-dšË ®qÆ-dœË ÎqJ>.džË ìqÆ.d Ë rJ>/d¢Ë "rÆ/d¤Ë KrJ>0d¦Ë rrÆ0d¨Ë ’rJ>1dªË °rÆ1d¬Ë ËrJ>2d®Ë ärÆ2d°Ë s~3d²Ë (sR>4d´Ë HsÆ4d¶Ë zs~5d¸Ë ¬sR>6dºË ÜsÆ6d¼Ë t~7d¾Ë 2t‚8dÀË ]tV>9dÂË †tÆ9dÄË ²tJ>:dÆË ÜtÆ:dÈË uJ>;dÊË ,uÆ;dÌË auJ>=dÒË ðuÆ=dÔË vJ>>dÖË *vÆ>dØË FvJ>?dÚË `vÆ?dÜË “vJ>@dÞË ÄvÆ@dàË w~AdâË DwR>BdäË ‚wÆBdæË »w~CdèË ôwR>DdêË +xÆDdìË Px~EdîË uxR>FdðË ˜xÆFdòË ³xJ>GdôË ÌxÆGdöË ôxJ>HdøË yÆHdúË 9yJ>IdüË VyÆIdþË ~yJ>JdÌ ¤yÆJdÌ ½yJ>KdÌ ÔyÆKdÌ õyJ>LdÌ zÆLd Ì 0zJ>Md Ì JzÆMdÌ yzJ>NdÌ ¦zNdÌ Ùz‚OdÌ  {N>PdÌ ={ÆPdÌ q{J>QdÌ £{ÆQdÌ Î{~RdÌ ù{R>Sd Ì "|ÆSd"Ì M|~Td$Ì x|R>Ud&Ì ¡|ÆUd(Ì ¾|~Vd*Ì Û|‚Wd,Ì ø|V>Xd.Ì }ÆXd0Ì 0}~Yd2Ì M}‚Zd4Ì j}V>[d6Ì …}Æ[d8Ì  }~\d:Ì »}‚]d<Ì Ö}V>^d>Ì ï}Æ^d@Ì  ~~_dBÌ %~‚`dDÌ @~V>adFÌ Y~ÆadHÌ ‚~~bdJÌ «~R>cdLÌ Ò~ÆcdNÌ û~~ddPÌ $R>edRÌ KÆedTÌ aJ>fdVÌ uÆfdXÌ ’J>gdZÌ ­Ægd\Ì Ð~hd^Ì óR>id`Ì €ÆidbÌ ;€~jddÌ b€R>kdfÌ ‡€ÆkdhÌ ²€~ldjÌ Ý€‚mdlÌ V>ndnÌ 1ÆndpÌ P~odrÌ o‚pdtÌ ŽV>qdvÌ «ÆqdxÌ Ú~rdzÌ  ‚‚sd|Ì 8‚V>td~Ì e‚Ætd€Ì …‚J>ud‚Ì £‚Æud„Ì À‚J>vd†Ì Û‚ÆvdˆÌ õ‚J>wdŠÌ  ƒÆwdŒÌ 3ƒJ>xdŽÌ WƒÆxdÌ nƒJ>yd’Ì ƒƒÆyd”Ì ºƒ~zd–Ì ñƒR>{d˜Ì &„Æ{dšÌ R„J>|dœÌ |„Æ|džÌ ¤„J>}d Ì Ê„Æ}d¢Ì é„J>~d¤Ì …Æ~d¦Ì 7…~d¨Ì h…R>€dªÌ —…Æ€d¬Ì Æ…J>d®Ì ó…Æd°Ì †J>‚d²Ì I†Æ‚d´Ì q†~ƒd¶Ì ™†R>„d¸Ì ¿†Æ„dºÌ ã†J>…d¼Ì ‡Æ…d¾Ì $‡J>†dÀÌ A‡ƆdÂÌ ^‡J>‡dÄÌ y‡ƇdÆÌ ¢‡J>ˆdÈÌ ɇƈdÊÌ ì‡J>‰dÌÌ  ˆƉdÎÌ >ˆJ>ŠdÐÌ mˆÆŠdÒÌ —ˆJ>‹dÔÌ ¿ˆÆ‹dÖÌ áˆJ>ŒdØÌ ‰ÆŒdÚÌ  ‰~dÜÌ ?‰R>ŽdÞÌ \‰ÆŽdàÌ }‰J>dâÌ œ‰ÆdäÌ ±‰J>dæÌ ĉÆdèÌ ç‰J>‘dêÌ ŠÆ‘dìÌ 2Š~’dîÌ \ŠR>“dðÌ „ŠÆ“dòÌ £ŠJ>”dôÌ ÀŠÆ”döÌ ÔŠJ>•døÌ æŠÆ•dúÌ ‹~–düÌ (‹R>—dþÌ G‹Æ—dÍ ‹~˜dÍ »‹‚™dÍ õ‹V>šdÍ -ŒÆšdÍ WŒ~›d Í ŒR>œd Í ©ŒÆœdÍ ÑŒ~dÍ ùŒR>ždÍ ÆždÍ AJ>ŸdÍ aÆŸdÍ {J> dÍ “Æ dÍ ­J>¡dÍ ÅÆ¡d Í ä~¢d"Í ŽR>£d$Í  ŽÆ£d&Í ?Ž~¤d(Í ^ŽR>¥d*Í {ŽÆ¥d,Í ¢Ž~¦d.Í ÉŽR>§d0Í îŽƧd2Í ~¨d4Í <R>©d6Í aÆ©d8Í ‰~ªd:Í ±R>«d<Í ×Æ«d>Í ÿ~¬d@Í 'R>­dBÍ MÆ­dDÍ €~®dFÍ ³‚¯dHÍ æV>°dJÍ ‘ưdLÍ 8‘J>±dNÍ W‘ƱdPÍ ~‘J>²dRÍ £‘ƲdTÍ Ê‘~³dVÍ ñ‘R>´dXÍ ’Æ´dZÍ *’~µd\Í >’R>¶d^Í P’ƶd`Í g’~·dbÍ ~’R>¸ddÍ “’ƸdfÍ ½’~¹dhÍ ç’‚ºdjÍ “V>»dlÍ 9“Æ»dnÍ P“~¼dpÍ g“R>½drÍ |“ƽdtÍ ¢“~¾dvÍ È“R>¿dxÍ ì“Æ¿dzÍ  ”vÀd|Í .”r>Ád~Í O”¾>Âd€Í p”Â>Ãd‚Í ”ÆÃd„Í µ”~Äd†Í Û”R>ÅdˆÍ ÿ”ÆÅdŠÍ 1•J>ÆdŒÍ a•ÆÆdŽÍ ˆ•~ÇdÍ ¯•R>Èd’Í Ô•ÆÈd”Í –~Éd–Í 0–R>Êd˜Í \–ÆÊdšÍ ‘–~ËdœÍ Æ–‚ÌdžÍ û–¾<Íd Í 0—Î>Îd¢Í c—ÆÎd¤Í ‚—J>Ïd¦Í Ÿ—ÆÏd¨Í —~ÐdªÍ å—R>Ñd¬Í ˜ÆÑd®Í $˜J>Òd°Í @˜ÆÒd²Í j˜J>Ód´Í ’˜ÆÓd¶Í ²˜J>Ôd¸Í ИÆÔdºÍ ù˜~Õd¼Í "™‚Öd¾Í K™V>×dÀÍ r™Æ×dÂÍ ‰™~ØdÄÍ  ™R>ÙdÆÍ µ™ÆÙdÈÍ Í™~ÚdÊÍ å™R>ÛdÌÍ û™ÆÛdÎÍ š~ÜdÐÍ +šR>ÝdÒÍ AšÆÝdÔÍ jš~ÞdÖÍ “šR>ßdØÍ ºšÆßdÚÍ ïš~àdÜÍ $›R>ádÞÍ W›ádàÍ y›.âdâÍ ››n>ãdäÍ »›ÆãdæÍ ß›J>ädèÍ œÆädêÍ #œ~ådìÍ Eœ‚ædîÍ gœ¾<çdðÍ ‰œÎ>èdòÍ ©œÆèdôÍ М~édöÍ ÷œR>êdøÍ ÆêdúÍ EJ>ëdüÍ lÆëdþÍ ‘~ìdÎ ¶R>ídÎ ÙÆídÎ ûJ>îdÎ žÆîdÎ ;žJ>ïd Î YžÆïd Î €ž~ðdÎ §ž‚ñdÎ Ξ¾<òdÎ õžÎ>ódÎ ŸÆódÎ =ŸJ>ôdÎ ^ŸÆôdÎ †ŸJ>õdÎ ¬ŸÆõdÎ ÕŸJ>öd Î üŸÆöd"Î ' J>÷d$Î P Æ÷d&Î ~ J>ød(Î ª Æød*Î Ô J>ùd,Î ü Æùd.Î %¡J>úd0Î L¡Æúd2Î v¡~ûd4Î  ¡R>üd6Î È¡Æüd8Î ë¡~ýd:Î ¢‚þd<Î 1¢V>ÿd>Î R¢Æÿd@Î z¢~eBÎ ¢¢‚eDΠʢV>eFÎ ð¢ÆeHÎ £J>eJÎ 2£ÆeLÎ Z£~eNÎ ‚£R>ePÎ ¨£ÆeRΠɣ~eTÎ ê£R>eVÎ  ¤ÆeXÎ -¤~eZÎ Q¤R> e\Î s¤ e^Î  ¤. e`Î ͤö ebÎ ú¤²> edÎ %¥Æ efÎ D¥J> ehÎ a¥ ejÎ ‹¥.elÎ µ¥öenÎ ߥ²>epÎ ¦ÆerÎ )¦~etÎ K¦R>evÎ k¦ÆexÎ ¦J>ezÎ ­¦Æe|Î Õ¦~e~Î ý¦R>e€Î #§Æe‚Î E§J>e„Î e§Æe†Î …§J>eˆÎ £§ÆeŠÎ ¾§J>eŒÎ ×§ÆeŽÎ ø§J>eÎ ¨e’Î 8¨.e”Î Y¨" e–Î z¨Ò>e˜Î ™¨ÆešÎ Á¨J>eœÎ ç¨ÆežÎ  ©~e Î /©R>e¢Î Q©e¤Î q©Æ> e¦Î ©Æ e¨Î ¯©J>!eªÎ Í©Æ!e¬Î ð©~"e®Î ªR>#e°Î 4ª#e²Î iª‚$e´Î žªN>%e¶Î ѪÆ%e¸Î ÷ªJ>&eºÎ «Æ&e¼Î 7«~'e¾Î S«R>(eÀÎ m«Æ(eÂÎ ›«~)eÄÎ É«‚*eÆÎ ÷«V>+eÈÎ #¬Æ+eÊÎ X¬J>,eÌÎ ‹¬¶(,eÎÎ ’¬æ=.eÐÎ ›¬ê=1eÒÎ%¨¬Ö>4eÔ΀µ¬9eÚÎä¬å9eÚÎö¬å9eÚÎ ­å9eÚέå9eÚÎ.­å9eÚÎB­å9eÚÎU­å9eÚÎi­å9eÚÎ{­å9eÚέå9eÚΠ­å9eÚα­å9eÚÎíå9eÚÎÕ­å9eÚÎç­å9eÚÎù­å9eÚÎ ®å9eÚήå9eÚÎ+®å9eÚÎ;®å9eÚÎK®å9eÚÎ]®å9eÚÎn®å9eÚήå9eÚήå9eÚ΢®å9eÚδ®å9eÚÎÆ®å9eÚÎÙ®å9eÚÎë®å9eÚÎý®å9eÚίå9eÚÎ ¯å9eÚÎ0¯å9eÚÎ@¯å9eÚί°x_¹°_À°†_Ô°‰_3OZmV€èN‰_V€ ‰_V€*‰_#ZO‰_#ZO‰_zP\ozPÅmzPÉmV€ƒ‰_V€ˆ‰_V€‰_#œP†_#¢Pþo#¨P†_#œP†_#¢Pšo#¨P†_#ÁPšo#ÇP†_#ÍPZm#œPb#¢P9q#¨PšozP§qzP±qzP»qURbjR­r~RÉrR‰_œRàr¬RårºR‰_ÆR‰_ÒR‰_ßR‰_êR†_úR†_vU‰_„U‰_U‰_¤U‰_ºU‰_ÝWtäWtìW(tóW‰_X‰_X‰_(X‰_5X‰_HX†_LXÂsUXÂs€Z6u†Z;uZ‰_–Z‰_©Z‰_ÁZ‰_‡[þoG\±vR\µv`\µvl\µvÒYºva]*wl]*w|]1w‘]*wž]'«Àx?«Ÿê%¨¹æË©–ê=¦–êN«Ÿê§SV«µïì¥Iͤ‰_ФYÐiÞá¥û\«¯?«ŸêË©=¦'«¹ì¥Àͤ‰_ФÏǹ½„¦ïp«æ‹«¹á¥'«¹Ë©8\«HðXÍ cÍ ¨«8´«HG¦Í É«Í ì¥Xñ¥„J¦„ͤ‰_ФH¥«ÕÌ«ß ׫#„¦ïp«æШÍ ܨ1ý«1ì¥^ðXd ñ¥t ͤ‰_Фd p«`!á¥æ±©ç‡¬µïv©1ì¥}!ñ¥^ðXd J¦t ͤ‰_Фd „¦ï©"¥«ÕÌ«ß ¥«ÕÌ«ß ÐiÞ„¦ï©" ¬Ã"¬Í ì¥Ê"ͤ‰_Фd çŽ5#¬b¥«ÕÌ«ß „¦ï©»#±©ç‡r©³†l©N¬1ШÍ ì¥^ͤ‰_Ф1©»##¬‘B¬‘¨¤‘ǹ½ÐiÞ„¦ï§¨éǹ½Ú–´›¦@w<­rïw­*ê~­†_ðX ì¥§G¦ ñ¥§ͤ‰_Ф Wj´…k¤b–­(Wj´…ǹ½ó©x,á©Àx©­ê5¤b»­ƒ,È­‘,LbWj´…Ì­bÏ­˜,Ý­‘,â­bè­b쥛‡ðXgäñ¥ìG¦gäJ¦ìP¦gäS¦ì\¦›‡ͤ‰_Фgäî­è,ù­ÿ,¥.-Ì«q-î­è,ù­ÿ,¥.-Ì«q-î­è,ù­ÿ,¥.-Ì«q-Ú–´Ø¡·Þ®‘ç®‘ç ®‘çðXÈ-ì¥Ð-G¦È-ñ¥Ð-P¦È-J¦Ð-Y¦È-S¦Ð-/®È-\¦Ð-ͤ‰_ФÈ-2®´…ðXü…ì¥äͤ‰_Фü…ǹ½H®bðXü…ì¥äͤ‰_Фü…ǹ½V®‹(H®bo®´…ì¥R/ͤ‰_Ф‚Ú–´ª/Ú–´ª/Ú–´ª/.p´…ðXü…ì¥äͤ‰_Фü…¯‰_¯´… ¯õ0)¯A1‚°‰_=¦õ0”j´…°´…ðXü…ì¥äG¦ü…ñ¥äP¦ü…J¦äY¦ü…S¦ä/®ü…\¦ä•°R/›°ü…ž°äͤ‰_Фü…;¯a.C¯a.K¯a.S¯a.ðXü…ì¥äͤ‰_Фü…Œ¯°2p¯È-ì¥Ð-ͤ‰_Ф´…£¯Àx¤°ó2ì¥ü2ͤ‰_Ф´…°°‰_µ°‰_ðXü…ì¥äͤ‰_Фü…¼¯Àxá¥Àœ°°‰_µ°‰_¯´…ì¥S3ͤ‰_Ф´…®‘ç ®‘çÒ¯‰_⯉__÷¯‰_°‰_°™ŸðXü…ì¥äG¦ü…ñ¥äP¦ü…J¦äY¦ü…S¦ä/®ü…\¦ä›°ü…•°ä¾°ü…ž°äÁ°ü…İäʰü…ͰäÓ°ü…Ö°äͤ‰_Фü…9°æ3H°ó3ͤ‰_Ф´…è°‰_ñ°‰_ú°‰_±‰_.p´…ðXü…ì¥äG¦ü…ñ¥äP¦ü…J¦äY¦ü…S¦ä/®ü…\¦ä›°ü…•°ä¾°ü…ž°äÁ°ü…İäʰü…Ͱäͤ‰_Фü…5±‰_ðX´…᥉_G¦ü…ì¥äñ¥’4ͤ‰_Фü…Ú–´Ú–´†±bÚ–´«±6Ú±á6Ú±á6Ú±á6ò±ò6ø±€6"²ÿ6¨¤b3a²b3~²á3–²á3³²á3Ö²†_î²ï³=ö ³‰_»µ†_ȵbz¶¹½ˆ¶ãD£¶‰_®¶Àœä'á&µ•:&µ•:w†_&µ•:w†_wOù·•:‹ãžŸµ¢EŸµ¢E-·ÒE‚µ†_ȵbÚµ³†Ç¹½·•:’µ=4·GŸ‹ãžž·¾½¡á½G«·3GÍ·G#u‰_3׌/I3ãŒ/IV€ÅŒ‰_V€ÏŒ‰_·•:5¤bf¹û>Ć_·•:Z™¯²ʈ¨²Ÿ–´ʈ¨²Ÿ–´ʈ¨²ù­ÉÝ¥šÌ«àÐʈ¨²Ÿ–´ʈ¨²Ÿ–´3²»‰_3Ä»‰_3껉_3¼‰_3¼‰_3A¼³†3UVT3tVT3—^T3²jT ³‰_Ö§bÖ§b¿ˆ¡²Uj¬†ʈ¨²ψ–²Ÿ–´ZOļì¥)ZðX5Zñ¥:Zͤ‰_Ф5Z¥ÞZÌ«!½ù­é[¥ \Ì«K\W‰_‰_ﳆsbKÓsbKÓqXÀW‰_…b‰_sÀ³½bﳆᾆ_·Šóª;½KÓ·Šóªù­é[¥ \Ì«K\W‰_‰_ﳆUj¬†ʈ¨²‚£¡²sbKÓW‰_…b‰_ﳆù­é[¥ \Ì«K\W‰_‰_ﳆ ¿†_¿@_¿@_sbKÓW‰_…b‰_ﳆù­ø`¥'aÌ«vaW‰_‰_ ‘aÀ;½KÓW‰_…b‰_ ‘aÀ;½KÓT‘cì¥ cðXcñ¥/cͤ‰_Фcv‘óª-¿šÂv‘óª7¿¸ÂV¿šÂ”‘lÀn¿óª&µKÓUj¬†¨¤–´‚£ ¾Uj¬†¨¤–´‚£ ¾’óªÓe¬†ˆ¿‰_‹¿‰_Uj¬†¨¤–´‚£ ¾Uj¬†¨¤–´‚£ ¾î­jTù­ g¥8gÌ«‡g“aÀ%“¥†W‰_‚’‰_aZÃhʈÀxaZÃhʈÀx³½b&µKÓaZÃhʈÀx³½b&µKÓ&µKÓ&µKÓ-·-i&µKÓ-·-i•¿iW‰_.…‰_Æc‰_ÙV‰_ù­ÉÝ¥šÌ«àÐqXÀ…bïÌsÀW‰_‰_;½KÓqXÀ…bïÌsÀW‰_‰_;½KÓǘÓqXÀ…bïÌsÀW‰_‰_;½KÓî¿FÓǘÓqXÀ…bïÌsÀW‰_‰_Àlî­@lù­l¥ÞlÌ«Umﳆ —‰_ À‰_À‰_…bﳆ À‰_À‰_;½KÓ À‰_À‰_;½KÓ…bﳆ —‰_ À‰_À‰_ù­é[¥ \Ì«K\ﳆW‰_‰_…bﳆW‰_‰_;½KÓ…bﳆW‰_‰_ù­ø`¥'aÌ«vaïaÀ À‰_À‰_…bïaÀ À‰_À‰_;½KÓ…bïaÀ À‰_À‰_î­,où­Co¥~oÌ«Ñoﳆ©´†_ À‰_À‰_…bﳆ —‰_©´†_ À‰_À‰_;½KÓ…bﳆ —‰_©´†_ À‰_À‰_&µ Õ&µ`ÚÀ`Ú4{b™bb‰ÐÀ`Ú+™‰_b‰ÐÀ`Úb‰ÐÀ`Ú4{b™bb‰Ðm¦Óî¿FÓN™¤ªb‰ÐPÀ.]ÀcªðXG›ì¥sG¦G›ñ¥sͤ‰_ФG›À`ÚN™¤ª4{b™bb‰ÐZ™¯²VÀxÀ`Ú4{b™b‰™VЙ™u¤b‰ÐÀ`Úb‰ÐÀ`Úb‰ÐÀ`ÚÀ`Úb‰Ðb‰Ð&µ`Úb‰Ð&µ`Ú&µ!v&µ!v&µ!v&µ!v&µ!v&µ!vù­«Õ¥ß Ÿ–´ª/Ÿ–´nÆ~Ná¥ìâL¨ÀwÆÓSƆ_„ƨÀì¥üͤ‰_Ф‘¿ˆ¡²Uj¬†ʈ¨²‹tļ#ZOÀxô’ÆÂ’Ÿ–´Ÿ–´âL¨ÀöÆbŸ–´ù­«Õ¥ß ù­«Õ¥ß ù­«Õ¥ß ù­«Õ¥ß ù­«Õ¥ß ù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐûÄ|ıÀ†_¿ˆ¡²Uj¬†ʈ¨²‹tļ¿ˆ¡²Uj¬†ʈ¨²‹tļ3ƒÇ‰_3‘lj_3¨Çˆ• ³‰_Uj¬†¿ˆ¡²ʈ¨²ËÇ–Uj¬†ψ–²¿ˆ¡²ʈ¨²܈¯²ËÇ–Õˆ†²Uj¬†ψ–²¿ˆ¡²ʈ¨²܈¯²˜B¿M‰_Ÿ–´Ÿ–´¿ˆ¡²Uj¬†ʈ¨²Õˆ†²܈¯²·Šóª·Šóª·ŠóªuÈ9˜Ë³†ðXb쥛‡ͤ‰_Фb·ŠóªsbÀxW‰_.…‰_·Šóªsb¬†·Šóª·ŠóªW‰_.…‰_·ŠóªLb·Šóª"Ìb"Ìb3&̳†3>̳† ³‰_;½#Ì·Šóªl̆_Uj¬†ÙÍóªͤ‰_ФµÈ·Šóªl̆_ º½§=¦r¦Uj¬†ͤ‰_ФµÈ·Šóªl̆_ ºÚ«=¦¨¦Uj¬†ͤ‰_ФµÈ·Šóªl̆_ º¬=¦Þ¦Uj¬†ͤ‰_ФµÈ·Šóªl̆_ ºV¬=¦§Uj¬†ͤ‰_ФµÈ·Šóªl̆_ º”¬=¦J§Uj¬†ͤ‰_ФµÈ·Šóªl̆_ ºÒ¬=¦€§Uj¬†ͤ‰_ФµÈ·Šóªl̆_ÞͶ§åÍ$˜íͽ§ôÍħ—À†_ðXµÈ쥭ͤ‰_ФµÈ·Šóªl̆_ÍÛ­t$˜ì¥æ­ðXµÈñ¥­ͤ‰_ФµÈ·Šóªl̆_Íl®tw®ì¥~®ðXµÈñ¥­ͤ‰_ФµÈ·Šóªl̆_-ͯ᥯΃™t$˜=¦ƒ™ Î$˜ì¥¯ðXµÈñ¥­G¦µÈJ¦­ͤ‰_ФµÈ·Šóªl̆_B͆_K̓™=¦ƒ™t$˜ͤ‰_ФµÈ·Šóªl̆_t$˜·Šóªl̆_ Î$˜·Šóªl̆_·Šóªl̆_ÎB±·Šóªl̆_ Î$˜·Šóªl̆_ Î$˜Î$˜·Šóªl̆_ Î$˜·Šóªl̆_Î$˜·Šóªl̆_Î$˜ Î$˜·Šóªl̆_Î$˜ Î$˜Î$˜·Šóªl̆_ Î$˜·Šóªl̆_ Î$˜Î$˜·Šóªl̆_t$˜·Šóªl̆_·Šóªl̆_-Ͳ·Šóªl̆_t$˜·Šóªl̆_·Šóªl̆_-Ͳ·Šóªl̆_t$˜-Ͳ·Šóªl̆_t$˜·Šóªl̆_-Ͳ·Šóªl̆_t$˜-Ͳ·Šóªl̆_Δ¬t$˜-Ͳ·Šóªl̆_ÎÒ¬·Šóªl̆_)ÎV¬ÎÒ¬·Šóªl̆_)ÎV¬ÎÒ¬ Î$˜·Šóªl̆_/ÎÙ² Î$˜·Šóªl̆_5΃™·Šóªl̆_5΃™ Î$˜·Šóªl̆_5΃™ Î$˜Î$˜·Šóªl̆_Í<³·Šóªl̆_ Î$˜·Šóªl̆_Í<³ Î$˜·Šóªl̆_Î$˜·Šóªl̆_Î$˜ Î$˜·Šóªl̆_ Î$˜·Šóªl̆_ Î$˜Î$˜·Šóªl̆_B͆_t$˜ðXµÈ쥭ͤ‰_ФµÈ·Šóªl̆_õÅÔ¨;ÎÛ¨Ujµµ=¦æ¨EÎÛ¨שµµì¥¼µðXµÈñ¥­J¦¼µG¦µÈS¦­ͤ‰_ФµÈ·Šóªl̆_·Šóªl̆_‹Íµµ·Šóªl̆_ËǪ·=¦m©Uj¬†PαVÎt©aν§È$˜hÎ{©ש¬†sÎÓ©‹tª·y΂©„α·‹Î¬†ŽÎ¼·‘Ή©;ÎÛ¨Rj¬†œÎµµðXµÈ쥭ñ¥÷G¦µÈJ¦­S¦Ï·P¦µÈ\¦­•°¼µY¦µÈž°­ͤ‰_ФµÈ·Šóªl̆_sÎÓ©‹tª·ì¥÷ðXµÈñ¥­ͤ‰_ФµÈ·Šóªl̆_½ÍLªsbÕ¹ì¥ܹðXµÈñ¥­ͤ‰_ФµÈ;½#Ì·Šóª·Šóªu¤ðXb쥛‡ͤ‰_ФbaZoÎaZ½Îù­jT¥ gÌ«›ÆˆÐ«ÌˆÐ«ÌñÑÒÈá¥vÏâ±]‚fÐ}Ï쥄Ïͤ‰_Ф7̈ЫÌñÑòÈá¥ÐUj¬†â±]‚ì¥ Ðͤ‰_Ф7̈ЫÌ÷ÑÆá¥‰ÐUj¬†â±Ð쥛Ðͤ‰_Ф7̈ЫÌQѹ̶ÐbˆÐ«ÌQѹÌQѹ̈ЫÌQѹ̶ÐbˆÐ«ÌQѹ̗†_3ü;ˆÔ3þÑo« ³‰_#u‰_V€¯=‰_V€´=‰_V€»=‰_V€Í=‰_V€Ö=‰_V€á=‰_V€í=‰_#ZO$˜#ZOª·#ZOÕ¹#ZO¼·#ZOµµ#ZO¯#ZOw®zP¡ zPèzP‹èzPÚ zPžèzPªèzP¶è ¬CzË\é·ŠóªW‰_.…‰_·Šóªsb¬†ËCzW‰_.…‰_·ŠóªW‰_.…‰_·Šóª¹ÕêW‰_.…‰_·Šóª¹ÕêÀÕìê™Ò’ãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9ÉÌ•q˜ ÇÕËë•q˜ ÚÕ:ì•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ÚÕ:ìÇÕËëËǪ·îÕÎì™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ÚÕ:ìÇÕËë™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ™Ò’ãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9ÉÌÉ^ïÉ^ï™Ò’ã·ŠóªÙÍóª•q˜ É^ïôÕZ°ûÕ¬†™Ò’ã·Šóª•q˜ ûÕ¬†æÒ‡Ù™Ò’ã·Šóª•q˜ ôÕZ°ûÕ¬†™Ò’ã·Šóª•q˜ Ö¬†È$˜™Ò’ã·Šóª•q˜ Ö¬†È$˜™Ò’ã·ŠóªÖˆš™Ò’ã·ŠóªÙÍóª•q˜ É^ïïÒƒ™ôÕZ°ØÒ‰_t$˜™Ò’ã·Šóª•q˜ ïÒƒ™ØÒ‰_æÒ‡Ù™Ò’ã·Šóª•q˜ ïÒƒ™ôÕZ°ØÒ‰_™Ò’ã·ŠóªÙÍóª•q˜ É^ïÖÝòïÒƒ™ôÕZ°Öˆštƒ™™Ò’ã·ŠóªÙÍóª•q˜ É^ïÖÝòïÒƒ™™Ò’ã·ŠóªÙÍóª•q˜ É^ïÖÝò÷ÑƳïÒiõ™Ò’ã·ŠóªÙÍóª•q˜ É^ïÖÝò÷ÑƳïÒiõ™Ò’ã·ŠóªÙÍóª•q˜ É^ïÖÝò÷ÑƳïÒiõ™Ò’ãÇÕËë•q˜ É^ïâLþ¶#ÖB±Pα*ÖÆ÷=¦Æ÷È$˜6Ö$˜A±w®á¥Þ÷>Ö±±w®ì¥~®ñ¥å÷J¦~®ͤ‰_Фñ÷™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ É^ïEÖ²åÍ$˜ͤ‰_Фñ÷ÇÕËë•q˜ ÇÕËë•q˜ É^ïåÍ$˜XÖ±ðXñ÷ì¥aúͤ‰_Фñ÷™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ É^ïEÖ²åÍ$˜ͤ‰_Фñ÷É^ïgÖƒ™rÖ$˜åÍ$˜=¦ƒ™sb$˜ͤ‰_Фñ÷É^ïÉ^ï{Ö<³åÍ$˜ͤ‰_Фñ÷É^ïÉ^ï{Ö<³rÖ$˜åÍ$˜ðXñ÷ì¥aúͤ‰_Фñ÷™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ È$˜É†üÇÕËëÙÍóªîÕ¢ü™Ò’ãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9ÉÌ•q˜ ‡ÖµµŒÖµµ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ lÓ‡‘Ö¡™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ lÓ‡‘Ö¡™Ò’ã¯Ïþ¶Uj¬†™Ò’ã¾ÖßÝÏÖì¯ÖÛ¨™Ò’ãW‰_.…‰_·Šóª9ÉÌßÖÔ¨¯ÖÛ¨¾ÖßÝ•q˜ =¦æ¨ÏÖìïÖÛ¨lÓ‡VνÈÿÖÄÈhÎɯÏþ¶Uj¬†ðXñ÷ì¥aúͤ‰_Фñ÷™Ò’ãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9ÉÌW‰_.…‰_·ŠóªUjµµ™Ò’ãlӇɆü•q˜ ¯Ïþ¶åÍ$˜ìЬ†™Ò’ãɆü•q˜ ¯Ïþ¶åÍ$˜ìЬ†ÇÕËë•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ sbÛ¨™Ò’ãW‰_.…‰_·Šóª9ÉÌɆü•q˜ ×ƒ™åÍ$˜=¦ƒ™ͤ‰_Ф$˜W‰_.…‰_·ŠóªÉ†ü•q˜ ™Ò’ãW‰_.…‰_·Šóª•q˜ É†ü™Ò’ãW‰_.…‰_·Šóª9ÉÌ•q˜ ™Ò’ãW‰_.…‰_·Šóª9ÉÌ,×93#ä”z3.ä@Ÿ3Iä‰_3]ä‰_3sä‰_3Œä‰_3 ä™Ÿ3±ä™Ÿ3Ã䙟3Ô䙟3é䙟3噟 ³‰_|‰_í£º¡&µ+ »{bûj‰_Õ{@Ÿ&µ+ »{bÕ{@ŸV€–G‰_V€‘‰_#ZOÀx#ZONvzPízPö#u‰_3—ç‘3°ç‘V€ÜG‰_V€:ç‰_V€^ç‰_V€çG‰_V€îG‰_V€öG‰_V€H‰_#ZO¯²#œP™#¢P¥ #ZO™#ZO¥ #ZO¥ zPzzP†zP’zPžzPª#u‰_3Ðèf V€Šè‰_V€”H‰_V€¥H‰_V€´H‰_#ZO¯²#œP¯²#¢P¥ #ZONvzPzP zP réuzéÌ î¿z&µÓ¡æ™aZøêaZø ê*&µÓLæz[¼f AêÓ&µÓLæz[¼f AêÓOêÓ ³‰_èë‰_.pìë‰_ë‰_¥jTÌ« g3VìƒV€0J‰_V€:J‰_V€Bì‰_#ZOb#ZObzPÂzPÇzPTöìbí†_í†_ù­,o¥òÌ«Äí2ÝÍíiÞØí–´ãí¹½íí ÞôíŠîwçîMúǹ½ä'á„î¢wy{†wy{ä'áǹ½ÓîbýŒBdžU¢Oï†_ä'ájï†_ðbyï)Þƒï¤ïõ•RÞÚ–´¸ïIÞÐïiÞãï²–†_ïï‰_þï#ð,Uj¬†Ö§b&µFÓä‚ÓeÔUòVÐì¥Ú*ͤ‰_Фä*&µFÓ&µFÓ&µFÓ&µFÓ&µFÓ&µFÓ&µFÓ&µFÓÐiÞ¯òÀ,ì¥Å,ðXÏ,ñ¥Ù,ͤ‰_ФÏ,²òbÂòÙU™øàÌòüÂòÙUᥧ&=¦§&ÔòbÝòIÞïòÔU쥹&ñ¥Ú*ͤ‰_ФÙUÌ«ÉÝwOùŸÉÝÌ«ÉÝwOùŸÉÝ&µFÓ&µFÓó‚Tò(ä'á&µFÓjòb½„¶ªó‚ä'áTò(&µFÓä'á#ZO‰_V€O‰_V€O‰_V€#O‰_#œP%#¢Pb#œP%#¢Pb#¨P0#ÁPË9#œP%#¢Pb#¨P0#ÁP]8zPð2zPB0zPG0#u‰_V€’O‰_V€žO‰_V€­O‰_V€·O‰_V€ÃO‰_#œP%#¢Pb#œP%#¢Pb#¨P0#ÁP0#ÇP<8#œP%#¢Pb#¨P0#ÁP]8#œP%#¢Pb#¨P0#ÁPe8#œP%#¢Pb#¨P0#ÁPo8zPž2zPû/zP¬2zP±2zP 0¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™¥ÉÝÌ«’™V€õN‰_V€‚O‰_#ZO0#ZO0zP"3zP3V€1R‰_V€CR‰_#œPb#¢PJH#œPb#¢PÀHzP0IzPªzPCªzPê«#œP¬†#¢Pb#œPb#¢Pü#œPb#¢Pü#¨Pý¬€-b–-†_·-†_Ã-ÜžÕ-bé-†_ÿ-†_*.bD.†_T.¥†f.†_x.†_.³†™.³†¨.†_¶.†_Á.²Ø.†_õ.†_/Òæ#/³†B/NQ/üa/RÞ|/†_/Àœ¡/†_³/ÜžÂ/³†Ò/†_å/‰_ö/*w0*w0*w,0*w@0†_Q0†_`0†_z0¥††0b§0bÈ0bí0â(÷0†_1†_1t(1†_*1†_F1†_U1¥†f1†_u1†_€1†_™1¥†¬1†_¶1†_Ä1†_Û1†_ë1†_û1b2¥†!2†_(2†_>2¥†F2¥†Q2†_\2ÿ©e2¥†v2†_‚2³†˜2†_©2†_È2†_á2†_÷2†_3†_%3†_<3‰_Y3bc3br3†_ˆ3³†—3†_¦34ù²3†_É3†_Õ3†_á3‰_ì3†_ú3Üž4†_4†_%4†_04†_74†_H4†_P4]g]4†_l4Üžr4bŒ4†_˜4†_£4†_¹4†_Ô4†_ï4†_ö4†_5†_ 5†_-5†_<5†_¨¤bUj¬†•qb^HÙUqHbH€¶Hb™Hb¡H†_©H‡¶ØIøàâIÙUôIÙUJbŸF©¯†_J¥†,J³†=Jb¥è,Ì«ÿ,ǹ½ÙV‰_k¤b4{b4{bǹ½Ç¹½ðXb쥛‡G¦bñ¥›‡ͤ‰_Фbǹ½Uj¬†Á«©Æ¬†¢†_Á«©Æ¬†¢†_ǹ½ûL‰_þLtºÇ¹½¶Àèbǹ½Æ¬†Á«©*bDb`bp³†ÓIÞaZøºtLb&µ¹½½PÁ/M³†Uj¬†´Mbá¥Üž=¦ÜžÙV‰_쥛‡ͤ‰_Фìä'á†_EMlçsb@‘jM‰_Uj¬†ä'áí£ßùk¤bsb9˜sb9˜«M¬†¨¤b¨¤b/¥†4{bÞñ†_ÄMŪÛ¥Lªá¥Õ¹sÎÓ©‹tª·=¦ä½PÁÓMPÁì¥ܹñ¥÷ðXìJ¦óS¦RÂG¦ì\¦óͤ‰_Фì/¥†4{bÞñ†_ÄMŪ›ºªá¥-ÃsÎÑŒ‹t4Ã=¦Ÿ½PÁÓMPÁì¥;Ãñ¥GÃðXìJ¦óS¦RÂG¦ì\¦óͤ‰_ФìäE‘k¤bk¤bk¤b‹ãžù­+Ä¥QÄÌ«ÇÄŸµ¢E¥+ÄÌ«QÄù­+Ä¥QÄÌ«oÅŸµ¢Eǹ½4{bÞñ†_ä'á4·GŸ‹ãž×Mbk¤b¡“RÞJõIÞåMûÉNûÉÈN¹æÇ¹½Ç¹½´MbvObLb쥛‡ñ¥›‡ͤ‰_ФÙUWj´…ÅubáOµïîOKÌ P†_P>P3 NPç‡NPç‡ÒQ¼ÞèQ³†R³† P†_*Rý¬9R¹ÌV€M|‰_V€f|‰_#ZOÀ,#ZObzPMÎzPYÎ#ZOqÎǹ½™øàyï)ÞjOšyTŠTו“TÏœTÊl¥TÏ®T)ϲ–†_½T7ÏÚBÏÏTMÏÐiÞUj¬†Ÿ–´ÀÉÝî­êßù­(à¥àÌ«ãÒ`ZäÐiÞUj¬†qZ‡ÔÖ§bÐiÞÐiÞUj¬†{Ï,ÐiÞÓeÔUì¥Ú*ͤ‰_Фb•WbÐiÞÐiÞ­ž6•ǹ½•Wb¯Wç‡Uj¬†cÕu[áˆ[F©ðb쥛‡ͤ‰_Ф¼â{Ï,¥[⇥[⇥.•WbÜW•WbÜWUj¬†Uj¬†„Ld”âLäì¥'äͤ‰_ФéMÐiÞÐiÞ†WóäUj¬†4{b­ž6•ǹ½¬µï\ç‡ÜW§¼Þ³ À,Uj¬†Uj¬†¯°ê\gä¤bì¥ìͤ‰_Ф;å\b'\bÐiÞUj¬†ÐiÞÐiÞÐiÞUj¬†ÐiÞUj¬†4{b¬µï\燤b+\ÞåÐiÞ†WóäUj¬†4{b­ž6•ǹ½¬µï\ç‡ÜW§¼Þ³ À,ÐiÞ†WóäUj¬†4{b­ž6•ǹ½¬µï\ç‡B\bS\³†i\IØ\bÐiÞÐiÞUj¬†ÐiÞUj¬†ÐiÞUj¬†\\ØÐiÞUj¬†B\b¨¤‘çÐiÞ­ž6•†WÚSZ³†Xbǹ½ÐïiÞ§\À,®\bᥔ=¦”¶\À,ðX¼Þì¥(ñ¥›‡ͤ‰_Ф¼Þǹ½ÐïiÞ§\À,¾\¼Þ5¤bUj¬†5¤bUj¬†Ÿ–´µ ¾Ú~êUj¬†â·ê[¼ÀxUj¬†Ú~êî~êâ·êÇøàúb†_Ú~êî~êâ·êÇøàúb†_Ú~êî~êâ·êÇøàúb†_Ú~êî~êâ·êÇøàúb†_Ú~êî~êâ·êÇøàúb†_™øà™øàúb™øà]û>]1ìÈ”RÞ(]Cì0]û>9]å:E]å:#u‰_3x^Cí3‹^Cí3Ÿ^CíV€4^‰_V€L^‰_V€f^‰_Uj¬†³ À,ðbð¥†Ú–´y¬†µ ¾#œP1›#¢PL›#¨P>5#ÁP>5 _¼Þ¨_üM´_ŒBÄ_ ÞÑ_ Þß_ŸUj¬†ÐiÞÚ–´¨¤*›M¶2ÝÛ`1›ä`>5ó`·Þû`Ùa Þ aL›a Þa Þ(a>5BaüMÚ–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5µ ¾Ja³ªa Þó`·Þû`Ùa ÞYa†_`a>5Ú–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5µ ¾Ja³ªpa<òa Þ߯²Ç¹½Ú–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5µ ¾Ja³ª5¤ópa<ò߯²Ç¹½Ú–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5Uj¬†µ ¾Ja³ª5¤ópa<òÚ–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5µ ¾Ja³ªß¯²Ç¹½Ú–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5µ ¾Ja³ª5¤Mõ߯²Ç¹½Ú–´îÕüMñM¶2ÝÛ`1› aL›ä`>5(a>5Uj¬†µ ¾Ja³ª5¤Mõ߯²Ç¹½Ú–´îÕüMñM¶2Ý[¶ªÛ`1› aL›ä`>5(a>5Uj¬†µ ¾ß¯²Ç¹½ÐiÞÚ–´îÕüMñM¶2Ý[¶ªM¶2Ý߯²Ç¹½ÐiÞÚ–´îÕüMñM¶2Ý[¶ª[¶ªß¯²Ç¹½ÐiÞÚ–´îÕ߯²Ç¹½ÐiÞÚ–´îÕüMñM¶2ݽ„¶ª aL›#u‰_3—aog3¢aogV€…a‰_V€a‰_#u‰_V€‹‰_V€‹‰_V€+‹‰_V€ûЉ_V€5‹‰_V€C‹‰_V€W‹‰_V€b‹‰_V€l‹‰_V€y‹‰_V€Š‹‰_V€¡‹‰_V€¬‹‰_V€·‹‰_#ZO…¢#ZO¡¢#ZOòp#ZOu¢#ZOòp#ZO¹¢#ZO«Õ#ZO…¢#ZO«Õ#ZO«Õ#ZOÓ¢#ZO™#ZOT¢#œPè¢#¢Pô¢zP¢zPœ¢zP—¢zPp¢zP¯¢zP´¢zPª¢zP€¢zP’¢zPÉ¢zP΢zPk¢zPO¢zPã¢#œPb#¢Pb#¨P  #ÁPc¢#ÇP¥†V€y‰_V€‡‰_#œPb#¢PÄi#ZOÄizPçŸzP⟥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥«ÕÌ«ß &e‰_sbÀxŸŠT!*¡¥«ÕÌ«ß -!baZòpaZ¹¢ËogaZ«ÕaZÓ¢ËogV€)5‰_V€2‘‰_#œPb#¢P¬†#¨Pb#œPb#¢P¬†#¨Piª#ÁPå:#ÇPå:#ÍPzP} zP‚õ ™øàñfS™øàúb™øà[lRùfRä'ágvg¹½YeCídžU¢ÇlgvÛžS2g.?gSMgR^gRä'áfbYeCíǹ½3qg³†3€g³†3”g³†3¤g³†3³g³†3Åg³†3îg³†3h³†3@h³†3th³†3>ˆ¸  ³‰_Ex‰_S€MRÔ S€¹hÔ S€–‡Ô S€¼hÔ S€uÔ S€ÅhÔ  ³‰_¥ÉÝÌ«’™¥ÉÝÌ«š¥ÉÝÌ«šÆi19‰áˆÐħaZò’‰òÖ§bbû–bû–¦‰s©#u‰_3Š-o36Š-oV€Û‰‰_V€û‰‰_#‹b(2†_-‹†_K‹†_s‹˜ƒ‹†_œ‹†_*1†_²‹-o-5†_¾‹†_Ó‹†_5†_󌖴öŒ,rýŒ¼Þ(o ¸ ¾š/wï#u‰_3ÔÐ,3åÐ,V€¨‰_V€¼‰_†Žç‡‘Žb«Ž¥†ºŽ³†ÄŽbCP¬b‰_#u‰_3‹Ù3ÙV€•‰_V€{‰_#u‰_3I3+IV€â‰_V€ú‰_µ ¾Uj¬†Ÿ–´ mĵ ¾Uj¬†Ÿ–´ mĵ ¾Uj¬†Ÿ–´ mÄM‰_µ ¾Uj¬†Ÿ–´M}ÄŸ–´ª/µ ¾Uj¬†Ÿ–´ mĵ ¾Uj¬†Ÿ–´ mÄÏmÙ½mIµ ¾Uj¬†Ÿ–´ mÄŸ–´ª/‘—+Š‘b“‘*w¡‘Õ³‘X‘ XË‘˜ïב«Dë‘E5ø‘X’Ã"’({C’«Dg’({#u‰_3”Ï3!”ÏV€t*‰_V€À“‰_V€æ•‰_V€ò•‰_V€ ‰_V€–‰_V€–‰_V€ –‰_#œPb#¢P\Ä#¨P†_#ÁPÕ#ÇPb#ÍPÕ#w”!#}”!#ƒ”Ï"#œP³6#¢PÏ"#œP/N#¢P\Ä#¨P³6#ÁP¬†#ÇPu#ÍPÓS#œPÕ#¢P‰_#¨Pb#ÁP„Œ#ZO‰_#œP‰_#¢P„ŒzPPzP‚~zPà?zPÐ_zP¶zPP3b•Ï"V€6•‰_V€¼–‰_#ZOÏzP´´zPŽ~V€—‰_V€<—‰_#ZO¼Œ#ZOÿWzP-¶zP’Œ±–`¶·–o¶V€Ý—‰_V€ï—‰_#ZO*w#œP*w#¢PfN#¨P({#ÁP‰_#ÇP‰_zPÛ?zPÖ?#ZO‰_é—Äð—Õ˜†_˜ç˜J¹/˜Å<˜H&G˜7U˜f¤a˜†_Ÿ–´ðXcÄ´MÏŸ–´î­jTù­ g¥qºÌ«FŸ–´Uj¬†Ÿ–´ª/µ ¾Ÿ–´†lçûÄ|ĵ ¾Ÿ–´†lçûÄ|ÄðXcĵ ¾Ÿ–´†lçûÄ|ĵ ¾Ÿ–´§¼Þ†lçµ ¾Ÿ–´†lçáÁ|ÄðXcĵ ¾Ÿ–´†lçáÁ|ÄqŠ»†lçqŠ»†lçqŠ»†lçqŠ»†lçqŠ»†lçqŠ»†lçµ ¾Ÿ–´±qš!™Ï"ø †_†lçq³"ÿqŸ¼á¥®¼\«½¼ì¥̼ͤ‰_Фà¼#œPb#¢PÃ#¨PнUj¬†ÿqê$¬1G™Ò¾P™Þ¾X™ê$d™ê¾l™ö¾l©ä¿$š‰_A±ö¾á¥nÀ#‡†_±À¬1ì¥xÀͤ‰_Ф1šœ-‰šö¾š#Á¥š:Á±š}ÈšPÁÙš‰_&µç¤ârdÁârç¤ªÍ .yb»›n%›n%ðX´-ì¥Åͤ‰_Ф´-ârç¤á¥uÃ\«ÆñncÄLbÙV‰_È—+ì¥Æͤ‰_Ф3Æèr†_ œç¤InbUj¬†s‰_s‰_œ¶ÇœÙÇ%œåÇ©µÃ.œ‰_5œ‰_>œñÇGœüÇUœüÇjœµœ¥ÉÝÌ«šù­ÉÝ¥›ËÌ«ÉÈm¦ÙÇM´-‰r>&#u‰_3©ž[23»ž[23Ìž[23Ûž[2V€ž‰_V€y‰_V€†‰_V€‰‰_V€Vž‰_V€‰_V€—‰_V€©‰_V€‘ž‰_#ZO¯Ì#ZOC&#œP‰_#¢P´-#ZO[2#œP[2#¢PC&zPé2zPÈ2zPä2zPQ2zPV2õjC&M‰_ù­ÔÐ¥ðÐÌ«3ÑInbInbUj¬†KsÔ&úÌ&Uj¬†¨¤–´Uj¬†¨¤–´~”œ-‰r>&oÀ~”œ-/tÐ,5t—+;t[2 C& ‰_ÙV‰_쥒4ͤ‰_ФÕ~”œ-oÀUj¬†~”œ-Uj¬†M}Ä~”œ-‰r>&oÀCÁ|ÄøtJÄUj¬†¿Õ~”œ-‰r>&oÀ# Õ, Õl ¯8«r›8~”œ-‰r>&oÀUj¬†~”œ-‰r>&oÀ~”œ-‰r>&Uj¬†q —+…{À„LJÄ~”œ-‰r>&oÀUj¬†nÆ~Nr[2âL¨Àq —+K¿!~”œ-Ÿ–´ª/~”œ-Uj¬†~”œ-Uj¬†Uj¬†µ ¾Ÿ–´ mÄ~”œ-¨¤–´~”œ-‰r>&oÀUj¬†r[2ÿ¥\ÄŒ Ü,ÚvfN™y†_” †_Õw†_´±³6¯w†_  Õ­ Õà³6Ù ³6í ³6ü ³6¡Ü,%¡Ü,2¡Õ@¡Ã~”œ-‰r>&Uj¬†v +~”œ-‰r>&oÀ~”œ-‰r>&oÀUj¬†r[2]¡Ü,g¡¨À™y†_” †_Õw†_´±³6¯w†_s¡0@~¡´-~”œ-Uj¬†ˆ¡ÄŽ¡ôE”¡¨À~”œ-Uj¬†ˆ¡Ä˜¡¨ÀŽ¡ôE~”œ-Uj¬†ˆ¡Ä~”œ-oÀUj¬†~”œ-‰r>&oÀΗ+ˆxcÄ‹x—+ŽxcÄ‘x—+Uj¬†vx¨À)ÎV¬Î”¬r[2~”œ-‰r>&oÀ¢x—+«x—+Uj¬†vx¨À)ÎV¬ÎÒ¬r[2Uj¬†µ ¾Ÿ–´ mÄUj¬†µ ¾Ÿ–´ mÄ¥¤ÛÌ«TJenJÄUj¬†%yÃâL¨À¨¤–´Uj¬†µ ¾Ÿ–´ mÄ~”œ-Uj¬†aZ¿LUj¬†µ ¾Ÿ–´ mÄ~”œ-‰r>&oÀUj¬†jjÕµ ¾Uj¬†Ÿ–´ mÄÏmÙ½mIUj¬†~”œ-É¡ÀUj¬†~”œ-oÀØ¡nSØ¡nS~”œ-oÀè¿nUUj¬†ç¡bý¡Õ ¢i¢wRI{b~”œ-‰r>&»{¨ÀÄ{Õ…{À{Í-á¥ôÞçz†_)¢ÁU°z({÷iü|E¢(ßì¥3ßͤ‰_Фlß~”œ-‰r>&»{¨À÷{\,|g,Ä{Õ…{ÀK¢Í-á¥\áN¢\,{Í-ì¥páðXlßñ¥|áJ¦•áS¦páG¦lß\¦|áͤ‰_ФlßUj¬†µ ¾Ÿ–´ mÄŸ¿L~”œ-Uj¬†W¢-Z§|X÷E5d¢Õt¢ X~”œ-oÀUj¬† mÄ~”œ-Uj¬†}“~ä{À~”œ-Uj¬†ä{À…{ÀUj¬†ä{À‚¢Õ~”œ-oÀ‰r>&’¢µœ~”œ-‰r>&oÀ ºÐ,‰r>&¡Àsb‰_sb‰_~”œ-‰r>&®~ÃoÀŒ~Á,½~™r[2oÀUj¬†~”œ-‰r>&oÀUj¬†ˆƒ—+°¢ÿWX}cĨ€b~”œ-‰r>&oÀUj¬†Õ€cÄÜ€-Zð€–|ˆƒ—+´¢À°¢ÿW~”œ-‰r>&oÀz“èt—+~”œ-‰r>&oÀUj¬†Õ€cÄÜ€-Zð€–|K¿!~”œ-‰r>&oÀUj¬†ð€–|Ü€-Z~”œ-‰r>&oÀð€–|¨¤–´‚£/aZiŸ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi~”œ-oÀI{bI{b~”œ-ðXcÄŸ–´ª/Ÿ–´ª/¨¤–´‚£/aZi¨¤–´‚£/aZiÄ¢‰_Ÿ–´ª/Ÿ–´ª/¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/~”œ-Uj¬†~”œ-ðXcÄoÀ¡|˜ïG¦ ì¥§ͤ‰_Ф Ÿ–´ª/Ÿ–´ª/~”œ-‰r>&oÀ~”œ-‰r>&ä{ÀUj¬†oÀâLÕ~”œ-ðXcÄõÅ'3~”œ-‰r>&\xC&ixC&oÀ~”œ-‰r>&Uj¬†\xC&ixC&‰r>&‰r>&µ ¾Ÿ–´oÀ# Õµ ¾Ÿ–´oÀµ ¾Ÿ–´oÀoÀµ ¾Ÿ–´~”œ-ðXcÄá¥$Nͤ‰_Ф Ÿ–´µ ¾oÀWƒ˜ï3ËŸîCÁ|Äࢤ/"j‰_袦îªÍ ª »­­îò¢´”þ¢Ñîì¥æîͤ‰_Фòî~”œ-‰r>&†lçðXcÄR£C&^£C&~”œ-‰r>&v +~”œ-‰r>&¦l³ªK‡Å—oÀq>5£u"~”œ-‰r>&¦l³ªK‡Å—oÀ~”œ-‰r>&K‡Å—oÀUj¬†~”œ-‰r>&¦l³ªK‡Å—oÀ~”œ-¦l³ª£J9K‡Å—~”œ-ârç¤Uj¬†ªÍ ›n%»›n%.ybR£ ¾^£–´j£šv£†_!™Ï"~”œ-ârç¤ªÍ Uj¬†CÁ|Äó‡Õ´±³6ͤ‰_Ф´-~”œ-oÀÿ¥\ĉ®˜ïðX ì¥§ͤ‰_Ф Uj¬†µ ¾Ÿ–´ mÄ~”œ-oÀªÍ ~”œ-oÀUj¬†ømüMó‡Õÿ¥\ÄÂo~¼¢nU»­£({*£({=£ÀÏ­ŸUM£ÁU쥌7ñ¥Âóͤ‰_ФÎó~”œ-¨¤–´‚£/~”œ-Uj¬†Ÿ–´ª/~”œ-oÀa£˜ïs£†_ðX ì¥§ͤ‰_Ф ¨¤–´‚£/aZi~”œ-oÀ‘£*ꤣ˜ï°£*êðX ì¥§G¦ ñ¥§ͤ‰_Ф ~”œ-oÀUj¬†ømüMCÁ|Ä…{ÀÉ£†_.yÍ7Ô£†_Xˆ†_ä£Õojbì¥Á7ͤ‰_ФÀöŸ–´ª/Ô£†_.yÍ7ðXŸîì¥æîͤ‰_ФŸîŸ–´ª/¨¤–´‚£/aZi¨¤–´‚£/aZiUj¬†~”œ-oÀUj¬†ømüMë£õMõ£†_¤>á¥ÀöÔ£†_aj†_Xˆ†_¤†_{jÕojb.yÍ7'¤Üž‰®˜ï5¤†_E¤˜ï»­&‚N¤×Q]¤˜ïg¤†_u¤*êì¥?øͤ‰_Фm~”œ-oÀªÍ ‚¤†_¤>á¥BúÔ£†_¤˜ïaj†_¤†_{jÕM‰_.yÍ7›¤É©¤b´¤†_À¤*êì¥kúͤ‰_Ф¥~VjPU~”œ-oÀUj¬†ømüM…{Àó‡Õë£õMs£†_VjPU‚¤†_¤>á¥ÀöÔ£†_aj†_Xˆ†_{jÕojb.yÍ7©¤bKjbˆƒPUË©Àöͤ†_Þ¤†_褆_¤†_ö¤Õ¥b¥Í7¥©ü#¥©ü0¥>—j¢©™ü|ì¥?øñ¥?øðXü|J¦¶üG¦ü|S¦¶üͤ‰_Фü|Ÿ–´ª/Uj¬†¬1Uj¬†~”œ-oÀUj¬†…{À~”œ-oÀUj¬†ƒˆüMó‡ÕªÍ VjPUæm¶7á¥ôÿM‰_K¥Í7©¤b{jÕKjbojb©™ü|‘™mO¥¥~ì¥ͤ‰_ФUj¬†µ ¾Ÿ–´ mÄ~”œ-âr礖‡˜™¥8¥¥*ê³¥*êÅ¥‹(~”œ-e¦wu¦…†¦“•¦¡è ,rÚ–´§¼Þµ ¾˜§À±qšb¦wïµ ¾Ÿ–´3ç§´-3ó§ŒB3¨b”ò3¨™3)¨™3<¨™3T¨™3r¨Ã3}¨[23Ѝ[23¤¨3ºi ³‰_Ÿ–´þªJ«*w«†_ «7Ÿ–´õ©‰_ª‰_Uj¬†t—+ ¢‰_Uj¬†d«i i«i Ÿ–´Uj¬†Î—+d«i Ÿ–´ª‰_Uj¬†n«—+{«‰_i«i Ÿ–´ª‰_Uj¬†Uj¬†Uj¬†Ÿ–´âL¨ÀŒ~Á,~~½§«º,Uj¬† «¬†¦«© Ÿ–´Ÿ–´ª‰_È—+Uj¬† ¢‰_À—+âLÙ²Uj¬†d«i Uj¬†K¿!d«i Uj¬†d«i t—+±«¬† ºÙ²ÿ¥\ÄUj¬†õ©‰_nª*wrª‰_yª¼€ª†_Fªäͤ‰_쥒4µ«‰_ФcuŸ–´Uj¬†`ª‰_õ©‰_jª—+nª*wrª‰_yª¼V€.µ‰_V€7µ‰_#ZOÎ#ZOÀxzPë"zPô"έå$ŒoE5ã­-Zû­¸V€¶‰_V€¶‰_#ZOcÄ#ZOcÄzP&zP&{®`‡®,'’®¬†œÀ¿'sbí%=¦&ì¥/(ͤ‰_ФcÄœÀ¿'sbí%=¦&ì¥/(ͤ‰_Фcį({¯E5¯—!#¯—!‡[¬†ĬÞ̬fŸ–´ù¬-ZŸ–´œÀ¿'œÀ¿'œÀ¿'œÀ¿'è¬ ĬÞ̬fœÀ¿'è¬ Ÿ–´ĬÞù¬-Z­É̬fÌ«è,Ÿ–´ĬÞù¬-Z­ÉŸ–´F­fĬÞM­ —À> Lª¼Þ󌖴–±-Zœ±-Z¥±f­±Þ¶±-Zű ϱ #u‰_3I²*03W²*0V€+²‰_V€9²‰_¾²†_β‰_Þ²³9Uj¬†Uj¬†Uj¬†¨¤–´—À> °½Uj¬†Uj¬†—À> °½°—!—À> —À> —À> Uj¬†—À> —À> —À> aZ<4aZ4Uj¬†ί*0PΗ!Uj¬†Uj¬†ί*0PΗ!Uj¬†Uj¬†ί*0PΗ!Uj¬†—À> Uj¬†ί*0PΗ!Uj¬†—À> —À> ´°xGâL¨À~~½§u°ìkRj¬† «¬†y°º,°åk´°xG/ÎÙ²Uj¬†'\É,Η+—À> Uj¬†Uj¬†ί*0PΗ!Uj¬†´°xGUj¬†‘°—!PΗ!™°w4Uj¬†Uj¬†ί*0PΗ!Uj¬†Uj¬†´°xGUj¬†‘°—!PΗ!™°w4—À> t—+—À> —À> —À> —À> —À> —À> ™´½I ´É­±Þ®´÷¶±-Zg³cÄψìSg³cÄl­-Zû­¸¾³ÅT¾³ÅTĬÞ­ÉĬÞ­Él­-ZF­f­É[¬îXŸ–´[¬îX[¬îXÕ­-ZŸ–´¥«ÕÌ«ß 3êµ[3Gµ[3YµL3dµ/ ³‰_3[¸œ\V€;¸‰_V€X¾‰_#ZO\\zP›ozP!\Ÿ–´Ÿ–´Uj¬†3ƸGpV€ª¸‰_V€.¿‰_#œPE5#¢P—+zPFqzP}k@¹\\V¹p`j¹cĶÐb½¹¬†Ÿ–´Uj¬†Ÿ–´Uj¬†Ÿ–´·1e(cîXŸ–´Uj¬†Ÿ–´(cîXܹæmLª¼Þ󌖴ú¹–´þ¹b’®¬†œÀ‰ÿ¥\Ä쥀æͤ‰_ФçíbYæ<ÖÈ‚FÖ{’¿è¿¸èŸ–´Ÿ–´Ÿ–´—ÌÀxe¿‰_s¿‰_~¿†_‰¿†_F؆_ZØÒæfØÒætØÒæˆØ‰_—؉_¨Ø‰_¿Ø†_ÏØ†_çØ†_ü؆_ Ù†_󌖴öŒ,r ¾fÛ†_rÛ¼ÞyÛÖéŒÛ]g]4†_/wï4ÜÐCÜÀêOÜÎ^ܼ­kÜÎêwÜàêŠÜíêîÂ'ìÔ¾IåsbÈ‚ì¥4ìðX>‰ñ¥€æͤ‰_Ф>‰~”é™~”陨¤“¨¤“¨¤-Z¨¤4“¨¤V“CÁ|Ä]Ç(“aZùCÁ|ÄlÇJ“aZ ‘dž_Ç5å0Ç“?Ç“NÇ|X]Ç(“lÇJ“NÇ|Xdž_Ç5å0Ç“?Ç“NÇ|X]Ç(“lÇJ“Y¦cĨ¤`¨¤`¨¤-Z¨¤`¨¤-Z¨¤`DÈ({PÈE5DÈ({PÈE5Ÿ–´´ÈꟖ´´ÈêàÈ5å~”陑…?´Ÿ–´ðXcÄUj¬†„LJÄUj¬†"ݨÀðX—+enJÄ»bÜ,&Ýn£Uj¬†î¿—+Ÿ–´~”陜À‘ê2jèaZy©~”陜À‘ê{Õ~”陜À‘ê{Õ‘…ü_~”陜À‘ê´°òâL¨À3Íìk=ͽ§Uj¬† «¬†y°º,Eͤ©Kͤ©°åk~”é™´°ò/ÎÙ²Uj¬†©´É,·Ì¤©`Í—+€Í—+~”é™´°òUj¬†œÀ‘ênͤ©zÍ¿!Ÿ–´Ÿ–´Ÿ–´~”é™Uj¬†~”陜À‘ê¥òpÌ«E†¥òpÌ«E†ù­òp¥'§Ì«„ù­òp¥'§Ì«„¥òpÌ«E†¥òpÌ«E†~”陜À‘ê~”陜À‘ê~”陜À‘ê~”陜À‘êUj¬†~”é™t—+Uj¬†¦mJÄ~”陜À‘ê»bº,~”é™ûÀ¤©~”é™ûÀ¤©~”陜À‘êUj¬†Ÿ–´[ݨÀ~”é™ί†_‘…ü_~”é™{mÓБ…ü_®Ñ-Z®Ñ-Z®Ñ-ZÜÑÚЮÑ-Z®Ñ-ZiÝ-ZÜÑÚÐ~”陜À‘ê Ò¸Ð~”é™~”陜À‘ê Ò¸Ð~”é™rݦܚb\ÄA±ކrݦÜ3uÝn%3‚ÝIå3–Ýކ3©Ý¯3µÝ¯3ÅÝ5å3ìÝ5å ³‰_Ÿ–´ª/Ÿ–´ª/‡[bÓ"¬†‡[¨²Ó"¨ÀÚ"¬†‡[¨²Ó"¨ÀÚ"¬†c¬†‡[¨²Ó"]‚Ú"¨Àc¨À€¬†‡[¨²Ó"\ÄÚ"¬†‡[¨²Ó"\ÄÚ"\Äc¬†‡[¬†‡[¨²Ó"7Ú"¬†‡[¨²Ó"|ÄÚ"‰_c¬†‡[¨²Ó"‰_Ú"‰_c¬†‡[¨²Ó"‰_Ú"‰_c¬†‡[¨²Ó"‹xÚ"‹xc¬†‡[¨²Ó"‹xÚ"¬†‡[³†Ó"¬†‡[¨²Ó"¨ÀÚ"¬†‡[¨²Ó"¨ÀÚ"†_c¬†‡[¬†‡[]‚‡[¨²Ó"†_Ú"cÄc${€¬†‡[¨²Ó"‹xÚ"¬†‡[¨²Ó"\ÄÚ"¬†‡[¨²Ó"\ÄÚ"¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†‡[¨²Ó"¨ÀÚ"¬†‡[¨²Ó"¨ÀÚ"¬†‡[¬†‡[¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†‡[†_Ó"¬†‡[¬†‡[¬†‡[¬†‡[¬†‡[¬†‡[¬†‡[¬†‡[¬†‡[–´Ó"¨²Ú"bcÂN€ÂN¬†‡[bÓ"¬†Ÿ–´3ä,FV€ƒÔ‰_V€Ä‰_#œP‹x#¢PÍ7zP1FzPhJh‰_zÕŠ,F˜†_;ÁJM†_e“{-Z†¶¼“IKª9˜±%Õ¼%ÕÉ˼؃Äôcþ qÄ$ úaZÌ&¿¨ÀŸÀú¶Ñ>5ðXcÄŒo¿¨ÀŒoE5¿¨ÀðXcăˆüMá†_Ÿ–´µ ¾Uj¬†áK‚Ÿ–´µ ¾Æà¬†œÀ ÞTáK‚Ÿ–´µ ¾Uj¬†œÀ Þ®ÃK‚§¼Þ§¼ÞŸ–´µ ¾Æà¬†áK‚Ÿ–´µ ¾Æà¬†áK‚â±]‚®ÃK‚Ÿ–´µ ¾Uj¬†œÀ ÞV«üM¿¨À)ªM?o({󌖴|!N…!“Eš!†_ ¾¤!6N¹!MñÁ!¼ÞÉ!=NÎ!†_ñ!†_ø!†_"ŒB"¡²"-¾("³†3˜#'V€R#‰_V€؉_V€$؉_#œPºð#¢P@Q#œP ƒ#¢Pºð#¨P@QzPVTzPµðzPßð»ãGQ»ãGQLb»ãGQ»ãGQüMñœÀ ÞÕ㬆Inbî–ÀüMñœÀ ÞÕ㬆Inbî–À~”ÖUj¬†œÀ Þ#œP®Â#¢PÓSUj¬†Uj¬†läŸ#œP~#¢Pb#¨PbŸ–´Ë$b¨¤|ÄŸ–´#u‰_3/%]3C%]3[%]V€Ú‰_V€é$‰_V€ %‰_#œP({#¢P({#¨P†_#œPñ#¢P˜ï#u‰_3H'Ò3f'Ò3ˆ'Ò3ª'Ò3Â'Ò3ê'ÒV€&‰_V€C&‰_V€y&‰_V€¯&‰_V€Ñ&‰_V€'‰_#œP]‚#¢Pp#¨P¨À#ÁPg#ÇP` #ÍP†_#w”’#}”¨Á#ƒ”u#Çݶ#À†_#œP]‚#¢PY #¨Pg#ÁP` #ÇP†_#ÍP’#w”¨Á#}”u#ƒ”ݶ#dž_#À†_#œP]‚#¢PY #¨P$N#ÁP` #ÇP†_#ÍP’#w”¨Á#}”ݶ#ƒ”†_#dž_#À†_#¹†_#ZOò#œP’#¢P†_#¨P˜ï#ÁPÒ4#ÇPÝl#ÍPp#w”Àc#}”—+#ƒ”u#ǨÀ#À¬†#¹½§#+†_#+K‡´±üMømüMñncÄŸ–´ª/Ÿ–´ª/~”ÖœÀ Þüæ| ç†_$æÒç ¡|˜ï{rÒ4çK‡~”ÖœÀ ÞâL¨À~”Öè\Äßè({¿Ä¨À#ZO7^Ÿ–´ʈ¨²è({}+({ÚéY ‚+©Ÿ¸¶¼’+¬†õê/™+nS~”ÖœÀ ÞâL¨ÀóŽ˼¨¤–´aZÊ~”ÖCÁ|Ä~”ÖœÀ ÞUj¬†óŽ˼|ë,bCÁ|ÄëSb…ë]b~”ÖœÀ ÞUj¬†óŽ˼|ë,bCÁ|ÄUj¬†šbLyA±JÄUj¬†Uj¬†Uj¬†šbLyA±JÄUj¬†Uj¬†#ZOÉ #u‰_3-,Ô13T,Ô1V€Ü)‰_V€é+‰_#œPc!#¢Pn!#¨P$˜#œP¶§#¢Pÿ†#¨Pø†#ÁPCˆ#œPݶ#¢P Š#¨P†_#ÁP†_#ÇP"Ÿ#ÍPÒ4#w”Cˆ#}”ø†#ƒ”¶§#Çÿ†#À¬†#¹½§#u‰_3-[Í3¤-[ÍV€V-‰_V€e-‰_~”ÖœÀ ÞðXcĦmJÄ"ݨÀ¡¹¨ÀUj¬†~”ÖœÀ ÞUj¬†~”ÖœÀ ÞUj¬†ðXcÄ¡¹¨À.¨ÀŸ–´ª/#œPÖ#¢P—+#¨P†_~”Ö¨¤–´¨¤–´’h,(=.,(~”ÖœÀ ÞUj¬†¨¤–´~”Öʈ¨²Uj¬†Ÿ–´Z.JÄ~”ÖœÀ Þ~”ÖUj¬†²}¨À~”ÖUj¬†#u‰_3é.`j3õ.`j3/`j3/`j31/`jV€jb‰_V€{.‰_V€.‰_V€³.‰_V€É.‰_ô/Ì40¿!Ÿ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\ÄŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\ÄŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`jŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`j"jf>ŸU>Ÿ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`jŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`j"jf>ŸU>Ÿ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\ÄŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\ÄŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`jŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾BÌó7Õ€\Ä•Æ`jŸ–´ʈ¨²xó7|󅢇󅢕󅢩󅢷ó¾Bʈ¨²Ÿ–´âL¨À&0—+Ÿ–´–ô†_#u‰_V€½ä‰_V€Ìä‰_V€×ä‰_V€èä‰_#œPÇÁ#¢P¬†#¨P¬†#œP™s#¢P$˜#¨P¬†#œP9˜#¢P¬†#œP$˜#¢P¬†zPVØzP”szP$ÙzPìÛ#u‰_3 1X331XV€eå‰_V€1‰_#u‰_3ö1ËK32ËK3/2ËKV€†1‰_V€Â1‰_V€Ü1‰_#u‰_3÷2•Q33•QV€Ë2‰_V€ß2‰_#u‰_3…3}p3—3}pV€W3‰_V€m3‰_#œP|Ä#¢PÏ#¨PÕ#ÁP,F#ÇP({#œP|#¢P6Q#œP$I#¢PX#¨PÒ#ÁP#Š#œP$I#¢PX#¨PÒ#ÁPµµ#ÇP¬†#œP|Ä#¢P({#¨PÒ#ÁPÅr#œPÒ#¢P|Ä#¨PÕ#ÁP,F#ÇP({#ÍPÛ¨#w”¬†#}”X#œP|#¢P` #¨P]‚#ÁP({#ÇP({#ÍP¨À#w”#}”Ò#œP$I#¢PX#¨PÒ#ÁPw®#œP‰_#¢P$I#¨P({#ÁP’#ÇPcÄ#ÍPp#w”#}”` #ƒ”Õ#ÇÕ#À,F#¹ݶ#+¨À#+Òk5#Š}5Iý5({6€-}5If6ê 6€-}5If6ê 0¿!~”ÖŒöËKœÀ ÞUj¬†6‰–´ʈ¨²ÙV‰_᥉_쥒4ͤ‰_ФÓSs÷(PÙV‰_쥒4ͤ‰_Фu~”ÖœÀ Þ~”Ö~”Ö2j«N¨¤–´~”ÖœÀ Þ¡|˜ïUj¬†â±]‚è({üæ|_÷qÄké({$æÒ™÷¨Àç¨À¸äÄÇs÷(P~÷¨À‡6(P“6ÄÇ 6¨ÀâL¨Àͤ‰_Ф´w~”ÖœÀ Þ¡|˜ïs÷(PUj¬†â±]‚è({üæ|_÷qÄké({$æÒ™÷¨Àç¨À¸äÄÇðX´wì¥Gxͤ‰_Ф´w~”ÖœÀ ÞŸ–´ª/Ÿ–´ª/Ÿ–´ª/¨¤–´‚£/aZi~”ÖœÀ Þ~”ÖŒöËK¾ö•QÇö½¼œÀ Þ~”ÖŒöËK¾ö•QÇö½¼œÀ Þ~”ÖŒöËK¾ö•QÇö½¼œÀ ÞÜ÷'S~”ÖŒöËK¾ö•QÇö½¼œÀ Þûö‰_aí¨I~”ÖŒöËK¾ö•QÇö½¼œÀ ÞUj¬†¦6Š]ÙV]‚ÙV]‚²6b~”ÖœÀ Þaí¨ICÁ|ÄUj¬†¦6Š]R„§]~”ÖœÀ ÞUj¬†Uj¬†¹6…¢~”Öpú†_¾ö•QœÀ Þâ±]‚Uj¬†Uj¬†Ã6V‡Uj¬†Wj´…A±ü…ì¥äͤ‰_Ф¶§Uj¬†âL¨À“u¨ÀUj¬†âL¨À“u¨ÀUj¬†Æ6ÏlUj¬†Æ6ÏlòÝl~”ÖœÀ ÞUj¬†Ì6ÀcUj¬†Ó6ÝlÙ6ÝlâL¨ÀšÍ}Uj¬†ß6þjUj¬†`9˜~”ÖœÀ ÞUj¬†`9˜á¥ļ-‘‰_å6w‚ì6JÄü6—+ 7Ýl7GmšÍ}~”ÖœÀ Þ`9˜ZOļ!7¾jzÌþjUj¬†Ã6V‡Uj¬†/äV‡Uj¬†/äV‡šÍ}Uj¬†øtJÄzÌþj%7¨ÀšÍ}%7¨ÀŸ–´~”ÖUj¬†+7†_%7¨ÀzÌþjšznSUj¬†ûùl~”ÖœÀ ÞUj¬†77«mû’&ûp/ûu8û†_AûݶJû†_šÍ}Uj¬†CÁ|ĦmJÄ?7þjUj¬†ÅblÅblUj¬†Uj¬†ûùl~”ÖœÀ Þ„gaí¨IïÀcêjáú¶§û’&ûp/ûu8û†_AûݶJû†_ûùl~”ÖœÀ Þû’&ûp/ûu8û†_AûݶJû†_~”ÖœÀ Þaí¨IÈ$˜~”ÖœÀ Þ~”ÖœÀ Þ%7¨À}ü†_%7¨À¨¤–´¨¤–´‚£¬†‰£¨À~”Ö~”ÖœÀ Þaí¨IÎ$˜~”ÖœÀ Þ Î$˜aí¨I~”ÖœÀ Þaí¨IÎ$˜~”Öòë¨ÀœÀ Þaí¨IÎ$˜Õ{ƒ ºÙ²Uj¬†`Í—+~”ÖœÀ Þ¨¤–´aZ,(Uj¬†`Í—+šbLyA±JÄUj¬†`Í—+Uj¬†`Í—+~”ÖUj¬†`Í—+šbLyA±JÄ~”ÖUj¬†`Í—+Uj¬†`Í—+~”Ö~”ÖQ7~”ÖœÀ Þòë¨Àaí¨It$˜~”ÖœÀ Þçý¬†óŽ˼çý¬†Z7b~”ÖœÀ ÞKý¨Àžþó„Uj¬†ømüM¦mJÄæm¶7᥅Z7b`7$˜.yÍ7¿Ä¨À}ü†_쥅ͤ‰_Ф …~”ÖœÀ Þ§þb~”ÖUj¬†CÁ|ĦmJÄf7—+žþ0„.yÍ7Uj¬†CÁ|Äžþ0„CÁ|Ä~”ÖœÀ ÞUj¬†=ÿbŸ–´~”ÖœÀ Þm7[Í~”ÖœÀ ÞUj¬†âL¨ÀPα~”ÖœÀ Þ~”ÖœÀ ÞPÎRÍGÕ#Šöäø†ˆ7"Ÿ®åħŸ~y˜ïš7#Šì¥Õˆñ¥Õˆͤ‰_Ф߈~”ÖœÀ Þ§7QŠ'ÿ¥Š~”ÖœÀ Þaÿ¨À'ÿ¥Š~”ÖœÀ Þaÿ¨À~”ÖœÀ Þ~”ÖœÀ Þaÿ¨Àâ±]‚¸äÄÇâL¨Ày˜ï¬7—+~”ÖœÀ Þaÿ¨À~”ÖœÀ Þ~”ÖœÀ Þ~”ÖœÀ Þ ¬†üMñ~”ÖœÀ Þ~”ÖUj¬†¸7å~~”Öîÿþ¶Uj¬†¿7™÷{ŽÒ7a–ß7cĸ7å~ç7({6„uUì7†_â±]‚¬7—+y˜ï8ÐN8ÂN쥚–ͤ‰_ФÍ-~”Öîÿþ¶Uj¬†¸ëƳᥚðXƒ™8ˆš#8†_ì¥Ešͤ‰_Фyš~”ÖUj¬†(8—+08—+vu¨ÀUj¬†¥ñ—+@8cÄþb~”ÖÙ¬†óŽ˼Ù¬†µ ¾h!Í!Íh!Í!Íh!Í!ÍÙ¬†h!Í!ÍÖ§bÙ¬†h!Í!ÍÙ¬†G8¥h!Í!ÍŸ–´ª/h!Í!Í’hFÍ~”Öh!Í!ÍœÀ ÞÖ§]‚~”Öaí¨IœÀ ÞÊ$˜ðXcÄkE5ëÂaZÔ¡~”Öaí¨Iȶ§~”Öaí¨I«¶§~”Öaí¨Ii8¶§h!Í!ÍÖ§]‚b¬† $˜$˜%‰!;‰!åÂNR$˜_$˜l‰!n8¬†b¬† $˜$˜%‰!;‰!n8¬†åÂNh!Í!ÍÖ§]‚~”Öh!Í!Íw8‰!Ö§]‚ö¬†\ÜÁ ºÙ²Uj¬†I $˜\ÜÁ’8½§8¬†§8¬†¼8†_Ç8$˜Ñ8$˜~”ÖœÀ Þm7[Í~”ÖœÀ Þm7[Í~”Öaí¨IPα\ÜÁUj¬†ί†_Pα~”Öaí¨Iú¶§b\ÜÁ~~½§ú¶§ã8¬†í8¬†Hê$˜~”Ö<¨Àaí¨IóŽ˼bF†_±–Àh!Í!Í‘FÍFÍIFÍœÀ ÞNÂ~”Ö<¨Àaí¨IóŽ˼bF†_±–Àh!Í!Í‘FÍFÍIFÍœÀ ÞNÂ~”Öaí¨Iú¶§b\ÜÁ9$˜ú¶§9$˜#9¬†(9¬†~~½§b\ÜÁŽ$˜Ç8$˜-9¬†æO$˜\ÜÁ~”ÖœÀ Þòë¨ÀUj¬†~”ÖœÀ Þòë¨ÀUj¬†49 ÞL ¨À99¨À5 ¬†¨¤–´aZ,(~”Ö5 ¬†H9n£H9n£5 ¬†~”Ö5 ¬†H9n£øtJÄ5 ¬†µ ¾ʈ¨²~”ÖœÀ ÞT9¬†Ký¨À5 ¬†~”ÖœÀ Þ5 ¬†„LÇÁaZn£~”ÖœÀ Þ5 ¬†ûÀ"Vk9¨Àx9ÂN‡9JÄŸ9¨À¨¤–´3<³sb$˜ì¥æ­ͤ‰_Фp©~”Ö5 ¬†óŽ˼~”Ö~”Ö~”Öʈ¨²~”Ö5 ¬†ÙV‰_Ï £ì~”ÖœÀ Þ ¬†ʈ¨²¼9—+¼9—+ ¬†¼9—+ ¬†¼9—+6 †_~”Ö5ßCÜ ¬†5 ¬†óŽ˼L JÄV kîo îÈ ¬á¥¥¬† ÔðÔ¾ÂNÔ9Gð쥹¬ͤ‰_ФG𠬆~”Ö2jé6 †_~”Ö5ßCÜ ¬†óŽ˼L JÄV kîo î~”Ö~”Ö :ÂN5 ¬†~”ÖœÀ Þ ¬†~”ÖM‰_ ¬†':—+ðXcÄ~”ÖóŽ˼<:¨À ¬†ðXcÄb:èk:—+o:èb:è~”Ö ¬†5 ¬†ªè~”Ö~”Ö ¬†~”ÖóŽ˼~”ÖœÀ ÞóŽ˼¨¤–´ ¬†~”ÖœÀ ÞóŽ˼ʈ¨²}î—+~”Ö ¬†~”ÖœÀ Þ~”ÖœÀ Þ“:‚î¿!7~”Ö– ÞâL¨À~”Öˆï¨Àï¨ÀœÀ Þ~”Ö– ÞÙþ¬†Ÿ~Ÿ–´ª/ŸŸ2j6 Ÿ Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/~”ÖœÀ ÞâL¨ÀUj¬†å6w‚¿Õö,F~”Öòë¨ÀHê$˜aí¨I– Þ²n Ÿ–´ª/~”ÖœÀ Þ~”ÖœÀ Þ~”ÖœÀ ÞN¬†T9˜[]‚Ÿ–´ª/~”Ö~”ÖœÀ ÞâL¨ÀóŽ˼Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/~”ÖœÀ ÞŸ~~”ÖœÀ Þ$æÒ~”ÖœÀ Þ~”Öʈ¨²ßè({ké({$æÒHê—+Ÿ–´~~½§Uj¬†6—+;cÄ~~½§Uj¬†6—+;cÄÀÕá¹~”Öʈ¨²œÀ ÞUj¬†~”Ö$æÒüæ|œÀ ÞN¨À~~½§Uj¬†ßè({6—+;cÄT1ZE5~”Ö †_ʈ¨²œÀ ÞUj¬†ZE5aZ¿:aZUj¬†6—+Uj¬†6—+•¿»¿:Uj¬†6—+~”Ö †_®÷$I$æÒÆà¬†üæ|ʈ¨²É:¿:œÀ Þaí¨I~”Ö †_®÷$I$æÒÆà¬†üæ|ʈ¨²É:Uj¬†×:*›Ÿ–´µ ¾Ÿ–´cÖ¶Ÿ–´~”Ö– Þg¨ÀUj¬†JëCˆq]‚znS¸äÄÇcÖ¶~”Ö– Þ~”ÖãX$æÒ®÷$IGÕ#Šy˜ïš7#Šì¥Õˆͤ‰_Ф­¿î]~”ÖœÀ Þaí¨I‰_î]~”ÖœÀ Þî]~”ÖœÀ Þaí¨I‰_î]~”ÖœÀ ÞÆà¬†üMñÆà¬†üMñ¶Ÿ-~”Ö¶Ÿ-ë%/;JÄ~”Öá`+;%/~”Ö~”Ö~”Öʈ¨²á`~”Öʈ¨²~”ÖœÀ Þ~”ÖÆà¬†M Þ~ Þˆ0œª-aí¨I¶Ÿ-v£({!™VR~”ÖÆà¬†M Þv£({!™VRaZö5~”Ö~”Ö5({ʈ¨²Ÿ–´ª/~”ÖœÀ ÞuæݶO;†_a;†_Uj¬†m;ƒ™Ûì†_{rĶ|;†_¡|˜ïʈ¨²‡[¬†¤€ÅcbM‰_™;Àx¤€Åcbpuö˜~”ÖœÀ Þ®÷$I$æÒŸ–´Ÿ–´ª/Ÿ–´Uj¬†Ÿ–´ª/Ÿ–´Uj¬†`9˜Ÿ–´Uj¬†‡[¬†~”ÖœÀ ÞCÁ|Äûê({î]ãX$æÒ®÷$Iýõ|šœ–Ç¥;¨Àª;Û¨ýõ|šœ–ÇãXãX$æÒ®÷$I~”ÖœÀ Þýõ|#œPßÝ#¢PÄÈ#¨PÕÉ#ÁP†_#ÇP†_#œPßÝ#¢PÄÈ#¨PÕÉ#ÁP†_#ÇP†_#ÍP‰_Æà¬†üMñ~”ÖI¬†œÀ ÞUj¬†~”ÖUj¬†~”ÖœÀ ÞUj¬†â±]‚Æà¬†®ÃK‚~”ÖœÀ ÞUj¬†•â9˜– Þ~”Öýõ|I¬†œÀ Þt4ÃI¬†œÀ Þ~”Öýõ|I¬†œÀ Þt4Ã~”Öýõ|I¬†~”Öýõ|I¬†œÀ ÞZÒÑŒ~”Öýõ|I¬†œÀ ÞbĶZÒÑŒ´±üM~”ÖœÀ Þâ±]‚ZÒÑŒbĶuælUj¬†‰®˜ï@â¬~”ÖœÀ Þâ±]‚ƒ†_ZÒÑŒbĶuælUj¬†‰®˜ï@â¬~”ÖœÀ Þâ±]‚ƒ†_ZÒÑŒb͉®"ŸuælUj¬†Ø;cþ~”Öýõ|œÀ Þâ±]‚@â¬ZÒÑŒUj¬†bĶ~”ÖUj¬†~”ÖÆà¬†œÀ ÞUj¬†â±]‚®ÃK‚Uj¬†ËÇüMPΗ!á“á-ZœÀ ÞUj¬†5á¢!PΗ!®÷$IUj¬†PΗ!PÎÊ?÷iu"~”ÖÆà¬†œÀ ÞUj¬†å;†_ø;u"~”ÖœÀ ÞUj¬†•â9˜– Þ~”Öýõ|œÀ ÞbĶuæݶUj¬†`9˜ƒ†_ZÒÓ©‰®"Ÿ~”Öýõ|Æà¬†œÀ Þtª·œÀ Þtª·~”Öýõ|Æà¬†œÀ Þtª·~”Öýõ|I¬†.Ò׿iÓ©~”Öýõ|I¬†.ÒלÀ Þ8 ÞAÓ©aZÀ>&c®>~”Öýõ|I¬†œÀ ÞZÒÓ©~”Öýõ|I¬†œÀ ÞbĶZÒÓ©Ø;cþ´±üM~”ÖœÀ Þâ±]‚ƒ†_ZÒÓ©bĶz˜ïuælUj¬†Ÿ–´µ ¾Æà¬†§¼ÞŸ–´µ ¾Æà¬†/<˜ï@<˜ïP<˜ïaZ€6aZ€6:èÀUj¬†&M¨À˜<½K~”ÖŸ–´%¨²¥[${:èÀUj¬†&M¨À~”ÖŸ–´%¨²8‰_¥[${~”ÖŸ–´%¨²8‰_~”Ö%¨²%¨²~”Ö%¨²Ÿ–´¢<LªsbÕ¹ì¥ܹͤ‰_Фª·Ÿ–´~”Öó`u"%¨²Uj¬†u¤˜ï%¨²¿ˆ¡²~”Ös>5%¨²Uj¬†pa<òs>5%¨²Uj¬†Ÿ–´~”Öó`u"%¨²u¤˜ïŸ–´pa<ò~”Öó`u"s>5%¨²Uj¬†ÀüM~”ÖUj¬†Ÿ–´ß¯²Þñ†_~”Öa Þ% ÞUj¬†u¤˜ïJ9Ÿ–´B¼Þ߯²pa<ò lçJa³ª!†_Þñ†_~”ÖØ;cþŸ–´ýŒBµ ¾B¼Þ߯²@|³†üMñœÀ Þpa<ò lçJa³ª!†_Þñ†_¢<LªŸ–´°<ºªsb-Ãì¥;Ãͤ‰_Ф4ÿˆ¡²ʈ¨²~”Ö¹i Þ½<>5Ja³ª¹i Þ½<>5߯²Ja³ª~”ÖØ;cþŸ–´ýŒBµ ¾B¼Þ߯²@|³†üMñ¤í Þ°<ºªJa³ªUj¬†Uj¬†6‰–´ʈ¨²sbÀxãoèãoèk±Ķf=˶l=Ö¶¸äVøˆƒݶÄ>¬†‰®"ŸÓ>]‚Ù>9˜ä>¶§ͤ‰_Фµµ~”Ö½Ð@ú~”ÖœÀ Þ³i¼·¹ikñ{Õö,F~”ÖœÀ Þ³i¼·¹ikñ~”ÖœÀ Þ~”Ö~”ÖœÀ ÞUj¬†½Ð@ú~”ÖœÀ Þýõ|Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/~”Öaí¨IœÀ Þ~”ÖœÀ ÞUj¬†Uj¬†Uj¬†ÚEfN~”Öaí¨IœÀ Þ~”Öaí¨IœÀ Þ~”Öaí¨IœÀ ÞâL¨ÀUj¬†~”ÖømüMïÀc~”Öaí¨IømüMUj¬†œÀ ÞâEÆê~”Öaí¨IømüMm?ÄÈUj¬†œÀ ÞŸ–´Ÿ–´ª/8Uj¬†¨¤ ¾CÁ|Äo@€~@böEÍ Uj¬†¨¤ ¾o@€F|Ä~@b¬Í ~”ÖømüMUj¬†+(Õo@€~@bŽ@†_áÁ|ÄŸ–´ª/Ÿ–´ª/~”Ö ç†_F†_¡|˜ïFÓ~”Ö ç†_F†_~”Ö¾ö•Q– ÞŒöËKaZ(~”Ö¾ö•Q– ÞŒöËKaZ(~”ÖCÁ|Ä– Þ~”Ö– Þaí¨I ç†_¾ö•QF†_Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/~”ÖUj¬†~”ÖUj¬†~”Öaí¨IòC|– Þ~”Öaí¨IòC|– Þ(F†_~”Öaí¨IømüMUj¬†– ÞâEÆê=¦Æê‡ú«e»­ fïÀc4F³†Ü¢bâL¨Àâ±]‚AFl쥛‡ͤ‰_ФÍ7~”ÖUj¬†‡Oê~”Ö– Þ~”Öaí¨I– Þ$?lê®÷$IᥠÆ÷¬L¸äÄÇUj¬†IFE5+™cÄ쥟 ñ¥›Zͤ‰_Ф\Ĩ¤–´¨¤–´‚£/~”Ö5á¢!ømüM5á¢!ømüM«DüM~”Ö5á¢!ømüM~”Ö5á¢!ømüMÞDüMêDJÄ~”ÖâL¨À¨¤–´8E†_~”Ö5á¢!~”ÖœÀ Þýõ|~”ÖœÀ Þ~”Ö ç†_– Þ~”Ö ç†_aí¨I– ÞXA}p~”Öaí¨I– Þ~”ÖœÀ ÞOFöUFö~”Öaí¨IUj¬†– Þ¾ö•QUj¬†6‰–´ʈ¨²~”ÖœÀ ÞUj¬†~”Ö ç†_aí¨I– ÞXA}p~”Ö ç†_aí¨I– Þ~”ÖœÀ Þýõ|aí¨Iz̶7~”Ö5á¢!ømüMì¥1-ͤ‰_Ф™Ÿ~”ÖŸ–´»FöÐFöÞFöìFn)¥[${Ÿ–´[ݨÀŸ–´[ݨÀŸ–´ª/~”ÖŸ–´»FöÐFöÞFöìFn)ømüM~”ÖŸ–´»FöÐFöÞFöìFn)Ÿ–´ª/Ÿ–´ª/Ÿ,(Ÿ,(aZ".Ÿ,(aZ".~”ÖœÀ ÞŸ–´ G`.Gž(~”Ö5á¢!ømüMì¥1-ͤ‰_Ф™Ÿ~”ÖŸ–´»FöÐFöÞFöìFn)¥[${Ÿ–´ª/~”ÖŸ–´»FöÐFöÞFöìFn)ømüM~”ÖŸ–´»FöÐFöÞFöìFn)Ÿ–´ª/Ÿ–´ª/Ÿ,(Ÿ,(aZ".Ÿ,(aZ".~”ÖœÀ ÞŸ–´ G`.ËGž(Ÿ–´CÁ|Ä#u‰_3aLd93ŽLd9V€ó2‰_V€3‰_V€3‰_V€*3‰_V€ÍK‰_V€L‰_#ZOç9#œPþ¶#¢P$˜#¨PÕ#ÁP¬†#œP|Ä#¢P±#¨P†_#ÁP†_#ÇP¬†#ZOë(zP4<zP@<zPL<zP¿7#œP Þ#¢P|Ä#¨P({#ÁP¨À#ÇPi<#u‰_3Oí<3.Oí<V€à3‰_V€ó3‰_V€4‰_V€4‰_V€mN‰_V€¹N‰_#œPç9#¢Pî3#œP—+#¢PÕ#ZO>#ZO‰_zPÄ7zP?zP™?zP¥?#œP|Ä#¢P»?#u‰_3¡Q@3ÎQ@V€Í4‰_V€à4‰_V€í4‰_V€5‰_V€ Q‰_V€YQ‰_#œPç9#¢Pî3#œP—+#¢PÕ#ZO>#ZOîAzPnBzPzBzP†BzP’B#œP|Ä#¢P¨BPÎâ(Íë(ì¥Cͤ‰_Фd9~”ÖCÁ|Äç¨ÀKý¨ÀbS({tSyCS ÞŽS¨I›S‰_¨SE5µSâ(~”ÖCÁ|Äç¨ÀKý¨ÀbS({aZFÂSi<ËSi<ðXd9ì¥VGͤ‰_Фd9~”Ö…J ÞCÁ|Äaj†_Ÿ–´ª/~”ÖÆà¬†~”ÖóŽ˼Æà¬†ç¨ÀbS({~”ÖóŽ˼ÛJE5Æà¬†~”Ö…J Þʈ¨²5({Æà¬†øS¤5~”Ö…J Þʈ¨²5({Æà¬†øS¤5~”Ö~”Ö~”ÖT¨B&T@=¦†BPÎ>ì¥öQͤ‰_ФR/T,FCÁ|ÄBTbR~”Ö…J Þaí¨Iʈ¨²5({aZö5ÓJ–7á¥:ULTi<bS({ëSd9=¦¿7Íë(ì¥?UðX${ñ¥SýJ¦VGG¦${S¦Sýͤ‰_Ф${5({¥[${ì¥Sýͤ‰_Ф¨Àˆ0,K¶7=öÛPá¥4VST»?Tí<=¦Ä7ZTç9ì¥9Vñ¥CVJ¦MVͤ‰_Ф¨ÀkT`kT`V€\<‰_V€r<‰_#œP—!#¢P†_#¨P†_#œP—+#¢P†_zP£QzPï[+W|Ä5W({QWíhdWcÄuWê ŒWE5žWÕºW,FÔWÕìWcÄXŒB#ò‰®"Ÿ~”ÖœÀ Þ~”ÖœÀ Þ~”ÖCÁ|ÄUj¬†bS({œÀ ÞŸ–´ª/V€f=‰_V€l=‰_V€t=‰_#ZO†_#œP†_#¢P‰_#¨P‹x#œP†_#¢PcÄ#¨P/NzP¶kzPÂkzPOZ¿ZáÐZ–´âZøkìZ-ZUj¬†b\bR~”Öʈ¨²Àâ%ÕUuç9/T,FCÁ|Äá¥o\« pðXcÄõʼn_V€\‰_V€×\‰_#ZO>zP„szPszPœsUj¬†6‰–´ʈ¨²~”Ö~”Öø]ò^5sbcÄ쥛ZðX™Nñ¥¶ ͤ‰_Ф™N#u‰_V€[‰_V€[‰_V€ [‰_V€4[‰_V€F[‰_V€N[‰_V€X[‰_V€_[‰_V€g[‰_V€m[‰_V€v[‰_V€‚[‰_V€Œ[‰_V€ž[‰_V€«[‰_V€±[‰_V€Á[‰_V€Ï[‰_V€×[‰_V€ê[‰_V€õ[‰_V€ý[‰_V€\‰_#ZO\Ä#ZO’N#œPw‚#¢P¨À#¨P‰_#ÁP¬†#ZO™N#ZO|Ä#ZOœT#ZO]‚#ZO)V#ZO"V#œPb#¢P£T#œPb#¢P–À#œPb#¢P–À#ZO¨À#ZO¨À#œPb#¢PJÄ#œPb#¢PÛN#¨PÐN#œPb#¢P\Ä#ZOb#ZOK‚#ZO]‚#œP]‚#¢P¨À#œP]‚#¢Pļ#ZOK‚zPUÄzP~‚zP=ŠzPXzP=‚zP…‚zPmzPËÀzPVzP´NzPÀzPÄÀzP£ŽzP—„zPCÄzPÉNzPp‚zPD‚zP’xzPð zPzŠzPV‚zPªŽV€«^‰_V€´^‰_#œP\Ä#¢P3#œPÍ #¢Pü|#¨P3zP£ zPœ #u‰_3 Šaò3$ŠaòV€Ï‰‰_V€ï‰‰_q‹¨²~‹Ð‘‹£! œ‹°! ³‹°! Ø‹ÒÔæ‹ÞÕü‹ÞÕ ŒËÕ@ŒËÕnŒÑŒÉ #u‰_3׌›×3㌛×V€ÅŒ‰_V€ÏŒ‰_8u3å6w‚âL¨ÀUj¬†Ö§b‰_å6w‚âL¨ÀUj¬†µ ¾Uj¬†Ì ç‡8u3ª½ÀCÁ|ÄŸ–´ª/CÁ|ÄCÁ|ÄŸ–´ª/Ÿ–´ª/øt›×á†_Ÿ–´µ ¾Uj¬†ûÄ|ÄóŽ˼Ÿ–´µ ¾Uj¬†óŽ˼óŽ˼ûÄ|ÄóŽ˼ûÄ|Ĩ¤›×óŽ˼ûÄ|ÄŸ–´µ ¾óŽ˼Uj¬†#u‰_3ŽªM3­ŽªMV€%މ_V€Wމ_)ªM#u‰_3±lÀ3ÑlÀV€G‰_V€y‰_3Á,çV€n‰_V€—b‰_#ZO‰_zP* zP** #œPlÀ#¢P,ç#u‰_3׌í* 3ãŒí* V€ÅŒ‰_V€ÏŒ‰_µ ¾Uj¬†Uj¬†Xb+(Õ•qu¤µ ¾Uj¬†ûÄ|Ä+(Õû¼nÜ•ÆüÔ=¦üÔ’éM쥅+ ͤ‰_Ф|Ä¥«ÕÌ«ß XbûÄ|Ä-¾Uj¬†¦mJÄ-¾qx,çUj¬†¦mJÄCÁ|Äl[N’éM"’b1’|Äì¥, ñ¥¡, ͤ‰_Ф¨ÀóŽ˼Ÿ–´-¾Uj¬†¦mJÄCÁ|ÄóŽ˼-¾ñy¥†qx,çûy†_Uj¬†Ÿ–´Ex‰_S€í=½¼S€=’½¼S€A’½¼S€K’½¼S€X£½¼§’CÞ1zMñ’‰CÞ1zMñ’‰CÞµ ¾Uj¬†µ ¾Uj¬†#œPs/ #¢P‡/ 1zMñ-¾Ÿ¸¶¼Çö½¼óŽ˼aZ‡/ ùf‡/ Uj¬†Uj¬†Uj¬†CÁ|ÄUj¬†áßá¥>ßCÁ|Ä’{"ß6“"ßì¥)ßͤ‰_Ф>ßUj¬†CÁ|ÄóŽ˼»b9˜â±]‚aZ…2 »b9˜â±]‚Uj¬†óŽ˼µ ¾Ÿ–´?“Ÿ3 ßCÁ|Ä’{"ß¿¨Àý“ļ”9˜ì¥)ßͤ‰_Ф5ê’{"ß-¾Uj¬†â±]‚-¾Uj¬†-¾óŽ˼Ÿ¸¶¼â±]‚Uj¬†"yJÚ-¾Uj¬†ZOļ-¾Uj¬†ZOļ-¾Ÿ¸¶¼"yJÚóŽ˼-¾Ÿ¸¶¼"yJÚóŽ˼ ”–9 ’{"ß-À‰_Uj¬†ûÄ|Äq>5’{"ß-¾Uj¬†ZOļ’{"ß-¾Ÿ¸¶¼óŽ˼â±]‚-¾Uj¬†‡[¬†#u‰_3G”ùl3_”ùlV€”‰_V€3”‰_-¾Ÿ¸¶¼JÚóŽ˼-¾Ÿ¸¶¼JÚóŽ˼ ”: ’{"ß-À‰_Uj¬†ûÄ|Äq>5’{"ß’{"ß-¾"yJÚóŽÀxYyí* -À‰_»b9˜Uj¬†’{"ß-¾"yJÚóŽ˼Yyí* ’{"ß-À‰_»b9˜Uj¬†-¾óŽ˼Yyí* "yJÚ-¾óŽ˼Yyí* "yJÚ ”¤; ’{"ß-À‰_Uj¬†ûÄ|Äù>5-¾óŽ˼Yyí* "yJÚ-¾óŽ˼Yyí* "yJÚ ”a< ’{"ß-À‰_Uj¬†ûÄ|Äù>5uÈ9˜Yyí* "yJÚuÈ9˜Yyí* "yJÚ¼”,ýŸ–´¼”,ý-¾Ÿ¸¶¼óŽ˼-¾Ÿ¸¶¼óŽ˼ ”f> ’{"ß-À‰_Uj¬†ûÄ|Äù>5-¾÷€¬††_#ZO™3˜#×áV€R#‰_V€؉_V€$؉_#œPGQ#¢P@Q#œPļ#¢PGQ#¨P@QzP A zP9QzPTQ1zMñóŽ˼Ÿ¸¶¼÷€¬†ZOļ1zMñóŽ˼Ÿ¸¶¼÷€¬†ZOļ-¾÷€¬†ZOļ1zMñ-¾óŽ˼Ÿ¸¶¼¢†_Àļ÷€¬†1zMñ-¾óŽ˼Ÿ¸¶¼¢†_Àļ÷€¬†1zMñ-¾óŽ˼Ÿ¸¶¼¢†_Àļ÷€¬†aZxA »b³†óŽ˼'ƒ†_óŽ˼'ƒ†_¦mJÄUj¬†óŽ˼Ÿ–´²|Ä-¾Uj¬†óŽ˼'ƒ†_Uj¬†óŽ˼'ƒ†_Ÿ–´µ ¾Uj¬†óŽ˼'ƒ†_Ÿ–´µ ¾-¾Uj¬†óŽ˼µ ¾ÔÆ‚èûÀ"Vk9¨À»­&Ox9ÂNì¥B ͤ‰_ФbUj¬†Xƒ’B Uj¬†óŽ˼'ƒ†_¿¨ÀŸ–´µ ¾ç”'-¾Uj¬†óŽ˼Ÿ–´Ô¾ÂNû”³†Ÿ–´'ƒ†_óŽ˼-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼»b³†â±b-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼Ÿ–´µ ¾»b³†Uj¬†óŽ˼Ÿ–´µ ¾'ƒ†_Uj¬†óŽ˼¿ˆ¡²-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼»b³†aZÅ ŸÕ -¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼'ƒ†_»b³†-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼µ ¾»b³†Uj¬†óŽ˼'ƒ†_Ÿ–´µ ¾Uj¬†Ÿ–´¿¨ÀUj¬†óŽ˼µ ¾UjÀxóŽ˼ûÄ|ÄŸ–´UjÀxóŽ˼ûÄ|ÄŸ–´-¾UjÀxóŽ˼ûÄ|ÄUj¬†óŽ˼ûÄ|ÄŸ–´-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼ûÄ|Ä.‚†_Ÿ–´»b³†Uj¬†óŽ˼Ÿ–´ûÄ|ÄUj¬†óŽ˼Ÿ–´Uj¬†óŽ˼Ÿ–´Uj¬†óŽ˼Ÿ–´aZý ûÄ|Ä-¾Uj¬†óŽ˼Uj¬†óŽ˼Ÿ–´aZý ûÄ|Ä•á-¾Uj¬†ûÄ|Ä-¾Uj¬†óŽ˼ûÄ|Ä-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼.‚†_»b³†-¾Ÿ¸¶¼Xƒ’B Uj¬†óŽ˼»b³†â±b•†_CÁ|Ä)•|Ä¿¨À쥡, ðXļñ¥)Zͤ‰_ФļUj¬†óŽ˼Ÿ–´Uj¬†óŽ˼Ÿ–´aZý -¾Uj¬†óŽ˼•á-¾Uj¬†Uj¬†óŽ˼Ÿ–´aZý -¾Uj¬†óŽ˼Uj¬†óŽ˼Ÿ–´aZý Uj¬†óŽ˼ûÄ|ÄŸ–´-¾Uj¬†óŽ˼ûÄ|Ä-¾Uj¬†óŽ˼Uj¬†óŽ˼Ÿ–´aZý ûÄ|Ä•á-¾Uj¬†ûÄ|Ä-¾Uj¬†óŽ˼ûÄ|Ä5á¢!ømüM#ù¨Àì¥1-ðXļñ¥)Zͤ‰_Фļ-¾Ÿ¸¶¼Uj¬†óŽ˼.‚†_»b³†-¾Uj¬†óŽ˼Uj¬†óŽ˼Ÿ–´aZý -¾Uj¬†óŽ˼0•á-¾Uj¬†Uj¬†óŽ˼Ÿ–´aZý 3=—SL V€D‰_V€%—‰_#ZO¨ÀzP9M zPIM µ—†_—øH Ò—†_Ü—†_õê/‡[¨²Ó"JÄÚ"JÄc¬†€¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†€¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†€¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†€¬†‡[¨²Ó"${Ú"h~c¬†€¬†‡[bÓ"¬†Ú"¬†‡[¥†Ó"¬†Ú"Nv‡[–´Ó"¨²Ú"${c¨À€Nv¬†‡[–´Ó"¨²Ú"¨Àc¨À€Nv¬†‡[–´Ó"¨²Ú"¨Àc¨À€Nv¬†‡[¨²Ó"NvÚ"¬†‡[¨²Ó"bÚ"Nvc¬†‡[¨²Ó"Ó?Ú"bc¬†‡[¨²Ó"¨ÀÚ"¨Àc¬†µ ¾Uj¬†ʈ¨²óŒ–´ ¾Š©¡²öŒ,r–©d Ø©=N’®¬†å©YD難²Ÿ–´ò™${#u‰_3œª] 3³ª] V€8ª‰_V€Xª‰_V€†‰_V€ †‰_#œPÂN#¢PJÄ#œPœT#¢P†_zP.` zP<` #ZOgR 3¢«[ V€{«‰_V€•†‰_#ZOÃP zPÏ… zP`R aZè… á CzaZU† ‡[¨²Ó"¥†Ú"¬†c¨À€¨À¬†‚›${ö«pá˜<½K|›[ †›pá‚›${ö«]Œ˜<½KðX${øã±Tû«¥†˜<½KðX${øã±Tt‰_t‰_t‰_t‰_t‰_t‰_t‰_t‰_øã±Tt‰_ðX${t‰_¬${¬-R ˜<½K|›[ Óe${˜<½Kõœ‰_Rj¬†|›[ âL¨ÀÓe${˜<½Kõœ‰_Rj¬†|›[ âL¨ÀÓe${˜<½Kõœ‰_Rj¬†|›[ &M¨ÀâL¨ÀUj¬†ʈ¨²˜<½Kõœ‰_Rj¬†|›[ âL¨ÀŸ–´˜<½Kõœ‰_Rj¬†|›[ âL¨Àô<*ˆŸ–´˜<½Kõœ‰_Rj¬†|›[ âL¨Àpáô<*ˆŸ–´˜<½Kõœ‰_Rj¬†|›[ &M¨À:èÀ˜<½KRj¬†&M¨À:èÀʈ¨²˜<½Kõœ‰_Rj¬†|›[ ˆJÄJÄnµJÄkµJĘ<½Kõœ‰_Rj¬†|›[ ШÀШÀ˜<½Kõœ‰_Rj¬†|›[ &M¨À:èÀ˜<½KRj¬†&M¨À:èÀʈ¨²Ÿ–´>YD˜<½K|›[ †›pá˜<½K|›[ „LJĘ<½KRj¬†|›[ Ÿ–´õœ‰_๨À˜<½KRj¬†|›[ Ÿ–´õœ‰_˜<½KRj¬†|›[ Ÿ–´õœ‰_๨ÀâL¨À˜<½KRj¬†|›[ Ÿ–´õœ‰_๨ÀâL¨ÀøtJĘ<½KRj¬†|›[ Ÿ–´õœ‰_˜<½KRj¬†|›[ Ÿ–´õœ‰_âL¨Ày¨À˜<½KRj¬†|›[ Ÿ–´õœ‰_âL¨ÀøtJĘ<½KŽžÄÇUj¬†¬†_¬†_þbŸ–´Ÿ–´Ÿ–´ʈ¨²Uj¬†¼9—+˜<½KUj¬†µ ¾øtJļ9—+˜<½KÖ§bõœ‰_๨Àñîá GðÔ¾ÂNRj¬†Ö§bŽžÄÇŸ–´Uj¬†ʈ¨²á GðÔ¾ÂN˜<½KRj¬†|›[ Ÿ–´õœ‰_๨Àðž¨À˜<½KRj¬†|›[ õœ‰_๨Àðž¨À˜<½KRj¬†|›[ õœ‰_๨À÷ž¨Àðž¨À˜<½KRj¬†|›[ õœ‰_๨À%7¨À˜<½KRj¬†|›[ õœ‰_๨ÀCÁ|Ä#¬±T˜<½KRj¬†|›[ õœ‰_%7¨À˜<½KRj¬†|›[ õœ‰_ðž¨À˜<½KRj¬†|›[ õœ‰_๨Àðž¨À˜<½KRj¬†|›[ õœ‰_ðž¨À˜<½KRj¬†|›[ õœ‰_๨Àðž¨À˜<½KRj¬†|›[ õœ‰_๨Àðž¨À˜<½KRj¬†|›[ õœ‰_๨ÀâL¨ÀŸ–´˜<½KRj¬†|›[ õœ‰_๨Àðž¨ÀŸ–´Ÿ–´˜<½KRj¬†|›[ Ö§bõœ‰_๨ÀCÁ|Ä#¬±T'¬±T˜<½KRj¬†|›[ Ö§bõœ‰_๨ÀCÁ|Ä'¬±T#¬±T˜<½KRj¬†|›[ õœ‰_๨Àðž¨À˜<½Kyž†_Rj¬†|›[ Ö§bŽžÄÇøtJÄŸ–´Uj¬†µ ¾ʈ¨²õœ‰_„LJÄóys-๨À˜<½K|›[ Uj¬†óys-˜<½Kyž†_Rj¬†|›[ „LJÄþŸÁà¹VRÖ§bŽžÄÇøtJÄŸ–´Uj¬†µ ¾>YDʈ¨²õœ‰_Uj¬†óys-Ÿ¥b Uj¬†¿ˆ¡²ð{ÐáR£¥†^£˼j£¶ÝŸ–´aZçb ˜<½K˜<½Kyž†_|›[ õœ‰_˜<½Kyž†_|›[ ,o({+¬d 0¬™Ÿ+¬d 0¬™Ÿ+¬d 0¬™ŸC¡-d ˜<½Kõœ‰_yž†_|›[ óys-Ÿ–´>YD˜<½K0¬™Ÿ˜<½KRj¬†|›[ óys-Ÿ–´>YD+¬d ˜<½Kõœ‰_Rj¬†|›[ óys-Ÿ–´˜<½Kõœ‰_Rj¬†|›[ ˜<½Kõœ‰_Rj¬†|›[ 4¬¨À9¬¨À™«Ge ˜<½Kõœ‰_Rj¬†|›[ Ÿ–´>¬¨À˜<½Kõœ‰_Rj¬†|›[ Ÿ–´R¬JĘ<½Kõœ‰_|›[ Rj¬†[¬¨À`¬¨ÀŸ–´e¬¨ÀŸ–´˜<½Kõœ‰_Rj¬†|›[ Ÿ–´µ ¾Uj¬†M‰_|lh~˜<½Kõœ‰_Rj¬†|›[ Ÿ–´µ ¾Uj¬†<¡*ˆM‰_»b*ˆm¡h~Ÿ–´>YDµ ¾Uj¬†Ÿ–´>YDµ ¾Uj¬†|lh~‹t-R ö«*ˆ|›[ ¥[${Ÿ–´>YDµ ¾Uj¬†<¡*ˆRj¬†|›[ ¥[${m¡h~Ÿ–´>YDµ ¾ʈ¨²Uj¬†n¬*ˆ<¡*ˆŸ–´ª/˜<½Kõœ‰_Rj¬†|›[ Ÿ–´[ݨÀŸ–´[ݨÀ˜<½Kõœ‰_Rj¬†|›[ Ÿ–´ª/˜<½Kõœ‰_Rj¬†|›[ ˜<½Kõœ‰_Rj¬†|›[ ˜<½Kõœ‰_Rj¬†|›[ —¨À๨ÀâL¨ÀŸ–´ʈ¨²µ ¾Uj¬†óŽ˼Ÿ–´ª/Ǣ㓠Uj¬†Ç¢ã“ y¨ÀaZΔ Ç¢ã“ á > Ÿ–´Ç¢ã“ Ǣ㓠Ǣ㓠µ ¾Uj¬†Ç¢ã“ µ ¾Uj¬†¥¬QøŸ–´¢†_¯¢;— Ò¢VRŸ–´¸¬üðÔ¾ÂNͬ¨À¢†_¯¢;— Ǣ㓠ҢVRá > Ÿ–´µ ¾Uj¬†¸¬üðÔ¾ÂNͬ¨À¥¬Qø¢†_¯¢;— Ǣ㓠ҢVRá > Ÿ–´µ ¾Uj¬†¸¬üðÔ¾ÂNͬ¨À¥¬Qø¢†_¯¢;— Ǣ㓠ҢVRá > Ÿ–´µ ¾Uj¬†¸¬üðÔ¾ÂNͬ¨À¥¬Qø¢†_¢†_¯¢;— º¢;— Ǣ㓠ҢVRá > Ÿ–´µ ¾Uj¬†¸¬üðÙ¬üð,îJÄÔ¾ÂNͬ¨Àî¬JÄ¥¬Qø˜<½Kõœ‰_Uj¬†|›[ &M¨À:èÀ˜<½KUj¬†&M¨À:èÀ˜<½Kõœ‰_Uj¬†|›[ &M¨À:èÀ˜<½KUj¬†&M¨À:èÀõœ‰_þ¬†_Uj¬†u¨ÀŸ–´µ ¾i¨ÀóŽ˼µ ¾Uj¬†óŽ˼µ ¾Uj¬†ý9> óŽ˼Ÿ–´µ ¾Uj¬†˜<½Kõœ‰_6­ÃP ˜<½Kõœ‰_Uj¬†|›[ ˜<½KJ£†_룭™ ˜<½Kõœ‰_J£†_¢†_Ò¢VRUj¬†¢†_˜<½Kõœ‰_6­ÃP ˜<½Kõœ‰_Uj¬†|›[ ˜<½Kõœ‰_J£†_6­ÃP ˜<½Kõœ‰_J£†_¢†_Ò¢VRUj¬†¢†_¥ÉÝÌ«šçŽZš ˜<½Kõœ‰_Uj¬†˜<½Kõœ‰_Uj¬†˜<½KŸ–´˜<½Kõœ‰_Ÿ–´Uj¬†˜<½Kõœ‰_Ÿ–´µ ¾Uj¬†¨¥t µ¥3t À¥ › ˜<½Kõœ‰_Ÿ–´µ ¾Uj¬†9¦Ht ¨¥t µ¥3t µ ¾Uj¬†ʈ¨²¥ÉÝÌ«š˜<½Kõœ‰_6­ÃP ˜<½Kõœ‰_Uj¬†|›[ ˜<½Kõœ‰_J£†_6­ÃP ˜<½Kõœ‰_J£†_¢†_Ò¢VRUj¬†¢†_á Gð˜<½Kõœ‰_J£†_¢†_Ò¢VRUj¬†¢†_˜<½K|›[ õœ‰_˜<½K|›[ õœ‰_Uj¬†˜<½K|›[ õœ‰_J£†_˜<½K|›[ õœ‰_J£†_¢†_Ò¢VRUj¬†á GðóŽ˼Ÿ–´µ ¾Uj¬†˜<½K|›[ ˜<½KUj¬†|›[ ˜<½K|›[ ˜<½K0¬™Ÿ|l— ˜<½K|›[ 0¬™Ÿ+¬d ˜<½K|›[ ʈ¨²;!=NUj¬†&M¨À:èÀʈ¨²;!=NUj¬†&M¨À:èÀʈ¨²;!=NUj¬†|›[ óys-ʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨ÀÔ¡¨Àʈ¨²Uj¬†ʈ¨²;!=NUj¬†|›[ âL¨Àò¡¨À—¨Àʈ¨²Uj¬†µ ¾Ÿ–´Ÿ–´µ ¾Uj¬†óys-ÌyÜ,¥[${]j¨ÀUj¬†˜<½Kʈ¨²¥[${Ÿ–´]j¨ÀUj¬†ʈ¨²;!=NUj¬†O©({W©({ʈ¨²;!=NUj¬†O©({W©({ʈ¨²Uj¬†Uj¬†v©¨À˜<½Ki­¨À3x­]‚3†­³†3¦­Ps ³‰_‡[†_Ó"Ú"¬†‡[¬†#u‰_3+µèà 3Qµèà 3kµèà 3yµèà 3‰µèà V€´‰_V€Í´‰_V€ó´‰_V€µ‰_V€µ‰_#u‰_V€`£‰_V€k£‰_V€u£‰_V€}£‰_V€ˆ£‰_V€“£‰_V€ž£‰_V€­£‰_V€¼£‰_V€Ç£‰_V€Ò£‰_V€Ü£‰_V€ç£‰_V€ñ£‰_#œPV‡#¢P¬†#ZO¬†#œP1#¢PÒ® #¨P¬†#œPW#¢P¬†#œPW#¢P¬†#œPaÌ #¢P1#¨P¬†#œPLy#¢PJÄ#¨PW#ÁP¬†#œP|Ä#¢PW#¨P¬†#œPW#¢PJÄ#¨P¬†#œPW#¢P¨À#¨P¬†#œP|Ä#¢PJÄ#¨PW#ÁP¬†#œPbl#¢Pbl#¨P¬†#ZO¬†#œP¨À#¢P¨À#¨P¨Ð #ÁP¬†zP¾»zP1Ñ zP1zPÙ® zPà® zP© zP© zPþ¨ zPç® zP © zPî® zPã½ zP›Ñ zP÷¨ #œPcÄ#¢PY #œP1#¢P'3#¨Påk#ÁP¬†#œP·¡ #¢P“½ Ÿ–´µ ¾2¹Y ;¹…¢#u‰_V€¼¥‰_V€Æ¥‰_V€Ï¥‰_V€Ù¥‰_V€â¥‰_V€ò¥‰_V€ü¥‰_V€ ¦‰_#œP0£ #¢P™Ÿ#œP0£ #¢P‰_#œP0£ #¢PJÄ#¨P‰_#œP0£ #¢P|Ä#¨PJÄ#ÁP‰_#œP0£ #¢PLy#¨PJÄ#ÁP‰_#œP0£ #¢P¨À#¨P‰_#ÁP‰_#œP0£ #¢P|Ä#¨P‰_#ZO¨ÀzP)£ zP7£ zP>£ zPE£ zPL£ zPS£ zPZ£ zPõ£ 3ãº¢× V€ï¦‰_V€½º‰_#œP0£ #¢Pø¶ zPÖØ zPæØ Uj¬†Ÿ–´Uj¬†Ÿ–´Uj¬†rd¦ „LJĉ_Uj¬†¦mJÄCÁ|ĸëÜ,Uj¬†}nLy¦mJĸëÜ,Ÿ–´Uj¬†rd¦ âL¨ÀÙV‰_–‰_Uj¬†GÄ|ĸëÜ,Uj¬†rd¦ ÙV‰_^»¥ Ÿ–´dvÇÔCÁ|ÄŸ–´Uj¬† ¯ø¶ w»d¦ Ÿ–´Ÿ–´Ÿ–´Ÿ–´Uj¬†Ÿ–´#œP0£ #¢P^¨ #¨P1#œP‰_#¢P¨ #¨P±#œP‰_#¢P\u#¨P0£ Ÿ–´Ÿ–´È—+Uj¬†Ÿ–´È—+Uj¬†M‰_#œP‰_#¢P\u#¨P¬†FªäŸ–´Ÿ–´ ±({enJÄÁ»nSŸ–´Á»nSȱ±Uj¬†Ÿ–´‘¯Äà •q0£ Ÿ–´µ ¾Uj¬†;g\uŸ–´ʈ¨²µ ¾ «¬†\st±†_pïèà +±cÄ ±({ï¨ÀFªä0±†Ã u±–à ~±‰_‘¯Äà F®ØÃ g°q¬ •q0£ X¯· ²^¨ ‘°'3Ÿ–´µ ¾ «¬†;g\uŸ–´µ ¾ «¬†‘¯Äà •q0£ a²ø¶ Fó“½ •qÀxͲ£½ æ²‰á Ÿ–´ «¬†‘°'3³JÄUj¬†-‘‰_³‰_Ÿ–´ «¬†‘°'3³JÄ «¬†•³'3ʳ·¡ Ú»LyenJĦmJÄÚ»LyenJÄŸ–´ «¬†ʳ·¡ âL¨ÀâL¨ÀÞ²W «¬†ʳ·¡ GÄ|ÄGÄ|ÄŸ–´ «¬†‘°'3ʳ·¡ ỨÀŸ–´ʈ¨²µ ¾ «¬†\st±†_pïèà +±cÄ ±({ï¨ÀFªä0±†Ã u±–à ~±‰_‘¯Äà F®ØÃ ‘°'3•³'3¹idà •q0£ Fó“½ •q0£ Fó“½ •¿æ  «¬†ʳ·¡ enJÄenJÄŸ–´ «¬†ʳ·¡ ¦mJÄ •‹x¦mJÄCÁ|ÄŸ–´ «¬†•q0£ Fó“½ ʳ·¡ ¦mJÄCÁ|ÄCÁ|ÄŸ–´ʈ¨²µ ¾ «¬†\st±†_pïèà +±cÄ ±({ï¨ÀFªä0±†Ã u±–à ~±‰_‘¯Äà F®ØÃ |œx½ è»^¨ •q0£ ʳ·¡ Ÿ–´ʈ¨²µ ¾ «¬†\st±†_pïèà +±cÄ ±({ï¨ÀFªä0±†Ã u±–à ~±‰_‘¯Äà F®ØÃ ð» Ÿ–´ʈ¨²µ ¾ «¬†\st±†_pïèà +±cÄ ±({ˆï¨Àï¨ÀFªä0±†Ã u±–à ~±‰_‘¯Äà F®ØÃ ¼üÇŸ–´Ÿ–´Ÿ–´µ ¾Uj¬†&M¨Àõœ‰_Ÿ–´#u‰_3åÀ$ì 3÷À$ì V€°‰_V€ÑÀ‰_õœ‰_Ÿ–´µÀxUj¬†õœ‰_Ÿ–´µÀxUj¬†Ÿ–´µ ¾Uj¬†&M¨Àõœ‰_d¼$ì õœ‰_Ÿ–´µ ¾Uj¬†õœ‰_Ÿ–´µ ¾Uj¬†Ÿ–´µ ¾¥[${Uj¬†y¼¨ÀŸ–´µ ¾¥[${Uj¬†Ÿ–´BÁ`Ÿ–´µ ¾Ÿ–´¥jTÌ« g‡[¨²Ó"|ÄÚ"bc€¬†‡[¨²Ó"|ÄÚ"cÄccÄ€ì~‡[¨²Ó"¯7Ú"¯7cú~‡[¨²Ó"üMÚ"üMcú~‡[¨²Ó"Í7Ú"Í7cú~‡[¨²Ó"¨ÀÚ"¬†#u‰_3Â6 3BÂ6 3lÂ6 3ˆÂ6 V€GÁ‰_V€ƒÁ‰_V€ÉÁ‰_V€óÁ‰_#œP6 #¢P|Ä#¨P]‚#ÁPÜ #ÇP#ÍPVR#w”†_#œPÂN#¢P†_#œPŽ#¢P™#¨Pª#ÁP£T‡[¬†‡[¨²Ó"å~Ú"ÐNc–´€ ¾¬†#œP¨À#¢P¬†#¨P†_#ÁPÀx#œPÀœ#¢P†_#¨POR#ÁP†_#ÇP¥†#ÍP¨À#œPÐ#¢P‘ñ#¨P*V€‘²‰_V€¤²‰_V€º²‰_#œP»N#¢PÂN#¨PJÄ#ZO)V#ZOœTzPG´zPU´zP\´#œP]‚#¢P0´#¨P*#œP]‚#¢P*#œPüð#¢P°#¨P†ñ#ÁP°#ÇPS°#œPÂN#¢PJÄ#¨PJÄ#ÁPJÄ#ÇP`ø#ÍP¨À#w”Qø#}”Ôð#ƒ”Bø#ÇBø#Àüð#¹üðÖ§bšÉBøŸ–´¹i‘ñÖ§bšÉBøÖ§]‚ªÉü𿈡²í½7 Uj¬†óŽ˼Ÿ–´µ ¾¹É¨À¿ˆ¡²6 †_í½7 Uj¬†óŽ˼Ô¾ÂN¾†_¾†_Ÿ–´µ ¾ͬ¨ÀÇɰšÉBø¿ˆ¡²6 †_í½7 Uj¬†óŽ˼Ô¾ÂN¾†_¾†_Ÿ–´µ ¾ͬ¨ÀŸ–´µ ¾Uj¬†&M¨Àd¼$ì ÙÉ*w¿]‚Inbè ,rŸ–´µ ¾Uj¬†%î†_Ô¾ÂN ye-,îJÄ’MÜ,DÀ†_Ÿ–´Uj¬†Uj¬†Uj¬†Ÿ–´Uj¬†öÉ«) âL¨ÀʨÀþ̉_/Ío”?o({á¥Ù8 ¥[${;ÍéMì¥î8 ͤ‰_ФéMFÍo”Uj¬†‰Ì'3ï¿Ü,‘Ìú5 Uj¬†á¥5: ðX3/ t—+ì¥E: ͤ‰_ФZ: Æ4 è ,r N´Uj¬†” e-%î†_Ÿ–´µ ¾­Ê4 è ,r N´Uj¬†” e-%î†_Ÿ–´µ ¾­Ê4 Ÿ–´è ,r N´Uj¬†” e-%î†_Ÿ–´µ ¾­Ê4 ’Mú' ‰Ê‘ ì¥ÒF ͤ‰_Ф—+è ,r N´Uj¬†” e-%î†_Ÿ–´µ ¾­Ê4 ’Mú' ‰Ê‘ ì¥ÒF ͤ‰_Ф—+M‰_Uj¬†‘Ìú5 çŽÊ 쥈H ͤ‰_Ф3/ ‘Ìú5 ÑnSÑnSŸ–´¬ÎnSŸ–´>YDçŽb¤Ÿ–´Ÿ,(aZàO ¬ÎnSŸ–´Ñ|ÄŸ–´µ ¾Uj¬†FÎÂNŸ–´µ ¾Uj¬†FÎÂNŸ–´µ ¾Uj¬†FÎÂNŸ–´µ ¾Uj¬†Îå~Ÿ–´FÎÂNʈ¨²Ÿ–´µ ¾Uj¬†ãÏŽ÷{ªbφ_5φ_™«…¢ÏÔQ 'ÑÔQ Ÿ–´µ ¾Îå~Uj¬†Ÿ–´µ ¾ÏÔQ Uj¬†¥ÉÝÌ«šŸ–´µ ¾Îå~Uj¬†Îå~,І_®ÐÓŸ–´µ ¾á¥•ΨÀUj¬†6ÑVR=¦VR@ѨÀ쥀ðX¨Àñ¥Rˆͤ‰_Ф¨ÀŸ–´µ ¾Ÿ–´µ ¾Uj¬†Ÿ–´µ ¾M‰_ΨÀŸ–´µ ¾GјS Ÿ–´µ ¾oЬ†ʈ¨²Ÿ–´µ ¾oЬ†PÑJÄŸ–´Ÿ–´Ÿ–´µ ¾oЬ†âL¨ÀŸ–´¿ˆ¡²Ÿ–´µ ¾fÑJÄoЬ†Î¨À{ÐJÄ}ѨÀ‡Ñ†_’ÑÂNÔ¾ÂNì¥Rˆñ¥(¢J¦(¢ͤ‰_ФÖ\ ¿ˆ¡²Ÿ–´µ ¾oЬ†Î¨Àî–ÀÔ¾ÂNì¥c] ñ¥(¢ͤ‰_Фå~Ÿ–´µ ¾oЬ†Î¨À{ÐJĆÐ^ ¿ˆ¡²,І_Ÿ–´µ ¾fÑJěѷS á¥öS oЬ†Î¨À{ÐJĆÐ^ ì¥ÖS ðXxñ¥C^ ͤ‰_ФxŸ–´Î¨ÀŸ–´Î¨ÀŸ–´Î¨ÀŸƒV Ÿ–´µ ¾Î\ÄUj¬†¿7™§Ñå~á¥Ö\ FÎÂNË©“~=¦“~¶Ñ\ļ¢nUì¥z` ͤ‰_ФnUŸ–´µ ¾ÁÑV Î\Äá¥VV ΨÀUj¬†¿7™§Ñå~ì¥8V ðXnUñ¥Âóͤ‰_ФnUŸ–´µ ¾ÁÑV Ÿ–´ʈ¨²~Ó†_µ ¾ŠÓêÛÕ\ÄæÕ\ÄñÕ|ÄûÕ|Ĩ¤–´‚£ê&µ`D&µ`DØÑ‚e åÑ—e öÑŸî&µ`DöÑŸî&µ`D>YD Öh~¨¤–´&µ`D>YDÖ${#Ö${Uj¬†&µ`D>YD,Öh~&µ`D>YDÖ${#Ö${Uj¬†Ö${&µ`D>YDÔüMUj¬†&µ`DÔüMÔüM¨¤–´¨¤–´Uj¬†Ÿ–´µ ¾V|¶Ý&µ`D>YD&µ`DÔüMUj¬†>YD¨¤–´&µ`DÔüMÔüMAÖ‰_ç7‰_â±]‚FÖ®ÂRÖÓS^ÖÓS&µ`D>Àx’h(g uÖÓS€ÖÓScÒ|ÄnÒcÄvÒcÄnÒcÄ&µ`D>YD‡Ò¯7¬ÒÍ7¬ÒÍ7´MbüwÖr &µ`D>YD´MbüwÖr &µ`D>YD&µ`D>YD´Mbüws &µ`D>YD´Mbüws &µ`D>YD&µ`D>YDʈ¨²ÿ¥\Äʈ¨²üwÖr ʈ¨²ÿ¥\Äʈ¨²üwÖr ´MbüwÖr &µ`D>YD´MbüwÖr &µ`D>YDcbcbᥳ†cbᥳ†&µ`D>YD&µ`D>YDçŽèl rÕ SxÕ Sšib#¯b´Mb&µ`DUj¬†cÒ|Ä&µ`D>YD´Mb&µ`DUj¬†cÒ|Ä&µ`D>YDa°cÄ&µ`D&µ`DUj¬†cÒ|Ä&µ`D>YDX}cÄ&µ`D>YDÖE5&µ`D>YDcÒ|ÄX}cÄÖE5&µ`DUj¬†>YDcÒ|Äm¦üM´Mbʈ¨²cÒ|ÄUj¬†´Mbʈ¨²cÒ|ÄUj¬†ʈ¨²ʈ¨²a°cÄʈ¨²cÒ|ÄUj¬†Ÿ–´Uj¬†±Ø\đؗ+Ÿ–´Uj¬†Ÿ–´Uj¬†Ÿ–´CÁ|ĦmJÄpÙ—+Ù—+ÞÙ—+Ÿ–´CÁ|ÄpÙ—+ÞÙ—+¦mJÄß—+Ÿ–´CÁ|ĦmJÄpÙ—+Ù—+Ÿ–´CÁ|ÄpÙ—+ÞÙ—+¦mJÄß—+Ÿ–´%Ú|ÄUj¬†Ù—+pÙ—+Ÿ–´%Ú|ÄpÙ—+ÞÙ—+Uj¬†ß—+Ÿ–´¦mJÄÞÙ—+$ßLyUj¬†)ß—+2ß—+Ÿ–´CÁ|ĦmJÄpÙ—+Ù—+ÞÙ—+FªäŸ–´ÞÙ—+¦mJÄ$ßLyUj¬†)ß—+2ß—+Ÿ–´CÁ|ÄpÙ—+ÞÙ—+¦mJÄß—+FªäŸ–´¦mJÄ$ßLyUj¬†)ß—+2ß—+Ÿ–´CÁ|ĦmJÄpÙ—+Ù—+FªäŸ–´ÞÙ—+¦mJÄ$ßLyUj¬†)ß—+2ß—+Ÿ–´CÁ|ÄpÙ—+ÞÙ—+¦mJÄß—+FªäŸ–´CÁ|ÄÞÙ—+¦mJÄpÙ—+Ÿ–´%Ú|ÄÞÙ—+Uj¬†pÙ—+Ÿ–´ÞÙ—+¦mJÄAßLyGß—+Uj¬†Ÿ–´CÁ|ÄÞÙ—+Uj¬†¦mJÄpÙ—+Fªä±Øcđؗ+Ÿ–´CÁ|ÄŸ–´CÁ|ÄømüM×ÙcÄpÙ—+íØcÄÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+ý¾cÄÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ú—+íØcÄÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ú—+íØcÄÙ—+Ÿ–´CÁ|ÄømüM×ÙcÄpÙ—+Ÿ–´%Ú|ăˆüM×ÙcÄpÙ—+Ú—+íØcÄÙ—+Ÿ–´%Ú|ăˆüM×ÙcÄpÙ—+Ÿ–´ª/Ÿ–´Ÿ–´3Sß®Â3_ß®Â3l߮ ³‰_ʈ¨²ʈ¨²ʈ¨²¢á†_¿ˆ¡²óŽ˼Uj¬†ʈ¨²ʈ¨²¢á†_¿ˆ¡²óŽ˼Uj¬†ʈ¨²ʈ¨²ʈ¨²ʈ¨² ãšoʈ¨²âL¨ÀŸ–´¨ä£T®ä‚è玻Nt"V쥣ñ¥B ͤ‰_Фbʈ¨²Uj¬†µ ¾ʈ¨²Uj¬†µ ¾ʈ¨²Uj¬†µ ¾µäáʈ¨²Uj¬†µ ¾ʈ¨²Uj¬†µ ¾ʈ¨²Uj¬†µ ¾Uj¬†l[N’éMì¥, ͤ‰_ФbŸ–´ª/ʈ¨²ʈ¨²ʈ¨²ʈ¨²ʈ¨²ʈ¨²ʈ¨²âL¨Àʈ¨²ʈ¨²ʈ¨²ʈ¨²ʈ¨²ʈ¨²¿ˆ¡²óŽ˼Uj¬†äšoʈ¨²"²Èœʈ¨²"²Èœʈ¨²"²Èœ"j:¦ ¨¤–´¨¤–´ÍånSʈ¨²ʈ¨²¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZi¨¤–´‚£/aZiʈ¨²ʈ¨²ù­ÉÝ¥šÌ«àÐʈ¨²Åèh~ʈ¨²ʈ¨²œÀCª ʈ¨²œÀCª ¨¤–´έ(» έ½» ʈ¨²ʈ¨²ʈ¨²ʈ¨²¨¤–´ʈ¨²œÀCª ʈ¨²œÀCª €ç‰_Ÿ–´ª/Ÿ–´ª/ʈ¨²œÀCª ÉèbÜ艳 ¨¤šo¥[${ʈ¨²ʈ¨²œÀCª 2j«Nʈ¨²¥[${ʈ¨²lèJÄÑnSáènSʈ¨²áènSáènSʈ¨²£éÍJʈ¨²£éÍJʈ¨²£éÍJʈ¨²£éÍJʈ¨²£éÍJ™ébʈ¨²£éÍJʈ¨²£éÍJë1ʈ¨²£éÍJë1ʈ¨²£éÍJ™ébŸ¢Å ʈ¨²ë1£éÍJʈ¨²Ÿ–´Ñ|ÄŸ–´Ñ|Ä3íìá ³‰_Ÿ–´µ ¾Uj¬†¿¨ÀCÁ|Äá¥õM=¦m Eø¨À×$¨ÀLø|Äì¥Rˆͤ‰_Ф¨Àµ ¾Uj¬†l[N×$éMì¥, ͤ‰_Ф¨Àµ ¾Uj¬†¦mJÄÌ ç‡¨¤nS#u‰_3׌¶Ý3㌶ÝV€ÅŒ‰_V€ÏŒ‰_xí†_V|¶Ý™Òäæ Ÿ–´µ ¾Uj¬†Ÿ–´¿¨Àxí†_V|¶Ý™Òäæ Ÿ–´µ ¾Uj¬†õœ‰_aZ ’aZ,(aZ,(Ÿ–´aZb¤Ÿ–´Ÿ–´aZb¤Ÿ–´[ݨÀŸ–´Ñ|Ä ïnSUj¬† ïnSUj¬† ïnS#œP|Ä#¢PÍ #¨PJÄ#ÁP1#œP¥†#¢P¨ÀšznS#u‰_3“ùúë3¨ùúë3½ùúë3ÙùúëV€ä‰_V€ýø‰_V€ù‰_V€5ù‰_V€_ù‰_V€™ä‰_#ZOƇ#œP¨À#¢PúëzPìëzPóë3 ûOR34ûORV€Öú‰_V€ðú‰_V€ýä‰_#ZOúëzPsì zPƒì zP³±#œP†_#¢P†_#¨POR#ÁP¥†#ÇP¨Àèý÷ì V€‘ç‰_V€œç‰_#œP½À#¢P}#¨Pü|#ÁP({#œP|Ä#¢P;þ#¨P}#ÁPü|zP¶ÀzP¯Àsb¡Àµ ¾Uj¬†,îJÄsb¡Àµ ¾Uj¬†,îJÄsb¡Àµ ¾Uj¬†,îJÄ#u‰_V€'è‰_V€.è‰_V€5è‰_V€Gè‰_#œP–´#¢P¨À#¨P\Ä#ÁPÛÔ #œP–´#¢P¡À#¨PÛÔ #œP–´#¢P¨À#œP–´#¢P")#¨P ¾#ÁP¬†zPwzzPÃ|zPßzPx˜Æ")V€ëé‰_V€÷é‰_#œP½À#¢Pm#œP–´#¢Páü #¨P ¾#ÁP¬†zPfzPÚü #œPJÄ#¢P‹x#œPJÄ#¢PLy#œP½À#¢P¥~µ ¾Uj¬†Ð½Àµ ¾Uj¬†Ð½ÀV€më‰_V€të‰_V€{ë‰_#œP–´#¢P¨À#¨P“~#ÁP“~#œP–´#¢P¬~#œP–´#¢Pºæ#¨P ¾#ÁP¬†zPŒ~zPž~zPéwú“ºæšznSµ ¾ú“ºæUj¬†çŽ^z:¥†D¨À쥗 ͤ‰_Ф‘#œP½À#¢P…‡‡[¬†Ÿ–´V€Qî‰_V€Yî‰_V€aî‰_#œP–´#¢P»N#¨P\Ä#ÁP\Ä#œP–´#¢P{#œP–´#¢P ¾#¨PtÓ #ÁP¬†zP±ŽzPtzPFx_tÓ µ ¾¨¤nS2jbõ šznS˜Æ")Uj¬†µ ¾çŽ^z쥗 ͤ‰_Ф¨Àµ ¾Uj¬†i¡ÀŸ–´çŽRfþ¬†_`†_£OR쥗 ͤ‰_Ф£ Ÿ–´ª/Ÿ–´ª/Ÿ–´ª/Ÿ–´çŽ^zµ ¾Uj¬†˜Æ")Ÿ–´çŽ^zþ¬†_£OR쥗 ͤ‰_Ф£ µ ¾Uj¬†‹JÄž¡À¦½ÀçŽRfD¨À쥗 ͤ‰_ФIþµ ¾Uj¬†˜Æ")çŽ^z:¥†D¨À»­¥Ÿ­†_‡Ñ†_³†_쥗 ͤ‰_ФIþ¸nSaZ$÷ ¸nS2jbõ Uj¬†˜Æ")µ ¾çŽ^zÏ¥†Õ¨À쥗 ͤ‰_Ф‘þ¬†_`†_£OR2jæø #œP#¢PVR#¨P({#ÁPnS×:*›Ÿ–´‰£YDçŽb¤×:*›Ÿ–´#u‰_3œ˼3½˼3â˼V€Úó‰_V€ú‰_V€.‰_V€j‰_#œPƒÄ#¢PqÄzPjć[bÓ"¬†‡[bÓ"¬†Ÿ–´Ÿ–´Uj¬†’MÜ,¿Ä¨ÀŸ–´Uj¬†Ÿ–´aZz óŽ˼µ ¾Uj¬†LbLbŸ–´µ ¾Uj¬† ¢Û ˜Æ` ì¥è ͤ‰_ФÂNµ ¾Uj¬†Ð½Àñy¥†Ÿ–´¿¨À8uÛÔ ¿¨Àñy¥†Uj¬†Ÿ–´µ ¾óŽ˼¨ä¢ &µŸ3  Ó sbŸ3 á¥z \« ì¥. ͤ‰_Ф»NóŽ˼Ÿ–´µ ¾Uj¬†LbŸ–´µ ¾Uj¬†Ÿ–´Ð½À?“Ÿ3 #u‰_V€§ö‰_V€²ö‰_V€¿ö‰_V€Íö‰_V€×ö‰_#ZOTé#ZOê#ZOœT#ZO‚è#ZOjézPMézPûézPèzP{èzPcé –´  ¾  * O < † V ´ g â v  † : Ÿ : &µ¡²&µ¡²&µ¡²&µ¡²&µ¡²&µ¡²&µ¡²&µ¡²&µ¡²&µ¡²óŽ˼Uj¬†Ÿ–´µ ¾Lb&µ¡²Uj¬†•ÆéM5áü ì¥D# ͤ‰_Ф)VнÀLb&µ¡²Uj¬†•ÆéM_tÓ ì¥ $ ͤ‰_Ф"V&µ¡²óŽ˼Uj¬†Ð½ÀU ,€™…‡ûÀ{ì¥$ ͤ‰_Ф"V&µ¡²¿¨ÀCÁ|Ä?¥Í7ì¥Á7ͤ‰_ФœT&µ¡²Uj¬†ñy¥†óŽ˼&µ¡²Uj¬†ñy¥†óŽ˼&µ¡²Uj¬†ñy¥†óŽ˼&µ¡²Uj¬†ñy¥†óŽ˼&µ¡²Uj¬†ñy¥†óŽÀx&µ¡²Uj¬†óŽ˼ñy¥†Ÿ–´B ‘& Ÿ–´&µ¡²µ ¾Uj¬†Ð½ÀUj¬†Ÿ–´µ ¾•ÆéM[ . ì¥õ' ͤ‰_ФÂNâL¨ÀŸ–´#u‰_3¢ Ðá3º ÐáV€^ ‰_V€€ ‰_&0) Wõ?ß õ) õ¶) ZOCzõä) õ) *õó) õ) õ * œõ3* öZš œPÀxöZš 7ö5#>öZš [ö5#>öZš sbÀx7ö5#uö5#>öZš œPÀx7ö5#[ö5#uö5#>öZš 7ö5#[ö5#ˆö5#>öZš uö5#’h5#uö5#aZš lö˜uö5#aZš Ÿ–´µ ¾Uj¬†×:*›Ÿ–´µ ¾Uj¬†×:*›Ÿ–´µ ¾Uj¬†Ÿ–´µ ¾Uj¬†×:*›#œPÂN#¢PJÄ#¨P¨À#ÁP¨À Í ™È+ Ÿ–´³i/Ÿ–´²òÌ3  Í Ÿ–´³i/Ÿ–´³i/³94  Í ™È+ Uj¬†¶p4  Í Ÿ–´ª/Ÿ–´ª/Ÿ–´‰®˜ïUj¬†Ÿ–´ª/Ÿ–´‰®˜ïUj¬†Ÿ–´ª/Ÿ–´‰®˜ïUj¬†™È+ ªÍ Ÿ–´ª/Ÿ–´ª/™È+ Ÿ–´Uj¬†Ÿ–´ª/Ÿ–´Uj¬†5ß@wÔ¾ÂN˜ïŸ–´Uj¬†5ß@wÔ¾ÂNŸ–´Uj¬†Ÿ–´Uj¬†Ÿ–´Uj¬†Uj¬†l[NŸ–´sbLyUj¬†Ÿ–´sb‹xUj¬†AFlŸ–´{|ÄóŽ˼Ÿ–´óŽ˼–´ÁÔŒH ¿i³†ZZbau¤ðXb쥛‡ͤ‰_ФbœÀ ¾Uj¬†¦mJÄUj¬†Ÿ–´Uj¬†s‰_œÀ ¾Uj¬†š. çŽ^z쥗 ͤ‰_Ф¨À¨¤–´œÀ ¾Uj¬† JIJ. çŽ^z·Õ쥗 ͤ‰_Ф¨ÀœÀ ¾Uj¬†ÂJÄ JÄœÀ ¾Uj¬†Í¿")çŽ^z쥗 ͤ‰_ФÕUj¬†Uj¬†Ì 燵 ¾íJÄUj¬†Ì 燵 ¾íJÄŠK ψ"K á¥4K ðXBK ì¥FK ͤ‰_ФÀx„ÑK ÚïK á¥L \« L ½oCzψ"K ì¥8L ͤ‰_ФÀxµÆD Uj¬†Ì ç‡Àâ%Õr©8Ö§b¬1µÆD Ì ç‡¬1µÆD Uj¬†r©8Àâ%ÕÙVb¹ÐjM µÆD Uj¬†r©8Àâ%ÕµÆD Uj¬†r©8Àâ%ÕÌ ç‡ËO V«µïUj¬†”×Ì ç‡ËO µÆD Uj¬†”×Ì ç‡@kP ËO ì¥rP ðX>5ñ¥~P ͤ‰_Ф>5Uj¬†µÆD ËO z9Q r©³†â@Q CÁ|Äì¥GQ ðXSQ ñ¥eQ ͤ‰_ФSQ µÆD Uj¬†@kP ËO »­ÌQl³†ÙVbCÁ|Äì¥rP ðXSQ ñ¥eQ ͤ‰_ФSQ µÆD Uj¬†@kP µÆD Uj¬†µÆD ¥jTÌ« gù­òp¥'§¥jTÌ« g#u‰_V€ ‰_V€ ‰_V€” ‰_V€œ ‰_V€¤ ‰_V€± ‰_V€¿ ‰_V€Ñ ‰_V€Û ‰_V€ã ‰_V€í ‰_V€ö ‰_V€ ‰_V€ ‰_V€ ‰_V€ ‰_V€- ‰_V€; ‰_V€M ‰_V€\ ‰_V€k ‰_V€z ‰_V€‰ ‰_V€› ‰_V€© ‰_V€³ ‰_V€À ‰_#œP†_#¢PÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#œPÂs#¢P†_#ZOÂs#ZOÂs#ZOÂs#ZOÂs#ZOÂs#œPÂs#¢P`Ÿ#œPÂs#¢P`Ÿ#ZOÂs#ZOÂs#œPÂs#¢P†_#ZOÂs#ZOÂs#œP`Ÿ#¢PÂs#œP]Z #¢PÂs#¨P3c #œP†_#¢PÂszPÆV zP#d zP3d zPCd zPSd zPVZ zPld zP|d zPŒd zPdZ zP¥d zPrZ zP¾d zPkZ zP×d zPçd zP÷d zPe zPe zP'e zP7e zPU zPPe zP`e zPÁT zPÍV zP‚e #u‰_3|"3c 3"3c 3¦"3c V€¶‰_V€4"‰_V€R"‰_#u‰_3†#]Z 3ž#]Z V€<#‰_V€^#‰_¥ÉÝÌ«IZ ¥ÉÝÌ«šLXÂsUXÂs$†_L$`ŸS$Žf `$àf ó T Ú$blì¥ôDͤ‰_Ф5g 4·GŸöa•ÆÒYºvÝ$†_ì$Žf ý$†_ %—g %‰_:%†_.¶T F%†_&µzU ™«†_&µzU έ¾l ùU &µzU ùU &µzU ”'zU  %úl x\ÀxîE’(1FýÉ 1F,Ê @ªbJFxÊ z3Å OF‰_}1br1(t 1÷y èF0Ë òF9Ë (1\é‰b1z ÏGN†ÓG¼ÞÛGê âG—€ ëGª€ ôG½€ ûGê HŒ~ Hô H€ 'H–´1HbZ1œz ÝHQÍ ‰bB1Hb­Iç…±I燻I#„ ÂImÎ ËI€Î ÔI“Î ÛI9„ åIC„ ðI¹ƒ úIj„ JbJµïrÝ¬Ï _®¿Ï šbÀxA±CzrÝ¬Ï _®¿Ï rÝ¬Ï _®¿Ï ¨0BÐ šbÀxA±CzÁiBK rÝ¬Ï _®¿Ï ¨0BÐ rÝ¬Ï _®¿Ï ¨0BÐ µ0æÐ šbÀxA±CzÁiBK ‹tùÐ rÝ¬Ï _®¿Ï ¨0BÐ µ0æÐ rÝ­Ñ _®ºÑ rÝ­Ñ _®ºÑ ¨0ïÑ rÝ­Ñ _®ºÑ ¨0ïÑ µ0(Ò aZ¬Ï çŽ¬Ï ¬íÒ ¬íÒ aZ­Ñ p1­Ñ ¬öÓ ¬öÓ aZcŠ aZÀÔ aZå‡ aZ Õ šb‰_A±ÂcaZ‡ aZ‡ aZ‡ ¨¤a.±Ja.¸Ja.¿Ja.aZµ‡ aZå‡ aZ‰ aZ‰ aZŠ aZ?Š aZcŠ aZ Õ aZ Õ šbÜžA±ÜžaZ*Ø çŽÂØ „LÃaZ)Œ aZÀÔ aZÀÔ aZ¡Ù p1Ú p1•Ú ÙV‰_ÆJ´-Š:¬Ï :¿Ï šbÀxA±CzŠ:¬Ï :¿Ï aZïÛ çŽTÜ  :­Ñ â¨ºÑ aZ²Ü p1øÜ  G,Ý ’CzbbaZº– aZ¼— aZ¼˜ aZ†™ aZqß sb¨Àsbs-sb¨ÀsbJÄsb¨À‡ß¨À‹ß¨ÀaZà aZ`à aZÜà aZd  aZ0¡ šb¬†A±¬†šbbA±¬aZí¡ aZÓ¢ aZ¦ÜrݦÜ_®¦Üšb\ÄA±\ÄrݦÜ_®¦ÜaZ¦ aZ¦ÜrݦÜ_®¦Ü¨0¦Üšb\ÄA±\ÄÁi\ÄrݦÜ_®¦Ü¨0¦ÜaZ{¦ rݦÜ_®¦Üšb\ÄA±\ÄrݦÜ_®¦ÜaZ¦ _®¦ÜšbbA±\Ä_®¦ÜaZ¾¦ šb¨ÀA±†_aZý¦ aZ…ª aZµª aZÑ« aZå‡ aZ¯¬ aZ߬ aZ«® 玑® aZö® çŽÜ® ðX"oðX˜7•Ʋƒ ðXÕðXêðX¨ÀaZcŠ aZ{² aZŸ² aZе aZ ¶ aZе aZB¶ aZu¶ aZ9¹ aZ]¹ aZdº aZcŠ aZ`» aZ„» aZ—½ p1ƒ½ aZн p1¼½ aZí¾ aZ¿ aZÁ aZ,Á aZ, aZ«® aZ«® aZ«® aZå‡ aZ‡Ä aZmÄ ¨¤¨À±J\,aZcŠ aZzÇ aZfÇ aZsõ aZóõ aZö aZ«® aZ«® aZÿö aZ\÷ aZÍ÷ aZ—½ aZ—½ 3jcŠ 3Iø 3Yø 3µå‡ 3Êiø 3èø 3„ 3( 3,•ø 3E(„ 3X§ø 3](( 3:¿ø 3u(Õø 3$KÕø 3þëø 3”(ûø 3-Kûø 3¡ ù 36Kù 3ù+ù 3IK8ù 3WKQù 3gKQù 3Ö+Qù 3Ü+bù 3Ý}ù 3rK“ù 3÷£ù 3,³ù 3Kçù 3ŠKýù 3ú 3/,3ú 3šKoú 3©K‰ú 3\,©ú 3½KÑú 3ÈKáú 34÷ú 3ˆ, û 3ØK;û 3çKOû 3ûKiû 3Tyû 3Ä,û 3Lµû 3LÅû 3ó,Ûû 3,Lü 3YD×:*›Ÿ–´>YD×:*›Ÿ–´>YD×:*›Ÿ–´>YD×:*›Ÿ–´>YDŸ–´>YD>YDŸ–´>YD@Z±TDZ±T@Z±TDZ±TŸ–´@Z±TDZ±ToR ×:*›Ÿ–´>YDŸ–´~~½§?¬†Œ~M¿ Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†Ÿ–´#œP({#¢P¨À#ZONÀ ¿iNÀ á¥ÆÀ \«3Á ì¥<Á ͤ‰_ФÀxb¡Á bðÁ šznSšznSšznSŸ–´Ÿ–´3žüÇ V€4‰_V€ ‰_V€Z4‰_#œPç‡#¢P1#ZONzP È zPUÄ zPÈ Ÿ–´¨¤nSŸ–´‹Ÿ†_•Ÿ†_¥Ÿ†_¹Ÿ†_ÈŸ†_àŸ†_óŸ†_ †_5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ ¥[${5!ÿ/ 5!ÿ/ Ÿ–´¢h†_Lé†_aZö5Ÿ–´¢h†_Lé†_Ÿ–´¢h†_Lé†_Ÿ–´¢h†_Lé†_Ÿ–´¢h†_Lé†_¥[${Ÿ–´¢h†_Lé†_o¢†_“¢ Æ §¢é ¸¢†_È¢†_ݢܞ领_þ¢†_£†_0£†_G£†__£†_u£†_‡£†_ž£†_®£†_½£†_Ý£†_þ£†_󌖴¤l1¤Æ Mé •q³†ªÍ Ÿ–´ªÍ ;½E@Ÿ–´ª/Ÿ–´ª/Ö§bŸ–´Ö§/Ÿ–´Ö§/Ÿ–´Ö§/ Í ŦàÇ ϦôÇ L§“W§“f§-Zo§4“~§V“ݧüMCÁ|ÄݧüMCÁ|ÄŸ–´>YDnÒcăq>5ƒq>5Ÿ–´>YDƒq>5Ÿ–´>YDƒq>5ƒq>5ƒq>5ƒq>5ƒq>5Ÿ–´>YDƒq>5Ÿ–´>YDƒq>5ŸæE Ÿ–´>YDƒq>5Ÿ–´>YDƒq>5ømüMømüM1tYË 6toË >t|Ë ¢tpÌ X}ƒÌ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ ÿ¥\ĦmJÄ5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ K¿!£wü_5!ÿ/ Æcü_´°ÛÍ upgR K¿!5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ t—+PΗ!5!ÿ/ 5!ÿ/ âL¨À÷{\,5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ 5!ÿ/ Ÿ–´MydY #u‰_3x¨Ð 3‰¨Ð 3¼¨Ð V€æ§‰_V€ú§‰_V€R¨‰_Ÿ–´´ÈꟖ´´ÈꟖ´´ÈꟖ´´ÈꟖ´´ÈꟖ´´ÈêaZ] Ÿ–´´ÈꟖ´´ÈêâL¨À„$N~÷¨ÀUj¬†Ë…Ð Ÿ–´Ë…Ð *|Ꟗ´´Èê´ÈꟖ´Ë…Ð Ÿ–´Ë…Ð Ÿ–´´ÈꟖ´´ÈꟖ´Ë…Ð Ÿ–´Ë…Ð *|Ꟗ´Ë…Ð *|ê´°è~~½§u°ìkRj¬† «¬†y°º,°åkâL¨ÀUj¬†zÍ¿!´°èŸèt—+´°è/ÎÙ²Uj¬† Η+Η+'\É,`Í—+Ÿ–´Ë…Ð ´ÈꟖ´Ë…Ð ´ÈꟖ´Ë…Ð ´ÈꟖ´Ë…Ð ´ÈꟖ´Ë…Ð *|Ꟗ´´ÈꟖ´´ÈꟖ´Ë…Ð Ÿ–´Ë…Ð ´ÈꟖ´´ÈꟖ´´ÈꟖ´´Èê´Èꨤ Ÿ aZ@Ó ´Èê´Èê´Èê2jïh ´Èê´Èê´Èê´Èê´Èê´ÈꟖ´´Èê´Èê?SBj ´Èê´ÈêË…Ð *|ê*|Ꟗ´*|Ꟗ´„©ê„©êŸ–´*|ê©}l š©l ømüM¦©üMì¥1-ðXüMñ¥1-ͤ‰_ФüM÷iu"=¦!5á¢!ê—­!ømüMá¥UÞ´±üM£u"VÎÍ!ZÒÊ?²©u"hÎÆ!q>5ì¥1-ðXüMñ¥1-J¦7Õ G¦üMS¦1-\¦CÕ P¦üM•°1-ͤ‰_ФüM÷iu"=¦!5á¢!ê—­!PΗ!á¥UÞVθ!K¿!hÎÍ!ZÒÊ?£u"yÎÆ!q>5ðXcÄ쥛ZG¦cÄñ¥›ZJ¦7Õ P¦cÄS¦›Z\¦CÕ Y¦cÄ•°›Zͤ‰_ФcÄ´Èê´Èê´ÈꟖ´Ë…Ð ´Èê´ÈꟖ´Ë…Ð ´ÈꟖ´Ë…Ð ´ÈꟖ´Ë…Ð Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†Uj¬†¥jTÌ«­cŸ–´¨¤º,aZ:× aZ:× aZÌ&\RÂc\RÂcέ£× sx ²x sx ²x »©¬†»©¬†sx #u‰_3'ªN´3AªN´3YªN´V€Ã©‰_V€é©‰_V€ ª‰_‡[bÓ"¬†t—+Uj¬†;cÄUj¬†Ÿ–´xóàØ ‚£ÕR£—+^£èŸ–´xóàØ ˆƒ—+Uj¬†øtJĈƒ—+¦mJÄUj¬†ÁiLyÙV‰_Ÿ–´xóàØ ‚£ÕR£—+^£èŸ–´xóàØ ˆƒ—+¦mJÄUj¬†ÁiLyŸ–´ˆƒ—+¦mJÄCÁ|ÄUj¬† •‹x.yÍ7Ÿ–´xóàØ ˆƒ—+¦mJÄCÁ|ÄUj¬†CÁ|Ä5ºwv´7O´OO2´bOH´yOX´ŒOi´¸OJƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ »ƒ‰ aZ¢Ý Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ ꪌO¾³AÞ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ úª¸O¾³AÞ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ Jƒ7ObƒbOwƒOOƒwvƒyO¬ƒêˆ ³ƒýˆ »ƒ‰ ă#‰ ¿«àÞ Ÿ–´Uj¬†¹…ÂcM‰_y…Âc¿Ó0 ïu¤¹…ÂcUj¬†y…Âc¦mJÄUj¬†Ÿ–´Ÿ–´Ï«JÄUj¬†Û«—+À}E5Uj¬†ã«Ü,ðXcÄUj¬†Uj¬†aínSM‰_Uj¬†aínSŸ–´Uj¬†Ÿ–´Uj¬†Ÿ–´M‰_Ÿ–´Ÿ–´–¬†›—+µ9JÄ–¬†•î—+ðXcÄ–¬†•î—+ðXcÄ–¬†M‰_Ÿ–´–¬†ø«‰_M‰_ú«¨À¬JÄŸ–´–¬†ø«‰_Ö§b–¬†Ÿ–´–¬†¬E5Ÿ–´–¬†¶†_ú«¨À¬JÄŸ–´–¬†¶†_Uj¬†Ÿ–´Uj¬†'¬JÄ,¬—+Uj¬†¶æ${¶æ${Ÿ–´<‘({E‘({Ÿ–´<‘({E‘({Ÿ–´¨¤nSŸ–´aZ¦ Ÿ–´ª/^¬/© l¬\å {¬†_¨¤Y© œÀY© œÀY© œÀY© œÀY© ´°èâL¨À~~½§u°ìkRj¬† «¬†y°º,°åkœÀY© ´°èUj¬†K¿!œÀY© È—+´°è/ÎÙ²Uj¬† Η+Η+'\É,`Í—+œÀY© œÀY© œÀY© œÀY© œÀY© œÀY© œÀY© œÀY© œÀY© œÀY© µ`¼Þµ`¼ÞŸ–´´Èê*|Ꟗ´´ÈꟖ´´ÈꟖ´´ÈꟖ´´ÈꟖ´´ÈꟖ´âL¨ÀŸ–´Ÿ–´øtJÄŸ–´Ÿ–´Ÿ–´uöŸ–´uöŸ–´¿èœÀCª œÀCª œÀCª œÀCª ¥[${ ãšodâ†_Ì«¤ÛaZ¤Û2jbð aZMð aZñô aZñô aZñô z°`†°võ š°ç• ë°`4°†_I°`znS× ­ˆA±³†Æc³†,o({¥[${N±‰_X±‰_× ­ˆA±³†Æc³†,o({¥[${N±‰_X±‰_× ­ˆA±³†N±‰_X±‰_Æc³†,o({¥[${Ÿ–´¥[${ı({znS6²${aZbþ þiÉþ aZbþ R£`ÿ aZÃø 2j$÷ aZÃø R£ aZbþ aZbþ þiÉþ þi`ÿ aZbþ R£Ñ ^£ö aZÃø aZ$÷ aZÃø ^£{ 3A²Â 3W²ê3e²YD31ú 3œ1 3{² 3‘² 3§²-Z3¼²4“3Õ²V“33³* 3³`3(³ò3=³ÿ/ 3V³ÿ/ 3r³ÿ/ 3޳ÿ/ 3³³ÿ/ 3óÿ/ 3ß³ÿ/ 3ò³ÿ/ 3´6 3´Cª 38´…¢3J´ü_3]´´-3f´´-3r´´-3}´b3¡´b3É´b3ê´b3 µb3-µb ³‰_#œP7z#¢Pb#¨P†_#ÁP¨À#ÇP<” #œPÍ #¢P|ĉÙïŽÙ¤) D.†_@0†_œÙb½Ù¼ÞÇÙ¼ÞÏÙ†_ö4†_ãÙ«) õÙ|ÄÚ|ÄÚ|Ä'Ú|Ä4Ú|ÄAÚ|ÄNÚ|Ä[Ú|ÄhÚ|ÄxÚ|ćÚ|Ä–Ú|Ħګ ¶Ú– ÀÚ|ÄÒÚ|ÄãÚ|ÄòÚ|ÄÛ|Ä Û|ÄÛ|Ä%Û|Ä4Û|Ä?Û|ÄJÛ|ÄUÛ|ÄaÛ|ÄmÛ|ÄyÛ|Ä„Û|Ä‘Û|Ä›Û|Ä©Û|ijÛ|ĽÛ|ÄÍÛ|ÄÜÛ|ÄåÛ|ÄïÛ|ÄúÛ|ÄÜ|ÄÜ|Ä!Ü|Ä+Ü|Ä6Ü|ÄBÜ|ÄNÜ|ÄYÜ|ÄhÜ|ÄvÜ|Ä„Ü|Ä”Ü|ÄÜ|Ä«Ü|Ä¿Ü|ÄÓÜ|ÄãÜ|ÄðÜ|ÄýÜ|Ä Ý|ÄÝ|Ä#Ý|Ä/Ý|Ä;Ý|ÄGÝ|ÄSÝ|Ä_Ý|ÄkÝ|ÄwÝ|ĉÝ|ÄœÝ|Ä­Ý|ÄÀÝ|ÄÚÝ|ÄñÝ|ÄÞ|Ä2Þ|ÄYÞ¨ÀaÞ¨ÀoÞ¨À~Þ¨ÀˆÞ¨À’Þ¨ÀœÞ¨À§Þ¨À²Þ¨À½Þ¨ÀÇÞ¨ÀÐÞ¨ÀÙÞ¨ÀäÞ¨ÀìÞ¨ÀõÞ¨ÀýÞ¨ÀߨÀߨÀߨÀ(ߨÀ:ߨÀMߨÀeߨÀwߨÀŒß¨Àªß¨À»ß¨ÀÑߨÀãߨÀöߨÀà|Ä$à|Ä>à|ÄTà|Ähà|Ä|à|Äà|Ĥà|Ĺà|ÄÌà|Äßà|Äòà|Äá|Äá|Ä1á|ÄGá|Ä\á|Äqá|Ä•á¨À³á¨ÀÓá|Äôá¨Àâ¨À5â|ÄIâ|Ä^â|Äqâ|ÄŽâ¨À¡â¨À¾â¨ÀÚâ¨Àëâ¨Àã|Ä(ã|ÄTã|Ĉã|ĵã|ÄÏã|Äóã|Ää|Ä0ä/Qä/vä/–ä/²ä/Õä/÷ä/å/)å/Gå/få/ˆå/¦å/Çå/ãå/þå/æ/6æ/Jæ/_æ/yæ/—æ/´æ/Óæ/òæ/ ç/(ç/Iç/lç/‰ç/¥ç|ÄÍç|Äûç|Ä)è|ÄOè|Ä}è|Ä•è/½è/Ùè/þè/é/=é/[é/té/‘é/³é/âé/ê/ê/2ê/Jê/oê/‰ê/´ê/ßê/ë/ë/?ë/[ë/yë/•ë/·ë/×ë/þë/'ì/Jì/nì/”ì/¬ì/Ëì/ïì/í/%í/Jí/dí/†í/¬íLy¸íLyÃí\ÄÍí\Ä×í\Äâí\Äïí\Äýí\Äî\Äî\Ä0î\ÄQî\Ätî\Ä“î\ĸî\ÄÑî\Äðî\Äï\Ä&ï\Ä<ï\Ä[ï\ăï\Ä¢ï\ļï\ÄÕï\Äøï\Äð\Ä:ð\ÄKð\Ä]ð\Äoð\ćð\Ä ð\ĺð\ÄÓð\Äîð\Ä ñ\Ä$ñ\Ä@ñ\ÄYñ\Äsñ  }ñ  ‹ñ\Ä™ñ  ¦ñ\ijñ  Èñ\ÄÝñ\Äêñ  úñ\Ä ò\Äò  'ò  Lò  lò  ò  ®ò  Äò\Ä×ò\Äéò\Äÿò\Äó\Ä*ó\Ä<ó\ÄSó\Äfó\Äxó\ĉó|Äžó\ľó\ÄÞó\Äþó\Äô\Ä@ô\Äbô\Ä„ô\Ħô\ÄÉô\Äìô\Äõ\Ä2õ\ÄUõ  kõ  ~õ\ÄŠõ\Ä›õ\Ĩõ\ĺõ  Õõ  üõ  $ö  0ö  Aö  Nö  `ö  nö\Ä}ö\Ä’ö\Ä¢ö\Ä´ö\ÄÆö\ÄØö\Äêö  üö   ÷\Ä÷  ,÷\Ä<÷  M÷\Ä^÷  r÷\Ć÷  ˜÷\Ī÷  Á÷\ÄØ÷  ë÷  ý÷   ø\Äø  -ø\ÄAø  Qø\Äaø  rø  ~ø  ø  ¡ø  ±ø  Ãø  Õø  çø  ýø  ù  #ù  >ù  Uù  eù  |ù  ù  ¨ù\Ķù\ÄÈù\ÄÞù\ÄïùB þùK‚úì -5†_úÛ /úÀ [·°Ü€¿¨À¶'†_¾\¼Þ¶'†_¾\¼Þy 7z› 7z½ 7zß 7zú 7z 7z5 7zW 7zw 7z 7z¾ 7zà 7z ! 7z;! 7zT! 7zn! 7z‰! 7z¦! 7zÃ! 7zà! 7zù! 7z" 7z." 7zJ" 7z_Ã7zì¥Ñ2 ͤ‰_Ф}¶'†_¾\¼Þ‰º|ÄöºbeÙÌ âL¨À[·°Üh" ³†¶'†_¾\¼ÞCÁ|Äî¿p ¶'†_¾\¼ÞÆ Æ Æk Æk 3ð& ¬†3ü& ${3' ${3 ' ${3' ${3' ${3$' ${3,' ${34' ¨À3>' ¨À3H' ¨À3R' ¨À3\' ¨À3f' b3{' b3—' b3¦' b3²' b3Å' b3ß' b3÷' b3( b3'( b3E( b3X( b3j( u¤3{( u¤3“( ³†3¢( ³†3®( ³†3Á( u¤3Û( u¤3î( u¤3) u¤3 ) u¤36) u¤3H) u¤3f) u¤3w) u¤3ˆ) u¤3™) u¤3­) u¤ ³‰_#u‰_3¶6 ’3È6 ’3×6 ’3è6 ’V€y6 ‰_V€6 ‰_V€Ÿ6 ‰_V€¨6 ‰_3ƒ7  V€»c‰_V€_7 ‰_#ZO†_zPÁ zP¤P #u‰_38 ¼P 3'8 ¼P V€í7 ‰_V€8 ‰_#u‰_3ãŒ]Œ3׌]ŒV€ÏŒ‰_V€ÅŒ‰_#u‰_3Ï8 ¨Á3ã8 ¨Á3ó8 ¨Á39 ¨ÁV€o8 ‰_V€‰8 ‰_V€›8 ‰_V€±8 ‰_™Ÿ#u‰_3™“ S3O= SV€q‰_V€Ÿ‰_#u‰_3> /3,> /3@> /3W> /3h> /V€†= ‰_V€”= ‰_V€®= ‰_V€Î= ‰_V€ÿ‰_‰_™Ÿ‡[‰_Ó"ÉÝÚ"]‚c³†‡[~Ó"bÚ"bcb#u‰_3·A ¬3ÖA ¬3ëA ¬V€UA ‰_V€…A ‰_V€¡A ‰_#œPç‡#¢PÔ”#ZOu¤çŽ;W ŒG ¬Ô ÙO ¤[ èO SõO WJ P ™ŸP b&P ¥†

| üMG| 7z>| cÄG| _#œP|Ä#¢Pb#œP|Ä#¢Pb#u‰_V€vl‰_V€ƒl‰_V€l‰_V€™l‰_V€£l‰_V€¯l‰_V€¹l‰_#œP({#¢P¨À#œP|Ä#¢PJÄ#ZOJÄ#œP¨À#¢P¨À#œPLy#¢PJÄ#ZO${#ZO±TzPÙzPsŠzP¸zP¿zPÆzPàzPX#u‰_3ï~ ±TV€m‰_V€˜m‰_V€£m‰_V€¯m‰_V€×~ ‰_#ZO${#ZO|Ä#œP±T#¢P±T#ZO±TzP.š zP>zPEzPLÅu¥†NP燀 ™Ÿ€ ¥†'€ b<€ †_ P†_F€ ›W€ ›k€ †_{€ üM…€ b¤ž€ ä… 1ÓÐ5‚ †_@ªbV€Hn‰_V€Tn‰_#ZO¼Þ#ZObzP] zPH; ‚ƒ üM‰ƒ bwk†_V€·n‰_V€Àn‰_#ZO!#ZO\ÄzPÒ”zPË”#œP|Ä#¢P­”#¨P¤/#ÁPu#ÇP†_#ÍP ~#w”¬†#œP—+#¢P—+#ZO•Š #u‰_3Õ„ V‡3â„ V‡V€ o‰_V€%o‰_V€+o‰_V€0o‰_V€6o‰_V€=o‰_V€Co‰_V€Jo‰_V€Po‰_V€Wo‰_V€^o‰_V€fo‰_V€mo‰_V€to‰_V€‡W‰_V€yo‰_V€7 ‰_V€É„ ‰_#ZO†_#ZO@3#ZOü…#ZOJ3#ZOa.#ZO‰_#ZOw3#ZO™Ÿ#ZO3#ZO™Ÿ#ZO3#ZO™3#ZO¿c#ZObl#ZOb#ZOÛzP23zP93zPb3zPC3zPi3zPM3zPp3zPT3zPz3zP[3zP„3zP’3zP‹3zPœ3zP£3zP¯¦ V€æp‰_V€ïp‰_V€ùp‰_#œP—+#¢PHu#¨P!x#ÁP¬†#œPÜ,#¢P‰_#œP¿!#¢Pº,zP›jzP”jzPj#œP\u#¢Pº,#u‰_3M‡ \uV€[‰_V€]q‰_V€o‰_V€¹“‰_V€iq‰_V€4[‰_#œPLy#¢PJÄ#œP‰_#¢P¨À#ZOV‡#œP¨À#¢P¨À#œP—+#¢PJÄ#¨PGm#ÁP‰_#ÇPw‚zPxuzPñšzPjuzPquzPøš#œPE5#¢P—+#¨Pìk#œPcÄ#¢P—+#¨P½§#œPw‚#¢P\Ä#¨P‰_#œP,Y#¢P®Â#¨PÓSa` ˜ï‰Ð#œP]‚#¢P S#u‰_V€o‰_V€ôk‰_V€r‰_V€r‰_V€r‰_V€r‰_V€#r‰_V€*r‰_V€.r‰_V€2r‰_V€8r‰_V€Kr‰_V€Nr‰_V€Tr‰_V€]r‰_#œPV‡#¢P¬†#¨P¨À#œP\Ä#¢Pe-#¨P¬†#œP—+#¢P—+#¨PÉ,#ÁPÙ²#ÇP¬†#œP™Ÿ#¢PÕ#¨PÕ#ÁPE5#ÇP—+#ÍP¬†#w”¨À#œP™Ÿ#¢P({#¨P—+#ÁP¬†#ÇP¨À#œP—+#¢P¨À#¨PJÄ#ÁPÜ,#ÇP¬†#œP—!#¢P—+#¨P¬†#ÁPgR #œP¿!#¢P—+#¨P¬†#ÁPgR #œP™Ÿ#¢P¨À#¨PÕ#ÁP—+#ÇP\,#ÍPg,#w”¬†#œP½§#¢P¬†#¨Pº,#ÁPÁ,#ÇP¬†#ÍP¨À#œPÂ-#¢P—+#¨P—+#ÁP¬†#œPî,#¢PJÄ#¨PÜ,#ÁP¬†#œP—+#¢P†,#¨P†_#ÁP¬†#ÇP¨À#œP({#¢P—+#¨P¬†#ZOÙ3zP³,zPç,zPž+zPP-zP§azPÕ,zPU+zPN+zPU,zP¥+zP»-zP\+zP,zP¬,zP3ñ #u‰_3gŒ î,3uŒ î,3ƒŒ î,3–Œ î,3¥Œ î,3Ìžî,V€[‰_V€šs‰_V€f'‰_V€l'‰_V€¤s‰_V€ªs‰_V€²s‰_V€¸s‰_V€¼s‰_V€Ås‰_V€Ðs‰_V€Õs‰_V€ás‰_V€ís‰_V€ýs‰_V€ t‰_V€t‰_V€.t‰_V€@t‰_V€Lt‰_V€Xt‰_V€ft‰_V€Œ ‰_V€´n‰_V€&Œ ‰_V€—‰_V€lt‰_V€qt‰_V€wt‰_V€t‰_V€Št‰_#ZOLy#ZO|Ä#ZO´…#ZO;u#œP¬#¢P¸¯#œPÚ«#¢PW-#œPV¬#¢P”¬#œPV¬#¢PÒ¬#œPü,#¢P|Ä#ZO‹x#ZO‹x#ZO‹x#ZO|Ä#ZOLy#œPLy#¢P‰_#œPLy#¢P‰_#œP|Ä#¢P‰_#œP|Ä#¢P‰_#ZO‰_#œPn%#¢PJÄ#ZO‰_#ZO‰_#ZOs-#œPB #¢P\Ä#œP†_#¢P†_#¨P†_#ÁP†_#ÇPe-#ÍP†_#w”†_#}”!#ƒ”JÄ#ÇJÄ#ÀJÄzP÷˜zPI³zP-zP¡-zPÁ+zPº+zP¬+zP³+zPõ,zPB-zP4-zP;-zP-zP-zP-zP--zP -zP&-zP-zPI-zPЭ zPà­ zPl-zPz-zP^-#u‰_3' ü,3A ü,V€í ‰_V€ ‰_#u‰_3‘ ¸¯3?‘ ¸¯V€œ ‰_V€Ð ‰_#u‰_3i’ W-3’ W-3›’ W-V€ÿ‘ ‰_V€!’ ‰_V€G’ ‰_#u‰_3“ B 3’“ B 3¤“ B 3±“ B V€5“ ‰_V€I“ ‰_V€_“ ‰_V€k“ ‰_#u‰_3[” É,3m” É,V€/” ‰_V€E” ‰_#u‰_3q• e-3†• e-3¥• e-3Õ e-V€Ww‰_V€Õ” ‰_V€ñ” ‰_V€!• ‰_V€O• ‰_#ZO¨ÀzP)@V€–w‰_V€¨w‰_#œP¨À#¢P¨À#ZO¨ÀzP>«zP7«#œPnU#¢P˜ï#¨P({#ÁPuU#ÇP—+#ÍP¬†#œPb#¢P¨À#¨P({#ÁP({#ÇP]R#ÍPVR#œP¥†#¢P¨À#¨P†_#ÁP†_#ÇP†_#ÍP˜ï#œP>5#¢Pu"#¨P¬†#u‰_V€Ix‰_V€Tx‰_V€[x‰_V€dx‰_V€lx‰_#ZOJ9#ZOÊ?#œP¿!#¢P¬†#œP—+#¢P¬†#œP¢!#¢P—!#¨P­!#ÁP¬†zPÆ!zPÍ!zP¸!zPÈ–zP!#œPüM#¢Pu"#œP³ª#¢Plç#¨PJ9#ÁP†_#ÇP†_#ZOwçQ™ “]™ -Zq™ `Eš -ZQš †_lš †_€š “•š 4“¥š V“µš òV€Fy‰_V€Qy‰_#œPÍ #¢PÂ#¨P¸#ZOÕzP±zPÎl[NsbüM᥿=¦¿Y¦\ÄP¦\ÄË©“~VΓ~¨«¿hοœ \Ä œ \Ä$œ )¿yÎ)¿/®\Ä0œ \Ä4œ \Äͤ‰_Ф\ÄUj¬†§¼Þ½o<” •ÆéM5j ›•ÆéM5j ›Uj¬†•ÆéMUj¬†âL_â±]‚•qu¤M‰_§¼Þ•qu¤G- ý¬+(Õ‰_ƒœ Ï,Œœ u¤žœ b MüÔ=¦üÔ•ÆéMì¥Ù,ðXY½ ñ¥q½ ͤ‰_ФY½ §¼Þf\ć[v~Ó"|ÄÚ"bâ±b¥ÉÝÌ«šâ±b¥ÉÝÌ«šCÁ|ÄCÁ|ÄCÁ|Ä\2 %ÕÀâ%Õšb%Õµœ ƒÄÅ2 %ÕÍ2 %Õâ±]‚â±]‚‡[bÓ"bÚ"¬†‡[bÓ"bÚ"bc¬†€bb¾œ ¬†‡[bÓ"¬†aZÞ¿ aZ À RjÀ aZ À ‹ÎÀ cCzaZ°À RjÆÀ cCzaZ°À ‹ÎÆÀ •q³†•q³†•q³†ý5 üM6 üM•q³†ý5 üM6 üM•q³†Uj¬†2j5 3‚cÆÂ 3Á Ï 3cÆÂ 3Æ Ï 3Í ŒB3Ú × 3÷ ÓS3 ž u3"ž ®Â35ž ÓS3Jž u3^ž /N3pž l3ƒž l ³‰_ÆJÍ á¡ b¢ b¢ b3^¢ —È V€Žƒ‰_V€@¢ ‰_V€¡ƒ‰_#ZO‰_#ZO ³zPÈ zPéÏ zP‰È V€þƒ‰_V€„‰_#ZO‰_#œP—È #¢P³zPËÈ zPÄÈ  £ ³,£ ³~£ ³Š£ b”£ ³¢£ ³¯£ ‰_$¤ b+¤ ³2¤ †_#u‰_3c§ ‚Ë 3q§ ‚Ë 3€§ ‚Ë 3‘§ ‚Ë 3¦§ ‚Ë 3´§ ‚Ë 3Ƨ ‚Ë 3Õ§ ‚Ë 3æ§ ‚Ë 3ù§ ‚Ë 3 ¨ ‚Ë 3¨ ‚Ë 3,¨ ‚Ë 3@¨ ‚Ë 3O¨ ‚Ë 3f¨ ‚Ë 3z¨ ‚Ë 3Œ¨ ‚Ë 3¡¨ ‚Ë 3´¨ ‚Ë 3ɨ ‚Ë V€]¤ ‰_V€k¤ ‰_V€_„‰_V€‹¤ ‰_V€Ÿ¤ ‰_V€»¤ ‰_V€m„‰_V€v„‰_V€€„‰_V€Š„‰_V€’„‰_V€ „‰_V€¥ ‰_V€­„‰_V€8¥ ‰_V€¸„‰_V€¿„‰_V€È„‰_V€Ñ„‰_V€Ú„‰_V€á„‰_V€é„‰_V€ð„‰_V€ø„‰_V€…‰_V€ …‰_V€…‰_V€…‰_V€#…‰_V€-…‰_V€8…‰_V€C…‰_V€¦ ‰_V€¦ ‰_V€.¦ ‰_V€F¦ ‰_V€T¦ ‰_V€j¦ ‰_V€„¦ ‰_V€”¦ ‰_V€P…‰_V€Z…‰_V€Í¦ ‰_V€ç¦ ‰_V€ý¦ ‰_V€§ ‰_V€1§ ‰_V€M§ ‰_#œP ³#¢Pb#¨P†_#ZO ³#œP ³#¢Pb#œP ³#¢Pb#œP ³#¢Pb#œP ³#¢Pb#¨P‰_#œP ³#¢Pb#ZO‰_#ZO†_#ZOb#ZO™3#ZO¿c#ZObl#ZO@3#ZOü…#ZOJ3#ZOa.#ZO‰_#ZOw3#ZO™Ÿ#ZO3#ZOEÊ #œP ³#¢Pb#ZOgÊ #ZOuÊ #ZOEÊ #œP ³#¢PbzP²É zP¹É zPÀÉ zP|Ê zPÇÉ zPÎÉ zPÕÉ zPÜÉ zPãÉ zPêÉ zPñÉ zPøÉ zPÿÉ zPÊ zP Ê zPÊ zPÊ zP"Ê zP)Ê zP0Ê zP7Ê zP>Ê zPƒÊ zP`Ê zPnÊ zPŠÊ zP‘Ê #u‰_V€ ˆ‰_V€ˆ‰_V€ˆ‰_V€#ˆ‰_V€-ˆ‰_V€8ˆ‰_V€Aˆ‰_#œP¸L#¢P1³#œP‚Ë #¢P³#¨P1³#ZO‰_#ZO¸L#œPP³#¢P¸L#œP³#¢P‰_#ZO³zPÕË zP{Ë zP¹Ë zPÎË zPÀË zPÇË zPÜË aZ£Ë aZ£Ë e¯ ³‰bm¯ †_V€£‰‰_V€ ‰_V€®‰‰_#ZO’Ì #ZOuÊ #ZOgÊ zP‹Ì zP™Ì zP Ì çŽ£Ë šb2A±¸LaZ=ñ 玪ñ JFJó z3ö˜OF‰_ÏGN†ûG[È aZžò 3á‰nô 3 Š{ô  ³‰_ ° úô ° úô $° úô 1° úô >° úô K° úô X° úô e° úô r° úô ° úô Œ° úô ™° úô ¦° úô ³° úô À° úô Ͱ úô Ú° úô ç° úô ô° úô ± úô ± úô ± úô (± úô 5± úô B± úô O± úô \± úô i± úô v± úô ƒ± úô ± úô ± úô ª± úô ·± úô ı úô ѱ úô Þ± úô ë± úô ø± úô ² úô ² úô ² úô ,² úô 9² úô F² úô S² úô `² úô m² úô z² úô ‡² úô ”² úô ¡² úô ®² úô »² úô Ȳ úô Õ² úô â² úô ï² úô ü² úô  ³ úô ³ úô #³ úô 0³ úô =³ úô J³ úô W³ úô d³ úô q³ úô ~³ úô ‹³ úô ˜³ úô ¥³ úô ²³ úô ¿³ úô ̳ úô Ù³ úô æ³ úô ó³ úô ´ úô  ´ úô ´ úô '´ úô 4´ úô A´ úô N´ úô [´ úô h´ úô u´ úô ‚´ úô ´ úô œ´ úô ©´ úô ¶´ úô ô úô д úô Ý´ úô ê´ úô ÷´ úô µ úô µ úô µ úô +µ úô 8µ úô Eµ úô Rµ úô _µ úô lµ úô yµ úô †µ úô “µ úô  µ úô ­µ úô ºµ úô ǵ úô Ôµ úô áµ úô îµ úô ûµ úô ¶ úô ¶ úô "¶ úô /¶ úô <¶ úô I¶ úô V¶ úô c¶ úô p¶ úô }¶ úô ж úô —¶ úô ¤¶ úô ±¶ úô ¾¶ úô ˶ úô ض úô å¶ úô ò¶ úô ÿ¶ úô  · úô · úô &· úô 3· úô @· úô M· úô Z· úô g· úô t· úô · úô Ž· úô ›· úô ¨· úô µ· úô · úô Ï· úô Ü· úô é· úô ö· úô ¸ úô ¸ úô ¸ úô *¸ úô 7¸ úô D¸ úô Q¸ úô ^¸ úô k¸ úô x¸ úô …¸ úô ’¸ úô Ÿ¸ úô ¬¸ úô ¹¸ úô Ƹ úô Ó¸ úô ภúô í¸ úô ú¸ úô ¹ úô ¹ úô !¹ úô .¹ úô ;¹ úô H¹ úô U¹ úô b¹ úô o¹ úô |¹ úô ‰¹ úô –¹ úô £¹ úô °¹ úô ½¹ úô ʹ úô ×¹ úô ä¹ úô ñ¹ úô þ¹ úô  º úô º úô %º úô 2º úô ?º úô Lº úô Yº úô fº úô sº úô €º úô º úô šº úô §º úô ´º úô Áº úô κ úô Ûº úô èº úô õº úô » úô » úô » úô )» úô 6» úô C» úô P» úô ]» úô j» úô w» úô „» úô ‘» úô ž» úô «» úô ¸» úô Å» úô Ò» úô ß» úô ì» úô ù» úô ¼ úô ¼ úô  ¼ úô -¼ úô :¼ úô G¼ úô T¼ úô a¼ úô n¼ úô {¼ úô ˆ¼ úô •¼ úô ¢¼ úô ¯¼ úô ¼¼ úô ɼ úô Ö¼ úô ã¼ úô ð¼ úô ý¼ úô  ½ úô ½ úô $½ úô 1½ úô >½ úô K½ úô X½ úô e½ úô r½ úô ½ úô Œ½ úô ™½ úô ¦½ úô ³½ úô À½ úô ͽ úô Ú½ úô ç½ úô ô½ úô ¾ úô ¾ úô ¾ úô (¾ úô 5¾ úô B¾ úô O¾ úô \¾ úô i¾ úô v¾ úô ƒ¾ úô ¾ úô ¾ úô ª¾ úô ·¾ úô ľ úô Ѿ úô Þ¾ úô ë¾ úô ø¾ úô ¿ úô ¿ úô ¿ úô ,¿ úô 9¿ úô F¿ úô S¿ úô `¿ úô m¿ úô z¿ úô ‡¿ úô ”¿ úô ¡¿ úô ®¿ úô »¿ úô È¿ úô Õ¿ úô â¿ úô ï¿ úô ü¿ úô  À úô À úô #À úô 0À úô =À úô JÀ úô WÀ úô dÀ úô qÀ úô ~À úô ‹À úô ˜À úô ¥À úô ²À úô ¿À úô ÌÀ úô ÙÀ úô æÀ úô óÀ úô Á úô  Á úô Á úô 'Á úô 4Á úô AÁ úô NÁ úô [Á úô hÁ úô uÁ úô ‚Á úô Á úô œÁ úô ©Á úô ¶Á úô ÃÁ úô ÐÁ úô ÝÁ úô êÁ úô ÷Á úô  úô  úô  úô + úô 8 úô E úô R úô _ úô l úô y úô †Â úô “ úô  Â úô ­Â úô ºÂ úô Ç úô Ô úô á úô î úô û úô à úô à úô "à úô /à úô <à úô Ià úô Và úô cà úô pà úô }à úô ŠÃ úô —à úô ¤Ã úô ±Ã úô ¾Ã úô Ëà úô ØÃ úô åà úô òà úô ÿà úô  Ä úô Ä úô &Ä úô 3Ä úô @Ä úô MÄ úô ZÄ úô gÄ úô tÄ úô Ä úô ŽÄ úô ›Ä úô ¨Ä úô µÄ úô ÂÄ úô ÏÄ úô ÜÄ úô éÄ úô öÄ úô Å úô Å úô Å úô *Å úô 7Å úô DÅ úô QÅ úô ^Å úô kÅ úô xÅ úô …Å úô ’Å úô ŸÅ úô ¬Å úô ¹Å úô ÆÅ úô ÓÅ úô àÅ úô íÅ úô úÅ úô Æ úô Æ úô !Æ úô .Æ úô ;Æ úô HÆ úô UÆ úô bÆ úô oÆ úô |Æ úô ‰Æ úô –Æ úô £Æ úô °Æ úô ½Æ úô ÊÆ úô ׯ úô äÆ úô ñÆ úô þÆ úô  Ç úô Ç úô %Ç úô 2Ç úô ?Ç úô LÇ úô YÇ úô fÇ úô sÇ úô €Ç úô Ç úô šÇ úô §Ç úô ´Ç úô ÁÇ úô ÎÇ úô ÛÇ úô èÇ úô õÇ úô È úô È úô È úô )È úô 6È úô CÈ úô PÈ úô ]È úô jÈ úô wÈ úô „È úô ‘È úô žÈ úô «È úô ¸È úô ÅÈ úô ÒÈ úô ßÈ úô ìÈ úô ùÈ úô É úô É úô  É úô -É úô :É úô GÉ úô TÉ úô aÉ úô nÉ úô {É úô ˆÉ úô •É úô ¢É úô ¯É úô ¼É úô ÉÉ úô ÖÉ úô ãÉ úô ðÉ úô ýÉ úô  Ê úô Ê úô $Ê úô 1Ê úô >Ê úô KÊ úô XÊ úô eÊ úô rÊ úô Ê úô ŒÊ úô ™Ê úô ¦Ê úô ³Ê úô ÀÊ úô ÍÊ úô ÚÊ úô çÊ úô ôÊ úô Ë úô Ë úô Ë úô (Ë úô 5Ë úô BË úô OË úô \Ë úô iË úô vË úô ƒË úô Ë úô Ë úô ªË úô ·Ë úô ÄË úô ÑË úô ÞË úô ëË úô øË úô Ì úô Ì úô Ì úô ,Ì úô 9Ì úô FÌ úô SÌ úô `Ì úô mÌ úô zÌ úô ‡Ì úô ”Ì úô ¡Ì úô ®Ì úô »Ì úô ÈÌ úô ÕÌ úô âÌ úô ïÌ úô üÌ úô  Í úô Í úô #Í úô 0Í úô =Í úô JÍ úô WÍ úô dÍ úô qÍ úô ~Í úô ‹Í úô ˜Í úô ¥Í úô ²Í úô ¿Í úô ÌÍ úô ÙÍ úô æÍ úô óÍ úô Î úô  Î úô Î úô 'Î úô 4Î úô AÎ úô NÎ úô [Î úô hÎ úô uÎ úô ‚Î úô Î úô œÎ úô ©Î úô ¶Î úô ÃÎ úô ÐÎ úô ÝÎ úô êÎ úô ÷Î úô Ï úô Ï úô Ï úô +Ï úô 8Ï úô EÏ úô RÏ úô _Ï úô lÏ úô yÏ úô †Ï úô “Ï úô  Ï úô ­Ï úô ºÏ úô ÇÏ úô ÔÏ úô áÏ úô îÏ úô ûÏ úô Ð úô Ð úô "Ð úô /Ð úô <Ð úô IÐ úô VÐ úô cÐ úô pÐ úô }Ð úô ŠÐ úô —Ð úô ¤Ð úô ±Ð úô ¾Ð úô ËÐ úô ØÐ úô åÐ úô òÐ úô ÿÐ úô  Ñ úô Ñ úô &Ñ úô 3Ñ úô @Ñ úô MÑ úô ZÑ úô gÑ úô tÑ úô Ñ úô ŽÑ úô ›Ñ úô ¨Ñ úô µÑ úô ÂÑ úô ÏÑ úô ÜÑ úô éÑ úô öÑ úô Ò úô Ò úô Ò úô *Ò úô 7Ò úô DÒ úô QÒ úô ^Ò úô kÒ úô xÒ úô …Ò úô ’Ò úô ŸÒ úô ¬Ò úô ¹Ò úô ÆÒ úô ÓÒ úô àÒ úô íÒ úô úÒ úô Ó úô Ó úô !Ó úô .Ó úô ;Ó úô HÓ úô UÓ úô bÓ úô oÓ úô |Ó úô ‰Ó úô –Ó úô £Ó úô °Ó úô ½Ó úô ÊÓ úô ×Ó úô äÓ úô ñÓ úô þÓ úô  Ô úô Ô úô %Ô õ ’MãžÒYºv N†RÕ Âs’Mãž {†_Õ{ø ’Mãž {†_Õ{ø 3CØ 6u3OØ ;u3^Ø _u ³‰_w†_þÙ †_Ú ÒæŒ¯ý dÚ ³†mÚ sý yÚ U¢ŠÚ GŸÚ 'áÒYºvaZ`þ ‡[bÓ"¬†‡[bÓ"¬†#u‰_3Ü Mÿ 3Ü Mÿ V€aÜ ‰_V€qÜ ‰_3ÏÜ 3ßÜ ³†3òÜ ³†3Ý ý 3Ý ý 3>Û +Ý †_ ³‰_ŒÞ Ý™Þ ä¦Þ ë³Þ òÀÞ ùÍÞ òÚÞ çÞ ôÞ ò#œP¬†#¢P†_#¨P†_#ÁPL#ÇP¬†·à a#u‰_3Âñ `Ÿ3Üñ `Ÿ3îñ `Ÿ3 ò `Ÿ3&ò `Ÿ3?ò `Ÿ3Pò `Ÿ3]ò `Ÿ3oò `Ÿ3ƒò `Ÿ3’ò `Ÿ3Ÿò `Ÿ3±ò `Ÿ3¿ò `Ÿ3Íò `Ÿ3Ûò `Ÿ3ìò `Ÿ3øò `Ÿ3ó `Ÿ38ó `Ÿ3Zó `Ÿ3só `Ÿ3ˆó `Ÿ3£ó `Ÿ3ºó `Ÿ3Éó `Ÿ3Öó `Ÿ3åó `Ÿ3õó `Ÿ3ô `Ÿ3ô `Ÿ3$ô `Ÿ33ô `Ÿ3Aô `Ÿ3Rô `Ÿ3cô `Ÿ3sô `Ÿ3‡ô `Ÿ3—ô `Ÿ3®ô `Ÿ3½ô `Ÿ3Éô `Ÿ3Õô `Ÿ3äô `Ÿ3óô `Ÿ3õ `Ÿ3%õ `Ÿ33õ `Ÿ3Bõ `Ÿ3Võ `Ÿ3iõ `Ÿ3€õ `Ÿ3“õ `Ÿ3¯õ `Ÿ3¾õ `Ÿ3Íõ `Ÿ3Üõ `Ÿ3ïõ `Ÿ3ö `Ÿ3ö `Ÿ3 ö `Ÿ34ö `Ÿ3@ö `Ÿ3Nö `Ÿ3bö `Ÿ3xö `Ÿ3”ö `Ÿ3¨ö `Ÿ3½ö `Ÿ3Ïö `Ÿ3Üö `Ÿ3êö `Ÿ3÷ö `Ÿ3÷ `Ÿ3÷ `Ÿ3 ÷ `Ÿ3.÷ `Ÿ3=÷ `Ÿ3L÷ `Ÿ3g÷ `Ÿ3~÷ `Ÿ3‹÷ `Ÿ3™÷ `Ÿ3¨÷ `Ÿ3Ã÷ `Ÿ3Þ÷ `Ÿ3ë÷ `Ÿ3ö÷ `Ÿ3ø `Ÿ3ø `Ÿ3ø `Ÿ3'ø `Ÿ33ø `Ÿ3@ø `Ÿ3Lø `Ÿ3[ø `Ÿ3mø `Ÿ3~ø `Ÿ3Œø `Ÿ3™ø `Ÿ3§ø `Ÿ3µø `Ÿ3Åø `Ÿ3Ñø `Ÿ3Üø `Ÿ3îø `Ÿ3üø `Ÿ3ù `Ÿ3ù `Ÿ3%ù `Ÿ30ù `Ÿ3;ù `Ÿ3Kù `Ÿ3[ù `Ÿ3kù `Ÿ3wù `Ÿ3‚ù `Ÿ3‘ù `Ÿ3¡ù `Ÿ3­ù `Ÿ3»ù `Ÿ3Æù `Ÿ3Óù `Ÿ3âù `Ÿ3ïù `Ÿ3üù `Ÿ3ú `Ÿ3ú `Ÿ3(ú `Ÿ37ú `Ÿ3Hú `Ÿ3Uú `Ÿ3fú `Ÿ3uú `Ÿ3‡ú `Ÿ3˜ú `Ÿ3«ú `ŸV€Œ‰_V€'Œ‰_V€1Œ‰_V€<Œ‰_V€DŒ‰_V€OŒ‰_V€YŒ‰_V€dŒ‰_V€qŒ‰_V€~Œ‰_V€ŠŒ‰_V€ŽŒ‰_V€šŒ‰_V€få ‰_V€Œå ‰_V€¢å ‰_V€Ðå ‰_V€öå ‰_V€æ ‰_V€.æ ‰_V€:æ ‰_V€Pæ ‰_V€jæ ‰_V€zæ ‰_V€†æ ‰_V€œæ ‰_V€ªæ ‰_V€¸æ ‰_V€Ææ ‰_V€Úæ ‰_V€¡Œ‰_V€©Œ‰_V€õæ ‰_V€#ç ‰_V€Yç ‰_V€ç ‰_V€³ç ‰_V€Ïç ‰_V€÷ç ‰_V€è ‰_V€'è ‰_V€3è ‰_V€Cè ‰_V€Uè ‰_V€iè ‰_V€yè ‰_V€‰è ‰_V€™è ‰_V€§è ‰_V€»è ‰_V€Ïè ‰_V€áè ‰_V€ûè ‰_V€ é ‰_V€-é ‰_V€=é ‰_V€Gé ‰_V€Qé ‰_V€aé ‰_V€qé ‰_V€™é ‰_V€¹é ‰_V€Çé ‰_V€×é ‰_V€ñé ‰_V€ ê ‰_V€)ê ‰_V€Aê ‰_V€kê ‰_V€{ê ‰_V€‹ê ‰_V€›ê ‰_V€³ê ‰_V€Íê ‰_V€Ýê ‰_V€ëê ‰_V€ë ‰_V€ë ‰_V€ë ‰_V€7ë ‰_V€Uë ‰_V€ë ‰_V€™ë ‰_V€µë ‰_V€Ëë ‰_V€×ë ‰_V€åë ‰_V€ñë ‰_V€ýë ‰_V€ì ‰_V€ì ‰_V€'ì ‰_V€7ì ‰_V€Gì ‰_V€oì ‰_V€ì ‰_V€›ì ‰_V€©ì ‰_V€¹ì ‰_V€áì ‰_V€ í ‰_V€í ‰_V€í ‰_V€'í ‰_V€3í ‰_V€;í ‰_V€Gí ‰_V€Qí ‰_V€]í ‰_V€gí ‰_V€wí ‰_V€í ‰_V€¡í ‰_V€¯í ‰_V€»í ‰_V€Éí ‰_V€×í ‰_V€éí ‰_V€óí ‰_V€ûí ‰_V€î ‰_V€î ‰_V€)î ‰_V€3î ‰_V€Gî ‰_V€Oî ‰_V€Wî ‰_V€iî ‰_V€{î ‰_V€î ‰_V€—î ‰_V€Ÿî ‰_V€¯î ‰_V€Áî ‰_V€Ëî ‰_V€Ùî ‰_V€áî ‰_V€íî ‰_V€ýî ‰_V€ ï ‰_V€ï ‰_V€ï ‰_V€1ï ‰_V€Cï ‰_V€Sï ‰_V€gï ‰_V€sï ‰_V€‡ï ‰_V€—ï ‰_V€­ï ‰_V€Áï ‰_V€Ùï ‰_V€®Œ‰_V€µŒ‰_V€¼Œ‰_V€ÇŒ‰_V€ÒŒ‰_V€ÙŒ‰_V€ÞŒ‰_V€æŒ‰_V€êŒ‰_V€ðŒ‰_V€ûŒ‰_V€‰_V€ ‰_V€‰_V€‰_V€‰_V€'‰_V€2‰_V€9‰_V€@‰_V€G‰_V€M‰_V€S‰_V€Y‰_V€g‰_V€m‰_V€r‰_V€†‰_V€™‰_V€§‰_V€´‰_V€Ê‰_V€Ô‰_V€á‰_V€ñ‰_V€Ž‰_V€Ž‰_V€Ž‰_V€*މ_V€1މ_#ZOú#ZOú#ZOú#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZO@Ÿ#ZOb#ZO`Ÿ#ZOb#ZO†_#ZO};#ZO};#ZO};#ZOb#ZOb#ZO†_#ZO†_#ZO†_#ZO†_#ZO†_#ZOÈ-#ZOÛ#ZObl#ZO¿c#ZO™3#ZO™Ÿ#ZO3#ZO3#ZOw3#ZOa.#ZOü…#ZOq&#ZOWœ#ZOWœ#ZO¯'#ZO%(#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZOb#ZO´…zP´zP»zPÂzPgzPnzPuzP|zPƒzPŠzP‘zP‰ŸzP$}zPÕS zP˜zPŸzPo;zPv;zPa zP–k zPCi zP°S zP·S zP zP7 zP0 zPq zP£ŸzPÞzPåzPì#u‰_3ë' œŸ3( œŸ3( œŸ32( œŸ3H( œŸ3a( œŸ3y( œŸ3’( œŸ3­( œŸ3È( œŸ3â( œŸ3ô( œŸ3) œŸ3#) œŸ3C) œŸ3[) œŸ3) œŸ3Ÿ) œŸ3¾) œŸ3Õ) œŸ3è) œŸ3* œŸ3* œŸ3/* œŸ3B* œŸ3Z* œŸ3n* œŸ3‚* œŸ3–* œŸ3­* œŸ3¿* œŸ3Õ* œŸ3è* œŸ3 + œŸ34+ œŸ3\+ œŸ3{+ œŸ3–+ œŸ3·+ œŸ3Ô+ œŸ3é+ œŸ3ü+ œŸ3, œŸ3', œŸ3>, œŸ3S, œŸ3h, œŸ3}, œŸ3‘, œŸ3¨, œŸ3¿, œŸ3Õ, œŸ3ï, œŸ3- œŸ3"- œŸ37- œŸ3I- œŸ3[- œŸ3p- œŸ3…- œŸ3¦- œŸ3Ã- œŸ3×- œŸ3ì- œŸ3. œŸ3. œŸ3<. œŸ3U. œŸ3w. œŸ3Œ. œŸ3¡. œŸ3¶. œŸ3Ï. œŸ3é. œŸ3þ. œŸ3/ œŸ3,/ œŸ3>/ œŸ3R/ œŸ3l/ œŸ3ˆ/ œŸ3ª/ œŸ3Ä/ œŸ3ß/ œŸ3÷/ œŸ3 0 œŸ30 œŸ310 œŸ3D0 œŸ3V0 œŸ3l0 œŸ3€0 œŸ3•0 œŸ3ª0 œŸ3Ë0 œŸ3è0 œŸ3û0 œŸ31 œŸ3$1 œŸ3E1 œŸ3f1 œŸ3y1 œŸ3Š1 œŸ3œ1 œŸ3¯1 œŸ3À1 œŸ3Ó1 œŸ3å1 œŸ3ø1 œŸ3 2 œŸ32 œŸ372 œŸ3N2 œŸ3b2 œŸ3u2 œŸ3‰2 œŸ32 œŸ3³2 œŸ3Å2 œŸ3Ö2 œŸ3î2 œŸ33 œŸ33 œŸ3&3 œŸ3=3 œŸ3N3 œŸ3_3 œŸ3u3 œŸ3‹3 œŸ3¡3 œŸ3³3 œŸ3Ä3 œŸ3Ù3 œŸ3ï3 œŸ34 œŸ34 œŸ3&4 œŸ394 œŸ3N4 œŸ3a4 œŸ3t4 œŸ3†4 œŸ3œ4 œŸ3²4 œŸ3Ç4 œŸ3Þ4 œŸ3ñ4 œŸ35 œŸ35 œŸ355 œŸ3L5 œŸ3e5 œŸ3x5 œŸ35 œŸ3¢5 œŸ3»5 œŸ3Ô5 œŸ3é5 œŸ3ü5 œŸ36 œŸ3$6 œŸ386 œŸ3Q6 œŸ3f6 œŸ3|6 œŸ36 œŸ3¤6 œŸ3¹6 œŸ3Ñ6 œŸ3ê6 œŸ3ÿ6 œŸ37 œŸ3)7 œŸ3=7 œŸ3Q7 œŸ3e7 œŸ37 œŸ3•7 œŸ3¨7 œŸ3Ê7 œŸ3ë7 œŸ38 œŸ3"8 œŸ3F8 œŸ3^8 œŸ3y8 œŸ3—8 œŸ3¶8 œŸ3×8 œŸ3ë8 œŸ39 œŸ39 œŸ359 œŸ3P9 œŸV€• ‰_V€³ ‰_V€Õ ‰_V€ù ‰_V€ ‰_V€; ‰_V€] ‰_V€ ‰_V€© ‰_V€Ñ ‰_V€÷ ‰_V€  ‰_V€3 ‰_V€O ‰_V€ ‰_V€£ ‰_V€Ý ‰_V€ ‰_V€? ‰_V€_ ‰_V€w ‰_V€™ ‰_V€¿ ‰_V€Û ‰_V€ó ‰_V€ ‰_V€/ ‰_V€I ‰_V€c ‰_V€ƒ ‰_V€™ ‰_V€· ‰_V€Ï ‰_V€  ‰_V€K ‰_V€ ‰_V€½ ‰_V€å ‰_V€ ‰_V€E ‰_V€a ‰_V€y ‰_V€• ‰_V€³ ‰_V€Ó ‰_V€ï ‰_V€  ‰_V€' ‰_V€A ‰_V€a ‰_V€ ‰_V€Ÿ ‰_V€Å ‰_V€ã ‰_V€ ‰_V€+ ‰_V€A ‰_V€W ‰_V€s ‰_V€ ‰_V€Ã ‰_V€ï ‰_V€  ‰_V€% ‰_V€K ‰_V€o ‰_V€› ‰_V€¿ ‰_V€õ ‰_V€ ‰_V€- ‰_V€I ‰_V€m ‰_V€“ ‰_V€¯ ‰_V€É ‰_V€ï ‰_V€ ‰_V€ ‰_V€E ‰_V€o ‰_V€¥ ‰_V€Ë ‰_V€ó ‰_V€ ‰_V€- ‰_V€G ‰_V€_ ‰_V€w ‰_V€ ‰_V€« ‰_V€Å ‰_V€á ‰_V€ý ‰_V€1 ‰_V€] ‰_V€u ‰_V€ ‰_V€« ‰_V€ß ‰_V€ ‰_V€+ ‰_V€? ‰_V€U ‰_V€m ‰_V€ ‰_V€™ ‰_V€¯ ‰_V€Ç ‰_V€Ý ‰_V€ù ‰_V€ ‰_V€; ‰_V€U ‰_V€m ‰_V€‡ ‰_V€¡ ‰_V€¿ ‰_V€Õ ‰_V€é ‰_V€  ‰_V€% ‰_V€; ‰_V€Q ‰_V€q ‰_V€… ‰_V€™ ‰_V€· ‰_V€Õ ‰_V€ó ‰_V€ ‰_V€ ‰_V€9 ‰_V€W ‰_V€m ‰_V€‡ ‰_V€› ‰_V€³ ‰_V€Ï ‰_V€ç ‰_V€ÿ ‰_V€! ‰_V€3! ‰_V€Q! ‰_V€m! ‰_V€! ‰_V€¥! ‰_V€Å! ‰_V€á! ‰_V€" ‰_V€#" ‰_V€G" ‰_V€_" ‰_V€{" ‰_V€—" ‰_V€»" ‰_V€ß" ‰_V€û" ‰_V€# ‰_V€1# ‰_V€G# ‰_V€a# ‰_V€…# ‰_V€¡# ‰_V€¿# ‰_V€×# ‰_V€ó# ‰_V€$ ‰_V€1$ ‰_V€U$ ‰_V€q$ ‰_V€$ ‰_V€©$ ‰_V€Ã$ ‰_V€Ý$ ‰_V€÷$ ‰_V€!% ‰_V€;% ‰_V€S% ‰_V€‰% ‰_V€½% ‰_V€ç% ‰_V€& ‰_V€I& ‰_V€k& ‰_V€“& ‰_V€Á& ‰_V€ñ& ‰_V€%' ‰_V€?' ‰_V€k' ‰_V€‡' ‰_V€©' ‰_V€Ñ' ‰_#u‰_3j– Ì/3Ž– Ì/3·– Ì/3Ù– Ì/3õ– Ì/3— Ì/39— Ì/3Z— Ì/3|— Ì/3¢— Ì/3Í— Ì/3ô— Ì/3˜ Ì/34˜ Ì/3R˜ Ì/3u˜ Ì/3‘˜ Ì/3°˜ Ì/3Ó˜ Ì/3ù˜ Ì/3™ Ì/3>™ Ì/3d™ Ì/3†™ Ì/3¥™ Ì/3Ä™ Ì/3ò™ Ì/3š Ì/37š Ì/3mš Ì/3œš Ì/3¾š Ì/3Úš Ì/3› Ì/3› Ì/3B› Ì/3g› Ì/3Ž› Ì/3¬› Ì/3Ò› Ì/3í› Ì/3œ Ì/3&œ Ì/3Fœ Ì/3eœ Ì/3€œ Ì/3žœ Ì/3Äœ Ì/3Þœ Ì/3þœ Ì/3 Ì/37 Ì/3Q Ì/3s Ì/3 Ì/3¯ Ì/3Ý Ì/3ü Ì/3ž Ì/3Hž Ì/3dž Ì/3„ž Ì/3ªž Ì/3Øž Ì/3øž Ì/3Ÿ Ì/33Ÿ Ì/3MŸ Ì/3oŸ Ì/3ŒŸ Ì/3«Ÿ Ì/3ÙŸ Ì/3øŸ Ì/3  Ì/3D  Ì/3j  Ì/3˜  Ì/3Å  Ì/3à  Ì/3¡ Ì/3$¡ Ì/3@¡ Ì/3b¡ Ì/3z¡ Ì/3¡¡ Ì/3¼¡ Ì/3Ó¡ Ì/3ö¡ Ì/3¢ Ì/3:¢ Ì/3X¢ Ì/3u¢ Ì/3¢ Ì/3¦¢ Ì/3¢ Ì/3Û¢ Ì/3£ Ì/31£ Ì/3\£ Ì/3}£ Ì/3§£ Ì/3Ê£ Ì/3ò£ Ì/3¤ Ì/3;¤ Ì/3b¤ Ì/3ƒ¤ Ì/3§¤ Ì/3Á¤ Ì/3㤠Ì/3 ¥ Ì/33¥ Ì/3]¥ Ì/3ˆ¥ Ì/3¬¥ Ì/3Ì¥ Ì/3ë¥ Ì/3¦ Ì/3¦ Ì/3@¦ Ì/3c¦ Ì/3…¦ Ì/3£¦ Ì/3̦ Ì/3ï¦ Ì/3 § Ì/3/§ Ì/3M§ Ì/3g§ Ì/3§ Ì/3›§ Ì/3¿§ Ì/3Ù§ Ì/3ô§ Ì/3¨ Ì/3'¨ Ì/3D¨ Ì/3^¨ Ì/3ƒ¨ Ì/3¦¨ Ì/3Ȩ Ì/3ø¨ Ì/3© Ì/3)© Ì/3C© Ì/3X© Ì/3n© Ì/3‡© Ì/3¥© Ì/3Ç© Ì/3é© Ì/3ª Ì/3<ª Ì/3mª Ì/3•ª Ì/3¸ª Ì/3åª Ì/3« Ì/3-« Ì/3F« Ì/3e« Ì/3ƒ« Ì/3ª« Ì/3É« Ì/3ì« Ì/3¬ Ì/35¬ Ì/3S¬ Ì/3r¬ Ì/3¬ Ì/3±¬ Ì/3ά Ì/3ø¬ Ì/3!­ Ì/3G­ Ì/3p­ Ì/3•­ Ì/3¹­ Ì/3Û­ Ì/3ù­ Ì/3® Ì/39® Ì/3Q® Ì/3i® Ì/3‚® Ì/3® Ì/3¹® Ì/3Ü® Ì/3ü® Ì/3¯ Ì/38¯ Ì/3V¯ Ì/3r¯ Ì/3¯ Ì/3©¯ Ì/3ï Ì/3ݯ Ì/3õ¯ Ì/3 ° Ì/3(° Ì/3P° Ì/3i° Ì/3° Ì/3ª° Ì/3İ Ì/3Þ° Ì/3ø° Ì/3± Ì/3@± Ì/3m± Ì/3‡± Ì/3¥± Ì/3Ʊ Ì/3é± Ì/3 ² Ì/3I² Ì/3g² Ì/3„² Ì/3§² Ì/3˲ Ì/3ó² Ì/3³ Ì/3K³ Ì/3d³ Ì/3‚³ Ì/3œ³ Ì/3½³ Ì/3Þ³ Ì/3ú³ Ì/3´ Ì/32´ Ì/3V´ Ì/3v´ Ì/3˜´ Ì/3¾´ Ì/3ß´ Ì/3µ Ì/3µ Ì/3@µ Ì/3hµ Ì/3“µ Ì/3ȵ Ì/3ൠÌ/3ýµ Ì/3"¶ Ì/3=¶ Ì/3Q¶ Ì/3k¶ Ì/3“¶ Ì/3µ¶ Ì/3ж Ì/3ð¶ Ì/3· Ì/3(· Ì/3O· Ì/3s· Ì/3· Ì/3¸· Ì/3å· Ì/3þ· Ì/3&¸ Ì/3E¸ Ì/3c¸ Ì/3¸ Ì/3¬¸ Ì/3˸ Ì/3ë¸ Ì/3 ¹ Ì/3+¹ Ì/3K¹ Ì/3a¹ Ì/3й Ì/3 ¹ Ì/3µ¹ Ì/3̹ Ì/3é¹ Ì/3º Ì/3º Ì/34º Ì/3Kº Ì/3bº Ì/3º Ì/3º Ì/3º Ì/3èº Ì/3» Ì/34» Ì/3I» Ì/3a» Ì/3}» Ì/3š» Ì/3À» Ì/3Þ» Ì/3÷» Ì/3¼ Ì/3'¼ Ì/3B¼ Ì/3^¼ Ì/3v¼ Ì/3’¼ Ì/3°¼ Ì/3˼ Ì/3é¼ Ì/3½ Ì/3*½ Ì/3T½ Ì/3q½ Ì/3½ Ì/3§½ Ì/3¾½ Ì/3ؽ Ì/3¾ Ì/V€ÊW ‰_V€X ‰_V€HX ‰_V€~X ‰_V€¨X ‰_V€ÖX ‰_V€Y ‰_V€HY ‰_V€~Y ‰_V€¼Y ‰_V€Z ‰_V€DZ ‰_V€vZ ‰_V€¨Z ‰_V€ÖZ ‰_V€[ ‰_V€8[ ‰_V€h[ ‰_V€ [ ‰_V€Þ[ ‰_V€\ ‰_V€L\ ‰_V€Š\ ‰_V€À\ ‰_V€ð\ ‰_V€ ] ‰_V€n] ‰_V€²] ‰_V€Ü] ‰_V€:^ ‰_V€Š^ ‰_V€À^ ‰_V€ê^ ‰_V€(_ ‰_V€P_ ‰_V€_ ‰_V€Ì_ ‰_V€ ` ‰_V€:` ‰_V€x` ‰_V€ ` ‰_V€Â` ‰_V€ö` ‰_V€(a ‰_V€Xa ‰_V€€a ‰_V€®a ‰_V€ìa ‰_V€b ‰_V€Db ‰_V€lb ‰_V€šb ‰_V€Àb ‰_V€öb ‰_V€"c ‰_V€Rc ‰_V€ c ‰_V€Ðc ‰_V€d ‰_V€Ld ‰_V€vd ‰_V€¨d ‰_V€æd ‰_V€4e ‰_V€fe ‰_V€’e ‰_V€Àe ‰_V€æe ‰_V€f ‰_V€Hf ‰_V€xf ‰_V€Æf ‰_V€öf ‰_V€*g ‰_V€rg ‰_V€°g ‰_V€þg ‰_V€Jh ‰_V€rh ‰_V€¬h ‰_V€Þh ‰_V€i ‰_V€>i ‰_V€`i ‰_V€ i ‰_V€Èi ‰_V€èi ‰_V€ j ‰_V€^j ‰_V€Œj ‰_V€ºj ‰_V€æj ‰_V€ k ‰_V€,k ‰_V€Vk ‰_V€zk ‰_V€Àk ‰_V€ l ‰_V€Rl ‰_V€†l ‰_V€Ìl ‰_V€m ‰_V€Fm ‰_V€Šm ‰_V€¼m ‰_V€üm ‰_V€0n ‰_V€jn ‰_V€n ‰_V€Æn ‰_V€ o ‰_V€Jo ‰_V€o ‰_V€Øo ‰_V€p ‰_V€Dp ‰_V€tp ‰_V€šp ‰_V€Àp ‰_V€ôp ‰_V€,q ‰_V€bq ‰_V€q ‰_V€Ôq ‰_V€ r ‰_V€:r ‰_V€pr ‰_V€žr ‰_V€Är ‰_V€êr ‰_V€s ‰_V€Js ‰_V€ps ‰_V€˜s ‰_V€¾s ‰_V€âs ‰_V€t ‰_V€4t ‰_V€pt ‰_V€¨t ‰_V€Þt ‰_V€0u ‰_V€Xu ‰_V€vu ‰_V€œu ‰_V€¸u ‰_V€Öu ‰_V€úu ‰_V€(v ‰_V€^v ‰_V€”v ‰_V€Àv ‰_V€w ‰_V€rw ‰_V€´w ‰_V€ìw ‰_V€8x ‰_V€‚x ‰_V€¬x ‰_V€Ðx ‰_V€y ‰_V€.y ‰_V€ny ‰_V€žy ‰_V€Öy ‰_V€z ‰_V€Lz ‰_V€zz ‰_V€ªz ‰_V€Øz ‰_V€ { ‰_V€8{ ‰_V€~{ ‰_V€Â{ ‰_V€| ‰_V€D| ‰_V€€| ‰_V€º| ‰_V€ð| ‰_V€} ‰_V€V} ‰_V€‚} ‰_V€¤} ‰_V€Æ} ‰_V€ê} ‰_V€~ ‰_V€<~ ‰_V€t~ ‰_V€¦~ ‰_V€Ö~ ‰_V€ ‰_V€0 ‰_V€Z ‰_V€‚ ‰_V€¬ ‰_V€Ò ‰_V€ø ‰_V€€ ‰_V€<€ ‰_V€d€ ‰_V€¦€ ‰_V€Ê€ ‰_V€ ‰_V€0 ‰_V€V ‰_V€| ‰_V€¢ ‰_V€Ð ‰_V€‚ ‰_V€b‚ ‰_V€ˆ‚ ‰_V€¶‚ ‰_V€ê‚ ‰_V€"ƒ ‰_V€Xƒ ‰_V€Æƒ ‰_V€ôƒ ‰_V€ „ ‰_V€X„ ‰_V€’„ ‰_V€Ô„ ‰_V€… ‰_V€h… ‰_V€Œ… ‰_V€º… ‰_V€à… ‰_V€† ‰_V€H† ‰_V€r† ‰_V€”† ‰_V€Æ† ‰_V€‡ ‰_V€2‡ ‰_V€h‡ ‰_V€¦‡ ‰_V€Ú‡ ‰_V€ˆ ‰_V€>ˆ ‰_V€rˆ ‰_V€´ˆ ‰_V€üˆ ‰_V€X‰ ‰_V€z‰ ‰_V€¦‰ ‰_V€â‰ ‰_V€ Š ‰_V€$Š ‰_V€JŠ ‰_V€ŒŠ ‰_V€ÂŠ ‰_V€êŠ ‰_V€‹ ‰_V€>‹ ‰_V€p‹ ‰_V€°‹ ‰_V€ê‹ ‰_V€Œ ‰_V€XŒ ‰_V€¤Œ ‰_V€ÈŒ ‰_V€ ‰_V€: ‰_V€h ‰_V€² ‰_V€Þ ‰_V€Ž ‰_V€@Ž ‰_V€tŽ ‰_V€¤Ž ‰_V€ÖŽ ‰_V€ôŽ ‰_V€8 ‰_V€V ‰_V€r ‰_V€’ ‰_V€¾ ‰_V€à ‰_V€ ‰_V€* ‰_V€J ‰_V€j ‰_V€– ‰_V€Ä ‰_V€‘ ‰_V€>‘ ‰_V€„‘ ‰_V€º‘ ‰_V€Ö‘ ‰_V€ø‘ ‰_V€"’ ‰_V€N’ ‰_V€Œ’ ‰_V€º’ ‰_V€Þ’ ‰_V€“ ‰_V€"“ ‰_V€J“ ‰_V€t“ ‰_V€–“ ‰_V€À“ ‰_V€î“ ‰_V€” ‰_V€D” ‰_V€h” ‰_V€ª” ‰_V€ð” ‰_V€• ‰_V€L• ‰_V€l• ‰_V€Œ• ‰_V€²• ‰_V€ – ‰_Iä "Ÿ¶ã Q<¢ ÑŒRj¬†Uj¬†Iä ÑŒUj¬†Iä "Ÿ¶ã Q<¢ Ó©Rj¬†Uj¬†Iä Ó©Uj¬†ª âE¢ #ñ­ #ñ° #ñUj¬†Iä âEª #ñIä ÄÈUj¬†Uj¬†Î †_¦ìsÎ#ñUj¬†âLþ¶¯ó(Pã Kª ŠN¢ Û¨­ Û¨° Û¨Uj¬†ª ŠN¢ Û¨­ Û¨Uj¬†Iä ŠNª Û¨Iä ÄÈUj¬†Î †_¦ìsÎÛ¨Uj¬†Uj¬†âLþ¶¯ó(PIä †_¶ã é­ $˜ê ¬†ú ¬†#ã ¬†òã lZIä †_¶ã éú ¬†¹ã lZï ݶÔã Vø¡|"Ÿÿ …¢ …¢Iä †_¶ã é¢ lTú ¬†¹ã lZª †_¶ã ݶ¢ ]‚  þ¶ê ¬†{rĶ ¬†¶ã ݶ¢ ]‚­ ˶° $˜{rĶ ¬† µœã Ö¶Iä ˆpª Ķ¶ã µoIä ˆpIä "Ÿ¶ã ]‚* ¬†Iä "Ÿ¶ã ]‚­ Æ* ¬†Iä "Ÿ¶ã ]‚­ 'D* ¬†Iä "Ÿ¶ã ]‚­ 4V* ¬†Iä †_ª ݶ¶ã ]‚­ þ¶ê ¬†k±Ķª †_3 ¬†; ‚tª $˜ú ¬†ª †_3 ¬†; ‚tª $˜P ¬†ª ;x¢ ]‚° ‡­k±Ķd ¬†h ¬†#ã ¬†ê ¬†Hê$˜n ±n ± ÃyIä "ŸLä "}Iä †_ª †_¢ é5!‡~È$˜ê ¬†#ã ¬†òã lZž]J#¢P¬†zPÚzPïzPýzPözPázPDþzPTþ#u‰_3w* i3†* i3—* iV€T* ‰_V€[* ‰_V€o* ‰_#u‰_3F+ ìk3d+ ìkV€Ú* ‰_V€+ ‰_#u‰_3Ô, Ù²3ð, Ù²3 - Ù²V€, ‰_V€0, ‰_V€‚, ‰_3«. V¬3Ì. V¬V€î ‰_V€K. ‰_V€. ‰_#ZO¬†zP§zPIzPY3Ì/ ”¬V€º!‰_V€ž/ ‰_#ZO¬†zPJ§zPÎ3ž0 Ò¬V€J"‰_V€j0 ‰_#ZO¬†zP€§zPO31 Ú«V€æ"‰_V€K1 ‰_#ZO¬†zP¨¦zPÐ3f2 ¬V€„#‰_V€.2 ‰_#ZO¬†zPÞ¦zPY#u‰_34 ½§384 ½§3\4 ½§3ƒ4 ½§V€($‰_V€3 ‰_V€U3 ‰_V€3 ‰_V€Ï3 ‰_#ZO¬†zPr¦#ZO†_Ex‰_S€ 6 ™sS€6 ™s#u‰_3|6 Š3™6 Š3¯6 ŠV€6 ‰_V€H6 ‰_V€f6 ‰_#œP"Ÿ#¢P>J#u‰_V€®$‰_V€Ä$‰_V€Þ$‰_V€ô$‰_V€ %‰_V€"%‰_V€8%‰_V€Q%‰_V€i%‰_V€‚%‰_V€“%‰_#œP>J#¢P¬†#œP>J#¢P¬†#œP>J#¢P¬†#œP>J#¢P¬†#œP>J#¢P¬†#œP>J#¢P¬†#œP>J#¢Pþ¶#¨P¬†#œP>J#¢Pþ¶#¨P¬†#œPK#¢PK#¨P¬†#œP>J#¢PÇÁ#¨P¬†#œP>J#¢PÇÁ#¨P¬†zPìKzPåKzPóKzPÐKzP×KzPÞKzP¶KzPÄKzPKzPúKzP7J#u‰_V€O'‰_V€r‰_V€Y'‰_V€f'‰_V€l'‰_V€r'‰_V€ ‰_V€ÿ‰_V€v'‰_V€Œ'‰_V€›'‰_V€©'‰_V€¶'‰_V€Å'‰_V€Ø'‰_#ZOˆš#œPþ¶#¢Pµœ#¨PÇÁ#ÁPƒû#ÇPµœ#ÍP†_#w”¬†#œPþ¶#¢Pˆš#¨Pµœ#ÁPÇÁ#ÇPƒû#ÍPµœ#w”¬†#œPöU#¢P¬†#œP‰_#¢Pþ¶#¨P¬†#œPþ¶#¢Pþ¶#¨P¬†#œP>J#¢P¬†#ZO¬†#œPþ¶#¢P+Q#¨P¬†#œPþ¶#¢P¬†#œPþ¶#¢Pþ¶#¨P¬†#œPþ¶#¢P‰_#¨P¬†#œP4V#¢P¬†#œP$˜#¢P¬†#œPþ¶#¢Pþ¶#¨P¬†zPè¥zPíÃzPèUzPïUzPVzPVzPÚUzPXzPšQzP&VzPBVzPáUzP-VzPÃ\zPAÁ#u‰_V€E)‰_V€Nr‰_V€o‰_V€K)‰_V€f'‰_V€Q)‰_V€])‰_V€‹‰_V€d)‰_V€²s‰_V€¸s‰_V€l)‰_V€t)‰_V€‰)‰_V€r‰_V€’)‰_V€2r‰_V€ž)‰_V€¡)‰_V€r‰_V€¨)‰_V€°)‰_V€¹)‰_V€Ås‰_V€Á)‰_V€r‰_V€Æ)‰_V€^‰_V€O'‰_V€Ñ)‰_V€Þ)‰_V€å)‰_V€ì)‰_V€ú)‰_V€*‰_V€ *‰_V€;*‰_V€D*‰_V€K*‰_V€T*‰_V€c*‰_V€t*‰_V€y*‰_V€wt‰_V€ƒ*‰_V€Š*‰_V€—*‰_V€¥*‰_V€·*‰_V€Ä*‰_V€Ë*‰_V€á*‰_V€ÿ*‰_V€+‰_V€9+‰_V€M+‰_V€\+‰_#œP$˜#¢P¬†#¨Pµœ#ÁP¬†#œP$˜#¢P†_#¨P$˜#ÁP†_#ÇP¬†#œP4V#¢P¬†#œP$˜#¢Pþ¶#¨P¬†#œP<³#¢Pƒû#¨P¬†#œP†_#¢P<³#¨P¬†#œPÝò#¢Piõ#¨PƳ#ÁP¬†#œP†_#¢Pþ¶#¨P$˜#ÁP¬†#œPþ¶#¢PÆ÷#¨P±#ÁPB±#ÇP¬†#ÍP¬†#œP¬#¢P$˜#¨P$˜#ÁP¬†#œPÚ«#¢P]‚#¨P$˜#ÁP†_#ÇP$˜#ÍP$˜#w”¬†#œPÚ«#¢P¡#¨P†_#ÁP¶§#ÇP$˜#ÍP$˜#w”¬†#œP†_#¢P$˜#¨P¬†#œP†_#¢P…¢#¨P$˜#ÁP¬†#œP†_#¢P†_#¨P‰!#ÁP$˜#ÇP¬†#œP†_#¢P¬†#¨P²#ÁP½§#ÇP¬†#œP½§#¢P$˜#¨P²#ÁP†_#ÇP¬†#œP$˜#¢P¬†#œP$˜#¢P¬†#œP™s#¢P†_#¨P$˜#ÁP$˜#ÇP¬†#œP$˜#¢P¬†#¨PÇÁ#ÁPƒû#ÇPµœ#ÍP¬†#w”¬†#œP†_#¢P†_#¨P±#ÁP$˜#ÇP¬†#œP$˜#¢P¬†#¨P²#ÁP¬†#ÇP¬†#ÍPV¬#w””¬#œP$˜#¢P$˜#¨P¬†#ÁPV¬#ÇPÒ¬#œP$˜#¢P¬†#œPÙ²#¢P†_#¨P$˜#ÁP$˜#ÇP¬†#œP$˜#¢P$˜#¨Pƒ™#ÁP½§#ÇP†_#ÍP¬†#w”¬†#ZO]‚#œP†_#¢Pˆš#¨PD˜#ÁP¬†#œPˆš#¢P$˜#¨P¬†#œP$˜#¢P¬†#¨Pˆš#ÁP¬†#œP$˜#¢Pˆš#¨P$˜#ÁP¬†#œP$˜#¢P<³#¨P¬†#ÁP¬†#œP$˜#¢P<³#¨P$˜#ÁP¬†#ÇP¬†#ÍP¬†#œPˆš#¢P$˜#¨P$˜#ÁP¬†#œP$˜#¢Pˆš#¨P$˜#ÁP$˜#ÇP¬†#œP$˜#¢Pþ¶#¨P¬†#œP$˜#¢Pþ¶#¨P¬†#œP$˜#¢Pþ¶#¨P¬†#œP$˜#¢P¬†#œP$˜#¢P¬†#ZO¬†#œP†_#¢P$˜#¨P¬†#ÁP¬†#œPK#¢PK#¨P$˜#ÁP¬†#œP$˜#¢P¬†#¨P$˜#ÁP¬†#ZO¬†#œP § #¢P$˜#¨P¬†#œP § #¢P$˜#¨P¬†#œP½§#¢P†_#¨P†_#ÁP¶§#ÇP$˜#ÍP$˜#w”¬†#œP$˜#¢P¬†#œPÔ&#¢PÇÁ#¨P<³#ÁPÇÁ#ÇP¬†#œPáw#¢P$˜#¨P$˜#ÁP¬†#œP$˜#¢P9˜#¨P‰_#ÁP¬†#œP$˜#¢P9˜#¨P‰_#ÁP$˜#ÇP¬†#œPb#¢P¬†#œP$˜#¢P¬†#œP$˜#¢P¬†zP˜zPØüzP“½zP½ÇzP¾zPßüzP¿³zPlÁzPù³zP´zP´zP´zPæüzP ÚzP#´zP´zP*´zPíüzPôüzPîšzPýºzP1´zP8´zP?´zPûüzPF´zPM´zPõšzP2˜zPšzPT˜zPÒšzPT´zP[´zPÙšzPàšzPýzP ýzPýzPýzPýzP'=zP%ýzP,ýzP´zPR=zP3ýzP:ýzPb´zPAýzPxzPÚwzP5xzP¸³zPŒ½zP+˜zPçšV€òN‰_V€K)‰_V€ùn‰_#œP]‚#¢PD˜#¨P†_#ÁP†_#ÇP†_#ÍP¬†#œPÒc#¢Pþ¶#¨P¬†#œPÒc#¢P"Ÿ#¨P¬†zP˜czPËczPÙcV€²0‰_V€¼0‰_#ZO]‚#ZO]‚zP!czPŒ@V€1‰_V€.1‰_#œP>J#¢Pþ¶#¨P¬†#œP>J#¢P¬†zPP zPI V€˜1‰_V€K)‰_#œP«e#¢P¬†#œP‰!#¢Pþ¶#¨P¬†zP;ezP4e#u‰_V€o‰_V€Ä1‰_V€à‰_V€K)‰_V€ùn‰_V€É1‰_V€Ì1‰_V€O'‰_V€f'‰_V€E)‰_V€Q)‰_V€])‰_V€t*‰_V€Ñ1‰_V€iq‰_V€#ˆ‰_V€Ý1‰_V€ñ1‰_V€M+‰_#œP4V#¢P¬†#ZO¬†#œP¶§#¢P]‚#¨P†_#ÁPݶ#ÇP¬†#œP¶§#¢Pþ¶#¨P¬†#œP¶§#¢P"Ÿ#¨P¬†#œP¶§#¢P¶§#¨P¬†#œP‡­#¢P¬†#œPˆš#¢PÐ#¨Pœi#ÁP‡­#ÇPݶ#ÍP¬†#œP‡­#¢P¬†#œP¶§#¢P¬†#œP†_#¢P‡­#¨P¬†#œPfm#¢P¬†#ZO¬†#œP]‚#¢P¬†#œPþ¶#¢P¬†#œP$˜#¢P¬†#œPbl#¢Pbl#¨P¬†#œP]‚#¢P]‚#¨PÐ#ÁPݶ#ÇP¬†#œP¶§#¢P¬†zP‡izPBzPŽizP•izP%%zPëlzPòlzP€­zP§izPHjzP®izP_mzPêKzPãàzPÈlzP LzPÌmzP‡zP.L#œPþ¶#¢P±#¨P¬†#œP¶§#¢Pƒ™#¨P$˜#ÁP¬†#ÇPìksH ˆš}H $˜†H ÐŽH †_¨H ¬†#œPħ#¢P(P#¨PÐ#œPݶ#¢P Š#¨P†_#ÁP†_#ÇP"Ÿ#ÍPĶ#w”ø†#}”¶§#ƒ”n!#Ç$˜#À¬†#¹½§#œPþ¶#¢P¬†#¨P"Ÿ¤I †_°I †_ÀI †_ÚI †_ãI Ö¶#u‰_3‹J Ö¶3¤J Ö¶3¸J Ö¶3ÇJ Ö¶3ÛJ Ö¶3ïJ Ö¶V€&J ‰_V€‰_V€3‰_V€7J ‰_V€QJ ‰_V€kJ ‰_#u‰_V€3‰_V€3‰_V€ë‰_V€#3‰_V€,3‰_#œP¬L#¢PÄÇ#¨P¬†#œPþ¶#¢P¬†#œPþ¶#¢P¬†#œP‰Ð#¢P¬†#œP;‰_#ZOŽ#œPŽ#¢P‰_#¨P¬†zPuú zP;#u‰_V€8;‰_V€ˆ;‰_V€‡W‰_V€’;‰_V€¡;‰_V€³;‰_V€»;‰_V€Í;‰_V€Ý;‰_V€õ;‰_V€<‰_V€<‰_#ZOŽ#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P¬†#œPŽ#¢P¬†#œPŽ#¢P¬†#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P‰_#¨P¬†#œPŽ#¢P¬†#ZOø zPÏzP-zPBzPszPzzPIzPPzPWzP^zPezPlzP4‡[þoÓ"¬†¸X чïó‡¸X ч£$ óì£$ óì£$ óìÎB±á¥Þ÷ì¥å÷ðXw®ñ¥~®ͤ‰_Фw®£$ óì’h툉®"ŸS€ôZ b3R[ ³†3^[ b3f[ ³†3r[ b3†[ b3—[ Ü3«[ ÿv3¾[ ÿv3Ï[ Ü3â[ ÿv3ô[ (P3 \ ø†3\ ÄÇ33\ ÄÇ3M\ Cˆ3e\ Cˆ ³‰_sbšo#œP‰_#¢P‰_#¨PÂcº^ …‘º^ …‘-·ð‘º^ :’·Š‰_cG’Óešo·r‰_º^ :’cG’Óešo#_ †_º^ :’cG’izb¡|9q3` “39` ž†Ùe™"²Èœï^ ”·r‰_ï^ ”3W` šo3Ô>6”3Þ>6”3é>6”3ô>6”3c` F” ³‰_S€3a ‰_S€:a ‰_S€Ba b#u‰_3Šf ï©3f ï©3²f ï©3Åf ï©V€&f ‰_V€>f ‰_V€Zf ‰_V€rf ‰_Mg 5#[g 0Ë eg Oªrg Yªg QÍ ‹g 5#’g hª¢g ‰_Àg ‰_aZ5#õÅ|«ýg CzõÅ|«ýg CzaZ5#3=h #¬‰Ùï~”šœÇc ‰_\a 7b †_Îc a.~”šœ\a 7b †_Îc a.Õ{‰_ÆüÇ~”šœud 0š~”šœ~”šœˆƒPU3Ëñ)™b È•¿Õ÷ÑrœÖ–.ybì¥/®ͤ‰_Фü|~”šœMb Õ"e Õͤ‰_Ф´-~”šœƒe ‰_@ÑÕl[Yœͤ‰_Ф´-~”šœr©8v©1Re y¬@ÑÕ\a 7l[Yœ~”šœ]e †_·e ¡¡˜h ¡¡á¥=–£h Õ©h b?¥m쥲ͤ‰_Фml[Yœ~”šœ@ÑÕße êœá¥š²l[Yœ±h †_­b ‰_ìmMb Õ½h bÌh bì¥ɲͤ‰_Ф´-Ûh Õ~”šœRe y¬Re y¬~”šœ~”šœ~”šœ~”šœr©8~”šœr©83èh µ3÷h µ ³‰_çVï‰Ùïl ¸·%l Õ~”¤) ;j ‰_Rl Ãô<¯E;j ‰_~”¤) sj «Dud 0šâLÕ~”¤) _l ‰__l ‰__l ‰_ k ¾_l ‰_Wk X_l ‰_‰k Õ~”¤) R£«D^£¿k XçVïçVïk X~”¤) R£«D^£Ì~”¤) l ¾Æ l ³†~”¤) l Ú l ³†œl Ç3m CÇ3Rm …¢3om ‡¶ ³‰_:o Ȩb{i‰_´Mb´Mb´Mbu b#œPb#¢P‰_#œP†_#¢P³†‡[b3éu 9q3øu ²Ì3v ¾Ì3v ¾Ì3àm ÇÌ3%v ÉÝ37v ÔÌ3n ÝÌ3?v ÉÝ3Sv æÌ3$n Ð-3[v b3jv b3xv b3‰v b3¢v b3»v b3Üv ßÉ ³‰_3é{ ¥†3| ‰_3| gÍ3/| †_3;| ³† ³‰_} `Î} gÎ!} nÎ.} gÎ;} nÎH} uÎë} =¬‰Ù †_–˜ åîØ bƘ bͤ‰_Фb!™ ð+™ 4ð6™ MðA™ fðM™ ðX™ 3áb™ ˜ðl™ ŽÔv™ ˜Ô¥jTÌ« g~”ÆàKÎÛ¥‰ †_¥YòÌ«²Ù~”ÆàKÎÛ~”ÆàKÎÛ^!~”ÆàKÎÛ~”ÆàKÎÛ^!þ™ .l~”ÆàKÎÛ°… Òàà êÜ´±³6µ ßÝKÎÛ~”ÆàKÎÛ°… Òàš Ãš øÕ~”ÆàKÎÛ°… Òàš øÕ°… Òà~”Æà8 Íà°… ÒàKÎÛ~”Æà8 Íà°… ÒàKÎÛ~”ÆàKÎÛ Òâ~”ÆàKÎÛ/š ¬ô~”ÆàKÎÛ Òâ~”ÆàKÎÛ3š ™â¡š Íâ~”ÆàKÎÛ Òâ’ 1Üñ€ ¡Ü~”ÆàKÎÛW” #äñ€ ¡Üñ€ ¡Ü~”ÆàKÎÛ Ò⦚ Íâ~”ÆàKÎÛ Òâ’ 1Ü~”ÆàKÎÛW” #ä’ 1Ü’ 1Ü~”ÆàKÎÛ Òâû‰ Ûû‰ Ûû‰ Û~”ÆàKÎÛ ÒâKÎÛ#Š (åKÎÛ#Š (å#Š (å#Š (å~”ÆàKÎÛ ÒâKÎÛÛš ›åKÎÛÛš ›åÛš ›å~”ÆàKÎÛ Òâ~”Æà~”Æà ƒ Ö ƒ Ö~”Æà8 Íà ƒ ÖQ– 8 ƒ Ö~”Æà ƒ ÖKÎÛ~”ÆàKÎÛQ– 8 ƒ Ö~”ÆàKÎÛ~”ÆàªÍ  ƒ Ö~”ÆàªÍ  ƒ Ö~”ÆàªÍ  ƒ Ö~”ÆàQ– 8~”Æà8 ÍàªÍ  ƒ ÖKÎÛ~”ÆàªÍ  ƒ ÖKÎÛ~”Æà ƒ ÖKÎÛ~”ÆàªÍ  ƒ ÖKÎÛ~”ÆàªÍ  ƒ Ö ƒ Ö~”Æà8 ÍàQ– 8Í– †_Í– †_8ª_ëþ– lëKÎÛ8ª_ëþ– lëKÎÛ› çé› çé› çé› çé› çé8ª_ëþ– lëKÎÛ8ª_ëþ– lëKÎÛKÎÛKÎÛ› ³†8ª_ëþ– lëKÎÛQ– 88 Íà~”Æà8 Íà~”ÆàKÎÛ~”Æà~”Æà8 ÍàKÎÛ8ª_ëþ– lë8 Íà~”ÆàKÎÛ ÒâF~ õì8 ÍàF~ õì~”ÆàKÎÛ Òâ ƒ ÖInb¥²•Ì«Tú3d› †ú3v› Žú3‰› šú3ž› ¦ú3²› ²ú3É› ÎÛ3Ô› _ ³‰_]œ ûjœ ûwœ û„œ û‘œ ûžœ û«œ û¸œ ûÅœ ûÒœ ûßœ ûìœ $ûùœ $û +û û 2ûù­«Õ¥}/Ì«¦/‰b̰ ´…×° ‰_± ý&± ‰_3± ‰_>± üü›± ‰_¥± ‰_«± ‰_›± ‰_б ‰_¥± ‰_«± ‰_Úu‰_ðu‰_î­jTù­ g¥qºÌ«F² ‰_² b$² üü,² f¨H Qÿ7² °ýÖ² Üžâ² ´…ì² ™ý÷² ¡ýH³ þûÛž …ý¡ž ‘ýÛž …ýÛž …ý¡ž ‘ýR³ Âc¼ž Áý[³ û–‹Íb’M±vl[¼"­Ÿ þo{r×Éd³ þoi³ þoì¥}5ͤ‰_Фlÿù­«Õ¥mq¥ÉÝÌ«’™Ô9©ýçŽÿì¥õ5ͤ‰_Фb=jTÀ gî­qºù­F¥=6Ì«62òp='§ÀP§î­ÿ§ù­°7¥î­òpù­'§¥„ù­g8¥T¥ÉÝÌ«’™;½fçŽÿì¥õ5ͤ‰_ФbV€(Y‰_V€8Y‰_V€@Y‰_#ZO´…#ZO´…#ZObzP 9zP'9zP.9iz‰_-‘‰_puç ¶´ ‰_puç ¶´ ‰_µ ç ,‰_µ ç `µ ‰_@ªby¢ xÊ z3Å ¬xÊ K¥ ‰_à¹ÕÖ§baj†_ùµ ‰_øtö´ ‰_âLÕK¥ ‰_Ö§b¶´ ‰_#œP‰_#¢Pb#¨PÕ#ÁPÃ#œP‰_#¢Pb#œP³†#¢Pbɶ 燉Ùï]4†_˜4†_Ó¶ ‘çë¶ É&ÿ¶ "'· N†!· ‰_/· ´…‰˜ †_;· ]"D· D"FªN†O· N†Z· $f· _ëq· "y· +"‡·  ’· " ¦· "µ· ê ÷ -η áØ· Ö"ß· Ö"æ· Ã"ï· Ã"7º (CHº ACZº cCmº …Cº §Cr©³†~”"µœ N†µœ N†~”"œÀñµœ N†~”"œÀñµœ N†~”"œÀñµœ N†~”"œÀñK¥ ‰_~”"K¥ ‰_~”"K¥ ‰_~”"K¥ ‰_~”"K¥ ‰_ÿ¥ ‰_r©³†~”"M‰_~”"9¦ Þ<¥«ÕÌ«ß ~”"œÀñµœ N†~”"m¨ °s¨ ‰_~”"³¨ 깨 ‰_~”"œÀñµœ N†#u‰_3¤» ÚF3º» ÚFV€J» ‰_V€h» ‰_V€;]‰_V€L]‰_#ZO‰_#ZO‰_zPGzP&G¢¼ N†¨¼ I¶¼ üÇż ¨(ß¼ Yä¼ Iœ¾ ¥†>2½G¾ †_]4†_˜4†_F1†_ ¿ ´…$¿ N†@¿ û–J¿ û–S¿ 'PØÁ ‰_íÁ ‰_ †_õ½ ‰_|ZMPj¿ Ì&j¿ Ì&j¿ Ì&$¿ ´… üÇ3! ÅYV€ ‰_V€ˆ‰_#ZOV`zPÈbzPŸ\~”"~”"âLÕÓÏ>@~”"~”" Á A1~”" Á A1œö û–Jö û–^ö û–nö û–}ö û–“ö û–¦ö û–·ö û–Éö û–Ûö û–ïö û–þö û– ÷ û–÷ û–+÷ û–A÷ û–R÷ û–b÷ û–q÷ û–÷ û–Ž÷ û–÷ û–¯÷ û–º÷ û–Í÷ û–ä÷ û–ñ÷ û–ø û–!ø û–2ø *¦Eø 7¦Zø P¦vø i¦Šø †¦¤ø ž¦½ø *¦Õø ¶¦êø ¦ ù Ò¦)ù â¦Gù ò¦[ù §qù §‚ù ¦§™ù §´ù @§Ìù P§åù ‚§þù –§ú ¶§4ú §Kú Ö§cycyá¥Ѐ œ ‰_쥩èͤ‰_Фå„NÏ ¦î­!¦ù­¼é¥ïéÌ«%cycy-‘‰_cy-‘‰_cyM‰_á¥rƒ=¦rƒì¥’4ͤ‰_ФfëcyK¥ ‰_cy¥ *wM‰_á¥rƒ=¦rƒì¥’4ͤ‰_ФfëcyK¥ ‰_cyK¥ ‰_cycÕ ‰_ lÂKÖ ÃŸ„cy¨¤ÐtcÕ ‰_cycy« ‰_cycÕ ‰_ lÂKÖ ÃŸ„cy-‘‰_cy¨¤Qtcycy-‘‰_cy-‘‰_cycÕ ‰_,× †_E× ‰_K× ‰_M‰_쥒4ͤ‰_ФmcycÕ ‰_,× †_E× ‰_K× ‰_cycÕ ‰_a× ‰_g× ‰_M‰_쥒4ͤ‰_Фü|cycÕ ‰_a× ‰_g× ‰_cycÕ ‰_cycÕ ‰_cycÕ ‰_cÕ ‰_cycÕ ‰_cycÕ ‰_cÕ ‰_cycy-‘‰_cy-‘‰_cy-‘QtcycycÕ ‰_cyK¥ ‰_cycÕ ‰_K¥ ‰_‰_cyâ±UrcycyK¥ ‰_cycÕ ‰_° ‰_¾ ‰_M‰_쥒4ͤ‰_Ф…‡cycÕ ‰_K¥ ‰_cyK¥ ‰_cycÕ ‰_Ê ‰_× ‰_M‰_쥒4ͤ‰_Ф¥~cycÕ ‰_K¥ ‰_cy-‘Ôrcycy-‘Ôrcy-‘Òscycy-‘Òscy-‘Öqcy¨¤SscyÖ§b½« ‰_óÛ üÇcyõj‰_€°û–óÛ üÇ€°û–HÜ üÇóÛ üÇHÜ üÇA±‰_šb‰_æ 3_ b ³‰_S€ ‰_S€ ‰_S€# ‰_S€5 ‰_S€G ‰_S€[ ‰_S€j ‰_S€| ‰_S€ ‰_S€Ÿ ‰_S€® ‰_S€¿ ‰_S€Ë ‰_S€Ú ‰_S€ë ™ŸS€ù ™ŸS€ ™ŸS€ ™ŸS€" ™ŸS€0 ™ŸöL‰_ o, чöL™Ÿ=,oÀ¡î­Çù­ ¥aÌ«Ÿî­jTù­ g¥qºÌ«Fù­òp¥'§=JÀpî­æù­¥-ù­òp¥'§=JÀ\î­Áù­d ¥¥jTÌ« gù­ÉÝ¥šÌ«àÐ3 ‰_3 ‰_3' ‰_38 3"3š‹:"3§‹F"3K óª3T ¬†3_ ¬†3p ¬† ³‰_Œ Cz” Àxž y' ²• GÉ) y'&µy+&µy+&µy+ ¬A,Ÿy+aZ†+sbÀxaZ²•ŸQÍ Ÿy+aZ†+þmÀxV€Ž‰_V€$މ_V€3މ_#ZOÀx#ZONv#ZOº0zP1zP?1zPa1™«=êÉ- .ª þo™«=Õ{v2™«=Õ{v2™«=sb*sb*aZ¶) sbCzaZZš aZä) aZä) ±+zaZä) aZ¶) ®+zaZZš ú ä~ J;3m …¢3y …¢3… Ó;3 †ú3› Û; ³‰_-‘‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_iz‰_ƘDƘD3¤S <3®S <3¹S <3ÄS <3ÐS <3ÙS <3æS <3ðS <3üS <3T <3T <3#T <3/T <3BT <3RT <3`T <3oT <3~T <3T <3›T <3§T <3°T <3¿T <3ÎT <3ÚT <3íT <3ûT <3U <3U <3U <3+U <35U <3?U <3KU <3`U <3nU <3}U <3•U <3¦U <3®U <3¾U <3ÒU <3ÜU <3ìU <3úU <3V <3#V ÅF36V Y3GV Y3XV Y3jV “3zV “3ŠV “3šV °3¬V °3½V °3ÍV °3ÝV °3îV °3W °3W °3%W °38W °3IW °3WW °3mW °3W °3W °3¡W °3µW °3ÂW °3×W °3ðW °3X °3$X °37X Í3HX Í3YX ê3iX ê3{X ê3ŒX 3œX 3®X 3ÀX 3ÑX $3ÞX $3îX A3Y A3Y A3(Y ^38Y ^3IY {3TY {3fY {3yY ˜3‹Y ˜3Y µ3«Y µ3¼Y µ3ÏY µ3ÞY v3ïY v3Z ÕF3Z éF3&Z éF3;Z úF30’G3OZ "G3v’6G3dZ JG3Ã’^G ³‰_“Z ,H Z ,H­Z ,HºZ ,HÇZ ,HÔZ ,HáZ ,HîZ ,HûZ ,H[ ,H[ ,H"[ ,H/[ ,H<[ ,HI[ ,HV[ ,Hc[ ,Hp[ ,H}[ ,HŠ[ ,H—[ ,H¤[ ,H±[ ,H¾[ ,HË[ ,HØ[ ,Hå[ ,Hò[ ,Hÿ[ ,H \ ,H\ ,H&\ ,H3\ ,H@\ ,HM\ ,HZ\ ,Hg\ ,Ht\ ,H\ ,HŽ\ ,H›\ ,H¨\ ,Hµ\ ,HÂ\ ,HÏ\ ,HÜ\ ,Hé\ ,Hö\ ,H] ,H] ,H] ,H*] ,H7] ,HD] ,HQ] ,H^] ,Hk] ,Hx] ,H…] ,H’] ,HŸ] ,H¬] ,H¹] ,HÆ] ,HÓ] ,Hà] ,Hí] ,Hú] ,H^ ,H^ ,H!^ ,H.^ ,H;^ ,HH^ ,HU^ ,Hb^ ,Ho^ ,H|^ ,H‰^ ,H–^ ,H£^ ,H°^ ,H½^ ,HÊ^ ,H×^ ,Hä^ ,Hñ^ ,Hþ^ ,H _ ,H_ ,H%_ ,H2_ ,H?_ ,HL_ ,HY_ ,Hf_ ,Hs_ ,H€_ ,H_ ,Hš_ ,H§_ ,H´_ ,HÁ_ ,HÎ_ ,HÛ_ ,Hè_ ,Hõ_ ,H` ,H` ,H` ,H)` ,H6` ,HC` ,HP` ,H]` ,Hj` ,Hw` ,H„` ,H‘` ,Hž` ,H«` ,H¸` ,HÅ` ,HÒ` ,Hß` ,Hì` ,Hù` ,Ha ,Ha ,H a ,H-a ,H:a ,HGa ,HTa ,Haa ,Hna ,H{a ,Hˆa 3H¿iOI¿iOIaZˆI3ßa ½K3ëa ÑK3üa 6u3b ;u3b _u ³‰_$b ÿK1b L>b LKb LXb Leb Lrb "Lb "LŒb L3æc þOV€f”‰_V€Òc ‰_#ZOXPzP4LzPÄR#ZOAMsbÀxŸfSaZwS#u‰_3Éó iI3{f iI3Šf iI3œf iI3ªf iI3»f iI3Íf iI3Ûf iI3êf iI3ùf iI3g iI3g iI3~÷ iI3$g iI3=÷ iI3Õô iI32g iI3?g iI3Ng iI3]g iI3.÷ iI3lg iI3Íõ iI3yg iI3†g iI3”g iI3¢g iI3°g iI3mø iI3¼g iI3Ìg iI3Üg iI3ìg iI3úg iI3 h iI3h iI34ö iI3cô iI3'h iI3‹÷ iI33ô iI36h iI3Ch iI3Uh iI3bh iI3÷ iIV€'è ‰_V€4d ‰_V€Dd ‰_V€Zd ‰_V€hd ‰_V€|d ‰_V€G‰_V€2‰_V€9‰_V€@‰_V€’d ‰_V€*މ_V€ì ‰_V€žd ‰_V€7ì ‰_V€Qé ‰_V€¬d ‰_V€¸d ‰_V€Èd ‰_V€Ød ‰_V€'ì ‰_V€ÙŒ‰_V€‹ê ‰_V€m‰_V€M‰_V€S‰_V€g‰_V€èd ‰_V€í ‰_V€ÞŒ‰_V€òd ‰_V€e ‰_V€e ‰_V€$e ‰_V€ŠŒ‰_V€8e ‰_V€ë ‰_V€Ïè ‰_V€Je ‰_V€›ì ‰_V€™è ‰_V€ ‰_V€1މ_V€Ze ‰_V€fe ‰_V€ýë ‰_V€õ”‰_V€•‰_V€•‰_V€•‰_V€$•‰_V€0•‰_V€@•‰_V€O•‰_V€Z•‰_V€d•‰_V€q•‰_V€|•‰_V€‰•‰_V€‘•‰_V€š•‰_V€¨•‰_V€°•‰_V€¼•‰_V€Î•‰_#ZOb#ZOb#ZOb#ZOb#ZO‰_#ZOšn#ZO‚W#ZOšn#ZO`n#ZO?n#ZOY#ZOÖm#ZOðZ#ZO1m#ZO.n#ZO=m#ZO¿c#ZO‰_#ZO™ŸzPˆNzPNzP–NzPNzP¤NzP«NzP²NzP¹NzPÀNzPÇNzPÎNzPÕNzPÜNzPãNzPêNzPñNzPøNzPÿNzPO#u‰_3é+ /_3Mr /_3br /_3zr /_3Žr /_3¥r /_3)7 /_3ê6 /_3ÿ6 /_37 /_3½r /_39 /_3è0 /_3Ðr /_3•0 /_3[- /_3är /_3÷r /_3 s /_3!s /_3€0 /_3é5 /_3¡. /_3•7 /_3=7 /_3Q7 /_37 /_36s /_372 /_3ü5 /_3Hs /_3^s /_3ts /_3ˆs /_3â( /_3Ÿs /_3,/ /_3¿, /_3µs /_3û0 /_3}, /_3|6 /_39 /_3Ês /_3Ýs /_3D0 /_3ðs /_3 t /_3%t /_3Bt /_3Wt /_3qt /_3t /_3¬t /_3Åt /_3Ýt /_3øt /_3u /_3,u /_3Bu /_3Yu /_3uu /_3‹u /_3¥u /_3Åu /_359 /_3P9 /_V€a ‰_V€Om ‰_V€km ‰_V€m ‰_V€§m ‰_V€Çm ‰_V€©$ ‰_V€U$ ‰_V€q$ ‰_V€$ ‰_V€ém ‰_V€k' ‰_V€] ‰_V€n ‰_V€á ‰_V€W ‰_V€n ‰_V€3n ‰_V€On ‰_V€kn ‰_V€Å ‰_V€û" ‰_V€- ‰_V€;% ‰_V€Ã$ ‰_V€Ý$ ‰_V€!% ‰_V€‡n ‰_V€ ‰_V€# ‰_V€n ‰_V€»n ‰_V€Ùn ‰_V€ón ‰_V€÷ ‰_V€o ‰_V€ï ‰_V€ ‰_V€1o ‰_V€u ‰_V€' ‰_V€¿# ‰_V€‡' ‰_V€Mo ‰_V€eo ‰_V€w ‰_V€}o ‰_V€¥o ‰_V€Ëo ‰_V€÷o ‰_V€p ‰_V€9p ‰_V€gp ‰_V€“p ‰_V€·p ‰_V€Ùp ‰_V€q ‰_V€%q ‰_V€Mq ‰_V€kq ‰_V€‹q ‰_V€µq ‰_V€Óq ‰_V€ùq ‰_V€+r ‰_V€©' ‰_V€Ñ' ‰_#u‰_3­€ —_3Ì€ —_3é€ —_3 —_3 —_35 —_3P —_3h —_3“ —_3© —_3 —_3Û —_3õ —_3 ‚ —_3#‚ —_39‚ —_3S‚ —_3o‚ —_3Œ‚ —_3¥‚ —_3½‚ —_3Ö‚ —_3=¶ —_3ï‚ —_3ƒ —_3ƒ —_30ƒ —_3Fƒ —_3\ƒ —_3tƒ —_3–ƒ —_3´ƒ —_V€| ‰_V€C| ‰_V€o| ‰_V€| ‰_V€³| ‰_V€Ý| ‰_V€} ‰_V€'} ‰_V€o} ‰_V€} ‰_V€±} ‰_V€Õ} ‰_V€û} ‰_V€~ ‰_V€;~ ‰_V€Y~ ‰_V€~ ‰_V€©~ ‰_V€Õ~ ‰_V€ù~ ‰_V€ ‰_V€? ‰_V€ Š ‰_V€c ‰_V€… ‰_V€£ ‰_V€» ‰_V€Ù ‰_V€÷ ‰_V€€ ‰_V€O€ ‰_V€}€ ‰_Ái«DIä …dª ¥†ÁibA±³†šb燶ã h¾ sböã ÷_3e‰ ;u3w‰ ;u3‰ ;u3Ɖ ;u3ñ‰ ;u3Š ;u33Š ;u3UŠ ;u3~Š ;u ³‰_#u‰_3” ü+3” ü+V€ð“ ‰_V€ú“ ‰_·” J3¿” J3Д ‰_Þ” ‰_ó” ‰_• J3• J3L™Ÿ— ‰_— ‰_— ‰_+— ‰_<— ‰_Q— ‰_f— J3z— J3• ‰_L™Ÿ”j‰_W™ J3e™ J3k™ ü…x™ ü…— ‰_5š ‰_âLJ3• ‰_Д ‰_Óš J3àš J3íš J3› J3L‰_û{‰_Sœ ‰_Êb‰_µ°‰_`œ ‰_ל ‰_✠‰_è°‰_ñ°‰_ïœ ‰_ú°J3±J3ýœ ‰_ ‰_Þ äjå ÷oï ‰_õ ´…ü ‰_ž ´…¥ÉÝÌ«š+ž bXŒ ‹(jŒ bgŸ ‰_xŸ ‰_‡Ÿ J3•Ÿ J3Ó‰‰_£Ÿ ‰_¯Ÿ ‰_ÁŸ ‰_¹¢ ikߢ ÅkA£ ‰_U£ ‰_f£ ‰_w£ ‰_€£ ´…ê£ Hs¤ ws6¤ §s[¤ Ös¤ t¥ ‰_¥ ‰s0¥ ‰_A¥ ‰_T¥ ‰_h¥ ‰_3q¬ VІ¬ „n ³‰_€³ †_Ksn%öLê);¯&ŽC¯_~;¯&ŽC¯_~aZ&ŽaZ&ŽaZtaZt#d‘'d£#d‘'d£aZ_~aZ_~aZ_~aZ_~çV _~çVïaZ_~çVïaZ_~aZe‘çVïaZ_~çVïaZ_~aZ˜‘ ® _~¡³ _~çV _~çV _~çVïaZ_~çVï›® ’ ® -’aZ_~aZ_~aZ_~çVïaZ_~aZ_~aZ_~çVïaZ_~çVïaZ_~çVïaZ_~¡³ _~¡³ _~çV _~çVïr©8›® ½’ ® ñ’ð þ‡çVïaZ_~çVïr©8R£”‡^£ˇj£þ‡çVïaZ_~çVïaZ_~R£&Ž^£_~j£Ì&›® ý“ ® 9”ð y”q² µï¨³ 8³³ 1›® ý“ ® 9”ð y”q² µï¨³ 8³³ 1›® ý“ ® 9”ð y”çVïR£’^£-’çVï›® ý“ ® 9”ð y”²ò‹ŽaZn¾aZ™¿Ä_~¿Ä_~R£—™^£´™Œ¯ 9”q² µï¨³ 8³³ 1Œ¯ 9”aZt¿Ä_~aZ‘´ †_ ³‰_J  J  M´-3ªµ E£3¼µ Q£3˵ i£3Ûµ ‡£3ëµ ¤£3ûµ Á£3¶ ã£3!¶ ¤36¶ 6¤3G¶ S¤3W¶ t¤3f¶ •¤3x¶ t¤ ³‰_ìm­¸ bÿ¸ b¹ rœ¹ „(#u‰_3º È•3"º È•35º È•3Vº È•V€v¹ ‰_V€Œ¹ ‰_V€¤¹ ‰_V€Ø¹ ‰_#œPÍ #¢P¦#¨P†_#ÁPÈ•#œP0#¢PÃV€_¯‰_V€n¯‰_V€}¯‰_#œPFc#¢PX#œPRf#¢PX#ZOÕzP?czPͶzPMcV€õ¯‰_V€°‰_V€ °‰_#œPÕ#¢P¯E#œPÕ#¢P¯E#ZOÕzP¡EzP¨EzP¼¦C½ bK½ †_`½ Õ#œPÍ #¢PX#¨PX#œPX#¢PÃ#¨PÕ#u‰_V€–°‰_V€ °‰_V€ª°‰_V€¶°‰_V€Â°‰_V€Ì°‰_V€Ø°‰_V€å°‰_V€ð°‰_#œP†_#¢P7#¨P‰_#ÁP‰_#œP†_#¢P7#¨P‰_#œP†_#¢P7#¨P‰_#ÁP‰_#ÇP‰_#œP†_#¢P7#¨P‰_#œP7#¢P‰_#¨P‰_#œP†_#¢P7#¨P¨(#ÁP‰_#œP†_#¢P7#œP7#¢P‰_#œP0@#¢P¯EzPˆ˜zPzzPµ˜zP®˜zP˜zP¼˜zP˜zPz˜zPû{i‰_•· Ì&Û¿ Xë‘Xé¿ ¬¶ò¿ ñ)©À PU¸À PUÊÀ È•ÙÀ †_êÀ *êÁ ¦Á †_(Á ñ)V€d²‰_V€é3‰_#ZOò¨#ZOy¬zPë¨zPä¨3Œ¶ ¸3öÁ «¸3 »¸3 Ǹ3ɶ ׸3. ¹3F ¹3^ ¹ ³‰_*É »7É »DÉ »QÉ »^É »kÉ »xÉ »…É "»aZ\ésb¶þãæ 6ñ|ñ \éñ Üþ&µªÿ¿i·ÿ&µ&cÀxaZ5#V€Ú²‰_V€ä²‰_#ZO´…#ZO´…zP½† zP¶† Àò bÎò õ0Üò ÷‡ óò †_ ó ‚çó ¥†.p?Ëó ‰_@ªb™ô †_¦ô õ03õ ç‡V€ –‰_V€´=‰_V€¥}‰_#ZOâ#ZO¹æzP¤zPâzPft#ZOh¾ äõ >@öõ ‰_#u‰_3cö {Œ 3sö {Œ 3ö {Œ 3‘ö {Œ 3¢ö {Œ 3³ö {Œ V€MR‰_V€ ö ‰_V€ö ‰_V€+ö ‰_V€?ö ‰_V€Sö ‰_#u‰_3„÷ н3•÷ н3®÷ нV€P÷ ‰_V€Y÷ ‰_V€}÷ ‰_#œPн#¢P{Œ ;ø ÉLø É[ø ‰_#u‰_3Œø Â3ø ÂV€fø ‰_V€zø ‰_<ù ç‡Gù ³†Vù b`ù ‰_jù Õ‡ú Í •ú Ã#u‰_3!û ÕV€¼ ‰_V€l'‰_V€[‰_V€´‰_V€$´‰_V€(´‰_V€.´‰_V€Ï[‰_V€>´‰_#œP>@#¢PÕ#ZO£%#ZO£%#ZOÕ#ZOÕ#ZOøÕ#ZOa.#œP†_#¢PÍ #¨PÕzP7@zP¸‹ zP¿‹ zP^< zPW< zP¿ zPüÀzP ¿ #ZOþoü Éü Ã!` Õ±ü Í ½ü ÉËü ‰_Ýü bçü Ãñü Õ°ý Í ‰bÓ‰Õ þ !þ Õ1þ õþ ´*¿þ Õ#u‰_3” W3ÿ W3)ÿ WV€ð“ ‰_V€ÿ ‰_V€ÿ ‰_²ÿ õ0Âÿ õ0Ðÿ õ0ßÿ b€ ×É ‰_œ ‰_ª ‰_¹ ‰_î­jTù­ g¥qºÌ«F#u‰_3”A“V€‡W‰_V€ o‰_V€to‰_V€%o‰_V€0o‰_V€=o‰_V€Jo‰_V€+o‰_V€6o‰_V€Co‰_V€Po‰_V€fo‰_V€mo‰_V€t*‰_V€q‰_V€œµ‰_V€l'‰_#ZO¥†#ZO†_#ZObl#ZO@3#ZOJ3#ZO‰_#ZO™Ÿ#ZOü…#ZOa.#ZOw3#ZO3#ZO™3#ZO¿c#ZO¸#ZO}#œPÕ#¢PÙ”zPS/ zP³zP{zPH“zPO“zPV“zP]“zPd“zPk“zPr“zPy“zP‚zP‰zPE{zPL{zPS{N ³6ŒG ´…V€èµ‰_V€øµ‰_#ZO³#ZO*êzP†zP§ #u‰_3‡  3”  3¢  3°  3¾  3Ì  3Ú  3è  3ö  3  3  3   3-  3:  V€Ç ‰_V€Ó ‰_V€á ‰_V€ï ‰_V€ý ‰_V€  ‰_V€ ‰_V€' ‰_V€5 ‰_V€C ‰_V€Q ‰_V€_ ‰_V€k ‰_V€w ‰_V€´‰_V€R¶‰_V€_[‰_#ZOÕ#ZO³6#ZObzPkÜzP¶TzP½T#u‰_V€‘¶‰_V€”¶‰_V€—¶‰_V€š¶‰_#ZO‰_#ZO™Ÿ#ZO™3#ZO¿czPO>zPò¼zPù¼zP½#u‰_32 0@3C 0@V€r ‰_V€ ‰_#u‰_3ì VÜ3ü VÜ3 VÜ3" VÜV€’ ‰_V€¤ ‰_V€¼ ‰_V€Ô ‰_#u‰_3É Ä<3Ú Ä<V€> ‰_V€¯ ‰_#u‰_3] AÜ3u AÜV€ ‰_V€? ‰_#u‰_3Ç ­H3Ö ­H3å ­H3÷ ­H3 ­H3 ­H3' ­H39 ­H3H ­H3Z ­H3l ­H3 ­HV€Û ‰_V€ë ‰_V€û ‰_V€ ‰_V€! ‰_V€7 ‰_V€G ‰_V€] ‰_V€m ‰_V€ƒ ‰_V€™ ‰_V€± ‰_#u‰_3’ ´-3¡ ´-3´ ´-3Ê ´-3Ù ´-3è ´-3ú ´-3  ´-3 ´-3* ´-39 ´-3K ´-3Z ´-3m ´-3ƒ ´-3’ ´-3¤ ´-3³ ´-3 ´-3Ô ´-3ã ´-3ö ´-3  ´-3 ´-3) ´-38 ´-3G ´-3Y ´-3h ´-3w ´-3‹ ´-3š ´-3¨ ´-3¸ ´-3Í ´-3á ´-3ó ´-3 ´-3 ´-3( ´-3: ´-V€Ý ‰_V€í ‰_V€ ‰_V€# ‰_V€3 ‰_V€C ‰_V€Y ‰_V€i ‰_V€y ‰_V€ ‰_V€Ÿ ‰_V€.·‰_V€6·‰_V€B·‰_V€Þ ‰_V€î ‰_V€ ‰_V€$ ‰_V€4 ‰_V€J ‰_V€Z ‰_V€j ‰_V€€ ‰_V€ ‰_V€¨ ‰_V€Æ ‰_V€Ö ‰_V€ä ‰_V€ô ‰_V€ ‰_V€ ‰_V€* ‰_V€: ‰_V€T ‰_V€Q·‰_V€X·‰_V€`·‰_V€i·‰_V€q·‰_V€y·‰_V€‚·‰_V€Š·‰_V€’·‰_V€š·‰_V€Ÿ·‰_V€¥·‰_V€­·‰_V€ã ‰_V€¶·‰_V€½·‰_V€È·‰_V€Ù·‰_V€á·‰_V€é·‰_V€9 ‰_V€K ‰_V€g ‰_V€ò·‰_V€‹ ‰_V€ú·‰_V€¸‰_V€ ¸‰_V€¸‰_V€¸‰_V€'¸‰_V€/¸‰_V€7¸‰_V€@¸‰_V€L¸‰_V€V¸‰_V€b¸‰_V€j¸‰_V€t¸‰_V€|¸‰_V€„¸‰_V€Š¸‰_V€’¸‰_V€ž¸‰_V€§¸‰_V€°¸‰_V€¹¸‰_V€Ã¸‰_V€Ð¸‰_V€Ý¸‰_V€¿ ‰_V€æ¸‰_V€Þ ‰_V€ñ¸‰_V€ ‰_V€ý¸‰_V€' ‰_V€= ‰_V€¹‰_V€¹‰_V€¹‰_V€$¹‰_V€3¹‰_#ZO #ZO #ZO #œP #¢Pã##ZOa.#ZOa.#œPVÜ#¢PÄ<#¨P #ZOa.#ZOa.#ZOa.#œPVÜ#¢PÄ<#¨P #ZOa.#ZO‰_#ZO³6#œP­H#¢P‰_#¨P‰_#ZO‰Š#œP0@#¢P³6#¨PßÝ#œP0@#¢P³6#¨PßÝ#œP0@#¢PÕ#¨P³6#ÁPßÝ#œP0@#¢PøÕ#¨PßÝ#ZO³6#œP³6#¢PßÝ#ZO‰_#œPÄ<#¢Pb#œPVÜ#¢PÄ<#¨Pb#ZOb#ZOb#œPÄ<#¢Pb#œPVÜ#¢PÄ<#¨Pb#ZOb#ZOÕ#ZOÕ#ZOÞ#ZO³6#ZOÕ#ZOÕ#œPVÜ#¢PÄ<#¨PÕ#œPVÜ#¢PÄ<#¨PÕ#ZOÕ#ZOÕ#ZOÕ#ZOÕ#ZO #ZO #œPAÜ#¢P†_#¨P>@#ÁPÕ#œP>@#¢PÕ#œP>@#¢PÕ#œP>@#¢PÕ#ZOÕ#ZOÕ#ZO˜#œPVÜ#¢PÄ<#œPVÜ#¢PÄ<#ZOÕ#œP‰_#¢P‰_#ZOzzPòŒzP >zP>zPÃÝzPeÅzPsÅzPÊÝzP]>zPù(zPlÅzPÑÝzPV>zP)zP)zPåJzPØÝzP zP zPîÝzPõÝzPo~zPüÝzP)zPŽÜzPyÜzP,—zP%—zP‡ÜzP€ÜzP)zPÜzP%ÜzPdÜzPv~zP„~zP}~zPOÜzP]ÜzPÜzP‹~zPÜzPrÜzP!>zP>zP:ÜzP3ÜzPHÜzP,ÜzP)zP#)zP ˜zPÞzP ÞzP•ÜzP zPýy#ZOþod »¸x H %H¬ »¸È 5H² IÁ -IÖ 5#ê :I"̧I"̧I"̧I"̧Ie ‰_q b× ‰_Þ Ô&tz#u‰_V€–¿‰_V€¿¿‰_V€Ê¿‰_V€Ø¿‰_#ZO4#œP± ß)H# ê)N# ñ)#u‰_3þ# PU3$ PU3*$ PU3D$ PU3]$ PU3—* PU3w* PUV€¥}‰_V€¬# ‰_V€Ô# ‰_V€æ# ‰_V€÷# ‰_V€o* ‰_V€T* ‰_#u‰_3”ƇV€‡W‰_V€ o‰_V€to‰_V€dÁ‰_V€0o‰_V€=o‰_V€Jo‰_V€iÁ‰_V€6o‰_V€Co‰_V€Po‰_V€fo‰_V€mo‰_V€t*‰_#ZOb#ZO†_#ZOa.#ZO@3#ZOJ3#ZO‰_#ZO™Ÿ#ZOü…#ZOa.#ZOw3#ZO3#ZO™3#ZO¿czP*zP1zP8zP?zPFzPMzPTzP[zPbzPizPpzPwzP~#u‰_3ŒÒ 3C& Ò 3T& Ò 3b& Ò 3q& Ò 3€& Ò 3‘& Ò 3Ÿ& Ò 3°& Ò 3!û Ò 3¿& Ò 3Ì& Ò 3Ù& Ò 3ç& Ò 3õ& Ò 3' Ò 3' Ò 3aè Ò 3!' Ò 30' Ò 3?' Ò 3N' Ò 3Z' Ò 3g' Ò 3v' Ò 3„' Ò 3‘' Ò 3¢' Ò 3g‚Ò 32uÒ 3´' Ò 3Å' Ò V€pU‰_V€¥Á‰_V€¬Á‰_V€»Á‰_V€0% ‰_V€D% ‰_V€R% ‰_V€b% ‰_V€r% ‰_V€†% ‰_V€”% ‰_V€¨% ‰_V€¼ ‰_V€ o‰_V€dÁ‰_V€0o‰_V€=o‰_V€Jo‰_V€fo‰_V€mo‰_V€+o‰_V€6o‰_V€Co‰_V€Po‰_V€l'‰_V€¯% ‰_V€¹% ‰_V€ ‰_V€Å% ‰_V€Ó% ‰_V€ß% ‰_V€ó% ‰_V€3‰_V€–‡‰_V€ÆÁ‰_V€& ‰_V€)& ‰_#œP´…#¢Pb#¨Pb#ÁP´…#ZO‰_#ZO‰_#œP×Q#¢Põ€#œP#¢P¥†zP¯ zP¶ zP½ zPË zPÄ #u‰_3Œ3”3C+ 3C& 3S+ 3c+ 3„' 3T& 3b& 3‘' 3¢' 3p+ 32u3‚+ 3’+ 3¡+ 3µ+ 3Ä+ 3‰è 3Õ+ 3ä+ 3ô+ 3 , 3 , 33, 3>, 3!û 3¿& 3Ì& 3Ù& 3ç& 3õ& 3' 3' 3L, 3!' 30' 3?' 3Z, 3N' 3Z' V€pU‰_V€t*‰_V€=* ‰_V€0% ‰_V€yo‰_V€O* ‰_V€Ó% ‰_V€D% ‰_V€R% ‰_V€ß% ‰_V€ó% ‰_V€ÆÁ‰_V€–‡‰_V€[* ‰_V€m* ‰_V€}* ‰_V€])‰_V€—* ‰_V€m ‰_V€€e‰_V€´* ‰_V€Æ* ‰_V€æ* ‰_V€+ ‰_V€+ ‰_V€"+ ‰_V€¼ ‰_V€ o‰_V€dÁ‰_V€0o‰_V€=o‰_V€Jo‰_V€fo‰_V€mo‰_V€iÁ‰_V€6o‰_V€Co‰_V€Po‰_V€0+ ‰_V€l'‰_V€±[‰_V€(´‰_V€¯% ‰_V€¹% ‰_#ZO#ZO#ZOzP^ zPe zPl #u‰_3Ø/ ¦î3è/ ¦î3÷/ ¦î30 ¦î30 ¦î3&0 ¦î380 ¦î3M0 ¦î3\0 ¦î3k0 ¦î3}0 ¦î3‘0 ¦î3¤0 ¦î3¹0 ¦î3Ò0 ¦î3ì0 ¦î31 ¦î3%1 ¦îV€ . ‰_V€2. ‰_V€¡)‰_V€B. ‰_V€N. ‰_V€f. ‰_V€|. ‰_V€˜. ‰_V€¨. ‰_V€¸. ‰_V€Î. ‰_V€è. ‰_V€/ ‰_V€/ ‰_V€@/ ‰_V€f/ ‰_V€Š/ ‰_V€¼/ ‰_#œP¦î#¢P´…V€‰Â‰_V€—‰_#ZO£ï#ZO–_zPm^zPt^#u‰_3L4 Ñö3`4 Ñö3p4 ÑöV€ 4 ‰_V€&4 ‰_V€84 ‰_#u‰_3L4 Øö3`4 Øö3p4 ØöV€ 4 ‰_V€&4 ‰_V€84 ‰_#u‰_3 ŽÃö315 Ãö3?5 Ãö3O5 Ãö3`5 Ãö3q5 ÃöV€4‰_V€Ù4 ‰_V€ç4 ‰_V€ù4 ‰_V€ 5 ‰_V€!5 ‰_#u‰_3 ŽÊö3*6 Êö376 Êö3G6 ÊöV€4‰_V€6 ‰_V€ 6 ‰_V€6 ‰_Ò6 â‰bü ÃöÙ6 Êöç6 †_ñ6 †_ü6 Øö7 Ñö‰¥†Ó‰ÕÈ7 »‡Ñ7 ×QÚ7 †_à7 †_ç7 †_ó7 „(Ñ7 ×QÓ‰Õó7 „(#œP!#¢PÕÚI †_a8 †_l8 †_…8 †_#u‰_3®÷ U3ö8 U3¦“U39 UV€}÷ ‰_V€Ð8 ‰_V€®‰‰_V€Þ8 ‰_V€–É_#ZO)UzP"U#u‰_3€9 ‡~3‘9 ‡~V€ƒ²‰_V€ÀÉ_V€g9 ‰_V€p9 ‰_#ZO˜U#ZOvãzP³¼zPoã#ZOÏe#u‰_3: Ô‘3‘9 Ô‘3: Ô‘V€ƒ²‰_V€p9 ‰_V€: ‰_#u‰_3›: Þí3®: Þí3À: ÞíV€O: ‰_V€g: ‰_V€}: ‰_‰b ; í; Þí·; †_ó7 „(Ó; †_ö; †_‰bç= Uü ÉÙ‰wRï= i÷= PUÿ= I> Ô‘> †_#> †_.> †_<> ®ïK> †_X> †_f> †_s> †_€> †_> †_¢> †_²> †_Á> †_Ì> †_Ø> «Dó7 „(#ZObϯó‰_Ó‰¸‰beA †_€> †_vA !A !A O$›A +”ó7 „(#ZOrü‰beA †_€> †_BB O$MB O$ü нÓ‰ÕXB »‡^B Ãó7 „(#ZO»ü‰bÓ‰ÕÂB †_÷= PUŒG õ0ÌB »‡б Üž€> †_Ñ7 ×QÚB †_éB †_ôB †_ó7 „(#ZO'ñWC ßåbC ³6#ZOPm3G6 ]V€6 ‰_V€r‰_V€-ʼn_#ZO’#ZO’zPÛpzPÐæzPÉæÅC ÜžËC Åú #u‰_3D ]3D ]V€ÚC ‰_V€ôC ‰_#u‰_3*6 ‹3G6 ‹376 ‹V€6 ‰_V€6 ‰_V€ 6 ‰_3w*  3—*  V€T* ‰_V€o* ‰_V€¼Å‰_#ZOPUzPÕszPåszP¥Â #u‰_3Y‚73D 73g‚73ŸD 73¬D 7V€-‚‰_V€‰_V€3‰_V€k‰_V€|D ‰_V€Æ‰_#ZOݨzPÖ¨#ZOþo$E ¹ÐE 7‰bØ> «D÷=  …8 †_«Z †_ØE †_èE †_öE ]€> †_þE ‹F NF Ã!F ¸÷² g<> ®ïK> †_*F t2F ]?F ]NF mVF fó7 „(#œP°Í#¢PwÕ °Íá¥fëv©pN ì¥Hyͤ‰_Ф1‰b÷= PUA€9Q ó7 „(#ZOpzÆG 燉bÐG †_÷=  A€9Q ó7 „(#ZO­{#u‰_3w* ‘,3—* ‘,V€T* ‰_V€o* ‰_V€ –‰_V€blj_V€¥}‰_#ZOÚ#œPâ#¢P‰_#ZO¹æzPäzPõøzP›‰bEH ä÷= ‘,ó7 „(#ZOA#u‰_3óH û3I û3I û31I û3II ûV€gH ‰_V€p݉_V€‹H ‰_V€±H ‰_V€ÓH ‰_‰b‹J ‰_<> ®ï£J õ0®J ‚ç·J ¥†ó7 „(¿J ûÒJ †_ëJ †_øJ †_K kP K K ñL †ó7 „(‰bûL NM ÀœM †_)M ‰_9M †_@M †_JM â(TM ÜžfM †_oM †_M †_ŠM ‰_œM ‰_¯M ‰_ºM bËM UÖM ö3ÌO utztztzMû–êÔ pN Ql³†ÙVbÕ CzêÔ Àx&cü|{i(†aZ†ëS 燀-b 5†_ýS Í  T £%T Õ$T Í 1T Õ=T ÕPT ÕcT ÕuT Õ†T Í ‘T Õ›T Õ¨T Õ·T ÕÅT ÕÔT ÕÞT £%ôT ÕU ÕU Õ*U £%7U £%EU £%RU £%`U £%mU £%{U £%ˆU £%”U £%¢U £%°U £%¾U £%ÍU £%ÙU £%åU ÕïU ÕúU ÕV ÕV ÕV Õ'V Õ3V Õ?V ÕLV ÕYV ÕcV ÕmV ÕyV Õ†V Õ¡V Õ¸V ÕÑV ÕéV ÕóV ÕþV Õ W ÕW ÕW Õ+W Õ7W ÕCW ÕOW Õ[W ÕeW ÕoW Õ†W ÕœW Í ¾W £%ÏW ÕÞW *êõW .öX .öM‰_쥒4ͤ‰_Ф´-M‰_쥒4ͤ‰_Ф´-M‰_쥒4ͤ‰_Ф´-M‰_쥒4ͤ‰_Ф´-Ì ç‡ÙÜ ‰_šzÃÙÜ ‰_šzÃRß n%Ksn%Ï] ‰_Û] Ĉ{i)‰{i‘‰{iÿ‰¿Õ#u‰_V€z͉_V€‚͉_V€ˆÍ‰_V€”͉_#ZOÀœ#ZOÀœ#œPÀœ#¢PÀœ#œPÕ#¢PÀœzPázP ázPázPáš^ Àœ¤^ ùøÞ^ Àœè^ zP>zP»,zPÖ0zPA>sbšo3"’ šo3eë6”3në6”3xë6”3‚ë6”3-’ _35Ž _38’ _3:Ž _3A’ šo3K’ šo ³‰_ ³‰_Ì«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥jTÌ«­cÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÀÉÝî­šù­àÐ¥»Ì«àBù­ÉÝ¥šÌ«àÐ2ÉÝ=šÀàÐî­»ù­àB¥\DÌ«ÛDù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝ¥jTÌ« gÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐÌ«ÉÝù­ÉÝ¥’™Ì«Gù­ÉÝ¥’™Ì«Gî­ÉÝù­š¥™HÌ«ÎHî­ÉÝù­š¥™HÌ«ÎHÀÉÝî­’™ù­(J¥]JÌ«´Jî­ÉÝù­’™¥(JÌ«MLî­ÉÝù­’™¥(JÌ«MLî­jTù­­c¥”MÌ«×Mù­jT¥­cÌ«1Où­jT¥ gÌ«›Æù­jT¥­cÌ«1Oî­jTù­ g¥›ÆÌ«ýPî­ÉÝù­’™¥GÌ«WRÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥jTÌ« gÌ«jTÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«jTÌ«ÉÝ¥jTÌ« gÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝ¥jTÌ«­c¥jTÌ«­cÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«’™Ì«ÉÝÌ«ÉÝÌ«jTÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«jTÌ«ÉÝÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥jTÌ«­cÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«š¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«š¥ÉÝÌ«šî­ÉÝù­’™¥GÌ«WR¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«šî­ÉÝù­š¥àÐÌ«»Ì«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝù­ÉÝ¥šÌ«àÐ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«š¥jTÌ« gÌ«ÉÝî­ÉÝù­š¥àÐÌ«»¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝî­ÉÝù­š¥àÐÌ«»Ì«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝ¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐù­ÉÝ¥šÌ«àÐÌ«ÉÝ¥ÉÝÌ«š¥ÉÝÌ«š¥ÉÝÌ«šù­jT¥ gÌ«›ÆÌ«ÉÝù­jT¥ gÌ«›Æ¥ÉÝÌ«šÌ«ÉÝ¥ÉÝÌ«šÌ«ÉÝÌ«ÉÝÌ«ÉÝÌ«ÉÝù­jT¥ gÌ«qºÌ«ÉÝ¥ÉÝÌ«šÌ«jTÌ«ÉÝ¥ÉÝÌ«š¥jTÌ«­cÌ«ÉÝ¥ÉÝÌ«šù­ÉÝ¥šÌ«àÐÌ«É݈LN(à¹_M‰_’MÊ[—MÎ'NbŒMb–‰_’MÊ[sbþoì¥wVͤ‰_ФþoP …¯Œ_\ ±”_| )±˜_œ N±`À h±`ä ‡±`!­±`,!Ú±`P!ú±`t!"²`˜!L²` ¼!^²` à!‚²` "›²` ("¶²` L"ز`t"ó²š` " ³š`Ì"'³š`ø"?³`#P³ aL#x³Ta|#³Ta¬#¬³TaÜ#³š`$Þ³š`4$û³š``$´š`Œ$)´š`¸$=´š`ä$_´š`%q´]a8%š´š`d%Å´š`%Ý´š`¼%µTa ì%µ a &FµTa"L&nµTa"|&‹µ`" &¢µš`#Ì&¿µš`$ø&Ûµš`%$'ûµš`&P'¶ a'€'C¶ a)°'_¶š`+Ü'‚¶Ta, (¶Ta,<(¸¶Ta,l(Ö¶Ta,œ(ô¶Ta,Ì(·š`,ø(6·š`-$)\·š`.P)|·š`/|) ·š`0¨)³·š`1Ô)È·š`2*à·Ta30*¸aa3X*$¸š`5„*@¸`6¨*f¸š`7Ô*“¸š`8+¸¸ a90+Þ¸ a;`+¹Ta=+*¹Ta=À+I¹Ta=ð+j¹Ta= ,‹¹Ta=P,Ÿ¹Ta=€,¾¹Ta=°,ܹ]a=Ø,ó¹Ta=-$ºš`=4-Xº a>d-º]a@Œ-µº]a@´-çº]a@Ü-»Ta@ .<»Ta@<.`»Ta@l.{»b@”.ª»bC¼.Ñ»bFä.¼bI /.¼bL4/[¼bO\/ˆ¼bR„/¿¼bU¬/ì¼bXÔ/½b[ü/D½b^$0p½baL0£½ñbdˆ0ܽbi°0¾Óclô0I¾bs1v¾bvD1Ÿ¾byl1ɾb|”1ô¾b¼1¿b‚ä1G¿b… 2s¿bˆ42 ¿b‹\2Í¿š`Žˆ2ý¿š`´27Àš`à2oÀ a‘3¤Àš`“<3ßÀš`”h3Áš`•”3QÁš`–À3ˆÁš`—ì3ÁÁš`˜4ÿÁš`™D4<š`šp4tš`›œ4´Â aœÌ4æÂÞcžü4)ÃÞc¡,5lÚ`¤X5¢Ãš`¥„5çÚ`¦°5Äš`§Ü5PÄš`¨6}Äš`©46·Ä aªd6ëÄš`¬6 Å a­À6aÅ a¯ð6œÅ a± 7ÜÅ a³P7ÆÞcµ€7WÆÞc¸°7Æš`»Ü7ËÆš`¼8Çaa½08*Çaa¿X8WÇaaÁ€8‡Çaaè8¸ÇaaÅÐ8ÕÇaaÇø8üÇaaÉ 9ÈaaËH9;ÈaaÍp9[ÈaaϘ9xÈ aÑÈ9¨Èš`Óô9ÙÈTaÔ$:þÈTaÔT:!ÉTaÔ„:HÉTaÔ´:[ÉTaÔä:‡ÉTaÔ;¿É aÔD;ëÉ aÖt;Êš`Ø ;WÊš`ÙÌ;’Êš`Úø;ÄÊš`Û$<îÊš`ÜP<ËaaÝx<?Ëaaß <uËaaáÈ<­Ëaaãð<ØËaaå=Ìbç@==Ìbêh=lÌaaí=˜ÌTaïÀ=ÊÌTaïð=èÌ aï >ÿÌš`ñL>Íš`òx>4Íš`ó¤>IÍÞcôÔ>qÍTa÷?ŠÍš`÷0?«ÍTaø`?ÚÍš`øŒ?öÍš`ù¸? Î aúè?PÎ aü@…Î aþH@¼ÎÞcx@ØÎTa¨@ðÎTaØ@ Ï]aA)ÏTa0ALÏTa`AcÏTaAsÏTaÀA’ÏTaðA³ÏTa BÖÏTaPBùÏTa€BÐTa°B3ÐTaàBMÐTaChÐTa@C€ÐTapC–ÐTa C¹Ð]aÈCÝÐ]aðC÷Ð`DÑ]aÔT,Ü`?øTJÜ`@U^Ü`A@UÜ`BdU—Ü]aCŒU·Ü`C°UÜÜ`DÔUÝaaEüU'Ý`G VTÝ`HDVzÝ`IhV­ÝTaJ˜VÏÝTaJÈVòÝš`JôVÞš`K WÞTaLPW5ÞTaL€WOÞTaL°WeÞ aLàW}Þ aNX–Þš`P'ÞcdÃb'š`Ç'š`¼Ã©'š`èÃ×'š`Äÿ'TaDÄ&(TatÄL(š` Äc(š` ÌÄx(]a ôÄ—(` ÅÃ(]a @Åñ(Ta pÅ ) a  ÅB) a ÐÅt)TaÆ)Ta0Ƭ)Ta`ÆÄ) aÆâ)TaÀÆö)š`ìÆ *š`Ç+*š`DÇC*TatÇZ*`˜Ç{*`¼Ç*TaìǦ*š`ÈÀ*TaHÈÙ*TaxÈõ*Ta¨È+TaØÈ++TaÉH+Ta8Ée+TahÉ„+Ta˜É¡+TaÈÉÀ+TaøÉ×+Ta(Êð+TaXÊ,TaˆÊ,Ta¸Ê,,TaèÊE,TaË[,TaHËq,TaxË”,Ta¨Ë¥,TaØË·,š`ÌÌ,Ta4Ìá,]a\Ìù,]a„Ì-Ta´Ì,-]aÜÌF-Ta Í^-Ta<Íu-TalÍ-TaœÍª-š`ÈÍÒ-íiøÍþ-š`$Î+.TaTÎH. a„Îl. a´Î.Þc äΦ.Þc#ϼ.Þc&DÏÐ.Þc)tÏä. a,¤Ï/ a.ÔÏ(/Ta0Ð^/š`00Ðm/š`1\Ѓ/Ta2ŒÐŸ/Ta2¼Ð¼/Ta2ìÐÐ/Ta2Ñþ/Ta2LÑ00Ta2|ÑF0Ta2¬Ñ\0]a2ÔÑn0 a2ÒŠ0 a44Òª0Þc6dÒÎ0Þc9”Òæ0Þc<ÄÒ1Ta?ôÒ*1š`? ÓC1š`@LÓY1TaA|ÓŽ1š`A¨Ó¡1š`BÔÓÀ1TaCÔè1`C(Ôø1 aDXÔ(2TaFˆÔQ2TaF¸Ôk2TaFèÔ2]aFÕ®2]aF8ÕÀ2š`FdÕå2š`GÕ3TaHÀÕ*3TaHðÕU3TaH Öq3TaHPÖ—3TaH€ÖÀ3š`H¬ÖØ3TaIÜÖð3 aI ×4TaK<×A4TaKl×W4š`K˜×4TaLÈט4TaLø×¹4š`L$ØÞ4TaMTØÿ4 aM„Ø 5TaO´Ø85TaOäØX5š`OÙu5TaP@Ù5TaPpÙ´5š`PœÙÌ5TaQÌÙà5TaQüÙ÷5TaQ,Ú:6TaQ\ÚY6]aQ„Új6TaQ´Ú}6TaQäÚ–6š`QÛ¬6TaR@ÛÄ6š`RlÛæ6TaSœÛ 7TaSÌÛ7TaSüÛ:7š`S(ÜV7š`TTÜ€7š`U€Ü£7š`V¬Ü¾7 aWÜÜÖ7TaY Ýù7TaY<Ý8TaYlÝ.8TaYœÝ@8TaYÌÝR8š`YøÝl8TaZ(Þ}8š`ZTÞ‹8š`[€Þ§8 a\°ÞÊ8š`^ÜÞâ8š`_ßï8 a`8ß 9Þcbhß<9 ae˜ß_9 agÈ߀9š`iôß›9š`j à®9š`kLàÁ9 al|àÙ9 an¬àñ9 apÜà: ar á1: at<áR: avlás:Taxœá£:ÞcxÌáÏ:š`{øáé:š`|$â ; a}Tâ); a„â6; a´âF;Þcƒäâi;Ta†ã; a†DãŸ; aˆtã¾;‰iаãØ; aŽàã÷;š` ä"< a‘<äB< a“läi<öj•¨ä—<Ta™ØäØ<š`™åð<Taš4å= ašdå1=]aœŒåQ=]aœ´åp=š`œàå‡=š` æª=š`ž8æÃ=ÞcŸhæå= a¢˜æõ= a¤Èæ> a¦øæ>Ta¨(ç5> a¨XçW>Taªˆço> aª¸ç>–i¬èç¸>š`®èÕ>öj¯Pèð> a³€è?š`µ¬è2? a¶ÜèP?š`¸ék?š`¹4é„?Taºdé›?öjº é»?š`¾Ìé×?š`¿øéø?š`À$ê@TaÁTê]@TaÁ„ê@š`Á°ê£@TaÂàêÏ@TaÂëø@TaÂ@ë$ATaÂpëZAš`œëAš`ÃÈë¤Aš`ÄôëÆA aÅ$ìéAbÇLìBbÊtì&B`͘ìAB aÎÈìbB aÐøì|B aÒ(í™BThÔXí¿BTa׈íàBTa׸íûBTa×èíCTa×î0CTa×HîKCTa×xîhCTaרîƒCTaרîŸCTa×ï»CTa×8ï×CTa×hïöCTaטïDTa×Èï;DTa×øïaDTa×(ð†DTa×Xð¨DTa׈ðÊDTa׸ðåDTa×èðöDTa×ñ ETa×Hñ ETa×xñ1ETaרñEETaרñWEš`×òoE]aØ,òEThØ\ò¤E aÛŒò¿Eš`ݸòÚE aÞèòûETaàóFš`àDó-Fš`ápóFFTaâ óoFTaâÐó¢FTaâôÊFTaâ0ôüFš`â\ôGš`ãˆô*GTaä¸ô>GTaäèôXGTaäõiGTaäHõGTaäxõšGTaä¨õ¶GTaäØõÔGTaäöðGTaä8öHTaähö,Hukä˜öFHš`çÄögHTaèôö}HTaè$÷˜H aèT÷µHTaê„÷×HTaê´÷üHTaêä÷ I]aê ø%Icjê0ø>I]aëXøGIš`ë„ø`ITaì´ø„ITaìäø¢ITaìù¼I aìDùØITaîtùïI]aîœùJ]aîÄùJTaîôù:JTaî$úWJíiîTú…Jš`ð€ú¤J añ°ú¹JTaóàúäJTaóûKTaó@û%KTaópûOKÞcó ûvKš`öÌû¤K_÷Ø0ùK`÷1tLºkø(1ÖLãkúP1Mãkû1KMlüÌ1_MNlý2ƒM€lÿx2¢M`¸2üM mü2EN mD3]N_ T3]N_ `3…¯Œ_ h3+O^m p3ƒ;Oßk |3MOxm „3ƒ_Oßk 3oOxm ˜3ƒyOßk ¤3ƒ†O×l Ì3ƒ¹OÁm ä3æÈO×m \4æÈO×l l4æMùm 05æMnð5æMn6…¯Œ_6…¯¹n,6ƒqP×l46…¯¹nD6ƒqP×lL6…¯`o\6…¯fol6†qP×l|6…¯loŒ6†qP×lœ6…¯Œ_¤6”Pro°6ƒ®Pßk¼6¹PzoÌ6ƒÓPßkØ6ÞPˆoä6ƒæPßk!ð6ƒ†O×l!7ƒ¹OÁm!07…¯p!P7ƒQßk$X7ƒUMÁm$`7ƒ!Qßk$h7…¯«p$ 7ƒQßk*¨7ƒUM¸p*°7ƒ!Qßk*¸7ƒ=Q¸p*À7ƒGQßk*È7ƒQQ½p*Ð7…¯Eq*ð7ƒQÓl-ø7ƒUMVq-8ƒ!Q¸p-8…¯«q-8†Qßk.(8†UMÁm.88†!Qßk.H8…¯µq.X8†Qßk/h8†UM¸p/x8†!Qßk/ˆ8†=Q¸p/˜8†GQßk/¨8†QQ½p/¸8…¯¿q/È8†QÓl0Ø8†UMVq0è8†!Q¸p0ÆnQÅq0Æ xQ×l0Æ ‡Q×l0ø8ƒ SÓl09ƒ#Sêr09ƒ:Ss09ƒNS×l09ƒ^Ss0 9ƒqS%s0(9ƒ‚S×l009ƒ‘S×l089ƒ S×l0@9ƒ°S×l0H9ƒ¾Sßk0P9ƒÑSßk0X9…¯+s0È9¤T‚s<:ƒËU×l<:ƒÜU×l<:ƒëU×l< :ƒV×l<(:ƒV×l<0:…¯šs<`:æCV·sA¼:æCV½sBÌ:æCVÎsC4;æÈO×mE¸;æÈO×lFÈ;æMùmF@<†MV×lHL<†[V×lHX<†dV×lHd<†uV×lHp<ƒˆV×lH|<†˜V×lHˆ<†¶V×lH˜<†ÁVßsHÄ<†ÎVäsHì<†ÛVäsI=†ìVßsJ<=†ÿVêsJX=ÁMñsLh=WösLx=æMüsMì=æMnN>…¯?tO>ƒ…X×lPà>†XßsPì>†\XOtPø>†œXßsQ?†zXOtQ?†¿XftR,?†ÊXstR÷øYåio÷Z…¯Tü8ZƒQ‰k@ZƒUM4lHZƒ!Q’PZƒ=Q’XZƒGQ×l`ZîgªxZƒ¹OÁmZ…¯ü¬Z]N_°Zƒwh’¼ZƒUcÈZpU‚ÜZƒ"cT‚øZƒubßk[ƒqPæb[ƒøio‚,[ƒ£h‹‚<[ƒœhœ‚ X[ƒªh‹‚ h[ƒÁcÚ{ x[ƒj·‚ ”[ƒj]ƒÔ[ƒåb-|ä[ƒ)jžƒü[ƒcᵃ\ƒˆhG„X\ƒ3b×lh\ƒÐc?|€\ƒ÷cq„œ\ƒþcw|´\ƒPb„Ä\ƒÎd„Ô\:jœ„ø\éZ¸„]ÆMnH]ƒai×l^ÆÈO×l^Ádö| ^Á=d}4^Á}i½sX^€h*‚ h^ƒrj¸…"p^ƒ|j×l"x^ƒ„j×l"€^ƒŒj¹n"Œ^…¯½…#¬^æCVà…&P_æCV½s'`_æCVÎs(`æÈO×m*``æÈO×l+p`æMùm+Ì`ƒÁj†-aƒÜj†-Paëj†.|aƒk-†1Èaƒ k×l2ÔaæM3†2,bæMn3Pbƒ?k¸…4XbƒKk×l4`bƒYk:†4lbƒek¹n5xb…¯@†6bæCVG†8øbæCV½s9cæCVÎs:xcæÈO×m<ÄcæÈO×l=ÔcæMùm= dƒ$b¹n?tdƒsk¸…@Œdƒyk¹n@Èdƒ‡ki†AÔdƒkÈkBs]aÁ€{Msn™Áˆ{Xss™Â{…¯Œ_Ü{gs]aø{oss™ÃØ{wsx™Äô{s~™Ä|¨sÙ˜ÅT|ìs]aƼ|%t šÆô|1t]aÇ}Dts™Çœ}StXšÈì}etašÉ~t~šÍ~”tŒšÐ(~¦t›šÔ,~¼t›šÖ0~Ât§šØ4~Öts™Ú8~Ýts™Û<~çts™Ü@~]N_ÝP~]N_Ýh~…¯¹nÝx~@u»šÞ€~†LußkÞŒ~Zu»šÞ”~†dußkÞ ~††O×lÞ¨~ƒ¹OÁmÞÀ~æCVèšÞæCV½sßæCVÎsà`æÈO×mâˆæÈO×lã˜æMùmãÔæM÷šå €æMnæ0€†vÓlç8€†(v×lç@€†6v×lçH€†Bv×lçP€†Rv×lçX€†`v›ç`€†'^Ólçh€†mvÓlçp€…¯›çÀ€æCV@›ï\‚æCV½sðl‚æCVÎsñèƒæÈO×móà„æÈO×lôð„æMùmô¼…ÆÒvÓlöL†ôvœöx‡0wûœû4ˆæM ÿôˆæMn‰…¯Œ_P‰ƒ¥wVh‰ƒ°wV€‰†½wVŒ‰ƒÓwtÀ‰èw|܉Ïm¾ŒŠxõœŠx ž¬ŠÁ*xŒ_ ÈŠ]N_ ØŠ†¿y×l àŠ†Îy×l 芆Þyxž ðІíy~ž øŠ†ûy„ž ‹††O×l ‹† zÓl ‹†z×l ‹…¯Šž h‹æCVœžÄ‹æCV½sÔ‹æCVÎs8ŒæÈO×mLŒæÈO×l\ŒæMùmxŒæM±ž(æMnL…¯ Ÿ¼†={Ø ˜P{ ¡ $˜e{/¡!H˜ƒ…{Q¡"l˜ƒª{q¡%Иƒä{ž¡)P™ƒ|¢-Ä™ƒ|*¢/Ü™ƒ.|@¢3ð™…¯”¢6`š†_|·¢8 š†||¾¢9К]N_:@›…¯¹n:P›(~Ü¢;X›ƒ:~ßk;d›N~Ü¢;l›ƒa~ßk;x›v~Ü¢;€›ƒ‚~ßk;Œ›~Ü¢;”›ƒŸ~ßk; ›°~Ü¢;¨›ƒ½~ßk;´›Ì~Ü¢;¼›ƒÛ~ßk;È›ì~Ü¢;Лƒý~ßk;ܛܢ;䛃ßk;ð›.Ü¢;ø›ƒ<ßk;œƒ†O×l; œƒ¹OÁm;$œæCVW£;dœæCV½s<tœæCVÎs=ÄœæÈO×m?0æÈO×l@@æMùm@|æMf£B´æMnCØ…¯Œ£Džƒ¾‡K$žƒÌÓlK0žƒÛÓlK<žƒä×lKHžƒî¡£KTžƒ}l§£Kdžƒ÷§£Ktžƒ€ßkK€žƒ€º£K¸žéZÁ£LØžƒ)€è£RŸƒI€¤SŸƒY€¤SŸ…¯%¤S0Ÿ…¯=¤UDŸƒ‘€E¤VPŸ…¯y¤VÀŸƒž¤]ÌŸƒ¨¦¤]ØŸƒÀ¦¤]䟃֦¤]ðŸƒì¯¤]üŸƒ‚ßk] ƒ‚¹¤] ]N_]8 …¯¹n]H ‰‚ɤ^P ƒ“‚ßk^\ Ÿ‚ɤ^d ƒ­‚ßk^p ½‚ɤ^x ƒÉ‚ßk^„ ƒ†O×l^Œ ƒ¹OÁm^¤ æCVö¤^ä æCV½s_ô æCVÎs`D¡æÈO×mb€¡æÈO×lc¡æMùmcÌ¡æM¥e¢æMnf(¢]N_gL¢…¯¹ng\¢‰‚¥hd¢ƒ“‚ßkhp¢Ÿ‚¥hx¢ƒ­‚ßkh„¢½‚¥hŒ¢ƒÉ‚ßkh˜¢ƒ†O×lh ¢ƒ¹OÁmh¸¢æCVJ¥hø¢æCV½si£æCVÎsjX£æÈO×ml”£æÈO×lm¤£æMùmmà£æMY¥o¤æMnp<¤…¯Œ_qD¤ú‚f¥qP¤ƒ ƒßks\¤ƒ¥sd¤ƒ,ƒßktp¤>ƒ†¥tx¤ƒEƒßku„¤ƒ†O×lu¬¤ƒ¹OÁmuĤæÈO×mu䥿ÈO×lvô¥æMùmv„§æMÔ¦x ¨æMnyĨ…¯ì¦zܨƒQ‡|䨃UM§|쨅¯ŽL|ü¨ƒqPÓl}©…¯˧}©ƒqP§~©…¯0¨~,©†Q‡<©†UM§L©…¯7¨\©†qPÓl€l©…¯>¨€|©†qP§Œ©]N_¤©…¯¹n´©½ƒP¨‚¼©ƒÉƒßk‚È©׃V¨‚Ô©ƒâƒßk„à©ðƒm¨„詃ÿƒßk…ô©„P¨…ü©ƒ#„ßk…ªƒ†O×l…ªƒ¹OÁm…(ªæÈO×m…ôªæÈO×l†«æMùm†¬æMG©ˆجæMn‰ü¬…¯Z©Š­ƒQo©Œ­ƒUM§Œ$­…¯Ö©Œ4­ƒqPÝ©<­…¯BªL­†Qo©Ž\­†UM§Žl­…¯IªŽ|­†qPÝ©Œ­ƒ¥wtª”­ƒŒ„{ªœ­ƒ–„ßk¤­ƒ©„ž¤¬­…¯‡ªÔ­…¯©ª“è­ƒó„{ª”ø­ƒ…°ª”®ƒ …Ûª”<®ƒ2…íª–T®ƒI…«–®ƒL„ž¤— ®ƒvÓl—¯ƒh…íª—`¯ƒ{…«—Æ–…?|˜¸¯]N_˜į…¯Œ_˜̯†È«˜Ô¯††ßk˜à¯/†Ϋ˜è¯†A†ßk™ô¯V†Õ«™°†m†ßk› °††O×l›4°ƒ¹OÁm›L°æCV2¬›T±æCV½sœd±æCVÎsh²æÈO×mŸ(³æÈO×l 8³æMùm ´æMœ¬¢ø´æMn£µ…¯Œ_¤$µ…¯ŽL¤4µ†qPÓl¥<µ…¯Z­¥Tµ†QÓl§\µ†UMÓl§dµ…¯Å­§tµ…¯Ì­¨„µ†qPÓl©”µ…¯Ó­©¤µ†QÓlª´µ†UMÓlªĵ]N_ªÔµ…¯¹nªäµ‡å­«ìµ†)‡ßk«øµB‡ë­«¶†T‡ßk­¶i‡õ­­¶†€‡ßk®$¶š‡®®,¶†¼‡ßk¯8¶††O×l¯@¶ƒ¹OÁm¯X¶æCV˜®¯x·æCV½s°ˆ·æCVÎs±œ¸æÈO×m³x¹æÈO×l´ˆ¹æMùm´€ºæMD¯¶\»æMn·€»…¯W¯¸˜»†QÓlº »†UM_¯º¨»…¯Ó¯º¸»†qP㯻À»…¯ŽL»л†qPÓl¼Ø»…¯Ö°¼è»†QÓl½ø»†UM_¯½¼…¯ݰ½¼†qP㯾(¼…¯ä°¾8¼†qPÓl¿H¼á‡þ°¿P¼…¯ ±À`¼†qP±Áh¼††O×lÁp¼ƒ¹OÁmÁˆ¼æCVn±ÁÔ¼æCV½sÂ伿CVÎsÃ<½æÈO×mÅx½æÈO×lƈ½æMùmÆнæM©±È¾æMnÉ4¾…¯ ²Êd¾†ÛÓlÍp¾†ˆ\´Í„¿†ä×lÍ¿…¯u´Í¤¿†›ˆ}´Î°¿ƒ3b×lμ¿ƒa†Îпƒ¥ˆŠ´Ï쿃f‘´ÐÀéZwµÑxÀ–‡óµ×ÀÀÁMúµØÐÀ†ÛÓlØØÀ†J‰ÓlØàÀ†j‰ÓlØèÀ†v‰ÓlØðÀ…¯¶ØÁæCV¶ÜÈÁæCV½sÝØÁæCVÎsÞ€ÂæÈO×mà,ÃæÈO×lá<ÃæMùmá´ÃæM#¶ã(ÄæMnäLĆv‰\´åTĆø‰Ólå\ĆŠ7¶ådĆŠßkålÄ…¯>¶å”Ä…¯¼¶éņÛÓlë$ņ ŠŶë0ÅéZé¶ëŒÅ]N_ïœÅ]N_ï´Å…¯¹nïÄŽ‚·ðÌņɂßkðØÅ‹·ðàņ‹ßkðìÅ*‹·ðôņ:‹ßkñÆM‹·ñƆ_‹ßkòƆ†O×lòƃ¹OÁmò4ÆæCVd·ò䯿CV½sóôÆæCVÎsô¨ÇæÈO×möDÈæÈO×l÷TÈæMùm÷øÈæM›·ù”ÉæMnú¸É…¯ŽLûÈɆqPÓlüÐÉ…¯ŽLüàɆqPÓlýèÉ…¯r¸ýøÉ†qPÓlþÊ…¯y¸þʆqPÓlÿ(Ê…¯Œ_ÿ0Ê‹€¸ÿ8ʆŸ‹ßkDʲ‹‰¸Pʆ¿‹ßk\ʆ†O×lxʃ¹OÁmÊ…¯θ Ê†qPÕ¸¨Ê…¯8¹ÀʆQ¦¤ÈʆUMÓlÐÊ…¯¢¹àʆqPÕ¸ðÊ…¯®¹Ë†Q¦¤Ë†UMÓl Ë]N_8Ë…¯¹nHËQŒÀ¹P˃\Œßk \ËjŒݹ h˃tŒßk tËÁMí¹ |˃ubßk ˆËŒí¹ ˃¢Œßk œËƒ†O×l ¤Ëƒ¹OÁm ¼Ë…¯Mº Ì˃qPhº ÔË…¯áº ì˃Qïºô˃UM‡üË…¯R» ̆qPhºÌ…¯^»,̆Qïº<̆UM‡LÌ]N_dÌ…¯¹ntÌîŒp»|̃öŒßkˆÌp»ÌƒßkœÌƒ†O×l¤Ìƒ¹OÁm¼ÌæCV»üÌæCV½s ÍæCVÎs\ÍæÈO×m„ÍæÈO×l”ÍæMùmÐÍæM¬»ÎæMn,Î]N_PÎ…¯¹n`ÎŽÄ»h΃HŽßktÎxŽÄ»|΃›ŽßkˆÎÀŽÄ»ÎƒÉŽßkœÎÔŽÊ»¤ÎƒÜŽßk°Îƒ†O×l¸Îƒ¹OÁmÐÎ…¯Mºà΃qPhºèÎ…¯‡¼øÎ†qPhºÏ…¯Ò¼HσöŽù¼%TσqP½%`σþŽ ½%lσïº%xσ½%„σ5½%σ}l‡%œÏƒHÓl%èÏ…¯r¾%ÐЃa{¿3|у¾·¿9¬Ñƒàò¿;HÒƒõÀ?¸Òƒ‘)ÀCØÒƒ‘èÁG¸Õƒ8‘ÂMÜÕƒN‘lÂMÖƒe‘×ÃNàÖƒ€‘öÃOôÖƒª‘pÅQpڃÆW¸Úƒ’dÈXœÛƒ)’ËÊYp݃b’aË^Þƒ®’ÈËcŒÞƒõ’ÏgÀåƒ0“gÏp8æƒI“Ïq|惙“ÄÏu„æ…¯èÏu æÆMnvÔæÆÈO×lwç†Þ”Ólwç†ò”¹¤w熕¹¤w 熕ßkw(ç†?•ßkw0ç†\•dÐw8ç†i•jÐw@ç…¯tÐw€çæÈO×m~”çæÈO×l¤çæMùm`è –©Ðtè/–©ÐƒìèH–©Ð…(éƒb–Ól‡8éÆÒvÓl‡8êæM.чìêæMnˆë…¯Ñ‰hëÆÃ–Œ_‹t놥wtª‹€ë†Ì–ßk‹Œë†aÄÑ‹Ìë†àÒPì†õ<Ò”È솑cÒ—P톑’ÒšØí†8‘Ÿ<îƒ7—Œ_ŸˆîƒU—ªÓŸï]N_¡0ï…¯Œ_¡8ïÊ—ÐÓ¡@ï†Û—ßk¡Lïî—ÐÓ¡Tï†ú—ßk¡`ï˜ÖÓ¡hßk¢tO×l¢œïƒ¹OÁm¢´ïæÈO×m¢ðæÈO×l£$ðæMùm£ÀðæMFÔ¥XñæMn¦|ñ…¯Œ_§„ñ…¯Œ_§Œñ…¯Õ§œñ†qPÕ¨¤ñ…¯‡Õ¨´ñ…¯“Õ©Äñ…¯šÕªÔñ†qPÕ«äñ7˜´Õ«ìñ…¯ÁÕ¬üñ†qPÌÕ­ò††O×l­ òƒ¹OÁm­$òŽ˜ Ö­,ò…¯Ö®<ò†qP$Ö¯Dò††O×l¯Lòƒ¹OÁm¯dò…¯èÖ¯óƒ™×°|óƒ™×³ôóƒ0™*×µlôƒ¬x³×¶èôƒ>™Ø¹hõƒk™5Ø¿˜õƒ¤™RØÃ(öƒ¼™RØÄ|öƒÑ™Œ_Åøöƒß™RØÅ$÷ƒí™Œ_ÆH÷ƒú™Œ_Æl÷ƒBšKÙÆLøƒ^š ÚǤøƒ…š.ÑÉÌø…¯èÖÊpùéZœÛË|ù†¬x³×Ì”ù†™×Ϭù†0™*×Ò¼ù†™×ÓÌù†T›úÛÕú†Ñ™Œ_×ú†œ›Œ_×pú†¤™RØ×€ú†¼™RØØú†>™2ÜÙDû†k™EÜàXû†k™5Øãlû†é›RØç|û†œŒ_èŒû†ú™Œ_èœûœj™è¸û>œj™èÔûƒjœ]Üè0üƒ‚œ”Üê`üƒ¦œ³×ìtüƒ»œ×ïÄü]N_òÔüv Ýòôüª Ýôý½rÝö˜ýžºÝÿ¼ý6žÞþwžÞ0þˆž°àÜôžÖâhŸÏ㜵Ÿõãt# ]a5 ]a˜R aaäg ä ü} 4ä!L  ãä!<Ñ ä'Hê ùå(p ¡!æ.!¡Gæ3˜9¡Gæ3 V¡Gæ3¨ƒ¡¨æ3육¨æ4X »¡ ç5Ø x¢§é8“¢Óí<0™¢kî=8®¢{î=@âŒî>HÞ¢¹î>Pù¢¢ò?P£fô@t£ÛõAt£øB !£ÊøCH…¯Œ_GPFœ½-ùG€…¯9ùH¨Fœ½CùLØ…¯VùNðFœ½-ùPT…¯9ùQ|Fœ½CùU¬…¯sùWÌFœ½-ùZÄ…¯„ù[ìÆ©£¾ù^”Æ·£¾ù^¬ÆÄ£×l^¼…¯Ðù^ÌFœ½Ùù_à…¯ú`Æ©£¾ùa@ÆÄ£×lblÆ·£¾ùb„ƒü£Ðùc,ƒü£ÕúdPƒ¤×le`…¯Œ_ehFœ½Üúet…¯Õúf„Fœ½òúgð…¯÷úhFœ½ûi…¯Œ_jFœ½ûj@…¯Œ_kHFœ½ûkT…¯Œ_l\Fœ½0ûlh…¯ÕúmxFœ½Fûn”…¯Õúo¤Fœ½bûpÐ…¯ŽLqàFœ½qûrð…¯Œ_søFœ½¼ûs$…¯Œ_t,Fœ½Ûût8…¯Œ_u@Fœ½íûuP…¯Œ_vXFœ½íûvh…¯÷ûw˜Fœ½û|œ …¯&ý}¬ Fœ½-ý~¸ …¯ŽLÈ Fœ½…™€Ø …¯8ýð Fœ½ûƒl!…¯Œ_„t!Fœ½…™„!…¯Õú… !Fœ½û†¸!…¯Ðù‡È!Fœ½aýˆÔ!…¯ný‰ô!Fœ½½ýŒ`"…¯Œ_h"Fœ½bþÐ"…¯Œ_ŽØ"Fœ½qþŽä"…¯Œ_ì"Fœ½„þø"…¯ú‘#Fœ½–þ’#…¯Œ_“ #Fœ½¡þ“$#…¯Œ_”,#Fœ½¡þ”X#…¯©þ•ˆ#Fؤ¾þšø#FskŒ_›$Fê¤ßk›0$Fù¤Ìþ›<$F ¥Ôþ›d$…¯Zå›t$Fœ½ñþœ$…¯Œ_˜$Fœ½ýþ¤$…¯Œ_Ÿ¬$Fœ½…™ŸÀ$…¯ÿ Ð$Fœ½)ÿ¡%…¯2ÿ¢(%Fœ½)ÿ£d%C¥Cÿ¤p%…¯Tÿ§%ƒQßkª˜%ƒUMtª %ƒ!Qtª¨%ƒ†O×lª°%ƒ¹OÁmªÈ%æCVšÿªp&æCV½s«„&æCVÎs¬,'æÈO×m®˜'æÈO×l¯¨'æMùm¯(æMÍÿ±t(æMn²˜(.¿™è³ (…¯y´°(ƒqP‰kµ¸(ƒ†O×lµÀ(ƒ¹OÁmµØ(…¯µè(Fœ½'¶ø(…¯·)Fœ½'¸)…¯=¹()ƒœ½Vº<)…¯Œ_¼D)Fœ½]¼X)…¯t½h)Fœ½‚¾x)…¯Œ_¿€)Fœ½¡þ¿ü)…¯štÀ *Fœ½¡þÁ$*…¯ÿÂd*Fؤ{ɘ+FskŒ_Ê\,Fê¤ßkʘ,Fù¤’ʤ,F ¥šÊÄ,…¯ÐùÊÔ,Fœ½aýËà,…¯§Ìø,Fœ½ûÎ-…¯ÿÏ -Fœ½±Ð@-…¯øÔà-Fؤ…æl1FskŒ_ç¬2Fê¤ßkç(3Fù¤†ç43F ¥çl3…¯ÿç|3Fœ½±èœ3…¯˜ì¼3Fœ½«ïð3…¯´ð4Fœ½òúñ4}¦òÜ5ʦKú\6즔_üd6§yüŒ6D§Qýô9u§§:‰§- $<ƧJ  <<Ù§È  ˆ=0¨j ä?a¨ @ˆ¨d L@èž h@樫 lB0© ÐB=©J"ÜBO©§#¤Dy©Ä(ÌDÀ©ª,\E…¯Œ_/dEFœ½Í/hE…¯Œ_0pEFœ½í0°E…¯Œ_1¸EFœ½1àE…¯Œ_2èEFœ½2F…¯w3hFFؤ-< GFskŒ_=DHFê¤ßk=xHFù¤Ól=„HF ¥7=°H…¯@=ÀHFœ½Í>àH…¯^?8IFؤäH¬JFskŒ_IpKFê¤ßkI¬KFù¤ÿI¸KF ¥IÜK…¯Œ_IäKFœ½.IôK…¯]JDLFؤ¾þR`MFskŒ_SNFê¤ßkS8NFù¤ÌþSDNF ¥ÔþSlN…¯Œ_StNFœ½.S„N…¯]TÔNFؤ¾þ\ðOFskŒ_]”PFê¤ßk]ÈPFù¤Ìþ]ÔPF ¥Ôþ]üP…¯Œ_]QFœ½.]Q…¯Œ_^QFœ½'^ Q…¯Œ_`¨QFœ½B`´Q…¯Œ_a¼QFœ½\aÈQ…¯—bRFؤi6} àá̱g6 âå±³6‚ ´â ²a7† ðã…¯ÿ‰ äFœ½l7Š ä…¯w7Œ ,äFœ½c8Ž æ…¯m8 æFœ½†8‘ 0æ…¯Œ_“ 8æFœ½•8“ Tæ…¯Œ_” \æFœ½•8” hæ…¯ž8• xæFœ½±8–  æ…¯ž8— °æFœ½c8˜ <è…¯9™ \èFœ½c8œ |è…¯Œ_ „èFœ½•8  è…¯Œ_ž ¨èFœ½•8ž ´è…¯89Ÿ ÄèFœ½?9  0é%²‡9¡ tê…¯ŽL¥ „êFœ½…™¦ ”ê…¯Œ_§ œêFœ½Æ9§ ¸ê]N_© ì’³í9© ì°³í9© ìÒ³ö9© ìì³:© (ì…¯Œ_© 0ìFœ½ :© <ì…¯Œ_ª DìFœ½ :ª Pì…¯Œ_« XìFœ½:« dì…¯Œ_¬ lìFœ½†¬ xì&´):­ ´ìV´7:­ ¼ìŒ´?:­ üìµ´]:° DíÌ´‡:² píú´Ù˜´ |íµ±:µ ôí+µK;¹ Èî9µi;¼ ðîSµ¢;½ ðøqµ}<¿ 0ý¯µu>Ä °þíµÖ>Ê Üþ¶ê>Ì èþ"¶ZBÍ >™sDÑ ¸…¯'Eà Œƒö1Eä ˜ƒÓ¶tªä ¨ƒÄ£×lä ´ƒò¶9Eä Àƒÿ¶ßkå ̃ ·SEå 0…¯]Eç HÆ·£¾ùè \Æ©£¾ùè pÆÄ£×lè €…¯dEè ˜Fœ½lEê °…¯wEì ÐFœ½„Eï ø…¯]Eð Fœ½aýñ …¯ŒEò (Fœ½•Eó @…¯©Eô PFê’ŒÌõ d…¯ºEõ |Fœ½åE÷  …¯ïEø ðFœ½}F L …¯Œ_ ¨ ƒì·ÄG ´ ƒý·ßG À ƒ¸ H Ì ƒ1¸ H Ø ÁT¸:H ü Á¤¸]H 0 ÁH ð ƒY¹âH …¯Œ_ ᶪôH L áñªI ˆ ]N_   …¯¹n ° îŒ4I ¸ ƒöŒßk Ä 4I Ì ƒßk Ø ƒ†O×l à ƒ¹OÁm ø æCVaI 8 æCV½s H æCVÎs ˜ æÈO×m À æÈO×l Ð æMùm æMpI D æMn h …¯]E x Fœ½aý! ˆ …¯Œ_" Fœ½†I" Ì …¯Œ_# Ô Fœ½íû# ä …¯Œ_$ ì Fœ½íû$ ü …¯ŽL% Fœ½£I& 8…¯Œ_' @Fœ½ÎI' t…¯àI( „Fœ½Üú) ¬…¯Œ_* ´Fœ½J* Ð…¯Œ_+ ØFœ½6J+ …¯Œ_, Fœ½JJ, …¯Œ_- Fœ½UJ- (…¯Œ_. 0Fœ½UJ. <…¯aJ/ TFœ½Ùù1 p…¯Ö2 €Fœ½Ùù3 ”†¹vJ4 Ô¥¹‘J7 ¹êK:  ä¹DL> ð÷¹æLB ˆº*MD #ºÎMH Œ=º(RL €…¯FRP Fœ½¬RQ €…¯¿RR ˜Fœ½ãRT ä…¯¿RW üFœ½öRY D…¯Œ_Z LFœ½&SZ p…¯Œ_[ xFœ½;S[ |…¯Œ_\ „Fœ½JS\ …¯Œ_] ˜Fœ½WS] ¤…¯Œ_^ ¬Fœ½`S^ ¸…¯iS_ ÈFœ½òú` Ü…¯sSa ìFœ½‹Sb …¯•Sc Fœ½·Sd D…¯Œ_e LFœ½ÆSe t…¯Œ_f |Fœ½öSf  …¯ Tg ¸Fœ½Ti Ð…¯ Tj èFœ½Tl …¯Œ_m Fœ½%Tm …¯Œ_n Fœ½2Tn @þºPTp € »j™r ˆ»j™r F»j™r ˜^»j™r  v»j™r ¨h¼yTr o¼‚Ts Pv¼QUw Ü“¼˜U} 4 «¼`‚ d üÈUƒ Ô ݼùU… \"½V‡ |"½iV $/½ŠV X$A½òV“ è$W½aW› °%r½aW `&½WŸ l&–½ÕW¡ ˆ&»½IX¥ '罋X© ,'ù½µX¯ <' ¾ãX´ „'6¾üX¶ œ'|¾ªY» à(»¾éYÅ ¬)]N_È h*…¯Œ_È p*Fœ½ZÈ ä*…¯ŽLÉ ô*Fœ½ZÊ +…¯ŽLË +Fœ½ZÌ <+…¯DZÍ ¤+FؤÁZØ ð,FskŒ_Ù ´-Fê¤ßkÙ ð-Fù¤ÍZÙ ü-F ¥ÓZÙ 4.…¯êZÙ D.Fœ½øZÚ X.…¯[Û h.Fœ½([Ü  .…¯Œ_Ý ¨.Fœ½a[Ý ü.…¯Œ_Þ /Fœ½a[Þ X/…¯Œ_ß `/Fœ½¹[ß È/…¯Œ_à Ð/Fœ½Ï[à Ü/…¯õ[â ì/Fœ½\ã 0…¯\ä 0Fœ½=\å 40…¯a\æ D0Fœ½‹\ç h0…¯ž\è ˆ0Fœ½ ]ë È0…¯Œ_ì Ð0Fœ½]ì Ü0…¯]í ì0Fœ½gÏî ü0…¯%]ï T1Fœ½ò]ø l2…¯Œ_ù t2Fœ½ú]ù €2…¯^ú 2Fœ½ ^û ¤2…¯Œ_ü ¬2Fœ½0ûü ¸2…¯^ý Ð2Fœ½C^ÿ L3…¯Œ_ T3Fœ½K^ l3…¯õ[ |3Fœ½\ 3…¯\  3Fœ½=\ Ä3…¯a\ Ô3Fœ½‹\ ø3…¯ž\ 4Fœ½ ] X4…¯Œ_ `4Fœ½f^ €4…¯^  4Fœ½’^ È4…¯^ ø4Fœ½C^ ´5…¯Œ_ ¼5Fœ½K^ Ô5…¯õ[ ä5Fœ½\ ø5…¯\ 6Fœ½=\ ,6…¯a\ <6Fœ½‹\ `6…¯ž\ €6Fœ½ ] À6…¯Œ_! È6Fœ½f^! è6…¯K_" 7Fœ½„_% à7…¯Œ_& è7Fœ½¹_& 8…¯^' D8Fœ½å`, p9…¯Œ_- x9Fœ½ï`- |9…¯a. Œ9Fœ½a/  9…¯ È;…¯Œ_? Ð;Fœ½c? à;…¯Œ_@ è;Fœ½f^@ <…¯McA H<Fؤ›dH ?FskŒ_I Ô?Fê¤ßkI @Fù¤»dI @F ¥ÕdI <@…¯ôdI T@Fœ½^eK è@…¯veL AFœ½^eO 4B…¯÷eP DBFœ½gÏQ xB…¯^R ˆBFœ½fS œB…¯Œ_T ¤BFœ½gÏT ØB…¯]U èBFœ½fV üB…¯Œ_W CFœ½"fW C…¯?fX 0CFœ½Rf[ XC…¯Œ_] `CFœ½"f] lC…¯?f^ ŒCFœ½Rfa ´C…¯Œ_c ¼CFœ½"fc ÈC…¯^d ØCFœ½ˆfe HD…¯Œ_f PDFœ½ˆff ÀD…¯Õfg ÐDFœ½ˆfh $E…¯x†i o ¸W…¯To ÈWFœ½po ìW…¯”o üWFœ½¾o! X…¯ìo" 0XFœ½ p# TX…¯8p$ |XFœ½ ]( ÀX…¯¶p) YFœ½Çp0 DY…¯Ïp1 |YFœ½Ýp7 ÐY…¯Œ_8 ØYFœ½ ]8 ìY…¯Œ_9 ôYFœ½ðp9 Z…¯Õ: 0ZFœ½-ù; DZ…¯Œ_< LZFœ½#q< tZ…¯1q= „ZFœ½KÙ> ”Z…¯Œ_? œZFœ½#q? ÄZ…¯Œ_@ ÌZFœ½#q@ üZ…¯Œ_A [Fœ½GqA 0[…¯Œ_B 8[Fœ½ ]B @[…¯Œ_C H[Fœ½ ]C P[…¯Œ_D X[Fœ½\qD d[…¯cqE Œ[Fœ½ÞqI l\…¯Œ_J t\Fœ½ ]J |\…¯Œ_K „\Fœ½ ]K Œ\…¯Œ_L ”\Fœ½\qL  \…¯æqM À\Fœ½ÞqP t]…¯Œ_Q |]Fœ½ ]Q „]…¯Œ_R Œ]Fœ½ ]R ”]…¯XrS ¬]Fœ½zrU ^…¯Œ_V (^Fœ½ ]V 0^…¯Œ_W 8^Fœ½ ]W @^…¯cqX h^Fœ½¿r\ _…¯Œ_] _Fœ½ ]] _…¯Œ_^ $_Fœ½ ]^ ,_…¯ér_ <_Fœ½ðr` P_…¯ýra `_Fœ½Ùùb p_…¯sc Ð_Fؤjsm |aFskŒ_n \bFê¤ßkn ÀbFù¤vsn ÌbF ¥|sn c…¯è×n @cFœ½Xuu te…¯Œ_v |eFœ½`uv e…¯Œ_w ˜eFœ½Ûûw Àe…¯Œ_x ÈeFœ½Ûûx Ôe…¯puy fFœ½«u~ g…¯Œ_ gFœ½ ] g…¯RØ€ gFœ½ ] @g…¯Xr‚ XgFœ½-ù„ h…¯Xr… 4hFœ½Ùù‡ Hh…¯Œ_ˆ PhFœ½ ]ˆ Xh…¯1q‰ hhFœ½-ùŠ €h…¯Xr‹ ˜hFœ½Ùù ¬h…¯RØŽ ¼hFœ½ ] Üh…¯Xr ôhFœ½û’ Hi…¯1q“ XiFœ½û” €i…¯&v• iFœ½5v– Äi…¯&v— ÔiFœ½v˜ j…¯Œ_™ jFœ½·v™ j…¯&vš jFœ½v› Hj…¯&vœ XjFœ½ív Œj…¯&vž œjFœ½vŸ Èj…¯Œ_  ÐjFœ½üv  Ôj…¯&v¡ äjFœ½v¢ k…¯Œ_£ kFœ½Jw£ pk—À|w¤  k¢ÀÌw¦ èkÄÀ x« $lÚÀ5x¬ `lêÀ]x­ œlÁvx® ¬l"Á$y¯ to.Á;y² ŒoIÁÒy³ rSÁzµ xrqÁjz¹ ¸rÁ{º ,sµÁ¢{¼ ¸sÉÁ+|¿ €tæÁ^| uûÁ|Å Ðu¸|Æ „vAÂ?~Ç ¤xaÂw~Ì yxÂ<Ï \z¡ÂU€Ô Ì~ÁÂ€× 8Ê”€Ù ´ØÂBÝ üõÂÃâ (€Ã‚ä L+Ã*‚å °>Ãx„è H‰QÃx„ì HŒYé…ð DqÃÔ…ò ¬yÃé…õ ¸”Æö ȶÆ÷ ØËÃN†ù @‘ÓÆü T‘îÃ^†þ Ø‘ Ĉ†<’ÄƆÀ’!Äí† “*ć\“>Ä:‡œ“MÄ–‡|”]݇´”fÄõ‡ €•uĈ%ô•~Ä8ˆ*h–‡Äãˆ/藧ĉ5˜°Ä‰9p˜ÃÄ3‰>0™ÌÄü‰DdšÅ(ŠL¤š Åù‹P¸£:ÅøŒUˆ¨WÅ6ZܨlÅo[l©„Å@Ž\ «žÅŽ]@¬õ¸_²µÅù‹`$²ÍÅËe<²äÅ i ³úÅ%j¨³ Æ%lÀ³ÆTnô´$Ævq4µ?ÆTs„µGÆvvĵbÆvxèµ…¯ÁÕzøµFœ½û{ ¶…¯þ|¶Fœ½}@¶…¯Œ_~H¶Fœ½ž~h¶…¯Œ_p¶Fœ½ž¶…¯Œ_€˜¶Fœ½ž€¸¶…¯Œ_À¶Fœ½«ж…¯Œ_‚ضFœ½´‚è¶…¯Œ_ƒð¶Fœ½Áƒü¶…¯Œ_„·Fœ½Á„·…¯Œ_…·Fœ½Á…$·…¯Œ_†,·Fœ½Ò†8·…¯Œ_‡@·Fœ½Á‡L·…¯Ø0ˆd·Fœ½«Š”·…¯Œ_‹œ·Fœ½ã‹¨·…¯‘Œ¸Fؤ¸‘–¤¹FskŒ_—HºFê¤ßk—|ºFù¤Æ‘—ˆºF ¥Α—°º…¯Û‘—غFœ½’›L»ˆÆ’œT»…¯yd»ƒqP‰kžl»ƒ†O×lžt»ƒ¹OÁmžŒ»æÈO×mžÈ»æÈO×lŸØ»æMùmŸ ¼æMŸ’¡d¼æMn¢ˆ¼…¯–£ ¼Fœ½?|¥ä¼…¯Œ_¦ì¼Fœ½“¦½…¯Œ_§½Fœ½>“§D½…¯Œ_¨L½Fœ½“¨t½…¯Œ_©|½Fœ½P“©ˆ½…¯Œ_«½Fœ½P“«œ½…¯Œ_­¤½Fœ½Z“­°½…¯ÿ®Ľá›Æ~“¯À¾áñª—“¯¿á¶ª¯“±T¿…¯Œ_²`¿á›ÆÌ“²d¿áñªò“²”¿á¶ª”´Ä¿…¯4”µä¿Fœ½C”¸tÀ…¯ÿ¹„ÀFœ½gϺÌÀ…¯Œ_»ÔÀFœ½L”»äÀ…¯Œ_¼ìÀFœ½]”¼øÀ…¯Œ_½ÁFœ½f”½ Á…¯ÁÕ¾ÁFœ½û¿0Á…¯þÀ@ÁFœ½ÁdÁ…¯ÁÕÂtÁFœ½ûÈÁ…¯þĘÁFœ½Å¼Á…¯Œ_ÆÄÁFœ½L”ÆÔÁ…¯Œ_ÇÜÁFœ½]”ÇèÁ…¯Œ_ÈðÁFœ½{”ÈÂ…¯Œ_ÉÂFœ½Œ”É$Â…¯ÁÕÊ4ÂFœ½ûËHÂ…¯þÌXÂFœ½Í|Â…¯Œ_΄ÂFœ½%TÎÂ…¯Œ_ϘÂFœ½{”ϸ…¯Œ_ÐÀÂFœ½Œ”ÐÌÂ…¯Œ_ÑÔÂFœ½C”ÑäÂ…¯Œ_ÒìÂFœ½C”ÒüÂ…¯ÁÕÓ ÃFœ½ûÔ Ã…¯þÕ0ÃFœ½ÖTÃ…¯Œ_×\ÃFœ½•”ׄůŒ_ÙŒÃFœ½§”٘ůŒ_Û ÃFœ½òú۬ůŒ_Ü´ÃFœ½òúÜÀÃ…¯ÁÕÝÐÃFœ½ûÞäÃ…¯þßôÃFœ½àÄ…¯iSá(ÄFœ½òúâ<Ä…¯sSãLÄFœ½‹SäpÄ…¯•Så€ÄFœ½·Sæ¤Ä…¯iSç´ÄFœ½òúèÈÄ…¯sSéØÄFœ½‹SêüÄ…¯•Së ÅFœ½·Sì0Å…¯Œ_í8ÅFœ½Œ”íDÅ…¯Œ_îLÅFœ½½”îXÅ…¯Ë”ïhÅFœ½•ðèÅ…¯%•ñÆFœ½>•öLÆ…¯Œ_÷TÆFœ½F•÷`Æ…¯Û‘øˆÆFœ½ ]üÈÆ…¯Œ_ýÐÆFœ½òúýÔÆÇc•þÜÆÇy•þôÆ…¯Œ_ÿÇá*xŒ_ÿÇþºPTÿPÇ\Çj™XÇkÇj™`ÇÁÇ•„ÇÐÇí• œÈ]N_ ÐÈ…¯û• ðÈFœ½’^É…¯–PÉFœ½-ùÔÉ…¯9–ʃœ½m–TÊ…¯r–lÊFœ½C^ŒÊ…¯Œ_ ”ÊFœ½K^ ¬Ê…¯ÿ!¼ÊFœ½¥–"dÌ…¯ÿ#tÌFœ½øZ$ˆÌ…¯Œ_%ÌFœ½Ï–%ÈÌ…¯á–&øÌFœ½—+hÍìÇ+—,tÍÈ4—-¤ÍÈ¡—.@Î6Èå—0xÎeȘ3 ÎyÈ«˜5 Ð¢Èë˜8ÜÐÄÈ ™;èÐÏÈJ™<ôÐÚÈ>š@ØÑÉ(C¬×>ÉóIä×hÉcžLÙÉðžPhÙŽÉŸRtٞɟS¼ÚÊ, W,ÛWÊv XxÜŸÊÏ [`Ý´Ê¡\lÞîÊu¡_ÌÞ…¯^bàÞƪ¿;¢c$ä…¯Œ_c,äFœ½ãc8ä…¯^dHäFœ½˜¢epä…¯¡¢f°äFؤ-m˜åFskŒ_nHæFê¤ßkn„æFù¤ÓlnæF ¥7n¼æ…¯^nÐæƪ¿ï¢o8ç…¯yoHçFœ½4£pXç…¯:™r€çFœ½`£v´ç…¯^xÄçFœ½£yôç…¯Œ_züçFœ½›£zè…¯^|èFœ½®£}(è…¯Œ_0èFœ½Í£X腯㣀xèƪ¿š¤ƒé…¯ŽLƒ$éFœ½ý¤„ˆé…¯^…œéƪ¿&¥†ØéÆ8ËÅ¥†”êÆIË ¦†èêcËÙ˜† ësËG¦‡LëÄË7:ˆTëÝË7:ˆ\ëýËÙ˜ˆ„ë ÌÙ˜‰¬ë…¯ŽLмëFœ½…™‹Ðë…¯ŽLŒàëFœ½…™ôë]ÌP¦Žìz̆¦‘LìŒÌ¼¦”€ìÌò¦—´ì°Ì(§šèìÁÌ^§íÓÌ”§ PíèÌê§£˜í÷Ì ¨¦¼íÍ2¨©àíÍd¨¬î0ÍЍ¯@îPͱ¨³dî_Í©·¤î|ÍK©ºÀîͱ©½HïͪÀˆï¬Í&ªÃ¬ïÅÍŒªÆð]N_ÉDð…¯Œ_ÉLðFœ½ ]ÉTð…¯¬ªÊdðFœ½)«ËÌñ…¯Œ_ÌÔñFœ½1«ÌÜñ…¯8«ÍòFؤ]«ÓÌòFskŒ_ÔØòFê¤ßkÔóFù¤§£ÔóF ¥v«Ô@󅯎«Ô€óFؤ]«Û<ôFskŒ_ÜHôFê¤ßkÜtôFù¤§£Ü€ôF ¥v«Ü¼ô…¯á«ÜüôFؤ]«ã¸õFskŒ_äÄõFê¤ßkäðõFù¤§£äüõF ¥v«ä8ö…¯¬äxöFؤ]«ë4÷FskŒ_ì@÷Fê¤ßkìl÷Fù¤§£ìx÷F ¥v«ì´÷…¯]¬ìô÷Fؤ]«ó°øFskŒ_ô¼øFê¤ßkôèøFù¤§£ôôøF ¥v«ô0ù…¯›¬ôpùFؤ]«û,úFskŒ_ü8úFê¤ßküdúFù¤§£üpúF ¥v«ü¬ú…¯Ù¬üìúFؤ]«¨ûFskŒ_´ûFê¤ßkàûFù¤§£ìûF ¥v«(ü…¯'­üFؤ]«þFskŒ_ÌþFê¤ßkÿFù¤§£ÿF ¥v«Pÿ…¯ò­¨ÿFؤ]«äFskŒ_¨Fê¤ßkäFù¤§£ðF ¥v«…¯Š®tFؤ]«#°FskŒ_$tFê¤ßk$°Fù¤§£$¼F ¥v«$è…¯"¯$pFؤ]«3¸FskŒ_4 Fê¤ßk4øFù¤§£4 F ¥v«4@ …¯Þ¯4 Fؤ]«<< FskŒ_=H Fê¤ßk=t Fù¤§£=€ F ¥v«=¸ …¯°=Ø Fœ½ °@ø …¯°A Fœ½ °D8 …¯Œ_E@ Fœ½9°ED …¯Œ_FL Fœ½̰Fp …¯±Gˆ Fœ½&±I¼ …¯M±JÜ Fœ½ °M …¯°N$ Fœ½ °QD …¯®±Rl Fœ½ °V¼ …¯°WÜ Fœ½ °Zü …¯°[ Fœ½ °^< …¯®±_d Fœ½ °c´ …¯رdä Fœ½ °i8…¯°jXFœ½ °mx…¯®±n Fœ½ °rð…¯°sFœ½ °v0…¯±wHFœ½²yœ…¯)²z¼Fœ½ °}ä…¯°~Fœ½ °$…¯±‚<Fœ½²„…¯)²…°Fœ½ °ˆØ…¯h²‰Fœ½ °P…¯°ŽpFœ½ °‘…¯)²’°Fœ½ °•Ô…¯h²–üFœ½ °šL…¯€²›|Fœ½ ° Ð…¯²¡ðFœ½ °¤…¯¬²¥8Fœ½ °©ˆ…¯À²ª¸Fœ½ °¯ …¯à²°4Fœ½ °´h…¯ô²µˆFœ½ °¸¨…¯³¹ÐFœ½ °½ …¯³¾PFœ½ °Ã¤…¯G³ÄÄFœ½ °Çè…¯°ÈFœ½ °Ë(…¯Z³ÌPFœ½ °Ð¤…¯°ÑÄFœ½ °Ôä…¯®±Õ Fœ½ °Ù\…¯°Ú|Fœ½ °Ýœ…¯®±ÞÄFœ½ °â…¯r³ãdFؤ]«ël$FskŒ_ì%Fê¤ßkìX%Fù¤§£ìd%F ¥v«ì”%…¯ȵì$&Fؤ]«ü¸(FskŒ_ý¼)Fê¤ßký *Fù¤§£ý,*F ¥v«ýl*…¯±ý„*Fœ½’¶ÿ *…¯®¶À*Fœ½ °x,…¯Û·˜-Fؤ]«&t4FskŒ_'6Fê¤ßk'¼6Fù¤§£'È6F ¥v«'X7…¯}¹'°7Fؤ]«0ð8FskŒ_1´9Fê¤ßk1ð9Fù¤§£1ü9F ¥v«1(:…¯è¹1€:Fؤ]«:À;FskŒ_;„<Fê¤ßk;À<Fù¤§£;Ì<F ¥v«;ø<…¯bº;=Fœ½ú=x=…¯Œ_>€=Fœ½ܺ>„=…¯Œ_?Œ=Fœ½ ]?”=…¯Œ_@œ=Fœ½ ]@¤=¤ÎôºA>°ÎÛ»B8AÐÎ<¼CdBêÎm¼EHCÿÎ@½FÜC)ϾK FgÏdÀOÐHŸÏ±ÀRI·ÏÑÀSDI …ÑÀVdI…¯Œ_YlIFœ½ãYxI…¯Œ_Z€IFœ½ãZŒI…¯Œ_[”IFœ½õÀ[´I…¯Œ_]¼IFœ½ã]ÈI…¯Œ_^ÐIFœ½Á^üI…¯Œ__JFœ½Á_(J…¯Œ_`0JFœ½Á`\J…¯Œ_adJFœ½ÁaˆJ…¯Œ_bJFœ½*ÁbœJ…¯Œ_c¤JFœ½3Ác¼J…¯Œ_dÄJFœ½cÁd¼K…¯Œ_eÄKFœ½*ÁeÐK…¯Œ_fØKFœ½ãfäK…¯Œ_gìKFœ½3ÁgL…¯Œ_h LFœ½cÁhM…¯Œ_i MFœ½Ái8M…¯Œ_j@MFœ½ÁjdM…¯^kxMƪ¿·ÃllRÆÏÏHÄlTÆßÏåÄl$U…¯ÅlTUFؤ-q(VFskŒ_rØVFê¤ßkrWFù¤Ólr WF ¥7r@WÐ;ÅrhWÐŽÅt¬W.ЦÅv´WAÐÖÅvÐWXÐ>Æx XxЊÆy\X•ÐåÆ{˜X¤ÐÇ~ôXÏÐ6džPYÞÐoÇŽxYòИǓ YќȘˆ[ќɛ\]@ÑåÉ¢h]`Ñ<Ë¥Ä]sѓ˨Ø]‘Ñá˪ì]Áщ̮ ^ÍÑZβ|_çÑiγ„_…¯Uų”_Fœ½ŒÎ´¨_…¯Œ_µ°_Fœ½–ε¼_…¯Œ_·Ä_Fœ½¯Î·ä_…¯Îθô_Fœ½áι`…¯Œ_º `Fœ½ Ϻ0`…¯Œ_»8`Fœ½Ï»H`…¯ÿf½X`Fœ½†¾l`…¯g¿|`Fœ½.gÀ `…¯.ÏÁ°`Fœ½BÏÂÔ`…¯QÏÃä`Fœ½aÏÄô`…¯ÏÆDaFؤíÏÎhbFskŒ_Ï cFê¤ßkÏ@cFù¤þÏÏLcF ¥ ÐÏtc…¯,ÐÏÄcFؤíÏרdFskŒ_Ø|eFê¤ßkذeFù¤þÏØ¼eF ¥ ÐØìe…¯§ÐØå¦ lÖ[åç “ ×påô —Ôׇåý ™xØ™å œäØ³å¯ žpã]N_¡å…¯Œ_¡åFœ½aý¡$å…¯Œ_¢,åFœ½ã ¢8å…¯Œ_¤@åFœ½ã ¤Lå…¯ü ¦dåFœ½ ¨¬å…¯0 ©ÔåFœ½> ­æ…¯T ®<æFœ½> ±Xçæ™ ²„ç8æ´ ´¸çXæ ·øç|æN ºxèæv ½é¤æ À ê³æ+ÃÐêÌækÆøêÕæ„ÉëäæŠÉëzG„Êë…¯Œ_Êëræ' Ê ëƒçßkË,ëðå€ Ë4ëƒçßkÌ@냆O×lÌ\냹OÁmÌtëæÈO×mÌäëæÈO×lÍôëæMùmͨìæM…ÏTíæMnÐxí…¯yшíƒqP‰kÒí…¯¡Ò íƒqPùӨ텯mÓ¸í†qP‰kÔÈí…¯€ÔØí†qPùÕèí]N_Õî…¯¹nÕî½ç–ÖîƒËçßk×$îÜç£×,îƒñçßk×8îè£×@îƒèßk×Lîè©×Xîƒ&èßkÙdî3èÃÙlîƒ>èßkÚxîLèÑÚ€îƒYèßkÛŒîièÑÛ”îƒxèßkܠO×lܨOÁmÜÀîÆÒvÓlÜ ï…¯ÖÜ0ïƒqP$ÖÝ8ï…¯£ÝPïƒQ»ßXïƒUMÆß`ï…¯5ßpïƒqP»àxï…¯¢àˆïƒqPÆáï…¯¢á ïƒqPÆâ¨ï…¯â¸ï†qP$ÖãÈï…¯‹ãØï†Q»äèï†UMÆäøï…¯—äð†qP»åð…¯£å(ð†qPÆæ8ð…¯¯æHð†qPÆçXð]N_çhð…¯¹nçxðßè¼è€ðƒêèßkèŒð÷èÂè”ðƒ éßké ð"éÏé¬ðƒ4éßkë¸ðIéèëÀðƒ\éßkìÌðƒ†O×lìÔðƒ¹OÁmììðÆÒvÓlì$ñ…¯Öì4ñƒqP$Öí<ñ…¯~íTñƒQ$Öï\ñƒUMÆïdñ…¯¡ïtñƒqPùð|ñ…¯`ðŒñ†qP$Öñœñ…¯gñ¬ñ†Q$Öò¼ñ†UMÆòÌñ…¯nòÜñ†qPùóìñ…¯Œ_ó,òƒß™ÖóDòƒ§éŒ_ô\òƒí™Œ_ô òƒçG5ôäòƒîG5õüòƒú™Œ_ö@óƒÈéBöpóƒâé ÷¤óƒíéÁøÄó…¯érùÔóFœ½Ôúä󅯌_ûìóFœ½æûøó…¯5üôFœ½æýô…¯Œ_þ ôFœ½æþ,ô…¯ÿDôFœ½-ùdô…¯m|ôFœ½-ùÐô…¯PøôFœ½× Èö…¯P ðöFœ½"4÷]N_D÷½ê^L÷ìêr\÷ëj™l÷;ëút÷Xë]a|÷në}„÷ë²Xø¥ëá`ø»ëøÉëÀø…¯Œ_ôøƒ"cyLùƒõë×lXùƒÝê yú…¯ÿf$úFœ½†8ú…¯gHúFœ½.glú]N_xú…¯Œ_€úg숈úƒtìßk”ú„순úƒ–ìßk¨ú«ì°úƒ¸ìßk¼úƒ†O×läúƒ¹OÁmüúæCVéÔûæCV½säûæCVÎsÀüæÈO×m\ýæÈO×l lýæMùm 8þæM5"üþæMn# ÿ…¯ŽL$0ÿƒqPÓl%8ÿ…¯ŽL%HÿƒqPÓl&Pÿ…¯Œ_&Xÿ…¯F&hÿ†qPÓl'xÿ…¯M'ˆÿ†qPÓl(˜ÿ…¯Y(¨ÿƒ1íÓl)°ÿƒ>íßk)¸ÿƒVíßk)Àÿ…¯`)àÿæCVq,„æCV½s-”æCVÎs.4æÈO×m0œæÈO×l1¬æMùm1ÆÒvÓl3HæMë3 æMn4Ä…¯4o5ÔFœ½>o6è…¯ÿ7øFœ½8…¯9,Fœ½::Pƒî“;Xƒ$î™;`ƒ2îŸ;hƒ@î§;pƒMî­;xƒWî³;€ƒfî½;ˆƒyîÉ;…¯Ú;à…¯Œ_CèFœ½qC€…¯Œ_DˆFœ½›D”…¯¹E䯷£¾ùHôÆ©£¾ùIÆÄ£×lJƒ´îÉJHƒ¾îSEJ …¯Œ_LFœ½ØL …¯Œ_M(Fœ½ØM4…¯êN\Á*xŒ_Qx…¯ÐùQˆFœ½aýR”…¯F#Sà ƒðe#\ ƒ0ðŒ_\0 ƒDðßk\< ƒPð§\H ƒið{#\X ƒð{#\h ƒðŠ#\t ƒ®ðßk\¼ ƒ^çßk\ø ƒÌð]$\¸ ƒ½\%]t ƒûð\¡]œ ƒ0™×l^ ƒ ñ&^Œ #ñW'_¤ƒqñŒ_eàƒ„ñ’'eðƒ“ñŒ_füƒ¥ñ™'fƒÈñ>(i܃îñ€(lœƒ òþ(opƒFòa)p”ƒ‚òc*u4…¯Œ_v<Fœ½ˆ*vL…¯–*wdFœ½ *y|…¯Œ_z„Fœ½¯*z¨…¯Œ_{°Fœ½Ì*{¼…¯ó*|üFؤV+ƒdFskŒ_„Fê¤ßk„<Fù¤l+„HF ¥‚+„t…¯ýr„„Fœ½¡+…¸…¯ýr†ÈFœ½²+‡ü…¯ýrˆ Fœ½î+‰@…¯ýrŠPFœ½,‹`…¯ýrŒpFœ½F,¬…¯ýr¼Fœ½c*Ì…¯Œ_‘ÔFœ½x,‘à…¯ýr’ðFœ½òú“…¯Œ_”Fœ½…™”(…¯Œ_•0Fœ½,•<…¯Œ_–DFœ½†,–T…¯Œ_—\Fœ½,—ˆ…¯Œ_˜Fœ½ ,˜œ…¯Œ_™¤Fœ½¯,™°…¯ýršÄá*xŒ_›Ô…¯è,›Fؤ_-¢LFskŒ_£Fê¤ßk£LFù¤¤ˆ£XF ¥p-£x…¯ŽL£ˆFœ½œ-¤à…¯Œ_¥èFœ½³-¥…¯Œ_¦Fœ½û¦ …¯Í-§0Fœ½ß-¨`…¯ï-©ÐFؤk.µÄ FskŒ_¶!Fê¤ßk¶à!Fù¤w.¶ì!F ¥.¶ "…¯iS¶0"Fœ½òú·D"…¯›.¸\"Fœ½ ]ºx"…¯iS»ˆ"Fœ½òú¼œ"…¯›.½´"Fœ½ ]¿Ð"…¯Œ_Àà"ÆÄ£×lÀä"Æ·£¾ùÀð"Æ©£¾ùÀü"…¯ýrÀ #Fœ½ûÁ$#…¯ª.ÂD#Fœ½/Åä#…¯ÐùÆô#Fœ½ÙùÇ$…¯,/È@$Fœ½d/ÎÌ$…¯s/Ïä$Fœ½‘/Ñ@%…¯Œ_ÒH%Fœ½´/Òh%$óì/Óp%/óõ/Ó˜%6ó(0Ó`&Ió^0ÖÜ&eó÷0Ù '~ó1Ü 'Žóœ1ÞL'–óÛ1ßœ'¦óê1à¤'³ó)2à(Åó)2â|(ÚóS2ä¨(õóS2æÔ(ôà2è8*ô 3êü*)ô03ì@+6ô‹3î´+Bô£3ðü+Uô34òÌ,iôÅ4ôð-ƒôÕ4ö/ ô5ù€/¹ô5üè/Ãô65þô/ÙôÅ5ÿ,0íôõ50þô6 0õL681Rõ¹6 (2fõ‰7t2yõµ7Œ2‡õ•vœ2µõÐ7Ì2Óõ8X3óõ,8p3$ö¥9"è66ö1:'€8HöÎ:,9]ö<0@<vö+<2t<öŽ<6à<è˜<8è<Ÿö¶<8ð<¨ö=8T=¼öŽ<;`=ÁöÊ==€>Ñöç=?Ð>áö >AL?÷öS>DX? ÷?F@÷¼?J<@(÷Ý?K\@4÷é?Ld@…¯¹nMt@ƒqP×lN|@ƒ†O×lN„@ƒ¹OÁmNœ@æCV%@Nì@æCV½sOü@æCVÎsPTAæÈO×mRˆAæÈO×lS˜AæMùmSÔA:÷M@UàAÆÒvÓlV BæM]@VDBæMnWhB…¯Œ_XpB|÷‚@X|Bƒ‹÷ßkZˆB÷Œ@Z”Bƒ²÷ßk^ BÊ÷ @^¬Bƒ×÷ßkb¸Bƒ†O×lbàBƒ¹OÁmbøBç÷Ñ@bCñ÷Þ@bCÆÒvÓlbàC…¯ AbøCƒQAdDƒUMÓldD…¯„Ad0DƒQAh8DƒUMÓlh@Dƒ!Q–AhHDƒ=QœAhPD…¯'BhxDƒQAl€DƒUMÓllˆDƒ!Q8BlDƒ=Q>Bl˜D…¯ Bl¨D†QAm¸D†UMÓlmÈD…¯§BmØD†QAnèD†UMÓlnøD†!Q–AnE†=QœAnE…¯®Bn(E†QAo8E†UMÓloHE†!Q8BoXE†=Q>BohE…¯¹noxEHøÍBp„EƒWøßkrEiø×Br Eƒ{øßkw¬EøùBw¸Eƒøßk{ÄE­ø C{ÐEƒ¼øßkÜEÎø!CèEƒáøßkƒôEƒ†O×lƒüEƒ¹OÁmƒFç÷SCƒFñ÷`Cƒ$FÆÒvÓlƒ€G…¯ Aƒ˜GƒQA… GƒUMÓl…¨G…¯úC…ØGƒQAŠàGƒUMÓlŠèGƒ!Q8BŠðGƒ=Q–AŠøGƒGQDŠH…¯DŠ(HƒQAŽ0HƒUMÓlŽ8Hƒ!Q–AŽ@Hƒ=Q>BŽHH…¯$EŽpHƒQA’xHƒUMÓl’€Hƒ!Q–A’ˆHƒ=Q7E’H…¯ÚE’¸HƒQA–ÀHƒUMÓl–ÈHƒ!Q8B–ÐHƒ=QìE–ØH…¯UF–èH†QA—øH†UMÓl—I…¯\F—I†QA˜(I†UMÓl˜8I†!Q8B˜HI†=Q–A˜XI†GQD˜hI…¯cF˜xI†QA™ˆI†UMÓl™˜I†!Q–A™¨I†=Q>B™¸I…¯jF™ÈI†QAšØI†UMÓlšèI†!Q–AšøI†=Q7EšJ…¯qFšJ†QA›(J†UMÓl›8J†!Q8B›HJ†=QìE›XJ…¯Œ_›`JFœ½xF›¤J…¯Œ_œ¬JFœ½FœðJ…¯iSKFœ½òúžK…¯ˆFŸ$KFœ½—F HK…¯iS¡XKFœ½òú¢lK…¯ˆF£|KFœ½—F¤ K…¯iS¥°KFœ½òú¦ÄK…¯ˆF§ÔKFœ½—F¨øK…¯Œ_©LFœ½¡F©hL…¯Œ_ªpLFœ½ªFªØL…¯iS«èLFœ½òú¬üL…¯ˆF­ MFœ½—F®0M…¯iS¯@MFœ½òú°TM…¯ˆF±dMFœ½—F²ˆM…¯iS³˜MFœ½òú´¬M…¯ˆFµ¼MFœ½—F¶àM…¯iS·ðMFœ½òú¸N…¯ˆF¹NFœ½—Fº8N…¯iS»HNFœ½òú¼\N…¯ˆF½lNFœ½—F¾N…¯Œ_¿˜NùÉF¿ Nƒ.ùßkÀ¬NDùÒFÀ´NƒWùßkÁÀNƒ†O×lÁÜNƒ¹OÁmÁôNç÷ÿFÁüNñ÷ GÁOÆÒvÓlÁ4O…¯Ð?ÁDOƒqP8BÂLO…¯¯?Â\OƒqP–AÃdO…¯ÑGÃtO†qP8BÄ„O…¯ØGÄ”O†qP–AŤO…¯Œ_ŬOFœ½îGÅüO…¯Œ_ÆPFœ½÷GÆÆmù8BÇÆ{ù–AÇTP…¯Œ_Ç\P±ùþGÇhPƒÆùßkÉtPÞùHÉ€PƒóùßkËŒPƒ†O×l˨Pƒ¹OÁmËÀP…¯OHËØPƒQÓlÍàPƒUMWHÍèP…¯ÅHÍQƒQÓlÏQƒUMÍHÏQ…¯5IÏ Q†QÓlÐ0Q†UMWHÐ@Q…¯AIÐPQ†QÓlÑ`Q†UMÍHÑpQƒúeIÑxQ…¯tIшQ…¯‘0Ò˜QFœ½IÓèQ…¯Œ_ÕðQFœ½°IÕüQ…¯Œ_ÖRFœ½ÍIÖdR…¯Œ_×lRFœ½J×èR]N_Ù S…¯¹nÙS3û6JÚ$SƒNûßkÛ0Slû@JÛ8Sƒ…ûßkÜDS¡ûIJÜLSƒ¶ûßkÜXSÍûIJÜ`SƒâûßkÜlSùû@JÜtSƒüßkÝ€S*üIJ݈Sƒ?üßkÝ”Sƒ†O×lÝœSƒ¹OÁmÝ´SæCV•JÝœTæCV½sÞ°TæCVÎsß UæÈO×má\VæÈO×lâlVæMùmâHWƒVüßkäTWÆÒvÓläpWæMØJäDXæMnåhX…¯ìJæxXƒqPôJç€X…¯aKçXƒqPdÐè˜X…¯aKè¨XƒqPdÐé°X…¯.LéÀX†qPôJêÐX…¯5LêàX†qPdÐëðX…¯ d†UM§T>d†!QdÐ>,d†=Q€N>Ld†QA?\d†UM×l?ld…¯O?|dFœ½O@d…¯—UA dFœ½¨UBÄd…¯ÈUCÔdFœ½îUDød…¯ÿUEeFœ½/VF,e…¯OVGhzFœ½·^Äz…¯Ù^ÔzFœ½å^èz…¯û^øzFœ½_ {…¯?!,{Fœ½P_"P{…¯¯?#d{á¹–A$p{…¯Ð?$„{áú8B%{…¯Œ_%¨{ƒC_%Ø{ƒW¨_'|ƒkµ_) |‚ì_+,|cá`,`|šZ`/l|¯¤`0¬|¸ì`4¸|Îa5ì|ÚEa8ø|êia9,}ð•a<<}…¯à_>L}Fœ½Èa?l}…¯¯?@€}á¹–AAŒ}…¯A`Aœ}Fœ½bBÈ}…¯¯?DÜ}á¹–AEè}…¯ß`Eø}Fœ½obFt~…¯Ð?Gˆ~áú8BH”~…¯8aH¤~Fœ½bIÀ~…¯¯?JÔ~á¹–AKà~…¯Œ_Kè~Fœ½­bKì~ùì_Lø~cáÓbM,cP8-cQl…¯à_T|Fœ½ÈaUœ…¯Ð?V°áú8BW¼…¯úbWÌFœ½’cXD€…¯¯?YX€á¹–AZd€2§cZl€ÎVdZ<…¯ÿf]LFœ½†^`…¯d_pFœ½#d`”…¯-daÄFؤ;df„‚FskŒ_g(ƒFê¤ßkg\ƒFù¤×lghƒF ¥Edgˆƒ…¯NdgÀƒFؤ;dm”„FskŒ_n8…Fê¤ßknl…Fù¤×lnx…F ¥Ednœ…]N_n<†…¯iSnL†Fœ½òúo`†…¯sSpp†Fœ½‹Sq”†…¯•Sr¤†Fœ½·SsȆ…¯Âdt؆Fœ½îduü†…¯ev ‡Fœ½Tew0‡…¯Žex@‡Fœ½Îeyd‡…¯fzt‡Fœ½\f{˜‡…¯f|¨‡Fœ½Óf}̇…¯ûf~䇯·£¾ùˆÆ©£¾ùtˆÆÄ£×lŒˆ…¯ûfœˆFœ½aý€¬ˆ…¯Œ_´ˆFœ½ ܈…¯Œ_‚äˆFœ½ ‚ ‰…¯yƒ‰Fœ½g„(‰…¯Œ_…0‰Fœ½û…4‰K”_†8‰`”_†@‰z˜_†H‰”Og‡x‰œhg‰‹«hgŠ˜Œ¹zg‹ÌŒÒzgôŒäzgpözg‘ì zg“hŽzg•ÜŽ.zg—=zg™,cÁg›`ˆËgž ŸËg 8‘©ág¢Ô‘¾]a¥Ü‘Ì]a¥ä‘×]a¥ì‘å]a¥ô‘ô]a¥ü‘]a¥’]a¥ ’]a¥’-]a¥’=]a¥$’L]a¥,’_]a¥4’o]a¥<’]a¥D’]a¥L’›]a¥T’§hg¥H”·vi¦|”ʃi§¬”Þvi¨¼•õvi©ô—viªܘvi«Ä™.ƒi¬ì™Bvi­`šPƒi®ˆšXƒi¯¸šfƒi°àšsƒi±›‚ƒi²0›ƒi³l›§vi´ ›¹›iµÌ›Ïvi·ð›àvi¸œñƒi¹0œúviºèœ vi»Ĥƒi¼ø¤+ƒi½,¥@ƒi¾`¥U¾i¿h¥hƒi¿œ¥{viÀL¦viÁ4ª¢hgª´viÃĪÂviÄ«ÏviÅì«äviÆø«øviÇ­ jÈ$® 3jʯ= CjÌ8¯O vjÍ8°i vjÎ`°‡ vjÏ`±¡ ì/Ðh±· ¿jÐÀ²ß ÍjÔȲé àjÔвC  kÔµl qlØX¶‚ KÙ¨¶ ¹lÛܶ» ælÞ·Ò enàÀ· Ünéð·= Uoî¹à po÷¹Ù „oø`¹ê “oú˜¹M pû”º…¯ÁÕý¤ºFœ½ûþ¸º…¯ÕúÿȺFœ½û຅¯ÕúðºFœ½û»…¯Õú»Fœ½pH»…¯Œ_P»Fœ½pX»…¯Œ_`»Fœ½ph»…¯Œ_ p»Fœ½p x»…¯Œ_ €»Fœ½p ˆ»…¯Õú ˜»Fœ½(pD¼…¯ÕúT¼Fœ½1p¤¼…¯Õú´¼Fœ½û̼…¯ÕúܼFœ½ûô¼…¯Œ_ü¼Fœ½p$½…¯Õú4½Fœ½ûL½…¯Õú\½Fœ½ûp½…¯Õú€½Fœ½û”½…¯Õú¤½Fœ½û¸½…¯ÕúȽFœ½û ܽ…¯Õú!ì½Fœ½p"¾…¯Õú#(¾Fœ½û$@¾…¯Õú%P¾Fœ½û&h¾…¯Õú'x¾Fœ½û(¾…¯Õú) ¾Fœ½û*X¿…¯Õú+h¿Fœ½-ù,x¿…¯Õú-ˆ¿Fœ½-ù.˜¿…¯Õú/¨¿Fœ½û0Ä¿…¯Õú1Ô¿Fœ½û2ä¿…¯Õú3ô¿Fœ½û4À…¯Õú5ÀFœ½-ù6$À…¯Õú74ÀFœ½û8HÀ…¯Õú9XÀFœ½û:„À…¯Cp;œÀFœ½p=´À…¯Õú>ÄÀFœ½û?àÀ…¯Õú@ðÀFœ½pAÁ…¯ÕúBÁFœ½pC(Á…¯ÕúD8ÁFœ½pELÁ…¯ÕúF\ÁFœ½-ùG„Á…¯ÕúH”ÁFœ½pIÀÁ…¯ÕúJÐÁFœ½ûKðÁ…¯ÕúLÂFœ½ûM$Â…¯ÕúN4ÂFœ½ûOXÂ…¯ÕúPhÂFœ½1pQäÂ…¯ÕúRôÂFœ½-ùSÃ…¯ÕúTÃFœ½-ùU$Ã…¯Œ_V,ÃFœ½ûV0Ã…¯mpWHÃFœ½-ùYpÃ…¯ÕúZ€ÃFœ½û[œÃ…¯Õú\¬ÃFœ½-ù]ÔÃ…¯Õú^äÃFœ½û_Ä…¯Œ_`ÄFœ½-ù`Ä…¯Õúa,ÄFœ½ûbDÄ…¯ÕúcTÄFœ½-ùddÄ…¯ÕúetÄFœ½pfˆÄ…¯Õúg˜ÄFœ½ûh¬Ä…¯upiÌÄFؤ€plDÇFskŒ_mPÇFê¤ßkmÌÇFù¤ŒpmØÇF ¥’pmèÇ…¯ÕúmøÇFœ½ûn´Ê…¯ÕúoÄÊFœ½-ùpØÊ…¯ÕúqèÊFœ½-ùrøÊ…¯ÕúsËFœ½1pt Ë…¯Õúu0ËFœ½-ùv@Ë…¯ÕúwPËFœ½1px`Ë…¯ÕúypËFœ½-ùz€Ë…¯Œ_{ˆËFœ½-ù{ŒË…¯Õú|œËFœ½-ù}¬Ë…¯Õú~¼ËFœ½-ùÌË…¯Õú€ÜËFœ½-ùìË…¯Õú‚üËFœ½-ùƒ Ì…¯Õú„ÌFœ½¥p…,Ì…¯«p†<ÌFœ½1p‡PÌ…¯Õúˆ`ÌFœ½û‰xÌ…¯ÕúŠˆÌFœ½û‹¤Ì…¯ÕúŒ´ÌFœ½¥pÄÌ…¯«pŽÔÌFœ½1pèÌ…¯ÕúøÌFœ½û‘Í…¯Õú’ÍFœ½¥p“(Í…¯«p”8ÍFœ½1p•LÍ…¯Õú–\ÍFœ½-ù—lÍ…¯Õú˜|ÍFœ½-ù™ŒÍ…¯ÕúšœÍFœ½-ù›¬Í…¯Õúœ¼ÍFœ½-ùÌÍ…¯ÕúžÜÍFœ½-ùŸìÍ…¯Õú üÍFœ½-ù¡ Î…¯Õú¢ÎFœ½1p£ŒÎ…¯Õú¤œÎFœ½1p¥¬Î…¯Õú¦¼ÎFœ½-ù§ÌÎ…¯Õú¨ÜÎFœ½-ù©ìÎ…¯ÕúªüÎFœ½-ù« Ï…¯Õú¬ÏFœ½û­,Ï…¯Õú®<ÏFœ½û¯LÏ…¯Õú°\ÏFœ½û±xÏ…¯Õú²ˆÏFœ½-ù³˜Ï…¯Õú´¨ÏFœ½-ùµ¸Ï…¯Õú¶ÈÏFœ½p·ÜÏ…¯Õú¸ìÏFœ½-ù¹üÏ…¯Õúº ÐFœ½p» Ð…¯Õú¼0ÐFœ½p½DÐ…¯Õú¾TÐFœ½p¿hÐ…¯ÕúÀxÐFœ½ûÁÐ…¯Õú ÐFœ½-ùðЅ¯ÕúÄÀÐFœ½-ùÅÐÐ…¯ÕúÆàÐFœ½ûÇøÐ…¯ÕúÈÑFœ½-ùÉ@Ñ…¯ÕúÊPÑFœ½ûËhÑ…¯ÕúÌxÑFœ½-ù͈х¯Œ_ÎÑFœ½-ùΜх¯ÕúϬÑFœ½-ùÐÀÑ…¯ÕúÑÐÑFœ½-ùÒèÑ…¯ÕúÓøÑFœ½-ùÔÒ…¯ÕúÕ ÒFœ½-ùÖ8Ò…¯Õú×HÒFœ½-ùؼ҅¯ÕúÙÌÒFœ½-ùÚ@Ó…¯ÕúÛPÓFœ½-ùÜ`Ó…¯ÕúÝpÓFœ½-ùÞ€Ó…¯Œ_߈ÓFœ½-ùߘӅ¯Õúà¨ÓFœ½ûáÀÓ…¯ÕúâÐÓFœ½-ùãDÔ…¯ÕúäTÔFœ½-ùåÈÔ…¯ÕúæØÔFœ½-ùçLÕ…¯Õúè\ÕFœ½-ùéÐÕ…¯ÕúêàÕFœ½-ùëðÕ…¯ÕúìÖFœ½-ùíÖ…¯Õúî ÖFœ½-ùï0Ö…¯Õúð@ÖFœ½1pñPÖ…¯Õúò`ÖFœ½ûóxÖ…¯ÕúôˆÖFœ½-ùõ˜Ö…¯Õúö¨ÖFœ½-ù÷¸Ö…¯ÕúøÈÖFœ½-ùùØÖ…¯ÕúúèÖFœ½½pû×…¯Õúü×Fœ½ûý8×…¯ÕúþH×Fœ½pÿ\×…¯Cpt×Fœ½pŒ×…¯Õúœ×Fœ½-ù¬×…¯Õú¼×Fœ½ûÔ×…¯Õúä×Fœ½-ùø×…¯Õú ØFœ½½p (Ø…¯Õú 8ØFœ½½p XØ…¯Õú hØFœ½½pˆØ…¯Œ_ØFœ½ÉpœØ…¯Œ_¤ØFœ½Ép°Ø…¯Œ_¸ØFœ½½pÄØ…¯Œ_ÌØFœ½Öp䨅¯ÝpôØFœ½épÙ…¯ÁÕÙFœ½û(Ù…¯þ8ÙFœ½\Ù…¯-dŒÙFؤ;dLÚFskŒ_ðÚFê¤ßk$ÛFù¤×l0ÛF ¥EdPÛ…¯NdˆÛFؤ;d%\ÜFskŒ_&ÝFê¤ßk&4ÝFù¤×l&@ÝF ¥Ed&dÝ…¯ûp&tÝFœ½1p'ˆÝ…¯q(˜ÝFœ½.q)¼Ý…¯9q*ÌÝFœ½]q+ðÝ…¯ÁÕ,ÞFœ½û-Þ…¯{q.$ÞFœ½‹q/HÞ…¯©q0XÞFœ½Íq1|Þ…¯Ýq2ŒÞFœ½ r3°Þ…¯ÿ4ÀÞFœ½ r5ÐÞ…¯dr7(ßFœ½ªs@8â…¯ÓsApâFœ½,tGÀâ…¯’'HÐâFœ½ÍI0ã]N_J¬ã>7:J´ãN7:J¼ãc7:JÄãt7:JÌã„7:JÔã—7:JÜãÁ7:JäãyJ ñ&%yKñ3æzLì÷HìzMü÷WìzNøg{OÐø†·{R¨ü© |UÐü¼#|Vèüé#|Vý8|VýE¢ùV@ýY[|Wl|Xôš£|Z ¬¬|[”ʬ|\˜ë¬|]œ¬|^ !8¬|_¤&e¬|`¨+Ь|a¬0©¬|b°5Ú}cì6ó`f,7üá}gh9)L~lø;¦I„qŒk»Q„s kÎd„uàkîaaxŸ¾™˜ ”ŸÀ„™° ՟Ǩ™½ üŸÈü™â & Êø›!“ ËÀœ!¾ Ì8:!Ò ÎDF!û ÏPa!‘¡Ð€{!Õ¡ÑÀŸŽ!î¡Ó ¦!‘¡Ô$ ¿!Ù˜Õl Î! ¢ÖÈ¡ß!¢× ¢ "¢Ùt¢ "`Ûè¢2"0¢Ü@£A"D¢Ýt£w"a¤Þ$®¢"Ťæ˜®²"¥ê¯…¯Õfí¯…¯Œ_î¯FB[“uî4¯…¯“uðL¯ƒ”[‡òT¯ÆÈO×mò¯ÆÈO×l󠝯Mùmóð¯ƒMbvõ0°ÆMnöT°…¯Õf÷d°…¯Œ_øl°FB[“uø„°…¯“uúœ°ƒ”[‡ü¤°ÆÈO×müà°ÆÈO×lýð°ÆMùmý@±ƒMbvÿ€±ÆMn¤±…¯Õf´±…¯Œ_¼±FB[“uÔ±…¯“u챃”[‡ô±ÆÈO×m0²ÆÈO×l@²ÆMùm²ƒMbv вÆMn ô²…¯:¥ ³…¯Œ_³FB[“u4³…¯“uL³ƒ”[ÓlT³ƒí"Ól\³ƒ÷"‡d³ÆÈO×mô³ÆÈO×l´ÆMùm”´ƒMbv µÆMnDµ…¯K¥\µ…¯Œ_dµFB[“u|µ…¯“u”µƒ”[Ólœµƒí"‡¤µÆÈO×m¶ÆÈO×l¶ÆMùmˆ¶ƒMbv ô¶ÆMn!·…¯K¥"0·…¯Œ_$8·FB[“u$P·…¯“u&h·ƒ”[Ól(p·ƒí"‡(x·ÆÈO×m(Ü·ÆÈO×l)ì·ÆMùm)\¸ƒMbv+ȸÆMn,츅¯:¥- ¹…¯Œ_0¹FB[“u0,¹…¯“u2D¹ƒ”[Ól4L¹ƒí"Ól4T¹ƒ÷"‡4\¹ÆÈO×m4ì¹ÆÈO×l5ü¹ÆMùm5ŒºƒMbv7»ÆMn8<»…¯:¥9\»…¯Œ_<d»FB[“u<|»…¯“u>”»ƒ”[Ól@œ»ƒí"Ól@¤»ƒ÷"‡@¬»ÆÈO×m@<¼ÆÈO×lAL¼ÆMùmAܼƒMbvCh½ÆMnDŒ½…¯K¥E¤½…¯Œ_G¬½FB[“uGĽ…¯“uIܽƒ”[ÓlK佃í"‡Kì½ÆÈO×mKP¾ÆÈO×lL`¾ÆMùmLоƒMbvN<¿ÆMnO`¿…¯K¥Px¿…¯Œ_R€¿FB[“uR˜¿…¯“uT°¿ƒ”[ÓlV¸¿ƒí"‡VÀ¿ÆÈO×mV$ÀÆÈO×lW4ÀÆMùmW¤ÀƒMbvYÁÆMnZ4Á…¯:¥[TÁ…¯Œ_^\ÁFB[“u^tÁ…¯“u`ŒÁƒ”[Ólb”Áƒí"ÓlbœÁƒ÷"‡b¤ÁÆÈO×mb4ÂÆÈO×lcDÂÆMùmcÔƒMbve`ÃÆMnf„Ã…¯K¥gœÃ…¯Œ_i¤ÃFB[“ui¼Ã…¯“ukÔÔ[ÓlmÜÃí"‡mäÃÆÈO×mmHÄÆÈO×lnXÄÆMùmnÈăMbvp4ÅÆMnqXÅ…¯K¥rpÅ…¯Œ_txÅFB[“utÅ…¯“uv¨Åƒ”[Ólx°Åƒí"‡x¸ÅÆÈO×mxÆÆÈO×ly,ÆÆMùmyœÆƒMbv{ÇÆMn|,Ç…¯”¥}LÇ…¯Œ_€TÇFB[“u€lÇ…¯“u‚„ǃ”[©¥„ŒÇƒí"©¥„”ǃ÷"‡„œÇÆÈO×m„ÈÆÈO×l…(ÈÆMùm…ÄȃMbv‡PÉÆMnˆtÉ…¯Õf‰„É…¯Œ_ŠŒÉFB[“uФɅ¯“uŒ¼Éƒ”[‡ŽÄÉÆÈO×mŽÊÆÈO×lÊÆMùm`ʃMbv‘ ÊÆMn’ÄÊ…¯Ø¥“ÜÊ…¯Œ_•äÊFB[“u•üÊ…¯“u—˃”[Ól™Ëƒí"t™$ËÆÈO×m™ˆËÆÈO×lš˜ËÆMùmšÌƒMbvœtÌÆMn˜Ì…¯¾ùž¨ÌFœ½è¥Ÿ¼Ì…¯ÁÕ ÌÌFœ½û¡àÌ…¯Œ_¢èÌFœ½7l¢ôÌ…¯Œ_£üÌFœ½%¦£”Í…¯Œ_¤œÍFœ½2¦¤¨Í…¯fZ¥¸ÍFœ½©¦¦äÙ…¯Œ_§ìÙFœ½²¦§Ý…¯Œ_¨ÝFœ½»¦¨$Ý…¯fZ©4ÝFœ½Φª€Ý]N_«°Ý…¯¹n«ÀÝÕ#Þ¦¬È݃ç#ßk¬ÔÝû#Þ¦¬Ü݃ $ßk¬èÝ$Þ¦¬ð݃,$ßk¬üÝ=$Þ¦¬ÞƒJ$ßk¬Þƒ†O×l¬Þƒ¹OÁm¬0ÞæCV §¬pÞæCV½s­€ÞæCVÎs®ÐÞæÈO×m°ßæÈO×l±$ßæMùm±`ßæM§³˜ßæMn´¼ß…¯ûpµÌßFœ½1p¶àß…¯5§·ðßFœ½E§¸à…¯c§¹$àFœ½‡§ºHà…¯—§»XàFœ½ŧ¼|à…¯ûp½ŒàFœ½1p¾ à…¯5§¿°àFœ½E§ÀÔà…¯Ú§ÁäàFœ½ï§Âá…¯ûpÃáFœ½1pÄ,á…¯5§Å<áFœ½E§Æ`á…¯c§ÇpáFœ½‡§È”á…¯¨É¤áFœ½1¨ÊÈá…¯F¨ËØáFœ½~¨Ìüá…¯ûpÍ âFœ½1pÎ â…¯5§Ï0âFœ½E§ÐTâ…¯c§ÑdâFœ½‡§Òˆâ…¯¨Ó˜âFœ½1¨Ô¼â…¯F¨ÕÌâFœ½~¨Öðâ…¯ûp×ãFœ½1pØã…¯˜¨Ù$ãFœ½¨¨ÚHã…¯³¨ÛXãFœ½רÜ|ã…¯ûpÝŒãFœ½1pÞ ã…¯˜¨ß°ãFœ½¨¨àÔã…¯ç¨áäFœ½íûèÀä…¯ù¨éåFœ½„EðLå…¯ÁÕñ\åFœ½ûòpå…¯þó€åFœ½ô¤å…¯ÁÕõ´åFœ½ûöÈå…¯þ÷ØåFœ½øüå…¯ ©ù æFœ½ ©ú0æ…¯0©ûHæFؤ-ýÔçFskŒ_þàçFê¤ßkþhèFù¤ÓlþtèF ¥7þ€è…¯K©þ°èFؤ-,ëFskŒ_8ëFê¤ßkìFù¤ÓlìF ¥7Dì…¯ŽLTìFœ½ï`„ì]N_´ì…¯¹nÄìç$\©Ììƒò$ßkØìÿ$\©àìƒ%ßkìì%\©ôìƒ'%ßkí1%\©íƒ’Ôßk탆O×l탹OÁm4íæCV‰©tíæCV½s„íæCVÎs ÔíæÈO×m îæÈO×l (îæMùm dîƒ<%ßkˆîæM˜©ÀîæMnäî]N_üî…¯¹n ï¥%°©ïƒµ%ßk ïÇ%°©(ïƒØ%ßk4O×l<OÁmTïæCVÝ©”ïæCV½s¤ïæCVÎsôïæÈO×mðæÈO×l,ðæMùmhðæMì© ðæMnÄð]N_Ðð…¯Œ_Øð7&ªàðƒH&ßkìð\&ªôðƒk&ßkñ}& ªñƒ&ßkñƒ†O×l<ñƒ¹OÁmTñæCVeª,òæCV½s<òæCVÎsóæÈO×m ´óæÈO×l!ÄóæMùm!ôƒŸ&¨ª#ôôƒÏ&òú$ÄõæMîª%ˆöæMn&¬ö…¯ŽL'¼öƒqPÓl(Äö…¯ŽL(ÔöƒqPÓl)Üö…¯Œ_)äö…¯Ü«)ôö†qPÓl*÷…¯ã«*÷†qPÓl+$÷…¯ï«+4÷à&ö«,@÷…¯–*.X÷ƒQ‡0`÷ƒUMÓl0h÷ƒ†O×l0p÷ƒ¹OÁm0ˆ÷æÈO×m0è÷æÈO×l1ø÷æMùm1Pøƒ}l‡3\øƒõ&Ól3høƒþ&…™3 ùÆÒvÓl4@ùæMû4ùæMn5´ù'e¬6Àù…¯s¬8ØùƒQÓl:àùƒUM¬:èùƒ†O×l:ðùƒ¹OÁm:úæÈO×m:húæÈO×l;xúæMùm;ØúæMá¬=,ûæMn>Pû2' ­?\û…¯%­B|ûƒQÓlE„ûƒUM¬EŒûƒ!Q=­E”ûƒ†O×lEœûƒ¹OÁmE´ûƒU5ÓlE¼ûƒn5ßkEÄûƒ’5ßkEÌûƒ¡5¤²EÔûƒ¶5ÓlEÜûƒÍ5ßkEäûƒæ5ßkEìûƒ5 ÓlEôûƒ6ßkEüûƒ'6tEüƒ<6ßkE üƒQ6ßkEüƒk6ž¤Eüƒx6ž¤E$üƒŠ6ßkE,üƒ›6ßkE4üƒ©6¬²E<üƒÃ6ßkEDüƒã6ßkELüƒ 7´²ETüƒ7ž¤E\üƒ97¼²EdüƒK7¬Elüƒ^7ͲEtüƒ|7ßkE|üƒ’7¦¤E„üƒ§7ßkEŒüƒ¼7¤²E”üƒÎ7ž¤Eœüƒá7ßkE¤üƒ÷7×lE¬üƒ 8twE´üƒ8twE¼üƒ28twEÄüƒJ8twEÌüƒa8ßkEÔüƒu8ßkEÜüƒ‡8ßkEäüƒ¤8tEìüƒ³8ÓlEôüƒ×8ÓlEüüƒû8ÓlEýƒ#9ײE ýƒ09ßkEýƒ@9ßkEýƒV9ã²E$ýƒa9ßkE,ýƒo9ßkE4ýƒŽ9ßkE<ýƒ 9tEDýƒ´9ßkELýƒÆ9ßkETýƒÔ9ßkE\ýƒð9tEdýƒ:ßkElýƒ:ßkEtýƒ$:ßkE|ýƒ>:ßkE„ýƒQ:ßkEŒýƒd:ÓlE”ýƒ{:tEœýƒ:ßkE¤ýƒš:ßkE¬ýƒ³:tE´ýƒ¾:tE¼ýƒÌ:ßkEÄýƒÚ:é²EÌýƒæ:tEÔýƒú:ßkEÜýƒ ;ž¤Eäýƒ";ßkEìýƒ6;ßkEôýƒX;ßkEüýƒt;ßkEþƒ;ßkE þƒ;ßkEþƒÁ;ßkEþƒÛ;×lE$þƒû;ÓlE,þƒ<ÓlE4þƒ<ßkE<þƒ3<ž¤EDþƒE<ßkELþƒW<ï²ETþƒf<ßkE\þƒ€<ßkEdþƒ<ßkElþƒž<×lEtþƒ¬<ßkE|þƒ½<¤²E„þƒÍ<ßkEŒþƒÛ<ßkE”þƒñ<ßkEœþƒÿ<ßkE¤þƒ =ßkE¬þƒ=ßkE´þƒ(=õ²E¼þƒ8=ßkEÄþƒJ=¤²EÌþƒS=ÓlEÔþƒp=ßkEÜþƒ=ßkEäþƒ=ßkEìþƒ¦=ßkEôþƒÄ=ßkEüþƒâ=ßkEÿƒì=ßkE ÿƒ >ßkEÿƒ>ßkEÿƒ,>ßkE$ÿƒ>>ßkE,ÿƒZ>ŽLE8ÿƒs>štFDÿƒ—>štGPÿƒ¦>û²H\ÿƒ»>ŽLIhÿƒÒ>štJtÿƒë>štK€ÿƒ?štLŒÿƒ,?³M˜ÿƒA?štN¤ÿƒV?štO°ÿƒp? ³P¼ÿƒ}? ³QÈÿƒ?štRÔÿƒ ?štSàÿƒ®?³TìÿƒÈ?štUøÿƒè?štVƒ@³Wƒ@ ³Xƒ>@(³Y(ƒP@:³Z4ƒc@E³[@ƒ@P³\Lƒ–@št]Xƒ«@û²^dƒ½@ ³_pƒÐ@št`|ƒæ@¹naˆƒú@Z³b”ƒAZ³c ƒ!AZ³d¬ƒ9AZ³e¸ƒPAštfădAštgЃvAšth܃“A³i胢AŽLjôƒÆAŽLkƒêAŽLl ƒBc³mƒBštn$ƒ/Bšto0ƒEBp³p<ƒPBštqHƒ^BštrTƒ}Bšts`ƒB³tlƒ£BštuxƒµBštv„ƒÃBštwƒßB³xœƒõBšty¨ƒCštz´ƒCšt{Àƒ-Cšt|̃@Cšt}؃SCŽL~äƒjC³ðƒCšt€üƒ‰Cštƒ¢C³‚ƒ­C³ƒ ƒ»Cšt„,ƒÉCw³…8ƒÕC³†DƒéCšt‡PƒøC ³ˆ\ƒDšt‰hƒ%DštŠtƒGDšt‹€ƒcDštŒŒƒ|Dšt˜ƒŒDštޤƒ°Dšt°ƒÊD¹n¼ƒêDŽL‘ȃ÷DŽL’Ôƒ Ešt“àƒ"E ³”ìƒ4Ešt•øƒFE~³–ƒUEšt—ƒoEšt˜ƒ~Ešt™(ƒE¹nš4ƒ›Ešt›@ƒ¬Eû²œLƒ¼EštXƒÊEštždƒàEštŸpƒîEšt |ƒøEšt¡ˆƒ Fšt¢”ƒF…³£ ƒ'Fšt¤¬ƒ9Fû²¥¸ƒBFŽL¦Äƒ_Fšt§ÐƒnFšt¨Üƒ|Fšt©èƒ•Fštªôƒ³Fšt«ƒÑFšt¬ ƒÛFšt­ƒøFšt®$ƒ Gšt¯0…¯Œ³°¸æÈO×m\æÈO×l læMùm hG'µ"xƒ%G:µ'؃FG{µ*ƒRG–*+¨ƒaG–*-4ƒoG¶µ/ ƒG¶µ2¨ ƒŸGŽL5È ƒ³G–*64!ƒÏG–*8P!îG¶:X"æML¶;*æMn<<*…¯ŽL=L*Fœ½…™>\*…¯Œ_?d*Fœ½…™?Œ*…¯Œ_@”*Fœ½p@œ*…¯Œ_B¤*Fœ½pB¬*…¯Œ_D´*Fœ½Ì*DÀ*…¯–*EØ*Fœ½ûG+ƒ¸Hw.H+ƒÎHÓlH+ƒßH—¶H +ƒðHÓlH(+ƒÿHÓlH0+ƒ IßkH8+ƒIŸ¶H@+…¯°¶H€+æÈO×mOp,æÈO×lP€,æMùmPT-ƒ'ID·RØ-æM ^R”.æMnS¸.…¯‘¸T6ƒ]J™¸V6ƒwJßkV6ƒU5ÓlV,6ƒn5ßkV<6ƒ’5ßkVL6ƒ¡5¤²V\6ƒ¶5ÓlVl6ƒÍ5ßkV|6ƒæ5ßkVŒ6ƒJÓlV˜6ƒ6ßkV¨6ƒ'6tV¸6ƒ<6ßkVÈ6ƒQ6ßkVØ6ƒk6ž¤Vè6ƒx6ž¤Vø6ƒŠ6ßkV7ƒ›6ßkV7ƒÃ6ßkV(7ƒã6ßkV87ƒ©6¬²VH7ƒ 7´²VX7ƒ7ž¤Vh7ƒ97¼²Vx7ƒK7¬Vˆ7ƒ^7ͲV˜7ƒ¥JtV¤7ƒ|7ßkV´7ƒ’7¦¤VÄ7ƒ§7ßkVÔ7ƒ¼7¤²Vä7ƒÎ7ž¤Vô7ƒá7ßkV8ƒ÷7×lV8ƒ 8twV$8ƒ8twV48ƒ28twVD8ƒJ8twVT8ƒa8ßkVd8ƒu8ßkVt8ƒ‡8ßkV„8ƒ¤8tV”8ƒ³8ÓlV¤8ƒ×8ÓlV´8ƒû8ÓlVÄ8ƒ#9ײVÔ8ƒ09ßkVä8ƒ@9ßkVô8ƒV9ã²V9ƒa9ßkV9ƒo9ßkV$9ƒŽ9ßkV49ƒ 9tVD9ƒ´9ßkVT9ƒÆ9ßkVd9ƒÔ9ßkVt9ƒð9tV„9ƒ:ßkV”9ƒ±JÓlV 9ƒ:ßkV°9ƒ$:ßkVÀ9ƒ>:ßkVÐ9ƒQ:ßkVà9ƒd:ÓlVð9ƒ{:tV:ƒ:ßkV:ƒš:ßkV :ƒ³:tV0:ƒ¾:tV@:ƒÌ:ßkVP:ƒÚ:é²V`:ƒæ:tVp:ƒú:ßkV€:ƒ ;ž¤V:ƒ";ßkV :ƒ6;ßkV°:ƒX;ßkVÀ:ƒt;ßkVÐ:ƒ;ßkVà:ƒ;ßkVð:ƒÁ;ßkV;ƒÛ;×lV;ƒû;ÓlV ;ƒ<ÓlV0;ƒ<ßkV@;ƒ3<ž¤VP;ƒE<ßkV`;ƒW<ï²Vp;ƒf<ßkV€;ƒ€<ßkV;ƒ<ßkV ;ƒž<×lV°;ƒ½<¤²VÀ;ƒÍ<ßkVÐ;ƒÛ<ßkVà;ƒñ<ßkVð;ƒÿ<ßkV<ƒ =ßkV<ƒ(=õ²V <ƒ8=ßkV0<ƒJ=¤²V@<ƒ=ßkVP<ƒS=ÓlV`<ƒp=ßkVp<ƒ=ßkV€<ƒ=ßkV<ƒ¦=ßkV <ƒÄ=ßkV°<ƒâ=ßkVÀ<ƒì=ßkVÐ<ƒ >ßkVà<ƒ>ßkVð<ƒ,>ßkV=ƒ>>ßkV=éZ©¸V\=ƒÖJ¾¸X@ƒñJĸX<@ƒ Kž¤YPAƒK…™YèAƒBK¼²ZlBƒ\K…™ZÔBƒmKž¤[øBƒŒKòú[ CƒK÷¹\¤DƒºK1º]ØEƒ%G:µ^ìEƒÔKCºaPnFœ½0Æ>`n…¯AÆ? nFœ½îÉF@q…¯ŽLGPqFœ½…™H`q…¯ÊI¼qƒN&ÊKØqƒ L£Fœ½ôã? x£…¯Œ_@ €£Fœ½ä@ Œ£…¯Œ_A ”£Fœ½äA  £…¯Œ_B ¨£Fœ½äB ´£…¯6äC ì£FؤœäI ´¤FskŒ_J X¥Fê¤ßkJ Œ¥Fù¤¯äJ ˜¥F ¥¼äJ ¼¥…¯Œ_J Ä¥Fœ½ÕäJ Ð¥…¯Œ_K Ø¥Fœ½ßäK 䥅¯’'L ô¥Fœ½éäM ¦…¯Œ_N ¦Fœ½¯âN ¦…¯Œ_O ¦Fœ½¯âO ,¦…¯¬×P ”¦Fœ½å[ §…¯Õf\ ,§Fœ½"å] l§…¯Jå^ ¬§Fؤzåe ĨFskŒ_f h©Fê¤ßkf œ©Fù¤åf ¨©F ¥ åf Ì©…¯Œ_f Ô©Fœ½µåf à©…¯ŽLg ð©Fœ½,,h ª…¯ŽLi ªFœ½…™j 4ª…¯yßk LªFœ½…ßm hª…¯’'n xªFœ½—ßo ”ª…¯Œ_q œªFœ½´ßq ¨ª…¯’'r ¸ªFœ½éäs Ȫ…¯Œ_t ЪFœ½Âåt ܪ…¯yßu ôªFœ½Ñåw «…¯îåx P«Fœ½žæ À«…¯Œ_€ È«Fœ½¯â€ Ô«…¯Œ_ Ü«Fœ½¯â è«…¯¬×‚ P¬Fœ½-ù Ĭ…¯ªØŽ ,­Fœ½’ç™ ,°…¯ŽLš <°Fœ½,,› T°…¯’'œ d°Fœ½½ç |°…¯yßž ”°Fœ½Ñå  °°…¯yß¡ ȰFœ½½ç£ ±…¯Œ_¤ ±Fœ½½ç¤ 8±…¯Œ_¥ @±Fœ½è¥ L±…¯Œ_¦ T±Fœ½è¦ x±…¯@è§ ˜±Fœ½åª ð±…¯•è« ²Fœ½å® 8²…¯Œ_¯ @²Fœ½?¯ L²…¯¢è° \²Fœ½?± l²…¯¯è² Œ²Fœ½éµ ³…¯Œ_¶ ³Fœ½8é¶ ³…¯”¢· ,³Fœ½Oé¹ D³…¯Xéº ´³Fؤ©éÆ ÀµFskŒ_Ç ˜¶Fê¤ßkÇ ð¶Fù¤ÊÌÇ ü¶F ¥·éÇ 4·…¯ÄéÇ \·Fœ½êË Ð·…¯ŽLÍ à·Fœ½FûÎ ¸…¯Œ_Ï ¸Fœ½êÏ D¸…¯Œ_Ð L¸Fœ½'êÐ `¸…¯Œ_Ñ h¸Fœ½JêÑ ¤¸…¯–*Ó ¼¸Fœ½iêÕ ¹…¯?fÖ 0¹Fœ½rêÙ d¹…¯º–Û |¹Fœ½¯êÝ œ¹…¯ø–ß ¼¹Fœ½ûâ ๅ¯ì—ã ºFœ½ßêé Tº…¯Œ_ë \ºFœ½ÿêë Ôº…¯Œ_ì ܺFœ½ëì \»…¯ì—í ”»Fœ½Eëó ¼…¯ì—õ X¼Fœ½cëû  ¼…¯ì—ý ؼFœ½ë!l½…¯ì—!¤½Fœ½«ë !ì½…¯Õú !ü½Fœ½·ë!(¾…¯Œ_!0¾Fœ½Èë!P¾…¯Œ_!X¾Fœ½Èë!x¾…¯Œ_!€¾Fœ½×ë!„¾…¯Õú!”¾Fœ½·ë!À¾…¯àë!ؾFœ½·ë! ¿ƒS]Wì!¿ƒc]lì!¿ƒi•Ͳ!$¿ƒr]ì!,¿ƒ}]Wì!4¿ƒ‰]”ì!<¿ƒ˜]”ì!D¿…¯ ì!„¿É] í$!пô]í(! À]N_-!DÀ…¯¹n-!TÀ¯^Hí.!\Àƒ¾^ßk.!hÀÏ^Hí.!pÀƒß^ßk.!|Àñ^Hí.!„Àƒý^ßk.!Àƒ†O×l.!˜Àƒ¹OÁm.!°ÀæCVuí.!ðÀæCV½s/!ÁæCVÎs0!PÁæÈO×m2!ŒÁæÈO×l3!œÁæMùm3!ØÁæM„í5!ÂæMn6!4Â…¯Õf7!DÂFœ½Â8!TÂ…¯‘í9!lÂFœ½…™;!ÜÂ…¯³!,ÃFœ½ÞíA!TÃ_#îC!`Ã…¯`îG!ˆÃƒQ›îK!ÃUM·îK!˜Ãƒ!QÎîK! Ãƒ=QÎîK!¨Ãƒ†O×lK!°Ãƒ¹OÁmK!ÈÃæÈO×mK!TÄæÈO×lL!dÄæMùmL!èÄæMLïN!dÅæMnO!ˆÅ…¯Œ_P!ÅFœ½YïP! Åƒô_ÊÌQ!¨Åƒÿ_xïQ!°Åƒ`€ïQ!¸Åƒ!`­Q!ÀŃ1`­Q!ÈŃB`ˆïQ!ÐÅ…¯ŽïQ!ƃZ`€ïW!ƃp`­W! ƃˆ`­W!,ƃ›`ÊÌW!8ƃ£`ªïW!\Æ…¯³ïX!tÆFœ½…ßZ!Æ…¯¿ï[!¨ÆFœ½—ß]!ÀÆ…¯Œ__!ÈÆFœ½´ß_!ÔÆ…¯Íï`!äÆFœ½Oða!dÇ…¯•ðb!ÄÇFœ½ñl!,È…¯Tñm!¼ÈFœ½ñ}!Ê…¯Gò~!ˆÊFœ½ÛòŠ!0Ë…¯ó‹!°ËFœ½ñ™!lÌ…¯Îóš!ôÌFœ½ñ©!¼Í…¯Jôª!ÎFœ½õ´!øÎ…¯Tõµ!pÏFœ½ñÂ!Ð…¯öõÃ!œÐFœ½ñÑ!`Ñ…¯iöÒ!ØÑFœ½ñß!\Ó…¯þöà!¬ÓFœ½´÷è!XÔ…¯Íïé!hÔFœ½ü÷ê!¸Ô…¯þöë!ÕFœ½´÷ó!dÕ…¯"øô!tÕFœ½aýõ!˜Õ…¯Œ_ö! ÕFœ½7øö!¬Õ…¯Cøø!ÜÕFœ½føý!Ö…¯Œ_ÿ!ÖFœ½¼øÿ!LÖ…¯þö"œÖFœ½´÷"ìÖ…¯1ù "üÖFœ½Iù "H×]N_ "`×…¯¹n "p×®a^ù "x׃µaßk "„×¾a^ù "Œ×ƒÆaßk "˜×ƒ†O×l " ×ƒ¹OÁm "¸×æCV‹ù "ø×æCV½s"ØæCVÎs"XØæÈO×m"€ØæÈO×l"ØæMùm"ÌØæMšù"ÙæMn"(Ù…¯¹n"8Ù«b¡ù"@Ùƒºbßk"LÙÌb­ù"TÙƒÛbßk"`Ùíbºù"hÙƒúbßk"tÙ cÇù"|Ùƒcßk"ˆÙ-cºù"Ùƒ>cßk"œÙRcÖù"¤Ùƒicßk"°Ùƒcêù"¸Ùƒ‘cßk"ÄÙ¢c¡ù"ÌÙƒ¯cßk"ØÙ¿cêù"àÙƒÏcßk "ìÙâcêù "ôÙƒöcßk!"Ú dú!"Úƒ'dßk""ÚDd%ú""ÚƒRdßk#"(Úcd@ú#"0Úƒqdßk$"<Ú‚d`ú$"HÚƒ“dßk&"TÚƒ†O×l&"\Úƒ¹OÁm&"tÚ…¯»ú&"„ÚƒqPÅú'"ŒÚ…¯#û'"œÚƒqP.û("¤Ú…¯ûp("´ÚƒqPû)"¼Ú…¯ìû)"ÌÚƒqPùû*"ÔÚ…¯ûp*"äÚƒqPû+"ìÚ…¯¯ü+"üÚƒqPÁü,"Û…¯ÁÕ,"ÛƒqPÌÕ-"Û…¯»ú-",ÛƒqPÅú."4Û…¯ÁÕ."DÛƒqPÌÕ/"LÛ…¯ÁÕ/"`ÛƒqPÌÕ0"hÛ…¯©þ0"|ÛƒqP»þ1"„Û…¯51"˜ÛƒqP»2" Û…¯žÿ2"´ÛƒqP¯ÿ3"¼Û…¯I3"ÔÛƒQe5"ÜÛƒUMr5"äÛ…¯Ð5"ôÛ†qPÅú6"Ü…¯×6"܆qP.û7"$Ü…¯Þ7"4܆qPû8"DÜ…¯å8"T܆qPùû9"dÜ…¯ì9"t܆qPû:"„Ü…¯ó:"”܆qPÁü;"¤Ü…¯ú;"´Ü†qPÌÕ<"ÄÜ…¯<"Ô܆qPÅú="äÜ…¯="ô܆qPÌÕ>"Ý…¯>"݆qPÌÕ?"$Ý…¯?"4݆qP»þ@"DÝ…¯@"T݆qP»A"dÝ…¯$A"t݆qP¯ÿB"„Ý…¯+B"”݆QeC"¤Ý†UMrC"´Ý§dAC"ÄÝ…¯WH"ô݃QÓlM"ü݃UMÓlM"Þƒ!QkM" Þƒ=QqM"ÞƒGQtM"Þƒ†O×lM"$Þƒ¹OÁmM"<Þ…¯Œ_M"DÞÚd¡M"PÞƒëdßkO"\Þÿd¯O"dÞƒeßkP"pÞƒ†O×lP"ŒÞƒ¹OÁmP"¤Þ…¯øP"¼ÞƒQÓlR"ÄÞƒUMR"ÌÞ…¯dR"ÜÞƒqPS"äÞ…¯ÆS"ôÞ†QÓlT"߆UMT"ß…¯ÍT"$߆qPU"4ß…¯iSU"DßFœ½òúV"Xß…¯sSW"hßFœ½‹SX"Œß…¯iSY"œßFœ½òúZ"°ß…¯sS["ÀßFœ½‹S\"äß…¯iS]"ôßFœ½òú^"à…¯sS_"àFœ½‹S`"<à…¯iSa"LàFœ½òúb"`à…¯sSc"pàFœ½‹Sd"”à…¯iSe"¤àFœ½òúf"¸à…¯sSg"ÈàFœ½‹Sh"ìà…¯iSi"üàFœ½òúj"á…¯sSk" áFœ½‹Sl"Dá…¯iSm"TáFœ½òún"há…¯sSo"xáFœ½‹Sp"œá…¯iSq"¬áFœ½òúr"Àá…¯sSs"ÐáFœ½‹St"ôá…¯ÁÕu"âFœ½ûv"â…¯þw"(âFœ½x"Lâ…¯¹ny"\âFœ½z"ðâ…¯Œ_|"øâFœ½"|"ã…¯y}"ãFœ½?|~"(ã…¯Œ_"0ãFœ½^"lã…¯Œ_€"tãFœ½t€"€ã…¯’"ãFœ½œ‚"¨ã…¯ç ƒ"¸ãFœ½„"$ä…¯ÁÕ†"4äFœ½û‡"Hä…¯þˆ"XäFœ½‰"|ä…¯Œ_Š"„äFœ½"Š"”ä…¯ŽL‹"¤äFœ½"Œ"¸ä…¯Œ_"ÀäFœ½4"Ìä…¯Œ_Ž"ÔäFœ½<Ž"àä…¯ûp"ðäFœ½û"På…¯X‘"håFœ½û“"Ìå…¯ÁÕ”"ÜåFœ½û•"ðå…¯Œ–"æFœ½û˜" æIe¸™"ÀæeeâŸ"pç‘e>¡"dè¦e5¤",éÚeö§"péf; «"8ìf í¯"ˆì;fí³"èì…¯Œ_¸"ðì–fÓ ¸"ü샤fßk»"íµfà »"íƒÉfßkÁ"$탆O×lÁ"@탹OÁmÁ"Xí…¯G Á"xíƒQÓlÄ"€íƒUM‡Ä"ˆíƒ!QÓlÄ"í…¯Ë Ä"ÈíƒQÓlÊ"ÐíƒUM‡Ê"Øíƒ!Q{ªÊ"àíƒ=Q”ìÊ"èíƒGQ”ìÊ"ðíƒQQþ Ê"øí…¯‚ Ê"î†QÓlË"î†UM‡Ë"(î†!QÓlË"8î…¯‰ Ë"Hî†QÓlÌ"Xî†UM‡Ì"hî†!Q{ªÌ"xî†=Q”ìÌ"ˆî†GQ”ìÌ"˜î†QQþ Ì"¨î…¯Œ_Ì"ÀîƒàfŽLÌ"äîƒèf…™Í"øî…¯ÕúÎ"ïFœ½ûÏ" ï…¯¡ Ð"0ïFœ½·ëÑ"pï…¯ÕúÓ"€ïFœ½·ëÔ"¬ï…¯àëÖ"ÄïFœ½·ëØ"øï…¯¸ Ú"ðÆ©£¾ùÜ"8ðÆ·£¾ùÜ"XðÆÄ£×lÜ"pð…¯ÐùÜ"€ðFœ½aýÝ"Œð…¯Ø Þ"¤ðFœ½â à"(ñ…¯ö á"PñFœ½â å"Ló…¯ï æ"lóFœ½c é"(ô…¯¸ ê"HôÆ©£¾ùì"hôÆ·£¾ùì"ˆôÆÄ£×lì" ô…¯Ðùì"°ôFœ½aýí"¼ô…¯Œ_î"ÄôFœ½?Ëî"Ôô…¯k ï"ìôFœ½’ ñ"€õ…¯9Eò"õFœ½¤ ó"Äõ]N_ô"€ hÍ ô"D÷]N_õ"x÷…¯Œ_õ"„÷á*xŒ_õ"ˆ÷…¯iSõ"˜÷Fœ½òúö"¬÷…¯ˆF÷"¼÷Fœ½—Fø"à÷…¯iSù"ð÷Fœ½òúú"ø…¯sSû"øFœ½‹Sü"8ø…¯iSý"HøFœ½òúþ"\ø…¯sSÿ"løFœ½‹S#øÓi8# øäiM#@ùüi]a#Hùj”_#Lù-jZ#Tù:j‘#ú†jè #4úªj #Dú±jq #¼úÈj¼ #xû×j¿#¼ûøjÑ#Äû k]a#ÌûkÙ#Ôû)kå#Üû5kå#üû?k~™# üSk #4ü^k#<üok#Dü‚k#Lüšk#Tü¸kN#ÌüÙk˜#dýëk­#¤ýýkÝ#þl "#Ôþ1l4%#„ÿGlP)#ÔÿTlZ+#ðÿglf-#”’l&/#(¬lP2#˜Äl`4#ÀÝla5#ðòla6#mh7#@.mh8#lUm9#gmš:#$‚m£;#P”m!=#ø¬mC#øÄmYJ#¤Öm¢Q#¼ímíW#(n~]#”!nØa# Anìd#ÌXnf# ln7l#0 ƒndr#X ‹nƒw#p ”n¶|#¨ ®nƒ#Ø ¼nƒ†#ô Ènþ‹#„ ÷n/“#  oP˜#\ oaš#¸ 0oaœ# Fo•ž#p doN¢#` uoz¦#t ‘oÊ©#ø ¨o(¬#”Íoi°#´êoï¹#”&p¬Ã#¬MpÚÊ#èˆp Ò#L¨pX ×#°Öp• Ý#Hópð á#xq*!å#´2qd!é#ÈQqM"í# iq‹"ñ#ô‚q #õ#8Ãq7#ý#xÕqM#ÿ#˜ïq$$Ôr7$$rp$$€/rÊ$$ôDr8% $(erR% $0or^% $„rŽ%$Èr&$”±r8&$œ½r8&$¤Ör)$° As¢)!$Ä Rs‰*$$€!`sí*.$À!wsí*0$ "‡s4+2$<"’s”_5$@"±s‹+5$°#Ís‹+7$&çs‹+9$& tí1;$ä<t2A$ø<t"2E$D=Ct€2O$À=Vt£2P$è=xt£2Q$>Žt¾2R$P>¡tÝ2T$L?°t3U$@AºtK4Y$FÆt˜4`$xFÐt¼4c$¬FØtß4g$ðFêt¢5m$ÌGÿtB6t$ØHur6{$I*uõ6ƒ$´I6ui7Š$xJHuÍ7’$dK^uV8›$L}uV8¢$N‰uJ9©$ôOžuˆ9±$ˆP¯uò9·$”QÇu8:¿$œRÖu¶:È$dSèu;Ð$HTýud;Ù$øTv¿;á$V%v$<ë$”V9vL<ó$ WOv$<ú$PW_vo<%œWovL< %ÌWvœ<%X“vú<%€YŸvU=!%¤Z­v0>)%\êv²>0%è\ývP?7%Ô]w?<%<^4w?=% ^Pw°?>%¸^lw3D?%xnswmDH%uå&°ÏÞ>uæ&¼Ïåwç&×€¸xô&X×G€×y' ×[€çz'ÀÛŽ€Ý{'Xܰ€|'xÜ÷€Z}'à܈}"'dÝ«})' Þ%×}-'„ÞCë}1'¨ÞPý}5'äÞs0~7' ߇à€9'ìè¡X>'îЂA'`ïÛw‚C'pðë „E'ñ‚d„J'Hñ‚‰„N'øñp‚…W'Ìò«‚f…^'ó͂݅a'0ôé‚)†d'(öjƒІp't÷„Њ‡'ü A„P‹–', \„h‹™'@ h„©P'Ø r„š‹¤'< ”„ZPª'\ ž„Ô‹°'ü ©„î‹¶'( ¿„Œ¼'d Í„Œ¿'Œ Ú„ŒÁ'¼ ç„%ŒÄ'è ú„1ŒÆ' …1ŒÉ'H $…uŒÌ'ô :…`Ï'Ø j…‰ŽÖ'< …ËŽÞ'T •…æŽã' ¤…š‹é'Ü ´… ï'ü À…Žó'° Ó…û' á…s(, õ…‘(l  †H‘(Ä †À‘(Ô 0†E’(, >†›’!(P k†ú’$(@ †ú’)(8 ¦†Ž”.(È »†m•3( Æ¡•7(¼ ̆¼•:(Ð í†Ø•<(ü ‡ –@(P" =‡:–I(ˆ" X‡ƒ–O( " f‡—U(°# s‡„—[(ð$ ‹‡Í™a( * ¢‡î™f(8* χ>šk(+ ˆ¥šo(¤, ˆò›q(1 &ˆDœu(˜2 Cˆ†œz( 3 nˆ¦¡(°B yˆÜ£‡(¨H ˆˆP¤Œ(I ¢ˆܤ(hI ´ˆø¥‘(¬J ܈¦–(´J êˆ&¦–(¼J  ‰´¦–(ˆL "‰ÿ¦›(”M ]N_Ÿ(¤M …¯Œ_Ÿ(¬M Fœ½§Ÿ(¼M …¯Œ_ (ÄM Fœ½,§ (èM …¯@¡(øM Fœ½H§¢(@N …¯Œ_£(HN Fœ½c§£(TN …¯Œ_¥(\N Fœ½p§¥(P …¯Œ_§( P Fœ½z§§(P …¯Œ_¨( P Fœ½ƒ§¨(,P …¯Œ_©(4P Fœ½š§©(`P …¯ì§«(„P ƒI‰¨¬(ÄP ƒS‰+¨®(Q ƒ]‰G¨°(DQ ƒf‰Ál²(„Q ƒq‰Ál´(¸Q ƒ~‰¬¨¶( R ƒˆ‰æ¨·( R …¯Œ_¸(¨R Fœ½©¸(ÈR …¯Œ_¹(ÐR Fœ½"©¹(ÔR …¯*©º(ìR Fœ½"©¼( S …¯@©½($S Fœ½"©¿(¨S …¯W©À(¸S Fœ½-ùÁ(ÔS ƒ·‰„©Â(ÜS …¯–©Â(ìS æÈO×mÃ( T æÈO×lÄ(0T æMùmÄ(lT æMÁ©Æ(˜T æMnÇ(¼T ]N_È(ÔT …¯¹nÈ(äT OŠΩÉ(ìT ƒbŠßkÉ(øT wŠΩÉ(U ƒŒŠßkÉ( U ƒ†O×lÉ(U ƒ¹OÁmÉ(,U æCVû©É(lU æCV½sÊ(|U æCVÎsË(ÌU æÈO×mÍ(ôU æÈO×lÎ(V æMùmÎ(@V æM ªÐ(xV æMnÑ(œV ƒò‹ÓlÒ(¤V ƒš:ßkÒ(¬V ƒÿ‹ßkÒ(´V ƒ ŒßkÒ(¼V ƒKŒ-ªÒ(ÄV ƒ^ŒßkÒ(ÌV ƒzŒßkÒ(ÔV ƒo9ßkÒ(ÜV ƒ“Œ=ªÒ(äV ƒ,>ßkÒ(ìV ƒ¢ŒßkÒ(ôV ƒºŒßkÒ(üV ƒ >ßkÒ(W …¯CªÒ(|W ƒ;Ÿß(„W ƒAŪß(ŒW ƒKÊÌß(”W ƒWþªß(œW ƒ`«ß(¤W ƒmÐÔß(¬W ƒv«ß(´W ƒŒ«ß(¼W ƒ› «ß(ÈW …¯-«à(X ]N_è(0X …¯¹nè(@X ø’«é(HX ƒŽßké(TX Ž’«é(\X ƒ#Žßké(hX ƒ†O×lé(pX ƒ¹OÁmé(ˆX æCV¿«é(ÈX æCV½sê(ØX æCVÎsë((Y æÈO×mí(PY æÈO×lî(`Y æMùmî(œY æMΫð(ÔY æMnñ(øY ƒÝŽô‡ò(Z ƒëŽÓlò(Z ƒtò(Z ƒž¤ò(Z ƒ'Ólò( Z …¯Õ«ò(PZ æCVê«÷(tZ æCV½sø(„Z æCVÎsù(ÄZ æÈO×mû(|[ æÈO×lü(Œ[ æMùmü(,\ æM¬þ(¸\ æMnÿ(Ü\ …¯Œ_)ä\ Fœ½-¬)] …¯Œ_) ] Fœ½½”),] …¯Œ_)4] Fœ½½”)T] …¯Œ_)\] Fœ½D¬)°] …¯Y¬)Ì] ƒ [x¬)L^ ƒI†¬ )„^ ƒ"cœ¬ )˜^ ÁM«¬ )¨^ P±¬ )¼^ Z̬ )ä^ c׬ )ô^ …¯Œ_)ü^ Fœ½â¬)_ ]N_) _ …¯¹n)0_ ¬ö¬)8_ ƒºßk)D_ Êö¬)L_ ƒÕßk)X_ ƒ†O×l)`_ ƒ¹OÁm)x_ æCV#­)¸_ æCV½s)È_ æCVÎs)` æÈO×m)@` æÈO×l)P` æMùm)Œ` æM2­)Ä` æMn)è` ]N_)a …¯¹n)a AE­)a ƒPßk)$a aE­),a ƒsßk)8a ƒ†O×l)@a ƒ¹OÁm)Xa æCVr­)˜a æCV½s)¨a æCVÎs)øa æÈO×m) b æÈO×l )0b æMùm )lb æM­")¤b æMn#)Èb …¯Ž­$)ðb Fœ½¤­()(c …¯Ž­))Pc Fœ½¤­-)ˆc …¯Œ_.)c Fœ½±­.)œc …¯º­/)Ìc Fœ½Ù­4)ˆd …¯Ž­6)°d Fœ½ç­:)ød …¯Ø0<)e Fœ½«>)@e …¯Ž­?)he Fœ½¤­C) e …¯õ­D)Øe Fœ½¤­J)f …¯Ž­K)*¤~ æÈO×m@*  æÈO×lA*0 æMùmA*¬ æM¾C*€ æMnD*8€ …¯Œ_E*D€ ᶪ¾E*T€ áñª¾F*d€ …¯§¾H*|€ Fœ½¾J*”€ …¯HK*ô€ ƒsk»L*p‚ ƒt™]¿L*„‚ ƒ…™f¿M*˜‚ ƒœ™o¿N*¬‚ ƒµ™x¿O*¸‚ ƒÑ™•¿O*Ü‚ ƒâ™¡¿O*ð‚ ƒø™Ä¿Q*`ƒ …¯Œ_T*ˆƒ ƒsk ÀT*¬ƒ ƒ.š?ÀT*„ ƒAšMÀU*(„ ƒ[šXÀV*D„ ƒtšcÀW* „ …¯Œ_Z*¬„ ᶪ¾Z*¼„ áñª¾[*Ì„ …¯Œ_]*Ø„ ᶪ\¡]*è„ áñªG^*ô„ …¯‡À`*D… Fؤ­h*(‡ FskŒ_i*̇ Fê¤ßki*ˆ Fù¤»i* ˆ F ¥Ãi*,ˆ …¯Œ_i*4ˆ Fœ½Ái*Dˆ …¯ÝÁk*¼ˆ ƒæšóÁl*ìˆ ƒ›Œ_n*8‰ ƒ5›5Ân*x‰ ƒtšAÂp*¬‰ ƒÑ™dÂt*Š ƒN›Âu*PŠ ƒe›ãÂw*ÔŠ ƒœ™öÂy*8‹ ƒŽ›Ã{*˜‹ ƒt™FÃ*è‹ ƒ…™TÃ*8Œ ƒâ™bÃ…*ŒŒ ƒsk3Ĉ*ôŒ ƒÈ›ZĈ* ƒÑ›`Ĉ*4 …¯lĈ*L Fœ½¦ÄŠ*, …¯Œ_‹*8 ᶪ¾Ä‹*h áñªÕÄŒ*¨ …¯Œ_Ž*° Fœ½éÄŽ*¼ …¯òÄ*Ô Fœ½ Å‘*$ …¯*Å’*d Fؤ|Å™*Ü‘ FskŒ_š*¬’ Fê¤ßkš*“ Fù¤ŠÅš*“ F ¥’Åš*H“ …¯Œ_š*P“ Fœ½¸Åš*\“ …¯Œ_›*d“ Fœ½æÅ›*p“ …¯MÆœ*Г FؤTǦ*X• FskŒ_§*ü• Fê¤ßk§*0– Fù¤uǧ*<– F ¥Ç§*h– …¯Eȧ*D— ƒwœŽÈ­*à— ƒ‡œ¹n®*ˆ˜ ƒŽœî¯*”˜ ƒžœŒ_¯*™ ƒ¯œ\ɯ*,™ ƒ¾œ|ɲ*`™ ƒÉœ“ɵ*l™ ƒÞœŒ_µ*š ƒúœÕfµ*˜š ƒ Œ_¶*$› ƒ!æÉ¶*8› ƒ<ïÉ·*H› ƒRx†¸*\› ƒtx†º*p› ƒ‰øÉ¼*Œ› ƒÊ¾*°› ƒ«ŽÈ¿*È› ƒA˜ïÉÀ*ì› ƒ´ ÊÁ*ø› ƒ¾ÓlÁ*œ ƒÍ×lÁ*œ ƒÀ…,ÊÁ*@œ ƒíÔÊÃ*¬œ ƒskVËÆ*Ä ƒú•ËÆ*0ž …¯iSÈ*@ž Fœ½òúÉ*Tž …¯sSÊ*dž Fœ½‹SË*ˆž …¯iSÌ*˜ž Fœ½òúÍ*¬ž …¯°ËÎ*¼ž Fœ½ÇËÏ*àž …¯ÙËÐ*ðž Fœ½ ÌÑ*Ÿ …¯"ÌÒ*$Ÿ Fœ½0ÌÓ*4Ÿ …¯:ÌÔ*DŸ Fœ½CÌÕ*dŸ …¯QÌ×*tŸ Fœ½‘´Ø*ˆŸ ]N_Ù*¸Ÿ …¯¹nÙ*ÈŸ îž8&Ú*П ƒüžßkÚ*ÜŸ  ŸXÌÚ*äŸ ƒŸßkÛ*ðŸ /ŸgÌÛ*øŸ ƒ5ŸßkÜ*  >ŸpÌÜ*  ƒUŸßkÞ*  oŸ8&Þ*$  ƒ|ŸßkÞ*0  ‹Ÿ£2Þ*8  ƒšŸßkß*D  ¬Ÿ8&ß*L  ƒ·Ÿßkß*X  ÄŸ|Ìß*d  ƒÕŸßká*p  éŸ8&á*x  ƒøŸßká*„  ƒ†O×lá*Œ  ƒ¹OÁmá*¤  æÈO×má*(¢ æÈO×lâ*8¢ æMùmâ*¤ æMpÍä*l¥ æMnå*¥ …¯‰Íæ* ¥ ƒqP–Íç*¨¥ …¯Êç*¸¥ ƒqPñÍè*À¥ …¯>Îè*Ø¥ ƒQ×lê*ॠƒUMŠÅê*è¥ …¯žÎê*ø¥ ƒqP¥Îë*¦ …¯óÎë*¦ ƒQ¥Îí* ¦ ƒUMñÍí*(¦ …¯GÏí*8¦ †qP–Íî*H¦ …¯NÏî*X¦ †qPñÍï*h¦ …¯UÏï*x¦ †Q×lð*ˆ¦ †UMŠÅð*˜¦ …¯\Ïð*¨¦ †qP¥Îñ*¸¦ …¯cÏñ*Ȧ †Q¥Îò*ئ †UMñÍò*è¦ …¯Êò*ø¦ Fœ½‰Ïó*(§ …¯Œ_ô*0§ Fœ½õÏô*”§ …¯¹nõ*¤§ Fœ½Ðö*´§ …¯Œ_÷*¼§ Fœ½xÐ÷*è§ …¯Œ_ù*ð§ Fœ½°Ðù*¨ …¯áÐú*¨ Fœ½0Ìû*$¨ …¯Ñü*4¨ Fœ½$Ñý*X¨ …¯JÑþ*h¨ Fœ½vÑÿ*Œ¨ …¯ŽL+œ¨ Fœ½ñÑ+Ш …¯üÑ+ø¨ Fœ½‘´+l© …¯Œ_+t© Fœ½Ò+ˆ© …¯Œ_ +© Fœ½Ò +¤© …¯Œ_ +¬© Fœ½Ò +Щ …¯Œ_ +Ø© Fœ½#Ò +è© …¯,Ò +ª Fœ½:Ò+ ª …¯Œ_+(ª Fœ½CÒ+8ª …¯,Ò+Pª Fœ½LÒ+pª …¯UÒ+ª Fœ½bÒ+Ī …¯lÒ+ìª Fœ½~Ò+« …¯Ê+,« Fœ½‰Ò +<« …¯’Ò!+l« Fؤ¤Ò&+,¬ FskŒ_'+Ь Fê¤ßk'+­ Fù¤~®'+­ F ¥²Ò'+0­ …¯¿Ò'+P­ Fœ½ÎÒ*+œ­ …¯Œ_++¤­ Fœ½ÛÒ++°­ …¯Œ_,+¸­ Fœ½ÛÒ,+Ä­ …¯äÒ-+ä­ Fœ½ÎÒ0+,® …¯óÒ1+l® Fœ½$Ó8+¯ …¯3Ó:+4¯ Fœ½dÓ?+ì¯ …¯Œ_A+ô¯ Fœ½oÓA+ø¯ …¯Œ_B+° Fœ½xÓB+° …¯Œ_D+° Fœ½oÓD+$° …¯Œ_E+,° Fœ½xÓE+p° …¯Œ_G+x° Fœ½oÓG+ˆ° …¯Œ_H+° Fœ½xÓH+̰ …¯Œ_J+Ô° Fœ½oÓJ+à° …¯Œ_K+è° Fœ½xÓK+$± …¯Œ_M+,± Fœ½oÓM+8± …¯Œ_N+@± Fœ½xÓN+|± …¯Œ_P+„± Fœ½oÓP+± …¯Œ_Q+˜± Fœ½xÓQ+Ô± …¯Œ_S+ܱ Fœ½oÓS+è± …¯Œ_T+ð± Fœ½xÓT+,² …¯Œ_V+4² Fœ½oÓV+@² …¯Œ_W+H² Fœ½xÓW+ˆ² …¯Œ_Y+² Fœ½oÓY+œ² …¯Œ_Z+¤² Fœ½xÓZ+ä² …¯Œ_\+ì² Fœ½oÓ\+ø² …¯Œ_]+³ Fœ½xÓ]+8³ …¯Œ__+@³ Fœ½oÓ_+L³ …¯Œ_`+T³ Fœ½xÓ`+Œ³ …¯ßÓb+œ³ Fœ½õÓc+г …¯þÓd+à³ Fœ½!Ôe+ ´ …¯.Ôg+H´ Fœ½@Ôk+|´ …¯UÒm+œ´ Fœ½bÒp+д …¯\Ôq+µ Fœ½|Ôw+Hµ …¯Ôy+ µ Fœ½ÕÔ‚+X¶ …¯ÝÁƒ+h¶ Fœ½äÔ„+„¶ …¯Œ_†+Œ¶ Fœ½•ˆ+”¶ …¯Œ_ˆ+œ¶ Fœ½òÔˆ+¨¶ …¯Œ_Š+°¶ Fœ½±­Š+¼¶ …¯Ø0‹+Ô¶ Fœ½«+· …¯Œ_Ž+ · Fœ½ÕŽ+· …¯Œ_+ · Fœ½Õ+`· …¯Œ_+h· Fœ½Õ+”· …¯+Õ‘+¬· Fœ½7Õ“+Ì· …¯+Õ”+ä· Fœ½HÕ–+ü· …¯UÕ—+$¸ Fœ½¤­›+\¸ …¯ÝÁœ+l¸ Fœ½§+„¸ …¯ÿž+”¸ Fœ½kÕŸ+¤¸ …¯xÕ +l¹ Fœ½ÕÔ·+Á …¯ Ö¸+,Á Fœ½ ×¼+, …¯UÒ¾+L Fœ½°×Á+À …¯É×Â+@à Fœ½ÕÔÐ+ˆÅ …¯Œ_Ñ+Å Fœ½dºÑ+œÅ …¯ëØÒ+ÌÅ Fœ½ Ù×+$Æ …¯ÙØ+TÆ Fœ½WÙÝ+¬Æ …¯äÒÞ+ÌÆ Fœ½ŒÙá+Ç …¯Œ_â+ Ç Fœ½ Ùâ+Ç …¯¿Òã+0Ç Fœ½ÆÙæ+|Ç …¯ØÙè+ôÇ Fœ½ÕÔõ+ˆÎ …¯ÿÚö+èÎ Fœ½ÕÔ,üÐ …¯UÕ,$Ñ Fœ½¤­,\Ñ …¯UÕ,„Ñ Fœ½¤­ ,¼Ñ …¯°Û ,ÌÑ Fœ½¾Û ,àÑ …¯ÇÛ ,ðÑ Fœ½çÛ,Ò …¯õÛ,4Ò Fœ½0Ý,ôÙ …¯Œ_,üÙ Fœ½=Ý, Ú …¯FÝ,$Ú Fœ½TÝ,<Ú …¯UÕ,dÚ Fœ½¤­,œÚ …¯fÝ,¼Ú Fœ½€Ý ,ÜÚ …¯Œ_!,äÚ Fœ½Õ!,ðÚ …¯UÕ",Û Fœ½¤­&,PÛ …¯Ý',€Û Fœ½ÕÔ,,Ü …¯Œ_-,Ü Fœ½¿Ý-,DÜ …¯õ­.,|Ü Fœ½¤­4,¸Ü …¯Œ_5,ÀÜ Fœ½ÐÝ5,Ý …¯Œ_6,Ý Fœ½ÐÝ6,(Ý …¯Œ_7,0Ý Fœ½ÐÝ7,<Ý …¯ÙÝ8,\Ý Fœ½èÝ;,xÝ …¯õÝ<, Ý Fœ½èÝ@,ÔÝ …¯ÞA,äÝ Fœ½,ÞB,ôÝ …¯Œ_C,üÝ Fœ½±­C,Þ …¯9ÞD,`Þ Fœ½ÅÞM,Dß …¯Œ_N,Lß Fœ½ßÞN,\ß …¯€ßP,äß Fؤá_,Œá FskŒ_`,0â Fê¤ßk`,dâ Fù¤-á`,pâ F ¥Bá`,°â …¯®á`,`ã Fؤát,Tæ FskŒ_u,xç Fê¤ßku,äç Fù¤-áu,ðç F ¥Báu,<è …¯Œ_u,Dè Fœ½aãu,Hè …¯UÕv,pè Fœ½¤­z,¨è …¯vã{,¸è Fœ½ˆã|,Ðè …¯Œ_},Øè Fœ½¢ã},äè …¯Œ_~,ìè Fœ½¯ã~,é …¯Ãã,Dé Fœ½~Ò†,<ê …¯!äˆ,Tê Fœ½+äŠ,lê …¯Œ_‹,tê Fœ½±­‹,€ê …¯8äŒ,˜ê Fœ½DäŽ,´ê …¯Œ_,¼ê Fœ½±­,Èê …¯Œ_,Ðê Fœ½Qä,äê …¯Zä‘, ë Fœ½•8•,˜ë …¯ˆä–,Àë Fœ½šäš,ì …¯Œ_œ,ì Fœ½¨äœ,ì …¯±ä,4ì Fœ½åä ,Ðì …¯Œ_£,Øì Fœ½¨ä£,äì …¯!ä¤,üì Fœ½ÿä¦,í …¯Œ_¨, í Fœ½å¨,$í …¯Œ_©,,í Fœ½¨ä©,8í …¯Œ_ª,@í Fœ½ßÞª,Tí …¯å¬,lí Fœ½-ù®,Àí …¯På¯,èí Fœ½`å³,î …¯oåµ,0î Fœ½±8·,Tî …¯Œ_¸,\î Fœ½Âå¸,„î …¯Œ_¹,Œî Fœ½ æ¹,œî …¯Œ_º,¤î Fœ½Gæº,Èï …¯¹n¼,Øï Fœ½‘´½,ìï …¯Œ_¾,ôï Fœ½Xæ¾,ð …¯¹n¿,ð Fœ½‘´À,(ð …¯Œ_Á,0ð Fœ½XæÁ,@ð …¯Œ_Â,Hð Fœ½gæÂ,Tð …¯Œ_Ã,\ð Fœ½gæÃ,hð …¯Œ_Ä,pð Fœ½GæÄ,¼ð …¯~æÆ,üð Fœ½¥æÍ,Dñ …¯KçÐ,\ñ Fœ½ÒÒ,°ñ …¯Œ_Ó,¸ñ Fœ½WçÓ,Äñ …¯dçÔ,ò Fœ½-ùÜ,lò …¯ˆçÝ,Ìò Fœ½±8ç,œó …¯èè,Ìó Fœ½-ùí,ô …¯4èî,Pô Fœ½¼èõ,Xö …¯Œ_ù,`ö Fœ½âèù,lö …¯ïèú,|ö Fœ½øèû,¬ö …¯éü,Üö Fœ½>é-\÷ …¯né-l÷ Fœ½›é-¼÷ …¯µé-ä÷ Fœ½>é -<ø …¯Œ_ -Dø Fœ½Ò -Xø …¯Œ_ -`ø Fœ½Ò -tø …¯Œ_ -|ø Fœ½« -ø …¯Œ_-˜ø Fœ½«-¬ø …¯Ø0-Äø Fœ½«-ôø …¯ê-ù Fœ½«-ù …¯Ø0-0ù Fœ½«-`ù …¯Ø0-xù Fœ½«-¨ù …¯Ø0-Àù Fœ½«-ðù …¯Ø0-ú Fœ½«-8ú …¯Ø0 -Pú Fœ½«"-€ú …¯ê#-ú Fœ½«$-¤ú …¯Ø0%-¼ú Fœ½«'-ìú …¯ê(-üú Fœ½«)-û …¯Ø0*-(û Fœ½«,-Xû …¯ê--hû Fœ½«.-|û …¯Œ_/-„û Fœ½.ê/-”û …¯Œ_0-œû Fœ½`ê0-¬û …¯Œ_2-´û Fœ½‘ê2-Àû …¯!ä3-Øû Fœ½›ë5-0ý …¯Œ_7-8ý Fœ½Q7-Dý …¯ŽL8-Tý Fœ½Q9-hý …¯ŽL:-xý Fœ½Q;-Œý …¯Îë<-¤ý Fœ½!ì>-Ôÿ …¯Ø0?-ìÿ Fœ½«A- …¯Ø0B-4 Fœ½«D-d …¯Ø0E-| Fœ½«G-¬ …¯êH-¼ Fœ½«I-Ð …¯Ø0J-è Fœ½«L- …¯êM-( Fœ½«N-< …¯¹nO-L Fœ½ßÞP-d …¯Ø0R-| Fœ½«T-¬ …¯Ø0U-Ä Fœ½«W-ô …¯Ø0X-  Fœ½«Z-< …¯ê[-L Fœ½«\-` …¯Ø0]-x Fœ½«_-¨ …¯ê`-¸ Fœ½«a-Ì …¯Œ_b-Ô Fœ½«b-à …¯Ø0c-ø Fœ½«e-( …¯+Õf-@ Fœ½«h-€ …¯7ìi-Ð Fؤq-Ì FskŒ_r-| Fê¤ßkr-¸ Fù¤r-Ä F ¥r-ô …¯Ø0r-  Fœ½«t-< …¯Ø0u-T Fœ½«w-„ …¯Œ_x-Œ Fœ½dìx-˜ …¯Œ_z-  Fœ½ìz-¬ …¯UÒ{-Ì Fœ½•ì~-  …¯.Ô-4 Fœ½±8ƒ-d …¯Ÿì„-| Fœ½«ì†-À …¯Ììˆ-à Fœ½çì‹-p …¯ðìŒ-˜ Fœ½í-È …¯í’-Ø Fœ½Uí“-  …¯aí”-Ð Fœ½ví™- …¯QÌ›-$ Fœ½1pœ-8 …¯QÌ-H Fœ½‰íž-\ …¯”í -„ Fœ½ªí¤-° …¯·í¥-Ð Fœ½óí¨-l …¯·í©-Œ Fœ½ î¬-¸ …¯î®-Ø Fœ½/î±-ô …¯<î²-$ Fؤ·- FskŒ_¸-, Fê¤ßk¸-X Fù¤¸-d F ¥¸-ˆ …¯Œ_¸- Fœ½|î¸-Ä …¯ùî¹-\ FؤÂðÊ-è FskŒ_Ë-Œ Fê¤ßkË-À Fù¤ÐðË-Ì F ¥ØðË- …¯åðË-< Fœ½7ºÑ-t …¯ýðÒ-” Fœ½ñÕ-Ð …¯&ñ×- Fœ½ÕÔÞ-¤ …¯Ÿñß-Ô Fœ½Ûñä- …¯åñå-8 Fœ½c8ê-° …¯Ÿñë-à Fœ½!òð- …¯+òñ-< Fœ½~Òõ-€ …¯Œ_÷-ˆ Fœ½éÄ÷-” …¯fòø-¼ Fœ½zòü-ø …¯–òÿ- Fœ½Òò.8 …¯üò.h Fœ½7¼.œ …¯Œ_ .¤ Fœ½éÄ .¸ …¯ó .à Fœ½zò. …¯%ó.L Fؤ|Å.d FskŒ_.p Fê¤ßk.Ô Fù¤ŠÅ.à F ¥’Å. …¯>ó.X Fؤ!.X FskŒ_". Fê¤ßk".D Fù¤".P F ¥".€ …¯Œ_".ˆ Fœ½ì".” …¯UÕ#.¼ Fœ½¤­'.ô …¯kó(. Fœ½zó+.0 …¯Œ_,.8 Fœ½´ó,.x …¯Õó.. Fؤñõ@. FskŒ_A.ä Fê¤ßkA. ! Fù¤ÿõA.,! F ¥öA.l! …¯ÝÁA.|! Fœ½&öB.Ä! …¯Ø0C.Ü! Fœ½«E. " …¯+ÕF.$" Fœ½«H.d" …¯Ø0I.|" Fœ½«K.¬" …¯7öL.ü" FؤT.$ FskŒ_U.Ì$ Fê¤ßkU.% Fù¤U.% F ¥U.D% …¯Ø0U.\% Fœ½«W.Œ% …¯êX.œ% Fœ½«Y.°% …¯`öZ.& Fؤe.À' FskŒ_f.˜( Fê¤ßkf.ð( Fù¤f.ü( F ¥f.4) …¯Œ_f.<) Fœ½ÛÒf.H) …¯äög.Ð) Fؤv÷v.Ô+ FskŒ_w.x, Fê¤ßkw.¬, Fù¤¡÷w.¸, F ¥Æ÷w.- …¯Ø0w.- Fœ½«y.H- …¯ð÷z.€- Fؤø€.x. FskŒ_.(/ Fê¤ßk.d/ Fù¤ø.p/ F ¥%ø.”/ …¯Ø0.¬/ Fœ½«ƒ.Ü/ …¯Ø0„.ô/ Fœ½«†.$0 …¯ê‡.40 Fœ½«ˆ.H0 …¯Ø0‰.`0 Fœ½«‹.0 …¯êŒ. 0 Fœ½«.´0 …¯ÕfŽ.Ä0 Fœ½2ø.Ô0 …¯hø.¼1 Fؤú«.Œ6 FskŒ_¬.<7 Fê¤ßk¬.x7 Fù¤-ú¬.„7 F ¥5ú¬.Ø7 …¯™ú¬.ˆ8 FؤüÀ.€; FskŒ_Á.$< Fê¤ßkÁ.X< Fù¤üÁ.d< F ¥üÁ.¤< …¯Œ_Á.¬< Fœ½>üÁ. = …¯Œ_Â.= Fœ½püÂ.x= …¯ üÃ.ˆ= Fœ½QÄ.,> …¯ÂüÅ.Œ? Fؤ§ÿï.ÈI FskŒ_ð.K Fê¤ßkð.ˆK Fù¤µÿð.”K F ¥½ÿð.L …¯Ø0ð. L Fœ½«ò.PL …¯Œ_ó.XL Fœ½ÛÒó.dL …¯Êÿô.|L Fœ½Øÿö.ØL …¯Õf÷.èL Fœ½Øÿø.$M …¯âÿù.LM Fœ½ç­ý.ÜM …¯Œ_ÿ.äM Fœ½Qäÿ.ôM …¯2/¬N Fؤ/tQ FskŒ_/R Fê¤ßk/LR Fù¤9/XR F ¥[/¨R …¯UÕ/ÐR Fœ½¤­/S …¯‚/(S Fœ½z¼/PS ƒÝ¥ À /XS ƒì¥º /`S ƒý¥º /hS ƒ¦Æ /pS …¯Ï /˜S …¯Œ_$/ S Fœ½dº$/¬S …¯ÝÁ%/¼S Fœ½&/¸U ƒ¡¦¯'/ÀU ƒ´¦¾'/ÈU ƒȦÍ'/ÐU ƒÚ¦Ü'/ØU …¯ë'/V …¯Œ_+/V Fœ½é+/pV …¯Œ_,/xV Fœ½,/´V …¯ -/W ƒ¢§^1/PW ƒ·§k2/ŒW ƒ´ˆ|5/ØW ƒ"‰œ9/ðW ƒ ‰¨;/ X ƒí†¿=/(X …¯Œ_>/4X ᶪÜ>/@X áñªå?/LX …¯óA/dX Fœ½C/|X ]N_E/DY ³¨ŠE/$[ Á¨×H/D[ Ó¨éJ/X[ å¨N/Œ[ ÷¨SQ/T\ ©yW/p\ ©ÜY/(] 0©h[/^ B©h]/h_ S©h_/Ð` i©á a/db z©w c/øc Ž©á f/¤e ©{ h/g ®©¿ j/ g ¿©{ l/€h Ë© n/Œh ß©´o/œq 0ªÑv/Àq Oªy/Xr ‹ªŸƒ/°t ·ªˆ/Xx ͪ•/Øx …¯ÿ’/èx Fœ½å“/øx …¯Œ_•/y Fœ½•/y ƒ+«~–/ y ƒ6«tw–/y ƒA«ßk–/y ƒV«ª¹–/$y …¯³–/Ly …¯øš/„y Fœ½. /t{ …¯_¡/”{ Fœ½.¤/D| …¯µ¥/l| Fœ½.©/Ø| …¯ðª/} Fœ½.°/´ …¯?±/Ô Fœ½.´/D€ …¯Œ_µ/L€ Fœ½Nµ/`€ …¯Œ_¶/h€ Fœ½W¶/t€ …¯Œ_·/|€ Fœ½b·/ˆ€ …¯Œ_¸/€ Fœ½o¸/œ€ …¯Œ_¹/¤€ Fœ½z¹/°€ …¯Œ_º/¸€ Fœ½‰º/Ä€ …¯­»/Ô€ Fœ½ ¼/$ …¯Õf¾/4 Fœ½TÝ¿/\ …¯ÕfÁ/l Fœ½TÝÂ/” …¯'Ä/ä Fœ½.Ì/Ђ …¯ÿÍ/à‚ Fœ½§Î/<ƒ …¯)Ï/lƒ Fœ½.Ô/H… …¯]Õ/p… Fœ½.Ù/È… …¯ŽÚ/è… Fœ½.Ý/<† …¯¬Þ/t† Fœ½.ä/0‡ …¯Œ_å/8‡ Fœ½•Ëå/@‡ …¯öç/¨‡ Fؤ ò/(‰ FskŒ_ó/ä‰ Fê¤ßkó/4Š Fù¤.ó/@Š F ¥6ó/„Š …¯Có/ÔŠ Fœ½eû/‹ Þ«”_ý/ ‹ í«‰ý/@‹ û«þþ/‹  ¬0 ‹ ¬c0Œ ¬y0HŒ *¬*0”Œ ?¬x 0´Œ a¬«0X n¬¾0 ‚¬Ç0˜ ’¬Ò0  ¤¬Ý0Ì ²¬!0ð ج0Ž í¬¸0 Ž ­: 0`Ž #­¦%0„Ž 7­<'0˜ V­¯,0È q­N"10Ø …¯Œ_40à ˜­|"40è ƒ¤­ßk50ô ³­™"50ü ƒ¿­ßk60‘ ƒ†O×l60$‘ ƒ¹OÁm60<‘ æCVU#60’ æCV½s70’ æCVÎs80ä’ æÈO×m:0T“ æÈO×l;0d“ æMùm;0 ” æM$=0Ì” æMn>0ð” …¯m"?0• ƒqP$@0• …¯y@0• ƒqP‰kA0 • …¯¸$A00• †qP$B0@• …¯Ë$B0P• †qP‰kC0`• …¯Œ_C0h• Fê’ŒÌC0x• …¯Þ$C0ˆ• Fœ½ø$D0¨• …¯Œ_F0°• Fœ½/%F0ô• …¯w%I0(– ƒÖ¯®J04– ƒÜc•8J0D– ƒubßkK0X– ƒñ­˜%K0p– ÆÒvÓlK0°– …¯«%K0À– Fœ½¿%L0Ж …¯Œ_M0Ø– Fœ½¨äM0ä– …¯Œ_N0ì– Fœ½Ó%N0ø– …¯Œ_O0— ®â%O0— ƒ'®ßkP0— 8®â%P0— ƒC®ßkQ0(— ƒ†O×lQ0D— ƒ¹OÁmQ0\— ÆÒvÓlQ0¨— …¯6&Q0¸— ƒqP?&R0À— …¯6&R0З ƒqP?&S0Ø— …¯Ð&S0è— †qP?&T0ø— …¯×&T0˜ †qP?&U0˜ …¯Œ_U0 ˜ Fœ½ò&U0`˜ ƒ•®>'V0h˜ ƒ¤®U'V0p˜ ƒ²®‡V0x˜ …¯h'V0˜˜ æÈO×mY0™ æÈO×lZ0™ æMùmZ0|™ ƒ¸®¯®\0¤™ ƒÈ®¯®\0Ì™ ƒÕ®Ü'\0ô™ Ü®(^0š ÆÒvÓl`0„š æM((`0èš æMna0 › …¯9(b0D› Fؤp(h0@œ FskŒ_i0äœ Fê¤ßki0 Fù¤?&i0$ F ¥~(i0L …¯‹(i0„ Fؤp(o0€ž FskŒ_p0,Ÿ Fê¤ßkp0dŸ Fù¤?&p0pŸ F ¥~(p0˜Ÿ …¯Œ_p0 Ÿ Fœ½¦(p0¬Ÿ …¯Œ_q0´Ÿ Fœ½°(q0üŸ ƒ.¯Ï®r0  ƒ:¯¯®r0   ƒG¯Ã(r0  ƒS¯Ã(r0  …¯Ï(r0D  …¯Õfv0T  …¯Œ_w0\  FB[“uw0t  …¯“uy0Œ  ƒ”[‡{0”  ÆÈO×m{0Р ÆÈO×l|0à  ÆMùm|00¡ ƒMbv~0p¡ ÆMn0”¡ …¯Œ_€0œ¡ Fœ½ý(€0ä¡ …¯Œ_0ì¡ Fœ½¨ä0ø¡ …¯Œ_‚0¢ Fœ½ý(‚0H¢ …¯)ƒ0`¢ Fœ½H)…0|¢ …¯Œ_†0„¢ Fœ½•8†0¢ …¯ÿ‡0 ¢ Fœ½•8ˆ0¼¢ …¯né‰0Ì¢ Fœ½•8Š0ࢠ…¯ÿ‹0ð¢ Fœ½•8Œ0£ …¯Y)0£ Fœ½o)Ž0@£ …¯Œ_0H£ Fœ½¨ä0T£ …¯Y)0d£ Fœ½’)‘0œ£ …¯Y)’0¬£ Fœ½’)“0ô£ …¯¾)”0 ¤ Fœ½’)–0H¤ …¯ð)—0p¤ Fœ½œ*›0°¤ …¯­*œ0ठFœ½«,¡0\¦ …¯0-¢0l¦ Fœ½r-£0ˆ¦ …¯¤0°¦ Fœ½÷-¨0ä¦ …¯Œ_©0ì¦ Fœ½¨ä©0§ …¯Œ_ª0 § Fœ½¨äª0§ …¯Œ_«0 § Fœ½ý(«0h§ …¯Œ_¬0p§ Fœ½`.¬0€§ …¯Œ_­0ˆ§ Fœ½m.­0”§ …¯.¯0¼§ Fœ½o)³0ð§ …¯Ç.´0¨ Fœ½Î.µ0¨ r¯ë.·0¨ „¯ñ.·04¨ ¯ñ.¸0P¨ ™¯5/¹0¬¨ ©¯Ê/¼0ü¨ ¸¯0½0(© ïB0¾0d© Ô¯÷0Â0¬© ï¯E1Ä0ô© û¯W1Æ0ª "°Ô1É0|ª 3°/2Ë0°ª C°ï2Í0|« X°T3Ð0ܬ d°P8Ö0Œ³ n°¨8Ù0¼³ ƒ°â8â0Ô³ а 9è0´ ° 9î0T´ ¤°T<ô0ä· º°ß<ø0`¸ ư =û0̸ Ö°:=þ0ظ ñ°‘>ÿ0Tº ±Ø>1°º ±ò>1Ⱥ ,±b?1» <±–? 1,» L±ë@1ļ [±A1ܼ o±oA1 ½ ƒyªÊÌ1(½ ƒ;Ÿ10½ ƒÖ±B18½ ƒß±B1@½ ƒë±B1H½ ƒö±3B1P½ ƒ²B1X½ ƒ²MB1`½ ƒ!²cB1h½ …¯B1À½ ]N_ 1ؽ …¯¹n 1è½ f²(C!1ð½ ƒp²ßk!1ü½ |²(C!1¾ ƒ‡²ßk!1¾ ƒ†O×l!1¾ ƒ¹OÁm!10¾ æCVUC!1p¾ æCV½s"1€¾ æCVÎs#1о æÈO×m%1ø¾ æÈO×l&1¿ æMùm&1D¿ æMdC(1|¿ æMn)1 ¿ ƒë²ßk*1¨¿ ƒþ²×l*1°¿ ƒ³ƒC*1¸¿ …¯›C*1Ø¿ …¯Õf-1è¿ Fœ½¶C.1À …¯Œ_01À Fœ½àC01(À …¯Œ_110À Fœ½ý(11xÀ …¯Õf21ˆÀ Fœ½õC31˜À …¯,Ò41°À Fœ½D61ÈÀ …¯Œ_71ÐÀ Fœ½¨ä71ÜÀ …¯Œ_81äÀ Fœ½dº81ðÀ …¯D91Á Fœ½ªD;10 …¯Œ_<18 Fœ½¨ä<1D …¯Œ_=1L Fœ½¨ä=1X …¯Œ_>1` Fœ½H)>1p …¯Õf?1€Â Fœ½¶C@1˜Â …¯ÕfB1¨Â Fœ½¶CC1À …¯·DE1à Fœ½ªDH18Ä …¯Ç.I1HÄ Fœ½ÒJ1dÄ …¯Ç.K1tÄ Fœ½ÒL1Ä …¯Ç.M1 Ä Fœ½ªDN1ÐÄ …¯Œ_O1ØÄ Fœ½¨äO1äÄ …¯Œ_P1ìÄ Fœ½¨äP1øÄ …¯Œ_Q1Å Fœ½ý(Q1HÅ …¯Œ_R1PÅ Fœ½¨äR1\Å …¯Œ_S1dÅ Fœ½dºS1pÅ …¯ÕfT1€Å Fœ½õCU1Å …¯Œ_V1˜Å Fœ½ùEV1œÅ …¯Ç.W1¬Å Fœ½FX1ÀÅ …¯Ç.Z1ÐÅ Fœ½+F[1àÅ …¯Ç.]1ðÅ Fœ½+F^1Æ …¯BF`1Æ Fœ½bFa1(Æ …¯Fc18Æ Fœ½ÚFd1dÆ …¯ Gf1„Æ Fœ½øèi1¤Æ …¯Õfj1´Æ Fœ½@Gk1àÆ …¯ Gl1Ç Fœ½øèo1 Ç …¯Õfp10Ç Fœ½@Gq1\Ç …¯ Gr1|Ç Fœ½øèu1œÇ …¯Õfv1¬Ç Fœ½@Gw1ØÇ …¯Ç.x1èÇ Fœ½aGy1øÇ …¯ G{1È Fœ½øè~18È …¯Õf1HÈ Fœ½@G€1tÈ …¯Ç.1„È Fœ½F‚1˜È …¯Ç.„1¨È Fœ½F…1¼È …¯–G‡1 É Fœ½ùE1dÉ …¯ÙG1”É Fœ½ùE•1ØÉ …¯Ç.–1èÉ Fœ½ H—1øÉ …¯Õf™1Ê Fœ½¶Cš1 Ê …¯ Gœ1@Ê Fœ½øèŸ1`Ê …¯Õf 1pÊ Fœ½@G¡1œÊ …¯$H¢1ÌÊ Fœ½ùE§1Ë …¯Õf¨1 Ë Fœ½¶C©18Ë …¯ G«1XË Fœ½øè®1xË …¯Õf¯1ˆË Fœ½@G°1´Ë …¯Õf±1ÄË Fœ½¶C²1ÜË …¯$H´1 Ì Fœ½ùE¹1PÌ …¯oHº1hÌ Fœ½{H¼1€Ì …¯Ç.½1Ì Fœ½F¾1¤Ì …¯Ç.À1´Ì Fœ½»HÁ1üÌ …¯Ç.Ã1 Í Fœ½ÒHÄ1Í …¯Ç.Æ1,Í Fœ½ HÇ1<Í …¯Ç.É1LÍ Fœ½éHÊ1\Í …¯Ç.Ì1lÍ Fœ½IÍ1|Í !³IÏ1„Í ,³zIÏ1ìÍ L³JÔ1€Î V³´JÖ1ŒÎ j³AKØ1ÀÎ z³wKÛ1 Ï ‡³’KÝ1$Ï ™³ÔKÞ1¨Ï ¯³Lã1XÐ ijsMè1\Ò Õ³Ní1hÒ ã³ÆNï1 Ò ð³ÆNñ1¸Ò {´GQó1„Ó ƒº´Rö1ŒÓ ƒÄ´=Rö1”Ó ƒö±3Bö1œÓ ƒÕ´SRö1¤Ó ƒ²Bö1¬Ó …¯]Rö1ÜÓ æÈO×mû1€Ô æÈO×lü1Ô æMùmü14Õ æMSþ1ÀÕ æMnÿ1äÕ …¯Œ_2ìÕ Fœ½¯S2Ö …¯¤J2(Ö Fœ½7T2xÖ …¯6&2ˆÖ Fœ½‘T2¼Ö …¯Œ_2ÄÖ Fœ½³T2ØÖ …¯né 2èÖ Fœ½Ò 2üÖ …¯«% 2 × Fœ½•8 2$× …¯ÚT 24× Fœ½ñT2L× …¯ÚT2\× Fœ½ñT2t× …¯Œ_2|× Fœ½¨ä2ˆ× …¯Œ_2× Fœ½ý(2Ø× …¯âM2ð× Fœ½U20Ø …¯Œ_28Ø Fœ½!U2DØ …¯âM2\Ø Fœ½V2ÈØ …¯/V2àØ Fœ½\V!2Ù …¯V$2Ù Fœ½˜V%2$Ù ï´ñW&2üÙ µYX(2¨Ú µâX,2ðÚ &µ¥Y.2€Û …¯Œ_02ˆÛ Fœ½6Z02´Û …¯Œ_12¼Û Fœ½¨ä12ÈÛ …¯WZ22ØÛ Fœ½•832Ü …¯Œ_42Ü Fœ½¨ä42Ü …¯^Z524Ü Fœ½jZ72LÜ …¯WZ92\Ü Fœ½…Z:2pÜ …¯né;2€Ü Fœ½…Z<2¬Ü …¯Œ_=2´Ü Fœ½œZ=2ÀÜ …¯ÿ>2ÐÜ Fœ½•8?2ìÜ =µÒZ@2DÝ …¯ÁÕD2TÝ Fœ½ûE2hÝ …¯þF2xÝ Fœ½G2œÝ ]N_H2,Þ ‡µÓ[H2ß —µ\I2Pß ¢µI\M2ß ³µ\N2üß ½µ±\P2Xà ŵß\Q2¬à Õµ]R2ìà åµÒ^T2äá ñµY_X2,â ûµw_\24â ¶¬_\2´â /¶â_]2Dã B¶C`_2dã a¶X``2tã y¶ac2<ä –¶ìak2¸ä £¶Äbn2ôä ¼¶Mcq2(å Õ¶du2¨å ò¶"dw2°å û¶édw2ìå  ·údz2øå *·ƒe|2,æ B·ìf€2Üæ R·«ˆ2„ç ^·ngŠ2ç r·ÿgŒ2°ç †·!hŽ2Ðç Ž·+h20è ˜·sh“2”è ¥· i–2Øè »·Äiš2@ê Ç·njž2Dë Ô·¤j£2Xë Û·Qk¥2Dì ä·ˆk«2€ì ÷·ák­2$í ¸m¯2Xî  ¸Âm±2Œï ¸Öm³2¤ï +¸N"µ2àï ]N_¸2ìï …¯Œ_¸2ôï m¸5n¸2üï ƒ{¸ßk¸2𠋸;n¸2ð ƒ–¸ßk¹2𠃆O×l¹28𠃹OÁm¹2Pð æCV—n¹2àð æCV½sº2ðð æCVÎs»2Œñ æÈO×m½2Øñ æÈO×l¾2èñ æMùm¾2tò æMØnÀ2ìò æMnÁ2ó …¯Œ_Â2ó …¯9oÂ2(ó ƒqPDoÃ20ó …¯ oÃ2@ó …¯§oÄ2Pó †qPDoÅ2`ó …¯Œ_Å2hó Fœ½®oÅ2tó …¯Œ_Æ2|ó Fœ½ÁoÆ2ˆó …¯Œ_È2ó Fœ½ÍoÈ2œó …¯ÿÉ2¬ó Fœ½ØoÊ2¼ó …¯æºË2Ôó Fœ½ãoÍ2ìó …¯Œ_Ï2ôó Fœ½pÏ2ô …¯Œ_Ñ2ô Fœ½)pÑ2ô …¯Œ_Ó2ô Fœ½ÍoÓ2,ô ]N_Ô28ô …¯Œ_Ô2@ô Ö¸LpÔ2Hô ƒâ¸ßkÔ2Tô ð¸RpÔ2`ô ƒû¸ßkÖ2lô ƒ†O×lÖ2ˆô ƒ¹OÁmÖ2 ô …¯Œ_Ö2¨ô …¯äpÖ2Àô ƒQ¯®Ø2Èô ƒUMv®Ø2Ðô …¯KqØ2àô …¯RqÙ2ðô †Q¯®Ú2õ †UMv®Ú2õ ƒz¹DoÚ2õ ƒ“¹cqÚ2 õ ƒª¹?&Ú2(õ …¯mqÚ2Hõ …¯Œ_Ý2Põ Fœ½„qÝ2|õ …¯K¥Þ2”õ Fœ½qà2ö …¯æºâ2ö Fœ½rä2÷ …¯Œ_æ2 ÷ Fœ½®oæ2,÷ …¯Œ_ç24÷ Fœ½#rç2@÷ …¯Œ_è2H÷ Fœ½m.è2T÷ …¯ÿê2d÷ Fœ½Erë2t÷ …¯Œ_í2|÷ Fœ½`rí2ˆ÷ …¯Œ_î2÷ Fœ½vrî2œ÷ …¯,Òï2´÷ Fœ½Þrñ2ô÷ …¯Œ_ó2ü÷ Fœ½ só2ø …¯Œ_õ2ø Fœ½8sõ2<ø …¯Œ_÷2Dø Fœ½Ps÷2Pø …¯asú2hø Fœ½Ìsü2èø …¯ÿþ2øø Fœ½Øoÿ2 ù …¯Õf3ù Fœ½Þs3,ù …¯Œ_34ù Fœ½t3`ù …¯^Z3xù Fœ½Ñt3<ú ƒè¹u3Dú ƒyªÊÌ3Lú ƒ;Ÿ3Tú …¯2u3tú ƒºŸ 3|ú ƒ ºÓl 3„ú ƒ²®‡ 3Œú …¯Wu 3¬ú …¯fu 3Ìú Fœ½ªu3(û …¯Œ_30û Fœ½¶C3Hû …¯Œ_3Pû Fœ½H)3`û …¯Œ_3hû Fœ½Áu3xû …¯Œ_3€û Fœ½Óu3Œû …¯Œ_3”û Fœ½ïu3 û …¯Õf3°û Fœ½¶C3Èû …¯ v3Øû Fœ½ªD3èû …¯ v 3øû Fœ½!3ü Dºóv"3|ü Wº\w#3<ý mºqw&3äý ƒº€w*3ìý Šº†w*3ôý ¤º™x*3„þ ½ºÆx/3ÿ Òºby23pÿ ãºéy43Èÿ òºz630 »7z93T »!{=3D !»‘|B3 .»£|C3¬ …¯Œ_E3´ Fœ½¼|E3Ø E»ý|G3ä …¯ }I3ü ƒQ×lK3 ƒUM}K3  ƒ†O×lK3 ƒ¹OÁmK3, ƒ ¼~K34 ƒ¼Q~K3< ƒ¼BK3D ƒ5¼m~K3L ƒK¼BK3T ƒ`¼ßkK3\ …¯’~K3” æCVhQ3è æCV½sR3ø æCVÎsS3X æÈO×mU3 æÈO×lV3  æMùmV3Ì æMvX3p æMnY3” …¯}Z3¤ Fœ½›[3È …¯Œ_]3Ð Fœ½ç]3ô …¯!€_3 Fœ½,€`3, …¯:€b3L Fœ½,€e3t …¯ÿg3„ Fœ½Š€h3° …¯Œ_k3¸ Fœ½¯€k3Ü …¯Œ_n3ä Fœ½Ô€n3 …¯Œ_q3 Fœ½ù€q34 …¯Œ_s3< Fœ½ s3H …¯Œ_u3P Fœ½u3\ ]N_w3¼ V¾”_w3À r¾”_w3Ä ‹¾’w3Ì —¾j™w3Ð ¤¾j™w3Ô ¼¾j™w3Ø ;j™w3Ü à¾j™w3ä õ¾j™w3è  ¿žw3 ¿Àx30 ¿‚z3H *¿š‚|3Ð 9¿µ‚~3ì P¿ƒ€3l \¿+ƒ‚3à ¤¿Lƒ„3¨ ¿¿Lƒ‡3T Õ¿aƒŠ3| ß¿uƒŽ3œ 𿊃34 À—ƒ3l #À—ƒ’3¬ 3À0„”3ä NÀ”_•3è `À”_•3ì tÀ”_•3ð ŽÀD„•3° ¤ÀD„˜3\ ºÀD„›3 ÐÀD„ž3´ æÀd„¡3P üÀz„¥3ô ÁŠ„ª3 *Á–„­3¼ =Á¥„±3| PÁ»„´3 aÁ3\ ‚Áõ„¶3À Á…¸3È ±Á9…¸3  ÂÁk…¹34 ÙÁ—…»3\ öÁÁ…½3Ø Âô…Â3 4Â9†È3D TÂr†Î3´ mˆ†Ò3¼ €Â£†Ò3 •Ââ†Ö3ø ªÂ‡Ú3D ËÂF‡Ý3 䃇à3ä úÂ¥‡â30 Ã߇æ3РÈê3 .ÃEˆì3H @Ãzˆï3 fÃ-‰ñ3œ |Ã^‰ô3ø ŠÃ0„ø3X •Ɖù3Œ ¬ÃÕ‰ú3ì ÁÊû3 ! ÐÊü3T! ÞÃLŠý3˜! öÃvŠþ3d" ĤŠ4”" ÄÄŠ4ˆ# :ÄÿŠ 4ð$ ]ÄÿŠ4\& €ÄÿŠ4È' £ÄÿŠ40) ÆÄÿŠ4˜* éÄ2Œ4¼- Å2Œ#4à0 #Å2Œ'44 >Å2Œ+4$7 YÅ2Œ/4D: tÅ2Œ34d= ÅŒ74p? §ÅâŒ:4À@ ÊÅ(=4Àx êÅj™A4Äx ûÅŽA4üx  ÆŽC44y  ƱE4Dy 2ƱF4Ty GÆÉG4Œy QÆÉH4œy _ÆÉI4Ôy kÆÉJ4äy {ÆCK4Pz •Æ„O4dz ¦Æ¬Q4lz ²Æ¬Q4tz ÂÆÚQ4¤z ÛÆÚS4Ôz ñÆß‘U4ü ‚Ç-’]4,€ —Ǹ’e4Œ€ ®ÇI”m4| ÌÇd”o4„ òǰ”o4Ô  Èd”p4Ü ,Èi•p4°† ZÈ„•s4̆ qÈì•v4 ‡ ŠÈ%–y4X‡ ¡È–|4,Š ºÈ£–4HŠ Ìȶ–‚4”Š àÈ—†4àŠ óÈD—ˆ4‹ É]aŽ4‹ DÉw—Ž4P‹ WÉw—4ü‹ hÉ —4Œ tÉ«—‘4lŒ ‘É$˜•4„Œ °Éq˜˜4$Ž ÍÉ·˜™4\ ÛÉŘ›4p ëÉט4„ þÉ队4” Ê.™¡4ð ÊD™£4@‘ :ʲ™¦4<’ cÊP›ª4š |ÊŽ›¯4Hš ŒÊbœ´44› œÊµ4 œ ´Êž·4Pž ÁÊΞ¹4Ÿ ÚÊ¢Ÿº4xŸ ÿÊY ½4  Ë5¡¿4T¡ &Ëá¡Á4¢ 5Ëá¡Ã4ä¢ HË5¡Å4ü£ XËÈ¢Ç4ˆ¤ fË&£É4ð¤ vËJ¤Ê4L¦ å¨Ì4€¦ ‘Ë©¤Ï4̦ Ë©¦Ñ4ܪ ¸Ëe¨Ó4˜± ÇËe©Ö4À² áË·«Ø4d· îË­Û4¸ ̈­ã4¸ Ìs®ç4è¸ 'ÌÊ®ë4¹ >Ì_¯ï4L¹ TÌ7±ô4,Ä cÌj²ú4 Ç ‰Ìç²5È ÌR³5È ÅÌ}³58É ÞÌƳ5ìÉ û̵5<Ñ Í¾¶$5Ò -Í6·)5˜Ò ZÍ·65°Ó h͸>5¤Ô ÍĹE5ìÖ ¢ÍZºI5ì× µÍ÷ºQ5ðØ ÆÍ’»\5tÙ ßÍD¼c5Ú ñͬ¼h5ÔÛ ÎǼm5ðÛ ,Îæ¼q5(Ü ?ÎE½u5ŒÝ Kνz5Þ bΜ½|5¬Þ }ÎJ¾5@ß ¡ÎÚ¾†5Èß ¹ÎVÁ5hò ÔÎ>“5Üõ îÎÄš5 ù  Ï,Å¡5 û -Ï!Æ¥5¬ý =πƫ5Ôý gÏÇÆ®5üý ‡ÏÇÆ±5 þ «ÏòÆ´54þ ÙÏ)Ǹ5Tþ õÏ}Ǽ5àþ з«¿5ÿ бÇÂ5Œÿ GÐÈÈ5¨ gÐHÈÍ5Ð }ÐõÈÓ5( ‹Ð.ÉÛ5h £ÐSÉÝ5  ÄÐòÉå5X ßÐéÊé5h ôÐ-Ëí5\ ÑbËð5¸ 6Ñ"Ìó5˜ EÑzÍù5œ _Ñ÷Í6à hÑÎ6Ä ~ÑÞÎ6 ŽÑ!Ï 6, ŸÑ‹Ï 6ˆ »Ñ´Ï6À ÌÑSÐ6œ çÑÎÒ6à úÑ(×6 ÒÀ×6 1ÒóØ6¤ GÒåÚ#6 qÒÜ'6| ŠÒ>Ü+6´ ±ÒÌÝ46ð ÁÒßÝ66 ËÒÐÞ86ˆ ØÒíÞ:6  éÒ–ß<6ô öÒ–ß=6 Ó§ß>6<  Ó¶à?6˜ ÓÁà@6° ]N_A6¼ …¯Œ_A6Ä SÓÛàA6Ì ƒ†O×lA6Ô ƒ¹OÁmA6ì æCVáA6 æCV½sB6 æCVÎsC6P æÈO×mE6p æÈO×lF6€ æMùmF6œ æMáH6´ æMnI6Ø ]N_J6è …¯¹nJ6ø  Ô"áK6 ƒÔßkK6 1Ô—ƒK6 ƒ>ÔßkM6$ NÔ(áM60 ƒZÔßkO6< iÔ6áO6D ƒwÔßkP6P ˆÔ@áP6\ ƒ•ÔßkR6h ¥ÔOáR6t ƒ·ÔßkT6€ ÌÔ^áT6Œ ƒÚÔßkV6˜ ëÔnáV6¨ ƒÕßk[6´ Õá[6À ƒ,Õßk]6Ì ƒ†O×l]6Ô ƒ¹OÁm]6ì …¯ºá]6! ƒQ×l_6 ! ƒUMÂá_6! …¯â_6,! ƒQ˜°a64! ƒUMÂáa67Ü< Fœ½=Ý>7è< …¯Œ_?7ð< Fœ½õÓ?7ü< …¯6&@7 = Fœ½ÊïA7¨= …¯ÕfD7¸= Fœ½¶CE7Ð= …¯æïG7è= Fœ½øïI7> …¯Œ_J7 > Fœ½øïJ7D> …¯ðK7„> Fœ½øèR7Ü> …¯Œ_S7ä> Fœ½VðS7ð> …¯ÿT7? Fœ½cðU7(? …¯Œ_V70? Fœ½tðV74? …¯™ðW7L? Fœ½øèY7h? …¯£ðZ7x? Fœ½µð[7Œ? …¯Êð\7œ? Fœ½þð]7Ô? …¯Œ_^7Ü? Fœ½7ñ^7ä? …¯Dñ_7@ Fœ½Wñb7 @ …¯Œ_c7(@ Fœ½pñc7,@ …¯Dñe7L@ Fœ½~ñh7„@ …¯Œ_i7Œ@ Fœ½±ñi7˜@ …¯Œ_j7 @ Fœ½¿ñj7´@ …¯Œ_l7¼@ Fœ½âèl7È@ …¯Œ_m7Ð@ Fœ½Íñm7è@ …¯Œ_n7ð@ Fœ½æñn7ü@ …¯øñp7 A Fœ½òq7A …¯Bòr7ŒA Fœ½tð~7üA …¯¥ò7úS8ŒU ŸßVúT8´U ³ß]úU8ðU ¿ßqúV8LV Öß úX8\V ê߀úY8|V à‘úZ8¸V (à„û\8$W :à–û^8\W Pà¹û`8pW càÑûb8„W wàøûd8X ‘àüf8hX ¢àüh8ÔX ·àCüj8TY Íàaün8ÔY Úà}ür8XZ æà•üv8¤Z öà­üz8¼Z áÜü€8øZ <áý†80[ Yá(ýŒ8D[ váaý‘8¨[ –áý—8X\ ´áÊý8¸\ Êáëý¢8H] Üá!þ©8¤] óá3þ«8¼] âJþ®8ð] $âŽþ³8P^ 3âÔþ´8`_ Hâÿ·8ì_ uâÿ»8` ‹â3ÿ¾8Œ` ¬âoÿÁ8¨` Æâ¯ÿÄ8Ä` Úâ³Ç80a õâóÍ8¤a ã*Ò8b %ã‡Ö8lb JãíÛ8¨c iãá8Ôc wãGæ8äc ‘ãGç8ôc ¤ãè8d Äã¦ê8@d êã‹ð8Ðf ûã·ô8˜g ä û8ôl #äÊ9\n 3ä9ðn Oäv9p xä  9Tp äO 9€p ¥äc9Hq Ääš9r åè9¸t Oå9Àt eå9Èt yå!9Ðt å]9Àu ½å9Hv Üå´!9¨v îå´$9¼v þåÃ'9Ðv æ6*9¬x -æH.9üx PæÑ19z •æ> 69H{ ÌæK :9€{ êæ^ >9à€ 1çü I9 OçW S9$ oçw W9H —ç¶ Z9¼ ©çÔ ^9 ‚ ÅçW b9°‚ éçˆ f9`ƒ è² i9̃ 'è l9 „ @èL q9@„ Uèh s9œ„ èØ w9D… Áèð {9\… ñè*}9† ÿè@94† ]é†9X‡ ƒé;‹9h‡ œécŒ9´‡ Èév9Ô‡ øéñ‘’9ˆ êÏ”9`ˆ %êq–9`‰ ]êÉš9ð‰ €êt9HŠ êN 9Ћ ²êñ¤9 Œ åêí©9¤Œ ë­90 'ë·±9p 6뿳9dŽ dë¸9¨  ë:Ä9Ô ½ëÊ9T’ üë‰Ñ9|’ ìÕÖ9¤’ 4ì Û9Ø’ Vìw ß9” |ìà ç9” –ìð ç94” §ì!ê9\” ºìK!ì9• îìÖ!ð9d• í"ô9Ì• íò"ú9,– @í#:¨– Oí2%:Œ˜ oí_&:lš ÜŒ6':œ íþ' :@ ¹íÆ(%:0ž Ôíá((:П óí).:x  îÝ)3:˜¡ 2î$*=:Ì¡ Vîœ*C:¨£ mî$+G:ô¤ …î+L:Ð¥ îÌ+Q:t¦ ³îñ+T:Ħ Åîc,Y:8§ Óîæ,Z: § èîU-[:P¨ öî°-a:p© ï.e:˜ª "ï /h:<« 1ï20i:ˆ­ ?ï–0j:à­ ™ïs1u:(¯ ÀïÏ1~:l¯ Ëï2‚:¬¯ äïb2Š:ô¯ ñï|2Ž:(°  ðá2’:(± Lðú3™:ز ñƒ5¨:D´ "ñ6±:”´ /ñ‘8¸: µ Añ2:À:ൠbñ7;Æ:ä¶ ƒñX;Ê:· ”ñp;Î:€· ®ñp;Õ:è· Ññ—;Ü:0¸ Üñ´;á:´¸ èñ´;ç:¹ ûñ´;í:t¹ òÖ;ó:œ¹ 4òõ;ö:̹ rò[<þ:,º ò;=;ôº žò¯=;ì¼ ­ò¸=;¾ äòâ= ;|¾ ó> ;¤¾ /ó?;ؾ Gó$>; ¿ Só$>;<¿ \ó$>;x¿ ió®?;tÅ Ûó @;¤Å ïóú@*;ðÆ ôVA6;Ç 'ôÄAA;dÇ ;ô]BN;”È Oô®?[;äÈ aô*Cg;0É nôDr;€Ê Çô Fy;äË  õ?~;Ì õ„F; Í ;õ´Fƒ;@Í Bõ„F‡;àÏ Wõ„F‹;DÑ uõ#H;ÀÑ õ¿H’;¬Õ ¦õÚH—;ÈÕ µõêH™;ÐÕ ËõøH™;øÕ êõIš;Ö öQIž;xÖ EösIŸ;0× Sö„I ;D× qöñI¢;”× ¢ößJ©;¸Ø ËöK±;Ú éö…L·;¨Ý ÷ÔM¿;ß %÷\NÆ;lß B÷ÇOÍ;xà ‚÷ÑPÚ;Xâ ¤÷ÝRè; å Î÷YSò;$æ ä÷ÕSù; ç ø÷þSÿ;8ç øhT=+ ‚ütD=œ+ ‰ütI=è+ ™üÛtN=x, ÌütU= , äütZ=À, ýü u_=à, ý uc=l- ývg=ø0 -ýŠvm=X1 <ýÑvt=¼1 Qýtw=ð1 gýOw{=€2 yýt=ŒV ‰ý3€†=´ˆ cí– >´Š o—>‹ |Áš>| ¬>è þ¤#>˜• "“¤,>P– RÖ¤5>˜– 3¥<>T— ŸK¥@>€— Éb¥C>¸— G>ؘ FŸ§K>l™ j¨N>˜™ µj¨Q>Ä™ äj¨T>ð™ j¨W>š !j¨Z>Hš E ©]>› kj¨`>4› ŠY©c>´› ¡'ªf>$œ Æèªj>\œ 혫n>Ìœ L¬s>` ,r¬t>l @­w>° P9­x>À ` ®}>hž t,®~>ž €’®>dŸ °X¯†>|  Ñ:°Ž>è¡ ñ«°’>(¢ ı“>”£ 2E³š><¥ hh´¡>„¦ ªص¦>0¨ Ο¸¯>„ª ý¶¹¸>¬  ¶¹¹>0¬ Zºº>ˆ¬ 5¾»»>„­ Tu¼À>à­ q·¼Â>L® Ú¼Ä>¤® £½Æ>ô® ½ͽÇ>ô° Ôñ¾Ë> ± ôK¿Í>H± u—¿×>ˆ± —Ù˜Ù>̱ ®lÀÚ>¬³ õAÁè>4µ '\Ãö>· ˜Å?и âÈ/?4¾ ) 7ÉD?„Á T 2ÊX?(à i )Ën?¸Ä ‰  ̃?Æ © И?TÜ À äЫ?ŒÜ Õ ·Ñº?¼Þ â ÕÍ? â  BÕÕ?Àâ ( uר?¨ï W Ô×à?ð z /Øè?Œð  ¬Øî?Ôñ ª îØö? ò Ì îØÿ?|ó Ö bÙ@¤ó ç Ú @$ö  ÛÚ@,÷ $  Û@8÷ ; ~Û@4ø O á@r “á'@d‹ %ã+@ º fã5@hÖ îã8@Ôô XåA@Ð= SæS@8] ~æU@ˆt æV@”¦  çY@Èì ^ç]@ü# 0èe@P¨ ®èq@„Ö (é{@´"þê„@Ø K ëŽ@ì!Çë–@`"Ÿiì@ð$ Ù¢@6E¿´@,6RB¸@ˆ6^¿¼@ 6‚ŠÀ@à6“*Ä@$8·gÎ@D8ñÑ@h8Ür Ò@@:C Þ@”:22 ç@t;Ms í@Œ;\" ó@<<jª ù@”=‰Õ ý@ä=«¥A€FÎ AÌFØAA0Gô¥AØGÁAìG.ðA@HDƒ#A I`z)A”Jv÷,A,LŽF0AMÄF3ANÛ_6ASï”:A0SÍ>AHS'BAxS?@GAôSz¥SA T‰Ú[ATTšÆ^AàT§agAàU¶ÿiAlVÄmqA¤BÀ©p>­BäÎD@µB4†ô•@¹BH†#A¾Bl†JÓAÅB„†fFBËB¬†ƒ¥BÔB܆Ž»BÙB ‡¦óBàB(‡¹CäB0‡Ë!CäBl‡ïOCæB¨‡cCèBÀ‡ACíBHˆOÿCóBl‰]DõB¼‰Š3DùBà‰ ÚDþBL‹× ECˆ‹ìGECÜ‹õ_ECü‹þêECˆŒÿEC-\F)CXIçF3C…¯Ø0CØ…¯Ø0?CðFœ½«AC Ž…¯K¥BC8Ž…¯Œ_DC@ŽFB[“uDCXŽ…¯“uFCpŽƒ”[ÓlHCxŽƒí"‡HC€ŽÆÈO×mHCäŽÆÈO×lICôŽÆMùmICdƒMbvKCÐÆMnLCô…¯HGMC…¯Œ_PCFB[“uPC4…¯“uRCLƒ”[ïºTCTƒí"ÒãTC\ƒ÷"‡TCd…¯[GTCŒ…¯Œ_XC”FB[“uXC¬…¯“uZCă”[ïº\C̃í"Òã\CÔƒ÷"‡\C܃p‡\Cä…¯{G\C‘…¯Œ_aC‘FB[“uaC4‘…¯“ucCL‘ƒ”[ïºeCT‘ƒí"˜GeC\‘ƒ÷"ÒãeCd‘ƒpÒãeCl‘ƒ‡eCt‘…¯ GeC”‘…¯Œ_hCœ‘FB[“uhC´‘…¯“ujCÌ‘ƒ”[ïºlCÔ‘ƒí"˜°lCÜ‘ƒ÷"‡lCä‘…¯³GlC ’…¯Œ_pC’FB[“upC,’…¯“urCD’ƒ”[ïºtCL’ƒí"˜°tCT’ƒ÷"˜°tC\’ƒp‡tCd’…¯ÕftCt’…¯Œ_uC|’FB[“uuC”’…¯“uwC¬’ƒ”[‡yC´’ÆÈO×myCð’ÆÈO×lzC“ÆMùmzCP“ƒMbv|C“ÆMn}C´“…¯ÑG~CÔ“…¯Œ_CÜ“FB[“uCô“…¯“uƒC ”ƒ”[ﺅC”ƒí"ª¹…C”ƒ÷"‡…C$”…¯èG…CL”…¯Œ_‰CT”FB[“u‰Cl”…¯“u‹C„”ƒ”[ïºCŒ”ƒí"ÝâC””ƒ÷"×lCœ”ƒp‡C¤”…¯üGCÌ”…¯Œ_‘CÔ”FB[“u‘Cì”…¯“u“C•ƒ”[ﺕC •ƒí"×l•C•ƒ÷"×l•C•ƒp‡•C$•…¯üG•CL•…¯Œ_™CT•FB[“u™Cl•…¯“u›C„•ƒ”[ïºCŒ•ƒí"×lC”•ƒ÷"×lCœ•ƒp‡C¤•…¯HCÌ•…¯Œ_¡CÔ•FB[“u¡Cì•…¯“u£C–ƒ”[ﺥC –ƒí",H¥C–ƒ÷",H¥C–ƒp‡¥C$–…¯4H¥CD–…¯Œ_¨CL–FB[“u¨Cd–…¯“uªC|–ƒ”[ﺬC„–ƒí",H¬CŒ–ƒ÷"‡¬C”–…¯GH¬C¬–…¯Œ_®C´–FB[“u®CÌ–…¯“u°Cä–ƒ”[ž¤²Cì–ƒí"‡²Cô–ÆÈO×m²CP—ÆÈO×l³C`—ÆMùm³CÔ—ƒMbvµC@˜ÆMn¶Cd˜…¯HG·C„˜…¯Œ_ºCŒ˜FB[“uºC¤˜…¯“u¼C¼˜ƒ”[ﺾCĘƒí"Òã¾C̘ƒ÷"‡¾CÔ˜…¯jH¾Cü˜…¯Œ_ÂC™FB[“uÂC™…¯“uÄC4™ƒ”[ïºÆC<™ƒí"ÒãÆCD™ƒ÷"ßkÆCL™ƒp‡ÆCT™…¯ÕfÆCd™…¯Œ_ÇCl™FB[“uÇC„™…¯“uÉCœ™ƒ”[‡ËC¤™ÆÈO×mËCà™ÆÈO×lÌCð™ÆMùmÌC@šƒMbvÎC€šÆMnÏC¤š…¯„HÐC´š…¯Œ_ÑC¼šFB[“uÑCÔš…¯“uÓC욃”[˜GÕCôš…¯•HÕC$›…¯Œ_ÚC,›FB[“uÚCD›…¯“uÜC\›ƒ”[ïºÞCd›ƒí"ßkÞCl›ƒ÷"?&ÞCt›ƒp®HÞC|›ƒ‡ÞC„›…¯4HÞC¤›…¯Œ_áC¬›FB[“uáCÄ›…¯“uãCÜ›ƒ”[ïºåC䛃í",HåC웃÷"‡åCô›…¯ GåCœ…¯Œ_èCœFB[“uèC4œ…¯“uêCLœƒ”[ïºìCTœƒí"˜°ìC\œƒ÷"‡ìCdœ…¯ GìC„œ…¯Œ_ïCŒœFB[“uïC¤œ…¯“uñC¼œƒ”[ïºóCÄœƒí"˜°óCÌœƒ÷"‡óCÔœ…¯¶HóCüœ…¯Œ_÷CFB[“u÷C…¯“uùC4ƒ”[ïºûC<ƒí"ÒãûCDƒ÷"ÒãûCLƒp‡ûCT…¯¶HûC|…¯Œ_ÿC„FB[“uÿCœ…¯“uD´ƒ”[ïºD¼ƒí"ÒãDă÷"ÒãD̃p‡DÔ…¯¶HDü…¯Œ_DžFB[“uDž…¯“u D4žƒ”[ïº D<žƒí"Òã DDžƒ÷"Òã DLžƒp‡ DTž…¯HG Dtž…¯Œ_D|žFB[“uD”ž…¯“uD¬žƒ”[ïºD´žƒí"ÒãD¼žƒ÷"‡DÄž…¯HGDäž…¯Œ_DìžFB[“uDŸ…¯“uDŸƒ”[ïºD$Ÿƒí"ÒãD,Ÿƒ÷"‡D4Ÿ…¯ÕfDDŸ…¯Œ_DLŸFB[“uDdŸ…¯“uD|Ÿƒ”[‡D„ŸÆÈO×mDÀŸÆÈO×lDПÆMùmD  ƒMbv!D` ÆMn"D„ …¯Õf#D” …¯Œ_$Dœ FB[“u$D´ …¯“u&DÌ ƒ”[‡(DÔ ÆÈO×m(D¡ÆÈO×l)D ¡ÆMùm)Dp¡ƒMbv+D°¡ÆMn,DÔ¡…¯¶H-Dü¡…¯Œ_1D¢FB[“u1D¢…¯“u3D4¢ƒ”[ïº5D<¢ƒí"Òã5DD¢ƒ÷"Òã5DL¢ƒp‡5DT¢…¯ÚH5Dl¢…¯Œ_7Dt¢FB[“u7DŒ¢…¯“u9D¤¢ƒ”[ßk;D¬¢ƒí"‡;D´¢ÆÈO×m;D£ÆÈO×lDì£ÆMn?D¤…¯Õf@D ¤…¯Œ_AD(¤FB[“uAD@¤…¯“uCDX¤ƒ”[‡ED`¤ÆÈO×mEDœ¤ÆÈO×lFD¬¤ÆMùmFDü¤ƒMbvHD<¥ÆMnID`¥…¯ÕfJDp¥…¯Œ_KDx¥FB[“uKD¥…¯“uMD¨¥ƒ”[‡OD°¥ÆÈO×mODì¥ÆÈO×lPDü¥ÆMùmPDL¦ƒMbvRDŒ¦ÆMnSD°¦…¯ÕfTDÀ¦…¯Œ_UDȦFB[“uUDঅ¯“uWDø¦ƒ”[‡YD§ÆÈO×mYD<§ÆÈO×lZDL§ÆMùmZDœ§ƒMbv\DܧÆMn]D¨…¯Õf^D¨…¯Œ__D¨FB[“u_D0¨…¯“uaDH¨ƒ”[‡cDP¨ÆÈO×mcDŒ¨ÆÈO×ldDœ¨ÆMùmdD쨃MbvfD,©ÆMngDP©…¯ÕfhD`©…¯Œ_iDh©FB[“uiD€©…¯“ukD˜©ƒ”[‡mD ©ÆÈO×mmDÜ©ÆÈO×lnDì©ÆMùmnD<ªƒMbvpD|ªÆMnqD ª…¯ÕfrD°ª…¯Œ_sD¸ªFB[“usDЪ…¯“uuD誃”[‡wDðªÆÈO×mwD,«ÆÈO×lxD<«ÆMùmxDŒ«ƒMbvzDÌ«ÆMn{Dð«…¯Õf|D¬…¯Œ_}D¬FB[“u}D ¬…¯“uD8¬ƒ”[‡D@¬ÆÈO×mD|¬ÆÈO×l‚DŒ¬ÆMùm‚DܬƒMbv„D­ÆMn…D@­…¯Õf†DP­…¯Œ_‡DX­FB[“u‡Dp­…¯“u‰Dˆ­ƒ”[‡‹D­ÆÈO×m‹DÌ­ÆÈO×lŒDÜ­ÆMùmŒD,®ƒMbvŽDl®ÆMnD®…¯"IDÈ®…¯Œ_–DЮFB[“u–Dè®…¯“u˜D¯ƒ”[ŸšD¯ƒí"ﺚD¯ƒ÷"ÓlšD¯ƒp@IšD ¯ƒ@IšD(¯ƒª‡šD0¯…¯K¥šDH¯…¯Œ_œDP¯FB[“uœDh¯…¯“užD€¯ƒ”[Ól Dˆ¯ƒí"‡ D¯ÆÈO×m Dô¯ÆÈO×l¡D°ÆMùm¡Dt°ƒMbv£Dà°ÆMn¤D±…¯ÿ¥D±Fœ½§¦DL±]N_§DX±…¯Œ_§D`±ûTI§Dl±ƒ ßk©Dx± dI©D€±ƒ3ßk©DŒ±ƒ†O×l©D¨±ƒ¹OÁm©DÀ±…¯ŸI©DرƒQ,H«DృUM­I«Dè±…¯Œ_«Dð±…¯aJ«D²†Q,H¬D²†UM­I¬D ²…¯mJ¬D0²ƒ¨×l­D8²ƒ½†J­D@²ƒÐ’J­DH²ƒáßk­DP²…¯˜J­Dx²…¯ÎJ±D¨²ƒ”ÝJ²Dô²ƒ¢ßk²D³ƒ¾åJ²D ³ƒØB²D³ƒ/ ½²D ³ƒ? RK²D(³ƒY \K²D0³ƒc hK²D8³ƒq hK²D@³ƒ ½²DH³ƒ“ pK²DP³ƒ² |K²DX³ƒØ ‰K²D`³ƒè •K²Dh³…¯ŸK²Dȳƒïº¼Dسƒö ½¼Dä³…¯êK¼Dô³Fœ½ôK½D ´…¯Œ_¾D(´Fœ½‘´¾D,´…¯ýK¿D<´Fœ½LÀDX´…¯Œ_ÁD`´Fœ½LÁDt´…¯"LÃD„´Fœ½ULÄD ´…¯Œ_ÅD¨´Fœ½kLÅDÄ´…¯}LÇDÔ´Fœ½LÈDì´…¯Œ_ÉDô´Fœ½†LÉDµ…¯Œ_ËD µFœ½†LËDµ…¯6&ÍD,µFœ½˜LÎDDµ…¯¥LÏDTµFœ½˜LÐDhµ…¯ýKÑDxµFœ½´LÒDˆµ…¯Œ_ÓDµFœ½ÅLÓD°µ…¯}ÔDÀµFœ½˜LÕDÔµ…¯ýKÖDäµFœ½´L×Dôµ…¯Œ_ØDüµFœ½ÅLØD¶…¯6&ÙD,¶Fœ½˜LÚDD¶…¯ßLÛDT¶Fœ½˜LÜDp¶…¯èLÝD ¶Fœ½˜LâDض…¯Œ_ãDà¶Fœ½MãDì¶…¯MäD·Fœ½˜LéDX·…¯MêDˆ·Fœ½˜LïDÀ·…¯1MðDзFœ½MñDà·…¯1MòDð·Fœ½MóD¸…¯:MôD(¸Fœ½˜LøD\¸…¯Œ_ùDd¸Fœ½MùDp¸…¯Œ_úDx¸Fœ½MúD„¸…¯:MûD¬¸Fœ½˜LÿDฅ¯VMEø¸Fœ½˜LE¹…¯hME@¹Fœ½˜LEŒ¹…¯ýK Eœ¹Fœ½´L E¬¹…¯Œ_ E´¹Fœ½M Eй…¯±M Eè¹Fœ½˜LEºƒ;ŸEºƒ<"DNEºƒH"bNEºƒ`"ßkE ºƒmÐÔE(ºƒm"rNE0ºƒ…"zNE8ºƒ"ÊÌE@ºƒ›"‚NEHºƒ£"ßkEPºƒÉ"ßkEXºƒÓ"ßkE`ºƒß"€ïEhºƒï"ŠNEpºƒþ"’NExºƒ#ž¤E€ºƒ&#šNEŒºƒ2#¹NE˜º…¯ÊNE(»éZŠO!Eœ»…¯Œ_+E¤»Fœ½Ï[+E°»…¯Œ_-E¸»Fœ½ã-EÄ»…¯Œ_.EÌ»Fœ½çO.Eà»…¯Œ_0Eè»Fœ½P0E¼…¯Œ_2E$¼Fœ½3P2EX¼…¯Œ_4E`¼Fœ½eP4E„¼…¯Œ_5EŒ¼Fœ½†P5E°¼…¯Œ_6E¸¼Fœ½†P6Eܼ]N_7Eè¼…¯Œ_7Eð¼ª#ªP7Eø¼ƒ¸#ßk7E½È#°P7E½ƒÖ#ßk9E½ç#ÓP9E(½ƒ $ßkF×…¯Œ_?F×Fœ½._?F$×…¯Œ_AF,×Fœ½Z_AFŒ×…¯c_BFœ×Fœ½l_CF°×…¯Œ_DF¸×Fœ½w_DFÈ×…¯Œ_EFÐ×Fœ½€_EFÜ×…¯–_FFð×áT¸:HGFô×áHGF(Øá¤¸]HGF,Ø…¯Ñ_GFDØFœ½`IFìØ…¯Œ_JFôØFœ½d`JFÙ…¯Œ_KF ÙFœ½¹`KF,Ù…¯Æ`LF<ÙFœ½$_MFPÙ…¯Œ_NFXÙFœ½dºNFdÙ…¯ÞOFtÙFœ½,ÞPF„Ù…¯*QF¬ÙFœ½)aUFÚ…¯Œ_VF ÚFœ½eaVFÚ…¯Œ_WF$ÚFœ½£aWFTÚ…¯ÿXFdÚFœ½ÐaYF„Ú…¯Þa[F”ÚFœ½b\F¤Ú…¯ b^F¼ÚFœ½ªí`FôÚ…¯rbaFDÛFœ½ ciFüÛ…¯ØjF4ÜFœ½‘cpF|Ü…¯çcqFœÜFœ½øïtF¸Ü…¯ÕfuFÈÜFœ½dvFôÜ…¯ÕfwFÝFœ½6dxFÝ…¯çczF4ÝFœ½Ld}FPÝ…¯Õf~F`ÝFœ½]dFŒÝ…¯Õf€FœÝFœ½„dF¬Ý´+¨dƒF´Ý…¯¹d„FÄ݃qPÈd…FÌ݃†O×l…FÔ݃¹OÁm…FìÝ…¯Œ_…FôÝFœ½ýd…FÞ]N_‡F(Þ…¯¹n‡F8Þ},!eˆF@Þƒ ,ßkˆFLÞÅ,!eˆFTÞƒê,ßkˆF`Þƒ†O×lˆFhÞƒ¹OÁmˆF€ÞæCVNeˆFÀÞæCV½s‰FÐÞæCVÎsŠF ßæÈO×mŒFHßæÈO×lFXßæMùmF”ßæM]eFÌßæMnFðß-‚e‘Füß…¯Ÿe”FàƒQºe—F$àƒUMÆe—F,àƒ!Qää—F4àƒ†O×l—F<àƒ¹OÁm—FTà)-f—F`à…¯/f›FˆàƒQEfŸFàƒUMMfŸF˜àƒ!QSfŸF àƒ=Q[fŸF¨àƒ†O×lŸF°àƒ¹OÁmŸFÈàA-žfŸFðà…¯Þf«F`áƒQ5Y·FháƒUMg·Fpáƒ!Qßk·Fxáƒ=Qßk·F€áƒGQ$g·FˆáƒQQM\·Fრ‘[f·F˜áƒ"•Sf·F áƒ,•Ef·F¨áƒL*Mf·F°áƒW*‡·F¸áƒ¦*p\·FÀ჆O×l·FÈჹOÁm·Fàá]N_·Føá…¯¹n·Fâ¿-]g¸FâƒÒ-ßk¸Fâç-]g¸F$âƒþ-ßk¸F0⃆O×l¸F8⃹OÁm¸FPâæCVŠg¸FâæCV½s¹F âæCVÎsºFðâæÈO×m¼FãæÈO×l½F(ãæMùm½FdãæM™g¿FœãæMnÀFÀã…¯¦gÁFäFœ½-ùÈFå…¯Œ_ÉFåFœ½hÉFå…¯hÊF<åFœ½hÍFhå…¯Œ_ÏFpåFœ½hÏF„å…¯.hÐF¼åFœ½»ÖFHæ…¯Ø0ØF`æFœ½«ÚFæ…¯Œ_ÛF˜æFœ½dºÛF¤æ.[hÜF°æ…¯jhßFÐæƒQwhâFØæƒUMv®âFàæƒ!QßkâFèæƒ†O×lâFðæƒ¹OÁmâFçƒ}l‡âFçƒø‰ÒãâF@çƒ..ëhâFtèƒ;+v®äF€è…¯e]äFèFœ½§åF¨è…¯ÿæF¸èFœ½ûhçFÈè…¯ÿèFØèFœ½§éFèè…¯ iêFøèFœ½iëF é…¯ iìFéFœ½iíF0é…¯hîFPéFœ½,ÞñF¨é…¯Œ_òF°éFœ½m.òF¼é…¯ÿôFÌéFœ½'iõFÜé…¯8iöFüéFœ½IiùF ê…¯ÿúF°êFœ½±ûFÐê…¯SiÿFàêFœ½`iGðê…¯iGëFœ½±GTë…¯Œ_G\ëFœ½¨iGlë…¯Œ_ GtëFœ½±i G¸ë…¯Œ_ GÀëFœ½Ìi GÈë…¯Úi GèëFœ½«G,ì…¯ëiGDìFœ½«Güì…¯Œ_GíFœ½"jGí…¯Œ_GíFœ½3jG í…¯Œ_G(íFœ½@jG8í…¯Œ_G@íFœ½¨iGLí…¯Œ_GTíFœ½QjGdí…¯Œ_GlíFœ½QjG|í]N_G¸í…¯¹nGÈíH/ejGÐíƒP/ßkGÜíZ/ejGäíƒg/ßkGðív/ejGøíƒ‹/ßkGî¢/ejG /ßkGîÀ/ejG îƒÓ/ßkG,O×lG4OÁmGLîæCV’jGŒîæCV½sGœîæCVÎsGìîæÈO×mG8ïæÈO×lGHïæMùmG„ïæM¡j!G¼ïæMn"Gàïƒ 0¼j#Gèïƒ0Âj#Gðï…¯Êj#Gð…¯Œ_%GðFœ½Öj%Gð…¯Œ_&G$ðFœ½ßj&G0ð…¯Œ_'G8ðFœ½êj'GHð…¯÷j(G¨ðFœ½Kk2Güð…¯÷j4G\ñFœ½Xk>G°ñ…¯ek@GòFœ½¼kKGxò…¯ekLGàòFœ½¼kWG@󅝯kXGPóFœ½ÕkYGdó…¯ãkZGtóFœ½ök[GŒó…¯ek\GôóFœ½¼kgG`ô…¯ekhGÈôFœ½¼ksG4õ…¯ÆktGDõFœ½ÕkuGXõ…¯ãkvGhõFœ½ökwG€õ…¯÷jxGàõFœ½Kk‚G4ö…¯÷j„G”öFœ½ lŽGèö…¯ekGP÷Fœ½l›G°÷…¯ekœGøFœ½$l§Gxø…¯.l¨GÈøFœ½tl°G0ù…¯Œ_²G8ùFœ½êj²GHù…¯Œ_³GPùFœ½Žl³Gpù…¯FR´G€ùFœ½¦lµGÀù…¯´l¶GàùFœ½Ùl¹G(ú…¯ñlºG@úFœ½$m¼Gðú…¯¹n¾Gûk0Em¿G ûƒ}0ßkÂGû’0^mÂG$ûƒ 0ßkÅG0û±0smÅG<ûƒÅ0ßkÇGHûÜ0ÚHÇGTûƒê0ßkÉG`ûƒ†O×lÉGhûƒ¹OÁmÉG€û…¯ºmÉG ûƒQÑmÌG¨ûƒUM‡ÌG°ûƒ!Q‡ÌG¸û…¯:nÌGØûƒQMnÏGàûƒUMääÏGèûƒ!Q‡ÏGðû…¯¦nÏGüƒQ\KÑGüƒUM‡ÑGü…¯oÑG0üƒQääÓG8üƒUM‡ÓG@ü…¯noÓGPü†QÑmÔG`ü†UM‡ÔGpü†!Q‡ÔG€ü…¯uoÔGü†QMnÕG ü†UMääÕG°ü†!Q‡ÕGÀü…¯|oÕGÐü†Q\KÖGàü†UM‡ÖGðü…¯ƒoÖGý†Qää×Gý†UM‡×G ý]N_×G8ý…¯¹n×GHýF1oØGPýƒU1ßkØG\ýf1oØGdýƒu1ßkØGpýƒ†O×lØGxýƒ¹OÁmØGýæCV½oØGÐýæCV½sÙGàýæCVÎsÚG0þæÈO×mÜGXþæÈO×lÝGhþæMùmÝG¤þæMÌoßGÜþæMnàGÿ]N_áG$ÿ…¯¹náG4ÿC2ßoâG<ÿƒd2ßkâGHÿ‡2ßoâGPÿƒ—2ßkâG\ÿ©2ßoâGdÿƒ¹2ßkâGpÿƒ†O×lâGxÿƒ¹OÁmâGÿæCV pâGÐÿæCV½sãGàÿæCVÎsäG0æÈO×mæGlæÈO×lçG|æMùmçG¸æMpéGðæMnêG]N_ëG,…¯¹nëG<3.pìGDƒ(3ßkìGP73.pìGXƒF3ßkìGdƒ†O×lìGlƒ¹OÁmìG„æCV[pìGÄæCV½síGÔæCVÎsîG$æÈO×mðGLæÈO×lñG\æMùmñG˜æMjpóGÐæMnôGô]N_õG …¯¹nõGª3‚pöG$ƒ¸3ßköG0È3‚pöG8ƒ×3ßköGDƒ†O×löGLƒ¹OÁmöGdæCV¯pöG¤æCV½s÷G´æCVÎsøGæÈO×múG,æÈO×lûG<æMùmûGxæM¾pýG°æMnþGÔè3àpÿGä…¯qHƒQÝâ HƒUMBq H$ƒ!Q†J H,ƒ=Q’J H4ƒGQÏ® H<ƒ†O×l HDƒ¹OÁm H\4q Hh…¯¢q H€ƒQ²q HˆƒUMºq Hƒ†O×l H˜ƒ¹OÁm H°ƒ4²q H¼#4r HÈ…¯rHðƒQ%rHøƒUM+rHƒ!Q1rHƒ=Q7rHƒ†O×lHƒ¹OÁmH0?4drH@…¯}rHpƒQ%rHxƒUM+rH€ƒ!Q1rHˆƒ=QìæHƒGQ‡H˜ƒ†O×lH ƒ¹OÁmH¸S4ÎrHÄ…¯ìr#HìƒQÝâ'HôƒUMÏ®'Hüƒ!Q1r'Hƒ=Qs'H ƒ†O×l'Hƒ¹OÁm'H,h4Es'HL…¯ys/HœƒQ1r7H¤ƒUMÝâ7H¬ƒ!Q†J7H´ƒ=Q’J7H¼ƒGQÏ®7HăQQ«s7H̃ ‘‡7HÔƒ"•+r7H܃†O×l7H䃹OÁm7Hü{4äs7H…¯t?HlƒQ²qGHtƒUMYGH|ƒ!Q˜GGH„ƒ=QÏ®GHŒƒGQÏ®GH”ƒQQÒãGHœƒ ‘JtGH¤ƒ"•1rGH¬ƒ†O×lGH´ƒ¹OÁmGHÌŒ4wtGHØ…¯‹tKH ƒQ%rOH ƒUM+rOH ƒ!Q1rOH ƒ=Q èOH ƒ†O×lOH( ƒ¹OÁmOH@ Ë4ÄtOHl …¯u]Hì ƒQ×lkHô ƒUM%rkHü ƒ!QÏ®kH ƒ=QYkH ƒGQ?&kH ƒQQYkH ƒ ‘JtkH$ ƒ"•YkH, ƒ,•†JkH4 ƒL*†JkH< ƒW*’JkHD ƒ¦*5YkHL ƒ%+ÒãkHT ƒ0+1rkH\ ƒ†O×lkHd ƒ¹OÁmkH| ƒÕ4Ï®kHˆ ƒñ4?&kH” ƒù4YkH  ƒ5Ï®kH¼ ƒ"5×lkHÈ ƒ,5%rkHÔ ƒ>51rkHà ƒ57rkHè ƒ¢5•ukHð …¯›ukH ƒ'6Ï®mH ƒD6«umH ƒ¢5•umH …¯±umH@ ƒq6ÊupHH ƒD6«upHP ƒ¢5•upHX …¯ÐupHx ƒ±*Ï®sH˜ ƒq6ÊusH  ƒ0ÂjsH¨ …¯ÝusHÀ …¯Œ_uHÈ Fœ½éuuHÔ …¯Œ_vHÜ Fœ½öuvHø …¯Œ_{H Fœ½öu{H …¯Œ_€H$ Fœ½öu€H@ …¯Œ_…HH Fœ½öu…Hd …¯Œ_ŠHl Fœ½öuŠHˆ …¯Œ_H Fœ½öuH¬ …¯v”HÌ Fœ½!v—Hô …¯Œ_™Hü Fœ½dº™H …¯Œ_šH Fœ½ìšH …¯8v›H< Fœ½$_žH\ …¯Œ_ŸHd Fœ½SVŸHp …¯Kv H  Fؤ]v¥H\FskŒ_¦HFê¤ßk¦H4Fù¤ݱ¦H@F ¥kv¦H`…¯xv¦HFؤ’v«HhFskŒ_¬H Fê¤ßk¬H@Fù¤ѱ¬HLF ¥¤v¬Hl…¯Œ_¬HtFœ½ì¬H€…¯i­H˜Fœ½µv¯H°…¯e]±HÀFœ½év²Hø…¯e]³HFœ½Yw´H@…¯Œ_µHHFœ½ìµHh…¯{w¶HxFœ½–w·HŒ…¯Œ_¸H”Fœ½m.¸H …¯ÿºH°Fœ½'i»HÀ…¯¹w¼HxFؤ*xÑH4FskŒ_ÒH@Fê¤ßkÒH|Fù¤6xÒHˆF ¥Fœ½Qä‚J>…¯ŽLƒJ >Fœ½ÛÒ„J<>…¯3……JÔ>Fؤ†–JÐ@FskŒ_—JtAFê¤ßk—J¨AFù¤0†—J´AF ¥D†—JB…¯i—JBFœ½•†™JtB…¯ŽL›J„BFœ½ƆœJ°B…¯Ô†JàBFœ½ó†¢J8C…¯Œ_£J@CFœ½ÛÒ£JLC…¯‡¤J\CFœ½ÛÒ¥JxC…¯Œ_¦J€CFœ½ÛÒ¦JŒC…¯‡§JœCFœ½Ɔ¨JÐC…¯ ‡©JðCFœ½<‡¬JHD…¯Œ_­JPDFœ½F‡­J\D…¯Œ_¯JdDFœ½b‡¯JpD…¯Œ_°JxDFœ½F‡°J„D…¯Œ_²JŒDFœ½p‡²JœD…¯Ë”³J¬DFœ½y‡´JÀD…¯hµJàDFœ½‹‡¸J,E…¯Œ_¹J4EFœ½•‡¹J@E…¯Œ_ºJHEFœ½§‡ºJTE…¯ŽL»JdEFœ½ч¼J€E…¯Œ_½JˆEFœ½m.½J”E…¯ÿ¿J¤EFœ½'iÀJ´E…¯Œ_ÁJ¼EFœ½û‡ÁJèE…¯#ˆÂJFFœ½0ˆÅJ$F…¯;ˆÆJTFFœ½tˆËJ˜F…¯iÌJ°FFœ½—ˆÎJèF…¯ñˆÏJhGFؤ‰ÝJtIFskŒ_ÞJ@JFê¤ßkÞJJFù¤˜‰ÞJœJF ¥«‰ÞJÔJ…¯Œ_ÞJÜJFœ½ÉÞJèJ…¯Œ_ßJðJFœ½ï‰ßJ K…¯iàJ$KFœ½ŠâJKüYFskŒ_?K ZFê¤ßk?KÔZFù¤œ?KàZF ¥0œ?K[…¯Œ_?K[Fœ½‚œ?K@[…¯Œ_@KH[Fœ½¡œ@KL[…¯Œ_BKT[Fœ½øèBKX[…¯³œCKˆ[Fœ½¡œHKÌ[…¯ΜJKì[Fœ½øèMK\…¯Œ_NK\Fœ½¡œNK\…¯Œ_PK\Fœ½øèPK \…¯Œ_QK(\Fœ½ÌiQK0\…¯Œ_SK8\Fœ½áœSK<\…¯Œ_TKD\Fœ½TK”\…¯Œ_UKœ\Fœ½*UK \…¯Œ_VK¨\Fœ½áœVK¬\…¯Œ_WK´\Fœ½WKô\…¯Œ_XKü\Fœ½*XK]…¯Œ_YK]Fœ½MYK ]…¯ŽLZK]Fœ½‰[K`]…¯Œ_\Kh]Fœ½–\Kl]…¯ëi]K„]Fœ½À_Kè^…¯æ`K_Fœ½«cK$_…¯Œ_dK,_Fœ½ƒždKT_…¯Œ_eK\_Fœ½àžeK¼_…¯Œ_fKÄ_Fœ½ƒžfKì_…¯Œ_gKô_Fœ½àžgK\`…¯þžhKt`Fœ½˜¢jKŒ`…¯þžkK¤`Fœ½˜¢mK¼`…¯þžnKÔ`Fœ½˜¢pKì`…¯HŸqKaFœ½å`uKLœtFœ½h‚BLÌt…¯Œ_FLÔtFœ½‡‚FLØt…¯£¦GLuFœ½2§NLèu…¯ÕfPLøuFœ½^§QLDv…¯ÿRLTvFœ½§SLlv…¯ iTL|vFœ½§ULv…¯i§VL°vFœ½‡§YLøv…¯‘§ZLwFœ½‡§[L w…¯Õf\L0wFœ½§§]Lw…¯¾§_L¸wFœ½‡§cLx…¯Œ_dL$xFœ½§TdL0x…¯¨eLPxFœ½(¨hLˆx…¯1¨iL°xFœ½E¨mLäx…¯Œ_nLìxFœ½O¨nLy…¯Œ_oL yFœ½dºoL,y…¯ÕfpLñðPð:>åòòPôf>¶óúPüz>õüPH >põþP\ «>öQ¬ …¯Õf Q¼ Fœ½>ö QÐ …¯8v Qð Fœ½$_Q!…¯yQ !Fœ½SöQ8!…¯Œ_Q@!Fœ½_öQP!…¯Œ_QX!Fœ½_öQd!…¯Œ_Ql!Fœ½_öQx!…¯Œ_Q€!Fœ½_öQŒ!…¯Œ_Q”!Fœ½_öQ¤!…¯höQ´!Fœ½_öQÄ!…¯Œ_QÌ!Fœ½_öQØ!…¯Œ_Qà!Fœ½_öQì!…¯Œ_Qô!Fœ½_öQ"…¯Œ_Q"Fœ½_öQ"…¯Œ_Q"Fœ½_öQ("…¯Œ_Q0"Fœ½_öQ@"…¯hö QP"Fœ½_ö!Q`"…¯Œ_"Qh"Fœ½šö"Q "…¯Œ_#Q¨"Fœ½Æö#QÔ"…¯Œ_$QÜ"Fœ½šö$Q#…¯Œ_%Q#Fœ½+÷%Q¼#…¯Œ_&QÄ#Fœ½`÷&Qð#…¯Œ_'Qø#Fœ½¥÷'Q4$…¯Œ_(Q<$Fœ½_ö(Q¬$…¯Œ_)Q´$Fœ½è÷)Qô$…¯Œ_*Qü$Fœ½Eø*Qè%…¯Œ_+Qð%Fœ½è÷+Q0&…¯fø,Q &Fؤäø8Q¸(FskŒ_9QÄ(Fê¤ßk9Qø(Fù¤ìæ9Q)F ¥òø9QX)…¯Œ_9Q`)Fœ½Eø9QT+…¯Œ_:Q\+Fœ½_ö:Qø+…¯Œ_;Q,Fœ½_ö;Q ,…¯Œ_QÄ,Fœ½_ö>Qt-…¯Kú?QŒ-Fœ½[úAQ¤-…¯{úBQÜ-Fœ½´úHQP.…¯ÃúIQx.Fœ½õúMQ´.…¯iNQÌ.Fœ½0ûPQü.…¯e]QQ /Fœ½cûRQ/…¯iSQ4/Fœ½cûUQL/…¯Œ_VQT/Fœ½ûVQ/…¯Œ_WQ˜/Fœ½¯ûWQÄ/…¯Œ_XQÌ/Fœ½ûXQ0…¯ÕfYQ0Fœ½ßûZQT0…¯Œ_[Q\0Fœ½ü[Qˆ0…¯Œ_\Q0Fœ½7ü\QØ0…¯Œ_]Qà0Fœ½jü]Qh1…¯Œ_^Qp1Fœ½jü^Q°1…¯Œ__Q¸1Fœ½jü_QÐ1…¯Šü`Qà1Fœ½—üaQð1…¯ÕÈbQ2Fœ½ýeQä2ì>©ýgQ 4?ÏýjQ˜4? þlQ„68?ŒþtQX7z?ÿþxQÈ7›?Íÿ}Ql9Ä?]Q€;Ö?‡QÀ=@™ŒQ?3@QÐ@\@]’Qð@¡@ôšQ€Aµ@ü£QäD#A`¬QÐGjAé´Q@HËA¼QlHÿA¿Q˜H>B#ÂQÐHcB7ÇQTè§Fœ½ .?T¨…¯<.@T¨Fœ½ .AT$¨…¯ƒ)BTT¨Fœ½…/GT¬«…¯Œ_HT´«Fœ½ý,HTЫ…¯=-JT¬Fؤv-PTô¬FskŒ_QT¤­Fê¤ßkQTØ­Fù¤àcQTä­F ¥€-QT®…¯‰-QTH®Fœ½²-WT„®…¯Œ_YTŒ®Fœ½ÐÝYTœ®…¯À-ZT¬®Fœ½±­[T¸®…¯Ø0\TЮFœ½«^T¯…¯É-_T@¯Fœ½äÔfT¨¯…¯‰-hTà¯Fœ½²-nT°…¯Ø0pT4°Fœ½«rTd°…¯Ø0sT|°Fœ½«uT¬°…¯ ivT¼°Fœ½ .wTÔ°…¯ ixTä°Fœ½ .yTü°…¯<.zT ±Fœ½ .{T ±…¯ i|T0±Fœ½ .}TH±…¯<.~TX±Fœ½ .Tl±…¯ƒ)€Tœ±Fœ½…/…T(µìGÌ/†T@µH80‰Tx¶NH•0‘Tä·wH¦0•T¸•H¦0™T\¹ÀHQ1TŒ¹ÚHQ1ŸT¼¹IQ1¡Tü¹'IQ1£T ºKIÇ1¥Tð»qIà1©T¼…¯÷1¬T(¼Fœ½2®T”¼ŒII2¯T¤¼ÕIá2´T°½AJ(4ÀT ¾—Jb5ÄTŒ¾ýJ36ÌTÔ¾4K@7ÔT$¿rK.9ÚTLÂ]N_àTdÂ…¯¹nàTt¹Li9áT|ƒÏLßkâTˆÂèLr9âT”ƒøLßkæT Â M9æT°Âƒ%MßkëT¼ÂBM«9ëTăQMßkìTÐÂcM´9ìTØÂƒŒMßkìTä·M´9ìTìƒÞMßkìTøÂƒ†O×lìTùOÁmìTÃ…¯ì9ìT(ÃqPó9íT0Ã…¯v:íTXÃQ’:ñT`ÃUMääñThÃ!Q†JñTpÃ=Q‡ñTxÃ…¯;ñT¨ÃƒQÝâöT°ÃƒUM.;öT¸Ãƒ!QßköTÀÃ=QßköTÈÃGQ‡öTÐÃ…¯¹;öTàÃqPÀ;÷TèÃ…¯9<÷TøÃ†qPó9øTÄ…¯E<øTĆQ’:ùT(ĆUMääùT8Ć!Q†JùTHĆ=Q‡ùTXÄ…¯Q<ùThĆQÝâúTxĆUM.;úTˆÄ†!QßkúT˜Ä†=QßkúT¨Ä†GQ‡úT¸Ä…¯X<úTÈĆqPÀ;ûTØÄNr<ûTèÄ…¯•<UŃQ­U ŃUMÝâU(Ń!QÏ®U0Ń=QÒãU8ŃGQ¶<U@цO×lUHѹOÁmU`Å]N_UxÅ…¯¹nUˆÅYOò<U”ŃoOßkU ÅˆO=U¬Åƒ˜Oßk U¸Å«O= UÀŃÅOßk UÌÅâO%= UÔŃñOßk UàÅP,= UèŃ,Pßk UôÅWP,= UüŃ~Pßk Uƃ†O×l Uƃ¹OÁm U(Æ…¯e= U@ƃQó9UHƃUMu=UPÆ…¯ö=UhƃQv®UpƃUM†JUxÆ…¯Š>UˆÆƒqP•>UÆ…¯¹nU ÆƒqP×lU¨Æ…¯†?U¸Æ†Qó9UÈÆ†UMu=UØÆ…¯’?UèÆ†Qv®UøÆ†UM†JUÇ…¯ž?UdžqP•>U(Ç…¯ª?U8džqP×lUHǧPÄ?UTÇ…¯Ö?UlǃQÝâUtǃUMæ?U|ǃ†O×lU„ǃ¹OÁmUœÇ]N_U´Ç…¯¹nUÄÇùQ"@UÐǃRßkUÜÇ(R4@Uèǃ8RßkUôÇKRH@UüǃeRßk UÈ‚RU@ Uȃ‘Rßk!UÈ£R^@!U$ȃÌRßk!U0È÷R^@!U8ȃSßk!UDȃ†O×l!ULȃ¹OÁm!UdÈ…¯e=!U|ȃQó9#U„ȃUMu=#UŒÈ…¯ö=#U¤ÈƒQv®%U¬ÈƒUM†J%U´È…¯Š>%UÄȃqP•>&UÌÈ…¯óA&UÜȃqPúA'UäÈ…¯sB'UôȆQó9(UɆUMu=(UÉ…¯B(U$ɆQv®)U4ɆUM†J)UDÉ…¯‹B)UTɆqP•>*UdÉ…¯—B*UtɆqPúA+U„ÉGS±B+UÉ…¯ÃB-U¨ÉƒQÝâ/U°ÉƒUMÓB/U¸Éƒ†O×l/UÀɃ¹OÁm/UØÉ…¯Œ_/UàÉFœ½C/UìÉ…¯Œ_0UôÉFœ½C0UÊ…¯&C1U8ÊFؤ\C6UøÊFskŒ_7UœËFê¤ßk7UÐËFù¤hC7UÜËF ¥nC7UüË…¯‚C7UdÌFœ½5EBUhÑ…¯iECU˜ÑFœ½©EHUÒ…¯bFIUÒFœ½îFJU Ò…¯Œ_LU(ÒFœ½IGLU4Ò…¯Œ_MU<ÒFœ½CMUPÒ…¯Œ_NUXÒFœ½IGNU¨Ò…¯`GOUàÒFؤ\CUUäÓFskŒ_VU ÔFê¤ßkVUðÔFù¤hCVUüÔF ¥nCVU Õ…¯iVU8ÕFœ½KXUÔ×…¯Œ_ZUÜ×Fœ½ùÂZU Ø…¯Œ_[UØFœ½†”[U Ø…¯Œ_]U(ØFœ½†”]U4Ø…¯Œ__U<ØFœ½«µ_UTØ…¯?K`UlØFœ½†KbUÙ…¯Œ_cU$ÙFœ½žKcU4Ù…¯Ø0eULÙFœ½«gU|Ù…¯ëihU”ÙFœ½¬KjU´Ù…¯ºKlUäÙFœ½œNqU à…¯ùNsUÈàFœ½kPwU8â…¯Œ_yU@âFœ½ÅPyUdâ…¯Û5zUœâFœ½+Q€Uäã…¯Û5‚UäFœ½’QˆU€ä…¯e]ŠUäFœ½Ò‹U¤ä…¯e]ŒU´äFœ½ÁQUå…¯e]ŽUåFœ½ÔQUPå…¯Œ_UXåFœ½ÔQUdå…¯Œ_‘UlåFœ½ÔQ‘U˜å…¯Œ_’U åFœ½éQ’UÌå…¯R“U æFؤERšU€çFskŒ_›U<èFê¤ßk›UŒèFù¤QR›U˜èF ¥WR›UÀè…¯Œ_›UÈèFœ½ßj›UÔè…¯Œ_œUÜèFœ½dºœUèè…¯gRUéFœ½¤R Uœé…¯Œ_¡U¤éFœ½éQ¡UÐé…¯­R¢UêFœ½ U§ULî…¯Œ_¨UTîFœ½._¨U`ĪUpîFœ½Ä«U„î…¯Œ_­UŒîFœ½8Ä­U¬î…¯IU®U4ïFؤÖU½UäñFskŒ_¾UèòFê¤ßk¾ULóFù¤®H¾UXóF ¥êU¾Uˆó…¯÷U¾U¸óFؤVÃUxôFskŒ_ÄUõFê¤ßkÄUPõFù¤ÒãÄU\õF ¥'VÄU|õ…¯WVÄUôõFؤVÑU<øFskŒ_ÒU$ùFê¤ßkÒU|ùFù¤ÒãÒUˆùF ¥'VÒU¼ù…¯ÐîÒUÌùFœ½±­ÓUÜù…¯ÐîÔUìùFœ½±­ÕU8ú}TLXÖU0ý“TâXäUøý¶TYêUˆþËT(ZìU°ÛTR[öUØU›[ÿUø)UU^VÄxU%gVà…¯Œ_VèûUugVôƒVßk!V 0V†g!V ƒ?Vßk#V ƒ†O×l#V4 ƒ¹OÁm#VL …¯Äg#Vl ƒQÃ(&Vt ƒUMßk&V| ƒ!Qßk&V„ …¯Kh&Vœ ƒQv®(V¤ ƒUMßk(V¬ …¯Ãh(V¼ †QÃ()VÌ †UMßk)VÜ †!Qßk)Vì …¯Êh)Vü †Qv®*V †UMßk*V ƒXÝâ*V$ ƒXÏ®*V, ƒVh …¯i@V€ Fœ½µvBV˜ …¯²iDVÈ Fœ½ýiIVH …¯Ø0JV` Fœ½«LV …¯Œ_MV˜ 5ZjMV  ƒ>ZßkNV¬ JZjNV¸ ƒUZßkQVÄ cZ+jQVÐ ƒoZßkTVÜ ƒ†O×lTVƒ¹OÁmTV…¯štTV,ƒqPßkUV4…¯ÑjUVTƒQßkXV\ƒUM×lXVdƒ!Q,HXVl…¯AkXVŒƒQßk[V”ƒUM?&[Vœƒ!Qɱ[V¤…¯»k[V´†qPßk\VÄ…¯Çk\VÔ†Qßk]Vä†UM×l]Vô†!Q,H]V…¯Îk]V†Qßk^V$†UM?&^V4†!Qɱ^VDƒ[l^VLƒ[Ÿ^VTƒ-[l^V\ƒ:[B^Vd…¯4l^VŒpU†lbV´ƒ†[¹ldVü‘[ÑleVdƒž[GmgVðƒ³[ÂmpVPƒÎ[nxVxƒç[•8yVˆƒÿ[enzVƒ\Án€Vƒ\ín†Vøƒ3\co‹V˜ƒJ\ÇoVÌ…¯Œ_”VÔFœ½éo”V…¯Œ_•V Fœ½ÿo•V…¯Œ_–V Fœ½ÿo–V,…¯Õf—V<Fœ½õC˜VL…¯Œ_™VTFœ½dº™V`…¯-pšVFؤ ®V¼FskŒ_¯VlFê¤ßk¯V¨Fù¤­I¯V´F ¥ ¯V…¯q¯V@Fœ½å³V8…¯Œ_µV@Fœ½µVD]N_¶V\…¯Œ_¶VdS]­q¶Vlƒd]ßk·Vxx]ºq·V€ƒ˜]ßk·VŒº]ºq·V”ƒØ]ßk·V ƒ†O×l·Vȃ¹OÁm·Và…¯Š>·VðƒqP•>¸Vø…¯Œ_¸V …¯Œ_¸V …¯‰s¸V †qP•>¹V( …¯•s¹V8 …¯¡sºVH …¯8v»Vh Fœ½$_¾Vˆ …¯Œ_¿V Fœ½._¿Vœ …¯Œ_ÁV¤ Fœ½dºÁV° …¯Œ_ÂV¸ Fœ½³TÂVà …¯e]ÄVð Fœ½ÒÅV!…¯¨sÆV(!Fœ½ñsÊVô!…¯tËV "Fœ½0tÍV<"…¯¨sÎVd"Fœ½stÒVÌ"…¯tÓVä"Fœ½‡tÕV#…¯Œ_ÖV#Fœ½øèÖV #…¯­t×VP#Fœ½øèÜVˆ#…¯ÆtÝV¨#Fœ½øèàV$…¯étáVT$Fœ½tuéVì&…¯îòêVü&Fœ½øèëV,'…¯œuìVl'Fœ½ÓuóV¬'…¯Œ_õV´'Fœ½ÓuõVÄ'…¯Œ_÷VÌ'Fœ½Óu÷VÜ'…¯áuùV<(Fœ½5vW(…¯îòW (Fœ½øèWÐ(…¯–vWX)Fؤ wW¼*FskŒ_WÈ*Fê¤ßkWô*Fù¤)wW+F ¥KwWP+…¯îòW`+Fœ½øèW+…¯fwW,Fؤ w)Wˆ-FskŒ_*W”-Fê¤ßk*WÀ-Fù¤)w*WÌ-F ¥Kw*W.…¯Ëw*W\.Fœ½ z1W¼/…¯kz3Wì/Fؤ-8W<1FskŒ_9W2Fê¤ßk9WX2Fù¤Ól9Wd2F ¥79W„2…¯Œ_9WŒ2Fœ½–z9W¬2…¯Œ_:W´2Fœ½µz:WÔ2…¯£ð;Wä2Fœ½øèW43Fœ½øè?WH3…¯Œ_@WP3Fœ½Ìz@Wt3…¯£ðAW„3Fœ½øèBW˜3…¯Œ_CW 3Fœ½ÌzCWÄ3_^{DW4q^.{FWL4­^\|TWŒ6Â^ð|aW7Ò^K}gW°7ã^g}mW8_JdpW|8_­~rW ;-_Ú~xW<;>_`~W<I_„WÌ<…¯Œ_‰WÔ<Fœ½Ùá‰W=…¯Œ_ŠW=Fœ½ЏŠW=…¯Œ_‹W=Fœ½Џ‹W(=…¯Ø0ŒW@=Fœ½«ŽWp=…¯Ø0Wˆ=Fœ½«‘W¸=…¯i’WÐ=Fœ½µv”Wè=…¯½–W>Fœ½î›W˜>…¯€WÈ>Fœ½`(¢W?…¯Œ_¤W?Fœ½€¤W?…¯%€¥WD?Fœ½<€ªWx?…¯Œ_«W€?Fœ½(«WŒ?…¯I€¬W¼?Fœ½b€±Wð?__¾€²WÔ@n_Ѐ´Wü@_ü€µW4A—_0·WlA¦_¹WüB»_ ‚»WPDâ_s‚ÈWE…¯ŽLËW EFœ½òúÌW0Eø_õ‚ÍWˆE`ƒÑWØE3`vƒÙWXGP`ŃâW”Ho`À„íW¨L€`$…öWðL˜`…ýWÀM©`Þ…XN¶`†X0NÓ`D†XLNï`x†XhNa·˜XôR(a‡X SNaɇ XT€aˆ X¤T¥a_‰XLU´a‰‰X„UØa^ŠXŒVb¶Š$X(W;bêŠ'X¨W…¯Œ_*X°WFœ½‹*XðW…¯Œ_,XøWFœ½B‹,X8X…¯ÿ.XHXFœ½õÓ/X\X…¯ÿ0XlXFœ½Ò1X„X…¯Ø02XœXFœ½«4XÌX…¯Œ_5XÔXFœ½±­5XY…¯Ðî6XYFœ½±­7X,Y…¯p‹8XXÌYFœ½ÐÝ>XØY…¯¤‹?XðYFœ½ÐÝAXZ…¯e]BX(ZFœ½Ï‹CXœZ…¯Œ_DX¤ZFœ½._DX°Z…¯Œ_FX¸ZFœ½._FXÄZ…¯à‹HXÜZFœ½ŒJXH[…¯Œ_KXP[Fœ½._KX\[…¯À-MXl[Fœ½ŒNXœ[…¯.ŒOXÄ[Fœ½±­SXœ\…¯ÞªTX´\Fœ½$_VXÐ\…¯\WXè\Fœ½ÎàYX]…¯áºZX]Fœ½ á\X<]…¯Œ_]XD]Fœ½._]XP]…¯n_Xp]Fœ½$_bXÈ]…¯Œ_cXÐ]Fœ½._cXÜ]…¯<_eXì]Fœ½±­fX^…¯Œ_gX^Fœ½gX^…¯¡hX8^Fœ½$_kXX^ºlX`^åbºlXh^ýbºlXp^cºlXx^v~ºlX|^~ºlX€^H/ºlXˆ^]N_lX_¶cÉlX_ÍclX˜_écnXÄ_óc-pX`þcGrXadŸtXŒbdòyX¤b3d~X¬cKd‘ƒXd~dG‘ˆX4d”dœ‘‹X eÇdÁ‘‘X¼eÔdñ‘–XÐee'’™X f>e©’žXPfUe»’¢Xdfbeð’£X¬fre7“¤X¸g†eP“¥Xhžee“¨XLh¨eû“ªXÔhØe'”­X\jáe–²Xlvôe'–¶X€vf–ºXw fµ–¾X(w!fÞ–ÂXmßkâYXÀNmߨâY`ÀƒamßkâYlÀƒ†O×lâY”Àƒ¹OÁmâY¬ÀæCV-©âYXÁæCV½sãYhÁæCVÎsäY ÂæÈO×mæY|ÂæÈO×lçYŒÂæMùmçY$ÃæMy©éY´ÃæMnêYØÃ…¯¹nëYèÃqP×lìYðÃ…¯Œ_ìYøÃ…¯Œ_ìYÄ…¯¼ªìYĆqP×líY Ä…¯ȪíY0Ä…¯ÔªîY@Ä…¯Œ_ïYHÄFœ½ÛªïYTÄ…¯âªðYdÄFœ½éªñY˜Ä…¯òªòY°ÄFœ½þªôY@Å…¯«õYXÅFœ½þª÷Y¨Å…¯´¨øYÀÅFœ½IiúYØÅ…¯´¨ûYðÅFœ½IiýYÆ…¯´¨þY ÆFœ½IiZ8Æ…¯´¨ZPÆFœ½IiZhÆ…¯´¨Z€ÆFœ½IiZ˜Æ…¯´¨Z°ÆFœ½Ii ZÈÆ…¯´¨ ZàÆFœ½Ii ZøÆ…¯Œ_ ZÇFœ½7ñ ZÇ…¯âªZÇFœ½±8Z,Ç…¯´¨ZDÇFœ½\«Z¼Ç…¯ÿZÌÇFœ½§ZàÇ…¯ÿZðÇFœ½—ßZÈ…¯f«ZÈFœ½}«Z$È…¯ÿZ4ÈFœ½—ßZHÈ…¯f«ZXÈFœ½}«ZhÈ…¯—«!ZàÈFؤV.Z$ËFskŒ_/Z ÌFê¤ßk/ZdÌFù¤Òã/ZpÌF ¥'V/Z¤Ì…¯´¨/Z¼ÌFœ½Ii1ZÔÌ…¯8¬2ZôÌFœ½¼k5ZÍ…¯8¬6Z4ÍFœ½ök9ZlÍ…¯8¬:ZŒÍFœ½¼k=Z¬Í…¯´¨>ZÄÍFœ½Ii@ZÜÍ…¯´¨AZôÍFœ½IiCZ Î…¯´¨DZ$ÎFœ½IiFZ<Î…¯´¨GZTÎFœ½IiIZlÎ…¯´¨JZ„ÎFœ½IiLZœÎ…¯´¨MZ´ÎFœ½IiOZÌÎ…¯´¨PZäÎFœ½IiRZüÎ…¯´¨SZÏFœ½IiUZ,Ï…¯´¨VZDÏFœ½IiXZ\Ï…¯´¨YZtÏFœ½Ii[ZŒÏ…¯´¨\Z¤ÏFœ½Ii^Z¼Ï…¯´¨_ZÔÏFœ½IiaZìÏ…¯´¨bZÐFœ½IidZÐ…¯´¨eZ4ÐFœ½IigZLÐ…¯´¨hZdÐFœ½IijZ|Ð…¯´¨kZ”ÐFœ½IimZ¬Ð…¯´¨nZÄÐFœ½IipZÜÐ…¯´¨qZôÐFœ½IisZ Ñ…¯´¨tZ$ÑFœ½IivZ<Ñ…¯âªwZLÑFœ½±8xZxÑ…¯K¬yZÑFœ½±8{Z¨Ñ…¯âª|Z¸ÑFœ½±8}ZÌÑ…¯U¬~ZäÑFœ½-ù€Z<Ò…¯k¬Z\ÒFœ½dÓ„ZŒÒ…¯K¬†Z¤ÒFœ½bÒˆZÀÒ…¯K¬‰ZØÒFœ½bÒ‹ZôÒ…¯âªŒZÓFœ½±8ZÓ…¯K¬ŽZ0ÓFœ½±8ZHÓ…¯K¬‘Z`ÓFœ½bÒ“Z|Ó…¯y¬”ZœÓFœ½l—ZèÓ…¯K¬˜ZÔFœ½•¬šZÔ…¯´¨›Z0ÔFœ½IiZHÔ…¯K¬žZ`ÔFœ½Ÿ¬ Z„Ô…¯K¬¡ZœÔFœ½©¬£Z´Ô…¯K¬¤ZÌÔFœ½bÒ¦ZäÔ…¯³¬§Z$ÕFؤ謮Z(ÖFskŒ_¯ZÌÖFê¤ßk¯Z×Fù¤ÿ¬¯Z ×F ¥­¯Z4×…¯Œ_¯Z<×Fœ½¥·¯Z„×…¯Œ_°ZŒ×Fœ½M°Z¸×…¯Œ_±ZÀ×Fœ½P­±ZØ…¯Œ_²ZØFœ½‰²Z(Ø…¯Œ_³Z0ØFœ½–³Z4Ø…¯âª´ZDØFœ½}­µZ¤Ø…¯Œ_¶Z¬ØFœ½£­¶Z¸Ø…¯Œ_·ZÀØFœ½Ù­·ZàØ…¯Œ_¸ZèØFœ½2®¸ZÙ…¯Œ_¹Z$ÙFœ½q®¹ZTÙ…¯K¬ºZlÙFœ½ƒ®¼Z„Ù…¯K¬½ZœÙFœ½®¿Z´Ù…¯K¬ÀZÌÙFœ½—®ÂZäÙ…¯K¬ÃZüÙFœ½—®ÅZÚ…¯6&ÆZ$ÚFœ½¡®ÇZLÚ…¯«®ÈZdÚFœ½ ]ÊZ€Ú…¯6&ËZÚFœ½-ùÌZÈÚ…¯Ø0ÍZàÚFœ½«ÏZÛ…¯Ø0ÐZ(ÛFœ½«ÒZXÛ…¯Œ_ÓZ`ÛFœ½dºÓZlÛ…¯K¬ÔZ„ÛFœ½•ìÖZœÛ…¯Ø0×Z´ÛFœ½«ÙZäÛ…¯Ø0ÚZüÛFœ½«ÜZ,Ü…¯Ø0ÝZDÜFœ½«ßZtÜ…¯Ø0àZŒÜFœ½«âZ¼Ü…¯Ø0ãZÔÜFœ½«åZÝ…¯ßLæZÝFœ½¡®çZ$Ý…¯‡èZ4ÝFœ½ ]éZHÝ…¯ßLêZXÝFœ½-ùëZŒÝ…¯Ø0ìZ¤ÝFœ½«îZÔÝ…¯Œ_ïZÜÝFœ½«ïZèÝ…¯·®ðZ8ÞFؤâ®øZ\ßFskŒ_ùZ àFê¤ßkùZHàFù¤@IùZTàF ¥ð®ùZ„à…¯ý®ùZÄàFؤâ®[¼áFskŒ_[`âFê¤ßk[”âFù¤@I[ âF ¥ð®[Äâ…¯F¯[ôâFœ½«[Tã…¯a¯[dãFœ½«[xㅯ⪠[ˆãFœ½Ѱ [ôã…¯~¯ [äFœ½ì¾[”ä…¯”¯[´äFœ½ì¾[ää…¯¡¯[ åFœ½«[Xå…¯¡¯[€åFœ½«[Àå…¯´¨[ØåFœ½±8 [üå…¯´¨![æFœ½Ii#[,æ…¯·¯$[LæFœ½<‡'[xæ…¯·¯([˜æFœ½Ư+[Øæ…¯ßL,[èæFœ½¡®-[øæ…¯ßL.[çFœ½ ]/[ç…¯Я0[8çFœ½Ii3[Xç…¯Я4[xçFœ½±87[ ç…¯Я8[ÀçFœ½á¯;[äç…¯ÿ<[ôçFœ½§=[è…¯ÿ>[èFœ½—ß?[,è…¯f«A[<èFœ½}«B[Lè…¯ë¯D[lèFœ½<‡G[øè…¯ßLH[éFœ½-ùI[<é…¯âªJ[LéFœ½±8K[`é…¯K¬L[xéFœ½c8N[é…¯K¬O[¨éFœ½•ìQ[Àé…¯K¬R[ØéFœ½!òT[ðé…¯K¬U[êFœ½ÛñW[ ê…¯Ø0X[8êFœ½«Z[hê…¯Œ_[[têᶪ °[[€êáñª°\[ˆê]N_^[˜êÛm”_^[ êïm]a^[¨ên°^[°ê n<°^[Èê+nY°b[ôêþcаd[8ë\88Fœ½DÆ@\P8…¯Œ_A\X8Fœ½QÆA\d8…¯AÅC\|8Fœ½_ÆE\˜8…¯AÅF\°8Fœ½lÆH\È8…¯AÅI\à8Fœ½ÆK\ø8…¯À-L\9Fœ½±­M\9…¯Œ_N\ 9Fœ½§N\09…¯(ÆO\P9Fœ½ŽÆR\l9…¯›ÆS\¤9Fœ½4ÇY\´=…¯AÅ[\Ì=Fœ½FÇ]\ð=…¯AÅ`\>Fœ½DÆb\ >…¯Œ_c\(>Fœ½QÆc\4>…¯(Æe\T>Fœ½7Æh\p>…¯ÿi\€>Fœ½kÕj\>…¯ÿk\ >Fœ½kÕl\°>…¯Œ_m\¸>Fœ½dºm\Ä>…¯Œ_n\Ì>Fœ½ìn\Ø>]N_o\?ÊqxÇo\L?ÐqžÇr\`?Üq‘Èu\ìBäq¤Èx\CïqÙÈ|\4CrõÈ€\HCr"É„\hCr}ɉ\ÔD$rÊ\ÐE/r,Ê”\äE8r,Ê—\øEErCÊš\HFPraÊŸ\\FZr~ʤ\Gcr‘ʧ\0GmrêÊ­\ôGxrýʰ\0H‚r˳\DHr'˶\xHœr:˹\H«rM˼\ÜH²rqË¿\@Iºr„ËÂ\TIÃr›ËÅ\€IÜr½ËÉ\JårÐËÌ\0JïrçËÏ\DJsúËÒ\XJ!sMÌÕ\]S…¯aÍ?](SFœ½©¬A]DS…¯aÍB]\SFœ½Ÿ¬D]„S…¯aÍE]œSFœ½ƒ®G]´S…¯aÍH]ÌSFœ½®J]äS…¯aÍK]üSFœ½ƒ®M]T…¯aÍN],TFœ½—®P]DT…¯aÍQ]\TFœ½•ìS]tT…¯aÍT]ŒTFœ½ƒ®V]¤T…¯aÍW]¼TFœ½ƒ®Y]ÔT…¯aÍZ]ìTFœ½ƒ®\]U…¯aÍ]]UFœ½ƒ®_]4U…¯†Í`]TUFœ½<‡c]tU…¯†Íd]”UFœ½Ưg]äU…¯aÍh]üUFœ½c8j]V…¯aÍk],VFœ½Ûñm]DV…¯aÍn]\VFœ½c8p]tV…¯aÍq]ŒVFœ½•ìs]¤V…¯aÍt]¼VFœ½Ûñv]ÔV…¯aÍw]ìVFœ½!òy]W…¯aÍz]WFœ½ƒ®|]4WÂs¦Í}]LW×sÄÍ]pWøsñÍ€]°WtñÍ‚]ðW*t9΄]4XEtfÎ…]|XYt‘·]¨XqtÙΉ]ÜXzt‡ÏŒ]4Y tšÏ]HY®tšÏ]\Y¼töÏ‘]ì[ætˆÐ“]¨\uÐЖ]à\NuñЙ]H]juÑœ]¬]uhÑŸ],^ŸuÑ£]`^²uÑÑ¥]Ü^ÖuíÑ©]ø^íuÒª]<_ôu¡Ò«]¼_vPÓ®]ø_+vÙÓ±]„`QvÔ´]˜`kv2Ô¶]´`rvŒÔ·]Øé]XhÌwyØð]Ðhçw”Øó]ôhûw¸Øö]0ixÙù]xixÊÙú]k'x$Úü]ˆk6xmÚþ]ÌkAx­Ú^LlQxØÚ^€lx0Û^äl©x’Û ^`Œ¸.„0 F`8¼J„n N`\¼b„, U`˜¾œ„U \`¸¾Ç„d b`ÔÀ…¯± i`üÀƒ1…ã m`Áƒ;Ÿm`ÁƒmÐÔm` ÁƒL…ŠNm`,Á…¯ m`DÁFœ½ýío`hÁ…¯ p`¨ÁFؤn w`üÂFskŒ_x`ÀÃFê¤ßkx`üÃFù¤Dãx`ÄF ¥| x`(Ä…¯„Hx`8ÄFœ½‰íy`TÄ…¯„Hz`dÄFœ½‰í{`˜Ä…¯ž |`°ÄFœ½¬ ~`ÈÄ…¯Â €`ÅFؤ ˆ`XÆFskŒ_‰`ÇFê¤ßk‰`XÇFù¤$ ‰`dÇF ¥, ‰`ŒÇ…¯Œ_‰`”ÇFœ½9 ‰`´Ç…¯¹n‹`ÄdžW Œ`Ìǃ™†ßk`ØÇ¥†d `àǃ²†ßkŽ`ìdžq Ž`øÇƒÙ†ßk’`Èó†‰ ’` ȃ‡ßk“`È ‡– “` ȃ+‡ßk”`,È9‡£ ”`4ȃF‡ßk•`@ÈV‡° •`Hȃ`‡ßk–`TÈm‡½ –`\ȃx‡ßk—`hȆ‡Ê —`pȃ‡ßk˜`|È›‡× ˜`ˆÈƒ§‡ßkš`”ȶ‡šÏš` ÈƒÅ‡ßkœ`¬ÈׇšÏœ`¸Èƒä‡ßkž`ÄÈô‡é ž`Ìȃ ˆßkŸ`ØÈ!ˆé Ÿ`àȃ1ˆßk `ìÈDˆö  `øÈƒMˆßk¢`ÉYˆ ¢`Ƀlˆßk¥`É‚ˆ? ¥`(Ƀ“ˆßk§`4ɧˆZ §`<Ƀ²ˆßk¨`HÉÀˆp ¨`PɃֈßk©`\É ©`dɃýˆßkª`pɉ› ª`|Ƀ‰ßk¬`ˆÉ'‰º ¬`”Ƀ4‰ßk®` ÉD‰p ®`¨ÉƒW‰ßk¯`´Éƒ†O×l¯`¼Éƒ¹OÁm¯`ÔÉ…¯+ ¯`äɃqP˜°°`ìÉ…¯} °`üɃqP† ±`Ê…¯Û ±`,ʃQï µ`4ʃUMÒãµ`<ʃ!Q×lµ`Dʃ=Q‡µ`LÊ…¯N µ`\ʃqP$ ¶`dÊ…¯Ë”¶`tʃqPÝâ·`|Ê…¯ï ·`ŒÊƒqPø ¸`”Ê…¯„H¸`¤ÊƒqP˜G¹`¬Ê…¯ ¹`¼ÊƒqP˜ º`ÄÊ…¯ë º`ÔʃqPô »`ÜÊ…¯Z »`ôʃQÓl½`üʃUMh ½`Ë…¯Õ ½`˃QÓl¿`$˃UMã ¿`,Ë…¯Õ ¿`D˃QÓlÁ`L˃UMã Á`TË…¯ýKÁ`h˃qPÒãÂ`pË…¯ýKÂ`„˃qPÒãÃ`ŒË…¯C Ã`¤ËƒQÓlÅ`¬ËƒUM}Å`´Ë…¯ß Å`Ô˃QÓlÈ`Ü˃UMø È`ä˃!Q È`ìË…¯ È`̃QÓlÊ` ̃UM˜°Ê`Ì…¯ŽLÊ`(̃qPÓlË`0Ì…¯C Ë`D̃qPP Ì`LÌ…¯„HÌ``̃qP˜GÍ`hÌ…¯# Í`€ÌƒQ˜GÏ`ˆÌƒUMÒãÏ`Ì…¯– Ï`¨ÌƒQ˜GÑ`°ÌƒUM½Ñ`¸Ì…¯C Ñ`Ì̃qPP Ò`ÔÌ…¯E Ò`ä̆qP˜°Ó`ôÌ…¯N Ó`͆qP† Ô`Í…¯W Ô`$͆Qï Õ`4͆UMÒãÕ`D͆!Q×lÕ`T͆=Q‡Õ`dÍ…¯` Õ`t͆qP$ Ö`„Í…¯i Ö`”͆qPÝâ×`¤Í…¯r ×`´Í†qPø Ø`ÄÍ…¯{ Ø`Ô͆qP˜GÙ`äÍ…¯„ Ù`ô͆qP˜ Ú`Î…¯ Ú`ΆqPô Û`$Î…¯– Û`4ΆQÓlÜ`DΆUMh Ü`TÎ…¯Ÿ Ü`dΆQÓlÝ`tΆUMã Ý`„Î…¯¨ Ý`”ΆQÓlÞ`¤Î†UMã Þ`´Î…¯± Þ`ÄΆqPÒãß`ÔÎ…¯º ß`äΆqPÒãà`ôÎ…¯Ã à`φQÓlá`φUM}á`$Ï…¯Ì á`4φQÓlâ`DφUMø â`Tφ!Q â`dÏ…¯Õ â`tφQÓlã`„φUM˜°ã`”Ï…¯Þ ã`¤Ï†qPÓlä`´Ï…¯ç ä`ÄφqPP å`ÔÏ…¯÷ å`äφqP˜Gæ`ôÏ…¯ æ`ІQ˜Gç`ІUMÒãç`$Ð…¯  ç`4ІQ˜Gè`DІUM½è`TÐ…¯ è`dІqPP é`tÐ…¯Œ_é`|ÐFœ½2 é`èÐ…¯Œ_ê`ðÐFœ½2 ê`\Ñ…¯Œ_ë`dÑŒ‰? ë`pу˜‰ßkí`|ѧ‰M í`ˆÑƒ³‰ßkð`”у†O×lð`°Ñƒ¹OÁmð`ÈÑähÕ ð`LÒƒ‰è ó`pÒ…¯ì ó`ˆÒƒQ˜°õ`ÒƒUMè õ`˜Ò…¯U õ`¸ÒƒQd ø`ÀÒƒUMµÿø`ÈÒƒ!Qè ø`ÐÒ…¯» ø`àÒ†Q˜°ù`ðÒ†UMè ù`Ó…¯Ä ù`Ó†Qd ú` Ó†UMµÿú`0Ó†!Qè ú`@Ó]N_ú`XÓ…¯¹nú`hÓ:ŠÕ û`pÓƒMŠßkû`|ÓbŠÕ û`„ÓƒtŠßkû`Óƒ†O×lû`˜Óƒ¹OÁmû`°ÓæCV ! û`ðÓæCV½sü`ÔæCVÎsý`PÔæÈO×mÿ`xÔæÈO×laˆÔæMùmaÄÔæM! aüÔæMna ÕƒŠŒïºa(ÕƒšŒÁ! a0Õƒ°ŒÑ! a8Õƒ¾Œß! a@Ճ،ß! aHÕƒñ! aPÕƒ" aXÕƒ*" a`ÕƒQ" ahÕƒt" apÕƒ¥'" axÕƒ»Èda€Õ…¯6" aðÕpU3# aHÖƒïºaTÖƒÇ@# adÖƒÛI# a€Öƒùb# aœÖƒ Žw# a¸Ö]N_aÐÖ…¯¹naàÖ# aèÖƒöŒßkaôÖ–# aüÖƒßka׃†O×la׃¹OÁma(׿CVË# ah׿CV½sax׿CVÎsaÈ׿ÈO×mað׿ÈO×laØæMùma<ØæMÞ# atØæMna˜Ø…¯Œ_a ØFœ½QäaÄØ…¯ï# aÔØFœ½ô# !a䨅¯Œ_#aìØFœ½$ #aÙ…¯Œ_%aÙFœ½g$ %apÙ…¯Œ_'axÙFœ½…$ 'a„Ù…¯$ )a´ÙFœ½¥$ .aìÙ…¯Â$ /a ÚFœ½Õ$ 2aDÚ…¯Œ_3aLÚFœ½T% 3aˆÚ…¯Œ_5aÚFœ½‡% 5a¸Ú…¯Œ_6aÀÚFœ½à% 6aüÚ…¯& 8a,ÛFœ½I& =aÜ…¯Œ_>aÜFœ½c& >aDÜ…¯Œ_@aLÜFœ½& @atÜ…¯Ë”Ba„ÜFœ½ýíCa Ü…¯Œ_Da¨ÜFœ½°& DaÐÜ…¯Ø0FaèÜFœ½«HaÝ…¯Ë”Ia(ÝFœ½á& JatÝ…¯Ë”La„ÝFœ½' MaàÝ…¯Ø0NaøÝFœ½«Pa(Þ…¯Ø0Qa@ÞFœ½«SapÞ…¯-' Ta ÞFœ½F' YaÔÞ…¯Œ_[aÜÞFœ½X' [aèÞ…¯Ë”]aøÞFœ½M^aß…¯Œ__aßFœ½Œ”_a ß…¯m' `a0ßFœ½v' aaLß…¯' catßFœ½F' gaìß…¯m' iaüßFœ½C”ja à…¯Ë”kaàFœ½Mla,à…¯m' ma<àFœ½C”naLà…¯Ë”oa\àFœ½Mpalà…¯¨' qa|àFœ½F' raŒà…¯±' ta¤àFœ½¿' vaÐà…¯Ð' waøàFœ½è' {a(á]N_}a@á…¯¹n}aPáÏŽ( ~aXáƒëŽßk~adá ( ~aláƒ'ßk~ax჆O×l~a€áƒ¹OÁm~a˜áæCV7( ~aØáæCV½saèáæCVÎs€a8âæÈO×m‚a`âæÈO×lƒapâæMùmƒa¬âæMJ( …aäâæMn†aã…¯[( ‡aãFœ½j( ˆaœã…¯Œ_Ša¤ãFœ½ˆ( Ša´ã]N_aÌã…¯¹naÜãô¯( ŽaäãƒßkŽaðã.¯( ŽaøãƒMßkŽa䃆O×lŽa 䃹OÁmŽa$äæCVä( ŽadäæCV½satäæCVÎsaÄäæÈO×m’aìäæÈO×l“aüäæMùm“a8åæM÷( •apåæMn–a”å]N_—a å…¯Œ_—a¨åÔ) —a°åƒãßk—a¼åô) —aÄ僑ßk˜aÐ僆O×l˜aì價OÁm˜aæ‘) ˜aæ!‘F) ˜a æƒ,‘ßk™a,æƒD‘×l™aDæƒV‘òú™aäæ…¯Œ_šaìæ…¯¹nšaüæƒqP×l›aç…¯!* ›aç…¯1* œa$ç†qP×la4çš‘Z* a@ç…¯l* ŸaXçƒQz* ¡a`çƒUM‚* ¡ah烆O×l¡ap烹OÁm¡aˆç¤T·* ¡aœç´‘¿* ¡a¬çƒÒ‘‚* ¢a¸çƒå‘z* ¢aÄçƒø‘Ì* ¢aØç…¯Œ_¢aàçFœ½Ô* ¢aìç]N_£aè…¯¹n£aèîŒô* ¤aèƒöŒßk¤a(èô* ¤a0èƒßk¤a<胆O×l¤aD胹OÁm¤a\èæCV)+ ¤aœèæCV½s¥a¬èæCVÎs¦aüèæÈO×m¨a$éæÈO×l©a4éæMùm©apéæM<+ «a¨éæMn¬aÌé…¯M+ ­aäéFœ½…߯aüé…¯Œ_°aêFœ½lâ°aê…¯[+ ±a8êFœ½l+ µadê…¯š+ ¶aÌêFؤQ, ÁaìëFskŒ_Âa˜ìFê¤ßkÂaÐìFù¤ÝâÂaÜìF ¥_, Âaí…¯ÁÕÂa,íFœ½ûÃa@í…¯þÄaPíFœ½Åatí…¯Œ_Æa|íFœ½¼Æaˆí…¯ŽLÇa˜íFœ½¢Èa¨í…¯Ë”Éa¸íFœ½MÊaÈí…¯l, ËaèíFœ½ƒ, Îaî…¯Œ_Ïa îFœ½ÅÏaî…¯Œ_Ða îFœ½¼Ða,î…¯­, Ña¤îFؤVÞaHðFskŒ_ßa ñFê¤ßkßaHñFù¤ÒãßaTñF ¥'Vßa”ñ…¯K- ßa¬ñFœ½§áaÄñ…¯Y- âaìñFœ½u- æa ò…¯‚- ça`òFœ½ûhîaÆZ’:HïaÆm’]HïaÆ’¶Hïaèóƒ´’O. ïaðóƒÄ’[. ïaüó…¯[. ða ôæÈO×mña@ôæÈO×lòaPôæMùmòaŒôà’|. ôa˜ôë’„. ôa¨ôæM‘. õaÔôæMnöaøô…¯š. ÷aõá*xŒ_ùa(õ…¯š. ùaDõá*xŒ_ûaXõ…¯M+ ûapõFœ½ì¾ýaìõ…¯Œ_þaôõFœ½á. þaö…¯M+ böFœ½«bÈöô’–/ bÔö…¯½/ bìöƒQà/ bôöƒUMõ/ büöƒ†O×lb÷ƒ¹OÁmb÷Øe0 bX÷ÁM¡0 bl÷ƒ“©0 bˆ÷ƒ“Ï0 b°÷…¯ä0 bà÷Fœ½1 b¬ø…¯Œ_b´øFœ½'1 b¸ø…¯31 bÐøFœ½'1 bðø…¯ÕfbùFœ½^1 b0ù…¯Œ_b8ùFœ½‚1 bhù…¯ÕfbxùFœ½^1 b¨ù…¯”1 bÀùFœ½'1 !bú…¯¢1 "bhúFؤ2 +bûFskŒ_,b4üFê¤ßk,bhüFù¤)2 ,btüF ¥:2 ,bœü…¯”1 ,b´üFœ½'1 .bý…¯Œ_/býFœ½òú/b$ý…¯Œ_0b,ýFœ½òú0b8ý…¯Œ_1b@ýFœ½òú1bLý…¯P2 2blýFœ½g2 5bÐý…¯çá6bðýFœ½13 9bXþ…¯Œ_:b`þFœ½«:blþ…¯L3 ;bŒþFœ½«>b¨þ…¯Œ_?b°þFœ½{3 ?bÐþ…¯ÿ@bàþFœ½‘3 Abôþ…¯¦3 CbÿFœ½Ø3 Db`ÿ…¯â3 Eb˜ÿFœ½84 Kb,…¯I4 Lb\Fœ½Æ4 Qbì…¯ÿRbüFœ½‘3 Sb…¯äåUbHFœ½ã4 [b€…¯Õf\b…¯Œ_]b˜FB[“u]b°…¯“u_bȃ”[‡abÐÆÈO×mab ÆÈO×lbbÆMùmbblƒMbvdb¬ÆMnebÐ]N_fb …¯¹nfb³“ 5 gb$ƒF‡ßkgb0Á“ 5 gb8ƒÍ“ßkgbD;+ 5 gbLƒ}ÔßkgbXø‰ 5 gb`ƒÛ“ßkgblæ“ 5 gbtƒï“ßkgb€ƒ†O×lgbˆƒ¹OÁmgb æCV@5 gbàæCV½shbðæCVÎsib@æÈO×mkbŒæÈO×llbœæMùmlbØæMS5 nbæMnob4…¯Œ_pb<Fœ½d5 pbH…¯Œ_qbPFœ½òúqb\…¯Œ_rbdFœ½òúrbp…¯Œ_sbxFœ½‰5 sb …¯±5 tbÐFœ½Ö5 yb…¯ó5 zbdFœ½)6 „b´…¯S6 …bÌFœ½‡6 ‡bè…¯­6 ˆbFœ½Ùù‹b(…¯À6 Œb€Fœ½7 •bô…¯27 –b Fœ½;7 —b …¯Œ_˜b Fœ½‰5 ˜bD …¯Q7 ™bl Fœ½…7 b´ …¯«7 žbÌ Fœ½¹7  b …¯Ø7 ¡b FؤS8 ®b FskŒ_¯b¸ Fê¤ßk¯bì Fù¤s8 ¯bø F ¥8 ¯b, …¯Œ_¯b4 Fœ½òú¯b@ …¯27 °bP Fœ½;7 ±b` …¯«7 ²bx Fœ½¹7 ´bÄ …¯„HµbÔ Fœ½Ë8 ¶b…¯«7 ·b0Fœ½¹7 ¹b|…¯Œ_ºb„Fœ½ð8 ºb¬…¯9 »bÔFœ½…7 ¿b…¯-9 Àb4Fœ½C”Âb”…¯­6 Ãb´Fœ½ÙùÆbÔ…¯Œ_ÇbÜFœ½òúÇbè…¯­6 ÈbFœ½ÙùËb(…¯;9 ÌbPFœ½S9 Ðb„…¯9 ÕbäFœ½ì9 ßbD…¯27 àbTFœ½;7 ábd…¯Œ_âblFœ½òúâbx…¯­6 ãb˜Fœ½Ùùæb¸…¯27 çbÈFœ½;7 èbØ…¯Œ_ébàFœ½‰5 éb…¯Q7 êb0Fœ½…7 îbx…¯«7 ïbFœ½¹7 ñbÜ…¯Œ_òbäFœ½òúòbð…¯Õfób…¯Œ_ôbFB[“uôb …¯“uöb8ƒ”[‡øb@ÆÈO×møb|ÆÈO×lùbŒÆMùmùb܃MbvûbÆMnüb@]N_ýbX…¯¹nýbhp”&: þbpƒ„”ßkþb|š”&: þb„ƒ§”ßkþbƒ†O×lþb˜ƒ¹OÁmþb°æCV[: þbðæCV½sÿbæCVÎscPæÈO×mcxæÈO×lcˆæMùmcÄæMn: cüæMnc …¯;9 cHFœ½S9 c|…¯†: cÜFœ½ì9 c<…¯Œ_cDFœ½;7 cT…¯Œ_c\Fœ½Ùùc`…¯27 cpFœ½;7 c€…¯Œ_cˆFœ½òúc”…¯27 c¤Fœ½;7 !c´…¯Œ_"c¼Fœ½òú"cÈ…¯¢÷#cFœ½ß: *cX…¯Œ_+c`Fœ½Ùù+cd…¯Œ_,clFœ½òú,cx…¯27 -cˆFœ½; .cœ…¯Œ_/c¤Fœ½òú/c°…¯Œ_0c¸Fœ½òú0cÄ…¯"; 1cFœ½; 9c\…¯Œ_:cdFœ½òú:cp…¯N; ;c˜Fœ½f; ?cÌ…¯«; Dc,Fœ½ú; NcŒ…¯Œ_Oc”Fœ½6< Oc¤…¯N; PcÌFœ½f; Tc…¯h< Yc`Fœ½ú; ccÀ…¯Œ_dcÈFœ½6< dcØ…¯·< ecøFœ½Î< hc…¯·< ic8Fœ½Î< lcX…¯Œ_mc`Fœ½Ùùmcd…¯Œ_nclFœ½õ< ncx…¯Œ_oc€Fœ½òúocŒ…¯Œ_pc”Fœ½;7 pc¤…¯Œ_qc¬Fœ½B= qcü…¯r= rc Fœ½Ó= sc …¯ÿtc0Fœ½> uc\…¯Œ_wcdFœ½òúwcp…¯Œ_xcxFœ½;7 xcˆ…¯Œ_ycFœ½B= ycà…¯r= zcðFœ½Ó= {c…¯> |c$Fœ½(> cP…¯m> „c¨Fœ½·> c…¯Ü> Žc$Fœ½«‘chÊ”ë> ’cp…¯5“c€ƒqP»”cˆƒ†O×l”cƒ¹OÁm”c¨]N_”c´…¯Œ_”c¼ª#0? ”că¸#ßk”cÐÈ#8? ”c܃Ö#ßk–cèç#P? –côƒ $ßk™c ƒ†O×l™c( ƒ¹OÁm™c@ …¯Œ_™cH …¯ @ ™c` ƒQ@ ›ch ƒUMS›cp …¯„@ ›c ƒQ½žc˜ ƒUM@ žc  ƒ!QSžc¨ …¯A žc¸ …¯A ŸcÈ †Q@  cØ †UMS cè …¯%A  cø †Q½¡c!†UM@ ¡c!†!QS¡c(!…¯.A ¡cX!Fœ½KA ¦cŒ!…¯.A §c¼!Fœ½-ù¬cø!…¯Œ_­c"Fœ½«­c"…¯Œ_®c"Fœ½ì¾®c("…¯­6 ¯cH"Fœ½Ùù²ch"…¯UA ³c¨"Fœ½KA ºcè"…¯UA »c(#Fœ½-ùÂcp#…¯UA Ãc°#Fœ½-ùÊcø#…¯Œ_Ëc$Fœ½dºËc $…¯é Ìc$$Fœ½kåÎc<$…¯Œ_ÏcD$Fœ½“A ÏcP$…¯ A Ðch$Fœ½ªA Òc $…¯ A Óc¸$Fœ½ªA Õcð$…¯SiÖc%Fœ½³A ×c%…¯ÀA Øc4%Fœ½ËíÛcT%…¯Ë”Ücd%Fœ½ýíÝc€%…¯ÓA Þc¨%Fœ½çA âcÜ%…¯ðA ãc &Fœ½ B ècX&…¯ðA écˆ&Fœ½ì¾îcÄ&…¯Œ_ïcÌ&Fœ½B ïcÜ&…¯Œ_ðcä&Fœ½ì¾ðcð&…¯Œ_ñcø&Fœ½B ñc'…¯Œ_òc'Fœ½ì¾òc'…¯'B ócŒ'Fؤ-ÿc)FskŒ_dÈ)Fê¤ßkd*Fù¤Óld*F ¥7dH*…¯ÕfdX*Fœ½ì¾dl*…¯§B d¼*Fœ½« dX,…¯Œ_ d`,Fœ½' dl,…¯Œ_ dt,Fœ½éB d|,…¯öB d¤,Fœ½C dÜ,…¯Œ_dä,Fœ½6C dT-…¯a¯dd-Fœ½…™dx-…¯ ³dˆ-Fœ½«d -…¯Œ_d¨-Fœ½“A d´-…¯Œ_d¼-Fœ½CC dÈ-…¯Œ_dÐ-Fœ½PC dÜ-…¯ÿdì-Fœ½]C dü-…¯Œ_d.Fœ½†C d(.…¯štd8.Fœ½ªA dT.…¯m' dd.Fœ½ªA dx.…¯œC !d°.Fœ½ÌC 'dü.…¯ŽL(d /Fœ½ªA )ddÈ0Fœ½`D Dd1…¯qD Ed1Fœ½•D Gd81…¯¦D Hdx1Fœ½`D Od¸1…¯×D Pdø1Fœ½ E WdD2…¯ðA Xdt2Fœ½ B ]dÀ2…¯E ^dà2Fœ½«ad3…¯L3 bd 3Fœ½«ed<3…¯Y fdd3Fœ½•8jdÀ3…¯Y kdè3Fœ½‰íod(4…¯‚ pdP4Fœ½NE td„4…¯XE vd¬4Fœ½‰ízdä4…¯Œ_{dì4Fœ½‰í{d5…¯Œ_|d5Fœ½pE |d85…¯}E }d5Fœ½¸E †d6…¯Œ_‡d 6Fœ½ÉE ‡d6…¯ÀA ˆd86Fœ½Qä‹dX6…¯Œ_Œd`6Fœ½QäŒd„6…¯Ë”d”6Fœ½¿' Žd¤6…¯Œ_d¬6Fœ½ÖE d¸6…¯Œ_dÀ6Fœ½ãE dÌ6…¯ÀA ‘dì6Fœ½Ëí”d 7…¯Œ_•d7Fœ½ðE •d 7…¯ÀA –d@7Fœ½ýE ™dd7…¯Œ_šdl7Fœ½F šdx7…¯ÀA ›d˜7Fœ½C”ždÀ7…¯F ŸdÐ7Fœ½C” dä7…¯Ë”¡dô7Fœ½M¢d8…¯Œ_£d 8Fœ½F £d 8…¯!F ¤d@8Fœ½C”§d`8…¯ÀA ¨d€8Fœ½C”«d¨8…¯F ¬d¸8Fœ½C”­dÌ8…¯Ë”®dÜ8Fœ½M¯dì8…¯Œ_°dô8Fœ½‰í°d9…¯@±d9Fœ½‰í²d89…¯4F ³dX9Fœ½GF ¶dx9…¯TF ·d 9Fœ½¸E »dÔ9…¯¦D ¼d:Fœ½uF Ãd˜:…¯†F Äd(;FؤæF Ôd=FskŒ_ÕdØ=Fê¤ßkÕd>Fù¤½Õd >F ¥ôF Õdl>…¯Œ_Õdt>Fœ½G Õd”>…¯ÀA Öd´>Fœ½gÏÙdÔ>…¯Œ_ÚdÜ>Fœ½gÏÚdì>…¯Œ_Ûdô>Fœ½gÏÛd?…¯Œ_Üd?Fœ½F Üd?…¯ÀA ÝdeðIFœ½C”AeJ…¯F Be(JFœ½C”Cef0vjœAW Bfôv‡œ¼W FfHw¥œ^X JfÈwМžX OfÀxáœËX SfüxûœñX Yf8y#±Y afl{MËX jf€_ËX pfH€|ÈZ vfà€–4[ ~f,¬b[ „f\ÁËX ŒfˆÕËX ’f@ˆô—\ ˜f¼ˆ ž½\ žfðˆž]  fP‰5ž[] ¥f`‹Wž|^ «f˜Œ¦ž4_ ¼fxŽÆž•_ ÍfìŽþž•_ Òf`*Ÿ ` ×f @Ÿi` Ýfà_Ÿåa âf𒌟ob éf”¯Ÿb íf4”ÝŸÔb ïf”” «c òf • Ãc öf¸•: Ãc øf–Z ÷c úf–y ¸d ÿf¼–  Ôd gÌ–Æ e g$—è we g`—÷ f gœ¡Äf gœž¡g "gŸG¡>g ,g`Ÿ_¡Æg 2g {¡] 8g´ ¡] =gÜ¢¬¡] Bg ¤Å¡ËX Gg@¥ß¡ûh Mg@¦ö¡] Tg§¢] Yg§)¢qi ^g¼¨8¢] dg@©P¢] igȪs¢üj ng”«ߢ–k vg ¬þ¢Øk |g­6£l ƒg`­W£ËX ‡g„­u£ËX g¨­‘£Xl “g®ª£Œl ™gT®×£Ïl Ÿg¬® ¤i¨Ûƒí"t>i°Ûƒ÷"‡>i¸ÛƒpÒã>iÀÛƒÒã>iÈÛƒª‡>iÐÛ…¯Œ_>iØÛFB[“u>iðÛ…¯“u@iÜÆÈO×mBiÜÆÈO×lCi4ÜÆMùmCih܃MbvEiŒÜÆMnFi°Ü…¯$‡ GiÈÜFœ½-ùIiàÜ…¯2‡ JiÝFœ½N‡ Mi4Ý…¯d‡ NiLÝFœ½-ùPidÝ…¯r‡ QiŒÝFœ½ÎàUiÞ…¯Ї Vi0ÞFœ½ÎàYiØÞ…¯Œ_ZiàÞFœ½°‡ Zi ß…¯¹n[i0ßFœ½Ò‡ \iXß…¯¹n]ihßFœ½°‡ ^iß…¯¹n_i ßFœ½à‡ `iÔß…¯¹naiäßFœ½ò‡ bià…¯¹nci(àFœ½à‡ di\à…¯¹neilàFœ½ò‡ fi à…¯¹ngi°àFœ½Ò‡ hiØà…¯¹niièàFœ½°‡ jiá…¯Œ_kiáFœ½°‡ ki<á…¯ˆ liLáFœ½ ˆ midá…¯Œ_niláFœ½._nixá…¯Œ_pi€áFœ½._piŒá…¯¹nriœáFœ½à‡ siÐá…¯ˆ tiðáFœ½ò‡ wiPâ…¯Œ_xiXâFœ½±­xi´â…¯Eˆ yiÄâFœ½-ùziÔâ…¯Nˆ {iôâFœ½aˆ ~i ã…¯mˆ iXãFœ½Îà…iÈã…¯mˆ †iäFœ½ÎàŒiå…¯©ˆ iTåFœ½Îà•i˜æ…¯Œ_–i æFœ½Þˆ –i¨æ…¯ëˆ —iàæFœ½”‰ i(ê…¯¥‰ žihêFœ½Îà¥i¬ê…¯̉ ¦iüêFœ½Îà®i`ë…¯ø‰ ¯i˜ëFœ½ÎàµiÔë…¯Š ¶iìFœ½ á»i\ì…¯DŠ ¼i¬ìFœ½ÎàÄiôì…¯ø‰ Åi,íFœ½ÎàËihí…¯ø‰ Ìi íFœ½ÎàÒiÜí…¯Š Ói îFœ½ áØidî…¯|Š Ùi|îFœ½—ßÛi¤î…¯2‡ ÝiÄîFœ½ŠŠ àiäî…¯›Š áiïFœ½Îàäi8ï…¯Œ_åi@ïFœ½ºŠ åiTˊ æiŒïFœ½ºŠ ìiÔï…¯éŠ íiðFœ½ŠŠ òi@ð…¯Œ_óiHðFœ½ºŠ ói\ð…¯‹ ôiœðFœ½ºŠ ûiìð…¯%‹ üi<ñFœ½ºŠ j°ñ…¯éŠ jàñFœ½ŠŠ jò…¯Œ_ j$òFœ½ºŠ j8ò…¯‹ jxòFœ½ºŠ jÈò…¯Q‹ jóFœ½ºŠ jŒó…¯Œ_j”óFœ½ºŠ j¨ó…¯›‹ jàóFœ½Ћ #jøô…¯ÿ$jõFœ½§%jõ…¯ÿ&j(õFœ½§'j@õ…¯ÿ(jPõFœ½§)jhõ…¯FR*jxõFœ½á‹ +jŒõ…¯¨ƒ,j¤õFœ½@¬.j¼õ…¯Œ_/jÄõFœ½w¬/jÐõ…¯ê‹ 1jöFœ½~Œ 6jö…¯Œ_7j˜öFœ½«7j¬ö…¯’Œ 8jÜöFœ½²Œ =j$÷…¯׌ >j<÷Fœ½ºŠ @j`÷…¯ìŒ Aj°÷Fœ½ºŠ Ij¨ø…¯Œ_Jj°øFœ½ºŠ JjÄø…¯‹ KjùFœ½ÎàRj ù…¯Œ_Sj¨ùFœ½ºŠ Sj¼ù…¯Œ_TjÄùFœ½ºŠ TjØù…¯ UjúFœ½ºŠ [jTú…¯9 \j”úFœ½ºŠ cjüú…¯Œ_djûFœ½ºŠ djû…¯ ejPûFœ½ºŠ kj”û…¯Œ_ljœûFœ½ºŠ lj°û…¯Œ_mj¸ûFœ½ºŠ mjÌû…¯\ nj üFœ½ºŠ ujlü…¯Œ_vjtüFœ½ºŠ vjˆü…¯Œ_wjüFœ½ºŠ wj¤ü…¯ xjÔüFœ½ºŠ }jý…¯Œ_~jýFœ½ºŠ ~j0ý…¯Œ_j8ýFœ½ºŠ jLý…¯Œ_€jTýFœ½ºŠ €jhý…¯ j˜ýFœ½ºŠ †jØý…¯ ‡jþFœ½ºŠ jtþ…¯Œ_Žj|þFœ½ºŠ Žjþ…¯ jÀþFœ½ºŠ ”jÿ…¯ •j8ÿFœ½ºŠ ›jœÿ…¯Œ_œj¤ÿFœ½ºŠ œj¸ÿ…¯ jðÿFœ½ºŠ £j4…¯Œ_¤j<Fœ½ºŠ ¤jP…¯ ¥jˆFœ½ºŠ «jÌ…¯Œ_¬jÔFœ½ºŠ ¬jè…¯ÿ­jøFœ½«®j…¯Œ_¯jFœ½ºŠ ¯j,…¯ °jdFœ½ºŠ ¶j¨…¯ÿ·j¸Fœ½«¸jÐ…¯ÿ¹jàFœ½«ºjø…¯Œ_»jFœ½ºŠ »j…¯˜ ¼jlFœ½ºŠ Åjø…¯Œ_ÆjFœ½ºŠ Æj…¯˜ ÇjlFœ½ºŠ Ðjø…¯Œ_ÑjFœ½ºŠ Ñj…¯ ÒjLFœ½ºŠ Øj…¯Á ÙjFœ½ºŠ èjÈ'…¯ºŽ éjð'Fœ½ÒŽ íj$(…¯⎠îj´(Fœ½z þj<*…¯ÕfÿjL*Fœ½§§k¬*…¯Œ_k´*Fœ½‡ kä*…¯Œ_kì*Fœ½• kø*…¯¢ k+Fœ½-ùk,+…¯´ kd+Fœ½ã4 kœ+…¯ÿk¬+Fœ½À¾kÀ+…¯Ö kÐ+Fœ½í kà+…¯ kð+Fœ½ k(,…¯% kP,Fœ½5 kÀ,…¯E kè,Fœ½aˆ k-…¯] !k(-Fœ½u #k@-…¯] $kX-Fœ½u &kp-…¯ˆ 'k-Fœ½-ù*k´-…¯² +kÜ-Fœ½Þ /k<.…¯÷ 0k\.Fœ½ ‘ 3k˜.…¯‘ 4k°.Fœ½-ù6kÐ.…¯&‘ 7k/Fœ½$_>kÈ/…¯‡‘ ?kø/Fœ½ ‘ Dk80…¯ÿEkH0Fœ½—ßFk\0…¯±‘ Hk„0Fœ½Å‘ Lk´0…¯Œ_Nk¼0Fœ½ÎàNkÄ0…¯ø‰ Okü0Fœ½ÎàUk@1…¯Û‘ VkP1Fœ½IiWkp1…¯í‘ Xk¨1Fœ½ŠŠ ^kø1…¯ ’ _k02Fœ½ŠŠ ekp2…¯-’ fk¨2Fœ½Îàlkä2…¯±ômkü2Fœ½§ok3…¯ÿpk$3Fœ½—ßqk83…¯K’ sk3Fœ½t’ |kè3…¯†’ ~kH4Fœ½Îàˆkœ4…¯¼’ ‰kÌ4Fœ½ÐÝŽk5…¯Ù’ k05Fœ½ÐÝ”kd5…¯ö’ •k|5Fœ½-ù—k”5…¯“ ˜kÔ5Fœ½ÎàŸk”6…¯w“  kü6Fœ½Îà«kŒ8…¯Ø0¬k¤8Fœ½«®kÔ8…¯±‘ ¯kü8Fœ½ŠŠ ³k,9…¯±ô´kD9Fœ½§¶k\9…¯±ô·kt9Fœ½§¹kŒ9…¯±‘ ºk´9Fœ½º“ ¾kð9…¯Ø0Àk:Fœ½«Âk8:…¯±‘ Ãk`:Fœ½ŠŠ Çk:…¯±‘ Èk¸:Fœ½º“ Ìkô:…¯Œ_Îkü:Fœ½ÎàÎk;…¯Œ_Ïk ;Fœ½ÎàÏk;…¯ø‰ ÐkT;Fœ½ÎàÖk˜;…¯FÝ×k°;Fœ½§ÙkÈ;…¯FRÚkØ;Fœ½á‹ Ûkô;…¯Œ_Ükü;Fœ½«Ük<…¯Г Ýk(<Fœ½«àkD<…¯Ø0ák\<Fœ½«ãkŒ<…¯” äk¤<Fœ½_” æk=…¯~” çk=Fœ½¹” ékP=…¯ð” êk`=Fœ½• ëkt=…¯9• ìk”=Fœ½¬• ïkô=…¯Ç• ðk>Fœ½ô• ñk >…¯Ç• òk0>Fœ½_” ókL>…¯)– ôkl>Fœ½É– ÷k¨?…¯è– økÐ?Fœ½Îàükø?…¯ÿýk@Fœ½.— þk@…¯X— ÿk\@Fœ½Îàl\A…¯Å— lÌAFœ½ÎàlPB…¯Å— lÀBFœ½Îà lLC…¯Å— !l¼CFœ½Îà-l@D…¯îi .lØDFœ½Îà?l F…¯ø‰ @lDFFœ½ÎàFl€F…¯o˜ Gl¨FFœ½ áKlôF…¯ø‰ Ll,GFœ½ÎàRlhG…¯o˜ SlGFœ½ áWlÜG…¯‡˜ XlHFœ½Îà_lÌH…¯to `lìHFœ½Ö˜ cl I…¯to dl,IFœ½Ö˜ glHI…¯Œ_hlPIFœ½Ö˜ hl\I…¯Œ_ildIFœ½Ö˜ il€I…¯Œ_jlˆIFœ½Ö˜ jlœI…¯éo kl¬IFœ½Ö˜ llÄI…¯Œ_mlÌIFœ½ ™ mlÜI…¯Œ_nläIFœ½D™ nlJ…¯V™ ol8JFœ½„™ sldJ…¯Œ_tllJFœ½„™ tl€J…¯”™ ul JFœ½Å‘ xlÜJ…¯±‘ zlKFœ½Å‘ ~l4K…¯Œ_€lÝ ÖpTÆFœ½LÝ ØppÆ…¯bÝ ÚpÆFœ½ÐÝ Ýp(É…¯¹nßp8ÉFœ½úÝ àpdÉ…¯Œ_áplÉFœ½Þ ápxÉ…¯Œ_âp€ÉFœ½$Þ âpŒÉ…¯Œ_ãp”ÉFœ½$Þ ãp É²»1Þ äp¬É…¯DÞ çpÌɃQ×lêpÔɃUMšÜ êpÜɃ!Q‡êpäɃ†O×lêpìɃ¹OÁmêpÊ…¯€Þ êpÊFœ½‰Þ ëp8Ê…¯ÿípHÊFœ½dºîpXÊ…¯”Þ ïp€ÊFœ½ÁÞ óp°Ê…¯ÎÞ ôpÈÊFœ½éÞ öpàÊ…¯úÞ ÷pðÊFœ½õCøpDË…¯ÕfùpTËFœ½¶CúplË…¯ß üpŒËFœ½Žß ÿp@Ì…¯­ß qhÌFœ½Åß q˜Ì…¯Îß qPÍFœ½á q¼Ð…¯Œ_qÄÐFœ½@á qÐÐ…¯­ß qøÐFœ½Åß "q(Ñ…¯Má #q`ÑFœ½€á )qœÑ…¯A¸ *qÄÑFœ½­á .qÒ…¯¦¹ 0qDÒFœ½Íá 7q¬Ò…¯Œ_:q´ÒFœ½êá :qÀÒ…¯&º rô1¾Wø KrôN¾hø LrHô_¾‚ø Mràõ©¾±ø Sr ÷ؾÍø Wrh÷ô¾4ù \r ø*¿„ù brŒø`¿àù ir ùk¿ú jrÀù†¿Úú orûŸ¿÷û vrŒüÓ¿<ü yrœý*Àý ‰r,ÿKÀ†ý ’rhÿ[Àdþ rô‘Àÿ ¤r@¦Àkÿ ­r|…¯ÿµrŒFœ½—ß¶r …¯ÿ¸r°Fœ½—ß¹rÄ…¯›ÿ »rôFœ½§Àr(…¯ÿÁr8Fœ½—ßÂrL]N_Ärd…¯¹nÄrtÁ¼ÿ År|ƒÁßkÅrˆ&Á¼ÿ Årƒ3ÁßkÅrœƒ†O×lÅr¤ƒ¹OÁmÅr¼æCVñÿ ÅrüæCV½sÆr æCVÎsÇr\æÈO×mÉr„æÈO×lÊr”æMùmÊrÐæM ÌræMnÍr,…¯ë ÎrTFœ½—ßÒr„…¯ë Ôr¬Fœ½—ߨrÜ…¯! ÚrFœ½§àrL…¯? ártFœ½—ßår¤…¯? çrÌFœ½—ßërü…¯S ír,Fœ½p òr€…¯† ór¨Fœ½ž ÷rä…¯ÿørôFœ½—ßùr…¯ÐîûrFœ½±­ür(…¯Æ ýr@Fœ½dºÿrX…¯ÿshFœ½û s¬…¯ÿfs¼Fœ½†sÐ…¯gsàFœ½.gs …¯? s4 …¯Œ_ s< FB[“u sT …¯“usl ƒ”[ïºst ƒí"Ýâs| ƒ÷"Óls„ ƒp[ sŒ ƒ‡s” …¯u sÄ …¯Œ_sÌ FB[“usä …¯“usü ƒ”[ïºs ƒí"Ýâs ƒ÷"?&s ƒp?&s ƒ™ s$ …¯¾ sL …¯Œ_sT FB[“usl …¯“u s„ ƒ”[ïº"sŒ ƒí"Ü "s” ƒ÷"Ü "sœ ƒpä "s¤ …¯ò "sÌ …¯Œ_&sÔ FB[“u&sì …¯“u(s ƒ”[ïº*s ƒí"xï*s ƒ÷"xï*s ƒpä *s$ …¯ *sL …¯Œ_.sT FB[“u.sl …¯“u0s„ ƒ”[ïº2sŒ ƒí"­I2s” ƒ÷"­I2sœ ƒpä 2s¤ …¯HG2sÄ …¯Œ_5sÌ FB[“u5sä …¯“u7sü ƒ”[ïº9s ƒí"Òã9s ƒ÷"‡9s ]N_9sD …¯¹n9sT ¤Â= :s\ ƒÅÂßk:sh èÂ= :sp ƒÃßk:s| 6Ã= :s„ ƒNÃßk:s hÃ= :s˜ ƒ€Ãßk:s¤ ƒ†O×l:s¬ ƒ¹OÁm:sÄ æCVr :s æCV½s;s æCVÎss¨ æÈO×l?s¸ æMùm?sô æM… As,æMnBsPËÃý Csl…¯J Js¬ƒQ“ Qs´ƒUMÝâQs¼ƒ!Q˜GQsă=Q› Qs̃GQ½ QsÔƒQQÍ Qs܃ ‘ßkQs䃆O×lQs샹OÁmQsƒ×ÃßkQsƒïÃÓlQs ƒ}l‡Qs0ƒÿÃÝâQs<Äû QsH…¯  Ss`ƒQ@IUshƒUMßkUspƒ†O×lUsxƒ¹OÁmUs$Ä_ Usœ…¯‘ YsăQ¿ ]s̃UMË ]sÔƒ!QÝ ]s܃=Qh ]s䃆O×l]s샹OÁm]s…¯Õf]s…¯Œ_^sFB[“u^s4…¯“u`sLƒ”[‡bsTÆÈO×mbsÆÈO×lcs ÆMùmcsðƒMbves0ÆMnfsT…¯& gsŒ…¯Œ_ms”FB[“ums¬…¯“uosă”[ïºqs̃í"L qsÔƒ÷" qs܃pŸqsäƒÐÔqs샪‡qsôé'ùqs…¯^ us(ƒQÒãys0ƒUM‡ys8ƒ!Qßkys@ƒ=Q‰kysHƒ†O×lysPƒ¹OÁmyshƒø‰Òãyst3İ ys„…¯Ï s¼ƒQ¦¤…săUMßk…s̃!Qê …sÔƒ=Qßk…s܃GQt…säƒQQÒã…s샆O×l…sôƒ¹OÁm…s ƒø‰Òã…sƒ k¦¤…s$öMù…s0…¯3 ˆsPƒQþê‹sXƒUMN ‹s`ƒ!QV ‹shƒ†O×l‹spƒ¹OÁm‹sˆƒ@ÄN ‹s”ƒ k¦¤‹s°…¯Œ_‹s¸•Ä› ‹să«ÄßkŽsÐÄĶ Žs؃ÝÄßksäùÄà sìƒÅßksøƒ†O×ls ƒ¹OÁms8…¯  sXƒQ$ “s`ƒUM@I“shƒ!Q}“sp…¯ “s€ƒqP˜ ”sˆ…¯ï ”s˜ƒqPø •s …¯] •s°†Q$ –sÀ†UM@I–sІ!Q}–sà…¯f –sð†qP˜ —s…¯o —s†qPø ˜s 2Å— ˜s,…¯€ ›sLƒQ˜GžsTƒUM¶ žs\ƒ!QV žsdƒ†O×lžslƒ¹OÁmžs„p5žs…¯÷  s¨ƒQ˜G¢s°ƒUMV ¢s¸ƒ†O×l¢sÀƒ¹OÁm¢s؃b*˜G¢säƒÛÓl¢sôéŨ ¢s…¯k §s4ƒQúl ¬s<ƒUMí ¬sDƒ!Qðø¬sLƒ=Qí ¬sTƒGQý ¬s\ƒ†O×l¬sdƒ¹OÁm¬s|ƒýÅúl ¬sˆƒÆí ¬s”ƒÎðø¬s ƒŒ¬í ¬s¬ƒ)Æý ¬s¸ƒ?Æ×l¬sȃXÆ×l¬s؃qÆ×l¬sèнÞö ¬s…¯¤ ¸s€ƒQ@IÄsˆƒUM}Äsƒ!Q}Äs˜ƒ=Q}Äs ƒGQ Äs¨ƒQQÒãÄs°ƒ ‘, Äs¸ƒ"•< ÄsÀƒ,•H ÄsȃL*H ÄsЃW*úl Äs؃¦*úl Äsàƒ†O×lÄs胹OÁmÄsƒÈ@IÄs ‰‘ Äsƒ$È}Ås$ƒ5È}Ås0ƒFÈ}Ås<ƒZÈ ÅsHƒfÈ×lÅsXƒuÈ, Åsdƒ‡È< Åspƒ¢ÈH Ås|ƒºÈH ÅsˆƒÙÈßkÅsœƒèÈßkÅs°ƒÙ9ßkÅsȃÎðøÅsàƒŒ¬j• Åsøƒ÷Èø Ås ƒ É×lÆs0ƒ"É ÆsHƒ2É×lÈsXƒFÉ×lÈshƒZÉßkÈs|ƒ)¥ßkÈs¬ƒrÉßkÈsȃÉ3 Ès܃­í˜ Ësƒ*­n™ ÎsTƒò£úl Òslƒ=¤×lÒsèƒy¤×lÒsdƒ[¤×lÒsà…¯Œ_ÒsèFœ½Ï Òsô…¯Œ_ÓsüFœ½Ü Ós…¯Œ_ÔsFœ½ Ôs0…¯Œ_Õs8Fœ½Ï ÕsT…¯Œ_Ös\Fœ½ Ösh…¯Œ_×spFœ½5 ×s¨…¯ŽLÚs¸Fœ½N Ûsä…¯e ÜsôFœ½‚ Ýs0…¯ÿÞs@Fœ½‚ ßsl…¯Œ_àstFœ½‹ às¬…¯Œ_ás´Fœ½‚ ásÜ…¯ª âsôFœ½Ó äs<…¯e åsLFœ½  æsˆ…¯„Hçs˜Fœ½‚ èsÐ…¯* ésàFœ½N ês…¯^ ësHFœ½4 òsÈ …¯Œ_ósÐ Fœ½ ™ ósà …¯a ôsX!Fœ½Y t|$…¯¤ô tä$Fœ½ò tL%…¯Œ_tT%Fœ½¬ t%…¯Œ_t˜%Fœ½ÿ tÔ%…¯Œ_tÜ%Fœ½V t&…¯Œ_t &Fœ½V t\&…¯Œ_td&Fœ½­ t &…¯Œ_t¨&Fœ½­ tä&…¯Œ_tì&Fœ½ tø&…¯  t('Fœ½§t\'…¯Œ_td'Fœ½Étp'…¯Œ_tx'Fœ½«t„'…¯Œ_tŒ'Fœ½SVt˜'…¯Z³t¨'Fœ½«tÄ'…¯Œ_ tÌ'Fœ½ì¾ tØ'…¯„H!tè'Fœ½ì¾"t(…¯Œ_#t (Fœ½øè#t(…¯Œ_$t(Fœ½* $t$(…¯Œ_%t,(Fœ½3 %t8(…¯ŽL&tH(Fœ½s 't(…¯‰ (tð(Fœ½8 2t°*…¯ÿ4tÀ*Fœ½§5tÐ*…¯Õf6tà*Fœ½[ 7tü*…¯Õf8t +Fœ½õC9t+…¯Õf:t,+Fœ½õC;t<+êÉ~ Ê= Nt˜-OÊ€ Rt¸-VÊÛ Stp/cÊ  VtŒ/}Ê5 YtÀ/ŒÊ­ \t81µÊ­ ftŒ2ÖÊP pt(4 ËP }tÐ5-ËP Štp7NËP —tè8oËP ¤tä:ËP ±tl<±ËP ¾tÈ=ÐËf- Ët@>êË¡. Õt¸>̉/ ÞtL? Ì0 çtt?Ì 2 ðtA@ÌÌ2 ûtlAOÌ3 uœA_ÌC5 uB›ÌÞ5 u$B¢Ìç6 uÐCÒÌî7 $u”D…¯Œ_.uœDFœ½z8 .u D…¯‘8 /uÐDFœ½¸8 4uœF…¯Œ_5u¤FFœ½lâ5u°F…¯Œ_6u¸FFœ½lâ6uÄF…¯Œ_7uÌFFœ½¢7uØF…¯Œ_8uàFFœ½Á8 8uìF…¯¹n9uüFFœ½¢:u0G…¯Œ_;u8GFœ½lâ;uDG…¯Œ_u|GFœ½lâ>uˆG…¯Œ_?uGFœ½¢?uœG…¯Œ_@u¤GFœ½¢@u¸G…¯Œ_AuÀGFœ½lâAuÌG…¯Œ_BuÔGFœ½¢BuàG…¯Œ_CuèGFœ½¢CuH…¯Œ_DuHFœ½ÅDu(H…¯9 EuxHFؤœäMu¬IFskŒ_NuPJFê¤ßkNu„JFù¤¯äNuJF ¥¼äNu¸J…¯Œ_NuÀJFœ½ä9 NuÌJ…¯ï9 OuÜJFœ½¢Pu\K…¯Œ_QudKFœ½: QuhK…¯ÕfRuxKFœ½#: SuŒK…¯w: TuìKFؤ„; ^u MFskŒ__uÄMFê¤ßk_uøMFù¤¨; _uNF ¥Æ; _u8N…¯Œ__uDNᶪé; _uPNáñªò; `u\N…¯< bulNFœ½:< cu˜N…¯Z< duèNFœ½Ê< lu,O…¯Z< mu|OFœ½Ü< uuÄO…¯Œ_vuÌOFœ½ë< vuØO…¯Œ_wuàOFœ½N= wuP…¯Œ_xuPFœ½N= xu8P…¯Œ_yu@PFœ½Û= yuhP…¯Œ_zupPFœ½ > zu˜P…¯Œ_{u PFœ½w> {uÈP…¯Œ_|uÐPFœ½¿> |uøP…¯Œ_}uQFœ½0? }u(Q…¯Œ_~u0QFœ½‘? ~uXQ…¯Œ_u`QFœ½@ uˆQ…¯Œ_€uQFœ½Ž@ €u¸Q…¯Œ_uÀQFœ½@ uèQ…¯Œ_‚uðQFœ½A ‚uR…¯Œ_ƒu RFœ½²A ƒuHR…¯Œ_„uPRFœ½OB „uxR…¯Œ_…u€RFœ½•B …u¨R…¯Œ_†u°RFœ½2C †uØR…¯Œ_‡uàRFœ½A ‡uS…¯Œ_ˆuSFœ½A ˆu8S…¯Œ_‰u@SFœ½D ‰uhS…¯Œ_ŠupSFœ½‰D Šu˜S…¯Œ_‹u SFœ½æD ‹uÔS…¯Œ_ŒuÜSFœ½ E ŒuT…¯Œ_uTFœ½æD uLT…¯Œ_ŽuTTFœ½ E ŽuˆT…¯Œ_uTFœ½æD uÄT…¯Œ_uÌTFœ½2E uÐT…¯Œ_‘uØTFœ½2E ‘uÜT…¯Œ_’uäTFœ½QE ’uèT…¯Œ_“uðTFœ½|E “uôT…¯Œ_”uüTFœ½‹E ”uU…¯Œ_•uUFœ½2E •u U…¯Œ_–uUFœ½ÀE –uU…¯Œ_—u UFœ½ßE —u$U…¯Œ_˜u,UFœ½ÀE ˜u0U…¯Œ_™u8UFœ½F ™uH Îu\…¯Œ_Ïu\Fœ½GH Ïu\…¯Œ_Ðu\Fœ½: Ðu \…¯Œ_Ñu(\Fœ½UH Ñu4\…¯Œ_Òu<\Fœ½JSÒuH\…¯¹nÓuX\Fœ½cH Ôu|\…¯ÕfÕuŒ\Fœ½pH Öu¤\…¯Œ_Øu¬\Fœ½3 Øu¸\…¯Œ_ÙuÀ\Fœ½cH ÙuÐ\…¯Œ_ÚuØ\Fœ½: ÚuÜ\…¯™H Ûu ]FؤéH àuÔ]FskŒ_áux^Fê¤ßkáu¬^Fù¤÷H áu¸^F ¥ÿH áuØ^…¯ I áuè^Fœ½:I âu _…¯Œ_ãu(_Fœ½* ãu8_…¯Œ_äu@_Fœ½* äuL_zÍÅI åuŒ`Í6J èuŒa©ÍUJ îu´a¸ÍcJ ðuàaÊÍ»J õuPbôÍM úu8d ÎPN ýue:λN v¬eSÎÉN vüe_ÎíN v4fpÎíN vÐfÎ]O väf”άO vøf²ÎíN vh¿ÎíN vLhñÎôP #vph+ÏQ (vŒhVÏ(Q +vitÏŽQ 3vTk®ÏR ?vÈkаR Hvœn6Ð*S Qv$oSÐnS YvLožÐÆU _v„q¹ÐïU cvqÔÐrX evøs…¯Œ_ivtFœ½†X ivt…¯Œ_jvtFœ½†X jv(t…¯Œ_kv0tFœ½ìkvwt“Fœ½.` @w“…¯Œ_Aw˜“Fœ½D` Aw¤“…¯Œ_Bw¬“Fœ½D` Bw¸“…¯Z` CwÈ“Fœ½h` Dwà“…¯†` Ewh”Fؤa TwЖFskŒ_Uwt—Fê¤ßkUw¨—Fù¤!a Uw´—F ¥5a Uwü—…¯Ba Uw|˜Fؤa cwhšFskŒ_dw,›Fê¤ßkdwh›Fù¤!a dwt›F ¥5a dw´›…¯b dwÔ›Fœ½ΦgwDœÊÑOb hw`œþÑŒb lwxœÒ7c nwhMÒ c twÄYÒ¿c wwì}Òíc |wž¢Ò d €wDž¿ÒPd „wŸÓÒyd ˆwŸßÒŠd ‰wHŸÓ«d Žw°Ÿ.Óïd wL `Óïd “w\ …¯6e –wÀ ƒ£ÓOe ›wÜ ƒ²Óbe žwì ƒÔÓ)f ¢wT¡ƒíÓbe ¦w¨¡ƒÔg ªwT§ƒ#Ônh ­w,©ƒ0Ôši ±w­ƒ9Ôj µw°®ƒ_Ô9j ¹wt¯ƒnÔaj ¼w”°ƒyÔŸj ¿w²ƒÃÔzk ÆwIJƒöÔ¥k Íw`³ƒÕ>l Ów´³ƒCÕ®l Ùw$´ƒTÕbn áw຃bÕ°n åwÈ»ƒ›Õÿn ëw ¼ƒºÕo ïw½…¯*o òw ½Fœ½8o ôw@½…¯Œ_õwH½Fœ½Ro õwl½…¯qo öw„½Fœ½8o øwœ½…¯Œ_ùw¤½Fœ½Žo ùwȽ…¯þîúwà½Fœ½­o üwø½…¯ºo ýw¾Fœ½Ão þw8¾…¯ºo xH¾Fœ½øo x¿…¯p x8¿Fœ½«xÌ¿…¯Šp xä¿Fœ½« x$À…¯ªp xDÀFœ½ÐÝxtÀ…¯½p x¤ÀFœ½ÐÝxDÁ…¯Úp xdÁFœ½ÐÝx˜Á…¯½p xÈÁFœ½ÐÝxœÂ…¯À-x¬ÂFœ½íp xÄÂ…¯ûp !xÜÂFœ½._#x Ä…¯(q %x8ÄFœ½6q 'xdÄ…¯Fq (x„ÄFœ½Yq +x¤Ä…¯Œ_,x¬ÄFœ½iq ,xÐÄ…¯Œ_-xØÄFœ½2-xÅ…¯ÿ.xÅFœ½§/x$Å…¯ÿ0x4ÅFœ½—ß1xHÅ…¯€q 3xpÅFœ½ûh7xœÅ…¯ûp 8x´ÅFœ½—ß:xäÅ…¯˜q yôÞ…¯Œ_?yüÞFœ½­t ?yß…¯²t @y ßFœ½Åt CyXß…¯6&DyhßFœ½•8Eyxß…¯}FyˆßFœ½ðt GyÈß…¯u HyðßFœ½ƒv Lyâ…¯ßLNyâFœ½íp Oy(â…¯ŽLPy8âFœ½t QyXâ…¯™v RyxâFœ½NE Uy¸â…¯Œ_WyÀâFœ½‰!WyÄâ…¯ŽLYyÔâFœ½t Zyôâ…¯™v [yãFœ½NE ^ydã…¯FR`ytãFœ½‰!ayœã…¯¬v cy´ãFœ½t eyä…¯™v fy8äFœ½.t iy„ä…¯Œ_kyŒäFœ½ƒv kyä¹ÖÔv myôä×Öáv nydåüÖÔv pyÜå$×áv qyLæE×Ôv syÄæi×Ôv ty ç’×Ôv uyXç§×Ôv vy¼ç·×óv wyÔçÀ×óv yyôçÏ×óv {yèÛ×óv }yLèó×óv ylèØóv yˆè Øóv ƒyÄè#Øóv …yäè,Øóv ‡yéAØw ‰y@éLØ&w Žypé[ØEw yðéoØEw ‘ypê‹ØWw “yÌê–ØWw —y(ëœØow ›yhë¢Ø‹w ŸyÀë¶Ø¬w ¤yØëÎØx ©y0ìߨUx ¬y€ìóØx ±y¬ìÙŸx ´yÜì"Ùy »y@í9Ùy ¾y¤íOÙ8y Áyìí[ÙWy Ãy\îvÙWy Èy¬î‹ÙWy Íyèî Ùow Òyï¯ÙNz Öyèï½Ùìz Ùy´ðäÙNz áyxñóÙ#| äy8òÚNz íyTó,Ú#| ðy€ôFÚNz ùyÌöUÚÎ üyðøpÚNz zû€Ú#| z,ýœÚ`‚ zþ³Ú`‚ zÔþÉÚ`‚ zÌÿáÚŠƒ zøÿïÚ“ƒ zÛ“ƒ z„ Û“ƒ !zÀ:Û݃ #zˆQÛ„ %zÀiÛD„ )z°åÛ… 1zì#þÛV… 5z´$2Üf… 8zð$]Üf… :zd%‡Üf… z %Äܾ… AzÈ%ÕÜË… BzÐ%áÜË… BzØ%îÜË… Bzà%ùÜ0† Bz¸&Ýš† Jz`'0Ý↠LzÐ'[Ýš† Nzœ(yÝS‡ Pzh)¥ÝSˆ Rz<+ÁÝÓˆ Zzt+ÏÝE‰ `z,òÝ<Š bz€-Þ¾Š jz¸-ÞE‰ pzL.FÞvŒ rz|1sÞ[ {z¸1ÞE‰ ‚z„2½ÞSˆ „z€4ÐÞÓˆ Œz¸4ÞÞE‰ ’zp5ß|w”z°6…¯ –zØ6Fœ½TÝšz7…¯æºœz47Fœ½TÝžz48…¯æº zL8Fœ½TÝ¢z 8…¯k ¤zØ8Fœ½¨ ªzP9…¯µ «zˆ9Fœ½¨ ±z:…¯Û ²z0:Fœ½¨ ·z¤:…¯µ ¸zÜ:Fœ½¨ ¾zT;…¯ü ¿z„;Fœ½ ÄzÜ;…¯' Æz<Fœ½ Ìzp<…¯I Îz°<Fœ½ Õz=…¯t ×zX=Fœ½ý ÞzŒ>…¯Œ_ßz”>Fœ½‘ ßzœ>…¯Œ_àz¤>Fœ½‘ àz¼>…¯,‘ ázü>Fœ½ èzd?…¯W‘ êz¤?Fœ½ý ñzØ@…¯Œ_òzà@Fœ½‘ òzè@…¯Œ_ózð@Fœ½‘ ózA…¯‚‘ ôz@AFœ½ úz¤A…¯¨‘ üzÜAFœ½ý {C…¯Œ_{CFœ½‘ {C…¯Œ_{ CFœ½‘ {8C…¯,‘ {xCFœ½ {àC…¯W‘ { DFœ½ý {TE…¯Œ_{\EFœ½‘ {dE…¯Œ_{lEFœ½‘ {„E…¯Α {´EFœ½¨ {F…¯ï‘ {LFFœ½ #{F…¯ ’ %{ÈFFœ½ +{G…¯2’ -{lGFœ½¤’ 6{”H…¯÷18{¬HFœ½§:{ÄH…¯Œ_;{ÌHFœ½²’ ;{ØH…¯Œ_>{àHFœ½²’ >{ìH…¯×’ A{,IFœ½øèH{lI…¯þ’ I{œIFœ½“ N{àI…¯Œ_O{èIFœ½:“ O{J…¯×’ S{PJFœ½øèZ{J…¯þ’ [{ÀJFœ½“ `{K…¯Œ_a{ KFœ½:“ a{4K…¯Œ_e{}¬Ž‚à=• B} 1åЧ G}<:媧 L}t…¯ç P}ŒFœ½Χ R}Ä…¯ç T}ÜFœ½Ù§ V}‘…¯ç X}0‘Fœ½Χ Z}h‘…¯è§ \}x‘Fœ½ü§ ]}Œ‘Zå¨ ^} ’x彨 b}œ“”å¡© h}䔭媖 m}L–ºåÀª o}P˜­áª– t}<™…¯ÿv}L™Fœ½~« w}\™…¯ÿx}l™Fœ½§y}|™…¯Þz}Œ™Fœ½,Þ{}œ™ÖßÌ” |}ÌŸØå¬ }  殬 }¼ 1æЬ „} ¡@æ𬠆}ˆ¢Ræ• ‡}°§bæm­ ‰}اsæý­ ‹}Ô¨€æu® } ª”æu® ‘} «§æ£® •}¬«¼æê® —}h¬Óæ=¯ š}H­íæ^¯ }p­ç­¯ ¡}¨±ç° ¥} ³3çI° ¨}0³@ç„° ©}@³MçQ² ª}¸´_ç}² ¬}൅簲 ²}X¶˜ç6³ ¶}и²çK³ º}è¸Öçf³ ¿}ô¸éçz³ Â}¹ôç´ Ä}¨¹è´ É}tº›ßy” Í}¤º¿á¹– Ð}øº)è+µ Ò}8»âßà” Ö}ˆ»Mèµ· Ù}ä»{èЏ Ý}\¼›èt¹ â}À¼wß8” æ}4½¬èz³ ì}½…¯Œ_î}˜½Fœ½ :î}¬½…¯Œ_ï}´½Fœ½ :ï}Ƚ…¯Œ_ð}нFœ½º ð}ð½…¯Œ_ñ}ø½Fœ½òúñ}(¾…¯FRò}8¾Fœ½.™ ó}H¾…¯FRô}X¾Fœ½"º õ}l¾…¯Ø0ö}„¾Fœ½«ø}´¾…¯êù}ľFœ½«ú}ؾ…¯Ø0û}ð¾Fœ½«ý} ¿…¯êþ}0¿Fœ½«ÿ}D¿…¯Ø0~\¿Fœ½«~Œ¿…¯ê~œ¿Fœ½«~°¿…¯Ø0~È¿Fœ½«~ø¿…¯ê~ÀFœ½« ~À…¯Ø0 ~4ÀFœ½« ~dÀ…¯ê ~tÀFœ½«~ˆÀ…¯Ø0~ ÀFœ½«~ÐÀ…¯ê~àÀFœ½«~ôÀ…¯Ø0~ ÁFœ½«~<Á…¯ê~LÁFœ½«~`Á…¯Ø0~xÁFœ½«~¨Á…¯ê~¸ÁFœ½«~ÌÁ…¯FR~ÜÁFœ½,º ~ìÁ…¯FR ~üÁFœ½,º !~ Â…¯iS"~ÂFœ½òú#~0Â…¯sS$~@ÂFœ½‹S%~dÂ…¯•S&~tÂFœ½·S'~˜Â…¯6º (~°ÂFœ½eº *~(Ã…¯FR+~8ÃFœ½„º ,~`Ã…¯¨º -~xÃFœ½¶º /~¨Ã…¯¨º 0~ÀÃFœ½0£ 2~ØÃ…¯ÿ3~èÃFœ½—ß4~üÃ…¯Œ_6~ÄFœ½㺠6~(Ä…¯Œ_7~0ÄFê’ŒÌ7~@Ä…¯üº 7~PÄFœ½A» 8~lÄ…¯Œ_9~tÄFœ½x» 9~ Ä…¯Œ_:~¨ÄFê’ŒÌ:~¸Ä…¯‘» :~ÈÄFœ½Ö» ;~äÄ…¯Œ_<~ìÄFœ½°‡ <~ Å…¯Œ_=~ÅFœ½Ò‡ =~4Å…¯FR>~DÅFœ½¼ ?~¨Å…¯FR@~¸ÅFœ½¼ A~Æ…¯FRB~,ÆFœ½¼ C~Æ…¯FRD~ ÆFœ½¼ E~Ç…¯ÿF~ÇFœ½§G~$Ç…¯¨º H~<ÇFœ½¦(J~TÇ…¯)¼ K~tÇFœ½0£ N~Ç…¯Ø0O~¨ÇFœ½«Q~ØÇ…¯Ø0R~ðÇFœ½«T~ È…¯¨º U~8ÈFœ½¼ W~ÜÉ…¯ŽLX~ìÉFœ½”¼ Y~Ê…¯›¼ Z~ÊFœ½Ƽ [~,Ê…¯á¼ \~<ÊFœ½ç¼ ]~LÊ…¯Œ_^~TÊFœ½ò¼ ^~`Ê…¯À-`~pÊFœ½û¼ a~€Ê…¯Œ_b~ˆÊFœ½'½ b~¤Ê…¯FRc~´ÊFœ½¦(d~ÈÊ…¯¨º e~àÊFœ½0£ g~øÊ…¯Œ_h~ËFœ½ìh~ Ë…¯{wi~0ËFœ½–wj~DË…¯A½ k~\ËFœ½§m~¼Ë…¯\½ n~ÔËFœ½eº p~ Ì…¯Þq~ÌFœ½n½ r~\Ì…¯Þt~lÌFœ½x½ u~œÌ…¯—½ v~´ÌFœ½ѽ x~Í…¯Œ_y~ÍFœ½ø½ y~Í…¯Þz~,ÍFœ½dº{~@Íûè¾ |~pÍé9¾ }~ÜÑ#éH¾ ~ìÑ3é`~ÒFé_¾ ‚~hÒV鿾 ƒ~àÒiéÓ¾ „~ðÒ†éå¾ …~@ÓŽé ¿ †~ Ó°é]¿ ˆ~ÜԽ鋿 ‹~àÕäé¶¿ ~ÜÖöé÷¿ ’~à×êeÀ —~(Ù#ê{À ›~¼Ù4ê¬À ž~lÚEêÁÀ ¡~œÚdêÁÀ ¤~$Ûƒê`Á §~¨Ü—êËÁ ª~Œà¨êìÁ ¬~áºêúÁ ­~LáÖê  ¯~`áæê; °~ÐáùêQ ±~øá ëZ ²~Lâ"ëŽÂ ´~Äâ5ëQ ¶~ãDëQ ·~ ãUëœÂ ¸~4ãeë¾Â ¹~tãwëœÂ º~Œã‡ëGæ»~”ã’ëÇ »~°ãëØÂ ¼~ôã´ëúà ¿~åòëÃÄ Æ~œèìÃÄ È~€é…¯Œ_Ê~ˆéFœ½:Ê~”é…¯Œ_Ë~œéFœ½äÄ Ë~¤é…¯Œ_Ì~¬éFœ½öÄ Ì~Øé…¯Å Í~ðéFœ½Å Ï~ꅯŠÐ~ êFœ½Å Ò~8ꅯŠÓ~PêFœ½Å Õ~hꅯŠÖ~€êFœ½Å Ø~˜ê…¯Œ_Ù~ êFœ½ :Ù~´ê…¯Œ_Ú~¼êFœ½ :Ú~Ðê…¯#Å Û~ðêFœ½3Å Þ~ ë…¯Œ_ß~ëFœ½=Å ß~ë…¯Œ_á~ ëFœ½IÅ á~0ë…¯Œ_â~8ëFœ½éÄâ~D녯Šã~\ëFœ½RÅ å~të…¯Œ_æ~|ëFœ½\Å æ~ˆë…¯Å ç~ ëFœ½rÅ é~Ðë…¯Hê~àëFœ½†Å ë~ð녯Šì~ìFœ½Å î~ ì…¯Hï~0ìFœ½™Å ð~@ì…¯#Å ñ~`ìFœ½3Å ô~|ì…¯¯Å õ~ŒìFœ½ÎÅ ö~¤ì…¯Œ_÷~¬ìFœ½âÅ ÷~¼ì…¯Œ_ù~ÄìFœ½Æ ù~Ðì…¯Æ ú~ðìFœ½µÆ ý~Hí…¯Œ_þ~PíFœ½àÆ þ~`í…¯Œ_ÿ~híFœ½óÆ ÿ~ˆí…¯Œ_íFœ½éĜ텯Œ_¤íFœ½éİ텯Œ_¸íFœ½ Ç Äí…¯Œ_ÌíFœ½Ç Øí…¯Œ_àíFœ½\Å ìí…¯Œ_ôíFœ½éÄî…¯Œ_îFœ½†Å î…¯Œ_$îFœ½™Å 0î…¯Œ_8îFœ½\Å Dî…¯Œ_ LîFœ½éÄ dî…¯Œ_ lîFœ½†Å xî…¯Œ_ €îFœ½™Å Œî…¯FR œîFœ½0Ç °î…¯Œ_¸îFœ½:Ç Èî…¯Œ_ÐîFœ½8Üî…¯Œ_äîFœ½RÅ øî…¯Œ_ïFœ½\Å ï…¯Œ_ ïFœ½éÄ4ïìCÇ Dï.ìžtï;ìž¤ï ¿žÔïBìžðKìKÇ ðSìå¾ lð_ìbÇ Ôð™ìÇ 8ñ²ì`!Dñ¿ì±Ç "ðñ…¯Œ_%øñFœ½ò¼ %ò…¯÷1'òFœ½§)4ò…¯÷1*LòFœ½§,dò]N_-¸òøì×Ç -Ìòí|w2ðòí¤È 4Œô-íóv 8¨ôOíwe :Øõlí»Ë >Lø‰íWÌ Gø íŠÌ O°ø»íŠÌ VÐøÕí¼Ì ]ôøòíäÌ cùî Í i@ù,îKÍ nlù@îKÍ s¨ùTî*‚xúeîpÍ {8úqîƒÍ ~Tú î Í ƒpúÀî½Í ˆŒú×îëÍ Ž¸úôî*Î ”Ôúï§Î —û?ïÿÎ œÌûRïÿÎ  ütïÿÎ žTüŒïÏ Ÿœü©ï(Ï ¡¸üÃï:Ï £ÌüÝïTÏ ¥ôüòï€Ï §ýð¯Ï ©xý'ðøÏ ¬ðýbðCÐ ²¸ÿ„ðSÐ µÔÿðaÐ ·«ðÐ ¹€ØðñÐ ½àøð&Ñ Á`ñÒÑ Ã°6ñ|wÆÐQñ Ò Èøgñ/Ò Ê<‡ñ®Ò Ï|¨ñÞÒ ÒÀ·ñfÓ Õ°ØñçÓ ×ÜùñÔ Ùp ò‚Ô Ú4!òÒÔ Û6òÕ Ü Cò;Õ à YòŽÕ ä€ òXÖ çÔ ±òtÖ ëø ½ò†Ö í ÓòÚÖ ó` åòO× ÷ ór× þP 5óO× €ä Pór× € kó&Ø €Ô óEw €8óÚØ €Xµó¸Ù "€XÒó(Ú (€èó¸Ú /€Lùó?Û 4€ÈôpÛ 8€ìôzÛ :€<ôÜ @€Taô‚Ô F€thôéÜ G€èôWÝ M€äÉôšÝ S€(âôüÝ W€üõDÞ Z€0õŸÞ ^€$JõüÞ ^€xaõbß a€˜õéß d€ð³õPà h€áõbß k€,'ö“à n€THöÔà r€`eöžá u€Ðöâ }€«ö9â ‚€PÆözâ ‡€€ßöÅâ ‹€¸øöíâ €è÷ ã –€6÷Sã €(S÷墀To÷¡ã ©€€‹÷ä °€0«÷;ä ¶€XÄ÷\ä »€€Ô÷Ùä À€Ôð÷'å Ä€D øPå È€pø›å Ì€Ä2ø›å Ѐø…¯Œ_Ô€Fœ½Äå Ô€ …¯Õå Õ€˜FؤVâ€"FskŒ_〼"Fê¤ßk〠#Fù¤Òãã€#F ¥'Vã€\#…¯Œ_ã€d#Fœ½Åã€p#…¯0æ 䀰#FؤV뀜$FskŒ_ì€@%Fê¤ßkì€t%Fù¤Òã쀀%F ¥'V쀬%…¯bæ ì€Ô%Fœ½~æ ð€&…¯Þñ€&Fœ½,Þò€(&]N_ó€@&…¯¹nó€P&æ ô€X&ƒöŒßkô€d&“æ ô€l&ƒßkô€x&ƒ†O×lô€€&ƒ¹OÁmô€˜&æCVÈæ ô€Ø&æCV½sõ€è&æCVÎsö€8'æÈO×mø€`'æÈO×lù€p'æMùmù€¬'æMÛæ û€ä'æMnü€(…¯ÏÉ ý€@(Fœ½1ç ˜(…¯±ô°(Fœ½§È(…¯sÊ )Fœ½tç ˜)…¯¬ç ¨)Fœ½»ç ¼)…¯ iÌ)Fœ½Çç ä)…¯ iô)Fœ½Ñç *…¯ÿ$*Fœ½—ß8*…¯f«H*Fœ½}«X*…¯ÿ!h*Fœ½§"|*…¯ÿ#Œ*Fœ½—ß$ *…¯f«&°*Fœ½}«'À*…¯±ô)Ø*Fœ½§+ð*…¯÷1,+Fœ½§. +…¯Þ/0+Fœ½,Þ0@+…¯ëç 1X+Fœ½?è 3-…¯ëç 4 -Fœ½Xè 6P-xøoè 8\-…¯è <„-ƒQÝâ@Œ-ƒUMd @”-ƒ!Q}@œ-ƒ=Q»@¤-ƒ†O×l@¬-ƒ¹OÁm@Ä-ƒXÝâ@Ð-ƒ†ød @Ü-ƒ”ø}@è-ƒZP»@ô-ƒ¡øÒã@.ƒÖPô‡@.ƒÛÓl@(.ƒ¬øßk@h.ƒ¼øöè @ .ƒÈøé A°.Õøné B /Þø€é D,/…¯’é FD/ƒQtHL/ƒUMÒãHT/ƒ†O×lH\/ƒ¹OÁmHt/…¯Œ_H|/Fœ½ãHˆ/…¯Œ_I/Fœ½öSI´/…¯ÞJÄ/Fœ½Íé KÔ/]N_L0…¯¹nL0ôùâé M0ƒúßkN(0úïé N00ƒ úßkN<03úïé ND0ƒDúßkNP0Wúïé NX0ƒoúßkNd0‰úïé Nl0ƒ úßkNx0¹ú÷é N„0ƒÆúßkP0ƒ†O×lP˜0ƒ¹OÁmP°0…¯>ê PÀ0ƒqPGê QÈ0…¯¯ê Qà0ƒQÒãSè0ƒUM½ê Sð0…¯ë S1†qPGê T1…¯'ë T 1†QÒãU01†UM½ê U@1]N_UX1…¯Œ_U`1Gû8ë Uh1ƒWûßkUt1iû8ë U|1ƒxûßkUˆ1‰û@ë U1ƒ—ûßkVœ1ƒ†O×lVÄ1ƒ¹OÁmVÜ1ƒ¨ûßkV2…¯Œ_V2…¯Œ_V2…¯ì V 2ƒqP½ê W(2…¯zì W82…¯Šì XH2…¯“ì YX2†qP½ê Zh2·ûœì Zx2…¯µì _¨2ƒQßkd°2ƒUMßkd¸2ƒ!Qê dÀ2ƒ=QtdÈ2ƒGQÒãdÐ2ƒ†O×ldØ2ƒ¹OÁmdð2…¯Œ_dø2Fœ½`Sd3…¯Œ_e 3Fœ½åze3…¯Œ_f 3Fœ½JSf,3…¯¬Ð g<3Fœ½í hP3…¯Œ_iX3Fœ½$í ip3…¯Œ_jx3Fœ½$í j”3…¯Œ_kœ3Fœ½*í k¨3…¯Œ_l°3Fœ½3í l¼3…¯Œ_mÄ3Fœ½@í mè3…¯Œ_nð3Fœ½*í nü3…¯Œ_o4Fœ½3í o4…¯Œ_p4Fœ½@í p<4…¯Œ_qD4Fœ½d5 qP4…¯Œ_rX4Fœ½d5 rh4…¯Œ_sp4Úüsí s|4ƒèüßkwˆ4ùü—í w”4ƒ ýßk{ 4ƒ†O×l{¼4ƒ¹OÁm{Ô4ƒýôí {5ƒZPµÿ{$5ƒ+ý`Ä{H5ƒ†ød {€5ƒCýÓl{5ƒNýßk{œ5ƒjýd {Ä5ƒ~ý}{6ƒ‘ýô‡{6ƒ£ý?î {@6ƒµý×l{P6ƒÃý×l{h6ƒ,ƒßk{Œ6ƒÔýßk{°6ƒëýßk{ 7ƒþßk{07ƒþßk{@7ƒ"þßk{x7ƒ1þßk{°7ƒ>þßk{è7ƒLþßk{8ƒ[þî {8ƒiþî ~<8ƒxþ«î X8ƒŽþÒㄨ8ƒ þ °„Ü8ƒ°þîî „ 9ƒ¼þî …¤9ƒËþï ˆÐ9ƒßþ1ï ‹ô9éZ­ï Žx:…¯ßï ” :ƒQÿï ˜¨:ƒUM`ʰ:ƒ!Qµÿ˜¸:ƒ=QÏ®˜À:…¯Yð ˜è:ƒQÝâœð:ƒUMuð œø:ƒ!Q`Äœ;ƒ=Qµÿœ;…¯Éð œ;†Qÿï (;†UM`Ä8;†!QµÿH;†=QÏ®X;…¯Òð h;†QÝâžx;†UMu𠞈;†!Q`Äž˜;†=Qµÿž¨;…¯Ûð žÐ;Fœ½ ñ ¢(<…¯Ûð £P<Fœ½ ñ §¨<…¯Ûð ¨Ð<Fœ½ñ ¬4=…¯¹n­D=3ñ ®P=ƒ$ßk²\=1Oñ ²h=ƒ;ßkµt=Hfñ µ€=ƒ]ßk·Œ=uxñ ·˜=ƒ…ßk»¤=ƒ†O×l»¬=ƒ¹OÁm»Ä=ƒŽþÒã»H>ƒ‰è »´>ƒïÃÓl»D?ƒ˜Ól»„?ƒ¨ßk»Ô?ÆÒvÓl»ð?ƒ~ý}»l@ƒÀŸ»Ä@ƒÎÏ®»˜Aƒå}»¨AƒúM\»,Bƒ¾ò »XBƒtw»Cƒ%ßk»$CƒLþßk»¤CƒÃý×l»TDƒ3ßk»¸Dƒþßk»,Eƒ,ƒßk»àEƒÔýßk»DFƒOßk»ÔFƒþßk»HGƒ"þßk»üGƒ>þßk»¸Hƒbßk»üHƒßk»\Iƒ•ßk»¤Iƒ¯ßk»ÔIƒ½ßk»èIƒËþï »ÀJƒßþ1ï ¾äJƒ[þNö ÁLƒ¼þî ÄÔLƒÊèö ǤMƒÚÔø É„Pƒåÿù ËÄQƒóé δR…¯_ú ÏÜRƒQŸÓäRƒUMÒãÓìRƒ!Q˜°ÓôRƒ=Qwú ÓüR…¯Ëú ÓSƒQŸÖ$SƒUMÞú Ö,Sƒ!Qwú Ö4S…¯±ôÖLSƒQŸØTSƒUMÒãØ\S…¯†û Ø„SƒQŸÜŒSƒUM£û Ü”Sƒ!QÐÔÜœSƒ=Q‡ܤS…¯úû Ü´S†QŸÝÄS†UMÒãÝÔS†!Q˜°ÝäS†=Qwú ÝôS…¯ü ÝT†QŸÞT†UMÞú Þ$T†!Qwú Þ4T…¯ ü ÞDT†QŸßTT†UMÒãßdT…¯ü ßtT†QŸà„T†UM£û à”T†!QÐÔà¤T†=Q‡à´T…¯Œ_à¼TFœ½3 àÈT…¯Œ_áÐTFœ½* áÜT…¯Œ_âäTFœ½´ãâèT…¯ü ãøTFœ½,ü ä$U…¯Œ_å,UFœ½6ü å8U…¯Œ_æ@UFœ½Lü æLU…¯Œ_çTUFœ½Uü çlU…¯Œ_ètUFœ½Lü èŒU…¯Œ_é”UFœ½Uü é U…¯Œ_ê¨UFœ½Uü ê´U…¯Œ_ë¼UFœ½Uü ëÈU…¯Œ_ìÐUFœ½Uü ìèU…¯Œ_íðUFœ½Uü íüU…¯Œ_îVFœ½Uü îV…¯Œ_ïVFœ½Uü ï$V…¯Œ_ð,Vyrü ð8VƒˆßkòDVš„ü òPVƒ«ßkö\Vƒ†O×löxVƒ¹OÁmöVƒŽþÒãöøVƒ†ød ö\Wƒ¿ô‡ölWƒ”ø}öœWƒÌÓlöäWƒÚßkö,Xƒ¬øßköœXƒ1þßköäXƒéßkö,Yƒû–ý ö Yƒ ~®öøYƒþ ö”Zƒ&þ øÀZÆÒvÓløÌZ…¯"þ øäZƒQÿï úìZƒUM-úúôZ…¯‰þ ú[ƒQŸþ$[ƒUM¦þ þ,[ƒ!QÐÔþ4[ƒ=Q‡þ<[…¯ÿ þL[†Qÿï ÿ\[†UM-úÿl[…¯ ÿ ÿ|[†QŸ‚Œ[†UM¦þ ‚œ[†!QÐÔ‚¬[†=Q‡‚¼[…¯Œ_‚Ä[Fœ½ÿ ‚Ð[…¯Œ_‚Ø[Fœ½ÿ ‚ä[…¯Œ_‚ì[Fœ½ ÿ ‚ø[…¯Œ_‚\Fœ½)ÿ ‚ \…¯Œ_‚\Fœ½)ÿ ‚ \…¯Œ_‚(\Fœ½)ÿ ‚4\…¯Œ_‚<\Fœ½)ÿ ‚H\…¯Œ_‚P\Fœ½2ÿ ‚\\…¯Œ_‚d\Fœ½ÿ ‚p\…¯Œ_ ‚x\Fœ½ÿ ‚„\>;ÿ ‚\…¯Qÿ ‚¨\ƒQ}‚°\ƒUM,H‚¸\ƒ†O×l‚À\ƒ¹OÁm‚Ø\ƒ”ø}‚ä\ƒO,H‚ð\ƒ³“­I‚]ƒ1þßk‚]ƒûx\‚(]ƒXÝâ‚D]ƒ`xï‚d]ƒÛÓl‚Œ]ƒjÒã‚ ]ƒŽþÒã‚È]ÆÒvÓl‚^xÿ ‚^…¯³ÿ ‚4^ƒQ}‚<^ƒUMDã‚D^ƒ†O×l‚L^ƒ¹OÁm‚d^ƒ”ø}‚p^ƒ‰Dã‚|^ƒšÜ ‚Œ^ƒXÝ₨^ƒ`xï‚È^ƒÛÓl‚ð^ÆÒvÓl‚8_ã ‚D_…¯! ‚\_ƒQÿï ‚d_ƒUMü‚l_ƒ†O×l‚t_ƒ¹OÁm‚Œ_ƒýÿï ‚˜_ƒZPü‚¤_ƒñÓl‚´_ƒÞú ‚ø_ƒÞú ‚<`ƒ$ßk‚P`ƒ2ßk‚d`ƒ1þßk‚`ƒþßk‚è`ƒ>þßk‚@aƒxþƒ ‚taƒ[þ ‚¨aƒ@þ ‚bÆÒvÓl‚(b…¯ ‚HbFœ½ï ‚ b…¯ ‚ÀbFœ½~æ #‚c…¯Œ_$‚c£ü $‚$cƒ­ßk(‚0cº  (‚þßk.‚¼gƒOßk.‚¼hƒ1þßk.‚liƒbßk.‚Ôiƒ ßk.‚ðjƒ•ßk.‚Lkƒ$ .‚ kƒ'$ .‚ôkƒúM\.‚˜lƒÀŸ.‚Ülƒ¬øßk.‚ðlƒ¾ò .‚Lmƒxþƒ .‚dnƒ@þ 0‚poƒåŽ 2‚ˆoƒ[þ 4‚ oƒ@I6‚tpƒ@I6‚Hq…¯ì 6‚pqƒQŸ:‚xqƒUMÒã:‚€qƒ!Q¾ò :‚ˆqƒ=Q¾ò :‚q…¯X :‚¨qƒQŸ<‚°qƒUMf <‚¸q…¯¿ <‚àqƒQŸ@‚èqƒUMÜ @‚ðqƒ!QÐÔ@‚øqƒ=Q‡@‚r…¯3 @‚r†QŸA‚ r†UMÒãA‚0r†!Q¾ò A‚@r†=Q¾ò A‚Pr…¯< A‚`r†QŸB‚pr†UMf B‚€r…¯E B‚r†QŸC‚ r†UMÜ C‚°r†!QÐÔC‚Àr†=Q‡C‚Ðr…¯Œ_C‚ØrFœ½d5 C‚är…¯Œ_D‚ìrFœ½*í D‚ør…¯Œ_E‚sFœ½*í E‚ s…¯Œ_F‚sFœ½N F‚ s…¯Œ_G‚(sFœ½Uü G‚4s…¯Œ_H‚ 6ƒ8ƒQpK8ƒ@ƒUM‰K8ƒH…¯¦ 8ƒX†QpK9ƒh†UM‰K9ƒx…¯K¥9ƒ…¯Œ_;ƒ˜FB[“u;ƒ°…¯“u=ƒÈƒ”[Ól?ƒÐƒí"‡?ƒØÆÈO×m?ƒ<žÆÈO×l@ƒLžÆMùm@ƒ¼žƒMbvBƒ(ŸÆMnCƒLŸ…¯K¥DƒdŸ…¯Œ_FƒlŸFB[“uFƒ„Ÿ…¯“uHƒœŸƒ”[ÓlJƒ¤Ÿƒí"‡Jƒ¬ŸÆÈO×mJƒ ÆÈO×lKƒ  ÆMùmKƒ ƒMbvMƒü ÆMnNƒ ¡…¯ÿOƒ0¡Fœ½kÕPƒ@¡…¯Œ_QƒH¡Fœ½.™ QƒT¡…¯¿ Rƒ|¡Fœ½ Vƒ£…¯æºWƒ¨£Fœ½E YƒØ£…¯Œ_Zƒà£Fœ½Uü Zƒì£…¯Œ_[ƒô£Fœ½Uü [ƒ¤…¯üÚ \ƒ¤Fœ½Ì ^ƒp¤…¯to _ƒ¤Fœ½«bƒ¬¤…¯Œ_cƒ´¤Fœ½Ú cƒÀ¤…¯ŽLdƒÐ¤Fœ½>H eƒä¤…¯ŽLfƒô¤Fœ½Ú gƒ¥…¯ù hƒ`¥Fؤâ®pƒ@¦FskŒ_qƒä¦Fê¤ßkqƒ§Fù¤@Iqƒ$§F ¥ð®qƒT§…¯ qƒt§Fœ½g tƒœ§…¯t uƒÄ§Fœ½Œ yƒô§…¯= {ƒX¨ƒ{›l ƒd©ƒskh ƒƒŒ©ƒ ë ƒƒàª…¯¦3 „ƒðªFœ½ô …ƒP«…¯ ‡ƒd«á¶ªZ“ˆƒp«áñªô ‰ƒ„«…¯C ‹ƒ¼«Fؤ¾ ‘ƒ´¬FskŒ_’ƒX­Fê¤ßk’ƒŒ­Fù¤$ ’ƒ˜­F ¥Ì ’ƒÀ­…¯V™ ’ƒè­Fœ½ì¾–ƒ®…¯Œ_—ƒ®Fœ½Ù —ƒ(®…¯ŽL˜ƒ8®Fœ½ç ™ƒH®…¯Oàšƒh®Fœ½ô ƒ„®…¯ žƒœ®Fœ½  ƒ¸®…¯¦3 ¡ƒÈ®Fœ½! ¢ƒÜ®…¯¹n¤ƒì®d 3 ¥ƒô®ƒr ßk¦ƒ¯ƒ H ¦ƒ¯ƒ“ ßk§ƒ¯¦ ] §ƒ¯ƒ· ßk¨ƒ(¯Ë j ¨ƒ0¯ƒØ ßk©ƒ<¯è { ©ƒD¯ƒ÷ ßkªƒP¯ƒ†O×lªƒX¯ƒ¹OÁmªƒp¯…¯É ªƒ€¯ƒqPÚ «ƒˆ¯…¯G «ƒ˜¯ƒqPX ¬ƒ ¯…¯ï ¬ƒ°¯ƒqPø ­ƒ¸¯…¯ ­ƒÈ¯ƒqP  ®ƒÐ¯…¯„ ®ƒà¯ƒqP‘ ¯ƒè¯…¯ë ¯ƒø¯†qPÚ °ƒ°…¯ô °ƒ°†qPX ±ƒ(°…¯ý ±ƒ8°†qPø ²ƒH°…¯ ²ƒX°†qP  ³ƒh°…¯ ³ƒx°†qP‘ ´ƒˆ°…¯Æ ´ƒ”±ƒ;Ÿ¶ƒ ±ƒmÐÔ¶ƒ¬±ƒ¹ Õ ¶ƒÐ±ƒÙ 4 »ƒô±ƒû ¶ Àƒ²ƒ$  ă4²ƒ: P ȃT²ƒN Š ̃¸²ƒp î σزƒ‡   Ӄ𲃞   Öƒ³ƒ¶  Ùƒ@´ƒÚ P ݃\µƒü ø Ⴠµƒ K åƒ$¶ƒ9 – éƒl¶ƒ\ Ó 샴¶ƒ  ïƒø¶ƒš I òƒ<·ƒ± ® õƒ€·ƒÒ   øƒ°·ƒñ   ûƒà·ƒ ê þƒ8¸ƒ4 a „T¸ƒJ ² „`¸…¯© „t¸á¶ªÊ „ ¸áñªó „踅¯© „ü¸á¶ª! „0¹áñª9! „x¹…¯© „ˆ¹Fœ½†! „¼¹…¯© „̹Fœ½·! „º…¯© „ºFœ½" „Dº…¯© „TºFœ½;" „ˆº…¯© „˜ºFœ½c" „̺…¯© „ܺFœ½®" „»…¯© „ »Fœ½ä" „T»…¯Œ_„`»á¶ªÈæ „p»áñª# „€»…¯© „»Fœ½ä" „Ä»…¯Œ_„лá¶ªÈæ „à»áñª# „ð»…¯# "„¼Fœ½ B &„D¼…¯ŽL'„T¼Fœ½)# („d¼…¯Œ_)„l¼Fœ½6# )„x¼…¯U# *„¸¼Fؤ½# 1„¬½FskŒ_2„P¾Fê¤ßk2„„¾Fù¤˜ 2„¾F ¥Ë# 2„¼¾…¯Ø# 2„̾Fœ½á# 3„ܾ…¯ŽL4„ì¾Fœ½î# 5„ü¾…¯Œ_6„¿Fœ½û# 6„¿…¯$ 7„P¿Fؤ‚$ >„DÀFskŒ_?„èÀFê¤ßk?„ÁFù¤ô ?„(ÁF ¥$ ?„TÁ…¯©$ ?„´ÁFؤ‚$ I„ÜÂFskŒ_J„€ÃFê¤ßkJ„´ÃFù¤ô J„ÀÃF ¥$ J„øÃ…¯% J„8ÄFؤ.% Q„<ÅFskŒ_R„àÅFê¤ßkR„ÆFù¤ø R„ ÆF ¥<% R„LÆ…¯I% R„tÆFœ½a% V„¸Æ…¯I% X„àÆFœ½ƒ% \„$Ç…¯I% ^„LÇFœ½¥% b„€Ç…¯I% d„¨ÇFœ½¿% h„ÜÇ…¯ƒ j„ÈFœ½í% n„8È…¯Œ_p„@ÈFœ½}«p„LÈ…¯Œ_r„TÈFœ½}«r„`È…¯& t„ˆÈFœ½w& x„ÔÉ…¯ z„ðÉáñªã& |„ÄÊᶪ$' ~„HË…¯ÿ„XËFœ½e' €„ÐË…¯© „äËᶪ”' ‚„ÌáñªÃ' ƒ„|Ì…¯ …„œÌFœ½g ˆ„ÄÌ…¯Œ_‰„ÌÌFœ½éĉ„àÌ…¯Œ_Š„èÌFœ½ç' Š„ôÌ…¯( ‹„DÍFؤ⮓„<ÎFskŒ_”„àÎFê¤ßk”„ÏFù¤@I”„ ÏF ¥ð®”„PÏ…¯FÝ”„hÏFœ½{( –„€Ï…¯Œ_—„ˆÏFœ½±( —„èÏ]N_˜„Ð…¯¹n˜„ÐÒ Ê( ™„Ѓæ ßk™„$Ðü Ê( ™„,Ѓßk™„8Ѓ†O×l™„@Ѓ¹OÁm™„XÐæCVÿ( ™„˜ÐæCV½sš„¨ÐæCVÎs›„øÐæÈO×m„ ÑæÈO×lž„0ÑæMùmž„lÑæM)  „¤ÑæMn¡„ÈÑ…¯…Þ ¢„äу›ˆH) ¤„ðу2U) ¤„ÒƒAõ·Þ ¥„(Ò…¯t) §„8ÒFœ½™) ¨„PÒ…¯Ñ) ª„hÒFœ½?|¬„€Ò…¯#Þ ­„ ÒFœ½?|°„ÔÒ…¯˜ß ±„ôÒFœ½?|´„$Ó…¯_* µ„<ÓFœ½?|·„TÓ…¯mr ¸„dÓFœ½|* ¹„|Ó…¯á »„”ÓFœ½M½„¬Ó…¯ºà ¿„ÌÓFœ½?|„ Ô…¯¦* Ä4ÔFœ½?|Ç„hÔ…¯*á È„ÔFœ½|* Ì„ôÔ…¯*á ΄ÕFœ½MÒ„ŒÕ…¯?Ô„œÕFœ½?|Õ„°Õ…¯?Ö„ÀÕFœ½ï* ׄÔÕ…¯+ Ø„ôÕFœ½?|Û„$Ö…¯á Ü„<ÖFœ½ï* Þ„tÖ…¯Œ_ß„|ÖFœ½«ß„ˆÖ…¯Œ_à„ÖFœ½«à„œÖ…¯Œ_ᄤÖFœ½«á„°Ö…¯Œ_ℸÖFœ½«â„ÄÖ…¯G+ ã„ìÖFœ½À¾ç„×…¯Œ_é„$×Fœ½(¨é„0×…¯Œ_ê„8×Fœ½ì¾ê„D×…¯Œ_ë„L×Fœ½ì¾ë„X×…¯Œ_ì„`×Fœ½ì¾ì„l×…¯Œ_í„t×Fœ½ì¾í„x×…¯G+ î„ ×Fœ½ô ò„Ð×…¯Œ_ô„Ø×Fœ½B ô„ä×…¯Œ_õ„ì×Fœ½(¨õ„ø×…¯Oàö„ØFœ½À¾ù„ˆØ…¯Œ_û„ØFœ½B û„œØ…¯G+ ü„ÄØFœ½ô …ôØ~_+ …Ù…¯+ …(ÙƒQ@I …0ÙƒUM} …8Ùƒ!QÒã …@Ùƒ=QÒã …HÙƒ†O×l …PÙƒ¹OÁm …hÙ…¯Œ_ …pÙFœ½m. …|Ùš- …ˆÚ¹×- …4ÛЯ. …pÛé/ …˜Û7/ #…ÀÛ2Ö/ '…4ÝK@0 *…ÐÞka0 .…ôÞá0 1…Tà¥1 4…ŒàÀg1 7…´áé{1 :…Ðá1 =…àá)ë1 ?…äâA'2 A…XãXš2 D…”ãpß2 H…˜ä÷2 L…˜å’3 N…èå¨3 Q…æÁ93 T…(æÚT3 W…Tæío3 Z…hæ…¯Œ_]…pæFœ½Š3 ]…|æ…¯Œ_^…„æFœ½´ã^…ˆæ…¯—3 _… æFœ½ª3 a…Ðæ…¯Ø0b…èæFœ½«d…ç…¯Œ_e… çFœ½¿3 e…,ç…¯. f…LçFœ½+4 i…Œç…¯Ø0j…¤çFœ½«l…Ôç…¯_. m…ôçFœ½^4 p…è…¯Œ_q…$èFœ½´ãq…(è…¯—3 r…@èFœ½ª3 t…pè…¯†. u…èFœ½À4 x…Ôè…¯Œ_y…ÜèFœ½áœy…Dé…¯Œ_z…LéFœ½z…œé…¯Œ_{…¤éFœ½*{…ôé…¯Œ_|…üéFœ½áœ|…dê…¯Œ_}…lêFœ½}…¼ê…¯Œ_~…ÄêFœ½*~…ë…¯Ø0…,ëFœ½«…\ë…¯Ø0‚…tëFœ½«„…¤ë…¯ý4 ……ÄëFœ½Îàˆ…üì…¯Ø0‰…íFœ½«‹…Dí…¯ý4 Œ…díFœ½Îà…(î…¯Ø0…@îFœ½«’…pî…¯ý4 “…îFœ½Îà–…äî…¯Œ_—…ìîFœ½´ã—…ðî…¯f5 ˜…ïFœ½ª3 š…8ï…¯Ø0›…PïFœ½«…€ï…¯Ø0ž…˜ïFœ½« …Èï…¯Œ_¡…ÐïFœ½´ã¡…Ôï…¯y5 ¢…äïFœ½‡5 £…ð…¯Œ_¤…$ðFœ½5 ¤…0ð…¯Œ_¥…8ðFœ½5 ¥…Dð…¯æº¦…\ðFœ½ª5 ¨…xð…¯Ø0©…ðFœ½««…Àð…¯É5 ¬…ððFœ½Îà±…`ñ…¯S2 ²…ˆñFœ½õ5 ¶…Ðñ…¯æº·…èñFœ½6 ¹…ò…¯æºº…òFœ½(6 ¼…8ò…¯æº½…PòFœ½56 ¿…lò…¯ÕfÀ…|òFœ½F6 Á…ò…¯Œ_Â…˜òFœ½´ãÂ…œò…¯X6 Ã…¬òFœ½lâÄ…Üò…¯Œ_Å…äòFœ½?Ņ󅯌_Æ…óFœ½5 Æ…$ó…¯a6 Ç…DóFœ½ÎàÊ…ló…¯t6 Ë…ŒóFœ½ÎàÎ…´óÉ6 Ï… ô]Ì6 Ñ…ìôø6 Ø…€õ¡'7 Þ…èõ·57 à…0öÕP7 â…`öì^7 ä…„ö57 ê…ðö­7 ì…4÷)57 ï…h÷?­7 ñ…È÷Xî7 ô…øi8 ÷…dø„98 ý…€ø™P8 †¬øÞ™8 †8ùöÃ8 †xùü8 †àù%K9 †dú<h9 †ŒúLv9 †àú_‰9 †ûu—9 †\ûŽª9 "†€û¤¸9 $†Øû½Ë9 '†ôûÚÞ9 *†0üõ5: /†ý W: 3†,ý3¸: 4†þHÕ: 9†4þ…¯ã: ;†DþFœ½º <†Tþ…¯÷1=†lþFœ½§?†„þ…¯m' @†”þFœ½8A†¤þ…¯ì: B†¼þFœ½§D†Ôþ…¯Œ_E†ÜþFœ½ú: E†üþ…¯Œ_F†ÿFœ½; F†$ÿ…¯Œ_G†,ÿFœ½7; G†\ÿb³; H†Ht< M†äŒ< P†(œ<< S†\®š< V†è»Ï< Z†(Ó´= ]†hîÐ= `†<ý> d†t j> i†  é> m† )1@ p†ôO}@ s†PiðB x†xrC {†ÌŸuD ‚†@©ïD ‡†`½E Œ†€Î½E ’†¤ë½F –†$"ñF ›†LNFG  †”o‰G ¥†¼¿G ª†Ðž0H ­†ÆÎ¤Ðµ†ÆõUÌѵ†ÆVFÒµ†¤…¯H µ†Èƒ;Ÿ·†Ôƒ1«H ·†àƒD³H ·†ì…¯ÅH ·†,Fؤ-¾†(FskŒ_¿†äFê¤ßk¿†4Fù¤Ól¿†@F ¥7¿†l…¯ÚH ¿†ŒFœ½~æ †¨…¯Œ_ưFœ½ñH Ƽ…¯Œ_ĆÄFœ½lâĆÐ…¯Œ_ņØFœ½lâņä…¯Œ_ƆìFœ½Á8 Ɔø…¯Œ_džFœ½lâdž …¯Œ_ȆFœ½¢Ȇ …¯Œ_Ɇ(Fœ½Á8 Ɇ4…¯Œ_ʆ<Fœ½lâʆH…¯Œ_ˆPFœ½¢ˆ\…¯Œ_̆dFœ½lâ̆p…¯Œ_͆xFœ½¢͆„…¯Œ_ΆŒFœ½lâΆ˜…¯Œ_φ Fœ½Åφ¬…¯Œ_І´Fœ½¢ІÀ…¯Œ_цÈFœ½ I цÔ…¯Œ_Ò†ÜFœ½0I Ò†…¯Œ_Ó† Fœ½lâÓ†…¯Œ_Ô† Fœ½lâÔ†,…¯Œ_Õ†4Fœ½¢Õ†@…¯Œ_Ö†HFœ½Á8 Ö†T…¯Œ_׆\Fœ½lâ׆h…¯Œ_؆pFœ½¢؆|…¯Œ_Ù†„Fœ½lâÙ†…¯Œ_Ú†˜Fœ½¢Ú†¤…¯Œ_Û†¬Fœ½lâÛ†¸…¯Œ_܆ÀFœ½¢܆Ì…¯Œ_݆ÔFœ½Å݆à…¯,ÒÞ†øFœ½^I à†X…¯Œ_â†`Fœ½3 â†l…¯Œ_ã†tFœ½>H ㆅ¯Œ_䆘Fœ½• 䆤…¯Œ_冬Fœ½lâ冸…¯Œ_æ†ÀFœ½¢æ†Ì…¯Œ_ç†ÔFœ½Ú ç†à…¯Œ_è†èFœ½pI è†ô…¯Œ_é†üFœ½pI 醅¯yI ê† Fœ½ƒI ì†<…¯Œ_í†DFœ½‘I í†P…¯Œ_î†XFœ½¼î†d…¯Œ_ï†lFœ½šI ï†|…¯Œ_ð†„Fœ½£I ð†…¯Œ_ñ†˜Fœ½¢ñ†¤…¯Œ_ò†¬Fœ½ç' ò†¸…¯Œ_ó†ÀFœ½°I ó†Ì…¯Œ_ô†ÔFœ½JSô†à…¯¾I õ† FؤVü†FskŒ_ý†¸Fê¤ßký†ìFù¤Òãý†øF ¥'Vý†$…¯ÿý†4Fœ½—ßþ†H…¯Œ_‡PFœ½°I ‡\…¯Œ_‡dFœ½JS‡p…¯õI ‡ÈFؤV ‡ìFskŒ_ ‡Fê¤ßk ‡ÄFù¤Òã ‡ÐF ¥'V ‡ …¯:J ‡( Fœ½ZJ ‡x …¯Œ_‡€ Fœ½¼‡Œ …¯Œ_‡” Fœ½3 ‡œ …¯Œ_‡¤ Fœ½• ‡° …¯Œ_‡¸ Fœ½Uü ‡Ä …¯Œ_‡Ì Fœ½Lü ‡Ø …¯Œ_‡à Fœ½Uü ‡ì …¯Œ_‡ô Fœ½UH ‡!…¯Œ_‡!Fœ½JS‡!…¯hJ ‡T!Fؤ¤Ò ‡H"FskŒ_!‡ì"Fê¤ßk!‡ #Fù¤~®!‡,#F ¥²Ò!‡X#…¯Œ_!‡`#Fœ½* !‡l#…¯Õf"‡|#Fœ½ŸJ #‡#…¯Œ_$‡˜#Fœ½dº$‡¤#…¯¬J %‡Ì#Fœ½ÈJ )‡$…¯¬J *‡0$Fœ½ K .‡Ô$…¯A 0‡%Fؤ»K 7‡ &FskŒ_8‡Ð&Fê¤ßk8‡'Fù¤‰k8‡'F ¥”{8‡D'…¯ÚA 8‡œ'Fؤ»K A‡à(FskŒ_B‡)Fê¤ßkB‡Ä)Fù¤‰kB‡Ð)F ¥”{B‡*…¯M B‡P*Fœ½GM I‡´*…¯QM J‡Ô*Fœ½é M‡+…¯Œ_N‡ +Fœ½¢N‡+…¯ M O‡P+Fœ½GM U‡”+…¯ÅC V‡¼+Fœ½N Z‡,…¯ÅC \‡D,Fœ½O `‡œ,…¯4O a‡¬,Fœ½†O b‡ô,…¯ÒO c‡ -Fœ½àO e‡,-…¯êO f‡T-Fœ½OP j‡$.…¯ŠP k‡Œ.FؤQ v‡Ü/FskŒ_w‡ 0Fê¤ßkw‡Ü0Fù¤Îîw‡è0F ¥,Q w‡ 1…¯|Q w‡1Fؤ_R ƒ‡„3FskŒ_„‡P4Fê¤ßk„‡ 4Fù¤xR „‡¬4F ¥‹R „‡ä4…¯£R „‡\5Fؤ_R ‘‡¨7FskŒ_’‡t8Fê¤ßk’‡Ä8Fù¤xR ’‡Ð8F ¥‹R ’‡9…¯.S ’‡ 9Fœ½´ß•‡\9…¯GS –‡t9Fœ½…ߘ‡9…¯[S ™‡ 9Fœ½—ßš‡Ä9…¯Œ_œ‡Ì9Fœ½´ßœ‡Ø9$®”_‡Ü9æjS ‡:òžS ž‡L:üjS  ‡ˆ:§S ¡‡¤=§S ¢‡´=,ÌS £‡|A=§S ¤‡°DR§S ¥‡äGh§S ¦‡K§S §‡HN§S ¨‡|Q¦§S ©‡¬T½§S ª‡àWϧS «‡[ä§S ¬‡H^ü§S ­‡|a §S ®‡°d.§S ¯‡ìgK§S °‡ki§S ±‡8nz§S ²‡Tq“§S ³‡pt¨¢;´‡¨x»*T ¶‡DzØ^T ¹‡Œ|ú–T ¼‡Ü|ìT ½‡°}aU ¾‡¤B'V Á‡°oOV Ƈ@°OV ʇ|³­uV ·ø¹ºV Ї ½Ñ§V Ò‡h½§V Õ‡¤½ìT ؇ܽgáV هо} W Ú‡´Å›RW ݇èÅ­ÖW ߇hÉöìT 䇠Í;jX å‡HÓuƒX ꇄÓ˜ªX î‡×¶iY ò‡¨Üç‡Y ÷‡ à…¯ÿfù‡0àFœ½†ú‡Dà…¯gû‡TàFœ½.gü‡xà…¯ûpý‡ˆàFœ½1pþ‡œà…¯5§ÿ‡¬àFœ½E§ˆÐà…¯ÿfˆààFœ½†ˆôà…¯gˆáFœ½.gˆ(á…¯¹nˆ8ᆖY ˆDვßkˆPá§¡Y ˆXჱßk ˆdᾡY ˆláƒÉßk ˆxáסY ˆ€áƒâßk ˆŒáð¡Y ˆ”áƒßk ˆ á¡Y ˆ¨áƒ$ßk ˆ´á8¡Y ˆ¼áƒMßkˆÈáe¡Y ˆÐáƒrßkˆÜá‚¡Y ˆäáƒßkˆðᛡY ˆøáƒ¨ßkˆâ¸¡Y ˆ âƒÄßkˆâÓ«Y ˆ$âƒâßkˆ0âô¡Y ˆ8⃠ßkˆDâ ¡Y ˆL⃠ßkˆXâ* ¡Y ˆ`âƒ4 ßkˆlâA ¡Y ˆtâƒV ßkˆ€ân ¡Y ˆˆâƒ ßkˆ”â“ ¶Y ˆ âƒ¨ ßkˆ¬âÀ ¶Y ˆ¸âƒÒ ßkˆÄâç ¡Y ˆÌâƒù ßkˆØâ!¡Y ˆà⃠!ßkˆìâ5!«Y ˆøâƒG!ßk!ˆã\!¡Y !ˆ ãƒq!ßk"ˆã‰!¡Y "ˆ ペ!ßk#ˆ,ã®!ÒY #ˆ8・!ßk%ˆDãË!îY %ˆPãƒÛ!ßk(ˆ\ãî!–Y (ˆhãƒ"ßk*ˆtテO×l*ˆ|ヹOÁm*ˆ”ãƒXßs*ˆÌåƒ"×l*ˆÜåÆÒvÓl*ˆ$è…¯õZ *ˆ<èƒQßk,ˆDèƒUMßs,ˆLè…¯Ot,ˆ\èƒqPßs-ˆdè…¯Ot-ˆtèƒqPßs.ˆ|è…¯Ot.ˆŒèƒqPßs/ˆ”è…¯Ot/ˆ¤èƒqPßs0ˆ¬è…¯Ot0ˆ¼èƒqPßs1ˆÄè…¯Ot1ˆÔèƒqPßs2ˆÜè…¯Ot2ˆìèƒqPßs3ˆôè…¯Ot3ˆéƒqPßs4ˆ é…¯Ot4ˆ éƒqPßs5ˆ(é…¯Ot5ˆ<éƒqPßs6ˆDé…¯1^ 6ˆ\éƒQßs8ˆdéƒUMßk8ˆlé…¯Ot8ˆ€éƒqPßs9ˆˆé…¯Ot9ˆœéƒqPßs:ˆ¤é…¯Ot:ˆ¸éƒqPßs;ˆÀé…¯Ot;ˆÔéƒqPßs<ˆÜé…¯Ot<ˆðéƒqPßs=ˆøé…¯` =ˆêƒQßs?ˆêƒUM!` ?ˆ ê…¯` ?ˆ8êƒQßsAˆ@êƒUM!` AˆHê…¯OtAˆ\êƒqPßsBˆdê…¯OtBˆxêƒqPßsCˆ€ê…¯1^ Cˆ˜êƒQßsEˆ êƒUMßkEˆ¨ê…¯OtEˆ¼êƒqPßsFˆÄê…¯OtFˆØêƒqPßsGˆàê…¯›b GˆøêƒQ!` IˆëƒUMßsIˆë…¯:c Iˆ(ëƒQJc Lˆ0ëƒUMßsLˆ8ëƒ!QRc Lˆ@ë…¯õZ LˆXëƒQßkNˆ`ëƒUMßsNˆhë…¯d Nˆxë†QßkOˆˆë†UMßsOˆ˜ë…¯*d Oˆ¨ë†qPßsPˆ¸ë…¯:d PˆÈë†qPßsQˆØë…¯Jd Qˆèë†qPßsRˆøë…¯Zd Rˆì†qPßsSˆì…¯cd Sˆ(ì†qPßsTˆ8ì…¯sd TˆHì†qPßsUˆXì…¯ƒd Uˆhì†qPßsVˆxì…¯“d Vˆˆì†qPßsWˆ˜ì…¯œd Wˆ¨ì†qPßsXˆ¸ì…¯¬d XˆÈì†qPßsYˆØì…¯µd Yˆèì†QßsZˆøì†UMßkZˆí…¯Åd Zˆí†qPßs[ˆ(í…¯Îd [ˆ8í†qPßs\ˆHí…¯Þd \ˆXí†qPßs]ˆhí…¯îd ]ˆxí†qPßs^ˆˆí…¯þd ^ˆ˜í†qPßs_ˆ¨í…¯e _ˆ¸í†Qßs`ˆÈí†UM!` `ˆØí…¯e `ˆèí†Qßsaˆøí†UM!` aˆî…¯.e aˆî†qPßsbˆ(î…¯>e bˆ8î†qPßscˆHî…¯Ge cˆXî†Qßsdˆhî†UMßkdˆxî…¯We dˆˆî†qPßseˆ˜î…¯ge eˆ¨î†qPßsfˆ¸î…¯pe fˆÈî†Q!` gˆØî†UMßsgˆèî…¯ye gˆøî†QJc hˆï†UMßshˆï†!QRc hˆ(ï…¯‰e hˆ8ï†QßkiˆHï†UMßsiˆXï]N_iˆ|ï…¯¹niˆŒïÂ"še jˆ”ïƒÒ"ßkjˆ ïä"še jˆ¨ïƒö"ßkjˆ´ï #še jˆ¼ïƒ"#ßkjˆÈO×ljˆÐOÁmjˆèïæCVÏe jˆ(ðæCV½skˆ8ðæCVÎslˆˆðæÈO×mnˆÄðæÈO×loˆÔðæMùmoˆñæMâe qˆHñæMnrˆlñ]N_sˆ„ñ…¯¹nsˆ”ñ¹#ûe tˆœñƒÍ#ßktˆ¨ñã#ûe tˆ°ñƒú#ßktˆ¼ñƒ†O×ltˆÄñƒ¹OÁmtˆÜñæCV0f tˆòæCV½suˆ,òæCVÎsvˆ|òæÈO×mxˆ¤òæÈO×lyˆ´òæMùmyˆðòæMCf {ˆ(óæMn|ˆLó…¯iS}ˆ\óFœ½òú~ˆpó…¯Tf ˆ€óFœ½cf €ˆ¤ó…¯iSˆ´óFœ½òú‚ˆÈó…¯sSƒˆØóFœ½‹S„ˆüóæCV…f …ˆxôæCV½s†ˆˆôæCVÎs‡ˆüôæÈO×m‰ˆXõæÈO×lŠˆhõæMùmŠˆÄõ…¯½f ŒˆÜõƒXßsˆèõƒœXßsˆôõƒ#$ßkˆöæMÏf ˆLöæMnˆhöƒn$!` ‘ˆpöƒx$êf ‘ˆxöƒˆ$÷v‘ˆ€ö…¯òf ‘ˆ öƒXßs”ˆ°öƒœXßs”ˆÀöƒ¦$g ”ˆøöƒ²$g •ˆ<÷…¯Œ_˜ˆD÷Fœ½ :˜ˆL÷…¯Œ_™ˆT÷Fœ½ :™ˆ\÷…¯Œ_šˆd÷Fœ½,g šˆp÷…¯Ag ›ˆ ÷Fؤeg  ˆXøFskŒ_¡ˆüøFê¤ßk¡ˆ0ùFù¤xg ¡ˆ<ùF ¥…g ¡ˆ\ù…¯®g ¡ˆÐùƒs\Õv¥ˆÜùƒ’ŠÓg ¥ˆúƒW%Þg ¦ˆ$úƒ›%êf ¨ˆPúƒª%êg ¨ˆŒúƒ¹%óg ©ˆ¼úƒÌ%h ªˆ4ûƒ…{h ªˆDûƒó%h «ˆ`ûƒ &h ¬ˆ„ûƒ&h ¬ˆÐûƒw$h ¬ˆ üƒ&&Ch ®ˆDüƒ7&lh ¯ˆ¸üƒ@&Œ_±ˆäüƒH&lh ±ˆøüƒT&h ³ˆýƒe&!` ³ˆ(ýƒs&zh ³ˆTýƒ™&ˆh µˆ”ƒ»&™h ¶ˆ¨ƒÝ&i ·ˆ@ƒð&i ¹ˆXƒ ',g »ˆ fƒ''™h ¼ˆ\‰ƒI'Þk ½ˆ|‰ƒt'èk ¿ˆ´‰ƒ‡'!` ˆì‰…¯Œ_ˆô‰Fœ½ã ˆŠ…¯÷k ĈŠFœ½Ul ƈ…¯Œ_LjFœ½dl Lj(…¯Œ_Ȉ0Fœ½dl Ȉ`…¯Œ_ɈhFœ½dl Ɉ˜…¯ul ʈ¨Fœ½~l ˈ¸…¯Œ_͈ÀFê’ŒÌ͈Ð…¯šl ͈àFœ½×l Έü…¯ìl ЈFœ½-ùÒˆ4…¯ìl ÓˆLFœ½-ùÕˆl…¯®g Öˆ”ƒs\ÕvÚˆ¤ƒ’ŠÓg Úˆ¼ƒ…{m ۈ̃š'!` ܈øƒ§'"m ܈$‘/0”_Þˆ(‘;0sv Þˆ8‘B0}v àˆP‘I0sv ∴‘V0sv äˆH’^0 æˆL’h0‡v æˆ|’p0“v 鈤’x0¤v ëˆØ’†0sv íˆä’Œ0®v ”0êv ñˆ“¡0lw óˆ “®0x öˆ,“»0xx úˆ<“Â0x ûˆP“É0xx üˆ¤“Ö0xx ýˆè“Þ0xx þˆô“ä0–x ÿˆ$”ì0Ÿx ‰T”ô0Ïx ‰`”û0-y ‰l”1¥y ‰x”/17z ‰À”I1zz ‰x•d1´z ‰´•ˆ1ñz ‰¼–˜1%{ ‰È– 1W{ ‰—©1‚{ ‰—°1_| ‰<—·1¨| ‰H—¿1Ì| ‰Œ—Ì1è| ‰(˜Õ1 } !‰4˜Ü1¹} "‰\˜ã1Ý} "‰d˜ø1ê} "‰|˜2ó} #‰„˜2~ #‰Œ˜2~ #‰”˜/2¤v #‰¬˜821~ %‰´˜F2H~ %‰¼˜Q2ê} %‰X™b2g~ &‰¸™{2~~ )‰À™‘2´~ )‰4š«2Î~ ,‰<šÁ2ï~ ,‰°šÖ2 1‰¸šë2~~ 1‰Àšö2p 1‰ ›3œ 6‰¨›+3Î~ 6‰°›83µ 6‰Ø›A3Ë 8‰œe3µ =‰Pœq3E€ ?‰lœ€3Žƒ C‰ÐŸš3‘† H‰@¤Î3Ó† M‰ ¤Ü3ᆠO‰Ì¤è3Y‡ T‰0¥ö3 ‰ V‰ ¦46‰ X‰ˆ¦4D‰ Z‰ø¦!4Q‰ [‰§-4̉ \‰ˆ§;4b‹ ]‰Œ¨K4o‹ ^‰©X4|‹ _‰0©d4Š‹ a‰8©w4¡‹ a‰@©‚4¡‹ a‰H©4Œ a‰«˜4VŒ c‰0«¢4mŒ d‰„«´4Œ f‰°«Á4³Œ h‰ô«Í4ÞŒ j‰@¬Ù4ýŒ l‰t¬æ4 n‰è¬ø4 o‰@­5% p‰T­52 q‰­5? r‰˜­05P r‰ ­=5P r‰¨­J5a r‰®S5n s‰˜®c5 s‰Ì®p5¹ t‰L¯~5Õ v‰”¯‹5ù x‰Ô¯š5Ž z‰°¨5"Ž |‰˜°¶50Ž ~‰ü°Ä5=Ž ‰$±Ñ5JŽ €‰`±à5WŽ ‰t±î5dŽ ‚‰4²ü5qŽ ƒ‰|² 6~Ž „‰Ä²6j™…‰È²%6j™…‰Ì²46j™…‰Ð²D6j™…‰Ô²T6j™…‰Ø²b6j™…‰Ü²o6j™…‰à²|6j™…‰ä²‰6j™…‰è²–6j™…‰ð²¦6j™…‰ø²³6j™…‰³Ã6j™…‰³Ð6j™…‰³Ü6j™…‰³é6j™…‰ ³ö6j™…‰(³7j™…‰0³7j™…‰8³ 7j™…‰@³-7j™…‰H³;7j™…‰P³L7j™…‰X³^7j™…‰`³s7j™…‰h³…7j™…‰p³”7j™…‰x³£7j™…‰€³¶7j™…‰ˆ³Æ7j™…‰³Õ7j™…‰˜³ä7j™…‰ ³ó7j™…‰¨³8j™…‰°³8j™…‰¸³"8j™…‰À³38j™…‰È³C8j™…‰Ð³R8j™…‰Ø³_8j™…‰à³o8j™…‰è³~8j™…‰ð³8j™…‰ø³¡8j™…‰´²8j™…‰´Ã8j™…‰´×8j™…‰´è8j™…‰ ´ü8j™…‰(´ 9j™…‰0´!9j™…‰8´.9j™…‰@´;9j™…‰H´K9j™…‰P´X9j™…‰X´h9j™…‰`´{9j™…‰h´9j™…‰p´ž9j™…‰x´®9j™…‰€´Â9j™…‰ˆ´Ö9j™…‰´é9j™…‰˜´þ9‹Ž …‰ ´:œŽ …‰¨´!:ªŽ …‰°´.:ÄŽ …‰¸´=:ÄŽ …‰À´L:ÖŽ …‰Ì´S:ÄŽ †‰Ô´]:èŽ †‰Ü´p:É †‰L½z:ù ˆ‰p½„:Ï ‰‰”½: ‘ ‹‰¤½š:Þ‘ Œ‰È½£: ’ Ž‰Ø½­:*’ ‰¾³:F’ ‘‰T¾»:T’ “‰Œ¾Ã:b’ •‰È¾Ë:o’ –‰ø¾Ó:™’ —‰¿ä:¶’ š‰¿ì:Î’ ›‰¿ø:“ ›‰\¿;“ ‰d¿ ;!“ ‰l¿;2“ ‰”¿ ;?“ ž‰œ¿8;t“ ž‰¤¿B;‹“ ž‰¬¿Q;¨“ ž‰´¿\;Ó ž‰¼¿t;” ž‰Ä¿‚;” ž‰Ì¿•;^” ž‰lÀ¨;l”  ‰xÀ¯;„” ¡‰€ÀÇ;­” ¡‰ˆÀÑ;¾” ¡‰Àà;Õ” ¡‰˜Àë;ê” ¡‰ À<• ¡‰¨À<0• ¡‰°À$<d• ¡‰(Á7<q• ¢‰0ÁB<‚• ¢‰8ÁN<—• ¢‰¤Á\<¥• ¤‰ðÁc<²• ¥‰\Âq<Ë• ¦‰øÂ<Ù• ¨‰`Ã<æ• ©‰hÃ¥<– ©‰pô< – ©‰xÃÈ<7– ©‰€Ãà<l– ©‰ˆÃï<ƒ– ©‰Ã=z— ©‰$Å=w˜ «‰ÌÅ=4™ ­‰ÔÆ#=!𠮉hÇ+=r𠝉tÈ:=€š ±‰ÉI=Æš ²‰ÐÊ\=Ôš ´‰ØÊt= › ´‰ìˇ=› µ‰ôËŸ=y› µ‰p̱=‡› ·‰Ì̾=•› ¹‰ÔÌÐ=Ú› ¹‰HÍâ=ç› º‰\Íï=ô› »‰dÍ> œ »‰lÍ>Fœ »‰tÍ%>aœ »‰|Í6>‚œ »‰„ÍN>¹œ »‰ŒÍ\>Ñœ »‰”Ío>ïœ »‰œÍˆ>, »‰¤Í”>G »‰¬Í¥>ïœ »‰´Í¾>, »‰¼ÍÎ>G »‰ÄÍã>h »‰ÌÍü>¥ »‰ÔÍ?À »‰ÜÍ%?á »‰äÍ>?ž »‰ìÍI?9ž »‰ôÍY?á »‰üÍr?ž »‰Î?9ž »‰ Ε?Zž »‰Î®?‹ž »‰Îº? ž »‰$ÎË?»ž »‰,Îä?æž »‰4Îò?øž »‰<Î@Ÿ »‰DÎ@AŸ »‰LÎ*@VŸ »‰TÎ;@Ÿ »‰\ÎT@AŸ »‰dÎd@VŸ »‰lÎy@qŸ »‰tÎ’@¢Ÿ »‰|Τ@·Ÿ »‰„λ@ÒŸ »‰ŒÎÔ@  »‰”Îß@  »‰œÎï@ÒŸ »‰¤ÎA  »‰¬ÎA  »‰´Î+A3  »‰ÜÎ9AN  ½‰ÏIAì  ¿‰ˆÏWA¡ Á‰ÈÏeA‡¡ ‰ÐsA¥¡ É(Ð|AÀ¡ ʼnxÐ…Al¢ lj´ÐAz¢ ɉÄЖA”¢ ʉÑŸAD£ ˉ\ѧAã ̉ŒÓ´A@¤ ΉàÓÊAp¤ Љ€ÔÛAŸ¤ Ò‰4ÕçAפ Ô‰dÕðA\¥ Ö‰€ÖBŒ¥ ؉´ÖBé¥ Ú‰<Ø#Bª ܉àÙ+Bª Þ‰øÙ8B8ª à‰LÚDB]ª ≴ÚQB~« ä‰PÛZBŒ« 扈ÛhB©« è‰ÜuBQ¬ ê‰|܃Bl¬ ì‰Ý™B‡¬ Ý¥BM® ð‰ß¯Bh® ò‰(ßµBÛ¯ ô‰˜ßÁB° ö‰üßåBn° ú‰äàòB€° û‰áC° ü‰|áCš° ý‰ôá%C·° þ‰,â.CÁ± ÿ‰Pã?CÞ± ŠpãNC*µ ЏåaCȸ ŠØæiCÕ¸ ŠìævC⸠ŠDç‚Cï¸ ФçCÿ¹ Š4è˜C º ŠTè¦C(º Ѝè³Cʺ ŠéÁC׺ Š€é×Cäº ŠøéãC5½ ЍëíCB½ мëóCž¾ Š8ìÿC«¾ Š@ì D¾ ŠHìDÀ ŠTíDÀ Š€í,DZÀ ŠÈîŠDƒFHÐ>ŠL…¯¡… >Šdƒ+FîÉ @Š€ƒ4\ZæAŠœ…¯ Ê BЬFœ½"Ê CŠÈ…¯<Ê DŠØFœ½"Ê EŠƒgªÓlFŠƒVFŒÊ FŠ$ƒ^F—Ê FŠ,ƒgF×lFŠ4ƒqF¡Ê FŠ@ƒzF¹nGŠL…¯¬Ê HŠtƒ„FftLŠŒƒÃý×lLŠœƒ"cULŠÜƒ1UMŠéZD NŠ,…¯Œ_OŠ8ᶪUOŠDáñªMPŠPƒ¤FÓlRŠXƒ²FftRŠ`…¯…„ RŠxƒüFRË TŠ€ƒ G\Ë TŠˆƒGfË TŠƒ$GtË TŠ˜ƒÛÓlTŠ ƒ.GË TЍ…¯n TŠàƒÃý×lZŠéZ¡Ë ZŠƒ8HGÌ _Š$ƒ?HÊÌ_Š,ƒJHMÌ _Š4ƒTHXÌ _Š<ƒ`HlÌ _ŠDƒlH€Ì _ŠLƒvHMÌ _ŠTƒƒH”Ì _Š\ƒ‘H Ì _ŠdƒžH±Ì _Šlƒ®HŸ_Štƒ»HÓl_Š|…¯¼Ì _ŠìƒçHfÍ kŠôƒôHwÍ kŠüƒÛÓlkŠƒIÍ kŠ …¯‡Í kŠ4ƒq¤Í oŠDƒ3b×lpŠPéZ¤„ pЏƒJ¦Î uŠÀƒ Jô‡uŠÈƒ-J¬Î uŠÐƒ7J»Î uŠØƒCJÏÎ uŠàƒOJãÎ uŠèƒYJ÷Î uŠðƒfJÏ uŠøƒtJÏ uŠƒJ Ï uŠƒ‘JÓluŠƒ›JöuŠ…¯/Ï uŠˆ…¯ÞÏ Š°Fœ½›÷…ŠÜ…¯Äv †ŠôFœ½,Ð ˆŠ$…¯cÐ ‰Š\Fœ½›÷Šœ…¯5w мFœ½ÎÐ “Šü…¯ Ñ ”ŠLFœ½›÷œŠ¨…¯Ìw ŠÐFœ½’Ñ ¡Š …¯µx ¢Š4 Fœ½ßÑ ¤Šd …¯y ¥Š„ Fœ½Ò ¨ŠÄ …¯uy ©Šì Fœ½QÒ ­Š8 …¯{ ®ŠH Fœ½pÒ ¯Š„ …¯{ ±Š” Fœ½ÝÒ ²ŠŒ …¯í{ ´Šœ Fœ½DÓ µŠ´ …¯í{ ¶ŠÄ Fœ½ªÓ ·Š …¯™| ¹Š Fœ½ÉÓ ºŠ` …¯™| »Šp Fœ½èÓ ¼ŠÈ …¯_} ½ŠØ Fœ½;Ô ¾Šð …¯_} ¿ŠFœ½‰Ô ÀŠH…¯Œ_ÁŠPFœ½“Ô ÁŠd…¯Œ_ŠlFœ½“Ô ÂŠ„…¯œÔ Ê”Fœ½ªÔ ÄŠ°…¯Œ_ÅŠ¸Fœ½·Ô ÅŠÄ…¯ÌÔ ÆŠÔFœ½ÚÔ ÇŠð…¯Œ_ÈŠøFœ½çÔ ÈŠ…¯Œ_ÊŠ Fœ½çÔ ÊŠ$…¯òÔ ÌŠ4Fœ½Õ ÍŠ`…¯Œ_ÏŠhFœ½Õ ÏŠt…¯2Õ ÑŠ„Fœ½KÕ ÒŠ°…¯Œ_ÔŠ¸Fœ½·Ô ÔŠÄ…¯Œ_ÕŠÌFœ½Õ ÕŠØ…¯Œ_׊àFœ½·Ô ׊ì…¯Œ_ØŠôFœ½ZÕ ØŠ…¯Œ_ÙŠFœ½Õ ÙŠ$…¯iÕ ÛŠ<Fœ½›÷ÝŠ`…¯Œ_ÞŠhFœ½vÕ ÞŠŒ…¯Œ_ߊ”Fœ½"ߊ¤…¯Œ_àŠ¬Fœ½‹Õ àŠ¼…¯Œ_áŠÄFœ½”Õ áŠÐ…¯Œ_âŠØFœ½¡Õ âŠä…¯Œ_ãŠìFœ½®Õ ãŠü…¯Œ_äŠFœ½£¦äŠ…¯Œ_åŠFœ½·Õ åŠ,…¯Œ_æŠ4Fœ½ÄÕ æŠ@…¯Œ_çŠHFœ½ÑÕ çŠX…¯Œ_èŠ`Fœ½¨äèŠl…¯Œ_éŠtFœ½ÚÕ éŠ„…¯Œ_ꊌFœ½çÕ êŠ˜…¯Œ_늠Fœ½"늰…¯Œ_슸Fœ½‹Õ ìŠÈ…¯Œ_íŠÐFœ½”Õ íŠÜ…¯Œ_îŠäFœ½¡Õ îŠð…¯Œ_ïŠøFœ½®Õ ¯Œ_ðŠFœ½£¦ðŠ…¯Œ_ñŠ$Fœ½·Õ ñŠ8…¯Œ_òŠ@Fœ½ÄÕ òŠL…¯Œ_óŠTFœ½ÑÕ óŠd…¯Œ_ôŠlFœ½¨äôŠx…¯Œ_õŠ€Fœ½ÚÕ õŠ…¯Œ_öŠ˜Fœ½çÕ öФ…¯Œ_÷ЬFœ½çÔ ÷ŠÈ…¯Œ_ùŠÐFœ½Õ ùŠÜ…¯Œ_ûŠäFœ½ôÕ ûŠð…¯Œ_üŠøFœ½þÕ üŠ…¯Œ_þŠ Fœ½‰íþŠ …¯Œ_ÿŠ(Fœ½ Ö ÿŠ0…¯Œ_‹8Fœ½Ö ‹D…¯Œ_‹LFœ½±­‹`…¯Œ_‹hFœ½&Ö ‹t…¯Œ_‹|Fœ½0Ö ‹ˆ…¯Œ_‹Fœ½•8‹¤…¯Œ_‹¬Fœ½“Ô ‹¸…¯Œ_‹ÀFœ½·Ô ‹Ì…¯Œ_ ‹ÔFœ½ôÕ ‹à…¯Œ_ ‹èFœ½þÕ ‹ô…¯Œ_ ‹üFœ½‰í ‹…¯Œ_ ‹Fœ½ Ö ‹ …¯Œ_‹(Fœ½Ö ‹4…¯Œ_‹<Fœ½±­‹P…¯Œ_‹XFœ½&Ö ‹d…¯Œ_‹lFœ½0Ö ‹x…¯Œ_‹€Fœ½•8‹”…¯Œ_‹œFœ½?Ö ‹¨…¯KÖ ‹¸Fœ½`Ö ‹Ì…¯Œ_‹ÔFœ½?Ö ‹à…¯KÖ ‹ðFœ½`Ö ‹…¯Œ_‹ Fœ½pÖ ‹…¯Ö !‹(Fœ½ŸÖ "‹<…¯²Ö $‹dFœ½›÷(‹”…¯Œ_)‹œFœ½ÁÖ )‹Ð…¯ØÖ *‹àFœ½× +‹ô…¯Œ_-‹üFœ½çÔ -‹…¯òÔ /‹$Fœ½× 0‹8…¯Œ_2‹@Fœ½&× 2‹T…¯0× 3‹dFœ½?× 4‹t…¯Œ_5‹|Fœ½&× 5‹…¯0× 6‹ Fœ½?× 7‹°…¯Œ_8‹¸Fœ½M× 8‹Ä…¯Z× 9‹ÔFœ½l× :‹ä…¯Œ_;‹ìFœ½}× ;‹ø…¯Ž× <‹Fœ½¤× =‹…¯Œ_>‹ Fœ½“Ô >‹8…¯œÔ ?‹HFœ½¹× @‹X…¯Œ_A‹`Fœ½Õ A‹l…¯2Õ C‹|Fœ½Æ× D‹…¯Œ_F‹˜Fœ½Õ F‹¤…¯2Õ H‹´Fœ½Æ× I‹È…¯Õ× K‹àFœ½›÷M‹…¯Œ_N‹Fœ½Ø N‹4…¯IØ O‹DFœ½¦Ø P‹p…¯åØ R‹€Fœ½&Ù S‹˜…¯Œ_U‹ Fœ½5Ù U‹¬…¯DÙ W‹ÄFœ½›÷Y‹ô…¯Œ_Z‹üFœ½·Ô Z‹…¯ÌÔ [‹Fœ½~Ù \‹(…¯Œ_]‹0Fœ½·Ô ]‹<…¯ÌÔ ^‹LFœ½~Ù _‹\…¯Œ_`‹dFœ½‹Ù `‹„…¯ºÙ a‹”Fœ½îÙ b‹°…¯%Ú c‹ÀFœ½DÚ d‹Ô…¯Œ_e‹ÜFœ½QÚ e‹è…¯Œ_f‹ðFœ½vÚ f‹…¯·Ú g‹,Fœ½Û h‹`…¯Œ_i‹hFœ½QÚ i‹t…¯Œ_j‹|Fœ½QÚ j‹ˆ…¯Œ_k‹Fœ½QÚ k‹œ…¯Œ_l‹¨á¶ªÛ l‹¸áñª$Û m‹Ì…¯Œ_o‹ÔFœ½FÛ o‹…¯Œ_p‹Fœ½UÛ p‹…¯Œ_q‹ Fœ½UÛ q‹4…¯Œ_r‹<Fœ½UÛ r‹P…¯Œ_s‹XFœ½UÛ s‹h…¯Œ_t‹pFœ½UÛ t‹€…¯Œ_u‹ˆFœ½UÛ u‹˜…¯Œ_v‹ Fœ½UÛ v‹°…¯Œ_w‹¸Fœ½UÛ w‹Ô…¯Œ_x‹ÜFœ½UÛ x‹ì…¯Œ_y‹ôFœ½UÛ y‹…¯Œ_z‹Fœ½UÛ z‹ …¯Œ_{‹(Fœ½UÛ {‹D…¯Œ_|‹LFœ½UÛ |‹`…¯Œ_}‹hFœ½UÛ }‹ˆ…¯Œ_~‹Fœ½UÛ ~‹¬…¯Œ_‹´Fœ½UÛ ‹Ä…¯Œ_€‹ÌFœ½UÛ €‹Ü…¯Œ_‹äFœ½UÛ ‹ô…¯Œ_‚‹üFœ½UÛ ‚‹…¯Œ_ƒ‹ Fœ½UÛ ƒ‹<…¯Œ_„‹DFœ½UÛ „‹`…¯Œ_…‹hFœ½UÛ …‹ˆ…¯Œ_†‹Fœ½UÛ †‹ …¯Œ_‡‹¨Fœ½UÛ ‡‹¸…¯Œ_ˆ‹ÀFœ½UÛ ˆ‹Ø…¯Œ_‰‹àFœ½UÛ ‰‹ø…¯Œ_Š‹Fœ½UÛ Š‹…¯Œ_‹‹Fœ½UÛ ‹‹,…¯Œ_Œ‹4Fœ½UÛ Œ‹D…¯¹n‹TFœ½UÛ Ž‹È…¯Œ_‹ÐFœ½žÛ ‹ü…¯:Ì‹ Fœ½UÛ ‘‹…¯Œ_’‹ Fœ½FÛ ’‹P…¯Œ_“‹XFœ½¶Û “‹d…¯ÞÏ •‹ŒFœ½›÷™‹¸…¯Äv š‹ÐFœ½,Ð œ‹ …¯T ‹ Fœ½>Ü ž‹< …¯{  ‹L Fœ½“Ü ¡‹d …¯Œ_£‹l Fœ½çÔ £‹„ …¯µx ¥‹œ Fœ½ßÑ §‹¼ …¯{‘ ¨‹Ì Fœ½äÜ ©‹è …¯œ‘ ª‹ø Fœ½Ý «‹!…¯Œ_¬‹!Fœ½“Ô ¬‹0!…¯ˆ’ ­‹H!Fœ½›÷¯‹|!…¯ŽL°‹Œ!Fœ½yÝ ±‹"…¯Œ_³‹"Fœ½ˆÝ ³‹L"…¯Œ_µ‹T"Fœ½¡Ý µ‹Ä"…¯Œ_¶‹Ì"Fœ½®Ý ¶‹ô"…¯Œ_·‹ü"Fœ½ÔÝ ·‹$#…¯Œ_¹‹,#Fœ½çÔ ¹‹D#…¯ŽL»‹T#Fœ½Þ ¼‹È#…¯Œ_¾‹Ð#Fœ½2Þ ¾‹ì#…¯Œ_¿‹ô#Fœ½“Ô ¿‹ $…¯Œ_À‹$Fœ½MÞ À‹x$…¯Œ_Á‹€$Fœ½jÞ Á‹œ$…¯Œ_‹¤$Fœ½{Þ Â‹°$…¯ŠÞ Ä‹À$Fœ½¢Þ Å‹Ô$…¯Œ_Ç‹Ü$Fœ½µÞ Ç‹ð$…¯Œ_É‹ø$Fœ½ÈÞ É‹%…¯×Þ Ë‹%Fœ½ïÞ Ì‹(%…¯Œ_΋0%Fœ½ß ΋<%…¯ß Ï‹L%Fœ½!ß Ð‹\%…¯Œ_Ñ‹d%Fœ½2ß Ñ‹p%…¯?ß Ò‹€%Fœ½Qß Ó‹%…¯Œ_Ô‹˜%Fœ½bß Ô‹¤%…¯‡ß Ö‹´%Fœ½Àß ×‹à%…¯ýKÙ‹ð%Fœ½Óß Ú‹&…¯Üß Û‹&Fœ½Óß Ü‹(&…¯ýKÝ‹8&Fœ½Óß Þ‹L&…¯Œ_ß‹T&Fœ½Óß ß‹d&…¯Œ_à‹l&Fœ½Óß à‹|&…¯Œ_á‹„&Fœ½Óß á‹”&…¯Œ_⋜&Fœ½Óß â‹¬&…¯Si㋼&Fœ½Óß ä‹Ð&…¯ýKå‹à&Fœ½Óß æ‹ô&…¯åß ç‹ 'Fœ½Óß é‹('…¯Œ_ê‹0'Fœ½Óß ê‹@'…¯Œ_ë‹H'Fœ½Óß ë‹X'…¯Œ_ì‹`'Fœ½Óß ì‹p'…¯Œ_í‹x'Fœ½óß í‹„'…¯à î‹”'Fœ½1à '…¯Œ_ð‹´'Fœ½çÔ ð‹Ì'…¯Œ_ò‹Ô'Fœ½Bà ò‹à'…¯Œ_ô‹è'Fœ½Qà ô‹ô'…¯và ö‹(Fœ½¯à ÷‹0(…¯Œ_ù‹8(Fœ½“Ô ù‹P(…¯Œ_ú‹X(Fœ½Âà ú‹d(…¯Œ_û‹l(Fœ½Ïà û‹x(…¯ìà ü‹ˆ(Fœ½á ý‹¤(…¯Œ_þ‹¬(Fœ½“á þ‹Ø*…¯Œ_Œà*Fœ½¢á Œì+…¯Œ_Œô+Fœ½¯á Œ,…¯Œ_Œ,Fœ½¾á Œ,…¯Œ_Œ,Fœ½Íá Œ(,…¯Üá Œ8,Fœ½â Œd,…¯Œ_ Œl,Fœ½(â Œx,…¯Œ_ Œ€,Fœ½5â Œ”,…¯Œ_ Œœ,Fœ½Bâ Œ¨,…¯Oâ Œ¸,Fœ½qâ ŒÔ,…¯‚â Œì,Fœ½›÷Œ -…¯Œ_Œ-Fœ½â Œ8-…¯¬â ŒP-Fœ½›÷Œ|-…¯Œ_Œ„-Fœ½¶â Œ¨-…¯Îâ Œ¸-Fœ½ã Œä-…¯Œ_Œì-Fœ½3ã Œ.…¯Œ_Œ.Fœ½Iã Œ(.…¯[ã Œ8.Fœ½‡ã ŒT.…¯Œ_Œ\.Fœ½ã Œh.…¯¥÷ Œx.Fœ½Åã !Œ¤.…¯Œ_#Œ¬.Fœ½Øã #Œ¸.…¯Œ_%ŒÀ.Fœ½çã %ŒÔ.…¯Œ_'ŒÜ.Fœ½úã 'Œè.…¯Œ_)Œð.Fœ½çÔ )Œ/…¯Œ_+Œ/Fœ½ ä +Œ0/…¯Œ_-Œ8/Fœ½Øã -ŒD/…¯Œ_/ŒL/Fœ½ä /ŒX/…¯'ä 1Œ€/Fœ½›÷5Œ¬/…¯]ä 6ŒÄ/Fœ½‰ä 8Œô/…¯¥ä 9Œ0Fœ½×ä :Œ0…¯¥÷<Œ(0Fœ½óä =Œ<0…¯å ?Œt0Fœ½›÷EŒ´0…¯Uå FŒÔ0Fœ½§å IŒ1…¯Èå JŒ$1Fœ½æ KŒ81…¯'ä MŒ`1Fœ½›÷QŒŒ1…¯]ä RŒ¤1Fœ½‰ä TŒÔ1…¯¥ä UŒä1Fœ½×ä VŒø1…¯%æ XŒ2Fœ½›÷[ŒH2…¯¥÷\ŒX2Fœ½Wæ ]Œ„2…¯oæ ^Œ”2Fœ½Éæ _ŒÀ2…¯áæ aŒØ2Fœ½›÷cŒ3…¯Œ_dŒ3Fœ½ëæ dŒ<3…¯ç eŒL3Fœ½iç fŒx3…¯Œ_hŒ€3Fœ½µÞ hŒ”3…¯Œ_jŒœ3Fœ½†ç jŒ¬3…¯Œ_lŒ´3Fœ½›ç lŒä3…¯Œ_mŒì3Fœ½²ç mŒ 4…¯Œ_nŒ4Fœ½Àç nŒ 4…¯Œ_pŒ(4Fœ½Ïç pŒ44…¯Þç rŒD4Fœ½è sŒp4…¯Œ_uŒx4Fœ½*è uŒ„4…¯9è wŒ”4Fœ½rè xŒÀ4…¯Œ_zŒÈ4Fœ½…è zŒÔ4…¯”è |Œä4Fœ½Íè }Œ5…¯Œ_Œ5Fœ½çÔ Œ05…¯òÔ Œ@5Fœ½× ‚ŒT5…¯Œ_„Œ\5Fœ½àè „Œh5…¯ïè †Œx5Fœ½é ‡ŒŒ5…¯Œ_‰Œ”5Fœ½é ‰Œ 5…¯)é ‹Œ°5Fœ½Aé ŒŒÄ5…¯Œ_ŽŒÌ5Fœ½çã ŽŒà5…¯Œ_Œè5Fœ½†ç Œø5…¯Œ_’Œ6Fœ½Té ’Œ 6…¯Œ_”Œ6Fœ½cé ”Œ 6…¯ré –Œ06Fœ½«é —Œ\6…¯¾é ™Œl6Fœ½Úé šŒˆ6…¯Œ_œŒ6Fœ½îé œŒœ6…¯ýé žŒ¬6Fœ½6ê ŸŒØ6…¯Iê ¡Œè6Fœ½xê ¢Œ7…¯Œ_¤Œ 7Fœ½Œê ¤Œ7…¯•ê ¥Œ$7Fœ½Œê ¦Œ47…¯Œ_§Œ<7Fœ½žê §ŒH7…¯«ê ¨ŒX7Fœ½Œê ©Œh7…¯¸ê ªŒ€7Fœ½Œê ¬Œ8…¯ë ­Œ 8Fœ½Œê ®Œ08…¯ýK¯Œ@8Fœ½Œê °ŒP8…¯Œ_±ŒX8Fœ½ ë ±Œd8…¯Œ_²Œl8Fœ½ë ²Œx8…¯Œ_³Œ€8Fœ½“Ô ³Œ˜8…¯œÔ ´Œ¨8Fœ½¹× µŒ¸8…¯Œ_¶ŒÀ8Fœ½#ë ¶ŒØ8…¯0ë ·Œè8Fœ½Bë ¸Œø8…¯Œ_¹Œ9Fœ½ ë ¹Œ 9…¯Së ºŒ9Fœ½eë »Œ,9…¯Œ_¼Œ49Fœ½vë ¼Œ@9…¯Œ_½ŒH9Fœ½¢½ŒL9…¯Œ_¾ŒT9Fœ½ƒë ¾Œt9…¯™ë ¿Œ„9Fœ½´ë ÀŒ”9…¯Œ_ÁŒœ9Fœ½Îë ÁŒÈ9…¯éë ÂŒØ9Fœ½ ì ÃŒè9…¯Œ_ÄŒð9Fœ½ƒë ÄŒ:…¯™ë ÅŒ :Fœ½´ë ÆŒ0:…¯Œ_ÇŒ8:Fœ½(ì ÇŒ`:…¯:ì ÈŒp:Fœ½fì ÉŒŒ:…¯Œ_ÊŒ”:Fœ½|ì ÊŒ¼:…¯“ì ËŒÌ:Fœ½Éì ÌŒè:…¯Œ_ÍŒð:Fœ½äì ÍŒ;…¯Œ_ÎŒ;Fœ½ûì ÎŒ(;…¯Œ_ÏŒ0;Fœ½í ÏŒ<;…¯í ÐŒL;Fœ½7í ÑŒh;…¯Œ_ÒŒp;Fœ½Hí ÒŒ|;…¯Uí ÓŒŒ;Fœ½wí ÔŒ¨;…¯Œ_ÕŒ°;Fœ½ˆí ÕŒ¼;…¯•í ÖŒÌ;Fœ½·í ׌è;…¯Œ_ØŒð;Fœ½“Ô ØŒ<…¯œÔ ÙŒ<Fœ½¹× ÚŒ(<…¯Œ_ÛŒ0<Fœ½Èí ÛŒ<<…¯Õí ÜŒL<Fœ½çí ÝŒ\<…¯Œ_ÞŒd<Fœ½øí ÞŒp<…¯î ߌ€<Fœ½î àŒ<…¯Œ_ጘ<Fœ½(î ጤ<…¯Œ_⌬<Fœ½5î ⌸<…¯Bî ãŒÈ<Fœ½dî äŒä<…¯uî åŒô<Fœ½‹î æŒ=…¯Œ_çŒ=Fœ½î çŒ=…¯ªî èŒ,=Fœ½Ìî éŒH=…¯Ýî êŒX=Fœ½óî ëŒl=…¯Œ_ìŒt=Fœ½Õ 쌀=…¯Œ_=Fœ½„ï îŒà@…¯Œ_ðŒè@Fœ½·Ô ðŒô@…¯Œ_ñŒü@Fœ½§ï ñŒB…¯Œ_òŒ˜BFœ½´ï òŒ¤B…¯Ãï ôŒ´BFœ½üï õŒàB…¯Œ_÷ŒèBFœ½ð ÷ŒôB…¯ð ùŒCFœ½6ð úŒC…¯Œ_üŒ CFœ½Ið üŒ,C…¯Vð ýŒÀOFœ½(õ ?ÜO…¯Œ_@äOFœ½=õ @ðO…¯Œ_AøOFœ½=õ AP…¯Œ_B PFœ½Jõ BP…¯Œ_C PFœ½dõ C,P…¯‰õ E ’ fSæ ”¬gS –Ðg!SL ™Ž€X|w@Ž”‹X|wBŽ˜›XÄ Dޤ¯Xà Eް·XÍ G޼ËX|wIŽÐÓXã KŽ€ÝX MŽL€êX OŽ€€÷XE QŽÄ€Y^ SŽø€ Yh UŽYŒ WŽˆ/YÉ XŽ ‚>Yóv ZŽŒ‚PY \Žà‚_Yóv ^Žð‚mYóv `ŽƒzY& bŽƒYs bŽÄƒ Y¯ gŽ„µYC lŽ †ÏY` qŽˆ†ìY… vŽÐ†Zª {ŽT‡Z” ŽÐŠ(ZÀ „Ž$‹2Z# ‡Ž¼‹HZ; ‹ŽÐ‹WZ` Žä‹dZx ”Žø‹oZ*‚˜ŽŒyZ ›Ž$Œ†Z¨ ŸŽ8ŒZÀ £ŽLŒªZà §Ž`Œ¼Z «ŽpŒÉZ|w®Ž¬ŒÖZ^ °Ž¸åZB ²ŽÀòZO ²ŽÈ[\ ²ŽÐ[i ²ŽØ-[v ²Žä5[v ´ŽðJ[ˆ ¶ŽŽX[ˆ ¸ŽŽl[ž ºŽ Žv[¯ »Ž4މ[Ø ½Ž€Ž—[î ¿ŽŽ§[ ÁލŽ·[ ÄŽÀŽÂ[³ ÇŽ°Ú[  ÍŽðþ[?ÑŽ$\; ÒŽ0\w—ÔŽ`\H˜ ÕŽ¤(\} ÖŽì‘4\} ׎ø‘C\Š ׎’O\± ÝŽ4’\\Í áŽp’q\ý 鎒x\( ðŽ ’†\: òޏ’‘\L ôŽ “ž\n ùŽ “¦\n üŽ4“µ\n ÿŽH“Ë\Š l“Ù\ª ”“ç\Ü ¬“ð\ø Г]! è“]3! ”!]ƒ! H”+]Æ! "`”>]ó! &Œ”M]" +L•]]¾" 2„•{]õ" 9•‚] # < •]# >Ì•Ÿ]<# @à•©]S# Cô•´]S# F–Ç]n# I$–Í]# N@–Ú] # RP–ê]# Tl–ù]# X˜– ^# ZÄ–"^«# \Ü–2^«# `ô–N^S# d—\^Ï# g4—^ $ ix—ž^1$ nŒ—±^ow pÌ—»^ow t ˜Ä^?$ x8˜ß^[$ |L˜ð^Œ$ `˜_°$ …x˜ _Ë$ ˆ”˜_ç$ Œ°˜4_ç$ ̘R_% ”ä˜k_% —ü˜€_"% š™•_B% ž<™¯_g% £X™Á_‡% §t™Ò_§% «”™ì_§% °¬™`È% µÐ™`î% »ð™.`& ¿š@`#& ÄTšN`:& Ç”šV``& Íüš\`& Õd›f`Ê& ß´›s`' æÄ›}`' è蛆`' ë œ`( î,œš`( ðLœ¤`N' òœ¿`œ' ô(Ù`·' ÷8í`Ö' ùL aý' û`)a ( ý€DaC( ÿ¸^aY( Èta( ôŒa¯( (ž¨a½( DžÄaå( |žÛa °žèa ÜžøaK) @Ÿbj) tŸb) ˆŸ%bj) ¨Ÿ1b¨) ¼Ÿ:bÊ) äŸIbé) !T Ub^ $€ dbR* &è ~b¼* *<¡Žb4+ -”¡¨b«1¢Ãb«3(¢çb 5¨¢÷bª+ 70£ cóv 9x£c ;ø£+c|w=0¤5c|w?x¤Ac|wAÀ¤Jc|wC¥Rc|wEP¥[c|wG„¥ec|wIÌ¥oc|wK¦}cû+ ML¦c1, O¸¦Ÿcy, P(§¬c|wR´§¼cŠƒ T ¨ÏcÒ, U0¨Ýc|wWŒ¨óc|wY¸¨d|w[ä¨d|w]©(d|w_°©5d|wa$ªCd|wc˜ªMd|we «Ud|wgL«`d|wiˆ­ndŠƒ kœ­d%- l¬­“d|wmÜ­œd‚- o,®Ìd¥- r8®ãdÄ- sx®ôdŠƒ uà®eæ- v¯e«xL¯+ee“z\¯@e . |d¯Te . |ˆ¯de_. ~¯|ev. ~´¯eµ. €¼¯¨eÌ. €à¯¼e / ‚è¯Ðe"/ ‚ °àea/ „°ïen/ „°f…/ „@°fÄ/ †H°'fÌ/ †¨°AfÞ/ ˆh±XfÞ/ ‹²ofÞ/ ޏ²†fî/ ‘T³f0 •ô³±f0 ˜ü³Éf0 ˜´äf0 ˜ ´ÿf0 ˜´#g0 ˜´2g0 ˜$´Mg0 ˜,´_g0 ˜4´qg"0 ˜p´ƒg90 ›¤´Tj]0 žÄ´g…0 ¡Ø´ªgÆ0 ¤ÄµÃg÷0 §¶Òg31 ªÄ¶ägJ1 ­ô¶hg1 °·h~1 ³t·,hê1 ¶ä¸:h2 ¹ü¸KhD2 ¼8¹Zh_2 ¿L¹ehq2 Á\¹qh‡2 Ãx¹{h]0 ÅŒ¹‹hÉ2 Èȹ¹h3 Îà¹Þh%3 Óäºi~3 Ø0»iŸ3 Ý€»7i4 âмPi:4 ç½ji_4 ì,½€iv4 ïD½—i‘4 ò\½Ái«4 ôl½Íi5 õø½çi|5 ú\¾öi6 ý$Âj–7 ‘Ã,j08 ‘ÄHjo8 ‘¨Ädj•9 ‘ŒÅwjá9 ‘œÅjH: ‘Æ¡jk: ‘ƲjŽ: ‘,ÆÌj ; ‘|Çäj•; ‘°Èúj´; ‘äÈ kÎ; ‘É!kÛ; ‘É3kä; ‘`ÉFkaa‘„ÉUk÷; ‘ÔÉrk< ‘Ê„k < ‘\ʬkjz!‘¸ÊÈkH< "‘ðÊåko$‘dËþkjz%‘pËlŽ< &‘€Ë6lŽ< '‘ËPlŽ< (‘ Ëhl—< )‘¼Ë†l < *‘ØË¤l»< +‘$̼lò< ,‘€ÌÖl = -‘àÌõl2= /‘8ÍýlL= 1‘dÍm›= 3‘ÈÍm©= 5‘øÍ(mÈ= 7‘XÎ3mÖ= 9‘pÎBm> ;‘ˆÎWmO> ?‘ ÎtmX> @‘ÀÎŽmk> C‘ÔΡm‚> F‘èθm®> I‘üÎÒmÍ> K‘LÏåmé> L‘œÏømö> M‘ìÏ n ? N‘<Ðn=? O‘°Ð9n|? R‘ÑUn»? U‘ˆÑrnÖ? X‘°Ñ…nóv Z‘ØÑ‘n|w\‘Ònóv ^‘<Ò«n@ `‘xÒËnóv c‘”Ò×nóv e‘°Òàn@ g‘ðÒñnóv m‘ Óünóv o‘(Óo|wq‘dÓoÉ s‘¬Ó oóv u‘ØÓ-o|ww‘Ô@oÉ y‘\ÔXoóv {‘ˆÔmo>@ }‘œÔxo>@ ~‘°ÔƒoÿÎ ‘ìÔo@ ‘dÕªoA ‘Ö¸oYA ƒ‘XÖÖo¶A †‘ÄÖìo©¦‰‘ÔÖùoB ‹‘œ×pe“‘Ü×,pe“‘Ø;pe“‘‘\ØJpe““‘œØ\pOB •‘,ÙwpOB —‘¼Ù†pOB ™‘LÚ•pOB ›‘ÜÚ§peB ‘ÛÁp›B  ‘\Ûæp²B £‘¼Û qÑB ¦‘ØÛq#C §‘ŒÜ4q3C ª‘,ÝKquC ®‘|ÝZqÆC ±‘¬Ýtq/D ²‘ØÞŠq/D ¶‘pßœq…D º‘èß­qñD ¾‘à¹q E Ä‘ÔàÏqÁE Æ‘<ár­F Ê‘°á(ròF БâarG Ó‘,âzrG Ô‘àâžrÊG Ø‘øâÆrH Ü‘DãîrÙH à‘HäsI 摘ä4s7I ì‘´äYsjI ò‘å‡s—I õ‘àå¬s±I ÷‘`æÏs^J ù‘ìætpJ û‘üæ$tèJ ü‘€çJtÊK ’œçZtHL ’ÄçhtHL ’ìçzt‘L ’è†tÚL ’<è˜tdM ’¼è¥tdM ’Üè½tËM ’ôèÚtèM ’ éût¾’,é uùM ’Lé uN ’lé6uŠƒ ’ŒéDu N ’ôéVu€ú’êquJN ’Øê…u³N ’XëœuíN ’`ë®uõN ’ì¼uO !’dìÌu+O $’ÌìÝuFO '’(íðu]O *’ŒívtO -’èív]O 0’Pî%v‹O 3’”î2v˜O 4’äîUv‹O 6’(ïcv˜O 7’xïrv³O 9’ŒïvØO <’Ðï–vP ?’ðï¯v2P C’ ðÃv¨P F’øðÑv÷P I’¨ñçv+Q L’Pòùv]O O’¸ò wBQ R’ówBQ U’tó7wYQ X’ôóNwpQ [’tôbw‡Q ^’œôpwáQ a’Hõ€wR d’\õ‘w R g’„õŸw?R j’ õ¨w“R o’ö¼w R s’@üÓwÔT v’4ÿßwøT y’HÿðwU |’|ÿx4U ’ÿx4U ‚’Ìÿ"xOU …’Üÿ3xfU ˆ’ðÿFxxU Š’QxÁU Œ’ÐlxØU ’ä‹xüU ’’ø§xV •’¸x)V —’$Ðx’V ™’Üx9W ›’Üéx¦W ’<ùxX Ÿ’ÀyyX ¡’l!yY ¢’ØTv ê“>/Šv ë“?Q(w ì“$@…Uw ï“L@™Ëw ð“ô@Êûx ó“œAêGy õ“äBÿ±y û“LC‚|w”¸C+‚Ûy ”$DH‚e“”@D]‚N ”`Dx‚öy ”¬D’‚${ ”pPႊ{ ”ÀPð‚¯{ ”Qÿ‚I| ”àR ƒ¦| %” S3ƒ} '”DS?ƒØ '”,X˃­€ 2”\XÙƒå >”œX胭€ J”ÜXóƒiƒ V”Zÿƒ˜„ a”8[ „o‹ l”@_„³‹ m”P_%„Ñ‹ n”`_2„ï‹ o”x_;„Œ r”_B„Œ u”¨_I„(Œ x”À_R„Ew {”Ø_Y„Ew }”ð_a„Ew ”`h„;Œ ”`p„;Œ „”4`v„Ew ‡”L`}„Ew ‰”d`ƒ„Ew ‹”|`‰„Ew ””`”„NŒ ”Ü`ž„|w”a³„óv ’”haÊ„[Œ ””ˆaׄóv —”¤aé„óv ™”Àaù„rŒ ›”Ôa…Œ œ”èa…›Œ  ”b/…ÌŒ £”db=…' §””bG…ìŒ ©”äbP…y ­”üb`… °”cm…3 ³”Xc…E ´”Àc‡…Q ¶”àc…Ù ¹”\dš… Ž ½”hd§…<Ž À”dÂ… ÔðdÎ…X Ç”0eì…P Ë”ôe†‡ Ò”Hf †‡ Ö”pf†£ Ú”œf$†Ä ß”¼f*†Û â”øf1†÷ 攉Ò’ x•8p]‰óv {•Tpe‰óv }•ppu‰“ •qš‰“ …•˜q©‰‡ ‹•Ðq¸‰£ •rȉ£ ”•PrÛ‰£ ™•r쉚‘ ž•èrЇ ¥• sЇ ©•Xs'Š“ ­•¨sHЇ ³•às[ŠÄ ·•tjŠ3“ º•|t‚Ї À•´t–Ї Ä•ìt¦Š‡ È•$u¶ŠEw Ì•\uÅŠEw Ε”uÚŠ‡ ЕÌuüЇ Ô•v ‹‡ Ø•\v‹Ü•¸v‹ß•w$‹â•hw1‹£ å•Àw?‹ow ê•xJ‹ow î•@xU‹' ò•Px\‹Y“ ô•„xd‹Ó“ ÷•|yn‹w—ø•Œyv‹ò“ ù•ày‡‹' ü•z‘‹]aþ•z´‹]aþ•zÛ‹]aþ•zû‹]aþ• zŒ” þ•¨z;Œ.” –¸zTŒ<” –Ðz~ŒK” –ìzµŒ[” –h{ÕŒm” –Ì{ñŒ{” –ô{Á” –p|4]a–x|WÔ” –}r]a– }‰{” –8}¤Á” –Ì}¸$• –à}ÔÁ” –l~ò€• –€ŽŽ• –ÈBŽ.” –H€ZŽê• –¸€kŽ…– –ÀƒŽí– #–$‚Ž…t %–„½Ž…t +–,„ÚŽ˜ 1–@„íŽ!™ 5–T… K™ :–Œ…Ø™ <–|†>š =–¤†UAš A–Ô†€{š E–ô†¤› J–‰ÐQ› P–‰ãQ› P–‰ø$  P–ôŒ#Ï  S–ÔNá  U–$Žb¡ Z–XŽ|.¡ ]–¤Ž‹J¡ a–ÈŽ¡º¡ b–(¸8¢ e–€à‘¢ n–Ðõé¢ v–0‘‘Ž< y–|‘3‘@£ z–”’P‘¹£ ~–0•X‘𣠂–¼•b‘𣠆––v‘%¤ Š–T–‰‘aa‹–x–•‘í¥ –™¤‘b–<™¹‘b“–d™Ê‘ü¥ ––€™Û‘`˜–™ï‘Ž< ™–Ô™’j™š–Ø™4’j™š–Ü™i’j™š–à™¨’j™š–ä™á’j™š–虓,øš–š7“f… œ–0š[“f… ž–€š~“f…  –èš“|w¢–›«“|w¤–›À“|w¦–țԓ|w¨–ô›å“|wª–œ”|w¬–˜œ”~¦ ®–@3”~¦ °–LP”˜¦ ²–lp”|w´– ƒ”|w¶–Ä“”Ǧ ¸–àž­”Wy ¿–HŸ¸”Ä–˜ŸÆ”Å‘ Ç–ÈŸÔ”ow Í– Ý”,øÑ–8 ñ”,øÓ–\ •&§ Õ–¡-•|wÚ–ì¡8•|wÜ–4¢G•«Þ–|¢c•e“à–Œ¢„•̧ â–4¤ •÷§ ç–Œ¤²•¨ ê–Ø¤Ê•S¨ ë–¥è•\¨ ë– ¦ù•o¨ î–\¦–Ѝ ñ–§–ž¨ õ–§0–«¨ õ–(§N–´¨ õ–P§p–Ô¨ ù–d§Ž– © þ–˜§›–© — ¨§–Щ —T¨¶–© —|¨Æ–© —جÛ–êª —­á–<# —­ç–lb —@­í–À« —0¯ÿ–à« —@¯ —J¬ — ° —\¬ "—T°.—n¬ $—l°=—­¬ &—¸°T—¿¬ (—аp—ù¬ +—±—_­ -—²©—y­ /—,²É—‹­ 1—@²ñ—¥­ 3—P²˜B® 5— ²˜¡® 7—¸³2˜¸® :—ȳG˜Ï® =—سZ˜¸® @—è³w˜æ® C—8´Œ˜«D—Œ´®˜ï® F—°´˜¯ I—Ø´Õ˜¯ M—è´ì˜-¯ P—ü´™M¯ T—0µ™° \—°½)™ß° _—¬¾@™ó° b—¸¾[™ ± d—ľx™·˜f—ྖ™Ï  h—lʨ™f² j—pËÁ™Ï  m—ÍÏ™08 o—TÎö™H´ q—$Кˆ´ u—lÐ!š›´ x—¼Ð:šNŒ ~—ÑHš µ —PÒWšoµ €—Ó{šâµ —ìÓƒšh¶ ‚—ðÔ šƶ …—Ö³šF¸ ‡— ×ݚϠ ‰—HØ÷š?‹—TØ›¹ Œ—\Ø…¯æ —l؃qP.¹ Ž—t؃†O×lŽ—|؃¹OÁmŽ—”؃qPðY Ž—°ØƒÐc±­—ÌØƒ"c†¹ —øØÁMŸ¹ ’—Ù…¯æ ’—ÙƒqP˹ “—LÙƒþcÕ¹ ”—|ÙƒÐcC”•—¬Ùƒ"cã¹ –—àÙƒ÷cö¹ ˜—Úƒubßk™— ÚÁMº ™—0Ú¸ˆ~D™—LÚ…¯>º š—dÚFœ½Iº œ— Ú…¯Œ_—¨ÚFœ½^º —ÌÚ…¯æ ž—ØÚƒ ;.¹ Ÿ—äÚƒqP¡Ÿ—Ûƒþchþ —ÛƒOÝ•8¡—8Ûƒ"cXÛƒ÷c¢º ¤—xÛÁMv¤¥—ˆÛƒubßk¥—˜Û¸ˆ«C ¥—´Û…¯±æ¦—ÌÛFœ½ » ¨—Ü…¯Œ_©—ÜFœ½6» ©—4܃P› ª—<܃[›x» ª—D܃h›‡» ª—LÜ…¯–» ª—lÜÁMº ­—tÜ…¯Œ_­—|ÜFœ½dº­—ˆÜ…¯Œ_®—ÜFœ½Ä» ®—œÜ…¯Œ_¯—¤ÜFœ½._¯—°Ü…¯Œ_±—¸ÜFœ½._±—ÄÜ…¯Í» ³—ÔÜFœ½,Þ´—äÜ…¯Í» µ—ôÜFœ½¼ ¶—ˆÞ…¯Í» ·—˜ÞFœ½,Þ¸—¨Þ…¯Œ_¹—°ÞFœ½0¼ ¹—¼Þ…¯Œ_»—ÄÞFœ½¹`»—ÐÞ…¯Œ_¼—ØÞFœ½dº¼—äÞ…¯?¼ ½—üÞFœ½Xè ¿—Pß…¯Œ_Á—XßFœ½^¼ Á—`ß…¯Í» —pßFœ½s¼ ׀߅¯€¼ Ä—ßFœ½’¼ Å—¤ß…¯Í» Æ—´ßFœ½,ÞÇ—Äß…¯Œ_È—ÌßFœ½^¼ È—Ôß…¯Œ_É—ÜßFœ½^¼ É—äß…¯Œ_Ê—ìßFœ½dºÊ—øß…¯À-Ë—àFœ½±­Ì—à…¯À-Í—(àFœ½°‡ Ηdà…¯÷1Ï—|àFœ½Ò‡ Ñ—¼à…¯÷1Ò—ÔàFœ½C”Ô—üà…¯Œ_Õ—áFœ½§¼ Õ—á…¯¹¼ ×—(áFœ½ü Ù—Há…¯Œ_Ú—PáFœ½м Ú—tá…¯ë¼ Û—ŒáFœ½ü Ý—¬á…¯Œ_Þ—´áFœ½õ¼ Þ—Øá…¯Œ_ß—àáFœ½½ ß—ìá…¯ÿà—üáFœ½§á— â]N_â—0â…¯¹nâ—@âû›!½ ã—H⃜ßkã—Tâœ!½ ã—\âƒ)œßkã—hâ=œ!½ ã—pâƒKœßkã—|⃆O×l㗄⃹OÁmã—œâæCVV½ ã—ÜâæCV½sä—ìâæCVÎså—<ãæÈO×mç—xãæÈO×lè—ˆãæMùmè—ÄãæMi½ ê—üãæMnë— äƒœ½ ì—(䃜‡» ì—0ä…¯½ ì—HäÁM& î—PäƒÅœŽ î—päƒÜœß½ ð—ˆäìœA¾ ò—´äúœ[¾ ó—Ðä…¯Œ_õ—ØäFœ½u¾ õ—ää…¯Œ_ø—ìäFœ½dºø—øä…¯Œ_ù—åFœ½dºù— å…¯] ú—,åFœ½—ßý—Xå…¯] ÿ—xåFœ½—ߘ¤å…¯] ˜ÄåFœ½—ߘðå…¯] ˜æFœ½š¾ ˜<æ…¯Œ_˜DæFœ½dº˜Pæ…¯] ˜pæFœ½._˜˜æ…¯Œ_˜ æFœ½dº˜¬æ…¯|Š ˜ÄæFœ½¹`˜Üæ…¯¨¾ ˜ìæFœ½±¾ ˜Tç…¯Œ_˜\çFœ½._˜hç…¯¾¾ ˜çFœ½±­ ˜Àç…¯Ö¾ !˜ØçFœ½±­#˜øç…¯ä¾ $˜ èFœ½C”(˜`è…¯] )˜€èFœ½—ß,˜¬è…¯ÿ.˜¼èFœ½}«/˜Ôè…¯Œ_1˜àèá¿ 1˜é…¯Œ_3˜éá¿ 3˜Lé…¯Œ_5˜Xéá1¿ 5˜¨é…¯Œ_7˜´éá?¿ 7˜ê…¯Œ_9˜ êFœ½m.9˜ê…¯Œ_;˜ êFœ½m.;˜,ê…¯d¿ =˜TêƒHr¿ ?˜|êƒR{¿ @˜œêƒb¿ B˜¬êƒsk™¿ B˜Ðê…¯ÕfE˜àêFœ½FºF˜ ë…¯ÕfH˜0ëFœ½½¿ I˜xë…¯Œ_K˜€ëFœ½ÁuK˜ë…¯ÕfM˜ ëFœ½¶CN˜¸ë…¯ÕfP˜ÈëFœ½¶CQ˜àë…¯Œ_S˜èëFœ½ÁuS˜øë…¯Œ_U˜ìFœ½ÁuU˜ì…¯ÕfW˜ ìFœ½¶CX˜8ì…¯ÕfZ˜HìFœ½¶C[˜`ì…¯ÿ]˜pìFœ½¹`^˜¤ìoå¿ _˜°ì…¯û¿ a˜ÈìƒQÏ®c˜ÐìƒUMÒãc˜Øìƒ†O×lc˜à샹OÁmc˜øì…¯Œ_c˜íFœ½._c˜ í…¯Œ_e˜íFœ½._e˜í„nÀ g˜$í…¯bÀ h˜4íƒqP‚À i˜<탆O×li˜D탹OÁmi˜\탧gù‚i˜Œíƒþchþi˜Äíƒ"c±æj˜àíéZ“æl˜ðí…¯áÀ l˜(îFؤ»K r˜ ïFskŒ_s˜ÐïFê¤ßks˜ðFù¤‰ks˜ðF ¥”{s˜@ð…¯¹Á s˜LðƒÐ( t˜ˆðƒ"cÝ u˜´ðƒ÷cM w˜Ôðƒ ;ÈÀx˜àðÁMMOx˜ðð…¯  x˜üðƒÐkåy˜\ñƒ"c½Ðz˜¨ñÁMæ" |˜¼ñ…¯Þ|˜ÌñFœ½f”}˜àñ…¯Þ~˜ðñFœ½f”˜ò…¯Þ€˜òFœ½f”˜(ò…¯ÿ‚˜8òFœ½b ƒ˜pò…¯ÿ…˜€òFœ½‚ †˜ôò]N_ˆ˜ó…¯Œ_ˆ˜óIž­Â ˆ˜óƒ[žßkŠ˜ ópž¿Â Š˜(󃡞ßkŠ˜4óÔžÇÂ Š˜<óƒížßk‹˜Hóƒ†O×l‹˜póƒ¹OÁm‹˜ˆó…¯ à ‹˜ óƒQô‡˜¨óƒUM»˜°ó…¯Œ_˜¸ó…¯X6 ˜ÈóƒqPèÃ Ž˜Ðó…¯LÄ Ž˜àó†Qô‡˜ðó†UM»˜ô…¯\Ä ˜ô…¯eÄ ˜ ô†qPèà ‘˜0ô…¯ÿ‘˜@ôFœ½ÛÒ’˜Tô…¯Þ“˜dôFœ½,Þ”˜tô…¯Œ_•˜|ôFœ½dº•˜ˆô…¯ÿ–˜˜ôFœ½ø_ —˜°ô…¯Œ_˜˜¼ôánÄ ˜˜ìôƒ ßkš˜ôôƒ" ßkš˜üôƒ5 ßkš˜õƒL ßkš˜ õƒ^ ßkš˜õƒy ßkš˜õƒ ßkš˜$õƒ¥ ßkš˜,õ…¯|Ä š˜|õæCVˆÄ ¢˜ØõæCV½s£˜èõæCVÎs¤˜LöæÈO×m¦˜÷æÈO×l§˜ ÷æMùm§˜<÷æMœÄ ©˜è÷æMnª˜ ø…¯Œ_«˜øFœ½¥Ä «˜4ø…¯·Ä ­˜DøFœ½¥Ä ®˜`ø…¯·Ä °˜pøFœ½ÀÄ ±˜„ø…¯·Ä ³˜”øFœ½ÒÄ ´˜¨ø…¯·Ä ¶˜¸øFœ½L·˜Ìø…¯äÄ ¹˜äøFœ½òÄ »˜üø…¯·Ä ¼˜ ùFœ½ÿÄ ½˜4ù…¯·Ä ¾˜DùFœ½¥Ä ¿˜Xù…¯Å Á˜xùFœ½%ŠĘ¬ù…¯Œ_Ƙ´ùFœ½._ƘÀù…¯ÄȘÐùFœ½?Šɘàù…¯Š˘úFœ½YŠΘ,ú…¯ŠИLúFœ½sÅ Ó˜xú…¯Œ_Õ˜€úFœ½._Õ˜Œú…¯Œ_ט”úFœ½._ט ú…¯Å Ù˜ÀúFœ½YŠܘìú…¯Œ_Þ˜ôúFœ½._Þ˜û…¯Å à˜(ûFœ½Å ä˜Tû…¯Å å˜tûFœ½²Å 蘨û…¯Œ_阰ûFœ½âè阼û…¯Œ_ê˜ÄûFœ½dºê˜Ðû…¯Œ_ë˜ØûFœ½dºë˜äûƒG¤ßkì˜ìûƒn¤+Æ ì˜ôûƒ…¤;Æ ì˜üûƒ™¤ßkì˜üƒ¬¤ßkì˜ üƒ\Ǥ²ì˜üƒĤßkì˜üƒܤßkì˜$üƒñ¤ßkì˜,üƒ¥ßkì˜4üƒ.¥ßkì˜<üƒI¥ßkì˜Düƒb¥ßkì˜Lüƒw¥ßkì˜Tüƒ‘¥ßkì˜\üƒ¤¥ßkì˜düƒ¶¥ßkì˜lüƒÙ¥ßkì˜tüƒý¥ßkì˜|üƒ;Ÿ옄üƒ¦GÆ ì˜Œüƒ6¦OÆ ì˜”ü…¯aÆ ì˜TýƒO¦µÆ ™ìýpUõã™,þƒ\¦ÒÆ ™Dþƒh¦߯ ™xþƒ¦ìÆ ™ÿ…¯Œ_™ ÿFœ½ùÆ ™,ÿ…¯Ç ™<ÿFœ½Ç ™Tÿ…¯Œ_ ™\ÿFœ½"Ç ™`ÿ…¯Œ_ ™hÿFœ½Œ” ™xÿ…¯Œ_ ™€ÿFœ½Œ” ™ÿ…¯Œ_™˜ÿFœ½Œ”™¨ÿ…¯Œ_™°ÿFœ½Œ”™Àÿ…¯ ³™ÐÿFœ½BÇ ™D…¯OÇ ™TFœ½?™d…¯XÇ ™„Fœ½oÇ ™´…¯Œ_™¼Fœ½?™à…¯Ø0™øFœ½«™(…¯Ø0™@Fœ½«™p…¯ŽL™€Fœ½Ç ™°…¯Ø0!™ÈFœ½«#™ø…¯Ø0$™Fœ½«&™@…¯Ø0'™XFœ½«)™ˆ…¯OÇ *™˜Fœ½?+™¨ƒݦÈ ,™°ƒê¦È ,™¸…¯2È ,™Ðƒû¦€‚ .™ðÁMZÈ .™ƒ§åJ.™ ƒ›§åJ.™ƒ­§B.™ƒ¹§˜È .™$ƒ˧¯È .™,…¯ÆÈ .™\æCV.É 3™„æCV½s4™˜æCVÎs5™ÜæÈO×m7™€æÈO×l8™æMùm8™(ÁM?É :™dæMGÉ :™ðæMn;™…¯Œ_<™Fœ½_É <™D…¯~É =™\Fœ½šÉ ?™Ô…¯~É A™ìFœ½¬É C™T…¯¾É E™tFœ½•8H™”…¯}LI™¤Fœ½ÞÉ J™ð…¯}LL™Fœ½ÞÉ M™,…¯Ê O™LFœ½ÞÉ R™¤…¯Ê T™ÄFœ½Ê W™ü…¯Œ_Y™ Fœ½¢ãY™ …¯Œ_Z™ Fœ½9Ê Z™D …¯}L[™T Fœ½JÊ \™€ …¯}L^™ Fœ½ÞÉ _™Ì …¯}La™Ü Fœ½ÞÉ b™ …¯}Ld™ Fœ½nÊ e™D …¯Ê g™d Fœ½JÊ j™œ …¯Ê l™¼ Fœ½Ê o™ô …¯’Ê q™ Fœ½éÊ r™ …¯Ê s™< Fœ½Ê v™t …¯Ê x™” Fœ½nÊ {™Ì …¯ßL}™Ü Fœ½šÉ ~™L …¯ßL€™\ Fœ½¬É ™Ì …¯Œ_ƒ™Ô Fœ½5Ë ƒ™ð …¯Œ_…™ø Fœ½5Ë …™ …¯Œ_‡™ Fœ½GË ‡™ …¯iK ‰™8 Fœ½£Ë Œ™` …¯Œ_Ž™h Fœ½µË Ž™t …¯Œ_™| Fœ½ÑË ™Œ …¯Œ_™” Fœ½ÞË ™° …¯Œ_’™¸ Fœ½Ë¥ ’™Ä …¯Œ_“™Ì Fœ½µË “™Ø …¯Œ_”™à Fœ½ÑË ”™ð …¯Œ_•™ø Fœ½ÞË •™…¯Œ_—™Fœ½Ë¥ —™(…¯Œ_˜™0Fœ½ðË ˜™<…¯Œ_™™DFœ½ Ì ™™T…¯Œ_š™\Fœ½Ì š™t…¯Œ_œ™|Fœ½òš œ™ˆ…¯Œ_™Fœ½+Ì ™œ…¯Œ_ž™¤Fœ½GÌ ž™´…¯Œ_Ÿ™¼Fœ½TÌ Ÿ™Ì…¯Œ_¡™ÔFœ½fÌ ¡™à…¯M ¢™øFœ½¼¤™ …¯Œ_¦™(Fœ½ Ì ¦™,…¯Œ_¨™4Fœ½ºÌ ¨™@…¯Œ_ª™HFœ½ÔÌ ª™T…¯Œ_¬™\Fœ½îÌ ¬™`…¯Œ_®™hFœ½•8®™t…¯Œ_¯™|Fœ½Ëí¯™ˆ…¯Œ_°™Fœ½ªí°™œ…¯Œ_±™¤Fœ½‰í±™°…¯Œ_²™¸Fœ½‰í²™Ä…¯·Ä ³™ÔFœ½Í ´™ä…¯·Ä ¶™ôFœ½Í ·™…¯·Ä ¹™Fœ½,Í º™,…¯>Í ¼™LFœ½UÍ ¿™€…¯·Ä À™Fœ½sÍ Á™¼…¯·Ä ™ÌFœ½–Í Ã™à…¯·Ä Å™ðFœ½¬Í Æ™…¯Œ_È™ Fœ½UÍ È™…¯¾Í É™0Fœ½ÑÍ Ì™p…¯ëÍ Í™ Fœ½UÍ Ò™Ü…¯·Ä Ó™ìFœ½Í Ô™ü…¯·Ä Ö™ Fœ½Í ×™…¯·Ä Ù™,Fœ½Í Ú™<…¯·Ä Ü™LFœ½Î Ý™d…¯·Ä ß™tFœ½Î à™Œ…¯*Π♬Fœ½ÑÍ å™ü…¯·Ä æ™ Fœ½Í ç™…¯AÎ é™<Fœ½UÍ ì™p…¯·Ä 홀Fœ½XΠ…¯·Ä Fœ½{Î ð™Ì…¯·Ä ò™ÜFœ½Î ó™ì…¯·Ä õ™üFœ½ŸÎ ö™…¯·Ä ø™ Fœ½Í ù™0…¯·Ä û™@Fœ½±Î ü™T…¯·Ä þ™dFœ½Î ÿ™|…¯·Ä šŒFœ½ÃÎ š …¯·Ä š°Fœ½ÕÎ šÄ…¯Œ_šÌFœ½çÎ šØ…¯Œ_ šàFœ½Ï šð…¯Œ_ šøFœ½Ï šü…¯Œ_ šFœ½#Ï š …¯4Ï š$Fœ½àÏ šä]N_š…¯¹nšÖ¨Ð š ƒã¨ßkš,ò¨Ð š4ƒ!©ßkš@R©Ð šHƒh©ßkšTƒ†O×lš\ƒ¹OÁmštæCVCÐ š´æCV½sšÄæCVÎsšæÈO×mšPæÈO×lš`æMùmšœæMVÐ šÔæMnšø…¯Œ_šFœ½gÐ š8…¯Œ_š@Fœ½žÐ š„…¯þî šœFœ½ÃÐ "š´…¯þî#šÌFœ½ßÐ %š4…¯þî&šLFœ½­o (šd…¯þî)š|Fœ½^¼ +š”…¯þî,š¬Fœ½­o .šÄ…¯þî/šÜFœ½ìÐ 1šô…¯ùÐ 2šFœ½ Ñ 3š…¯þî4š0Fœ½ Ñ 6šH…¯-Ñ 7š€Fœ½SÑ =š¸…¯Œ_>šÀFœ½`Ñ >šÄ…¯mÑ ?šÔFœ½„q@šä…¯vÑ AšFœ½±8Dš$…¯þîEš<Fœ½^¼ GšT…¯Í» HšdFœ½‰Ñ Išt…¯–Ñ JšŒFœ½¤Ñ L𤅝–Ñ Nš¼Fœ½¤Ñ PšÔ…¯þîRšìFœ½^¼ Tš…¯þîUšFœ½^¼ Wš4…¯Œ_Xš<Fœ½øèXš@…¯–Ñ YšXFœ½¤Ñ [šp…¯vÑ ]šFœ½¿Ñ `𬅝vÑ ašÌFœ½ÌÑ dš…¯óÑ ešTFœ½øèmš …¯(Ò nš¸Fœ½øèpšÔ…¯t±qšìFœ½øèsš…¯6Ò tšXFœ½øè|𤅝vÑ }šÄFœ½øè€šä…¯vÑ šFœ½ŸÒ „š …¯vÑ …š@ Fœ½¬Ò ˆš\ …¯vÑ ‰š| Fœ½øèŒšœ …¯vÑ š¼ Fœ½¹Ò šä …¯þî’šü Fœ½^¼ ”š!…¯þ,!Fœ½^¼ —šD!…¯–Ñ ˜š\!Fœ½ËÒ ššt!…¯vÑ œš”!Fœ½¿Ñ Ÿš°!…¯þî šÈ!Fœ½îÒ ¢šà!…¯þø!Fœ½ûÒ ¥š"…¯þ("Fœ½^¼ ¨š@"…¯Í» ©šP"Fœ½Ó ªš`"…¯Œ_«šh"Fœ½¢«šl"…¯Ó ¬š|"Fœ½±¾ ­šŒ"…¯%Ó ®šœ"Fœ½7Ó ¯š´"…¯LÓ °šÄ"Fœ½R¦±šØ"…¯Í» ²šè"Fœ½¢³š,#…¯Í» ´š<#Fœ½†Ó µšx#…¯Í» ¶šˆ#Fœ½Ó ·š˜#…¯¥Ó ¸š¨#Fœ½·Ó ¹š¼#…¯Í» ºšÌ#Fœ½ÌÓ »šü#…¯Í» ¼š $Fœ½,Þ½š$…¯Í» ¾š,$Fœ½ãÓ ¿šd$…¯Í» Àšt$Fœ½†Ó Áš°$…¯Í» šÀ$Fœ½Ó ÚÐ$…¯Í» Äšà$Fœ½Ô Åš,%…¯þîÆšD%Fœ½^¼ Èš\%…¯-Ô Éšt%Fœ½LÔ ËšŒ%…¯Í» Ìšœ%Fœ½YÔ Íš¬%…¯Í» Κ¼%Fœ½„qÏšÌ%…¯mÑ ÐšÜ%Fœ½YÔ Ñšø%…¯Í» Òš&Fœ½„qÓš¨&…¯Í» Ôš¸&Fœ½YÔ Õšh'…¯þîÖš€'Fœ½^¼ Øš˜'…¯Œ_Ùš 'Fœ½¢Ùš¤'…¯þîÚš¼'Fœ½­o ÜšÔ'…¯Í» Ýšä'Fœ½,ÞÞšô'…¯‚Ô ßš(Fœ½àÔ ãš,)…¯ïÔ åšl)FؤÕ ìšÌ*FskŒ_횘+Fê¤ßkíšè+Fù¤xïíšô+F ¥*Õ íš,…¯OÕ íšä,FؤÕ ›€1FskŒ_›ø2Fê¤ßk›ˆ3Fù¤xï›”3F ¥*Õ ›Ü3…¯6Ö ›´4Fؤp(› 9FskŒ_ ›(;Fê¤ßk ›À;Fù¤?& ›Ì;F ¥~( › <…¯Í» ›0<Fœ½YÔ !›@<…¯Í» "›P<Fœ½„q#›`<…¯Í» $›p<Fœ½YÔ %›€<…¯vÑ &› <Fœ½¹Ò )›È<…¯Í» +›Ø<Fœ½âè,›ì<…¯vÑ -› =Fœ½³õ0›(=…¯vÑ 1›H=Fœ½_õ4›d=…¯–Ñ 5›|=Fœ½âÖ 7›”=…¯Õf9›¤=Fœ½¿Ñ :›´=…¯Õf;›Ä=Fœ½ÌÑ <›ð=…¯Õf=›>Fœ½¿Ñ >›>…¯Õf?› >Fœ½øè@›0>…¯ÕfA›@>Fœ½ŸÒ B›l>…¯ÕfC›|>Fœ½¬Ò D›Œ>…¯ÕfE›œ>Fœ½øèF›¬>…¯ÕfG›¼>Fœ½ªDH›Ì>…¯Œ_I›Ô>Fœ½ÛÒI›à>…¯Œ_J›è>Fœ½ÛÒJ›ô>…¯Œ_K›ü>Fœ½ÛÒK›?…¯Œ_L›?Fœ½&îL›?…¯ÿfM›,?Fœ½†N›@?…¯dO›P?Fœ½#dP›t?…¯Œ_Q›|?Fœ½m.Q›ˆ?…¯ÿS›˜?Fœ½'iT›¨?…¯?ôU›¸?Fœ½× V›Ì?…¯Œ_W›Ô?Fœ½× W›ð?…¯Œ_X›ø?Fœ½(× X›@…¯S× Z›@Fœ½ŸÒ [›$@…¯S× \›4@Fœ½¬Ò ]›H@…¯êK^›X@Fœ½n× _›p@…¯Œ_a›x@Fœ½pa›€@…¯Èkc›@Fœ½€× d›¤@…¯Èkf›´@Fœ½‘´g›à@…¯Œ_h›è@Fœ½_ôh›ø@…¯Œ_i›AFœ½‡× i› A…¯Œ_j›AFê’ŒÌj›$A…¯š× j›4AFœ½¼× k›PA…¯Æ× l›hAFœ½¬Ò n›€A…¯Æ× o›˜AFœ½ŸÒ q›ÌA…¯Õfr›ÜAFœ½øès›ìA…¯Õft›üAFœ½¶Cu›B…¯ó× w›$BFœ½^Ø x›¼B]N_z›àB…¯¹nz›ðBnªtØ {›øBƒ„ªßk{›CœªtØ {› Cƒ°ªßk{›CƪtØ {› Cƒ×ªßk{›,Cƒ†O×l{›4Cƒ¹OÁm{›LCæCV©Ø {›ŒCæCV½s|›œCæCVÎs}›ìCæÈO×m›(DæÈO×l€›8DæMùm€›tDæM¼Ø ‚›¬DæMnƒ›ÐD…¯K¥„›èD…¯Œ_†›ðDFB[“u†›E…¯“uˆ› Eƒ”[ÓlŠ›(Eƒí"‡Š›0EÆÈO×mŠ›”EÆÈO×l‹›¤EÆMùm‹›FƒMbv›€FÆMnŽ›¤F…¯Œ_›¬FFœ½øè›°F…¯Œ_›¸FFœ½øè›¼F…¯Œ_‘›ÄFFœ½øè‘›ÈF…¯ÍØ ’›èFFœ½øè•›G…¯Œ_–› GFœ½øè–›G…¯Œ_—›GFœ½øè—›G…¯Œ_˜›$GFœ½øè˜›(G…¯Œ_™›0GFœ½øè™›4G…¯Õfš›DGFœ½øè››pG…¯Ù œ› GFœ½bÒ¡›ÔG…¯mÙ ¢›HFœ½ÛÙ §›PH…¯êÙ ¨›€HFœ½øè­›ðH…¯Ù ®› IFœ½bÒ³›TI…¯Ú ´›ŒIFœ½ÛÙ º›ðI…¯jÚ »›0JFœ½øè›ÜJ…¯ŸÚ ÛKFœ½óÚ É›|K…¯Ë”Ë›ŒKFœ½ÔíÌ›¨Kƒ «ìÛ Í›°Kƒ«Ü Í›¸Kƒ9«2Ü Í›ÀKƒU«FÜ Í›ÈKƒn«^Ü Í›ÐKƒ«rÜ Í›ØKƒ•«ŸÜ Í›àK…¯äOÍ› L…¯Œ_Ô›(LFœ½ÌÜ Ô›,L…¯Œ_×›4LFœ½íÜ ×›8L…¯Œ_Ù›@LFœ½þÜ Ù›DL…¯Œ_Û›LLFœ½ Ý Û›PL…¯Œ_Ý›XLFœ½Ý Ý›\L…¯Œ_ß›dLFœ½&Ý ß›hL…¯Œ_â›pLFœ½GÝ â›tL…¯I} å›ÌLFœ½rÝ î›M…¯M~ ð›(MFœ½’Ý ñ›ä úœ@c…¯Œ_ûœHcFœ½ä ûœTc…¯Œ_ýœ\cFœ½ä ýœhc…¯Œ_ÿœpcFœ½dºÿœ|c…¯Œ_„cFœ½Nc…¯Œ_˜cFœ½N¤c…¯Œ_¬cFœ½„qèc…¯Œ_ðcFœ½`.d…¯ÕfdFœ½õC d…¯ªä HdFœ½Üä Èd…¯Õf ØdFœ½¶C ðd…¯À-eFœ½±­e…¯À- eFœ½±­0e…¯Œ_8eFœ½òúDe…¯êä deFœ½á‹ „e…¯êä ¤eFœ½á‹ Äe…¯Œ_ÌeFœ½½”Øe…¯Œ_àeFœ½ììe…¯Œ_ôeFœ½&îf…¯Œ_fFœ½&î(f…¯Œ_ 0fFœ½&î Df…¯Œ_!LfFœ½&î!df…¯ÿ"tfFœ½ÛÒ#¤f…¯Þ$´fFœ½f”%Èf…¯å &àfFœ½ÛÒ(üf…¯Ø0)gFœ½«+Dgƒެpå ,LgƒŸ¬›å ,Tgƒ±¬ßk,\g…¯°å ,|g…¯Œ_/„gFœ½øè/ˆg…¯ïå 0˜gFœ½øè1¬g…¯ïå 2¼gFœ½¿Ñ 3Ìg…¯ïå 4ÜgFœ½ÌÑ 5h…¯ïå 6hFœ½ªD7(h…¯øå 8€hFœ½øèAØh…¯2æ BiFœ½øèFžh¸Fœ½´ñ >žt¸…¯Œ_?ž|¸Fœ½Ë¥ ?žˆ¸…¯Œ_@ž¸Fœ½]› @žœ¸…¯Œ_Až¤¸Fœ½òš Až°¸…¯Œ_Bž¸¸Fœ½Ë¥ BžÄ¸…¯Œ_CžÌ¸Fœ½.™ CžØ¸…¯Œ_Džà¸Fœ½¾ñ Džì¸…¯Œ_Ežô¸Fœ½0£ Ež¹…¯Œ_Fž¹Fœ½òš Fž¹…¯Œ_Gž¹Fœ½¦(Gž,¹…¯Œ_Hž4¹Fœ½òš Hž@¹…¯Èñ IžP¹Fœ½×ñ Jžd¹…¯éñ Kžt¹Fœ½ò Lž¬¹…¯Œ_Mž´¹Fœ½‰ñ MžÀ¹¿¯¤ò Nž¬ºÙ¯Òò QžàºÞ¯ó Sžðºí¯@ó Užøº°Xó Už»°ô Už¨»=°Íô XžÄ»…¯Dò [žÔ»Fœ½õ \žä»…¯Dò ^žô»Fœ½õ _ž¼…¯Dò až¼Fœ½õ bž$¼…¯Œ_dž,¼Fœ½(ñ džˆ¼ƒ®°>'fž¼ƒ½°‘õ fž˜¼ƒÔ°­õ fž ¼…¯Âõ fžÀ¼…¯Œ_ižÈ¼Fœ½ö ižØ¼…¯Œ_kžà¼Fœ½ö kžì¼…¯Ðîlžü¼Fœ½±­mž½…¯-ö nž(½Fœ½eº pž„½…¯Œ_qžŒ½Fœ½Fö qžÐ½…¯Œ_ržØ½Fœ½(ñ ržä½ü°eö tžT¾ ±Ðö vžœ¾±÷ yžØ¾0±÷ zžü¾e±C÷ ž¿s±o÷ ˆžL¿€±Ô÷ žˆÀ‘±ø ˜žôÀ±Uø žžÁ®±ø ¡žÁ˱Ýù ¤žLÂè±iú ¨ž`Â÷±¹ú ªž|²û ­žÂ²wû ¯ž¬Â%² ü ²žÈÂ…¯Œ_¶žÐÂFœ½…ü ¶žÜÂ…¯Þ¸žìÂFœ½Xè ¹ž Ã…¯“ü »ž`ÃFœ½»ü ž Ã…¯“ü ÞàÃFœ½»ü Êž Ä…¯Åü Ëž`ÄFœ½»ü ÒžØÅ…¯ÿÓžèÅFœ½sŠԞƅ¯À-ÖžÆFœ½±­מHÆ…¯Œ_ØžPÆFœ½£¦ØždÆ…¯<_ÙžtÆFœ½±­Úž„Æ…¯Œ_ÛžŒÆFœ½,ÞÛž¨Æ…¯ÞÜž¸ÆFœ½,ÞÝžÈÆ…¯À-ÞžØÆFœ½û¼ ßžèÆ…¯Œ_àžðÆFœ½'½ àž Ç…¯Œ_ážÇFœ½ý ážÇ…¯Œ_âž ÇFœ½Cý âž$Ç…¯Œ_ãž,ÇFœ½‚ý ãž\Ç…¯Œ_æždÇFœ½Äý 枔Dž¯Œ_èžœÇFœ½þ 螬Ç…¯Œ_ëž´ÇFœ½?þ ëžÀÇ…¯ƒþ ížÐÇFœ½¦þ îžüÇ…¯óþ ðž ÈFœ½9ÿ ñž È…¯Žÿ óž8ÈFœ½ õžpÈ…¯Œ_÷žxÈFœ½ž ÷žœÈ…¯õ øž¬ÈFœ½x½ ùžÜÈ…¯Š úžìÈFœ½ѽ ûžÉ…¯1 üžÉFœ½k þžTÉ…¯Œ_ÿž\ÉFœ½ï ÿž€É…¯ƒþ ŸÉFœ½: Ÿ¤É…¯ƒþ Ÿ´ÉFœ½¦þ ŸàÉ…¯óþ ŸðÉFœ½9ÿ ŸÊ…¯X ŸÊFœ½¦ Ÿ(Ê…¯( ŸHÊFœ½ Ÿ”Ê…¯Œ_ŸœÊFœ½è ŸÐÊ…¯õ ŸàÊFœ½x½ ŸË…¯Š Ÿ ËFœ½L Ÿ0Ë…¯­ ŸHËFœ½ï Ÿ”Ë…¯Œ_ŸœËFœ½• ŸÀË]N_Ÿ<Îõ]aŸDÎöµ„ ŸLζjN ŸTÎ ¶jN Ÿ\ζjN ŸdζjN ŸlÎ'¶jN ŸtÎ0¶jN Ÿ|Î9¶jN Ÿ„ÎB¶rN ŸŒÎM¶rN Ÿ”ÎX¶rN ŸœÎc¶rN Ÿ¤În¶rN Ÿ¬Îy¶ž ŸàÎŒ¶Î; ŸðΛ¶¸ ŸÏ¯¶È Ÿ(Ï¿¶È !Ÿ8ÏÕ¶È #ŸHÏå¶È %ŸXÏü¶È 'ŸhÏ·È )ŸxÏ2·È +ŸˆÏE·Ö -Ÿ¬Ïf·÷ 0ŸÀÏ„·÷ 2ŸÔÏœ·÷ 4ŸèϾ·ˆ 6ŸüÏз` 8ŸüÐ¸Ý BŸÑ&¸Ý CŸLÑ6¸ó DŸ|ÑO¸' FŸ¬Ñd¸U IŸÜÑ{¸U KŸ ÒޏU MŸ,Òž¸s OŸlÒǸs RŸ¬Òù¸s UŸÜÒ¹÷ XŸðÒ*¹÷ ZŸÓ>¹› \Ÿ Ób¹÷ _Ÿ4Ó~¹÷ aŸHÓœ¹÷ cŸ\Óº¹÷ eŸpÓع÷ gŸ„Óî¹² iŸÀ oŸèÓ,º÷ tŸüÓHº÷ vŸÔrº" xŸÕ£ºÛ …ŸTÖµº÷ ‰ŸtÖʺ ‹Ÿ¼Öߺ9 ŽŸÈÖêº ŸÀ#)»A ™Ÿ$:»_ ›Ÿ$…¯x  ŸH$ƒQ ¥ŸP$ƒUMÓl¥ŸX$ƒ!Qßk¥Ÿ`$ƒ=QÒ㥟h$ƒGQ• ¥Ÿp$ƒ†O×l¥Ÿx$ƒ¹OÁm¥Ÿ$M»Ê ¥Ÿœ$…¯Ü §Ÿ´$ƒQd ©Ÿ¼$ƒUMÝ⩟Ä$ƒ†O×l©ŸÌ$ƒ¹OÁm©Ÿä$ƒXÝ⩟ð$ƒ“d ©Ÿü$ƒGúÌ) ©Ÿ%ƒOúÔ) ©Ÿ %ƒ6ßk©Ÿ%ƒa8ßk©Ÿ%ƒ`úÓl©Ÿ$%ƒ„úÊÌ©Ÿ,%ƒ‘úÊÌ©Ÿ4%ƒœúßk©Ÿ<%ƒì=ßk©ŸD%ƒ³úÜ) ©ŸL%ƒÈúÝ⩟T%ƒÞúÝ⩟\%ƒóúÝ⩟d%ƒûÝ⩟l%ƒûÝ⩟t%ƒ#ûÝ⩟|%ƒ3ûÝ⩟„%ƒCûÝ⩟Œ%ƒSûÝ⩟”%ƒfûÝ⩟œ%ƒxûÝ⩟¤%ƒŠûÝ⩟¬%ƒûþ) ©Ÿ´%ƒ°û* ©Ÿ¼%ƒ½ûÝ⩟Ä%ƒÒûÝ⩟Ì%ƒæûÝ⩟Ô%ƒøûÝ⩟Ü%ƒ üÝ⩟ä%ƒüÝ⩟ì%ƒ&üÝ⩟ô%ƒ7üÝ⩟ü%ƒIüÝ⩟&ƒWüÝ⩟ &ƒeüÝ⩟&ƒsüÝ⩟&ƒ‚üÝ⩟$&ƒ‘üÝ⩟,&ƒ üÝ⩟4&ƒ®üÝ⩟<&ƒ¾üÝ⩟D&ƒËüÝ⩟L&ƒÜüÝ⩟T&ƒéüÝ⩟\&ƒöüÝ⩟d&ƒ ýÝ⩟l&ƒýÝ⩟t&ƒ'ýÝ⩟|&ƒ4ýÝ⩟„&ƒBýÝ⩟Œ&ƒRýÝ⩟”&ƒaýÝ⩟œ&ƒrýÝ⩟¤&ƒýÝ⩟¬&ƒýÝ⩟´&ƒœýÝ⩟¼&ƒ«ýÝ⩟Ä&ƒ¹ýÝ⩟Ì&ƒËýÝ⩟Ô&ƒÜýÝ⩟Ü&ƒíýÝ⩟ä&ƒþÝ⩟ì&ƒ þÝ⩟ô&ƒþÝ⩟ü&ƒ4þÝ⩟'ƒKþÝ⩟ 'ƒ^þÝ⩟'ƒnþÝ⩟'ƒ~þÝ⩟$'ƒŽþÝ⩟,'ƒžþÝ⩟4'ƒ­þÝ⩟<'ƒ¼þÝ⩟D'ƒËþÝ⩟L'ƒÚþÝ⩟T'ƒéþÝ⩟\'ƒøþÝ⩟d'ƒÿÝ⩟l'ƒÿÝ⩟t'ƒ+ÿÝ⩟|'ƒAÿÝ⩟„'ƒUÿÝ⩟Œ'ƒkÿÝ⩟”'ƒˆÿÝ⩟œ'ƒ¢ÿÝ⩟¤'ƒÆÿÝ⩟¬'ƒéÿÝ⩟´'ƒ Ò㩟¼'ƒ Ò㩟Ä'ƒ/ Ò㩟Ì'ƒA Ò㩟Ô'ƒN Ò㩟Ü'ƒ[ Ò㩟ä'ƒh Ò㩟ì'ƒv Ò㩟ô'ƒ„ Ò㩟ü'ƒ’ Ò㩟(ƒŸ Ò㩟 (ƒ« Ò㩟(ƒ· Ò㩟(ƒÅ Ò㩟$(ƒÐ Ò㩟,(ƒÜ Ò㩟4(ƒç Ò㩟<(ƒó Ò㩟D(ƒ Ò㩟L(ƒ Ò㩟T(ƒ Ò㩟\(ƒ3 Ò㩟d(ƒI Ò㩟l(ƒd Ò㩟t(ƒy Ò㩟|(ƒ‘ Ò㩟„(ƒ² Ò㩟Œ(ƒÆ Ò㩟”(ƒß Ò㩟œ(ƒô Ò㩟¤(ƒ  Ò㩟¬(ƒ Ý⩟´(ƒ> Ý⩟¼(ƒ[ Ý⩟Ä(ƒt Ý⩟Ì(ƒ‹ Ý⩟Ô(ƒ¢ Ý⩟Ü(ƒ¹ Ý⩟ä(ƒÐ Ý⩟ì(ƒè Ý⩟ô(ƒþ Ý⩟ü(ƒ Ý⩟)ƒ* Ý⩟ )ƒB Ý⩟)ƒZ Ý⩟)ƒr Ý⩟$)ƒ‹ Ý⩟,)ƒ£ Ý⩟4)ƒ» Ý⩟<)ƒâ Ò㩟D)ƒ Ò㩟L)ƒ& Ý⩟T)ƒJ Ò㩟\)ƒl Ò㩟d)ƒ‘ Ý⩟l)ƒ¨ Ý⩟t)ƒÀ Ý⩟|)ƒÖ Ý⩟„)ƒö Ò㩟Œ)ƒ  Ò㩟”)ƒ, Ò㩟œ)ƒK Ò㩟¤)ƒ_ Ò㩟¬)ƒ{ Ý⩟´)ƒ¢ Ý⩟¼)ƒÑ Ý⩟Ä)ƒ Ý⩟Ì)ƒ8 Ý⩟Ô)ƒU Ý⩟Ü)ƒ| Ý⩟ä)ƒ¢ Ý⩟ì)ƒ¿ ** ©Ÿô)ƒã ** ©Ÿü)ƒ  ** ©Ÿ*ƒ. ** ©Ÿ *ƒM ** ©Ÿ*ƒs ** ©Ÿ*ƒ˜ ** ©Ÿ$*ƒ² ** ©Ÿ,*ƒÐ ** ©Ÿ4*ƒñ ** ©Ÿ<*ƒ ** ©ŸD*ƒ8 ** ©ŸL*ƒY ** ©ŸT*ƒ} ** ©Ÿ\*ƒœ ** ©Ÿd*ƒº ** ©Ÿl*ƒÚ ** ©Ÿt*ƒø ** ©Ÿ|*ƒ ** ©Ÿ„*ƒ' ** ©ŸŒ*ƒD ** ©Ÿ”*ƒe ** ©Ÿœ*ƒ… ** ©Ÿ¤*ƒ§ ** ©Ÿ¬*ƒÉ ** ©Ÿ´*ƒã ** ©Ÿ¼*ƒ ** ©ŸÄ*ƒ) ** ©ŸÌ*ƒO ** ©ŸÔ*ƒo ** ©ŸÜ*ƒŽ Ý⩟ä*ƒ¹ Ý⩟ì*ƒê Ý⩟ô*ƒ Ý⩟ü*ƒD Ý⩟+ƒu Ý⩟ +ƒ ** ©Ÿ+ƒ» ** ©Ÿ+ƒÚ ** ©Ÿ$+ƒ ** ©Ÿ,+ƒ& ** ©Ÿ4+ƒG ** ©Ÿ<+ƒh ** ©ŸD+ƒ„ ** ©ŸL+ƒ¤ ** ©ŸT+ƒÉ ** ©Ÿ\+ƒû ** ©Ÿd+ƒ ** ©Ÿl+ƒ6 ** ©Ÿt+ƒT ** ©Ÿ|+ƒo ** ©Ÿ„+ƒ— ** ©ŸŒ+ƒ´ ** ©Ÿ”+ƒâ ** ©Ÿœ+ƒ ** ©Ÿ¤+ƒ7 ** ©Ÿ¬+ƒT ** ©Ÿ´+ƒy ** ©Ÿ¼+ƒ˜ ** ©ŸÄ+ƒ¹ ** ©ŸÌ+ƒØ ** ©ŸÔ+ƒý ** ©ŸÜ+ƒ  ** ©Ÿä+ƒJ ** ©Ÿì+ƒv ** ©Ÿô+ƒœ ** ©Ÿü+ƒÃ ** ©Ÿ,ƒì ** ©Ÿ ,ƒ ** ©Ÿ,ƒ) ** ©Ÿ,ƒP ** ©Ÿ$,ƒl ** ©Ÿ,,ƒŒ ** ©Ÿ4,ƒ´ ** ©Ÿ<,ƒÑ ** ©ŸD,ƒö ** ©ŸL,ƒ D㩟T,ƒ. D㩟\,ƒ< ˜°©Ÿd,ƒI ˜°©Ÿl,ƒV ˜°©Ÿt,ƒd ˜°©Ÿ|,ƒt ˜°©Ÿ„,ƒ… ˜°©ŸŒ,ƒ‘ ˜°©Ÿ”,ƒž ˜°©Ÿœ,ƒÁ ˜°©Ÿ¤,ƒå ˜°©Ÿ¬,ƒ  ˜°©Ÿ´,ƒ- ˜°©Ÿ¼,ƒU ˜°©ŸÄ,ƒq ˜°©ŸÌ,ƒ“ ˜°©ŸÔ,ƒµ ˜°©ŸÜ,ƒÏ ˜°©Ÿä,ƒè ˜°©Ÿì,ƒ  ˜°©Ÿô,ƒ5 ˜°©Ÿü,ƒW ˜°©Ÿ-ƒt ˜°©Ÿ -ƒ ˜°©Ÿ-ƒ¶ ˜°©Ÿ-ƒÕ ˜°©Ÿ$-ƒþ ˜°©Ÿ,-ƒ ˜°©Ÿ4-ƒ' ˜°©Ÿ<-ƒ< ˜°©ŸD-ƒW ˜°©ŸL-ƒs ˜°©ŸT-ƒ ˜°©Ÿ\-ƒ¬ ˜°©Ÿd-ƒÊ ˜°©Ÿl-ƒé ˜°©Ÿt-ƒ ˜°©Ÿ|-ƒ% ˜°©Ÿ„-ƒA ˜°©ŸŒ-ƒ^ 2* ©Ÿ”-ƒk 2* ©Ÿœ-ƒ| ˜°©Ÿ¤-ƒ 2* ©Ÿ¬-ƒ ˜°©Ÿ´-ƒ­ 2* ©Ÿ¼-ƒÅ ˜°©ŸÄ-ƒÝ ˜°©ŸÌ-ƒí 2* ©ŸÔ-ƒ ˜°©ŸÜ-ƒ ˜°©Ÿä-ƒ! 2* ©Ÿì-ƒ6 2* ©Ÿô-ƒ^ 2* ©Ÿü-ƒ 2* ©Ÿ.ƒ§ 2* ©Ÿ .ƒÉ 2* ©Ÿ.ƒâ ˜°©Ÿ.ƒø ˜°©Ÿ$.ƒ  ˜°©Ÿ,.ƒ& ˜°©Ÿ4.ƒD ˜°©Ÿ<.ƒW ˜°©ŸD.ƒl ˜°©ŸL.ƒ† ˜°©ŸT.ƒœ ˜°©Ÿ\.ƒ± ˜°©Ÿd.ƒÅ Ý⩟l.ƒÝ ˜°©Ÿt.ƒ ˜°©Ÿ|.ƒ# ˜°©Ÿ„.ƒF ˜°©ŸŒ.ƒi ˜°©Ÿ”.ƒŽ ˜°©Ÿœ.ƒ³ ˜°©Ÿ¤.ƒØ ˜°©Ÿ¬.ƒý ˜°©Ÿ´.ƒ# ˜°©Ÿ¼.ƒI ˜°©ŸÄ.ƒo ˜°©ŸÌ.ƒ• ˜°©ŸÔ.ƒ» 2* ©ŸÜ.ƒÔ 2* ©Ÿä.ƒê ˜°©Ÿì.ƒù ˜°©Ÿô.ƒ  ˜°©Ÿü.ƒ ˜°©Ÿ/ƒ2 2* ©Ÿ /ƒP 2* ©Ÿ/ƒz 2* ©Ÿ/ƒ¥ 2* ©Ÿ$/ƒ´ 2* ©Ÿ,/ƒÈ 2* ©Ÿ4/ƒØ 2* ©Ÿßk©Ÿì0ƒJ ]* ©Ÿô0ƒ^ o* ©Ÿü0…¯|* ©Ÿ>ÆÒvÓl)¡>…¯F2 )¡(>Fœ½]2 *¡D>…¯Œ_,¡L>Fœ½m.,¡X>…¯ýK.¡h>Fœ½'i/¡¨>…¯Œ_0¡´>ᶪ‹2 0¡ô>áñªœ2 1¡0?…¯Œ_3¡8?Fœ½¬2 3¡D?…¯¹2 4¡\?Fœ½cs 6¡t?…¯¹2 8¡Œ?Fœ½Ã2 :¡¤?…¯Ý2 <¡”@Fؤ 3 X¡pBFskŒ_Y¡CFê¤ßkY¡HCFù¤³3 Y¡TCF ¥À3 Y¡üC…¯Ò3 Y¡DFœ½'i\¡8D…¯ŽL]¡HDFœ½á3 ^¡dD…¯Œ__¡pDᶪ‘´_¡tDáñªp`¡|D…¯ê3 b¡ŒDFœ½á3 c¡ D…¯ýKd¡°DFœ½'ie¡¼D…¯û3 f¡ÔDFœ½%4 h¡,E…¯Œ_i¡4EFœ½'ii¡LE…¯N4 j¡tEFœ½o4 n¡¤E…¯¹2 p¡¼EFœ½É4 r¡øE…¯Œ_s¡Fᶪ\¡s¡FáñªGt¡ F…¯ 5 v¡0FFœ½X5 w¡\F…¯ 5 x¡lFFœ½o4 y¡ÄF…¯Œ_{¡ÌFFœ½¹5 {¡G…¯Œ_|¡Gᶪ °|¡ Gáñª°}¡(G…¯ï5 ¡8GFœ½!6 €¡dG…¯ï5 ¡tGFœ½o4 ‚¡ÌGt$ ]a„¡ÔGŠ$ ]a„¡ÜG§$ ]a„¡äG·$ ]a„¡ìGÄ$ ]a„¡ôGØ$ ]a„¡üGó$ ]a„¡H % ]a„¡ H'% ]a„¡H>% ]a„¡H]% ]a„¡$Hq% ]a„¡,H„% B6 „¡4H–% B6 „¡ Ë¡(cQ- ¡> Ò¡|ci- ? Ù¡(dƒ- W? Ü¡°d- P; Þ¡`g¤- @ á¡pg®- @ â¡€gº- 3@ 㡌gÄ- <@ 䡸gÏ- \@ 塸gÜ- à@ ç¡\hê- mA ê¡Àhù- A í¡Ôh. Q ð¡ðh. Q ò¡øh. «d ô¡i . »A ö¡Xi.. ÉA ø¡di9. ÖA ù¡piH. äA û¡|iW. òA ý¡ˆia. ÿA þ¡”in. B ÿ¡ i†. .B ¢ÈiŸ. òA ¢Ôi¯. EB ¢àiÃ. TB ¢jÝ. bB ¢(jð. pB ¢8j/ ƒB ¢Lj#/ •B ¢`j8/ §B ¢|jM/ ¾B ¢ˆjW/ ËB ¢”jd/ ØB ¢ j|/ úB ¢Èj•/ C ¢ìj¦/ +C ¢kÂ/ ^C ¢HkÎ/ ;y¢€kÜ/ †C ¢°kæ/ œC ¢lð/ ©C !¢lû/ õC "¢àl0 à $¢0m%0 QD &¢$n70 _D (¢0nF0 lD )¢L Ô¢,~^5 iL Ö¢¸~m5 „L Ø¢È~ˆ5 „L Ù¢Ø~—5 ÝL Ú¢ü~£5 lM Ý¢ ´5 N ࢀÜ5 0N ä¢P€î5 RN æ¢ 6 ‚N é¢D.6 ]aì¢LU6 ]aì¢T…¯Œ_ì¢\Fœ½¤N 좈…¯Œ_í¢Fœ½¤N í¢¼]N_î¢ì…¯¹nî¢üö6 ²N ƒ7 ßk7 ²N ƒ7 ßkï¢$‚,7 ²N ï¢,‚ƒ¨ûßkï¢8‚97 ²N ï¢@‚ƒC7 ßkï¢L‚ƒ†O×lï¢T‚ƒ¹OÁmï¢l‚æCVçN ‚æCV½s𢼂æCVÎsñ¢ ƒæÈO×mó¢PƒæÈO×lô¢`ƒæMùmô¢œƒæMúN ö¢ÔƒæMn÷¢øƒ]N_ø¢„…¯Œ_ø¢ „œ7 O ø¢„ƒ­7 ßkù¢ „Á7 O ù¢(„ƒÖ7 ßkù¢4„ƒ†O×lù¢P„ƒ¹OÁmù¢h„æCVwO ù¢ø„æCV½sú¢…æCVÎsû¢¤…æÈO×mý¢è…æÈO×lþ¢ø…æMùmþ¢p†æMàO £ä†æMn£‡…¯št£‡ƒqPßk£ ‡…¯Œ_£(‡…¯›P £8‡†qPßk£H‡…¯«P £X‡]N_£p‡…¯¹n£€‡78 ÃP £ˆ‡ƒE8 ßk£”‡U8 ÃP £œ‡ƒa8 ßk£¨‡ƒ†O×l£°‡ƒ¹OÁm£È‡æCVøP £ˆæCV½s£ˆæCVÎs£hˆæÈO×m £ˆæÈO×l £ ˆæMùm £ÜˆæM Q £‰æMn£8‰]N_£P‰…¯¹n£`‰$Q £h‰ƒßk£t‰îŒ$Q £|‰ƒöŒßk£ˆ‰ƒ†O×l£‰ƒ¹OÁm£¨‰æCVYQ £è‰æCV½s£ø‰æCVÎs£HŠæÈO×m£pŠæÈO×l£€ŠæMùm£¼ŠæMlQ £ôŠæMn£‹]N_£H‹…¯¹n£X‹9 …Q £`‹ƒ+9 ßk£l‹=9 …Q £t‹ƒI9 ßk£€‹W9 …Q £ˆ‹ƒe9 ßk£”‹u9 …Q £œ‹ƒ‡9 ßk£¨‹ƒ†O×l£°‹ƒ¹OÁm£È‹æCVºQ £ŒæCV½s£ŒæCVÎs£hŒæÈO×m£¬ŒæÈO×l£¼ŒæMùm£øŒæMÍQ !£0æMn"£TæCVüQ #£„æCV½s$£”æCVÎs%£ÄæÈO×m'£ðæÈO×l(£ŽæMùm(£0Ž…¯ƒ†*£<Ž…¯3R +£üƒ2; 'Y6£dƒE; ßk6£ˆƒ]; RR 6£¼ƒt; Y7£$‘ƒƒ; [R 7£h‘ƒ–; ßk7£¤‘ƒ²; cR 7£¼‘ƒßk7£à‘ƒÑ; ßk7£’ƒî; ßk7£(’ƒ< kR 7£€’ƒ< sR 7£à’ƒ*< ßk8£“ƒG< cR 8£“ƒg< ßk8£@“ƒŒ< ßk8£d“ƒ¢< cR 8£|“ƒ»< ßk8£ “ƒæ< cR 8£¸“ƒ= ßk8£Ü“ƒ,= àc8£ð“æM‰R 8£”æMn9£D”]N_:£\”…¯¹n:£l”ø‰­R ;£t”ƒÛ“ßk;£€”_= ­R ;£ˆ”ƒk= ßk;£””ƒ†O×l;£œ”ƒ¹OÁm;£´”æCVâR ;£ô”æCV½s<£•æCVÎs=£T•æÈO×m?£|•æÈO×l@£Œ•æMùm@£È•ƒy= tB£à•ÆÒvÓlB£ø•æMõR B£0–æMnC£T–]N_D£–…¯¹nD£ –u> S E£¨–ƒ> ßkE£´–‹> S E£¼–ƒ›> ßkE£È–­> S E£Ð–ƒÀ> ßkE£Ü–Õ> S E£ä–ƒâ> ßkE£ð–ñ> S E£ø–ƒú> ßkE£—ƒ†O×lE£ —ƒ¹OÁmE£$—æCVCS E£d—æCV½sF£t—æCVÎsG£Ä—æÈO×mI£˜æÈO×lJ£ ˜æMùmJ£\˜ƒ? ßkL£h˜ƒ? ßkL£˜ƒ*? ßkL£œ˜æMVS L£Ô˜æMnM£ø˜æCV•S N£(™æCV½sO£8™æCVÎsP£h™æÈO×mR£™æÈO×lS£ ™æMùmS£Ð™…¯¹nU£Ü™…¯ËS V£˜šƒÍ? ßk^£¬šƒE; ßk^£ÀšƒÝ? çS ^£›ƒë? ïS ^£ˆ›ƒî÷S ^£Ô›ƒø? ßk^£ì›ƒ@ ÿS ^£8œƒ#@ ßk^£Pœƒ,= ×l^£\œæMT ^£|œæMn_£°œæCV:T `£àœæCV½sa£ðœæCVÎsb£ æÈO×md£LæÈO×le£\æMùme£Œ…¯ƒ†g£˜…¯iT h£žƒ´Ôßkl£8žƒË@ ßkl£\žƒß@ ßkl£€žƒA ßkl£¤ž)A úl£°žƒ,= àcl£ÄžæMzT l£äžæMnm£Ÿ…¯ŸT n£@Ÿ…¯Œ_r£HŸFB[“ur£`Ÿ…¯“ut£xŸƒ”[×lv£€Ÿƒí"´T v£ˆŸƒ÷"˜Gv£Ÿƒpž¤v£˜Ÿ…¯ÑT v£ÀŸ…¯Œ_z£ÈŸFB[“uz£àŸ…¯“u|£øŸƒ”[éT ~£ ƒí"Ól~£ ƒ÷"Ól~£ ƒpÓl~£ ]N_~£< …¯¹n~£L ýA U £T ƒB ßk£` 5B U £h ƒFB ßk£t YB U £| ƒgB ßk£ˆ ƒ†O×l£ ƒ¹OÁm£¨ æCV:U £è æCV½s€£ø æCVÎs£H¡æÈO×mƒ£„¡æÈO×l„£”¡æMùm„£Ð¡æMMU †£¢æMn‡£,¢‚B oU ˆ£8¢…¯ŠU Š£P¢ƒQô‡Œ£X¢ƒUM¡U Œ£`¢ƒ†O×lŒ£h¢ƒ¹OÁmŒ£€¢æCV V Œ£ü¢æCV½s£ £æCVÎsŽ£Œ£æÈO×m£ä£æÈO×l‘£ô£æMùm‘£\¤ƒÖPô‡“£h¤ƒŽB ¡U “£t¤æMº “£È¤æMn”£ì¤«B ¬V •£ô¤…¯¶V –£¥ƒqP¹¤—£ ¥ƒ†O×l—£¥ƒ¹OÁm—£,¥æCVöV —£p¥æCV½s˜£„¥æCVÎs™£Ø¥æÈO×m›£¦æÈO×lœ£$¦æMùmœ£h¦ƒ¶B ¹¤ž£Ð¦æM*W ž£§æMnŸ£4§…¯Œ_ £<§Fœ½½” £H§…¯Œ_¡£P§Fœ½½”¡£\§…¯Œ_¢£d§Fœ½½”¢£p§…¯Œ_££x§Fœ½´ã££|§…¯ô7 ¤£Œ§Fœ½NW ¥£Ä§ƒÿkdX ¦£Ì§ƒ’G lX ¦£Ø§…¯lX §£è§ƒïÃÓl¨£ø§ƒ›G Ól¨£(¨ƒ˜Ól¨£4¨ƒ¬G Ól¨£@¨ƒãG Ól¨£L¨ƒH ÄX ¨£ ©ƒ}l‡ª£ü©ƒ@H àcª£ ªƒJH —®ª£ªƒúM\ª£xªƒVH Ólª£ˆªƒdH ŽLª£˜ªƒrH Îî«£¬ªƒŒH Y «£¼ªƒH ÷S «£Ìªƒ³H ˜G«£ôªƒºH !Y «£«ƒËH )Y «£«ƒÝH ßk«£0«ñH 1Y «£L«ƒI Ól­£«ƒ'I é ­£¤«ƒ.I Ï®®£Ì«ƒ@I Í ®£Ü«ƒOI ßk®£ð«ƒ`I GÆ ®£¬ƒzI ;Y ®£¬ƒI JY ®£ ¬ƒŸI GÆ ®£0¬ƒË@ ßk®£h¬ƒ´Ôßk®£ ¬ƒgB ßk®£Ì¬ƒ’Ôßk®£ü¬ƒ±I ßk®£H­ƒÀI ßk®£`­ƒØI ßk®£˜­ƒòI ßk®£Ð­ƒJ ßk®£ä­ƒJ cY ®£ô­ƒ3J hK®£@®ƒGJ Y ®£à®ƒYJ ¥Y ®£ð®ƒlJ ®Y ®£¯ƒ€J ®Y ®£ ¯ƒœJ ®Y ®£8¯ƒ±J ®Y ®£P¯ƒÎJ ºY ®£`¯ƒÞJ ÃY ¯£p¯ƒíJ ßk°£ˆ¯ƒþJ ÝY °£À¯ƒK Z °£ô¯ƒ$K Z °£°ƒ9K !Z °£<°LK .Z ±£H°‹6Z ±£T°ƒ]rlX ³£`°ƒôHßk´£t°ÆÒvÓl´£„°ƒ_K NZ ´£À°ƒ}K ßk´£Ø°ƒ‹K cZ ´£$±ƒ›K »´£4±ƒ²K ßk´£L±ƒÄK ßk´£d±ƒáK ßk´£|±ƒôK ßk´£”±ƒL ßk´£È±ƒ%L ßk´£ø±ƒ@L ßk´£(²ƒZL ßk´£X²ƒpL ßk´£ˆ²ƒ‡L ßk´£È²ƒ™L ßk´£8³ƒ©L ßk´£Œ³ƒÇL ßk´£è³ƒáL ßk´£X´ƒùL ŽZ ´£l´ƒM }´£Œ´ƒGM ª¹´£°´ƒfM ¤Z ´£Ä´ƒ…M ¶Z ´£Ø´ƒ²M ¾ò ´£ì´ƒÛM ÐZ ´£µƒøM ÐZ ´£µƒN ª¹´£`µƒ0N Z[ ´£\¶ƒKN d ´£œ¶ƒß@ ßk´£Ô¶ƒA ßk´£ ·ƒrN k[ ´£·ƒIQ »[ µ£$·ƒ[Q ÷S µ£,·ƒkQ Ó[ µ£4·ƒ|Q àcµ£<·ƒQ Ólµ£D·ƒ¥Q tµ£L·ƒ¾Q ‡µ£T·ƒÏQ GÆ µ£\·ƒóQ —®µ£d·ƒR !Y µ£l·ƒR Í µ£t·ƒ4R Y µ£|·ƒKR )Y µ£„·ƒ_R Û[ µ£Œ·ƒyR M\µ£”·ƒ‹R Ólµ£œ·ƒ R JY µ£¤·ƒ³R GÆ µ£¬·ƒËR cY µ£´·ƒÜR ;Y µ£¼·ƒõR ç[ µ£È·ƒS \ ¶£Ô·ƒS \ ·£à·ƒ(S ³¸£ì·ƒAS k[ ¹£ø·ƒTS \ º£¸ƒjS \ »£¸ƒ‚S (\ ¼£¸ƒ™S 1\ ½£(¸ƒ­S :\ ¾£4¸ƒÇS ŽL¿£@¸…¯G\ À£ð¸]N_Ô£ü¸…¯Œ_Ô£¹T ×\ Ô£ ¹ƒT ßkÕ£¹'T ä\ Õ£ ¹ƒ6T ßkÕ£,¹ƒ†O×lÕ£H¹ƒ¹OÁmÕ£`¹…¯Ë”Õ£p¹ƒqPÝâÖ£x¹…¯Œ_Ö£€¹…¯®] Ö£¹†qPÝâ×£ ¹…¯¾] ×£°¹ƒÊU ÐZ Ø£¸¹ƒÜU ¾ò Ø£À¹ƒôU ÐZ أȹƒV ¶Z أйƒ%V ßkأعƒDV Ù] أใYV ¤Z أ蹃iV ŽZ Ø£ð¹ƒ~V Í Ø£ø¹ƒŽV ßkØ£ºƒŸV ßkØ£ºƒ²V ë] Ø£ºƒÄV ^ Ù£ ºƒÜV ë] Ú£,ºƒíV ^ Û£8ºƒ W štÜ£Dºƒ,W )^ Ý£Pºƒr ˜¤×ƒm št™¤Œ×ƒm št𤨯ÒvÓl›¤Ø…¯¹n›¤,Øn Sr œ¤8؃n ßkž¤DØ%n er ž¤P؃3n ßk¡¤\ØDn xr ¡¤d؃Tn ßk¢¤pØgn …r ¢¤|؃{n ßk¤¤ˆØ’n xr ¤¤Øƒ©n ßk¥¤œØÃn xr ¥¤¤ØƒÖn ßk¦¤°Øìn —r ¦¤¼Øƒün ßk¨¤ÈØo xr ¨¤Ð؃-o ßk©¤ÜØNo Sr ©¤è؃Xo ßk«¤ôØeo xr «¤ü؃{o ßk¬¤Ù”o xr ¬¤Ùƒ¨o ßk­¤Ù¿o ­r ­¤(ÙƒÍo ßk°¤4ÙÞo xr °¤<Ùƒío ßk±¤HÙƒ†O×l±¤PÙƒ¹OÁm±¤hÙ…¯.±¤€ÙƒQÒ㳤ˆÙƒUM‡³¤Ù…¯>s ³¤°ÙƒQ×l¶¤¸ÙƒUMÒ㶤ÀÙƒ!Q‡¶¤ÈÙ…¯Õf¶¤ØÙƒqP‡·¤àÙ…¯ós ·¤øÙƒQt ¹¤ÚƒUM‡¹¤Ú…¯Õf¹¤ÚƒqP‡º¤ Ú…¯Õfº¤0ÚƒqP‡»¤8Ú…¯æï»¤PÚƒQ}½¤XÚƒUM‡½¤`Ú…¯Õf½¤pÚƒqP‡¾¤xÚ…¯.¾¤ÚƒQÒãÀ¤˜ÚƒUM‡À¤ Ú…¯ÕfÀ¤´ÚƒqP‡Á¤¼Ú…¯ÕfÁ¤ÐÚƒqP‡¤ØÚ…¯õ|¤øÚƒQÒãŤÛƒUMÒãŤÛƒ!Q‡ŤÛ…¯ÕfŤ$ÛƒqP‡Ƥ,Û…¯Fw Ƥ<Û†QÒãǤLÛ†UM‡Ǥ\Û…¯Ow ǤlÛ†Q×lȤ|Û†UMÒãȤŒÛ†!Q‡ȤœÛ…¯Xw Ȥ¬Û†qP‡ɤ¼Û…¯aw ɤÌÛ†Qt ʤÜÛ†UM‡ʤìÛ…¯jw ʤüÛ†qP‡ˤ Ü…¯sw ˤ܆qP‡̤,Ü…¯|w ̤<܆Q}ͤL܆UM‡ͤ\Ü…¯…w ͤl܆qP‡Τ|Ü…¯Žw ΤŒÜ†QÒãϤœÜ†UM‡Ϥ¬Ü…¯—w Ϥ¼Ü†qP‡ФÌÜ…¯ w ФÜ܆qP‡ѤìÜ…¯©w Ѥü܆QÒãÒ¤ ݆UMÒãҤ݆!Q‡Ò¤,Ý…¯²w Ò¤<݆qP‡Ó¤LÝ p àw Ó¤\Ý…¯x Ù¤”݃Q}ߤœÝƒUMÓlߤ¤Ýƒ!QJx ߤ¬Ýƒ=Q}ߤ´ÝƒGQÍ ߤ¼ÝƒQQRx ߤÄ݃†O×lߤÌ݃¹OÁmߤä݃p Ólߤð݃y` Í ߤü݃l x ߤ Þƒ#p œx ߤÞ]N_à¤,Þ…¯¹nà¤<Þ”p ±x á¤HÞƒ¡p ßkä¤TÞ±p Ìx ä¤`ÞƒÃp ßkç¤lÞØp ãx ç¤xÞƒåp ßk뤄Þõp y 뤌Þƒq ßk줘Þq y 줠Þƒ)q ßk줬Þƒ†O×l줴Þƒ¹OÁmì¤ÌÞ…¯Iy ì¤ìÞƒQÒãï¤ôÞƒUM˜°ï¤üÞƒ!Q}ï¤ß…¯°y ï¤$߃Q}ò¤,߃UM,Hò¤4߃!Qßkò¤<ß…¯z ò¤d߃QÒãö¤l߃UM`Äö¤t߃!Q °ö¤|߃=Q}ö¤„ß…¯îòö¤”߃qPv®÷¤œß…¯Üz ÷¤¬ß†QÒãø¤¼ß†UM˜°ø¤Ì߆!Q}ø¤Üß…¯åz ø¤ì߆Q}ù¤ü߆UM,Hù¤ à†!Qßkù¤à…¯îz ù¤,à†QÒãú¤<à†UM`Äú¤Là†!Q °ú¤\à†=Q}ú¤là…¯÷z ú¤|à†qPv®û¤Œàƒ¸q tû¤”àƒÔq ßkû¤œàƒïÃÓlû¤¤àƒéq ×lû¤¬à…¯{ û¤ÔàæCV { ÿ¤ðàæCV½s¥áæCVÎs¥4áæÈO×m¥¸áæÈO×l¥ÈáæMùm¥<âæM{ ¥¨âæMn¥Ìâ…¯.{ ¥èâƒfr @{ ¥ôâƒur Í ¥ãƒÿk}{ ¥ãƒ’G …{ ¥ã…¯…{ ¥$ãƒ}l‡ ¥4ãƒ@H àc ¥Dãƒø‰Òã ¥TミI GÆ ¥dãƒës ‡ ¥tãƒûx\ ¥„ãƒÿs –Z ¥”ンH ˜G ¥¼ãƒt ßk ¥Ðãƒ(t @{ ¥0äƒ>t • ¥\䃖; ßk ¥päƒßk ¥¨äƒQt QÒ ¥¸äƒit Ž{ ¥Èäƒxt ßk ¥Ü䃅t ßk ¥ü䃛t ßk ¥(僯t ßk ¥<åƒÈt ßk ¥låƒ,ƒßk ¥ÌåƒÔýßk ¥,æƒÝt ßk ¥læƒa8 ßk ¥ˆæƒ*< ßk ¥À惌< ßk ¥øæƒ»< ßk ¥0çƒg< ßk ¥hçƒút ßk ¥¬çƒu ßk ¥ðçƒ< kR ¥èƒ2; 'Y ¥èƒî; ßk ¥Pèƒt; Y ¥dèƒ4u ßk ¥|èƒE; ßk ¥´èƒJH —® ¥ÄèƒúM\ ¥ÔèƒVH Ól ¥äèƒdH ŽL ¥ôèƒCu ²q ¥éƒTu Ýâ ¥Téƒku Ýâ ¥ éƒ„u ×l ¥Øéƒ“u ²q ¥êƒI | ¥têƒOßk ¥¨êƒÇ*| ¥ðꃦu Òã ¥ 냲u Ï® ¥TëƒïÃÓl ¥°ëƒ›G Ól ¥TìƒñÓl ¥d샽u Ól ¥Ô샘Ól ¥äìƒÑu ^| ¥íƒð9 Œ_¥@íƒ]: Œ_¥|탬: Œ_¥¸íƒè: Œ_¥ôíƒÛu g| ¥îƒêu ýK¥îƒòu Õf¥$îLK t| ¥0î‹|| ¥<îƒ]r…{ ¥HîƒôHßk¥\îÆÒvÓl¥hw Ól¥pw t¥xîƒÒw ‡¥€îƒàw ‡¥ˆîƒów Òã¥îƒx àc¥˜îƒx cR ¥ îƒx x\¥¨îƒ*x QÒ ¥°îƒ7x GÆ ¥¸îƒFx Ž{ ¥ÀîƒZx —®¥Èîƒjx –Z¥Ðîƒ|x ²q¥Øîƒ’x M\¥àx Ól¥èx Õf¥ôîƒÆx ýK¥ïƒÓx œ| ¥ ïƒáx ¥| ¥ïƒïx ²| ¥$ïƒüx k[ ¥0ïƒ y g| ¥<ïƒy ¿| ¥Hïƒ4y ŽL¥Tï…¯È| ¥äu Ýâ,¥ìy H} ,¥ôïƒÁy ßk,¥üïƒÓy Jx ,¥ðƒãy T} ,¥ðƒûy št-¥ð…¯a} .¥Dðƒpz Ýâ2¥Lðƒ„z • 2¥Tð…¯y} 2¥lðƒ›`ÊÌ4¥€ðƒ¨z Ól4¥˜ðƒj‰Ól4¥¤ðÆÒvÓl4¥Øð¹z ž} 4¥äð…¯°} 6¥üðƒQ¾} 8¥ñƒUM• 8¥ ñƒ†O×l8¥ñƒ¹OÁm8¥,ñæÈO×m8¥„ñæÈO×l9¥”ñæMùm9¥ôñæM,~ ;¥HòæMn<¥lò{ EB =¥xò…¯U~ ?¥òƒQÊÌA¥˜òƒUM¹¤A¥ òƒ†O×lA¥¨òƒ¹OÁmA¥Àò'{ ~ A¥$ó:{ ~ E¥Üóƒ\{  I¥$ôƒ›`ÊÌI¥0ôƒi{ ¹¤I¥<ôƒ˜ÓlI¥hôƒr{ ÓlI¥ˆôƒŠ{ ¹¤I¥ðôƒ¨z ÓlI¥õƒ$GxïI¥hõƒ£{ < I¥€õƒrH ÎîI¥¨õÆÒvÓlI¥ÔõƒL| xïI¥ÜõƒX|  I¥äõƒ`| ßLI¥ðõ…¯` J¥öƒl| ßkL¥öƒ{| ßkL¥0öƒŠ| xïL¥<öƒœ| xïL¥HöƒOŒ_L¥töƒ$GxïL¥÷ƒ\{  L¥H÷ƒ¯| ßkL¥T÷ÆÒvÓlL¥¨÷ƒ0N Z[ L¥¸÷ƒKN d L¥È÷ƒïÃÓlL¥è÷ƒ›G ÓlL¥ø÷ƒ˜ÓlL¥øƒ¬G ÓlL¥øƒãG ÓlL¥(øƒ}l‡L¥8øƒ@H àcL¥XøƒJH —®L¥xøƒúM\L¥ˆøƒVH ÓlL¥¨øƒrH ÎîL¥ÐøƒI ÓlL¥àøƒŒH Y L¥ùƒH ÷S L¥ ùƒ³H ˜GL¥0ùƒºH !Y L¥PùƒËH )Y L¥pùƒÝH ßkL¥œùƒ'I é L¥Äùƒ.I Ï®M¥Ôùƒ@I Í M¥ôùƒOI ßkM¥úƒ`I GÆ M¥8úƒzI ;Y M¥XúƒI JY M¥xúƒŸI GÆ M¥˜úƒË@ ßkM¥¨úƒ´ÔßkM¥¸úƒgB ßkM¥Èúƒ’ÔßkM¥ØúƒJ cY M¥øúƒ±I ßkM¥ûƒÀI ßkM¥0ûƒØI ßkM¥@ûƒòI ßkM¥Pûƒ3J hKM¥`ûƒGJ Y M¥pûƒYJ ¥Y M¥ûƒlJ ®Y M¥ ûƒœJ ®Y M¥°ûƒ±J ®Y M¥Àûƒ€J ®Y M¥ÐûƒÎJ ºY M¥ôûƒÞJ ÃY N¥ üƒþJ ÝY O¥0üƒK Z O¥@üƒ$K Z O¥Püƒ9K !Z O¥`üƒ_K NZ P¥püƒùL ŽZ P¥˜üƒM }P¥¨üƒGM ª¹P¥¸üƒfM ¤Z P¥àüƒáL ßkP¥ðüƒáK ßkP¥ýƒôK ßkP¥@ýƒJ ßkP¥týƒ…M ¶Z P¥œýƒ²M ¾ò P¥ÄýƒÛM ÐZ P¥ìýƒøM ÐZ P¥þƒ}K ßkP¥<þƒ‹K cZ P¥Lþƒ›K »P¥lþƒíJ ßkP¥”þƒ²K ßkP¥¼þƒÄK ßkP¥äþƒL ßkP¥ôþƒ%L ßkP¥ÿƒ@L ßkP¥ÿƒZL ßkP¥$ÿƒ‡L ßkP¥4ÿƒ™L ßkP¥Dÿƒ©L ßkP¥TÿƒÇL ßkP¥dÿƒß@ ßkP¥tÿƒA ßkP¥„ÿƒ¼| — P¥ ÿƒÔ| £ P¥¼ÿƒô| £ P¥Øÿƒ } MP¥$ƒ} Ç Q¥<ƒL| ?&S¥DƒX| á S¥Lƒ`| 6&S¥X…¯é T¥pƒl| ßkV¥„ƒ{| ßkV¥˜ƒŠ| ?&V¥¤ƒœ| ?&V¥°ƒ$G?&V¥„ƒ\{ †JV¥àƒø‰ÒãV¥ƒÇ*| V¥ƒ¦u ÒãV¥ ƒ²u Ï®V¥0ƒïÃÓlV¥@ƒ˜ÓlV¥`ƒ½u ÓlV¥pƒ}l‡V¥ƒŸI GÆ V¥°ƒCu ²qV¥Ðƒ“u ²qV¥àƒës ‡V¥ƒûx\V¥ ƒ³H ˜GV¥0ƒñÓlV¥Pƒ@H àcV¥pƒt ßkV¥”ƒOßkV¥¤ƒ›G ÓlV¥´ƒI | V¥ÄƒQt QÒ V¥äƒ,ƒßkV¥ôƒÝt ßkV¥ƒit Ž{ V¥$ƒxt ßkV¥Hƒ›t ßkV¥XƒÈt ßkV¥hƒa8 ßkV¥˜ƒg< ßkV¥¨ƒ*< ßkV¥¸ƒ–; ßkV¥àƒßkV¥ðƒu ßkV¥ƒút ßkV¥ƒ< kR V¥8ƒ2; 'YV¥`ƒî; ßkV¥pƒÿs –ZV¥ƒt; YV¥¸ƒ4u ßkV¥äƒE; ßkV¥ôƒJH —®V¥ƒúM\V¥4ƒVH ÓlV¥TƒTu ÝâV¥dƒku ÝâV¥tƒ„u ×lV¥„ÆÒvÓlV¥È9} äA V¥Ô…¯l€ X¥ìƒQÝâZ¥ôƒUMÓlZ¥üƒ†O×lZ¥ƒ¹OÁmZ¥ƒXÝâZ¥(ƒB} ÓlZ¥4ƒ`xïZ¥DƒšÜ Z¥ƒJH —®Z¥ ƒ}l‡Z¥Àƒ"5×lZ¥pƒlJ ®Y Z¥„ƒy` ÒãZ¥”ƒé^ ºY Z¥¨Y} ÖA [¥´…¯l€ ]¥ÌƒQÝâ_¥ÔƒUMÓl_¥Üƒ†O×l_¥äƒ¹OÁm_¥üƒXÝâ_¥ ƒÌÓl_¥ ƒ`xï_¥$ ƒ³“­I_¥l ƒ°c —®_¥| ƒ}l‡_¥œ ƒ"5×l_¥T …¯¹n_¥d Á} ˆ `¥p ƒÑ} ßkb¥| ä} à b¥ˆ ƒñ} ßkd¥” ~ ž d¥œ ƒ~ ßke¥¨ "~ v e¥´ ƒ/~ ßkg¥À ?~ Í g¥Ì ƒN~ ßki¥Ø `~ †C i¥à ƒm~ ßkj¥ì }~ 3 j¥ô ƒŽ~ ßkk¥ ƒ†O×lk¥ ƒ¹OÁmk¥ ÆÒvÓlk¥° …¯û¿ k¥È ƒQÏ®m¥Ð ƒUMÒãm¥Ø …¯.‚ m¥ð ƒQÝâo¥ø ƒUM}o¥…¯Sio¥ƒqP}p¥…¯åß p¥0ƒQÒãr¥8ƒUMÒãr¥@…¯ â r¥XƒQDãt¥`ƒUM}t¥h…¯À-t¥xƒqP®Hu¥€…¯ˆ u¥ƒqP›ƒ v¥˜…¯êƒ v¥¨†QÏ®w¥¸†UMÒãw¥È…¯óƒ w¥Ø†QÝâx¥è†UM}x¥ø…¯üƒ x¥†qP}y¥…¯„ y¥(†QÒãz¥8†UMÒãz¥H…¯„ z¥X†QDã{¥h†UM}{¥x…¯„ {¥ˆ†qP®H|¥˜…¯ „ |¥¨†qP›ƒ }¥¸]N_}¥È…¯¹n}¥Ø 1„ ~¥àƒ ßk¥ì! Á ¥ôƒ/ ßk€¥@ l €¥ ƒO ßk‚¥a lD ‚¥ ƒo ßkƒ¥,€ zN ƒ¥4ƒ ßkƒ¥@ƒ†O×lƒ¥Hƒ¹OÁmƒ¥`…¯À-ƒ¥pƒqP®H„¥x…¯Ë”„¥ˆƒqPÝâ…¥…¯Ö¾ …¥¨ƒQ›ƒ ‡¥°ƒUM›ƒ ‡¥¸…¯ˆ ‡¥ÈƒqP›ƒ ˆ¥Ð…¯|… ˆ¥à†qP®H‰¥ð…¯…… ‰¥†qPÝ⊥…¯Ž… Š¥ †Q›ƒ ‹¥0†UM›ƒ ‹¥@…¯—… ‹¥P†qP›ƒ Œ¥`ƒvtŒ¥hƒÖPô‡Œ¥pƒ@H àcŒ¥xƒ®€ tŒ¥€ƒÀ€ ÓlŒ¥ˆƒØ€ ßkŒ¥ƒˆPßkŒ¥˜ƒå€ {#Œ¥ ƒù€ û… Œ¥¨ƒ ßkŒ¥°ƒ ;x¸ƒ# † Œ¥Àƒ? '† Œ¥ÈƒR štŒ¥Ôƒe ßL¥à…¯?† Ž¥XƒV9¿† ›¥`ƒB‚ ßk›¥hƒgªÓl›¥pƒEBdž ›¥|ƒR‚ štœ¥ˆ…¯І ¥¨ƒ$G¿†  ¥èƒb‚ ßk ¥ƒ|‚ ¶V  ¥@ƒ ßk¡¥PƒR št¡¥`ƒ¨z Ól¢¥lƒÖPô‡¢¥|ƒ@H àc¢¥Œƒvt¢¥œƒˆPßk¢¥¬ƒ…ߢ¥Äƒ®€ t£¥ÔƒÀ€ Ól£¥äƒØ€ ßk£¥ôƒ ;xƒ? ù† £¥ƒš‚ Ãi £¥Hƒ·‚ Ãi £¥xéZ ‡ £¥„Û‚ ‡ ¥¥ƒ+F1M¦¥$ƒï‚ Œ_§¥tƒý‚ >‡ §¥ ƒê —ß©¥¸ÆÒvÓl«¥Ä…¯Œ_«¥Ì&ƒ M‡ «¥Ôƒ5ƒ ßk¬¥àGƒ Z‡ ¬¥èƒXƒ ßk­¥ôƒ†O×l­¥ƒ¹OÁm­¥(…¯1M­¥8ƒqPÊÌ®¥@…¯ŽL®¥PƒqPÓl¯¥X…¯@ˆ ¯¥h†qPḚ̂¥x…¯Iˆ °¥ˆ†qPÓl±¥˜ƒ ƒ xï±¥ ƒªƒ Ól±¥¨ƒlßk±¥°…¯Rˆ ±¥Ð…¯Œ_´¥ØÚƒ ]ˆ ´¥àƒæƒ ßkµ¥ìõƒ jˆ µ¥ôƒ„ ßk¶¥ƒ†O×l¶¥ƒ¹OÁm¶¥4…¯¬ˆ ¶¥DƒqP °·¥L…¯+ ·¥\ƒqP˜°¸¥d…¯C‰ ¸¥t†qP °¹¥„…¯L‰ ¹¥”†qP˜°º¥¤„ ‰ º¥À…¯°‰ Á¥ƒQÝâÈ¥ƒUM݉ È¥ƒ!Qå‰ È¥ƒ=Qñ‰ È¥ ƒGQßkÈ¥(ƒQQý‰ È¥0ƒ ‘‡È¥8ƒ†O×lÈ¥@ƒ¹OÁmÈ¥X„ 4Š È¥d…¯FŠ Ê¥|ƒQv®Ì¥„ƒUMv®Ì¥Œƒ†O×lÌ¥”ƒ¹OÁmÌ¥¬(„ ¨Š Ì¥´…¯ÁŠ Í¥ÄƒqPÖŠ Υ̃†O×lÎ¥Ôƒ¹OÁmÎ¥ì]N_Î¥…¯¹nÎ¥ï„ ‹ Ï¥ ƒ÷„ ßkÐ¥,… (‹ Ð¥4ƒ … ßkÑ¥@… 1‹ Ñ¥Hƒ… ßkÒ¥T*… :‹ Ò¥\ƒ3… ßkÓ¥h?… C‹ Ó¥pƒI… ßkÔ¥|V… L‹ Ô¥„ƒ_… ßkÕ¥k… U‹ Õ¥˜ƒu… ßkÖ¥¤‚… ^‹ Ö¥¬ƒ‹… ßk×¥¸—… g‹ ×¥Àƒ¡… ßkإ̮… ^‹ Ø¥Ôƒ¸… ßkÙ¥àÅ… g‹ Ù¥èƒÐ… ßkÚ¥ôÞ… p‹ Ú¥üƒè… ßkÛ¥õ… y‹ Û¥ƒÿ… ßkÜ¥ † ‚‹ Ü¥$ƒ† ßkÝ¥0† ‹‹ Ý¥8ƒ)† ßkÞ¥D6† ”‹ Þ¥LƒA† ßkߥXO† Ÿ‹ ߥ`ƒX† ßkߥlc† Ÿ‹ ߥtƒl† ßkߥ€ƒ†O×lߥˆƒ¹OÁmߥ æCVÔ‹ ߥèæCV½sà¥üæCVÎsá¥TæÈO×mã¥hæÈO×lä¥xæMùm䥼æMoÓæ¥üæMnç¥ …¯štè¥0ƒqPßké¥8…¯1Œ é¥HƒqP6Œ ê¥P…¯i†ê¥`ƒqP†ë¥h…¯¿Œ ë¥xƒqPÄŒ 쥀…¯~†ì¥ƒqP í¥˜…¯¹ní¥¨ƒqP×l…¯’ î¥ÀƒqP— ï¥È…¯ƒ†ï¥ØƒqPàcð¥à…¯ï# ð¥ðƒqPè ñ¥ø…¯ƒ†ñ¥ ƒqPàcò¥…¯ï# ò¥(ƒqPè ó¥0…¯ߎ ó¥DƒqPäŽ ô¥L…¯, ô¥`ƒqPû™õ¥h…¯q õ¥|ƒqPßÏ ö¥„…¯ŽLö¥˜ƒqPÓl÷¥ …¯ú ÷¥´ƒqP ø¥¼…¯H ø¥Ì†qPßkù¥Ü…¯Q ù¥ì†qP6Œ ú¥ü…¯Z ú¥ †qP†û¥…¯c û¥,†qPÄŒ ü¥<…¯l ü¥L†qP ý¥\…¯u ý¥l†qP×lþ¥|…¯~ þ¥Œ†qP— ÿ¥œ…¯‡ ÿ¥¬†qPàc¦¼…¯ ¦Ì†qPè ¦Ü…¯™ ¦ì†qPàc¦ü…¯¢ ¦ †qPè ¦…¯« ¦,†qPäŽ ¦<…¯´ ¦L†qPû™¦\…¯½ ¦l†qPßÏ ¦|…¯Æ ¦Œ†qPÓl¦œ…¯Ï ¦¬†qP ¦¼…¯Œ_¦Ä—† Ø ¦Ðƒ£† ßk ¦Ü²† ü ¦èƒ¿† ßk¦ôφ ‘ ¦ ƒÙ† ßk¦ ƒ†O×l¦4 ƒ¹OÁm¦L …¯e‘ ¦t ƒQv®¦| ƒUM…‘ ¦„ ƒ!Q‘‘ ¦Œ ƒ=Q‡¦” …¯ò‘ ¦¬ ƒQ’ ¦´ ƒUM×l¦¼ …¯^’ ¦Ô ƒQÂj¦Ü ƒUMl’ ¦ä …¯»’ ¦ô †Qv®¦!†UM…‘ ¦!†!Q‘‘ ¦$!†=Q‡¦4!…¯Ä’ ¦D!†Q’ ¦T!†UM×l¦d!…¯Í’ ¦t!†QÂj¦„!†UMl’ ¦”!ý† ; ¦ !…¯Ö’ ¦¸!ƒQšÜ ¦À!ƒUMl’ ¦È!ƒ†O×l¦Ð!ƒ¹OÁm¦è!ƒ‡ šÜ ¦ô!ƒ‡ l’ ¦"]N_¦"…¯¹n¦ "¥†“ ¦,"ƒ²†ßk"¦8"\‡ /“ "¦D"ƒk‡ ßk$¦P"}‡ =“ $¦X"ƒ†‡ ßk%¦d"=”J“ %¦l"ƒ’‡ ßk%¦x"Ÿ‡ R“ %¦„"ƒ©‡ ßk'¦"ó†d“ '¦ "ƒ‡ßk,¦¬"ƒ†O×l,¦´"ƒ¹OÁm,¦Ì"…¯ â ,¦ä"ƒQDã.¦ì"ƒUM}.¦ô"…¯” .¦ #ƒQ×l0¦#ƒUMÒã0¦#…¯S” 0¦,#ƒqPÊã1¦4#…¯åß 1¦L#ƒQÒã3¦T#ƒUMÒã3¦\#…¯• 3¦Œ#ƒQv®8¦”#ƒUM}8¦œ#ƒ!Q1• 8¦¤#ƒ=Q×l8¦¬#ƒGQï 8¦´#…¯”• 8¦Ä#†QDã9¦Ô#†UM}9¦ä#…¯• 9¦ô#†Q×l:¦$†UMÒã:¦$…¯¦• :¦$$†qPÊã;¦4$…¯¯• ;¦D$†QÒã<¦T$†UMÒã<¦d$…¯¸• <¦t$†Qv®=¦„$†UM}=¦”$†!Q1• =¦¤$†=Q×l=¦´$†GQï =¦Ä$¶‡ É• =¦Ð$…¯ä• @¦ð$ƒQ¯®C¦ø$ƒUMv®C¦%ƒ!Qû• C¦%ƒ†O×lC¦%ƒ¹OÁmC¦(%Ó‡ 0– C¦4%…¯G– F¦T%ƒQ?&I¦\%ƒUMv®I¦d%ƒ!Qp\I¦l%ƒ†O×lI¦t%ƒ¹OÁmI¦Œ%ƒ܇ ?&I¦˜%ƒ;+v®I¦¤%ƒä‡ p\I¦°%*ˆ ‡– I¦¼%…¯š– L¦Ü%ƒQï O¦ä%ƒUM˜°O¦ì%ƒ!Q×lO¦ô%ƒ†O×lO¦ü%ƒ¹OÁmO¦&ƒ7ˆ ï O¦ &ƒPˆ ˜°O¦,&ƒeˆ ×lO¦8&»ˆ î– O¦D&…¯— R¦d&ƒQ0— U¦l&ƒUM~UU¦t&ƒ!QݱU¦|&ƒ†O×lU¦„&ƒ¹OÁmU¦œ&ƒʈ ~UU¦¨&ƒ׈ ×lU¦¸&ƒêˆ ×lU¦È&ƒøˆ ßkU¦ü&ƒ‰ twU¦'ƒ‰ œ— U¦,'ƒéq ×lU¦H'ƒJH —®U¦P'ƒÛþêU¦X'ƒˆ` k[ U¦d'ƒ*‰ ¸— V¦p'…¯Å— W¦ˆ'3‰ Û— Y¦”'…¯í— [¦¬'ƒQ˜G]¦´'ƒUM÷S ]¦¼'ƒ†O×l]¦Ä'ƒ¹OÁm]¦Ü'…¯¹n]¦ì'}‡ (˜ ^¦ø'ƒ†‡ ßka¦(¥4 ?˜ a¦(ƒÂ‰ ßkd¦(̉ V˜ d¦,(ƒÚ‰ ßki¦8(ë‰ w˜ i¦T(ƒõ‰ ßkp¦`(Š ª˜ p¦p(ƒŠ ßku¦|(Š Ë˜ u¦Œ(ƒ$Š ßkz¦˜(.Š ô˜ z¦¤(ƒ8Š ßk~¦°(EŠ ™ ~¦¼(ƒLŠ ßk‚¦È(VŠ >™ ‚¦ä(ƒ]Š ßk‰¦ð(gŠ Š ‰¦)ƒpŠ ßk¦ )|Š ~™ ¦)ƒ’Š ßk“¦$)«Š ž™ “¦0)ƒ±Š ßk—¦<)ºŠ ™ —¦L)ƒÃŠ ßkœ¦X)ÏŠ þ™ œ¦d)ƒÛŠ ßkŸ¦p)êŠ š Ÿ¦x)ƒòŠ ßk ¦„)ƒ†O×l ¦Œ)ƒ¹OÁm ¦¤)…¯@š  ¦Ä)ƒQÊ㣦Ì)ƒUM‡£¦Ô)ƒ!QÒ㣦Ü)…¯™š £¦ü)ƒQ˜°¦¦*ƒUM¬š ¦¦ *ƒ!Q‡¦¦*…¯› ¦¦D*ƒQv®«¦L*ƒUMv®«¦T*ƒ!Q› «¦\*ƒ=Q%› «¦d*ƒGQ‡«¦l*…¯£› «¦¬*ƒQàc²¦´*ƒUM†J²¦¼*ƒ!Q†J²¦Ä*ƒ=Q¯®²¦Ì*ƒGQv®²¦Ô*ƒQQ‡²¦Ü*ƒ ‘Ò㲦ä*…¯œ ²¦+ƒQàc·¦+ƒUMÏ®·¦$+ƒ!Qv®·¦,+ƒ=Q‡·¦4+ƒGQÒã·¦<+…¯oœ ·¦l+ƒQv®¼¦t+ƒUMÒ㼦|+ƒ!Q}¼¦„+ƒ=Q’ ¼¦Œ+ƒGQ‡¼¦”+…¯ßœ ¼¦¼+ƒQÃ(À¦Ä+ƒUMv®À¦Ì+ƒ!Q‡À¦Ô+ƒ=Q À¦Ü+…¯P À¦,ƒQÂjĦ ,ƒUMv®Ħ,ƒ!Q‡Ħ,ƒ=Q Ħ$,…¯ž Ħd,ƒQàc˦l,ƒUMÒã˦t,ƒ!Q†J˦|,ƒ=Qv®˦„,ƒGQPž ˦Œ,ƒQQ\ž ˦”,ƒ ‘‡˦œ,…¯íž ˦Ô,ƒQp\ѦÜ,ƒUM‡Ѧä,ƒ!Ql’ Ѧì,ƒ=QŸ Ѧô,ƒGQ‡Ѧü,ƒQQÒãѦ-…¯cŸ Ѧ,-ƒQŸ Õ¦4-ƒUMv®Õ¦<-ƒ!Qv®Õ¦D-ƒ=Q‡Õ¦L-…¯ïŸ Õ¦t-ƒQ  Ù¦|-ƒUM}Ù¦„-ƒ!Q’ Ù¦Œ-ƒ=Q‡Ù¦”-…¯½  Ù¦Ä-ƒQv®Þ¦Ì-ƒUMõ  Þ¦Ô-ƒ!QßkÞ¦Ü-ƒ=Q‡Þ¦ä-ƒGQÒãÞ¦ì-…¯Z¡ Þ¦ .ƒQÏ®á¦.ƒUMv®á¦.ƒ!Q‡á¦$.…¯¿¡ á¦8.ƒqPÍ¡ â¦@.…¯¢ â¦P.†QÊãã¦`.†UM‡ã¦p.†!QÒã㦀.…¯ ¢ ã¦.†Q˜°䦠.†UM¬š 䦰.†!Q‡ä¦À.…¯)¢ ä¦Ð.†Qv®å¦à.†UMv®å¦ð.†!Q› å¦/†=Q%› å¦/†GQ‡å¦ /…¯2¢ å¦0/†Qàcæ¦@/†UM†Jæ¦P/†!Q†Jæ¦`/†=Q¯®æ¦p/†GQv®榀/†QQ‡æ¦/† ‘Òã榠/…¯;¢ 榰/†Qàcç¦À/†UMÏ®ç¦Ð/†!Qv®ç¦à/†=Q‡ç¦ð/†GQÒãç¦0…¯D¢ ç¦0†Qv®è¦ 0†UMÒãè¦00†!Q}è¦@0†=Q’ è¦P0†GQ‡è¦`0…¯M¢ è¦p0†QÃ(馀0†UMv®é¦0†!Q‡馠0†=Q 馰0…¯V¢ é¦À0†QÂjê¦Ð0†UMv®ê¦à0†!Q‡ê¦ð0†=Q ê¦1…¯_¢ ê¦1†Qàcë¦ 1†UMÒãë¦01†!Q†Jë¦@1†=Qv®ë¦P1†GQPž ë¦`1†QQ\ž ë¦p1† ‘‡릀1…¯h¢ ë¦1†Qp\즠1†UM‡즰1†!Ql’ ì¦À1†=QŸ ì¦Ð1†GQ‡ì¦à1†QQÒãì¦ð1…¯q¢ ì¦2†QŸ í¦2†UMv®í¦ 2†!Qv®í¦02†=Q‡í¦@2…¯z¢ í¦P2†Q  î¦`2†UM}î¦p2†!Q’ 2†=Q‡î¦2…¯ƒ¢ 2†Qv®聆2†UMõ  ï¦À2†!Qßkï¦Ð2†=Q‡ï¦à2†GQÒãï¦ð2…¯Œ¢ ï¦3†QÏ®ð¦3†UMv®ð¦ 3†!Q‡ð¦03…¯•¢ ð¦@3†qPÍ¡ ñ¦P3]N_ñ¦¤3…¯¹nñ¦´3¥†¦¢ ò¦¼3ƒ²†ßkó¦È3µŒ ³¢ ó¦Ð3ƒÂŒ ßkô¦Ü3ÒŒ À¢ ô¦ä3ƒÜŒ ßkô¦ð3èŒ À¢ ô¦ø3ƒ°Lßkô¦4òŒ È¢ ô¦ 4ƒûŒ ßkõ¦4 Ò¢ õ¦ 4ƒ ßkö¦,4 Ü¢ ö¦84ƒ) ßkø¦D45 î¢ ø¦P4ƒ< ßkú¦\4F £ ú¦h4ƒR ßkü¦t4a £ ü¦€4ƒo ßkþ¦Œ4€ $£ þ¦˜4ƒˆ ßk§¤4“ 6£ §¬4ƒ¢ ßk§¸4´ 6£ §À4ƒÃ ßk§Ì4Õ 6£ §Ô4ƒè ßk§à4þ ³¢ §è4ƒŽ ßk§ô4'Ž ¦¢ §ü4ƒ9Ž ßk§5NŽ C£ §5ƒcŽ ßk§ 5{Ž C£ §,5ƒŽ ßk §85¨Ž Q£ §D5ƒ·Ž ßk §P5ÉŽ Q£ §\5ƒØŽ ßk §h5êŽ _£ §p5ƒûŽ ßk§|5 h£ §ˆ5ƒ ßk§”5$ À¢ §œ5ƒ3 ßk§¨5D À¢ §°5ƒO ßk§¼5\ À¢ §Ä5ƒh ßk§Ð5¬ŸÀ¢ §Ø5ƒ·Ÿßk§ä5v _£ §ì5ƒ~ ßk§ø5‰ _£ §6ƒ’ ßk§ 6ž £ §6ƒ« ßk§ 6» ©£ §,6ƒÇ ßk§86Ö È£ §\6ƒà ßk §h6ƒ†O×l §p6ƒ¹OÁm §ˆ6…¯I¤ §˜6ƒqPDã!§ 6…¯Ë”!§°6ƒqPÝâ"§¸6…¯:†"§È6ƒqP¸…#§Ð6…¯¥ #§à6ƒqPMx$§è6…¯f¥ $§7ƒQt¥ &§7ƒUM|¥ &§7…¯Ñ¥ &§(7ƒQߥ (§07ƒUMç¥ (§87…¯:¦ (§P7ƒQH¦ *§X7ƒUMP¦ *§`7…¯ ¦ *§x7ƒQH¦ ,§€7ƒUM®¦ ,§ˆ7…¯§ ,§ 7ƒQ§ .§¨7ƒUMÝâ.§°7…¯R§ .§Ä7ƒqP,H/§Ì7…¯R§ /§à7ƒqP,H0§è7…¯R§ 0§ü7ƒqP,H1§8…¯Ë”1§8ƒqPÝâ2§ 8…¯I¤ 2§48ƒqPDã3§<8…¯µ¨ 3§T8ƒQDã5§\8ƒUM×l5§d8…¯µ¨ 5§|8ƒQDã7§„8ƒUM×l7§Œ8…¯ë¼ 7§¤8ƒQÝâ9§¬8ƒUM×l9§´8…¯ë¼ 9§Ì8ƒQÝâ;§Ô8ƒUM×l;§Ü8…¯¹n;§ð8ƒqP×l<§ø8…¯9ª <§9ƒQOª >§9ƒUM}>§ 9…¯¹n>§49ƒqP×l?§<9…¯¹n?§P9ƒqP×l@§X9…¯Üß @§l9ƒqPt A§t9…¯ž« A§Œ9ƒQ¬« C§”9ƒUM˜°C§œ9…¯¯¬ C§:ƒQßkN§:ƒUMßkN§:ƒ!QßkN§ :ƒ=QßkN§(:ƒGQ¬š N§0:ƒQQßkN§8:ƒ ‘ßkN§@:ƒ"• °N§H:ƒ,•}N§P:ƒL*}N§X:ƒW*}N§`:…¯­ N§p:†qPDãO§€:…¯%­ O§:†qPÝâP§ :…¯.­ P§°:†qP¸…Q§À:…¯7­ Q§Ð:†qPMxR§à:…¯@­ R§ð:†Qt¥ S§;†UM|¥ S§;…¯I­ S§ ;†Qߥ T§0;†UMç¥ T§@;…¯R­ T§P;†QH¦ U§`;†UMP¦ U§p;…¯[­ U§€;†QH¦ V§;†UM®¦ V§ ;…¯d­ V§°;†Q§ W§À;†UMÝâW§Ð;…¯m­ W§à;†qP,HX§ð;…¯v­ X§<†qP,HY§<…¯­ Y§ <†qP,HZ§0<…¯ˆ­ Z§@<†qPÝâ[§P<…¯‘­ [§`<†qPDã\§p<…¯š­ \§€<†QDã]§<†UM×l]§ <…¯£­ ]§°<†QDã^§À<†UM×l^§Ð<…¯¬­ ^§à<†QÝâ_§ð<†UM×l_§=…¯µ­ _§=†QÝâ`§ =†UM×l`§0=…¯¾­ `§@=†qP×la§P=…¯Ç­ a§`=†QOª b§p=†UM}b§€=…¯×­ b§=†qP×lc§ =…¯ç­ c§°=†qP×ld§À=…¯ð­ d§Ð=†qPt e§à=…¯ù­ e§ð=†Q¬« f§>†UM˜°f§>…¯® f§ >†Qßkg§0>†UMßkg§@>†!Qßkg§P>†=Qßkg§`>†GQ¬š g§p>†QQßkg§€>† ‘ßkg§>†"• °g§ >†,•}g§°>†L*}g§À>†W*}g§Ð>]N_g§è>…¯¹ng§ø>R ® h§?ƒh ßkh§ ?€ ® h§?ƒ ßkh§ ?ƒ†O×lh§(?ƒ¹OÁmh§@?æCVH® h§€?æCV½si§?æCVÎsj§à?æÈO×ml§@æÈO×lm§@æMùmm§T@æM[® o§Œ@æMnp§°@]N_q§È@…¯¹nq§Ø@m‘ t® r§à@ƒŠ‘ ßkr§ì@©‘ t® r§ô@ƒÓ‘ ßkr§Aƒ†O×lr§Aƒ¹OÁmr§ AæCV©® r§`AæCV½ss§pAæCVÎst§ÀAæÈO×mv§èAæÈO×lw§øAæMùmw§4BæM¼® y§lBæMnz§B]N_{§´B…¯¹n{§ÄB³’ Õ® |§ÌBƒÇ’ ßk|§ØBÝ’ Õ® |§àBƒó’ ßk|§ìB “ Õ® |§ôBƒ“ ßk|§Cƒ†O×l|§Cƒ¹OÁm|§ CæCV ¯ |§`CæCV½s}§pCæCVÎs~§ÀCæÈO×m€§üCæÈO×l§ DæMùm§HDæM¯ ƒ§€DæMn„§¤D]N_…§ÔD…¯¹n…§äDÓ .¯ †§ìDƒÐ“ ßk†§øDß“ .¯ †§Eƒí“ ßk†§ Eý“ .¯ †§Eƒ” ßk†§ E” .¯ †§(Eƒ” ßk†§4Eƒ†O×l†§Ý Þ§|NƒQv®à§„NƒUM‡à§ŒN…¯Ûµ à§´NƒQÃi ä§¼NƒUMÃ(ä§ÄNƒ!Qÿµ ä§ÌNƒ=Q‡ä§ÔN…¯]¶ ä§äN†qPZ´ å§ôN…¯f¶ å§O†qP´ æ§O…¯o¶ æ§$O†QÂjç§4O†UM‡ç§DO…¯x¶ ç§TO†Qv®è§dO†UM‡è§tO…¯¶ è§„O†QÃi é§”O†UMÃ(駤O†!Qÿµ é§´O†=Q‡é§ÄOò˜ ж é§ÐO…¯œ¶ ë§èOƒQxïí§ðOƒUM}³ í§øOƒ†O×lí§Pƒ¹OÁmí§P™ ß¶ í§(P…¯ü¶ ò§XPƒQ· ÷§`PƒUM· ÷§hPƒ!QZ´ ÷§pPƒ=Qßk÷§xPƒGQßk÷§€Pƒ†O×l÷§ˆPƒ¹OÁm÷§ P™ V· ÷§¨P…¯g· ø§¸PƒqP½ù§ÀPƒ†O×lù§ÈPƒ¹OÁmù§àPƒ}™ åJù§èPƒŒ™ Bù§ðPƒ£™ >'ù§øP…¯¡· ù§QæCVá· ü§œQæCV½sý§°QæCVÎsþ§©„ƒÈž ³Ã ?©”ƒÏž Äà @©¨ƒמ Üà B©¼ƒÛž éà C©Èƒ¼¼ýà E©ØƒŸ ]Ä G©ìƒ%Ÿ yÄ J©øƒ-[Ä K©0„nV®Ä L©d„-Ÿ ÈÄ M©Œ„9Ÿ âÄ N©˜„?Ÿ ëÄ O©¤„FŸ ùÄ Q©È„ç\ Å S©Ô„LŸ Å U©à„q\*Å V© …WŸ WÅ Y©,…hŸ |Å ^©H…Ç]ŸÅ `©Œ…a„ºÅ b©¤…U‹ÂÅ b©Ä…pŸ Å c©ä…|Ÿ )Æ d©0†‰Ÿ HÆ f©@†’Ÿ pÆ i©l†œŸ pÆ l©˜†¦Ÿ pÆ o©Ä†¬Ÿ žÆ r©‡ºŸ ¿Æ u©4‡ÇŸ ߯ x©X‡ÒŸ òÆ {©|‡ÛŸ òÆ }© ‡æŸ Å ©À‡òŸ ùÄ €©ä‡ÿŸ ùÄ ‚©ˆ  ÂÅ „©(ˆ  ÂÅ …©4ˆ!  |Å †©Pˆ;„Ç ˆ©pˆ2„Ç Š©ˆ,  Ç Œ©°ˆ5  .Ç Ž©Ðˆ>  <Ç ©ðˆE  JÇ ’©‰B„XÇ ”©0‰M  fÇ –©P‰I„tÇ ˜©p‰h„‚Ç š©‰U  Ç œ©°‰^  žÇ ž©Ð‰f  ¬Ç  ©ð‰…ùÄ ¢©Šo  *Å ¤©@Šy  ùÄ §©dŠf`ùÄ ©©ˆŠ\`ºÇ «©ÀŠ…  òÆ °©äŠ  ÛÇ ²©ôŠš  ÛÇ µ©‹¤  pÆ ¸©0‹¯  pÆ »©\‹º  È ¾©l‹Å  -È Á©|‹Ò  ùÄ Ä©‹é  ]aÆ©˜‹¡ LÈ Æ©¤‹¡ {È É©ì‹%¡ ¶È Ë©dŒ-¡ îÈ Í©ÔŒ4¡ üÈ Ï©äŒ<¡ É Ñ©<F¡ 9É Ó©h^¡ 9É Ö©”j¡ hÉ Ù©Žw¡ ‡É Û©8Ž‚¡ •É Ý©€Ž©¡ mË â©ð•ø/oÌ ä©¸—²¡ }Ì æ©À—½¡ ×Ì æ©˜˜Ê¡ åÌ è© ˜…¯KÄ è©°˜Fœ½+Í é©È˜ƒé¡ Ólë©Ð˜…¯ŽLë©à˜æCV:Í ì© ™æCV½sí©0™æCVÎsî©x™æÈO×m𩸙æÈO×lñ©È™æMùmñ©šæMRÍ ó©0šæMnô©Tšƒ¢ Ólõ©\šƒ%¢ Ólõ©dš…¯Z­õ©|šæCVbÍ ÷©àšæCV½sø©ðšæCVÎsù©X›æÈO×mû©¼›æÈO×lü©Ì›æMùmü©œæMtÍ þ©\œæMnÿ©€œ]N_ªŒœ…¯Œ_ª”œn¢ …Í ªœœƒ{¢ ßkª¨œ‹¢ ŽÍ ª°œƒ—¢ ßkª¼œ¥¢ –Í ªÄœƒ²¢ ßkªÐœƒ†O×lªøœƒ¹OÁmªæCVÎ ªžæCV½sªžæCVÎsªŸæÈO×mª€ŸæÈO×lªŸæMùmª` æMÃÎ ª$¡æMn ªH¡…¯¹n ªX¡ƒqP×l ª`¡…¯Œ_ ªh¡…¯{Ï ªx¡ƒqP„Ï ª€¡…¯àÏ ª¡†qP×lª ¡…¯ðÏ ª°¡…¯ùÏ ªÀ¡†qP„Ï ªÐ¡…¯Œ_ªØ¡Ö¢ yÄ ªà¡ƒá¢ ßkªì¡ï¢ Ð ªø¡ƒú¢ ßkª¢ƒ†O×lª ¢ƒ¹OÁmª8¢æCV‰Ð ª<£æCV½sªL£æCVÎsªL¤æÈO×mªÌ¤æÈO×lªÜ¤æMùmª¨¥æMYÑ ª\¦æMnª€¦…¯¹nª¦ƒqP×lª˜¦…¯ÆÑ ª°¦ƒQØÑ ª¸¦ƒUMàÑ ªÀ¦…¯<Ò ªÐ¦†qP×l ªà¦…¯EÒ ªð¦†QØÑ !ª§†UMàÑ !ª§ƒ:£ „Ï !ª§ƒI£ àÑ !ª §…¯NÒ !ª8§æCVƒÒ #ª¬§æCV½s$ª¼§æCVÎs%ª4¨æÈO×m'ª„¨æÈO×l(ª”¨æMùm(ªð¨æMÕÒ *ª<©æMn+ª`©ƒ¿£ „Ï ,ªh©ƒΣ Ól,ªp©ƒÛ£ àÑ ,ªx©ƒì£ îÒ ,ª€©ƒü£ ×l,ªˆ©…¯öÒ ,ª¸©æCVAÓ 1ªÀªæCV½s2ªÐªæCVÎs3ªÌ«æÈO×m5ªt¬æÈO×l6ª„¬æMùm6ª,­æM¬Ó 8ª´­æMn9ªØ­ƒ<¤ Ól:ªà­ƒF¤ îÒ :ªè­ƒP¤ ßk:ªð­…¯½Ó :ª®æCVÜÓ =ª°®æCV½s>ªÀ®æCVÎs?ª\¯æÈO×mAªÌ¯æÈO×lBªÜ¯æMùmBªD°æM Ô Dª °æMnEªÄ°]N_FªÈ±…¯¹nFªØ±Û¨ &Ô Gªà±ƒå¨ ßkGªì±ñ¨ &Ô Gªô±ƒü¨ ßkGª² © .Ô Gª ²ƒ© ßkJª².© &Ô Jª ²ƒ;© ßkJª,²J© &Ô Jª4²ƒ[© ßkJª@²n© &Ô JªH²ƒx© ßkJªT²„© =Ô Jª\²ƒ© ßkKªh²Ÿ© JÔ Kªt²ƒ¬© ßkMª€²¼© JÔ MªŒ²ƒÉ© ßkOª˜²Ù© JÔ Oª¤²ƒä© ßkQª°²ò© XÔ Qª¼²ƒª ßkTªÈ²ª JÔ TªÔ²ƒ'ª ßkVªà²:ª &Ô Vªè²ƒHª ßkVªô²Xª gÔ Vªü²ƒfª ßkWª³wª &Ô Wª³ƒ‚ª ßkWª³ª pÔ Wª$³ƒ™ª ßkXª0³¦ª yÔ Xª8³ƒ²ª ßkYªD³Áª ‚Ô YªL³ƒÍª ßkZªX³ܪ ‹Ô Zª`³ƒèª ßk[ªl³÷ª ”Ô [ªt³ƒ« ßk\ª€³« Ô \ªˆ³ƒ« ßk]ª”³'« ¦Ô ]ªœ³ƒ1« ßk^ª¨³>« ¯Ô ^ª°³ƒI« ßk_ª¼³W« ¸Ô _ªÄ³ƒc« ßk`ªÐ³r« gÔ `ªØ³ƒ}« ßkaªä³‹« ÁÔ aªì³ƒ—« ßkbªø³¦« ÊÔ bª´ƒ±« ßkcª ´¿« ÓÔ cª´ƒË« ßkdª ´Ú« ÜÔ dª(´ƒç« ßkeª4´÷« JÔ eª@´ƒ¬ ßkgªL´¬ ýÔ gªT´ƒ$¬ ßkhª`´5¬ Õ hªh´ƒE¬ ßkiªt´X¬ &Ô iª|´ƒe¬ ßkiªˆ´t¬ &Ô iª´ƒƒ¬ ßkiªœ´”¬ &Ô iª¤´ƒ£¬ ßkiª°´´¬ &Ô iª¸´ƒ¾¬ ßkiªÄ´ʬ &Ô iªÌ´ƒØ¬ ßkiªØ´è¬ &Ô iªà´ƒø¬ ßkiªì´ ­ &Ô iªô´ƒ­ ßkiªµ"­ &Ô iªµƒ5­ ßkiªµJ­ ÜÔ iªµƒW­ ßkjª(µg­ JÔ jª4µƒu­ ßklª@µ†­ &Ô lªHµƒ–­ ßklªTµ¨­ &Ô lª\µƒ¶­ ßklªhµÆ­ &Ô lªpµƒ×­ ßklª|µê­ &Ô lª„µƒù­ ßklªµ ® &Ô lª˜µƒ® ßklª¤µ.® &Ô lª¬µƒ<® ßklª¸µƒ†O×llªÀµƒ¹OÁmlªØµæCVÀ× lª¬¿æCV½smªÀ¿æCVÎsnªÈæÈO×mpª(ÐæÈO×lqª8ÐæMùmqª4׿MÝ sªÝæMntª8Ý…¯sÝ uªX݃Q„Ï xª`݃UMÓlxªh݃!QßkxªpÝ…¯{Ï xª€ÝƒqP„Ï yªˆÝ…¯!Þ yª ÝƒQ„Ï {ª¨ÝƒUMÓl{ª°Ý…¯!Þ {ªÈ݃Q„Ï }ªÐ݃UMÓl}ªØÝ…¯!Þ }ªð݃Q„Ï ªøÝƒUMÓlªÞ…¯ß ª ÞƒQ„Ï ‚ª(ÞƒUMÓl‚ª0Þƒ!Q×l‚ª8Þ…¯!Þ ‚ªPÞƒQ„Ï „ªXÞƒUMÓl„ª`Þ…¯¹n„ªtÞƒqP×l…ª|Þ…¯št…ªÞƒqPßk†ª˜Þ…¯ŽL†ª¬ÞƒqPÓl‡ª´Þ…¯ߎ ‡ªÈÞƒqPäŽ ˆªÐÞ…¯, ˆªäÞƒqPû™‰ªìÞ…¯q ‰ªßƒqPßÏ Šªß…¯1Œ ŠªßƒqP6Œ ‹ª$ß…¯i†‹ª8߃qP†Œª@ß…¯¿Œ ŒªT߃qPÄŒ ª\ß…¯~†ªp߃qP Žªxß…¯¹nŽªŒßƒqP×lª”ß…¯’ ª¨ßƒqP— ª°ß…¯ƒ†ªÄ߃qPàc‘ªÌß…¯ï# ‘ªà߃qPè ’ªèß…¯1ä ’ªü߃qPNä “ªà…¯!Þ “ªàƒQ„Ï •ª$àƒUMÓl•ª,à…¯å •ª@àƒqPå –ªHà…¯Žå –ª\àƒqP—å —ªdà…¯1ä —ªxàƒqPNä ˜ª€à…¯!Þ ˜ª˜àƒQ„Ï šª àƒUMÓlšª¨à…¯Ææ šª¸à†Q„Ï ›ªÈà†UMÓl›ªØà†!Qßk›ªèà…¯Ïæ ›ªøà†qP„Ï œªá…¯Øæ œªá†Q„Ï ª(á†UMÓlª8á…¯áæ ªHá†Q„Ï žªXá†UMÓlžªhá…¯êæ žªxá†Q„Ï Ÿªˆá†UMÓlŸª˜á…¯óæ Ÿª¨á†Q„Ï  ª¸á†UMÓl ªÈá†!Q×l ªØá…¯üæ  ªèá†Q„Ï ¡ªøá†UMÓl¡ªâ…¯ç ¡ªâ†qP×l¢ª(â…¯ç ¢ª8â†qPßk£ªHâ…¯ç £ªXâ†qPÓl¤ªhâ…¯ ç ¤ªxâ†qPäŽ ¥ªˆâ…¯)ç ¥ª˜â†qPû™¦ª¨â…¯2ç ¦ª¸â†qPßÏ §ªÈâ…¯;ç §ªØâ†qP6Œ ¨ªèâ…¯Dç ¨ªøâ†qP†©ªã…¯Mç ©ªã†qPÄŒ ªª(ã…¯Vç ªª8ã†qP «ªHã…¯_ç «ªXã†qP×l¬ªhã…¯hç ¬ªxã†qP— ­ªˆã…¯qç ­ª˜ã†qPàc®ª¨ã…¯zç ®ª¸ã†qPè ¯ªÈã…¯ƒç ¯ªØã†qPNä °ªèã…¯Œç °ªøã†Q„Ï ±ªä†UMÓl±ªä…¯•ç ±ª(ä†qPå ²ª8ä…¯žç ²ªHä†qP—å ³ªXä…¯§ç ³ªhä†qPNä ´ªxä…¯°ç ´ªˆä†Q„Ï µª˜ä†UMÓlµª¨ä…¯¹nµª¸äž® ¹ç ¶ªÄ䃪® ßk¸ªÐä¹® Ïç ¸ªÜäƒÅ® ßk»ªèäÔ® âÄ »ªðäƒß® ßk¼ªüäí® Å ¼ªåƒú® ßk½ªå ¯ Å ½ªåƒ¯ ßk¿ª(å)¯ ëÄ ¿ª4åƒ5¯ ßkÁª@åD¯ ÂÅ ÁªHåƒS¯ ßkªT僆O×lª\價OÁmªtåæCV¹è ªdèæCV½sêtèæCVÎsĪ$ëæÈO×mƪôìæÈO×lǪíæMùmǪ@ïæM}ê ɪñæMnʪ<ñ…¯¢ê ˪TñƒQ´ê ͪ\ñƒUM¼ê ͪdñ…¯!ë ͪ„ñƒQ<ë ЪŒñƒUMàÑ Ðª”ñƒ!Q¼ê Ъœñ…¯¹nЪ¬ñƒqP×lѪ´ñ…¯åë ѪÄñƒqP´ê ÒªÌñ…¯Hì ÒªäñƒQVì ÔªìñƒUM´ê Ôªôñ…¯±ì Ôª òƒQîÒ ÖªòƒUM×lÖªò…¯ í Öª,òƒqPîÒ ×ª4ò…¯ií תDò†Q´ê تTò†UM¼ê تdò…¯rí Øªtò†Q<ë Ùª„ò†UMàÑ Ùª”ò†!Q¼ê Ùª¤ò…¯{í Ùª´ò†qP×lÚªÄò…¯„í ÚªÔò†qP´ê Ûªäò…¯í Ûªôò†QVì ܪó†UM´ê ܪó…¯–í ܪ$ó†QîÒ Ýª4ó†UM×lݪD󅯟í ݪTó†qPîÒ Þªd󅯌_ÞªlóFœ½¨í ު󅯌_ߪ˜óFœ½¾í ߪ¤ó…¯Œ_᪬óFœ½¾í ᪸󅯌_ãªÀóFœ½¾í ãªÌ󅯌_åªÔóFœ½¾í åªà󅯌_çªèóFœ½Íí çªôó…¯Üí éªôFœ½ôí êªô…¯Œ_ìª ôFœ½¾í ìª,ô…¯Œ_îª4ôFœ½Íí îª@ô…¯Üí ðªPôFœ½ôí ñªdôƒ1%„Ï óªlôƒÛÓlóªtôƒ§‡ßkóª|ô…¯sÝ óªœôæCVî öª@õæCV½s÷ªPõæCVÎsøªðõæÈO×múª`öæÈO×lûªpöæMùmûªØöæMLî ýª4÷æMnþªX÷…¯Œ_ÿª`÷˜¯ ]î ÿªh÷ƒ¦¯ ßk«t÷”jî «|÷ƒÌ”ßk«ˆ÷·¯ wî «÷ƒï“ßk«œ÷ƒ†O×l«Ä÷ƒ¹OÁm«Ü÷æCV ï «ùæCV½s«ùæCVÎs«<úæÈO×m«èúæÈO×l«øúæMùm« üæM´ï «ýæMn «$ý…¯Åï «4ýƒqPÎï «<ý…¯Žå «LýƒqP—å «Tý…¯å «dýƒqPå «lý…¯×ð «|ý†qPÎï «Œý…¯àð «œý†qP—å «¬ý…¯éð «¼ý†qPå «Ìý…¯Œ_«ÔýFœ½Íí «àý…¯Üí «ðýFœ½òð «þ…¯üð «þFœ½ ñ «8þ…¯Œ_«@þFœ½!ñ «dþ…¯\ñ «tþFœ½Žñ «ˆþ…¯Íñ «˜þFœ½ò «¨þ¿¯ ò « ÿV0ò « ÿp0(ò "«Èÿ˯ 3ò $«üÿŒ0=ò &« د Sò («t߯ 'ó +«ƒVF]ó -« ƒ^F„{-«(ƒgF×l-«0ƒqF1™-«<ƒzF¹n.«H…¯gó /«hæÈO×m2«ÌæÈO×l3«ÜæMùm3«DéZ¹ò 5«`ƒñ¯ „{5«pƒ3b×l5«€ƒ"cU5«Äƒ1U6«ìƒÐU7«üƒÐc?|8«æMÓó 9«læMn:«…¯Œ_;«œá¶ªU;«¨áñªM<«´ƒ8HGÌ >«¼ƒvH÷ó >«Ä…¯ô >«ÜæÈO×m@«,æÈO×lA«<æMùmA«æM/ô C«ÐæMnD«ô…¯Œ_E«üFœ½@ô E«…¯Kô G«Fœ½_ô H«,]N_J«d2Ô ‘tJ«p9Ô õ K«„BÔ õ N«¬QÔ õ Q«ÔaÔ õ S«üpÔ 2õ U«<Ô Fõ Z«t‹Ô ÞX]«¤‘Ô Nõ ^«Ð˜Ô Uõ a«°Ô ]õ d«(¼Ô cõ d«”ÅÔ kõ h«¸àÔ cõ k«$ëÔ kõ o«H Õ DTr« Õ ¯õ s«d /Õ Éõ v« ;Õ Òõ w«, JÕ üõ x«8 YÕ Uö |«x eÕ ¡ö ~«¼ xÕ ½ö €«à ˆÕ Èö ‚«ü ˜Õ `ˆ«\ µÕ áö ‰«d ¿Õ çö ‰«l ËÕ ìö ‰«t ÝÕ ]õ ‰«x Œñö ‰«Œ êÕ ÷ Œ«¤ ôÕ ÷ ‘«¸ p¯5÷ •«Ü Ö 5÷ ›« +Ö 5÷ ¡«$ =Ö i÷ §«H Kì÷ ­«\ oÖ ÷ ²«p Ö ÷ ·«„ —Ö ÷ ¼«˜ ²Ö ÷ Á«¨ ¹Ö µ÷ Å«ì ÓÖ µ÷ È«4 îÖ Þ÷ Ë«Ø × ó÷ Ï«D × ø Ò«t:× óù Ö«<(T× [ú Ú«l,e× ¬ú à«È-t× ûú å«è1‚× ûú ì«84˜× ûú ó«(6±× Iû ú«(7Ê× [ú ¬„9Ù× [ú ¬;ð× [ú ¬h<Ø [ú ¬˜=1Ø û ¬H?]N_¬X?…¯éõ ¬€?Fœ½¹û "¬ @…¯Æû %¬,@Fœ½•E(¬\@…¯Æû )¬|@Fœ½•E,¬¬@…¯Œ_-¬´@Fœ½E -¬Ì@]N_0¬p˜…Ø ]a0¬x˜›Ø Õû 0¬ˆ˜µØ !ü 6¬D™ÍØ 4ü 8¬\™ÜØ \ü :¬€™òØ sü =¬˜™Ù ‰ü @¬¬™%Ù ªü D¬Ä™6Ù ²ü F¬ä™EÙ ºü H¬šQÙ Ìü J¬|šeÙ Üü K¬ÀšyÙ êü L¬ØšÙ õü M¬øšÙ üü P¬ ›“Ù üü Q¬›œÙ ý R¬ø›®Ù ý S¬0œ¼Ù ý T¬(ÍÙ x U¬À…¯ý V¬àƒ Ú ßkX¬žƒÚ štX¬žƒ#Ú ßkY¬$žƒ5Ú ßkY¬0ž…¯Œ_Y¬HžƒNÚ @ý Y¬€žƒªÚ ž¤Z¬ˆžƒ¶Ú Œý Z¬žƒÅÚ ¦ý Z¬˜žƒÙÚ ®ý Z¬ žƒïÚ 1EZ¬¨ž…¯¶ý Z¬ØžæÈO×m_¬|ŸæÈO×l`¬ŒŸæMùm`¬0 æMOþ b¬¼ æMnc¬à …¯Hü d¬ø Fœ½yéf¬¡…¯K¥g¬(¡…¯Œ_i¬0¡FB[“ui¬H¡…¯“uk¬`¡ƒ”[Ólm¬h¡ƒí"‡m¬p¡ÆÈO×mm¬Ô¡ÆÈO×ln¬ä¡ÆMùmn¬T¢ƒMbvp¬À¢ÆMnq¬ä¢…¯K¥r¬ü¢…¯Œ_t¬£FB[“ut¬£…¯“uv¬4£ƒ”[Ólx¬<£ƒí"‡x¬D£ÆÈO×mx¬¨£ÆÈO×ly¬¸£ÆMùmy¬(¤ƒMbv{¬”¤ÆMn|¬¸¤dÛ Îþ }¬À¤tÛ 7:}¬È¤‡Û 7:}¬Ð¤˜Û äþ }¬Ø¤©Û äþ }¬à¤·Û òþ }¬è¤ÌÛ ”_}¬ð¤åÛ ˜_}¬ø¤þÛ ÿ ~¬L¥Ü 0ÿ ¬¦0Ü ÿ …¬À¦IÜ `ˆ¬(§]N_‰¬@§…¯¹n‰¬P§ŸÜ Tÿ ЬX§ƒªÜ ßkЬd§·Ü Tÿ Ьl§ƒÂÜ ßkЬx§ƒ†O×lЬ€§ƒ¹OÁmЬ˜§æCV‰ÿ Š¬Ø§æCV½s‹¬è§æCVÎsŒ¬8¨æÈO×mެ`¨æÈO×l¬p¨æMùm¬¬¨æMœÿ ‘¬ä¨æMn’¬©…¯Œ_“¬©Fœ½½ÿ “¬$©…¯Œ_”¬,©Fœ½Þÿ ”¬d©…¯Œ_•¬l©Fœ½•¬©…¯Œ_–¬˜©Fœ½ :–¬¤©]N_—¬¨³ß Z—¬¬³ ß ˜¬¼³ß ™¬Ì³1ß !š¬´Hß Åœ¬ˆ´Wß ¡¬¨´tß D¥¬Ð´Šß ^¦¬Ü´–ß k§¬Xµ¥ß …«¬„µ±ß ’¬¬”µ¼ß µÍß â®¬Ðµàß í±¬èµòß ÿ³¬üµà C¶¬\¸à O·¬¹Cà ×¼¬˜¹Sà V¿¬Dºià ¤Ĭ,»qà ¶Ƭ„»à Ñɬ¨»¢à õˬ¼»Ùà άܻìà %Ϭø»ýà 6Ь¤Ãá AÒ¬ØÐP^ÌS Ô¬èÖ,á LÕ¬¨Þ>á UÖ¬Ü Sá j™׬ä má j™׬ì Œá ^׬„ œá ج, °á çö Ù¬4 Âá çö Ù¬< èá çö Ù¬D â çö Ù¬L <â j™Ù¬T Tâ çö Ù¬\ tâ çö Ù¬d –â çö Ù¬l ¸â çö Ù¬t áâ çö Ù¬| þâ Ù¬œ ã FÛ¬  ,ã Tݬ´ Iã ƒÞ¬ wã ìá¬l †ã k å¬@ ™ã Ê é¬è" ä ø¬# ,ä / ú¬# `ä ’ ü¬Äa sä À ü¬,b zä Ì ü¬­$y r >­,y ƒz ßk?­= h/¼­ “ ƒO= ßk¼­,“ b= h/¼­4“ ƒq= ßk¼­@“ ‚= h/¼­H“ ƒ–= ßk¼­T“ ¬= h/¼­\“ ƒ¼= ßk¼­h“ Î= h/¼­p“ ƒÞ= ßk¼­|“ ð= h/¼­„“ ƒ> ßk¼­“ > h/¼­˜“ ƒ%> ßk¼­¤“ :> h/¼­¬“ ƒH> ßk¼­¸“ X> h/¼­À“ ƒj> ßk¼­Ì“ ~> h/¼­Ô“ ƒ> ßk¼­à“ ž> h/¼­è“ ƒ¾> ßk¼­ô“ à> h/¼­ü“ ƒ? ßk¼­” *? h/¼­” ƒN? ßk¼­” t? h/¼­$” ƒ? ßk¼­0” ¬? h/¼­8” ƒÃ? ßk¼­D” Ü? h/¼­L” ƒù? ßk¼­X” @ h/¼­`” ƒ1@ ßk¼­l” L@ h/¼­t” ƒ]@ ßk¼­€” p@ h/¼­ˆ” ƒ@ ßk¼­”” @ h/¼­œ” ƒ¡@ ßk¼­¨” ´@ h/¼­°” ƒÆ@ ßk¼­¼” Ú@ h/¼­Ä” ƒí@ ßk¼­Ð” A h/¼­Ø” ƒA ßk¼­ä” &A h/¼­ì” ƒ7A ßk¼­ø” JA h/¼­• ƒ[A ßk¼­ • nA h/¼­• ƒ~A ßk¼­ • A h/¼­(• ƒ£A ßk¼­4• ¸A h/¼­<• ƒËA ßk¼­H• àA h/¼­P• ƒòA ßk¼­\• B h/¼­d• ƒB ßk¼­p• 4B h/¼­x• ƒFB ßk¼­„• ZB h/¼­Œ• ƒsB ßk¼­˜• ŽB h/¼­ • ƒŸB ßk¼­¬• ²B h/¼­´• ƒÀB ßk¼­À• ÐB h/¼­È• ƒÞB ßk¼­Ô• îB h/¼­Ü• ƒÿB ßk¼­è• C h/¼­ð• ƒ#C ßk¼­ü• 6C h/¼­– ƒSC ßk¼­– rC h/¼­– ƒ‹C ßk¼­$– ¦C h/¼­,– ƒ¶C ßk¼­8– ÈC h/¼­@– ƒÙC ßk¼­L– ìC h/¼­T– ƒD ßk¼­`– D h/¼­h– ƒ/D ßk¼­t– FD h/¼­|– ƒ_D ßk¼­ˆ– zD h/¼­– ƒD ßk¼­œ– ¦D h/¼­¤– ƒÄD ßk¼­°– äD h/¼­¸– ƒõD ßk¼­Ä– E h/¼­Ì– ƒE ßk¼­Ø– ,E h/¼­à– ƒ=E ßk¼­ì– PE h/¼­ô– ƒeE ßk¼­— |E h/¼­— ƒ’E ßk¼­— ªE h/¼­— ƒ»E ßk¼­(— ÎE h/¼­0— ƒÞE ßk¼­<— ðE h/¼­D— ƒF ßk¼­P— F h/¼­X— ƒ,F ßk¼­d— J h/¼­`™ ƒLJ ßk¼­l™ \J h/¼­t™ ƒkJ ßk¼­€™ |J h/¼­ˆ™ ƒ‰J ßk¼­”™ ˜J h/¼­œ™ ƒ§J ßk¼­¨™ ¸J h/¼­°™ ƒÆJ ßk¼­¼™ ÖJ h/¼­Ä™ ƒåJ ßk¼­Ð™ öJ h/¼­Ø™ ƒK ßk¼­ä™ K h/¼­ì™ ƒ%K ßk¼­ø™ 8K h/¼­š ƒLK ßk¼­ š bK h/¼­š ƒuK ßk¼­ š ŠK h/¼­(š ƒšK ßk¼­4š ¬K h/¼­<š ƒ»K ßk¼­Hš ÌK h/¼­Pš ƒÜK ßk¼­\š îK h/¼­dš ƒþK ßk¼­pš L h/¼­xš ƒ"L ßk¼­„š 6L h/¼­Œš ƒDL ßk¼­˜š TL h/¼­ š ƒaL ßk¼­¬š pL h/¼­´š ƒ„L ßk¼­Àš šL h/¼­Èš ƒªL ßk¼­Ôš ¼L h/¼­Üš ƒÊL ßk¼­èš ÚL h/¼­ðš ƒèL ßk¼­üš øL h/¼­› ƒ M ßk¼­›  M h/¼­› ƒ-M ßk¼­$› T h/¼­ÐŸ ƒVT ßk¼­àŸ pT h/¼­èŸ ƒ€T ßk¼­øŸ ’T h/¼­  ƒ¡T ßk¼­  ²T h/¼­  ƒÐT ßk¼­(  ðT h/¼­0  ƒ U ßk¼­@  ,U h/¼­H  ƒDU ßk¼­X  ^U h/¼­`  ƒuU ßk¼­p  ŽU h/¼­x  ƒ®U ßk¼­ˆ  ÐU h/¼­  ƒäU ßk¼­   úU h/¼­¨  ƒV ßk¼­¸  *V h/¼­À  ƒDV ßk¼­Ð  `V h/¼­Ø  ƒ{V ßk¼­è  ˜V h/¼­ð  ƒµV ßk¼­¡ ÔV h/¼­¡ ƒäV ßk¼­¡ öV h/¼­ ¡ ƒW ßk¼­0¡ *W h/¼­8¡ ƒ;W ßk¼­H¡ NW h/¼­P¡ ƒbW ßk¼­`¡ xW h/¼­h¡ ƒW ßk¼­x¡ ¨W h/¼­€¡ ƒ¸W ßk¼­¡ ƒ†O×l¼­˜¡ ƒ¹OÁm¼­°¡ æCVŸ/¼­ð¡ æCV½s½­¢ æCVÎs¾­P¢ æÈO×mÀ­d¢ æÈO×lÁ­t¢ æMùmÁ­°¢ æM²¦Ã­è¢ æMnÄ­ £ ]N_ŭس …¯¹nÅ­è³ B¾ Ó/Æ­ð³ ƒb¾ ßkÆ­ü³ „¾ Ó/Æ­´ ƒ©¾ ßkÆ­´ о Ó/Æ­´ ƒî¾ ßkÆ­$´ ¿ Ó/Æ­,´ ƒ&¿ ßkÆ­8´ @¿ Ó/Æ­@´ ƒZ¿ ßkÆ­L´ v¿ Ó/Æ­T´ ƒ˜¿ ßkÆ­`´ ¼¿ Ó/Æ­h´ ƒÙ¿ ßkÆ­t´ ø¿ Ó/Æ­|´ ƒÀ ßkÆ­ˆ´ 6À Ó/Æ­´ ƒXÀ ßkÆ­œ´ |À Ó/Æ­¤´ ƒ£À ßkÆ­°´ ÌÀ Ó/Æ­¸´ ƒïÀ ßkÆ­Ä´ Á Ó/Æ­Ì´ ƒ0Á ßkÆ­Ø´ NÁ Ó/Æ­à´ ƒjÁ ßkÆ­ì´ ˆÁ Ó/Æ­ô´ ƒ¢Á ßkÆ­µ ¾Á Ó/Æ­µ ƒÝÁ ßkÆ­µ þÁ Ó/Æ­µ ƒ ßkÆ­(µ 0 Ó/Æ­0µ ƒK ßkÆ­<µ h Ó/Æ­Dµ ƒ‡Â ßkÆ­Pµ ¨Â Ó/Æ­Xµ ƒÊ ßkÆ­dµ î Ó/Æ­lµ ƒ à ßkÆ­xµ ,à Ó/Æ­€µ ƒKà ßkÆ­Œµ là Ó/Æ­”µ ƒŽÃ ßkÆ­ µ ²Ã Ó/Æ­¨µ ƒÐà ßkÆ­´µ ðà Ó/Æ­¼µ ƒ Ä ßkƭȵ (Ä Ó/ƭе ƒCÄ ßkƭܵ `Ä Ó/Æ­äµ ƒŠÄ ßkÆ­ðµ ¶Ä Ó/Æ­øµ ƒÛÄ ßkÆ­¶ Å Ó/Æ­ ¶ ƒÅ ßkÆ­¶ 4Å Ó/Æ­ ¶ ƒfÅ ßkÆ­,¶ šÅ Ó/Æ­4¶ ƒÅÅ ßkÆ­@¶ òÅ Ó/Æ­H¶ ƒÆ ßkÆ­T¶ 0Æ Ó/Æ­\¶ ƒHÆ ßkÆ­h¶ bÆ Ó/Æ­p¶ ƒ„Æ ßkÆ­|¶ ¨Æ Ó/Æ­„¶ ƒ¿Æ ßkÆ­¶ ØÆ Ó/Æ­˜¶ ƒûÆ ßkÆ­¤¶  Ç Ó/Æ­¬¶ ƒAÇ ßkÆ­¸¶ dÇ Ó/Æ­À¶ ƒ‡Ç ßkƭ̶ ¬Ç Ó/Æ­Ô¶ ƒÆÇ ßkÆ­à¶ âÇ Ó/Æ­è¶ ƒÈ ßkÆ­ô¶ (È Ó/Æ­ü¶ ƒ?È ßkÆ­· XÈ Ó/Æ­· ƒlÈ ßkÆ­· ‚È Ó/Æ­$· ƒŸÈ ßkÆ­0· ¾È Ó/Æ­8· ƒÚÈ ßkÆ­D· øÈ Ó/Æ­L· ƒÉ ßkÆ­X· 0É Ó/Æ­`· ƒGÉ ßkÆ­l· `É Ó/Æ­t· ƒzÉ ßkÆ­€· –É Ó/Æ­ˆ· ƒ¸É ßkÆ­”· ÜÉ Ó/Æ­œ· ƒòÉ ßkÆ­¨·  Ê Ó/Æ­°· ƒ&Ê ßkÆ­¼· DÊ Ó/Æ­Ä· ƒ[Ê ßkƭз tÊ Ó/Æ­Ø· ƒŽÊ ßkÆ­ä· ªÊ Ó/Æ­ì· ƒÀÊ ßkÆ­ø· ØÊ Ó/Æ­¸ ƒöÊ ßkÆ­ ¸ Ë Ó/Æ­¸ ƒ/Ë ßkÆ­ ¸ JË Ó/Æ­(¸ ƒeË ßkÆ­4¸ ‚Ë Ó/Æ­<¸ ƒ¬Ë ßkÆ­H¸ ØË Ó/Æ­P¸ ƒóË ßkÆ­\¸ Ì Ó/Æ­d¸ ƒ-Ì ßkÆ­p¸ LÌ Ó/Æ­x¸ ƒsÌ ßkÆ­„¸ œÌ Ó/Æ­Œ¸ ƒ´Ì ßkÆ­˜¸ ÎÌ Ó/Æ­ ¸ ƒêÌ ßkÆ­¬¸ Í Ó/Æ­´¸ ƒ*Í ßkÆ­À¸ NÍ Ó/ƭȸ ƒxÍ ßkÆ­Ô¸ ¤Í Ó/ƭܸ ƒÀÍ ßkÆ­è¸ ÞÍ Ó/ƭ𸠃÷Í ßkÆ­ü¸ Î Ó/Æ­¹ ƒ,Î ßkÆ­¹ HÎ Ó/Æ­¹ ƒ^Î ßkÆ­$¹ vÎ Ó/Æ­,¹ ƒ”Î ßkÆ­8¹ ´Î Ó/Æ­@¹ ƒÍÎ ßkÆ­L¹ èÎ Ó/Æ­T¹ ƒÏ ßkÆ­`¹  Ï Ó/Æ­h¹ ƒJÏ ßkÆ­t¹ vÏ Ó/Æ­|¹ ƒ‘Ï ßkÆ­ˆ¹ ®Ï Ó/Æ­¹ ƒËÏ ßkÆ­œ¹ êÏ Ó/Æ­¤¹ ƒÐ ßkÆ­°¹ :Ð Ó/Æ­¸¹ ƒ\Ð ßkƭĹ €Ð Ó/ƭ̹ ƒªÐ ßkƭع ÖÐ Ó/ƭ๠ƒÿÐ ßkÆ­ì¹ *Ñ Ó/Æ­ô¹ ƒAÑ ßkÆ­º ZÑ Ó/Æ­º ƒzÑ ßkÆ­º œÑ Ó/Æ­º ƒ¸Ñ ßkÆ­(º ÖÑ Ó/Æ­0º ƒîÑ ßkÆ­<º Ò Ó/Æ­Dº ƒ&Ò ßkÆ­Pº FÒ Ó/Æ­Xº ƒZÒ ßkÆ­dº pÒ Ó/Æ­lº ƒ“Ò ßkÆ­xº ¸Ò Ó/Æ­€º ƒÏÒ ßkÆ­Œº èÒ Ó/Æ­”º ƒûÒ ßkÆ­ º Ó Ó/Æ­¨º ƒ/Ó ßkÆ­´º PÓ Ó/Æ­¼º ƒrÓ ßkƭȺ –Ó Ó/ƭк ƒ°Ó ßkƭܺ ÌÓ Ó/Æ­äº ƒæÓ ßkÆ­ðº Ô Ó/Æ­øº ƒÔ ßkÆ­» 6Ô Ó/Æ­ » ƒLÔ ßkÆ­» dÔ Ó/Æ­ » ƒwÔ ßkÆ­,» ŒÔ Ó/Æ­4» ƒ¤Ô ßkÆ­@» ¾Ô Ó/Æ­H» ƒÓÔ ßkÆ­T» êÔ Ó/Æ­\» ƒÕ ßkÆ­h» 8Õ Ó/Æ­p» ƒ`Õ ßkÆ­|» ŠÕ Ó/Æ­„» ƒ±Õ ßkÆ­» ÚÕ Ó/Æ­˜» ƒ÷Õ ßkÆ­¤» Ö Ó/Æ­¬» ƒ<Ö ßkÆ­¸» dÖ Ó/Æ­À» ƒƒÖ ßkÆ­Ì» ¤Ö Ó/Æ­Ô» ƒÈÖ ßkÆ­à» îÖ Ó/Æ­è» ƒ× ßkÆ­ô» :× Ó/Æ­ü» ƒV× ßkÆ­¼ t× Ó/Æ­¼ ƒ—× ßkÆ­¼ ¼× Ó/Æ­$¼ ƒÙ× ßkÆ­0¼ ø× Ó/Æ­8¼ ƒØ ßkÆ­D¼ :Ø Ó/Æ­L¼ ƒPØ ßkÆ­X¼ hØ Ó/Æ­`¼ ƒ†Ø ßkÆ­l¼ ¦Ø Ó/Æ­t¼ ƒÌØ ßkÆ­€¼ ôØ Ó/Æ­ˆ¼ ƒÙ ßkÆ­”¼ :Ù Ó/Æ­œ¼ ƒ`Ù ßkÆ­¨¼ ˆÙ Ó/Æ­°¼ ƒ¯Ù ßkÆ­¼¼ ØÙ Ó/ƭļ ƒøÙ ßkƭм Ú Ó/ƭؼ ƒ6Ú ßkÆ­ä¼ TÚ Ó/Æ­ì¼ ƒoÚ ßkÆ­ø¼ ŒÚ Ó/Æ­½ ƒ¢Ú ßkÆ­ ½ ºÚ Ó/Æ­½ ƒÐÚ ßkÆ­ ½ èÚ Ó/Æ­(½ ƒÛ ßkÆ­4½ $Û Ó/Æ­<½ ƒCÛ ßkÆ­H½ dÛ Ó/Æ­P½ ƒ‚Û ßkÆ­\½ ¢Û Ó/Æ­d½ ƒ¼Û ßkÆ­p½ ØÛ Ó/Æ­x½ ƒýÛ ßkÆ­„½ $Ü Ó/Æ­Œ½ ƒCÜ ßkÆ­˜½ dÜ Ó/Æ­ ½ ƒ~Ü ßkÆ­¬½ šÜ Ó/Æ­´½ ƒ¸Ü ßkÆ­À½ ØÜ Ó/ƭȽ ƒòÜ ßkÆ­Ô½ Ý Ó/ƭܽ ƒ$Ý ßkÆ­è½ <Ý Ó/Æ­ð½ ƒRÝ ßkÆ­¾ jÝ Ó/Æ­¾ ƒ€Ý ßkÆ­¾ ˜Ý Ó/Æ­ ¾ ƒ¸Ý ßkÆ­0¾ ÚÝ Ó/Æ­8¾ ƒðÝ ßkÆ­H¾ Þ Ó/Æ­P¾ ƒÞ ßkÆ­`¾ 8Þ Ó/Æ­h¾ ƒNÞ ßkÆ­x¾ fÞ Ó/Æ­€¾ ƒ{Þ ßkÆ­¾ ’Þ Ó/Æ­˜¾ ƒ«Þ ßkÆ­¨¾ ÆÞ Ó/Æ­°¾ ƒÜÞ ßkÆ­À¾ ôÞ Ó/ƭȾ ƒß ßkƭؾ 8ß Ó/ƭྠƒWß ßkÆ­ð¾ xß Ó/Æ­ø¾ ƒ–ß ßkÆ­¿ ¶ß Ó/Æ­¿ ƒâß ßkÆ­ ¿ à Ó/Æ­(¿ ƒ'à ßkÆ­8¿ @à Ó/Æ­@¿ ƒRà ßkÆ­P¿ fà Ó/Æ­X¿ ƒ|à ßkÆ­h¿ ”à Ó/Æ­p¿ ƒ¥à ßkÆ­€¿ ¸à Ó/Æ­ˆ¿ ƒÊà ßkÆ­˜¿ Þà Ó/Æ­ ¿ ƒóà ßkÆ­°¿  á Ó/Æ­¸¿ ƒ$á ßkÆ­È¿ @á Ó/ƭп ƒ^á ßkÆ­à¿ ~á Ó/Æ­è¿ ƒœá ßkÆ­ø¿ ¼á Ó/Æ­À ƒÕá ßkÆ­À ðá Ó/Æ­À ƒ"â ßkÆ­(À Vâ Ó/Æ­0À ƒƒâ ßkÆ­@À ²â Ó/Æ­HÀ ƒÖâ ßkÆ­XÀ üâ Ó/Æ­`À ƒã ßkÆ­pÀ <ã Ó/Æ­xÀ ƒeã ßkÆ­ˆÀ ã Ó/Æ­À ƒ¸ã ßkÆ­ À âã Ó/Æ­¨À ƒúã ßkÆ­¸À ä Ó/Æ­ÀÀ ƒ)ä ßkÆ­ÐÀ @ä Ó/Æ­ØÀ ƒ[ä ßkÆ­èÀ xä Ó/Æ­ðÀ ƒ’ä ßkÆ­Á ®ä Ó/Æ­Á ƒÑä ßkÆ­Á öä Ó/Æ­ Á ƒå ßkÆ­0Á .å Ó/Æ­8Á ƒMå ßkÆ­HÁ nå Ó/Æ­PÁ ƒå ßkÆ­`Á ²å Ó/Æ­hÁ ƒÒå ßkÆ­xÁ ôå Ó/Æ­€Á ƒæ ßkÆ­Á *æ Ó/Æ­˜Á ƒEæ ßkÆ­¨Á bæ Ó/Æ­°Á ƒ|æ ßkÆ­ÀÁ ˜æ Ó/Æ­ÈÁ ƒµæ ßkÆ­ØÁ Ôæ Ó/Æ­àÁ ƒíæ ßkÆ­ðÁ ç Ó/Æ­øÁ ƒ.ç ßkÆ­ Vç Ó/Æ­ ƒ{ç ßkÆ­  ¢ç Ó/Æ­( ƒÄç ßkÆ­8 èç Ó/Æ­@ ƒ è ßkÆ­P 4è Ó/Æ­X ƒUè ßkÆ­h xè Ó/Æ­p ƒ˜è ßkÆ­€Â ºè Ó/Æ­ˆÂ ƒØè ßkÆ­˜Â øè Ó/Æ­ Â ƒé ßkÆ­°Â .é Ó/Æ­¸Â ƒMé ßkÆ­È né Ó/ƭРƒ‡é ßkÆ­à ¢é Ó/Æ­è ƒ¶é ßkÆ­øÂ Ìé Ó/Æ­Ã ƒàé ßkÆ­à öé Ó/Æ­à ƒ ê ßkÆ­(à "ê Ó/Æ­0à ƒ9ê ßkÆ­@à Rê Ó/Æ­Hà ƒjê ßkÆ­Xà „ê Ó/Æ­`à ƒ£ê ßkÆ­pà Äê Ó/Æ­xà ƒàê ßkÆ­ˆÃ þê Ó/Æ­Ã ƒë ßkÆ­ Ã 6ë Ó/Æ­¨Ã ƒOë ßkÆ­¸Ã jë Ó/Æ­Àà ƒ„ë ßkÆ­Ðà  ë Ó/Æ­ØÃ ƒ¸ë ßkÆ­èà Òë Ó/Æ­ðà ƒéë ßkÆ­Ä ì Ó/Æ­Ä ƒì ßkÆ­Ä 4ì Ó/Æ­ Ä ƒJì ßkÆ­0Ä bì Ó/Æ­8Ä ƒxì ßkÆ­HÄ ì Ó/Æ­PÄ ƒ¤ì ßkÆ­`Ä ºì Ó/Æ­hÄ ƒÎì ßkÆ­xÄ äì Ó/Æ­€Ä ƒûì ßkÆ­Ä í Ó/Æ­˜Ä ƒ8í ßkÆ­¨Ä ^í Ó/Æ­°Ä ƒsí ßkÆ­ÀÄ Ší Ó/Æ­ÈÄ ƒªí ßkÆ­ØÄ Ìí Ó/Æ­àÄ ƒåí ßkÆ­ðÄ î Ó/Æ­øÄ ƒî ßkÆ­Å .î Ó/Æ­Å ƒDî ßkÆ­ Å \î Ó/Æ­(Å ƒrî ßkÆ­8Å Šî Ó/Æ­@Å ƒ¤î ßkÆ­PÅ Àî Ó/Æ­XÅ ƒæî ßkÆ­hÅ ï Ó/Æ­pÅ ƒ7ï ßkÆ­€Å bï Ó/Æ­ˆÅ ƒxï ßkÆ­˜Å ï Ó/Æ­ Å ƒªï ßkÆ­°Å Æï Ó/Æ­¸Å ƒãï ßkÆ­ÈÅ ð Ó/Æ­ÐÅ ƒ!ð ßkÆ­àÅ Bð Ó/Æ­èÅ ƒ`ð ßkÆ­øÅ €ð Ó/Æ­Æ ƒºð ßkÆ­Æ öð Ó/Æ­Æ ƒñ ßkÆ­(Æ ,ñ Ó/Æ­0Æ ƒEñ ßkÆ­@Æ `ñ Ó/Æ­HÆ ƒñ ßkÆ­XÆ  ñ Ó/Æ­`Æ ƒÀñ ßkÆ­pÆ âñ Ó/Æ­xÆ ƒò ßkÆ­ˆÆ ,ò Ó/Æ­Æ ƒRò ßkÆ­ Æ zò Ó/Æ­¨Æ ƒ¤ò ßkÆ­¸Æ Ðò Ó/Æ­ÀÆ ƒåò ßkÆ­ÐÆ üò Ó/Æ­ØÆ ƒó ßkÆ­èÆ 2ó Ó/Æ­ðÆ ƒHó ßkÆ­Ç `ó Ó/Æ­Ç ƒ}ó ßkÆ­Ç œó Ó/Æ­ Ç ƒ¹ó ßkÆ­0Ç Øó Ó/Æ­8Ç ƒðó ßkÆ­HÇ  ô Ó/Æ­PÇ ƒô ßkÆ­`Ç 4ô Ó/Æ­hÇ ƒPô ßkÆ­xÇ nô Ó/Æ­€Ç ƒŽô ßkÆ­Ç °ô Ó/Æ­˜Ç ƒÌô ßkÆ­¨Ç êô Ó/Æ­°Ç ƒõ ßkÆ­ÀÇ (õ Ó/Æ­ÈÇ ƒJõ ßkÆ­ØÇ nõ Ó/Æ­àÇ ƒ‹õ ßkÆ­ðÇ ªõ Ó/Æ­øÇ ƒÇõ ßkÆ­È æõ Ó/Æ­È ƒö ßkÆ­ È ö Ó/Æ­(È ƒ;ö ßkÆ­8È Zö Ó/Æ­@È ƒ~ö ßkÆ­PÈ ¤ö Ó/Æ­XÈ ƒËö ßkÆ­hÈ ôö Ó/Æ­pÈ ƒ%÷ ßkÆ­€È X÷ Ó/Æ­ˆÈ ƒl÷ ßkÆ­˜È ‚÷ Ó/Æ­ È ƒ›÷ ßkÆ­°È ¶÷ Ó/Æ­¸È ƒ×÷ ßkÆ­ÈÈ ú÷ Ó/Æ­ÐÈ ƒø ßkÆ­àÈ *ø Ó/Æ­èÈ ƒ:ø ßkÆ­øÈ Lø Ó/Æ­É ƒbø ßkÆ­É zø Ó/Æ­É ƒžø ßkÆ­(É Äø Ó/Æ­0É ƒâø ßkÆ­@É ù Ó/Æ­HÉ ƒù ßkÆ­XÉ 2ù Ó/Æ­`É ƒNù ßkÆ­pÉ lù Ó/Æ­xÉ ƒ€ù ßkÆ­ˆÉ –ù Ó/Æ­É ƒ²ù ßkÆ­ É Ðù Ó/Æ­¨É ƒóù ßkÆ­¸É ú Ó/Æ­ÀÉ ƒ8ú ßkÆ­ÐÉ Zú Ó/Æ­ØÉ ƒpú ßkÆ­èÉ ˆú Ó/Æ­ðÉ ƒ¯ú ßkÆ­Ê Øú Ó/Æ­Ê ƒû ßkÆ­Ê ,û Ó/Æ­ Ê ƒAû ßkÆ­0Ê Xû Ó/Æ­8Ê ƒ|û ßkÆ­HÊ ¢û Ó/Æ­PÊ ƒ½û ßkÆ­`Ê Úû Ó/Æ­hÊ ƒôû ßkÆ­xÊ ü Ó/Æ­€Ê ƒ8ü ßkÆ­Ê bü Ó/Æ­˜Ê ƒ{ü ßkÆ­¨Ê –ü Ó/Æ­°Ê ƒ±ü ßkÆ­ÀÊ Îü Ó/Æ­ÈÊ ƒêü ßkÆ­ØÊ ý Ó/Æ­àÊ ƒ%ý ßkÆ­ðÊ Dý Ó/Æ­øÊ ƒ_ý ßkÆ­Ë |ý Ó/Æ­Ë ƒ˜ý ßkÆ­ Ë ¶ý Ó/Æ­(Ë ƒÈý ßkÆ­8Ë Üý Ó/Æ­@Ë ƒþ ßkÆ­PË (þ Ó/Æ­XË ƒ:þ ßkÆ­hË Nþ Ó/Æ­pË ƒ_þ ßkÆ­€Ë rþ Ó/Æ­ˆË ƒ…þ ßkÆ­˜Ë šþ Ó/Æ­ Ë ƒ³þ ßkÆ­°Ë Îþ Ó/Æ­¸Ë ƒâþ ßkÆ­ÈË øþ Ó/Æ­ÐË ƒ ÿ ßkÆ­àË $ÿ Ó/Æ­èË ƒ:ÿ ßkÆ­øË Rÿ Ó/Æ­Ì ƒeÿ ßkÆ­Ì zÿ Ó/Æ­Ì ƒÿ ßkÆ­(Ì ¢ÿ Ó/Æ­0Ì ƒ»ÿ ßkÆ­@Ì Öÿ Ó/Æ­HÌ ƒðÿ ßkÆ­XÌ  Ó/Æ­`Ì ƒ- ßkÆ­pÌ P Ó/Æ­xÌ ƒr ßkÆ­ˆÌ – Ó/Æ­Ì ƒ¼ ßkÆ­ Ì ä Ó/Æ­¨Ì ƒ ßkÆ­¸Ì " Ó/Æ­ÀÌ ƒ3 ßkÆ­ÐÌ F Ó/Æ­ØÌ ƒZ ßkÆ­èÌ p Ó/Æ­ðÌ ƒˆ ßkÆ­Í ¢ Ó/Æ­Í ƒ» ßkÆ­Í Ö Ó/Æ­ Í ƒø ßkÆ­0Í  Ó/Æ­8Í ƒ6 ßkÆ­HÍ R Ó/Æ­PÍ ƒg ßkÆ­`Í ~ Ó/Æ­hÍ ƒ’ ßkÆ­xÍ ¨ Ó/Æ­€Í ƒ¼ ßkÆ­Í Ò Ó/Æ­˜Í ƒé ßkÆ­¨Í  Ó/Æ­°Í ƒ ßkÆ­ÀÍ 4 Ó/Æ­ÈÍ ƒH ßkÆ­ØÍ ^ Ó/Æ­àÍ ƒv ßkÆ­ðÍ  Ó/Æ­øÍ ƒª ßkÆ­Î Æ Ó/Æ­Î ƒÝ ßkÆ­ Î ö Ó/Æ­(Î ƒ ßkÆ­8Î , Ó/Æ­@Î ƒA ßkÆ­PÎ X Ó/Æ­XÎ ƒ| ßkÆ­hÎ ¢ Ó/Æ­pÎ ƒÈ ßkÆ­€Î ð Ó/Æ­ˆÎ ƒ  ßkÆ­˜Î $ Ó/Æ­ Î ƒ? ßkÆ­°Î \ Ó/Æ­¸Î ƒo ßkÆ­ÈÎ „ Ó/Æ­ÐÎ ƒ— ßkÆ­àÎ ¬ Ó/Æ­èÎ ƒÂ ßkÆ­øÎ Ú Ó/Æ­Ï ƒ ßkÆ­Ï P Ó/Æ­Ï ƒx ßkÆ­(Ï ƒ†O×lÆ­0Ï ƒ¹OÁmÆ­HÏ æCV6Æ­ˆÏ æCV½sÇ­˜Ï æCVÎsÈ­èÏ æÈO×mÊ­üÏ æÈO×lË­ Ð æMùmË­HÐ æM6Í­€Ð æMnέ¤Ð …¯Œ_Ï­¬Ð Fœ½{8Ï­äÐ …¯Œ_ЭìÐ Fœ½{8Э$Ñ …¯Œ_Ñ­,Ñ Fœ½{8Ñ­dÑ …¯Œ_Ò­lÑ Fœ½{8Ò­¤Ñ …¯Œ_Ó­¬Ñ Fœ½{8Ó­Ò …¯Œ_Ô­Ò Fœ½{8Ô­4Ò …¯Œ_Õ­<Ò Fœ½{8Õ­„Ò …¯Œ_Ö­ŒÒ Fœ½{8Ö­ Ò …¯Œ_×­¨Ò Fœ½{8×­¼Ò …¯Œ_Ø­ÄÒ Fœ½{8Ø­ØÒ …¯Œ_Ù­àÒ Fœ½{8Ù­ðÒ …¯Œ_Ú­øÒ Fœ½{8Ú­8Ó …¯Œ_Û­@Ó Fœ½{8Û­LÓ …¯Œ_Ü­TÓ Fœ½{8Ü­xÓ …¯Œ_Ý­€Ó Fœ½{8Ý­œÓ …¯Œ_Þ­¤Ó Fœ½{8Þ­ÔÓ …¯Œ_ß­ÜÓ Fœ½{8ß­ Ô …¯Œ_à­Ô Fœ½{8à­DÔ …¯Œ_á­LÔ Fœ½{8á­Ô …¯Œ_â­˜Ô Fœ½{8â­ÜÔ …¯Œ_ã­äÔ Fœ½{8ã­(Õ …¯Œ_ä­0Õ Fœ½{8ä­DÕ …¯Œ_å­LÕ Fœ½{8å­€Õ …¯Œ_æ­ˆÕ Fœ½{8æ­@Ö …¯Œ_ç­HÖ Fœ½{8ç­ŒÖ …¯Œ_è­”Ö Fœ½{8è­ÌÖ …¯Œ_é­ÔÖ Fœ½{8é­× …¯Œ_ê­ × Fœ½{8ê­`× …¯Œ_ë­h× Fœ½{8ë­ × …¯Œ_ì­¨× Fœ½{8ì­Ø× …¯Œ_í­à× Fœ½{8í­4Ø …¯Œ_î­<Ø Fœ½{8î­¤Ø …¯Œ_ï­¬Ø Fœ½{8ï­üØ …¯Œ_ð­Ù Fœ½{8ð­PÙ …¯Œ_ñ­XÙ Fœ½):ñ­¬Ù …¯Œ_ò­´Ù Fœ½{8ò­lÚ …¯Œ_ó­tÚ Fœ½{8ó­¨Ú …¯Œ_ô­°Ú Fœ½{8ô­ÜÚ …¯Œ_õ­äÚ Fœ½{8õ­<Û …¯Œ_ö­DÛ Fœ½{8ö­Û …¯Œ_÷­˜Û Fœ½‹;÷­ìÛ …¯Œ_ø­ôÛ Fœ½{8ø­¬Ü …¯Œ_ù­´Ü Fœ½{8ù­èÜ …¯Œ_ú­ðÜ Fœ½{8ú­Ý …¯Œ_û­$Ý Fœ½{8û­|Ý …¯n<ü­¬Ý Fœ½Ü<®LÞ …¯Œ_®TÞ Fœ½{8® ß …¯Y=®$ß Fœ½Ü<®tß …¯Œ_®|ß Fœ½{8®¸ß …¯Œ_®Àß Fœ½=®Ìß …¯š=®üß Fœ½Õ= ®œà …¯Œ_®¤à Fœ½{8®Xá …¯4>®pá Fœ½Õ=®Àá …¯Œ_®Èá Fœ½{8®â …¯Œ_® â Fœ½{8® â …¯Œ_®(â Fœ½{8®dâ …¯Œ_®lâ Fœ½{8®œâ …¯Œ_®¤â Fœ½{8®Àâ …¯Œ_®Èâ Fœ½{8®Üâ …¯Œ_®äâ Fœ½{8®ôâ …¯Œ_®üâ Fœ½{8® ã …¯Œ_®ã Fœ½{8®Xã …¯Œ_®`ã Fœ½{8®„ã …¯Œ_®Œã Fœ½{8®Äã …¯Œ_®Ìã Fœ½{8®ä …¯Œ_®ä Fœ½{8®@ä …¯Œ_®Hä Fœ½{8®dä …¯Œ_ ®lä Fœ½{8 ®€ä …¯Œ_!®ˆä Fœ½{8!®œä …¯Œ_"®¤ä Fœ½{8"®´ä …¯Œ_#®¼ä Fœ½{8#®Œå …¯Œ_$®”å Fœ½{8$®Xæ …¯Œ_%®`æ Fœ½{8%®ç …¯Œ_&® ç Fœ½{8&®4ç …¯Œ_'®<ç Fœ½{8'®Œç …¯Œ_(®”ç Fœ½{8(®Èç …¯Œ_)®Ðç Fœ½{8)®è …¯Œ_*®è Fœ½{8*®0è …¯Œ_+®8è Fœ½{8+®hè …¯Œ_,®pè Fœ½{8,®”è …¯Œ_-®œè Fœ½{8-®°è …¯Œ_.®¸è Fœ½{8.®üè …¯Œ_/®é Fœ½{8/®˜é …¯Œ_0® é Fœ½{80®<ê …¯Œ_1®Dê Fœ½{81®Øê …¯Œ_2®àê Fœ½V?2®ìê …¯Œ_3®ôê Fœ½{83®hì …¯Œ_4®pì Fœ½‡4®|ì …¯Œ_5®„ì Fœ½{85®˜í …¯Œ_6® í Fœ½=6®¬í …¯Œ_7®´í Fœ½”7®Àí …¯Œ_8®Èí Fœ½{88®Xð …¯Œ_9®`ð Fœ½{89®Àð …¯Œ_:®Èð Fœ½{8:®ñ …¯Œ_;®ñ Fœ½{8;®<ñ …¯Œ_<®Dñ Fœ½{8<®lñ …¯Œ_=®tñ Fœ½{8=®¨ñ …¯Œ_>®°ñ Fœ½{8>®äñ …¯Œ_?®ìñ Fœ½{8?®˜ò …¯Œ_@® ò Fœ½{8@®Ôò …¯Œ_A®Üò Fœ½{8A®üò …¯Œ_B®ó Fœ½{8B®,ó …¯Œ_C®4ó Fœ½{8C®`ó …¯Œ_D®hó Fœ½{8D®Œó …¯Œ_E®”ó Fœ½{8E®üó …¯Œ_F®ô Fœ½{8F® ô …¯Œ_G®(ô Fœ½{8G®4ô …¯Œ_H®<ô Fœ½{8H®lô …¯Œ_I®tô Fœ½{8I®°ô …¯Œ_J®¸ô Fœ½{8J®Ìô …¯Œ_K®Ôô Fœ½{8K®Hö …¯Œ_L®Pö Fœ½{8L®|÷ …¯Œ_M®„÷ Fœ½{8M®Xù …¯Œ_N®`ù Fœ½{8N®lú …¯Œ_O®tú Fœ½{8O®Àú …¯Œ_P®Èú Fœ½{8P®Pü …¯Œ_Q®Xü Fœ½{8Q®dü …¯Œ_R®lü Fœ½{8R®”ü …¯Œ_S®œü Fœ½{8S®Ðü …¯Œ_T®Øü Fœ½{8T®ý …¯Œ_U®ý Fœ½{8U®Lý …¯Œ_V®Tý Fœ½{8V®xý …¯Œ_W®€ý Fœ½{8W®”ý …¯Œ_X®œý Fœ½{8X®¬ý …¯Œ_Y®´ý Fœ½{8Y®Èý …¯Œ_Z®Ðý Fœ½{8Z®þ …¯Œ_[® þ Fœ½{8[®Hþ …¯Œ_\®Pþ Fœ½{8\®lþ …¯Œ_]®tþ Fœ½{8]®äþ …¯Œ_^®ìþ Fœ½{8^®Dÿ …¯Œ__®Lÿ Fœ½{8_®xÿ …¯Œ_`®€ÿ Fœ½{8`®Ìÿ …¯Œ_a®Ôÿ Fœ½{8a®<!…¯Œ_b®D!Fœ½{8b®¸!…¯Œ_c®À!Fœ½{8c®@!…¯Œ_d®H!Fœ½{8d®Œ!…¯Œ_e®”!Fœ½{8e®Ø!…¯Œ_f®à!Fœ½{8f®!…¯Œ_g®!Fœ½{8g®ˆ!…¯Œ_h®!Fœ½{8h®´!…¯Œ_i®¼!Fœ½{8i®ð!…¯Œ_j®ø!Fœ½{8j®$!…¯Œ_k®,!Fœ½{8k®t!…¯Œ_l®|!Fœ½{8l®ð!…¯Fm® !Fœ½aFr®`!…¯Œ_t®h!Fœ½{8t®è!…¯ùFu®!Fœ½aFw®!…¯Œ_y® !Fœ½{8y®h!…¯_Gz®€!Fœ½mG|®¤!…¯Œ_®¬!Fœ½{8®Ü!…¯ÂG€®!Fœ½mG„®p!…¯Œ_‡®x!Fœ½{8‡®Ø!…¯fHˆ®!Fœ½mGŒ®|!…¯Œ_®„!Fœ½{8® !…¯Œ_®!Fœ½{8®T!…¯Œ_‘®\!Fœ½{8‘®˜!…¯Œ_’® !Fœ½{8’® !…¯Œ_“® !Fœ½{8“®T !…¯Œ_”®\ !Fœ½{8”® !…¯Œ_•®˜ !Fœ½{8•® !…¯Œ_–® !Fœ½{8–®0 !…¯Œ_—®8 !Fœ½{8—®l !…¯Œ_˜®t !Fœ½{8˜®¤ !…¯Œ_™®¬ !Fœ½{8™® !…¯Œ_š® !Fœ½{8š®, !…¯Œ_›®4 !Fœ½{8›®H !…¯Œ_œ®P !Fœ½{8œ®` !…¯Œ_®h !Fœ½{8®¬ !…¯Œ_ž®´ !Fœ½ÿož®Ì !…¯Œ_Ÿ®Ô !Fœ½{8Ÿ®è !…¯Œ_ ®ð !Fœ½ÿo ® !…¯Œ_¡® !Fœ½{8¡®$ !…¯Œ_¢®, !Fœ½ÿo¢®D !…¯Œ_£®L !Fœ½{8£®` !…¯Œ_¤®h !Fœ½ÿo¤®€ !…¯Œ_¥®ˆ !Fœ½{8¥®œ !…¯Œ_¦®¤ !Fœ½{8¦®¸ !…¯Œ_§®À !Fœ½ÿo§®Ø !…¯Œ_¨®à !Fœ½{8¨®ô !…¯Œ_©®ü !Fœ½ÿo©® !…¯Œ_ª® !Fœ½{8ª®0 !…¯Œ_«®8 !Fœ½{8«®\ !…¯Œ_¬®d !Fœ½{8¬®¤ !…¯Œ_­®¬ !Fœ½{8­®ì !…¯Œ_®®ô !Fœ½{8®®`!…¯Œ_¯®h!Fœ½{8¯®è!…¯Œ_°®ð!Fœ½{8°®¨!…¯Œ_±®°!Fœ½{8±®H!…¯Œ_²®P!Fœ½{8²®ô!…¯Œ_³®ü!Fœ½{8³®”!…¯Œ_´®œ!Fœ½{8´®0!…¯Œ_µ®8!Fœ½{8µ®Ì!…¯Œ_¶®Ô!Fœ½{8¶®p!…¯Œ_·®x!Fœ½{8·®H!…¯Œ_¸®P!Fœ½{8¸®Ø!…¯Œ_¹®à!Fœ½{8¹®!…¯Œ_º®!Fœ½{8º®,!…¯Œ_»®4!Fœ½{8»®|!…¯Œ_¼®„!Fœ½¼®!…¯Œ_½®˜!Fœ½{8½®,!…¯Œ_¾®4!Fœ½¾®@!…¯Œ_¿®H!Fœ½{8¿®°!…¯Œ_À®¸!Fœ½{8À®!…¯´NÁ®D!Fœ½(OÆ®„!…¯Œ_Ç®Œ!Fœ½{8Ç®d!…¯¸OÈ®Œ!Fœ½(OÌ®Ì!…¯Œ_Í®Ô!Fœ½{8Í®´!…¯DPήÌ!Fœ½(OЮä!…¯Œ_Ñ®ì!Fœ½{8Ñ®8!…¯_GÒ®P!Fœ½²PÔ®l!…¯Œ_Ö®t!Fœ½{8Ö®¤!…¯þP×®Ì!Fœ½²PÛ®4!…¯Œ_Ý®<!Fœ½{8Ý®¸!…¯ÔQÞ®Ø!Fœ½²Pá® !…¯Œ_㮨!Fœ½{8ã®ô!…¯Œ_ä®ü!Fœ½{8ä®D!…¯Œ_å®L!Fœ½å®X!…¯Œ_æ®`!Fœ½{8æ®À!…¯Œ_ç®È!Fœ½ç®Ô!…¯Œ_è®Ü!Fœ½{8è®x !…¯Œ_鮀 !Fœ½{8é®Ð !…¯Œ_ê®Ø !Fœ½ê®ä !…¯Œ_ë®ì !Fœ½{8뮄!!…¯Œ_쮌!!Fœ½쮘!!…¯Œ_í® !!Fœ½{8í®"!…¯Œ_î®"!Fœ½{8î®t"!…¯Œ_ï®|"!Fœ½{8ﮬ"!…¯Œ_ð®´"!Fœ½{8ð®È"!…¯Œ_ñ®Ð"!Fœ½{8ñ®ä"!…¯Œ_ò®ì"!Fœ½{8ò®#!…¯Œ_ó®#!Fœ½{8ó®#!…¯Œ_ô® #!Fœ½{8ô®d#!…¯Œ_õ®l#!Fœ½{8õ®€#!…¯Œ_ö®ˆ#!Fœ½{8ö®œ#!…¯Œ_÷®¤#!Fœ½{8÷®ô#!…¯Œ_ø®ü#!Fœ½{8ø®($!…¯Œ_ù®0$!Fœ½{8ù®p$!…¯Œ_ú®x$!Fœ½{8ú®ä$!…¯ÑZû®$%!Fœ½W[¯¤%!…¯Œ_¯¬%!Fœ½{8¯8&!…¯Œ_¯@&!Fœ½]¯|&!…¯Œ_¯„&!Fœ½®]¯°&!…¯»]¯'!Fœ½¶_¯)!…¯Q`¯4)!Fœ½W[¯€)!…¯Œ_¯ˆ)!Fœ½{8¯*!…¯Œ_¯ *!Fœ½{8¯*!…¯Œ_¯ *!Fœ½{8¯,*!…¯Œ_¯4*!Fœ½{8¯¼*!…¯Œ_¯Ä*!Fœ½{8¯d+!…¯Œ_¯l+!Fœ½{8¯ ,!…¯Œ_ ¯,!Fœ½ ¯ ,!…¯Œ_!¯(,!Fœ½{8!¯P-!…¯Œ_"¯X-!Fœ½{8"¯Ð.!…¯Œ_#¯Ø.!Fœ½{8#¯”/!…¯Œ_$¯œ/!Fœ½{8$¯(0!…¯Œ_%¯00!Fœ½{8%¯Ð0!…¯Œ_&¯Ø0!Fœ½{8&¯|1!…¯Œ_'¯„1!Fœ½{8'¯ø2!…¯Œ_(¯3!Fœ½{8(¯¤3!…¯ag)¯ä3!Fœ½”g0¯T4!…¯Œ_3¯\4!Fœ½{83¯5!…¯h4¯P5!Fœ½:h<¯ 5!…¯Œ_?¯¨5!Fœ½{8?¯¤6!…¯Œ_@¯¬6!Fœ½{8@¯¸6!…¯Œ_A¯À6!Fœ½{8A¯è6!…¯Œ_B¯ð6!Fœ½{8B¯h7!…¯Œ_C¯p7!Fœ½{8C¯œ7!…¯Œ_D¯¤7!Fœ½{8D¯à7!…¯Œ_E¯è7!Fœ½{8E¯ô7!…¯Œ_F¯ü7!Fœ½{8F¯$8!…¯Œ_G¯,8!Fœ½{8G¯<8!…¯Œ_H¯D8!Fœ½{8H¯T8!…¯Œ_I¯\8!Fœ½{8I¯l8!…¯Œ_J¯t8!Fœ½{8J¯œ8!…¯Œ_K¯¤8!Fœ½{8K¯°8!…¯Œ_L¯¸8!Fœ½{8L¯ì8!…¯Œ_M¯ô8!Fœ½{8M¯9!…¯Œ_N¯9!Fœ½{8N¯89!…¯Œ_O¯@9!Fœ½{8O¯P9!…¯Œ_P¯X9!Fœ½{8P¯ˆ9!…¯Œ_Q¯9!Fœ½{8Q¯ 9!…¯Œ_R¯¨9!Fœ½{8R¯ü9!…¯Œ_S¯:!Fœ½{8S¯t:!…¯Œ_T¯|:!Fœ½{8T¯ì:!…¯Œ_U¯ô:!Fœ½{8U¯;!…¯Œ_V¯$;!Fœ½{8V¯0;!…¯Œ_W¯8;!Fœ½{8W¯L;!…¯Œ_X¯T;!Fœ½{8X¯|;!…¯Œ_Y¯„;!Fœ½{8Y¯;!…¯Œ_Z¯˜;!Fœ½{8Z¯!…¯Œ_c¯H>!Fœ½ÿoc¯`>!…¯Œ_d¯h>!Fœ½{8d¯¼>!…¯Œ_e¯Ä>!Fœ½{8e¯ø>!…¯Œ_f¯?!Fœ½{8f¯@?!…¯Œ_g¯H?!Fœ½{8g¯T?!…¯Œ_h¯\?!Fœ½{8h¯h?!…¯Œ_i¯p?!Fœ½{8i¯0@!…¯Œ_j¯8@!Fœ½{8j¯A!…¯Œ_k¯A!Fœ½¨jk¯\A!…¯Œ_l¯dA!Fœ½–Îl¯pA!…¯Œ_n¯xA!Fœ½¿jn¯„A!…¯Œ_o¯ŒA!Fœ½ko¯äA!…¯Œ_p¯ìA!Fœ½;kp¯ B!…¯Œ_q¯(B!Fœ½{8q¯°q!Fœ½DE°˜q!…¯Œ_H° q!Fœ½{8H°8r!…¯o‚I°pr!Fœ½DO°èr!…¯Œ_R°ðr!Fœ½{8R°Üs!…¯Œ_S°äs!Fœ½{8S°t!…¯Œ_T°t!Fœ½{8T° t!…¯Œ_U°¨t!Fœ½{8U°¼t!…¯Œ_V°Ät!Fœ½{8V°u!…¯Œ_W°u!Fœ½{8W°±(Ï!Fœ½{8>±Ï!…¯Œ_?±˜Ï!Fœ½{8?±Ð!…¯Œ_@±Ð!Fœ½{8@±DÐ!…¯Œ_A±LÐ!Fœ½{8A±XÐ!…¯Œ_B±`Ð!Fœ½{8B±tÐ!…¯I“C±”Ð!Fœ½m“F±ôÐ!…¯Œ_H±üÐ!Fœ½{8H±@Ñ!…¯Œ_I±HÑ!Fœ½{8I±„Ñ!…¯Œ_J±ŒÑ!Fœ½{8J±ÔÑ!…¯Œ_K±ÜÑ!Fœ½{8K±`Ò!…¯Œ_L±hÒ!Fœ½{8L±tÒ!…¯Œ_M±|Ò!Fœ½{8M±¤Ò!…¯Œ_N±¬Ò!Fœ½{8N±àÒ!…¯Œ_O±èÒ!Fœ½{8O±\Ó!…¯Œ_P±dÓ!Fœ½{8P±´Ó!…¯Œ_Q±¼Ó!Fœ½{8Q±üÓ!…¯Œ_R±Ô!Fœ½{8R±dÔ!…¯Œ_S±lÔ!Fœ½{8S±4Õ!…¯Œ_T±<Õ!Fœ½{8T±Ö!…¯Œ_U±Ö!Fœ½{8U±lÖ!…¯Œ_V±tÖ!Fœ½{8V±ÜÖ!…¯Œ_W±äÖ!Fœ½{8W±×!…¯Œ_X±˜×!Fœ½{8X±ØØ!…¯Œ_Y±àØ!Fœ½{8Y±ŒÙ!…¯Œ_Z±”Ù!Fœ½{8Z±ìÙ!…¯Œ_[±ôÙ!Fœ½{8[±LÚ!…¯Œ_\±TÚ!Fœ½{8\±´Ú!…¯Œ_]±¼Ú!Fœ½{8]±8Û!…¯Œ_^±@Û!Fœ½{8^±|Û!…¯Œ__±„Û!Fœ½{8_±ÈÛ!…¯Œ_`±ÐÛ!Fœ½{8`±Ü!…¯Œ_a±Ü!Fœ½{8a±0Ü!…¯Œ_b±8Ü!Fœ½{8b±€Ü!…¯Œ_c±ˆÜ!Fœ½{8c±°Ü!…¯Œ_d±¸Ü!Fœ½{8d±¬Ý!…¯Œ_e±´Ý!Fœ½{8e±Þ!…¯Œ_f±Þ!Fœ½{8f±lÞ!…¯Œ_g±tÞ!Fœ½{8g±ÐÞ!…¯Œ_h±ØÞ!Fœ½{8h±Xß!…¯Œ_i±`ß!Fœ½{8i±à!…¯Œ_j± à!Fœ½{8j±Œà!…¯Œ_k±”à!Fœ½{8k± á!…¯Œ_l±á!Fœ½{8l±lá!…¯Œ_m±tá!Fœ½{8m±Ôá!…¯Œ_n±Üá!Fœ½{8n±â!…¯Œ_o±$â!Fœ½{8o±Tâ!…¯Œ_p±\â!Fœ½{8p±œâ!…¯Œ_q±¤â!Fœ½{8q±,ã!…¯Œ_r±4ã!Fœ½{8r±lã!…¯Œ_s±tã!Fœ½{8s±ôã!…¯Œ_t±üã!Fœ½{8t±$ä!…¯„Hu±4ä!Fœ½ò—v±Hä!…¯Œ_y±Pä!Fœ½{8y±Œä!…¯Œ_z±”ä!Fœ½ò—z±Üä!…¯Œ_}±ää!Fœ½{8}±ôä!…¯Œ_~±üä!Fœ½ò—~±Då!…¯Œ_±Lå!Fœ½{8±tå!…¯7˜‚±Œå!Fœ½ò—„±Øå!…¯Œ_‡±àå!Fœ½{8‡±æ!…¯L˜ˆ±,æ!Fœ½ò—бdæ!…¯Œ_±læ!Fœ½{8± æ!…¯Ûäޱ°æ!Fœ½ò—±Ìæ!…¯Œ_’±Ôæ!Fœ½{8’±üæ!…¯Û䓱 ç!Fœ½ò—”±@ç!…¯Œ_—±Hç!Fœ½{8—±¨ç!…¯Õf˜±¸ç!Fœ½ò—™±ôç!…¯Œ_œ±üç!Fœ½{8œ±,è!…¯Õf±<è!Fœ½ò—ž±„è!…¯Œ_¡±Œè!Fœ½{8¡±üè!…¯W˜¢± é!Fœ½ò—£±8é!…¯Œ_¦±@é!Fœ½{8¦±hé!…¯‹˜§±€é!Fœ½ò—©±Äé!…¯Œ_¬±Ìé!Fœ½{8¬±ê!…¯ʘ­± ê!Fœ½ò—°±xê!…¯Œ_³±€ê!Fœ½{8³±Äê!…¯%™´±ìê!Fœ½ò—¸±\ë!…¯Œ_»±dë!Fœ½{8»±´ë!…¯Œ_¼±¼ë!Fœ½{8¼±0ì!…¯Œ_½±8ì!Fœ½{8½±˜ì!…¯Œ_¾± ì!Fœ½{8¾±í!…¯Œ_¿±í!Fœ½{8¿±Xí!…¯Œ_À±`í!Fœ½{8À± í!…¯Œ_Á±¨í!Fœ½{8Á±¼í!…¯Œ_±Äí!Fœ½{8±Øí!…¯Œ_ñàí!Fœ½{8ñî!…¯Œ_ıî!Fœ½{8ı,î!…¯Œ_ű4î!Fœ½{8űXî!…¯Œ_Ʊ`î!Fœ½{8Ʊtî!…¯Œ_DZ|î!Fœ½{8DZî!…¯Œ_ȱ˜î!Fœ½{8ȱ¬î!…¯Œ_ɱ´î!Fœ½{8ɱï!…¯Œ_ʱ ï!Fœ½{8ʱˆï!…¯Œ_˱ï!Fœ½{8˱Èï!…¯Œ_̱Ðï!Fœ½{8̱ôï!…¯Œ_ͱüï!Fœ½{8ͱôð!…¯Œ_αüð!Fœ½{8αÐñ!…¯Œ_ϱØñ!Fœ½{8ϱ|ò!…¯Œ_б„ò!Fœ½{8бxó!…¯Œ_ѱ€ó!Fœ½{8ѱ¸ó!…¯Œ_Ò±Àó!Fœ½{8Ò±@ô!…¯Œ_Ó±Hô!Fœ½{8Ó±lô!…¯Œ_Ô±tô!Fœ½{8Ô±ìô!…¯Œ_Õ±ôô!Fœ½{8Õ±(õ!…¯Œ_Ö±0õ!Fœ½{8Ö±¬õ!…¯Œ_×±´õ!Fœ½{8×±ö!…¯Œ_ر˜ö!Fœ½{8ر,÷!…¯Œ_Ù±4÷!Fœ½{8Ù±Ì÷!…¯Œ_Ú±Ô÷!Fœ½{8Ú±lø!…¯Œ_Û±tø!Fœ½{8Û± ù!…¯Œ_ܱù!Fœ½{8ܱ¬ù!…¯Œ_ݱ´ù!Fœ½{8ݱ(ú!…¯âšÞ±Hú!Fœ½ùšá±dú!…¯Œ_â±lú!Fœ½{8â±¼ú!…¯Ûäã±Ìú!Fœ½ùš䱨ú!…¯Œ_å±àú!Fœ½{8å±û!…¯Œ_æ±û!Fœ½{8æ±$û!…¯Œ_ç±,û!Fœ½{8ç±Xû!…¯Œ_è±`û!Fœ½{8è±”û!…¯Œ_鱜û!Fœ½{8é±Ðû!…¯Œ_ê±Øû!Fœ½{8ê±ü!…¯Œ_ë± ü!Fœ½{8ë±Xü!…¯Œ_ì±`ü!Fœ½{8ì±èü!…¯Œ_í±ðü!Fœ½{8í±8ý!…¯Œ_î±@ý!Fœ½{8ý!…¯Œ_ï±´ý!Fœ½{8ï±ôý!…¯Kœð±þ!Fœ½ùšñ±0þ!…¯Œ_ò±8þ!Fœ½{8ò±xþ!…¯Œ_ó±€þ!Fœ½{8ó±”þ!…¯Œ_ô±œþ!Fœ½{8ô±Øþ!…¯>Ÿõ±ðþ!Fœ½eŸ÷± ÿ!…¯Œ_ù±ÿ!Fœ½{8ù±Lÿ!…¯Œ_ú±Tÿ!Fœ½eŸú±dÿ!…¯Œ_ü±lÿ!Fœ½{8ü±|ÿ!…¯Ûäý±Œÿ!Fœ½¾Ÿþ±¤ÿ!…¯Œ_²¬ÿ!Fœ½{8²äÿ!…¯Œ_²ìÿ!Fœ½{8²"…¯ìŸ² "Fœ½¾Ÿ²ˆ"…¯Œ_²"Fœ½{8²ð"…¯  ²"Fœ½¾Ÿ ²<"…¯Œ_ ²D"Fœ½{8 ²¤"…¯I ²Ä"Fœ½¾Ÿ²,"…¯Œ_²4"Fœ½{8²"…¯Œ_²"Fœ½{8²T"…¯Œ_²\"Fœ½{8²”"…¯Œ_²œ"Fœ½{8²è"…¯Œ_²ð"Fœ½{8²€"…¯Œ_²ˆ"Fœ½{8² "…¯Œ_²("Fœ½{8²”"…¯ù ²Ä"Fœ½ùš²"…¯Œ_ ²"Fœ½{8 ²”"…¯Œ_!²œ"Fœ½{8!²Ð"…¯Œ_"²Ø"Fœ½{8"²è"…¯Œ_#²ð"Fœ½{8#²ü"…¯Œ_$²"Fœ½{8$²,"…¯Œ_%²4"Fœ½{8%²D"…¯Œ_&²L"Fœ½{8&²”"…¯Œ_'²œ"Fœ½{8'²¬"…¯Œ_(²´"Fœ½{8(²à"…¯Œ_)²è"Fœ½{8)²"…¯Œ_*² "Fœ½{8*² "…¯Œ_+² "Fœ½{8+² "…¯Œ_,² "Fœ½{8,²ˆ "…¯Œ_-² "Fœ½{8-² "…¯Œ_.²$ "Fœ½{8.²Ä "…¯Œ_/²Ì "Fœ½{8/²` "…¯Œ_0²h "Fœ½{80²Ì "…¯Œ_1²Ô "Fœ½{81²h "…¯Œ_2²p "Fœ½{82²˜ "…¯Œ_3²  "Fœ½{83²¬ "…¯Œ_4²´ "Fœ½{84²ä "…¯Œ_5²ì "Fœ½{85²("…¯Œ_6²0"Fœ½{86²€"…¯Œ_7²ˆ"Fœ½{87²Ø"…¯Œ_8²à"Fœ½{88²"…¯Œ_9²"Fœ½{89²X"…¯Œ_:²`"Fœ½{8:²¬"…¯Œ_;²´"Fœ½{8;²Ä"…¯Œ_<²Ì"Fœ½{8<²"…¯Œ_=²"Fœ½{8=²d"…¯Œ_>²l"Fœ½{8>²Ì"…¯Œ_?²Ô"Fœ½{8?²("…¯Œ_@²0"Fœ½{8@²"…¯ލA²¸"Fœ½ùšE²ô"…¯Œ_F²ü"Fœ½{8F²˜"…¯[©G²¸"Fœ½ùšJ²ô"…¯Œ_K²ü"Fœ½{8K²Œ"…¯¼©L²¤"Fœ½ùšN²à"…¯Œ_O²è"Fœ½{8O²<"…¯Œ_P²D"Fœ½{8P²¤"…¯Œ_Q²¬"Fœ½{8Q²ü"…¯Œ_R²"Fœ½{8R²0"…¯Œ_S²8"Fœ½{8S²L"…¯Œ_T²T"Fœ½{8T²d"…¯Œ_U²l"Fœ½{8U²°"…¯Œ_V²¸"Fœ½{8V²ü"…¯Œ_W²"Fœ½ªW²¤"…¯Œ_X²¬"Fœ½{8X²ä"…¯Œ_Y²ì"Fœ½{8Y² "…¯Œ_Z²("Fœ½{8Z²8"…¯Œ_[²@"Fœ½{8[²t"…¯Œ_\²|"Fœ½{8\²"…¯Œ_]²˜"Fœ½{8]²"…¯Œ_^² "Fœ½{8^²"…¯Œ__² "Fœ½{8_²,"…¯Œ_`²4"Fœ½{8`²˜"…¯Œ_a² "Fœ½{8a²"…¯Œ_b² "Fœ½{8b²„"…¯Œ_c²Œ"Fœ½{8c²D"…¯Œ_d²L"Fœ½{8d²ð"…¯Œ_e²ø"Fœ½{8e²À"…¯Œ_f²È"Fœ½{8f²L"…¯Œ_g²T"Fœ½{8g²Ô"…¯Œ_h²Ü"Fœ½{8h²D"…¯Œ_i²L"Fœ½{8i²´"…¯Œ_j²¼"Fœ½{8j²Ð"…¯Œ_k²Ø"Fœ½{8k²$"…¯Œ_l²,"Fœ½{8l²@"…¯Œ_m²H"Fœ½{8m²¨"…¯Œ_n²°"Fœ½{8n²¼"…¯Œ_o²Ä"Fœ½{8o²4"…¯Œ_p²<"Fœ½{8p²È"…¯Œ_q²Ð"Fœ½{8q²8 "…¯Œ_r²@ "Fœ½­r²L "…¯Œ_s²T "Fœ½{8s²à "…¯Œ_t²è "Fœ½{8t²(!"…¯Œ_u²0!"Fœ½{8u²d!"…¯Œ_v²l!"Fœ½{8v²˜!"…¯Œ_w² !"Fœ½{8w²h""…¯Œ_x²p""Fœ½{8x²À""…¯Œ_y²È""Fœ½{8y²#"…¯Œ_z²#"Fœ½{8z²Ì#"…¯Œ_{²Ô#"Fœ½{8{²$"…¯Œ_|²$$"Fœ½{8|²X$"…¯Œ_}²`$"Fœ½{8}²¨$"…¯Œ_~²°$"Fœ½{8~²Ä$"…¯Œ_²Ì$"Fœ½{8²%"…¯Œ_€²$%"Fœ½{8€²Ì%"…¯Œ_²Ô%"Fœ½{8²p&"…¯Œ_‚²x&"Fœ½{8‚²Œ&"…¯Œ_ƒ²”&"Fœ½{8ƒ²Ð&"…¯Œ_„²Ø&"Fœ½{8„²\'"…¯Œ_…²d'"Fœ½{8…²˜'"…¯Œ_†² '"Fœ½{8†²Ô'"…¯Œ_‡²Ü'"Fœ½{8‡²("…¯Œ_ˆ²("Fœ½{8ˆ²8("…¯Œ_‰²@("Fœ½{8‰²x("…¯Œ_в€("Fœ½{8вX)"…¯Œ_‹²`)"Fœ½{8‹²t)"…¯Œ_Œ²|)"Fœ½{8Œ²Ä)"…¯Œ_²Ì)"Fœ½{8²*"…¯Œ_޲*"Fœ½{8޲€*"…¯Œ_²ˆ*"Fœ½{8²$+"…¯Œ_²,+"Fœ½{8²@+"…¯Œ_‘²H+"Fœ½{8‘²¼+"…¯Œ_’²Ä+"Fœ½{8’²ü+"…¯Œ_“²,"Fœ½{8“²,"…¯Œ_”²,"Fœ½{8”²$,"…¯Œ_•²,,"Fœ½{8•²8,"…¯Œ_–²@,"Fœ½{8–²L,"…¯Œ_—²T,"Fœ½{8—²Ô,"…¯Œ_˜²Ü,"Fœ½{8˜²<-"…¯Œ_™²D-"Fœ½{8™²Ô-"…¯Œ_š²Ü-"Fœ½{8š²."…¯Œ_›² ."Fœ½{8›² ."…¯Œ_œ²(."Fœ½{8œ²/"…¯Œ_²/"Fœ½{8² /"…¯Œ_ž²¨/"Fœ½{8ž²0"…¯Œ_Ÿ²$0"Fœ½{8Ÿ²˜0"…¯Œ_ ² 0"Fœ½{8 ²$1"…¯Œ_¡²,1"Fœ½{8¡²È1"…¯Œ_¢²Ð1"Fœ½{8¢²ä1"…¯Œ_£²ì1"Fœ½{8£²Œ2"…¯Œ_¤²”2"Fœ½{8¤²ø2"…¯Œ_¥²3"Fœ½{8¥²3"…¯Œ_¦²3"Fœ½{8¦²(4"…¯Œ_§²04"Fœ½{8§²ø4"…¯Œ_¨²5"Fœ½{8¨²85"…¯Œ_©²@5"Fœ½{8©²T5"…¯Œ_ª²\5"Fœ½{8ª²|5"…¯Œ_«²„5"Fœ½{8«²´5"…¯Œ_¬²¼5"Fœ½{8¬²6"…¯Œ_­² 6"Fœ½{8­²\6"…¯Œ_®²d6"Fœ½{8®²œ6"…¯Œ_¯²¤6"Fœ½{8¯²Ø6"…¯Œ_°²à6"Fœ½{8°²7"…¯Œ_±² 7"Fœ½{8±²07"…¯Œ_²²87"Fœ½{8²²d7"…¯Œ_³²l7"Fœ½{8³²Ô7"…¯Œ_´²Ü7"Fœ½{8´²<8"…¯Œ_µ²D8"Fœ½{8µ²¼8"…¯Œ_¶²Ä8"Fœ½{8¶²(9"…¯Œ_·²09"Fœ½{8·²À9"…¯Œ_¸²È9"Fœ½{8¸²:"…¯Œ_¹²$:"Fœ½{8¹²;"…¯Œ_º²;"Fœ½{8º²X<"…¯Œ_»²`<"Fœ½{8»²H="…¯Œ_¼²P="Fœ½{8¼²ð="…¯Œ_½²ø="Fœ½{8½²Ð>"…¯Œ_¾²Ø>"Fœ½{8¾²d?"…¯Œ_¿²l?"Fœ½{8¿²T@"…¯Œ_À²\@"Fœ½{8À²p@"…¯Œ_Á²x@"Fœ½{8Á²À@"…¯Œ_²È@"Fœ½{8²LA"…¯Œ_òTA"Fœ½{8òhA"…¯Œ_IJpA"Fœ½{8IJÀA"…¯Œ_ŲÈA"Fœ½{8Ų(B"…¯Œ_Ʋ0B"Fœ½{8ƲlB"…¯Œ_DztB"Fœ½{8Dz¸B"…¯Œ_ȲÀB"Fœ½{8ȲôB"…¯Œ_ɲüB"Fœ½{8ɲ4C"…¯Œ_ʲ³ÈX"Fœ½{8>³àX"…¯Œ_?³èX"Fœ½{8?³ôX"…¯Œ_@³üX"Fœ½{8@³Y"…¯Œ_A³Y"Fœ½{8A³(Y"…¯Œ_B³0Y"Fœ½{8B³ ”¶q³¸_"H §¶r³`"> ê¶u³ì`" w·}³b"– »·‡³Hb"Þ ¸’³\b"è G¸“³Äb" ¸™³Hc" G¸ž³ c"/ 两³ d"P ¹«³d"j Ù˜­³4d"w ,¹®³8e"— ?¹²³@e"¨ E¹²³He"Ç O¹²³Te"Ö e¹³³xe"â p¹´³„e" |¹µ³°e"" º·³f"M ‘º¸³lf"„ Q»¹³èf"  ß»º³|g"É 1¼»³¸g"î u¼¼³h" ò¼½³dh"< T½¾³¤h"e ½½¿³ôh"Ž S¾À³Ti"¹ ‘ºÁ³°i"â Ú¾³ j"  ‘ºóhj"5 ‡¿ijk"] ò¼ųpk" /ÀƳèk"° éÀdzxl"â Ú¾ȳÔl"  ŒÁɳLm"1 ÙÁʳˆm"E ýÁ˳Àm"p #Âγ´€…"æMùm>´ †"æMCÊ@´†"æMnA´´†"…¯VÊB´ì†"Fؤ”ÊH´ø‡"FskŒ_I´œˆ"Fê¤ßkI´Ðˆ"Fù¤êkI´Üˆ"F ¥ ÊI´üˆ"…¯«ÊI´‰"Fœ½¾ÊK´L‰"…¯MnL´\‰"Fœ½¾ÊM´t‰"…¯ÛÊN´ô‰"Fؤ#Ë\´(‹"FskŒ_]´Ô‹"Fê¤ßk]´ Œ"Fù¤8Ë]´Œ"F ¥GË]´hŒ"…¯Õf]´xŒ"Fœ½„E^´°Œ"…¯Œ__´¸Œ"Fœ½ã _´¼Œ"…¯:¥`´ÜŒ"Fœ½„Ec´"…¯Ç‘d´,"Fœ½æbe´8"…¯:¥f´X"Fœ½„Ei´˜"…¯Ç‘j´¨"Fœ½æbk´´"…¯sËl´Ü"Fœ½„Ep´ Ž"…¯Ç‘q´0Ž"Fœ½æbr´<Ž"…¯Œ_s´DŽ"Fœ½‹Ës´TŽ"…¯Œ_t´\Ž"Fœ½ :t´hŽ"…¯Œ_u´pŽ"Fœ½‹Ëu´€Ž"…¯Œ_v´ŒŽ"ᶪ¤Ëv´ØŽ"áñª¾Ëw´4"]N_y´@"…¯Œ_y´H"Ì ÐËy´P"ƒÚ ßky´\"ê ØËy´h"ƒõ ßk{´t"ƒ†O×l{´"ƒ¹OÁm{´¨"æÈO×m{´ "æÈO×l|´"æMùm|´¸"ÁMÐË~´À"éZvÌ~´Ð"ƒ ®Ì€´ ‘"ƒ ÜÌ´P‘"ƒ" üÌ‚´”‘"æM#̓´$’"æMn„´H’"…¯Œ_…´P’"…¯©Í…´h’"ƒQÇ͇´p’"ƒUM×͇´x’"…¯H·´ˆ’"…¯QΈ´˜’"†QÇ͉´¨’"†UM×͉´¸’"…¯ZΉ´Ð’"Fœ½å΋´t“"…¯ÏŒ´“"ƒž[ ßkŽ´¬“"ƒJ ßkŽ´È“"ƒåLßkŽ´Ø“"ƒYB ÓlŽ´è“"ƒ“mÓlŽ´ø“"ƒ°LßkŽ´”"ƒ +ÏŽ´$”"ƒ× 3ÏŽ´@”"ƒ‘FÏŽ´\”"ƒå YÏŽ´x”"ƒï lÏŽ´””"ƒø Ï´°”"ƒ ’Ï´Ì”"ƒ ¥Ï´è”"ƒ" ¸Ï´•"ƒúˆËÏ´ •"ƒ; 3Ï‘´<•"ƒ, 3Ï‘´X•"ƒM èÏ‘´t•"ƒ÷LñÏ’´”•"ƒ>MñÏ’´°•"ƒ[ Ð’´Ì•"ƒo ñÏ“´è•"ƒ*M3Ï“´–"ƒ~ Г´ –"ƒ® ßk–´<–"ƒ¹ ßk–´L–"ƒ¬øßk–´\–"ƒ¼Lßk–´l–"ƒÈLßk–´|–"ƒÐ ßk–´Œ–"ƒÝ ßk–´œ–"ƒWðßk–´¬–"ƒ“‚ßk–´¼–"ƒV[ ßk–´Ì–"ƒ­‚ßk–´Ü–"ƒð ×l–´ì–"ƒý ×l–´ü–"ƒ êk–´—"ƒ, ñÏ–´(—"éZ+Ж´8—"B ;И´L—"V eЛ´¬—"b wд¼—"r ‚О´Ô—"ƒ{ êkž´à—"ÆMnž´˜"ÆÈO×lŸ´ ˜"ƒ `ÄŸ´4˜"ƒ ŠÐŸ´H˜"ƒ† ’П´T˜"’ šÐŸ´d˜"Ÿ ¬Ð¡´œ˜"Áµ ÄУ´°˜"Á- ËФ´Ä˜"Á— ÜÐ¥´Ø˜"ƒö äЦ´Æ ËЦ´Æ7 ÜЧ´ÆK ÄШ´Æx ìЩ´è˜"éZ#Ñ«´™"…¯?Ѭ´ ™"ƒÛÓl®´0™"ƒHœ ñÏ®´L™"Áµ ÄЮ´`™"Á- ËЯ´t™"Á— Üа´ˆ™"Á¸ ìб´œ™"ƒö äг´¬™"…¯Vѳ´È™"ƒÛÓlµ´Ø™"ƒH ßkµ´è™"ƒR ßkµ´ø™"ƒ¨ûßkµ´š"ƒ Ámµ´š"ƒ[ ñϵ´8š"éZbѵ´Hš"V ‹Ñ·´¨š"ƒ{ ѹ´´š"ÆMn¹´äš"ÆÈO×lº´ôš"Áµ Äк´›"Á- Ëл´›"Á— Üм´0›"Á¸ ìн´D›"ƒö äп´T›"…¯½Ñ¿´h›"ƒt÷ÕÁ´x›"ƒ“mÓlÁ´ˆ›"ƒ ÑÑÁ´œ›"éZÙÑ´¬›"ƒ{ ’ËÄ´¸›"ÆMnÄ´è›"ÆÈO×lÅ´ø›"…¯ÒÅ´œ"ƒ† ’ÐÇ´ œ"ƒö ßkÇ´0œ"ƒ1þßkÇ´@œ"ƒ  ßkÇ´Pœ"ƒ ßkÇ´`œ"ƒ. ßkÇ´pœ"ƒþßkÇ´€œ"ƒþßkÇ´œ"ƒÐ ßkÇ´ œ"ƒ"þßkÇ´°œ"ƒF ßkÇ´Àœ"ƒ,ƒßkǴМ"ƒV ÒÇ´ìœ"ƒ*M3ÏÇ´"ƒ{ ÒÇ´"d RÒÇ´<"Ÿ ƒÒÈ´t"…¯¦ÒÊ´"éZ²ÒÌ´ "V ÛÒδž"ƒÚßkдž"ƒ1þßkд ž"ƒéßkд0ž"ƒ‹ ßkд@ž"ƒ™ ÁmдPž"ƒjñÏдpž"ƒ{ íÒд|ž"ƒÐ ßkдŒž"ƒ  ßkдœž"ƒ­ ßkд¬ž"ƒ ßkд¼ž"ƒ. ßkд̞"ÆMnдüž"ÆÈO×lÑ´ Ÿ"…¯ ÓÑ´(Ÿ"ƒy` ñÏÓ´HŸ"éZÓÓ´XŸ"V BÓÕ´¸Ÿ"ƒ{ Á×´ÄŸ"ƒÉ ×l×´ÔŸ"ÆMn×´ "ÆÈO×lØ´ "…¯lÓØ´0 "ƒù xÓÚ´L "ƒ xÓÚ´h "ƒ ßkÚ´x "ƒ ßkÚ´ˆ "ƒ, ÒÚ´¤ "ƒ? ñÏÚ´Ä "éZ€ÓÚ´Ô "V ©ÓÜ´4¡"ƒ{ »ÓÞ´@¡"ÆMnÞ´p¡"ÆÈO×lß´€¡"d úÓß´¨¡"Ÿ +Ôà´à¡"…¯NÔâ´ü¡"ƒ2xÓä´¢"ƒ?xÓä´4¢"ƒa ñÏä´T¢"éZZÔä´d¢"V ƒÔæ´Ä¢"ƒ{ •Ôè´Ð¢"ÆMnè´£"ÆÈO×lé´£"d ÔÔé´8£"Ÿ Õê´p£"…¯#Õì´„£"éZ/Õî´”£"V XÕð´ô£"ƒ{ ò¼ ò´¤"ÆMnò´0¤"ÆÈO×ló´@¤"…¯Œ_ó´H¤"Fœ½ä9 ó´T¤"…¯Œ_ô´\¤"Fœ½ä9 ô´h¤"…¯ŽLõ´x¤"Fœ½’Õö´¤¤"…¯ŽL÷´´¤"Fœ½ø¼ ø´Ô¤"…¯Œ_ù´Ü¤"Fœ½ŸÕù´è¤"…¯Œ_û´ð¤"Fœ½·Õû´,¥"…¯Œ_ü´4¥"Fœ½ûÕü´`¥"…¯Œ_ý´h¥"Fœ½$Öý´´¥"…¯Œ_þ´¼¥"Fœ½?Öþ´¦"…¯Œ_ÿ´¦"Fœ½?Öÿ´l¦"…¯Œ_µt¦"Fœ½€Öµà¦"…¯Œ_µè¦"Fœ½¾Öµd§"…¯ÚÖµ€§"Ḡìе¸§"áµ Äеø§"á- Ëе@¨"á— Üеt¨"…¯Œ_ µ|¨"Fœ½B× µÜ¨"…¯Œ_ µä¨"Fœ½Q× µð¨"…¯Œ_ µø¨"Fœ½Q× µ©"…¯Œ_ µ ©"Fœ½\× µl©"…¯Œ_ µt©"Fœ½k× µ€©"…¯Œ_µˆ©"Fœ½k×µ”©"…¯Œ_µœ©"Fœ½v×µü©"…¯Œ_µª"Fœ½…×µª"…¯Œ_µª"Fœ½…×µ$ª"…¯×µ4ª"Fœ½™×µLª"…¯®×µ\ª"Fœ½™×µtª"…¯·×µ„ª"Fœ½™×µœª"…¯Æ×µ¸ª"ƒø‰ñϵԪ"ƒ{ Ò×µàª"ƒ† ’еìª"ƒ% Ólµüª"éZØ×µ«"V ö×µ|«"ÆMnµ¬«"ÆÈO×lµ¼«"…¯ØµØ«"ƒø‰ñÏ!µô«"ƒÛÓl!µ¬"ƒa8 ßk!µ¬"ƒ{ 'Ø!µ ¬"ƒ† ’Ð!µ,¬"éZ-Ø!µ@¬"D JØ#µ\¬"V qØ%µ¼¬"ÆMn'µì¬"ÆÈO×l(µü¬"…¯šØ(µ4­"Fؤר.µü­"FskŒ_/µ ®"Fê¤ßk/µÔ®"Fù¤åØ/µà®"F ¥íØ/µ¯"…¯šØ/µ<¯"Fؤר5µ°"FskŒ_6µ¨°"Fê¤ßk6µÜ°"Fù¤åØ6µè°"F ¥íØ6µ ±"…¯Ù6µ<±"FؤNÙ;µ²"FskŒ_<µ¤²"Fê¤ßk<µØ²"Fù¤Ò×<µä²"F ¥ZÙ<µ³"…¯ŽL<µ³"Fœ½Ìr =µ$³"…¯Œ_>µ,³"Fœ½¼>µ8³"…¯Œ_?µ@³"Fœ½lâ?µL³"…¯Œ_@µT³"Fœ½lâ@µ`³"…¯Œ_Aµh³"Fœ½ÅAµt³"…¯Œ_Bµ|³"Fœ½¼BµŒ³"…¯Œ_Cµ”³"Fœ½¼Cµ ³"…¯Œ_Dµ¨³"Fœ½¢DµÄ³"…¯Œ_EµÌ³"Fœ½¼EµÜ³"…¯eÙFµ,´"Fؤ-NµDµ"FskŒ_Oµôµ"Fê¤ßkOµ0¶"Fù¤ÓlOµ<¶"F ¥7Oµl¶"…¯Œ_Oµt¶"Fœ½¼Oµ„¶"…¯Œ_PµŒ¶"Fœ½¼Pµ˜¶"…¯Œ_Qµ ¶"Fœ½¼Qµ¬¶"…¯Œ_Rµ´¶"Fœ½Ú RµÀ¶"…¯Œ_SµÈ¶"Fœ½û# SµÔ¶"…¯Œ_TµÜ¶"Fœ½6# Tµè¶"…¯Œ_Uµð¶"Fœ½Ù Uµü¶"…¯Œ_Vµ·"Fœ½ç' Vµ·"…¯”ÙWµ˜·"Fؤ”Úfµ<»"FskŒ_gµŒ¼"Fê¤ßkgµ½"Fù¤§Úgµ ½"F ¥´ÚgµT½"…¯Œ_gµ\½"Fœ½ÆÚgµl½"…¯Œ_hµt½"Fœ½ÏÚhµ½"…¯Œ_iµ˜½"Fœ½¼iµ¤½"…¯Œ_jµ¬½"Fœ½ jµ¸½"…¯Œ_kµÀ½"Fœ½ kµÌ½"…¯Œ_lµÔ½"Fœ½3í lµà½"…¯Œ_mµè½"Fœ½3í mµô½"…¯Œ_nµü½"Fœ½*í nµ¾"…¯Œ_oµ¾"Fœ½*í oµ¾"…¯Œ_pµ$¾"Fœ½>H pµ0¾"…¯Œ_qµ8¾"Fœ½>H qµD¾"…¯Œ_rµL¾"Fœ½¼rµ\¾"…¯Œ_sµd¾"Fœ½¼sµp¾"…¯Œ_tµx¾"Fœ½¼tµ„¾"…¯Œ_uµŒ¾"Fœ½&Suµ°¾"…¯Œ_vµ¸¾"Fœ½ÜÚvµÀ¾"…¯Œ_wµÈ¾"Fœ½äwµÔ¾"…¯ŽLxµä¾"Fœ½íÚyµ¿"…¯ÁÕzµ¿"Fœ½û{µ$¿"…¯þ|µ4¿"Fœ½}µX¿"…¯Œ_~µ`¿"Fœ½¼~µl¿"…¯Œ_µt¿"Fœ½Õäµ€¿"…¯øÚ€µ¸¿"Fœ½DÛ†µÀÀ"…¯Œ_‡µÈÀ"Fœ½ß䇵ÔÀ"…¯Œ_ˆµÜÀ"Fœ½]ÛˆµàÀ"…¯Œ_‰µèÀ"Fœ½¼‰µøÀ"…¯Œ_еÁ"Fœ½¢еÁ"…¯Œ_‹µ$Á"Fœ½¼‹µ0Á"…¯Œ_Œµ8Á"Fœ½¢ŒµTÁ"…¯Œ_µ\Á"Fœ½-ùµ`Á"…¯Œ_޵hÁ"Fœ½¼޵xÁ"…¯Œ_µ€Á"Fœ½ŽÛµüÁ"…¯Œ_µÂ"Fœ½¨ÛµÂ"…¯Œ_‘µÂ"Fœ½ Ü‘µ°Â"…¯'Ü’µÈÂ"Fœ½2Ü”µüÂ"…¯Œ_•µÃ"Fœ½¼•µÃ"…¯FÜ–µ<Ã"Fœ½-ùšµ¤Ã"…¯Œ_›µ¬Ã"Fœ½&S›µÐÃ"…¯Œ_œµØÃ"Fœ½;SœµÜÃ"…¯Œ_µäÃ"Fœ½¼µôÃ"…¯Œ_žµüÃ"Fœ½WSžµ Ä"…¯Œ_ŸµÄ"Fœ½`SŸµ$Ä"…¯Œ_ µ,Ä"Fœ½åz µ<Ä"…¯Œ_¡µDÄ"Fœ½WS¡µÄ"…¯Œ_¢µ˜Ä"Fœ½¼¢µ¤Ä"…¯Œ_£µ¬Ä"Fœ½¢£µÈÄ"…¯Œ_¤µÐÄ"Fœ½¼¤µàÄ"…¯Œ_¥µèÄ"Fœ½¢¥µÅ"…¯Œ_¦µ Å"Fœ½jܦµÅ"…¯Œ_§µ$Å"Fœ½¯§µ0Å"…¯Œ_¨µ8Å"Fœ½uܨµDÅ"” †Ü©µPÅ"…¯¡Ü¬µpÅ"ƒQd ¯µxÅ"ƒUMd ¯µ€Å"ƒ!Q×Ò¯µˆÅ"ƒ†O×l¯µÅ"ƒ¹OÁm¯µ¨Å"æCVݯµDÆ"æCV½s°µTÆ"æCVÎs±µôÆ"æÈO×m³µdÇ"æÈO×l´µtÇ"æMùm´µèÇ"æMˆÝ¶µPÈ"æMn·µtÈ"ƒÂ ¼Ý¸µ|È"…¯ÎݸµŒÈ"æÈO×m¹µÀÈ"æÈO×lºµÐÈ"æMùmºµ É"GûݼµÉ"æMÞ¼µHÉ"æMn½µlÉ"…¯Œ_¾µtÉ"Fœ½lâ¾µ€É"]N_¿µÉ"t ]a¿µ˜É" 4Þ¿µ<Ê"¦ AÞÀµHÊ"¬ OÞµTÊ"µ XÞõdÊ"¿ iÞĵ|Ê"Ì wÞŵÊ"× €ÞƵ¼Ê"å †ÞǵìÊ"ï %ȵPË"ú ­Þɵ\Ë" »Þ˵pË" ÑÞ͵€Ë" õÞϵØË"& ßÒµÌ"@ (ßÕµÌ"X 6ß×µ,Ì"q ißص˜Í"‡ ©ßÙµüÎ"— ¯=Úµ8Ð"¯ ÇßÛµ`Ð"» Ôßܵ|Ð"Ç êßÞµ˜Ð"× ÷ßßµ¬Ð"è 1àâµ(Ñ" OàãµxÑ" äµ”Ñ"1 }àåµèÑ"B æµÒ"T Îáçµ¼Ô"c âéµàÔ"t wâëµÕ"’ ÏãíµD×"¢ ,ä﵄×"´ käóµ¨×"Ä ÐäôµØ"ã #åùµ˜Ø"! EåûµÙ"! ]aýµ Ù"*! ]aýµ(Ù":! ÑÞýµPÙ"M! Såÿµ˜Ù"X! kå¶ÀÙ"c! ƒå¶ôÙ"o!  å ¶0Ú"! Âå¶xÚ"! éå¶ŒÚ"›! 涸Ú"©! æ¶ÈÚ"³! *æ"¶ìÚ"½! Fæ&¶Û"Ç! gæ+¶@Û"Ñ! æ1¶pÛ"Û! ¸æ8¶„Û"ì! Ôæ<¶œÛ"ý! ¸æ@¶°Û" " ðæD¶ÐÛ"!" çI¶üÛ"8" YçP¶@Ü"R" ¯çY¶”Ü"l" Ôæd¶XÝ"}" «°h¶hÝ"‡" ,®i¶xÝ"”" 8èj¶¼Ý"Ÿ" …èl¶äß"·" …èp¶ôá"Í" #ét¶Xâ"Ù" dév¶|ä"â" €éz¶`æ"ò" —é}¶tæ"# ¸é‚¶„æ"# =ê„¶ç"<# •ꈶpç"[# ë•¶€ç"q# ë–¶ˆç"…# ë–¶ç"ž# ë–¶ ç"²# ë—¶°ç"Æ# 똶Àç"Ø# ë™¶Èç"ï# ë™¶Ðç"$ %ë™¶äç"$ /ëš¶è" $ ;뜶(è"<$ J뜶<è"@$ Të¶Tè"k:`ë ¶lè"E$ „뢶Àè"h$ Žë¢¶Ðè"$ ”뢶äè"¬$ «ë¤¶øè"½$ à즶`ï"Ë$ ¯=¨¶Œï"…¯Œ_©¶Üï"ƒ,% ^©¶ôï"ƒ9% íª¶ð"ƒG% )dñ"ƒ`% 3î­¶€ñ"ƒ)Œ_¯¶„ñ"…¯H”ñ"Fœ½3î°¶¤ñ"…¯Hî²¶´ñ"Fœ½hî³¶Üñ"…¯sî´¶ôñ"Fœ½Šî¶¶$ò"…¯Hî·¶4ò"Fœ½˜î¸¶\ò"…¯Hî¹¶lò"Fœ½´îº¶”ò"…¯^»¶¤ò"Fœ½Äî¼¶Ìò"…¯^½¶Üò"Fœ½Òî¾¶ìò"…¯^¿¶üò"Fœ½ÄîÀ¶$ó"|% ãîÁ¶,ó"…¯¶V ¶<ó"ƒqP¹¤öDó"ƒ†O×löLó"ƒ¹OÁmödó"æCV'ïö¨ó"æCV½sͼó"æCVÎsŶô"æÈO×mǶLô"æÈO×lȶ\ô"æMùmȶ ô"ÁMKïʶ¨ô"†% SïʶÐô"9oï̶ õ"æM|ïͶLõ"æMnζpõ"…¯Œ_϶|õ"ÁMKï϶˜õ"]N_϶¨õ"…¯Œ_϶°õ"Fœ½òú϶¼õ"]N_жÈõ"…¯Œ_жÐõ"& •ïжÜõ"ƒ& ßkÒ¶èõ"0& §ïÒ¶ôõ"ƒ=& ßkÔ¶ö"M& ¹ïÔ¶ö"ƒ`& ßkÔ¶ö"ƒ†O×lÔ¶<ö"ƒ¹OÁmÔ¶Tö"æÈO×mÔ¶÷"æÈO×lÕ¶$÷"æMùmÕ¶<ø"ƒu& M\×¶Äø"~& ~ð×¶äø"ÁM¹ïÙ¶ìø"†% •ïÙ¶øø"æM¸ðÛ¶ðù"æMnܶú"…¯Éðݶ,ú"ƒQ×ðß¶4ú"ƒUM×ðß¶<ú"…¯/ñß¶Tú"ƒQù¼á¶\ú"ƒUM=ñá¶dú"…¯Œ_á¶lú"…¯×ñá¶|ú"†Q×ðâ¶Œú"†UM×ðâ¶œú"…¯àñⶬú"†Qù¼ã¶¼ú"†UM=ñã¶Ìú"…¯ðñã¶Üú"]N_ä¶ôú"…¯¹nä¶û"^' òå¶ û"ƒe' ßkå¶û"n' òå¶ û"ƒª' ßkå¶,û"ƒ†O×lå¶4û"ƒ¹OÁmå¶Lû"æCV=òå¶Œû"æCV½sæ¶œû"æCVÎsç¶ìû"æÈO×mé¶ü"æÈO×lê¶$ü"æMùmê¶`ü"æMPò춘ü"æMní¶¼ü"…¯K¥î¶Øü"ƒï' Ólð¶äü"ƒú' ‡ð¶ðü"ÆÒvÓlð¶üü"9( {òð¶ý"…¯•òò¶ ý"ƒQ\Kô¶(ý"ƒUM«òô¶0ý"ƒ†O×lô¶8ý"ƒ¹OÁmô¶Pý"ƒ}l‡ô¶hþ"ƒN( \Kô¶tþ"ƒV( ßkô¶ þ"ƒt( ‡ô¶Hÿ"]N_ô¶`ÿ"…¯¹nô¶pÿ"û( cóõ¶xÿ"ƒ ) ßkõ¶„ÿ") cóõ¶Œÿ"ƒ3) ßkõ¶˜ÿ"ƒ†O×lõ¶ ÿ"ƒ¹OÁmõ¶¸ÿ"æCV˜óõ¶øÿ"æCV½sö¶#æCVÎs÷¶X#æÈO×mù¶€#æÈO×lú¶#æMùmú¶Ì#æM«óü¶#æMný¶(#‹3 ´óþ¶4#…¯Çó·T#ƒQ˜G·\#ƒUMçS ·d#ƒ!Qßk·l#ƒ†O×l·t#ƒ¹OÁm·Œ#ƒ}l‡·œ#]N_·¬#…¯¹n·¼#O† ô·Ä#ƒX† ßk·Ð#ï„ ô·Ø#ƒ÷„ ßk·ä#… ô·ì#ƒ … ßk·ø#… %ô·#ƒ… ßk· #*… .ô·#ƒ3… ßk · #?… 7ô ·(#ƒI… ßk ·4#V… @ô ·<#ƒ_… ßk ·H#k… Iô ·P#ƒu… ßk ·\#‚… Rô ·d#ƒ‹… ßk ·p#—… [ô ·x#ƒ¡… ßk·„#®… Rô·Œ#ƒ¸… ßk·˜#Å… [ô· #ƒÐ… ßk·¬#Þ… dô·´#ƒè… ßk·À#õ… mô·È#ƒÿ… ßk·Ô# † vô·Ü#ƒ† ßk·è#6† ô·ð#ƒA† ßk·ü#U) Šô·#ƒ`) ßk·#† ˜ô·#ƒ)† ßk·(#òŒ ¦ô·4#ƒûŒ ßk·@# µô·H#ƒ ßk·T#n) ¿ô·`#ƒk= ßk·l#ƒ†O×l·t#ƒ¹OÁm·Œ#ƒ±Šþô·#…¯št·(#ƒqPßk·0#…¯1Œ ·@#ƒqP6Œ ·H#…¯i†·X#ƒqP† ·`#…¯¿Œ ·p#ƒqPÄŒ !·x#…¯~†!·ˆ#ƒqP "·#…¯¹n"· #ƒqP×l#·¨#…¯’ #·¸#ƒqP— $·À#…¯ƒ†$·Ð#ƒqPàc%·Ø#…¯ï# %·ì#ƒqPè &·ô#…¯ƒ†&·#ƒqPàc'·#…¯ï# '·$#ƒqPè (·,#…¯ߎ (·@#ƒqPäŽ )·H#…¯, )·\#ƒqPû™*·d#…¯q *·x#ƒqPßÏ +·€#…¯ú +·”#ƒqP ,·œ#…¯È",·°#ƒqP/-·¸#…¯K¥-·Ð#ƒQÓl/·Ø#ƒUM‡/·à#…¯fù/·ø#ƒQ¸…1·#ƒUM‡1·#…¯¥ 1·#ƒqPMx2·$#…¯ú2·<#ƒQú4·D#ƒUMú4·L#…¯fú4·\#†qPßk5·l#…¯oú5·|#†qP6Œ 6·Œ#…¯xú6·œ#†qP†7·¬#…¯ú7·¼#†qPÄŒ 8·Ì#…¯Šú8·Ü#†qP 9·ì#…¯“ú9·ü#†qP×l:· #…¯œú:·#†qP— ;·,#…¯¥ú;·<#†qPàc<·L#…¯®ú<·\#†qPè =·l#…¯¾ú=·|#†qPàc>·Œ#…¯Îú>·œ#†qPè ?·¬#…¯×ú?·¼#†qPäŽ @·Ì#…¯àú@·Ü#†qPû™A·ì#…¯éúA·ü#†qPßÏ B· #…¯òúB·#†qP C·,#…¯ûúC·<#†qP/D·L#…¯ûD·\#†QÓlE·l#†UM‡E·|#…¯ ûE·Œ#†Q¸…F·œ#†UM‡F·¬#…¯ûF·¼#†qPMxG·Ì#…¯ûG·Ü#†QúH·ì#†UMúH·ü#]N_H· #…¯¹nH· #¾) 0ûI·( #ƒÇ) ßkK·4 #Ó) FûK·@ #ƒÞ) ßkN·L #ì) ]ûN·X #ƒó) ßkP·d #ý) FûP·p #ƒ* ßkS·| #* sûS·ˆ #ƒ* ßkV·” #)* †ûV·œ #ƒ1* ßkV·¨ #;* ŽûV·° #ƒú> ßkW·¼ #C* ›ûW·È #ƒJ* ßkY·Ô #ƒ†O×lY·Ü #ƒ¹OÁmY·ô #…¯¦nY· #ƒQ\K[· #ƒUM‡[· #…¯ü[·< #ƒQú^·D #ƒUMú^·L #ƒ!Q‡^·T #…¯ü^·l #ƒQ“ü`·t #ƒUM‡`·| #…¯ü`·œ #ƒQúc·¤ #ƒUMúc·¬ #ƒ!Q‡c·´ #…¯$ýc·Ô #ƒQúf·Ü #ƒUM×lf·ä #ƒ!Q‡f·ì #…¯Õff·ü #ƒqP‡g· #…¯Àýg· #ƒQÎýi·$ #ƒUM‡i·, #…¯þi·< #†Q\Kj·L #†UM‡j·\ #…¯ þj·l #†Qúk·| #†UMúk·Œ #†!Q‡k·œ #…¯)þk·¬ #†Q“ül·¼ #†UM‡l·Ì #…¯2þl·Ü #†Qúm·ì #†UMúm·ü #†!Q‡m· #…¯;þm· #†Qún·, #†UM×ln·< #†!Q‡n·L #…¯Kþn·\ #†qP‡o·l #…¯[þo·| #†QÎýp·Œ #†UM‡p·œ #]N_p·À #…¯¹np·Ð #§* lþq·Ø #ƒÐ ßkq·ä #²* lþq·ì #ƒ¿* ßkq·ø #Î* lþq· #ƒ­ ßkq· #ƒ†O×lq· #ƒ¹OÁmq·, #æCV¡þq·l #æCV½sr·| #æCVÎss·Ì #æÈO×mu·#æÈO×lv·#æMùmv·T#æM´þx·Œ#æMny·°#]N_z·È#…¯¹nz·Ø#Š+ Åþ{·à#ƒ¤+ ßk{·ì#À+ Åþ{·ô#ƒâ+ ßk{·#ƒ†O×l{·#ƒ¹OÁm{· #æCVúþ{·`#æCV½s|·p#æCVÎs}·À#æÈO×m·è#æÈO×l€·ø#æMùm€·4#æM ÿ‚·l#æMnƒ·#]N_„·´#…¯¹n„·Ä#P- &ÿ…·Ì#ƒh- ßk…·Ø#‚- &ÿ…·à#ƒ®- ßk…·ì#Ü- &ÿ…·ô#ƒ. ßk…·#ƒ†O×l…·#ƒ¹OÁm…· #æCV[ÿ…·`#æCV½s†·p#æCVÎs‡·À#æÈO×m‰·ü#æÈO×lŠ· #æMùmŠ·H#æMnÿŒ·€#æMn·¤#]N_Ž·¼#…¯Œ_Ž·Ä#é. ‡ÿŽ·Ì#ƒÿ. ßk·Ø#/ ”ÿ·à#ƒ5/ ßk·ì#T/ ”ÿ·ô#ƒm/ ßk·#ƒ†O×l·(#ƒ¹OÁm·@#æÈO×m· #æÈO×l·°#æMùm·L#æM’·ä#æMn“·#…¯Õf”·#ƒqP‡•· #…¯Œ_•·(#…¯Œ_•·0#…¯@•·@#†qP‡–·P#…¯P–·`#…¯`—·p#]N_˜·|#…¯Œ_˜·„#ê/ q˜·Œ#ƒ0 ßk™·˜#0 ~™· #ƒ50 ßk™·¬#ƒ†O×l™·È#ƒ¹OÁm™·à#æÈO×m™·,#æÈO×lš·<#æMùmš·¼#æMûœ·4#æMn·X#…¯Õfž·h#ƒqP‡Ÿ·p#…¯Œ_Ÿ·x#…¯ÅŸ·ˆ#†qP‡ ·˜#…¯Õ ·¨#]N_¡·´#…¯Œ_¡·¼#¿0 æ¡·Ä#ƒÙ0 ßk¢·Ð#ö0 ó¢·Ø#ƒ1 ßk¢·ä#ƒ†O×l¢·#ƒ¹OÁm¢·#æÈO×m¢·d#æÈO×l£·t#æMùm£·ô#æMp¥·l#æMn¦·#…¯Õf§· #ƒqP‡¨·¨#…¯Œ_¨·°#…¯F¨·À#†qP‡©·Ð#…¯V©·à#]N_ª·ì#…¯Œ_ª·ô# 1 gª·ü#ƒº1 ßk«·#×1 t«·#ƒô1 ßk«·#ƒ†O×l«·8#ƒ¹OÁm«·P#æÈO×m«·œ#æÈO×l¬·¬#æMùm¬·,#æMñ®·¤#æMn¯·È#…¯Õf°·Ø#ƒqP‡±·à#…¯Œ_±·è#…¯Ç±·ø#†qP‡²·#…¯×²·#]N_³·$#…¯Œ_³·,#‰2 è³·4#ƒ¥2 ßk´·@#Ä2 õ´·H#ƒã2 ßk´·T#ƒ†O×l´·p#ƒ¹OÁm´·ˆ#æÈO×m´·Ô#æÈO×lµ·ä#æMùmµ·d#æMr··Ü#æMn¸·#…¯Õf¹·#ƒqP‡º·#…¯Œ_º· #…¯Pº·0#†qP‡»·@#…¯`»·P#]N_¼·€#…¯¹n¼·#­4 q½·˜#ƒÇ4 ßk¾·¤#ä4 ~¾·¬#ƒ5 ßk¾·¸#$5 ~¾·À#ƒD5 ßk¾·Ì#f5 ~¾·Ô#ƒ‰5 ßk¾·à#®5 ~¾·è#ƒÔ5 ßk¾·ô#ƒ†O×l¾·ü#ƒ¹OÁm¾·#æÈO×m¾·€#æÈO×l¿·#æMùm¿·ü#ƒ ÐÁ· #æMì·| #æMn÷  #…¯ÕfÄ·° #ƒqP‡Å·¸ #…¯bÅ·È #†qP‡Æ·Ø #ü5 kÆ·à #…¯štÇ·ð #ƒqPßkÈ·ø #ƒ†O×lÈ·!#ƒ¹OÁmÈ·!#æCVºÈ·h!#æCV½sÉ·x!#æCVÎsÊ·Ð!#æÈO×mÌ·"#æÈO×lÍ·"#æMùmÍ·P"#æMÿÏ·ˆ"#æMnз¬"#]N_Ñ·Ð"#…¯¹nÑ·à"#Á6  Ò·è"#ƒÚ6 ßkÒ·ô"#õ6  Ò·ü"#ƒ7 ßkÒ·##7  Ò·##ƒ)7 ßkÒ·##ƒ†O×lÒ·$##ƒ¹OÁmÒ·<##æCVM Ò·|##æCV½sÓ·Œ##æCVÎsÔ·Ü##æÈO×mÖ·$#æÈO×l×·($#æMùm×·d$#æM` Ù·œ$#æMnÚ·À$#97 q Û·Ì$#…¯‡ Ý·ä$#ƒQ$gß·ì$#ƒUMÎýß·ô$#ƒ†O×lß·ü$#ƒ¹OÁmß·%#…¯¹nß·$%#V8 Æ à·0%#ƒo8 ßkâ·<%#‹8 Æ â·H%#ƒ¨8 ßkä·T%#È8 Æ ä·`%#ƒá8 ßkæ·l%#ý8 Æ æ·x%#ƒ9 ßkè·„%#49 Æ è·%#ƒN9 ßkê·œ%#k9 Æ ê·¨%#ƒ„9 ßkì·´%# 9 Ø ì·À%#ƒ¼9 ßkï·Ì%#Û9 Ø ï·Ø%#ƒö9 ßkò·ä%#: ï ò·ð%#ƒ0: ßkõ·ü%#O: õ·&#ƒc: ßkø·&#z: ø· &#ƒ’: ßkû·,&#ƒ†O×lû·4&#ƒ¹OÁmû·L&#…¯Àýû·d&#ƒQÎýý·l&#ƒUM‡ý·t&#…¯Àýý·Œ&#ƒQÎýÿ·”&#ƒUM‡ÿ·œ&#…¯Àýÿ·´&#ƒQÎý¸¼&#ƒUM‡¸Ä&#…¯Àý¸Ü&#ƒQÎý¸ä&#ƒUM‡¸ì&#…¯Àý¸'#ƒQÎý¸ '#ƒUM‡¸'#…¯Àý¸,'#ƒQÎý¸4'#ƒUM‡¸<'#…¯t ¸\'#ƒQÎý ¸d'#ƒUM’: ¸l'#ƒ!Q‡ ¸t'#…¯t  ¸”'#ƒQÎý ¸œ'#ƒUM’: ¸¤'#ƒ!Q‡ ¸¬'#…¯T  ¸Ì'#ƒQk ¸Ô'#ƒUMw ¸Ü'#ƒ!Q‡¸ä'#…¯Ü ¸(#ƒQÎý¸ (#ƒUMÑm¸(#ƒ!Q‡¸(#…¯Ü ¸<(#ƒQÎý¸D(#ƒUMÑm¸L(#ƒ!Q‡¸T(#…¯¡¸d(#†QÎý¸t(#†UM‡¸„(#…¯ª¸”(#†QÎý¸¤(#†UM‡¸´(#…¯³¸Ä(#†QÎý¸Ô(#†UM‡¸ä(#…¯¼¸ô(#†QÎý¸)#†UM‡¸)#…¯Å¸$)#†QÎý¸4)#†UM‡¸D)#…¯Î¸T)#†QÎý¸d)#†UM‡¸t)#…¯×¸„)#†QÎý¸”)#†UM’:¸¤)#†!Q‡¸´)#…¯à¸Ä)#†QÎý¸Ô)#†UM’:¸ä)#†!Q‡¸ô)#…¯é¸*#†Qk ¸*#†UMw ¸$*#†!Q‡¸4*#…¯ò¸D*#†QÎý ¸T*#†UMÑm ¸d*#†!Q‡ ¸t*#…¯û ¸„*#†QÎý!¸”*#†UMÑm!¸¤*#†!Q‡!¸´*#…¯¹n!¸Ä*#R; "¸Ì*#ƒ_; ßk#¸Ø*#Š #¸ô*#ƒ$Š ßk*¸+#o; H*¸+#ƒ; ßk1¸(+#’; ƒ1¸4+#ƒÜŒ ßk3¸@+#›; ž3¸L+#ƒ°Lßk6¸X+#¤; ±6¸d+#ƒ«; ßk9¸p+#C* È9¸|+#ƒJ* ßk;¸ˆ+#;* Ú;¸+#ƒú> ßk<¸œ+#µ; ç<¸¨+#ƒÎ; ßk?¸´+#ê; ?¸À+#ƒü; ßkA¸Ì+#< ±A¸Ø+#ƒ"< ßkD¸ä+#6< D¸ð+#ƒF< ßkG¸ü+#Y< 'G¸,#ƒk< ßkI¸,#€< 9I¸ ,#ƒ–< ßkK¸,,#¯< ±K¸8,#ƒÆ< ßkN¸D,#ƒ†O×lN¸L,#ƒ¹OÁmN¸d,#ƒ}l‡N¸¤-#…¯‚N¸´-#ƒqP‹O¸¼-#…¯ôO¸ü-#ƒQ’:V¸.#ƒUM“ÉV¸ .#ƒ!QÑmV¸.#ƒ=Q«òV¸.#ƒGQ“ÉV¸$.#ƒQQßkV¸,.#ƒ ‘‡V¸4.#…¯eV¸t.#ƒQ’:]¸|.#ƒUM‹]¸„.#ƒ!Q“É]¸Œ.#ƒ=QÑm]¸”.#ƒGQ«ò]¸œ.#ƒQQ“É]¸¤.#ƒ ‘‡]¸¬.#…¯ô]¸Ä.#ƒQ _¸Ì.#ƒUM‡_¸Ô.#…¯\_¸ô.#ƒQ×lb¸ü.#ƒUM’:b¸/#ƒ!Q‡b¸ /#…¯«b¸,/#ƒQ’:e¸4/#ƒUM’:e¸ƒ’¢¸T5#ƒEƒßk¦¸`5#@ ª¦¸p5#ƒ@ ßk¬¸|5# 鬸ˆ5#ƒ) ßk°¸”5#5 [<°¸°5#ƒ< ßk·¸¼5#+@ ·¸Ø5#ƒ6@ ßk¾¸ä5#D@ ,¾¸ð5#ƒ\@ ßkÁ¸ü5#w@ ?Á¸6#ƒƒ@ ßkŸ6#ë‰ XŸ$6#ƒõ‰ ßkʸ06#’@ qʸ@6#ƒ¡@ ßkϸL6#gŠ ’ϸ\6#ƒpŠ ßkÔ¸h6#³@ ³Ô¸t6#ƒ¹@ ßkÖ¸€6#Â@ ³Ö¸Œ6#ƒÌ@ ßkظ˜6#Š Åظ¨6#ƒ$Š ßkݸ´6#Ù@ âݸÐ6#ƒä@ ßkä¸Ü6#ò@ ä¸ì6#ƒþ@ ßk鏸6# A 6é¸7#ƒA ßkð¸ 7#a eð¸07#ƒo ßkõ¸<7#&A ³õ¸H7#ƒ.A ßk÷¸T7#̉ †÷¸d7#ƒÚ‰ ßkü¸p7#9A £ü¸Œ7#ƒGA ßk¹˜7#XA ι 7#ƒaA ßk¹¬7#R; Û¹¸7#ƒ_; ßk¹Ä7#mA ü¹Ð7#ƒ}A ßk ¹Ü7#A  ¹è7#ƒšA ßk¹ô7#§A /¹8#ƒ±A ßk¹ 8#¾A K¹8#ƒÏA ßk¹$8#ãA k¹48#ƒôA ßk¹@8#B •¹L8#ƒ#B ßk!¹X8#AB ±!¹h8#ƒ_B ßk&¹t8#€B ´&¹€8#ƒŒB ßk)¹Œ8#›B ´)¹˜8#ƒ¥B ßk,¹¤8#²B ´,¹°8#ƒ¾B ßk/¹¼8#ÍB ³/¹È8#ƒßB ßk1¹Ô8#ôB ³1¹à8#ƒC ßk3¹ì8#C «°3¹ô8#ƒ=”ßk4¹9#'C Ò4¹ 9#ƒ4C ßk8¹9#ž ê8¹$9#ƒ« ßk<¹09#DC <¹<9#ƒNC ßk@¹H9#[C «°@¹P9#ƒkC ßkA¹\9#~C &A¹h9#ƒC ßkD¹t9#£C &D¹€9#ƒ¸C ßkG¹Œ9#ÐC >G¹¨9#ƒàC ßkN¹´9#óC ³N¹À9#ƒýC ßkP¹Ì9# D aP¹Ü9#ƒ#D ßkU¹è9#?D U¹ô9#ƒ`D ßkY¹:#„D ¯Y¹ :#ƒ¤D ßk]¹:#ÇD Ë]¹(:#ƒçD ßkb¹4:# E ¸éb¹@:#ƒ!E ßkd¹L:#;E ³d¹X:#ƒME ßkf¹d:#bE ³f¹p:#ƒŽE ßkh¹|:#ƒ†O×lh¹„:#ƒ¹OÁmh¹œ:#ƒ}l‡h¹L?#ƒt( ‡h¹,D#ƒ½E ‡h¹I#ƒÕE ßkh¹I#…¯wh¹@I#ƒQääl¹HI#ƒUM‡l¹PI#ƒ!Q“Él¹XI#ƒ=Q‡l¹`I#…¯Ól¹I#ƒQääq¹˜I#ƒUMßkq¹ I#ƒ!Qääq¹¨I#ƒ=Qßkq¹°I#ƒGQ‡q¹¸I#…¯ßq¹ÐI#ƒQús¹ØI#ƒUM‡s¹àI#…¯hs¹J#ƒQääv¹J#ƒUM’:v¹J#ƒ!Q‡v¹J#…¯Çv¹8J#ƒQây¹@J#ƒUM«òy¹HJ#ƒ!Q‡y¹PJ#…¯.y¹pJ#ƒQßk|¹xJ#ƒUMâ|¹€J#ƒ!Q‡|¹ˆJ#…¯|¹°J#ƒQ €¹¸J#ƒUMÖ€¹ÀJ#ƒ!Qø€¹ÈJ#ƒ=Q‡€¹ÐJ#…¯m €¹øJ#ƒQßk„¹K#ƒUM’:„¹K#ƒ!Qä䄹K#ƒ=Q‡„¹K#…¯ä „¹PK#ƒQ’:йXK#ƒUM!й`K#ƒ!Q.;йhK#ƒ=Q8!йpK#ƒGQ‡йxK#ƒQQ‡й€K#…¯†!й¨K#ƒQt¥ ޹°K#ƒUMää޹¸K#ƒ!Qää޹ÀK#ƒ=Q‡޹ÈK#…¯"޹L#ƒQߥ •¹L#ƒUM˜G•¹L#ƒ!Qä䕹 L#ƒ=Qßk•¹(L#ƒGQä䕹0L#ƒQQä䕹8L#ƒ ‘‡•¹@L#…¯­"•¹€L#ƒQߥ œ¹ˆL#ƒUMÐ"œ¹L#ƒ!Qßkœ¹˜L#ƒ=QEfœ¹ L#ƒGQä䜹¨L#ƒQQä䜹°L#ƒ ‘‡œ¹¸L#…¯#œ¹ØL#ƒQßkŸ¹àL#ƒUMä䟹èL#ƒ!Q‡Ÿ¹ðL#…¯x#Ÿ¹M#ƒQßk£¹ M#ƒUMÅú£¹(M#ƒ!Qä䣹0M#ƒ=Q‡£¹8M#…¯ú#£¹hM#ƒQßk¨¹pM#ƒUMßk¨¹xM#ƒ!Q$¨¹€M#ƒ=Qä䨹ˆM#ƒGQ‡¨¹M#…¯†$¨¹ÀM#ƒQßk­¹ÈM#ƒUM‡­¹ÐM#ƒ!Q£$­¹ØM#ƒ=Qp\­¹àM#ƒGQ‡­¹èM#…¯(%­¹N#ƒQp\²¹ N#ƒUMää²¹(N#ƒ!Q£$²¹0N#ƒ=Qßk²¹8N#ƒGQ‡²¹@N#…¯o²¹XN#ƒQää´¹`N#ƒUM‡´¹hN#…¯o´¹€N#ƒQää¶¹ˆN#ƒUM‡¶¹N#…¯6&¶¹ÀN#ƒQMn»¹ÈN#ƒUMßk»¹ÐN#ƒ!Qä仹ØN#ƒ=Qä仹àN#ƒGQ‡»¹èN#…¯â&»¹(O#ƒQää¹0O#ƒUM‡¹8O#ƒ!QÑm¹@O#ƒ=Q«ò¹HO#ƒGQ“ɹPO#ƒQQ‡¹XO#ƒ ‘‡¹`O#…¯Š'¹O#ƒQßkǹ˜O#ƒUMßkǹ O#ƒ!Q.;ǹ¨O#ƒ=Qääǹ°O#ƒGQ‡ǹ¸O#…¯L(ǹøO#ƒQääιP#ƒUM‡ιP#ƒ!Q£$ιP#ƒ=Q‡ιP#ƒGQ‡ι P#ƒQQH¦ ι(P#ƒ ‘P¦ ι0P#…¯ý(ι`P#ƒQääÓ¹hP#ƒUMääÓ¹pP#ƒ!Q‡Ó¹xP#ƒ=QH¦ Ó¹€P#ƒGQ®¦ Ó¹ˆP#…¯oÓ¹ P#ƒQääÕ¹¨P#ƒUM‡Õ¹°P#…¯À)Õ¹àP#ƒQ%› Ú¹èP#ƒUMßkÚ¹ðP#ƒ!QääÚ¹øP#ƒ=QääÚ¹Q#ƒGQ‡Ú¹Q#…¯*Ú¹HQ#ƒQääá¹PQ#ƒUMääá¹XQ#ƒ!Q¦*á¹`Q#ƒ=Qp\á¹hQ#ƒGQßká¹pQ#ƒQQ‡á¹xQ#ƒ ‘‡á¹€Q#…¯„Há¹”Q#ƒqP˜G⹜Q#…¯{+â¹ÄQ#ƒQßkæ¹ÌQ#ƒUM‹æ¹ÔQ#ƒ!Q˜+æ¹ÜQ#ƒ=Q‡æ¹äQ#…¯þ+æ¹R#ƒQ‹é¹ R#ƒUMääé¹R#ƒ!Q‡é¹R#…¯X,é¹DR#ƒQääí¹LR#ƒUM‡í¹TR#ƒ!Q‹í¹\R#ƒ=Q‡í¹dR#…¯ä,í¹ŒR#ƒQääñ¹”R#ƒUM‹ñ¹œR#ƒ!Qääñ¹¤R#ƒ=Q‡ñ¹¬R#…¯-ñ¹ÔR#ƒQääõ¹ÜR#ƒUMâõ¹äR#ƒ!Q‡õ¹ìR#ƒ=Q‡õ¹ôR#…¯K.õ¹,S#ƒQääû¹4S#ƒUMâû¹‹ºk#ƒQ˜G‘ºk#ƒUM˜+‘ºk#ƒ!Qßk‘º k#ƒ=Qßk‘º(k#ƒGQßk‘º0k#ƒQQ‡‘º8k#…¯°>‘ºXk#ƒQÃ>”º`k#ƒUM’:”ºhk#ƒ!Q‡”ºpk#…¯?”ºk#ƒQÃ>—º˜k#ƒUM$g—º k#ƒ!Q‡—º¨k#…¯m?—º¸k#†Q˜G˜ºÈk#†UM˜+˜ºØk#†!Qßk˜ºèk#†=Qßk˜ºøk#†GQßk˜ºl#†QQ‡˜ºl#…¯v?˜º(l#†QÃ>™º8l#†UM’:™ºHl#†!Q‡™ºXl#…¯?™ºhl#†QÃ>šºxl#†UM$gšºˆl#†!Q‡šº˜l#…¯Œ_šº l#8F ˆ?šº¨l#ƒEF ßk›º´l#UF ˆ?›º¼l#ƒ`F ßkœºÈl#ƒ†O×lœºäl#ƒ¹OÁmœºül#…¯„Hœº m#ƒqP˜Gºm#…¯„Hº$m#ƒqP˜Gžº,m#…¯ƒ@žºL2»¨{#…¯YL5»È{#ƒQ’:8»Ð{#ƒUM.;8»Ø{#ƒ!Q‡8»à{#ƒ†O×l8»è{#ƒ¹OÁm8»|#(H L8»|#…¯ÂL=»@|#ƒQEfB»H|#ƒUM¦*B»P|#ƒ!QääB»X|#ƒ=Q‡B»`|#ƒGQû• B»h|#ƒ†O×lB»p|#ƒ¹OÁmB»ˆ|#ƒ2H ‡B»È|#ƒ}l‡B» }#ƒ¯H ‹B»(}#ƒ¼H ääB»0}#ƒ¹þêB»8}#ƒÈH ßkB»@}#ƒ}l‡B»H}#…¯SMB»x}#þH „MG»„}#…¯£MJ»¤}#ƒQ¾MM»¬}#ƒUMÊMM»´}#ƒ!QþêM»¼}#ƒ†O×lM»Ä}#ƒ¹OÁmM»Ü}#'ÕÿMM»~#…¯GNY»t~#ƒQ5Ye»|~#ƒUMge»„~#ƒ!Qßke»Œ~#ƒ=Qßke»”~#ƒGQ$ge»œ~#ƒQQ×ðe»¤~#ƒ ‘Sfe»¬~#ƒ"•Efe»´~#ƒ,•Æee»¼~#ƒL*ääe»Ä~#ƒW*‡e»Ì~#ƒ¦*p\e»Ô~#ƒ†O×le»Ü~#ƒ¹OÁme»ô~#ƒFI ‡e»#ƒ`I ‡e»(#ƒyI ‡e»8#ŒI ¸Ne»D#…¯ÓNh»d#ƒQ’:k»l#ƒUM‡k»t#ƒ!Q$gk»|#ƒ†O×lk»„#ƒ¹OÁmk»œ#ƒLþßkk»¤#ƒOßkk»¬#ƒÝt ßkk»´#ƒþßkk»¼#ƒïI Ok»Ä#…¯'Ok»ô#æÈO×mp»|€#æÈO×lq»Œ€#æMùmq» #æMFOs»„#æMnt»¨#]N_u»ø#…¯¹nu»‚#K _Ov»‚#ƒÔýßkv»‚#8œ _Ov»$‚#ƒ,ƒßkv»0‚#K _Ov»8‚#ƒxt ßkv»D‚#&K _Ov»L‚#ƒ6K ßkv»X‚#HK _Ov»`‚#ƒXK ßkv»l‚#jK _Ov»t‚#ƒ}K ßkv»€‚#ƒ†O×lv»ˆ‚#ƒ¹OÁmv» ‚#æÈO×mv»ô‚#æÈO×lw»ƒ#æMùmw»@ƒ#æM“Oy»xƒ#æMnz»œƒ#…¯¹n{»¬ƒ#ªK œO|»¸ƒ#ƒxt ßk»Äƒ#´K ³O»Ðƒ#ƒ­‚ßk»Üƒ#׃³O»èƒ#ƒâƒßkƒ»ôƒ#ÁK ÅOƒ»„#ƒÍK ßk…» „#ÜK ×O…»„#ƒêK ßk‡»$„#ƒ†O×l‡»,„#ƒ¹OÁm‡»D„#…¯P‡»d„#ƒQ1PŠ»l„#ƒUMJx Š»t„#ƒ!Q‡Š»|„#…¯¼©Š»”„#ƒQ’:Œ»œ„#ƒUM‡Œ»¤„#…¯¼©Œ»¼„#ƒQ’:޻Ą#ƒUM‡Ž»Ì„#…¯QŽ»ä„#ƒQ%Q»ì„#ƒUM‡»ô„#…¯}Q» …#ƒQ‹Q’»…#ƒUM‡’»…#…¯ÝQ’»,…#†Q1P“»<…#†UMJx “»L…#†!Q‡“»\…#…¯æQ“»l…#†Q’:”»|…#†UM‡”»Œ…#…¯ïQ”»œ…#†Q’:•»¬…#†UM‡•»¼…#…¯øQ•»Ì…#†Q%Q–»Ü…#†UM‡–»ì…#…¯R–»ü…#†Q‹Q—» †#†UM‡—»†#]N_—»˜†#…¯¹n—»¨†# N R˜»°†#ƒ"N ßk˜»¼†#9N R˜»Ä†#ƒHN ßk˜»Ð†#YN R˜»Ø†#ƒlN ßk˜»ä†#N R˜»ì†#ƒ‘N ßk˜»ø†#£N R˜»‡#ƒ³N ßk˜» ‡#ÅN R˜»‡#ƒÔN ßk˜» ‡#åN R˜»(‡#ƒõN ßk˜»4‡#O R˜»<‡#ƒO ßk˜»H‡#1O R˜»P‡#ƒGO ßk˜»\‡#_O R˜»d‡#ƒwO ßk˜»p‡#‘O R˜»|‡#ƒ¢O ßkš»ˆ‡#ƒ†O×lš»‡#ƒ¹OÁm𻍇#…¯YRš»À‡#ƒQ’:œ»È‡#ƒUMÊMœ»Ð‡#…¯·Rœ»à‡#†Q’:»ð‡#†UMÊM»ˆ#…¯¹n»ˆ#ÈO ÀRž»ˆ#ƒÑO ßk¡»(ˆ#ÝO ßR¡»4ˆ#ƒWðßk£»@ˆ#û? õR£»Lˆ#ƒ@ ßk¦»Xˆ#åO S¦»xˆ#ƒðO ßk®»„ˆ# D kS®»ˆ#ƒ#D ßk°»œˆ#þO }S°»¨ˆ#ƒOI ßk³»´ˆ# P ”S³»¼ˆ#ƒÉŽßk´»Èˆ#ƒ†O×l´»Ðˆ#ƒ¹OÁm´»èˆ#ƒ}l‡´»€‰#…¯ÚS´» ‰#ƒQ5Y·»¨‰#ƒUMõS·»°‰#ƒ!Q‡·»¸‰#…¯[T·»Ð‰#ƒQmT¹»Ø‰#ƒUM‡¹»à‰#…¯ÒT¹»Š#ƒQ5Y¼»Š#ƒUMíT¼»Š#ƒ!Q‡¼»Š#…¯¤U¼»lŠ#ƒQ÷UÄ»tŠ#ƒUMÿUÄ»|Š#ƒ!QVÄ»„Š#ƒ=QíTÄ»ŒŠ#ƒGQßkÄ»”Š#ƒQQßkÄ»œŠ#ƒ ‘2VÄ»¤Š#ƒ"•‡Ä»¬Š#…¯’VĻĊ#ƒQ~®ƻ̊#ƒUM‡ƻԊ#…¯WÆ»ôŠ#ƒQWÉ»üŠ#ƒUM’:É»‹#ƒ!Q‡É» ‹#…¯ÕfÉ»‹#ƒqP‡Ê»$‹#…¯ÁWÊ»4‹#†Q5YË»D‹#†UMõSË»T‹#†!Q‡Ë»d‹#…¯ÊWË»t‹#†QmTÌ»„‹#†UM‡Ì»”‹#…¯ÓWÌ»¤‹#†Q5YÍ»´‹#†UMíTͻċ#†!Q‡ͻԋ#…¯ÜWÍ»ä‹#†Q÷Uλô‹#†UMÿUλŒ#†!QVλŒ#†=QíTλ$Œ#†GQßkλ4Œ#†QQßkλDŒ#† ‘2VλTŒ#†"•‡λdŒ#…¯åWλtŒ#†Q~®Ï»„Œ#†UM‡Ï»”Œ#…¯îWÏ»¤Œ#†QWл´Œ#†UM’:лČ#†!Q‡лԌ#…¯þWлäŒ#†qP‡Ñ»ôŒ#P XÑ»#…¯,XÖ»4#ƒQ$gÛ»<#ƒUM˜GÛ»D#ƒ!QúÛ»L#ƒ=Q×ðÛ»T#ƒGQ‡Û»\#ƒ†O×lÛ»d#ƒ¹OÁmÛ»|#ƒ}l‡Û»ˆ#¥†‚XÛ»˜#…¯°Xá»Ð#ƒQ$gç»Ø#ƒUM˜Gç»à#ƒ!QÚXç»è#ƒ=Q×ðç»ð#ƒGQ5Yç»ø#ƒQQ‡绎#ƒ†O×l绎#ƒ¹OÁmç» Ž#ƒ}l‡ç»,Ž#…¯Œ_ç»4Ž#FP Yç»<Ž#ƒYP ßkè»HŽ#oP Yè»PŽ#ƒ„P ßké»\Ž#ƒ†O×lé»xŽ#ƒ¹OÁm黎#…¯kYé» Ž#ƒqPíT껨Ž#…¯ÜY껸Ž#ƒqPîYë»ÀŽ#…¯TZë»ÐŽ#†qPíTì»àŽ#…¯]Zì»ðŽ#†qPîYí»#…¯Œ_í»#ªP fZí»#ƒ¹P ßkð» #P—Zð»,#ƒZ—ßkò»8#ƒ†O×lò»T#ƒ¹OÁmò»l#ƒ}l‡ò»#…¯ÔZò»°#ƒQ÷Uõ»¸#ƒUMëZõ»À#ƒ!Q‡õ»È#…¯_Gõ»à#ƒQ7Ê÷»è#ƒUM‡÷»ð#…¯”[÷»#†Q÷Uø»#†UMëZø» #†!Q‡ø»0#…¯[ø»@#†Q7Êù»P#†UM‡ù»`#ËP ®[ù»l#…¯Î[ý»”#ƒQ/ʼœ#ƒUMê[¼¤#ƒ!QëZ¼¬#ƒ=Q‡¼´#ƒ†O×l¼¼#ƒ¹OÁm¼Ô#ÚP \¼ô#…¯S\ ¼D‘#ƒQ$g¼L‘#ƒUMßk¼T‘#ƒ!Qþê¼\‘#ƒ=Q’:¼d‘#ƒGQßk¼l‘#ƒQQ×ð¼t‘#ƒ ‘5Y¼|‘#ƒ"•‡¼„‘#ƒ†O×l¼Œ‘#ƒ¹OÁm¼¤‘#ãP ¼\¼Ä‘#…¯ü\¼’#ƒQ$g!¼’#ƒUM8]!¼$’#ƒ!Qœ!¼,’#ƒ=Q\K!¼4’#ƒGQ×ð!¼<’#ƒQQßk!¼D’#ƒ ‘5Y!¼L’#ƒ"•‡!¼T’#ƒ†O×l!¼\’#ƒ¹OÁm!¼t’#ƒ}l‡!¼€’#þP q]!¼¤’#…¯´],¼ “#ƒQ$g7¼“#ƒUM˜G7¼“#ƒ!Q[f7¼$“#ƒ=Q’:7¼,“#ƒGQÊM7¼4“#ƒQQßk7¼<“#ƒ ‘ßk7¼D“#ƒ"•×ð7¼L“#ƒ,•5Y7¼T“#ƒL*¦*7¼\“#ƒW*‡7¼d“#ƒ†O×l7¼l“#ƒ¹OÁm7¼„“#ƒ Q ‡7¼”“#ƒQ ÊM7¼ “#ƒ#Q ’:7¼¬“#/Q 8^7¼¸“#…¯R^9¼Ð“#ƒQh^;¼Ø“#ƒUMx^;¼à“#ƒ†O×l;¼è“#ƒ¹OÁm;¼”#ƒʈ h^;¼ ”#=Q ­^;¼”#…¯È^>¼8”#ƒQ$gA¼@”#ƒUMßkA¼H”#ƒ!QþêA¼P”#ƒ†O×lA¼X”#ƒ¹OÁmA¼p”#KQ _A¼|”#…¯'_D¼œ”#ƒQ8]G¼¤”#ƒUMßkG¼¬”#ƒ!QœG¼´”#ƒ†O×lG¼¼”#ƒ¹OÁmG¼Ô”#_Q ƒ_G¼ä”#…¯¹_M¼•#ƒQ$gS¼$•#ƒUMë_S¼,•#ƒ!Qó_S¼4•#ƒ=Q×ðS¼<•#ƒGQ5YS¼D•#ƒQQ‡S¼L•#ƒ†O×lS¼T•#ƒ¹OÁmS¼l•#ƒ}l‡S¼x•#tQ 8`S¼„•#…¯S`V¼¤•#ƒQj`Y¼¬•#ƒUM«sY¼´•#ƒ!Q‡Y¼¼•#ƒ†O×lY¼Ä•#ƒ¹OÁmY¼Ü•#…¯Œ_Y¼ä•#ªP Ÿ`Y¼ð•#ƒ¹P ßk\¼ü•#P—º`\¼–#ƒZ—ßk^¼–#ƒ†O×l^¼0–#ƒ¹OÁm^¼H–#ƒ}l‡^¼l–#…¯a^¼Œ–#ƒQ÷Ua¼”–#ƒUM«sa¼œ–#ƒ!Q‡a¼¤–#…¯_Ga¼¼–#ƒQ7Êc¼Ä–#ƒUM‡c¼Ì–#…¯¯ac¼Ü–#†Q÷Ud¼ì–#†UM«sd¼ü–#†!Q‡d¼ —#…¯¸ad¼—#†Q7Êe¼,—#†UM‡e¼<—#ÌÔÉae¼H—#…¯éai¼p—#ƒQ/Êm¼x—#ƒUMbm¼€—#ƒ!Q«sm¼ˆ—#ƒ=Q‡m¼—#ƒ†O×lm¼˜—#ƒ¹OÁmm¼°—#ƒ}l‡m¼¼—#…¯¹nm¼Ì—#ÙQ :bn¼Ø—#ƒáQ ßkp¼ä—#ªK Pbp¼ð—#ƒxt ßkr¼ü—#ìQ bbr¼ ˜#ƒüQ ßkw¼˜#R “bw¼$˜#ƒ"R ßk{¼0˜#8R ³b{¼<˜#ƒGR ßk¼H˜#YR Ëb¼T˜#ƒiR ßk‚¼`˜#´K âb‚¼l˜#ƒ­‚ßk…¼x˜#׃c…¼„˜#ƒâƒßkˆ¼˜#ÁK cˆ¼œ˜#ƒÍK ßkм¨˜#ÜK .cм´˜#ƒêK ßk¼À˜#|R Ic¼ä˜#ƒŒR ßk˜¼ð˜#ƒ†O×l˜¼ø˜#ƒ¹OÁm˜¼™#ƒ}l‡˜¼ø™#…¯¦n˜¼š#ƒQ\Kš¼š#ƒUM‡š¼ š#…¯dš¼8š#ƒQ 蜼@š#ƒUM‡œ¼Hš#…¯ddœ¼xš#ƒQ5Y¡¼€š#ƒUM$g¡¼ˆš#ƒ!QTB¡¼š#ƒ=Qþ꡼˜š#ƒGQ‡¡¼ š#…¯Þd¡¼Èš#ƒQ’:¥¼Ðš#ƒUMä䥼ؚ#ƒ!Qþꥼàš#ƒ=Q‡¥¼èš#…¯Je¥¼›#ƒQ.;©¼›#ƒUMßk©¼ ›#ƒ!Qßk©¼(›#ƒ=Q‡©¼0›#…¯P©¼P›#ƒQ1P¬¼X›#ƒUMJx ¬¼`›#ƒ!Q‡¬¼h›#…¯f¬¼ˆ›#ƒQ’:¯¼›#ƒUM"f¯¼˜›#ƒ!Q‡¯¼ ›#…¯|f¯¼À›#ƒQ’:²¼È›#ƒUMþ겼Л#ƒ!Q‡²¼Ø›#…¯Q²¼ð›#ƒQ%Q´¼ø›#ƒUM‡´¼œ#…¯$g´¼ œ#ƒQ^æ·¼(œ#ƒUM5Y·¼0œ#ƒ!Q‡·¼8œ#…¯çg·¼¤œ#ƒQ$g¼¬œ#ƒUMßk¼´œ#ƒ!Q˜G¼¼œ#ƒ=Q7h¼Ĝ#ƒGQO¼̜#ƒQQCh¼Ԝ#ƒ ‘×ð¼ܜ#ƒ"•5Y¼äœ#ƒ,•ää¼ìœ#ƒL*“ɼôœ#ƒW*‡¼üœ#…¯¨h¼ #†Q\Kü#†UM‡ü,#…¯±hü<#†Q èļL#†UM‡ļ\#…¯ºhļl#†Q5Yż|#†UM$gżŒ#†!QTBżœ#†=Qþêż¬#†GQ‡ż¼#…¯ÃhżÌ#†Q’:ƼÜ#†UMääƼì#†!QþêƼü#†=Q‡Ƽ ž#…¯ÌhƼž#†Q.;Ǽ,ž#†UMßkǼ<ž#†!QßkǼLž#†=Q‡Ǽ\ž#…¯ÕhǼlž#†Q1Pȼ|ž#†UMJx ȼŒž#†!Q‡ȼœž#…¯Þhȼ¬ž#†Q’:ɼ¼ž#†UM"fɼ̞#†!Q‡ɼܞ#…¯çhɼìž#†Q’:ʼüž#†UMþêʼ Ÿ#†!Q‡ʼŸ#…¯ðhʼ,Ÿ#†Q%Q˼<Ÿ#†UM‡˼LŸ#…¯ùh˼\Ÿ#†Q^æ̼lŸ#†UM5Y̼|Ÿ#†!Q‡̼ŒŸ#…¯i̼œŸ#†Q$gͼ¬Ÿ#†UMßkͼ¼Ÿ#†!Q˜Gͼ̟#†=Q7hͼܟ#†GQOͼìŸ#†QQChͼüŸ#† ‘×ðͼ  #†"•5Yͼ #†,•ääͼ, #†L*“Éͼ< #†W*‡ͼL #…¯¹nͼ\ #÷R iμh #ƒS ßkѼt #S &iѼ€ #ƒ*S ßkÕ¼Œ #EŠ BiÕ¼˜ #ƒLŠ ßkؼ¤ #=S Yiؼ° #ƒGS ßkÛ¼¼ #DˆpiۼȠ#ƒMˆßkݼԠ#ðå†iݼà #ƒçßkß¼ì #ÙQ ˜iß¼ø #ƒáQ ßkἡ#TS ªiἡ#ƒbS ßk㼡#sS Àiã¼(¡#ƒ„S ßkå¼4¡#˜S Òiå¼<¡#ƒ­S ßkæ¼H¡#ƒ†O×læ¼P¡#ƒ¹OÁmæ¼h¡#ƒ}l‡æ¼D¢#…¯jæ¼d¢#ƒQ˜Gé¼l¢#ƒUM\Ké¼t¢#ƒ!Q‡é¼|¢#…¯‰j鼤¢#ƒQ/Êí¼¬¢#ƒUM¡jí¼´¢#ƒ!Qßkí¼¼¢#ƒ=Q‡í¼Ä¢#…¯újí¼ä¢#ƒQßkð¼ì¢#ƒUM.;ð¼ô¢#ƒ!Q‡ð¼ü¢#…¯Qkð¼£#ƒQp\ó¼$£#ƒUMääó¼,£#ƒ!Q‡ó¼4£#…¯·kó¼L£#ƒQÉkõ¼T£#ƒUM‡õ¼\£#…¯#lõ¼t£#ƒQ1l÷¼|£#ƒUM‡÷¼„£#…¯ƒl÷¼œ£#ƒQ‹ù¼¤£#ƒUM‡ù¼¬£#…¯Ölù¼Ä£#ƒQ$gû¼Ì£#ƒUM‡û¼Ô£#…¯;mû¼ì£#ƒQImý¼ô£#ƒUM‡ý¼ü£#…¯Ïåý¼¤#ƒqPØåþ¼¤#…¯ñmþ¼(¤#†Q˜Gÿ¼8¤#†UM\Kÿ¼H¤#†!Q‡ÿ¼X¤#…¯úmÿ¼h¤#†Q/ʽx¤#†UM¡j½ˆ¤#†!Qßk½˜¤#†=Q‡½¨¤#…¯n½¸¤#†Qßk½È¤#†UM.;½Ø¤#†!Q‡½è¤#…¯ n½ø¤#†Qp\½¥#†UMää½¥#†!Q‡½(¥#…¯n½8¥#†QÉk½H¥#†UM‡½X¥#…¯n½h¥#†Q1l½x¥#†UM‡½ˆ¥#…¯'n½˜¥#†Q‹½¨¥#†UM‡½¸¥#…¯0n½È¥#†Q$g½Ø¥#†UM‡½è¥#…¯9n½ø¥#†QIm½¦#†UM‡½¦#…¯Bn½(¦#†qPØå½8¦#ÅS Kn½D¦#…¯fn ½d¦#ƒQj`½l¦#ƒUMëZ½t¦#ƒ!Q‡½|¦#ƒ†O×l½„¦#ƒ¹OÁm½œ¦#…¯¹n½¬¦#÷R ªn½¸¦#ƒS ßk½Ä¦#S Ån½Ð¦#ƒ*S ßk½Ü¦#¥4 àn½è¦#ƒÂ‰ ßk½ô¦#Dˆòn½§#ƒMˆßk½ §#ðåo½§#ƒçßk½$§#ÙQ o½0§#ƒáQ ßk½<§#sS 0o½H§#ƒ„S ßk½T§#˜S Bo½\§#ƒ­S ßk ½h§#ƒ†O×l ½p§#ƒ¹OÁm ½ˆ§#ƒ}l‡ ½<¨#…¯j ½\¨#ƒQ˜G#½d¨#ƒUM\K#½l¨#ƒ!Q‡#½t¨#…¯åo#½”¨#ƒQ/Ê&½œ¨#ƒUMüo&½¤¨#ƒ!Q‡&½¬¨#…¯Xp&½Ä¨#ƒQ1P(½Ì¨#ƒUM‡(½Ô¨#…¯¹p(½ì¨#ƒQËp*½ô¨#ƒUM‡*½ü¨#…¯(q*½©#ƒQ6q,½©#ƒUM‡,½$©#…¯¦n,½<©#ƒQ\K.½D©#ƒUM‡.½L©#…¯;m.½d©#ƒQIm0½l©#ƒUM‡0½t©#…¯,r0½„©#ƒqP5r1½Œ©#…¯’r1½œ©#†Q˜G2½¬©#†UM\K2½¼©#†!Q‡2½Ì©#…¯›r2½Ü©#†Q/Ê3½ì©#†UMüo3½ü©#†!Q‡3½ ª#…¯¤r3½ª#†Q1P4½,ª#†UM‡4½<ª#…¯­r4½Lª#†QËp5½\ª#†UM‡5½lª#…¯¶r5½|ª#†Q6q6½Œª#†UM‡6½œª#…¯¿r6½¬ª#†Q\K7½¼ª#†UM‡7½Ìª#…¯Èr7½Üª#†QIm8½ìª#†UM‡8½üª#…¯Ñr8½ «#†qP5r9½«#ÕS Úr9½8«#…¯s@½x«#ƒQ\KG½€«#ƒUMßkG½ˆ«#ƒ!Q¡jG½«#ƒ=Q×ðG½˜«#ƒGQ$gG½ «#ƒQQ5YG½¨«#ƒ ‘‡G½°«#ƒ†O×lG½¸«#ƒ¹OÁmG½Ð«#ƒ}l‡G½Ü«#íS qsG½ø«#…¯¨sN½8¬#ƒQ\KU½@¬#ƒUMßkU½H¬#ƒ!QüoU½P¬#ƒ=Q×ðU½X¬#ƒGQ$gU½`¬#ƒQQ5YU½h¬#ƒ ‘‡U½p¬#ƒ†O×lU½x¬#ƒ¹OÁmU½¬#T tU½œ¬#…¯tX½¼¬#ƒQÓl[½Ä¬#ƒUMž¤[½Ì¬#ƒ!Q‡[½Ô¬#ƒ†O×l[½Ü¬#ƒ¹OÁm[½ô¬#…¯Œ_[½ü¬#:T Wt[½­#ƒHT ßk]½­#YT mt]½­#ƒhT ßk^½(­#˜S zt^½8­#ƒ­S ßkd½D­#ƒ†O×ld½l­#ƒ¹OÁmd½„­#…¯4>d½œ­#ƒQ¡jf½¤­#ƒUM‡f½¬­#…¯Ïåf½¼­#ƒqPØåg½Ä­#…¯~ug½ü­#ƒQ\Km½®#ƒUMßkm½ ®#ƒ!Q¡jm½®#ƒ=Q×ðm½®#ƒGQ$gm½$®#ƒQQ‡m½,®#…¯vm½<®#†Q¡jn½L®#†UM‡n½\®#…¯ vn½l®#†qPØåo½|®#…¯vo½Œ®#†Q\Kp½œ®#†UMßkp½¬®#†!Q¡jp½¼®#†=Q×ðp½Ì®#†GQ$gp½Ü®#†QQ‡p½ì®#…¯Œ_p½ô®#:T vp½¯#ƒHT ßkr½ ¯#YT 4vr½¯#ƒhT ßks½ ¯#˜S Avs½0¯#ƒ­S ßky½<¯#ƒ†O×ly½d¯#ƒ¹OÁmy½|¯#…¯Y=y½”¯#ƒQüo{½œ¯#ƒUM‡{½¤¯#…¯,r{½´¯#ƒqP5r|½¼¯#…¯Cw|½ô¯#ƒQ\K‚½ü¯#ƒUMßk‚½°#ƒ!Qüo‚½ °#ƒ=Q×ð‚½°#ƒGQ$g‚½°#ƒQQ‡‚½$°#…¯Çw‚½4°#†Qüoƒ½D°#†UM‡ƒ½T°#…¯Ðwƒ½d°#†qP5r„½t°#…¯Ùw„½„°#†Q\K…½”°#†UMßk…½¤°#†!Qüo…½´°#†=Q×ð…½Ä°#†GQ$g…½Ô°#†QQ‡…½ä°#…¯Œ_…½ì°#‹T âw…½ø°#ƒ•T ßk‡½±#¢T øw‡½±#ƒ«T ßk‰½±#ƒ†O×l‰½8±#ƒ¹OÁm‰½P±#…¯4>‰½h±#ƒQ¡j‹½p±#ƒUM‡‹½x±#…¯;m‹½±#ƒQIm½˜±#ƒUM‡½ ±#…¯Òx½°±#†Q¡j޽À±#†UM‡Ž½Ð±#…¯Ûx޽à±#†QIm½ð±#†UM‡½²#·T üx½ ²#…¯y‘½$²#ƒQ,y“½,²#ƒUM8y“½4²#ƒ†O×l“½<²#ƒ¹OÁm“½T²#ÉT }y“½`²#…¯—y•½x²#ƒQ,y—½€²#ƒUM­y—½ˆ²#ƒ†O×l—½²#ƒ¹OÁm—½¨²#…¯Œ_—½°²#Fœ½ã—½¼²#…¯Œ_˜½Ä²#Fœ½ã˜½Ð²#…¯Œ_™½Ø²#Fœ½ã™½ä²#ÚT æyš½ð²#…¯yI œ½³#ƒQ‡ž½³#ƒUM×lž½³#ƒ†O×lž½ ³#ƒ¹OÁmž½8³#æÈO×mž½ˆ³#æÈO×lŸ½˜³#æMùmŸ½ì³#æMãÁ¡½<´#æMn¢½`´#èT Qz£½h´#…¯„H¤½x´#ƒqP˜G¥½€´#ƒ†O×l¥½ˆ´#ƒ¹OÁm¥½ ´#ƒõ&Ól¥½°´#ƒ³H ˜G¥½¼´#ƒ}l‡¥½Ì´#ÿT Œz¥½è´#…¯·z¬½(µ#ƒQÓl³½0µ#ƒUMßk³½8µ#ƒ!Q· ³½@µ#ƒ=Q· ³½Hµ#ƒGQ,y³½Pµ#ƒQQÞz³½Xµ#ƒ ‘ßk³½`µ#ƒ†O×l³½hµ#ƒ¹OÁm³½€µ#U #{³½µ#…¯L{¸½Àµ#ƒQÓl½½Èµ#ƒUM· ½½Ðµ#ƒ!Q· ½½Øµ#ƒ=Q,y½½àµ#ƒGQq{½½èµ#ƒ†O×l½½ðµ#ƒ¹OÁm½½¶#…¯Œ_½½¶#AU ª{½½¶#ƒMU ßk¾½$¶#\U ·{¾½,¶#ƒgU ßk¿½8¶#ƒ†O×l¿½T¶#ƒ¹OÁm¿½l¶#ƒ}l‡¿½·#…¯&|¿½ ·#ƒqP/|À½(·#…¯†|À½8·#ƒqP|Á½@·#…¯Ý|Á½P·#†qP/|½`·#…¯æ|½p·#†qP|ý€·#…¯Œ_ý ·#ƒ‹Ólý ¸#ƒŒU Œ_ý¸#…¯Õfý(¸#Fœ½ÂĽ8¸#…¯ÕfŽH¸#Fœ½ÂƽX¸#…¯ï|ǽx¸#Fœ½}£ʽĸ#…¯Hâ˽ܸ#Fœ½ã ͽø¸#…¯,}ν¹#Fœ½e}нL¹#…¯Œ_ѽT¹#Fœ½À}ѽx¹#…¯ ~Ò½ˆ¹#Fœ½)~Ó½˜¹#…¯ ~Ô½¨¹#Fœ½~Õ½ô¹#…¯»~×½ º#Fœ½Å~Ù½0º#…¯Œ_Û½8º#Fœ½×~Û½Dº#…¯Œ_ܽLº#Fœ½×~ܽXº#—U õ~ݽdº#…¯ß½|º#ƒQ'ὄº#ƒUM‡Ὄº#ƒ†O×lá½”º#ƒ¹OÁmὬº#…¯eá½Ìº#Fœ½}£ä½èº#…¯Õfå½øº#Fœ½|æ½$»#]N_ç½<»#…¯¹nç½L»#òU §è½T»#ƒþU ßkè½`»# V §è½h»#ƒV ßkè½t»#ƒ†O×lè½|»#ƒ¹OÁmè½”»#æCVÜè½Ô»#æCV½sé½ä»#æCVÎsê½4¼#æÈO×mì½\¼#æÈO×lí½l¼#æMùmí½¨¼#æMïï½à¼#æMnð½½#…¯Œ_ñ½ ½#IV €ñ½½#ƒRV ßkò½ ½#^V /€ò½,½#ƒfV ßkõ½8½#ƒ†O×lõ½T½#ƒ¹OÁmõ½l½#æÈO×mõ½ ¾#æÈO×lö½¾#æMùmö½¿#ƒqV ó€ø½8¿#æM@ø½À#æMnù½,À#…¯Iú½<À#ƒqPó€û½DÀ#…¯°û½dÀ#ƒQó€þ½lÀ#ƒUM×lþ½tÀ#ƒ!Q‡þ½|À#…¯‚þ½ŒÀ#†qPó€ÿ½œÀ#…¯%‚ÿ½¬À#†Qó€¾¼À#†UM×l¾ÌÀ#†!Q‡¾ÜÀ#…¯¹n¾ìÀ#IV .‚¾ôÀ#ƒRV ßk¾Á#0W H‚¾ Á#ƒ=W ßk¾Á#† h‚¾$Á#ƒ)† ßk¾0Á#MW h‚¾<Á#ƒ_W ßk ¾HÁ#tW h‚ ¾TÁ#ƒ‰W ßk ¾`Á#¡W H‚ ¾lÁ#ƒ¬W ßk¾xÁ#ºW H‚¾„Á#ƒÏW ßk¾Á#çW H‚¾œÁ#ƒúW ßk¾¨Á#X H‚¾´Á#ƒ+X ßk¾ÀÁ#IX H‚¾ÌÁ#ƒgX ßk¾ØÁ#ˆX h‚¾äÁ#ƒ’X ßk¾ðÁ#ŸX ‡‚¾øÁ#ƒªX ßk¾Â#ƒ†O×l¾ Â#ƒ¹OÁm¾$Â#ƒqV ó€¾$Ã#…¯I¾4Ã#ƒqPó€¾<Ã#…¯°¾\Ã#ƒQó€!¾dÃ#ƒUM×l!¾lÃ#ƒ!Q‡!¾tÃ#…¯‡ƒ!¾ŒÃ#ƒQó€#¾”Ã#ƒUM‡#¾œÃ#…¯‡ƒ#¾´Ã#ƒQó€%¾¼Ã#ƒUM‡%¾ÄÃ#…¯‡ƒ%¾ÜÃ#ƒQó€'¾äÃ#ƒUM‡'¾ìÃ#…¯°'¾ Ä#ƒQó€*¾Ä#ƒUM×l*¾Ä#ƒ!Q‡*¾$Ä#…¯°*¾DÄ#ƒQó€-¾LÄ#ƒUM×l-¾TÄ#ƒ!Q‡-¾\Ä#…¯°-¾|Ä#ƒQó€0¾„Ä#ƒUM×l0¾ŒÄ#ƒ!Q‡0¾”Ä#…¯°0¾´Ä#ƒQó€3¾¼Ä#ƒUM×l3¾ÄÄ#ƒ!Q‡3¾ÌÄ#…¯°3¾ìÄ#ƒQó€6¾ôÄ#ƒUM×l6¾üÄ#ƒ!Q‡6¾Å#…¯‡ƒ6¾Å#ƒQó€8¾$Å#ƒUM‡8¾,Å#…¯ô†8¾@Å#ƒqPý†9¾HÅ#…¯[‡9¾XÅ#†qPó€:¾hÅ#…¯d‡:¾xÅ#†Qó€;¾ˆÅ#†UM×l;¾˜Å#†!Q‡;¾¨Å#…¯m‡;¾¸Å#†Qó€<¾ÈÅ#†UM‡<¾ØÅ#…¯v‡<¾èÅ#†Qó€=¾øÅ#†UM‡=¾Æ#…¯‡=¾Æ#†Qó€>¾(Æ#†UM‡>¾8Æ#…¯ˆ‡>¾HÆ#†Qó€?¾XÆ#†UM×l?¾hÆ#†!Q‡?¾xÆ#…¯‘‡?¾ˆÆ#†Qó€@¾˜Æ#†UM×l@¾¨Æ#†!Q‡@¾¸Æ#…¯š‡@¾ÈÆ#†Qó€A¾ØÆ#†UM×lA¾èÆ#†!Q‡A¾øÆ#…¯£‡A¾Ç#†Qó€B¾Ç#†UM×lB¾(Ç#†!Q‡B¾8Ç#…¯¬‡B¾HÇ#†Qó€C¾XÇ#†UM×lC¾hÇ#†!Q‡C¾xÇ#…¯µ‡C¾ˆÇ#†Qó€D¾˜Ç#†UM‡D¾¨Ç#…¯¾‡D¾¸Ç#†qPý†E¾ÈÇ#…¯LJE¾àÇ#…¯Œ_G¾èÇ#FB[“uG¾È#…¯“uI¾È#ƒ”[ÁmK¾ È#ƒí"‡K¾(È#…¯Œ_K¾@È#ƒÈX é‡K¾PÉ#ƒŒU Œ_M¾`É#…¯Œ_M¾ˆÉ#ƒãX ˆM¾ÔÊ#ƒŒU Œ_P¾ðÊ#…¯ ˆP¾Ë#Fœ½QjQ¾<Ë#…¯ ˆR¾LË#Fœ½¨iS¾`Ë#…¯ ˆT¾pË#Fœ½¨iU¾„Ë#…¯Œ_V¾ŒË#Fœ½̰V¾°Ë#…¯.ˆW¾ðË#Fؤ_ˆ^¾$Í#FskŒ__¾èÍ#Fê¤ßk_¾$Î#Fù¤ è_¾0Î#F ¥mˆ_¾PÎ#…¯ ˆ_¾`Î#Fœ½C`¾xÎ#Y ]aa¾€Î#Y Éõ a¾ Î#+Y ‚ˆb¾Ï#:Y ‘ˆe¾LÏ#& Ljg¾TÏ#9 ψg¾\Ï#K ψg¾dÏ#[ Ljg¾lÏ#m ψg¾tÏ#•ˆ Ûˆg¾ˆÏ#}Y äˆh¾”Ï#‹Y Ûˆi¾¼Ï#›Y ‰j¾ÜÏ#ÆY ‰k¾üÏ#ÙY ‰l¾|Ð#Ÿˆ >‰m¾”Ð#îY K‰n¾ Ð#ÿY ˆ‰o¾8Ñ#Z ´‰q¾€Ñ#:Z ʼnr¾¨Ñ#QZ û‰s¾ìÑ#{Z Št¾$Ò#ŒZ GŠv¾pÒ#™Z GŠw¾|Ò#©Z hŠx¾¨Ò#¼Z yŠy¾°Ò#ÐZ Šy¾¸Ò#äZ ‹y¾àÓ#…¯Œ_}¾èÓ#Fœ½,‹}¾ôÓ#…¯5‹~¾Ô#Fœ½C‹¾Ô#…¯Œ_€¾ Ô#Fœ½SV€¾,Ô#…¯˜i¾<Ô#Fœ½¥i‚¾LÔ#…¯Œ_ƒ¾TÔ#Fœ½P‹ƒ¾hÔ#…¯Œ_„¾pÔ#Fœ½e‹„¾˜Ô#…¯Œ_…¾ Ô#Fœ½v‹…¾¬Ô#]N_†¾¼Ô#&[ ]a†¾ÄÔ#/[ 7:†¾ÌÔ#<[ ]a†¾ÔÔ#E[ 7:†¾ÜÔ#]N_†¾ Ö#¨\ Ç †¾hÖ#±\ Ç ‡¾°Ö#»\ µ‹ˆ¾¸Ö#Æ\ Ç ˆ¾×#Ï\ À‹‰¾H×#Ü\ KÇ Œ¾X×#â\ KÇ ¾h×#ç\ KÇ Ž¾x×#î\ KÇ ¾ˆ×#ô\ Ë‹¾˜×#û\ Ô‹’¾ ×#] Ô‹’¾¨×#] Ô‹’¾°×#] Ô‹’¾¸×#"] å‹’¾Ü×#+] í‹”¾Ø#2] Ë‹—¾Ø#<] Ë‹™¾ Ø#H] Ë‹›¾0Ø#V] Ë‹¾@Ø#i] Ë‹Ÿ¾PØ#] Ë‹¡¾`Ø#ž] Ë‹£¾tØ#¦] Ë‹¥¾ˆØ#³] Ë‹§¾œØ#Å] Œ©¾àØ#Ú] CŒ¬¾,Ù#ã] å¾ ®¾<Ù#î] å¾ ¯¾LÙ#ø] å¾ °¾\Ù#^ VŒ±¾lÙ# ^ ž³¾¨Ù#^ å¾ ´¾ÈÙ#^ å¾ µ¾Ú#'^ cŒ¶¾hÚ#/^ ê ¸¾ÌÚ#5^ j™º¾ÔÚ#@^ €Œº¾(Û#Q^ £Œ¼¾ŒÛ#Z^ ØŒ½¾èÛ#e^ -¾¾LÜ#^ æþ$à#—^ ŽǾXà#¯^ ‹ɾìá#Ä^ ôϾ$â#Ì^ Ѿ,â#Ø^ Ѿ8â#á^ .Ò¾Dâ#é^ _Ó¾Pâ#õ^ •Ô¾\â#ý^ °Ö¾lâ#_ ¾×¾ˆâ#_ ÇÙ¾¤â#…¯Œ_Û¾¬â#Fœ½ò¼ Û¾¼â#…¯Œ_ݾÄâ#Fœ½ò¼ ݾÔâ#…¯Œ_ß¾Üâ#Fœ½ò¼ ß¾ìâ#…¯Œ_á¾ôâ#Fœ½ò¼ á¾ã#…¯Œ_ã¾ ã#Fœ½ò¼ ã¾ã#…¯Œ_å¾$ã#Fœ½ò¼ å¾4ã#…¯Œ_ç¾<ã#Fœ½ò¼ ç¾Lã#…¯Œ_é¾Tã#Fœ½”¼ é¾tã#…¯Œ_ê¾|ã#Fœ½”¼ 꾜ã#…¯Œ_뾤ã#Fœ½”¼ 뾨ã#…¯ἠ쾸ã#Fœ½”¼ í¾Ìã#…¯Œ_î¾Ôã#Fœ½ò¼ î¾àã#_ Ôð¾ìã#…¯àó¾ ä#ƒQ×lö¾ä#ƒUM×lö¾ä#ƒ!Qèö¾$ä#ƒ†O×lö¾,ä#ƒ¹OÁmö¾Dä#æCV.‘ö¾üä#æCV½s÷¾å#æCVÎsø¾Èå#æÈO×mú¾,æ#æÈO×lû¾<æ#æMùmû¾ æ#æMl‘ý¾ç#æMnþ¾Æé4lÿ¾Æ ^ 8Žÿ¾Æ_ }‘ÿ¾Æ¨^ ÿ¾Æ½^ iÂÿ¾$ç#…¯Žÿ¾4ç#Fꒌ̿Hç#…¯¬‘¿`ç#Fœ½"’¿Œç#…¯¯Ž¿¼ç#Fœ½v’ ¿$è#…¯ñŽ ¿Lè#Fœ½v’¿Äè#…¯1¿ìè#Fœ½v’¿8é#…¯Œ_¿@é#Fœ½¿’¿Dé#…¯Œ_¿Pé#á&_ ž¤¿Xé#áV_ Ð’¿dé#áˆ_ Þ’¿€é#á»_ ì’¿„é#áì_ \¿œé#]N_¿¨é#…¯Œ_¿°é#-` “¿¸é#ƒ†O×l¿Àé#ƒ¹OÁm¿Øé#æCVI“¿ôé#æCV½s¿ê#æCVÎs¿<ê#æÈO×m¿\ê#æÈO×l¿lê#æMùm¿ˆê#æMZ“¿ ê#æMn ¿Äê#]N_!¿Ðê#…¯Œ_!¿Øê#J` k“!¿àê#ƒ†O×l!¿èê#ƒ¹OÁm!¿ë#æCV “!¿ë#æCV½s"¿,ë#æCVÎs#¿dë#æÈO×m%¿„ë#æÈO×l&¿”ë#æMùm&¿°ë#æM©“(¿Èë#æMn)¿ìë#…¯²“*¿ì#á&_ ¹“+¿ì#áV_ Á“+¿ì#áˆ_ Ï“+¿<ì#á»_ Ý“+¿@ì#áì_ ö“+¿Hì#…¯fZ+¿\ì#á&_ ¹“,¿dì#áV_ Á“,¿„ì#áˆ_ Ï“,¿Äì#á»_ Ý“,¿Èì#áì_ ö“,¿Ðì#…¯P,¿äì#á&_ 4l-¿ôì#áV_ 8Ž-¿í#áˆ_ }‘-¿í#á»_ -¿Àí#áì_ iÂ-¿Ôí#…¯…-¿ðí#á&_ 4l/¿î#áV_ 8Ž/¿,î#áˆ_ }‘/¿Hî#á»_ /¿hî#áì_ iÂ/¿|î#]N_/¿Ôî#‘` U”/¿äî# ` ^”0¿ðî#±` j™1¿øî#Ì` j™1¿ï#á` ”1¿ð#ú` ¦”5¿4ð#Pa •8¿lð#ca •:¿tð#ra %•:¿|ð#€a ]a:¿„ð#”a ]•:¿œð#£a n•;¿¸ð#Éa ’•<¿Üð#åa º•>¿tñ#ùa Ü•@¿¸ñ#+b ë•C¿Pò#Sb –I¿üò#wb l–P¿Tó#‰b …–S¿ˆó#¤b ¨–U¿ô#Ñb ¸–Y¿¸ô#åb Ò–[¿õ#îb ò–]¿Èõ#øb —^¿ôõ#c —b¿ ö#£c ²—f¿ ÷#¼c ú—i¿ðø#àc 1˜r¿¬ù#óc b˜{¿¸ù#kd š}¿¬$zd Lš‚¿$‹d ^š„¿À$™d pš†¿Ü$»d ‘š‹¿$Ûd ¸š‘¿Œ$âd ›•¿ $e B››¿°$e ]›¿Ø$e j›ž¿” $/e †›¢¿ $6e œ¥¿à $Ve Fœ«¿` $pe Ï ®¿„$œe Œ¢¸¿ $Ée ì¢À¿ä$ðe ¶¨Å¿ì$f `©É¿(!$f ©©Ì¿T!$f Õ©Ï¿|!$]N_Ñ¿Œ!$]N_Ñ¿¼!$…¯¹nÑ¿Ì!$²cö©Ò¿Ô!$ƒØf ßkÒ¿à!$éf ö©Ò¿è!$ƒúf ßkÒ¿ô!$ g ö©Ò¿ü!$ƒg ßkÒ¿"$-g ö©Ò¿"$ƒªÙ¿¤#$æMnÚ¿È#$…¯ªÛ¿$$]N_â¿$$ƒÊg ?|â¿4$$ƒ‘@Y—㿼$$ƒ(c Q—ä¿D%$ƒ²b ?|æ¿|%$ƒd Q—ç¿Ð%$ƒtc Q—é¿&$ƒh Q—ë¿X&$ƒd Q—í¿¬&$ƒBc Q—ï¿Ì&$ƒ¶a  ñ¿X'$…¯?ó¿h'$Fœ½?|ô¿|'$…¯«õ¿”'$Fœ½?|÷¿¬'$…¯«ø¿Ä'$Fœ½?|ú¿ð'$…¯?û¿($Fœ½?|ü¿($…¯Œ_ý¿($Fœ½¿«ý¿,($…¯Œ_þ¿4($Fœ½Í«þ¿D($…¯Œ_ÿ¿L($Fœ½Ö«ÿ¿\($…¯Œ_Àd($Fœ½Í«À($…¯Œ_À˜($Fœ½ß«À¤($…¯Œ_À¬($Fœ½è«ÀÈ($…¯Œ_ÀÐ($Fœ½ ¬À)$]N_À)$…¯Œ_À)$hh *¬À$)$ƒ†O×lÀ,)$ƒ¹OÁmÀD)$æCV_¬À`)$æCV½sÀp)$æCVÎsÀ¨)$æÈO×mÀÈ)$æÈO×l ÀØ)$æMùm Àô)$æMp¬ À *$æMn À0*$…¯Œ_ À8*$Fœ½–¬ Àd*$…¯Œ_Àl*$Fœ½¶¬À˜*$…¯Œ_À *$Fœ½Ö«À°*$…¯Œ_À¸*$Fœ½¶¬Àø*$…¯Œ_À+$Fœ½ß«À +$…¯Œ_À+$Fœ½ñ¬À<+$…¯Œ_ÀD+$Fœ½H­Àh+$ƒGúÌ) Àp+$…¯)À€+$…¯Œ_Àˆ+$Fœ½l­À”+$…¯z­ÀÄ+$Fœ½–­À@,$…¯´­Àh,$Fœ½έ"ÀÜ,$…¯V˜$Àô,$Fœ½õ­&À-$…¯ü­(À4-$Fœ½ ®*ÀX-$…¯®-Àh-$Fœ½"®.Àx-$…¯;®/Àà-$Fؤ§ÿ:Àp/$FskŒ_;À0$Fê¤ßk;ÀH0$Fù¤µÿ;ÀT0$F ¥½ÿ;À0$…¯Œ_;À˜0$Fœ½ž®;À¤0$…¯¬®=ÀÔ0$Fؤ|ÅBÀØ1$FskŒ_CÀä1$Fê¤ßkCÀ<2$Fù¤ŠÅCÀH2$F ¥’ÅCÀp2$…¯Å®CÀ¨2$Fؤ|ÅIÀì3$FskŒ_JÀø3$Fê¤ßkJÀH4$Fù¤ŠÅJÀT4$F ¥’ÅJÀ„4$…¯Œ_JÀŒ4$Fœ½ñ®JÀ 4$…¯¯KÀØ4$Fœ½)¯QÀ 5$…¯Œ_SÀ(5$Fœ½ö¯SÀd5$…¯Œ_TÀl5$Fœ½e°TÀ¨5$…¯Œ_UÀ°5$Fœ½ö¯UÀì5$…¯Œ_VÀô5$Fœ½Ô°VÀ06$…¯Œ_WÀ86$Fœ½Ô°WÀt6$…¯Œ_XÀ|6$Fœ½C±XÀ¸6$…¯Û±YÀÈ6$Fœ½Ö«ZÀÜ6$…¯Œ_[Àä6$Fœ½ö±[Àø6$…¯²\À`7$FؤúgÀ9$FskŒ_hÀ¼9$Fê¤ßkhÀð9$Fù¤-úhÀü9$F ¥5úhÀ0:$…¯Û±hÀ@:$Fœ½Ö«iÀT:$…¯ý²jÀÔ:$Fؤ|ÅxÀd=$FskŒ_yÀ4>$Fê¤ßkyÀ˜>$Fù¤ŠÅyÀ¤>$F ¥’ÅyÀÔ>$…¯xa yÀä>$Fœ½e´zÀ?$…¯Œ_|À?$Fœ½Q|À¼?$…¯®}ÀÌ?$Fœ½Q~ÀÜ?$…¯s´Àì?$Fœ½éÄ€ÀÈ@$…¯s´ÀØ@$Fœ½†Å ‚À„A$…¯Œ_ƒÀŒA$Fœ½§´ƒÀÈA$…¯®„ÀØA$Fœ½Q…ÀèA$…¯®†ÀøA$Fœ½"®‡ÀB$…¯®ˆÀB$Fœ½Q‰À(B$…¯Ü´ŠÀ@B$Fœ½î´ŒÀXB$…¯Ü´ÀpB$Fœ½û´ÀˆB$]N_ÀôB$i JµÀ°C$Ëã”_’À´C$&i ´µ’À D$5i óµ–À\D$Bi ª¶—À˜F$bi u·˜ÀÔH$|i ¯·™À€I$Ši Ï·šÀàI$“i Ü·›ÀìI$ i é·œÀJ$«i ¸ŸÀhJ$¹i -¸¢À¼J$Äi V¸¤ÀK$Òi ޏ¦ÀÐK$ði Û¸©ÀXL$j ý¸¯À˜L$0j ò¹±ÀÈM$Dj xº´À$N$cj Š»ºÀPQ$kd %¼ÃÀPR$j G¼ÉÀR$zd ˆ¼ÍÀ,S$µj ǼÒÀdS$‹d ñ¼ÖÀ(T$Äj ½ÚÀ`T$Øj Q½ÛÀÐT$èj x½ÝÀèT$÷j Ù½ßÀPU$'k K¾åÀtU$4k ï¾éÀV$dk ½¿ìÀàW$¡k AÀôÀPY$Ôk ×ÀþÀÐZ$ñk ÏÂÁ°a$f 8à Á,c$f ‚ÃÁ@c$f Õ©Áðc$…¯)Ád$Fœ½QÁd$…¯Œ_Ád$Fœ½¼ÃÁ$d$…¯Œ_Á,d$Fœ½ÅÃÁ8d$…¯Œ_Á@d$Fœ½ÛÃÁLd$…¯Œ_ÁTd$Fœ½äÃÁ`d$ƒGúÌ) Áhd$ƒ3l ÄÁpd$ƒAl ~®Áxd$…¯ ÄÁ˜d$…¯Œ_ Á d$Fœ½l­ Á¬d$…¯ Ä"Á¼d$Fœ½)Ä#ÁÌd$…¯Œ_%ÁÔd$Fœ½;Ä%Áàd$…¯Œ_&Áèd$Fœ½[Ä&Áe$…¯yÄ'ÁÁg$Fœ½EÅ>Á(g$…¯¹n?Á8g$Fœ½EÅ@ÁTg$…¯Œ_AÁ\g$Fœ½EÅAÁpg$…¯RÅBÁˆg$Fœ½™ÅDÁ¼i$…¯ªÅEÁÔi$Fœ½½ÅGÁj$…¯Œ_IÁ$j$Fœ½ÜÅIÁHj$…¯Œ_JÁPj$Fœ½îÅJÁxj$…¯xa KÁˆj$Fœ½ÆLÁäj$…¯ÆNÁk$Fœ½QQÁ k$…¯Œ_RÁ(k$Fœ½2ÆRÁ4k$…¯Œ_TÁy _ÍñÁ@“$Uy j™ñÁD“$iy cÍñÁH“$ty ¿ÈñÁ”“$z ¿ÈòÁ ”$&z ”_óÁ¨”$2z ¿ÈóÁÀ”$Å|%…¯ç÷?ÅŒ%Fœ½8÷@ÅÔ%…¯±÷AÅô%Fœ½ØÿDÅ$%…¯±÷EÅD%Fœ½Ü÷HÅp%…¯ˆóJÅ€%Fœ½øKÅ”%…¯øLŬ%ƒœ½pøNÅ %…¯zøPÅ@ %Fœ½´öTÅp %…¯¢øUÅ€ %Fœ½töVŬ %…¯©øWÅÄ %Fœ½[öYÅÜ %…¯›ò[Åô %Fœ½´ö]Å %…¯ ö^Å %Fœ½[ö_Å8 %…¯©øaÅP %Fœ½[öcÅx %…¯µøeŘ %Fœ½´öhÅÈ %…¯Œ_iÅÐ %Fœ½ÔøiÅÜ %…¯¢økÅì %Fœ½ÀôlÅ %…¯|ômÅ8 %Fœ½™ôpÅ\ %…¯æøqÅt %Fœ½#ùsÅ %…¯-ùtÅ( %Fœ½ÀôuÅT %…¯|ôvÅt %Fœ½™ôyŘ %…¯4ùzŰ %Fœ½Nù|Å %…¯Œ_}Å$ %Fœ½`ù}ÅH %…¯Œ_~ÅP %Fœ½wù~Åp %…¯Œ_Åx %Fœ½”ùÅ| %…¯Œ_€Å„ %Fœ½ù€Åˆ %=µ#úÅÌ %…¯Œ_„ÅÔ %Fœ½g„Åà %…¯Hú…Åð %Fœ½æb†Å%…¯üù‡Å%Fœ½zúˆÅ8%]N_‰Åô%- 9û‰Åü%< Hû‰Å%J Hû‰Å %W š€‰Å$%q ²ü ŠÅÐ%„ ²ü ŒÅü%› UûŽÅ(%½ ^û‘ÅT%ß iû–Åð%è qû™Å%þ wûšÅ¤% ž wûÅü%ž œû Å¸%.ž ´û£Å\%Dž Óû¨Å$%Zž Óû«ÅÈ%pž j™®ÅÐ%‘ž ãû®Åø%¦ž Uü°Å$%Þ pü²Å,%Íž ºü²ÅT%Ôž ×ü³Åx%àž qýµÅ„%öž ’þ¸Åt%6Ÿ Ôþ½ÅD%HŸ ]aÀÅL%\Ÿ äþÀŤ%Ÿ ëþÃÅà%ŒŸ ÷þÄÅ %žŸ >ÿÆÅ %°Ÿ GÈÅÄ%Ÿ ×ËÅl%ØŸ (ÎÅŒ"%øk2ÐÅ "%HrKÒÅÀ"%æŸ hÔÅà"%ùŸ …ÖÅ#%   ¢ØÅ #%  ¿ÚÅD#%(  ÜÜÅh#%8  ùÞÅŒ#%H  àŰ#%X  3âÅÔ#%e  PäÅø#%t  mæÅ$%(åŠèÅ@$%„  §êÅd$%˜  Äìň$%¨  ÒîÅÌ$%°  âïÅH%%Á  òñÅp%%Ñ  :óÅ4&%ç  vöÅØ&% ¡ –úÅ'%*¡ ©ýÅ8'%9¡ Èƨ'%l¡ ÈÆä'%¡ ÕÆ(%°¡ ï Æ<(%ð¡ ÆT(%¢ *Æt(%¢ 4Ƙ(%/¢ |Æà(%T¢ ·Æ@)%d¢ ÊÆT)%¢ Æ *%¢ r Æ`+%¤¢ „"Æ”+%¶¢ „$Æ,%Ì¢ °&Æ@,%Ü¢ ¹'ư,%è¢ ú(Æl-%£ j*Æä-%£ ‹,Æ@.%6£ Ï.Æ@/%O£ ë1ÆŒ/%q£  6Æ0%£ W 8ÆŒ0%ž£ c :Æ1%µ£ m <ư1%Å£ AÆd2%Û£ ² DƬ2%ð£ Ö GÆè2%¤ E JÆÔ6%¤ u NÆ|7%0¤ § VÆœ7%8¤ Ù ^ÆÌ7%J¤ eÆà7%T¤ G iƤ8%m¤ ¦ lÆì9%ƒ¤ n mÆà<%’¤ z oÆ =%¨¤ Ö qÆì>%µ¤ â sÆ„?%Ǥ ï tƼ?%ܤ ø uÆ,@%ï¤ vÆhA%ÿ¤ ¤ xÆ\B%¥ Ê |ƈB%0¥ ÆØB%P¥ Æ(C%h¥ bƒÆ`C%y¥ q†Æ´C%Œ¥ ‹ˆÆìC%ž¥ š‹ÆD%³¥ ¨Æ4D%Ç¥ ÊÆ„D%Þ¥ â”Æ´D%ï¥ -—ÆÈF%¦ A›ÆÜF%¦ ·ŸÆG%(¦ :¡ÆtH%?¦ k£ÆôH%U¦ ï¥ÆØI%p¦ ý§Æ J%‘¦ T±Æ0J%¹¦ •¸Æ€J%ð¦ üÁÆ€K%#§ ;ËÆ¬K%+§ xÏÆXL%O§ ÇØÆÈL%o§ xÚÆ`M%§ kãÆ„M%°§ þêÆ¼M%Á§ eìÆLN%æ§ ‘ïÆO%¨ ¿òÆ„O%"¨ öÆP%A¨ øÆ,P%\¨ 1úƘP%y¨ IþƼP%Œ¨ ]ÇÔP% ¨ ™Ç@Q%¿¨ ± ÇdQ%Ô¨ ÅÇxQ%ê¨ ÝǨQ%© ùÇüQ% © Ç4R%7© ùÇHR%P© :ÇS%l© _"Ç4S%‹© e$ÇdS%Ÿ© …(ǘS%¼© e,ÇÔS%Ù© ©0ÇüS%æ© Ã4Ç(T%ÿ© Ú7ÇXT%ª Ö :ÇŒT%6ª =Ç U%=ª @Ç4U%Nª AÇlU%dª ÀBÇôX%zª PFÇ4Z%“ª gIÇDZ%«ª ÉLÇ\%¼ª òOLj]%íª ÊUÇØ]%« YÇ^%+« <_Çp^%@« €eÇ@_%S« ¶iÇ@`%a« ßmǨ`%}« ìnÇ|a%Œ« úpÇb%”« tÇ8b%«« jwÇlg%« O{Çth%ß« €Çäj%ñ« ƒÇk%¬ ­†Ç¨k%#¬ ½ŠÇ l%+¬ ÓŽÇHl%A¬ ÿ‘Çøl%Z¬ 3”Ǽm%k¬ ­—ÇPn%¬ \›Çìn% ¬ sžÇho%®¬ "¡Ç\q%Ϭ 4£Çq%ଠ·¥Ç t%ð¬ ʨÇ4t%­ ·«Ç$u%­ Ê®Ç8u%"­  ±Çäu%@­ ·´Çüu%e­ ó·Çèv%z­ 9 ¹Çèx%“­ ž »ÇÈy%¤­ ¬ ½Çøz%¬­ ¶ ¾Ç€{%»­ È ÀÇÌ{%Ê­ 8!ÂÇÀ|%ç­ !ÄÇD~%® î!ÆÇ¼~% ® þ!ÇÇè~%$® æ%ÊÇ,„%bˆ&ÓÇ@„%V® š€ÕÇP„%g® —&ÖÇÈ„%® —&ØÇä„%»® —&ÚÇ…%Ý® §&ÜÇ$…%ä® ¸&ÞÇT…%ø® u*áÇ´™%¯ /4éǼ™%,¯ ½*éÇpš%7¯ Å*ëÇÄš%B¯ Å*íÇìš%U¯ Í*ïÇ›%d¯ æ*ñÇXœ%¯ +ôÇ`%¸¯ +øÇœ% ° p+ûÇ”Ÿ%s° /Èhº%° U/È(»%§° U/ÈÌ»%¾° m/ȼ%]N_È ¼%…¯ÁÕÈ0¼%Fœ½ûÈD¼%…¯‹/ÈT¼%Fœ½›/Èx¼%…¯¹/Ȉ¼%Fœ½Ý/Ȭ¼%…¯Œ_È´¼%Fœ½]0Èd½%ƒÛÓl!Èl½%ƒÞ° ¸…!Èt½%ƒ"5×l!È|½%…¯d0!Èœ½%æCVv0$È0¾%æCV½s%È@¾%æCVÎs&Èо%æÈO×m(È@¿%æÈO×l)ÈP¿%æMùm)È´¿%æM“0+ÈÀ%æMn,È4À%ƒF± ®0-È<À%ƒS± ×l-ÈDÀ%ƒc± ×l-ÈLÀ%ƒq± ·0-ÈTÀ%…¯À0-È|À%æCVÒ01ÈœÀ%æCV½s2ȰÀ%æCVÎs3ÈèÀ%æÈO×m5ÈdÁ%æÈO×l6ÈtÁ%æMùm6ÈèÁ%æMã08ÈTÂ%æMn9ÈxÂ%ƒ³± ×l:È€Â%ƒ[V×l:ȈÂ%ƒ¶V×l:ÈÂ%…¯vL:ȰÂ%æCVì0=È\Ã%æCV½s>ÈlÃ%æCVÎs?ÈÄ%æÈO×mAÈpÄ%æÈO×lBÈ€Ä%æMùmBÈØÄ%æM 1DÈ,Å%æMnEÈPÅ%ƒ³± ×lFÈXÅ%ƒر ×lFÈ`Å%ƒ[V×lFÈhÅ%ƒ¶V×lFÈpÅ%ƒ6v×lFÈxÅ%ƒRv×lFÈ€Å%…¯1FȸÅ%æCV1LÈLÆ%æCV½sMÈ\Æ%æCVÎsNÈôÆ%æÈO×mPÈÇ%æÈO×lQÈ Ç%æMùmQÈ(È%ÆÒvÓlSÈlÈ%æMQ1SÈðÈ%æMnTÈÉ%…¯ÿfUÈ$É%Fœ½†VÈ8É%…¯gWÈHÉ%Fœ½.gXÈlÉ%…¯ƒºYÈ|É%Fœ½—ºZÈ É%…¯¦º[ȰÉ%Fœ½Òº\ÈÔÉ%ƒG² ×l]ÈÜÉ%ƒU² Ól]ÈäÉ%ƒb² ·0]ÈìÉ%ƒm² €1]ÈôÉ%ƒ}lˆ1]ÈüÉ%ƒ{² 1]ÈÊ%…¯¦1]È<Ê%æCVù1cÈPË%æCV½sdÈdË%æCVÎseÈlÌ%æÈO×mgÈ0Í%æÈO×lhÈ@Í%æMùmhÈðÍ%æM+2jÈ”Î%æMnkȸÎ%ƒ³ ¤²lÈÀÎ%ƒ³ ¸…lÈÈÎ%ƒ³ N2lÈÐÎ%ƒ ŠW2lÈØÎ%…¯`2lÈÏ%…¯Œ_pÈÏ%Fœ½ù1pÈÏ%…¯Œ_qÈÏ%Fœ½w2qÈ(Ï%…¯Š2sÈ8Ï%Fœ½œ2tÈ`Ï%…¯Œ_uÈhÏ%Fœ½ª2uÈŒÏ%…¯Œ_vÈ”Ï%Fœ½œ2vÈ Ï%…¯Œ_wȨÏ%Fœ½†3wÈÐ%…¯Œ_yÈ Ð%Fœ½â3yÈLÐ%…¯Œ_zÈTÐ%Fœ½þ3zÈ`Ð%…¯ 4|ÈxÐ%Fœ½I4~È$Ñ%…¯T4È4Ñ%Fœ½b4€ÈHÑ%…¯m4‚ÈxÑ%Fœ½k5‡ÈÌÒ%…¯v5‰ÈäÒ%Fœ½©ò‹ÈÓ%…¯‰5ŒÈ`Ó%FؤÏ5”È€Ô%FskŒ_•È$Õ%Fê¤ßk•ÈXÕ%Fù¤Þ5•ÈdÕ%F ¥ç5•ÈŒÕ%…¯Œ_•È”Õ%Fœ½ù1•È Õ%…¯ÁÕ–ȰÕ%Fœ½û—ÈÄÕ%…¯{q˜ÈÔÕ%Fœ½‹q™ÈøÕ%…¯Œ_šÈÖ%Fœ½ù1šÈ Ö%…¯iS›ÈÖ%Fœ½òúœÈ0Ö%…¯ˆFÈ@Ö%Fœ½—FžÈdÖ%…¯6ŸÈ”Ö%Fؤ-¤È„×%FskŒ_¥È(Ø%Fê¤ßk¥È\Ø%Fù¤Ól¥ÈhØ%F ¥7¥ÈˆØ%…¯ÿf¥È˜Ø%Fœ½†¦È¬Ø%…¯g§È¼Ø%Fœ½.g¨ÈàØ%…¯ƒº©ÈðØ%Fœ½—ºªÈÙ%…¯¦º«È$Ù%Fœ½Òº¬ÈHÙ%…¯Y6­ÈXÙ%Fœ½w6®È|Ù%…¯±6¯ÈŒÙ%Fœ½ñ6°È°Ù%…¯Œ_±È¸Ù%Fœ½ž7±ÈÚ%…¯ûp²È,Ú%Fœ½1p³È@Ú%…¯5§´ÈPÚ%Fœ½E§µÈtÚ%…¯c§¶È„Ú%Fœ½‡§·È¨Ú%…¯¨¸È¸Ú%Fœ½1¨¹ÈÜÚ%…¯Í7ºÈìÚ%Fœ½ì7»ÈÛ%…¯8¼È Û%Fœ½H8½ÈDÛ%…¯ûp¾ÈTÛ%Fœ½1p¿ÈhÛ%…¯5§ÀÈxÛ%Fœ½E§ÁÈœÛ%…¯Ú§ÂȬÛ%Fœ½ï§ÃÈÐÛ%…¯t8ÄÈàÛ%Fœ½ƒ8ÅÈôÛ%…¯8ÆÈÜ%Fœ½¯8ÇÈ(Ü%…¯iSÈÈ8Ü%Fœ½òúÉÈLÜ%…¯ˆFÊÈ\Ü%Fœ½—FËÈ€Ü%…¯¾8ÌȰÜ%Fؤ-ÑÈ Ý%FskŒ_ÒÈDÞ%Fê¤ßkÒÈxÞ%Fù¤ÓlÒÈ„Þ%F ¥7ÒȤÞ%…¯Œ_ÒȬÞ%µ³ Ø8ÒÈ´Þ%ƒÈ³ ßkÓÈÀÞ%Þ³ Ø8ÓÈÈÞ%ƒé³ ßkÔÈÔÞ%÷³ â8ÔÈÜÞ%ƒ´ ßkÕÈèÞ%ƒ†O×lÕÈß%ƒ¹OÁmÕÈ(ß%æCVj9ÕÈ4à%æCV½sÖÈHà%æCVÎs×ÈXá%æÈO×mÙÈâ%æÈO×lÚÈ â%æMùmÚÈ ã%´ â8ÜÈ4ã%,´ Ø8ÝÈ@ã%A´ â8ÞÈTã%Q´ â8ßÈ`ã%ƒskŒ_àÈ”ã%ƒb´ ßkàȸã%ƒt´ ¸…àÈ ä%ƒ‚´ ×làÈxä%ƒ”´ ŽLàÈÄä%æM:áȼå%æMnâÈàå%…¯:†ãÈðå%ƒqP¸…äÈøå%…¯:†äÈæ%ƒqP¸…åÈæ%…¯ŽLåÈ æ%ƒqPÓlæÈ(æ%…¯Z;æÈ8æ%†qP¸…çÈHæ%…¯c;çÈXæ%†qP¸…èÈhæ%…¯l;èÈxæ%†qPÓléȈæ%æCVŒ;éÈìæ%æCV½sêÈüæ%æCVÎsëÈ\ç%æÈO×míȘç%æÈO×lîȨç%æMùmîÈèç%…¯x†ðÈüç%ƒ†O×lòÈè%ƒñ4×lòÈè%æMÅ;òÈDè%æMnóÈÆ´ Î;ôÈ`è%…¯à;ôÈ„è%ƒ¿´ Î;õÈè%ÆÈO×lõÈœè%ÆMnõÈÌè%Áδ Î;öÈØè%…¯à;öÈìè%ƒ¿´ Î;÷Èøè%ÆÈO×l÷Èé%ÆMn÷È8é%Áδ Î;øÈDé%…¯<øÈøé%ƒ¿´ Î;Éê%ÆÈO×lÉê%ÆMnÉ@ê%Áδ Î;ÉLê%…¯;<ɰê%ƒ¿´ Î;ɼê%ÆÈO×lÉÈê%ÆMnÉøê%Áδ Î;Éë%ƒuµ ×lÉ ë%…¯¹nÉë%æCV[<É`ë%æCV½sÉpë%æCVÎs ÉÀë%æÈO×m Éðë%æÈO×l Éì%æMùm É8ì%æMv<É`ì%æMnÉ„ì%ƒgªÓlÉŒì%ƒ°µ ŒÊ É”ì%ƒ^F—Ê Éœì%ƒqF¡Ê ɨì%…¯Å!ÉÈì%ƒ3b×lÉØì%‹“<Éðì%ƒÀµ ftÉí%ƒ Ö„{Éí%ƒý  UÉHí%ƒ¡ UÉtí%ƒÛ¡ UÉ í%ƒØ­ |tÉÜí%ƒE¢  É4î%ƒÚµ UÉHî%…¯±<ÉXî%Fœ½ÃÅÉlî%…¯È<!Éøî%ƒ¶ ×l'Éï%ƒÃý×l'Éï%ƒÛÓl'Éï%ƒy` ~®'É(ï%ƒ ¶ î'É4ï%ƒ1þßk'É@ï%ÆÈO×l'ÉLï%ÆMn'Éôï%…¯Œ_(Éüï%Fœ½ü<(Éð%…¯ =*É`ð%ƒ¶ ×l-Élð%ƒÛÓl-Éxð%ƒø‰~®-É„ð%ÆÈO×l-Éð%ÆMn-Éðð%-™,=.Éüð%…¯D=2É$ñ%ƒQ×l6É,ñ%ƒUMÓl6É4ñ%ƒ!Q~®6É<ñ%ƒ=Qî6ÉDñ%ƒ†O×l6ÉLñ%ƒ¹OÁm6Édñ%æCVz=6ÉŒñ%æCV½s7Éœñ%æCVÎs8Éàñ%æÈO×m:Épò%æÈO×l;É€ò%æMùm;É ó%æMÐ==É„ó%æMn>ɨó%¶ Ù=?É´ó%…¯0©AÉÌó%ƒQ×lCÉÔó%ƒUMÓlCÉÜó%ƒ†O×lCÉäó%ƒ¹OÁmCÉüó%æCV>CÉtô%æCV½sDÉ„ô%æCVÎsEÉõ%æÈO×mGÉXõ%æÈO×lHÉhõ%æMùmHɸõ%æMf>JÉö%æMnKÉ(ö%%¶ w>LÉ4ö%…¯”¢NÉLö%ƒQž¤PÉTö%ƒUMÓlPÉ\ö%ƒ†O×lPÉdö%ƒ¹OÁmPÉ|ö%æCVÂ>PÉìö%æCV½sQÉüö%æCVÎsRÉt÷%æÈO×mTÉÔ÷%æÈO×lUÉä÷%æMùmUÉ@ø%æM?WÉø%æMnXÉ´ø%ƒü· ô‡Yɼø%ƒGúÌ) YÉÄø%ƒ8=ßkYÉÌø%ƒ=ßkYÉÔø%ƒ ¸ +@YÉÜø%ƒ$¸ 7@YÉäø%ƒ;¸ N@YÉìø%ƒT¸ GÌ YÉôø%ƒc¸ ×lYÉüø%ƒt¸ ¸…YÉù%ƒ£˜ ßkYÉ ù%ƒƒ¸ d@YÉù%ƒ¸ q@YÉù%ƒpªGÌ YÉ$ù%ƒ¸ GÌ YÉ,ù%ƒ«¸ €@YÉ4ù%ƒº¸ @YÉ<ù%ƒȸ ›@YÉDù%ƒÓ¸ «@YÉLù%ƒä¸ º@YÉTù%ƒò¸ É@YÉ\ù%ƒ ¹ Ø@YÉdù%ƒ¹ æ@YÉlù%ƒ,¹ õ@YÉtù%ƒ:¹ AYÉ|ù%ƒG¹ AYÉ„ù%ƒQ¹ AYÉŒù%ƒ[¹ AYÉ”ù%ƒg¹ AYÉœù%ƒw¹ *AYɨù%ƒ¹ ¹nZÉ´ù%ƒ¡¹ :†[ÉÀù%ƒ°¹ AA\ÉÌù%…¯OA]ÉÄú%ƒÌ¹ JBzÉÜú%ƒÕ¹ mB{É\û%ƒÝ¹ ¸…}Élû%ƒŽº ÉC}Étû%ƒ¢º ãC}É|û%ƒ·º D}É„û%ƒͺ )D}ÉŒû%ƒ⺠LD}É”û%…¯oD}ÉÄû%…¯Œ_‚ÉÌû%Fœ½ E‚ÉØû%…¯EƒÉðû%Fœ½´ö…Éü%…¯Œ_†Éü%Fœ½"E†Éü%…¯Œ_‡É$ü%Fœ½"E‡É0ü%…¯4EˆÉ@ü%Fœ½CE‰É|ü%…¯4EŠÉŒü%Fœ½CE‹ÉÈü%…¯VEŒÉèü%Fœ½“öÉý%…¯VEÉ(ý%Fœ½“ö“ÉHý%…¯VE”Éhý%Fœ½“ö—Ɉý%…¯Œ_˜Éý%Fœ½gE˜Éœý%…¯Œ_™É¤ý%Fœ½pE™É„þ%…¯Œ_šÉŒþ%Fœ½yEšÉ˜þ%…¯Œ_›É þ%Fœ½‚E›É¬þ%…¯‹EœÉÌþ%Fœ½“öŸÉÿ%…¯šE Éÿ%Fœ½¾¢É4ÿ%…¯šE£ÉLÿ%Fœ½X÷¥Édÿ%…¯šE¦É|ÿ%Fœ½Øÿ¨É”ÿ%…¯šE©É¬ÿ%Fœ½8÷«ÉÄÿ%…¯¤E¬Éäÿ%Fœ½´ö¯É&…¯Œ_°É &FB[“u°É$&…¯“u²É<&ÆÈO×m´ÉH&ÆÈO×lµÉh&ÆMùmµÉœ&ƒMbv·ÉÀ&ÆMn¸Éä&…¯¹n¹Éô&Fœ½ÛEºÉ8&…¯úE¼ÉP&Fœ½‘F¾É”&…¯Œ_¿Éœ&Fœ½û¿É¨&…¯Œ_Àɰ&Fœ½ûÀɼ&…¯ÁÕÁÉÌ&Fœ½ûÂÉà&…¯þÃÉð&Fœ½ÄÉ&…¯VEÅÉ4&Fœ½“öÈÉT&…¯ FÉÉt&Fœ½™ôÌÉ”&…¯¯FÍÉ´&Fœ½¾FÐÉÔ&…¯VEÑÉô&Fœ½ÈFÔÉ&]N_ÕÉ0&…¯¹nÕÉ@&λ áFÖÉH&ƒà» ßkÖÉT&ô» áFÖÉ\&ƒ¼ ßkÖÉh&¼ éFÖÉp&ƒ*¼ ßk×É|&A¼ éF×É„&ƒQ¼ ßkØÉ&ƒ†O×lØÉ˜&ƒ¹OÁmØÉ°&æCVKGØÉ€&æCV½sÙÉ&æCVÎsÚÉd&æÈO×mÜÉà&æÈO×lÝÉð&æMùmÝÉŒ&æM¹GßÉ &æMnàÉD&…¯¹náÉT&ƒqP×lâÉ\&…¯¹nâÉl&ƒqP×lãÉt&…¯ HãÉ„&†qP×läÉ”&…¯©Häɤ&†qP×låÉ´&ƒï¼ GÌ åɼ&ƒø¼ ,IåÉÄ&ƒ ½ GIåÉÌ&ƒ½ QIåÉÔ&ƒ8½ ^IåÉÜ&ƒ@½ sIåÉä&ƒN½ €IåÉð&ƒ_½ œIæÉü&ƒ|½ ªIçÉ &…¯ÀIèÉ@ &æÈO×mîÉ &æÈO×lïÉ &æMùmïÉØ &éZÝJñÉ &ƒ!èJòÉ4 &ƒúœúJóɘ &ƒ‡k¹nõɨ &ƒàk~†öɼ &ƒ«k¹n÷ÉÌ &ƒëkƒ†øÉÜ &ƒ„½ ¹nùÉì &ƒ•½ ¹núÉ$ &ƒµ½ KûÉ” &ƒÈ½ 0Kýɬ &ƒÚ½ ¹nÿÉÈ &æM|KÊp &æMnÊ” &…¯Œ_Ê  &ᶪ‘´ʤ &áñªpʬ &…¯Kʼ &Fœ½1pÊØ &…¯Œ_Êà &Fœ½±KÊL&…¯4EÊ\&Fœ½ÑK Ê&…¯4E Ê&Fœ½ÑK ʬ&…¯‹E ÊÌ&Fœ½“öÊ&…¯VEÊ$&Fœ½“öÊD&…¯ñKÊ\&Fœ½µõÊx&…¯‹Eʘ&Fœ½gõÊÈ&…¯‹EÊè&Fœ½gõ Ê&…¯VE"Ê8&Fœ½“ö%ÊX&…¯šE&Êp&Fœ½åõ(ʈ&…¯šE)Ê &Fœ½åõ+ʸ&…¯šE,ÊÐ&Fœ½åõ.Êì&…¯šE/Ê&Fœ½åõ1Ê&…¯ñK2Ê4&Fœ½¾4ÊL&…¯ñK5Êd&Fœ½X÷7Ê|&…¯ñK8Ê”&Fœ½Øÿ:ʬ&…¯ñK;ÊÄ&Fœ½8÷=ÊÜ&…¯ÿK>Ê&Fœ½LBÊ4&…¯‹ECÊT&Fœ½gõFÊ„&…¯EHÊœ&Fœ½´öJÊ´&…¯ñKKÊÌ&Fœ½8÷MÊä&…¯‹ENÊ&Fœ½gõQÊ4&…¯ESÊL&Fœ½´öUÊd&…¯šEVÊ|&Fœ½LXÊ”&…¯šEYʬ&Fœ½L[ÊÄ&…¯#L\ÊÔ&Fœ½,L]Êè&…¯¹n^Êø&Fœ½6L_Ê&…¯#LaÊ(&Fœ½#ùbÊ<&…¯FLcÊT&Fœ½´öeÊl&…¯FLfÊ„&Fœ½´öhÊœ&…¯FLiÊ´&Fœ½´ökÊÌ&…¯Œ_lÊØ&ᶪTLlÊä&áñªZLmÊð&…¯Œ_oÊü&ᶪTLoÊ&áñªZLpÊ&…¯Œ_rÊ&Fœ½:Ç rÊ(&…¯tsÊ8&Fœ½$1tÊL&…¯#LuÊ\&Fœ½kLvÊ”&…¯#Lwʤ&Fœ½‹LxÊü&…¯#LzÊ &Fœ½¦L{ÊX&…¯#L}Êh&Fœ½×L~ÊÀ&…¯#L€ÊÐ&Fœ½MÊ,&ƒ¾ ×lƒÊ4&ƒ¾ ×lƒÊ<&…¯x†ƒÊT&æCV#M…ÊÈ&æCV½s†ÊØ&æCVÎs‡ÊP&æÈO×m‰Ê”&æÈO×lŠÊ¤&æMùmŠÊì&æM?MŒÊ$&æMnÊH&…¯}&ŽÊX&Fœ½õ­Êl&…¯ð,‘Ê|&Fœ½ú,’Ê&…¯ -“Ê &Fœ½$-”ÊÄ&…¯@-•ÊÔ&Fœ½b-–Êø&…¯Œ_—Ê&Fœ½TL—Ê&…¯Œ_˜Ê&Fœ½TL˜Ê,&…¯Œ_™Ê4&Fœ½TL™ÊP&…¯RMšÊh&Fœ½]MœÊð&…¯Œ_Êø&Fœ½{MÊ&…¯Œ_žÊ$&Fœ½¥MžÊ0&…¯°MŸÊP&Fœ½ØM¢Êô&…¯x†£Ê &Fœ½‘´¥Ê &ƒü· ô‡¦Ê(&ƒg¾ t¦Ê0&ƒ³:ôM¦Ê8&ƒs¾ ßk¦Ê@&ƒ8=ßk¦ÊH&ƒ=ßk¦ÊP&ƒŽ9ßk¦ÊX&…¯N¦Ê˜&æCV.N­ÊH&æCV½s®ÊX&æCVÎs¯Ê&æÈO×m±ÊÌ&æÈO×l²ÊÜ&æMùm²Ê &æMeN´Ê8!&æMnµÊ\!&Ÿ¾ ”_¶Êd!&¬¾ Z¶ÊŒ"&ܾ ¯N·Êè"&æ¾ ˆ&»Ê#&ñ¾ fO½Ê%&c¿ ³OÅÊ<%&s¿ ÚOÇÊÐ%&~¿ SÉÊ)&Ú¿ œŽ ÐÊ )&ö¿ ŠSÐÊl)&À ”SÒʤ)&pÀ +TÝÊ*&”À QTãÊL*&±À ]Tçʨ*&ÅÀ qTëÊä*&ÒÀ „TîÊ+&äÀ šTðÊ@+&óÀ ¨Tòʸ+& “ lVôÊÄA&Á ³VøÊ(B&Á WþÊXB&MÁ ßWËÀB&XÁ mY ËD&…“ L\ËG&lÁ ŠSË0G&uÁ ‚\Ë\G&€Á ‘\Ë€G&‘Á Ð\!Ë´G&²Á %]#ËðG&ÌÁ Š^&ËøH&…¯Œ_+ËI&Fœ½ã^+Ë$I&…¯û^,ËtI&Fœ½1p4ˤJ&…¯¹n5Ë´J&Fœ½/_6ËðJ&…¯:_7ËK&Fœ½‘´8ËÔK&…¯Œ_9ËàK&ᶪ‘´9ËäK&áñªp:ËìK&…¯êK<ËüK&Fœ½k_=Ë,L&…¯êK>ËÇ ”_‰Ë,Z&Ëã”_‰Ë0Z&XÇ 4g‰ËÐZ&ðóZgŠË|[&aÇ dgŒË \&kÇ zgŽËœ\&Ç ŸgË<]&‰Ç ºgË€]&”Ç Ÿg‘Ëè]&©Ç Ëg’Ë^&¸Ç Õg”Ë8^&ÈÇ ïg–Ë ^&ÛÇ ÿg˜ËÐ^&êÇ h™Ëø^&üÇ BhšË€_&È qhœËè_&:È hžË\`&HÈ Ãh¢Ë`&]È áh¤ËÄ`&lÈ i¦Ë a&|È ,i¨ËLa&‹È ?iªËœa&šÈ Ri¬ËÈa&ªÈ i®Ëb&ºÈ ¤i°Ëß Ã´ùÍ|'Rß Ì´úÍ„'_ß µúͬ'‡ß ѵûÍx'šß ßµýÍ€'²ß ѵýÍ 'Ùß 9·ÿÍä']N_Îô'ƒ9à tÎü'ƒEà Ì) Î'ƒ|7ßkÎ '…¯I·Î,'ƒsà ×lÎ4'ƒ}à ¸…Î<'ƒŠà ¹nÎH'…¯X·Î`'æCV_·ÎÌ'æCV½s Îà'æCVÎs ÎT'æÈO×m Π'æÈO×l ΰ'æMùm Îü'”à {·Î '›à „·Î 'ƒ¥à †ÎH 'ƒ¯à -†Îx 'ƒºà ×lθ 'ƒÅà Îà 'ƒü¯ ¹nÎì 'ƒskŒ_Îð 'æM™·Î, 'æMnÎP '…¯¢·Îl 'éZηÎ| 'ƒíà ×·Έ 'ƒÁjà·Ψ 'ƒkî·ÎÐ 'ƒuÇ ‘´Îä 'ƒòà õ·Îø 'ƒskŒ_Î 'ƒýà ‘´ÎX 'ƒ á †Îx '…¯Œ_ ΀ 'Fœ½û ÎŒ '…¯Œ_!Δ 'Fœ½û!Π '…¯Œ_"Ψ 'Fœ½û"δ 'ƒ6á ×l#μ 'ƒ@á ¸#ÎÄ 'ƒJá ¹n#ÎÐ '…¯"¸$Îè 'æÈO×m&Î4 'æÈO×l'ÎD 'æMùm'Î '”à <¸)Π 'ƒ¥à †*ÎÜ 'ƒºà ×l*Î'ƒÅà *ÎT'ƒ¯à -†*΄'ƒTá Ól+Θ'ƒü¯ ¹n+Τ'ƒskŒ_,ÎÔ'æMm¸,Î'æMn-Î4'…¯Œ_.Î<'wá v¸.ÎH'ƒá ßk0ÎT'Šá ‹¸0Î\'ƒ‘á ßk1Îh'›á ˜¸1Îp'ƒ£á ßk2Î|'ƒ†O×l2Τ'ƒ¹OÁm2μ'æÈO×m2ÎŒ'æÈO×l3Μ'æMùm3ÎÌ'æM–¹5ÎÜ'æMn6Î'…¯®¹7Î'ƒQÓl9Î 'ƒUM¿¹9Î('…¯0º9Î8'ƒqP9º:Î@'…¯¢º:ÎP'ƒqP«º;ÎX'…¯ »;Îh'†QÓl<Îx'†UM¿¹<Έ'…¯»<Θ'†qP9º=Ψ'…¯»=θ'†qP«º>ÎÈ'ƒ®á ‰k>ÎÐ'ƒ¶á ×l>ÎØ'æCVU»>Î8'æCV½s?ÎH'æCVÎs@Τ'æÈO×mBÎè'æÈO×lCÎø'æMùmCÎD'…¯.hEÎX'æMÁ»GÎ'æMnHά'ƒðá î»Iδ'ƒ÷á ö»Iμ'ƒþá þ»IÎÄ'ƒâ ¼IÎÌ'ƒ â «IÎÔ'ƒâ ¼IÎà'ƒ$â ¼JÎì'ƒ+â ¼KÎø'ƒ3â )¼LÎ'ƒ:â «MÎ'…¯2¼NÎ@']N_SÎP'…¯¹nSÎ`'Ùã [¼TÎh'ƒëã ßkUÎt'ä [¼UÎ|'ƒä ßkVΈ')ä v¼VÎ'ƒ9ä ßkWΜ'Lä Œ¼WΤ'ƒ[ä ßkXΰ'mä §¼Xθ'ƒ€ä ßkYÎÄ'–ä §¼YÎÌ'ƒ¨ä ßkZÎØ'½ä ¼ZÎà'ƒËä ßk[Îì'Üä ݼ[Îô'ƒêä ßk\Î'ûä ø¼\Î'ƒ å ßk]Î' å ½]Î'ƒ2å ßk^Î('Gå §¼^Î0'ƒdå ßk_Î<'„å §¼_ÎD'ƒ å ßk`ÎP'¿å G½`ÎX'ƒÚå ßkaÎd'øå G½aÎl'ƒæ ßkbÎx'/æ g½b΀'ƒAæ ßkcÎŒ'Væ ‚½cΔ'ƒhæ ßkdΠ'}æ ¦½dΨ'ƒŒæ ßkeδ'žæ Žeμ'ƒ­æ ßkfÎÈ'¿æ õ½fÎÐ'ƒÏæ ßkgÎÜ'âæ ¾gÎä'ƒöæ ßkgÎð'ƒ†O×lgÎø'ƒ¹OÁmgÎ'…¯_¾gÎ 'ƒqPv¾hÎ('…¯_¾hÎ8'ƒqPv¾iÎ@'…¯z¿iÎP'ƒqPŒ¿jÎX'…¯ÀjÎh'ƒqP.ÀkÎp'…¯½Àk΀'ƒqPÔÀlΈ'…¯½ÀlΘ'ƒqPÔÀmΠ'…¯ÍÁmΰ'ƒqPäÁnθ'…¯rÂnÎÈ'ƒqP‰ÂoÎÐ'…¯ÃoÎà'ƒqP6ÃpÎè'…¯àÃpÎü'ƒqP ÄqÎ'…¯½ÀqÎ'ƒqPÔÀrÎ '…¯½ÀrÎ4'ƒqPÔÀsÎ<'…¯™ÅsÎP'ƒqPµÅtÎX'…¯™ÅtÎl'ƒqPµÅuÎt'…¯ÃÆuΈ'ƒqPÚÆvÎ'…¯uÇvΤ'ƒqP•Çwά'…¯4ÈwÎÀ'ƒqPOÈxÎÈ'…¯÷ÈxÎÜ'ƒqP#ÉyÎä'…¯ËÉyÎø'ƒqPæÉzÎ'…¯dÊzÎ'†qPv¾{Î '…¯mÊ{Î0'†qPv¾|Î@'…¯vÊ|ÎP'†qPŒ¿}Î`'…¯Ê}Îp'†qP.À~΀'…¯ˆÊ~Î'†qPÔÀΠ'…¯‘Êΰ'†qPÔÀ€ÎÀ'…¯šÊ€ÎÐ'†qPäÁÎà'…¯£ÊÎð'†qP‰Â‚Î'…¯¬Ê‚Î'†qP6ÃΠ'…¯µÊƒÎ0'†qP Ä„Î@'…¯¾Ê„ÎP'†qPÔÀ…Î`'…¯ÇÊ…Îp'†qPÔÀ†Î€'…¯ÐʆÎ'†qPµÅ‡Î '…¯Ùʇΰ'†qPµÅˆÎÀ'…¯âʈÎÐ'†qPÚÆ‰Îà'…¯ëʉÎð'†qP•ÇŠÎ'…¯ôÊŠÎ'†qPOȋΠ'…¯ýÊ‹Î0'†qP#ÉŒÎ@'…¯ËŒÎP'†qPæÉÎ`'…¯ËÎp'Fœ½%ˎΜ'…¯;Ëά'Fœ½VËÎÀ'…¯Ë‘ÎÐ'Fœ½%Ë’Îü'…¯;˓Π'Fœ½V˔Π'…¯Œ_•Î('Fœ½cË•Î4'…¯lË–ÎD'Fœ½‡Ë—ÎT'…¯Œ_˜Î\'Fœ½c˘Îh'…¯lË™Îx'Fœ½‡ËšÎˆ'…¯Œ_›Î'Fœ½c˛Μ'…¯l˜ά'Fœ½‡Ëμ'…¯Œ_žÎÄ'Fœ½cËžÎÐ'…¯lËŸÎà'Fœ½‡Ë Îð'…¯Œ_¡Îø'Fœ½cË¡Î'…¯lË¢Î'Fœ½‡Ë£Î$'…¯Œ_¤Î,'Fœ½cˤÎ8'…¯lË¥ÎH'Fœ½‡Ë¦ÎX'…¯Œ_§Î`'Fœ½c˧Îl'…¯l˨Î|'Fœ½‡Ë©ÎŒ'…¯Œ_ªÎ”'Fœ½c˪Π'…¯l˫ΰ'Fœ½‡Ë¬ÎÀ'…¯Œ_­ÎÈ'Fœ½cË­ÎÔ'…¯lË®Îä'Fœ½‡Ë¯Îô'…¯Œ_°Îü'Fœ½c˰Î'…¯l˱Î'Fœ½‡Ë²Î('…¯Œ_³Î0'Fœ½c˳Î<'…¯lË´ÎL'Fœ½‡ËµÎ\'…¯Œ_¶Îd'Fœ½c˶Îp'…¯l˷΀'Fœ½‡Ë¸Î'…¯Œ_¹Î˜'Fœ½%˹μ'…¯;˺ÎÌ'Fœ½VË»Îà'…¯Œ_¼Îè'Fœ½%˼Π'…¯;˽Π'Fœ½V˾Î0 '…¯Œ_¿Î8 'Fœ½™Ë¿ÎL '…¯¢ËÀÎ\ 'Fœ½½ËÁÎl '…¯Œ_ÂÎt 'Fœ½ÏËÂ΀ '…¯ØËÃÎ 'Fœ½óËÄΠ '…¯Œ_ÅΨ 'Fœ½ÏËÅδ '…¯ØËÆÎÄ 'Fœ½óËÇÎÔ '…¯Œ_ÈÎÜ 'Fœ½ÌÈÎð '…¯ÌÉÎ!'Fœ½)ÌÊÎ!'…¯Œ_ËÎ!'Fœ½;ÌËÎ,!'…¯DÌÌÎϼ+'Fœ½Ï?ÏÌ+'…¯Œ_@ÏÔ+'Fœ½ÑÎ@Ïü+'…¯ßÎAÏ ,'Fœ½ÏBÏ,'…¯Œ_CÏ$,'Fœ½ÑÎCÏL,'…¯ßÎDÏ\,'Fœ½ÏEÏl,'…¯Œ_FÏt,'Fœ½ÑÎFÏœ,'…¯ßÎGϬ,'Fœ½ÏHϼ,'…¯Œ_IÏÄ,'Fœ½ÑÎIÏì,'…¯ßÎJÏü,'Fœ½ÏKÏ -'…¯Œ_LÏ-'Fœ½ÑÎLÏ<-'…¯ßÎMÏL-'Fœ½ÏNÏ\-'…¯Œ_OÏd-'Fœ½ÏOÏp-'…¯$ÏPÏ€-'Fœ½?ÏQÏ-'…¯Œ_RϘ-'Fœ½ZÏRÏÀ-'…¯lÏSÏÐ-'Fœ½™ÏTÏà-'…¯Œ_UÏè-'Fœ½´ÏUÏô-'…¯ÁÏVÏ.'Fœ½äÏWÏ.'…¯Œ_XÏ.'Fœ½ÐXÏ@.'…¯2ÐZÏP.'Fœ½€Ð[Ïd.'…¯Œ_\Ïl.'Fœ½§Ð\Ïx.'…¯´Ð]ψ.'Fœ½×Ð^Ϙ.'…¯Œ__Ï .'Fœ½§Ð_Ϭ.'…¯´Ð`ϼ.'Fœ½×ÐaÏÌ.'…¯Œ_bÏÔ.'Fœ½íÐbÏä.'…¯ÿÐdÏô.'Fœ½×ÐeÏ/'…¯Œ_fÏ/'Fœ½§ÐfÏ /'…¯´ÐgÏ0/'Fœ½×ÐhÏ@/'…¯Œ_iÏH/'Fœ½§ÐiÏX/'…¯´ÐjÏh/'Fœ½×ÐkÏx/'…¯Œ_lÏ€/'Fœ½§ÐlÏ/'…¯´ÐmÏ /'Fœ½×Ðnϰ/'…¯Œ_oϸ/'Fœ½§ÐoÏÄ/'…¯´ÐpÏÔ/'Fœ½×ÐqÏä/'…¯Œ_rÏì/'Fœ½§ÐrÏø/'…¯´ÐsÏ0'Fœ½×ÐtÏ0'…¯Œ_uÏ 0'Fœ½§ÐuÏ,0'…¯´ÐvÏ<0'Fœ½×ÐwÏL0'…¯Œ_xÏT0'Fœ½§ÐxÏ`0'…¯´ÐyÏp0'Fœ½×ÐzÏ€0'…¯Œ_{ψ0'Fœ½§Ð{Ï”0'…¯´Ð|Ϥ0'Fœ½×Ð}Ï´0'…¯qÌ~ÏÌ0'Fœ½§Ð€Ïä0'…¯Œ_Ïì0'Fœ½ÑÏ1'…¯9Ñ‚Ï 1'Fœ½×ЃÏ41'…¯qÌ„ÏL1'Fœ½§Ð†Ïd1'…¯Œ_‡Ïl1'Fœ½Ñ‡Ï1'…¯9шϠ1'Fœ½×Љϴ1'…¯Œ_ŠÏ¼1'Fœ½§ÐŠÏÈ1'…¯´Ð‹ÏØ1'Fœ½×ÐŒÏè1'…¯Œ_Ïð1'Fœ½§ÐÏü1'…¯´ÐŽÏ 2'Fœ½×ÐÏ2'…¯Œ_Ï$2'Fœ½§ÐÏ02'…¯´Ð‘Ï@2'Fœ½×Ð’ÏP2'…¯]Ñ“Ïh2'Fœ½vѕϠ2'…¯:Ì–ϰ2'Fœ½VË—ÏÀ2'…¯]Ñ˜ÏØ2'Fœ½FÛ šÏ3'ƒ¾ ×l›Ï 3'ƒ¾ ×l›Ï(3'…¯x†›Ï@3'æCV…ÑÏ´3'æCV½sžÏÄ3'æCVÎsŸÏ<4'æÈO×m¡Ï€4'æÈO×l¢Ï4'æMùm¢ÏØ4'æM¨Ñ¤Ï5'æMn¥Ï45']N_¦Ï,6'…¯¹n¦Ï<6'ßé ÀѧÏD6'ƒêé ßk§ÏP6'÷é ÀѧÏX6'ƒê ßk§Ïd6' ê ÀѧÏl6'ƒ… ßk§Ïx6'ÿkÀѧπ6'ƒê ßk§ÏŒ6'!ê Àѧϔ6'ƒ+ê ßk§Ï 6'7ê ÀѧϨ6'ƒ@ê ßk§Ï´6'Kê Àѧϼ6'ƒWê ßk§ÏÈ6'eê ÈѧÏÐ6'ƒtê ßk¨ÏÜ6'†ê ÀѨÏä6'ƒê ßk¨Ïð6'¶ê ÀÑ¨Ïø6'ƒÊê ßk¨Ï7'àê ÀÑ¨Ï 7'ƒðê ßk¨Ï7'ë ÀÑ¨Ï 7'ƒë ßk¨Ï,7'2ë ÀѨÏ47'ƒFë ßk¨Ï@7'\ë ÀѨÏH7'ƒpë ßk¨ÏT7'†ë ÀѨÏ\7'ƒšë ßk¨Ïh7'°ë ÀѨÏp7'ƒÁë ßk¨Ï|7'Ôë ÀѨτ7'ƒçë ßk¨Ï7'üë ÀѨϘ7'ƒì ßk¨Ï¤7'&ì ÀѨϬ7'ƒ9ì ßk¨Ï¸7'Nì ÀѨÏÀ7'ƒfì ßk¨ÏÌ7'€ì ÀѨÏÔ7'ƒ”ì ßk¨Ïà7'ƒ†O×l¨Ïè7'ƒ¹OÁm¨Ï8'æCVÒ¨Ï|8'æCV½s©ÏŒ8'æCVÎsªÏ9'æÈO×m¬Ï(9'æÈO×l­Ï89'æMùm­Ï°9'æM\Ò¯Ï:'æMn°Ï8:'…¯uÒ±ÏH:'ƒqP~Ò²ÏP:'…¯éÒ²Ï`:'†qP~Ò³Ïp:'ªì þÒ³Ïx:'…¯Ó´Ïˆ:'ƒqPÓµÏ:'ƒ†O×lµÏ˜:'ƒ¹OÁmµÏ°:'æCVˆÓµÏü:'æCV½s¶Ï ;'æCVÎs·Ïd;'æÈO×m¹Ï ;'æÈO×lºÏ°;'æMùmºÏø;'æM×Ó¼Ï8<'æMn½Ï\<'µì èÓ¾Ïh<'…¯ÿÓÁψ<'ƒQ¹¹ ÄÏ<'ƒUMîÄϘ<'ƒ!Q×lÄÏ <'ƒ†O×lÄϨ<'ƒ¹OÁmÄÏÀ<'æCVvÔÄÏx='æCV½sÅψ='æCVÎsÆÏ<>'æÈO×mÈϨ>'æÈO×lÉϸ>'æMùmÉÏ0?'æMõÔËÏ”?'æMnÌϸ?'Èì ÕÍÏÄ?'…¯ÿÓÐÏä?'ƒQ¹¹ ÓÏì?'ƒUMîÓÏô?'ƒ!Q×lÓÏü?'ƒ†O×lÓÏ@'ƒ¹OÁmÓÏ@'æCVÕÓÏÔ@'æCV½sÔÏä@'æCVÎsÕϘA'æÈO×m×ÏB'æÈO×lØÏB'æMùmØÏŒB'æMÖÚÏðB'æMnÛÏC'Ûì ÖÜÏ C'…¯x†ÞÏ8C'ƒQ×làÏ@C'ƒUM×làÏHC'ƒ†O×làÏPC'ƒ¹OÁmàÏhC'æCVbÖàÏìC'æCV½sáÏüC'æCVÎsâψD'æÈO×mäÏÔD'æÈO×låÏäD'æMùmåÏ0E'æM¨ÖçÏxE'æMnèÏœE'ñì ¹ÖéϨE'…¯x†ëÏÀE'ƒQ×líÏÈE'ƒUM×líÏÐE'ƒ†O×líÏØE'ƒ¹OÁmíÏðE'æCV ×íÏtF'æCV½sîÏ„F'æCVÎsïÏG'æÈO×mñÏ\G'æÈO×lòÏlG'æMùmòϸG'æMP×ôÏH'æMnõÏ$H'í a×öÏ0H'…¯x†øÏHH'ƒQ×lúÏPH'ƒUM×lúÏXH'ƒ†O×lúÏ`H'ƒ¹OÁmúÏxH'æCV²×úÏüH'æCV½sûÏ I'æCVÎsüϘI'æÈO×mþÏäI'æÈO×lÿÏôI'æMùmÿÏ@J'æMø×ЈJ'æMnЬJ'í ØиJ'…¯x†ÐÐJ'ƒQ×lÐØJ'ƒUM×lÐàJ'ƒ†O×lÐèJ'ƒ¹OÁmÐK'æCVZØЄK'æCV½sДK'æCVÎs Ð L'æÈO×m ÐlL'æÈO×l Ð|L'æMùm ÐÈL'æM ØÐM'æMnÐ4M'/í ±ØÐ@M'…¯x†ÐXM'ƒQ×lÐ`M'ƒUM×lÐhM'ƒ†O×lÐpM'ƒ¹OÁmЈM'æCVÙÐ N'æCV½sÐN'æCVÎsШN'æÈO×mÐôN'æÈO×lÐO'æMùmÐPO'æMHÙИO'æMnмO'Fí YÙÐÈO'…¯x†ÐàO'ƒQ×l!ÐèO'ƒUM×l!ÐðO'ƒ†O×l!ÐøO'ƒ¹OÁm!ÐP'æCVªÙ!ДP'æCV½s"ФP'æCVÎs#Ð0Q'æÈO×m%Ð|Q'æÈO×l&ÐŒQ'æMùm&ÐØQ'æMðÙ(Ð R'æMn)ÐDR'^í Ú*ÐPR'…¯x†,ÐhR'ƒQ×l.ÐpR'ƒUM×l.ÐxR'ƒ†O×l.ЀR'ƒ¹OÁm.ИR'æCVRÚ.ÐS'æCV½s/Ð,S'æCVÎs0иS'æÈO×m2ÐT'æÈO×l3ÐT'æMùm3Ð`T'æM˜Ú5ШT'æMn6ÐÌT'uí ±Ú7ÐØT'…¯ÀÚ:ÐøT'ƒQËÚ=ÐU'ƒUM×l=ÐU'ƒ!Q×l=ÐU'ƒ†O×l=ÐU'ƒ¹OÁm=Ð0U'æCV%Û=ÐôU'æCV½s>ÐV'æCVÎs?ÐÄV'æÈO×mAÐ,W'æÈO×lBÐÑty'…¯Œ_?Ñ|y'Fœ½gæ?шy'…¯¹n@јy'Fœ½‘´AѨy'…¯Œ_BѰy'Fœ½gæBѼy'…¯NìCÑ z'FؤåëKÑ{'FskŒ_LÑÈ{'Fê¤ßkLÑ|'Fù¤ìLÑ |'F ¥#ìLÑ<|'…¯ÇêLÑT|'Fœ½yêNÑÀ|'…¯ èOÑÐ|'Fœ½ÜìPÑè|'…¯Œ_QÑð|'Fœ½ñìQÑü|'…¯¹nRÑ }'Fœ½‘´SÑ}'…¯íTÑD}'Fœ½íXÑt}'…¯2íYÑ„}'Fœ½KíZÑœ}'…¯ è[Ѭ}'Fœ½dí\Ѽ}'…¯Œ_]ÑÄ}'Fœ½í]Ñø}'…¯´í^Ñ~'Fœ½Äí_Ñ~'…¯Ôí`Ñ0~'Fœ½îbÑ'…¯Œ_cÑ'Fœ½:îcÑ$'…¯Œ_dÑ,'Fœ½LîdÑ8'…¯ èeÑH'Fœ½ÜìfÑX'…¯Œ_gÑ`'Fœ½ñìgÑl'…¯¹nhÑ|'Fœ½‘´iÑŒ'…¯íjÑ´'Fœ½ínÑä'…¯2íoÑô'Fœ½KípÑ €'…¯ èqÑ€'Fœ½DìrÑ4€'…¯Œ_sÑ<€'Fœ½gæsÑH€'…¯¹ntÑX€'Fœ½‘´uÑh€'…¯Œ_vÑp€'Fœ½gævÑ|€'…¯ èwÑŒ€'Fœ½ZîxѤ€'…¯Œ_yѬ€'Fœ½oîyѸ€'…¯îzÑÈ€'Fœ½Ÿî{ÑØ€'…¯ è|Ñè€'Fœ½¯î}Ñü€'…¯ è~Ñ 'Fœ½DìÑ'…¯Œ_€Ñ$'Fœ½gæ€Ñ0'…¯¹nÑ@'Fœ½‘´‚ÑP'…¯Œ_ƒÑX'Fœ½gæƒÑd'…¯ è„Ñt'Fœ½Dì…Ñ„'…¯Œ_†ÑŒ'Fœ½gæ†Ñ˜'…¯¹n‡Ñ¨'Fœ½‘´ˆÑ¸'…¯Œ_‰ÑÀ'Fœ½gæ‰ÑÌ'…¯ÈîŠÑ$‚'Fؤú“у'FskŒ_”Ѥƒ'Fê¤ßk”ÑØƒ'Fù¤-ú”Ñäƒ'F ¥5ú”Ñ„'…¯âî”ÑL„'Fœ½ïî™Ñˆ„'…¯ýîšÑØ„'Fؤ§ÿ¢Ñ°…'FskŒ_£ÑT†'Fê¤ßk£Ñˆ†'Fù¤µÿ£Ñ”†'F ¥½ÿ£ÑĆ'…¯ï£Ñì†'Fœ½"ï§Ñ$‡'…¯Çê¨Ñ<‡'Fœ½0ïªÑT‡'…¯Œ_¬Ñ\‡'Fœ½@ï¬Ñh‡'…¯Œ_®Ñp‡'Fœ½@ï®Ñ|‡'…¯Çê°Ñ”‡'Fœ½0ï²Ñ¬‡'…¯Çê´Ñć'Fœ½0ï¶Ñ܇'…¯Ôí¸Ñô‡'Fœ½0ïºÑ ˆ'…¯Ôí¼Ñ$ˆ'Fœ½Lï¾Ñ<ˆ'…¯¹nÀÑLˆ'Fœ½¿ß ÁÑ`ˆ'…¯ÔíÂÑxˆ'Fœ½0ïÄш'…¯ èÆÑ ˆ'Fœ½‚ïÇѸˆ'…¯Œ_ÈÑÀˆ'Fœ½«ïÈÑĈ'…¯¹nÉÑÔˆ'Fœ½@ðÊÑ0‰'…¯Œ_ËÑ8‰'Fœ½@ðËÑD‰'…¯ èÌÑT‰'Fœ½‚ïÍÑl‰'…¯Œ_ÎÑt‰'Fœ½«ïÎÑx‰'…¯¹nÏш‰'Fœ½@ðÐÑä‰'…¯Œ_ÑÑì‰'Fœ½@ðÑÑø‰'…¯ èÒÑŠ'Fœ½ZîÓÑ Š'…¯Œ_ÔÑ(Š'Fœ½oîÔÑ4Š'…¯îÕÑDŠ'Fœ½ŸîÖÑTŠ'…¯ è×ÑdŠ'Fœ½¯îØÑxŠ'…¯ÇêÙÑŠ'Fœ½ÒðÛÑt‹'…¯ èÜÑ„‹'Fœ½öðÝÑ”‹'…¯Œ_ÞÑœ‹'Fœ½3ñÞÑÀ‹'…¯¹nßÑЋ'Fœ½‘´àÑà‹'…¯Œ_áÑè‹'Fœ½TñáÑŒ'…¯ñâÑ4Œ'Fœ½üñåѤŒ'…¯Œ_æÑ¬Œ'Fœ½òæÑ¸Œ'…¯¹nçÑÈŒ'Fœ½0òèÑðŒ'…¯ èéÑ'Fœ½>òêÑ'…¯Œ_ëÑ 'Fœ½eòëÑD'…¯†òìÑT'Fœ½–òíÑd'…¯ èîÑt'Fœ½ÞòïÑø'…¯ èðÑŽ'Fœ½ óñÑ Ž'…¯Œ_òÑ(Ž'Fœ½"óòÑLŽ'…¯¹nóÑ\Ž'Fœ½‘´ôÑtŽ'…¯Œ_õÑ|Ž'Fœ½1óõѤŽ'…¯EóöÑôŽ'Fؤ^óþÑÌ'FskŒ_ÿÑp'Fê¤ßkÿѤ'Fù¤B ÿѰ'F ¥lóÿÑà'…¯ñÿÑ‘'Fœ½¨óÒØ‘'…¯ èÒè‘'Fœ½ óÒ’'…¯Œ_Ò ’'Fœ½"óÒ0’'…¯¹nÒ@’'Fœ½‘´ÒX’'…¯Œ_Ò`’'Fœ½1óÒˆ’'…¯¶ó ÒØ’'FؤüÒ°“'FskŒ_ÒT”'Fê¤ßkÒˆ”'Fù¤üÒ””'F ¥üÒÄ”'…¯ñÒä”'Fœ½ÏóÒÄ•'…¯ èÒÔ•'Fœ½ÝóÒä•'…¯Œ_Òì•'Fœ½ôÒ–'…¯FôÒ –'Fœ½VôÒ0–'…¯ èÒ@–'Fœ½fôÒt–'…¯‹ôÒŒ–'Fœ½ÑôÒì–'…¯ è Òü–'Fœ½ßô!Ò —'…¯Œ_"Ò—'Fœ½õ"Ò8—'…¯'õ#ÒH—'Fœ½7õ$ÒX—'…¯ è%Òh—'Fœ½Gõ&Òœ—'…¯aõ'Ò´—'Fœ½œõ)Ò˜'…¯ è*Ò$˜'Fœ½ªõ+Ò<˜'…¯Œ_,ÒD˜'Fœ½Ñõ,Òh˜'…¯òõ-Òx˜'Fœ½ö.Òˆ˜'…¯Œ_/Ò˜'Fœ½ö/Ò¼˜'…¯ è0Ò̘'Fœ½-ö1Òܘ'…¯Œ_2Òä˜'Fœ½Wö2Ò™'…¯zö3Ò ™'Fœ½Šö4Ò0™'…¯Œ_5Ò8™'Fœ½šö5Òl™'…¯¸ö6ÒŒ™'Fœ½?÷9ÒÈ›'…¯ê :ÒØ›'Fœ½‘´;Òè›'…¯I÷<Òœ'Fœ½‘´?Ò`œ'…¯c÷@Òxœ'Fœ½‘´BÒ”œ'…¯ê CÒ¤œ'Fœ½‘´DÒ'…¯~÷EÒ 'Fœ½‘´GÒÌ'…¯Œ_HÒÔ'Fœ½÷HÒà'…¯Œ_IÒè'Fœ½§÷IÒž'…¯Œ_JÒž'Fœ½°÷JÒ8ž'…¯½÷KÒXž'Fœ½Ì÷NÒ„ž'…¯ï÷OÒ”ž'Fœ½øPÒ¨ž'…¯Œ_QÒ°ž'Fœ½WøQÒÌž'…¯êKRÒÜž'Fœ½‰øSÒðž'…¯ÇêTÒŸ'Fœ½ øVÒàŸ'…¯ÇêWÒøŸ'Fœ½ øYÒÔ '…¯Œ_ZÒà 'ᶪgæZÒ¡'áñª¯ø[Ò8¡'…¯Õø]Ò`¡'Fœ½TùaÒ`£'…¯Œ_bÒh£'Fœ½éùbÒ¤£'…¯êKdÒ´£'Fœ½‰øeÒÈ£'…¯úfÒ¤'Fœ½?÷lÒ€©'…¯ñmÒ ©'Fœ½,,pÒÜ©'…¯JýqÒLª'Fؤ¾þ}ÒØ¬'FskŒ_~Ò|­'Fê¤ßk~Ò°­'Fù¤Ìþ~Ò¼­'F ¥Ôþ~Òè­'…¯ è~Òø­'Fœ½ÁýÒ,®'…¯æý€Ò´®'FؤKþÒ@±'FskŒ_Òä±'Fê¤ßkÒ²'Fù¤YþÒ$²'F ¥uþÒ`²'…¯ÇêÒx²'Fœ½‚þ’Ò¼²'…¯ è“Ò̲'Fœ½ÿ”Ò´'…¯ÿ•Ò$´'Fœ½.ÿ–Òl´'…¯Œ_—Òt´'Fœ½û—Ò€´'…¯Dÿ˜Ò´'Fœ½Sÿ™Ò¤´'…¯]ÿšÒ´´'Fœ½ÿ›ÒØ´'…¯ŽÿœÒ@µ'Fؤ¬ÿ§ÒĶ'FskŒ_¨Òh·'Fê¤ßk¨Òœ·'Fù¤¼ÿ¨Ò¨·'F ¥Æÿ¨ÒØ·'…¯Õÿ¨Ò¸'Fœ½áÿ¬Ò@¸'…¯Œ_­ÒH¸'Fœ½ëÿ­ÒT¸'…¯Èk®Òd¸'Fœ½ðÿ¯Ò|¸'…¯ùÿ°Ò”¸'Fœ½²ÒÀ¸'…¯Œ_´Òȸ'Fœ½òú´Ò̸'…¯)éµÒܸ'Fœ½†¶Òð¸'…¯)é·Ò¹'Fœ½†¸Ò¹'…¯)é¹Ò$¹'Fœ½-†ºÒ8¹'…¯)é»ÒH¹'Fœ½Dì¼ÒX¹'…¯)é½Òh¹'Fœ½ªõ¾Òx¹'…¯)é¿Òˆ¹'Fœ½>òÀÒ˜¹'…¯)éÁÒ¨¹'Fœ½ ÂÒ¸¹'…¯)éÃÒȹ'Fœ½ÜìÄÒØ¹'…¯)éÅÒè¹'Fœ½ZîÆÒø¹'…¯)éÇÒº'Fœ½DìÈÒº'…¯)éÉÒ(º'Fœ½%ÊÒ8º'…¯)éËÒHº'Fœ½.ÌÒXº'…¯)éÍÒhº'Fœ½;ÎÒxº'…¯)éÏÒˆº'Fœ½HÐÒ˜º'…¯)éÑÒ¨º'Fœ½UÒÒ¸º'…¯)éÓÒȺ'Fœ½bÔÒØº'…¯)éÕÒèº'Fœ½oÖÒøº'…¯)é×Ò»'Fœ½xØÒ»'…¯)éÙÒ(»'Fœ½—ÚÒ8»'…¯)éÛÒH»'Fœ½¤ÜÒX»'…¯)éÝÒh»'Fœ½ÓÞÒx»'…¯)éßÒˆ»'Fœ½äàÒ˜»'…¯)éáÒ¨»'Fœ½ñâÒ¸»'…¯)éãÒÈ»'Fœ½þäÒØ»'…¯)éåÒè»'Fœ½æÒø»'…¯)éçÒ¼'Fœ½èÒ¼'…¯!éÒP¼'Fؤ9ïÒ0½'FskŒ_ðÒÔ½'Fê¤ßkðÒ¾'Fù¤D·ðÒ¾'F ¥GðÒ8¾'…¯TðÒP¾'Fœ½_òÒ|¾'…¯móÒ”¾'Fœ½-ùõÒ°¾'…¯šöÒо'Fœ½-ùùÒø¾'…¯Œ_úÒ¿'Fœ½ôúÒX¿'…¯ ûÒh¿'Fœ½-ùüÒx¿'…¯ ýÒˆ¿'Fœ½-ùþÒ€  +ÿÒ€ " 0Ó€ © ;Ó€  E Ó€ ^ +Ó˜¿'} NÓ ¿' j™Ó¤¿' j™Ó¬¿'® NÓ´¿'¾ j™Ó¸¿'Ò j™Ó¼¿'æ j™ÓÀ¿'û j™ÓÄ¿' j™ÓÈ¿'' j™ÓÌ¿'9 j™Óп']N_Ó<Ç'k óÓ¨Ç'u )ÓàÇ' FÓ4È'…¯’ÓLÈ'Fœ½~ÓˆÈ'…¯’Ó È'Fœ½~!ÓÜÈ'…¯ˆ“"ÓLÉ'Fؤ!.Ó8Ë'FskŒ_/ÓèË'Fê¤ßk/Ó$Ì'Fù¤2/Ó0Ì'F ¥=/ÓtÌ'…¯Œ_/Ó|Ì'Fœ½[/ÓˆÌ'…¯¹n1Ó˜Ì'Fœ½€2ÓÀÌ'…¯¹n3ÓÐÌ'Fœ½§4Ó$Í'…¯ý”5Ó4Í'Fœ½ð6ÓLÍ'…¯4•7Ó\Í'Fœ½ý8ÓxÍ'…¯Œ_9Ó€Í'Fœ½~9Ó„Í'…¯Œ_:ÓŒÍ'Fœ½:ÓÍ'…¯Œ_;Ó˜Í'Fœ½;ÓœÍ'…¯Œ_<Ó¨Í'ᶪU<Ó´Í'áñªM=ÓÀÍ'…¯Œ_?ÓÈÍ'Fœ½9?ÓøÍ'…¯˜@ÓÎ'Fœ½AÓÎ'…¯Œ_BÓ$Î'Fœ½zBÓ0Î'Ú CÓPÎ'ã «DÓdÎ'æ ÃFÓxÎ'ð àHÓŒÎ'…¯Œ_IÓ”Î'Fœ½?|IÓ¤Î'…¯yJÓ´Î'Fœ½?|KÓÈÎ'…¯ô7 LÓØÎ'Fœ½?|MÓðÎ'…¯Œ_NÓøÎ'Fœ½UNÓÏ'…¯ OÓÏ'Fœ½òúPÓ(Ï'…¯%QÓXÏ'Fؤ-VÓÐ'FskŒ_WÓÀÐ'Fê¤ßkWÓôÐ'Fù¤ÓlWÓÑ'F ¥7WÓ Ñ'…¯ÇŠWÓ8Ñ'Fœ½æbYÓ`Ñ'…¯¤ZÓ Ñ'Fؤ_-aÓ¨Ò'FskŒ_bÓLÓ'Fê¤ßkbÓ€Ó'Fù¤¤ˆbÓŒÓ'F ¥p-bÓ¬Ó'…¯Œ_bÓ´Ó'Fœ½æbbÓÄÓ' ”¶cÓ0Ô' ]dÓpÔ'7 mfÓ´Ô'g žiÓˆÕ's ªkÓÕ'‰ ²kÓ˜Õ'¡ ²kÓ Õ'¼ ºkÓ¨Õ'á ÖkÓÈÕ' lÓÖ'8 (mÓ Ö'T 1nÓÖ'q 1oÓ(Ö'Ÿ i;pÓ8Ö'Çi;qÓHÖ'HErÓXÖ'¦ MsÓhÖ' ·tÓxÖ'² uÓˆÖ'» XvÓ˜Ö'É XxÓ¨Ö'à i;zÓ¼Ö'õ c{ÓÈÖ'ü q|ÓìÖ' ”_~ÓôÖ'. ˜_~ÓüÖ'L {Ó(×'] {€ÓT×'p {Ó€×'ƒ q‚Ó¬×'“ c„Óô×'ª p…Ó Ø'Î ‡Ó(Ø'ã ñˆÓˆØ'ù ‰Ó”Ø'  ŠÓ¤Ø' & ‹Ó¸Ø' dQ ŒÓÀØ') 4 ŒÓÐØ'1 O ÓüØ'<] í ŽÓÌÙ'M E ÓÚ'V g ’Ó8Ú'` Í ”ÓˆÚ'l  —Ó¨Ú'q B ™Ó°Ú' S ™ÓØÚ'‰ ž ›ÓÛ'• ó žÓ8Û'¡ j  Ó¬Û'« ö £ÓøÛ'° ! ¥ÓÜ'½ J §Ó(Ü'É ]a©Ó0Ü'÷ `©ÓDÜ' `ªÓÝ'…¯| «Ó4Ý'…¯Œ_­Ó<Ý'FB[“u­ÓTÝ'…¯“u¯ÓlÝ'ƒ”[ù±ÓtÝ'ƒí"‡±Ó|Ý'ÆÈO×m±ÓØÝ'ÆÈO×l²ÓèÝ'ÆMùm²ÓXÞ'ƒMbv´ÓÄÞ'ÆMnµÓèÞ'…¯ ¶ÓøÞ'…¯Œ_·Óß'FB[“u·Óß'…¯“u¹Ó0ß'ƒ”[q»Ó8ß'ÆÈO×m»Ótß'ÆÈO×l¼Ó„ß'ÆMùm¼ÓÔß'Æ'^Ól¾Óà'ƒMbv¾Ó\à'ÆMn¿Ó€à'…¯Œ_ÀÓˆà'FB[“uÀÓ à'…¯“uÂÓ¸à'ÆÈO×mÄÓÄà'ÆÈO×lÅÓäà'ÆMùmÅÓá'ƒMbvÇÓ<á'ÆMnÈÓ`á'…¯Ç ÉÓxá'…¯Œ_ËÓ€á'FB[“uËÓ˜á'…¯“uÍÓ°á'ƒ”[Ö ÏÓ¸á'ƒí"‡ÏÓÀá'ÆÈO×mÏÓ8â'ÆÈO×lÐÓHâ'ÆMùmÐÓìâ'Æ'^ÓlÒÓ ã'ƒMbvÒÓã'ÆMnÓÓ´ã'…¯Ç ÔÓÌã'…¯Œ_ÖÓÔã'FB[“uÖÓìã'…¯“uØÓä'ƒ”[Ö ÚÓ ä'ƒí"‡ÚÓä'ÆÈO×mÚÓŒä'ÆÈO×lÛÓœä'ÆMùmÛÓ@å'Æ'^ÓlÝÓtå'ƒMbvÝÓäå'ÆMnÞÓæ'…¯K¥ßÓ æ'…¯Œ_áÓ(æ'FB[“uáÓ@æ'…¯“uãÓXæ'ƒ”[ÓlåÓ`æ'ƒí"‡åÓhæ'ÆÈO×måÓÌæ'ÆÈO×læÓÜæ'ÆMùmæÓLç'ƒMbvèÓ¸ç'ÆMnéÓÜç'…¯=êÓüç'…¯Œ_íÓè'FB[“uíÓè'…¯“uïÓ4è'ƒ”[ÓlñÓ<è'ƒí"×lñÓDè'ƒ÷"‡ñÓLè'ÆÈO×mñÓÈè'ÆÈO×lòÓØè'ÆMùmòÓdé'ƒMbvôÓèé'ÆMnõÓ ê'…¯ÕföÓê'…¯Œ_÷Ó$ê'FB[“u÷Ó<ê'…¯“uùÓTê'ƒ”[‡ûÓ\ê'ÆÈO×mûÓ˜ê'ÆÈO×lüÓ¨ê'ÆMùmüÓøê'ƒMbvþÓ8ë'ÆMnÿÓ\ë'…¯K¥Ôtë'…¯Œ_Ô|ë'FB[“uÔ”ë'…¯“uÔ¬ë'ƒ”[ÓlÔ´ë'ƒí"‡Ô¼ë'ÆÈO×mÔ ì'ÆÈO×lÔ0ì'ÆMùmÔ ì'ƒMbv Ô í'ÆMn Ô0í'…¯K¥ ÔHí'…¯Œ_ ÔPí'FB[“u Ôhí'…¯“uÔ€í'ƒ”[ÓlÔˆí'ƒí"‡Ôí'ÆÈO×mÔôí'ÆÈO×lÔî'ÆMùmÔtî'ƒMbvÔàî'ÆMnÔï'…¯ÕfÔï'…¯Œ_Ôï'FB[“uÔ4ï'…¯“uÔLï'ƒ”[‡ÔTï'ÆÈO×mÔï'ÆÈO×lÔ ï'ÆMùmÔðï'ƒMbvÔ0ð'ÆMnÔTð'…¯ŽL Ôdð'…¯Œ_!Ôlð'FB[“u!Ô„ð'…¯“u#Ôœð'ƒ”[Ól%Ô¤ð'ÆÈO×m%Ôèð'ÆÈO×l&Ôøð'ÆMùm&ÔHñ'ƒMbv(Ôˆñ'ÆMn)Ô¬ñ'…¯K¥*ÔÄñ'…¯Œ_,ÔÌñ'FB[“u,Ôäñ'…¯“u.Ôüñ'ƒ”[Ól0Ôò'ƒí"‡0Ô ò'ÆÈO×m0Ôpò'ÆÈO×l1Ô€ò'ÆMùm1Ôðò'ƒMbv3Ô\ó'ÆMn4Ô€ó'…¯Z­5Ô˜ó'…¯Œ_7Ô ó'FB[“u7Ô¸ó'…¯“u9ÔÐó'ƒ”[Ól;ÔØó'ƒí"Ól;Ôàó'ÆÈO×m;ÔLô'ÆÈO×l<Ô\ô'ÆMùm<ÔÈô'ƒMbv>Ô0õ'ÆMn?ÔTõ'…¯:¥@Ôtõ'…¯Œ_CÔ|õ'FB[“uCÔ”õ'…¯“uEÔ¬õ'ƒ”[ÓlGÔ´õ'ƒí"ÓlGÔ¼õ'ƒ÷"‡GÔÄõ'ÆÈO×mGÔTö'ÆÈO×lHÔdö'ÆMùmHÔôö'ƒMbvJÔ€÷'ÆMnKÔÆƒ LÔ¤÷'…¯Œ_LÔ¬÷'Fœ½gLÔ¸÷'…¯Œ_MÔÄ÷'á, MÔø']N_MÔ¤ø'…¯¹nMÔ´ø'Ü ÈNÔ¼ø'ƒí ßkNÔÈø' ÈNÔÐø'ƒ  ßkNÔÜø' ÈNÔäø'ƒ( ßkNÔðø'8 ÈNÔøø'ƒB ßkNÔù'N ÈNÔ ù'ƒ\ ßkNÔù'l ÈNÔ ù'ƒx ßkNÔ,ù'† ÈNÔ4ù'ƒ“ ßkNÔ@ù'¢ ÈNÔHù'ƒ­ ßkNÔTù'º ÈNÔ\ù'ƒÄ ßkNÔhù'Ð ÈNÔpù'ƒÛ ßkNÔ|ù'è ÈNÔ„ù'ƒø ßkNÔù'ƒ†O×lNÔ˜ù'ƒ¹OÁmNÔ°ù'æCVýNÔðù'æCV½sOÔú'æCVÎsPÔPú'æÈO×mRÔÌú'æÈO×lSÔÜú'æMùmSÔû'æMUÔPû'æMnVÔtû'ƒ" ùWÔ|û'ƒ0 !WÔ„û'…¯)WÔœû'æÈO×mYÔìû'æÈO×lZÔüû'æMùmZÔPü'éZF\Ô\ü'ƒD Ól^Ô˜ü'ƒ¹uÓl^Ô$ý'Q Ù˜^Ôþ'ƒh ßk_Ôdþ'æM’ _Ô¤þ'æMn`ÔÈþ'…¯iSaÔØþ'Fœ½òúbÔìþ'…¯sScÔüþ'Fœ½‹SdÔÆ Ä£×leÔÆ·£¾ùeÔÆ©£¾ùeÔ ÿ'…¯ŽLeÔ4ÿ'ƒŠ ¾ùfÔ@ÿ'ƒ“ ¾ùgÔLÿ'ƒD ÓlhÔlÿ'…¯Œ_hÔ|ÿ'Æ·£¾ùhÔ€ÿ'Æ©£¾ùhÔ„ÿ'ÆÄ£×lhÔˆÿ'…¯Œ_hÔ˜ÿ'Æ·£¾ùhÔœÿ'Æ©£¾ùhÔ ÿ'ÆÄ£×lhÔ¤ÿ'È ÈhÔ¬ÿ'ïÚ ²hÔ´ÿ'× (hÔ¼ÿ'æ 1iÔÄÿ'ö ÈjÔÌÿ' ÈjÔüÿ' (jÔ(ö²kÔ@(, 1kÔL(…¯slÔ`(á*xŒ_mÔp(…¯ömÔ(Æ·£¾ùoÔ¼(Æ©£¾ùoÔè(ÆÄ£×loÔ(…¯†oÔ0(á*xŒ_qÔL(…¯Œ_qÔ\(Æ·£¾ùqÔ`(Æ©£¾ùqÔd(ÆÄ£×lqÔh(…¯Œ_qÔp(OYÜqÔ|(ƒŽ ßksÔˆ([Y'ÜsÔ”(ƒ ßkuÔ (ƒ†O×luÔ¼(ƒ¹OÁmuÔÔ(…¯ŸuÔì(ƒQ©¥wÔô(ƒUM‰kwÔü(…¯µwÔ(ƒQ©¥yÔ(ƒUMùyÔ$(…¯ÓyÔ4(†Q©¥zÔD(†UM‰kzÔT(…¯õzÔd(†Q©¥{Ôt(†UMù{Ô„(…¯Œ_{ÔŒ(Fœ½{Ô´(…¯, |ÔÌ(Fœ½Îà~Ôä(…¯.Ôü(Fœ½ÎàÔ(…¯• ‚Ô4(Fœ½e…ÔX(…¯Œ_†Ôd(ƒñ¾w†Ôp(ƒ—œˆÔ€(ƒ¯ «‰Ô„(ƒ¸s³ŠÔ(ƒ²sՌԜ(ƒÉ„ ÷ŽÔ¤(…¯ ŽÔÄ(Fœ½Îà‘Ôä(…¯& ’Ô(Fœ½Îà•Ô (…¯½ –Ô8(Fœ½q˜ÔP(…¯Ž™Ôh(Fœ½Þˆ ›ÔŒ(…¯Œ_œÔ”(Fœ½­t œÔ˜(…¯Œ_Ô (Fœ½ Ô¸(º ZžÔ (Ý i;ŸÔl(ñ ä Ô¨( ä¢Ôä( ï¤Ôü(* ü¦Ô(W F¨Ô0(q F«Ô(” ä®Ô(]N_°Ô((]N_°Ô¨(@ j™°Ô°(P j™°Ô¸(b j™°ÔÀ(u ¥°Ô ({ j™³Ô (Œ ±³Ô (Ÿ DT³Ô, (¯ cj´Ô< (¿ ¹µÔH (Š÷Ôd (Í ÖºÔp (Þ é½Ôx (ë ö½Ô€ (ò!½ÔÈ (ú Ò¿Ô, ( üÁÔt ( —ÃÔØ ( ¬ÅÔH ($ ¬ÇÔ˜ (* ¬ÉÔ° (1 ¬ËÔ¼ (7 ;ÅÍÔd (C ÖÏÔÌ (V ±ÔÑÔð (g ±ÔÓÔ(v äÕÔ8(} î×Ô@(† „ ×ÔH(‘ „ ×ÔP(¢ „ ×ÔX(³ ×Ôà(æ&ØÔ((à HÙÔŒ(]N_ÚÔœ(…¯¹nÚÔ¨(…¯x†ÛÔä(†[V×lÝÔ(†¶V×lÝÔ(†Þ ×lÝÔ(ë j™ÝÔ$(ü QÝÔ0(ÆMnÞÔ`(ÆÈO×lßÔl(…¯Œ_ßÔ”(ƒK \¡ßÔô(ƒW †àÔ`(…¯Œ_áÔh(Fœ½ûáÔt(…¯Œ_âÔ|(Fœ½ûâÔˆ(…¯ƒ†ãÔ”(c† „ äÔ¨(…¯šsäÔÐ(…¯éÔ (†(v×lìÔ8(†Bv×lìÔP(†6v×lìÔ|(†Rv×lìÔ”(†• ßkìÔ´(†¥ ù¼ìÔä(†¯ ù¼ìÔ(†MV×lìÔ(†· ‡ìÔD(†Æ ‡ìÔl(†vÓlìÔŒ(†Ó ‡ìÔ¤(ÆÒvÓlìÔP(†á ÓlìÔÀ(ƒï àcìÔÌ(ÆMnìÔü(ÆÈO×líÔ (…¯4oíÔ(Fœ½>oîÔ0(…¯®ïÔ@(Fœ½½ðÔd(…¯ÙñÔt(Fœ½ûòÔ˜(…¯!óÔ¨(Fœ½MôÔÌ(…¯}õÔÜ(Fœ½³öÔ(…¯Ì÷Ô(Fœ½ øÔ4(…¯ÿfùÔD(Fœ½†úÔX(…¯gûÔh(Fœ½.güÔŒ(…¯ƒºýÔœ(Fœ½—ºþÔÀ(…¯¦ºÿÔÐ(Fœ½ÒºÕô(…¯Œ_Õü(Fœ½*Õ,(…¯Œ_Õ4(Fœ½8Õl(…¯ûpÕ|(Fœ½1pÕ(…¯5§Õ (Fœ½E§ÕÄ(…¯WÕÔ(Fœ½fÕè(…¯“ Õø(Fœ½Æ Õ(…¯ Õ,(Fœ½d ÕP(…¯Ï Õ`(Fœ½@Õ„(…¯Õ”(Fœ½ Õ¸(…¯Œ_ÕÀ(Fœ½OÕÌ(…¯Œ_ÕÔ(Fœ½OÕà(…¯ûpÕð(Fœ½1pÕ(…¯5§Õ(Fœ½E§Õ8(…¯WÕH(Fœ½fÕ\(…¯~Õl(Fœ½¢Õ(…¯ìÕ (Fœ½< ÕÄ(…¯¤ ÕÔ(Fœ½! Õø(…¯O!!Õ(Fœ½×!"Õ,(…¯Œ_#Õ4(Fœ½"#Õ@(…¯Œ_%ÕH(Fœ½"%ÕT(…¯ÿf'Õd(Fœ½†(Õx(…¯g)Õˆ(Fœ½.g*Õ¬(…¯iS+Õ¼(Fœ½òú,ÕÐ(…¯sS-Õà(Fœ½‹S.Õ(…¯•S/Õ(Fœ½·S0Õ8(ø 4—1ÕX(ý ¹2Õt(ø %"4Õ¨(]N_5Õx($®”_5Õ|(/0”_5Õ€(Ÿ¾ É5Õˆ(Š É5Õ(— Ù˜5ÕÌ(7—{"6ÕÜ(¡ Â"7Õ (¬ #;Õ<(· 2#?ÕH(¼ B#AÕL(À N#DÕP(Ä Z#GÕT(È f#JÕd(Ð ‡#MÕt(Ø ª#PÕˆ(à Ñ#TÕœ(è ø#XÕ°(ð "$\ÕÄ(ø Q$aÕØ( ‚$fÕð( ¹$lÕ( ð$sÕ,( -%xÕ<(& U%|Õ\(1 «%ƒÕt(9 ç%‡Õ”(C K&ÕÈ(L ~&‘Õð(T &”Õ(sÕ ¤&•ÕH(Y ¤&˜Õˆ(® Ç'›Õð(¸ ]õ ŸÕ (Ê vŸÕ (Û H  Õ( (ä ô' Õ` ( 7(¢Õœ ( Z(¤ÕÜ (ƒ_ 4l¦Õä (ƒj ‰k¦Õì (ƒw ‡(¦Õô (ƒŠ ™(¦Õ!(…¯¬(§Õ !(æCV)ªÕÌ!(æCV½s«ÕÜ!(æCVÎs¬Õ„"(æÈO×m®Õô"(æÈO×l¯Õ#(æMùm¯Õ€#(æM¬)±Õì#(æMn²Õ$(…¯ÓD³ÕÜ$(ƒ© i¶Õð$(ƒ¹ôñD·Õ%(…¯,*¸Õ(%(Fœ½Ñ+¹Õl%(…¯,*ºÕ|%(Fœ½ö+»Õ´%(…¯Œ_¼Õ¼%(Fœ½ ,¼ÕÈ%(…¯,*½ÕØ%(Fœ½+,¾Õ&(…¯ä*¿Õ&(Fœ½o,ÀÕL&(…¯ô&ÁÕd&(Fœ½‡,ÃÕ|&(…¯yÅÕŒ&(Fœ½?|ÆÕ &(…¯='ÇÕ¸&(Fœ½?|ÉÕÔ&(…¯ô&ÊÕì&(Fœ½³,ÌÕ'(ƒ¾ ‰kÍÕ'(ƒnyÍÕ'(…¯yÎÕ,'(æCV×,ÏÕp'(æCV½sÐÕ„'(æCVÎsÑÕÔ'(æÈO×mÓÕ ((æÈO×lÔÕ((æMùmÔÕ\((æMÿ,ÖÕ˜((æMn×Õ€ Ë _ÍØÕ€ ç -ØÕ€ D cÍÜÕ¼((@k _ÜÕH)(˜ 6.ÜÕx)(Û ê.ßÕÌ)(ë /áÕ*(…¯Œ_äÕ*(êHäÕ*(ƒ ßkåÕ$*( êVåÕ,*(ƒ* ßkæÕ8*(? j/æÕ@*(ƒP ßkçÕL*(ƒ†O×lçÕt*(ƒ¹OÁmçÕŒ*(‚ ö/çÕœ*(…¯yèÕ¬*(ƒqP‰kéÕ´*(…¯¡éÕÄ*(ƒqPùêÕÌ*(…¯c/êÕÜ*(ƒqP¿0ëÕä*(…¯21ëÕô*(†qP‰kìÕ+(…¯T1ìÕ+(†qPùíÕ$+(…¯v1íÕ4+(†qP¿0îÕD+(…¯nîÕT+(Fœ½2ïÕè+(…¯Œ_ðÕ,(ƒ2ênðÕÌ,(ƒ³ 3ñÕÜ,(ƒÒé‚ñÕô,(…¯Ÿ.ñÕ -(ƒœ½qvóÕ$-(…¯Ÿ.ôÕ<-(ƒœ½qvöÕT-(…¯n÷Õd-(Fœ½Ó3øÕ”-(…¯v3ùÕ¤-(Fœ½`4úÕ,.(…¯Œ_ûÕ4.(Fœ½‰4ûÕ@.(…¯v3üÕP.(Fœ½"ýÕp.(Áž Ã4þÕ€.(Ò $5Ö¨.(=µm5ÖÔ.(Û §5Ö /(â Ý5Ö /(ó *6 Ö@/(…¯Œ_ ÖH/(Fœ½y6 Öp/(û  6 Ö„/(…¯Ñ) Öœ/(Fœ½?|Ö´/( Ü6Öô/(  ö6Ö 0( *7Ö40(# M7Ö|0(0 h7Öˆ0(û  6"ÖÐ0(: ·7%Ö1(C z(Ö$1(N z+Ö81(÷z.ÖP1([ *71Öx1(k 84ÖÈ1(u M87Öè1(…¯mr 9Öø1(Fœ½+^:Ö2(…¯Ÿ7<Ö2(Fœ½€8=Ö,2(…¯æ7?ÖD2(Fœ½?|AÖ\2(…¯Ÿ7BÖl2(Fœ½€8CÖ€2(…¯ 8EÖ˜2(Fœ½?|GÖ´2(…¯mr HÖÄ2(Fœ½+^IÖÔ2(| ü8KÖ(3( :9NÖl3(!ri9QÖ|3( {9QÖˆ3(| ž9TÖ”3(Ïž ³9VÖ 3(û Ì9XÖ¬3(¡;í9ZÖ¸3(žž :\ÖÄ3(±ý!:^ÖÐ3( I:`ÖÜ3(’ r:cÖð3(¢ :eÖ4(² ‡:gÖ4(Î :iÖ84(ë ²:kÖT4(ò Ê:lÖd4(…¯Œ_mÖl4(Fœ½Û:mÖx4(Áž ù:pÖ”4(…¯Œ_qÖœ4(Fœ½F‡qÖ¨4(Ì +;sÖ´4(…¯;uÖÐ4(ás;wÖ 5( ;yÖ(5( |ÎyÖ05( ¢;yÖ85(+ aayÖÄ5(8 Ș{ÖÜ5(RÓ Ù˜}Öø5(±š€~Ö6(±š€Ö6( ±š€€Ö 6(#±š€Ö06(Q š€‚ÖX6(X È;ƒÖ6(_ ®S „Ö 6(f Í;†Ö°6(]N_ˆÖì6(4 =ˆÖô6(34 =ˆÖü6(D4 =ˆÖ7(U4 =ˆÖ 7(g4 =ˆÖD7(4 '=‰ÖL7(4 '=‰ÖT7(Ÿ4 '=‰Ö\7(¯4 /=‰Ö”7(À4 8=ŠÖœ7(Ò4 8=ŠÖ¤7(ã4 8=ŠÖ¬7(ó4 8=ŠÖ´7(5 8=ŠÖ¼7(5 8=ŠÖÄ7(*5 8=ŠÖÌ7(<5 8=ŠÖÔ7(K5 8=ŠÖÜ7(^5 8=ŠÖä7(o5 8=ŠÖì7(}5 8=ŠÖô7(“5 8=ŠÖü7(¥5 8=ŠÖ8(¶5 8=ŠÖ 8(Ç5 8=ŠÖ8(Û5 8=ŠÖ8(è5 8=ŠÖ$8(ý5 8=ŠÖ,8(6 8=ŠÖ48(+6 8=ŠÖ<8(J6 8=ŠÖD8(]6 @=ŠÖ<9(u6 I=‹ÖD9(†6 I=‹ÖL9(—6 Q=‹Öp9(¬6 Z=ŒÖx9(¼6 Z=ŒÖ€9(Î6 Z=ŒÖˆ9(ß6 b=ŒÖ¸9(ô6 k=ÖÀ9(7 k=ÖÈ9(7 k=ÖÐ9((7 k=ÖØ9(97 s=Ö:(N7 |=ŽÖ:([7 |=ŽÖ$:(k7 „=ŽÖH:(}7 =ÖP:(7 =ÖX:(£7 =Ö`:(·7 •=Ö:(Ë7 ž=Ö˜:(Û7 ž=Ö :(ì7 ¦=ÖÄ:(8 ¯=‘ÖÌ:( 8 ¯=‘ÖÔ:(8 ¯=‘ÖÜ:(18 ·=‘Ö ;(E8 À=’Ö;(W8 À=’Ö;(i8 È=’ÖD;(„8 Ñ=“ÖL;(’8 Ñ=“ÖT;(£8 Ñ=“Ö\;(¶8 Ñ=“Öd;(Å8 Ù=“Öœ;(Ú8 â=”Ö¤;(ë8 â=”Ö¬;(þ8 ê=”ÖÐ;(9 ó=•ÖÔ;(9 ó=•ÖØ;(*9 ó=•ÖÜ;(99 ó=•Öà;(E9 ó=•Öä;(O9 ó=•Öè;(Y9 ó=•Öì;(c9 ó=•Öð;(m9 ó=•Öô;(w9 ó=•Öü;(9 ó=•Ö<(‹9 ó=•Ö <(•9 ó=•Ö<(Ÿ9 ó=•Ö<(©9 ó=•Ö$<(·9 ó=•Ö,<(Â9 ó=•Ö4<(Ï9 ó=•Ö<<(à9 ó=•ÖD<(í9 ó=•ÖL<(ø9 ó=•ÖT<(: ó=•Ö\<(: ó=•Öd<(#: ó=•Öl<(,: ó=•Öt<(5: ó=•Ö|<(B: ó=•Ö„<(P: ó=•ÖŒ<(_: ó=•Ö”<(k: ó=•Öœ<(|: ó=•Ö¤<(Œ: ó=•Ö¬<(œ: ó=•Ö´<(ª: j™•Ö¸<(´: j™•Ö¼<(À: j™•ÖÀ<(Î: j™•ÖÄ<(Ü: j™•ÖÈ<(ê: j™•ÖÌ<(ø: j™•ÖÐ<(; j™•ÖÔ<(; j™•ÖØ<("; j™•Öà<(0; j™•Öè<(>; j™•Öð<(L; j™•Öø<(Z; j™•Ö=(h; j™•Ö=(v; j™•Ö=(…; j™•Ö=(“; j™•Ö =(¡; j™•Ö(=(°; j™•Ö0=(¾; j™•Ö8=(Ë; j™•Ö@=(Û; j™•ÖH=(ê; j™•ÖP=(ù; j™•ÖX=(< j™•Ö`=(< j™•Öh=(&< j™•Öp=(5< j™•Öx=(D< j™•Ö€=(S< j™•Öˆ=(b< j™•Ö=(q< j™•Ö˜=(~< j™•Ö =(‹< j™•Ö¨=(˜< j™•Ö°=(¥< j™•Ö¸=(¯< j™•ÖÀ=(¹< j™•ÖÈ=(Ã< j™•ÖÐ=(Î< j™•ÖØ=(Ú< j™•Öà=(ä< j™•Öè=(ï< j™•Öð=(ÿ< j™•Öø=(= j™•Ö>(= j™•Ö>(&= j™•Ö>(2= j™•Ö>(>= j™•Ö >(J= j™•Ö(>(Y= j™•Ö0>(h= j™•Ö8>(w= j™•Ö@>(†= j™•ÖH>(•= j™•ÖP>(ž= j™•ÖX>(¬= j™•Ö`>(¹= j™•Öh>(Ã= j™•Öp>(Í= j™•Öx>(×= j™•Ö€>(á= j™•Öˆ>(ë= j™•Ö>(ø= j™•Ö˜>(> j™•Ö >(> j™•Ö¨>(> j™•Ö°>(,> j™•Ö¸>(9> j™•ÖÀ>(H> j™•ÖÈ>(W> j™•ÖÐ>(f> j™•ÖØ>(u> j™•Öà>(„> j™•Öè>(“> j™•Öð>(¢> j™•Öø>(°> j™•Ö?(¿> j™•Ö?(Î> j™•Ö?(Þ> j™•Ö?(î> j™•Ö ?(ý> j™•Ö(?( ? j™•Ö0?(? j™•Ö8?(*? j™•Ö@?(9? j™•ÖH?(H? j™•ÖP?(R? j™•ÖX?(\? j™•Ö`?(f? j™•Öh?(p? j™•Öp?(}? j™•Öx?(‡? j™•Ö€?(”? j™•Öˆ?(ž? j™•Ö?(§? j™•Ö˜?(±? j™•Ö ?(»? j™•Ö¨?(Å? j™•Ö°?(Ò? j™•Ö¸?(Ü? j™•ÖÀ?(æ? j™•ÖÈ?(ô? j™•ÖÐ?(@ j™•ÖØ?(@ j™•Öà?(@ j™•Öè?(,@ j™•Öð?(:@ j™•Öø?(H@ j™•Ö@(V@ j™•Ö@(e@ j™•Ö@(q@ j™•Ö@(}@ j™•Ö @(‰@ j™•Ö(@(–@ j™•Ö0@(¦@ j™•Ö8@(³@ j™•Ö@@(Ã@ j™•ÖH@(Ï@ j™•ÖP@(Û@ j™•ÖX@(ç@ j™•Ö`@(ô@ j™•Öh@(A j™•Öp@( A j™•Öx@(A j™•Ö€@((A j™•Öˆ@(4A j™•Ö@(IA j™•Ö˜@(^A j™•Ö @(sA j™•Ö¨@(ˆA j™•Ö°@(A j™•Ö¸@(²A j™•ÖÀ@(ÇA j™•ÖÈ@(ÜA j™•ÖÐ@(ðA j™•ÖØ@(B j™•Öà@(B j™•Öè@(‹¾j™•Öð@(B j™•Öø@()B j™•ÖA(9B j™•ÖA(IB j™•ÖA(YB j™•ÖA(iB j™•Ö A(yB j™•Ö(A(‰B j™•Ö0A(™B j™•Ö8A(¨B j™•Ö@A(¸B j™•ÖHA(ÈB j™•ÖPA(ÙB j™•ÖXA(èB j™•Ö`A(øB j™•ÖhA(C j™•ÖpA(C j™•ÖxA((C j™•Ö€A(8C j™•ÖˆA(HC j™•ÖA(YC j™•Ö˜A(kC j™•Ö A(}C j™•Ö¨A(C j™•Ö°A(¡C j™•Ö¸A(³C j™•ÖÀA(ÅC j™•ÖÈA(×C j™•ÖÐA(éC j™•ÖØA(ùC j™•ÖàA(D j™•ÖèA(D j™•ÖðA(%D j™•ÖøA(3D j™•ÖB(AD j™•ÖB(ND j™•ÖB(_D j™•ÖB(pD j™•Ö B(~D j™•Ö(B(D j™•Ö0B(D j™•Ö8B(®D j™•Ö@B(¼D j™•ÖHB(ÍD j™•ÖPB(ÞD j™•ÖXB(êD j™•Ö`B(øD j™•ÖhB(E j™•ÖpB(E j™•ÖxB(!E j™•Ö€B(+E j™•ÖˆB(5E j™•ÖB(BE j™•Ö˜B(LE j™•Ö B(YE j™•Ö¨B(eE j™•Ö°B(uE j™•Ö¸B(E j™•ÖÀB(ŽE j™•ÖÈB(šE j™•ÖÐB(¦E j™•ÖØB(³E j™•ÖàB(¿E j™•ÖèB(ÎE j™•ÖðB(ÞE j™•ÖøB(îE j™•ÖC(ýE j™•ÖC(F j™•ÖC(F j™•ÖC()F j™•Ö C(7F j™•Ö(C(CF j™•Ö0C(QF j™•Ö8C(_F j™•Ö@C(lF j™•ÖHC(}F j™•ÖPC(ŽF j™•ÖXC(ŸF j™•Ö`C(¯F ÷=•ÖhC(¿F D>•Ö¬F(ÕF q˜—ÖI(âF ‚>˜ÖI(ôF ‚>˜ÖI( G ó=˜ÖI(G ó=˜ÖI($G ó=˜ÖI(.G ó=˜Ö I(8G ó=˜Ö$I(BG ó=˜Ö(I(LG ó=˜Ö,I(VG ó=˜Ö0I(`G ó=˜Ö8I(jG ó=˜Ö@I(tG ó=˜ÖHI(~G ó=˜ÖPI(ˆG ó=˜ÖXI(—G ó=˜Ö`I(¦G ó=˜ÖhI(¶G ó=˜ÖpI(ÁG ó=˜ÖxI(ÐG ó=˜Ö€I(ÜG ó=˜ÖˆI(èG ó=˜ÖI(õG ó=˜Ö˜I(H ó=˜Ö I(H ó=˜Ö¨I('H ó=˜Ö°I(8H ó=˜Ö¸I(HH ó=˜ÖÀI(YH ó=˜ÖÈI(gH ó=˜ÖÐI(sH ó=˜ÖØI(„H ó=˜ÖàI(–H ó=˜ÖèI(¡H ó=˜ÖðI(­H ó=˜ÖøI(ÁH ó=˜ÖJ(ÑH ó=˜ÖJ(áH ó=˜ÖJ(îH ó=˜ÖJ(I ó=˜Ö J( I ó=˜Ö(J(I ó=˜Ö0J('I ó=˜Ö8J(7I ó=˜Ö@J(NI ó=˜ÖHJ([I ó=˜ÖPJ(fI j™˜ÖTJ(sI j™˜ÖXJ(I j™˜Ö\J(‰I j™˜Ö`J(“I j™˜ÖdJ(I j™˜ÖhJ(§I j™˜ÖlJ(±I j™˜ÖpJ(½I j™˜ÖtJ(ÉI j™˜Ö|J(ÙI j™˜Ö„J(æI j™˜ÖŒJ(òI j™˜Ö”J(J j™˜ÖœJ(J j™˜Ö¤J(J j™˜Ö¬J()J j™˜Ö´J(4J j™˜Ö¼J(?J j™˜ÖÄJ(JJ j™˜ÖÌJ(TJ j™˜ÖÔJ(_J j™˜ÖÜJ(jJ j™˜ÖäJ(vJ j™˜ÖìJ(‚J j™˜ÖôJ(‘J j™˜ÖüJ(œJ j™˜ÖK(­J j™˜Ö K(»J j™˜ÖK(ÎJ j™˜ÖK(ÛJ j™˜Ö$K(éJ j™˜Ö,K(÷J j™˜Ö4K(K j™˜Ö˜Ö”K(ÂK ©>˜ÖœK(ÙK ¾>˜Ö¤K(îK Ó>˜Ö¬K(L è>˜Ö´K(L ý>˜Ö¼K(9L ó=˜ÖÀK(VL ó=˜ÖÄK(rL ó=˜ÖÈK(L ó=˜ÖÌK(«L ó=˜ÖÔK(ÈL ó=˜ÖØK(çL ó=˜ÖàK(M ó=˜ÖèK()M j™˜ÖìK(PM j™˜ÖðK(tM j™˜ÖôK(™M j™˜ÖøK(¼M ó=˜ÖüK(áM ó=˜ÖL(N ó=˜ÖL(*N ó=˜ÖL(LN ó=˜Ö L(oN ó=˜ÖL(‘N ó=˜ÖL(·N ó=˜ÖL(ÜN ó=˜Ö L(O ó=˜Ö(L((O ó=˜Ö0L(MO ó=˜Ö8L(æCVðÿ˜ÖhL(æCV½s™ÖxL(æCVÎsšÖ¨L(æÈO×mœÖÐL(æÈO×lÖàL(æMùmÖM(…¯¹nŸÖM(ƒ"5×l Ö(M({O F? Ö4M(æMX?¡ÖTM(æMn¢ÖˆM(æCVŠ?£Ö¸M(æCV½s¤ÖÈM(æCVÎs¥ÖøM(æÈO×m§Ö N(æÈO×l¨Ö0N(æMùm¨Ö`N(…¯¹nªÖlN(ƒ†O×l«ÖxN(æMº?«Ö˜N(æMn¬ÖÌN(æCVì?­ÖüN(æCV½s®Ö O(æCVÎs¯Öá vNn×@¢(Sá j™o×H¢(má j™o×P¢(Œá No×ô¤(œá oOp×ô§(°á çö q×ü§(Âá çö qר(èá çö q× ¨(â çö qר(<â j™qר(Tâ çö q×$¨(tâ çö q×,¨(–â çö q×4¨(¸â çö q×<¨(áâ çö q×D¨(`ä ’ q×0­(sä ›Oq׌­(zä §Oqל­(Àc ¿Ot×´­(ä£ÛOv×Ì­(]N_x×Ü­(]N_x×è­(…¯Œ_x×ð­(÷c Px×ø­(ƒd ßky×®(d Py× ®(ƒd ßky×®(ƒ†O×ly×4®(ƒ¹OÁmy×L®(æCVµPyׯ(æCV½sz×,¯(æCVÎs{×°(æÈO×m}×l°(æÈO×l~×|°(æMùm~×<±(æMÃQ€×¼±(æMn×à±(…¯ÝQ‚×ð±(ƒqPïQƒ×ø±(…¯Œ_ƒ×²(…¯»Rƒ×²(†qPïQ„× ²(…¯ËR„×0²(Çb M…×8²(…¯ðR†×H²(ƒqPS‡×P²(ƒ†O×l‡×X²(ƒ¹OÁm‡×p²(…¯y‡×€²(Fœ½XSˆ×Œ²(…¯—M‰×¤²(Fœ½XS‹×ز(]N_Œ×µ(…¯¹nŒ×µ(Õÿ ÓS×µ(ƒÞÿ ßk×(µ(oh ÓS×0µ(ƒzh ßk×<µ(‡h ÓS×Dµ(ƒ•h ßk×Pµ(¥h ÓS×Xµ(ƒ¯h ßk×dµ(»h ÓS×lµ(ƒÈh ßk×xµ(×h ÓS×€µ(ƒåh ßk׌µ(õh ÓS×”µ(ƒ ßk× µ(ÿh ÓSרµ(ƒ¾ ßk×´µ( i ÓS×¼µ(ƒÕ ßk×ȵ(i ÓS×е(ƒì ßk×ܵ( i ÓS×äµ(ƒ)i ßk×ðµ(4i ÓS×øµ(ƒk ßk×¶(õ ÓS× ¶(ƒþ ßk×¶(?i ÓS× ¶(ƒIi ßk×,¶(… ÓS×4¶(ƒ ßk×@¶(‡ ÓS×H¶(ƒ’ ßk×T¶(Ui ÓS×\¶(ƒ^i ßk×h¶(ii ÓS×p¶(ƒti ßk×|¶(i ÓSׄ¶(ƒŒi ßk×¶(™i ÓSט¶(ƒ¤i ßkפ¶(m ÓS׬¶(ƒx ßk׸¶(±i ÓS×À¶(ƒž ßk×̶() ÓS×Ô¶(ƒ4 ßk×à¶(ºi ÓS×è¶(ƒz ßk×ô¶(Ãi ÓS×ü¶(ƒ ßk×·(Íi ÓS×·(ƒ, ßk×·(×i ÓS×$·(ƒf ßk×0·(ái ÓS×8·(ƒéi ßk×D·(s ÓS×L·(ƒ€ ßk×X·(ói ÓS×`·(ƒ´ ßk×l·(ÿi ÓS×t·(ƒ j ßk×€·(j ÓS׈·(ƒ%j ßk×”·(3j ÓSל·(ƒ=j ßkר·(Ij ÓS×°·(ƒVj ßk×¼·(ej ÓS×Ä·(ƒïû ßk×з(mj ÓSר·(ƒyj ßk×ä·(Ó ÓS×ì·(ƒÛ ßk×ø·(Í ÓS׸(ƒÙ ßk× ¸(‡j ÓS׸(ƒ’j ßk× ¸(  ÓS×(¸(ƒ ßk×4¸( ÓS×<¸(ƒ‰ ßk×H¸(Ÿj ÓS×P¸(ƒ? ßk×\¸(¨j ÓS×d¸(ƒ… ßk×p¸(¶j ÓS×x¸(ƒ¿j ßkׄ¸(Êj ÓS׌¸(ƒÓj ßkט¸(+ ÓS× ¸(ƒ3 ßk׬¸(Þj ðH×´¸(ƒîj ßkŽ×À¸(k ðHŽ×ȸ(ƒk ßk×Ô¸("k ðH×ܸ(ƒ4k ßk×è¸(Ik ðH×ð¸(ƒSk ßk‘×ü¸(`k ÛS‘×¹(ƒok ßk’×¹(k äS’×¹(ƒ”k ßk“×$¹(ªk úS“×,¹(ƒ¼k ßk”×8¹(Ñk äS”×@¹(ƒßk ßk•×L¹(ðk T•×T¹(ƒýk ßk–×`¹( l +T–×h¹(ƒl ßk—×t¹(0l =T—×|¹(ƒ>l ßk˜×ˆ¹(Ol PT˜×¹(ƒ_l ßk™×œ¹(rl wT™×¤¹(ƒ}l ßkš×°¹(‹l Tš×¸¹(ƒ—l ßk›×Ĺ(¦l ŸT›×̹(ƒ·l ßkœ×ع(Ël ¶Tœ×à¹(ƒÖl ßk×ì¹(äl ÈT×ô¹(ƒól ßkž×º(m ÛSž×º(ƒm ßkŸ×º(2m ÑTŸ×º(ƒ?m ßk ×(º(ƒ†O×l ×0º(ƒ¹OÁm ×Hº(…¯ŽL ×\º(ƒqPÓl¡×dº(…¯ŽL¡×xº(ƒqPÓl¢×€º(…¯ŽL¢×”º(ƒqPÓl£×œº(…¯ŽL£×°º(ƒqPÓl¤×¸º(…¯¹n¤×̺(ƒqP×l¥×Ôº(…¯´Ð¥×èº(ƒqP÷V¦×ðº(…¯—W¦×»(ƒqP®W§× »(…¯´Ð§× »(ƒqP÷V¨×(»(…¯ÁϨ×<»(ƒqP—X©×D»(…¯$Ï©×X»(ƒqPYª×`»(…¯œYª×t»(ƒqP«Y«×|»(…¯Î«×»(ƒqPKZ¬×˜»(…¯[¬×¬»(ƒqP[­×´»(…¯¢Ë­×È»(ƒqP[®×л(…¯ßή×ä»(ƒqP*\¯×ì»(…¯ØË¯×¼(ƒqP¼\°×¼(…¯, °×¼(ƒqPû™±×$¼(…¯¹n±×8¼(ƒqP×l²×@¼(…¯ƒ†²×T¼(ƒqPàc³×\¼(…¯|^³×l¼(†qPÓl´×|¼(…¯…^´×Œ¼(†qPÓlµ×œ¼(…¯Ž^µ×¬¼(†qPÓl¶×¼¼(…¯—^¶×̼(†qPÓl·×ܼ(…¯ ^·×ì¼(†qP×l¸×ü¼(…¯©^¸× ½(†qP÷V¹×½(…¯²^¹×,½(†qP®Wº×<½(…¯»^º×L½(†qP÷V»×\½(…¯Ä^»×l½(†qP—X¼×|½(…¯Í^¼×Œ½(†qPY½×œ½(…¯Ö^½×¬½(†qP«Y¾×¼½(…¯ß^¾×̽(†qPKZ¿×ܽ(…¯è^¿×ì½(†qP[À×ü½(…¯ñ^À× ¾(†qP[Á×¾(…¯ú^Á×,¾(†qP*\Â×<¾(…¯_Â×L¾(†qP¼\Ã×\¾(…¯ _Ã×l¾(†qPû™Ä×|¾(…¯_Ä׌¾(†qP×lÅל¾(…¯_Å׬¾(†qPàcÆ×¼¾(]N_Æ×äÁ(…¯¹nÆ×ôÁ(p@ 6_Ç×üÁ(ƒ@ ßkÇ×Â(Ýu 6_Ç×Â(ƒîu ßkÇ×Â(v 6_Ç×$Â(ƒv ßkÇ×0Â(+v 6_Ç×8Â(ƒ;v ßkÇ×DÂ(Mv 6_Ç×LÂ(ƒ`v ßkÇ×XÂ(uv 6_Ç×`Â(ƒ‰v ßkÇ×lÂ(ØS 6_Ç×tÂ(ƒèS ßkÇ×€Â(lS 6_Ç׈Â(ƒ}S ßkÇ×”Â(S 6_ÇלÂ(ƒ¡S ßkÇרÂ(´S 6_Ç×°Â(ƒÅS ßkÇ×¼Â(Ÿv 6_Ç×ÄÂ(ƒ®v ßkÇ×ÐÂ(*W 6_ÇרÂ(ƒ;W ßkÇ×äÂ($I 6_Ç×ìÂ(ƒ3I ßkÇ×øÂ(¿v 6_Ç×Ã(ƒÏv ßkÇ× Ã(H 6_Ç×Ã(ƒ¡H ßkÇ× Ã(îB 6_Ç×(Ã(ƒÿB ßkÇ×4Ã(áv 6_Ç×<Ã(ƒðv ßkÇ×HÃ(w 6_Ç×PÃ(ƒw ßkÇ×\Ã(%w 6_Ç×dÃ(ƒ6w ßkÇ×pÃ(Iw 6_Ç×xÃ(ƒZw ßkÇׄÃ(lH 6_Ç׌Ã(ƒ}H ßkÇטÃ(²Q 6_Ç× Ã(ƒÁQ ßkÇ׬Ã(,E 6_Ç×´Ã(ƒ=E ßkÇ×ÀÃ(’T 6_Ç×ÈÃ(ƒ¡T ßkÇ×ÔÃ(úS 6_Ç×ÜÃ(ƒ T ßkÇ×èÃ(T 6_Ç×ðÃ(ƒ,T ßkÇ×üÃ(pT 6_Ç×Ä(ƒ€T ßkÇ×Ä(mw 6_Ç×Ä(ƒ{w ßkÇ×$Ä(bK 6_Ç×,Ä(ƒuK ßkÇ×8Ä(ÒQ 6_Ç×@Ä(ƒäQ ßkÇ×LÄ(‹w 6_Ç×TÄ(ƒw ßkÇ×`Ä(±w 6_Ç×hÄ(ƒÃw ßkÇ×tÄ(×w 6_Ç×|Ä(ƒçw ßkÇ׈Ä(ùw 6_Ç×Ä(ƒ x ßkÇלÄ(; 6_ÇפÄ(ƒ$; ßkÇ×°Ä(!x 6_Ç׸Ä(ƒ3x ßkÇ×ÄÄ(F 6_Ç×ÌÄ(ƒ,F ßkÇרÄ(àA 6_Ç×àÄ(ƒòA ßkÇ×ìÄ(Gx 6_Ç×ôÄ(ƒXx ßkÇ×Å(DI 6_Ç×Å(ƒTI ßkÇ×Å(nA 6_Ç×Å(ƒ~A ßkÇ×(Å(®R 6_Ç×0Å(ƒ½R ßkÇ×<Å(NW 6_Ç×DÅ(ƒbW ßkÇ×PÅ(kx 6_Ç×XÅ(ƒzx ßkÇ×dÅ(‹x 6_Ç×lÅ(ƒšx ßkÇ×xÅ(H 6_Ç×€Å(ƒH ßkÇ׌Å(«x 6_Ç×”Å(ƒÂx ßkÇ× Å(Ûx 6_ÇרÅ(ƒñx ßkÇ×´Å( y 6_Ç×¼Å(ƒ"y ßkÇ×ÈÅ(=y 6_Ç×ÐÅ(ƒNy ßkÇ×ÜÅ(ay 6_Ç×äÅ(ƒwy ßkÇ×ðÅ(y 6_Ç×øÅ(ƒ©y ßkÇׯ(Åy 6_Ç× Æ(ƒÞy ßkÇׯ(ùy 6_Ç× Æ(ƒz ßkÇ×,Æ(%z 6_Ç×4Æ(ƒ9z ßkÇ×@Æ(Oz 6_Ç×HÆ(ƒfz ßkÇ×TÆ(z 6_Ç×\Æ(ƒ”z ßkÇ×hÆ(«z 6_Ç×pÆ(ƒÂz ßkÇ×|Æ(Ûz 6_ÇׄÆ(ƒíz ßkÇׯ({ 6_ÇטÆ(ƒ{ ßkÇפÆ(){ 6_Ç׬Æ(ƒA{ ßkÇ׸Æ([{ 6_Ç×ÀÆ(ƒm{ ßkÇ×ÌÆ({ 6_Ç×ÔÆ(ƒ—{ ßkÇ×àÆ(¯{ 6_Ç×èÆ(ƒË{ ßkÇ×ôÆ(é{ 6_Ç×üÆ(ƒý{ ßkÇ×Ç(xW 6_Ç×Ç(ƒW ßkÇ×Ç(¨W 6_Ç×$Ç(ƒ¸W ßkÇ×0Ç(ƒ†O×lÇ×8Ç(ƒ¹OÁmÇ×PÇ(æCVk_Ç×Ç(æCV½sÈ× Ç(æCVÎsÉ×ðÇ(æÈO×mË×È(æÈO×lÌ×È(æMùmÌ×PÈ(æM~_Î׈È(æMnÏ׬È(]N_Ð×0Ê(…¯¹nÐ×@Ê(Óƒ ž_Ñ×HÊ(ƒîƒ ßkÑ×TÊ( „ ž_Ñ×\Ê(ƒ$„ ßkÑ×hÊ(?„ ž_Ñ×pÊ(ƒR„ ßkÑ×|Ê(g„ ž_ÑׄÊ(ƒ|„ ßkÑ×Ê(“„ ž_ÑטÊ(ƒ«„ ßkÑפÊ(Å„ ž_Ñ׬Ê(ƒÜ„ ßkÑ׸Ê(õ„ ž_Ñ×ÀÊ(ƒ … ßkÑ×ÌÊ(… ž_Ñ×ÔÊ(ƒF… ßkÑ×àÊ(o… ž_Ñ×èÊ(ƒ… ßkÑ×ôÊ(•… ž_Ñ×üÊ(ƒª… ßkÑ×Ë(Á… ž_Ñ×Ë(ƒÖ… ßkÑ×Ë(í… ž_Ñ×$Ë(ƒ† ßkÑ×0Ë(† ž_Ñ×8Ë(ƒ.† ßkÑ×DË(C† ž_Ñ×LË(ƒV† ßkÑ×XË(k† ž_Ñ×`Ë(ƒ}† ßkÑ×lË(‘† ž_Ñ×tË(ƒ§† ßkÑ×€Ë(¿† ž_Ñ׈Ë(ƒ×† ßkÑ×”Ë(ñ† ž_ÑלË(ƒ ‡ ßkÑרË(%‡ ž_Ñ×°Ë(ƒ:‡ ßkÑ×¼Ë(Q‡ ž_Ñ×ÄË(ƒe‡ ßkÑ×ÐË({‡ ž_ÑרË(ƒ‡ ßkÑ×äË(§‡ ž_Ñ×ìË(ƒ¼‡ ßkÑ×øË(*ø ž_Ñ×Ì(ƒ:ø ßkÑ× Ì(Ó‡ ž_Ñ×Ì(ƒç‡ ßkÑ× Ì(ý‡ ž_Ñ×(Ì(ƒˆ ßkÑ×4Ì(#ˆ ž_Ñ×<Ì(ƒ2ˆ ßkÑ×HÌ(Cˆ ž_Ñ×PÌ(ƒUˆ ßkÑ×\Ì(iˆ ž_Ñ×dÌ(ƒ{ˆ ßkÑ×pÌ(ˆ ž_Ñ×xÌ(ƒ£ˆ ßkÑׄÌ(¹ˆ ž_Ñ׌Ì(ƒ×ˆ ßkÑטÌ(÷ˆ ž_Ñ× Ì(ƒ‰ ßkÑ׬Ì(-‰ ž_Ñ×´Ì(ƒH‰ ßkÑ×ÀÌ(ƒ†O×lÑ×ÈÌ(ƒ¹OÁmÑ×àÌ(æCVÓ_Ñ× Í(æCV½sÒ×0Í(æCVÎsÓ×€Í(æÈO×mÕ×”Í(æÈO×lÖפÍ(æMùmÖ×àÍ(æMæ_Ø×Î(æMnÙ×<Î(…¯Œ_Ú×DÎ(Fœ½{8Ú×|Î(…¯Œ_ÛׄÎ(Fœ½{8Û×¼Î(…¯Œ_Ü×ÄÎ(Fœ½{8Ü×ôÎ(…¯Œ_Ý×üÎ(Fœ½{8Ý×$Ï(…¯Œ_Þ×,Ï(Fœ½{8Þ×@Ï(…¯Œ_ß×HÏ(Fœ½{8ß×|Ï(…¯Œ_àׄÏ(Fœ½{8àטÏ(…¯Œ_á× Ï(Fœ½{8á×ÔÏ(…¯Œ_â×ÜÏ(Fœ½{8â×ìÏ(…¯Œ_ã×ôÏ(Fœ½{8ã×äÐ(…¯Œ_ä×ìÐ(Fœ½{8ä×Ñ(…¯Œ_å×Ñ(Fœ½{8å×PÑ(…¯Œ_æ×XÑ(Fœ½{8æ× Ñ(…¯Œ_çרÑ(Fœ½{8ç×ÜÑ(…¯Œ_è×äÑ(Fœ½{8è× Ò(…¯Œ_é×(Ò(Fœ½{8é×dÒ(…¯Œ_ê×lÒ(Fœ½{8êפÓ(…¯Œ_ë׬Ó(Fœ½{8ë×ðÓ(…¯Œ_ì×øÓ(Fœ½{8ì×PÔ(…¯Œ_í×XÔ(Fœ½{8íלÔ(…¯Œ_îפÔ(Fœ½{8î×ìÔ(…¯Œ_ï×ôÔ(Fœ½{8ï×Õ(…¯Œ_ð×Õ(Fœ½{8ð×$Õ(…¯Ddñ×4Õ(Fœ½qdò×LÕ(…¯—dó×\Õ(Fœ½Îdô×xÕ(…¯Œ_õ×€Õ(Fœ½{8õ׬Õ(…¯Œ_ö×´Õ(Fœ½{8ö×àÕ(…¯Œ_÷×èÕ(Fœ½{8÷×Ö(…¯³ø×,Ö(Fœ½^eù×HÖ(…¯Œ_ú×PÖ(Fœ½{8ú׌Ö(…¯Œ_û×”Ö(Fœ½{8û× Ö(…¯Œ_üרÖ(Fœ½{8ü×ÐÖ(…¯Œ_ýרÖ(Fœ½{8ý×ìÖ(…¯Œ_þ×ôÖ(Fœ½{8þ××(…¯Œ_ÿ××(Fœ½{8ÿ×P×(…¯Œ_ØX×(Fœ½{8ج×(…¯Œ_Ø´×(Fœ½{8Øð×(…¯Œ_Øø×(Fœ½{8Ø(Ø(…¯Œ_Ø0Ø(Fœ½{8ØxØ(…¯õeؘØ(Fœ½ fØÜØ(…¯Œ_ØäØ(Fœ½{8Ø8Ù(…¯Œ_ Ø@Ù(Fœ½{8 ØÙ(…¯Œ_ ؘÙ(Fœ½´f بÙ(…¯Œ_ ذÙ(Fœ½{8 ØÜÙ(…¯Œ_ ØäÙ(Fœ½{8 ØøÙ(…¯Œ_ ØÚ(Fœ½{8 ØÚ(…¯Œ_ØÚ(Fœ½{8ØHÚ(…¯Œ_ØPÚ(Fœ½{8Ø|Ú(…¯Œ_Ø„Ú(Fœ½{8ذÚ(…¯Œ_ظÚ(Fœ½{8ØÈÚ(…¯Œ_ØÐÚ(Fœ½{8ØàÚ(…¯Œ_ØèÚ(Fœ½{8ØøÚ(…¯Œ_ØÛ(Fœ½{8ØÛ(…¯Œ_Ø$Û(Fœ½{8Ø@Û(…¯Œ_ØHÛ(Fœ½´fØXÛ(…¯Œ_Ø`Û(Fœ½{8ØŒÛ(…¯Œ_Ø”Û(Fœ½´fؤÛ(…¯Œ_جÛ(Fœ½{8ØØÛ(…¯Œ_ØàÛ(Fœ½´fØðÛ(…¯Œ_ØøÛ(Fœ½{8Ø$Ü(…¯Œ_Ø,Ü(Fœ½gØ<Ü(…¯Œ_ØDÜ(Fœ½{8ØpÜ(…¯%gØ€Ü(Fœ½gØœÜ(…¯Œ_ ؤÜ(Fœ½{8 ØàÜ(…¯Œ_!ØèÜ(Fœ½g!ØøÜ(…¯Œ_"ØÝ(Fœ½{8"Ø,Ý(…¯Œ_#Ø4Ý(Fœ½g#ØDÝ(…¯Œ_$ØLÝ(Fœ½{8$ØxÝ(…¯Œ_%Ø€Ý(Fœ½{8%ØœÝ(…¯Œ_&ؤÝ(Fœ½{8&ظÝ(…¯Œ_'ØÀÝ(Fœ½{8'ØÜÝ(…¯Œ_(ØäÝ(Fœ½{8(ØÞ(…¯Œ_)ØÞ(Fœ½{8)Ø$Þ(…¯Œ_*Ø,Þ(Fœ½{8*ØHÞ(…¯Œ_+ØPÞ(Fœ½{8+ØlÞ(…¯Œ_,ØtÞ(Fœ½{8,ØÞ(…¯Œ_-ؘÞ(Fœ½{8-Ø´Þ(…¯Œ_.ؼÞ(Fœ½{8.ØØÞ(…¯Œ_/ØàÞ(Fœ½{8/ØüÞ(…¯Œ_0Øß(Fœ½{80Ø ß(…¯Œ_1Ø(ß(Fœ½{81ØDß(…¯Œ_2ØLß(Fœ½{82Øhß(…¯Œ_3Øpß(Fœ½{83ØŒß(…¯Œ_4Ø”ß(Fœ½{84ذß(…¯Œ_5ظß(Fœ½{85ØÔß(…¯Œ_6ØÜß(Fœ½{86Øøß(…¯Œ_7Øà(Fœ½{87Øà(…¯Œ_8Ø$à(Fœ½{88Ø@à(…¯Œ_9ØHà(Fœ½{89Øtà(…¯Œ_:Ø|à(Fœ½{8:بà(…¯Œ_;ذà(Fœ½{8;Øðà(…¯Œ_<Øøà(Fœ½{8<Øá(…¯Œ_=Ø á(Fœ½{8=ØPá(…¯Œ_>ØXá(Fœ½{8>Ø á(…¯Œ_?بá(Fœ½{8?ØØá(…¯Œ_@Øàá(Fœ½{8@Ø(â(…¯Œ_AØ0â(Fœ½{8AØ`â(…¯Œ_BØhâ(Fœ½{8BØ|â(…¯Œ_CØ„â(Fœ½{8Cؘâ(…¯Œ_DØ â(Fœ½{8DØÄâ(…¯Œ_EØÌâ(Fœ½{8EØàâ(…¯Œ_FØèâ(Fœ½{8FØüâ(…¯Œ_GØã(Fœ½{8GØ,ã(…¯Œ_HØ4ã(Fœ½{8HØHã(…¯Œ_IØPã(Fœ½ÒgIØ\ã(…¯Œ_JØdã(Fœ½{8JØã(…¯Œ_Kؘã(Fœ½{8Kجã(…¯Œ_LØ´ã(Fœ½hLØÈã(…¯Œ_MØÐã(Fœ½{8MØüã(…¯ŽÈNØ ä(Fœ½hOØ,ä(…¯?hPØ<ä(Fœ½ÒgQØPä(…¯Œ_RØXä(Fœ½{8RØ”ä(…¯Œ_SØœä(Fœ½xhSØ´ä(…¯Œ_Tؼä(Fœ½†hTØÈä(…¯Œ_UØÐä(Fœ½hUØÜä(]N_VØÐå(ÄŠ Ï™VØØå(åŠ j™VØæ()ªhVØæ( ‹ `XØ<æ(1‹ j™YØDæ(>‹ j™YØLæ(I‹ ¶hYØdæ(U‹ ¼h[Ø|æ(b‹ Äh_ذæ({‹ ÐhgØç(…‹ ÛhhØ@ç(Ž‹ æhiØPè(™‹ ñhkØ4ê(¤‹ ühmØ ë(®‹ ioظë(¸‹ iqؘì(Ë isØí(Ï‹ (iuØìí(Þ‹ 3iwØ@î('Œ `}Øpî(CŒ }i~Ø8ï(óŒ µjØ(ô( Š4…ØHø(U ?k‡Øù(l OkŠØ¤ù(¶ ¨kŽØTú(è ²kØÈú(ñ »k‘ØÜú(Ž Ýk“Øû()Ž »k•ؤû(CŽ ²k—Ø´û(RŽ »k˜Øàû(_Ž »kšØôû(mŽ ëkœØü(ŠŽ øk ØLü(ÂŽ -l§Øþ(èŽ ]lªØ„þ(øŽ jl«Øþ( tl­Ø”þ(L †l®Ø°þ(” Ÿl°ØÌþ(È Õl´Ø8ÿ(ê ólµØ`ÿ(# mºØpÿ(R m»Ø”ÿ(r m¼Ø¸ÿ(œ m½ØÜÿ(É &m¾Øðÿ(í AmÀØ) ‘ PmÁØ()"‘ ]mÂØt)r‘ ¦mÉØ$)™‘ ÞmÊØ)­‘ ìmËØ°)Ú‘ nÌØ)ì‘ *nÍØ,)’ 3nÎØ<)^’ CnÏØ ~’ QnÐØ\)Ï’ enÓØl)ð’ enÔØ|)“ knÕØ„)“ wnÕØŒ)-“ ñnÖØ$)?“ î0ÖØ¼)_“ enר)„“ s™ØØ@)œ“ qûÙØ€)°“ näÚØx)Ê“ :ÜØÀ)]N_ÞØØ)…¯¹nÞØè)” Koߨð)ƒ$” ßkߨü).” Koߨ)ƒ6” ßkߨ)ƒ†O×lߨ)ƒ¹OÁmߨ0)æCV€oߨp)æCV½sàØ€)æCVÎsáØÐ)æÈO×mãØø)æÈO×läØ)æMùmäØD)æM“oæØ|)æMnçØ )…¯¤oèØà)ƒ:• ÄŒ ïØì)ƒF• ¿Œ ïØø)ƒR• ÄŒ ðØ )ƒg• ¿Œ ðØ )ƒ|• ×lñØ )ƒŽ• ¹nñØ( )ƒ • ×lòØ4 )ƒ¹• ¹nòØ@ )ƒÒ• ×lóØL )ƒæ• ¹nóØX )ƒú• ÄŒ ôØd )ƒ– ¿Œ ôØp )ƒ,– ÄŒ õØ| )ƒ@– ¿Œ õ؈ )T– j™öØ )ƒ^– ¸…öØ )…¯¶oöØ| )ƒÛàcÙˆ )ƒ*‰ ƒ†Ù” )ƒ©— ×lÙ  )ƒ½— ¹nÙ¬ )ƒÑ— ×lÙ¸ )ƒá— ¹nÙÄ )ƒñ— ×lÙÐ )ƒ˜ ¹nÙÜ )ƒ˜ ×lÙè )ƒ)˜ ¹nÙô )ƒ;˜ ×lÙ )ƒP˜ ¹nÙ )ƒe˜ ×lÙ )ƒ~˜ ¹nÙ$ )ƒ—˜ ×lÙ0 )ƒ°˜ ¹nÙ< )ƒɘ ÄŒ ÙH )ƒᘠ¿Œ ÙT )ƒù˜ ÄŒ Ù` )ƒ™ ¿Œ Ùl )ƒ,– ×l Ùx )ƒ@– ¹n Ù„ )T– j™ ÙŒ )ƒ^– ¸… Ù4 )…¯Äo Ùl )ƒÛàcÙx )ƒ*‰ ƒ†Ù„ )ƒ¹K×lÙ )ƒ’™ ¹nÙœ )ƒœ™ ÄŒ Ù¨ )ƒ®™ ¿Œ Ù´ )ƒø‰ÄŒ ÙÀ )ƒÀ™ ¿Œ ÙÌ )ƒÉ™ †ÙØ )ƒÚ™ i†Ùä )ƒë™ †Ùð )ƒš i†Ùü )T– j™Ù )ƒ^– ¸…Ù| )…¯ÖoÙœ )ƒñ— ×lÙ¨ )ƒ˜ ¹nÙ´ )ƒJš ×lÙÀ )ƒYš ¹nÙÌ )ƒhš ×lÙØ )ƒ}š ¹nÙä )ƒø‰ÄŒ Ùð )ƒÀ™ ¿Œ Ùü )T– j™Ù)ƒ^– ¸…ÙL)…¯ÝoÙ„)ƒ,– ×l$Ù)ƒ@– ¹n$Ùœ)ƒ|• ×l%Ù¨)ƒŽ• ¹n%Ù´)ƒ$› ÄŒ &ÙÀ)ƒ5› ¿Œ &ÙÌ)ƒF› ÄŒ 'ÙØ)ƒW› ¿Œ 'Ùä)ƒh› ÄŒ (Ùð)ƒ› ¿Œ (Ùü)ƒš› ÄŒ )Ù)ƒ°› ¿Œ )Ù)T– j™*Ù)ƒ^– ¸…*Ù˜)…¯x†*Ù´)ƒÛ×l,ÙÀ)ƒ*‰ ¹n,ÙÌ)ƒõ› ×l-ÙØ)ƒœ ¹n-Ùä)ƒœ ×l.Ùô)ƒ-œ ßk.Ù )T– j™.Ù)ƒ^– ¸….ÙH)…¯(ˆ.Ùp)ƒõ› ×l2Ù|)ƒœ ¹n2Ùˆ)ƒÃý×l3Ù”)ƒiœ ¹n3Ù )ƒô¡×l4Ù¬)ƒrœ ¹n4Ù¸)ƒœ ×l5ÙÄ)ƒŒœ ¹n5ÙÐ)T– j™6ÙØ)ƒ^– Œ_6Ù$)…¯Œ_6Ù„)ƒ ×l6Ù)ƒ& ¹n6Ùœ)ƒ3 ×l7Ù¨)ƒB ¹n7Ù´)ƒQ ×l8ÙÀ)ƒ\ ¹n8ÙÌ)ƒg ×l9ÙØ)ƒr ¹n9Ùä)ƒ} ×l:Ùð)ƒ ¹n:Ùü)ƒ ÄŒ ;Ù)ƒª ¿Œ ;Ù)ƒ· ÄŒ <Ù )ƒ ¿Œ <Ù,)ƒÀy ×l=Ù8)ƒq˜ ¹n=ÙD)ƒ,– ×l>ÙP)ƒ@– ¹n>Ù\)T– j™?Ùd)ƒ^– ¸…?Ù)…¯þo?Ù¬)ƒ ž pDÙ¸)ƒž pDÙÄ)ƒø‰¸…DÙÐ)ƒÛ¸…DÙÜ)ƒ&ž ?pDÙD)…¯Œ_HÙL)Fœ½IpHÙX)…¯iSIÙh)Fœ½òúJÙ|)…¯sSKÙŒ)Fœ½‹SLÙ°)…¯ŽLMÙÀ)Fœ½YpNÙü)…¯hpOÙ)Fœ½spQÙ,)…¯Œ_RÙ4)Fœ½ûRÙÆBž Œ_SÙÆNž ‚pSÙÆÒž Œ_WÙÆÒž Œ_WÙÆôž X·WÙÆ Ÿ qYÙ@)ƒ,– ×l\ÙH)ƒ|• ×l\ÙP)ƒ$› ÄŒ \ÙX)ƒF› ÄŒ \Ù`)ƒø‰×l\Ùh)ƒÓŸ ×l\Ùp)ƒ⟠×l\Ùx)ƒ;˜ ×l\Ù€)æCVpq\Ù8)æCV½s]ÙH)æCVÎs^ÙØ)æÈO×m`Ù )æÈO×laÙ°)æMùmaÙT)æM±qcÙè)æMndÙÆ= ºqeÙÆþŸ ’ jÙÆ  ¹nkÙÆ'  Œ_lÙÆNž ÑqlÙÆ;  ¹nnÙÆF  vLoÙÆ\  ØqrÙÆ÷€ ëq|ÙÆ·ƒ öqƒÙƲ  rŒÙÆskŒ_”ÙÆÕ  r”ÙÆó  ŽL˜ÙÆ¡ Œ_™ÙÆ¡ ŽL™ÙÆ¡ ršÙÆ×0r ÙƆ¡ :r¤ÙÆž¡ Mr¨ÙÆá x†¯ÙÆà¡ ar±ÙÆ¢ lr¶ÙÆ ¢ Œ_ºÙÆ&¢ urºÙÆR¢ ëqÃÙÆw¢ ‚rÊÙÆ•¢ vLÍÙ)ƒÄ¢ »rÐÙ )…¯ÃrÐÙ)æÈO×mÑÙP)æÈO×lÒÙ`)æMùmÒÙœ)æMÛrÔÙÈ)æMnÕÙì)ƒí¢ ìrÖÙô)…¯ôrÖÙ )æÈO×m×Ù8 )æÈO×lØÙH )æMùmØÙ„ )æMsÚÙ° )æMnÛÙÔ )ƒ‰£ ×lÜÙÜ )ƒ £ ×lÜÙä )ƒ´£ ×lÜÙì )ƒÈ£ ×lÜÙô )ƒÔ£ ¸…ÜÙü )…¯þoÜÙ,!)æCVsáÙŒ!)æCV½sâÙ !)æCVÎsãÙ ")æÈO×måÙ”")æÈO×læÙ¤")æMùmæÙ #)æM9sèÙ˜#)æMnéÙ¼#)ƒõ£ MsêÙÄ#)…¯SsêÙÔ#)æÈO×mëÙ$)æÈO×lìÙ$)æMùmìÙT$)æMhsîÙ€$)æMnïÙ¤$)ƒ¤ |sðÙ¬$)…¯‚sðÙ¼$)æÈO×mñÙð$)æÈO×lòÙ%)æMùmòÙ<%)æM˜sôÙh%)æMnõÙŒ%)ƒA¤ ¬söÙ”%)…¯²söÙ¤%)æÈO×m÷ÙØ%)æÈO×løÙè%)æMùmøÙ$&)æMÇsúÙP&)æMnûÙt&)ƒh¤ ÛsüÙ|&)…¯ásüÙŒ&)æÈO×mýÙÀ&)æÈO×lþÙÐ&)æMùmþÙ ')æM§÷Ú8')æMnÚ\')ƒ‹¤ JmÚd')…¯tÚt')æÈO×mÚ¨')æÈO×lÚ¸')æMùmÚô')æM$tÚ ()æMnÚD()ƒ~¥ ×lÚL()ƒ”¥ 5tÚT()ƒ¬¥ ×lÚ\()ƒÀ¥ ×lÚd()ƒÖ¥ ×lÚl()ƒí¥ ×lÚt()…¯=tÚ¬()æÈO×mÚL))æÈO×lÚ\))æMùmÚð))æMdtÚx*)æMnÚÆW¦ utÚÆ n¦ »ÚÆ …¦ »ÚÆ ¤¦ »ÚÆ À¦ »ÚÆ ˜¨ »ÚÆ ´¨ »ÚÆ Ѩ »ÚÆ å¨ »ÚÆ ù¨ »ÚÆ © »ÚÆ $© »ÚÆD© §tÚÆ b© »ÚÆ x© »ÚÆ—© ¬tÚÆ ô© »ÚÆ ª ŽLÚÆ ª »ÚÆ 4ª »ÚÆ Kª »ÚÆdª ºtÚÆ °ª »#ÚÆÔª Æt#ÚÆ « »&ÚÆ8« Ït&ÚÆ {« »*ÚÆ ¨« »*ÚÆ È« »*ÚÆ ê« »*ÚÆÏ&Œ_*ÚÆ­Œ_*ÚÆ&¬ Œ_*ÚÆ/¬ Œ_*ÚÆ?¬ Œ_*ÚÆK¬ Œ_*ÚÆZ¬ u*Úœ*)]N_-ÚÈ*)>Ç ”_-ÚÌ*)¸¬ ”_-ÚÔ*)Õ¬ ˜_-ÚÜ*)ò¬ _.Úè*)­ _.Úô*)1­ Vu.ÚP+)D­ v0Ú”,)X­ Hv2ÚÈ,)g­ tv4Ú-)z­ ¯v7ÚL-)Š­ Ñv:Út-)ž­ )w;Úœ.)Ö­ bwBÚÔ.)í­ /xDÚ0)® /xGÚ(0) ® »xJÚ`1)2® »xLÚp1)C® yNÚÔ2)Q® 0yPÚü2)a® ‹yRÚ4)}® °yUÚ44)¥® ÕyXÚd4)Å® úy[Úx4)â® 'z^Ú˜4)¯ Bz`ÚÀ4)¯ ]zbÚ5)'¯ xzdÚ\5)4¯ ¨zfÚ”5)B¯ éziÚØ5)O¯ {kÚ6)]¯ Œ{nÚ7)q¯ 9|pÚ´7)¯ n|sÚ48)’¯ Ä|vÚÔ8)˜¯ ÷|yÚ09)ª¯ }|ÚP9)º¯ _}~Úd9)ʯ ¹}€Ú|9)æ¯ ~„Ú”9)ø¯ oˆÚ @)° Ê‹Úd@)° êŽÚÈ@)+° €‘Úä@)=° %€“ÚA)M° Q€•Ú$A)c° p€—Ú¸A)„° —€™ÚB)•° ×€›ÚlB)Ȱ ŸÚ°B)ã° .¡ÚàB)ñ° ´£ÚÜC)± 3‚§Ú D)± d‚ªÚ}!ÛO)Fœ½†‘"Û¤O)…¯4‘#Û¼O)Fœ½K‘%ÛÔO)…¯4‘&ÛìO)Fœ½K‘(ÛP)…¯¬‘)ÛP)Fœ½‘*Û,P)…¯Ë,ÛÛdQ)…¯Ë?ÛtQ)Fœ½‰’@Û„Q)…¯ËAÛ”Q)Fœ½‰’BÛ¤Q)…¯4‘CÛ¼Q)Fœ½K‘EÛÔQ)…¯ËFÛäQ)Fœ½‰’GÛôQ)…¯ËHÛR)Fœ½‰’IÛR)…¯4‘JÛ,R)Fœ½K‘LÛDR)…¯4‘MÛ\R)Fœ½–’OÛtR)…¯4‘PÛŒR)Fœ½£’RÛ¤R)…¯ËSÛ´R)Fœ½é‘TÛÄR)…¯ËUÛÔR)Fœ½°’VÛäR)…¯4‘WÛüR)Fœ½K‘YÛS)…¯,†ZÛDS)Fœ½î´_ÛxS)…¯4‘`ÛS)Fœ½K‘bÛ¨S)…¯-“cÛØS)Fœ½û´hÛ T)…¯4‘iÛ$T)Fœ½K‘kÛÜŽ)…¯ƒ®?ܨŽ)ƒQ~®AܰŽ)ƒUM‘®AܸŽ)…¯ƒ®AÜÐŽ)ƒQ~®CÜØŽ)ƒUM‘®CÜàŽ)…¯xa CÜðŽ)ƒqP~®DÜøŽ)…¯ίDÜ)†Q~®EÜ)†UM‘®EÜ()…¯ׯEÜ8)†Q~®FÜH)†UM‘®FÜX)…¯à¯FÜh)†qP~®GÜx)ƒh½ ÓlGÜ€)ƒs½ ßkG܈)ƒ‹½ ~®GÜ)…¯é¯Gܰ)æCV°JÜT)æCV½sKÜh)æCVÎsLÜ‘)æÈO×mNÜx‘)æÈO×lO܈‘)æMùmOÜð‘)æM9°QÜL’)æMnRÜp’)–½ B°SÜ|’)…¯Z°VÜœ’)ƒQd Yܤ’)ƒUM»®Yܬ’)ƒ!Q†®YÜ´’)ƒ†O×lYܼ’)ƒ¹OÁmYÜÔ’)Ͻ £°YÜà’)…¯¾°\Ü“)ƒQÕ°_Ü“)ƒUMî_Ü“)ƒ!Q~®_Ü“)ƒ†O×l_Ü “)ƒ¹OÁm_Ü8“)ƒ“d _ÜT“)ƒá½ ~®_Ü`“)ƒì½ Õ°_Ül“)ƒû½ †®_܈“)ƒ¾ »®_ܤ“)ƒ˜» î_ܰ“)éZ±_ÜØ“)ƒ8œ ±aÜ`”)…¯¹naÜp”)Ÿ¾ I±bÜ|”)ƒ¬¾ ßkf܈”)¼¾ Y±fÜ””)ƒÉ¾ ßkiÜ ”)Ù¾ h±iܰ”)ƒè¾ ßknܼ”)ú¾ Y±nÜÈ”)ƒ ¿ ßkqÜÔ”)¿ y±qÜà”)ƒ(¿ ßktÜì”)8¿ ˆ±tÜø”)ƒG¿ ßkxÜ•)Y¿ ¡±xÜ•)ƒi¿ ßkzÜ•)|¿ ¯±zÜ(•)ƒŠ¿ ßk|Ü4•)›¿ ½±|Ü@•)ƒª¿ ßk~ÜL•)ƒ†O×l~ÜT•)ƒ¹OÁm~Ül•)…¯²~Ü”•)ƒQßk‚Üœ•)ƒUM²‚ܤ•)ƒ!Q×l‚ܬ•)ƒ=Q×l‚Ü´•)…¯y²‚ÜÔ•)ƒQßk…ÜÜ•)ƒUM²…Üä•)ƒ!Q×l…Üì•)…¯å²…Ü–)ƒQßkŠÜ$–)ƒUM²ŠÜ,–)ƒ!Q×lŠÜ4–)ƒ=Q×lŠÜ<–)ƒGQ×lŠÜD–)…¯y²ŠÜd–)ƒQßkÜl–)ƒUM²Üt–)ƒ!Q×lÜ|–)…¯¸³Üœ–)ƒQ²ܤ–)ƒUM×lܬ–)ƒ!Q×lÜ´–)…¯$´ÜÜ–)ƒQßk”Üä–)ƒUM²”Üì–)ƒ!QQI”Üô–)ƒ=Q×l”Üü–)…¯œ´”Ü—)ƒQßk–Ü—)ƒUM²–Ü$—)…¯ µ–Ü<—)ƒQ²˜ÜD—)ƒUM×l˜ÜL—)…¯vµ˜Üd—)ƒQö»šÜl—)ƒUM‘®šÜt—)…¯çµšÜ„—)†Qßk›Ü”—)†UM²›Ü¤—)†!Q×l›Ü´—)†=Q×l›ÜÄ—)…¯ðµ›ÜÔ—)†QßkœÜä—)†UM²œÜô—)†!Q×lœÜ˜)…¯ùµœÜ˜)†QßkÜ$˜)†UM²Ü4˜)†!Q×lÜD˜)†=Q×lÜT˜)†GQ×lÜd˜)…¯¶Üt˜)†QßkžÜ„˜)†UM²žÜ”˜)†!Q×lžÜ¤˜)…¯ ¶žÜ´˜)†Q²ŸÜĘ)†UM×lŸÜÔ˜)†!Q×lŸÜä˜)…¯¶ŸÜô˜)†Qßk Ü™)†UM² Ü™)†!QQI Ü$™)†=Q×l Ü4™)…¯¶ ÜD™)†Qßk¡ÜT™)†UM²¡Üd™)…¯&¶¡Üt™)†Q²¢Ü„™)†UM×l¢Ü”™)…¯/¶¢Ü¤™)†Qö»£Ü´™)†UM‘®£ÜÄ™)…¯¹n£ÜÔ™)Fœ½× ¤Üä™)…¯Œ_¥Üì™)Fœ½8¶¥Üš)…¯êK¦Ü š)Fœ½O¶§ÜPš)…¯Œ_¨ÜXš)Fœ½^¶¨Üdš)…¯Œ_©Ülš)Fœ½k¶©Üxš)…¯Œ_ªÜ€š)Fœ½x¶ªÜŒš)…¯Œ_«Ü”š)Fœ½¶«Ü š)ƒý¿ »®­Ü¨š)ƒ “†®­Ü°š)ƒÀ ·¶­Ü¸š)ƒÀ ö­ÜÀš)…¯϶­Üèš)ƒ2Á ø¶±Üðš)ƒDÁ ø¶±Üøš)ƒYÁ Wª±Ü›)ƒkÁ ßk±Ü›)ƒÁ º±Ü›)ƒÁ Nª±Ü›)ƒ±Á ßk±Ü ›)ƒÆÁ ö±Ü(›)…¯·±Üx›)…¯Œ_¹Ü€›)ÝÁ -·¹Üˆ›)ƒèÁ ßkºÜ”›)ÈO :·ºÜœ›)ƒÑO ßk»Ü¨›)ƒ†O×l»ÜÄ›)ƒ¹OÁm»ÜÜ›)…¯„·»Üì›)ƒqP·¼Üô›)…¯s´¼Üœ)ƒqP¸½Ü œ)…¯m¸½Üœ)†qP·¾Ü,œ)…¯v¸¾Ü<œ)†qP¸¿ÜLœ)]N_¿Üèœ)Ëã”_¿Üìœ)’É ”_¿Üôœ)¤É |οÜüœ)ÅÉ N»¿Ü,)ÍÉ f»ÁÜŒ)ÙÉ G¦ÃÜÜ)ëÉ |»ÄÜä)Ê Š»ÄÜì)$Ê G¦ÄÜ$ž)3Ê ©»ÅÜ,ž)RÊ ½»ÅÜhž)hÊ Ï»ÆÜ¼ž)xÊ B6 ÇÜÄž)Ê ¼ÇܰŸ)¸Ê ¼ÈÜðŸ)ÈÊ ¼ÊÜD )ÞÊ ¼ËÜ| )ñÊ î0Ì܈ )ÿÊ n¼ÍÜP¡)Ë ~¼ÐÜ¢))Ë ‘¼ÔÜ¢)TË  ¼ÔÜ0¢)bË R%ÕÜ8¢)sË R%ÕÜ@¢)ŠË ¥¼ÕÜT¢)”Ë ¥¼ÖÜh¢)¤Ë º¼×Üt¢)³Ë º¼ÚÜ¢)¿Ë Õ¼ÝÜ ¢)ÍË â¼ÞÜh£)âË â¼áÜ ¤)÷Ë =½äÜD¥) Ì €½çÜ`¦)#Ì Ä½ëÜ`§)3Ì Ô½îÜh§)GÌ ©¾îÜì§)qÌ ò¾ïÜP¨)}Ì ò¾òÜl¨)ŒÌ )¿õÜt¨)žÌ 5¿õ܈¨)©Ì é¿öÜÌ«)ÀÌ •ÀùÜÀ®)×Ì îÀýܱ)ïÌ ‚ÁÝ ³)Í ‚ÁÝHµ)Í rÂÝ ·),Í Ä ÝÀ¹)CÍ õ Ý`¼)[Í BÃÝ8¾)nÍ ŠÃÝÀ)Í šÃÝÀ)—Í ¦ÃÝÈÀ)®Í ¦ÃÝlÁ)ÅÍ ¶ÃÝ|Á)ÓÍ ÃÃ݈Á)åÍ áÃݘÁ)øÍ áà ݨÁ) Î öÃ!ݰÁ)'Î R%!ݸÁ)BÎ Ä!ÝÄÁ)RÎ Ä$ÝàÁ)\Î #Ä&ÝìÁ)jÎ #Ä(ÝÂ)uÎ 9Ä*ÝÂ)ŠÎ SÄ+ÝTÂ)›Î aÄ-ÝtÂ)-Ÿ sÄ/ݘÂ)«Î ŽÄ2ݨÂ)·Î ŽÄ4ݸÂ)ÃÎ ŽÄ6ÝÌÂ)ÒÎ ¤Ä8ÝàÂ)èÎ ¤Ä9ÝôÂ)þÎ ±Ä:ÝüÂ)Ï QÅ:ÝhÃ)8Ï EN;ÝxÃ)GÏ ‚Å<Ý„Ã)VÏ ]a=ÝŒÃ)uÏ “Å=ݼÃ)Ï Ù˜>ÝÌÃ)­Ï  Å?ÝÜÃ)¼Ï  ÅEÝÄ)ÈÏ ÂÅKÝ Ä)æÏ ÂÅNÝ(Ä)Ð ÝÅQÝ@Ä)Ð ÆUÝ`Ä)Ð 9Æ]Ý„Ä)3Ð 9ÆcݨÄ)DÐ cÆiݼÄ)_Ð „ÆnÝÐÄ)xÐ ©ÆsÝäÄ)›Ð „ÆwÝøÄ)²Ð ©Æ|Ý Å)ÓÐ ÅÆ€Ý<Å)êÐ äÆƒÝ\Å)Ñ úÆ…ÝhÅ) Ñ ÇˆÝtÅ)Ñ ÇŠÝŒÅ)-Ñ 2ÇÝ”Å)DÑ :ÇݬÅ)TÑ WǎݼÅ)lÑ nÇÝØÅ)xÑ cj‘Ý,Æ)ˆÑ ÃÇ’ÝøÈ)œÑ q˜“ÝË)¬Ñ q˜”ÝìÌ)ÁÑ ”_•ÝðÌ)ÌÑ nÈ•ݬÍ)ÝÑ ŽÈ—ݼÍ)ðÑ nȘݘÎ)ÿÑ ŽÈšÝ¨Î)Ò +É›ÝDÏ) Ò jÉݨÏ)/Ò ‰ÉŸÝäÏ)EÒ  É¢ÝôÏ)RÒ Íɣ݀Ð)^Ò Úɤ݌Ð)kÒ çɥݨÐ)xÒ ýɧÝÄÐ)Ò ýÉ©ÝØÐ)ªÒ Ê«ÝøÐ)ºÒ !Ê­ÝÑ)òÒ !ʰÝ@Ñ)Ó gʳÝ`Ñ)6Ó ¤ÊµÝ|Ñ)DÓ ¯ÊµÝ„Ñ)[Ó j™µÝ”Ñ)mÓ ÒʵÝÒ)Ó ÒʶݜÒ)Ó ÛʷݸÒ)¥Ó íʹÝÓ)¾Ó ˼Ý,Ó)ÙÓ Ë¿ÝŒÓ)òÓ 9ËÀÝÔ)Ô KËÂÝÔ) Ô SËÂÝ Ô)2Ô dËÃÝ,Ô)HÔ yËÄÝ8Ô)TÔ ‚ËÅÝ`Ô)dÔ ˜ËÆÝpÔ)uÔ ˜ËÇÝ€Ô)‰Ô ºËÈÝÔ)¢Ô ºËÉÝ Ô)¸Ô ÏËÊÝ´Ô)ÊÔ åËÌÝàÔ)âÔ ÌÏÝÕ)îÔ  ÌÐÝÕ)Õ ÍÕÝ Õ)"Õ ‚Í×ݰÕ)-Õ ÎØÝàÕ):Õ ‘ÎÚÝÖ)GÕ ÜÎÛÝ8Ö)^Õ ÏÜÝ@Ö)rÕ <ÏÜÝpÖ)…Õ âÏÞݘÖ)‘Õ aÐàÝÀÖ)Õ rÐáÝÔÖ)­Õ ‡ÐâÝÜÖ)ÀÕ ÐâÝ×)ÓÕ j™äÝ×)èÕ j™äÝ×)Ö j™äÝ×)Ö j™äÝ ×)/Ö ¦ÐäÝ,×)9Ö n•æÝ<×)EÖ ¹çÝH×)OÖ ÀÐèÝ„×)[Ö ]aéÝŒ×)lÖ ]aéÝ”×)}Ö ]aéÝœ×)•Ö ]aéݤ×)­Ö ]aéݬ×)ÄÖ ]aéÝ´×)ÚÖ ]aéݼ×)îÖ ]aéÝÄ×)ýÖ ]aéÝÌ×)× ]aéÝÔ×)#× ]aéÝÜ×)?× ]aéÝä×)Z× ]aéÝì×)€× ]aéÝô×)“× ]aéÝü×)§× ]aéÝØ)À× ]aéÝ Ø)Ï× ]aéÝØ)ë× ]aéÝØ)û× ]aéÝ$Ø) Ø ]aéÝ,Ø)Ø ]aéÝ4Ø),Ø ]aéÝ<Ø)=Ø ]aéÝDØ)MØ ]aéÝLØ)^Ø ]aéÝTØ)nØ ]aéÝ\Ø)}Ø ]aéÝdØ)ŽØ ]aéÝlØ)ŸØ ]aéÝtØ)®Ø ]aéÝ|Ø)½Ø ]aéÝ„Ø)ÎØ ]aéÝŒØ)àØ ]aéÝ”Ø)Ù ]aéÝœØ)Ù ]aéݤØ):Ù ]aéݬØ)WÙ ÖÐéݼØ)dÙ ÖÐêÝÌØ)uÙ ãÐëÝÜØ)ŒÙ ÖÐíÝèØ)›Ù õÐîÝðØ)¦Ù þÐîÝÙ)®Ù ZïÝ$Ù)»Ù õÐïÝ,Ù)ÆÙ þÐïÝXÙ)ÎÙ õÐðÝ`Ù)ÙÙ þÐðÝŒÙ)áÙ õÐñÝ”Ù)ìÙ ÑñÝÈÙ)÷Ù ]aòÝÐÙ)Ú ]aòÝØÙ):Ú mÓòÝôß)oÚ €ÓõÝüß)Ú 3ÇõÝà)šÚ ˆÓõÝ à)¬Ú 4‘ õÝdà)ÆÚ Óöݘà)áÚ ºÓøÝá)óÚ ÉÓûÝ$á) Û ÉÓþÝDá)'Û ØÓÞTá)4Û ØÓÞdá)AÛ ØÓÞtá)VÛ ØÓÞ„á)bÛ ØÓ Þ”á)mÛ ØÓ Þ¤á)yÛ ØÓ Þ´á)†Û ØÓÞÄá)’Û ØÓÞÔá)ŸÛ ØÓÞäá)«Û ØÓÞôá)¸Û ØÓÞâ)ÅÛ ØÓÞâ)ÓÛ ØÓÞ$â)ÞÛ ØÓÞ4â)éÛ ØÓÞDâ)öÛ ØÓ!ÞTâ)Ü øÓ#Þ¬â)Ü (Ô%Þìâ),Ü JÔ'Þã)>Ü \Ô)Þ4ã)OÜ –Ô+Þ¤ã)fÜ ¸Ô-ÞÈã)xÜ Õ/Þ$å)†Ü -Õ1ÞDå)•Ü GÕ3Þlå)¦Ü YÕ5Þ¸å)¹Ü kÕ7Þàå)ËÜ ºÕ9ÞLç)áÜ ÑÕ<Þ`ç)öÜ ðÕ?Þç)Ý ÖBÞœç)Ý ÖDÞ¼ç)Ý /ÖFÞÌç)+Ý Ê’HÞØç)9Ý =ÖIÞèç)DÝ JÖJÞôç)NÝ WÖKÞè)qÝ xÖPÞè)‡Ý ™ÖUÞ è)šÝ ¡ÖUÞˆè)£Ý ÉÖXÞÜè)¹Ý ãÖZÞðè)ÇÝ ãÖ[Þé)ÖÝ ãÖ\Þé)åÝ ãÖ]Þ$é)óÝ ãÖ^Þ0é)Þ ðÖ_ÞDé)Þ ðÖ`ÞXé)Þ ýÖaÞ”é)>Þ ×cÞðé)YÞ =×iÞê)tÞ ^×nÞdê)‚Þ k×oÞØê)²Þ =×uÞìê)ÎÞ k×zÞHë)êÞ =×€Þ\ë)ß •×…Þë)ß ÌׇÞ|ì)(ß ç׉ÞÌì)<ß ý׋ÞÜì)[ß ªØÞ$î)wß ÎØÞ\î)‡ß àØ’Þtî)–ß òؔވî)§ß Ù˜Þ¤î)·ß 2ٜ޴î)Ðß QÙŸÞÜî)çß uÙ¦Þøî)ùß ‘ÙªÞï) à ³Ù¯Þ4ï)à õÙ´ÞHï))à ÚµÞXï)4à Ú¶Þ`ï)Fà #Ú¶Þhï)Qà =Ú¶Þ|ï)`à RÚ·ÞŒï)kà cÚ¸Þ”ï)}à kÚ¸Þœï)Šà …Ú¸Þ°ï)à šÚ¹ÞÀï)¬à «ÚºÞÈï)Âà ³ÚºÞÐï)Ïà àÚºÞðï)áà ñÚ»Þð)÷à 0Û¼Þ$ð)á AÛ½Þ8ð)+á VÛ¾ÞHð)9á gÛ¿ÞTð)Ká ÁÛÀÞ´ð)`á 6ÜÂÞÔð)pá GÜÃÞèð)„á \ÜÄÞðð)›á ŸÜÄÞhñ)Âá ìÜÉÞÌñ)ñá @ÝÎÞÜñ)ÿá gÝÏÞðñ)â ™ÝÔÞò)%â ËÝÙÞdò)Jâ ÞåÞèò)eâ #ÞéÞó)uâ YÞóÞXó)“â ¤ÞöÞÀó)¸â ÐÞøÞpô) ßßœô)Øâ ßߤô)åâ “àßðô)ïâ ×àß õ)þâ îà ß0õ)1ã öàßLõ)>ã îàßtõ)Oã <áß ö)aã _áßHö)tã xáß\ö)‘ã xáßpö)£ã ”áߌö)Íã Áá!ߘ÷)àã Ùá#ßð÷)ä úá&ßLø)'ä ã(ßÜø)„ä Šè.ßHü)Åä xé6ßüü)ßä Õê=ß@ý)å öëEßxþ)Aå •ìJß ÿ)jå kíOß´ÿ)’å ºíTßÔÿ)Åå ëíXßàÿ)áå îZßèÿ)ïå xîZßðÿ)þå àîZßøÿ)æ ïZß*,æ &ïZßô*Aæ ð]ß(*xæ iðbßÜ*‹æ §ðgßÔ*”æ Ððjßl*¬æ ïðmßÐ*Ñæ ñpßÜ*íæ ¼ñqß*ç ÊñsßÈ*ç áhußô*+ç iwßP*:ç ,iyß|*Iç ?i{ß0*Xç Ri}ß\*gç ¤ißÈ*vç ißô*…ç Âiƒß, *—ç èi…ß\ *©ç †j‡ß  *½ç ªjŠßÜ *Ïç ?ißÔ *àç {òßü *õç ­ò‘߀ *è Îò“ßÜ **è „4”ߘ *9è Ûò•ßÐ *Dè „4–ß( *Oè áò—ßè *9 ó=˜ßì *9 ó=˜ßð **9 ó=˜ßô *99 ó=˜ßø *E9 ó=˜ßü *O9 ó=˜ß*Y9 ó=˜ß*c9 ó=˜ß*m9 ó=˜ß *w9 ó=˜ß*9 ó=˜ß*‹9 ó=˜ß$*•9 ó=˜ß,*Ÿ9 ó=˜ß4*©9 ó=˜ß<*·9 ó=˜ßD*Â9 ó=˜ßL*Ï9 ó=˜ßT*à9 ó=˜ß\*í9 ó=˜ßd*ø9 ó=˜ßl*: ó=˜ßt*: ó=˜ß|*#: ó=˜ß„*,: ó=˜ßŒ*5: ó=˜ß”*B: ó=˜ßœ*P: ó=˜ß¤*_: ó=˜ß¬*k: ó=˜ß´*|: ó=˜ß¼*Zè ó˜ß*jè en™ßP*è |óšß\*šè “ó›ßÔ*¼è ôœßP*Õè ‡ô ß˜*ïè õ¢ßh*é \õ¥ß*#é põªßÐ*Eé  õ®ßè*fé Ùõ³ßü*†é ]a´ß*­é ]a´ß *Úé ]a´ß*üé ]a´ß*ê ]a´ß$*Dê ]a´ß,*kê ]a´ß4*ê ]a´ß<*±ê Ùõ´ßP*Óê Ùõµßd*õê Ùõ¶ßx*ë Ùõ·ßŒ*0ë Ùõ¸ß *Pë Ùõ¹ß´*pë Ùõºßè*˜ë æõ»ß*³ë óõ¼ß4*Ðë óõ½ßT*ïë óõ¾ßt* ì ö¿ß°*$ì öÁßð*Aì öÃß$*^ì óõÅßX*€ì óõÆßx*Ÿì JöÇߨ*Êì wöÊß$*Üì ‰öÌßÐ*ôì ›öÎß(*í ­öÐß*%í wöÒß´*5í ›öÔß *Kí ­öÖßt *^í ¿öØß¤ *ní ñöÛß$!*†í %÷Ýßt!*–í gøãß”(*¤í Øøçß)*´í Eùëßh**Äí Úùñß@+*×í úôßÄ+*ùí #úùßÌ+* î Eúùß$,*î oúûßø,*$î }úýß(-*2î ‹úÿßH-*Bî ™úà\-*Tî «úàœ-*aî ¹úàÌ-*nî Çúàü-*|î Õú à(.*Šî ãú à<.*—î û à´.*¥î ûàÌ.*¾î -ûàà.*Óî …ûà83*áî Öûà|4*òî Öûàˆ4*ï äûà¬4*ï òûàÀ4* ï üà$5*.ï (üà„5*;ï 6ü!à˜5*Iï Dü#à¬5*Xï Rü%àÀ5*fï dü'à,6*xï Ÿü)à\6*‡ï ­ü+à¸6*œï èü-àè6*¯ï öü/àü6*¾ï ý1à7*Óï ý3à07*çï =ý5àä7*ôï Ký7àü7*ð Yý9à8*ð yý;àl8*0ð •ý=àˆ8*Bð «ý?à¸8*Pð ¹ýAàØ8*að øýCà09*oð þDà89*yð Ï™Dà@9*ð þDàH9*¥ð Ï™EàP9*½ð þEàX9*Õð þFàd9*ñ *þGàì:*2ñ FþHà˜;*Dñ ‹þJàˆ<*Wñ þLà˜<*gñ `MàD=*]N_NàT=*…¯<»Nàl=*Fœ½yéPàˆ=*…¯ßÙQà¸=*ƒ}7ÿSàÈ=*ƒ"cYÿSàè=*ƒœhsÿTà>*ƒqP8zUà<>*…¯Œ_VàH>*ᶪUVàT>*áñªMWà`>*…¯ÒÿYàx>*Fœ½[àÐ>*…¯ÿ\àà>*Fœ½+]à?*…¯y^à$?*Fœ½ï* _à4?*…¯?`àD?*Fœ½ï* aàX?*…¯Œ_bà`?*Áñ Ubàh?*ƒÎñ ßkcàt?*Þñ Ucà|?*ƒðñ ßkdàˆ?*ƒ†O×ldà¤?*ƒ¹OÁmdà¼?*æCV¾dàl@*æCV½seà€@*æCVÎsfàáH‚*æÈO×m@á ƒ*æÈO×lAáƒ*æMùmAá܃*ƒ[ý d Cáèƒ*ƒü wÞCáôƒ*ƒÛÓlCá„*ƒÃý×lCá „*ƒpý ×lCá„*ƒ ¶ îCá(„*ƒy` ~®Cá4„*ƒ}ý CáP„*éZ ÅCá`„*ÆÒvÓlIá„*æM‘Iá4…*æMnJáX…*ƒ[ý d Ká`…*ƒÛÓlKáh…*ƒø‰~®Káp…*…¯šKá…*æCV»Ná †*æCV½sOá4†*æCVÎsPáĆ*æÈO×mRá8‡*æÈO×lSáH‡*æMùmSá´‡*ÆÒvÓlUáØ‡*æMêUá<ˆ*æMnVá`ˆ*ƒBþ  °Wáhˆ*ƒUþ ~®Wápˆ*ƒlþ îWáxˆ*…¯ûWᘈ*æCV@ZáD‰*æCV½s[áT‰*æCVÎs\áü‰*æÈO×m^áhŠ*æÈO×l_áxŠ*æMùm_áôŠ*éZ§aá‹*ƒ€þ  °dá ‹*ƒŽþ~®dá‹*ƒ˜» îdá$‹*ƒÛÓldá4‹*ƒü wÞdáD‹*ƒÃý×ldáT‹*ƒŽþ îdád‹*ƒô— ~®dát‹*ÆÒvÓldጋ*æMÂdáð‹*æMneáŒ*ƒÎþ þ fáŒ*ƒŽþ~®fá$Œ*…¯Ófá<Œ*æCVühá°Œ*æCV½siáÄŒ*æCVÎsjá<*æÈO×mláŒ*æÈO×lmáœ*æMùmmáø*ƒäc ~®oáŽ*ƒÛÓloáŽ*ƒ[ý d oá(Ž*ÆÒvÓloá8Ž*æM>oᄎ*æMnpᨎ*ƒòþ ~®qáÈŽ*]N_qáìŽ*…¯¹nqáüŽ*” ^rá*ƒ$” ßkrá*6ÿ ^rá*ƒ@ÿ ßkrá$*Lÿ ^rá,*ƒUÿ ßkrá8*ƒ†O×lrá@*ƒ¹OÁmráX*æCV“rá˜*æCV½ssá¨*æCVÎstáø*æÈO×mvá4*æÈO×lwáD*æMùmwá€*æM¦yá¸*æMnzáÜ*ƒëÿ ê{áä*ƒþÿ ê{áì*ƒ ê{áô*ƒ! Ól{áü*…¯·{á$‘*æCV×áБ*æCV½s€áà‘*æCVÎsጒ*æÈO×mƒá“*æÈO×l„á,“*æMùm„ᨓ*éZë†á´“*ƒe êŠáÀ“*ƒ0 êŠáÌ“*ƒ5 êŠáØ“*ƒ*S ÓlŠáä“*æMŠáX”*æMn‹á|”*ƒÊ Œá„”*ƒÝ ×lŒáŒ”*ƒì ×lŒá””*ƒý ×lŒáœ”*ƒ ×lŒá¤”*…¯ŒáÔ”*æCV=‘á,•*æCV½s’á<•*æCVÎs“á •*æÈO×m•á(–*æÈO×l–á8–*æMùm–Ḗ*éZk˜áÈ–*ƒ³± áÔ–*ƒ[V×láà–*ƒ¶V×láì–*ƒ6v×láø–*ƒRv×lá—*ÆÒvÓláH—*æM|áÀ—*æMnžáä—*…¯ÿfŸáô—*Fœ½† á˜*…¯g¡á˜*Fœ½.g¢á<˜*…¯ƒº£áL˜*Fœ½—º¤áp˜*…¯¦º¥á€˜*Fœ½Òº¦á¤˜*]N_§á´˜*…¯¹n§áĘ*† •¨á̘*ƒ)† ßk©áؘ*ï„ ¢©áà˜*ƒ÷„ ßkªáì˜* † «ªáô˜*ƒ† ßk«á™*… ´«á™*ƒ … ßk¬á™**… ½¬á™*ƒ3… ßk­á(™*V… Æ­á0™*ƒ_… ßk®á<™*‚… Ï®áD™*ƒ‹… ßk¯áP™*… دáX™*ƒ… ßk°ád™*?… á°ál™*ƒI… ßk±áx™*k… ê±á€™*ƒu… ßk²áŒ™*—… ó²á”™*ƒ¡… ßk³á ™*Þ… ü³á¨™*ƒè… ßk´á´™*õ… ´á¼™*ƒÿ… ßkµáÈ™*4”µáЙ*ƒ=”ßkµáÜ™*- µáä™*ƒÛ“ßk¶áð™*5 '¶áø™*ƒ@ ßk·áš*›; 8·áš*ƒ°Lßk¹áš*ƒ†O×l¹á$š*ƒ¹OÁm¹á<š*æCVm¹á˜ž*æCV½sºá¬ž*æCVÎs»á¨¢*æÈO×m½áœ¥*æÈO×l¾á¬¥*æMùm¾á¨*æM&Àᘫ*æMnÁἫ*…¯³ÂáÌ«*ƒqPtÃáÔ«*…¯štÃáä«*ƒqPßkÄáì«*…¯q Äáü«*ƒqPßÏ Åá¬*…¯1Œ Åá¬*ƒqP6Œ Æá¬*…¯¿Œ Æá,¬*ƒqPÄŒ Çá4¬*…¯¹nÇáD¬*ƒqP×lÈáL¬*…¯ƒ†Èá\¬*ƒqPàcÉád¬*…¯i†Éát¬*ƒqP†Êá|¬*…¯~†Êጬ*ƒqP Ëᔬ*…¯’ Ëᨬ*ƒqP— Ìá°¬*…¯ï# ÌáĬ*ƒqPè Íá̬*…¯ߎ Íáà¬*ƒqPäŽ Îáè¬*…¯, Îáü¬*ƒqPû™Ïá­*…¯ «Ïá­*ƒqP«Ðá ­*…¯‹Ðá4­*ƒqP`ÄÑá<­*…¯õÑáT­*ƒQ~®Óá\­*ƒUMÓád­*…¯bÓát­*†qPtÔá„­*…¯kÔá”­*†qPßkÕ᤭*…¯tÕá´­*†qPßÏ ÖáÄ­*…¯}ÖáÔ­*†qP6Œ ×áä­*…¯†×áô­*†qPÄŒ Øá®*…¯Øá®*†qP×lÙá$®*…¯˜Ùá4®*†qPàcÚáD®*…¯¡ÚáT®*†qP†Ûád®*…¯ªÛát®*†qP Üá„®*…¯³Üá”®*†qP— Ý᤮*…¯¼Ýá´®*†qPè ÞáÄ®*…¯ÅÞáÔ®*†qPäŽ ßáä®*…¯Îßáô®*†qPû™àá¯*…¯×àá¯*†qP«áá$¯*…¯àáá4¯*†qP`ÄâáD¯*…¯éâáT¯*†Q~®ãád¯*†UMãát¯*ƒÈ±ãá|¯*ƒÿk¸…ãᄯ*…¯òãᜯ*æCVåá°*æCV½sæá°*æCVÎsçሰ*æÈO×méáØ°*æÈO×lêáè°*æMùmêá@±*æM?ìጱ*æMníá°±*…¯Œ_îḱ*} DîáÀ±*ƒ ßkïá̱*¦ :ÇïáÔ±*ƒµ ßkðáà±*ƒ†O×lðáü±*ƒ¹OÁmðá²*ƒñ¯ ºðáH²*…¯ÂðáX²*ƒqPÓñá`²*…¯< ñáp²*ƒqPºòáx²*…¯ž òሲ*†qPÓóᘲ*…¯® óᨲ*†qPºôḲ*]N_ôád³*…¯¹nôát³*I ¿ õá|³*ƒR ßkõሳ*] ¿ õá³*ƒg ßkõᜳ*s ¿ õᤳ*ƒ} ßkõá°³*‰ ¿ õḳ*ƒ“ ßkõáij*Ÿ ¿ õá̳*ƒ© ßkõáØ³*µ ¿ õáà³*ƒ¿ ßkõáì³*Ë ¿ õáô³*ƒÕ ßkõá´*á ¿ õá´*ƒë ßkõá´*÷ ¿ õá´*ƒ ßkõá(´*  ¿ õá0´*ƒ ßkõá<´*# ¿ õáD´*ƒ- ßkõáP´*9 ¿ õáX´*ƒB ßkõád´*M ¿ õál´*ƒV ßkõáx´*a ¿ õဴ*ƒl ßkõጴ*ƒ†O×lõá”´*ƒ¹OÁmõ᬴*æCVô õáì´*æCV½söáü´*æCVÎs÷áLµ*æÈO×mùáèµ*æÈO×lúáøµ*æMùmúá4¶*æM!üál¶*æMnýá¶*…¯Œ_þᘶ* !þá ¶*ƒ— ßkÿᬶ*¤ %!ÿá´¶*ƒ° ßkâÀ¶*m‡2!âȶ*ƒx‡ßkâÔ¶*ƒ†O×lâü¶*ƒ¹OÁmâ·*æCVÇ!âD¸*æCV½sâX¸*æCVÎs‹*æÈO×mâ,º*æÈO×lâ<º*æMùmâT»*æMo"âL¼*æMn âp¼*…¯xa ‼*ƒqP~® ∼*…¯Ã" ☼*ƒqP± â ¼*…¯# â°¼*ƒqP° ⸼*…¯n# âȼ*†qP~®âؼ*…¯w#âè¼*†qP±âø¼*…¯€#â½*†qP°â½*…¯¹nâ(½*Ó ‰#â0½*ƒÙ ßkâ<½*â ’#âD½*ƒè ßkâP½*ñ ›#âX½*ƒ÷ ßkâd½* ¤#âl½*ƒ ßkâx½*ƒ†O×l‽*ƒ¹OÁm☽*æCVÚ#âà½*æCV½sâô½*æCVÎsâL¾*æÈO×mâ¿*æÈO×lâ(¿*æMùmâ À*æM>$â0À*æMnâTÀ*…¯¹nâdÀ*ƒqP×lâlÀ*…¯ƒ†â|À*ƒqPàc â„À*…¯ߎ â”À*ƒqPäŽ !âœÀ*…¯, !â¬À*ƒqPû™"â´À*…¯k%"âÄÀ*†qP×l#âÔÀ*…¯t%#âäÀ*†qPàc$âôÀ*…¯}%$âÁ*†qPäŽ %âÁ*…¯†%%â$Á*†qPû™&â4Á*]N_&âLÁ*…¯¹n&â\Á*V —%'âdÁ*ƒc ßk'âpÁ*r —%'âxÁ*ƒ ßk'â„Á*ƒ†O×l'âŒÁ*ƒ¹OÁm'â¤Á*æCVÌ%'âäÁ*æCV½s(âôÁ*æCVÎs)âDÂ*æÈO×m+âlÂ*æÈO×l,â|Â*æMùm,â¸Â*æMß%.âðÂ*æMn/âÃ*]N_0âDÃ*…¯¹n0âTÃ*5 ð%1â\Ã*ƒA ßk1âhÃ*O ð%1âpÃ*ƒ^ ßk1â|Ã*o ð%1â„Ã*ƒ~ ßk1âÃ* ð%1â˜Ã*ƒž ßk1â¤Ã*ƒ†O×l1â¬Ã*ƒ¹OÁm1âÄÃ*æCV%&1âÄ*æCV½s2âÄ*æCVÎs3âdÄ*æÈO×m5â¨Ä*æÈO×l6â¸Ä*æMùm6âôÄ*æM8&8â,Å*æMn9âPÅ*]N_:âhÅ*…¯¹n:âxÅ*î Q&;â€Å*ƒÕc ßk;âŒÅ*û Q&;â”Å*ƒ  ßk;â Å*ƒ†O×l;â¨Å*ƒ¹OÁm;âÀÅ*æCV†&;âÆ*æCV½s<âÆ*æCVÎs=â`Æ*æÈO×m?âˆÆ*æÈO×l@â˜Æ*æMùm@âÔÆ*æM™&Bâ Ç*æMnCâ0Ç*]N_DâHÇ*…¯¹nDâXÇ*‹ ª&Eâ`Ç*ƒŸ ßkEâlÇ*µ ª&EâtÇ*ƒÇ ßkEâ€Ç*ƒ†O×lEâˆÇ*ƒ¹OÁmEâ Ç*æCVß&EâàÇ*æCV½sFâðÇ*æCVÎsGâ@È*æÈO×mIâhÈ*æÈO×lJâxÈ*æMùmJâ´È*æMò&LâìÈ*æMnMâÉ*]N_Nâ¤É*…¯¹nNâ´É*‘ 'Oâ¼É*ƒœ ßkOâÈÉ*© 'OâÐÉ*ƒ´ ßkOâÜÉ*Á 'OâäÉ*ƒÏ ßkOâðÉ*ß 'OâøÉ*ƒê ßkOâÊ*÷ 'Oâ Ê*ƒ ßkOâÊ* 'Oâ Ê*ƒ ßkOâ,Ê*- 'Oâ4Ê*ƒ; ßkOâ@Ê*K 'OâHÊ*ƒV ßkOâTÊ*c 'Oâ\Ê*ƒq ßkOâhÊ* 'OâpÊ*ƒ ßkOâ|Ê*Ÿ 'Oâ„Ê*ƒ® ßkOâÊ*¿ 'Oâ˜Ê*ƒÍ ßkOâ¤Ê*ƒ†O×lOâ¬Ê*ƒ¹OÁmOâÄÊ*æCVDOâË*æCV½sPâË*æCVÎsQâdË*æÈO×mSâìË*æÈO×lTâüË*æMùmTâ8Ì*æMJ'VâpÌ*æMnWâ”Ì*]N_Xâ„Î*…¯¹nXâ”Î*M ZYâœÎ*ƒX ßkYâ¨Î*e ZYâ°Î*ƒt ßkYâ¼Î*… ZYâÄÎ*ƒ— ßkYâÐÎ*« ZYâØÎ*ƒ¶ ßkYâäÎ*à ZYâìÎ*ƒÎ ßkYâøÎ*Û ZYâÏ*ƒé ßkYâ Ï*ù ZYâÏ*ƒ ßkYâ Ï* ZYâ(Ï*ƒ ßkYâ4Ï*) ZYâ<Ï*ƒ7 ßkYâHÏ*G ZYâPÏ*ƒR ßkYâ\Ï*_ ZYâdÏ*ƒm ßkYâpÏ*} ['YâxÏ*ƒˆ ßkZâ„Ï*– ['ZâŒÏ*ƒ¥ ßk[â˜Ï*· ['[â Ï*ƒÉ ßk\â¬Ï*Þ Z\â´Ï*ƒé ßk\âÀÏ*ö Z\âÈÏ*ƒ ßk\âÔÏ* Z\âÜÏ*ƒ( ßk\âèÏ*< Z\âðÏ*ƒG ßk\âüÏ*T Z\âÐ*ƒb ßk\âÐ*r Z\âÐ*ƒ} ßk\â$Ð*Š Z\â,Ð*ƒ• ßk\â8Ð*¢ Z\â@Ð*ƒ° ßk\âLÐ*À Z\âTÐ*ƒË ßk\â`Ð*Ø Z\âhÐ*ƒç ßk\âtÐ*ø Z\â|Ð*ƒ  ßk\âˆÐ* Z\âÐ*ƒ) ßk\âœÐ*6 Z\â¤Ð*ƒ@ ßk\â°Ð*L Z\â¸Ð*ƒW ßk\âÄÐ*d Z\âÌÐ*ƒo ßk\âØÐ*| Z\âàÐ*ƒŠ ßk\âìÐ*š Z\âôÐ*ƒ¥ ßk\âÑ*² Z\âÑ*ƒ½ ßk\âÑ*Ê Z\âÑ*ƒÚ ßk\â(Ñ*ì Z\â0Ñ*ƒ÷ ßk\â<Ñ* h'\âHÑ*ƒ ßk^âTÑ* þÐ^â\Ñ*ƒ& ßk_âhÑ*4 þÐ_âpÑ*ƒ@ ßk`â|Ñ*O z'`âˆÑ*ƒZ ßkcâ”Ñ*h þÐcâœÑ*ƒs ßkdâ¨Ñ* þÐdâ°Ñ*ƒ ßkeâ¼Ñ*œ þÐeâÄÑ*ƒ§ ßkfâÐÑ*µ z'fâÜÑ*ƒÀ ßkiâèÑ*Î þÐiâðÑ*ƒÙ ßkjâüÑ*ç ÑjâÒ*ƒï ßkkâÒ*ú ÖÐkâÒ*ƒ ßklâ$Ò* ‘'lâ0Ò*ƒ ßkoâ<Ò*(  'oâDÒ*ƒ4 ßkpâPÒ*C ZpâXÒ*ƒM ßkpâdÒ*Y ²'pâpÒ*ƒc ßksâ|Ò*p ²'sâˆÒ*ƒ~ ßkvâ”Ò* Ñ'vâ Ò*ƒ£ ßkzâ¬Ò*º õ'zâ¸Ò*ƒÅ ßk}âÄÒ*Ó ÖÐ}âÌÒ*ƒÞ ßk~âØÒ*ì (~âäÒ*ƒø ßk€âðÒ* Z€âøÒ*ƒ ßk€âÓ*! Z€â Ó*ƒ2 ßk€âÓ*E Z€â Ó*ƒU ßk€â,Ó*g Ñ€â4Ó*ƒr ßkâ@Ó*€ ZâHÓ*ƒŽ ßkâTÓ*ž .(â`Ó*ƒª ßkƒâlÓ*¹ @(ƒâxÓ*ƒÄ ßk†â„Ó*Ò ãÖ†âŒÓ*ƒß ßk‡â˜Ó*ï ãÖ‡â Ó*ƒû ßkˆâ¬Ó*  .(ˆâ¸Ó*ƒ ßkŠâÄÓ*% @(ŠâÐÓ*ƒ0 ßkâÜÓ*> W(âäÓ*ƒI ßkŽâðÓ*W ðÖŽâøÓ*ƒc ßkâÔ*r ðÖâ Ô*ƒ ßkâÔ*“ `(â Ô*ƒ  ßk‘â,Ô*° ÖБâ4Ô*ƒ¿ ßk’â@Ô*Ñ ðÖ’âHÔ*ƒÜ ßk“âTÔ*ê ðÖ“â\Ô*ƒ÷ ßk”âhÔ* m(”âtÔ*ƒ ßk—â€Ô*  m(—âŒÔ*ƒ+ ßkšâ˜Ô*9 ðÖšâ Ô*ƒB ßk›â¬Ô*N ðÖ›â´Ô*ƒY ßkœâÀÔ*g ðÖœâÈÔ*ƒv ßkâÔÔ*ˆ ðÖâÜÔ*ƒ” ßkžâèÔ*£ ['žâðÔ*ƒ¯ ßkŸâüÔ*¾ ['ŸâÕ*ƒÊ ßk âÕ*Ù „( âÕ*ƒæ ßk¤â(Õ*ö œ(¤â4Õ*ƒ ßk¦â@Õ* œ(¦âLÕ*ƒ) ßk¨âXÕ*< œ(¨âdÕ*ƒH ßkªâpÕ*W ZªâxÕ*ƒc ßkªâ„Õ*q ðÖªâŒÕ*ƒ ßk«â˜Õ* Z«â Õ*ƒ¡ ßk«â¬Õ*´ ðÖ«â´Õ*ƒÃ ßk¬âÀÕ*Õ Z¬âÈÕ*ƒá ßk¬âÔÕ*ï ®(¬âÜÕ*ƒý ßk­âèÕ* Z­âðÕ*ƒ ßk­âüÕ*, Z­âÖ*ƒ; ßk­âÖ*L »(­âÖ*ƒW ßk¯â(Ö*e »(¯â4Ö*ƒr ßk±â@Ö*‚ ðÖ±âHÖ*ƒ ßk²âTÖ*Ÿ Í(²â`Ö*ƒ± ßk´âlÖ*Æ ×(´âtÖ*ƒÑ ßkµâ€Ö*ƒ†O×lµâˆÖ*ƒ¹OÁmµâ Ö*æÈO×mµâôå*æÈO×l¶âæ*æMùm¶âÈõ*æM=ݸâÐ+æMn¹âô+…¯Ëºâ+ƒqPª/»â+…¯Ë»â$+ƒqPª/¼â,+…¯Ë¼â@+ƒqPª/½âH+…¯©0½â`+ƒQª/¿âh+ƒUM·0¿âp+…¯~†¿â„+ƒqP ÀâŒ+…¯~†Àâ +ƒqP Áâ¨+…¯£1ÁâÈ+ƒQî»ÄâÐ+ƒUMþ»ÄâØ+ƒ!Qª/Äâà+…¯~†Äâô+ƒqP Åâü+…¯~†Åâ+ƒqP Æâ+…¯~†Æâ,+ƒqP Çâ4+…¯£1ÇâT+ƒQî»Êâ\+ƒUMþ»Êâd+ƒ!Qª/Êâl+…¯~†Êâ€+ƒqP Ëâˆ+…¯¹nËâœ+ƒqP×lÌâ¤+…¯Ã"Ìâ¸+ƒqP±ÍâÀ+…¯M4Íâà+ƒQX4Ðâè+ƒUM×lÐâð+ƒ!Q×lÐâø+…¯¹4Ðâ +ƒqPÇ4Ñâ+…¯!5Ñâ4+ƒQö»Ôâ<+ƒUM±ÔâD+ƒ!Q¢ßÔâL+…¯!5Ôâl+ƒQö»×ât+ƒUM±×â|+ƒ!Q¢ß×â„+…¯ç5×â¬+ƒQö»Ûâ´+ƒUM~®Ûâ¼+ƒ!Q±ÛâÄ+ƒ=Q¢ßÛâÌ+…¯\6Ûâì+ƒQö»Þâô+ƒUMÞâü+ƒ!Q¢ßÞâ+…¯Ã"Þâ+ƒqP±ßâ +…¯7ßâ8+ƒQ±áâ@+ƒUM¢ßáâH+…¯¹náâ\+ƒqP×lââd+…¯Ï7ââ|+ƒQþ»äâ„+ƒUM°äâŒ+…¯L8äâ¬+ƒQî»çâ´+ƒUMþ»çâ¼+ƒ!Q°çâÄ+…¯#çâØ+ƒqP°èâà+…¯#èâô+ƒqP°éâü+…¯Ï7éâ+ƒQþ»ëâ+ƒUM°ëâ$+…¯L8ëâD+ƒQî»îâL+ƒUMþ»îâT+ƒ!Q°îâ\+…¯ŽLîâp+ƒqPÓlïâx+…¯xa ïâŒ+ƒqP~®ðâ”+…¯xa ðâ¨+ƒqP~®ñâ°+…¯G;ñâÄ+ƒqPP;òâÌ+…¯Ã"òâà+ƒqP±óâè+…¯xa óâü+ƒqP~®ôâ+…¯xa ôâ+ƒqP~®õâ +…¯ö<õâ@+ƒQî»øâH+ƒUMþ»øâP+ƒ!Q~®øâX+…¯ö<øâx+ƒQî»ûâ€+ƒUMþ»ûâˆ+ƒ!Q~®ûâ+…¯xa ûâ¤+ƒqP~®üâ¬+…¯xa üâÀ+ƒqP~®ýâÈ+…¯xa ýâÜ+ƒqP~®þâä+…¯xa þâø+ƒqP~®ÿâ +…¯Ëÿâ +ƒqPª/ã +…¯Ëã0 +ƒqPª/ã8 +…¯K@ã` +ƒQ¼ãh +ƒUMßkãp +ƒ!Qò ãx +ƒ=Q~®〠+…¯ä 㘠+ƒQò ã  +ƒUM~®㨠+…¯ä ãÀ +ƒQò  ãÈ +ƒUM~® ãÐ +…¯ä  ãè +ƒQò  ãð +ƒUM~® ãø +…¯xa ã +ƒqP~® ã +…¯xa ã( +ƒqP~® ã0 +…¯ÜB ãD +ƒqPåBãL +…¯qÌãd +ƒQî»ãl +ƒUMþ»ãt +…¯qÌ㌠+ƒQî»ã” +ƒUMþ»㜠+…¯xa ã° +ƒqP~®㸠+…¯x†ãÐ +ƒQ×lãØ +ƒUM×lãà +…¯Eãô +ƒqPEãü +…¯dEã +†qPª/ã +…¯mEã, +†qPª/ã< +…¯vEãL +†qPª/ã\ +…¯Eãl +†Qª/ã| +†UM·0㌠+…¯ˆE㜠+†qP 㬠+…¯‘Eã¼ +†qP ãÌ +…¯šEãÜ +†Qî»ãì +†UMþ»ãü +†!Qª/ã +…¯£Eã +†qP ã, +…¯¬Eã< +†qP ãL +…¯µEã\ +†qP ãl +…¯¾E ã| +†Qî»!㌠+†UMþ»!㜠+†!Qª/!㬠+…¯ÇE!ã¼ +†qP "ãÌ +…¯ÐE"ãÜ +†qP×l#ãì +…¯ÙE#ãü +†qP±$ã +…¯âE$ã +†QX4%ã, +†UM×l%ã< +†!Q×l%ãL +…¯ëE%ã\ +†qPÇ4&ãl +…¯ôE&ã| +†Qö»'㌠+†UM±'㜠+†!Q¢ß'㬠+…¯ýE'ã¼ +†Qö»(ãÌ +†UM±(ãÜ +†!Q¢ß(ãì +…¯F(ãü +†Qö»)ã +†UM~®)ã+†!Q±)ã,+†=Q¢ß)ã<+…¯F)ãL+†Qö»*ã\+†UM*ãl+†!Q¢ß*ã|+…¯F*ãŒ+†qP±+ãœ+…¯!F+ã¬+†Q±,ã¼+†UM¢ß,ãÌ+…¯*F,ãÜ+†qP×l-ãì+…¯3F-ãü+†Qþ».ã +†UM°.ã+…¯ã¬+…¯ÌF>ã¼+†qP~®?ãÌ+…¯ÕF?ãÜ+†qP~®@ãì+…¯ÞF@ãü+†qPª/Aã +…¯çFAã+†qPª/Bã,+…¯ðFBã<+†Q¼CãL+†UMßkCã\+†!Qò Cãl+†=Q~®Cã|+…¯ùFCãŒ+†Qò Dãœ+†UM~®Dã¬+…¯GDã¼+†Qò EãÌ+†UM~®EãÜ+…¯ GEãì+†Qò Fãü+†UM~®Fã +…¯GFã+†qP~®Gã,+…¯GGã<+†qP~®HãL+…¯&GHã\+†qPåBIãl+…¯/GIã|+†Qî»JãŒ+†UMþ»Jãœ+…¯8GJã¬+†Qî»Kã¼+†UMþ»KãÌ+…¯AGKãÜ+†qP~®Lãì+…¯JGLãü+†Q×lMã +†UM×lMã+…¯SGMã,+†qPENã<+ß \GNãD+…¯qvOãT+ƒqPÁmPã\+ƒ†O×lPãd+ƒ¹OÁmPã|+æÈO×mPã¸+æÈO×lQãÈ+æMùmQã +æMºGSãL+æMnTãp+ƒá OHUãx+ƒø \HUã€+ƒ mHUãˆ+ƒ2 OHUã+ƒQ ~HUã˜+…¯™HUãÈ+ƒû XIZãÐ+ƒ fIZãØ+ƒ% tIZãà+ƒ< ~IZãè+…¯<¹Zã+…¯Œ_^ã+Fœ½“I^ã(+…¯Œ__ã0+Fœ½ºG_ã4+…¯Œ_`ã<+Fœ½I`ãL+…¯6¾aã\+Fœ½ÈIbã|+…¯6¾cãŒ+Fœ½ëIdã¬+…¯6¾eã¼+Fœ½ºGfãÜ+…¯6¾gãì+Fœ½Jhã$+ƒ| ×ljã,+ƒ‹ Óljã4+…¯0©jãL+æCV,Jlã¸+æCV½smãÈ+æCVÎsnã8+æÈO×mpãŒ+æÈO×lqãœ+æMùmqãè+æMcsã$+æMntãH+ƒì ×luãP+ƒö ±7uãX+…¯OJuãp+æÈO×mwã¼+æÈO×lxãÌ+æMùmxã+ƒ! ŠÅzãL+ƒ(! ¤²zãT+æMJzã+æMn{ã´+…¯E|ãÄ+Fœ½£J}ãô+…¯¹n~ã+o! ÚÉã +ƒ! ßk€ã+’! ´J€ã$+ƒ ! ßk‚ã0+±! ÎJ‚ã<+ƒÂ! ßk„ãH+Ö! àJ„ãT+ƒâ! ßk†ã`+ƒ†O×l†ãh+ƒ¹OÁm†ã€+æÈO×m†ã¤+æÈO×l‡ã´+æMùm‡ã0 +æMz§‰ãh!+æMnŠãŒ!+…¯ L‹ãœ!+ƒqPLŒã¤!+…¯ƒLŒã¼!+ƒQ™LŽãÄ!+ƒUM¥LŽãÌ!+…¯ÿLŽãä!+ƒQtwãì!+ƒUMÖãô!+…¯fMã "+ƒQÖ’ã"+ƒUMtM’ã"+…¯ÈM’ã,"+†qPL“ã<"+…¯ÑM“ãL"+†Q™L”ã\"+†UM¥L”ãl"+…¯ÚM”ã|"+†Qtw•ãŒ"+†UMÖ•ãœ"+…¯ãM•ã¬"+†QÖ–ã¼"+†UMtM–ãÌ"+…¯Œ_–ãÔ"+ " ìM–ãÜ"+ƒ." ßk—ãè"+?" ìM—ãð"+ƒO" ßk˜ãü"+b" ùM˜ã#+ƒv" ßk™ã#+ƒ†O×l™ã8#+ƒ¹OÁm™ãP#+æÈO×m™ãü#+æÈO×lšã $+æMùmšã(%+æMOœã &+æMnãD&+…¯ÍžãT&+ƒqPÖŸã\&+…¯ÍŸãl&+ƒqPÖ ãt&+…¯ïO ã„&+ƒqPP¡ãŒ&+…¯xP¡ãœ&+†qPÖ¢ã¬&+…¯P¢ã¼&+†qPÖ£ãÌ&+…¯ŠP£ãÜ&+†qPP¤ãì&+…¯Œ_¤ãô&+§" “P¤ãü&+ƒµ" ßk¥ã'+Æ"  P¥ã'+ƒÔ" ßk¦ã'+ƒ†O×l¦ã8'+ƒ¹OÁm¦ãP'+æÈO×m¦ã¼'+æÈO×l§ãÌ'+æMùm§ãˆ(+æMOQ©ã,)+æMnªãP)+…¯xa «ã`)+ƒqP~®¬ãh)+…¯Í¬ãx)+ƒqPÖ­ã€)+…¯R­ã)+†qP~®®ã )+…¯ R®ã°)+†qPÖ¯ãÀ)+ƒø‰~®¯ãÈ)+ƒø" ßk¯ãÐ)+…¯R¯ãè)+ƒóc ßk±ãð)+ƒ\# ×l±ãø)+ƒi# ßk±ã*+ƒq± *R±ã*+ƒï Ö±ã*+ƒx# ö±ã*+…¯6R±ãP*+]N_·ã¬*+…¯¹n·ã¼*+ \R¸ãÄ*+ƒ?õ ßk¸ãÐ*+l$ \R¸ãØ*+ƒƒ$ ßk¸ãä*+œ$ \R¸ãì*+ƒ. ßk¸ãø*+²$ \R¸ã++ƒ ßk¸ã ++Ç$ \R¸ã++ƒ  ßk¸ã ++Î* \R¸ã(++ƒ­ ßk¸ã4++§* \R¸ã<++ƒÐ ßk¸ãH++ƒ†O×l¸ãP++ƒ¹OÁm¸ãh++æCV‘R¸ã¨++æCV½s¹ã¸++æCVÎsºã,+æÈO×m¼ãd,+æÈO×l½ãt,+æMùm½ã°,+æM¤R¿ãè,+æMnÀã -+]N_Áã-+…¯¹nÁã,-+† µRÂã4-+ƒ)† ßkÃã@-+ï„ ¾RÃãH-+ƒ÷„ ßkÄãT-+ † ÇRÄã\-+ƒ† ßkÅãh-+á$ ÐRÅãp-+ƒé$ ßkÆã|-+*… ÙRÆã„-+ƒ3… ßkÇã-+V… âRÇã˜-+ƒ_… ßkÈã¤-+‚… ëRÈã¬-+ƒ‹… ßkÉã¸-+ô$ ôRÉãÀ-+ƒý$ ßkÊãÌ-+?… ÇRÊãÔ-+ƒI… ßkËãà-+k… ýRËãè-+ƒu… ßkÌãô-+—… SÌãü-+ƒ¡… ßkÍã.+Þ… SÍã.+ƒè… ßkÎã.+õ… SÎã$.+ƒÿ… ßkÏã0.+4”!SÏã8.+ƒ=”ßkÏãD.+ƒ†O×lÏãL.+ƒ¹OÁmÏãd.+æCVVSÏã¬.+æCV½sÐãÀ.+æCVÎsÑã/+æÈO×mÓã,/+æÈO×lÔã+ - áZä>+ƒ- ßkä>+7ê áZä$>+ƒ@ê ßkä0>+)- áZä8>+ƒ4- ßkäD>+A- áZäL>+ƒM- ßkäX>+[- áZä`>+ƒn- ßkäl>+ƒ- áZät>+ƒ”- ßkä€>+§- áZäˆ>+ƒ¶- ßkä”>+Ç- áZäœ>+ƒÎ- ßkä¨>+×- áZä°>+ƒá- ßkä¼>+r áZäÄ>+ƒ® ßkäÐ>+ñ( áZäØ>+ƒ÷„ ßkää>+ú( áZäì>+ƒé$ ßkäø>+) áZä?+ƒ3… ßkä ?+ ) áZä?+ƒ_… ßkä ?+) áZä(?+ƒ‹… ßkä4?+!) áZää¨P+…¯Œ_?ä°P+º3 SË?ä¸P+ƒË3 ßk@äÄP+ß3 dË@äÌP+ƒô3 ßkAäØP+ƒ†O×lAäôP+ƒ¹OÁmAä Q+æÈO×mAäxQ+æÈO×lBäˆQ+æMùmBäþßk’äÌ`+ƒ‘8 ßk’äÔ`+ƒ"þßk’äÜ`+…¯iT ’äa+æCVFc–ä(a+æCV½s—ä8a+æCVÎs˜äxa+æÈO×mšäèa+æÈO×l›äøa+æMùm›ä`b+æMWcäÄb+æMnžäèb+]N_Ÿäc+…¯¹nŸä(c+ö÷ hc ä0c+ƒ1þßk ä “g×ä˜m+ƒü wÞ×ä m+ƒŠ?î ×ä¨m+ƒ¬Ÿ›g×ä°m+ƒò> ø¶×ä¸m+ƒý> £g×äÀm+ƒ? «g×äÈm+ƒ? ßk×äÐm+ƒ*? ßk×äØm+ƒ8? ßk×äàm+ƒI? ³g×äèm+ƒ[? ßk×äðm+ƒk? ßk×äøm+ƒ|? ßk×än+ƒF ßk×än+ƒéßk×än+ƒŒ? ßk×än+ƒ¢? ßk×ä n+ƒµ? ßk×ä(n+ƒÇ? ßk×ä0n+ƒÕ? ßk×ä8n+ƒä? £®×ä@n+ƒ 8 m©×äHn+…¯»g×äo+ƒÂ@ îïä(o+ƒï (hïäpo+ƒ¦9 ßkïä˜o+ƒq± *RïäÜo+ƒÕ@ ïdïäp+ƒx# öïä,p+ƒ\# ×lïäþßkïä(q+ƒ‘8 ßkïädq+ƒ"þßkïä q+ƒ}ý ïäÄq+A ‚hïäÌq+…¯ªhðäÜq+ƒqPÎhñääq+ƒ†O×lñäìq+ƒ¹OÁmñär+ƒñ¯ iñär+ƒA *iñä ø¶å4u+ƒÿkêåE }u†åÄŽ+…¯Šu†åÔŽ+ƒbF ðu‡åÜŽ+ƒÛÓl‡åäŽ+ƒä? £®‡åìŽ+ƒò> øu‡åôŽ+ƒ"þßk‡åüŽ+ƒV[ ßk‡å+ƒmF ßk‡å +ƒ€F ßk‡å+ƒ‘F v‡å+ƒéßk‡å$+ƒÞ v‡å,+ƒœF v‡å4+ƒ¬F î‡å<+ƒ»F «‡åD+ƒ Šv‡åL+ƒI? ³g‡åT+ƒ[? ßk‡å\+ƒÇF v‡åd+ƒÒF (v‡ål+ƒâF 0v‡åt+ƒôF 8v‡å|+ƒÿF @v‡å„+ƒ 8 m©‡åŒ+…¯Hv‡åT+ƒ“‚ßkžåh+ƒ­‚ßkžå|+ƒWðßkžå+ƒ[ ßkžå¤+ƒc[ ßkžåÔ+xG /wžåà+…¯rw åø+ƒQ±w¢å‘+ƒUMÒw¢å‘+ƒ†O×l¢å‘+ƒ¹OÁm¢å(‘+æÈO×m¢å€‘+æÈO×l£å‘+æMùm£åè‘+ƒñ¯ À¥åø‘+ƒˆG ‘x¥å’+ƒA )y¥å`’+Á=d}¦åt’+Ádæ園+æM?y¦åð’+æMn§å“+…¯hy¨åL“+Fؤ­®å,”+FskŒ_¯åД+Fê¤ßk¯å•+Fù¤»¯å•+F ¥Ã¯å0•+ƒÛÓl¯å8•+ƒò> ø¶¯å@•+ƒY€6z¯åH•+ƒ 8 m©¯åP•+…¯>z¯åx•+¡G z³å€•+…¯˜z´å•+ƒqP«zµå˜•+ƒ†O×lµå •+ƒ¹OÁmµå¸•+æÈO×mµåô•+æÈO×l¶å–+æMùm¶åH–+ƒñ¯ K{¸åt–+æMd{¸å´–+æMn¹åØ–+ƒ¿ô‡ºåà–+ƒÛÓlºåè–+ƒÝG ßkºåð–+ƒò> øuºåø–+ƒY€6zºå—+ƒ 8 m©ºå—+…¯u{ºå@—+H ¾{ÀåH—+…¯Õ{ÁåX—+ƒqPè{Âå`—+ƒ†O×lÂåh—+ƒ¹OÁmÂ倗+æÈO×mÂå¼—+æÈO×lÃåÌ—+æMùmÃå˜+ƒñ¯ ˆ|Åå<˜+æM¡|Åå|˜+æMnÆå ˜+…¯Œ_Ç娘+Fœ½²|Çå´˜+…¯Œ_Ê弘+Fœ½Í|ÊåȘ+]N_Íåà˜+…¯¹nÍåð˜+§* ð|Îåø˜+ƒÐ ßkÎå™+Î* ð|Îå ™+ƒ­ ßkÎå™+ƒ†O×lÎå ™+ƒ¹OÁmÎå8™+æCV%}Îåx™+æCV½sÏ则+æCVÎsÐ娙+æÈO×mÒåš+æÈO×lÓåš+æMùmÓåLš+æM8}Õ儚+æMnÖ娚+…¯Œ_×å°š+û”I}×帚+ƒ•ßkØåÄš+)H Y}ØåК+ƒ1H ßkÚåÜš+3õ g}Úåäš+ƒ?õ ßkÛåðš+ƒ†O×lÛå›+ƒ¹OÁmÛå0›+…¯´}Ûå@›+ƒqPÀ}ÜåH›+…¯ ~Üå`›+ƒQCÞåh›+ƒUM×lÞåp›+…¯2ÿÞ倛+ƒqPD·ß创+…¯Ö~ß嘛+†qPÀ}à娛+…¯ß~à帛+†QCáåÈ›+†UM×lá娛+…¯è~áåè›+†qPD·âåø›+ƒÛÓlâåœ+ƒÐz âåœ+ƒò> âåœ+ƒ 8 m©âåœ+…¯âå@œ+XH gÛæåHœ+…¯PçåXœ+ƒqPaèå`œ+ƒ†O×lèåhœ+ƒ¹OÁmè倜+æÈO×mè弜+æÈO×léåÌœ+æMùméå+ƒñ¯ Éëå +æMâëå`+æMnìå„+]N_íåÀ+…¯¹níåÐ+`I €îåØ+ƒpI ßkîåä+‚I €îåì+ƒŽI ßkîåø+œI €îåž+ƒ²I ßkîå ž+ÊI €îåž+ƒÞI ßkîå ž+ôI €îå(ž+ƒJ ßkîå4ž+ƒ†O×lîå<ž+ƒ¹OÁmîåTž+æCV7€î唞+æCV½sï夞+æCVÎsðåôž+æÈO×mòå@Ÿ+æÈO×lóåPŸ+æMùmó匟+æMJ€õåÄŸ+æMnöåèŸ+ƒÛÓl÷åðŸ+ƒ*K ×l÷åøŸ+ƒI? ³g÷å +ƒt´ ê÷å +ƒÀy ÿ÷å +ƒøó t÷å +ƒ 8 m©÷å  +ƒEK w€÷å( +ƒ[K ßk÷å0 +ƒwK ßk÷å8 +ƒçó ßk÷å@ +ƒ‡K €÷åH +ƒ™K ‡€÷åP +…¯“€÷åÈ +ƒçM ú€æÐ +ƒ 8 m©æØ +ƒÛÓlæà +ƒôM væè +ƒN ¦¤æð +ƒN ßkæø +ƒ+N ×læ¡+ƒ>N ßkæ¡+ƒHN ßkæ¡+ƒUN ײæ¡+ƒbN ¤²æ ¡+ƒwN ßkæ(¡+ƒƒN ßkæ0¡+ƒ˜N ßkæ8¡+ƒ¤N ×læ@¡+ƒ¹N ×læH¡+ƒÏN ×læP¡+ƒÝN ÓlæX¡+ƒñN æ`¡+ƒÿN æh¡+…¯æ¢+ƒO aæD¢+ƒ§O ßkæT¢+]N_æ`¢+…¯Œ_æh¢+x ¯¹æp¢+ƒ†O×læx¢+ƒ¹OÁmæ¢+æCVÃ欢+æCV½sæ¼¢+æCVÎsæô¢+æÈO×mæ£+æÈO×læ$£+æMùmæ@£+æMÜæX£+æMn æ|£+…¯Œ_!æ„£+Fœ½é!攣+…¯Œ_"朣+Fœ½_u"æ £+…¯Œ_#樣+Fœ½ó#渣+…¯E$æÈ£+Fœ½‚%æø£+…¯E&æ¤+Fœ½‚'æ8¤+…¯E(æH¤+Fœ½‚)愤+…¯Œ_*挤+Fœ½%‚*昤+…¯Œ_,æ ¤+Fœ½%‚,欤+…¯Œ_.æ´¤+Fœ½E‚.æÀ¤+…¯Œ_0æÈ¤+Fœ½d‚0æì¤+…¯Œ_2æô¤+Fœ½þ2æ¥+…¯Œ_3æ¥+Fœ½cƒ3椥+…¯W©4æ´¥+Fœ½U5æÜ¥+…¯Œ_6æä¥+Fœ½†6æð¥+…¯Œ_7æø¥+Fœ½†7æ¦+…¯Œ_8æ ¦+Fœ½þ8æ¦+…¯Œ_9æ ¦+Fœ½ ƒ9æL¦+…¯Œ_:æT¦+Fœ½ ƒ:怦+…¯Œ_;戦+Fœ½­ƒ;攦+…¯Œ_=朦+Fœ½­ƒ=樦+…¯Œ_?æ°¦+Fœ½:Ç ?漦+…¯Œ_@æÈ¦+ᶪ\¡@æØ¦+áñªGAæä¦+…¯»ƒCæô¦+Fœ½æƒDæ§+…¯)„Eæ<§+Fœ½7„Iæh§+…¯Œ_Jæp§+Fœ½‡„J椧+…¯Œ_K欧+Fœ½…KæÄ§+…¯Œ_LæÌ§+Fœ½&…LæÜ§+…¯Œ_Mæä§+Fœ½G…Mæð§+…¯o¿Næ¨+Fœ½­…Oæ<¨+…¯Œ_PæD¨+Fœ½è…Pæt¨+…¯Œ_Ræ|¨+Fœ½è…R欨+…¯7†T漨+Fœ½V†Uæè¨+…¯Œ_Væð¨+Fœ½w†Væü¨+…¯©†Xæ ©+Fœ½­…YæL©+ƒßkZæd©+ƒQX d Zæl©+ƒaX Ô Zæt©+ƒrX ~®Zæ|©+ƒX d Zæ„©+ƒ‘X ~®Z挩+ƒ X ~®Z攩+ƒ¶X ~®Z朩+ƒÌX ~®Z椩+ƒáX ~®Z欩+ƒõX d Zæ´©+ƒY ~®Z漩+ƒY ~®ZæÄ©+ƒ Y ~®ZæÌ©+ƒ2Y ~®ZæÔ©+ƒCY ~®ZæÜ©+ƒUY ~®Zæä©+ƒbY Ô Zæì©+ƒ{Y ~®Zæô©+ƒ’Y ~®Zæü©+ƒ¬Y ~®Zæª+ƒºY Ô Zæ ª+ƒÊY Ô Zæª+ƒÛY Ô Zæª+ƒëY Ô Zæ$ª+ƒüY Ô Zæ,ª+ƒ Z Ô Zæ4ª+ƒZ Ô Zæ<ª+ƒ-Z Ô ZæDª+ƒ[ ~®ZæÔª+ƒK[ ~®ZæÜª+ƒZ[ ~®Zæäª+ƒj[ ~®Zæìª+ƒˆ[ ~®Zæôª+ƒ¢[ ~®Zæüª+ƒ¾[ ~®Zæ«+ƒÙ[ ~®Zæ «+ƒæ[ ~®Zæ«+ƒô[ ~®Zæ«+ƒ\ ~®Zæ$«+ƒ\ ~®Zæ,«+ƒ\ ~®Zæ4«+ƒ-\ ~®Zæ<«+ƒ<\ ~®ZæD«+ƒK\ ~®ZæL«+ƒZ\ ~®ZæT«+ƒi\ ~®Zæ\«+ƒv\ ~®Zæd«+ƒƒ\ ~®Zæl«+ƒ\ ~®Zæt«+ƒ¶\ d Zæ|«+ƒÛ\ Ô Zæ„«+ƒï\ ~®Z挫+ƒ] ºZ攫+ƒ] þ†Z末+ƒD] þ†Z椫+ƒh] < Zæ°«+ƒ‚] ‡[漫+ƒ«] ‡\æÈ«+…¯‡]æ0®+ÆÒvÓl¨æ8®+…¯—ˆ¨æ`®+Fؤ|Å¬æ ¯+FskŒ_­æÄ¯+Fê¤ßk­æø¯+Fù¤ŠÅ­æ°+F ¥’Å­æ°+…¯—ˆ­æ8°+Fؤ|Å±æø°+FskŒ_²æœ±+Fê¤ßk²æÐ±+Fù¤ŠÅ²æÜ±+F ¥’Ųæè±+…¯—ˆ²æ²+Fؤ|ŶæÐ²+FskŒ_·æt³+Fê¤ßk·æ¨³+Fù¤ŠÅ·æ´³+F ¥’Å·æÀ³+…¯—ˆ·æè³+Fؤ|Ż水+FskŒ_¼æTµ+Fê¤ßk¼æˆµ+Fù¤ŠÅ¼æ”µ+F ¥’ż栵+…¯4O ¼æ°µ+Fœ½–½æÀµ+…¯¨ˆ¾æØµ+Fœ½–Àæðµ+…¯¨ˆÁæ¶+Fœ½–Ãæ ¶+…¯Œ_Äæ(¶+Fœ½¶ˆÄæ4¶+…¯ÀÆæD¶+Fœ½þÇæT¶+…¯Œ_Èæ\¶+Fœ½éÄÈæt¶+…¯ÀÉæ„¶+Fœ½QÊæ”¶+…¯¹nËæ´¶+ƒÀ…ÛˆÌæä¶+ƒsk*RÍæô¶+…¯Œ_Íæü¶+Fœ½äˆÍæ·+…¯Œ_Îæ·+Fœ½íˆÎæ·+…¯Œ_Ïæ$·+Fœ½öˆÏæ0·+…¯Œ_Ðæ8·+Fœ½ ‰ÐæX·+…¯Œ_Òæ`·+Fœ½ ‰Ò怷+…¯8‰Ôæ·+Fœ½W‰Õæ°·+…¯Œ_Öæ¸·+Fœ½s‰ÖæØ·+…¯Œ_Øæà·+Fœ½s‰Øæ¸+…¯ ‰Úæ¸+Fœ½¿‰Ûæ0¸+…¯Œ_Üæ8¸+Fœ½ωÜæD¸+…¯Œ_ÞæL¸+Fœ½ωÞæX¸+…¯Šàæh¸+Fœ½-Šá戸+…¯Œ_âæ¸+Fœ½PŠâæÀ¸+…¯xa ãæÐ¸+Fœ½cŠäæ4¹+…¯Œ_ææ<¹+Fœ½†Šææ`¹+…¯Œ_çæh¹+Fœ½8çæ|¹+…¯¹nèæŒ¹+^ ›Šé改+ƒ%^ ßkêæ ¹+3^ ›Šê樹+ƒ<^ ßkëæ´¹+H^ ©ŠëæÀ¹+ƒW^ ßkíæÌ¹+i^ ½ŠíæØ¹+ƒv^ ßkïæä¹+ƒ†O×lïæì¹+ƒ¹OÁmïæº+æCV>‹ïæì¼+æCV½sðæü¼+æCVÎsñæÌ¿+æÈO×móæ Á+æÈO×lôæ0Á+æMùmôæLÃ+æM9Œöæ”Ä+æMn÷æ¸Ä+…¯P³øæÈÄ+ƒqP¦¤ùæÐÄ+…¯P³ùæàÄ+ƒqP¦¤úæèÄ+…¯ôŒúæÅ+ƒQ¦¤üæÅ+ƒUM¦¤üæÅ+…¯^üæ(Å+ƒQ~®þæ0Å+ƒUM¦¤þæ8Å+…¯ÅþæHÅ+†qP¦¤ÿæXÅ+…¯ÎÿæhÅ+†qP¦¤çxÅ+…¯×çˆÅ+†Q¦¤ç˜Å+†UM¦¤ç¨Å+…¯àç¸Å+†Q~®çÈÅ+†UM¦¤çØÅ+ƒ°^ ¦¤çàÅ+ƒ½^ õçèÅ+…¯ŽçÆ+æCV>Žç¼Æ+æCV½sçÌÆ+æCVÎsçÇ+æÈO×mçðÇ+æÈO×l çÈ+æMùm çˆÈ+æM»Ž çØÈ+æMn çüÈ+ƒò^ ¦¤ çÉ+ƒÿ^ ™L ç É+…¯ÌŽ ç$É+æCV çàÉ+æCV½sçðÉ+æCVÎsç´Ê+æÈO×mçË+æÈO×lç$Ë+æMùmç¬Ë+æMoçüË+æMnç Ì+…¯Œ_ç(Ì+_ €ç0Ì+ƒ!_ ßkç<Ì++_ çDÌ+ƒ4_ ßkçPÌ+ƒ†O×lçlÌ+ƒ¹OÁmç„Ì+æCVçHÍ+æCV½sçXÍ+æCVÎsç Î+æÈO×mçŒÎ+æÈO×lçœÎ+æMùmçTÏ+æM”!çøÏ+æMn"çÐ+…¯æÉ#ç,Ð+ƒqP¥$ç4Ð+…¯‘$çDÐ+ƒqP ‘%çLÐ+…¯^‘%ç\Ð+†qP¥&çlÐ+…¯g‘&ç|Ð+†qP ‘'çŒÐ+…¯Œ_'ç”Ð+Fœ½Ç‘'çÄÐ+…¯m“*çðÑ+ƒÂ_ ×l.çüÑ+ƒ×_ tw.çÒ+ƒô_ “.çÒ+ƒ•· ‘´.çxÒ+ƒ` ‘´/ç Ó+ƒ` 0Ý0ç Õ+ƒ*` ê“1çÖ+…¯”4çÖ+Fœ½>”5çÄÖ+…¯”6çÔÖ+Fœ½H”7ç×+…¯”8ç,×+Fœ½R”9ç\×+…¯Œ_:çh×+ᶪ‘´:çl×+áñªp;çt×+…¯Œ_=ç€×+ᶪ‘´=ç„×+áñªp>çŒ×+…¯\”@ç¤×+Fœ½¨”BçØ+…¯Ö”Dç Ø+Fœ½‘´Eç0Ø+…¯ß”FçHØ+Fœ½•Hç„Ø+…¯Ö”Iç”Ø+Fœ½‘´Jç¤Ø+…¯êKKç¸Ø+ƒM` O¶LçôØ+ƒ[` ¯øMç0Ù+ƒx` ¯øOçlÙ+ƒ‰` •Qç„Ù+ƒ¡` /•Sç˜Ù+ƒ·` B•UçìÙ+ƒÖ` Q•WçÚ+ƒì` _•YçÚ+ƒ a m•[çDÚ+ƒ+a •]ç¨Ú+ƒBa ž•_ç¸Ú+ƒba •açÐÚ+ƒ}a /•cçäÚ+ƒ™a B•eç8Û+ƒµa Q•gçPÛ+ƒÑa m•içxÛ+ƒïa ž•kçˆÛ+ƒ b ¬•mçÔÛ+ƒ+b ¬•oç Ü+ƒBb å•qçàÜ+ƒkb sç8Ý+ƒ}b n–tçˆÝ+…¯w–uç Ý+Fœ½†–wçìÝ+…¯w–xçÞ+Fœ½9ŒzçÞ+…¯–{ç4Þ+Fœ½†–}çLÞ+…¯ž–~çdÞ+Fœ½†–€ç¸Þ+…¯–çÐÞ+Fœ½9ŒƒçèÞ+…¯ž–„çß+Fœ½9Œ†çß+…¯w–‡ç0ß+Fœ½†–‰ç|ß+…¯w–Šç”ß+Fœ½9ŒŒç¬ß+…¯–çÄß+Fœ½†–çÜß+…¯–çôß+Fœ½9Œ’ç à+…¯¬–“çà+Fœ½gæ”çLà+…¯}&•ç\à+Fœ½õ­–çpà+…¯}&˜ç€à+Fœ½õ­™ç”à+…¯É–›ç¤à+Fœ½>‹œç¸à+…¯¬–çÈà+Fœ½Ø–žçøà+…¯â–Ÿçá+Fœ½û– ç@á+…¯Œ_¡çHá+Fœ½—¡çTá+…¯Œ_¢ç\á+Fœ½—¢çhá+…¯Œ_£çpá+Fœ½þ£ç|á+…¯Œ_¤ç„á+Fœ½—¤çá+…¯,—¥ç á+Fœ½<—¦ç°á+…¯Œ_§ç¸á+Fœ½f—§çØá+…¯Œ_¨çàá+Fœ½þ¨çìá+…¯Œ_©çôá+Fœ½9Œ©çâ+…¯ô—ªçHâ+Fœ½@š¯çÈã+…¯©ä°çèã+Fœ½Éš³ç ä+…¯Œ_´ç(ä+Fœ½|›´çLä+…¯Œ_µçTä+Fœ½õ›µçŒä+…¯Uœ¶ç¤ä+Fœ½<—¸çå+…¯Œ_¹çå+Fœ½Æœ¹ç@å+…¯Œ_ºçHå+Fœ½$ºçtå+…¯Œ_»ç|å+Fœ½$»ç¨å+…¯Œ_¼ç°å+Fœ½9Œ¼çÔå+…¯Œ_½çÜå+Fœ½9Œ½çæ+…¯Œ_¾çæ+Fœ½—¾çæ+…¯Œ_¿çæ+Fœ½þ¿ç(æ+…¯¬–Àç8æ+Fœ½ÁçHæ+…¯¤Âçˆæ+Fœ½@žÉçç+…¯1êÊçDç+Fœ½ŒžÏçˆç+…¯Œ_Ðçç+Fœ½¼žÐçœç+…¯x†Ñç´ç+Fœ½ðžÓçè+…¯Œ_Ôç$è+Fœ½ Ôç”è+…¯Œ_Öçœè+Fœ½… Öç°è+…¯ð ØçÀè+Fœ½¡ÙçÔè+…¯x†Úçìè+Fœ½õ¢Üçhé+…¯Œ_Ýçpé+Fœ½M£Ýç”é+…¯P³Þç¤é+Fœ½O¶ßçÐé+…¯Œ_àçØé+Fœ½¯£àçüé+…¯Œ_áçê+Fœ½9¤áçdê+…¯R¤âç„ê+Fœ½Y¥åçÄê+…¯Œ_ççÌê+Fœ½Ã¥ççØê+…¯Œ_èçàê+Fœ½Ð¥èçìê+…¯Œ_éçôê+Fœ½$í éçüê+…¯Œ_êçë+Fœ½—êçë+…¯¬–ëç ë+Fœ½ë¥ìçŒë+…¯Œ_íç”ë+Fœ½ô¥íç ë+…¯Œ_îç¨ë+Fœ½þîç´ë+…¯ ¦ïçÔë+Fœ½‘¦òç4ì+…¯›¦óçlì+Fœ½‘¦ùç(î+ƒûb b®úç0î+ƒ c ~®úç8î+…¯s®úçPî+æCVÆ®üçÄî+æCV½sýçØî+æCVÎsþçPï+æÈO×mè ï+æÈO×lè°ï+æMùmè ð+æM=¯èXð+æMnè|ð+…¯Œ_è„ð+Fœ½\Å èð+…¯ŽLè ð+Fœ½f¯èìð+…¯ÿfèüð+Fœ½† èñ+…¯g è ñ+Fœ½.g èDñ+…¯ƒº èTñ+Fœ½—º èxñ+…¯¦ºèˆñ+Fœ½Òºè¬ñ+…¯x¯èÌñ+Fؤ…è@ò+FskŒ_èLò+Fê¤ßkè€ò+Fù¤†èŒò+F ¥èœò+…¯Œ_è¤ò+Fœ½ƒ¯è°ò+…¯'ôèó+Fؤ…èØô+FskŒ_ èÀõ+Fê¤ßk èö+Fù¤† è$ö+F ¥ èLö+…¯žô è„ö+Fؤ…&èp÷+FskŒ_'è ø+Fê¤ßk'è\ø+Fù¤†'èhø+F ¥'èŒø+…¯¼ô'èôø+Fؤ…2èÄú+FskŒ_3è¬û+Fê¤ßk3èü+Fù¤†3èü+F ¥3è@ü+…¯:õ3è¨ü+Fؤ…>èTþ+FskŒ_?è4ÿ+Fê¤ßk?è˜ÿ+Fù¤†?è¤ÿ+F ¥?èÜÿ+…¯7°?èŒ,Fؤ…Sè`,FskŒ_TèÌ,Fê¤ßkTèT,Fù¤†Tè`,F ¥Tèœ,…¯±Tè¼,FؤWèD,FskŒ_XèP,Fê¤ßkXè„,Fù¤Xè,F ¥Xè ,…¯µ±Xè,Fؤ…eè4 ,FskŒ_fè ,Fê¤ßkfèt ,Fù¤†fè€ ,F ¥fè¬ ,…¯²²fèD ,Fؤ…wè¬,FskŒ_xèø,Fê¤ßkxè€,Fù¤†xèŒ,F ¥xè¼,…¯ŽLxèä,ƒIc ~®yè”,ƒSc ^´yè¼,ƒac Œ_yèÐ,ƒgc ßÏ yè,ƒlc elyè8,ƒrc ßÏ zèh,ƒwc Œ_zè|,ƒ {Œ_zèŒ,ƒ|c Œ_zè¤,ƒc Ólzè,…¯w´zèP,Fؤ¤Ò€è,FskŒ_è¸,Fê¤ßkèì,Fù¤~®èø,F ¥²Òè,…¯Ž´è<,Fؤ-„èø,FskŒ_…è,Fê¤ßk…èT,Fù¤Ól…è`,F ¥7…èp,ƒÐc jÌ…èx,ƒçc °´…è€,…¯¼´…è˜,æCVý´‡è ,æCV½sˆè,æCVÎs‰è”,æÈO×m‹èä,æÈO×lŒèô,æMùmŒèP,æMkµŽèœ,æMnèÀ,ƒ:d ²µèÈ,ƒDd ÀµèÐ,…¯εèè,æÈO×m’è8,æÈO×l“èH,æMùm“èœ,æM¶•èè,æMn–è ,…¯ ¶—è,Fœ½ø˜è4,…¯ ¶™èD,Fœ½“öšèX,…¯ ¶›èh,Fœ½™ôœè€,…¯ ¶è,Fœ½¶žè¤,…¯ ¶Ÿè´,Fœ½×e èÈ,…¯ ¶¡èØ,Fœ½bô¢è@,…¯ ¶£èP,Fœ½ÈF¤èd,…¯ ¶¥èt,Fœ½ ø¦èˆ,…¯ ¶§è˜,Fœ½8÷¨è¬,…¯ ¶©è¼,Fœ½“öªèÐ,…¯ ¶«èà,Fœ½åõ¬èô,…¯ ¶­è ,Fœ½åõ®è ,…¯ ¶¯è( ,Fœ½X÷°è< ,…¯ ¶±èL ,Fœ½åõ²è` ,…¯ ¶³èp ,Fœ½åõ´è„ ,…¯ ¶µè” ,Fœ½¾¶è¨ ,…¯ ¶·è¸ ,Fœ½Øÿ¸èà ,…¯ ¶¹èð ,Fœ½Lºè!,…¯ ¶»è!,Fœ½“ö¼è(!,…¯ ¶½è8!,Fœ½´ö¾èL!,…¯ ¶¿è\!,Fœ½,LÀèt!,…¯ ¶Áè„!,Fœ½#ùÂè¬!,…¯ ¶Ãè¼!,Fœ½;¶ÄèÐ!,…¯Œ_ÅèØ!,Fœ½E¶Åèä!,…¯Œ_Çèì!,Fœ½_¶Çèø!,…¯Œ_Éè",Fœ½y¶Éè",…¯¬ˆ Ëè(",Fœ½éÄÌè¤",ƒ`d d Íè¬",ƒhd ÓlÍè´",…¯ž¶ÍèÌ",æCV¨¶Ïè,#,æCV½sÐè<#,æCVÎsÑè¤#,æÈO×mÓèü#,æÈO×lÔè $,æMùmÔè\$,éZɶÖèh$,ƒ[ý d Øèt$,ƒÛÓlØè€$,æM×¶ØèÀ$,æMnÙèä$,ƒ‚d d Úèì$,ƒŠd ÓlÚèô$,…¯ž¶Úè %,æCVà¶Üèl%,æCV½sÝè|%,æCVÎsÞèä%,æÈO×màè<&,æÈO×láèL&,æMùmáèœ&,éZú¶ãè¨&,ƒ[ý d åè´&,ƒÛÓlåèÀ&,æM·åè',æMnæè$',çÑ ·çè,',±ýº”çè8',’d 6”éèD',—d Uw ëèP',Ÿd µìè\',§d åØíèh',žž •îèt',¯d 8ðè€',µd à†òèŒ',Èž õxôè',Áž õxõè”',¹d zöè ',ä Çùè¬',!r/·ûè´',±ž ²0ûèÄ',£ž IýþèÐ',aZ9·é(,ìd j™é (,÷d j™é(,e j™é(,e j™é$(,cš€éP(,e ®S ép(,&e A·é\),Ae `· éÐ),Oe `· é *,Ye `· éX*,de ··éÄ,,ñÊ î0éÐ-,ne ë·éØ-,…¯:†éè-,ƒqP¸…éð-,ƒ†O×léø-,ƒ¹OÁmé.,æCV/¸éT.,æCV½séh.,æCVÎsé¼.,æÈO×méø.,æÈO×lé/,æMùméL/,æMS¸éŒ/,æMné°/,ƒ‡e l¸é¸/,ƒ|j×léÀ/,ƒ’e ßkéÈ/,ƒŒj¹néÔ/,ƒše štéà/,…¯t¸é0,æCV•¸ é´0,æCV½s!éÄ0,æCVÎs"éx1,æÈO×m$éØ1,æÈO×l%éè1,æMùm%éH2,æMϸ'é 2,æMn(éÄ2,]N_)é6,lh I¹)éÌ6,€h Y¹,él7,”h u¹0é<8,¨h ]a3éD8,Üh ]a3éL8,îh 4Þ3é€8, i ™¹4é8:,oi §¹7éÈ:,‚i º8é<,—i º;é4=,¬i ^º>é<>,Ãi Žº@é´>,ói ³ºDé4?, j ³ºIé´?,vk Ñ»NéˆC,l ¼^éÜC,l #¼aéDD,O ½qé„F,…¯Œ_€éŒF,FB[“u€é¤F,…¯“u‚é¼F,ÆÈO×m„éÈF,ÆÈO×l…éèF,ÆMùm…éG,ƒMbv‡é@G,ÆMnˆédG,]N_‰é´G,…¯¹n‰éÄG,zm _½ŠéÌG,ƒŽm ßkŠéØG,¤m _½ŠéàG,ƒºm ßkŠéìG,Òm _½ŠéôG,ƒïm ßkŠéH,n _½ŠéH,ƒn ßkŠéH,0n _½ŠéH,ƒHn ßkŠé(H,bn §¹Šé0H,ƒjn ßk‹éo U¾—é|K,ƒNo ßk—éˆK,`o U¾—éK,ƒso ßk—éœK,ƒ†O×l—é¤K,ƒ¹OÁm—é¼K,æCVо—éüK,æCV½s˜é L,æCVÎs™é\L,æÈO×m›é˜L,æÈO×lœé¨L,æMùmœéäL,æM¾žéM,æMnŸé@M,ƒ¬o Ól éHM,ƒßH—¶ éPM,ƒðHÓl éXM,ƒÚ:Ól é`M,ƒÿHÓl éhM,ƒ¹o Ól épM,…¯®¾ é¨M,æCVѾ¦é¸N,æCV½s§éÈN,æCVÎs¨éÄO,æÈO×mªé°P,æÈO×l«éÀP,æMùm«épQ,ÆÒvÓl­éQ,æM¿­é4R,æMn®éXR,ƒôp ¿¯é`R,ƒq ¹¤¯éhR,ƒ#q ¹¤¯épR,ƒ4q ¹¤¯éxR,ƒPq ¹¤¯é€R,ƒjq ¹¤¯éˆR,ƒ†q ¹¤¯éR,…¯&¿¯éÐR,æCV<¿¶éHS,æCV½s·é\S,æCVÎs¸éÜS,æÈO×mºéðS,æÈO×l»éT,æMùm»éÌT,æMW¿½éŒU,æMn¾é°U,…¯ŽL¿éÀU,Fœ½òúÀéäU,…¯iSÁéôU,Fœ½òúÂéV,…¯sSÃéV,Fœ½‹SÄéÁØéDZ,†qPÓlÙéTZ,…¯GÁÙédZ,†QÓlÚétZ,†UMÓlÚé„Z,…¯PÁÚé”Z,†QÓlÛé¤Z,†UMÓlÛé´Z,…¯YÁÛéÔZ,Fœ½ûÞéôZ,…¯}Áßé$[,á„r ¹Áäé([,ás ÆÁèéL[,áas ÍÁéé€[,á–s ÔÁêé¤[,áùs ÛÁëéØ[,á0t ×lìéÜ[,árt ×lìéà[,á²t ßkìéä[,áít Ólìéì[,…¯Œ_ìéô[,Fœ½…™ìé\,…¯Œ_íé\,Fœ½âÁíé0\,…¯ñÁîép\,FؤÂõé„],FskŒ_öé(^,Fê¤ßköé\^,Fù¤*Âöéh^,F ¥0Âöéˆ^,…¯iSöé˜^,Fœ½òú÷é¬^,…¯sSøé¼^,Fœ½‹Sùéà^,…¯•Súéð^,Fœ½·Sûé_,…¯;Âüé$_,Fœ½TÂýéH_,…¯iSþéX_,Fœ½òúÿél_,…¯sSê|_,Fœ½‹Sê _,…¯•Sê°_,Fœ½·SêÔ_,…¯;Âêä_,Fœ½TÂê`,…¯}Áê8`,Fœ½Â êØ`,…¯“ êa,FؤÎÂê0b,FskŒ_êÔb,Fê¤ßkêc,Fù¤ÜÂêc,F ¥äÂê4c,…¯ñÂêdc,Fؤ-ê(d,FskŒ_êÌd,Fê¤ßkêe,Fù¤Ólê e,F ¥7ê,e,…¯ñÂê\e,Fؤ-ê f,FskŒ_êÄf,Fê¤ßkêøf,Fù¤Ólêg,F ¥7ê$g,…¯ñÂêTg,Fؤ-#êh,FskŒ_$ê¼h,Fê¤ßk$êðh,Fù¤Ól$êüh,F ¥7$êi,…¯ñÂ$êLi,Fؤ-)êj,FskŒ_*ê´j,Fê¤ßk*êèj,Fù¤Ól*êôj,F ¥7*êk,…¯ñÂ*êDk,Fؤ-/êl,FskŒ_0ê¬l,Fê¤ßk0êàl,Fù¤Ól0êìl,F ¥70ê m,…¯ñÂ0êÅeêr,þw eÅgêœr,x eÅiê¨r, x eÅkê´r,x “ÅmêÀr,…¯Œ_oêÈr,Fœ½·ÅoêÔr,…¯Œ_qêÜr,Fœ½·Åqêèr,!rØÅsêôr, óÅtês,| m5wê s,Ïž Æyês,û 7Æ{ê$s,¡;]Æ}ê0s,žž tÆêx ‰Éžê0t,Ix ÑÉ ê@t,š÷É¡êPt,x Ê¢ê\t,…¯Ÿ7¤êlt,Fœ½4Ê¥êŒt,…¯È§êœt,Fœ½§Ê¨êÌt,…¯É«êÜt,Fœ½Ë¬ê u,…¯Œ_¯êu,Fœ½,˯ê8u,…¯Œ_±ê@u,Fœ½,˱êdu,…¯Œ_³êlu,Fœ½W˳êxu,…¯Œ_µê€u,Fœ½d˵êŒu,_x Θ·ê”u,ƒx s™·êv,œx Ș¸êv,µx Ù˜ºê|v,Âx `»êÌv,Ðx `¼ê(w,Þx `½ê8w,íx `¾êHw,…¯‡Ë¿ê`w,…¯Œ_Áêhw,FB[“uÁê€w,…¯“uÃê˜w,ƒ”[ÓlÅê w,ƒí"ßÏ Åê¨w,ÆÈO×mÅê x,ÆÈO×lÆêx,ÆMùmÆêˆx,ƒMbvÈêðx,ÆMnÉêy,…¯q Êê$y,Fœ½ :Ëê0y,]N_Ìê@y,%y ®S ÌêLy,Ay ÎêXy,Iy ËÏêdy,Py ËÐêly,Wy Uw Ñêxy,]y Uw Òêˆy,dy ¨ËÓê˜y,ky ¨ËÔê¨y,uy ¯ËÕêÜy,}y •v×êèy,“y ÁËÙêüy,šy ]õ Ýêz,£y áËÝê0z,«y òËÞê8z,ºy ÌÞê€z,…¯Œ_áêˆz,ræ÷1áêz,†çßkâêœz,ðå·1âê¤z,†çßkãê°z,††O×lãêÌz,ƒ¹OÁmãêäz,æÈO×mãêT{,æÈO×läêd{,æMùmäê|,æM>ÍæêÄ|,æMnçêè|,…¯yèêø|,†qP‰kéê},…¯¡éê},†qPùêê},…¯"Îêê(},†qP‰këê8},…¯9ÎëêH},†qPùìêX},…¯Œ_ìê`},>ò)ìêh},†Ôy ßkíêt},ßy mÎíê|},†íy ßkîêˆ},††O×lîê¤},ƒ¹OÁmîê¼},…¯yîêÌ},†qP‰kïêÔ},…¯ZÎïêä},†qPFÏðêì},…¯ÏÏðêü},†qP‰kñê ~,…¯ñÏñê~,†qPFÏòê,~,…¯Œ_òê8~,†ñ¾þÏòêD~,†—-ÐôêP~,†¯ «õêT~,† SÐöêh~,†¹)rÐøêt~,†Ås—Ðúê€~,†ü¿µÐüêŒ~,†É„ ÑÐýê˜~,…¯FÐýê¨~,Fœ½çÐþê´~,…¯Œ_ÿêØ~,†z Uÿêä~,ƒ×ó Uë4,…¯Œ_ë@,ᶪUëL,áñªMëX,…¯¢Áë€,†/›æbë€,…¯Œ_ë$€,FB[“uë<€,…¯“u ëT€,ÆÈO×m ë`€,ÆÈO×l 뀀,ÆMùm ë´€,†MbvëØ€,ÆMnëü€,…¯¡ë,†" ùë,Hz lÑë8,]N_ëH,†¨z ‰këP,†²z ÁmëX,†Æz ‹Ñë`,†àz yël,†êz qvëx,…¯¿¾ë˜,éZ–Ñë¼,þz ´ÑëÌ,†{ ßkëô,†{ ßkë‚,†!iÂëP‚,†!{ iÂëƒ,…¯Œ_ëƒ,Fœ½¢ëƒ,…¯ªÒë0ƒ,]N_ ëPƒ,ÁMËë ëlƒ,†þb&z ë܃,†Ðc?|"ë„,†qPæb#ë4„,†þcw|$ë`„,†§geÒ%ëp„,†}{ ¢Ó%딄,†"c†%ë…,†ÎtHÐ'ëX…,†v!Õ(ë …,†_ÒqÛ*ëè…,ƒãƒ *ëˆ,…¯ÛÕ+ë(ˆ,Fœ½ Ø,ë<ˆ,…¯±Ø.ëXˆ,]N_1ëxˆ,ÁMØ" 1딈,†þbžÙ1ë0‰,†Ðc?|3ëL‰,†qP8z4ëp‰,†þcöÚ5딉,†§gàÙ6뼉,†}{ Ú6ëà‰,†"c±% 6댊,†Ît+Ó8ëЊ,†_Ò Û9ë‹,ƒãƒ& 9ë,…¯DÛ:ë,Fœ½]Ü;ëX,š{ rÜ=ë`,©{ zÜ=ëh,¸{ Tp>ëÆØ{ ƒÜ?ëÆë{ ƒÜ@ëÆ| òúAëÆ| òúBëÆ | …™CëÆ1| …™DëÆC| ÓlEëÆS| ŠÜEëÆh| …™FëÆs| ŽLGët,…¯Œ_Hë€,ƃ| $1Hëà,Æ| §ÜIëì,Æ®| ·ÜJëø,…¯Œ_KëŽ,ƃ| $1KëŽ,ÆØ{ ƒÜLëŽ,Æë{ ƒÜMë<Ž,Æ| òúNëHŽ,Æ| òúOëTŽ,Æ | …™Pë`Ž,Æ1| …™Q뀎,ÆC| ÓlR눎,ÆS| ŠÜR딎,Æh| …™Së Ž,Æs| ŽLT묎,} ìÜUëÀŽ,| 4ÝWëèŽ, dÝYë,슣Ý\ë(,!rºÝ]ë4,$} ðÝ]ëP,…¯?_ë`,Fœ½Þ`ët,…¯Œ_bë|,Fœ½'Þbëˆ,…¯Œ_eë,Fœ½y6eë¸,} HÞfëÌ,| mÞhëô, ‘Þjë,ìŠÊÞmë4,+} ÊÞnëL,D} ßoëd,±ýSßqët,!rwßsë€,$} °ßsëœ,Áž àuëÀ,…¯?vëÐ,Fœ½;àwëä,…¯Œ_yëì,Fœ½Fàyëø,…¯Œ_|ë‘,Fœ½Fà|ë‘,…¯öÞë$‘,Fœ½và€ë<‘,…¯HúƒëL‘,Fœ½˜à„ë`‘,…¯Œ_…ëh‘,Fœ½Éà…ë‘,…¯Œ_†ë˜‘,Fœ½âà†ë¤‘,…¯Œ_‡ë¬‘,Fœ½$á‡ëà‘,…¯Œ_ˆëè‘,Fœ½Báˆëô‘,!r͉ë’,ìŠfá‰ë’,±ž áŠë,’,ºž „ë@’,£ž „ëT’,P} Þá‘ël’,Áž ùá“ëx’,>x ùá”ë„’,Èž â•ë’,\} ?â–뤒,b} —â˜ë¸’,þw ‚ã›ë“,|} ëãë“,Š} Vä¢ë,“,’} Ûä¦ëH“,š} .å©ë\“,¨} Vå¬ët“,´} ‹å®ëŒ“,±ý·å°ë “,žž Ýå²ë´“,¯d òå´ëÀ“,’d æ¶ëÌ“,¾} Væ¸ëì“,¡;}æºëø“,| ‹æ¼ë”,Ïž šæ¾ë”, ­æÀë ”,—d ÒæÃë,”,} óæÄë@”,È} !çÆëT”,…¯Œ_Èë\”,Fœ½;çÈëh”,…¯Ÿ7Ëëx”,Fœ½ZçÌë”,…¯Ÿ7Ïë ”,Fœ½ZçÐ블,…¯HúÓëÈ”,Fœ½…çÔëð”,…¯Œ_Öëø”,Fœ½¥çÖë•,…¯iâÙë•,Fœ½ïçÚëD•,…¯Œ_ÝëL•,Fœ½+èÝët•,…¯éâÞë„•,Fœ½¡èß뼕,…¯Œ_àëÄ•,Fœ½»èàëì•,…¯ ãáë,–,FؤNéèëd—,FskŒ_éë0˜,Fê¤ßkéël˜,Fù¤nééëx˜,F ¥xéé먘,…¯¶ãéëȘ,Fœ½ñéìë(™,…¯;äïë8™,Fœ½"êðëP™,…¯•äôë`™,Fœ½±êõ묙,…¯åøë¼™,Fœ½ïêùëЙ,…¯?üëà™,Fœ½¥çýëš,…¯öÞìš,Fœ½6ëìDš,…¯HúìTš,Fœ½Xëìhš,…¯Sìxš,Fœ½jë쌚,…¯? 윚,Fœ½|ë ì°š,…¯? ìÀš,Fœ½|ëìÔš,…¯?ìäš,Fœ½™ëìüš,…¯?ì ›,Fœ½®ëì,›,×} ììT›,…¯Œ_ì`›,ᶪUìl›,áñªMìx›,…¯âëì›,Fœ½æbìØ›,4PŽìì$œ,ß} ×ì ìtœ,=µñì"쌜,~ Rí#ìäœ,2~ Rí'ìøœ,C~ óí+ì ,Knî.ìh, Æî0ì€,n~ ï3ìÌ,Ï{2ï4ìÜ,t~ fï5ìô,~ ¡ï7ì ž,…¯ZÎ9ìž,Fœ½Š\:ì0ž,…¯Œ_;ì8ž,Fœ½Ùù;ì<ž,…¯ í<ìdž,Fœ½çÐ@숞,…¯ íAì°ž,Fœ½çÐEìŸ,…¯2îFì Ÿ,Fœ½çÐHì<Ÿ,…¯†ðIìTŸ,Fœ½­ðKìlŸ,…¯ŸîLì|Ÿ,Fœ½ÇðM씟,…¯ZÎO줟,Fœ½§ñPì  ,…¯ZÎQì0 ,Fœ½çÐRìD ,…¯5SìT ,Fœ½åñT옠,…¯ŽïU쨠,Fœ½åñVìì ,Ÿd µWìø ,/x ßXì¡,Ì %òZì¡,•~ ;ò[ì¡,’} Sò]ì(¡,*x ò`ì8¡,š~ 4Ýcì`¡,  «òeìx¡,=µ½ògì„¡,§~ Óòh씡, àòi쬡, ókìÄ¡,Áž Pónìô¡,…¯Œ_oì¢,ᶪUoì ¢,áñªMpì¢,…¯årì(¢,Fœ½ósì`¢,…¯Œ_uìl¢,ᶪUuìx¢,áñªMvì„¢,…¯±<x씢,Fœ½y쨢,Áž ¾ózìØ¢,…¯Œ_{ìä¢,ᶪU{ìð¢,áñªM|ìü¢,…¯ÛÕ~ì £,Fœ½ãóì8£,®~ ]õ €ìH£,¼~ ùó€ìT£,èýÿó‚ì`£,Á~ õ „ìl£,Œ\ô‡ì£,Å~ ô‰ì´£, ô‹ìÌ£, ôìÔ£,Ì~ `ìà£,Ö~ `Žìì£,à~ Ù˜ì¤,è~ `ìh¤,ó~ `‘ì´¤, )ô’ì¥, )ô”ìP¥, Ș–ì`¥,& aa˜ìŒ¥,1 aašì¸¥,< Ý5œìÌ¥,J Yôžìü¥,^ zô¡ì ¦,i •ô£ìL¦,u Êô¦ìd¦,¹d z¨ì„¦,} íô«ìЦ,ƒ Yô®ì$§, zô±ìH§,” õ³ì˜§,c !õ¶ì´§,|c !õ¸ìè§,  §õºì€¨,® ÿõ¾ì¤¨,º —ÒÀì©,•~ ;òÂì0©,Æ 5öÄ씩,Ò QöÆì¤©,ß …öÇìª,ë ¶öÊìª,õ ×öÌìPª,€ 5÷Íìpª, € yøÑìĪ,€ ßøÒì\«,€ ùÖ켫,%€ ¨’ÙìØ«,/€ YùÛìD¬,Ì %òÞìP¬,Óc `‘ß씬,;€ {ùà쨬,슈ùâìÀ¬,®~ ]õ äìЬ,E€ ±ùäì ­,K€ âùæì`­, õùè윭,T€ õùêìØ­,¡;õùììä­,’} Sòîìd®,Y€ ¼úñìÔ®,e€ èúôì$¯,l€ ûøì@¯,s€ $’û숯,b1ûý윯,y€ Cûÿ츯,€ {ùíȯ,ˆ€ Vûí0°, € Üûíh°,Þw ü íx°,¬€ @ü íܰ,*x òíì°,²€ rüí±,»€ ¤üí±,Ç€ âüí,±,Ö€ ýí@±,ဠÁýí\±,ð€ þíp±,þ€ ;þ턱, þ!혱,…¯=ô#í¨±,Fœ½¬ó$í¼±,…¯Œ_&íı,Fœ½°þ&íø±,…¯Œ_'í²,Fœ½êþ'í8²,…¯=ô(íL²,áÿ)íp²,…¯?+퀲,Fœ½õ­,혲,…¯S.í¨²,Fœ½Bÿ/í¼²,…¯Çü0í̲,Fœ½˜à1íà²,…¯Hú2íð²,Fœ½˜à3í³,…¯Zý4í³,Fœ½—ÿ5í$³,…¯€ý7í<³,Fœ½ëÿ9íT³,…¯?:íd³,Fœ½¼× ;íx³,…¯2<í³,Fœ½I>í¨³,…¯%þ@í¸³,Fœ½]Aíг,…¯?Cíà³,Fœ½?|Díô³,…¯?Eí´,Fœ½¼× Fí´, •Gí<´,’} ÔH퀴,÷­FŽKí´,*x $MíØ´, PPíü´,•~ ySí´µ,) ‹Uíìµ,= ¾Zí,¶,¹d Ö]íD¶,’} `í°¶,*x [cí·,E fí\·,Ì žjíh·,Q ±kí·,` ±níÈ·,l ¸1qíÔ·,v Ësí4¸, éwíT¸,…¯=ôyíh¸,ází¬¸,…¯?|í¼¸,Fœ½?|}íи,— 5~íܸ,Ÿ gíè¸,¯ íø¸,…¯Hú„í ¹,á¬ó…í@¹,…¯T‡í\¹,á¬ó‰í„¹,]N_‹í¼¹,!r/·‹íĹ,ã ¸‹íй,£ž Iýíܹ,ªž $’íè¹, Ô‘íø¹,ë ù”íº,±ž ²0˜íº,ñ ¿›í(º,û WPŸí8º,ºž Iý¢íDº,= z¤íTº,‚ Y§ídº,¾} ¨’ªípº,‚ 3¬íк, ‚ xá­í8»,‚ m¯íD»,‚ 2= °íL»,Ïž ¯/²íX»,'‚ a´íh»,—d Uw µít»,מ ü¶í„»,.‚ Ý[·í»,ûjƸ휻,±ýº”¹í¨»,’d 6”»í´»,žž •½íÀ»,¯d 8¿íÌ»,Èž õxÁíл,˜ž åxÂíÜ»,¼¼ñ‘Ãíè»,Áž vÅíì»,ä ÇÆíø»,4‚ êÞÈí¼,ÆJÊíH¼,8‚ ïÎí(½,Q‚ Ôí¾,[‚ 3ØíL¾,c‚ BÚí\¾, wÜíä¾,®~ ]õ àíô¾,| »àíX¿,Ïž Óãí¼¿,j‚ æíì¿,u‚ ÆìílÀ,‚‚ ñíˆÀ,Š‚ höíàÀ,”‚ þúí\Á,û PûíøÁ, þíLÂ,žž Éî˜Â,x  îôÂ,£ž A îHÃ,§‚ A îœÃ,±ýž  îôÃ,’d Æ  îPÄ, ñ  îœÄ,®‚ > îLÅ,x > î|Å,¿‚ $ îÆ,Èž ‹ !î(Æ,Ÿd ¤ "î8Æ,Áž Ú #îLÆ,Ç‚ ú %îŒÆ,˜ž ? (îÔÆ,Ø‚ × *îøÆ,…¯Œ_+îÇ,Fœ½ñ +îÇ,…¯=ô.î Ç,Fœ½ /îLÇ,…¯} 1îxÇ,ƒycÞz2îðÇ,ƒpcßk2î„È,ƒî‚ m 2îPÉ,ƒ ƒ w3î`É,ƒú‚ w3îpÉ,…¯§ 3îŒÉ,რÞz5î É,áJƒ Ám5î¸É,áuƒ ßk5îÌÉ,რŒ_5îèÉ,á*xŒ_5îìÉ,̃ j™5îðÉ,ÆJw5îÊ,àƒ Ñ:îXË,Q‚ '@î¼Ì, WCî$Í,öƒ FîØÍ,þƒ Jî”Î,”‚ MîÏ,û WNîÄÏ, ÁQîÐ,žž ìTîXÐ, ÿVîœÐ,§‚ YîèÐ,£ž [î4Ñ,èw 7]îDÑ, „ d`î€Ñ,Š‚ —bîÜÑ,„ »fî Ò,„ çiîPÒ,þw »kî(Ó,'„ =nî„Ó,j‚ qrî°Ó,u‚ úwî(Ô,7„ [|îdÔ,T„ )}îÕ,a„ )î¤Õ,n„ e…îÌÕ,€„ „‡îüÕ,’„ eˆî$Ö,¤„ „ŠîTÖ,¶„ ”‹î€Ö,Å„ ”Œî¬Ö,Ø‚ îÐÖ,Ô„ vŽîÐØ,â„ –‘îÙ,ê„ d”î@Ù,Èž ®–îPÙ,õ„ Õ—îtÙ,Ÿd ëšîœÙ,Ç‚ ø›îÀÙ,˜ž (žîÚ,…¯÷~ î Ú,Fœ½?|¢î8Ú,…¯è£îPÚ,Fœ½e¥îpÚ,…¯è¦îˆÚ,Fœ½e¨î¨Ú,…¯º©îÔÚ,ƒyc‰kªî,Û,ƒpcßkªî¨Û,ƒî‚ Ÿªî`Ü,ƒ ƒ w«îpÜ,ƒú‚ w«î€Ü,…¯Ý«îœÜ,რ‰k­î°Ü,áJƒ Ám­îÈÜ,áuƒ ßk­îÜÜ,რŒ_­îøÜ,á*xŒ_­îüÜ,…¯È­îÝ,Fœ½¯îHÝ,…¯\…°îXÝ,Fœ½W±î¤Ý,…¯Ây³î´Ý,Fœ½ãó´îìÝ,…¯}µîÞ,Fؤ»K ºîìÞ,FskŒ_»îœß,Fê¤ßk»îÐß,Fù¤‰k»îÜß,F ¥”{»î à,…¯k}»î<à,Fؤ»K Àî á,FskŒ_Áî¼á,Fê¤ßkÁîðá,Fù¤‰kÁîüá,F ¥”{Áî,â,…¯á}ÁîDâ,Fœ½öÃî\â,ûjÅîhâ,èýÆîtâ,z“Èî„â,§~ HËî¬â,ävÍîÔâ,{w ‰Ïî„ã,'‚ ×Ôî´ã,¼¼ùÕîÐã,Á~ 3×î@ä,!… GÚî´ä,&… WÞîÄä,Èž tßîå,+… …àî8å,Áž ²âî`å,žž Ããî˜å,±ýäåîÜå,’d )çî0æ,¯d kéîpæ,2… „ëîœæ,£ž ¬ïîÀæ,<… „ñîìæ,ºž ¬õîç,®~ ]õ ÷î ç,G… ¿÷îXç,| åúîtç,R… ùüî¬ç,]… -ÿîÈç,e… Jïè,Ïž cïè,‚ ¢ï|è,û  ïðè,/x A ïDé,ªž mïé,¾} ®ïôé,p… Wï4ê,±ž çïpê, ï¬ê,Ÿd )ï¸ê,§d 7ïÈê,Ø‚ EïØê,… „ïôê,†… ©ïë,… ½ ïHë,˜… %ïŒë, … .(ï¼ë,0 B+ïØë,§… U-ïì,°… „0ï$ì,»… £2ïXì,Ã… É7ïŒì,Ï… è<ïÈì,Ö… è>ïí,ë d@ïpí,ñ ÀDïÜí,á… ½Hïî,= MïXî,—d êPïdî,ì… # QïÄî,ó…   Tïï,ù… û Wï`ï,† N!\ï¼ï, † r!aïàï,† ”!dïð,Þw À!gï$ð,† Í!hïTð,$† å!kïpð,1† ü!mï¤ð,:† "pïÀð,4‚ S"rïüð,‚ ³"tïlñ,…¯7uï¤ñ,Fؤ»K {ïhò,FskŒ_|ïó,Fê¤ßk|ïLó,Fù¤‰k|ïXó,F ¥”{|ï„ó,…¯`|ï¼ó,Fؤ»K ‚ïŒô,FskŒ_ƒï<õ,Fê¤ßkƒïpõ,Fù¤‰kƒï|õ,F ¥”{ƒï¨õ,…¯©ƒïèõ,Fؤ»K Šï(÷,FskŒ_‹ïô÷,Fê¤ßk‹ï0ø,Fù¤‰k‹ï<ø,F ¥”{‹ïlø,…¯‹ï¬ø,Fؤ»K ’ïŒù,FskŒ_“ï<ú,Fê¤ßk“ïpú,Fù¤‰k“ï|ú,F ¥”{“ï°ú,…¯`“ïÀú,ƒœ½¬ó”ïÔú,…¯Hú–ïäú,ƒœ½¬ó—ïû,…¯r ™ï8û,Fœ½¦—œïlû,…¯A"ï„û,Fœ½Ç#Ÿï¤û,H† s™ ï¨û,¼ß áï¬û,“† j™¡ï´û,¡† j™¡ï¸û,¯† j™¡ïÀû,¾† j™¡ïÈû,̆ j™¡ïÐû,Û† j™¡ïØû,ê† ø#¡ïàü,(‡ Á%§ïd-…¯Ý%«ïœ-ƒN‡ å%­ï-ƒ~| •˱ï¼-ƒ–‡ ù%³ï-…¯ &´ïX-Fؤ%&»ï\-FskŒ_¼ï-Fê¤ßk¼ï4-Fù¤¦¤¼ï@-F ¥4&¼ïl-…¯Ý%¼ïˆ-ƒ–‡ B&¾ïÌ-…¯K&¿ï -Fؤ;dÆïè-FskŒ_ÇïŒ-Fê¤ßkÇïÀ-Fù¤×lÇïÌ-F ¥EdÇïø-ƒ¨z ÁmÇï -ƒé‡ ßsÇï -ƒö‡ ßsÇï -…¯_&Çï( -…¯h&ÊïX -Fؤ;dÏï -FskŒ_Ðï¼ -Fê¤ßkÐïð -Fù¤×lÐïü -F ¥EdÐï -…¯¬$ÐïŒ -Fؤ;dÜïL -FskŒ_Ýï-Fê¤ßkÝïh-Fù¤×lÝït-F ¥EdÝï¨-…¯›&Ýïà-Fؤ¶&ãï¤-FskŒ_äïH-Fê¤ßkäï|-Fù¤twäïˆ-F ¥Ä&äï¬-…¯¬$äï-Fؤ;dðïì-FskŒ_ñï¸-Fê¤ßkñï-Fù¤×lñï-F ¥EdñïH-…¯Îxñï€-Fؤ»K ÷ïä-FskŒ_øï”-Fê¤ßkøïÈ-Fù¤‰køïÔ-F ¥”{øï-2ˆ Éõ øïH-Aˆ -'ùïÀ-Wˆ V'ðˆ-iˆ V'ð,-}ˆ j'ðÄ-…¯Åt ðÜ-Fœ½' ðD-…¯Œ_ðL-Fœ½'ðP-…¯¨'ð`-Fœ½·'ðŒ-…¯Å'ðœ-Fœ½zrð¬-¾ˆ ?¹ð´-tLºkðÔ-Ôˆ âÚðÜ-ÖLãkð-Mãkð0-KMlðl-_MNlð -ƒM€lð-߈ (ðà-üM m%ð$-ìˆ 5('ðt-…¯]()ðŒ-Fœ½R¦+ð¤-…¯q(,ðÄ-Fœ½‘(/ðô-…¯™(1ð-Fœ½ (4ð@-…¯%(7ð\-ƒÏ‰k9ðp-¸ Î(9ðx-ùK`9ð”-‰ ëþ:ð°-…¯Œ_;ð¸-Fœ½è(;ðÌ-]N_<ðô-6‰ ãk<ðL-S‰ ")=ðŒ-5^ j™>ð”-\‰ 7)>ð¤-@^ M)Að@ -Q^ f)Cð¤ -Z^ ’)Dð!-`‰ ç)Eðd!-l‰  *Jðh%-—^ ×*Oð¤%-‚‰ ð*Rð¼%-”‰ +Uðà%- ‰ N+Xðˆ'-ý^ +^ðÈ'-±‰ +aðð'-¿‰ Ü+dð\)-_ J,jð€)-׉ œ,nðä)-ç‰ é,oð`*-ø‰ µ‹qðh*-Š µ‹qðp*-Š '-qðÀ*-*Š p-rð+-:Š å¾ sð\+-KŠ å¾ tð¨+-VŠ å¾ uðà+-bŠ „-vð°,-tŠ ÍJ xðð,-~Š Š-zð8--‡Š `}ð`--”Š •-~ðÐ--®Š ›-€ðì--½Š °-‚ðø--ËŠ Á-ƒð,.-æŠ Á-‹ð\.-óŠ —.“ð`2-‹ ”/ð3-&‹ ¾/¤ðT3-<‹ Ý/«ðd3-O‹ 0±ðp3-j‹ k0´ð|3-v‹ °0·ðˆ3-œ‹ —.¸ðà;-µ‹ I2Âð4<-t‰ 2Æð@-æ‹ –2Èð(@-ô‹  2ÊðH@-Œ ©2Ìðh@-Œ ´2Ïð€@-!Œ Á2Ñð¬@-,Œ Ë2ÓðÄ@-=Œ Ô2Õðì@-KŒ –2ÖðA-_ Û2Øð A-…¯àÛð,A-ƒQ×lÞð4A-ƒUM×lÞðŠñ$S-†qP};‹ñ4S-…¯>‹ñDS-†qPêkŒñTS-…¯&>ŒñdS-†qP^<ñtS-…¯/>ñ„S-†QÓlŽñ”S-†UM^<Žñ¤S-…¯8>Žñ´S-†QêkñÄS-†UM^<ñÔS-…¯H>ñäS-†qPÁmñôS-I‘ ¾>ñØT-ˆ‘ &?”ñ€U-‘ 9?–ñìU-…¯Œ_˜ñôU-Fœ½G?˜ñV-…¯Œ_šñ V-Fœ½G?šñV-¨\ Ç œñdV-±\ Ç ñ¬V-Ï\ À‹žñØV-e‹ T?¡ñäV-Ü\ KÇ ¢ñðV-â\ KÇ £ñüV-ç\ KÇ ¤ñW-î\ KÇ ¥ñW-»\ µ‹¦ñW-Æ\ Ç ¦ñlW-ô\ Ë‹§ñ|W-û\ Ô‹©ñ„W-] Ô‹©ñŒW-] Ô‹©ñ”W-] Ô‹©ñœW-º‘ ˆo©ñ¨W-+] 틬ñÌW-2] Ë‹¯ñÜW-<] Ë‹±ñìW-H] Ë‹³ñüW-V] Ë‹µñ X-ž] Ë‹·ñ X-¦] Ë‹¹ñ4X-³] Ë‹»ñHX-È‘ Œ½ñŒX-Ú] CŒÀñØX-ã] å¾ ÂñèX-î] å¾ ÃñøX-ø] å¾ ÄñY-^ VŒÅñY- ^ žÇñHY-^ å¾ ÈñdY-^ å¾ Éñ´Y-'^ cŒÊñüY-/^ ê ÌñPZ-æ‘ žÎñ€Z- ¿žÏñ°Z-õ‘ œ?Ðñ@[- ’ @Õñ`[-’ D@Úñt[-…¯Œ_Þñ|[-Fœ½ò¼ ÞñŒ[-…¯Œ_àñ”[-Fœ½ò¼ àñ¤[-…¯Œ_âñ¬[-Fœ½ò¼ âñ¼[-…¯Œ_äñÄ[-Fœ½ò¼ äñÔ[-…¯Œ_æñÜ[-Fœ½ò¼ æñì[-…¯Œ_èñô[-Fœ½ò¼ èñ\-…¯Œ_êñ \-Fœ½ò¼ êñ\-…¯Œ_ìñ$\-Fœ½”¼ ìñ@\-…¯Œ_íñH\-Fœ½”¼ íñd\-…¯Œ_îñl\-Fœ½”¼ îñp\-…¯á¼ ïñ€\-Fœ½”¼ ðñ”\-…¯Œ_ññœ\-Fœ½ò¼ ññ¨\-…¯Œ_óñ°\-Fœ½?|óñ´\-]N_ôñ„]-…¯Œ_ôñŒ]-Fœ½k@ôñ]-X’ (÷ñ\^-]N_ýñœ^-…¯Œ_ýñ¤^-Fœ½è(ýñ¸^-…¯iSþñÈ^-Fœ½òúÿñÜ^-…¯Œ_òä^-Fœ½È@ò_-…¯iSò _-Fœ½òúò4_-…¯Œ_ò<_-Fœ½È@òh_-…¯iSòx_-Fœ½òúòŒ_-…¯Œ_ò”_-Fœ½È@òÀ_-…¯iSòÐ_-Fœ½òúòä_-…¯Œ_ òì_-Fœ½È@ ò`-…¯iS ò(`-Fœ½òú ò<`-…¯Œ_ òD`-Fœ½È@ òp`-…¯iS ò€`-Fœ½òúò”`-…¯Œ_òœ`-Fœ½È@òÈ`-…¯iSòØ`-Fœ½òúòì`-…¯Œ_òô`-Fœ½È@ò a-…¯iSò0a-Fœ½òúòDa-…¯Œ_òLa-Fœ½È@òxa-…¯iSòˆa-Fœ½òúòœa-…¯Œ_ò¤a-Fœ½È@òÐa-…¯iSòàa-Fœ½òúòôa-…¯Œ_òüa-Fœ½È@ò(b-…¯iSò8b-Fœ½òúòLb-…¯Œ_òTb-Fœ½È@ò€b-…¯iSòb-Fœ½òú ò¤b-…¯Œ_!ò¬b-Fœ½È@!òØb-…¯ÿf"òèb-Fœ½†#òüb-…¯d$ò c-Fœ½#d%ò0c-…¯Œ_&ò8c-Fœ½UA&òdc-…¯iS'òtc-Fœ½òú(òˆc-…¯Œ_)òc-Fœ½È@)ò¼c-…¯iS*òÌc-Fœ½òú+òàc-…¯Œ_,òèc-Fœ½È@,òd-…¯iS-ò$d-Fœ½òú.ò8d-…¯Œ_/ò@d-Fœ½È@/òld-…¯iS0ò|d-Fœ½òú1òd-…¯Œ_2ò˜d-Fœ½È@2òÄd-…¯iS3òÔd-Fœ½òú4òèd-…¯sS5òød-Fœ½‹S6òe-…¯Œ_7ò$e-Fœ½ñA7òPe-…¯iS8ò`e-Fœ½òú9òte-…¯Œ_:ò|e-Fœ½È@:ò¨e-…¯iS;ò¸e-Fœ½òú<òÌe-…¯Œ_=òÔe-Fœ½È@=òf-…¯iS>òf-Fœ½òú?ò$f-…¯Œ_@ò,f-Fœ½È@@òXf-…¯iSAòhf-Fœ½òúBò|f-…¯Œ_Cò„f-Fœ½È@Cò°f-…¯iSDòÀf-Fœ½òúEòÔf-…¯Œ_FòÜf-Fœ½È@Fòg-…¯iSGòg-Fœ½òúHò,g-…¯Œ_Iò4g-Fœ½È@Iò`g-…¯iSJòpg-Fœ½òúKò„g-…¯Œ_LòŒg-Fœ½È@Lò¸g-…¯iSMòÈg-Fœ½òúNòÜg-…¯Œ_Oòäg-Fœ½È@Oòh-…¯iSPò h-Fœ½òúQò4h-…¯Œ_Ròó‚-…¯Œ_?ó‚-Fœ½¨B?ó<‚-…¯iS@óL‚-Fœ½òúAó`‚-…¯sSBóp‚-Fœ½‹SCó”‚-…¯•SDó¤‚-Fœ½·SEóÈ‚-…¯Œ_FóЂ-Fœ½¨BFóü‚-…¯iSGó ƒ-Fœ½òúHó ƒ-…¯sSIó0ƒ-Fœ½‹SJóTƒ-…¯•SKódƒ-Fœ½·SLóˆƒ-…¯Œ_Móƒ-Fœ½¨BMó¼ƒ-…¯iSNó̃-Fœ½òúOóàƒ-…¯sSPóðƒ-Fœ½‹SQó„-…¯•SRó$„-Fœ½·SSóH„-…¯Œ_TóP„-Fœ½¨BTó|„-…¯iSUóŒ„-Fœ½òúVó „-…¯sSWó°„-Fœ½‹SXóÔ„-…¯•SYóä„-Fœ½·SZó…-…¯Œ_[ó…-Fœ½¨B[ó<…-…¯iS\óL…-Fœ½òú]ó`…-…¯sS^óp…-Fœ½‹S_ó”…-…¯•S`ó¤…-Fœ½·SaóÈ…-…¯Œ_bóÐ…-Fœ½¨Bbóü…-…¯iScó †-Fœ½òúdó †-…¯Œ_eó(†-Fœ½È@eóT†-…¯iSfód†-Fœ½òúgóx†-…¯Œ_hó€†-Fœ½È@hó¬†-…¯iSió¼†-Fœ½òújóІ-…¯Œ_kó؆-Fœ½È@kó‡-…¯iSló‡-Fœ½òúmó(‡-…¯sSnó8‡-Fœ½‹Soó\‡-…¯Œ_pód‡-Fœ½ñApó‡-…¯iSqó ‡-Fœ½òúró´‡-…¯Œ_só¼‡-Fœ½È@sóè‡-…¯iStóø‡-Fœ½òúuó ˆ-…¯Œ_vóˆ-Fœ½È@vó@ˆ-…¯iSwóPˆ-Fœ½òúxódˆ-…¯Œ_yólˆ-Fœ½È@yó˜ˆ-…¯iSzó¨ˆ-Fœ½òú{ó¼ˆ-…¯Œ_|óĈ-Fœ½È@|óðˆ-…¯iS}ó‰-Fœ½òú~ó‰-…¯Œ_ó‰-Fœ½È@óH‰-…¯iS€óX‰-Fœ½òúól‰-…¯Œ_‚ót‰-Fœ½È@‚ó ‰-…¯iSƒó°‰-Fœ½òú„óĉ-…¯Œ_…ó̉-Fœ½È@…óø‰-…¯iS†óŠ-Fœ½òú‡óŠ-…¯Œ_ˆó$Š-Fœ½È@ˆóPŠ-…¯iS‰ó`Š-Fœ½òúŠótŠ-…¯Œ_‹ó|Š-Fœ½È@‹ó¨Š-…¯iSŒó¸Š-Fœ½òúóÌŠ-…¯sSŽóÜŠ-Fœ½‹Só‹-…¯Œ_ó‹-Fœ½ñAó4‹-…¯iS‘óD‹-Fœ½òú’óX‹-…¯sS“óh‹-Fœ½‹S”óŒ‹-…¯•S•óœ‹-Fœ½·S–óÀ‹-…¯Œ_—óÈ‹-Fœ½¨B—óô‹-…¯iS˜óŒ-Fœ½òú™óŒ-…¯sSšó(Œ-Fœ½‹S›óLŒ-…¯•Sœó\Œ-Fœ½·Só€Œ-…¯Œ_žóˆŒ-Fœ½¨Bžó´Œ-…¯iSŸóÄŒ-Fœ½òú óØŒ-…¯Œ_¡óàŒ-Fœ½È@¡ó -…¯iS¢ó-Fœ½òú£ó0-…¯Œ_¤ó8-Fœ½È@¤ód-…¯iS¥ót-Fœ½òú¦óˆ-…¯Œ_§ó-Fœ½È@§ó¼-…¯iS¨óÌ-Fœ½òú©óà-…¯Œ_ªóè-Fœ½È@ªóŽ-…¯iS«ó$Ž-Fœ½òú¬ó8Ž-…¯Œ_­ó@Ž-Fœ½È@­ólŽ-…¯iS®ó|Ž-Fœ½òú¯óŽ-…¯Œ_°ó˜Ž-Fœ½È@°óÄŽ-…¯iS±óÔŽ-Fœ½òú²óèŽ-…¯sS³óøŽ-Fœ½‹S´ó-…¯Œ_µó$-Fœ½ñAµóP-…¯iS¶ó`-Fœ½òú·ót-…¯Œ_¸ó|-Fœ½È@¸ó¨-…¯iS¹ó¸-Fœ½òúºóÌ-…¯sS»óÜ-Fœ½‹S¼ó-…¯Œ_½ó-Fœ½ñA½ó4-…¯iS¾óD-Fœ½òú¿óX-…¯sSÀóh-Fœ½‹SÁóŒ-…¯Œ_Âó”-Fœ½ñAÂóÀ-…¯iSÃóÐ-Fœ½òúÄóä-…¯sSÅóô-Fœ½‹SÆó‘-…¯Œ_Çó ‘-Fœ½ñAÇóL‘-…¯iSÈó\‘-Fœ½òúÉóp‘-…¯sSÊó€‘-Fœ½‹SËó¤‘-…¯Œ_Ìó¬‘-Fœ½ñAÌóØ‘-…¯iSÍóè‘-Fœ½òúÎóü‘-…¯sSÏó ’-Fœ½‹SÐó0’-…¯•SÑó@’-Fœ½·SÒód’-…¯Œ_Óól’-Fœ½¨BÓó˜’-…¯iSÔó¨’-Fœ½òúÕó¼’-…¯sSÖóÌ’-Fœ½‹S×óð’-…¯•SØó“-Fœ½·SÙó$“-…¯Œ_Úó,“-Fœ½¨BÚóX“-…¯iSÛóh“-Fœ½òúÜó|“-…¯Œ_Ýó„“-Fœ½È@Ýó°“-…¯iSÞóÀ“-Fœ½òúßóÔ“-…¯Œ_àóÜ“-Fœ½È@àó”-…¯iSáó”-Fœ½òúâó,”-…¯sSãó<”-Fœ½‹Säó`”-…¯Œ_åóh”-Fœ½ñAåó””-…¯iSæó¤”-Fœ½òúçó¸”-…¯sSèóÈ”-Fœ½‹Séóì”-…¯Œ_êóô”-Fœ½ñAêó •-…¯iSëó0•-Fœ½òúìóD•-…¯sSíóT•-Fœ½‹Sîóx•-…¯Œ_ïó€•-Fœ½ñAïó¬•-…¯iSðó¼•-Fœ½òúñóЕ-…¯sSòóà•-Fœ½‹Sóó–-…¯Œ_ôó –-Fœ½ñAôó8–-…¯iSõóH–-Fœ½òúöó\–-…¯sS÷ól–-Fœ½‹Søó–-…¯Œ_ùó˜–-Fœ½ñAùóÄ–-…¯iSúóÔ–-Fœ½òúûóè–-…¯sSüóø–-Fœ½‹Sýó—-…¯Œ_þó$—-Fœ½ñAþóP—-…¯iSÿó`—-Fœ½òúôt—-…¯sSô„—-Fœ½‹Sô¨—-…¯Œ_ô°—-Fœ½ñAôÜ—-…¯iSôì—-Fœ½òúô˜-…¯sSô˜-Fœ½‹Sô4˜-…¯Œ_ô<˜-Fœ½ñAôh˜-…¯iS ôx˜-Fœ½òú ôŒ˜-…¯sS ôœ˜-Fœ½‹S ôÀ˜-…¯Œ_ ôȘ-Fœ½ñA ôô˜-…¯iSô™-Fœ½òúô™-…¯sSô(™-Fœ½‹SôL™-…¯Œ_ôT™-Fœ½ñAô€™-…¯iSô™-Fœ½òúô¤™-…¯sSô´™-Fœ½‹SôØ™-…¯Œ_ôà™-Fœ½ñAô š-…¯iSôš-Fœ½òúô0š-…¯Œ_ô8š-Fœ½È@ôdš-…¯iSôtš-Fœ½òúôˆš-…¯sSô˜š-Fœ½‹Sô¼š-…¯Œ_ôÄš-Fœ½ñAôðš-…¯iS ô›-Fœ½òú!ô›-…¯sS"ô$›-Fœ½‹S#ôH›-…¯Œ_$ôP›-Fœ½ñA$ô|›-…¯iS%ôŒ›-Fœ½òú&ô ›-…¯Œ_'ô¨›-Fœ½È@'ôÔ›-…¯iS(ôä›-Fœ½òú)ôø›-…¯Œ_*ôœ-Fœ½È@*ô,œ-…¯iS+ô<œ-Fœ½òú,ôPœ-…¯Œ_-ôXœ-Fœ½È@-ô„œ-…¯iS.ô”œ-Fœ½òú/ô¨œ-…¯Œ_0ô°œ-Fœ½È@0ôÜœ-…¯iS1ôìœ-Fœ½òú2ô-…¯Œ_3ô-Fœ½È@3ô4-…¯iS4ôD-Fœ½òú5ôX-…¯sS6ôh-Fœ½‹S7ôŒ-…¯Œ_8ô”-Fœ½ñA8ôÀ-…¯iS9ôÐ-Fœ½òú:ôä-…¯sS;ôô-Fœ½‹S<ôž-…¯Œ_=ô ž-Fœ½ñA=ôLž-…¯iS>ô\ž-Fœ½òú?ôpž-…¯sS@ô€ž-Fœ½‹SAô¤ž-…¯Œ_Bô¬ž-Fœ½ñABôØž-…¯iSCôèž-Fœ½òúDôüž-…¯sSEô Ÿ-Fœ½‹SFô0Ÿ-…¯Œ_Gô8Ÿ-Fœ½ñAGôdŸ-…¯iSHôtŸ-Fœ½òúIôˆŸ-…¯sSJô˜Ÿ-Fœ½‹SKô¼Ÿ-…¯Œ_LôÄŸ-Fœ½ñALôðŸ-…¯iSMô -Fœ½òúNô -…¯sSOô$ -Fœ½‹SPôH -…¯•SQôX -Fœ½·SRô| -…¯Œ_Sô„ -Fœ½¨BSô° -…¯iSTôÀ -Fœ½òúUôÔ -…¯sSVôä -Fœ½‹SWô¡-…¯•SXô¡-Fœ½·SYô<¡-…¯Œ_ZôD¡-Fœ½¨BZôp¡-…¯iS[ô€¡-Fœ½òú\ô”¡-…¯sS]ô¤¡-Fœ½‹S^ôÈ¡-…¯Œ__ôС-Fœ½ñA_ôü¡-…¯iS`ô ¢-Fœ½òúaô ¢-…¯sSbô0¢-Fœ½‹ScôT¢-…¯Œ_dô\¢-Fœ½ñAdôˆ¢-…¯iSeô˜¢-Fœ½òúfô¬¢-…¯Œ_gô´¢-Fœ½È@gôà¢-…¯iShôð¢-Fœ½òúiô£-…¯Œ_jô £-Fœ½È@jô8£-…¯iSkôH£-Fœ½òúlô\£-…¯Œ_môd£-Fœ½È@mô£-…¯iSnô £-Fœ½òúoô´£-…¯sSpôÄ£-Fœ½‹Sqôè£-…¯•Srôø£-Fœ½·Ssô¤-…¯Œ_tô$¤-Fœ½¨BtôP¤-…¯iSuô`¤-Fœ½òúvôt¤-…¯Œ_wô|¤-Fœ½È@wô¨¤-…¯iSxô¸¤-Fœ½òúyô̤-…¯Œ_zôÔ¤-Fœ½È@zô¥-…¯iS{ô¥-Fœ½òú|ô$¥-…¯Œ_}ô,¥-Fœ½È@}ôX¥-…¯iS~ôh¥-Fœ½òúô|¥-…¯sS€ôŒ¥-Fœ½‹Sô°¥-…¯Œ_‚ô¸¥-Fœ½ñA‚ôä¥-…¯iSƒôô¥-Fœ½òú„ô¦-…¯sS…ô¦-Fœ½‹S†ô<¦-…¯Œ_‡ôD¦-Fœ½ñA‡ôp¦-…¯iSˆô€¦-Fœ½òú‰ô”¦-…¯sSŠô¤¦-Fœ½‹S‹ôȦ-…¯Œ_ŒôЦ-Fœ½ñAŒôü¦-…¯iSô §-Fœ½òúŽô §-…¯sSô0§-Fœ½‹SôT§-…¯•S‘ôd§-Fœ½·S’ôˆ§-…¯Œ_“ô§-Fœ½¨B“ô¼§-…¯iS”ô̧-Fœ½òú•ôà§-…¯Œ_–ôè§-Fœ½È@–ô¨-…¯iS—ô$¨-Fœ½òú˜ô8¨-…¯Œ_™ô@¨-Fœ½È@™ôl¨-…¯iSšô|¨-Fœ½òú›ô¨-…¯Œ_œô˜¨-Fœ½È@œôĨ-…¯iSôÔ¨-Fœ½òúžôè¨-…¯sSŸôø¨-Fœ½‹S ô©-…¯Œ_¡ô$©-Fœ½ñA¡ôP©-…¯iS¢ô`©-Fœ½òú£ôt©-…¯Œ_¤ô|©-Fœ½È@¤ô¨©-…¯iS¥ô¸©-Fœ½òú¦ôÌ©-…¯Œ_§ôÔ©-Fœ½È@§ôª-…¯iS¨ôª-Fœ½òú©ô$ª-…¯Œ_ªô,ª-Fœ½È@ªôXª-…¯iS«ôhª-Fœ½òú¬ô|ª-…¯Œ_­ô„ª-Fœ½È@­ô°ª-…¯iS®ôÀª-Fœ½òú¯ôÔª-…¯sS°ôäª-Fœ½‹S±ô«-…¯Œ_²ô«-Fœ½ñA²ô<«-…¯iS³ôL«-Fœ½òú´ô`«-…¯Œ_µôh«-Fœ½È@µô”«-…¯iS¶ô¤«-Fœ½òú·ô¸«-…¯Œ_¸ôÀ«-Fœ½È@¸ôì«-…¯iS¹ôü«-Fœ½òúºô¬-…¯Œ_»ô¬-Fœ½È@»ôD¬-…¯iS¼ôT¬-Fœ½òú½ôh¬-…¯Œ_¾ôp¬-Fœ½È@¾ôœ¬-…¯iS¿ô¬¬-Fœ½òúÀôÀ¬-…¯Œ_ÁôȬ-Fœ½È@Áôô¬-…¯iSÂô­-Fœ½òúÃô­-…¯sSÄô(­-Fœ½‹SÅôL­-…¯•SÆô\­-Fœ½·SÇô€­-…¯Œ_Èôˆ­-Fœ½¨BÈô´­-…¯iSÉôÄ­-Fœ½òúÊôØ­-…¯Œ_Ëôà­-Fœ½È@Ëô ®-…¯iSÌô®-Fœ½òúÍô0®-…¯Œ_Îô8®-Fœ½È@Îôd®-…¯iSÏôt®-Fœ½òúÐôˆ®-…¯Œ_Ñô®-Fœ½È@Ñô¼®-…¯iSÒôÌ®-Fœ½òúÓôà®-…¯Œ_Ôôè®-Fœ½È@Ôô¯-…¯iSÕô$¯-Fœ½òúÖô8¯-…¯Œ_×ô@¯-Fœ½È@×ôl¯-…¯iSØô|¯-Fœ½òúÙô¯-…¯Œ_Úô˜¯-Fœ½È@Úôį-…¯iSÛôÔ¯-Fœ½òúÜôè¯-…¯Œ_Ýôð¯-Fœ½È@Ýô°-…¯iSÞô,°-Fœ½òúßô@°-…¯Œ_àôH°-Fœ½È@àôt°-…¯iSáô„°-Fœ½òúâô˜°-…¯Œ_ãô °-Fœ½È@ãô̰-…¯iSäôܰ-Fœ½òúåôð°-…¯Œ_æôø°-Fœ½È@æô$±-…¯iSçô4±-Fœ½òúèôH±-…¯sSéôX±-Fœ½‹Sêô|±-…¯Œ_ëô„±-Fœ½ñAëô°±-…¯iSìôÀ±-Fœ½òúíôÔ±-…¯Œ_îôܱ-Fœ½È@îô²-…¯iSïô²-Fœ½òúðô,²-…¯Œ_ñô4²-Fœ½È@ñô`²-…¯ÿfòôp²-Fœ½†óô„²-…¯gôô”²-Fœ½.gõô¸²-…¯Œ_öôÀ²-Fœ½bGöôì²-…¯iS÷ôü²-Fœ½òúøô³-…¯Œ_ùô³-Fœ½È@ùôD³-…¯iSúôT³-Fœ½òúûôh³-…¯Œ_üôp³-Fœ½È@üôœ³-…¯iSýô¬³-Fœ½òúþôÀ³-…¯sSÿôг-Fœ½‹Sõô³-…¯Œ_õü³-Fœ½ñAõ(´-…¯iSõ8´-Fœ½òúõL´-…¯sSõ\´-Fœ½‹Sõ€´-…¯Œ_õˆ´-Fœ½ñAõ´´-…¯iSõÄ´-Fœ½òúõØ´-…¯sS õè´-Fœ½‹S õ µ-…¯Œ_ õµ-Fœ½ñA õ@µ-…¯iS õPµ-Fœ½òú õdµ-…¯sSõtµ-Fœ½‹Sõ˜µ-…¯Œ_õ µ-Fœ½ñAõ̵-…¯iSõܵ-Fœ½òúõðµ-…¯sSõ¶-Fœ½‹Sõ$¶-…¯Œ_õ,¶-Fœ½ñAõX¶-…¯iSõh¶-Fœ½òúõ|¶-…¯sSõŒ¶-Fœ½‹Sõ°¶-…¯•SõÀ¶-Fœ½·Sõä¶-…¯Œ_õì¶-Fœ½¨Bõ·-…¯iSõ(·-Fœ½òúõ<·-…¯sSõL·-Fœ½‹S õp·-…¯•S!õ€·-Fœ½·S"õ¤·-…¯Œ_#õ¬·-Fœ½¨B#õØ·-…¯iS$õè·-Fœ½òú%õü·-…¯Œ_&õ¸-Fœ½È@&õ0¸-…¯iS'õ@¸-Fœ½òú(õT¸-…¯Œ_)õ\¸-Fœ½È@)õˆ¸-…¯iS*õ˜¸-Fœ½òú+õ¬¸-…¯Œ_,õ´¸-Fœ½È@,õà¸-…¯iS-õð¸-Fœ½òú.õ¹-…¯Œ_/õ ¹-Fœ½È@/õ8¹-…¯iS0õH¹-Fœ½òú1õ\¹-…¯Œ_2õd¹-Fœ½È@2õ¹-…¯iS3õ ¹-Fœ½òú4õ´¹-…¯Œ_5õ¼¹-Fœ½È@5õè¹-…¯iS6õø¹-Fœ½òú7õ º-…¯Œ_8õº-Fœ½È@8õ@º-…¯iS9õPº-Fœ½òú:õdº-…¯Œ_;õlº-Fœ½È@;õ˜º-…¯iS<õ¨º-Fœ½òú=õ¼º-…¯Œ_>õĺ-Fœ½È@>õðº-…¯iS?õ»-Fœ½òú@õ»-…¯Œ_Aõ»-Fœ½È@AõH»-…¯iSBõX»-Fœ½òúCõl»-…¯Œ_Dõt»-Fœ½È@Dõ »-…¯iSEõ°»-Fœ½òúFõÄ»-…¯Œ_GõÌ»-Fœ½È@Gõø»-…¯iSHõ¼-Fœ½òúIõ¼-…¯Œ_Jõ$¼-Fœ½È@JõP¼-…¯iSKõ`¼-Fœ½òúLõt¼-…¯sSMõ„¼-Fœ½‹SNõ¨¼-…¯Œ_Oõ°¼-Fœ½ñAOõܼ-…¯iSPõì¼-Fœ½òúQõ½-…¯Œ_Rõ½-Fœ½È@Rõ4½-…¯iSSõD½-Fœ½òúTõX½-…¯Œ_Uõ`½-Fœ½È@UõŒ½-…¯iSVõœ½-Fœ½òúWõ°½-…¯Œ_Xõ¸½-Fœ½È@Xõä½-…¯iSYõô½-Fœ½òúZõ¾-…¯Œ_[õ¾-Fœ½È@[õ<¾-…¯iS\õL¾-Fœ½òú]õ`¾-…¯Œ_^õh¾-Fœ½È@^õ”¾-…¯iS_õ¤¾-Fœ½òú`õ¸¾-…¯sSaõȾ-Fœ½‹Sbõì¾-…¯Œ_cõô¾-Fœ½ñAcõ ¿-…¯iSdõ0¿-Fœ½òúeõD¿-…¯sSfõT¿-Fœ½‹Sgõx¿-…¯Œ_hõ€¿-Fœ½ñAhõ¬¿-…¯iSiõ¼¿-Fœ½òújõп-…¯Œ_kõØ¿-Fœ½È@kõÀ-…¯iSlõÀ-Fœ½òúmõ(À-…¯Œ_nõ0À-Fœ½È@nõ\À-…¯iSoõlÀ-Fœ½òúpõ€À-…¯sSqõÀ-Fœ½‹Srõ´À-…¯•SsõÄÀ-Fœ½·StõèÀ-…¯Œ_uõðÀ-Fœ½¨BuõÁ-…¯iSvõ,Á-Fœ½òúwõ@Á-…¯Œ_xõHÁ-Fœ½È@xõtÁ-…¯iSyõ„Á-Fœ½òúzõ˜Á-…¯ˆF{õ¨Á-Fœ½—F|õÌÁ-…¯¡G}õÜÁ-Fœ½µG~õÂ-…¯Œ_õÂ-Fœ½aHõ4Â-…¯iS€õDÂ-Fœ½òúõXÂ-…¯ˆF‚õhÂ-Fœ½—FƒõŒÂ-…¯¡G„õœÂ-Fœ½µG…õÀÂ-…¯Œ_†õÈÂ-Fœ½aH†õôÂ-…¯iS‡õÃ-Fœ½òúˆõÃ-…¯sS‰õ(Ã-Fœ½‹SŠõLÃ-…¯«H‹õ\Ã-Fœ½¿HŒõ€Ã-…¯åHõÃ-Fœ½IŽõ´Ã-…¯Œ_õ¼Ã-Fœ½äIõèÃ-…¯iSõøÃ-Fœ½òú‘õ Ä-…¯sS’õÄ-Fœ½‹S“õ@Ä-…¯«H”õPÄ-Fœ½¿H•õtÄ-…¯åH–õ„Ä-Fœ½I—õ¨Ä-…¯Œ_˜õ°Ä-Fœ½äI˜õÜÄ-…¯iS™õìÄ-Fœ½òúšõÅ-…¯ˆF›õÅ-Fœ½—Fœõ4Å-…¯:JõDÅ-Fœ½NJžõhÅ-…¯tJŸõxÅ-Fœ½ J õœÅ-…¯ÐJ¡õ¬Å-Fœ½K¢õÐÅ-…¯Œ_£õØÅ-Fœ½þK£õÆ-…¯iS¤õÆ-Fœ½òú¥õ(Æ-…¯ˆF¦õ8Æ-Fœ½—F§õ\Æ-…¯:J¨õlÆ-Fœ½NJ©õÆ-…¯dLªõ Æ-Fœ½}L«õÄÆ-…¯Œ_¬õÌÆ-Fœ½PM¬õøÆ-…¯iS­õÇ-Fœ½òú®õÇ-…¯ˆF¯õ,Ç-Fœ½—F°õPÇ-…¯:J±õ`Ç-Fœ½NJ²õ„Ç-…¯dL³õ”Ç-Fœ½}L´õ¸Ç-…¯Œ_µõÀÇ-Fœ½PMµõìÇ-…¯ÿf¶õüÇ-Fœ½†·õÈ-…¯d¸õ È-Fœ½#d¹õDÈ-…¯¦MºõTÈ-Fœ½ÈM»õxÈ-…¯îM¼õˆÈ-Fœ½N½õ¬È-…¯Œ_¾õ´È-Fœ½íN¾õàÈ-…¯ÿf¿õðÈ-Fœ½†ÀõÉ-…¯dÁõÉ-Fœ½#dÂõ8É-…¯COÃõHÉ-Fœ½WOÄõlÉ-…¯Œ_ÅõtÉ-Fœ½PÅõ É-…¯ÿfÆõ°É-Fœ½†ÇõÄÉ-…¯gÈõÔÉ-Fœ½.gÉõøÉ-…¯.ÏÊõÊ-Fœ½BÏËõ,Ê-…¯Œ_Ìõ4Ê-Fœ½ÅPÌõ`Ê-…¯ÿfÍõpÊ-Fœ½†Îõ„Ê-…¯dÏõ”Ê-Fœ½#dÐõ¸Ê-…¯COÑõÈÊ-Fœ½WOÒõìÊ-…¯Œ_ÓõôÊ-Fœ½PÓõ Ë-…¯ÿfÔõ0Ë-Fœ½†ÕõDË-…¯gÖõTË-Fœ½.g×õxË-…¯.ÏØõˆË-Fœ½BÏÙõ¬Ë-…¯QÚõ¼Ë-Fœ½@QÛõàË-…¯Œ_ÜõèË-Fœ½RÜõÌ-…¯iSÝõ$Ì-Fœ½òúÞõ8Ì-…¯ˆFßõHÌ-Fœ½—FàõlÌ-…¯¡Gáõ|Ì-Fœ½µGâõ Ì-…¯nRãõ°Ì-Fœ½šRäõÔÌ-…¯Œ_åõÜÌ-Fœ½mSåõÍ-…¯iSæõÍ-Fœ½òúçõ,Í-…¯Œ_èõ4Í-Fœ½È@èõ`Í-…¯iSéõpÍ-Fœ½òúêõ„Í-…¯Œ_ëõŒÍ-Fœ½È@ëõ¸Í-…¯iSìõÈÍ-Fœ½òúíõÜÍ-…¯Œ_îõäÍ-Fœ½È@îõÎ-…¯iSïõ Î-Fœ½òúðõ4Î-…¯Œ_ñõ<Î-Fœ½È@ñõhÎ-…¯iSòõxÎ-Fœ½òúóõŒÎ-…¯Œ_ôõ”Î-Fœ½È@ôõÀÎ-…¯iSõõÐÎ-Fœ½òúöõäÎ-…¯Œ_÷õìÎ-Fœ½È@÷õÏ-…¯iSøõ(Ï-Fœ½òúùõ<Ï-…¯Œ_úõDÏ-Fœ½È@úõpÏ-…¯iSûõ€Ï-Fœ½òúüõ”Ï-…¯Œ_ýõœÏ-Fœ½È@ýõÈÏ-…¯iSþõØÏ-Fœ½òúÿõìÏ-…¯Œ_öôÏ-Fœ½È@ö Ð-…¯iSö0Ð-Fœ½òúöDÐ-…¯Œ_öLÐ-Fœ½È@öxÐ-…¯iSöˆÐ-Fœ½òúöœÐ-…¯sSö¬Ð-Fœ½‹SöÐÐ-…¯Œ_öØÐ-Fœ½ñAöÑ-…¯iS öÑ-Fœ½òú ö(Ñ-…¯sS ö8Ñ-Fœ½‹S ö\Ñ-…¯Œ_ ödÑ-Fœ½ñA öÑ-…¯iSö Ñ-Fœ½òúö´Ñ-…¯sSöÄÑ-Fœ½‹SöèÑ-…¯Œ_öðÑ-Fœ½ñAöÒ-…¯iSö,Ò-Fœ½òúö@Ò-…¯Œ_öHÒ-Fœ½È@ötÒ-…¯iSö„Ò-Fœ½òúö˜Ò-…¯Œ_ö Ò-Fœ½È@öÌÒ-…¯iSöÜÒ-Fœ½òúöðÒ-…¯Œ_öøÒ-Fœ½È@ö$Ó-…¯iSö4Ó-Fœ½òúöHÓ-…¯Œ_öPÓ-Fœ½È@ö|Ó-…¯iSöŒÓ-Fœ½òú ö Ó-…¯Œ_!ö¨Ó-Fœ½È@!öÔÓ-…¯iS"öäÓ-Fœ½òú#öøÓ-…¯Œ_$öÔ-Fœ½È@$ö,Ô-…¯iS%ö<Ô-Fœ½òú&öPÔ-…¯Œ_'öXÔ-Fœ½È@'ö„Ô-…¯iS(ö”Ô-Fœ½òú)ö¨Ô-…¯Œ_*ö°Ô-Fœ½È@*öÜÔ-…¯iS+öìÔ-Fœ½òú,öÕ-…¯Œ_-öÕ-Fœ½È@-ö4Õ-…¯iS.öDÕ-Fœ½òú/öXÕ-…¯sS0öhÕ-Fœ½‹S1öŒÕ-…¯Œ_2ö”Õ-Fœ½ñA2öÀÕ-…¯iS3öÐÕ-Fœ½òú4öäÕ-…¯Œ_5öìÕ-Fœ½È@5öÖ-…¯iS6ö(Ö-Fœ½òú7ö<Ö-…¯Œ_8öDÖ-Fœ½È@8öpÖ-…¯iS9ö€Ö-Fœ½òú:ö”Ö-…¯Œ_;öœÖ-Fœ½È@;öÈÖ-…¯iS<öØÖ-Fœ½òú=öìÖ-…¯Œ_>öôÖ-Fœ½È@>ö ×-…¯iS?ö0×-Fœ½òú@öD×-…¯Œ_AöL×-Fœ½È@Aöx×-…¯iSBöˆ×-Fœ½òúCöœ×-…¯Œ_Dö¤×-Fœ½È@DöÐ×-…¯ÿfEöà×-Fœ½†Föô×-…¯gGöØ-Fœ½.gHö(Ø-…¯Œ_Iö0Ø-Fœ½bGIö\Ø-…¯ÿfJölØ-Fœ½†Kö€Ø-…¯Œ_LöˆØ-Fœ½ýSLö´Ø-…¯iSMöÄØ-Fœ½òúNöØØ-…¯Œ_OöàØ-Fœ½È@Oö Ù-…¯iSPöÙ-Fœ½òúQö0Ù-…¯Œ_Rö8Ù-Fœ½È@RödÙ-…¯iSSötÙ-Fœ½òúTöˆÙ-…¯Œ_UöÙ-Fœ½È@Uö¼Ù-…¯iSVöÌÙ-Fœ½òúWöàÙ-…¯Œ_XöèÙ-Fœ½È@XöÚ-…¯ÿfYö$Ú-Fœ½†Zö8Ú-…¯Œ_[ö@Ú-Fœ½ýS[ölÚ-…¯iS\ö|Ú-Fœ½òú]öÚ-…¯Œ_^ö˜Ú-Fœ½È@^öÄÚ-…¯ÿf_öÔÚ-Fœ½†`öèÚ-…¯gaöøÚ-Fœ½.gböÛ-…¯Œ_cö$Û-Fœ½bGcöPÛ-…¯iSdö`Û-Fœ½òúeötÛ-…¯Œ_fö|Û-Fœ½È@fö¨Û-…¯iSgö¸Û-Fœ½òúhöÌÛ-…¯Œ_iöÔÛ-Fœ½È@iöÜ-…¯iSjöÜ-Fœ½òúkö$Ü-…¯Œ_lö,Ü-Fœ½È@löXÜ-…¯iSmöhÜ-Fœ½òúnö|Ü-…¯Œ_oö„Ü-Fœ½È@oö°Ü-…¯iSpöÀÜ-Fœ½òúqöÔÜ-…¯sSröäÜ-Fœ½‹SsöÝ-…¯Œ_töÝ-Fœ½ñAtö<Ý-…¯iSuöLÝ-Fœ½òúvö`Ý-…¯sSwöpÝ-Fœ½‹Sxö”Ý-…¯Œ_yöœÝ-Fœ½ñAyöÈÝ-…¯iSzöØÝ-Fœ½òú{öìÝ-…¯Œ_|öôÝ-Fœ½È@|ö Þ-…¯ÿf}ö0Þ-Fœ½†~öDÞ-…¯döTÞ-Fœ½#d€öxÞ-…¯Œ_ö€Þ-Fœ½UAö¬Þ-…¯ÿf‚ö¼Þ-Fœ½†ƒöÐÞ-…¯d„öàÞ-Fœ½#d…öß-…¯Œ_†ö ß-Fœ½UA†ö8ß-…¯iS‡öHß-Fœ½òúˆö\ß-…¯Œ_‰ödß-Fœ½È@‰öß-…¯iSŠö ß-Fœ½òú‹ö´ß-…¯Œ_Œö¼ß-Fœ½È@Œöèß-…¯iSöøß-Fœ½òúŽö à-…¯Œ_öà-Fœ½È@ö@à-…¯iSöPà-Fœ½òú‘ödà-…¯Œ_’ölà-Fœ½È@’ö˜à-…¯iS“ö¨à-Fœ½òú”ö¼à-…¯Œ_•öÄà-Fœ½È@•öðà-…¯iS–öá-Fœ½òú—öá-…¯Œ_˜öá-Fœ½È@˜öHá-…¯iS™öXá-Fœ½òúšölá-…¯Œ_›ötá-Fœ½È@›ö á-…¯iSœö°á-Fœ½òúöÄá-…¯Œ_žöÌá-Fœ½È@žöøá-…¯iSŸöâ-Fœ½òú öâ-…¯Œ_¡ö$â-Fœ½È@¡öPâ-…¯iS¢ö`â-Fœ½òú£ötâ-…¯Œ_¤ö|â-Fœ½È@¤ö¨â-…¯iS¥ö¸â-Fœ½òú¦öÌâ-…¯Œ_§öÔâ-Fœ½È@§öã-…¯iS¨öã-Fœ½òú©ö$ã-…¯Œ_ªö,ã-Fœ½È@ªöXã-…¯iS«öhã-Fœ½òú¬ö|ã-…¯Œ_­ö„ã-Fœ½È@­ö°ã-…¯iS®öÀã-Fœ½òú¯öÔã-…¯Œ_°öÜã-Fœ½È@°öä-…¯iS±öä-Fœ½òú²ö,ä-…¯Œ_³ö4ä-Fœ½È@³ö`ä-…¯iS´öpä-Fœ½òúµö„ä-…¯Œ_¶öŒä-Fœ½È@¶ö¸ä-…¯iS·öÈä-Fœ½òú¸öÜä-…¯Œ_¹öää-Fœ½È@¹öå-…¯iSºö å-Fœ½òú»ö4å-…¯Œ_¼ö<å-Fœ½È@¼öhå-…¯iS½öxå-Fœ½òú¾öŒå-…¯Œ_¿ö”å-Fœ½È@¿öÀå-…¯iSÀöÐå-Fœ½òúÁöäå-…¯Œ_Âöìå-Fœ½È@Âöæ-…¯iSÃö(æ-Fœ½òúÄö<æ-…¯sSÅöLæ-Fœ½‹SÆöpæ-…¯•SÇö€æ-Fœ½·SÈö¤æ-…¯Œ_Éö¬æ-Fœ½¨BÉöØæ-…¯iSÊöèæ-Fœ½òúËöüæ-…¯sSÌö ç-Fœ½‹SÍö0ç-…¯•SÎö@ç-Fœ½·SÏödç-…¯Œ_Ðölç-Fœ½¨BÐö˜ç-…¯iSÑö¨ç-Fœ½òúÒö¼ç-…¯sSÓöÌç-Fœ½‹SÔöðç-…¯Œ_Õöøç-Fœ½ñAÕö$è-…¯iSÖö4è-Fœ½òú×öHè-…¯Œ_ØöPè-Fœ½È@Øö|è-…¯iSÙöŒè-Fœ½òúÚö è-…¯Œ_Ûö¨è-Fœ½È@ÛöÔè-…¯iSÜöäè-Fœ½òúÝöøè-…¯Œ_Þöé-Fœ½È@Þö,é-…¯iSßö<é-Fœ½òúàöPé-…¯Œ_áöXé-Fœ½È@áö„é-…¯iSâö”é-Fœ½òúãö¨é-…¯Œ_äö°é-Fœ½È@äöÜé-…¯iSåöìé-Fœ½òúæöê-…¯ˆFçöê-Fœ½—Fèö4ê-…¯Œ_éö<ê-Fœ½ŠTéöhê-…¯iSêöxê-Fœ½òúëöŒê-…¯Œ_ìö”ê-Fœ½È@ìöÀê-…¯iSíöÐê-Fœ½òúîöäê-…¯Œ_ïöìê-Fœ½È@ïöë-…¯ÿfðö(ë-Fœ½†ñö<ë-…¯Œ_òöDë-Fœ½ýSòöpë-…¯iSóö€ë-Fœ½òúôö”ë-…¯Œ_õöœë-Fœ½È@õöÈë-…¯iSööØë-Fœ½òú÷öìë-…¯Œ_øöôë-Fœ½È@øö ì-…¯iSùö0ì-Fœ½òúúöDì-…¯Œ_ûöLì-Fœ½È@ûöxì-…¯iSüöˆì-Fœ½òúýöœì-…¯Œ_þö¤ì-Fœ½È@þöÐì-…¯iSÿöàì-Fœ½òú÷ôì-…¯Œ_÷üì-Fœ½È@÷(í-…¯iS÷8í-Fœ½òú÷Lí-…¯sS÷\í-Fœ½‹S÷€í-…¯Œ_÷ˆí-Fœ½ñA÷´í-…¯iS÷Äí-Fœ½òú÷Øí-…¯Œ_ ÷àí-Fœ½È@ ÷ î-…¯iS ÷î-Fœ½òú ÷0î-…¯Œ_ ÷8î-Fœ½È@ ÷dî-…¯ÿf ÷tî-Fœ½†÷ˆî-…¯Œ_÷î-Fœ½ýS÷¼î-…¯iS÷Ìî-Fœ½òú÷àî-…¯Œ_÷èî-Fœ½È@÷ï-…¯iS÷$ï-Fœ½òú÷8ï-…¯Œ_÷@ï-Fœ½È@÷lï-…¯iS÷|ï-Fœ½òú÷ï-…¯Œ_÷˜ï-Fœ½È@÷Äï-…¯iS÷Ôï-Fœ½òú÷èï-…¯sS÷øï-Fœ½‹S÷ð-…¯•S÷,ð-Fœ½·S÷Pð-…¯Œ_÷Xð-Fœ½¨B÷„ð-…¯iS ÷”ð-Fœ½òú!÷¨ð-…¯Œ_"÷°ð-Fœ½È@"÷Üð-…¯iS#÷ìð-Fœ½òú$÷ñ-…¯Œ_%÷ñ-Fœ½È@%÷4ñ-…¯iS&÷Dñ-Fœ½òú'÷Xñ-…¯Œ_(÷`ñ-Fœ½È@(÷Œñ-…¯iS)÷œñ-Fœ½òú*÷°ñ-…¯Œ_+÷¸ñ-Fœ½È@+÷äñ-…¯iS,÷ôñ-Fœ½òú-÷ò-…¯Œ_.÷ò-Fœ½È@.÷<ò-…¯iS/÷Lò-Fœ½òú0÷`ò-…¯Œ_1÷hò-Fœ½È@1÷”ò-…¯iS2÷¤ò-Fœ½òú3÷¸ò-…¯Œ_4÷Àò-Fœ½È@4÷ìò-…¯iS5÷üò-Fœ½òú6÷ó-…¯Œ_7÷ó-Fœ½È@7÷Dó-…¯iS8÷Tó-Fœ½òú9÷hó-…¯sS:÷xó-Fœ½‹S;÷œó-…¯Œ_<÷¤ó-Fœ½ñA<÷Ðó-…¯iS=÷àó-Fœ½òú>÷ôó-…¯sS?÷ô-Fœ½‹S@÷(ô-…¯Œ_A÷0ô-Fœ½ñAA÷\ô-…¯iSB÷lô-Fœ½òúC÷€ô-…¯sSD÷ô-Fœ½‹SE÷´ô-…¯•SF÷Äô-Fœ½·SG÷èô-…¯Œ_H÷ðô-Fœ½¨BH÷õ-…¯iSI÷,õ-Fœ½òúJ÷@õ-…¯Œ_K÷Hõ-Fœ½È@K÷tõ-…¯iSL÷„õ-Fœ½òúM÷˜õ-…¯Œ_N÷ õ-Fœ½È@N÷Ìõ-…¯iSO÷Üõ-Fœ½òúP÷ðõ-…¯Œ_Q÷øõ-Fœ½È@Q÷$ö-…¯iSR÷4ö-Fœ½òúS÷Hö-…¯Œ_T÷Pö-Fœ½È@T÷|ö-…¯iSU÷Œö-Fœ½òúV÷ ö-…¯Œ_W÷¨ö-Fœ½È@W÷Ôö-…¯iSX÷äö-Fœ½òúY÷øö-…¯Œ_Z÷÷-Fœ½È@Z÷,÷-…¯iS[÷<÷-Fœ½òú\÷P÷-…¯Œ_]÷X÷-Fœ½È@]÷„÷-…¯iS^÷”÷-Fœ½òú_÷¨÷-…¯sS`÷¸÷-Fœ½‹Sa÷Ü÷-…¯Œ_b÷ä÷-Fœ½ñAb÷ø-…¯iSc÷ ø-Fœ½òúd÷4ø-…¯sSe÷Dø-Fœ½‹Sf÷hø-…¯Œ_g÷pø-Fœ½ñAg÷œø-…¯iSh÷¬ø-Fœ½òúi÷Àø-…¯sSj÷Ðø-Fœ½‹Sk÷ôø-…¯Œ_l÷üø-Fœ½ñAl÷(ù-…¯iSm÷8ù-Fœ½òún÷Lù-…¯Œ_o÷Tù-Fœ½È@o÷€ù-…¯iSp÷ù-Fœ½òúq÷¤ù-…¯Œ_r÷¬ù-Fœ½È@r÷Øù-…¯iSs÷èù-Fœ½òút÷üù-…¯Œ_u÷ú-Fœ½È@u÷0ú-…¯iSv÷@ú-Fœ½òúw÷Tú-…¯Œ_x÷\ú-Fœ½È@x÷ˆú-…¯iSy÷˜ú-Fœ½òúz÷¬ú-…¯Œ_{÷´ú-Fœ½È@{÷àú-…¯iS|÷ðú-Fœ½òú}÷û-…¯Œ_~÷ û-Fœ½È@~÷8û-…¯iS÷Hû-Fœ½òú€÷\û-…¯Œ_÷dû-Fœ½È@÷û-…¯iS‚÷ û-Fœ½òúƒ÷´û-…¯Œ_„÷¼û-Fœ½È@„÷èû-…¯ÿf…÷øû-Fœ½††÷ ü-…¯d‡÷ü-Fœ½#dˆ÷@ü-…¯Œ_‰÷Hü-Fœ½UA‰÷tü-…¯iSŠ÷„ü-Fœ½òú‹÷˜ü-…¯Œ_Œ÷ ü-Fœ½È@Œ÷Ìü-…¯iS÷Üü-Fœ½òúŽ÷ðü-…¯sS÷ý-Fœ½‹S÷$ý-…¯Œ_‘÷,ý-Fœ½ñA‘÷Xý-…¯iS’÷hý-Fœ½òú“÷|ý-…¯sS”÷Œý-Fœ½‹S•÷°ý-…¯Œ_–÷¸ý-Fœ½ñA–÷äý-…¯iS—÷ôý-Fœ½òú˜÷þ-…¯sS™÷þ-Fœ½‹Sš÷<þ-…¯•S›÷Lþ-Fœ½·Sœ÷pþ-…¯Œ_÷xþ-Fœ½¨B÷¤þ-…¯iSž÷´þ-Fœ½òúŸ÷Èþ-…¯sS ÷Øþ-Fœ½‹S¡÷üþ-…¯•S¢÷ ÿ-Fœ½·S£÷0ÿ-…¯Œ_¤÷8ÿ-Fœ½¨B¤÷dÿ-…¯iS¥÷tÿ-Fœ½òú¦÷ˆÿ-…¯sS§÷˜ÿ-Fœ½‹S¨÷¼ÿ-…¯•S©÷Ìÿ-Fœ½·Sª÷ðÿ-…¯Œ_«÷øÿ-Fœ½¨B«÷$.…¯iS¬÷4.Fœ½òú­÷H.…¯sS®÷X.Fœ½‹S¯÷|.…¯•S°÷Œ.Fœ½·S±÷°.…¯Œ_²÷¸.Fœ½¨B²÷ä.…¯iS³÷ô.Fœ½òú´÷.…¯sSµ÷.Fœ½‹S¶÷<.…¯Œ_·÷D.Fœ½ñA·÷p.…¯iS¸÷€.Fœ½òú¹÷”.…¯sSº÷¤.Fœ½‹S»÷È.…¯Œ_¼÷Ð.Fœ½ñA¼÷ü.…¯iS½÷ .Fœ½òú¾÷ .…¯Œ_¿÷(.Fœ½È@¿÷T.…¯iSÀ÷d.Fœ½òúÁ÷x.…¯Œ_Â÷€.Fœ½È@Â÷¬.…¯iSÃ÷¼.Fœ½òúÄ÷Ð.…¯sSÅ÷à.Fœ½‹SÆ÷.…¯Œ_Ç÷ .Fœ½ñAÇ÷8.…¯iSÈ÷H.Fœ½òúÉ÷\.…¯sSÊ÷l.Fœ½‹SË÷.…¯Œ_Ì÷˜.Fœ½ñAÌ÷Ä.…¯iSÍ÷Ô.Fœ½òúÎ÷è.…¯sSÏ÷ø.Fœ½‹SÐ÷.…¯•SÑ÷,.Fœ½·SÒ÷P.…¯Œ_Ó÷X.Fœ½¨BÓ÷„.…¯iSÔ÷”.Fœ½òúÕ÷¨.…¯sSÖ÷¸.Fœ½‹S×÷Ü.…¯•SØ÷ì.Fœ½·SÙ÷.…¯Œ_Ú÷.Fœ½¨BÚ÷D.…¯iSÛ÷T.Fœ½òúÜ÷h.…¯sSÝ÷x.Fœ½‹SÞ÷œ.…¯•Sß÷¬.Fœ½·Sà÷Ð.…¯Œ_á÷Ø.Fœ½¨Bá÷.…¯iSâ÷.Fœ½òúã÷(.…¯Œ_ä÷0.Fœ½È@ä÷\.…¯iSå÷l.Fœ½òúæ÷€.…¯Œ_ç÷ˆ.Fœ½È@ç÷´.…¯iSè÷Ä.Fœ½òúé÷Ø.…¯Œ_ê÷à.Fœ½È@ê÷ .…¯iSë÷.Fœ½òúì÷0.…¯Œ_í÷8.Fœ½È@í÷d.…¯iSî÷t.Fœ½òúï÷ˆ.…¯Œ_ð÷.Fœ½È@ð÷¼.…¯iSñ÷Ì.Fœ½òúò÷à.…¯sSó÷ð.Fœ½‹Sô÷.…¯Œ_õ÷.Fœ½ñAõ÷H.…¯iSö÷X.Fœ½òú÷÷l.…¯Œ_ø÷t.Fœ½È@ø÷ .…¯iSù÷°.Fœ½òúú÷Ä.…¯Œ_û÷Ì.Fœ½È@û÷ø.…¯iSü÷ .Fœ½òúý÷ .…¯Œ_þ÷$ .Fœ½È@þ÷P .…¯iSÿ÷` .Fœ½òúøt .…¯sSø„ .Fœ½‹Sø¨ .…¯Œ_ø° .Fœ½ñAøÜ .…¯iSøì .Fœ½òúø .…¯Œ_ø .Fœ½È@ø4 .…¯iSøD .Fœ½òúøX .…¯Œ_ ø` .Fœ½È@ øŒ .…¯iS øœ .Fœ½òú ø° .…¯sS øÀ .Fœ½‹S øä .…¯Œ_øì .Fœ½ñAø .…¯iSø( .Fœ½òúø< .…¯Œ_øD .Fœ½È@øp .…¯iSø€ .Fœ½òúø” .…¯Œ_øœ .Fœ½È@øÈ .…¯iSøØ .Fœ½òúøì .…¯Œ_øô .Fœ½È@ø .…¯iSø0 .Fœ½òúøD .…¯Œ_øL .Fœ½È@øx .…¯iSøˆ .Fœ½òúøœ .…¯Œ_ø¤ .Fœ½È@øÐ .…¯iSøà .Fœ½òúøô .…¯Œ_ øü .Fœ½È@ ø( .…¯iS!ø8 .Fœ½òú"øL .…¯Œ_#øT .Fœ½È@#ø€ .…¯iS$ø .Fœ½òú%ø¤ .…¯Œ_&ø¬ .Fœ½È@&øØ .…¯iS'øè .Fœ½òú(øü .…¯sS)ø .Fœ½‹S*ø0.…¯Œ_+ø8.Fœ½ñA+ød.…¯iS,øt.Fœ½òú-øˆ.…¯Œ_.ø.Fœ½È@.ø¼.…¯iS/øÌ.Fœ½òú0øà.…¯Œ_1øè.Fœ½È@1ø.…¯iS2ø$.Fœ½òú3ø8.…¯Œ_4ø@.Fœ½È@4øl.…¯iS5ø|.Fœ½òú6ø.…¯sS7ø .Fœ½‹S8øÄ.…¯Œ_9øÌ.Fœ½ñA9øø.…¯iS:ø.Fœ½òú;ø.…¯Œ_<ø$.Fœ½È@<øP.…¯iS=ø`.Fœ½òú>øt.…¯Œ_?ø|.Fœ½È@?ø¨.…¯iS@ø¸.Fœ½òúAøÌ.…¯sSBøÜ.Fœ½‹SCø.…¯Œ_Dø.Fœ½ñADø4.…¯iSEøD.Fœ½òúFøX.…¯sSGøh.Fœ½‹SHøŒ.…¯•SIøœ.Fœ½·SJøÀ.…¯Œ_KøÈ.Fœ½¨BKøô.…¯iSLø.Fœ½òúMø.…¯sSNø(.Fœ½‹SOøL.…¯Œ_PøT.Fœ½ñAPø€.…¯iSQø.Fœ½òúRø¤.…¯sSSø´.Fœ½‹STøØ.…¯Œ_Uøà.Fœ½ñAUø .…¯iSVø.Fœ½òúWø0.…¯Œ_Xø8.Fœ½È@Xød.…¯iSYøt.Fœ½òúZøˆ.…¯Œ_[ø.Fœ½È@[ø¼.…¯iS\øÌ.Fœ½òú]øà.…¯Œ_^øè.Fœ½È@^ø.…¯iS_ø$.Fœ½òú`ø8.…¯sSaøH.Fœ½‹Sbøl.…¯Œ_cøt.Fœ½ñAcø .…¯iSdø°.Fœ½òúeøÄ.…¯sSføÔ.Fœ½‹Sgøø.…¯Œ_hø.Fœ½ñAhø,.…¯iSiø<.Fœ½òújøP.…¯sSkø`.Fœ½‹Slø„.…¯Œ_møŒ.Fœ½ñAmø¸.…¯iSnøÈ.Fœ½òúoøÜ.…¯sSpøì.Fœ½‹Sqø.…¯Œ_rø.Fœ½ñArøD.…¯iSsøT.Fœ½òútøh.…¯sSuøx.Fœ½‹Svøœ.…¯Œ_wø¤.Fœ½ñAwøÐ.…¯iSxøà.Fœ½òúyøô.…¯sSzø.Fœ½‹S{ø(.…¯Œ_|ø0.Fœ½ñA|ø\.…¯iS}øl.Fœ½òú~ø€.…¯sSø.Fœ½‹S€ø´.…¯•SøÄ.Fœ½·S‚øè.…¯Œ_ƒøð.Fœ½¨Bƒø.…¯iS„ø,.Fœ½òú…ø@.…¯Œ_†øH.Fœ½È@†øt.…¯iS‡ø„.Fœ½òúˆø˜.…¯Œ_‰ø .Fœ½È@‰øÌ.…¯iSŠøÜ.Fœ½òú‹øð.…¯sSŒø.Fœ½‹Sø$.…¯Œ_Žø,.Fœ½ñAŽøX.…¯iSøh.Fœ½òúø|.…¯sS‘øŒ.Fœ½‹S’ø°.…¯Œ_“ø¸.Fœ½ñA“øä.…¯iS”øô.Fœ½òú•ø.…¯sS–ø.Fœ½‹S—ø<.…¯Œ_˜øD.Fœ½ñA˜øp.…¯iS™ø€.Fœ½òúšø”.…¯sS›ø¤.Fœ½‹SœøÈ.…¯•SøØ.Fœ½·Sžøü.…¯Œ_Ÿø.Fœ½¨BŸø0.…¯iS ø@.Fœ½òú¡øT.…¯sS¢ød.Fœ½‹S£øˆ.…¯Œ_¤ø.Fœ½ñA¤ø¼.…¯iS¥øÌ.Fœ½òú¦øà.…¯sS§øð.Fœ½‹S¨ø.…¯Œ_©ø.Fœ½ñA©øH.…¯iSªøX.Fœ½òú«øl.…¯ˆF¬ø|.Fœ½—F­ø .…¯¡G®ø°.Fœ½µG¯øÔ.…¯nR°øä.Fœ½šR±ø.…¯Œ_²ø.Fœ½mS²ø<.…¯iS³øL.Fœ½òú´ø`.…¯sSµøp.Fœ½‹S¶ø”.…¯Œ_·øœ.Fœ½ñA·øÈ.…¯iS¸øØ.Fœ½òú¹øì.…¯Œ_ºøô.Fœ½È@ºø .…¯iS»ø0.Fœ½òú¼øD.…¯sS½øT.Fœ½‹S¾øx.…¯Œ_¿ø€.Fœ½ñA¿ø¬.…¯iSÀø¼.Fœ½òúÁøÐ.…¯sSÂøà.Fœ½‹SÃø.…¯Œ_Äø .Fœ½ñAÄø8.…¯iSÅøH.Fœ½òúÆø\.…¯sSÇøl.Fœ½‹SÈø.…¯•SÉø .Fœ½·SÊøÄ.…¯;ÂËøÔ.Fœ½TÂÌøø.…¯Œ_Íø .Fœ½^UÍø, .…¯iSÎø< .Fœ½òúÏøP .…¯Œ_ÐøX .Fœ½È@Ðø„ .…¯iSÑø” .Fœ½òúÒø¨ .…¯sSÓø¸ .Fœ½‹SÔøÜ .…¯Œ_Õøä .Fœ½ñAÕø!.…¯iSÖø !.Fœ½òú×ø4!.…¯Œ_Øøù ,.Fœ½òú?ù´,.…¯Œ_@ù¼,.Fœ½È@@ùè,.…¯iSAùø,.Fœ½òúBù -.…¯sSCù-.Fœ½‹SDù@-.…¯Œ_EùH-.Fœ½ñAEùt-.…¯iSFù„-.Fœ½òúGù˜-.…¯sSHù¨-.Fœ½‹SIùÌ-.…¯•SJùÜ-.Fœ½·SKù..…¯Œ_Lù..Fœ½¨BLù4..…¯iSMùD..Fœ½òúNùX..…¯sSOùh..Fœ½‹SPùŒ..…¯•SQùœ..Fœ½·SRùÀ..…¯Œ_SùÈ..Fœ½¨BSùô..…¯iSTù/.Fœ½òúUù/.…¯Œ_Vù /.Fœ½È@VùL/.…¯iSWù\/.Fœ½òúXùp/.…¯sSYù€/.Fœ½‹SZù¤/.…¯Œ_[ù¬/.Fœ½ñA[ùØ/.…¯iS\ùè/.Fœ½òú]ùü/.…¯sS^ù 0.Fœ½‹S_ù00.…¯Œ_`ù80.Fœ½ñA`ùd0.…¯iSaùt0.Fœ½òúbùˆ0.…¯sScù˜0.Fœ½‹Sdù¼0.…¯Œ_eùÄ0.Fœ½ñAeùð0.…¯ÿffù1.Fœ½†gù1.…¯ghù$1.Fœ½.giùH1.…¯.ÏjùX1.Fœ½BÏkù|1.…¯Œ_lù„1.Fœ½ÅPlù°1.…¯iSmùÀ1.Fœ½òúnùÔ1.…¯Œ_oùÜ1.Fœ½È@où2.…¯ÿfpù2.Fœ½†qù,2.…¯grù<2.Fœ½.gsù`2.…¯.Ïtùp2.Fœ½BÏuù”2.…¯Œ_vùœ2.Fœ½ÅPvùÈ2.…¯iSwùØ2.Fœ½òúxùì2.…¯sSyùü2.Fœ½‹Szù 3.…¯Œ_{ù(3.Fœ½ñA{ùT3.…¯iS|ùd3.Fœ½òú}ùx3.…¯Œ_~ù€3.Fœ½È@~ù¬3.…¯iSù¼3.Fœ½òú€ùÐ3.…¯sSùà3.Fœ½‹S‚ù4.…¯Œ_ƒù 4.Fœ½ñAƒù84.…¯iS„ùH4.Fœ½òú…ù\4.…¯Œ_†ùd4.Fœ½È@†ù4.…¯iS‡ù 4.Fœ½òúˆù´4.…¯Œ_‰ù¼4.Fœ½È@‰ùè4.…¯iSŠùø4.Fœ½òú‹ù 5.…¯Œ_Œù5.Fœ½È@Œù@5.…¯iSùP5.Fœ½òúŽùd5.…¯Œ_ùl5.Fœ½È@ù˜5.…¯ÿfù¨5.Fœ½†‘ù¼5.…¯g’ùÌ5.Fœ½.g“ùð5.…¯ƒº”ù6.Fœ½—º•ù$6.…¯Œ_–ù,6.Fœ½?V–ùX6.…¯iS—ùh6.Fœ½òú˜ù|6.…¯Œ_™ù„6.Fœ½È@™ù°6.…¯iSšùÀ6.Fœ½òú›ùÔ6.…¯sSœùä6.Fœ½‹Sù7.…¯Œ_žù7.Fœ½ñAžù<7.…¯ÿfŸùL7.Fœ½† ù`7.…¯Œ_¡ùh7.Fœ½ýS¡ù”7.…¯iS¢ù¤7.Fœ½òú£ù¸7.…¯Œ_¤ùÀ7.Fœ½È@¤ùì7.…¯iS¥ùü7.Fœ½òú¦ù8.…¯sS§ù 8.Fœ½‹S¨ùD8.…¯Œ_©ùL8.Fœ½ñA©ùx8.…¯ÿfªùˆ8.Fœ½†«ùœ8.…¯d¬ù¬8.Fœ½#d­ùÐ8.…¯Œ_®ùØ8.Fœ½UA®ù9.…¯iS¯ù9.Fœ½òú°ù(9.…¯Œ_±ù09.Fœ½È@±ù\9.…¯iS²ùl9.Fœ½òú³ù€9.…¯sS´ù9.Fœ½‹Sµù´9.…¯Œ_¶ù¼9.Fœ½ñA¶ùè9.…¯iS·ùø9.Fœ½òú¸ù :.…¯sS¹ù:.Fœ½‹Sºù@:.…¯•S»ùP:.Fœ½·S¼ùt:.…¯Œ_½ù|:.Fœ½¨B½ù¨:.…¯iS¾ù¸:.Fœ½òú¿ùÌ:.…¯Œ_ÀùÔ:.Fœ½È@Àù;.…¯](Áù;.Fœ½R¦Ãù0;.…¯q(ÄùP;.Fœ½‘(Çù€;.…¯™(Éù ;.Fœ½ (ÌùÌ;.…¯VÏùü;.Fؤ§VÔù¼<.FskŒ_Õù`=.Fê¤ßkÕù”=.Fù¤ÁmÕù =.F ¥±VÕùA±e±e±e±e±e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±ð²e±e±e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±e±ð²e±ð²e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±ð²e±ð²e±e±ð²e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»Ö½Ù½e±ð²§»e±ð²§»Ö½Ù½C¾F¾e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±e±e±e±ð²e±e±e±e±e±e±e±e±e±e±ð²e±ð²§»e±ð²§»e±e±e±e±e±e±e±ð²e±e±ð²e±ð²e±ð²e±ð²e±ð²§»e±ð²§»e±e±e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±e±ð²e±ð²e±e±e±e±e±e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²§»e±ð²§»e±ð²e±ð²e±e±e±e±ð²§»e±e±e±e±ð²e±ð²e±ð²e±ð²§»e±e±e±e±ð²e±e±e±e±e±ð²e±e±e±e±e±e±ð²§»e±e±e±e±e±e±e±e±e±e±e±ð²e±e±e±ð²e±e±e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²§»e±ð²§»e±e±e±e±e±e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±e±ð²e±ð²e±e±e±ð²§»e±e±ð²§»e±ð²§»e±ð²§»Ö½e±ð²§»Ö½e±ð²§»Ö½Ù½e±ð²§»Ö½e±ð²§»Ö½e±ð²§»Ö½e±ð²§»e±ð²§»e±ð²§»e±ð²§»Ö½e±ð²§»Ö½e±e±e±e±e±e±e±e±e±e±e±ð²e±ð²e±ð²e±e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±e±e±ð²e±e±e±e±e±e±e±e±ð²e±e±e±e±e±ð²e±ð²e±e±ð²e±ð²e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±e±ð²§»e±ð²§»e±ð²e±e±e±e±e±e±ð²e±e±e±e±e±e±e±e±e±ð²e±e±e±e±e±e±e±ð²§»e±e±e±e±e±e±e±e±e±ð²e±ð²e±ð²§»e±e±e±e±e±e±e±e±ð²e±ð²e±ð²e±e±e±e±e±e±e±e±e±ð²e±e±ð²e±ð²e±ð²§»e±ð²§»e±ð²§»e±ð²§»e±ð²e±ð²e±e±e±ð²e±ð²e±ð²§»e±ð²§»e±ð²§»e±e±e±e±e±e±ð²e±e±e±e±ð²e±e±e±ð²e±e±e±e±e±e±e±e±e±ð²e±e±e±e±ð²e±e±e±ð²e±ð²§»e±ð²e±ð²e±e±e±e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²§»e±e±e±ð²e±ð²e±ð²e±ð²§»e±ð²e±ð²e±ð²§»Ö½e±ð²e±e±ð²e±ð²e±ð²§»Ö½e±e±ð²e±e±e±e±ð²§»e±ð²e±ð²e±ð²e±ð²e±ð²e±ð²e±e±ð²§»Ö½e±ð²e±e±ð²e±e±e±ð²§»Ö½e±e±e±e±e±e±e±e±ð²e±ð²§»e±ð²§»e±e±ð²e±ð²e±ð²e±ð²§»e±e±ð²§»e±ð²e±e±ð²e±e±e±e±e±ð²§»e±e±ð²e±e±e±ð²e±ð²e±e±ð²e±ð²§»e±L„LˆLâL&MâLâLˆLŒMM’MâL—M´MNŒMSNŒMZOZOæOPæOPPZOZOPPPœP¢P¨PœP¢P¨PÁPÇPÍPœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPœP¢P¨PPPPåSùS TT(T7TDTOT ZT fT pT T°T½TÈTÛTðTPPPæOæOPæOÙVéVWWWPPÝWA±A±ðXðXðXðXðXðXÒYA±ÙVaZ´M|Z€Z†ZÒZßZ€Z†Z[¼[ßZ[¼l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPR\`\l\G\ÒYŒ\ÙVÙVÙVa]ž]‘]±]|]l]©]7^B^P^[^g^{^‘^§^ ¸^ ¾^ Ø^ õ^ _1_<_I_öaÒYüaÙV+bÙVsbÊbÏbÏbíbÏbc&c(c&c&c(c&caZÆcaZ&c&c&c&c(c&csbsbðXcðXccÓecsbsbsb|ZgœP¢P¨PÁPœP¢P¨PÁPÏbrhÏbsbsbsbsbaZsb’h’h’h’hšbA±šbA±šbA±šbA±šbA±šbA±šbA±&c&c>iÏbsbÏb{iši³i¹isb|ZM´M¿iœP¢P¨PÁPÇPœP¢P¨PÁPÇPÏbrhÏbcðXcaZaZaZaZþiÆcjjaZÆcaZ(c"j2j2jaZcccÏb{iÏbCj>iRjUj¿i”jWj·Š]jPPPæOæOPæOÙVA±õjûjÙVPP”j”jk!kPPPæOæOPæO+bMA±|Z·Š”jÙVMÙVA±sbsbõkPPýkýkbl;lUj[l+lIl³i;lUjbl;lUjilaZ;lUj+lIlaZQm^mæOPæOPPäW”jaZìŠaZìŠaZìŠaZìŠaZìŠaZaZìŠaZInìŠaZìŠaZìŠaZŸnìŠZOZOæOPæOPPZOZOPP-o:ooƒo½o½o½o½o”j½osb.p½o.p½o.p½o”j.p½o”j.p½o.p½oPpXp-omp:o»pÈpÞpòpq ƒo½o½o½o”j½o{i{i•q•q1rArSrer&c´r”j”j”j”j²sõjOt¾r²snt{t¾r²snt{t²snt¾r{t²s°t²s°t²sÍt²s²s²suPPPæOæOPæOPP}v†vv˜v¤v®v©]·vPPPæOæOPæOwww"w³iwww"wPPUjaZüwUjaZxUjaZ0z;zGzRz\zizmzwzPPPæOæOPæOPPÒYâz4{ìzûzG{G{z{{–{œ{»{¿{Ï{Õ{»{û{Ï{Õ{|aZ|»{ûjÕ{|»{Õ{@|}vs|’|uPPPæOæOPæOPPŒL¦«ìŠL—ŒL¦«ìŠL—Ujd€p€„€`:N(guPPPæOæOPæOPPuPPPæOæOPæOPPœP¢PZOZOæOPæOPPœP¢PZOZOPPPuœP¢PZOæOPæOPPœP¢PZOPP[l½„ÄÒ„ì„W.…³i·ŠZOœP¢PPPPæOæOPæOPPZOœP¢PPPPuœP¢PZOZOPPPæOæOPæOPPœP¢PZOZOPPPZOZOPPPæOæOPæOPPL«l[„€MMM¿ˆUjʈψÕˆ܈©]L†‰¢‰ª‰PPPæOæOPæOPPª‰&Š+Š6ŠLŠ¿ˆUjʈψuZOZOPPPæOæOPæOPPZOZOPPZOœP¢PZOœP¢PPPuZOœP¢PZOœP¢PPPuPPPæOæOPæOPPuZOZOPçŽMíŽðŽéŽóŽUjgŸµq}ƒ¡  0 “ Õˆ ܈VqW…³iW.…W…ïW…ïW… ‘W…-‘ïiz1‘T‘v‘”‘ψWÌ‘”‘Ý‘’ÓeQ’W”‘W‚’œ’”‘¡’W‚’œ’á’q“%“W…‚’”‘Ý‘ ZOqW.…ψ¡“ýk‚•’•£•²•Ó•ì•õ•æOPæO–&––&––&–PP[l»–q—s|ï—s|ï ——s|ï—s|ï—s|ï —)—xaZZOæOPæOPPZOPPPZOZOZOZO¢˜4{™b+™bb4{™bN™4{™bZ™V4{™‰™™™bbbb4{bb¢˜¢˜4{™b4{™bb+™b4{bbbì„4{Ý›™bZ™V4{™‰™4{™‰™™™b¹i|œšœ œ4{™b4{™b™£™£ÇÐÚäðý žž £+ž4{™Mždžä££­ždžÛžðÇäçž­žŸéœŸ+Ÿ<ŸSŸiŸ £ {Ÿ­žŸéœŸ£ÚZ b ÇÇÚ´ Ä Z £ÇÚÇZ ´ .pçžÚÇZ ´ .pÚÚÇÚØ¡Ÿ~¢£{Ÿ³i”j”j³i³i³i³iŸ~¢£{ŸI£R£^£j£v£‚£‰£™üwI£R£^£j£v£‚£‰£™sbüwI£™£[läI££ttä™/¤™5¤+ž4{ÓeÓe/¤™Óe™:¤ÙVUj:¤/¤D¤D¤™dž+žÇG¤4{W¤³ik¤‚£™q¤L5¤™aZä¹idžÇä:¤:¤¨¤‚£/¤£™³i™Ú¯¤¸¤ͤФ夥#¥¨¤‚£¿iÚ¿i)¥¿iœP¢P¨PœP¢P¨PPPPæOæOPæOPPZOZOR¥n¥R¥n¥¥˜¥t¥Ÿ¥³i™~¢™Û¥á¥ì¥ðXñ¥ͤФå¤ä¹iÄ ð÷¥Úÿ¥¦¦Uj¦,¦Óeá¥=¦aZWjðX ì¥ G¦ ñ¥ J¦ P¦S¦Y¦\¦ͤФå¤Úÿ¥¦¦UjÐÚb¦šbm¦w¦Ç„¦ަZ ›¦£¦±¦£ÇZ §Ç£¦„¦b§çžÇ„¦£¦b§Ç„¦£¦£¦Ö§Ð£¦ ¨¨%¨çžÐÇ£¦çžÇУ¦Ð§¨Шܨ„¦©¹içŽerÆc玄¦c©l©r©v©©±©r©l©ÇЄ¦sb³i:¤:¤b§á¥UjË©=¦שì¥ͤ Фå¤Ú©sbb§á¥Uj§Óeì¥ñ¥ͤ Фå¤sbÇá©á¥Óe§ì¥ͤФå¤sbÇó©á¥Óe§ì¥ͤФå¤sbM:¤/¤/¤ªUjì¥ðXñ¥ͤФå¤v©Ujv©v©ªUjì¥ðXñ¥ͤФå¤v©v©sb„¦³i„¦ªªv©$ª'ªv©ì¥ͤФ夔j”jL.p§Bo2ª8ªPsb&cÇ ¨ÙVá¥=¦ì¥ͤФ夨ÙVͤФå¤Ð§¨á¥'«?«%¨Ë©=¦ N« § V« ì¥ ͤФå¤Ðá¥\«?«Ë©=¦'«ì¥ ͤ Фå¤Ç„¦:¤:¤p«‹«á¥'«Ë©\«ðXc ¨« ´« G¦ É« ì¥ñ¥J¦ͤФ夥#¥Ì«Ñ«׫ª„¦p«:¤Æc³iШܨý«ì¥ðXñ¥ͤФå¤p«á¥±©¬v©ì¥ñ¥ðX J¦ ͤ Ф处¦©¹i¥#¥Ì«Ñ«¥#¥Ì«Ñ«Ð„¦© ¬¬ì¥ͤФå¤çŽer¬v©¥#¥Ì«Ñ«„¦Æc:¤©±©r©l©¬Шì¥ͤ Ф天:¤#¬B¬sb¨¤‚£ÇЄ¦§¨:¤aZÓeaZءڽoÖ¬ÇÚ›¦ðZ Ø¡³ió© <­ K­ ^­ n­ÇÚ›¦<­w­~­ðXì¥ G¦ ñ¥ ͤ Фå¤WjI£Wjk¤‚£‹t–­:¤WjI£Çó©á©©­5¤»­È­L Wj Ì­ Ï­ Ý­ â­è­ì¥ðXñ¥G¦J¦P¦S¦\¦ͤФå¤î­ó­ù­þ­¥#¥Ì«Ñ«î­ó­ù­þ­¥#¥Ì«Ñ«î­ó­ù­þ­¥#¥Ì«Ñ«ÚØ¡®® ®ðXì¥G¦ ñ¥ P¦ J¦ Y¦ S¦/®\¦ͤФå¤2®ðXì¥ͤФå¤ÇH®ðXì¥ͤФå¤ÇV®H®o®ì¥ͤФå¤ÚÖ¬‰®ÚÖ¬‰®ÚÖ¬‰®ÚÖ¬‰®Úª‰£Úª‰£Úª‰£.pç®.p¯¯ ¯)¯2¯;¯C¯K¯S¯p¯”jƒ¯Œ¯£¯¼¯® ®Ò¯â¯î¯÷¯°°+°9°H°m°t°{°.pðXì¥ͤФ夯¯ ¯)¯‚°=¦”j° ðX ì¥ G¦ ñ¥ P¦J¦Y¦S¦/®\¦•°›°ž°ͤФå¤;¯C¯K¯S¯ðXì¥ͤФ夌¯p¯ì¥ͤФ夣¯¤°ì¥ͤФ夰°µ°ðXì¥ͤФ夼¯á¥°°µ°¯ì¥ͤФ央 ®Ò¯â¯î¯÷¯°° ðX ì¥ G¦ ñ¥ P¦J¦Y¦S¦/®\¦›°•°¾°ž°Á°İʰͰÓ°Ö°ͤФå¤9°H°ͤФå¤è°ñ°ú°±.pè°ñ°ú°±.pðXì¥G¦ ñ¥ P¦ J¦ Y¦ S¦/®\¦›°•°¾°ž°Á°İʰͰͤФå¤ÙVÙVÙVÙVMM5±ðX5±ðXá¥G¦ì¥ñ¥ͤФå¤k±k±Ú†±ðXÚ†±Ú«±•q´±ÚÄ Ú±â±k±Ú±ò±ø±´±ðÄ ²Ú†±ðXÚ†±²Ú«±•q´±sbsbÚ±ðXÚ±²Ú±ò±ø±´±sbsb"²:¤ÚÇ¿ˆ8²¨¤‚£"²´MÁiÁi´M´¡´©´®´¡´³i4{ì´·v&µwww&µwwwkµnµ‚µ’µÒYŸµ©µ™‚µ»µȵڵǶ¶5¤Ð“<¶çžN™™ȵ‚•ÇÚÐM¶ “ <¶ Õˆ ܈ Z™ÄV»µȵÇ™²ww&µ&µwww&µwwt·"·‹ÒYŸµŸµ-·w¦‚µȵڵǷ’µ4·‹ÒYUjŸ¸óŽUXâLʈŸ¸óŽUjUXZO;¹K¹ʈŸ¸óŽUjUjPsb&cuPPPæOæOPæOPP·"·:¤D¤D¤5¤:¤:¤f¹v¹üw:¤/¤/¤/¤Ä·I£Z™I£Ÿʈ¡¹ŸʈaZŸʈչ๟ʈ’Mò¹ŸZOUjʈµ ºʈŸÿ¥I£¿ˆUjʈ‹tʈ³iŸʈÖ§Jº:¤Ÿʈ:¤:¤sbsb º ºù­þ­¥#¥Ì«Ñ«³i:¤ʈŸaZʈŸaZ¹i|œVºtx³iUj¿ˆʈZOUj¿ˆʈŸZOçžUj¿ˆʈŸZO¼¼·ŠÒ¼û¼çžsbW…ïI£!½¬çž;½!½¬&µ”‘ψŸʈUjaZʈšœʈ œaZʈ&µaZʈ³½&µÕ½aZ:¤&µW”‘õ½œ’¡’&µWõ½œ’³½…M&µR¾g¾n¾u¾&µ%“W”‘õ½¤¾œ’R¾ ±¾ çžæO&µçž¹iÖ§Ô¾Ö§Ô¾¿ˆUjʈψŸZOì¥ðX ñ¥ ͤ Ф夥#¥Ì«:¤:¤:¤:¤¨¤‚£ù­þ­¥#¥Ì«Ñ«WïÚ¾sbsbZOsbqW…³½ï á¾I£Ot·ŠÒ¼/¤;½·ŠI£üwù­þ­¥#¥Ì«Ñ«Wïö¾:¤Ujʈ‚£ý¾sbW…ïI£üwù­þ­¥#¥Ì«Ñ«Wï¿:¤ ¿¿¿ZO:¤sbW…ïI£¿ù­þ­¥#¥Ì«Ñ«W ‘&¿:¤;½W… ‘I£Ot:¤;½T‘ì¥ðXñ¥ͤФå¤v‘-¿:¤v‘7¿V¿:¤”‘¹in¿T‘|œ&µ|œ|¿Uj¨¤‚£¿ý¾|¿Uj¨¤‚£¿ý¾|¿’:¤:¤Óe:¤ˆ¿‹¿:¤Uj¨¤‚£¿ý¾Uj¨¤‚£¿ý¾î­ó­ù­þ­¥#¥Ì«Ñ«“%“W‚’Ž¿ʈšœʈ œaZʈZOaZʈ³½&µZOaZʈ³½&µψ&µ&µ-·&µ-·•¿Õ½aZ:¤œ¿£¿ʈ¿iW.…Ä¿Psb&cÆcÙVðX:¤ù­þ­¥#¥Ì«Ñ«q…ïW;½I£q…ïW;½ǘè¿q…ïW;½î¿ ǘçžq…ïW:¤ÀÀî­ó­ù­þ­¥#¥Ì«Ñ«ï — ÀÀ³i…ï ÀÀ;½I£ ÀÀ;½I£…ï — ÀÀ:¤ù­þ­¥#¥Ì«Ñ«ïW¹i…ïW;½I£…ïW:¤ù­þ­¥#¥Ì«Ñ«ï ÀÀ|œ…ï ÀÀ;½I£…ï ÀÀ:¤î­ó­ù­þ­¥#¥Ì«Ñ«ï©´ ÀÀšœ…ï —©´ ÀÀ;½I£…ï —©´ ÀÀ:¤ œ:¤&µI£:¤&µb:¤:¤:¤šœè¿ÀÀ4{™bI£À ÀÀÀ+™bI£&À-ÀÀbI£4À;ÀÀ4{™bI£BÀIÀm¦w¦î¿I£N™bPÀ]ÀðXì¥G¦ñ¥ ͤ Фå¤ÀN™4{™bZ™VI£Óe:¤´MÀ4{™‰™™™I£oÀbŽ¿ÀbI£ÀbI£œ¿ÀI£ÀbI£bI£&µbOt&µOt&µ:¤&µ:¤‰À&µ:¤&µ:¤&µ:¤À&µ:¤:¤Ÿ¿±À¼ÀÀÀ"²ÓeÔÀÔ¾ûÀÁŸ±À‹tCÁŸ‹tŸbÁUj¬sbŸÔ¾¿ˆUjCÁ¿ˆUjáÁŸCÁÿ¥Â:¿ˆUjÔ¾µçž¿ˆUjÔ¾¿ˆUjµÔÀçž¿ˆUj‹t{i"²k±¿ˆUj‹t¿ˆUjʈ‹tîÂà ÃZOŸ&M:ߢPœP瞟¢PœPI£ZO瞟ZOI£Ÿ®ÃŸψŸZOI£ŸψʈıÀŸʈÿ¥"²ʈ:ÂÄâL"²ʈâLψ-‘"²±Àʈ3ÄðX9Ä"²±ÀʈGÄ"²ʈÂVÄâL"²â±"²¿ˆUjʈoÄ"²ŸʈûÀà¹"²ŸʈÔÀà¹"²ŸʈÄÔ¾šÄ"²Ÿʈ¿"²Ÿʈ¹Ä¿Ä"²±À¿ˆUjʈCÁ"²¿ˆUj‹tŸûÄ"²®Ãçžʈâ±Vº"²±À¿ˆUjʈ‹t¿ˆUjʈ"²‹tCÁÿ¥Ô¾îÂçž‹t±À¿ˆUjʈ‹t¿ˆUjʈ‹tõÅʈ¿ʈ¿ʈZOI£ʈZOʈZOI£ʈZOʈ‹tù­þ­¥#¥ðXðXðX³iCÁÿ¥ÿ¥ÿ¥CÁÿ¥Ÿª‰£â±ŸnÆá¥âLwÆÆ„Æì¥ ͤ Ф夿ˆUjʈ‹tÔ¾ZOZOæOPæOPPÃÆðX:¤:¤:¤•Æšb•Æšb˜ÆŸsb&cPsb&cPŸâLöÆùÆŸZOðX¨¤þÆù­þ­¥#¥ù­þ­¥#¥ðX¨¤sb¨¤ù­þ­¥#¥³isb¨¤ûÄûÄù­þ­¥#¥•ÆûÄMsbw¦w¦ù­þ­¥#¥ù­þ­¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«¨¤/¤ûÄ•q±À¿ˆUjʈ‹tI£üw¿ˆUjʈ‹tI£üw8ÇtxËÇÕˆUjψ¿ˆʈ܈I£Ö§ZOUj¿ˆʈý¾ËÇUjψ¿ˆʈ܈I£ËÇÕˆUjψ¿ˆʈ܈˜MI£üwŸ‹tŸ‹t:¤¿ˆUjʈÕˆ܈:¤È슷Š,ÈW.…NÈ·ŠuÈ·ŠŽÈÈW.…NÈsbW.…·Šsb·Šðȳi·ŠÉÈ)É9ÉçžW.…NÈ·Šœ’vÉ|ɷгiLªÉ²É¾É¹iIÊ|œƒÊÊ玕qÌÊÝÊW.…q·ŠM·ŠM·ŠuÈËðXì¥ͤФ夷ŠsbìŠËW.…·ŠsbË'Ë·Š:¤Msb·ŠðȳitW.…·ŠL3Ë·Š5¤4{5¤5¤"Ìt"Ìt·ŠlÌUj·ŠlÌ º·ŠlÌ º·ŠlÌ º·ŠlÌ º·ŠlÌ º·ŠlÌ º·Šl̹i·ŠlÌÍ·ŠlÌÍ·ŠlÌ-Í·ŠlÌBÍKÍ·ŠlÌBÍt·ŠlÌ|œ·Šl̋ͷŠlÌËÇ·ŠlÌšœ·Šl̽Í;½·Šl̳i;½I£¹i·ŠlÌUjÙÍͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌ º=¦UjͤФ夷ŠlÌÞÍåÍíÍôÍ—ÀðX ì¥ ͤ Ф夷ŠlÌÍtì¥ðXñ¥ͤ Ф夷ŠlÌÍtì¥ðXñ¥ͤ Ф夷ŠlÌ-Íá¥Ît=¦ Î ì¥ ðX ñ¥ G¦ J¦ͤФ夷ŠlÌBÍKÍ=¦tͤФ夷ŠlÌtçž·ŠlÌ Îçžsb:¤·ŠlÌ᥷ŠlÌÎçž·ŠlÌ Îçž·ŠlÌ ÎÎçž·ŠlÌ Îçž·ŠlÌÎçž·ŠlÌÎ Îçž·ŠlÌÎ ÎÎçž·ŠlÌ Îçž·ŠlÌ ÎÎçž·ŠlÌtçž·ŠlÌ᥷ŠlÌ-Íçž·ŠlÌtçž·ŠlÌ᥷ŠlÌ-Íçž·ŠlÌt-Íçž·ŠlÌtçž·ŠlÌ-Íçž·ŠlÌt-Íçž·ŠlÌÎt-Íçž·ŠlÌÎçž·ŠlÌ)ÎÎçž·ŠlÌ)ÎÎ Îçž·ŠlÌ/Î Îçž·ŠlÌ5Îçž·ŠlÌ5Î Îçž·ŠlÌ5Î ÎÎçž·ŠlÌÍçž·ŠlÌ Îçž·ŠlÌÍ Îçž·ŠlÌÎçž·ŠlÌÎ Îçž·ŠlÌ Îçž·ŠlÌ ÎÎçž·ŠlÌBÍtðXì¥ͤФ夷ŠlÌõÅ;ÎUj=¦EÎש ì¥ ðX ñ¥ J¦ G¦S¦ͤФ夷ŠlÌUj·ŠlÌ‹Íçž·ŠlÌËÇ=¦UjPÎVÎaÎ È hÎ ש sÎ ‹ty΄΋ΎΑÎ;ÎRjœÎðXì¥ñ¥G¦J¦S¦P¦\¦•°Y¦ ž°!ͤ"Ф夷ŠlÌs΋tì¥ðXñ¥ͤ Ф夷Šl̽Ísbì¥ðXñ¥ͤ Фå¤;½·ŠI£ŸÎ œè¿šbåÍtçžt·ŠÉåÍÏÏ·ŠÉÈçž·ŠÉȯÏW.…ÅÏW.…ÅÏâ±â±tÁiâ±:¤:¤:¤:¤šbÁi³išbâ±Ái¹i:¤:¤·ŠðXì¥ͤФå¤ÐÐaZsÎMÐQÐfЈÐLˆÐL-‘ˆÐ¶ÐuȦ¿ÐUjÉÐp€ˆÐ¶Ðⱦ¿ÐUjÉÐp€ˆÐuȦ¿ÐUjˆÐⱦ¿ÐUjˆÐѳiˆÐ¶ÐõÅUjuÈ5Ñ瞈ÐQѶЈÐQÑÚ±QÑsΈÐQѶÐsΈЋt-‘ÈѽÍaZsbÐÐ:¤aZsÎ:¤•Ƴiù­þ­¥#¥Ì«Ñ«ˆÐѳiˆÐñÑá¥â±fÐì¥ͤФ夈ÐñÑá¥Ujâ±ì¥ͤФ夈Ð÷Ñá¥Ujâ±ì¥ͤФ夈ÐQѶйiˆÐQÑ‹Í/¤ÐÐ/¤QÑ|œˆÐQѶКœˆÐQÑ—³išbA±šbA±‹Î王ÎçŽ ¬ìŠË·Š'Ëçž·Š^ÒdÒiÒË'ËW.…·ŠsbË™ÒW.…·Š9É•q™ÒW.…·Š9É•q³i™Ò·Š•qØÒæÒïÒ™Ò•qtÓÉçž™ÒW.…·Š9É•qÈ™ÒW.…·Š9É•qlÓ™ÒW.…·Š9É•q¹iW.…·ŠUj™ÒW.…·Š9É•qlÓUj™ÒW.…·Š9É•q™ÒW.…·Š9É•qA±W.…ÅÏ™ÒuZOZOZOZOZOZOZOZOZOZOZOZOZOZOPPPPPPP@ÕDÕ)É@ÕÈDÕ)ÉËÇ)ÉGÕ)É`ÕcÕrÕ€Õ‰Õ’Õ€Õ™ÕŸÕ¨Õ ¬ËI£·Š:¤/¤W.…·ŠsbË'ËW.…·ŠW.…·Š¹ÕW.…·Š¹ÕÀÕsbË'Ë™ÒW.…·Š9É•q¹i™ÒW.…·Š9É•qA±™ÒW.…·Š9É•qsbÇÕ•qsbÚÕ•qsb™ÒW.…·Š9É•qÚÕÇÕ ËÇ îÕUj™ÒW.…·Š9É•qÚÕÇÕËÇ™ÒW.…·Š9É•qsb™ÒW.…·Š9É•qÈ™ÒW.…·Š9É•qA±ÉsbÉsb™Ò·ŠÙÍ•qÉôÕûÕÈ™Ò·Š•qûÕæÒI£™Ò·Š•qôÕûÕçž™Ò·Š•qÖÈI£™Ò·Š•qÖÈçž/¤™Ò·ŠÖÓe™Ò·ŠÙÍ•qÉïÒôÕØÒ tÈ™Ò·Š•qïÒØÒæÒI£™Ò·Š•qïÒôÕØÒ瞙ҷŠÙÍ•qÉÖïÒôÕ Ö t瞙ҷŠÙÍ•qÉÖïÒᥙҷŠÙÍ•qÉÖ÷ÑïÒ瞙ҷŠÙÍ•qÉÖ÷ÑïÒ瞙ҷŠÙÍ•qÉÖ÷ÑïÒçž™Òw¦³iÇÕ•qÉâL#ÖPÎ*Ö=¦ È 6Ö A± ᥠ>Ö±ì¥ñ¥J¦ͤФ夙ÒW.…·Š9É•qsb™ÒW.…·Š9É•qsb™ÒW.…·Š9É•qÉEÖ åÍ ͤ Фå¤ÇÕ•qsbÇÕ•qÉåÍXÖðXì¥ͤ Ф夙ÒW.…·Š9É•qsb™ÒW.…·Š9É•qÉEÖ åÍ ͤ Фå¤ÉgÖrÖåÍ=¦sbͤФå¤ÉsbÉ{ÖåÍͤФå¤ÉsbÉ{ÖrÖåÍðXì¥ͤФ夙ÒW.…·Š9É•qÈÉ ÇÕ ÙÍ îÕt™ÒW.…·Š9É•qlÓUj¹i|œ™ÒW.…·Š9É•q‡ÖŒÖI£™ÒW.…·Š9É•qlÓ‘Ö:¤sb™ÒW.…·Š9É•qlÓ‘Ö¯Ö™Ò¯ÏUjšœ™Ò¾ÖÏÖ¯Ö:¤ œ™ÒW.…·Š9ÉßÖ¯Ö¾Ö •q =¦ ÏÖ ïÖ lÓVÎÿÖhίÏUjðXì¥ͤФ夙ÒW.…·Š9É•qÈ™ÒW.…·Š9É•qA±W.…·ŠUj×™ÒlÓÉ•q¯ÏåÍìŠI£™ÒÉ•q¯ÏåÍìŠI£ÇÕ•qsbè¿™ÒW.…·Š9É•qsbçž™ÒW.…·Š9É•qÈÉ•qsb×åÍ=¦ͤФå¤W.…·ŠÉ•q`Õ™ÒW.…·Š•qÉ`Õ™ÒW.…·Š9É•qA±™ÒW.…·Š9É•q³i,×sbŒ5áz{ÛâA±åâðâ[¼4·ã[¼’M9ãã’M {ÒY¨¤‚£‰£¨¤‚£‰£¨¤‚£‰£3^Œ&µPçž&µPçž&µSåçž&µSåÙVçž&µçž&µPçžsbI£sb‹Ìå³i|ZÙV|ZÙV|í£:¤&µ»{ûjÕ{Ï{&µ»{Õ{Ï{æ+æLæRæ[¼&µLæ³i&µ+æ[¼¡æ+æ[¼&µLæ[¼Læ+æ¹i&µLæ[¼”jZOZOæOPæOPPZOZOPPuZOœP¢PZOZOZOZOœP¢PZOZOZOPPPPPuZOœP¢PZOZOœP¢PZOPPPRæ¡æ¡æaZaZLæ&µLæö顿öéöéaZêI£aZ êI£&µLæ[¼Aê|œ&µLæ[¼AêçžÙVÇww4{ÙV¥#¥Ì«Ñ«ZOZOPPPæOæOPæOPPZOZOPPP4{uí‰íPPPæOæOPæOPPù­þ­¥#¥Ì«Ñ«M¶ÐÚǤíªíµí[l:¤Ò¼ªîÇäwwwwttäÍîÓîä³iÇÓîðýdžÛžjïä Oïðð4{+™LñÛžañÓîÓ•²•sbDÕ4{·ñÒñ4{Þñ’Õ4{ò³iTòZòbòjòrò˜ò´MUjÖ§©´:¤/¤&µäÓeòì¥ͤФå¤&µ:¤&µ:¤&µ:¤&µ³i&µTò:¤&µ˜ò5¤&µ¡ò¡ò|œÓe:¤sbsb&µÐ¯òì¥ðXñ¥ͤФ夲ò:¤:¤µòÂò:¤™ÌòÂòá¥=¦ÔòÝòïò ì¥ ñ¥ ͤ Фå¤Ì«Ñ«wŸsb̫ѫwŸsb&µOt&µóTò:¤äI£&µjò½„óäTòçž&µäaZÆc¡æFóÆc¡æYóÆcx󡿯cïI£ïÎÂóFóÂóFóÂóðóÂóðóðóFóðóYóðóÈÂóðóÂóðóÂóYóÂóFóÂóFó+™Âóâ±­ôÂóâ±ÏôÏôêôÏôÂóÈÂóÈ,õ9õFõYóJõ,õ9õFõFóJõnõ,õ9õ‚õâ±–õ¥õÂóÈõâ±ÂóèõFóÆcÂóFó ö+™Âóèõ‚õFóÆcÂóèõ‚õYóÆcVöÂóèõÆciöÂóVööÂóŒöVöÂóVöÂóI£VöÂóLÂóLÂóL+™Âó½„÷L½„Ræ÷LLZOZOPPPæOæOPæO³iPPœP¢PœP¢P¨PÁPœP¢P¨PÁPœP¢PœP¢P¨PÁPœP¢P¨PÁPPPPuœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPPPPPP³i¹i¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«|œšœ¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«ZOZOZOZOPP³i¹iœP¢PœP¢PœP¢PœP¢PPP+ú¡æÈÆc/¤³iÈÆcuZOZOZOPPPæOæOPæOPPZOZOZOPPPΜP¢PœP¢P¨PœP¢PœP¢P¨PPPP³i¹i|œ¥#¥Ì«Ñ«Êbœý±ýÊb+™Óý+™”jaZ´M+™&µM&µçžÓý´M³iìý:¤:¤ZOZOZOZOPPuœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢PPPPPî­ó­ù­þ­¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«¥#¥Ì«Ñ«uœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P"jœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PPPPP{i:¤xóJõ¥#¥Ì«Ñ«Jâ±ê¥#¥Ì«Ñ«:¤ðó:¤ðóÈÆcMðó:¤¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«ÏôÆc:¤³iâ±”jTFõ:¤ÙV:¤â±”jTFõM”jFõ:¤ÙV:¤,õ9õFõÈJõ/¤Vö³iZ½„_I£kçžÂóèõFóÆcvâ±Z ö ‰+™ œÂóZ+™I£ÂóèõFóvâ±Z‰Æc+™À• ÀÂóèõFóvâ±Z‰Æc+™Z[I£ÂóZI£Z[I£Âóèõ‚õÈÆc/¤Vö:¤³iš¡«Æc+™Vö³i"jÂóVö³iVö¹i"j´Vö|œVöÂóL³isb½„÷Æc:¤ù­þ­¥#¥Ì«Ñ«ÈÈLVöLVö,õ9õˆvˆ½„ˆvˆÆc½„ˆvˆ½„ˆvˆ½„v½„ˆMȈšbMȈMȈMÈðXˆvˆ½„ˆvˆ½„ˆMȈMÈv+™Z¥#¥Ì«Ñ«¤Mì¥ͤФ夤»Mì¥ͤФå¤',27=BÀÀî­ó­ù­þ­¥#¥Ì«Ñ«&µ&µ"·HHx³i¹i”jÓeÙV™™™Ë™Ë™Ë™Ë™Ë™Ë™Ë™Ë™ƒçž™ƒ™´M™¸´M™™™™™™™™™™™™™™œ™É™™™™™™™™™™™™™™™™™™™É2 ’Mœ™™™ÇZ Ø ÈÇW á¥çžçžÇW Ú¬ ³ ÐÚÇÚè Z î ø ¬ §  3 ÐÚè Ä M X l ÇØ¡€  ˜  ¶ пi´MaZ^ aZ̫ѫ™´M™´M™Ësb&csb&csb&csb&c™ÙVË™ÙV™ÙV™ÙVË™´M™´M™´M™´M™´M™´M™´M™´M™´M™´M™I£™I£™´M™´M™´M™I£™´M™´M™‚£‰£™´M™‚£™‚£™Ë™I£™Ë™´M™´M™´M™ÙV™I£™I£³iÉ™I£™´M™³i™´MI£™´M™I£™Ë™ƒ™ͤФ夙´M™I£™I£™ÙV™I£™ÙV™I£I£™I£™I£™I£™I£™ðXÓeÙV™´M™´M™ðXÓeÙV™´M™ðXÓeÙV™I£™I£™I£™I£™I£™I£™ÙV™ÙV™I£™³i™I£™´M™´M™´M™I£™I£™Ë™I£™Ë™Ë™Ë™´M™I£™I£™´M™I£™´M™I£I£™I£™I£™I£™I£™³i™¹i™|œ™šœI£™´M™ œ™è¿™À™Ä¿™I£™I£™I£™ÙV™´M™I£™I£™I£™ˆ ™´M™‚£™‚£‰£™I£™´M™I£™ˆ ™ˆ ™ˆ ™™ˆ sb¨¤‚£¥#¥Ì«Ñ«¤Mì¥ͤФ夤»Mì¥ͤФå¤ù­þ­¥#¥Ì«Ñ«î­ó­ù­þ­¥#¥Ì«Ñ«Ú‚£‰£ÇÚè î ø § Ÿ  ¯ à ÇÚè î ø §:¤ÐÌ ³iüwtüwüwüwqwüw ³iüwwŒ–çž–¹i|œšœ œè¿ÀÄ¿ À"²á¥çž´M"²á¥çž"²ðXFʈçž"²³i"²üw"²üwà4{ÿÿ?M"²Ujçžÿ?M"²Uj?ÿM"²üwwM"²üw·všw?ÿàM"²üwÿ?àMÇ"²üw®´ë"²üwŠŸ¯MUjLMUjLUj´Mÿ•q&µ>içž&µ>iæOçž&µ>iæOçž™I£&µPçž&µPçž4{iŸ !.Š<Uj¬¬Ç¢ÁÆ¢ÁÆ¢ÇòüÇÁÆ*D`p ¢’M«ÀMÇ’¶ÇÁÆ*D`pÓ è&µ|œ.>wüw.>wcwŠüw½½„ ä4{4{Uj4{OUj4{UjçŽ4{›4{›sb³isb³isb³isb[)/4{UjˆLçžr/Þñ4{ˆL“çžr/Þñ4{“/4{Þñ³i/4{Þñ³iöaäÒY/4{Þñ››ÇdžÒY4{ÞñäÇdž4{ÞñäIÇcI£ÓeÓeÓeÓeUj5¤Ÿ;½ìçŽsbÇÚ´ §5¤Ú5¤§³ið¿ið¿iÐÇ´±Ujc{„ÐUj£Ð¤íUj5¤ÚâîÇú[¼,sÎsÎÚîâÇ[ú†Ç:¤Ç:¤ÇÚµUj¤íçŽð³ ðyÇÐÚUj¤ÇÚÐý žÇßÇÐÚîüM¶[ßÇÐÚîM¶[JõM¶ßÇÐÚîM¶žßÇÐÚîüM¶½„‘ M¶ßÇÐÚîM¶ž³i× Ü ³i³i-!5!sbT!ˆ ®´³i³iˆ Ê!´Mñ!"ñ!"Ê!´M]"„"ˆ ’M¿iÊ!™""{i„"ˆ ›’M„"ˆ ’MŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPüwt¥#¥–##"²#&À##ðXuPPPæOæOPæOPPÀÀî­ó­ù­þ­¥#¥î­ó­ù­þ­¥#¥=BÀÀî­ó­ù­þ­¥#¥=BÀÀî­ó­ù­þ­¥#¥î­ó­ù­þ­¥#¥ù­þ­¥#¥w?ÿàM"²Y$üwÿ?àMw"²üwtù­þ­¥#¥î­ó­ù­þ­¥#¥ͤФ夊Ÿ¯ͤФå¤L•quPPPæOæOPæOPPuPPPæOæOPæOPPZOZOPPPæOæOPæOÿÿPPZOZOPPPœP¢PœP¢PæOPæOLPPœP¢PœP¢PæOPæOPPœP¢P¨PœP¢P¨P”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”j”jŠP'p'{'ÿ Œ'éœ ¶' Å' Ö' ç' ý'((!(+(A(](ðâƒ(‘( (iŸº(Ë(Ü(ê(Š. >!w"c#w$ù(% )&)'0)(;))[)*{)+Ÿ),¨)-´).Æ)/Í)0×)1ò)2*3*4*5(*6@*7R*8[*9h*:~*;*<œ*=¯*>À*?Æ*@Û*Aâ*Bì*Cö*D^­Eþ*F +G+H.+IL+Jd+Ky+L…+M¥+N»+O×+Pà+Qî+R,S?TMU,V',W2,X=,YwžZG,[S,\],]o,^y,_,`,a–,b¢,c°,dµ,eÎ,fÙ,gã,hø,i-j,-k2-lK-m<nZ-oh-æOPæOéœiŸÿZ-h-UjÖ§7GÛžUj´MUj´MUj•q~GUj•q7G4{Uj•qUj•qÌ­PP¨¤‚£k¤sb&csb&c/¤Uj•qÒ¼ HH*H7HBHIHPHæOPæOPP.pTJî¿TJÛž4{4{•q³i¹iUjÖ§7G4{æKUjÇLÆÁtL4{æK¤LUj¥#¥Ì«Ñ«ÇÙVM³ik¤‚£:¤MM4{uI4{ÄLÇw¦ÇðXì¥G¦ñ¥ͤФå¤ÇUjÖ§/¤:¤Œ\Âò:¤©]³iwwÁÆ¢öL©]ÁÆ¢öL©]:¤MMÇw¦ûL:¤þL:¤Ç¶ H/¤è MÇÆÁ*D`pÓsbaZsb:¤:¤:¤:¤tLM&µ*M½/MUj´Má¥=¦ÙVì¥ ͤ Фå¤ äðXüwüwsbjMUjuMäüwüw/¤k¤‚£â±sb‚£sb‚£Ái«M´M¨¤‚£¨¤‚£¹i/4{ÞñMsbÄMÛ¥á¥s΋t=¦½ÓM ì¥ ñ¥ ðX J¦ S¦G¦\¦ͤФ夹i/4{ÞñMsbÄM›á¥s΋t=¦½ÓM ì¥ ñ¥ ðX J¦ S¦G¦\¦ͤФå¤ä³ik¤‚£k¤‚£k¤‚£‹ÒYù­þ­¥#¥Ì«Ñ«¨¤‚£Ÿµw¦¥#¥Ì«Ñ«¨¤‚£ù­þ­¥#¥Ì«Ñ«¨¤‚£Ÿµw¦³i¹i|œšœÇ4{Þñä4·‹×MÒYk¤‚£Jõ¡“1NTNMÈNÖ§Ö§Çc OÇÇÇjO OÓeÓeÈNÒ¼ÇM³i¹iÇ´MvOLì¥ñ¥ͤФå¤ÓeÓeWjI£¨¤‚£}våPñP QQ>QMQ”jMQñRS!S QFSTSZOZOZOZOPPZOZOÇ™ÇI£™I£yïâTõT! UFUN«UjðuUUjðUjðuUUjðuUUjÈNUj V.V"j4{UjUjÖ§çVŸcÇUj W'W8W{•ƆW­žÇ•W¯WËW´±ÜW UjX†WUj4{­ž,X†WUj4{­ž,X†W­žÓe­žµX­žµXUjðuUðÈNMÁMÁyï·YÅY O­žyïÚ UZ Oyï§SZZZsbsb V:¤sbsbšbÐUjâLŸ&M:Ãçž/¤/¤ÀÀî­ó­ù­þ­¥#¥Ì«Ñ«`Z³iPsb&cÐUjqZ}ZÖ§hìÐÐUj¿i•Æ{ÓeÙVÐÓeì¥ͤФ夕W³i¨¤Ðw¦Ð­žÇ•W¯WUjcu[ ˆ[ ð ì¥ ͤ Фå¤:¤/¤sb{I£¥[n¥¥[n¥¥˜¥t¥•WÜW|œ•WÜW¥[Uj{Óe{âLUj„LâLì¥ͤФå¤{ÓeÐ瞨¤¨¤Ð†WUj4{­žÇ¬\ ÜW § ³ I£UjÓeUj¯°\¤ì¥ͤФ夨¤\I£'\sbÐUjâLÐ&M:ÃçžÐ瞨¤ÐUjÖ§ÐUj4{¬\¤+\瞨¤¨¤Ð†WUj4{­žÇ¬\ ÜW § ³ I£Ð†WUj4{­žÇ¬\ B\ S\ i\:¤\I£ÐsbÐUjÖ§ÐUj:¤:¤|¿:¤ÐUj\I£ÐUjB\I£¨¤¨¤‚£Ð­ž†WÖ§ \SZX§ÇÐï§\®\á¥=¦¶\ðX ì¥ ñ¥ ͤ Фå¤ÇÐï§\¾\SZX5¤ H:¤¹iÇ\ÙVUj5¤³iUjŸµ¤í³ ÚUj[¼‹tâ[¼Uj•qÚîâÇú[¼,‹t‹tÚîâÇú´M‹tÚîâÇú[¼³iÚîâÇú´M‹tÚîâÇú[¼¹i™I£:¤I£:¤I£:¤I£³i™I£:¤ú™I£:¤Ûžõ•ž©]±]¼]4{™ä]džÇ^ä]^džuPPPæOæOPæOPPUj´M³ ð _ð³ Úyµ¤í玜P¢P¨PÁPœP¢P¨PÁPæOPæOPP)_+_2_=_L_X_e_Å`UjÐâLÚ¨¤‰£¿çžM¶:¤Û`ä`ó`û`a aaa (a BaçžÚîüM¶Û` aä`(a µ Ja a ó` û`aYa`açžÚîüM¶Û` aä`(a µ Ja pa a:¤ßÇÚîüM¶Û` a ä` (a µ Ja 5¤paçžßÇÚîüM¶Û` a ä` (a Uj µ Ja5¤paçžÚîüM¶Û` aä`(a µ Ja:¤ßÇÚîüM¶Û` a ä` (a µ Ja 5¤çžßÇÚîüM¶Û` a ä` (a Uj µ Ja5¤çžßÇÚîüM¶[Û` a ä` (a Uj µçžßÇÐÚîüM¶[çžM¶šœßÇÐÚîüM¶[çž[{a¨¤‚£ßÇÐÚîM¶[:¤ßÇÐÚîüM¶½„çž aJa³iuPPPæOæOPæOPPuZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PPPPPPPPPPPPPPPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PZOœP¢PZOPP¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«&e0e7e¨¤sb&c³i/¤ŸsbT!pÿ¥†lµŸppZ->p†lðXoµŸ†lûÄðXµŸ†lÆcûÄV«µŸo§q†loqq†lømoq†loKqq†losbq†l³ioµø Ÿ§ ±qo³iŸUj~”UjÿqUjrrUj'r*rUjÿq*rUjVr~”{r~”‰r´M~”‰ror.p«rârèrsInoss1s UjInKsI£~”ârèrsInoss 1s UjÖ§‰rÖ§‰rÖ§‰raZ ºÈ ºÈ ºÈ~”‰ro ºÈr~”‰roÍ~”âr/tsInoss 5t ;trrr‰rrr~”†l‰rr~”‰roÁiUjâLr~”oUj~”oUj‰r~”oUj†l‰rr~”‰ro’MøtUjr~”oŸt„LÙVUj~”‰rot„LÙVUjr~”‰roÁi’MUjr~”‰roÁien’MUjr~”‰roUuCÁøt’MUj r~”‰ropuvuUjr~”‰ropuvuUjr~”‰rot“uUj˜ur~”‰ro©uUjr~”‰rotGľuUjr~”‰rotGľu ÎUj r~”‰rot}nenUjr~”‰rot}nenÙVUj r~”‰rotCÁenUjr~”‰rot}nenÙV Î Uj r~”‰rotaZenUjr~”‰roaZenUjr~”‰rotaZenUjr~”‰roÎaZen ÎUj r~”‰roaZenUjr~”‰roaZen ÎUjraj~”‰rooenUjaj~”‰rooenUjr~”‰roUjÏvÚv’M~”‰roUjnÆÈr’MÏvwÚvçž-wIwdw~”‰roaZ¿Äen’MUj rww™w£w¯wÉwÕwàw r~”‰ro¿xenUj~”‰ro0xen’MUjrsb~”‰ro0xen’MUjr~”‰ro\xixÎUjvx )Î~”‰roΈx‹xŽx‘x Uj vx )Î Î r~”‰ro¢x«xUjvx)Î Î r~”‰roÂxðXÎ'\ Î Èx Uj r~”‰roÞxÎ ÎUjr~”‰roôxÎ Îùx/Î DÕ rUjM´M%y.yŸâL~”‰roNyen’MQyUj r~”UjâLgy~”‰roxy|yUjyr~”‰roy”y™y yÉw ¬y ¶y Áy Ìy QyUjr~”oUj†l‰r¯wr~”‰roóyÌyUjÈr~”‰rotâLUjr~”‰roðXUjr~”‰roðXUjr~”‰roðXtUjr~”‰roâLUj~”o¥[Uj~”o³iUj~”o¹išz|œUj~”ošœ°z~”çz œ~”oçzè¿Uj~”o{÷iI{÷i÷i~”…{‰rçz{~”‰r»{Ä{…{{~”‰rä{È»{{î{÷{ | Uj r~”‰rä{ |5|<|E|O| `| j| y| Uj r~”ª•|¡|§|µ|Â|Kq ‘  "Ì Í|~”o,oUj m,o~”‰ro}}È~”‰roxUj~”‰ro}}Èr~”oðX~”Ujä{M}X}~”Uj}ä{êjÈ}“}™}ty~”Uj²}ow»}À}Ð}Æc~”Uj}}ä{ÈŸðXÈ~”oUjx~”‰rä{ÈÀUjr~”‰roJ~ ÎÎDÕrr~”‰r·ŠoâLUjr~”‰ro~~…~rhŒ~Uj âL r~”‰r®~orhŒ~½~rØ~ÙV~”‰r®~orhŒ~½~ Ø~ rŒ~ÙV~”‰r®~oÍ+Œ~ ½~ Ø~ r~”‰r®~Ø~r~”‰r®~kvŒ¡® º ½~ À} PÎ ÃÎrsbsb~”‰r®~otñÑû € Œ~ ½~ Ø~ r~”‰r®~oŒ~½~Ø~/€ ñÑ û :€ rT€~”†l‰r®~to€ov€ ‚€ Œ~ ½~ Ø~ r~”‰ro€t¨€ ÎDÕ~”‰roUjՀ܀ð€~”‰roUj~”‰roPÎÔkUjr‰r~~tI£=‰roÄ¿~”‰roKoñnŒ~‚~”‰ro º ÀUjºÂ~”‰®~”‰®~”o´±‰®õ~”o‚‚7‚ª÷iðXÂoI‚R‚[‚ c‚~”„‚´±ðX‚Uj²}~”ðXÂo~”æ‚¡|~”‰rðXÿ‚ƒ.ƒEƒWƒ ¡| n­ ª ÷i~”‰rðXˆƒoƒÿ‚œƒ ¹ƒ ƒ .ƒ Eƒ Wƒ¡|n­˃‚äƒíƒöƒÿƒªçž~”‰roðX´±ˆƒÉk‚ „ '„ { ,o 6„Ôk²}Ö§hìR„~”‰roPÎ~”‰roÿ¥tUjr~”‰roUjðXˆ„~”‰roðXUjr~”‰ro ºñnt~”‰ro¹„ñnt‰r¿-‘‰r-‘‰r¿-‘‰r.y‰r¿.y‰r¿.yUj‰r2…~”‰roUj¿Q…^…~”‰roUj¿jj2…^…~”‰rä{Uj‘…~”‰roUjñnˆ„~”‰roUjÿ¥ˆ„‰roUjñn~”‰roË…ðXâL\xix~”‰rðXoõÅ\xix~”‰r\xixoK~”‰r\xixoPÎ~”‰r\xixo#~”‰r†l\xixðXo~”‰roUj\xix‰rO†Z†UjÁi„†‰†çžUjÁi„†‰†çžµŸosb³†µŸo&À~”o¡|~”ðXŸµoWƒ~”oâr†l{m‰®‡#‡ 4‡~”‰r¦lK‡osb~”‰r¦lK‡oKq~”‰r¦lK‡osb~”‰r¦lK‡o„‡~”âr–‡o-À~”ârK‡ªUj~”CÁó‡ü‡UjÁi~”oªÿ¥~”ÿ¥Lá¥çžó‡ajXˆ{joj.yçž~”ârK‡oUjøm~”âroUjƒˆ~”oâr˜ˆ§~”o³iÁˆΈµŸoðX6‰oðXâL:¤9‰:¤MsbsbMöL¿iï:¤R„sbxsbxsbxsbxsbxsbsb³i¹iaZ’‰PkÖ§bPkbI£ˉæOPæOPPuPPPæOæOPæOPP Æ*£ŠÀŠçŠöŠ‹×) M  Z- X  ˜  K-”jŸè âŒ5!ꌵ±qb¦uPPPæOæOPæOPP4Ž>ŽWŽeŽnŽPPPæOæOPæOPP:¤/¤:¤Ö§ÁiCb¥[Uj¥[,o,oømøm m¥[uPPPæOæOPæOPPuPPPæOæOPæOPPµUjŸ m‡µUjŸ m‡¥[µUjŸ mM.yµUjŸM}MŸª‰£µUjŸ mâLµUjŸ mÏm½mâLµUjŸ m‡Ÿª‰£•¥²ÃÑÙä ÷ µ| ‘ ‘ >‘a‘uœP¢P¨PÁPÇPÍPw”}” ƒ”œP¢PœP¢P¨PÁPÇPÍPœP¢P¨PÁPZOœP¢PœP¢P¨PÁPÇPÍPw”}” ƒ”œP¢PœP¢P¨PÁPÇPÍPœP¢P¨PÁPZOœP¢PPPPPPPZOZOPPZOZOZOZOPPŒoÛ–æOPæOPPZOœP¢P¨PÁPÇPZOœP¢P¨PÁPÇPPPZOZOPPPæOæOPæOPP m…—œ—†l¨—»—Ç—Ñ— Þ— ™wŸðX´MÆcŸ:¤¥[î­ó­ù­þ­¥#¥Ì«Ñ«ŸUj ™:Ã¥[¥[Ÿª‰£¥[µŸ†lûÄÆc™µŸ†lûÄðXçžµŸ†lûÄÆcðXµŸ§†l™ÆcµŸ†láÁðXçžµŸ†láÁÆcðXq†loðXq†lo™q†loÿ¥q†losbq†l‰£oq†lømoµŸ±q!™†lðXoø †lqo³i/¤/¤ÿqá¥\«ì¥ͤФ夜P¢P¨PœP¢P¨PPPPæOæOPæOPPPsb&cUjÿq*r¬€™‘™©™*rUjšKsizÖ§•qª¬#‡4‡Psb&cPsb&cA±á¥#‡±¬ì¥ͤФ夯csb~”ýšìІlÊbª¬#‡4‡ªñnÈñn†›ª©™šª.y±›»››ª€™ª‘™ª*rUj&µâr:¤Psb&c$ªârª:¤.y»››ðXì¥ͤФå¤/¤sbârá¥\«ñnLÙVÈì¥ ͤ Фå¤UjârInssèr€œÙV¹œ€œM¹œ€œÎ5Njo…ͤ‘—³i´M´MæâLšæâLÙVž¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«m¦w¦M-‘ž‰ržuZOZOœP¢PZOœP¢PæOPæOPPZOZOœP¢PZOœP¢PPPPPPõj:¤:¤MÖ§M:¤sbù­þ­¥#¥Ì«Ñ«InM  InUjKsúž³i³iK A±Uj¨¤‰£ A±Uj¨¤‰£~”‰rot~”/t5t;t‰ro   ÙVì¥ͤФå¤~”oUjþÆaZaZ~”UjM}aZ~”‰roCÁøtUj¿taZ~”‰ro# , Mt4 ¹i³i4À ; ;À BÀIÀ B oÀ Ž¿I  £¿œ¿ ‰ÀÀ P W  ^ Ú¾ ö¾e  ¿l ¿«r &¿~”‰roUjnÆsb~”‰rosb~”‰rUjq …{„LM|œ~”‰roUjnÆrâLq  Kv ~”âL¥[sb&cÙV ¥[Ÿª‰£… çŽšb~”Ujùk~”Uj¿iUjµŸ mâL~”âL¨¤‚£~”‰roUjrÿ¥Œ Úv ™y ”  Õw ´± ¯w  ­ àÙ í ü ¡%¡2¡@¡v ~”‰rUjv oM¡~”‰roV¡~”‰roUjr]¡g¡™y ”  Õw ´± ¯w s¡~¡v ¥[~”Ujˆ¡Ž¡”¡Æc~”Ujˆ¡˜¡Ž¡šœ~”Ujˆ¡:¤sb~”oUj‡Æc~”‰roΈx‹xŽx‘x Uj vx )Î Î rv ~”‰ro¢x«xUjvx)Î Î rv UjµŸ mâLUjµŸ mâL¥#¥Ì«Ñ«enUj%yM¦¡âL¨¤‰£¿UjµŸ mâL~”UjaZsb³iUjµŸ mâL~”‰roUjjjv ­¡µUjŸ mÏm½mâL´¡»¡¡Uj~”É¡¿Uj~”oØ¡sbØ¡‚£¥[~”oè¿Ujç¡ý¡ ¢¢ I{:¤MðX~”‰r»{Ä{…{{á¥çz )¢ °z ÷i E¢ ì¥ͤФå¤~”‰r»{÷{|Ä{…{K¢ ᥠN¢ { ì¥ ðXñ¥J¦S¦G¦\¦ͤФå¤sbUjµŸ mâLŸsbÿ¥ðX~”UjW¢§|÷d¢t¢‰ro~”o¥[¥[Uj mÁi¥[ðX~”Uj}ä{X}~”Ujä{…{X}Ö§ðXUjä{‚¢MðXX}ðX~”o¢Ž¡ œðXMðX‰r’¢I£~”‰ro ºñnt‰r¡ðXè¿À›¢ ¢sb&csbsb&csb/¤/¤›¢ ¢~”‰r®~oŒ~½~rØ~¦¢Ä¿oUjA±ðX~”‰roUjˆƒ°¢X}¨€I£~”‰roUjÕ€Ü€ð€ˆƒ ´¢ °¢X}~”‰roz“tI£~”‰roUjՀ܀ð€}ˆƒz“tðXK À~”‰roUjð€Ü€KÜ€:¤~”‰roð€Ü€K³i³i#&À¨¤‚£‰£aZsbŸª‰£Ÿª‰£Ÿª‰£Ÿª‰£¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb³†sb&csb~”oêj:¤÷iI{sbI{sb~”ðX¼¢Ÿª‰£Ÿª‰£¨¤‚£‰£aZsb¨¤‚£‰£aZsbÄ¢MðXŸª‰£Ÿª‰£¨¤‚£‰£aZsb¨¤‚£‰£aZsb-À¨¤‚£‰£~”Ujšb~”ðXo¡|G¦ì¥ͤФ够ª‰£Ÿª‰£÷iaZ/¤~”‰roK~”‰rä{UjðXoâLM:¤~”ðXõÅo~”‰r\xixoý¾oÔ¢~”‰rUj\xixoâL‰r-‘‰r¿-‘µŸo# Ü¢µŸo; µŸo;ÀâLoµŸ¿~”ðXá¥ͤФå¤:¤ŸµoWƒ3ËCÁà¢"j è¢ ª ª »­ ò¢þ¢ì¥ͤФå¤~”‰r†lðXR£^£o~”‰rv †lðX~”‰r¦lK‡oq£v ~”‰r¦lK‡osb~”‰rK‡oUj²~”‰r¦lK‡o £~”¦l£K‡‰ro$ª~”ârUjª.y»›››»›.yaZR£^£j£v£!™†lðXo$ª~”ârªUj.y»››CÁó‡´±ͤФå¤~”oÿ¥‰®ðXì¥ͤФå¤/¤UjµŸ mâL~”oªÿ¥P¦Y¦~”oUjømó‡ÿ¥Âo¼¢ »­ £ *£ =£ Ï­M£ì¥ñ¥ͤФå¤~”ÿ¥¨¤‚£‰£~”UjšbŸª‰£~”oa£s£ðXì¥ͤФ夨¤‚£‰£aZsb~”o‘£¤£°£ðXì¥G¦ ñ¥ ͤ Фå¤aZ~”oUjømCÁ…{É£.y Ô£ Xˆ ä£ oj ì¥ͤФ够ª‰£Ô£.yðXì¥ͤФ够ª‰£¨¤‚£‰£aZsb¨¤‚£‰£aZsbUjÁi~”oUjømë£õ£¤á¥ Ô£ aj Xˆ ¤ {joj.y'¤‰®5¤E¤»­N¤]¤g¤u¤ì¥ͤФå¤~”oª‚¤¤á¥Ô£¤ aj ¤ {j M .y›¤©¤´¤À¤ì¥ͤФå¤:¤:¤Vj©™~”oUjøm…{ó‡ë£s£ Vj ‚¤ ¤ ᥠԣajXˆ{joj.y©¤KjˆƒË©ͤޤ褤ö¤¥¥¥#¥ 0¥!—j"©™#ì¥$ñ¥%ðX&J¦'G¦(S¦)ͤ*Ф够ª‰£aZUj¬?¥Uj?¥~”oUj…{MD¥ÿ¥~”oUjƒˆó‡ªVjæm ᥠM K¥ ©¤ {jKjoj©™‘™O¥ì¥ͤФå¤UjµŸ mâL~”âr–‡oý¾Y¥d¥q¥‚¥¥[~”:¤é¦ø¦§§çžâLµÚè §²§ø  8²Û§8²ÁˆΈðXðX‰®Psb&cµŸo§ŸÕ{ÈŸϨŸUjâ¨tŸUjtŸµUjÿƒâL’MðXtŸÈŸÈŸÈŸÈŸÈŸÈ瞟ȟȟȟȟŸµé©s¡õ©ªÈUjFª…ŸUj`ªõ©jªnªrªyª €ª ÈŸUjjªrªªªŸâLUj`ªõ©á¥çžŸµÚªŸÕ{ȳi \æªíªE|Ÿõ©ªUjt ¢:¤Ujd«i«ŸUjÎd«ŸªUjn«{«i«³iŸªUj¹i|œsbM™«™«™« œ™«Uj‚£‰£Uj‚£‰£ŸâLŒ~~~«Uj «¦«ŸâLŸªÈUj ¢:¤ÀâLUjd«UjKd«Ujd«t±« ºÿ¥Mè¿Ujõ©nªrªyª€ªFªͤ ì¥ µ« Ф够Uj`ªõ©jªnªrªyª€ªÈ»{¬Æc¬aZ¿Ä„L’MUjaZtË…UjLâL„[¬ŸaZaZÿ¥¯¬„L’MĬ̬aZœÀè¬ðXŸĬù¬­̬ŸĬù¬­­,oÙVŸF­ĬM­aZŸl­F­ĬM­§ŸÈZOZOPPPæOæOPæOPPZOZOPPέ¬ÆcðXõÅÕ­è­ðXû­aZðXA±ZOZOZOZOPP³iQ®\®UjæOPæO?oψ?oUjPPœÀsb=¦ì¥ͤФ夜Àsb=¦ì¥ͤФ夨¤sbä®ì®õ®ý®Ž[l[äWl[äWæOPæOPPsbðXsbĬ̬aZsbŸðXù¬sbŸ‚£œÀðXðXœÀ:¤œÀ:¤œÀè¬:¤Ĭ̬œÀè¬aZŸĬù¬­̬a¯Ì«Ñ«ŸĬù¬­w¦ðXðXsbðX¨¤‚£ŸF­ĬM­aZ—À(csb(c(cA±(caZ(c(cUjίPÎÈå¯ê¯Ÿ³i—À°°—ÀPΗÀa¯Q°—ÀPΗÀa°¿Ä„L’MUj—À(cÈâL~~u°Rj «y°°(c Î/ÎUj'\Î(c ÎUj‘°PΙ°(ctUj‘°PΙ°(ct—À(cÈ´°—À(c³i—À(c¹i—À—À(csb—À(c|œ—À(cPΗÀ(csb—À(csb—À(csb—À(cPΗÀ(cšœ§Ÿl­ù¬F­Ĭ‚±M­ ±uPPPæOæOPæOPP”²£²²²Uj‚£‰£:¤sbUj‚£Uj¨¤‰£ðX¥[—À°³iðXðXsbUj‚£‰£Uj‚£‰£—À°°¹i—ÀA±—ÀA±—ÀKðXðXsbðX¥[Uj‚£™«—À(cÈ—À(c‰£—À(c‰£aZ(c{iaZ(c:¤UjίPÎÈUj:¤UjίPÎÈUj:¤UjίPÎÈUj:¤—À(c‰£UjίPÎÈUj:¤—À(cÈ—À(cÈ´°âL~~u°Rj «y°°sb´°/ÎUj'\Îsb—À(c‰£Uj‚£‰£UjίPÎÈUj:¤´°Uj‘°PΙ°sbUj‚£‰£UjίPÎÈUj:¤Uj‚£‰£´°Uj‘°PΙ°sb—Àt(c—À(cÈ—À(c œ—À(csb—À(cK—À(csb—À(c‰£û­6³B³Uj[¼û­[¼g³ψg³ψ[¼g³[¼–³F­(c©³,o’Ml­¾³Uj(cPÎl­F­¾³(cÈĬ­Ĭ­Ĭ­l­F­È©µ­ĬŽ´‚±æOPæOPPä´:¤g³ψ:¤g³:¤(csbl­A±û­g³¾³(csb¾³(csbðXsbĬ­aZ¨¤‚£Ĭ­ç´a¯œÀl­F­¾³(cÈ­‚£[¬aZŸ[¬aZt[¬aZŸÈ:¤ðX[¬aZðXŸ[¬aZt[¬sbÕ­:¤/¤Ÿsbcä´»{Cµ¥#¥Ì«Ñ«tUjLâL„³iõj¹µ³i³iŸâLŸUjÀ}õjŸUjõjÀ}#¶:¶>¶T¶h¶s¶’MŸaZUj,o…¶à¹#¶Œ¶Ÿõj¿Ÿ¸¶„LUjŸ#¶Ѷè¶õj(cõjðX·(cŸ(c„LѶŸ(cðXT¶Uj,oѶ๟ðXŸ(cŸ(cœÀ´MœÀMâLœÀè­sbœÀè­sb¶·œÀè­õjsbœÀè­ÙV#¶’MPÎÔk—Àa°¿Ä„L’MUjð·ô·ð·ô·—À³i—ÀÈ—ÀϨ§ŸÈZOPPPæOæOPæOPPZOPP³iõj¹µ³iŸâLŸUjÀ}õjsb&c:¶>¶¤¸œP¢PœP¢PPP ¹¹1¹ðX¶Ð½¹MâLŸUjǹ:¤³i/¤¨¤‚£Ÿõj¿/¤/¤UjŸõjÀ}è¶õjõj:¤(cõjðX·(cõjѶŸ„LUj‚£:¤Ÿ(caZ˹ѹ§Ÿ÷¹®´UjœÀsb¶·MºA±Æcsb¨¤‚£ð·ô·ð·ô·Uj‚£‰£—À‚£—ÀÈÈ&µPçžæO&µSåçžaZ«º±º·º(c(cȺðX(cK(cPÎaZ(csbŸaZ(cÿ¥Ÿ¾³(cäWÈŸŸÈŒo:¤œP¢PœP¢Pz¼¼…¼š¼¬¼½¼PPPæOæOPæOPPÀ}Ó¼ðXÛ¼KäW(cðXäW„L’M(caZŸ¾³(cȾ³(c³i¾³(c¹i(c:¤(cK(cPÎsb¿er¿%¿Ÿ³iŸI¿ŸsbŸsb&µPçž&µSåçž|ZÙVMÆc|ZsbÀðX-ÀsbHÀ&µPçž&µPçž&µPçž&µSåçž&µSåÙVçžæO&µSåÙVçžæO&µçž&µ>iæOçž&µPçžsbÁðX™«îÂÙVÁÙVÁä´MðXÂÁÙVä´MðXÂÁÙVä´MðXÂÁfÂðXœÀ~”ðXœÀ~”ðXœÀ~”ÆÂœÀ×ÂÛœÀ,oœÀ§ÆÂœÀ~”~”œÀðXUj+ÃÙV+ÃçŽMœÀ_Ã~”œÀÿ¥~”œÀUjÿ¥³i©Ã©Ã©Ã©Ã©ÃŸUjÿ¥HÀsbŸUjÿ¥HÀŸâLšb瞟¥#¥çžŸ¥#¥çžŸ¥#¥çžŸ¥#¥çžŸ¥#¥çžŸÅÅ瞟ÅÅ瞟ÅÅ瞟ÅÅ瞟ÅÅ瞟ÅÅ瞟Ái瞟šb瞟KsâÅ„LÆc{iÆc{i{i{i{i{i{i{iaZ{i‹ÆÆaZ{iÔÆ™«ÔÆ™«ÇÇ0Ç?ÇNÇ]ÇlÇ{ÇÇÇ0Ç?ÇNÇ]ÇlÇðXÇÇ0Ç?ÇNÇ]ÇlÇÁÇ`oÁDÈPÈ{ÇDÈPÈðXDÈPÈÁPÈDÈ{ÇŸ´È{ÇŸ´ÈðXŸ´ÈàÈÁŸ´ÈOtŸUj É{ml[³isbÈ~”‘…A±‹É~”‘…sbMŸÈŸ¤¸ŸPΟKŸ¡æ,Ê3Ê’M~”,ÊVÊ]Ê~”wʳi ÎDÕ~”œÀK ÎUjÈ~”ÈŸÈtŸðÊtŸ³iŸ³iŸ³iŸ³iŸ³iŸ³itŸ³iŸUjtŸ³iŸt~”Ÿt~”È~”œÀÈ~”œÀ¿{î{÷{ÌUj~”œÀ{{i~”œÀ{³i~”œÀ{{i~”œÀ{âL÷{~”œÀ¡æen’MUj~”œÀ¡æenzÌUj€Ì”y~”œÀÈÁiUjâL~”wÊ·ÌÓe¾ÌUj~”wÊ·Ì„LÙVUj~”wÊ·ÌöÌÙVUj~”œÀÍðXÎ'\ ÎÎ Uj~”œÀP΢xUj~”œÀâL3Í=ÍUj «y° EÍ KÍ ° Î SÍ~”/ÎUj©´·Ì`ÍdÍSÍ~”UjœÀnÍz̀͆Í~”œÀÈ´°~”œÀ)ÎÎÎ ÎUjâL~”œÀΈx‹xŽx‘xUj âL )Î Î~”œÀÞxØÍÎ ÎUj~”œÀóy’MUj~”œÀÎ ÎUj~”œÀUjHÀŸUjðXl[~”œÀÈðXUj~”âL~”ðXÿ¥âL’M~”ÿ¥âL’MUj~”œÀÿ¥âLen’MUj~”œÀaZen’MUj~”œÀéÎoÄen’MUj~”œÀÏÏen’MUj~”$ÏðXçžñn~”œÀ„ty~”œÀ¤¸~”œÀ¤¸~”œÀ¤¸~”œÀÓÏt~”œÀUjŒ~~”ÓÏt~”œÀt©´=Ð~”œÀtûÀ~”œÀtûÀçž©´=Ð~”œÀtûÀ~”œÀ=Í «y°Œ~UjâLEÍÐ=Í «UjâLy°¹ÐEͽÐ~”œÀDÕ¹i~”œÀUjsbl HÀçž~”l HÀ~”œÀtñÑxUj~”œÀ\ÑûÀñÑxUj~”{Ç~”xÑçž~”ίœÀ|œ~”ίœÀer®Ñ¶Ñ®Ñ´±®ÑÜÑsb~”œÀsb~”œÀ Òsb~”œÀ Òer~”œÀ Òšœ~”œÀ ÒZÒ~”œÀø  œ›Ò§Úè î ¬ ø ¤Ò ‘ sb•ÆðX•Æsb•Æsb•ƕƕƕƕƕÆPPPæOæOPæOPPuœP¢PœP¢PZOœP¢PœP¢PœP¢PœP¢P¨PÁPÇPœP¢PœP¢PœP¢PZOœP¢PœP¢PœP¢PœP¢P¨PÁPÇPœP¢PPPPPPPPPÃÕßÕíbaZaZðXðXíbçžíbçŽÿ¥ì¥ͤФå¤íb瞆ÖÖæOPæOPP¿(csb¿Ö§sb(cŸ³iŸÖ§sbŸ:¤l[5×B×L×V×PPPæOæOPæOPP-Àsbp׃׎כ׮׼×Ì×â× ñ× Ø Ø ,ØPPPæOæOPæOPPŸè µIÛ;½TÛ›Ò¢, b¦ÒÛàÛëÛùÛÜÜ"Üsb³isb:¤îÂÔ¾sbì¥ðXñ¥ͤФ夨¤Uj~”œÀ:¤~”ÆÂœÀ³i:¤¥[֧ޡܢsbsbsbsb¨¤‚£¨¤‚£¨¤‚£¨¤‚£¨¤‚£CÁÝ]ÇaZsbCÁÄlÇaZsbÇÇ0Ç?ÇNÇ]ÇlÇ:¤NÇ:¤ÇÇ0Ç?ÇNÇ]ÇlÇÁsb:¤ÁðXY¦Ý¨¤‚£¨¤‚£¨¤‚£¨¤‚£¨¤‚£¨¤‚£DÈPÈsbDÈPÈ:¤Ÿ´È:¤Ÿ´ÈàÈÁ~”‘…:¤Ÿ‚£ŸKM³iðXMÜ¢VºUj‚£‰£„LUjͳi"ÝðXen»b&ÝUjî¿2ÝsbŸ¹isb~”œÀsb2j´aZ:¤³i~”œÀ{¿ðXœÀ~”œÀ{:¤sbsbaZðXsb¨¤‚£‘…I£~”œÀ´°âL3Í=ÍUj « y° EÍ KÍ °sb~”´°/ÎUj©´·Ì`Ísb€ÍI£~”´°UjœÀnÍzÍsbsbsbŸ‚£Ÿ‚£Ÿ‚£¿i~”Ujšb~”œÀt¹i<Ý|œðXœÀðXœÀÀ}œÀ¥#¥Ì«Ñ«¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«¥#¥Ì«Ñ«¥#¥Ì«Ñ«~”œÀ:¤~”œÀt~”œÀt~”œÀUj¿~”tUj¦mMFÝ~”œÀðX»bI£~”ûÀè¿~”ûÀÀ~”œÀUjšœŸ[Ý:Ã~”ίœÀ¿‘…I£~”{m‘…:¤:¤®Ñsb®Ñ´±®ÑÜÑsb®ÑA±®ÑiÝÜÑÄ¿K‹É~”œÀ Ò‰£~”:¤~”œÀ Òsb~”:¤sb•Æsb•Æsb•ÆrÝšbA±•ÆrÝ:¤¨¤‚£sb•ƕƕƨ¤•ÆŸ¡|ŸUjâLŸâL¤Þ«UjÖ§âLtaZŸUjtŸµÊÞ³iUjŸ³iŸóŽUjŸµóŽUjoÄŸµ*ß5ß?ßóŽUjÔ¾UjʈŸCÁœÀœÀœÀœÀœÀaZœÀœÀüß¿à¶ÑÆc¶ÑàÀ}Ÿ¸À}Ÿ¸œÀ§aZœÀðXœÀüÆàŒoœÀüÆàŒoœÀüÆàðXœÀüÆàƒˆœÀ៵UjáœÀüŸµÆà5áœÀüŸµÆàœÀT៵UjœÀ®ÃŸµÆàœÀ§…áüŸµÆàœÀ¶ÑüÆàⱮÜÀüŸµUjÆàœÀV«?oœÀ)?oœÀ~”œÀUjââœÀœÀÖ§@â=œÀCÁ`â~”œÀðX§œÀ•â•âÀâ¶Ñ•âÀâ£üŸµÆà•âœÀ~”ʈUjâLã~”ʈUjâL7ã~”ʈAãâL~”ʈUjâLaãçž~”ʈUjâLaãŠãŠãL»ãüœÀÕãInîÂÜã~”UjœÀøã~”âLUjœÀääÁi~”âLUjœÀÁiDÕ/äŸâL³ifäUjlä³iUjlä³i,o³iⱸäöäâ±çžŸCÁ*å¡|6å¸äöäâ± Eå®åçž~”œÀaZ~”œÀ´±~”œÀøm~”œÀñn~”œÀ$æñnFæKæUjœÀiæUjuæyæ½æÅæÑçž~”½æÅæÑ~”œÀüæ ç$æç³i¡| {r ç ç~”œÀüæ ç$æçDç¡| {r ç~”œÀeçâL~”Uj矜ÀUjaj~”œÀUjç~”œÀßçç~”èè=ñn³i~”çè;èUj~”èŸʈèUjŸʈ·èUjèßè6‰ʈUj¥[~”éâL:éLé~”ʈkéé³i–éⱬé¾é$æÚéåéê êê êŸ$æHêPê$ælêPê~”œÀï~”œÀïçž~”œÀUjïËêUjõêCÁûêŸUjõêâLUjCÁŸµUjJëXë~”œÀUjóŽ|ëCÁ…ëë ’ë K¥ šë çž~”œÀ®ëâL¸ëUjÑëãëUj~”œÀòëZOUj~”œÀòëÁiUj~”œÀòëÁiœÀHìPìUj~”œÀ&MUjÁiÙVlìtìÙV玳i?o³iÌìÛìäìUj~”Ñ玳i~”UjõêCÁ*åûê~”œÀðXç¦m"Ý¡¹UjUjðX¦m~”œÀaíÿ¥gíUjðXç "Ý çž~”œÀaíÿ¥gíUjðXç "Ý çží~”œÀaíÿ¥gíUjŸÿ¥¦¦Uj~”œÀÈæí~”ʈUj“uíí~”ʈUj“uíí~”œÀäìUj%îÔ¾ y,î ?ß ’M~”œÀUjóŽÖ§âL~”œÀUjðXŸµUj}îoÄŸUj}îoÄ•îUjoÄ•îŸUj}î•îtt~”œÀtÅæÿ¥´M~”œÀtçž~”œÀttÜ¢~”œÀVï\ïcïpïðXßè €ï ˆï ï~”œÀVï\ïcïpïˆïï ·ïœÀUjcâL~”œÀUjóŽcÝïÖ§âL~”UjÔ¾,î~”UjÔ¾QÐ~”œÀUjóŽðAðçž~”œÀ`ðUjóŽðkðð £ð ·ð Îð Ýð ìðþðçž~”œÀ`ðUjóŽðkðᥠçž~”œÀ`ðUjóŽkðð~”œÀ`ðUj:ñÈóŽâL~”œÀ`ðUj:ñÈ~”âLœÀÈ~”œÀUjŽñ~”œÀUjAðŽñ¡ñ¥ñ~”œÀUj¹ñŽñÄñ¡ñ~”œÀUjŽñ¡ñ~”œÀUjŽñÎ Î~”œÀUjŽñÎ Î~”œÀUjŽñÎ Îò#ò*ò~”œÀOòò#ò*ò]ògò~~â±õj'\‰ò*òUjaZÈÓòÈÓòÈÆcÓòÁit³i¹i|œŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ tŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ šœŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ è¿Ÿʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •ÆŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ ¡æ UjŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ ðX UjŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ A±Ÿʈxó|ó‡ó•ó©ó·ó Ìó Õ€ ÈŸ–ô¤ôðX°ôt瞟–ôʈåôõÈŸœÀUj2õŸœÀUj³iŸœÀUjÈŸœÀUjÈŸœÀõ~”È:ñÜ¢UjtUjûÄýõCÁûêö=ötðXsb~”ŒöœÀaí¥[Uj’ö~”Œö¾öÇöœÀaíÁiçž~”ŒöœÀaíÁiçžûö~”Œö¾öÇöœÀaíÁi~”ŒöœÀ÷aí„Lçž~”ŒöœÀ8÷aí÷Uj~”œÀ¡|Ujèüæ_÷ké $æ â± s÷ ~÷ ¸ä~”œÀ¡|s÷Ujâ±èüæ _÷ ké $æ ™÷ ç¸ä~”œÀ$æŒö®÷ôͼ÷aí Æ÷ ¡|Ü÷~”œÀaí³iâ±™«Ü÷~”œÀŒöaí³i~”œÀŒöaí¥[~”œÀ¹i~”œÀ8÷Ü÷~”Œö¾öÇöœÀaí² 3ø Uj ’M çžÜ÷~”Œö¾öÇöœÀaí3ø ‹Î Uj ’M Wø çžÜ÷~”Œö¾öÇöœÀaíâL~”Œö¾öÇöœÀaíâL~”Œö¾öÇöœÀaíâLUjÜ÷=õê‘øŒöUj~”Œö¾öÇöœÀaí’M~”Œö¾öÇöœÀaí’MUj~”Œö¾öÇöœÀUj’Maí ºø Æc~”Œö¾öÇöœÀaí’MUjåø~”Œö¾öÇöœÀaí’M Uj~”Œö¾öÇöœÀaíùœÀ¦ðXI£~”œÀù#ù~”œÀ¦ðXù‹¿çž~”œÀ¦ðXù‹¿çž~”œÀ¦ðXù‹¿çž~”œÀ¦ðXùá¥çž~”œÀaí¦ðXù~”œÀ±ùaíCÁ’MUj~”Œö¾öÇöœÀaíUjCÁ Ðù ’MÜ÷~”Œö¾öÇöœÀaíâL~”Œö¾öÇöœÀaíâL~”Œö¾öÇöœÀaí ú¿ en~”œÀâ±Rúpú¾ö~”âLœÀaíïêj 率úú‡ú~”pú¾öâLœÀaíïêj çŽ=wÊâ±âLÓúFæàúëú è öú äì Kæ Ë…ïêjû~”œÀ„û&û/û8û Aû Jû aí ï êjâLúsbUj’MHìçžû~”œÀûaíïêjâL Uj ` ’M ZO çžû~”œÀ„û&û/û8û Aû Jû aí ï êjâLúû~”œÀû&û/û8ûAû Jû ¥û ©û ­û øt’M~”ʈUjâL~”œÀaíÈ~”œÀaíí£~”œÀaíí£~”œÀaíÈ~”}üâLœÀaít~”âLœÀaíÈ~”âLœÀaíÈ®ü½ü~”òëœÀaíÈ~”òëœÀaíÈ~”òëœÀaíÈ~”œÀaíÈ~”œÀaíåÍ~”òëœÀaíåÍí£~”œÀUjaí5ýøt’M~”KýUj~”œÀaíÈ~”òëœÀaíÈÕ{~”òëœÀaíÈ~”›ýœÀòëêjaít·ýÁýÊý~”œÀòëçýòý÷ý·ýí£ aí þ `Í þ Áýçž~”œÀòëçýòýaí÷ýÎ ·ý í£~”œÀaíKý'þ1þÜ¢;þXþ~”œÀaíòëKý'þZO 1þ Ü¢ `þ í£ kþžþ§þ~”òëœÀaíÀþKýžþUjHêÙþú=wÊA±'ÿ=ÿÙþçž~”wÊaÿ'ÿKhÿ=ÿtÿ~”ÙþŒÿ®åçŽ~”œÀaÿaí«ÿK~”œÀaíÛ¥~”¿Uj~”òëœÀaíîÿ÷ÿPÎþÿ  çý~”òëœÀUjaí´Mçž~”òëœÀUjaí´M~”UjO´MV^çž~”òëœÀUjaíÁi~”òëœÀUjaísb~”òëœÀaí‡Àþ¸ëçý~”œÀUjÄ¥ñçž~”òëœÀaíú ÔkUj ~”òëœÀaí28xy< Uj~”œÀòëUjtaíæOÖ§Uj’M±À~”ÙåþÖ§?çžhÖ§hÖ§hÖ§hÖ§hÖ§hÖ§hÖ§hÖ§hÖ§~”hÖ§~”hÖ§~”hMÖ§th’ht~”hœÀÖ§tUj~”hœÀžÖ§t~”aíhœÀžÖ§ÊhètUj~”aíhœÀt~”aíhIœÀth‘tçž~”aíh‘IœÀ t~”aíh‘IœÀ tttt~”hœÀtUjkUjkUjkt~”hæOëaZ %;åR _ l{i©~”œÀÖ§ à % ; å Ý íçž~”œÀÖ§   à % ; å íçž~”<aíóŽF±h  ‘  I œÀN)_\kÖ§~Ž  Ã%;á¥çž~”<aíóŽF±h  ‘  I œÀN)_ë\«kÖ§~»ŽÈ çž~”<aíóŽF±h  ‘  I œÀN)_æOöëþ  ~”<aíóŽF±h  ‘  I œÀN\Uj> I á¥çž~”<aíóŽF±h  ‘  I œÀN\~~Hêú»Žâ±çž~”<aíóŽF±h  ‘  I œÀN)_\)Î~ Ž€ïçž~”<aíóŽF±h  ‘  I œÀN)_\ž )Î~ Žçž~”<aíóŽF±h  ‘  I œÀN· )_ëæO\~”<aíóŽF±h  ‘  I œÀNæO~”<aíóŽF±h  ‘  I œÀN· )_ëæO\~”œÀòëú  <aíæO~”œÀ ~”œÀòëUjC L aíæO~”œÀòëUjo L aíæO~”œÀaíæOòëUj~”òëœÀaíí£ž Vï:ñ~”òëœÀaíVïÈ:ñÁ  í£~”òëœÀaíVïÈ:ñÁ  í£»bà í£~”òëœÀaí È:ñ  Á  í£~”òëœÀaí|œí£5 HìÜ¢~”òëœÀaíZO5 »bZ  í£í£~”œÀaí~”òëœÀaí˜ }î¡ ` í£ « 5 Ë aZ~”òëœÀaí5 ç Ë ûÀ í£~”œÀòëaí ?ßUj5  In óŽ   %î  # ” ’MÁ í£~”sb:¤~”5 ÙV~”5 Ï á ~”œÀ 5 ʈÏ  á 6 ~”5ß 5 óŽL V  o  Ô¾ †  6 ~”5ß 5 óŽL V  o  È ~” InóŽʈ²}î  ~”œÀaí 5 ʈÏ @   çž~”óŽ`iuUjçž~”óŽ`iuUj~” ªiŽ¿6 ~”œÀaí5ß?ß 5  In óŽ   %î # ” 3 í£~”œÀaí’M~”œÀaíšœ~”œÀaí’M~”œÀaí œ~”òëœÀaí¥ ¬Ü¢ Á  í£PÎUjtPÎí~”œÀòëî¿aíùί  PÎ Ôk UjVï\ïpï~”ˆïïœÀaí €ï~”ˆïœÀaíúA~”ˆïïœÀaí€ï~”ˆïïœÀaíè¿~”œÀaíÁi~”–ÙþŸ§¡|$æ~”œÀaíòë¿öké À Kt~”òëœÀaí¡|â~”œÀaíÄ¿~”œÀaíK$æ~”œÀaíâLA±~”œÀNT[ÙV~”CÁçž~”NCÁçž§·çž§·çž~”œÀŸç~”œÀŸ~”œÀŸ~~Uj6;:¤~”$æüæœÀNUjßè; T Z r u~” ʈœÀUjZruUj6:¤~” œÀ®÷$æaíPÎõ ÆàÆcP ~”œÀ®÷$æaíPÎõÆà6‰Õãî¸äUj~”œÀpúâLUjaí À®åkéèâL~”Uj ~”–gUjJëèqz Õ öä óŽ ƒ çž~”–gUjJëèqz Õ öä ¸ä ‰® óŽƒçž~”–gUjJëèqá z ì Õ öä ¸ä‰®$æCÁ¸äUj~”â±ßçs÷âLÙþCÁ{ ç Ký – çž~”–aí$æãîfFæ â± Kæ è ®å ßçys÷âLŒÿÙþ}ü~”–aí$æJës÷}üã î Fæ « q ²yKæf®åâLŒÿÙþ~”–$æJëèßçs÷}ü ã î Fæ y f®åâLŒÿÙþaíçŽ~”–aí$æJëèßçs÷ }ü ã î Fæ ëyf®åâLŒÿÙþîç~”œÀaí#î~”œÀaíPÎ~”MÆàTm~ˆœ aí ¶ Í~”áëœ~”Æà~ˆœaí¶~”ʈá=ö~”=ö~”ʈßè=ö~”¿Ÿ¦mÝoèÈŸ¦möèÈ~”=ö~”ʈ5Kî~”œÀaíPÎõÆà~”œÀ®÷$æôÍaíÆ÷Ÿâ±¤cpu~”ʈCÁUjË…~÷~”œÀ®÷$æaí‹Í~”œÀ®÷$æaíãœÀ``ûÄüŸµUjÆàœÀ`~”œÀ³iýõšœýõ œ~”œÀýõõÆà¶Ù=œÀÖ§Uj=œÀÖ§Uj~”œÀtçž~”ýõIœÀt~”ýõIœÀbZÒŸƒ‰®~”œÀⱃZÒb‰®uæ Uj~”ýõœÀâ±@âZÒUjbœÀUjPÎçž~”ýõÆàœÀt~”ýõI.œÀ8A~”ýõIœÀbZÒ~”œÀⱃZÒbzuæ UjÆà§œÀçŽI£ŸµÆàœÀ§œ…៵Æà²§ÛåaZq~”Ÿ%/8~”Ÿ%Uj£u¤%q%pasUjŸ~”%£u¤~”Uj%pasÀ£çžŸ~”Uj%pasÀ£~”s%UjI£Ÿpa~”s%UjÀó` I£~”UjI£ŸßÞñ~”Uju¤a % I£ŸýµBß@|üœÀ pa ³iŸýµBß@|ü¤í ³iŸª‰£Ÿª‰£Ž[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"l[äWl[äWŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"ç"jl[äWl[äWŽ[á"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"ç"j‡¤l[äWl[äWŽ[á"l[äWl[äWæOPæOPPŸ¿iœP¢PœP¢PPPH¿öY;õà+F h taZUu³i¿I£‚£‰£Ÿsb´±Æc¶ÑI£ðXŸ¸ðXŸ¸ðXŸ¸ŒoŸ¸¿àsbŒoŸ¸¿àsbðXŸ¸ƒˆŸ¸áŸµUj៸sbŸµÆàœÀT៸ŸµUjœÀ®ÃŸ¸§sb§sbŸµÆà៸ðXsbŸµÆà៸Ɱ߸ŸµUjœÀV«Ÿ¸¿àsb)?oŸ¸”j”jŸ! !!µ'!üB ;! ?! a! g! ý¿ˆo!@|Ÿ!ýµBa!g!@| ü è UjJ#ⱜÀâ±â±:¤â±:¤:¤ÔÀÔÀœP¢PœP¢P¨PZ LK$Z Z üœÀÕãInîœP¢PœP¢P¨PPPP»ã:¤Ô¾»ã:¤L»ã:¤»ã:¤üœÀÕãInîÂ:¤üœÀÕãInîÂI£~”UjœÀøãœP¢PœP¢PUj´MUjl俜P¢P¨PœP¢P¨PŸ‚£Ë$×$¨¤‚£Ÿsb´uPPPæOæOPæOPPœP¢P¨PœP¢P¨PœP¢PœP¢PuPPPæOæOPæOsbsbsbsb®åsbsbsbsbPPœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹ZOZOœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹ ++œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹ ++â±´±Q+qøm³iqñn³iqŸª‰£Ÿª‰£~”œÀüæ ç$æç¡|{r çL·èš~”œÀâLâ±~”âLèßè¿Ä:¤ZOZO:¤Ÿʈ¥[y+Ýy+Ýè¥[y+Ý}+¥[y+ݳiÚéåéPê/¤‚+Ÿ¸’+:¤:¤¥[õê¥[¥[™+‚£~”œÀâLóŽ:¤o:¤¨¤‚£‰£aZ®+±+~”CÁšë~”œÀUjóŽ|ëCÁë…ë:¤~”œÀUjóŽ|ëCÁ:¤UjšbA±’MUj:¤Ujšb’MUjšbA±’MUj:¤Ujšb’MZOZOÆc¥[uPPPæOæOPæOPPœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹uPPPæOæOPæOPP~”œÀðX¦m"Ý¡¹UjI£¥[~”œÀUjââ¥[~”œÀUjðX¡¹.¥[âLŸª‰£¥[œP¢P¨PœP¢P¨P ÎUj~”âL¨¤‚£¨¤‚£’h´=.´~”œÀUjO.¨¤‚£¨¤‚£~”ʈUjyŸÿ¥¦¦UjZ.sb³i~”œÀa.h.Z.Ujtty+Ý~”Uj²}o.~”UjÔ¾[sbsbȳi¹iuPPPæOæOPæOPP¤ôGÕA±A±³iŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€•ÆtŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€•ÆšœŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •ƹiŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ|œ"j´ŸsbŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •ÆšœŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ œ"j´ŸsbŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€•ÆtŸʈxó|ó‡ó•ó©ó·ó Ìó Õ€•Æè¿Ÿʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æè¿Ÿʈxó|ó‡ó•ó©ó·ó Ìó Õ€ •Æ œŸʈxó|ó‡ó•ó©ó·óÌóÀÄ¿ðXʈ•qŸâL&0:¤Ÿ–ô&À#uœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢PœP¢PPPPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PœP¢PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹ ++œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹ ++µ5Æ5TW6Æ5èW6Æ5èGÕ6¨¤‚£‰£¿ý¾¨¤‚£‰£¿ý¾¨¤‚£‰£¿ý¾¨¤‚£‰£¿ý¾¨¤‚£‰£¿ý¾¨¤‚£‰£¿ý¾~”ŒöœÀaí¥[¥[/¤Uj6‰ʈ¥[´ÙVá¥ì¥ͤФå¤s÷ÙVì¥ͤФå¤/¤~”œÀŸ~”:¤~”:¤:¤2j´¨¤‚£¨¤‚£~”œÀ¡|Ujâ±èüæ_÷ ké $æ ™÷ ç ¸äs÷~÷‡6“6 6âLͤФå¤~”œÀ¡|s÷Ujâ±èüæ _÷ ké $æ ™÷ ç¸äðXì¥ͤФå¤~”œÀŸw¦Ÿª‰£Ÿª‰£Ÿª‰£¨¤‚£‰£aZsb~”œÀ‰£¥[:¤~”Œö¾öÇöœÀaíâL~”Œö¾öÇöœÀaí:¤~”Œö¾öÇöœÀÜ÷aíâL~”Œö¾öÇöœÀûöaí²~”Œö¾öÇöœÀ:¤:¤sb&Àsbsb:¤sbsb ºUj¦6ÙV:¤sb ºÙV ºsb º²6:¤ º º~”œÀaíCÁUj¦6R„M º•Æ¥[¥[~”œÀUjââUj¹6ú~”pú¾öœÀaí:¤â±|œUjšœUjÃ6 œUjWjA±ì¥ͤФå¤Ujè¿âL“uUjÀâL“uUjÆ6šUjÆ6òš~”œÀUjÌ6 ÀÄ¿UjÓ6Ù6šâL#šaZUjß6šw¦sbUjaZsbsb`Ü¢~”œÀUj`á¥-‘å6ì6 ü6 7 7ššaZ~”œÀ`ZO!7zÌšUjÃ6&ÀUj/䄇Uj/ä-ÀšaZUjøtzÌš%74ÀšaZ%7Ÿ¤Þ«~”Uj+7%7zÌššz37Uj; û~”œÀUj77û&û/û 8û Aû Jû´M:¤šaZUjCÁ¦m?7šUjÅÅ;ÀUjBÀUjIÀû~”œÀ„aíïêjú û &û /û 8û AûJûI£û~”œÀû&û/û8ûAû Jû´M:¤~”œÀaíÈI£sbsb~”œÀaí:¤B ~”œÀ%7}üaít%7¨¤‰£¿„‡-À4À; ¨¤‚£¨¤‚£¨¤‚£‰£¿¨¤‚£‰£¿sb¨¤‚£‰£¿~”òëœÀaíÈsb;À~”œÀaíÎI£~”œÀ ÎaíI£~”œÀaíÎI£~”òëœÀaíÎI£Õ{ ºUj`Í:¤™«~”œÀaíÁi¨¤‚£aZsbUj`ÍšbA±ÙVUj`Í:¤Uj`ÍšbÙV~”Uj`ÍšbA±ÙVdÍ~”Uj`Í:¤Uj`ÍšbÙVdÍoÀ~”Ž¿ðX~”I :¤Q7Ö§~”œÀòëaítI£~”œÀçýóŽ¿Æc¨¤‚£tçý-‘ÆcÔ¾ðXZ7.y~”œÀKýžþUjøm¦mæm ᥠZ7 `7 .y ¿Ä}üì¥ͤФå¤~”œÀaí:¤§þ:¤~”UjCÁ¦mf7.yaZžþþÆaZ.y:¤UjCÁžþ.y¨¤‚£/¤¨¤‚£sbCÁsb~”œÀUjo/¤sb=ÿsb¨¤‚£Ÿ‚£:¤~”œÀm7A±~”œÀUjâLPÎ~7~”œÀ:¤~”œÀPÎGÕöäˆ7®åŸ y š7 ì¥ ñ¥ ͤФå¤Ày~”œÀA±/¤´:¤§7sb'ÿ§7~”œÀaÿ'ÿ:¤~”œÀaÿaí:¤~”œÀŸ~”œÀaÿⱸäâLy¬7:¤~”œÀaÿ:¤~”œÀaí:¤~”œÀA±~”œÀaí^ Ô¾ üðXœÀ/¤~”œÀ:¤~”Uj¸7Ú¾~”îÿUj¿7÷{Ò7ß7¸7 ç7 6„ ì7 â± ¬7y88ì¥ͤФå¤~”îÿ:¤Uj´M¸ëá¥ðX8#8ì¥ͤФå¤:¤¿sbsb~”Uj(808vu88¢xUj¥ñ@8Úª4 sbsby+Ý¿BÀ&¿-wIÀIw… þB V¡~”ÙåóŽÙµ³i:¤:¤:¤:¤hÖ§hÖ§hÖ§ÙhÖ§I£ÙhŸ¸:¤ÙG8hŸ¸Ÿª‰£h’htI£~”hœÀÖ§tI£~”aíœÀÊI£I£ðXðXsbðXY¦kðXëaZUjsbsb~”aíÈ^8œÀ~”aí«^8œÀ~”aíi8^8œÀhÖ§I£ %;åR _ l n8t %;n8åtsbhÖ§I£~”hw8Ö§MÜ¢öMsbsbsb\ ºUjI ‰8\’88§8¼8Ç8Ñ8‰8~”œÀm7A±~”œÀm7A±~”aíPÎÚ8œÀ\UjίPΉ8~”aíú^8œÀ\~~úã8í8Hê‰8~”<aíóŽF±h  ‘  I œÀNø8~”<aíóŽF±h  ‘  I œÀNÿ8~”aíú^8œÀ\9ú9#9(9~~‰8\ŽÇ8-9‰8sbæO\‰8sb‰8~”œÀòëUjâL–aítsb~”œÀòëUj49L 99aíA95 oÀ¨¤‚£aZsb~”5 H9I£H9I£5 MâL~”5 H9øtI£Ô¾5 µʈ‹t~”œÀT9KýÔ¾‹t¥[5 MâL~”œÀ5 „Laíe9ŠãŠãÔ¾ŠãŠã/¤aZ:¤~”œÀ5 ûÀk9x9‡9Ÿ9¦9UjÜ¢:¤¨¤‚£/¤3sbì¥ͤФå¤á ~”5 óŽ:¤/¤Ü¢~”sbsb~”sb®9sb~”ʈ:¤~”5 ÙVá ¨¤Ï ´~”œÀ ʈ µ9¼9:¤¼9:¤ ¼9âLÆ9 ¼9âLÍ9¨¤‚£6 ~”5ß 5 óŽL V  o  È  ᥠ†  Ô¾Ô9ì¥ͤФå¤:¤ MâL~”:¤ö9:¤2j´:¤ý9¨¤‚£6 ~”5ß óŽL V o :¤~”:~” ::¤:¤::::5 ÔÀ~”œÀ È~”:M$:M:t ':ðXÔk.:5:~”óŽ<:[: ðXb:k:sbo:b:sb~” 5 ªo:w:~”I ~” ~:sb~”󎣿~”œÀóŽ…:¨¤‚£ ‚£‰£~”œÀóŽʈ}îÆcŒ:~” À}È~”œÀaí¿~”œÀaí¿“:œ¿sbî¿!7:¤~”–âLaíÈ~”ˆïïœÀaí £~”–ÙþŸ§¡|Ÿª‰£Ÿsb2j´ŸsbŸª‰£Ÿª‰£Ÿª‰£Ÿª‰£~”œÀŸâLUjå6Ÿ¸¿ö~”òëœÀaíÈ~”òëœÀaíÈ~”òëHêaí–²I£Ÿª‰£~”œÀ¥[¥[~”œÀ¥[¥[~”œÀNT[I£‰ÀŸª‰£Ô¾~”t~”œÀâLóŽŸ:À/¤Ÿª‰£Ÿª‰£Ÿª‰£~”œÀŸ¦:/¤~”œÀ$æaíA±~”°:œÀçž~”ʈßèkéý¾$æHêŸPê/¤·:»:~~Uj6;~~Uj6;ÀÕ:¤y+Ý~”ʈœÀUjðX:¤~”$æüæœÀN~~Ujßè 6 ; T Zsb~” ʈœÀUjZaZsb¿:aZsbUj6Uj6•¿:¤¿:Uj6sb~” ®÷$æÆàüæʈÉ: ¿: œÀ aí°:~” ®÷$æÆàüæʈÉ::¤sbÆcðXUj×:ŸµÔ¾ã:¨¤‚£Ÿ‚£sbcÔÀ¨¤‚£Ÿ‚£~”–gUjJëqz¸ä cê:ÔÀ~”–Ÿ~”ã$æ®÷GÕyš7ì¥ ͤ Фå¤î~”œÀaí £î~”œÀ:¤î~”œÀaí £î~”œÀ:¤ÆàüðXœÀÆàüðXœÀ¥[¶Æcý:;~”¶çž=öë;çž~”á+;=ö~”á=ö~”=ö~”ʈá=ö~”ʈßè=öA±6~”œÀH;Í~”ÆàM~ˆœaí¶ v£ !™Í~”ÆàMv£!™:¤=öy+ÝaZ®+±+=ö~”=ö~”5ʈK³iŸª‰£~”œÀuæO;a;Ujm;Ûì {r |; ¡| ʈaí‹;Ž[l[äWl[äWæOPæOPP¤cM™;;¤cpuM™;~”œÀ®÷$æaí‹ÍŸâ±â±Ÿª‰£ŸUj:¤Ÿª‰£Ÿ:¤Uj`:¤ŸUj:¤:¤Ž[l[äWl[äWæOPæOPP~”œÀCÁûêî¹iã$æ®÷¡;ýõšœ¥;ª;~7ýõšœ:¤ã¡;³iã$æ®÷‹Í:¤~”œÀýõ|œœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPÍPÆàüðXœÀ~”IœÀUj:¤:¤ûÄûÄ~”UjûÄ~”œÀUjâ±Æà®Ãçž~”œÀUj•â–¹i~”ýõIœÀtçžIœÀ|œ~”ýõIœÀtçž~”ýõIœÀt~”ýõIœÀZÒçž~”ýõIœÀbZÒçž´±:¤~”œÀâ±ZÒbuæUj‰® @âçž~”œÀⱃZÒbuæUj ‰® @âçž~”œÀⱃZÒb‰®uæ UjçžØ; œ~”ýõœÀâ±@âZÒUjbçž:¤ûÄá;~”UjûÄt~”ÆàœÀUjâ±®ÃçžUjËÇPÎtáømáKœÀUj5áPÎtt®÷KUjPÎtPÎtsbtt÷it~”ÆàœÀUjå;:¤ø;t~”œÀUj•â–:¤~”ýõœÀbuæUj`ƒ ZÒ ‰®çž~”ýõÆàœÀtçžtœÀt|œ~”ýõÆàœÀtçž~”ýõI.¿i:¤~”ýõI.œÀ8AçžaZsb:¤&csb:¤:¤~”ýõIœÀZÒçž~”ýõIœÀbZÒçžØ;´±:¤~”œÀⱃZÒbzuæ Uj瞟µÆà§œÀ玟µÆàœÀ:¤<<!<aZømaZðX:ÃUj&M˜<I£~”Ÿ%¥[:ÃUj&Mt~”Ÿ%8¥[ž<~”Ÿ%8¥[~”%¥[¥[%ðX~”%¥[Ÿÿ¥¦¦Uj¢<sbì¥ͤФå¤:¤:¤:¤/¤/¤/¤Ÿ~”ó`%Uju¤I£%¿ˆøm~”s%UjI£pas%UjI£Ÿ~”ó`%u¤I£Ÿpa~”ó`s%UjÀI£~”UjI£ŸßÞñ~”a%Uju¤ I£ŸBßpa Ja!Þñ ~” Ø;:¤ŸýµBß@|üœÀ pa  Ja ! Þñ¢<瞟ÿ¥¦¦Uj°<sbì¥ͤФ夿ˆʈøm~”¹i½<çžJa|œ¹i½<çžßJa~”Ø;¹iŸýµBß@|ü¤í °< JaçžÞ<~”œÀ çUj?oô<Ùãsb=çž=çž=k±f=åÍl=u=ajⱉ® çž~”½Ðž=¤=±=çž~”½Ð³i~”½Ð5áÞ<~”œÀ¤={öÚ±ô= Uj~”œÀýõaí >UjÆà#瞽Ф=Y>±=Uj¦çž½Ð³i½Ð5á~”œÀýõaí¶~”œÀýõaí½>UjÆàUj³iUj6‰ʈ¥[sbÆc玳i³i³i³i³iãsb³i³i³i³i³i³iãsb¹i|œšœ œè¿À‹Íšb‹Íšbk±f=l=¸äˆƒÄ>‰®Ó> Ù> ä> ͤ Ф夋ÍÄ¿ À#&À„‡~”½Ð‰£~”œÀ³i¹i{öÚ±~”œÀ³i¹i:¤~”œÀ:¤~”øm~”œÀøm¹i|œšœUj œè¿ÀÄ¿ À#½Ð‚£~”œÀýõaí:¤Ùý>?oŸ¡|Ÿ¦¡|$?÷Ñ ç-?Uj^?–â±m?~”œÀaí³iøm~”œÀýõ³i~” çm?Uj¡|çž~” ç–³iøm+@~”–aíøm+@~”ømUj+(o@~@Ž@áÁ~”ømUj+(o@~@Ž@áÁ •Æ~” çøm+@÷@ AA’M Uj~”– çaíXA³iøm]A~”–aí ç­A5áXAºAUjïAI£Uj&BI£~”ømUj&BI£Uj„B‘B¥B~”UjⱄBïAÄB‘BÒBUj^?I£UjCI£UjÄBcXC~”Uj„B‚C–óŽ÷Ñ~”„B‚C–óŽ­C~”Uj„BòC‚CçÄBC ‘B &B – óŽ þCsÎçž~”–aí ç³iøm]A5áømâLÆc5áømøãÆc5áøm„LÆc=5á5áøm«DÆc~”5áømâLÆc~”5áømÞDêD~”5áømÞDêD.yEE Æc~”5áøm8EâLÞD¦mE Æc~”5áømâLÞD¦mEÆc~”5ásb~”aíUj­A5á–¾ö~”œÀ çýõaí­AUjÆàŸª‰£Ÿª‰£Ÿª‰£Ÿª‰£Ÿª‰£~”aíœÀá¥~”œÀŸUjá¥UjøtUjÚEçž~”aíœÀá¥~”aíœÀá¥~”aíœÀá¥y+ÝâLUjçž~”ømïÜ¢~”aíømUjœÀâEçž~”aíømm?UjœÀ瞟â±sbŸª‰£/¤•Æsbsbsb•ƕƕƕÆUj¨¤‰£CÁo@•Æ~@öE•ƕƕƕƕÆUj¨¤‰£o@F•Æ~@¬•Æ~”ømUj+(o@~@Ž@áÁ•ƕƟª‰£Ÿª‰£~” çF¡|Fšœøm~” çF:¤~”¾ö–ŒöaíâLaZ´M:¤:¤~”¾ö–ŒöaíâLaZ´M:¤:¤~”CÁ–:¤~”–aí ç¾öF|œøm]AŸª‰£Ÿª‰£Ÿª‰£Ÿª‰£Ÿª‰£Ÿª‰£~”UjâL~”UjâL.yçžçž~”aíòC– £aZçž~”aíòC–(F £~”aíømUj–âE=¦‡ú »­ ï 4F Ü¢ âLâ±AFì¥ͤФå¤aZ~”Uj‡âLçžçž~”–Ÿ:¤~”aí–$?®÷á¥Æ÷¸ä Uj IF +™ ì¥ ñ¥ͤФå¤çž¨¤‚£‰£¨¤‚£‰£~”¿isb&csb&c5áømâLÆc5áøm²•qsb&cøm«D:¤~”5áømâLÆc~”5áømÞDêD.y:¤~”&M:ÃâL¨¤‰£8E.y~”5áøm²•qM³i¹i~”œÀýõ¿~”œÀømsb~” ç–¿øm~” çaí–XA £øm]A~”aí–¿øm~”œÀOFUFøm~”aíUj–¾ö|œømUj6‰ʈ¥[~”œÀUj²~” çaí–XA £øm]A~” çaí–ý¾øm]Ašœ:¤:¤~”Ujâ±{r¡|zÌÀâuæ   çž~”œÀýõaí³iÆà~”œÀýõaí³iÆà~”œÀýõaí³iÆà~”œÀýõaíM?¥zÌÔ¾Ýsb~”Ÿ»FÐFÞFìFømâL~”œÀŸ G»FÐFÞF~”œÀ4G5á~”Ÿ»FÐFÞFìFømâL~”œÀŸ G»FÐFÞF~”œÀ4G5áømÁi~”5áømì¥ͤФå¤~”Ÿ»FÐFÞFìFømâL³i¥[»:Ÿ[Ý:ß[Ý:ߪ‰£~”Ÿ»FÐFÞFìFømâL¥[~”Ÿ»FÐFÞFìFømâLŸª‰£Ÿª‰£ŸsbŸsbaZsbŸsbaZsb~”œÀŸ GGÀGømÁi~”5áømì¥ͤФå¤~”Ÿ»FÐFÞFìFømâL³i¥[»:Ÿª‰£~”Ÿ»FÐFÞFìFømâL¥[~”Ÿ»FÐFÞFìFømâLŸª‰£Ÿª‰£ŸsbŸsbaZsbŸsbaZsb~”œÀŸ GËGÀGŸHCÁ~”œÀømCÁHUj9Hçž~”œÀømçž~”œÀOFøm~”œÀUFøm~”øm~”øm~”øm~”øm~”œÀømçž~”œÀømŸCÁ:¤¤Iaí¶IÉICÁ¤Iaí¶I$JœÀUj 8J aj ί çž~”…JaíJ~”…JaíóŽÓJÛJëJÆà~”…Jaíʈ,K5ˆÆà~”…Jaíʈ5jK~”œÀaíõÆàJuZOœP¢P¨PÁPœP¢P¨PÁPÇPZOZOœP¢P¨PÁPœP¢P¨PÁPÇPZOPPPPœP¢P¨PÁPÇPœP¢P¨PÁPÇPuœP¢PœP¢PZOZOœP¢PœP¢PZOZOPPPPœP¢PœP¢PuœP¢PœP¢PZOZOœP¢PœP¢PZOZOPPPPœP¢PœP¢Psb³iPÎÍì¥ͤФå¤~”CÁçKýbStSSŽS ›S ¨S µSª;~”CÁçKýbS:¤aZ´M{i¹i|œA±ÂSËSðXì¥ͤФå¤~”…JÕS¼ÍðXœÀðXœÀKCÁaj³iÆcKŸª‰£~”ÆàA±t~”óŽÆàçbSàSëS~”óŽÛJÆàÕSñS=ö~”…Jʈ5ÆàøSaíT~”…Jʈ5ÆàøSaíT~”sb~”¹i~”³i|œšœ œT&T=¦PÎì¥ͤФå¤sb¥[/TCÁBT=öè¿~”…Jaíʈ5³iy+ÝaZ®+±+=öÓJá¥LTbSëS=¦Íì¥ ðX ñ¥ J¦ G¦ S¦ͤФå¤5¥[ì¥ͤФ夈,K=öá¥STT=¦ZT ì¥ ñ¥ J¦ ͤ Фå¤kTrTkT¥[~”œÀaíCÁuæ¡|‡úßç { ö Uj bS KýçŸÀâ¦TðXajoðXI£ajœÀUu~”ŸðXCÁL ᥠçž~”ß7UjðT~~HêUᥠçž/TUu~”ß7UjðT‚C$U/TœÀUu~”ß7UjðT‚C ŸCH 瞘<õœRj|›&M:Ø<õœRj|›&M:Ø<õœRj|›ˆ®+±+˜<õœRj|›ˆ˜<õœRj|›»¾ÐИ<õœRj|›&M:Ø<õœRj|›&M:Ø<õœRj|›¥[&MõœUj˜<õœRj|›âLRjÖ§Ujʈ„L瞘<yžRj|›Ö§ŽžŸUj µ ʈ õœ óy à¹øt瞘<yžRj|›Ö§ŽžŸUj µ ʈ õœ „L óyà¹øtîÂçžyžŸîÂðž÷žyžŸîÂðž÷ž˜<yžõœRj|›³i;!Uj|›óy™«;!Ô¾˜ÆUjŸµçž;!UjÔ¾,îÂןóy|›þŸ˜<yžÖ§¹i˜<|œ˜<šœ˜<õœyž|›,o˜<õœyž|›¥[˜<õœ|›,o˜<õœRj|›óyÚ â ŸµUjâL˜<õœRj|›ŸµUj¡ ¡Ÿ>µUj¡ ¡˜<õœRj|›ŸµUj<¡ M C¡Ÿ>µUjC¡Æc˜<õœRj|›¥[m¡˜<õœRj|›âL˜<õœRj|›âL˜<õœRj|›âL˜<õœRj|›âLÔ¡˜<õœRj|›âLò¡—˜<õœRj|›âL˜<õœRj|›âL˜<õœRj|›âL„L˜<õœRj|›âL˜<õœRj|›¿˜<¢¢¯¢º¢Ç¢Ò¢á ˜<iUjuŸõ¢˜<£iUj'£u瞘<J£è¿ œ˜<õœUj|›&M:Ø<õœUj|›&M:Ø<õœ|›J£ ÀÄ¿˜<õœ|›J£Í£#˜<ë£J£Í£&ÀInµUjʈý9Ô¾/¤5¤ çžInµUjʈý9çžë¤þ¤InóŽUj¥¥ 瞘<ë¤þ¤InóŽÒ¢µUjʈj¥Ot[l玘<õœUj&M:õUj¨¥µ¥À¥o.çžÀ¥o.瞘<õœŸµUj¨¥µ¥À¥ o. 瞘<õœŸµUj¨¥µ¥À¥ ú¥ o. ¦˜<InõœÒ¢ŸµUj ʈ j¥ @ 9¦ 瞘<|›InõœJ£î óŽ  ¢ Ò¢˜<î InóŽs¦˜<|›ßèʈ;!Uj&M:ÃaZʈ;!Uj&M:Ãʈ;!Uj&M:Ãʈ;!Uj|›&M:Ãʈ;!Uj|›óyʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLʈ;!Uj|›âLÔ¡ʈ;!Uj|›âLò¡—ŸµUjá¥çžŸµUjóyÌyþŸçžŸUjÌyþŸçžè ŸµUjóyÌy;!ʈ¥[ʈ;!UjO©W©ŸµUjÔ¾v©³iõê¥[Ž[á"ç"j‡l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[á"ç"j‡¤l[äWl[äWŽ[á"ç"j‡¤l[äWl[äWŽ[á"ç"j‡¤l[äWl[äWŽ[á"ç"l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWµUjʈ:¤”jŸµ¿ˆè º©Ÿµ¿ˆè Psb&cªUj$ª-ªŸò™âLuœP¢PœP¢PœP¢PœP¢PPPZOZOšbZOZOPPaZá |›aZá Ž[á"ç"j‡¤l[äWl[äWl[äWl[äWæOPæOPP‚›ö«I£˜<|›†›:¤‚›ö«I£˜<ðXøãû«I£˜<ðXøãI£:¤t:¤t:¤t:¤t:¤t:¤t:¤t:¤t:¤:¤øãðXy+Ýy+Ýt:¤ðXt¬:¤ðX¬I£˜<|›Óeõœ˜<õœRj|›âLÓe³i˜<õœRj|›âLÓeI£˜<õœRj|›&MâLUjʈI£¹i˜<õœRj|›âLŸ„‡˜<õœRj|›âLô<ŸI£˜<õœRj|›âLô<ŸI£˜<õœRj|›&M:ÃI£˜<Rj&M:Ãʈ-À˜<õœRj|›ˆnµkµI£˜<õœRj|›ÐÐI£˜<õœRj|›&M:ÃI£˜<Rj&M:Ãʈ4ÀŸ>‰£¿˜<|›†›âL˜<|›„LI£I£˜<Rj|›Ÿõœà¹I£˜<Rj|›Ÿõœ%7I£˜<Rj|›Ÿõœà¹âLI£˜<Rj|›Ÿõœà¹âLøtI£˜<Rj|›Ÿõœ%7I£˜<Rj|›ŸõœâLyI£˜<Rj|›ŸõœâLøtI£I£˜<ŽžUj¬¬þâLŸ‚£Ÿ‚£Ÿ‚£ʈâLUj¼9%7¨¤‚£˜<Ujµøt¼9Ô¾Ô¾˜<Ö§õœà¹|›á Ô¾I£RjÖ§ŽžŸUjʈá Ô¾I£I£˜<Rj|›Ÿõœà¹ðžI£I£I£˜<Rj|›õœà¹ðžI£˜<Rj|›õœà¹÷žðžI£I£˜<Rj|›õœà¹%7I£I£I£˜<Rj|›õœà¹CÁ#¬I£I£I£˜<Rj|›õœ%7I£I£I£I£˜<Rj|›õœðžI£˜<Rj|›õœà¹ðžI£I£˜<Rj|›õœðžI£˜<Rj|›õœà¹ðžI£I£˜<Rj|›õœà¹ðžI£I£˜<Rj|›õœà¹âLI£I£ŸÔ¾I£˜<Rj|›õœà¹ðžI£ŸÔ¾ŸÔ¾I£˜<Rj|›Ö§õœà¹CÁ#¬ '¬I£I£˜<Rj|›Ö§õœà¹CÁ'¬ #¬I£I£˜<Rj|›õœà¹ðžI£˜<yžRj|›Ö§ŽžøtŸ Uj µ ʈ õœ „Lóyà¹I£˜<|›Ujóy™«˜<yžRj|›„LþŸà¹Ö§ Žž øt Ÿ Uj µ>ʈõœI£UjMâLšbA±sbóyŸ¥I£Uj¿ˆð{R£^£j£¿ŸÀ ÀaZ®+±+˜<âL˜<yž|›õœ¥[˜<yž|›,oõœ+¬0¬|œ+¬0¬|l+¬0¬C¡I£˜<õœyž|›:¤óyŸ>:¤˜<0¬I£˜<Rj|›óyŸ>+¬¥[˜<õœRj|›óy¥[Ÿ‚£‰£˜<õœRj|›ý¾ £I£˜<õœRj|›4¬9¬I£™«sb˜<õœRj|›Ÿ>¬H¬˜<õœRj|›ŸR¬>¬˜<õœ|›Rj[¬`¬I£Ÿe¬:ß‚£‰£˜<õœRj|›ŸµUjM |lj¬˜<õœRj|›ŸµUj<¡ M »bI£m¡Ÿ>µUj ¡Ÿ>µUj|lj¬‹tö«I£|›¥[Ÿ>µUj<¡I£Rj|›¥[m¡Ÿ>µʈ Uj n¬ <¡I£Ÿª‰£˜<õœRj|›âLŸ[Ý:ß[Ý:Ø<õœRj|›âL¥[Ÿª‰£˜<õœRj|›âL˜<õœRj|›âL¥[; BÀ˜<õœRj|›—à¹;ÀâLŸ‰£ʈsbsbµUjó޳iŸª‰£Ç¢Uj:Ç¢y‚¬aZerÇ¢á ŸÍ£Ç¢è¿Ç¢:Ç¢µUjÀÇ¢µUj¥¬I£ŸÄ¿¢¯¢Ò¢Ÿ¸¬Ô¾ͬI£¢¯¢Ç¢Ò¢á ŸµUj ¸¬ Ô¾ ͬ ¥¬I£¢¯¢Ç¢Ò¢á ŸµUj ¸¬ Ô¾ ͬ ¥¬I£¢¯¢Ç¢Ò¢á ŸµUj ¸¬ Ô¾ ͬ ¥¬I£¢¢¯¢º¢Ç¢Ò¢á Ÿ µ Uj ¸¬ Ù¬ ,îÔ¾ͬ¬I£˜<õœUj|›&M:ÃI£˜<Uj&M:Ù«˜<õœUj|›&M:ÃI£˜<Uj&M:Ù«õœþ¬UjuŸµiI£ó޵Ujsbó޵Ujý9ý9ý9ý9ý9 ­'­ý9󎟵Ujý9ý9˜<õœ6­&M:Ø<õœUj|›iu瞘<J£ë£Í£ý¾˜<õœJ£¢Ò¢Uj¢6­á ˜<õœ6­&M:Ø<õœUj|›iu˜<õœJ£6­Í£ £˜<õœJ£¢Ò¢Uj¢6­À¥¥#¥Ì«Ñ«çŽÀ À˜<õœUjÀ À˜<õœUj&M:Ø<Ÿ&M:Ø<õœŸUjB IÀsbsbsbsb˜<õœŸµUj¨¥µ¥À¥o.˜<õœŸµUj9¦¨¥µ¥À¥/¤/¤µUjʈý9¥#¥Ì«Ñ«˜<õœ6­&M:Ø<õœUj|›iu˜<õœJ£6­Í£ £˜<õœJ£¢Ò¢Uj¢á 6­˜<õœJ£¢Ò¢Uj¢á ˜<|›õœ&M:Ø<|›õœUjiu˜<|›õœJ£ý¾ £˜<|›õœJ£¢Ò¢Ujá I£óŽŸµUjý9I£˜<|›&M:Ø<Uj|›iu˜<|›ý¾ £I£˜<0¬|lI£˜<|›0¬+¬|l˜<|›¥[ʈ;!Uj&M:Ã|›ʈ;!Uj&M:Ã|›³iʈ;!Uj|›óyI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLI£ʈUj™«ʈ;!Uj|›âLÔ¡I£ʈUj™«ʈ;!Uj|›âLò¡—I£ʈUj™«Psb&cµI£ŸÈ⟵UjóyÌyd­¥[]jUj˜<I£ʈ¥[Ÿ]jUjüw¥[¥[ʈ;!UjO©W©|›ʈ;!UjO©W©I£ʈUj™«³iPsb&cI£Ujv©˜<i­I£s­šbA±™«aZ™«aZ³iaZsbŸµA®¹iUj³iŸA®en¦m³irÝ_®ŸUj•qrŸUjrÙV„LUjâL»bÁi瞟Uj•q ¯#¯šiŸÐПʈUjX¯rÝo¯sb{isb{iŸ¥¯¿i;gŸ»¾ŸµUj»¾ô¯aZ{iÁiŸ»¾{ig°€°2ª‘°ŸÈ2ªxUj«°MçŽà°ó°Ÿʈ\ï±pï+±ïFª 0± X¯ 瞟ʈ\ï±pï+±ïFª 0± X¯Ÿʈ\ï±pï+±ïFª 0± u± ~± M X¯Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®X¯g°Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®MX¯ȱ»bŸʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®g°•qŸ+± ±F®²²çžŸʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®²²Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®g°•qX¯²²‘°Ÿµ «‘¯•qa² œŸʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®²•qX¯©²Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®ȱMFó•qͲֲ޲沟 «‘°³Uj-‘³Ÿ «‘°³Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®‘°³i•q[³;gȱMFóúֲ瞟ʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®‘°•³¹i•qFóæ²Ͳ·³Ÿ «ʳ¦m •Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®šœ:¤Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®ã¥û©ûŸʈµ «\ïcï±pï +±  ± ´ ˆï ïÁiŸʈµ «\ïpï+± ± ˆï ï €ïŸʈµ «\ïpï+± ± ˆï ï z´ »bŸʈµ «\ïcïpï+±  ± ´ ˆï ïŽ[á"ç"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPuPPPæOæOPæOPPuœP¢PZOœP¢P¨PœP¢PœP¢PœP¢P¨PœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PZOœP¢P¨PÁPœP¢PZOœP¢P¨PœP¢PœP¢PœP¢P¨PœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PZOœP¢P¨PÁPPPPPPPPPPPPPPPœP¢PœP¢PœP¢P¨PÁPœP¢P¨PÁPœP¢PœP¢P·:»:Ÿµ2¹;¹ ™uœP¢PœP¢PœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PZOœP¢PœP¢PœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PZOPPPPPPPPœP¢PœP¢PPPl[äWl[äWæOPæOPPUjâLŸUjrÙV„LŸUjr„L³iUj¦mCÁ¸ë¹iUj}n¦m¸ë|œŸUjrâLÙV–šœUjGĸ렜UjrÙVMâL³i^»ÁiðXðXðXðXðXðXðXðXðXðXðXðXðXðXðXðX¹i}nŸdv}nCÁÄŸUj ¯w»âLŸÐПÐПÐПUj³iŸÐйiœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PŸ‚£‰£Ÿ‚£‰£ÅÅÈUj¨»Ž¡ŸÈUj³iŽ¡M:¤çŽà°à°œP¢P¨PœP¢P¨PFªrÁiŸ³iŸ ±enÁ»‰£ŸÁ»¿iȱðXUj‚£‰£Ÿ‘¯•qô¯¹iŸµUj;g¾Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®g°•qX¯²‘°Í»|œÁiŸµ «;g¾Ÿµ «‘¯•qa²sbFó•qͲæ²çŽŸ «‘°³Uj-‘³¥¯Ó»•qŸ «‘°³×»¥¯è¿•q «•³ʳÚ»en¦m¥¯\ÑÚ»en•qŸ «ʳâL¥¯\ÑâLÞ²•q «ʳGÄ¥¯\ÑGÄ•qŸ «‘°ʳụ¯\ÑŸʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®‘°•³¹i³i•qFó•qFó•¿æ²Ͳ·³ «ʳen¥¯\Ñen•qŸ «ʳ¦m •×»¥¯\ѦmCÁ•qŸ «•qFóʳ¦mCÁçŽ •CÁÝŸʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®|œè»•q玕qʳ×»Ÿʈµ «\ï±pï+±  ± ï Fª 0± u±~±‘¯F®šœ:¤ð»çŽŽ¡¼sbŸʈµ «\ï±pï+±  ± ˆï ï Fª 0±u±~±‘¯F®MÁi¼MÁiÁi³iÁiõœŸµUj&M:ÃõœŸµUj&M:ÃõœŸµUj&Md¼:ßµy¼UjsbŸµy¼ž<瞟µ¥[Ÿµ¥[ŸaíÙV€°Ÿ,o½ŸµtÙVtâLŸµÙVtâLŸµ³itâLŸµ„tâLŸf€mÔkŸµ„tµUjÔ¾,6 í½UjóŽÔ¾,îý½ †  ?ß ¾ ¾ ¾C¾óŽ¿ˆ˜¾ʈømŸçž¿ˆ˜¾ʈømŸµUj&M:ÿˆóŽ¿$¿ƒö俈óŽ¿$¿ƒQ¿T¿?ߟµUj?ßÔ¾ŸµÔ¾äìUj?ßaZµUjÍ¿Uj%îÔ¾,îï¿ y÷¿Ÿ µ À ”y À ÀÀ çžè Uj%îÔ¾,îDÀï¿ y çžè ŸµäìUj%îÔ¾ y ,î ?ß ’MUjŸ¿ÄaZzÀ‡ÀçžzÀŸµ¬x9‡ÀaZ¿Ä UjŸµ¿ˆóŽuUj¬Ÿ‚£‰£Ÿ‚£‰£ŸµUj&Mõœ:ß‚£‰£uPPPæOæOPæOPPõœŸµUj&M:ÃõœŸµUj&M:ßµUj&Mõœd¼:ÃõœŸµUj&M:ÃõœŸµUj&M:ßµ¥[Ujy¼ž<Ÿµ¥[Uj:¤Ÿ‚£‰£BÁ‚£Ÿµ¥[ŸfÀ}:¤¥#¥Ì«Ñ«Ž[á"ç"j‡l[äWl[äWŽ[á"ç"j‡l[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWŽ[á"ç"l[äWl[äWuPPPæOæOPæOPPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢PœP¢PœP¢P¨PÁPœP¢P¨PÁPŽ[l[äWl[äWæOPæOPPŽ[á"ç"j‡¤l[äWl[äWœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPÍPœP¢P¨PœP¢P¨PœP¢P¨PZOZOœP¢P¨PZOZOPPPœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹sbŸµUjµUjó޵Uj’|6‰µUjóŽ::::sbM³iÖ§³išÉ³iŸ¹i|œšœ¹i֧迚ɹiÖ§|œªÉÀ¿ˆí½Uj󎟵¹ÉÄ¿šœ¿ˆ6 í½UjóŽÔ¾¾¾ Ÿ µ ͬ ÇÉ šÉªÉ¿ˆ6 í½UjóŽÔ¾¾¾ Ÿ µ ͬ:¤:¤:¤:¤:¤:¤:¤³iŸµUj&Md¼:óiÔ¾´ÙÉÔ¾ÔÀ¿ÔÀsbsbsbIn³iè ŸµUj%îÔ¾ y,î ’M DÀw?ߟ‚£Uj%7Uj‚£Uj‚£UjöÉðXI£ŸUjöÉâLÊðX瞟UjöÉâLÊðX瞟µUjöÉšbUjµ•ƵUjsÊUj‰ÊI£è  Uj” %­Ê ‰Ê çžè  Uj” %­Ê ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê ÷Ê þÊ Ë ‰Ê çžè  Uj” %­Ê Ë ‰Êè  Uj” %­Ê þËè  Uj” %­Ê ðXè  Uj” %­Ê ðXè  Uj” %­Ê Ë 2Ì <Ìè  Uj” %­Ê D¤è  Uj” %­Ê Èè ‰Ìï¿‘ÌŸµ %î ”  Uj ÈUjçŽè Ÿµ %î” ˜Æ?ß ï¿ Ujè Ÿµ˜Æ?ß %î”  ï¿ UjsbŸUjöÉâLÊðX•ƕƕƕÆþ̕ƕƕƕƕƕƕƕƕƕƕÆ/Í?oᥥ[;Íì¥ͤФå¤sbFÍ•ÆsbUjsb‰Ìï¿‘ÌUjá¥ðXtì¥ ͤ Фå¤Psb&cÆ:¤è  Uj” %­ÊðXè  Uj” %­ÊðXcͳi¹i|œšœ œè¿ÀÄ¿ À#&À„‡-À4À; ;ÀBÀIÀB oÀ:¤:¤:¤:¤:¤sbsbsbsbsbsbsbsbsbsbsbsbsbsbŸ‚£sbsbsbsbsbtsbþËsbè  Uj” %­Ê ’M ‰Ê ì¥ ͤ Фå¤ðXðXsbðXsbsb<Ìsbsbè  Uj” %­Ê ’M ‰Ê ì¥ ͤ Фå¤UjUjsb˜Æ•ÆMâLUjMi͘ÆâLsb‘ÌçŽì¥ͤФ夑Ì:¤wÍwÍʈ"²³iŸµUjʈ"²Ô¾ʈ‹tŸµUjʈ‹tŸµUjéÍÔ¾ŸÎΟµaÿⱸäâL¾éy HêFÎΟFγiŸµUjFγiŸµUjFγiŸ¦m¦Î¬ÎŸµUjFγiŸµUjFÎÞΟµUjÏFÎ5Ï™«wUjʈµbÏ5Ï™«FÎI£÷{UjŸʈµbÏ5Ï™« FÎ ŸÏ §Ï çžʈŸµUjÏÏÎãÏñÏ ÷{ʈŸµÎ,п7ÏÎ çžʈŸµ,Ðο7ñÏ÷{ŸµoÐ{ІÐâL¿ˆʈ,ЮПοˆʈøm˜¾âLâL/¤Ñ‚£Ñ‚£/¤·:»:Ÿ:¤¬Î:¤Ÿ>‰£¿çŽ®+±+Ÿ‚£ŸsbaZsb¬Î:¤ŸÑ:ßµUjFÎÞÎK¢K¢ŸµUjFÎÞΟµUjFÎý¾ŸµUjγiŸFÎÎʈŸµUjãÏ÷{bÏ5Ï ™« Ï 'ѹiK¢³iŸµÎUjFΟµÏUjFÎ¥#¥Ì«Ñ«ŸµÎUjFÎÎFÎ,ЮПµá¥ÎUj6Ñ =¦ @Ñ ì¥ ðX ñ¥ͤФ够µM:¤ŸµUj&M:ßµMÎÆc:¤ŸµGÑ:¤ŸµoÐ&M:ÃÔ¾ʈŸµoÐPÑXÑŸâLŸ‚£ŸµoÐâL:ß‚£‰£¿ˆŸµfÑoÐÎ{Ð}Ñ ‡Ñ ’Ñ Ô¾ ì¥ ñ¥J¦ͤФ夿ˆŸµoÐÎîÂÔ¾ì¥ ñ¥ ͤ Ф够µoÐÎ{ІÐsb³i¿ˆ,ПµfÑ›Ñá¥oÐ Î {Ð †Ð ì¥ ðXñ¥ͤФå¤:¤ÎŸÎÁŸÎΟÎÎ/¤/¤ŸsbŸµÎUj¿7§Ñá¥FÎ Ë© =¦ ¶Ñ ¼¢ ì¥ͤФ够µÁÑÎá¥ÎUj¿7 §Ñ ì¥ ðX ñ¥ ͤФ够µÁÑÎ&µØÑåÑöÑ&µöÑ&µØÑåÑ#Ò6ÒBÒ&µUj„LcÒnÒvÒʈaZ&µ‡Ò•ÒaZ&µ¬Ò¶ÒaZüwc#¯ši{i&µUjcÒa°Óo®X}ʈcÒTÓʈcÒTÓŸµʈ™Ó~Ó>cÒTÓUj>¾ÓÉÓáÓ6ÒBÒçÓUj>¾ÓùÓ>ÔÔ>üwnÒvÒcÒ>nÒvÒüw>FÔSÔ>‡Ò•Ò>¬Ò¶Òüw‘ÔnҜԫÔvÒµÔ6‰ÕÔÛÔüw>áÔìÔ6‰ÛÔüw>áÔìÔ6‰ʈüwáÓ Õ2Õ¾É6‰ÕÔÛÔüw>áÔìÔüw>FÔSÔüw>rÕxÕ~ÕÕUj>cÒTÓ>cÒÑÕÛÕæÕÆc:¤ñÕûÕÆc:¤¨¤‚£‰£&µ¹i³i&µšœ|œØÑåÑöÑ&µÖöÑ&µÖ> Ö¨¤¿&µ>Ö#ÖUj Ö&µ>,Ö Ö&µ>Ö#ÖUj,ÖÖ‰®&µ>Ö#ÖÔUjaZ&µÔÔaZ:¤:¤¨¤‚£¨¤‚£‰£UjŸµV|âL&µ>7Ö<Ö&µÔUj×$>¨¤‰£¿ww&µÔ×$Ô‰®AÖç7:¤:¤sb&câ±FÖ:¤®+±+RÖ^Ö‰®&µ>RÖ^Ö’hiÖoÖuÖ€Ö‰®:¤cÒnÒvÒʈaZ:¤:¤:¤:¤:¤:¤:¤:¤:¤:¤:¤nÒ‰®:¤:¤:¤:¤:¤:¤:¤&µ>¬Ò¶Ò:¤:¤‡Ò‰®:¤:¤:¤:¤:¤:¤¬Ò‰®¬Ò‰®:¤:¤:¤:¤:¤:¤:¤:¤þÆþÆ´Msbüw´M|œ&µ>¬Ò¶Ò´Msbüw´Mšœ&µ>sb&c&µ>¬Ò¶Òw¦þÆþÆ´M:¤üw´M œ&µ>¬Ò¶Ò´M:¤üw´Mè¿&µ>sb&c&µ>¬Ò¶Ò:¤ðXðXʈÿ¥sbʈüwŒÖÿ¥Ö’Öʈÿ¥sbʈüwŒÖÿ¥Ö’ÖþÆþÆ´Msbüw´MÀ&µ>¬Ò¶Ò´Msbüw´MÄ¿&µ>sb&c¨¤‚£¨¤‚£csbcá¥sbcá¥sbw¦Ái&µ>‡Ò•Òw¦&µ>rÝ_®çŽ®+±+w¦w¦w¦w¦w¦w¦rÕxÕsbw¦w¦ši#¯sb´M"²&µUjcÒ´M•Ö&µ>ÔÔ´M"²&µUjcÒ´Ma°&µ>À Àa°&µ"²&µUjcҌ֙Ö&µ>X}o®&µ>ÖX}sb&µ>cÒ:¤X}o®ÖX}&µUj>cÒÖ‘…m¦w¦´M"²ʈcÒUj´M•Ö# À´M"²ʈcÒUj´Ma°ʈÀ Àʈa°"²ʈcÒUjŒÖ™Ö„‡&ÀŸŸ¿ŸŸ¿ŸŸŸŸŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸ¡æUjΠΟŸUjŸUjŸUj‘ØÙVŸUj‘ØÙVŸUjΠΟUjt±Ø‘ØŸUj¤¸±Ø‘ØŸUjâLŸUjâLíØÈŸUjâLŸUjâLÙíØÙÈŸUj¤¸ŸUj¤¸ŸCÁŸUjpÙÙÈŸUjpÙÙÈŸUjpÙÙÈŸUjpÙÈŸCÁømŸCÁøm×ÙpÙ³iÙÞÙŸCÁømŸCÁøm×ÙpÙÚíØÙ ÞÙŸ%ÚƒˆŸ%Úƒˆ×ÙpÙÚíØÙ ÞÙŸCÁømŸCÁøm×ÙpÙíØÙÞÙŸCÁømŸCÁøm×ÙpÙÚíØÙ ÞÙŸCÁømÞÙŸ%ÚƒˆÞÙŸCÁømÞÙƒˆ6‰ømŸømŸømŸømŸµømCÁ˜¾Uj‰®‹ÛŸÛºÛÌÛ瞘¾ŸµømŸøm瞟ømŸømŸøm¾ÜÁi¼¢ÁiŸCÁuuæ¼¢ÝâL ÝŸCÁŸCÁŸCÁŸCÁŸømCÁUj,o¸Ýá¥çžŸømCÁUj,o¸ÝŸømŸømCÁUj,o¸Ýá¥çžŸømCÁUj,o¸ÝŸømŸømCÁUj,oeÞkÞᥠ瞟ømCÁUj,oeÞkÞŸømŸømCÁUj,okÞá¥çžŸømCÁUj,okÞŸømŸâLŸUj±Ø‘ØrtŸUjtÆcŸUjtÆcŸCÁ¦mpÙÙÞÙ.yŸCÁpÙÞÙ¦mß.yŸCÁ¦mpÙÙ.yŸCÁpÙÞÙ¦mß.yŸ%ÚUjÙpÙMVÄŸ%ÚpÙÞÙUjßMVÄŸ¦mÞÙ$ßUj)ß2ß%7ŸCÁ¦mpÙÙÞÙFª;ßsb³iŸÞÙ¦m$ßUj)ß2ß%7ŸCÁpÙÞÙ¦mßFª;ßsb³iŸ¦m$ßUj)ß2ß%7ŸCÁ¦mpÙÙFª;ßsb³iŸÞÙ¦m$ßUj)ß2ß%7ŸCÁpÙÞÙ¦mßFª;ßsb³iŸCÁÞÙ¦mpÙ.yŸ%ÚÞÙUjpÙMVÄŸÞÙ¦mAßGßUjVÄŸCÁÞÙUj¦mpÙFª±Ø ‘ØMLߟCÁ:ßCÁømŸCÁømŸCÁøm×ÙpÙíØÙÞÙŸCÁøm×ÙpÙ:¤ŸCÁøm:¤ŸCÁøm×ÙpÙý¾ÙÞÙŸCÁøm×ÙpÙ:¤ŸCÁøm:¤ŸCÁømÞÙŸCÁøm×ÙpÙÚíØÙÞÙŸCÁøm×ÙpÙÚ:¤ŸCÁøm:¤ŸCÁømÞÙŸCÁøm×ÙpÙÚíØÙÞÙŸCÁøm×ÙpÙÚ:¤ŸCÁøm:¤Ÿ%ÚƒˆÞÙŸ%Úƒˆ×ÙpÙÚíØÙÞÙŸ%Úƒˆ×ÙpÙÚ:¤Ÿ%Úƒˆ:¤Ÿ%ÚƒˆŸCÁømŸCÁømŸª‰£³iŸ‚£ŸâL¥[ʈ‡ß‹ßߓߗßʈ‡ß‹ßʈ"²sbʈÖ§"²sbʈ"²sbŸâLÁiʈnÆ¡¹ʈÈʈ"²sbʈsbʈ"²ðXʈ"²ðXʈðXµUjʈ ‹tµUjʈ‹tʈÅàʈ"²sbʈ"²sbʈsbʈ¿ˆóŽUj"²sbʈ)á/áʈsbʈsbʈsbʈsbʈsb¢áʈ¿ˆóŽUjÈʈðXʈÕáʈýánµkµçžʈkµnµʈP¦Y¦ʈâLʈȳiʈdâÈʈerʈÈʈësbʈÈsb¢á¿ˆóŽUjʈ¹i¢á¿ˆóŽUjʈsb¢á¿ˆóŽUjʈ¢áʈ¿ˆóŽUjÈsb³i¢á¿ˆóŽUjʈsbðXðXʈðXʈðX/¤/¤:¤¢á¿ˆóŽUjʈ|œʈðXʈÀ}ʈøtʈ ã;ßʈ%ã<ãʈK¥õÅʈµUjtʈµUjtʈµUjçŽðXʈ¿ˆóŽUjõj³ãâLŸ CÁ çžʈ¿ˆóŽUjõj³ãâLåãðãùãømõjää.ä@äʈÓe çžåãømʈ³ãâLõjää .ä @ä ðã õÅ çžåãømʈ³ãâLõjçžʈ¿ˆóŽUjåãäømʈƒˆʈ¿ˆóŽUj5áʈðXʈ¿þÆʈ ã;ßsbsbʈâLŸ×$¨ä®äçŽtì¥ñ¥ͤФå¤ʈUjµÔ¾³i¿ʈUjµÔ¾sb¿ʈUjµ:¤$ªµä$ªʈUjµsbʈUjµsbʈUjµsb/¤/¤¿i’¿iUjl[’ì¥ͤФ够ª‰£ʈðXʈðXðXðXðX:¤ʈ:¤ʈÿ¥ðXʈÿ¥ðXʈÿ¥ðXʈK¥ ºâLʈaZʈ:¤:¤ʈÿ¥ðXðXʈaZaZʈaZaZþÆʈ¿ˆóŽUjäømʈ"²³iµUjʈ"²Ô¾,îµUjʈ"²Ô¾,îµUjÔ¾³iµUjʈ"²Ô¾µUjʈÔ¾ µUjʈÔ¾ʈ"²Ü¢ʈ"²MTåʈ"²MÜ¢"j´ʈðXgåLʈðXåà¹nÆçžʈðXånÆçžʈðXʈ,oðX¡¹C¡ʈðX¨¤‚£¨¤‚£Íå‚£ŸâLÁiöå³iʈæ+æʈCÁŽžʈÜ¢ʈ’Mʈ³iʈ¦¡|Žæʈ¦¡|Žæʈ¶æʈœÀ¶æʈœÀC¡ʈœÀ¥[{iʈœÀ¥[ž<ʈœÀ¹iÀ}ô<ʈ[çʈœÀ|ç€ç®´’MʈœÀ‘çâLʈœÀ€ç¿ʈœÀ€çÍçÑçʈœÀ¿ʈ¿ʈœÀnÆà¹C¡ʈè®´?oʈè èʈÕáʈnÆ¡¹C¡ʈnÆ¡¹ʈnÆaplèʈÑènÆapʈðXnÆapʈÑÖ§ènÆapʈ¿ÁiÁisb´MʈÜ¢ʈ³i¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsb¨¤‚£‰£aZsbʈ‚£ʈ‚£ù­þ­¥#¥Ì«Ñ«ʈÅè:¤ʈ:¤ʈœÀ:¤ʈœÀ¿¨¤‚£‰£:¤έÀ}:¤έô<:¤:¤ʈ:¤ʈ:¤ʈ:¤ʈ:¤¨¤‚£ʈœÀ¶æʈœÀ€ç¿Ÿª‰£Ÿª‰£ʈœÀ:¤ÉèsbÜè´¨¤‚£¨¤‚£¥[ž<¥[ʈ¶æʈœÀ¿:¤2j´ʈ¥[âLʈlè:¤ÑM¥[áè:¤ʈáèîè/¤áèsbªʈ•qʈªÙVt³iãã™é£éʈ£é¿ʈ£éÖéÛéʈ£éçŽʈ£éÖé+Š êʈ£é™éUjʈ£éaZʈ£étʈ£éZêʈ£éyêʈ£éçŽsbçžsbÖ§ÏêaZçŽUjëtëUjUjUjaZÁiaZÙV«ëÔk¯ëʈë£éÆëÐëÛëèëʈëʈ먤³isbʈ£é¿ʈ£é¿ʈ£éçŽʈ£é¿ÁiÁiʈ£é™éUj³i¿$ªUjʈ£éaZaZʈ£é'rëUjʈ£étëtʈ£é™éUjŸsbsb¿/¤ʈë£é:¤sb$ªUjUj/¤/¤ì$ª'rìì$ª'rìʈë¿iÁiaZaZUjsb*ìsbsbsb{i»{\쟵UjâL=Ç©ìÙVÏìÞìz´¨¤‚£ŸÑ:ßÑ:ÃÌ µUjíækŸ¿ŸµUj¿ŸâLŸµUj¿xíV|™ÒŸµUjõœ¿ :¤xíV|™ÒŸµUj¿ÆcaZŸµUjV|¿ÆcaZŸµUjV|¿ÆcaZŸµUjV|¿aZŸµUjV|¿aZŸµUj¿ŸµUjV|âLŸµUjV|âLŸ&M:ßCÁ:ßµUjî[ÝŸµUjîѵUjÌ ¦m,îækµUjâLÌ ¦m,îUj ïïUj)ï¦mJ#,oÿ¥ÿ¥ÿ¥sbŸâLwÆŸÿ¥šz³išzðŸðâLŸµUjDðLððUjðXçžUjðXŸâLŸµUjÎðUj˜Æèýüwú“UjŸ¿ÿ¥ŸâLÖ§UjŸµÖ§UjâL6‰À ÀŸ;¯C¯À ÀÀ À˜Æ˜Æ˜ÆµUjšzÔ9Tòç7¦m,îµUj˜ÆŸUj¢ò¼¢âLwÆÖ§¿Çòç7ÌòapŸµUjÔ¾×:óŸµUjÔ¾ã:×:ŸµUjÔÀ˜m×:óŸµUjÔ¾ã:×:ŸµUjÔÀ˜mŸµUj%îÔ¾ y,îDÀ ’MŸUjŸUj¿Ä’M¯ó瞟Ujÿ¥;èÊó’MŸUj¿ÿ¥ y,î’MµUjÔ¾,î’MŸñyaZCÁñyÖ§Ÿñy¿8u2ôÿ¥ñy󎟵Uj¿ÔÀñy󎟵Uj¿ÆcŠãºôÔÆÁô瞟µUj¿¿ˆUjâLõõõ*õõõWõõõWõõõWõœõõõWõõöWõ7ö>ösb&c[ö>ösbð{7ö[öuöˆö>öõψð{ŸµUjîÂð{ŸµUj¨äŸµUjUjŠã¿ˆñyóŽV|ð{Uj¿¿ˆñyóŽV|ð{Uj¿¿ˆñyóŽUj¿¿ˆñyóŽV|ð{Uj¿¿ˆñyóŽV|ð{Uj¿¿ˆÖ§óŽð{Uj¿¿ˆUjóŽÖ§âL¿ˆUjóŽÖ§âL¿ˆ¹ÄUj󎿈UjóŽ 6¿ˆUjóŽûÀ¿ˆUjóŽûÀ¿ˆUjóŽûÀ•ÆŸµUj¿CÁá¥=¦Eø ×$ Lø ì¥ ͤ Ф夕ƵUjl[×$ì¥ͤФ夵Uj¦mÌ æk¨¤‚£uPPPæOæOPæOPPxíV|™ÒŸµUjõœ¿:¤Ÿ¿‰£xíV|™ÒŸµUjõœsb™}aZâLSøaZâLÆcaZâLÆcŸ‚£‰£aZsb{iŸ‚£Ÿ‚£‰£aZsb{iŸ[Ý:ßÑ:à Uj ïž<Uj ïï¥[œP¢P¨PÁPœP¢P¨PÁPšzUjŸâLœP¢PœP¢Pâ±:¤šz‚£uZOœP¢PZOœP¢PPPZOZOPPPœP¢P¨PÁPÇPœP¢P¨PÁPÇPçŽçŽçŽèý˜Æ˜Æ˜Æú“ú“:¤ú“ú“:¤˜Æ˜ÆœP¢P¨PÁPœP¢P¨PÁPµUj,îµUj,îµUj,Uj,îµUj,îµUj,îµUjÐñþùþ$ªœP¢P¨PÁPœP¢P¨PÁPPPsbµUj,îçŽsbµUj,îçŽsbµUj,îçŽuœP¢P¨PÁPœP¢P¨PœP¢PœP¢P¨PÁPµUj,îµUj,îµUj,îµUj,îµUjµUjµUj,îUjœP¢P¨PÁPœP¢P¨PœP¢PœP¢P¨PÁPPPPP˜Æ˜Æsb˜Æ´˜Æ˜Æ˜Æ˜Æ˜Æ˜Æ˜Æ˜Æ˜Æ˜ÆœP¢PœP¢P¨PÁPµUjœP¢PœP¢P¨PÁPPP5555555555œP¢PœP¢PœP¢PœP¢PœP¢PœP¢PµUjµUjµUjµUjÐâLµUjÐâLœP¢P¨PÁPœP¢PœP¢P¨PÁPµUjµUjµUjµUjœP¢P¨PÁPœP¢PœP¢P¨PÁPPPPú“ú“ú“ú“˜Æ˜Æ˜Æ˜Æú“sbú“6ⱚzsbú“çŽç޵ú“UjçŽ:Dì¥ͤ Фå¤ú“³i¹iú“:¤ú“:¤œP¢PœP¢PŽ[l[äWl[äWæOPæOPPŸâLœP¢P¨PÁPœP¢PœP¢P¨PÁPµUjœP¢P¨PÁPœP¢PœP¢P¨PÁPPPP_sb_b__:¤˜Æ_:¤_:¤_µI£ff˜Æ˜Æ˜Æâ±¨¤‚£:¤2j´šz³i˜ÆçŽ˜ÆUjµçŽì¥ͤФ夘ƘƵUjiŸçŽþ¬`£ ì¥ ͤ Ф够ª‰£Ÿª‰£Ÿª‰£Ÿ:¤˜Æsb玈玵Uj˜ÆŸçŽþ¬£ì¥ ͤ Ф夥[¥[µUj‹ž¦çŽDì¥ ͤ Ф夘ÆçŽçŽç޵Uj˜ÆçŽ:D»­­ ‡Ñ ³ ì¥ ͤ Ф夸:¤aZsb¸‚£:¤2j´˜ÆçŽçŽUj˜ÆµçŽÏÕì¥ͤ Фå¤þ¬`£¹i:¤2jiÖoÖœP¢P¨PÁPœP¢P¨PÁP×:Ÿ‰£¿ý¾çŽ®+±+×:Ÿ‰£¿uœP¢PóŽŸ  œP¢PPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŸ‚£¨¤ŸUj’M¿Ä¯óŸUj:¤ÁiÁiŸaZÿ¥ó޵Uj³i•ÆL˜ÆL•ÆŸµUj ˜Æì¥ͤФ夵UjÐ÷iñyŸ¿8u2ôÿ¥ŸµUj¿ñyóŽàcÿ¥ÔÀ&µ ˜m Psb&csbá¥\«ì¥ͤФå¤óŽŸµUj³i•ÆL•ÆŸµUjú“ŸÐ'r?“àcÿ¥uZOZOZOZOZOZOZOZOZOZOPPPPPŸµñyóŽV|Uj¿ñyóŽV|Uj¿ñyóŽUj¿ñyóŽUj¿ñyóŽUj¿Ö§Uj¿Ö§óŽUj¿V|Uj¿V|Uj¿ñyóŽUj¿ñyóŽUj¿Ÿ¿CÁ.yñy’|DÕ¿³iUj¿¹iUj¿|œUj¿šœUj¿ œUj¿V|Uj¿V|Uj¿è¿Uj¿ŸaZB &µPsb&c&µPsb&c&µ:¤&µ:¤&µ:¤&µ:¤&µ:¤&µ:¤&µ:¤Psb&c&µ:¤Psb&cóŽUjŸµsbL•Æ•Æ&µUj•Æ5ì¥ͤФå¤Ð'rL•Æ•Æ&µUj•Æ_ì¥ͤФå¤&µóŽUjÐU €™ûÀì¥ ͤ Фå¤&µ¿CÁ?¥ì¥ͤФå¤&µUjñyóŽ¿Æc&µUjñyóŽ¿Æc&µUjñyóŽ¿Æc&µUjñyóŽ¿Æc&µUjñyóŽ¿Æc¿Æc¿Æc&µUjóŽñy¿ÆcŸB sb&cPŸ:¤&µPsb&cµUjÐ÷i$ª•ÆUjŸµ•Æ[ ì¥ͤФå¤âLŸsbÿ¥uPPPæOæOPæOPPWõ&Ö§ψõõsbÆcõZO¢Põõ*õZOõõœõZOöœP¢PöœPψ7ö>ösb&c[ö>ösb&c7öuö>öœP¢P7ö[öuö>öœP@7ö[öˆö>öOWuösb’h´uöalZOuöaψÔ¾Ô¾Ô¾Ô¾ŸµUj×:Ô¾ã:Ô¾ÔÀÔÀÔÀ³iŸµUj×:ÔÀ˜mÔÀÔ¾ŸµUj‹ÎRjÔÀŸµUj×:ÔÀ˜mœP¢P¨PÁPœP¢P¨PÁP¨¤‚£ŸUj³iCÁ²ò³¶UjÔ¾²ò³¶ŸUj³iÔ¾²ò³¶ŸUjÔ¾ŸUjCÁŸDUjŸ‰®Uj瞟‰®UjŸUj™ŸDDÕŸ‰®çžŸ‰®DÕ™UjÔÀUjŸoÄUjŸUj5ßÔ¾ŸUj¿Ô¾UjÔÀŸsbUjŸsbUjŸsbUjŸsbUjŸsbUjšbsb ™šbŸ³i‰£•ÆŸ²ò Ÿ³i‰£Ÿ³i³sb ™šbUj¶ ™³i¹i|œ³i¹i|œŸª‰£Ÿª‰£Ÿ‰®UjI£Ÿª‰£Ÿ‰®UjI£Ÿª‰£Ÿ‰®UjI£sb™ªšbŸª‰£Ÿª‰£sb™šb•ƕƟUjŸª‰£ŸUj5ßÔ¾I£ŸUj5ßÔ¾ŸUj™ŸUjŸUjUj™sbl[•Æ3˕ƟsbUjI£ŸsbUjI£óŽAFŸµUj{󎈃瞟µUj{󎈃óެóŽ{ó޳iŸµUjóŽÐˆƒóŽCÁUjóŽCÁóŽCÁUjóŽCÁŸóŽâLŸµUjóŽâLˆƒŸóަm¥®·ÊŸµUjóŽsbŸµUjó޳iŸµUjó޳iŸµUjó޳ióŽÿ¥UjóŽÿ¥óŽ}nUjóŽ}nóŽoUjóŽoUjóŽÂŸµUjóŽoĵUjó޳i˜ÆŸµUjó޳ióŽoAFÀâŸ{:Ã󎬟óŽâL5˜Æ^œÀUjÌ •qXœÀUjªœÀUjªœÀCÁenœÀUj¦m¿œÀUj•ÆœÀUj•ÆŸCÁ/ÍçžUjŸ¥[âLçžUjŸ¥[âLœÀUj•ÆœÀUjÍ¿µUjÌ ¦m‚„ŠψµUjÌ Àâr©Ö§¬µUjr©ÀâψµUjÀâr©ψµUjÌ Àâr©l©µUjÌ V«µUjÌ µUjÌ @µUj*MgUjµzr©µUj@µUj¯¿Ä4{¬ÜWŸÛ¿iZZaðXì¥ͤФ夜ÀUj¦m¿•Æsb•ƕƕƕƕƕƕƕƕƕƕƕÆ/¤:¤•ƕƕƕƕƕƕƕƕƕƕÆUjŸ¥[;ÍͿԾԾ¿iesbÔ¾sbUjssbÔ¾sbsbsbsbsb玜ÀUjšçŽì¥ͤФ夨¤‚£‰£sb玜ÀUj ²çŽ·ì¥ͤ Ф夜ÀUj ²sb³iÔ¾sbsbsbsb玜ÀUjÍ¿çŽì¥ͤФå¤sbUj×¥[UjÌ µíækUjÌ µí¥[׊ψá¥ðXì¥ͤФ处Úá¥\«½oψì¥ͤ Ф夵UjÌ Àâr©Ö§¬çžµÌ ¬UjüwµUjr©ÀâÙV¹ÐçžµUjr©ÀâÙV¹ÐµUjr©Àâ:¤Ì :¤V«çžUjÌ çžµUjÌ @ì¥ðX ñ¥ ͤ Фå¤Ujµzr©âCÁì¥ ðX ñ¥ ͤ Ф夵Uj@»­QlÙVCÁ ì¥ ðX ñ¥ ͤ Ф夵Uj@çžµUjâLµ&M:ÃçžçŽ"²çŽçŽŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒkµnµÌá¥çžóÌçž ´M3;©µ&µP\©µh&µŒI£&µŒI£&µI£&µŒ&µù3^&µù3^]&µŒ©µçŽ{i&µÐ錩µ.&µùWcn&µù‹3^&µù‹I£&µùâ‹çžôI£¥#¥Ì«Ñ«ù­þ­¥#¥¥#¥Ì«Ñ«uœP¢PZOZOZOZOZOZOZOZOZOZOœP¢PZOZOZOZOZOœP¢PœP¢PZOZOœP¢PZOZOœP¢PœP¢P¨PœP¢PœP¢PZOZOZOZOZOZOZOZOZOZOœP¢PZOZOZOZOZOœP¢PœP¢PZOZOœP¢PZOZOœP¢PœP¢P¨PœP¢PPPPPPPPPPPPPPPPPPPPPPPPPPPPuPPPæOæOPæOPPuPPPæOæOPæOPP¥#¥Ì«Ñ«¥#¥Ì«Ñ«PPPæOæOPæOLXUX$PPŒ[¼™$3^3^Å$Ï$ÁiÁi|¿óÚ$ì¥ͤФå¤4·Ý$öaÒY³iy%‹%çŽùùù´MOt©µù3çŽ~&‹&ùÏ&Pùü&3^'ùZ'h'çŽZ'h'|ZÙV&µ™«:¤¹i|œšœ&µŒ©µέçŽ{iù&µI£ù&µI£4·Ý$öaÒY³i3^cnA±•ÆA±•ÆM•ÆÙV•ÆÙVSø•Æ´M•Æ´M•ÆÁi•ÆM•ÆrÝ_®rÝ_®¨0rÝ_®¨0µ0•ƕƕƕƕƕÆÙV•ÆrÝ_®rÝ_®¨0rÝ_®¨0µ0;1çŽsb•ÆT1•ÆT1p1•ƕƔ1ÙVaZaZsb•ÆçŽaZaZ•ÆaZ•Æp1•Æ´M•ƕƕÆq2šbq2 2³i•ÆÏ2q2šbA±Ï2q233_Ãsb•Æ•ÆR3Z33šbsb•ÆšbA±Ái•Æ5¤Ÿ;½çŽsb5¤¶3¬p1Â3sb•ƇߋßߓߕÆsb•Æsb•Æsb•ƕƕƕƕƕÆsb•ÆâL•Æ„Lsb•Ƴi•Æsb•Æsb•Æšb•ƕƕƕƕƕƕÆsb•Æsb•Æsb•Æsb•Æsb•ƕƕƕƕƕƕƕÆÙVsb•ƕƊ::玠:â¨p1sb•Æsb•Æsb•Æ•Æ•Æ G•Ƴi•ƕƳi•Æ•Æsb•ƕƕÆsb•Æ•ÆþŸ•Ƴi•ƕƕÆ[ç•Æ•Æsb•Æ•Æsb•Æsb•ƕƕÆsb•Ƴi•Ƴi•ƕƕÆsb•Æsb•Ƴi•ƕƕƕÆsb•Æsb•Æsb•Æsb•Ƴi•Æsb•Æsb•Æsb•ÆçŽ•Æsb•Æsb•Æsb•ƹi•Æ|œ•Æšœ•Æsb•Æsb•Æsb•Æsb•Æsb•Æsb•ÆËBÆcÒBl©•ƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕƕÆsb•Æ œ•Æsb•Æè¿•ÆÀ•Æsb•Æsb•ƕƕƕƕƕƕÆsb•Æ•Æsb•ÆÄ¿•Æ À•Æ#•Æsb•ƇߋߕÆsb•ƕƕƕƕƕƕƕƕƕÆFF1F1F1F8F1F8F”j”jL”1=FbsbsbÙVPsb&cFšF8GBGKGTGLTZGaGgGnGÖ§"²uG|G‚GŠG’G˜G¡G «G ´G ÀG ÉG IILIÙVDILIIÖ§ÙVÎPIYI_IgIoIuI~I ˆI ‘I I £IrÝ_®šbA±•ÆrÝ_®:¤rÝ_®¨0šbA±Ái•ÆrÝ_®¨0:¤rÝ_®¨0µ0šbA±Ái‹t•ÆrÝ_®¨0µ0:¤rÝ_®•ÆrÝ_®¨0•ÆrÝ_®¨0µ0•ÆaZsb•ÆçŽsb•ƬaZ¬sb•ÆaZ•Æp1•ƬaZ¬•ƕƨ¤aZ•ƨ¤aZ•Æ´M•ƨ¤‚£aZsb•ƨ¤‚£aZsb•ƨ¤¨¤‚£¨¤•ƨ¤‚£šbA±•Æ:¤²²²©J¥[¥[¥[©JðXðXðX©J²²²©J¥[¥[¥[©JðXðXðX©Jsb•Æsb•Æçž©J®J©Jçž©J®J©Jçž©J®J©J•Æ•Æçž©J®J©Jçž©J®J©Jçž©J®J©J´M•ÆaZsb•Æ´M•ÆaZsb•Æsb•ÆaZsb•ƨ¤±J¸J¿J•Æ:¤aZsb•ƨ¤‚£aZsb•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•ƨ¤aZ•ÆÙV•ÆaZsb•ÆÙV•ÆaZsb•ÆšbA±•Æ:¤aZsb•ÆçŽsb•ÆâL•Æ„LaZ•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æp1•ƕƕÆp1•ƕƕƕÆPsb&c:¤sbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbsbÙV•Æ:¤ÆJ³i:¤|ZÙVŠ::šbA±•ÆŠ:::¤aZsb•ÆçŽsb•ƨ¤‚£ :⨕ÆaZ•Æp1•ƨ¤ G’•Æsb•Ƴi•ƕƕÆsb•ƨ¤‚£sb•ƕƨ¤•Æ•Æsb•ÆaZsb•Æsb•ÆþŸ•ÆaZsb•Æ•ÆaZ•Æ•ÆaZ•Æsb•ÆaZsb•Æsb³isb¹isbûö|œšœ œè¿sbÀsbÄ¿‡ß‹ß À#&À„‡•ÆaZ•ƨ¤‚£sb•Æsb•ÆaZsb•ƨ¤•Æ•ÆaZ•ÆâL•Æ•Æsb•ƨ¤•Æsb•ÆaZsb•ƕƕƕÆaZ•ÆšbA±•Æ:¤šbA±•Æ:¤aZsb•ƕƕÆaZ•Æsb•ÆaZsb•ƨ¤•Æsb•Æsb•ƨ¤‚£sb•ƨ¤•Æsb•ÆrÝ_®šbA±•ÆrÝ_®:¤aZsb•ÆaZsb•ÆrÝ_®¨0šbA±Ái•ÆrÝ_®¨0:¤aZsb•ÆrÝ_®šbA±•ÆrÝ_®:¤aZsb•Æ_®šbA±•Æ_®:¤aZsb•ÆšbA±•Æ:¤aZsb•Æsb•Æ‚£•Æ:¤:¤sb•ƨ¤•ÆaZsb•ƨ¤•ÆaZsb•ƨ¤•ÆaZsb•ƨ¤‚£aZsb•Æsb•ÆaZsb•ƨ¤•ÆaZsb•Æsb•Æ‚£•Æsb•Æsb•ÆaZsb•ÆçŽsb•Æsb•ÆaZsb•ÆçŽsb•ÆÉJðXÉJ•ÆðXÉJ•ÆðXÒJðXÉJðXÉJ•ƕƨ¤aZ•Æ•ÆaZ•Æ•ÆaZ•Æ•Æsb•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æ:¤•Æ•ÆaZ•Æ•ÆaZ•Æ•ÆaZ•ƨ¤aZ•Æ•ÆaZ•Æ•ÆaZ•ƕƕÆaZ•Æp1•Æ•ÆaZ•Æp1•ÆÙV•Æsb•ƕƕƨ¤•ÆaZsb•Æsb•ÆaZsb•Æ•ÆaZ•Æ•ÆaZ•Æ•Æsb•ÆaZsb•Æsb•ƕƕÆsb•ÆaZsb•Æsb•ÆaZsb•Æsb•ÆaZsb•ÆÈ•ƕƕƕƕƨ¤‚£aZsb•ƨ¤•ÆaZsb•ÆaZsb•Æsb•Æsb•ƨ¤•ƨ¤±J•Æ:¤¨¤aZ•Æ•ÆaZ•ÆaZ•ƕƕƕƨ¤•ÆaZsb•ƨ¤•Æsb•ÆaZsb•Æsb•Æsb•ƨ¤•ÆaZsb•Æsb•ÆaZsb•Æsb•ÆaZsb•Æ•ÆaZ•ƕƕÆaZ•ƕƕƕÆaZ•Æ•ÆaZ•Æ•ÆaZ•Æ´±•Æ‚£•ÆÔ¾•ƕƕÆARHR´È\R¥¯âL¥[}Rä}R³i}R³i?oen,o mâL m[ç m–é mô< m³i,oen¥¯?S m,o m,o muS mf´Èÿ¥ msb msb?S mâL m³i?S m³i¥¯sb¥¯sb¥¯sb¥¯sb¥¯ÁÁ7T,oCÁ¦mŸARHRŸbThTCÁªT[çŸÉT}n[çŸÓe}n[ç¥[[çÆc[ç[ç/UÆc[ç/UŸkU/UÆc[çŸkU/UŸÓeÆc[çŸÓe[çp1ÙV‹ÎRjøãŸ‡Ÿ[çŸ[çŸøãŸâLŸøãŸâLŸâLŸÙVâLUjŸCÁŸ„LŸ„LãVømenømenCÁenŸømenŸCÁenŸªTâLŸâL…WŸâLŸâL×:ŸâLáÁŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâL6‰@ÕâLCÁen}nenŸâLŸâLŸâLŸâLŸâLŸâLŸâLâLŸâLŸâLŸ¿ŸâLŸâL×:Ÿ>¹i³i×:Ÿ>à¹9¬×:Ÿ>¡ ¡×:Ÿ>·:»:×:Ÿ>üYZŸ>ZZ×:Ÿ>&M:ß>·:Ÿ>@ZDZ×:Ÿ>®+±+×:Ÿ&M:ß>&M:ß&M:ß>kµnµŸ>ÅÅŸ>»¾Ÿ>kµnµŸ‹ÎRjŸâLŸâL‹tÓe‹tÓe‹tÓe‹tÓe{i†[ÓeUj„LUjÀ}UjÀ}à¹,o„Là¹bÌ Î[•qÀâV«§•q³ibtšbA±ttsb~~ «rhŒ~\ïâLUjŸ¿it~~g\3ÍUjâLÎ ÎÎ~~ºUjâLÎ ÎÎUjÿ¥UjðXUj´MâL Ë…Uj´MâLUj´MâLUj´MâLUjÀ}A±à¹Uj'„{À}A±à¹UjðXA±à¹UjÀ}A±ý\UjÀ}A±âL]î{÷{ÌUjUj,oÀ}A±à¹Uj€mA±à¹Uj,o€mA±à¹Uj,o'„{€mA±à¹ðXo]Uj,o€mA±à¹°ôðXtðXtÀ}ÍUjKÔkUjPÎÔkUjPÎÔk°ôUjðXsbÔkUjðXsbÔkðXtUjðXsbÔkÀ}ÍÀ}ÍUjÀ}erÔkUjÀ}erÔkUjPÎÔkŸ,oŸUj5Úé¢x¥[ÚéŸUjΠΟUjÎ ÎtÑ^Uj×^öL¦m’Mé^UjĦm’MUjÄ’MUjt¦mMUjt •¦mUjt •¦mUj •¦mUj •¦mUj •¦mtUjÎ •¦m ÎUjÎ$ߦmUjÎ$ߦmUjÎ$ߦmUjÎ$ߦmUjÎ$ߦm ÎUjÎGÄUjÎGÄ ÎUjŸtyŸÞxØÍÎ ÎUjŸÂxðXÎ'\ ÎÎUjŸÎˆx‹xŽx‘xUjâL )ΠΟΠÎUjâL)ÎÎUjâLUjðXtUjðXtUjðXUjðXµ` Wµ`Í`ñnšz.yšzašzCÁšzsb¦msbsbsbsbøm¦m.y •¦mŸâLŸâLŸâLŸâLenŸâL’MŸ0xenŸ0xenøtŸ0xen’MŸÙVâLŸâLŸÚv¡¹UjŸ³iâLŸ³iâLUjŸðXŸðXŸäŸäŸâLŸCÁŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLømŸâLŸâLømŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLsbCÁŸâL´dÁd³i³iŸ³iømŸàcŸðXŸÿ¥#¯ši#¯ši#¯ši#¯ši#¯ši7fP¦Y¦Ÿ>ƒqnÒoq`oÖ§ƒqqƒq÷qýqŸ>qƒq÷qýqŸqƒq5áƒqsb÷qýqƒqKq÷qýqƒq³i÷qýqŸ>ƒqsb÷qýqŸ>ƒq³i÷qýqŸ>ƒqKq÷qýqŸ÷iƒqøm`oñn`oqÆcq1t6t>tEtsb1t6t>tStEtsbEtsbEtsbEtsb¢tX}qÆc¢tX}qÆcUjUjuu2uä‘…juÈ:¤7fŠWø•‰ŸUj&MWøŸUj&MŸUjÎ ÎÎóˆŸUjâLΟUjâLΟUjâLΟUjŸUjŸUjâLΟUjâLaZŸUjâLtŸUjtŸUjtŸUj,‹6‰UjâL,‹:‹ŸUjΠΟUjÎ ÎUjâLUjâLt³isbŸâLUjUj²}Ÿc6ŒŸ¦Ÿ¦wŒŸ¦®ŒwŒŸ6ŒŸÙV  Ÿ³i    /®Y¦P¦çž³i ŸÙVÀ}Ÿ¯óÀ}ÔkÀ}ÔkŸaZ¿Äm€€UjŸaZ¿Äm€|€Uj6‰UjÚEaíŸUjÿ¥„ŸâLÈŸOííÈŸµ9ivŸ–›µ9vŸ–¶Æ•îvŸÈŸŸUj,orâL;ýõtUj„LMsb³i¬²¹iŸýõrhŒ~~~RjUj× çžŸýõ~~UjrhŒ~RjâLŸýõ³iCÁ6‰<‘E‘¶æŸ<‘E‘âLŸ<‘E‘’MŸ<‘E‘p‘†‘•qLŸ•qðX•q›¢X•qLc‚•q²•qáÁŸ‰®Ÿøm6‰ømŸømŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸâLŸUj“u§”ðX ÎΟUjÎ ÎΟUjtŸUjâLÎ ÎΟUjΠΟ¡|Ÿ¡|Ÿýõ•àc¡|ŸâLŸâLŸðXŸÿ¥Ÿÿ¥ûàc瞟ÿ¥ûÿ¥ŸUjÙVŸUj¦mŸUjÙVMå6ŸUjk–å6ŸUj”¡k–œÀ³iœÀÈœÀÈœÀÈœÀÈâL~~u°Rj «y°° ÎUjK€ÍÈ/ÎUj ÎÎ'\`ÍdÍœÀÈ´°œÀ¤¸œÀsbœÀ¹iœÀŒ~œÀ|œœÀâL÷{œÀsbœÀsbœÀšœœÀê—œÀ˜µ`´±Ÿ´È‹tŸ´ÈsbŸ´È[Ÿ´Èsb|lŸðXømŸâLømŸÖ§øtCÁŸâLCÁŸÖ§øtŸ™Uj™õj'\‰òÔkŸusbŸusbŸuŸuŸŸsbŸÎ ΟsbŸÿ¥Ÿøt’MUj6‰¿ÙVŸUjÙV¿1š4šÈÈÈÈŸÈ瞟ȟȟÈÈZOZOðXðXðXsb+RðXðXðXðXsbðXÀ}sb&cÆc:¤+RðXðXðXðXsbðXÀ}sb&cÆc:¤¥¯›!›¥[©]y+Ýy+Ý mâL msb mâL¥[‡¥[¥[?S mï¥[³iM}‚£aZ´M}âL³i³i¥[¥[Ý¥[:¤ŸÁi:¤Ÿ‚£‰£‹ÎRjðXtUj:¤ÁitUj:¤©]Ÿ‚£uPPPæOæOPæOPP­œ¹œüYלüYZ¥¯üYZ¥[âL ¥[¥[×:Ÿ>¿ý¾×:Ÿ>¿ý¾×:Ÿ>¿ý¾×:Ÿ>¿ý¾¥[×:Ÿ>·:»:¥[Ÿ>·:>²y+ÝŸ>@ZDZðX@ZDZðXŸ@ZDZoRÁi×:Ÿ>¿ý¾ŸâL„Lsb&csb&csb&csb&c¨¤‚£¨¤‚£~~?®Jtºy°UjâLUjðX:¤UjðX:¤¨¤‚£Uj‚£‰£Uj‚£‰£¨¤‚£¨¤‚£Uj‚£‰£Uj‚£‰£Ÿ¥[œP¢PœP¢Py+Ý·:»:ZOZOðXðXsb¿iá¥\«ì¥ͤФå¤bðXðXsbðXbðXðXsbšz‚£šz‚£šz‚£ŸâL³iŸnÆ%7œP¢PZOœP¢PZOPPPŸÓe¨¤‚£¥[Ÿ¼¢sb&c ŸŸ!Ÿ4ŸBŸYŸkŸ}ŸPPPæOæOPæOPP¥[Æc5!¥[Æc5!ž<Æc5!þŸÆc5!‚£‰£5!¥[Æc5!:¤5!¥[ÆcŸ¢hLéÆc¥[y+ÝaZsb{iŸ¢hLéÆcž<Ÿ¢hLéÆcâLy+Ýy+ÝŸ¢hLéÆcž<y+ÝŸ¢hLé¥[ÆcŸ¢hLé:¤A±¥[¥[· Ú í ý  ¡=Ç ¡4¡ E¡ d¡ z¡ ‘¡ ¦¡·¡Í¡Ü¡ê¡ ¢)¢ŸE¢Z¢MÚ•qûĈƒrÝ_®Mçž³isbsb²²•q’¦ª3ËŸª;½sb3ËŸª‰£Ÿª‰£Ö§³iŸÖ§‰£ŸÖ§‰£ŸÖ§‰£ 3Ëž¦§¦§§(§0§>§PPPæOæOPæOPP:¤ݧCÁVÄ`oݧCÁ;ß`oŸ>nÒvÒƒqt:¤ƒq W:¤Ÿ>ƒqt:¤Ÿ>ƒqnÒ:¤ðXømƒq‚£:¤ƒqtÆcƒq W:¤ƒqsb:¤Ÿ>ƒq¿:¤Ÿ>ƒqnÒ:¤ŸsbŸ>ƒqnÒ:¤Ÿ>ƒqsb:¤ømVÄ`oøm;ß`otÆcøm`oñn`o1t6t>tEtsb`o²\osb¨¤`oðX\osb¨¤`oðX\osb¨¤`oo\osb¨¤¢tX}tÆc³iÆcðXÆc¢tÆc³iÆcuu2uää5!ðX‘…5!‚£‰£5!‚£Æc5!ÿ¥¦mÆc5!:¤5!À}‘…5!‚£Æct5!K£wI£5!Æc´°upKsb5!ðX‘…5!ðX‘…5!ðX‘…5!K‘…5!‚£Æc5!tPÎI£5!ðX‘…5!âL÷{Æc5!:¤5!„LÆc5!âLÆc5!‚£Æc5!ðX‘…5!sbÆc5!‚£Æc5!‚£Æc5!sbÆcⱉ®ðX³i¹iŸMyM:¤uPPPæOæOPæOPPðXWqÆc²€©ÆcŸ´È‰£Ÿ´È³iŸ´È‰£Ÿ´ÈerŸ´È‰£Ÿ´ÈwÆaZ´Ÿ´È‰£Ÿ´ÈâL„~÷UjsbsbË…ðXŸË…*|Y¦Ÿ´Èer´ÈÁiŸË…´ÈðXŸË…´ÈðXŸ´ÈerŸ´ÈersbŸË…´ÈðXŸË…*|¿ŸË…*|:¤´°~~u°Rj «y°°âLsbUjz͉£´°Ÿsbt´°/ÎUj ÎÎ'\`ÍsbŸË…´È¿ŸË…´È¹iŸË…´ÈsbŸË…´È¿ŸË…*|¿WqŸ´ÈerŸ´ÈerŸË…´ÈÀ}ŸË…´È¿Ÿ´ÈsbŸ´ÈsbŸ´Èer´È‚£sb¨¤‚£ŸsbaZsb´È•Æ´È:¤´È‚£2j´´È:¤´Èsb´È:¤´È:¤´È‚£´È:¤Ÿ´Èer´È?S‰£´Èsb´ÈsbË…øm*|ðX*|ømŸ*|ersbŸ„©‰£„©sbŸ*|©š©²€©øm¦©ì¥ðXñ¥ͤФå¤÷i=¦5áê—ømᥴ±£ VÎ ZÒ ²© hÎ qì¥ðXñ¥J¦G¦S¦\¦P¦•°ͤФå¤÷i=¦5áê—PÎá¥VÎK hÎ ZÒ £ yÎ qðXì¥G¦ñ¥J¦P¦S¦\¦Y¦•°ͤФ头Èsb´Èsb´ÈsbŸË…´È¿Wq´ÈsbŸË…´È¿ŸË…´È÷iŸË…´È¿Uj‚£Uj:¤Uj‚£Uj‚£Uj¹iUjsbUj‚£Uj‚£aZaZaZÄ¥#¥Ì«Ñ«¨¤‚£Ÿ‚£¨¤‚£Ái¨¤‚£aZ‚£aZrhaZÍMsb&c\RM·©\R·©Áirhέ–³s²rhs²³i»©‚£»©‚£‰£sM³iuPPPæOæOPæOPPŽ[á"l[äWl[äWæOPæOPPsbsbsbtUj;»bsbsbsbsbUjtŸxó‚£R£^£ý¾ŸxóˆƒUjøtÙVˆƒ¦mUjÁiÙVtŸxó‚£R£^£ý¾Ÿx󈃦mUjÁiÙVŸˆƒ¦mCÁUj •.ytŸx󈃦mCÁUj •Ü¢CÁ݃Jƒwƒbƒƒêªúªª«±«Ö(c´«(c·«(c·«(c»«ª«±«Öª«±«ÖJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(csb»ƒ[¼´aZ(csbJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ăy°(cKJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(csbJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(cy°Jƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(csbJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(csbJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(c|œêª¾³Jƒbƒwƒƒƒ¬ƒ ³ƒ »ƒ ă(csbúª¾³Jƒbƒwƒƒƒ¬ƒ ³ƒ »ƒ ă(csbJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(c³iJƒbƒwƒƒƒ¬ƒ³ƒ»ƒ ă(csb¿«(c¹iŸ‚£Uj‚£¹…MÅ«y…¿ï¹…MÈ«ô·Msb:¤Ujy…:¤¦mooUj‚£‰£Ÿ‚£Ÿ³iÙVÙVÏ«UjÛ«M³iÀ}Ujã«ÔkðXMâL¨¤‚£Uj‚£‰£UjaíM:¤UjaíMøt¥[¥[ŸUj‰£ŸUjÀ}:¤Ÿ‚£Msb&cM:¤MøtUjt¨¤‚£tŸOíí¿Ÿ–›µ9Mâð«–•îðXrrr–•îðXr–MâLŸ–ø«Mú«¬:¤Ÿ–ø«:¤|¿Ö§M¹i–Ö§âLŸ–¬rrrŸ–¶ú«¬Æ¬Ÿ–¶:¤aZÆcaZÆc¥[³isbðXðXUj‚£ŸUj'¬,¬MðXUj‚£‰£¶æÝ¶æÝÙVŸ<‘E‘âLŸ<‘E‘âL/¤/¤ÄÄÄÄŸK¥¨¤‚£ŸaZsbŸª‰£ǬÔ¬â¬t¨¤‚£œÀ‚£œÀ:¤œÀ‚£œÀ´°âL~~u°Rj «y° °sbœÀ´°UjKsbœÀÈ´°/ÎUj ÎÎ'\ `ÍsbœÀ‚£œÀ‚£œÀ³iœÀsbœÀ‚£œÀ‚£œÀ‚£œÀsbœÀ‚£œÀsbµ` WÆcµ`ñnÆcŸ´Èer*|sbŸ´ÈsbŸ´È[sbŸ´È‹tŸ´È‹tŸ´È‹t|l¥[ŸâL:¤Ÿ‚£‰£/¤Ÿøtÿ¥ŸusbŸusbŸu³i´MðXŸu¹iŸsbÙV¿%¿sb{i²œÀ|ç®´¦mdâsbœÀdâ¿dâsbœÀdâ¶æœÀâLœÀ¥[{iœÀ¥[ž<œÀsb¥[¡¹¡¹¥[,oî­„Lf³i³iñnðX¼¢ðXàcðXuoÁi ã%ãK¥õÅømøm³iÈPλ®K»®dâȹiß®„L’M|œsbZÒsbšœ¶Ñøãsb œsbMè¿À}Àa¯¿n¯sbsbsbsb¿sb(cœÀ¿œÀ¿œÀ¿œÀ:¤(c¿(c¿¥[sb(c¿¨¤¨¤¨¤¨¤ÁiÁi¨¤ðXðXðX:¤:¤ÿ¥þƨ¤ ã;ßK¥:¤:¤ÿ¥ðXaZKKdâ*쨤¨¤¨¤M‚£ÈÈȨ¤ësb̫ѫaZsb¡¹È¨¤¨¤¨¤¨¤¨¤¨¤a¯:¤¨¤¨¤Èsb¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤2j´aZsb¨¤aZ(c¿sbUj(c¿4°UjC¡4°„LC¡aZ(c¿aZ(c¿aZ(c¿(c¿I°T°g°¥[ÙV/¤ë°sb4°I°:¤³i(c¿¥[Ö§z,oï¥[× A±Æc,oÖ§N±X±× A±Æc,o¥[N±X±× A±Æc,oÖ§N±X±aZ× A±N±X±Æc,o¥[çž× A±,oN±X±Æc× A±,o¿±ı,oŸÙ±á±„LŸsbŸ‡ß‹ßŸsbŸ‡ß‹ßŸ‡ß‹ßߥ[Ö§z¥[6²× A±Æc,o¥[N±X±I£× A±Æc,o¥[N±X±I£× A±N±X±Æc,o¥[I£ŸÆcâL¥[»:sbısb¿iz‚£6²ž<6²aZaZaZÆc:¤aZ:¤þi[¼´2j´aZÆc:¤þi[¼´aZR£Æc:¤aZaZ:¤2j´aZR£:¤aZaZ[¼´aZÆc:¤þi[¼´þi[¼´aZR£^£Æc:¤aZaZ:¤aZ=²aZ^£:¤aZ³iCÁ§•qÙV§ÙV§ÙV§ÙV§ÙV§ÙV§ÙV§ÙV[·•qÙVw·âL’·âL°·âL‹tÓe5[è·ø·|¿Wø•‰Š¸ ¸ ¸âLâLH¸âL&M:Ã`¸s¸âLH¸âLH¸âLH¸·¸âLs¸á¸âLH¸á¸âL¹âL6¹&MR¹&M:Ãr¹âL¹âL®¹âL̹âLå¹âLºò¡——”¡y ºò¡——”¡?ºò¡_ºò¡¾\¶'‰º{i”º—ºšºº  º nµ kµ ØÍ çž¾\¶'‰º{i¾\Ö§çV[·Ö§4{¶'§\çV¾\öºù(»2- Z- [·ŸÖ§œP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PœP¢PçV[»¶'ù(öº¾\§\» 2- h» y» ‹» œ»¨»´»À»Ì»Ø»ä»ó»¼¼¼YT-¼>¼¹N¼º?º\¼ i¼!w¼"¼#‹¼$•¼% ¼&«¼'¶¼(À¼)̼*Õ¼+â¼,ë¼-ô¼.½/½0½1"½2,½38½4C½5P½6Y½7c½8n½9’·:°·;y½<†½=“½>6¹?¢½@¯½A½BÕ½Cr¹D¹E®¹F̹G‰ºHä½Iï½Jú½K¾L¾M¾N&¾O1¾PB¾QT¾Rd¾Sv¾T¾U¥¾VžWä¾XH¸Y ¿Z¿[%¿\.¿]7¿^@¿_J¿`T¿a^¿bg¿cs¸do¿ey¿f€¿gˆ¿h¿i—¿j¢¿k«¿l¶¿mÇ¿nÙ¿oð¿pÀqÀr2ÀsBÀtWÀuhÀvzÀwŠÀx¦Ày¿ÀzÔÀ{çÀ|úÀ} Á~ Á4Á€FÁXÁ‚jÁƒ~Á„’Á…¦Á†»Á‡ÏÁˆãÁ‰ÂŠ#‹BÂŒb€Ž¡Â´ÂÈ‘ÚÂ’ö“Ô$Õ·¸–ḗ?ØbÙÚÀÛìÜÄ(ÄžJÄŸcÄ ƒÄ¡§Ä¢ÆÄ£áĤť$Ŧ:ŧTŨqũŪ°Å«ÍŬíÅ­Æ®"Ư>ưXƱkƲƳ˜Æ´µÆµÑÆ¶ïÆ· Ǹ#ǹAǺaÇ»ƒÇ¼ŸÇ½ºÇ¾áÇ¿ÈÀ;ÈÁ`ÈÂÈäÈÄËÈÅæÈÆ ÉÇ*ÉÈGÉÉdÉÊ|ɢÉ̹ÉÍçÉÎÊÏÊÐ4ÊÑKÊÒoÊÓˆÊÔ²ÊÕÜÊÖÿÊ×ËØ9ËÙTËÚqËÛŒËÜ­ËÝÌËÞòËßÌà<Ìá_Ìâ„Ìã›Ìä¹ÌåÜÌæôÌçÍè4ÍéMÍênÍë“ÍìžÍí¨Íî±ÍïºÍðÄÍñÐÍòÝÍóåÍôîÍõ Îö-Î÷OÎømÎù‘Îú©ÎûÇÎüåÎýûÎþÏÿ.ÏUÏsÏŒÏ¤ÏÆÏáÏÐÐ'Ð 8Ð OÐ gÐ €Ð ˜Ð²ÐÍÐæÐÑÑ2Ñ;ÑHÑUÑaÑmÑѕѡѰѿÑÉÑÚÑ þÑ!Ò"?Ò#]Ò$rÒ%„Ò&•Ò'ªÒ(ÄÒ)ÓÒ*äÒ+úÒ, Ó-Ó.-Ó/AÓ0`Ó1Ó2žÓ3½Ó4ÞÓ5ÿÓ6 Ô7AÔ8cÔ9…Ô:§Ô;ÉÔ<ëÔ=Õ>Õ?Õ@-ÕA9ÕBJÕCdÕDŠÕE±ÕF¼ÕGÌÕHØÕIéÕJöÕKÖLÖM'ÖN8ÖOIÖPZÖQkÖR|ÖS‹ÖTšÖU©ÖV¸ÖWÈÖXØÖYëÖZþÖ[×\ ×]6×^L×_^×`o×a|×b‰×cœ×d¯×e¾×fÍ×gÝ×hè×iø×j ØkØl)Øm:ØnKØo`ØptØq„ØržØs´ØtÃØuÙØvéØwÙxÙy!Ùz6Ù{FÙ|TÙ}eÙ~Z-ø·€rÙ[·•qÖ§‹tÓe€¿{iPsb&c´¶'¾\sb&c¶'¾\sb&cy › ½ ß ú  5 W w ¾ à ! ;! T! n! ‰! ¦! Ã! à! ù! " ." J" _Ãì¥ͤФ夶'¾\‰º{iöºsbPsb&ceÙw¦âL³i[·h" :¤¦m¶'¾\CÁî¿HR¦m¶'¾\:¤Psb&cÆ:¤ÆCÁ¦m:¤Psb&cÆ:¤ÆHR¦m³iÖ§?osbÖ§sb¿³i³iâ±Àâ³i³iÙV@âçŽ&µPçžæO&µPSåçž&µPçžæO&µ", çžæO&µçž&µ>içž&µPçžæO&µ", çžZO¿˜, 玳iZOsbI£¶ÑUjI£¶ÑI£âL§•q- +(•ÆM§•q+(•Æ Wc§•qM WG- +(§•qM WG- +(•q§M’MÆc&µPçžðXðXðXðXaZ³iaZ(c³iaZ(c³iaZ(c³iy+Ý·:»:y+Ý&. *. fCÁaZCÁÁisbsbsbàksbsb§ä´_Ãâ±_Ãâ±sb_Ãâ±CÁÄCÁÝûÄømÄsbsbsbàksbä´â±sbä´â±ÿ¥áÁ¥[¥[,oªTÓeªT[çªTâLâL[çðXðXðX§sb$ßðXµ`³iµ`³i¶'sb¶'sb¶'sb#1 &1 )1 M#1 &1 ¹i³i¹i³i¹i³ix1 ³i¾\Ž1 ”1 ¾\bThT¶'¾\sb&c¶'¾\¹i³i¶'¾\sb&c³i³iUjrÝ_®¹i³iU2 \2 ³iÀâ³i³i¹i³iÅ2 Í2 ³i§3 ¹i³iV3 V3 V3 V3 ¦õê³i”3 ¿˜‰® 3 ¦3 Ö§Ujâ±Ö§„L้®¼3 ˆƒß3 5áŒoß3 Àâⱈƒõʼn®{råçâ±âLäì 4 4 E¤ ¼3 ˆƒ 4 ÀâÖ§UjˆƒVj¦?o¼3 .4 @4 ]4 ¶Ñ4 Ö§Uj,oÌ r©¬¶ÑæO&µçžÀ∃â±b‰®Ÿ4 Ë$Ujc‚âLäìEå¯óˆƒ ¬4 ·4 Ã4 ‰® Î4 {rÙ4 •ñ4  5 5 ççyæ¿UjÖ§qaZö«aZö«aZö«ö«ö«aZ‹ÎRjaZ‹ÎRj•qUjÒ5 ×5 •q{i•qý5 6 •qUj{iI£I£uPPPæOæOPæOPPZOPPPæOæOPæOPPZOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPPPPæOæOPæO¬4 Ã4 EåÎ4 äìÙ4 •ñ4 5 5 çEå¬4 PPuPPPæOæOPæOPPuPPPæOæOPæOPPPPPæOæOPæO¦ž? ”3 E嵘¿˜§? ¹? PPPPPæOæOPæO.4 ·@ @4 ]4 PPŽ[á"ç"jl[äWl[äWŽ[á"ç"jl[äWl[äWuPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPZOZOPPPæOæOPæOPP/¤/¤/¤sbçŽsb”j.pH +H ðXÖ§cUjÙVÙVÙVXK .p®J‰®”j”j”j”j”j”j”j”j”j”j”j}N ‹N —N ¤N ±N ÅN ÚN çN O O (O uæÛìäìI# ~~‚ O# ê (# ¡| ®åccccçŽrÝ_®ž]ž]Mž]M£$ -Í£$ KÍ£$ tà$ ·ŠW·ŠS% rÝ_®&µrÝ_®&µçž&µrÝ:¤&µ:¤&µçžS% :¤S% ·Šk% :¤ZOZOPPPæOæOPæO¹i³i|œPPWœP¢PœP¢PæOPæO’& S% šbA±PPœP¢PœP¢PPPPuPPPæOæOPæOPPƒìŠœP¢PœP¢PuPPPæOæOPæOPPœP¢P¨PœP¢P¨PuZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PœP¢PZOœP¢PxZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PœP¢PZOœP¢PPPPPPPPPPPPPPPPPPPPPuœP¢PœP¢P¨PœP¢PœP¢P¨PœP¢P¨PZOœP¢PœP¢PœP¢P¨PœP¢PœP¢P¨PœP¢P¨PZOœP¢PPPPPPPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPZOæOPæOPPZOPPPZOæOPæOPPZOPPZOæOPæOPPZOPPZOæOPæOPPZOPPZOæOPæOPPZOPPuZOæOPæO&cPPZOPZOZOPPPæOæOPæOPPuPPPæOæOPæOPPœP¢PœP¢PuœP¢PœP¢PœP¢PœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PPPPPPPPPPPPuZOœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢PœP¢P¨PœP¢P¨PœP¢PZOœP¢P¨PœP¢PœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢P¨PZOœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢PœP¢P¨PœP¢P¨PœP¢PZOœP¢P¨PœP¢PœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢P¨PPPPPPPPPPPPPPPPuœP¢P¨PÁPœP¢P¨PÁPÇPœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PœP¢P¨PÁPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”ZOœP¢P¨PÁPœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPœP¢P¨PÁPœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢PZOœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPZOœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPw”œP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPœP¢PœP¢PœP¢PœP¢P¨PÁPœP¢P¨PÁPÇPœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PœP¢P¨PÁPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢PœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPw”ZOœP¢P¨PÁPœP¢P¨PœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPœP¢P¨PÁPœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢PZOœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPZOœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPw”œP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPœP¢PœP¢PœP¢PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPœP¢P¨PÁPÇPÍPœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPœP¢P¨PœP¢P¨PPPPZOZOZOZOPPœP¢P¨PœP¢PœP¢P¨PœP¢PPPœP¢PœP¢P¨PœP¢PœP¢P¨PPPuœP¢PZOœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢P¨PÁPÇPÍPœP¢PœP¢PœP¢P¨PœP¢PZOœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PÁPÇPœP¢PœP¢PZOœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢P¨PÁPÇPÍPœP¢PœP¢PœP¢P¨PœP¢PZOœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PÁPÇPœP¢PPPPPPPPPPPPPPPPPPPPœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPœP¢P¨PÁPÇPX•îÆ)åH 슜P¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹œP¢P¨PÁPÇPÍPw”}” ƒ” Ç À ¹œP¢P¨PœP¢P¨P*ßþI  J ˆö ä æOPæOPPuæOPæOPPuœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢P¨PœP¢PœP¢PœP¢PœP¢PPPPPPuœP¢PœP¢PPuœP¢P¨PœP¢PœP¢P¨PœP¢P¨PÁPÇPÍPw”}”œP¢PœP¢P¨PZOœP¢P¨PœP¢PœP¢P¨PœP¢P¨PÁPÇPÍPw”}”œP¢PœP¢P¨PZOPPPPPPPœP¢P¨PÁPÇPœP¢P¨PÁPÇPœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPÍPZOZOZOZOPPœP¢P¨PœP¢PœP¢P¨PœP¢PPPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}”œP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPÍPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢P¨PœP¢PPPœP¢P¨PÁPœP¢P¨PÁPuœP¢PœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢P¨PœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀœP¢PœP¢PœP¢P¨PÁPÇPœP¢P¨PÁPœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢P¨PœP¢PœP¢P¨PœP¢P¨PÁPÇPÍPw”}” ƒ” Ç ÀPPPPPPPPPPPuœP¢P¨PœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢PZOœP¢P¨PœP¢P¨PÁPœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢PZOPPPPPPPPPPœP¢P¨PœP¢P¨PuœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢PZOœP¢P¨PœP¢P¨PœP¢PœP¢PœP¢PœP¢PœP¢PZOPPPPPPPPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PœP¢P¨PœP¢PZOœP¢P¨PÁPÇPÍPœP¢PZOœP¢P¨PÁPÇPÍPPPPœP¢PZOœP¢P¨PÁPÇPÍPœP¢PZOœP¢P¨PÁPÇPÍPPPPœP¢PœP¢PœP¢PœP¢PPPœP¢PœP¢PœP¢PœP¢Pâ±â±â±œP¢PœP¢PæOPæOPPZOZOœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPœP¢P¨PÁPÇPZOZOZOZOPPUj´MUj´MçŽUjZOt‚ aZsb·³’U :¤:¤'!çŽ'!Ü¢:¤Ý€Ñ‡útÒYÒYœP¢PœP¢Pê ÁiÎ Îê :¤uPPPæOæOPæOPPZOœP¢P¨PæOPæOPPZOœP¢P¨PPPuZOœP¢P¨PœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢PZOZOœP¢P¨PœP¢PœP¢PœP¢PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨PœP¢PZOPPPPPPPPPPPPŽ[á"l[äWl[äWLUjLUjY £$ ³i£$ t£$ t:¤Îá¥ì¥ðXñ¥ͤФ夣$ ³iÒYÒYs|·ŠÒYQY ³i³i³i³i³i³i³i³i‰®çŽsbçŽnZ ŽžnZ tO# ‚®åú‚O# ¨¤’h´´‰®ç޳içŽú³i³i³i{iÓeÖ\ »{»{»{»{{iÓe»{(] aZ{iÓe{iÓe{iÓe{iÓe{iÓe{iÓe{iÓe{iÓe{iÓe{iÓeÓ]  ã¹iÓ] ³isbsbsbsb&c{ier³i¿³i¿erJ^ ³i³i³is^ |^ ƒ^ ‡?·Šs^ ‡?·Š|^ s^ |^ º^ (c·ŠM|^ cº^ |^ Ù"²ï^ ·rï^ |^ Ù|^ "²|^ {iÓe{iÓe{iÓe{iÓe{iÓe{iÓe{iÓe ã ã ãsb ã«ë&cœP¢P¨PœP¢P¨PPPPæOæOPæOPPº^ º^ -·(c·ŠM|^ cº^ ·ŠcÓe·r:¤º^ cÓe#_ :¤º^ ciz¡|:¤sbPPPæOæOPæOPPPPPæOæOPæOPPÙ"²ï^ ·rï^ ´M’|I4{µ°î` 4{µ°I\a Ö§@Ñ@Ñ\a áa \a ôa b \a áa ~”b \a áa Eb Mb ~”b \a áa Eb Mb qb ~”\a @Ñ™b Ö§b \a ôa ­b ~”\a ~”\a qb ~”\a  c ôa ~”\a ôa qb ~”\a ôa ~”Çc \a b Îc Óc ôa Øc ~”\a b Îc íc ôa ®J Øc Õ{Æ~”ud Çc   ~”Ny~”$ªçVÖ§âL䈃çVšbA±Ái‹tt~”™b ¿Ö~”ˆƒ3Ë™b ¿÷Ñáa ÷iì~”Mb "e Ö~”"e ?¥~”v©Re ÷ÑMb çž~”]e Ö~”ƒe v©Re ‡e Že •e \a @Ñ áa ~”v©Re @Ñ\a ·e á¥çž~”Re @Ñße 0 ~”r©v©Re ~”r©v©~”r©l©çVV«uPPPæOæOPæOPP’g Mg g ‹g [g eg rg ýg ýg ýg áa ýg ýg áa ýg áa ýg áa ýg áa ýg áa \a áa aZsbõÅýg áa õÅýg 8h aZsb\a \a áa \a áa \a :¤PPPæOæOPæOPP:¤:¤áa :¤áa :¤:¤çVM³i~”Çc \a b Îc ³i:¤~”\a b Îc h :¤Õ{ÆM³i~”ud Çc   ~”Ny~”ˆƒ3Ë™b ¿÷ÑÖ.y ì¥ ͤ Фå¤M³i~”Mb "e ͤФå¤~”ƒe @Ñl[ͤФå¤?¥~”r©v©Re @Ñ\a Máa :¤:¤:¤:¤:¤:¤l[áa ?¥~”]e ·e ˜h ᥣh ©h ?¥ ì¥ ͤ Фå¤l[áa ~”@Ñße á¥l[±h ­b ì Mb ½h Ìh ì¥ ͤФå¤Ûh ƒe áa ÷i~”$ªRe $ªRe 'r:¤~”$ª~”Ny~”$ª~”r©v©~”r©l©çV¬ÙVl 0i sb³i]i Ð}ÙVçV~”~””¡à¹~”´i à¹~”]i ~”¡ñ~”èi à¹~” j zÌj Çc (j X}ud ;j ]i ud ;j Wj ÙV»b[j ~”ud ;j pj Wj [j ]i  Çc ~”ud sj Çc   âL‘j ™j   ~”sj ¡j ©j Ny~”sj ¡j ³i~”sj ¡j $ªçŽ=¸ë~”¸ë k k !k ÙV{iÁi k k !k ÙV°¢Wk  k ~”v©°¢k ‰k k šk çž~”v©°¢k ‰k k šk ¾k Èk çž~”v©°¢k ‰k k šk m€ Èk çž~”l  l v©°¢~”l  l v©~”l  l l©çVV«çV$ª³i¨¤³i³içVl “i M³i~”‚£‰£³i¹i;j Rl ô<³i;j :¤~”sj ud Çc   âL‘j ™j   ~”X}_l sbsb_l sbsb_l sbsb k _l   Wk _l ÙV:¤sb:¤‰k ÙV:¤~”R£^£$ª{iÓeMçŽ/¤k X}:¤çV¬sb&cçV¬k X}~”R£^£$ª~”l  l v©~”l  l v©PPPæOæOPæOPPÙVMÙVÙV¨ÁiÁiÁi´M´M´M´M´MÅæçžÅæÖ§Ö§L s OÙVÙVÙV´MÁi´M´MÖ§´Més ÙVùs és ûjMt z´t ƒùs ƒùs b瞃ùs bÖ§Ö§Ö§Ö§ðX7u Ju ÿ ÿ €u ÙV¨{i:¤ÙV´MÁi´MÁi´MÁiu ®´œP¢PœP¢PPPPæOæOPæOPPÁiÁiœP¢PœP¢PPPPæOæOPæOPPŽ[l[äWl[äWæOPæOPPsbgx mx wx ‚x Žx gx ·x Äx Ðx Øx àx gx ›y ›y ›y êz n{ sbaZsb´Mw} šWjsbë} ó} F~ šbA±ÁiF~ šWjF~ Ð~ Ô~ ¡|F~ ï~ 8 ò¡Ö§à¹„L8 5¤°°¤ « 8 Ï Ü â 8 L¡|8 LT€ ¡|8 šWjñ€ ¡|ñ€ ÙV3ËÖ§’ ¡|’ È ’ ã’ ÙV3ËÖ§’ ‚’ šWj ƒ L¡| ƒ L¡|Kƒ  ƒ ‚ ƒ ¡|Kƒ ±ƒ  ƒ Ö§âL¡| ƒ Ö§¡|âL’M ƒ Ö§¡|âL ƒ âL ƒ âL ƒ Ö§’M ƒ šWj°… âL´… °… …°… † ®+ű+Ű… âLsb¡æsb¡æðXsb¡æðXsb¡æðXsb¡æðXsb¡æðXsb¡æðXsb¡æðXsb¡æðXA±sb´M¿iÁÒ‡ ï‡ ˆ âL*M{iÆc~”ªæO&µçž&µ>iæOçž&µPçžKªï‡  ƒ ëKª~”K¥‰ ªK^ñ€ K^K^’ K^K •û‰ K •KŠ #Š KŠ KªKªK[Š KMKL…KLKåoKK«Š KªKΊ ÕŠ K³i~”K¥‰ ‹ ~”K¥‰ ¿~”K¿~”Kåo~”Kåo~”K¿sb¿ ‹ §‹  •È‹ Ñ‹ ~”K.y~”K§‹ ^~”K§‹ ^È‹ å~”KÈ‹ ^~”K´±~”K§‹ ^È‹ £Œ ~”K´±K°…  ¢°… K ¢K°… æO9 °… ³i°… ³i°…  ’ ~”K°… ´±µ °… ~”K°… à  ´±µ )_âLÙVâLÙVâLsb~”8 K°…   ~”8 K°… 9“ °… KN“ °… KN“ …~”8 °… KN“ öL~”8 °… K“ ~”8 K°… öL~”K°… ˜“ ~”8 K°… ¯“ ~”8 K°… Æ“ Ì“ ~”K ~”K  ~”K D ‹ ” ‚~”KA” ‚~”KW” Mg” ÷i÷i~”ª ƒ K÷i~”ª8  ƒ K÷i~”ª ƒ K?¥~”ª• K?¥~”ª ƒ K5• ~”ª• K5• ~” ƒ K~• ~”²•  ƒ KE¢sbsbsb~”KçŽ~”Ksb~”K8 A– Q– ¬~”K8  ƒ Q– ¬~”Q– K¬~”Q– K¬~”Q– 8 K¬ªÍ– ¿Æc8ªþ– K8ª¬8ªþ– KÍ– 8¿8ªþ– K8ª8ªþ– Kª8ªþ– Q– K¬~”8 K¬~”K¬~”K¬~”8 K¬î— ø— K¬~”KF~ 8 Ujð?˜ H˜ çVKF~ 8 V«H˜ e˜ Kª~”K¿K •K^´M¿ië} :¤çV}˜ e˜ Ø Ƙ ͤФå¤#¯šiɘ Ò˜ ܘ æ˜ ñ˜ û˜ ™  ™ ™ æOPæOPP©]¥#¥Ì«Ñ«~”K¥‰ ¿©]¥#¥Ì«Ñ«~”K¿~”K¿^å~”K¿g” ~”K^þ™ å~”K°… à ´±µ I£©]KL~”K°… š š I£~”K°… š I£©]°… K ¢~”8 °… KN“ öL~”8 °… K:¤©]~”K  ×~”K¿¿/š :¤~”K  ~”K3š Mסš :¤~”K  ’ w¦ñ€ :¤~”KW” Mg” ñ€ çžñ€ :¤~”K  ¦š :¤~”K  ’ :¤~”KW” šbA±’ çž’ :¤~”K  û‰ þÙ û‰ û{û‰ :¤~”K  K#Š ^K#Š ^#Š þÙ #Š :¤~”K  KÛš ^KÛš ^Ûš :¤~”K  ~”sb~”sb ƒ :¤ ƒ w¦~”8  ƒ Q– K¬ ƒ :¤~” ƒ K¿~”KQ– ¬ ƒ › ~”K¿~”ª ƒ K÷i~”ª ƒ K?¥~”ª ƒ K5• ~”Q– K¬~”8 ª ƒ K÷i~”ª ƒ K5• ~” ƒ K~• ~”ª ƒ K?¥~”ª ƒ KE¢ ƒ :¤~”8 Q– K¬¬Ö§Í– ¿ÆcÍ– ¿Æc8ªþ– KÍ– 8¿8ªþ– K8ª› ×› ×› $ª› 玛 $ª8ªþ– Kì8ªþ– K8ªKªK› ˜¥’M8ªþ– KQ– ¬8 :¤~”8 K¬~”K¬~”K¬~”8 K¬K8ªþ– ¬Kª8 :¤~”K  F~ 8 ÓeF~ :¤~”K   ƒ In@› :¤³iI› V› sbUj»{©]¥#¥Ì«Ñ«ÙV ÙV ÙV ¹ -‘ izÙ ¹ -‘A±–MA±.pû{„m.pû{ðX&µPçžæO&µPSåçž&µPçž&µSåçž¡ž M¼ž çž ºÛž ðXÛž Ëòž Ÿ Ù,aZ"Ÿ l[&µ‹Í’MLŒsŸ aZ¡ž M­Ÿ ;½½Ÿ aZl[%ÓŸ ;½Z l[sbc¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isb¿isbpupuº  œÀ¿&µPçžæO&µ", çž~””1sb~””1sbV¡ Z¡ d¡ h¡ V¡ Z¡ d¡ h¡ V¡ Z¡ d¡ h¡ È¡  ·Š…~”Wj~”´M~”*¢ ~”ÙVr©~”v©r©~”u¢ ~”½o~”*M~”^~”^Ì ¿~”Ì ~”ª~”ª~”Ì r©~”µœ Ì r©Ö§iz-‘µœ ³i­£ ³i~”œÀµœ £ ‹ ~”œÀâL~”œÀâL~”œÀâL~”œÀµœ âL~”œÀµœ ¤ ’M#¤ µ '¤ ~”œÀ‡ß‹ßߓߗߵœ ~”œÀ‡ß‹ßߓߗß~”œÀµœ šz~”œÀâLâLµœ âL~”sbµœ sbMˆƒˆƒv©çž~”œÀ¥ v©~”œÀf=~”K¥ ~”K¥ ~”K¥ ìK¥ $ª~”K¥ $ªK¥ sb~”K¥ sb~”œÀK¥ âL~”K¥ sbÿ¥ r©~”v©ÿ¥ r©~”u¢ ~”M~”9¦ ~”O¦ ~”^~”œÀŒ¦ Ö§¿¤ ’M#¤ µ '¤ ~”œÀ‡e Že •e «¦ ²¦ ~”œÀ;¯C¯K¯S¯ئ à¦ è¦ § ~”œÀ;¯C¯K¯S¯ئ à¦ è¦ ~”œÀ, ~”œÀÖ§¿L§ ’M#¤ µ ,îiz-‘~”œÀ;¯C¯K¯S¯ئ à¦ è¦ Ö§¿L§ ’M#¤ µ ,î´±µ ~”œÀà§ ~”œÀà§ ~”œÀŒ¦ ^~”^~”.p~”m¨ s¨ 3Ë~”m¨ s¨ 3Ë~”m¨ s¨ ¡|~”³¨ ¹¨ ³i~”³¨ ¹¨ 3Ë~”³¨ ¹¨ ¡|~”œÀŒ¦ .y~”œÀ.y~”œÀsb~”œÀsb~”œÀ.yiz-‘~”œÀš µ ~”œÀ‡ß‹ß~”œÀ‡e Že ~”œÀµœ œ~”œÀœ~”œÀœ~”œÀâL~”œÀ{icctª ~”œÀNy~”œÀì~”œÀì~”œÀì~”wÊ-‘ݪ åª ×~”œÀ« âL~”œÀ-‘ݪ åª ×~”œÀ-‘ݪ åª ×~”wÊ Ãg” ~”œÀ Ãg” u« ~”u« ~”œÀ÷iµœ ~”œÀ÷i~”œÀ½« $ª~”œÀÕ« K¥ E¢~”œÀ$ª~”œÀ$ª~”ÿ¥ ¦^~”œÀ5• µœ ~”œÀ5• ~”œÀ5• ~”œÀ5• ~”ˆ¬ ¦^~”œÀ$ª~”œÀ$ª~”Óe~”Óer©~”v©r©~”u¢ r©~”v©r©~”u¢ ~”ôa =­ ~”\­ a­ ~”=­ ~”Uj~”UjV«~”V«Î Î G=F~”V«M~”u¢ v©È¡ /® }˜ œ¢,Ù,Uj< F® aZ|ZÙVz® ÙV¤® ÙVÌ® ÙVsä Msä Ù  G}˜ /® œ¢,Ù,V«<F® "²sb"²sb"²sb"²Æv¯ ƒ¯ çžçŽ"²¨¯ ²¯ "²ʯ õkÙ,›¦Z Ÿ ¡3° ;° C° W° çžZ œ›¦Û*Ÿ ¢,Ù,ò) V« <&µPçž&µSåçž4{b½„<ù­þ­¥#¥Ì«Ñ«Ù,W Lì° Œ\PPPæOæOPæOPP)¯|± ˆ± œPPPæOæOPæOPPÀ± W0ePPPæOæOPæOPPÀ± û{W0ev¤vPPPæOæOPæOPPî­ó­ù­þ­¥#¥Ì«Ñ«޲ ÿƒ˜² Ÿ² 슩² PPPæOæOPæOPP*³ 5³ >³ |ŠsbM ºH³ :¤:¤/¤™«:¤:¤H³ u°Ûž ¡ž L³ Ûž Ëòž Ûž ¡ž R³ ¼ž [³ MÔ¾‹Í’M˜Æl[­Ÿ {rd³ i³ ì¥ͤФå¤sbù­þ­¥#¥sb¥#¥Ì«Ñ«Ô9çŽì¥ͤФå¤=BÀÀî­ó­ù­þ­¥#¥Ì«Ñ«:¤27=BÀÀî­ó­ù­þ­¥#¥î­ó­ù­þ­¥#¥ù­þ­¥#¥¥#¥Ì«Ñ«;½çŽì¥ͤФå¤ZOZOZOPPPæOæOPæO´M:´ ´M´M5¤PPZOZOZOPPPPPPæOæOPæOiz-‘PPpuPpuP#¯ši'µ *µ ®+±-µ 5µ ±P:µ >µ Dµ Pµ PPPæOæOPæOPP”jLÆ=FÖ§¹µ sbsbsb¿iÖ§Óµ sbsb¬MsbK¥ ùµ Ö§à¹øtajPšbA±K¥ Ö§âLPœP¢P¨PÁPœP¢P¨PÁPPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPP”j”j”j”jœçV¢,Ù,/® È¡ .¶ C¶ N¶ [¶ }˜ f¶ >³ .p¯°n¶ y¶ sä ¿¹ Æë¶ £¶ Ûëèë >±¶ ·¶ Œ¯½¶  G³iöLôº » » '» 8» ³ir©~”v©¹i|œµœ šœµœ  œ~”œÀµœ âL~”œÀµœ âL~”œÀµœ âLO¦ ½o³i¹i~”œÀK¥ âL~”K¥ sb~”K¥ sb~”K¥ ì~”K¥ $ªÿ¥ r©~”v©l[äWl[äWæOPæOPPMŽ¡F» ~”9¦ ³i©]©]¥#¥Ì«Ñ«~”œÀµœ âL~”m¨ s¨ 3Ë~”³¨ ¹¨ 3Ë~”œÀµœ {iuZOZOPPPæOæOPæOPPZOZOPP”j”j”jöLd¼ q¼ ¼ “ ˜¼ æOPæON“ ~”Ujsbsbsbsbp1«½ M¹ÐM®J®JPPPsb&cœ³i:¤í½ :¤í½ :¤~”œÀ« âL~”œÀµœ âL~”œÀÙVg” ~”œÀ½« ÙV×~”œÀ½« ÙV×~”œÀµœ âL~”ÿ¥ ^~”ÿ¥ ^~”ˆ¬ ^~”ˆ¬ ^~”œÀ5• ~”œÀ$ª~”œÀì~”œÀ$ª~”œÀK¥ Õ« E¢~”œÀK¥ ÙV×r©~”v©~”œÀ$ª~”œÀK¥ ÙV×r©~”v©~”\­ =­ ~”ôa =­ ~”=­ .…ÐÐ~”Óe~”r©v©~”r©v©~”r©v©Psb&cPsb&cv©m¦w¦~”¿i~”¿iì~”¿i$ª~”¿i'r~”¿iìÊbõ½ PPPæOæOPæOPPaZsb&cù­þ­¥#¥Ì«Ñ«´M´M¾ ³iÙV=F:¤sb¾ &¾ v¯ :¤5¾ å¤ðXœ›¦Û*Ÿ ¢,Ù,ò)PPPæOæOPæOPP4{çŽ|ZÙVUjçŽ|Z ¿ ¿ $¿ ,¿ @¿ J¿ S¿ çžj¿  ºj¿ ;½ ¿ Œ¿ ›¿ ¿ °¿ Á¿ Ï¿ œM~”œœÀMÀ (À 4À @À LÀ XÀ dÀ ~”œœÀM„À ŒÀ œ©À Msbœ©À Msb~”œpj œpj œpj œpj ~”œœÀ  ~” Á šbA±\ìÁ )Á 1Á :Á N“ “ FÁ ~” Á œ[Š õj)Á 1Á :Á I£~” Á œœÀN“ A±Õ{~” Á œœÀN“ öLœ0i œN“ …œN“ œªÁ œsb1Á ~” Á œÀÖ§öL:¤ ¿ $¿ @¿ J¿ S¿ ØÁ íÁ  ®Jõ½ :¤|Zõ½ Psb&cj¿ :¤j¿ :¤j¿ ;½$¿  :¤ZOPPPæOæOPæOPPZOPPPsb&c:¤~”³i~”âLÓÏM~”¹i~”|œ Á sbðX~” Á œœÀ? H :¤/¤:¤/¤:¤~” Á œÕ{[Š õj)Á 1Á :Á Jõ~” Á œœÀ)Á 1Á :Á Áisbœ:¤œªÁ H³ u°H³ u°ÎÎõ½ ΖÎÎÎÎÎõ½ ÎÙVÎõ½ Î3^ G3^ G3^aZÙ ¹ ÎWjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ aZÙVWjVÈ MÆcÙVWjVÈ ÙVWjVÈ ÆJ1É ÆJ1É ÆJ1É ÆJ1É ÆJ1É ÆJ1É J J ÕÉ çÉ :¤MMæO&µçž¹i³i¹i³i¹i³i¹i³i¹i³i¹i³i¹i³i¬ˆ±ˆfÍ mÍ NuÍ fÍ mÍ NuÍ ¥Í ¯Í ¼Í ÄÍ ÌÍ çž¼Í ¥Í ÄÍ ÌÍ æ¾ ¯Í ‡e Že •e «¦ ²¦ Î ‡e Že •e «¦ ²¦ Î 8Î ", ÙVçžæOXÎ bÎ çž&µ>iæOçž8Î ", ÙVçžæOXÎ bÎ ÙVçžæO&µçž&µ>iæOçž G-‘-‘NÏ -‘-‘-‘-‘NÏ -‘-‘NÏ -‘-‘NÏ -‘-‘-‘-‘-‘-‘-‘NÏ -‘-‘NÏ -‘-‘-‘-‘-‘-‘-‘-‘-‘-‘-‘NÏ -‘-‘-‘-‘NÏ -‘NÏ -‘-‘NÏ -‘-‘ÇÒ çžNÏ Ö§ñÒ õj{iÖ§ñÒ  GÓ Ó Ë(,Ó 3Ó :Ó KÓ Ÿ) RÓ XÓ bÓ lÓ zÓ -‘-‘NÏ -‘-‘-‘-‘K¥ Ö§FÔ çžÖ§\Ô cÔ FÔ -µ §Ô -µ §Ô åÔ -‘-‘Õ -‘SøK¥ cÕ K¥ cÕ šbA±NÏ ³icÕ « NÏ ¹i-‘NÏ -‘NÏ |œcÕ  lKÖ šœ œcÕ è¿cÕ ÀcÕ sbÄ¿ À#cÕ  l-‘cÕ ,× -‘cÕ ,× E× K× cÕ a× g× WjVÈ •× ž× ¤× ±× McÕ WjVÈ ÙVcÕ WjVÈ ÙVcÕ WjVÈ ÆccÕ WjVÈ NÏ &ÀcÕ Dµ cÕ Dµ NÏ „‡NÏ -ÀNÏ 4ÀA±A±cÕ -‘NÏ ; cÕ -‘NÏ ;ÀNÏ BÀ-‘NÏ -‘NÏ -‘cÕ -‘âL4šøtÚ Ú -‘/Ú 6Ú -‘cÕ K¥ â±•Ú šÚ •Ú šÚ cÕ -‘cÕ K¥ cÕ -‘cÕ K¥ -‘IÀA±NÏ B -‘šbA±NÏ oÀŸÛ ¦çžŸÛ ¦çž-‘Ö§½« óÛ Ü óÛ Ü õkõj€°)Ü /Ü A±I£óÛ HÜ sbcÕ õkõj˜¼ pÜ  º„Ü -‘Ö§šÜ ¨Ü cÕ ñÒ ÙVDµ WjVÈ Sø+Ý Sø GUÝ 5!iÝ Î|Ý õ½ M·ŠÎ|Ý ŸÝ õ½ iÝ Î|Ý ðXÙVM·ŠiÝ Î|Ý ŸÝ :¤ÎßÝ ïÝ LM·ŠÎßÝ ïÝ  Þ LÎßÝ ïÝ  Þ LBÞ Ù  GWÞ fÞ sÞ €Þ Þ ™Þ ¥Þ ¯Þ ºÞ ÅÞ ÐÞ ÛÞ åÞ ñÞ ûÞ ß ß sbWÞ fÞ sÞ €Þ Þ ™Þ ¥Þ ¯Þ ºÞ ÅÞ ÐÞ ÛÞ åÞ ñÞ ûÞ ß ß ³iiÝ Î5!sbnß iÝ 5!iÝ 5!õß  à bà „¦iŸ”jSà Yà PPPæOæOPæOaZaZ–õ½ PPÑà õj}vMMM–MMMM©]©]©]”já "á æOPæOaZ–õ½ PPœP¢PZOZOæOPæOPPœP¢PZOZOPPPPPPæOæOPæOizŒ\PP”j”j”j”j”jÀá pj ¢^Ãá Æá uZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOPPPPPPPPPPPPPPPPPPPJ :¤ÆJ1É J :¤ÆJ1É ¨¤ÆJ1É |¿ÆJ1É |¿ÆJ1É ¨¤ÆJ1É ¨¤ÆJ1É |¿ÆJ1É ¨¤ÆJ1É |¿ÆJ1É |¿ÆJ1É ¨¤ÆJ1É ¨¤ÆJ1É |¿ÆJ1É :¤ÆJ1É :¤ÆJ1É sbÆJ1É ¨¤ÆJ1É ¨¤ÆJ1É sbÆJ1É sbÆJ1É sb&c.y:¤ÆJ1É sb&c.y:¤ÆJ1É sb.yÆJ1É sb.yÆJ1É |¿ÆJ1É |¿ÆJ1É pj :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É Áipj :¤:¤ÆJ1É sbÆJ1É |¿ÆJ1É sbÆJ1É |¿ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É :¤ÆJ1É |¿ÆJ1É :¤ÆJ1É |¿ÆJ1É pj :¤ÆJ1É |¿ÆJ1É |¿ÆJ1É Ãá sbÆJ1É sbÆJ1É sbÆJ1É sbÆJ1É |¿ÆJ1É |¿ÆJ1É |¿ÆJ1É |¿ÆJ1É |¿ÆJ1É sb&c(c:¤ÆJ1É sb&c(c:¤ÆJ1É |¿ÆJ1É |¿ÆJ1É |¿ÆJ1É ÕÉ çÉ :¤ÆJ1É ÕÉ çÉ :¤Êbõ½ PPPæOæOPæOPPuZOPPPæOæOPæOPPZOPZOZOPPPæOæOPæOPPœP¢P¨PœP¢P¨PPPPæOæOPæOPPœP¢P¨PœP¢P¨PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢P¨PœP¢P¨PPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPœP¢P¨PœP¢P¨PPPPæOæOPæOPPaZsbupbaZ-‘aZsbupbaZ-‘V«æK7—œP¢P¨PÁPÇPÍPœP¢P¨PÁPÇPÍPPPPæOæOPæOPPœP¢P¨PÁPÇPÍPw”œP¢P¨PÁPÇPÍPw”PPPæOæOPæOPPçV×Ò (î nß /î ?î Jî aî yî î ¨î ¯î ¼î Ëî ßî óî ï ï ÎiÝ !ï >ï Wï nï ï ï žï «ï Âï €Þ ß Þ !™Þ "¥Þ #¯Þ $ºÞ %ÅÞ &ÐÞ 'ÛÞ (åÞ )ñÞ *ûÞ +ß ,WÞ -fÞ .sÞ /Êï 0×ï 1äï 2ïï 3ûï 4ð 5ð 6(ð 76ð 8Kð 9]ð :mð ;~ð <ð =¢ð >°ð ?»ð @Ìð AÚð Bïð Cÿð Dñ Eñ F)ñ G7ñ HEñ IVñ J`ñ Krñ Lˆñ M”ñ N¦ñ OÂñ PÒñ Qäñ Røñ Sò T&ò U?ò VWò Wnò X‚ò YÀØ Z¡ò [ Û \PÛ ]¾ò ^Îò _äò `+Ø aþò bó c.ó duÙ emÕ fDó ¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤¨¤çžá¥œ ì¥ͤФå¤NÏ çž©]î­ó­ù­þ­¥#¥Ì«Ñ«çž-‘:¤-‘±ˆ:¤-‘çžMá¥=¦ì¥ͤФå¤-‘/¤K¥ ±ˆ/¤¥ Má¥=¦ì¥ͤФå¤K¥ çž-‘/¤K¥ ±ˆcÕ  lKÖ ý¾Ÿsb-‘:¤¨¤‚£cÕ :¤/¤/¤-‘/¤« ±ˆcÕ  lKÖ ý¾Ÿsb-‘/¤-‘±ˆ/¤-‘/¤¨¤‚£sb-‘/¤-‘±ˆ/¤-‘/¤-‘±ˆ/¤cÕ ,× E× K× Mì¥ͤ Фå¤cÕ ,× E× K× çžcÕ a× g× Mì¥ͤФå¤cÕ a× g× çžcÕ WjVÈ WjVÈ WjVÈ cÕ WjVÈ cÕ WjVÈ cÕ WjVÈ cÕ WjVÈ cÕ ÙVcÕ WjVÈ MÓe-‘:¤/¤MÓe-‘:¤/¤-‘/¤-‘‚£sbcÕ :¤-‘:¤K¥ ±ˆ:¤cÕ K¥ çž/¤:¤-‘:¤â±‚£:¤M:¤K¥ &c:¤cÕ ° ¾ Mì¥ͤФå¤cÕ K¥ çžM:¤K¥ &c:¤cÕ Ê × Mì¥ͤФå¤cÕ K¥ çž-‘:¤-‘‚£:¤-‘I£-‘:¤-‘‚£:¤-‘çž-‘:¤-‘‚£:¤-‘:¤¨¤‚£:¤Ö§½« çžóÛ Ü õj€°¿óÛ €°ÓŸ HÜ …óÛ HÜ Ü /¤{iâ A±šbæ î iÖoÖsbî aZú Mú MPsb&ccÕ   :¤Æc4 î aZ-‘Ö§¨Ü cÕ ñÒ çžõj–I£M»­û{-µ  Ì   ì¥ ͤ Фå¤çž+Ý M»­§Ô -µ   \« iz -‘ Ö§ ì¥ͤФå¤+Ý çžçž Gn{ ©]¥#¥Ì«Ñ«Î|Ý ŸÝ M·Š( œ 1 ì¥ ͤ Фå¤iÝ Î|Ý ŸÝ :¤A±BÞ  G9 G  G-‘sbNÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ -‘NÏ ‚£NÏ ‚£NÏ ‚£NÏ ‚£NÏ ‚£NÏ -‘NÏ ‚£NÏ ‚£NÏ ‚£NÏ ‚£NÏ ‚£NÏ ‚£NÏ -‘NÏ ‚£NÏ -‘BÞ Mì¥ͤФå¤BÞ çžZ nß I£Î_ nß I£:¤nß I£nß I£ - 9 J W m „ š » Â Ð Û í   9 * < M n &µ½o³iÀ½oI£ š ½o&µ½o:¤&µ½o:¤&µá¥”j½o=¦¥ Vά Ë© ì¥ ͤ Фå¤ÙVº ½ :¤Ë :¤&µsb&µsb œ³i³iPsb&c:¤z“Mº çŽçŽðXkµnµ¿içŽðX:nµkµ¿iaZsb tì¥ͤФå¤&µaZsbŸnᥥ[Ö§ì¥ͤФ夔jüwxaZ[ a aZUjwÍî! Íîä• wwwçŽD¤D¤wUjwUjwaZ´MUj”jUjUjUj´MUjaZšaZÝ ™«™«üwüwsb™«™«aZaZer] ÔkaZÆceraZeraZeraZerMaZeraZer´raZŸõœÔkaZ{i©]ƒŽ[á"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPl[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"l[äWl[äWæOPæOPPŽ[á"ç"l[äWl[äWæOPæOPP©]uPPPæOæOPæOPP: ÍîæOPæOwÍî·vPP¥#¥Ì«Ñ«y üwüw”j”jðXðX< J Y f Y œP¢PœP¢PœP¢PœP¢PPPwaZ¿iI£] ÔkI£aZÆc¿isb™«c™«™« Ãc] caZM¿iI£aZnµkµI£ŸüwI£õœÔk³isb™«wwsbwsbwsbwsb¤ÞsbwUjsbwUjsbw¿iaZI£aZÙVW0eaZA±t5A±t"²Uj"²Uj"²Uj"²UjrÝ_®rÝ_®rÝ_®rÝ_®‹ÎRj‹ÎRj‹Î王ÎçŽ4{WÓe·ŠÓeöL{iÁiöLPaZÙV©]©]öL­b Œ À ’ ­b A±tP=BÀÀî­ó­ù­þ­¥#¥Ì«Ñ«î­ó­ù­þ­¥#¥Ì«Ñ«çŽÓeù­þ­¥#¥=BÀÀî­ó­ù­þ­¥#¥¨¤‚£¨¤‚£ù­þ­¥#¥=BÀÀî­ó­ù­þ­¥#¥¨¤‚£¨¤‚£¥#¥Ì«Ñ«ù­þ­¥#¥Ì«Ñ«UjW0e玌ÖsbaZ´Msb&caZ´Msb&cšbA±sb’Ö±«Ö&c±«Ö’Ö(caZð²§»aZð²§»aZð²§»Ö½aZð²§»Ö½aZð²§»Ö½aZð²§»Ö½Ù½aZð²§»Ö½Ù½aZð²§»Ö½Ù½C¾aZð²§»Ö½Ù½C¾F¾²ò³Æcð²§»²òÆcð²" ²ò³¶Æcð²§»Ö½²ò³ð²§»²ò³¶ð²§»Ö½aZ(cð²§»aZsb&caZ"²aZsb"²aZsbŸaZ•q ¬sbupë upaZ´MaZ”j@ G P PPPæOæOPæOPP I2ª@ aZ&µ:¤&µ‹t/¤&µ:¤ ¬:¤ŸaZ•q ¬sb&caZŸsbŸaZ ¬”jµ PPPæOæOPæOPPú   - sb™«I£™«:¤sbÕ{I£ZOZOZO™«ZOZOZOPPP™«:¤™«™«Õ{[¼™«Õ{[¼™«:¤sb:¤³isbçžÌ eraZ³icä´½oaZä´ì eraZer:¤aZsb{iaZsb&caZsb{iaZsb{iaZ®+±+ sb{iÙV sb{iaZsb{iaZ®+±+aZ®+±+aZ®+±+aZ®+±+aZ®+±+aZ®+±+aZ{iaZsb{iaZ&1 #1 aZ±+ÀaZ&1 #1 aZ®+ ÀaZsb{iaZsb{iaZsb{icðX¿ic¿ic¿ic¿ic¿iaZ¿iaZ¿iaZ¿i(cš ܢܢš |Zš ´Mš UjUjsb³iÆc{i¨¤‚£ú  ú  sb&c4 Ö§O4{5¤ÙVÙVÙVÙVÙVÙVUjÙVUjÙVsbsbsbsbsbsbsbsbsbsbsbsbsbMçžMPPPæOæOPæO-‘ÙVPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPPPPæOæOPæOizPPçžPsb&cÆ:¤çžPsb&cÆ:¤çžçž:¤çžçž:¤çžçž:¤çžÒYÒY¿iaZ{i´M³i´MÒYG× ÒYçžPsb&c¿i:¤¿iaZ:¤MMMMMMMMMMMçž´M³i¹i’Msb³isb³iŸEc PPÖ§&µçž&µçž¿i##¿i¿iöaÒYüaöaÒYöaÒYZOPPPæOæOPæOPPZOPPZOZOsb*d ŸaZsbuZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOPPPPPPPPPPPPPPPPPPPuPPPæOæOPæOPPuPPPæOæOPæOPPž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ÁiPIä Áiž]ž]ž]ª âLž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ÁiA±šbšzž]ž]ªž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]‹ ž]‹ ž]‹ ž]âLž]¶ã âLž]âLž]âLž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]ž]™«ž]ž]™«ž]sb&c¶ã sbž]¿i¿i‹ ‹ Z ±±±± ±#±±± ±#±o‹ r‹ u‹ x‹ ÙVÙVìWû{ìWû{ìWû{ìWû{ìWû{ìWû{ìWû{ì‹ û{Êbþ‹ çŽõk•qXŒ jŒ •qXŒ ñÒ   , D &µPçžæO&µSåçžÄ Ï –­–­Ž –­n{ –­7Ž –­–­|± –­ˆ± –­Lì° „Ž –­œŽ †v§Ž °Ž v»Ž –­ÚŽ äŽ –­ •q _ Œ_ À± W0e_ _ n{ ƒ¯ÿ  À± À± À± À± À± WÔ9Ô9(‘ ¡ž   0‘ 5‘ >‘ MÔ9;½;½;½ÿ‘ ÿ‘ ÿ‘ Ž’ ™’ Ÿ’ ç’ ç’ ”j\“ “ “ Š:}v\“ }vé“ uPPPæOæOPæOPPUj(• u¢ -• 2• 6• Ái”j”j”j”j”j”j”jÙVŽ— ‘— ”— ˜— œ— Ÿ— £— ¦— Ái”j”j”j”j”j”j”j”j”j”j”jÙVðX‹™ ¿i‹¿Ž™ ðXðXðXðXðXðX‘— Fš ¿iðXðXðXðXÁiu¢ › › ›  › ðXðXðXðXðXðXÙVýkðXðXýk´MÁiÓeðXðXðXðXðXðXðXðXðXðXðXðXðX– ž uȃ¯ D , D ì‹ û{|Z¥#¥Ì«Ñ«+ž :¤XŒ jŒ •q2ž  Xž `ž lž  qž þž ™Ÿ !Ÿ .Ÿ PPPæOæOPæOPP n{ ƒ¯ÿ  ÷Ÿ   Ô9|± 3  ˆ± T  |± ˆ± p  Ÿ x  ì° }  „Ž ‰    |± ˆ± •  Ÿ Ÿ  }  „Ž ‰    ýõ ¨  Ÿ x  ì° }  „Ž ‰    Ç  Ÿ x  ì° }  „Ž ‰    ýõ å  í  .p SZ ö 4¡ †v˜v=¡ v¤vt¡ 4{T€ |¡ “¡ í  —¡ .pÀ± ³¡ (‘   »¡ 5‘ >‘ Ρ ס t¡ ì¡ T€ |¡ ù¡ ¢ ”jx  ì° ;¢ Ÿ I¢ }  „Ž ‰    |± ˆ± h¢ Ÿ I¢ }  „Ž ‰    ‡¢ ”jI¢ ¡¢ ©¢ û{¯¢ æOPæOPPÒ¢ æOPæOPPþ¢ £ !£ 1£ 9£ PPPæOæOPæOPP࣠æOPæOPP¤ æOPæOPP,¤ æOPæOPPO¤ æOPæOPPx¤ æOPæOPP˜¤ ª¤ ¾¤ Τ ठó¤ æOPæOPP  ö* b¦ Y©  ®©  ¾©  È© Ò©  ã©  ®©  ‚ª  ®©  ¾©  È© Žª Ÿª  ìª  üª   «  ‚ª  Z«  m«  g¬  b¦ ”jaZµœ aZµœ =²Æcer|ZM=²|ZMŽ¡aZµœ ©­ ¼­ É­ Ž¡KsaZµœ ;¯C¯sb#d'dÁiaZsbaZÁiaZsbaZsb;¯C¯sb›®  ® sb#d'dsb#d'dMþ® sbaZsbaZ$¯ aZsb;¯C¯sbaZsb;¯C¯sbaZk¯ çVaZÁiçVŒ¯ ìçVaZáa çVaZ¥¯ aZ{iaZµ MÙ¯ C¯㯠MÙ¯ C¯õ¯ ;¯C¯MçVaZÓeçVaZçŽaZUjaZUjaZUj}° UjaZ\ì›®  ® ð NyÚ° sbaZ³içV›®  ® $ªçVaZsbçV›®  ® sbçVŒ¯ Re ›®  ® °¢aZ°¢aZtçVaZtçVaZçŽçVaZ³± çVaZU çVr©›®  ® ð v©çVr©›®  ® ð l©çVaZUjçVŒ¯ Ú° ]² Uj›®  ® ð q² :¤çV›®  ® ð sbçV²ò³sbçV²ò³sbaZsbaZsbçVŒ¯ &cçVaZV«çVaZV«€³ KsöLKsöL;¯C¯Ái;¯C¯:¤aZÁiaZ:¤aZsbaZsb#d'dsb#d'dsbaZk¯ aZ³iaZk¯ aZ:¤çVŒ¯ ÁiçVaZìçVaZÁiaZsbçVaZÁiçVaZÁiaZsb&c ® {i¡³ $¯ çV¡³ çŽçV¡³ ÁiçVaZìçV›®  ® $ªaZ³iaZsbaZsbçVaZÁiaZsbaZsbçVaZÁiçVaZçŽçVaZt¡³ $¯ ¡³ tçV¡³ ÁiçVr©›®  ® ð v©çVaZÁiçVr©R£^£j£l©çVaZÁiçVaZUjR£^£j£Ny›®  ® ð q² ¨³ ³³ ¾³ ›®  ® ð q² ¨³ ³³ ¾³ ›®  ® ð q² :¤çVR£^£sbçV›®  ® ð q² :¤dz г Ú³ sb²òq² ä³ ¾³ MaZMaZµœ ¿Äí³ ¿Äí³ ø³ R£^£MŒ¯ q² ¨³ ³³ ¾³ Œ¯ q² :¤aZsb¿Ä|œ¹i³iâLaZ‚£Ö§J Ö§J çžJ I£J I£MI£:¤I£I£çžsbçžsbsbçž:¤çžsbsbçž:¤çžsbçžsbçžsbsbsbsbsbsbsbsbsbçž:¤:¤:¤:¤çžsbsb(c(csbsbsbçžÖ§&µPçžÙVšz³iÙVšz³iLË…âLMMM•· MMM³idw…¸ \a -‘­b ìEb Ѹ Û¸ ÙVuPPPæOæOPæOPPœP¢P¨PÁPœP¢P¨PÁPœP¢PœP¢P-‘-‘­b œP¢PœP¢PZOœP¢PœP¢PZOPPPœP¢PœP¢PZOPPPæOæOPæOPPœP¢PœP¢PZOPPP!½ (½ <½ PPPæOæOPæOPPœP¢P¨PœP¢P¨PœP¢P¨PœP¢P¨P ¾ šzuœP¢P¨PÁPœP¢P¨PœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢PœP¢PœP¢PœP¢P¨PÁPœP¢P¨PœP¢P¨PÁPÇPœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢PœP¢PœP¢PPPPPPPPPP{iÆc:¤•· :¤MMM•· M¼¿ ÷É¿ Ñ¿ (À 6À GÀ UÀ eÀ À À  À ZOZOZOZOPPaZsbÖ§-‘Ö§Ö§Ö§Ö§Ö§QlÙVÖ§Ö§´M&µPçžæO&µSåçžÙ ererL§ ’M#¤ L§ ’M#¤ ‹ &µPçž&µSåçž&µPçžæO&µ", çž&µPçž"Ì´MaZ®+´MaZ{ier&µPçžæO&µ", çžæO&µçž&µ>içž&µPçž&µPçžæO&µ", çžæO&µçž&µ>iæOçž&µPçž&µPçž&µSåçžwÍwÍãã;½{iÖ§;½Ö§ªšzªšzªªÖ§¢Î ‹ ¨Î ª¦mª¦mª¦mª¦mªª³iÙVÙVÌ ‹tª¤ Ö§dw’M๪¤ Ö§dw’Mà¹^¿,î^¿,î^¨Î ¦m,ΠL§ Ö§’M๦m,î¿L§ Ö§’Mà¹,î¿L§ Ö§’Mà¹,î¿L§ Ö§’M๿֧’Mà¹,î¿Ö§’M๿֧’Mà¹,î¿Ö§’M๪’MäÐ âL’MªÖ§âLªâL¿Ö§¿Ä{i{isb&csbMMMÁiÆcÁiÁiÆcÁiÆcÁiÆc³iÆcó`û`öLöLµœ šbA±Ò —Ò Ò ˆ …ÁiÌÒ ÕÒ åÒ ÌÒ Ó Ó ÌÒ €ïÁiÁiKsKs  Ks…KsûÓ Ô {i{i¢Ö§sbsbdwdwªdw;½r©v©êÔ QlÙVÕ êÔ  GêÔ Õ Õ v©³i{iXÕ &c G&c³i{i{iaZ³iâLÓÏâLâLâL´±´±âL´±´±MMMMFÚ WÚ <çVçVÚÚ çV‹ ÙVçVâLÙVçVâLÙVçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLçVâLÌ Ü Ì sbsb&csb&cÌ ‹ sb&cÌ ¿Ì MÌ …¸ Ì sbÌ sbÙÜ šz¿ÙÜ šzMÙÜ šz…¸ M¿iLâL´MâLâLâLâL]Ý œhÝ öLiz~Ý œhÝ öLizˆƒ’MˆL¿’M.y.y.y.y.yJ J iz6Þ OÞ Ö§ˆƒ’M#¤ ˆLÖ§ˆƒ’M#¤ ˆLˆLÖ§ˆƒOÞ ›Þ §Þ ˆLÖ§ˆƒ’M#¤ ˆLÖ§ˆƒOÞ ›Þ §Þ ˆLÖ§ˆƒ’M#¤ ˆLaZNyaZ$ªÅÅRß $ªizaZ0 ª$ªª?¥;½l©¬÷i;½l©¬?¥Ksiz0 ajÖ§âLäÚß ˆƒÝß Ö§âL䈃֧âLäÚß ˆƒÖ§âLäÚß ˆƒ{i{i{i{i{i{i{i{i{i{i{i{i&c G{i{iiz¹á ¿¸ëˆƒizæá ¿¸ëˆƒ¸ëizæá ¿¸ëˆƒiz¹á ¿¸ëˆƒÖ§ˆƒOÞ 6â ˆL|Š÷Ñ>â ¨ä ®ä ¡| äçVÖ§Êb`â çVÖ§ˆƒ|Š÷Ñ>â ¨ä®ä ¡| äçV|Š÷ÑçVl©ð hìº(Ë(l©Éâ Ñâ  @ ^­ŒÖaZjjUj™«šbA± ã ã ã )ã  ã ã ã )ã  ã ã ã )ã -Ísb:¤…ã ψ…ã ψsb·ã Åã sb:¤sb÷ã Åã sbä 6ä Kä Zä pä tä xä Kä ™ä ©ä 6ä Zä Åã ³ä ¼ä ™ä 6ä Kä ©ä ä ;¯C¯Kä 6ä ™ä ©ä Zä ìä øä å Zä Ks+å ͤ3å Zä KsVå 3å `å Zä Kswå `å ÆcZä Ks¨å `å Ñå Ùå Kä ®+±+dæ mæ Zä Kä Ksÿƒ„æ Ksdæ mæ Ö§’M#¤ çV±ƒ ¨æ çV¿Ææ l[ÿæ ç WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ WjVÈ ÙVWjVÈ ÙVWjVÈ WjVÈ WjVÈ WjVÈ UjÙVsbMM³i´MsbsbçVWjVÈ sbçVÁiçVâLÁiçVÖ§âL5• é çV´±;é R„çVªøtYé _é çVçVçVçVçVçVçVçVçVçVçVçVçV´MçVâLçVÙVçVçVçVy+µì çV¡|çV÷içV*rçV?¥çV¡|çV*rçV?¥çV"jŸ sbI£çVWjvuÆcÙVVÈ çVWj%7VÈ çVWjøtVÈ çV;½WjÆcÙVVÈ çV$:;½çVy+…+µì ïí ´Msb´Msb´Msb´M…¸ ´MA±´Msb´Msb´M³i´Msb´M{i´Msb´Mºî ´MÎî ´Msb´MÁi´MÁi´MNy´Mõ½´Msb´M$ª´M玴MÈ ´Msb´Mì´Msb´M'r´Msb´M÷Ñ´M‘ ´MUj´Mv©´M–é´M G´Msb´M G´MUj´MUjV«”j”jÙV-ñ :¤³iv©^UjÙVaZsbçž|ñ ãæ &caZsbPsb&c&µ¿i&c&µíb&csbaZ´ZOZOPPPæOæOPæOcPPZOZOPP\ò iò vò Œò ¡ò ±ò PPPæOæOPæOPP.pô L,ô "ô ö*Ñâ {ô ô Lô ,PPPæOæOPæOLô ,PPZOZOPPPæOæOPæOPPZOZOPPPZOZOPPPæOæOPæOÙVPPuPPPæOæOPæOPPuPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPuPPPæOæOPæOPP”jãø íø ûø ¶´ ù ;½Ñù L‹ ô Pú ô pú }ú PPPæOæOPæO¿ú Çú Pú PPuœP¢PZOZOZOZOZOZOœP¢P¨PPPPæOæOPæOPú PPœP¢PZOZOZOZOZOZOœP¢P¨PPPPPPPPPZOZOô ô +ü 7ü Ÿ` PPPæOæOPæOPPÜ¢@ü Kü Xü iü rü {ü PPPæOæOPæO’ý +ü L£ý 7ü Ÿ` PP’ý L&ŠPPPæOæOPæOPPÂý Ñý äý PPPæOæOPæOšbA±ÁiPPÛþ äþ PPPæOæOPæOPPuPPPæOæOPæOPP`ÿ oÿ |ÿ Šÿ PPPæOæOPæOƒ¯¤  5¤PP; J U b p PPPæOæOPæOÀ± W0ev¤vPPî­ó­ù­þ­¥#¥Ì«Ñ«uZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PPPPæOæOPæOPPZOZOZOZOZOZOZOZOZOZOZOZOZOZOZOœP¢PPPPPPPPPPPPPPPPPV .pPPPæOæOPæOPPZOZOZOZOPPuPPPæOæOPæOPPZOZOZOPPPæOæOPæOPPZOZOZOPPPuZOZOZOZOPPPæOæOPæOPPZOZOZOZOPPPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuZOZOZOœP¢PZOZOœP¢P¨PZOZOZOœP¢P¨PZOZOZOœP¢P¨PZOœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PZOœP¢PZOœP¢PœP¢P¨PZOZOœP¢PœP¢P¨PZOZOZOZOZOZOZOœP¢P¨PœP¢P¨PZOZOZOZOZOZOœP¢P¨PÁPœP¢PœP¢PœP¢PZOZOZOœP¢PœP¢PZOœP¢PZOæOPæOPPZOZOZOœP¢PZOZOœP¢P¨PZOZOZOœP¢P¨PZOZOZOœP¢P¨PZOœP¢P¨PœP¢P¨PœP¢P¨PÁPœP¢P¨PZOœP¢PZOœP¢PœP¢P¨PZOZOœP¢PœP¢P¨PZOZOZOZOZOZOZOœP¢P¨PœP¢P¨PZOZOZOZOZOZOœP¢P¨PÁPœP¢PœP¢PœP¢PZOZOZOœP¢PœP¢PZOœP¢PZOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPZOZOæOPæOPPì ÿ  1 L m {  ¢ sb³i¹i"Ìsb"Ìsb"Ìsb"ÌaZsb™ ¤ PPPæOæOPæOPP ¢! æOPæOPPt"ÌuZOœP¢PœP¢PœP¢PæOPæOPPZOœP¢PœP¢PœP¢PPPPPZOZOZOæOPæOPPZOZOZOPPPZOZOæOPæOPPZOZOPP&Š´… ‰# 5œ”# œöLŸ# uPPPæOæOPæOPPuZOZOZOZOZOZOZOZOZOZOZOZOZOPPPæOæOPæOPPZOZOZOZOZOZOZOZOZOZOZOZOZOPPPPPPPPPPPPPuœP¢P¨PÁPZOZOœP¢PœP¢PPPPæOæOPæOPPœP¢P¨PÁPZOZOœP¢PœP¢PPPPPPuZOZOZOPPPæOæOPæOPPZOZOZOPPPuPPPæOæOPæOPPœP¢PœP¢PPPPæOæOPæOPPZOZOæOPæOPPZOZOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPP€7 L+ü †7 “7 œ7 ¦7 ¼7 L&Š8 $8 ³­‡Ñ,8 $8 &Š,8 œP¢PœP¢PPPPæOæOPæOPPˆö[ö­8 Å8 PPPæOæOPæOPPuZOPPPæOæOPæOPPZOPuZOZOZOZOPPZOZOæOPæOPPuPPPæOæOPæOPPçŽçŽuPPPæOæOPæOPPLJ~< –< ,8 ±< Ó< Ló< +ü +Šö? ˆƒ= = ý? @ @ #@ 1@ =@ J@ V@ b@ p@ ‚@ ‘@ Ÿ@ ©@ ´@ ,8 ZOZOÖ§Ö§¯ó¯ósb&ŠLÝA b@ íA ÷A B B ,8 ZOZO´MLÝA b@ ’B œB +ü &Šä ’M ,8 ZOZO´ML&Šajˆƒ.pC û{b@ $8 C Ýß -C ,8 ZOZOæOPæO´MPP÷{ÎPPPæOæOPæOPPZOZOæOPæOPPÖ&cÓeZOZOPPPæOæOPæOPPZOZOPPPÊb`â PPPæOæOPæOPPuPPPæOæOPæOPPuPPPæOæOPæOPPZOPPPæOæOPæOPPZOPPPuZOæOPæOPPZOPZOZOæOPæOPP E [E L´@ ˆƒÅ8 Ï[ G G |^ b@ *G >â 3G 6â |Š#@ 1@ ÷Ñ>G JG ®äXG ,8 œP¢PœP¢PæOPæOÖ§PPÕ á¥v©ì¥ͤФå¤Lˆƒp€,8 ZOZOæOPæOPPíG LöG ˆƒp€,8 ZOZOæOPæOPPÖ&cÓeÖ&cÓeuPPPæOæOPæOPPZOœP¢PZOZOœP¢PZOPPPLOH ˆƒ,8 ZOZOæOPæOPPuPPPæOæOPæOPPL±K #@ ô ö*Ñâ ,8 ÈK ~­ y+ "ô @ ÚK O ,8 L >º(Ë(O +O 1O Ÿ) {' ¼w :O KO SO dO vO ^­¯°€O PPPæOæOPæOPPsb¹i|œt"Ìt"Ìt"ÌÁiÆcÁiÆcÆcÁiÆc:¤¨¤:¤MéO ¨¤¨¤¨¤ìO ìO ÙV ÙV ðO Psb&cêÔ |ZQlÙVÕ êÔ  G:¤|Zsb´&c:¤&c:¤&c:¤{içž&c GaZ:¤”j”j”jFÚ Š<ôO P  P P $P /P AP SP dP tP ~P ‡P “P ¡P ®P ¼P ÅP ÚP íP Q  Q Q &Q 2Q ?Q KQ XQ dQ oQ !|Q "‰Q #–Q $¤Q %¯Q &ºQ 'ÃQ (ÍQ )×Q *áQ +ëQ ,öQ -R . R /R 0$R 1-R 26R 3AR 4MR 5gR 6}R 7•R 8¬R 9µR :¿R ;ÉR <ÓR =ÝR >èR ?óR @þR A S BS CS D&S ER> >V>>CZC C^CCIbI IfIIKjK KnKKMrM UvU ]z^~^ ^‚^^f†f fŠffnŽn n’nnq–q qšqqtžt t¢tt†¦† †ª††® ‘²‘ È&È È*ÈÈù–edCf6g:g g>ggÝNã5H H P"Q&|5|Â| ¤Ú¤ ¤Þ¤¤¬â¬ ¬æ¬¬¶5Ì5ßfß ßjßßš žžDžbŸ@Ÿf£D£b¥D¥b§@§f©D©b­@­f¯D¯be f g h i j k l m n o p q r s t ~ ~ ~~~ 6   :  ¢>¢ ¢B¢¢¤F¤ ¤J¤¤¬N¬ ­R­ ¯V¯ ¶Z¶ !54–7`Œ Œ Œ" ŒŒ’. ’ «^ « «b ««5% % &Æ & &Ê &&*Î * *Ò **,Ö , ,Ú ,,3ê 3 3î 335ò 5 5ö 55\ \ c c c cc‚j ‚ ‚n ‚‚ƒr ‡r ˆ–‚ ²  ¸ž ÙÖ Ù ÙÚ ÙÙíö í ó  2  6  M ‚M l ¾l l Âl l ¡ 2¡ ¡ 6¡ ¡ ® ^® ® b® ® Æ rÆ Ì ŠÌ Ì ŽÌ Ì Î –Î Î šÎ Î ^ d k n y z | } ~  € ‚ ƒ „ † Ô Ô Ô Ô Ô Ø Ø Ø Ø Ø ö dC ~ ‚   †  Š  3 Æ3 3 Ê3 3 W W W W W Y Y Y Y Y [ [ [ "[ [ ] &] ] *] ] ? L q²q q¶qqñôô ôôôù ú b  f  ’~’ ’‚’’•†• •Š••¸Þ¸ ¸â¸¸¼î¼ ¼ò¼¼ÆúÆ ÆþÆÆÚÚ Û5Ü5ø ùNù ùRùù Ž ’à^à àbàà   * &2: ; <r< <v<<y Þ6Þ Þ:ÞÞóJó óNóóø KÊ‚Ú ‚ ‚Þ ‚‚ Z [ lž!º!‚¾!ŠÞ!ŒÞ!Ÿ"¡""¨2"¨ ¨6"¨¨œò"œ œö"œœžú"ž žþ"žž¤#¤ ¤ #¤¤¼z>.$ƒ'ƒ ƒ'ƒƒ˜*'™.'š2'›6'ÁF'ÂJ' ÂN'ÂÂí–'í íš'ííAZ(A A^(AA³)³ ³)³³µ Ó†*Úš*á–åíº*í í¾*ííïÂ*ï ïÆ*ïïõÊ*õ õÎ*õõ÷Ò*÷ ÷Ö*÷÷ùÚ*ù ùÞ*ùùûâ*û ûæ*ûûüê*ü üî*üüþò*þ þö*þþú* þ*+ + + ++ ++ +=&+= =*+==g.+g g2+ggm6+m Ÿ:+Ÿ Ÿ>+ŸŸ0B+0 0F+002J+2 2N+224R+4 4V+446Z+6 6^+668b+8 8f+88Wj+W Wn+WWXr+X Xv+XXYz+Y Y~+YY· ¸ ¹ Ñú+Ñ Ñþ+ÑÑÒ,Ò Ò,ÒÒÓ ,Ó Ó,ÓÓÛ,Û Û,ÛÛá,á á,ááâ",â â&,ââã*,ã ã.,ããä2,ä ä6,ää:, >,6R,6 6V,667Z,7 7^,77Fv,F GzHz,H UŠ,U W X ZŽ,Z Z’,ZZײ,× ×¶,××Ùº,Ù Ù¾,ÙÙJ$j-J$ J$n-J$J$K$ L$ M$r-M$ M$v-M$M$]$Ž-^$’-^$ e$˜‘h$˜‘i$˜‘}$˜‘Õ$.Õ$ Õ$.Õ$Õ$Ö$.Ö$ ã$:.ã$ ã$>.ã$ã$æ$B.æ$ î$F.î$ î$J.î$î$ò$N.ò$ ò$R.ò$ò$/%V./% /%Z./%/%1%^.1% 1%b.1%1%3%f.3% 3%j.3%3%5%n.5% =%r.=% C%v.C% I%z.I% O%~.O% U%‚.U% Y%†.Y% Y%Š.Y%Y%[%Ž.[% [%’.[%[%R&–.R& S&š.S& ò&ž.ò& '¾. ' 'Â. ' ' 'Æ. ' O'â.O' O'æ.O'O'W'ö.X'ú.X' X'þ.X'X'Y'/Y' Y'/Y'Y'Z' /[' /\'/]'/c'/c' c'/c'c'q'2/q' q'6/q'q'Ç'î/Ç' Ç'ò/Ç'Ç'Ñ'ú/Ñ' Ñ'þ/Ñ'Ñ'Ô'0Ô' Ô'0Ô'Ô'Õ' â'0â' \(ò0\( \(ö0\(\(](ú0]( ](þ0](](^(1^( ^(1^(^(_( 1_( _(1_(_(d(1d( d(1d(d((b1( (f1((—(j1—( —(n1—(—(™(`¢š(d¢›(`¢œ(d¢(d¢ž(r1ž( ž(v1ž(ž(¤(~1¤( ¤(‚1¤(¤(¥(†1¥( ¥(Š1¥(¥(¦(Ž1¦( ¦(’1¦(¦(¼( Ç(Â1Ç( Ç(Æ1Ç(Ç(Í(Ê1Í( Î(š*ï(æ1ð(æ1ø(2ø( ø(2ø(ø()2) )"2)) )š*)>2) )B2))).$.)v2.) .)z2.).)3)~23) 4)‚24) <)†2<) <)Š2<)<)*3* *3***"3* *&3****3* *.3***23* *63***:3* *>3***B3* *F3***J3* *N3***R3* *V3***Z3* *^3***b3* *f3***j3* *n3***r3* *v3***z3* *~3***‚3* *†3***Š3* *Ž3**%*š3%* %*ž3%*%*&*¢3&* &*¦3&*&*Â*5+z+ + + + + + + + + + + !+ "+ #+ $+ '+”¬(+Î5(+ (+Ò5(+(+*+Ö5*+ 1+53+5v+26v+ v+66v+v++V6+ +Z6++©+~6±+‚6±+ ±+†6±+±+²+Š6²+ ²+Ž6²+²+³+’6³+ ³+–6³+³+´+š6´+ ´+ž6´+´+µ+¢6µ+ µ+¦6µ+µ+¶+ª6¶+ ¶+®6¶+¶+·+²6·+ ·+¶6·+·+¸+º6¸+ ¸+¾6¸+¸+¹+Â6¹+ ¹+Æ6¹+¹+º+Ê6º+ º+Î6º+º+»+Ò6»+ »+Ö6»+»+¼+Ú6¼+ ¼+Þ6¼+¼+½+â6½+ ½+æ6½+½+¾+ê6¾+ ¾+î6¾+¾+À+ö6Ã+ö6Ó+–ä+Z7ä+ ä+^7ä+ä+,f7, ,j7,,,n7, ,r7,,Ž,¢7Ž, Ž,¦7Ž,Ž,£,¶7£, £,º7£,£,¥,¾7¥, ¦,Â7¦, §,Æ7§, §,Ê7§,§,¨,Î7¨, ©,Ò7©, ª,Ö7ª, «,Ú7«, ¬,Þ7¬, ­,â7­, '-ž8'- '-¢8'-'-3-¦83- 3-ª83-3-;-®8;- ;-²8;-;-e-zj-Ò8j- j-Ö8j-j-p-Ú8p- p-Þ8p-p-q-r-â8r- r-æ8r-r-s-ê8s- s-î8s-s-{-ò8{- {-ö8{-{-}-ú8}- }-þ8}-}--9- -9--- 9- -9--ƒ-9ƒ- ƒ-9ƒ-ƒ-…-†-9†- †-9†-†-‡-"9‡- ‡-&9‡-‡-™-š-*9š- š-.9š-š-œ-69œ- œ-:9œ-œ-->9- -B9--ž-F9ž- ž-J9ž-ž-Ÿ-N9Ÿ- Ÿ-R9Ÿ-Ÿ- -V9 -  -Z9 - -¢-^9¢- ¢-b9¢-¢-£-f9£- £-j9£-£-¨-n9¨- ¨-r9¨-¨-Ê-v9Ê- Ê-z9Ê-Ê-Ñ-~9Ñ- Ñ-‚9Ñ-Ñ-Ó-†9Ó- Ó-Š9Ó-Ó-Û-Ž9Û- Û-’9Û-Û-å-–9å- å-š9å-å-ç-ž9ç- ç-¢9ç-ç-é-¦9é- é-ª9é-é-ë-®9ë- ë-²9ë-ë-í-¶9í- í-º9í-í-ï-¾9ï- a.Â9a. k.Þ9k. k.â9k.k.l.æ9l. n.î9n. x.ò9x. €.ö9€. ˆ.ú9ˆ. ˆ.þ9ˆ.ˆ.Š.:Š. Š.:Š.Š.¦. :¦. ¦.:¦.¦.².:². ².:².².º.:º. º.:º.º.¼.":¼. ¼.&:¼.¼.½.*:½. Ã..:Ã. Ã.2:Ã.Ã.Å.6:Å. Å.::Å.Å.Ç.>:Ç. Ç.B:Ç.Ç.É.F:É. É.J:É.É.Î.N:Î. Î.R:Î.Î.Ï.V:Ï. Ï.Z:Ï.Ï.Ð.^:Ð. Ð.b:Ð.Ð.Ú.f:Ú. Û.j:Û. Û.n:Û.Û.ß.v:ß. ß.z:ß.ß.ã.~:ã.-ê.‚:ê. ë.†:ë. ë.Š:ë.ë.ì.Ž:ì. î.–:î. î.š:î.î.ö.ž:ö. ö.¢:ö.ö.÷.¦:÷. ÷.ª:÷.÷.ù.®:ù. ù.²:ù.ù.û.¶:û. û.º:û.û./¾:/ /Â:/ /Æ: / /Ê: /- /Î: / /Ò:/ /Þ:/ /â:///æ:/ /ê:/ /î://"/ò:"/ "/ö:"/"/8/–b/‚;b/ b/†;b/b/l/Š;l/ l/Ž;l/l/m/’;m/ m/–;m/m/n/š;n/ n/ž;n/n/y/š*z/š*»/><»/ »/B<»/»/Ï/N<Ï/ Ï/R<Ï/Ï/Ð/V<Ð/ ì/n<ì/ ì/r<ì/ì/í/v<í/ í/z<í/í/ñ/~<ñ/ ñ/‚<ñ/ñ/ò/†<ò/ ò/Š<ò/ò/õ/ ö/Ž<ö/ ö/’<ö/ö/ú/–<ú/ ú/š<ú/ú/ü/ž<ü/ ü/¢<ü/ü/ý/¦<ý/ ý/ª<ý/ý/0®<0 0²<00 0M40 80æ<80 G0zI0 z0z0z0z’0z™0’=¨0ª=«0®=¬0®=´0U´05´0º=º0Uº05º0Â=í0ú=í0 ñ0L 1aÑ…¯vLÙ…¯ŽLá…¯ŽLé…¯ŽLñ…¯ŽLù…¯ŽL…¯ŽL …¯G_…¯d_ …¯Œ_1±_´}…¯ŽL¼}…¯Ä_Ä}C±ç_Ì}…¯ŽLÔ}…¯Ä_Ü}C±h`ä}…¯Ä_ì}…¯ŽLô}…¯Ä_ü}C±h`~…¯ŽL ~…¯ŽL~…¯Ä_~C±Ùa$~…¯ŽL,~…¯Ä_4~C±ªbŒœ½æb<~…¯ŽLD~…¯Ä_L~C±ªbŒC±h`T~…¯ŽL\~…¯Ä_d~C±h`l~…¯ŽLt~…¯Ä_|~C±Ùa„~…¯ŽLŒ~…¯Ä_”~C±ªbœ~…¯ŽL¤~…¯Ä_¬~C±ªb´~…¯ŽL¼~…¯Ä_Ä~C±ªbÌ~…¯ŽLÔ~…¯Ä_Ü~C±ªbä~…¯ŽLì~…¯Ä_ô~C±Ùaü~…¯ŽL…¯Ä_ C±Ùa…¯ŽL…¯Ä_$C±ªb,…¯ŽL4…¯Ä_<C±ªbD…¯ŽLL…¯Ä_TC±ç_\…¯ŽLd…¯Ä_lC±h`t…¯ŽL|…¯Ä_„C±ªbŒ…¯ŽL”…¯Ä_œC±Ùa¤¹K‰kAäKŽk¹ùK”kI…¯Œ_QJL¡kYgL­ka…¯Èky°Lßky¼LßkyÈLßkyåLßky÷LêkyMðky*M÷k¬…¯Ä_y>Mêk9…¯ŽL¬UM4liyMel´C±h`išMÁl¼¹KÓli¶M×lÄÁMályËMíl1ïMöly-Nm…¯-m‘…¯Œ_™…¯Am…¯cmÔ…¯ŽL©¥OmÜœ½æb)ëOÞm¹…¯Œ_Á…¯Œ_É…¯ŽLÑ…¯Mn…¯Ÿnä…¯ŽL윽æbÙ…¯Œ_ôÁMálATŽk)/V¨sñ…¯Œ_üÝWt€…¯¹nüäWtüìW(tüóW‰_üX‰_üX‰_ü(X‰_ü5X‰_üHX†_üLXÂsüUXÂsü\XOtüiX×lüzXOtù³XUt¼{œ½æb€ìW(t€X‰_€(X‰_i…¯‰tüZŒ_ù1ZŸtùœ½æb)cá;‡Äh l|ĹK‰k9'^ÓlLœ½æb¼bc”{Ìyc‰kÔäWˆÔ”jÀx ‹mêky“mÓlÜœ½æbä…¯KˆÔÏmˆˆì…¯KˆôUM4lôQ‰kü…¯Kˆ‚…¯Ä_ ‚!Qq‰ ‚UM4l ‚Q‰k‚…¯Kˆ‚…¯˜‰$‚=QŠ$‚!Qq‰$‚UM4l$‚Q‰k,‚…¯Kˆ4‚…¯GŠÔ×m¼ˆ<‚…¯ÇŠ©…¯ŽLL‚¹K‰kT‚h l|\‚…¯Œ_±…¯Œ_d‚…¯yl‚…¯$Œt‚…¯ŽL|‚œ½æbd‚ZOÀxl‚ZOŒ|ÈO×m|M|…¯Œ_„‚zP~ŒŒ‚zP‡Œ”‚-o‰_”‚:oŽ”‚oúœ‚ÁMál”‚BoŽÁ^oFŽ”‚Go‰_É…¯Œ_”‚‹o„”‚™o…Ž”‚Áoüޤ‚Q‰k¤‚UM4l¬‚ÁMál”‚ÔoS´‚¹K‰k”‚£hC”‚ýoV¼‚ÁMálÄ‚…¯Ä_Ä‚UM4lÄ‚Q‰k”‚"c®¼‚²c„{1 p`‘´‚h l|Ì‚¹K‰kÔ‚œ½æbô…¯Ä_Ü‚ÁMálÜ‚cJzÁ3pñ‘ä‚…¯’1œh$’ì‚…¯Ä_ô‚ÁMálô‚cJzü‚…¯’1ˆh¨’ƒUM4lƒQ‰kƒ…¯Ä_ ƒ…¯Ä_ƒ¹K‰kì‚UM4l”‚=p\’,ƒ…¯ˆ“¼‚¶M×l4ƒ…¯Œ_1Ep6”<ƒ…¯¹nDƒQ‰kDƒUM4lLƒ…¯¹n1cẔTƒ…¯ý”1åb •\ƒ…¯4•dƒmp²•dƒ:oŽ”‚…¯TŽdƒupÍ‘lƒ…¯Œ_dƒ{p¼•tƒ…¯Œ_dƒŒpË•|ƒ…¯Œ_dƒ¤pË•„ƒ…¯Ä_”lœ½æb”‚ço²ŽDkœ½æb|kœ½æb”‚pl‘”‚pÄ_”‚÷cy”‚*cŒ_Œƒ…¯y”ƒ…¯Œ_œƒ…¯Œ_¤ƒ…¯y¬ƒbc”{´ƒyc‰k”ƒ3b×l¼ƒ…¯Œ_¼ƒ"cyă…¯Ä_”ƒ"cy”ƒqP¦—ăUM4l̃…¯Œ_ÑGqr˜܃…¯y䃅¯˜샅¯Œ_iMȘÙcqΘiwqÓ˜išq٘٨q`Ù¹q`üƒ¶M×l„îq†_„óqö˜üƒÁMál„rö˜„r‰_„…¯™„!rþ˜„'r‰_„hr„{üƒcJz„ur„{á…¯Œ_é…¯Œ_i‡saaiÜc…™iŽsŠ™ùÆs¨™ùØs×l<œ½æb<C±ç_AtÏ™A¼hÕ™ „…¯ŽLtû™„œ½æbi…¯šŒC±ç_Q‰bŽLQ>tŒ_9wsx™ …¯Œ_„…¯ŽL$„œ½æb…¯Œ_iÃv'›iÈO×l,„…¯ŽLä6C±ªb4„Q‰k4„UM4l<„…¯Ä_!Ûv•v<„Q‰k<„UM4lD„¹K‰k¡…¯¹n ÒvÓlL„ÁMálL„²c„{L„åc‰kT„œ½æbL‚h l|\„œ½æbd„…¯yl„…¯Œ_€zXOtt„Q‰kt„UM4l|„UM4l„„Q‰k„„!Qq‰„„UM4l|„Q‰kŒ„!Qq‰Œ„Q‰kŒ„UM4l€œXßs€Xßs”„h l|œ„…¯˜‰œ„!Qq‰œ„Q‰kœ„UM4l¤„…¯Ä_”„¹K‰k¤„Q‰k¤„UM4l¬„Q‰k´„ÁMál„„…¯˜‰l„nbyi¢{\¡t œ½æbÄ„…¯˜‰iÚ{¡i¢{“¡Ì„…¯Œ_| œ½æbÌ„3b×lÌ„qP¦—Ô„ÁMálÜ„…¯yiS|ž¢ä„rZ%uì„h l|€TZÚtô„…¯ŽLü„œ½æb4„…¯Ä_……¯Ä_ ……¯ŽL…œ½æb……¯ŽL$…œ½æb,……¯ŽL4…œ½æb<…Q‰k<…UM4l´ÈO×m´MùmD……¯ŽLL…œ½æbT…¹K‰k\……¯ŽLd…œ½æbl……¯ŽLt…œ½æb|…CVÎs|…ÈO×m|…Mùm„……¯ŽLŒ…œ½æb”…CVÎs”…ÈO×m”…Mùmœ…qP4l¤…qP‰k¬…GQa³¬…!Qq‰¬…Q‰k¬…UM4l¬…=QЬ…QQf³9Tˆu³´……¯ƒ³Asˆ‰³9|ˆ›³”…ÁMál”…cJz¼…¹K‰k1±ˆº´ù¸ˆµÄ…çˆåµù±ˆ‚¶Ô…²c„{Ô…¬Š‰kÜ……¯ŽLä…œ½æbì……¯ŽLô…œ½æbü……¯ŽL†œ½æb †…¯ŽL†œ½æb†…¯ŽL$†œ½æb,†…¯ŽL4†C±ç_<†…¯TŽD†UM4lD†Q‰kÙT`iíhR¿L†…¯˜‰<†öow|<†pÄ_T†h l|\†¹K‰kd†Q‰kÔ…åc‰kl†²c„{l†åc‰kt†ÁMált†cJz|†…¯Z„†…¯y„†X‘‰kŒ†…¯Ä_”†¹K‰kœ†UM4lœ†!Qq‰¤†…¯Ä_¬†²c„{¬†åc‰k|†UM4l|† ‘œÄ|†=QŠt†²c„{t†åc‰k|†GQa³|†QQf³|†!Qq‰´†¹K‰k)œhïÅù b,Æùœh4ÆĆ…¯Ä_ĆUM4lùþcCÇ̆¹K‰kÔ†UM4lÔ†!Qq‰Ô†QQf³Ô†GQa³Ô†=QŠd†…¯˜‰\†h l|ĆQ‰kT…h l|܆…¯Ä_䆹K‰k…Q‰k솅¯Ä_Ìœ½æb܆UM4l܆Q‰k¤†Q‰kŒ†Q‰k¤†UM4lŒ†UM4lô†¹K‰k섹K‰kô†h l|T†¹K‰k<……¯Ä_ü†¹K‰k‡¹K‰k ‡Q‰k‡…¯Ä_d†UM4ld†!Qq‰‡UM4lÔ…ÁMálùê’ŒÌ$‡C±ç_,‡œ½æb4‡…¯ØÏ4‡¬“Ð)ÁcÐD‡¹K‰k Mn¡…¯Œ_¡w–õÐT‡¹K‰k\‡UM4l©å–¦Ña—¬Ñ\‡!Qq‰\‡Q‰k\‡…¯˜‰l‡œ½æbi…¯dÓt‡…¯ŽL|‡œ½æb„‡…¯ŽLŒ‡œ½æb”‡…¯ŽLœ‡œ½æb¤‡…¯y¤‡Øby¬‡…¯TŽ´‡h l|¼‡h l|ć…¯:–̇…¯è×ćqw|Ô‡¹K‰k܇Q‰k¬‡öow|ùPbåØä‡UM4lä‡Q‰kq$šÙ܇…¯˜‰܇UM4l쇅¯˜‰ô‡h l|ćqæbü‡h l|ˆh l| ˆ…¯:–ˆh l|ˆ…¯:–$ˆ…¯TŽ,ˆ…¯˜‰ ˆqæbˆqæb4ˆ…¯Ä_$ˆöow|<ˆ¹K‰k<ˆh l|$ˆ*cŒ_ ˆ*cŒ_ˆ*cŒ_{›_ƒ›_Dˆ…¯˜‰$ˆpÄ_,ˆUM4l,ˆ!Qq‰,ˆQ‰kLˆ!Qq‰Tˆ!Qq‰‰…¯št\ˆ²c„{dˆX‘‰kdˆØbydˆ…¯ylˆQ‰klˆUM4llˆ!Qq‰tˆQ‰ktˆUM4l1„žêÞ1Mh ß1ÁcXß|ˆ!Qq‰|ˆUM4l|ˆQ‰k„ˆ…¯ZÂ1ïžõx$œ½æbŒˆUM4lŒˆQ‰k”ˆUM4l”ˆQ‰k”ˆ!Qq‰œ½æbœˆ!Qq‰œˆUM4lœˆQ‰kœˆGQa³œˆQQf³œˆ ‘œÄ„ˆQ‰k„ˆUM4l„ˆ!Qq‰„ˆ=QŠ„ˆGQa³„ˆQQf³„ˆ ‘œÄ¤ˆ…¯GЬˆ…¯îá´ˆh l|¼ˆÁMál¼ˆcJz‘æŸä‘øŸÓl‘  ÓlÙ aa¤œ½æb™’ näĈÁMálĈcJz̈…¯Ä_ÔˆÁMál܈…¯ZåäˆQ‰käˆUM4l순½æbôˆ…¯Ä_ôˆUM4lôˆQ‰kÜœ½æbÔˆcJz¡œhPæüˆËhp批K‰k9ᡆ‰ô¡×lùäKœçA¢¢ç©¢×l©'¢×lA…¯ŽLù8¢¨ç±W¢]a¬ˆGQa³¬ˆQQf³¬ˆUM4l¬ˆQ‰k¬ˆ ‘œÄ¬ˆAc¯ç¤ˆUM4l¤ˆQ‰k¬ˆ=QЬˆ!Qq‰¤ˆ=QФˆ!Qq‰ ‰¹K‰k ‰h l|¹åbÊ牅¯Z‰…¯îá$‰.¿™è,‰ZOÀx4‰Ac¯ç<‰Q‰k<‰UM4l4‰UM4l4‰=QŠ4‰Q‰k<‰QQf³<‰!Qq‰4‰ ‘œÄ4‰QQf³4‰!Qq‰<‰ ‘œÄ4‰GQa³<‰=QŠ<‰GQa³̈UM4l̈Q‰kD‰X‘‰k‰h l|L‰…¯ŽLT‰þcw|\‰¹K‰kd‰Q‰kd‰UM4ll‰…¯Ä_l‰Q‰kt‰…¯Ä_|‰…¯îᄉ…¯îጉ.¿™è”‰ZOÀxœ‰Ac¯ç¤‰Q‰kœ‰UM4lœ‰!Qq‰œ‰Q‰k¤‰ ‘œÄ¤‰UM4lœ‰QQf³œ‰ ‘œÄ¤‰Ac¯çt‰Q‰k¤‰=QФ‰GQa³œ‰GQa³t‰UM4lœ‰=QФ‰!Qq‰¤‰QQf³¬‰¹K‰k´‰œ½æb¼‰…¯Œ_ĉUM4lĉQ‰k̉¶M×l䉅¯Ä_쉅¯îáô‰.¿™èü‰ZOÀxŠQ‰kŠ!Qq‰ŠAc¯çä‰Q‰kŠQQf³ŠGQa³Š ‘œÄŠ=QŠä‰UM4lŠUM4l Š…¯îáŠ.¿™èŠZOÀx$ŠQ‰k$Š!Qq‰$ŠAc¯ç,ŠQ‰k$Š ‘œÄ$ŠQQf³$ŠGQa³$Š=QŠ,ŠUM4l$ŠUM4l4Š…¯Ä_<Šœ½æbDŠ…¯yLŠ…¯îáTŠ.¿™è\ŠZOÀxdŠQ‰kdŠ ‘œÄdŠQQf³dŠGQa³dŠ=QŠdŠ!Qq‰dŠAc¯çlŠQ‰kdŠUM4l¹cáÑötйK‰k|Š…¯ZÂ„Šœ½æb‘ £\÷ŒŠ…¯ŽLi“mÓl”œ½æbl…¯Œ_9Zux™y-£ùt…¯Œ_Q£Œ_ŒƒX‘‰kŒƒØbyÁš£¢ù|…¯Œ_”Š…¯Œ_œŠ…¯Ä_”Š"cy)õ£0ú¤Šbc”{¬Šyc‰kœŠUM4lœŠQ‰k”Š*cŒ_„…¯Œ_Œ…¯Œ_”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_´ŠUM4l´…¯Œ_¼…¯Œ_¼ŠQ‰k¼ŠUM4lÄ…¯Œ_¼Š…¯Ä_Ì…¯Œ_ÄŠQ‰kÄŠUM4lÔ…¯Œ_Ü…¯Œ_ÌŠ…¯Ä_ÔŠÁMálÔŠcJz1‡s‚üä…¯Œ_ì…¯Œ_i¤Ól1£hIýô…¯Œ_ü…¯Œ_ìŠQ‰kìŠUM4lôŠ…¯Ä_üŠh l|…¯Œ_ôŠQ‰kôŠUM4ly¤ù‹…¯ŽL ‹œ½æb …¯Œ_…¯Œ_…¯Œ_$…¯Œ_,…¯Œ_4…¯Œ_‹¥5å<…¯Œ_D…¯Œ_$‹ÁMál,‹…¯ŽL4‹œ½æb<‹…¯y<‹ZOÀxD‹…¯ŽLL‹œ½æb\…¯Œ_‘^¥!‘|¥!T‹C±ç_d…¯Œ_Ñ…¯ƒ³l…¯Œ_9¤¥{A…¯¹nÁÆ¥‰t…¯Œ_\‹bc”{d‹yc‰kl‹bc”{t‹yc‰k1cZ|…¯Œ_„…¯Œ_|‹bc”{„‹yc‰kÔˆ¶M×l܉bc”{Œ‹yc‰kŒ…¯Œ_”‹h l|Ñ…¯4œ‹¹K‰k1§cüˆ…¯¸¬‹UM4l¬‹Q‰k´‹cJz1§m¼‹Q‰k¼‹UM4l1{›×Ù4§ Ì‹cJz¤‹h l|Ô‹…¯Ä_Ü‹²c„{ä‹ÁMálì‹ÁMálô‹cÄ_œ‹h l|ü‹ÁMálŒX‘‰kŒØbyô‹…¯myŒ…¯y Œ²c„{üˆÜc?|Œh l|ô‹Ðc?|Œbc”{$Œyc‰k,Œ…c‰k,Œ¹K4l4Œ…¯Ä_4ŒUM4l<Œbc”{DŒyc‰kô‹qPæbì‹cJzTŒ…¯yÜ‹ÁMál\Œ…¯¼ dŒÐc?|dŒqPæblŒ…¯ŽLtŒ²c„{tŒåc‰k|Œœ½æb„Œ…¯˜‰tŒcJztŒÁMálŒŒ…¯?”Œœ½æbœŒUM4lœŒQ‰k¤Œ¹K‰kœŒ!Qq‰¬Œ…¯˜‰¬Œ!Qq‰¬ŒQ‰k¬ŒUM4lÌ‹ÁMálÄŒ…¯:ÌŒ²c„{ÔŒ…¯Œ_ÜŒ…¯g”…¯Œ_œ…¯Œ_äŒQ‰k¤…¯Œ_äŒUM4l¬…¯Œ_ìŒbc”{ôŒyc‰k¤‹¹K‰k´…¯Œ_üŒ…¯Ä_¼…¯Œ_üŒUM4lbc”{ yc‰küŒQ‰kÄ…¯Œ_áÒvÌ…¯Œ_Ô…¯Œ_Ü…¯Œ_bc”{yc‰k$bc”{,yc‰kä…¯Œ_ì…¯Œ_ô…¯Œ_ü…¯Œ_…¯Œ_4bc”{<yc‰k …¯Œ_…¯Œ_…¯Œ_$…¯Œ_”ubc”{Dyc‰k,MM,ÈOU4…¯Œ_ô‹þcw|LŒ¹K‰k<…¯Œ_TŒX‘‰k싲c„{TŒØby䌅¯Ä_LÐiÞL§¨/Lá¥>L'«ÀxL?«ŸêL%¨¹æLË©–êL=¦–êLN«ŸêL§SLV«µïLì¥ILͤ‰_LФYD…¯Œ_Tbc”{\yc‰kdUM4ldQ‰kl…¯˜‰t…¯Ä_|…¯Ä_L…¯¼ L…¯Œ_„bc”{Œyc‰k´Œ…c‰k´Œ¹K4l”…¯Ä_”UM4l¼Œ¹K‰kœ…¯Ä_T…¯Œ_¤Ç¹½¤„¦ï¬Q‰k¬UM4l\…¯Œ_´bc”{¼yc‰kÄUM4lÌUM4lÔbc”{Üyc‰kä…c‰kä¹K4lì…¯Ä_ìUM4lìQ‰kd…¯Œ_dœ½æbôþb&zü…¯Ä_üUM4lüQ‰kl…¯Œ_ÄQ‰klUM4ll!Qq‰lQ‰k©ì«/t…¯Œ_ Ž…¯Ä_ŽcJz|…¯Œ_Ž…¯Ä_$Žbc”{,Žyc‰k4Žbc”{<Žyc‰k„…¯Œ_DŽbc”{LŽyc‰kŒ…¯Œ_TŽçŽ5#”…¯Œ_ŽQ‰kŽUM4l\ŽÐc?|œ…¯Œ_”œ½æbdŽÇ¹½dŽÐiÞdŽ„¦ïdާ¨éŽÁMáltŽ…¯Ä_tŽQ‰ktŽUM4lÔ‹UM4lÔ‹Q‰ké…¯ŽL)ެÖ'ñ…¯ŽL|Ž…¯Ä_„ŽÁMál„ŽcJzŒŽUM4lŒŽQ‰k”Ž…¯)œŽ…¯Z)¤Ž…¯Ä_¬ŽÁMál¬ŽcJz´ŽÁMál´ŽcJz¼Ž…¯yÄŽ…¯îáÜŽÁMálÜŽcJzäŽUM4l­]a쎹K‰kôŽÇ¹½ôŽÚ–´ôŽ›¦@wôŽ<­rïôŽw­*êôŽ~­†_ôŽðX ôŽì¥§ôŽG¦ ôŽñ¥§ôŽÍ¤‰_ôŽÐ¤ üŽÁMálüŽcJzÁMálcJz ÁMálôŽ…¯)¤…¯Œ_¬…¯Œ_lUœ½æb´…¯Œ_ñ…cÁmñ¹KÁm…¯Ä_¼…¯Œ_Q‰kUM4lñ­b,ǹ½ó©x,á©Àx©­ê5¤b»­ƒ,È­‘,LbWj´…Ì­bÏ­˜,Ý­‘,â­bè­b쥛‡ðXgäñ¥ìG¦gäJ¦ìP¦gäS¦ì\¦›‡ͤ‰_Фgä$!Qq‰$UM4l$Q‰k,…¯˜‰,!Qq‰,Q‰k,UM4l4h l|…¯Z)Ä…¯Œ_Äœ½æbÌ…¯Œ_Ìœ½æbÔ…¯Œ_Ôœ½æbÜ…¯Œ_Üœ½æbä…¯Œ_<=QŠ<!Qq‰<UM4l<Q‰kD…¯ŽLLC±ÙaT…¯Ä_\bc”{dyc‰klbc”{tyc‰k1þc¯/|¹K‰k„²c„{„åc‰k4¹K‰k‰[¯†‰g¯$1ù­r*1”…¯h1œ…¯”1ÄŽQ‰kÄŽUM4lÄŽ!Qq‰ÄŽ=QŠÄŽGQa³ÄŽQQf³ÄŽ ‘œÄÄŽAc¯ç¼ŽQ‰k¤…¯ß1¬ÁMálì…¯Œ_TQ‰kTUM4l´£¯Àx´¤°ó2´ì¥ü2´Í¤‰_´Ð¤´…¼bc”{Äyc‰kÌQ‰kÌUM4l´…¯h1Ô¼¯ÀxÔá¥ÀœÔ°°‰_Ôµ°‰_Ô¯´…Ôì¥S3Ôͤ‰_ÔФ´…ÔŽbc”{Üyc‰kÔ…¯”1ä9°æ3äH°ó3äͤ‰_äФ´…ä…¯ß1Y±±4ìbc”{ôyc‰kü¹K‰k œ½æbœ½æbX‘‰k$cJzØby$ÁMál…¯y™²7ô…¯Œ_ü…¯Œ_,bc”{4yc‰k<bc”{Dyc‰kLbc”{Tyc‰k…¯Œ_ …¯Œ_…¯Œ_…¯Œ_QskŒ_$…¯Œ_\…¯ŽLyF²±9,…¯Œ_4…¯Œ_<…¯Œ_…¯:i|´…™iÚ{†i‡´Óld"cylUM4llQ‰ktœ½æb|²c„{|åc‰k„Q‰k„UM4lŒ…¯Ä_”"cy„…¯Ä_|cJz”…¯Œ_dÎdft”Îdftœ…¯GФ…¯ŽL¬¹K‰k´UM4l´Q‰k¼bc”{Äyc‰kÌbc”{Ôyc‰kÜQ‰käbc”{ìyc‰kÜUM4lôUM4lôQ‰küÁMálüMùm‘*cŒ_ ‘h l|‘¹K‰k‘Q‰k$‘Q‰k,‘h l|4‘…¯˜‰,‘¹K‰k<‘h l|d…¯Œ_D‘bc”{L‘yc‰ki·¶ ED…¯Œ_L…¯Œ_T…¯Œ_ù…¯Œ_T‘…¯ºE\…¯Œ_d‘Ÿµ¢Ed‘-·ÒEd…¯Œ_|ÁMál´¶M×ll‘…¯¹nt‘…¯¹n|‘…¯¹n„‘…¯yœ†…¯˜‰l‘"cyÔ†…¯MHt‘"cyŒ‘…¯Ä_„‘Üc?|„‘"c?||‘"cyŒ‘Q‰kŒ‘UM4llMMlÈOU”‘…¯ŽLœ‘œ½æb„…¯Œ_Œ…¯Œ_¤‘5¤btQ‰ktUM4l”…¯Œ_¬‘ÁMál¬‘Mùmœ…¯Œ_´‘…¯Ä_¤…¯Œ_¼‘…¯Ä_¬…¯Œ_¼‘UM4l´…¯Œ_¼‘Q‰k|œ½æb1¶¹èJÄ‘!Qq‰Ä‘UM4lÄ‘Q‰kÌ‘Q‰k1½¹VKÔ‘¹K‰kÜ‘Q‰kÜ‘UM4l´†h l|ä‘×m¼ˆä‘anˆˆì‘UM4lô‘UM4lô‘Q‰kü‘ÁMál’nአ’=n/‹’¹K‰k$’!Qq‰$’UM4l,’²c„{,’åc‰k4’Q‰k<’²c„{<’åc‰kD’¹K‰k윽æbL’UM4l18ºWPT’ÁMálT’cJz¼…¯Œ_\’…¯˜‰Ä…¯Œ_d’Q‰kd’UM4lÌ…¯Œ_Ô…¯Œ_l’Q‰kl’UM4lÜ…¯Œ_ä…¯Œ_ì…¯Œ_ô…¯Œ_ü…¯Œ_üœ½æb…¯Œ_œ½æb …¯Œ_…¯Œ_t’Q‰kt’UM4l…¯Œ_$…¯Œ_,…¯Œ_™ܺ`)óºDT!…¯Œ_Ô…cJz|’²c„{Œ’"cÄ_Œ’þb&z”’…¯Ä_”’Q‰k”’UM4li‡´¸Uœ’åc‰kipUbiÕ¼¸U¤’…¯˜‰¬’œ½æb´’…¯wW¼’…¯µWÄ’Q‰kÄ’UM4lÄ’!Qq‰|œ½æbÄ’…¯˜‰Ì’h l| ¾ÞXÔ’…¯Œ_Œ’…¯Œ_4…¯Œ_ä’…¯Ä_<…¯Œ_l†ÁMáll†cJzD…¯Œ_ì’bc”{ô’yc‰kü’bc”{“yc‰kL…¯Œ_Lœ½æbT…¯Œ_Tœ½æb\…¯Œ_|†Q‰kd…¯Œ_ “Q‰k “UM4lL†Q‰kL†UM4lL†!Qq‰l…¯Œ_t…¯Œ_tœ½æb|…¯Œ_|œ½æb„…¯Œ_„œ½æbŒ…¯Œ_“…¯ŽL\C±h`”…¯Œ_œ…¯Œ_¤…¯Œ_¹ñ¾W]¬…¯Œ_´…¯Œ_¼…¯Œ_œ’ÁMálœ’²c„{Ä…¯Œ_Ì…¯Œ_ì†Q‰kì†UM4lÔ…¯Œ_Ü…¯Œ_“…¯˜‰$“h l|ä…¯Œ_“Q‰k“UM4l“!Qq‰ì…¯Œ_$“¹K‰kô…¯Œ_ü…¯Œ_üœ½æb…¯Œ_œ½æb …¯Œ_ œ½æb,“…¯ŽL…¯Œ_…¯Œ_$…¯Œ_4“bc”{<“yc‰k)pU»cd‡…¯Ä_)qiÅcD“bc”{L“yc‰k,…¯Œ_œ†Q‰k”†h l|„†Øby4…¯Œ_<…¯Œ_D…¯Œ_L…¯Œ_T…¯Œ_Ô†Q‰k\…¯Œ_\œ½æbd…¯Œ_dœ½æbl…¯Œ_lœ½æbT“…¯ŽL\“C±Ùat…¯Œ_d“aZÃhd“ʈÀxl“C±ç_t“aZÃht“ʈÀxt“³½bt“&µKÓ|…¯Œ_|“aZÃh|“ʈÀx|“³½b|“&µKÓt“…¯µW„“…¯#iŒ“&µKÓŒ“-·-i”“…¯Di„…¯Œ_¤“&µKÓ¤“-·-i¤“•¿i¬“Q‰k¬“UM4l¬“!Qq‰¬“…¯˜‰Œ…¯Œ_”…¯Œ_´“œ½æb)Ê¿ÞmœMMœÈOU¤…¯Œ_¬…¯Œ_´…¯Œ_¼…¯Œ_aö¿€kÄ…¯Œ_aü¿ákÌ…¯Œ_Ìœ½æbÔ…¯Œ_Ôœ½æbÜ…¯Œ_Üœ½æbä…¯Œ_䜽æbì…¯Œ_윽æb¼“…¯ŽL\C±ªbô…¯Œ_ü…¯Œ_…¯Œ_ …¯Œ_ œ½æb…¯Œ_œ½æb…¯Œ_œ½æb$…¯Œ_$œ½æbÄ“…¯ŽL\C±Ùa,…¯Œ_4…¯Œ_<…¯Œ_D…¯Œ_Ì“Q‰kÌ“UM4lL…¯Œ_T…¯Œ_܇!Qq‰\…¯Œ_d…¯Œ_œQ‰kœ!Qq‰œ=QŠÔ“Q‰kl…¯Œ_t…¯Œ_œUM4l|…¯Œ_„…¯Œ_Ü“bc”{ä“yc‰k)fÀYsŒ…¯Œ_ì“À`Úì“N™¤ªì“4{bì“™bì“b‰Ðì“Z™¯²ì“VÀxô‡¹K‰kì‡!Qq‰ô“¹K‰kü“Q‰kü“UM4lü“!Qq‰ü“=QŠì‡UM4lì‡Q‰kü“GQa³ü“QQf³4‘Q‰k4‘UM4l4‘!Qq‰<‘¹K‰kT‡h l|”…¯Œ_´ŠQ‰kœ…¯Œ_1ÎdµD‡h l|¬‡pÄ_”…¯ŽL ”œ½æbć qÄ_ć*cŒ_)Érv¤‡X‘‰k1À v¤…¯Œ_¬…¯Œ_”Q‰k”UM4l´…¯Œ_¼…¯Œ_Ä…¯Œ_Ì…¯Œ_”Q‰k”UM4l4ˆQ‰k4ˆUM4l$”œ½æb,”…¯ŽL4”œ½æbD„h l|<’¬Š‰k<”²c„{<”åc‰kD”qP4lT”²c„{T”ÁMálT”„Á„{\”ÁMáld”…¯˜‰l”h l|l”¹K‰kd”!Qq‰d”Q‰kt”ÁMál|”…¯GŠ„”h l||”Q‰k|”!Qq‰|”UM4l|”=QŠ„”¹K‰kŒ”…¯Ä_””¹K‰kŒ”UM4lŒ”Q‰kt”¶M×ld”UM4lœ”¹K‰k¤”…¯ŽL¬”X‘‰k´”¹K‰k¼”œ½æbÌ”…¯yÔ”…¯–Ü”h l|ä”ZOÀx)„ž¡‚)ªhÊ‚ô”C±ç_1ªhIýÜ”¹K‰k1ÈOõ„ ÈO×lü”…¯Ä_•…¯Ä_ •ÈO×m1qà†•¹K‰k•¹K‰k$•bc”{,•yc‰k)Ep~‰<•²c„{D•bc”{L•yc‰kT•UM4lÌ‘UM4l4’UM4l¹1ÅŒt”²c„{\•…¯˜‰\•Q‰k\•!Qq‰\•UM4ld•¶M×lÔ…¯Œ_Ü…¯Œ_ä…¯Œ_ì…¯Œ_ô…¯Œ_ü…¯Œ_…¯Œ_l•bc”{t•yc‰k …¯Œ_|•…¯Ä_„•…¯y„•ZOÀxŒ•…¯ŽL”•œ½æb„•ÈO×m„•MŸ’…¯Œ_œ•ô’œ•ÆÂ’„•ˆÆ’¤•–…?|¬•Ðc?|¬•cÄ_$…¯Œ_´•Q‰k´•UM4l,…¯Œ_¼•Q‰k¼•UM4l4…¯Œ_<…¯Œ_Ä•MMÄ•ÈOUD–…?|Ì•ZOÀxÔ•MMÔ•ÈOUL–…?|T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_„…¯Œ_Œ…¯Œ_”…¯Œ_Ü•Q‰kœ…¯Œ_¤…¯Œ_¬…¯Œ_´”h l|¬”Øby|œ½æb¬”…¯y¼…h l|´…¯Œ_¼…¯Œ_ì•Q‰kì•UM4lÄ…¯Œ_¬……¯MHÄ…ÞÇ —ô•bc”{ü•yc‰k–…¯Ä_)[ÈïÅ –…¯y–…¯:™–¹K‰k ‡…¯Ä_‡h l|$–¹K‰k,–Q‰k4–¶M×l œ½æb<–œ½æbD–C±ç_L–C±ç_T–ÁMálT–cJz\–œ½æbd–œ½æb–h l|4–²c„{4–åc‰kl–h l|¬‘²c„{¬‘åc‰kl–¹K‰kt–²c„{t–åc‰k œ½æb|–…¯˜‰|–Q‰k|–UM4l„–ÖɾŸ|–!Qq‰„–äÉÒŸ„–òÉæŸ„–ÊúŸ„–Ê „–†O×lŒ–²c„{Œ–åc‰kÌ…¯Œ_”–œ½æb–UM4lä†h l|–Q‰kÔ…¯Œ_Ü…¯Œ_œ–œ½æbä…¯Œ_¤–sbÀxì…¯Œ_¬–W‰_¬–.…‰_¬–·Šóª¬–sb¬†ô…¯Œ_,–UM4lü…¯Œ_,–…¯Ä_ …¯Œ_ …¯Œ_ …¯Œ_ …¯Œ_´–h l|$ …¯Œ_¼–œ½æbÄ–¹K‰k)ü¿%©ÁmÍ;©Ì–ÁMál, …¯Œ_4 …¯Œ_< …¯Œ_Ü–²c„{Ô–bc”{ä–yc‰kì–bc”{ô–yc‰kü–bc”{—yc‰k —bc”{—yc‰kD …¯Œ_L …¯Œ_T …¯Œ_—Q‰k—UM4l—!Qq‰\ …¯Œ_){›j±)­r±d …¯Œ_,—bc”{4—yc‰kl …¯Œ_<—¹K‰kD—bc”{L—yc‰kT—bc”{\—yc‰kd—bc”{l—yc‰kt …¯Œ_Ì–²c„{Ì–åc‰k| …¯Œ_t—…¯Ä_|—h l||—¹K‰kt—UM4l´Ž²c„{´Žåc‰kt—Q‰k„—œ½æbŒ—ÁMálŒ—cJz”—…¯˜‰œ—h l|¤—…¯Ä_¬—h l|´—…¯Ä_¼—¹K‰kÄ—Q‰kÄ—!Qq‰Ä—=QŠÄ—UM4l¬‘cJz´—Q‰k„ …¯Œ_Œ …¯Œ_” …¯Œ_œ …¯Œ_¤ …¯Œ_¬ …¯Œ_´ …¯Œ_Ì—œ½æbÔ—Q‰kÔ—UM4lÜ—¹K‰kœ—¹K‰k”—Q‰k”—!Qq‰”—UM4lì—h l|ü—…¯UŘ…¯Œ_ ˜Q‰k˜X‘‰kAþcXƘ"czƘØbyAЭÆä6C±h`$˜…¯˜‰,˜…¯Ä_4˜¹K‰k<˜…¯Ä_<˜UM4l<˜Q‰kD˜…¯Ä_D˜UM4lD˜Q‰kL˜ÁMálL˜cJzT˜ÁMálÔ œ½æbT˜cJzl˜…¯Ä_,˜Q‰k,˜UM4lù±ÑKÌApU͘…¯y|˜¶M×lŒ˜Q‰kŒ˜UM4lŒ˜!Qq‰¼ …¯Œ_”˜aZoΜ˜œ½æbÄ …¯Œ_Ì …¯Œ_Ô …¯Œ_Ü …¯Œ_¤˜Q‰k¤˜UM4l¤˜!Qq‰ä …¯Œ_ì …¯Œ_ì œ½æbô …¯Œ_ü …¯Œ_¬˜bc”{´˜yc‰k¼˜bc”{Ęyc‰k̘bc”{Ô˜yc‰kܘ¹K‰k …¯Œ_l˜UM4l …¯Œ_䘜½æb …¯Œ_l˜Q‰k …¯Œ_$ …¯Œ_, …¯Œ_4 …¯Œ_Œ˜…¯˜‰< …¯Œ_D …¯Œ_옅¯ÉÔô˜…¯Ä_ü˜…¯^™²c„{™åc‰k ™œ½æb™¬Š‰k™bc”{$™yc‰k,™Q‰k4™…¯Œ_<™C±ç_D™²c„{L™…¯L×T™…¯Ó×\™…¯Ó×d™…¯÷׌–cJzl™…¯ÊØt™œ½æb|™8ËšÙ„™¹K‰k4–ÁMál4–cJzÄ–h l|Œ™…¯Ó×”™…¯Óל™œ½æb¤™…¯&Û¬™œ½æb|™ª¿ÇÛ´™…¯Ó×¼™…¯äÜÄ™…¯îÝÌ™…¯EßÔ™…¯Ó×Ü™…¯Ó×ä™…¯òßì™…¯]à™ÁMál™cJzô™…¯¦à|™ŸÓèàü™…¯þàš…¯Ä_ šœ½æbš…¯Óך…¯}â$š…¯ÊØ|™ôÓã,š…¯Ó×,š™Ò’ã,šW‰_,š.…‰_,š·Šóª,š9ÉÌ4š…¯£ã<š…¯ŽLDšœ½æb´ œ½æbœ œ½æbL œ½æbD œ½æbL …¯Œ_Lš ¬CzLšË\éTšœ½æbT …¯Œ_\š·ŠóªdšQ‰kdšUM4llšh l|\ …¯Œ_ÁµÕþéd …¯Œ_tšW‰_tš.…‰_tš·Šóªtšsb¬†tšËCz|š…¯ê„šW‰_„š.…‰_„š·Šóª„š¹Õꌚ…¯¤êl …¯Œ_œšW‰_œš.…‰_œš·Šóªœš¹ÕꜚÀÕìꤚœ½æbt …¯Œ_¬š™Ò’㬚W‰_¬š.…‰_¬š·Šóª¬š9ÉÌ| …¯Œ_´š™Ò’ã´šW‰_´š.…‰_´š·Šóª´š9ÉÌ„ …¯Œ_¼š™Ò’㼚W‰_¼š.…‰_¼š·Šóª¼š9É̼š•q˜ Œ …¯Œ_ÄšÇÕËëÄš•q˜ Ìšœ½æb” …¯Œ_ÔšÚÕ:ìÔš•q˜ Üšœ½æbœ …¯Œ_䚙ҒãäšW‰_äš.…‰_äš·Šóªäš9ÉÌäš•q˜ äšÚÕ:ìäšÇÕËëäšËǪ·äšîÕÎ켚…¯ÊØìšœ½æbd œ½æbÄš…¯¦àÔš…¯^ìôš™Ò’ãôšW‰_ôš.…‰_ôš·Šóªôš9ÉÌôš•q˜ ôšÚÕ:ìôšÇÕËëüšœ½æbäš…¯í›´¿üè ›™Ò’ã ›W‰_ ›.…‰_ ›·Šóª ›9ÉÌ ›•q˜ ¤ …¯Œ_›™Ò’ã›W‰_›.…‰_›·Šóª›9ÉÌ›™Ò’ã›W‰_›.…‰_›·Šóª›9É̬ …¯Œ_$›É^ï,›É^ï´ …¯Œ_4›™Ò’ã4›·Šóª4›ÙÍóª4›•q˜ 4›É^ï4›ôÕZ°4›ûÕ¬†›8ËšÙ¼ …¯Œ_<›™Ò’ã<›·Šóª<›•q˜ <›ûÕ¬†<›æÒ‡ÙÄ …¯Œ_D›™Ò’ãD›·ŠóªD›•q˜ D›ôÕZ°D›ûÕ¬†L›¹K‰kT›Q‰kT›UM4l<›…¯&ð\›™Ò’ã\›·Šóª\›•q˜ \›Ö¬†\›È$˜d›™Ò’ãd›·Šóªd›•q˜ d›Ö¬†d›È$˜\›…¯/ñÌ …¯Œ_l›Q‰kÔ …¯Œ_t›™Ò’ãt›·Šóªt›Öˆš|›Q‰k|›UM4l|›!Qq‰„›™Ò’ã„›·Šóª„›ÙÍ󪄛•q˜ „›É^ï„›ïÒƒ™„›ôÕZ°„›ØÒ‰_„›t$˜Œ›™Ò’㌛·ŠóªŒ›•q˜ Œ›ïÒƒ™Œ›ØÒ‰_Œ›æÒ‡Ù”›™Ò’ã”›·Šóª”›•q˜ ”›ïÒƒ™”›ôÕZ°”›ØÒ‰_Œ›…¯tòœ›™Ò’㜛·Šóªœ›ÙÍ󪜛•q˜ œ›É^ÖÝòœ›ïÒƒ™œ›ôÕZ°œ›Öˆšœ›tƒ™¤›¹K‰k¬›GQa³„›…¯ò”›…¯¦òÜ …¯Œ_´›™Ò’ã´›·Šóª´›ÙÍóª´›•q˜ ´›É^ï´›ÖÝò´›ïÒƒ™¼›Q‰k|›…¯˜‰t›…¯Ÿñœ›…¯óÄ›™Ò’ãÄ›·ŠóªÄ›ÙÍóªÄ›•q˜ Ä›É^ïÄ›ÖÝòÄ›÷ÑƳÄ›ïÒiõ´›…¯\ôÔ›™Ò’ãÔ›·ŠóªÔ›ÙÍóªÔ›•q˜ Ô›É^ïÔ›ÖÝòÔ›÷ÑƳÔ›ïÒiõÜ›¹K‰kl›UM4ld›…¯/ñÄ›…¯’õä›™Ò’ãä›·Šóªä›ÙÍóª䛕q˜ ä›É^ïä›ÖÝòä›÷ÑƳä›ïÒiõ¬›=QЬ›UM4l4›…¯ÊïD›…¯^ðÔ›…¯’õä …¯Œ_웙Ғ㛟Óèàì …¯Œ_ô›ÇÕËëô›•q˜ ô›É^ïô›âLþ¶ô›#ÖB±ô›Pαô›*ÖÆ÷ô›=¦Æ÷ô›È$˜ô›6Ö$˜ô›A±w®ô›á¥Þ÷ô›>Ö±ô›±w®ô›ì¥~®ô›ñ¥å÷ô›J¦~®ô›Í¤‰_ô›Ð¤ñ÷ô …¯Œ_ü›¹K‰kœQ‰k$—bc”{ œyc‰kô›…¯øü …¯Œ_œ™Ò’ãœW‰_œ.…‰_œ·Šóªœ9ÉÌœ•q˜ œ™Ò’ãœW‰_œ.…‰_œ·Šóªœ9ÉÌœ•q˜ $œ™Ò’ã$œW‰_$œ.…‰_$œ·Šóª$œ9ÉÌ$œ•q˜ $œÉ^ï$œEÖ²$œåÍ$˜$œÍ¤‰_$œÐ¤ñ÷œ…¯ÊØ$œ…¯Ôù4œÇÕËë4œ•q˜ <œÇÕËë<œ•q˜ <œÉ^ï<œåÍ$˜<œXÖ±<œðXñ÷<œì¥aú<œÍ¤‰_<œÐ¤ñ÷4œ…¯¦à,œbc”{Dœyc‰k<œ…¯…úLœ™Ò’ãLœW‰_Lœ.…‰_Lœ·ŠóªLœ9ÉÌLœ•q˜ Tœ™Ò’ãTœW‰_Tœ.…‰_Tœ·ŠóªTœ9ÉÌTœ•q˜ TœÉ^ïTœEÖ²TœåÍ$˜TœÍ¤‰_TœÐ¤ñ÷Lœ…¯ÊØTœ…¯Ôù\œÉ^ï\œgÖƒ™\œrÖ$˜\œåÍ$˜\œ=¦ƒ™\œsb$˜\œÍ¤‰_\œÐ¤ñ÷\œ…¯]ûdœÉ^ïlœÉ^ïlœ{Ö<³lœåÍ$˜lœÍ¤‰_lœÐ¤ñ÷dœ…¯wïlœ…¯·ûtœÉ^ï|œÉ^ï|œ{Ö<³|œrÖ$˜|œåÍ$˜|œðXñ÷|œì¥aú|œÍ¤‰_|œÐ¤ñ÷tœ…¯wï|œ…¯ü„œ™Ò’ㄜW‰_„œ.…‰_„œ·Šóª„œ9ÉÌ„œ•q˜ „œÈ$˜„œÉ†ü„œÇÕË넜ÙÍ󪄜îÕ¢üŒœœ½æb”œÁMál”œcJzœœœ½æb$›…¯wï,›…¯wïä›…¯’õì›…¯®÷)§·ýœ…¯ÊØ …¯Œ_¤œ™Ò’㤜W‰_¤œ.…‰_¤œ·Šóª¤œ9ÉÌ …¯Œ_¬œ™Ò’㬜W‰_¬œ.…‰_¬œ·Šóª¬œ9É̬œ•q˜ ¬œ‡Öµµ¬œŒÖµµ´œ…¯Œ_¼œ…¯Œ_ …¯Œ_Äœ™Ò’ãÄœW‰_Äœ.…‰_Äœ·ŠóªÄœ9ÉÌÄœ•q˜ ÄœlӇĜ‘Ö¡ÌœQ‰kÌœUM4lÔœ²c„{Ôœåc‰k¬œ…¯Idš…¯Ä_Üœh l|äœC±ç_ …¯Œ_$ …¯Œ_윙Ò’ãìœW‰_ìœ.…‰_윷Šóªìœ9ÉÌ윕q˜ ìœlÓ‡윑Ö¡Äœ…¯äÜ)§Ö')MhV, …¯Œ_ôœ™Ò’ãôœ¯Ïþ¶ôœUj¬†›ÏÏÂèüœ™Ò’ãüœ¾ÖßÝüœÏÖìüœ¯ÖÛ¨šQ‰kšUM4l›IË6é™Ò’ãW‰_.…‰_·Šóª9ÉÌßÖÔ¨¯ÖÛ¨¾ÖßÝ•q˜ =¦æ¨ÏÖìïÖÛ¨lÓ‡VνÈÿÖÄÈhÎɯÏþ¶Uj¬†ðXñ÷ì¥aúͤ‰_Фñ÷ôœ…¯Éüœ…¯û$ œ½æb …¯Œ_…¯îݙҒãW‰_.…‰_·Šóª9É̙ҒãW‰_.…‰_·Šóª9ÉÌ4 …¯Œ_$W‰_$.…‰_$·Šóª$Ujµµ,™Ò’ã,lÓ‡,Ɇü,•q˜ ,¯Ïþ¶,åÍ$˜,슬† œ½æb›ßÏÕè4™Ò’ã4Ɇü4•q˜ 4¯Ïþ¶4åÍ$˜4슬†<ÇÕËë<•q˜ D™Ò’ãDW‰_D.…‰_D·ŠóªD9ÉÌD•q˜ DsbÛ¨L…¯Œ_T™Ò’ãTW‰_T.…‰_T·ŠóªT9ÉÌ\Ɇü\•q˜ < …¯Œ_D …¯Œ_dW‰_d.…‰_d·ŠóªdɆüd•q˜ \…¯ôl™Ò’ãlW‰_l.…‰_l·Šóªl•q˜ lɆüd…¯]›OÕéL …¯Œ_t™Ò’ãtW‰_t.…‰_t·Šóªt9ÉÌt•q˜ T …¯Œ_|™Ò’ã|W‰_|.…‰_|·Šóª|9ÉÌ\ …¯Œ_„,×9Œ–ÁMálŒœ½æbÄ„!Qq‰”bc”{œyc‰k¤Q‰k¬…¯Ä_Ô„cJz¬„…¯¸´…¯GŠ´Q‰k´!Qq‰´UM4l´=QЬ„!Qq‰¬„UM4l¬„GQa³¬„=QŠt„…¯Ä_Ü„X‘‰kÔ„Mùmd …¯Œ_Œ„…¯˜‰ Sãx l„3b×ll„=b‰k|„…¯Ä_Ä„UM4lÄ„Q‰k슅¯Ä_ĹK‰kÌQ‰kÌUM4lÔ¹K‰kÜC±h`äh l|D‰Øbyl …¯Œ_t …¯Œ_Ì„"cy| …¯Œ_iÛå¸Uü”UM4lü”Q‰kìðå€ ôýåyü3æyž¹K‰k žræ' žýåy žðå€ lœ½æbžh l|žh l|ž¹K‰k$ž…¯P,ž…¯y4ž…¯¡<ž…¯ŽLDžœ½æb,žZOÀx4žZONvŒ ÈO×mŒ M…Œ …¯Œ_LžzPíTžzPö\ž…¯ŽLdžœ½æblž…¯ŽLtžœ½æbA†é×lüé„ü»é¹|žZONv„žZOÀxŒž…¯y”ž…¯ŒžX‘‰kœž…¯Œ_¤ž…¯mœžÒé‚” …¯Œ_œ …¯Œ_¬žaZø¬žêL œ½æb´žh l|¼žØbyÄžaZøÄž ê*¼lêH¼l êVÌž2ên¤ …¯Œ_Ôž&µÓÔžLæzÔž[¼f ÔžAêÓ¬ …¯Œ_Üž&µÓÜžLæzÜž[¼f ÜžAêÓüGêìÔž…¯Pañ¾ûäžÝê yäžë‰_1Šëõxìž…¯GŠôžöow|ôžpÄ_tˆ…¯Ä_üž¹K‰kŸ…¯GŠ Ÿ…¯Œ_Ÿèë‰_ùéZ0Ÿ.pŸìë‰_Ÿë‰_\C±ç_Q…¯Z­´ž¹K‰kŸ…¯ŽL$Ÿœ½æb,Ÿ…¯ŽLìC±h`Ô …¯Œ_Ô œ½æbÜ …¯Œ_Ü œ½æbä …¯Œ_4ŸQ‰k4ŸUM4lìžQ‰kìžUM4lìž!Qq‰ìž=QŠì …¯Œ_<Ÿ…¯Œ_<Ÿ"cyô …¯Œ_DŸ…¯Œ_Ÿ=QŠŸQ‰kŸ!Qq‰ŸUM4lLŸÁMálLŸcJzäž"cy\Ÿ¶M×ldŸ…¯˜‰lŸ¶M×ltŸÁMáltŸcJz|ŸÁMálDŸ]ðj#„Ÿ¹K‰kŒŸÁMálŒŸ²c„{”ŸC±ç_œŸ¹K‰k¤Ÿ¹K‰k¬ŸUM4l¬ŸQ‰kü“…¯MHô“h l|´Ÿ¹K‰k¼ŸQ‰kœˆ=QŠœˆ…¯ZÂÄŸ…¯˜‰ œ½æbÌŸþcw|ÔŸ¹K‰kÜŸ¹K‰käŸQ‰kÔ“UM4lÔ“!Qq‰Ô“…¯˜‰ôŸÁMálüŸbc”{ yc‰k䇅¯Ä_„Ÿh l|  …¯GŠ bc”{ yc‰k$ ÁMál, >ò)1zòåØ$‘UM4l‘UM4l$‘!Qq‰4 Q‰k4 UM4lü …¯Œ_ …¯Œ_ …¯Œ_ …¯Œ_ …¯Œ_< bc”{D yc‰kL …¯˜‰$ …¯Œ_ÄŸQ‰kÄŸUM4lÄŸ!Qq‰, …¯Œ_4 …¯Œ_L Q‰kL UM4lL !Qq‰< …¯Œ_D …¯Œ_  Q‰k  UM4l  !Qq‰  =QŠL …¯Œ_T …¯Œ_\ …¯Œ_d …¯Œ_l …¯Œ_t …¯Œ_| …¯Œ_„ …¯Œ_T bc”{\ yc‰kd bc”{l yc‰kŒ …¯Œ_t ²òb| Q‰k| UM4l| !Qq‰” …¯Œ_„ …¯ŽLœ …¯Œ_¤ …¯Œ_쟹K‰kDŸóy¬ …¯Œ_Œ h l|´ …¯Œ_¼ …¯Œ_´ œ½æbÄ …¯Œ_$‘…¯˜‰” C±ç_œ …¯‘01\ó²0ùªh¸1¤ …¯Œ_ô œ½æb¬ h l|´ ²c„{´ åc‰k¬ ¹K‰kÜ œ½æb¼ …¯ŽLÄ C±ç_Ì h l|Ô …¯ŽLÜ C±ç_A—ôVÐT œ½æb\ œ½æbä …¯)5ì ¹K‰kô Ðc?|ô cÄ_ü C±ç_¡…¯8AöVÐ ¡…¯Õ8¡…¯9Ì ¹K‰kô …¯Œ_¡…¯{:ÌŸ"czÆ$¡ZO`;,¡ZOÀx4¡…¯Œ_<¡ÁMálD¡¹K‰kL¡UM4lL¡Q‰kT¡…¯Ä_\¡h l|d¡…¯Œ_l¡…¯@>t¡…¯ŽL|¡…¯?4”C±h`„¡…¯ŽLŒ¡…¯¯?”¡…¯Ð?œ¡…¯ŽL¤¡œ½æb¬¡…¯ŽLä œ½æb´¡…¯ŽLü œ½æbÜ …¯Œ_ä …¯Œ_ì …¯Œ_ì œ½æbô …¯Œ_ü …¯Œ_¼¡…¯ŽL œ½æb …¯Œ_ …¯Œ_Ä¡…¯ŽLÌ¡œ½æb …¯Œ_Ô¡¡æ„I …¯Œ_Ü¡UM4l$ …¯Œ_Ü¡…¯Ä_, …¯Œ_ä¡þcw|ä¡"czÆ졹K‰kô¡…¯ŽL´ œ½æbü¡…¯ŽLD …¯Œ_¢…¯ŽL ¢œ½æbTœ½æbL¡…¯˜‰D¡h l|¢…¯ŽL¢C±ç_L …¯Œ_T …¯Œ_\ …¯Œ_d …¯Œ_d œ½æbl …¯Œ_l œ½æbÙéZ`OAœh O$¢"czÆ,¢¹K‰kt …¯Œ_4¢…¯Ä_| …¯Œ_„ …¯Œ_Œ …¯Œ_<¢Q‰k<¢UM4l” …¯Œ_4¢Q‰k4¢UM4lD¢…¯ŽLü œ½æbL¢…¯ŽLT¢œ½æb\¢…¯ŽLd¢…¯ŽLl¢C±h`œ …¯Œ_œ œ½æb¤ …¯Œ_¤ œ½æb¬ …¯Œ_¬ œ½æb´ …¯Œ_¼ …¯Œ_¼ œ½æbÄ …¯Œ_Ä œ½æbt¢…¯ŽL|¢œ½æb„¢…¯Œ_Ì …¯Œ_Aåb3ZÔ …¯Œ_¡­rlZÜ¡Q‰kÜ …¯Œ_ä …¯Œ_ì …¯Œ_ô …¯Œ_ü …¯Œ_…¯Œ_œ½æb …¯Œ_ œ½æb…¯Œ_Œ¢ÏôB[”¢Q‰k”¢UM4lœ¢œ½æb…¯Œ_$…¯Œ_,…¯Œ_4…¯Œ_<…¯Œ_dŸQ‰kdŸUM4ldŸ!Qq‰A¸ˆÝ[D…¯Œ_L…¯Œ_T…¯Œ_lQC±ç_\…¯Œ_¤¢Âó,¤¢èõ—\¤¢Fó0¤¢ÆcÀx¤¢vb¤¢0¤¢â±%¤¢Z<8¤¢ ö0¤¢‰‰_¬¢h l|¬¢¹K‰k´¢C±ç_d…¯Œ_L œ½æblQœ½æb¼¢>ò)l…¯Œ_Ä¢Âó,Ä¢èõ—\Ä¢Fó0Ä¢vbÄ¢0Ä¢â±%Ä¢Z]8Ä¢‰‰_Ì¢Âó,Ì¢èõ—\Ì¢Fó0Ì¢vbÌ¢0Ì¢â±%Ì¢Ze8Ì¢‰‰_Ô¢œ½æbÜ¢œ½æbt…¯Œ_䢜½æbì¢Âó,ì¢èõ—\좂õW:|…¯Œ_„…¯Œ_Œ…¯Œ_”…¯Œ_<¡²c„{<¡åc‰kœŸh l|œ…¯Œ_¤…¯Œ_ô¢½„Czô¢÷‡^ü¢C±ç_¬…¯Œ_¬œ½æb´…¯Œ_´œ½æb¼…¯Œ_£Ì«#_¼œ½æb £È0£È0£ÁMál£cJz$£…¯à_,£…¯¯?4£…¯A`<£…¯¯?D£…¯ß`L£…¯Ð?T£…¯8a\£…¯¯?d£…¯Œ_Ô…¯Œ_l£ˆ©at£œ½æb|£È0Ü…¯Œ_„£ˆÖaŒ£C±ç_”£È0ä…¯Œ_œ£ˆ1b¬£œ½æb´£È0ì…¯Œ_¼£ˆ~bÄ£œ½æbÌ£È0ô…¯Œ_Ô£…¯à_Ü£…¯Ð?䣅¯úb죅¯¯?ô£ˆ©aü£È0ü…¯Œ_¤ˆ]c ¤œ½æb¤È0ä6C±ç_Aj™qSÔcqeÚc{û™qŒàc…¯Œ_œ½æb …¯Œ_«š€i…¯Œ_äž…¯Œ_)¦dôž…¯TŽ…¯Œ_œ½æb…¯Œ_œ½æb$…¯Œ_$œ½æb,…¯Œ_,œ½æb4…¯Œ_4œ½æbL„cJz$¤h l|L„¶M×l<…¯Œ_D…¯Œ_,¤xÀx4¤œ½æbiT•g‘Zœg<¤…¯Ä_<¤Q‰k<¤UM4lD¤…¯ŽLL¤œ½æbT¤…¯ŽLdœ½æb\¤…¯ŽLtœ½æbd¤…¯ŽLl¤œ½æbt¤ÁMált¤cJz|¤h l|„œ½æb„¤bc”{Œ¤yc‰k”¤ÁMál”¤cJz¤¤ÁMál¤¤cJz9ó ]ay…¯Œ_…¯Œ_‰…¯Œ_Q…¯Œ_‘…¯Œ_™…¯Œ_¡…¯Œ_©…¯Œ_±…¯Œ_I…¯Œ_¹…¯Œ_Á…¯Œ_É…¯Œ_Ñ…¯Œ_Ù…¯Œ_á…¯Œ_…¯Œ_q] ×l¬¤X‘‰k´¤X‘‰k¼¤¹K‰kĤQ‰kĤUM4l̤…¯ŽLÔ¤C±h`ܤ…¯ŽLĤ…¯Ä_¼¤h l|¬¤Øby´¤Øby䤹K‰k줹K‰kô¤…¯˜‰ü¤Q‰kü¤UM4lô¤Q‰k¥Q‰k¥UM4ld‰…¯˜‰¥h l|9 ´o9% ´o¥…¯Ä_$¥h l|$¥¹K‰k¥Q‰k99 ÔoL…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_ìŽh l|‰w Tpl…¯Œ_t…¯Œ_|…¯Œ_Áƒ ¶p„…¯Œ_Œ…¯Œ_”…¯Œ_œ…¯Œ_œœ½æb¤…¯Œ_¤œ½æb¬…¯Œ_¬œ½æb´…¯Œ_´œ½æb¼…¯Œ_¼œ½æbÄ…¯Œ_Ì…¯Œ_,¥Q‰k,¥!Qq‰,¥UM4l4¥…¯Ä_4¥UM4l4¥Q‰k<¥…¯Ä_D¥…¯Ä_Ô…¯Œ_ô¤UM4lô¤!Qq‰¬¤…¯y´¤…¯y9üùl…¯Ä_L¥ÁMálT¥…¯ŽL\¥²c„{\¥åc‰kd¥Ï‰kl¥Ï‰kt¥þ]Šwt¥^tw¡Pbe}|¥Ï‰k„¥Ï‰kŒ¥¹K‰k”¥Ï‰kt†¶M×lœ¥UM4lœ¥Q‰kœ¥!Qq‰¤¥Ï‰k¬¥Ï‰kŒC±ªb$Bœ½æbœ¥…¯˜‰lWœ½æb´¥Ï‰kŒC±Ùa¼¥UM4lt¥Þ]|w4>œ½æb\>œ½æb¬>œ½æbÄ¥²c„{Ä¥åc‰kÄ¥„Á„{Ä¥¬Š‰kÄ¥ÁMálÄ¥cJzÌ¥¹K‰kÔ¥…¯ŽLä6C±ÙaÜ¥…¯ŽLÙblišMB…䥅¯ŽL쥅¯ŽLô¥…¯ŽLü¥…¯ŽL!1Å!ˆù…¯(ˆ䎅¯Ä_¦¹K‰k ¦…¯Ä_¦Q‰k¦UM4l¦…¯˜‰¦!Qq‰$¦…¯Ä_,¦²c„{,¦åc‰k|˜²c„{|˜åc‰k)ªh4¦²c„{t–ÁMál<¦²c„{D¦¶M×lL¦¹K‰kT¦¶M×l\¦ÁMáld¦ÈZœxl¦…¯Ä_\‰h l|t¦¹K‰kt¦h l||¦anˆˆ|¦=n/‹„¦h l|”¦œPÓ?”¦¢PÀxœ¦Q‰kœ¦UM4l¤¦…¯Ä_¬¦…¯Ä_´¦…¯º–¼¦C±ç_Ħ…¯ø–̦…¯ì—Ô¦…¯ì—ܦ…¯ì—䦅¯Œ_즅¯Œ_ô¦…¯Œ_ü¦ÁMál§pU‚ §pU§UM4l§Q‰k§!Qq‰$§²c„{$§åc‰k,§…¯˜‰4§…¯Ä_<§UM4l<§Q‰k§åb-|4 …¯Ä_|ˆ…¯GŠ9ö j™ùÁc: t¤²c„{D§…¯yL§…¯ç ¡pUX¡t¤åc‰k|œ½æbLœ½æb1d"£T§œ½æb\§œ½æbd§œ½æbüÈO×mÜ…¯Œ_ä…¯Œ_ì…¯Œ_ô…¯Œ_t§…¯¸ü…¯Œ_…¯Œ_ …¯Œ_|§…¯ŽL„§œ½æb$…¯Œ_$œ½æb,…¯Œ_,œ½æb4…¯Œ_4œ½æb<…¯Œ_<œ½æbD…¯Œ_Dœ½æbL…¯Œ_Lœ½æbT…¯Œ_Tœ½æb\…¯Œ_\œ½æbd…¯Œ_dœ½æbic$6©ùh$×lŒ§…¯ŽL”§œ½æbœ§…¯ŽL¤§œ½æb¬§…¯ŽL´§œ½æb™»&ºªIó Ól¼§…¯ŽLħœ½æba…¯ŽLaÛÓļ…¯ŽL\ œ½æbôŸÈO×môŸMùmÔ§…¯ŽLܧœ½æbü¦ÈO×mä§ÈO×mä§Mùmü¦Mùm •Mùmä§ÁMál •ÁMál”ˆ…¯˜‰±£hÙ˜ä§cJzôŸcJz)õ£DTi¢{óµ$…¯˜‰ì§ÈO×mì§Mùmì§X‘‰kô§h l|ì§Øbyô§¹K‰k$¦Q‰k$¦UM4lü§…¯ŽLLC±ç_¨…¯˜‰¨UM4läŽQ‰k¨!Qq‰¨Q‰k)9K;©ì§…¯y¨h l|¨¹K‰kùõK<}¦Q‰k¦UM4l¦!Qq‰D¨ÁMálD¨cJzù‡sû ¦UM4l\¨¶M×lôŸ²c„{ôŸåc‰kd¨¹K‰kl¨!Qq‰l¨UM4ll¨Q‰k¼…¯Œ_Ä…¯Œ_t¨h l|Ì…¯Œ_Ô…¯Œ_Ü…¯Œ_ä…¯Œ_|¨UM4lì…¯Œ_„¨Q‰k„¨UM4l¨bc”{QÙL]añ…¯Z­Œ¨yc‰k|¨Q‰k¦…¯˜‰ô…¯Œ_|¨…¯Ä_ü…¯Œ_…¯Œ_ …¯Œ_œ½æb…¯Œ_ ¦Q‰k…¯Œ_$…¯Œ_,…¯Œ_4…¯Œ_ù£h¸1<…¯Œ_D…¯Œ_L…¯Œ_Lœ½æbT…¯Œ_”¨Q‰k”¨UM4l\…¯Œ_”¨…¯Ä_d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_ ›MÞX„…¯Œ_Œ…¯Œ_L¦h l|”…¯Œ_œ¨bc”{¤¨yc‰kœ…¯Œ_¤…¯Œ_¬¨bc”{´¨yc‰k¼¨bc”{Ĩyc‰k¬…¯Œ_´…¯Œ_´œ½æb¼…¯Œ_¼œ½æbÄ…¯Œ_Äœ½æbÌ…¯Œ_Ô…¯Œ_Ôœ½æbÜ…¯Œ_<¦ÁMál<¦cJzä…¯Œ_4¦ÁMál4¦cJzì…¯Œ_ô…¯Œ_ü…¯Œ_̨…¯ŽLÔ¨C±h`€ÙYßkܨ…¯ŽLä¨C±ç_쨅¯ŽL4¦¶M×lô¨C±h`<¦¶M×lü¨þcw|l¦UM4ll¦Q‰k©Q‰k©UM4llˆ…¯˜‰…¯Œ_ ©…¯Ä_ …¯Œ_©ÞÇ —©çˆåµ…¯Œ_©qP‰k…¯Œ_$©qP4l,©h l|4©…¯ŽL<©œ½æbD©…¯ŽLL©œ½æb$œ½æb$…¯Œ_T©ÁMál\©ÁMáld©ÁMáll©…¯Œ_\©cJzt©"czÆT©cJzT‰"czÆ|©anˆˆ„©¹K‰k|©nኌ©anˆˆ”©…¯Ä_”©Q‰k”©UM4lœ©h l|¤©…¯Œ_¼Œh l|¬©…¯Ä_l©þb&z´©…¯Ä_´©Q‰k´©UM4l¼©Q‰kl©3b×l¼©…¯Ä_l©cÄ_l©§geÒ)±ˆ€Òd©cJzÌ©…¯ŽLÔ©C±ªbÜ©…¯my䩹K‰k¦h l|ä©h l|„¦¹K‰k’anˆˆŒŸcJzì©þcw|ô©h l|̉ÁMálü©¹K‰küˆ3b×läanˆˆä=n/‹ ª…¯¬×ª…¯ªØÙ4Xaaª²c„{$ª…¯Ä_ªÁMálªcJz,ª…¯Ä_4ª…¯y<ªUM4l<ªQ‰kœ¦…¯Ä_œ’cJzDªOYÜü¦²c„{Dª[Y'ÜLª²c„{Lªåc‰kTªØby\ªbc”{dªyc‰kü©h l|,…¯Œ_4…¯Œ_„©h l|<…¯Œ_lªQ‰klªUM4lD…¯Œ_L…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_t…¯Œ_¼©UM4l|…¯Œ_„…¯Œ_„œ½æbŒ…¯Œ_Œœ½æb”…¯Œ_”œ½æbœ…¯Œ_œœ½æb¤…¯Œ_Ü©Ðc?|Ü©cÄ_Ü©qPæb¬…¯Œ_´…¯Œ_¼…¯Œ_Ä…¯Œ_Ü•…¯Ä_ÙY[`Ì…¯Œ_Ô…¯Œ_Ü…¯Œ_tªQ‰ktªUM4lä…¯Œ_ì…¯Œ_ ¨[! ·[!ô…¯Œ_ü…¯Œ_ä$m¤ˆ…¯Œ_qÉ[Ól …¯Œ_qÛ[÷k…¯Œ_…¯Œ_|ªbc”{„ªyc‰kŒª×m¼ˆ$…¯Œ_qä[Îä,…¯Œ_ ø[Îä4…¯Œ_<…¯Œ_”ªÐiÞ”ª†Wó䔪Uj¬†”ª4{b”ª­ž6•”ªÇ¹½”ª¬µï”ª\燔ªÜW”ª§¼Þ”ª³ À,LªÁMálLªcJzD…¯Œ_œªh l|L…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_¤ª¹K‰k¬ª4\Zæì¤h l|´ªÐiÞ´ª†Wóä´ªUj¬†´ª4{b´ª­ž6•´ªÇ¹½´ª¬µï´ª\燴ªÜW´ª§¼Þ´ª³ À,t…¯Œ_¼ªÐiÞ¼ª†Wó伪Uj¬†¼ª4{b¼ª­ž6•¼ªÇ¹½¼ª¬µï¼ª\燼ªB\b¼ªS\³†¼ªi\IØ$ªQ‰k$ªUM4lĪx\Àx´ª…¯¬×̪…¯˜‰|…¯Œ_̪UM4l̪Q‰k̪!Qq‰Ī4\Zæ„…¯Œ_Œ…¯Œ_”…¯Œ_œ…¯Œ_<œ½æb¤…¯Œ_¬…¯Œ_t©þcw|´…¯Œ_)þcÖé¼…¯Œ_Ä…¯Œ_Ì…¯Œ_Ô…¯Œ_Ü…¯Œ_ä…¯Œ_ÔªÚ~êÔªUj¬†ܪC±ç_äªâ·êäª[¼ÀxäªUj¬†ì…¯Œ_ìªÚ~êìªî~êìªâ·êìªÇøàìªúb쪆_ô…¯Œ_ü…¯Œ_…¯Œ_ôªÚ~êôªî~êôªâ·êôªÇøàôªúbôª†_ …¯Œ_üªÚ~êüªî~êüªâ·êüªÇøàüªúbüª†_ôª…¯ì—…¯Œ_«Ú~ê«î~ê«â·ê«Çøà«úb«†_…¯Œ_ «Ú~ê «î~ê «â·ê «Çøà «úb «†_«…¯ì—$…¯Œ_,…¯Œ_4…¯Œ_«…¯ŽL«œ½æbL…¯Œ_$«…¯˜‰T…¯Œ_,«…¯ŽL4«œ½æbd…¯Œ_l…¯Œ_<«Q‰k<«UM4l<«!Qq‰<«=QŠ<«GQa³<«QQf³<« ‘œÄ‘…¯Ä_D«>ò)t…¯Œ_$ cJz<«…¯ZÂL«>ò) §"cET«ÁMálT«cJz\«>ò)|…¯Œ_d«Q‰kd«UM4ld«!Qq‰ §Üc?|„…¯Œ_l«Q‰kl«UM4ll«!Qq‰§"cT‚§þcw|§Ðc?|Œ…¯Œ_”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_t«ÁMált«cJz´…¯Œ_|«…¯ŽL„«œ½æbŒ«…¯ŽL”«œ½æbœ«…¯ŽL¤«œ½æb¬«…¯ŽL´«œ½æbÌ…¯Œ_Ô…¯Œ_¼«sbÀxÜ…¯Œ_Ä«…¯Ä_Ì«h l|ä…¯Œ_Ä«UM4lì…¯Œ_Ä«Q‰k윽æbô…¯Œ_Ô«T!*¡¡ÜcÁüˆ"côü…¯Œ_…¯Œ_Ü«C±ç_ä«C±ç_A…¯úA…¯I‡eÓlì«ÁMálì«cJzô«…¯yü«…¯Ä_¬…¯y¬X‘‰k¬…¯Ä_쫲c„{ì«åc‰k¬ÁMál$¬…¯y,¬…¯y,¬X‘‰k4¬…¯Ä_4¬UM4l4¬Q‰kô«X‘‰k$¬X‘‰k¬UM4l¬Q‰kÌŠQ‰k<¬…¯ŽLD¬œ½æbL¬…¯Œ_L¬Ðc?|L¬"cÄ_ô«ØbyL¥cJz,¬ØbyL¥¶M×l …¯Œ_…¯Œ_ü«Q‰kü«UM4l¬Øby…¯Œ_T¬…¯Ä_¬cJz$¬Øby$…¯Œ_,…¯Œ_ÌŠUM4l\¬ÁMáld¬ÁMáld¬cJzl¬…¯Œ_t¬…¯@|¬…¯Œ_„¬Q‰k„¬UM4lŒ¬Üc?|„¬…¯Ä_Œ¬"cE”¬…¯Ä_Œ¬pUœ¬UM4l|œ½æb¤¬²c„{¤¬åc‰k¤¬ÁMál¬¬…¯Ä_´¬ÁMál´¬cJz´CVÎs¼¬UM4l¼¬Q‰kĬ¹K‰kü޲c„{̬ubßkÔ¬Q‰kÔ¬UM4lùEp~ܬ¹K‰kä¬þmÀxä¬nyÔ¬…¯Ä_쬅¯Ä_ô¬cJzü¬"cï­¹K‰kü¬qP¡ ­¹K‰k­Q‰k­!Qq‰­=QŠ­UM4l­UM4l­Q‰k$­…¯Ä_T”åc‰k$­Q‰k$­UM4l,­…¯ŽL1ŸoY4­UM4l4­Q‰k<­…¯¸D­¹K‰kL­þb&zT­…¯Ä_T­UM4lT­Q‰kL­cÄ_$’Q‰k<­Q‰k<­=QŠ<­GQa³D­h l|\­…¯µ d­…¯µ l­…¯µ t­…¯µ |­œ½æb„­…¯µ Œ­…¯µ ”­C±h`,Uœ½æbœ­h l|¤­…¯Œ_¬­…¯Œ_¼­…¯˜#Ä­¹K‰kÄ­h l|Ì­Ðc?|Ì­qPæbÔ­UM4lÔ­Q‰kÔ­…¯Ä_Ì­cÄ_Ì­3b×lÌ­…¯myä­œ½æbì­œ½æbô­pU‚ü­C±ç_®UM4l®Q‰k®QQf³®GQa³®!Qq‰®=QŠ®…¯ZÂùÜf…)®UM4l®Q‰k®QQf³®=QŠ® ‘œÄ®GQa³®!Qq‰®²c„{$®…¯Ä_,®…¯Ä_,®UM4l4®œ½æb,®Q‰k´¬²c„{´¬åc‰k¼œ½æbÌœ½æb<®²c„{D®²c„{<®åc‰kL®¹K‰kT®Q‰kT®UM4lT®!Qq‰T®=QŠT®GQa³T®QQf³T® ‘œÄT®Ac¯ç\®Q‰k\®UM4l$®UM4ld®h l|d®¹K‰kl®!Qq‰l®UM4ll®Q‰kt®¹K‰kĬh l||®UM4l|®Q‰k|®=QŠ|®!Qq‰´¬¶M×lt†qP¦—„®UM4l„®Q‰kŒ®œ½æb1Üf8”®…¯Ä_”®UM4l”®Q‰kT”¶M×lœ®Q‰kœ®UM4l¤®Q‰k •¶M×l¤®UM4l,’¶M×l¬®Q‰k¬®UM4l´®UM4l´®!Qq‰´®=QŠ´®GQa³ü޶M×l¼®UM4l¼®Q‰kÄ®¶M×lù§å@Ì®¹K‰kÔ®…¯GŠÜ®h l|ä®UM4lä®=QŠä®!Qq‰ì‘Q‰kì®…¯Ä_ì®Q‰kì®UM4lœœ½æbô®Q‰kô®UM4lü®Q‰kü®UM4ll®…¯˜‰¯…¯MHü®…¯Ä_ ¯UM4l¯Q‰k¯UM4l¯…¯Ä_¯UM4l¯Q‰k$¯…¯ŽLÌeC±ç_d¬²c„{d¬åc‰k´¬¬Š‰küŽåc‰k,¯X‘‰k4¯¹K‰k<¯!Qq‰<¯Q‰k<¯UM4lÄXœ½æbtC±ç_Lz_Q VzÞXD¯=QŠD¯UM4lD¯!Qq‰D¯Q‰kD¯GQa³T¯…¯˜‰\¯…¯Ä_T¯Q‰kT¯!Qq‰T¯UM4ld¯…¯Ä_l¯ÁMál\¯UM4l\¯Q‰k|¯ÁMáld¯Q‰kd¯UM4l„¯…¯˜‰Œ¯…¯Ä_l¯cJz”¯!Qq‰”¯Q‰kœ¯Q‰kœ¯UM4l¤¯pU¬¯QQf³¬¯ ‘œÄ¬¯Ac¯ç´¯Q‰k¬¯GQa³¬¯=QЬ¯Q‰k¼¯…¯Ä_įÁMálįcJz\¬cJz̯h l|Ô¯ÁMálܯÁMálܯcJzä¯ÁMálbc”{ì¯yc‰k¤¯Üc?|ô¯œ½æb”¯UM4lü¯…¯Ä_|¯cJzä®Q‰k°…¯Ä_°UM4l°Q‰k¤¯Pb„{̬±h€̬Pb„{1[}M`´¯…¯y¬¯…¯îá °…¯GаcJz¤¬cJz°²c„{°ÁMál°Q‰k°UM4l°…¯Ä_°åc‰kd•cJz$°…¯˜‰ °UM4l °Q‰k °=QŠ °!Qq‰¬¯UM4l¬¯!Qq‰d•ÁMál$°UM4l$°Q‰k$°!Qq‰”¯…¯˜‰ì‘…¯Ä_ä®…¯GŠ,°!Qq‰ܯ²c„{ܯåc‰k\¬²c„{\¬åc‰k4°…¯GŠ4°!Qq‰4°Q‰k4°=QŠ4°UM4l<°pU‚D°þcw|L°¹K‰kT°…¯˜‰\°…¯îád°…¯Ä_<°"cT‚l°¹K‰k\°UM4l\°!Qq‰t°bc”{|°yc‰k„°…c‰k„°¹K4lŒ°…¯Ä_Œ°UM4ld°Q‰kŒ°Q‰kd°UM4l\°Q‰k\°=QŠ\°GQa³\°QQf³\° ‘œÄ\°Ac¯çT°Q‰kT°UM4lT°!Qq‰”°²c„{”°åc‰k”°¬Š‰k”°¶M×lœ°¶M×l´Ž¶M×l¤°…¯Ä_¬°¹K‰k”°„Á„{´°…¯˜‰¼°h l|1€,x¼°¹K‰k´°UM4l´°Q‰k´°!Qq‰”sœ½æbİœ½æb̰…¯˜‰̰!Qq‰̰UM4l̰Q‰kÔ°ÁMálܰ…¯yä°¹K‰kì°Q‰kì°GQa³ì°=QŠì°UM4lì°QQf³ì°!Qq‰ô°h l|•h l|ü°…¯Ä_±ÁMál±cJz ±bc”{±yc‰kü°Q‰kü°UM4l±…¯Ä_$±h l|,±h l|4±…¯Ä_4±Q‰k4±UM4lD¯…¯¸<±¶M×lD±¹K‰k¤¬¶M×lL±Q‰kT±ÁMál\±²c„{d±ÁMáld±cJzl±…¯GŠi|´Š™t±…¯˜‰t±Q‰kt±UM4lt±!Qq‰¬¬Q‰k¬¬UM4l|±Q‰k|±UM4l„±…¯˜‰„±UM4l„±Q‰kŒ±…¯Ä_Œ±Q‰kŒ±UM4ll±UM4ll±Q‰kl±!Qq‰l±=QŠD±h l|d•²c„{|±…¯Ä_œ”h l|”±¹K‰kœ±X‘‰kÜ®¹K‰kÔ®Q‰kÔ®=QŠÔ®!Qq‰Ô®UM4l¤±UM4l¤±Q‰k¬±ÁMál¬±cJz´±ÁMál¼±…¯Ä_´±cJzô­"cT‚ı…¯Ä_œ±…¯y”±h l|ıQ‰kıUM4ḻh l| ¯…¯Ä_Ô±ÁMálÔ±cJzܱQ‰kܱUM4lt®h l| ¯Q‰ḵ¹K‰kä±…¯Ä_ä±Q‰kä±UM4lì±Q‰kì±UM4l¯…¯Ä_ô®…¯Ä_””h l|ô±¹K‰kü±UM4lü±Q‰k) bY—²…¯Œ_$®Q‰k ²…¯Ä_ ²UM4l ²Q‰k¥¹K‰k²"cy<­!Qq‰<­UM4l²ÁMál$²ÁMál,²…¯˜‰$²cJz²cJz4²h l|1eˆ®<²Q‰k<²UM4l<²!Qq‰,²UM4l,²Q‰k,²!Qq‰¹Pbƒž̉²c„{\²h l|d²…¯Ä_d²Q‰kd²UM4ll²!Qq‰l²Q‰kl²UM4ll²=QŠt²²c„{|²…¯˜‰„²ÁMál„²cJzŒ²…¯Ä_”²ÁMál”²cJzœ²ÁMálœ²cJz$ ¶M×l¤²UM4l¤²Q‰kü¬ÁMv¤¬²ÁMálô¬ÁMál´²Q‰k´²UM4l¼²²c„{äXœ½æb<`œ½æbIJœ½æbyúˆK¦i1ÅR¦y‰W¦ñœ½a¦̲…¯Ä_Ô²h l|4œ½æb4…¯Œ_<…¯Œ_ܲQ‰kܲUM4lܲ!Qq‰D…¯Œ_ä²9‰áܲ…¯˜‰L…¯Œ_ì²…¯Ä_T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_ô²¹K‰k•h l|t…¯Œ_ü²Q‰kü²=Qг…¯Ä_|…¯Œ_Q£ŽL ³…¯ŽL³œ½æb³…¯ŽL$³œ½æb¼…¯Œ_Ü•UM4lÄ…¯Œ_,³qPæb,³"czÆÌ…¯Œ_4³…¯ŽL<³œ½æbD³…¯ŽLL³œ½æbô…¯Œ_ü…¯Œ_…¯Œ_ …¯Œ_T³…¯ŽL\³œ½æbd³…¯ŽLl³œ½æbt³…¯ŽL|³œ½æb„³…¯ŽLŒ³œ½æb”³…¯ŽLœ³œ½æb,…¯Œ_4…¯Œ_¼¯Q‰k¼¯UM4l<…¯Œ_D…¯Œ_Dœ½æbL…¯Œ_Lœ½æbT…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_¤³qŠ»¤³†lç„…¯Œ_¬³qŠ»¬³†l猅¯Œ_´³qŠ»´³†lç”…¯Œ_¼³qŠ»¼³†l眅¯Œ_ijqŠ»ij†l礅¯Œ_̳qŠ»̳†l笅¯Œ_´…¯Œ_¼…¯Œ_ì²UM4lÄ…¯Œ_ì²Q‰kÔ³ÿqŸ¼Ô³á¥®¼Ô³\«½¼Ô³ì¥̼Գͤ‰_ԳФà¼Ì…¯Œ_ܳbc”{ä³yc‰kì³…c‰kì³¹K4lô³…¯Ä_ô³UM4lÔ³…¯˜#ü³…¯ŽL´œ½æbüŽCVÎsüŽÈO×müŽMùmäMMäÈOUì…¯Œ_ ´…¯¹n´…¯¹n´…¯¹n´"cy´"cy ´"cy)È™;© ´qP¦— ´c¯¿,´…¯my,´qPæb4´UM4l<´Q‰k,´3b×l<´…¯Ä_4´…¯Ä_,´"cÄ_L´bc”{T´yc‰k<´UM4lÌ‹²c„{\´²c„{$²²c„{²²c„{ô…¯Œ_d´…¯yd´Øbyl´…¯yt´…¯¢Á|´ÁMál„´…¯Ä_|´cJzŒ´…¯Ä_t´/›æbl´3b×l”´…¯˜‰l´"cÄ_l´þb&zœ´…¯Ä_œ´Q‰kœ´UM4l”´Q‰k”´UM4l”´!Qq‰l´cÄ_´²…¯Ä_ü…¯Œ_Œ´Q‰kŒ´UM4ld´X‘‰kMMÈOU …¯Œ_…¯Œ_„´Q‰k„´UM4l…¯Œ_¬´bc”{´´yc‰k$…¯Œ_¼´UM4l,…¯Œ_¼´Q‰k4…¯Œ_Ä´bc”{Ì´yc‰k¤´…c‰k¤´¹K4lÔ´…¯Ä_Ô´Q‰kÔ´UM4lÜ´…¯Ä_ä´…¯Ä_¼´…¯Ä_ì´…¯¹nô´…¯¹nü´…¯¹nµ…¯¹nô´"cy µbc”{µyc‰kµ…¯ŽL$µC±h`ô´3b×lô´qP¦—,µh l|ü´"cyµcÄ_ì´3b×l4µ…¯Ä_ì´"cyì´qP¦—4µQ‰kì´c¯¿ô´Îdft,µ¹K‰k®…¯MHµÐc?|µqPæb<…¯Œ_<œ½æbD…¯Œ_Dœ½æbL…¯Œ_T…¯Œ_\…¯Œ_<µ…¯ŽLDµœ½æbl…¯Œ_ü¯Q‰kü¯UM4l¤®…¯Ä_Lµ…¯Ä_t…¯Œ_TµQ‰kTµUM4l¼±UM4l¼±Q‰k\µÁMál\µcJz|…¯Œ_Tµ…¯Ä_„…¯Œ_4µUM4lŒ…¯Œ_Lœ½æb”…¯Œ_”œ½æbœ…¯Œ_œœ½æb¤…¯Œ_dµ…¯ŽL\œ½æb¬…¯Œ_´…¯Œ_¼…¯Œ_Ä…¯Œ_Ì…¯Œ_Ô…¯Œ_Ü…¯Œ_ä…¯Œ_ì…¯Œ_ô…¯Œ_ü…¯Œ_…¯Œ_ …¯Œ_…¯Œ_…¯Œ_$…¯Œ_œ½æb,…¯Œ_lµC±ç_4…¯Œ_<…¯Œ_D…¯Œ_L…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_it÷ÕÌ®h l|t…¯Œ_|…¯Œ_„…¯Œ_tµÁMáltµcJzŒ…¯Œ_|µ…¯Ä_„µÞÇ —Œµ…¯Ä_„µçˆåµ”…¯Œ_”µqP4lœµqP‰k|µQ‰k|µUM4l¤µQ‰k¤µUM4lœ…¯Œ_¤…¯Œ_¬…¯Œ_´…¯Œ_¯Q‰k¯=QН!Qq‰¯QQf³¯UM4l¯GQa³¼…¯Œ_¼œ½æbÄ…¯Œ_Äœ½æbÌ…¯Œ_Ô…¯Œ_Ü…¯Œ_ä…¯Œ_ôœ½æbì…¯Œ_ô…¯Œ_ü…¯Œ_…¯Œ_ …¯Œ_¬µQ‰k¬µUM4l…¯Œ_…¯Œ_´µbc”{¼µyc‰kŒ¯Q‰k„¯Q‰k„¯UM4l„¯!Qq‰Œ¯UM4l¬µ…¯Ä_ œ½æbĵh l|̵…¯Ä_Ôµbc”{ܵyc‰käµbc”{ìµyc‰kôµbc”{üµyc‰k¶UM4l$…¯Œ_,…¯Œ_¶Q‰k4…¯Œ_<…¯Œ_D…¯Œ_L…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_„…¯Œ_Œ…¯Œ_”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_´…¯Œ_¼…¯Œ_ ¶…¯˜‰ܰX‘‰kÔ°cJzܰØbyÔœ½æbÄ…¯Œ_Ì…¯Œ_Ô…¯Œ_Ü…¯Œ_­h l|¤¯÷cEä…¯Œ_ ¶Q‰k ¶UM4l ¶!Qq‰Œœ½æbì…¯Œ_¶…¯Ä_ô…¯Œ_¶…¯Ä_ü…¯Œ_…¯Œ_¶Q‰k¶UM4l¶UM4l¶Q‰kܘh l|$¶…¯Ä_$¶UM4l$¶Q‰k,¶…¯Ä_ …¯Œ_…¯Œ_œ½æb…¯Œ_$…¯Œ_,…¯Œ_ô­Ðc?|4…¯Œ_<…¯Œ_D…¯Œ_4œ½æbœ±ØbyL…¯Œ_T…¯Œ_\…¯Œ_d…¯Œ_ü²UM4lü²!Qq‰4¶…¯GŠl…¯Œ_t…¯Œ_|…¯Œ_4¶Q‰k4¶UM4l4¶!Qq‰4¶=QŠ„…¯Œ_<¶bc”{D¶yc‰kL¶¹K‰kT¶¹K‰k\¶Q‰k\¶UM4l\¶…¯Ä_Œ…¯Œ_d¶Q‰kd¶UM4l”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_l¶C±h`´…¯Œ_¼…¯Œ_t¶íh¬óÄ…¯Œ_|¶bc”{„¶yc‰k­…¯Ä_Œ¶¹K‰k”¶UM4l”¶!Qq‰Ì…¯Œ_Ô…¯Œ_œ¶…¯y¤¶…¯îáÜ…¯Œ_ä…¯Œ_ì…¯Œ_¬¶bc”{´¶yc‰k¤¶Q‰k¤¶=QФ¶ ‘œÄ¤¶!Qq‰¤¶QQf³¤¶UM4l¤¶Ac¯çœ¶Q‰kô…¯Œ_¼¶bc”{Ķyc‰k̶UM4l¤¶GQa³̶Q‰kü…¯Œ_…¯Œ_Ô¶…¯˜‰ …¯Œ_ütbc”{ܶyc‰kü¬þchþä¶¹K‰kì¶²c„{ì¶åc‰kô¶²c„{ô¶åc‰kì¶ÁMál…¯Œ_…¯Œ_ü¶bc”{·yc‰k ·Q‰k ·UM4l·…¯GŠ$…¯Œ_ä´Q‰kä´UM4lÜ´UM4lÜ´Q‰k·…¯˜‰·Q‰k·UM4l$·…¯Ä_,·h l|,…¯Œ_4·ÁMál<·ÁMál1!§OD§Y_§rD·¹K‰kL·UM4l¡k§Á4…¯Œ_T·¹K‰k¡†§ùL­…¯y<MM<ÈOUD…¯Œ_\·h l|d·…¯Ä_l·h l|t·…¯˜‰|·h l|„·…¯¸Œ·h l|¤±…¯Ä_”·h l|l·¹K‰kd·UM4ld·Q‰k •cJzœ·h l|”·¹K‰k|·¹K‰kt·!Qq‰t·UM4lt·Q‰kœ·¹K‰kŒ·¹K‰k„·UM4l„·Q‰k„·GQa³„·=QŠ„·!Qq‰¬·…¯Ä_¬·UM4l¬·Q‰k´·qPæb¬°h l|”°ÁMál”°cJz¼·…¯GŠ\œ½æbÄ·Q‰kÄ·UM4lÄ·!Qq‰Ì·œ½æb\®…¯Ä_T®…¯îáL®h l|L…¯Œ_T…¯Œ_\…¯Œ_¼·Q‰k¼·UM4l¼·!Qq‰¼·=QŠÄ·…¯˜‰d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_„…¯Œ_Œ…¯Œ_”…¯Œ_Ô·…¯˜‰Ü·Q‰kÜ·UM4lÜ·!Qq‰1ª«Òä·…¯yœ…¯Œ_¤…¯Œ_ì·ZOÀxô·ZOθ…¯¸ ¸UM4l¸¶M×l¸ÁcÚ{tŒ¶M×l$¸pU‚,¸…¯4¸ÁMál<¸UM4l’h l|D¸UM4lD¸Q‰kD¸!Qq‰L¸Q‰kL¸=QŠL¸UM4lL¸!Qq‰T¸UM4l\¸…¯m"d¸…¯yl¸…¯ŽLt¸œ½æb\¸ZOÎ|¸CVÎsd¸ZOÀx¼CVU#|¸ÈO×m¼ÈO×m|¸Mùm¼M$¼…¯Œ_„¸zPë"Œ¸zPô"”¸…¯Þ$Ä…¯Œ_œ¸Î­å$Ì…¯Œ_¤¯é3€Ô…¯Œ_¤¸…¯Ä_Ü…¯Œ_¬¸…¯ŽLœ½æbä…¯Œ_´¸…¯Ä_̬pU¼¸pU¼¸Pb„{ô…¯Œ_ĸbc”{̸yc‰kü…¯Œ_…¯Œ_ …¯Œ_…¯Œ_…¯Œ_Ô¸…¯Ä_$…¯Œ_Ô¸Q‰kÔ¸UM4l,…¯Œ_ܸPb„4…¯Œ_$¸"cT‚丅¯Ä_츅¯Ä_<…¯Œ_ô¸Ì«è,4œ½æbD…¯Œ_ü¸Ÿ–´ü¸Ä¬Þü¸ù¬-Zü¸­Éô¸…¯0-L…¯Œ_T…¯Œ_\…¯Œ_¹œ½æb ¹Q‰k ¹UM4l ¹…¯Ä_¹ÁMál¹˜­|"$¹…¯Ä_,¹ÁMál4¹…¯Ä_<¹ÁMál<¹cJzD¹˜­|"L¹…¯Œ_T¹…¯Ä_\¹³­™"Ô±²c„{d¹…¯Ä_l¹þcw|t¹¹K‰kd¹Q‰kd¹UM4l|¹Q‰k|¹UM4l„¹Q‰k„¹UM4lŒ¹!Qq‰Œ¹GQa³Œ¹UM4lŒ¹Q‰kŒ¹=QŠ|¹…¯Ä_”¹X‘‰k<®ÁMálœ¹Q‰kœ¹UM4lD®ÁMál¤¹Q‰k¤¹UM4l$¹Q‰k$¹UM4l¬¹Q‰k¬¹UM4l´¹ÁMál¼¹Q‰k¼¹UM4l,¯…¯y<¯…¯˜‰4¯h l|Ĺ…¯y̹…¯îáÔ¹¹K‰k̹Ac¯çĹQ‰k̹=QŠ̹Q‰k̹QQf³̹ ‘œÄ̹UM4l̹GQa³̹!Qq‰ܹQ‰kܹUM4lœœ½æb4¹Q‰k4¹UM4lä¹Q‰kä¹UM4l¹cJzì¹Q‰kì¹UM4lô¹…¯Ä_ì¹…¯Ä_¬¹…¯Ä_ü¹Q‰kü¹UM4lºQ‰kºUM4lܹ…¯Ä_ ºQ‰k ºUM4lº…¯Ä_ºÁMál$ºQ‰k$ºUM4l º…¯Ä_,ºQ‰k,ºUM4lºQ‰kºUM4l4ºÁMál<º…¯Ä_Dº…¯ŽLLºœ½æbt…¯Œ_|…¯Œ_TºQ‰kTºUM4l„…¯Œ_Œ…¯Œ_”…¯Œ_ ¸Q‰k ¸=QŠ ¸!Qq‰\ºQ‰k\ºUM4lœ…¯Œ_¤…¯Œ_¬…¯Œ_´…¯Œ_¼…¯Œ_Ä…¯Œ_dºQ‰kdºUM4lÌ…¯Œ_Ô…¯Œ_Ü…¯Œ_ä…¯Œ_lº…¯Ä_ì…¯Œ_ô…¯Œ_ü…¯Œ_tºcJz|º…¯˜‰„ºcJz„º²c„{„ºåc‰k|ºQ‰k|º!Qq‰Œº"cT‚”º…¯¤J¤¯"cEœºþcw|¤ºÁMál¤ºcJz¬ºh l|´ºC±ç_¼º…¯âMĺUM4lĺQ‰k̺´7O̺´OO̺2´bO̺H´yO̺X´ŒO̺i´¸O̺…¯äOÔºC±ç_Œº÷cq„L¸…¯GŠtºÈO×m„ºÈO×m„ºMùmtºMùm …¯Œ_¤¸Q‰k¤¸UM4lܺ"cT‚…¯Œ_äºg³cÄäºÏˆìSìºQ‰kìºUM4lìº!Qq‰캅¯˜‰…¯Œ_|ºUM4l$…¯Œ_,…¯Œ_4…¯Œ_<…¯Œ_̬é3€D…¯Œ_ôºÄ¬Þôº­É̬äh1€üº…¯Ä_L…¯Œ_T…¯Œ_ŒºÐc?|»þcw| »¹K‰k»…¯Ä_»h l|$»UM4l$»Q‰k¤¯œhõD¸…¯˜‰\…¯Œ_,»Q‰k,»UM4l,»!Qq‰d…¯Œ_l…¯Œ_»Q‰k»UM4lt…¯Œ_4»qPæb„ºÁMálŒºpU‚ܺpU‚tºÁMálŒ¹…¯¸<»h l|D»ÁMálD»cJzL»¶M×lL»²c„{T»ÁMál\»UM4l\»Q‰kd»Q‰kd»UM4ll»…¯Ä_l»UM4ll»Q‰kL»åc‰kL»cJzL»ÁMált»¶M×l|»UM4l|»Q‰k„»…¯Ä_|»…¯Ä_Œ»²c„{Œ»åc‰k”»œ½æbœ»…¯Œ_¤»UM4l¤»Q‰k¬»…¯Ä_´»h l|¼»…¯^ZÄ»…¯Ä_Ì»UM4lÌ»Q‰kÌ»…¯Ä_Ä»UM4lÄ»Q‰kÔ»þcw|Ü»¹K‰k¸ÁMál¸cJzä»¶M×l<»¹K‰kü»C±ç_¼…¯ŽL ¼œ½æbL»CVÎsL»ÈO×mL»MùmŒ…¯Œ_”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_´…¯Œ_L»CV p¼…¯Œ_¼…¯ŽL¼œ½æbÄ…¯Œ_Ì…¯Œ_Ô…¯Œ_$¼Q‰k$¼UM4lÜ…¯Œ_ä…¯Œ_ì…¯Œ_„»Q‰kô…¯Œ_„»UM4lü…¯Œ_$¼…¯Ä_,¼…¯Ä_…¯Œ_ …¯Œ_4¼Q‰k4¼UM4l4¼!Qq‰…¯Œ_…¯Œ_<¼œ½æb$…¯Œ_,…¯Œ_D¼Q‰kD¼UM4lD¼!Qq‰4…¯Œ_L¼Ÿ–´L¼(cîX¸þcw|T¼…¯Œ_<…¯Œ_\¼…¯Ä_D…¯Œ_L…¯Œ_T…¯Œ_d¼5ºwvd¼´OOd¼2´bOd¼H´yOd¼X´ŒOd¼i´¸Od¼…¯äOl¼C±ç_,»…¯˜‰t¼ÁMált¼cJz»"cT‚$»…¯Ä_|¼"cT‚¸"cT‚„¼C±ç_Œ¼C±ç_”¼h l|Œ»cJzœ¼H´yOœ¼…¯äO\…¯Œ_´¸Q‰k´¸UM4l¤¼…¯ŽL¬¼œ½æbt…¯Œ_|…¯Œ_„…¯Œ_Œ…¯Œ_Œ»ÁMál”…¯Œ_œ…¯Œ_¤…¯Œ_¬…¯Œ_´…¯Œ_|¼pU‚»pU‚¸pU‚´¼…¯­¼¼…¯ÜA\ó틹K‰kļ¹K‰k̼§gù‚Ô¼e¿‰_Ô¼s¿‰_Ô¼~¿†_Ô¼‰¿†_ܼœ½æb켜½æbA£h„)£hÊ‚ô¼þcw|ü¼þcw|½…¯Ä_ ½"czÆü¼"c†½cÄ_½"c†$½…¯Ä_,½cJz4½"c†½þb&z½þcw|<½¹K‰k ½þcw|D½h l|D½¹K‰k4½þcw|̼þchþL½¹K‰kT½þcw|\½¹K‰k½UM4ld½…¯¸l½h l|t½h l||½…¯Ä_„½h l|Œ½h l|Œ½¹K‰k”½²c„{”½åc‰kœ½²c„{œ½åc‰k¤½…¯Œ_¬½…¯Œ_´½…¯Œ_¼½…¯Œ_Ľœ½æb4ŠUM4l4ŠQ‰k̽cJzÔ½cJzܽ…¯Ä_ä½…¯Ðì½£h€¤œ½æb œ½æb¤¯£h€ô½£h€ü½£h€¾qP‰kd œ½æb ¾…¯á—¬®…¯Ä_¾h l|¾¹K‰k¾…¯Ä_$¾…¯˜‰,¾h l|,¾¹K‰k$¾Q‰k$¾UM4l$¾!Qq‰4¾Q‰k4¾UM4l<¾…¯Ä_D¾h l|L¾…¯GŠT¾h l|T¾¹K‰kL¾Q‰kL¾UM4lL¾!Qq‰L¾=QŠ\¾…¯˜‰d¾h l|d¾¹K‰k\¾Q‰k\¾!Qq‰\¾UM4ll¾…¯Ä_t¾h l||¾…¯¸„¾h l|Œ¾…¯˜‰”¾h l|ô‘…¯Ä_œ¾h l|¤¾…¯Ä_¤¾Q‰k¤¾UM4l¬¾…¯Ä_´¾h l|¼¾h l|”¾¹K‰kŒ¾!Qq‰Œ¾UM4lt¾¹K‰kl¾UM4l„¾¹K‰k|¾UM4l|¾=QŠ|¾GQa³|¾!Qq‰|¾Q‰kœ¾¹K‰kù˜ËG¥̾…¯Ä_Ô¾h l|Œ¾Q‰k´¾¹K‰k¬¾Q‰k¬¾UM4lÔ¾¹K‰k̾UM4l̾Q‰kD¾¹K‰k<¾UM4l<¾Q‰kܾ…¯Ðä¾…¯Ä_ì¾ÁMálä¾UM4lä¾Q‰kܾs¿‰_ܾe¿‰_ܾ~¿†_ܾ‰¿†_ô¾Q‰kô¾UM4lü¾UM4lü¾Q‰k¿ÁMál¹\óЭ ¿…¯Ä_¶…¯Ä_¿…¯Ä_¿Q‰k¿UM4l¿²c„{¿åc‰k$¿…¯Ä_”½qP¦—„½¹K‰k|½Q‰k|½UM4ld¬¶M×l”½¶M×l|’¶M×l$¿UM4l$¿Q‰kܾ—ÌÀxt½¹K‰k,¿…¯Ä_,¿Q‰k,¿UM4l¿cJz4¿UM4l4¿Q‰k<¿Q‰k<¿UM4l´¹cJz¾Q‰k¾UM4lD¿Q‰kD¿UM4lL¿UM4lL¿Q‰k œ½æbT¿UM4lT¿Q‰k\¿UM4l\¿Q‰kd¿¢PÀxÜ‘…¯Ä_l¿Q‰kl¿UM4lt¿…¯Ä_t¿Q‰kt¿UM4l|¿¹K‰k„¿UM4lŒ¿h l|”¿¹K‰kœ¿!Qq‰œ¿UM4ll½¹K‰kd½!Qq‰d½Q‰kd½UM4l¤¿Üc?|d½GQa³d½=QŠ´¬qP¦—¤¿"cED»¶M×l¬¿¹K‰k´¿Q‰k´¿UM4lŒ¿¹K‰k¼¿…¯ŽLÄ¿…¯ŽL´¿…¯Ä_¬¿h l|Ì¿²c„{¤¯ªh€Ô¿UM4lÔ¿Q‰kä½e¿‰_ä½s¿‰_ä½~¿†_佉¿†_L¿…¯Ä_D¿…¯Ä_Ü¿¹K‰kä¿…¯Ä_ä¿UM4lä¿Q‰kì¿UM4lì¿Q‰kô¿…¯Ä_ô¿UM4lô¿Q‰k¿¶M×lü¿"cï\¿…¯Ä_T¿…¯Ä_À…¯1™ ÀÁMálÀÁMálÀQ‰k$ÀUM4l$ÀQ‰kÀUM4l,ÀUM4l<À…¯Ä_DÀQ‰kDÀUM4l,ÀQ‰kLÀUM4lLÀQ‰k$À…¯Ä_ÀcJz,À…¯Ä_À…¯Ä_<ÀQ‰k<ÀUM4l\ÀÁMál\ÀcJzdÀÁMállÀÁMállÀcJztÀQ‰k|ÀUM4ltÀUM4l|ÀQ‰k„À…¯Ä_ŒÀ…¯Ä_”À…¯Ä_œÀUM4lœÀQ‰k¤ÀUM4l¤ÀQ‰k|À…¯Ä_tÀ…¯Ä_¬À…¯˜‰½_ÒqÛ¬À!Qq‰¬ÀUM4l¬ÀQ‰k,¥…¯˜‰½…¯¹n´ÀC±ç_¼ÀC±ç_ÄÀC±ç_ÌÀC±ç_ÔÀC±ç_ÜÀC±ç_äÀC±ç_ìÀC±ç_ôÀC±ç_üÀC±ç_TLœ½æb”Iœ½æbÜHœ½æbÁœ½æb¼Hœ½æbÌLœ½æb´Hœ½æb Á…¯Ä_ ÁQ‰k ÁUM4lÁœ½æbÁœ½æb$Á…¯Ä_$ÁUM4l$ÁQ‰k\œ½æb,Á…¯ŽL4Áœ½æb<Á…¯ŽLDÁœ½æbÌ…¯Œ_̼éZ“æTÀbc”{LÁyc‰k½Q‰k̼"c±æÔ…¯Œ_TÁ…¯Ä_Ü…¯Œ_ì…¯Œ_\Á¿è |œ½æbô…¯Œ_dÁ¿¸èDC±ç_ü…¯Œ_…¯Œ_ …¯Œ_lÁ—ÌÀxlÁe¿‰_lÁs¿‰_lÁ~¿†_lÁ‰¿†_lÁCVélÁÈO×mlÁM[é$…¯Œ_,½ÁMál¤¿pUü¿ÁMv¤½ÁMËë4½ÁMËë<…¯Œ_D…¯Œ_L…¯Œ_T…¯Œ_ ¥bc”{tÁyc‰k\…¯Œ_d…¯Œ_l…¯Œ_t…¯Œ_|…¯Œ_$½Q‰k$½UM4l„…¯Œ_Œ…¯Œ_”…¯Œ_œ…¯Œ_¤…¯Œ_ì½Üc?|¬…¯Œ_ô½Üc?|´…¯Œ_ü½Üc?|¼…¯Œ_¼œ½æb¬œ½æbÄ…¯Œ_Ì…¯Œ_Äœ½æb´œ½æbÔ…¯Œ_Ü…¯Œ_̬Üc?|ä…¯Œ_|Á~”é™|Á‘…?ï„ÁQ‰k„ÁUM4lì…¯Œ_ŒÁ…¯Ä_ô…¯Œ_ôœ½æbü…¯Œ_ …¯Œ_ …¯Œ_ …¯Œ_ …¯Œ_ œ½æb$ …¯Œ_, …¯Œ_4 …¯Œ_< …¯Œ_D …¯Œ_L …¯Œ_T …¯Œ_\ …¯Œ_d …¯Œ_l …¯Œ_t …¯Œ_<±²c„{| …¯Œ_„ …¯Œ_Œ …¯Œ_”ÁQ‰k”ÁUM4l” …¯Œ_œ …¯Œ_¤ …¯Œ_ü¿OÝ•8¬ …¯Œ_´ …¯Œ_œÁ…¯Ä_¼ …¯Œ_Ä …¯Œ_Ì …¯Œ_Ô …¯Œ_Ü …¯Œ_ä …¯Œ_ì …¯Œ_ô …¯Œ_ü …¯Œ_!…¯Œ_ !…¯Œ_!…¯Œ_!…¯Œ_$!…¯Œ_,!…¯Œ_4!…¯Œ_vÄÆ…¯êvÌÆœ½æbÔÆUM4lÜÆQ‰kÜÆ!Qq‰ÜÆUM4läÆUM4läÆQ‰k´Ä¹K‰kìÆC±ç_ôÆC±ÙaüÆUM4lüÆQ‰kÇ…¯˜‰Ç!Qq‰ÇUM4lÇQ‰k ÇUM4l ÇQ‰kLÄUM4lLÄQ‰kDzc„{ÇUM4lÇQ‰k&œ½æb$ÇUM4l$ÇQ‰k&C±ç_ÔÆQ‰kÔÂ!Qq‰ÔÂQ‰kAcá<Äåc‰k,Ç…¯˜‰,ÇQ‰k,Ç!Qq‰,ÇUM4l4ǹK‰k<ÇUM4l<ÇQ‰kDǹK‰kLÇ!Qq‰TÇÁMálŒ¬&i]€Œ¬±h€Œ¬Pb„{LÇUM4lLÇQ‰kÂÁMál\Ç…¯Ä_dÇ…¯ŽLlDzc„{lÇåc‰ktÇUM4l|Dzc„{|Çåc‰k„ÇUM4l ÃQ‰k ÃUM4l Ã=QŠ Ã!Qq‰ŒÇ…¯˜‰”Çh l|œÇ…¯˜‰œÇ!Qq‰œÇUM4lœÇQ‰k”ǹK‰kŒÇ!Qq‰¤ÇUM4l¤ÇQ‰k¬ÇUM4l¬ÇQ‰k´Ç²c„{´Çåc‰kŒÇQ‰kŒÇUM4l¼Ç…¯¸ÄÇ…¯Ä_ÌÇQ‰kÌÇUM4lÌÇ…¯Ä_ÔDzc„{äÇUM4läÇQ‰kìDzc„{ôÇUM4lœUM4lüÇ…¯˜‰üÇ!Qq‰üÇQ‰küÇUM4lôÇ…¯˜‰ìÇcJzD®¬Š‰kD®„Á„{Ȳc„{Èåc‰k ÈUM4lLÇ…¯˜‰DÇh l|È…¯Ä_¬›!Qq‰ÈUM4lÈQ‰kȲc„{$ÈÁMál,ÈQ‰k,È!Qq‰4Ȳc„{<È…¯Ä_¬›Q‰k<ÈUM4l<ÈQ‰kDÈ…¯˜‰LÈÊ›TÈ…¯GŠtÄQQf³tÄUM4l\È…¯ZÂLÈžœü±…¯Ä_LÈð½ŸTÈ!Qq‰TÈ=QŠTÈQ‰kTÈUM4ldÈ!Qq‰dÈGQa³dÈQ‰kdÈ=QŠlÈ…¯Ä_lÈUM4llÈQ‰k„C±ç_„ÈqP‰ktÈqP4lDÈUM4lDÈQ‰kDÈ!Qq‰|ÈqPq‰\ÈQQf³\È=QŠ\ÈUM4l\ÈQ‰k\È ‘œÄŒÈQ‰kŒÈAc¯ç”ÈUM4lŒÈUM4lŒÈ!Qq‰ŒÈGQa³ŒÈQQf³ŒÈ ‘œÄœÈþb&z¤È…¯Ä_¤ÈQ‰k¤ÈUM4l¬È²c„{´Èh l|¬Èåc‰k´È¹K‰k”ÈQ‰kŒÈ=QŠ,’¬Š‰k¼Èh l|¼È¹K‰kÄÈ…¯¸ÌÈh l|ÔÈ…¯˜‰ÜÈh l|¬Ä¹K‰käÈ…¯˜‰ìÈh l|ìȹK‰käÈQ‰käÈUM4läÈ!Qq‰ôÈ…¯˜‰ (œ½æbl#œ½æbüÈ…¯GŠÉh l|ÜȹK‰kÔÈQ‰kÔÈUM4lɹK‰küÈQ‰kÔÈ!Qq‰üÈUM4lüÈ=QŠ É…¯¸Éh l|üÈ!Qq‰ôÈQ‰kôÈUM4lôÈ!Qq‰É…¯MH$Éh l|,É…¯MH4Éh l|ɹK‰k ÉQ‰k ÉGQa³ É=QŠ ÉUM4l É!Qq‰$ɹK‰kÉQ‰kÉQQf³É=QŠÉGQa³ÉUM4lÉ!Qq‰ÌȹK‰kÄÈ=QŠÄÈUM4l<ÉUM4l4ɹK‰k,ÉUM4l,É!Qq‰,ÉGQa³,ÉQ‰k,ÉQQf³,É=QŠÄÈQ‰kÄÈGQa³ÄÈ!Qq‰DÉ…¯˜‰LÉ…¯îáTÉh l|\É…¯Ä_\ÉQ‰k\ÉUM4ldÉ…¯Ä_lÉh l|tÉ…¯Ä_tÉQ‰ktÉUM4llɹK‰kdÉUM4ldÉQ‰k|É…¯¸„Éh l|TÆÁMálTÆcJzŒÉ…¯Ä_”É…¯K¾¤É…¯¿¾<ÉQ‰k¬É…¯Ä_D’h l|¬ÉUM4l¬ÉQ‰k´É!i¼ÉQ‰kD(œ½æbŒÉQ‰k„ɹK‰k|ÉGQa³ŒÉUM4l|ÉUM4l|É!Qq‰|ÉQ‰k|É=QŠ1× ÇÄÉÁMálÄÉcJzTɹK‰kLÉGQa³LÉQQf³LÉAc¯çDÉQ‰kLÉ=QŠDÉUM4lLÉ ‘œÄLÉQ‰kDÉ!Qq‰LÉUM4lLÉ!Qq‰ÔÆ…¯Ä_Ìɲc„{ÌÉåc‰kÔɲc„{ÔÉåc‰k¼É…¯Ä_´É…¯¿¾äÉh l|äɹK‰kìÉQ‰kìÉUM4lìÉ!Qq‰ìÉ=QŠôÉ…¯ÕfüÉ…¯Ä_üÉQ‰küÉUM4lÇåc‰k,ÄUM4lÊ…¯Ä_ÊQ‰kÊUM4ll(œ½æb Êh l|l†¶M×l4Çh l|ÊÁMálÊcJzÊQ‰kÊUM4lŒÆGQa³ŒÆUM4l$Ê…¯Ä_,Êh l|4Ê…¯¸4ÊUM4l4ÊGQa³4Ê=QŠ4Ê!Qq‰<ʲc„{4ÊQ‰kDÊUM4lDÊQ‰kLÊQ‰kLÊ!Qq‰LÊUM4lTʲc„{\ÊœP]‚dÊQ‰kdÊUM4ldÊ!Qq‰lÊ…¯Ä_ ʹK‰klÊUM4llÊQ‰ktÊh l||Ê…¯¸l¿…¯Ä_„Ê…¯˜‰„ÊUM4l„Ê!Qq‰„ÊQ‰kŒÊ…¯˜‰”ÊQ‰k”ÊUM4l¤ÊÁMál¤ÊcJz´ÊÁMál´ÊcJz”Ê…¯Ä_¼Ê¶M×l¼Ê¬Š‰kÄʶM×lÄʬЉkÌÊ…¯Ä_ÔÊh l|¤Ê¶M×l¤Ê¬Š‰k<ĬЉkŒÊUM4lŒÊ!Qq‰ŒÊQ‰kÔʹK‰kÌÊQ‰kÌÊUM4lÜÊ…¯˜‰äÊÁMáläÊcJzÜÊQ‰kÜÊ!Qq‰ÜÊUM4lìÊbc”{ôÊyc‰küʶM×lËbc”{ Ëyc‰kTʶM×l$Ë…¯Ä_$ËQ‰k$ËUM4l,ËQ‰k,ËUM4l|ÊQ‰k|ÊGQa³|Ê=QŠ|ÊUM4l|Ê!Qq‰4ËQ‰k4ËUM4l<Ë…¯¸<ËQ‰k<ËGQa³<Ë=QŠ<ËUM4l<Ë!Qq‰äʶM×lD˶M×lLËQ‰kLËUM4lT˹K‰k\ËœPÂN\Ë}”ÔðdË…¯Ä_Ä!œ½æbl˹K‰k\˹üð\ËÀüð\Ë¢PJÄ\ËÇBø\Ëw”Qø\ËÇP`ø\˨PJÄ\ËÎðøt˹K‰k|Ëé'ù„ËöMùŒËÁMálŒËcJz”ËQ‰k”ËUM4lœËQ‰kœËUM4l¤ËQ‰k¤ËUM4l¬Ë…¯GЬË=QЬË!Qq‰¬ËQ‰k¬ËUM4l´Ë²c„{tʹK‰k¸²c„{¸åc‰kLÊ…¯˜‰DÊ…¯Ä_¼Ëœ½æbÄËœP¨ÀÄË¢P¬†Ä˨P†_ÄËÁPÀxÌË…¯Ä_ÔËœ½æbÜËœP]‚ÜË¢P*ÌËQ‰k\Êp5ÌËUM4läË…¯Ä_ÄËé'ù|ËÁPÀxìË…¯Œ_ôË!Qq‰ôËUM4lôËQ‰küËC±ÙaÜ%œ½æbÌ!Qq‰ÌQ‰kÌUM4lÜÆ…¯˜‰ÔÂUM4l<%œ½æbdÈ…¯¸dÈUM4l Ì…¯Ä_Ì…¯Ä_̹K‰k¤Ã²c„{$̹K‰k,Ì…¯˜‰4Ìh l|4̹K‰k,ÌUM4l,Ì!Qq‰,ÌQ‰k<ÌC±ªbDÌUM4lDÌQ‰k¬Ç…¯Ä_DÌ…¯Ä_¤Ç…¯Ä_LÌZONvTÌðå·1TÌræ÷1²c„{åc‰kÃQ‰k\ÌÁMálä°h l|dÌ…¯Ä_\ÌcJzlÌQ‰klÌUM4llÌ…¯Ä_tÌUM4ltÌQ‰kÌ…¯˜‰ºcJz|Ì…¯˜‰¤Ãåc‰k„ÌUM4l„ÌQ‰kŒÌ¹K‰k”ÌQ‰kœÌ…¯Ä_<’ÁMál<’cJz¤Ì…¯Ä_”ÌUM4l¬Ìh l|Âåc‰k²c„{´Ì…¯Ä_¬Ã=QŠ´ÌQ‰k´ÌUM4l¼Ì…¯¸ÄÌ…¯îá¬ÃQ‰k¬Ã!Qq‰œÌQ‰kœÌUM4lÌÌ…¯¸ÔÌ…¯îáÜÌQQf³ÜÌGQa³ÜÌUM4lÜÌ ‘œÄÜÌ=QŠÜÌAc¯çÌÌ!Qq‰ÜÌQ‰kÌÌQ‰kÌÌGQa³ÌÌ=QŠÜÌ!Qq‰ÌÌUM4läÌ…¯Ä_ìÌUM4läÌQ‰kìÌQ‰käÌUM4lôÌUM4lôÌQ‰kÍ…¯GŠÍ!Qq‰Í=QŠÍUM4lÍQ‰k ÍcJzÍ…¯Ä_Í…¯Ä_$Í…¯˜‰,Í…¯˜‰,ÍQ‰k,Í!Qq‰,ÍUM4l4Í÷cÑ-<ÍcJzDÍQ‰kDÍUM4l<Ͳc„{DÍ…¯Ä_<ÍÁMálLÍÁMálTÍ…¯Ä_TÍQ‰kTÍUM4ldÍ…¯˜‰dÍ!Qq‰dÍUM4ldÍQ‰klÍ…¯¸tÍh l|t͹K‰k¸¬Š‰k¤¬¬Š‰k”¶Q‰k|ÍÁMál$ÍQ‰k$Í!Qq‰$ÍUM4llÍ=QŠlÍUM4l Ͳc„{ Íåc‰kôË…¯˜‰„Í…¯U8ŒÍ…¯˜‰”ÍcJzœÍ…¯Ä_¤ÍUM4l¤ÍQ‰kôÁZONv¬Íðå·1¬Íræ÷1¬Á²c„{¬Áåc‰k¬Á¶M×l´Í…¯Ô;¼Í…¯Ä_4–¬Š‰kì©Ðc?|ÃÁMál¤ÅÁMálÄÍ>ò)ÌɬЉkÌÍ…¯Ä_ÔÍ…¯˜‰t”åc‰kä͹K‰kì͸ˆ~D´ÃbcŸ|ôÍpcßkôÍyc‰küÍ…¯ŽLΜ½æbL!œ½æbD!…¯Œ_L!…¯Œ_T!…¯Œ_\!…¯Œ_ Μ½æbd!…¯Œ_l!…¯Œ_t!…¯Œ_|!…¯Œ_„!…¯Œ_Œ!…¯Œ_”!…¯Œ_|ÂÁMMO´Ã…¯Œ_œ!…¯Œ_ÜÁQ‰k¤!…¯Œ_äÁQ‰k¬!…¯Œ_ìÁQ‰k´!…¯Œ_ ÈQ‰k È!Qq‰¼!…¯Œ_Îh l|lËh l|Î…¯ŽL$Μ½æb”(œ½æbÄ!…¯Œ_dËQ‰kdËUM4lŒ5œ½æbÌ!…¯Œ_Ô!…¯Œ_,ÎLb,λãGQ4ÎQ‰k4ÎUM4lιK‰kÜ!…¯Œ_<Î…¯ŽLDΜ½æbä!…¯Œ_LÎ…¯ŽLTΜ½æbì!…¯Œ_ô!…¯Œ_ü!…¯Œ_\Î…¯ŽLdΜ½æblÎ…¯ŽLtΜ½æb|Î…¯ŽL„Μ½æbŒÎ…¯ŽL”Μ½æbœÎ…¯ŽL¤Îœ½æb¬Î…¯ŽL´Îœ½æb¼Î…¯ŽLÄΜ½æbÌÎ…¯ŽLÔΜ½æbÜÎ…¯ŽLäΜ½æb$"…¯Œ_,"…¯Œ_ìÎ~”ÖìΜÀ ÞìÎüæ|ìÎ ç†_ìÎ$æÒìÎç ìΡ|˜ïìÎ{rÒ4ìÎçK‡ôÎ…¯Ä_üÎ"czÆ4"…¯Œ_<"…¯Œ_„ÂQ‰k„ÂUM4l„Â!Qq‰Ï…¯Ä_ÏQ‰kÏUM4l Ï…¯ŽLÏœ½æbD"…¯Œ_Ï…¯Ä_L"…¯Œ_T"…¯Œ_\"…¯Œ_d"…¯Œ_l"…¯Œ_t"…¯Œ_ôÎQ‰k´Â…¯y¬Â…¯îá¤Â"cy|"…¯Œ_¬ÂQ‰k¬ÂQQf³„"…¯Œ_Œ"…¯Œ_”"…¯Œ_$Ï~”Ö$ÏœÀ Þ$ÏâL¨À$ÏóŽ˼,ÏQ‰k,ÏUM4l4Ï…¯˜‰œ"…¯Œ_¤"…¯Œ_4ÏQ‰k4ÏUM4l4Ï!Qq‰¬"…¯Œ_´"…¯Œ_¼"…¯Œ_<Ï~”Ö<ÏœÀ Þ<ÏUj¬†<ÏóŽ˼<Ï|ë,b<ÏCÁ|Ä<ÏëSb<Ï…ë]bDϲc„{DÏåc‰kÄ"…¯Œ_LÏ~”ÖLÏœÀ ÞLÏUj¬†LÏóŽ˼LÏ|ë,bLÏCÁ|ÄTÏQ‰kTÏUM4l<Ï…¯rbÌ"…¯Œ_|ÃQ‰k|ÃUM4lÔ"…¯Œ_Ü"…¯Œ_ä"…¯Œ_ì"…¯Œ_\Ï…¯ŽLdÏœ½æbô"…¯Œ_”Ã÷cÑ-lÏ…¯ŽLtÏœ½æb|Ï…¯ŽL„Ïœ½æbŒÏ…¯ŽL”Ïœ½æbœÏ…¯ŽL¤Ïœ½æb¬Ï…¯ŽL´Ïœ½æb#…¯Œ_$#…¯Œ_¼Ï…¯ŽLÄÏœ½æb,#…¯Œ_4#…¯Œ_<#…¯Œ_D#…¯Œ_L#…¯Œ_T#…¯Œ_\#…¯Œ_d#…¯Œ_l#…¯Œ_t#…¯Œ_|#…¯Œ_„#…¯Œ_ÌÏ…¯ŽLÔÏœ½æbœ#…¯Œ_¤#…¯Œ_¬#…¯Œ_´#…¯Œ_¼#…¯Œ_Ä#…¯Œ_Ì#…¯Œ_Ô#…¯Œ_Ì#œ½æbÜ#…¯Œ_ä#…¯Œ_ì#…¯Œ_ô#…¯Œ_ü#…¯Œ_$…¯Œ_ $…¯Œ_ÏQ‰kÏUM4l$…¯Œ_ÜÏ…¯ŽLäÏœ½æbìÏ…¯ŽLôÏœ½æbüÏ…¯ŽLМ½æb Ð…¯ŽLМ½æbÐ…¯ŽL$М½æb,Ð…¯ŽL4М½æb<Ð…¯ŽLDМ½æbLÐ…¯ŽLTМ½æb\Ð…¯ŽLdМ½æblÐ…¯ŽLtМ½æb|Ð…¯ŽL„М½æbŒÐ…¯ŽL”М½æbœÐ…¯ŽL¤Ðœ½æb¬Ð…¯ŽL´Ðœ½æb\$…¯Œ_d$…¯Œ_l$…¯Œ_t$…¯Œ_|$…¯Œ_„$…¯Œ_Œ$…¯Œ_¼ÐQ‰k¼ÐUM4l”$…¯Œ_ÄÐQ‰kÄÐUM4lœ$…¯Œ_¤$…¯Œ_ÌÐbc”{ÔÐyc‰k¬$…¯Œ_´$…¯Œ_¼$…¯Œ_Ä$…¯Œ_ÜÐQ‰kÜÐUM4lÌ$…¯Œ_Ô$…¯Œ_¬ÅQ‰kÜ$…¯Œ_ÔÅ…¯Ä_ä$…¯Œ_ÔÅQ‰kì$…¯Œ_ôÅ…¯Ä_ô$…¯Œ_äÐQ‰käÐUM4lü$…¯Œ_äÐ…¯Ä_%…¯Œ_ %…¯Œ_ôÅUM4l%…¯Œ_%…¯Œ_´ÅQ‰kƲc„{Æåc‰kìÐÁMál$%…¯Œ_,%…¯Œ_ôÐQ‰kôÐUM4l4%…¯Œ_üÐþcw|ѹK‰kôÎUM4l<%…¯Œ_D%…¯Œ_4%œ½æb Ñh l|L%…¯Œ_ѹK‰kT%…¯Œ_\%…¯Œ_d%…¯Œ_l%…¯Œ_t%…¯Œ_Ñ…¯¸Ü"œ½æb|%…¯Œ_„%…¯Œ_$Ñ…¯Ä_Œ%…¯Œ_$ÑQ‰k$ÑUM4l”%…¯Œ_œ%…¯Œ_,ÑQ‰k,ÑUM4l¤%…¯Œ_4ÑQ‰k4ÑUM4l4Ñ!Qq‰¬%…¯Œ_´%…¯Œ_¼%…¯Œ_Ä%…¯Œ_Ì%…¯Œ_ÁH7 vÔ%…¯Œ_Ü%…¯Œ_ä%…¯Œ_ì%…¯Œ_ô%…¯Œ_ü%…¯Œ_<ÑÕ{ƒ<Ñ ºÙ²<ÑUj¬†<Ñ`Í—+ü%œ½æb&…¯Œ_ &…¯Œ_4œ½æb&…¯Œ_&…¯Œ_$&…¯Œ_,&…¯Œ_4&…¯Œ_<&…¯Œ_D&…¯Œ_L&…¯Œ_T&…¯Œ_\&…¯Œ_d&…¯Œ_l&…¯Œ_t&…¯Œ_ÜÇbc”{DÑyc‰kLÑQ‰kLÑUM4l1ÐÈ…TÑ…¯GŠ|&…¯Œ_TÑQ‰kTÑUM4lTÑ!Qq‰TÑ=QŠ\Ñ…¯Ä_dÑ…¯Ä_„&…¯Œ_\ÑQ‰k\ÑUM4lŒ&…¯Œ_”&…¯Œ_œ&…¯Œ_¤&…¯Œ_¬&…¯Œ_´&…¯Œ_¼&…¯Œ_Ä&…¯Œ_Ì&…¯Œ_Ô&…¯Œ_lÑ=ÿbtÑQ‰kÜ&…¯Œ_ôÇQ‰kôÇ!Qq‰ä&…¯Œ_ì&…¯Œ_|Ñ…¯GŠô&…¯Œ_ü&…¯Œ_„Ñbc”{ŒÑyc‰k”Ñ…¯Ä_'…¯Œ_ '…¯Œ_œÑ…¯Ä_¤Ñ…¯Ä_'…¯Œ_'…¯Œ_\ÇQ‰k$'…¯Œ_\ÇUM4l •„Á„{,'…¯Œ_¤ÑQ‰kœÑQ‰kœÑUM4l4'…¯Œ_<'…¯Œ_¬ÑQ‰k¬ÑUM4l¬Ñ!Qq‰¬Ñ=QŠD'…¯Œ_´ÑQ‰k´ÑUM4lL'…¯Œ_T'…¯Œ_¼ÇQ‰k¼ÇUM4l¼Ç!Qq‰¼Ç=QмÇGQa³\'…¯Œ_|ÑQ‰k|ÑUM4l|Ñ!Qq‰|Ñ=QмÑUM4l¼ÑQ‰kÄÑUM4lÄÑQ‰kÌÑ…¯MHÔÑ…¯Ä_d'…¯Œ_LÑ…¯Ä_l'…¯Œ_ÜÑ…¯Ä_t'…¯Œ_|'…¯Œ_äÑQ‰k„'…¯Œ_ÌÑQ‰kÌÑUM4lÌÑ!Qq‰ÌÑ=QŠÌÑGQa³ÌÑQQf³Œ'…¯Œ_”'…¯Œ_ôÑbc”{üÑyc‰käÑUM4lÒUM4l ÒQ‰kÒ!Qq‰ÒGQa³Ò=QŠœ'…¯Œ_¤'…¯Œ_Ì›bc”{Òyc‰k¼›UM4lÒ…¯Ä_¬'…¯Œ_$ÒQ‰k$ÒUM4l,Òh l|´'…¯Œ_¼'…¯Œ_Ä'…¯Œ_Ì'…¯Œ_Ô'…¯Œ_Ü'…¯Œ_ä'…¯Œ_ì'…¯Œ_”È…¯Ä_ŒÈ…¯îáô'…¯Œ_4ÒQ‰k4ÒUM4l<Ò…¯Ä_ü'…¯Œ_(…¯Œ_Ôœ½æb (…¯Œ_(…¯Œ_(…¯Œ_$(…¯Œ_,(…¯Œ_DÒëÂDÒaZÔ¡¼ÉUM4lLÒC±ç_TÒQ‰kTÒUM4lTÒ…¯Ä_4(…¯Œ_<(…¯Œ_D(…¯Œ_L(…¯Œ_T(…¯Œ_\(…¯Œ_d(…¯Œ_\Ò5 ¬†üƒ²c„{üƒåc‰kl(…¯Œ_t(…¯Œ_|(…¯Œ_„(…¯Œ_Œ(…¯Œ_”(…¯Œ_œ(…¯Œ_¤(…¯Œ_dÒh l|¬(…¯Œ_´(…¯Œ_dÊ…¯˜‰¼(…¯Œ_Ä(…¯Œ_Ì(…¯Œ_Ô(…¯Œ_Ü(…¯Œ_lÒ…¯˜‰ä(…¯Œ_ì(…¯Œ_tÒÁMáltÒcJzô(…¯Œ_|ÒÁMálü(…¯Œ_,ÄQ‰k,Ä!Qq‰„Ò…¯¸)…¯Œ_ )…¯Œ_)…¯Œ_)…¯Œ_lÒQ‰klÒUM4llÒ!Qq‰$)…¯Œ_„ÒQ‰k„ÒUM4l„Ò!Qq‰„Ò=QŠ„ÒGQa³,)…¯Œ_4)…¯Œ_TÊÁMál<)…¯Œ_D)…¯Œ_Ëbc”{ŒÒyc‰k\ËÙ9ßkL)…¯Œ_T)…¯Œ_\)…¯Œ_d)…¯Œ_l)…¯Œ_t)…¯Œ_|)…¯Œ_ÜËp5„)…¯Œ_”Ò…¯GŠŒ)…¯Œ_”ÒQ‰k”ÒUM4l”Ò!Qq‰”Ò=QŠ”)…¯Œ_|ËœP¨Àœ)…¯Œ_œÒÇPS°¤)…¯Œ_œÒÁP°¬)…¯Œ_œÒœPüðœÒ¢P°´)…¯Œ_¼)…¯Œ_Ä)…¯Œ_Ì)…¯Œ_Ô)…¯Œ_Ü)…¯Œ_|˨P†_|Ë¢P¬†ä)…¯Œ_¤Ò…¯Ä_ì)…¯Œ_„Ë¢P‘ñ„˨P*„ËœPÐô)…¯Œ_¬Ò…¯Ä_´Ò…¯Ä_ü)…¯Œ_*…¯Œ_ *…¯Œ_*…¯Œ_¼Ò¢P0´¼Ò¨P*¼ÒœP]‚ÄÒ…¯Ä_ÄÒUM4lÄÒQ‰k*…¯Œ_$*…¯Œ_,*…¯Œ_4*…¯Œ_ìËÐc?|ìËcÄ_<*…¯Œ_D*…¯Œ_L*…¯Œ_T*…¯Œ_L*œ½æb\*…¯Œ_d*…¯Œ_l*…¯Œ_t*…¯Œ_|*…¯Œ_\Ê¢P*ÌÒ…¯˜‰ÌÒQ‰kÌÒUM4lÌÒ!Qq‰ü²…¯GŠ„*…¯Œ_Œ*…¯Œ_dÌUM4l”*…¯Œ_œ*…¯Œ_¤*…¯Œ_¬*…¯Œ_ÔÒ…¯«¹´*…¯Œ_äÒ~~½§äÒUj¬†äÒ6—+äÒ;cÄäÒÀÕá¹ìÒQ‰kìÒUM4lìÒ…¯Ä_¼*…¯Œ_ôÒ…¯òºüÒUj¬†üÒ6—+üÒ•¿»Ä*…¯Œ_Ó¹K‰k Ó…¯Ä_ ÓUM4l ÓQ‰kÌ*…¯Œ_Ô*…¯Œ_̬÷cEÜ*…¯Œ_ä*…¯Œ_ì*…¯Œ_ô*…¯Œ_ü*…¯Œ_+…¯Œ_ +…¯Œ_+…¯Œ_4ÍÐc?|4ÍqPæb| ;ÈÀAÁc×À+…¯Œ_Ó¹K‰k$+…¯Œ_̬×h€,+…¯Œ_4+…¯Œ_<+…¯Œ_D+…¯Œ_L+…¯Œ_T+…¯Œ_Ó…¯Ä_\+…¯Œ_d+…¯Œ_lÍQ‰klÍ!Qq‰lÍGQa³l+…¯Œ_t+…¯Œ_|+…¯Œ_„+…¯Œ_Œ+…¯Œ_”+…¯Œ_œ+…¯Œ_$Ó…¯Ä_¤+…¯Œ_,Ó¤€Å,Ócb,ÓM‰_,Ó™;Àx4Óœ½æb<Ó¤€Å<Ócb<Ópuö˜,Ó…¯•Ŭ+…¯Œ_´+…¯Œ_¼+…¯Œ_Ä+…¯Œ_Ì+…¯Œ_4’…¯Ä_DÓ…¯˜‰LÓÁMálLÓcJzÔ+…¯Œ_TÓh l|Ü+…¯Œ_”Ì…¯Ä_ŒÌh l|ä+…¯Œ_\Óýõ|\Óšœ–ÇdÓQ‰kdÓUM4ldÓ!Qq‰ì+…¯Œ_ô+…¯Œ_ü+…¯Œ_DÓQ‰kDÓUM4lDÓ!Qq‰,…¯Œ_tÓ…¯ŽL|Óœ½æb„Ó…¯ŽLŒÓœ½æb ,…¯Œ_”ÓQ‰k”ÓUM4lœÓ>ò),…¯Œ_,…¯Œ_<”¶M×l$,…¯Œ_¤Ó=QŠœÍQ‰k,,…¯Œ_4,…¯Œ_<,…¯Œ_¬ÓQ‰k¬ÓUM4l”Ó…¯Ä_´Ó>ò)D,…¯Œ_L,…¯Œ_¬Ó…¯Ä_¼Ó>ò)T,…¯Œ_ÜÁUM4l\,…¯Œ_d,…¯Œ_ ÀcJzl,…¯Œ_ÄÓQ‰kÄÓUM4lÄÓ!Qq‰ÌÓQ‰kÌÓ!Qq‰4ºcJzt,…¯Œ_ÔÓQ‰kÔÓUM4lÔÓ!Qq‰ÔÓ=QŠÜÓ!Qq‰ÜÓUM4lÜÓQ‰käÓUM4läÓ!Qq‰äÓQ‰k|ÌUM4l|ÌQ‰kÌÉÁMálÌÉcJz|,…¯Œ_„,…¯Œ_ÔÍQ‰kÔÍUM4lÔÍ!Qq‰ìÓcJzŒ,…¯Œ_ôÓ…¯˜‰üÓ>ò)4¦åc‰k\,œ½æb”,…¯Œ_ÌÍQ‰kÌÍUM4lœ,…¯Œ_¤,…¯Œ_¬,…¯Œ_ôÓQ‰kôÓUM4lôÓ!Qq‰ÔÓ…¯GŠÔ>ò)´,…¯Œ_ìÓÁMál¼,…¯Œ_ÌÓ…¯˜‰ÄÓ…¯˜‰ Ô>ò)Ä,…¯Œ_Ì,…¯Œ_$«Q‰k$«UM4l$«!Qq‰üœ½æbÔ,…¯Œ_Ü,…¯Œ_Ô[Y'Üä,…¯Œ_ì,…¯Œ_ô,…¯Œ_dÌQ‰kü,…¯Œ_-…¯Œ_ÔUM4lÔQ‰kd«…¯˜‰$Ô>ò) -…¯Œ_-…¯Œ_-…¯Œ_$-…¯Œ_,-…¯Œ_l«…¯˜‰,Ô>ò)4-…¯Œ_4ÔZOÀx\Níh¬ó<Ô…¯Ä_öM×l<ÔQ‰k<ÔUM4lDÔ…¯˜‰LÔ…¯yTÔUM4l\ÔÁMál\ÔcJzdÔh l|lÔ¹K‰ktÔ…¯Ä_|Ôh l|„ÔÁMálÔœÁMálÔœcJzŒÔÁMálŒÔcJz”ÔUM4l”ÔQ‰kœÔcJz¤ÔcJz”Ô…¯Ä_œÔÁMál¤ÔÁMál¬ÔUM4l¬ÔQ‰kDÔUM4lDÔ!Qq‰DÔQ‰kÄÔQ‰kÄÔ=QŠÄÔUM4lÄÔ!Qq‰¼ÍQ‰k¼ÍUM4läÓ…¯˜‰ÌÔUM4lÌÔQ‰kÔÔ…¯˜‰ÜÔÁMálÜÔcJzÌÔ…¯Ä_äÔ²c„{ìÔUM4lìÔQ‰k<-…¯Œ_D-…¯Œ_üÔsbÀxœ½æbL-…¯Œ_T-…¯Œ_Õh l|\-…¯Œ_ Õh l|d-…¯Œ_Õ…¯˜‰Õh l|l-…¯Œ_$Õh l|t-…¯Œ_,Õ…¯Ä_4Õh l||-…¯Œ_„-…¯Œ_Œ-…¯Œ_|0œ½æb<—h l|”-…¯Œ_<Õh l|œ-…¯Œ_¤-…¯Œ_¬-…¯Œ_DÕQ‰kDÕUM4l´-…¯Œ_LÕQ‰kLÕUM4l¼-…¯Œ_Ä-…¯Œ_Ì-…¯Œ_Ô-…¯Œ_Ü-…¯Œ_TÕh l|ä-…¯Œ_ì-…¯Œ_ô-…¯Œ_ü-…¯Œ_ÔÔQ‰kÔÔUM4lÔÔ!Qq‰\Õbc”{dÕyc‰klÕ…¯¸lÕ=QŠlÕGQa³lÕ!Qq‰lÕQ‰klÕUM4l̽²c„{tÕ…¯Ä_|Õh l|„Õ!iÂ\ÂUM4l„Õ…¯¿¾|’ÁMál|Õ¹K‰ktÕUM4lŒÕÁMál”Õ…¯˜‰œÕh l|œÕ¹K‰k”ÕQ‰k”Õ!Qq‰”ÕUM4l¤Õ…¯¸¬Õh l|’=n/‹d.œ½æb’×m¼ˆ¼ÕanˆˆÄÕ¹K‰kÌÕ…¯Ä_ÔÕ…¯yÜÕ…¯yÌÕUM4lÌÕQ‰k¬©UM4l¬©Q‰k’ mÓl¼Á²c„{¤©cÄ_¬Õ¹K‰k¤ÕQ‰k¤ÕUM4l¤ÕGQa³¤Õ!Qq‰¤Õ=QЬ.œ½æb|’åc‰käÕUM4läÕQ‰k|’cJzìÕ…¯˜‰tÕQ‰kŒÕcJzôÕ²c„{ì¶cJzüÕ²c„{üÕåc‰kÕUM4lÕ!Qq‰ìÕQ‰kìÕ!Qq‰ìÕUM4lÖ…¯˜‰ Ö…¯Ä_ÖcJzÖ…¯ÓDÖ¹ôñD$Ö…¯Ä_$ÖQ‰k$ÖUM4l,ÖUM4l,ÖQ‰k4ÖUM4l4ÖQ‰kÄÔ…¯GŠ.…¯Œ_ .…¯Œ_.…¯Œ_.…¯Œ_$.…¯Œ_ ˜UM4l,.…¯Œ_dÆqPæb<Õ¹K‰k4.…¯Œ_<.…¯Œ_D.…¯Œ_L.…¯Œ_T.…¯Œ_\.…¯Œ_ÜÕ÷c?|ÜÕ"cÄ_ÔÕ÷c?|ÔÕ"cÄ_d.…¯Œ_<Öh l|l.…¯Œ_t.…¯Œ_DÖ²c„{DÖåc‰k|.…¯Œ_LÖQ‰kLÖUM4l„.…¯Œ_Œ.…¯Œ_ÕQ‰k”.…¯Œ_œ.…¯Œ_¤.…¯Œ_TÖQ‰kDÖÁMál\Ö…¯Ä_\ÖQ‰k\ÖUM4ldÖbc”{lÖyc‰kLÖ…¯Ä_¬.…¯Œ_´.…¯Œ_¼.…¯Œ_Ä.…¯Œ_Ì.…¯Œ_Ô.…¯Œ_tÖbc”{|Öyc‰k,ÕQ‰k,ÕUM4lÜ.…¯Œ_ä.…¯Œ_ì.…¯Œ_ÖÁMálô.…¯Œ_ü.…¯Œ_ À¬Š‰k/…¯Œ_ ÖQ‰k ÖUM4l /…¯Œ_/…¯Œ_/…¯Œ_$/…¯Œ_,/…¯Œ_4/…¯Œ_ Ì䟖´´ä…¯~” Ää…¯ð” 䌬j• $8…¯Œ_ÔäǢ㓠Üä¢P‘ñÜä¨P*ääǢ㓠Ô䅯Ǖ ¤äÇPS°,8…¯Œ_ìäǢ㓠ìäµ ¾ìäUj¬†ôä¢P0´ôä¨P*üä…¯Ä_üäQ‰küäUM4låÇ¢ã“ åµ ¾åUj¬†奬Qøìä…¯)– 48…¯Œ_ 墆_ 寢;— åǢ㓠åÒ¢VR åá > 埖´ åµ ¾ åUj¬† 帬üð åÔ¾ÂN åͬ¨À 奬Qøä䅯Ǖ äÇP`øå…¯è– 墆_寢;— åǢ㓠åÒ¢VRåá > 埖´åµ ¾åUj¬†帬üðåÔ¾ÂNåͬ¨À奬QøÌä…¯9• äÎðø 兯ŗ 墆_寢;— åǢ㓠åÒ¢VRåá > 埖´åµ ¾åUj¬†帬üðåÔ¾ÂNåͬ¨À奬Qøœä…¯” 兯ŗ $墆_$墆_$寢;— $庢;— $åǢ㓠$åÒ¢VR$åá > $埖´$åµ ¾$åUj¬†$帬üð$åÙ¬üð$å,îJÄ$åÔ¾ÂN$åͬ¨À$åî¬JÄ$奬Qøå…¯Å— <8…¯Œ_,åóŽ˼,åµ ¾,åUj¬†4åóŽ˼4åµ ¾4åUj¬†ä­í˜ ä)¥ßkä¢PJÄä¨PJÄ䃔Bø<å²c„{Dåý9> ä=¤×lD8…¯Œ_LåœP]‚L8…¯Œ_Tå…¯Œ_T8…¯Œ_\Ë*­n™ \8…¯Œ_d8…¯Œ_l8…¯Œ_t8…¯Œ_\åçŽZš \SC±ç_|8…¯Œ_„8…¯Œ_Œ8…¯Œ_”8…¯Œ_!?­•v¤ãUM4lœ8…¯Œ_dåh l|¤8…¯Œ_¬8…¯Œ_´8…¯Œ_¼8…¯Œ_lå¢PNvtå…¯Ä_|åh l|Ä8…¯Œ_Ì8…¯Œ_Ìã†O×l„åqPq‰Ô8…¯Œ_Ü8…¯Œ_Œåðå·1”圽æbŒåræ÷1œåœ½æb¤åQ‰k¤åUM4l¬åÁMál´åC±ç_¼åC±ç_Ä圽æb䜽æbÌåcJzÜå…¯¸äåÁMáläåcJzŸ®u¥ ª®¥ µ®®¥ À®Â¥ ʮ֥ Ö®ê¥ â®¦ ‰&¯Ȧ Ì¥h l|ôå²c„{ôååc‰küå…¯Ä_ôåcJzôåÁMálæh l|¤Á¶M×lÑUM4lÑQ‰kÑ=QŠÑGQa³Ñ!Qq‰¤Æ¹K‰kœÆQ‰kœÆUM4l̽åc‰k æC±ç_æQ‰kæUM4læQ‰kæ…¯Ä_$æ²c„{$æåc‰k,æ¹K‰k,æh l|4æcJz4æÁMál<æh l|DæØbyDæX‘‰k<æ¹K‰kLæQ‰kLæUM4lTæQ‰kTæUM4l\æQ‰k¬9œ½æbdæcJzlæ²c„{læåc‰kTæ…¯Ä_tæÁMálüåUM4l´9œ½æbæ¹K‰ktæ²c„{tæåc‰k|æ…¯A¸ „æ…¯¦¹ Œæ…¯&º $æÁMál$æcJz”æC±ç_œæœ½æb¤æ…¯μ ¬æQ‰k¬æUM4l¬æ…¯Ä_´æÁMál´æcJzÄæC±ç_Ìæ…¯yÌæX‘‰kÌæØbyDæ…¯yÔæ…¯Ä_ÔæUM4lÔæQ‰kdæÁMálTÄ…¯Ä_äæUM4läæQ‰kìæ…¯ŽLô朽æbüæ…¯ŽL眽æb ç…¯ŽL眽æbç…¯ŽL$眽æb,ç…¯ŽL4眽æb<ç…¯ŽLD眽æbLç…¯ŽLT眽æbô8…¯Œ_ü8…¯Œ_9…¯Œ_ÜåÜc?| 9…¯Œ_9…¯Œ_9…¯Œ_$9…¯Œ_,9…¯Œ_49…¯Œ_<9…¯Œ_D9…¯Œ_L9…¯Œ_m»`Ú T9…¯Œ_\çh l|\9…¯Œ_d眽æbLÝcJzLݲc„{LÝåc‰kd9…¯Œ_l9…¯Œ_lç…¯ŽLt眽æb|ç…¯ŽL„眽æbŒç…¯ŽL”眽æbt9…¯Œ_|9…¯Œ_„9…¯Œ_œçUM4lœç!Qq‰Œ9…¯Œ_”9…¯Œ_œ9…¯Œ_¤ç…¯ŽL¬çœ½æb¤9…¯Œ_¬9…¯Œ_´9…¯Œ_ôÛþchþ¼9…¯Œ_´ç…¯Ä_¼ç¹K‰k¼çh l|Ä9…¯Œ_Ì9…¯Œ_\æ…¯Ä_tæcJzÔ9…¯Œ_Ü9…¯Œ_ä9…¯Œ_ÄçFó“½ Äç•qÀxÄçͲ£½ Äçæ²‰á <:œ½æb”kC±ç_ì9…¯Œ_Ì矖´Ìç «¬†Ìç‘°'3Ìç³JÄÌçUj¬†Ìç-‘‰_Ì糉_ô9…¯Œ_ü9…¯Œ_Ô矖´Ôç «¬†Ôç‘°'3Ôç³JÄ:…¯Œ_ :…¯Œ_:…¯Œ_üåQ‰k ѹK‰kÜç…¯™å :…¯Œ_ìç•q0£ ìçFó“½ ìç•¿æ $:…¯Œ_ô矖´ôç «¬†ôçʳ·¡ ôç¦mJÄôç •‹x,:…¯Œ_4:…¯Œ_<:…¯Œ_D:…¯Œ_L:…¯Œ_ü眽æbT:…¯Œ_¤å…¯Ä_\:…¯Œ_d:…¯Œ_è…¯ë è…¯ë èQ‰kèUM4lè!Qq‰è…¯˜‰è…¯¸ì¾²c„{·!Qq‰è!Qq‰èGQa³èQ‰kè=QŠèUM4lì°…¯MH$èh l|$è¹K‰k,è…¯Ä_,èQ‰k,èUM4l4è…¯¤ô <è…¯Œ_Dè…¯Œ_Lè…¯Œ_Tè…¯Œ_\è…¯Œ_dè…¯Œ_ÄâнÞö ¤ÌUM4l¤ÌQ‰k¬Ì¹K‰k„Ì…¯Ä_lèC±ç_tèanˆˆtè×m¼ˆ|èþb&z<ÂQ‰k<ÂUM4l„èþb&zŒè…¯Ä_ŒèQ‰kŒèUM4ltè mÓlœèC±ÙadÒ¹K‰k<®cJz¤è…¯ŽL¬èœ½æb´èõœ‰_´èŸ–´´èµÀx´èUj¬†¼èõœ‰_¼èŸ–´¼èµÀx¼èUj¬†|:…¯Œ_„:…¯Œ_Œ:…¯Œ_Äè…¯ŽLÌ蜽æbÔè…¯ŽL\=œ½æbÜè…¯ŽL¤=œ½æbäè…¯ŽLì蜽æbôè…¯^ ôèœP¨Àôè¢P¬†ôè¨P†_ôèÁPÀxüè…¯ŽL霽æb é…¯ŽL霽æbÜä…¯3 ÜäœPÐé…¯ŽL$霽æb,é…¯ŽL4霽æbôä…¯€ ôäœP]‚<é…¯ŽLD霽æbLå…¯÷ Lå¢P*Lé…¯ŽLD8œ½æb¤ä…¯k ¤ä¨P†ñ¤äÁP°Té…¯ŽL\霽æbdé¶M×lä…¯¤ äÁPJÄäÍP¨Àäw”Qøä}”ÔðäÇBøäÀüðä¹üðlé…¯ŽLt霽æb|é¶M×l„é…¯Œ_Œé…¯Œ_”é…¯Œ_œé¶M×l¤é…¯Œ_¬é…¯Œ_´ébc”{¼éyc‰k¤:…¯Œ_¬:…¯Œ_´:…¯Œ_Äéh l|¼:…¯Œ_Ä:…¯Œ_Ì:…¯Œ_ÌéÖ§bÔ:…¯Œ_ÔéšÉBøÌé…¯ŽLÜ:…¯Œ_ä:…¯Œ_Üé¹i‘ñÜéÖ§bÜäöMùäéh l|ì:…¯Œ_ìéšÉBøÜé…¯ª ôéªÉüðô:…¯Œ_ü鿈¡²üéí½7 üéUj¬†üéóŽ˼ü韖´üéµ ¾üé¹É¨ÀêC±ç_ôä2Å— êÞÇ — êçˆåµü:…¯Œ_꿈¡²ê6 †_êí½7 êUj¬†êóŽ˼êÔ¾ÂN꾆_꾆_Ꟗ´êµ ¾êͬ¨ÀêÇɰêšÉBøÔé…¯e êUM4lêQ‰k|ãÁMál$ê…¯˜‰$ê!Qq‰$êUM4l$êQ‰k,êUM4l,êQ‰ktËh l|4ê…¯˜‰¬äÁMál<ê…¯Ä_4êQ‰k<êQ‰k4êUM4l<êUM4l4ê!Qq‰ìé…¯e ôé…¯* <åÁMálDê…¯Ä_DêUM4lDêQ‰küé…¯^ LêUM4lLêQ‰kTê…¯Œ_<å¶M×l¤äéŨ \ê…¯MH;…¯Œ_d꿈¡²dê6 †_dêí½7 dêUj¬†dêóŽ˼dêÔ¾ÂNd꾆_d꾆_dꟖ´dêµ ¾dêͬ¨ÀlêQ‰klêUM4lê…¯a ;…¯Œ_\êQ‰k\êUM4l\ê!Qq‰\ê=QŠ\êGQa³\êQQf³;…¯Œ_;…¯Œ_$;…¯Œ_,;…¯Œ_4;…¯Œ_<;…¯Œ_D;…¯Œ_tê…c‰ktê¹K4lL;…¯Œ_T;…¯Œ_|ê mÓl|êàm ‰„êUM4l„êQ‰kŒêanˆˆ”êanˆˆ”êTn‹œê¹K‰k¤ê…¯Ä_¬ê¹K‰k´ê×m¼ˆ¼ê¹K‰kÄêàm ‰ÌêUM4lÌêQ‰kÔê¹K‰kÜê¹K‰käêîmµ‰ìêQ‰kìê!Qq‰ìêUM4lôê=n/‹üê¹K‰këùmkŠ ëQ‰k ë=QŠ ë!Qq‰ ëUM4lë¹K‰këàm ‰$ëQ‰k$ëUM4l,ëQ‰k4ë¹K‰k<ëîmµ‰DëQ‰kDëUM4lDë!Qq‰Lë¹K‰kTëàm ‰\ëUM4l\ëQ‰kdëanˆˆlë¹K‰ktëàm ‰|ëQ‰k|ëUM4l„ë=n/‹”ë¹K‰kœë¹K‰k¤ë¹K‰k,ëUM4l¬ë¹K‰k´ëîmµ‰¼ëUM4l¼ëQ‰k¼ë!Qq‰Äë¹K‰kÌëàm ‰ÔëUM4lÔëQ‰k”ê×m¼ˆ”ê mÓlÜëàm ‰äëQ‰käëUM4lìë×m¼ˆôëanˆˆôë×m¼ˆ,ë…¯Ä_üëcÄ_üë÷c?|ìîmµ‰ ìQ‰k ìUM4l ì!Qq‰ìTn‹ì¹K‰kœâanˆˆœâ=n/‹”âh l|üëÐc?|ôë$m¤ˆüëqPæb¤êUM4l$ì¶M×lüë…¯mytè=n/‹,ì…¯Ä_,ìQ‰k,ìUM4ltènኤêQ‰kìÃ…¯˜‰\;…¯Œ_d;…¯Œ_l;…¯Œ_yÍêkyÍÊ8 yÍêkyÍêk4ìbc”{<ìyc‰kDìUM4lDìQ‰kt;…¯Œ_ySÍþ9 |;…¯Œ_„;…¯Œ_Œ;…¯Œ_\ìbc”{dìyc‰klìQ‰klìUM4ltì…¯Ä_”;MM”;ÈOUœ;…¯Œ_tìQ‰ktìUM4lüë"cÄ_¤;…¯Œ_¬;…¯Œ_´;…¯Œ_¼;…¯Œ_|ì¹K‰k|ìh l|Ä;…¯Œ_„ì¹K‰k„ìh l|Ì;…¯Œ_Œì¹K‰kŒìh l|Ô;…¯Œ_”ì¹K‰k”ìh l|Ü;…¯Œ_œì¹K‰kœìh l|ä;…¯Œ_¤ì¹K‰k¤ìh l|ì;…¯Œ_¬ì¹K‰k¬ìh l|ô;…¯Œ_´ì¹K‰k´ìh l|ü;…¯Œ_¼ì¹K‰k¼ìh l|<…¯Œ_Äì¹K‰kÄìh l| <…¯Œ_Ìì¹K‰kÌìh l|<…¯Œ_Ôì¹K‰kÔìh l|<…¯Œ_Üì¹K‰kÜìh l|$<…¯Œ_äì¹K‰käìh l|,<…¯Œ_ìì¹K‰kììh l|4<…¯Œ_ôì¹K‰kôìh l|<<…¯Œ_üìQ‰küìUM4lüì!Qq‰üì=QŠüìGQa³D<…¯Œ_L<…¯Œ_T<…¯Œ_\<…¯Œ_d<…¯Œ_l<…¯Œ_t<…¯Œ_|<…¯Œ_„<…¯Œ_Œ<…¯Œ_”<…¯Œ_œ<…¯Œ_¤<…¯Œ_¬<…¯Œ_´<…¯Œ_¼<…¯Œ_íbc”{ íyc‰kÄ<…¯Œ_Ì<…¯Œ_Ô<…¯Œ_Ü<…¯Œ_ä<…¯Œ_ì<…¯Œ_ô<…¯Œ_ü<…¯Œ_=…¯Œ_ =…¯Œ_=…¯Œ_=…¯Œ_Lìbc”{íyc‰k$=…¯Œ_íQ‰kíUM4l ÒUM4lt’…¯Ä_T”cJz,’ÁMál,’cJz Ò…¯Ä_”¶=QŠ$í…¯GŠ$í=QŠ$íUM4l$íQ‰k$í!Qq‰\±åc‰kÒ…¯¸äÑ…¯Ä_¬±¶M×l,í…¯Þ4í²c„{4íåc‰kìÑbc”{<íyc‰kDíÐcC”Líbc”{Tíyc‰k\íUM4l\í!Qq‰\í=QŠ\íQ‰kDÖcJzdíbc”{líyc‰ktíUM4ltíQ‰k,=…¯Œ_4=…¯Œ_|íQ‰k|íUM4l|í…¯Ä_<=…¯Œ_„í¬ÎnSŒíQ‰kŒíUM4lŒí…¯Ä_D=…¯Œ_L=…¯Œ_L=œ½æbT=…¯Œ_\=…¯Œ_d=…¯Œ_l=…¯Œ_”í²c„{t=…¯Œ_œí…¯GŠ|=…¯Œ_œíQ‰kœíUM4lœí!Qq‰œí=QŠ„=…¯Œ_\í…¯GŠŒ=…¯Œ_¤í…¯Ä_”=…¯Œ_œ=…¯Œ_¬íbc”{´íyc‰k¤=…¯Œ_¬=…¯Œ_Dí¸ˆ~D4íÁMálÄíbc”{Ìíyc‰k´=…¯Œ_¼=…¯Œ_Ä=…¯Œ_Ôí…¯Ä_Ì=…¯Œ_ÔíUM4lÔ=…¯Œ_ÔíQ‰kTœ½æbÜ=…¯Œ_¼íbc”{Üíyc‰k̉åc‰k̉cJzäí¹K‰kìíUM4l>œ½æb>œ½æbô휽æbœÅMùmüíQ‰kî…¯«g æb$>œ½æbî…¯k î…¯k $æb,î…¯ók 4î…¯ók <î…¯k Dî…¯k ŒÕ¶M×l’$m¤ˆä=…¯Œ_ì=…¯Œ_„¿Q‰kô=…¯Œ_LîQ‰kLîUM4lü=…¯Œ_>…¯Œ_ >…¯Œ_>…¯Œ_>…¯Œ_$>…¯Œ_,>…¯Œ_4>…¯Œ_<>…¯Œ_D>…¯Œ_L>…¯Œ_Tî&µ`DTî>ÀxT>…¯Œ_\>…¯Œ_d>…¯Œ_l>…¯Œ_t>…¯Œ_\îüwÖr dæblîüwÖr |>…¯Œ_tîʈ¨²tîüwÖr „>…¯Œ_|îʈ¨²|îüwÖr „îüwÖr ŒîüwÖr Œ>…¯Œ_”>…¯Œ_œ>…¯Œ_¤>…¯Œ_¬>…¯Œ_´>…¯Œ_¼>…¯Œ_”îh l|Ä>…¯Œ_Ì>…¯Œ_Ô>…¯Œ_œîçˆåµœîÞÇ —Ü>…¯Œ_¤î¶M×l¬îUM4l¬îQ‰k´îbc”{¼îyc‰kô¶ÁMálô¶cJzÄî…¯GŠÌîQ‰kÌîUM4lÄîQ‰kÄî!Qq‰ÄîUM4lÄî=QŠÔî…¯˜‰ÜîQ‰kÜîUM4läî²c„{ìî…¯Ä_ôî…¯îáôî=QŠôîAc¯çìîQ‰kôîGQa³ôî!Qq‰ôî ‘œÄôîQ‰kôîUM4lôîQQf³ìîUM4l\±ÁMál\±cJzüî¹K‰küîh l|„×…¯˜‰ïC±h`ÔîQ‰kÔîUM4lÔî!Qq‰ïC±ªbœ¿Q‰kïC±Ùa¤(C±ç_ä>…¯Œ_ì>…¯Œ_ô>…¯Œ_Ü¿h l|ü>…¯Œ_?…¯Œ_ ?…¯Œ_?…¯Œ_?…¯Œ_$?…¯Œ_,?…¯Œ_4?…¯Œ_öZš œô[ö5#œô>öZš œôsbÀx¤ô7ö5#¤ôuö5#¤ô>öZš ¤ôœPÀx¬ô7ö5#¬ô[ö5#¬ôuö5#¬ô>öZš ¤ô…¯¦* ´ô7ö5#´ô[ö5#´ôˆö5#´ô>öZš ¼ôuö5#ŒD…¯Œ_Äô’h5#Ìôuö5#ÌôaZš Ìôlö˜Ôôœ½æbÜôuö5#ÜôaZš Ìô…¯+ äô…¯ŽLìôœ½æbôôanˆˆüô¹K‰kõœ½æb õœ½æbõœ½æbõœ½æb$õœ½æb,õœ½æb4õ…¯. <õ…¯_. Dõ…¯†. Lõ²c„{Lõåc‰kTõ¹K‰k\õ…¯S2 dõ¹K‰k”D…¯Œ_œD…¯Œ_ôô$m¤ˆ¤D…¯Œ_¬D…¯Œ_lõŸ–´lõ²òÌ3 lõ Í ´D…¯Œ_tõŸ–´tõ³i/tõ³94 ¼D…¯Œ_|õUj¬†|õ¶p4 |õ Í „õœ½æbÄD…¯Œ_ÌD…¯Œ_ÔD…¯Œ_ÜD…¯Œ_dõh l|ŒõŸ–´ŒõUj¬†Œõ5ß@wŒõÔ¾ÂNŒõ˜ïäD…¯Œ_”õŸ–´”õUj¬†”õ5ß@w”õÔ¾ÂNŒõ…¯É5 ìD…¯Œ_ôD…¯Œ_üD…¯Œ_E…¯Œ_œõh l| E…¯Œ_E…¯Œ_E…¯Œ_¤õUM4l¤õQ‰k¤õ…¯Ä_¬õÐc?|¬õqPæb¬õcÄ_´õC±ç_¼õ…¯Ä_¼õQ‰k¼õUM4ltè­nÝ‹œâ$m¤ˆÄõ¹K‰kìëanˆˆìë$m¤ˆ4œ½æbÔõ…¯A Üõ…¯¹näõbc”{ìõyc‰kôõUM4lôõQ‰kôõ…¯Ä_ÜõÐc?|ÜõqPæbüõÁMálüõcJzÜõcÄ_ö…¯ÚA ö…¯Ä_$ö…¯ÅC ,ö…¯ÅC 4öQ‰k4öUM4lÔÁ…¯1™<ö…¯Ä_Dö…¯Ä_LöÁMálLöcJz¬õ…¯Œ_$E…¯Œ_,E…¯Œ_TöUM4l4E…¯Œ_TöQ‰kT Ì…¯Ä_Äh l|T÷¶M×l\÷²c„{\÷åc‰kd÷…¯Ä_l÷…¯Ä_t÷X‘‰k|÷cJzt÷Øby|÷„Á„{D€UM4l„÷œ½æbŒ÷œ½æb”÷œ½æbœ÷œ½æb\÷„Á„{\÷¬Š‰k¤÷Q‰k¤÷UM4l¤÷…¯Ä_¬÷Q‰k¬÷UM4l¬÷…¯Ä_´÷Q‰k´÷UM4l´÷…¯Ä_‰¥Y ¼÷…¯ŽLÄ÷œ½æbÌ÷…¯ŽL C±ç_Ô÷…¯ŽLÜ÷œ½æbä÷…¯ŽLì÷œ½æbF…¯Œ_Fœ½æb!…¯Œ_F…¯Œ_$F…¯Œ_ô÷…¯Œ_\÷ÁMál€\XOt€ïYštTœ½æbô÷nbyô÷3b×lô÷=b‰k\÷cJzd÷Q‰kd÷UM4l|÷ÁMált÷…¯y,F…¯Œ_l÷Q‰kl÷UM4l4F…¯Œ_º T+RÐ T…¯æ \…¯Œ_ÄM…¯Œ_dsbcÄd&cÀxÌM…¯Œ_lQ‰klUM4ld…¯±æÔM…¯Œ_ÜM…¯Œ_th l|äM…¯Œ_ìMœ½æbìM…¯Œ_ôM…¯Œ_üM…¯Œ_N…¯Œ_ N…¯Œ_N…¯Œ_N…¯Œ_$N…¯Œ_|…¯ŽL„œ½æbŒQ‰kŒUM4lt|Ë œO…¯Œ_¤O…¯Œ_¬O…¯Œ_´O…¯Œ_¼O…¯Œ_ÄO…¯Œ_ÌO…¯Œ_ÔO…¯Œ_ÜO…¯Œ_äO…¯Œ_D¢tpÌ DX}ƒÌ ìO…¯Œ_ôO…¯Œ_üO…¯Œ_P…¯Œ_ P…¯Œ_P…¯Œ_P…¯Œ_$P…¯Œ_,P…¯Œ_4P…¯Œ_ êܹ Y êÜI”‡ ݹ r êܹ { êܹ ž êÜ…¯:†pU²Ý¹ "cêܹ .Ž êܹ 6Ž êܹ AŽ êܹ EŽ êܹ IŽ êܹ PŽ êܹ TŽ êܹ XŽ êܹ _Ž êܹ cŽ êܹ jŽ êܹ qŽ êܹ yŽ êܹ Ž êܹ ‰Ž êܹ ‘Ž êܹ ˜Ž êܹ  Ž êܹ ¨Ž êܹ °Ž êܹ ¸Ž êܹ ÂŽ êܹ ÊŽ êܹ ÒŽ êܹ ÝŽ êܹ éŽ êܹ õŽ êܹ  êܹ êܹ  êܹ $ êܹ 0 êܹ < êܹ H êܹ V êܹ e êܹ t êܹ ƒ êܹ ’ êܹ   êܹ ¯ êܹ ¾ êܹ Í êܹ Ü êܹ à êܹ è êܹ ó êܹ ÷ êܹ þ êܹ  êܹ  êܹ êܹ  êܹ  êܹ $ êܹ É1êܹ ( êܹ , êܹ 0 êܹ 7 êܹ =bêܹ ; êܹ D êܹ H êܹ O êܹ V êÜI”‡ Þ¹ ] êÜI”‡ Þ¹ d êܹ j êܹ q êܹ y êܹ ‚ êܹ ‹ êܹ ” êܹ êܹ ¦ êܹ ¯ êܹ ¸ êܹ Á êܹ Ê êܹ Ô êܹ Ú êܹ á êܹ ç êܹ ï êܹ ø êܹ ‘ êܹ ‘ êܹ ‘ êܹ ‘ êܹ %‘ êܹ /‘ êܹ 5‘ êܤ°Q‰k¹ 9‘ êÜI”‡ 5Þ¹ têܹ @‘ êܹ I‘ êÜ\¹K‰k¹ U‘ êܹ ó´êܹ [‘ êܹ f‘ êܹ l‘ êܹ s‘ êܹ y‘ êܹ ‘ êܹ ˆ‘ êܹ ‘ êܹ •‘ êܹ ›‘ êܹ ¢‘ êܹ ¬‘ êܹ ´‘ êܹ ¾‘ êܹ Ä‘ êܹ Ì‘ êܹ Ò‘ êܹ Ø‘ êܹ Ü‘ êܹ â‘ êܹ ì‘ êܹ ó‘ êܹ ü‘ êܹ ’ êܹ ’ êܹ ’ êܹ $’ êܹ .’ êܹ 8’ êܹ B’ êܹ L’ êܹ V’ êܹ a’ êܹ j’ êܹ t’ êܹ ~’ êܹ ˆ’ êܹ ’’ êܹ œ’ êܹ ¦’ êܹ ±’ êܹ º’ êܹ Â’ êܹ É’ êÜ4·cJz¹ Ð’ êܹ ×’ êܹ Ý’ êܹ æ’ êܹ ñ’ êܹ µêܹ û’ êܹ “ êܹ “ êܹ “ êܹ “ êܹ †êÜdœ½æblœ½æb|…¯ŽL„œ½æbŒ…¯Ä_”œ½æbœœ½æb¤…¯˜‰Ä`œ½æbY°” ‡ãĈ²c„{Yæ”  ä M•  å \•  åY‡• æå¬h l|´…¯Ä_´UM4l´Q‰k¼…¯Ä_aœ½æb1¡– HéÄÁMálÄcJzÌœ½æbÔC±ç_ÜÐc?|ÜqPæbÜcÄ_Ñ …¯ƒ³‘,— ë‘<— ëäÐc?|äcÄ_Ü…¯¹nä…¯¹näžgfì1 …¯úìô…¯Ä_,UM4l,Q‰kü…¯Ä_ þcw|þcw|`…¯Œ_`…¯Œ_aq˜ ×¶$`…¯Œ_4`…¯Œ_<`…¯Œ_D`…¯Œ_L`…¯Œ_L`œ½æbT`…¯Œ_T`œ½æb\`…¯Œ_d`…¯Œ_ …¯Ä_ UM4l Q‰kIš [ól`…¯Œ_¹ š êÜI%š ·ót`…¯Œ_|`…¯Œ_„`…¯Œ_ Q‰k UM4lŒ`…¯Œ_”`…¯Œ_¬`œ½æbœ`…¯Œ_¤`…¯Œ_¬`…¯Œ_ŒQ‰kŒUM4l1K~ Þδ`…¯Œ_ Q‰k UM4l4·åc‰k1Uš Mn1kš Ð1ƒš õAK~ Þμ`…¯Œ_Ä`…¯Œ_¤Q‰k¤UM4l¤!Qq‰Ì`…¯Œ_Ô`…¯Œ_Q K~ ÞÎÜ`…¯Œ_a«š qva·š ¹naK~ ÞÎä`…¯Œ_q Áš  åq Κ  åq «š qvq K~ ÞÎ âš  å ñš  å K~ ÞÎì`…¯Œ_ô`…¯Œ_ü`…¯Œ_a…¯Œ_¼Q‰k¼UM4l a…¯Œ_a…¯Œ_a…¯Œ_$a…¯Œ_,a…¯Œ_4a…¯Œ_tŒ_ ޝ ò*i kàc ‰b½… …¯/+ …¯?+iü¯ F+ skŒ_”‹¹K‰k $QQf³ $ ‘œÄ $Ac¯ç$Q‰k $=QŠ$UM4l $Q‰k $GQa³ $!Qq‰ $UM4l‰f° \¡$²c„{$…¯¸$=QŠ$Q‰k$GQa³$UM4l$!Qq‰Ìa…¯Œ_Ìaœ½æbÔa…¯Œ_Ôaœ½æbÜa…¯Œ_$$X‘‰k,$¹K‰k,$h l|$$Øby4$…¯ŽL4b…¯Œ_}45œ½æbœpœ½æb_œ½æb¼^œ½æb<5h l|D5œ½æbdpœ½æbL5C±ç_T5h l|\5C±ç_d5C±ç_l5œ½æbt5…¯,†|5œ½æb„5œ½æbŒ5œ½æb”5C±h`Ìo…¯Œ_Ôo…¯Œ_ …¯Ä_Üo…¯Œ_äo…¯Œ_ìo…¯Œ_ôo…¯Œ_üo…¯Œ_p…¯Œ_ p…¯Œ_œ5aZe‘p…¯Œ_Ô_œ½æbp…¯Œ_$p…¯Œ_,p…¯Œ_4p…¯Œ_…¯ŽL >œ½æb>…¯ŽL>œ½æb$>…¯ŽL,>œ½æb4>…¯ŽL<>œ½æbD>¹K‰kL>¹K‰kT>qPæb\>qPæbd>bc”{l>yc‰kt>…¯ŽL|>œ½æb„>¹K‰kŒ>…¯ŽL”>œ½æbœ>¹K‰k¬u…¯Œ_$‹cJz´u…¯Œ_¤>…¯ŽL¬>œ½æb´>…¯ŽL¼>œ½æbÄ>…¯ŽLÌ>œ½æbÔ>…¯ŽLÜ>œ½æbä>…¯Œ_ä>ÌO uì>…¯ŽLô>œ½æbä>CVÃä>ÈO×mä>MÜôu…¯Œ_üu…¯Œ_v…¯Œ_ v…¯Œ_¤sœ½æbü>h l|v…¯Œ_v…¯Œ_$v…¯Œ_,v…¯Œ_4v…¯Œ_?Q‰k?UM4l ?qP4l?qP‰k?Mû–ÍÔy…¯Œ_ÔBzP‰ÌÜBzP”ÌäB…¯yìB…¯ZÎôB…¯ŽLüBœ½æbÜy…¯Œ_äBZOÀxìBZO`;CzPºÏ CzPÜÏC>ò)C…¯FÐäy…¯Œ_$C ΈÎ,C…¯Œ_ý…¯y4Cz xÊ 4Cz ‰_4C×ó Uò)G…¯ZÎG…¯5$G…¯Žï,G‡~ `;äyœ½æb4G~ ™Ÿ4G+~ Ðï4G%^d4GtˆÎò)„GZOÀxŒGaZ`;üz…¯Œ_”Gn«™Üy>ò)œGþy úñ¤Gœ½æb¬G…¯Œ_¤ƒÐc?|¤ƒcÄ_´G…¯åÄG…¯Œ_ÌG…¯±<{…¯Œ_ÔGaZÓêÜG…c‰kÜG¹K4läG¿ixÊ ìG…¯Œ_ôG…¯ÛÕ {…¯Œ_üGÆIyiSãÓliŽs…™H…¯=ô H…¯Ä_̽¶M×lÔ&…¯Ä_Hh l|Hœ½æb$HqP4l,HqP‰k1M3¯4H…¯Ä_7QxŽ L7± Hœ êkäN…¯ŽLìNœ½æbôN…¯ŽLüNœ½æbOh l|Q ‘ >7Q&‘ b>Y&‘ s>ù8º€>Qþ< >7Q9‘ b>Qn‘ ãkYy‘ ß> OUM4l OQ‰k± " ?± ÛÓl„|…¯Œ_Oœ½æbOœ½æb$O…¯Œ_Œ|…¯Œ_”|…¯Œ_¼}Q‰k¼}UM4lœ|…¯Œ_Ô}Q‰kÔ}UM4l¤|…¯Œ_ô}Q‰kô}UM4l¬|…¯Œ_~Q‰k~UM4l´|…¯Œ_´|œ½æb¼|…¯Œ_,~Q‰k,~UM4lÄ|…¯Œ_Ä|œ½æbÌ|…¯Œ_Ì|œ½æbÔ|…¯Œ_D~Q‰kD~UM4lÜ|…¯Œ_\~Q‰k\~UM4lä|…¯Œ_ä|œ½æbì|…¯Œ_t~Q‰kt~UM4lô|…¯Œ_ô|œ½æbü|…¯Œ_ü|œ½æb}…¯Œ_Œ~Q‰kŒ~UM4l }…¯Œ_ }œ½æb}…¯Œ_}œ½æb}…¯Œ_}œ½æb$}…¯Œ_¤~Q‰k¤~UM4l,}…¯Œ_,}œ½æb4}…¯Œ_¼~Q‰k¼~UM4l<}…¯Œ_<}œ½æbD}…¯Œ_D}œ½æbL}…¯Œ_Ô~Q‰kÔ~UM4lT}…¯Œ_T}œ½æb\}…¯Œ_ì~Q‰kì~UM4ld}…¯Œ_Q‰kUM4ll}…¯Œ_l}œ½æbt}…¯Œ_Q‰kUM4l|}…¯Œ_|}œ½æb„}…¯Œ_4Q‰k4UM4lŒ}…¯Œ_LQ‰kLUM4l”}…¯Œ_dQ‰kdUM4lœ}…¯Œ_|Q‰k|UM4l¤}…¯Œ_”Q‰k”UM4l¬}…¯Œ_,Obc”{4Oyc‰kCnœk Hn8Cn<œk@Hn Cn¤œkÄCnÈœkCnœk”Cn˜œkÔCnØCnÜœkàHnä žè%žì*žð/žô4žø9žü>žCnœk Hn%žHžMžRž Wž(Cn,Cn0œk4Hn8 ž<%ž@*žDažH4žL9žP>žxœk| ž€%ž„*žˆažŒ/ž4ž”9ž˜>žœÞ Èž¤Íž¨Òž¬Cn´Cn¸œkCnœkHn ž %ž$*ž(až,/ž04žˆCnŒœkHn¤Cn¨œk¬Hn°Cn´œk¸HnäCnèœkìHnð ž Cn$œk(HnLCnPœkTHnX žÐCnÔœkØHnÜ žðCnôœkCnœk Hn$ žHCnLœk`CndœkhHnl žCnœkHn4Cn8œk<Hn@%žD4žHMžCnœktCnxœk|Hn€ ž„%žˆ*žŒažh#Cnl#œkŒ#Cn#œk”#Hn˜# žœ#%ž #*ž¤#ažÜ#Cnà#œkä#Hnè# žp$Cnt$œkx$Hn&Cn &œk$&Hn`&Cnd&œkh&Hnl& žp&%ž'Cn'œk,'Cn0'œkd'Cnh'œkl'Hnp' žt'%žx'*ž˜'Cnœ'œk 'Hnè'Cnì'œk(Cn(œk (Hn( ž”(Cn˜(œkœ(Hn ( ž|.Cn€.œk„.Hnˆ. žd/Cnh/œkl/Hnp/ ž€/Cn„/œkŒ/Cn/œk”/Hn@4CnD4œk°7Cn´7œk¸7Hnt:Cnx:œk€:Cn„:œkˆ:HnŒ: ž:%ž”:*ž˜:ažœ:/ž :4ž¤:9ž¨:>ž¬:Þ°:Èž´:Íž@;CnD;œkØ;CnÜ;œk <Ù ¤<Cn¨<Mž¬<Rž°<Þ ´<Wž=Cn=œkl=Cnp=œkœ=Cn =œk°=Cn´=œkˆ>CnŒ>œk>Hn”> ž˜>%žœ>*ž >až¤>/ž$?Cn(?œk8?CnžTŒÃžXŒÈž\ŒÍž`ŒÒždŒ hŒMžlŒ  pŒ tŒ xŒ |Œ! €Œ& lCnpœkœCn œkàCnäœk¨ŽCn¬ŽœkÀŽCnÄŽœkÌŽCnÐŽœkôŽCnøŽœkÈCnÌœkÐHnÔ žØ%žðCnôœkøHnü ž‘%ž„’Cnˆ’œkä“Cn蓜kì“HnИCnÔ˜œk<šCn@šœkDšHnHš žlšCnpšœkl¨Cnp¨œkt¨Hnx¨ ž|¨%ž„¨Cnˆ¨œkŒ¨Hn¨ ž”¨%ž˜¨*žœ¨až ¨/ž¤¨4ž¨¨9ž¬¨>ž°¨Ãž´¨Èž¸¨ÍžÀ©CnÄ©œkÈ©HnÌ© žЩ%žÔ©*žØ©ažÜ©/ž`ªCndªœk|®Cn€®œk”¯Cn˜¯œkœ¯Hn ¯ ž(°Cn,°œk0°Hnø¾Cnü¾œk°¿Cn´¿œk¸¿Hn¼¿ žÀ¿%žÄ¿*žä¿Cn远kì¿HnÀCnÀœk|ÀCn€Àœk„ÀHnˆÀ žÔÀCnØÀœk,ÁCn0Áœk4ÁHn¨ÁCn¬Áœk°ÁHndÃCnhÜklÃHnpà žpÄCntÄœkxÄHn|Ä ž€Ä%žDÆCnHÆœk°ÊCn´Êœk¸ÊHn¼Ê žÀÊ%žÄÊ*žÈÊažÌÊ/žÐÊ4žÔÊ9žØÊ>žÜÊÞàÊÈžäÊÍžèÊÒžìÊ ðÊMžôÊ  øÊ üÊ Ë Ë! Ë&  ËáZ ËæZ ËëZ ËðZ (ÌCn,Ìœk0ÌHn@ÌCnDÌœküÒCnÓœkÓHnüÓCnÔœkÔHnÄÖCnÈÖœkÌÖHnXÚCn\Úœk`ÚHnèCn”èœk˜èHnœè ž¤èCn¨èœkÄèCnÈèœkØèCnÜèœkôèCnøèœküèHné žéCnéœk4éCn8éœk<éHn@é žDé%ž€éCn„éœkˆéHnôéCnøéœk<êCn@êœkDêHnHê žLê%žPê*žTêažXê/ž\ê4žðêCnôêœkøêHnüê žë%žˆëCnŒëœkëHn”ë žìCnìœkìHnì ž ì%ž$ì*ž(ìaž,ì/ž0ì4ž4ì9ž8ì>ž<ìÞ@ìÈžììCnðìœkôìHnøì žüì%žäíCnèíœkìíHnðí žôí%žøí*žüíažPîCnTîœkXîHn\î ž`î%žÈîCnÌîœkìîCnðîœk8ïCn<ïœk@ïHnDï žHï%žLï*žPïažTï/žXï4ž\ï9ž`ï>ždïÞhïÈžlïÍžpïÒžtï xïMž|ï  ðCnðœkðHnHðCnLðœkPðHnTð žXð%ž\ð*žèðCnìðœkððHnôð žøð%žüð*žñažñ/žñ4ž ñ9žñ>žñÞñÈžñÍž ñÒž„òCnˆòœkŒòHnò ž”ò%ž˜ò*žœòaž ò/ž¤ò4ž¨ò9ž¬ò>ž°òÞ´òÈž¸òÍž¼òÒžÀò ÄòMžÈò  Ìò Ðò Ôò Øò! Üò& àòáZ äòæZ èòëZ ìòðZ ðò5¤ ôò:¤ øò?¤ üòD¤ (ôCn,ôœk<ôCn@ôœkTôCnXôœk\ôHntôCnxôœk|ôHn€ô žôCn”ôœk¬ôCn°ôœk´ôHn¸ô ž¼ô%žÈôCnÌôœk<õCn@õœkDõHnHõ žLõ%žÔõCnØõœkè÷Cnì÷œkð÷HnøCn øœk¤øCn¨øœk¬øHn°ø ž´ø%ž¸ø*ž¼øažÀø/žÄø4žÈø9žÌø>žÐøÃžÔøÈžØøÍžÜøÒžàø äøMžèø  ìø ðø ôø øø! üø& ùáZ ùæZ ùëZ  ùðZ ù5¤ ù:¤ ù?¤ ùD¤  ù#Ý $ùRž(ù(Ý ,ù-Ý 0ù2Ý 4ù7Ý 8ù<Ý <ùAÝ @ùFÝ DùKÝ HùPÝ LùUÝ PùZÝ Tù_Ý XùdÝ \ùiÝ `ùnÝ húCnlúœkpúHntú žxú%ž|ú*ž€úažäúCnèúœkìúHnàCnäœkl Cnp œkt Hnx  ž| %ž€ *ž„ ažˆ /žŒ 4ž 9ž” >ž˜ Þœ Èž  Íž¤ Òž¨  ¬ Mž°   ´  ¸  ¼  À ! Ä & È áZ Ì æZ Ð ëZ Ô ðZ Ø 5¤ Ü :¤ à ?¤ ä D¤ è #Ý ì Ržð (Ý ô -Ý ø 2Ý ü 7Ý  <Ý  AÝ  FÝ  KÝ  PÝ  UÝ  ZÝ  _Ý  dÝ $ iÝ ( nÝ , Þ 0 "4 '8 ,< 1@ 6D ;H @L EP JT OX T\ Y` ^d ch hl Wžp mt rx w| |€ „ †ˆ ‹Œ  •” š˜ Ÿœ ¤  ©¤ ®¨ ³¬ ¸° ½´ ¸ Ǽ ÌÀ ÑÄ ÖÈ ÛÌ àÐ åÔ êØ ïÜ ôà ùä þè ì ð  ô ø ü  ! & + 0 5 : ? D I$ N( S, X0 ]4 b8 g< l@ qD vH {L €P …T ŠX \ ”` ™d žh £l ¨p ­t ²x ·| ¼€ Á„ ƈ ËŒ Ð Õ” Ú˜ ßœ ä  é¤ î¨ ó¬ ø° ý´ ¸ ¼  À Ä È Ì  Ð %Ô *Ø /Ü 4à 9ä >è Cì Hð Mô Rø Wü \ a f k p u z  „ ‰$ Ž( “, ˜0 4 ¢8 §< ¬@ ±D ¶H »L ÀP ÅT ÊX Ï\ Ô` Ùd Þh ã0Cn4œk8Hn< ž@%žD*žHažL/žP4žT9žX>ž\Þ`ÈždÍžhÒžl pMžt  x | € „! ˆ& ŒáZ æZ ”ëZ ˜ðZ œ5¤  :¤ ¤?¤ ¨D¤ ¬#Ý °Rž´(Ý ¸-Ý ¼2Ý À7Ý Ä<Ý ÈAÝ ÌFÝ ÐKÝ ÔPÝ ØUÝ ÜZÝ à_Ý ädÝ èiÝ ìnÝ ðÞ ô"ø'ü,16; @EJOT Y$^(c,h0Wž4m8r<w@|DH†L‹PT•Xš\Ÿ`¤d©h®l³p¸t½xÂ|ǀ̄ш֌Ûà”å˜êœï ô¤ù¨þ¬°´ ¸¼ÀÄ!È&Ì+Ð0Ô5Ø:Ü?àDäIèNìSðXô]øbüglqv {€…Š ”$™(ž,£0¨4­8²<·@¼DÁHÆLËPÐTÕXÚ\ß`ädéhîlópøtýx|€ „ˆŒ ”%˜*œ/ 4¤9¨>¬C°H´M¸R¼WÀ\ÄaÈfÌkÐpÔuØzÜà„ä‰èŽì“ð˜ôø¢ü§¬±¶ »ÀÅÊÏ Ô$Ù(Þ,ã0º/4¿/Cn œk$Hn( ž,%ž0*ž4až8/ž<4ž@9žD>žHÞLÈžPÍžTÒžX \Mž`  d h l p! t& xáZ |æZ €ëZ „ðZ ˆ5¤ Œ:¤ ?¤ ”D¤ ˜#Ý œRž (Ý ¤-Ý ¨2Ý ¬7Ý °<Ý ´AÝ ¸FÝ ¼KÝ ÀPÝ ÄUÝ ÈZÝ Ì_Ý ÐdÝ ÔiÝ ØnÝ ÜÞ à"ä'è,ì1ð6ô;ø@üEJOT Y^chWž m$r(w,|04†8‹<@•DšHŸL¤P©T®X³\¸`½dÂhÇlÌpÑtÖxÛ|à€å„êˆïŒôù”þ˜œ  ¤¨¬°!´&¸+¼0À5Ä:È?ÌDÐIÔNØSÜXà]äbègìlðqôvø{ü€…Š ”™ž£¨ ­$²(·,¼0Á4Æ8Ë<Ð@ÕDÚHßLäPéTîXó\ø`ýdhl ptx| €%„*ˆ/Œ49”>˜CœH M¤R¨W¬\°a´f¸k¼pÀuÄzÈ̄ЉԎؓܘàä¢è§ì¬ð±ô¶ø»üÀÅÊÏ ÔÙÞãº/ ¿/$*6(/6,460964>68C6<H6@M6DR6HW6L\6Pa6Tf6Xk6\p6`u6dz6h6l„6p‰6tŽ6x“6|˜6€6„¢6ˆ§6Œ¬6±6”¶6˜»6œÀ6 Å6¤Ê6¨Ï6¬Ô6°Ù6´Þ6¸ã6¼è6Àí6Äò6È÷6Ìü6Ð7Ô7Ø 7ÜHžà7ä7è7ì7ð$7ô)7ø.7ü3787=7B7 G7L7Q7V7[7 `7$e7(j7,o70t74y78~7<ƒ7@ˆ7D7H’7L—7Pœ7T¡7X¦7\«7`°7dµ7hº7l¿7pÄ7tÉ7xÎ7|Ó7€Ø7„Ý7ˆâ7Œç7ì7”ñ7˜ö7œû7 8¤8¨ 8¬8°8´8¸8¼#8À(8Ä-8È28Ì78Ð<8ÔA8ØF8ÜK8àP8äU8èZ8ì_8ðd8ôi8øn84"Cn8"œk$Cn$œk $Hn8$Cn<$œk\$Cn`$œkx$Cn|$œk€$Hn„$ žˆ$%žŒ$*ž$až”$/ž˜$4žœ$9ž $>ž¤$Þ¨$Èž¬$Íž°$Òž´$ ¸$Mž¼$  À$ Ä$ È$ €%Cn„%œkˆ%HnŒ% ž%%ž”%*ž˜%ažœ%/ž &Cn&œk&Hn$&Cn(&œk<&Cn@&œkD&HnP&CnT&œkX&Hnp&Cnt&œkˆ&CnŒ&œk &Cn¤&œk¸&Cn¼&œkà&Cnä&œkè&Hnì& žð&%ž'Cn'œk'Cn 'œk$'Hn4'Cn8'œk<'Hn@' žD'%žH'*žL'ažP'/žT'4žX'9ž\'>žü'Cn(œk(Hn( ž (%ž(*ž(až(/ž(4ž (9ž$(>ž((Þ,(Èž0(Íž4(Òž()Cn,)œk0)Hn4) ž8)%ž<)*ž@)ažD)/žH)4žL)9žP)>žT)ÞX)Èž\)Íž`)Òžd) h)Mžl)  p) t) x) |)! €)& „)áZ ˆ)æZ Œ)ëZ )ðZ ”)5¤ ˜):¤ œ)?¤  )D¤ ¤)#Ý ¨)Rž¬)(Ý °)-Ý ´)2Ý ¸)7Ý ¼)<Ý À)AÝ Ä)FÝ È)KÝ Ì)PÝ Ð)UÝ Ô)ZÝ Ø)_Ý Ü)dÝ à)iÝ ä)nÝ è)Þ ì)"ð)'ô),ø)1ü)6*;*@*Eh.Cnl.œkp.Hn°.Cn´.œkÈ.CnÌ.œkì.Cnð.œk/Cn/œk/Hn / ž$/%ž(/*ž,/až0//ž4/4ž8/9žž@/ÞD/ÈžH/ÍžL/ÒžP/ T/MžX/  \/ $1Cn(1œk,1Hn01 ž41%ž81*ž@1CnD1œkH1HnL1 žP1%žÀ1CnÄ1œkÈ1HnÌ1 žÐ1%žÔ1*žØ1ažÜ1/žà14žä19žè1>žü1Cn2œk2Hn2 ž 2%ž2*ž2až¸2Cn¼2œkÐ2CnÔ2œk´3Cn¸3œkì3Cnð3œkô3Hnø3 žü3%ž4*ž4až4/ž 44ž49ž4>žð4Cnô4œkø4Hnü4 ž5%ž5*ž5až 5/ž54ž59ž°5Cn´5œk¸5Hn¼5 žÀ5%žÄ5*žÈ5ažÌ5/žx6Cn|6œk€6Hn´6Cn¸6œk¼6Hnð6Cnô6œk\7Cn`7œkÔ7CnØ7œkÜ7Cnà7œk8Cn8œk8Hn 8 ž8%ž8*ž8až8/ž 84ž$89ž(8>ž,8Þ9‹è9Cnì9œkð9ù”:Cn :œk:Hn: ž8BCnžàGÞäGÈžèGÍžìGÒžðG ôGMžøG  üG H |JCn€Jœk„JHnˆJ žŒJ%žJ*ž”Jaž˜J/žœJ4ž J9ž¤J>ž¨JÞ¬JÈž°JÍž´JÒž¸J ¼JMžÀJ  ÄJ ÈJ ÌJ SCn”Sœk˜SHnœS ž S%ž¤S*ž¨Saž¬S/ž°S4ž´S9ž¸S>žìSCnðSœkPTTT…XT”\T§`T²dTÅhTÔlTåpTòtTýxT |T!¤T9ž¨TMž¬TÒž°TMž´T9ž¸T ¼T9žÀTœkÄTCnÈTÒžÌTD¤ ÐTFÝ ÔT;ØTh ÜTo àTx äT èTŠ ìT“ ðTœìUCnðUœkôUHnøZCnüZœkØ[CnÜ[œkà[Hnä[ žè[%žì[*žð[ažô[/žø[4žü[9ž\>ž\Þ\Èž \Íž\Òž\ \Mž\   \ $\ (\ ,\! 0\& 4\áZ 8\æZ <\ëZ @\ðZ D\5¤ H\:¤ L\?¤ P\D¤ T\#Ý X\Rž\\(Ý `\-Ý d\2Ý h\7Ý l\<Ý p\AÝ t\FÝ x\KÝ |\PÝ €\UÝ „\ZÝ ˆ\_Ý Œ\dÝ \iÝ ”\nÝ ˜\Þ œ\" \'¤\,¨\1¬\6°\;´\@¸\E¼\JÀ\OÄ\TÈ\YÌ\^Ð\cÔ\hØ\Wž„^Cnˆ^œkŒ^Hn^ ž”^%ž˜^*žœ^až ^/ž¤^4ž¨^9ž¬^>ž°^Þ´^Èž¸^Íž¼^ÒžÀ^ Ä^MžÈ^  Ì^ Ð^ Ô^ Ø^! Ü^& à^áZ ä^æZ è^ëZ ì^ðZ ð^5¤ ô^:¤ ø^?¤ ü^D¤ _#Ý _Rž_(Ý  _-Ý _2Ý _7Ý _<Ý _AÝ  _FÝ $_KÝ (_PÝ ,_UÝ 0_ZÝ 4__Ý 8_dÝ <_iÝ @_nÝ D_Þ H_"L_'P_,T_1X_6\_;`_@d_Eh_Jl_Op_Tt_Yx_^|_c€_h„_Wžˆ_mŒ_r`Cn`œk`Hn ` ž$`%ž(`*ž,`až0`/ž4`4ž8`9ž<`>ž@`ÞD`ÈžH`ÍžL`ÒžP` T`MžX`  \` `` d` h`! l`& p`áZ t`æZ x`ëZ |`ðZ €`5¤ „`:¤ ˆ`?¤ Œ`D¤ `#Ý ì`Cnð`œkdCn”dœk˜dHnœd ž¸dCn¼dœkÀdHnädCnèdœkìdHn8eCnžøhÞühÈžiÍžiÒži  iMžœiCn iœkðiCnôiœkøiHnüi žj%žj*žjaž j/žj4žj9žj>žjÞ jÈž$jÍž(jCn,jœk0jHnPjCnTjœkXjHn\j žŒjCnjœk¨jCn¬jœk°jHn´j žÄjCnÈjœkØjCnÜjœkkCnkœkkHn k ž$k%ž(k*ž,kaž0k/ž4k4ž8k9žž@kÞìkCnðkœkôkHnøk žük%žl*žlažl/ž l4žl9žl>žlÞlÈž lÍž$lÒž(l ,lMž0l  4l 8l žqÞqÈž qÍžrCnrœkrHnr ž r%ž$r*ž(raž,r/ž0r4ž4r9ž8r>žž´sÞ¸sÈž¼sÍžÀsÒžÄs ÈsMžÌs  Ðs Ôs Øs Üs! às& äsáZ èsæZ ìsëZ ðsðZ ôs5¤ øs:¤ üs?¤ tD¤ t#Ý tRž t(Ý t-Ý t2Ý t7Ý t<Ý  tAÝ $tFÝ (tKÝ ,tPÝ 0tUÝ 4tZÝ œtCn tœk¤tHn¨t ž¬t%ž°t*ž´taž¸t/ž¼t4žÀt9žÄt>žÈtÞÌtÈžÐtÍžÔtÒžØt ÜtMžàt  ìtCnðtœkuCnuœkuHn0uCn4uœk8uHnXuCn\uœk`uHndu žhu%žlu*ž„uCnˆuœkŒuHnu ž vCnvœkvHnv žv%ž4vCn8vœk¯©~SK¯É~SX¯é~Se¯ Sr¯)S¯ISŒ¯iS™¯‰S¦¯¡KHm¡{œk¡Cœk©S³¯ÁKHmÁ{œkÁCœkÉSÀ¯áKHmá{œkáCœkéSͯ €SÚ¯)€Sç¯I€Sô¯i€S°‰€S°©€S°É€S(°é€S5°³œkƒœk‹n;:n SH°)SU°C“GC‹nISb°c“tGc‹niSo°‰S|°¡KHm¡{œk¡Cœk©S‰°ÁKHmÁ{œkÁCœkÉS–°áKHmá{œkáCœkéS£°‚;4m ‚S°°#‚;4m)‚S½°C‚;4mI‚Sʰc‚;4mi‚S×°‚KHmƒ‚³œkƒ‚ƒœkƒ‚‹nƒ‚;:n‰‚Sä°¡‚KHm©‚Sñ°Á‚KHm“]H‹nÉ‚Sþ°á‚KHmã‚“ÓHã‚‹né‚S ±ƒKHm ƒS±!ƒKHm)ƒS+±AƒKHmCƒ;‡sIƒS8±aƒKHmiƒSE±ƒKHm‰ƒSR±¡ƒKHm©ƒS_±ÁƒKHmÁƒ{œkÁƒCœkɃSl±ニnãƒ;:néƒSy± „S†±#„“ûJ#„‹n)„S“±C„“hKC„‹nI„S ±c„“ÌKc„‹ni„S­±‰„Sº±©„SDZÉ„SÚ±á„KHmá„{œká„Cœké„Sç±…KHm…{œk…Cœk…‹n…;:n …Sô±!…KHm!…{œk!…Cœk)…S²A…KHmA…{œkA…CœkC…“ƒMC…‹nI…S²a…KHma…{œka…Cœkc…“Nc…‹ni…S²…KHm…{œk…Cœkƒ…“†Nƒ…‹n‰…S(²¡…KHm¡…{œk¡…Cœk©…S5²Á…KHmÁ…{œkÁ…CœkÉ…SB²á…KHmá…{œká…Cœké…SO²†KHm†{œk†Cœk †S\²)†Si²I†Sv²i†Sƒ²‰†S²£†;4m©†SËqɆSõqé†Sr ‡S'r)‡S:rI‡SMrc‡³œkc‡ƒœkc‡‹nc‡;:ni‡SZr£‡“@Q£‡‹nÇ“¢QÇ‹n!ˆKHm!ˆ{œk!ˆCœk#ˆ³œk#ˆƒœk#ˆ‹n#ˆ;:nAˆKHmAˆ{œkAˆCœkaˆKHmaˆ{œkaˆCœkcˆ“ÌScˆ‹nƒˆ“4Tƒˆ‹n£ˆ“¬T£ˆ‹nÈ“UÈ‹n!‰KHm!‰{œk!‰CœkA‰KHmA‰{œkA‰Cœka‰KHma‰{œka‰Cœk‰KHm‰{œk‰Cœk¡‰KHm¡‰{œk¡‰CœkÁ‰KHmÁ‰{œkÁ‰Cœká‰KHmá‰{œká‰CœkŠKHmŠ{œkŠCœk!ŠKHm!Š{œk!ŠCœk㊳œk㊃œk㊋nãŠ;:n#‹“êW#‹‹nC‹“gXC‹‹nc‹“÷Xc‹‹nƒ‹“JYƒ‹‹n¡‹KHm¡‹{œk¡‹CœkÁ‹KHmÁ‹{œkÁ‹Cœká‹KHmá‹{œká‹Cœk#Œ;4mcŒÓœkcŒ;4mAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkÁŽKHmÁŽ{œkÁŽCœkKHm{œkCœk!KHm!{œk!CœkaKHma{œkaCœkKHm{œkCœkAKHmA{œkACœkaKHma{œkaCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœk‘KHm‘{œk‘Cœk!‘KHm!‘{œk!‘CœkA‘KHmA‘{œkA‘Cœká‘KHmá‘{œká‘Cœk’Ë œk!’KHm!’{œk!’Cœk$’Ë œkA’KHmA’{œkA’Cœk’KHm’{œk’Cœk¡’KHm¡’{œk¡’CœkÁ’KHmÁ’{œkÁ’Cœk“KHm“{œk“Cœk!“KHm!“{œk!“CœkA“KHmA“{œkA“Cœka“KHma“{œka“Cœk“KHm“{œk“Cœk¡“KHm¡“{œk¡“CœkÁ“KHmÁ“{œkÁ“CœkÓ;Çùã“;Çù”;4m#”;âøa”KHma”{œka”Cœkc”;Çù”KHm”{œk”Cœk¡”KHm¡”{œk¡”Cœk£”;Çùã”;Çù#•;Çùc•;âø„•Ë œk£•;Çù¤•Ë œkÄ•Ë œkã•;Çùä•Ë œk–;âø–Ë œk$–Ë œkc–;Çùƒ–;Çù©–SËqÉ–Sõqé–Sr —S'r)—S:rI—SMri—SZr‰—SËq©—Sõq×;ÇùÉ—Sré—S'r ˜S:r)˜SMrI˜SZri˜{œki˜Cœki˜KHm˜KHm˜{œk˜Cœkƒ˜;âø‰˜{œk‰˜Cœk‰˜KHm¡˜KHm¡˜{œk¡˜Cœk©˜{œk©˜Cœk©˜KHmÁ˜KHmÁ˜{œkÁ˜Cœkɘ›Çoɘ{œkɘCœká˜KHmá˜{œká˜Cœk阛¨né˜{œké˜Cœk™KHm™{œk™Cœk ™›Ço ™{œk ™Cœk)™›¨n)™{œk)™CœkI™{œkI™CœkI™KHmi™›Çoi™{œki™Cœk šSËq)šSõqIšSrišS'r‰šS:r©šSMrÀš{œkÉšSZràš“Îkàš{œkéš{œkéšCœkéšKHm›{œk ›{œk ›Cœk ›KHm ›{œk)›{œk)›Cœk)›KHm@›{œkA›KHmA›{œkA›CœkI›{œkI›CœkI›KHm`›“Îk`›{œka›KHma›{œka›Cœki›{œki›Cœki›KHm€›“¤l€›{œk›KHm›{œk›Cœk‰›{œk‰›Cœk‰›KHm ›{œk©›{œk©›Cœk©›KHmÀ›“ÎkÀ›{œkÉ›{œkÉ›CœkÉ›KHmà›{œké››Çoé›{œké›Cœk œ›Üo œ{œk œCœk)œ›ío)œ{œk)œCœk@œ{œk@œCœkIœ›–SIœ{œkIœCœk`œSkmiœSËq€œ{œk€œCœk‰œSõq œS~m©œSrÀœ{œkÀœCœkÉœS'ràœS‹méœS:r{œkCœk SMr {œk Cœk!KHm!{œk!Cœk@{œk@CœkAKHmA{œkACœk`{œkaKHma{œkaCœk€{œk {œk©{œk©Cœk©KHmÀ{œkÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHmž{œkžCœk ž{œk žCœk žKHm ž{œk žCœk)ž{œk)žCœk)žKHm@ž{œk@žCœkIž{œkIžCœkIžKHm`ž{œk`žCœkiž{œkižCœkižKHm€ž{œk€žCœk‰ž{œk‰žCœk‰žKHm ž{œk žCœk©ž{œk©žCœk©žKHmÀž{œkÀžCœkÉž{œkÉžCœkÉžKHmàž{œkàžCœkéž{œkéžCœkéžKHmŸ{œkŸCœkŸKHmŸ{œkŸCœk Ÿ{œk ŸCœk ŸKHm Ÿ{œk ŸCœk!ŸKHm!Ÿ{œk!ŸCœk)Ÿ{œk)ŸCœk)ŸKHm@Ÿ{œk@ŸCœkAŸKHmAŸ{œkAŸCœkIŸ{œkIŸCœkIŸKHm`ŸSkmaŸKHmaŸ{œkaŸCœkcŸ;ÇùiŸ{œkiŸCœkiŸKHm€Ÿ{œk€ŸCœk‰Ÿ{œk‰ŸCœk‰ŸKHm ŸS~m©Ÿ{œk©ŸCœk©ŸKHmÀŸ{œkÀŸCœkÉŸ{œkÉŸCœkÉŸKHmàŸS‹méŸ{œkéŸCœkéŸKHm {œk Cœk  {œk  Cœk  KHm  {œk  Cœk) ›Ço) {œk) Cœk@ {œk@ CœkI ›¨nI {œkI Cœk` {œk` Cœki ›oi {œki Cœk€ {œk€ Cœk‰ ›V°‰ {œk‰ Cœk  {œk  Cœk© ›Òæ© {œk© CœkÀ {œkÀ CœkÉ ›bçÉ {œkÉ Cœkà {œkà Cœké ›óçé {œké Cœk¡{œk¡Cœk ¡›oý ¡{œk ¡Cœk ¡{œk ¡Cœk)¡›Éý)¡{œk)¡Cœk@¡{œk@¡CœkI¡›&þI¡{œkI¡Cœk`¡{œk`¡Cœki¡›˜þi¡{œki¡Cœk€¡{œk€¡Cœk‰¡›"ÿ‰¡{œk‰¡Cœk ¡{œk ¡Cœk¡¡KHm¡¡{œk¡¡Cœk©¡›ÿ©¡{œk©¡CœkÀ¡{œkÀ¡CœkÁ¡KHmÁ¡{œkÁ¡CœkÉ¡›É¡{œkÉ¡Cœkà¡{œkà¡Cœké¡›8é¡{œké¡Cœk¢{œk¢Cœk ¢›Ço ¢{œk ¢Cœk ¢{œk ¢Cœk)¢›¨n)¢{œk)¢Cœk@¢{œk@¢CœkI¢›oI¢{œkI¢Cœk`¢{œk`¢Cœki¢›V°i¢{œki¢Cœk€¢{œk€¢Cœk‰¢›Ò扢{œk‰¢Cœk ¢{œk ¢Cœk©¢›bç©¢{œk©¢CœkÀ¢{œkÀ¢CœkÉ¢›óçÉ¢{œkÉ¢Cœkà¢{œkà¢Cœk颛oýé¢{œké¢Cœk£{œk£Cœk £›Éý £{œk £Cœk £{œk £Cœk)£›&þ)£{œk)£Cœk@£{œk@£CœkI£›˜þI£{œkI£Cœk`£{œk`£Cœki£›"ÿi£{œki£Cœk€£{œk€£Cœk£KHm£{œk£Cœk‰£›ÿ‰£{œk‰£Cœk £{œk £Cœk©£›©£{œk©£CœkÀ£{œkÀ£CœkÉ£›8É£{œkÉ£Cœkà£{œkà£Cœké£{œké£Cœké£KHm¤{œk¤Cœk ¤›Ço ¤{œk ¤Cœk)¤›Üo)¤{œk)¤CœkA¤KHmA¤{œkA¤CœkI¤›íoI¤{œkI¤Cœka¤KHma¤{œka¤Cœki¤›–Si¤{œki¤Cœk¤KHm¤{œk¤Cœk‰¤›§S‰¤{œk‰¤Cœk¡¤KHm¡¤{œk¡¤Cœk©¤{œk©¤Cœk©¤KHmÁ¤KHmÁ¤{œkÁ¤Cœkɤ{œkɤCœkɤKHmá¤KHmá¤{œká¤Cœké¤{œké¤Cœké¤KHm ¥›Ço ¥{œk ¥Cœk)¥›Üo)¥{œk)¥CœkI¥›¨nI¥{œkI¥Cœki¥›Çoi¥{œki¥Cœk‰¥›Üo‰¥{œk‰¥Cœk©¥›¨n©¥{œk©¥CœkÉ¥{œkÉ¥CœkÉ¥KHmé¥{œké¥Cœké¥KHm ¦{œk ¦Cœk ¦KHm)¦›Ço)¦{œk)¦CœkI¦›ÜoI¦{œkI¦Cœki¦›íoi¦{œki¦Cœk‰¦›¨n‰¦{œk‰¦Cœk©¦›Qp©¦{œk©¦Cœkɦ›bpɦ{œkɦCœk馛spé¦{œké¦Cœk§{œk §›„p §{œk §Cœk §{œk)§›šp)§{œk)§Cœk@§{œkI§›ÇoI§{œkI§Cœk`§{œki§›Üoi§{œki§Cœk€§{œk‰§›ío‰§{œk‰§Cœk §{œk¡§KHm¡§{œk¡§Cœk©§›¨n©§{œk©§Cœkɧ›Qpɧ{œkɧCœká§KHmá§{œká§Cœké§›bpé§{œké§Cœk¨KHm¨{œk¨Cœk ¨›sp ¨{œk ¨Cœk!¨KHm!¨{œk!¨Cœk)¨›„p)¨{œk)¨CœkA¨KHmA¨{œkA¨CœkI¨›špI¨{œkI¨Cœka¨KHma¨{œka¨Cœk¨KHm¨{œk¨Cœk¡¨KHm¡¨{œk¡¨Cœk©¨;µÜÁ¨KHmÁ¨{œkÁ¨Cœkɨ;µÜá¨KHmá¨{œká¨Cœké¨;µÜ ©;µÜ!©KHm!©{œk!©Cœk)©;µÜI©;µÜi©;µÜ€©{œk©KHm©{œk©Cœk‰©;µÜ ©{œk©©;µÜÉ©;µÜé©;µÜ!ªKHm!ª{œk!ªCœk)ª;µÜAªKHmAª{œkAªCœkIª;µÜaªKHmaª{œkaªCœkiªSËq‰ª{œk‰ªCœk‰ªKHm£ª;Çù©ª{œk©ªCœk©ªKHmê;Çùɪ{œkɪCœkɪKHméª{œkéªCœkéªKHm«KHm«{œk«Cœk «{œk «Cœk «KHm)«SËqI«Sõqi«Sr«KHm«{œk«Cœk‰«S'r©«S:rÉ«SMré«SZr¬KHm¬{œk¬Cœk ¬Sgr!¬KHm!¬{œk!¬Cœk)¬StrA¬KHmA¬{œkA¬CœkC¬;âøI¬Sra¬KHma¬{œka¬Cœki¬SŽr¬KHm¬{œk¬Cœkƒ¬;âø‰¬S›r¡¬KHm¡¬{œk¡¬Cœk£¬;hv©¬SºwÁ¬KHmÁ¬{œkÁ¬Cœkì;hvɬSËqá¬KHmá¬{œká¬Cœkã¬;hvé¬Sõq­KHm­{œk­Cœk­;hv ­Sr!­KHm!­{œk!­Cœk#­;hv)­S'rA­KHmA­{œkA­CœkC­;hvI­S:ra­KHma­{œka­Cœkc­;hvi­SMr€­{œk­KHm­{œk­Cœkƒ­;hv‰­SZr¡­KHm¡­{œk¡­Cœk£­;hv©­SgrÁ­KHmÁ­{œkÁ­Cœkí;hvÉ­{œkÉ­CœkÉ­KHmá­KHmá­{œká­Cœkã­;hvé­{œké­Cœké­KHm®{œk®;hv ®{œk ®Cœk ®KHm ®{œk#®;hv)®{œk)®Cœk)®KHmC®;hvI®{œkI®CœkI®KHmc®;hvi®SËqƒ®;hv‰®Sõq ®{œk©®SrÀ®{œkÉ®S'rà®{œké®S:r¯{œk ¯{œk)¯{œk)¯Cœk)¯KHmA¯KHmI¯{œkI¯CœkI¯KHma¯KHmi¯{œki¯Cœki¯KHm¯KHm‰¯{œk‰¯Cœk‰¯KHm¡¯KHm¡¯{œk¡¯Cœk©¯{œk©¯Cœk©¯KHmÁ¯KHmÁ¯{œkÁ¯Cœkï‹nï;:nɯ{œkɯCœkɯKHmà¯{œká¯KHmá¯{œká¯Cœké¯{œké¯Cœké¯KHm°{œk°KHm°{œk°Cœk °{œk °Cœk °KHm °{œk!°KHm!°{œk!°Cœk)°{œk)°Cœk)°KHm@°{œkA°KHmA°{œkA°CœkI°{œkI°CœkI°KHm`°{œka°KHma°{œka°Cœki°SËq°KHm°{œk°Cœk‰°Sõq¡°KHm¡°{œk¡°Cœk©°SrÁ°KHmÁ°{œkÁ°CœkɰS'ré°S:r ±SMr)±SZrI±Sgri±Str‰±Sr©±SŽrɱS›ré±Sºw ²SÖw)²{œk)²Cœk)²KHmI²{œkI²CœkI²KHmi²{œki²Cœki²KHm‰²{œk‰²Cœk‰²KHm©²{œk©²Cœk©²KHmɲ{œkɲCœkɲKHmé²{œké²Cœké²KHm³KHm³{œk³Cœk ³{œk ³Cœk ³KHm!³KHm!³{œk!³Cœk)³{œk)³Cœk)³KHmI³{œkI³CœkI³KHmi³{œki³Cœki³KHm³KHm³{œk³Cœk‰³›o‰³{œk‰³Cœk¡³KHm¡³{œk¡³Cœk£³;Çù©³›q©³{œk©³CœkÁ³KHmÁ³{œkÁ³Cœkó;Çùɳ›(qɳ{œkɳCœká³KHmá³{œká³Cœké³›Bé³{œké³Cœk´‹n´;:n ´›ÅX ´{œk ´Cœk)´›°)´{œk)´CœkA´KHmA´{œkA´CœkC´‹nC´;:nI´›0°I´{œkI´Cœka´KHma´{œka´Cœki´›A°i´{œki´Cœk´KHm´{œk´Cœkƒ´‹nƒ´;:n‰´›X°‰´{œk‰´Cœk©´›V°©´{œk©´CœkÁ´KHmÁ´{œkÁ´Cœkô“õªô‹nÉ´›ˆÉ´{œkÉ´Cœká´KHmá´{œká´Cœkã´“C«ã´‹né´›Òæé´{œké´Cœkµ“«µ‹n µ›E µ{œk µCœk)µ›®E)µ{œk)µCœkIµ›ÉEIµ{œkIµCœkiµ›y±iµ{œkiµCœkƒµ‹nƒµ;:n‰µ›’±‰µ{œk‰µCœk£µ‹n£µ;:n©µ›b穵{œk©µCœkõ‹nõ;:nɵ›,²ɵ{œkɵCœkáµKHmãµ;‡séµ›=²éµ{œkéµCœk¶KHm ¶›]² ¶{œk ¶Cœk!¶KHm!¶{œk!¶Cœk)¶›óç)¶{œk)¶CœkI¶›oýI¶{œkI¶Cœka¶KHma¶{œka¶Cœki¶› ³i¶{œki¶Cœk¶KHm¶{œk¶Cœk‰¶›o‰¶{œk‰¶Cœk©¶›q©¶{œk©¶Cœkö;‡sɶ›(qɶ{œkɶCœká¶KHmá¶{œká¶Cœkã¶Óœkã¶;4mé¶›Bé¶{œké¶Cœk·KHm·{œk·Cœk ·›ÅX ·{œk ·Cœk!·KHm!·{œk!·Cœk)·›°)·{œk)·CœkA·KHmA·{œkA·CœkI·›0°I·{œkI·Cœki·›A°i·{œki·Cœk·KHm·{œk·Cœk‰·›X°‰·{œk‰·Cœk ·“Îk©·›V°©·{œk©·CœkÁ·KHmÁ·{œkÁ·CœkÉ·›ˆÉ·{œkÉ·Cœká·KHmá·{œká·Cœké·›Òæé·{œké·Cœk¸KHm¸{œk¸Cœk ¸›E ¸{œk ¸Cœk!¸KHm!¸{œk!¸Cœk)¸›®E)¸{œk)¸CœkC¸;ÇùI¸›ÉEI¸{œkI¸Cœka¸KHma¸{œka¸Cœki¸›y±i¸{œki¸Cœk‰¸›’±‰¸{œk‰¸Cœk¡¸KHm¡¸{œk¡¸Cœk©¸›b穸{œk©¸CœkÁ¸KHmÁ¸{œkÁ¸Cœkɸ›,²ɸ{œkɸCœká¸KHmá¸{œká¸Cœk鸛=²é¸{œké¸Cœk¹KHm¹{œk¹Cœk ¹›]² ¹{œk ¹Cœk)¹›óç)¹{œk)¹CœkA¹KHmA¹{œkA¹CœkI¹›oýI¹{œkI¹Cœki¹› ³i¹{œki¹Cœk¹KHm¹{œk¹Cœk‰¹{œk‰¹Cœk‰¹KHm¡¹KHm¡¹{œk¡¹Cœk©¹{œk©¹Cœk©¹KHmÁ¹KHmÁ¹{œkÁ¹Cœkɹ{œkɹCœkɹKHmá¹KHmá¹{œká¹Cœké¹{œké¹Cœké¹KHm º›¨n º{œk ºCœk!ºKHm!º{œk!ºCœk)º›¨n)º{œk)ºCœkIº{œkIºCœkIºKHmaºKHmaº{œkaºCœkiº{œkiºCœkiºKHmºKHmº{œkºCœk‰º{œk‰ºCœk‰ºKHm¡ºKHm¡º{œk¡ºCœk©º›Ço©º{œk©ºCœkÀº{œkÀºCœkÁºKHmÁº{œkÁºCœkɺ›¨nɺ{œkɺCœkàºSkm麛Çoéº{œkéºCœk»S~m»KHm»{œk»Cœk »›¨n »{œk »Cœk »{œk »Cœk)»SËq@»{œk@»CœkA»KHmA»{œkA»CœkI»Sõq`»{œk`»Cœka»KHma»{œka»Cœki»{œki»Cœki»KHm€»{œk€»Cœk»KHm»{œk»Cœk‰»{œk‰»Cœk‰»KHm »{œk »Cœk¡»KHm¡»{œk¡»Cœk©»{œk©»Cœk©»KHmÀ»{œkÀ»CœkÉ»›ÇoÉ»{œkÉ»Cœkà»{œkà»Cœká»KHmá»{œká»Cœkã»;Çùé»›¨né»{œké»Cœk¼;4m ¼›Qp ¼{œk ¼Cœk!¼KHm!¼{œk!¼Cœk)¼›bp)¼{œk)¼CœkA¼KHmA¼{œkA¼CœkC¼;4mI¼›spI¼{œkI¼Cœka¼KHma¼{œka¼Cœki¼›„pi¼{œki¼Cœk¼KHm¼{œk¼Cœk‰¼›Ço‰¼{œk‰¼Cœk©¼›¨n©¼{œk©¼Cœkɼ›Qpɼ{œkɼCœké¼›bpé¼{œké¼Cœk ½›sp ½{œk ½Cœk)½›„p)½{œk)½Cœk@½“ÎkA½KHmA½{œkA½CœkI½{œkI½CœkI½KHma½KHma½{œka½Cœki½›Çoi½{œki½Cœk½KHm½{œk½Cœk¡½KHm¡½{œk¡½Cœk©½SËqÁ½KHmÁ½{œkÁ½Cœký;ÇùɽSõqá½KHmá½{œká½Cœké½Sr ¾S'r#¾;Çù)¾S:rA¾KHmA¾{œkA¾CœkI¾SMra¾KHma¾{œka¾Cœki¾SZr¾KHm¾{œk¾Cœk‰¾Sgr¡¾KHm¡¾{œk¡¾Cœk©¾StrÁ¾KHmÁ¾{œkÁ¾CœkɾSrá¾KHmá¾{œká¾Cœké¾{œké¾Cœké¾KHm¿KHm¿{œk¿Cœk ¿›Ço ¿{œk ¿Cœk)¿›Üo)¿{œk)¿CœkI¿›íoI¿{œkI¿Cœka¿KHma¿{œka¿Cœk¿KHm¿{œk¿Cœk¡¿KHm¡¿{œk¡¿CœkÁ¿KHmÁ¿{œkÁ¿Cœká¿KHmá¿{œká¿CœkÀKHmÀ{œkÀCœk À{œk ÀCœk ÀKHm!ÀKHm!À{œk!ÀCœk)À{œk)ÀCœk)ÀKHmIÀ{œkIÀCœkIÀKHmaÀKHmaÀ{œkaÀCœkiÀ{œkiÀCœkiÀKHm‰À{œk‰ÀCœk‰ÀKHm©À{œk©ÀCœk©ÀKHmÁÀKHmÁÀ{œkÁÀCœkÉÀ{œkÉÀCœkÉÀKHméÀ{œkéÀCœkéÀKHmÁKHmÁ{œkÁCœk Á{œk ÁCœk ÁKHm!ÁKHm!Á{œk!ÁCœk)Á{œk)ÁCœk)ÁKHmAÁKHmAÁ{œkAÁCœkCÁÓœkCÁ;4mIÁ{œkIÁCœkIÁKHmaÁKHmaÁ{œkaÁCœkiÁ{œkiÁCœkiÁKHmÁKHmÁ{œkÁCœk‰Á{œk‰ÁCœk‰ÁKHm Á“Îk Á{œk¡ÁKHm¡Á{œk¡ÁCœk©Á{œk©ÁCœk©ÁKHmÀÁ{œkÀÁCœkÁÁKHmÁÁ{œkÁÁCœkÉÁ›¨nÉÁ{œkÉÁCœkàÁSkmáÁKHmáÁ{œkáÁCœkéÁ›oéÁ{œkéÁCœkÂS~mÂKHmÂ{œkÂCœk ›V° Â{œk ÂCœk Â{œk ÂCœk#Â;Çù)›ˆ)Â{œk)ÂCœk@Â{œk@ÂCœkI›bçIÂ{œkIÂCœk`Â{œk`ÂCœkaÂKHmaÂ{œkaÂCœki›oýiÂ{œkiÂCœk€Â{œk€ÂCœk‰Â› ³‰Â{œk‰ÂCœk Â{œk ÂCœk¡ÂKHm¡Â{œk¡ÂCœk©Â›¨n©Â{œk©ÂCœkÀÂ{œkÀÂCœkÁÂKHmÁÂ{œkÁÂCœkÃÂ;‡sÉ›oÉÂ{œkÉÂCœkàÂ{œkàÂCœkáÂKHmáÂ{œkáÂCœkãÂ;‡sé›V°éÂ{œkéÂCœkÃ{œkÃCœkÃKHmÃ{œkÃCœkËnÃ;:n Ûˆ Ã{œk ÃCœk)Ûbç)Ã{œk)ÃCœkAÃKHmAÃ{œkAÃCœkCÓ}ÍCËnIÛoýIÃ{œkIÃCœkaÃKHmaÃ{œkaÃCœkcÓäÍcËniÛ ³iÃ{œkiÃCœk‰ÃSËq¡ÃKHm¡Ã{œk¡ÃCœk©ÃSõqÁÃKHmÁÃ{œkÁÃCœkÃÃÓœkÃËnÃÃ;:nÉÃSráÃKHmáÃ{œkáÃCœkéÃS'rÄKHmÄ{œkÄCœk ÄSËq#ÄÓœk#Ä;4m)ÄSõqAÄKHmAÄ{œkAÄCœkIÄSraÄKHmaÄ{œkaÄCœkiÄS'r‰ÄSËq Ä“Îk¡ÄKHm¡Ä{œk¡ÄCœk©ÄSõqÀÄ“ׂÁÄKHmÁÄ{œkÁÄCœkÉÄSràÄ“ÎkéÄS'r!ÅKHm!Å{œk!ÅCœk)Å;µÜAÅKHmAÅ{œkAÅCœkIÅ;µÜiÅ{œkiÅCœkiÅKHmÅKHmÅ{œkÅCœk‰Å{œk‰ÅCœk‰ÅKHm¡ÅKHm¡Å{œk¡ÅCœk©Å{œk©ÅCœk©ÅKHmÉÅ›ÇoÉÅ{œkÉÅCœkáÅKHmáÅ{œkáÅCœkéÅ›¨néÅ{œkéÅCœkÆKHmÆ{œkÆCœk Æ›Ço Æ{œk ÆCœk)Æ›¨n)Æ{œk)ÆCœkaÆKHmaÆ{œkaÆCœkÆKHmÆ{œkÆCœkƒÆ;Çù©Æ{œk©ÆCœk©ÆKHmÉÆ{œkÉÆCœkÉÆKHmãÆ;ÇùéÆ{œkéÆCœkéÆKHmÇKHmÇ{œkÇCœk Ç›Ço Ç{œk ÇCœk!ÇKHm!Ç{œk!ÇCœk)Ç›¨n)Ç{œk)ÇCœk@Ç“Îk@Ç{œkIÇ›ÇoIÇ{œkIÇCœkaÇKHmaÇ{œkaÇCœkiÇ›¨niÇ{œkiÇCœkÇKHmÇ{œkÇCœkƒÇ;Çù‰ÇSËq©ÇSõqÉÇSráÇKHmáÇ{œkáÇCœkÈ{œkÈKHmÈ{œkÈCœkÈ;Çù È{œk)ÈSËq@È{œkAÈKHmAÈ{œkAÈCœkIÈSõq`È{œkaÈKHmaÈ{œkaÈCœkiÈSr€È{œkÈKHmÈ{œkÈCœk‰ÈS'r È{œk¡ÈKHm¡È{œk¡ÈCœk©ÈSËqÉÈ;µÜáÈKHmáÈ{œkáÈCœkãÈ;ÇùéÈSËqÉKHmÉ{œkÉCœk ÉSõq)ÉSrAÉKHmAÉ{œkAÉCœkIÉS'r`É{œkaÉKHmaÉ{œkaÉCœkiÉS:r€É{œkÉKHmÉ{œkÉCœk‰ÉSMr¡ÉKHm¡É{œk¡ÉCœk©ÉSZrÉÉSgráÉKHmáÉ{œkáÉCœkãÉ;ÇùéÉStrÊKHmÊ{œkÊCœk Ê{œk ÊCœk ÊKHm)Ê{œk)ÊCœk)ÊKHm@Ê{œkIÊ{œkIÊCœkIÊKHm`Ê{œkaÊKHmaÊ{œkaÊCœkiÊ{œkiÊCœkiÊKHm€Ê{œkÊKHmÊ{œkÊCœk‰Ê{œk‰ÊCœk‰ÊKHm Ê{œk©ÊSËqÀÊ{œkÁÊKHmÁÊ{œkÁÊCœkÉÊSõqàÊ{œkáÊKHmáÊ{œkáÊCœkãÊ;ÇùéÊSr Ë;µÜ!ËKHm!Ë{œk!ËCœk)ËSËqAËKHmAË{œkAËCœkIËSõqiËSr‰ËS'r Ë“Îk¡ËKHm¡Ë{œk¡ËCœk©ËS:rÁËKHmÁË{œkÁËCœkÉË;µÜéË{œkéËCœkéËKHm Ì{œk ÌCœk ÌKHm)Ì{œk)ÌCœk)ÌKHmAÌKHmAÌ{œkAÌCœkIÌ{œkIÌCœkIÌKHmaÌKHmaÌ{œkaÌCœkiÌ›¨niÌ{œkiÌCœk‰Ì›¨n‰Ì{œk‰ÌCœk¡ÌKHm¡Ì{œk¡ÌCœk©Ì{œk©ÌCœk©ÌKHmÀÌ{œkÁÌKHmÁÌ{œkÁÌCœkÉÌ{œkÉÌCœkÉÌKHmàÌ{œkéÌ{œkéÌCœkéÌKHm Í{œk ÍCœk ÍKHm!ÍKHm!Í{œk!ÍCœk)Í›¨n)Í{œk)ÍCœkAÍKHmAÍ{œkAÍCœkIÍ›QpIÍ{œkIÍCœkiÍ›¨niÍ{œkiÍCœk‰Í›Qp‰Í{œk‰ÍCœk©ÍSËqÁÍKHmÁÍ{œkÁÍCœkÉÍSõqáÍKHmáÍ{œkáÍCœkéÍSr ÎSËq)ÎSõqAÎKHmAÎ{œkAÎCœkIÎSraÎKHmaÎ{œkaÎCœkiÎSËqƒÎ;Çù‰ÎSõq¡ÎKHm¡Î{œk¡ÎCœk©ÎSrÁÎKHmÁÎ{œkÁÎCœkÉÎ;µÜéÎ;µÜÏ{œk Ï{œk ÏCœk ÏKHm Ï{œk!ÏKHm!Ï{œk!ÏCœk)Ï›Ço)Ï{œk)ÏCœk@Ï{œkAÏKHmAÏ{œkAÏCœkIÏ›ÜoIÏ{œkIÏCœk`Ï{œkiÏSËq€Ï{œk‰ÏSõq©ÏSrÁÏKHmÁÏ{œkÁÏCœkÉÏS'ráÏKHmáÏ{œkáÏCœkéÏS:rГÎk ÐSMr!ÐKHm!Ð{œk!ÐCœkAÐKHmAÐ{œkAÐCœkiÐ;µÜÐKHmÐ{œkÐCœk¡ÐKHm¡Ð{œk¡ÐCœkÑKHmÑ{œkÑCœk!ÑKHm!Ñ{œk!ÑCœkaÑKHmaÑ{œkaÑCœkcÑ;‡sÑKHmÑ{œkÑCœkƒÑËœkƒÑ‹nƒÑ;:n©Ñ;µÜÉÑ;µÜáÑKHmáÑ{œkáÑCœkÒ{œkÒCœkÒKHmÒ{œkÒCœk Ò;µÜ ÒSkm)Ò;µÜ@Ò{œk@ÒCœkAÒKHmAÒ{œkAÒCœkCÒ‹nCÒ;:nIÒ;µÜ`ÒS~maÒKHmaÒ{œkaÒCœkiÒ;µÜ€Ò{œk€ÒCœkƒÒÓœkƒÒ;‡s Ò{œk ÒCœk©Ò{œk©ÒCœk©ÒKHmÀÒ{œkÀÒCœkÁÒKHmÁÒ{œkÁÒCœkÉÒ{œkÉÒCœkÉÒKHmàÒ{œkáÒKHmáÒ{œkáÒCœkéÒ{œkéÒCœkéÒKHmÓ{œk Ó{œk ÓCœk ÓKHm Ó{œk)Ó{œk)ÓCœk)ÓKHm@Ó{œkAÓKHmAÓ{œkAÓCœkIÓ{œkIÓCœkIÓKHm`Ó{œkaÓKHmaÓ{œkaÓCœkiÓ{œkiÓCœkiÓKHm€Ó{œk€ÓCœkÓKHmÓ{œkÓCœk‰Ó{œk‰ÓCœk‰ÓKHm Ó{œk ÓCœk¡ÓKHm¡Ó{œk¡ÓCœk©Ó{œk©ÓCœk©ÓKHmÀÓ{œkÀÓCœkÁÓKHmÁÓ{œkÁÓCœkÉÓ{œkÉÓCœkÉÓKHmàÓ{œkàÓCœkáÓKHmáÓ{œkáÓCœkéÓ{œkéÓCœkéÓKHmÔ{œkÔCœk Ô{œk ÔCœk ÔKHm Ô{œk ÔCœk)Ô{œk)ÔCœk)ÔKHm@Ô{œk@ÔCœkIÔ›¨nIÔ{œkIÔCœk`Ô{œk`ÔCœkaÔKHmaÔ{œkaÔCœkiÔ›QpiÔ{œkiÔCœk‰Ô›o‰Ô{œk‰ÔCœk©Ô›q©Ô{œk©ÔCœkÁÔKHmÁÔ{œkÁÔCœkÉÔ›V°ÉÔ{œkÉÔCœkáÔKHmáÔ{œkáÔCœkéÔ›ÒæéÔ{œkéÔCœkÕKHmÕ{œkÕCœk Õ›E Õ{œk ÕCœk!ÕKHm!Õ{œk!ÕCœk)Õ›bç)Õ{œk)ÕCœkAÕKHmAÕ{œkAÕCœkIÕ›,²IÕ{œkIÕCœkaÕKHmaÕ{œkaÕCœkcÕ‹ncÕ;:niÕ›óçiÕ{œkiÕCœk€Õ{œkÕKHmÕ{œkÕCœk‰Õ›«ã‰Õ{œk‰ÕCœk Õ{œk¡ÕKHm¡Õ{œk¡ÕCœk£Õ‹n£Õ;:n©Õ›oý©Õ{œk©ÕCœkÀÕ{œkÁÕKHmÁÕ{œkÁÕCœkÉÕ› ³ÉÕ{œkÉÕCœkàÕ{œkáÕKHmáÕ{œkáÕCœkãÕ“ÎúãÕ‹néÕ›)äéÕ{œkéÕCœkÖ{œkÖKHmÖ{œkÖCœkÖ“8ûÖ‹n Ö›:ä Ö{œk ÖCœk Ö{œk!ÖKHm!Ö{œk!ÖCœk#Ö“—û#Ö‹n)Ö›Kä)Ö{œk)ÖCœk@Ö{œkCÖ“üCÖ‹nIÖ›ÉýIÖ{œkIÖCœk`Ö{œkaÖKHmaÖ{œkaÖCœkcÖ“QücÖ‹niÖ›ÀäiÖ{œkiÖCœk€Ö{œkÖKHmÖ{œkÖCœkƒÖ“ÒüƒÖ‹n‰Ö›¨n‰Ö{œk‰ÖCœk£Ö“%ý£Ö‹n©Ö›Qp©Ö{œk©ÖCœkÁÖKHmÁÖ{œkÁÖCœkÃÖ“€ýÃÖ‹nÉÖ›oÉÖ{œkÉÖCœkãÖ“ÚýãÖ‹néÖ›qéÖ{œkéÖCœkד7þ׋n ×›V° ×{œk ×Cœk!×KHm!×{œk!×Cœk#דÌþ#׋n)×›Òæ)×{œk)×CœkCד3ÿC׋nI×›EI×{œkI×Cœkcד¿ÿc׋ni×›bçi×{œki×Cœk×KHm×{œk×Cœkƒ×“ƒƒ×‹n‰×›,²‰×{œk‰×Cœk©×›óç©×{œk©×CœkÉ×›«ãÉ×{œkÉ×Cœké×›oýé×{œké×CœkØKHmØ{œkØCœk Ø› ³ Ø{œk ØCœk)Ø›)ä)Ø{œk)ØCœkIØ›:äIØ{œkIØCœkiØ›KäiØ{œkiØCœkØKHmØ{œkØCœk‰Ø›Éý‰Ø{œk‰ØCœk©Ø›À䩨{œk©ØCœkÉØSËqéØSõqÙKHmÙ{œkÙCœk!ÙKHm!Ù{œk!ÙCœk)ÙSËqAÙKHmAÙ{œkAÙCœkIÙSõqaÙKHmaÙ{œkaÙCœkcÙ‹ncÙ;:niÙSËq€Ù{œkÙKHmÙ{œkÙCœkƒÙ‹nƒÙ;:n‰ÙSõq¡ÙKHm¡Ù{œk¡ÙCœk©ÙSrÁÙKHmÁÙ{œkÁÙCœkÃÙ“ÃÙ‹nÉÙS'ráÙKHmáÙ{œkáÙCœkãÙ“oãÙ‹néÙS:rÚKHmÚ{œkÚCœk ÚSËq!ÚKHm!Ú{œk!ÚCœk)ÚSõqAÚKHmAÚ{œkAÚCœkIÚSraÚKHmaÚ{œkaÚCœkiÚS'rÚKHmÚ{œkÚCœk‰ÚS:r¡ÚKHm¡Ú{œk¡ÚCœk©ÚSMrÁÚKHmÁÚ{œkÁÚCœkÉÚSZréÚSgr ÛStr!ÛKHm!Û{œk!ÛCœk)ÛSrAÛKHmAÛ{œkAÛCœkIÛSŽraÛKHmaÛ{œkaÛCœkiÛS›rÛKHmÛ{œkÛCœk¡ÛKHm¡Û{œk¡ÛCœk©ÛSËqÁÛKHmÁÛ{œkÁÛCœkÉÛSõqáÛKHmáÛ{œkáÛCœkéÛSr ÜS'r)ÜS:rAÜKHmAÜ{œkAÜCœkIÜSMraÜKHmaÜ{œkaÜCœkiÜSZrÜKHmÜ{œkÜCœk‰ÜSgr¡ÜKHm¡Ü{œk¡ÜCœk©ÜStrÁÜKHmÁÜ{œkÁÜCœkÉÜSËqàÜ{œkàÜCœkéÜSõqÝSkm ÝSr Ý{œk ÝCœk)ÝS'r@ÝS~mIÝS:r`Ý{œk`ÝCœkaÝKHmaÝ{œkaÝCœkiÝSMr€Ý{œk€ÝCœkÝKHmÝ{œkÝCœk‰ÝSZr Ý{œk ÝCœk¡ÝKHm¡Ý{œk¡ÝCœkÀÝ{œkÁÝKHmÁÝ{œkÁÝCœkÉÝ;µÜàÝ{œkéÝ;µÜÞ{œkÞKHmÞ{œkÞCœk Þ;µÜ Þ{œk!ÞKHm!Þ{œk!ÞCœk)Þ;µÜ@Þ{œkAÞKHmAÞ{œkAÞCœkIÞ;µÜ`Þ{œkaÞKHmaÞ{œkaÞCœkiÞ;µÜ€Þ{œk‰ÞSËq Þ{œk¡ÞKHm¡Þ{œk¡ÞCœk£Þ;âø©ÞSõqÃÞ‹nÃÞ;:nÉÞSËqáÞKHmáÞ{œkáÞCœkéÞSõqß“R ß‹n ßSr#ß“ #ß‹n)ßSËqAßKHmAß{œkAßCœkIßSõqaßKHmaß{œkaßCœkißSrßKHmß{œkßCœkƒß;4m‰ßS'r¡ßKHm¡ß{œk¡ßCœk©ßSËqÉßSõqàß{œkáßKHmáß{œkáßCœkéßSrà{œk àS'r à{œk#à;Çù)àS:r@à{œkAàKHmAà{œkAàCœkIàSËq`à{œkaàKHmaà{œkaàCœkiàSõq€à{œkàKHmà{œkàCœk‰àSr¡àKHm¡à{œk¡àCœk©àSËqÃà;ÇùÉàSõqáàKHmáà{œkáàCœkéàSrá{œk áS'r á{œk)áSËqAáKHmAá{œkAáCœkIáSËqaáKHmaá{œkaáCœkiáSõqáKHmá{œkáCœkƒá;âø‰áSr¡áKHm¡á{œk¡áCœk£á;4m©áSËqÁáKHmÁá{œkÁáCœkÉáSõqãá;ÇùéáSrâ“ØâKHmâ{œkâCœk âS'r â“Ø!âKHm!â{œk!âCœk)âSËq@â“ÎkAâKHmAâ{œkAâCœkIâSõqaâKHmaâ{œkaâCœkiâSrâKHmâ{œkâCœk‰âS'r¡âKHm¡â{œk¡âCœk©âSËqÃâ;âøÉâSõqéâSr ãS'r!ãKHm)ãSËqAãKHmIãSõqaãKHmaã{œkaãCœkiãSrãKHmã{œkãCœk‰ãS'r©ãSËqÀã{œkÉãSõqàã{œkãã;4méãSrä{œk äSËq ä{œk)äSõq@ä{œkIäSËq`ä{œkiäSõq€ä{œkäKHmä{œkäCœk‰äSr ä{œk¡äKHm¡ä{œk¡äCœk£ä;‡s©äSËqÁäKHmÁä{œkÁäCœkÃä‹nÃä;:nÉäSõqáäKHmáä{œkáäCœkéäSråKHmå{œkåCœk峜k僜kå;‡s åS'r!åKHm!å{œk!åCœk#峜k#僜k#å;‡s)åSËq@å{œkAåKHmAå{œkAåCœkCå‹nCå;:nIåSËq`å“ׂ`å{œkaåKHmaå{œkaåCœkiåSËq€å“ׂ€å{œkåKHmå{œkåCœkƒå;‡s‰åSõq å“Îk å{œk¡åKHm¡å{œk¡åCœk©åSrÀå“ׂÀå{œkÁåKHmÁå{œkÁåCœkÉåS'rà哨àå{œkáåKHmáå{œkáåCœkéåS:ræKHmæ{œkæCœk æSËq!æKHm!æ{œk!æCœk#泜k#惜k#æ;4m)æSõqIæSrcæ‹ncæ;:niæSËq€æ{œk€æCœkæKHmæ{œkæCœk‰æSõq æSkm¡æKHm¡æ{œk¡æCœk£æ‹n£æ;:n©æSrÀæ{œkÀæCœkÁæKHmÁæ{œkÁæCœkÉæSËqàæS~máæKHmáæ{œkáæCœkéæSõqç{œkçCœk çSr çS‹m!çKHm!ç{œk!çCœk)çSËq@ç{œk@çCœkIçSõq`çSâ¢içSr€ç{œk€çCœk‰çS'r çSçSËqÀç{œkÀçCœkÉçSõqàçSü¢éçSrè{œkèCœkèKHmè{œkèCœk èS'r èS £#賜k#胜k#è;‡s)èSËq@è{œk@èCœkC賜kC胜kCè‹nCè;:nIèSõq`èS£ièSr€è{œk€èCœkèKHmè{œkèCœkƒè“®°ƒè‹n‰èS'r èS#£¡èKHm¡è{œk¡èCœk£è“±£è‹n©èSËqÀè{œkÀèCœkÁèKHmÁè{œkÁèCœkÃè“å±Ãè‹nÉèSõqàè{œkàèCœkáèKHmáè{œkáèCœkã蓘²ãè‹néèSré{œkéCœkéKHmé{œkéCœké“ܲé‹n éSËq é{œk!éKHm!é{œk!éCœk#é“B³#é‹n)éSõq@é{œkAéKHmAé{œkAéCœkIéSr`é{œkaéKHmaé{œkaéCœkiéSËq€é{œkéKHmé{œkéCœk‰éSËq é{œk¡éKHm¡é{œk¡éCœk©éSËqÀé{œkÁéKHmÁé{œkÁéCœkÉéSõqàé{œkáéKHmáé{œkáéCœkééSrê{œkêKHmê{œkêCœkê‹nê;:n êS'r!êKHm!ê{œk!êCœk)êSËqAêKHmAê{œkAêCœkCê“ô³Cê‹nIêSõqaêKHmaê{œkaêCœkcê“_´cê‹niêSËqêKHmê{œkêCœk‰êSËq©êSËqÃê‹nÃê;:nÉêSËqéêSËqë“:µë‹n ëSËq#듽µ#ë‹n)ëSËqAëKHmAë{œkAëCœkIëSËqaëKHmaë{œkaëCœkiëSËq€ë{œkëKHmë{œkëCœkƒë;‡s‰ëSõq¡ëKHm¡ë{œk¡ëCœk£ë‹n£ë;:n©ëSrÁëKHmÁë{œkÁëCœkÉëS'rãë“R·ãë‹néëS:r쓸ì‹n ìSMr)ìSËqIìSõqcì‹ncì;:niì{œkiìCœkiìKHmìKHmì{œkìCœkƒì;‡s‰ì{œk‰ìCœk‰ìKHm¡ìKHm¡ì{œk¡ìCœk©ì{œk©ìCœk©ìKHmÁìKHmÁì{œkÁìCœkÉì{œkÉìCœkÉìKHmáìKHmáì{œkáìCœkéì›Çoéì{œkéìCœkíKHmí{œkíCœk í›Üo í{œk íCœk)í›Ço)í{œk)íCœkIí›ÜoIí{œkIíCœk`í{œk`íCœkiíSËq€íSkmíKHmí{œkíCœk‰íSõq í{œk íCœk¡íKHm¡í{œk¡íCœk©íSrÀíS~mÁíKHmÁí{œkÁíCœkÉíS'ràí{œkàíCœkáíKHmáí{œkáíCœkîS‹mîKHmî{œkîCœk î{œk îCœk@î{œk@îCœkAîKHmAî{œkAîCœkIîSËq`î{œk`îCœkaîKHmaî{œkaîCœkiîSõq€î{œkîKHmî{œkîCœk‰îSr î{œk¡îKHm¡î{œk¡îCœk©îS'rÀî{œkÁîKHmÁî{œkÁîCœkÉîS:ràî{œkáîKHmáî{œkáîCœkéîSMrï{œkïKHmï{œkïCœk ïSZr ï{œk!ïKHm!ï{œk!ïCœk)ïSgr@ï{œkAïKHmAï{œkAïCœkIïStr`ï{œkaïKHmaï{œkaïCœkiïSr ï{œk ïCœkÀïSkmÁïKHmÁï{œkÁïCœkÉïSËqàï{œkàïCœkáïKHmáï{œkáïCœkéïSõqðS~m ðSr ð{œk ðCœk#ð;Çù)ðS'r@ðS‹mCð‹nCð;:nIðS:r`ð{œk`ðCœkcð;ÇùiðSMr€ð{œk€ðCœk‰ðSZr ð{œk ðCœk¡ðKHm¡ð{œk¡ðCœk£ð;4m©ðSgrÀð{œkÁðKHmÁð{œkÁðCœkÃð;4mÉðStràð{œkãð;ÇùéðSrñ{œkñ;Çù ñSŽr ñ{œk#ñ;Çù)ñS›r@ñ{œkAñKHmAñ{œkAñCœkIñSºw`ñ{œkañKHmañ{œkañCœkcñ;4miñSÖw€ñ{œk‰ñSãw ñ{œk£ñ;Çù©ñSðwÀñ{œkÀñCœkÉñ{œkÉñCœkÉñKHmàñSkmáñKHmáñ{œkáñCœkéñ{œkéñCœkéñKHmò{œkòCœkòKHmò{œkòCœkò;Çù ò{œk òCœk òKHm òS~m)ò{œk)òCœk)òKHm@ò{œk@òCœkIò{œkIòCœkIòKHm`òS‹mcò;Çùiò›¨niò{œkiòCœk€ò{œk€òCœkòKHmò{œkòCœkƒò;4m‰ò›Qp‰ò{œk‰òCœk ò{œk òCœk¡òKHm¡ò{œk¡òCœk©ò›o©ò{œk©òCœkÀò{œkÀòCœkÉò›qÉò{œkÉòCœkàò{œkéò›(qéò{œkéòCœkó{œk ó›¨n ó{œk óCœk ó{œk!óKHm!ó{œk!óCœk)ó›Qp)ó{œk)óCœk@ó{œkAóKHmAó{œkAóCœkIó›oIó{œkIóCœk`ó{œkió›qió{œkióCœk€ó{œk€óCœkóKHmó{œkóCœk‰ó›(q‰ó{œk‰óCœk ó{œk óCœk¡óKHm¡ó{œk¡óCœk£ó‹n£ó;:n©ó{œk©óCœk©óKHmÀó{œkÀóCœkÉó›ÇoÉó{œkÉóCœkàó{œkàóCœkãó“¢Íãó‹néó›Üoéó{œkéóCœkô{œkôCœkô“÷Íô‹n ô{œk ôCœk ôKHm ô{œk ôCœk#ô“HÎ#ô‹n)ô›Ço)ô{œk)ôCœk@ô{œk@ôCœkCô“«ÎCô‹nIô›ÜoIô{œkIôCœk`ô{œk`ôCœkcô“ýÎcô‹niô›íoiô{œkiôCœk€ô{œk€ôCœk‰ô{œk‰ôCœk‰ôKHm ô{œk ôCœk¡ôKHm¡ô{œk¡ôCœk©ô{œk©ôCœk©ôKHmÀô{œkÀôCœkÁôKHmÁô{œkÁôCœkÉô{œkÉôCœkÉôKHmàô{œkàôCœkéô{œkéôCœkéôKHmõ{œkõCœk õ{œk õCœk õKHm õ{œk õCœk)õ{œk)õCœk)õKHmIõ{œkIõCœkIõKHm`õ{œk`õCœkaõKHmaõ{œkaõCœkiõ{œkiõCœkiõKHm€õSkmõKHmõ{œkõCœk‰õ›Ço‰õ{œk‰õCœk õ{œk õCœk©õ›Üo©õ{œk©õCœkÀõS~mÉõ›íoÉõ{œkÉõCœkàõ{œkàõCœkéõ{œkéõCœkéõKHmöS‹m ö›Ço ö{œk öCœk ö{œk öCœk!öKHm!ö{œk!öCœk)ö›Üo)ö{œk)öCœk@öSâ¢AöKHmAö{œkAöCœkIö{œkIöCœkIöKHm`ö{œk`öCœkiö{œkiöCœkiöKHm€ö{œk€öCœk‰ö{œk‰öCœk‰öKHm ö{œk öCœk©ö{œk©öCœk©öKHmÀö{œkÉö{œkÉöCœkÉöKHmàö{œkéö{œkéöCœkéöKHm÷{œk ÷{œk ÷Cœk ÷KHm ÷{œk)÷{œk)÷Cœk)÷KHm@÷{œkI÷{œkI÷CœkI÷KHm`÷{œk`÷Cœka÷KHma÷{œka÷Cœki÷{œki÷Cœki÷KHm€÷{œk€÷Cœk÷KHm÷{œk÷Cœk‰÷{œk‰÷Cœk‰÷KHm ÷{œk ÷Cœk£÷;Çù©÷{œk©÷Cœk©÷KHmÀ÷{œkÀ÷CœkÉ÷{œkÉ÷CœkÉ÷KHmà÷{œkà÷Cœkø{œkøCœk ø{œk øCœk øKHm ø{œk øCœk)ø›Ço)ø{œk)øCœk@ø{œk@øCœkAøKHmAø{œkAøCœkIø›ÜoIø{œkIøCœk`ø{œk`øCœkaøKHmaø{œkaøCœkiø›íoiø{œkiøCœk€ø{œk€øCœk‰ø›–S‰ø{œk‰øCœk©ø›§S©ø{œk©øCœkÉø›¾WÉø{œkÉøCœkéø›&Xéø{œkéøCœk ù›?X ù{œk ùCœk)ù›VX)ù{œk)ùCœkAùKHmAù{œkAùCœkIù›sXIù{œkIùCœkaùKHmaù{œkaùCœkiù›„Xiù{œkiùCœkÉù{œkÉùCœkÉùKHméù›Çoéù{œkéùCœk ú›Üo ú{œk úCœk)ú›ío)ú{œk)úCœkAúKHmAú{œkAúCœkIú›–SIú{œkIúCœkaúKHmaú{œkaúCœkiú›§Siú{œkiúCœk‰ú›¾W‰ú{œk‰úCœk©ú›&X©ú{œk©úCœkÀú{œkÀúCœkÉú›?XÉú{œkÉúCœkàúSkméú›VXéú{œkéúCœkû{œkûCœk û›sX û{œk ûCœk ûS~m)û›„X)û{œk)ûCœk@û{œk@ûCœkAûKHmAû{œkAûCœkIû{œkIûCœkIûKHm`ûS‹miû›Çoiû{œkiûCœk€û{œk€ûCœk‰û›Üo‰û{œk‰ûCœk û{œk ûCœk©û›ío©û{œk©ûCœkÀû{œkÀûCœkÉû›–SÉû{œkÉûCœkàû{œkéû›§Séû{œkéûCœkü{œk ü›¾W ü{œk üCœk ü{œk)ü›&X)ü{œk)üCœk@ü{œkAüKHmAü{œkAüCœkIü›?XIü{œkIüCœk`ü{œkiü›VXiü{œkiüCœk€ü{œk‰ü›sX‰ü{œk‰üCœk ü{œk©ü›„X©ü{œk©üCœkÀü{œkÁüKHmÁü{œkÁüCœkÉü›ZÉü{œkÉüCœkàü{œkàüCœký{œkýCœk ý{œk ýCœk!ýKHm!ý{œk!ýCœk)ý{œk)ýCœk)ýKHm@ý{œk@ýCœkAýKHmAý{œkAýCœkIý›ÇoIý{œkIýCœk`ý{œk`ýCœkaýKHmaý{œkaýCœkiý{œkiýCœkiýKHm€ý{œk€ýCœkýKHmý{œkýCœk‰ý›Ço‰ý{œk‰ýCœk ý{œk ýCœk¡ýKHm¡ý{œk¡ýCœk©ý›Üo©ý{œk©ýCœkÀý{œkÀýCœkÁýKHmÁý{œkÁýCœkÉý›íoÉý{œkÉýCœkàý{œkàýCœkáýKHmáý{œkáýCœkéý›–Séý{œkéýCœkþ{œkþCœkþKHmþ{œkþCœk þ›§S þ{œk þCœk þ{œk þCœk!þKHm!þ{œk!þCœk)þ›¾W)þ{œk)þCœk@þ{œk@þCœkAþKHmAþ{œkAþCœkIþ›&XIþ{œkIþCœkiþ›?Xiþ{œkiþCœk€þ{œk€þCœkþKHmþ{œkþCœk‰þ›VX‰þ{œk‰þCœk þSkm¡þKHm¡þ{œk¡þCœk©þ›sX©þ{œk©þCœkÀþ{œkÀþCœkÁþKHmÁþ{œkÁþCœkÉþ›„XÉþ{œkÉþCœkàþS~máþKHmáþ{œkáþCœkéþ›Zéþ{œkéþCœkÿ{œkÿCœkÿKHmÿ{œkÿCœk ÿ›{[ ÿ{œk ÿCœk ÿS‹m)ÿ›˜[)ÿ{œk)ÿCœk@ÿ{œk@ÿCœkAÿKHmAÿ{œkAÿCœk`ÿSâ¢aÿKHmaÿ{œkaÿCœk€ÿ{œk€ÿCœkÿKHmÿ{œkÿCœk‰ÿ{œk‰ÿCœk‰ÿKHm ÿ{œk ÿCœk¡ÿKHm¡ÿ{œk¡ÿCœk©ÿ›Ço©ÿ{œk©ÿCœkÀÿ{œkÀÿCœkÁÿKHmÁÿ{œkÁÿCœkÉÿ{œkÉÿCœkÉÿKHmàÿ{œkéÿ›Çoéÿ{œkéÿCœk{œk {œk Cœk KHm {œk){œk)Cœk)KHm@{œkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ{œkÉ›ÇoÉ{œkÉCœkà{œkàCœké›Üoé{œkéCœk{œkCœk ›ío {œk Cœk {œk Cœk){œk)Cœk)KHm@{œk@CœkI›ÇoI{œkICœk`{œk`Cœki›Üoi{œkiCœk€{œk€CœkKHm{œkCœk‰›ío‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›–S©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkàCœkáKHmá{œkáCœké›Çoé{œkéCœk{œkCœkKHm{œkCœk;Çù ›Üo {œk Cœk {œk Cœk!KHm!{œk!Cœk#;Çù)›ío){œk)Cœk@{œk@CœkAKHmA{œkACœkI›–SI{œkICœk`{œk`CœkaKHma{œkaCœki›§Si{œkiCœk€{œk€CœkKHm{œkCœk‰›¾W‰{œk‰Cœk Skm©›&X©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›?XÉ{œkÉCœkà{œkàCœkáKHmá{œkáCœké›VXé{œkéCœk{œkCœkKHm{œkCœk ›sX {œk Cœk {œk Cœk!KHm!{œk!Cœk)›„X){œk)Cœk@{œkAKHmA{œkACœkI›ZI{œkICœk`{œki{œkiCœkiKHm€{œk‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ{œkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk)›Ço){œk)CœkI›ÜoI{œkICœki›íoi{œkiCœk¡KHm¡{œk¡CœkáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm){œk)Cœk)KHmISËqiSõq€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk)›Ço){œk)Cœk@{œkAKHmA{œkACœkI›ÜoI{œkICœk`{œkaKHma{œkaCœki›íoi{œkiCœkKHm{œkCœk‰›¨n‰{œk‰Cœk©›Qp©{œk©CœkÉ›bpÉ{œkÉCœké›oé{œkéCœk ›q {œk Cœk)›V°){œk)CœkI›ˆI{œkICœkaKHma{œkaCœki›Çoi{œkiCœkKHm{œkCœk‰›Üo‰{œk‰Cœk¡KHm¡{œk¡Cœk©›ío©{œk©CœkÁKHmÁ{œkÁCœkÉ›¨nÉ{œkÉCœkà{œkàCœkáKHmá{œkáCœké›Qpé{œkéCœk Skm KHm {œk Cœk ›bp {œk Cœk {œk Cœk! KHm! {œk! Cœk) ›o) {œk) Cœk@ S~mA KHmA {œkA CœkI ›qI {œkI Cœk` {œk` Cœka KHma {œka Cœki ›V°i {œki Cœk€ S‹m KHm {œk Cœk‰ ›ˆ‰ {œk‰ Cœk  {œk  Cœk© {œk© Cœk© KHmÀ Sâ¢É {œkÉ CœkÉ KHmà {œkà Cœké {œké Cœké KHm {œk Cœk KHm {œk Cœk {œk Cœk KHm {œk Cœk! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œkA KHmA {œkA CœkI {œkI CœkI KHm` {œka KHma {œka Cœki {œki Cœki KHm€ {œk KHm {œk Cœk‰ {œk‰ Cœk‰ KHm  {œk© {œk© Cœk© KHmÀ {œkÉ {œkÉ CœkÉ KHmà {œké {œké Cœké KHm {œk KHm {œk Cœk {œk Cœk KHm {œk! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œk@ CœkA KHmA {œkA CœkI {œkI CœkI KHm` {œk` Cœka KHma {œka Cœki {œki Cœki KHm€ {œk€ Cœk KHm {œk Cœk‰ {œk‰ Cœk‰ KHm  {œk  Cœk© {œk© Cœk© KHmÀ {œkÀ CœkÉ {œkÉ CœkÉ KHmà {œkà Cœké {œké Cœké KHm {œk Cœk KHm {œk Cœk {œk Cœk KHm {œk Cœk) {œk) Cœk) KHm@ {œk@ CœkI {œkI CœkI KHm` Skma KHma {œka Cœki {œki Cœki KHm€ {œk€ Cœk‰ ›Ço‰ {œk‰ Cœk  S~m© ›Üo© {œk© CœkÀ {œkÀ CœkÉ ›íoÉ {œkÉ Cœkà {œkà Cœká KHmá {œká Cœkã ;Çùé ›–Sé {œké Cœk {œk Cœk KHm {œk Cœk ›§S {œk Cœk {œk Cœk! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œk@ CœkA KHmA {œkA CœkI ›ÇoI {œkI Cœk` {œk` Cœka KHma {œka Cœki ›Üoi {œki Cœk€ {œk€ Cœk  {œk  Cœk© {œk© Cœk© KHmÀ {œkÀ CœkÉ ›ÇoÉ {œkÉ Cœkà {œkà Cœké ›Üoé {œké Cœk{œkCœkKHm{œkCœk ›ío {œk Cœk {œk Cœk)›–S){œk)Cœk@{œk@CœkI{œkICœkIKHmi›Çoi{œkiCœk€{œk€CœkKHm{œkCœk‰›Üo‰{œk‰Cœk Skm©›ío©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›–SÉ{œkÉCœkàS~mé›§Sé{œkéCœk{œkCœk {œk Cœk KHm S‹m!KHm!{œk!Cœk#;Çù)›Ço){œk)Cœk@{œk@CœkAKHmA{œkACœkI›ÜoI{œkICœk`Sâ¢aKHma{œkaCœkc;Çùi›íoi{œkiCœk€{œk€CœkKHm{œkCœk‰›–S‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›ÇoÉ{œkÉCœkà{œkàCœkáKHmá{œkáCœké›Üoé{œkéCœk{œkCœkKHm{œkCœk ›ío {œk Cœk {œk Cœk!KHm!{œk!Cœk)›–S){œk)Cœk@{œk@CœkAKHmA{œkACœkI›§SI{œkICœk`{œk`CœkaKHma{œkaCœki›¾Wi{œkiCœk€{œk€CœkKHm{œkCœk‰›&X‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›?X©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkàCœkáKHmá{œkáCœké›Çoé{œkéCœk{œkCœkKHm{œkCœk ›Üo {œk Cœk!KHm!{œk!Cœk#;Çù)›ío){œk)Cœk@{œk@CœkAKHmA{œkACœkC;ÇùI›–SI{œkICœk`SkmaKHma{œkaCœki›§Si{œkiCœk€{œk€Cœk‰›¾W‰{œk‰Cœk S~m©›&X©{œk©CœkÀ{œkÀCœkÉ›?XÉ{œkÉCœkà{œkàCœkã;Çùé{œkéCœkéKHm{œkCœk ›Ço {œk Cœk {œk)›Üo){œk)Cœk@{œkAKHmA{œkACœkI›íoI{œkICœk`{œki›–Si{œkiCœk€{œkƒ;Çù‰{œk‰Cœk‰KHm {œk©›Ço©{œk©CœkÀ{œkÉ›ÜoÉ{œkÉCœkà{œkã;Çùé›íoé{œkéCœk{œk ›–S {œk Cœk#;Çù)›§S){œk)Cœk@{œk@CœkAKHmA{œkACœkI›¾WI{œkICœk`SkmaKHma{œkaCœkc;Çùi›&Xi{œkiCœk€{œk€CœkKHm{œkCœk‰›?X‰{œk‰Cœk S~m¡KHm¡{œk¡Cœk©›VX©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›sXÉ{œkÉCœkàS‹m雄Xé{œkéCœk{œkCœk ›Z {œk Cœk Sâ¢!KHm!{œk!Cœk)›{[){œk)Cœk@{œk@CœkAKHmA{œkACœkC;ÇùI›˜[I{œkICœk`{œk`CœkaKHma{œkaCœkc;Çù€{œk€CœkKHm{œkCœk {œk Cœk¡KHm¡{œk¡CœkÀ{œkÀCœkà{œkàCœkã;Çù{œkCœkAKHmA{œkACœkISËqaKHma{œkaCœkiSõqKHm{œkCœk‰SËq¡KHm¡{œk¡Cœk©SõqÁKHmÁ{œkÁCœkÃ;ÇùÉSráKHmá{œkáCœkéSËq Sõq#;‡s)SrAKHmA{œkACœkaKHma{œkaCœkiSËqKHm{œkCœkƒ;‡s‰Sõq “ׂ¡KHm¡{œk¡Cœk©SËqÉSËqã;4mé{œkéCœkéKHmKHm{œkCœk;Çù ›Ço {œk Cœk!KHm!{œk!Cœk)›Üo){œk)Cœk@{œkAKHmA{œkACœkC;âøI›íoI{œkICœk`{œkaKHma{œkaCœki›–Si{œkiCœk€“Îk€{œkKHm{œkCœkƒ;âø‰›§S‰{œk‰Cœk {œk©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ›ÇoÉ{œkÉCœkà{œkáKHmá{œkáCœkã;‡sé›Üoé{œkéCœk{œkKHm{œkCœk ›ío {œk Cœk {œk!KHm!{œk!Cœk)›–S){œk)Cœk@{œkAKHmA{œkACœkI›§SI{œkICœk`{œki›¾Wi{œkiCœk€{œkKHm‰SËq “ׂ {œk¡KHm©SõqÁKHmÉSráKHmé{œkéCœkéKHmKHm {œk Cœk KHm!KHm){œk)Cœk)KHmAKHmI{œkICœkIKHmaKHmi{œkiCœkiKHmKHm‰{œk‰Cœk‰KHm¡KHm©{œk©Cœk©KHmÁKHmÉ{œkÉCœkÉKHmáKHmé{œkéCœkéKHmKHm{œkCœk ›Ço {œk Cœk)›¨n){œk)Cœk@{œkI›QpI{œkICœk`{œkaKHma{œkaCœki›bpi{œkiCœk€{œk‰›sp‰{œk‰Cœk£;Çù©›o©{œk©CœkÉ›qÉ{œkÉCœkáKHmá{œkáCœké›(qé{œkéCœk;âø ›B {œk Cœk#‹n#;:n)›ÅX){œk)Cœk@{œkI›V°I{œkICœk`{œkc“,$c‹ni›Çoi{œkiCœkKHm{œkCœkƒ“n$ƒ‹n‰›¨n‰{œk‰Cœk¡KHm¡{œk¡Cœk©›Qp©{œk©CœkÁKHmÁ{œkÁCœkÉ›bpÉ{œkÉCœkáKHmá{œkáCœké›spé{œkéCœkKHm{œkCœk ›o {œk Cœk!KHm!{œk!Cœk)›q){œk)CœkAKHmA{œkACœkC;4mI›(qI{œkICœki›Bi{œkiCœk‰›ÅX‰{œk‰Cœk©›V°©{œk©CœkÀ{œkËnÃ;:nÉ{œkÉCœkÉKHmà“Îkà{œké›Çoé{œkéCœk“G&‹n ›Üo {œk Cœk {œk Cœk#“&#‹n)›ío){œk)Cœk@SkmAKHmA{œkACœkI›–SI{œkICœk`{œk`CœkaKHma{œkaCœki›§Si{œkiCœk€S~mKHm{œkCœk‰{œk‰Cœk‰KHm {œk Cœk¡KHm¡{œk¡Cœk£;‡s©{œk©Cœk©KHmÀS‹mÁKHmÁ{œkÁCœkÃ;ÇùÉ{œkÉCœkÉKHmà{œkàCœkáKHmá{œkáCœkã;Çùé{œkéCœkéKHm{œkCœkKHm{œkCœk {œk Cœk KHm {œk Cœk!KHm!{œk!Cœk){œk)Cœk)KHm@{œkAKHmA{œkACœkC;‡sI{œkICœkIKHm`{œkaKHma{œkaCœkc;hvi{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk©›Ço©{œk©CœkÀ{œkÁKHmÁ{œkÁCœkÉ›ÜoÉ{œkÉCœkà{œkàCœk雨né{œkéCœk{œkCœk ›Qp {œk Cœk {œk Cœk)›o){œk)Cœk@{œk@CœkI›V°I{œkICœk`{œk`CœkaKHma{œkaCœki›Çoi{œkiCœk€{œk€CœkKHm{œkCœk‰›Üo‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›¨n©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›QpÉ{œkÉCœkàSkmáKHmá{œkáCœké›oé{œkéCœk {œk Cœk KHm {œk Cœk ›V° {œk Cœk {œk Cœk! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œk@ CœkI ›ÇoI {œkI Cœk` {œk` Cœki ›Üoi {œki Cœk€ Skm‰ {œk‰ Cœk‰ KHm  {œk  Cœk¡ KHm¡ {œk¡ Cœk© {œk© Cœk© KHmÀ {œkÀ CœkÉ {œkÉ CœkÉ KHmà {œkà Cœké {œké Cœké KHm!{œk!Cœk !{œk !Cœk !KHm)!{œk)!Cœk)!KHmI!{œkI!CœkI!KHma!KHma!{œka!Cœki!{œki!Cœki!KHm!KHm!{œk!Cœkƒ!;âø‰!{œk‰!Cœk‰!KHm£!³œk£!ƒœk£!;‡s©!›Ço©!{œk©!CœkÁ!KHmÁ!{œkÁ!CœkÃ!‹nÃ!;:nÉ!›ÜoÉ!{œkÉ!Cœká!KHmá!{œká!Cœké!›¨né!{œké!Cœk"KHm"{œk"Cœk";‡s "›Qp "{œk "Cœk)"›o)"{œk)"CœkA"KHmA"{œkA"CœkI"›V°I"{œkI"Cœka"KHmi"›Çoi"{œki"Cœk"KHm"{œk"Cœk‰"›Üo‰"{œk‰"Cœk©"›¨n©"{œk©"CœkÀ"{œkÉ"›QpÉ"{œkÉ"Cœkà"{œké"›oé"{œké"Cœk#{œk #›V° #{œk #Cœk!#KHm!#{œk!#Cœk)#{œk)#Cœk)#KHmA#KHmA#{œkA#CœkI#›ÇoI#{œkI#Cœka#KHma#{œka#Cœki#›Üoi#{œki#Cœk‰#{œk‰#Cœk‰#KHm©#{œk©#Cœk©#KHmÉ#{œkÉ#CœkÉ#KHmá#KHmá#{œká#Cœké#›Çoé#{œké#Cœk$KHm${œk$Cœk $›Üo ${œk $Cœk!$KHm!${œk!$Cœk)$›ío)${œk)$CœkA$KHmA${œkA$CœkI$›¨nI${œkI$Cœka$KHma${œka$Cœki$›Qpi${œki$Cœk$KHm‰$›Ço‰${œk‰$Cœk¡$KHm©$›Üo©${œk©$CœkÁ$KHmÉ$›íoÉ${œkÉ$Cœká$KHmá${œká$Cœké$›¨né${œké$Cœk%KHm%{œk%Cœk %›Qp %{œk %Cœk!%KHm!%{œk!%Cœk)%SËqA%KHmI%Sõqa%KHmi%Sr€%{œk%KHm‰%S'r %{œk¡%KHm©%S:rÀ%{œkÁ%KHmÉ%SMrà%{œká%KHmé%SZr&KHm &Sgr!&KHm)&StrI&Sri&SŽr‰&{œk‰&Cœk‰&KHm©&{œk©&Cœk©&KHmÉ&{œkÉ&CœkÉ&KHmà&{œké&{œké&Cœké&KHm '›Ço '{œk 'Cœk)'›¨n)'{œk)'CœkI'›QpI'{œkI'Cœki'›bpi'{œki'Cœk‰'›o‰'{œk‰'Cœk '“Îk©'›q©'{œk©'CœkÉ'›(qÉ'{œkÉ'Cœkà'“>äé'›Çoé'{œké'Cœk (›¨n ({œk (Cœk)(›Qp)({œk)(Cœk@({œkI(›bpI({œkI(Cœki(›oi({œki(Cœk‰(›q‰({œk‰(Cœk©(›(q©({œk©(CœkÉ(SËqé(Sõq )Sr )“Ø))S'rI){œkI)CœkI)KHmi){œki)Cœki)KHmƒ);âø‰){œk‰)Cœk‰)KHm£);‡s©){œk©)Cœk©)KHmÉ){œkÉ)CœkÉ)KHmá)KHmá){œká)Cœké){œké)Cœké)KHm *›Ço *{œk *Cœk)*›Ço)*{œk)*Cœka*KHma*{œka*Cœk*KHm*{œk*Cœk¡*KHm¡*{œk¡*CœkÁ*KHmÁ*{œkÁ*Cœká*KHmá*{œká*Cœk+KHm+{œk+Cœk!+KHm!+{œk!+Cœk)+;µÜA+KHmA+{œkA+CœkI+SËqa+KHma+{œka+Cœki+Sõq+KHm+{œk+Cœk‰+Sr£+;âø©+S'rÉ+S:ré+SËq,KHm,{œk,Cœk ,Sõq!,KHm!,{œk!,Cœk),SrA,KHmA,{œkA,CœkI,S'ra,KHma,{œka,Cœki,S:r,KHm,{œk,Cœk‰,SMr©,SZrÉ,Sgrã,;âøé,Str -Sr)-SŽrA-KHmA-{œkA-CœkI-S›ra-KHma-{œka-Cœkc-;âøi-{œki-Cœki-KHmƒ-‹nƒ-;:n‰-{œk‰-Cœk‰-KHm©-{œk©-Cœk©-KHmÃ-“ßnÃ-‹nÉ-{œkÉ-CœkÉ-KHmá-KHmá-{œká-Cœkã-“Noã-‹né-{œké-Cœké-KHm.KHm.{œk.Cœk .{œk .Cœk .KHm!.KHm!.{œk!.Cœk).›Ço).{œk).CœkA.KHmA.{œkA.CœkI.›ÇoI.{œkI.Cœka.KHma.{œka.Cœki.;µÜ¡.KHm¡.{œk¡.Cœk©.;µÜÁ.KHmÁ.{œkÁ.CœkÉ.{œkÉ.CœkÉ.KHmé.{œké.Cœké.KHm/KHm/{œk/Cœk /{œk /Cœk /KHm!/KHm!/{œk!/Cœk)/{œk)/Cœk)/KHmA/KHmA/{œkA/CœkC/‹nC/;:nI/{œkI/CœkI/KHmi/SËqƒ/““pƒ/‹n‰/Sõq£/“öp£/‹n©/SrÁ/KHmÁ/{œkÁ/CœkÉ/S'rá/KHmá/{œká/Cœké/S:r0;‡s 0SMr)0SËqI0Sõqi0Sr0KHm0{œk0Cœk‰0S'r©0S:rÁ0KHmÁ0{œkÁ0Cœké0SËq 1SËq)1SõqA1KHmA1{œkA1CœkI1{œkI1CœkI1KHma1KHma1{œka1Cœki1{œki1Cœki1KHm1KHm1{œk1Cœk‰1SËq¡1KHm¡1{œk¡1Cœk©1SõqÁ1KHmÁ1{œkÁ1CœkÉ1Srá1KHmá1{œká1Cœké1S'r2KHm2{œk2Cœk!2KHm!2{œk!2CœkA2KHmA2{œkA2Cœka2KHma2{œka2Cœkc2;‡s2KHm2{œk2Cœkƒ2;‡s‰2{œk‰2Cœk‰2KHm¡2KHm¡2{œk¡2Cœk©2{œk©2Cœk©2KHmÁ2KHmÁ2{œkÁ2CœkÉ2{œkÉ2CœkÉ2KHmá2KHmá2{œká2Cœké2{œké2Cœké2KHm 3{œk 3Cœk 3KHm)3{œk)3Cœk)3KHmI3{œkI3CœkI3KHmi3{œki3Cœki3KHm‰3{œk‰3Cœk‰3KHm¡3KHm¡3{œk¡3Cœk©3{œk©3Cœk©3KHmÁ3KHmÁ3{œkÁ3CœkÃ3;âøÉ3{œkÉ3CœkÉ3KHmá3KHmá3{œká3Cœké3{œké3Cœké3KHm4KHm4{œk4Cœk4‹n4;:n 4{œk 4Cœk 4KHm!4KHm!4{œk!4Cœk#4;‡s)4{œk)4Cœk)4KHmA4KHmA4{œkA4CœkI4{œkI4CœkI4KHma4KHma4{œka4Cœki4{œki4Cœki4KHm4KHm4{œk4Cœk‰4{œk‰4Cœk‰4KHm¡4KHm¡4{œk¡4Cœk©4{œk©4Cœk©4KHmÀ4{œkÀ4CœkÁ4KHmÁ4{œkÁ4CœkÉ4{œkÉ4CœkÉ4KHmà4{œkà4Cœká4KHmá4{œká4Cœké4{œké4Cœké4KHm5KHm5{œk5Cœk 5{œk 5Cœk 5KHm!5KHm!5{œk!5Cœk)5{œk)5Cœk)5KHmA5KHmA5{œkA5CœkI5{œkI5CœkI5KHma5KHma5{œka5Cœki5{œki5Cœki5KHm5KHm5{œk5Cœk‰5›Ço‰5{œk‰5Cœk¡5KHm¡5{œk¡5Cœk£5;âø©5›¨n©5{œk©5CœkÁ5KHmÁ5{œkÁ5CœkÃ5‹nÃ5;:nÉ5›oÉ5{œkÉ5Cœká5KHmá5{œká5Cœkã5‹nã5;:né5›qé5{œké5Cœk6KHm6{œk6Cœk 6›(q 6{œk 6Cœk!6KHm!6{œk!6Cœk#6“Èá#6‹n)6›B)6{œk)6Cœk@6SkmA6KHmA6{œkA6CœkC6“âC6‹nI6›V°I6{œkI6Cœk`6{œk`6Cœka6KHma6{œka6Cœkc6“}âc6‹ni6›Òæi6{œki6Cœk€6{œk€6Cœk6KHm6{œk6Cœkƒ6“åâƒ6‹n‰6›bç‰6{œk‰6Cœk 6{œk 6Cœk¡6KHm¡6{œk¡6Cœk£6“Lã£6‹n©6›óç©6{œk©6CœkÀ6{œkÀ6CœkÁ6KHmÁ6{œkÁ6CœkÃ6“ÚãÃ6‹nÉ6›oýÉ6{œkÉ6Cœkà6{œkà6Cœká6KHmá6{œká6Cœkã6“mäã6‹né6›Éýé6{œké6Cœk7{œk7Cœk7KHm7{œk7Cœk7“Ûä7‹n 7›&þ 7{œk 7Cœk 7{œk!7KHm!7{œk!7Cœk)7›I )7{œk)7Cœk@7{œkA7KHmA7{œkA7CœkI7›˜þI7{œkI7Cœk`7{œka7KHma7{œka7Cœki7›Ä i7{œki7Cœk€7{œk7KHm7{œk7Cœk‰7›"ÿ‰7{œk‰7Cœk 7{œk¡7KHm¡7{œk¡7Cœk©7›6 ©7{œk©7CœkÀ7{œkÁ7KHmÁ7{œkÁ7CœkÉ7›ÿÉ7{œkÉ7Cœkà7{œká7KHmá7{œká7Cœké7›é7{œké7Cœk8{œk8KHm8{œk8Cœk 8›! 8{œk 8Cœk 8Skm!8KHm!8{œk!8Cœk#8;‡s)8›2 )8{œk)8Cœk@8{œk@8CœkA8KHmA8{œkA8CœkC8;4mI8›’ I8{œkI8Cœk`8{œk`8Cœka8KHma8{œka8Cœki8›± i8{œki8Cœk€8{œk€8Cœk8KHm8{œk8Cœkƒ8;Çù‰8›Î ‰8{œk‰8Cœk 8{œk 8Cœk©8›] ©8{œk©8CœkÃ8;‡sÉ8›n É8{œkÉ8Cœká8KHmá8{œká8Cœké8›Ò é8{œké8Cœk9KHm9{œk9Cœk 9›2 9{œk 9Cœk!9KHm!9{œk!9Cœk)9›ª )9{œk)9CœkA9KHmA9{œkA9CœkI9› I9{œkI9Cœki9› i9{œki9Cœkƒ9;‡s‰9›t ‰9{œk‰9Cœk¡9KHm¡9{œk¡9Cœk©9›… ©9{œk©9CœkÁ9KHmÁ9{œkÁ9CœkÃ9;‡sÉ9›é É9{œkÉ9Cœká9KHmá9{œká9Cœkã9;‡sé9›Çoé9{œké9Cœk:KHm:{œk:Cœk:Óœk:;‡s :›¨n :{œk :Cœk!:KHm!:{œk!:Cœk):›o):{œk):CœkA:KHmA:{œkA:CœkI:›qI:{œkI:Cœka:KHmi:›(qi:{œki:Cœkƒ:;Çù‰:›B‰:{œk‰:Cœk¡:KHm¡:{œk¡:Cœk©:›V°©:{œk©:CœkÁ:KHmÁ:{œkÁ:CœkÉ:›ÒæÉ:{œkÉ:Cœká:KHmá:{œká:Cœké:›bçé:{œké:Cœk;{œk;Cœk;KHm;{œk;Cœk ;›óç ;{œk ;Cœk ;{œk ;Cœk);›oý);{œk);CœkI;›ÉýI;{œkI;Cœki;›&þi;{œki;Cœk‰;›I ‰;{œk‰;Cœk©;›˜þ©;{œk©;CœkÉ;›Ä É;{œkÉ;Cœká;KHmá;{œká;Cœké;›"ÿé;{œké;Cœk<KHm<{œk<Cœk <›6 <{œk <Cœk!<KHm!<{œk!<Cœk)<›ÿ)<{œk)<CœkA<KHmA<{œkA<CœkI<›I<{œkI<Cœka<KHma<{œka<Cœki<›! i<{œki<Cœk€<{œk€<Cœk<KHm<{œk<Cœk‰<›2 ‰<{œk‰<Cœk <{œk <Cœk¡<KHm¡<{œk¡<Cœk©<›’ ©<{œk©<CœkÉ<›± É<{œkÉ<Cœké<›Î é<{œké<Cœk =›] ={œk =Cœk!=KHm!={œk!=Cœk)=›n )={œk)=CœkA=KHmA={œkA=CœkI=›Ò I={œkI=Cœka=KHma={œka=Cœki=›2 i={œki=Cœk=KHm={œk=Cœk‰=›ª ‰={œk‰=Cœk¡=KHm¡={œk¡=Cœk©=› ©={œk©=CœkÁ=KHmÁ={œkÁ=CœkÉ=› É={œkÉ=Cœká=KHmá={œká=Cœké=›t é={œké=Cœk>{œk>KHm>{œk>Cœk >›… >{œk >Cœk!>KHm!>{œk!>Cœk)>›é )>{œk)>CœkA>KHmA>{œkA>CœkI>{œkI>CœkI>KHmi>{œki>Cœki>KHm€>{œk‰>{œk‰>Cœk‰>KHm >{œkÉ>›ÇoÉ>{œkÉ>Cœká>KHmá>{œká>Cœké>›Üoé>{œké>Cœk?KHm?{œk?Cœk ?›¨n ?{œk ?Cœk)?›Qp)?{œk)?CœkI?›bpI?{œkI?Cœki?›Çoi?{œki?Cœk?KHm?{œk?Cœk‰?›Üo‰?{œk‰?Cœk¡?KHm¡?{œk¡?Cœk©?›¨n©?{œk©?CœkÁ?KHmÁ?{œkÁ?CœkÉ?›QpÉ?{œkÉ?Cœká?KHmá?{œká?Cœké?›bpé?{œké?Cœk@KHm@{œk@Cœk @{œk @Cœk @KHm)@{œk)@Cœk)@KHmI@{œkI@CœkI@KHmi@{œki@Cœki@KHm‰@{œk‰@Cœk‰@KHm¡@KHm¡@{œk¡@Cœk©@SËqÁ@KHmÁ@{œkÁ@CœkÉ@Sõqá@KHmá@{œká@Cœké@SrAKHmA{œkACœk AS'r!AKHm!A{œk!ACœk)AS:rAAKHmAA{œkAACœkIASMr`A{œk`ACœkaAKHmaA{œkaACœkiASZr€A{œk€ACœkAKHmA{œkACœk‰ASgr¡AKHm¡A{œk¡ACœk©AStrÁAKHmÁA{œkÁACœkÉASráAKHmáA{œkáACœkéASŽrBKHmB{œkBCœk BS›r!BKHm!B{œk!BCœkABKHmAB{œkABCœkIB{œkIBCœkIBKHm`B{œk`BCœkaBKHmaB{œkaBCœkiB{œkiBCœkiBKHm€B{œk€BCœkBKHmB{œkBCœk‰B{œk‰BCœk‰BKHm¡BKHm¡B{œk¡BCœk©B{œk©BCœk©BKHmÁBKHmÁB{œkÁBCœkÉB{œkÉBCœkÉBKHmáBKHmáB{œkáBCœkéB{œkéBCœkéBKHmCKHmC{œkCCœk C{œk CCœk CKHm!CKHm!C{œk!CCœk)C{œk)CCœk)CKHmACKHmAC{œkACCœkIC{œkICCœkICKHm`C{œk`CCœkaCKHmaC{œkaCCœkiC{œkiCCœkiCKHm€C{œk€CCœkCKHmC{œkCCœk‰C{œk‰CCœk‰CKHm¡CKHm¡C{œk¡CCœk©C{œk©CCœk©CKHmÁCKHmÁC{œkÁCCœkÉC{œkÉCCœkÉCKHmáCKHmáC{œkáCCœkéC{œkéCCœkéCKHmDKHmD{œkDCœk D{œk DCœk DKHm!DKHm!D{œk!DCœk)D{œk)DCœk)DKHmADKHmAD{œkADCœkID{œkIDCœkIDKHm`D{œk`DCœkaDKHmaD{œkaDCœkiD{œkiDCœkiDKHm€D{œk€DCœkDKHmD{œkDCœk‰D{œk‰DCœk‰DKHm E›¨n E{œk ECœk!EKHm!E{œk!ECœk)E›¨n)E{œk)ECœkAEKHmAE{œkAECœkIE{œkIECœkIEKHmaEKHmaE{œkaECœkiE›ÇoiE{œkiECœkEKHmE{œkECœk‰E›Üo‰E{œk‰ECœk¡EKHm¡E{œk¡ECœkÁEKHmÁE{œkÁECœkáEKHmáE{œkáECœkFKHmF{œkFCœk F{œk FCœk!FKHm!F{œk!FCœk)F{œk)FCœk)FKHm@F{œk@FCœkAFKHmAF{œkAFCœkIF{œkIFCœkIFKHmaFKHmaF{œkaFCœkiF{œkiFCœkiFKHmFKHmF{œkFCœk‰F{œk‰FCœk‰FKHm¡FKHm¡F{œk¡FCœk©F{œk©FCœk©FKHmÁFKHmÁF{œkÁFCœkÉFSËqáFKHmáF{œkáFCœkGKHmG{œkGCœk G{œk GCœk GKHm!GKHm!G{œk!GCœk)G›Ço)G{œk)GCœkAGKHmAG{œkAGCœkIG›ÜoIG{œkIGCœkaGKHmaG{œkaGCœkGKHmG{œkGCœk‰GSËq¡GKHm¡G{œk¡GCœk©G{œk©GCœk©GKHmÁGKHmÁG{œkÁGCœkÉG{œkÉGCœkÉGKHmàG{œkàGCœkéG{œkéGCœkéGKHmH{œkHCœk H{œk HCœk HKHm!HKHm!H{œk!HCœk)H{œk)HCœk)HKHmAHKHmAH{œkAHCœkIH{œkIHCœkIHKHmiH{œkiHCœkiHKHmHKHmH{œkHCœk‰H{œk‰HCœk‰HKHm¡HKHm¡H{œk¡HCœk©H{œk©HCœk©HKHmÉH{œkÉHCœkÉHKHméH{œkéHCœkéHKHm ISËq!IKHm!I{œk!ICœk)I{œk)ICœk)IKHmAIKHmAI{œkAICœkII{œkIICœkIIKHmaIKHmaI{œkaICœkiI{œkiICœkiIKHmIKHmI{œkICœk‰I{œk‰ICœk‰IKHm¡IKHm¡I{œk¡ICœk©I{œk©ICœk©IKHmÁIKHmÁI{œkÁICœkÉI{œkÉICœkÉIKHmáIKHmáI{œkáICœkéI›ÇoéI{œkéICœk J{œk JCœk JKHm!JKHm!J{œk!JCœk)J{œk)JCœk)JKHmIJ{œkIJCœkIJKHm`J{œk`JCœkiJ{œkiJCœkiJKHm€J{œk€JCœkJKHmJ{œkJCœk‰J{œk‰JCœk‰JKHm¡JKHm¡J{œk¡JCœk©J›¨n©J{œk©JCœkÉJ›QpÉJ{œkÉJCœkéJ›oéJ{œkéJCœk K›q K{œk KCœk)K›(q)K{œk)KCœkIK›¨nIK{œkIKCœkcK;âøiK›QpiK{œkiKCœk‰K›o‰K{œk‰KCœk©K›q©K{œk©KCœkÃK;hvÉK›(qÉK{œkÉKCœkáKKHmáK{œkáKCœkãK;hvLKHmL{œkLCœkL;hv L{œk LCœk LKHm#L;hv)L{œk)LCœk)LKHmCL;hvIL{œkILCœkILKHmcL;hviL{œkiLCœkiLKHmƒL;hv‰L›Ço‰L{œk‰LCœk L{œk LCœk£L;hv©L›Ço©L{œk©LCœkÀL{œkÀLCœkÃL;hvÉLSËqãL;hvéLSõqM;hv MSr!MKHm!M{œk!MCœk#M;hv)MS'rCM;hvIM;µÜ`M{œk`MCœkcM;hviM;µÜ€M{œk€MCœkƒM;hv‰M;µÜ¡MKHm¡M{œk¡MCœk£M;hv©MSËqÁMKHmÁM{œkÁMCœkÃM;hvÉMSõqãM;hvéMSrN;hv NS'r N{œk NCœk#N;hv)NS:r@N{œk@NCœkCN;hvINSËqcN;hviNSõqƒN;hv‰NSr£N;hv©NS'rÁNKHmÁN{œkÁNCœkÃN;hvÉNS:ràN{œkàNCœkáNKHmáN{œkáNCœkãN;hvéNSËqO{œkOCœkO;hv OSõq#O;hv)OSrCO;hvIOS'rcO;hviOS:rƒO;hv‰OSËq£O;hv©OSõqÃO;hvÉOSrãO;hvéOS'rPKHmP{œkPCœkP;hv PS:r P{œk PCœk#P;hv)PSËq@P{œk@PCœkCP;hvIPSõqcP;hviPSrƒP;hv‰PS'r£P;hv©PS:rÃP;hvÉPSËqéPSõqQ‹nQ;:n QSr)QSËqCQ“µICQ‹nIQSõqcQ“ JcQ‹niQSr‰QSËq©QSõqÁQKHmÁQ{œkÁQCœkÃQ;‡sÉQSrãQ³œkãQƒœkãQ;4méQS'rRÓœkR³œkRƒœkR;‡s RS:r R{œk RCœk!RKHm!R{œk!RCœk)RSMr@R{œk@RCœkARKHmAR{œkARCœkIRSËqaRKHmaR{œkaRCœkiRSõqRKHmR{œkRCœk‰RSr¡RKHm¡R{œk¡RCœk©RS'rÉRS:ràR{œkàRCœkéRSMrS{œkSCœk SSËq!SKHm!S{œk!SCœk)SSõqISSraSKHmaS{œkaSCœkiSS'r‰SS:r¡SKHm¡S{œk¡SCœk©SSMrÉSSËqáSKHmáS{œkáSCœkéSSõq TSr!TKHm!T{œk!TCœk)TSËqITSõqaTKHmaT{œkaTCœkiTSr‰TS'r¡TKHm¡T{œk¡TCœk©TSËqÁTKHmÁT{œkÁTCœkÉTSõqàT{œkàTCœkéTSrU{œkUCœk US'r!UKHm!U{œk!UCœk)USËqAUKHmAU{œkAUCœkIUSõqaUKHmaU{œkaUCœkiUSr‰US'r©USËqÉUSõqáUKHmáU{œkáUCœkéUSrVKHmV{œkVCœk VS'r!VKHm!V{œk!VCœk)VS:rAVKHmCV³œkCVƒœkCV;‡sIVSËqaVKHmiVSõqVKHm‰VSr¡VKHm©VS'rÁVKHmàV{œkàVCœkáVKHmW{œkWCœkWKHm!WKHm!W{œk!WCœk)W{œk)WCœk)WKHmAWKHmAW{œkAWCœkIW{œkIWCœkIWKHmaWKHmaW{œkaWCœkcWËœkcW‹ncW;:niW{œkiWCœkiWKHmWKHmW{œkWCœk‰W{œk‰WCœk‰WKHm¡WKHm¡W{œk¡WCœk£W“SR£W‹n©W{œk©WCœk©WKHmÁWKHmÁW{œkÁWCœkÃW“SÃW‹nÉW{œkÉWCœkÉWKHmáWKHmáW{œkáWCœkãW“áSãW‹néW{œkéWCœkéWKHmXKHmX{œkXCœk X›o X{œk XCœk!XKHm!X{œk!XCœk)X›q)X{œk)XCœkAXKHmAX{œkAXCœkIX›V°IX{œkIXCœkaXKHmaX{œkaXCœkiX›ˆiX{œkiXCœk‰X›o‰X{œk‰XCœk¡XKHm¡X{œk¡XCœk©X›q©X{œk©XCœkÉX›V°ÉX{œkÉXCœkéX›ˆéX{œkéXCœk Y{œk YCœk YKHm Y{œk YCœk)Y›Ço)Y{œk)YCœk@Y{œk@YCœkIY{œkIYCœkIYKHmcY‹ncY;:niY{œkiYCœkiYKHm‰Y{œk‰YCœk‰YKHm©Y{œk©YCœk©YKHmÃY‹nÃY;:néY›¨néY{œkéYCœk Z›¨n Z{œk ZCœk)ZSËqIZSõqiZSrƒZ‹nƒZ;:n‰ZS'r©ZS:rÃZ‹nÃZ;:nÉZSMrãZ‹nãZ;:n[‹n[;:nC[‹nC[;:nI[SËq`[{œk`[Cœkc[‹nc[;:ni[Sõq€[{œk€[Cœkƒ[‹nƒ[;:n‰[Sr£[‹n£[;:n©[SËqÃ[‹nÃ[;:nÉ[{œkÉ[CœkÉ[KHmé[{œké[Cœké[KHm\KHm\{œk\Cœk \{œk \Cœk \KHm)\{œk)\Cœk)\KHmI\{œkI\CœkI\KHmi\{œki\Cœki\KHm‰\{œk‰\Cœk‰\KHm©\{œk©\Cœk©\KHmÉ\{œkÉ\CœkÉ\KHmé\{œké\Cœké\KHm ]{œk ]Cœk ]KHm#]‹n#];:n)]{œk)]Cœk)]KHmI]{œkI]CœkI]KHmi]{œki]Cœki]KHm‰]{œk‰]Cœk‰]KHm©]{œk©]Cœk©]KHmÉ]{œkÉ]CœkÉ]KHmé]{œké]Cœké]KHm ^{œk ^Cœk ^KHm)^{œk)^Cœk)^KHmI^{œkI^CœkI^KHmi^{œki^Cœki^KHm‰^{œk‰^Cœk‰^KHm©^{œk©^Cœk©^KHmÃ^;ÇùÉ^{œkÉ^CœkÉ^KHmá^KHmá^{œká^Cœké^{œké^Cœké^KHm_KHm_{œk_Cœk _{œk _Cœk)_›Ço)_{œk)_Cœk@_{œk@_CœkI_›ÜoI_{œkI_Cœki_›¨ni_{œki_Cœk‰_›o‰_{œk‰_Cœk©_›q©_{œk©_CœkÉ_›(qÉ_{œkÉ_Cœkà_{œkà_Cœké_›V°é_{œké_Cœk`{œk`Cœk `›ˆ `{œk `Cœk)`›Òæ)`{œk)`CœkI`›EI`{œkI`Cœki`›bçi`{œki`Cœk‰`›,²‰`{œk‰`Cœk `{œk `Cœk¡`KHm¡`{œk¡`Cœk©`›=²©`{œk©`CœkÀ`{œkÀ`CœkÉ`›óçÉ`{œkÉ`Cœké`›«ãé`{œké`Cœk a›MÍ a{œk aCœk!aKHm!a{œk!aCœk)a›^Í )a{œk)aCœkIa›oýIa{œkIaCœk`a{œk`aCœkca‹nca;:nia› ³ia{œkiaCœk€a{œk€aCœkaKHma{œkaCœk‰a›)ä‰a{œk‰aCœk a“Ø£a‹n£a;:n©a›Éý©a{œk©aCœkÀa“ØÉa›ÀäÉa{œkÉaCœkàa“Øãa‹nãa;:néa›FÎ éa{œkéaCœkb“Øb‹nb;:n b›&þ b{œk bCœk#b‹n#b;:n)b›I )b{œk)bCœkCb‹nCb;:nIb›¾Î Ib{œkIbCœkib›˜þib{œkibCœk‰b›Ä ‰b{œk‰bCœk©b›2Ï ©b{œk©bCœkÉb›CÏ Éb{œkÉbCœkéb›"ÿéb{œkébCœk c›6 c{œk cCœk)c›ÃÏ )c{œk)cCœkIc›ÿIc{œkIcCœkcc‹ncc;:nic›ic{œkicCœk‰c›8‰c{œk‰cCœk©c›†Ð ©c{œk©cCœkÉc›—Ð Éc{œkÉcCœkéc›Çoéc{œkécCœk d›Üo d{œk dCœk)d›¨n)d{œk)dCœkId›oId{œkIdCœkid›qid{œkidCœk‰d›(q‰d{œk‰dCœk©d›V°©d{œk©dCœkÀd{œkÀdCœkÉd›ˆÉd{œkÉdCœkàd{œkàdCœkéd›Òæéd{œkédCœk e›E e{œk eCœk)e›bç)e{œk)eCœkIe›,²Ie{œkIeCœkie›=²ie{œkieCœk€e{œk€eCœk‰e›óç‰e{œk‰eCœk e{œk eCœk©e›«ã©e{œk©eCœkÉe›MÍ Ée{œkÉeCœkée›^Í ée{œkéeCœk f›oý f{œk fCœk)f› ³)f{œk)fCœk@f{œk@fCœkIf›)äIf{œkIfCœk`f{œk`fCœkcf‹ncf;:nif›Éýif{œkifCœk‰f›Àä‰f{œk‰fCœk£f;‡s©f›FÎ ©f{œk©fCœkÉf›&þÉf{œkÉfCœkéf›I éf{œkéfCœkg{œkgCœk g›¾Î g{œk gCœk g{œk gCœk)g›˜þ)g{œk)gCœkIg›Ä Ig{œkIgCœkig›2Ï ig{œkigCœk‰g›CÏ ‰g{œk‰gCœk©g›"ÿ©g{œk©gCœkÀg{œkÀgCœkÉg›6 Ég{œkÉgCœkàg{œkàgCœkég›ÃÏ ég{œkégCœk h›ÿ h{œk hCœk)h›)h{œk)hCœkAhKHmAh{œkAhCœkIh›8Ih{œkIhCœkih›†Ð ih{œkihCœk€h{œk€hCœk‰h›—Ð ‰h{œk‰hCœk h{œk hCœk©h{œk©hCœk©hKHmÉh›ÇoÉh{œkÉhCœkéh›Üoéh{œkéhCœk i{œk iCœk iKHm!iKHm!i{œk!iCœk)i›Ço)i{œk)iCœk@i{œk@iCœkAiKHmAi{œkAiCœkIi›ÜoIi{œkIiCœk`i{œk`iCœkaiKHmai{œkaiCœkii›íoii{œkiiCœk‰i›–S‰i{œk‰iCœk£i‹n£i;:nÁiKHmÁi{œkÁiCœkáiKHmái{œkáiCœkãi“Ýmãi‹nj{œkjCœkjKHmj{œkjCœkj“Unj‹n j{œk jCœk#j“¸n#j‹nCj“oCj‹nIj{œkIjCœkIjKHmij›Çoij{œkijCœkjKHmj{œkjCœk‰j›Üo‰j{œk‰jCœk¡jKHm¡j{œk¡jCœk©j{œk©jCœk©jKHmÀj{œkÀjCœkÁjKHmÁj{œkÁjCœkÉj{œkÉjCœkÉjKHmàj{œkàjCœkájKHmáj{œkájCœkãj‹nãj;:néj{œkéjCœkéjKHmkKHmk{œkkCœk k{œk kCœk kKHm!kKHm!k{œk!kCœk#k‹n#k;:n)k{œk)kCœk)kKHmAkKHmAk{œkAkCœkIk{œkIkCœkIkKHmakKHmak{œkakCœkck‹nck;:nik{œkikCœkikKHmkKHmk{œkkCœk‰k{œk‰kCœk‰kKHm¡kKHm¡k{œk¡kCœk£k‹n£k;:n©k{œk©kCœk©kKHmÀk{œkÀkCœkÉk›ÇoÉk{œkÉkCœkàk{œkàkCœkãk‹nãk;:nék›Üoék{œkékCœkl‹nl;:n l›¨n l{œk lCœk#l‹n#l;:n)l›Qp)l{œk)lCœkCl‹nCl;:nIl›oIl{œkIlCœkcl‹ncl;:nil›qil{œkilCœkƒl‹nƒl;:n‰l›(q‰l{œk‰lCœk£l‹n£l;:n©l›V°©l{œk©lCœkÀl“ÎkÃl‹nÃl;:nÉl›ˆÉl{œkÉlCœkãl‹nãl;:nél›÷Dél{œkélCœkm;‡s m›E m{œk mCœk#m;‡s)m›Òæ)m{œk)mCœkCm;‡sIm›EIm{œkImCœk`m{œk`mCœkcm;‡sim›®Eim{œkimCœk€m{œk€mCœk‰m›ÉE‰m{œk‰mCœk©m›bç©m{œk©mCœkÉm›,²Ém{œkÉmCœkámKHmém›=²ém{œkémCœknKHm n›]² n{œk nCœk!nKHm)n›óç)n{œk)nCœkAnKHmIn›«ãIn{œkInCœkanKHmin›MÍ in{œkinCœknKHmn{œknCœk‰n›oý‰n{œk‰nCœk©n›Ço©n{œk©nCœkÉn›ÜoÉn{œkÉnCœkén›¨nén{œkénCœko;Çù o›Qp o{œk oCœk#o;Çù)o›o)o{œk)oCœkIo›qIo{œkIoCœkio›(qio{œkioCœk‰o›V°‰o{œk‰oCœk©o›ˆ©o{œk©oCœkÉo›÷DÉo{œkÉoCœkéo›Eéo{œkéoCœk p›Òæ p{œk pCœk)p›E)p{œk)pCœkCp;ÇùIp›®EIp{œkIpCœkcp;Çùip›ÉEip{œkipCœk‰p›bç‰p{œk‰pCœk©p›,²©p{œk©pCœkÉp›=²Ép{œkÉpCœkép›]²ép{œképCœk q›óç q{œk qCœk)q›«ã)q{œk)qCœkIq›MÍ Iq{œkIqCœkiq›oýiq{œkiqCœk‰q{œk‰qCœk‰qKHm©q{œk©qCœk©qKHmÉq{œkÉqCœkÉqKHméq{œkéqCœkéqKHm r›Ço r{œk rCœk)r›Üo)r{œk)rCœkIr›ÇoIr{œkIrCœkir›Üoir{œkirCœk‰r{œk‰rCœk‰rKHm©r›Ço©r{œk©rCœkÉr›ÜoÉr{œkÉrCœkárKHmár{œkárCœkér›íoér{œkérCœksKHms{œksCœk s{œk sCœk sKHm)s›Ço)s{œk)sCœkAsKHmAs{œkAsCœkIs›ÜoIs{œkIsCœkasKHmas{œkasCœkis›íois{œkisCœksKHms{œksCœk‰s{œk‰sCœk‰sKHm¡sKHm¡s{œk¡sCœk©s›Ço©s{œk©sCœkÁsKHmÁs{œkÁsCœkÉs›ÜoÉs{œkÉsCœkés›íoés{œkésCœk t{œk tCœk tKHm)t›Ço)t{œk)tCœkIt›ÜoIt{œkItCœkatKHmat{œkatCœkit›íoit{œkitCœktKHmt{œktCœk‰t{œk‰tCœk‰tKHm¡tKHm¡t{œk¡tCœk©t{œk©tCœk©tKHmÁtKHmÁt{œkÁtCœkÉt{œkÉtCœkÉtKHmátKHmát{œkátCœkét{œkétCœkétKHmuKHmu{œkuCœk u{œk uCœk uKHm!uKHm!u{œk!uCœk)uSËqAuKHmAu{œkAuCœkIuSõqauKHmau{œkauCœkiuSr€u{œkuKHmu{œkuCœk‰uS'r¡uKHm¡u{œk¡uCœk©uS:rÁuKHmÁu{œkÁuCœkÉuSËqáuKHmáu{œkáuCœkãu;ÇùéuSõqvKHmv{œkvCœk vSr!vKHm!v{œk!vCœk)vS'rAvKHmAv{œkAvCœkIvS:ravKHmav{œkavCœkivSËq€v“Îk€v{œkvKHmv{œkvCœk‰vSõq¡vKHm¡v{œk¡vCœk©vSrÁvKHmÁv{œkÁvCœkÉvS'rávKHmáv{œkávCœkévSËqwKHmw{œkwCœk wSõq!wKHm!w{œk!wCœk)wSrAwKHmAw{œkAwCœkIwS'rawKHmaw{œkawCœkiwSËqwKHmw{œkwCœk‰wSõq¡wKHm¡w{œk¡wCœk©wSrÁwKHmÁw{œkÁwCœkÉwS'réwSËq xSõq)xSrIx{œkIxCœkIxKHm`x{œk`xCœkix{œkixCœkixKHm€x{œk€xCœk‰x{œk‰xCœk‰xKHm©x{œk©xCœk©xKHmÉx{œkÉxCœkÉxKHmáxKHmáx{œkáxCœkéx{œkéxCœkéxKHmyKHmy{œkyCœk y{œk yCœk yKHm!yKHm!y{œk!yCœk)y{œk)yCœk)yKHmAyKHmAy{œkAyCœkIy{œkIyCœkIyKHmayKHmay{œkayCœkiy{œkiyCœkiyKHmyKHmy{œkyCœk‰y›Ço‰y{œk‰yCœk¡yKHm¡y{œk¡yCœk©y›Üo©y{œk©yCœkÉy›íoÉy{œkÉyCœkày{œkéy›–Séy{œkéyCœk z›§S z{œk zCœk!zKHm!z{œk!zCœk)z›¾W)z{œk)zCœkAzKHmAz{œkAzCœkIz›&XIz{œkIzCœk€z{œk€zCœkzKHmz{œkzCœk zSkm¡zKHm¡z{œk¡zCœkÀz{œkÀzCœkÁzKHmÁz{œkÁzCœkàzS~mázKHmáz{œkázCœkéz{œkézCœkézKHm{{œk{Cœk{KHm{{œk{Cœk {›Ço {{œk {Cœk {{œk {Cœk){›Üo){{œk){Cœk@{{œk@{CœkI{{œkI{CœkI{KHm`{{œki{›Çoi{{œki{Cœk€{{œk‰{›Üo‰{{œk‰{Cœk {{œk¡{KHm¡{{œk¡{Cœk©{›ío©{{œk©{CœkÀ{{œkÁ{KHmÁ{{œkÁ{CœkÉ{›–SÉ{{œkÉ{Cœkà{{œká{KHmá{{œká{Cœké{SËq|{œk |SËq |{œk)|Sõq@|{œkA|KHmA|{œkA|CœkI|Sri|S'r‰|S:r©|SMrÁ|KHmÁ|{œkÁ|CœkÉ|{œkÉ|CœkÉ|KHmá|KHmá|{œká|Cœké|›Çoé|{œké|Cœk}KHm}{œk}Cœk }›Üo }{œk }Cœk!}KHm!}{œk!}Cœk)}›ío)}{œk)}CœkA}KHmA}{œkA}CœkI}›–SI}{œkI}Cœka}KHma}{œka}Cœk}KHm}{œk}Cœk‰}{œk‰}Cœk‰}KHm¡}KHm¡}{œk¡}Cœk©}›Ço©}{œk©}CœkÁ}KHmÁ}{œkÁ}CœkÉ}›ÜoÉ}{œkÉ}Cœká}KHmá}{œká}Cœké}›íoé}{œké}Cœk~KHm~{œk~Cœk ~›–S ~{œk ~Cœk!~KHm!~{œk!~Cœk)~›§S)~{œk)~CœkA~KHmI~›¾WI~{œkI~Cœka~KHm~KHm¡~KHm©~{œk©~Cœk©~KHmÁ~KHmÉ~›ÇoÉ~{œkÉ~Cœká~KHmé~›Üoé~{œké~CœkKHm ›ío {œk Cœk!KHmAKHmaKHmi{œkiCœkiKHmKHm‰{œk‰Cœk‰KHm¡KHm©{œk©Cœk©KHmÁKHmÉ{œkÉCœkÉKHmà“ØáKHmé›Çoé{œkéCœk€“Ø€KHm €›Üo €{œk €Cœk €“ׂ!€KHm)€›ío)€{œk)€Cœk@€“ׂA€KHmI€›¨nI€{œkI€Cœk`€“Îka€KHmc€;Çùi€›oi€{œki€Cœk€€{œk€KHm‰€›Ço‰€{œk‰€Cœk¡€KHm©€›Üo©€{œk©€CœkÀ€“ׂÁ€KHmÉ€›íoÉ€{œkÉ€Cœká€KHm逛¨né€{œké€CœkKHm ›o {œk Cœk!KHm){œk)Cœk)KHmAKHmI›ÇoI{œkICœkaKHmi›Üoi{œkiCœkKHm‰›ío‰{œk‰Cœk¡KHm©{œk©Cœk©KHmÁKHmÉ›ÇoÉ{œkÉCœkáKHmé›Üoé{œkéCœk‚KHm!‚KHmA‚KHmI‚{œkI‚CœkI‚KHma‚KHmi‚›Çoi‚{œki‚Cœk‚KHm‰‚›Üo‰‚{œk‰‚Cœk¡‚KHm©‚›ío©‚{œk©‚CœkÁ‚KHmÉ‚›–SÉ‚{œkÉ‚Cœká‚KHmé‚›§Sé‚{œké‚CœkƒKHm!ƒKHmAƒKHmaƒKHmcƒ;ÇùƒKHm¡ƒKHmÁƒKHmáƒKHm„KHm „{œk „Cœk „KHm!„KHm)„›Ço)„{œk)„CœkA„KHmI„›ÜoI„{œkI„Cœka„KHmi„›íoi„{œki„Cœk„KHm‰„›–S‰„{œk‰„Cœk¡„KHm©„›§S©„{œk©„CœkÁ„KHmÉ„›¾WÉ„{œkÉ„Cœká„KHmé„›&Xé„{œké„Cœk…KHm …›?X …{œk …Cœk …“Îk!…KHm)…›VX)…{œk)…CœkA…KHmI…›sXI…{œkI…Cœka…KHmi…›„Xi…{œki…Cœk…KHm‰…›Z‰…{œk‰…Cœk¡…KHmÁ…KHmà…{œká…KHm†{œk†KHm †{œk!†KHm#†;ÇùA†KHma†KHm†KHmƒ†;Çù †{œk¡†KHmÁ†KHmà†{œká†KHm‡KHm!‡KHmA‡KHma‡KHm‡KHm¡‡KHmÁ‡KHmá‡KHmˆKHm!ˆKHmAˆKHm`ˆ{œkaˆKHm€ˆ{œkˆKHm¡ˆKHmÁˆKHmɈ;µÜáˆKHméˆ;µÜ‰KHm ‰;µÜ!‰KHm)‰;µÜA‰KHmI‰{œkI‰CœkI‰KHma‰KHmi‰{œki‰Cœki‰KHm‰KHm‰‰{œk‰‰Cœk‰‰KHm¡‰KHm©‰{œk©‰Cœk©‰KHmÁ‰KHmɉ{œkɉCœkɉKHmá‰KHmé‰{œké‰Cœké‰KHmŠ{œkŠCœkŠKHm Š›Ço Š{œk ŠCœk Š{œk ŠCœk!ŠKHm)Š›Üo)Š{œk)ŠCœkAŠKHmIŠ›íoIŠ{œkIŠCœkaŠKHmiŠ›–SiŠ{œkiŠCœkŠKHm¡ŠKHmÁŠKHmáŠKHm‹KHm!‹KHmA‹KHma‹KHm‹KHm‰‹{œk‰‹Cœk‰‹KHm¡‹KHm©‹›Ço©‹{œk©‹CœkÁ‹KHmÉ‹›ÜoÉ‹{œkÉ‹Cœká‹KHmé‹{œké‹Cœké‹KHmŒKHm Œ{œk ŒCœk ŒKHm!ŒKHm!Œ{œk!ŒCœk)Œ{œk)ŒCœk)ŒKHmIŒ{œkIŒCœkIŒKHmiŒ{œkiŒCœkiŒKHmŒKHm‰Œ{œk‰ŒCœk‰ŒKHm¡ŒKHm©Œ{œk©ŒCœk©ŒKHmÁŒKHmÉŒ{œkÉŒCœkÉŒKHmáŒKHméŒ{œkéŒCœkéŒKHmKHm {œk Cœk KHm!KHm){œk)Cœk)KHmAKHmI›ÇoI{œkICœki›bçi{œkiCœk‰›,²‰{œk‰Cœk©›Ço©{œk©CœkÉ›bçÉ{œkÉCœké›,²é{œkéCœk Ž{œk ŽCœk ŽKHm)Ž{œk)ŽCœk)ŽKHmIŽ{œkIŽCœkIŽKHmiŽ{œkiŽCœkiŽKHmŽKHmŽ{œkŽCœk‰Ž{œk‰ŽCœk‰ŽKHm¡ŽKHm¡Ž{œk¡ŽCœk©Ž{œk©ŽCœk©ŽKHm鎛oéŽ{œkéŽCœk ›o {œk Cœk){œk)Cœk)KHmI›ÇoI{œkICœki›Üoi{œkiCœk‰›ío‰{œk‰Cœk¡KHm¡{œk¡Cœk©›–S©{œk©CœkÁKHmÁ{œkÁCœkÉ›§SÉ{œkÉCœkáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœk‘KHm‘{œk‘Cœk!‘KHm!‘{œk!‘Cœka‘KHma‘{œka‘CœkÁ‘KHmÁ‘{œkÁ‘Cœk!“KHm!“{œk!“Cœk)“›Ço)“{œk)“CœkI“›ÜoI“{œkI“Cœka“KHma“{œka“Cœki“›íoi“{œki“Cœkƒ“;Çù‰“›–S‰“{œk‰“Cœk©“›¨n©“{œk©“CœkÉ“›QpÉ“{œkÉ“Cœké“›bpé“{œké“Cœk”KHm”{œk”Cœk ”›sp ”{œk ”Cœk!”KHm!”{œk!”Cœk)”›Ço)”{œk)”CœkI”›ÜoI”{œkI”Cœka”KHma”{œka”Cœki”›íoi”{œki”Cœk”KHm”{œk”Cœk‰”›–S‰”{œk‰”Cœk¡”KHm¡”{œk¡”Cœk©”›¨n©”{œk©”CœkÉ”›QpÉ”{œkÉ”Cœké”›bpé”{œké”Cœk •›sp •{œk •Cœk)•{œk)•Cœk)•KHmI•{œkI•CœkI•KHmi•{œki•Cœki•KHm€•{œk€•Cœk‰•{œk‰•Cœk‰•KHm •{œk •Cœk©•{œk©•Cœk©•KHmA–KHmA–{œkA–CœkC–;Çùa–KHma–{œka–Cœk!—KHm!—{œk!—Cœk—KHm—{œk—Cœká—KHmá—{œká—Cœk˜KHm˜{œk˜Cœk!˜KHm!˜{œk!˜CœkA˜KHmA˜{œkA˜Cœka˜KHma˜{œka˜Cœk˜KHm˜{œk˜Cœk¡˜KHm¡˜{œk¡˜CœkÁ˜KHmÁ˜{œkÁ˜Cœká˜KHmá˜{œká˜CœkI™›ÇoI™{œkI™Cœki™›Üoi™{œki™Cœk‰™›ío‰™{œk‰™Cœk¡™KHm¡™{œk¡™Cœk©™›–S©™{œk©™CœkÉ™›¨nÉ™{œkÉ™Cœké™›Qpé™{œké™CœkšKHmš{œkšCœk š›bp š{œk šCœk)š›o)š{œk)šCœkIš›qIš{œkIšCœkašKHmaš{œkašCœkiš›V°iš{œkišCœkšKHmš{œkšCœk‰š›ˆ‰š{œk‰šCœk¡šKHm¡š{œk¡šCœk©š›÷D©š{œk©šCœkÁšKHmÁš{œkÁšCœkÉš›EÉš{œkÉšCœkášKHmáš{œkášCœkéš›Çoéš{œkéšCœk›KHm›{œk›Cœk ››Üo ›{œk ›Cœk!›KHm!›{œk!›Cœk)››ío)›{œk)›CœkA›KHmA›{œkA›CœkI››–SI›{œkI›Cœka›KHma›{œka›Cœki››¨ni›{œki›Cœk‰››Qp‰›{œk‰›Cœk©››bp©›{œk©›CœkÉ››oÉ›{œkÉ›Cœké››qé›{œké›Cœk œ›V° œ{œk œCœk!œKHm!œ{œk!œCœk)œ›ˆ)œ{œk)œCœkAœKHmAœ{œkAœCœkIœ›÷DIœ{œkIœCœkaœKHmaœ{œkaœCœkiœ›Eiœ{œkiœCœk‰œ{œk‰œCœk‰œKHm¡œKHm¡œ{œk¡œCœk©œ{œk©œCœk©œKHmÀœ{œkÀœCœkÁœKHmÁœ{œkÁœCœkÉœ{œkÉœCœkÉœKHmàœ{œkàœCœkáœKHmáœ{œkáœCœk{œkCœk{œkCœkKHm{œkCœk {œk Cœk {œk Cœk!KHm!{œk!Cœkiž›Çoiž{œkižCœk‰ž›Üo‰ž{œk‰žCœk©ž›¨n©ž{œk©žCœkÉž›QpÉž{œkÉžCœkéž›bpéž{œkéžCœkŸKHmŸ{œkŸCœk Ÿ›sp Ÿ{œk ŸCœk)Ÿ›Ço)Ÿ{œk)ŸCœkIŸ›ÜoIŸ{œkIŸCœkiŸ›¨niŸ{œkiŸCœk‰Ÿ›Qp‰Ÿ{œk‰ŸCœk¡ŸKHm¡Ÿ{œk¡ŸCœk©Ÿ›bp©Ÿ{œk©ŸCœkÁŸKHmÁŸ{œkÁŸCœkÉŸ›spÉŸ{œkÉŸCœkáŸKHmáŸ{œkáŸCœkéŸ{œkéŸCœkéŸKHm KHm {œk Cœk  ›Ço  {œk  Cœk) ›Üo) {œk) CœkA KHma KHm KHm¡ KHmÁ KHmá KHm¡KHm!¡KHmA¡KHma¡KHm¡KHm‰¡{œk‰¡Cœk‰¡KHm¡¡KHm©¡›Ço©¡{œk©¡CœkÁ¡KHmÉ¡›ÜoÉ¡{œkÉ¡Cœká¡KHmA¢KHmA¢{œkA¢Cœka¢KHma¢{œka¢Cœk¢KHm¢{œk¢Cœk¡¢KHm¡¢{œk¡¢Cœk©¢{œk©¢Cœk©¢KHmÁ¢KHmÁ¢{œkÁ¢CœkÉ¢›ÇoÉ¢{œkÉ¢Cœk颛Üoé¢{œké¢Cœkã£;ÇùI¤{œkI¤CœkI¤KHmi¤{œki¤Cœki¤KHm‰¤{œk‰¤Cœk‰¤KHm©¤{œk©¤Cœk©¤KHm¥KHm¥{œk¥Cœk!¥KHm!¥{œk!¥CœkA¥KHmA¥{œkA¥Cœka¥KHma¥{œka¥Cœk¥KHm¥{œk¥Cœk§KHm§{œk§Cœk!§KHm!§{œk!§CœkA§KHmA§{œkA§CœkI§›ÇoI§{œkI§Cœki§›Üoi§{œki§Cœk‰§›ío‰§{œk‰§Cœk©§›–S©§{œk©§Cœkɧ›¨nɧ{œkɧCœkã§;hvé§›Qpé§{œké§Cœk ¨›o ¨{œk ¨Cœk)¨›q)¨{œk)¨CœkI¨›(qI¨{œkI¨Cœki¨›Bi¨{œki¨Cœk‰¨›Ço‰¨{œk‰¨Cœk©¨›Üo©¨{œk©¨Cœkɨ›íoɨ{œkɨCœká¨KHmá¨{œká¨Cœk騛–Sé¨{œké¨Cœk©KHm©{œk©Cœk ©›¨n ©{œk ©Cœk!©KHm!©{œk!©Cœk)©›Qp)©{œk)©CœkI©›oI©{œkI©Cœki©›qi©{œki©Cœkƒ©;hv‰©›(q‰©{œk‰©Cœk¡©KHm¡©{œk¡©Cœk©©›B©©{œk©©CœkÉ©{œkÉ©CœkÉ©KHmé©›Çoé©{œké©Cœk ª›Üo ª{œk ªCœkaªKHmaª{œkaªCœkÁªKHmÁª{œkÁªCœkê‹nê;:náªKHmáª{œkáªCœk㪋nãª;:n«KHm«{œk«Cœk «SËq)«{œk)«Cœk)«KHmI«{œkI«CœkI«KHmi«{œki«Cœki«KHm‰«{œk‰«Cœk‰«KHm©¬›Ço©¬{œk©¬Cœkɬ›Üoɬ{œkɬCœk鬛íoé¬{œké¬Cœk ­›–S ­{œk ­Cœk)­›¨n)­{œk)­CœkA­KHmA­{œkA­CœkI­›QpI­{œkI­Cœka­KHma­{œka­Cœki­›oi­{œki­Cœk­KHm­{œk­Cœk‰­›q‰­{œk‰­Cœk©­›(q©­{œk©­CœkÉ­›BÉ­{œkÉ­Cœké­›Çoé­{œké­Cœk ®›Üo ®{œk ®Cœk)®›ío)®{œk)®CœkI®›–SI®{œkI®Cœki®›¨ni®{œki®Cœk‰®›Qp‰®{œk‰®Cœk©®›o©®{œk©®CœkÉ®›qÉ®{œkÉ®Cœké®›(qé®{œké®Cœk ¯›B ¯{œk ¯Cœk)¯{œk)¯Cœk)¯KHm@¯{œk@¯CœkI¯›ÇoI¯{œkI¯Cœk`¯{œk`¯Cœki¯›Üoi¯{œki¯Cœk‰¯›ío‰¯{œk‰¯Cœk©¯›–S©¯{œk©¯Cœkɯ{œkɯCœkɯKHmé¯{œké¯Cœké¯KHm °{œk °Cœk °KHm)°{œk)°Cœk)°KHmI°{œkI°CœkI°KHmi°{œki°Cœki°KHm‰°{œk‰°Cœk‰°KHm©°{œk©°Cœk©°KHmɰ›Çoɰ{œkɰCœké°›Üoé°{œké°Cœk ±›Ço ±{œk ±Cœk)±›Üo)±{œk)±CœkI±SËqi±Sõq‰±SËq©±Sõqɱ{œkɱCœkɱKHmé±{œké±Cœké±KHm ²{œk ²Cœk ²KHm)²{œk)²Cœk)²KHmI²{œkI²CœkI²KHmc²;‡si²{œki²Cœki²KHm‰²›Ço‰²{œk‰²Cœk©²›¨n©²{œk©²Cœkɲ›oɲ{œkɲCœké²›V°é²{œké²Cœk ³›Òæ ³{œk ³Cœk)³›Ço)³{œk)³CœkI³›¨nI³{œkI³Cœki³›oi³{œki³Cœk‰³›V°‰³{œk‰³Cœk©³›Ò橳{œk©³CœkÁ³KHmÁ³{œkÁ³Cœkã³;Çù ´{œk ´Cœk ´KHm)´{œk)´Cœk)´KHmI´{œkI´CœkI´KHmi´{œki´Cœki´KHm‰´{œk‰´Cœk‰´KHmÉ´{œkÉ´CœkÉ´KHmé´›Çoé´{œké´CœkµKHmµ{œkµCœk µ›Üo µ{œk µCœk!µKHm!µ{œk!µCœk)µ›ío)µ{œk)µCœkIµ›–SIµ{œkIµCœkaµKHmaµ{œkaµCœk€µ“ÎkµKHmµ{œkµCœk µ“¤l¡µKHm¡µ{œk¡µCœkÁµKHmÁµ{œkÁµCœkáµKHmáµ{œkáµCœkéµ{œkéµCœkéµKHm ¶{œk ¶Cœk ¶KHm#¶;Çù)¶{œk)¶Cœk)¶KHm@¶“ØI¶{œkI¶CœkI¶KHmi¶{œki¶Cœki¶KHm€¶“Îk‰¶{œk‰¶Cœk‰¶KHm ¶“ׂ©¶{œk©¶Cœk©¶KHmɶ{œkɶCœkɶKHmà¶“Îké¶{œké¶Cœké¶KHm·“Ø·;âø ·{œk ·Cœk ·KHm ·“Ø)·{œk)·Cœk)·KHm@·“ØA·KHmA·{œkA·CœkI·{œkI·CœkI·KHmi·{œki·Cœki·KHm·KHm·{œk·Cœk‰·{œk‰·Cœk‰·KHm ·{œk©·{œk©·Cœk©·KHmÀ·“ØÉ·{œkÉ·CœkÉ·KHmà·{œké·{œké·Cœké·KHm¸“Ø ¸{œk ¸Cœk ¸KHm ¸{œk)¸{œk)¸Cœk)¸KHm@¸“ׂI¸{œkI¸CœkI¸KHm`¸“¤li¸{œki¸Cœki¸KHm€¸“Îk‰¸{œk‰¸Cœk‰¸KHm©¸{œk©¸Cœk©¸KHmɸ{œkɸCœkɸKHmà¸{œké¸{œké¸Cœké¸KHm¹{œk ¹{œk ¹Cœk ¹KHm ¹{œk)¹{œk)¹Cœk)¹KHm@¹{œkI¹{œkI¹CœkI¹KHm ¹“Îk©¹›Ço©¹{œk©¹CœkÀ¹{œkɹ›Üoɹ{œkɹCœk๓Îké¹›¨né¹{œké¹Cœkº“Îk º›o º{œk ºCœk º{œk)º›V°)º{œk)ºCœk@º{œkIº›ÒæIº{œkIºCœk`º{œkcº;Çùiº›bçiº{œkiºCœk€º{œk‰º›ó牺{œk‰ºCœk º{œk©º›oý©º{œk©ºCœkÀº{œkɺ›Éýɺ{œkɺCœkàº{œk麛&þéº{œkéºCœk»{œk »›˜þ »{œk »Cœk »{œk)»›"ÿ)»{œk)»Cœk@»{œkI»›6 I»{œkI»Cœk`»{œki»›ÿi»{œki»Cœk€»{œk‰»›‰»{œk‰»Cœk »{œk©»›! ©»{œk©»CœkÀ»{œkÉ»›’ É»{œkÉ»Cœkà»{œké»›] é»{œké»Cœk¼{œk ¼›Ò ¼{œk ¼Cœk ¼“¤l!¼KHm)¼›` )¼{œk)¼Cœk@¼“¤lA¼KHmI¼›2 I¼{œkI¼Cœka¼KHmi¼›{` i¼{œki¼Cœk¼KHm‰¼›ª ‰¼{œk‰¼Cœk¡¼KHm©¼› ©¼{œk©¼CœkÀ¼{œkÁ¼KHmɼ›t ɼ{œkɼCœká¼KHmé¼›… é¼{œké¼Cœk½“¤l½KHm½{œk½Cœk ½›é ½{œk ½Cœk ½“ׂ!½KHm!½{œk!½Cœk)½›b )½{œk)½CœkA½KHmA½{œkA½CœkI½›yb I½{œkI½Cœka½KHma½{œka½Cœkc½;âøi½›Šb i½{œki½Cœk‰½›øb ‰½{œk‰½Cœk ½{œk©½› c ©½{œk©½Cœkɽ›"c ɽ{œkɽCœkà½{œké½›§c é½{œké½Cœk ¾›¸c ¾{œk ¾Cœk)¾›Ço)¾{œk)¾CœkI¾›ÜoI¾{œkI¾Cœki¾›¨ni¾{œki¾Cœk‰¾›o‰¾{œk‰¾Cœk©¾›V°©¾{œk©¾CœkÁ¾KHmÁ¾{œkÁ¾Cœkɾ›Òæɾ{œkɾCœká¾KHmá¾{œká¾Cœké¾›bçé¾{œké¾Cœk¿KHm¿{œk¿Cœk ¿›óç ¿{œk ¿Cœk!¿KHm!¿{œk!¿Cœk)¿›oý)¿{œk)¿CœkA¿KHmI¿›ÉýI¿{œkI¿Cœka¿KHmi¿›&þi¿{œki¿Cœk¿KHm‰¿›˜þ‰¿{œk‰¿Cœk¡¿KHm©¿›"ÿ©¿{œk©¿CœkÁ¿KHmÉ¿›6 É¿{œkÉ¿Cœká¿KHmé¿›ÿé¿{œké¿Cœk À› À{œk ÀCœk)À›! )À{œk)ÀCœkIÀ›’ IÀ{œkIÀCœkaÀKHmaÀ{œkaÀCœkiÀ›] iÀ{œkiÀCœk‰À›Ò ‰À{œk‰ÀCœk©À›` ©À{œk©ÀCœkÉÀ›2 ÉÀ{œkÉÀCœkáÀKHmáÀ{œkáÀCœkéÀ›{` éÀ{œkéÀCœkÁKHmÁ{œkÁCœk Á›ª Á{œk ÁCœk!ÁKHm!Á{œk!ÁCœk)Á› )Á{œk)ÁCœkIÁ›t IÁ{œkIÁCœkiÁ›… iÁ{œkiÁCœk‰Á›é ‰Á{œk‰ÁCœk©Á›b ©Á{œk©ÁCœkÉÁ›yb ÉÁ{œkÉÁCœkéÁ›Šb éÁ{œkéÁCœk ›øb Â{œk ÂCœk)› c )Â{œk)ÂCœk@Â{œk@ÂCœkI›"c IÂ{œkIÂCœk`Â{œk`ÂCœki›§c iÂ{œkiÂCœk‰Â›¸c ‰Â{œk‰ÂCœk©Â{œk©ÂCœk©ÂKHmÀÂSkmÉÂ{œkÉÂCœkÉÂKHmàÂ{œkàÂCœkéÂ{œkéÂCœkéÂKHmÃ{œkÃCœk Ã{œk ÃCœk ÃKHm Ã{œk ÃCœk)Ã{œk)ÃCœk)ÃKHm@Ã{œk@ÃCœkAÃKHmAÃ{œkAÃCœkIÃ{œkIÃCœkIÃKHm`Ã{œkaÃKHmaÃ{œkaÃCœkiÃ{œkiÃCœkiÃKHm€Ã{œkÃKHmÃ{œkÃCœk‰Ã{œk‰ÃCœk‰ÃKHm Ã{œk©Ã{œk©ÃCœk©ÃKHmÀÃ{œkÉÃ{œkÉÃCœkÉÃKHmàÃ{œkéÃ{œkéÃCœkéÃKHm Ä{œk ÄCœk ÄKHm‰ÄSËq©ÄSõqÉÄSr©Å;µÜÉÅ;µÜéÅ;µÜ Æ;µÜ#Æ;Çù)Æ;µÜIÆ;µÜiÆ;µÜ‰Æ;µÜ©Æ;µÜÉÆ;µÜéÆ;µÜÇ;Çù Ç;µÜ)Ç;µÜIÇ;µÜiÇ;µÜ‰Ç;µÜ©Ç;µÜÉÇ;µÜéÇ;µÜÃË;âøcÌ;âø£Ì;ÇùãÎ;ÇùéÏ;µÜ Ð;µÜ)Ð;µÜIÐ;µÜiÐ;µÜ‰Ð;µÜ©Ð;µÜÃÐ;âøÉÐ;µÜéÐ;µÜÑ;âø Ñ;µÜ#Ñ‹n#Ñ;:n)Ñ;µÜIÑ;µÜcÑ“ù9cÑ‹niÑ;µÜ€Ñ“ÎkƒÑ“š:ƒÑ‹n‰Ñ;µÜ£Ñ“:;£Ñ‹n©Ñ;µÜÃÑ“Æ;ÃÑ‹nÉÑ;µÜéÑ;µÜ Ò;µÜ)Ò;µÜIÒ;µÜcÒ‹ncÒ;:niÒ;µÜƒÒ‹nƒÒ;:n‰Ò;µÜ©Ò;µÜÃÒ“=ÃÒ‹nÉÒ;µÜãÒ“>ãÒ‹néÒ;µÜÓ“Ÿ>Ó‹n Ó;µÜ#Ó“?#Ó‹n)Ó;µÜAÓKHmAÓ{œkAÓCœkIÓ;µÜaÓKHmaÓ{œkaÓCœkiÓ;µÜÓKHmÓ{œkÓCœk‰Ó;µÜ©Ó;µÜÃÓ‹nÃÓ;:nÉÓ;µÜáÓKHmáÓ{œkáÓCœkãÓ‹nãÓ;:néÓ;µÜ Ô;µÜ#Ô“‹@#Ô‹n)Ô;µÜCÔ“ACÔ‹nIÔ;µÜcÔ“oAcÔ‹niÔ;µÜƒÔ“BƒÔ‹n‰Ô;µÜ©Ô;µÜÉÔ;µÜéÔ;µÜ Õ;µÜ#Õ‹n#Õ;:n)Õ;µÜIÕ;µÜiÕ;µÜƒÕ;Çù‰Õ;µÜ©Õ;µÜÀÕ{œkÁÕKHmÁÕ{œkÁÕCœkÉÕ;µÜáÕKHmáÕ{œkáÕCœkéÕ;µÜÖKHmÖ{œkÖCœk Ö;µÜ!ÖKHm!Ö{œk!ÖCœk)Ö;µÜAÖKHmAÖ{œkAÖCœkIÖ;µÜaÖKHmaÖ{œkaÖCœkcÖ;ÇùiÖ;µÜÖKHmÖ{œkÖCœk‰Ö;µÜ¡ÖKHm¡Ö{œk¡ÖCœk©Ö;µÜÁÖKHmÁÖ{œkÁÖCœkÉÖ;µÜáÖKHmáÖ{œkáÖCœkéÖ;µÜ×KHm×{œk×Cœk ×;µÜ!×KHm!×{œk!×Cœk)×;µÜA×KHmA×{œkA×CœkI×;µÜa×KHma×{œka×Cœki×;µÜ×KHm×{œk×Cœk‰×;µÜ¡×KHm¡×{œk¡×Cœk©×;µÜÁ×KHmÁ×{œkÁ×CœkÉ×;µÜá×KHmá×{œká×Cœké×;µÜØKHmØ{œkØCœk Ø;µÜ!ØKHm!Ø{œk!ØCœk)Ø;µÜAØKHmAØ{œkAØCœkIØ;µÜ`Ø{œk`ØCœkaØKHmaØ{œkaØCœkiØ;µÜ€Ø{œk€ØCœkØKHmØ{œkØCœk‰Ø;µÜ¡ØKHm¡Ø{œk¡ØCœk©Ø;µÜÁØKHmÁØ{œkÁØCœkÉØ;µÜáØKHmáØ{œkáØCœkéØ;µÜÙKHmÙ{œkÙCœkÙ;Çù Ù;µÜ!ÙKHm!Ù{œk!ÙCœk)Ù;µÜAÙKHmAÙ{œkAÙCœkIÙ;µÜaÙKHmaÙ{œkaÙCœkiÙ;µÜÙKHmÙ{œkÙCœk‰Ù;µÜ¡ÙKHm¡Ù{œk¡ÙCœk©Ù;µÜÁÙKHmÁÙ{œkÁÙCœkÉÙ;µÜáÙKHmáÙ{œkáÙCœkéÙ;µÜ Ú;µÜ#Ú;Çù)Ú;µÜAÚKHmAÚ{œkAÚCœkCÚ;ÇùIÚ;µÜaÚKHmaÚ{œkaÚCœkcÚ;ÇùiÚSËqÚKHmÚ{œkÚCœk‰ÚSõq¡ÚKHm¡Ú{œk¡ÚCœk©ÚSËqÁÚKHmÁÚ{œkÁÚCœkÃÚ;âøÉÚSõqáÚKHmáÚ{œkáÚCœkãÚ‹nãÚ;:néÚSrÛKHmÛ{œkÛCœk ÛS'r!ÛKHm!Û{œk!ÛCœk#Û“Óg#Û‹nAÛKHmAÛ{œkAÛCœkCÛ“UhCÛ‹naÛKHmaÛ{œkaÛCœkiÛSËqÛKHmÛ{œkÛCœk‰ÛSõq¡ÛKHm¡Û{œk¡ÛCœk£Û;‡s©ÛSËqÁÛKHmÁÛ{œkÁÛCœkÉÛSõqáÛKHmáÛ{œkáÛCœkéÛSrÜKHmÜ{œkÜCœk ÜS'r!ÜKHm!Ü{œk!ÜCœk)ÜS:rAÜKHmAÜ{œkAÜCœkIÜSMraÜKHmaÜ{œkaÜCœkÜKHmÜ{œkÜCœkƒÜ‹nƒÜ;:n‰ÜSËq¡ÜKHm¡Ü{œk¡ÜCœk©ÜSõqÁÜKHmÁÜ{œkÁÜCœkÃÜ“njÃÜ‹nÉÜSráÜKHmáÜ{œkáÜCœkãÜ“ÜjãÜ‹néÜS'rÝKHmÝ{œkÝCœkÝ“PkÝ‹n ÝS:r)ÝSMrIÝSZraÝKHmaÝ{œkaÝCœkiÝSgrÝKHmÝ{œkÝCœkƒÝ;‡s‰ÝStr¡ÝKHm¡Ý{œk¡ÝCœk©ÝSrÁÝKHmÁÝ{œkÁÝCœkÉÝSŽréÝS›r ÞSËq)ÞSõqCÞ;ÇùIÞSriÞS'r£Þ‹n£Þ;:n©ÞSËqÉÞSõqãÞ“íqãÞ‹néÞSrßKHmß{œkßCœkß“jrß‹n ßS'r!ßKHm!ß{œk!ßCœk#ß“ør#ß‹n)ßS:rAßKHmAß{œkAßCœkIßSMraßKHmaß{œkaßCœkißSZrßKHmß{œkßCœk‰ßSgr¡ßKHm¡ß{œk¡ßCœk©ßStrÁßKHmÁß{œkÁßCœkÉßSráßKHmáß{œkáßCœkéßSŽràKHmà{œkàCœk àS›r!àKHm!à{œk!àCœk)à;µÜAàKHmAà{œkAàCœk`à{œk`àCœkià;µÜ€à{œk€àCœkÉà;µÜéà;µÜ á;µÜ á{œk áCœk)á;µÜ@á{œk@áCœkIá;µÜiá;µÜ‰á;µÜ©á;µÜÉá;µÜàá{œkàáCœkéá;µÜâ{œkâCœkâ;Çù â;µÜ)â;µÜCâ;ÇùIâ;µÜiâ;µÜƒâ;Çù‰â;µÜ â{œk âCœk©â;µÜÀâ{œkÀâCœkÉâ;µÜéâ;µÜ ã;µÜ)ã;µÜIã;µÜ`ã{œk`ãCœkaãKHmiã;µÜ€ã{œk€ãCœkãKHm‰ã;µÜ¡ãKHm£ã;âø©ã;µÜÁãKHmÉã;µÜáãKHméã;µÜäKHm ä;µÜ ä{œk äCœk!äKHm)ä;µÜ@ä{œk@äCœkAäKHmIä;µÜaäKHmiä;µÜäKHm¡äKHmÁäKHmÁä{œkÁäCœkàä{œkàäCœkå{œkåCœk)å{œk)åCœk)åKHmCå;âøIå›ÇoIå{œkIåCœkƒå;âø å{œk åCœk£å;âøÀå{œkÀåCœkÁåKHmÁå{œkÁåCœkáåKHmáå{œkáåCœkæKHmæ{œkæCœk!æKHm!æ{œk!æCœkAæKHmAæ{œkAæCœk`æ{œk`æCœkaæKHmaæ{œkaæCœk€æ{œk€æCœkæKHmæ{œkæCœk‰æSËq¡æKHm©æSõqÉæSr ç{œk çCœk çKHm ç{œk çCœk)ç{œk)çCœk)çKHm@ç{œk@çCœkIç{œkIçCœkIçKHmiç{œkiçCœkiçKHm‰ç{œk‰çCœk‰çKHm¡çKHm©ç{œk©çCœk©çKHmÁçKHmÁç{œkÁçCœkÉç{œkÉçCœkÉçKHmàç{œkàçCœkáçKHmáç{œkáçCœkéçSËqè{œkèCœkèKHmè{œkèCœk èSõqIè{œkIèCœkIèKHmaèKHmiè›Çoiè{œkièCœkèKHm‰è›Üo‰è{œk‰èCœk è{œk èCœk¡èKHm©è{œk©èCœk©èKHmÀè{œkÀèCœkÁèKHmÉè›ÇoÉè{œkÉèCœkáèKHméKHm!éKHmAéKHmCé;âøaéKHmié{œkiéCœkiéKHméKHmƒé;âø‰é{œk‰éCœk‰éKHm¡éKHm©é{œk©éCœk©éKHmÁéKHmÉé{œkÉéCœkÉéKHmáéKHméé{œkééCœkééKHmêKHm ê›Ço ê{œk êCœk!êKHm)ê›Üo)ê{œk)êCœkAêKHmIê›oIê{œkIêCœkaêKHmcê;‡siê›Çoiê{œkiêCœkêKHm‰ê›Üo‰ê{œk‰êCœk¡êKHm©ê›o©ê{œk©êCœkÁêKHmÉêSËqáêKHméêSõqëKHmë{œkëCœkë;‡s ëSr!ëKHm!ë{œk!ëCœk)ëS'rAëKHmAë{œkAëCœkIëS:riëSMr‰ëSZr¡ëKHm©ëSgrÁëKHmÉëSËqáëKHméëSõqìKHm ìSr!ìKHm)ìS'rIìS:riìSMrìKHmì{œkìCœk‰ìSZr¡ìKHm¡ì{œk¡ìCœk©ìSgrÁìKHmÁì{œkÁìCœkÉìStréìSr íSŽr!íKHm!í{œk!íCœk)íS›rAíKHmAí{œkAíCœkIíSºwaíKHmaí{œkaíCœkiíSÖw‰íSãw©íSðwÉíSƒ­éíS­ îS­#î‹n#î;:n)îS²­IîS¿­cî“€©cî‹niîSÝ­ƒî“멃î‹n‰îSËq£î“Qª£î‹n©îSõq ïSËq)ïSõqIïSraïKHmaï{œkaïCœkiïS'rïKHmï{œkïCœk‰ïS:r¡ïKHm¡ï{œk¡ïCœkÉï{œkÉïCœkÉïKHmáïKHmáï{œkáïCœkéï{œkéïCœkéïKHmðKHmð{œkðCœk ð{œk ðCœk ðKHm)ð{œk)ðCœk)ðKHmIð{œkIðCœkIðKHmið{œkiðCœkiðKHm‰ð{œk‰ðCœk‰ðKHm©ð{œk©ðCœk©ðKHmÉð{œkÉðCœkÉðKHméð{œkéðCœkéðKHm ñ{œk ñCœk ñKHm!ñKHm!ñ{œk!ñCœk)ñ{œk)ñCœk)ñKHmAñKHmAñ{œkAñCœkIñ{œkIñCœkIñKHmiñ{œkiñCœkiñKHmƒñ;Çù‰ñSËq©ñSõqÉñSËqéñSõqòKHmò{œkòCœk òSr!òKHm)òS'rAòKHmIòS:raòKHmiòSMròKHm‰òSZr¡òKHm©òSËqÁòKHmÉòSõqáòKHméòSróKHm ó;µÜ ó{œk óCœk!óKHm)ó;µÜ@ó{œk@óCœkAóKHmIó;µÜaóKHmióSËqóKHm‰óSõq¡óKHm©óSrÁóKHmàó{œkàóCœkáóKHmáó{œkáóCœkéó;µÜô{œkôCœkôKHmô{œkôCœk ô;µÜ!ôKHm!ô{œk!ôCœk)ô;µÜIô;µÜiô;µÜ‰ô;µÜ©ô;µÜÉô;µÜéô;µÜ õ;µÜ õ{œk õCœk)õ;µÜ@õ{œk@õCœkAõKHmAõ{œkAõCœkIõ;µÜaõKHmaõ{œkaõCœkiõ;µÜõKHmõ{œkõCœk‰õ{œk‰õCœk‰õKHm¡õKHm¡õ{œk¡õCœk©õ›Ço©õ{œk©õCœkÁõKHmÁõ{œkÁõCœkÉõ›ÜoÉõ{œkÉõCœkàõ{œkàõCœkáõKHmáõ{œkáõCœkéõ›íoéõ{œkéõCœkö{œköCœköKHmö{œköCœk ö›–S ö{œk öCœk!öKHm!ö{œk!öCœk)ö›§S)ö{œk)öCœkAöKHmAö{œkAöCœkIö{œkIöCœkIöKHmaöKHmaö{œkaöCœkiö›Çoiö{œkiöCœköKHmö{œköCœkƒö;Çù‰ö›Üo‰ö{œk‰öCœk ö{œk öCœk¡öKHm¡ö{œk¡öCœkÀö{œkÀöCœkÁöKHmÁö{œkÁöCœkáöKHmáö{œkáöCœkéöSËq÷KHm÷{œk÷Cœk ÷Sõq!÷KHm!÷{œk!÷Cœk)÷SrA÷KHmA÷{œkA÷CœkI÷S'ra÷KHma÷{œka÷Cœki÷S:r÷KHm÷{œk÷Cœk‰÷SMr¡÷KHm¡÷{œk¡÷Cœk©÷SZrÁ÷KHmÁ÷{œkÁ÷CœkÉ÷Sgrá÷KHmá÷{œká÷Cœké÷StrøKHmø{œkøCœk øSr ø{œk!øKHm!ø{œk!øCœk)øSŽrAøKHmAø{œkAøCœkIøS›raøKHmaø{œkaøCœkiøSºw€ø{œkøKHmø{œkøCœk‰øSÖw¡øKHm¡ø{œk¡øCœk©øSãwÁøKHmÁø{œkÁøCœkÉøSðwáøKHmáø{œkáøCœkéøSƒ­ùKHmù{œkùCœk ùS­)ùS­IùS²­aùKHmaù{œkaùCœkiùS¿­ùKHmù{œkùCœk‰ùSÝ­¡ùKHm¡ù{œk¡ùCœk©ùSê­ÉùS®éùS®úKHmú{œkúCœk úS®!úKHm!ú{œk!úCœk)úS(®AúKHmAú{œkAúCœkIúS5®aúKHmaú{œkaúCœkiúSB®úKHmƒú;Çù‰úSO®¡úKHm£ú;Çù©úS\®ÉúSi®éúSv®ûKHmû{œkûCœk ûSƒ®!ûKHm!û{œk!ûCœk)ûS®AûKHmAû{œkAûCœkIûS®aûKHmaû{œkaûCœkiûSª®ûKHmû{œkûCœk‰ûS·®¡ûKHm¡û{œk¡ûCœk©ûSÄ®ÁûKHmÁû{œkÁûCœkÉûSÑ®áûKHmáû{œkáûCœkéûSÞ®üKHmü{œküCœk üSë®!üKHm)üS¯AüKHmIüS¯aüKHmiüS¯üKHm‰üS1¯¡üKHm©üS>¯ÁüKHmÉüSK¯áüKHméüSX¯ýKHm ýSe¯!ýKHm)ýSr¯AýKHmIýS¯iýSŒ¯‰ýS™¯©ýS¦¯ÉýS³¯áýKHmáý{œkáýCœkéýSÀ¯þKHmþ{œkþCœk þSͯ!þKHm!þ{œk!þCœk#þ;Çù)þSÚ¯AþKHmAþ{œkAþCœkIþSç¯`þ{œk`þCœkcþ;âøiþSô¯€þ{œk€þCœkƒþËœkƒþ‹nƒþ;:n‰þS° þ“Îk©þS°Àþ“ÎkÁþKHmÁþ{œkÁþCœkÃþ;‡sÉþS°ãþÓœkãþ;‡séþS(°ÿ“Îk ÿS5°#ÿ;hv)ÿSH°Cÿ;hvIÿSU°iÿSb°‰ÿSo°©ÿS|°ÉÿS‰°éÿS–° S£° {œk)S°°IS½°iSʰ‰S×°©Sä°ÉSñ°éSþ° S ±)S±IS+±iS8±‰SE±©SR±ÉS_±éSl± Sy±)S†±IS“±iS ±‰S­±©Sº±ÉSDZéSÚ± Sç±)Sô±IS²iS²‰S²©S(²ÉS5²ã;âøéSB²KHm{œkCœk‹n;:n SO² {œk Cœk#;‡s)S\²@{œk@CœkISi²iSv²‰Sƒ²¡KHm¡{œk¡Cœk©S²ÁKHmÁ{œkÁCœkÉSu à{œkàCœkáKHmá{œkáCœkéS‚ {œkCœkKHm{œkCœk S !KHm!{œk!Cœk)Sœ AKHmA{œkACœkIS© aKHma{œkaCœkiS¶ KHm{œkCœk‰Sà  {œk Cœk©SÐ À{œkÀCœkÉSÝ éSê S÷ )S IS iS ‰S+ ©S8 ÉSE éSR KHm{œkCœk S_ )Sl ISy iS† KHm{œkCœk‰S“ ¡KHm¡{œk¡Cœk©S  ÁKHmÁ{œkÁCœkÉS­ éSº SÇ )SÔ ISá iSî €“Îk‰Sû  “Îk©S À“ØÁKHmÁ{œkÁCœkÉS à{œkéS" “!× S/ ) S< I SI i SV ‰ Sc   {œk¡ KHm¡ {œk¡ Cœk© Sp Á KHmÁ {œkÁ CœkÉ S} á KHmá {œká Cœké SŠ  KHm {œk Cœk S— # ;âø) S¤ A KHmA {œkA CœkC ;4mI S± a KHma {œka Cœki S¾ ƒ ;Çù‰ SË © Sà À {œkÀ CœkÉ Sí à Skmé Sú {œk Cœk KHm {œk Cœk ;Çù S S~m! KHm! {œk! Cœk) S @ {œk@ CœkA KHmA {œkA CœkC ³œkC ƒœkC ËœkC ‹nC ;:nI S! ` S‹mi S. € {œk€ Cœkƒ “4 ƒ ‹n‰ S;   S⢣ “Ž £ ‹n© SH À {œkÀ Cœkà “÷ à ‹nÉ SU à Sï¢ã “W ã ‹né Sb {œk Cœk “¤  ‹n So Sü¢# “ # ‹n) S| @ {œk@ CœkC “E C ‹nI S‰ ` S £c “  c ‹ni S– € {œk€ Cœkƒ “ü ƒ ‹n‰ S£   {œk  Cœk£ “t £ ‹n© S° À {œkÀ Cœkà “ï à ‹nÉ S½ à {œkà Cœkã “G ã ‹né SÊ {œk Cœk “Œ  ‹n S× {œk Cœk# “Ù # ‹n) Sä @ {œk@ CœkC “Q C ‹nI Sñ ` {œk` Cœka KHma {œka Cœkc “ c ‹ni Sþ € {œk€ Cœk KHm {œk Cœkƒ “‰ ƒ ‹n‰ S    {œk  Cœk¡ KHm¡ {œk¡ Cœk£ “ã £ ‹n© S À {œkÀ CœkÁ KHmÁ {œkÁ Cœkà “\ à ‹nÉ S% à {œkà Cœká KHmá {œká Cœkã “» ã ‹né S2 {œkCœkKHm{œkCœk“1 ‹n S? {œk Cœk#“¤ #‹n)SL @{œk@CœkC“ú C‹nISY `{œk`CœkaKHma{œkaCœkiSf €{œk€CœkKHm{œkCœk‰Ss  {œk Cœk¡KHm¡{œk¡Cœk©S€ À{œkÀCœkÁKHmÁ{œkÁCœkÉS à{œkàCœkáKHmá{œkáCœkéSš {œkCœk S§ {œk Cœk)S´ @{œk@CœkISÁ `{œk`CœkiSÎ €{œk€Cœk‰SÛ  {œk Cœk©Sè À{œkÀCœkÉSõ à{œkàCœkéS {œkCœk S {œk Cœk!KHm!{œk!Cœk)S @{œk@CœkAKHmA{œkACœkIS) aKHma{œkaCœkiS6 KHm{œkCœk‰SC ¡KHm¡{œk¡Cœk©SP ÁKHmÁ{œkÁCœkÉS] áKHmá{œkáCœkéSj KHm{œkCœk Sw !KHm!{œk!Cœk)S„ AKHmA{œkACœkIS‘ aKHma{œkaCœkiSž KHm{œkCœkƒÓœkƒ‹nƒ;:n‰S« ©S¸ Óö ËnÉSÅ áKHmá{œkáCœkã“l ã‹néSÒ KHm{œkCœk Sß !KHm!{œk!Cœk)Sì AKHmA{œkACœkC‹nC;:nISù iS! ƒ³œkƒƒœkƒ;‡s‰S! £Ëœk£‹n£;:n©S ! ÉS-! à{œkàCœkéS:! {œkCœkKHm{œkCœk SG! {œk Cœk {œk Cœk)ST! @{œk@Cœk@{œk@CœkAKHmA{œkACœkISa! iSn! ‰S{! ©Sˆ! ÉS•! éS¢! S¯! )S¼! ISÉ! iSÖ! ‰Sã! ¡KHm¡{œk¡Cœk©Sð! ÁKHmÁ{œkÁCœkÉSý! áKHmá{œkáCœkéS " S" )S$" IS1" iS>" ‰SK" ©SX" ÉSe" éSr" S" )SŒ" IS™" iS¦" ‰S³" ©SÀ" ÉSÍ" éSÚ" ‹n;:n Sç" )Sô" IS# iS# ƒ‹nƒ;:n‰S# ©S(# ÃÓœkóœkÜkÃËœkËnÃ;:nÉS5# éSB# “W) ‹n SO# #“º) #‹n)S\# ISi# iSv# ƒ³œkƒƒœkƒ‹nƒ;:n‰Sƒ# ©S# ÃËœkËnÃ;:nÉS# éSª# S·# )SÌ# ISÙ# c;ÇùiSæ# ‰Só# ©S$ ÉS $ éS$ S'$ )S4$ ISA$ aKHma{œkaCœkiSN$ KHm{œkCœkƒ;Çù‰S[$ ©Sh$ ÉSu$ éS‚$ Ëœk;4m S$ {œk Cœk#;4m)Sœ$ @{œk@CœkAKHmA{œkACœkC;‡sIS©$ aKHma{œkaCœkc;ÇùiS¶$ KHm{œkCœkƒ;Çù‰SÃ$ ©SÐ$ ÁKHmÁ{œkÁCœkÉSÝ$ éSê$ ‹n;:n S÷$ )S% IS% `{œk`CœkiS% €{œk€Cœk‰S+% ©S8% ÉSE% éSR% ;Çù S_% )Sl% ISy% `{œk`CœkiS†% €{œk€Cœk‰S“% ©S % ÉS­% éSº% SÇ% )SÔ% ISá% `{œk`CœkiSî% €{œk€Cœk‰Sû% ©S& ÉS& éS"& ;hv S/& {œk Cœk#‹n#;:n)S<& @{œk@CœkISI& iSV& ‰Sc& ©Sp& ÉS}& éSŠ& S—& {œk Cœk) S¤& @ {œk@ CœkI S±& i S¾& ‰ SË& © SØ& É Så& é Sò& !;Çù !Sÿ& !{œk !Cœk)!S ' @!{œk@!CœkI!S' i!S&' ‰!S3' ©!S@' É!SM' é!SZ' "Sg' )"St' I"S' i"SŽ' ‰"S›' ©"S¨' É"Sµ' é"SÂ' #SÏ' )#SÜ' I#Sé' i#Sö' ‰#S( ©#S( Ã#;hvÉ#S( ã#‹nã#;:né#S*( $S7( )$SD( I$SQ( i$S^( ‰$Sk(  ${œk $Cœk©$Sx( À${œkÀ$CœkÉ$S…( é$S’( %SŸ( )%S¬( I%S¹( i%SÆ( ‰%SÓ( ©%Sà( É%Sí( é%Sú( &S) )&S*) I&S7) a&KHma&{œka&Cœki&SQ) &KHm&{œk&Cœk‰&S^) ¡&KHm¡&{œk¡&Cœk©&S}) É&S—) á&KHmá&{œká&Cœké&;µÜ'KHm'{œk'Cœk ';µÜ!'KHm!'{œk!'Cœk)';µÜA'KHmA'{œkA'CœkI';µÜa'KHma'{œka'Cœki';µÜ‰';µÜ©';µÜÉ';µÜà'{œkà'Cœké';µÜ({œk(Cœk(KHm({œk(Cœk (;µÜ)(;µÜA(KHmA({œkA(CœkI(;µÜa(KHma({œka(Cœki(;µÜ(KHm({œk(Cœk‰(;µÜ©(;µÜÉ(;µÜá(KHmá({œká(Cœkã(‹nã(;:né(;µÜ)Ëœk)‹n);:n );µÜ!)KHm!){œk!)Cœk));µÜA)KHmA){œkA)CœkC)“¢? C)‹nI);µÜ`){œk`)Cœka)KHma){œka)Cœkc)“+@ c)‹ni);µÜ€){œk€)Cœkƒ)“@ ƒ)‹n‰);µÜ ){œk )Cœk©);µÜÀ){œkÀ)CœkÉ);µÜà){œkà)Cœké);µÜ*{œk*Cœk *;µÜ *{œk *Cœk!*KHm!*{œk!*Cœk)*;µÜ@*{œk@*CœkA*KHmA*{œkA*CœkI*;µÜ`*{œk`*Cœka*KHma*{œka*Cœki*;µÜ€*{œk€*Cœk*KHm*{œk*Cœk‰*;µÜ *{œk *Cœk¡*KHm¡*{œk¡*Cœk©*;µÜÀ*{œkÀ*CœkÁ*KHmÁ*{œkÁ*CœkÉ*;µÜà*{œkà*Cœké*;µÜ+{œk+Cœk +;µÜ +{œk +Cœk)+;µÜ@+{œk@+Cœk`+{œk`+Cœki+;µÜ€+{œk€+Cœk‰+;µÜ +{œk +CœkÀ+{œkÀ+Cœkà+{œkà+Cœké+{œké+Cœké+KHm,{œk,Cœk ,{œk ,Cœk ,KHm ,{œk ,Cœk!,KHm!,{œk!,Cœk),{œk),Cœk),KHm@,{œk@,CœkI,{œkI,CœkI,KHm`,{œk`,Cœki,{œki,Cœki,KHm€,{œk€,Cœk‰,{œk‰,Cœk‰,KHm ,{œk ,Cœk©,{œk©,Cœk©,KHmÀ,{œkÀ,CœkÉ,{œkÉ,CœkÉ,KHmà,{œkà,Cœkã,;Çùé,{œké,Cœké,KHm-{œk-Cœk-KHm-{œk-Cœk -{œk -Cœk -KHm -{œk -Cœk!-KHm!-{œk!-Cœk)-{œk)-Cœk)-KHm@-{œk@-CœkA-KHmA-{œkA-CœkI-{œkI-CœkI-KHm`-{œk`-Cœka-KHma-{œka-Cœki-{œki-Cœki-KHm€-{œk€-Cœk-KHm-{œk-Cœk‰-›Ço‰-{œk‰-Cœk -{œk -Cœk©-›Ço©-{œk©-CœkÀ-{œkÀ-CœkÁ-KHmÁ-{œkÁ-CœkÉ-{œkÉ-CœkÉ-KHmà-{œkà-Cœké-{œké-Cœké-KHm.{œk.Cœk .{œk .Cœk .KHm .{œk .Cœk).{œk).Cœk).KHm@.{œk@.CœkI.{œkI.CœkI.KHm`.{œk`.Cœki.{œki.Cœki.KHm€.{œk€.Cœk.KHm.{œk.Cœk‰.{œk‰.Cœk‰.KHm .{œk .Cœk¡.KHm¡.{œk¡.Cœk©.{œk©.Cœk©.KHmÀ.{œkÀ.CœkÁ.KHmÁ.{œkÁ.CœkÉ.{œkÉ.CœkÉ.KHmà.{œkà.Cœké.{œké.Cœké.KHm/{œk/Cœk /{œk /Cœk /KHm /{œk /Cœk)/{œk)/Cœk)/KHm@/{œk@/CœkI/{œkI/CœkI/KHm`/{œk`/Cœki/{œki/Cœki/KHm€/{œk€/Cœk‰/{œk‰/Cœk‰/KHm /{œk /Cœk©/{œk©/Cœk©/KHmÀ/{œkÀ/CœkÉ/{œkÉ/CœkÉ/KHmà/{œkà/Cœká/KHmá/{œká/Cœké/{œké/Cœké/KHm0{œk0Cœk 0{œk 0Cœk 0KHm 0{œk 0Cœk@0{œk@0CœkA0KHmA0{œkA0Cœk`0“Îka0KHma0{œka0Cœk0KHm0{œk0Cœk 0{œk 0Cœk¡0KHm¡0{œk¡0CœkÀ0{œkÀ0CœkÁ0KHmÁ0{œkÁ0Cœká0KHmá0{œká0Cœk1{œk1Cœk1KHm1{œk1Cœk 1{œk 1Cœk!1KHm!1{œk!1Cœk@1{œk@1CœkA1KHmA1{œkA1Cœk`1{œk`1Cœk€1{œk€1Cœk1KHm1{œk1Cœk 1{œk 1Cœk¡1KHm¡1{œk¡1CœkÁ1KHmÁ1{œkÁ1Cœká1KHmá1{œká1Cœk‰2{œk‰2Cœk‰2KHm©2{œk©2Cœk©2KHmÉ2{œkÉ2CœkÉ2KHmà2“¤lé2{œké2Cœké2KHm 3{œk 3Cœk 3KHm 3“ÎkI3{œkI3CœkI3KHmi3{œki3Cœki3KHm€3“ׂ‰3{œk‰3Cœk‰3KHm©3{œk©3Cœk©3KHmÉ3{œkÉ3CœkÉ3KHmé3{œké3Cœké3KHm 4{œk 4Cœk 4KHm)4{œk)4Cœk)4KHmC4;ÇùI4{œkI4CœkI4KHmi4{œki4Cœki4KHm‰4{œk‰4Cœk‰4KHm 4{œk 4CœkÀ4{œkÀ4CœkÁ4KHmÁ4{œkÁ4Cœkà4{œkà4Cœk5{œk5Cœk 5{œk 5Cœk€5{œk 5{œk¡5KHm¡5{œk¡5CœkÀ5{œkà5{œk6{œk6KHm6{œk6Cœk 6{œk!6KHm!6{œk!6Cœké6SËq 7Sõq)7SrI7S'ra7KHma7{œka7Cœki7SËq7KHm7{œk7Cœk‰7Sõq¡7KHm¡7{œk¡7Cœk©7SrÁ7KHmÁ7{œkÁ7CœkÉ7S'ré7{œké7Cœké7KHm 8{œk 8Cœk 8KHm)8{œk)8Cœk)8KHmI8{œkI8CœkI8KHma8KHma8{œka8Cœki8{œki8Cœki8KHm8KHm8{œk8Cœk‰8{œk‰8Cœk‰8KHm¡8KHm¡8{œk¡8Cœk£8;Çù©8{œk©8Cœk©8KHmÁ8KHmÁ8{œkÁ8CœkÉ8{œkÉ8CœkÉ8KHmé8›Çoé8{œké8Cœk 9›Üo 9{œk 9Cœki9{œki9Cœki9KHm€9{œk€9Cœk‰9›Ço‰9{œk‰9Cœk 9Skm¡9KHm¡9{œk¡9CœkÀ9{œkÀ9CœkÁ9KHmÁ9{œkÁ9CœkÉ9SËqà9S~má9KHmá9{œká9Cœk:{œk:Cœk :{œk :Cœk@:{œk@:CœkA:KHmA:{œkA:Cœk`:{œka:KHma:{œka:Cœk€:{œk:KHm:{œk:Cœk :{œk¡:KHm¡:{œk¡:CœkÀ:{œkà:{œk;{œk;Cœk ;{œk ;Cœk#;;âø@;{œk@;CœkC;‹nC;;:n`;{œk`;Cœk€;{œk€;Cœkƒ;“¤L ƒ;‹n ;{œk ;Cœk£;“ìL £;‹nÀ;{œkÀ;Cœkà;{œkà;Cœk<;‡s <{œk <Cœk@<Skm`<{œk`<Cœk€<S~m<KHm<{œk<Cœk <{œk <Cœk¡<KHm¡<{œk¡<CœkÀ<S‹mÁ<KHmÁ<{œkÁ<Cœkà<{œkà<Cœká<KHmá<{œká<Cœk=Sâ¢=KHm={œk=Cœk ={œk =Cœk!=KHm!={œk!=Cœk@=Sï¢A=KHmA={œkA=Cœk`={œk`=Cœka=KHma={œka=Cœk€=Sü¢=KHm={œk=Cœk ={œk =Cœk¡=KHm¡={œk¡=CœkÀ=S £Á=KHmÁ={œkÁ=Cœkà={œkà=Cœká=KHmá={œká=Cœk>{œk>Cœk>KHm>{œk>Cœk >{œk >Cœk!>KHm!>{œk!>CœkA>KHmA>{œkA>Cœk`>{œk`>Cœka>KHma>{œka>Cœk€>{œk€>Cœk>KHm>{œk>Cœk >{œk >Cœk¡>KHm¡>{œk¡>CœkÀ>{œkÀ>CœkÁ>KHmÁ>{œkÁ>Cœkà>{œkà>Cœká>KHmá>{œká>Cœk?{œk?Cœk ?{œk ?Cœk@?{œk@?Cœk`?{œk`?Cœk€?{œk€?Cœk ?{œk ?CœkÀ?{œkÀ?CœkÁ?KHmÁ?{œkÁ?Cœkà?{œkà?Cœká?KHmá?{œká?Cœk@{œk@Cœk@KHm@{œk@Cœk @{œk @Cœk!@KHm!@{œk!@Cœk@@{œk@@CœkA@KHmA@{œkA@Cœk`@{œk`@Cœka@KHma@{œka@Cœkc@;âø€@{œk€@Cœk@KHm@{œk@Cœk @{œk @Cœk¡@KHm¡@{œk¡@CœkÀ@{œkÀ@CœkÁ@KHmÁ@{œkÁ@CœkÃ@;hvà@{œkà@Cœká@KHmá@{œká@Cœkã@;hvA{œkACœkA;hv!AKHm!A{œk!ACœk#A;hv@A{œk@ACœkAAKHmAA{œkAACœkCA;hv`ASkmaAKHmaA{œkaACœkcA;hv€A{œk€ACœkAKHmA{œkACœkƒA;hv AS~m¡AKHm¡A{œk¡ACœk£A;hvÀA{œkÀACœkÁAKHmÁA{œkÁACœkÃA;hvàAS‹máAKHmáA{œkáACœkãA;hvB{œkBCœkBKHmB{œkBCœkB;hv BSâ¢!BKHm!B{œk!BCœk#B;hv@B{œk@BCœkABKHmAB{œkABCœkCB;hv`B{œk`BCœkaBKHmaB{œkaBCœkcB;hv€B{œk€BCœkBKHmB{œkBCœk£BÓœk£B;‡sÀB{œkÀBCœkÃB;ÇùàB{œkàBCœkãB;‡sC{œkCCœk C{œk CCœk#C‹n#C;:n@C{œk@CCœk`C{œk`CCœkaCKHmaC{œkaCCœkcC“!ƒ cC‹n€C{œk€CCœkCKHmC{œkCCœkƒC“ƒ ƒC‹n C{œk CCœk¡CKHm¡C{œk¡CCœk©CSËqÀC{œkÀCCœkÁCKHmÁC{œkÁCCœkÉCSõqàC{œkàCCœkáCKHmáC{œkáCCœkãC‹nãC;:néCSrD{œkDCœkDKHmD{œkDCœk DS'r D{œk DCœk!DKHm!D{œk!DCœk#D‹n#D;:n)DS:r@D{œk@DCœkADKHmAD{œkADCœkIDSMr`D{œk`DCœkcD“ … cD‹niDSZrƒD“x… ƒD‹n‰DSgr©DStrÉDSréDSŽr ES›r#E;hv)ESºwCE;hvIESÖwiESãw‰ESðw E{œk©ESƒ­ÉES­éES­ FS²­!FKHm!F{œk!FCœk)F{œk)FCœk)FKHmAFKHmAF{œkAFCœkIF{œkIFCœkIFKHmiF{œkiFCœkiFKHm‰F{œk‰FCœk‰FKHm©F›Ço©F{œk©FCœkÉF›ÇoÉF{œkÉFCœkáFKHmáF{œkáFCœkéFSËqGKHmG{œkGCœk GSõq)GSrIGS'riGS:r‰GSMr©GSZrÉGSgréGStr HSr)HSŽrIH{œkIHCœkIHKHmiH{œkiHCœkiHKHm‰H{œk‰HCœk‰HKHm©H{œk©HCœk©HKHmÁHKHmÁH{œkÁHCœkÉH{œkÉHCœkÉHKHmáHKHmáH{œkáHCœkéH{œkéHCœkéHKHm I{œk ICœk IKHm)I{œk)ICœk)IKHmAIKHmAI{œkAICœkII{œkIICœkIIKHmaIKHmaI{œkaICœkiI{œkiICœkiIKHmIKHmI{œkICœk‰I{œk‰ICœk‰IKHm©I›Ço©I{œk©ICœkÉI›¨nÉI{œkÉICœkéI›oéI{œkéICœk J›V° J{œk JCœk)J›ˆ)J{œk)JCœk@J{œk@JCœkIJ›÷DIJ{œkIJCœk`JSkmiJ›ÒæiJ{œkiJCœk€J{œk€JCœk‰J›bç‰J{œk‰JCœk JS~m©J›óç©J{œk©JCœkÀJ{œkÀJCœkÉJ›oýÉJ{œkÉJCœkàJS‹méJ› ³éJ{œkéJCœkK{œkKCœkKKHmK{œkKCœk K›Ço K{œk KCœk K{œk KCœk)K›¨n)K{œk)KCœk@K{œk@KCœkIK›oIK{œkIKCœk`K{œkaKKHmaK{œkaKCœkiK›V°iK{œkiKCœk€K{œkKKHmK{œkKCœk‰K›ˆ‰K{œk‰KCœk K{œk¡KKHm¡K{œk¡KCœk©K›÷D©K{œk©KCœkÀK{œkÉK›ÒæÉK{œkÉKCœkàK{œkéK›bçéK{œkéKCœkL{œk L›óç L{œk LCœk L{œk)L›oý)L{œk)LCœk@L{œkALKHmAL{œkALCœkIL› ³IL{œkILCœk`L{œk`LCœkaLKHmaL{œkaLCœkiLSËq€L{œk€LCœk‰LSõq L{œk LCœk©LSrÀL{œkÀLCœkÉLS'ràL{œkàLCœkéLS:rM{œkMCœk MSMr M{œk MCœk)MSZr@M{œk@MCœkIMSgr`M{œk`MCœkiMStr€M{œk€MCœk‰MSr©MSŽrÉMS›r N{œk NCœk NKHm N{œk)N{œk)NCœk)NKHm@N{œkIN{œkINCœkINKHm`N{œkiN{œkiNCœkiNKHm€N{œk‰N{œk‰NCœk‰NKHm N{œk©N{œk©NCœk©NKHmÀN{œkÉN{œkÉNCœkÉNKHméN{œkéNCœkéNKHmO{œk O{œk OCœk OKHm O{œk)O{œk)OCœk)OKHmiO›V°iO{œkiOCœk‰O›V°‰O{œk‰OCœk©OSËqÉOSõqéOSr PSËq)PSõq©PSËqÉPSõqQKHmQ{œkQCœk QSËq!QKHm!Q{œk!QCœk)QSõqAQKHmAQ{œkAQCœkaQKHmaQ{œkaQCœkiQSËqQKHmQ{œkQCœk‰QSõq©QSrÉQS'réQS:r RSMr)RSZr@R“Îk@R{œkIRSgrRKHmR{œkRCœk¡RKHm¡R{œk¡RCœk SSËq)SSõqASKHmAS{œkASCœkISSraSKHmaS{œkaSCœkiSS'rSKHmS{œkSCœk‰SS:r¡SKHm¡S{œk¡SCœk©SSMrÉSSZráSKHmáS{œkáSCœkéSSgrTKHmT{œkTCœk TStr!TKHm!T{œk!TCœk)TSrITSŽriTS›r`U{œk€U{œk U{œk¡UKHm¡U{œk¡UCœkÀU{œkàU{œkV{œk V{œk!VKHm!V{œk!VCœk@V“Œ)@V{œk`V{œkaVKHmaV{œkaVCœkiV{œkiVCœkiVKHmVKHmV{œkVCœk‰V{œk‰VCœk‰VKHm¡VKHm¡V{œk¡VCœk©V{œk©VCœk©VKHmÁVKHmÁV{œkÁVCœkÉV{œkÉVCœkÉVKHméV{œkéVCœkéVKHmWKHmW{œkWCœk W{œk WCœk WKHm!WKHm!W{œk!WCœk)W›Ço)W{œk)WCœkIW›¨nIW{œkIWCœkiW›oiW{œkiWCœkWKHmW{œkWCœk‰W›Ço‰W{œk‰WCœk¡WKHm¡W{œk¡WCœk©W›¨n©W{œk©WCœkÉW›oÉW{œkÉWCœkX{œkXCœk X{œk XCœkAXKHmAX{œkAXCœkaXKHmaX{œkaXCœkXKHmX{œkXCœk¡XKHm¡X{œk¡XCœkÁXKHmÁX{œkÁXCœkáXKHmáX{œkáXCœkYKHmY{œkYCœkÁYKHmÁY{œkÁYCœkáYKHmáY{œkáYCœkZKHmZ{œkZCœk Z{œk ZCœk ZKHm!ZKHm!Z{œk!ZCœk)Z›Ço)Z{œk)ZCœkAZKHmAZ{œkAZCœkIZSËqaZKHmaZ{œkaZCœkiZSõq‰ZSr©ZS'rÉZS:réZSMr [SZr)[SgrI[SËqi[Sõq\KHm\{œk\Cœk!\KHm!\{œk!\CœkA\KHmA\{œkA\Cœka\KHma\{œka\Cœk€\{œk€\Cœk\KHm\{œk\Cœk \{œk \Cœká\KHmá\{œká\Cœk]KHm]{œk]Cœk!]KHm!]{œk!]CœkA]KHmA]{œkA]Cœka]KHma]{œka]Cœk]KHm]{œk]Cœk¡]KHm¡]{œk¡]CœkÁ]KHmÁ]{œkÁ]Cœká]KHmá]{œká]Cœké]{œké]Cœké]KHm^KHm^{œk^Cœk ^{œk ^Cœk ^KHm!^KHm!^{œk!^Cœk)^{œk)^Cœk)^KHm@^{œk@^CœkA^KHmA^{œkA^CœkI^{œkI^CœkI^KHm`^{œk`^Cœki^{œki^Cœki^KHm‰^{œk‰^Cœk‰^KHm©^{œk©^Cœk©^KHmÉ^{œkÉ^CœkÉ^KHmé^{œké^Cœké^KHm _{œk _Cœk _KHm)_{œk)_Cœk)_KHmI_{œkI_CœkI_KHma_KHma_{œka_Cœki_{œki_Cœki_KHm‰_{œk‰_Cœk‰_KHm©_›Ço©_{œk©_CœkÉ_›ÜoÉ_{œkÉ_Cœké_›¨né_{œké_Cœk `›Qp `{œk `Cœk)`›bp)`{œk)`CœkI`›oI`{œkI`Cœki`›V°i`{œki`Cœk‰`›ˆ‰`{œk‰`Cœk©`›Òæ©`{œk©`CœkÉ`›bçÉ`{œkÉ`Cœká`KHmá`{œká`Cœké`›óçé`{œké`Cœk a›«ã a{œk aCœk)a›oý)a{œk)aCœkIa›ÉýIa{œkIaCœkia›Àäia{œkiaCœkaKHma{œkaCœk‰a›&þ‰a{œk‰aCœk¡aKHm¡a{œk¡aCœk©a›˜þ©a{œk©aCœkÁaKHmÁa{œkÁaCœkÉa›"ÿÉa{œkÉaCœkéa›6 éa{œkéaCœk b›ÃÏ b{œk bCœk)b›ÿ)b{œk)bCœkIb›ÇoIb{œkIbCœkib›Üoib{œkibCœkbKHmb{œkbCœk‰b›¨n‰b{œk‰bCœk©b›Qp©b{œk©bCœkÉb›bpÉb{œkÉbCœkéb›oéb{œkébCœk c›V° c{œk cCœk)c›ˆ)c{œk)cCœkIc›ÒæIc{œkIcCœkic›bçic{œkicCœk‰c›óç‰c{œk‰cCœk c“Îk©c›«ã©c{œk©cCœkÉc›oýÉc{œkÉcCœkéc›Éýéc{œkécCœkdKHmd{œkdCœk d›Àä d{œk dCœk!dKHm!d{œk!dCœk)d›&þ)d{œk)dCœkAdKHmAd{œkAdCœkId›˜þId{œkIdCœkid›"ÿid{œkidCœk‰d›6 ‰d{œk‰dCœk d“Ø©d›ÃÏ ©d{œk©dCœkÀd“ÎkÃd;ÇùÉd›ÿÉd{œkÉdCœkéd{œkédCœkédKHm e›Ço e{œk eCœk)e›Üo)e{œk)eCœkIe›íoIe{œkIeCœkie›–Sie{œkieCœk‰e›§S‰e{œk‰eCœk©e›¾W©e{œk©eCœkáeKHmáe{œkáeCœk f“ׂ)f{œk)fCœk)fKHmCf;ÇùIf{œkIfCœkIfKHmif{œkifCœkifKHm€f“Îk‰f{œk‰fCœk‰fKHm©f{œk©fCœk©fKHmÉf{œkÉfCœkÉfKHmãf;âøéf{œkéfCœkéfKHmg“Îk g›Ço g{œk gCœk!gKHm!g{œk!gCœk#g;âø)g›Üo)g{œk)gCœkCg;hvIg›íoIg{œkIgCœkcg;hvig›¨nig{œkigCœkƒg‹nƒg;:n‰g›Qp‰g{œk‰gCœk©g›bp©g{œk©gCœkÃg³œkÃgƒœkÃg‹nÃg;:nÉg›oÉg{œkÉgCœkég›qég{œkégCœkhSkmh“ZÊ h‹n h›(q h{œk hCœk h{œk hCœk!hKHm!h{œk!hCœk#h“¦Ê #h‹n)h›B)h{œk)hCœk@h{œk@hCœkAhKHmAh{œkAhCœkCh“$Ë Ch‹nIh›V°Ih{œkIhCœk`h{œk`hCœkch“—Ë ch‹nih›Çoih{œkihCœk€h{œk€hCœkƒh“ãË ƒh‹n‰h›Üo‰h{œk‰hCœk h{œk£h“Í £h‹n©h›ío©h{œk©hCœkÀh{œkÁhKHmÁh{œkÁhCœkÃh“Í Ãh‹nÉh›¨nÉh{œkÉhCœkàh{œkáhKHmáh{œkáhCœkãh“öÍ ãh‹néh›Qpéh{œkéhCœki{œkiKHmi{œkiCœki“rÎ i‹n i›bp i{œk iCœk i{œk!iKHm!i{œk!iCœk#i“æÎ #i‹n)i›o)i{œk)iCœk@i{œkAiKHmAi{œkAiCœkCi“tÏ Ci‹nIi›qIi{œkIiCœkaiKHmai{œkaiCœkci“ãÏ ci‹nii›(qii{œkiiCœkiKHmi{œkiCœkƒi“/Ð ƒi‹n‰i›B‰i{œk‰iCœk i{œk¡iKHm¡i{œk¡iCœk£i“ÛÐ £i‹n©i›V°©i{œk©iCœkÀi{œkÁiKHmÁi{œkÁiCœkÉiSËqài{œkàiCœkáiKHmái{œkáiCœkéiSõqjSkm jSr j{œk jCœk)jS'r@jS~m`j{œk`jCœk€jS‹m‰jSËq j{œk jCœkÀj{œkÀjCœkàj{œkàjCœk`k{œk`kCœk€k{œk€kCœkƒk‹nƒk;:n k{œk kCœk£k‹n£k;:nÀk{œkÀkCœkÃk‹nÃk;:nàk{œkàkCœkákKHmák{œkákCœkl{œklCœk l{œk lCœk#l‹n#l;:n@l{œk@lCœk`l{œk`lCœkcl“žÔ cl‹n€l{œk€lCœkƒl“ðÔ ƒl‹n l{œk lCœk£l“JÕ £l‹nÀl{œkÀlCœkÃl“ªÕ Ãl‹nàl{œkàlCœkãl“ Ö ãl‹nm{œkmCœkm“gÖ m‹n m{œk mCœk!mKHm!m{œk!mCœk#m“¾Ö #m‹n@m{œk@mCœkAmKHmAm{œkAmCœkCm“ × Cm‹n`m{œk`mCœkamKHmam{œkamCœk€m{œk€mCœk m{œk mCœk¡mKHm¡m{œk¡mCœkÀm{œkÀmCœkÁmKHmÁm{œkÁmCœkàm{œkàmCœkámKHmám{œkámCœkn{œknCœk n{œk nCœk@n{œk@nCœkAnKHmAn{œkAnCœk`n{œk`nCœkanKHmcn‹ncn;:n€n{œk€nCœknKHm n{œk nCœk¡nKHm£n“&Ø £n‹nÀnSkmÁnKHmÃn“Ø Ãn‹nàn{œkànCœkoS~moKHm o{œk oCœk!oKHm#o;hv@oS‹mAoKHm`o{œk`oCœkaoKHm€oS⢠o{œk oCœkÀoSï¢ào{œkàoCœkp{œkpCœk p{œk pCœkapKHmap{œkapCœkpKHmp{œkpCœk p{œk pCœk¡pKHmÀp{œkÀpCœkÁpKHmàp{œkàpCœkápKHmq{œkqCœkqKHm q{œk qCœk!qKHm@q{œk@qCœkAqKHm`q{œk`qCœkaqKHm€q{œk€qCœkqKHm‰qSËq q{œk qCœk¡qKHm©qSõqÀq{œkÀqCœkÁqKHmÉqSràq{œkàqCœkáqKHméqS'rr{œkrCœkrKHm rS:r r{œk rCœk!rKHm)rSMr@r{œk@rCœkArKHmAr{œkArCœkIrSZr`r{œk`rCœkirSgr€r{œk€rCœkrKHm‰rStr r{œk rCœk¡rKHm©rSrÀr{œkÀrCœkÁrKHmÉrSŽràr{œkàrCœkárKHmérS›rs{œksCœksKHms{œksCœk sSºw s{œk sCœk)sSÖw@s{œk@sCœkIsSãw`s{œk`sCœkisSðw€s{œk€sCœk‰sSËq s{œk sCœk©sSõqÀs{œkÀsCœkÉsSràs{œkàsCœkãs‹nãs;:nésS'rt{œktCœkt‹nt;:n tSËq t{œk tCœk!tKHm!t{œk!tCœk#t‹n#t;:n)tSõq@t{œk@tCœk`t{œk`tCœk€t{œk€tCœk t{œk tCœk¡tKHm¡t{œk¡tCœk©t{œk©tCœk©tKHmÀt{œkÀtCœkÉt›ÇoÉt{œkÉtCœkàt{œkàtCœkét›Üoét{œkétCœku{œkuCœk u{œk uCœk uKHm u{œk uCœk)u›Ço)u{œk)uCœk@u{œk@uCœkIu›ÜoIu{œkIuCœk`u{œk`uCœkauKHmau{œkauCœkcu‹ncu;:n€u{œk€uCœk u{œk uCœkÀu{œkÀuCœkàu{œkàuCœkv{œkvCœk v{œk vCœk!vKHm!v{œk!vCœk@v{œk@vCœk`v{œk`vCœk€v{œk€vCœk©vSËqÉvSõqAwKHmAw{œkAwCœkyKHmy{œkyCœk¡yKHm¡y{œk¡yCœkÁyKHmÁy{œkÁyCœkáyKHmáy{œkáyCœkzKHmz{œkzCœkzKHmz{œkzCœk¡zKHm¡z{œk¡zCœkÁzKHmÁz{œkÁzCœkázKHmáz{œkázCœk{KHm{{œk{Cœk!{KHm!{{œk!{Cœk#{;âøA{KHmA{{œkA{Cœk {{œk {CœkÀ{SkmÃ{‹nÃ{;:nà{{œkà{Cœk|S~m |{œk |Cœk!|KHm!|{œk!|Cœk@|{œk@|CœkA|KHmA|{œkA|Cœk`|{œk`|Cœka|KHma|{œka|Cœk|KHm|{œk|Cœk¡|KHm¡|{œk¡|Cœkà|{œkà|Cœk}{œk}Cœk }{œk }Cœk@}{œk@}Cœk`}{œk`}Cœka}KHma}{œka}Cœk€}{œk€}Cœk}KHm}{œk}Cœk }{œk }Cœk¡}KHm¡}{œk¡}Cœk£};hvÀ}{œkÀ}CœkÁ}KHmÁ}{œkÁ}CœkÃ};hvá}KHmã};hv~KHm~;hv!~KHm#~;hvC~;hvc~‹nc~;:n~KHm~{œk~Cœk ~{œk ~Cœk¡~KHm¡~{œk¡~Cœk£~‹n£~;:nÀ~SkmÁ~KHmÁ~{œkÁ~CœkÃ~‹nÃ~;:nà~{œkà~Cœká~KHmá~{œká~Cœkã~‹nã~;:nS~m;hv {œk Cœk#;hv@{œk@CœkAKHmA{œkACœkC‹nC;:n`{œk`CœkaKHma{œkaCœkc‹nc;:n€{œk€CœkKHm{œkCœkƒ‹nƒ;:n {œk Cœk¡KHm¡{œk¡Cœk£‹n£;:nÀ{œkÀCœkÁKHmà{œkàCœkáKHmã“, ã‹n€{œk€Cœk€KHm€“ €‹n €{œk €Cœk!€KHm#€“õ #€‹n@€{œk@€Cœk`€{œk`€Cœka€KHma€{œka€Cœk€€{œk€€Cœk €{œk €Cœk¡€KHm¡€{œk¡€Cœk£€‹n£€;:nÀ€{œkÀ€CœkÁ€KHmÁ€{œkÁ€CœkÀ‹nÀ;:nà€{œkà€Cœká€KHmá€{œká€Cœk》nã€;:n‹n;:n‰SËq¡KHm¡{œk¡Cœk©Sõq!‚KHm!‚{œk!‚CœkA‚KHmA‚{œkA‚Cœk`‚{œk`‚Cœka‚KHma‚{œka‚Cœk€‚Skm‚KHm‚{œk‚Cœk ‚{œk ‚CœkÀ‚S~mÁ‚KHmÁ‚{œkÁ‚Cœkà‚{œkà‚CœkƒS‹m ƒ{œk ƒCœk@ƒSâ¢`ƒ{œk`ƒCœk€ƒSƒ{œk ƒCœkÀƒSü¢àƒ{œkàƒCœk„{œk„Cœk„KHm „{œk „Cœk!„KHm@„{œkA„KHm`„{œka„KHm€„{œk„KHm „{œk¡„KHmÀ„{œkÁ„KHmà„{œká„KHm…KHm!…KHm!…{œk!…Cœk@…{œkA…KHmA…{œkA…Cœk`…{œka…KHma…{œka…Cœk€…{œk€…Cœk …{œk …CœkÀ…{œkÀ…CœkÁ…KHmà…{œkà…Cœká…KHm†{œk†Cœk†KHm †{œk †Cœk@†{œk@†Cœk`†{œk`†Cœkc†;âø€†{œk€†Cœk†KHm†{œk†Cœk †{œk †CœkÀ†{œkÀ†Cœkà†{œkà†Cœk!‡KHm!‡{œk!‡CœkA‡KHmA‡{œkA‡Cœk`‡{œk`‡Cœk€‡Skm ‡{œk ‡CœkÀ‡S~mà‡{œkà‡CœkˆS‹m ˆ{œk ˆCœk@ˆ{œk@ˆCœk`ˆ{œk`ˆCœkaˆKHmaˆ{œkaˆCœkiˆ{œkiˆCœkiˆKHmˆKHmˆ{œkˆCœk‰ˆ›Ço‰ˆ{œk‰ˆCœk£ˆ;Çù©ˆ›Üo©ˆ{œk©ˆCœkÁˆKHmÁˆ{œkÁˆCœkáˆKHmáˆ{œkáˆCœkA‰KHmA‰{œkA‰CœkC‰;Çù`‰{œk`‰Cœka‰KHma‰{œka‰Cœkc‰;Çù€‰{œk€‰Cœk ‰{œk ‰CœkÀ‰{œkÀ‰CœkÁ‰KHmÁ‰{œkÁ‰Cœkà‰{œkà‰Cœká‰KHmá‰{œká‰Cœké‰{œké‰Cœké‰KHmŠ{œkŠCœk Š›Ço Š{œk ŠCœk Š{œk ŠCœk)Š›Üo)Š{œk)ŠCœk@Š{œk@ŠCœk`Š{œk`ŠCœkaŠKHmaŠ{œkaŠCœk€Š{œk€ŠCœkŠKHmŠ{œkŠCœk Š{œk ŠCœkÀŠ{œkÀŠCœkàŠ{œkàŠCœk‹{œk‹Cœk ‹{œk ‹Cœk)‹{œk)‹Cœk)‹KHm@‹{œk@‹CœkI‹{œkI‹CœkI‹KHmi‹{œki‹Cœki‹KHm‰‹{œk‰‹Cœk‰‹KHm©‹{œk©‹Cœk©‹KHmÉ‹{œkÉ‹CœkÉ‹KHmé‹{œké‹Cœké‹KHm Œ{œk ŒCœk ŒKHm)Œ›Ço)Œ{œk)ŒCœkIŒ›ÜoIŒ{œkIŒCœkiŒ›¨niŒ{œkiŒCœk‰Œ›Qp‰Œ{œk‰ŒCœk©Œ›o©Œ{œk©ŒCœkÁŒKHmÁŒ{œkÁŒCœkÉŒ›V°ÉŒ{œkÉŒCœkáŒKHmáŒ{œkáŒCœk錛ˆéŒ{œkéŒCœkKHm{œkCœk ›Òæ {œk Cœk!KHm!{œk!Cœk)›E){œk)CœkAKHmA{œkACœkI›bçI{œkICœki›óçi{œkiCœk‰›Ço‰{œk‰Cœk “Îk©›Üo©{œk©CœkÉ›¨nÉ{œkÉCœkà{œké›Qpé{œkéCœkŽKHmŽ{œkŽCœk Ž›o Ž{œk ŽCœk!ŽKHm!Ž{œk!ŽCœk)Ž›V°)Ž{œk)ŽCœkAŽKHmAŽ{œkAŽCœkIŽ›ˆIŽ{œkIŽCœkaŽKHmaŽ{œkaŽCœkiŽ›ÒæiŽ{œkiŽCœkŽKHmŽ{œkŽCœk‰Ž›E‰Ž{œk‰ŽCœk¡ŽKHm¡Ž{œk¡ŽCœk©Ž›b穎{œk©ŽCœkÉŽ›óçÉŽ{œkÉŽCœkéŽ{œkéŽCœkéŽKHm {œk Cœk KHm){œk)Cœk)KHm@{œk@CœkI{œkICœkIKHm`Skmi{œkiCœkiKHm€{œk€Cœk‰{œk‰Cœk‰KHm S~m©{œk©Cœk©KHmÀ{œkÀCœkÉ›ÇoÉ{œkÉCœkà{œkàCœk雨né{œkéCœk{œkCœk ›o {œk Cœk#;Çù)›q){œk)Cœk@{œk@CœkI›V°I{œkICœk`{œk`CœkaKHmi›Çoi{œkiCœk€{œk€CœkKHm‰›¨n‰{œk‰Cœk {œk Cœk¡KHm©›o©{œk©CœkÀ{œkÀCœkÁKHmÉ›qÉ{œkÉCœkà{œkàCœkáKHmé›V°é{œkéCœk‘{œk‘Cœk‘KHm‘{œk‘Cœk ‘SËq ‘{œk ‘Cœk!‘KHm!‘{œk!‘Cœk)‘Sõq@‘{œk@‘CœkI‘Sr`‘Skma‘KHma‘{œka‘Cœkc‘;Çùi‘S'r€‘{œk€‘Cœk‰‘S:r ‘S~m¡‘KHm¡‘{œk¡‘Cœk©‘SMrÀ‘{œkÀ‘CœkÁ‘KHmÁ‘{œkÁ‘CœkÉ‘SZrà‘S‹má‘KHmá‘{œká‘Cœké‘Sgr’{œk’Cœk ’Str ’Sâ¢!’KHm!’{œk!’Cœk)’Sr@’{œk@’CœkI’SŽr`’{œk`’Cœki’S›r€’{œk€’Cœk‰’Sºw©’SËqÀ’{œkÀ’CœkÃ’;ÇùÉ’Sõqà’{œkà’Cœké’Sr“{œk“Cœk “{œk “Cœk@“{œk@“CœkC“;âø`“{œk`“Cœk€“{œk€“Cœk“KHm“{œk“Cœk “{œk “Cœk¡“KHm¡“{œk¡“CœkÀ“{œkÀ“CœkÁ“KHmà“{œkà“Cœká“KHm”{œk”Cœk”KHm ”{œk ”Cœk!”KHm@”{œk@”CœkA”KHmA”{œkA”Cœk`”{œk`”Cœka”KHma”{œka”Cœk€”{œk€”Cœk ”{œk ”CœkÀ”{œkÀ”CœkÁ”KHmÁ”{œkÁ”Cœkà”{œkà”Cœká”KHmá”{œká”Cœké”{œké”Cœké”KHm•{œk•Cœk•KHm•{œk•Cœk •{œk •Cœk •KHm •{œk •Cœk)•{œk)•Cœk)•KHm@•{œk@•CœkA•KHmA•{œkA•CœkI•›ÇoI•{œkI•Cœk`•{œk`•Cœka•KHma•{œka•Cœki•›¨ni•{œki•Cœk€•{œk€•Cœk•KHm•{œk•Cœk‰•›Ço‰•{œk‰•Cœk •{œk •Cœk©•›¨n©•{œk©•CœkÀ•{œkÀ•CœkÉ•SËqà•{œkà•Cœká•KHmá•{œká•Cœké•Sõq–{œk–Cœk–KHm–{œk–Cœk –Sr –{œk –Cœk!–KHm!–{œk!–Cœk)–{œk)–Cœk)–KHm@–{œk@–CœkA–KHmA–{œkA–CœkI–{œkI–CœkI–KHm`–{œk`–Cœka–KHmi–{œki–Cœki–KHm€–{œk€–Cœk–KHm‰–›Ço‰–{œk‰–Cœk –{œk –Cœk¡–KHm©–›¨n©–{œk©–CœkÀ–{œkÀ–CœkÉ–›ÇoÉ–{œkÉ–Cœkà–{œkà–Cœké–›¨né–{œké–Cœk—{œk—Cœk —{œk —Cœk —KHm —{œk —Cœk)—›Ço)—{œk)—Cœk@—{œk@—CœkA—KHmA—{œkA—CœkI—›ÜoI—{œkI—Cœk`—{œk`—Cœkc—;Çùi—›íoi—{œki—Cœk‰—›–S‰—{œk‰—Cœk¡—KHm¡—{œk¡—Cœk©—›§S©—{œk©—CœkÉ—›¾WÉ—{œkÉ—Cœké—›&Xé—{œké—Cœk ˜{œk ˜Cœk ˜KHm!˜KHm!˜{œk!˜Cœk)˜›Ço)˜{œk)˜CœkA˜KHmA˜{œkA˜CœkI˜›ÜoI˜{œkI˜Cœka˜KHmi˜{œki˜Cœki˜KHm˜KHm‰˜›Ço‰˜{œk‰˜Cœk¡˜KHm©˜{œk©˜Cœk©˜KHmÁ˜KHmɘ{œkɘCœkɘKHmá˜KHmã˜;Çùé˜{œké˜Cœké˜KHm™KHm™;Çù ™{œk ™Cœk ™KHm)™{œk)™Cœk)™KHmI™{œkI™CœkI™KHmc™;Çùi™{œki™Cœki™KHm‰™{œk‰™Cœk‰™KHm©™{œk©™Cœk©™KHmÉ™{œkÉ™CœkÉ™KHmá™KHmá™{œká™Cœké™{œké™Cœké™KHmšKHmš{œkšCœk š{œk šCœk šKHm!šKHm)š{œk)šCœk)šKHmAšKHmIš{œkIšCœkIšKHmašKHmiš{œkišCœkišKHm€š{œk€šCœkšKHmƒš;Çù‰š{œk‰šCœk‰šKHm šSkm¡šKHm£š;Çù©š{œk©šCœk©šKHmÀš{œkÀšCœkÁšKHmÉš{œkÉšCœkÉšKHmàšS~mãš;âøéš{œkéšCœkéšKHm›{œk›Cœk›;4m ›{œk ›Cœk ›KHm ›S‹m)›{œk)›Cœk)›KHm@›{œk@›CœkI››ÇoI›{œkI›Cœk`›Sâ¢i››¨ni›{œki›Cœk€›{œk€›Cœk‰››o‰›{œk‰›Cœk ›{œk ›Cœk¡›KHm©››V°©›{œk©›CœkÀ›{œkÀ›CœkÁ›KHmÉ››ÒæÉ›{œkÉ›Cœká›KHmé››bçé›{œké›Cœkœ{œkœCœkœKHmœ{œkœCœk œ›óç œ{œk œCœk œ{œk œCœk!œKHm!œ{œk!œCœk)œ›oý)œ{œk)œCœk@œ{œk@œCœkAœKHmAœ{œkAœCœkIœ›ÉýIœ{œkIœCœk`œ{œk`œCœkaœKHmaœ{œkaœCœkiœ›&þiœ{œkiœCœk€œ{œk€œCœk‰œ›˜þ‰œ{œk‰œCœk œ{œk œCœk©œ›"ÿ©œ{œk©œCœkÀœ{œkÀœCœkÉœ›ÿÉœ{œkÉœCœkàœ{œkàœCœk霛éœ{œkéœCœk{œkCœk ›! {œk Cœk {œk Cœk)›’ ){œk)Cœk@{œk@CœkI›ÇoI{œkICœk`{œk`Cœki›¨ni{œkiCœk€{œk€Cœk‰›o‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›V°©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›ÒæÉ{œkÉCœkà{œkàCœkáKHmá{œkáCœké›bçé{œkéCœkž{œkžCœkžKHmž{œkžCœk ž›óç ž{œk žCœk ž{œk žCœk!žKHm!ž{œk!žCœk)ž›oý)ž{œk)žCœk@ž{œk@žCœkAžKHmAž{œkAžCœkIž›ÉýIž{œkIžCœk`ž{œk`žCœkažKHmaž{œkažCœkiž›&þiž{œkižCœk€ž{œk€žCœkžKHmž{œkžCœk‰ž›˜þ‰ž{œk‰žCœk ž{œk žCœk¡žKHm¡ž{œk¡žCœk©ž›"ÿ©ž{œk©žCœkÀž{œkÀžCœkÁžKHmÁž{œkÁžCœkÉž›ÿÉž{œkÉžCœkàž{œkàžCœkážKHmáž{œkážCœkéž›éž{œkéžCœkŸ{œkŸCœkŸKHmŸ{œkŸCœk Ÿ›! Ÿ{œk ŸCœk Ÿ{œk ŸCœk!ŸKHm!Ÿ{œk!ŸCœk)Ÿ›’ )Ÿ{œk)ŸCœk@Ÿ{œk@ŸCœkAŸKHmAŸ{œkAŸCœkIŸ{œkIŸCœkIŸKHm`Ÿ{œk`ŸCœkaŸKHmaŸ{œkaŸCœkiŸ{œkiŸCœkiŸKHm€Ÿ{œk€ŸCœkŸKHmŸ{œkŸCœk‰Ÿ{œk‰ŸCœk‰ŸKHm Ÿ{œk ŸCœk¡ŸKHm¡Ÿ{œk¡ŸCœk©Ÿ{œk©ŸCœk©ŸKHmÀŸ{œkÀŸCœkÁŸKHmÁŸ{œkÁŸCœkÉŸ›ÇoÉŸ{œkÉŸCœkàŸ{œkàŸCœkáŸKHmáŸ{œkáŸCœk韛ÜoéŸ{œkéŸCœk {œk Cœk KHm {œk Cœk  ›ío  {œk  Cœk  {œk  Cœk! KHm! {œk! Cœk) ›–S) {œk) Cœk@ {œk@ CœkA KHmA {œkA CœkI ›¨nI {œkI Cœk` {œk` Cœka KHma {œka Cœki ›Qpi {œki Cœk€ {œk€ Cœk KHm {œk Cœk‰ ›o‰ {œk‰ Cœk  {œk  Cœk¡ KHm¡ {œk¡ Cœk© ›q© {œk© CœkÀ {œkÀ CœkÁ KHmÁ {œkÁ CœkÉ ›ÇoÉ {œkÉ Cœkà {œkà Cœká KHmé ›Üoé {œké Cœk¡{œk¡Cœk¡KHm ¡›ío ¡{œk ¡Cœk ¡{œk ¡Cœk)¡›–S)¡{œk)¡Cœk@¡{œk@¡CœkI¡›¨nI¡{œkI¡Cœk`¡{œk`¡Cœki¡›Qpi¡{œki¡Cœk‰¡›o‰¡{œk‰¡Cœk©¡›q©¡{œk©¡CœkÉ¡{œkÉ¡CœkÉ¡KHmá¡KHmá¡{œká¡Cœké¡›Çoé¡{œké¡Cœk¢KHm¢{œk¢Cœk ¢›Üo ¢{œk ¢Cœk!¢KHm!¢{œk!¢Cœka¢KHmi¢{œki¢Cœki¢KHm¢KHm‰¢{œk‰¢Cœk‰¢KHm©¢{œk©¢Cœk©¢KHmÉ¢{œkÉ¢CœkÉ¢KHmé¢{œké¢Cœké¢KHm £{œk £Cœk £KHm)£{œk)£Cœk)£KHmA£KHmI£{œkI£CœkI£KHma£KHmi£›Çoi£{œki£Cœk£KHm‰£›Üo‰£{œk‰£Cœk¡£KHm©£›¨n©£{œk©£CœkÁ£KHmÉ£›QpÉ£{œkÉ£Cœká£KHm飛oé£{œké£Cœk¤KHm ¤›Òæ ¤{œk ¤Cœk!¤KHm)¤›E)¤{œk)¤CœkA¤KHmI¤›bçI¤{œkI¤Cœka¤KHmi¤›,²i¤{œki¤Cœk¤KHm‰¤›=²‰¤{œk‰¤Cœk¡¤KHm©¤›]²©¤{œk©¤CœkÁ¤KHmɤ›ò” ɤ{œkɤCœká¤KHm餛Çoé¤{œké¤Cœk¥KHm ¥›Üo ¥{œk ¥Cœk!¥KHm)¥›¨n)¥{œk)¥CœkA¥KHmI¥›QpI¥{œkI¥Cœka¥KHmi¥›oi¥{œki¥Cœk¥KHm‰¥›Ò扥{œk‰¥Cœk¡¥KHm©¥›E©¥{œk©¥CœkÁ¥KHmÉ¥›bçÉ¥{œkÉ¥Cœká¥KHm饛,²é¥{œké¥Cœk¦KHm ¦›=² ¦{œk ¦Cœk!¦KHm)¦›]²)¦{œk)¦CœkA¦KHmI¦›ò” I¦{œkI¦Cœka¦KHmi¦{œki¦Cœki¦KHm¦KHm‰¦›Ço‰¦{œk‰¦Cœk¡¦KHm©¦›Üo©¦{œk©¦CœkÁ¦KHmɦ›íoɦ{œkɦCœká¦KHmé¦{œké¦Cœké¦KHm§KHm §›Ço §{œk §Cœk!§KHm)§›Üo)§{œk)§CœkA§KHmI§›íoI§{œkI§Cœk¡§KHm¡§{œk¡§CœkÁ§KHmÁ§{œkÁ§Cœkɧ{œkɧCœkɧKHmá§KHmá§{œká§Cœké§›Çoé§{œké§Cœk¨KHm¨{œk¨Cœk ¨›Üo ¨{œk ¨Cœk!¨KHm!¨{œk!¨Cœk)¨›ío)¨{œk)¨CœkA¨KHmA¨{œkA¨Cœk¡¨KHm¡¨{œk¡¨Cœk©¨{œk©¨Cœk©¨KHmÁ¨KHmÁ¨{œkÁ¨Cœkɨ›Çoɨ{œkɨCœká¨KHmá¨{œká¨Cœk騛Üoé¨{œké¨Cœk©KHm©{œk©Cœk ©›ío ©{œk ©Cœk!©KHm!©{œk!©Cœka©KHma©{œka©Cœk©KHm©{œk©CœkÁ©KHmÁ©{œkÁ©Cœká©KHmá©{œká©CœkªKHmª{œkªCœk ªSËq!ªKHm!ª{œk!ªCœk)ªSõqAªKHmAª{œkAªCœkIª{œkIªCœkIªKHmaªKHmaª{œkaªCœkiª›Çoiª{œkiªCœkªKHmª{œkªCœk‰ª›Üo‰ª{œk‰ªCœk¡ªKHm¡ª{œk¡ªCœk©ª{œk©ªCœk©ªKHmÁªKHmÁª{œkÁªCœkɪ{œkɪCœkɪKHmáªKHmáª{œkáªCœkéª{œkéªCœkéªKHm«KHm«{œk«Cœk «{œk «Cœk «KHm!«KHm!«{œk!«Cœk)«{œk)«Cœk)«KHmA«KHmA«{œkA«CœkI«{œkI«CœkI«KHma«KHma«{œka«Cœki«{œki«Cœki«KHm«KHm«{œk«Cœk‰«{œk‰«Cœk‰«KHm¡«KHm¡«{œk¡«Cœk©«{œk©«Cœk©«KHmÁ«KHmÁ«{œkÁ«CœkÉ«{œkÉ«CœkÉ«KHmé«{œké«Cœké«KHm¬KHm¬{œk¬Cœk ¬{œk ¬Cœk ¬KHm!¬KHm!¬{œk!¬Cœk)¬{œk)¬Cœk)¬KHmA¬KHmA¬{œkA¬CœkI¬{œkI¬CœkI¬KHma¬KHma¬{œka¬Cœki¬{œki¬Cœki¬KHm¬KHm¬{œk¬Cœk‰¬{œk‰¬Cœk‰¬KHm¡¬KHm¡¬{œk¡¬Cœk©¬›Ço©¬{œk©¬CœkÁ¬KHmÁ¬{œkÁ¬Cœkɬ›Üoɬ{œkɬCœká¬KHmá¬{œká¬Cœk鬛íoé¬{œké¬Cœk­KHm­{œk­Cœk ­›¨n ­{œk ­Cœk!­KHm!­{œk!­Cœk)­›Qp)­{œk)­CœkA­KHmA­{œkA­CœkI­›bpI­{œkI­Cœka­KHma­{œka­Cœki­›oi­{œki­Cœk­KHm­{œk­Cœk‰­›q‰­{œk‰­Cœk¡­KHm¡­{œk¡­Cœk©­›(q©­{œk©­CœkÁ­KHmÁ­{œkÁ­CœkÉ­›BÉ­{œkÉ­Cœké­›ÅXé­{œké­Cœk ®›V° ®{œk ®Cœk)®›ˆ)®{œk)®CœkI®›÷DI®{œkI®Cœki®›Ei®{œki®Cœk‰®›p› ‰®{œk‰®Cœk©®›› ©®{œk©®CœkÉ®›’› É®{œkÉ®Cœké®›Òæé®{œké®Cœk ¯›E ¯{œk ¯Cœk)¯›®E)¯{œk)¯CœkI¯›ÉEI¯{œkI¯Cœkc¯;âøi¯›y±i¯{œki¯Cœk‰¯›b牯{œk‰¯Cœk©¯›,²©¯{œk©¯Cœkɯ›=²ɯ{œkɯCœk鯛]²é¯{œké¯Cœk °›ò” °{œk °Cœk!°KHm!°{œk!°Cœk)°›óç)°{œk)°CœkA°KHmA°{œkA°CœkI°›«ãI°{œkI°Cœki°›MÍ i°{œki°Cœk‰°›^Í ‰°{œk‰°Cœk©°›oý©°{œk©°Cœkɰ› ³ɰ{œkɰCœké°›)äé°{œké°Cœk ±›:ä ±{œk ±Cœk)±›Éý)±{œk)±CœkI±›ÀäI±{œkI±Cœki±›FÎ i±{œki±Cœk‰±›« ‰±{œk‰±Cœk©±›È ©±{œk©±Cœkɱ›ò ɱ{œkɱCœké±›ž é±{œké±Cœk²“Ø ²›&þ ²{œk ²Cœk)²›I )²{œk)²Cœk@²“ׂI²›¾Î I²{œkI²Cœki²›ºž i²{œki²Cœk€²“؉²›Ëž ‰²{œk‰²Cœk©²›Üž ©²{œk©²CœkÀ²“Øɲ›˜þɲ{œkɲCœkಓÎké²›Ä é²{œké²Cœk ³›2Ï ³{œk ³Cœk)³›CÏ )³{œk)³CœkI³›"ÿI³{œkI³Cœki³›6 i³{œki³Cœk‰³›ÃÏ ‰³{œk‰³Cœk¡³KHm¡³{œk¡³Cœk©³›ÞŸ ©³{œk©³Cœkɳ›ÿɳ{œkɳCœké³›y  é³{œké³Cœk ´›Š  ´{œk ´Cœk)´››  )´{œk)´CœkI´›¬  I´{œkI´Cœki´›i´{œki´Cœk´KHm´{œk´Cœk‰´›8‰´{œk‰´Cœk¡´KHm¡´{œk¡´Cœk©´›†Ð ©´{œk©´CœkÁ´KHmÁ´{œkÁ´CœkÉ´›! É´{œkÉ´Cœké´›Çoé´{œké´Cœk µ›Üo µ{œk µCœk)µ›ío)µ{œk)µCœkIµ›¨nIµ{œkIµCœk`µ“ØaµKHmaµ{œkaµCœkiµ›Qpiµ{œkiµCœkµKHmµ{œkµCœk‰µ›bp‰µ{œk‰µCœk µ“Ø¡µKHm¡µ{œk¡µCœk©µ›o©µ{œk©µCœkÁµKHmÁµ{œkÁµCœkɵ›qɵ{œkɵCœkáµKHmáµ{œkáµCœkéµ›(qéµ{œkéµCœk¶KHm¶{œk¶Cœk ¶›B ¶{œk ¶Cœk!¶KHm!¶{œk!¶Cœk)¶›ÅX)¶{œk)¶CœkA¶KHmA¶{œkA¶CœkI¶›V°I¶{œkI¶Cœka¶KHma¶{œka¶Cœki¶›ˆi¶{œki¶Cœk¶KHm¶{œk¶Cœk‰¶›÷D‰¶{œk‰¶Cœk¡¶KHm¡¶{œk¡¶Cœk©¶›E©¶{œk©¶CœkÁ¶KHmÁ¶{œkÁ¶Cœkö;âøɶ›p› ɶ{œkɶCœkà¶“Øá¶KHmá¶{œká¶Cœkã¶;âøé¶›› é¶{œké¶Cœk·KHm·{œk·Cœk ·›’› ·{œk ·Cœk)·›Òæ)·{œk)·CœkI·›EI·{œkI·Cœkc·;âøi·›®Ei·{œki·Cœk‰·›ÉE‰·{œk‰·Cœk©·›y±©·{œk©·CœkÉ·›bçÉ·{œkÉ·Cœké·›,²é·{œké·Cœk¸{œk¸Cœk ¸›=² ¸{œk ¸Cœk ¸{œk ¸Cœk)¸›]²)¸{œk)¸CœkI¸›ò” I¸{œkI¸Cœki¸›óçi¸{œki¸Cœk‰¸›«ã‰¸{œk‰¸Cœk©¸›MÍ ©¸{œk©¸CœkÀ¸{œkÀ¸Cœkɸ›^Í É¸{œkɸCœkà¸{œkà¸Cœkã¸;âøé¸›oýé¸{œké¸Cœk ¹› ³ ¹{œk ¹Cœk)¹›)ä)¹{œk)¹CœkI¹›:äI¹{œkI¹Cœki¹›Éýi¹{œki¹Cœk‰¹›À䉹{œk‰¹Cœk©¹›FÎ ©¹{œk©¹Cœkɹ›« ɹ{œkɹCœkã¹;Çùé¹›È é¹{œké¹CœkºKHmº{œkºCœk º›ò º{œk ºCœk!ºKHm!º{œk!ºCœk)º›ž )º{œk)ºCœkIº›&þIº{œkIºCœkiº›I iº{œkiºCœk‰º›¾Î ‰º{œk‰ºCœk©º›ºž ©º{œk©ºCœkɺ›Ëž ɺ{œkɺCœk麛ܞ éº{œkéºCœk»KHm»{œk»Cœk »›˜þ »{œk »Cœk!»KHm!»{œk!»Cœk)»›Ä )»{œk)»CœkA»KHmA»{œkA»CœkI»›2Ï I»{œkI»Cœka»KHma»{œka»Cœki»›CÏ i»{œki»Cœk»KHm»{œk»Cœk‰»›"ÿ‰»{œk‰»Cœk©»›6 ©»{œk©»CœkÁ»KHmÁ»{œkÁ»CœkÉ»›ÃÏ É»{œkÉ»Cœká»KHmá»{œká»Cœkã»;Çùé»›ÞŸ é»{œké»Cœk ¼›ÿ ¼{œk ¼Cœk!¼KHm!¼{œk!¼Cœk)¼›y  )¼{œk)¼CœkA¼KHmA¼{œkA¼CœkI¼›Š  I¼{œkI¼Cœki¼››  i¼{œki¼Cœk‰¼›¬  ‰¼{œk‰¼Cœk¡¼KHm¡¼{œk¡¼Cœk©¼›©¼{œk©¼CœkÁ¼KHmÁ¼{œkÁ¼Cœkɼ›8ɼ{œkɼCœkà¼{œkà¼Cœké¼›†Ð é¼{œké¼Cœk½KHm½{œk½Cœk ½›! ½{œk ½Cœk!½KHm!½{œk!½Cœk)½{œk)½Cœk)½KHm@½“ÎkA½KHmA½{œkA½CœkI½{œkI½CœkI½KHma½KHma½{œka½Cœki½{œki½Cœki½KHm½KHm‰½{œk‰½Cœk‰½KHm ½“Îk¡½KHm©½{œk©½Cœk©½KHmÀ½“ÎkÁ½KHmɽ{œkɽCœkɽKHmནÎká½KHmé½{œké½Cœké½KHm¾“Îk¾KHm ¾{œk ¾Cœk ¾KHm ¾“Îk!¾KHm)¾{œk)¾Cœk)¾KHm@¾“ÎkA¾KHmI¾{œkI¾CœkI¾KHm`¾“Îka¾KHma¾{œka¾Cœki¾{œki¾Cœki¾KHm€¾“Îk‰¾{œk‰¾Cœk‰¾KHm ¾{œk¡¾KHm¡¾{œk¡¾Cœk©¾{œk©¾Cœk©¾KHmÀ¾“Îkɾ{œkɾCœkɾKHmྒྷÎká¾KHmá¾{œká¾Cœké¾{œké¾Cœké¾KHm¿“Ø ¿{œk ¿Cœk ¿KHm ¿{œk ¿Cœk)¿{œk)¿Cœk)¿KHm@¿{œk@¿CœkI¿{œkI¿CœkI¿KHm`¿{œk`¿Cœki¿{œki¿Cœki¿KHm€¿{œk€¿Cœkƒ¿;âø‰¿{œk‰¿Cœk‰¿KHm ¿{œk ¿Cœk©¿{œk©¿Cœk©¿KHmÀ¿{œkÀ¿CœkÉ¿{œkÉ¿CœkÉ¿KHmà¿{œkà¿Cœké¿{œké¿Cœké¿KHmÀ{œkÀCœk À{œk ÀCœk ÀKHm À{œk ÀCœk#À;âø)À{œk)ÀCœk)ÀKHm@À{œk@ÀCœkIÀ{œkIÀCœkIÀKHm`À{œk`ÀCœkiÀ{œkiÀCœkiÀKHm€À{œk€ÀCœk‰À{œk‰ÀCœk‰ÀKHm À{œk ÀCœk£À;âø©À{œk©ÀCœk©ÀKHmÀÀ{œkÀÀCœkÉÀ{œkÉÀCœkÉÀKHmàÀ{œkàÀCœkéÀ{œkéÀCœkéÀKHmÁ{œkÁCœk Á{œk ÁCœk ÁKHm)Á{œk)ÁCœk)ÁKHmIÁ{œkIÁCœkIÁKHmiÁ{œkiÁCœkiÁKHm‰Á{œk‰ÁCœk‰ÁKHm©Á{œk©ÁCœk©ÁKHmÉÁ{œkÉÁCœkÉÁKHméÁ›ÇoéÁ{œkéÁCœk ›¨n Â{œk ÂCœk)Â›Òæ)Â{œk)ÂCœkI›bçIÂ{œkIÂCœki›óçiÂ{œkiÂCœk‰Â›«ã‰Â{œk‰ÂCœk©Â›oý©Â{œk©ÂCœkÉ› ³ÉÂ{œkÉÂCœké›ÉýéÂ{œkéÂCœk ÛÀä Ã{œk ÃCœk ÓÎk)Û&þ)Ã{œk)ÃCœkIÛI IÃ{œkIÃCœkiÛ˜þiÃ{œkiÃCœk‰Ã›Ä ‰Ã{œk‰ÃCœk©Ã›"ÿ©Ã{œk©ÃCœkÉÛÿÉÃ{œkÉÃCœkéÛéÃ{œkéÃCœk Ä›! Ä{œk ÄCœk)Ä›’ )Ä{œk)ÄCœkIÄ›] IÄ{œkIÄCœkiÄ›n iÄ{œkiÄCœk‰Ä›Ò ‰Ä{œk‰ÄCœk©Ä›` ©Ä{œk©ÄCœkÉÄ›2 ÉÄ{œkÉÄCœkéÄ›{` éÄ{œkéÄCœk Å›ª Å{œk ÅCœk)Å›”© )Å{œk)ÅCœkIÅ› IÅ{œkIÅCœkiÅ›t iÅ{œkiÅCœk€Å“Îk‰Å›… ‰Å{œk‰ÅCœk Å“Îk©Å›§c ©Å{œk©ÅCœkÉśԪ ÉÅ{œkÉÅCœkéÅ›"« éÅ{œkéÅCœk Æ›|« Æ{œk ÆCœk)Æ›« )Æ{œk)ÆCœkIÆ›ô« IÆ{œkIÆCœk`Æ“ׂiÆ›¬ iÆ{œkiÆCœk‰Æ›¬ ‰Æ{œk‰ÆCœk©Æ›'¬ ©Æ{œk©ÆCœkÀÆ{œkÉÆ›8¬ ÉÆ{œkÉÆCœkàÆ{œk鯛I¬ éÆ{œkéÆCœkÇ“Îk Ç›Z¬ Ç{œk ÇCœk Ç“Ø)Ç›k¬ )Ç{œk)ÇCœk@Ç“ÎkIÇ›|¬ IÇ{œkIÇCœkiÇ›¬ iÇ{œkiÇCœk‰Ç›ž¬ ‰Ç{œk‰ÇCœk©Ç›Ço©Ç{œk©ÇCœkÉÇ›¨nÉÇ{œkÉÇCœkàÇ“ÎkéÇ›ÒæéÇ{œkéÇCœk È›bç È{œk ÈCœk È“Îk)È›óç)È{œk)ÈCœkIÈ›«ãIÈ{œkIÈCœkiÈ›oýiÈ{œkiÈCœk‰È› ³‰È{œk‰ÈCœk©È›Éý©È{œk©ÈCœkÉÈ›ÀäÉÈ{œkÉÈCœkéÈ›&þéÈ{œkéÈCœk É›I É{œk ÉCœk#É;âø)É›˜þ)É{œk)ÉCœkIÉ›Ä IÉ{œkIÉCœkiÉ›"ÿiÉ{œkiÉCœk‰É›ÿ‰É{œk‰ÉCœk©É›©É{œk©ÉCœkÉÉ›! ÉÉ{œkÉÉCœkéÉ›’ éÉ{œkéÉCœk Ê›] Ê{œk ÊCœk)Ê›n )Ê{œk)ÊCœkIÊ›Ò IÊ{œkIÊCœkiÊ›` iÊ{œkiÊCœk‰Ê›2 ‰Ê{œk‰ÊCœk©Ê›{` ©Ê{œk©ÊCœkÉÊ›ª ÉÊ{œkÉÊCœkéÊ›”© éÊ{œkéÊCœk Ë› Ë{œk ËCœk)Ë›t )Ë{œk)ËCœkIË›… IË{œkIËCœkiË›§c iË{œkiËCœk‰Ë›Ôª ‰Ë{œk‰ËCœk©Ë›"« ©Ë{œk©ËCœkÉË›|« ÉË{œkÉËCœkéË›« éË{œkéËCœk Ì›ô« Ì{œk ÌCœk)Ì›¬ )Ì{œk)ÌCœkIÌ›¬ IÌ{œkIÌCœkiÌ›'¬ iÌ{œkiÌCœk‰Ì›8¬ ‰Ì{œk‰ÌCœk©Ì›I¬ ©Ì{œk©ÌCœkÉÌ›Z¬ ÉÌ{œkÉÌCœkéÌ›k¬ éÌ{œkéÌCœkÍKHmÍ{œkÍCœk Í›|¬ Í{œk ÍCœk)Í›¬ )Í{œk)ÍCœkIÍ›ž¬ IÍ{œkIÍCœkaÍKHmaÍ{œkaÍCœkiÍ{œkiÍCœkiÍKHmÍKHmÍ{œkÍCœk‰Í{œk‰ÍCœk‰ÍKHm¡ÍKHm¡Í{œk¡ÍCœk©Í{œk©ÍCœk©ÍKHmÁÍKHmÁÍ{œkÁÍCœkÉÍ{œkÉÍCœkÉÍKHmáÍKHméÍ{œkéÍCœkéÍKHmÎKHm Î{œk ÎCœk ÎKHm!ÎKHm)Î{œk)ÎCœk)ÎKHmAÎKHmIÎ{œkIÎCœkIÎKHmiÎ{œkiÎCœkiÎKHm‰Î{œk‰ÎCœk‰ÎKHm©Î{œk©ÎCœk©ÎKHmÃÎk3œkÃÎ;âøÉÎ{œkÉÎCœkÉÎKHmáÎKHméÎ{œkéÎCœkéÎKHmÏKHm Ï{œk ÏCœk ÏKHm!ÏKHm)Ï{œk)ÏCœk)ÏKHmAÏKHmIÏ{œkIÏCœkIÏKHmaÏKHmcÏ;âøiÏ{œkiÏCœkiÏKHmÏKHm‰Ï{œk‰ÏCœk‰ÏKHm¡ÏKHm£Ï;Çù©Ï{œk©ÏCœk©ÏKHmÁÏKHmÉÏ{œkÉÏCœkÉÏKHmáÏKHmãÏ;ÇùéÏ{œkéÏCœkéÏKHmÐKHm Ð{œk ÐCœk ÐKHm)Ð{œk)ÐCœk)ÐKHmCÐËœkCЋnCÐ;:nIÐ{œkIÐCœkIÐKHmaÐKHmaÐ{œkaÐCœkiÐ{œkiÐCœkiÐKHm‰Ð{œk‰ÐCœk‰ÐKHm©Ð{œk©ÐCœk©ÐKHmÉÐ{œkÉÐCœkÉÐKHmáÐKHmáÐ{œkáÐCœkéÐ{œkéÐCœkéÐKHm Ñ{œk ÑCœk ÑKHm!ÑKHm!Ñ{œk!ÑCœk)Ñ{œk)ÑCœk)ÑKHmIÑ{œkIÑCœkIÑKHmiÑ{œkiÑCœkiÑKHm‰Ñ{œk‰ÑCœk‰ÑKHm©Ñ{œk©ÑCœk©ÑKHmÉÑ{œkÉÑCœkÉÑKHméÑ{œkéÑCœkéÑKHm Ò{œk ÒCœk ÒKHm)Ò{œk)ÒCœk)ÒKHmIÒ{œkIÒCœkIÒKHmiÒ{œkiÒCœkiÒKHmƒÒƒœkƒÒ³œkƒÒ‹nƒÒ;:n‰Ò›Ço‰Ò{œk‰ÒCœk£Òƒœk£Ò³œk£Ò‹n£Ò;:n©Ò›Ço©Ò{œk©ÒCœkÉÒ{œkÉÒCœkÉÒKHméÒ{œkéÒCœkéÒKHm Ó{œk ÓCœk ÓKHm#Ó‹n#Ó;:n)Ó›Ço)Ó{œk)ÓCœkIÓ›ÜoIÓ{œkIÓCœkcÓ“Oê cÓ‹niÓ›¨niÓ{œkiÓCœkƒÓ“Åê ƒÓ‹n‰Ó›Ço‰Ó{œk‰ÓCœk©Ó›Üo©Ó{œk©ÓCœkÉÓ›¨nÉÓ{œkÉÓCœkãÓ‹nãÓ;:néÓ{œkéÓCœkéÓKHm Ô›Ço Ô{œk ÔCœk#Ô“zë #Ô‹n)Ô›Üo)Ô{œk)ÔCœkCÔ“Ëë CÔ‹nIÔ›íoIÔ{œkIÔCœkcÔ“$ì cÔ‹niÔ›–SiÔ{œkiÔCœk‰Ô›§S‰Ô{œk‰ÔCœk©Ô›¾W©Ô{œk©ÔCœkãÔƒœkãÔ³œkãÔ‹nãÔ;:néÔ{œkéÔCœkéÔKHm Õ›Ço Õ{œk ÕCœk)Õ›Üo)Õ{œk)ÕCœkIÕ›íoIÕ{œkIÕCœkiÕ›–SiÕ{œkiÕCœkÕKHmÕ{œkÕCœk‰Õ›§S‰Õ{œk‰ÕCœk©Õ›¾W©Õ{œk©ÕCœkáÕKHmÖKHm!ÖKHm@Ö{œk@ÖCœkAÖKHm`Ö{œk`ÖCœkaÖKHmÖKHm‰Ö{œk‰ÖCœk‰ÖKHm¡ÖKHm©Ö›Ço©Ö{œk©ÖCœkÁÖKHmÃÖƒœkÃÖ³œkÃÖ‹nÃÖ;:nÉÖ›ÜoÉÖ{œkÉÖCœkáÖKHméÖ›íoéÖ{œkéÖCœk×KHmדð ׋n ×›–S ×{œk ×Cœk!×KHm#ד}ð #׋n)×›§S)×{œk)×CœkA×KHmI×›¾WI×{œkI×Cœka×KHm×KHm‰×{œk‰×Cœk‰×KHm¡×KHm©×›Ço©×{œk©×CœkÁ×KHmÉ×›ÜoÉ×{œkÉ×Cœká×KHmá×{œká×Cœkã׃œkã׳œkã׋nã×;:né×›íoé×{œké×Cœk#Ø“ú #Ø‹n)Ø{œk)ØCœk)ØKHmCØ“æú CØ‹nIØ{œkIØCœkIØKHmaØKHmaØ{œkaØCœkcØ“*û cØ‹niØ{œkiØCœkiØKHmØKHmØ{œkØCœkƒØ“°û ƒØ‹n‰Ø{œk‰ØCœk‰ØKHm¡ØKHm¡Ø{œk¡ØCœk©Ø{œk©ØCœk©ØKHmÁØKHmÁØ{œkÁØCœkÉØ{œkÉØCœkÉØKHmáØKHmáØ{œkáØCœk騛ÇoéØ{œkéØCœkÙKHmÙ{œkÙCœk Ù›¨n Ù{œk ÙCœk!ÙKHm!Ù{œk!ÙCœk)Ù›o)Ù{œk)ÙCœkAÙKHmAÙ{œkAÙCœkIÙ›qIÙ{œkIÙCœkiÙ›V°iÙ{œkiÙCœk‰Ù›ˆ‰Ù{œk‰ÙCœk¡ÙKHm¡Ù{œk¡ÙCœk©Ù›Òæ©Ù{œk©ÙCœkÉÙ›EÉÙ{œkÉÙCœkéÙ›®EéÙ{œkéÙCœk Ú›ÉE Ú{œk ÚCœk)Ú›Ço)Ú{œk)ÚCœkIÚ›¨nIÚ{œkIÚCœkiÚ›oiÚ{œkiÚCœk‰Ú›q‰Ú{œk‰ÚCœk©Ú›V°©Ú{œk©ÚCœkÉÚ›ˆÉÚ{œkÉÚCœkéÚ›ÒæéÚ{œkéÚCœkÛƒœkÛ³œkÛ‹nÛ;:n Û›E Û{œk ÛCœk)Û›®E)Û{œk)ÛCœkAÛKHmAÛ{œkAÛCœkCÛ“0þ CÛ‹nIÛ›ÉEIÛ{œkIÛCœkaÛKHmaÛ{œkaÛCœkcÛ“³þ cÛ‹niÛ{œkiÛCœkiÛKHmÛKHmÛ{œkÛCœk‰Û›Ço‰Û{œk‰ÛCœk¡ÛKHm¡Û{œk¡ÛCœk©Û›Üo©Û{œk©ÛCœkÁÛKHmÁÛ{œkÁÛCœkÉÛ{œkÉÛCœkÉÛKHméÛ›ÇoéÛ{œkéÛCœk Ü›Üo Ü{œk ÜCœk!ÜKHm!Ü{œk!ÜCœk)Ü›ío)Ü{œk)ÜCœkAÜKHmAÜ{œkAÜCœkIÜ›–SIÜ{œkIÜCœkaÜKHmaÜ{œkaÜCœkiÜ›§SiÜ{œkiÜCœkÜKHmÜ{œkÜCœk‰Ü{œk‰ÜCœk‰ÜKHm©Ü›Ço©Ü{œk©ÜCœkÉÜSËqáÜKHmáÜ{œkáÜCœkéÜSõq݃œkݳœkÝ‹nÝ;:n ÝSr!ÝKHm!Ý{œk!ÝCœk#݃œk#ݳœk#Ý‹n#Ý;:n)ÝSËqAÝKHmAÝ{œkAÝCœkC݃œkCݳœkCÝ‹nCÝ;:nIÝSõqaÝKHmaÝ{œkaÝCœkiÝSrÝKHmÝ{œkÝCœk‰ÝS'r£Ýƒœk£Ý³œk£Ý‹n£Ý;:n©ÝS:rÉÝSMrãÝ“  ãÝ‹néÝSZrÞKHmÞ{œkÞCœkÞ“n Þ‹n Þ{œk ÞCœk ÞKHm!ÞKHm!Þ{œk!ÞCœk#Þ“é #Þ‹n)Þ{œk)ÞCœk)ÞKHmAÞKHmAÞ{œkAÞCœkIÞ{œkIÞCœkIÞKHmaÞKHmaÞ{œkaÞCœkiÞ›ÇoiÞ{œkiÞCœkÞKHmÞ{œkÞCœk‰Þ›Üo‰Þ{œk‰ÞCœk¡ÞKHm¡Þ{œk¡ÞCœk©Þ›ío©Þ{œk©ÞCœkÁÞKHmÁÞ{œkÁÞCœkÉÞ›¨nÉÞ{œkÉÞCœkáÞKHmáÞ{œkáÞCœkéÞ›ÇoéÞ{œkéÞCœkßKHmß{œkßCœk ß›Üo ß{œk ßCœk!ßKHm!ß{œk!ßCœk)ß›ío)ß{œk)ßCœkAßKHmAß{œkAßCœkIß›¨nIß{œkIßCœkaßKHmaß{œkaßCœkißSËq‰ßSõq©ßSrÉßSËqéßSõq àSr)àSËqAàKHmAà{œkAàCœkIàSõqaàKHmaà{œkaàCœkiàSràKHmà{œkàCœk‰àS'r¡àKHm¡à{œk¡àCœk£à;Çù©àS:rÁàKHmÁà{œkÁàCœkÉàSMráàKHmáà{œkáàCœkéàSZráKHmá{œkáCœk áSËq!áKHm!á{œk!áCœk)áSõqAáKHmAá{œkAáCœkIá;µÜaáKHmaá{œkaáCœkiá;µÜáKHmá{œkáCœk‰á;µÜ¡áKHm¡á{œk¡áCœk£áƒœk£á³œk£á‹n£á;:n©á;µÜÁáKHmÁá{œkÁáCœkÃá;hvÉá;µÜááKHmáá{œkááCœkéá;µÜâKHmâ{œkâCœk⃜kⳜkâ‹nâ;:n!âKHm!â{œk!âCœk)â;µÜAâKHmAâ{œkAâCœkCⓤ Câ‹nIâ;µÜaâKHmaâ{œkaâCœkcâ“ câ‹niâSËqâKHmâ{œkâCœkƒâ“… ƒâ‹n‰âSËq¡âKHm¡â{œk¡âCœk©âSõqÁâKHmÁâ{œkÁâCœkÉâ{œkÉâCœkÉâKHmáâKHmáâ{œkáâCœkéâ{œkéâCœkéâKHmãKHmã{œkãCœk ã{œk ãCœk ãKHm!ãKHm!ã{œk!ãCœk)ã{œk)ãCœk)ãKHmAãKHmAã{œkAãCœkIã{œkIãCœkIãKHmaãKHmaã{œkaãCœkiã›Çoiã{œkiãCœkãKHmã{œkãCœk‰ã›o‰ã{œk‰ãCœk¡ãKHm¡ã{œk¡ãCœk©ã›Ço©ã{œk©ãCœkÁãKHmÁã{œkÁãCœkÉã›oÉã{œkÉãCœkáãKHmáã{œkáãCœkéã{œkéãCœkéãKHmäKHmä{œkäCœk ä{œk äCœk äKHm!äKHm!ä{œk!äCœk)ä{œk)äCœk)äKHmAäKHmAä{œkAäCœkIä›ÇoIä{œkIäCœkaäKHmaä{œkaäCœki䛨niä{œkiäCœkäKHmä{œkäCœk‰ä›Qp‰ä{œk‰äCœk¡äKHm¡ä{œk¡äCœk©ä›Ço©ä{œk©äCœkÁäKHmÁä{œkÁäCœkÉ䛨nÉä{œkÉäCœkáäKHmáä{œkáäCœkéä›Qpéä{œkéäCœkåKHmå{œkåCœk åSËq!åKHm!å{œk!åCœk)åSõqAåKHmAå{œkAåCœkIåSËqaåKHmaå{œkaåCœkiåSõqåKHmå{œkåCœk‰åSr¡åKHm¡å{œk¡åCœk©åS'rÁåKHmÁå{œkÁåCœkÉåS:ráåKHmáå{œkáåCœkéåSËqæKHmæ{œkæCœk æSõq!æKHm!æ{œk!æCœk#æ;Çù)æSrAæKHmAæ{œkAæCœkIæ{œkIæCœkIæKHmiæ{œkiæCœkiæKHmƒæ;Çù‰æ{œk‰æCœk‰æKHm©æ{œk©æCœk©æKHmÁæKHmÁæ{œkÁæCœkÉæ{œkÉæCœkÉæKHmáæKHmáæ{œkáæCœkéæ{œkéæCœkéæKHmçKHmç{œkçCœk ç{œk çCœk çKHm!çKHm!ç{œk!çCœk)ç{œk)çCœk)çKHmIç{œkIçCœkIçKHmiç{œkiçCœkiçKHm‰ç{œk‰çCœk‰çKHm£ç;Çù©ç{œk©çCœk©çKHmÉç{œkÉçCœkÉçKHméç{œkéçCœkéçKHmè;Çù è{œk èCœk èKHm)è{œk)èCœk)èKHmIè{œkIèCœkIèKHmiè{œkièCœkièKHm‰è{œk‰èCœk‰èKHm£è;Çù©è{œk©èCœk©èKHmÉè{œkÉèCœkÉèKHméè{œkéèCœkéèKHm é{œk éCœk éKHm)é{œk)éCœk)éKHmAéKHmAé{œkAéCœkIé{œkIéCœkIéKHmié{œkiéCœkiéKHm‰é{œk‰éCœk‰éKHm©é{œk©éCœk©éKHmÃé;ÇùÉé{œkÉéCœkÉéKHméé{œkééCœkééKHm ê{œk êCœk êKHm)ê{œk)êCœk)êKHmCê‹nCê;:nIê{œkIêCœkIêKHmiê{œkiêCœkiêKHm‰ê{œk‰êCœk‰êKHm©ê{œk©êCœk©êKHmÃ곜kÃꃜkÃê‹nÃê;:nÉê{œkÉêCœkÉêKHméê{œkéêCœkéêKHmë“T ë‹n ë{œk ëCœk ëKHm!ëKHm!ë{œk!ëCœk)ë{œk)ëCœk)ëKHmAëKHmAë{œkAëCœkCë;hvIë{œkIëCœkIëKHmcë;hvië{œkiëCœkiëKHm‰ë{œk‰ëCœk‰ëKHm©ë{œk©ëCœk©ëKHmÉë{œkÉëCœkÉëKHméë{œkéëCœkéëKHm ì{œk ìCœk ìKHm)ì{œk)ìCœk)ìKHmIì{œkIìCœkIìKHmiì{œkiìCœkiìKHm‰ì{œk‰ìCœk‰ìKHm©ì{œk©ìCœk©ìKHmÉì{œkÉìCœkÉìKHmãì;Çùéì{œkéìCœkéìKHm í{œk íCœk íKHm)í{œk)íCœk)íKHm@í{œk@íCœkCí;4mIí{œkIíCœkIíKHm`í{œk`íCœkií{œkiíCœkiíKHmƒí;Çù‰í{œk‰íCœk‰íKHm£í;Çù©í{œk©íCœk©íKHmÉí{œkÉíCœkÉíKHméí{œkéíCœkéíKHmî{œkîCœk î{œk îCœk îKHm î{œk îCœk)î{œk)îCœk)îKHmIî{œkIîCœkIîKHmiî{œkiîCœkiîKHmƒî‹nƒî;:n‰î{œk‰îCœk‰îKHm¡îKHm¡î{œk¡îCœk©î{œk©îCœk©îKHmÁîKHmÁî{œkÁîCœkÃî“ê Ãî‹nÉî{œkÉîCœkÉîKHmáîKHmáî{œkáîCœkãî“h ãî‹néî{œkéîCœkéîKHmïKHmï{œkïCœkï“· ï‹n ï›o ï{œk ïCœk#ï“, #ï‹n)ï›q)ï{œk)ïCœkCï“ Cï‹nIï›(qIï{œkIïCœkaïKHmaï{œkaïCœkiï›óçiï{œkiïCœkïKHmï{œkïCœk‰ï›oý‰ï{œk‰ïCœk¡ïKHm¡ï{œk¡ïCœk©ï› ³©ï{œk©ïCœkÁïKHmÁï{œkÁïCœkÉï›ÉýÉï{œkÉïCœkáïKHmáï{œkáïCœkéï›Àäéï{œkéïCœkðKHmð{œkðCœkð;4m ð›&þ ð{œk ðCœk!ðKHm!ð{œk!ðCœk#ð;Çù)ð›I )ð{œk)ðCœkAðKHmAð{œkAðCœkCð;ÇùIð›˜þIð{œkIðCœkaðKHmað{œkaðCœkið›Ä ið{œkiðCœkðKHmð{œkðCœk‰ð›2Ï ‰ð{œk‰ðCœk¡ðKHm¡ð{œk¡ðCœk©ð›"ÿ©ð{œk©ðCœkÁðKHmÁð{œkÁðCœkÉð›6 Éð{œkÉðCœkáðKHmáð{œkáðCœkéð›éð{œkéðCœkñKHmñ{œkñCœk ñ›’ ñ{œk ñCœk!ñKHm!ñ{œk!ñCœk)ñ›] )ñ{œk)ñCœkAñKHmAñ{œkAñCœkCñ;ÇùIñ›Ò Iñ{œkIñCœkañKHmañ{œkañCœkiñ›2 iñ{œkiñCœkñKHmñ{œkñCœkƒñ;Çù‰ñ›ª ‰ñ{œk‰ñCœk¡ñKHm¡ñ{œk¡ñCœk©ñ› ©ñ{œk©ñCœkÁñKHmÁñ{œkÁñCœkÉñ›t Éñ{œkÉñCœkáñKHmáñ{œkáñCœkéñ›é éñ{œkéñCœkòKHmò{œkòCœkò;Çù ò›b ò{œk òCœk)ò›yb )ò{œk)òCœkIò›øb Iò{œkIòCœkiò›§c iò{œkiòCœkƒò;Çù‰ò›Ôª ‰ò{œk‰òCœk ò“Ø£ò;Çù©ò›"« ©ò{œk©òCœkÃò;ÇùÉò›|« Éò{œkÉòCœkéò›« éò{œkéòCœk ó›ô« ó{œk óCœk)ó›}å )ó{œk)óCœkAóKHmAó{œkAóCœkIó›òå Ió{œkIóCœkaóKHmaó{œkaóCœkió›Sæ ió{œkióCœkóKHmó{œkóCœk‰ó›dæ ‰ó{œk‰óCœk ó{œk¡óKHm¡ó{œk¡óCœk©ó›o©ó{œk©óCœkÁóKHmÁó{œkÁóCœkÉó›qÉó{œkÉóCœkáóKHmáó{œkáóCœkãó;Çùéó›(qéó{œkéóCœkôKHmô{œkôCœk ô›óç ô{œk ôCœk#ô;Çù)ô›oý)ô{œk)ôCœkIô› ³Iô{œkIôCœkaôKHmaô{œkaôCœkiô›Éýiô{œkiôCœkôKHmô{œkôCœk‰ô›Àä‰ô{œk‰ôCœk¡ôKHm¡ô{œk¡ôCœk£ô;Çù©ô›&þ©ô{œk©ôCœkÁôKHmÁô{œkÁôCœkÉô›I Éô{œkÉôCœkàô{œkáôKHmáô{œkáôCœkéô›˜þéô{œkéôCœkõ‹nõ;:n õ›Ä õ{œk õCœk õ{œk!õKHm!õ{œk!õCœk)õ›2Ï )õ{œk)õCœk@õ{œkAõKHmAõ{œkAõCœkCõ;4mIõ›"ÿIõ{œkIõCœkaõKHmaõ{œkaõCœkiõ›6 iõ{œkiõCœk€õ“Îk‰õ›‰õ{œk‰õCœk õ“Ø©õ›’ ©õ{œk©õCœkÀõ“ÎkÉõ›] Éõ{œkÉõCœkàõ{œkéõ›Ò éõ{œkéõCœköKHmö{œköCœk ö›2 ö{œk öCœk)ö›ª )ö{œk)öCœkIö› Iö{œkIöCœkiö›t iö{œkiöCœk€ö“X‡öKHmö{œköCœk‰ö›é ‰ö{œk‰öCœk ö“ׂ©ö›b ©ö{œk©öCœkÉö›yb Éö{œkÉöCœkéö›øb éö{œkéöCœk÷KHm÷{œk÷Cœk ÷›§c ÷{œk ÷Cœk!÷KHm!÷{œk!÷Cœk)÷›Ôª )÷{œk)÷CœkI÷›"« I÷{œkI÷Cœka÷KHma÷{œka÷Cœki÷›|« i÷{œki÷Cœk÷KHm÷{œk÷Cœk‰÷›« ‰÷{œk‰÷Cœk¡÷KHm¡÷{œk¡÷Cœk©÷›ô« ©÷{œk©÷CœkÁ÷KHmÁ÷{œkÁ÷CœkÉ÷›}å É÷{œkÉ÷Cœkà÷“Îká÷KHmá÷{œká÷Cœké÷›òå é÷{œké÷Cœkø{œkøKHmø{œkøCœk ø›Sæ ø{œk øCœk ø{œk!øKHm!ø{œk!øCœk)ø›dæ )ø{œk)øCœk@ø{œkAøKHmAø{œkAøCœkIø{œkIøCœkIøKHmiø{œkiøCœkiøKHm€ø{œk‰ø{œk‰øCœk‰øKHm ø{œk©ø{œk©øCœk©øKHmÉø{œkÉøCœkÉøKHméø{œkéøCœkéøKHmùKHm ù{œk ùCœk ùKHm!ùKHm)ù{œk)ùCœk)ùKHmAùKHmAù{œkAùCœkCù³œkCùƒœkCù‹nCù;:nIù›ÇoIù{œkIùCœkaùKHmaù{œkaùCœkiù›Üoiù{œkiùCœkùKHmù{œkùCœkƒù;âø‰ù›¨n‰ù{œk‰ùCœk¡ùKHm¡ù{œk¡ùCœk©ù›Qp©ù{œk©ùCœkÁùKHmÁù{œkÁùCœkÉù›bpÉù{œkÉùCœkàù{œkáùKHmáù{œkáùCœkéù›oéù{œkéùCœkúKHmú{œkúCœk ú›V° ú{œk úCœk ú{œk!úKHm!ú{œk!úCœk)ú›Òæ)ú{œk)úCœkAúKHmAú{œkAúCœkIú›EIú{œkIúCœkaúKHmaú{œkaúCœkiú›bçiú{œkiúCœk€ú“ׂúKHmú{œkúCœk‰ú›,²‰ú{œk‰úCœk ú“Q‹¡úKHm¡ú{œk¡úCœk©ú›óç©ú{œk©úCœkÁúKHmÁú{œkÁúCœkÉú›ÇoÉú{œkÉúCœkáúKHmáú{œkáúCœkéú›Üoéú{œkéúCœkûKHmû{œkûCœk û›¨n û{œk ûCœk!ûKHm!û{œk!ûCœk)û›Qp)û{œk)ûCœkAûKHmAû{œkAûCœkIû›bpIû{œkIûCœk`û“ØaûKHmaû{œkaûCœkiû›oiû{œkiûCœk€û“ÎkûKHmû{œkûCœk‰û›V°‰û{œk‰ûCœk¡ûKHm¡û{œk¡ûCœk©û›Òæ©û{œk©ûCœkÀû“ÎkÁûKHmÁû{œkÁûCœkÉû›EÉû{œkÉûCœkàû“ÎkáûKHmáû{œkáûCœkéû›bçéû{œkéûCœkü“ÎküKHmü{œküCœk ü›,² ü{œk üCœk ü“Îk!üKHm!ü{œk!üCœk)ü›óç)ü{œk)üCœk@ü“ÎkAüKHmAü{œkAüCœkIüSËq`ü“ÎkaüKHmaü{œkaüCœkiüSõq€ü“ׂüKHmü{œküCœk‰üSr ü{œk¡üKHm¡ü{œk¡üCœk©ü{œk©üCœk©üKHmÁüKHmÁü{œkÁüCœkÉü{œkÉüCœkÉüKHmàü{œkáüKHmáü{œkáüCœkéü{œkéüCœkéüKHm ý{œk ýCœk ýKHm!ýKHm!ý{œk!ýCœk)ý›Ço)ý{œk)ýCœkAýKHmAý{œkAýCœkIý›¨nIý{œkIýCœkaýKHmaý{œkaýCœkiý›oiý{œkiýCœkýKHmý{œkýCœk‰ý›Ço‰ý{œk‰ýCœk¡ýKHm¡ý{œk¡ýCœk©ý›¨n©ý{œk©ýCœkÁýKHmÁý{œkÁýCœkÉý›oÉý{œkÉýCœkáýKHmáý{œkáýCœkéýSËqþKHmþ{œkþCœk þSõq!þKHm!þ{œk!þCœk)þSrAþKHmAþ{œkAþCœk€þ“ÎkþKHmþ{œkþCœk‰þSËq þ“!סþKHm¡þ{œk¡þCœk©þSõqÁþKHmÁþ{œkÁþCœkÉþ;µÜáþKHmáþ{œkáþCœkéþ;µÜÿKHmÿ{œkÿCœk ÿ;µÜ!ÿKHm!ÿ{œk!ÿCœkAÿKHmAÿ{œkAÿCœkaÿKHmaÿ{œkaÿCœkcÿ;âøÿKHmÿ{œkÿCœk ÿ“ׂ¡ÿKHm¡ÿ{œk¡ÿCœk©ÿSËqÁÿKHmÁÿ{œkÁÿCœkÉÿSõqáÿKHmáÿ{œkáÿCœkéÿSr S'r “™!KHm!{œk!Cœk)S:rAKHmA{œkACœkISËqaKHma{œkaCœkiSõq€“ÎkKHm{œkCœkƒ;âø‰SËq¡KHm¡{œk¡Cœk£;4m©SõqÀ“ÎkÁKHmÁ{œkÁCœkÃÓœkÃ;4mÉ;µÜáKHmá{œkáCœkã;Çùé;µÜ“¤lKHm{œkCœk ;µÜ!KHm!{œk!Cœk);µÜ@“¤lAKHmA{œkACœkI;µÜi;µÜKHm{œkCœk‰;µÜ¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà“X‡áKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk‰;µÜ¡KHm¡{œk¡Cœk©;µÜÀ“ÎkÁKHmÁ{œkÁCœkÉ;µÜáKHmá{œkáCœké;µÜKHm{œkCœk!KHm!{œk!Cœk);µÜAKHmA{œkACœkI;µÜaKHma{œkaCœki;µÜKHm{œkCœk‰;µÜ “Îk¡KHm¡{œk¡Cœk©;µÜÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmáKHmá{œkáCœké›Çoé{œkéCœkKHm{œkCœk ›Üo {œk Cœk!KHm!{œk!Cœk)›ío){œk)CœkAKHmA{œkACœkI›–SI{œkICœkaKHma{œkaCœki›§Si{œkiCœkKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm “Ø!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHm‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHm@{œkAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÃ;ÇùÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm {œk){œk)Cœk)KHm@{œkC;ÇùI{œkICœkIKHm`{œki{œkiCœkiKHm€{œk‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmI{œkICœkIKHm`{œki{œkiCœkiKHm€{œkƒ;Çù‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHm {œk Cœk KHm) {œk) Cœk) KHmC ;ÇùI {œkI CœkI KHma KHma {œka Cœkc ;Çùi {œki Cœki KHm KHm {œk Cœk‰ {œk‰ Cœk‰ KHm¡ KHm¡ {œk¡ Cœk© {œk© Cœk© KHmÁ KHmÁ {œkÁ CœkÉ {œkÉ CœkÉ KHmà {œká KHmá {œká Cœké {œké Cœké KHm {œk KHm {œk Cœk {œk Cœk KHm {œk! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œkA KHmA {œkA CœkI {œkI CœkI KHm` {œka KHma {œka Cœki {œki Cœki KHm KHm {œk Cœk‰ {œk‰ Cœk‰ KHm¡ KHm¡ {œk¡ Cœk£ ;Çù© {œk© Cœk© KHmÁ KHmÁ {œkÁ Cœkà ;ÇùÉ {œkÉ CœkÉ KHmá KHmá {œká Cœkã ;Çùé {œké Cœké KHm KHm {œk Cœk {œk Cœk KHm! KHm! {œk! Cœk) {œk) Cœk) KHm@ {œkA KHmA {œkA CœkI {œkI CœkI KHm` {œka KHma {œka Cœki {œki Cœki KHm€ {œk‰ {œk‰ Cœk‰ KHm  {œk£ ;âø© {œk© Cœk© KHmÀ {œkÁ KHmÁ {œkÁ CœkÉ {œkÉ CœkÉ KHmá KHmá {œká Cœké {œké Cœké KHm KHm {œk Cœk {œk Cœk KHm! KHm! {œk! Cœk) {œk) Cœk) KHmI {œkI CœkI KHmi {œki Cœki KHmƒ ‹nƒ ;:n‰ {œk‰ Cœk‰ KHm  {œk¡ KHm¡ {œk¡ Cœk© {œk© Cœk© KHmÀ {œkÁ KHmÁ {œkÁ Cœkà “üZ à ‹nÉ {œkÉ CœkÉ KHmà {œká KHmá {œká Cœkã “H[ ã ‹né {œké Cœké KHm {œk “[  ‹n {œk Cœk KHm {œk# “×[ # ‹n) {œk) Cœk) KHmA KHmA {œkA CœkC “\ C ‹nI {œkI CœkI KHma KHma {œka Cœkc “l\ c ‹ni {œki Cœki KHm KHm {œk Cœkƒ “º\ ƒ ‹n‰ {œk‰ Cœk‰ KHm£ “ ] £ ‹n© {œk© Cœk© KHmà “V] à ‹nÉ {œkÉ CœkÉ KHmá KHmá {œká Cœkã “ž] ã ‹né {œké Cœké KHmKHm{œkCœk“è] ‹n {œk Cœk KHm {œk!KHm!{œk!Cœk#“8^ #‹n){œk)Cœk)KHm@{œkAKHmA{œkACœkC“„^ C‹nI{œkICœkIKHm`{œkaKHma{œkaCœkc“Í^ c‹ni{œkiCœkiKHm€{œkKHm{œkCœkƒ“_ ƒ‹n‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk£“]_ £‹n©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÓ¯_ ËnÉ{œkÉCœkÉKHmáKHmá{œkáCœkã“)` ã‹né{œkéCœkéKHmKHm{œkCœk“Œ` ‹n {œk Cœk KHm!KHm!{œk!Cœk#“Û` #‹n){œk)Cœk)KHmAKHmA{œkACœkC“*a C‹nI{œkICœkIKHmaKHma{œkaCœkc“ya c‹ni{œkiCœkiKHmKHm{œkCœkƒ“Èa ƒ‹n‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk£“+b £‹n©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÓ¦b ËnÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœkã“Zc ã‹né{œkéCœkéKHm{œkKHm{œkCœk“Éc ‹n {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmáKHmá{œkáCœké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHm@{œkAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœkƒ‹nƒ;:n‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkËnÃ;:nÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHm@{œkAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœkƒË\œkƒ;4m‰{œk‰Cœk‰KHm¡KHm£3 œk£;4m©{œk©Cœk©KHmÁKHmÉ{œkÉCœkÉKHmáKHmé{œkéCœkéKHmKHm {œk Cœk KHm!KHm#;Çù){œk)Cœk)KHm@{œkAKHmC;4mI{œkICœkIKHm`{œkaKHmi{œkiCœkiKHm€{œkKHm‰{œk‰Cœk‰KHm {œk¡KHm©{œk©Cœk©KHmÀ{œkÁKHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœk‰{œk‰Cœk‰KHm {œk£;4m©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœkã;âøé{œkéCœkéKHm{œkKHm{œkCœk³œkƒœk;‡s {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmc³œkcƒœkc;‡si{œkiCœkiKHmKHm{œkCœkƒ;Çù‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk£³œk£ƒœk£;‡s©{œk©Cœk©KHmÁKHmÁ{œkÁCœkóœkÜkÃ;‡sÉ{œkÉCœkÉKHmáKHmá{œkáCœk㳜kボkã;‡sé{œkéCœkéKHmKHm{œkCœk³œkƒœk;‡s {œk Cœk KHm {œk!KHm!{œk!Cœk#³œk#ƒœk#;‡s){œk)Cœk)KHm@{œkAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHm`{œkaKHma{œkaCœki{œkiCœkiKHm€{œkKHm{œkCœk‰{œk‰Cœk‰KHm {œk¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ{œkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkáKHmá{œkáCœké{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÀ{œkÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHm{œkKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHm@{œkI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmàSkmáKHmá{œkáCœké{œkéCœkéKHm{œkCœkKHm{œkCœk {œk Cœk KHm S~m!KHm!{œk!Cœk){œk)Cœk)KHm@{œk@CœkAKHmA{œkACœkI{œkICœkIKHm`S‹maKHma{œkaCœki{œkiCœkiKHm€{œk€CœkKHm{œkCœk‰{œk‰Cœk‰KHm S⢡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà{œkàCœké{œkéCœkéKHm{œkCœk {œk Cœk KHm {œk){œk)Cœk)KHm@{œkI{œkICœkIKHm`{œki{œkiCœkiKHm€{œk‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ{œkÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHm {œk {œk Cœk KHm) {œk) Cœk) KHmI {œkI CœkI KHmi {œki Cœki KHm‰ {œk‰ Cœk‰ KHm© {œk© Cœk© KHmÉ {œkÉ CœkÉ KHmé {œké Cœké KHm!KHm!{œk!Cœk !{œk !Cœk !KHm)!{œk)!Cœk)!KHmI!{œkI!CœkI!KHmi!{œki!Cœki!KHm‰!{œk‰!Cœk‰!KHm©!{œk©!Cœk©!KHmÉ!{œkÉ!CœkÉ!KHmé!{œké!Cœké!KHm "{œk "Cœk "KHm)"{œk)"Cœk)"KHmI"{œkI"CœkI"KHmi"{œki"Cœki"KHm‰"{œk‰"Cœk‰"KHm©"{œk©"Cœk©"KHmÉ"{œkÉ"CœkÉ"KHmé"{œké"Cœké"KHm #{œk #Cœk #KHm)#{œk)#Cœk)#KHmI#{œkI#CœkI#KHmi#{œki#Cœki#KHm‰#{œk‰#Cœk‰#KHm©#{œk©#Cœk©#KHmÉ#{œkÉ#CœkÉ#KHmé#{œké#Cœké#KHm ${œk $Cœk $KHm)${œk)$Cœk)$KHmI${œkI$CœkI$KHmi${œki$Cœki$KHm‰${œk‰$Cœk‰$KHm©${œk©$Cœk©$KHmÉ${œkÉ$CœkÉ$KHmé${œké$Cœké$KHm %{œk %Cœk %KHm)%{œk)%Cœk)%KHmI%{œkI%CœkI%KHmi%{œki%Cœki%KHm‰%{œk‰%Cœk‰%KHm©%{œk©%Cœk©%KHmÉ%{œkÉ%CœkÉ%KHmé%{œké%Cœké%KHm &{œk &Cœk &KHm!&KHm!&{œk!&Cœk)&{œk)&Cœk)&KHmA&KHmA&{œkA&CœkI&{œkI&CœkI&KHma&KHma&{œka&Cœki&{œki&Cœki&KHm‰&{œk‰&Cœk‰&KHm©&{œk©&Cœk©&KHmÉ&{œkÉ&CœkÉ&KHmé&{œké&Cœké&KHm '{œk 'Cœk 'KHm)'{œk)'Cœk)'KHmI'{œkI'CœkI'KHmi'{œki'Cœki'KHm‰'{œk‰'Cœk‰'KHm©'{œk©'Cœk©'KHmÃ';ÇùÉ'{œkÉ'CœkÉ'KHmà'{œkà'Cœké'{œké'Cœké'KHm({œk(Cœk ({œk (Cœk (KHm)({œk)(Cœk)(KHmI({œkI(CœkI(KHmi({œki(Cœki(KHm‰({œk‰(Cœk‰(KHm ({œk (Cœk©({œk©(Cœk©(KHmÀ({œkÀ(CœkÉ({œkÉ(CœkÉ(KHmé({œké(Cœké(KHm ){œk )Cœk )KHm)){œk))Cœk))KHm@){œk@)CœkI){œkI)CœkI)KHm`)Skmi){œki)Cœki)KHm€){œk€)Cœk‰){œk‰)Cœk‰)KHm )S~m©){œk©)Cœk©)KHmÀ){œkÀ)CœkÉ){œkÉ)CœkÉ)KHmà)S‹mé){œké)Cœké)KHm*{œk*Cœk*KHm*{œk*Cœk *{œk *Cœk *KHm *Sâ¢)*{œk)*Cœk)*KHm@*{œk@*CœkI*{œkI*CœkI*KHm`*{œk`*Cœki*{œki*Cœki*KHm€*{œk€*Cœk‰*{œk‰*Cœk‰*KHm *{œk©*{œk©*Cœk©*KHmÀ*{œkÉ*{œkÉ*CœkÉ*KHmà*{œké*{œké*Cœké*KHm+{œk+KHm+{œk+Cœk +{œk +Cœk +KHm +{œk!+KHm!+{œk!+Cœk)+{œk)+Cœk)+KHm@+{œkA+KHmA+{œkA+CœkI+{œkI+CœkI+KHma+KHma+{œka+Cœki+{œki+Cœki+KHm€+{œk‰+{œk‰+Cœk‰+KHm +{œk©+{œk©+Cœk©+KHmÉ+{œkÉ+CœkÉ+KHmà+{œkà+Cœké+{œké+Cœké+KHm,Skm ,{œk ,Cœk ,KHm ,{œk ,Cœk),{œk),Cœk),KHm@,S~mI,{œkI,CœkI,KHm`,{œk`,Cœki,{œki,Cœki,KHm€,{œk€,Cœk‰,{œk‰,Cœk‰,KHm ,{œk ,Cœk©,{œk©,Cœk©,KHmÀ,{œkÉ,{œkÉ,CœkÉ,KHmà,{œké,{œké,Cœké,KHm-{œk -{œk -Cœk -KHm -{œk)-{œk)-Cœk)-KHm@-{œkI-{œkI-CœkI-KHm`-{œka-KHma-{œka-Cœki-{œki-Cœki-KHm€-{œk‰-{œk‰-Cœk‰-KHm -{œk©-{œk©-Cœk©-KHmÉ-›ÇoÉ-{œkÉ-Cœkà-{œkà-Cœké-›¨né-{œké-Cœk.Skm .›o .{œk .Cœk .{œk .Cœk).›V°).{œk).Cœk@.S~mI.›ÒæI.{œkI.Cœk`.{œk`.Cœki.›bçi.{œki.Cœk€.S‹m‰.›óç‰.{œk‰.Cœk .{œk .Cœk©.›oý©.{œk©.CœkÀ.{œkÀ.CœkÉ.›ÉýÉ.{œkÉ.Cœkà.{œkà.Cœké.›&þé.{œké.Cœk/{œk/KHm/{œk/Cœk /›˜þ /{œk /Cœk /{œk!/KHm!/{œk!/Cœk)/›"ÿ)/{œk)/Cœk@/{œkA/KHmA/{œkA/CœkI/›ÿI/{œkI/Cœk`/{œka/KHma/{œka/Cœki/›ô« i/{œki/Cœk€/{œk/KHm/{œk/Cœk‰/›}å ‰/{œk‰/Cœk /{œk¡/KHm¡/{œk¡/Cœk©/›V©/{œk©/CœkÉ/›¼É/{œkÉ/Cœké/› é/{œké/Cœk0{œk 0›f  0{œk 0Cœk 0{œk)0›½ )0{œk)0Cœk@0{œk@0CœkI0›!I0{œkI0Cœk`0{œk`0Cœki0›a!i0{œki0Cœk€0{œk€0Cœk‰0›µ!‰0{œk‰0Cœk 0{œk 0Cœk©0›"©0{œk©0CœkÀ0{œkÀ0CœkÉ0›W"É0{œkÉ0Cœkà0{œkà0Cœké0›·"é0{œké0Cœk1{œk1Cœk 1›# 1{œk 1Cœk 1{œk 1Cœk)1›h#)1{œk)1Cœk@1{œk@1CœkI1›¹#I1{œkI1Cœk`1{œk`1Cœki1› $i1{œki1Cœk€1Skm‰1›_$‰1{œk‰1Cœk 1{œk 1Cœk©1›µ$©1{œk©1CœkÀ1{œkÀ1CœkÉ1› %É1{œkÉ1Cœkà1{œkà1Cœké1›_%é1{œké1Cœk2{œk2Cœk2KHm2{œk2Cœk 2›²% 2{œk 2Cœk 2{œk 2Cœk!2KHm!2{œk!2Cœk)2›&)2{œk)2Cœk@2{œkA2KHmA2{œkA2CœkI2›`&I2{œkI2Cœk`2{œka2KHma2{œka2Cœki2›Ö&i2{œki2Cœk€2{œk2KHm2{œk2Cœk‰2›;'‰2{œk‰2Cœk¡2KHm¡2{œk¡2Cœk©2›ž'©2{œk©2CœkÉ2›(É2{œkÉ2Cœké2›€(é2{œké2Cœk 3›à( 3{œk 3Cœk 3{œk!3KHm!3{œk!3Cœk)3›?))3{œk)3Cœk@3{œkA3KHmA3{œkA3CœkI3›™)I3{œkI3Cœk`3Skma3KHma3{œka3Cœki3›ò)i3{œki3Cœk€3{œk€3Cœk3KHm3{œk3Cœk‰3›T*‰3{œk‰3Cœk 3{œk 3Cœk¡3KHm¡3{œk¡3Cœk©3›ª*©3{œk©3CœkÀ3{œkÀ3CœkÁ3KHmÁ3{œkÁ3CœkÉ3›+É3{œkÉ3Cœkà3{œkà3Cœké3›_+é3{œké3Cœk4{œk4Cœk 4›¼+ 4{œk 4Cœk 4{œk)4›,)4{œk)4Cœk@4{œkI4›m,I4{œkI4Cœk`4{œki4›È,i4{œki4Cœk€4{œk‰4›-‰4{œk‰4Cœk 4{œk©4›Ço©4{œk©4CœkÀ4SkmÉ4›¨nÉ4{œkÉ4Cœkà4{œkà4Cœké4›oé4{œké4Cœk5{œk5Cœk 5›V° 5{œk 5Cœk 5{œk 5Cœk)5›Òæ)5{œk)5Cœk@5{œk@5CœkA5KHmA5{œkA5CœkI5›bçI5{œkI5Cœk`5{œk`5Cœka5KHma5{œka5Cœki5›óçi5{œki5Cœk€5{œk€5Cœk5KHm5{œk5Cœk‰5›oý‰5{œk‰5Cœk¡5KHm¡5{œk¡5Cœk©5›Éý©5{œk©5CœkÉ5›&þÉ5{œkÉ5Cœké5›˜þé5{œké5Cœk 6›"ÿ 6{œk 6Cœk)6›ÿ)6{œk)6CœkI6›ô« I6{œkI6Cœki6›}å i6{œki6Cœk‰6›V‰6{œk‰6Cœk©6›¼©6{œk©6CœkÉ6› É6{œkÉ6Cœké6›f é6{œké6Cœk 7›½  7{œk 7Cœk)7›!)7{œk)7CœkI7›a!I7{œkI7Cœki7›µ!i7{œki7Cœk‰7›"‰7{œk‰7Cœk©7›W"©7{œk©7CœkÉ7›·"É7{œkÉ7Cœké7›#é7{œké7Cœk 8›h# 8{œk 8Cœk)8›¹#)8{œk)8CœkI8› $I8{œkI8Cœki8›_$i8{œki8Cœk‰8›µ$‰8{œk‰8Cœk©8› %©8{œk©8CœkÁ8KHmÁ8{œkÁ8CœkÉ8›_%É8{œkÉ8Cœká8KHmá8{œká8Cœké8›²%é8{œké8Cœk 9›& 9{œk 9Cœk)9›`&)9{œk)9CœkI9›Ö&I9{œkI9Cœki9›;'i9{œki9Cœk‰9›ž'‰9{œk‰9Cœk©9›(©9{œk©9CœkÉ9›€(É9{œkÉ9Cœké9›à(é9{œké9Cœk :›?) :{œk :Cœk):›™)):{œk):CœkI:›ò)I:{œkI:Cœki:›T*i:{œki:Cœk‰:›ª*‰:{œk‰:Cœk©:›+©:{œk©:CœkÉ:›_+É:{œkÉ:Cœké:›¼+é:{œké:Cœk ;›, ;{œk ;Cœk);›m,);{œk);CœkI;›È,I;{œkI;Cœki;›-i;{œki;Cœk‰;{œk‰;Cœk‰;KHm©;{œk©;Cœk©;KHmÉ;{œkÉ;CœkÉ;KHmé;{œké;Cœké;KHm <{œk <Cœk <KHm)<{œk)<Cœk)<KHmI<{œkI<CœkI<KHmi<{œki<Cœki<KHm‰<{œk‰<Cœk‰<KHm©<{œk©<Cœk©<KHmÉ<{œkÉ<CœkÉ<KHmé<{œké<Cœké<KHm ={œk =Cœk =KHm)={œk)=Cœk)=KHmI={œkI=CœkI=KHmi={œki=Cœki=KHm‰={œk‰=Cœk‰=KHm©={œk©=Cœk©=KHmÉ={œkÉ=CœkÉ=KHmé={œké=Cœké=KHm>KHm>{œk>Cœk >{œk >Cœk >KHm)>{œk)>Cœk)>KHmI>{œkI>CœkI>KHmi>{œki>Cœki>KHm‰>{œk‰>Cœk‰>KHm©>{œk©>Cœk©>KHmÁ>KHmÁ>{œkÁ>CœkÉ>{œkÉ>CœkÉ>KHmá>KHmá>{œká>Cœké>{œké>Cœké>KHm?KHm?{œk?Cœk ?{œk ?Cœk ?KHm)?{œk)?Cœk)?KHmI?{œkI?CœkI?KHmi?{œki?Cœki?KHm‰?{œk‰?Cœk‰?KHm©?{œk©?Cœk©?KHmÉ?{œkÉ?CœkÉ?KHmé?{œké?Cœké?KHm @{œk @Cœk @KHm)@{œk)@Cœk)@KHmI@{œkI@CœkI@KHmi@{œki@Cœki@KHm‰@{œk‰@Cœk‰@KHm©@{œk©@Cœk©@KHmÉ@{œkÉ@CœkÉ@KHmé@{œké@Cœké@KHm A{œk ACœk AKHm)A{œk)ACœk)AKHmAAKHmAA{œkAACœkIA{œkIACœkIAKHmaAKHmaA{œkaACœkiA{œkiACœkiAKHm‰A{œk‰ACœk‰AKHm©A{œk©ACœk©AKHmÁAKHmÁA{œkÁACœkÉA{œkÉACœkÉAKHméA{œkéACœkéAKHm B{œk BCœk BKHm)B{œk)BCœk)BKHmIB{œkIBCœkIBKHmiB{œkiBCœkiBKHm‰B{œk‰BCœk‰BKHm©B{œk©BCœk©BKHmÉB{œkÉBCœkÉBKHméB{œkéBCœkéBKHm C{œk CCœk CKHm)C{œk)CCœk)CKHmIC{œkICCœkICKHmiC{œkiCCœkiCKHm‰C{œk‰CCœk‰CKHm©C{œk©CCœk©CKHmÉC{œkÉCCœkÉCKHméC{œkéCCœkéCKHmDKHmD{œkDCœk D{œk DCœk DKHm!DKHm!D{œk!DCœk)D{œk)DCœk)DKHmADKHmAD{œkADCœkID{œkIDCœkIDKHmaDKHmaD{œkaDCœkiD{œkiDCœkiDKHm‰D{œk‰DCœk‰DKHm©D{œk©DCœk©DKHmÉD{œkÉDCœkÉDKHméD{œkéDCœkéDKHm E{œk ECœk EKHm)E{œk)ECœk)EKHmIE{œkIECœkIEKHmiE{œkiECœkiEKHm‰E{œk‰ECœk‰EKHm©E{œk©ECœk©EKHmÉE{œkÉECœkÉEKHméE{œkéECœkéEKHm F{œk FCœk FKHm)F{œk)FCœk)FKHmIF{œkIFCœkIFKHmiF{œkiFCœkiFKHm‰F{œk‰FCœk‰FKHm©F{œk©FCœk©FKHmÉF{œkÉFCœkÉFKHméF{œkéFCœkéFKHm G{œk GCœk GKHm)G{œk)GCœk)GKHmIG{œkIGCœkIGKHmiG{œkiGCœkiGKHm‰G{œk‰GCœk‰GKHm©G{œk©GCœk©GKHmÉG{œkÉGCœkÉGKHméG{œkéGCœkéGKHm H{œk HCœk HKHm)H{œk)HCœk)HKHmIH{œkIHCœkIHKHmaHKHmaH{œkaHCœkiH{œkiHCœkiHKHm‰H{œk‰HCœk‰HKHm©H{œk©HCœk©HKHmÉH{œkÉHCœkÉHKHméH{œkéHCœkéHKHm I{œk ICœk IKHm)I{œk)ICœk)IKHmII{œkIICœkIIKHmiI{œkiICœkiIKHm‰I{œk‰ICœk‰IKHm©I{œk©ICœk©IKHmÉI{œkÉICœkÉIKHméI{œkéICœkéIKHm J{œk JCœk JKHm)J{œk)JCœk)JKHmIJ{œkIJCœkIJKHmiJ{œkiJCœkiJKHm‰J{œk‰JCœk‰JKHm©J{œk©JCœk©JKHmÉJ{œkÉJCœkÉJKHméJ{œkéJCœkéJKHm K{œk KCœk KKHm!KKHm!K{œk!KCœk)K{œk)KCœk)KKHmAKKHmAK{œkAKCœkIK{œkIKCœkIKKHmaKKHmaK{œkaKCœkiK{œkiKCœkiKKHm‰K{œk‰KCœk‰KKHm£K;âø©K{œk©KCœk©KKHmÁKKHmÁK{œkÁKCœkÃKË~ÃKÓœkÃK³œkÃKƒœkÃK‹nÃK;:nÉK{œkÉKCœkÉKKHmãKË~ãK³œkãKƒœkãKÓœkãK;4méK{œkéKCœkéKKHmLKHmL{œkLCœk L{œk LCœk LKHm)L{œk)LCœk)LKHmCLË~CLË\œkCL³œkCLƒœkCL;4mIL{œkILCœkILKHmiL{œkiLCœkiLKHmLKHmL{œkLCœk‰L{œk‰LCœk‰LKHm¡LKHm¡L{œk¡LCœk£L³œk£Lƒœk£L;‡s©L{œk©LCœk©LKHmÁLKHmÁL{œkÁLCœkÉL{œkÉLCœkÉLKHmáLKHmáL{œkáLCœkéL{œkéLCœkéLKHmMKHmM{œkMCœk M{œk MCœk MKHm)M{œk)MCœk)MKHmIM{œkIMCœkIMKHmiM{œkiMCœkiMKHmMKHmM{œkMCœk‰M{œk‰MCœk‰MKHm¡MKHm¡M{œk¡MCœk©M{œk©MCœk©MKHmÉM{œkÉMCœkÉMKHméM{œkéMCœkéMKHm N{œk NCœk NKHm)N{œk)NCœk)NKHmIN{œkINCœkINKHmiN{œkiNCœkiNKHmNKHmN{œkNCœk‰N{œk‰NCœk‰NKHm©N{œk©NCœk©NKHmÉN{œkÉNCœkÉNKHméN{œkéNCœkéNKHm O{œk OCœk OKHm)O{œk)OCœk)OKHmIO{œkIOCœkIOKHmiO{œkiOCœkiOKHm‰O{œk‰OCœk‰OKHm©O{œk©OCœk©OKHmÉO{œkÉOCœkÉOKHméO{œkéOCœkéOKHm P{œk PCœk PKHm)P{œk)PCœk)PKHmIP{œkIPCœkIPKHmcP‹ncP;:niP{œkiPCœkiPKHm‰P{œk‰PCœk‰PKHm£P³œk£Pƒœk£P;‡s©P{œk©PCœk©PKHmÁPKHmÁP{œkÁPCœkÉP{œkÉPCœkÉPKHmáPKHmáP{œkáPCœkéP{œkéPCœkéPKHmQ{œkQKHmQ{œkQCœk Q{œk QCœk QKHm Q{œk!QKHm!Q{œk!QCœk)Q{œk)QCœk)QKHm@Q{œkIQ{œkIQCœkIQKHmaQKHmaQ{œkaQCœkiQ{œkiQCœkiQKHmQKHmQ{œkQCœk‰Q{œk‰QCœk‰QKHm¡QKHm¡Q{œk¡QCœk©Q{œk©QCœk©QKHmÁQKHmÁQ{œkÁQCœkÉQ{œkÉQCœkÉQKHméQ{œkéQCœkéQKHmRKHmR{œkRCœk R{œk RCœk RKHm!RKHm!R{œk!RCœk)R{œk)RCœk)RKHmARKHmAR{œkARCœkIR{œkIRCœkIRKHmiR{œkiRCœkiRKHm‰R{œk‰RCœk‰RKHm©R{œk©RCœk©RKHmÀR{œkÉR{œkÉRCœkÉRKHmàR{œkéR{œkéRCœkéRKHmSKHmS{œkSCœkS;Çù S{œk SCœk SKHm!SKHm!S{œk!SCœk#S;Çù)S{œk)SCœk)SKHmASKHmAS{œkASCœkCS;ÇùIS{œkISCœkISKHmaSKHmaS{œkaSCœkcS;ÇùiS{œkiSCœkiSKHmSKHmS{œkSCœk‰S{œk‰SCœk‰SKHm¡SKHm¡S{œk¡SCœk©S{œk©SCœk©SKHmÁSKHmÁS{œkÁSCœkÃS;4mÉS{œkÉSCœkÉSKHmáSKHmáS{œkáSCœkéS{œkéSCœkéSKHm T{œk TCœk TKHm!TKHm!T{œk!TCœk)T{œk)TCœk)TKHmATKHmAT{œkATCœkIT{œkITCœkITKHmaTKHmaT{œkaTCœkiT{œkiTCœkiTKHmTKHmT{œkTCœk‰T{œk‰TCœk‰TKHm¡TKHm¡T{œk¡TCœk©T{œk©TCœk©TKHmÁTKHmÁT{œkÁTCœkÉT{œkÉTCœkÉTKHmáTKHmáT{œkáTCœkéT{œkéTCœkéTKHmUKHmU{œkUCœk U{œk UCœk UKHm!UKHm!U{œk!UCœk#U‹n#U;:n)U{œk)UCœk)UKHmAUKHmAU{œkAUCœkIU{œkIUCœkIUKHmiU{œkiUCœkiUKHm€U{œkƒUÓœkƒU³œkƒUƒœkƒU‹nƒU;:n‰U{œk‰UCœk‰UKHm U{œk£U;Çù©U{œk©UCœk©UKHmÀU{œkÃUË\œkÃU³œkÃUƒœkÃU;4mÉU{œkÉUCœkÉUKHmáUKHmáU{œkáUCœkãUË\œkãU³œkãUƒœkãU;4méU{œkéUCœkéUKHmV{œkVKHmV{œkVCœk V{œk VCœk VKHm V{œk!VKHm!V{œk!VCœk)V{œk)VCœk)VKHmAVKHmAV{œkAVCœkIV{œkIVCœkIVKHmaVKHmaV{œkaVCœkiV{œkiVCœkiVKHmVKHmV{œkVCœk‰V{œk‰VCœk‰VKHm£V‹n£V;:n©V{œk©VCœk©VKHmÉV{œkÉVCœkÉVKHmáVKHmáV{œkáVCœkãV“à ãV‹néV{œkéVCœkéVKHmWKHmW{œkWCœkW“là W‹n W{œk WCœk WKHm#W“ðà #W‹n)W{œk)WCœk)WKHmAWKHmAW{œkAWCœkIW{œkIWCœkIWKHmaWKHmaW{œkaWCœkiW{œkiWCœkiWKHmWKHmW{œkWCœk‰W{œk‰WCœk‰WKHm©W{œk©WCœk©WKHmÉW{œkÉWCœkÉWKHméW{œkéWCœkéWKHm X{œk XCœk XKHm#X;Çù)X{œk)XCœk)XKHmCX;‡sIX{œkIXCœkIXKHmiX{œkiXCœkiXKHm‰X{œk‰XCœk‰XKHm©X{œk©XCœk©XKHmÉX{œkÉXCœkÉXKHméX{œkéXCœkéXKHm Y{œk YCœk YKHm)Y{œk)YCœk)YKHmIY{œkIYCœkIYKHmaYKHmaY{œkaYCœkiY{œkiYCœkiYKHmYKHmY{œkYCœk‰Y{œk‰YCœk‰YKHm¡YKHm¡Y{œk¡YCœk©Y{œk©YCœk©YKHmÁYKHmÁY{œkÁYCœkÉY{œkÉYCœkÉYKHméY{œkéYCœkéYKHmZKHmZ{œkZCœk Z{œk ZCœk ZKHm!ZKHm!Z{œk!ZCœk)Z{œk)ZCœk)ZKHmAZKHmAZ{œkAZCœkIZ{œkIZCœkIZKHmiZ{œkiZCœkiZKHm‰Z{œk‰ZCœk‰ZKHm©Z{œk©ZCœk©ZKHmÉZ{œkÉZCœkÉZKHméZ{œkéZCœkéZKHm[KHm[{œk[Cœk [{œk [Cœk [KHm![KHm![{œk![Cœk#[³œk#[ƒœk#[;‡s)[{œk)[Cœk)[KHmI[{œkI[CœkI[KHma[KHma[{œka[Cœki[{œki[Cœki[KHm‰[{œk‰[Cœk‰[KHm©[{œk©[Cœk©[KHmÉ[{œkÉ[CœkÉ[KHmé[{œké[Cœké[KHm \{œk \Cœk \KHm)\{œk)\Cœk)\KHmA\KHmA\{œkA\CœkI\{œkI\CœkI\KHma\KHma\{œka\Cœki\{œki\Cœki\KHm\KHm\{œk\Cœk‰\{œk‰\Cœk‰\KHm¡\KHm¡\{œk¡\Cœk©\{œk©\Cœk©\KHmÁ\KHmÁ\{œkÁ\CœkÉ\{œkÉ\CœkÉ\KHmá\KHmá\{œká\Cœké\{œké\Cœké\KHm]KHm]{œk]Cœk ]{œk ]Cœk ]KHm!]KHm!]{œk!]Cœk)]{œk)]Cœk)]KHmA]KHmA]{œkA]CœkI]{œkI]CœkI]KHma]KHma]{œka]Cœki]{œki]Cœki]KHm]KHm]{œk]Cœkƒ];‡s‰]{œk‰]Cœk‰]KHm¡]KHm¡]{œk¡]Cœk£];‡s©]{œk©]Cœk©]KHmÁ]KHmÁ]{œkÁ]CœkÉ]{œkÉ]CœkÉ]KHmá]KHmá]{œká]Cœké]{œké]Cœké]KHm^KHm^{œk^Cœk ^{œk ^Cœk ^KHm!^KHm!^{œk!^Cœk)^{œk)^Cœk)^KHmA^KHmA^{œkA^CœkI^{œkI^CœkI^KHma^KHma^{œka^Cœki^{œki^Cœki^KHm^KHm^{œk^Cœk‰^{œk‰^Cœk‰^KHm¡^KHm¡^{œk¡^Cœk©^{œk©^Cœk©^KHmÁ^KHmÁ^{œkÁ^CœkÉ^{œkÉ^CœkÉ^KHmá^KHmá^{œká^Cœké^{œké^Cœké^KHm_KHm_{œk_Cœk _{œk _Cœk _KHm!_KHm!_{œk!_Cœk)_{œk)_Cœk)_KHmA_KHmA_{œkA_CœkI_{œkI_CœkI_KHma_KHma_{œka_Cœki_{œki_Cœki_KHm_KHm_{œk_Cœk‰_{œk‰_Cœk‰_KHm¡_KHm¡_{œk¡_Cœk©_{œk©_Cœk©_KHmÁ_KHmÁ_{œkÁ_CœkÉ_{œkÉ_CœkÉ_KHmá_KHmá_{œká_Cœké_{œké_Cœké_KHm `{œk `Cœk `KHm!`KHm!`{œk!`Cœk)`{œk)`Cœk)`KHmI`{œkI`CœkI`KHmi`{œki`Cœki`KHm‰`{œk‰`Cœk‰`KHm©`{œk©`Cœk©`KHmÉ`{œkÉ`CœkÉ`KHmé`{œké`Cœké`KHm a{œk aCœk aKHm!aKHm!a{œk!aCœk)a{œk)aCœk)aKHmIa{œkIaCœkIaKHmia{œkiaCœkiaKHm‰a{œk‰aCœk‰aKHm©a{œk©aCœk©aKHmÉa{œkÉaCœkÉaKHméa{œkéaCœkéaKHmbKHmb{œkbCœk b{œk bCœk bKHm!bKHm!b{œk!bCœk)b{œk)bCœk)bKHmAbKHmAb{œkAbCœkIb{œkIbCœkIbKHmabKHmab{œkabCœkib{œkibCœkibKHmbKHmb{œkbCœk‰b{œk‰bCœk‰bKHm¡bKHm¡b{œk¡bCœk©b{œk©bCœk©bKHmÁbKHmÁb{œkÁbCœkÉb{œkÉbCœkÉbKHmábKHmáb{œkábCœkéb{œkébCœkébKHm c{œk cCœk cKHm)c{œk)cCœk)cKHmIc{œkIcCœkIcKHmacKHmac{œkacCœkic{œkicCœkicKHmcKHmc{œkcCœk‰c{œk‰cCœk‰cKHm¡cKHm¡c{œk¡cCœk©c{œk©cCœk©cKHmÉc{œkÉcCœkÉcKHméc{œkécCœkécKHm d{œk dCœk dKHm)d{œk)dCœk)dKHmId{œkIdCœkIdKHmid{œkidCœkidKHm‰d{œk‰dCœk‰dKHm©d{œk©dCœk©dKHmÉd{œkÉdCœkÉdKHméd{œkédCœkédKHmeKHme{œkeCœk e{œk eCœk eKHm!eKHm!e{œk!eCœk)e{œk)eCœk)eKHmIe{œkIeCœkIeKHmie{œkieCœkieKHm‰e{œk‰eCœk‰eKHm©e{œk©eCœk©eKHmÉe{œkÉeCœkÉeKHmée{œkéeCœkéeKHm f{œk fCœk fKHm)f{œk)fCœk)fKHmIf{œkIfCœkIfKHmif{œkifCœkifKHm‰f{œk‰fCœk‰fKHm f{œk©f{œk©fCœk©fKHmÀf“ׂÀf{œkÉf{œkÉfCœkÉfKHméf{œkéfCœkéfKHm g{œk gCœk gKHm)g{œk)gCœk)gKHmIg{œkIgCœkIgKHmig{œkigCœkigKHmgKHmg{œkgCœk‰g{œk‰gCœk‰gKHm©g{œk©gCœk©gKHmÉg{œkÉgCœkÉgKHmágKHmág{œkágCœkég{œkégCœkégKHmhKHmh{œkhCœk h{œk hCœk hKHm!hKHm!h{œk!hCœk#h‹n#h;:n)h{œk)hCœk)hKHmIh{œkIhCœkIhKHmih{œkihCœkihKHm‰h{œk‰hCœk‰hKHm©h{œk©hCœk©hKHmÉh{œkÉhCœkÉhKHméh{œkéhCœkéhKHm i{œk iCœk iKHm!iKHm!i{œk!iCœk)i{œk)iCœk)iKHmAiKHmAi{œkAiCœkIi{œkIiCœkIiKHmii{œkiiCœkiiKHmiKHmi{œkiCœk‰i{œk‰iCœk‰iKHm¡iKHm¡i{œk¡iCœk©i{œk©iCœk©iKHmÁiKHmÁi{œkÁiCœkÉi{œkÉiCœkÉiKHmài{œkàiCœkáiKHmái{œkáiCœkéi{œkéiCœkéiKHmj{œkjCœkjKHmj{œkjCœk j{œk jCœk jKHm)j{œk)jCœk)jKHmIj{œkIjCœkIjKHmij{œkijCœkijKHm‰j{œk‰jCœk‰jKHm©j{œk©jCœk©jKHmÉj{œkÉjCœkÉjKHmájKHmáj{œkájCœkéj{œkéjCœkéjKHmkKHmk{œkkCœk k{œk kCœk kKHm!kKHm!k{œk!kCœk)k{œk)kCœk)kKHmAkKHmAk{œkAkCœkIk{œkIkCœkIkKHmakKHmak{œkakCœkik{œkikCœkikKHmkKHmk{œkkCœk‰k{œk‰kCœk‰kKHm¡kKHm¡k{œk¡kCœk©k{œk©kCœk©kKHmÁkKHmÁk{œkÁkCœkÉk{œkÉkCœkÉkKHmákKHmák{œkákCœkék{œkékCœkékKHm l{œk lCœk lKHm!lKHm!l{œk!lCœk)l{œk)lCœk)lKHmIl{œkIlCœkIlKHmil{œkilCœkilKHm‰l{œk‰lCœk‰lKHm¡lKHm¡l{œk¡lCœk©l{œk©lCœk©lKHmÁlKHmÁl{œkÁlCœkÉl{œkÉlCœkÉlKHmálKHmál{œkálCœkél{œkélCœkélKHmmKHmm{œkmCœk m{œk mCœk mKHm!mKHm!m{œk!mCœk)m{œk)mCœk)mKHmAmKHmAm{œkAmCœkIm{œkImCœkImKHmim{œkimCœkimKHm‰m{œk‰mCœk‰mKHm©m{œk©mCœk©mKHmÉm{œkÉmCœkÉmKHmém{œkémCœkémKHm n{œk nCœk nKHm)n{œk)nCœk)nKHmIn{œkInCœkInKHmin{œkinCœkinKHm‰n{œk‰nCœk‰nKHm©n{œk©nCœk©nKHmÉn{œkÉnCœkÉnKHmén{œkénCœkénKHm o{œk oCœk oKHm)o{œk)oCœk)oKHmIo{œkIoCœkIoKHmio{œkioCœkioKHm‰o{œk‰oCœk‰oKHm©o{œk©oCœk©oKHmÉo{œkÉoCœkÉoKHméo{œkéoCœkéoKHm p{œk pCœk pKHm)p{œk)pCœk)pKHmApKHmAp{œkApCœkIp{œkIpCœkIpKHmip{œkipCœkipKHm‰p{œk‰pCœk‰pKHm©p{œk©pCœk©pKHmÃp;ÇùÉp{œkÉpCœkÉpKHmãp;Çùép{œképCœképKHmq;Çù q{œk qCœk qKHm)q{œk)qCœk)qKHmIq{œkIqCœkIqKHmiq{œkiqCœkiqKHm‰q{œk‰qCœk‰qKHm q{œk qCœk©q{œk©qCœk©qKHmÀq{œkÀqCœkÉq{œkÉqCœkÉqKHméq{œkéqCœkéqKHm r{œk rCœk rKHm)r{œk)rCœk)rKHmIr{œkIrCœkIrKHmir{œkirCœkirKHmrKHmr{œkrCœk‰r{œk‰rCœk‰rKHm©r{œk©rCœk©rKHmÉr{œkÉrCœkÉrKHmér{œkérCœkérKHm s{œk sCœk sKHm)s{œk)sCœk)sKHmIs{œkIsCœkIsKHmis{œkisCœkisKHm‰s{œk‰sCœk‰sKHm©s{œk©sCœk©sKHmÉs{œkÉsCœkÉsKHmés{œkésCœkésKHm t{œk tCœk tKHm)t{œk)tCœk)tKHmIt{œkItCœkItKHmit{œkitCœkitKHm‰t{œk‰tCœk‰tKHm©t{œk©tCœk©tKHmÁtKHmÁt{œkÁtCœkÉt{œkÉtCœkÉtKHmét{œkétCœkétKHm u{œk uCœk uKHm)u{œk)uCœk)uKHmIu{œkIuCœkIuKHmiu{œkiuCœkiuKHm‰u{œk‰uCœk‰uKHm©u{œk©uCœk©uKHmÉu{œkÉuCœkÉuKHmáuKHmáu{œkáuCœkéu{œkéuCœkéuKHmvKHmv{œkvCœk v{œk vCœk vKHm!vKHm!v{œk!vCœk)v{œk)vCœk)vKHmAvKHmAv{œkAvCœkIv{œkIvCœkIvKHmavKHmav{œkavCœkcv‹ncv;:niv{œkivCœkivKHmvKHmv{œkvCœk‰v{œk‰vCœk‰vKHm v{œk vCœk¡vKHm¡v{œk¡vCœk£v;hv©v{œk©vCœk©vKHmÀv{œkÀvCœkÁvKHmÁv{œkÁvCœkÉv{œkÉvCœkÉvKHmávKHmáv{œkávCœkév{œkévCœkévKHmwKHmw{œkwCœk w{œk wCœk wKHm!wKHm!w{œk!wCœk)w{œk)wCœk)wKHmAwKHmAw{œkAwCœkIw{œkIwCœkIwKHmawKHmaw{œkawCœkiw{œkiwCœkiwKHm‰w{œk‰wCœk‰wKHm©w{œk©wCœk©wKHmÉw{œkÉwCœkÉwKHmàw{œkàwCœkéw{œkéwCœkéwKHmx{œkxCœk x{œk xCœk xKHm)x{œk)xCœk)xKHmIx{œkIxCœkIxKHmix{œkixCœkixKHm‰x{œk‰xCœk‰xKHm©x{œk©xCœk©xKHmÉx{œkÉxCœkÉxKHmãx;‡séx{œkéxCœkéxKHm y{œk yCœk yKHm!yKHm!y{œk!yCœk)y{œk)yCœk)yKHmAyKHmAy{œkAyCœkIy{œkIyCœkIyKHmiy{œkiyCœkiyKHm‰y{œk‰yCœk‰yKHm©y{œk©yCœk©yKHmÉy{œkÉyCœkÉyKHméy{œkéyCœkéyKHm z{œk zCœk zKHm)z{œk)zCœk)zKHmIz{œkIzCœkIzKHmiz{œkizCœkizKHmzKHmz{œkzCœk‰z{œk‰zCœk‰zKHm¡zKHm¡z{œk¡zCœk©z{œk©zCœk©zKHmÉz{œkÉzCœkÉzKHméz{œkézCœkézKHm {{œk {Cœk {KHm){{œk){Cœk){KHmI{{œkI{CœkI{KHma{KHma{{œka{Cœki{{œki{Cœki{KHm{KHm{{œk{Cœk‰{{œk‰{Cœk‰{KHm¡{KHm¡{{œk¡{Cœk©{{œk©{Cœk©{KHmÁ{KHmÁ{{œkÁ{CœkÉ{{œkÉ{CœkÉ{KHmá{KHmá{{œká{Cœké{{œké{Cœké{KHm|KHm|{œk|Cœk |{œk |Cœk |KHm)|{œk)|Cœk)|KHmI|{œkI|CœkI|KHmi|{œki|Cœki|KHm‰|{œk‰|Cœk‰|KHm©|{œk©|Cœk©|KHmÉ|{œkÉ|CœkÉ|KHmé|{œké|Cœké|KHm }{œk }Cœk }KHm)}{œk)}Cœk)}KHmI}{œkI}CœkI}KHmi}{œki}Cœki}KHm}KHm}{œk}Cœk‰}{œk‰}Cœk‰}KHm©}{œk©}Cœk©}KHmÉ}{œkÉ}CœkÉ}KHmá}KHmá}{œká}Cœké}{œké}Cœké}KHm ~{œk ~Cœk ~KHm)~{œk)~Cœk)~KHmI~{œkI~CœkI~KHmi~{œki~Cœki~KHm‰~{œk‰~Cœk‰~KHm©~{œk©~Cœk©~KHmÉ~{œkÉ~CœkÉ~KHmé~{œké~Cœké~KHmKHm{œkCœk {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœk‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm €{œk €Cœk €KHm)€{œk)€Cœk)€KHmI€{œkI€CœkI€KHmi€{œki€Cœki€KHm‰€{œk‰€Cœk‰€KHm©€{œk©€Cœk©€KHmÉ€{œkÉ€CœkÉ€KHmé€{œké€Cœké€KHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÀ{œkÀCœkÉ{œkÉCœkÉKHmà{œkàCœkáKHmá{œkáCœké{œkéCœkéKHm ‚{œk ‚Cœk ‚KHm!‚KHm!‚{œk!‚Cœk)‚{œk)‚Cœk)‚KHmI‚{œkI‚CœkI‚KHmi‚{œki‚Cœki‚KHm‰‚{œk‰‚Cœk‰‚KHm©‚{œk©‚Cœk©‚KHmÁ‚KHmÁ‚{œkÁ‚CœkÉ‚{œkÉ‚CœkÉ‚KHmé‚{œké‚Cœké‚KHm ƒ{œk ƒCœk ƒKHm)ƒ{œk)ƒCœk)ƒKHmIƒ{œkIƒCœkIƒKHmiƒ{œkiƒCœkiƒKHm‰ƒ{œk‰ƒCœk‰ƒKHm©ƒ{œk©ƒCœk©ƒKHmɃ{œkɃCœkɃKHméƒ{œkéƒCœkéƒKHm „{œk „Cœk „KHm)„{œk)„Cœk)„KHmI„{œkI„CœkI„KHmi„{œki„Cœki„KHm‰„{œk‰„Cœk‰„KHm©„{œk©„Cœk©„KHmÉ„{œkÉ„CœkÉ„KHmㄳœk㄃œkã„;‡sé„{œké„Cœké„KHm …{œk …Cœk …KHm …{œk …Cœk)…{œk)…Cœk)…KHm@…SkmI…{œkI…CœkI…KHm`…{œk`…Cœki…{œki…Cœki…KHm€…S~m‰…{œk‰…Cœk‰…KHm …{œk …Cœk¡…KHm¡…{œk¡…Cœk©…{œk©…Cœk©…KHmÀ…{œkÀ…CœkÁ…KHmÁ…{œkÁ…CœkÉ…{œkÉ…CœkÉ…KHmà…{œkà…Cœká…KHmá…{œká…Cœké…{œké…Cœké…KHm†{œk†Cœk†KHm†{œk†Cœk †{œk †Cœk †KHm †{œk †Cœk!†KHm!†{œk!†Cœk)†{œk)†Cœk)†KHm@†{œk@†CœkI†{œkI†CœkI†KHm`†{œk`†Cœka†KHma†{œka†Cœki†{œki†Cœki†KHm€†{œk€†Cœk†KHm†{œk†Cœk‰†{œk‰†Cœk‰†KHm †{œk †Cœk¡†KHm¡†{œk¡†Cœk©†{œk©†Cœk©†KHmÀ†{œkÀ†CœkÁ†KHmÁ†{œkÁ†CœkɆ{œkɆCœkɆKHmà†{œkà†Cœká†KHmá†{œká†Cœké†{œké†Cœké†KHm‡Skm‡KHm‡{œk‡Cœk ‡{œk ‡Cœk ‡KHm ‡{œk ‡Cœk!‡KHm!‡{œk!‡Cœk)‡{œk)‡Cœk)‡KHm@‡{œk@‡CœkA‡KHmA‡{œkA‡CœkI‡{œkI‡CœkI‡KHm`‡{œk`‡Cœka‡KHma‡{œka‡Cœki‡{œki‡Cœki‡KHm€‡{œk€‡Cœk‰‡{œk‰‡Cœk‰‡KHm©‡{œk©‡Cœk©‡KHmɇ{œkɇCœkɇKHmé‡{œké‡Cœké‡KHm ˆ{œk ˆCœk ˆKHm)ˆ{œk)ˆCœk)ˆKHmIˆ{œkIˆCœkIˆKHmiˆ{œkiˆCœkiˆKHm‰ˆ{œk‰ˆCœk‰ˆKHm©ˆ{œk©ˆCœk©ˆKHmÁˆKHmÁˆ{œkÁˆCœkɈ{œkɈCœkɈKHmáˆKHmáˆ{œkáˆCœkéˆ{œkéˆCœkéˆKHm‰KHm‰{œk‰Cœk ‰{œk ‰Cœk ‰KHm)‰{œk)‰Cœk)‰KHmI‰{œkI‰CœkI‰KHmi‰{œki‰Cœki‰KHm‰KHm‰{œk‰Cœk‰‰{œk‰‰Cœk‰‰KHm¡‰KHm¡‰{œk¡‰Cœk©‰{œk©‰Cœk©‰KHmɉ{œkɉCœkɉKHmé‰{œké‰Cœké‰KHmŠ;âø Š{œk ŠCœk ŠKHm)Š{œk)ŠCœk)ŠKHmIŠ{œkIŠCœkIŠKHmiŠ{œkiŠCœkiŠKHmŠKHmŠ{œkŠCœk‰Š{œk‰ŠCœk‰ŠKHm¡ŠKHm¡Š{œk¡ŠCœk©Š{œk©ŠCœk©ŠKHmÉŠ{œkÉŠCœkÉŠKHméŠ{œkéŠCœkéŠKHm ‹{œk ‹Cœk ‹KHm)‹{œk)‹Cœk)‹KHmA‹KHmA‹{œkA‹CœkI‹{œkI‹CœkI‹KHmi‹{œki‹Cœki‹KHm‹KHm‹{œk‹Cœk‰‹{œk‰‹Cœk‰‹KHm©‹{œk©‹Cœk©‹KHmÉ‹{œkÉ‹CœkÉ‹KHmé‹{œké‹Cœké‹KHmŒ“ÖŒKHmŒ{œkŒCœk Œ{œk ŒCœk ŒKHm)Œ{œk)ŒCœk)ŒKHmAŒKHmAŒ{œkAŒCœkIŒ{œkIŒCœkIŒKHm`Œ“¤laŒKHmaŒ{œkaŒCœkiŒ{œkiŒCœkiŒKHm€Œ“¤l‰Œ{œk‰ŒCœk‰ŒKHm Œ“Ø©Œ{œk©ŒCœk©ŒKHmÉŒ{œkÉŒCœkÉŒKHméŒ{œkéŒCœkéŒKHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm Ž{œk ŽCœk ŽKHm!ŽKHm!Ž{œk!ŽCœk)Ž{œk)ŽCœk)ŽKHm@Ž{œkAŽKHmAŽ{œkAŽCœkIŽ{œkIŽCœkIŽKHm`Ž“Ø`Ž{œkaŽKHmaŽ{œkaŽCœkiŽ{œkiŽCœkiŽKHmŽKHmŽ{œkŽCœk‰Ž{œk‰ŽCœk‰ŽKHm¡ŽKHm¡Ž{œk¡ŽCœk©Ž{œk©ŽCœk©ŽKHmÁŽKHmÁŽ{œkÁŽCœkÉŽ{œkÉŽCœkÉŽKHmáŽKHmáŽ{œkáŽCœkéŽ{œkéŽCœkéŽKHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHmKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm {œk Cœk KHm!KHm!{œk!Cœk){œk)Cœk)KHmAKHmA{œkACœkI{œkICœkIKHmaKHma{œkaCœki{œkiCœkiKHm‰{œk‰Cœk‰KHm©{œk©Cœk©KHmÉ{œkÉCœkÉKHmé{œkéCœkéKHm ‘{œk ‘Cœk ‘KHm)‘{œk)‘Cœk)‘KHmI‘{œkI‘CœkI‘KHmi‘{œki‘Cœki‘KHm‰‘{œk‰‘Cœk‰‘KHm©‘{œk©‘Cœk©‘KHmÉ‘{œkÉ‘CœkÉ‘KHmé‘{œké‘Cœké‘KHm ’{œk ’Cœk ’KHm)’{œk)’Cœk)’KHmI’{œkI’CœkI’KHmi’{œki’Cœki’KHm‰’{œk‰’Cœk‰’KHm©’{œk©’Cœk©’KHmÉ’{œkÉ’CœkÉ’KHmé’{œké’Cœké’KHm “{œk “Cœk “KHm#“;âø)“{œk)“Cœk)“KHmI“{œkI“CœkI“KHmi“{œki“Cœki“KHm‰“{œk‰“Cœk‰“KHm©“{œk©“Cœk©“KHmÁ“KHmÁ“{œkÁ“CœkÓ;‡sÉ“{œkÉ“CœkÉ“KHmé“{œké“Cœké“KHm ”{œk ”Cœk ”KHm)”{œk)”Cœk)”KHmA”KHmA”{œkA”CœkI”{œkI”CœkI”KHmi”{œki”Cœki”KHm‰”{œk‰”Cœk‰”KHm£”;âø©”{œk©”Cœk©”KHmÉ”{œkÉ”CœkÉ”KHmé”{œké”Cœké”KHm •{œk •Cœk •KHm!•KHm!•{œk!•Cœk)•{œk)•Cœk)•KHmA•KHmA•{œkA•CœkI•{œkI•CœkI•KHmi•{œki•Cœki•KHm‰•{œk‰•Cœk‰•KHm©•{œk©•Cœk©•KHmÉ•{œkÉ•CœkÉ•KHmé•{œké•Cœké•KHm–{œk–Cœk –{œk –Cœk –KHm –{œk –Cœk!–KHm!–{œk!–Cœk)–{œk)–Cœk)–KHmA–KHmA–{œkA–CœkI–{œkI–CœkI–KHmi–{œki–Cœki–KHm‰–{œk‰–Cœk‰–KHm¡–KHm¡–{œk¡–Cœk©–{œk©–Cœk©–KHmÁ–KHmÁ–{œkÁ–CœkÉ–{œkÉ–CœkÉ–KHmé–{œké–Cœké–KHm —{œk —Cœk —KHm)—{œk)—Cœk)—KHmI—{œkI—CœkI—KHmi—{œki—Cœki—KHm€—{œk€—Cœk‰—{œk‰—Cœk‰—KHm —{œk —Cœk©—{œk©—Cœk©—KHmÁ—KHmÁ—{œkÁ—CœkÉ—{œkÉ—CœkÉ—KHmá—KHmá—{œká—Cœké—{œké—Cœké—KHm˜KHm˜{œk˜Cœk ˜{œk ˜Cœk ˜KHm!˜KHm!˜{œk!˜Cœk)˜{œk)˜Cœk)˜KHmA˜KHmA˜{œkA˜CœkI˜{œkI˜CœkI˜KHma˜KHma˜{œka˜Cœki˜{œki˜Cœki˜KHm˜KHm˜{œk˜Cœk‰˜{œk‰˜Cœk‰˜KHm¡˜KHm¡˜{œk¡˜Cœk©˜{œk©˜Cœk©˜KHmÁ˜KHmÁ˜{œkÁ˜Cœkɘ{œkɘCœkɘKHmá˜KHmá˜{œká˜Cœké˜{œké˜Cœké˜KHm™KHm™{œk™Cœk ™{œk ™Cœk ™KHm)™{œk)™Cœk)™KHmA™KHmA™{œkA™CœkI™{œkI™CœkI™KHmi™{œki™Cœki™KHmƒ™;âø‰™{œk‰™Cœk‰™KHm£™‹n£™;:n©™{œk©™Cœk©™KHmÙ‹nÙ;:nÉ™{œkÉ™CœkÉ™KHm㙳œk㙃œkã™;‡sé™{œké™Cœké™KHm š{œk šCœk šKHm)š{œk)šCœk)šKHmIš{œkIšCœkIšKHmcš;Çùiš{œkišCœkišKHm‰š{œk‰šCœk‰šKHm©š{œk©šCœk©šKHmÉš{œkÉšCœkÉšKHmášKHmáš{œkášCœkãš;Çùéš{œkéšCœkéšKHm›KHm›{œk›Cœk ›{œk ›Cœk ›KHm)›{œk)›Cœk)›KHmC›;ÇùI›{œkI›CœkI›KHmi›{œki›Cœki›KHm‰›{œk‰›Cœk‰›KHm©›{œk©›Cœk©›KHmÀ›{œkÀ›CœkÉ›{œkÉ›CœkÉ›KHmà›{œkà›Cœké›{œké›Cœké›KHm œ{œk œCœk œKHm#œ;Çù)œ{œk)œCœk)œKHmIœ{œkIœCœkIœKHmiœ{œkiœCœkiœKHm‰œ{œk‰œCœk‰œKHm£œ;Çù©œ{œk©œCœk©œKHmÉœ{œkÉœCœkÉœKHméœ{œkéœCœkéœKHmk3œk;âø {œk Cœk KHm){œk)Cœk)KHmC;âøI{œkICœkIKHmi{œkiCœkiKHm‰{œk‰Cœk‰KHm£Ëœk£‹n£;:n©{œk©Cœk©KHmÉ{œkÉCœkÉKHmã‹nã;:né{œkéCœkéKHm ž{œk žCœk žKHm#ž“éO #ž‹n)ž{œk)žCœk)žKHm@ž{œk@žCœkCž“@P Cž‹nIž{œkIžCœkIžKHm`ž{œk`žCœkiž{œkižCœkižKHm‰ž{œk‰žCœk‰žKHm£ž‹n£ž;:n©ž{œk©žCœk©žKHmÉž{œkÉžCœkÉžKHmãžËœkãž‹nãž;:néž{œkéžCœkéžKHm Ÿ{œk ŸCœk ŸKHm#Ÿ‹n#Ÿ;:n)Ÿ{œk)ŸCœk)ŸKHmIŸ{œkIŸCœkIŸKHmcŸË\œkcŸ;4miŸ{œkiŸCœkiŸKHmƒŸËœkƒŸ‹nƒŸ;:n‰Ÿ{œk‰ŸCœk‰ŸKHm©Ÿ{œk©ŸCœk©ŸKHmßËœkß‹nß;:nÉŸ{œkÉŸCœkÉŸKHméŸ{œkéŸCœkéŸKHm Ë\œk ;4m  {œk  Cœk  KHm# Ë\œk# ;4m) {œk) Cœk) KHmC ;hvI {œkI CœkI KHmc ;hvi {œki Cœki KHmƒ ‹nƒ ;:n‰ {œk‰ Cœk‰ KHm© {œk© Cœk© KHmà‹nà;:nÉ {œkÉ CœkÉ KHmã ‹nã ;:né {œké Cœké KHm ¡{œk ¡Cœk ¡KHm)¡{œk)¡Cœk)¡KHmI¡{œkI¡CœkI¡KHmi¡{œki¡Cœki¡KHm‰¡{œk‰¡Cœk‰¡KHm£¡Ëœk£¡;‡s©¡{œk©¡Cœk©¡KHm᳜kნkáËœká;‡sÉ¡{œkÉ¡CœkÉ¡KHmã¡‹nã¡;:né¡{œké¡Cœké¡KHm ¢{œk ¢Cœk ¢KHm#¢“!] #¢‹n)¢{œk)¢Cœk)¢KHmC¢“e] C¢‹nI¢{œkI¢CœkI¢KHmi¢{œki¢Cœki¢KHm‰¢{œk‰¢Cœk‰¢KHm£¢³œk£¢ƒœk£¢Ëœk£¢;‡s©¢{œk©¢Cœk©¢KHmⳜk⃜kâ‹nâ;:nÉ¢{œkÉ¢CœkÉ¢KHmé¢{œké¢Cœké¢KHm£“ñ_ £‹n £{œk £Cœk £KHm#£“H` #£‹n)£{œk)£Cœk)£KHmC£“²` C£‹nI£{œkI£CœkI£KHmc£“!a c£‹ni£{œki£Cœki£KHmƒ£“a ƒ£‹n‰£{œk‰£Cœk‰£KHm££“Ña ££‹n©£{œk©£Cœk©£KHmã“)b ã‹nÉ£{œkÉ£CœkÉ£KHm㣓±b 㣋né£{œké£Cœké£KHm ¤{œk ¤Cœk ¤KHm)¤{œk)¤Cœk)¤KHmI¤{œkI¤CœkI¤KHmi¤{œki¤Cœki¤KHm‰¤{œk‰¤Cœk‰¤KHm©¤{œk©¤Cœk©¤KHmɤ{œkɤCœkɤKHmé¤{œké¤Cœké¤KHm¥Ëœk¥ƒœk¥³œk¥;‡s ¥{œk ¥Cœk ¥KHm#¥‹n#¥;:n)¥{œk)¥Cœk)¥KHmI¥{œkI¥CœkI¥KHmc¥“„d c¥‹ni¥{œki¥Cœki¥KHm‰¥{œk‰¥Cœk‰¥KHm£¥³œk£¥ƒœk£¥;‡s©¥{œk©¥Cœk©¥KHmÃ¥³œkÃ¥ƒœkÃ¥;‡sÉ¥{œkÉ¥CœkÉ¥KHm㥳œk㥃œkã¥;‡sé¥{œké¥Cœké¥KHm¦{œk¦Cœk¦³œk¦ƒœk¦;‡s ¦{œk ¦Cœk ¦KHm ¦{œk ¦Cœk#¦³œk#¦ƒœk#¦û•êe #¦;‡s)¦{œk)¦Cœk)¦KHmC¦³œkC¦ƒœkC¦;‡sI¦{œkI¦CœkI¦KHmc¦‹nc¦;:ni¦{œki¦Cœki¦KHm‰¦{œk‰¦Cœk‰¦KHm£¦“³f £¦‹n©¦{œk©¦Cœk©¦KHmæ“g æ‹nɦ{œkɦCœkɦKHm㦓Pg 㦋né¦{œké¦Cœké¦KHm §{œk §Cœk §KHm)§{œk)§Cœk)§KHmI§{œkI§CœkI§KHmc§Óœkc§;4mi§{œki§Cœki§KHmƒ§;4m‰§{œk‰§Cœk‰§KHm£§‹n£§;:n©§{œk©§Cœk©§KHm糜k烜kç;‡sɧ{œkɧCœkɧKHmã§³œk㧃œkã§û•Gr ã§;‡sé§{œké§Cœké§KHm¨³œk¨ƒœk¨Ëœk¨‹n¨;:n ¨{œk ¨Cœk ¨KHm)¨{œk)¨Cœk)¨KHmC¨“ñr C¨‹nI¨{œkI¨CœkI¨KHmc¨“Ms c¨‹ni¨{œki¨Cœki¨KHmƒ¨“›s ƒ¨‹n‰¨{œk‰¨Cœk‰¨KHm£¨“ t £¨‹n©¨{œk©¨Cœk©¨KHmè“]t è‹nɨ{œkɨCœkɨKHm㨓´t 㨋né¨{œké¨Cœké¨KHm©“u ©‹n ©{œk ©Cœk ©KHm#©“Wu #©‹n)©{œk)©Cœk)©KHmC©“µu C©‹nI©{œkI©CœkI©KHmc©“ÿu c©‹ni©{œki©Cœki©KHmƒ©“Uv ƒ©‹n‰©{œk‰©Cœk‰©KHm£©“©v £©‹n©©{œk©©Cœk©©KHmé“÷v é‹nÉ©{œkÉ©CœkÉ©KHmé©{œké©Cœké©KHm ª{œk ªCœk ªKHm)ª{œk)ªCœk)ªKHmIª{œkIªCœkIªKHmiª{œkiªCœkiªKHm‰ª{œk‰ªCœk‰ªKHm©ª{œk©ªCœk©ªKHmɪ{œkɪCœkɪKHméª{œkéªCœkéªKHm «{œk «Cœk «KHm)«{œk)«Cœk)«KHmI«{œkI«CœkI«KHmi«{œki«Cœki«KHmƒ«³œkƒ«ƒœkƒ«‹nƒ«;:n‰«{œk‰«Cœk‰«KHm£«³œk£«ƒœk£«‹n£«;:n©«{œk©«Cœk©«KHmÉ«{œkÉ«CœkÉ«KHmã«“`y ã«‹né«{œké«Cœké«KHm¬“Ãy ¬‹n ¬{œk ¬Cœk ¬KHm#¬“8z #¬‹n)¬{œk)¬Cœk)¬KHmC¬“ˆz C¬‹nI¬{œkI¬CœkI¬KHmi¬{œki¬Cœki¬KHm‰¬{œk‰¬Cœk‰¬KHm©¬{œk©¬Cœk©¬KHmɬ{œkɬCœkɬKHmã¬Ëœkã¬;‡sé¬{œké¬Cœké¬KHm­;4m ­{œk ­Cœk ­KHm ­{œk ­Cœk#­û•‰| #­;‡s)­{œk)­Cœk)­KHm@­SkmC­³œkC­ƒœkC­û•$} C­;‡sI­{œkI­CœkI­KHm`­{œk`­Cœkc­³œkc­ƒœkc­;‡si­{œki­Cœki­KHm€­S~mƒ­û•‡} ƒ­;‡s‰­{œk‰­Cœk‰­KHm ­{œk ­Cœk£­‹n£­;:n©­{œk©­Cœk©­KHmÀ­S‹mí‹ní;:nÉ­{œkÉ­CœkÉ­KHmà­{œkà­Cœkã­û•‰| ã­³œkã­ƒœkã­;‡sé­{œké­Cœké­KHm®{œk®Cœk®³œk®ƒœk®û•‰| ®;‡s ®{œk ®Cœk ®KHm ®{œk ®Cœk#®‹n#®;:n)®{œk)®Cœk)®KHm@®{œkC®‹nC®;:nI®{œkI®CœkI®KHm`®{œkc®³œkc®ƒœkc®‹nc®;:ni®{œki®Cœki®KHm€®{œk‰®{œk‰®Cœk‰®KHm ®{œk£®“è £®‹n©®{œk©®Cœk©®KHmÀ®{œkî“@‚ î‹nÉ®{œkÉ®CœkÉ®KHmà®{œk㮓ƒ‚ 㮋né®{œké®Cœké®KHm¯{œk¯“È‚ ¯‹n ¯{œk ¯Cœk ¯KHm ¯{œk#¯“ ƒ #¯‹n)¯{œk)¯Cœk)¯KHmC¯“Pƒ C¯‹nI¯{œkI¯CœkI¯KHmc¯“£ƒ c¯‹ni¯{œki¯Cœki¯KHm‰¯{œk‰¯Cœk‰¯KHm©¯{œk©¯Cœk©¯KHmÁ¯KHmɯ{œkɯCœkɯKHmá¯KHmé¯{œké¯Cœké¯KHm°KHm °{œk °Cœk °KHm)°{œk)°Cœk)°KHm@°SkmI°{œkI°CœkI°KHm`°{œk`°Cœkc°‹nc°;:ni°{œki°Cœki°KHm€°{œk€°Cœk‰°{œk‰°Cœk‰°KHm °{œk °Cœk£°“S„ £°‹n©°{œk©°Cœk©°KHmÀ°{œkÀ°Cœkð“„ ð‹nɰ{œkɰCœkɰKHmà°{œkà°Cœká°KHmá°{œká°Cœkã°“ç„ ã°‹né°{œké°Cœké°KHm±{œk±Cœk±KHm±{œk±Cœk±“2… ±‹n ±{œk ±Cœk ±KHm ±{œk ±Cœk!±KHm!±{œk!±Cœk)±{œk)±Cœk)±KHm@±{œkI±{œkI±CœkI±KHm`±{œki±{œki±Cœki±KHm€±{œk‰±{œk‰±Cœk‰±KHm ±{œk£±³œk£±ƒœk£±;‡s©±{œk©±Cœk©±KHmÀ±{œkÁ±KHmÁ±{œkÁ±Cœkñ;‡sɱ{œkɱCœkɱKHmá±KHmá±{œká±Cœk㱋nã±;:né±{œké±Cœké±KHm²KHm²{œk²Cœk ²{œk ²Cœk ²KHm#²“˜‡ #²‹n)²{œk)²Cœk)²KHmC²“ë‡ C²‹nI²{œkI²CœkI²KHma²KHma²{œka²Cœki²{œki²Cœki²KHm²KHm²{œk²Cœk‰²{œk‰²Cœk‰²KHm¡²KHm¡²{œk¡²Cœk£²;‡s©²{œk©²Cœk©²KHmò‹nò;:nɲ{œkɲCœkɲKHmé²{œké²Cœké²KHm³“µˆ ³‹n ³{œk ³Cœk ³KHm!³KHm!³{œk!³Cœk#³“üˆ #³‹n)³{œk)³Cœk)³KHmI³{œkI³CœkI³KHmi³{œki³Cœki³KHmƒ³‹nƒ³;:n‰³{œk‰³Cœk‰³KHm£³‹n£³;:n©³{œk©³Cœk©³KHmó‹nó;:nɳ{œkɳCœkɳKHmá³KHmá³{œká³Cœkã³Ëœk㳋nã³;:né³{œké³Cœké³KHm´KHm´{œk´Cœk ´{œk ´Cœk ´KHm!´KHm!´{œk!´Cœk#´“ï‹ #´‹n)´{œk)´Cœk)´KHmC´“:Œ C´‹nI´{œkI´CœkI´KHmc´“}Œ c´‹ni´{œki´Cœki´KHm´KHm´{œk´Cœkƒ´“ÈŒ ƒ´‹n‰´{œk‰´Cœk‰´KHm£´“ £´‹n©´{œk©´Cœk©´KHmô“O ô‹nÉ´{œkÉ´CœkÉ´KHmã´“› ã´‹né´{œké´Cœké´KHmµKHmµ{œkµCœkµ“Û µ‹n µ{œk µCœk µKHm!µKHm!µ{œk!µCœk#µ“Ž #µ‹n)µ{œk)µCœk)µKHmCµ“ZŽ Cµ‹nIµ{œkIµCœkIµKHmcµ“šŽ cµ‹niµ{œkiµCœkiµKHmƒµ“èŽ ƒµ‹n‰µ{œk‰µCœk‰µKHm£µ“1 £µ‹n©µ{œk©µCœk©µKHmõ“v õ‹nɵ{œkɵCœkɵKHm㵓´ 㵋néµ{œkéµCœkéµKHm¶“ ¶‹n ¶{œk ¶Cœk ¶KHm)¶{œk)¶Cœk)¶KHmI¶{œkI¶CœkI¶KHmi¶{œki¶Cœki¶KHm¶KHm¶{œk¶Cœk‰¶{œk‰¶Cœk‰¶KHm©¶{œk©¶Cœk©¶KHmɶ{œkɶCœkɶKHmé¶{œké¶Cœké¶KHm ·{œk ·Cœk ·KHm)·{œk)·Cœk)·KHmA·KHmA·{œkA·CœkI·{œkI·CœkI·KHmi·{œki·Cœki·KHm‰·{œk‰·Cœk‰·KHm©·{œk©·Cœk©·KHmÉ·{œkÉ·CœkÉ·KHmé·{œké·Cœké·KHm ¸{œk ¸Cœk ¸KHm#¸³œk#¸ƒœk#¸‹n#¸;:n)¸{œk)¸Cœk)¸KHmI¸{œkI¸CœkI¸KHmc¸“‘ c¸‹ni¸{œki¸Cœki¸KHmƒ¸“ ’ ƒ¸‹n‰¸{œk‰¸Cœk‰¸KHm¡¸KHm¡¸{œk¡¸Cœk£¸“t’ £¸‹n©¸{œk©¸Cœk©¸KHmÁ¸KHmÁ¸{œkÁ¸Cœkɸ{œkɸCœkɸKHmé¸{œké¸Cœké¸KHm ¹{œk ¹Cœk ¹KHm#¹‹n#¹;:n)¹{œk)¹Cœk)¹KHm@¹{œk@¹CœkC¹³œkC¹ƒœkC¹ËœkC¹‹nC¹;:nI¹{œkI¹CœkI¹KHm`¹Skmi¹{œki¹Cœki¹KHm€¹{œk€¹Cœkƒ¹“Ó ƒ¹‹n‰¹{œk‰¹Cœk‰¹KHm ¹S~m£¹“” £¹‹n©¹{œk©¹Cœk©¹KHmÀ¹{œkÀ¹Cœkù“\” ù‹nɹ{œkɹCœkɹKHmà¹{œkà¹Cœk㹓š” 㹋né¹{œké¹Cœké¹KHmº{œkºCœkº“J• º‹n º{œk ºCœk ºKHm º{œk)º{œk)ºCœk)ºKHm@º{œk`º{œkiº;µÜ€º{œk‰º{œk‰ºCœk‰ºKHm º{œk©º›Ço©º{œk©ºCœkÀº{œkú‹nú;:nɺSËqàº{œk㺋nãº;:néºSõq»{œk»‹n»;:n »SËq »{œk »Cœk#»‹n#»;:n)»SËq@»SkmC»ËœkC»;‡sI»Sõq`»{œk`»Cœkc»‹nc»;:ni»Sr€»S~mƒ»Ëœkƒ»‹nƒ»;:n‰»S'r »{œk »Cœk©»S:rÀ»S‹mû“Sš û‹nÉ»{œkÉ»CœkÉ»KHmà»{œkà»Cœk㻓´š 㻋né»{œké»Cœké»KHm¼S⢼“-› ¼‹n ¼{œk ¼Cœk ¼KHm ¼{œk ¼Cœk#¼“Ò› #¼‹n)¼{œk)¼Cœk)¼KHm@¼Sï¢C¼“.œ C¼‹n`¼{œk`¼Cœkc¼“”œ c¼‹ni¼›¨ni¼{œki¼Cœk€¼Sü¢ƒ¼“ ƒ¼‹n‰¼›Qp‰¼{œk‰¼Cœk ¼{œk ¼Cœk¡¼KHm¡¼{œk¡¼Cœk£¼“o £¼‹n©¼›¨n©¼{œk©¼CœkÀ¼S £Á¼KHmÁ¼{œkÁ¼Cœkü“už ü‹nɼ›Qpɼ{œkɼCœkà¼{œkà¼Cœká¼KHmá¼{œká¼Cœk㼓Ÿ 㼋n½S£½KHm½{œk½Cœk½“‹Ÿ ½‹n ½{œk ½Cœk!½KHm!½{œk!½Cœk#½“  #½‹n@½S#£C½“¡ C½‹n`½{œk`½Cœka½KHma½{œka½Cœkc½“q¡ c½‹n€½S÷ùƒ½“Ú¡ ƒ½‹n ½{œk ½CœkÀ½SúÁ½KHmÁ½{œkÁ½Cœkà½{œkà½Cœk¾S3ú ¾{œk ¾Cœk@¾SSú`¾{œk`¾Cœk€¾S~ú ¾{œk ¾CœkÀ¾{œkÀ¾Cœkà¾{œkà¾Cœk¿{œk¿Cœk ¿{œk ¿Cœk@¿{œk@¿Cœk`¿{œk`¿Cœk€¿{œk€¿Cœkƒ¿³œkƒ¿ƒœkƒ¿Ëœkƒ¿‹nƒ¿;:n ¿{œk ¿CœkÀ¿{œkÀ¿Cœkÿ“R¤ ÿ‹nà¿{œkà¿Cœkã¿““¤ ã¿‹nÀ{œkÀCœkÀKHmÀ{œkÀCœkÀ“Ô¤ À‹n À{œk ÀCœk!ÀKHm!À{œk!ÀCœk#À“¥ #À‹n@À{œk@ÀCœkCÀ“„¥ CÀ‹n`À{œk`ÀCœkaÀKHmaÀ{œkaÀCœkcÀ“ï¥ cÀ‹n€À{œk€ÀCœkÀKHmÀ{œkÀCœkƒÀ“X¦ ƒÀ‹n À{œk ÀCœk£À“¶¦ £À‹nÀÀ{œkÀÀCœkÃÀ“§ ÃÀ‹nàÀ{œkàÀCœkãÀ“[§ ãÀ‹nÁ{œkÁCœkÁ“ž§ Á‹n Á{œk ÁCœk#Á“á§ #Á‹n@Á{œk@ÁCœkCÁ“(¨ CÁ‹n`Á{œk`ÁCœkcÁ“o¨ cÁ‹n€Á{œk€ÁCœkƒÁ“¿¨ ƒÁ‹n Á{œk ÁCœk£Á“© £Á‹nÀÁ{œkÀÁCœkÃÁ“Q© ÃÁ‹nàÁ{œkàÁCœkáÁKHmáÁ{œkáÁCœkãÁ“¥© ãÁ‹nÂ{œkÂCœkÂKHmÂ{œkÂCœkÂ“è© Â‹n Â{œk ÂCœk#“[ª #‹n@Â{œk@ÂCœkC“˜ª C‹n`Â{œk`ÂCœkcÂ“åª c‹n€Â{œk€ÂCœkƒÂ“3« ƒÂ‹n Â{œk ÂCœk¡ÂKHm¡Â{œk¡ÂCœk£Â“´« £Â‹nÀÂ{œkÀÂCœkÁÂKHmÁÂ{œkÁÂCœkÓެ ËnàÂ{œkàÂCœkÃ{œkÃCœk Ã{œk ÃCœk@Ã{œk@ÃCœk`Ã{œk`ÃCœkaÃKHmaÃ{œkaÃCœk€Ã{œk€ÃCœkÃKHmÃ{œkÃCœk Ã{œk ÃCœkÀÃ{œkÀÃCœkàÃ{œkàÃCœkÄ{œkÄCœk Ä{œk ÄCœk@Ä{œk@ÄCœkAÄKHmAÄ{œkAÄCœk`Ä{œk`ÄCœk€Ä{œk€ÄCœk Ä{œk ÄCœkÀÄ{œkÀÄCœkàÄ{œkàÄCœkÅ{œkÅCœkÅKHmÅ{œkÅCœk Å{œk ÅCœk@Å{œk@ÅCœkAÅKHmAÅ{œkAÅCœk`Å{œk`ÅCœk€Å{œk€ÅCœkÅKHmÅ{œkÅCœk Å{œk ÅCœkÀÅ{œkÀÅCœkÁÅKHmÁÅ{œkÁÅCœkàÅ{œkàÅCœkÆ{œkÆCœkÆKHmÆ{œkÆCœkÆ‹nÆ;:n Æ{œk ÆCœk@ÆSkmCÆ‹nCÆ;:n`Æ{œk`ÆCœk€Æ{œk€ÆCœkƒÆ‹nƒÆ;:n Æ{œk ÆCœk©Æ{œk©ÆCœk©ÆKHmÀÆ{œkÀÆCœkÃÆ‹nÃÆ;:nÉÆ›ÇoÉÆ{œkÉÆCœkàÆ{œkàÆCœk鯛ÜoéÆ{œkéÆCœkÇ{œkÇCœkÇ‹nÇ;:n Ç›ío Ç{œk ÇCœk Ç{œk ÇCœk)ÇSËq@Ç{œk@ÇCœkCÇ‹nCÇ;:n`Ç{œk`ÇCœkiÇ;µÜ€ÇSkmƒÇ“2° ƒÇ‹n‰Ç;µÜ Ç{œk ÇCœk©Ç;µÜÀÇS~mÃÇ‹nÃÇ;:nÉÇ;µÜàÇ{œkàÇCœkéÇ;µÜÈ{œkÈCœkÈ“å° È‹n È;µÜ È{œk ÈCœk#È“=± #È‹n)È{œk)ÈCœk)ÈKHm@È{œk@ÈCœkIÈ›ÇoIÈ{œkIÈCœk`È{œk`ÈCœk€È{œk€ÈCœkƒÈ‹nƒÈ;:n È{œk ÈCœk£È‹n£È;:n©È{œk©ÈCœk©ÈKHmÀÈ{œkÀÈCœkÃÈ‹nÃÈ;:nÉÈ{œkÉÈCœkÉÈKHmàÈ{œkàÈCœkãÈ‹nãÈ;:néÈ{œkéÈCœkéÈKHmÉ{œkÉCœkÉ‹nÉ;:n É{œk ÉCœk ÉKHm É{œk ÉCœk)É{œk)ÉCœk)ÉKHm@É{œk@ÉCœkCÉ“b´ CÉ‹n`É{œk`ÉCœkcÉ“δ cÉ‹niÉ›ÇoiÉ{œkiÉCœkƒÉ“,µ ƒÉ‹n‰É›Üo‰É{œk‰ÉCœk£É“~µ £É‹n©É›¨n©É{œk©ÉCœkÃÉ“ ¶ ÃÉ‹nÉÉ›QpÉÉ{œkÉÉCœkéÉ›ÇoéÉ{œkéÉCœk Ê›Üo Ê{œk ÊCœk)Ê›¨n)Ê{œk)ÊCœkIÊ›QpIÊ{œkIÊCœkiÊ{œkiÊCœkiÊKHmÊKHmÊ{œkÊCœkƒÊ‹nƒÊ;:n‰Ê{œk‰ÊCœk‰ÊKHm¡ÊKHm¡Ê{œk¡ÊCœk£Ê‹n£Ê;:n©Ê{œk©ÊCœk©ÊKHmÁÊKHmÁÊ{œkÁÊCœkÃÊ‹nÃÊ;:nÉÊ{œkÉÊCœkÉÊKHmãÊ;‡séÊ{œkéÊCœkéÊKHmË;‡s!ËKHm!Ë{œk!ËCœk#ËËœk#Ë‹n#Ë;:nIË{œkIËCœkIËKHmcË“Á¹ cË‹niË›ÇoiË{œkiËCœkƒË“º ƒË‹n‰Ë›Üo‰Ë{œk‰ËCœkÁËKHmÁË{œkÁËCœkáËKHmáË{œkáËCœkÌKHmÌ{œkÌCœk)Ì{œk)ÌCœk)ÌKHmAÌKHmAÌ{œkAÌCœkIÌ{œkIÌCœkIÌKHmiÌ{œkiÌCœkiÌKHmÌKHmÌ{œkÌCœk‰Ì{œk‰ÌCœk‰ÌKHm¡ÌKHm¡Ì{œk¡ÌCœk©Ì{œk©ÌCœk©ÌKHmÁÌKHmÁÌ{œkÁÌCœkÃÌ;ÇùÉÌ{œkÉÌCœkÉÌKHmáÌKHmáÌ{œkáÌCœkéÌ›ÇoéÌ{œkéÌCœkÍKHmÍ{œkÍCœk Í›Üo Í{œk ÍCœk!ÍKHm!Í{œk!ÍCœk)Í›ío)Í{œk)ÍCœkAÍKHmAÍ{œkAÍCœkiÍ{œkiÍCœkiÍKHmÍKHmÍ{œkÍCœk‰Í{œk‰ÍCœk‰ÍKHm¡ÍKHm¡Í{œk¡ÍCœk©Í{œk©ÍCœk©ÍKHmÁÍKHmÁÍ{œkÁÍCœkÉÍ{œkÉÍCœkÉÍKHmáÍKHmáÍ{œkáÍCœkéÍ{œkéÍCœkéÍKHm Î{œk ÎCœk ÎKHm)Î{œk)ÎCœk)ÎKHmIÎ{œkIÎCœkIÎKHmiÎ{œkiÎCœkiÎKHm‰Î{œk‰ÎCœk‰ÎKHm©Î{œk©ÎCœk©ÎKHmÉÎ{œkÉÎCœkÉÎKHméÎ{œkéÎCœkéÎKHm Ï{œk ÏCœk ÏKHm)Ï{œk)ÏCœk)ÏKHmIÏ{œkIÏCœkIÏKHmaÏKHmaÏ{œkaÏCœkiÏ{œkiÏCœkiÏKHmÏKHmÏ{œkÏCœk‰Ï{œk‰ÏCœk‰ÏKHm©Ï{œk©ÏCœk©ÏKHmÉÏ{œkÉÏCœkÉÏKHméÏ{œkéÏCœkéÏKHmÐKHmÐ{œkÐCœk Ð{œk ÐCœk ÐKHm!ÐKHm!Ð{œk!ÐCœk)Ð{œk)ÐCœk)ÐKHmIЛ¨nIÐ{œkIÐCœkiЛoiÐ{œkiÐCœk‰Ð›V°‰Ð{œk‰ÐCœk©Ð›Òæ©Ð{œk©ÐCœkÉЛbçÉÐ{œkÉÐCœkéЛóçéÐ{œkéÐCœk Ñ›oý Ñ{œk ÑCœk)Ñ›Éý)Ñ{œk)ÑCœkIÑ›&þIÑ{œkIÑCœkaÑKHmaÑ{œkaÑCœkiÑ›˜þiÑ{œkiÑCœkÑKHmÑ{œkÑCœk‰Ñ›"ÿ‰Ñ{œk‰ÑCœk¡ÑKHm¡Ñ{œk¡ÑCœk©Ñ›ÿ©Ñ{œk©ÑCœkÁÑKHmÁÑ{œkÁÑCœkÉÑ›ÉÑ{œkÉÑCœkáÑKHmáÑ{œkáÑCœkéÑ›! éÑ{œkéÑCœkÒKHmÒ{œkÒCœk Ò›’ Ò{œk ÒCœk!ÒKHm!Ò{œk!ÒCœk#Ò;Çù)Ò›] )Ò{œk)ÒCœkAÒKHmAÒ{œkAÒCœkIÒ›Ò IÒ{œkIÒCœkaÒKHmaÒ{œkaÒCœkiÒ›` iÒ{œkiÒCœkÒKHmÒ{œkÒCœk‰Ò›2 ‰Ò{œk‰ÒCœk Ò“[¡ÒKHm¡Ò{œk¡ÒCœk©Ò›{` ©Ò{œk©ÒCœkÁÒKHmÁÒ{œkÁÒCœkÉÒ›ª ÉÒ{œkÉÒCœkáÒKHmáÒ{œkáÒCœkéÒ› éÒ{œkéÒCœkÓKHmÓ{œkÓCœk Ó› Ó{œk ÓCœk!ÓKHm!Ó{œk!ÓCœk)Ó›¨n)Ó{œk)ÓCœk@Ó{œk@ÓCœkAÓKHmAÓ{œkAÓCœkIÓ›oIÓ{œkIÓCœk`ÓSkmiÓ›V°iÓ{œkiÓCœk€Ó{œk€ÓCœk‰Ó›Òæ‰Ó{œk‰ÓCœk ÓS~m©Ó›bç©Ó{œk©ÓCœkÀÓ{œkÀÓCœkÃÓ;hvÉÓ›óçÉÓ{œkÉÓCœkàÓ{œkàÓCœkéÓ›oýéÓ{œkéÓCœkÔ{œkÔCœk Ô›Éý Ô{œk ÔCœk Ô{œk ÔCœk)Ô›&þ)Ô{œk)ÔCœk@Ô{œk@ÔCœkIÔ›˜þIÔ{œkIÔCœk`Ô{œk`ÔCœkiÔ›"ÿiÔ{œkiÔCœk€Ô{œk€ÔCœk‰Ô›ÿ‰Ô{œk‰ÔCœk Ô{œk ÔCœk©Ô›©Ô{œk©ÔCœkÀÔ{œkÀÔCœkÉÔ›! ÉÔ{œkÉÔCœkàÔ{œkàÔCœkéÔ›’ éÔ{œkéÔCœkÕ{œkÕCœk Õ›] Õ{œk ÕCœk Õ{œk ÕCœk)Õ›Ò )Õ{œk)ÕCœk@Õ{œk@ÕCœkAÕKHmAÕ{œkAÕCœkIÕ›` IÕ{œkIÕCœk`Õ{œk`ÕCœkiÕ›2 iÕ{œkiÕCœk€Õ{œk€ÕCœkÕKHmÕ{œkÕCœk‰Õ›{` ‰Õ{œk‰ÕCœk Õ{œk ÕCœk©Õ›ª ©Õ{œk©ÕCœkÀÕ{œkÀÕCœkÉÕ› ÉÕ{œkÉÕCœkàÕ{œkàÕCœkéÕ› éÕ{œkéÕCœkÖ{œkÖCœk Ö{œk ÖCœk ÖKHm Ö{œk ÖCœk)Ö{œk)ÖCœk)ÖKHm@Ö{œk@ÖCœkIÖ{œkIÖCœkIÖKHm`Ö{œk`ÖCœkaÖKHmaÖ{œkaÖCœkiÖ{œkiÖCœkiÖKHm€Ö{œk€ÖCœkÖKHmÖ{œkÖCœk‰Ö{œk‰ÖCœk‰ÖKHm Ö{œk ÖCœk¡ÖKHm¡Ö{œk¡ÖCœk©Ö{œk©ÖCœk©ÖKHmÀÖ{œkÀÖCœkÉÖ{œkÉÖCœkÉÖKHmãÖ;hvéÖ{œkéÖCœkéÖKHm×;hv ×{œk ×Cœk ×KHm#×;hv)×{œk)×Cœk)×KHmI×›ÇoI×{œkI×Cœki×›Üoi×{œki×Cœk‰×›¨n‰×{œk‰×Cœk©×›Qp©×{œk©×CœkÉ×›bpÉ×{œkÉ×Cœké×›oé×{œké×CœkØKHmØ{œkØCœk Ø›q Ø{œk ØCœk)Ø›V°)Ø{œk)ØCœkIØ›ˆIØ{œkIØCœkiØ›÷DiØ{œkiØCœk‰Ø›Òæ‰Ø{œk‰ØCœk©Ø›E©Ø{œk©ØCœkÁØKHmÁØ{œkÁØCœkÉØ›®EÉØ{œkÉØCœkáØKHmáØ{œkáØCœk騛óçéØ{œkéØCœkÙKHmÙ{œkÙCœkÙ ‰Â Ù;âø Ù›oý Ù{œk ÙCœk!ÙKHm!Ù{œk!ÙCœk)Ù› ³)Ù{œk)ÙCœkAÙKHmAÙ{œkAÙCœkIÙ›ÇoIÙ{œkIÙCœkaÙKHmaÙ{œkaÙCœkiÙ›ÜoiÙ{œkiÙCœkÙKHmÙ{œkÙCœk‰Ù›¨n‰Ù{œk‰ÙCœk£Ù ‰Â £Ù;âø©Ù›Qp©Ù{œk©ÙCœkÁÙKHmÁÙ{œkÁÙCœkÉÙ›bpÉÙ{œkÉÙCœkáÙKHmáÙ{œkáÙCœkãÙ;âøéÙ›oéÙ{œkéÙCœk Ú›q Ú{œk ÚCœk!ÚKHm!Ú{œk!ÚCœk#Ú;‡s)Ú›V°)Ú{œk)ÚCœkCÚ;‡sIÚ›ˆIÚ{œkIÚCœkcÚ‹ncÚ;:niÚ›÷DiÚ{œkiÚCœk‰Ú›Òæ‰Ú{œk‰ÚCœk£Ú“ÌÎ £Ú‹n©Ú›E©Ú{œk©ÚCœkÁÚKHmÁÚ{œkÁÚCœkÃÚ“ Ï ÃÚ‹nÉÚ›®EÉÚ{œkÉÚCœkáÚKHmáÚ{œkáÚCœkãÚ“ŒÏ ãÚ‹néÚ›óçéÚ{œkéÚCœkÛKHmÛ{œkÛCœk Û›oý Û{œk ÛCœk)Û› ³)Û{œk)ÛCœkIÛ{œkIÛCœkIÛKHmaÛKHmaÛ{œkaÛCœkcÛ‹ncÛ;:niÛ{œkiÛCœkiÛKHm‰Û{œk‰ÛCœk‰ÛKHm¡ÛKHm¡Û{œk¡ÛCœk£Û“bÑ £Û‹n©Û{œk©ÛCœk©ÛKHmÃÛ“ìÑ ÃÛ‹nÉÛ{œkÉÛCœkÉÛKHméÛ{œkéÛCœkéÛKHm Ü{œk ÜCœk ÜKHm#Ü;‡s)Ü{œk)ÜCœk)ÜKHmCÜ;‡sIÜ{œkIÜCœkIÜKHmcÜ;‡siÜ{œkiÜCœkiÜKHmƒÜ‹nƒÜ;:n‰Ü{œk‰ÜCœk‰ÜKHm©Ü{œk©ÜCœk©ÜKHmÃÜ“~Ý ÃÜ‹nÉÜ{œkÉÜCœkÉÜKHmãÜ“ÒÝ ãÜ‹néÜ{œkéÜCœkéÜKHmÝ“+Þ Ý‹n Ý{œk ÝCœk ÝKHm#Ý“{Þ #Ý‹n)Ý{œk)ÝCœk)ÝKHmCÝ“ËÞ CÝ‹nIÝ{œkIÝCœkIÝKHmcÝ“$ß cÝ‹niÝ{œkiÝCœkiÝKHmƒÝ“xß ƒÝ‹n‰Ý{œk‰ÝCœk‰ÝKHm Ý{œk ÝCœk¡ÝKHm¡Ý{œk¡ÝCœk£Ý“Ëß £Ý‹n©Ý{œk©ÝCœk©ÝKHmÀÝ{œkÀÝCœkÃÝ“à ÃÝ‹nÉÝ{œkÉÝCœkÉÝKHmãÝ“ià ãÝ‹néÝ{œkéÝCœkéÝKHmÞ“¸à Þ‹n Þ{œk ÞCœk ÞKHm#Þ“á #Þ‹n)Þ{œk)ÞCœk)ÞKHmCÞ“Vá CÞ‹nIÞ{œkIÞCœkIÞKHmcÞ“£á cÞ‹niÞ›ÇoiÞ{œkiÞCœkƒÞ“ñá ƒÞ‹n‰Þ›Ço‰Þ{œk‰ÞCœk Þ“Îk¡ÞKHm¡Þ{œk¡ÞCœk£Þ“>â £Þ‹n©Þ{œk©ÞCœk©ÞKHmÁÞKHmÁÞ{œkÁÞCœkÃÞ“Œâ ÃÞ‹nÉÞ{œkÉÞCœkÉÞKHmáÞKHmáÞ{œkáÞCœkãÞ“Ûâ ãÞ‹néÞ{œkéÞCœkéÞKHmßKHmß{œkßCœkß“)ã ß‹n ß{œk ßCœk ßKHm#ß“xã #ß‹n)ß›Ço)ß{œk)ßCœkCß“Æã Cß‹nIß›ÇoIß{œkIßCœkaßKHmaß{œkaßCœkcß“jä cß‹niß{œkißCœkißKHmßKHmß{œkßCœkƒß“ºä ƒß‹n‰ß{œk‰ßCœk‰ßKHm£ß“$å £ß‹n©ß{œk©ßCœk©ßKHmÃß“Ÿå Ãß‹nÉß{œkÉßCœkÉßKHmãß“æ ãß‹néß›Çoéß{œkéßCœkà“uæ à‹n à›Ço à{œk àCœk à“})à{œk)àCœk)àKHm@à“ØIà{œkIàCœkIàKHm`à“Øià{œkiàCœkiàKHm€à“ׂàKHmà{œkàCœk‰à{œk‰àCœk‰àKHm à{œk©à›Ço©à{œk©àCœkÀà{œkÉà›ÇoÉà{œkÉàCœkàà“Îkéà{œkéàCœkéàKHmá“Îk á{œk áCœk áKHm á“Îk)á{œk)áCœk)áKHm@á“ØIá{œkIáCœkIáKHm`á“Îkiá›Çoiá{œkiáCœk‰á›Ço‰á{œk‰áCœk¡áKHm¡á{œk¡áCœk©á{œk©áCœk©áKHmÉá{œkÉáCœkÉáKHméá{œkéáCœkéáKHm â{œk âCœk âKHm!âKHm!â{œk!âCœk)â{œk)âCœk)âKHmAâKHmAâ{œkAâCœkIâ{œkIâCœkIâKHm`â“ÎkaâKHmaâ{œkaâCœkiâ{œkiâCœkiâKHm€â“!×âKHmâ{œkâCœk‰â{œk‰âCœk‰âKHm â“Q‹¡âKHm¡â{œk¡âCœk©â{œk©âCœk©âKHmÀâ“Q‹ÁâKHmÁâ{œkÁâCœkÉâ{œkÉâCœkÉâKHmàâ“!×áâKHmáâ{œkáâCœkéâ›Çoéâ{œkéâCœkã{œkãKHmã{œkãCœk ã›Ço ã{œk ãCœk ã“ׂ!ãKHm!ã{œk!ãCœk)ã{œk)ãCœk)ãKHm@ã{œkIã›ÇoIã{œkIãCœk`ã“ÎkaãKHmaã{œkaãCœkiã{œkiãCœkiãKHm€ã“!×ãKHmã{œkãCœkƒã‹nƒã;:n‰ã{œk‰ãCœk‰ãKHm ã“!סãKHm¡ã{œk¡ãCœk©ã{œk©ãCœk©ãKHmÀ㓤lÁãKHmÁã{œkÁãCœkÃã“Èê Ãã‹nÉã{œkÉãCœkÉãKHmà㓤láãKHmáã{œkáãCœkãã“Dë ãã‹néã{œkéãCœkéãKHm䓤läKHmä{œkäCœkä“•ë ä‹n ä{œk äCœk äKHm 䓤l!äKHm!ä{œk!äCœk#ä“îë #ä‹n)ä{œk)äCœk)äKHm@䓤lAäKHmAä{œkAäCœkCä“^ì Cä‹nIä{œkIäCœkIäKHmaäKHmaä{œkaäCœkcä“»ì cä‹niä›Çoiä{œkiäCœk€ä“¤läKHmä{œkäCœkƒä“í ƒä‹n‰ä›Üo‰ä{œk‰äCœk ä“Îk¡äKHm¡ä{œk¡äCœk©ä{œk©äCœk©äKHmÀä“ÎkÁäKHmÁä{œkÁäCœkÉä{œkÉäCœkÉäKHmàä“Îkéä{œkéäCœkéäKHmå“«åKHmå{œkåCœk å{œk åCœk åKHm å“«!åKHm!å{œk!åCœk)å{œk)åCœk)åKHm@哨AåKHmAå{œkAåCœkIå{œkIåCœkIåKHm`哨aåKHmaå{œkaåCœkiå{œkiåCœkiåKHm€å“ׂåKHmå{œkåCœk‰å{œk‰åCœk‰åKHm¡åKHm¡å{œk¡åCœk©å{œk©åCœk©åKHmÁåKHmÁå{œkÁåCœkÉå{œkÉåCœkÉåKHmáåKHmáå{œkáåCœkéå{œkéåCœkéåKHmæ“üæKHmæ{œkæCœk æ{œk æCœk æKHm 擤l!æKHm!æ{œk!æCœk)æ›Ço)æ{œk)æCœk@æ“!×AæKHmAæ{œkAæCœkIæ›ÜoIæ{œkIæCœk`æ“ׂaæKHmaæ{œkaæCœki曨niæ{œkiæCœk€æ“ׂæKHmæ{œkæCœk‰æ›Qp‰æ{œk‰æCœk æ“ׂ¡æKHm¡æ{œk¡æCœk©æ›o©æ{œk©æCœkÀæ“ׂÁæKHmÁæ{œkÁæCœkÃæ;‡sÉæ›qÉæ{œkÉæCœkàæ“ׂáæKHmáæ{œkáæCœkãæ‹nãæ;:néæ›V°éæ{œkéæCœkç“ׂçKHmç{œkçCœk 盈 ç{œk çCœk!çKHm!ç{œk!çCœk#ç“Öï #ç‹n)ç›Òæ)ç{œk)çCœk@ç“ÎkAçKHmAç{œkAçCœkCç“/ð Cç‹nIç›EIç{œkIçCœk`ç“Îkcç“„ð cç‹niç›bçiç{œkiçCœk‰ç›,²‰ç{œk‰çCœk ç“Ø©ç›óç©ç{œk©çCœkÀç“ØÉ盫ãÉç{œkÉçCœkàç“ØáçKHmáç{œkáçCœkéç›MÍ éç{œkéçCœkè“ÎkèKHmè{œkèCœk è›oý è{œk èCœk!èKHm!è{œk!èCœk)è› ³)è{œk)èCœk@è“ÎkAèKHmAè{œkAèCœkIè›)äIè{œkIèCœk`è“ØaèKHmaè{œkaèCœkiè›Éýiè{œkièCœk€è“!×èKHmè{œkèCœk‰è›Àä‰è{œk‰èCœk¡èKHm¡è{œk¡èCœk£è;âø©è›FÎ ©è{œk©èCœkÁèKHmÁè{œkÁèCœkÃè;‡sÉè›&þÉè{œkÉèCœkàè“t)áèKHmáè{œkáèCœkãè;Çùéè›I éè{œkéèCœké;‡s 雾Πé{œk éCœk é“Í*!éKHm!é{œk!éCœk)雘þ)é{œk)éCœk@é“ÎkAéKHmAé{œkAéCœkIé›Ä Ié{œkIéCœk`é“ÎkaéKHmaé{œkaéCœkié›2Ï ié{œkiéCœk€é“ØéKHmé{œkéCœkƒé;âø‰é›Ço‰é{œk‰éCœk é{œk éCœk¡éKHm¡é{œk¡éCœk©é›Üo©é{œk©éCœkÀé“ÎkÁéKHmÁé{œkÁéCœkÉ雨nÉé{œkÉéCœkàé“ÎkáéKHmáé{œkáéCœkéé›Qpéé{œkééCœkê“ÎkêKHmê{œkêCœk ê›o ê{œk êCœk ê“!×)ê›q)ê{œk)êCœk@ê“ׂAêKHmAê{œkAêCœkCê;âøIê›V°Iê{œkIêCœk`ê“Í*aêKHmaê{œkaêCœkcêÓœkcê;4miꛈiê{œkiêCœkêKHmê{œkêCœkƒêÓœkƒê;4m‰ê›Òæ‰ê{œk‰êCœk¡êKHm¡ê{œk¡êCœk£ê;‡s©ê›E©ê{œk©êCœkÁêKHmÁê{œkÁêCœkÉê›bçÉê{œkÉêCœkàê“ÎkáêKHmáê{œkáêCœkãê;hvéê›,²éê{œkéêCœkëKHmë{œkëCœkë;hv ë›óç ë{œk ëCœk ë“ׂ!ëKHm!ë{œk!ëCœk#ë;âø)뛫ã)ë{œk)ëCœk@ë“j4AëKHmAë{œkAëCœkCë‹nCë;:nIë›MÍ Ië{œkIëCœk`ë“ØaëKHmaë{œkaëCœkië›oýië{œkiëCœk€ë“ׂëKHmë{œkëCœk‰ë› ³‰ë{œk‰ëCœk ë“!סëKHm¡ë{œk¡ëCœk©ë›)ä©ë{œk©ëCœkÀë“j4ÁëKHmÁë{œkÁëCœkÉë›ÉýÉë{œkÉëCœkáëKHmáë{œkáëCœkéë›Àäéë{œkéëCœkì“–6ìKHmì{œkìCœk ì›FÎ ì{œk ìCœk ì“j4!ìKHm!ì{œk!ìCœk#ì;âø)ì›&þ)ì{œk)ìCœk@ì“–6AìKHmAì{œkAìCœkIì›I Iì{œkIìCœk`ì“þ7aìKHmaì{œkaìCœkcì‹ncì;:ni웾Πiì{œkiìCœk€ì“j4ìKHmì{œkìCœk‰ì›˜þ‰ì{œk‰ìCœk ì“j4©ì›Ä ©ì{œk©ìCœkÀì“–6Éì›2Ï Éì{œkÉìCœkàì“¢9ãì‹nãì;:néì{œkéìCœkéìKHmí“–6íKHmí{œkíCœk í{œk íCœk íKHm í“]:!íKHm!í{œk!íCœk#í“0#í‹n)í{œk)íCœk)íKHm@í“–6AíKHmAí{œkAíCœkCí“sCí‹nIí{œkIíCœkIíKHm`í“]:c퓸cí‹nií{œkiíCœkiíKHm€í“–6ƒí“ƒí‹n‰í{œk‰íCœk‰íKHm í“í;£í“Z£í‹n©í{œk©íCœk©íKHmÀí“–6Ãí“ Ãí‹nÉí{œkÉíCœkÉíKHmàí“j4ãí“åãí‹néí{œkéíCœkéíKHmî“–6î“+î‹n î{œk îCœk îKHm î“]:!îKHm!î{œk!îCœk#î“s#î‹n)î{œk)îCœk)îKHm@î“j4AîKHmAî{œkAîCœkCî“»Cî‹nIî{œkIîCœkIîKHm`î“–6aîKHmaî{œkaîCœkcî“cî‹niî{œkiîCœkiîKHm€î“=îKHmî{œkîCœkƒî“Aƒî‹n‰î{œk‰îCœk‰îKHm î“y=¡îKHm¡î{œk¡îCœk£î“ˆ£î‹n©î{œk©îCœk©îKHmÀî“Q‹ÁîKHmÁî{œkÁîCœkÃî“ÊÃî‹nÉî{œkÉîCœkÉîKHmàî“Q‹áîKHmáî{œkáîCœkãî“ ãî‹nï{œkïKHmï{œkïCœkï“zï‹n ï›Ço ï{œk ïCœk!ïKHm!ï{œk!ïCœk#ï“Í#ï‹n)n)ï{œk)ïCœkAïKHmAï{œkAïCœkCï“ Cï‹nIï›QpIï{œkIïCœkaïKHmaï{œkaïCœkcï“w cï‹niï›bpiï{œkiïCœk€ï“]:ïKHmï{œkïCœkƒï“Î ƒï‹n‰ï›sp‰ï{œk‰ïCœk¡ïKHm¡ï{œk¡ïCœk£ï“!!£ï‹n©ï›„p©ï{œk©ïCœkÀï“Q‹ÁïKHmÁï{œkÁïCœkÃï“r!Ãï‹nÉpÉï{œkÉïCœkàï“–6áïKHmáï{œkáïCœkãï“Æ!ãï‹néï›ãéï{œkéïCœkðKHmð{œkðCœkð“"ð‹n ð›o ð{œk ðCœk ð“–6!ðKHm!ð{œk!ðCœk#ð“h"#ð‹n)ð›q)ð{œk)ðCœk@ð“øGAðKHmAð{œkAðCœkCð“Ò"Cð‹nIð›(qIð{œkIðCœk`ð“RHaðKHmað{œkaðCœkcð“%#cð‹nið›Bið{œkiðCœk€ð“í;ðKHmð{œkðCœkƒð“y#ƒð‹n‰ð›ÅX‰ð{œk‰ðCœk ð“ˆI¡ðKHm¡ð{œk¡ðCœk£ð“Ê#£ð‹n©ð›°©ð{œk©ðCœkÀð“–6ÁðKHmÁð{œkÁðCœkÃð“$Ãð‹nÉð›0°Éð{œkÉðCœkàð“3JáðKHmáð{œkáðCœkãð“p$ãð‹néð›V°éð{œkéðCœkñ“Æ$ñ‹n ñ›ˆ ñ{œk ñCœk#ñ“%#ñ‹n)ñ›Òæ)ñ{œk)ñCœkCñ“p%Cñ‹nIñ›EIñ{œkIñCœk`ñ“]:cñ“Ã%cñ‹niñ›®Eiñ{œkiñCœkƒñ“&ƒñ‹n‰ñ›bç‰ñ{œk‰ñCœk ñ“–6£ñ“Œ&£ñ‹n©ñ›,²©ñ{œk©ñCœkÀñ“OÁñKHmÁñ{œkÁñCœkÃñ“ú&Ãñ‹nÉñ›=²Éñ{œkÉñCœkàñ“Q‹áñKHmáñ{œkáñCœkãñ“L'ãñ‹néñ›óçéñ{œkéñCœkò“¢OòKHmò{œkòCœkò“Ê'ò‹n ò›«ã ò{œk òCœk ò“j4!òKHm!ò{œk!òCœk#ò“@(#ò‹n)ò›oý)ò{œk)òCœk@ò“¢9AòKHmAò{œkAòCœkCò“‘(Cò‹nIò›ÉýIò{œkIòCœk`ò“¢9aòKHmaò{œkaòCœkcò“ñ(cò‹niò›Àäiò{œkiòCœk€ò“j4òKHmò{œkòCœkƒò“P)ƒò‹n‰ò›FÎ ‰ò{œk‰òCœk ò“1Q¡òKHm¡ò{œk¡òCœk£ò“ª)£ò‹n©ò›&þ©ò{œk©òCœkÀò“ØÁòKHmÁò{œkÁòCœkÃò“*Ãò‹nÉò›I Éò{œkÉòCœkàò“ׂáòKHmáò{œkáòCœkãò“e*ãò‹néò›˜þéò{œkéòCœkó“ׂóKHmó{œkóCœkó“»*ó‹n ó›Ä ó{œk óCœk ó“Îk!óKHm!ó{œk!óCœk#ó“+#ó‹n)ó›2Ï )ó{œk)óCœk@ó“¤lAóKHmAó{œkAóCœkCó“p+Có‹nIó›"ÿIó{œkIóCœk`ó“[aóKHmaó{œkaóCœkcó“Í+có‹nió›6 ió{œkióCœk€ó“ÜTóKHmó{œkóCœkƒó“,,ƒó‹n‰ó›ÃÏ ‰ó{œk‰óCœk ó“Ø£ó“~,£ó‹n©ó›ÿ©ó{œk©óCœkÃó“Ù,Ãó‹nÉó›y  Éó{œkÉóCœkàó“Îkãó“,-ãó‹néó›éó{œkéóCœk ô›8 ô{œk ôCœk ô“¤l)ô›! )ô{œk)ôCœkIô›2 Iô{œkIôCœk`ô“ ZaôKHmaô{œkaôCœkiô›ƒiô{œkiôCœk€ô“RHôKHmô{œkôCœk‰ô›Ço‰ô{œk‰ôCœk ô“Å]¡ôKHm¡ô{œk¡ôCœk©ô›¨n©ô{œk©ôCœkÀô“ØÁôKHmÁô{œkÁôCœkÉô›QpÉô{œkÉôCœkàô“ØáôKHmáô{œkáôCœkéô›bpéô{œkéôCœkõ“!×õKHmõ{œkõCœk õ›sp õ{œk õCœk õ“1Q!õKHm!õ{œk!õCœk)õ›„p)õ{œk)õCœk@õ“Q‹AõKHmAõ{œkAõCœkIõ›špIõ{œkIõCœk`õ“ØaõKHmaõ{œkaõCœkiõ›ãiõ{œkiõCœk€õ“¤lõKHmõ{œkõCœk‰õ›o‰õ{œk‰õCœk õ“!סõKHm¡õ{œk¡õCœk©õ›q©õ{œk©õCœkÁõKHmÁõ{œkÁõCœkÉõ›(qÉõ{œkÉõCœkéõ›Béõ{œkéõCœk ö›ÅX ö{œk öCœk ö“!×!öKHm!ö{œk!öCœk)ö›°)ö{œk)öCœk@ö“ØAöKHmAö{œkAöCœkIö›0°Iö{œkIöCœk`ö“ׂaöKHmaö{œkaöCœkiö›V°iö{œkiöCœk€ö“h‰ö›ˆ‰ö{œk‰öCœk ö“–6©ö›Òæ©ö{œk©öCœkÉö›EÉö{œkÉöCœkàö“Q‹éö›®Eéö{œkéöCœk÷“í; ÷›bç ÷{œk ÷Cœk ÷“úi!÷KHm!÷{œk!÷Cœk)÷›,²)÷{œk)÷Cœk@÷“ÎkA÷KHmA÷{œkA÷CœkI÷›=²I÷{œkI÷Cœk`÷“ªka÷KHma÷{œka÷Cœki÷›óçi÷{œki÷Cœk€÷“Îk÷KHm÷{œk÷Cœk‰÷›«ã‰÷{œk‰÷Cœk ÷“ño¡÷KHm¡÷{œk¡÷Cœk©÷›oý©÷{œk©÷CœkÀ÷“¤lÁ÷KHmÁ÷{œkÁ÷CœkÉ÷›ÉýÉ÷{œkÉ÷Cœkà÷“ué÷›Àäé÷{œké÷Cœkø{œk ø›FÎ ø{œk øCœk ø{œk)ø›&þ)ø{œk)øCœk@ø“äwIø›I Iø{œkIøCœk`ø“•yiø›˜þiø{œkiøCœkøKHmø{œkøCœk‰ø›Ä ‰ø{œk‰øCœk ø“äw©ø›2Ï ©ø{œk©øCœkÀø“|Éø›"ÿÉø{œkÉøCœkáøKHmáø{œkáøCœkéø›6 éø{œkéøCœkù“1QùKHmù{œkùCœk ù›ÃÏ ù{œk ùCœk ù“j4!ùKHm!ù{œk!ùCœk)ù›ÿ)ù{œk)ùCœkAùKHmAù{œkAùCœkIù›y  Iù{œkIùCœk`ù“ׂiù›iù{œkiùCœk€ù“ׂ‰ù›8‰ù{œk‰ùCœk ù“Îk©ù›! ©ù{œk©ùCœkÉù›2 Éù{œkÉùCœkàù“¤láùKHmáù{œkáùCœkéù›ƒéù{œkéùCœkúKHmú{œkúCœk ú{œk úCœk úKHm ú“Îk)ú{œk)úCœk)úKHm@ú“ÎkIú{œkIúCœkIúKHm`ú“¤liú{œkiúCœkiúKHm€ú“ׂ‰ú{œk‰úCœk‰úKHm ú“¾„©ú{œk©úCœk©úKHmÀú“Q‹Éú{œkÉúCœkÉúKHmàú“[ãú‹nãú;:néú{œkéúCœkéúKHmû“Ø û{œk ûCœk ûKHm#û‹n#û;:n)û{œk)ûCœk)ûKHm@û{œkIû{œkIûCœkIûKHm`û“-‹iû{œkiûCœkiûKHm‰û{œk‰ûCœk‰ûKHm û“ׂ©û{œk©ûCœk©ûKHmÀû“j4Éû{œkÉûCœkÉûKHmàû“!×éû{œkéûCœkéûKHmü“¢9 ü{œk üCœk üKHm ü“!×)ü{œk)üCœk)üKHm@ü“!×Iü{œkIüCœkIüKHm`ü“Øiü{œkiüCœkiüKHm€ü“Îk‰ü{œk‰üCœk‰üKHm ü“Ø©ü{œk©üCœk©üKHmÀü“ÎkÉü{œkÉüCœkÉüKHmàü“Øéü{œkéüCœkéüKHmý“Ø ý{œk ýCœk ýKHm ý“Ø)ý{œk)ýCœk)ýKHm@ý“Q‹Iý{œkIýCœkIýKHm`ý“Öiý{œkiýCœkiýKHm€ý“¤l‰ý{œk‰ýCœk‰ýKHm ý“!סýKHm¡ý{œk¡ýCœk©ý{œk©ýCœk©ýKHmÀý“!×Éý{œkÉýCœkÉýKHmàý“ׂáýKHmáý{œkáýCœkéý{œkéýCœkéýKHmþ“¯þKHmþ{œkþCœk þ{œk þCœk þKHm þ“H!þKHm!þ{œk!þCœk)þ{œk)þCœk)þKHm@þ“Iþ{œkIþCœkIþKHm`þ“iþ{œkiþCœkiþKHm€þ“‰þ{œk‰þCœk‰þKHm þ“Ý‘©þ{œk©þCœk©þKHmÀþ“u’Éþ{œkÉþCœkÉþKHmàþ“[éþ{œkéþCœkéþKHmÿ{œk ÿ{œk ÿCœk ÿKHm ÿ{œk)ÿ{œk)ÿCœk)ÿKHm@ÿ“¤lAÿKHmAÿ{œkAÿCœkIÿ{œkIÿCœkIÿKHm`ÿ“ׂiÿ{œkiÿCœkiÿKHm€ÿ“ØÿKHmÿ{œkÿCœk‰ÿ{œk‰ÿCœk‰ÿKHm ÿ“Îk©ÿ{œk©ÿCœk©ÿKHmÀÿ“ׂÉÿ{œkÉÿCœkÉÿKHméÿ{œkéÿCœkéÿKHm“!×KHm{œkCœk {œk Cœk KHm “!×){œk)Cœk)KHm@“!×AKHmA{œkACœkI{œkICœkIKHm`“!×aKHma{œkaCœki{œkiCœkiKHm€“¤lKHm{œkCœk‰{œk‰Cœk‰KHm “¤l¡KHm¡{œk¡Cœk©{œk©Cœk©KHmÀ“}ÁKHmÁ{œkÁCœkÉ{œkÉCœkÉKHmà“ÎkáKHmá{œkáCœké{œkéCœkéKHm“ׂKHm{œkCœk {œk Cœk KHm {œk!KHm!{œk!Cœk){œk)Cœk)KHm@{œk`“!×€“¤lKHm{œkCœk “ׂ¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkÉ›ÇoÉ{œkÉCœké›Üoé{œkéCœk ›ío {œk Cœk)›–S){œk)Cœk@“¤lAKHmA{œkACœkI›¨nI{œkICœk`“ׂi›Qpi{œkiCœk‰›bp‰{œk‰Cœk¡KHm¡{œk¡Cœk©›sp©{œk©CœkÉ›„pÉ{œkÉCœkáKHmá{œkáCœké›oé{œkéCœkKHm{œkCœk ›q {œk Cœk!KHm!{œk!Cœk)›V°){œk)CœkAKHmA{œkACœkI›ˆI{œkICœkaKHma{œkaCœki›÷Di{œkiCœk‰›Òæ‰{œk‰Cœk©›E©{œk©CœkÉ›®EÉ{œkÉCœké›bçé{œkéCœkKHm{œkCœk ›,² {œk Cœk!KHm!{œk!Cœk)›=²){œk)CœkAKHmA{œkACœkI›óçI{œkICœkaKHma{œkaCœki›«ãi{œkiCœkKHm{œkCœk‰›MÍ ‰{œk‰Cœk¡KHm¡{œk¡Cœk©›^Í ©{œk©CœkÀ“ÎkÁKHmÁ{œkÁCœkÉ›oýÉ{œkÉCœkà“ÎkáKHmé› ³é{œkéCœk“ÎkKHm ›)ä {œk Cœk “Îk!KHm)›:ä){œk)Cœk@“ÎkAKHmI›ÉýI{œkICœk`{œkaKHmi›Àäi{œkiCœk€{œkKHm‰›FÎ ‰{œk‰Cœk¡KHm©›« ©{œk©CœkÁKHmÉ›È É{œkÉCœkáKHmé›ò é{œkéCœkKHm ›&þ {œk Cœk!KHm)›I ){œk)CœkI›¾Î I{œkICœkaKHma{œkaCœki›ºž i{œkiCœk‰›˜þ‰{œk‰Cœk©›Ä ©{œk©CœkÉ›2Ï É{œkÉCœké›CÏ é{œkéCœk ›Þ! {œk Cœk {œk)›ï!){œk)Cœk@{œkI›"I{œkICœk`{œki›"ÿi{œkiCœk€{œk‰›6 ‰{œk‰Cœk {œk©›ÃÏ ©{œk©CœkÁKHmÁ{œkÁCœkɛޟ É{œkÉCœkà{œkàCœké›z"é{œkéCœkSkm ›‹" {œk Cœk {œk Cœk)›œ"){œk)Cœk@S~mAKHmA{œkACœkI›ÿI{œkICœk`{œk`CœkaKHma{œkaCœki›y  i{œkiCœk€{œk€CœkKHm{œkCœk‰›Š  ‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›©{œk©CœkÀ{œkÁKHmÁ{œkÁCœkÉ›8É{œkÉCœkà{œkáKHmá{œkáCœk集Рé{œkéCœk {œk KHm {œk Cœk ›—Ð {œk Cœk {œk! KHm! {œk! Cœk) ›! ) {œk) Cœk@ {œkA KHmA {œkA CœkI ›2 I {œkI Cœk` {œka KHma {œka Cœki ›ƒi {œki Cœk€ {œk KHm‰ ›Ø#‰ {œk‰ Cœk  {œk¡ KHm© ›é#© {œk© CœkÁ KHmÉ ›’ É {œkÉ Cœká KHmé ›± é {œké Cœk ›Î {œk Cœk) ›d$) {œk) CœkI ›u$I {œkI Cœki ›] i {œki Cœk‰ ›n ‰ {œk‰ Cœk© ›õ$© {œk© CœkÉ ›%É {œkÉ Cœké ›%é {œké Cœk KHm {œk Cœk ›Ò {œk Cœk! KHm! {œk! Cœk) ›` ) {œk) CœkI ›2 I {œkI Cœki ›{` i {œki Cœk KHm {œk Cœk‰ ›ª ‰ {œk‰ Cœk© ›”© © {œk© CœkÉ ›&É {œkÉ Cœké ›&é {œké Cœk ›%& {œk Cœk! KHm! {œk! Cœk) › ) {œk) CœkA KHmA {œkA CœkI › I {œkI Cœka KHma {œka Cœki ›&i {œki Cœk KHm {œk Cœk‰ ›ž&‰ {œk‰ Cœk© ›¯&© {œk© CœkÉ ›À&É {œkÉ Cœkà {œkà Cœké ›Ñ&é {œké Cœk Skm ›t {œk Cœk {œk Cœk! KHm! {œk! Cœk) ›… ) {œk) Cœk@ S~mA KHmA {œkA CœkI ›W'I {œkI Cœk` {œk` Cœki ›h'i {œki Cœk€ {œk€ Cœk‰ ›y'‰ {œk‰ Cœk  {œk  Cœk© ›é © {œk© CœkÀ {œkÁ KHmÁ {œkÁ CœkÉ ›æ'É {œkÉ Cœkà {œká KHmá {œká Cœké ›÷'é {œké Cœk{œkKHm{œkCœk ›( {œk Cœk {œk!KHm!{œk!Cœk)›(){œk)Cœk@{œkI›*(I{œkICœk`{œkaKHma{œkaCœki›;(i{œkiCœk€{œkKHm{œkCœk‰›b ‰{œk‰Cœk {œk©›¹(©{œk©CœkÉ›Ê(É{œkÉCœké›Û(é{œkéCœk ›ì( {œk Cœk)›yb ){œk)CœkI›Šb I{œkICœki›øb i{œkiCœk€{œk‰› c ‰{œk‰Cœk {œk©›"c ©{œk©CœkÀ{œkÉ›ž)É{œkÉCœkà{œk雯)é{œkéCœk{œk ›§c {œk Cœk {œk)›¸c ){œk)Cœk@{œkAKHmA{œkACœkI›**I{œkICœk`{œki›;*i{œkiCœk‰›L*‰{œk‰Cœk©›]*©{œk©CœkÉ›n*É{œkÉCœké›Ôª é{œkéCœk ›"« {œk Cœk)›7+){œk)CœkAKHmA{œkACœkI›Y+I{œkICœkaKHma{œkaCœki›j+i{œkiCœkKHm{œkCœk‰›|« ‰{œk‰Cœk¡KHm¡{œk¡Cœk©›« ©{œk©CœkÁKHmÁ{œkÁCœkÉ›í+É{œkÉCœkáKHmá{œkáCœké›ô« é{œkéCœkKHm{œkCœk ›¬ {œk Cœk)›¬ ){œk)CœkI›'¬ I{œkICœkaKHma{œkaCœki›}å i{œkiCœkKHm{œkCœk‰›±,‰{œk‰Cœk¡KHm¡{œk¡Cœk©›Â,©{œk©CœkÁKHmÁ{œkÁCœkÉ›Ó,É{œkÉCœkà{œkàCœkáKHmá{œkáCœké›=-é{œkéCœkSkm ›N- {œk Cœk {œk Cœk)›_-){œk)Cœk@S~mI›p-I{œkICœk`{œk`Cœki›å-i{œkiCœk€{œk€Cœk‰›ö-‰{œk‰Cœk {œk Cœk©›.©{œk©CœkÀ{œkÉ›.É{œkÉCœkà{œké›).é{œkéCœk{œk ›:. {œk Cœk {œk)›¹.){œk)Cœk@{œkI›Ê.I{œkICœk`{œki›Û.i{œkiCœk€{œk‰›ì.‰{œk‰Cœk {œk©›g/©{œk©CœkÉ›x/É{œkÉCœkà{œkàCœk雉/é{œkéCœkSkm ›š/ {œk Cœk {œk Cœk)›«/){œk)Cœk@S~mI›.0I{œkICœk`{œk`Cœki›?0i{œkiCœk€{œk€CœkKHm{œkCœk‰›P0‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›¤0©{œk©CœkÀ{œkÉ›µ0É{œkÉCœkà{œk雯0é{œkéCœk{œk ›1 {œk Cœk {œk)›)1){œk)Cœk@{œkAKHmA{œkACœkI›:1I{œkICœk`{œkaKHma{œkaCœki›Ž1i{œkiCœk€{œk‰›Ÿ1‰{œk‰Cœk {œk©›òå ©{œk©CœkÉ›ù1É{œkÉCœké›Sæ é{œkéCœk ›”2 {œk Cœk)›¥2){œk)CœkI›¶2I{œkICœki›Ç2i{œkiCœkKHm{œkCœk‰›03‰{œk‰Cœk¡KHm¡{œk¡Cœk©›A3©{œk©CœkÉ›R3É{œkÉCœké›c3é{œkéCœk ›Ô3 {œk Cœk)›å3){œk)CœkAKHmA{œkACœkI›ö3I{œkICœkaKHma{œkaCœki›4i{œkiCœk‰›q4‰{œk‰Cœk©›Ò4©{œk©CœkÉ›ã4É{œkÉCœké›ô4é{œkéCœk ›j5 {œk Cœk)›{5){œk)CœkI›Œ5I{œkICœki›é5i{œkiCœk‰›ú5‰{œk‰Cœk¡KHm¡{œk¡Cœk©› 6©{œk©CœkÁKHmÁ{œkÁCœkÉ›6É{œkÉCœkáKHmá{œkáCœké›-6é{œkéCœk ›>6 {œk Cœk)›O6){œk)CœkI›Æ6I{œkICœkaKHma{œkaCœki›×6i{œkiCœkKHm{œkCœk‰›27‰{œk‰Cœk¡KHm¡{œk¡Cœk©›C7©{œk©CœkÁKHmÁ{œkÁCœkÉ›T7É{œkÉCœké›e7é{œkéCœk ›v7 {œk Cœk)›8){œk)Cœk@{œk@CœkI›'8I{œkICœk`Skmi›88i{œkiCœk€{œk€Cœk‰›I8‰{œk‰Cœk S~m©›Ú8©{œk©CœkÀ{œkÀCœkÉ›ë8É{œkÉCœkàS‹mé›ü8é{œkéCœk{œkCœk › 9 {œk Cœk Sâ¢)›9){œk)Cœk@{œk@CœkI›ž9I{œkICœk`Sï¢i›¯9i{œkiCœk€{œk€Cœk‰›À9‰{œk‰Cœk Sü¢©›Ñ9©{œk©CœkÀ{œkÀCœkÉ›V:É{œkÉCœkàS £é›g:é{œkéCœk{œkCœk ›Æ: {œk Cœk S£)›×:){œk)Cœk@{œk@CœkI›1;I{œkICœk`{œk`Cœki›B;i{œkiCœk€{œk€Cœk‰›Ço‰{œk‰Cœk {œk Cœk¡KHm¡{œk¡Cœk©›Üo©{œk©CœkÀ{œkÀCœkÉ›íoÉ{œkÉCœkà{œkàCœké›–Sé{œkéCœk{œkCœk ›¨n {œk Cœk {œk Cœk!KHm!{œk!Cœk)›Qp){œk)Cœk@{œk@CœkI›bpI{œkICœk`{œk`Cœki›spi{œkiCœk€{œk€CœkKHm{œkCœk‰›„p‰{œk‰Cœk {œk Cœk©›o©{œk©CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkÉ›qÉ{œkÉCœkà{œkàCœké›V°é{œkéCœk{œkCœk ›ˆ {œk Cœk {œk Cœk)›÷D){œk)Cœk@{œk@CœkI›ÒæI{œkICœk`{œk`Cœki›Ei{œkiCœk€{œk€Cœk‰›®E‰{œk‰Cœk {œk Cœk©›bç©{œk©CœkÀ{œkÀCœkÉ›,²É{œkÉCœkà{œkàCœké›=²é{œkéCœk {œk Cœk ›óç {œk Cœk {œk Cœk) ›«ã) {œk) Cœk@ {œk@ CœkI ›MÍ I {œkI Cœk` {œk` Cœki ›^Í i {œki Cœk€ {œk€ Cœk‰ ›oý‰ {œk‰ Cœk  {œk  Cœk© › ³© {œk© CœkÀ {œkÀ CœkÉ ›)äÉ {œkÉ Cœkà {œkà Cœké ›:äé {œké Cœk!{œk!Cœk !›Éý !{œk !Cœk !{œk !Cœk)!›Àä)!{œk)!Cœk@!{œk@!CœkI!›FÎ I!{œkI!Cœk`!{œk`!Cœki!›« i!{œki!Cœk€!{œk€!Cœk!KHm!{œk!Cœk‰!›È ‰!{œk‰!Cœk !{œk !Cœk¡!KHm©!›ò ©!{œk©!CœkÀ!{œkÀ!CœkÁ!KHmÉ!›&þÉ!{œkÉ!Cœkà!{œkà!Cœká!KHmé!›I é!{œké!Cœk"{œk"Cœk"KHm "›¾Î "{œk "Cœk "{œk "Cœk!"KHm)"›ºž )"{œk)"Cœk@"{œk@"CœkA"KHmI"›˜þI"{œkI"Cœk`"{œk`"Cœka"KHma"{œka"Cœki"›Ä i"{œki"Cœk€"{œk€"Cœk"KHm"{œk"Cœk‰"›2Ï ‰"{œk‰"Cœk "{œk "Cœk¡"KHm¡"{œk¡"Cœk©"›CÏ ©"{œk©"CœkÀ"{œkÀ"CœkÁ"KHmÁ"{œkÁ"CœkÉ"›Þ!É"{œkÉ"Cœkà"{œkà"Cœká"KHmá"{œká"Cœké"›ï!é"{œké"Cœk#{œk#Cœk#KHm#{œk#Cœk #›" #{œk #Cœk #{œk #Cœk!#KHm!#{œk!#Cœk)#›"ÿ)#{œk)#Cœk@#{œk@#CœkA#KHmI#›6 I#{œkI#Cœk`#{œk`#Cœka#KHmi#›ÃÏ i#{œki#Cœk€#{œk€#Cœk#KHm‰#›ÞŸ ‰#{œk‰#Cœk #{œk #Cœk¡#KHm©#›z"©#{œk©#CœkÀ#{œkÀ#CœkÁ#KHmÉ#›‹"É#{œkÉ#Cœkà#{œkà#Cœká#KHmé#›œ"é#{œké#Cœk${œk$Cœk$KHm $›ÿ ${œk $Cœk ${œk $Cœk!$KHm)$›y  )${œk)$Cœk@${œk@$CœkA$KHmI$›Š  I${œkI$Cœk`${œk`$Cœka$KHmi$›i${œki$Cœk€${œk€$Cœk$KHm‰$›8‰${œk‰$Cœk ${œk $Cœk¡$KHm©$›†Ð ©${œk©$CœkÀ${œkÀ$CœkÁ$KHmÉ$›—Ð É${œkÉ$Cœkà${œkà$Cœká$KHmé$›! é${œké$Cœk%{œk%Cœk%KHm %›2 %{œk %Cœk!%KHm)%›ƒ)%{œk)%Cœk@%{œk@%CœkA%KHmI%›Ø#I%{œkI%Cœk`%Skma%KHma%{œka%Cœki%›é#i%{œki%Cœk€%{œk€%Cœk%KHm%{œk%Cœk‰%›’ ‰%{œk‰%Cœk %S~m¡%KHm¡%{œk¡%Cœk©%›± ©%{œk©%CœkÀ%{œkÀ%CœkÁ%KHmÁ%{œkÁ%CœkÉ%›Î É%{œkÉ%Cœkà%{œkà%Cœká%KHmá%{œká%Cœké%›d$é%{œké%Cœk&{œk&Cœk&KHm&{œk&Cœk &›u$ &{œk &Cœk &{œk &Cœk!&KHm!&{œk!&Cœk)&›] )&{œk)&Cœk@&{œk@&CœkA&KHmA&{œkA&CœkI&›n I&{œkI&Cœk`&{œk`&Cœka&KHma&{œka&Cœki&›õ$i&{œki&Cœk€&{œk€&Cœk&KHm&{œk&Cœk‰&›%‰&{œk‰&Cœk &{œk &Cœk¡&KHm¡&{œk¡&Cœk©&›%©&{œk©&CœkÀ&{œkÀ&CœkÁ&KHmÁ&{œkÁ&CœkÉ&›Ò É&{œkÉ&Cœkà&{œkà&Cœká&KHmá&{œká&Cœké&›` é&{œké&Cœk'Skm'KHm'{œk'Cœk '›2 '{œk 'Cœk '{œk 'Cœk!'KHm!'{œk!'Cœk)'›{` )'{œk)'Cœk@'S~mA'KHmA'{œkA'CœkI'›ª I'{œkI'Cœk`'{œk`'Cœka'KHma'{œka'Cœki'›”© i'{œki'Cœk€'{œk€'Cœk‰'›&‰'{œk‰'Cœk '{œk 'Cœk©'›&©'{œk©'CœkÀ'{œkÀ'CœkÁ'KHmÁ'{œkÁ'CœkÉ'›%&É'{œkÉ'Cœkà'{œkà'Cœká'KHmá'{œká'Cœké'› é'{œké'Cœk({œk(Cœk (› ({œk (Cœk ({œk (Cœk)(›&)({œk)(Cœk@({œk@(CœkI(›ž&I({œkI(Cœk`({œk`(Cœki(›¯&i({œki(Cœk€({œk€(Cœk‰(›À&‰({œk‰(Cœk ({œk (Cœk©(›Ñ&©({œk©(CœkÉ(›t É({œkÉ(Cœké(›… é({œké(Cœk )›W' ){œk )Cœk ){œk))›h')){œk))Cœk@){œkI)›y'I){œkI)Cœk`){œki)›é i){œki)Cœk€){œk‰)›æ'‰){œk‰)Cœk ){œk©)›÷'©){œk©)CœkÀ){œkÀ)CœkÉ)›(É){œkÉ)Cœkà)Skmé)›(é){œké)Cœk*{œk*Cœk*KHm*{œk*Cœk *›*( *{œk *Cœk *S~m!*KHm!*{œk!*Cœk)*›;()*{œk)*Cœk@*{œk@*CœkI*›b I*{œkI*Cœk`*{œk`*Cœki*›¹(i*{œki*Cœk€*{œk€*Cœk‰*›Ê(‰*{œk‰*Cœk *{œk *Cœk¡*KHm¡*{œk¡*Cœk©*›Û(©*{œk©*CœkÀ*{œkÀ*CœkÁ*KHmÁ*{œkÁ*CœkÉ*›ì(É*{œkÉ*Cœkà*{œkà*Cœká*KHmá*{œká*Cœké*›yb é*{œké*Cœk+{œk+Cœk+KHm+{œk+Cœk +›Šb +{œk +Cœk +{œk +Cœk)+›øb )+{œk)+Cœk@+{œk@+CœkI+› c I+{œkI+Cœk`+{œk`+Cœki+›"c i+{œki+Cœk€+{œk€+Cœk‰+›ž)‰+{œk‰+Cœk +{œk +Cœk©+›¯)©+{œk©+CœkÀ+{œkÀ+CœkÉ+›§c É+{œkÉ+Cœkà+{œkà+Cœké+›¸c é+{œké+Cœk,{œk,Cœk ,›** ,{œk ,Cœk ,{œk ,Cœk),›;*),{œk),Cœk@,{œk@,CœkI,›L*I,{œkI,Cœk`,{œk`,Cœki,›]*i,{œki,Cœk€,{œk€,Cœk‰,›n*‰,{œk‰,Cœk ,Skm©,›Ôª ©,{œk©,CœkÀ,{œkÀ,CœkÉ,›"« É,{œkÉ,Cœkà,{œkà,Cœké,›7+é,{œké,Cœk-{œk-Cœk -›Y+ -{œk -Cœk -{œk -Cœk)-›j+)-{œk)-Cœk@-{œkI-›|« I-{œkI-Cœk`-{œki-›« i-{œki-Cœk€-{œk‰-›í+‰-{œk‰-Cœk -{œk©-›ô« ©-{œk©-CœkÀ-{œkÉ-›¬ É-{œkÉ-Cœkà-{œká-KHmá-{œká-Cœké-›¬ é-{œké-Cœk.KHm.{œk.Cœk .›'¬ .{œk .Cœk .{œk!.KHm!.{œk!.Cœk).›}å ).{œk).Cœk@.{œkA.KHmA.{œkA.CœkI.›±,I.{œkI.Cœka.KHma.{œka.Cœki.›Â,i.{œki.Cœk‰.›Ó,‰.{œk‰.Cœk©.›=-©.{œk©.CœkÉ.›N-É.{œkÉ.Cœké.›_-é.{œké.Cœk/KHm/{œk/Cœk /›p- /{œk /Cœk)/›å-)/{œk)/CœkA/KHmA/{œkA/CœkI/›ö-I/{œkI/Cœka/KHma/{œka/Cœki/›.i/{œki/Cœk/KHm/{œk/Cœk‰/›.‰/{œk‰/Cœk¡/KHm¡/{œk¡/Cœk©/›).©/{œk©/CœkÁ/KHmÁ/{œkÁ/CœkÉ/›:.É/{œkÉ/Cœká/KHmá/{œká/Cœké/›¹.é/{œké/Cœk0KHm0{œk0Cœk 0›Ê. 0{œk 0Cœk)0›Û.)0{œk)0CœkI0›ì.I0{œkI0Cœki0›g/i0{œki0Cœk‰0›x/‰0{œk‰0Cœk©0›‰/©0{œk©0CœkÉ0›š/É0{œkÉ0Cœké0›«/é0{œké0Cœk 1›.0 1{œk 1Cœk)1›?0)1{œk)1CœkI1›P0I1{œkI1Cœki1›¤0i1{œki1Cœk‰1›µ0‰1{œk‰1Cœk©1›Æ0©1{œk©1CœkÉ1›1É1{œkÉ1Cœké1›)1é1{œké1Cœk 2›:1 2{œk 2Cœk)2›Ž1)2{œk)2CœkI2›Ÿ1I2{œkI2Cœki2›òå i2{œki2Cœk‰2›ù1‰2{œk‰2Cœk©2›Sæ ©2{œk©2CœkÉ2›”2É2{œkÉ2Cœké2›¥2é2{œké2Cœk 3›¶2 3{œk 3Cœk)3›Ç2)3{œk)3CœkI3›03I3{œkI3Cœki3›A3i3{œki3Cœk‰3›R3‰3{œk‰3Cœk©3›c3©3{œk©3CœkÉ3›Ô3É3{œkÉ3Cœké3›å3é3{œké3Cœk 4›ö3 4{œk 4Cœk)4›4)4{œk)4CœkI4›q4I4{œkI4Cœki4›Ò4i4{œki4Cœk‰4›ã4‰4{œk‰4Cœk©4›ô4©4{œk©4CœkÉ4›j5É4{œkÉ4Cœké4›{5é4{œké4Cœk 5›Œ5 5{œk 5Cœk)5›é5)5{œk)5CœkI5›ú5I5{œkI5Cœki5› 6i5{œki5Cœk‰5›6‰5{œk‰5Cœk©5›-6©5{œk©5CœkÉ5›>6É5{œkÉ5Cœké5›O6é5{œké5Cœk 6›Æ6 6{œk 6Cœk)6›×6)6{œk)6CœkI6›27I6{œkI6Cœki6›C7i6{œki6Cœk‰6›T7‰6{œk‰6Cœk©6›e7©6{œk©6CœkÉ6›v7É6{œkÉ6Cœké6›8é6{œké6Cœk 7›'8 7{œk 7Cœk)7›88)7{œk)7Cœk@7{œk@7CœkI7›I8I7{œkI7Cœk`7{œk`7Cœki7›Ú8i7{œki7Cœk€7Skm‰7›ë8‰7{œk‰7Cœk 7{œk 7Cœk©7›ü8©7{œk©7CœkÀ7{œkÀ7CœkÉ7› 9É7{œkÉ7Cœkà7{œkà7Cœké7›9é7{œké7Cœk8{œk8Cœk 8›ž9 8{œk 8Cœk 8{œk 8Cœk)8›¯9)8{œk)8Cœk@8{œk@8CœkI8›À9I8{œkI8Cœk`8{œki8›Ñ9i8{œki8Cœk€8{œk‰8›V:‰8{œk‰8Cœk 8{œk©8›g:©8{œk©8CœkÀ8{œkÉ8›Æ:É8{œkÉ8Cœkà8{œké8›×:é8{œké8Cœk9{œk 9›1; 9{œk 9Cœk 9{œk)9›B;)9{œk)9Cœk@9{œkI9{œkI9CœkI9KHmi9{œki9Cœki9KHm‰9{œk‰9Cœk‰9KHm©9{œk©9Cœk©9KHmÉ9›ÇoÉ9{œkÉ9Cœké9›Üoé9{œké9Cœk :›ío :{œk :Cœk):›–S):{œk):CœkA:KHmA:{œkA:CœkI:›§SI:{œkI:Cœki:›¾Wi:{œki:Cœk‰:›¨n‰:{œk‰:Cœk¡:KHm¡:{œk¡:Cœk©:›Qp©:{œk©:CœkÁ:KHmÁ:{œkÁ:CœkÉ:›bpÉ:{œkÉ:Cœká:KHmá:{œká:Cœké:›oé:{œké:Cœk ;›q ;{œk ;Cœk);›(q);{œk);CœkI;›ÇoI;{œkI;Cœki;›Üoi;{œki;Cœk‰;›ío‰;{œk‰;Cœk©;›–S©;{œk©;CœkÉ;›§SÉ;{œkÉ;Cœké;›¾Wé;{œké;Cœk <›¨n <{œk <Cœk)<›Qp)<{œk)<CœkI<›bpI<{œkI<Cœki<›oi<{œki<Cœk<KHm<{œk<Cœk‰<›q‰<{œk‰<Cœk¡<KHm¡<{œk¡<Cœk©<›(q©<{œk©<CœkÁ<KHmÁ<{œkÁ<CœkÉ<{œkÉ<CœkÉ<KHmá<KHmá<{œká<Cœké<{œké<Cœké<KHm=KHm={œk=Cœk ={œk =Cœk =KHm ={œk =Cœk)=›Ço)={œk)=Cœk@={œk@=CœkI=›¨nI={œkI=Cœka=KHma={œka=Cœki=›Çoi={œki=Cœk=KHm={œk=Cœk‰=›¨n‰={œk‰=Cœk¡=KHm¡={œk¡=Cœk©={œk©=Cœk©=KHmÁ=KHmÁ={œkÁ=CœkÉ={œkÉ=CœkÉ=KHmá=KHmá={œká=Cœké={œké=Cœké=KHm>KHm>{œk>Cœk >›Ço >{œk >Cœk!>KHm!>{œk!>Cœk)>›Üo)>{œk)>CœkA>KHmA>{œkA>CœkI>›íoI>{œkI>Cœka>KHma>{œka>Cœki>›¨ni>{œki>Cœk>KHm>{œk>Cœk‰>›Qp‰>{œk‰>Cœk©>›Ço©>{œk©>CœkÉ>›ÜoÉ>{œkÉ>Cœké>›íoé>{œké>Cœk?KHm?{œk?Cœk ?›¨n ?{œk ?Cœk!?KHm!?{œk!?Cœk)?›Qp)?{œk)?CœkA?KHmA?{œkA?CœkI?{œkI?CœkI?KHma?KHma?{œka?Cœki?{œki?Cœki?KHm?KHm?{œk?Cœk‰?{œk‰?Cœk‰?KHm©?›Ço©?{œk©?CœkÉ?›ÜoÉ?{œkÉ?Cœká?KHmá?{œká?Cœké?›¨né?{œké?Cœk@KHm@{œk@Cœk @›Qp @{œk @Cœk!@KHm!@{œk!@Cœk)@›bp)@{œk)@CœkA@KHmA@{œkA@CœkI@›ÇoI@{œkI@Cœki@›Üoi@{œki@Cœk‰@›¨n‰@{œk‰@Cœk©@›Qp©@{œk©@CœkÁ@KHmÁ@{œkÁ@CœkÉ@›bpÉ@{œkÉ@Cœká@KHmá@{œká@Cœké@{œké@Cœké@KHmAKHmA{œkACœk A{œk ACœk AKHm!AKHm!A{œk!ACœk)A{œk)ACœk)AKHm@A{œk@ACœkAAKHmAA{œkAACœkIA{œkIACœkIAKHm`A{œk`ACœkaAKHmaA{œkaACœkiA{œkiACœkiAKHmAKHmA{œkACœk‰A{œk‰ACœk‰AKHm©A{œk©ACœk©AKHmÉA{œkÉACœkÉAKHmáAKHmáA{œkáACœkéA{œkéACœkéAKHmBKHmB{œkBCœk B{œk BCœk BKHm!BKHm!B{œk!BCœk)B{œk)BCœk)BKHmABKHmAB{œkABCœkIB{œkIBCœkIBKHmiB{œkiBCœkiBKHm€B{œk€BCœkBKHmB{œkBCœk‰B{œk‰BCœk‰BKHm B{œk BCœk©B{œk©BCœk©BKHmÉB{œkÉBCœkÉBKHmáBKHmáB{œkáBCœkéB{œkéBCœkéBKHmCKHmC{œkCCœk C{œk CCœk CKHm!CKHm!C{œk!CCœk)C{œk)CCœk)CKHmIC{œkICCœkICKHmaCKHmaC{œkaCCœkCKHmC{œkCCœk‰C›Ço‰C{œk‰CCœk¡CKHm¡C{œk¡CCœk©C›Üo©C{œk©CCœkÉC›¨nÉC{œkÉCCœkéC›oéC{œkéCCœk D›q D{œk DCœk)D›(q)D{œk)DCœkID›BID{œkIDCœkiD›ÅXiD{œkiDCœk‰D›V°‰D{œk‰DCœk©D›ˆ©D{œk©DCœkÉD›÷DÉD{œkÉDCœkéD›ÒæéD{œkéDCœk E›E E{œk ECœk)E›®E)E{œk)ECœkAEKHmAE{œkAECœkIE›bçIE{œkIECœkiE›,²iE{œkiECœk‰E›=²‰E{œk‰ECœk©E›óç©E{œk©ECœkÉE›«ãÉE{œkÉECœkàE“ÎkàE{œkéE›oýéE{œkéECœk F› ³ F{œk FCœk)F›)ä)F{œk)FCœkIF›:äIF{œkIFCœkiF›KäiF{œkiFCœkFKHmF{œkFCœk‰F›G‰F{œk‰FCœk¡FKHm¡F{œk¡FCœk©F›Éý©F{œk©FCœkÁFKHmÁF{œkÁFCœkÉF›ÀäÉF{œkÉFCœkéF›&þéF{œkéFCœk G›I G{œk GCœk)G›˜þ)G{œk)GCœkIG›Ä IG{œkIGCœkiG›2Ï iG{œkiGCœk‰G›"ÿ‰G{œk‰GCœk©G›6 ©G{œk©GCœkÉG›ÿÉG{œkÉGCœkéG›éG{œkéGCœk H›8 H{œk HCœk H{œk HCœk)H›! )H{œk)HCœk@HSkmIH›2 IH{œkIHCœk`H{œk`HCœkiH›’ iH{œkiHCœk€HS~mHKHmH{œkHCœk‰H›± ‰H{œk‰HCœk H{œk HCœk¡HKHm¡H{œk¡HCœk©H›] ©H{œk©HCœkÀHS‹mÁHKHmÉH›n ÉH{œkÉHCœkàH{œkàHCœkáHKHmáH{œkáHCœkéH›õ$éH{œkéHCœkISâ¢IKHmI{œkICœk I›Ò I{œk ICœk I{œk ICœk!IKHm!I{œk!ICœk)I›` )I{œk)ICœk@ISï¢AIKHmAI{œkAICœkII›–JII{œkIICœk`I{œk`ICœkiI›§JiI{œkiICœk€ISü¢‰I›¸J‰I{œk‰ICœk I{œk ICœk¡IKHm©I›2 ©I{œk©ICœkÀIS £ÁIKHmÉI›{` ÉI{œkÉICœkàI{œkàICœkáIKHméI›ÇoéI{œkéICœkJS£JKHm J›Üo J{œk JCœk J{œk JCœk!JKHm)J›¨n)J{œk)JCœk@JS#£AJKHmIJ›oIJ{œkIJCœk`J{œk`JCœkaJKHmiJ›qiJ{œkiJCœk€J{œk€JCœkJKHm‰J›(q‰J{œk‰JCœk J{œk JCœk¡JKHm©J›B©J{œk©JCœkÀJ{œkÁJKHmÉJ›ÅXÉJ{œkÉJCœkàJ{œkáJKHméJ›V°éJ{œkéJCœkK{œk K›ˆ K{œk KCœk K{œk)K›÷D)K{œk)KCœk@K{œkIK›ÒæIK{œkIKCœk`K{œk`KCœkiK›EiK{œkiKCœk€K{œk€KCœk‰K›®E‰K{œk‰KCœk K{œk KCœk©K›bç©K{œk©KCœkÀK{œkÀKCœkÁKKHmÁK{œkÁKCœkÉK›,²ÉK{œkÉKCœkàK{œkàKCœkáKKHmáK{œkáKCœkéK›=²éK{œkéKCœkL{œkLCœkLKHmL{œkLCœk L›óç L{œk LCœk L{œk LCœk)L›«ã)L{œk)LCœk@L{œk@LCœkIL›oýIL{œkILCœk`L{œk`LCœkaLKHmaL{œkaLCœkiL› ³iL{œkiLCœk€L{œk€LCœkLKHmL{œkLCœk‰L›)ä‰L{œk‰LCœk L{œk LCœk¡LKHm¡L{œk¡LCœk©L›:ä©L{œk©LCœkÀL{œkÀLCœkÉL›KäÉL{œkÉLCœkàL{œkàLCœkéL›GéL{œkéLCœkM{œkMCœk M›Éý M{œk MCœk M{œk MCœk)M›Àä)M{œk)MCœk@M{œk@MCœkAMKHmAM{œkAMCœkIM›&þIM{œkIMCœk`M{œk`MCœkiM›I iM{œkiMCœk€M{œk€MCœkMKHmM{œkMCœk‰M›˜þ‰M{œk‰MCœk M{œk MCœk©M›Ä ©M{œk©MCœkÀM{œkÀMCœkÉM›2Ï ÉM{œkÉMCœkàM{œkàMCœkéM›"ÿéM{œkéMCœkN{œkNCœk N›6 N{œk NCœk N{œk NCœk)N›ÿ)N{œk)NCœk@N{œk@NCœkIN›IN{œkINCœkiN›8iN{œkiNCœk‰N›! ‰N{œk‰NCœk©N›2 ©N{œk©NCœkÉN›’ ÉN{œkÉNCœkéN›± éN{œkéNCœk O›] O{œk OCœk)O›n )O{œk)OCœkIO›õ$IO{œkIOCœkiO›Ò iO{œkiOCœk‰O›` ‰O{œk‰OCœk©O›–J©O{œk©OCœkÉO›§JÉO{œkÉOCœkéO›¸JéO{œkéOCœk P›2 P{œk PCœk)P›{` )P{œk)PCœkIP{œkIPCœkIPKHmiP›ÇoiP{œkiPCœk‰P›Üo‰P{œk‰PCœk©P›ío©P{œk©PCœkÉP{œkÉPCœkÉPKHméP›ÇoéP{œkéPCœkQKHmQ{œkQCœk Q›Üo Q{œk QCœk!QKHm!Q{œk!QCœk)Q›ío)Q{œk)QCœkAQKHmIQ›–SIQ{œkIQCœkaQKHmiQ›§SiQ{œkiQCœkQKHmQ{œkQCœk¡QKHm¡Q{œk¡QCœkÁQKHmÉQSËqáQKHméQSõqRKHm RSr!RKHm)RS'rIRS:riR{œkiRCœkiRKHm‰R›Ço‰R{œk‰RCœk©R›Üo©R{œk©RCœkÉR›íoÉR{œkÉRCœkéR{œkéRCœkéRKHm S›Ço S{œk SCœk)S›Üo)S{œk)SCœkIS›íoIS{œkISCœkiS›–SiS{œkiSCœk‰S›§S‰S{œk‰SCœk©S›¾W©S{œk©SCœkÉS›&XÉS{œkÉSCœkàS{œkàSCœkéS›?XéS{œkéSCœkT{œkTCœk T›VX T{œk TCœk)T›sX)T{œk)TCœkIT›„XIT{œkITCœkiT›ZiT{œkiTCœkéT{œkéTCœkéTKHm U›Ço U{œk UCœk)U›Üo)U{œk)UCœkIU›íoIU{œkIUCœkiUSËq‰USõq©USrÉUS'réUS:r V{œk VCœk VKHm)V{œk)VCœk)VKHmIV{œkIVCœkIVKHmiV{œkiVCœkiVKHm‰V{œk‰VCœk‰VKHm©V{œk©VCœk©VKHmÉV{œkÉVCœkÉVKHméV{œkéVCœkéVKHm W{œk WCœk WKHm)W{œk)WCœk)WKHmIW{œkIWCœkIWKHmiW{œkiWCœkiWKHm‰W{œk‰WCœk‰WKHm©W{œk©WCœk©WKHmÉW{œkÉWCœkÉWKHméW{œkéWCœkéWKHm X{œk XCœk XKHm)X{œk)XCœk)XKHmIX{œkIXCœkIXKHmiX›ÇoiX{œkiXCœk‰X›Üo‰X{œk‰XCœk©X›ío©X{œk©XCœkÉX›¨nÉX{œkÉXCœkéX›QpéX{œkéXCœk Y›o Y{œk YCœk)Y›q)Y{œk)YCœkIY›V°IY{œkIYCœkiY›ˆiY{œkiYCœk‰Y›Òæ‰Y{œk‰YCœk©Y›E©Y{œk©YCœkÉY›ÇoÉY{œkÉYCœkéY›ÜoéY{œkéYCœk Z›ío Z{œk ZCœk)Z›¨n)Z{œk)ZCœkIZ›QpIZ{œkIZCœkiZ›oiZ{œkiZCœk‰Z›q‰Z{œk‰ZCœk©Z›V°©Z{œk©ZCœkÉZ›ˆÉZ{œkÉZCœkéZ›ÒæéZ{œkéZCœk [›E [{œk [Cœk)[{œk)[Cœk)[KHmI[{œkI[CœkI[KHmi[{œki[Cœki[KHm‰[{œk‰[Cœk‰[KHm©[{œk©[Cœk©[KHmÉ[{œkÉ[CœkÉ[KHmé[{œké[Cœké[KHm \{œk \Cœk \KHm)\{œk)\Cœk)\KHmI\{œkI\CœkI\KHmi\{œki\Cœki\KHm‰\{œk‰\Cœk‰\KHm©\{œk©\Cœk©\KHmÉ\{œkÉ\CœkÉ\KHmé\{œké\Cœké\KHm ]{œk ]Cœk ]KHm)]{œk)]Cœk)]KHmI]{œkI]CœkI]KHmi]{œki]Cœki]KHm‰]{œk‰]Cœk‰]KHm©]{œk©]Cœk©]KHmÉ]{œkÉ]CœkÉ]KHmá]KHmá]{œká]Cœké]›˜þé]{œké]Cœk ^›Ä ^{œk ^Cœk)^›˜þ)^{œk)^CœkI^›Ä I^{œkI^Cœki^{œki^Cœki^KHm‰^{œk‰^Cœk‰^KHm©^{œk©^Cœk©^KHmÉ^{œkÉ^CœkÉ^KHmé^{œké^Cœké^KHm_KHm_{œk_Cœk _{œk _Cœk _KHm!_KHm!_{œk!_Cœk)_{œk)_Cœk)_KHmA_KHmA_{œkA_CœkI_{œkI_CœkI_KHma_KHma_{œka_Cœk_KHm_{œk_Cœk‰_›Ço‰_{œk‰_Cœk©_›Üo©_{œk©_CœkÉ_›íoÉ_{œkÉ_Cœké_›¨né_{œké_Cœk `›Qp `{œk `Cœk!`KHm!`{œk!`Cœk)`›o)`{œk)`CœkA`KHmA`{œkA`CœkI`›qI`{œkI`Cœki`›(qi`{œki`Cœk`KHm`{œk`Cœk‰`›V°‰`{œk‰`Cœk¡`KHm¡`{œk¡`Cœk©`›ˆ©`{œk©`CœkÁ`KHmÁ`{œkÁ`CœkÉ`›÷DÉ`{œkÉ`Cœká`KHmá`{œká`Cœké`›Eé`{œké`CœkaKHma{œkaCœk a›p› a{œk aCœk!aKHm!a{œk!aCœk)a›› )a{œk)aCœkIa›’› Ia{œkIaCœkia›“Uia{œkiaCœk‰a›Òæ‰a{œk‰aCœk©a›E©a{œk©aCœkÉa›bçÉa{œkÉaCœkéa›,²éa{œkéaCœk b›=² b{œk bCœk)b›óç)b{œk)bCœkIb›ÇoIb{œkIbCœkib›Üoib{œkibCœk‰b›ío‰b{œk‰bCœk©b›¨n©b{œk©bCœkÉb›QpÉb{œkÉbCœkéb›oéb{œkébCœk c›q c{œk cCœk)c›(q)c{œk)cCœkIc›V°Ic{œkIcCœkic›ˆic{œkicCœk‰c›÷D‰c{œk‰cCœk©c›E©c{œk©cCœkÉc›p› Éc{œkÉcCœkéc›› éc{œkécCœk d›’› d{œk dCœk!dKHm!d{œk!dCœk)d›“U)d{œk)dCœkAdKHmAd{œkAdCœkId›ÒæId{œkIdCœkadKHmad{œkadCœkid›Eid{œkidCœkdKHmd{œkdCœk‰d›bç‰d{œk‰dCœk¡dKHm¡d{œk¡dCœk©d›,²©d{œk©dCœkÁdKHmÁd{œkÁdCœkÉd›=²Éd{œkÉdCœkádKHmád{œkádCœkéd›óçéd{œkédCœkeKHme{œkeCœk e{œk eCœk eKHm!eKHm!e{œk!eCœk)e›Ço)e{œk)eCœkAeKHmAe{œkAeCœkIe›ÜoIe{œkIeCœkaeKHmae{œkaeCœkie›íoie{œkieCœkeKHme{œkeCœk‰e›–S‰e{œk‰eCœk¡eKHm¡e{œk¡eCœk©e›§S©e{œk©eCœkÁeKHmÁe{œkÁeCœkáeKHmáe{œkáeCœkée{œkéeCœkéeKHmfKHmf{œkfCœk f›Ço f{œk fCœk!fKHm!f{œk!fCœk)f›Üo)f{œk)fCœkAfKHmAf{œkAfCœkIf›íoIf{œkIfCœkafKHmaf{œkafCœkif›–Sif{œkifCœkfKHmf{œkfCœk‰f›§S‰f{œk‰fCœk¡fKHm¡f{œk¡fCœk©f›¾W©f{œk©fCœkÁfKHmÁf{œkÁfCœkáfKHmáf{œkáfCœkéf{œkéfCœkéfKHmgKHmg{œkgCœk g{œk gCœk gKHm!gKHm!g{œk!gCœk)g{œk)gCœk)gKHmAgKHmAg{œkAgCœkIg›ÇoIg{œkIgCœkagKHmag{œkagCœkig›¨nig{œkigCœkgKHmg{œkgCœk‰g›Ço‰g{œk‰gCœk¡gKHm¡g{œk¡gCœk©g›¨n©g{œk©gCœkÁgKHmÁg{œkÁgCœkÉg{œkÉgCœkÉgKHmágKHmág{œkágCœkég{œkégCœkégKHmhKHmh{œkhCœk h{œk hCœk hKHm!hKHm!h{œk!hCœkAhKHmAh{œkAhCœkIh›ÇoIh{œkIhCœkahKHmah{œkahCœkih›Üoih{œkihCœkhKHmh{œkhCœk‰h›ío‰h{œk‰hCœk¡hKHm¡h{œk¡hCœk©h›¨n©h{œk©hCœkÁhKHmÁh{œkÁhCœkÉh›QpÉh{œkÉhCœkáhKHmáh{œkáhCœkéh›Çoéh{œkéhCœkiKHmi{œkiCœk i›Üo i{œk iCœk i{œk iCœk!iKHm!i{œk!iCœk)i›ío)i{œk)iCœk@i{œk@iCœkAiKHmAi{œkAiCœkIi›¨nIi{œkIiCœkaiKHmai{œkaiCœkii›Qpii{œkiiCœkiKHmi{œkiCœk‰i{œk‰iCœk‰iKHm¡iKHm¡i{œk¡iCœk©i›Ço©i{œk©iCœkÁiKHmÁi{œkÁiCœkÉi›ÜoÉi{œkÉiCœkài{œkàiCœkáiKHmái{œkáiCœkéi›íoéi{œkéiCœkj{œkjCœkjKHmj{œkjCœk j›–S j{œk jCœk!jKHm!j{œk!jCœk)j{œk)jCœk)jKHmAjKHmAj{œkAjCœkIj›ÇoIj{œkIjCœkajKHmaj{œkajCœkij›Üoij{œkijCœkjKHmj{œkjCœk‰j›ío‰j{œk‰jCœk¡jKHm¡j{œk¡jCœk©j›–S©j{œk©jCœkÁjKHmÁj{œkÁjCœkÉj›§SÉj{œkÉjCœkájKHmáj{œkájCœkéj›¾Wéj{œkéjCœkkKHmk{œkkCœk k›&X k{œk kCœk!kKHm!k{œk!kCœk)k›?X)k{œk)kCœkAkKHmAk{œkAkCœkIk{œkIkCœkIkKHmik›Çoik{œkikCœk‰k›Üo‰k{œk‰kCœk¡kKHm¡k{œk¡kCœk©k›ío©k{œk©kCœkÁkKHmÁk{œkÁkCœkÉk›–SÉk{œkÉkCœkákKHmák{œkákCœkék›§Sék{œkékCœklKHml{œklCœk l›¾W l{œk lCœk!lKHm!l{œk!lCœk)l›&X)l{œk)lCœkAlKHmAl{œkAlCœkIl›?XIl{œkIlCœkalKHmal{œkalCœklKHml{œklCœk‰l{œk‰lCœk‰lKHm¡lKHm¡l{œk¡lCœk©l›Ço©l{œk©lCœkÁlKHmÁl{œkÁlCœkÉl›ÜoÉl{œkÉlCœkél›íoél{œkélCœk m›–S m{œk mCœk!mKHm)m›§S)m{œk)mCœkAmKHmIm›¾WIm{œkImCœkamKHmim›&Xim{œkimCœkmKHm‰m›?X‰m{œk‰mCœk¡mKHm©m›VX©m{œk©mCœkÁmKHmÉm›sXÉm{œkÉmCœkámKHmém›„Xém{œkémCœknKHm!nKHmAnKHmanKHmin{œkinCœkinKHmnKHm‰n›Ço‰n{œk‰nCœk¡nKHm¡n{œk¡nCœk©n›Üo©n{œk©nCœkÁnKHmÁn{œkÁnCœkánKHmán{œkánCœkén{œkénCœkénKHm o›Ço o{œk oCœk)o›Üo)o{œk)oCœkIo›íoIo{œkIoCœkio{œkioCœkioKHm‰o›Ço‰o{œk‰oCœk©o›Üo©o{œk©oCœkÉo›íoÉo{œkÉoCœkéo{œkéoCœkéoKHm p›Ço p{œk pCœk)p›Üo)p{œk)pCœkIp›íoIp{œkIpCœkip›–Sip{œkipCœk‰p›§S‰p{œk‰pCœk©p›¾W©p{œk©pCœkép{œképCœképKHm q›Ço q{œk qCœk)q›Üo)q{œk)qCœkAqKHmAq{œkAqCœkIq›íoIq{œkIqCœkiq{œkiqCœkiqKHm‰q{œk‰qCœk‰qKHm©q{œk©qCœk©qKHmÁqKHmÁq{œkÁqCœkéq›Çoéq{œkéqCœkrKHmr{œkrCœk r›Üo r{œk rCœk)r›ío)r{œk)rCœkIr›¨nIr{œkIrCœkir›Qpir{œkirCœk‰r›Ço‰r{œk‰rCœk©r›Üo©r{œk©rCœkÉr›íoÉr{œkÉrCœkárKHmár{œkárCœkér›¨nér{œkérCœk s›Qp s{œk sCœk)s{œk)sCœk)sKHmIs›ÇoIs{œkIsCœkis›Üois{œkisCœk‰s›ío‰s{œk‰sCœk©s›–S©s{œk©sCœkés{œkésCœkésKHmtKHmt{œktCœk t{œk tCœk tKHm)t{œk)tCœk)tKHmIt{œkItCœkItKHmit{œkitCœkitKHm‰t{œk‰tCœk‰tKHm©t{œk©tCœk©tKHmÉt{œkÉtCœkÉtKHmátKHmát{œkátCœkét{œkétCœkétKHmuKHmu{œkuCœk u{œk uCœk uKHm!uKHm!u{œk!uCœk)u{œk)uCœk)uKHmIu{œkIuCœkIuKHm‰u›Ço‰u{œk‰uCœk¡uKHm¡u{œk¡uCœk©u›Üo©u{œk©uCœkÁuKHmÁu{œkÁuCœkÉu›¨nÉu{œkÉuCœkáuKHmáu{œkáuCœkéu›Qpéu{œkéuCœk v›o v{œk vCœk)v›q)v{œk)vCœkAvKHmAv{œkAvCœkIv›(qIv{œkIvCœkiv›Biv{œkivCœk‰v›ÅX‰v{œk‰vCœk¡vKHm¡v{œk¡vCœk©v›V°©v{œk©vCœkÁvKHmÁv{œkÁvCœkÉv›ˆÉv{œkÉvCœkávKHmáv{œkávCœkév›÷Dév{œkévCœkwKHmw{œkwCœk w›E w{œk wCœk!wKHm!w{œk!wCœk)w›Òæ)w{œk)wCœkAwKHmAw{œkAwCœkIw›EIw{œkIwCœkawKHmaw{œkawCœkiw›®Eiw{œkiwCœkwKHmw{œkwCœk‰w›ÉE‰w{œk‰wCœk©w›bç©w{œk©wCœkÉw›,²Éw{œkÉwCœkéw›=²éw{œkéwCœk x›óç x{œk xCœk)x›«ã)x{œk)xCœkIx›MÍ Ix{œkIxCœkix›oýix{œkixCœk‰x› ³‰x{œk‰xCœk©x›)ä©x{œk©xCœkÉx›ÉýÉx{œkÉxCœkéx›Àäéx{œkéxCœk y›&þ y{œk yCœk)y›I )y{œk)yCœkIy›¾Î Iy{œkIyCœkayKHmay{œkayCœkiy›˜þiy{œkiyCœk‰y›Ä ‰y{œk‰yCœk¡yKHm¡y{œk¡yCœk©y›2Ï ©y{œk©yCœkÁyKHmÁy{œkÁyCœkÉy›CÏ Éy{œkÉyCœkáyKHmáy{œkáyCœkéy›Þ!éy{œkéyCœkzKHmz{œkzCœk z›ï! z{œk zCœk!zKHm!z{œk!zCœk)z›")z{œk)zCœkIz›£gIz{œkIzCœkiz›´giz{œkizCœk‰z›Åg‰z{œk‰zCœk©z›Ög©z{œk©zCœkÉz›ÇoÉz{œkÉzCœkéz›Üoéz{œkézCœk {›¨n {{œk {Cœk){›Qp){{œk){CœkI{›oI{{œkI{Cœki{›qi{{œki{Cœk‰{›(q‰{{œk‰{Cœk©{›B©{{œk©{CœkÉ{›ÅXÉ{{œkÉ{Cœké{›V°é{{œké{Cœk|KHm|{œk|Cœk |›ˆ |{œk |Cœk!|KHm!|{œk!|Cœk)|›÷D)|{œk)|CœkA|KHmA|{œkA|CœkI|›EI|{œkI|Cœka|KHma|{œka|Cœki|›Òæi|{œki|Cœk‰|›E‰|{œk‰|Cœk©|›®E©|{œk©|CœkÉ|›ÉEÉ|{œkÉ|Cœké|›bçé|{œké|Cœk }›,² }{œk }Cœk)}›=²)}{œk)}CœkI}›óçI}{œkI}Cœki}›«ãi}{œki}Cœk‰}›MÍ ‰}{œk‰}Cœk©}›oý©}{œk©}CœkÉ}› ³É}{œkÉ}Cœké}›)äé}{œké}Cœk ~›Éý ~{œk ~Cœk)~›Àä)~{œk)~CœkI~›&þI~{œkI~Cœki~›I i~{œki~Cœk‰~›¾Î ‰~{œk‰~Cœk©~›˜þ©~{œk©~CœkÉ~›Ä É~{œkÉ~Cœká~KHmé~›2Ï é~{œké~Cœk ›CÏ {œk Cœk)›Þ!){œk)CœkI›ï!I{œkICœki›"i{œkiCœk‰›£g‰{œk‰Cœk©›´g©{œk©CœkÉ›ÅgÉ{œkÉCœkà{œkàCœké›Ögé{œkéCœk€{œk€Cœk€KHm€{œk€Cœk €{œk €Cœk €KHm!€KHm!€{œk!€Cœk)€{œk)€Cœk)€KHmI€{œkI€CœkI€KHmi€{œki€Cœki€KHm‰€{œk‰€Cœk‰€KHm©€{œk©€Cœk©€KHmÉ€{œkÉ€CœkÉ€KHmé€{œké€Cœké€KHm {œk Cœk KHm){œk)Cœk)KHmI{œkICœkIKHm‰›Ço‰{œk‰Cœk©›Üo©{œk©CœkÉ›íoÉ{œkÉCœkáKHmá{œkáCœk雨né{œkéCœk ‚›Qp ‚{œk ‚Cœk)‚›bp)‚{œk)‚CœkI‚›spI‚{œkI‚Cœka‚KHma‚{œka‚Cœki‚›oi‚{œki‚Cœk‚KHm‚{œk‚Cœk‰‚›q‰‚{œk‰‚Cœk¡‚KHm¡‚{œk¡‚Cœk©‚›(q©‚{œk©‚CœkÉ‚›V°É‚{œkÉ‚Cœké‚›ˆé‚{œké‚Cœk ƒ›÷D ƒ{œk ƒCœk)ƒ›Òæ)ƒ{œk)ƒCœkIƒ›EIƒ{œkIƒCœkiƒ›bçiƒ{œkiƒCœk‰ƒ›,²‰ƒ{œk‰ƒCœk©ƒ›ó穃{œk©ƒCœkÁƒKHmÁƒ{œkÁƒCœkɃ›«ãɃ{œkɃCœkáƒKHmáƒ{œkáƒCœk郛oýéƒ{œkéƒCœk„KHm„{œk„Cœk „› ³ „{œk „Cœk)„›Éý)„{œk)„CœkI„›ÀäI„{œkI„Cœki„›&þi„{œki„Cœk‰„›Ço‰„{œk‰„Cœk©„›Üo©„{œk©„CœkÉ„›íoÉ„{œkÉ„Cœkà„{œkà„Cœké„›¨né„{œké„Cœk…{œk…Cœk …›Qp …{œk …Cœk)…›bp)…{œk)…CœkI…›spI…{œkI…Cœki…›oi…{œki…Cœk‰…›q‰…{œk‰…Cœk©…›(q©…{œk©…CœkÉ…›V°É…{œkÉ…Cœkà…{œkà…Cœké…›ˆé…{œké…Cœk†{œk†Cœk †›÷D †{œk †Cœk)†›Òæ)†{œk)†CœkI†›EI†{œkI†Cœki†›bçi†{œki†Cœk‰†›,²‰†{œk‰†Cœk©†›ó穆{œk©†CœkÁ†KHmÁ†{œkÁ†CœkɆ›«ãɆ{œkɆCœká†KHmá†{œká†Cœk醛oýé†{œké†Cœk‡KHm‡{œk‡Cœk ‡› ³ ‡{œk ‡Cœk!‡KHm!‡{œk!‡Cœk)‡›Éý)‡{œk)‡CœkA‡KHmA‡{œkA‡CœkI‡›ÀäI‡{œkI‡Cœka‡KHma‡{œka‡Cœki‡›&þi‡{œki‡Cœk‰‡{œk‰‡Cœk‰‡KHm©‡›Ço©‡{œk©‡Cœkɇ›Üoɇ{œkɇCœk釛íoé‡{œké‡Cœk ˆ{œk ˆCœk ˆKHm)ˆ{œk)ˆCœk)ˆKHmIˆ{œkIˆCœkIˆKHmiˆ{œkiˆCœkiˆKHm‰ˆ{œk‰ˆCœk‰ˆKHm¡ˆKHm¡ˆ{œk¡ˆCœk©ˆ{œk©ˆCœk©ˆKHmɈ{œkɈCœkɈKHméˆ{œkéˆCœkéˆKHm ‰{œk ‰Cœk ‰KHm#‰;âøC‰‹nC‰;:nI‰›ÇoI‰{œkI‰Cœkc‰;hvi‰›Üoi‰{œki‰Cœkƒ‰;hv‰‰›ío‰‰{œk‰‰Cœk£‰;‡s©‰›¨n©‰{œk©‰CœkÉ;Çùɉ›Qpɉ{œkɉCœkà‰{œkà‰Cœk鉛bpé‰{œké‰CœkŠ{œkŠCœk Š›o Š{œk ŠCœk!ŠKHm!Š{œk!ŠCœk#Š;Çù)Š›q)Š{œk)ŠCœkIŠ›V°IŠ{œkIŠCœkiŠ›ˆiŠ{œkiŠCœk‰Š›Ò扊{œk‰ŠCœk Š{œk ŠCœk©Š›E©Š{œk©ŠCœkÀŠ{œkÀŠCœkÉŠ›bçÉŠ{œkÉŠCœk銛,²éŠ{œkéŠCœk ‹›óç ‹{œk ‹Cœk)‹›«ã)‹{œk)‹CœkI‹›oýI‹{œkI‹Cœki‹›Çoi‹{œki‹Cœk‰‹›Üo‰‹{œk‰‹Cœk£‹;Çù©‹›ío©‹{œk©‹CœkË‹nË;:nÉ‹›¨nÉ‹{œkÉ‹Cœké‹›Qpé‹{œké‹CœkŒ“,ÍŒ‹n Œ›bp Œ{œk ŒCœk#Œ“çÍ#Œ‹n)Œ›o)Œ{œk)ŒCœkIŒ›qIŒ{œkIŒCœk`Œ{œk`ŒCœkiŒ›V°iŒ{œkiŒCœk€Œ{œk€ŒCœk‰Œ›ˆ‰Œ{œk‰ŒCœk£Œ›±œk£ŒÓœk£Œ3 œk£Œ;4m©Œ›Ò橌{œk©ŒCœkÃŒ›±œkÃŒ;4mÉŒ›EÉŒ{œkÉŒCœkãŒ;4m錛bçéŒ{œkéŒCœk›±œk³œk;4m ›,² {œk Cœk!KHm!{œk!Cœk#›±œk#Óœk#3 œk#;4m)›óç){œk)CœkC›±œkCÓœkC3 œkC;4mI›«ãI{œkICœkc›±œkc³œkc;4mi›oýi{œkiCœkƒ›±œkƒ3 œkƒÓœkƒ;4m‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk£›±œk£Óœk£3 œk£;4m©›Ço©{œk©CœkÁKHmÁ{œkÁCœkÛ±œkÃ3 œkÃÓœkÃ;4mÉ›ÜoÉ{œkÉCœkáKHmá{œkáCœkã›±œkã3 œkãÓœkã;4mé›íoé{œkéCœkŽKHmŽ{œkŽCœkŽ›±œkŽ3 œkŽÓœkŽ;4m Ž›–S Ž{œk ŽCœk Ž{œk ŽCœk!ŽKHm!Ž{œk!ŽCœk)Ž›§S)Ž{œk)ŽCœk@Ž{œk@ŽCœkIŽ›¾WIŽ{œkIŽCœkiŽ›&XiŽ{œkiŽCœk©Ž{œk©ŽCœk©ŽKHmÉŽ›ÇoÉŽ{œkÉŽCœk鎛ÜoéŽ{œkéŽCœk ›ío {œk Cœk)›–S){œk)CœkI›§SI{œkICœk`{œk`Cœki›¾Wi{œkiCœk€{œk€Cœk‰›&X‰{œk‰Cœk£;Çù©{œk©Cœk©KHmÉ›ÇoÉ{œkÉCœké›Üoé{œkéCœk ›ío {œk Cœk){œk)Cœk)KHmI{œkICœkIKHm`{œk`Cœki{œkiCœkiKHm€{œk€CœkKHm{œkCœk‰{œk‰Cœk‰KHm¡KHm¡{œk¡Cœk©›Ço©{œk©CœkÁKHmÁ{œkÁCœkÉ›ÜoÉ{œkÉCœk雨né{œkéCœk‘KHm‘{œk‘Cœk ‘›o ‘{œk ‘Cœk!‘KHm!‘{œk!‘Cœk)‘›q)‘{œk)‘CœkA‘KHmA‘{œkA‘CœkC‘ËœkC‘3 œkC‘ÓœkC‘›±œkC‘;4mI‘›(qI‘{œkI‘Cœk`‘{œk`‘Cœkc‘Ëœkc‘3 œkc‘Óœkc‘›±œkc‘;4mi‘›Bi‘{œki‘Cœk€‘{œk€‘Cœk‘KHm‘{œk‘Cœkƒ‘;Çù‰‘›ÅX‰‘{œk‰‘Cœk£‘;Çù©‘›°©‘{œk©‘CœkÑ;ÇùÉ‘›ÇoÉ‘{œkÉ‘Cœké‘›Üoé‘{œké‘Cœk ’›¨n ’{œk ’Cœk)’›o)’{œk)’CœkA’KHmA’{œkA’CœkI’›qI’{œkI’Cœki’›(qi’{œki’Cœk‰’›B‰’{œk‰’Cœk©’›ÅX©’{œk©’CœkÉ’›°É’{œkÉ’Cœké’{œké’Cœké’KHm“;Çù “{œk “Cœk “KHm)“{œk)“Cœk)“KHmI“{œkI“CœkI“KHmi“›Çoi“{œki“Cœk‰“›Üo‰“{œk‰“Cœk “{œk “Cœk©“›¨n©“{œk©“CœkÀ“{œkÀ“CœkÁ“KHmÁ“{œkÁ“CœkÉ“›oÉ“{œkÉ“Cœká“KHmá“{œká“Cœké“›qé“{œké“Cœk”KHm”{œk”Cœk ”›(q ”{œk ”Cœk#”;Çù)”›B)”{œk)”CœkI”›ÅXI”{œkI”Cœk`”{œk`”Cœka”KHma”{œka”Cœki”›°i”{œki”Cœk€”{œk€”Cœk”KHm”{œk”Cœk‰”›Ço‰”{œk‰”Cœk¡”KHm¡”{œk¡”Cœk©”›Üo©”{œk©”CœkÉ”›¨nÉ”{œkÉ”Cœká”KHmá”{œká”Cœké”›oé”{œké”Cœk•KHm•{œk•Cœk •›q •{œk •Cœk!•KHm!•{œk!•Cœk)•›(q)•{œk)•CœkI•›BI•{œkI•Cœka•KHma•{œka•Cœki•›ÅXi•{œki•Cœk‰•›°‰•{œk‰•Cœk©•{œk©•Cœk©•KHmÉ•{œkÉ•CœkÉ•KHmà•{œkà•Cœké•{œké•Cœké•KHm–{œk–Cœk –›Ço –{œk –Cœk)–›Üo)–{œk)–CœkI–›¨nI–{œkI–Cœki–›Qpi–{œki–Cœk‰–›Ço‰–{œk‰–Cœk©–›Üo©–{œk©–CœkÉ–›¨nÉ–{œkÉ–Cœké–›Qpé–{œké–Cœk —{œk —Cœk —KHm)—›Ço)—{œk)—CœkI—›ÜoI—{œkI—Cœki—{œki—Cœki—KHm‰—›Ço‰—{œk‰—Cœk©—›Üo©—{œk©—CœkÉ—{œkÉ—CœkÉ—KHmé—›Çoé—{œké—Cœk ˜›Üo ˜{œk ˜Cœk ˜{œk ˜Cœk)˜{œk)˜Cœk)˜KHm@˜{œk@˜CœkI˜›ÇoI˜{œkI˜Cœkɘ{œkɘCœkɘKHm阛Çoé˜{œké˜Cœk ™›Üo ™{œk ™Cœk)™›ío)™{œk)™CœkI™›–SI™{œkI™Cœka™KHma™{œka™Cœki™›§Si™{œki™Cœk‰™›¾W‰™{œk‰™Cœk©™›&X©™{œk©™CœkÉ™{œkÉ™CœkÉ™KHmé™›Çoé™{œké™Cœk š›Üo š{œk šCœk!šKHm!š{œk!šCœk)š›ío)š{œk)šCœkAšKHmAš{œkAšCœkIš›–SIš{œkIšCœkašKHmaš{œkašCœkiš›§Siš{œkišCœkšKHmš{œkšCœk‰š{œk‰šCœk‰šKHm¡šKHm¡š{œk¡šCœk£š‹n£š;:n©š{œk©šCœk©šKHmÁšKHmÁš{œkÁšCœkÚ;‡sÉš{œkÉšCœkÉšKHmášKHmáš{œkášCœk›KHm›{œk›Cœk ››Ço ›{œk ›Cœk!›KHm!›{œk!›Cœk#›;âø)››¨n)›{œk)›CœkC›;4mI››ÇoI›{œkI›Cœki››¨ni›{œki›Cœk‰›{œk‰›Cœk‰›KHm©››Ço©›{œk©›CœkÉ››ÜoÉ›{œkÉ›Cœké›{œké›Cœké›KHm œ{œk œCœk œKHm)œ{œk)œCœk)œKHmIœ{œkIœCœkIœKHmcœ‹ncœ;:niœ{œkiœCœkiœKHmƒœ;4m‰œ{œk‰œCœk‰œKHm¡œKHm¡œ{œk¡œCœk©œ{œk©œCœk©œKHmÀœ“ØÜ‹nÜ;:nÉœ{œkÉœCœkÉœKHmàœ“ÎkáœKHmáœ{œkáœCœk“ׂKHm{œkCœk“ßð‹n ›Ço {œk Cœk “Ø!KHm!{œk!Cœk#“Eñ#‹n)›¨n){œk)Cœk@“!×C“‹ñC‹nI›QpI{œkICœk`“ÎkaKHma{œkaCœki›bpi{œkiCœkKHm{œkCœk‰›Ço‰{œk‰Cœk©›¨n©{œk©CœkÁKHmÁ{œkÁCœkËnÃ;:nÉ›QpÉ{œkÉCœké›bpé{œkéCœkžÓœkž³œkžƒœkž‹aòž;4m ž{œk žCœk žKHm ž{œk#ž‹n#ž;:n)ž{œk)žCœk)žKHmCž‹nCž;:nIž{œkIžCœkIžKHmiž{œkižCœkižKHmƒž³œkƒžƒœkƒž‹nƒž;:n‰ž{œk‰žCœk‰žKHm£ž³œk£žƒœk£žËœk£ž‹n£ž;:n©ž{œk©žCœk©žKHmÉž{œkÉžCœkÉžKHmážKHmáž{œkážCœkãž“ õãž‹néž{œkéžCœkéžKHmŸKHmŸ{œkŸCœkŸ“KõŸ‹n Ÿ{œk ŸCœk ŸKHm#Ÿ“Œõ#Ÿ‹n)Ÿ{œk)ŸCœk)ŸKHmCŸ“ÌõCŸ‹nIŸ{œkIŸCœkIŸKHm`Ÿ{œkcŸ“ öcŸ‹niŸ{œkiŸCœkiŸKHm€Ÿ“ØŸKHmŸ{œkŸCœkƒŸ“OöƒŸ‹n‰Ÿ{œk‰ŸCœk‰ŸKHm¡ŸKHm¡Ÿ{œk¡ŸCœk£Ÿ“ö£Ÿ‹nÁŸKHmÁŸ{œkÁŸCœkß“Òöß‹nÉŸ›ÇoÉŸ{œkÉŸCœkáŸKHmáŸ{œkáŸCœk㟓÷㟋n韛¨néŸ{œkéŸCœk KHm {œk Cœk “U÷ ‹n  ›Qp  {œk  Cœk! KHm! {œk! Cœk# “—÷# ‹n) ›bp) {œk) CœkA KHmA {œkA CœkC “Ú÷C ‹nI ›oI {œkI Cœka KHma {œka Cœkc “øc ‹ni ›qi {œki Cœkƒ “^øƒ ‹n‰ ›V°‰ {œk‰ Cœk£ “žø£ ‹n© ›ˆ© {œk© Cœkà“áøà‹nÉ ›ÒæÉ {œkÉ Cœkã “$ùã ‹né ›Eé {œké Cœk¡“qù¡‹n ¡›bç ¡{œk ¡Cœk#¡“²ù#¡‹n)¡›,²)¡{œk)¡CœkC¡“#úC¡‹nI¡›=²I¡{œkI¡Cœki¡›óçi¡{œki¡Cœk‰¡›«ã‰¡{œk‰¡Cœk©¡›MÍ ©¡{œk©¡CœkÉ¡›oýÉ¡{œkÉ¡Cœké¡› ³é¡{œké¡Cœk ¢›)ä ¢{œk ¢Cœk)¢›Éý)¢{œk)¢CœkI¢›ÀäI¢{œkI¢Cœki¢›FÎ i¢{œki¢Cœk‰¢›&þ‰¢{œk‰¢Cœk©¢›I ©¢{œk©¢CœkÉ¢›¾Î É¢{œkÉ¢Cœk颛˜þé¢{œké¢Cœk £›Ä £{œk £Cœk)£›"ÿ)£{œk)£CœkI£›ÇoI£{œkI£Cœki£›¨ni£{œki£Cœk‰£›Qp‰£{œk‰£Cœk©£›bp©£{œk©£CœkÉ£›oÉ£{œkÉ£Cœk㣳œk㣃œkã£Ëœk㣋nã£;:n飛qé£{œké£Cœk ¤›V° ¤{œk ¤Cœk#¤“Úû#¤‹n)¤›ˆ)¤{œk)¤CœkC¤“0üC¤‹nI¤›ÒæI¤{œkI¤Cœkc¤“Ÿüc¤‹ni¤›Ei¤{œki¤Cœkƒ¤“àüƒ¤‹n‰¤›b牤{œk‰¤Cœk£¤“3ý£¤‹n©¤›,²©¤{œk©¤Cœkä“výä‹nɤ›=²ɤ{œkɤCœk㤓Öý㤋n餛óçé¤{œké¤Cœk ¥›«ã ¥{œk ¥Cœk)¥›MÍ )¥{œk)¥CœkI¥›oýI¥{œkI¥Cœki¥› ³i¥{œki¥Cœk‰¥›)䉥{œk‰¥Cœk©¥›Éý©¥{œk©¥CœkÉ¥›ÀäÉ¥{œkÉ¥Cœkã¥Ëœk㥋nã¥;:n饛FÎ é¥{œké¥Cœk ¦›&þ ¦{œk ¦Cœk#¦‹n#¦;:n)¦›I )¦{œk)¦CœkI¦›¾Î I¦{œkI¦Cœkc¦‹nc¦;:ni¦›˜þi¦{œki¦Cœk€¦{œk€¦Cœk‰¦›Ä ‰¦{œk‰¦Cœk ¦{œk ¦Cœk£¦‹n£¦;:n©¦›"ÿ©¦{œk©¦CœkɦSËq㦓㦋né¦Sõq§{œk§Cœk§“|§‹n#§“à#§‹n)§;µÜI§;µÜi§;µÜ‰§;µÜ §“Îk£§‹n£§;:n©§;µÜÀ§“¤lɧ;µÜã§“ã§‹né§;µÜ¨“Îk¨“c¨‹n)¨;µÜI¨;µÜc¨‹nc¨;:ni¨;µÜ€¨“ׂ‰¨;µÜ£¨“y£¨‹n©¨;µÜÁ¨KHmÁ¨{œkÁ¨Cœkè“Þè‹nɨ;µÜé¨;µÜ©“¤l©KHm©{œk©Cœk ©;µÜ ©“Îk!©KHm!©{œk!©Cœk#©‹n#©;:nA©KHmA©{œkA©CœkI©;µÜ`©“¤lc©“úc©‹ni©{œki©Cœki©KHm€©“؃©“_ƒ©‹n‰©›Ço‰©{œk‰©Cœk ©{œk ©Cœk©©›Üo©©{œk©©CœkÀ©SkmÉ©›íoÉ©{œkÉ©Cœkà©{œkà©Cœkã©‹nã©;:né©{œké©Cœké©KHmªS~m ª{œk ªCœk ªKHm ª{œk ªCœk#ª“{#ª‹n)ª{œk)ªCœk)ªKHm@ª{œk@ªCœkCª“äCª‹nIª{œkIªCœkIªKHm`ª{œk`ªCœk€ª{œk ª{œk£ª‹n£ª;:n©ª;µÜÀª{œkɪ;µÜàª{œk㪓ý㪋n«{œk «{œk «Cœk «KHm «{œk#«‹n#«;:n)«{œk)«Cœk)«KHm@«{œkC«;4mI«{œkI«CœkI«KHm`«{œkc«‹nc«;:ni«{œki«Cœki«KHm€«{œk€«Cœk‰«{œk‰«Cœk‰«KHm «{œk «Cœk£«³œk£«ƒœk£«‹n£«;:n©«{œk©«Cœk©«KHmÀ«{œkÀ«Cœk볜k냜kë‹në;:nÉ«{œkÉ«CœkÉ«KHmà«{œkà«Cœké«{œké«Cœké«KHm¬{œk¬Cœk¬“R ¬‹n ¬{œk ¬Cœk ¬KHm ¬{œk ¬Cœk#¬“¬ #¬‹n)¬{œk)¬Cœk)¬KHm@¬{œk@¬CœkC¬“ C¬‹nI¬{œkI¬CœkI¬KHm`¬{œk`¬Cœkc¬“d c¬‹ni¬SËqƒ¬“¿ ƒ¬‹n£¬“ £¬‹n©¬SËqÀ¬{œkÀ¬Cœk쓇 ì‹nɬSõqà¬{œkà¬Cœk㬓ä 㬋né¬Sr­“ ­‹n ­;µÜ#­“ó #­‹n)­;µÜC­“HC­‹nI­{œkI­CœkI­KHmi­{œki­Cœki­KHm ®;µÜ)®;µÜI®;µÜa®KHma®{œka®Cœki®;µÜ‰®;µÜ©®;µÜÀ®{œkÀ®CœkkkîËœkî‹nî;:nÉ®;µÜà®Skmé®;µÜ¯{œk¯Cœk¯““¯‹n ¯;µÜ ¯S~m#¯“'#¯‹n)¯;µÜ@¯{œk@¯CœkA¯KHmA¯{œkA¯CœkC¯“œC¯‹nI¯;µÜ`¯{œk`¯Cœka¯KHma¯{œka¯Cœkc¯“c¯‹ni¯;µÜ€¯{œk€¯Cœkƒ¯“kƒ¯‹n‰¯;µÜ£¯“¾£¯‹n©¯;µÜÀ¯{œkÀ¯Cœkï“üï‹nɯ;µÜà¯{œkà¯Cœk㯓:㯋né¯;µÜ°{œk°Cœk°“¨°‹n °;µÜ °{œk °Cœk#°“ø#°‹n@°{œk@°CœkC°“AC°‹n`°{œk`°Cœkc°“˜c°‹n€°{œk€°Cœkƒ°“탰‹n °{œk °Cœk£°“6£°‹nð“”ð‹nɰ;µÜé°{œké°Cœké°KHm ±›Ço ±{œk ±Cœk)±›Üo)±{œk)±CœkI±{œkI±CœkI±KHmi±›Çoi±{œki±Cœk€±{œk‰±›Üo‰±{œk‰±Cœk ±{œkÀ±{œké±SËq@²“ÎkI²;µÜ€²{œk‰²;µÜ ²{œkò³œkòƒœkòËœkò‹nò;:né²;µÜ³““³‹n#³“è#³‹n@³{œk@³CœkC³“(C³‹nI³;µÜ`³{œk`³Cœkc³“{c³‹ni³;µÜƒ³“‹n£³“A£³‹n©³;µÜó“, ó‹n㳓 㳋né³;µÜ´{œk´Cœk´“D!´‹n ´;µÜ ´{œk ´Cœk#´“ž!#´‹n)´;µÜC´“4"C´‹nI´;µÜc´“Ø"c´‹ni´;µÜƒ´“)#ƒ´‹n‰´;µÜ£´“#£´‹nô“$ô‹nÉ´SËqã´“¯$ã´‹né´Sõqµ“E%µ‹n µSr#µ“…%#µ‹n)µSËqCµ“Â%Cµ‹nIµSõqcµ“O&cµ‹niµSrƒµ“'ƒµ‹n‰µS'r£µ“£'£µ‹n©µS:rõ“w(õ‹nɵSMr㵓)㵋néµSZr¶{œk¶“_)¶‹n ¶Sgr ¶{œk#¶“Ù)#¶‹n)¶Str@¶{œkC¶“²*C¶‹nI¶;µÜ`¶{œkc¶“÷*c¶‹ni¶;µÜ€¶{œkƒ¶“©+ƒ¶‹n‰¶;µÜ£¶“,£¶‹nö“p,ö‹nã¶“ü,ã¶‹né¶;µÜ·“-·‹n ·SËq#·“q.#·‹n)·SõqC·“/C·‹nI·Sra·KHma·{œka·Cœkc·“Ù/c·‹ni·SËqƒ·“a0ƒ·‹n‰·Sõq£·“×0£·‹n©·Sr÷“K1÷‹nÉ·S'rã·“°1ã·‹né·SËq¸“ 2¸‹n ¸Sõq#¸“U2#¸‹n)¸SrC¸“ì2C¸‹nI¸SËqa¸KHma¸{œka¸Cœkc¸“3c¸‹ni¸Sõqƒ¸“04ƒ¸‹n‰¸Sr£¸“‚4£¸‹n©¸S'rø“"5ø‹nɸS:r㸓5㸋né¸SMr¹“6¹‹n ¹SËq#¹“è6#¹‹n)¹SõqC¹“º7C¹‹nI¹Src¹“‚8c¹‹ni¹S'rƒ¹“69ƒ¹‹n‰¹S:r£¹“ÿ9£¹‹n©¹SMrù“x:ù‹nɹSËq㹓è:㹋né¹Sõqº“S;º‹n ºSr)ºS'rIº{œkIºCœkIºKHmiº{œkiºCœkiºKHm‰º{œk‰ºCœk‰ºKHm©º{œk©ºCœk©ºKHm)»›Ço)»{œk)»CœkI»›¨nI»{œkI»Cœki»›oi»{œki»Cœk‰»›Ço‰»{œk‰»Cœk©»›¨n©»{œk©»CœkÉ»›oÉ»{œkÉ»Cœká»KHmá»{œká»Cœk¼KHm¼{œk¼Cœk!¼KHm!¼{œk!¼CœkA¼KHmA¼{œkA¼Cœka¼KHma¼{œka¼Cœk©¼SËqɼSËqé¼Sõq½“Ø ½SrA½KHmA½{œkA½Cœk`½“«€½“Îk ½“ÎkནÎk¾“Îk ¾“Ø@¾“€3`¾“ؾKHm¾{œk¾Cœk©¾{œk©¾Cœk©¾KHmɾ›Çoɾ{œkɾCœké¾›Üoé¾{œké¾Cœk¿“ׂ ¿›ío ¿{œk ¿Cœk ¿“Ø)¿›–S)¿{œk)¿Cœk@¿“ØI¿{œkI¿CœkI¿KHma¿KHma¿{œka¿Cœki¿›Çoi¿{œki¿Cœk€¿“؉¿›Üo‰¿{œk‰¿Cœk ¿“Ø©¿{œk©¿Cœk©¿KHmÀ¿“ØÉ¿›ÇoÉ¿{œkÉ¿Cœkà¿“Øé¿›Üoé¿{œké¿CœkÀ“Ø ÀSËq À“Ø)ÀSõq@À“ØIÀSr`À“ØiÀS'r‰ÀS:r©ÀSMrÉÀSZréÀSgr ÁStr)ÁSrAÁKHmAÁ{œkAÁCœkCÁ³œkCÁƒœkCÁËœkCÁ‹nCÁ;:nIÁSŽriÁS›rƒÁ“f>ƒÁ‹n‰ÁSºw£Á“Ë>£Á‹n©ÁSÖwÃÁ“'?ÃÁ‹nÉÁSãwàÁ{œkàÁCœkéÁSðwÂSkm ÂSƒ­ Â{œk ÂCœk)ÂS­@ÂS~mC‹nCÂ;:nIÂS­`Â{œk`ÂCœkiÂS²­€Â{œk€ÂCœkƒÂ“Ñ?ƒÂ‹n‰ÂS¿­ Â{œk ÂCœk£Â“+@£Â‹n©ÂSÝ­ÀÂ{œkÉÂSê­àÂ{œkáÂKHmáÂ{œkáÂCœkéÂS®Ã{œkÃKHmÃ{œkÃCœkóœkÜkËnÃ;:n ÃS® Ã{œk!ÃKHm!Ã{œk!ÃCœk)ÃS®@Ã{œkAÃKHmAÃ{œkAÃCœkCÓò@CËnIÃS(®`Ã{œkaÃKHmaÃ{œkaÃCœkcÓ^AcËniÃS5®€Ã{œk‰ÃSB® Ã{œk©ÃSËqÃóœkÃÜkÃÃËœkÃËnÃÃ;:nÉÃSõqéÃSrÄ“`BÄ‹n ÄS'r#Ä“¾B#Ä‹n)ÄS:rIÄ{œkIÄCœkIÄKHmiÄ{œkiÄCœkiÄKHmƒÄ³œkƒÄƒœkƒÄËœkƒÄ‹nƒÄ;:n‰Ä{œk‰ÄCœk‰ÄKHm©Ä{œk©ÄCœk©ÄKHmÃÄ“ÎDÃÄ‹nÉÄ{œkÉÄCœkÉÄKHmãÄ“ EãÄ‹néÄ{œkéÄCœkéÄKHmÅKHmÅ{œkÅCœkÅ“hEÅ‹n Å{œk ÅCœk ÅKHm#Å“ºE#Å‹n)Å›o)Å{œk)ÅCœkCÅ“FCÅ‹nIÅ›V°IÅ{œkIÅCœkcÅ“cFcÅ‹niÅ›oiÅ{œkiÅCœkƒÅ“ÉFƒÅ‹n‰Å›V°‰Å{œk‰ÅCœk£Å“bG£Å‹n©ÅSËqÃÅ“¥GÃÅ‹nÉÅSõqãÅ“òGãÅ‹néÅSrÆ“DHÆ‹n ÆS'r#Æ“õH#Æ‹n)ÆS:rAÆKHmAÆ{œkAÆCœkCÆ“5ICÆ‹nIÆSMraÆKHmaÆ{œkaÆCœkcÆ“IcÆ‹niÆSËqƒÆ“ÆIƒÆ‹n‰ÆSõq£Æ“J£Æ‹n©ÆSËqÁÆKHmÁÆ{œkÁÆCœkÃÆ“IJÃÆ‹nÉÆSõqáÆKHmáÆ{œkáÆCœkãÆ“îJãÆ‹néÆSrÇKHmÇ{œkÇCœkÇ“6KÇ‹n ÇS'r!ÇKHm)ÇS:rAÇKHmIÇSMraÇKHmiÇSZrÇKHm‰Ç;µÜ©Ç;µÜÉÇ{œkÉÇCœkÉÇKHméÇ{œkéÇCœkéÇKHm È{œk ÈCœk ÈKHm)È{œk)ÈCœk)ÈKHmIÈ›¨nIÈ{œkIÈCœkiÈ›¨niÈ{œkiÈCœkÉÈ;µÜéÈ;µÜ É;µÜ)É;µÜIÉ;µÜiÉ;µÜƒÉ³œkƒÉƒœkƒÉ‹nƒÉ;:n‰É;µÜ£É³œk£Éƒœk£É‹n£É;:n©É;µÜÃɳœkÃɃœkÃÉËœkÃÉ;‡sÉÉ;µÜãɳœkãɃœkãÉ‹nãÉ;:néÉ;µÜʳœkʃœkÊ‹nÊ;:n Ê;µÜ#ʳœk#ʃœk#Ê‹n#Ê;:n)Ê;µÜCʃœkCÊ;‡sIÊ;µÜcÊ{œkcʃœkcÊËœkcÊ‹ncÊ;:niÊ;µÜ‰Ê;µÜ£Ê³œk£Êƒœk£ÊËœk£Ê‹n£Ê;:n©Ê;µÜÉÊ;µÜãÊ“9PãÊ‹néÊ;µÜË“PË‹n Ë;µÜ#Ë“ÈP#Ë‹n)Ë;µÜCË“-QCË‹nIË;µÜcË““QcË‹niË;µÜ‰Ë;µÜ©Ë;µÜÉË;µÜéË;µÜ Ì;µÜ#̳œk#̃œk#Ì‹n#Ì;:n)Ì;µÜIÌ;µÜcÌ“gRcÌ‹niÌ;µÜ‰Ì;µÜ£Ì³œk£Ìƒœk£ÌËœk£Ì‹n£Ì;:n©Ì;µÜÉÌ;µÜãÌ“TãÌ‹néÌ;µÜÍ“yTÍ‹n Í;µÜ#Í“ùT#Í‹n)Í;µÜCÍ“BVCÍ‹nIÍ;µÜcÍ“ VcÍ‹niÍ;µÜƒÍ“!WƒÍ‹n‰Í;µÜ£Í“tW£Í‹n©Í;µÜÉÍSËqéÍSõq ÎSr)ÎSËqIÎSõqiÎSËq‰ÎSõq£Î³œk£Îƒœk£Î‹n£Î;:n©Î{œk©ÎCœk©ÎKHmÃγœkÃ΃œkÃ΋nÃÎ;:nÉÎ{œkÉÎCœkÉÎKHmãγœkã΃œkã΋nãÎ;:néÎ{œkéÎCœkéÎKHm Ï{œk ÏCœk ÏKHm#Ï“xY#Ï‹n)Ï›Ço)Ï{œk)ÏCœkCÏ“ÿYCÏ‹nIÏ›ÜoIÏ{œkIÏCœkiÏ›¨niÏ{œkiÏCœk‰Ï›o‰Ï{œk‰ÏCœk£Ï³œk£Ïƒœk£ÏËœk£Ï‹n£Ï;:n©Ï›Ço©Ï{œk©ÏCœkÉÏ›ÜoÉÏ{œkÉÏCœkãÏ“÷ZãÏ‹néÏ›¨néÏ{œkéÏCœkГH[Ћn Лo Ð{œk ÐCœk!ÐKHm)ÐSËqAÐKHmIÐSõqaÐKHmcгœkcЃœkcЋncÐ;:niÐSËqÐKHmƒÐ³œkƒÐƒœkƒÐ‹nƒÐ;:n‰ÐSõq¡ÐKHm£Ð³œk£Ðƒœk£Ð‹n£Ð;:n©ÐSrÁÐKHmÃгœkÃЃœkÃЋnÃÐ;:nÉÐS'ráÐKHmãгœkãЃœkãЋnãÐ;:néÐS:rÑKHmѳœkуœkÑ‹nÑ;:n Ñ{œk ÑCœk ÑKHm!ÑKHm#ѳœk#уœk#Ñ‹n#Ñ;:n)Ñ{œk)ÑCœk)ÑKHmCѳœkCуœkCÑ‹nCÑ;:nIÑ{œkIÑCœkIÑKHmcѳœkcуœkcÑ‹ncÑ;:niÑ{œkiÑCœkiÑKHmÑKHmÑ{œkÑCœkƒÑ³œkƒÑƒœkƒÑ‹nƒÑ;:n‰Ñ{œk‰ÑCœk‰ÑKHm¡ÑKHm¡Ñ{œk¡ÑCœk©Ñ{œk©ÑCœk©ÑKHmÁÑKHmÁÑ{œkÁÑCœkÃÑ“aÃÑ‹nÉÑ{œkÉÑCœkÉÑKHmãÑ“faãÑ‹néÑ{œkéÑCœkéÑKHm Ò{œk ÒCœk ÒKHm)Ò{œk)ÒCœk)ÒKHmCÒ³œkCÒƒœkCÒ‹nCÒ;:nIÒ{œkIÒCœkIÒKHmaÒKHmaÒ{œkaÒCœkcÒ³œkcÒƒœkcÒËœkcÒ‹ncÒ;:niÒ{œkiÒCœkiÒKHmÒKHmÒ{œkÒCœk‰Ò{œk‰ÒCœk‰ÒKHm¡ÒKHm¡Ò{œk¡ÒCœk£Ò“Êc£Ò‹n©Ò{œk©ÒCœk©ÒKHmÁÒKHmÁÒ{œkÁÒCœkÃÒ“dÃÒ‹nÉÒ{œkÉÒCœkÉÒKHmáÒKHmáÒ{œkáÒCœkãÒ“‘dãÒ‹néÒ{œkéÒCœkéÒKHmÓKHmÓ{œkÓCœkÓ“údÓ‹n Ó{œk ÓCœk ÓKHm Ó“¨I!ÓKHm!Ó{œk!ÓCœk#Ó“^e#Ó‹n)Ó{œk)ÓCœk)ÓKHm@Ó“ÎkAÓKHmAÓ{œkAÓCœkCÓ“ªeCÓ‹nIÓ{œkIÓCœkIÓKHmcÓ“2fcÓ‹niÓ{œkiÓCœkiÓKHm€Ó“؃ӓ“fƒÓ‹n‰Ó{œk‰ÓCœk‰ÓKHm Ó“Îk¡ÓKHm¡Ó{œk¡ÓCœk£Ó“Ûf£Ó‹n©Ó{œk©ÓCœk©ÓKHmÁÓKHmÁÓ{œkÁÓCœkÃÓ“;gÃÓ‹nÉÓ›ÇoÉÓ{œkÉÓCœkáÓKHmáÓ{œkáÓCœkãÓ“ThãÓ‹néÓ›¨néÓ{œkéÓCœk Ô›o Ô{œk ÔCœk Ô“ÁM)Ô›V°)Ô{œk)ÔCœkIÔ›ÒæIÔ{œkIÔCœkiÔ›bçiÔ{œkiÔCœk€Ô“Îk‰Ô›óç‰Ô{œk‰ÔCœk Ô“ÂQ©Ô›oý©Ô{œk©ÔCœkÉÔ›ÉýÉÔ{œkÉÔCœkéÔ›&þéÔ{œkéÔCœk Õ›˜þ Õ{œk ÕCœk)Õ›"ÿ)Õ{œk)ÕCœkIÕ›ÿIÕ{œkIÕCœkcÕ³œkcÕƒœkcÕËœkcÕ‹ncÕ;:niÕ›iÕ{œkiÕCœk€Õ{œk‰Õ›! ‰Õ{œk‰ÕCœk Õ{œk£Õ“0j£Õ‹n©Õ›’ ©Õ{œk©ÕCœkÀÕ{œkÃÕ“­jÃÕ‹nÉÕ›] ÉÕ{œkÉÕCœkàÕ{œkãÕ“ kãÕ‹néÕ›Ò éÕ{œkéÕCœkÖ{œkÖ“dkÖ‹n Ö›2 Ö{œk ÖCœk#Ö“Õk#Ö‹n)Ö›Ço)Ö{œk)ÖCœkCÖ“9lCÖ‹nIÖ›¨nIÖ{œkIÖCœkcÖ“‘lcÖ‹niÖ›oiÖ{œkiÖCœkƒÖ“èlƒÖ‹n‰Ö›V°‰Ö{œk‰ÖCœk£Ö“Qm£Ö‹n©Ö›Òæ©Ö{œk©ÖCœkÃÖ“ŸmÃÖ‹nÉÖ›bçÉÖ{œkÉÖCœkéÖ›óçéÖ{œkéÖCœk ×›oý ×{œk ×Cœk)×›Éý)×{œk)×CœkI×›&þI×{œkI×Cœki×›˜þi×{œki×Cœk‰×›"ÿ‰×{œk‰×Cœk©×›ÿ©×{œk©×CœkÉ×›É×{œkÉ×Cœká×KHmá×{œká×Cœké×›! é×{œké×Cœk Ø›’ Ø{œk ØCœk#سœk#؃œk#Ø‹n#Ø;:n)Ø›] )Ø{œk)ØCœkCسœkC؃œkCØËœkCØ‹nCØ;:nIØ›Ò IØ{œkIØCœkiØ›2 iØ{œkiØCœkƒØ“‰oƒØ‹n‰ØSËq£Ø“p£Ø‹n©ØSõqÃØ“fpÃØ‹nÉØ{œkÉØCœkÉØKHmãØ“×pãØ‹néØ{œkéØCœkéØKHmÙ“>qÙ‹n Ù{œk ÙCœk ÙKHm#Ù“‹q#Ù‹n)Ù{œk)ÙCœk)ÙKHmCÙ“ÓqCÙ‹nIÙ{œkIÙCœkIÙKHmcÙ“=rcÙ‹niÙ{œkiÙCœkiÙKHm‰Ù{œk‰ÙCœk‰ÙKHm©Ù{œk©ÙCœk©ÙKHmÉÙ{œkÉÙCœkÉÙKHmàÙ“ÎkéÙ{œkéÙCœkéÙKHmÚ“ׂ Ú{œk ÚCœk ÚKHm Ú“Îk)Ú{œk)ÚCœk)ÚKHm@Ú“ÎkIÚ{œkIÚCœkIÚKHmiÚ{œkiÚCœkiÚKHmƒÚ³œkƒÚƒœkƒÚ‹nƒÚ;:n‰Ú{œk‰ÚCœk‰ÚKHm£Ú³œk£Úƒœk£Ú‹n£Ú;:n©Ú{œk©ÚCœk©ÚKHmÃÚ³œkÃÚƒœkÃÚ‹nÃÚ;:nÉÚ{œkÉÚCœkÉÚKHmãÚ³œkãÚƒœkãÚËœkãÚ‹nãÚ;:néÚ{œkéÚCœkéÚKHm Û{œk ÛCœk ÛKHm#Û“Õt#Û‹n)Û{œk)ÛCœk)ÛKHmCÛ“)uCÛ‹nIÛ{œkIÛCœkIÛKHmcÛ“¨ucÛ‹niÛ{œkiÛCœkiÛKHm‰Û{œk‰ÛCœk‰ÛKHm©Û{œk©ÛCœk©ÛKHmÉÛ{œkÉÛCœkÉÛKHmãÛ³œkãÛƒœkãÛËœkãÛ‹nãÛ;:néÛ{œkéÛCœkéÛKHm Ü{œk ÜCœk ÜKHm#Ü“œv#Ü‹n)Ü{œk)ÜCœk)ÜKHmCÜ“ïvCÜ‹nIÜ{œkIÜCœkIÜKHmcÜ“mwcÜ‹niÜ{œkiÜCœkiÜKHm‰Ü{œk‰ÜCœk‰ÜKHm Ü“òZ©Ü{œk©ÜCœk©ÜKHmÉÜ{œkÉÜCœkÉÜKHmãܳœkã܃œkãÜ‹nãÜ;:néÜ{œkéÜCœkéÜKHm Ý{œk ÝCœk ÝKHm#Ý“7x#Ý‹n)Ý{œk)ÝCœk)ÝKHmCÝ“…xCÝ‹nIÝ{œkIÝCœkIÝKHmiÝ{œkiÝCœkiÝKHm€Ý“ׂ‰Ý{œk‰ÝCœk‰ÝKHm£Ý³œk£Ýƒœk£Ý‹n£Ý;:n©Ý{œk©ÝCœk©ÝKHmÀÝ“ÎkÃݳœkÃ݃œkÃÝ‹nÃÝ;:nÉÝ{œkÉÝCœkÉÝKHméÝ{œkéÝCœkéÝKHm Þ›oý Þ{œk ÞCœk Þ“Îk)Þ›oý)Þ{œk)ÞCœkCÞËœkCÞ‹nCÞ;:nIÞ{œkIÞCœkIÞKHm`Þ“ׂcÞ³œkcÞƒœkcÞ‹ncÞ;:niÞ›ÇoiÞ{œkiÞCœkƒÞ³œkƒÞƒœkƒÞ‹nƒÞ;:n‰Þ{œk‰ÞCœk‰ÞKHm£Þ³œk£Þƒœk£Þ‹n£Þ;:n©Þ›Ço©Þ{œk©ÞCœkÃÞ³œkÃÞƒœkÃÞËœkÃÞ‹nÃÞ;:nÉÞ›ÜoÉÞ{œkÉÞCœkéÞ›íoéÞ{œkéÞCœkß“7|ß‹n ß{œk ßCœk ßKHm ß“Qa#ß“—|#ß‹n)ß›Ço)ß{œk)ßCœkIß›ÜoIß{œkIßCœkiß›íoiß{œkißCœk€ß“ׂßKHmß{œkßCœkƒß;4m‰ß{œk‰ßCœk‰ßKHm¡ßKHm¡ß{œk¡ßCœk©ß›Ço©ß{œk©ßCœkÁßKHmÁß{œkÁßCœkÉß›ÜoÉß{œkÉßCœkáßKHmáß{œkáßCœkéß{œkéßCœkéßKHmàKHmà{œkàCœk à›Ço à{œk àCœk à“ׂ!àKHm!à{œk!àCœk)à›Üo)à{œk)àCœk@à“7gIà{œkIàCœkIàKHm`à“Îkià›Çoià{œkiàCœk‰à›Üo‰à{œk‰àCœk à“Îk©à{œk©àCœk©àKHmÀà“ÎkÉà›ÇoÉà{œkÉàCœkàà“Øéà›Üoéà{œkéàCœká“Øá‹ná;:n á{œk áCœk áKHm á“ׂ)á›Ço)á{œk)áCœk@á“ׂIá›ÜoIá{œkIáCœk`ᓤlcá‹ncá;:niá{œkiáCœkiáKHm€á“Îk‰á›Ço‰á{œk‰áCœk á“€3£á‹n£á;:n©á›Üo©á{œk©áCœkÀá“ÎkÉá{œkÉáCœkÉáKHmàá“Îkãá“_ãá‹néá›Çoéá{œkéáCœkâ“Îkâ“Ìâ‹n â›Üo â{œk âCœk â“Îk)â{œk)âCœk)âKHm@â“ÎkIâ›ÇoIâ{œkIâCœk`â“ØcâËœkc⃜kcⳜkcâ‹ncâ;:niâ›Üoiâ{œkiâCœk‰â›ío‰â{œk‰âCœk â{œk âCœk£â“Û‚£â‹n©â{œk©âCœk©âKHmÀâSkmÃâ“/ƒÃâ‹nÉâ›ÇoÉâ{œkÉâCœkàâ{œkàâCœkãâ“¢ƒãâ‹néâ›Üoéâ{œkéâCœkãS~mã“÷ƒã‹n ã{œk ãCœk ãKHm ã{œk ãCœk!ãKHm!ã{œk!ãCœk#ã“T„#ã‹n)ã›Ço)ã{œk)ãCœk@ã{œk@ãCœkCã“´„Cã‹nIã›ÜoIã{œkIãCœk`ã{œk`ãCœkcã“ …cã‹niã›íoiã{œkiãCœk€ã{œkƒã“j…ƒã‹n‰ãSËq ã{œk£ã“È…£ã‹n©ãSõqÀã{œkÃã“.†Ãã‹nÉãSràã{œkãã“—†ãã‹nä{œk䓇ä‹n ä{œk)ä{œk)äCœk)äKHm@ä{œkIä›ÇoIä{œkIäCœk`ä{œkiä›Üoiä{œkiäCœk€ä{œk€äCœk‰ä›ío‰ä{œk‰äCœk ä{œk äCœk©ä›–S©ä{œk©äCœkÀä{œkÀäCœkÉä›§SÉä{œkÉäCœkàä{œkàäCœké䛾Wéä{œkéäCœkå{œkåCœk å{œk åCœk åKHm å{œk åCœk)å›Ço)å{œk)åCœkIå›ÜoIå{œkIåCœkiå›íoiå{œkiåCœk‰å›–S‰å{œk‰åCœk£å;hv©å›§S©å{œk©åCœkÃå;4mÉ图WÉå{œkÉåCœkãå;4méå›&Xéå{œkéåCœk æSËq)æSõqIæSriæS'rƒæ;Çù‰æS:r©æSMrÃæ;âøÉæSZrãæ;âøéæSgr çStr)çSrIçSŽr`ç{œk`çCœkiçS›r€çSkm‰çSºw ç{œk çCœk©çSÖwÀçS~mÉçSãwàç{œkàçCœkãçËœkãç;âøéçSðwè{œkèCœkèËœkè;âø èSƒ­ è{œk èCœk)èS­@è{œk@èCœkCè;âøIèS­`è{œk`èCœkièS²­€è{œk€èCœk‰èS¿­ è{œk èCœk©èSÝ­Àè{œkÀèCœkÉèSê­àè{œkàèCœkéèS®é{œkéCœk éS® é{œk éCœk)éS®AéKHmAé{œkAéCœkIéS(®aéKHmaé{œkaéCœkiéS5®éKHmé{œkéCœk‰éSB®©éSO®ÉéS\®ãé‹nãé;:nééSi®êKHmê{œkêCœkê;4m êSv®!êKHm!ê{œk!êCœk)êSƒ®AêKHmAê{œkAêCœkIêS®aêKHmaê{œkaêCœkiêS®êKHmê{œkêCœk‰êSª®©êS·®ÁêKHmÁê{œkÁêCœkÉêSÄ®áêKHmáê{œkáêCœkãê;ÇùéêSÑ®ëKHmë{œkëCœkë‹në;:n ëSÞ®!ëKHm!ë{œk!ëCœk#ë‹n#ë;:n)ëSë®Cë;ÇùIëS¯aëKHmaë{œkaëCœkcë;ÇùiëS¯ëKHmë{œkëCœkƒë;Çù‰ëS¯¡ëKHm¡ë{œk¡ëCœk£ë;Çù©ëS1¯ÁëKHmÁë{œkÁëCœkÉëS>¯ãë;âøéëSK¯ ìSX¯)ìSe¯AìKHmAì{œkAìCœkCì;âøIìSr¯aìKHmaì{œkaìCœkcì‹ncì;:niìS¯ìKHmì{œkìCœk‰ìSŒ¯¡ìKHm¡ì{œk¡ìCœk£ì;4m©ìS™¯ÁìKHmÁì{œkÁìCœkÉìS¦¯áìKHmáì{œkáìCœkéìS³¯ íSÀ¯)íSͯIíSÚ¯iíS築íSô¯©íS°ÉíS°éíS° îS(°#î‹n#î;:n)îS5°IîSH°iîSU°‰îSb°©îSo°ÉîS|°éîS‰° ïS–°#ï;‡s)ïS£°IïS°°iïS½°‰ïSʰ©ïS×°ÉïSä°éïSñ°ð;Çù ðSþ°)ðS ±Cð;ÇùIðS±cð;ÇùiðS+±‰ðS8±©ðSE±ÉðSR±éðS_± ñSl±)ñSy±IñS†±iñS“±‰ñS ± ñ{œk©ñS­±Àñ{œkÃñ;ÇùÉñSº±éñSDZò;Çù òSÚ± ò“¨I)òSç±@ò“[IòSô±`ò“ÎkiòS²€ò“Îk‰òS² ò“Ø©òS²Éò;µÜ ó“Îk)ó;µÜ€óSkm ó{œk óCœk£ó;âøÀó{œkÀóCœkàó{œkàóCœkô{œkôCœk ô{œk ôCœk)ô;µÜIô;µÜcô;‡siô;µÜ‰ô;µÜ©ô;µÜÉô;µÜéô;µÜ õ;µÜ õ{œk)õSËq@õ{œkIõSõq`õ{œkiõSËq€õ{œk õ{œk©õSËqÀõ{œkÉõSõqàõ{œkö{œk öSËq)öSõqiöSËq‰öSõq©öSËqÉöSõqéöSr ÷SËq)÷SËqI÷Sõqi÷SËq‰÷Sõq©÷SËqÉ÷SËqé÷SËq øSõq)øSËqIøSõqiøSËq‰øSõq©øSrÀø{œkÀøCœkÃø;âøÉø{œkÉøCœkÉøKHmàø{œkàøCœkãø‹nãø;:néø{œkéøCœkéøKHm ù{œk ùCœk ùKHm ù{œk ùCœk#ù;âø)ù{œk)ùCœk)ùKHm@ù{œk@ùCœkIù{œkIùCœkIùKHm`ù{œk`ùCœkiù{œkiùCœkiùKHm€ù{œk€ùCœk‰ù{œk‰ùCœk‰ùKHm ù{œk ùCœk©ù{œk©ùCœk©ùKHmÀù{œkÀùCœkÉù{œkÉùCœkÉùKHméù{œkéùCœkéùKHmú“Îk ú{œk úCœk úKHm ú“Îk#ú‹n#ú;:n)ú{œk)úCœk)úKHm@ú“ÎkIú{œkIúCœkIúKHm`ú“Îkiú{œkiúCœkiúKHm€ú“Îkƒú‹nƒú;:n‰ú{œk‰úCœk‰úKHm ú“Îk£ú;hv©ú{œk©úCœk©úKHmÀú{œkÉú{œkÉúCœkÉúKHmàú{œkéú{œkéúCœkéúKHmû;âø û{œk ûCœk ûKHm)û{œk)ûCœk)ûKHmCû;âøIû{œkIûCœkIûKHm`û“Îkiû{œkiûCœkiûKHmƒû;âø‰û{œk‰ûCœk‰ûKHm©ûSËqÀû{œkÀûCœkÉûSõqàû{œkàûCœkãû;‡sü{œküCœkü;Çù üSËq ü{œk)üSõq@ü{œkCü;¯ÜCü;‡s`ü{œk€ü{œk ü{œk©ü{œk©üCœk©üKHmÀü{œkÉü{œkÉüCœkÉüKHmàü{œkéü{œkéüCœkéüKHmý{œk ý›Ço ý{œk ýCœk ý{œk)ý›Üo)ý{œk)ýCœkIý›¨nIý{œkIýCœkiý›Qpiý{œkiýCœk€ý“Îk‰ý›Ço‰ý{œk‰ýCœk©ý›Üo©ý{œk©ýCœkÉý›¨nÉý{œkÉýCœkàý“Îkéý›Qpéý{œkéýCœkþ“Îk þ“¤l)þ;µÜ@þ“!×Iþ;µÜ`þ“!×iþ;µÜ€þ“ׂ‰þ;µÜ©þ;µÜÀþ“ׂÁþKHmÁþ{œkÁþCœkÉþ;µÜàþ“ׂéþ;µÜÿ“Ø ÿ;µÜ ÿ“Ø)ÿ;µÜ@ÿ“ÎkAÿKHmAÿ{œkAÿCœkIÿ;µÜ`ÿ“ׂaÿKHmaÿ{œkaÿCœk€ÿ“ׂÿKHmÿ{œkÿCœk ÿ“Îk¡ÿKHm¡ÿ{œk¡ÿCœkÀÿ“ØÁÿKHmÁÿ{œkÁÿCœkàÿ“Îk“ØKHm{œkCœk “ׂ “ׂ@{œk`{œk€{œk {œkÀ{œkÉ;µÜà{œké;µÜ{œk SËq {œk)Sõq@{œkISr`{œkiSËq€{œk‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ{œkÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHm“ׂ ›Ço {œk Cœk {œk Cœk)›¨n){œk)Cœk@“ÎkI›oI{œkICœk`“Îki›Çoi{œkiCœk‰›¨n‰{œk‰Cœk©›o©{œk©Cœk ;µÜ);µÜ@“ׂI;µÜ`“Îki;µÜ‰;µÜ©;µÜÀ“ÎkÁKHmÁ{œkÁCœkÉ;µÜà“ÎkáKHmá{œkáCœké;µÜKHm{œkCœk ;µÜ!KHm!{œk!Cœk);µÜAKHmA{œkACœkI;µÜ`“ÎkaKHma{œkaCœki;µÜKHm{œkCœk‰;µÜ¡KHm¡{œk¡Cœk©;µÜÁKHmÁ{œkÁCœkÉ;µÜé;µÜ ;µÜ);µÜ@“ÂQAKHmA{œkACœkI;µÜaKHma{œkaCœki;µÜKHm{œkCœk‰;µÜ¡KHm¡{œk¡Cœk©;µÜÀ“ÎkÁKHmÁ{œkÁCœkÉ;µÜà“¢9é;µÜ{œkCœkKHm{œkCœk ;µÜ!KHm!{œk!Cœk);µÜAKHmA{œkACœkI;µÜaKHma{œkaCœki;µÜ€“òZKHm{œkCœk‰;µÜ “Ø©;µÜÁKHmÁ{œkÁCœkÉ;µÜà“ÎkáKHmá{œkáCœkã;Çùé;µÜ“ÎkKHm{œkCœk ;µÜ “Îk);µÜ@“ÎkI;µÜ`“Îki;µÜKHm{œkCœk‰;µÜ©;µÜÀ“¤lÁKHmÁ{œkÁCœkÉ;µÜà“¤láKHmá{œkáCœké;µÜ KHm {œk Cœk ;µÜ “Îk! KHm! {œk! Cœk) ;µÜ@ “ÎkA KHmA {œkA CœkI ;µÜa KHma {œka Cœki ;µÜ€ “Ø KHm {œk Cœk‰ ;µÜ  “Îk¡ KHm¡ {œk¡ Cœk© ;µÜÀ “ÎkÉ ;µÜà “Îké ;µÜ “Îk KHm {œk Cœk ;µÜ “Îk! KHm! {œk! Cœk) ;µÜ@ “ÎkA KHmA {œkA CœkC ;âøI ;µÜa KHma {œka Cœki ;µÜ€ “Îk KHm {œk Cœk‰ ;µÜ  “Ø¡ KHm¡ {œk¡ Cœk© ;µÜÀ {œkÁ KHmÁ {œkÁ CœkÉ ;µÜà “Îká KHmá {œká Cœkã ;âøé ;µÜ ;µÜ “Îk) ;µÜ@ “ØI ;µÜ` “Q­€ “ׂƒ ;‡s  “ׂ£ ;‡sÀ “ׂà ;‡sà “1Qá KHmá {œká Cœkã ;‡s “m± KHm {œk Cœk “¯²! KHm! {œk! Cœk@ “³A KHmA {œkA Cœk` “m±€ “m±ƒ ;‡s  “ò³£ ³œk£ ƒœk£ ;‡sÀ “Eµà “ë¶` “ׂ€ “Q­  “>»À “ò³à “ë¶“ë¶ “ׂ@“ׂC;Çù`“1Q€“Îk “¤lÀ“¤là“Q‹“m± “~Â!KHm!{œk!Cœk#;Çù@“ò³`{œk€“!× “ØÀ“Øà“ØáKHmá{œkáCœk“òZ “ׂ!KHm!{œk!Cœk@“[`“Ø€“u’ {œkÀ“u’à“Q­áKHmá{œkáCœk“Îk@“ׂ`“ׂ€{œk “ØÀ“m±Ã;Çùà“ò³ãÓœkã‹nã;:n {œk#“$:#‹n@“ׂC“:C‹n`“ׂc“ò:c‹nà“ØãË\œkã;4m“«;4m “«#;4m@“«C;4m`“«aKHma{œkaCœkc;4m€“ׂƒ;4m¡KHm¡{œk¡Cœk£;4mÀ“ÎkÃ;‡sà“Îk㳜kボkã;‡s“Îk “Îk#;4mAKHmA{œkACœkc;4mƒ‹nƒ;:n£‹n£;:nËnÃ;:n㳜kボkã;‡s{œkCœk³œkƒœk;‡s Skm@{œk@Cœk`{œk`Cœk€{œk {œkÀ{œkà{œk{œk {œk@{œk`{œk {œk CœkÀSkmà{œkàCœkS~m {œk Cœk@S‹m`{œk`Cœk€S⢃;hv {œk CœkÀSï¢à{œkàCœkSü¢ {œk Cœk@S £`{œk`Cœk€S£ {œk CœkÀS#£à{œkàCœkã‹nã;:n{œkCœk {œk Cœk#“ÊG#‹n@{œk@CœkC“7HC‹n`{œk`Cœk€{œk€Cœk {œk Cœk£;‡sÀ{œkÀCœkÃ;Çùà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkã;Çù{œkCœk;Çù {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk;‡s {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk Cœk£ ;‡sà ;âøã ;âøƒ!;Çù !{œk !CœkÀ!{œkÀ!Cœk#"‹n#";:nc"“›ac"‹n€"{œkƒ"“kbƒ"‹n "{œkÀ"{œkà"{œkã";Çù#{œk#KHm#{œk#Cœka#KHma#{œka#Cœk %{œk!%KHm!%{œk!%Cœk#%;âø@%{œkC%;âø`%{œk€%{œkƒ%;âø %{œk£%;‡sÀ%{œkÃ%;‡sà%{œkã%;4m&{œkc&;‡sƒ&‹nƒ&;:n¡&KHm¡&{œk¡&CœkÁ&KHmÁ&{œkÁ&CœkÃ&“ιÃ&‹nã&“Aºã&‹n'KHm'{œk'Cœk'“³º'‹n!'KHm!'{œk!'CœkA'KHmA'{œkA'Cœka'KHma'{œka'Cœk'KHm'{œk'Cœkƒ'Ë\œkƒ';4m¡'KHm¡'{œk¡'Cœk£'³œk£'ƒœk£';‡sÁ'KHmÁ'{œkÁ'CœkÃ'³œkÃ'ƒœkÃ'‹nÃ';:ná'KHmá'{œká'Cœk({œk(KHm({œk(Cœk(“Œ¾(‹n ({œk!(KHm!({œk!(Cœk#(“ò¾#(‹n@({œkA(KHmA({œkA(CœkC(“¿C(‹n`({œka(KHma({œka(Cœkc(“DÀc(‹n€({œk(KHm({œk(Cœkƒ(“êÀƒ(‹n ({œk¡(KHm¡({œk¡(Cœk£(“QÁ£(‹nÁ(KHmÁ({œkÁ(CœkÃ(“úÁÃ(‹ná(KHmá({œká(Cœkã(“ŸÂã(‹n)KHm){œk)Cœk)“PÃ)‹n#)“7Ä#)‹nC)“ÄC)‹nc)“Åc)‹n)KHm){œk)Cœkƒ)“ÐŃ)‹n¡)KHm¡){œk¡)Cœk£)“?Æ£)‹nÁ)KHmÁ){œkÁ)CœkÃ)“ðÆÃ)‹ná)KHmá){œká)Cœkã)“´Çã)‹n*KHm*{œk*Cœk*“iÈ*‹n!*KHm!*{œk!*Cœk#*“NÉ#*‹nC*“ÊC*‹n*KHm*{œk*Cœk *{œk¡*KHm¡*{œk¡*CœkÀ*{œkÁ*KHmÁ*{œkÁ*CœkÉ*;µÜá*KHmá*{œká*Cœké*;µÜ+KHm+{œk+Cœk +;µÜá+KHmá+{œká+Cœk€.{œk€.Cœk .{œk .Cœka1KHma1{œka1CœkÁ1KHmÁ1{œkÁ1Cœk2KHm2{œk2Cœk)6;µÜI6;µÜi6;µÜ‰6;µÜ©6;µÜÉ6;µÜ©;;µÜÉ;;µÜé;;µÜ <;µÜ)<;µÜI<;µÜi<;µÜ‰<;µÜ©<;µÜÉ<;µÜé<;µÜ =;µÜ)=;µÜI=;µÜi=;µÜ‰=;µÜ¡=KHm¡={œk¡=Cœk©=;µÜÁ=KHmÁ={œkÁ=CœkÉ=;µÜé=;µÜ >;µÜ)>;µÜI>;µÜi>;µÜ‰>;µÜ©>;µÜÉ>;µÜé>;µÜ ?;µÜ)?;µÜI?;µÜi?;µÜ‰?;µÜ©?;µÜÉ?;µÜé?;µÜ @;µÜ)@;µÜI@;µÜi@;µÜ‰@;µÜ©@;µÜÉ@;µÜé@;µÜ A;µÜ)A;µÜIA;µÜiA;µÜ‰A;µÜ¡AKHm©A;µÜÁAKHmÃA;‡sÉA;µÜáAKHmãA‹nãA;:néA;µÜBKHmB{œkBCœk#B“†Ò#B‹nIB;µÜcB‹ncB;:niB;µÜƒB‹nƒB;:n‰B;µÜ¡BKHm¡B{œk¡BCœk£B‹n£B;:n©B;µÜÁBKHmÁB{œkÁBCœkÃB‹nÃB;:náBKHmáB{œkáBCœkãB‹nãB;:néB;µÜCKHmC{œkCCœkC‹nC;:n C;µÜ!CKHm!C{œk!CCœk#C‹n#C;:n)C;µÜACKHmAC{œkACCœkCC‹nCC;:nIC;µÜcC‹ncC;:niC;µÜƒC‹nƒC;:n‰C{œk‰CCœk‰CKHm£C‹n£C;:n©C{œk©CCœk©CKHmÃC‹nÃC;:nÉC{œkÉCCœkÉCKHmãC‹nãC;:néC{œkéCCœkéCKHmDKHmD{œkDCœk D›Ço D{œk DCœk)D›Ço)D{œk)DCœkID{œkIDCœkIDKHmiD›ÇoiD{œkiDCœkƒDÓœkƒD;‡s‰D{œk‰DCœk‰DKHm£D‹n£D;:n©D{œk©DCœk©DKHmÃD‹nÃD;:nÉD{œkÉDCœkÉDKHmãD³œkãDƒœkãD;‡séD{œkéDCœkéDKHm E{œk ECœk EKHm)E{œk)ECœk)EKHmIE{œkIECœkIEKHmiE{œkiECœkiEKHm‰E{œk‰ECœk‰EKHm©E{œk©ECœk©EKHmÉE{œkÉECœkÉEKHmáEKHmáE{œkáECœkéE{œkéECœkéEKHmFKHmF{œkFCœk F{œk FCœk FKHm!FKHm!F{œk!FCœk)F{œk)FCœk)FKHmAFKHmAF{œkAFCœkIF{œkIFCœkIFKHmaFKHmaF{œkaFCœkiF{œkiFCœkiFKHmFKHmF{œkFCœk‰F{œk‰FCœk‰FKHm¡FKHm¡F{œk¡FCœk©F{œk©FCœk©FKHmÁFKHmÁF{œkÁFCœkÉF{œkÉFCœkÉFKHmáFKHmáF{œkáFCœkéF{œkéFCœkéFKHmGKHmG{œkGCœk G{œk GCœk GKHm!GKHm!G{œk!GCœk)G{œk)GCœk)GKHmAGKHmAG{œkAGCœkIG{œkIGCœkIGKHmaGKHmaG{œkaGCœkiG{œkiGCœkiGKHmGKHmG{œkGCœkƒG;Çù‰G{œk‰GCœk‰GKHm¡GKHm¡G{œk¡GCœk©G{œk©GCœk©GKHmÁGKHmÁG{œkÁGCœkÉG{œkÉGCœkÉGKHmáGKHmáG{œkáGCœkéG{œkéGCœkéGKHmHKHmH{œkHCœk H{œk HCœk HKHm!HKHm!H{œk!HCœk)H{œk)HCœk)HKHmAHKHmAH{œkAHCœkIH{œkIHCœkIHKHmaHKHmaH{œkaHCœkiH{œkiHCœkiHKHmHKHmH{œkHCœk‰H{œk‰HCœk‰HKHm¡HKHm¡H{œk¡HCœk©H{œk©HCœk©HKHmÁHKHmÁH{œkÁHCœkÉH{œkÉHCœkÉHKHmáHKHmáH{œkáHCœkéH{œkéHCœkéHKHmIKHmI{œkICœk I{œk ICœk IKHm!IKHm!I{œk!ICœk#I;Çù)I{œk)ICœk)IKHmAIKHmAI{œkAICœkII{œkIICœkIIKHmaIKHmaI{œkaICœkiI{œkiICœkiIKHmIKHmI{œkICœk‰I{œk‰ICœk‰IKHm¡IKHm¡I{œk¡ICœk©I{œk©ICœk©IKHmÁIKHmÁI{œkÁICœkÃI;ÇùÉI{œkÉICœkÉIKHmáIKHmáI{œkáICœkéI{œkéICœkéIKHmJKHmJ{œkJCœk J{œk JCœk JKHm!JKHm!J{œk!JCœk)J{œk)JCœk)JKHmAJKHmAJ{œkAJCœkIJ{œkIJCœkIJKHmaJKHmaJ{œkaJCœkiJ{œkiJCœkiJKHmJKHmJ{œkJCœk‰J{œk‰JCœk‰JKHm¡JKHm¡J{œk¡JCœk©J{œk©JCœk©JKHmÁJKHmÁJ{œkÁJCœkÉJ{œkÉJCœkÉJKHmáJKHmáJ{œkáJCœkéJ{œkéJCœkéJKHmKKHmK{œkKCœk K{œk KCœk KKHm!KKHm!K{œk!KCœk)K{œk)KCœk)KKHmAKKHmAK{œkAKCœkIK{œkIKCœkIKKHmaKKHmaK{œkaKCœkiK{œkiKCœkiKKHmKKHmK{œkKCœk‰K{œk‰KCœk‰KKHm¡KKHm¡K{œk¡KCœk©K{œk©KCœk©KKHmÁKKHmÁK{œkÁKCœkÉK{œkÉKCœkÉKKHmáKKHmáK{œkáKCœkéK{œkéKCœkéKKHmLKHmL{œkLCœk L{œk LCœk LKHm!LKHm!L{œk!LCœk)L{œk)LCœk)LKHmALKHmAL{œkALCœkIL{œkILCœkILKHmaLKHmaL{œkaLCœkiL{œkiLCœkiLKHmLKHmL{œkLCœk‰L{œk‰LCœk‰LKHm¡LKHm¡L{œk¡LCœk©L{œk©LCœk©LKHmÁLKHmÁL{œkÁLCœkÉL{œkÉLCœkÉLKHmáLKHmáL{œkáLCœkéL{œkéLCœkéLKHmMKHmM{œkMCœk M{œk MCœk MKHm!MKHm!M{œk!MCœk)M{œk)MCœk)MKHmAMKHmAM{œkAMCœkIM{œkIMCœkIMKHmiM{œkiMCœkiMKHm‰M{œk‰MCœk‰MKHm©M{œk©MCœk©MKHmÉM{œkÉMCœkÉMKHmáMKHmáM{œkáMCœkéM{œkéMCœkéMKHmN;Çù N{œk NCœk NKHm)N{œk)NCœk)NKHmCN;ÇùIN{œkINCœkINKHmiN{œkiNCœkiNKHm‰N{œk‰NCœk‰NKHm©N{œk©NCœk©NKHmÉN{œkÉNCœkÉNKHméN{œkéNCœkéNKHmOKHmO{œkOCœk O{œk OCœk OKHm!OKHm!O{œk!OCœk)O{œk)OCœk)OKHmAOKHmAO{œkAOCœkIO{œkIOCœkIOKHmaOKHmaO{œkaOCœkiO{œkiOCœkiOKHmOKHmO{œkOCœk‰O{œk‰OCœk‰OKHm¡OKHm¡O{œk¡OCœk©O{œk©OCœk©OKHmÁOKHmÁO{œkÁOCœkÉO{œkÉOCœkÉOKHmáOKHmáO{œkáOCœkéO{œkéOCœkéOKHmPKHmP{œkPCœk P{œk PCœk PKHm P“Îk!PKHm!P{œk!PCœk)P{œk)PCœk)PKHm@P“ØAPKHmAP{œkAPCœkIP{œkIPCœkIPKHm`P“ׂaPKHmaP{œkaPCœkiP{œkiPCœkiPKHm€P“¤lPKHmP{œkPCœk‰P{œk‰PCœk‰PKHm P“Ø¡PKHm¡P{œk¡PCœk©P{œk©PCœk©PKHmÀP“¤lÁPKHmÁP{œkÁPCœkÉP{œkÉPCœkÉPKHmàP“ÎkáPKHmáP{œkáPCœkéP{œkéPCœkéPKHmQ“ׂQKHmQ{œkQCœk Q{œk QCœk QKHm Q“¤l!QKHm!Q{œk!QCœk)Q{œk)QCœk)QKHm@Q“úiAQKHmAQ{œkAQCœkIQ{œkIQCœkIQKHm`Q“ØaQKHmaQ{œkaQCœkiQ{œkiQCœkiQKHmQKHmQ{œkQCœk‰Q{œk‰QCœk‰QKHm Q“Îk¡QKHm¡Q{œk¡QCœk©Q{œk©QCœk©QKHmÁQKHmÁQ{œkÁQCœkÉQ{œkÉQCœkÉQKHmáQKHmáQ{œkáQCœkéQ{œkéQCœkéQKHmRKHmR{œkRCœk R{œk RCœk RKHm!RKHm!R{œk!RCœk)R{œk)RCœk)RKHm@R“ÎkARKHmAR{œkARCœkIR{œkIRCœkIRKHmaRKHmaR{œkaRCœkiR{œkiRCœkiRKHmRKHmR{œkRCœk‰R›Ò4‰R{œk‰RCœk R“Îk¡RKHm¡R{œk¡RCœk©R›j5©R{œk©RCœkÀR“ÎkÁRKHmÁR{œkÁRCœkÉR›é5ÉR{œkÉRCœkàR“ÎkáRKHmáR{œkáRCœkéR›Æ6éR{œkéRCœkS“Îk S›27 S{œk SCœk S“Îk#S;Çù)S›8)S{œk)SCœk@S“ÎkASKHmAS{œkASCœkIS›Ú8IS{œkISCœk`S“ÎkaSKHmaS{œkaSCœkiS›9iS{œkiSCœk€S“ÎkSKHmS{œkSCœk‰S›V:‰S{œk‰SCœk S“ׂ¡SKHm¡S{œk¡SCœk©S›Æ:©S{œk©SCœkÀS“ׂÉS›1;ÉS{œkÉSCœkàS“ׂáSKHmáS{œkáSCœkãS;ÇùéS›:ZéS{œkéSCœkT“ׂTKHmT{œkTCœk T›ßZ T{œk TCœk T“!×!TKHm!T{œk!TCœk)T›Œ[)T{œk)TCœk@T“!×ATKHmAT{œkATCœkIT›\IT{œkITCœk`T“!×iT›«\iT{œkiTCœk€T“¤l‰T›%]‰T{œk‰TCœk T“u’©T›–]©T{œk©TCœkÀT“!×ÁTKHmÁT{œkÁTCœkÉT› ^ÉT{œkÉTCœkàT“¤léT›Ò4éT{œkéTCœkU“Q‹ U›j5 U{œk UCœk U“Îk)U›é5)U{œk)UCœk@U“ØAUKHmAU{œkAUCœkIU›Æ6IU{œkIUCœk`U“¤liU›27iU{œkiUCœk‰U›8‰U{œk‰UCœk U“Ø©U›Ú8©U{œk©UCœkÀU“ׂÁUKHmÁU{œkÁUCœkÉU›9ÉU{œkÉUCœkàU“ØáUKHmáU{œkáUCœkéU›V:éU{œkéUCœkV“Ø V›Æ: V{œk VCœk V“Ø)V›1;)V{œk)VCœk@V“ØIV›:ZIV{œkIVCœk`V“!×iV›ßZiV{œkiVCœk€V“¤lVKHmV{œkVCœk‰V›Œ[‰V{œk‰VCœk V“ׂ©V›\©V{œk©VCœkÀV“¤lÉV›«\ÉV{œkÉVCœkàV{œkáVKHmáV{œkáVCœkéV›%]éV{œkéVCœkW“¤l W›–] W{œk WCœk)W› ^)W{œk)WCœkIW{œkIWCœkIWKHmiW{œkiWCœkiWKHm‰W{œk‰WCœk‰WKHm©W{œk©WCœk©WKHmÉW{œkÉWCœkÉWKHmàW“¤léW{œkéWCœkéWKHmX“Îk X{œk XCœk XKHm X“Ø)X{œk)XCœk)XKHm@X“ׂCX;ÇùIX{œkIXCœkIXKHm`X“ØiX{œkiXCœkiXKHm€X“Îk‰X{œk‰XCœk‰XKHm X“Îk©X{œk©XCœk©XKHmÀX{œkÉX{œkÉXCœkÉXKHméX{œkéXCœkéXKHmYKHmY{œkYCœkY;Çù Y{œk YCœk YKHm!YKHm!Y{œk!YCœk)Y{œk)YCœk)YKHmAYKHmAY{œkAYCœkCY;ÇùIY{œkIYCœkIYKHm`Y{œkaYKHmaY{œkaYCœkiY{œkiYCœkiYKHm€Y“ØYKHmY{œkYCœk‰Y{œk‰YCœk‰YKHm Y“Ø¡YKHm¡Y{œk¡YCœk©Y{œk©YCœk©YKHmÀY“ØÁYKHmÁY{œkÁYCœkÉY{œkÉYCœkÉYKHmàY“ØáYKHmáY{œkáYCœkéY{œkéYCœkéYKHmZ“ׂZKHmZ{œkZCœk Z{œk ZCœk ZKHm Z“Ø#Z;Çù)Z{œk)ZCœk)ZKHm@Z“¤lIZ{œkIZCœkIZKHm`Z{œkiZ{œkiZCœkiZKHm€Z“ׂ‰Z{œk‰ZCœk‰ZKHm Z“>»©Z{œk©ZCœk©ZKHmÀZ“Í*ÉZ{œkÉZCœkÉZKHmàZ“ׂéZ{œkéZCœkéZKHm[“Ø [{œk [Cœk [KHm [“ׂ![KHm![{œk![Cœk)[{œk)[Cœk)[KHm@[“ׂA[KHmA[{œkA[CœkI[{œkI[CœkI[KHm`[“ׂa[KHma[{œka[Cœki[{œki[Cœki[KHm€[“؉[{œk‰[Cœk‰[KHm [“Ø©[{œk©[Cœk©[KHmÀ[“¤lÉ[{œkÉ[CœkÉ[KHmà[“Îké[{œké[Cœké[KHm\“ׂ \{œk \Cœk \KHm \“ׂ)\{œk)\Cœk)\KHm@\“ÎkI\{œkI\CœkI\KHm`\“ׂi\{œki\Cœki\KHm‰\{œk‰\Cœk‰\KHm \“¤l©\{œk©\Cœk©\KHmÁ\KHmÁ\{œkÁ\CœkÉ\{œkÉ\CœkÉ\KHmá\KHmá\{œká\Cœké\{œké\Cœké\KHm]“Ø ]{œk ]Cœk ]KHm!]KHm!]{œk!]Cœk)]{œk)]Cœk)]KHmA]KHmA]{œkA]CœkI]{œkI]CœkI]KHm`]“ׂi]{œki]Cœki]KHm€]“؉]{œk‰]Cœk‰]KHm ]“Ø¡]KHm¡]{œk¡]Cœk©]{œk©]Cœk©]KHmÀ]{œkÁ]KHmÁ]{œkÁ]CœkÉ]{œkÉ]CœkÉ]KHmà]“¤lá]KHmá]{œká]Cœké]{œké]Cœké]KHm^“ׂ^KHm^{œk^Cœk ^{œk ^Cœk ^KHm ^“ׂ!^KHm!^{œk!^Cœk#^;Çù)^{œk)^Cœk)^KHm@^“ÎkA^KHmA^{œkA^CœkI^{œkI^CœkI^KHm`^“¤la^KHma^{œka^Cœki^{œki^Cœki^KHm€^{œk^KHm^{œk^Cœk‰^{œk‰^Cœk‰^KHm ^“!ס^KHm¡^{œk¡^Cœk©^{œk©^Cœk©^KHmÀ^“SÁ^KHmÁ^{œkÁ^CœkÉ^{œkÉ^CœkÉ^KHmà^“¤lá^KHmá^{œká^Cœké^{œké^Cœké^KHm_“¤l_KHm_{œk_Cœk_;âø _{œk _Cœk _KHm _“ׂ!_KHm!_{œk!_Cœk)_{œk)_Cœk)_KHm@_“QaA_KHmA_{œkA_CœkI_{œkI_CœkI_KHma_KHma_{œka_Cœki_{œki_Cœki_KHm€_“Ø_KHm_{œk_Cœk‰_{œk‰_Cœk‰_KHm _“Îk£_;Çù©_{œk©_Cœk©_KHmÀ_“ׂÉ_{œkÉ_CœkÉ_KHmà_“ׂé_{œké_Cœké_KHm`“!× `{œk `Cœk `KHm `“Q­)`{œk)`Cœk)`KHmA`KHmA`{œkA`CœkI`{œkI`CœkI`KHm``{œka`KHma`{œka`Cœki`{œki`Cœki`KHm€`{œk`KHm`{œk`Cœk‰`{œk‰`Cœk‰`KHm `“Q‹©`{œk©`Cœk©`KHmÀ`“¤lÁ`KHmÁ`{œkÁ`CœkÃ`;ÇùÉ`{œkÉ`CœkÉ`KHmà`“Øá`KHmá`{œká`Cœké`{œké`Cœké`KHma“!×aKHma{œkaCœk a{œk aCœk aKHm a“¤l!aKHm!a{œk!aCœk)a{œk)aCœk)aKHm@a“ªkCaËœkCa;âøIa{œkIaCœkIaKHm`a“!×ia{œkiaCœkiaKHm€a“ׂaKHma{œkaCœk‰a{œk‰aCœk‰aKHm a“¤l©a{œk©aCœk©aKHmÀa“¤lÉa{œkÉaCœkÉaKHmàa“Øéa{œkéaCœkéaKHmb“¤lbKHmb{œkbCœk b{œk bCœk bKHm!bKHm!b{œk!bCœk#b;Çù)b{œk)bCœk)bKHmAbKHmAb{œkAbCœkIb{œkIbCœkIbKHmabKHmab{œkabCœkcb;Çùib{œkibCœkibKHm€b{œkbKHmb{œkbCœk‰b{œk‰bCœk‰bKHm b“Ø¡bKHm¡b{œk¡bCœk£b;âø©b{œk©bCœk©bKHmÁbKHmÁb{œkÁbCœkÃb;hvÉb{œkÉbCœkÉbKHmábKHmáb{œkábCœkãb;hvéb{œkébCœkébKHmc“Õ0cKHmc{œkcCœkc;hv c{œk cCœk cKHm c“¾„!cKHm!c{œk!cCœk#c;hv)c{œk)cCœk)cKHmAcKHmAc{œkAcCœkCc;hvIc{œkIcCœkIcKHmacKHmac{œkacCœkcc;hvic{œkicCœkicKHmƒc;hv‰c{œk‰cCœk‰cKHm£c;hv©c{œk©cCœk©cKHmÀc{œkÃc;hvÉc{œkÉcCœkÉcKHmàc{œkãc;hvéc{œkécCœkécKHmd{œkd;hv d{œk dCœk dKHm#d;hv)d{œk)dCœk)dKHmCd;hvId{œkIdCœkIdKHm`d“!×adKHmad{œkadCœkcd;hvid{œkidCœkidKHm€d“ׂdKHmd{œkdCœkƒd;hv‰d{œk‰dCœk‰dKHm d“ׂ£d;4m©d{œk©dCœk©dKHmÀd“Q‹Éd{œkÉdCœkÉdKHmàd“Q‹ãd;Çùéd{œkédCœkédKHme“¤le‹ne;:n e{œk eCœk eKHm e“!×!eKHm!e{œk!eCœk)e{œk)eCœk)eKHm@e“!×Ce‹]Ce;‡sIe{œkIeCœkIeKHm`e“!×ie{œkieCœkieKHm€e“ÂQ‰e{œk‰eCœk‰eKHm e“.<¡eKHm¡e{œk¡eCœk£e³œk£e‹]£e;4m©e{œk©eCœk©eKHmÁeKHmÁe{œkÁeCœkÃe;ÇùÉe{œkÉeCœkÉeKHmãe;Çùée{œkéeCœkéeKHmf;4m f{œk fCœk fKHm#f;Çù)f{œk)fCœk)fKHmAfKHmAf{œkAfCœkCf;ÇùIf{œkIfCœkIfKHm`f“ÎkafKHmaf{œkafCœkcf;Çùif{œkifCœkifKHmfKHmf{œkfCœkƒf;Çù‰f{œk‰fCœk‰fKHm¡fKHm¡f{œk¡fCœk£f³œk£fƒœk£f‹n£f;:n©f{œk©fCœk©fKHmÁfKHmÁf{œkÁfCœkÉf{œkÉfCœkÉfKHmáfKHmáf{œkáfCœkãf“ãf‹néf{œkéfCœkéfKHmgKHmg{œkgCœkg“fg‹n g{œk gCœk gKHm!gKHm!g{œk!gCœk)g{œk)gCœk)gKHmAgKHmAg{œkAgCœkIg{œkIgCœkIgKHmagKHmag{œkagCœkig{œkigCœkigKHmgKHmg{œkgCœk‰g{œk‰gCœk‰gKHm¡gKHm¡g{œk¡gCœk©g{œk©gCœk©gKHmÁgKHmÁg{œkÁgCœkÉg{œkÉgCœkÉgKHmágKHmág{œkágCœkãg;4még{œkégCœkégKHmh{œkhKHmh{œkhCœk h{œk hCœk hKHm h“¤l!hKHm!h{œk!hCœk)h{œk)hCœk)hKHmIh{œkIhCœkIhKHmih{œkihCœkihKHm€h{œkhKHmh{œkhCœk‰h{œk‰hCœk‰hKHm©h{œk©hCœk©hKHmÃhk3œkÃh;âøÉh{œkÉhCœkÉhKHmàh“Øãh;âøéh{œkéhCœkéhKHmi“¤l i{œk iCœk iKHm!iKHm!i{œk!iCœk#i;âø)i{œk)iCœk)iKHmAiKHmAi{œkAiCœkCiË\œkCiƒœkCiƒœkCi‹ZCi;4mIi{œkIiCœkIiKHmci;4mii{œkiiCœkiiKHm‰i{œk‰iCœk‰iKHm©i{œk©iCœk©iKHmÁiKHmÁi{œkÁiCœkÃiË\œkÃiƒœkÃiƒœkÃi‹EÃi;4mÉi{œkÉiCœkÉiKHmáiKHmái{œkáiCœkéi{œkéiCœkéiKHmjKHmj{œkjCœk j{œk jCœk jKHm j{œk!jKHm!j{œk!jCœk)j{œk)jCœk)jKHm@j{œkIj{œkIjCœkIjKHm`j“úiij{œkijCœkijKHm€j{œk‰j{œk‰jCœk‰jKHm j“Q‹¡jKHm¡j{œk¡jCœk©j{œk©jCœk©jKHmÁjKHmÁj{œkÁjCœkÉj{œkÉjCœkÉjKHméj{œkéjCœkéjKHmk“ªk k{œk kCœk kKHm)k{œk)kCœk)kKHm@k“!×Ik{œkIkCœkIkKHm`k“¤lik{œkikCœkikKHm€k“؉k{œk‰kCœk‰kKHm k“Ø¡kKHm¡k{œk¡kCœk©k{œk©kCœk©kKHmÀk{œkÁkKHmÁk{œkÁkCœkÉk{œkÉkCœkÉkKHmàk{œkákKHmák{œkákCœkék{œkékCœkékKHml“úilKHml{œklCœk l{œk lCœk lKHm l“Q‹!lKHm!l{œk!lCœk)l{œk)lCœk)lKHm@l“úiAlKHmAl{œkAlCœkIl{œkIlCœkIlKHm`l“!×alKHmal{œkalCœkil{œkilCœkilKHm€l“Q‹lKHml{œklCœk‰l{œk‰lCœk‰lKHm l“úi¡lKHm¡l{œk¡lCœk©l{œk©lCœk©lKHmÁlKHmÁl{œkÁlCœkÉl{œkÉlCœkÉlKHmàl“úiálKHmál{œkálCœkél{œkélCœkélKHmm“¾„mKHmm{œkmCœk m{œk mCœk mKHm m“Q‹!mKHm!m{œk!mCœk)m{œk)mCœk)mKHmAmKHmAm{œkAmCœkIm{œkImCœkImKHmamKHmam{œkamCœkim{œkimCœkimKHm€m{œkmKHmm{œkmCœk‰m{œk‰mCœk‰mKHm m{œk¡mKHm¡m{œk¡mCœk©m{œk©mCœk©mKHmÀm{œkÉm{œkÉmCœkÉmKHmàm{œkém{œkémCœkémKHmn“!× n{œk nCœk nKHm n“Q‹!nKHm!n{œk!nCœk)n{œk)nCœk)nKHm@n“ªkAnKHmAn{œkAnCœkCn;âøIn{œkInCœkInKHm`n“úianKHman{œkanCœkcn;âøin{œkinCœkinKHm€n“Q‹nKHmn{œknCœk‰n{œk‰nCœk‰nKHm n“¾„¡nKHm¡n{œk¡nCœk£n;âø©n{œk©nCœk©nKHmÀn“ׂÁnKHmÁn{œkÁnCœkÃn;‡sÉn{œkÉnCœkÉnKHmàn“eánKHmán{œkánCœkãn;4mén{œkénCœkénKHmoKHmo{œkoCœk o{œk oCœk oKHm!oKHm!o{œk!oCœk)o{œk)oCœk)oKHmAoKHmAo{œkAoCœkIo{œkIoCœkIoKHm`o“eaoKHmao{œkaoCœkio{œkioCœkioKHm€o“5hoKHmo{œkoCœk‰o{œk‰oCœk‰oKHm o“Ni¡oKHm¡o{œk¡oCœk©o{œk©oCœk©oKHmÁoKHmÁo{œkÁoCœkÉo{œkÉoCœkÉoKHmào{œkáoKHmáo{œkáoCœkéo{œkéoCœkéoKHmp{œkpKHmp{œkpCœk p{œk pCœk pKHm p“Ni#p;‡s)p{œk)pCœk)pKHm@p“+sCp;âøIp;µÜ`p“ׂcp;âø€p“ׂƒp³œkƒpƒœkƒp‹nƒp;:n©p;µÜÀp“ׂÃp“ 0Ãp‹nÉp{œkÉpCœkÉpKHmàp“ׂãp“[0ãp‹nép{œképCœképKHmq“!×q“Å0q‹n q{œk qCœk qKHm q“¤l)q{œk)qCœk)qKHm@q“¤lIq{œkIqCœkIqKHm`q“S€q“¤l q“¤l£qÓœk£q;4mÀq“ׂÃq;Çùàq“ׂãq;Çùr“!× r“Q‹@r“Ø`r“ׂƒr;âø r“¤l£r;âøÀr“Q‹Ãr;âøs{œks;âø s“ªk@s“úiAsKHmAs{œkAsCœkCs;âø`s“äwsKHms{œksCœk s“úi¡sKHm¡s{œk¡sCœkÁsKHmÁs{œkÁsCœkàs“Øt{œk t“7g#t;âøCt;âø`t“u’ct;âø€t“ׂƒt ‰Â ƒt;âø t“ØÀt“J•Ãt ‰Â Ãt;âøàt{œku“!×u;âø u{œk#u;Çù@u“!×Cu;âø`u“!×cu;âø€u“7gƒu;âø u{œk¡uKHm¡u{œk¡uCœk£u;âøÀu“P¤ÁuKHmÁu{œkÁuCœkÃu;âøàu“P¤v“Q‹v;âø#vË\œk#v;4mCvË\œkCv;4mcvË\œkcv;4m€v{œkƒvË\œkƒv;4m£vË\œk£v;4mÃvË\œkÃv;4mãvË\œkãv;4mwË\œkw;4m#wË\œk#w;4mCwË\œkCw;4mcwË\œkcw;4mƒwË\œkƒw;4m£wË\œk£w;4mÃwË\œkÃw;4mxKHmx{œkxCœkx;Çùcx;Çù¡xKHm¡x{œk¡xCœkÁxKHmÁx{œkÁxCœkIySËqiySõq‰ySr y{œk©yS'rÉyS:rãy;âøéySMr zSZr#z;âø)zSgrIzSËqcz;ÇùizSËq‰zSËq©zSõqÉzSrézS'r {S:r){SËqI{SËqi{SËq‰{SËq {{œk©{SËqÀ{{œkÉ{SËqà{{œké{Sõq|{œk|KHm|{œk|Cœk |Sr!|KHm!|{œk!|Cœk)|S'r@|{œkA|KHmA|{œkA|CœkI|S:r`|{œka|KHma|{œka|Cœkc|;âøi|SMr€|{œk|KHm|{œk|Cœkƒ|‹nƒ|;:n |{œkÃ|“RÃ|‹nã|“\Rã|‹n }“úi!}KHm!}{œk!}CœkA}KHmA}{œkA}CœkC}‹nC};:na}KHma}{œka}Cœk}KHm}{œk}Cœk }“!ס}KHm¡}{œk¡}Cœk£}‹n£};:nÁ}KHmÁ}{œkÁ}Cœkà}“¾„á}KHmá}{œká}Cœkã}“Uã}‹n~“¾„~KHm~{œk~Cœk~“hU~‹n ~“Ø!~KHm!~{œk!~Cœk#~“ÈU#~‹n@~“ªkA~KHmA~{œkA~CœkC~“+VC~‹n`~“!×a~KHma~{œka~Cœkc~“†Vc~‹n~KHm~{œk~Cœkƒ~“Wƒ~‹n¡~KHm¡~{œk¡~Cœk£~“ÄW£~‹nÀ~“þ7Ã~“'XÃ~‹nà~“ׂã~“¨Xã~‹n“ªk“ Y‹n#“¹Y#‹n@“¾„C“mZC‹n`“Ôåc“#[c‹n€“Îkƒ“ª[ƒ‹n‰;µÜ¡KHm¡{œk¡Cœk£“<\£‹nÁKHmÁ{œkÁCœkÓÉ\ËnáKHmá{œkáCœkã“6]ã‹n€KHm€{œk€Cœk€“§]€‹n €;µÜ!€KHm!€{œk!€Cœk#€“^#€‹n)€;µÜA€KHmA€{œkA€CœkI€;µÜa€KHma€{œka€Cœki€;µÜ€€{œk€KHm€{œk€Cœk‰€;µÜ €{œk¡€KHm¡€{œk¡€Cœk©€;µÜÁ€KHmÁ€{œkÁ€CœkÉ€;µÜá€KHmá€{œká€Cœké€;µÜ“ÔåKHm{œkCœk ;µÜ “ׂ!KHm!{œk!Cœk);µÜ@“ׂI;µÜ`“ׂi;µÜ€“ׂ‰;µÜ “ªk¡KHm¡{œk¡Cœk©;µÜÀ“ØÁKHmÁ{œkÁCœkÉ;µÜáKHmá{œkáCœké;µÜ‚“ñ ‚KHm‚{œk‚Cœk ‚;µÜ ‚“¾„!‚KHm!‚{œk!‚Cœk)‚;µÜ@‚“u’A‚KHmA‚{œkA‚CœkI‚;µÜ`‚“!×a‚KHma‚{œka‚Cœki‚;µÜ€‚“!ׂKHm‚{œk‚Cœk‰‚;µÜ ‚“ׂ¡‚KHm¡‚{œk¡‚Cœk£‚‹n£‚;:nÁ‚KHmÁ‚{œkÁ‚Cœkà‚“Þá‚KHmá‚{œká‚Cœkã‚‹nã‚;:nƒKHmƒ{œkƒCœk ƒ“u’!ƒKHm!ƒ{œk!ƒCœk)ƒSËq@ƒ“¤lAƒKHmAƒ{œkAƒCœkIƒSõq`ƒ“ׂaƒKHmaƒ{œkaƒCœkiƒSr€ƒ“!׃KHmƒ{œkƒCœk¡ƒKHm¡ƒ{œk¡ƒCœkÀƒ{œkÁƒKHmÁƒ{œkÁƒCœkàƒ{œkáƒKHmáƒ{œkáƒCœk„{œk„KHm„{œk„Cœk „{œk „Cœk „KHm „{œk!„KHm!„{œk!„Cœk)„{œk)„Cœk)„KHm@„“ׂA„KHmA„{œkA„CœkI„{œkI„CœkI„KHm`„“ׂa„KHma„{œka„Cœki„{œki„Cœki„KHm€„“ׂ„KHm„{œk„Cœk‰„{œk‰„Cœk‰„KHm¡„KHm¡„{œk¡„Cœk©„{œk©„Cœk©„KHmÁ„KHmÁ„{œkÁ„CœkÉ„{œkÉ„CœkÉ„KHmá„KHmá„{œká„Cœké„{œké„Cœké„KHm…KHm…{œk…Cœk …{œk …Cœk …KHm …“!…KHm!…{œk!…Cœk)…{œk)…Cœk)…KHmA…KHmA…{œkA…CœkI…›ÇoI…{œkI…Cœk`…“7i…›Üoi…{œki…Cœk€…“!׉…›ío‰…{œk‰…Cœk©…›–S©…{œk©…CœkÀ…“ØÁ…KHmÁ…{œkÁ…CœkÉ…{œkÉ…CœkÉ…KHmé…›Çoé…{œké…Cœk†{œk †›Üo †{œk †Cœk †{œk@†“M`†“ׂ€†{œk ‡{œk ‡Cœk ‡KHm ‡“h)‡{œk)‡Cœk)‡KHm@‡“¤lI‡{œkI‡CœkI‡KHm`‡“/i‡{œki‡Cœki‡KHm‰‡›Ço‰‡{œk‰‡Cœk ‡“ò³©‡›Üo©‡{œk©‡CœkÀ‡“ׂɇ›¨nɇ{œkɇCœkà‡“Îk釛Qpé‡{œké‡Cœkˆ“ׂ ˆ›o ˆ{œk ˆCœk ˆ“Îk)ˆ›Ço)ˆ{œk)ˆCœk@ˆ“!×Iˆ›ÜoIˆ{œkIˆCœk`ˆ“¤liˆ›¨niˆ{œkiˆCœk€ˆ“Îk‰ˆ›Qp‰ˆ{œk‰ˆCœk ˆ“ׂ©ˆ›o©ˆ{œk©ˆCœkÀˆ“=Ɉ{œkɈCœkɈKHméˆ{œkéˆCœkéˆKHm‰“Îk ‰{œk ‰Cœk ‰KHm ‰“Ø)‰{œk)‰Cœk)‰KHm@‰“!×I‰›ÇoI‰{œkI‰Cœk`‰“!×i‰›Üoi‰{œki‰Cœk€‰“!׉‰›¨n‰‰{œk‰‰Cœk ‰“Îk©‰›Qp©‰{œk©‰Cœkɉ›oɉ{œkɉCœkà‰“Q‹é‰›Çoé‰{œké‰Cœk Š›Üo Š{œk ŠCœk)Š›¨n)Š{œk)ŠCœkIŠ›QpIŠ{œkIŠCœk`Š“!×iŠ›oiŠ{œkiŠCœk‰ŠSËq Š“ׂ©ŠSõqÀŠ“ׂÁŠKHmÁŠ{œkÁŠCœkÉŠSràŠ{œkéŠ{œkéŠCœkéŠKHm‹“¤l ‹›Ço ‹{œk ‹Cœk ‹“!×)‹›Üo)‹{œk)‹Cœk@‹“ØI‹›íoI‹{œkI‹Cœk`‹“Eµi‹{œki‹Cœki‹KHm€‹“|‰‹›Ço‰‹{œk‰‹Cœk ‹{œk©‹›Üo©‹{œk©‹CœkÀ‹“¤lÉ‹›íoÉ‹{œkÉ‹Cœkà‹“j4Œ“!× Œ“EµŒKHmŒ{œkŒCœk¡ŒKHm¡Œ{œk¡ŒCœkÀŒ“ÎkÁŒKHmÁŒ{œkÁŒCœkÉŒ{œkÉŒCœkÉŒKHmàŒ“ÎkáŒKHmáŒ{œkáŒCœkéŒ{œkéŒCœkéŒKHm {œk Cœk KHm “!×){œk)Cœk)KHmI{œkICœkIKHm`“ׂi{œkiCœkiKHm€“¤l‰{œk‰Cœk‰KHm {œk©{œk©Cœk©KHmÀ“úiÉ{œkÉCœkÉKHmà{œké{œkéCœkéKHmŽ{œkŽKHmŽ{œkŽCœk Ž›Ço Ž{œk ŽCœk Ž{œk)Ž›Üo)Ž{œk)ŽCœk@Ž{œkIŽ›íoIŽ{œkIŽCœk`Ž“«FaŽKHmaŽ{œkaŽCœkiŽ›–SiŽ{œkiŽCœk€Ž“-GŽKHmŽ{œkŽCœk‰Ž›¨n‰Ž{œk‰ŽCœk¡ŽKHm¡Ž{œk¡ŽCœk©Ž›Qp©Ž{œk©ŽCœkÉŽ›bpÉŽ{œkÉŽCœk鎛oéŽ{œkéŽCœk ›q {œk Cœk)›(q){œk)CœkI›BI{œkICœki›ÅXi{œkiCœkKHm{œkCœk‰›V°‰{œk‰Cœk©›ˆ©{œk©CœkÉ›÷DÉ{œkÉCœkà{œkáKHmá{œkáCœké›Òæé{œkéCœk{œkKHm{œkCœk ›E {œk Cœk {œk!KHm!{œk!Cœk)›®E){œk)Cœk@{œkAKHmA{œkACœkI›bçI{œkICœk`{œkaKHma{œkaCœki›,²i{œkiCœkKHm{œkCœk‰›=²‰{œk‰Cœk¡KHm¡{œk¡Cœk©›]²©{œk©CœkÁKHmÁ{œkÁCœkÉ›óçÉ{œkÉCœkáKHmá{œkáCœk雫ãé{œkéCœk‘KHm‘{œk‘Cœk ‘›oý ‘{œk ‘Cœk!‘KHm!‘{œk!‘Cœk)‘› ³)‘{œk)‘CœkA‘KHmA‘{œkA‘CœkI‘›ÉýI‘{œkI‘Cœka‘KHma‘{œka‘Cœki‘›Àäi‘{œki‘Cœk‘KHm‘{œk‘Cœk‰‘›Ço‰‘{œk‰‘Cœk¡‘KHm¡‘{œk¡‘Cœk£‘;âø©‘›Üo©‘{œk©‘CœkÁ‘KHmÁ‘{œkÁ‘CœkÑ‹nÑ;:nÉ‘›íoÉ‘{œkÉ‘Cœká‘KHmá‘{œká‘Cœké‘›–Sé‘{œké‘Cœk’KHm’{œk’Cœk’;4m ’›¨n ’{œk ’Cœk!’KHm!’{œk!’Cœk#’;4m)’›Qp)’{œk)’CœkA’KHmA’{œkA’CœkC’;4mI’›bpI’{œkI’Cœka’KHma’{œka’Cœkc’;4mi’›oi’{œki’Cœk’KHm’{œk’Cœkƒ’;4m‰’›q‰’{œk‰’Cœk¡’KHm¡’{œk¡’Cœk£’;4m©’›(q©’{œk©’CœkÁ’KHmÁ’{œkÁ’CœkÃ’;4mÉ’›BÉ’{œkÉ’Cœká’KHmá’{œká’Cœkã’;4mé’›ÅXé’{œké’Cœk“KHm“{œk“Cœk“;4m “›V° “{œk “Cœk!“KHm!“{œk!“Cœk)“›ˆ)“{œk)“CœkA“KHmA“{œkA“CœkI“›÷DI“{œkI“Cœka“KHma“{œka“Cœki“›Òæi“{œki“Cœk‰“›E‰“{œk‰“Cœk©“›®E©“{œk©“CœkÁ“KHmÁ“{œkÁ“CœkÉ“›bçÉ“{œkÉ“Cœká“KHmá“{œká“Cœkã“ œk㓜kã“’pã“#›ã“;4mé“›,²é“{œké“Cœk”KHm”{œk”Cœk” œk”œk”Ãp”#›”+íp”;4m ”›=² ”{œk ”Cœk!”KHm!”{œk!”Cœk#” œk#”œk#”óp#”#›#”+íp#”;4m)”›]²)”{œk)”CœkA”KHmA”{œkA”CœkC” œkC”œkC”'qC”#›C”3¯ÜC”;4mI”›óçI”{œkI”Cœka”KHma”{œka”Cœkc”Ë\œkc”;4mi”›«ãi”{œki”Cœk”KHm”{œk”Cœkƒ” œkƒ”œkƒ”‰rƒ”#›ƒ”;4m‰”›oý‰”{œk‰”Cœk¡”KHm¡”{œk¡”Cœk£”;‡s©”› ³©”{œk©”CœkÁ”KHmÁ”{œkÁ”CœkÔ;‡sÉ”›ÉýÉ”{œkÉ”Cœká”KHmá”{œká”Cœkã”;‡sé”›Àäé”{œké”Cœk•KHm•{œk•Cœk•;‡s •SËq#•;‡s)•SõqC•;‡sI•Sra•KHma•{œka•Cœkc•;‡si•S'r•KHm•{œk•Cœkƒ•;‡s‰•SËq¡•KHm¡•{œk¡•Cœk£•;‡s©•SõqÕÜkÕœkÕ œkÕ#›Õ}tÕ;4mÉ•Srã•Ük㕜kã• œkã•;œkã•#›ã•Ùtã•;4mé•S'r–{œk–Ük–œk– œk–#›– u–;4m –S:r –{œk)–SMr@–{œkA–KHmA–{œkA–CœkC–;âøI–SZr`–{œka–KHma–{œka–Cœkc–Ë\œkc–ƒœkc–³œkc–;4mi–Sgr€–{œk–KHm–{œk–Cœk‰–{œk‰–Cœk‰–KHm©–{œk©–Cœk©–KHmÉ–{œkÉ–CœkÉ–KHmé–›Çoé–{œké–Cœk —›¨n —{œk —Cœk)—›Ço)—{œk)—CœkI—›¨nI—{œkI—Cœk—KHm—{œk—Cœk‰—;µÜ©—;µÜÁ—KHmÁ—{œkÁ—CœkÉ—;µÜá—KHmá—{œká—Cœké—;µÜ˜KHm˜{œk˜Cœk ˜;µÜ)˜;µÜA˜KHmA˜{œkA˜CœkI˜;µÜi˜;µÜ‰˜;µÜ©˜;µÜɘ;µÜé˜;µÜI™;µÜ‰™;µÜÉ™;µÜé™;µÜ š;µÜ)š;µÜašKHmaš{œkašCœkšKHmš{œkšCœkœKHmœ{œkœCœk!œKHm!œ{œk!œCœkAœKHmAœ{œkAœCœkœKHmœ{œkœCœk¡œKHm¡œ{œk¡œCœkÁœKHmÁœ{œkÁœCœkKHm{œkCœk {œk!KHm!{œk!Cœk@{œkAKHmA{œkACœk`{œkaKHma{œkaCœk€{œkKHm{œkCœk {œkÁKHmÁ{œkÁCœk#ž;âøažKHmaž{œkažCœkcž;âøážKHmáž{œkážCœk!ŸKHm!Ÿ{œk!ŸCœkAŸKHmAŸ{œkAŸCœkaŸKHmaŸ{œkaŸCœkiŸ;µÜŸKHmŸ{œkŸCœk‰Ÿ;µÜ¡ŸKHm¡Ÿ{œk¡ŸCœk©Ÿ;µÜÉŸ;µÜéŸ;µÜ@ {œkI ;µÜ` {œki ;µÜ€ {œk‰ ;µÜ  {œk© ;µÜÀ {œkÉ ;µÜé ;µÜ ¡;µÜ)¡;µÜI¡;µÜi¡;µÜ‰¡;µÜ¢KHm¢{œk¢Cœk¡¢KHm¡¢{œk¡¢CœkÁ¢KHmÁ¢{œkÁ¢Cœk¤KHm¤{œk¤Cœkƒ¤;âø¡¤KHm¡¤{œk¡¤Cœk£¤Óœk£¤;4mÁ¤KHmÁ¤{œkÁ¤Cœkä;‡sá¤KHmá¤{œká¤Cœk㤋nã¤;:n¥KHm¥{œk¥Cœk#¥‹n#¥;:nC¥‹nC¥;:nc¥‹nc¥;:n£¥“¨«£¥‹nÃ¥“5¬Ã¥‹n㥓¤¬ã¥‹n¦KHm¦{œk¦Cœk!¦KHm!¦{œk!¦CœkA¦KHmA¦{œkA¦Cœka¦KHma¦{œka¦Cœkc¦‹nc¦;:n‰¦;µÜ£¦“™®£¦‹n©¦;µÜ擯æ‹nɦ;µÜ㦓g¯ã¦‹né¦;µÜ)§{œk)§Cœk)§KHmI§{œkI§CœkI§KHmc§;‡si§{œki§Cœki§KHmƒ§‹nƒ§;:n£§‹n£§;:nç‹nç;:n¨KHm¨{œk¨Cœk¨“²¨‹n ¨›Ço ¨{œk ¨Cœk#¨“„²#¨‹n)¨›¨n)¨{œk)¨CœkC¨“ò²C¨‹nI¨›ÇoI¨{œkI¨Cœkc¨“U³c¨‹ni¨›¨ni¨{œki¨Cœkƒ¨“󃨋n‰¨SËq¡¨KHm¡¨{œk¡¨Cœk£¨“9´£¨‹n©¨SõqÁ¨KHmÁ¨{œkÁ¨Cœk蓦´è‹nɨSrá¨KHmá¨{œká¨Cœk㨓µã¨‹né¨S'r©KHm©{œk©Cœk©“„µ©‹n ©S:r!©KHm!©{œk!©Cœk)©SMrA©KHmA©{œkA©Cœk©KHm©{œk©CœkªKHmª{œkªCœkIªSËqiªSõq‰ªSr ª{œkÀª{œkàª{œkáªKHmáª{œkáªCœk«{œk «{œk «Cœk «KHm «{œk!«KHm!«{œk!«Cœk#«;‡s)«{œk)«Cœk)«KHmA«KHmA«{œkA«CœkC«;‡sI«{œkI«CœkI«KHmc«‹nc«;:ni«{œki«Cœki«KHm‰«{œk‰«Cœk‰«KHm¡«KHm¡«{œk¡«Cœk£«“•·£«‹nÁ«KHmÁ«{œkÁ«Cœkë“ ¸ë‹nà«{œká«KHmá«{œká«Cœk¬{œk ¬{œk@¬{œkC¬;âø`¬{œk¬KHm¬{œk¬Cœkƒ¬Ë~ƒ¬;4m‰¬›¨n‰¬{œk‰¬Cœk£¬;Çù©¬›o©¬{œk©¬Cœkɬ›¨nɬ{œkɬCœk鬛oé¬{œké¬Cœk ­{œk ­Cœk ­KHm!­KHm!­{œk!­Cœk)­›Ço)­{œk)­CœkA­KHmA­{œkA­CœkC­{œkC­sœkC­‹nC­;:na­KHma­{œka­Cœk­KHm­{œk­Cœkƒ­“ƒ­‹n¡­KHm¡­{œk¡­Cœk£­“^£­‹n©­{œk©­Cœk©­KHmÉ­{œkÉ­CœkÉ­KHmé­{œké­Cœké­KHm®{œk®sœk®;‡s ®{œk ®Cœk ®KHm#®Óœk#®;4m)®{œk)®Cœk)®KHm@®{œkC®ÓœkC®{œkC®sœkC®;‡sI®{œkI®CœkI®KHm`®{œkc®{œkc®sœkc®Ëœkc®‹nc®;:ni®{œki®Cœki®KHm€®{œk‰®{œk‰®Cœk‰®KHm ®{œk£®“¯£®‹n©®{œk©®Cœk©®KHmÀ®{œkî“î‹nÉ®{œkÉ®CœkÉ®KHm㮓T㮋né®{œké®Cœké®KHm ¯{œk ¯Cœk ¯KHm)¯{œk)¯Cœk)¯KHmA¯KHmA¯{œkA¯CœkI¯{œkI¯CœkI¯KHma¯KHma¯{œka¯Cœkc¯{œkc¯sœkc¯‹nc¯;:ni¯{œki¯Cœki¯KHm€¯{œk¯KHm¯{œk¯Cœkƒ¯;4m‰¯{œk‰¯Cœk‰¯KHm ¯{œk¡¯KHm¡¯{œk¡¯Cœk£¯{œk£¯sœk£¯Ëœk£¯‹n£¯;:n©¯{œk©¯Cœk©¯KHmÀ¯{œkÁ¯KHmÁ¯{œkÁ¯Cœkɯ{œkɯCœkɯKHmà¯{œká¯KHmá¯{œká¯Cœkã¯{œkã¯sœkã¯Ëœk㯋nã¯;:né¯{œké¯Cœké¯KHm°{œk °{œk °Cœk °KHm!°KHm!°{œk!°Cœk#°{œk#°sœk#°‹n#°;:n)°{œk)°Cœk)°KHmC°;4mI°›ÇoI°{œkI°Cœka°KHma°{œka°Cœkc°{œkc°sœkc°‹nc°;:ni°›Üoi°{œki°Cœk£°Óœk£°ƒœk£°œk£°;‡sÀ°{œkÁ°KHmÁ°{œkÁ°CœkðÓœkð{œkðsœkð;‡sà°{œká°KHmá°{œká°Cœkã°Ëœkã°{œkã°sœkã°‹nã°;:n±{œk ±{œk#±“ú #±‹n@±{œkC±“L C±‹nc±“• c±‹n±KHm±{œk±Cœkƒ±“Þ ƒ±‹n£±“%£±‹n©±{œk©±Cœk©±KHmñ“‡ñ‹nɱ{œkɱCœkɱKHmá±KHmá±{œká±Cœk㱓Ú㱋né±{œké±Cœké±KHm²{œk²“4²‹n ²{œk ²Cœk ²KHm ²{œk)²{œk)²Cœk)²KHm@²{œkI²SËq`²{œki²Sõq€²{œk‰²Sr¡²KHm¡²{œk¡²Cœk©²S'rɲS:r!³KHm!³{œk!³Cœk#³Óœk#³ƒœk#³œk#³‹n#³;:n@³{œkC³{œkC³sœkC³;‡s`³{œk€³{œk³KHm³{œk³Cœkƒ³Óœkƒ³;‡s ³{œk¡³KHm¡³{œk¡³Cœk£³{œk£³sœk£³;‡sÀ³{œkÁ³KHmÁ³{œkÁ³CœkóÓœkó{œkósœkó;‡sá³KHmá³{œká³Cœkã³{œkã³sœkã³;‡sé³SËq´KHm´{œk´Cœk´{œk´sœk´‹n´;:n ´Sõq!´KHm!´{œk!´CœkA´KHmA´{œkA´CœkC´ÓœkC´;‡sc´Óœkc´;‡s€´{œk´KHm´{œk´Cœk ´{œkÀ´{œkà´{œkµ{œkµKHmµ{œkµCœkµËœkµ‹nµ;:n µ{œk µCœk µKHm!µKHm!µ{œk!µCœk)µ{œk)µCœk)µKHmCµ“7Cµ‹nIµ{œkIµCœkIµKHmcµ“‡cµ‹niµ{œkiµCœkiµKHmƒµ“Õƒµ‹n‰µ{œk‰µCœk‰µKHm£µ“#£µ‹n©µ{œk©µCœk©µKHmÀµ{œkõ“rõ‹nɵ{œkɵCœkɵKHmàµ{œk㵓Á㵋néµ{œkéµCœkéµKHm¶{œk¶“¶‹n ¶{œk ¶Cœk ¶KHm ¶{œk#¶“_#¶‹n)¶{œk)¶Cœk)¶KHm@¶{œkA¶KHmA¶{œkA¶CœkC¶“­C¶‹nI¶{œkI¶CœkI¶KHmc¶“ýc¶‹n¶KHm¶{œk¶Cœkƒ¶“Mƒ¶‹n£¶“£¶‹nö“íö‹nã¶“=ã¶‹n·{œk·“˜·‹n ·{œk#·“#·‹n@·{œk`·{œka·KHma·{œka·Cœki·›¨ni·{œki·Cœk€·{œk‰·›Qp‰·{œk‰·Cœk©·›o©·{œk©·CœkÉ·›V°É·{œkÉ·Cœké·›Òæé·{œké·Cœk ¸›bç ¸{œk ¸Cœk)¸›óç)¸{œk)¸Cœk@¸{œkA¸KHmA¸{œkA¸CœkI¸›oýI¸{œkI¸Cœk`¸{œki¸›Éýi¸{œki¸Cœk€¸{œk‰¸›À䉸{œk‰¸Cœk ¸{œk©¸›FÎ ©¸{œk©¸CœkÀ¸{œkÁ¸KHmÁ¸{œkÁ¸Cœkɸ›¨nɸ{œkɸCœk鸛Qpé¸{œké¸Cœk¹KHm¹{œk¹Cœk ¹›o ¹{œk ¹Cœk)¹›V°)¹{œk)¹CœkC¹;‡sI¹›ÒæI¹{œkI¹Cœkc¹³œkc¹ƒœkc¹Óœkc¹‹nc¹;:ni¹›bçi¹{œki¹Cœk¹KHm¹{œk¹Cœk‰¹›ó特{œk‰¹Cœk£¹“㣹‹n©¹›oý©¹{œk©¹Cœkù“I ù‹nɹ›Éýɹ{œkɹCœké¹›Àäé¹{œké¹CœkºKHmº{œkºCœk º›FÎ º{œk ºCœk#º{œk#ºsœk#º‹n#º;:n)º{œk)ºCœk)ºKHmAºKHmAº{œkAºCœkIº›ÇoIº{œkIºCœkcº{œkcºsœkcºËœkcº‹ncº;:n‰ºSËq£º“x"£º‹n©ºSõqú“Ì"ú‹nɺSràº{œk㺓"#㺋néºSËq»{œk »Sõq »{œk)»Sr@»{œkI»S'r`»{œkc»{œkc»sœkc»Ëœkc»‹nc»;:ni»S:r‰»SMr£»“O$£»‹nÁ»KHmÁ»{œkÁ»Cœkû“–$û‹nà»{œkà»Cœk㻓Ý$㻋n¼Skm¼“$%¼‹n ¼{œk ¼Cœk@¼S~mA¼KHmA¼{œkA¼Cœk`¼{œk`¼Cœk€¼{œk€¼Cœk ¼{œk ¼Cœk£¼‹n£¼;:n©¼SËqÀ¼{œkÀ¼CœkÁ¼KHmÁ¼{œkÁ¼CœkɼSõqà¼{œkà¼Cœk㼋nã¼;:né¼Sr½{œk½Cœk½KHm½{œk½Cœk ½SËq ½{œk ½Cœk!½KHm!½{œk!½Cœk#½‹n#½;:n)½Sõq@½{œk@½CœkI½Sr`½{œk`½Cœka½KHma½{œka½Cœkc½‹nc½;:n€½{œk€½Cœk ½{œk ½Cœk¡½KHm¡½{œk¡½Cœk£½{œk£½sœk£½‹n£½;:nã½{œk㽃œk㽋nã½;:n#¾“²/#¾‹nC¾“þ/C¾‹na¾KHma¾{œka¾Cœkc¾“N0c¾‹ni¾SËqƒ¾“¿0ƒ¾‹n‰¾Sõq£¾“ 1£¾‹nÁ¾KHmÁ¾{œkÁ¾Cœkþ“V1þ‹n㾓¶1㾋n¿“2¿‹n!¿KHm!¿{œk!¿Cœk#¿“N2#¿‹n)¿{œk)¿Cœk)¿KHmC¿“›2C¿‹nI¿{œkI¿CœkI¿KHmc¿“ø2c¿‹ni¿{œki¿Cœki¿KHm¿KHm¿{œk¿Cœkƒ¿“D3ƒ¿‹n‰¿{œk‰¿Cœk‰¿KHm£¿“3£¿‹n©¿{œk©¿Cœk©¿KHmÿ“Ù3ÿ‹nÉ¿{œkÉ¿CœkÉ¿KHmá¿KHmá¿{œká¿Cœkã¿“`4ã¿‹né¿{œké¿Cœké¿KHmÀKHmÀ{œkÀCœkÀ“Ô4À‹n ÀSËq#À“<5#À‹n)ÀSõqCÀ“˜5CÀ‹nIÀSraÀKHmaÀ{œkaÀCœkcÀ“6cÀ‹niÀS'rƒÀ“w6ƒÀ‹n£À“Ã6£À‹nÁÀKHmÁÀ{œkÁÀCœkÃÀ“%7ÃÀ‹nãÀ“r7ãÀ‹nÁ“Ý7Á‹n ÁSËq!ÁKHm!Á{œk!ÁCœk#Á“_8#Á‹n)ÁSõqCÁ“«8CÁ‹nIÁSrcÁ“ù8cÁ‹niÁS'rƒÁ“W9ƒÁ‹n‰ÁS:r£Á“Æ9£Á‹nÁÁKHmÁÁ{œkÁÁCœkÃÁ“#:ÃÁ‹nãÁ“€:ãÁ‹n“Þ:‹n#“X;#‹nAÂKHmAÂ{œkAÂCœkC“·;C‹nIÂ{œkIÂCœkIÂKHmc“<c‹niÂ{œkiÂCœkiÂKHmƒÂ“u<ƒÂ‹n‰Â{œk‰ÂCœk‰ÂKHm£Â“ =£Â‹n©Â{œk©ÂCœk©ÂKHmÓˆ=ËnÉÂ{œkÉÂCœkÉÂKHmã“å=ã‹néÂ{œkéÂCœkéÂKHmÓ@>Ën Ã{œk ÃCœk ÃKHm#Ó>#Ën)Ã{œk)ÃCœk)ÃKHmCÓþ>CËnIÃ{œkIÃCœkIÃKHmcÓ\?cËniÃ{œkiÃCœkiÃKHmƒÃ“º?ƒÃ‹n‰Ã{œk‰ÃCœk‰ÃKHm£Ã“_@£Ã‹n©Ã{œk©ÃCœk©ÃKHmÃÓÏ@ÃËnÉÃ{œkÉÃCœkÉÃKHmãÓBAãËnéÃ{œkéÃCœkéÃKHmÄ“µAÄ‹n Ä{œk ÄCœk ÄKHm#Ä“B#Ä‹n)Ä{œk)ÄCœk)ÄKHmCÄ“sBCÄ‹nIÄ{œkIÄCœkIÄKHmcÄ“íBcÄ‹niÄ{œkiÄCœkiÄKHmƒÄ“^CƒÄ‹n‰Ä{œk‰ÄCœk‰ÄKHm£Ä“ÌC£Ä‹n©Ä›Ço©Ä{œk©ÄCœkÃÄ“+DÃÄ‹nÉÄ›¨nÉÄ{œkÉÄCœkãÄ“›DãÄ‹néÄ›oéÄ{œkéÄCœkÅ“EÅ‹n Å›V° Å{œk ÅCœk)Å›Òæ)Å{œk)ÅCœkIÅ›bçIÅ{œkIÅCœkiÅ›óçiÅ{œkiÅCœk‰Å›oý‰Å{œk‰ÅCœk©Å›Éý©Å{œk©ÅCœkÉÅ›&þÉÅ{œkÉÅCœkéÅ›˜þéÅ{œkéÅCœk Æ›"ÿ Æ{œk ÆCœk)Æ›ÿ)Æ{œk)ÆCœkIÆ›! IÆ{œkIÆCœkiÆ›’ iÆ{œkiÆCœk‰Æ›] ‰Æ{œk‰ÆCœk©Æ›n ©Æ{œk©ÆCœkÉÆ›ÇoÉÆ{œkÉÆCœk鯛¨néÆ{œkéÆCœk Ç›o Ç{œk ÇCœk)Ç›V°)Ç{œk)ÇCœkIÇ›ÒæIÇ{œkIÇCœkiÇ›bçiÇ{œkiÇCœk‰Ç›óç‰Ç{œk‰ÇCœk©Ç›oý©Ç{œk©ÇCœkÉÇ›ÉýÉÇ{œkÉÇCœkéÇ›&þéÇ{œkéÇCœk È›˜þ È{œk ÈCœk)È›"ÿ)È{œk)ÈCœkIÈ›ÿIÈ{œkIÈCœkiÈ›! iÈ{œkiÈCœk‰È›’ ‰È{œk‰ÈCœk©È›] ©È{œk©ÈCœkÉÈ›n ÉÈ{œkÉÈCœkéÈSËq ÉSõq)É{œk)ÉCœk)ÉKHmIÉ{œkIÉCœkIÉKHmiÉ{œkiÉCœkiÉKHm©É›Ço©É{œk©ÉCœkÉÉ›¨nÉÉ{œkÉÉCœkéÉ›ÇoéÉ{œkéÉCœk Ê›¨n Ê{œk ÊCœk)Ê{œk)ÊCœk)ÊKHmIÊ{œkIÊCœkIÊKHmiÊ{œkiÊCœkiÊKHm‰Ê{œk‰ÊCœk‰ÊKHm©Ê{œk©ÊCœk©ÊKHmÉÊ{œkÉÊCœkÉÊKHméÊ{œkéÊCœkéÊKHm Ë{œk ËCœk ËKHm)Ë{œk)ËCœk)ËKHmIË{œkIËCœkIËKHmiË{œkiËCœkiËKHm‰Ë{œk‰ËCœk‰ËKHm©Ë{œk©ËCœk©ËKHmÉË{œkÉËCœkÉËKHméË{œkéËCœkéËKHm Ì{œk ÌCœk ÌKHm#Ì‹n#Ì;:n)Ì{œk)ÌCœk)ÌKHmCÌ;‡sIÌ{œkIÌCœkIÌKHmcÌ;‡siÌ{œkiÌCœkiÌKHm‰Ì{œk‰ÌCœk‰ÌKHm©Ì{œk©ÌCœk©ÌKHmÉÌ{œkÉÌCœkÉÌKHméÌ{œkéÌCœkéÌKHm Í{œk ÍCœk ÍKHm)Í{œk)ÍCœk)ÍKHmIÍ{œkIÍCœkIÍKHmcÍ;‡siÍ{œkiÍCœkiÍKHm€Í{œk€ÍCœkƒÍ;‡s‰Í{œk‰ÍCœk‰ÍKHm ÍSkm©Í{œk©ÍCœk©ÍKHmÀÍ{œkÀÍCœkÃÍ‹nÃÍ;:nÉÍ{œkÉÍCœkÉÍKHmàÍS~méÍ{œkéÍCœkéÍKHmÎ{œkÎCœkΓL΋n Î{œk ÎCœk ÎKHm ÎS‹m#Γ±L#΋n)Î{œk)ÎCœk)ÎKHm@Î{œk@ÎCœkCΓ MC΋nIΛÇoIÎ{œkIÎCœk`Î{œk`ÎCœkcΓ|Mc΋niΛ¨niÎ{œkiÎCœk€Î{œk€ÎCœk‰Î›o‰Î{œk‰ÎCœk©Î›Ço©Î{œk©ÎCœkÀΓØÉΛ¨nÉÎ{œkÉÎCœkéΛoéÎ{œkéÎCœkÏ“¤lÏ‹nÏ;:n Ï{œk ÏCœk ÏKHm)Ï{œk)ÏCœk)ÏKHm@Ï{œk@ÏCœkCÏ“(OCÏ‹nIÏ{œkIÏCœkIÏKHm`Ï{œk`ÏCœkcÏ“€OcÏ‹niÏ{œkiÏCœkiÏKHm€Ï{œk€ÏCœkƒÏ“PƒÏ‹n‰Ï{œk‰ÏCœk‰ÏKHm Ï{œk ÏCœk©Ï›Ço©Ï{œk©ÏCœkÀÏ{œkÀÏCœkÉÏ›¨nÉÏ{œkÉÏCœkàÏ{œkàÏCœkéÏ›oéÏ{œkéÏCœkÐ{œkÐCœkЋnÐ;:n ЛV° Ð{œk ÐCœk Ð{œk ÐCœk)ЛÇo)Ð{œk)ÐCœk@Ð{œk@ÐCœkCГXQCЋnIЛ¨nIÐ{œkIÐCœk`Ð{œk`ÐCœkcГ­QcЋniЛoiÐ{œkiÐCœk€Ð{œk€ÐCœk‰Ð›V°‰Ð{œk‰ÐCœk Ð{œk ÐCœk©Ð{œk©ÐCœk©ÐKHmÀÐ{œkÀÐCœkÃЃœkÃгœkÃÐ;‡sÉÐ{œkÉÐCœkÉÐKHmàÐ{œkàÐCœkãЃœkãгœkãÐ;‡séÐ{œkéÐCœkéÐKHmÑ{œkÑCœkÑËœkÑ‹nÑ;:n Ñ{œk ÑCœk ÑKHm Ñ{œk ÑCœk)Ñ{œk)ÑCœk)ÑKHmCÑËœkCÑ{œkCÑsœkCÑ‹nCÑ;:nIÑ{œkIÑCœkIÑKHmiÑ{œkiÑCœkiÑKHmƒÑ“zSƒÑ‹n‰Ñ{œk‰ÑCœk‰ÑKHm£Ñ“ÉS£Ñ‹n©Ñ{œk©ÑCœk©ÑKHmÃÑ“TÃÑ‹nÉÑ{œkÉÑCœkÉÑKHmãÑ“cTãÑ‹néÑ{œkéÑCœkéÑKHmÒ“°TÒ‹n Ò{œk ÒCœk ÒKHm#Ò“þT#Ò‹n)Ò{œk)ÒCœk)ÒKHmCÒ“LUCÒ‹nIÒ{œkIÒCœkIÒKHmcÒ“šUcÒ‹niÒ{œkiÒCœkiÒKHmƒÒ“èUƒÒ‹n‰Ò{œk‰ÒCœk‰ÒKHm£Ò“7V£Ò‹n©Ò{œk©ÒCœk©ÒKHmÃÒ“†VÃÒ‹nÉÒ{œkÉÒCœkÉÒKHmãÒ“ÕVãÒ‹néÒ{œkéÒCœkéÒKHmÓ“$WÓ‹n Ó{œk ÓCœk ÓKHm)Ó{œk)ÓCœk)ÓKHm@ÓSkmAÓKHmAÓ{œkAÓCœkIÓ{œkIÓCœkIÓKHm`Ó{œk`ÓCœkiÓ{œkiÓCœkiÓKHm€Ó{œk€ÓCœkÓKHmÓ{œkÓCœk‰Ó{œk‰ÓCœk‰ÓKHm Ó{œk ÓCœk¡ÓKHm¡Ó{œk¡ÓCœk©Ó{œk©ÓCœk©ÓKHmÀÓ{œkÀÓCœkÁÓKHmÁÓ{œkÁÓCœkÉÓ{œkÉÓCœkÉÓKHmàÓ{œkàÓCœkáÓKHmáÓ{œkáÓCœkéÓ{œkéÓCœkéÓKHmÔKHmÔ{œkÔCœk Ô{œk ÔCœk ÔKHm!ÔKHm!Ô{œk!ÔCœk)Ô{œk)ÔCœk)ÔKHmAÔKHmAÔ{œkAÔCœkIÔ{œkIÔCœkIÔKHmaÔKHmaÔ{œkaÔCœkiÔ{œkiÔCœkiÔKHm€ÔSkmÔKHmÔ{œkÔCœk‰Ô{œk‰ÔCœk‰ÔKHm Ô{œk ÔCœk¡ÔKHm¡Ô{œk¡ÔCœk©Ô{œk©ÔCœk©ÔKHmÀÔ{œkÀÔCœkÁÔKHmÁÔ{œkÁÔCœkÃÔËœkÃÔ{œkÃÔsœkÃÔ‹nÃÔ;:nÉÔ{œkÉÔCœkÉÔKHmàÔ{œkàÔCœkáÔKHmáÔ{œkáÔCœkéÔ{œkéÔCœkéÔKHmÕ{œkÕCœkÕKHmÕ{œkÕCœkÕ“›XÕ‹n Õ{œk ÕCœk ÕKHm Õ{œk ÕCœk!ÕKHm!Õ{œk!ÕCœk#Õ“ëX#Õ‹n)Õ{œk)ÕCœk)ÕKHm@Õ{œk@ÕCœkAÕKHmAÕ{œkAÕCœkCÕ“CYCÕ‹nIÕ{œkIÕCœkIÕKHmaÕKHmaÕ{œkaÕCœkcÕ“ìYcÕ‹niÕ{œkiÕCœkiÕKHmÕKHmÕ{œkÕCœkƒÕ“YZƒÕ‹n‰Õ{œk‰ÕCœk‰ÕKHm¡ÕKHm¡Õ{œk¡ÕCœk©Õ{œk©ÕCœk©ÕKHmÁÕKHmÁÕ{œkÁÕCœkÉÕ{œkÉÕCœkÉÕKHmáÕKHmáÕ{œkáÕCœkéÕ{œkéÕCœkéÕKHmÖKHmÖ{œkÖCœk Ö{œk ÖCœk ÖKHm!ÖKHm!Ö{œk!ÖCœk)Ö{œk)ÖCœk)ÖKHmAÖKHmAÖ{œkAÖCœkCÖËœkCÖ‹nCÖ;:nIÖ{œkIÖCœkIÖKHmaÖKHmaÖ{œkaÖCœkiÖ{œkiÖCœkiÖKHmÖKHmÖ{œkÖCœkƒÖ“Þ[ƒÖ‹n‰Ö{œk‰ÖCœk‰ÖKHm¡ÖKHm¡Ö{œk¡ÖCœk£Ö“0\£Ö‹n©Ö{œk©ÖCœk©ÖKHmÀÖ{œkÀÖCœkÁÖKHmÁÖ{œkÁÖCœkÃÖ“ƒ\ÃÖ‹nÉÖ{œkÉÖCœkÉÖKHmàÖSkmáÖKHmáÖ{œkáÖCœkéÖ{œkéÖCœkéÖKHm×{œk×Cœk×KHm×{œk×Cœk ×{œk ×Cœk ×KHm ×S~m!×KHm!×{œk!×Cœk)×{œk)×Cœk)×KHm@×{œk@×CœkA×KHmA×{œkA×CœkC×ËœkC׋nC×;:nI×{œkI×CœkI×KHm`×S‹ma×KHma×{œka×Cœki×{œki×Cœki×KHm€×{œk€×Cœk×KHm×{œk×Cœkƒ×‹nƒ×;:n‰×{œk‰×Cœk‰×KHm ×{œk ×Cœk¡×KHm¡×{œk¡×Cœk£×ƒœk£×³œk£×Óœk£×‹n£×;:n©×{œk©×Cœk©×KHmÀ×{œkÀ×CœkÁ×KHmÁ×{œkÁ×CœkÉ×{œkÉ×CœkÉ×KHmà×{œká×KHmá×{œká×Cœkãד._ã׋né×{œké×Cœké×KHmØ{œkØKHmØ{œkØCœkØ“Æ_Ø‹n Ø{œk ØCœk ØKHm Ø{œk!ØKHm!Ø{œk!ØCœk)Ø{œk)ØCœk)ØKHm@Ø{œkAØKHmAØ{œkAØCœkIØ{œkIØCœkIØKHm`Ø{œkaØKHmaØ{œkaØCœkcØËœkcØ‹ncØ;:niØ{œkiØCœkiØKHm€Ø{œkØKHmØ{œkØCœk‰Ø{œk‰ØCœk‰ØKHm Ø{œk¡ØKHm¡Ø{œk¡ØCœk£ØËœk£Ø‹n£Ø;:n©Ø{œk©ØCœk©ØKHmÀØ{œkÁØKHmÁØ{œkÁØCœkÉØ{œkÉØCœkÉØKHmàØSkmáØKHmáØ{œkáØCœkãØËœkãØ‹nãØ;:néØ{œkéØCœkéØKHmÙ{œkÙCœkÙKHmÙ{œkÙCœk Ù{œk ÙCœk ÙKHm Ù{œk ÙCœk!ÙKHm!Ù{œk!ÙCœk#ÙËœk#Ù‹n#Ù;:n)Ù{œk)ÙCœk)ÙKHm@Ù{œk@ÙCœkAÙKHmAÙ{œkAÙCœkIÙ{œkIÙCœkIÙKHm`Ù{œk`ÙCœkaÙKHmaÙ{œkaÙCœkcÙƒœkcÙ³œkcÙ;‡siÙ{œkiÙCœkiÙKHm€Ù{œk€ÙCœkÙKHmÙ{œkÙCœkƒÙ;‡s‰Ù{œk‰ÙCœk‰ÙKHm Ù{œk ÙCœk¡ÙKHm¡Ù{œk¡ÙCœk£Ù;‡s©Ù{œk©ÙCœk©ÙKHmÀÙSkmÁÙKHmÁÙ{œkÁÙCœkÃÙ‹nÃÙ;:nÉÙ{œkÉÙCœkÉÙKHmàÙ{œkàÙCœkáÙKHmáÙ{œkáÙCœkãÙ;‡séÙ{œkéÙCœkéÙKHmÚ{œkÚCœkÚKHmÚ{œkÚCœkÚËœkÚ‹nÚ;:n Ú{œk ÚCœk ÚKHm Ú{œk ÚCœk!ÚKHm!Ú{œk!ÚCœk)Ú{œk)ÚCœk)ÚKHm@Ú{œk@ÚCœkAÚKHmAÚ{œkAÚCœkCÚ“/dCÚ‹nIÚ{œkIÚCœkIÚKHm`Ú{œk`ÚCœkaÚKHmaÚ{œkaÚCœkiÚ{œkiÚCœkiÚKHmÚKHmÚ{œkÚCœkƒÚËœkƒÚ‹nƒÚ;:n‰Ú{œk‰ÚCœk‰ÚKHm Ú{œk ÚCœk¡ÚKHm¡Ú{œk¡ÚCœk©Ú{œk©ÚCœk©ÚKHmÀÚSkmÁÚKHmÁÚ{œkÁÚCœkÃÚ“÷dÃÚ‹nÉÚ{œkÉÚCœkÉÚKHmàÚ{œkàÚCœkáÚKHmáÚ{œkáÚCœkãÚ“ZeãÚ‹néÚ{œkéÚCœkéÚKHmÛS~mÛKHmÛ{œkÛCœk Û{œk ÛCœk ÛKHm Û{œk ÛCœk!ÛKHm!Û{œk!ÛCœk)Û{œk)ÛCœk)ÛKHm@ÛS‹mAÛKHmAÛ{œkAÛCœkCÛƒœkCÛ³œkCÛÓœkCÛ‹nCÛ;:nIÛ{œkIÛCœkIÛKHm`Û{œk`ÛCœkcÛËœkcÛ‹ncÛ;:niÛ{œkiÛCœkiÛKHm€ÛSâ¢ÛKHmÛ{œkÛCœk‰Û{œk‰ÛCœk‰ÛKHm Û{œk ÛCœk©Û{œk©ÛCœk©ÛKHmÀÛSï¢ÉÛ{œkÉÛCœkÉÛKHmàÛ{œkàÛCœkáÛKHmãÛ{œkãÛsœkãÛ‹nãÛ;:néÛ{œkéÛCœkéÛKHmÜSü¢ÜKHm Ü{œk ÜCœk ÜKHm Ü{œk ÜCœk!ÜKHm#Ü;‡s)Ü{œk)ÜCœk)ÜKHm@Ü{œk@ÜCœkAÜKHmAÜ{œkAÜCœkC܃œkCܳœkCÜ;‡sIÜ{œkIÜCœkIÜKHm`Ü{œk`ÜCœkcܳœkc܃œkcÜÓœkcÜ‹ncÜ;:niÜ{œkiÜCœkiÜKHm€Ü{œk‰Ü{œk‰ÜCœk‰ÜKHm Ü{œk£Üƒœk£Ü³œk£Ü;‡s©Ü{œk©ÜCœk©ÜKHmÀÜ{œkÁÜKHmÁÜ{œkÁÜCœkÃܳœkÃ܃œkÃÜÓœkÃÜ‹nÃÜ;:nÉÜ{œkÉÜCœkÉÜKHmàÜ{œkáÜKHmáÜ{œkáÜCœkã܃œkãܳœkãÜ;‡séÜ{œkéÜCœkéÜKHmÝ{œkÝKHmÝ{œkÝCœkݳœk݃œkÝÓœkÝ‹nÝ;:n Ý{œk ÝCœk ÝKHm Ý{œk!ÝKHm!Ý{œk!ÝCœk#݃œk#ݳœk#Ý;‡s)Ý{œk)ÝCœk)ÝKHmCݳœkC݃œkCÝÓœkCÝ‹nCÝ;:nIÝ{œkIÝCœkIÝKHmcÝ;‡siÝ{œkiÝCœkiÝKHmÝKHmÝ{œkÝCœkƒÝ³œkƒÝƒœkƒÝÓœkƒÝ‹nƒÝ;:n‰Ý{œk‰ÝCœk‰ÝKHm¡ÝKHm¡Ý{œk¡ÝCœk©Ý{œk©ÝCœk©ÝKHmÁÝKHmÁÝ{œkÁÝCœkÃÝËœkÃÝ‹nÃÝ;:nÉÝ{œkÉÝCœkÉÝKHmàÝ“ÎkáÝKHmáÝ{œkáÝCœkéÝ{œkéÝCœkéÝKHmÞ“ÄoÞ‹n Þ{œk ÞCœk ÞKHm#Þ“/p#Þ‹n)Þ{œk)ÞCœk)ÞKHmCÞ“†pCÞ‹nIÞ{œkIÞCœkIÞKHm`Þ{œkiÞ{œkiÞCœkiÞKHm€Þ{œk‰Þ{œk‰ÞCœk‰ÞKHm ÞSkm¡ÞKHm¡Þ{œk¡ÞCœk©Þ{œk©ÞCœk©ÞKHmÀÞ{œkÀÞCœkÁÞKHmÁÞ{œkÁÞCœkÃÞ;‡sÉÞ{œkÉÞCœkÉÞKHmàÞ{œkàÞCœkáÞKHmáÞ{œkáÞCœkãÞËœkãÞ‹nãÞ;:néÞ{œkéÞCœkéÞKHmß{œkßCœk ß{œk ßCœk ßKHm ß{œk ßCœk#ßËœk#ß‹n#ß;:n)ß{œk)ßCœk)ßKHm@ß{œk@ßCœkIß{œkIßCœkIßKHm`ß{œk`ßCœkcßËœkcß‹ncß;:niß{œkißCœkißKHm€ß{œk€ßCœkßKHmß{œkßCœk‰ß{œk‰ßCœk‰ßKHm ß{œk ßCœk¡ßKHm¡ß{œk¡ßCœk£ß“Ùr£ß‹n©ß{œk©ßCœk©ßKHmÀß{œkÀßCœkÁßKHmÁß{œkÁßCœkÃß“-sÃß‹nÉß{œkÉßCœkÉßKHmàß{œkàßCœkáßKHmáß{œkáßCœkãß“‚sãß‹néß{œkéßCœkéßKHmà{œkàCœkàKHmà{œkàCœk à{œk àCœk àKHm à{œk àCœk!àKHm!à{œk!àCœk)à{œk)àCœk)àKHm@à{œk@àCœkIà{œkIàCœkIàKHm`à{œk`àCœkaàKHmaà{œkaàCœkcàËœkcà‹ncà;:nià{œkiàCœkiàKHmàKHmà{œkàCœk‰à{œk‰àCœk‰àKHm£à“¨t£à‹n©à{œk©àCœk©àKHmÀàSkmÁàKHmÁà{œkÁàCœkÉà{œkÉàCœkÉàKHmàà{œkààCœkáàKHmáà{œkáàCœkãà‹nãà;:néà{œkéàCœkéàKHmá{œkáCœká;‡s á{œk áCœk áKHm á{œk áCœk#ნk#᳜k#á;‡s)á{œk)áCœk)áKHm@á{œk@áCœkAáKHmAá{œkAáCœkC᳜kCნkCáÓœkCá‹nCá;:nIá{œkIáCœkIáKHm`á{œk`áCœkaáKHmaá{œkaáCœkcá;Çùiá{œkiáCœkiáKHm€á{œk€áCœkƒá;‡s‰á{œk‰áCœk‰áKHm á{œk áCœk¡áKHm¡á{œk¡áCœk£á³œk£áƒœk£áÓœk£á‹n£á;:n©á{œk©áCœk©áKHmÀá{œkÀáCœkÁáKHmÁá{œkÁáCœkÃნkÃ᳜kÃá;‡sÉá{œkÉáCœkÉáKHmàá{œkàáCœkã᳜kãნkãáÓœkãá‹nãá;:néá{œkéáCœkéáKHmâ{œkâCœkâKHmâ{œkâCœk â{œk âCœk âKHm â{œk âCœk!âKHm!â{œk!âCœk)â{œk)âCœk)âKHm@â{œk@âCœkCâËœkCâ‹nCâ;:nIâ{œkIâCœkIâKHm`â{œk`âCœkaâKHmaâ{œkaâCœkiâ{œkiâCœkiâKHm€â{œk€âCœkƒâËœkƒâ‹nƒâ;:n‰â{œk‰âCœk‰âKHm âSkm©â{œk©âCœk©âKHmÀâ{œkÀâCœkÁâKHmÁâ{œkÁâCœkÃâ“Ë}Ãâ‹nÉâ{œkÉâCœkÉâKHmàâ{œkàâCœkáâKHmáâ{œkáâCœkãâ“*~ãâ‹néâ{œkéâCœkéâKHmã{œkãCœkãKHmã{œkãCœkã“~~ã‹n ã{œk ãCœk ãKHm ã{œk ãCœk!ãKHm!ã{œk!ãCœk)ã{œk)ãCœk)ãKHm@ã{œk@ãCœkAãKHmAã{œkAãCœkIã{œkIãCœkIãKHm`ã{œk`ãCœkaãKHmaã{œkaãCœkiã{œkiãCœkiãKHm€ã{œk€ãCœkãKHmã{œkãCœkƒã;‡s‰ã{œk‰ãCœk‰ãKHm ã{œk ãCœk¡ãKHm¡ã{œk¡ãCœk£ã³œk£ãƒœk£ãÓœk£ã‹n£ã;:n©ã{œk©ãCœk©ãKHmÀã{œkÀãCœkÁãKHmÁã{œkÁãCœkÃãËœkÃã‹nÃã;:nÉã{œkÉãCœkÉãKHmàã{œkàãCœkáãKHmáã{œkáãCœkéã{œkéãCœkéãKHmä{œkäCœkäKHmä{œkäCœkä;‡s ä{œk äCœk äKHm ä{œk äCœk#ä;‡s)ä{œk)äCœk)äKHm@ä{œk@äCœkAäKHmAä{œkAäCœkCä‹nCä;:nIä{œkIäCœkIäKHm`ä{œk`äCœkiä{œkiäCœkiäKHm€ä{œk€äCœkäKHmä{œkäCœk‰ä{œk‰äCœk‰äKHm¡äKHm¡ä{œk¡äCœk©ä{œk©äCœk©äKHmÁäKHmÁä{œkÁäCœkÉä{œkÉäCœkÉäKHmàäSkmáäKHmáä{œkáäCœkéä{œkéäCœkéäKHmå{œkåCœk å{œk åCœk åKHm å{œk åCœk)å{œk)åCœk)åKHm@å{œk@åCœkIå{œkIåCœkIåKHm`å{œk`åCœkiå{œkiåCœkiåKHm€åSkmåKHmå{œkåCœk‰å{œk‰åCœk‰åKHm å{œk åCœk©å{œk©åCœk©åKHmÀå{œkÀåCœkÉå{œkÉåCœkÉåKHmàå{œkàåCœkéå{œkéåCœkéåKHmæ{œkæCœk æ{œk æCœk æKHm æ{œk æCœk)æ{œk)æCœk)æKHm@æ{œk@æCœkIæ{œkIæCœkIæKHm`æ{œk`æCœkaæKHmaæ{œkaæCœkiæ{œkiæCœkiæKHm€æ{œk€æCœkæKHmæ{œkæCœk‰æ{œk‰æCœk‰æKHm æ{œk æCœk¡æKHm¡æ{œk¡æCœk©æ{œk©æCœk©æKHmÀæ{œkÀæCœkÉæ{œkÉæCœkÉæKHmàæ{œkàæCœkéæ{œkéæCœkéæKHmç{œkçCœkç;Çù ç{œk çCœk çKHm ç{œk çCœk!çKHm!ç{œk!çCœk)ç{œk)çCœk)çKHm@ç{œk@çCœkAçKHmAç{œkAçCœkIç{œkIçCœkIçKHm`ç{œk`çCœkaçKHmaç{œkaçCœkiç{œkiçCœkiçKHm€ç{œk€çCœkçKHmç{œkçCœk‰ç{œk‰çCœk‰çKHm ç{œk çCœk¡çKHm¡ç{œk¡çCœk©ç{œk©çCœk©çKHmÁçKHmÁç{œkÁçCœkÉç{œkÉçCœkÉçKHmáçKHmáç{œkáçCœkéç{œkéçCœkéçKHmèKHmè{œkèCœk è{œk èCœk èKHm!èKHm!è{œk!èCœk)è›"ÿ)è{œk)èCœkAèKHmAè{œkAèCœkIè›ÿIè{œkIèCœkaèKHmaè{œkaèCœkiè›iè{œkièCœkèKHmè{œkèCœk‰è›¹.‰è{œk‰èCœk¡èKHm¡è{œk¡èCœk£è³œk£èƒœk£è;‡s©è›Ê.©è{œk©èCœkÁèKHmÁè{œkÁèCœkÃè;ÇùÉè›g/Éè{œkÉèCœkáèKHmáè{œkáèCœkãè;Çùéè›.0éè{œkéèCœkéKHmé{œkéCœké;Çù 雤0 é{œk éCœk!éKHm!é{œk!éCœk#é;Çù)雵0)é{œk)éCœkAéKHmAé{œkAéCœkI雯0Ié{œkIéCœkaéKHmaé{œkaéCœkié›1ié{œkiéCœkéKHmé{œkéCœk‰é›Ž1‰é{œk‰éCœk¡éKHm¡é{œk¡éCœk©é›òå ©é{œk©éCœkÁéKHmÁé{œkÁéCœkÉé›Sæ Éé{œkÉéCœkáéKHmáé{œkáéCœkéé›dæ éé{œkééCœkêKHmê{œkêCœk ê›ç2 ê{œk êCœk#ê;4m)ê›”2)ê{œk)êCœkIê›03Iê{œkIêCœkaêKHmaê{œkaêCœkiê›Ô3iê{œkiêCœk€êSkmêKHmê{œkêCœk‰ê›q4‰ê{œk‰êCœk ê{œk êCœk¡êKHm¡ê{œk¡êCœk©ê›+4©ê{œk©êCœkÀê{œkÀêCœkÉê›<4Éê{œkÉêCœkàê{œkàêCœkéê›Ò4éê{œkéêCœkë{œkëCœk ë›é5 ë{œk ëCœk)ë›ú5)ë{œk)ëCœkIë› 6Ië{œkIëCœkië›Æ6ië{œkiëCœk‰ë›×6‰ë{œk‰ëCœk¡ëKHm¡ë{œk¡ëCœk©ë›‡5©ë{œk©ëCœkÁëKHmÁë{œkÁëCœkÉë›27Éë{œkÉëCœkáëKHmáë{œkáëCœkéë›C7éë{œkéëCœk ì›T7 ì{œk ìCœk)ì›e7)ì{œk)ìCœkCìËœkCì‹nCì;:nIì›8Iì{œkIìCœkiì›'8iì{œkiìCœkìKHmì{œkìCœkƒì“JŒƒì‹n‰ì›88‰ì{œk‰ìCœk£ì“ Œ£ì‹n©ì›Ú8©ì{œk©ìCœkÃì“Ãì‹nÉì›9Éì{œkÉìCœkãì“mãì‹né웞9éì{œkéìCœk í›:Z í{œk íCœk)훌[)í{œk)íCœkAíKHmAí{œkAíCœkI훾7Ií{œkIíCœkaíKHmaí{œkaíCœkií›\ií{œkiíCœkíKHmí{œkíCœkƒí;‡s‰í›*8‰í{œk‰íCœk¡íKHm¡í{œk¡íCœk£í;‡s©í›;8©í{œk©íCœkÃí‹nÃí;:nÉ훫\Éí{œkÉíCœkéí›%]éí{œkéíCœkî“­î‹n î›–] î{œk îCœk#î“‘#î‹n)î›F9)î{œk)îCœkAîKHmAî{œkAîCœkIî› ^Iî{œkIîCœki9iî{œkiîCœk‰î›µ9‰î{œk‰îCœk£î;4m©î›:©î{œk©îCœkÉî›o:Éî{œkÉîCœkáîKHmáî{œkáîCœkéî›Í:éî{œkéîCœk ï›6; ï{œk ïCœk#ï;Çù);)ï{œk)ïCœkCï;ÇùIï›<Iï{œkIïCœkiï›d<iï{œkiïCœk‰ï›Ã<‰ï{œk‰ïCœk©ï›Ô<©ï{œk©ïCœkÉï›å<Éï{œkÉïCœkãï;4méï›U=éï{œkéïCœk ð›f= ð{œk ðCœk)ð›w=)ð{œk)ðCœkIð›Ô=Ið{œkIðCœkið›/>ið{œkiðCœk‰ð›Œ>‰ð{œk‰ðCœk©ð›í>©ð{œk©ðCœkÉð›K?Éð{œkÉðCœkáðKHmáð{œkáðCœkéð›©?éð{œkéðCœkñKHmñ{œkñCœk ñ›@ ñ{œk ñCœk!ñKHm!ñ{œk!ñCœk)ñ›@)ñ{œk)ñCœkAñKHmAñ{œkAñCœkIñ›)@Iñ{œkIñCœkañKHmañ{œkañCœkiñ›:@iñ{œkiñCœkñKHmñ{œkñCœk‰ñ›­@‰ñ{œk‰ñCœk¡ñKHm¡ñ{œk¡ñCœk©ñ›¾@©ñ{œk©ñCœkÁñKHmÁñ{œkÁñCœkÉñ› AÉñ{œkÉñCœkáñKHmáñ{œkáñCœkéñ›1Aéñ{œkéñCœkòKHmò{œkòCœk ò›“A ò{œk òCœk!òKHm!ò{œk!òCœk)ò›¤A)ò{œk)òCœkAòKHmAò{œkAòCœkIò›BIò{œkIòCœkaòKHmaò{œkaòCœkiò›bBiò{œkiòCœkòKHmò{œkòCœk‰ò›ËB‰ò{œk‰òCœk¡òKHm¡ò{œk¡òCœk©ò›éû{œkéûCœkü{œküKHmü{œküCœk ü›Œ> ü{œk üCœk ü{œk!üKHm!ü{œk!üCœk)ü›í>)ü{œk)üCœk@ü{œkAüKHmAü{œkAüCœkIü›K?Iü{œkIüCœkaüKHmaü{œkaüCœkiü›©?iü{œkiüCœküKHmü{œküCœk‰ü›@‰ü{œk‰üCœk¡üKHm¡ü{œk¡üCœk©ü›@©ü{œk©üCœkÉü›)@Éü{œkÉüCœkáüKHmáü{œkáüCœkéü›:@éü{œkéüCœkýKHmý{œkýCœk ý›­@ ý{œk ýCœk!ýKHm!ý{œk!ýCœk)ý›¾@)ý{œk)ýCœkAýKHmAý{œkAýCœkIý› AIý{œkIýCœkaýKHmaý{œkaýCœkiý›1Aiý{œkiýCœkƒýÓœkƒý;‡s‰ý›“A‰ý{œk‰ýCœk£ýÓœk£ý;‡s©ý›¤A©ý{œk©ýCœkÃý;âøÉý›BÉý{œkÉýCœkãý ‰Â ãý;âøéý›bBéý{œkéýCœkþ;âø þ›ËB þ{œk þCœk þSkm#þ‹n#þ;:n)þ›KHm>{œk>Cœk!>KHm!>{œk!>Cœk)>SËqA>KHmA>{œkA>CœkI>Sõqa>KHma>{œka>Cœki>Sr‰>S'r©>S:rÉ>SMré>SZr?KHm?{œk?Cœk ?Sgr)?StrI?{œkI?CœkI?KHmi?›Çoi?{œki?Cœk©?SËqÉ?Sõqé?Sr @S'r)@S:rI@SMri@SZr‰@Sgr©@StrÉ@Sré@{œké@Cœké@KHm A›Ço A{œk ACœkIASËqiASõq‰ASr©AS'rÉAS:réASMr BSZr!BKHm!B{œk!BCœk)BSgrABKHmAB{œkABCœkIBStriBSr‰BSŽr©BS›rÉBSºwéB{œkéBCœkéBKHm C›Ço C{œk CCœkICSËqiCSõqCKHmC{œkCCœk‰C{œk‰CCœk‰CKHm¡CKHm¡C{œk¡CCœk©C›Ço©C{œk©CCœkÁCKHmÁC{œkÁCCœkáCKHmáC{œkáCCœkéC{œkéCCœkéCKHm D{œk DCœk DKHm)D{œk)DCœk)DKHmID{œkIDCœkIDKHmiD{œkiDCœkiDKHm‰D›¨n‰D{œk‰DCœk©D›o©D{œk©DCœkÉD›¨nÉD{œkÉDCœkéD›oéD{œkéDCœk ESËq)ESõqIE{œkIECœkIEKHmaEKHmaE{œkaECœkiE{œkiECœkiEKHmEKHmE{œkECœk‰E{œk‰ECœk‰EKHm¡EKHm¡E{œk¡ECœk©E{œk©ECœk©EKHmÁEKHmÁE{œkÁECœkÉE{œkÉECœkÉEKHméE{œkéECœkéEKHm F{œk FCœk FKHm)F{œk)FCœk)FKHmIF{œkIFCœkIFKHmiF{œkiFCœkiFKHm‰F{œk‰FCœk‰FKHm¡FKHm¡F{œk¡FCœk©F{œk©FCœk©FKHmÁFKHmÁF{œkÁFCœkÉF{œkÉFCœkÉFKHmáFKHmáF{œkáFCœkéF{œkéFCœkéFKHm G{œk GCœk GKHm)G{œk)GCœk)GKHmIG{œkIGCœkIGKHmiG{œkiGCœkiGKHm‰G›o‰G{œk‰GCœk©G›o©G{œk©GCœkÉG{œkÉGCœkÉGKHméG{œkéGCœkéGKHmHKHmH{œkHCœk H{œk HCœk HKHm!HKHm!H{œk!HCœk)H{œk)HCœk)HKHmAHKHmAH{œkAHCœkIH{œkIHCœkIHKHmiH{œkiHCœkiHKHm‰H{œk‰HCœk‰HKHm©H{œk©HCœk©HKHmÉH{œkÉHCœkÉHKHméH{œkéHCœkéHKHm I{œk ICœk IKHm)I{œk)ICœk)IKHmII›bçII{œkIICœkiI›bçiI{œkiICœk‰I{œk‰ICœk‰IKHm©I›Ço©I{œk©ICœkÁIKHmÁI{œkÁICœkÉISËqéISËqJKHmJ{œkJCœk JSõq!JKHm!J{œk!JCœk)JSrAJKHmAJ{œkAJCœkIJS'riJS:r‰JSMr¡JKHm¡J{œk¡JCœk©JSZrÁJKHmÁJ{œkÁJCœkÉJSgréJStr KSr!KKHm!K{œk!KCœk)KSŽrAKKHmAK{œkAKCœkIKS›raKKHmaK{œkaKCœkiKSºw‰KSÖw©KSãwÉKSðwéKSƒ­ LS­)LS­ILS²­iLS¿­‰LSÝ­©LSê­ÁLKHmÁL{œkÁLCœkáLKHmáL{œkáLCœkMKHmM{œkMCœkiM{œkiMCœkiMKHmMKHmM{œkMCœk‰M›Ço‰M{œk‰MCœk¡MKHm¡M{œk¡MCœk©M›Üo©M{œk©MCœkÁMKHmÁM{œkÁMCœkNKHmN{œkNCœk NSËq!NKHm!N{œk!NCœk)NSõqANKHmAN{œkANCœkINSriNS'r‰N{œk‰NCœk‰NKHm©N›Ço©N{œk©NCœkéNSËq OSõq)OSrIOS'riOS:r‰OSMr©O{œk©OCœk©OKHmÉO›ÇoÉO{œkÉOCœk P{œk PCœk PKHm!PKHm!P{œk!PCœk)P{œk)PCœk)PKHmAPKHmAP{œkAPCœkIP{œkIPCœkIPKHmaPKHmaP{œkaPCœkiP{œkiPCœkiPKHmPKHmP{œkPCœk‰P{œk‰PCœk‰PKHm¡PKHm¡P{œk¡PCœk©P{œk©PCœk©PKHmÁPKHmÁP{œkÁPCœkÉP{œkÉPCœkÉPKHmáPKHmáP{œkáPCœkéP{œkéPCœkéPKHmQKHmQ{œkQCœk Q{œk QCœk QKHm)Q›Ço)Q{œk)QCœkIQ›¨nIQ{œkIQCœkiQ›QpiQ{œkiQCœk‰Q›o‰Q{œk‰QCœk¡QKHm¡Q{œk¡QCœk©Q›Ço©Q{œk©QCœkÁQKHmÁQ{œkÁQCœkÉQ›¨nÉQ{œkÉQCœkáQKHmáQ{œkáQCœkéQ›QpéQ{œkéQCœkRKHmR{œkRCœk R›o R{œk RCœk R{œk RCœk!RKHm!R{œk!RCœk)RSËq@R{œk@RCœkIRSõqiRSr‰RS'r©R{œk©RCœk©RKHmÁRKHmÁR{œkÁRCœkÉR›ÇoÉR{œkÉRCœk S{œk SCœk SKHm)S{œk)SCœk)SKHmASKHmAS{œkASCœkIS{œkISCœkISKHmaSKHmaS{œkaSCœkiS{œkiSCœkiSKHmSKHmS{œkSCœk‰S{œk‰SCœk‰SKHm¡SKHm¡S{œk¡SCœk©S{œk©SCœk©SKHmÁSKHmÁS{œkÁSCœkÉS{œkÉSCœkÉSKHméS{œkéSCœkéSKHm T{œk TCœk TKHm)T{œk)TCœk)TKHmIT{œkITCœkITKHmiTSËq‰TSõq¡TKHm¡T{œk¡TCœk©TSrÁTKHmÁT{œkÁTCœkÉTS'ráTKHmáT{œkáTCœkéTS:rUKHmU{œkUCœk USMr!UKHm!U{œk!UCœk)USZrAUKHmAU{œkAUCœkIUSgraUKHmaU{œkaUCœkiUStr‰USr©USŽrÉUS›réUSºw VSËq)VSõqIVSriVS'r‰VS:r©VSMrÉVSZréVSgr WStr)WSrIWSŽriWS›r‰WSºw©WSÖwÉWSãwéWSðw XSƒ­)XS­IXS­iXS²­ X{œk XCœkÀX{œkÀXCœkÉX{œkÉXCœkÉXKHmáXKHmáX{œkáXCœkéX{œkéXCœkéXKHmYKHmY{œkYCœk YSËq!YKHm!Y{œk!YCœk)YSõqAYKHmAY{œkAYCœkIYSraYKHmaY{œkaYCœkiYS'rYKHmY{œkYCœk‰YS:r¡YKHm¡Y{œk¡YCœk©YSMrÁYKHmÁY{œkÁYCœkÉYSZráYKHmáY{œkáYCœkéYSgrZKHmZ{œkZCœk ZStr!ZKHm!Z{œk!ZCœk)ZSrAZKHmAZ{œkAZCœkIZSŽraZKHmaZ{œkaZCœkiZS›rZKHmZ{œkZCœk‰ZSºw¡ZKHm¡Z{œk¡ZCœk©ZSÖwÁZKHmÁZ{œkÁZCœkÉZSãwáZKHmáZ{œkáZCœkéZSðw[KHm[{œk[Cœk [Sƒ­![KHm![{œk![Cœk)[S­A[KHmA[{œkA[CœkI[S­a[KHma[{œka[Cœki[S²­[KHm[{œk[Cœk‰[S¿­¡[KHm¡[{œk¡[Cœk©[SÝ­Á[KHmÁ[{œkÁ[CœkÉ[Sê­á[KHmá[{œká[Cœké[S®\KHm\{œk\Cœk \S®!\KHm!\{œk!\Cœk)\S®A\KHmA\{œkA\CœkI\S(®a\KHma\{œka\Cœki\S5®\KHm\{œk\Cœk‰\SB®¡\KHm¡\{œk¡\Cœk©\SO®Á\KHmÁ\{œkÁ\CœkÉ\S\®á\KHmá\{œká\Cœké\Si®]KHm]{œk]Cœk ]Sv®!]KHm!]{œk!]Cœk)]Sƒ®A]KHmA]{œkA]CœkI]S®a]KHma]{œka]Cœki]S®]KHm]{œk]Cœk‰]Sª®¡]KHm¡]{œk¡]Cœk©]S·®Á]KHmÁ]{œkÁ]CœkÉ]SÄ®á]KHmá]{œká]Cœké]SÑ®^KHm^{œk^Cœk ^SÞ®!^KHm!^{œk!^Cœk)^Së®A^KHmA^{œkA^CœkI^S¯a^KHma^{œka^Cœki^S¯^KHm^{œk^Cœk‰^S¯ ^{œk ^Cœk¡^KHm¡^{œk¡^Cœk©^S1¯À^{œkÀ^CœkÁ^KHmÁ^{œkÁ^CœkÉ^S>¯á^KHmá^{œká^Cœké^SK¯_KHm_{œk_Cœk _SX¯!_KHm!_{œk!_Cœk)_Se¯A_KHmA_{œkA_CœkI_Sr¯a_KHma_{œka_Cœki_S¯_KHm_{œk_Cœk‰_SŒ¯¡_KHm¡_{œk¡_Cœk©_S™¯Á_KHmÁ_{œkÁ_CœkÉ_S¦¯à_{œkà_Cœká_KHmá_{œká_Cœké_S³¯`{œk`Cœk`KHm`{œk`Cœk `SÀ¯!`KHm!`{œk!`Cœk)`SͯA`KHmA`{œkA`CœkI`SÚ¯a`KHma`{œka`Cœki`Sç¯`KHm`{œk`Cœk‰`Sô¯¡`KHm¡`{œk¡`Cœk©`S°Á`KHmÁ`{œkÁ`CœkÉ`S°á`KHmá`{œká`Cœké`S°aKHma{œkaCœk aS(°!aKHm!a{œk!aCœk)aS5°IaSH°iaSU°‰aSb°¡aKHm¡a{œk¡aCœk©aSo°ÁaKHmÁa{œkÁaCœkÉaS|°áaKHmáa{œkáaCœkéaS‰° bS–°)bS£°AbKHmAb{œkAbCœkIbS°°abKHmab{œkabCœkib{œkibCœkibKHmbKHmb{œkbCœk‰b{œk‰bCœk‰bKHm¡bKHm¡b{œk¡bCœk©b{œk©bCœk©bKHmÉb{œkÉbCœkÉbKHméb{œkébCœkébKHm c›Ço c{œk cCœk)c›¨n)c{œk)cCœkIc›oIc{œkIcCœkic›qic{œkicCœkcKHmc{œkcCœk‰c›V°‰c{œk‰cCœk©c›ˆ©c{œk©cCœkÁcKHmÁc{œkÁcCœkÉc›ÇoÉc{œkÉcCœkácKHmác{œkácCœkéc›¨néc{œkécCœkdKHmd{œkdCœk d›o d{œk dCœk)d›q)d{œk)dCœkId›V°Id{œkIdCœkid›ˆid{œkidCœk‰dSËq©dSõqÉdSËqédSõq e{œk eCœk eKHm)e{œk)eCœk)eKHmIe{œkIeCœkIeKHmie›Çoie{œkieCœkeKHme{œkeCœk‰e›¨n‰e{œk‰eCœk©e›Ço©e{œk©eCœkÁeKHmÁe{œkÁeCœkÉe›¨nÉe{œkÉeCœkáeKHmáe{œkáeCœkfKHmf{œkfCœk!fKHm!f{œk!fCœkAfKHmAf{œkAfCœkIfSËqafKHmaf{œkafCœkifSõq‰fSËq©fSõqÁfKHmÉfSËqáfKHméfSõq gSËq)gSõqAgKHmagKHmgKHm‰gSËq¡gKHm©gSõqÁgKHmágKHmhKHm h;µÜ!hKHmAhKHmahKHmhKHm¡hKHm©h{œk©hCœk©hKHmÁhKHmÉh›ÇoÉh{œkÉhCœkáhKHméhSËqiKHm iSõq!iKHm)iSrAiKHmIi;µÜaiKHmii;µÜiKHm‰i{œk‰iCœk‰iKHm¡iKHm©i{œk©iCœk©iKHmÁiKHmÉi{œkÉiCœkÉiKHmáiKHméi{œkéiCœkéiKHmjKHm j{œk jCœk jKHm!jKHm)j{œk)jCœk)jKHmAjKHmIj{œkIjCœkIjKHmajKHmij{œkijCœkijKHmjKHm‰j{œk‰jCœk‰jKHm¡jKHm©j{œk©jCœk©jKHmÁjKHmÉj{œkÉjCœkÉjKHmájKHméj{œkéjCœkéjKHmkKHm k{œk kCœk kKHm!kKHm)k{œk)kCœk)kKHmAkKHmIk›bçIk{œkIkCœkakKHmik›bçik{œkikCœkkKHm‰k{œk‰kCœk‰kKHm¡kKHm©k{œk©kCœk©kKHmÁkKHmÉk{œkÉkCœkÉkKHmákKHmék{œkékCœkékKHmlKHm l{œk lCœk lKHm!lKHm)l{œk)lCœk)lKHmIl{œkIlCœkIlKHmilSËq‰lSõq©lSrÉlS'rélS:r mSMr)mSËqImSõqimSr‰mS'r©mS:rÉmSMrémSZr n{œk nCœk nKHm)n{œk)nCœk)nKHmIn{œkInCœkInKHmin{œkinCœkinKHm‰n›Ço‰n{œk‰nCœk©n›¨n©n{œk©nCœkÉn›QpÉn{œkÉnCœkén›oén{œkénCœk o›q o{œk oCœk)o›Ço)o{œk)oCœkIo›¨nIo{œkIoCœkio›Qpio{œkioCœk‰o›o‰o{œk‰oCœk©o›q©o{œk©oCœkÉo;µÜéo;µÜ pSËq)pSõqIp;µÜip{œkipCœkipKHm‰p{œk‰pCœk‰pKHm©p{œk©pCœk©pKHmÉp›ÇoÉp{œkÉpCœkép›¨nép{œképCœk q›Ço q{œk qCœk)q›¨n)q{œk)qCœkIq{œkIqCœkIqKHmiq{œkiqCœkiqKHm‰q{œk‰qCœk‰qKHm©q›Ço©q{œk©qCœkÁqKHmÁq{œkÁqCœkÉq›¨nÉq{œkÉqCœkáqKHmáq{œkáqCœkéq›Çoéq{œkéqCœkrKHmr{œkrCœk r›¨n r{œk rCœk!rKHm!r{œk!rCœkArKHmAr{œkArCœkarKHmar{œkarCœkirSËqrKHmr{œkrCœk‰rSõq¡rKHm¡r{œk¡rCœk©rSrÁrKHmÁr{œkÁrCœkárKHmár{œkárCœksKHms{œksCœk!sKHm!s{œk!sCœkAsKHmAs{œkAsCœkasKHmas{œkasCœksKHms{œksCœk¡sKHm¡s{œk¡sCœkÁsKHmÁs{œkÁsCœkásKHmás{œkásCœktKHmt{œktCœk t;µÜ!tKHm!t{œk!tCœk)t;µÜAtKHmAt{œkAtCœkatKHmat{œkatCœktKHmt{œktCœk¡tKHm¡t{œk¡tCœkÁtKHmÁt{œkÁtCœkátKHmát{œkátCœk!uKHm!u{œk!uCœkAuKHmAu{œkAuCœkauKHmau{œkauCœkiuSËquKHmu{œkuCœk‰uSõq¡uKHm¡u{œk¡uCœk©uSrÁuKHmÁu{œkÁuCœkéu;µÜ)v;µÜavKHmav{œkavCœkiv;µÜvKHmv{œkvCœk‰v;µÜ©v{œk©vCœk©vKHmÉv›ÇoÉv{œkÉvCœkávKHmáv{œkávCœkév›Üoév{œkévCœkwKHmw{œkwCœk w›ío w{œk wCœk)w{œk)wCœk)wKHmIw{œkIwCœkIwKHmawKHmaw{œkawCœkiw{œkiwCœkiwKHmwKHmw{œkwCœk‰w{œk‰wCœk‰wKHm©w{œk©wCœk©wKHmÉw;µÜéw;µÜ x;µÜ!xKHm!x{œk!xCœk)x;µÜAxKHmAx{œkAxCœkIx{œkIxCœkIxKHmaxKHmax{œkaxCœkix{œkixCœkixKHmxKHmx{œkxCœk‰x{œk‰xCœk‰xKHm¡xKHm¡x{œk¡xCœk©x{œk©xCœk©xKHmÁxKHmÁx{œkÁxCœkÉx{œkÉxCœkÉxKHmáxKHmáx{œkáxCœkéx{œkéxCœkéxKHmyKHmy{œkyCœk y{œk yCœk yKHm!yKHm!y{œk!yCœk)y{œk)yCœk)yKHmAyKHmAy{œkAyCœkIy›ÇoIy{œkIyCœkayKHmay{œkayCœkiy›¨niy{œkiyCœkyKHmy{œkyCœk‰y›Qp‰y{œk‰yCœk¡yKHm¡y{œk¡yCœk©y›o©y{œk©yCœkÁyKHmÁy{œkÁyCœkÉy›V°Éy{œkÉyCœkáyKHmáy{œkáyCœkéy›bçéy{œkéyCœkzKHmz{œkzCœk z›Ço z{œk zCœk!zKHm!z{œk!zCœk)z›¨n)z{œk)zCœkAzKHmAz{œkAzCœkIz›QpIz{œkIzCœk`z{œk`zCœkazKHmaz{œkazCœkiz›oiz{œkizCœk€z{œk€zCœkzKHmz{œkzCœk‰z›V°‰z{œk‰zCœk¡zKHm¡z{œk¡zCœk©z›bç©z{œk©zCœkÁzKHmÁz{œkÁzCœkÉz{œkÉzCœkÉzKHmázKHmáz{œkázCœkéz{œkézCœkézKHm{KHm{{œk{Cœk {{œk {Cœk {KHm!{KHm!{{œk!{Cœk){{œk){Cœk){KHmA{KHmA{{œkA{CœkI{{œkI{CœkI{KHma{KHma{{œka{Cœki{{œki{Cœki{KHm{KHm{{œk{Cœk‰{{œk‰{Cœk‰{KHm¡{KHm¡{{œk¡{Cœk©{{œk©{Cœk©{KHmÁ{KHmÁ{{œkÁ{CœkÉ{{œkÉ{CœkÉ{KHmá{KHmá{{œká{Cœké{›Çoé{{œké{Cœk|KHm|{œk|Cœk |›¨n |{œk |Cœk!|KHm!|{œk!|Cœk)|›o)|{œk)|CœkA|KHmA|{œkA|CœkI|›V°I|{œkI|Cœka|KHma|{œka|Cœki|›ˆi|{œki|Cœk|KHm|{œk|Cœk‰|›Òæ‰|{œk‰|Cœk¡|KHm¡|{œk¡|Cœk©|›E©|{œk©|CœkÁ|KHmÁ|{œkÁ|CœkÉ|›óçÉ|{œkÉ|Cœká|KHmá|{œká|Cœké|›Çoé|{œké|Cœk}KHm}{œk}Cœk }›¨n }{œk }Cœk!}KHm!}{œk!}Cœk)}›o)}{œk)}CœkA}KHmA}{œkA}CœkI}›V°I}{œkI}Cœka}KHma}{œka}Cœki}›ˆi}{œki}Cœk}KHm}{œk}Cœk‰}›Òæ‰}{œk‰}Cœk¡}KHm¡}{œk¡}Cœk©}›E©}{œk©}CœkÁ}KHmÁ}{œkÁ}CœkÉ}›óçÉ}{œkÉ}Cœká}KHmá}{œká}Cœké};µÜ~KHm~{œk~Cœk ~;µÜ!~KHm!~{œk!~Cœk)~;µÜA~KHmA~{œkA~CœkI~;µÜa~KHma~{œka~Cœki~;µÜ~KHm~{œk~Cœk¡~KHm¡~{œk¡~CœkÁ~KHmÁ~{œkÁ~Cœká~KHmá~{œká~CœkKHm{œkCœk!KHm!{œk!CœkAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœk€KHm€{œk€Cœk!€KHm!€{œk!€CœkA€KHmA€{œkA€Cœk`€{œk`€Cœka€KHma€{œka€Cœk€€{œk€€CœkAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœk‚KHm‚{œk‚Cœk!‚KHm!‚{œk!‚CœkA‚KHmA‚{œkA‚Cœka‚KHma‚{œka‚Cœk‚KHm‚{œk‚Cœk¡‚KHm¡‚{œk¡‚CœkÁ‚KHmÁ‚{œkÁ‚Cœká‚KHmá‚{œká‚CœkƒKHmƒ{œkƒCœk!ƒKHm!ƒ{œk!ƒCœkAƒKHmAƒ{œkAƒCœkaƒKHmaƒ{œkaƒCœkƒKHmƒ{œkƒCœk¡ƒKHm¡ƒ{œk¡ƒCœkÁƒKHmÁƒ{œkÁƒCœkáƒKHmáƒ{œkáƒCœk„KHm„{œk„Cœk!„KHm!„{œk!„CœkA„KHmA„{œkA„Cœka„KHma„{œka„Cœk„KHm„{œk„Cœk¡„KHm¡„{œk¡„CœkÁ„KHmÁ„{œkÁ„Cœká„KHmá„{œká„Cœk…KHm…{œk…Cœk!…KHm!…{œk!…CœkA…KHmA…{œkA…Cœka…KHma…{œka…Cœk…KHm…{œk…Cœk¡…KHm¡…{œk¡…CœkÁ…KHmÁ…{œkÁ…Cœká…KHmá…{œká…Cœk†KHm†{œk†Cœk!†KHm!†{œk!†CœkA†KHmA†{œkA†Cœka†KHma†{œka†Cœk†KHm†{œk†Cœk¡†KHm¡†{œk¡†CœkÁ†KHmá†KHm‡KHm!‡KHmA‡KHma‡KHm‡KHm¡‡KHmÁ‡KHmá‡KHmˆKHm!ˆKHmAˆKHmaˆKHmˆKHm¡ˆKHmÁˆKHmáˆKHm‰KHm!‰KHmA‰KHma‰KHm‰KHm¡‰KHmÁ‰KHmá‰KHmŠKHm!ŠKHmAŠKHmaŠKHmŠKHm¡ŠKHmÁŠKHmáŠKHm‹KHm!‹KHmA‹KHma‹KHm‹KHm¡‹KHmÁ‹KHmá‹KHmŒKHm!ŒKHmAŒKHmaŒKHmŒKHm¡ŒKHmÁŒKHmáŒKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmŽKHm!ŽKHmAŽKHmaŽKHmŽKHm¡ŽKHmÁŽKHmáŽKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHm‘KHm!‘KHmA‘KHma‘KHm‘KHm¡‘KHmÁ‘KHmá‘KHm’KHm!’KHmA’KHma’KHm’KHm¡’KHmÁ’KHmá’KHm“KHm!“KHmA“KHma“KHm“KHm¡“KHm¡“{œk¡“CœkÁ“KHmÁ“{œkÁ“Cœk¡”KHmÁ”KHmá”KHmÁ•KHmÁ•{œkÁ•Cœkà•{œkà•Cœk–{œk–CœkA–KHmA–{œkA–Cœk–KHm–{œk–Cœk¡–KHm¡–{œk¡–Cœka—KHma—{œka—Cœk—KHm—{œk—Cœk —{œk —Cœk¡—KHm¡—{œk¡—CœkÀ—{œkÀ—CœkÁ—KHmÁ—{œkÁ—CœkA˜KHma˜KHm œ{œk œCœk@œ{œk@œCœkÁKHmÁ{œkÁCœkáKHmá{œkáCœkžKHmž{œkžCœkAžKHmAž{œkAžCœkažKHmaž{œkažCœkžKHmž{œkžCœk¡žKHm¡ž{œk¡žCœkÁžKHmÁž{œkÁžCœkaŸKHmaŸ{œkaŸCœkÁŸKHmÁŸ{œkÁŸCœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk!¡KHm!¡{œk!¡Cœka¡KHm¡KHm¡¡KHmÁ¡KHmá¡KHm¢KHm!¢KHmA¢KHmÁ£KHmÁ£{œkÁ£CœkÀ¤{œkà¤{œk¥{œk ¥{œk@¥{œká¥KHm¦KHm!¦KHmA¦KHma¦KHm¦KHm¡¦KHmÁ¦KHmá¦KHm§KHm!§KHmA§KHma§KHm§KHm¡§KHmÁ§KHmá§KHm¨KHm!¨KHmA¨KHma¨KHm¨KHm©{œk ©{œk@©{œk`©{œk€©{œkáªKHm«KHm!«KHmA«KHma«KHm«KHm¡«KHmà«Skm¬{œk¬Cœk ¬{œk ¬Cœk@¬{œk@¬Cœk`¬{œk`¬Cœk€¬{œk€¬Cœk ¬{œk ¬CœkÀ¬{œkÀ¬Cœkà¬{œkà¬Cœk­Skm ­{œk ­Cœk@­{œk@­Cœk`­{œk`­Cœk€­{œk€­Cœk ­{œk ­CœkÀ­{œkÀ­Cœkà­{œkà­Cœk®{œk®Cœk ®{œk ®Cœká®KHmá®{œká®Cœka°KHma°{œka°Cœk°KHm°{œk°CœkÁ±KHmÁ±{œkÁ±Cœká±KHmá±{œká±Cœk´KHm´{œk´Cœk!´KHm!´{œk!´Cœk¡µKHm¡µ{œk¡µCœkÁµKHmÁµ{œkÁµCœkáµKHmáµ{œkáµCœk¶KHm¶{œk¶Cœk¸KHm¸{œk¸Cœk¹KHm¹{œk¹Cœka½KHma½{œka½CœkÀÀ{œkÀÀCœkàÀ{œkàÀCœkaÂKHmaÂ{œkaÂCœkÂKHmÂ{œkÂCœk¡ÂKHm¡Â{œk¡ÂCœk!ÃKHm!Ã{œk!ÃCœk#Ã;ÇùaÄKHmaÄ{œkaÄCœkÀÅ{œkÀÅCœkàÅ{œkàÅCœkÆKHmÆ{œkÆCœk¡ÆKHm¡Æ{œk¡ÆCœkÁÆKHmÁÆ{œkÁÆCœkáÆKHmáÆ{œkáÆCœkÇKHmÇ{œkÇCœkAÇKHmAÇ{œkAÇCœk€Ç“úi Ç“ÎkÀÇ{œkÁÇKHmÁÇ{œkÁÇCœkàÇ{œk È{œk!ÈKHm!È{œk!ÈCœk@È{œk`ȓ؀ȓØÈKHmÈ{œkÈCœk È“÷îÀÈ“=ÁÈKHmÁÈ{œkÁÈCœkàÈ{œkáÈKHmáÈ{œkáÈCœkÉ{œkÉKHmÉ{œkÉCœk É“Îk!ÉKHm!É{œk!ÉCœk@É“ÎkAÉKHmAÉ{œkAÉCœk`É“¤laÉKHmaÉ{œkaÉCœk€É“=ÉKHmÉ{œkÉCœk¡ÉKHm¡É{œk¡ÉCœkÁÉKHmÁÉ{œkÁÉCœkáÉKHmáÉ{œkáÉCœkÊKHmÊ{œkÊCœkAÊKHmAÊ{œkAÊCœkÁÊKHmÁÊ{œkÁÊCœkáÊKHmáÊ{œkáÊCœk!ËKHm!Ë{œk!ËCœkËKHmË{œkËCœkÁËKHmÁË{œkÁËCœkáËKHmáË{œkáËCœkÌKHmÌ{œkÌCœk!ÌKHm!Ì{œk!ÌCœkAÌKHmAÌ{œkAÌCœkaÌKHmaÌ{œkaÌCœkÌKHmÌ{œkÌCœk¡ÌKHm¡Ì{œk¡ÌCœkÁÌKHmÁÌ{œkÁÌCœkáÌKHmáÌ{œkáÌCœkÍKHmÍ{œkÍCœk!ÍKHm!Í{œk!ÍCœk!ÐKHm!Ð{œk!ÐCœkAÐKHmAÐ{œkAÐCœkÐKHmÐ{œkÐCœk Ð{œk ÐCœkÀÐ{œkÀÐCœkAÑKHmAÑ{œkAÑCœkaÑKHmaÑ{œkaÑCœkÑKHmÑ{œkÑCœk¡ÑKHm¡Ñ{œk¡ÑCœkÁÑKHmÁÑ{œkÁÑCœkAÒKHmAÒ{œkAÒCœkaÒKHmaÒ{œkaÒCœkÒKHmÒ{œkÒCœk¡ÒKHm¡Ò{œk¡ÒCœk!ÔKHm!Ô{œk!ÔCœkAÔKHmAÔ{œkAÔCœkaÔKHmaÔ{œkaÔCœkÖKHmÖ{œkÖCœk!ÖKHm!Ö{œk!ÖCœkAÖKHmAÖ{œkAÖCœkÀÖ“ÎkàÖ“9þד¯þ ד¤l@דׂ`×{œk€×“¤lÀד1Q Ø“Eµ@Ø“úi`Ø“úiáØKHmÙKHm!ÙKHmAÙKHmaÙKHmÙKHm¡ÙKHmÁÙKHmÁÙ{œkÁÙCœkàÙ{œkáÙKHmáÙ{œkáÙCœkÚ“Q‹ÚKHmÚ{œkÚCœk!ÚKHm!Ú{œk!ÚCœkAÚKHmAÚ{œkAÚCœkaÚKHmaÚ{œkaÚCœk€Ú“ÎkÚKHmÚ{œkÚCœk¡ÚKHm¡Ú{œk¡ÚCœkÁÚKHmÁÚ{œkÁÚCœkáÚKHmáÚ{œkáÚCœkÛKHmÛ{œkÛCœk!ÛKHm!Û{œk!ÛCœkAÛKHmAÛ{œkAÛCœk`Û“ÎkaÛKHmaÛ{œkaÛCœkÛKHmÛ{œkÛCœk¡ÛKHm¡Û{œk¡ÛCœkÀÛ“7ÁÛKHmÁÛ{œkÁÛCœkáÛKHmáÛ{œkáÛCœkÜKHmÜ{œkÜCœk!ÜKHm!Ü{œk!ÜCœkAÜKHmAÜ{œkAÜCœkaÜKHmaÜ{œkaÜCœkÜKHmÜ{œkÜCœk¡ÜKHm¡Ü{œk¡ÜCœkÁÜKHmÁÜ{œkÁÜCœkáÜKHmáÜ{œkáÜCœkÝKHmÝ{œkÝCœk!ÝKHm!Ý{œk!ÝCœkAÝKHmAÝ{œkAÝCœkaÝKHmaÝ{œkaÝCœkÝKHmÝ{œkÝCœk¡ÝKHm¡Ý{œk¡ÝCœkÁÝKHmÁÝ{œkÁÝCœkáÝKHmáÝ{œkáÝCœkÞKHmÞ{œkÞCœk!ÞKHm!Þ{œk!ÞCœkAÞKHmAÞ{œkAÞCœkaÞKHmaÞ{œkaÞCœkÞKHmÞ{œkÞCœk¡ÞKHm¡Þ{œk¡ÞCœkÁÞKHmÁÞ{œkÁÞCœkáÞKHmáÞ{œkáÞCœkßKHmß{œkßCœk!ßKHm!ß{œk!ßCœkAßKHmAß{œkAßCœkaßKHmaß{œkaßCœkßKHmß{œkßCœk¡ßKHm¡ß{œk¡ßCœkÁßKHmÁß{œkÁßCœkáßKHmáß{œkáßCœkàKHmà{œkàCœk!àKHm!à{œk!àCœkAàKHmAà{œkAàCœkaàKHmaà{œkaàCœkàKHmà{œkàCœk¡àKHm¡à{œk¡àCœkÁàKHmÁà{œkÁàCœkáàKHmáà{œkáàCœkáKHmá{œkáCœk!áKHm!á{œk!áCœkAáKHmAá{œkAáCœkaáKHmaá{œkaáCœkáKHmá{œkáCœk¡áKHm¡á{œk¡áCœkÁáKHmÁá{œkÁáCœk!âKHm!â{œk!âCœkAâKHmAâ{œkAâCœkaâKHmaâ{œkaâCœkâKHmâ{œkâCœk¡âKHm¡â{œk¡âCœkÁâKHmÁâ{œkÁâCœkáâKHmáâ{œkáâCœkãKHmã{œkãCœk!ãKHm!ã{œk!ãCœkãKHmã{œkãCœk¡ãKHm¡ã{œk¡ãCœkÁãKHmÁã{œkÁãCœkáãKHmáã{œkáãCœkäKHmä{œkäCœk!äKHm!ä{œk!äCœkAäKHmAä{œkAäCœkaäKHmaä{œkaäCœkäKHmä{œkäCœk¡äKHm¡ä{œk¡äCœkÁäKHmÁä{œkÁäCœkáäKHmáä{œkáäCœkåKHmå{œkåCœk!åKHm!å{œk!åCœkAåKHmAå{œkAåCœkaåKHmaå{œkaåCœkåKHmå{œkåCœk¡åKHm¡å{œk¡åCœkÁåKHmÁå{œkÁåCœkáåKHmáå{œkáåCœkæKHmæ{œkæCœk!æKHm!æ{œk!æCœkAæKHmAæ{œkAæCœkaæKHmaæ{œkaæCœkæKHmæ{œkæCœk¡æKHm¡æ{œk¡æCœkÁæKHmÁæ{œkÁæCœkAçKHmAç{œkAçCœk!ëKHm!ë{œk!ëCœkAëKHmAë{œkAëCœkaëKHmaë{œkaëCœkÁëKHmÁë{œkÁëCœk!ìKHm!ì{œk!ìCœk í{œk íCœkÀí{œkÀíCœkïKHmï{œkïCœk¡ïKHm¡ï{œk¡ïCœkÁïKHmÁï{œkÁïCœkàï{œkàïCœkð{œkðCœk!ðKHm!ð{œk!ðCœkañKHmañ{œkañCœk¡ñKHm¡ñ{œk¡ñCœkáñKHmáñ{œkáñCœkòKHm!òKHmAòKHmaòKHmaò{œkaòCœk`ù{œkaùKHmaù{œkaùCœk€ù“u’ùKHmù{œkùCœk ù“u’¡ùKHm¡ù{œk¡ùCœkÀù“u’áùKHmáù{œkáùCœk û“ׂAûKHmAû{œkAûCœkaûKHmaû{œkaûCœk€û“ׂûKHmû{œkûCœk¡ûKHm¡û{œk¡ûCœk!üKHmAüKHm`ü{œk`üCœkaüKHm€ü{œk€üCœkýKHmý{œkýCœk!ýKHm!ý{œk!ýCœkAýKHmAý{œkAýCœkaýKHmaý{œkaýCœkýKHmý{œkýCœkáýKHmáý{œkáýCœkþKHmþ{œkþCœk!þKHm!þ{œk!þCœkAþKHmAþ{œkAþCœkaþKHmaþ{œkaþCœkÁþKHmÁþ{œkÁþCœkáþKHmáþ{œkáþCœkÿKHmÿ{œkÿCœk!ÿKHm!ÿ{œk!ÿCœkAÿKHmAÿ{œkAÿCœkaÿKHmaÿ{œkaÿCœkÿKHmÿ{œkÿCœkaKHma{œkaCœk¡KHm¡{œk¡CœkáKHmá{œkáCœk!KHm!{œk!Cœk`{œk`Cœk€{œk€CœkKHm{œkCœk¡KHm¡{œk¡CœkáKHmá{œkáCœkKHm{œkCœkAKHmA{œkACœkKHm{œkCœk¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm “Ø!KHm@{œkAKHm`{œkaKHm€“ׂKHm “ׂ¡KHmÀ“ÎkÁKHmà“ÎkáKHm“ÎkKHm “Îk!KHm@{œkAKHm`“ØaKHmKHm¡KHmÁKHmà{œkáKHm“ׂKHm{œkCœk “|!KHm!{œk!Cœk@“|AKHmA{œkACœk`“³aKHma{œkaCœk€“!×KHm{œkCœk¡KHm¡{œk¡CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkàSkmáKHmá{œkáCœk{œkCœkKHm S~m!KHm@{œk@CœkAKHm`S‹maKHm€{œk€CœkKHm S⢡KHmÀ{œkÀCœkÁKHmàSï¢áKHm {œk Cœk KHm Sü¢! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm {œk Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm {œk Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm {œk Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm {œk Cœk! KHm@ {œk@ CœkA KHm` Skma KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm{œkCœkKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHmKHm {œk Cœk¡KHmÀSkmÁKHmà{œkàCœkáKHmS~mKHm {œk Cœk!KHm@S‹mAKHm`{œk`CœkaKHm€Sâ¢KHm {œk Cœk¡KHmÀSï¢ÁKHmà{œkàCœkáKHmSü¢KHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHmSkmKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÁKHmà{œkàCœkáKHmSkmKHm {œk Cœk!KHm@S~mAKHm`{œk`CœkaKHm€S‹mKHm {œk Cœk¡KHmÀSâ¢ÁKHmà{œkàCœkáKHmSï¢KHm {œk Cœk!KHm@Sü¢AKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@{œk@CœkAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@SkmAKHm`{œk`CœkaKHm€{œk€CœkKHm {œk Cœk¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHm{œkCœkKHm {œk Cœk!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHm@{œk@CœkAKHm`{œk`CœkaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm!KHm!!KHmA!KHma!KHm!KHm¡!KHmÁ!KHmá!KHm"{œk"Cœk"KHm "{œk "Cœk!"KHmA"KHma"KHm"KHm¡"KHmÁ"KHmá"KHm#KHm!#KHmA#KHma#KHm#KHm¡#KHmÁ#KHmá#KHm$KHm!$KHmA$KHma$KHm$KHm¡$KHmÀ${œkÀ$CœkÁ$KHmà${œkà$Cœká$KHm%KHm!%KHmA%KHma%KHm€%{œk€%Cœk%KHm %{œk %Cœk¡%KHmÁ%KHmá%KHm&KHm!&KHm@&{œk@&CœkA&KHm`&{œk`&Cœka&KHm&KHm¡&KHmÁ&KHmá&KHm'KHm!'KHmA'KHm`'{œka'KHm€'{œk'KHm¡'KHmÁ'KHmá'KHm({œk(Cœk(KHm (Skm!(KHm@({œk@(CœkA(KHm`(S~ma(KHm€({œk€(Cœk(KHm ({œk (Cœk¡(KHmÀ({œkÀ(CœkÁ(KHmà({œkà(Cœká(KHm){œk)Cœk)KHm ){œk )Cœk!)KHm@){œk@)CœkA)KHm`){œk`)Cœka)KHm€){œk€)Cœk)KHm ){œk )Cœk¡)KHmÀ){œkÀ)CœkÁ)KHmà){œkà)Cœká)KHm*{œk*Cœk*KHm *{œk *Cœk!*KHm@*{œk@*CœkA*KHm`*{œk`*Cœka*KHm€*{œk€*Cœk*KHm¡*KHmÁ*KHmá*KHm+KHm!+KHmA+KHma+KHm+KHm¡+KHmÁ+KHmá+KHm,KHm ,“Ø!,KHmA,KHma,KHm,KHm¡,KHmÁ,KHmá,KHm-KHm!-KHmA-KHma-KHm-KHm¡-KHmÀ-{œkÀ-CœkÁ-KHmà-Skmá-KHm.{œk.Cœk.KHm .S~m!.KHm@.{œk@.CœkA.KHm`.S‹ma.KHm€.{œk€.Cœk.KHm .{œk .Cœk¡.KHmÀ.{œkÀ.CœkÁ.KHmà.{œkà.Cœká.KHm/{œk/Cœk/KHm /{œk /Cœk!/KHm@/{œk@/CœkA/KHm`/{œk`/Cœka/KHm€/{œk€/Cœk/KHm /{œk /Cœk¡/KHmÀ/{œkÀ/CœkÁ/KHmà/{œkà/Cœká/KHm0{œk0Cœk0KHm 0{œk 0Cœk!0KHm@0{œk@0CœkA0KHm`0{œk`0Cœka0KHm€0{œk€0Cœk0KHm 0{œk 0Cœk¡0KHmÀ0{œkÀ0CœkÁ0KHmà0{œkà0Cœká0KHm1{œk1Cœk1KHm 1{œk 1Cœk!1KHm@1{œk@1CœkA1KHma1KHm1KHm¡1KHmÁ1KHmá1KHm2KHm!2KHm@2“ÎkA2KHma2KHm2KHm¡2KHmÁ2KHmà2“!×á2KHm3“!×3KHm 3“¤l!3KHmA3KHm`3“ׂa3KHm3KHm¡3KHmÁ3KHmá3KHm4KHm!4KHmA4KHma4KHm4KHm¡4KHmÁ4KHmá4KHm5KHm!5KHm@5{œk@5CœkA5KHm`5{œk`5Cœka5KHm5KHm¡5KHmÁ5KHmá5KHm6KHm 6{œk 6Cœk!6KHm@6SkmA6KHm`6{œk`6Cœka6KHm€6S~m6KHm 6{œk 6Cœk¡6KHmÀ6S‹mÁ6KHmà6{œkà6Cœká6KHm7{œk7Cœk7KHm 7{œk 7Cœk!7KHm@7{œk@7CœkA7KHm`7{œk`7Cœka7KHm€7{œk€7Cœk7KHm 7{œk 7Cœk¡7KHmÀ7{œkÀ7CœkÁ7KHmà7{œkà7Cœká7KHm8{œk8Cœk 8{œk 8Cœká;KHmá;{œká;Cœk<KHm<{œk<Cœk!<KHm!<{œk!<Cœk€={œk€=Cœk ={œk =Cœk>KHm>{œk>CœkA>KHmA>{œkA>Cœk€>{œk€>Cœk>KHm >{œk >Cœk¡>KHmÁ>KHmá>KHm?KHm!?KHmA?KHma?KHm€?{œk€?Cœk?KHm ?{œk ?Cœk¡?KHmÁ?KHmá?KHm@KHm!@KHmA@KHma@KHm@KHm¡@KHmÁ@KHmá@KHmAKHm!AKHmAAKHmaAKHmAKHm¡AKHmÀA“ÎkÁAKHmàA“|{áAKHmB“›|BKHm B“!×!BKHm@B“!×ABKHm`B“ØaBKHmBKHm B“!סBKHmÀB“!×ÁBKHmàB“!×áBKHmC“¤lCKHm!CKHmACKHmaCKHmCKHm¡CKHmÁCKHmÁC{œkÁCCœkáCKHmáC{œkáCCœkDKHmD{œkDCœk!DKHm!D{œk!DCœkADKHmAD{œkADCœkaDKHmaD{œkaDCœkEKHmE{œkECœkaEKHmaE{œkaECœkEKHmE{œkECœk¡EKHm¡E{œk¡ECœkÁEKHmÁE{œkÁECœkáEKHmáE{œkáECœkFKHmF{œkFCœk F“Îk`F“ÎkaFKHmaF{œkaFCœk€F“ÎkFKHmF{œkFCœk F“Îk¡FKHm¡F{œk¡FCœkàF“[GKHmG{œkGCœk!GKHm!G{œk!GCœk@G“ׂAGKHmAG{œkAGCœk`G“úiaGKHmaG{œkaGCœk€G“¾„GKHmG{œkGCœk G“ñoàG“Q‹H“ׂAHKHmAH{œkAHCœkaHKHmaH{œkaHCœkHKHmH{œkHCœk H“ÎkàH“ׂáHKHmáH{œkáHCœkIKHmI{œkICœk!IKHm!I{œk!ICœk@I“¯þAIKHmAI{œkAICœkaIKHmaI{œkaICœkIKHmI{œkICœkKKHmK{œkKCœk¡KKHm¡K{œk¡KCœkÁKKHmÁK{œkÁKCœkáKKHmáK{œkáKCœkaLKHmaL{œkaLCœkLKHmL{œkLCœk¡LKHm¡L{œk¡LCœkáLKHmMKHm!MKHmAMKHmaMKHmMKHm¡MKHmÁMKHmáMKHmNKHm!NKHmANKHmaNKHmNKHm¡NKHmÁNKHmáNKHmOKHm!OKHmAOKHmaOKHmOKHmO{œkOCœkáOKHmáO{œkáOCœkPKHmP{œkPCœk!PKHm!P{œk!PCœkAPKHmaPKHmPKHm¡PKHmÀP{œkÀPCœkÁPKHmàP{œkàPCœkáPKHmQ{œkQCœkQKHm Q{œk QCœk!QKHm@Q{œk@QCœkAQKHm`Q{œk`QCœkaQKHm€Q{œk€QCœkQKHm¡QKHm¡Q{œk¡QCœkÁQKHmÁQ{œkÁQCœkàQ“ÎkR“Îk R“Îk@R“Îk`R“á€R“á R“áÀR“áàR“ØS{œkSKHmS{œkSCœk S“¤l!SKHm!S{œk!SCœk@S“ØASKHmAS{œkASCœk`S“¤laSKHmaS{œkaSCœk€S“ׂSKHmS{œkSCœk¡SKHm¡S{œk¡SCœkÁSKHmÁS{œkÁSCœkáSKHmáS{œkáSCœkT“ØTKHmT{œkTCœk T“Îk!TKHm!T{œk!TCœk@T“ØATKHmAT{œkATCœk`T“¤laTKHmaT{œkaTCœk€T“ׂTKHmT{œkTCœk T“ׂ¡TKHm¡T{œk¡TCœkÀT“ׂÁTKHmÁT{œkÁTCœkàT“ׂáTKHmáT{œkáTCœkU“1QUKHmU{œkUCœk!UKHm!U{œk!UCœk@U“–˜AUKHmAU{œkAUCœk`U{œkaUKHm€U“¾„UKHm¡UKHmÀU“ׂÁUKHmàU“ØáUKHmV“ØVKHm V“Ø!VKHm@V“ØAVKHm`V“ØaVKHm€V“m±VKHm V“ׂ¡VKHmÀV“ØÁVKHmàV“ØáVKHmáV{œkáVCœkW“ØWKHmW{œkWCœk W“Ø!WKHm!W{œk!WCœk@W“ØAWKHmAW{œkAWCœk`W“ØaWKHmaW{œkaWCœk€W“Ø W“ØÀW{œkàW{œkX“ׂ X“Ø!XKHm!X{œk!XCœk@X{œkAXKHmAX{œkAXCœkaXKHm€X{œkXKHm X“Ø¡XKHmÀX“¤lÁXKHmáXKHmYKHm!YKHmAYKHmaYKHmYKHm¡YKHmÁYKHmàY{œkáYKHmZ{œkZKHm!ZKHm@Z“ØAZKHm`Z“ØaZKHm€Z“ÎkZKHm Z“Ø¡ZKHmÀZ“ØÁZKHmáZKHm[KHm![KHmA[KHma[KHm[KHm¡[KHmÁ[KHmá[KHm\KHm\{œk\Cœk!\KHm!\{œk!\CœkÁ\KHmÁ\{œkÁ\Cœká\KHmá\{œká\Cœk]KHm]{œk]Cœk!]KHm!]{œk!]CœkA]KHmA]{œkA]Cœka]KHma]{œka]Cœk_KHm_{œk_Cœk!_KHmA_KHma_KHm_KHm¡_KHmÁ_KHmá_KHm`KHm!`KHmA`KHma`KHma`{œka`Cœk!bKHm!b{œk!bCœkAbKHmAb{œkAbCœkabKHmab{œkabCœkbKHmb{œkbCœk¡bKHm¡b{œk¡bCœkÁbKHmÁb{œkÁbCœkábKHmáb{œkábCœkcKHmc{œkcCœk!cKHm!c{œk!cCœkAcKHmAc{œkAcCœkacKHmac{œkacCœkcKHmc{œkcCœk¡cKHm¡c{œk¡cCœkÁcKHmÁc{œkÁcCœkácKHmác{œkácCœkdKHmd{œkdCœk!dKHm!d{œk!dCœkAdKHmAd{œkAdCœkadKHmad{œkadCœkdKHmd{œkdCœk¡dKHm¡d{œk¡dCœkÁdKHmÁd{œkÁdCœkádKHmád{œkádCœkeKHme{œkeCœk!eKHm!e{œk!eCœkAeKHmAe{œkAeCœkaeKHmae{œkaeCœkeKHme{œkeCœk¡eKHm¡e{œk¡eCœkÁeKHmÁe{œkÁeCœkáeKHmáe{œkáeCœkfKHmf{œkfCœk!fKHm!f{œk!fCœkAfKHmAf{œkAfCœk`f{œk`fCœkafKHmaf{œkafCœk€fSkmfKHmf{œkfCœk f{œk fCœk¡fKHm¡f{œk¡fCœkÀfS~mÁfKHmÁf{œkÁfCœkàf{œkàfCœkáfKHmáf{œkáfCœkgS‹mgKHmg{œkgCœk g{œk gCœk!gKHm!g{œk!gCœk@g{œk@gCœkAgKHmAg{œkAgCœk`g{œk`gCœk€g{œk g{œkÀg{œkàg{œkh{œkhKHmh{œkhCœk h{œk!hKHm!h{œk!hCœk@h{œkAhKHmAh{œkAhCœk`h{œkahKHmah{œkahCœk€h{œk€hCœkhKHmh{œkhCœk h{œk hCœk¡hKHm¡h{œk¡hCœkÀh{œkÀhCœkÁhKHmÁh{œkÁhCœkàh{œkàhCœkáhKHmáh{œkáhCœki{œkiCœkiKHmi{œkiCœk i{œk iCœk!iKHm!i{œk!iCœk@i{œk@iCœkAiKHmAi{œkAiCœk`i{œk`iCœkaiKHmai{œkaiCœkiKHmi{œkiCœk¡iKHm¡i{œk¡iCœkÁiKHmÁi{œkÁiCœkáiKHmjKHm!jKHmAjKHm¡jKHmÁjKHmájKHmkKHm!kKHmAkKHmakKHmkKHm¡kKHmÁkKHmákKHmlKHm!lKHmAlKHmalKHmlKHm¡lKHmÁlKHmálKHmmKHm!mKHmAmKHmamKHmmKHmm{œkmCœk¡mKHm¡m{œk¡mCœkÁmKHmÁm{œkÁmCœkámKHmám{œkámCœknKHm!nKHmAnKHmanKHmnKHmn{œknCœk¡nKHm¡n{œk¡nCœkÀn{œkÀnCœkÁnKHmÁn{œkÁnCœkàn{œkànCœkánKHmán{œkánCœkoKHmo{œkoCœkpKHmp{œkpCœk!pKHm!p{œk!pCœkApKHmAp{œkApCœkapKHmap{œkapCœkpKHmp{œkpCœk¡pKHm¡p{œk¡pCœkÁpKHmÁp{œkÁpCœkápKHmáp{œkápCœkqKHmq{œkqCœk!qKHm!q{œk!qCœkAqKHmAq{œkAqCœkaqKHmaq{œkaqCœkqKHmq{œkqCœk¡qKHm¡q{œk¡qCœkÁqKHmÁq{œkÁqCœkáqKHmáq{œkáqCœkrKHmr{œkrCœk!rKHm!r{œk!rCœkArKHmAr{œkArCœkarKHmar{œkarCœk!sKHm!s{œk!sCœkAsKHmAs{œkAsCœkasKHmas{œkasCœksKHms{œksCœk¡sKHm¡s{œk¡sCœkÁsKHmÁs{œkÁsCœkásKHmás{œkásCœktKHmt{œktCœk!tKHm!t{œk!tCœkAtKHmatKHmtKHm¡tKHmÁtKHmátKHmuKHm!uKHmAuKHmauKHmuKHm¡uKHmÁuKHmáuKHmvKHm!vKHmvKHmv{œkvCœk¡vKHm¡v{œk¡vCœkÁvKHmÁv{œkÁvCœkávKHmáv{œkávCœkwKHm!wKHmAwKHm¡wKHm¡w{œk¡wCœkÁwKHmÁw{œkÁwCœkáwKHmáw{œkáwCœkxKHmx{œkxCœk!xKHm!x{œk!xCœkAxKHmAx{œkAxCœkaxKHmax{œkaxCœkxKHmx{œkxCœk¡xKHm¡x{œk¡xCœkÁxKHmÁx{œkÁxCœkáxKHmáx{œkáxCœkyKHmy{œkyCœk!yKHm!y{œk!yCœk@y{œk@yCœkAyKHmAy{œkAyCœk`y{œk`yCœkayKHmay{œkayCœkyKHmy{œkyCœk¡yKHm¡y{œk¡yCœk|KHm|{œk|Cœk!|KHm!|{œk!|CœkA|KHmA|{œkA|Cœka|KHma|{œka|Cœk|KHm|{œk|Cœk¡|KHm¡|{œk¡|CœkÁ|KHmÁ|{œkÁ|Cœká|KHmá|{œká|Cœk}KHm}{œk}Cœk!}KHm!}{œk!}CœkA}KHmA}{œkA}Cœka}KHma}{œka}Cœk}KHm}{œk}Cœk¡}KHm¡}{œk¡}CœkÁ}KHmÁ}{œkÁ}Cœká}KHmá}{œká}Cœk~KHm~{œk~Cœk!~KHm!~{œk!~CœkA~KHmA~{œkA~Cœka~KHma~{œka~Cœk~KHm~{œk~Cœk¡~KHm¡~{œk¡~CœkÁ~KHmÁ~{œkÁ~Cœká~KHmá~{œká~CœkKHm{œkCœk!KHm!{œk!CœkAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœka€KHma€{œka€Cœk€KHm€{œk€Cœk¡€KHm¡€{œk¡€CœkÁ€KHmÁ€{œkÁ€Cœká€KHmá€{œká€CœkKHm{œkCœk!KHm!{œk!CœkAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkà{œkàCœkáKHmá{œkáCœk‚KHm‚{œk‚Cœk!‚KHm!‚{œk!‚Cœk€‚{œk€‚Cœk ‚{œk ‚CœkƒKHmƒ{œkƒCœk!ƒKHm!ƒ{œk!ƒCœkAƒKHmAƒ{œkAƒCœkaƒKHmaƒ{œkaƒCœkƒKHmƒ{œkƒCœk¡ƒKHm¡ƒ{œk¡ƒCœkÁƒKHmÁƒ{œkÁƒCœkáƒKHmáƒ{œkáƒCœk„KHm„{œk„Cœk!„KHm!„{œk!„CœkA„KHmA„{œkA„Cœka„KHma„{œka„Cœk„KHm„{œk„Cœk¡„KHm¡„{œk¡„CœkÁ„KHmÁ„{œkÁ„Cœká„KHmá„{œká„Cœk…KHm…{œk…Cœk!…KHm!…{œk!…CœkA…KHmA…{œkA…Cœka…KHma…{œka…Cœk…KHm…{œk…Cœk¡…KHm¡…{œk¡…CœkÁ…KHmÁ…{œkÁ…Cœká…KHmá…{œká…Cœk†KHm†{œk†Cœk!†KHm!†{œk!†CœkA†KHmA†{œkA†Cœka†KHma†{œka†Cœk†KHm†{œk†Cœk¡†KHmÁ†KHmá†KHmá†{œká†Cœk‡KHm‡{œk‡Cœk!‡KHm!‡{œk!‡Cœk!‰KHm!‰{œk!‰CœkA‰KHmA‰{œkA‰Cœka‰KHma‰{œka‰Cœk‰KHm‰{œk‰Cœk¡‰KHm¡‰{œk¡‰CœkÁ‰KHmÁ‰{œkÁ‰Cœká‰KHmá‰{œká‰CœkŠKHmŠ{œkŠCœk Š{œk ŠCœk!ŠKHm!Š{œk!ŠCœkAŠKHmAŠ{œkAŠCœkaŠKHmaŠ{œkaŠCœk€Š“ÎkŠKHmŠ{œkŠCœk Š“Îk¡ŠKHm¡Š{œk¡ŠCœkÀŠ“òZÁŠKHmÁŠ{œkÁŠCœkàŠ“ØáŠKHmáŠ{œkáŠCœk‹KHm‹{œk‹Cœk ‹“Îk!‹KHm!‹{œk!‹Cœk@‹“ÎkA‹KHmA‹{œkA‹Cœk`‹“Øa‹KHma‹{œka‹Cœk€‹“!׋KHm‹{œk‹Cœk ‹“!ס‹KHm¡‹{œk¡‹CœkÀ‹“ØÁ‹KHmÁ‹{œkÁ‹Cœkà‹“Øá‹KHmá‹{œká‹CœkŒ“ØŒKHmŒ{œkŒCœk Œ“ú¼!ŒKHm!Œ{œk!ŒCœk@Œ“!×AŒKHmAŒ{œkAŒCœk`Œ“ØaŒKHmaŒ{œkaŒCœk€Œ“!׌KHmŒ{œkŒCœk Œ“Ø¡ŒKHm¡Œ{œk¡ŒCœkÀŒ“ØÁŒKHmÁŒ{œkÁŒCœkàŒ“ØáŒKHmáŒ{œkáŒCœk“ׂKHm{œkCœk!KHm!{œk!Cœk@“ׂAKHmA{œkACœk`“ׂaKHma{œkaCœk€“¤lKHm{œkCœk “¤l¡KHm¡{œk¡CœkÀ“ØÁKHmÁ{œkÁCœkà“ׂáKHmá{œkáCœkŽ“ØŽKHmŽ{œkŽCœk Ž“Ø!ŽKHm!Ž{œk!ŽCœk@Ž“ׂAŽKHmAŽ{œkAŽCœk`Ž“ZÂaŽKHmaŽ{œkaŽCœk€Ž“BÃŽKHmŽ{œkŽCœk¡ŽKHm¡Ž{œk¡ŽCœkÀŽ{œkÀŽCœkÁŽKHmÁŽ{œkÁŽCœkàŽSkmáŽKHmáŽ{œkáŽCœk{œkCœkKHm{œkCœk S~m!KHm!{œk!Cœk@{œk@CœkAKHmA{œkACœk`{œk`CœkaKHma{œkaCœk€{œk€CœkKHm{œkCœk {œk¡KHm¡{œk¡CœkÀ{œkÁKHmÁ{œkÁCœkà{œkáKHmá{œkáCœk{œkKHm{œkCœk {œk!KHm!{œk!Cœk@{œkAKHmA{œkACœk`{œkaKHma{œkaCœk€{œkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœk‘KHm‘{œk‘Cœk!‘KHm!‘{œk!‘CœkA‘KHmA‘{œkA‘Cœka‘KHma‘{œka‘Cœk‘KHm‘{œk‘Cœk¡‘KHm¡‘{œk¡‘CœkÁ‘KHmÁ‘{œkÁ‘Cœká‘KHmá‘{œká‘Cœk’KHm’{œk’Cœk!’KHm!’{œk!’CœkA’KHmA’{œkA’Cœka’KHma’{œka’Cœk’KHm’{œk’Cœk¡’KHm¡’{œk¡’CœkÁ’KHmÁ’{œkÁ’Cœká’KHmá’{œká’Cœk“KHm“{œk“Cœk!“KHm!“{œk!“CœkA“KHmA“{œkA“Cœka“KHma“{œka“Cœk€“{œk“KHm“{œk“Cœk “{œk¡“KHm¡“{œk¡“CœkÀ“{œkÁ“KHmÁ“{œkÁ“Cœkà“{œká“KHmá“{œká“Cœk”{œk”KHm”{œk”Cœkà”{œk•{œk •{œk@•{œk`•{œk˜KHm˜{œk˜Cœk!˜KHm!˜{œk!˜CœkA˜KHmA˜{œkA˜Cœka˜KHma˜{œka˜Cœk˜KHm˜{œk˜Cœk¡˜KHm¡˜{œk¡˜CœkÁ˜KHmÁ˜{œkÁ˜Cœká˜KHmá˜{œká˜Cœk™KHm™{œk™Cœk!™KHm!™{œk!™CœkA™KHmA™{œkA™Cœka™KHma™{œka™Cœk™KHm™{œk™Cœk¡™KHm¡™{œk¡™CœkÁ™KHmÁ™{œkÁ™Cœká™KHmá™{œká™CœkšKHmš{œkšCœk!šKHm!š{œk!šCœkAšKHmAš{œkAšCœkašKHmaš{œkašCœkšKHmš{œkšCœk¡šKHm¡š{œk¡šCœkÁšKHmÁš{œkÁšCœkášKHmáš{œkášCœk›KHm›{œk›Cœk!›KHm!›{œk!›CœkA›KHmA›{œkA›Cœka›KHma›{œka›Cœk›KHm›{œk›Cœk¡›KHm¡›{œk¡›CœkÁ›KHmÁ›{œkÁ›Cœká›KHmá›{œká›CœkœKHmœ{œkœCœk!œKHm!œ{œk!œCœkAœKHmAœ{œkAœCœkaœKHmaœ{œkaœCœkœKHmœ{œkœCœk¡œKHm¡œ{œk¡œCœkÁœKHmÁœ{œkÁœCœkáœKHmáœ{œkáœCœkKHm{œkCœk!KHm!{œk!CœkAKHmA{œkACœkaKHma{œkaCœkKHm{œkCœk¡KHm¡{œk¡CœkÁKHmÁ{œkÁCœkáKHmá{œkáCœkžKHmž{œkžCœk!žKHm!ž{œk!žCœkAžKHmAž{œkAžCœk`ž“ØažKHmaž{œkažCœk€ž“ØžKHmž{œkžCœk ž“Ø¡žKHm¡ž{œk¡žCœkÀž“ׂÁžKHmÁž{œkÁžCœkàž“ׂážKHmáž{œkážCœkŸ“ׂŸKHmŸ{œkŸCœk Ÿ“1Q!ŸKHm!Ÿ{œk!ŸCœk@Ÿ“m±AŸKHmAŸ{œkAŸCœk`Ÿ“¤laŸKHmaŸ{œkaŸCœk€Ÿ“ØŸKHmŸ{œkŸCœk Ÿ“Ø¡ŸKHm¡Ÿ{œk¡ŸCœkÀŸ“¤lÁŸKHmÁŸ{œkÁŸCœkàŸ“¤láŸKHmáŸ{œkáŸCœk “Ø KHm {œk Cœk  “m±! KHm! {œk! Cœk@ “ØA KHmA {œkA Cœk` “Øa KHma {œka Cœk€ “Ø KHm {œk Cœk  “Ø¡ KHm¡ {œk¡ CœkÀ “ØÁ KHmÁ {œkÁ Cœkà “Øá KHmá {œká Cœk¡“Ø¡KHm¡{œk¡Cœk ¡“Ø!¡KHm!¡{œk!¡Cœk@¡“ׂ`¡“Ø€¡“Ø¡KHm¡{œk¡Cœk ¡“Ø¡¡KHm¡¡{œk¡¡CœkÀ¡“ØÁ¡KHmÁ¡{œkÁ¡Cœkà¡“Ø¢“Ø ¢“Ø!¢KHm!¢{œk!¢Cœk@¢“1QA¢KHmA¢{œkA¢Cœka¢KHma¢{œka¢Cœk€¢{œk€¢Cœk¢KHm¢{œk¢Cœk ¢SkmÀ¢{œkÀ¢Cœkà¢{œkà¢Cœk£{œk£KHm£{œk£Cœk £{œk!£KHm!£{œk!£Cœk@£{œkA£KHmA£{œkA£Cœk`£{œka£KHma£{œka£Cœk€£{œk£KHm£{œk£Cœk £{œkÀ£{œkà£{œk!¤KHm!¤{œk!¤CœkA¤KHmA¤{œkA¤Cœka¤KHma¤{œka¤CœkÁ¤KHmÁ¤{œkÁ¤Cœká¤KHmá¤{œká¤Cœk¥KHm¥{œk¥Cœk!¥KHm!¥{œk!¥CœkA¥KHmA¥{œkA¥Cœk¦KHm¦{œk¦Cœk!¦KHm!¦{œk!¦Cœk¦KHm¦{œk¦Cœk¡¦KHm¡¦{œk¡¦CœkÁ¦KHmÁ¦{œkÁ¦Cœká¦KHmá¦{œká¦Cœk§KHm§{œk§Cœk!§KHm!§{œk!§CœkA§KHmA§{œkA§Cœka§KHma§{œka§Cœk§KHm§{œk§Cœk¡§KHm¡§{œk¡§CœkÁ§KHmÁ§{œkÁ§Cœká§KHmá§{œká§Cœk¨KHm¨{œk¨Cœk!¨KHm!¨{œk!¨CœkA¨KHmA¨{œkA¨Cœka¨KHma¨{œka¨Cœk¨KHm¨{œk¨Cœk¡¨KHm¡¨{œk¡¨CœkÁ¨KHmÁ¨{œkÁ¨Cœká¨KHmá¨{œká¨Cœk©KHm©{œk©Cœk!©KHm!©{œk!©CœkA©KHmA©{œkA©Cœka©KHma©{œka©Cœk©KHm©{œk©Cœk¡©KHm¡©{œk¡©CœkÁ©KHmÁ©{œkÁ©CœkªKHmª{œkªCœk¡ªKHm¡ª{œk¡ªCœkÁªKHmÁª{œkÁªCœkáªKHmáª{œkáªCœk«KHm«{œk«Cœk!«KHm!«{œk!«CœkA«KHmA«{œkA«Cœka«KHma«{œka«Cœk«KHm«{œk«Cœk¡«KHm¡«{œk¡«CœkÁ«KHmÁ«{œkÁ«Cœká«KHmá«{œká«Cœk¬KHm¬{œk¬Cœk!¬KHm!¬{œk!¬CœkA¬KHmA¬{œkA¬Cœka¬KHma¬{œka¬Cœk¬KHm¬{œk¬Cœk¡¬KHm¡¬{œk¡¬CœkÁ¬KHmÁ¬{œkÁ¬Cœká¬KHmá¬{œká¬Cœk­KHm­{œk­Cœk!­KHm!­{œk!­CœkA­KHmA­{œkA­Cœka­KHm­KHm¡­KHmÁ­KHmá­KHm®KHm!®KHmA®KHma®KHm®KHmá®KHmá®{œká®Cœk¯KHm¯{œk¯Cœk!¯KHm!¯{œk!¯CœkA¯KHmA¯{œkA¯Cœka¯KHma¯{œka¯Cœk¯KHm¯{œk¯Cœká¯KHmá¯{œká¯Cœk°KHm°{œk°Cœk@°“Îka°KHma°{œka°Cœk€°“Îk°KHm°{œk°Cœk °“Îk¡°KHm¡°{œk¡°CœkÁ°KHmÁ°{œkÁ°Cœkà°“Îk±“Îk ±{œk!±KHm!±{œk!±CœkA±KHmA±{œkA±Cœk ±“ÎkÀ±“ØÁ±KHmÁ±{œkÁ±Cœk౓Øá±KHmá±{œká±Cœk²“زKHm²{œk²Cœk ²“Ø@²“ׂ`²“Îk€²“ׂÀ²{œkಓس“Ø ³“Ø`³{œk³KHm³{œk³Cœk ³{œk¡³KHm¡³{œk¡³CœkÀ³“Q‹Á³KHmÁ³{œkÁ³Cœk೓úiá³KHmá³{œká³Cœk´“Ø´KHm´{œk´Cœk!´KHm!´{œk!´Cœk@´“Ø ´“Q‹À´“!×à´“!×á´KHmá´{œká´Cœkµ“Q‹ µ“Ø!µKHm!µ{œk!µCœk@µ“ØAµKHmAµ{œkAµCœk`µ“ØaµKHmaµ{œkaµCœkµKHmµ{œkµCœk µ“Îk¡µKHm¡µ{œk¡µCœkÀµ“ÎkÁµKHmÁµ{œkÁµCœk൓Îk¶“Îk ¶“Ø@¶“ׂ`¶“Ø€¶“ضKHm¶{œk¶Cœk ¶“ׂ¡¶KHm¡¶{œk¡¶Cœká¶KHmá¶{œká¶Cœk·KHm·{œk·Cœk`·“2ÞÀ·“}à·“9þ¸“€3 ¸“Øa¸KHma¸{œka¸Cœk€¸“ׂ ¸“¤lÀ¸{œkณ!×¹“¤l ¹“Pä@¹“Àä`¹“À䀹“Nå ¹“ÀäÀ¹“Àä๓À亓Ø@º{œk`º“¤l€º{œk º{œkÀº{œkຓño»“ño »“ªk@»“ªk`»“ªk€»“Ø »“ªk@¼“úi`¼“Q‹€¼“ªk¡¼KHm¡¼{œk¡¼CœkÁ¼KHm༓ªká¼KHm½“¾„½KHm ½“Ø!½KHm@½“¾„A½KHm`½“úia½KHm€½“ªk½KHm¡½KHmÀ½“úiÁ½KHmན¾„á½KHm¾“¾„¾KHm!¾KHmA¾KHm`¾“u’a¾KHm€¾“ؾKHm¾{œk¾Cœk ¾“Q‹À¾“ØÁ¾KHmྒྷׂá¾KHm¿KHm!¿KHm!¿{œk!¿Cœk@¿“Q‹¡¿KHm¡¿{œk¡¿CœkÀ¿“¾„Á¿KHmÁ¿{œkÁ¿Cœkà¿“Îká¿KHmá¿{œká¿CœkÀ“¤lÀKHmÀ{œkÀCœk À“ׂ!ÀKHm!À{œk!ÀCœk@À“ׂ`À“ׂ€À“ØÀKHmÀ{œkÀCœk À“Îk¡ÀKHm¡À{œk¡ÀCœkÁÀKHmÁÀ{œkÁÀCœkàÀ“ØáÀKHmáÀ{œkáÀCœkÁ“ØÁKHmÁ{œkÁCœk Á“¤l!ÁKHmAÁKHm`Á“Q‹aÁKHmÁKHm Á“úi¡ÁKHmÀÁ“ׂÁÁKHmàÁ{œkáÁKHm“ׂÂKHm “úi!ÂKHm@“úiAÂKHm`“Q‹aÂKHmaÂ{œkaÂCœk€Â“Q‹ÂKHmÂ{œkÂCœk Â“!סÂKHm¡Â{œk¡ÂCœkÀ“Q‹ÁÂKHmÁÂ{œkÁÂCœkáÂKHmáÂ{œkáÂCœkÃKHmÃ{œkÃCœk!ÃKHm!Ã{œk!ÃCœkAÃKHmAÃ{œkAÃCœkaÃKHmaÃ{œkaÃCœkÃKHmÃ{œkÃCœk¡ÃKHm¡Ã{œk¡ÃCœkÁÃKHmÁÃ{œkÁÃCœkáÃKHmáÃ{œkáÃCœkÄKHmÄ{œkÄCœk!ÄKHm!Ä{œk!ÄCœk@Ä{œk@ÄCœkAÄKHmAÄ{œkAÄCœk`Ä{œk`ÄCœkaÄKHmaÄ{œkaÄCœkÄKHmÄ{œkÄCœk¡ÄKHm¡Ä{œk¡ÄCœkÁÄKHmÁÄ{œkÁÄCœkáÄKHmáÄ{œkáÄCœkÅKHmÅ{œkÅCœkÀÅ{œkÀÅCœkàÅ{œkàÅCœk@Æ{œk@ÆCœk`ÆSkm€Æ{œk€ÆCœk ÆS~mÀÆ{œkÀÆCœkàÆS‹mÇ{œkÇCœk ÇSâ¢@Ç{œk@ÇCœk`ÇSÇ{œk€ÇCœk ÇSü¢ÀÇ{œkÀÇCœkàÇS £È{œkÈCœk ÈS£@È{œk@ÈCœk`ÈS#£€È{œk€ÈCœk ÈS÷ùÀÈ{œkÀÈCœkàÈSúÉ{œkÉCœk ÉS3ú@É{œk@ÉCœk`ÉSSú€É{œk€ÉCœk ÉS~úÀÉ{œkÀÉCœkàÉS Ê{œkÊCœk ÊS2 @Ê{œk@ÊCœk`ÊSM €Ê{œk€ÊCœk ÊSc ÀÊ{œkÀÊCœkàÊS Ë{œkËCœk ËSŽ !ËKHm!Ë{œk!ËCœk@Ë{œk@ËCœkAËKHmAË{œkAËCœk`ËS­ aËKHmaË{œkaËCœk€Ë{œk€ËCœkËKHmË{œkËCœk ËSÌ ¡ËKHm¡Ë{œk¡ËCœkÀË{œkÀËCœkÁËKHmÁË{œkÁËCœkàËSÙ áËKHmáË{œkáËCœkÌ{œkÌCœkÌKHmÌ{œkÌCœk Ì{œk ÌCœk!ÌKHm!Ì{œk!ÌCœk@Ì{œk@ÌCœkAÌKHmAÌ{œkAÌCœk`Ì{œk`ÌCœkaÌKHmaÌ{œkaÌCœk€Ì{œk€ÌCœkÌKHmÌ{œkÌCœk Ì{œk ÌCœk¡ÌKHm¡Ì{œk¡ÌCœkÀÌ{œkÀÌCœkÁÌKHmÁÌ{œkÁÌCœkàÌ{œkàÌCœkáÌKHmáÌ{œkáÌCœkÍ{œkÍCœkÍKHmÍ{œkÍCœk Í{œk ÍCœk!ÍKHm!Í{œk!ÍCœk@Í{œk@ÍCœkAÍKHmAÍ{œkAÍCœk`Í{œk`ÍCœkaÍKHmaÍ{œkaÍCœk€Í{œk€ÍCœkÍKHmÍ{œkÍCœk Í{œk ÍCœk¡ÍKHm¡Í{œk¡ÍCœkÀÍ{œkÀÍCœkÁÍKHmÁÍ{œkÁÍCœkàÍ{œkàÍCœkáÍKHmáÍ{œkáÍCœkÎ{œkÎCœkÎKHmÎ{œkÎCœk Î{œk ÎCœk!ÎKHm!Î{œk!ÎCœk@Î{œk@ÎCœkAÎKHmAÎ{œkAÎCœk`Î{œk`ÎCœkaÎKHmaÎ{œkaÎCœk€Î{œk€ÎCœkÎKHmÎ{œkÎCœk Î{œk ÎCœk¡ÎKHm¡Î{œk¡ÎCœkÀÎ{œkÀÎCœkÁÎKHmÁÎ{œkÁÎCœkàÎ{œkàÎCœkáÎKHmáÎ{œkáÎCœkÏ{œkÏCœkÏKHmÏ{œkÏCœk Ï{œk ÏCœk!ÏKHm!Ï{œk!ÏCœk@Ï{œk@ÏCœkAÏKHmAÏ{œkAÏCœk`Ï{œk`ÏCœkaÏKHmaÏ{œkaÏCœk€Ï{œk€ÏCœkÏKHmÏ{œkÏCœk Ï{œk ÏCœk¡ÏKHm¡Ï{œk¡ÏCœkÀÏ{œkÀÏCœkÁÏKHmÁÏ{œkÁÏCœkàÏ{œkàÏCœkáÏKHmáÏ{œkáÏCœkÐ{œkÐCœkÐKHmÐ{œkÐCœk Ð{œk ÐCœk!ÐKHm!Ð{œk!ÐCœk@Ð{œk@ÐCœkAÐKHmAÐ{œkAÐCœk`Ð{œk`ÐCœkaÐKHmaÐ{œkaÐCœk€Ð{œk€ÐCœkÐKHmÐ{œkÐCœk Ð{œk ÐCœk¡ÐKHm¡Ð{œk¡ÐCœkÀÐ{œkÀÐCœkÁÐKHmÁÐ{œkÁÐCœkàÐ{œkàÐCœkáÐKHmáÐ{œkáÐCœkÑ{œkÑCœkÑKHmÑ{œkÑCœk Ñ{œk ÑCœk!ÑKHm!Ñ{œk!ÑCœk@Ñ{œk@ÑCœkAÑKHmAÑ{œkAÑCœk`Ñ{œk`ÑCœkaÑKHmaÑ{œkaÑCœk€Ñ{œk€ÑCœkÑKHmÑ{œkÑCœk Ñ{œk ÑCœk¡ÑKHm¡Ñ{œk¡ÑCœkÀÑ{œkÀÑCœkÁÑKHmÁÑ{œkÁÑCœkàÑ{œkàÑCœkáÑKHmáÑ{œkáÑCœkÒ{œkÒCœkÒKHmÒ{œkÒCœk Ò{œk ÒCœk!ÒKHm!Ò{œk!ÒCœk@Ò{œk@ÒCœkAÒKHmAÒ{œkAÒCœk`Ò{œk`ÒCœkaÒKHmaÒ{œkaÒCœk€Ò{œk€ÒCœkÒKHmÒ{œkÒCœk Ò{œk ÒCœk¡ÒKHm¡Ò{œk¡ÒCœkÀÒ{œkÀÒCœkÁÒKHmÁÒ{œkÁÒCœkàÒ{œkàÒCœkáÒKHmáÒ{œkáÒCœkÓ{œkÓCœkÓKHmÓ{œkÓCœk Ó{œk ÓCœk!ÓKHm!Ó{œk!ÓCœk@Ó{œk@ÓCœk`Ó{œk`ÓCœk€Ó{œk€ÓCœk Ó{œk ÓCœkÀÓ{œkÀÓCœkàÓ{œkàÓCœkÔ{œkÔCœk Ô{œk ÔCœk!ÔKHm!Ô{œk!ÔCœk@Ô{œk@ÔCœkAÔKHmAÔ{œkAÔCœk`Ô{œk`ÔCœkaÔKHmaÔ{œkaÔCœk€Ô{œk€ÔCœkÔKHmÔ{œkÔCœk Ô{œk ÔCœk¡ÔKHm¡Ô{œk¡ÔCœkÀÔ{œkÀÔCœkÁÔKHmÁÔ{œkÁÔCœkàÔ{œkàÔCœkáÔKHmáÔ{œkáÔCœkÕ{œkÕCœkÕKHmÕ{œkÕCœk Õ{œk ÕCœk!ÕKHm!Õ{œk!ÕCœk@Õ{œk@ÕCœkAÕKHmAÕ{œkAÕCœk`Õ{œk`ÕCœkaÕKHmaÕ{œkaÕCœk€Õ{œk€ÕCœkÕKHmÕ{œkÕCœk Õ{œk ÕCœk¡ÕKHm¡Õ{œk¡ÕCœkÀÕ{œkÀÕCœkÁÕKHmÁÕ{œkÁÕCœkàÕ{œkàÕCœkáÕKHmáÕ{œkáÕCœkÖ{œkÖCœkÖKHmÖ{œkÖCœk Ö{œk ÖCœk!ÖKHm!Ö{œk!ÖCœk@Ö{œk@ÖCœkAÖKHmAÖ{œkAÖCœk`Ö{œk`ÖCœkaÖKHmaÖ{œkaÖCœk€Ö{œk€ÖCœkÖKHmÖ{œkÖCœk Ö{œk ÖCœk¡ÖKHm¡Ö{œk¡ÖCœkÀÖ{œkÀÖCœkÁÖKHmàÖ{œkàÖCœkáÖKHm×{œk×Cœk×KHm ×{œk ×Cœk@×{œk@×Cœk`×{œk`×Cœk€×{œk€×Cœk×KHm×{œk×Cœk ×{œk ×Cœk¡×KHm¡×{œk¡×CœkÀ×{œkÀ×CœkÁ×KHmÁ×{œkÁ×Cœkà×{œkà×Cœká×KHmá×{œká×CœkØ{œkØCœkØKHmØ{œkØCœk Ø{œk ØCœk!ØKHm!Ø{œk!ØCœk@Ø{œk@ØCœkAØKHmAØ{œkAØCœk`Ø{œk`ØCœkaØKHmaØ{œkaØCœk€Ø{œk€ØCœkØKHmØ{œkØCœk Ø{œk ØCœk¡ØKHm¡Ø{œk¡ØCœkÀØ{œkÀØCœkÁØKHmÁØ{œkÁØCœkàØ{œkàØCœkáØKHmÙ{œkÙCœkÙKHm Ù{œk ÙCœk!ÙKHm@Ù{œk@ÙCœkAÙKHm`Ù{œk`ÙCœkaÙKHm€Ù{œk€ÙCœkÙKHmÙ{œkÙCœk Ù{œk ÙCœk¡ÙKHmÀÙ{œkÀÙCœkÁÙKHmàÙ{œkàÙCœkáÙKHmáÙ{œkáÙCœkÚ{œkÚCœkÚKHm Ú{œk ÚCœk!ÚKHm@Ú{œk@ÚCœkAÚKHm`Ú{œk`ÚCœkaÚKHm€Ú{œk€ÚCœkÚKHm Ú{œk ÚCœk¡ÚKHmÀÚ{œkÀÚCœkÁÚKHmáÚKHmÛKHm!ÛKHmAÛKHm`Û{œk`ÛCœkaÛKHm€ÛSkmÛKHm Û{œk ÛCœk¡ÛKHmÀÛS~mÁÛKHmàÛ{œkàÛCœkáÛKHmÜ{œkÜCœkÜKHm Ü{œk ÜCœk!ÜKHm@Ü“ØAÜKHmaÜKHm€Ü{œk€ÜCœkÜKHm Ü{œk ÜCœk¡ÜKHmÀÜ{œkÀÜCœkÁÜKHmàÜ{œkàÜCœkáÜKHmÝ{œkÝCœkÝKHm Ý{œk ÝCœk!ÝKHm@Ý{œk@ÝCœkAÝKHm`Ý{œk`ÝCœkaÝKHm€Ý{œk€ÝCœkÝKHm Ý{œk ÝCœk¡ÝKHmÀÝ{œkÀÝCœkÁÝKHmàÝ{œkàÝCœkáÝKHmÞ{œkÞCœkÞKHm Þ{œk ÞCœk!ÞKHmAÞKHm`Þ{œk`ÞCœkaÞKHm€ÞSkmÞKHm Þ{œk ÞCœk¡ÞKHmÀÞS~mÁÞKHmàÞ{œkàÞCœkáÞKHmß{œkßCœkßKHm ß{œk ßCœk!ßKHm@ß{œkAßKHm`ß{œkaßKHm€ß{œkßKHm ß{œk¡ßKHmÀß{œkÁßKHmàß{œkáßKHmà{œkàKHm à{œk!àKHmAàKHmaàKHmàKHm¡àKHmÁàKHmáàKHmáKHm!áKHmAáKHmaáKHmáKHm¡áKHmÁáKHmááKHmâKHm!âKHmAâKHmaâKHmâKHm¡âKHmÀâ{œkÀâCœkÁâKHmàâSkmáâKHmã{œkãCœkãKHm ãS~m!ãKHm@ã{œk@ãCœkAãKHm`ã{œk`ãCœkaãKHm€ã{œk€ãCœkãKHm ã{œk¡ãKHmÀã{œkÁãKHmàã{œkáãKHmä{œkäKHm ä{œk!äKHm@ä{œkAäKHm`ä{œkaäKHm€ä{œkäKHm¡äKHmÁäKHmáäKHmåKHm!åKHmAåKHmaåKHmåKHm¡åKHmÁåKHmáåKHmæKHm!æKHmAæKHmaæKHmæKHm¡æKHmÁæKHmáæKHmçKHm!çKHmAçKHmaçKHmçKHm¡çKHmÁçKHmáçKHmèKHm!èKHmAèKHmaèKHmèKHm¡èKHmÁèKHmáèKHméKHm!éKHmAéKHmaéKHméKHm¡éKHmÁéKHmáéKHmêKHm!êKHmAêKHmaêKHmêKHm¡êKHmÁêKHmáêKHmëKHm!ëKHmAëKHmaëKHmëKHm¡ëKHmÁëKHmáëKHmìKHm!ìKHmAìKHmaìKHmìKHm¡ìKHmÁìKHmáìKHmí{œkíCœkíKHm íSkm!íKHm@í{œk@íCœkAíKHm`íS~maíKHm€í{œk€íCœkíKHm í{œk íCœk¡íKHmÀí{œkÀíCœkÁíKHmàí{œkáíKHmî{œkîKHm î{œk!îKHm@î{œkAîKHm`î{œkaîKHm€î{œkîKHm î{œk¡îKHmÀî{œkÁîKHmáîKHmïKHm!ïKHmAïKHmaïKHm€ï{œk€ïCœkïKHm ïSkm¡ïKHmÀï{œkÀïCœkÁïKHmàïS~máïKHmð{œkðCœkðKHm ð{œk ðCœk!ðKHm@ð{œk@ðCœkAðKHm`ð{œkaðKHm€ð{œkðKHm ð{œk¡ðKHmÀð{œkÁðKHmàð{œkáðKHmñ{œkñKHm ñ{œk!ñKHm@ñ{œkAñKHmañKHm€ñ{œk€ñCœkñKHm ñSkm¡ñKHmÀñ{œkÀñCœkÁñKHmàñS~máñKHmò{œkòCœkòKHm ò{œk òCœk!òKHm@ò{œk@òCœkAòKHmaòKHmòKHm¡òKHmÁòKHmáòKHmó{œkóCœkóKHm ó{œk óCœk!óKHm@ó{œk@óCœkAóKHm`ó{œk`óCœkaóKHm€ó{œk€óCœkóKHm ó{œk óCœk¡óKHmÀóSkmÁóKHmàó{œkàóCœkáóKHmô{œkôCœkôKHm ô{œk ôCœk!ôKHm@ô{œk@ôCœkAôKHm`ô{œk`ôCœkaôKHmôKHm¡ôKHmÁôKHmáôKHmõKHm!õKHmAõKHmaõKHm€õ{œk€õCœkõKHm õSkm¡õKHmÀõ{œkÀõCœkÁõKHmàõS~máõKHmö{œköCœköKHm ö{œk öCœk!öKHm@ö{œk@öCœkAöKHm`ö{œkaöKHm€ö{œköKHm ö{œk¡öKHmÀö{œkÁöKHmàö{œkáöKHm÷{œk÷KHm ÷{œk!÷KHm@÷{œkA÷KHma÷KHm÷KHm¡÷KHmÁ÷KHmá÷KHmøKHm!øKHmAøKHmaøKHmøKHm ø{œk øCœk¡øKHmÀø{œkÀøCœkÁøKHmáøKHmùKHm!ùKHmAùKHmaùKHmùKHm¡ùKHmÁùKHmáùKHmúKHm!úKHmAúKHmaúKHmúKHm¡úKHmÁúKHmáúKHmûKHm!ûKHmAûKHm`û{œk`ûCœkaûKHm€û{œk€ûCœkûKHm¡ûKHmÁûKHmáûKHmüKHm!üKHmAüKHmaüKHmüKHm¡üKHmÁüKHmáüKHmýKHm ý{œk!ýKHm@ý{œkAýKHm`ý{œkaýKHmýKHm¡ýKHmÀý{œkÁýKHmàý{œkáýKHmþKHm!þKHmAþKHmaþKHmþKHm¡þKHmÁþKHmáþKHmÿKHm!ÿKHm@ÿSkmAÿKHm`ÿ{œk`ÿCœkaÿKHm€ÿ{œk€ÿCœkÿKHm ÿ{œk ÿCœk¡ÿKHmÀÿ{œkÀÿCœkÁÿKHmàÿ{œkàÿCœkáÿKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHm`{œkaKHm€{œkKHm {œk¡KHmÀ{œkÁKHmà{œkáKHmKHm {œk Cœk!KHm@SkmAKHm`{œk`CœkaKHm€S~mKHm {œk Cœk¡KHmÀS‹mÁKHmà{œkàCœkáKHm S⢠KHm {œk Cœk! KHm@ Sï¢A KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÁ KHmà {œká KHm {œk KHm {œk! KHm@ {œkA KHm` {œka KHm€ {œk KHm  {œk¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHmKHm!KHmAKHmaKHm€{œk€CœkKHm {œk Cœk¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÀ{œkÀCœkÁKHmà{œkàCœkáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm {œk¡KHmÀ{œkÁKHmà{œkáKHm{œkKHm {œk!KHmAKHm`{œk`CœkaKHm€SkmKHm {œk Cœk¡KHmÀS~mÁKHmà{œkàCœkáKHm{œkCœkKHm {œk Cœk!KHm@{œkAKHm`{œkaKHm€{œkKHm {œk¡KHmÀ{œkÁKHmà{œkáKHm{œkKHm {œk!KHmAKHmaKHm€{œk€CœkKHm {œk Cœk¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHm€{œk€CœkKHm {œk Cœk¡KHmÁKHmáKHmKHm!KHm@{œk@CœkAKHm`{œk`CœkaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHmKHm!KHmAKHmaKHmKHm¡KHmÁKHmáKHm KHm! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm KHm¡ KHmÀ SkmÁ KHmà {œkà Cœká KHm!{œk!Cœk!KHm !{œk !Cœk!!KHm@!{œk@!CœkA!KHma!KHm€!{œk€!Cœk!KHm !Skm¡!KHmÀ!{œkÀ!CœkÁ!KHmà!S~má!KHm"{œk"Cœk"KHm "S‹m!"KHm@"{œk@"CœkA"KHm`"{œk`"Cœka"KHm€"{œk€"Cœk"KHm "{œk "Cœk¡"KHmÀ"{œkÀ"CœkÁ"KHmà"{œkà"Cœká"KHm#{œk#Cœk#KHm #{œk #Cœk!#KHm@#{œk@#CœkA#KHm`#{œk`#Cœka#KHm€#{œk€#Cœk#KHm #{œk #Cœk¡#KHmÀ#{œkÀ#CœkÁ#KHmà#{œkà#Cœká#KHm${œk$Cœk$KHm ${œk $Cœk!$KHm@${œk@$CœkA$KHm`${œk`$Cœka$KHm€${œk€$Cœk$KHm¡$KHmÁ$KHmá$KHm%KHm!%KHmA%KHma%KHm%KHm¡%KHmÁ%KHmá%KHm&KHm!&KHmA&KHma&KHm&KHm¡&KHmÁ&KHmá&KHm'KHm!'KHmA'KHma'KHm'KHm¡'KHmÁ'KHmá'KHm(KHm!(KHmA(KHma(KHm(KHm¡(KHmÁ(KHmá(KHm)KHm!)KHmA)KHma)KHm)KHm¡)KHmÁ)KHmá)KHm*KHm!*KHmA*KHma*KHm*KHm¡*KHmÁ*KHmà*{œkà*Cœká*KHm+{œk+Cœk+KHm!+KHmA+KHma+KHm+KHm¡+KHmÁ+KHmá+KHm,KHm!,KHmA,KHma,KHm,KHm¡,KHmÁ,KHmá,KHm-KHm!-KHmA-KHma-KHm-KHm¡-KHmÁ-KHmá-KHm.KHm!.KHmA.KHma.KHm.KHm¡.KHmÁ.KHmá.KHm/KHm!/KHmA/KHma/KHm/KHm¡/KHmÁ/KHmá/KHm0KHm!0KHmA0KHma0KHm0KHm¡0KHmÁ0KHmá0KHm1KHm!1KHmA1KHma1KHm1KHm¡1KHmÁ1KHmá1KHm2KHm!2KHmA2KHma2KHm2KHm¡2KHmÁ2KHmá2KHm3KHm3{œk3Cœk!3KHm!3{œk!3CœkA3KHmA3{œkA3Cœka3KHma3{œka3CœkÁ3KHmÁ3{œkÁ3Cœk!4KHm!4{œk!4CœkA4KHma4KHm4KHm¡4KHm¡4{œk¡4CœkA5KHma5KHm5KHm¡5KHmÁ5KHm¡6KHm¡6{œk¡6CœkÁ6KHmÁ6{œkÁ6Cœká6KHmá6{œká6CœkA7KHma7KHm7KHm¡7KHmÁ7KHmá7KHm8KHm!8KHm!8{œk!8CœkA8KHma8KHm8KHm¡8KHmÁ8KHmá8KHm9KHm!9KHmA9KHma9KHma9{œka9Cœk9KHm9{œk9Cœk¡9KHm¡9{œk¡9CœkÁ9KHmÁ9{œkÁ9Cœká9KHmá9{œká9Cœk :{œk :Cœk!:KHm!:{œk!:Cœk@:{œk@:CœkA:KHmA:{œkA:Cœka:KHma:{œka:Cœk:KHm:{œk:Cœk¡:KHm¡:{œk¡:CœkÁ:KHmÁ:{œkÁ:Cœká:KHmá:{œká:Cœk;KHm;{œk;Cœk!;KHm!;{œk!;CœkA;KHmA;{œkA;Cœka;KHma;{œka;Cœk;KHm;{œk;Cœk¡;KHm¡;{œk¡;CœkÁ;KHmÁ;{œkÁ;Cœká;KHmá;{œká;Cœk<KHm<{œk<Cœk!<KHm!<{œk!<CœkA<KHmA<{œkA<Cœka<KHma<{œka<Cœk<KHm<{œk<Cœk¡<KHm¡<{œk¡<CœkÁ<KHmÁ<{œkÁ<Cœká<KHmá<{œká<Cœk=KHm={œk=Cœk!=KHm!={œk!=CœkA=KHmA={œkA=Cœka=KHma={œka=Cœk=KHm={œk=Cœk¡=KHm¡={œk¡=CœkÁ=KHmÁ={œkÁ=Cœká=KHmá={œká=Cœk>KHm>{œk>Cœk!>KHm!>{œk!>CœkA>KHmA>{œkA>Cœka>KHma>{œka>Cœk>KHm>{œk>Cœk¡>KHm¡>{œk¡>CœkÁ>KHmÁ>{œkÁ>Cœká>KHmá>{œká>Cœk?KHm?{œk?Cœk!?KHm!?{œk!?CœkA?KHmA?{œkA?Cœka?KHma?{œka?Cœk?KHm?{œk?Cœk¡?KHm¡?{œk¡?CœkÁ?KHmÁ?{œkÁ?Cœká?KHmá?{œká?Cœk@KHm@{œk@Cœk!@KHm!@{œk!@CœkA@KHmA@{œkA@Cœka@KHma@{œka@Cœk@KHm@{œk@Cœk¡@KHm¡@{œk¡@CœkÁ@KHmÁ@{œkÁ@Cœká@KHmá@{œká@CœkAKHmA{œkACœk!AKHm!A{œk!ACœkAAKHmAA{œkAACœkaAKHmaA{œkaACœkAKHmA{œkACœk¡AKHm¡A{œk¡ACœkÁAKHmÁA{œkÁACœkáAKHmáA{œkáACœkBKHmB{œkBCœk!BKHm!B{œk!BCœkABKHmAB{œkABCœkaBKHmaB{œkaBCœkBKHmB{œkBCœk¡BKHm¡B{œk¡BCœkÁBKHmÁB{œkÁBCœkáBKHmáB{œkáBCœkCKHmC{œkCCœk!CKHm!C{œk!CCœkACKHmAC{œkACCœk`C{œk`CCœkaCKHmaC{œkaCCœk€C{œk€CCœkCKHmC{œkCCœk¡CKHm¡C{œk¡CCœkÁCKHmÁC{œkÁCCœkáCKHmáC{œkáCCœkDKHmD{œkDCœk!DKHm!D{œk!DCœkADKHmAD{œkADCœkaDKHmaD{œkaDCœkDKHmD{œkDCœk¡DKHm¡D{œk¡DCœkÁDKHmÁD{œkÁDCœkáDKHmáD{œkáDCœkEKHmE{œkECœk!EKHm!E{œk!ECœkAEKHmAE{œkAECœkaEKHmaE{œkaECœkEKHmE{œkECœk¡EKHm¡E{œk¡ECœkÁEKHmÁE{œkÁECœkáEKHmáE{œkáECœkFKHmF{œkFCœk!FKHm!F{œk!FCœkAFKHmAF{œkAFCœkaFKHmaF{œkaFCœkFKHmF{œkFCœk¡FKHm¡F{œk¡FCœkÁFKHmÁF{œkÁFCœkáFKHmáF{œkáFCœkGKHmG{œkGCœk!GKHm!G{œk!GCœkAGKHmAG{œkAGCœkaGKHmaG{œkaGCœkGKHmG{œkGCœk¡GKHm¡G{œk¡GCœkÁGKHmÁG{œkÁGCœkáGKHmáG{œkáGCœkHKHmH{œkHCœk H“Îk!HKHm!H{œk!HCœk@H{œk@HCœkAHKHmAH{œkAHCœk`H“ØaHKHmaH{œkaHCœk€H“ÎkHKHmH{œkHCœk H“Îk¡HKHm¡H{œk¡HCœkÁHKHmÁH{œkÁHCœkàH{œkáHKHmáH{œkáHCœkI{œkIKHmI{œkICœk!IKHm!I{œk!ICœkAIKHmAI{œkAICœkaIKHmaI{œkaICœkIKHmI{œkICœk¡IKHm¡I{œk¡ICœkÁIKHmÁI{œkÁICœkáIKHmáI{œkáICœkJKHmJ{œkJCœk!JKHm!J{œk!JCœkAJKHmAJ{œkAJCœkaJKHmaJ{œkaJCœkJKHmJ{œkJCœk J“!סJKHm¡J{œk¡JCœkÁJKHmÁJ{œkÁJCœkàJ{œkàJCœkáJKHmáJ{œkáJCœkKSkmKKHmK{œkKCœk K{œk KCœk!KKHm!K{œk!KCœk@KS~mAKKHmAK{œkAKCœk`K{œk`KCœk€K{œk€KCœk K{œk KCœkÀK{œkÀKCœkàK{œkàKCœkL{œkLCœk L{œk LCœk@L{œk@LCœk`L{œk`LCœk M{œkÀM{œkàM{œkN{œk N{œk@N{œk`N{œk€N{œk@X“¤l`X“Îk€X“Îk X“ÎkÀX“ׂàX“ØY“Ø Y“Îk@Y“Îk`Y“Îk€Y“Îk Y“ÎkÀY“ÎkàY“ÎkZ“Îk Z“Îk@Z“Îk`Z“ÎkÀZ“Îk[“Îk`[“Îk€[“ׂ [“ׂÀ[“ׂà[“Ø\“ׂ \“ׂ@\“Îk`\“Ø \“ØÀ\“ÜTà\“«]“« ]“«@]“¤l`]“ׂ€]“!× ]“7À]{œkà]“!×^“!×@^“!×`^“úi€^“!× ^“!×À^“!×à^“Îk_“¤l _{œk@_{œk`_{œkÀ_“!×à_“¤l`{œk `“ׂ@`“Îk``“Ø€`“ׂ `“ÎkÀ`“Îkà`“¤la“¤l a“ׂ@a“Q‹b“!× b“¤l@b“¤l`b“¤l€b“!× b“Q‹Àb“¤làb“¤lc“!× c“¤l@c“¤l`c“úiacKHmac{œkacCœkcKHmc{œkcCœk c{œk¡cKHm¡c{œk¡cCœkÀc“ׂÁcKHmÁc{œkÁcCœkàc“!×ácKHmác{œkácCœkd“!×dKHmd{œkdCœk d“!×!dKHm!d{œk!dCœk@d“!×AdKHmAd{œkAdCœk`d“¤ladKHmad{œkadCœk€d{œkdKHmd{œkdCœk d{œk¡dKHm¡d{œk¡dCœkÀd{œkÁdKHmÁd{œkÁdCœkàd“PäádKHmád{œkádCœkeKHme{œkeCœk!eKHm!e{œk!eCœkAeKHmAe{œkAeCœk`e{œkaeKHmae{œkaeCœk€e{œkeKHme{œkeCœk e{œk¡eKHm¡e{œk¡eCœkÁeKHmÁe{œkÁeCœkàe{œkáeKHmáe{œkáeCœkf“´w fKHmf{œkfCœk f“Ux !fKHm!f{œk!fCœk@f“ØAfKHmAf{œkAfCœk`f“¤lafKHmaf{œkafCœkfKHmf{œkfCœk f“¤l¡fKHm¡f{œk¡fCœkÀf“¤lÁfKHmÁf{œkÁfCœkàf“!×áfKHmáf{œkáfCœkg“¤lgKHmg{œkgCœk g“¤l!gKHm!g{œk!gCœk@g“¤lAgKHmAg{œkAgCœk`g“¤lagKHmag{œkagCœk€g“¤lgKHmg{œkgCœk g“¤l¡gKHm¡g{œk¡gCœkÀg“¤lÁgKHmÁg{œkÁgCœkàg“¤lágKHmág{œkágCœkh“!×hKHmh{œkhCœk h“Q‹!hKHm!h{œk!hCœk@h{œkAhKHmAh{œkAhCœk`h{œkahKHmah{œkahCœk€h{œkhKHmh{œkhCœk h“!סhKHm¡h{œk¡hCœkÀh“ØÁhKHmÁh{œkÁhCœkàh“¤láhKHmáh{œkáhCœki“¤liKHmi{œkiCœk!iKHm!i{œk!iCœkAiKHmAi{œkAiCœkaiKHmai{œkaiCœkiKHmi{œkiCœk¡iKHm¡i{œk¡iCœkÁiKHmÁi{œkÁiCœkáiKHmái{œkáiCœkjKHmj{œkjCœk!jKHm!j{œk!jCœkAjKHmAj{œkAjCœkajKHmaj{œkajCœkjKHmj{œkjCœk¡jKHm¡j{œk¡jCœkÁjKHmÁj{œkÁjCœkájKHmáj{œkájCœkkKHmk{œkkCœk!kKHm!k{œk!kCœkAkKHmAk{œkAkCœkakKHmak{œkakCœkkKHmk{œkkCœk¡kKHm¡k{œk¡kCœkÁkKHmÁk{œkÁkCœkákKHmák{œkákCœklKHml{œklCœk!lKHm!l{œk!lCœkAlKHmAl{œkAlCœkalKHmal{œkalCœklKHml{œklCœk¡lKHm¡l{œk¡lCœkÁlKHmÁl{œkÁlCœkálKHmál{œkálCœkmKHmm{œkmCœk!mKHm!m{œk!mCœkAmKHmAm{œkAmCœkamKHmam{œkamCœkmKHmm{œkmCœk¡mKHm¡m{œk¡mCœkÁmKHmÁm{œkÁmCœkámKHmám{œkámCœknKHmn{œknCœk!nKHm!n{œk!nCœkAnKHmAn{œkAnCœkanKHman{œkanCœknKHmn{œknCœk¡nKHm¡n{œk¡nCœkÁnKHmÁn{œkÁnCœkánKHmán{œkánCœkoKHmo{œkoCœk!oKHm!o{œk!oCœkAoKHmAo{œkAoCœkaoKHmao{œkaoCœkoKHmo{œkoCœk¡oKHm¡o{œk¡oCœkÁoKHmÁo{œkÁoCœkáoKHmáo{œkáoCœkpKHmp{œkpCœk p{œk!pKHm!p{œk!pCœk@p{œkApKHmAp{œkApCœk`p{œkapKHmap{œkapCœk€p{œkpKHmp{œkpCœk p{œk¡pKHm¡p{œk¡pCœkÁpKHmÁp{œkÁpCœkápKHmáp{œkápCœkqKHmq{œkqCœk!qKHm!q{œk!qCœkAqKHmAq{œkAqCœkaqKHmaq{œkaqCœkqKHmq{œkqCœk q{œk¡qKHm¡q{œk¡qCœkÀq{œkÁqKHmÁq{œkÁqCœkàq{œkáqKHmáq{œkáqCœkr{œkrKHmr{œkrCœk r{œk!rKHm!r{œk!rCœkArKHmAr{œkArCœkarKHmar{œkarCœkrKHmr{œkrCœk¡rKHm¡r{œk¡rCœkÁrKHmÁr{œkÁrCœkárKHmár{œkárCœksKHms{œksCœk!sKHm!s{œk!sCœkAsKHmAs{œkAsCœkasKHmas{œkasCœksKHms{œksCœk¡sKHm¡s{œk¡sCœkÁsKHmÁs{œkÁsCœkásKHmás{œkásCœktKHmt{œktCœk!tKHm!t{œk!tCœkAtKHmAt{œkAtCœkatKHmat{œkatCœktKHmt{œktCœk¡tKHm¡t{œk¡tCœkÁtKHmÁt{œkÁtCœkátKHmát{œkátCœkuKHmu{œkuCœk!uKHm!u{œk!uCœkAuKHmAu{œkAuCœkauKHmau{œkauCœkuKHmu{œkuCœk¡uKHm¡u{œk¡uCœkÁuKHmÁu{œkÁuCœkáuKHmáu{œkáuCœkvKHmv{œkvCœk!vKHm!v{œk!vCœkAvKHmAv{œkAvCœkavKHmav{œkavCœkvKHmv{œkvCœk¡vKHm¡v{œk¡vCœkÁvKHmÁv{œkÁvCœkávKHmáv{œkávCœkwKHmw{œkwCœk!wKHm!w{œk!wCœkAwKHmAw{œkAwCœkawKHmaw{œkawCœkwKHmw{œkwCœk¡wKHm¡w{œk¡wCœkÁwKHmÁw{œkÁwCœkáwKHmáw{œkáwCœkxKHmx{œkxCœk!xKHm!x{œk!xCœkAxKHmAx{œkAxCœkaxKHmax{œkaxCœkxKHmx{œkxCœk¡xKHm¡x{œk¡xCœkÁxKHmÁx{œkÁxCœkáxKHmáx{œkáxCœkyKHmy{œkyCœk!yKHm!y{œk!yCœkAyKHmAy{œkAyCœkayKHmay{œkayCœkyKHmy{œkyCœk¡yKHm¡y{œk¡yCœkÁyKHmÁy{œkÁyCœkáyKHmáy{œkáyCœkzKHmz{œkzCœk!zKHm!z{œk!zCœkAzKHmAz{œkAzCœkazKHmaz{œkazCœkzKHmz{œkzCœk¡zKHm¡z{œk¡zCœkÁzKHmÁz{œkÁzCœkázKHmáz{œkázCœk{KHm{{œk{Cœk!{KHm!{{œk!{CœkA{KHmA{{œkA{Cœka{KHma{{œka{Cœk{KHm{{œk{Cœk¡{KHm¡{{œk¡{CœkÁ{KHmÁ{{œkÁ{Cœká{KHmá{{œká{Cœk|KHm|{œk|Cœk!|KHm!|{œk!|CœkA|KHmA|{œkA|Cœka|KHma|{œka|Cœk|KHm|{œk|Cœk¡|KHm¡|{œk¡|CœkÁ|KHmÁ|{œkÁ|Cœkà|{œkà|Cœká|KHmá|{œká|Cœk}Skm}KHm}{œk}Cœk }{œk }Cœk!}KHm!}{œk!}Cœk@}S~mA}KHmA}{œkA}Cœk`}{œk`}Cœka}KHma}{œka}Cœk€}S‹m}KHm}{œk}Cœk }{œk }Cœk¡}KHm¡}{œk¡}CœkÀ}Sâ¢Á}KHmÁ}{œkÁ}Cœkà}{œkà}Cœká}KHmá}{œká}Cœk~{œk~Cœk~KHm~{œk~Cœk ~{œk ~Cœk!~KHm!~{œk!~Cœk@~{œk@~CœkA~KHmA~{œkA~Cœk`~{œk`~Cœka~KHma~{œka~Cœk€~{œk€~Cœk~KHm~{œk~Cœk ~{œk ~Cœk¡~KHm¡~{œk¡~CœkÀ~{œkÀ~CœkÁ~KHmÁ~{œkÁ~Cœkà~{œkà~Cœká~KHmá~{œká~Cœk{œkCœkKHm{œkCœk {œk Cœk!KHm!{œk!Cœk@{œk@CœkAKHmA{œkACœk`{œk`CœkaKHma{œkaCœk€{œk€CœkKHm{œkCœk {œk Cœk¡KHm¡{œk¡CœkÀSkmÁKHmÁ{œkÁCœkà{œkàCœkáKHmá{œkáCœk€{œk€Cœk€KHm€{œk€Cœk €{œk €Cœk!€KHm!€{œk!€Cœk@€{œk@€CœkA€KHmA€{œkA€Cœka€KHma€{œka€Cœk€KHm€{œk€Cœk¡€KHm¡€{œk¡€CœkÁ€KHmÁ€{œkÁ€Cœká€KHmá€{œká€Cœk{œkCœkKHm{œkCœk Skm!KHm!{œk!Cœk@{œk@CœkAKHmA{œkACœk`S~maKHma{œkaCœk€{œk€CœkKHm{œkCœk {œk Cœk¡KHm¡{œk¡CœkÀ{œkÀCœkÁKHmÁ{œkÁCœkáKHmá{œkáCœk‚{œk‚Cœk‚KHm‚{œk‚Cœk ‚{œk ‚Cœk!‚KHm!‚{œk!‚Cœk@‚{œk@‚CœkA‚KHmA‚{œkA‚Cœk`‚{œk`‚Cœka‚KHma‚{œka‚Cœk€‚{œk€‚Cœk‚KHm‚{œk‚Cœk ‚{œk ‚Cœk¡‚KHm¡‚{œk¡‚CœkÁ‚KHmÁ‚{œkÁ‚Cœká‚KHmá‚{œká‚CœkƒKHmƒ{œkƒCœk!ƒKHm!ƒ{œk!ƒCœkAƒKHmAƒ{œkAƒCœkaƒKHmaƒ{œkaƒCœkƒKHmƒ{œkƒCœk¡ƒKHm¡ƒ{œk¡ƒCœkÁƒKHmÁƒ{œkÁƒCœkáƒKHmáƒ{œkáƒCœk„KHm„{œk„Cœk!„KHm!„{œk!„CœkA„KHmA„{œkA„Cœka„KHma„{œka„Cœk„KHm„{œk„Cœk¡„KHm¡„{œk¡„CœkÁ„KHmÁ„{œkÁ„Cœkà„{œká„KHmá„{œká„Cœk…{œk…KHm…{œk…Cœk …{œk!…KHm!…{œk!…Cœk@…{œkA…KHmA…{œkA…Cœk`…{œka…KHma…{œka…Cœk…KHm…{œk…Cœk¡…KHm¡…{œk¡…CœkÁ…KHmÁ…{œkÁ…Cœká…KHmá…{œká…Cœk†KHm†{œk†Cœk!†KHm!†{œk!†CœkA†KHmA†{œkA†Cœka†KHma†{œka†Cœk†KHm†{œk†Cœk¡†KHm¡†{œk¡†CœkÁ†KHmÁ†{œkÁ†Cœká†KHmá†{œká†Cœk‡KHm‡{œk‡Cœk!‡KHm!‡{œk!‡CœkA‡KHmA‡{œkA‡Cœka‡KHma‡{œka‡Cœk‡KHm‡{œk‡Cœk¡‡KHm¡‡{œk¡‡CœkÁ‡KHmÁ‡{œkÁ‡Cœká‡KHmá‡{œká‡CœkˆKHmˆ{œkˆCœk!ˆKHm!ˆ{œk!ˆCœkAˆKHmAˆ{œkAˆCœkaˆKHmaˆ{œkaˆCœkˆKHmˆ{œkˆCœk¡ˆKHm¡ˆ{œk¡ˆCœkÁˆKHmÁˆ{œkÁˆCœkáˆKHmáˆ{œkáˆCœk‰KHm‰{œk‰Cœk!‰KHm!‰{œk!‰CœkA‰KHmA‰{œkA‰Cœka‰KHma‰{œka‰CœkÁ¡KHmÁ¡{œkÁ¡Cœká¡KHmá¡{œká¡Cœk¢KHm¢{œk¢Cœk!¢KHm!¢{œk!¢CœkA¢KHmA¢{œkA¢Cœka¢KHma¢{œka¢Cœk¢KHm¢{œk¢Cœk¡¢KHm¡¢{œk¡¢CœkÁ¢KHmÁ¢{œkÁ¢Cœká¢KHmá¢{œká¢Cœk£KHm£{œk£Cœk!£KHm!£{œk!£CœkA£KHmA£{œkA£Cœka£KHma£{œka£Cœk£KHm£{œk£Cœk¡£KHm¡£{œk¡£CœkÁ£KHmÁ£{œkÁ£Cœká£KHmá£{œká£Cœk¤KHm¤{œk¤Cœk!¤KHm!¤{œk!¤CœkA¤KHmA¤{œkA¤Cœka¤KHma¤{œka¤Cœk¤KHm¤{œk¤Cœk¡¤KHm¡¤{œk¡¤CœkÁ¤KHmÁ¤{œkÁ¤Cœká¤KHmá¤{œká¤Cœk¥KHm¥{œk¥Cœk!¥KHm!¥{œk!¥CœkA¥KHmA¥{œkA¥Cœka¥KHma¥{œka¥Cœk¥KHm¥{œk¥Cœk¡¥KHm¡¥{œk¡¥CœkÁ¥KHmÁ¥{œkÁ¥Cœká¥KHmá¥{œká¥Cœk¦KHm¦{œk¦Cœk!¦KHm!¦{œk!¦CœkA¦KHmA¦{œkA¦Cœka¦KHma¦{œka¦Cœk¦KHm¦{œk¦Cœk¡¦KHm¡¦{œk¡¦CœkÁ¦KHmÁ¦{œkÁ¦Cœká¦KHmá¦{œká¦Cœk§KHm§{œk§Cœk!§KHm!§{œk!§CœkA§KHmA§{œkA§Cœka§KHma§{œka§Cœk§KHm§{œk§Cœk¡§KHm¡§{œk¡§CœkÁ§KHmÁ§{œkÁ§Cœká§KHmá§{œká§Cœk¨KHm¨{œk¨Cœk!¨KHm!¨{œk!¨CœkA¨KHmA¨{œkA¨Cœka¨KHma¨{œka¨Cœk¨KHm¨{œk¨Cœk¡¨KHm¡¨{œk¡¨CœkÁ¨KHmÁ¨{œkÁ¨Cœká¨KHmá¨{œká¨Cœk©KHm©{œk©Cœk!©KHm!©{œk!©CœkA©KHmA©{œkA©Cœka©KHma©{œka©Cœk©KHm©{œk©Cœk¡©KHm¡©{œk¡©CœkÁ©KHmÁ©{œkÁ©Cœká©KHmá©{œká©CœkªKHmª{œkªCœk!ªKHm!ª{œk!ªCœkAªKHmAª{œkAªCœkaªKHmaª{œkaªCœkªKHmª{œkªCœk¡ªKHm¡ª{œk¡ªCœkÁªKHmÁª{œkÁªCœkáªKHmáª{œkáªCœk«KHm«{œk«Cœk!«KHm!«{œk!«CœkA«KHmA«{œkA«Cœka«KHma«{œka«Cœk«KHm«{œk«Cœk¡«KHm¡«{œk¡«CœkÁ«KHmÁ«{œkÁ«Cœká«KHmá«{œká«Cœk¬KHm¬{œk¬Cœk!¬KHm!¬{œk!¬CœkA¬KHmA¬{œkA¬Cœka¬KHma¬{œka¬Cœk¬KHm¬{œk¬Cœk¡¬KHm¡¬{œk¡¬CœkÁ¬KHmÁ¬{œkÁ¬Cœká¬KHmá¬{œká¬Cœk­KHm­{œk­Cœk!­KHm!­{œk!­CœkA­KHmA­{œkA­Cœka­KHma­{œka­Cœk­KHm­{œk­Cœk¡­KHm¡­{œk¡­CœkÁ­KHmÁ­{œkÁ­Cœká­KHmá­{œká­Cœk®KHm®{œk®Cœk!®KHm!®{œk!®CœkA®KHmA®{œkA®Cœka®KHma®{œka®Cœk®KHm®{œk®Cœk¡®KHm¡®{œk¡®CœkÁ®KHmÁ®{œkÁ®Cœká®KHmá®{œká®Cœk¯KHm¯{œk¯Cœk!¯KHm!¯{œk!¯CœkA¯KHmA¯{œkA¯Cœka¯KHma¯{œka¯Cœk¯KHm¯{œk¯Cœk¡¯KHm¡¯{œk¡¯CœkÁ¯KHmÁ¯{œkÁ¯Cœká¯KHmá¯{œká¯Cœk°KHm°{œk°Cœk!°KHm!°{œk!°CœkA°KHmA°{œkA°Cœka°KHma°{œka°Cœk°KHm°{œk°Cœk¡°KHm¡°{œk¡°CœkÁ°KHmÁ°{œkÁ°Cœká°KHmá°{œká°Cœk±KHm±{œk±Cœk!±KHm!±{œk!±CœkA±KHmA±{œkA±Cœka±KHma±{œka±Cœk±KHm±{œk±Cœk¡±KHm¡±{œk¡±CœkÁ±KHmÁ±{œkÁ±Cœká±KHmá±{œká±Cœk²KHm²{œk²Cœk!²KHm!²{œk!²CœkA²KHmA²{œkA²Cœka²KHma²{œka²Cœk²KHm²{œk²Cœk¡²KHm¡²{œk¡²CœkÁ²KHmÁ²{œkÁ²Cœká²KHmá²{œká²Cœk³KHm³{œk³Cœk!³KHm!³{œk!³CœkA³KHmA³{œkA³Cœka³KHma³{œka³Cœk³KHm³{œk³Cœk¡³KHm¡³{œk¡³CœkÁ³KHmÁ³{œkÁ³Cœká³KHmá³{œká³Cœk´KHm´{œk´Cœk!´KHm!´{œk!´CœkA´KHmA´{œkA´Cœka´KHma´{œka´Cœk´KHm´{œk´Cœk¡´KHm¡´{œk¡´CœkÁ´KHmÁ´{œkÁ´Cœká´KHmá´{œká´CœkµKHmµ{œkµCœk!µKHm!µ{œk!µCœkAµKHmAµ{œkAµCœkaµKHmaµ{œkaµCœkµKHmµ{œkµCœk¡µKHm¡µ{œk¡µCœkÁµKHmÁµ{œkÁµCœkáµKHmáµ{œkáµCœk¶KHm¶{œk¶Cœk!¶KHm!¶{œk!¶CœkA¶KHmA¶{œkA¶Cœka¶KHma¶{œka¶Cœk¶KHm¶{œk¶Cœk¡¶KHm¡¶{œk¡¶CœkÁ¶KHmÁ¶{œkÁ¶Cœká¶KHmá¶{œká¶Cœk·KHm·{œk·Cœk!·KHm!·{œk!·CœkA·KHmA·{œkA·Cœka·KHma·{œka·Cœk·KHm·{œk·Cœk¡·KHm¡·{œk¡·CœkÁ·KHmÁ·{œkÁ·Cœká·KHmá·{œká·Cœk¸KHm¸{œk¸Cœk!¸KHm!¸{œk!¸CœkA¸KHmA¸{œkA¸Cœka¸KHma¸{œka¸Cœk¸KHm¸{œk¸Cœk¡¸KHm¡¸{œk¡¸CœkÁ¸KHmÁ¸{œkÁ¸Cœká¸KHmá¸{œká¸Cœk¹KHm¹{œk¹Cœk!¹KHm!¹{œk!¹CœkA¹KHmA¹{œkA¹Cœka¹KHma¹{œka¹Cœk¹KHm¹{œk¹Cœk¡¹KHm¡¹{œk¡¹CœkÁ¹KHmÁ¹{œkÁ¹Cœká¹KHmá¹{œká¹CœkºKHmº{œkºCœk!ºKHm!º{œk!ºCœkAºKHmAº{œkAºCœkaºKHmaº{œkaºCœkºKHmº{œkºCœk¡ºKHm¡º{œk¡ºCœkÁºKHmÁº{œkÁºCœkáºKHmáº{œkáºCœk»KHm»{œk»Cœk!»KHm!»{œk!»CœkA»KHmA»{œkA»Cœka»KHma»{œka»Cœk»KHm»{œk»Cœk¡»KHm¡»{œk¡»CœkÁ»KHmÁ»{œkÁ»Cœká»KHmá»{œká»Cœk¼KHm¼{œk¼Cœk!¼KHm!¼{œk!¼CœkA¼KHmA¼{œkA¼Cœka¼KHma¼{œka¼Cœk¼KHm¼{œk¼Cœk¡¼KHm¡¼{œk¡¼CœkÁ¼KHmÁ¼{œkÁ¼Cœká¼KHmá¼{œká¼Cœk½KHm½{œk½Cœk!½KHm!½{œk!½CœkA½KHmA½{œkA½Cœka½KHma½{œka½Cœk½KHm½{œk½Cœk¡½KHm¡½{œk¡½CœkÁ½KHmÁ½{œkÁ½Cœká½KHmá½{œká½Cœk¾KHm¾{œk¾Cœk!¾KHm!¾{œk!¾CœkA¾KHmA¾{œkA¾Cœka¾KHma¾{œka¾Cœk¾KHm¾{œk¾Cœk¡¾KHm¡¾{œk¡¾CœkÁ¾KHmÁ¾{œkÁ¾Cœká¾KHmá¾{œká¾Cœk¿KHm¿{œk¿Cœk!¿KHm!¿{œk!¿CœkA¿KHmA¿{œkA¿Cœka¿KHma¿{œka¿Cœk¿KHm¿{œk¿Cœk¡¿KHm¡¿{œk¡¿CœkÁ¿KHmÁ¿{œkÁ¿Cœká¿KHmá¿{œká¿CœkÀKHmÀ{œkÀCœk!ÀKHm!À{œk!ÀCœkAÀKHmAÀ{œkAÀCœkaÀKHmaÀ{œkaÀCœkÀKHmÀ{œkÀCœk¡ÀKHm¡À{œk¡ÀCœkÁÀKHmÁÀ{œkÁÀCœkáÀKHmáÀ{œkáÀCœkÁKHmÁ{œkÁCœk!ÁKHm!Á{œk!ÁCœkAÁKHmAÁ{œkAÁCœkaÁKHmaÁ{œkaÁCœkÁKHmÁ{œkÁCœk¡ÁKHm¡Á{œk¡ÁCœkÁÁKHmÁÁ{œkÁÁCœkáÁKHmáÁ{œkáÁCœkÂKHmÂ{œkÂCœk!ÂKHm!Â{œk!ÂCœkAÂKHmAÂ{œkAÂCœkaÂKHmaÂ{œkaÂCœkÂKHmÂ{œkÂCœk¡ÂKHm¡Â{œk¡ÂCœkÁÂKHmÁÂ{œkÁÂCœkáÂKHmáÂ{œkáÂCœkÃKHmÃ{œkÃCœk!ÃKHm!Ã{œk!ÃCœkAÃKHmAÃ{œkAÃCœkaÃKHmaÃ{œkaÃCœkÃKHmÃ{œkÃCœk¡ÃKHm¡Ã{œk¡ÃCœkÁÃKHmÁÃ{œkÁÃCœkáÃKHmáÃ{œkáÃCœkÄKHmÄ{œkÄCœk!ÄKHm!Ä{œk!ÄCœkAÄKHmAÄ{œkAÄCœkaÄKHmaÄ{œkaÄCœkÄKHmÄ{œkÄCœk¡ÄKHm¡Ä{œk¡ÄCœkÁÄKHmÁÄ{œkÁÄCœkáÄKHmáÄ{œkáÄCœkÅKHmÅ{œkÅCœk!ÅKHm!Å{œk!ÅCœkAÅKHmAÅ{œkAÅCœkaÅKHmaÅ{œkaÅCœkÅKHmÅ{œkÅCœk¡ÅKHm¡Å{œk¡ÅCœkÁÅKHmÁÅ{œkÁÅCœkáÅKHmáÅ{œkáÅCœkÆKHmÆ{œkÆCœk!ÆKHm!Æ{œk!ÆCœkAÆKHmAÆ{œkAÆCœkaÆKHmaÆ{œkaÆCœkÆKHmÆ{œkÆCœk¡ÆKHm¡Æ{œk¡ÆCœkÁÆKHmÁÆ{œkÁÆCœkáÆKHmáÆ{œkáÆCœkÇKHmÇ{œkÇCœk!ÇKHm!Ç{œk!ÇCœkAÇKHmAÇ{œkAÇCœkaÇKHmaÇ{œkaÇCœkÇKHmÇ{œkÇCœk¡ÇKHm¡Ç{œk¡ÇCœkÁÇKHmÁÇ{œkÁÇCœkáÇKHmáÇ{œkáÇCœkÈKHmÈ{œkÈCœk!ÈKHm!È{œk!ÈCœkAÈKHmAÈ{œkAÈCœkaÈKHmaÈ{œkaÈCœkÈKHmÈ{œkÈCœk¡ÈKHm¡È{œk¡ÈCœkÁÈKHmÁÈ{œkÁÈCœkàÈ“ÎkÉ“Îk@É“Îk`É{œk`ÉCœk€É“!× É“¨IÀÉ“ÎkàÉ{œkàÉCœkÊ{œkÊCœk`Ê{œk€Ê“ׂÀÊ“ØàÊ“ׂË“Îk Ë“Îk@Ë“Îk`˓ؠ˓ØÀË“¤làË“Ø Ì“Ø Ì“!×ÀÌ“Îk@Í{œkÎ{œkÏ{œkÀÏ“´Å @ГåÇ @Ñ{œk`Ñ{œk€Ñ{œk Ñ{œkÀÑ{œk€Ò{œk Ò{œkÀÒ{œkàÒ{œkÓ{œk@Ó{œk@ÓCœk`ÓSkm€Ó{œk€ÓCœk ÓS~mÀÓ{œkÀÓCœkàÓS‹mÔ{œkÔCœk ÔSâ¢@Ô{œk@ÔCœk`ÔSÔ{œk€ÔCœk Ô{œk ÔCœkÀÔ{œkÀÔCœkàÔ{œkÕ{œk Õ{œk@Õ{œk`Õ{œk€Õ{œk Õ{œkÀÕ{œkàÕ{œkàÕCœkÖSkm Ö{œk ÖCœk@ÖS~m`Ö{œk`ÖCœk€ÖS‹m Ö{œk ÖCœkÀÖSâ¢àÖ{œkàÖCœk×Sï¢ ×{œk ×Cœk@×Sü¢`×{œk`×Cœk€×S £ ×{œk ×CœkÀ×S£à×{œkà×CœkØS#£ Ø{œk ØCœk@ØS÷ù`Ø{œk`ØCœk€ØSú Ø{œk ØCœkÀØS3úàØ{œkàØCœkÙSSú Ù{œk ÙCœk@ÙS~ú`Ù{œk`ÙCœk€Ù{œk€ÙCœk Ù{œk ÙCœkàÙ{œkàÙCœkÚ{œkÚCœk Ú{œk ÚCœk@Ú{œk@ÚCœk`Ú{œk`ÚCœk€Ú{œk€ÚCœk Ú{œk ÚCœkÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk ÛCœk@Û{œk@ÛCœk`Û{œk`ÛCœk€Û{œk€ÛCœk Û{œk ÛCœkÀÛ{œkÀÛCœkàÛ{œkàÛCœkÜ{œkÜCœk Ü{œk ÜCœk@Ü{œk@ÜCœk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœkÀÜ{œkÀÜCœkàÜ{œkàÜCœkÝ{œkÝCœk Ý{œk ÝCœk@Ý{œk@ÝCœk`Ý{œk`ÝCœk€Ý{œk€ÝCœk Ý{œk ÝCœkÀÝ{œkÀÝCœkàÝ{œkàÝCœkÞ{œkÞCœk Þ{œk ÞCœk@Þ{œk@ÞCœk`Þ{œk`ÞCœk€Þ{œk€ÞCœk Þ{œk ÞCœkÀÞ{œkÀÞCœkàÞ{œkàÞCœkß{œkßCœk ß{œk ßCœk@ß{œk@ßCœk`ß{œk`ßCœk€ß{œk€ßCœk ß{œk ßCœkÀß{œkÀßCœkàß{œkàßCœkà{œkàCœk à{œk àCœk@à{œk@àCœk`à{œk`àCœk€à{œk€àCœk à{œk àCœkÀà{œkÀàCœkàà{œkààCœká{œkáCœk á{œk áCœk@á{œk@áCœk`á{œk`áCœk€á{œk€áCœk á{œk áCœkÀá{œkÀáCœkàá{œkàáCœkâ{œkâCœk â{œk âCœk@â{œk@âCœk`â{œk`âCœk€â{œk€âCœk â{œk âCœkÀâ{œkÀâCœkàâ{œkàâCœkã{œkãCœk ã{œk ãCœk@ã{œk@ãCœk`ã{œk`ãCœk€ã{œk€ãCœk ã{œk ãCœkÀã{œkÀãCœkàã{œkàãCœkä{œkäCœk ä{œk äCœk@ä{œk@äCœk`ä{œk`äCœk€ä{œk€äCœk ä{œk äCœkÀä{œkÀäCœkàä{œkàäCœkå{œkåCœk å{œk åCœk@å{œk@åCœk`å{œk`åCœk€å{œk€åCœk å{œk åCœkÀå{œkÀåCœkàå{œkàåCœkæ{œkæCœk æ{œk æCœk@æ{œk@æCœk`æ{œk`æCœk€æ{œk€æCœk æ{œk æCœkÀæ{œkÀæCœkàæSkmç{œkçCœk ç{œk çCœk@ç{œk@çCœk`ç{œk`çCœk€ç{œk€çCœk çSkmÀç{œkÀçCœkàç{œkàçCœkè{œkèCœk è{œk èCœk@è{œk@èCœk`è{œk`èCœk€è{œk€èCœk@éSkm`é{œk`éCœk€é{œk€éCœk é{œk éCœkÀé{œkÀéCœkàé{œkàéCœk€ê{œk€êCœk êSkmÀê{œkÀêCœkàêS~më{œkëCœk ëS‹m@ë{œk@ëCœk`ëS⢀ë{œk€ëCœk ëSï¢Àë{œkÀëCœkàëSü¢ì{œkìCœk ìS £@ì{œk@ìCœk`ìS£€ì{œk€ìCœk ì{œk ìCœkÀì{œkÀìCœkàì{œkàìCœkí{œkíCœk í{œk íCœk@í{œk@íCœk`í{œk`íCœk€í{œk€íCœk í{œk íCœkÀí{œkÀíCœkàí{œkàíCœkî{œkîCœk î{œk îCœk@î{œk@îCœk`î{œk`îCœk€î{œk€îCœk î{œk îCœkÀî{œkÀîCœkàî{œkàîCœkï{œkïCœk ï{œk ïCœk@ï{œk@ïCœk`ï{œk`ïCœk€ï{œk€ïCœk ï{œk ïCœkÀï{œkÀïCœkàï{œkàïCœkð{œkðCœk ð{œk ðCœk@ð{œk@ðCœk`ð{œk`ðCœk€ð{œk€ðCœk ð{œk ðCœkÀð{œkÀðCœkàð{œkàðCœkñ{œkñCœk ñ{œk ñCœk@ñ{œk@ñCœk`ñ{œk`ñCœk€ñ{œk€ñCœk ñ{œk ñCœkÀñ{œkÀñCœkàñ{œkàñCœkò{œkòCœk ò{œk òCœk@ò{œk@òCœk`ò{œk`òCœk€ò{œk€òCœk ò{œk òCœkÀò{œkÀòCœkàò{œkàòCœkó{œkóCœk ó{œk óCœk@ó{œk@óCœk`ó{œk`óCœk€ó{œk€óCœk ó{œk óCœkÀó{œkÀóCœkàó{œkàóCœkô{œkôCœk ô{œk ôCœk@ô{œk@ôCœk`ô{œk`ôCœk€ô{œk€ôCœkÀô{œkÀôCœkàôSkmõ{œkõCœk õS~m@õ{œk@õCœk`õ{œk`õCœk€õ{œk€õCœk õ{œk õCœkÀõ{œkÀõCœkàõ{œkàõCœkö{œköCœk ö{œk öCœk@ö{œk@öCœk`ö{œk`öCœk€ö{œk€öCœk÷{œk ÷{œk@÷{œk`÷{œk€÷{œk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœkà Skm {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ Skmà {œkà Cœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  SkmÀ {œkÀ Cœkà {œkà Cœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` CœkÀ Skmà {œkà Cœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ CœkA KHmA {œkA Cœk KHm¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ CœkA KHma KHm KHm¡ KHmÁ KHm {œk Cœk@ {œk@ CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœk KHm {œk Cœk  “!×À “!×à “Q‹á KHmá {œká Cœk KHm {œk Cœk  {œk! KHm! {œk! Cœk@ “ØA KHmA {œkA Cœk` “Ø  “ØÀ “Ø  “1Q@ “1Q` “ׂ€ “ׂ  “ׂ  {œk@ “ׂ` “¤là “1Q “Q‹@ {œk` {œka KHma {œka Cœk€ “ño KHm {œk Cœk  {œk¡ KHm¡ {œk¡ Cœkà “úi¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk  {œk  Cœk@ Skm` {œk` Cœka KHma {œka Cœk€ S~m KHm {œk Cœk  {œk  Cœk¡ KHm¡ {œk¡ CœkÀ {œkÀ Cœkà {œkà Cœk {œk KHm {œk Cœk  {œk! KHm! {œk! Cœk@ {œkA KHmA {œkA Cœk` {œk€ {œk  {œkÀ {œkà {œk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœk KHm {œk Cœk¡ KHm¡ {œk¡ Cœka KHma {œka Cœk KHm {œk CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHmÁ KHmá KHmá {œká Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœk KHm {œk Cœk! KHm! {œk! Cœk¡ KHm¡ {œk¡ Cœk KHm {œk Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk! KHm! {œk! Cœk!! KHm!! {œk!! CœkA! KHmA! {œkA! Cœka! KHma! {œka! Cœk! KHm! {œk! Cœk¡! KHm¡! {œk¡! CœkA" KHmA" {œkA" Cœka" KHma" {œka" Cœk€" {œk€" Cœk" KHm" {œk" Cœk " Skm¡" KHm¡" {œk¡" CœkÀ" {œkÀ" CœkÁ" KHmÁ" {œkÁ" Cœkà" S~m# {œk# Cœk # S‹m!# KHm!# {œk!# Cœk@# {œk@# CœkA# KHmA# {œkA# Cœk`# Sâ¢a# KHma# {œka# Cœk€# {œk€# Cœk# KHm# {œk# Cœk # {œk # Cœk¡# KHm¡# {œk¡# CœkÀ# {œkÀ# Cœkà# {œk$ {œk $ {œk@$ {œk`$ {œk€$ {œk $ {œkÀ$ {œkà$ Skm% {œk% Cœk % {œk % Cœk@% {œk@% Cœk`% {œk`% Cœk€% {œk€% Cœk % {œk % CœkÀ% {œkÀ% Cœkà% {œkà% Cœk& {œk& Cœk & {œk & Cœka& KHma& {œka& Cœk& KHm& {œk& Cœk¡& KHm¡& {œk¡& CœkÀ& SkmÁ& KHmÁ& {œkÁ& Cœkà& {œkà& Cœká& KHmá& {œká& Cœk' {œk' Cœk' KHm' {œk' Cœk ' {œk ' Cœk!' KHm!' {œk!' Cœk@' {œk@' CœkA' KHmA' {œkA' Cœk`' {œk`' Cœka' KHma' {œka' Cœk€' Skm' KHm' {œk' Cœk ' {œk ' Cœk¡' KHm¡' {œk¡' CœkÀ' {œkÀ' CœkÁ' KHmÁ' {œkÁ' Cœkà' {œkà' Cœká' KHmá' {œká' Cœk( {œk( Cœk( KHm( {œk( Cœk ( {œk ( Cœk!( KHm!( {œk!( Cœk@( {œk@( CœkA( KHmA( {œkA( Cœk`( {œk`( Cœka( KHma( {œka( Cœk( KHm( {œk( Cœk¡( KHm¡( {œk¡( CœkÁ( KHmÁ( {œkÁ( Cœká( KHmá( {œká( Cœk) KHm) {œk) Cœk ) {œk!) KHm!) {œk!) Cœk@) {œkA) KHmA) {œkA) Cœk`) {œka) KHma) {œka) Cœk€) {œk) KHm) {œk) Cœk ) {œk¡) KHm¡) {œk¡) CœkÁ) KHmÁ) {œkÁ) Cœká) KHmá) {œká) Cœk* KHm* {œk* Cœk!* KHm!* {œk!* CœkA* KHmA* {œkA* Cœka* KHma* {œka* Cœk* KHm* {œk* Cœk¡* KHm¡* {œk¡* CœkÁ* KHmÁ* {œkÁ* Cœká* KHmá* {œká* Cœk+ Skm+ KHm+ {œk+ Cœk + {œk + Cœk!+ KHm!+ {œk!+ Cœk@+ {œk@+ CœkA+ KHmA+ {œkA+ Cœk`+ {œk`+ Cœka+ KHma+ {œka+ Cœk€+ {œk€+ Cœk+ KHm+ {œk+ Cœk + {œk + Cœk¡+ KHm¡+ {œk¡+ CœkÀ+ {œkÀ+ CœkÁ+ KHmÁ+ {œkÁ+ Cœkà+ {œkà+ Cœká+ KHmá+ {œká+ Cœk , Skm@, {œk@, Cœk`, {œk`, Cœk€, {œk€, Cœk , {œk , CœkÀ, {œkÀ, Cœkà, {œkà, Cœk- {œk- Cœk- KHm- {œk- Cœk - {œk - Cœk!- KHm!- {œk!- Cœk@- {œk@- CœkA- KHmA- {œkA- Cœka- KHma- {œka- Cœk- KHm- {œk- Cœk - Skm¡- KHm¡- {œk¡- CœkÀ- {œkÀ- CœkÁ- KHmÁ- {œkÁ- Cœkà- {œkà- Cœká- KHmá- {œká- Cœk. {œk. Cœk. KHm. {œk. Cœk . {œk . Cœk!. KHm!. {œk!. Cœk@. {œk@. CœkA. KHmA. {œkA. Cœk`. {œk`. Cœka. KHma. {œka. Cœk. KHm. {œk. Cœk¡. KHm¡. {œk¡. CœkÀ. {œkÀ. CœkÁ. KHmÁ. {œkÁ. Cœkà. Skmá. KHmá. {œká. Cœk/ {œk/ Cœk/ KHm/ {œk/ Cœk / S~m!/ KHm!/ {œk!/ Cœk@/ {œk@/ CœkA/ KHmA/ {œkA/ Cœk`/ S‹ma/ KHma/ {œka/ Cœk€/ {œk€/ Cœk/ KHm/ {œk/ Cœk / {œk / Cœk¡/ KHm¡/ {œk¡/ CœkÀ/ {œkÀ/ CœkÁ/ KHmÁ/ {œkÁ/ Cœkà/ {œkà/ Cœká/ KHmá/ {œká/ Cœk0 {œk0 Cœk0 KHm0 {œk0 Cœk 0 {œk 0 Cœk!0 KHm!0 {œk!0 Cœk@0 {œk@0 CœkA0 KHmA0 {œkA0 Cœk`0 {œk`0 Cœk€0 {œk€0 Cœk 0 {œk 0 CœkÀ0 {œkÀ0 CœkÁ0 KHmÁ0 {œkÁ0 Cœkà0 {œkà0 Cœká0 KHmá0 {œká0 Cœk1 {œk1 Cœk1 KHm1 {œk1 Cœk 1 {œk 1 Cœk@1 {œk@1 Cœk`1 {œk`1 Cœka1 KHma1 {œka1 Cœk€1 {œk€1 Cœk1 KHm1 {œk1 Cœk 1 {œk 1 Cœk¡1 KHm¡1 {œk¡1 CœkÀ1 {œkÀ1 CœkÁ1 KHmÁ1 {œkÁ1 Cœkà1 Skm2 {œk2 Cœk 2 {œk 2 Cœk@2 {œk@2 CœkA2 KHmA2 {œkA2 Cœk`2 {œk`2 Cœka2 KHma2 {œka2 Cœk€2 {œk€2 Cœk 2 {œk 2 CœkÀ2 Skmà2 {œkà2 Cœká2 KHmá2 {œká2 Cœk3 {œk3 Cœk3 KHm3 {œk3 Cœk 3 {œk 3 Cœk!3 KHm!3 {œk!3 Cœk@3 {œk@3 CœkA3 KHmA3 {œkA3 Cœk`3 {œk`3 Cœka3 KHma3 {œka3 CœkÀ3 SkmÁ3 KHmÁ3 {œkÁ3 Cœkà3 {œkà3 Cœká3 KHmá3 {œká3 Cœk4 {œk4 Cœk4 KHm4 {œk4 Cœk 4 {œk 4 Cœk!4 KHm!4 {œk!4 Cœk@4 {œk@4 Cœk`4 {œk`4 Cœk€4 {œk€4 Cœk4 KHm4 {œk4 Cœk 4 {œk 4 Cœk¡4 KHm¡4 {œk¡4 CœkÀ4 {œkÀ4 CœkÁ4 KHmÁ4 {œkÁ4 Cœká4 KHmá4 {œká4 CœkA5 KHmA5 {œkA5 Cœka5 KHma5 {œka5 Cœk5 KHm5 {œk5 Cœk¡5 KHm¡5 {œk¡5 Cœkà5 Skm6 {œk6 Cœk6 KHm6 {œk6 Cœk 6 {œk 6 Cœk!6 KHm!6 {œk!6 Cœk@6 {œk@6 CœkA6 KHmA6 {œkA6 Cœk`6 {œk`6 Cœka6 KHma6 {œka6 Cœk€6 {œk€6 Cœk6 KHm6 {œk6 Cœk 6 {œk 6 Cœk¡6 KHm¡6 {œk¡6 CœkÀ6 {œkÀ6 CœkÁ6 KHmÁ6 {œkÁ6 Cœkà6 {œkà6 Cœká6 KHmá6 {œká6 Cœk7 {œk7 Cœk 7 {œk 7 Cœk@7 {œk@7 Cœk`7 {œk`7 Cœk€7 {œk€7 Cœk 7 {œk 7 Cœk¡7 KHm¡7 {œk¡7 CœkÀ7 {œkÀ7 CœkÁ7 KHmÁ7 {œkÁ7 Cœká7 KHmá7 {œká7 Cœka8 KHma8 {œka8 Cœk8 KHm8 {œk8 Cœk¡8 KHm¡8 {œk¡8 CœkÁ8 KHmÁ8 {œkÁ8 CœkA9 KHmA9 {œkA9 Cœka9 KHma9 {œka9 Cœk9 KHm9 {œk9 Cœk; KHm; {œk; Cœk!; KHm!; {œk!; CœkA; KHmA; {œkA; Cœka; KHma; {œka; Cœk; KHm; {œk; Cœk¡; KHm¡; {œk¡; CœkÁ; KHmÁ; {œkÁ; Cœká; KHmá; {œká; Cœk< KHm< {œk< Cœk!< KHm!< {œk!< CœkA< KHmA< {œkA< Cœka< KHma< {œka< Cœk< KHm< {œk< Cœk¡< KHm¡< {œk¡< CœkÁ< KHmÁ< {œkÁ< Cœká< KHmá< {œká< Cœk= KHm= {œk= Cœk!= KHm!= {œk!= CœkA= KHmA= {œkA= Cœka= KHma= {œka= Cœk= KHm= {œk= Cœk¡= KHm¡= {œk¡= CœkÁ= KHmÁ= {œkÁ= Cœká= KHmá= {œká= Cœk> KHm> {œk> Cœk!> KHm!> {œk!> CœkA> KHmA> {œkA> Cœka> KHma> {œka> Cœk> KHm> {œk> Cœk¡> KHm¡> {œk¡> CœkÁ> KHmÁ> {œkÁ> Cœká> KHmá> {œká> Cœk? KHm? {œk? Cœk!? KHm!? {œk!? CœkA? KHmA? {œkA? Cœka? KHma? {œka? Cœk? KHm? {œk? Cœk¡? KHm¡? {œk¡? CœkÁ? KHmÁ? {œkÁ? CœkÁA KHmÁA {œkÁA CœkáA KHmáA {œkáA CœkB KHmB {œkB Cœk!B KHm!B {œk!B CœkAB KHmAB {œkAB CœkaB KHmaB {œkaB CœkB KHmB {œkB Cœk¡B KHm¡B {œk¡B CœkÁB KHmÁB {œkÁB CœkáB KHmáB {œkáB CœkC KHmC {œkC Cœk!C KHm!C {œk!C CœkAC KHmAC {œkAC CœkaC KHmaC {œkaC CœkC KHmC {œkC Cœk¡C KHm¡C {œk¡C CœkÁC KHmÁC {œkÁC CœkáC KHmáC {œkáC CœkD KHmD {œkD Cœk!D KHm!D {œk!D CœkAD KHmAD {œkAD CœkaD KHmaD {œkaD CœkD KHmD {œkD Cœk¡D KHm¡D {œk¡D CœkÁD KHmÁD {œkÁD CœkáD KHmáD {œkáD CœkE KHmE {œkE Cœk!E KHm!E {œk!E CœkAE KHmAE {œkAE CœkaE KHmaE {œkaE CœkE KHmE {œkE Cœk¡E KHm¡E {œk¡E CœkÁE KHmÁE {œkÁE CœkáE KHmáE {œkáE CœkF KHmF {œkF Cœk!F KHm!F {œk!F CœkAF KHmAF {œkAF Cœk`F {œkaF KHmaF {œkaF Cœk€F {œkF KHmF {œkF Cœk F “ׂ¡F KHm¡F {œk¡F CœkÀF {œkÁF KHmÁF {œkÁF CœkáF KHmáF {œkáF CœkG KHmG {œkG Cœk!G KHm!G {œk!G Cœk@G {œkAG KHmAG {œkAG Cœk`G {œkaG KHmaG {œkaG Cœk€G {œkG KHmG {œkG Cœk G {œk¡G KHm¡G {œk¡G CœkÀG {œkÁG KHmÁG {œkÁG CœkàG {œkáG KHmáG {œkáG CœkH {œkH KHmH {œkH Cœk H {œk!H KHm!H {œk!H Cœk@H {œkAH KHmAH {œkAH CœkaH KHmaH {œkaH CœkH KHmH {œkH Cœk¡H KHm¡H {œk¡H CœkÁH KHmÁH {œkÁH CœkáH KHmáH {œkáH CœkI KHmI {œkI Cœk!I KHm!I {œk!I Cœk@I “Å]`I {œk€I “w7  I “w7 €N {œk€N Cœk N {œk N Cœk@P {œk@P Cœk`P {œk`P CœkaP KHmaP {œkaP CœkP KHmP {œkP Cœk¡P KHm¡P {œk¡P CœkÁP KHmÁP {œkÁP CœkáP KHmáP {œkáP CœkQ KHmQ {œkQ Cœk!Q KHm!Q {œk!Q CœkAQ KHmAQ {œkAQ CœkaQ KHmaQ {œkaQ CœkQ KHmQ {œkQ Cœk¡Q KHm¡Q {œk¡Q CœkÁQ KHmÁQ {œkÁQ CœkáQ KHmáQ {œkáQ CœkR KHmR {œkR Cœk!R KHm!R {œk!R CœkAR KHmAR {œkAR CœkaR KHmaR {œkaR CœkR KHmR {œkR Cœk¡R KHm¡R {œk¡R CœkÁR KHmÁR {œkÁR CœkáR KHmáR {œkáR CœkS KHmS {œkS Cœk!S KHm!S {œk!S CœkAS KHmAS {œkAS CœkaS KHmaS {œkaS CœkS KHmS {œkS Cœk¡S KHm¡S {œk¡S CœkÁS KHmÁS {œkÁS CœkáS KHmáS {œkáS CœkT KHmT {œkT Cœk!T KHm!T {œk!T CœkAT KHmAT {œkAT CœkaT KHmaT {œkaT CœkT KHmT {œkT Cœk¡T KHm¡T {œk¡T CœkÁT KHmÁT {œkÁT CœkáT KHmáT {œkáT CœkU KHmU {œkU Cœk!U KHm!U {œk!U CœkAU KHmAU {œkAU CœkaU KHmaU {œkaU CœkU KHmU {œkU Cœk¡U KHm¡U {œk¡U CœkÁU KHmÁU {œkÁU CœkáU KHmáU {œkáU CœkV KHmV {œkV Cœk!V KHm!V {œk!V CœkAV KHmAV {œkAV CœkaV KHmaV {œkaV CœkV KHmV {œkV Cœk¡V KHm¡V {œk¡V CœkÁV KHmÁV {œkÁV CœkáV KHmáV {œkáV CœkW KHmW {œkW Cœk!W KHm!W {œk!W CœkAW KHmAW {œkAW CœkaW KHmaW {œkaW CœkW KHmW {œkW Cœk¡W KHm¡W {œk¡W CœkÁW KHmÁW {œkÁW CœkáW KHmáW {œkáW CœkX KHmX {œkX Cœk!X KHm!X {œk!X CœkAX KHmAX {œkAX CœkaX KHmaX {œkaX CœkX KHmX {œkX Cœk¡X KHm¡X {œk¡X CœkÁX KHmÁX {œkÁX CœkáX KHmáX {œkáX CœkY KHmY {œkY Cœk!Y KHm!Y {œk!Y CœkAY KHmAY {œkAY CœkaY KHmaY {œkaY CœkY KHmY {œkY Cœk¡Y KHm¡Y {œk¡Y CœkÁY KHmÁY {œkÁY CœkáY KHmáY {œkáY CœkZ KHmZ {œkZ Cœk!Z KHm!Z {œk!Z CœkAZ KHmAZ {œkAZ CœkaZ KHmaZ {œkaZ CœkZ KHmZ {œkZ Cœk¡Z KHm¡Z {œk¡Z CœkÁZ KHmÁZ {œkÁZ CœkáZ KHmáZ {œkáZ Cœk[ KHm[ {œk[ Cœk![ KHm![ {œk![ CœkA[ KHmA[ {œkA[ Cœka[ KHma[ {œka[ Cœk[ KHm[ {œk[ Cœk¡[ KHm¡[ {œk¡[ CœkÁ[ KHmÁ[ {œkÁ[ Cœká[ KHmá[ {œká[ Cœk\ KHm\ {œk\ Cœk!\ KHm!\ {œk!\ CœkA\ KHmA\ {œkA\ Cœka\ KHma\ {œka\ Cœk\ KHm\ {œk\ Cœk¡\ KHm¡\ {œk¡\ CœkÁ\ KHmÁ\ {œkÁ\ Cœká\ KHmá\ {œká\ Cœk] KHm] {œk] Cœk!] KHm!] {œk!] CœkA] KHmA] {œkA] Cœka] KHma] {œka] Cœk] KHm] {œk] Cœk¡] KHm¡] {œk¡] CœkÁ] KHmÁ] {œkÁ] Cœká] KHmá] {œká] Cœk^ KHm^ {œk^ Cœk!^ KHm!^ {œk!^ CœkA^ KHmA^ {œkA^ Cœka^ KHma^ {œka^ Cœk^ KHm^ {œk^ Cœk ^ {œk ^ Cœk¡^ KHm¡^ {œk¡^ CœkÀ^ {œkÀ^ CœkÁ^ KHmÁ^ {œkÁ^ Cœká^ KHmá^ {œká^ Cœk_ KHm_ {œk_ Cœk!_ KHm!_ {œk!_ CœkA_ KHmA_ {œkA_ Cœka_ KHma_ {œka_ Cœk_ KHm_ {œk_ Cœk¡_ KHm¡_ {œk¡_ CœkÁ_ KHmÁ_ {œkÁ_ Cœká_ KHmá_ {œká_ Cœk` KHm` {œk` Cœk!` KHm!` {œk!` CœkA` KHmA` {œkA` Cœka` KHma` {œka` Cœk` KHm` {œk` Cœk¡` KHm¡` {œk¡` CœkÁ` KHmÁ` {œkÁ` Cœká` KHmá` {œká` Cœka KHma {œka Cœk!a KHm!a {œk!a CœkAa KHmAa {œkAa Cœkaa KHmaa {œkaa Cœka KHma {œka Cœk a {œk a Cœk¡a KHm¡a {œk¡a CœkÀa {œkÀa CœkÁa KHmÁa {œkÁa Cœkáa KHmáa {œkáa Cœkb KHmb {œkb Cœk!b KHm!b {œk!b CœkAb KHmAb {œkAb Cœkab KHmab {œkab Cœkb KHmb {œkb Cœk¡b KHm¡b {œk¡b CœkÁb KHmÁb {œkÁb Cœkáb KHmáb {œkáb Cœkc KHmc {œkc Cœk!c KHm!c {œk!c CœkAc KHmAc {œkAc Cœkac KHmac {œkac Cœkc KHmc {œkc Cœk¡c KHm¡c {œk¡c CœkÁc KHmÁc {œkÁc Cœkác KHmác {œkác Cœkd KHmd {œkd Cœk!d KHm!d {œk!d CœkAd KHmAd {œkAd Cœkad KHmad {œkad Cœkd KHmd {œkd Cœk¡d KHm¡d {œk¡d CœkÁd KHmÁd {œkÁd Cœkàd {œkàd Cœkád KHmád {œkád Cœke {œke Cœke KHme {œke Cœk!e KHm!e {œk!e CœkAe KHmAe {œkAe Cœkae KHmae {œkae Cœke KHme {œke Cœk¡e KHm¡e {œk¡e CœkÁe KHmÁe {œkÁe Cœkàe “Øáe KHmáe {œkáe Cœkf “!×f KHmf {œkf Cœk f “Îk!f KHm!f {œk!f Cœk@f “¤lAf KHmAf {œkAf Cœk`f “¤laf KHmaf {œkaf Cœk€f “Øf KHmf {œkf Cœk f “Eµ¡f KHm¡f {œk¡f CœkÀf “ÎkÁf KHmÁf {œkÁf Cœkàf “Øáf KHmáf {œkáf Cœkg “¤lg KHmg {œkg Cœk g “¤l!g KHm!g {œk!g Cœk@g “ÎkAg KHmAg {œkAg Cœk`g “Îkag KHmag {œkag Cœk€g “¤lg KHmg {œkg Cœk g “¤l¡g KHm¡g {œk¡g CœkÀg “¤lÁg KHmÁg {œkÁg Cœkág KHmág {œkág Cœkh KHmh {œkh Cœk h {œk!h KHm!h {œk!h CœkAh KHmAh {œkAh Cœk`h {œkah KHmah {œkah Cœk€h “|h KHmh {œkh Cœk¡h KHm¡h {œk¡h CœkÀh “ׂÁh KHmÁh {œkÁh Cœkáh KHmáh {œkáh Cœki KHmi {œki Cœk!i KHm!i {œk!i CœkAi KHmAi {œkAi Cœkai KHmai {œkai Cœki KHmi {œki Cœk¡i KHm¡i {œk¡i CœkÁi KHmÁi {œkÁi Cœkái KHmái {œkái Cœkj KHmj {œkj Cœk!j KHm!j {œk!j CœkAj KHmAj {œkAj Cœkaj KHmaj {œkaj Cœkj KHmj {œkj Cœk¡j KHm¡j {œk¡j CœkÁj KHmÁj {œkÁj Cœkáj KHmáj {œkáj Cœkk KHmk {œkk Cœk!k KHm!k {œk!k CœkAk KHmAk {œkAk Cœkak KHmak {œkak Cœkk KHmk {œkk Cœk¡k KHm¡k {œk¡k CœkÁk KHmÁk {œkÁk Cœkák KHmák {œkák Cœkl KHml {œkl Cœk!l KHm!l {œk!l CœkAl KHmAl {œkAl Cœkal KHmal {œkal Cœkl KHml {œkl Cœk¡l KHm¡l {œk¡l CœkÁl KHmÁl {œkÁl Cœkál KHmál {œkál Cœkm KHmm {œkm Cœk!m KHm!m {œk!m CœkAm KHmAm {œkAm Cœkam KHmam {œkam Cœkm KHmm {œkm Cœk¡m KHm¡m {œk¡m CœkÁm KHmÁm {œkÁm Cœkám KHmám {œkám Cœkn KHmn {œkn Cœk!n KHm!n {œk!n CœkAn KHmAn {œkAn Cœkan KHman {œkan Cœkn KHmn {œkn Cœk¡n KHm¡n {œk¡n CœkÁn KHmÁn {œkÁn Cœkán KHmán {œkán Cœko KHmo {œko Cœk!o KHm!o {œk!o CœkAo KHmAo {œkAo Cœkao KHmao {œkao Cœko KHmo {œko Cœk¡o KHm¡o {œk¡o CœkÁo KHmÁo {œkÁo Cœkáo KHmáo {œkáo Cœkp KHmp {œkp Cœk!p KHm!p {œk!p CœkAp KHmAp {œkAp Cœkap KHmap {œkap Cœkp KHmp {œkp Cœk¡p KHm¡p {œk¡p CœkÁp KHmÁp {œkÁp Cœkáp KHmáp {œkáp Cœkq KHmq {œkq Cœk!q KHm!q {œk!q CœkAq KHmAq {œkAq Cœkaq KHmaq {œkaq Cœkq KHmq {œkq Cœk q {œk q Cœk¡q KHm¡q {œk¡q CœkÀq {œkÀq CœkÁq KHmÁq {œkÁq Cœkáq KHmáq {œkáq Cœkr KHmr {œkr Cœk!r KHm!r {œk!r CœkAr KHmAr {œkAr Cœkar KHmar {œkar Cœkr KHmr {œkr Cœk¡r KHm¡r {œk¡r CœkÁr KHmÁr {œkÁr Cœkár KHmár {œkár Cœks KHms {œks Cœk!s KHm!s {œk!s Cœk¡s KHm¡s {œk¡s CœkÁs KHmÁs {œkÁs Cœkás KHmás {œkás Cœkt KHmt {œkt Cœk!t KHm!t {œk!t CœkAt KHmAt {œkAt Cœkat KHmat {œkat Cœkt KHmt {œkt Cœk¡t KHm¡t {œk¡t CœkÁt KHmÁt {œkÁt Cœkát KHmát {œkát Cœku KHmu {œku Cœk u {œk u Cœk!u KHm!u {œk!u Cœk@u {œk@u CœkAu KHmAu {œkAu Cœkau KHmau {œkau CœkÁu KHmÁu {œkÁu Cœkàu {œkàu Cœkáu KHmáu {œkáu Cœkv {œkv Cœkv KHmv {œkv Cœk!v KHm!v {œk!v Cœkv KHmv {œkv Cœk¡v KHm¡v {œk¡v CœkÁv KHmÁv {œkÁv Cœkáv KHmáv {œkáv Cœkw KHmw {œkw Cœk w {œk w Cœk!w KHm!w {œk!w Cœk@w {œk@w CœkAw KHmAw {œkAw Cœk¡w KHm¡w {œk¡w CœkÁw KHmÁw {œkÁw Cœkáw KHmáw {œkáw Cœkx KHmx {œkx Cœk!x KHm!x {œk!x CœkAx KHmAx {œkAx Cœkax KHmax {œkax Cœkx KHmx {œkx Cœkày {œkày Cœkz {œkz Cœk z {œk z CœkÀz {œkÀz Cœk{ KHm{ {œk{ Cœk!{ KHm!{ {œk!{ CœkA{ KHmA{ {œkA{ Cœka{ KHma{ {œka{ Cœk{ KHm{ {œk{ Cœk¡{ KHm¡{ {œk¡{ CœkÁ{ KHmÁ{ {œkÁ{ Cœká{ KHmá{ {œká{ Cœk| KHm| {œk| Cœk!| KHm!| {œk!| CœkA| KHmA| {œkA| Cœka| KHma| {œka| Cœk€| “Ø| KHm| {œk| Cœk | “Ø¡| KHm¡| {œk¡| CœkÁ| KHmÁ| {œkÁ| Cœkà| “Øá| KHmá| {œká| Cœk} “ׂ} KHm} {œk} Cœk } “ׂ } {œk!} KHm!} {œk!} Cœk@} “ׂ@} {œkA} KHmA} {œkA} Cœk`} “Ø`} {œka} KHma} {œka} Cœk€} “ׂ€} {œk} KHm} {œk} Cœk } “ׂ } {œk¡} KHm¡} {œk¡} CœkÀ} “ׂÀ} {œkÁ} KHmÁ} {œkÁ} Cœkà} “Øà} {œká} KHmá} {œká} Cœk~ “Ø~ {œk~ KHm~ {œk~ Cœk ~ “âj ~ {œk!~ KHm!~ {œk!~ Cœk@~ “Q‹@~ {œkA~ KHmA~ {œkA~ Cœk`~ “!×`~ {œka~ KHma~ {œka~ Cœk€~ “!×€~ {œk~ KHm~ {œk~ Cœk ~ “úi ~ {œk¡~ KHm¡~ {œk¡~ CœkÀ~ “ׂÀ~ {œkÁ~ KHmÁ~ {œkÁ~ Cœkà~ “!×à~ {œká~ KHmá~ {œká~ Cœk “ׂ {œk KHm {œk Cœk  “Ø  {œk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk€ KHm€ {œk€ Cœk!€ KHm!€ {œk!€ CœkA€ KHmA€ {œkA€ Cœka€ KHma€ {œka€ Cœk€ KHm€ {œk€ Cœk¡€ KHm¡€ {œk¡€ CœkÁ€ KHmÁ€ {œkÁ€ CœkဠKHmဠ{œkဠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk‚ KHm‚ {œk‚ Cœk!‚ KHm!‚ {œk!‚ CœkA‚ KHmA‚ {œkA‚ Cœka‚ KHma‚ {œka‚ Cœk‚ KHm‚ {œk‚ Cœk¡‚ KHm¡‚ {œk¡‚ CœkÁ‚ KHmÁ‚ {œkÁ‚ Cœká‚ KHmá‚ {œká‚ Cœkƒ KHmƒ {œkƒ Cœk!ƒ KHm!ƒ {œk!ƒ CœkAƒ KHmAƒ {œkAƒ Cœkaƒ KHmaƒ {œkaƒ Cœkƒ KHmƒ {œkƒ Cœk¡ƒ KHm¡ƒ {œk¡ƒ CœkÁƒ KHmÁƒ {œkÁƒ CœkრKHmრ{œkრCœk„ KHm„ {œk„ Cœk!„ KHm!„ {œk!„ CœkA„ KHmA„ {œkA„ Cœka„ KHma„ {œka„ Cœk„ KHm„ {œk„ Cœk¡„ KHm¡„ {œk¡„ CœkÁ„ KHmá„ KHm… KHm!… KHmA… KHma… KHma… {œka… Cœk… KHm… {œk… Cœk¡… KHm¡… {œk¡… CœkÁ… KHmÁ… {œkÁ… Cœká… KHmá… {œká… Cœk† KHm† {œk† Cœk!† KHm!† {œk!† CœkA† KHmA† {œkA† Cœka† KHma† {œka† Cœk† KHm† {œk† Cœk¡† KHm¡† {œk¡† CœkÁ† KHmÁ† {œkÁ† CœkᆠKHmᆠ{œkᆠCœk‡ KHm‡ {œk‡ Cœk!‡ KHm!‡ {œk!‡ CœkA‡ KHmA‡ {œkA‡ Cœka‡ KHma‡ {œka‡ Cœk‡ KHm‡ {œk‡ Cœk¡‡ KHmÁ‡ KHmᇠKHmˆ KHm!ˆ KHmAˆ KHmAˆ {œkAˆ Cœkaˆ KHmaˆ {œkaˆ Cœkˆ KHmˆ {œkˆ Cœk¡ˆ KHm¡ˆ {œk¡ˆ CœkÁˆ KHmÁˆ {œkÁˆ CœkሠKHmሠ{œkሠCœk‰ KHm‰ {œk‰ CœkበKHmበ{œkበCœk¡Š KHm¡Š {œk¡Š CœkÁŠ KHmÁŠ {œkÁŠ CœkአKHmአ{œkአCœk‹ KHm‹ {œk‹ Cœk!‹ KHm!‹ {œk!‹ CœkA‹ KHmA‹ {œkA‹ Cœka‹ KHma‹ {œka‹ Cœk‹ KHm‹ {œk‹ Cœk¡‹ KHm¡‹ {œk¡‹ CœkÁ‹ KHmÁ‹ {œkÁ‹ Cœká‹ KHmá‹ {œká‹ CœkŒ KHmŒ {œkŒ Cœk!Œ KHm!Œ {œk!Œ CœkAŒ KHmAŒ {œkAŒ CœkaŒ KHmaŒ {œkaŒ CœkŒ KHmŒ {œkŒ Cœk¡Œ KHm¡Œ {œk¡Œ CœkÁŒ KHmÁŒ {œkÁŒ CœkጠKHmጠ{œkጠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk‘ KHm‘ {œk‘ Cœk!‘ KHm!‘ {œk!‘ CœkA‘ KHmA‘ {œkA‘ Cœka‘ KHma‘ {œka‘ Cœk‘ KHm‘ {œk‘ Cœk¡‘ KHm¡‘ {œk¡‘ CœkÁ‘ KHmÁ‘ {œkÁ‘ Cœká‘ KHmá‘ {œká‘ Cœk’ KHm’ {œk’ Cœk!’ KHm!’ {œk!’ CœkA’ KHmA’ {œkA’ Cœka’ KHma’ {œka’ Cœk’ KHm’ {œk’ Cœk¡’ KHm¡’ {œk¡’ CœkÁ’ KHmÁ’ {œkÁ’ Cœká’ KHmá’ {œká’ Cœk“ KHm“ {œk“ Cœk!“ KHm!“ {œk!“ CœkA“ KHmA“ {œkA“ Cœka“ KHma“ {œka“ Cœk“ KHm“ {œk“ Cœk¡“ KHm¡“ {œk¡“ CœkÁ“ KHmÁ“ {œkÁ“ Cœká“ KHmá“ {œká“ Cœk” KHm” {œk” Cœk!” KHm!” {œk!” CœkA” KHmA” {œkA” Cœka” KHma” {œka” Cœk” KHm” {œk” Cœk¡” KHm¡” {œk¡” CœkÁ” KHmÁ” {œkÁ” Cœká” KHmá” {œká” Cœk• KHm• {œk• Cœk!• KHm!• {œk!• CœkA• KHmA• {œkA• Cœka• KHma• {œka• Cœk• KHm• {œk• Cœk¡• KHm¡• {œk¡• Cœk– KHm– {œk– Cœk!– KHm!– {œk!– CœkA– KHmA– {œkA– Cœka– KHma– {œka– CœkÁ– KHmÁ– {œkÁ– Cœká– KHmá– {œká– Cœk— KHm— {œk— Cœk!— KHm!— {œk!— CœkA— KHmA— {œkA— Cœka— KHma— {œka— Cœk— KHm— {œk— Cœk¡— KHm¡— {œk¡— CœkÁ— KHmÁ— {œkÁ— Cœká— KHmá— {œká— Cœk˜ KHm˜ {œk˜ Cœk!˜ KHm!˜ {œk!˜ CœkA˜ KHmA˜ {œkA˜ Cœka˜ KHma˜ {œka˜ Cœk˜ KHm˜ {œk˜ Cœk¡˜ KHm¡˜ {œk¡˜ CœkÁ˜ KHmÁ˜ {œkÁ˜ CœkᘠKHmᘠ{œkᘠCœk™ KHm™ {œk™ Cœk!™ KHm!™ {œk!™ CœkA™ KHmA™ {œkA™ Cœka™ KHma™ {œka™ Cœk™ KHm™ {œk™ Cœk¡™ KHm¡™ {œk¡™ CœkÁ™ KHmÁ™ {œkÁ™ Cœká™ KHmá™ {œká™ Cœkš KHmš {œkš Cœk!š KHm!š {œk!š CœkAš KHmAš {œkAš Cœkaš KHmaš {œkaš Cœkš KHmš {œkš Cœk¡š KHm¡š {œk¡š CœkÁš KHmÁš {œkÁš Cœkáš KHmáš {œkáš Cœk› KHm› {œk› Cœk!› KHm!› {œk!› CœkA› KHmA› {œkA› Cœka› KHma› {œka› Cœk› KHm› {œk› Cœk¡› KHm¡› {œk¡› CœkÁ› KHmÁ› {œkÁ› Cœká› KHmá› {œká› Cœkœ KHmœ {œkœ Cœk!œ KHm!œ {œk!œ CœkAœ KHmAœ {œkAœ Cœkaœ KHmaœ {œkaœ Cœkœ KHmœ {œkœ Cœk¡œ KHm¡œ {œk¡œ CœkÁœ KHmÁœ {œkÁœ CœkᜠKHmᜠ{œkᜠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœká KHmá {œká Cœkž KHmž {œkž Cœk!ž KHm!ž {œk!ž CœkAž KHmAž {œkAž Cœkaž KHmaž {œkaž Cœkž KHmž {œkž Cœk¡ž KHm¡ž {œk¡ž CœkÁž KHmÁž {œkÁž Cœkáž KHmáž {œkáž CœkŸ KHmŸ {œkŸ Cœk!Ÿ KHm!Ÿ {œk!Ÿ CœkAŸ KHmAŸ {œkAŸ CœkÁ  KHmÁ  {œkÁ  Cœká  KHmá  {œká  Cœk¡ KHm¡ {œk¡ Cœk!¡ KHm!¡ {œk!¡ CœkA¡ KHmA¡ {œkA¡ Cœka¡ KHma¡ {œka¡ Cœk¡ KHm¡ {œk¡ Cœk¡¡ KHm¡¡ {œk¡¡ CœkÁ¡ KHmÁ¡ {œkÁ¡ Cœká¡ KHmá¡ {œká¡ Cœk¢ KHm¢ {œk¢ Cœk!¢ KHm!¢ {œk!¢ CœkA¢ KHmA¢ {œkA¢ Cœka¢ KHma¢ {œka¢ Cœk¢ KHm¢ {œk¢ Cœk¡¢ KHm¡¢ {œk¡¢ CœkÁ¢ KHmÁ¢ {œkÁ¢ CœkᢠKHmᢠ{œkᢠCœk£ KHm£ {œk£ Cœk!£ KHm!£ {œk!£ CœkA£ KHmA£ {œkA£ Cœka£ KHma£ {œka£ Cœk£ KHm£ {œk£ Cœk¡£ KHm¡£ {œk¡£ CœkÁ£ KHmÁ£ {œkÁ£ CœkᣠKHmᣠ{œkᣠCœk¤ KHm¤ {œk¤ Cœk!¤ KHm!¤ {œk!¤ CœkA¤ KHmA¤ {œkA¤ Cœka¤ KHma¤ {œka¤ Cœk¤ KHm¤ {œk¤ Cœk¡¤ KHm¡¤ {œk¡¤ CœkÁ¤ KHmÁ¤ {œkÁ¤ CœkᤠKHmᤠ{œkᤠCœk¥ KHm¥ {œk¥ Cœk!¥ KHm!¥ {œk!¥ CœkA¥ KHmA¥ {œkA¥ Cœka¥ KHma¥ {œka¥ Cœk¥ KHm¥ {œk¥ Cœk¡¥ KHm¡¥ {œk¡¥ CœkÁ¥ KHmÁ¥ {œkÁ¥ CœkᥠKHmᥠ{œkᥠCœk¦ KHm¦ {œk¦ Cœk!¦ KHm!¦ {œk!¦ CœkA¦ KHmA¦ {œkA¦ Cœka¦ KHma¦ {œka¦ Cœk¦ KHm¦ {œk¦ Cœk¡¦ KHm¡¦ {œk¡¦ CœkÁ¦ KHmÁ¦ {œkÁ¦ CœkᦠKHmᦠ{œkᦠCœk§ KHm§ {œk§ Cœk!§ KHm!§ {œk!§ CœkA§ KHmA§ {œkA§ Cœka§ KHma§ {œka§ Cœk § “Îkà§ “Îk€¨ “Îk ¨ “ÎkÀ¨ “ÎkÁ¨ KHmÁ¨ {œkÁ¨ Cœkਠ“ÎkᨠKHmᨠ{œkᨠCœk© “Îk© KHm© {œk© Cœk © “Îk!© KHm!© {œk!© Cœk@© “ÎkA© KHmA© {œkA© Cœk`© “Îka© KHma© {œka© Cœk€© “Îk© KHm© {œk© Cœk © “¤l¡© KHm¡© {œk¡© CœkÁ© KHmÁ© {œkÁ© Cœkà© “Îká© KHmá© {œká© Cœkª “Îkª KHmª {œkª Cœk ª “ׂ!ª KHm!ª {œk!ª Cœk@ª “ׂAª KHmAª {œkAª Cœk`ª “ׂaª KHmaª {œkaª Cœk€ª “¤lª KHmª {œkª Cœk ª “¤l¡ª KHm¡ª {œk¡ª CœkÀª “ØÁª KHmÁª {œkÁª Cœkઠ“¤l᪠KHm᪠{œk᪠Cœk« “Ø« KHm« {œk« Cœk « “Q‹!« KHm!« {œk!« Cœk@« “ØA« KHmA« {œkA« Cœk`« “Øa« KHma« {œka« Cœk€« “Îk« KHm« {œk« Cœk « “¤l¡« KHm¡« {œk¡« CœkÀ« “¤lÁ« KHmÁ« {œkÁ« Cœkà« “¤lá« KHmá« {œká« Cœk¬ “ׂ¬ KHm¬ {œk¬ Cœk ¬ “Ø!¬ KHm!¬ {œk!¬ Cœk@¬ “{ A¬ KHmA¬ {œkA¬ Cœk`¬ “Øa¬ KHma¬ {œka¬ Cœk€¬ “V| ¬ KHm¬ {œk¬ Cœk ¬ “Ø¡¬ KHm¡¬ {œk¡¬ CœkÀ¬ “V| Á¬ KHmÁ¬ {œkÁ¬ Cœkଠ“ØᬠKHmᬠ{œkᬠCœk­ “{ ­ KHm­ {œk­ Cœk ­ “Ø!­ KHm!­ {œk!­ Cœk@­ “V| A­ KHmA­ {œkA­ Cœk`­ “ׂa­ KHma­ {œka­ Cœk€­ “ׂ ­ “ׂà­ “Îk® “Îk ® “Îk@® “Îk€® {œk® KHm® {œk® Cœk ® “ׂ¡® KHm¡® {œk¡® CœkÀ® {œkÁ® KHmÁ® {œkÁ® Cœkà® “Îká® KHmá® {œká® Cœk¯ “Îk¯ KHm¯ {œk¯ Cœk ¯ “Îk!¯ KHm!¯ {œk!¯ CœkA¯ KHmA¯ {œkA¯ Cœka¯ KHma¯ {œka¯ Cœk¯ KHm¯ {œk¯ Cœk¡¯ KHm¡¯ {œk¡¯ CœkÁ¯ KHmÁ¯ {œkÁ¯ Cœk௠“úiᯠKHmᯠ{œkᯠCœk° “Îk° KHm° {œk° Cœk ° “Îk!° KHm!° {œk!° Cœk@° “ÎkA° KHmA° {œkA° Cœk`° “Îka° KHma° {œka° Cœk€° {œk° KHm° {œk° Cœk¡° KHm¡° {œk¡° CœkÀ° “ÎkÁ° KHmÁ° {œkÁ° Cœkà° {œká° KHmá° {œká° Cœk± KHm± {œk± Cœk ± “Îk!± KHm!± {œk!± Cœk@± {œkA± KHmA± {œkA± Cœka± KHma± {œka± Cœk€± “Îk± KHm± {œk± Cœk ± {œk¡± KHm¡± {œk¡± CœkÁ± KHmÁ± {œkÁ± Cœkà± “Îká± KHmá± {œká± Cœk² “Îk² KHm² {œk² Cœk!² KHm!² {œk!² CœkA² KHmA² {œkA² Cœka² KHma² {œka² Cœk² KHm² {œk² Cœk¡² KHm¡² {œk¡² CœkÁ² KHmÁ² {œkÁ² Cœká² KHmá² {œká² Cœk³ KHm³ {œk³ Cœk!³ KHm!³ {œk!³ CœkA³ KHmA³ {œkA³ Cœka³ KHma³ {œka³ Cœk³ KHm³ {œk³ Cœk¡³ KHm¡³ {œk¡³ Cœk!´ KHm!´ {œk!´ CœkA´ KHmA´ {œkA´ Cœka´ KHma´ {œka´ Cœk´ KHm´ {œk´ Cœk¡´ KHm¡´ {œk¡´ CœkÁ´ KHmÁ´ {œkÁ´ Cœká´ KHmá´ {œká´ Cœkµ KHmµ {œkµ Cœk!µ KHm!µ {œk!µ CœkAµ KHmAµ {œkAµ Cœkaµ KHmaµ {œkaµ Cœkµ KHmµ {œkµ Cœk¶ KHm¶ {œk¶ Cœk!¶ KHm!¶ {œk!¶ CœkA¶ KHmA¶ {œkA¶ Cœka¶ KHma¶ {œka¶ Cœk¶ KHm¶ {œk¶ Cœk¡¶ KHm¡¶ {œk¡¶ CœkÁ¶ KHmÁ¶ {œkÁ¶ Cœká¶ KHmá¶ {œká¶ Cœk· KHm· {œk· Cœk!· KHm!· {œk!· CœkA· KHmA· {œkA· Cœka· KHma· {œka· CœkÁ· KHmÁ· {œkÁ· Cœká· KHmá· {œká· Cœk¸ KHm¸ {œk¸ Cœk!¸ KHm!¸ {œk!¸ CœkA¸ KHmA¸ {œkA¸ Cœka¸ KHma¸ {œka¸ Cœk¸ KHm¸ {œk¸ Cœk¡¸ KHm¡¸ {œk¡¸ CœkÁ¸ KHmÁ¸ {œkÁ¸ CœkḠKHmḠ{œkḠCœk¹ KHm¹ {œk¹ Cœk!¹ KHm!¹ {œk!¹ CœkA¹ KHmA¹ {œkA¹ Cœka¹ KHma¹ {œka¹ Cœk¹ KHm¹ {œk¹ Cœk¡¹ KHm¡¹ {œk¡¹ CœkÁ¹ KHmÁ¹ {œkÁ¹ Cœká¹ KHmá¹ {œká¹ Cœkº KHmº {œkº Cœk!º KHm!º {œk!º CœkAº KHmAº {œkAº Cœkaº KHmaº {œkaº Cœkº KHmº {œkº Cœk¡º KHm¡º {œk¡º CœkÁº KHmÁº {œkÁº Cœk!» KHm!» {œk!» CœkA» KHmA» {œkA» Cœka» KHma» {œka» Cœk» KHm» {œk» Cœk½ KHm½ {œk½ Cœk¡½ KHm¡½ {œk¡½ CœkA¾ KHmA¾ {œkA¾ Cœka¾ KHma¾ {œka¾ Cœk¾ KHm¾ {œk¾ Cœk!¿ KHm!¿ {œk!¿ CœkA¿ KHmA¿ {œkA¿ Cœka¿ KHma¿ {œka¿ Cœk¿ KHm¿ {œk¿ Cœk¡¿ KHm¡¿ {œk¡¿ CœkÁ¿ KHmÁ¿ {œkÁ¿ Cœká¿ KHmá¿ {œká¿ Cœk€À “€3 À “[ÀÀ “ØàÀ “ׂÁ “Ø Á “Ø@Á “Ø`Á “Îk€Á “ØÁ KHmÁ {œkÁ Cœk Á “Îk¡Á KHm¡Á {œk¡Á CœkÀÁ “ØÁÁ KHmÁÁ {œkÁÁ CœkàÁ “ØáÁ KHmáÁ {œkáÁ Cœk “Îk KHm {œk Cœk  “¤l! KHm! {œk! Cœk@ “ׂA KHmA {œkA Cœk` “Îka KHma {œka Cœk€Â “Ø KHm {œk Cœk Â “ء KHm¡Â {œk¡Â CœkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “!×á KHmá {œká Cœkà “[à KHmà {œkà Cœk à “Îk!à KHm!à {œk!à Cœk@à “ÎkAà KHmAà {œkAà Cœk`à “Îkaà KHmaà {œkaà Cœk€Ã “Îkà KHmà {œkà Cœk Ã “Îk¡Ã KHm¡Ã {œk¡Ã CœkÀà “!×Áà KHmÁà {œkÁà Cœkàà “Îkáà KHmáà {œkáà CœkÄ “ÎkÄ KHmÄ {œkÄ Cœk Ä {œk!Ä KHm!Ä {œk!Ä Cœk@Ä “ØAÄ KHmAÄ {œkAÄ Cœk`Ä “ØaÄ KHmaÄ {œkaÄ Cœk€Ä “ÎkÄ KHmÄ {œkÄ Cœk Ä “Îk¡Ä KHm¡Ä {œk¡Ä CœkÁÄ KHmÁÄ {œkÁÄ CœkàÄ “ØáÄ KHmáÄ {œkáÄ CœkÅ “ÎkÅ KHmÅ {œkÅ Cœk!Å KHm!Å {œk!Å CœkAÅ KHmAÅ {œkAÅ CœkaÅ KHmaÅ {œkaÅ CœkÅ KHmÅ {œkÅ Cœk¡Å KHm¡Å {œk¡Å CœkÁÅ KHmÁÅ {œkÁÅ CœkáÅ KHmáÅ {œkáÅ CœkÆ KHmÆ {œkÆ Cœk!Æ KHm!Æ {œk!Æ CœkAÆ KHmAÆ {œkAÆ Cœk`Æ “!×aÆ KHmaÆ {œkaÆ Cœk!Ç KHm!Ç {œk!Ç CœkAÇ KHmAÇ {œkAÇ CœkaÇ KHmaÇ {œkaÇ Cœk¡Ç KHm¡Ç {œk¡Ç CœkÁÇ KHmÁÇ {œkÁÇ CœkáÇ KHmáÇ {œkáÇ CœkÈ KHmÈ {œkÈ Cœk!È KHm!È {œk!È CœkAÈ KHmAÈ {œkAÈ CœkaÈ KHmaÈ {œkaÈ CœkÈ KHmÈ {œkÈ Cœk¡È KHm¡È {œk¡È CœkÁÈ 3¼œkÁÈ KHmáÈ KHmÉ KHm!É KHm@É “ÎkAÉ KHm`É “ÎkaÉ KHm€É “ÎkÉ KHm É “Ø¡É KHmÀÉ “ÎkÁÉ KHmàÉ “ØáÉ KHmÊ KHm Ê “ׂ!Ê KHm@Ê “ׂAÊ KHm`Ê “ׂaÊ KHmÊ KHm Ê {œk¡Ê KHmÀÊ “Q‹ÁÊ KHmáÊ KHmáÊ {œkáÊ CœkË {œk Ë {œk!Ë KHm!Ë {œk!Ë Cœk@Ë {œkAË KHmAË {œkAË Cœk`Ë “Q‹aË KHmaË {œkaË Cœk€Ë “ÎkË KHmË {œkË Cœk Ë “¤l¡Ë KHm¡Ë {œk¡Ë CœkÁË KHmÁË {œkÁË CœkáË KHmáË {œkáË CœkÌ KHmÌ {œkÌ CœkÍ KHmÍ {œkÍ CœkÍ KHmÍ {œkÍ Cœk¡Í KHm¡Í {œk¡Í CœkÎ {œkÎ Cœk Î {œk Î CœkaÎ KHmÎ KHm¡Î KHmÁÎ KHmáÎ KHmÏ KHm!Ï KHm!Ï {œk!Ï CœkAÏ 3¼œkAÏ KHmaÏ 3¼œkaÏ KHmÏ 3¼œkÏ KHm¡Ï KHm¡Ï {œk¡Ï CœkÁÏ KHmÁÏ {œkÁÏ CœkáÏ KHmáÏ {œkáÏ CœkÐ KHmÐ {œkÐ Cœk!Ð KHm!Ð {œk!Ð CœkáÑ KHmáÑ {œkáÑ Cœk€Ò {œk€Ò CœkÒ KHmÒ {œkÒ Cœk Ò {œk Ò Cœk¡Ò KHm¡Ò {œk¡Ò CœkÁÒ KHmÔ KHmÔ {œkÔ Cœk!Ô KHm!Ô {œk!Ô Cœk¡Õ KHm¡Õ {œk¡Õ CœkÁÕ KHmÁÕ {œkÁÕ CœkáÕ KHmáÕ {œkáÕ CœkÖ KHmÖ {œkÖ Cœk!Ö KHm!Ö {œk!Ö CœkaÖ KHmaÖ {œkaÖ CœkÖ KHmÖ {œkÖ Cœk!× KHm!× {œk!× CœkA× KHmA× {œkA× CœkÁØ KHmÁØ {œkÁØ CœkAÙ KHmAÙ {œkAÙ CœkaÙ KHmaÙ {œkaÙ CœkÙ KHmÙ {œkÙ CœkÀÙ “ØÁÙ KHmÁÙ {œkÁÙ CœkàÙ “!×áÙ KHmáÙ {œkáÙ CœkÚ “!×Ú KHmÚ {œkÚ Cœk Ú “ׂ!Ú KHm!Ú {œk!Ú Cœk@Ú “¤l`Ú {œk€Ú “ׂáÚ KHmáÚ {œkáÚ Cœk!Û KHm!Û {œk!Û CœkAÛ KHmAÛ {œkAÛ CœkaÛ KHmaÛ {œkaÛ CœkÀÛ {œkàÛ {œkÜ “Îk Ü “Œ)@Ü “ÎkÁÜ KHmÁÜ {œkÁÜ CœkáÜ KHmÝ KHm Ý “Ø!Ý KHm!Ý {œk!Ý Cœk`Ý “ØaÝ KHm€Ý “ÎkÝ KHm¡Ý KHmÀÝ “ÎkàÝ “ÎkáÝ KHmáÝ {œkáÝ CœkÞ “Îk Þ “ׂ@Þ “ׂAÞ KHmAÞ {œkAÞ Cœk`Þ “Îk€Þ “Ø Þ “ØàÞ “òZß “Ø`ß “Îk€ß “!×Àß “ׂàß “¤láß KHmáß {œkáß Cœkà “Øà KHmà {œkà Cœk à “Îk!à KHm!à {œk!à Cœk@à “¤lAà KHmAà {œkAà Cœk`à “ׂ€à “[à KHmà {œkà Cœk à “Îk¡à KHm¡à {œk¡à CœkÀà “ׂàà “Øá “ׂá KHmá {œká Cœk á “ë¶!á KHm!á {œk!á Cœk@á “ׂ`á “€3€á “Îkáá KHmáá {œkáá Cœkâ KHm!â KHm!â {œk!â CœkAâ KHmaâ KHmâ KHmâ {œkâ Cœk¡â KHmã KHmã {œkã Cœk¡ã KHm¡ã {œk¡ã CœkÁã KHmÁã {œkÁã Cœkáã KHmáã {œkáã Cœk!ä KHmAä KHmaä KHmä KHm¡ä KHmÁä KHmáä KHmå KHm!å KHmAå KHmaå KHmå KHm¡å KHmÁå KHmáå KHmæ KHm!æ KHmAæ KHmaæ KHmaæ {œkaæ Cœkæ KHm¡æ KHmÁæ KHmáæ KHmç KHm!ç KHm!ç {œk!ç CœkAç KHmaç KHmç KHm¡ç KHmÁç KHmáç KHm!è KHmAè KHmaè KHmÁè KHmÁè {œkÁè Cœkáè KHmáè {œkáè Cœké KHm!é KHmAé KHmaé KHmé KHm¡é KHmÁé KHmáé KHmê KHm ê {œk ê Cœk!ê KHm!ê {œk!ê Cœk@ê {œk@ê CœkAê KHmAê {œkAê CœkÁê KHmÁê {œkÁê Cœkàê {œkàê Cœkáê KHmáê {œkáê Cœkë {œkë Cœkî KHmî {œkî Cœk¡î KHm¡î {œk¡î CœkÁî KHmÁî {œkÁî Cœkáî KHmáî {œkáî Cœkï KHmï {œkï Cœk!ï KHm!ï {œk!ï CœkAï KHmAï {œkAï Cœkaï KHmaï {œkaï Cœkð KHmð {œkð Cœkañ KHmañ {œkañ Cœk€ò “Îk ò “Îk¡ò KHm¡ò {œk¡ò Cœk!ó KHm!ó {œk!ó Cœk`ó “Îk€ó “Ø ó “ׂÀó “Øàó “1Qô “ׂ ô “Ø@ô “ØAô KHmAô {œkAô Cœk ô “ØÀô {œkõ “Îkõ KHmõ {œkõ Cœk€õ “Îk õ “Îk!ö KHm!ö {œk!ö Cœkàö “Îk÷ “Îk!÷ KHm!÷ {œk!÷ CœkA÷ KHmA÷ {œkA÷ Cœka÷ KHma÷ {œka÷ Cœkþ KHmþ {œkþ Cœk!þ KHm!þ {œk!þ CœkAþ KHmAþ {œkAþ Cœkaþ KHmaþ {œkaþ Cœkþ KHmþ {œkþ Cœk¡þ KHm¡þ {œk¡þ Cœkaÿ KHmaÿ {œkaÿ Cœkÿ KHmÿ {œkÿ Cœk¡ÿ KHm¡ÿ {œk¡ÿ CœkÁÿ KHmÁÿ {œkÁÿ Cœkáÿ KHmáÿ {œkáÿ Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœk  “ÎkÁ KHmÁ {œkÁ Cœk “ׂ  “Îk` “Ø KHm {œk Cœká KHmá {œká Cœk KHm {œk Cœk! KHmA KHm` “¤la KHm€ “Îk KHm  “ׂ¡ KHmÀ “ÎkÁ KHmà “ׂá KHm KHm {œk Cœk  “úi! KHm@ “Q‹A KHm` “Q‹a KHm€ “!× KHm  “!ס KHmÀ “¤lÁ KHmà “¤lá KHm “¤l KHm  “Ø! KHm@ “ØA KHm` “¤la KHm€ “¤l KHm  “!ס KHmÀ “!×Á KHmà “Øá KHm “¤l KHm! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk€ “Îk KHm¡ KHmÀ “ÎkÁ KHmà “Îká KHm “Îk KHm! KHm@ “!×A KHm` {œka KHm€ “Îk KHm¡ KHmÀ “ׂÁ KHmà “ׂá KHm “Îk KHm “[! KHm@ “ÎkA KHm` “Îka KHm€ “¤l KHm {œk Cœk  “Ø¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk “Îk KHm! KHmA KHma KHm€ “ׂ KHm  “ׂ¡ KHmÀ “ØÁ KHmà “ׂá KHm KHm! KHm@ “ׂ` “Q‹€ “!×  “Q‹¡ KHm¡ {œk¡ CœkÀ “!×à “¾„ “Îk {œk@ “!×` “Àä€ “¤l  “ׂÀ “Îkà “!× “1Ü {œk@ “1Ü A KHmA {œkA Cœk` {œka KHma {œka Cœk€ “ׂ KHm {œk Cœk  “Ø¡ KHm¡ {œk¡ CœkÀ “ׂÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk  “Ø` “Øa KHma {œka Cœk€ “Ø KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœkà “ëá á KHmá {œká Cœk “¤l KHm {œk Cœk  “¤l! KHm! {œk! Cœk@ “ׂA KHmA {œkA Cœk` “ׂa KHma {œka Cœk€ “Nå KHm {œk Cœk  “Nå¡ KHm¡ {œk¡ CœkÀ “xã Á KHmÁ {œkÁ Cœkà “Nåá KHmá {œká Cœk “Nå KHm {œk Cœk  “Pä! KHm! {œk! Cœk@ “¤lA KHmA {œkA Cœk` “¤la KHma {œka Cœk€ “ׂ KHm {œk Cœk  “ׂ¡ KHm¡ {œk¡ CœkÀ “ׂÁ KHmÁ {œkÁ Cœkà “ׂá KHmá {œká Cœk “ׂ KHm {œk Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ Cœkà {œkà Cœk {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœkà {œkà Cœk {œk CœkÀ {œkÀ Cœkà Skm {œk Cœk KHm  S~m! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk  {œkÀ {œkà {œk {œk  {œk@ {œk` {œk€ {œk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm KHm! KHmA KHma KHm KHm  Skm¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm  {œk  Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm¡ KHmÁ KHmá KHm KHm! KHmà “Îk Skm  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  Cœk  {œk  CœkÀ Skmà {œkà Cœk S~m  {œk  Cœk@ S‹m` {œk` Cœk€ S⢠ {œk  CœkÀ Sï¢à {œkà Cœk Sü¢ KHm {œk Cœk  {œk  Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œk` Cœka KHma {œka Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ CœkÁ KHmÁ {œkÁ Cœkà {œkà Cœká KHmá {œká Cœk {œk Cœk {œk Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÁ KHmÁ {œkÁ Cœkà {œkà Cœká KHmá {œká Cœk! Skm! KHm! {œk! Cœk ! {œk ! Cœk@! S~m`! {œk`! Cœk€! S‹m ! {œk ! Cœk¡! KHm¡! {œk¡! CœkÀ! {œkÀ! CœkÁ! KHmÁ! {œkÁ! Cœkà! {œkà! Cœká! KHmá! {œká! Cœk" KHm" {œk" Cœk " {œk " Cœk!" KHm@" {œk@" CœkA" KHm`" {œk`" Cœka" KHm€" {œk€" Cœk" KHm " {œk " Cœk¡" KHmÀ" {œkÀ" CœkÁ" KHmà" {œkà" Cœk# {œk# Cœk # Skm@# {œk@# Cœk`# {œk`# Cœk€# {œk€# Cœk # {œk # Cœk¡# KHm¡# {œk¡# CœkÀ# {œkÀ# CœkÁ# KHmÁ# {œkÁ# Cœkà# {œkà# Cœk$ {œk$ Cœk $ {œk $ Cœk% KHm% {œk% Cœk!% KHm!% {œk!% CœkÀ' {œkÀ' CœkÁ' KHmÁ' {œkÁ' Cœkà' Skm( {œk( Cœk ( S~m@( {œk@( Cœk`( {œk`( Cœk€( {œk€( Cœka* KHma* {œka* Cœk¡* KHm¡* {œk¡* Cœká* KHmá* {œká* Cœk+ KHm+ {œk+ CœkÁ+ KHmá+ KHm!, KHm!, {œk!, CœkA, KHmA, {œkA, Cœka, KHma, {œka, Cœk€, {œk€, Cœk, KHm, {œk, Cœk , {œk , CœkÀ, {œkÀ, Cœkà, {œkà, Cœk- {œk- Cœk - {œk - Cœk@- {œk@- Cœk`- {œk`- Cœka- KHm€- {œk€- Cœk- KHm - {œk - Cœk¡- KHmÀ- {œkÀ- CœkÁ- KHmà- {œkà- Cœká- KHm. {œk. Cœk. KHm . {œk . Cœk!. KHm@. {œk@. CœkA. KHmA. {œkA. Cœk`. {œk`. Cœka. KHma. {œka. Cœk€. {œk€. Cœk. KHm. {œk. Cœk . {œk . Cœk¡. KHm¡. {œk¡. CœkÀ. {œkÀ. CœkÁ. KHmÁ. {œkÁ. Cœkà. {œkà. CœkÀ/ {œkÀ/ CœkÁ/ KHmÁ/ {œkÁ/ Cœkà/ Skm0 {œk0 Cœk 0 S~m!0 KHm!0 {œk!0 Cœk@0 {œk@0 Cœk`0 S‹m€0 {œk€0 Cœk0 KHm0 {œk0 Cœk 0 S⢡0 KHm¡0 {œk¡0 CœkÀ0 {œkÀ0 CœkÁ0 KHmÁ0 {œkÁ0 Cœkà0 {œkà0 Cœk1 {œk1 Cœk2 KHm2 {œk2 Cœk¡2 KHm¡2 {œk¡2 CœkÁ2 KHmÁ2 {œkÁ2 Cœk¡3 KHm¡3 {œk¡3 CœkÁ3 KHmÁ3 {œkÁ3 Cœká3 KHmá3 {œká3 Cœk4 KHm4 {œk4 CœkÁ4 3¼œkÁ4 KHmá4 3¼œká4 KHm5 3¼œk5 KHm!5 3¼œk!5 KHmA5 3¼œkA5 KHma5 3¼œka5 KHm5 3¼œk5 KHm¡5 3¼œk¡5 KHmÀ5 {œkÀ5 CœkÁ5 3¼œkÁ5 KHmà5 {œkà5 Cœká5 3¼œká5 KHm6 {œk6 Cœk6 3¼œk6 KHm 6 {œk 6 Cœk!6 3¼œk!6 KHm@6 {œk@6 CœkA6 3¼œkA6 KHm`6 {œk`6 Cœka6 3¼œka6 KHm€6 {œk€6 Cœk6 3¼œk6 KHm 6 {œk 6 Cœk¡6 3¼œk¡6 KHmÀ6 {œkÀ6 CœkÁ6 3¼œkÁ6 KHmà6 {œkà6 Cœká6 3¼œká6 KHm7 {œk7 Cœk7 3¼œk7 KHm 7 {œk 7 Cœk!7 3¼œk!7 KHm@7 {œk@7 CœkA7 3¼œkA7 KHm`7 {œk`7 Cœka7 3¼œka7 KHm€7 {œk€7 Cœk7 3¼œk7 KHm 7 {œk 7 Cœk¡7 3¼œk¡7 KHmÀ7 {œkÀ7 CœkÁ7 3¼œkÁ7 KHmà7 {œkà7 Cœká7 3¼œká7 KHm8 {œk8 Cœk8 3¼œk8 KHm 8 {œk 8 Cœk!8 3¼œk!8 KHm@8 {œk@8 CœkA8 3¼œkA8 KHm`8 {œk`8 Cœka8 3¼œka8 KHm€8 {œk€8 Cœk8 3¼œk8 KHm 8 {œk 8 Cœk¡8 3¼œk¡8 KHmÀ8 {œkÀ8 CœkÁ8 3¼œkÁ8 KHmà8 {œkà8 Cœká8 3¼œká8 KHm9 {œk9 Cœk9 3¼œk9 KHm 9 {œk 9 Cœk!9 KHm@9 {œk@9 CœkA9 KHm`9 {œk`9 Cœka9 KHm€9 {œk€9 Cœk9 KHm 9 {œk 9 Cœk¡9 KHmÀ9 {œkÀ9 CœkÁ9 KHmà9 {œkà9 Cœká9 KHmá9 {œká9 Cœk: KHm!: KHmA: KHma: KHm: KHm¡: KHm; KHm!; KHm¡; KHm¡; {œk¡; CœkÁ; KHmÁ; {œkÁ; Cœká; KHmá; {œká; Cœk< KHm< {œk< Cœk!< KHm!< {œk!< CœkA< KHmA< {œkA< Cœka< KHma< {œka< CœkÁ< KHmá< KHm= KHm!= KHmA= KHma= KHma= {œka= Cœk= KHm= {œk= CœkÀ= {œkÀ= Cœkà= Skm> {œk> Cœk > S~m@> {œk@> Cœk`> {œk`> Cœk€> {œk€> Cœk!@ KHm!@ {œk!@ CœkA@ KHmA@ {œkA@ Cœk`@ {œk`@ Cœka@ KHma@ {œka@ Cœk€@ {œk€@ Cœk@ KHm@ {œk@ Cœk @ {œk @ Cœk¡@ KHm¡@ {œk¡@ CœkÀ@ {œkÀ@ CœkÁ@ KHmÁ@ {œkÁ@ Cœkà@ {œkà@ Cœká@ KHmá@ {œká@ CœkA {œkA CœkA KHmA {œkA Cœk A {œk A Cœk!A KHm!A {œk!A Cœk@A {œk@A CœkAA KHmAA {œkAA Cœk`A {œk`A CœkaA KHmaA {œkaA Cœk€A {œk€A CœkA KHmA {œkA Cœk A {œk A Cœk¡A KHm¡A {œk¡A CœkÀA {œkÀA CœkÁA KHmÁA {œkÁA CœkàA {œkàA CœkáA KHmáA {œkáA CœkB {œkB CœkB KHmB {œkB Cœk B {œk B Cœk!B KHm!B {œk!B Cœk@B {œk@B CœkAB KHmAB {œkAB CœkaB KHmaB {œkaB CœkB KHmB {œkB Cœk¡B KHm¡B {œk¡B CœkÁB KHmÁB {œkÁB CœkáB KHmáB {œkáB CœkC KHmC {œkC Cœk!C KHm!C {œk!C CœkAC KHmAC {œkAC CœkaC KHmaC {œkaC CœkC KHmC {œkC Cœk¡C KHm¡C {œk¡C CœkÁC KHmÁC {œkÁC CœkáC KHmáC {œkáC CœkD KHmD {œkD Cœk!D KHm!D {œk!D CœkAD KHmAD {œkAD CœkaD KHmaD {œkaD CœkD KHmD {œkD Cœk¡D KHm¡D {œk¡D CœkÁD KHmÁD {œkÁD CœkàD SkmE {œkE CœkE KHmE {œkE Cœk E {œk E Cœk@E {œk@E CœkAE KHmAE {œkAE Cœk`E {œk`E CœkaE KHmaE {œkaE Cœk€E {œk€E CœkE KHmE {œkE Cœk¡E KHm¡E {œk¡E CœkÁE KHmÁE {œkÁE CœkáE KHmáE {œkáE CœkF KHmF {œkF Cœk!F KHm!F {œk!F CœkAF KHmAF {œkAF CœkaF KHmaF {œkaF CœkF KHmF {œkF Cœk¡F KHm¡F {œk¡F CœkÁF KHmÁF {œkÁF CœkáF KHmáF {œkáF CœkG SkmG KHmG {œkG Cœk G {œk G Cœk!G KHm!G {œk!G Cœk@G {œk@G CœkAG KHmAG {œkAG Cœk`G {œk`G CœkaG KHmaG {œkaG Cœk€G {œk€G CœkG KHmG {œkG Cœk G {œk G Cœk¡G KHm¡G {œk¡G CœkH KHmH {œkH CœkaH KHmaH {œkaH CœkH KHmH {œkH Cœk H Skm¡H KHm¡H {œk¡H CœkÀH {œkÀH CœkÁH KHmÁH {œkÁH CœkàH {œkàH CœkáH KHmáH {œkáH CœkI {œkI CœkI KHmI {œkI Cœk I {œk I Cœk!I KHm!I {œk!I Cœk@I {œk@I CœkAI KHmAI {œkAI CœkaI KHmaI {œkaI CœkÁI KHmÁI {œkÁI CœkáI KHmáI {œkáI CœkJ KHmJ {œkJ Cœk!J KHm!J {œk!J CœkAJ KHmAJ {œkAJ CœkaJ KHmaJ {œkaJ CœkJ KHmJ {œkJ Cœk¡J KHm¡J {œk¡J CœkÁJ KHmÁJ {œkÁJ CœkáJ KHmáJ {œkáJ CœkK KHmK {œkK Cœk!K KHm!K {œk!K CœkAK KHmAK {œkAK CœkaK KHmaK {œkaK CœkK KHmK {œkK Cœk K {œk K Cœk¡K KHm¡K {œk¡K CœkÀK SkmÁK KHmÁK {œkÁK CœkàK {œkàK CœkáK KHmáK {œkáK CœkL S~mL KHmL {œkL Cœk L {œk L Cœk!L KHm!L {œk!L Cœk@L S‹mAL KHmAL {œkAL Cœk`L {œk`L CœkaL KHmaL {œkaL Cœk€L {œk€L CœkL KHmL {œkL Cœk L {œk L Cœk¡L KHm¡L {œk¡L CœkÁL KHmÁL {œkÁL CœkáL KHmáL {œkáL CœkM KHmM {œkM Cœk!M KHm!M {œk!M CœkAM KHmAM {œkAM CœkaM KHmaM {œkaM CœkM KHmM {œkM Cœk¡M KHm¡M {œk¡M CœkÁM KHmÁM {œkÁM CœkáM KHmáM {œkáM CœkN KHmN {œkN Cœk!N KHm!N {œk!N CœkAN KHmAN {œkAN CœkaN KHmaN {œkaN CœkN KHmN {œkN Cœk¡N KHm¡N {œk¡N CœkÁN KHmÁN {œkÁN CœkáN KHmáN {œkáN CœkO KHmO {œkO Cœk!O KHm!O {œk!O CœkO KHmO {œkO CœkÀO {œkÀO CœkàO {œkàO CœkáO KHmáO {œkáO CœkP {œkP CœkP KHmP {œkP Cœk P {œk P Cœk!P KHm!P {œk!P Cœk@P {œk@P CœkAP KHmAP {œkAP Cœk`P {œk`P Cœk€P {œk€P Cœk P {œk P CœkÀP {œkÀP CœkàP {œkàP CœkQ {œkQ CœkQ KHm Q {œk Q Cœk!Q KHm@Q {œk@Q CœkAQ KHmAQ {œkAQ Cœk`Q {œk`Q CœkaQ KHmaQ {œkaQ Cœk€Q {œk€Q CœkQ KHmQ {œkQ Cœk Q {œk Q Cœk¡Q KHm¡Q {œk¡Q CœkÀQ {œkÀQ CœkÁQ KHmÁQ {œkÁQ CœkàQ {œkàQ CœkáQ KHmáQ {œkáQ CœkR {œkR CœkR KHmR {œkR Cœk R {œk R Cœk!R KHm!R {œk!R Cœk@R {œk@R CœkAR KHmAR {œkAR Cœk`R {œk`R CœkaR KHmaR {œkaR Cœk€R {œk€R CœkR KHmR {œkR Cœk R {œk R Cœk¡R KHm¡R {œk¡R CœkÀR {œkÀR CœkÁR KHmÁR {œkÁR CœkàR {œkàR CœkáR KHmáR {œkáR CœkS KHmS {œkS Cœk!S KHm!S {œk!S CœkAS KHmAS {œkAS CœkaS KHmaS {œkaS CœkS KHmS {œkS Cœk¡S KHm¡S {œk¡S CœkÁS KHmÁS {œkÁS CœkV KHmV {œkV Cœk¡V KHm¡V {œk¡V CœkÁV KHmÁV {œkÁV CœkáV KHmáV {œkáV CœkW KHmW {œkW Cœk!W KHm!W {œk!W CœkAW KHmAW {œkAW CœkaW KHmaW {œkaW Cœk€W {œk€W CœkW KHmW {œkW Cœk W {œk W Cœk¡W KHm¡W {œk¡W CœkÁW KHmÁW {œkÁW CœkáW KHmáW {œkáW CœkX KHmX {œkX Cœk!X KHm!X {œk!X CœkAX KHmAX {œkAX CœkaX KHmaX {œkaX CœkX KHmX {œkX Cœk¡X KHm¡X {œk¡X CœkÁX KHmÁX {œkÁX CœkáX KHmáX {œkáX CœkY KHmY {œkY Cœk!Y KHm!Y {œk!Y CœkAY KHmAY {œkAY CœkaY KHmaY {œkaY Cœk€Y SkmY KHmY {œkY Cœk Y {œk Y Cœk¡Y KHm¡Y {œk¡Y CœkÀY {œkÀY CœkÁY KHmÁY {œkÁY CœkàY {œkàY CœkáY KHmáY {œkáY CœkZ {œkZ CœkZ KHmZ {œkZ Cœk Z {œk Z Cœk!Z KHm!Z {œk!Z CœkAZ KHmAZ {œkAZ CœkáZ KHm[ KHm![ KHmA[ KHmA[ {œkA[ Cœka[ KHma[ {œka[ Cœk[ KHm[ {œk[ Cœk¡[ KHm¡[ {œk¡[ CœkÁ[ KHmÁ[ {œkÁ[ Cœkà[ {œká[ KHmá[ {œká[ Cœk\ {œk\ KHm\ {œk\ Cœk \ {œk!\ KHm!\ {œk!\ Cœk@\ {œkA\ KHmA\ {œkA\ Cœk`\ {œka\ KHma\ {œka\ Cœk\ KHm\ {œk\ Cœk¡\ KHm¡\ {œk¡\ CœkÀ\ {œkÀ\ CœkÁ\ KHmÁ\ {œkÁ\ Cœkà\ Skmá\ KHm] {œk] Cœk] KHm ] S~m!] KHm@] {œk@] CœkA] KHm`] S‹ma] KHm€] {œk€] Cœk] KHm ] {œk ] Cœk¡] KHmÀ] {œkÀ] CœkÁ] KHmá] KHm^ KHm!^ KHmA^ KHma^ KHm^ KHm¡^ KHmÁ^ KHmá^ KHm_ KHm!_ KHm@_ {œk@_ CœkA_ KHm`_ {œk`_ Cœka_ KHm€_ {œk€_ Cœk_ KHm _ {œk _ Cœk¡_ KHmÀ_ {œkÀ_ CœkÁ_ KHmà_ {œkà_ Cœká_ KHm` {œk` Cœk` KHm ` {œk ` Cœk!` KHm@` {œk@` CœkA` KHm`` {œk`` Cœka` KHm€` {œk€` Cœk` KHm ` {œk ` Cœk¡` KHmÀ` {œkÀ` CœkÁ` KHmà` {œkà` Cœká` KHma {œka Cœka KHm a {œk a Cœk!a KHm@a {œk@a CœkAa KHm`a {œk`a Cœkaa KHm€a {œk€a Cœka KHm a {œk a Cœk¡a KHmÀa {œkÀa CœkÁa KHmàa {œkàa Cœkáa KHmb {œkb Cœkb KHm b {œk b Cœk!b KHm@b {œk@b CœkAb KHm`b {œk`b Cœkab KHmb KHm¡b KHmÁb KHmáb KHmc KHm!c KHmAc KHmac KHmc KHm¡c KHmÁc KHmác KHmd KHm!d KHmAd KHmad KHmd KHm¡d KHmÁd KHmád KHme KHm!e KHmAe KHmae KHme KHm¡e KHmÁe KHmáe KHmf KHm!f KHmAf KHmaf KHmf KHm¡f KHmÁf KHmáf KHmg KHm!g KHmAg KHmag KHmg KHm¡g KHmÁg KHmág KHmh KHm!h KHmAh KHmah KHmh KHm¡h KHmÁh KHmáh KHmi KHm!i KHm@i {œk@i CœkAi KHm`i {œk`i Cœkai KHmi KHmÁi KHmÁi {œkÁi Cœkái KHmái {œkái Cœk!j KHm!j {œk!j CœkAj KHmAj {œkAj Cœkaj KHmaj {œkaj Cœk€j {œk€j Cœk j {œk j Cœk¡j KHm¡j {œk¡j CœkÁj KHmÁj {œkÁj Cœkáj KHmáj {œkáj Cœkk KHmk {œkk Cœkl KHml {œkl Cœk!l KHm!l {œk!l CœkAl KHmAl {œkAl Cœkal KHmal {œkal Cœkl KHml {œkl Cœk@m {œk@m CœkAm KHmAm {œkAm Cœk`m {œk`m Cœkam KHmam {œkam Cœkm KHmm {œkm Cœk¡m KHm¡m {œk¡m CœkÁm KHmÁm {œkÁm Cœk€n {œk€n Cœk n {œk n Cœk¡n KHm¡n {œk¡n CœkÁn KHmÁn {œkÁn Cœkán KHmán {œkán Cœk!o KHm!o {œk!o Cœkp KHmp {œkp Cœk!p KHm!p {œk!p Cœk@p {œk@p CœkAp KHmAp {œkAp Cœk`p {œk`p CœkÁp KHmÁp {œkÁp CœkAr KHmAr {œkAr Cœkar KHmar {œkar Cœkr KHmr {œkr Cœks {œks Cœk s {œk s Cœkás KHmás {œkás Cœkt Skmt KHmt {œkt Cœk t {œk t Cœk!t KHm!t {œk!t Cœk@t {œk@t Cœk`t {œk`t Cœk€t {œk€t Cœk t {œk t CœkÀt {œkÀt Cœkàt {œkàt Cœkàu {œkàu Cœkv Skm v {œk v Cœk@v S~m`v {œk`v Cœk€v S‹m v {œk v CœkÀv Sâ¢àv {œkàv Cœkáv KHmáv {œkáv Cœkw {œkw Cœk w {œk w Cœk!w KHm!w {œk!w Cœk€w {œk€w Cœk w {œk w CœkÀw {œkÀw Cœkàw {œkàw Cœkx {œkx Cœk x {œk x Cœky {œk y {œk@y {œk`y {œk€y {œky KHmy {œky Cœk¡y KHm¡y {œk¡y CœkÁy KHmÁy {œkÁy Cœk`z {œk€z {œk z {œkÀz {œkàz {œk!{ KHm!{ {œk!{ CœkA{ KHmA{ {œkA{ Cœka{ KHma{ {œka{ Cœk} KHm} {œk} Cœk@~ {œk@~ Cœk`~ {œk`~ Cœk` {œk KHm {œk Cœk € {œk € CœkÀ€ {œkÀ€ CœkA‚ KHmA‚ {œkA‚ Cœk`‚ {œk`‚ Cœk€‚ Skm ‚ {œk ‚ CœkÀ‚ S~mà‚ {œkà‚ Cœkƒ S‹m ƒ {œk ƒ Cœk!ƒ KHm!ƒ {œk!ƒ Cœk@ƒ Sâ¢Aƒ KHmAƒ {œkAƒ Cœk`ƒ {œk`ƒ Cœkaƒ KHmaƒ {œkaƒ Cœk€ƒ Sƒ {œk ƒ CœkÀƒ {œkÀƒ Cœkàƒ {œkàƒ Cœk„ {œk„ Cœk„ KHm„ {œk„ Cœk „ {œk „ Cœk@„ {œk@„ Cœk`„ {œk`„ Cœk€„ {œk€„ Cœk „ {œk „ Cœk¡„ KHm¡„ {œk¡„ CœkÀ„ {œkÀ„ Cœkà„ {œkà„ Cœk… {œk… Cœk … {œk … Cœk!… KHm!… {œk!… Cœk@… {œk@… CœkA… KHmA… {œkA… Cœk`… {œk`… Cœka… KHma… {œka… Cœk€… {œk€… Cœk … {œk … CœkÀ… {œkÀ… Cœkà… {œkà… Cœk† {œk† Cœk† KHm† {œk† Cœk † {œk † Cœk!† KHm!† {œk!† Cœk@† {œk@† Cœk`† {œk`† CœkA‡ KHmA‡ {œkA‡ Cœka‡ KHma‡ {œka‡ Cœk‡ KHm‡ {œk‡ Cœkˆ “ ˆ {œk ˆ “ ˆ {œk@ˆ “ׂ@ˆ {œk`ˆ “ `ˆ {œk€ˆ {œk ˆ {œkÀˆ {œkàˆ {œk‰ {œk ‰ {œk@‰ {œk`‰ {œk€‰ “Ø€‰ {œk ‰ {œk!Œ KHm!Œ {œk!Œ CœkAŒ KHmAŒ {œkAŒ CœkaŒ KHmaŒ {œkaŒ Cœk¡ KHmÁ KHmá KHmŽ KHm!Ž KHmAŽ KHmaŽ KHm€Ž {œk€Ž CœkŽ KHm Ž {œk Ž Cœk¡Ž KHmÁŽ KHmᎠKHm KHm! KHmA KHma KHm KHm¡ KHmÁ KHmá KHm {œk Cœk KHm {œk Cœk! KHmA KHma KHm KHm¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm‘ KHm!‘ KHmA‘ KHma‘ KHm€‘ {œk€‘ Cœk‘ KHm ‘ {œk ‘ Cœk¡‘ KHmÁ‘ KHmá‘ KHm’ KHm!’ KHmA’ KHma’ KHm’ KHm¡’ KHmÁ’ KHmá’ KHmá’ {œká’ Cœk“ KHm“ {œk“ CœkA“ KHmA“ {œkA“ Cœk“ KHm“ {œk“ Cœk¡“ KHm¡“ {œk¡“ Cœk” KHm” {œk” CœkA” KHmA” {œkA” Cœk” KHm” {œk” Cœk¡” KHm¡” {œk¡” CœkÁ” KHmÁ” {œkÁ” Cœká” KHmá” {œká” CœkA• KHmA• {œkA• Cœka• KHma• {œka• Cœk– {œk– Cœk – {œk – CœkA– KHmA– {œkA– Cœka– KHma– {œka– Cœk– KHm– {œk– Cœkà– {œkà– Cœk— Skm— KHm— {œk— Cœk — {œk — Cœk@— S~m`— {œk`— Cœka— KHma— {œka— Cœk€— {œk€— Cœk— KHm— {œk— Cœk — {œk — Cœk¡— KHm¡— {œk¡— CœkÀ— {œkà— {œk˜ {œk ˜ {œk@˜ {œk`˜ {œk€˜ {œk ˜ {œk› KHm› {œk› Cœk!› KHm!› {œk!› CœkA› KHmA› {œkA› Cœka› KHma› {œka› Cœk› KHm› {œk› Cœk¡› KHm¡› {œk¡› CœkÁ› KHmÁ› {œkÁ› Cœká› KHmá› {œká› Cœkœ KHmœ {œkœ Cœk!œ KHm!œ {œk!œ CœkAœ KHmAœ {œkAœ Cœkaœ KHmaœ {œkaœ Cœká KHmž KHm!ž KHm!ž {œk!ž CœkAž KHmAž {œkAž Cœkž œkž #œk¡ž œk¡ž #œk¡Ÿ KHm¡Ÿ {œk¡Ÿ CœkÁŸ KHmÁŸ {œkÁŸ Cœk០KHm០{œk០Cœk  KHm  {œk  Cœk!  KHm!  {œk!  CœkA  KHmA  {œkA  Cœká  KHmá  {œká  Cœk¡ Skm ¡ {œk ¡ Cœk@¡ {œk@¡ CœkA¡ KHmA¡ {œkA¡ Cœk`¡ {œk`¡ Cœk€¡ {œk€¡ Cœk ¡ {œk ¡ CœkÀ¡ {œkÀ¡ Cœkà¡ {œkà¡ Cœk@¢ “Q‹`¢ “¤l€¢ “Q‹¢ 3¼œk¢ KHm ¢ “ׂ¡¢ 3¼œk¡¢ KHmÀ¢ “ׂÁ¢ 3¼œkÁ¢ KHmࢠ“Øᢠ3¼œkᢠKHm£ {œk£ 3¼œk£ KHm £ “Ø!£ 3¼œk!£ KHm@£ “ØA£ 3¼œkA£ KHm`£ “Øa£ 3¼œka£ KHm€£ {œk£ 3¼œk£ KHm £ “Ø¡£ 3¼œk¡£ KHmÀ£ “ÎkÁ£ 3¼œkÁ£ KHm࣠“Îkᣠ3¼œkᣠKHm¤ “ؤ KHm ¤ “ׂ!¤ KHm@¤ “ׂA¤ KHm`¤ “Îka¤ KHm€¤ “ؤ KHm ¤ “Ø¡¤ KHmÀ¤ “ØÁ¤ KHmठ“ØᤠKHm¥ “Ø¥ KHm¥ {œk¥ Cœk!¥ 3¼œk!¥ KHmA¥ 3¼œkA¥ KHma¥ 3¼œka¥ KHm¥ 3¼œk¥ KHm¡¥ 3¼œk¡¥ KHmÁ¥ 3¼œkÁ¥ KHmᥠ3¼œkᥠKHm¦ 3¼œk¦ KHm!¦ 3¼œk!¦ KHmA¦ 3¼œkA¦ KHma¦ 3¼œka¦ KHm¦ 3¼œk¦ KHm¡¦ 3¼œk¡¦ KHmÁ¦ 3¼œkÁ¦ KHmᦠ3¼œkᦠKHm§ 3¼œk§ KHm!§ 3¼œk!§ KHmA§ 3¼œkA§ KHma§ 3¼œka§ KHm§ 3¼œk§ KHm!¨ KHm!¨ {œk!¨ CœkA¨ KHmA¨ {œkA¨ Cœka¨ KHma¨ {œka¨ Cœk¨ KHm¨ {œk¨ Cœk¡¨ KHm¡¨ {œk¡¨ CœkÁ¨ KHmÁ¨ {œkÁ¨ CœkᨠKHmᨠ{œkᨠCœk© KHm© {œk© Cœk!© KHm!© {œk!© CœkA© KHmA© {œkA© Cœka© KHma© {œka© Cœk© KHm© {œk© Cœk¡© KHm¡© {œk¡© CœkÁ© KHmÁ© {œkÁ© Cœká© KHmá© {œká© Cœkª KHmª {œkª Cœk!ª KHm!ª {œk!ª CœkAª KHmAª {œkAª Cœkaª KHmaª {œkaª Cœkª KHmª {œkª Cœk¡ª KHm¡ª {œk¡ª CœkÁª KHmÁª {œkÁª Cœk᪠KHm᪠{œk᪠Cœk« KHm« {œk« Cœk!« KHm!« {œk!« CœkA« KHmA« {œkA« Cœka« KHma« {œka« Cœk« KHm« {œk« Cœk¡« KHm¡« {œk¡« CœkÁ« KHmá« KHm¬ KHm!¬ KHmA¬ KHma¬ KHm¬ KHm¡¬ KHmÁ¬ KHmᬠKHm­ KHm­ {œk­ Cœk!­ KHmA­ KHma­ KHmá­ KHmá­ {œká­ Cœk® KHm® {œk® Cœk!® KHm!® {œk!® Cœka® KHma® {œka® Cœk® KHm® {œk® Cœk¡® KHm¡® {œk¡® CœkÁ® KHmÁ® {œkÁ® Cœká® KHmá® {œká® CœkA¯ KHmÁ¯ KHmÁ¯ {œkÁ¯ CœkᯠKHmᯠ{œkᯠCœk° KHm° {œk° Cœk!° KHm!° {œk!° CœkA° KHmA° {œkA° Cœka° KHma° {œka° Cœk ° “ÎkÀ° {œkà° “!×± “Îk± KHm± {œk± Cœk ± “Îk@± “ÎkA± KHmA± {œkA± Cœk`± “!×€± “Îk ± “ØÀ± “Îkà± “ز “Ø ² “!×@² “Ø`² “ׂ€² “¤l ² “¤lÀ² “¤lಠ“¤l³ “Îk ³ “Ø@³ “Îk`³ “Øa³ KHm€³ “Îk³ KHm ³ “Ø¡³ KHmÀ³ “ØÁ³ KHmà³ “¤lá³ KHm´ “ׂ´ KHm´ {œk´ Cœk@´ “¤l`´ “Îkáµ KHmáµ {œkáµ Cœk¶ KHm¶ {œk¶ Cœk!¶ KHm@¶ “ë¶A¶ KHm`¶ “Øa¶ KHm€¶ “ض KHm ¶ “Ø¡¶ KHmÀ¶ “ׂÁ¶ KHmà¶ “Øá¶ KHm· “Ø· KHm · {œk!· KHm@· {œkA· KHma· KHm€· “Ø· KHm · “Ø¡· KHmÀ· “¤lÁ· KHmà· “Øá· KHm¸ “Q‹¸ KHm!¸ KHm@¸ “¤lA¸ KHm`¸ “!×a¸ KHm€¸ “ׂ¸ KHm ¸ “¤l¡¸ KHmÀ¸ “¤lÁ¸ KHmḠKHm¹ KHm!¹ KHmA¹ KHma¹ KHm¹ KHm¡¹ KHmÁ¹ KHmá¹ KHmº KHm!º KHmAº KHmaº KHmº KHm¡º KHmÀº {œkÀº CœkÁº KHmຠ{œkຠCœkẠKHm» KHm!» KHmA» KHma» KHm» KHm¡» KHmÁ» KHmá» KHm¼ KHm!¼ KHmA¼ KHma¼ KHm¼ KHm¡¼ KHmÁ¼ KHmá¼ KHm½ KHm!½ KHmA½ KHma½ KHm½ KHm¡½ KHmÁ½ KHmá½ KHm¾ KHm!¾ KHmA¾ KHma¾ KHm¾ KHm¡¾ KHmÁ¾ KHmá¾ KHm¿ KHm!¿ KHmA¿ KHma¿ KHm¿ KHm¡¿ KHmÁ¿ KHmá¿ KHmÀ KHm!À KHmAÀ KHmaÀ KHmÀ KHm¡À KHmÁÀ KHmáÀ KHmÁ KHm!Á KHmAÁ KHmaÁ KHmÁ KHm¡Á KHmÁÁ KHmáÁ KHm KHm! KHmA KHma KHm KHm¡Â KHmÁ KHmá KHmà KHm!à KHmAà KHmaà KHmà KHm¡Ã KHmÁà KHmáà KHmÄ KHmÄ {œkÄ Cœk!Ä KHmAÄ KHmaÄ KHmÄ KHm¡Ä KHmÁÄ KHmáÄ KHmÅ KHm!Å KHmAÅ KHmaÅ KHmÅ KHm¡Å KHmÁÅ KHmáÅ KHmÆ KHm!Æ KHmAÆ KHmaÆ KHmÆ KHm¡Æ KHmÁÆ KHmáÆ KHmÇ {œkÇ CœkÇ KHm Ç {œk Ç Cœk!Ç KHmAÇ KHmaÇ KHmÇ KHm¡Ç KHmÁÇ KHmáÇ KHmÈ KHm!È KHmAÈ KHmaÈ KHm€È {œk€È CœkÈ KHm È {œk È Cœk¡È KHmÁÈ KHmáÈ KHmÉ KHm!É KHmAÉ KHmaÉ KHmÉ KHm¡É KHmÁÉ KHmáÉ KHmÊ KHm!Ê KHmAÊ KHmaÊ KHmÊ KHm¡Ê KHmÁÊ KHmáÊ KHmË KHm!Ë KHmAË KHmaË KHm€Ë {œk€Ë CœkË KHm Ë {œk Ë Cœk¡Ë KHmÁË KHmáË KHmÌ KHm!Ì KHmAÌ KHmaÌ KHmÌ KHm¡Ì KHmÁÌ KHmáÌ KHmÍ KHm!Í KHmAÍ KHmaÍ KHm€Í {œk€Í CœkÍ KHm Í {œk Í Cœk¡Í KHmÁÍ KHmáÍ KHmÎ KHm!Î KHm@Î {œk@Î CœkAÎ KHm`Î {œk`Î CœkaÎ KHmÎ KHm¡Î KHmÁÎ KHmáÎ KHmÏ KHm!Ï KHmAÏ KHmaÏ KHmÏ KHm¡Ï KHmÁÏ KHmáÏ KHmÐ KHm!Ð KHmAÐ KHmaÐ KHmÐ KHm¡Ð KHmÁÐ KHmáÐ KHmÑ KHm!Ñ KHm@Ñ {œk@Ñ CœkAÑ KHm`Ñ {œk`Ñ CœkaÑ KHmÑ KHm¡Ñ KHmÁÑ KHmáÑ KHmÒ {œkÒ CœkÒ KHm Ò {œk Ò Cœk!Ò KHmAÒ KHmaÒ KHmÒ KHm¡Ò KHmÀÒ {œkÀÒ CœkÁÒ KHmàÒ {œkàÒ CœkáÒ KHmÓ KHm!Ó KHmAÓ KHmaÓ KHmÓ KHm¡Ó KHmÁÓ KHmáÓ KHmÔ {œkÔ CœkÔ KHm!Ô KHm@Ô “ÎkAÔ KHmaÔ KHmÔ KHm¡Ô KHmÁÔ KHmáÔ KHmÕ KHm!Õ KHmAÕ KHmÕ KHmÕ {œkÕ CœkÁÕ KHmáÕ KHmÖ KHm!Ö KHmAÖ KHmaÖ KHmaÖ {œkaÖ CœkÖ KHm¡Ö KHmÁÖ KHmàÖ “ÎkáÖ KHm× {œk× KHm × {œk!× KHmA× KHma× KHm× KHm¡× KHm¡× {œk¡× CœkØ KHmØ {œkØ Cœk!Ø KHm!Ø {œk!Ø CœkAØ KHmAØ {œkAØ CœkaØ KHmaØ {œkaØ CœkáØ KHmáØ {œkáØ CœkÙ KHmÙ {œkÙ Cœk!Ù KHm!Ù {œk!Ù CœkAÙ KHmAÙ {œkAÙ CœkaÙ KHmaÙ {œkaÙ CœkÙ KHmÙ {œkÙ Cœk Ù {œk¡Ù KHm¡Ù {œk¡Ù CœkÁÙ KHmÁÙ {œkÁÙ CœkáÙ KHmáÙ {œkáÙ CœkÚ KHmÚ {œkÚ Cœk!Ú KHm!Ú {œk!Ú CœkAÚ KHmAÚ {œkAÚ CœkaÚ KHmaÚ {œkaÚ CœkÚ KHmÚ {œkÚ Cœk¡Ú KHm¡Ú {œk¡Ú CœkÁÚ KHmÁÚ {œkÁÚ CœkáÚ KHmáÚ {œkáÚ CœkÛ KHmÛ {œkÛ Cœk!Û KHm!Û {œk!Û CœkAÛ KHmAÛ {œkAÛ Cœk`Û {œk`Û CœkaÛ KHmaÛ {œkaÛ Cœk€Û SkmÛ KHmÛ {œkÛ Cœk Û {œk Û Cœk¡Û KHm¡Û {œk¡Û CœkÀÛ S~mÁÛ KHmÁÛ {œkÁÛ CœkàÛ {œkàÛ CœkáÛ KHmáÛ {œkáÛ CœkÜ S‹mÜ KHmÜ {œkÜ Cœk Ü {œk Ü Cœk!Ü KHm!Ü {œk!Ü Cœk@Ü Sâ¢AÜ KHmAÜ {œkAÜ Cœk`Ü {œk`Ü CœkaÜ KHmaÜ {œkaÜ Cœk€Ü Sï¢Ü KHmÜ {œkÜ Cœk Ü {œk Ü Cœk¡Ü KHm¡Ü {œk¡Ü CœkÀÜ Sü¢ÁÜ KHmÁÜ {œkÁÜ CœkàÜ {œkàÜ CœkáÜ KHmáÜ {œkáÜ CœkÝ S £Ý KHmÝ {œkÝ Cœk Ý {œk Ý Cœk!Ý KHm!Ý {œk!Ý Cœk@Ý S£AÝ KHmAÝ {œkAÝ Cœk`Ý {œk`Ý CœkaÝ KHmaÝ {œkaÝ Cœk€Ý S#£Ý KHmÝ {œkÝ Cœk Ý {œk Ý Cœk¡Ý KHm¡Ý {œk¡Ý CœkÀÝ S÷ùÁÝ KHmÁÝ {œkÁÝ CœkàÝ {œkàÝ CœkáÝ KHmáÝ {œkáÝ CœkÞ SúÞ KHmÞ {œkÞ Cœk Þ {œk Þ Cœk!Þ KHm!Þ {œk!Þ Cœk@Þ S3úAÞ KHmAÞ {œkAÞ Cœk`Þ {œk`Þ CœkaÞ KHmaÞ {œkaÞ Cœk€Þ SSúÞ KHmÞ {œkÞ Cœk Þ {œk Þ Cœk¡Þ KHm¡Þ {œk¡Þ CœkÀÞ S~úàÞ {œkàÞ Cœkß S ß {œk ß Cœk@ß S2 `ß {œk`ß Cœk€ß SM  ß {œk ß CœkÀß Sc àß {œkàß Cœkà S à {œk à Cœk@à SŽ `à {œk`à Cœk€à S­  à {œk à CœkÀà SÌ àà {œkàà Cœká SÙ á {œk á Cœk@á SÅY `á {œk`á Cœk€á SáY  á {œk á CœkÀá SZ àá {œkàá Cœkâ SZ â {œk â Cœk@â {œk@â Cœk`â {œk`â Cœkàâ {œkàâ Cœkã {œkã Cœk ã {œk ã Cœk@ã {œk@ã Cœk`ã {œk`ã Cœk€ã {œk€ã Cœk ã {œk ã CœkÀã {œkÀã Cœkàã {œkàã Cœkä {œkä Cœk ä {œk ä Cœk@ä {œk@ä Cœk`ä {œk`ä Cœk€ä {œk€ä Cœk ä {œk ä CœkÀä {œkÀä Cœkàä {œkàä Cœkå {œkå Cœk å {œk å Cœk@å {œk@å Cœk`å {œk`å Cœk€å {œk€å Cœk å {œk å CœkÀå {œkÀå Cœkàå {œkàå Cœkæ {œkæ Cœk æ {œk æ Cœk@æ {œk@æ Cœk`æ {œk`æ Cœk€æ {œk€æ Cœk æ {œk æ CœkÀæ {œkÀæ Cœkàæ {œkàæ Cœkáæ KHmáæ {œkáæ Cœkç {œkç Cœkç KHmç {œkç Cœk ç {œk ç Cœk!ç KHm!ç {œk!ç Cœk@ç {œk@ç CœkAç KHmAç {œkAç Cœk`ç {œk`ç Cœkaç KHmaç {œkaç Cœk€ç {œk€ç Cœkç KHmç {œkç Cœk ç {œk ç Cœk¡ç KHm¡ç {œk¡ç CœkÀç {œkÀç CœkÁç KHmÁç {œkÁç Cœkàç {œkàç Cœkáç KHmáç {œkáç Cœkè {œkè Cœkè KHmè {œkè Cœk è {œk è Cœk!è KHm!è {œk!è Cœk@è {œk@è CœkAè KHmAè {œkAè Cœk`è {œk`è Cœkaè KHmaè {œkaè Cœk€è {œk€è Cœkè KHmè {œkè Cœk è {œk è Cœk¡è KHm¡è {œk¡è CœkÀè {œkÀè CœkÁè KHmÁè {œkÁè Cœkàè {œkàè Cœkáè KHmáè {œkáè Cœké {œké Cœké KHmé {œké Cœk é {œk é Cœk!é KHm!é {œk!é Cœk@é {œk@é CœkAé KHmAé {œkAé Cœk`é {œk`é Cœkaé KHmaé {œkaé Cœk€é {œk€é Cœké KHmé {œké Cœk é {œk é Cœk¡é KHm¡é {œk¡é CœkÀé {œkÀé CœkÁé KHmÁé {œkÁé Cœkàé {œkàé Cœkáé KHmáé {œkáé Cœkê {œkê Cœkê KHmê {œkê Cœk ê {œk ê Cœk!ê KHm!ê {œk!ê Cœk@ê {œk@ê CœkAê KHmAê {œkAê Cœk`ê {œk`ê Cœkaê KHmaê {œkaê Cœk€ê {œk€ê Cœkê KHmê {œkê Cœk ê {œk ê Cœk¡ê KHm¡ê {œk¡ê CœkÀê {œkÀê CœkÁê KHmÁê {œkÁê Cœkàê {œkàê Cœkáê KHmáê {œkáê Cœkë {œkë Cœkë KHmë {œkë Cœk ë {œk ë Cœk!ë KHm!ë {œk!ë Cœk@ë {œk@ë CœkAë KHmAë {œkAë Cœk`ë {œk`ë Cœkaë KHmaë {œkaë Cœk€ë {œk€ë Cœkë KHmë {œkë Cœk ë {œk ë Cœk¡ë KHm¡ë {œk¡ë CœkÀë {œkÀë CœkÁë KHmÁë {œkÁë Cœkàë {œkàë Cœkáë KHmáë {œkáë Cœkì {œkì Cœkì KHmì {œkì Cœk ì {œk ì Cœk!ì KHm!ì {œk!ì Cœk@ì {œk@ì CœkAì KHmAì {œkAì Cœk`ì {œk`ì Cœkaì KHmaì {œkaì Cœk€ì {œk€ì Cœkì KHmì {œkì Cœk ì {œk ì Cœk¡ì KHm¡ì {œk¡ì CœkÀì {œkÀì CœkÁì KHmÁì {œkÁì Cœkàì {œkàì Cœkáì KHmáì {œkáì Cœkí {œkí Cœkí KHmí {œkí Cœk í {œk í Cœk!í KHm!í {œk!í Cœk@í {œk@í CœkAí KHmAí {œkAí Cœk`í {œk`í Cœkaí KHmaí {œkaí Cœk€í {œk€í Cœkí KHmí {œkí Cœk í {œk í Cœk¡í KHm¡í {œk¡í CœkÀí {œkÀí CœkÁí KHmÁí {œkÁí Cœkàí {œkàí Cœkáí KHmáí {œkáí Cœkî {œkî Cœkî KHmî {œkî Cœk î {œk î Cœk!î KHm!î {œk!î Cœk@î {œk@î CœkAî KHmAî {œkAî Cœk`î {œk`î Cœkaî KHmaî {œkaî Cœk€î {œk€î Cœkî KHmî {œkî Cœk î {œk î Cœk¡î KHm¡î {œk¡î CœkÀî {œkÀî CœkÁî KHmÁî {œkÁî Cœkàî {œkàî Cœkáî KHmáî {œkáî Cœkï {œkï Cœkï KHmï {œkï Cœk ï {œk ï Cœk!ï KHm!ï {œk!ï Cœk@ï {œk@ï CœkAï KHmAï {œkAï Cœk`ï {œk`ï Cœkaï KHmaï {œkaï Cœk€ï {œk€ï Cœkï KHmï {œkï Cœk ï {œk ï Cœk¡ï KHm¡ï {œk¡ï CœkÀï {œkÀï CœkÁï KHmÁï {œkÁï Cœkàï {œkàï Cœkáï KHmáï {œkáï Cœkð {œkð Cœkð KHmð {œkð Cœk ð {œk ð Cœk!ð KHm!ð {œk!ð Cœk@ð {œk@ð CœkAð KHmAð {œkAð Cœk`ð {œk`ð Cœkað KHmað {œkað Cœk€ð {œk€ð Cœkð KHmð {œkð Cœk ð {œk ð Cœk¡ð KHm¡ð {œk¡ð CœkÀð {œkÀð CœkÁð KHmÁð {œkÁð Cœkàð {œkàð Cœkáð KHmáð {œkáð Cœkñ {œkñ Cœkñ KHmñ {œkñ Cœk ñ {œk ñ Cœk!ñ KHm!ñ {œk!ñ Cœk@ñ {œk@ñ CœkAñ KHmAñ {œkAñ Cœk`ñ {œk`ñ Cœkañ KHmañ {œkañ Cœk€ñ {œk€ñ Cœkñ KHmñ {œkñ Cœk ñ {œk ñ Cœk¡ñ KHm¡ñ {œk¡ñ CœkÀñ {œkÀñ CœkÁñ KHmÁñ {œkÁñ Cœkàñ {œkàñ Cœkáñ KHmáñ {œkáñ Cœkò {œkò Cœkò KHmò {œkò Cœk ò {œk ò Cœk!ò KHm!ò {œk!ò Cœk@ò {œk@ò CœkAò KHmAò {œkAò Cœk`ò {œk`ò Cœkaò KHmaò {œkaò Cœk€ò {œk€ò Cœkò KHmò {œkò Cœk¡ò KHm¡ò {œk¡ò CœkÀò {œkÀò CœkÁò KHmÁò {œkÁò Cœkàò Skmáò KHmáò {œkáò Cœkó {œkó Cœkó KHmó {œkó Cœk ó S~m!ó KHm!ó {œk!ó Cœk@ó {œk@ó CœkAó KHmAó {œkAó Cœk`ó S‹maó KHmaó {œkaó Cœk€ó {œk€ó Cœkó KHmó {œkó Cœk ó {œk ó Cœk¡ó KHm¡ó {œk¡ó CœkÀó {œkÀó CœkÁó KHmÁó {œkÁó Cœkàó {œkáó KHmáó {œkáó Cœkô {œkô KHmô {œkô Cœk ô {œk@ô {œk`ô {œk€ô {œk ô {œkÀô {œkõ {œkõ Cœk õ Skm@õ {œk@õ Cœk`õ S~m€õ {œk€õ Cœk õ {œk õ CœkÀõ {œkÀõ Cœkàõ {œkö {œk ö {œk@ö {œk`ö {œk€ö {œk ö {œkÀö {œkà÷ {œkø {œk ø {œk@ø {œk`ø {œk€ø {œk ù {œk@ù {œk û {œk û CœkÀû {œkÀû Cœk@ü {œk`ü {œk€ü {œkü KHmü {œkü Cœk ü {œk¡ü KHm¡ü {œk¡ü CœkÀü {œkÁü KHmÁü {œkÁü Cœkàü {œkáü KHmáü {œkáü Cœký {œký KHmý {œký Cœk ý {œk!ý KHm!ý {œk!ý Cœk@ý {œkAý KHmAý {œkAý Cœk`ý “Îk`ý {œkaý KHmaý {œkaý Cœk€ý {œký KHmý {œký Cœk ý “Îk ý {œk¡ý KHm¡ý {œk¡ý CœkÀý {œkÁý KHmÁý {œkÁý Cœkàý “Îkàý {œkáý KHmáý {œkáý Cœkþ {œkþ KHmþ {œkþ Cœk þ {œk!þ KHm!þ {œk!þ Cœk@þ “Îk@þ {œkAþ KHmAþ {œkAþ Cœk`þ {œkaþ KHmaþ {œkaþ Cœk€þ {œkþ KHmþ {œkþ Cœk þ “Îk þ {œk¡þ KHm¡þ {œk¡þ CœkÀþ “ÎkÀþ {œkÁþ KHmÁþ {œkÁþ Cœkàþ {œkáþ KHmáþ {œkáþ Cœkÿ {œkÿ KHmÿ {œkÿ Cœk ÿ {œk!ÿ KHm!ÿ {œk!ÿ Cœk@ÿ {œkAÿ KHmAÿ {œkAÿ Cœk`ÿ {œkaÿ KHmaÿ {œkaÿ Cœkÿ KHmÿ {œkÿ Cœk¡ÿ KHm¡ÿ {œk¡ÿ CœkÁÿ KHmÁÿ {œkÁÿ Cœkáÿ KHmáÿ {œkáÿ Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk@ {œk@ Cœk` {œk` Cœk` {œk€ {œk  “Îk  {œkÀ {œkÀ Cœkà “Îk “Îk  “Îk@ “Îk` {œk` Cœk€ “Ø  “ÎkÀ “Îkà “Îk “Îk  “Îk@ “Ø` “ׂ@ “Îk` “Îk€ “Ø  “ׂÀ “ׂÁ KHmà “Îká KHm “Ø KHm  “Ø! KHmA KHm` “Øa KHm KHm¡ KHmÁ KHmà “Îká KHmá {œká Cœk “Îk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœk “Îk€ “ØÀ “Ø “1Q` “¤lÀ “Îkà “¤l “Îk@ “¤l` “¤l€ “Îk  “áÀ “Îkà “Îk “ÎkÀ “Îk@ “Îk€ “Îk  “ÎkÀ “Îkà “Îk “ÎkA KHmA {œkA Cœk` “Îka KHma {œka Cœk€ “Îk  “ÎkÀ “Îkà “Îkà {œkà Cœká KHm {œk Cœk KHm  {œk  Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm  {œk  Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHm€ {œk€ Cœk KHm  {œk  Cœk¡ KHmÀ {œkÀ CœkÁ KHmà {œkà Cœká KHm {œk Cœk KHm  {œk  Cœk! KHm@ {œk@ CœkA KHm` {œk` Cœka KHma {œka Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœká KHmá {œká Cœk {œk Cœk KHm {œk Cœk  {œk  Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœká KHmá {œká Cœk {œk Cœk KHm {œk Cœk  {œk  Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk  {œk  Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œk` Cœka KHma {œka Cœk€ {œk€ Cœk KHm {œk Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœka KHma {œka Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk KHm {œk Cœk  {œk  Cœk¡ KHm¡ {œk¡ Cœk` {œkÀ “Îk “Îk@ “Îk€ “Îk  “ÎkÀ “Îk  “Ø! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk€ “Îká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœk KHm {œk CœkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœk` “Îk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÀ “ÎkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk CœkA KHmA {œkA Cœka KHma {œka Cœk¡ KHm¡ {œk¡ CœkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk@ “Îk€ “Îk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœk “Îk “Îk! KHm! {œk! CœkA KHmA {œkA Cœká KHm! KHm! {œk! Cœk! KHm¡! KHmÁ! KHmá! KHm" KHm!" KHmA" KHma" KHm" KHm¡" KHmÁ" KHmá" KHm# KHm!# KHm!# {œk!# Cœk# KHm¡# KHmÁ# KHmá# KHmá# {œká# Cœk$ KHm$ {œk$ Cœk!$ KHm!$ {œk!$ CœkA$ KHmA$ {œkA$ Cœka$ KHma$ {œka$ Cœk% KHm% {œk% Cœk!% KHm!% {œk!% CœkA% KHmA% {œkA% Cœka% KHma% {œka% Cœk% KHm% {œk% Cœk¡% KHm¡% {œk¡% Cœk& “Îk & “Îk!& KHm!& {œk!& Cœk@& “ÎkA& KHmA& {œkA& Cœka& KHma& {œka& Cœk& KHm& {œk& Cœk & “Îk¡& KHm¡& {œk¡& CœkÀ& “ÎkÁ& KHmÁ& {œkÁ& Cœkà& “Îká& KHmá& {œká& Cœk' KHm' {œk' Cœk`' “Îk€' “Îk' KHm' {œk' Cœk ' “Îk¡' KHm¡' {œk¡' CœkÀ' “ÎkÁ' KHmÁ' {œkÁ' Cœkà' “Îká' KHmá' {œká' Cœk( “Îk( KHm( {œk( Cœk ( “Îk!( KHm!( {œk!( Cœk@( “ÎkA( KHmA( {œkA( Cœk`( “Îka( KHma( {œka( Cœk€( “Îk( KHm ( “Îk¡( KHmÀ( “ÎkÁ( KHmà( “Îká( KHmá( {œká( Cœk) “Îk) KHm) {œk) Cœk ) “Îk!) KHm!) {œk!) Cœk@) “ÎkA) KHmA) {œkA) Cœk`) “Îka) KHma) {œka) Cœk€) “Îk) KHm) {œk) Cœk ) “Îk¡) KHm¡) {œk¡) CœkÀ) “Îkà) “Îká* KHmá* {œká* Cœk+ KHm+ {œk+ Cœk!+ KHm!+ {œk!+ CœkA+ KHmA+ {œkA+ Cœka+ KHma+ {œka+ Cœk+ KHm+ {œk+ Cœk¡+ KHm¡+ {œk¡+ CœkÁ+ KHmÁ+ {œkÁ+ Cœká+ KHmá+ {œká+ Cœk, KHm, {œk, Cœk!, KHm!, {œk!, CœkA, KHmA, {œkA, Cœka, KHma, {œka, Cœk, KHm, {œk, Cœk¡, KHm¡, {œk¡, CœkÁ, KHmÁ, {œkÁ, Cœká, KHmá, {œká, Cœk- “Îk- KHm- {œk- Cœk - “Îk!- KHm!- {œk!- Cœk@- “ÎkA- KHmA- {œkA- Cœk`- “Îka- KHma- {œka- Cœk€- “Îk- KHm- {œk- Cœk - “Îk¡- KHm¡- {œk¡- CœkÀ- “ÎkÁ- KHmÁ- {œkÁ- Cœká- KHmá- {œká- Cœk. KHm. {œk. Cœk!. KHm!. {œk!. CœkA. KHmA. {œkA. Cœka. KHma. {œka. Cœk. KHm. {œk. Cœk . “Îk¡. KHm¡. {œk¡. CœkÁ. KHmÁ. {œkÁ. Cœká. KHmá. {œká. Cœk/ KHm/ {œk/ Cœk / “Îk!/ KHm!/ {œk!/ Cœk@/ “ÎkA/ KHmA/ {œkA/ Cœk`/ “Îka/ KHma/ {œka/ Cœk€/ “Îk / “ÎkÀ/ “ÂQÁ/ KHmà/ “Îká/ KHm0 KHm!0 KHmA0 KHma0 KHm0 KHm¡0 KHmÁ0 KHmá0 KHm1 KHm!1 KHm1 KHm1 {œk1 Cœk¡1 KHm¡1 {œk¡1 CœkÁ1 KHmÁ1 {œkÁ1 Cœká1 KHmá1 {œká1 Cœk2 KHm!2 KHmA2 KHma2 KHm2 KHm¡2 KHmÁ2 KHmá2 KHm3 KHm3 {œk3 Cœk!3 KHmA3 KHma3 KHm3 KHm¡3 KHmÁ3 KHmá3 KHm4 KHmÁ4 KHmÁ4 {œkÁ4 Cœk5 KHm5 {œk5 Cœk¡5 KHm¡5 {œk¡5 CœkÁ5 KHmÁ5 {œkÁ5 Cœká5 KHmá5 {œká5 Cœk6 KHm6 {œk6 Cœk!6 KHmA6 KHma6 KHm6 KHm¡6 KHmÁ6 KHm!7 KHmA7 KHma7 KHm7 KHm7 {œk7 Cœk8 KHm8 {œk8 Cœk!8 KHm!8 {œk!8 CœkA8 KHmA8 {œkA8 Cœka8 KHma8 {œka8 Cœk8 KHm8 {œk8 Cœk¡8 KHm¡8 {œk¡8 Cœk9 KHm9 {œk9 Cœk!9 KHm!9 {œk!9 CœkA9 KHmA9 {œkA9 Cœka9 KHma9 {œka9 Cœk9 KHm9 {œk9 Cœk¡9 KHm¡9 {œk¡9 CœkÁ9 KHmÁ9 {œkÁ9 Cœk¡: KHm¡: {œk¡: CœkÁ: KHmÁ: {œkÁ: Cœká: KHmá: {œká: Cœk; KHm; {œk; Cœk; KHm; {œk; Cœk¡; KHm¡; {œk¡; Cœk!< KHm!< {œk!< CœkA< KHmA< {œkA< Cœka< KHma< {œka< CœkÁ< KHmá< KHm= KHm!= KHmA= KHma= KHm= KHm¡= KHm¡= {œk¡= CœkÁ= KHmÁ= {œkÁ= Cœk? KHm? {œk? Cœk!? KHm!? {œk!? CœkA? KHmA? {œkA? Cœka? KHma? {œka? Cœk? KHm? {œk? Cœk¡? KHm¡? {œk¡? CœkÁ? KHmÁ? {œkÁ? Cœká? KHmá? {œká? Cœk@ KHm@ {œk@ Cœk!@ KHm!@ {œk!@ CœkA@ KHmA@ {œkA@ Cœka@ KHma@ {œka@ Cœk@ KHm@ {œk@ Cœk¡@ KHm¡@ {œk¡@ CœkÁ@ KHmÁ@ {œkÁ@ Cœká@ KHmá@ {œká@ CœkA KHmA {œkA Cœk!A KHm!A {œk!A CœkAA KHmAA {œkAA CœkaA KHmaA {œkaA CœkA KHm¡A KHmÁA KHmáA KHmB KHm!B KHmAB KHmaB KHmB KHm¡B KHmÁB KHmáB KHmC KHm!C KHmAC KHmaC KHmC KHm¡C KHm¡C {œk¡C CœkÁC KHmÁC {œkÁC CœkáC KHmáC {œkáC CœkD KHmD {œkD CœkD KHm¡D KHmÁD KHmáD KHmE KHm!E KHmAE KHmaE KHmE KHm¡E KHm¡E {œk¡E CœkÁE KHmÁE {œkÁE CœkáE KHmáE {œkáE CœkF KHmF {œkF Cœk!F KHm!F {œk!F CœkAF KHmAF {œkAF CœkH KHmH {œkH Cœk¡H KHm¡H {œk¡H CœkÁH KHmÁH {œkÁH CœkáH KHmáH {œkáH CœkI KHmI {œkI Cœk!I KHm!I {œk!I CœkAI KHmAI {œkAI CœkaI KHmaI {œkaI CœkI KHmI {œkI Cœk¡I KHm¡I {œk¡I CœkÁI KHmÁI {œkÁI CœkáI KHmáI {œkáI CœkJ KHmJ {œkJ Cœk!J KHm!J {œk!J CœkAJ KHmAJ {œkAJ CœkaJ KHmaJ {œkaJ CœkJ KHmJ {œkJ Cœk¡J KHm¡J {œk¡J CœkÁJ KHmÁJ {œkÁJ CœkáJ KHmáJ {œkáJ CœkK KHmK {œkK Cœk!K KHm!K {œk!K CœkAK KHmAK {œkAK CœkaK KHmaK {œkaK CœkK KHmK {œkK Cœk¡K KHm¡K {œk¡K CœkÁK KHmÁK {œkÁK CœkáK KHmáK {œkáK CœkL KHmL {œkL Cœk!L KHm!L {œk!L CœkAL KHmAL {œkAL CœkaL KHmaL {œkaL CœkL KHmL {œkL Cœk¡L KHmÁL KHm!M KHm!M {œk!M CœkAM KHmAM {œkAM CœkaM KHmaM {œkaM CœkM KHmM {œkM Cœk¡M KHm¡M {œk¡M CœkÁM KHmÁM {œkÁM CœkáM KHmáM {œkáM CœkN KHmN {œkN Cœk!N KHm!N {œk!N CœkAN KHmAN {œkAN CœkaN KHmaN {œkaN CœkN KHmN {œkN Cœk¡N KHm¡N {œk¡N CœkÁN KHmÁN {œkÁN CœkáN KHmáN {œkáN CœkO KHmO {œkO Cœk!O KHm!O {œk!O CœkAO KHmAO {œkAO CœkaO KHmaO {œkaO Cœk¡Q KHm¡Q {œk¡Q CœkÁQ KHmÁQ {œkÁQ CœkáQ KHmáQ {œkáQ CœkR KHmR {œkR Cœk!R KHm!R {œk!R CœkAR KHmAR {œkAR CœkaR KHmaR {œkaR CœkS KHmS {œkS Cœk!S KHm!S {œk!S CœkAS KHmAS {œkAS CœkaS KHmaS {œkaS CœkS KHmS {œkS Cœk¡S KHm¡S {œk¡S CœkÁS KHmÁS {œkÁS CœkáS KHmáS {œkáS CœkT KHmT {œkT Cœk!T KHm!T {œk!T CœkAT KHmAT {œkAT Cœk¡T KHm¡T {œk¡T CœkÁT KHmÁT {œkÁT CœkáT KHmáT {œkáT CœkU KHmU {œkU Cœk!U KHm!U {œk!U CœkÁU KHmÁU {œkÁU CœkáU KHmáU {œkáU CœkV KHmV {œkV CœkaV KHmaV {œkaV CœkV KHmV {œkV Cœk¡V KHm¡V {œk¡V CœkW KHmW {œkW Cœk!W KHm!W {œk!W CœkAW KHmAW {œkAW CœkaW KHmaW {œkaW CœkW KHmW {œkW Cœk¡W KHm¡W {œk¡W CœkÁW KHmÁW {œkÁW CœkáW KHmáW {œkáW CœkX KHmX {œkX Cœk!X KHm!X {œk!X CœkAX KHmAX {œkAX CœkaX KHmaX {œkaX CœkX KHmX {œkX Cœk!Z KHm!Z {œk!Z CœkAZ KHmAZ {œkAZ CœkaZ KHmaZ {œkaZ CœkZ KHmZ {œkZ Cœk¡Z KHm¡Z {œk¡Z CœkÁZ KHmÁZ {œkÁZ CœkáZ KHmáZ {œkáZ Cœk[ KHm[ {œk[ Cœk![ KHm![ {œk![ CœkA[ KHmA[ {œkA[ Cœka[ KHma[ {œka[ Cœk[ KHm[ {œk[ Cœk¡[ KHm¡[ {œk¡[ CœkÁ[ KHmÁ[ {œkÁ[ Cœká[ KHmá[ {œká[ Cœk\ KHm\ {œk\ Cœk!\ KHm!\ {œk!\ CœkA\ KHmA\ {œkA\ Cœka\ KHma\ {œka\ Cœk\ KHm\ {œk\ Cœk¡\ KHm¡\ {œk¡\ CœkÁ\ KHmÁ\ {œkÁ\ Cœká\ KHmá\ {œká\ Cœk] KHm] {œk] Cœk!] KHm!] {œk!] CœkA] KHmA] {œkA] Cœka] KHma] {œka] Cœk] KHm] {œk] Cœk¡] KHm¡] {œk¡] CœkÁ] KHmÁ] {œkÁ] Cœká] KHmá] {œká] Cœk^ KHm^ {œk^ Cœk!^ KHm!^ {œk!^ CœkA^ KHmA^ {œkA^ Cœka^ KHma^ {œka^ Cœk^ KHm^ {œk^ Cœk¡^ KHm¡^ {œk¡^ CœkÁ^ KHmÁ^ {œkÁ^ Cœká^ KHmá^ {œká^ Cœk_ KHm_ {œk_ Cœk!_ KHm!_ {œk!_ CœkA_ KHmA_ {œkA_ Cœkk KHmk {œkk Cœk¡k KHm¡k {œk¡k CœkÁk KHmÁk {œkÁk Cœkák KHmák {œkák Cœkl KHml {œkl Cœk!l KHm!l {œk!l CœkAl KHmAl {œkAl Cœkal KHmal {œkal Cœkl KHml {œkl Cœk¡l KHm¡l {œk¡l CœkÁl KHmÁl {œkÁl Cœkál KHmál {œkál Cœkm KHmm {œkm Cœk!m KHm!m {œk!m CœkAm KHmAm {œkAm Cœkam KHmam {œkam Cœkm KHmm {œkm Cœk¡m KHm¡m {œk¡m CœkÁm KHmÁm {œkÁm Cœkám KHmám {œkám Cœkn KHmn {œkn Cœk!n KHm!n {œk!n CœkAn KHmAn {œkAn Cœkan KHman {œkan Cœkn KHmn {œkn Cœk¡n KHm¡n {œk¡n CœkÁn KHmÁn {œkÁn Cœkán KHmán {œkán Cœko KHmo {œko Cœk!o KHm!o {œk!o CœkAo KHmAo {œkAo Cœkao KHmao {œkao Cœko KHmo {œko Cœk¡o KHm¡o {œk¡o CœkÁo KHmÁo {œkÁo Cœkáo KHmáo {œkáo Cœkp KHmp {œkp Cœk!p KHm!p {œk!p CœkAp KHmAp {œkAp Cœkap KHmap {œkap Cœkp KHmp {œkp Cœk¡p KHm¡p {œk¡p CœkÁp KHmÁp {œkÁp Cœkáp KHmáp {œkáp Cœkq KHmq {œkq Cœk!q KHm!q {œk!q CœkAq KHmAq {œkAq Cœkaq KHmaq {œkaq Cœkq KHmq {œkq Cœk¡q KHm¡q {œk¡q CœkÁq KHmÁq {œkÁq Cœkáq KHmáq {œkáq Cœkr KHmr {œkr Cœk!r KHm!r {œk!r CœkAr KHmAr {œkAr Cœkar KHmar {œkar Cœkr KHmr {œkr Cœk¡r KHm¡r {œk¡r CœkÁr KHmÁr {œkÁr Cœkár KHmár {œkár Cœks KHms {œks Cœk!s KHm!s {œk!s CœkAs KHmAs {œkAs Cœkas KHmas {œkas Cœks KHms {œks Cœk¡s KHm¡s {œk¡s CœkÁs KHmÁs {œkÁs Cœkás KHmás {œkás Cœkt KHmt {œkt Cœk!t KHm!t {œk!t CœkAt KHmAt {œkAt Cœkat KHmat {œkat Cœkt KHmt {œkt Cœk¡t KHm¡t {œk¡t CœkÁt KHmÁt {œkÁt Cœkát KHmát {œkát Cœku KHmu {œku Cœk!u KHm!u {œk!u CœkAu KHmAu {œkAu Cœkau KHmau {œkau Cœku KHmu {œku Cœk¡u KHm¡u {œk¡u CœkÁu KHmÁu {œkÁu Cœkáu KHmáu {œkáu Cœkv KHmv {œkv Cœk!v KHm!v {œk!v CœkAv KHmAv {œkAv Cœkav KHmav {œkav Cœkv KHmv {œkv Cœk¡v KHm¡v {œk¡v CœkÁv KHmÁv {œkÁv Cœkáv KHmáv {œkáv Cœkw KHmw {œkw Cœk!w KHm!w {œk!w CœkAw KHmAw {œkAw Cœkaw KHmaw {œkaw Cœkw KHmw {œkw Cœk¡w KHm¡w {œk¡w CœkÁw KHmÁw {œkÁw Cœkáw KHmáw {œkáw Cœkx KHmx {œkx Cœk!x KHm!x {œk!x CœkAx KHmAx {œkAx Cœkax KHmax {œkax Cœkx KHmx {œkx Cœk¡x KHm¡x {œk¡x CœkÁx KHmÁx {œkÁx Cœkáx KHmáx {œkáx Cœky KHmy {œky Cœk!y KHm!y {œk!y CœkAy KHmAy {œkAy Cœkay KHmay {œkay Cœky KHmy {œky Cœk¡y KHm¡y {œk¡y CœkÁy KHmÁy {œkÁy Cœkáy KHmáy {œkáy Cœkz KHmz {œkz Cœk!z KHm!z {œk!z CœkAz KHmAz {œkAz Cœkaz KHmaz {œkaz Cœkz KHmz {œkz Cœk¡z KHm¡z {œk¡z CœkÁz KHmÁz {œkÁz Cœkáz KHmáz {œkáz Cœk{ KHm{ {œk{ Cœk!{ KHm!{ {œk!{ CœkA{ KHmA{ {œkA{ Cœka{ KHma{ {œka{ Cœk{ KHm{ {œk{ Cœk¡{ KHm¡{ {œk¡{ CœkÁ{ KHmÁ{ {œkÁ{ Cœká{ KHmá{ {œká{ Cœk| KHm| {œk| Cœk!| KHm!| {œk!| CœkA| KHmA| {œkA| Cœka| KHma| {œka| Cœk| KHm| {œk| Cœk¡| KHm¡| {œk¡| CœkÁ| KHmÁ| {œkÁ| Cœká| KHmá| {œká| Cœk} KHm} {œk} Cœk!} KHm!} {œk!} CœkA} KHmA} {œkA} Cœka} KHma} {œka} Cœk} KHm} {œk} Cœk¡} KHm¡} {œk¡} CœkÁ} KHmÁ} {œkÁ} Cœká} KHmá} {œká} Cœk~ KHm~ {œk~ Cœk!~ KHmA~ KHma~ KHm~ KHm¡~ KHmÁ~ KHmá~ KHm KHm! KHmÁ KHmá KHm€ KHm!€ KHma€ KHma€ {œka€ Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk‚ KHm‚ {œk‚ Cœk!‚ KHm!‚ {œk!‚ CœkA‚ KHmA‚ {œkA‚ CœkÁ‚ KHmÁ‚ {œkÁ‚ Cœká‚ KHmá‚ {œká‚ Cœkƒ KHmƒ {œkƒ Cœk!ƒ KHm!ƒ {œk!ƒ CœkAƒ KHmAƒ {œkAƒ Cœkaƒ KHmaƒ {œkaƒ CœkÁƒ KHmÁƒ {œkÁƒ CœkრKHmრ{œkრCœk„ KHm„ {œk„ Cœk!„ KHm!„ {œk!„ CœkA„ KHma„ KHm„ KHm¡„ KHmÁ„ KHmá„ KHm… KHm!… KHmA… KHmA… {œkA… Cœka… KHma… {œka… Cœk… KHm… {œk… Cœk¡… KHm¡… {œk¡… CœkÁ… KHmÁ… {œkÁ… Cœká… KHmá… {œká… Cœk† KHm† {œk† Cœk!† KHm!† {œk!† Cœk!‡ KHm!‡ {œk!‡ CœkA‡ KHmA‡ {œkA‡ Cœk!‰ KHm!‰ {œk!‰ CœkA‰ KHmA‰ {œkA‰ Cœka‰ KHma‰ {œka‰ Cœk‰ KHm‰ {œk‰ Cœk¡‰ KHm¡‰ {œk¡‰ CœkÁ‰ KHmÁ‰ {œkÁ‰ CœkበKHmበ{œkበCœkŠ KHmŠ {œkŠ Cœk!Š KHm!Š {œk!Š CœkAŠ KHmAŠ {œkAŠ CœkaŠ KHmaŠ {œkaŠ CœkŠ KHmŠ {œkŠ Cœk¡Š KHm¡Š {œk¡Š CœkÁŠ KHmÁŠ {œkÁŠ CœkአKHmአ{œkአCœk‹ KHm‹ {œk‹ Cœk!‹ KHm!‹ {œk!‹ CœkA‹ KHmA‹ {œkA‹ Cœka‹ KHma‹ {œka‹ Cœk‹ KHm‹ {œk‹ Cœk¡‹ KHm¡‹ {œk¡‹ CœkÁ‹ KHmÁ‹ {œkÁ‹ Cœká‹ KHmá‹ {œká‹ CœkŒ KHmŒ {œkŒ Cœk!Œ KHm!Œ {œk!Œ CœkAŒ KHmAŒ {œkAŒ CœkaŒ KHmaŒ {œkaŒ CœkŒ KHmŒ {œkŒ Cœk¡Œ KHm¡Œ {œk¡Œ CœkÁŒ KHmÁŒ {œkÁŒ CœkጠKHmጠ{œkጠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká CœkŽ KHmŽ {œkŽ Cœk!Ž KHm!Ž {œk!Ž CœkAŽ KHmAŽ {œkAŽ CœkaŽ KHmaŽ {œkaŽ CœkŽ KHmŽ {œkŽ Cœk¡Ž KHm¡Ž {œk¡Ž CœkÁŽ KHmÁŽ {œkÁŽ CœkᎠKHmᎠ{œkᎠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk!• KHm!• {œk!• CœkA• KHmA• {œkA• Cœka• KHma• {œka• Cœk• KHm• {œk• Cœk¡• KHm¡• {œk¡• CœkÁ• KHmÁ• {œkÁ• Cœká• KHmá• {œká• Cœk– KHm– {œk– Cœk!– KHm!– {œk!– CœkA– KHmA– {œkA– Cœka– KHma– {œka– Cœk– KHm– {œk– Cœk¡– KHm¡– {œk¡– CœkÁ– KHmÁ– {œkÁ– Cœká– KHmá– {œká– Cœk— KHm— {œk— Cœk!— KHm!— {œk!— CœkA— KHmA— {œkA— Cœka— KHma— {œka— Cœk— KHm— {œk— Cœk¡— KHm¡— {œk¡— CœkÁ— KHmÁ— {œkÁ— Cœká— KHmá— {œká— Cœk˜ KHm˜ {œk˜ Cœk!˜ KHm!˜ {œk!˜ CœkA˜ KHmA˜ {œkA˜ Cœka˜ KHma˜ {œka˜ Cœk˜ KHm˜ {œk˜ Cœk¡˜ KHm¡˜ {œk¡˜ CœkÁ˜ KHmÁ˜ {œkÁ˜ CœkᘠKHmᘠ{œkᘠCœk™ KHm™ {œk™ Cœk!™ KHm!™ {œk!™ CœkA™ KHmA™ {œkA™ Cœka™ KHma™ {œka™ Cœk™ KHm™ {œk™ Cœk¡™ KHm¡™ {œk¡™ CœkÁ™ KHmÁ™ {œkÁ™ Cœká™ KHmá™ {œká™ Cœkš KHmš {œkš Cœk!š KHm!š {œk!š CœkAš KHmAš {œkAš Cœkaš KHmaš {œkaš Cœkš KHmš {œkš Cœk¡š KHm¡š {œk¡š CœkÁš KHmÁš {œkÁš Cœkáš KHmáš {œkáš Cœk› KHm› {œk› Cœk!› KHm!› {œk!› CœkA› KHmA› {œkA› Cœka› KHma› {œka› Cœk› KHm› {œk› Cœk¡› KHm¡› {œk¡› CœkÁ› KHmÁ› {œkÁ› Cœká› KHmá› {œká› Cœkœ KHmœ {œkœ Cœk!œ KHm!œ {œk!œ Cœk¡ {œk¡ Cœk@¡ “Ø€¡ “Ø ¡ “ÎkÀ¡ “ÎkÁ¡ KHmÁ¡ {œkÁ¡ Cœkà¡ “Îká¡ KHmá¡ {œká¡ Cœk¢ “Îk¢ KHm¢ {œk¢ Cœk!¢ KHm!¢ {œk!¢ Cœk@¢ “ÎkA¢ KHmA¢ {œkA¢ Cœk`¢ “Îka¢ KHma¢ {œka¢ Cœk€¢ “Îk¢ KHm¢ {œk¢ Cœk ¢ “Îk¡¢ KHm¡¢ {œk¡¢ CœkÀ¢ “ÎkÁ¢ KHmÁ¢ {œkÁ¢ Cœkࢠ“ØᢠKHmᢠ{œkᢠCœk£ “Ø£ KHm£ {œk£ Cœk £ “Îk!£ KHm!£ {œk!£ Cœk@£ “ÎkA£ KHmA£ {œkA£ Cœk`£ “Îka£ KHma£ {œka£ Cœk€£ “Îk£ KHm£ {œk£ Cœk £ “Îk¡£ KHm¡£ {œk¡£ CœkÀ£ “ÎkÁ£ KHmÁ£ {œkÁ£ Cœk࣠“ØᣠKHmᣠ{œkᣠCœk¤ “Îk¤ KHm¤ {œk¤ Cœk ¤ “Ø!¤ KHm!¤ {œk!¤ Cœk@¤ “ÎkA¤ KHmA¤ {œkA¤ Cœk`¤ “Îka¤ KHma¤ {œka¤ Cœk€¤ “Îk¤ KHm¤ {œk¤ Cœk ¤ “Îk¡¤ KHm¡¤ {œk¡¤ CœkÀ¤ “ÎkÁ¤ KHmÁ¤ {œkÁ¤ Cœk¥ “Îk ¥ “Îk@¥ “Ø`¥ “Ø ¥ “ÎkÀ¥ “ׂॠ“ׂ¦ “ÎkÀ¦ “ا “Ø § “Îk!§ KHm!§ {œk!§ Cœk@§ “ÎkA§ KHmA§ {œkA§ Cœk€§ “Îk § “Îk¡§ KHm¡§ {œk¡§ CœkÀ§ “ÎkÁ§ KHmÁ§ {œkÁ§ Cœkà§ “Îká§ KHmá§ {œká§ Cœk¨ “Îk¨ KHm¨ {œk¨ Cœk ¨ “Îk!¨ KHm!¨ {œk!¨ Cœk@¨ “ÎkA¨ KHmA¨ {œkA¨ Cœk`¨ “Îka¨ KHma¨ {œka¨ Cœk€¨ “ׂ¨ KHm¨ {œk¨ Cœk ¨ {œk ¨ CœkÀ¨ {œkÀ¨ Cœkਠ“Îk© “Îk© KHm© {œk© Cœk © “Îk!© KHm!© {œk!© Cœk@© “ØA© KHmA© {œkA© Cœk`© “Îka© KHma© {œka© Cœk€© “Îk © “ØÀ© “Øà© “Øá© KHmá© {œká© Cœkª “Îkª KHmª {œkª Cœk ª “Ø!ª KHm!ª {œk!ª Cœk@ª “ÎkAª KHmAª {œkAª Cœk`ª “Øaª KHmaª {œkaª Cœkª KHmª {œkª Cœk ª “Îk¡ª KHm¡ª {œk¡ª CœkÀª “Îkઠ“Îk« “Îk « “Îk@« “Îk`« “Îk€« “Îk« KHm« {œk« Cœk « “Îk¡« KHm¡« {œk¡« CœkÀ« “ÎkÁ« KHmÁ« {œkÁ« Cœkà« “Îká« KHmá« {œká« Cœk¬ “Îk¬ KHm¬ {œk¬ Cœk ¬ “Îk@¬ “Îk`¬ “Îk€¬ “Îk ¬ “Îk¡¬ KHmÁ¬ KHmଠ“ÎkᬠKHm­ “Îk­ KHm ­ “Îk!­ KHm@­ “ÎkA­ KHm`­ “Îka­ KHm€­ “Îk­ KHm ­ “Îk¡­ KHmÀ­ “ÎkÁ­ KHmà­ “Îká­ KHm® KHm ® “Îk!® KHm@® “ÎkA® KHm`® “Îka® KHm€® “Îk® KHm ® “Îk¡® KHmÁ® KHmà® “¤lá® KHm¯ “¤l¯ KHm¯ {œk¯ Cœk ¯ “¤l!¯ KHm!¯ {œk!¯ Cœk@¯ “¤lA¯ KHm`¯ “¤la¯ KHm€¯ “ׂ¯ KHm ¯ “¤l¡¯ KHmÁ¯ KHmÁ¯ {œkÁ¯ Cœk௠“ׂᯠKHmᯠ{œkᯠCœk° “¤l° KHm° {œk° Cœk ° “ׂ!° KHm!° {œk!° Cœk@° “ׂA° KHmA° {œkA° Cœk`° “Ø€° “ׂ ° “ׂÀ° “ׂà° “ׂ± “ر KHm± {œk± Cœk ± “Îk!± KHm!± {œk!± Cœk@± “ÎkA± KHmA± {œkA± Cœka± KHma± {œka± Cœk± KHm± {œk± Cœkà± “Îk² “Îk ² “Îk!² KHm!² {œk!² Cœk@² “ÎkA² KHmA² {œkA² Cœka² KHma² {œka² Cœk€² “Îk² KHm² {œk² Cœk ² “Îk¡² KHm¡² {œk¡² CœkÀ² “ÎkÁ² KHmÁ² {œkÁ² Cœkಠ“Øá² KHmá² {œká² Cœk³ “س KHm³ {œk³ Cœk!³ KHm!³ {œk!³ Cœk@³ “ׂ¡³ KHm¡³ {œk¡³ CœkÁ³ KHmÁ³ {œkÁ³ Cœká³ KHmá³ {œká³ Cœk´ “>ä´ KHm´ {œk´ Cœk@´ “ׂ`´ “úi€´ “Q‹´ KHm ´ “Îk¡´ KHmÀ´ “ÎkÁ´ KHmà´ “¤lá´ KHmµ “ص KHm µ “Ø!µ KHm@µ “ØAµ KHm`µ “òZaµ KHm€µ “u’µ KHm µ “òZ¡µ KHmÀµ “òZÁµ KHmൠ“Øáµ KHm¶ KHm ¶ “1Q!¶ KHm@¶ “òZA¶ KHm`¶ “1Qa¶ KHm€¶ “H¶ KHm ¶ “H¡¶ KHmÀ¶ “ØÁ¶ KHmà¶ “Îká¶ KHm· “Îk· KHm · “Ø!· KHm@· “ØA· KHm`· “Øa· KHm€· “¤l· KHm · “ׂ¡· KHmÀ· “ÎkÁ· KHmà· “ׂá· KHm¸ “Îk¸ KHm ¸ “Îk!¸ KHm@¸ “ׂA¸ KHm`¸ “ׂa¸ KHma¸ {œka¸ Cœk€¸ “Ø ¸ “Îk¡¸ KHmÀ¸ “¤lÁ¸ KHmภ“ÎkḠKHm¹ “ׂ¹ KHm ¹ “ׂ!¹ KHmA¹ KHma¹ KHm¹ KHm¡¹ KHmÁ¹ KHmÁ¹ {œkÁ¹ Cœká¹ KHmº KHm!º KHmAº KHmaº KHmº KHm¡º KHmÁº KHmẠKHm» KHm!» KHm!» {œk!» CœkA» KHma» KHm€» “[» KHm » “€3¡» KHmÀ» “9þÁ» KHmà» “w7 á» KHm¼ “õ& ¼ KHm!¼ KHm@¼ “ØA¼ KHm`¼ “Øa¼ KHm€¼ “Îk¼ KHm ¼ “Îk¡¼ KHmÀ¼ “ÎkÁ¼ KHm༠“Øá¼ KHmá¼ {œká¼ Cœk½ “Îk½ KHm ½ “Îk!½ KHm@½ “ÎkA½ KHmA½ {œkA½ Cœk`½ “Îka½ KHma½ {œka½ Cœk€½ “Îkའ“Îká½ KHmá½ {œká½ Cœk¾ “ؾ KHm¾ {œk¾ Cœk ¾ “Îk!¾ KHm!¾ {œk!¾ Cœk@¾ “ÎkA¾ KHmA¾ {œkA¾ Cœk`¾ “Îka¾ KHma¾ {œka¾ Cœk€¾ “Îk¾ KHm ¾ “Ø¡¾ KHmÀ¾ “ØÁ¾ KHmÁ¾ {œkÁ¾ Cœkྠ“Øá¾ KHmá¾ {œká¾ Cœk¿ “òZ¿ KHm¿ {œk¿ Cœk ¿ “òZ@¿ “Ø`¿ “Îka¿ KHma¿ {œka¿ Cœk€¿ “ׂ¿ KHm¿ {œk¿ Cœk ¿ “Ø¡¿ KHm¡¿ {œk¡¿ CœkÀ¿ “ׂÁ¿ KHmÁ¿ {œkÁ¿ Cœkà¿ “ÎkÀ “Îk À “Îk@À “ÎkAÀ KHmAÀ {œkAÀ Cœk`À “ÎkaÀ KHmaÀ {œkaÀ Cœk€À “Îk À “ÎkÀÀ “ÎkàÀ “ÎkáÀ KHmáÀ {œkáÀ CœkÁ “ÎkÁ KHmÁ {œkÁ Cœk Á “Îk!Á KHm!Á {œk!Á Cœk@Á “ÎkAÁ KHmAÁ {œkAÁ Cœk`Á “ÎkaÁ KHmaÁ {œkaÁ Cœk€Á “ÎkÁ KHmÁ {œkÁ Cœk Á “Îk¡Á KHm¡Á {œk¡Á CœkÁÁ KHmÁÁ {œkÁÁ CœkàÁ “ÎkáÁ KHmáÁ {œkáÁ Cœk “Îk KHm {œk Cœk@ “Îk` “Îk€Â “Îk Â “ÎkÀ “Îkà “Îká KHmá {œká Cœkà “Îkà KHmà {œkà Cœk à “Îk!à KHm!à {œk!à Cœk@à “ÎkAà KHm`à “Îkaà KHm€Ã “Îkà KHm¡Ã KHmÁà KHmàà “Îkáà KHmÄ “ØÄ KHm!Ä KHm@Ä “ÎkAÄ KHmaÄ KHm€Ä “ÎkÄ KHm Ä “Îk¡Ä KHmÀÄ “ÎkÁÄ KHmáÄ KHmÅ “ÎkÅ KHm!Å KHm@Å “ÎkAÅ KHmaÅ KHm€Å “ÎkÅ KHm¡Å KHmÀÅ “ÎkÁÅ KHmáÅ KHmÆ KHm Æ “Îk!Æ KHmAÆ KHmAÆ {œkAÆ Cœk`Æ “ÎkaÆ KHmaÆ {œkaÆ Cœk€Æ {œk Æ {œk¡Æ KHm¡Æ {œk¡Æ CœkÀÆ {œkàÆ {œkáÆ KHmáÆ {œkáÆ CœkÇ {œkÇ KHmÇ {œkÇ Cœk!Ç KHm!Ç {œk!Ç CœkAÇ KHmaÇ KHmÇ KHm¡Ç KHmÁÇ KHmÁÇ {œkÁÇ CœkáÇ KHmÈ KHm È “Ø!È KHm@È “ØAÈ KHm`È “ØaÈ KHm€È “ØÈ KHm È “Ø¡È KHm¡È {œk¡È CœkÀÈ “ØÁÈ KHmÁÈ {œkÁÈ CœkàÈ “ØáÈ KHmáÈ {œkáÈ CœkÉ “ØÉ KHmÉ {œkÉ Cœk É “Ø@É “Ø`É “Ø€É “Ø É “ØÀÉ “ÎkÁÉ KHmÁÉ {œkÁÉ CœkàÉ “ÎkáÉ KHmáÉ {œkáÉ CœkÊ “ÎkÊ KHmÊ {œkÊ Cœk Ê “Ø!Ê KHm!Ê {œk!Ê Cœk@Ê “!×AÊ KHmAÊ {œkAÊ Cœk`Ê “¤laÊ KHmaÊ {œkaÊ Cœk€Ê “¤lÊ KHmÊ {œkÊ Cœk Ê “¤l¡Ê KHmÀÊ “¤lÁÊ KHmàÊ “¤láÊ KHmË “¤lË KHm Ë “Ø!Ë KHm!Ë {œk!Ë Cœk@Ë “ØAË KHmAË {œkAË Cœk`Ë “ÎkaË KHmaË {œkaË CœkË KHmË {œkË Cœk Ë “¤l¡Ë KHm¡Ë {œk¡Ë CœkÀË “ØÁË KHmÁË {œkÁË CœkàË “ׂáË KHmáË {œkáË CœkÌ “¤l Ì “Îk@Ì “Îk`Ì “Îk€Ì “Îk Ì “Îk¡Ì KHmÀÌ “ÎkÁÌ KHmàÌ “ÎkáÌ KHmÍ “ÎkÍ KHm Í “Îk!Í KHmAÍ KHmaÍ KHmÍ KHm¡Í KHmÀÍ “ÎkÁÍ KHmáÍ KHmÎ KHm!Î KHmAÎ KHm`Î “ÎkaÎ KHmÎ KHm¡Î KHmÁÎ KHmáÎ KHmÏ KHm!Ï KHmAÏ KHmaÏ KHmÏ KHm Ï “Îk¡Ï KHmÀÏ “ÎkÁÏ KHmàÏ “ÎkáÏ KHmÐ “ÎkÐ KHm Ð “Îk!Ð KHm@Ð “ÎkAÐ KHm`Ð “ÎkaÐ KHm€Ð “ׂÐ KHm¡Ð KHmÀÐ “ØÁÐ KHmÁÐ {œkÁÐ CœkàÐ “ØÑ “Ø Ñ “ÎkÑ KHmÑ {œkÑ Cœk¡Ñ KHm¡Ñ {œk¡Ñ CœkÀÑ “ØÁÑ KHmÁÑ {œkÁÑ CœkàÑ “ØáÑ KHmáÑ {œkáÑ CœkÒ “Ø Ò “Îk@Ò “Îk`Ò “ÎkaÒ KHm€Ò “ÎkÒ KHm¡Ò KHmÀÒ “ÎkÁÒ KHmàÒ “ÎkáÒ KHmÓ “!×Ó KHm Ó “Îk!Ó KHm@Ó “ÎkAÓ KHm`Ó “ÎkaÓ KHm€Ó “ÎkÓ KHm Ó “Îk¡Ó KHmÀÓ “ÎkÁÓ KHmàÓ “ÎkáÓ KHmÔ “ÎkÔ KHm!Ô KHmAÔ KHm`Ô “>äaÔ KHm€Ô “ÎkÔ KHm Ô “Îk¡Ô KHmÀÔ “ØÁÔ KHmàÔ “ØáÔ KHmÕ “ÎkÕ KHm Õ “Îk!Õ KHm@Õ “ÎkAÕ KHm`Õ “ÎkaÕ KHm€Õ “ÎkÕ KHm Õ “Îk¡Õ KHmÀÕ “ÎkÁÕ KHmàÕ “ÎkáÕ KHmÖ “ÎkÖ KHm Ö “Îk!Ö KHm@Ö “ØAÖ KHm`Ö “ØaÖ KHm€Ö “ØÖ KHm¡Ö KHmÀÖ {œkÁÖ KHmàÖ {œkáÖ KHm× “Ø× KHm!× KHm@× “òZA× KHm`× “òZa× KHm€× “ׂ× KHm × “u’¡× KHmÀ× “ÎkÁ× KHmà× “òZá× KHmØ “u’Ø KHm Ø “Ø!Ø KHmAØ KHm`Ø “òZaØ KHm€Ø “òZØ KHm Ø “òZ¡Ø KHmÀØ “u’ÁØ KHmàØ “u’áØ KHmÙ “u’Ù KHm Ù “Ø!Ù KHm@Ù “ÎkAÙ KHm`Ù “ÎkaÙ KHm€Ù “ÎkÙ KHm¡Ù KHmÁÙ KHmàÙ “ׂáÙ KHmÚ “ÎkÚ KHm Ú “Îk!Ú KHm@Ú “ÎkAÚ KHm`Ú “ÎkaÚ KHmÚ KHm Ú “ׂ¡Ú KHmÁÚ KHmáÚ KHmÛ KHm!Û KHmAÛ KHmaÛ KHmÛ KHm¡Û KHmáÛ KHmáÛ {œkáÛ CœkÜ KHmÜ {œkÜ Cœk Ü “Îk!Ü KHm!Ü {œk!Ü Cœk@Ü “Ø`Ü “ØaÜ KHmaÜ {œkaÜ Cœk€Ü “ØÜ KHmÜ {œkÜ Cœk Ü “Ø¡Ü KHm¡Ü {œk¡Ü CœkÀÜ “ØàÜ “ØáÜ KHmáÜ {œkáÜ CœkÝ KHmÝ {œkÝ Cœk Ý “Îk!Ý KHm!Ý {œk!Ý Cœk`Ý “ÎkaÝ KHmaÝ {œkaÝ Cœk€Ý “ØÝ KHmÝ {œkÝ Cœk Ý “Ø¡Ý KHm¡Ý {œk¡Ý CœkÀÝ “ׂàÝ “ØÞ “Ø Þ “Ø@Þ “Ø`Þ “Ø€Þ “Ø Þ “ØÀÞ “ØàÞ “Øß “Ø ß “Ø@ß “Ø`ß “Øaß KHmaß {œkaß Cœk€ß {œk ß “ׂÀß “Øàß “Øà “Øà KHmà {œkà Cœk à “Ø!à KHm!à {œk!à Cœk@à “ØAà KHmAà {œkAà Cœk`à “Øaà KHmaà {œkaà Cœk€à “Øà KHmà {œkà Cœk à “Îk¡à KHm¡à {œk¡à CœkÀà “ÎkÁà KHmÁà {œkÁà Cœkàà “Øáà KHmáà {œkáà Cœká “Øá KHmá {œká Cœk á “Ø!á KHm!á {œk!á Cœk@á “ÎkAá KHm`á “Îkaá KHmá KHm á “Îk¡á KHmÀá “Îkâ KHmâ {œkâ Cœk!â KHm!â {œk!â Cœk@â “¤lAâ KHmAâ {œkAâ Cœk`â “Øaâ KHmaâ {œkaâ Cœk€â {œk â “Îkàâ “Îkã “Îk ã “Îk@ã “Œ)`ã “Îk€ã “Øã KHmã {œkã Cœk ã “ØÀã “Øàã “Îkä “Ø ä “Ø@ä “Ø`ä “Ø€ä “Ø ä “ØÀä “Øàä “Øå “Îk å “Ø@å “Îk`å “ׂ€å “ׂ å “ׂÀå “ׂàå “ׂæ {œk æ {œk@æ “¤l`æ “Îk€æ “Îk æ “ÎkÀæ “ׂàæ “ׂç “ׂ ç “ׂ@ç “¤l`ç “¤l€ç “ׂ ç “1Q¡ç KHm¡ç {œk¡ç CœkÀç “Øàç “Øè “Ø è “Ø@è “Ø`è “Ø€è “Îk è “ØÀè “Q‹àè “ׂáè KHmáè {œkáè Cœké “ׂ é “Îk@é “Îk`é “¤lÁé KHmÁé {œkÁé Cœkàé “ׂáé KHmáé {œkáé Cœkê “ׂ ê “ׂ@ê “ׂ`ê “ׂ€ê “Ø ê “Ø¡ê KHm¡ê {œk¡ê CœkÀê “ØÁê KHmÁê {œkÁê Cœkàê “Øáê KHmáê {œkáê Cœkë {œkë KHmë {œkë Cœk ë “Îk!ë KHm!ë {œk!ë Cœk@ë “Îk`ë “[aë KHmaë {œkaë Cœk€ë “Îkë KHmë {œkë Cœk ë “ÎkÀë “ÎkÁë KHmÁë {œkÁë Cœkàë “Îkáë KHmáë {œkáë CœkAì KHmAì {œkAì Cœk`ì “Îkaì KHmaì {œkaì Cœk€ì “Îkì KHmì {œkì Cœk¡ì KHm¡ì {œk¡ì CœkÀì “Øàì “Îkí “Îkí KHm í “Îk!í KHm@í “Îkaí KHmaí {œkaí Cœk€í “Îkí KHmí {œkí Cœk í “Îk¡í KHm¡í {œk¡í CœkÀí “ØÁí KHmÁí {œkÁí Cœkàí “Îkî KHmî {œkî Cœk î {œk!î KHm!î {œk!î Cœk@î “Îk`î “ׂ î “¤l¡î KHm¡î {œk¡î CœkÀî “¤lÁî KHmÁî {œkÁî Cœkàî “!×áî KHmáî {œkáî Cœkï “Œ)ï KHmï {œkï Cœk ï “«!ï KHm!ï {œk!ï Cœk@ï “ÎkAï KHmAï {œkAï Cœk`ï “Îkaï KHmaï {œkaï Cœk€ï “Îk ï “ÎkÀï “ÎkÁï KHmÁï {œkÁï Cœkáï KHmáï {œkáï Cœkð KHmð {œkð Cœk!ð KHm!ð {œk!ð Cœk€ð “Îk ð “!×Àð “!×Áð KHmÁð {œkÁð Cœkàð “Îkáð KHmáð {œkáð Cœkñ “Øñ KHmñ {œkñ Cœk ñ “Îk!ñ KHm!ñ {œk!ñ CœkAñ KHmAñ {œkAñ Cœk`ñ “ׂañ KHmañ {œkañ Cœk€ñ “Q‹ñ KHmñ {œkñ Cœk ñ “Œ)Àñ “€3àñ “¢9ò “ÎkAò KHmAò {œkAò Cœkaò KHmaò {œkaò Cœkò KHmò {œkò Cœk¡ò KHm¡ò {œk¡ò CœkÁò KHmÁò {œkÁò Cœkáò KHmáò {œkáò Cœk`ó “Ø€ó “Øó KHmó {œkó Cœk ó “ØÀó “Øàó “Îkô “Îkô KHmô {œkô Cœk ô “Îk!ô KHm!ô {œk!ô Cœk@ô “ØAô KHmAô {œkAô Cœk`ô “Øaô KHmaô {œkaô Cœk€ô “Îkô KHmô {œkô Cœk ô “Îk¡ô KHm¡ô {œk¡ô CœkÀô “ÎkÁô KHmÁô {œkÁô Cœkàô “Îkáô KHmáô {œkáô Cœkõ KHmõ {œkõ Cœk õ “Îk!õ KHm!õ {œk!õ Cœk@õ “ÎkAõ KHmAõ {œkAõ Cœk`õ “Øaõ KHmaõ {œkaõ Cœk€õ “Îk õ “Îk¡õ KHm¡õ {œk¡õ CœkÁõ KHmÁõ {œkÁõ Cœkàõ “ׂö “Ø ö “ׂ!ö KHm!ö {œk!ö Cœk@ö “Îk`ö “ׂ€ö “Ø ö “Ø¡ö KHm¡ö {œk¡ö CœkÁö KHmÁö {œkÁö Cœkàö “Îkáö KHmáö {œkáö Cœk÷ “Ø÷ KHm÷ {œk÷ Cœk!÷ KHm!÷ {œk!÷ Cœk@÷ “ØA÷ KHmA÷ {œkA÷ Cœka÷ KHma÷ {œka÷ Cœk€÷ “ׂ ÷ “ׂÀ÷ “õ& Á÷ KHmÁ÷ {œkÁ÷ Cœkà÷ “ׂø “ׂ ø “¤l@ø “ØAø KHmAø {œkAø Cœk`ø “ׂaø KHmaø {œkaø Cœk€ø “ׂø KHmø {œkø Cœk¡ø KHm¡ø {œk¡ø CœkÁø KHmÁø {œkÁø Cœkáø KHmáø {œkáø Cœkù “Øù KHmù {œkù Cœk ù “Ø!ù KHm!ù {œk!ù Cœk@ù “ØAù KHmAù {œkAù Cœkaù KHmaù {œkaù Cœkù KHmù {œkù Cœk ù “ØÀù “Îkàù “Îkú “Îk ú “ׂ@ú “ׂ`ú “ׂ€ú “Øú KHmú {œkú Cœk ú “Ø¡ú KHm¡ú {œk¡ú CœkÀú “ׂÁú KHmÁú {œkÁú Cœkàú “ׂû “Øû KHmû {œkû Cœk û “¤l!û KHm!û {œk!û Cœk@û “¤lAû KHm`û “Q‹aû KHm€û “!×û KHm û “¤l¡û KHmÀû “¤làû “!×ü “¤l ü “¤l@ü “!×`ü “Q‹€ü “úi ü “ò³Àü “úiàü “ׂý {œk ý “Ø@ý “Îk`ý “Îk€ý “!× ý “!×Àý “ׂàý “¤lþ “¤l þ “¤l@þ “Q‹`þ “ׂ€þ “ׂ þ “!×Àþ “ׂÁþ KHmàþ “Øáþ KHmÿ “!×ÿ KHm ÿ “ׂ!ÿ KHm@ÿ “ׂAÿ KHmAÿ {œkAÿ Cœk`ÿ “ׂaÿ KHm€ÿ “Îkÿ KHm ÿ “Îk¡ÿ KHmÀÿ “ׂÁÿ KHmàÿ “ׂáÿ KHm “ׂ KHm “Ø! KHm@ “ØA KHm` “Øa KHm€ “¤l KHm  “ׂ¡ KHmÀ “ׂÁ KHmà “Îká KHm “Ø KHm! KHmA KHm` “Øa KHm€ “Îk KHm¡ KHmÁ KHmá KHm KHm  “Ø! KHm@ “ÎkA KHm` “Øa KHm€ “ׂ KHm  “Îk¡ KHmÀ “ÎkÁ KHmá KHm KHm! KHm@ “ÎkA KHma KHm KHm¡ KHmÁ KHmá KHm {œk KHm  “Îk! KHm@ “ÎkA KHma KHm€ “ׂ KHm  “Îk¡ KHm¡ {œk¡ CœkÀ “€3Á KHmÁ {œkÁ Cœkà “€3á KHmá {œká Cœk “ׂ KHm {œk Cœk  “¤l! KHm! {œk! Cœk@ “ÎkA KHmA {œkA Cœka KHma {œka Cœk€ “ׂ KHm {œk Cœk@ “Ø` “Îk€ “1Q KHm {œk Cœk  “Ø¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk  {œk! KHm! {œk! Cœk@ “Q­` “Ø  “«¡ KHmÀ “«Á KHmà “«á KHm “« KHm! KHm@ “ÎkA KHm` “Øa KHm€ “Ø KHm  “Ø¡ KHmÀ “ÎkÁ KHmá KHm KHm {œk Cœk! KHm@ {œk@ Cœk` {œk` Cœka KHma {œka Cœk€ {œk€ Cœk KHm {œk Cœk  {œk  CœkÀ “Îkà “Îk “Îk KHm {œk Cœk “Îk! KHm! {œk! Cœk@ “ÎkA KHmA {œkA Cœk` “Îka KHma {œka Cœk€ “Îk KHm {œk Cœk  “Îk¡ KHm¡ {œk¡ CœkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk “Îk “Îk@ “Îk` “Îk€ “Îk  “Q‹À “¤là “Ø “!× “ׂ! KHm! {œk! Cœk@ “Îk` “Îk€ “¤l KHm {œk Cœk  “Îk¡ KHm¡ {œk¡ CœkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk “Îk KHm {œk Cœk {œk! KHm! {œk! Cœk@ “[A KHmA {œkA Cœka KHma {œka Cœk€ “>ä KHm {œk Cœk  “Ø¡ KHm¡ {œk¡ CœkÀ “ØÁ KHmÁ {œkÁ Cœkà “ׂ “>ä  “>ä@ “ׂ` “¤l€ “Îk  “ÎkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk “Îk KHm {œk Cœk  {œk@ {œk` {œka KHma {œka Cœk€ “Ø KHm {œk Cœk  “Îk¡ KHm¡ {œk¡ CœkÀ “Îkà “Îk “Îk KHm {œk Cœk  “Îk! KHm! {œk! Cœk@ “[A KHmA {œkA Cœk` “Îk€ “Îk  “Îk¡ KHm¡ {œk¡ CœkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk “Îk  “Ø@ “ØA KHmA {œkA Cœk` “Øa KHma {œka Cœk€ “Ø KHm {œk CœkÀ “Îkà “Øá KHmá {œká Cœk “ׂ KHm {œk Cœk  “Ø! KHm! {œk! Cœk@ “ׂ` “9þ KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHm “Îk KHm  “Îk! KHm! {œk! Cœk@ “ØA KHm` “Îka KHma {œka Cœk€ “Îk  “}À “Øà “!×A KHma KHma {œka Cœk€ {œk  “ÎkÀ “ÎkÁ KHmÁ {œkÁ Cœkà “Îká KHmá {œká Cœk KHm {œk Cœk  Skm! KHm! {œk! Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk KHm {œk Cœk  {œk  Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká CœkÀ “Îk! KHmA KHma KHm€ “Îká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk! KHm! {œk! Cœk ! {œk ! Cœk¡! KHmÀ! SkmÁ! KHmà! {œkà! Cœká! KHm" S~m" KHm" {œk" Cœk " {œk " Cœk@" S‹m`" {œk`" Cœk€" {œk€" Cœk " {œk " CœkÀ" {œkà" {œk# {œk # {œk@# {œk`# {œk€# {œk # {œk@$ “Îk`$ “Îk $ “ÎkÁ$ KHmÁ$ {œkÁ$ Cœká$ KHmá$ {œká$ Cœk% KHm% {œk% Cœka% KHma% {œka% Cœk% KHm% {œk% Cœk¡% KHm¡% {œk¡% CœkA& KHmA& {œkA& Cœka& KHma& {œka& Cœk& KHm& {œk& Cœk¡& KHm¡& {œk¡& Cœk!' KHm!' {œk!' CœkA' KHmA' {œkA' Cœka' KHma' {œka' Cœká' KHmá' {œká' Cœk( KHm( {œk( Cœk!( KHm!( {œk!( CœkA( KHmA( {œkA( Cœká( KHmá( {œká( Cœk) KHm) {œk) Cœk!) KHm!) {œk!) Cœk!+ KHm!+ {œk!+ CœkA+ KHmA+ {œkA+ Cœka+ KHma+ {œka+ CœkA, KHmA, {œkA, Cœka, KHma, {œka, Cœk, KHm, {œk, Cœk!- KHm!- {œk!- CœkA- KHmA- {œkA- Cœka- KHma- {œka- Cœk- KHm- {œk- Cœkà- Skm. {œk. Cœk . {œk . Cœk!. KHm!. {œk!. Cœk@. {œk@. Cœk`. {œk`. Cœk€. {œk€. Cœk¡. KHm¡. {œk¡. CœkÁ. KHmÁ. {œkÁ. Cœká. KHmá. {œká. Cœk/ KHm/ {œk/ Cœk / Skm@/ {œk@/ Cœk`/ {œk`/ Cœk€/ {œk€/ Cœk/ KHm/ {œk/ Cœk / {œk / Cœk¡/ KHm¡/ {œk¡/ CœkÁ/ KHmÁ/ {œkÁ/ Cœka0 KHma0 {œka0 CœkÀ0 {œkÀ0 Cœkà0 {œkà0 Cœká0 KHmá0 {œká0 Cœk1 KHm1 {œk1 Cœk!1 KHm!1 {œk!1 CœkA1 KHmA1 {œkA1 CœkÁ1 KHmÁ1 {œkÁ1 Cœká1 KHmá1 {œká1 Cœk2 KHm2 {œk2 Cœka2 KHma2 {œka2 CœkA3 KHmA3 {œkA3 Cœka3 KHma3 {œka3 Cœk3 KHm3 {œk3 Cœk 3 {œk 3 CœkÀ3 Skmà3 {œkà3 Cœká3 KHm4 S~m4 KHm 4 {œk 4 Cœk!4 KHm!4 {œk!4 Cœk@4 S‹mA4 KHmA4 {œkA4 Cœk`4 {œk`4 Cœka4 KHma4 {œka4 Cœk€4 {œk€4 Cœk4 KHm4 {œk4 Cœk 4 {œk 4 CœkÀ4 {œkÀ4 Cœkà4 {œkà4 Cœk5 {œk5 Cœk 5 {œk 5 Cœk!5 KHm!5 {œk!5 Cœk@5 {œk@5 CœkA5 KHmA5 {œkA5 Cœk`5 {œk`5 Cœka5 KHma5 {œka5 Cœk€5 {œk€5 Cœk 5 {œk 5 CœkÀ5 {œkÀ5 CœkÁ5 KHmÁ5 {œkÁ5 Cœkà5 {œkà5 Cœk6 {œk6 Cœk 6 {œk 6 Cœk!6 KHm!6 {œk!6 CœkA6 KHmA6 {œkA6 Cœka6 KHma6 {œka6 Cœk6 KHm6 {œk6 Cœk¡6 KHm¡6 {œk¡6 Cœk!7 KHm!7 {œk!7 CœkA7 KHmA7 {œkA7 Cœka7 KHma7 {œka7 Cœk7 KHm7 {œk7 Cœk¡7 KHm¡7 {œk¡7 CœkÁ7 KHmÁ7 {œkÁ7 Cœká7 KHmá7 {œká7 Cœk!8 KHm!8 {œk!8 CœkA8 KHmA8 {œkA8 Cœk8 KHm8 {œk8 Cœk 8 {œk¡8 KHm¡8 {œk¡8 CœkÀ8 {œkÁ8 KHmÁ8 {œkÁ8 Cœkà8 {œká8 KHmá8 {œká8 Cœk9 {œk9 KHm9 {œk9 Cœk 9 {œk!9 KHm!9 {œk!9 Cœk@9 {œkA9 KHmA9 {œkA9 Cœk`9 {œka9 KHma9 {œka9 Cœk€9 {œk9 KHm9 {œk9 Cœk¡9 KHm¡9 {œk¡9 CœkÁ9 KHmÁ9 {œkÁ9 CœkA: KHmA: {œkA: Cœka: KHma: {œka: Cœk: KHm: {œk: Cœk¡: KHm¡: {œk¡: CœkÁ: KHmÁ: {œkÁ: Cœk; KHm; {œk; Cœk!; KHm!; {œk!; Cœka< KHma< {œka< Cœk< KHm< {œk< Cœk¡< KHm¡< {œk¡< CœkÁ< KHmÁ< {œkÁ< Cœká< KHmá< {œká< Cœk= KHm= {œk= Cœk!= KHm!= {œk!= CœkA= KHmA= {œkA= Cœka= KHma= {œka= CœkÁ= KHmÁ= {œkÁ= Cœká= KHmá= {œká= Cœk> KHm> {œk> Cœk!> KHm!> {œk!> CœkA> KHmA> {œkA> Cœk¡> KHm¡> {œk¡> CœkÁ> KHmÁ> {œkÁ> Cœká> KHmá> {œká> Cœk? KHm? {œk? Cœk!? KHm!? {œk!? CœkA? KHmA? {œkA? Cœka? KHma? {œka? Cœká? KHmá? {œká? Cœk@ KHm@ {œk@ Cœká@ KHmá@ {œká@ CœkA KHmA {œkA Cœk!A KHm!A {œk!A CœkAA KHmAA {œkAA CœkaA KHmaA {œkaA CœkA KHmA {œkA Cœk¡A KHm¡A {œk¡A CœkÁA KHmÁA {œkÁA CœkáA KHmáA {œkáA CœkB KHmB {œkB Cœk!B KHm!B {œk!B CœkAB KHmAB {œkAB CœkaB KHmaB {œkaB CœkaC KHmaC {œkaC CœkC KHmC {œkC Cœk¡C KHm¡C {œk¡C CœkÁC KHmÁC {œkÁC CœkáC KHmáC {œkáC CœkD KHmD {œkD Cœk!D KHm!D {œk!D CœkAD KHmAD {œkAD CœkaD KHmaD {œkaD CœkD KHmD {œkD Cœk¡D KHm¡D {œk¡D CœkÁD KHmÁD {œkÁD CœkáD KHmáD {œkáD CœkE KHmE {œkE CœkAE KHmaE KHmE KHm¡E KHmÁE KHmáE KHmF KHm!F KHmAF KHmaF KHmF KHm¡F KHm¡F {œk¡F CœkÁF KHmÁF {œkÁF CœkáF KHmáF {œkáF CœkG KHmG {œkG Cœk!G KHm!G {œk!G CœkAG KHmAG {œkAG CœkaG KHmaG {œkaG CœkG KHmG {œkG Cœk¡G KHm¡G {œk¡G CœkÁG KHmÁG {œkÁG CœkáG KHmáG {œkáG CœkH KHmH {œkH Cœk!H KHm!H {œk!H CœkAH KHmAH {œkAH CœkaH KHmaH {œkaH Cœk€H {œkH KHmH {œkH Cœk H {œk¡H KHm¡H {œk¡H CœkÀH {œkÁH KHmÁH {œkÁH CœkàH {œkáH KHmáH {œkáH CœkI {œkI KHmI {œkI Cœk I {œk!I KHm!I {œk!I CœkAI KHmAI {œkAI Cœk`I {œkaI KHmaI {œkaI Cœk€I {œkI KHmI {œkI Cœk¡I KHm¡I {œk¡I CœkÁI KHmÁI {œkÁI CœkáI KHmáI {œkáI CœkJ KHmJ {œkJ Cœk!J KHm!J {œk!J CœkAJ KHmAJ {œkAJ CœkaJ KHmaJ {œkaJ CœkJ KHmJ {œkJ Cœk¡J KHm¡J {œk¡J CœkÁJ KHmÁJ {œkÁJ CœkáJ KHmáJ {œkáJ CœkK KHmK {œkK Cœk!K KHm!K {œk!K CœkAK KHmAK {œkAK CœkaK KHmaK {œkaK CœkK KHmK {œkK Cœk¡K KHm¡K {œk¡K CœkÁK KHmÁK {œkÁK CœkáK KHmáK {œkáK CœkL KHmL {œkL Cœk!L KHm!L {œk!L CœkAL KHmAL {œkAL CœkaL KHmaL {œkaL CœkL KHmL {œkL Cœk¡L KHm¡L {œk¡L CœkÁL KHmÁL {œkÁL CœkáL KHmáL {œkáL CœkM KHmM {œkM Cœk!M KHm!M {œk!M CœkAM KHmAM {œkAM CœkaM KHmaM {œkaM CœkM KHmM {œkM Cœk¡M KHm¡M {œk¡M CœkÁM KHmÁM {œkÁM CœkáM KHmáM {œkáM CœkN KHmN {œkN Cœk!N KHm!N {œk!N CœkAN KHmAN {œkAN CœkaN KHmaN {œkaN CœkN KHmN {œkN Cœk¡N KHm¡N {œk¡N CœkÁN KHmÁN {œkÁN CœkáN KHmáN {œkáN CœkO KHmO {œkO Cœk!O KHm!O {œk!O CœkAO KHmAO {œkAO CœkaO KHmaO {œkaO CœkO KHmO {œkO Cœk¡O KHm¡O {œk¡O CœkÁO KHmÁO {œkÁO CœkáO KHmáO {œkáO CœkP KHmP {œkP Cœk!P KHm!P {œk!P CœkAP KHmAP {œkAP CœkaP KHmaP {œkaP CœkP KHmP {œkP Cœk¡P KHm¡P {œk¡P CœkÁP KHmÁP {œkÁP CœkáP KHmáP {œkáP CœkQ KHmQ {œkQ Cœk!Q KHm!Q {œk!Q CœkAQ KHmAQ {œkAQ CœkaQ KHmaQ {œkaQ CœkQ KHmQ {œkQ Cœk¡Q KHm¡Q {œk¡Q CœkÁQ KHmÁQ {œkÁQ CœkáQ KHmáQ {œkáQ CœkR KHmR {œkR Cœk!R KHm!R {œk!R CœkAR KHmAR {œkAR CœkaR KHmaR {œkaR CœkR KHmR {œkR Cœk¡R KHm¡R {œk¡R CœkÁR KHmÁR {œkÁR CœkáR KHmáR {œkáR CœkS KHmS {œkS Cœk!S KHm!S {œk!S CœkAS KHmAS {œkAS CœkaS KHmaS {œkaS CœkS KHmS {œkS Cœk¡S KHm¡S {œk¡S CœkÁS KHmÁS {œkÁS CœkáS KHmáS {œkáS CœkT KHmT {œkT Cœk!T KHm!T {œk!T CœkAT KHmAT {œkAT CœkaT KHmaT {œkaT CœkT KHmT {œkT Cœk¡T KHm¡T {œk¡T CœkÁT KHmÁT {œkÁT CœkáT KHmáT {œkáT CœkU KHmU {œkU Cœk!U KHm!U {œk!U CœkAU KHmAU {œkAU CœkaU KHmaU {œkaU CœkU KHmU {œkU Cœk¡U KHm¡U {œk¡U CœkÁU KHmÁU {œkÁU CœkáU KHmáU {œkáU CœkV KHmV {œkV Cœk!V KHm!V {œk!V CœkAV KHmAV {œkAV CœkaV KHmaV {œkaV CœkV KHmV {œkV Cœk¡V KHm¡V {œk¡V CœkÁV KHmÁV {œkÁV CœkáV KHmáV {œkáV CœkW KHmW {œkW Cœk!W KHm!W {œk!W CœkAW KHmAW {œkAW CœkaW KHmaW {œkaW CœkW KHmW {œkW Cœk¡W KHm¡W {œk¡W CœkÁW KHmÁW {œkÁW CœkáW KHmáW {œkáW CœkX KHmX {œkX Cœk!X KHm!X {œk!X CœkAX KHmAX {œkAX CœkaX KHmaX {œkaX CœkX KHmX {œkX Cœk¡X KHm¡X {œk¡X CœkÁX KHmÁX {œkÁX CœkáX KHmáX {œkáX CœkY KHmY {œkY Cœk!Y KHm!Y {œk!Y CœkAY KHmAY {œkAY CœkaY KHmaY {œkaY CœkY KHmY {œkY Cœk¡Y KHm¡Y {œk¡Y CœkÁY KHmÁY {œkÁY CœkáY KHmáY {œkáY CœkZ KHmZ {œkZ Cœk!Z KHm!Z {œk!Z CœkAZ KHmAZ {œkAZ CœkaZ KHmaZ {œkaZ CœkZ KHmZ {œkZ Cœk¡Z KHm¡Z {œk¡Z CœkÁZ KHmÁZ {œkÁZ CœkáZ KHmáZ {œkáZ Cœk[ KHm[ {œk[ Cœk![ KHm![ {œk![ CœkA[ KHmA[ {œkA[ Cœka[ KHma[ {œka[ Cœk[ KHm[ {œk[ Cœk¡[ KHm¡[ {œk¡[ CœkÁ[ KHmÁ[ {œkÁ[ Cœká[ KHmá[ {œká[ Cœk\ KHm\ {œk\ Cœk!\ KHm!\ {œk!\ CœkA\ KHmA\ {œkA\ Cœka\ KHma\ {œka\ Cœk\ KHm\ {œk\ Cœk¡\ KHm¡\ {œk¡\ CœkÁ\ KHmÁ\ {œkÁ\ Cœká\ KHmá\ {œká\ Cœk] KHm] {œk] Cœk!] KHm!] {œk!] CœkA] KHmA] {œkA] Cœka] KHma] {œka] Cœk] KHm] {œk] Cœk¡] KHm¡] {œk¡] CœkÁ] KHmÁ] {œkÁ] Cœká] KHmá] {œká] Cœk^ KHm^ {œk^ Cœk!^ KHm!^ {œk!^ CœkA^ KHmA^ {œkA^ Cœka^ KHma^ {œka^ Cœk€^ {œk€^ Cœk^ KHm^ {œk^ Cœk ^ Skm¡^ KHm¡^ {œk¡^ CœkÀ^ {œkÀ^ CœkÁ^ KHmÁ^ {œkÁ^ Cœkà^ S~má^ KHmá^ {œká^ Cœk_ {œk_ Cœk_ KHm_ {œk_ Cœk _ S‹m!_ KHm!_ {œk!_ Cœk@_ {œk@_ CœkA_ KHmA_ {œkA_ Cœk`_ {œk`_ Cœka_ KHma_ {œka_ Cœk€_ {œk€_ Cœk_ KHm_ {œk_ Cœk _ {œk¡_ KHm¡_ {œk¡_ CœkÀ_ {œkÁ_ KHmÁ_ {œkÁ_ Cœkà_ {œká_ KHmá_ {œká_ Cœk` {œk` KHm` {œk` Cœk ` {œk!` KHm!` {œk!` Cœk@` {œkA` KHmA` {œkA` Cœk`` {œka` KHma` {œka` Cœk€` {œk` KHm` {œk` Cœk¡` KHm¡` {œk¡` CœkÁ` KHmÁ` {œkÁ` Cœká` KHmá` {œká` Cœka KHma {œka Cœk!a KHm!a {œk!a CœkAa KHmAa {œkAa Cœkaa KHmaa {œkaa Cœka KHma {œka Cœk¡a KHm¡a {œk¡a CœkÁa KHmÁa {œkÁa Cœkáa KHmáa {œkáa Cœkb KHmb {œkb Cœk!b KHm!b {œk!b CœkAb KHmAb {œkAb Cœkab KHmab {œkab Cœkb KHmb {œkb Cœk¡b KHm¡b {œk¡b CœkÁb KHmÁb {œkÁb Cœkáb KHmáb {œkáb Cœkc KHmc {œkc Cœk!c KHm!c {œk!c CœkAc KHmAc {œkAc Cœkac KHmac {œkac Cœkc KHmc {œkc Cœk¡c KHm¡c {œk¡c CœkÁc KHmÁc {œkÁc Cœkác KHmác {œkác Cœkd KHmd {œkd Cœk!d KHm!d {œk!d CœkAd KHmAd {œkAd Cœkad KHmad {œkad Cœkd KHmd {œkd Cœk¡d KHm¡d {œk¡d CœkÁd KHmÁd {œkÁd Cœkád KHmád {œkád Cœke KHme {œke Cœk!e KHm!e {œk!e CœkAe KHmAe {œkAe Cœkae KHmae {œkae Cœke KHme {œke Cœk¡e KHm¡e {œk¡e CœkÁe KHmÁe {œkÁe Cœkáe KHmáe {œkáe Cœkf KHmf {œkf Cœk!f KHm!f {œk!f CœkAf KHmAf {œkAf Cœkaf KHmaf {œkaf Cœkf KHmf {œkf Cœk¡f KHm¡f {œk¡f CœkÁf KHmÁf {œkÁf Cœkáf KHmáf {œkáf Cœkg KHmg {œkg Cœk!g KHm!g {œk!g CœkAg KHmAg {œkAg Cœkag KHmag {œkag Cœkg KHmg {œkg Cœk¡g KHm¡g {œk¡g CœkÁg KHmÁg {œkÁg Cœkág KHmág {œkág Cœkh KHmh {œkh Cœk!h KHm!h {œk!h CœkAh KHmAh {œkAh Cœkah KHmah {œkah Cœkh KHmh {œkh Cœk¡h KHm¡h {œk¡h CœkÁh KHmÁh {œkÁh Cœkáh KHmáh {œkáh Cœki KHmi {œki Cœk!i KHm!i {œk!i CœkAi KHmAi {œkAi Cœkai KHmai {œkai Cœki KHmi {œki Cœk¡i KHm¡i {œk¡i CœkÁi KHmÁi {œkÁi Cœkái KHmái {œkái Cœkj KHmj {œkj Cœk!j KHm!j {œk!j CœkAj KHmAj {œkAj Cœkaj KHmaj {œkaj Cœkj KHmj {œkj Cœk¡j KHm¡j {œk¡j CœkÁj KHmÁj {œkÁj Cœkáj KHmáj {œkáj Cœkk KHmk {œkk Cœk!k KHm!k {œk!k CœkAk KHmAk {œkAk Cœkak KHmak {œkak Cœkk KHmk {œkk Cœk¡k KHm¡k {œk¡k CœkÁk KHmÁk {œkÁk Cœkák KHmák {œkák Cœkl KHml {œkl Cœk!l KHm!l {œk!l CœkAl KHmAl {œkAl Cœkal KHmal {œkal Cœkl KHml {œkl Cœk¡l KHm¡l {œk¡l CœkÁl KHmÁl {œkÁl Cœkál KHmál {œkál Cœkm KHmm {œkm Cœk!m KHm!m {œk!m CœkAm KHmAm {œkAm Cœkam KHmam {œkam Cœkm KHmm {œkm Cœk¡m KHm¡m {œk¡m CœkÁm KHmÁm {œkÁm Cœkám KHmám {œkám Cœkn KHmn {œkn Cœk!n KHm!n {œk!n CœkAn KHmAn {œkAn Cœkan KHman {œkan Cœkn KHmn {œkn Cœk¡n KHm¡n {œk¡n CœkÁn KHmÁn {œkÁn Cœkán KHmán {œkán Cœko KHmo {œko Cœk!o KHm!o {œk!o CœkAo KHmAo {œkAo Cœkao KHmao {œkao Cœko KHmo {œko Cœk¡o KHm¡o {œk¡o CœkÁo KHmÁo {œkÁo Cœkáo KHmáo {œkáo Cœkp KHmp {œkp Cœk!p KHm!p {œk!p CœkAp KHmAp {œkAp Cœkap KHmap {œkap Cœkp KHmp {œkp Cœk¡p KHm¡p {œk¡p CœkÁp KHmÁp {œkÁp Cœkáp KHmáp {œkáp Cœkq KHmq {œkq Cœk!q KHm!q {œk!q CœkAq KHmAq {œkAq Cœkaq KHmaq {œkaq Cœkq KHmq {œkq Cœk¡q KHm¡q {œk¡q CœkÁq KHmÁq {œkÁq Cœkàq {œkàq Cœkáq KHmáq {œkáq Cœkr {œkr Cœkr KHmr {œkr Cœk!r KHm!r {œk!r CœkAr KHmAr {œkAr Cœkar KHmar {œkar Cœkr KHmr {œkr Cœk r {œk r Cœk¡r KHm¡r {œk¡r CœkÀr {œkÀr CœkÁr KHmÁr {œkÁr Cœkár KHmár {œkár Cœks KHms {œks Cœk!s KHm!s {œk!s CœkAs KHmAs {œkAs Cœk`s {œk`s Cœkas KHmas {œkas Cœk€s {œk€s Cœks KHms {œks Cœk¡s KHm¡s {œk¡s CœkÁs KHmÁs {œkÁs Cœkás KHmás {œkás Cœkt KHmt {œkt Cœk!t KHm!t {œk!t CœkAt KHmAt {œkAt Cœkat KHmat {œkat Cœkt KHmt {œkt Cœk¡t KHm¡t {œk¡t CœkÁt KHmÁt {œkÁt Cœkát KHmát {œkát Cœku KHmu {œku Cœk!u KHm!u {œk!u CœkAu KHmAu {œkAu Cœkau KHmau {œkau Cœku KHmu {œku Cœk¡u KHm¡u {œk¡u CœkÁu KHmÁu {œkÁu Cœkáu KHmáu {œkáu Cœkv KHmv {œkv Cœk!v KHm!v {œk!v CœkAv KHmAv {œkAv Cœkav KHmav {œkav Cœkv KHmv {œkv Cœk¡v KHm¡v {œk¡v CœkÁv KHmÁv {œkÁv Cœkáv KHmáv {œkáv Cœkw KHmw {œkw Cœk!w KHm!w {œk!w CœkAw KHmAw {œkAw Cœkaw KHmaw {œkaw Cœkw KHmw {œkw Cœk¡w KHm¡w {œk¡w CœkÁw KHmÁw {œkÁw Cœkáw KHmáw {œkáw Cœkx KHmx {œkx Cœk!x KHm!x {œk!x CœkAx KHmAx {œkAx Cœkax KHmax {œkax Cœkx KHmx {œkx Cœk¡x KHm¡x {œk¡x CœkÁx KHmÁx {œkÁx Cœkáx KHmáx {œkáx Cœky KHmy {œky Cœk!y KHm!y {œk!y CœkAy KHmAy {œkAy Cœkay KHmay {œkay Cœky KHmy {œky Cœk¡y KHm¡y {œk¡y CœkÁy KHmÁy {œkÁy Cœkáy KHmáy {œkáy Cœkz KHmz {œkz Cœk!z KHm!z {œk!z CœkAz KHmAz {œkAz Cœkaz KHmaz {œkaz Cœkz KHmz {œkz Cœk¡z KHm¡z {œk¡z CœkÁz KHmÁz {œkÁz Cœkáz KHmáz {œkáz Cœk{ KHm{ {œk{ Cœk!{ KHm!{ {œk!{ CœkA{ KHmA{ {œkA{ Cœka{ KHma{ {œka{ Cœk{ KHm{ {œk{ Cœk¡{ KHm¡{ {œk¡{ CœkÁ{ KHmÁ{ {œkÁ{ Cœká{ KHmá{ {œká{ Cœk| KHm| {œk| Cœk!| KHm!| {œk!| CœkA| KHmA| {œkA| Cœka| KHma| {œka| Cœk| KHm| {œk| Cœk | {œk | Cœk¡| KHm¡| {œk¡| CœkÀ| {œkÀ| CœkÁ| KHmÁ| {œkÁ| Cœká| KHmá| {œká| Cœk} KHm} {œk} Cœk!} KHm!} {œk!} CœkA} KHmA} {œkA} Cœka} KHma} {œka} Cœk} KHm} {œk} Cœk¡} KHm¡} {œk¡} CœkÁ} KHmÁ} {œkÁ} Cœká} KHmá} {œká} Cœk~ KHm~ {œk~ Cœk!~ KHm!~ {œk!~ Cœk@~ {œk@~ CœkA~ KHmA~ {œkA~ Cœk`~ Skma~ KHma~ {œka~ Cœk€~ {œk€~ Cœk~ KHm~ {œk~ Cœk ~ S~m¡~ KHm¡~ {œk¡~ CœkÀ~ {œkÀ~ CœkÁ~ KHmÁ~ {œkÁ~ Cœkà~ S‹má~ KHmá~ {œká~ Cœk {œk Cœk KHm {œk Cœk  {œk  Cœk! KHm! {œk! Cœk@ {œk@ CœkA KHmA {œkA Cœk` {œka KHma {œka Cœk€ {œk KHm {œk Cœk  {œk¡ KHm¡ {œk¡ CœkÀ {œkÁ KHmÁ {œkÁ Cœkà {œká KHmá {œká Cœk€ {œk€ KHm€ {œk€ Cœk € {œk!€ KHm!€ {œk!€ Cœk@€ {œkA€ KHmA€ {œkA€ Cœka€ KHma€ {œka€ Cœk€ KHm€ {œk€ Cœk¡€ KHm¡€ {œk¡€ CœkÁ€ KHmÁ€ {œkÁ€ CœkဠKHmဠ{œkဠCœk KHm {œk Cœk {œk! KHm! {œk! Cœk@ {œkA KHmA {œkA Cœk` {œka KHma {œka Cœk€ {œk KHm {œk Cœk  {œk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk‚ KHm‚ {œk‚ Cœk!‚ KHm!‚ {œk!‚ CœkA‚ KHmA‚ {œkA‚ Cœka‚ KHma‚ {œka‚ Cœk‚ KHm‚ {œk‚ Cœk¡‚ KHm¡‚ {œk¡‚ CœkÁ‚ KHmÁ‚ {œkÁ‚ Cœká‚ KHmá‚ {œká‚ Cœkƒ KHmƒ {œkƒ Cœk!ƒ KHm!ƒ {œk!ƒ CœkAƒ KHmAƒ {œkAƒ Cœkaƒ KHmaƒ {œkaƒ Cœkƒ KHmƒ {œkƒ Cœk¡ƒ KHm¡ƒ {œk¡ƒ CœkÁƒ KHmÁƒ {œkÁƒ CœkრKHmრ{œkრCœk„ KHm„ {œk„ Cœk!„ KHm!„ {œk!„ CœkA„ KHmA„ {œkA„ Cœka„ KHma„ {œka„ Cœk„ KHm„ {œk„ Cœk¡„ KHm¡„ {œk¡„ CœkÁ„ KHmÁ„ {œkÁ„ Cœká„ KHmá„ {œká„ Cœk… KHm… {œk… Cœk!… KHm!… {œk!… CœkA… KHmA… {œkA… Cœka… KHma… {œka… Cœk… KHm… {œk… Cœk¡… KHm¡… {œk¡… CœkÁ… KHmÁ… {œkÁ… Cœká… KHmá… {œká… Cœk† KHm† {œk† Cœk!† KHm!† {œk!† CœkA† KHmA† {œkA† Cœka† KHma† {œka† Cœk† KHm† {œk† Cœk¡† KHm¡† {œk¡† CœkÁ† KHmÁ† {œkÁ† CœkᆠKHmᆠ{œkᆠCœk‡ KHm‡ {œk‡ Cœk!‡ KHm!‡ {œk!‡ CœkA‡ KHmA‡ {œkA‡ Cœka‡ KHma‡ {œka‡ Cœk‡ KHm‡ {œk‡ Cœk¡‡ KHm¡‡ {œk¡‡ CœkÁ‡ KHmÁ‡ {œkÁ‡ CœkᇠKHmᇠ{œkᇠCœkˆ KHmˆ {œkˆ Cœk!ˆ KHm!ˆ {œk!ˆ CœkAˆ KHmAˆ {œkAˆ Cœkaˆ KHmaˆ {œkaˆ Cœkˆ KHmˆ {œkˆ Cœk¡ˆ KHm¡ˆ {œk¡ˆ CœkÁˆ KHmÁˆ {œkÁˆ CœkሠKHmሠ{œkሠCœk‰ KHm‰ {œk‰ Cœk!‰ KHm!‰ {œk!‰ CœkA‰ KHmA‰ {œkA‰ Cœka‰ KHma‰ {œka‰ Cœk‰ KHm‰ {œk‰ Cœk¡‰ KHm¡‰ {œk¡‰ CœkÁ‰ KHmÁ‰ {œkÁ‰ CœkበKHmበ{œkበCœkŠ KHmŠ {œkŠ Cœk!Š KHm!Š {œk!Š CœkAŠ KHmAŠ {œkAŠ CœkaŠ KHmaŠ {œkaŠ CœkŠ KHmŠ {œkŠ Cœk¡Š KHm¡Š {œk¡Š CœkÁŠ KHmÁŠ {œkÁŠ CœkአKHmአ{œkአCœk‹ KHm‹ {œk‹ Cœk!‹ KHm!‹ {œk!‹ CœkA‹ KHmA‹ {œkA‹ Cœka‹ KHma‹ {œka‹ Cœk‹ KHm‹ {œk‹ Cœk¡‹ KHm¡‹ {œk¡‹ CœkÁ‹ KHmÁ‹ {œkÁ‹ Cœká‹ KHmá‹ {œká‹ CœkŒ KHmŒ {œkŒ Cœk!Œ KHm!Œ {œk!Œ CœkAŒ KHmAŒ {œkAŒ CœkaŒ KHmaŒ {œkaŒ CœkŒ KHmŒ {œkŒ Cœk¡Œ KHm¡Œ {œk¡Œ CœkÁŒ KHmÁŒ {œkÁŒ CœkጠKHmጠ{œkጠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká CœkŽ KHmŽ {œkŽ Cœk!Ž KHm!Ž {œk!Ž CœkAŽ KHmAŽ {œkAŽ CœkaŽ KHmaŽ {œkaŽ CœkŽ KHmŽ {œkŽ Cœk¡Ž KHm¡Ž {œk¡Ž CœkÁŽ KHmÁŽ {œkÁŽ CœkᎠKHmᎠ{œkᎠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœk‘ KHm‘ {œk‘ Cœk!‘ KHm!‘ {œk!‘ CœkA‘ KHmA‘ {œkA‘ Cœka‘ KHma‘ {œka‘ Cœk‘ KHm‘ {œk‘ Cœk¡‘ KHm¡‘ {œk¡‘ CœkÁ‘ KHmÁ‘ {œkÁ‘ Cœká‘ KHmá‘ {œká‘ Cœk’ KHm’ {œk’ Cœk!’ KHm!’ {œk!’ CœkA’ KHmA’ {œkA’ Cœka’ KHma’ {œka’ Cœk’ KHm’ {œk’ Cœk¡’ KHm¡’ {œk¡’ CœkÁ’ KHmÁ’ {œkÁ’ Cœká’ KHmá’ {œká’ Cœk“ KHm“ {œk“ Cœk!“ KHm!“ {œk!“ CœkA“ KHmA“ {œkA“ Cœka“ KHma“ {œka“ Cœk“ KHm“ {œk“ Cœk¡“ KHm¡“ {œk¡“ CœkÁ“ KHmÁ“ {œkÁ“ Cœká“ KHmá“ {œká“ Cœk” KHm” {œk” Cœk!” KHm!” {œk!” CœkA” KHmA” {œkA” Cœka” KHma” {œka” Cœk” KHm” {œk” Cœk¡” KHm¡” {œk¡” CœkÁ” KHmÁ” {œkÁ” Cœká” KHmá” {œká” Cœk• KHm• {œk• Cœk!• KHm!• {œk!• CœkA• KHmA• {œkA• Cœka• KHma• {œka• Cœk• KHm• {œk• Cœk¡• KHm¡• {œk¡• CœkÁ• KHmÁ• {œkÁ• Cœká• KHmá• {œká• Cœk– KHm– {œk– Cœk!– KHm!– {œk!– CœkA– KHmA– {œkA– Cœka– KHma– {œka– Cœk– KHm– {œk– Cœk¡– KHm¡– {œk¡– CœkÁ– KHmÁ– {œkÁ– Cœká– KHmá– {œká– Cœk— KHm— {œk— Cœk!— KHm!— {œk!— CœkA— KHmA— {œkA— Cœka— KHma— {œka— Cœk— KHm— {œk— Cœk¡— KHm¡— {œk¡— CœkÁ— KHmÁ— {œkÁ— Cœká— KHmá— {œká— Cœk˜ KHm˜ {œk˜ Cœk!˜ KHm!˜ {œk!˜ CœkA˜ KHmA˜ {œkA˜ Cœka˜ KHma˜ {œka˜ Cœk˜ KHm˜ {œk˜ Cœk¡˜ KHm¡˜ {œk¡˜ CœkÁ˜ KHmÁ˜ {œkÁ˜ CœkᘠKHmᘠ{œkᘠCœk™ KHm™ {œk™ Cœk!™ KHm!™ {œk!™ CœkA™ KHmA™ {œkA™ Cœka™ KHma™ {œka™ Cœk™ KHm™ {œk™ Cœk¡™ KHm¡™ {œk¡™ CœkÁ™ KHmÁ™ {œkÁ™ Cœká™ KHmá™ {œká™ Cœkš KHmš {œkš Cœk!š KHm!š {œk!š CœkAš KHmAš {œkAš Cœkaš KHmaš {œkaš Cœkš KHmš {œkš Cœk¡š KHm¡š {œk¡š CœkÁš KHmÁš {œkÁš Cœkáš KHmáš {œkáš Cœk› KHm› {œk› Cœk!› KHm!› {œk!› CœkA› KHmA› {œkA› Cœka› KHma› {œka› Cœk› KHm› {œk› Cœk¡› KHm¡› {œk¡› CœkÁ› KHmÁ› {œkÁ› Cœká› KHmá› {œká› Cœkœ KHmœ {œkœ Cœk!œ KHm!œ {œk!œ CœkAœ KHmAœ {œkAœ Cœkaœ KHmaœ {œkaœ Cœkœ KHmœ {œkœ Cœk¡œ KHm¡œ {œk¡œ CœkÁœ KHmÁœ {œkÁœ CœkᜠKHmᜠ{œkᜠCœk KHm {œk Cœk! KHm! {œk! CœkA KHmA {œkA Cœka KHma {œka Cœk KHm {œk Cœk¡ KHm¡ {œk¡ CœkÁ KHmÁ {œkÁ Cœká KHmá {œká Cœkž KHmž {œkž Cœk!ž KHm!ž {œk!ž CœkAž KHmAž {œkAž Cœkaž KHmaž {œkaž Cœkž KHmž {œkž Cœk¡ž KHm¡ž {œk¡ž CœkÁž KHmÁž {œkÁž Cœkáž KHmáž {œkáž CœkŸ KHmŸ {œkŸ Cœk!Ÿ KHm!Ÿ {œk!Ÿ CœkAŸ KHmAŸ {œkAŸ CœkaŸ KHmaŸ {œkaŸ CœkŸ KHmŸ {œkŸ Cœk¡Ÿ KHm¡Ÿ {œk¡Ÿ CœkÁŸ KHmÁŸ {œkÁŸ Cœk០KHm០{œk០Cœk  KHm  {œk  Cœk!  KHm!  {œk!  CœkA  KHmA  {œkA  Cœka  KHma  {œka  Cœk  KHm  {œk  Cœk¡  KHm¡  {œk¡  CœkÁ  KHmÁ  {œkÁ  Cœká  KHmá  {œká  Cœk¡ KHm¡ {œk¡ Cœk!¡ KHm!¡ {œk!¡ CœkA¡ KHmA¡ {œkA¡ Cœka¡ KHma¡ {œka¡ Cœk¡ KHm¡ {œk¡ Cœk¡¡ KHm¡¡ {œk¡¡ CœkÁ¡ KHmÁ¡ {œkÁ¡ Cœká¡ KHmá¡ {œká¡ Cœk¢ KHm¢ {œk¢ Cœk!¢ KHm!¢ {œk!¢ CœkA¢ KHmA¢ {œkA¢ Cœka¢ KHma¢ {œka¢ Cœk¢ KHm¢ {œk¢ Cœk¡¢ KHm¡¢ {œk¡¢ CœkÁ¢ KHmÁ¢ {œkÁ¢ CœkᢠKHmᢠ{œkᢠCœk£ KHm£ {œk£ Cœk!£ KHm!£ {œk!£ CœkA£ KHmA£ {œkA£ Cœka£ KHma£ {œka£ Cœk£ KHm£ {œk£ Cœk¡£ KHm¡£ {œk¡£ CœkÁ£ KHmÁ£ {œkÁ£ CœkᣠKHmᣠ{œkᣠCœk¤ KHm¤ {œk¤ Cœk!¤ KHm!¤ {œk!¤ CœkA¤ KHmA¤ {œkA¤ Cœka¤ KHma¤ {œka¤ Cœk¤ KHm¤ {œk¤ Cœk¡¤ KHm¡¤ {œk¡¤ CœkÁ¤ KHmÁ¤ {œkÁ¤ CœkᤠKHmᤠ{œkᤠCœk¥ KHm¥ {œk¥ Cœk!¥ KHm!¥ {œk!¥ CœkA¥ KHmA¥ {œkA¥ Cœka¥ KHma¥ {œka¥ Cœk!¦ KHm!¦ {œk!¦ CœkA¦ KHmA¦ {œkA¦ Cœka¦ KHma¦ {œka¦ CœkÁ¦ KHmÁ¦ {œkÁ¦ CœkᦠKHmᦠ{œkᦠCœk§ KHm§ {œk§ Cœk€© “Îkª “ׂ@ª “Ø€ª “Ø ª “Îkઠ“[« “ÎkÀ« “Îk ¬ “Îk ® “Îk@® “Îk`® “Îk ® “ذ “Îk à “Ø@à “Îk`à “ÎkÀà “Øàà “ØÇ “Îk Ç “ØÀÇ {œkÈ “Ø@È “ׂ`È “Îk€È “[ È “ÎkÀÈ “[àÈ “}`Ò {œk`Ò Cœk`Ô “Ø€Ô “Îk Ô “ÎkÀÔ “ÎkàÔ “ÎkÕ “Îk Õ “Îk@Õ “ÎkàØ {œk Ù “ÎkÀÙ SkmàÙ {œkàÙ CœkÚ {œkÚ Cœk Ú {œk Ú Cœk@Ú {œk@Ú Cœk`Ú {œk`Ú Cœk€Ú {œk€Ú Cœk Ú {œk Ú CœkÀÚ {œkÀÚ CœkàÚ SkmÛ {œkÛ Cœk Û {œk Û Cœk@Û {œk@Û Cœk`Û {œk`Û Cœk€Û {œk€Û Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà “Ø “Îk€ “ÎkÀ “Ø {œk  {œk@ {œk` {œk€ {œk  {œkÀ {œkà {œk@ {œk` {œk€ {œk€ {œk  “Îk@ “Ø` “Ø€ “Ø  “ÎkÀ “Îkà “Îk “Îk@ “Îk` “ÎkÀ “Îk  “Îk@ “Îk` “Îk€ “Ø  “ÎkÀ “Îkà “Ø@ “Îk€ “Îk  “Ø` “Îk€ “Îk  “Îk`! “Îk€! “Îk ! “ÎkÀ! “Îkà! “Îk" “Îk " “Îk`" “Îk€" “Îk " “ÎkÀ" “Îkà" “Îk# “Ø # “Ø@# “ׂ`# “ׂ€# “ׂ $ “Îk@$ “Îk`$ “ÎkÀ$ “Îkà$ “ÂQ€% “Îk`& “Îk€& “Q‹ & “Øà& “!×' “ño@' “*K `' {œk€' “!×À' “ׂà' “Îk( “Îk ( “Îk€( “Ø ( “ØÀ( “ׂà( “Îk) “Ø ) “Ø@) {œk@) Cœk`) {œk`) Cœk * {œk * Cœk@* Skm`* {œk`* Cœk€* S~m * {œk * CœkÀ* S‹mà* {œkà* Cœk+ S⢠+ {œk + Cœk@+ {œk@+ Cœk`+ {œk`+ Cœk€+ {œk + {œkÀ+ {œkà+ {œk, {œk , {œk@, {œk`, {œk , {œk , CœkÀ, Skmà, {œkà, Cœk- S~m - {œk - Cœk@- {œk@- Cœk`- {œk`- Cœk€- {œk - {œkÀ- {œkà- {œk. {œk . {œk@. {œk`. {œk€. {œk€. Cœk . {œk . CœkÀ. {œkÀ. Cœkà. {œkà. Cœk/ {œk/ Cœk / {œk / Cœk`/ {œk`/ Cœk€/ Skm / {œk / CœkÀ/ S~mà/ {œkà/ Cœk0 {œk0 Cœk 0 {œk 0 Cœk@0 {œk`0 {œk€0 {œk 0 {œkÀ0 {œkà0 {œk1 {œk 1 {œk`1 {œk`1 Cœk€1 Skm 1 {œk 1 CœkÀ1 S~mà1 {œkà1 Cœk2 {œk2 Cœk 2 {œk 2 Cœk@2 {œk`2 {œk€2 {œk 2 {œkÀ2 {œkà2 {œk3 {œk 3 {œk`3 {œk`3 Cœk€3 Skm 3 {œk 3 CœkÀ3 S~mà3 {œkà3 Cœk4 S‹m 4 {œk 4 Cœk@4 Sâ¢`4 {œk`4 Cœk€4 {œk€4 Cœk 4 {œk 4 CœkÀ4 {œkà4 {œk5 {œk 5 {œk@5 {œk`5 {œk€5 {œk 5 {œkÀ5 {œkà5 {œk6 {œk 6 {œk@6 {œk`6 {œk`9 {œk€9 {œkÀ9 {œkÀ9 Cœkà9 Skm: {œk: Cœk : S~m@: {œk@: Cœk`: {œk`: Cœk€: {œk€: Cœk : {œkÀ: {œkà: {œk; {œk ; {œk@; {œk ; {œkÀ; {œk< {œk< Cœk < Skm@< {œk@< Cœk`< S~m€< {œk€< Cœk < S‹mÀ< {œkÀ< Cœkà< Sâ¢= {œk= Cœk = Sï¢@= {œk@= Cœk`= {œk`= Cœk€= {œk€= Cœk = {œkÀ= {œkà= {œk> {œk > {œk@> {œkÀ> {œkà> {œk? {œk ? {œk@? {œk`? {œk€? {œk ? {œk A {œk@A {œk`A {œk€A {œk A {œkÀA {œkàA {œkB {œk C {œk@C {œk€E {œk€E Cœk E SkmÀE {œkÀE CœkàE S~mF {œkF Cœk F S‹m@F {œk@F Cœk`F {œk`F Cœk€F {œk€F Cœk F {œkÀF {œkàF {œkG {œk G {œk@G {œk`G {œk€G {œk G SkmÀG {œkÀG CœkàG {œkàG CœkH {œkH Cœk H {œk H Cœk@H {œk@H Cœk`H {œk€H {œk H {œkÀH {œkàH {œkI {œk`I {œk€I {œk I SkmÀI {œkÀI CœkàI {œkàI CœkJ {œkJ Cœk J {œk J Cœk@J {œk`J {œk€J {œk J {œkÀJ {œkàJ {œk K {œk@K {œk`O “ÎkÀS “Îk`\ {œk`\ Cœk€\ Skm \ {œk \ CœkÀ\ S~mà\ {œkà\ Cœk] {œk] Cœk ] {œk ] Cœk@] {œk@] Cœk`] {œk`] Cœk€] {œk€] Cœk ] {œk ] CœkÀ] {œkÀ] Cœkà] {œkà] Cœk a {œk a CœkÀa Skmàa {œkàa Cœkb S~m b {œk b Cœk@b S‹m`b {œk`b Cœk€b S⢠b {œk b CœkÀb Sï¢àb {œkàb Cœkc Sü¢ c {œk c Cœk@c S £`c {œk`c Cœk€c S£ c {œk c CœkÀc S#£àc {œkàc Cœkd {œkd Cœk d {œk d Cœk@d {œk@d Cœk`d {œk`d Cœk€d {œk€d Cœk d {œk d CœkÀd {œkÀd Cœkàd {œkàd Cœke {œke Cœk e {œk e Cœk@e {œk@e Cœk`e {œk`e Cœk€e {œk€e Cœk e {œk e CœkÀe {œkÀe Cœkàe {œkàe Cœkf {œkf Cœk f {œk f Cœk@f {œk@f Cœk`f {œk`f Cœk€f {œk€f Cœk f {œk f CœkÀf {œkÀf Cœkàf {œkàf Cœkg {œkg Cœk g {œk g Cœk@g {œk@g Cœk`g {œk`g Cœk€g {œk€g Cœk g {œk g CœkÀg {œkÀg Cœkàg {œkàg Cœkh {œkh Cœk h {œk h Cœk@h {œk@h Cœk`h {œk`h Cœk€h {œk€h Cœk h {œk h CœkÀh {œkÀh Cœkàh {œkàh Cœkk {œkk Cœk k Skm@k {œk@k Cœk`k S~m€k {œk€k Cœk k S‹mÀk {œkÀk Cœkàk Sâ¢l {œkl Cœk l Sï¢@l {œk@l Cœk`l {œk`l Cœk€l {œk€l CœkÀl {œkÀl Cœkàl {œkàl Cœkm {œkm Cœk m {œk m Cœk v {œk v Cœk@v Skm`v {œk`v Cœk€v S~m v {œk v CœkÀv S‹màv {œkàv Cœkw S⢠w {œk w Cœk@w {œk@w Cœk`w {œk`w Cœk€w {œk€w Cœk w {œk w CœkÀw {œkÀw Cœkàw {œkàw Cœkx {œkx Cœk x {œk x Cœk@x {œk@x Cœk`x {œk`x Cœk€x {œk€x Cœk x {œk x CœkÀx {œkÀx Cœkàx {œkàx Cœk| “Ø€| “!× | SkmÀ| {œkÀ| Cœkà| {œkà| Cœk} {œk} Cœk } {œk } Cœk@} {œk`} {œk€} {œk } {œkÀ} {œkà} {œk~ {œk ~ {œk „ {œk „ CœkÀ„ Skmà„ {œkà„ Cœk… S~m … {œk … Cœk@… S‹m`… {œk`… Cœk€… S⢠… {œk … CœkÀ… Sï¢à… {œkà… Cœk† Sü¢ † {œk † Cœk@† S £`† {œk`† Cœk€† S£ † {œk † CœkÀ† S#£à† {œkà† Cœk‡ S÷ù ‡ {œk ‡ Cœk@‡ Sú`‡ {œk`‡ Cœk€‡ S3ú ‡ {œk ‡ CœkÀ‡ SSúà‡ {œkà‡ Cœkˆ {œkˆ Cœk ˆ {œk ˆ Cœk@ˆ {œk@ˆ Cœk`ˆ {œk`ˆ Cœk€ˆ {œk€ˆ Cœk ˆ {œk ˆ CœkÀˆ {œkÀˆ Cœkàˆ {œkàˆ Cœk‰ {œk‰ Cœk ‰ {œk ‰ Cœk@‰ {œk@‰ Cœk`‰ {œk`‰ Cœk€‰ {œk€‰ Cœk ‰ {œk ‰ CœkÀ‰ {œkÀ‰ Cœkà‰ {œkà‰ CœkŠ {œkŠ Cœk Š {œk Š Cœk@Š {œk@Š Cœk`Š {œk`Š Cœk€Š {œk€Š Cœk Š {œk Š CœkÀŠ {œkÀŠ CœkàŠ {œkàŠ Cœk‹ {œk‹ Cœk ‹ {œk ‹ Cœk@‹ {œk@‹ Cœk`‹ {œk`‹ Cœk€‹ {œk€‹ Cœk ‹ {œk ‹ CœkÀ‹ {œkÀ‹ Cœkà‹ {œkà‹ CœkŒ {œkŒ Cœk Œ {œk Œ Cœk@Œ {œk@Œ Cœk`Œ {œk`Œ Cœk€Œ {œk€Œ Cœk Œ {œk Œ CœkÀŒ {œkÀŒ CœkàŒ {œkàŒ Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà CœkŽ {œkŽ Cœk Ž {œk Ž Cœk@Ž {œk@Ž Cœk`Ž {œk`Ž Cœk€Ž {œk€Ž Cœk Ž {œk Ž CœkÀŽ {œkÀŽ CœkàŽ {œkàŽ Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ Skmà {œkà Cœk‘ {œk‘ Cœk ‘ {œk ‘ Cœk@‘ {œk@‘ Cœk`‘ {œk`‘ Cœk€‘ {œk€‘ Cœk ‘ {œk ‘ CœkÀ‘ {œkÀ‘ Cœkà‘ {œkà‘ Cœk ’ {œk ’ CœkÀ’ Skmà’ {œkà’ Cœk“ S~m “ {œk “ Cœk@“ S‹m`“ {œk`“ Cœk€“ S⢠“ {œk “ CœkÀ“ Sï¢à“ {œkà“ Cœk” {œk” Cœk ” {œk ” Cœk@” {œk@” Cœk`” {œk`” Cœk€” {œk€” Cœk ” {œk ” CœkÀ” {œkÀ” Cœkà” {œkà” Cœk• {œk• Cœk • {œk • Cœk@• {œk@• Cœk`• {œk`• Cœk€• {œk€• Cœk • {œk • CœkÀ• {œkÀ• Cœkà• {œkà• Cœk– {œk– Cœk – {œk – Cœk@– {œk@– Cœk`– {œk`– Cœk€– {œk€– Cœk – {œk – CœkÀ– {œkÀ– Cœkà– {œkà– Cœk— {œk— Cœk — {œk — Cœk@— {œk@— Cœk`— {œk`— Cœk€— {œk€— Cœk — {œk — CœkÀ— {œkÀ— Cœkà— {œkà— Cœk ˜ {œkÀ˜ {œkà˜ {œk™ {œk ™ {œk@™ {œk`™ {œk€™ {œkà§ Skm¨ {œk¨ Cœk ¨ {œk ¨ Cœk@¨ {œk@¨ Cœk`¨ {œk`¨ Cœk€¨ {œk€¨ Cœk ¨ {œkÀ¨ {œkਠ{œk© {œk © {œk@© Skm`© {œk`© Cœk€© {œk€© Cœk © {œk © CœkÀ© {œkÀ© Cœkà© {œkà© Cœk · “Îk¿ Skm ¿ {œk ¿ Cœk@¿ {œk@¿ Cœk`¿ {œk`¿ Cœk€¿ {œk€¿ Cœk ¿ {œk ¿ CœkÁ Skm Á {œk Á Cœk@Á {œk@Á Cœk`Á {œk`Á Cœk€Á {œk€Á Cœk Á {œk Á Cœk Â {œk Â CœkÀ Skmà {œkà Cœkà S~m à {œk à Cœk@à S‹m`à {œk`à Cœk€Ã S⢠à {œk Ã CœkÀà Sï¢àà {œkàà CœkÄ Sü¢ Ä {œk Ä Cœk@Ä S £`Ä {œk`Ä Cœk€Ä {œk€Ä Cœk Ä {œk Ä CœkàÄ {œkàÄ CœkÅ {œkÅ Cœk Å {œk Å Cœk@Å {œk@Å Cœk`Å {œk`Å Cœk€Å {œk€Å Cœk Å {œk Å CœkÀÅ {œkÀÅ CœkàÅ {œkàÅ CœkÆ {œkÆ Cœk Æ {œk Æ Cœk@Æ {œk@Æ Cœk`Æ {œk`Æ Cœk€Æ {œk€Æ Cœk Æ {œk Æ CœkÀÆ {œkÀÆ CœkàÆ {œkàÆ CœkÇ {œkÇ Cœk Ç {œk Ç Cœk@Ç {œk@Ç Cœk`Ç {œk`Ç Cœk€Ç {œk€Ç Cœk Ç {œk Ç CœkÀÇ {œkÀÇ CœkàÇ {œkàÇ CœkÈ {œkÈ Cœk È {œk È Cœk@È {œk@È Cœk`È {œk`È Cœk€È {œk€È Cœk È {œk È CœkÀÈ {œkÀÈ CœkàÈ {œkàÈ CœkÉ {œkÉ Cœk É {œk É Cœk@É {œk@É Cœk€É {œk€É Cœk É SkmÀÉ {œkÀÉ CœkàÉ S~mÊ {œkÊ Cœk Ê S‹m@Ê {œk@Ê Cœk`Ê Sâ¢€Ê {œk€Ê Cœk Ê Sï¢ÀÊ {œkÀÊ CœkàÊ {œkàÊ CœkË {œkË Cœk Ë {œk Ë Cœk@Ë {œk@Ë Cœk`Ë {œk`Ë Cœk€Ë {œk€Ë Cœk Ë {œk Ë CœkÀË {œkÀË CœkàË {œkàË CœkÌ {œkÌ Cœk Ì {œk Ì Cœk@Ì {œk@Ì Cœk`Ì {œk`Ì Cœk€Ì {œk€Ì Cœk Ì {œk Ì CœkÀÌ {œkÀÌ CœkàÌ {œkàÌ CœkÍ {œkÍ Cœk Í {œk Í Cœk@Í {œk@Í Cœk@Ó {œk@Ó Cœk`Ó Skm€Ó {œk€Ó Cœk Ó S~mÀÓ {œkÀÓ CœkàÓ {œkàÓ CœkÔ {œkÔ Cœk Ô {œk Ô Cœk@Ô {œk@Ô Cœk`Ô {œk`Ô Cœk€Ô {œk€Ô Cœk Ô {œk Ô CœkÀÔ {œkÀÔ CœkàÔ {œkàÔ CœkÕ {œkÕ Cœk Õ {œk Õ CœkÀÕ SkmàÕ {œkàÕ CœkÖ S~m Ö {œk Ö Cœk@Ö {œk@Ö Cœk`Ö {œk`Ö Cœk€Ö {œk€Ö Cœk Ö {œk Ö CœkÀÖ {œkÀÖ CœkàÖ {œkàÖ Cœk× {œk× Cœk × {œk × Cœk@× {œk@× Cœk`× {œk`× Cœk€× Skm × {œk × CœkÀ× {œkÀ× Cœkà× {œkà× CœkØ {œkØ Cœk Ø {œk Ø Cœk@Ø {œk@Ø Cœk`Ø {œk`Ø Cœk€Ø {œk€Ø Cœk Ø {œk Ø CœkÀØ {œkÀØ CœkàØ SkmÙ {œkÙ Cœk Ù {œk Ù Cœk@Ù {œk@Ù Cœk`Ù {œk`Ù Cœk€Ù {œk€Ù Cœk Ù SkmÀÙ {œkÀÙ CœkàÙ {œkàÙ CœkÚ {œkÚ Cœk Ú {œk Ú Cœk`Ú {œk`Ú Cœk€Ú Skm Ú {œk Ú CœkÀÚ S~màÚ {œkàÚ CœkÛ S‹m Û {œk Û Cœk@Û Sâ¢`Û {œk`Û Cœk€Û Sï¢ Û {œk Û CœkÀÛ Sü¢àÛ {œkàÛ CœkÜ S £ Ü {œk Ü Cœk@Ü S£`Ü {œk`Ü Cœk€Ü S#£ Ü {œk Ü CœkÀÜ S÷ùàÜ {œkàÜ CœkÝ Sú Ý {œk Ý Cœk@Ý S3ú`Ý {œk`Ý Cœk€Ý SSú Ý {œk Ý CœkÀÝ S~úàÝ {œkàÝ CœkÞ S Þ {œk Þ Cœk@Þ S2 `Þ {œk`Þ Cœk€Þ SM  Þ {œk Þ CœkÀÞ Sc àÞ {œkàÞ Cœkß {œkß Cœk ß {œk ß Cœk@ß {œk`ß {œk€ß {œk ß {œkÀß {œkàß {œkà {œk à {œk@à {œk@à Cœk`à {œk`à Cœk€à {œk€à Cœk à {œk à CœkÀà {œkÀà Cœkàà {œkàà Cœká {œká Cœk á {œk á Cœk@á {œk@á Cœk`á {œk`á Cœk€á {œk€á Cœk á {œk á CœkÀá {œkÀá Cœkàá {œkàá Cœkâ {œkâ Cœk â {œk â Cœk@â {œk@â Cœk`â {œk`â Cœk€â {œk€â Cœk â {œk â CœkÀâ {œkÀâ Cœkàâ {œkàâ Cœkã {œkã Cœk ã {œk ã Cœk@ã {œk@ã Cœk`ã {œk`ã Cœk€ã {œk€ã Cœk ã {œk ã CœkÀã {œkÀã Cœkàã {œkàã Cœkä {œkä Cœk ä {œk ä Cœk@ä {œk@ä Cœk`ä {œk`ä Cœk€ä {œk€ä Cœk ä {œk ä CœkÀä {œkÀä Cœkàä {œkàä Cœkå {œkå Cœk å {œk å Cœk@å {œk@å Cœk`å {œk`å Cœk€å {œk€å Cœk å {œk å CœkÀå {œkÀå Cœkàå {œkàå Cœkæ {œkæ Cœk æ {œk æ Cœk@æ {œk@æ Cœk`æ {œk`æ Cœk€æ {œk€æ Cœk æ {œk æ CœkÀæ {œkÀæ Cœkàæ {œkàæ Cœkç {œkç Cœk ç {œk ç Cœk@ç {œk@ç Cœk`ç {œk`ç Cœk€ç {œk€ç Cœk ç {œk ç CœkÀç {œkÀç Cœkàç {œkàç Cœkè {œkè Cœk è {œk è Cœk@è {œk@è Cœk`è Skm€è {œk€è Cœk è S~mÀè {œkÀè Cœkàè S‹mé {œké Cœk é {œk é Cœk@é {œk@é Cœk`é {œk`é Cœk€é {œk€é Cœk é {œk é CœkÀé {œkÀé Cœkàé {œkàé Cœkê {œkê Cœk ê {œk ê Cœk@ê {œk@ê Cœk`ê {œk`ê Cœk€ê {œk€ê Cœk ê {œk ê CœkÀê {œkÀê Cœkàê {œkàê Cœkë {œkë Cœk ë {œk ë Cœk@ë {œk@ë Cœk`ë {œk`ë Cœk€ë {œk€ë Cœk ë {œk ë CœkÀë {œkÀë Cœkàë {œkàë Cœkì {œkì Cœk ì Skm@ì {œk@ì Cœk`ì {œk`ì Cœk€ì {œk€ì Cœk ì {œk ì CœkÀì {œkÀì Cœk@í {œk@í Cœk`í Skm€í {œk€í Cœk í S~mÀí {œkÀí Cœkàí S‹mî {œkî Cœk î Sâ¢@î {œk@î Cœk`î Sî {œk€î Cœk î Sü¢Àî {œkÀî Cœkàî {œkàî Cœkï {œkï Cœk ï {œk ï Cœk@ï {œk@ï Cœk`ï {œk`ï Cœk€ï {œk€ï Cœk ï {œk ï CœkÀï {œkÀï Cœkàï {œkàï Cœkð {œkð Cœk ð {œk ð Cœk@ð {œk@ð Cœk`ð {œk`ð Cœk€ð {œk€ð Cœk ð {œk ð CœkÀð {œkÀð Cœkàð {œkàð Cœkñ {œkñ Cœk ñ {œk ñ Cœk@ñ {œk@ñ Cœk`ñ {œk`ñ Cœk€ñ {œk€ñ Cœk ñ {œk ñ CœkÀñ {œkÀñ Cœkàñ {œkàñ Cœkò {œkò Cœk ò {œk ò Cœk@ò {œk@ò Cœk`ò {œk`ò Cœk€ò {œk€ò Cœk ò {œk ò CœkÀò {œkÀò Cœkàò {œkàò Cœkó {œkó Cœk ó {œk ó Cœk@ó {œk@ó Cœk`ó Skm€ó {œk€ó Cœk ó {œk ó CœkÀó {œkÀó Cœkàó {œkàó Cœkô {œkô Cœk ô {œk ô Cœk@ô Skm`ô {œk`ô Cœk€ô {œk€ô Cœk ô {œk ô CœkÀô {œkÀô Cœkàô {œkàô Cœkõ {œkõ Cœk€õ Skm õ {œk õ CœkÀõ {œkÀõ Cœkàõ {œkàõ Cœkö {œkö Cœk ö {œk ö Cœk@ö {œk@ö CœkÀö Skmàö {œkàö Cœk÷ {œk÷ Cœk ÷ {œk ÷ Cœk@÷ {œk@÷ Cœk`÷ {œk`÷ Cœk€÷ {œk€÷ Cœk ù Skm@ù {œk@ù Cœk`ù {œk`ù Cœk€ù {œk€ù Cœk ù {œk ù CœkÀù {œkÀù Cœkàù {œkàù Cœkú Skm ú {œk ú Cœk@ú S~m`ú {œk`ú Cœk€ú S‹m ú {œk ú CœkÀú Sâ¢àú {œkàú Cœkû Sï¢ û {œk û Cœk@û Sü¢`û {œk`û Cœk€û S £ û {œk û CœkÀû S£àû {œkàû Cœkü S#£ ü {œk ü Cœk@ü S÷ù`ü {œk`ü Cœk€ü Sú ü {œk ü CœkÀü S3úàü {œkàü Cœký SSú ý {œk ý Cœk@ý S~ú`ý {œk`ý Cœk€ý S  ý {œk ý CœkÀý {œkÀý Cœkàý {œkàý Cœkþ {œkþ Cœk þ {œk þ Cœk@þ {œk@þ Cœk`þ {œk`þ Cœk€þ {œk€þ Cœk þ {œk þ CœkÀþ {œkÀþ Cœkàþ {œkàþ Cœkÿ {œkÿ Cœk ÿ {œk ÿ Cœk@ÿ {œk@ÿ Cœk`ÿ {œk`ÿ Cœk€ÿ {œk€ÿ Cœk ÿ {œk ÿ CœkÀÿ {œkÀÿ Cœkàÿ {œkàÿ Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk`{œk`Cœk€Skm {œk CœkÀS~mà{œkàCœkS‹m {œk Cœk@Sâ¢`{œk`Cœk€S{œk CœkÀSü¢à{œkàCœkS £ {œk Cœk@S£`{œk`Cœk€S#£ {œk CœkÀS÷ùà{œkàCœkSú {œk Cœk@S3ú`{œk`Cœk€SSú {œk CœkÀS~úà{œkàCœkS {œk Cœk@S2 `{œk`Cœk€SM  {œk CœkÀSc à{œkàCœkS {œk Cœk@SŽ `{œk`Cœk€S­  {œk CœkÀSÌ à{œkàCœkSÙ {œk Cœk@SÅY `{œk`Cœk€SáY  {œk CœkÀSZ à{œkàCœkSZ {œk Cœk@S‚£ `{œk`Cœk€Sœ£  {œk CœkÀS»£ à{œkàCœkSû£ {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk!{œk!Cœk !{œk !Cœk@!{œk@!Cœk`!{œk`!Cœk€!{œk€!Cœk !{œk !CœkÀ!{œkÀ!Cœkà!{œkà!Cœk"{œk"Cœk "{œk "Cœk@"{œk@"Cœk`"{œk`"Cœk€"{œk€"Cœk "{œk "CœkÀ"{œkÀ"Cœkà"{œkà"Cœk#{œk#Cœk #{œk #Cœk@#{œk@#Cœk`#{œk`#Cœk€#{œk€#Cœk #{œk #CœkÀ#{œkÀ#Cœkà#{œkà#Cœk${œk$Cœk ${œk $Cœk@${œk@$Cœk`${œk`$Cœk€${œk€$Cœk ${œk $CœkÀ${œkÀ$Cœkà${œkà$Cœk%{œk%Cœk %{œk %Cœk@%{œk@%Cœk`%{œk`%Cœk€%{œk€%Cœk %{œk %CœkÀ%{œkÀ%Cœkà%{œkà%Cœk&{œk&Cœk &{œk &Cœk@&{œk@&Cœk`&{œk`&Cœk€&{œk€&Cœk &{œk &CœkÀ&{œkÀ&Cœkà&{œkà&Cœk'{œk'Cœk '{œk 'Cœk@'{œk@'Cœk`'{œk`'Cœk€'{œk€'Cœk '{œk 'CœkÀ'{œkÀ'Cœkà'{œkà'Cœk({œk(Cœk ({œk (Cœk@({œk@(Cœk`({œk`(Cœk€({œk€(Cœk ({œk (CœkÀ({œkÀ(Cœkà({œkà(Cœk){œk)Cœk ){œk )Cœk@){œk@)Cœk`){œk`)Cœk€){œk€)Cœk ){œk )CœkÀ){œkÀ)Cœkà){œkà)Cœk*{œk*Cœk *{œk *Cœk@*{œk@*Cœk`*{œk`*Cœk€*{œk€*Cœk *{œk *CœkÀ*{œkÀ*Cœkà*{œkà*Cœk+{œk+Cœk +{œk +Cœk@+{œk@+Cœk`+{œk`+Cœk€+{œk€+Cœk +{œk +CœkÀ+{œkÀ+Cœkà+{œkà+Cœk,{œk,Cœk ,{œk ,Cœk`,{œk`,Cœk€,Skm ,{œk ,CœkÀ,S~mà,{œkà,Cœk-{œk-Cœk -{œk -Cœk@-{œk`-{œk€-{œk -{œkÀ-{œkà-{œk.{œk .{œk`.{œk`.Cœk€.Skm .{œk .CœkÀ.S~mà.{œkà.Cœk/{œk/Cœk /{œk /Cœk@/{œk`/{œk€/{œk /{œkÀ/{œkà/{œk0{œk 0{œk`0{œk`0Cœk€0Skm 0{œk 0CœkÀ0S~mà0{œkà0Cœk1S‹m 1{œk 1Cœk@1{œk@1Cœk`1{œk`1Cœk€1{œk 1{œkÀ1{œkà1{œk2{œk 2{œk@2{œk`2{œk 2{œk 2CœkÀ2Skmà2{œkà2Cœk3S~m 3{œk 3Cœk@3S‹m`3{œk`3Cœk€3S⢠3{œk 3CœkÀ3{œkÀ3Cœkà3{œkà3Cœk4{œk 4{œk@4{œk`4{œk€4{œk 4{œkÀ4{œkà4{œk 5{œk 5Cœk@5Skm`5{œk`5Cœk€5S~m 5{œk 5CœkÀ5{œkÀ5Cœkà5{œkà5Cœk6{œk 6{œk@6{œk`6{œk€6{œk 6{œkÀ6{œkà6{œk 7{œk 7Cœk@7Skm`7{œk`7Cœk€7S~m 7{œk 7CœkÀ7S‹mà7{œkà7Cœk8S⢠8{œk 8Cœk@8Sï¢`8{œk`8Cœk€8{œk€8Cœk 8{œk 8CœkÀ8{œkÀ8Cœkà8{œkà8Cœk9{œk9Cœk 9{œk 9Cœk@9{œk@9Cœk`9Skm€9{œk€9Cœk 9S~mÀ9{œkÀ9Cœkà9{œkà9Cœk:{œk:Cœk :{œk :Cœk@:{œk@:Cœk`:{œk`:Cœk€:{œk€:Cœk :{œk :CœkÀ:{œkÀ:Cœkà:{œkà:Cœk;{œk;Cœk ;{œk ;Cœk@;{œk@;Cœk`;Skm€;{œk€;Cœk ;{œk ;CœkÀ;{œkÀ;Cœkà;{œkà;Cœk<{œk<Cœk <{œk <Cœk@<{œk@<Cœk`<{œk`<Cœk€<{œk€<CœkÀ<Skmà<{œkà<Cœk={œk=Cœk ={œk =Cœk@={œk@=Cœk`={œk`=Cœk€={œk€=Cœk ={œk =CœkÀ={œkÀ=Cœkà={œkà=CœkÀ>Skmà>{œkà>Cœk?{œk?Cœk ?{œk ?Cœk@?{œk@?Cœk`?{œk`?Cœk€?{œk€?Cœk ?{œk ?CœkÀ?{œkÀ?Cœkà?{œkà?Cœk @Skm@@{œk@@Cœk`@{œk`@Cœk€@{œk€@Cœk @{œk @CœkÀ@{œkÀ@Cœkà@{œkà@Cœk A{œk ACœk@ASkm`A{œk`ACœk€AS~m A{œk ACœkÀAS‹màA{œkàACœkBS⢠B{œk BCœk@BSï¢`B{œk`BCœk€B{œk€BCœk B{œk BCœkÀB{œkÀBCœkàB{œkàBCœkC{œkCCœk C{œk CCœk@C{œk@CCœk`C{œk`CCœk€C{œk€CCœk C{œk CCœkÀC{œkÀCCœkàC{œkàCCœkD{œkDCœk D{œk DCœk@D{œk@DCœk`D{œk`DCœk€D{œk€DCœk D{œk DCœkÀD{œkÀDCœkàD{œkàDCœkE{œkECœk E{œk ECœk@E{œk@ECœk`E{œk`ECœk€E{œk€ECœk E{œk ECœkÀE{œkÀECœkàE{œkàECœkF{œkFCœk F{œk FCœk@F{œk@FCœk`F{œk`FCœk€FSkm F{œk FCœkÀF{œkÀFCœkàF{œkàFCœkG{œkGCœk G{œk GCœk@GSkm`G{œk`GCœk€G{œk€GCœk G{œk GCœkÀG{œkÀGCœkàG{œkàGCœkH{œkHCœk H{œk HCœk@H{œk@HCœk`HSkm€H{œk€HCœk H{œk HCœkÀH{œkÀHCœkàH{œkàHCœk€I{œk I{œkÀI{œkàI{œkJ{œk J{œk@J{œk`J{œk€K{œk K{œkÀK{œkàK{œkL{œk L{œk@L{œk`L{œk€L{œk€LCœk LSkmÀL{œkÀLCœkàLS~mM{œkMCœk M{œk MCœk@M{œk@MCœk`M{œk€M{œk M{œkÀM{œkàM{œkN{œk N{œk@N{œk`N{œk`NCœk€N{œk€NCœk N{œk NCœkÀN{œkÀNCœkàN{œkàNCœkO{œkOCœk O{œk OCœk@O{œk@OCœk`O{œk`OCœk€O{œk€OCœk O{œk OCœkÀO{œkÀOCœk R{œk RCœk@R{œk@RCœk`]{œk`]Cœk€]{œk€]Cœk`h{œk€h{œk h{œkÀh{œkàh{œk`j{œk€j{œk j{œkÀj{œkàj{œkÀk{œkàk{œkl{œk l{œk@l{œk@r“Îk`r“Îk€r“Îk r“ÎkÀr“Øàr“Îk@s“Îk€s“Îk s“ÎkÀs“[ {{œk {Cœk`{“Îk€{“Îk {“ÎkÀ{“Îkà{“Îk|“ÂQ |“ÂQ@|“Îk`|“Îk€|“á |“ÎkÀ|“Îk}“ÎkÀ}{œkà}{œk~{œk ~{œk@~{œk`~{œk€~{œk ~{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk€{œk@€{œk@€Cœk`€Skm€€{œk€€Cœk €S~mÀ€{œkÀ€Cœkà€S‹m{œkCœk {œk Cœk@{œk@Cœk`{œk€{œk {œkÀ{œkà{œk‚{œk ‚{œk@‚{œk`‚{œk`‚Cœk€‚{œk€‚Cœk ‚{œk ‚CœkÀ‚{œkÀ‚Cœkà‚{œkà‚Cœkƒ{œkƒCœk ƒ{œk ƒCœk@ƒ{œk@ƒCœk`ƒ{œk`ƒCœk€ƒ{œk€ƒCœk ƒ{œk ƒCœkÀƒSkmàƒ{œkàƒCœk„S~m „{œk „Cœk@„{œk@„Cœk`„{œk`„Cœk€„{œk „{œkÀ„{œkà„{œk…{œk …{œk@…{œk`…{œk€…{œk€…Cœk …{œk …CœkÀ…{œkÀ…Cœkà…{œkà…Cœk†{œk†Cœk †{œk †Cœk@†{œk@†Cœk`†{œk`†Cœk€†{œk€†Cœk †{œk †Cœk ‡{œk@‡{œk`‡{œk€‡{œk ‡{œkÀ‡{œkà‡{œkˆ{œkàˆ{œk‰{œk ‰{œk@‰{œk`‰{œk€‰{œk ‰{œkÀ‰{œk`Š{œk€Š{œk Š{œkÀŠ{œkàŠ{œk‹{œk ‹{œk@‹{œk€‹{œk€‹Cœk ‹SkmÀ‹{œkÀ‹Cœkà‹S~mŒ{œkŒCœk ŒS‹m@Œ{œk@ŒCœk`ŒS⢀Œ{œk€ŒCœk ŒSï¢ÀŒ{œkÀŒCœkàŒSü¢{œkCœk S £@{œk@Cœk`S£€{œk€Cœk S#£À{œkÀCœkàS÷ùŽ{œkŽCœk ŽSú@Ž{œk@ŽCœk`ŽS3ú€Ž{œk€ŽCœk ŽSSúÀŽ{œkÀŽCœkàŽS~ú{œkCœk S @{œk@Cœk`S2 €{œk€Cœk SM À{œkÀCœkàSc {œkCœk S @{œk@Cœk`SŽ €{œk€Cœk S­ À{œkÀCœkàSÌ ‘{œk‘Cœk ‘SÙ @‘{œk@‘Cœk`‘SÅY €‘{œk€‘Cœk ‘SáY À‘{œkÀ‘Cœkà‘SZ ’{œk’Cœk ’SZ @’{œk@’Cœk`’S‚£ €’{œk€’Cœk ’Sœ£ À’{œkÀ’Cœkà’S»£ “{œk“Cœk “Sû£ @“{œk@“Cœk`“SÕ €“{œk€“Cœk “S$Õ À“{œkÀ“Cœkà“S1Õ ”{œk”Cœk ”S>Õ @”{œk@”Cœk`”SKÕ €”{œk€”Cœk ”SXÕ À”{œkÀ”Cœkà”SeÕ •{œk•Cœk •SrÕ @•{œk@•Cœk`•SÕ €•{œk€•Cœk •SŒÕ À•{œkÀ•Cœkà•S™Õ –{œk–Cœk –S¦Õ @–{œk@–Cœk`–S³Õ €–{œk€–Cœk –SÀÕ À–{œkÀ–Cœkà–SÍÕ —{œk—Cœk —SÚÕ @—{œk@—Cœk`—SçÕ €—{œk€—Cœk —{œk —CœkÀ—{œkÀ—Cœkà—{œk˜{œk ˜{œk@˜{œk`˜{œk€˜{œk ˜{œkÀ˜{œkà˜{œkà˜Cœk™{œk™Cœk ™{œk ™Cœk@™{œk@™Cœk`™{œk`™Cœk€™{œk€™Cœk ™{œk ™CœkÀ™{œkÀ™Cœkà™{œkà™Cœkš{œkšCœk š{œk šCœk@š{œk@šCœk`š{œk`šCœk€š{œk€šCœk š{œk šCœkÀš{œkÀšCœkàš{œkàšCœk›{œk›Cœk ›{œk ›Cœk@›{œk@›Cœk`›{œk`›Cœk€›{œk€›Cœk ›{œk ›CœkÀ›{œkÀ›Cœkà›{œkà›Cœkœ{œkœCœk œ{œk œCœk@œ{œk@œCœk`œ{œk`œCœk€œ{œk€œCœk œ{œk œCœkÀœ{œkÀœCœkàœ{œkàœCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkž{œkžCœk ž{œk žCœk@ž{œk@žCœk`ž{œk`žCœk€ž{œk€žCœk ž{œk žCœkÀž{œkÀžCœkàž{œkàžCœkŸ{œkŸCœk Ÿ{œk ŸCœk@Ÿ{œk@ŸCœk`Ÿ{œk`ŸCœk€Ÿ{œk€ŸCœk Ÿ{œk ŸCœkÀŸ{œkÀŸCœkàŸ{œkàŸCœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk¡{œk¡Cœk ¡{œk ¡Cœk@¡{œk@¡Cœk`¡{œk`¡Cœk€¡{œk€¡Cœk ¡{œk ¡CœkÀ¡{œkÀ¡Cœkà¡{œkà¡Cœk¢{œk¢Cœk ¢{œk ¢Cœk@¢{œk@¢Cœk`¢{œk`¢Cœk€¢{œk€¢Cœk ¢{œk ¢CœkÀ¢{œkÀ¢Cœkà¢{œkà¢Cœk£{œk£Cœk £{œk £Cœk@£{œk@£Cœk`£{œk`£Cœk€£{œk€£Cœk £{œk £CœkÀ£{œkÀ£Cœkà£{œkà£Cœk¤{œk¤Cœk ¤{œk ¤Cœk@¤{œk@¤Cœk`¤{œk`¤Cœk€¤{œk€¤Cœk ¤{œk ¤CœkÀ¤{œkÀ¤Cœkà¤{œkà¤Cœk¥{œk¥Cœk ¥{œk ¥Cœk@¥{œk@¥Cœk`¥{œk`¥Cœk€¥{œk€¥Cœk ¥{œk ¥CœkÀ¥{œkÀ¥Cœkà¥{œkà¥Cœk¦{œk¦Cœk ¦{œk ¦Cœk@¦{œk@¦Cœk`¦{œk`¦Cœk€¦{œk€¦Cœk ¦{œk ¦CœkÀ¦{œkÀ¦Cœkà¦{œkà¦Cœk§{œk§Cœk §{œk §Cœk@§{œk@§Cœk`§{œk`§Cœk€§{œk€§Cœk §{œk §CœkÀ§{œkÀ§Cœkà§{œkà§Cœk¨{œk¨Cœk ¨{œk ¨Cœk@¨{œk@¨Cœk`¨{œk`¨Cœk€¨{œk€¨Cœk ¨{œk ¨CœkÀ¨{œkÀ¨Cœkà¨{œkà¨Cœk©Skm ©{œk ©Cœk@©S~m`©{œk`©Cœk€©S‹m ©{œk ©CœkÀ©Sâ¢à©{œkà©CœkªSï¢ ª{œk ªCœk@ªSü¢`ª{œk`ªCœk€ªS £ ª{œk ªCœkÀª{œkÀªCœkàª{œkàªCœk«{œk «{œk@«{œk`«{œk€«{œk «{œkÀ«{œkà«{œk¬{œk¬Cœk ¬{œk ¬Cœk@¬{œk@¬Cœk`¬{œk`¬Cœk€¬{œk€¬Cœk ¬{œk ¬CœkÀ¬{œkÀ¬Cœkà¬{œkà¬Cœk­{œk­Cœk ­{œk ­Cœk@­{œk@­Cœk`­{œk`­Cœk€­{œk€­Cœk ­{œk ­CœkÀ­{œkÀ­Cœkà­{œkà­Cœk®{œk®Cœk ®{œk ®Cœk@®{œk@®Cœk`®{œk`®Cœk€®{œk€®Cœk ®{œk ®CœkÀ®{œkÀ®Cœkà®{œkà®Cœk¯{œk¯Cœk ¯{œk ¯Cœk@¯{œk@¯Cœk`¯{œk`¯Cœk€¯{œk€¯Cœk ¯{œk ¯CœkÀ¯{œkÀ¯Cœkà¯{œkà¯Cœk°{œk°Cœk °{œk °Cœk@°{œk@°Cœk`°{œk`°Cœk€°{œk€°Cœk °{œk °CœkÀ³{œkà³{œk´{œk ´{œk@´{œk`´{œk€´{œk ´{œkÀ´{œkÀ´Cœkà´Skmµ{œkµCœk µS~m@µ{œk@µCœk`µS‹m€µ{œk€µCœk µ{œk µCœkÀµ{œkÀµCœkàµ{œk¶{œk ¶{œk@¶{œk`¶{œk€¶{œk ¶{œkÀ¶{œkà¶{œkà¶Cœk·{œk·Cœk ·{œk ·Cœk@·{œk@·Cœk`·{œk`·Cœk€·{œk€·Cœk ·{œk ·CœkÀ·{œkÀ·Cœkà·{œkà·Cœk¸{œk¸Cœk ¸{œk ¸Cœk@¸{œk@¸Cœk๓Îkº“Îk º“Îk@º“Îk`º“Îk€º“Ø º“Îk€»{œk »{œkÀ»{œkÀ¼{œkà¼{œkÀ½{œkà½{œk¾{œk ¾{œk@¾{œk ¿“Ø@¿“Ø`¿“Îk€¿“Îk ¿“ÜTÀ¿“ØÀ“Ø À“Ø€À“ØÀÀ“ØÁ“Ø€Á“Îk Á“ÎkÀÁ“ÎkàÁ“¢9 Â“ØÀ“¤là“ׂÓZ ÓZÂ@ÓZÂ`ÓZ€Óˆ÷  Ã“¤lÀÓ¤làÓ¤lÄ“ׂÀÄ“ׂàÄ“!×Å“¤l Å“0û @Å“0û `Å“0û €Å“0û  Å“iû ÀÅ“!×àÅ“!ׯ“!× Æ“¤l€Ç{œk€ÇCœkÀÇ“ÎkàÇ“ÎkÈ“ÂQ È“Ø@È“ׂ`È“Îk€È“Îk È“Îk ɓؠË{œkÀË{œkàË{œkÌ{œk Ì{œk@Í{œk`Í{œk€Í{œk Í{œkÀÍ{œk Î{œkÀÎ{œkàÎ{œkÏ{œk Ï{œk@ГØ`Ð{œk€Ð“ØàÐ{œkàÐCœkÑSkm Ñ{œk ÑCœk@ÑS~m`Ñ{œk`ÑCœk€Ñ{œk€ÑCœk Ñ{œk ÑCœkÀÑ{œkàÑ{œkÒ{œk Ò{œk@Ò{œk`Ò{œk€Ò{œk Ò{œk@Ô“Îk€Ô“ Õ“Îk`Õ“[€Õ“Îk Õ“[@Ö“Îk`Ö“Ø Ö“Ø×{œk ×{œk ×{œk ×CœkÀ×{œkÀ×Cœk Ø{œk ØCœkàÙ{œk Ú{œkÀÚ“ØàÚ“ÎkÛ“Îk Û“Îk ÛSkmÀÛ{œkÀÛCœkàÛ{œkàÛCœkÜ{œkÜCœk Ü{œk ÜCœk@Ü{œk@ÜCœk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœk Ý{œk ÝCœkÀÝSkmàÝ{œkàÝCœkÞS~m Þ{œk ÞCœk@ÞS‹m`Þ{œk`ÞCœk€ÞS⢠Þ{œk ÞCœkÀÞSï¢àÞ{œkàÞCœkßSü¢ ß{œk ßCœk@ßS £`ß{œk`ßCœk€ßS£ ß{œk ßCœkÀßS#£àß{œkàßCœkàS÷ù à{œk àCœk@àSú`à{œk`àCœk€àS3ú à{œk àCœkÀàSSúàà{œkààCœkáS~ú á{œk áCœk@áS `á{œk`áCœk€áS2  á{œk áCœkÀáSM àá{œkàáCœkâSc â{œk âCœk@âS `â{œk`âCœk€âSŽ  â{œk âCœkÀâS­ àâ{œkàâCœkãSÌ ã{œk ãCœk@ãSÙ `ã{œk`ãCœk€ãSÅY  ã{œk ãCœkÀãSáY àã{œkàãCœkäSZ ä{œk äCœk@äSZ `ä{œk`äCœk€äS‚£  ä{œk äCœkÀäSœ£ àä{œkàäCœkåS»£ å{œk åCœk@åSû£ `å{œk`åCœk€åSÕ  å{œk åCœkÀåS$Õ àå{œkàåCœkæS1Õ æ{œk æCœk@æS>Õ `æ{œk`æCœk€æSKÕ  æ{œk æCœkÀæSXÕ àæ{œkàæCœkçSeÕ ç{œk çCœk@çSrÕ `ç{œk`çCœk€çSÕ  ç{œk çCœkÀçSŒÕ àç{œkàçCœkèS™Õ è{œk èCœk@èS¦Õ `è{œk`èCœk€èS³Õ  è{œk èCœkÀèSÀÕ àè{œkàèCœkéSÍÕ é{œk éCœk@éSÚÕ `é{œk`éCœk€éSçÕ  é{œk éCœkÀéSôàé{œkàéCœkêS ê{œk êCœk@êS`ê{œk`êCœk€êS ê{œk êCœkÀêS(àê{œkàêCœkëS5 ë{œk ëCœk@ëSB`ë{œk`ëCœk€ëSO ë{œk ëCœkÀëS\àë{œkàëCœkìSi ì{œk ìCœk@ìSv`ì{œk`ìCœk€ìSƒ ì{œk ìCœkÀìSàì{œkàìCœkíS í{œk íCœk@íSª`í{œk`íCœk€íS· í{œk íCœkÀíSÄàí{œkàíCœkîSÑ î{œk îCœk@îSÞ`î{œk`îCœk€îSë î{œk îCœkÀîSøàî{œkàîCœkïS ï{œk ïCœk@ïS`ï{œk`ïCœk€ïS ï{œk ïCœkÀïS,àï{œkàïCœkðS9 ð{œk ðCœk@ðSF`ð{œk`ðCœk€ðSS ð{œk ðCœkÀðS`àð{œkàðCœkñSm ñ{œk ñCœk@ñSz`ñ{œk`ñCœk€ñS‡ ñ{œk ñCœkÀñS”àñ{œkàñCœkòS¡ ò{œk òCœk@òS®`ò{œk`òCœk€òS» ò{œk òCœkÀòSÈàò{œkàòCœkóSÕ ó{œk óCœk@óSâ`ó{œk`óCœk€óSï ó{œk óCœkÀóSüàó{œkàóCœkôS  ô{œk ôCœk@ôS`ô{œk`ôCœk€ôS# ô{œk ôCœkÀôS0àô{œkàôCœkõS= õ{œk õCœk@õSJ`õ{œk`õCœk€õSW õ{œk õCœkÀõSdàõ{œkàõCœköSq ö{œk öCœk@öS~`ö{œk`öCœk€öS‹ ö{œk öCœkÀöS˜àö{œkàöCœk÷S¥ ÷{œk ÷Cœk@÷S²`÷{œk`÷Cœk€÷S¿ ÷{œk ÷CœkÀ÷SÌà÷{œkà÷CœkøSÙ ø{œk øCœk@øSæ`ø{œk`øCœk€øSó ø{œk øCœkÀøSàø{œkàøCœkùS  ù{œk ùCœk@ùS`ù{œk`ùCœk€ùS' ù{œk ùCœkÀùS4àù{œkàùCœkúSA ú{œk úCœk@úSN`ú{œk`úCœk€úS[ ú{œk úCœkÀúShàú{œkàúCœkûSu û{œk ûCœk@ûS‚`û{œk`ûCœk€ûS û{œk ûCœkÀûSœàû{œkàûCœküS© ü{œk üCœk@üS¶`ü{œk`üCœk€üSàü{œk üCœkÀüSÐàü{œkàüCœkýSÝ ý{œk ýCœk@ýSê`ý{œk`ýCœk€ýS÷ ý{œk ýCœkÀýSàý{œkàýCœkþS þ{œk þCœk@þS`þ{œk`þCœk€þS+ þ{œk þCœkÀþS8àþ{œkàþCœkÿSE ÿ{œk ÿCœk@ÿSR`ÿ{œk`ÿCœk€ÿS_ ÿ{œk ÿCœkÀÿSlàÿ{œkàÿCœkSy {œk Cœk@S†`{œk`Cœk€S“ {œk CœkÀS à{œkàCœkS­ {œk Cœk@Sº`{œk`Cœk€SÇ {œk CœkÀSÔà{œkàCœkSá {œk Cœk@Sî`{œk`Cœk€Sû {œk CœkÀSà{œkàCœkS {œk Cœk@S"`{œk`Cœk€S/ {œk CœkÀSJà{œkàCœkSW {œk Cœk@Sd`{œk`Cœk€Sq {œk CœkÀS~à{œkàCœkS‹ {œk Cœk@S˜`{œk`Cœk€S¥ {œk CœkÀS²à{œkàCœkS¿ {œk Cœk@SÚ`{œk`Cœk€Sò {œk CœkÀSà{œkàCœkS {œk Cœk@S4`{œk`Cœk€SJ {œk CœkÀS`à{œkàCœkSm {œk Cœk@Sƒ`{œk`Cœk€S™ {œk CœkÀS¯à{œkàCœk SÊ {œk Cœk@ Så` {œk` Cœk€ Sò  {œk  CœkÀ S à {œkà Cœk S( {œk Cœk@ S5` {œk` Cœk€ SB  {œk  CœkÀ SOà {œkà Cœk S\ {œk Cœk@ Si` {œk` Cœk€ Sv  {œk  CœkÀ Sƒà {œkà Cœk S {œk Cœk@ S` {œk` Cœk€ Sª  {œk  CœkÀ S·à {œkà Cœk SÄ {œk Cœk@ SÑ` {œk` Cœk€ Sè  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk!{œk!Cœk !{œk !Cœk@!{œk@!Cœk`!{œk`!Cœk€!{œk€!Cœk !{œk !CœkÀ!{œkÀ!Cœkà!{œkà!Cœk"{œk"Cœk "{œk "Cœk@"{œk@"Cœk`"{œk`"Cœk€"{œk€"Cœk "{œk "CœkÀ"{œkÀ"Cœkà"{œkà"Cœk#{œk#Cœk #{œk #Cœk@#{œk@#Cœk`#{œk`#Cœk€#{œk€#Cœk #{œk #CœkÀ#{œkÀ#Cœkà#{œkà#Cœk${œk$Cœk ${œk $Cœk@${œk@$Cœk`${œk`$Cœk€${œk€$Cœk ${œk $CœkÀ${œkÀ$Cœkà${œkà$Cœk%{œk%Cœk %{œk %Cœk@%{œk@%Cœk`%{œk`%Cœk€%{œk€%Cœk %{œk %CœkÀ%{œkÀ%Cœkà%{œkà%Cœk&{œk&Cœk &{œk &Cœk@&{œk@&Cœk`&{œk`&Cœk€&{œk€&Cœk &{œk &CœkÀ&{œkÀ&Cœkà&{œkà&Cœk'{œk'Cœk '{œk 'Cœk@'{œk@'Cœk`'{œk`'Cœk€'{œk€'Cœk '{œk 'CœkÀ'{œkÀ'Cœkà'{œkà'Cœk({œk(Cœk ({œk (Cœk@({œk@(Cœk`({œk`(Cœk€({œk€(Cœk ({œk (CœkÀ({œkÀ(Cœkà({œkà(Cœk){œk)Cœk ){œk )Cœk@){œk@)Cœk`){œk`)Cœk ){œk )CœkÀ)Skmà){œkà)Cœk*S~m *{œk *Cœk@*S‹m`*{œk`*Cœk€*S⢠*{œk *CœkÀ*Sï¢à*{œkà*Cœk+Sü¢ +{œk +Cœk@+S £`+{œk`+Cœk€+S£ +{œk +CœkÀ+S#£à+{œkà+Cœk,S÷ù ,{œk ,Cœk@,Sú`,{œk`,Cœk€,S3ú ,{œk ,CœkÀ,SSúà,{œkà,Cœk-S~ú -{œk -Cœk@-S `-{œk`-Cœk€-S2  -{œk -CœkÀ-SM à-{œkà-Cœk.Sc .{œk .Cœk@.S `.{œk`.Cœk€.SŽ  .{œk .CœkÀ.S­ à.{œkà.Cœk/SÌ /{œk /Cœk@/SÙ `/{œk`/Cœk€/SÅY  /{œk /CœkÀ/SáY à/{œkà/Cœk0SZ 0{œk 0Cœk@0SZ `0{œk`0Cœk€0S‚£  0{œk 0CœkÀ0Sœ£ à0{œkà0Cœk1S»£ 1{œk 1Cœk@1Sû£ `1{œk`1Cœk€1SÕ  1{œk 1CœkÀ1S$Õ à1{œkà1Cœk2S1Õ 2{œk 2Cœk@2S>Õ `2{œk`2Cœk€2SKÕ  2{œk 2CœkÀ2SXÕ à2{œkà2Cœk3SeÕ 3{œk 3Cœk@3SrÕ `3{œk`3Cœk€3SÕ  3{œk 3CœkÀ3SŒÕ à3{œkà3Cœk4S™Õ 4{œk 4Cœk@4S¦Õ `4{œk`4Cœk€4S³Õ  4{œk 4CœkÀ4SÀÕ à4{œkà4Cœk5SÍÕ 5{œk 5Cœk@5SÚÕ `5{œk`5Cœk€5SçÕ  5{œk 5CœkÀ5Sôà5{œkà5Cœk6S 6{œk 6Cœk@6S`6{œk`6Cœk€6S 6{œk 6CœkÀ6S(à6{œkà6Cœk7S5 7{œk 7Cœk@7SB`7{œk`7Cœk€7SO 7{œk 7CœkÀ7S\à7{œkà7Cœk8Si 8{œk 8Cœk@8Sv`8{œk`8Cœk€8Sƒ 8{œk 8CœkÀ8Sà8{œkà8Cœk9S 9{œk 9Cœk@9Sª`9{œk`9Cœk€9S· 9{œk 9CœkÀ9SÄà9{œkà9Cœk:SÑ :{œk :Cœk@:SÞ`:{œk`:Cœk€:Së :{œk :CœkÀ:Søà:{œkà:Cœk;S ;{œk ;Cœk@;S`;{œk`;Cœk€;S ;{œk ;CœkÀ;S,à;{œkà;Cœk<S9 <{œk <Cœk@<SF`<{œk`<Cœk€<SS <{œk <CœkÀ<S`à<{œkà<Cœk=Sm ={œk =Cœk@=Sz`={œk`=Cœk€=S‡ ={œk =CœkÀ=S”à={œkà=Cœk>S¡ >{œk >Cœk@>S®`>{œk`>Cœk€>S» >{œk >CœkÀ>SÈà>{œkà>Cœk?SÕ ?{œk ?Cœk@?Sâ`?{œk`?Cœk€?Sï ?{œk ?CœkÀ?Süà?{œkà?Cœk@S  @{œk @Cœk@@S`@{œk`@Cœk€@S# @{œk @CœkÀ@S0à@{œkà@CœkAS= A{œk ACœk@ASJ`A{œk`ACœk€ASW A{œk ACœkÀASdàA{œkàACœkBSq B{œk BCœk@BS~`B{œk`BCœk€BS‹ B{œk BCœkÀBS˜àB{œkàBCœkCS¥ C{œk CCœk@CS²`C{œk`CCœk€CS¿ C{œk CCœkÀCSÌàC{œkàCCœkDSÙ D{œk DCœk@DSæ`D{œk`DCœk€DSó D{œk DCœkÀDSàD{œkàDCœkES  E{œk ECœk@ES`E{œk`ECœk€ES' E{œk ECœkÀES4àE{œkàECœkFSA F{œk FCœk@FSN`F{œk`FCœk€FS[ F{œk FCœkÀFShàF{œkàFCœkGSu G{œk GCœk@GS‚`G{œk`GCœk€GS G{œk GCœkÀGSœàG{œkàGCœkHS© H{œk HCœk@HS¶`H{œk`HCœk€HSàH{œk HCœkÀHSÐàH{œkàHCœkISÝ I{œk ICœk@ISê`I{œk`ICœk€IS÷ I{œk ICœkÀISàI{œkàICœkJS J{œk JCœk@JS`J{œk`JCœk€JS+ J{œk JCœkÀJS8àJ{œkàJCœkKSE K{œk KCœk@KSR`K{œk`KCœk€KS_ K{œk KCœkÀKSlàK{œkàKCœkLSy L{œk LCœk@LS†`L{œk`LCœk€LS“ L{œk LCœkÀLS àL{œkàLCœkMS­ M{œk MCœk@MSº`M{œk`MCœk€MSÇ M{œk MCœkÀMSÔàM{œkàMCœkNSá N{œk NCœk@NSî`N{œk`NCœk€NSû N{œk NCœkÀNSàN{œkàNCœkOS O{œk OCœk@OS"`O{œk`OCœk€OS/ O{œk OCœkÀOSJàO{œkàOCœkPSW P{œk PCœk@PSd`P{œk`PCœk€PSq P{œk PCœkÀPS~àP{œkàPCœkQS‹ Q{œk QCœk@QS˜`Q{œk`QCœk€QS¥ Q{œk QCœkÀQS²àQ{œkàQCœkRS¿ R{œk RCœk@RSÚ`R{œk`RCœk€RSò R{œk RCœkÀRSàR{œkàRCœkSS S{œk SCœk@SS4`S{œk`SCœk€SSJ S{œk SCœkÀSS`àS{œkàSCœkTSm T{œk TCœk@TSƒ`T{œk`TCœk€TS™ T{œk TCœkÀTS¯àT{œkàTCœkUSÊ U{œk UCœk@USå`U{œk`UCœk€USò U{œk UCœkÀUS àU{œkàUCœkVS( V{œk VCœk@VS5`V{œk`VCœk€VSB V{œk VCœkÀVSOàV{œkàVCœkWS\ W{œk WCœk@WSi`W{œk`WCœk€WSv W{œk WCœkÀWSƒàW{œkàWCœkXS X{œk XCœk@XS`X{œk`XCœk€XSª X{œk XCœkÀXS·àX{œkàXCœkYSÄ Y{œk YCœk@YSÑ`Y{œk`YCœk€YSè Y{œk YCœkÀYSp/àY{œkàYCœkZS}/ Z{œk ZCœk@Z{œk@ZCœk`Z{œk`ZCœk€Z{œk Z{œkÀZ{œkàZ{œk[{œk [{œk@[{œk`[{œk [{œk [CœkÀ[Skmà[{œkà[Cœk\S~m \{œk \Cœk@\S‹m`\{œk`\Cœk€\S⢠\{œk \CœkÀ\Sï¢à\{œkà\Cœk]Sü¢ ]{œk ]Cœk@]S £`]{œk`]Cœk€]S£ ]{œk ]CœkÀ]S#£à]{œkà]Cœk^S÷ù ^{œk ^Cœk@^Sú`^{œk`^Cœk€^S3ú ^{œk ^CœkÀ^SSúà^{œkà^Cœk_S~ú _{œk _Cœk@_S `_{œk`_Cœk€_S2  _{œk _CœkÀ_SM à_{œkà_Cœk`Sc `{œk `Cœk@`S ``{œk``Cœk€`SŽ  `{œk `CœkÀ`S­ à`{œkà`CœkaSÌ a{œk aCœk@aSÙ `a{œk`aCœk€aSÅY  a{œk aCœkÀaSáY àa{œkàaCœkbSZ b{œk bCœk@bSZ `b{œk`bCœk€bS‚£  b{œk bCœkÀbSœ£ àb{œkàbCœkcS»£ c{œk cCœk@cSû£ `c{œk`cCœk€cSÕ  c{œk cCœkÀcS$Õ àc{œkàcCœkdS1Õ d{œk dCœk@dS>Õ `d{œk`dCœk€dSKÕ  d{œk dCœkÀdSXÕ àd{œkàdCœkeSeÕ e{œk eCœk@eSrÕ `e{œk`eCœk€eSÕ  e{œk eCœkÀeSŒÕ àe{œkàeCœkfS™Õ f{œk fCœk@fS¦Õ `f{œk`fCœk€fS³Õ  f{œk fCœkÀfSÀÕ àf{œkàfCœkgSÍÕ g{œk gCœk@gSÚÕ `g{œk`gCœk€gSçÕ  g{œk gCœkÀgSôàg{œkàgCœkhS h{œk hCœk@hS`h{œk`hCœk€hS h{œk hCœkÀhS(àh{œkàhCœkiS5 i{œk iCœk@iSB`i{œk`iCœk€iSO i{œk iCœkÀiS\ài{œkàiCœkjSi j{œk jCœk@jSv`j{œk`jCœk€jSƒ j{œk jCœkÀjSàj{œkàjCœkkS k{œk kCœk@kSª`k{œk`kCœk€kS· k{œk kCœkÀkSÄàk{œkàkCœklSÑ l{œk lCœk@lSÞ`l{œk`lCœk€lSë l{œk lCœkÀlSøàl{œkàlCœkmS m{œk mCœk@mS`m{œk`mCœk€mS m{œk mCœkÀmS,àm{œkàmCœknS9 n{œk nCœk@nSF`n{œk`nCœk€nSS n{œk nCœkÀnS`àn{œkànCœkoSm o{œk oCœk@oSz`o{œk`oCœk€oS‡ o{œk oCœkÀoS”ào{œkàoCœkpS¡ p{œk pCœk@pS®`p{œk`pCœk€pS» p{œk pCœkÀpSÈàp{œkàpCœkqSÕ q{œk qCœk@qSâ`q{œk`qCœk€qSï q{œk qCœkÀqSüàq{œkàqCœkrS  r{œk rCœk@rS`r{œk`rCœk€rS# r{œk rCœkÀrS0àr{œkàrCœksS= s{œk sCœk@sSJ`s{œk`sCœk€sSW s{œk sCœkÀsSdàs{œkàsCœktSq t{œk tCœk@tS~`t{œk`tCœk€tS‹ t{œk tCœkÀtS˜àt{œkàtCœkuS¥ u{œk uCœk@uS²`u{œk`uCœk€uS¿ u{œk uCœkÀuSÌàu{œkàuCœkvSÙ v{œk vCœk@vSæ`v{œk`vCœk€vSó v{œk vCœkÀvSàv{œkàvCœkwS  w{œk wCœk@wS`w{œk`wCœk€wS' w{œk wCœkÀwS4àw{œkàwCœkxSA x{œk xCœk@xSN`x{œk`xCœk€xS[ x{œk xCœkÀxShàx{œkàxCœkySu y{œk yCœk@yS‚`y{œk`yCœk€yS y{œk yCœkÀySœày{œkàyCœkzS© z{œk zCœk@zS¶`z{œk`zCœk€zSàz{œk zCœkÀzSÐàz{œkàzCœk{SÝ {{œk {Cœk@{Sê`{{œk`{Cœk€{S÷ {{œk {CœkÀ{Sà{{œkà{Cœk|S |{œk |Cœk@|S`|{œk`|Cœk€|S+ |{œk |CœkÀ|S8à|{œkà|Cœk}SE }{œk }Cœk@}SR`}{œk`}Cœk€}S_ }{œk }CœkÀ}Slà}{œkà}Cœk~Sy ~{œk ~Cœk@~S†`~{œk`~Cœk€~S“ ~{œk ~CœkÀ~S à~{œkà~CœkS­ {œk Cœk@Sº`{œk`Cœk€SÇ {œk CœkÀSÔà{œkàCœk€Sá €{œk €Cœk@€Sî`€{œk`€Cœk€€Sû €{œk €CœkÀ€Sà€{œkà€CœkS {œk Cœk@S"`{œk`Cœk€S/ {œk CœkÀSJà{œkàCœk‚SW ‚{œk ‚Cœk@‚Sd`‚{œk`‚Cœk€‚Sq ‚{œk ‚CœkÀ‚S~à‚{œkà‚CœkƒS‹ ƒ{œk ƒCœk@ƒS˜`ƒ{œk`ƒCœk€ƒS¥ ƒ{œk ƒCœkÀƒS²àƒ{œkàƒCœk„S¿ „{œk „Cœk@„SÚ`„{œk`„Cœk€„Sò „{œk „CœkÀ„Sà„{œkà„Cœk…S …{œk …Cœk@…S4`…{œk`…Cœk€…SJ …{œk …CœkÀ…S`à…{œkà…Cœk†Sm †{œk †Cœk@†Sƒ`†{œk`†Cœk€†S™ †{œk †CœkÀ†S¯à†{œkà†Cœk‡SÊ ‡{œk ‡Cœk@‡Så`‡{œk`‡Cœk€‡Sò ‡{œk ‡CœkÀ‡S à‡{œkà‡CœkˆS( ˆ{œk ˆCœk@ˆS5`ˆ{œk`ˆCœk€ˆSB ˆ{œk ˆCœkÀˆSOàˆ{œkàˆCœk‰S\ ‰{œk ‰Cœk@‰Si`‰{œk`‰Cœk€‰Sv ‰{œk ‰CœkÀ‰Sƒà‰{œkà‰CœkŠS Š{œk ŠCœk@ŠS`Š{œk`ŠCœk€ŠSª Š{œk ŠCœkÀŠS·àŠ{œkàŠCœk‹SÄ ‹{œk ‹Cœk@‹SÑ`‹{œk`‹Cœk€‹Sè ‹{œk ‹CœkÀ‹Sp/à‹{œkà‹CœkŒS}/ Œ{œk ŒCœk@ŒSÛ/`Œ{œk`ŒCœk€ŒSè/ Œ{œk ŒCœkÀŒSõ/àŒ{œkàŒCœkS0 {œk Cœk@S0`{œk`Cœk€S0 {œk CœkÀS)0à{œkàCœkŽS60 Ž{œk ŽCœk@ŽSC0`Ž{œk`ŽCœk€ŽSP0 Ž{œk ŽCœkÀŽS]0àŽ{œkàŽCœkSj0 {œk Cœk@Sw0`{œk`Cœk€S„0 {œk CœkÀS‘0à{œkàCœkSž0 {œk Cœk@S«0`{œk`Cœk€S¸0 {œk CœkÀSÅ0à{œkàCœk‘SÒ0 ‘{œk ‘Cœk@‘Sß0`‘{œk`‘Cœk€‘Sì0 ‘{œk ‘CœkÀ‘Sù0à‘{œkà‘Cœk’S1 ’{œk ’Cœk@’S1`’{œk`’Cœk€’S 1 ’{œk ’CœkÀ’S-1à’{œkà’Cœk“S:1 “{œk “Cœk@“SG1`“{œk`“Cœk€“ST1 “{œk “CœkÀ“Sa1à“{œkà“Cœk”Sn1 ”{œk ”Cœk@”S{1`”{œk`”Cœk€”Sˆ1 ”{œk ”CœkÀ”S•1à”{œkà”Cœk•S¢1 •{œk •Cœk@•S¯1`•{œk`•Cœk€•S¼1 •{œk •CœkÀ•SÉ1à•{œkà•Cœk–SÖ1 –{œk –Cœk@–Sã1`–{œk`–Cœk€–Sð1 –{œk –CœkÀ–Sý1à–{œkà–Cœk—S 2 —{œk —Cœk@—S2`—{œk`—Cœk€—S$2 —{œk —CœkÀ—S12à—{œkà—Cœk˜S>2 ˜{œk ˜Cœk@˜SK2`˜{œk`˜Cœk€˜SX2 ˜{œk ˜CœkÀ˜Se2à˜{œkà˜Cœk™Sr2 ™{œk ™Cœk@™S2`™{œk`™Cœk€™SŒ2 ™{œk ™CœkÀ™S™2à™{œkà™CœkšS¦2 š{œk šCœk@šS³2`š{œk`šCœk€šSÀ2 š{œk šCœkÀšSÍ2àš{œkàšCœk›SÚ2 ›{œk ›Cœk@›Sç2`›{œk`›Cœk€›Sô2 ›{œk ›CœkÀ›S3à›{œkà›CœkœS3 œ{œk œCœk@œS3`œ{œk`œCœk€œS(3 œ{œk œCœkÀœS53àœ{œkàœCœkSB3 {œk Cœk@SO3`{œk`Cœk€S\3 {œk CœkÀSi3à{œkàCœkžSv3 ž{œk žCœk@žSƒ3`ž{œk`žCœk€žS3 ž{œk žCœkÀžS3àž{œkàžCœkŸSª3 Ÿ{œk ŸCœk@ŸS·3`Ÿ{œk`ŸCœk€ŸSÄ3 Ÿ{œk ŸCœkÀŸSÑ3àŸ{œkàŸCœk SÞ3  {œk  Cœk@ Së3` {œk` Cœk€ Sø3  {œk  CœkÀ S4à {œkà Cœk¡S4 ¡{œk ¡Cœk@¡S4`¡{œk`¡Cœk€¡S,4 ¡{œk ¡CœkÀ¡S94à¡{œkà¡Cœk¢SF4 ¢{œk ¢Cœk@¢SS4`¢{œk`¢Cœk€¢S`4 ¢{œk ¢CœkÀ¢Sm4à¢{œkà¢Cœk£Sz4 £{œk £Cœk@£S‡4`£{œk`£Cœk€£S”4 £{œk £CœkÀ£S¡4à£{œkà£Cœk¤S®4 ¤{œk ¤Cœk@¤S»4`¤{œk`¤Cœk€¤SÈ4 ¤{œk ¤CœkÀ¤SÕ4à¤{œkà¤Cœk¥Sâ4 ¥{œk ¥Cœk@¥Sï4`¥{œk`¥Cœk€¥Sü4 ¥{œk ¥CœkÀ¥S 5à¥{œkà¥Cœk¦S5 ¦{œk ¦Cœk@¦S#5`¦{œk`¦Cœk€¦S05 ¦{œk ¦CœkÀ¦S=5à¦{œkà¦Cœk§SJ5 §{œk §Cœk@§SW5`§{œk`§Cœk€§Sd5 §{œk §CœkÀ§Sq5à§{œkà§Cœk¨S~5 ¨{œk ¨Cœk@¨S‹5`¨{œk`¨Cœk€¨S˜5 ¨{œk ¨CœkÀ¨S¥5à¨{œkà¨Cœk©S²5 ©{œk ©Cœk@©S¿5`©{œk`©Cœk€©SÌ5 ©{œk ©CœkÀ©{œkÀ©Cœkà©{œkà©Cœkª{œk ª{œk@ª{œk`ª{œk€ª{œk ª{œkÀª{œkàª{œk`Æ{œk€Æ{œk€Ç{œkÀÈ{œkÀÈCœk€Ì“ׂ€Í{œkÀÍ{œkÏSkm Ï{œk ÏCœk@Ï{œk@ÏCœk`Ï{œk`ÏCœk€Ï{œk€ÏCœk Ï{œkÀÏ{œkàÏ{œkÐ{œk Ð{œk@Ð{œk`Ð{œk€Ð{œk`Ñ{œk€Ñ{œk Ñ{œkÀÑ{œkàÑ{œk Ò{œkÀÒ{œkàÒ{œkÓ{œk Ó{œkÔ{œk Ô{œk@Ô{œk`Ô{œk€Ô{œk Ô{œkÀÔ{œkàÔ{œk€Õ{œk€ÕCœk Õ{œk ÕCœkÀÖ{œkÀÖCœkàÖ{œkàÖCœk@Ú{œk@ÚCœk`ÚSkm€Ú{œk€ÚCœk ÚS~mÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk@Û{œk`Û{œk Ü{œk@Ü{œk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœkÀÜ{œkÀÜCœkàÜ{œkàÜCœkÝ{œkÝCœk Ý{œk ÝCœk@Ý{œk@ÝCœkÀâ“Îkàâ“Øã“ÎkÀä{œk`æ{œk`ç“Îk€ç“Îk€è{œk é“Îkì“Îk ì“Îk@î“Îk`î“Îkàï“Îkð“Îk@ñ“Îk`ñ“Îk@ò“Îk`ò“Îk ú“Îk@ú“Îk`û“Îk û“Îk€ü{œk€üCœk ü{œk üCœk@ý{œk@ýCœk`ý{œk`ýCœkþ{œkþCœk þ{œk þCœk{œkCœk {œk CœkÀ{œkÀCœkà{œkàCœkÀSkmà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œkÀ{œkà{œk{œk {œk@{œk`{œk€{œkà{œk{œk {œk`{œk€{œk{œkCœk@“Îk`“Îk€“Îk “ØÀ“Øà“Îk “Îkà“Ø “ÎkÀ“Îkà“Îk“Îk “ׂ`“¤l€“Îk “Îk“Îk “ׂ@“ׂ`“¤l€“!× “Q‹À“ׂà“Îk“Ø “ׂ@“¤l`“!×€“Q‹ “ׂÀ“ׂà“ׂ“1Q “<ç@“Žç`“î瀓ׂà“Îk{œk {œk@“Îk`“ׂ€“Ø “¤là“ׂ“÷ê@“Îk`“>ä “ØÀ“Îkà“>ä“>ä “Îk {œk@ {œk`"Skm€"{œk€"Cœk "{œk "CœkÀ"{œkÀ"Cœkà"{œkà"Cœk#{œk #{œk@#{œk`#{œk€#{œk #{œkà#“Îk ${œk@${œk %{œk %Cœk@%Skm`%{œk`%Cœk€%S~m %{œk %CœkÀ%S‹mà%{œkà%Cœk&{œk&Cœk &{œk &Cœk@&{œk`&{œk€&{œk'“Îk '{œk@'{œk`'{œk`'Cœk€'{œk€'Cœk '{œk 'CœkÀ'{œkÀ'Cœkà'{œkà'Cœk({œk(Cœk ({œk (Cœk@({œk@(Cœk`({œk`(Cœk€({œk€(Cœk ({œk (CœkÀ({œkÀ(Cœkà({œkà(Cœk){œk)Cœk@){œk@)Cœk`)Skm€){œk€)Cœk )S~mÀ){œkÀ)Cœkà){œkà)Cœk*{œk*Cœk *{œk@*{œk`*{œk€*{œk *{œkÀ*{œkà*{œk+{œk +SkmÀ+{œkÀ+Cœkà+{œkà+Cœk,{œk,Cœk ,{œk ,Cœk@,{œk@,Cœk-{œk-Cœk -Skm@-{œk@-Cœk`-S~m€-{œk€-Cœk -{œk -CœkÀ-{œkÀ-Cœkà-{œk.{œk .{œk@.{œk`.{œk€.{œk .{œkÀ.{œkà.Skm/{œk/Cœk /{œk /Cœk@/{œk@/Cœk`/{œk`/Cœk€/{œk€/Cœk /{œk /Cœk0{œk0Cœk 0Skm@0{œk@0Cœk`0S~m€0{œk€0Cœk 0S‹mÀ0{œkÀ0Cœkà0Sâ¢1{œk1Cœk 1Sï¢@1{œk@1Cœk`1Sü¢€1{œk€1Cœk 1S £À1{œkÀ1Cœkà1S£2{œk2Cœk 2S#£@2{œk@2Cœk`2S÷ù€2{œk€2Cœk 2SúÀ2{œkÀ2Cœkà2S3ú3{œk3Cœk 3SSú@3{œk@3Cœk`3S~ú€3{œk€3Cœk 3S À3{œkÀ3Cœkà3S2 4{œk4Cœk 4SM @4{œk@4Cœk`4Sc €4{œk€4Cœk 4S À4{œkÀ4Cœkà4SŽ 5{œk5Cœk 5S­ @5{œk@5Cœk`5{œk`5Cœk€5{œk€5CœkÀ5{œkÀ5Cœkà5{œkà5Cœk6{œk6Cœk 6{œk 6Cœk@6{œk@6Cœk`6{œk`6Cœk€6{œk€6Cœk 6{œk 6CœkÀ6{œkÀ6Cœkà6{œkà6Cœk7{œk7Cœk 7{œk 7Cœk@7{œk@7Cœk`7{œk`7Cœk€7{œk€7Cœk 7{œk 7CœkÀ7{œkÀ7Cœkà7{œkà7Cœk8{œk8Cœk 8{œk 8Cœk@8{œk@8Cœk`8{œk`8Cœk€8{œk€8Cœk 8{œk 8CœkÀ8{œkÀ8Cœkà8{œkà8Cœk9{œk9Cœk 9{œk 9Cœk@9{œk@9Cœk`9{œk`9Cœk€9{œk€9Cœk 9{œk 9CœkÀ9{œkÀ9Cœkà9{œkà9Cœk:{œk:Cœk :{œk :Cœk@:{œk@:Cœk`:{œk`:Cœk€:{œk€:Cœk :{œk :CœkÀ:{œkÀ:Cœkà:{œkà:Cœk;{œk;Cœk ;{œk ;Cœk@;{œk@;Cœk`;{œk`;Cœk€;{œk€;Cœk ;{œk ;CœkÀ;{œkÀ;Cœkà;{œkà;Cœk<{œk<Cœk <{œk <Cœk@<{œk@<Cœk`<{œk`<Cœk€<{œk€<Cœk <{œk <CœkÀ<{œkÀ<Cœkà<{œkà<Cœk={œk=Cœk ={œk =Cœk@={œk@=Cœk`={œk`=Cœk€={œk€=Cœk ={œk =CœkÀ={œkÀ=Cœkà={œkà=Cœk>{œk>Cœk >{œk >Cœk@>{œk@>Cœk`>{œk`>Cœk€>{œk€>Cœk >{œk >CœkÀ>{œkÀ>Cœkà>{œkà>Cœk?{œk?Cœk ?{œk ?Cœk@?{œk@?Cœk`?{œk`?Cœk€?{œk€?Cœk ?{œk ?CœkÀ?{œkÀ?Cœkà?{œkà?Cœk@{œk@Cœk @{œk @Cœk@@{œk@@Cœk`@{œk`@Cœk @{œk @CœkÀ@Skmà@{œkà@CœkAS~m A{œk ACœk@AS‹m`A{œk`ACœk€AS⢠A{œk ACœkÀASï¢àA{œkàACœkBSü¢ B{œk BCœk@BS £`B{œk`BCœk€BS£ B{œk BCœkÀB{œkÀBCœkàB{œkàBCœkC{œkCCœk C{œk CCœk@C{œk@CCœk`C{œk`CCœk€C{œk€CCœk C{œk CCœkÀC{œkÀCCœkàC{œkàCCœkD{œkDCœk D{œk DCœk@D{œk@DCœk`D{œk`DCœk€D{œk€DCœk D{œk DCœkÀD{œkÀDCœkàD{œkàDCœkE{œkECœk E{œk ECœk@E{œk@ECœk`E{œk`ECœk€E{œk€ECœk E{œk ECœkÀE{œkÀECœkàE{œkàECœkF{œkFCœk F{œk FCœk@F{œk@FCœk`F{œk`FCœk€F{œk€FCœk F{œk FCœkÀF{œkÀFCœkàF{œkàFCœkG{œkGCœk G{œk GCœk@G{œk@GCœk`G{œk`GCœk€G{œk€GCœk G{œk GCœkÀG{œkÀGCœkàG{œkàGCœkH{œkHCœk H{œk HCœk@H{œk@HCœk`H{œk`HCœk€H{œk€HCœk H{œk HCœkàH{œkàHCœkISkm I{œk ICœk@IS~m`I{œk`ICœk€IS‹m I{œk ICœkÀI{œkÀICœkàI{œkàICœkJ{œk J{œk@J{œk`J{œk€J{œk J{œkÀJ{œkàJ{œk K{œk KCœk@KSkm`K{œk`KCœk€KS~m K{œk KCœkÀK{œkÀKCœkàK{œkàKCœkL{œk L{œk@L{œk`L{œk€L{œk L{œkÀL{œkàL{œk M{œk MCœk@MSkm`M{œk`MCœk€MS~m M{œk MCœkÀMS‹màM{œkàMCœkN{œkNCœk N{œk NCœk@N{œk`N{œk€N{œk N{œkÀN{œkàN{œkO{œk O{œk`O{œk`OCœk€OSkm O{œk OCœkÀOS~màO{œkàOCœkPS‹m P{œk PCœk@P{œk@PCœk`P{œk`PCœk€P{œk P{œkÀP{œkàP{œkQ{œk Q{œk QCœk@Q{œk@QCœk`Q{œk`QCœk€Q{œk€QCœk Q{œk QCœkÀQ{œkÀQCœkàQ{œkàQCœkR{œkRCœk@R{œk@RCœk`RSkm€R{œk€RCœk RS~mÀR{œkÀRCœkàR{œkàRCœkS{œkSCœk S{œk@S{œk`S{œk€S{œk S{œkÀS{œkÀSCœkàS{œkàSCœkT{œkTCœk T{œk TCœk@T{œk@TCœk`T{œk`TCœk T{œk TCœkÀTSkmàT{œkàTCœkUS~m U{œk UCœk@U{œk@UCœk`U{œk`UCœk€U{œk U{œkÀU{œkàU{œkV{œk V{œk VCœk@V{œk@VCœk`V{œk`VCœk€V{œk€VCœk V{œk VCœkÀV{œkÀVCœkW{œkWCœk WSkm@W{œk@WCœk`WS~m€W{œk€WCœk W{œk WCœkÀW{œkÀWCœkàW{œkX{œk X{œk@X{œk`X{œk€X{œk€XCœk X{œk XCœkÀX{œkÀXCœkàX{œkàXCœkY{œkYCœk Y{œk YCœk`Y{œk`YCœk€YSkm Y{œk YCœkÀYS~màY{œkàYCœkZ{œkZCœk Z{œk ZCœk@Z{œk`Z{œk€Z{œk Z{œkÀZ{œkàZ{œkàZCœk[{œk[Cœk [{œk [Cœk@[{œk@[Cœk`[{œk`[Cœk€[{œk€[CœkÀ[{œkÀ[Cœkà[Skm\{œk\Cœk \S~m@\{œk@\Cœk`\S‹m€\{œk€\Cœk \Sâ¢À\{œkÀ\Cœkà\Sï¢]{œk]Cœk ]{œk ]Cœk@]{œk@]Cœk`]{œk€]{œk ]{œkà]{œk^{œk ^{œk ^Cœk@^{œk@^Cœk`^{œk`^Cœk€^{œk€^Cœk ^SkmÀ^{œkÀ^Cœkà^{œkà^Cœk_{œk_Cœk _{œk _Cœk@_{œk`_{œk€_{œk _{œkÀ_{œkà_{œk`{œk `{œk``{œk``Cœk€`Skm `{œk `CœkÀ`S~mà`{œkà`CœkaS‹m a{œk aCœk@a{œk@aCœk`a{œk`aCœk€a{œk a{œkÀa{œkàa{œkb{œk b{œk@b{œk`b{œk€bSkm b{œk bCœkÀb{œkÀbCœkàb{œkàbCœkc{œkcCœk c{œk cCœk@c{œk@cCœk`cSkm€c{œk€cCœk cS~mÀc{œkÀcCœkàcS‹md{œkdCœk dSâ¢@d{œk@dCœk`dSd{œk€dCœk dSü¢Àd{œkÀdCœkàdS £e{œkeCœk eS£@e{œk@eCœk`eS#£€e{œk€eCœk eS÷ùÀe{œkÀeCœkàeSúf{œkfCœk f{œk fCœk@f{œk@fCœk`f{œk`fCœk€f{œk€fCœk f{œk fCœkÀf{œkÀfCœkàf{œkàfCœkg{œkgCœk g{œk gCœk@g{œk@gCœk`g{œk`gCœk€g{œk€gCœk g{œk gCœkÀg{œkÀgCœkàg{œkàgCœkh{œkhCœk h{œk hCœk@h{œk@hCœk`h{œk`hCœk€h{œk€hCœk h{œk hCœkÀh{œkÀhCœkàh{œkàhCœki{œkiCœk i{œk iCœk@i{œk@iCœk`i{œk`iCœk€i{œk€iCœk i{œk iCœkÀi{œkÀiCœkài{œkàiCœkj{œkjCœk j{œk jCœk@j{œk@jCœk`j{œk`jCœk€j{œk€jCœk j{œk jCœkÀj{œkÀjCœkàj{œkàjCœkk{œkkCœk k{œk kCœk@k{œk@kCœk`k{œk`kCœk€k{œk€kCœk k{œk kCœkÀk{œkÀkCœkàk{œkàkCœkl{œklCœk l{œk lCœk@l{œk@lCœk`l{œk`lCœk€l{œk€lCœk l{œk lCœkÀl{œkÀlCœkàl{œkàlCœkm{œkmCœk m{œk mCœk@m{œk@mCœk`m{œk`mCœk€m{œk€mCœk m{œk mCœkÀm{œkÀmCœkàm{œkàmCœkn{œknCœk n{œk nCœk@n{œk@nCœk`n{œk`nCœk€n{œk€nCœk n{œk nCœkÀn{œkÀnCœkàn{œkànCœko{œkoCœk o{œk oCœk@o{œk@oCœk`o{œk`oCœk€o{œk€oCœk o{œk oCœkÀo{œkÀoCœkào{œkàoCœkpSkm p{œk pCœk@pS~m`p{œk`pCœk€pS‹m p{œk pCœkÀpSâ¢àp{œkàpCœkqSï¢ q{œk qCœk@qSü¢`q{œk`qCœk€qS £ q{œk qCœkÀqS£àq{œkàqCœkrS#£ r{œk rCœk@rS÷ù`r{œk`rCœk€rSú r{œk rCœkÀrS3úàr{œkàrCœksSSú s{œk sCœk@sS~ú`s{œk`sCœk€sS  s{œk sCœkÀs{œkÀsCœkàs{œkàsCœk t{œk tCœk@t{œk@tCœk`t{œk`tCœk€t{œk€tCœk t{œk tCœkÀt{œkÀtCœkàt{œkàtCœku{œkuCœk u{œk uCœk@u{œk@uCœk`u{œk`uCœk€u{œk€uCœk u{œk uCœkÀu{œkÀuCœkàu{œkàuCœkv{œkvCœk v{œk vCœk@v{œk@vCœk`v{œk`vCœk€v{œk€vCœk v{œk vCœkÀv{œkÀvCœkàv{œkàvCœkw{œkwCœk w{œk wCœk@w{œk@wCœk`w{œk`wCœk€w{œk€wCœk w{œk wCœkÀw{œkÀwCœkàw{œkàwCœkx{œkxCœk x{œk xCœk@x{œk@xCœk`x{œk`xCœk€x{œk€xCœk x{œk xCœkÀx{œkÀxCœkàx{œkàxCœky{œkyCœk y{œk yCœk@y{œk@yCœk`y{œk`yCœk€y{œk€yCœk y{œk yCœkÀy{œkÀyCœkày{œkàyCœkz{œkzCœk z{œk zCœk@z{œk@zCœk`z{œk`zCœk€z{œk€zCœk z{œk zCœkÀz{œkÀzCœkàz{œkàzCœk{{œk{Cœk {{œk {Cœk@{{œk@{Cœk`{{œk`{Cœk€{{œk€{Cœk {{œk {CœkÀ{{œkÀ{Cœkà{{œkà{Cœk|{œk|Cœk |{œk |Cœk@|{œk@|Cœk`|{œk`|Cœk€|{œk€|Cœk |{œk |CœkÀ|{œkÀ|Cœkà|{œkà|Cœk}{œk}Cœk }{œk }Cœk@}{œk@}Cœk`}{œk`}Cœk€}{œk€}Cœk }{œk }CœkÀ}{œkÀ}Cœkà}{œkà}Cœk~{œk~Cœk ~{œk ~Cœk@~{œk@~Cœk`~{œk`~Cœk€~{œk€~Cœk ~{œk ~CœkÀ~{œkÀ~Cœkà~{œkà~Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk€{œk€Cœk €{œk €Cœk@€{œk@€Cœk`€{œk`€Cœk€€{œk€€Cœk €{œk €CœkÀ€{œkÀ€Cœkà€{œkà€Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk‚{œk‚Cœk ‚{œk ‚Cœk@‚{œk@‚Cœk`‚{œk`‚Cœk€‚{œk€‚Cœk ‚{œk ‚CœkÀ‚{œkÀ‚Cœkà‚{œkà‚CœkƒSkm ƒ{œk ƒCœk@ƒS~m`ƒ{œk`ƒCœk€ƒS‹m ƒ{œk ƒCœkÀƒSâ¢àƒ{œkàƒCœk„Sï¢ „{œk „Cœk@„Sü¢`„{œk`„Cœk€„S £ „{œk „CœkÀ„S£à„{œkà„Cœk…S#£ …{œk …Cœk@…S÷ù`…{œk`…Cœk€…Sú …{œk …CœkÀ…S3úà…{œkà…Cœk†SSú †{œk †Cœk@†S~ú`†{œk`†Cœk€†S  †{œk †CœkÀ†S2 à†{œkà†Cœk‡SM ‡{œk ‡Cœk@‡Sc `‡{œk`‡Cœk€‡S  ‡{œk ‡CœkÀ‡SŽ à‡{œkà‡CœkˆS­ ˆ{œk ˆCœk@ˆSÌ `ˆ{œk`ˆCœk€ˆSÙ  ˆ{œk ˆCœkÀˆSÅY àˆ{œkàˆCœk‰SáY ‰{œk ‰Cœk@‰SZ `‰{œk`‰Cœk€‰SZ  ‰{œk ‰CœkÀ‰S‚£ à‰{œkà‰CœkŠSœ£ Š{œk ŠCœk@ŠS»£ `Š{œk`ŠCœk€ŠSû£  Š{œk ŠCœkÀŠSÕ àŠ{œkàŠCœk‹S$Õ ‹{œk ‹Cœk@‹S1Õ `‹{œk`‹Cœk€‹S>Õ  ‹{œk ‹CœkÀ‹SKÕ à‹{œkà‹CœkŒSXÕ Œ{œk ŒCœk@ŒSeÕ `Œ{œk`ŒCœk€ŒSrÕ  Œ{œk ŒCœkÀŒSÕ àŒ{œkàŒCœkSŒÕ {œk Cœk@S™Õ `{œk`Cœk€S¦Õ  {œk CœkÀS³Õ à{œkàCœkŽSÀÕ Ž{œk ŽCœk@ŽSÍÕ `Ž{œk`ŽCœk€ŽSÚÕ  Ž{œk ŽCœkÀŽSçÕ àŽ{œkàŽCœkSô {œk Cœk@S`{œk`Cœk€S {œk CœkÀSà{œkàCœkS( {œk Cœk@S5`{œk`Cœk€SB {œk CœkÀSOà{œkàCœk‘S\ ‘{œk ‘Cœk@‘{œk@‘Cœk`‘{œk`‘Cœk’{œk’Cœk ’{œk ’Cœk@’{œk@’Cœk`’{œk`’Cœk€’{œk€’Cœk ’{œk ’CœkÀ’{œkÀ’Cœkà’{œkà’Cœk“{œk“Cœk “{œk “Cœk@“{œk@“Cœk`“{œk`“Cœk€“{œk€“Cœk “{œk “CœkÀ“{œkÀ“Cœkà“{œkà“Cœk”{œk”Cœk ”{œk ”Cœk@”{œk@”Cœk`”{œk`”Cœk€”{œk€”Cœk ”{œk ”CœkÀ”{œkÀ”Cœkà”{œkà”Cœk•{œk•Cœk •{œk •Cœk@•{œk@•Cœk`•{œk`•Cœk€•{œk€•Cœk •{œk •CœkÀ•{œkÀ•Cœkà•{œkà•Cœk–{œk–Cœk –{œk –Cœk@–{œk@–Cœk`–{œk`–Cœk€–{œk€–Cœk –{œk –CœkÀ–{œkÀ–Cœkà–{œkà–Cœk—{œk—Cœk —{œk —Cœk@—{œk@—Cœk`—{œk`—Cœk€—{œk€—Cœk —{œk —CœkÀ—{œkÀ—Cœkà—{œkà—Cœk˜{œk˜Cœk ˜{œk ˜Cœk@˜{œk@˜Cœk`˜{œk`˜Cœk€˜{œk€˜Cœk ˜{œk ˜CœkÀ˜{œkÀ˜Cœkà˜{œkà˜Cœk™{œk™Cœk ™{œk ™Cœk@™{œk@™Cœk`™{œk`™Cœk€™{œk€™Cœk ™{œk ™CœkÀ™{œkÀ™Cœkà™{œkà™Cœkš{œkšCœk š{œk šCœk@š{œk@šCœk`š{œk`šCœk€š{œk€šCœk š{œk šCœkÀš{œkÀšCœkàš{œkàšCœk›{œk›Cœk ›{œk ›Cœk@›{œk@›Cœk`›{œk`›Cœk€›{œk€›Cœk ›{œk ›CœkÀ›{œkÀ›Cœkà›{œkà›Cœkœ{œkœCœk œ{œk œCœk@œ{œk@œCœk`œ{œk`œCœk€œ{œk€œCœk œ{œk œCœkÀœ{œkÀœCœkàœ{œkàœCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkž{œkžCœk ž{œk žCœk@ž{œk@žCœk`ž{œk`žCœk€ž{œk€žCœk ž{œk žCœkÀž{œkÀžCœkàž{œkàžCœkŸ{œkŸCœk Ÿ{œk ŸCœk@Ÿ{œk@ŸCœk`Ÿ{œk`ŸCœk€Ÿ{œk€ŸCœk Ÿ{œk ŸCœkÀŸ{œkÀŸCœkàŸ{œkàŸCœk {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk¡{œk¡Cœk ¡{œk ¡Cœk@¡{œk@¡Cœk`¡{œk`¡Cœk€¡{œk€¡Cœk ¡{œk ¡CœkÀ¡{œkÀ¡Cœkà¡{œkà¡Cœk¢{œk¢Cœk ¢{œk ¢Cœk@¢{œk@¢Cœk`¢{œk`¢Cœk€¢{œk€¢Cœk ¢{œk ¢CœkÀ¢{œkÀ¢Cœkà¢{œkà¢Cœk£{œk£Cœk £{œk £Cœk@£{œk@£Cœk`£{œk`£Cœk€£{œk€£Cœk £{œk £CœkÀ£{œkÀ£Cœkà£{œkà£Cœk¤{œk¤Cœk ¤{œk ¤Cœk@¤{œk@¤Cœk`¤{œk`¤Cœk€¤{œk€¤Cœk ¤{œk ¤CœkÀ¤{œkÀ¤Cœkà¤{œkà¤Cœk¥{œk¥Cœk ¥{œk ¥Cœk@¥{œk@¥Cœk`¥{œk`¥Cœk€¥{œk€¥Cœk ¥{œk ¥CœkÀ¥{œkÀ¥Cœkà¥{œkà¥Cœk¦{œk¦Cœk ¦{œk ¦Cœk@¦{œk@¦Cœk`¦{œk`¦Cœk€¦{œk€¦Cœk ¦{œk ¦CœkÀ¦{œkÀ¦Cœkà¦{œkà¦Cœk§{œk§Cœk §{œk §Cœk@§{œk@§Cœk`§{œk`§Cœk€§{œk€§Cœk §{œk §CœkÀ§{œkÀ§Cœkà§{œkà§Cœk¨{œk¨Cœk ¨{œk ¨Cœk@¨{œk@¨Cœk`¨{œk`¨Cœk€¨{œk€¨Cœk ¨{œk ¨CœkÀ¨{œkÀ¨Cœkà¨{œkà¨Cœk©{œk©Cœk ©{œk ©Cœk@©{œk@©Cœk`©{œk`©Cœk€©{œk€©Cœk ©{œk ©CœkÀ©{œkÀ©Cœkà©{œkà©Cœkª{œkªCœk ª{œk ªCœk@ª{œk@ªCœk`ª{œk`ªCœk€ª{œk€ªCœk ª{œk ªCœkÀª{œkÀªCœkàª{œkàªCœk«{œk«Cœk «{œk «Cœk@«{œk@«Cœk`«{œk`«Cœk€«{œk€«Cœk «{œk «CœkÀ«{œkÀ«Cœkà«{œkà«Cœk¬{œk¬Cœk ¬{œk ¬Cœk@¬{œk@¬Cœk`¬{œk`¬Cœk€¬{œk€¬Cœk ¬{œk ¬CœkÀ¬{œkÀ¬Cœkà¬{œkà¬Cœk­{œk­Cœk ­{œk ­Cœk@­{œk@­Cœk`­{œk`­Cœk€­{œk€­Cœk ­{œk ­CœkÀ­{œkÀ­Cœkà­{œkà­Cœk®{œk®Cœk ®{œk ®Cœk@®{œk@®Cœk`®{œk`®Cœk€®{œk€®Cœk ®{œk ®CœkÀ®{œkÀ®Cœkà®{œkà®Cœk¯{œk¯Cœk ¯{œk ¯Cœk@¯{œk@¯Cœk`¯{œk`¯Cœk€¯{œk€¯Cœk ¯{œk ¯CœkÀ¯{œkÀ¯Cœkà¯{œkà¯Cœk°{œk°Cœk °{œk °Cœk@°{œk@°Cœk`°{œk`°Cœk€°{œk€°Cœk °{œk °CœkÀ°{œkÀ°Cœkà°{œkà°Cœk±{œk±Cœk ±{œk ±Cœk@±{œk@±Cœk`±{œk`±Cœk€±{œk€±Cœk ±{œk ±CœkÀ±{œkÀ±Cœkà±{œkà±Cœk²{œk²Cœk ²{œk ²Cœk@²{œk@²Cœk`²{œk`²Cœk€²{œk€²Cœk ²{œk ²CœkÀ²{œkÀ²Cœkà²{œkà²Cœk³{œk³Cœk ³{œk ³Cœk@³{œk@³Cœk`³{œk`³Cœk€³{œk€³Cœk ³{œk ³CœkÀ³{œkÀ³Cœkà³{œkà³Cœk´{œk´Cœk ´{œk ´Cœk@´{œk@´Cœk`´{œk`´Cœk€´{œk€´Cœk ´{œk ´CœkÀ´{œkÀ´Cœkà´{œkà´Cœkµ{œkµCœk µ{œk µCœk@µ{œk@µCœk`µ{œk`µCœk€µ{œk€µCœk µ{œk µCœkÀµ{œkÀµCœkàµ{œkàµCœk¶{œk¶Cœk ¶{œk ¶Cœk@¶{œk@¶Cœk`¶{œk`¶Cœk€¶{œk€¶Cœk ¶{œk ¶CœkÀ¶{œkÀ¶Cœkà¶{œkà¶Cœk·{œk·Cœk ·{œk ·Cœk@·{œk@·Cœk`·{œk`·Cœk€·{œk€·Cœk ·{œk ·CœkÀ·{œkÀ·Cœkà·{œkà·Cœk¸{œk¸Cœk ¸{œk ¸Cœk@¸{œk@¸Cœk`¸{œk`¸Cœk€¸{œk€¸Cœk ¸{œk ¸CœkÀ¸{œkÀ¸Cœkà¸{œkà¸Cœk¹{œk¹Cœk ¹{œk ¹Cœk@¹{œk@¹Cœk`¹{œk`¹Cœk€¹{œk€¹Cœk ¹{œk ¹CœkÀ¹{œkÀ¹Cœkà¹{œkà¹Cœkº{œkºCœk º{œk ºCœk@º{œk@ºCœk`º{œk`ºCœk€º{œk€ºCœk º{œk ºCœkÀº{œkÀºCœkàº{œkàºCœk»{œk»Cœk »{œk »Cœk@»{œk@»Cœk`»{œk`»Cœk€»{œk€»Cœk »{œk »CœkÀ»{œkÀ»Cœkà»{œkà»Cœk¼{œk¼Cœk ¼{œk ¼Cœk@¼{œk@¼Cœk`¼{œk`¼Cœk€¼{œk€¼Cœk ¼{œk ¼CœkÀ¼{œkÀ¼Cœkà¼{œkà¼Cœk½{œk½Cœk ½{œk ½Cœk@½{œk@½Cœk`½{œk`½Cœk€½{œk€½Cœk ½{œk ½CœkÀ½{œkÀ½Cœkà½{œkà½Cœk¾{œk¾Cœk ¾{œk ¾Cœk@¾{œk@¾Cœk`¾{œk`¾Cœk€¾{œk€¾Cœk ¾{œk ¾CœkÀ¾{œkÀ¾Cœkà¾{œkà¾Cœk¿{œk¿Cœk ¿{œk ¿Cœk@¿{œk@¿Cœk`¿{œk`¿Cœk€¿{œk€¿Cœk ¿{œk ¿CœkÀ¿{œkÀ¿Cœkà¿{œkà¿CœkÀ{œkÀCœk À{œk ÀCœk@À{œk@ÀCœk`À{œk`ÀCœk€À{œk€ÀCœk À{œk ÀCœkÀÀ{œkÀÀCœkàÀ{œkàÀCœkÁ{œkÁCœk Á{œk ÁCœk@Á{œk@ÁCœk`Á{œk`ÁCœk€Á{œk€ÁCœk Á{œk ÁCœkÀÁ{œkÀÁCœkàÁ{œkàÁCœkÂ{œkÂCœk Â{œk ÂCœk@Â{œk@ÂCœk`Â{œk`ÂCœk€Â{œk€ÂCœk Â{œk ÂCœkÀÂ{œkÀÂCœkàÂ{œkàÂCœkÃ{œkÃCœk Ã{œk ÃCœk@Ã{œk@ÃCœk`Ã{œk`ÃCœk€Ã{œk€ÃCœk Ã{œk ÃCœkÀÃ{œkÀÃCœkàÃ{œkàÃCœkÄ{œkÄCœk Ä{œk ÄCœk@Ä{œk@ÄCœk`Ä{œk`ÄCœk€Ä{œk€ÄCœk Ä{œk ÄCœkÀÄ{œkÀÄCœkàÄ{œkàÄCœkÅ{œkÅCœk Å{œk ÅCœk@Å{œk@ÅCœk`Å{œk`ÅCœk€Å{œk€ÅCœk Å{œk ÅCœkÀÅ{œkÀÅCœkàÅ{œkàÅCœkÆ{œkÆCœk Æ{œk ÆCœk@Æ{œk@ÆCœk`Æ{œk`ÆCœk€Æ{œk€ÆCœk Æ{œk ÆCœkÀÆ{œkÀÆCœkàÆ{œkàÆCœkÇ{œkÇCœk Ç{œk ÇCœk@Ç{œk@ÇCœk`Ç{œk`ÇCœk€Ç{œk€ÇCœk Ç{œk ÇCœkÀÇ{œkÀÇCœkàÇ{œkàÇCœkÈ{œkÈCœk È{œk ÈCœk@È{œk@ÈCœk`È{œk`ÈCœk€È{œk€ÈCœk È{œk ÈCœkÀÈ{œkÀÈCœkàÈ{œkàÈCœkÉ{œkÉCœk É{œk ÉCœk@É{œk@ÉCœk`É{œk`ÉCœk€É{œk€ÉCœk É{œk ÉCœkÀÉ{œkÀÉCœkàÉ{œkàÉCœkÊ{œkÊCœk Ê{œk ÊCœk@Ê{œk@ÊCœk`Ê{œk`ÊCœk€Ê{œk€ÊCœk Ê{œk ÊCœkÀÊ{œkÀÊCœkàÊ{œkàÊCœkË{œkËCœk Ë{œk ËCœk@Ë{œk@ËCœk`Ë{œk`ËCœk€Ë{œk€ËCœk Ë{œk ËCœkÀË{œkÀËCœkàË{œkàËCœkÌ{œkÌCœk Ì{œk ÌCœk@Ì{œk@ÌCœk`Ì{œk`ÌCœk€Ì{œk€ÌCœk Ì{œk ÌCœkÀÌ{œkÀÌCœkàÌ{œkàÌCœkÍ{œkÍCœk Í{œk ÍCœk@Í{œk@ÍCœk`Í{œk`ÍCœk€Í{œk€ÍCœk Í{œk ÍCœkÀÍ{œkÀÍCœkàÍ{œkàÍCœkÎ{œkÎCœk Î{œk ÎCœk@Î{œk@ÎCœk`Î{œk`ÎCœk€Î{œk€ÎCœk Î{œk ÎCœkÀÎ{œkÀÎCœkàÎ{œkàÎCœkÏ{œkÏCœk Ï{œk ÏCœk@Ï{œk@ÏCœk`Ï{œk`ÏCœk€Ï{œk€ÏCœk Ï{œk ÏCœkÀÏ{œkÀÏCœkàÏ{œkàÏCœkÐ{œkÐCœk Ð{œk ÐCœk@Ð{œk@ÐCœk`Ð{œk`ÐCœk€Ð{œk€ÐCœk Ð{œk ÐCœkÀÐ{œkÀÐCœkàÐ{œkàÐCœkÑ{œkÑCœk Ñ{œk ÑCœk@Ñ{œk@ÑCœk`Ñ{œk`ÑCœk€Ñ{œk€ÑCœk Ñ{œk ÑCœkÀÑ{œkÀÑCœkàÑ{œkàÑCœkÒ{œkÒCœk Ò{œk ÒCœk@Ò{œk@ÒCœk`Ò{œk`ÒCœk€Ò{œk€ÒCœk Ò{œk ÒCœkÀÒ{œkÀÒCœkàÒ{œkàÒCœkÓ{œkÓCœk Ó{œk ÓCœk@Ó{œk@ÓCœk`Ó{œk`ÓCœk€Ó{œk€ÓCœk Ó{œk ÓCœkÀÓ{œkÀÓCœkàÓ{œkàÓCœkÔ{œkÔCœk Ô{œk ÔCœk@Ô{œk@ÔCœk`Ô{œk`ÔCœk€Ô{œk€ÔCœk Ô{œk ÔCœkÀÔ{œkÀÔCœkàÔ{œkàÔCœkÕ{œkÕCœk Õ{œk ÕCœk@Õ{œk@ÕCœk`Õ{œk`ÕCœk€Õ{œk€ÕCœk Õ{œk ÕCœkÀÕ{œkÀÕCœkàÕ{œkàÕCœkÖ{œkÖCœk Ö{œk ÖCœk@Ö{œk@ÖCœk`Ö{œk`ÖCœk€Ö{œk€ÖCœk Ö{œk ÖCœkÀÖ{œkÀÖCœkàÖ{œkàÖCœk×{œk×Cœk ×{œk ×Cœk@×{œk@×Cœk`×{œk`×Cœk€×{œk€×Cœk ×{œk ×CœkÀ×{œkÀ×Cœkà×SkmØ{œkØCœk ØS~m@Ø{œk@ØCœk`ØS‹m€Ø{œk€ØCœk Ø{œk ØCœkÀØ{œkÀØCœkàØ{œkàØCœkÙ{œkÙCœk Ù{œk ÙCœk@Ù{œk@ÙCœk`Ù{œk`ÙCœk€Ù{œk€ÙCœk Ù{œk ÙCœkÀÙ{œkÀÙCœkàÙ{œkàÙCœkÚ{œkÚCœk Ú{œk ÚCœk@Ú{œk@ÚCœk`Ú{œk`ÚCœk€Ú{œk€ÚCœk Ú{œk ÚCœkÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk ÛCœk@Û{œk@ÛCœk`Û{œk`ÛCœk€Û{œk€ÛCœk Û{œk ÛCœkÀÛ{œkÀÛCœkàÛ{œkàÛCœkÜ{œkÜCœk Ü{œk ÜCœk@Ü{œk@ÜCœk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœkÀÜSkmàÜ{œkàÜCœkÝS~m Ý{œk ÝCœk@Ý{œk@ÝCœk`Ý{œk`ÝCœk€Ý{œk€ÝCœk Ý{œk ÝCœkÀÝ{œkÀÝCœkàÝ{œkàÝCœkÞ{œkÞCœk Þ{œk ÞCœk@Þ{œk@ÞCœk`Þ{œk`ÞCœk€Þ{œk€ÞCœk ÞSkmÀÞ{œkÀÞCœkàÞS~mß{œkßCœk ß{œk ßCœk@ß{œk@ßCœk`ß{œk`ßCœk€ß{œk€ßCœk ß{œk ßCœkÀß{œkÀßCœkàß{œkàßCœkà{œkàCœk à{œk àCœk@à{œk@àCœk`à{œk`àCœk€à{œk€àCœk à{œk àCœkÀà{œkÀàCœkàà{œkààCœká{œkáCœk á{œk áCœk@áSkm`á{œk`áCœk€áS~m á{œk áCœkÀá{œkÀáCœkàá{œkàáCœkâ{œkâCœk â{œk âCœk@â{œk@âCœk`â{œk`âCœk€â{œk€âCœk â{œk âCœkÀâ{œkÀâCœkàâ{œkàâCœkã{œkãCœk ã{œk ãCœk@ã{œk@ãCœk`ã{œk`ãCœk€ã{œk€ãCœk ã{œk ãCœkÀã{œkÀãCœkàãSkmä{œkäCœk äS~m@ä{œk@äCœk`äS‹m€ä{œk€äCœk äSâ¢Àä{œkÀäCœkàäSï¢å{œkåCœk åSü¢@å{œk@åCœk`åS £€å{œk€åCœk åS£Àå{œkÀåCœkàåS#£æ{œkæCœk æS÷ù@æ{œk@æCœk`æSú€æ{œk€æCœk æS3úÀæ{œkÀæCœkàæSSúç{œkçCœk çS~ú@ç{œk@çCœk`çS €ç{œk€çCœk çS2 Àç{œkÀçCœkàçSM è{œkèCœk èSc @è{œk@èCœk`èS €è{œk€èCœk è{œk èCœkÀè{œkÀèCœké{œkéCœk é{œk éCœk@é{œk@éCœk`é{œk`éCœk€é{œk€éCœk é{œk éCœkÀé{œkÀéCœkàé{œkàéCœkê{œkêCœk ê{œk êCœk@ê{œk@êCœk`ê{œk`êCœk€ê{œk€êCœk ê{œk êCœkÀê{œkÀêCœkàê{œkàêCœkë{œkëCœk ë{œk ëCœk@ë{œk@ëCœk`ë{œk`ëCœk€ë{œk€ëCœk ë{œk ëCœkÀë{œkÀëCœkàë{œkàëCœkì{œkìCœk ì{œk ìCœk@ì{œk@ìCœk`ì{œk`ìCœk€ì{œk€ìCœk ì{œk ìCœkÀì{œkÀìCœkàì{œkàìCœkí{œkíCœk í{œk íCœk@í{œk@íCœk`í{œk`íCœk€í{œk€íCœk í{œk íCœkÀí{œkÀíCœkàí{œkàíCœkî{œkîCœk î{œk îCœk@î{œk@îCœk`î{œk`îCœk€î{œk€îCœk î{œk îCœkÀî{œkÀîCœkàî{œkàîCœkï{œkïCœk ï{œk ïCœk@ï{œk@ïCœk`ï{œk`ïCœk€ï{œk€ïCœk ï{œk ïCœkÀï{œkÀïCœkàï{œkàïCœkð{œkðCœk ð{œk ðCœk@ð{œk@ðCœk`ð{œk`ðCœk€ð{œk€ðCœk ð{œk ðCœkÀð{œkÀðCœkàð{œkàðCœkñ{œkñCœk ñ{œk ñCœk@ñ{œk@ñCœk`ñ{œk`ñCœk€ñ{œk€ñCœk ñ{œk ñCœkÀñ{œkÀñCœkàñ{œkàñCœkò{œkòCœk ò{œk òCœk@ò{œk@òCœk`ò{œk`òCœk€ò{œk€òCœk ò{œk òCœkÀò{œkÀòCœkàò{œkàòCœkó{œkóCœk ó{œk óCœk@ó{œk@óCœk`ó{œk`óCœk€ó{œk€óCœk ó{œk óCœkÀó{œkÀóCœkàó{œkàóCœkô{œkôCœk ô{œk ôCœk@ô{œk@ôCœk`ô{œk`ôCœk€ô{œk€ôCœk ô{œk ôCœkÀô{œkÀôCœkàô{œkàôCœkõ{œkõCœk õ{œk õCœk@õ{œk@õCœk`õ{œk`õCœk€õ{œk€õCœk õ{œk õCœkÀõ{œkÀõCœkàõ{œkàõCœkö{œköCœk ö{œk öCœk@ö{œk@öCœk`ö{œk`öCœk€ö{œk€öCœk ö{œk öCœkÀö{œkÀöCœkàö{œkàöCœk÷{œk÷Cœk ÷{œk ÷Cœk@÷{œk@÷Cœk`÷{œk`÷Cœk€÷{œk€÷Cœk ÷{œk ÷CœkÀ÷{œkÀ÷Cœkà÷{œkà÷Cœkø{œkøCœk ø{œk øCœk@ø{œk@øCœk`ø{œk`øCœk€ø{œk€øCœk ø{œk øCœkÀø{œkÀøCœkàø{œkàøCœkù{œkùCœk ù{œk ùCœk@ù{œk@ùCœk`ù{œk`ùCœk€ù{œk€ùCœk ù{œk ùCœkÀù{œkÀùCœkàù{œkàùCœkú{œkúCœk ú{œk úCœk@ú{œk@úCœk`ú{œk`úCœk€úSkm ú{œk úCœkÀú{œkÀúCœkàú{œkàúCœkû{œkûCœk û{œk ûCœk@û{œk@ûCœk`ûSkm€û{œk€ûCœk û{œk ûCœkÀû{œkÀûCœkàû{œkàûCœkü{œküCœk ü{œk üCœk@ü{œk@üCœk`ü{œk`üCœk€ýSkm ý{œk ýCœkÀý{œkÀýCœkàý{œkàýCœkþ{œkþCœk þ{œk þCœk@þ{œk@þCœk`þSkm€þ{œk€þCœk þ{œk þCœkÀþ{œkÀþCœkàþ{œkàþCœkÿ{œkÿCœk ÿ{œk ÿCœk@ÿ{œk@ÿCœk`ÿ{œk`ÿCœk€ÿ{œk€ÿCœk ÿ{œk ÿCœkÀÿ{œkÀÿCœkàÿ{œkàÿCœk{œkCœk {œk Cœk@{œk@CœkÀSkmà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk`{œk€{œk {œkÀ{œkà{œk {œk Cœk@Skm`{œk`Cœk€S~m {œk CœkÀS‹mà{œkàCœkS⢠{œk Cœk@Sï¢`{œk`Cœk€Sü¢ {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œk CœkÀSkmà{œkàCœkS~m {œk Cœk@S‹m`{œk`Cœk€S⢠{œk CœkÀSï¢à{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk` {œk` Cœk€ Skm  {œk  CœkÀ S~mà {œkà Cœk S‹m {œk Cœk@ Sâ¢` {œk` Cœk€ S {œk  CœkÀ Sü¢à {œkà Cœk S £ {œk Cœk@ S£` {œk` Cœk€ S#£  {œk  CœkÀ S÷ùà {œkà CœkSú {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`Skm€{œk€Cœk S~mÀ{œkÀCœkàS‹m{œkCœk Sâ¢@{œk@Cœk`S{œk€Cœk Sü¢À{œkÀCœkàS £{œkCœk {œk Cœk@{œk@Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀSkmà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkSkm {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk`{œk`Cœk€Skm {œk CœkÀS~mà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`Skm€{œk€Cœk S~mÀ{œkÀCœkà{œkàCœk{œkCœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk Skm {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk!Skm !{œk !Cœk@!{œk@!Cœk`!{œk`!Cœk€!{œk€!Cœk !{œk !CœkÀ!{œkÀ!Cœkà!{œkà!Cœk"{œk"Cœk "{œk "Cœk@"{œk@"Cœk`"{œk`"Cœk€"Skm "{œk "CœkÀ"{œkÀ"Cœkà"{œkà"Cœk#{œk#Cœk #{œk #Cœk@#{œk@#Cœk`#{œk`#Cœk€#{œk€#Cœk #{œk #CœkÀ#{œkÀ#Cœkà#{œkà#Cœk $Skm@${œk@$Cœk`${œk`$Cœk€${œk€$Cœk ${œk $CœkÀ${œkÀ$Cœkà${œkà$Cœk%{œk%Cœk %{œk %Cœk@%{œk@%Cœk`%{œk`%Cœk€%{œk€%Cœk %{œk %CœkÀ%{œkÀ%Cœkà%{œkà%Cœk`&Skm€&{œk€&Cœk &{œk &CœkÀ&{œkÀ&Cœkà&{œkà&Cœk'{œk'Cœk@'Skm`'{œk`'Cœk€'{œk€'Cœk '{œk 'CœkÀ'{œkÀ'Cœkà'{œkà'Cœk({œk(Cœk (Skm@({œk@(Cœk`({œk`(Cœk€({œk€(Cœk ({œk (CœkÀ({œkÀ(Cœkà({œkà(Cœk)Skm ){œk )Cœk@){œk@)Cœk`){œk`)Cœk€){œk€)Cœk ){œk )CœkÀ){œkÀ)Cœkà){œkà)Cœk*{œk*Cœk *{œk *Cœk`*Skm€*{œk€*Cœk *{œk *CœkÀ*{œkÀ*Cœkà*{œkà*Cœk+{œk+Cœk +{œk +Cœk@+{œk@+Cœk`+Skm€+{œk€+Cœk +S~mÀ+{œkÀ+Cœkà+{œkà+Cœk,{œk,Cœk@,{œk@,Cœk`,{œk`,Cœk€,{œk€,Cœk ,{œk ,CœkÀ,{œkÀ,Cœkà,{œkà,Cœk-{œk-Cœk -{œk -Cœk@-{œk@-Cœk`-{œk`-Cœk€-{œk€-Cœk -{œk -CœkÀ-{œkÀ-Cœkà-{œkà-Cœk.Skm .{œk .Cœk@.{œk@.Cœk`.{œk`.Cœk€.{œk€.Cœk .{œk .CœkÀ.{œkÀ.Cœkà.{œkà.Cœk /{œk /Cœk@/Skm`/{œk`/Cœk€/S~m /{œk /CœkÀ/S‹mà/{œkà/Cœk0S⢠0{œk 0Cœk@0Sï¢`0{œk`0Cœk€0Sü¢ 0{œk 0CœkÀ0S £à0{œkà0Cœk1S£ 1{œk 1Cœk@1S#£`1{œk`1Cœk€1S÷ù 1{œk 1CœkÀ1Súà1{œkà1Cœk2{œk2Cœk 2{œk 2Cœk`2{œk`2Cœk€2{œk€2Cœk 2{œk 2CœkÀ2{œkÀ2Cœkà2{œkà2Cœk3{œk3Cœk 3{œk 3Cœk@3{œk@3Cœk`3{œk`3Cœk€3{œk€3Cœk 3{œk 3CœkÀ3{œkÀ3Cœkà3{œkà3Cœk4{œk4Cœk 4{œk 4Cœk@4{œk@4Cœk`4{œk`4Cœk€4{œk€4Cœk 4{œk 4CœkÀ4{œkÀ4Cœkà4{œkà4Cœk5{œk5Cœk 5{œk 5Cœk@5{œk@5Cœk`5{œk`5Cœk€5{œk€5Cœk 5{œk 5CœkÀ5{œkÀ5Cœkà5{œkà5Cœk6{œk6Cœk 6{œk 6Cœk@6{œk@6Cœk`6{œk`6Cœk€6{œk€6Cœk 6{œk 6CœkÀ6{œkÀ6Cœkà6{œkà6Cœk7{œk7Cœk 7{œk 7Cœk@7{œk@7Cœk`7{œk`7Cœk€7{œk€7Cœk 7{œk 7CœkÀ7{œkÀ7Cœkà7{œkà7Cœk8{œk8Cœk 8{œk 8Cœk@8{œk@8Cœk`8{œk`8Cœk€8{œk€8Cœk 8{œk 8CœkÀ8{œkÀ8Cœkà8{œkà8Cœk9{œk9Cœk 9{œk 9Cœk@9{œk@9Cœk`9{œk`9Cœk€9{œk€9Cœk 9{œk 9CœkÀ9{œkÀ9Cœkà9{œkà9Cœk:{œk:Cœk :{œk :Cœk@:{œk@:Cœk`:{œk`:Cœk€:{œk€:Cœk :{œk :CœkÀ:{œkÀ:Cœkà:{œkà:Cœk;{œk;Cœk ;{œk ;Cœk@;{œk@;Cœk`;{œk`;Cœk€;{œk€;Cœk ;{œk ;CœkÀ;{œkÀ;Cœkà;{œkà;Cœk<{œk<Cœk <{œk <Cœk@<{œk@<Cœk`<{œk`<Cœk€<{œk€<Cœk <{œk <CœkÀ<{œkÀ<Cœkà<{œkà<Cœk={œk=Cœk ={œk =Cœk@={œk@=Cœk`={œk`=Cœk€={œk€=Cœk ={œk =CœkÀ={œkÀ=Cœkà={œkà=Cœk>{œk>Cœk >{œk >Cœk@>{œk@>Cœk`>{œk`>Cœk€>{œk€>Cœk >{œk >CœkÀ>{œkÀ>Cœkà>{œkà>Cœk?{œk?Cœk ?{œk ?Cœk@?{œk@?Cœk`?{œk`?Cœk€?{œk€?Cœk ?{œk ?CœkÀ?Skmà?{œkà?Cœk@S~m @{œk @Cœk@@S‹m`@{œk`@Cœk€@S⢠@{œk @CœkÀ@Sï¢à@{œkà@CœkASü¢ A{œk ACœk@AS £`A{œk`ACœk€AS£ A{œk ACœkÀAS#£àA{œkàACœkBS÷ù B{œk BCœk@B{œk@BCœk`B{œk`BCœk B{œk BCœkÀB{œkÀBCœkàB{œkàBCœkC{œkCCœk C{œk CCœk@C{œk@CCœk`C{œk`CCœk€C{œk€CCœk C{œk CCœkÀC{œkÀCCœkàC{œkàCCœkD{œkDCœk D{œk DCœk@D{œk@DCœk`D{œk`DCœk€D{œk€DCœk D{œk DCœkÀD{œkÀDCœkàD{œkàDCœkE{œkECœk E{œk ECœk@E{œk@ECœk`E{œk`ECœk€E{œk€ECœk E{œk ECœkÀE{œkÀECœkàE{œkàECœkF{œkFCœk F{œk FCœk@F{œk@FCœk`F{œk`FCœk€F{œk€FCœk F{œk FCœkÀF{œkÀFCœkàF{œkàFCœkG{œkGCœk G{œk GCœk@G{œk@GCœk`G{œk`GCœk€G{œk€GCœk G{œk GCœkÀG{œkÀGCœkàG{œkàGCœkH{œkHCœk H{œk HCœk@H{œk@HCœk`H{œk`HCœk€H{œk€HCœk H{œk HCœkÀH{œkÀHCœkàH{œkàHCœkI{œkICœk I{œk ICœk@I{œk@ICœk`I{œk`ICœk€I{œk€ICœk I{œk ICœkÀI{œkÀICœkàI{œkàICœkJ{œkJCœk J{œk JCœk@J{œk@JCœk`J{œk`JCœk€J{œk€JCœk J{œk JCœkÀJ{œkÀJCœkàJ{œkàJCœkK{œkKCœk KSkm@K{œk@KCœk`K{œk`KCœk€K{œk€KCœk K{œk KCœkÀK{œkÀKCœkàK{œkàKCœkL{œkLCœk LSkm@L{œk@LCœk`LS~m€L{œk€LCœk LS‹mÀL{œkÀLCœkàLSâ¢M{œkMCœk MSï¢@M{œk@MCœk`MSü¢€M{œk€MCœk MS £ÀM{œkÀMCœkàMS£N{œkNCœk N{œk NCœk@N{œk@NCœk€N{œk€NCœk N{œk NCœkÀN{œkÀNCœkàN{œkàNCœkO{œkOCœk O{œk OCœk@O{œk@OCœk`O{œk`OCœk€O{œk€OCœk O{œk OCœkÀO{œkÀOCœkàO{œkàOCœkP{œkPCœk P{œk PCœk@P{œk@PCœk`P{œk`PCœk€P{œk€PCœk P{œk PCœkÀP{œkÀPCœkàP{œkàPCœkQ{œkQCœk Q{œk QCœk@Q{œk@QCœk`Q{œk`QCœk€Q{œk€QCœk Q{œk QCœkÀQ{œkÀQCœkàQ{œkàQCœkR{œkRCœk R{œk RCœk@R{œk@RCœk`R{œk`RCœk€R{œk€RCœk R{œk RCœkÀR{œkÀRCœkàR{œkàRCœkS{œkSCœk S{œk SCœk@S{œk@SCœk`S{œk`SCœk€S{œk€SCœk S{œk SCœkÀS{œkÀSCœkàS{œkàSCœkT{œkTCœk T{œk TCœk@T{œk@TCœk`T{œk`TCœk€T{œk€TCœk T{œk TCœkÀTSkmàT{œkàTCœkU{œkUCœk U{œk UCœk@U{œk@UCœk`U{œk`UCœk€U{œk€UCœk U{œk UCœkÀU{œkÀUCœkàU{œkàUCœkV{œkVCœk@VSkm`V{œk`VCœk€V{œk€VCœk V{œk VCœkÀV{œkÀVCœkàV{œkàVCœkW{œkWCœk W{œk WCœk@W{œk@WCœk`W{œk`WCœk€W{œk€WCœk WSkmÀW{œkÀWCœkàW{œkàWCœkX{œkXCœk X{œk XCœk@X{œk@XCœk`X{œk`XCœk€X{œk€XCœk XSkmÀX{œkÀXCœkàXS~mY{œkYCœk YS‹m@Y{œk@YCœk`Y{œk`YCœk€Y{œk€YCœk Y{œk YCœkÀY{œkÀYCœkàY{œkàYCœkZ{œkZCœk Z{œk ZCœk@Z{œk@ZCœk`Z{œk`ZCœk€Z{œk€ZCœk Z{œk ZCœkÀZ{œkÀZCœkàZ{œkàZCœk[{œk[Cœk [{œk [Cœk@[{œk@[Cœk`[{œk`[Cœk€[{œk€[Cœk [{œk [CœkÀ[{œkÀ[Cœkà[{œkà[Cœk\{œk\Cœk \{œk \Cœk@\{œk@\Cœk`\{œk`\Cœk€\{œk€\Cœk \{œk \CœkÀ\Skmà\{œkà\Cœk]S~m ]{œk ]Cœk@]S‹m`]{œk`]Cœk€]{œk€]Cœk ]{œk ]CœkÀ]{œkÀ]Cœkà]{œkà]Cœk^{œk^Cœk ^{œk ^Cœk@^{œk@^Cœk`^{œk`^Cœk€^{œk€^Cœk ^{œk ^CœkÀ^{œkÀ^Cœkà^{œkà^Cœk_{œk_Cœk _{œk _Cœk@_{œk@_Cœk`_{œk`_Cœk€_{œk€_Cœk _{œk _CœkÀ_{œkÀ_Cœkà_{œkà_Cœk`{œk`Cœk `{œk `Cœk@`{œk@`Cœk``{œk``Cœk€`{œk€`Cœk `{œk `CœkÀ`{œkÀ`Cœkà`Skma{œkaCœk aS~m@a{œk@aCœk`a{œk`aCœk€a{œk€aCœk a{œk aCœkÀa{œkÀaCœkàa{œkàaCœkb{œkbCœk b{œk bCœk@b{œk@bCœk`b{œk`bCœk€b{œk€bCœk b{œk bCœkÀb{œkÀbCœkàb{œkàbCœkc{œkcCœk cSkm@c{œk@cCœk`c{œk`cCœk€c{œk€cCœk c{œk cCœkÀc{œkÀcCœkàcSkmd{œkdCœk d{œk dCœk@d{œk@dCœk`d{œk`dCœk€d{œk€dCœk`eSkm€e{œk€eCœk e{œk eCœkÀe{œkÀeCœkàe{œkàeCœkf{œkfCœk f{œk@f{œk`f{œk€f{œk f{œkÀfSkmàf{œkàfCœkg{œkgCœk g{œk gCœk@g{œk@gCœkÀgSkmàg{œkàgCœkh{œkhCœk h{œk hCœk@h{œk@hCœk`h{œk`hCœk€h{œk€hCœk h{œk hCœkÀh{œkÀhCœkàh{œkàhCœki{œkiCœk iSkm@i{œk@iCœk`i{œk`iCœk€i{œk€iCœk i{œk iCœkÀi{œkÀiCœkài{œkàiCœkj{œkjCœk j{œk jCœk@j{œk@jCœk`jSkm€j{œk€jCœk jS~mÀj{œkÀjCœkàj{œkàjCœkk{œkkCœk@k{œk@kCœk`k{œk`kCœk€k{œk€kCœk k{œk kCœkÀk{œkÀkCœkàk{œkàkCœkl{œklCœk l{œk lCœk`oSkm€o{œk€oCœk o{œk oCœkÀo{œkÀoCœkào{œkàoCœkp{œkpCœkÀp{œkÀpCœkàpSkmq{œkqCœk qS~m@q{œk@qCœk`q{œk`qCœk€q{œk€qCœk q{œkÀq{œkàq{œkr{œk r{œk@r{œk`r{œk€r{œk r{œk rCœkÀrSkmàr{œkàrCœksS~m s{œk sCœk@s{œk@sCœk`s{œk`sCœk€s{œk s{œkÀs{œkt{œk t{œk@t{œk@tCœk`t{œk`tCœk€t{œk€tCœk t{œk tCœkÀt{œkÀtCœkàt{œkàtCœku{œkuCœk u{œk uCœk@u{œk@uCœk`u{œk`uCœk€u{œk€uCœk u{œk uCœkÀu{œkÀuCœkàuSkmv{œkvCœk vS~m@v{œk@vCœk`vS‹m€v{œk€vCœk vSâ¢Àv{œkÀvCœkàvSï¢w{œkwCœk wSü¢@w{œk@wCœk`wS £€w{œk€wCœk wS£Àw{œkÀwCœkàwS#£x{œkxCœk xS÷ù@x{œk@xCœk`xSú€x{œk€xCœk xS3úÀx{œkÀxCœkàx{œkàxCœky{œkyCœk@y{œk@yCœk`y{œk`yCœk€y{œk€yCœk y{œk yCœkÀy{œkÀyCœkày{œkàyCœkz{œkzCœk z{œk zCœk@z{œk@zCœk`z{œk`zCœk€z{œk€zCœk z{œk zCœkÀz{œkÀzCœkàz{œkàzCœk{{œk{Cœk {{œk {Cœk@{{œk@{Cœk`{{œk`{Cœk€{{œk€{Cœk {{œk {CœkÀ{{œkÀ{Cœkà{{œkà{Cœk|{œk|Cœk |{œk |Cœk@|{œk@|Cœk`|{œk`|Cœk€|{œk€|Cœk |{œk |CœkÀ|{œkÀ|Cœkà|{œkà|Cœk}{œk}Cœk }{œk }Cœk@}{œk@}Cœk`}{œk`}Cœk€}{œk€}Cœk }{œk }CœkÀ}{œkÀ}Cœkà}{œkà}Cœk~{œk~Cœk ~{œk ~Cœk@~{œk@~Cœk`~{œk`~Cœk€~{œk€~Cœk ~{œk ~CœkÀ~{œkÀ~Cœkà~{œkà~Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk€{œk€Cœk €{œk €Cœk@€{œk@€Cœk`€{œk`€Cœk€€{œk€€Cœk €{œk €CœkÀ€{œkÀ€Cœkà€{œkà€Cœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk‚{œk‚Cœk ‚{œk ‚Cœk@‚{œk@‚Cœk`‚{œk`‚Cœk€‚{œk€‚Cœk ‚{œk ‚CœkÀ‚{œkÀ‚Cœkà‚{œkà‚Cœkƒ{œkƒCœk ƒ{œk ƒCœk@†{œk@†Cœk`†{œk`†CœkÀ†{œkÀ†Cœkàˆ“Îk`‰“Îk Œ{œk ŒCœk@“Øà“Îk€Ž“Îk Ž“ØÀŽ“ÎkàŽ“Îk“Îk “Îk@“Îk`“Îk€“Îk “ÎkÀ“Îk“Îk€“Îk‘“Îk ‘“Îk@‘{œk@‘Cœk`‘“Îk’“Îk@’“Îkà’“Îk ““Îk@““Îk`–Skm€–{œk€–Cœk –{œk –CœkÀ–{œkÀ–Cœkà–{œkà–Cœk—{œk—Cœk —{œk —Cœk@—{œk`—{œk€—{œk —{œkÀ—{œkà—{œk˜{œk ˜{œk`˜“Îk€˜“Îk ˜“} ™{œk ™Cœk@™{œk@™Cœk@›{œk@›Cœk`›Skm€›{œk€›Cœk ›{œk ›CœkÀ›{œkà›{œkœ{œk œ{œk@œ{œk`œ{œk€œ{œk œ{œkàœ{œkàœCœkSkm {œk Cœk@{œk@Cœk`{œk€{œk {œkÀ{œkà{œkž{œk ž{œk@ž{œkÀ¡{œkÀ¡Cœkà¡{œkà¡Cœk@¢“Îk ¢{œk ¢Cœk£“Îk £“Îk@£“Ø`£“!×€£“Q‹ £“ØÀ£“Îkׂ࣓¤“Îk ¤“Îk`¤“ׂ€¤“ׂ ¤“Ø ¥“¤l@¥“Îk`¥“Îk€¥“Œ) ¥“€3À¥{œk॓!× ¦{œk@¦{œk`¦{œk€¦{œk ¦{œkÀ¦“h¡à¦{œk §“ׂ@§“Ø`§“Ø€§“Îkà§{œkà§Cœk¨Skm ¨{œk ¨Cœk@¨S~m`¨{œk`¨Cœk€¨S‹m ¨{œk ¨CœkÀ¨Sâ¢à¨{œkà¨Cœk©{œk©Cœk ©{œk ©Cœk@©{œk`©{œk€©{œk ©{œkÀ©{œkà©{œkª{œk ª{œk ®{œk ®CœkÀ®Skmà®{œkà®Cœk¯{œk¯Cœk ¯{œk@¯{œk`¯{œk€¯{œk ¯{œkÀ¯{œkà¯{œk°{œk ´{œk ´Cœk@´{œk@´Cœk µ{œk µCœk@µ{œk@µCœkàµ{œkàµCœk¶{œk¶Cœk ¹{œk ¹Cœk@¹{œk@¹Cœk º{œk ºCœk@º{œk@ºCœk@½“Îk`½{œk`½Cœk€½“ׂ`¾“Ø€¾“Ø ¾“ÎkÀ¾“Îkྒྷ[¿“ ¿“Îk ¿“PäÀ¿“ׂà¿“¨IÀ“« À“«`À“Îk€À“ÎkÁ{œk Á{œk@Á{œk`Á“¤l€Á“ׂ Á“ׂÀÁ“Îk Ì{œk ÌCœkÀÌSkmàÌ{œkàÌCœkÍ{œkÍCœk Í{œk@Í{œk`Í{œk€Í{œk Í{œkÀÍ{œkàÍ{œkÎ{œk@Î{œk@ÎCœk`Î{œk`ÎCœk€Î{œk€ÎCœk Î{œk ÎCœk`Ò{œk Ò{œk ÒCœkÀÒ{œkÀÒCœk@Ó“Îk`Ó{œk`ÓCœkàÓ“ÎkÀÔ“ÎkàÔ{œkÕ“Ø Õ{œk ÕCœk@Õ{œk@ÕCœk Ö{œk`ØSkm€Ø{œk€ØCœk Ø{œk ØCœkÀØ{œkÀØCœkàØ{œkàØCœkÙ{œkÙCœk Ù{œk@Ù{œk`Ù{œk€Ù{œk Ù{œkÀÙ{œkàÙ{œkÚ{œk ÚSkmÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk ÛCœk@Û{œk@ÛCœk`Û{œk€Û{œk Û{œkÀÛ{œkàÛ{œkÜ{œk`Ü{œk€Ü{œk@Ý{œk`Ý{œk€Ý{œk Ý{œkÀÝ{œk@Þ{œk@ÞCœk`Þ{œk`ÞCœkß{œkßCœk@ß{œk@ßCœk`ß{œk`ßCœk ß{œk ßCœkÀß{œkÀßCœk á{œk áCœkàá“[â{œkâCœk â“}@â“}`â“[€â“} â“ÎkÀâ“€3àⓌ)ã“} ã“[@ã“}`ã“[€ã“Îk ã“}Àã“>äàã“Îkä“Îk ä“Îk@ä“}`ä“Îk€ä“>ä ä“[Àä“>äàä“[å“} å“Îk@å“}`å“}€å“Œ) å“}Àå“Îkàå“Îkæ“} æ“[@æ“>ä`æ“[€æ“Îk æ“€3Àæ“>äàæ“>äç“>ä ç“Îk@ç“>ä`ç“>ä€ç“>ä ç“ÎkÀç“[àç“[è“[ è“[@è“[`è“[€è“[ è“[Àè“Îkàè“Îké“ÎkÀé“Îkàé{œkê{œk ê{œkàê“ë¶ë“Îk ë“ׂ@ë“Ø`ë“Îk€ë“Ø ë“ÎkÀë“Øàë“Îkì“Ø ì“Îk@ì“Îk`ì“Îk€ì“Îk ì“ÎkÀì“Øàì“Îkí“Îk@í“Îk`í“Îk€í“[àí“ׂî“ׂ î“Ø@î“Ø`î“Ø€î“Øï“Ø ï“Îk@ï“Ø`ï“ׂ€ï“ׂ ï“ÎkÀï“ׂàï“Øð“ׂ ð“Îk@ð“Ø`ð“Ø€ð“Ø ð“ׂÀð“Îkàð“Îkñ“Ø ñ“¤l`ñ“Q‹€ñ“Îk ñ“ÎkÀñ“Îkò“¤l ò“¤lÀò“¤làò“ׂó“¤l ó“!×@ó“Ø`ó“ׂ€ó“ׂ ó“ØÀó“ׂàó“¤l@ô“¤l`ô“!×€ô“¤l ô“¤lÀô“¤làô“¤lõ“ׂ õ“¤lÀõ“Øàõ“!×ö“!× ö“ׂ@ö“ׂ`ö“¤l ö“ØÀö{œkÀöCœk@÷“ `÷“ÁM€÷“ׂ ÷“ØÀ÷“Øà÷“ׂø“ ø“¤l€ø“Îk ø“ØÀø“Îkàø“Îk ú{œk úCœkÀú{œkÀúCœk`ü{œk€ü{œk ü{œkÀü{œkàü{œkÀ“Ø@“Îk`“Îk€“Ø “¤l“Ø “Ø@{œk`{œk€{œk {œkÀ{œkÀCœk{œk@{œk`{œk “¤lÀ“Øà{œkàCœk“Ø€“ØÀ“Îkà“Îk “Îk {œk@ {œk` “Ø€ “Ø!“ׂ !“Îk@!“Îk`!“Îk€!“Îk !“ØÀ!“Øà!“Îk"“Îk "“Îk@"“Îk "“ÎkÀ"“Îkà"“Îk#“[ #“ë¶`#“Îk€#“Îk #“1QÀ#“Øà#“Ø$“Ø $“ׂ@$“|`${œk€$“ò³ $“ׂÀ$“Ø%“Îk %“Îk@%“ÎkÀ%{œkà%“ׂ&“Ø &“Îk@&“Îk`&“Ø€&“Îk &“ØÀ&“Îkà&“Ø'“ׂ '“Ø@'“ׂ`'“ׂ '“ÎkÀ'“Îkà'“Îk(“; (“ò³@(“Eµ`(“;€({œk (“Eµà(“Eµ@)“Ø`)“Ø€)“ׂ )“ÎkÀ)“Îkà)“«*“« *“«@*“«`*“«€*“« *“ׂÀ*“Øà*“Ø+“Ø +“Ø`+“òZ€+“òZ +“òZÀ+“ׂà+“Ø,“Ø ,“Ø@,{œk ,“ׂÀ,“Øà,“Ø-“Ø -“¢9@-“ׂ`-“¢9€-“¢9 -“ׂÀ-“ׂ.“Îk .{œk@.“Ø`.“ׂ€.“¤l .“ØÀ.“Øà.“ׂ/{œk /“Ø@/“Ø`/“Ø€/“ׂ /“ØÀ/“Øà/“Îk0“Îk 0“Ø@0“Ø`0“Ø€0“Ø 0“ØÀ0“Øà0“Îk1“Îk 1“Îk`1“Îk€1“Îk 1“ÎkÀ1“Îkà1{œk 2“V&@2“Îkà2{œk 3“ü`3“Îk€3“Îk 3“ÎkÀ3“Îkà3{œk@4{œk`4“@/€4{œk 4{œkÀ4“ׂ€6{œk 6{œkÀ6{œkà6{œk7{œk 7{œk@7{œk`7{œk 8{œk@8{œk`8{œk€8{œk 8{œkÀ8{œkà8{œk9{œk 9{œkÀ9{œkà9{œk:{œk :{œk@:{œk`:{œk€:{œk€;{œk ;{œkÀ;{œkà;{œk<{œk <{œk`<{œk€<{œk€>{œk >{œkÀ>{œkà>{œk?{œk ?{œk@?{œk`?{œk C{œk CCœkÀC{œkÀCCœkàE{œkàECœkF{œkFCœk K{œk KCœkÀK{œkÀKCœkàK{œkàKCœkLSkm L{œk LCœk@LS~m`L{œk`LCœk€LS‹m L{œk LCœkÀL{œkÀLCœkàL{œkàLCœkM{œk M{œk@M{œk`M{œk€M{œk M{œkàN{œkO{œk O{œk OCœk@O{œk@OCœk`O{œk`OCœk€O{œk€OCœk O{œk OCœkÀO{œkÀOCœkàO{œkàOCœkP{œkPCœk P{œk PCœk@P{œk@PCœk`P{œk`PCœk€P{œk€PCœk P{œkÀP{œkàP{œkQ{œk Q{œk@Q{œkÀQ{œkàQ{œkàT{œkU{œk U{œk@U{œk`U{œk€U{œk U{œkÀU{œk€W“Ø ZSkm@Z{œk@ZCœk`Z{œk`ZCœk€Z{œk€ZCœk Z{œk ZCœkÀZ{œkÀZCœkàZ{œkàZCœk[{œk[Cœk [{œk@[{œk`[{œk€[{œk [{œkÀ[{œkà[{œk\{œk \Skm@\{œk@\Cœk`\{œk`\Cœk€\{œk€\Cœk \{œk \CœkÀ\{œkÀ\Cœkà\{œk]{œk ]{œk@]{œk`]{œk€]{œk ]{œkÀ]{œkà]Skm^{œk^Cœk ^{œk ^Cœk@^{œk@^Cœk`^{œk`^Cœk€^{œk€^Cœk ^{œkÀ^{œkà^{œk_{œk _{œk@_{œk`_{œk€_{œk j{œk@j{œk`j{œk€j{œk j{œk`m{œk`mCœk€mSkm m{œk mCœkÀmS~màm{œkàmCœknS‹m n{œk nCœk@nSâ¢`n{œk`nCœk€n{œk€nCœk n{œk nCœkÀn{œkàn{œko{œk o{œk@o{œk`o{œk€o{œk o{œkÀo{œkÀoCœkào{œkàoCœkp{œkpCœk p{œk pCœk@p{œk@pCœk`p{œk`pCœk€p{œk€pCœk p{œk pCœkr{œk r{œk@r{œk r“Îk€s“Îk s“Îkàs{œkt{œk`{œk€{œk {œkÀ{œkà{œk€{œk €{œk@€{œk`„{œk€„{œk „{œkÀ„{œkà„{œk…{œk …{œk@…{œkÀ…“Îkà…{œk†{œk@†“Q‹€†“Îk †“×SÀ†“u’à†“«‡“« ‡“Ø@‡“Îk`‡“Îk€‡“Îk ‡“ׂÀ‡“m±@ˆ“u’`ˆ“Îk€ˆ“Ø ˆ“ÎkÀˆ“Îkàˆ“[‰“¤l ‹{œk ‹CœkÀ‹Skmà‹{œkà‹CœkŒS~m Œ{œk ŒCœk@Œ{œk@ŒCœk`Œ{œk`ŒCœk€Œ{œk Œ{œkÀŒ{œkàŒ{œk{œk {œk@{œk`{œk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkŽ{œkŽCœk Ž{œk ŽCœk““Îk ““Îk`“{œk`“Cœk€“{œk€“CœkÀ““Îkà““Îk€”“Îk ”“ÎkÀ”“Îk`•“ׂ€•“Îk •“ÎkÀ•“Îkà•“Îk–“Îk –“Îk@–“Îk`–“Îk€–“Îk –“ÎkÀ–“Îkà–“!×—“Ø —“Ø@—“Îk`—“Îk€—“Îk —“ÎkÀ—“Îkà—“Îk ™{œkÀ“Îkà“Îkž“Îk ž“Îk@ž“Îk`ž“Îk€ž“Îk ž“ÎkÀž“ׂàž“ׂŸ{œk€Ÿ{œk Ÿ{œkÀŸ{œkàŸ{œk {œk  {œk@ {œk` “Îkà “Îk¡“Îk ¡“Îk@¡“Îk`¡“Îk€¡“Îk ¡“ÎkÀ¡“Îkà¡“Îk¢“Îk ¢“Îk@¢“Îk`¢“Îk€¢“Îk ¢“ÎkÀ¢“Îk࢓Îk£“Îk £“Îk@£“Îk`£“Îk€£“Îk £“ÎkÀ£“Îk࣓Îk¤“Îk ¤“Îk@¤“Îk`¤“Îk€¤“Îk ¤“ÎkÀ¤“ÎkओÎk¥“Îk ¥“Îk@¥“Îk`¥“Îk€¥“Îk ¥“Îkà¥{œk@¦“Ø`¦“Îk€¦“m€ ¦“ÎkÀ¦“ÎkওÎk§“Îk §“Îk€§“Ø §{œkÀ§“¤l ¨“[@¨“[`¨“Ø€¨“Îk ¨“ØÀ¨“ÎkਓÎk©“Ø ©“òZ@©“Îk`©“Ø€©“Îk ©“ÎkÀ©“Îkà©“Îkª“¤l ª“Îk@ª“Ø`ª“Ø€ª“Ø ª“ÎkÀª“ÎkઓÎk«“ׂ «“«@«“xã `«“ׂ€«“ÎkÀ«“ׂà«“¤l¬“!× ¬“ׂ@¬“Îk`¬“Ø€¬“Ø ¬“ÎkÀ¬“ÎkଓÎk@­“Ø`­“Îk€­“Ø ­“ÎkÀ­“Îkà­“Îk®“Îk ®“Îk@®“Ø`®{œk€®“xã À®“«à®“د“[ ¯“[@¯“[`¯“Ø€¯“Ø ¯“ØÀ¯“Øà¯“Îk°“[ °“Îk@°“Îk`°“[€°“Îk °{œkÀ°{œkà°“Îk±“Ø ±“¤lÀ±{œk²“sž ²“Îk@²“Îk`²“Ø€²“Îk ²“ÎkÀ²“Îkà²{œk³“Îk ´{œk`´“Øà´“Îk µ“Îk@µ“Ø€¶{œk ¶{œkÀ¶{œkà¶{œk·{œk ·{œk@¸{œk`¸{œk¹“Îk»{œk »{œk@»{œk`¼{œk€¼{œk ¼{œk ¼CœkÀ¼Skmà¼{œkà¼Cœk½S~m ½{œk ½Cœk@½S‹m`½{œk`½Cœk€½{œk€½Cœk ½{œk ½CœkÀ½{œkà½{œk¾{œk ¾{œk@¾{œk`¾{œk`¾Cœk€¾{œk€¾Cœk ¾{œk ¾CœkÀ¾{œkÀ¾Cœkà¾{œkà¾Cœk¿{œk¿Cœk ¿{œk ¿Cœk@¿{œk@¿Cœk`¿{œk`¿Cœk€¿{œk€¿Cœk ¿{œk ¿CœkÀ¿{œkÀ¿Cœkà¿{œkà¿CœkÀ{œkÀCœk`À{œk€À{œk À{œkÀÀ{œkàÀ{œkÁ{œk@Á{œk`Á{œkÃ{œkÃCœk ÃSkm@Ã{œk@ÃCœk`ÃS~m€Ã{œk€ÃCœk ÃS‹mÀÃ{œkÀÃCœkàÃSâ¢Ä{œkÄCœk ÄSï¢@Ä{œk@ÄCœk`ÄSü¢€Ä{œk€ÄCœk ÄS £ÀÄ{œkÀÄCœkàÄS£Å{œkÅCœk ÅS#£@Å{œk@ÅCœk`ÅS÷ù€Å{œk€ÅCœk ÅSúÀÅ{œkÀÅCœkàÅS3úÆ{œkÆCœk ÆSSú@Æ{œk@ÆCœk`ÆS~ú€Æ{œk€ÆCœk ÆS ÀÆ{œkÀÆCœkàÆS2 Ç{œkÇCœk ÇSM @Ç{œk@ÇCœk`ÇSc €Ç{œk€ÇCœk ÇS ÀÇ{œkÀÇCœkàÇSŽ È{œkÈCœk È{œk ÈCœk@È{œk@ÈCœk`È{œk`ÈCœk€È{œk€ÈCœk È{œk ÈCœkÀÈ{œkÀÈCœkàÈ{œkàÈCœkÉ{œkÉCœk É{œk ÉCœk@É{œk@ÉCœk`É{œk`ÉCœk€É{œk€ÉCœk É{œk ÉCœkÀÉ{œkÀÉCœkàÉ{œkàÉCœkÊ{œkÊCœk Ê{œk ÊCœk@Ê{œk@ÊCœk`Ê{œk`ÊCœk€Ê{œk€ÊCœk Ê{œk ÊCœkÀÊ{œkÀÊCœkàÊ{œkàÊCœkË{œkËCœk Ë{œk ËCœk@Ë{œk@ËCœk`Ë{œk`ËCœk€Ë{œk€ËCœk Ë{œk ËCœkÀË{œkÀËCœkàË{œkàËCœkÌ{œkÌCœk Ì{œk ÌCœk@Ì{œk@ÌCœk`Ì{œk`ÌCœk€Ì{œk€ÌCœk Ì{œk ÌCœkÀÌ{œkÀÌCœkàÌ{œkàÌCœkÍ{œkÍCœk Í{œk ÍCœk@Í{œk@ÍCœk`Í{œk`ÍCœk€Í{œk€ÍCœk Í{œk ÍCœkÀÍ{œkÀÍCœkàÍ{œkàÍCœkÎ{œkÎCœk Î{œk ÎCœk@Î{œk@ÎCœk`Î{œk`ÎCœk€Î{œk€ÎCœk Î{œk ÎCœkÀÎ{œkÀÎCœkàÎ{œkàÎCœkÏ{œkÏCœk Ï{œk ÏCœk@Ï{œk@ÏCœk`Ï{œk`ÏCœk€Ï{œk€ÏCœk Ï{œk ÏCœkÀÏ{œkÀÏCœkàÏ{œkàÏCœkÐ{œkÐCœk Ð{œk ÐCœk@Ð{œk@ÐCœk`Ð{œk`ÐCœk€Ð{œk€ÐCœk Ð{œk ÐCœkÀÐ{œkÀÐCœkàÐ{œkàÐCœkÑ{œkÑCœk Ñ{œk ÑCœk@Ñ{œk@ÑCœk`Ñ{œk`ÑCœk€Ñ{œk€ÑCœk Ñ{œk ÑCœkÀÑ{œkÀÑCœk@ü{œk`ü{œk€ü{œk ü{œkÀü{œkàü{œký{œk ý{œk`ý{œk`ýCœk€ýSkm ý{œk ýCœkÀýS~màý{œkàýCœkþS‹m þ{œk þCœk@þSâ¢`þ{œk`þCœk€þSþ{œk þCœkÀþSü¢àþ{œkàþCœkÿS £ ÿ{œk ÿCœk@ÿS£`ÿ{œk`ÿCœk€ÿS#£ ÿ{œk ÿCœkÀÿS÷ùàÿ{œkàÿCœkSú {œk Cœk@S3ú`{œk`Cœk€SSú {œk CœkÀS~úà{œkàCœkS {œk Cœk@S2 `{œk`Cœk€SM  {œk CœkÀSc à{œkàCœkS {œk Cœk@SŽ `{œk`Cœk€S­  {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€Skm {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk Skm@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œkSkm {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œk {œk {œk@ {œk` {œk€ {œk  {œkÀ {œkà Skm {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œkÀ {œkà {œk {œk {œk@ {œk` {œk€ {œk  SkmÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk€ {œk  {œkÀ {œkà {œk {œk {œk@ {œk` Skm€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk{œkCœk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk Skm@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œk{œk {œk@{œk`{œk€{œk {œkÀ{œkàSkm{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œkÀ{œkà{œk{œk {œk@{œk`{œk€{œk SkmÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk€{œk {œkÀ{œkà{œk{œk {œk@{œk`Skm€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk Skm@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œkSkm {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkà{œk{œk {œk@{œk`{œk€{œk {œkÀSkmà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œkÀ{œkà{œk{œk {œk@{œk`{œk€{œk`Skm€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œkÀ{œkà{œk{œk {œk@{œk`{œk€{œk SkmÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk!{œk !{œk@!{œk`!{œk€!{œk !{œkÀ!{œkà!{œk`4{œk`4Cœk€4{œk€4Cœk 8{œk 8Cœk@8{œk@8Cœkà9{œkà9Cœk:{œk:CœkàB{œkàBCœkC{œkCCœkàC{œkàCCœkD{œkDCœk N{œk NCœk@N{œk@NCœk P{œk PCœk@P{œk@PCœk[{œk[Cœk [{œk [Cœk\{œk\Cœk \{œk \Cœk@^{œk@^Cœk`^{œk`^CœkÀf{œkÀfCœkàf{œkàfCœk@i{œk@iCœk`i{œk`iCœk i{œk iCœkÀi{œkÀiCœkài{œkàiCœkj{œkjCœk j{œk jCœk@j{œk@jCœk`j{œk`jCœkl{œklCœk l{œk lCœk€o“Îk o“Îk q{œk qCœkÀq{œkÀqCœk r{œk rCœkÀr{œkÀrCœk@s“Îk`s“Ø€s“Îk€u“Îk u“Îkv“ÎkÀv“Îkw“Îk x“Îk@x“Îk`x“Îk x“Îkàx“Îk y“Îk@y“Ø`y“Îk€y“Îk y“Îkàz{œk{{œk {{œk@{{œk`{{œk |{œk@|{œk`|{œk |{œkÀ|{œk@}{œk`}{œk€}{œk }{œkÀ}{œk ~{œkÀ~{œkà~{œk {œk@{œk €{œk@€{œk`€{œk €{œkÀ€{œk {œkÀ{œkà{œk‚{œk ‚{œk ƒ{œk@ƒ{œk`ƒ{œk€ƒ{œk ƒ{œk`„{œk€„{œk „{œkÀ„{œkà„{œkÀ…{œkà…{œk†{œk †{œk@†{œk ‡{œk@‡{œk`‡{œk€‡{œk ‡{œk`ˆ{œk€ˆ{œk ˆ{œkÀˆ{œkàˆ{œk ‰{œkÀ‰{œkà‰{œkŠ{œk Š{œk‹{œk ‹{œk@‹{œk`‹{œk€‹{œk`Œ{œk€Œ{œk Œ{œkÀŒ{œkàŒ{œk„Ë œk¤Ë œkà{œkŽ{œk Ž{œk@Ž{œk`Ž{œk@{œk@Cœk`Skm€{œk€Cœk S~mÀ{œkÀCœkàS‹m{œkCœk Sâ¢@{œk@Cœk`S{œk€Cœk Sü¢À{œkÀCœkàS £‘{œk‘Cœk ‘S£@‘{œk@‘Cœk`‘S#£€‘{œk€‘Cœk ‘S÷ùÀ‘{œkÀ‘Cœkà‘Sú’{œk’Cœk ’{œk ’Cœk@’{œk@’Cœk`’{œk€’{œk ’{œkÀ’{œkà’{œk“{œk “{œk@“{œkÀ“{œkà“{œk”{œkÀ”{œkà”{œkš{œkšCœk šSkm@š{œk@šCœk`šS~m€š{œk€šCœk š{œk šCœkÀš{œkÀšCœkàš{œkàšCœk›{œk›Cœk ›{œk ›Cœk@›{œk@›Cœk`›{œk`›Cœk€›{œk€›Cœk ›{œk ›CœkÀ›{œkÀ›Cœkà›{œkà›Cœkœ{œkœCœk œ{œk œCœk@œ{œk@œCœk “Îk  “Îk@ “Îk` “Îk€ “Ø  “ØÀ “Îk ¡{œk ¡Cœk€¡{œk ¢“Îk@¢“Ø`¢“ØÀ¢“Îk࢓Îk£“Îk £“Îk@£“Îk`£“Îk€£“Îk £“ÎkÀ£“Îk࣓Îk¤“Îk ¤“Îk@¤“ÎkಓÎk@³{œk@³Cœk`³{œk`³Cœk´“òZ ´“òZ@´“ÎkÀ´“[à´“[µ“} µ“}@µ“}`µ“Œ)€µ“Œ) µ“€3Àµ“õ& ൓%¶“òZ ¶“%@¶“Ë%`¶“&€¶“òZ ¶“Øà¶“Ø·“Ø ·“ÎkÀ·“Îkà·“Îk ¸{œkÀ¸{œkà¸{œk¹{œk ¹{œk@¹{œk`¹{œk€¹{œk ¼{œkÀ¼{œkà¼{œk½{œk ½{œk@½{œk`½{œk€½{œk ¾{œk`¾{œk€¾{œk€¾Cœk ¾SkmÀ¾{œkÀ¾Cœkà¾S~m¿{œk¿Cœk ¿S‹m@¿{œk@¿Cœk`¿{œk`¿Cœk€¿{œk€¿CœkÀ¿{œkÀ¿Cœkà¿{œkà¿CœkÀ{œkÀCœk À{œk ÀCœk@À{œk@ÀCœk`À{œk`ÀCœk€À{œk€ÀCœk À{œk ÀCœkÀÀ{œkÀÀCœkàÀ{œkàÀCœkÁ{œkÁCœk Á{œk ÁCœk€Ã“Îk Ã“ÎkÀÓÎkàÓØÄ“Îk Ä“Îk€Ä“ØàÄ“ØÅ“Ø Å“Ø@Å“ׂ`œ؀œؠœØÀÅ“ØàÅ“ØÆ“Ø Æ“Ø@Æ“Ø`Æ“ÎkÈ“Ø È“Ø`ȓ؀ȓÎk È“ÎkÀÈ“ÎkàÈ“ÎkÉ“Îk É“Îk@É“Ø`É“Îk€É“Îk É“ÎkÀÉ“Îk€Ë“Îk Ë“Îk Ì“ÎkÀÌ“Îk Õ{œk ÕCœkÀÕ{œkÀÕCœkàÕ{œkàÕCœkÖ{œkÖCœk Ö{œk ÖCœk@Ö{œk@ÖCœk`Ö{œk`ÖCœk€Ö{œk€ÖCœk Ö{œk ÖCœkÀÖ{œkÀÖCœkàÖ{œkàÖCœk×{œk×Cœk ×{œk ×Cœk@×{œk@×Cœk`×{œk`×Cœk€×{œk€×Cœk ×{œk ×CœkÀ×{œkÀ×Cœkà×{œkà×CœkØ{œkØCœk Ø{œk ØCœk@Ø{œk@ØCœk`Ø{œk`ØCœk€Ø{œk€ØCœk Ø{œk ØCœkÀØ{œkÀØCœkàØ{œkàØCœkÙ{œkÙCœk Ù{œk ÙCœk@Ù{œk@ÙCœk`Ù{œk`ÙCœk€Ù{œk€ÙCœk Ù{œk ÙCœkÀÙ{œkÀÙCœkàÙ{œkàÙCœkÚ{œkÚCœk Ú{œk ÚCœk@Ú{œk@ÚCœk`Ú{œk`ÚCœk€Ú{œk€ÚCœk Ú{œk ÚCœkÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk ÛCœk@Û{œk@ÛCœk`Û{œk`ÛCœk€Û{œk€ÛCœk Û{œk ÛCœkÀÛ{œkÀÛCœkàÛ{œkàÛCœkÜ{œkÜCœk Ü{œk ÜCœk@Ü{œk@ÜCœk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœkÀÜ{œkÀÜCœkàÜ{œkàÜCœkÝ{œkÝCœk Ý{œk ÝCœk@Ý{œk@ÝCœk`Ý{œk`ÝCœk€Ý{œk€ÝCœk Ý{œk ÝCœkÀÝ{œkÀÝCœkàÝ{œkàÝCœkÞ{œkÞCœk Þ{œk ÞCœk@Þ{œk@ÞCœk`Þ{œk`ÞCœk€Þ{œk€ÞCœk Þ{œk ÞCœkÀÞ{œkÀÞCœkàÞ{œkàÞCœkß{œkßCœk ß{œk ßCœk@ß{œk@ßCœk`ß{œk`ßCœk€ß{œk€ßCœk ß{œk ßCœkÀß{œkÀßCœkàß{œkàßCœkà{œkàCœk à{œk àCœk@à{œk@àCœk`à{œk`àCœk€à{œk€àCœk à{œk àCœkÀà{œkÀàCœkàà{œkààCœká{œkáCœk á{œk áCœk@á{œk@áCœk`á{œk`áCœk€á{œk€áCœk á{œk áCœkÀá{œkÀáCœkàá{œkàáCœkâ{œkâCœk â{œk âCœk@â{œk@âCœk`â{œk`âCœk€â{œk€âCœk â{œk âCœkÀâ{œkÀâCœkàâ{œkàâCœkã{œkãCœk ã{œk ãCœk@ã{œk@ãCœk`ã{œk`ãCœk€ã{œk€ãCœk ã{œk ãCœkÀã{œkÀãCœkàã{œkàãCœkä{œkäCœk ä{œk äCœk@ä{œk@äCœk`ä{œk`äCœk€ä{œk€äCœk ä{œk äCœkÀä{œkÀäCœkàä{œkàäCœkå{œkåCœk å{œk åCœk@å{œk@åCœk`å{œk`åCœk€å{œk€åCœk å{œk åCœkÀå{œkÀåCœkàå{œkàåCœkæ{œkæCœk æ{œk æCœk@æ{œk@æCœk`æ{œk`æCœk€æ{œk€æCœk æ{œk æCœkÀæ{œkÀæCœkàæ{œkàæCœkç{œkçCœk ç{œk çCœk@ç{œk@çCœk`ç{œk`çCœk€ç{œk€çCœk ç{œk çCœkÀç{œkÀçCœkàç{œkàçCœkè{œkèCœk è{œk èCœk@è{œk@èCœk`è{œk`èCœk€è{œk€èCœk è{œk èCœkÀè{œkÀèCœkàè{œkàèCœké{œkéCœk é{œk éCœk@é{œk@éCœk`é{œk`éCœk€é{œk€éCœk é{œk éCœkÀé{œkÀéCœkàé{œkàéCœkê{œkêCœk ê{œk êCœk@ê{œk@êCœk`ê{œk`êCœk€ê{œk€êCœk ê{œk êCœkÀê{œkÀêCœkàê{œkàêCœkë{œkëCœk ë{œk ëCœk@ë{œk@ëCœk`ë{œk`ëCœk€ë{œk€ëCœk ë{œk ëCœkÀë{œkÀëCœkàë{œkàëCœkì{œkìCœk ì{œk ìCœk@ì{œk@ìCœk`ì{œk`ìCœk€ì{œk€ìCœk ì{œk ìCœkÀì{œkÀìCœkàì{œkàìCœkí{œkíCœk í{œk íCœk@í{œk@íCœk`í{œk`íCœk€í{œk€íCœk í{œk íCœkÀí{œkÀíCœkàí{œkàíCœkî{œkîCœk î{œk îCœk@î{œk@îCœk`î{œk`îCœk€î{œk€îCœk î{œk îCœkÀî{œkÀîCœkàî{œkàîCœkï{œkïCœk ï{œk ïCœk@ï{œk@ïCœk`ï{œk`ïCœk€ï{œk€ïCœk ï{œk ïCœkÀï{œkÀïCœkàï{œkàïCœkð{œkðCœk ð{œk ðCœk@ð{œk@ðCœk`ð{œk`ðCœk€ð{œk€ðCœk ð{œk ðCœkÀð{œkÀðCœkàð{œkàðCœkñ{œkñCœk ñ{œk ñCœk@ñ{œk@ñCœk`ñ{œk`ñCœk€ñ{œk€ñCœk ñ{œk ñCœkÀñ{œkÀñCœkàñ{œkàñCœkò{œkòCœk ò{œk òCœk@ò{œk@òCœk`ò{œk`òCœk€ò{œk€òCœk ò{œk òCœkÀò{œkÀòCœkàò{œkàòCœkó{œkóCœk ó{œk óCœk@ó{œk@óCœk`ó{œk`óCœk€ó{œk€óCœk ó{œk óCœkÀó{œkÀóCœkàó{œkàóCœkô{œkôCœk ô{œk ôCœk@ô{œk@ôCœk`ô{œk`ôCœk€ô{œk€ôCœk ô{œk ôCœkÀô{œkÀôCœkàô{œkàôCœk õ{œk õ{œk õCœkÀõ{œkÀõCœkàõ{œkàõCœkö{œköCœk ö{œk öCœk@ö{œk@öCœk`ö{œk`öCœk€ö{œk€öCœk ö{œk öCœkÀö{œkÀöCœkàö{œkàöCœk÷{œk÷Cœk ÷{œk ÷Cœk@÷{œk@÷Cœk`÷{œk`÷Cœk€÷{œk€÷Cœk ÷{œk ÷CœkÀ÷{œkÀ÷Cœkà÷{œkà÷Cœkø{œkøCœk ø{œk øCœk@ø{œk@øCœk`ø{œk`øCœk€ø{œk€øCœk ø{œk øCœkÀø{œkÀøCœkàø{œkàøCœkù{œkùCœk ù{œk ùCœk@ù{œk@ùCœk`ù{œk`ùCœk€ù{œk€ùCœk ù{œk ùCœkÀù{œkÀùCœkàù{œkàùCœkú{œkúCœk ú{œk úCœk@ú{œk@úCœk`ú{œk`úCœk€ú{œk€úCœk ú{œk úCœkÀú{œkÀúCœkàú{œkàúCœkû{œkûCœk û{œk ûCœk@û{œk@ûCœk`û{œk`ûCœk€û{œk€ûCœk û{œk ûCœkÀû{œkÀûCœkàû{œkàûCœkü{œküCœk ü{œk üCœk@ü{œk@üCœk`ü{œk`üCœk€ü{œk€üCœk ü{œk üCœkÀü{œkÀüCœkàü{œkàüCœký{œkýCœk ý{œk ýCœk@ý{œk@ýCœk`ý{œk`ýCœk€ý{œk€ýCœk ý{œk ýCœkÀý{œkÀýCœkàý{œkàýCœkþ{œkþCœk þ{œk þCœk@þ{œk@þCœk`þ{œk`þCœk€þ{œk€þCœk þ{œk þCœkÀþ{œkÀþCœkàþ{œkàþCœkÿ{œkÿCœk ÿ{œk ÿCœk@ÿ{œk@ÿCœk`ÿ{œk`ÿCœk€ÿ{œk€ÿCœk ÿ{œk ÿCœkÀÿ{œkÀÿCœkàÿ{œkàÿCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk€{œk {œkÀ{œkà{œk{œk€{œk {œkÀ{œkà{œk{œk {œk@{œk`{œkÀ{œkà{œk{œk {œk@{œk`{œk€{œk {œk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk@ {œk` {œk€ {œk  {œkÀ {œkà {œk {œk {œk€ {œk  {œkÀ {œkà {œk {œk {œk@ {œk` {œkÀ {œkà {œk {œk {œk@ {œk` {œk€ {œk  {œk {œk {œk@ {œk` {œk€ {œk  {œkÀ {œkà {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk {œk€{œk {œkÀ{œkà{œk{œk {œk@{œk`{œkÀ{œkà{œk{œk {œk@{œk`{œk€{œk {œk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk {œk€{œk {œkÀ{œkà{œk{œk {œk@{œk`{œkÀ{œkà{œkÀ!“Îkà&“Îk'“Îk '“Îk '{œkÀ'{œk@({œk@(Cœk`({œk`(Cœk@){œk@)Cœk@*“Ø`*“Îk€*“Îkà*{œkà*Cœk+Skm +{œk +Cœk@+S~m`+{œk`+Cœk€+{œk€+Cœk +{œk +CœkÀ+{œkà+{œk,{œk ,{œk@,{œk`,{œk€,{œk ,{œkÀ,{œkÀ,Cœkà,{œkà,Cœk-{œk-Cœk -{œk -Cœk@-{œk@-Cœk`-{œk`-Cœk€-Skm -{œk -CœkÀ-{œkÀ-Cœkà-{œkà-Cœk.{œk.CœkÀ.{œkÀ.Cœkà.Skm/{œk/Cœk /S~m@/{œk@/Cœk`/S‹m€/{œk€/Cœk /Sâ¢À/{œkÀ/Cœkà/Sï¢0{œk0Cœk 0Sü¢@0{œk@0Cœk`0S £€0{œk€0Cœk 0S£À0{œkÀ0Cœkà0S#£1{œk1Cœk 1S÷ù@1{œk@1Cœk`1Sú€1{œk€1Cœk 1S3úÀ1{œkÀ1Cœkà1SSú2{œk2Cœk 2S~ú@2{œk@2Cœk`2S €2{œk€2Cœk 2S2 À2{œkÀ2Cœkà2SM 3{œk3Cœk 3Sc @3{œk@3Cœk`3S €3{œk€3Cœk 3SŽ À3{œkÀ3Cœkà3S­ 4{œk4Cœk 4SÌ @4{œk@4Cœk`4SÙ €4{œk€4Cœk 4SÅY À4{œkÀ4Cœkà4SáY 5{œk5Cœk 5SZ @5{œk@5Cœk`5SZ €5{œk€5Cœk 5S‚£ À5{œkÀ5Cœkà5Sœ£ 6{œk6Cœk 6S»£ @6{œk@6Cœk`6Sû£ €6{œk€6Cœk 6SÕ À6{œkÀ6Cœkà6S$Õ 7{œk7Cœk 7S1Õ @7{œk@7Cœk`7S>Õ €7{œk€7Cœk 7SKÕ À7{œkÀ7Cœkà7SXÕ 8{œk8Cœk 8SeÕ @8{œk@8Cœk`8SrÕ €8{œk€8Cœk 8SÕ À8{œkÀ8Cœkà8SŒÕ 9{œk9Cœk 9S™Õ @9{œk@9Cœk`9S¦Õ €9{œk€9Cœk 9S³Õ À9{œkÀ9Cœkà9SÀÕ :{œk:Cœk :SÍÕ @:{œk@:Cœk`:SÚÕ €:{œk€:Cœk :SçÕ À:{œkÀ:Cœkà:Sô;{œk;Cœk ;S@;{œk@;Cœk`;S€;{œk€;Cœk ;SÀ;{œkÀ;Cœkà;S(<{œk<Cœk <S5@<{œk@<Cœk`<SB€<{œk€<Cœk <SOÀ<{œkÀ<Cœkà<S\={œk=Cœk =Si@={œk@=Cœk`=Sv€={œk€=Cœk =SƒÀ={œkÀ=Cœkà=S>{œk>Cœk >S@>{œk@>Cœk`>Sª€>{œk€>Cœk >S·À>{œkÀ>Cœkà>SÄ?{œk?Cœk ?{œk ?Cœk@?{œk@?Cœk`?{œk`?Cœk€?{œk€?Cœk ?{œk ?CœkÀ?{œkÀ?Cœkà?{œkà?Cœk@{œk@Cœk @{œk @Cœk@@{œk@@Cœk`@{œk`@Cœk€@{œk€@Cœk @{œk @CœkÀ@{œkÀ@Cœkà@{œkà@CœkA{œkACœk A{œk ACœk@A{œk@ACœk`A{œk`ACœk€A{œk€ACœk A{œk ACœkÀA{œkÀACœkàA{œkàACœkB{œkBCœk B{œk BCœk@B{œk@BCœk`B{œk`BCœk€B{œk€BCœk B{œk BCœkÀB{œkÀBCœkàB{œkàBCœkC{œkCCœk C{œk CCœk@C{œk@CCœk`C{œk`CCœk€C{œk€CCœk C{œk CCœkÀC{œkÀCCœkàC{œkàCCœkD{œkDCœk D{œk DCœk@D{œk@DCœk`D{œk`DCœk€D{œk€DCœk D{œk DCœkÀD{œkÀDCœkàD{œkàDCœkE{œkECœk E{œk ECœk@E{œk@ECœk`E{œk`ECœk€E{œk€ECœk E{œk ECœkÀE{œkÀECœkàE{œkàECœkF{œkFCœk F{œk FCœk@F{œk@FCœk`F{œk`FCœk€F{œk€FCœk F{œk FCœkÀF{œkÀFCœkàF{œkàFCœkG{œkGCœk G{œk GCœk@G{œk@GCœk`G{œk`GCœk€G{œk€GCœk G{œk GCœkÀG{œkÀGCœkàG{œkàGCœkH{œkHCœk H{œk HCœk@H{œk@HCœk`H{œk`HCœk€H{œk€HCœk H{œk HCœkÀH{œkÀHCœkI{œkICœk ISkm@I{œk@ICœk`IS~m€I{œk€ICœk IS‹mÀI{œkÀICœkàISâ¢J{œkJCœk JSï¢@J{œk@JCœk`JSü¢€J{œk€JCœk JS £ÀJ{œkÀJCœkàJS£K{œkKCœk KS#£@K{œk@KCœk`KS÷ù€K{œk€KCœk KSúÀK{œkÀKCœkàKS3úL{œkLCœk LSSú@L{œk@LCœk`LS~ú€L{œk€LCœk LS ÀL{œkÀLCœkàLS2 M{œkMCœk MSM @M{œk@MCœk`MSc €M{œk€MCœk MS ÀM{œkÀMCœkàMSŽ N{œkNCœk NS­ @N{œk@NCœk`NSÌ €N{œk€NCœk NSÙ ÀN{œkÀNCœkàNSÅY O{œkOCœk OSáY @O{œk@OCœk`OSZ €O{œk€OCœk OSZ ÀO{œkÀOCœkàOS‚£ P{œkPCœk PSœ£ @P{œk@PCœk`PS»£ €P{œk€PCœk PSû£ ÀP{œkÀPCœkàPSÕ Q{œkQCœk QS$Õ @Q{œk@QCœk`QS1Õ €Q{œk€QCœk QS>Õ ÀQ{œkÀQCœkàQSKÕ R{œkRCœk RSXÕ @R{œk@RCœk`RSeÕ €R{œk€RCœk RSrÕ ÀR{œkÀRCœkàRSÕ S{œkSCœk SSŒÕ @S{œk@SCœk`SS™Õ €S{œk€SCœk SS¦Õ ÀS{œkÀSCœkàSS³Õ T{œkTCœk TSÀÕ @T{œk@TCœk`TSÍÕ €T{œk€TCœk TSÚÕ ÀT{œkÀTCœkàTSçÕ U{œkUCœk USô@U{œk@UCœk`US€U{œk€UCœk USÀU{œkÀUCœkàUSV{œkVCœk VS(@V{œk@VCœk`VS5€V{œk€VCœk VSBÀV{œkÀVCœkàVSOW{œkWCœk WS\@W{œk@WCœk`WSi€W{œk€WCœk WSvÀW{œkÀWCœkàWSƒX{œkXCœk XS@X{œk@XCœk`XS€X{œk€XCœk XSªÀX{œkÀXCœkàXS·Y{œkYCœk YSÄ@Y{œk@YCœk`YSÑ€Y{œk€YCœk YSÞÀY{œkÀYCœkàY{œkàYCœkZ{œkZCœk Z{œk@Z{œk`Z{œk€Z{œk Z{œkÀZ{œkàZ{œk[{œk@[{œk@[Cœk`[Skm€[{œk€[Cœk [S~mÀ[{œkÀ[Cœkà[S‹m\{œk\Cœk \Sâ¢@\{œk@\Cœk`\S\{œk€\Cœk \Sü¢À\{œkÀ\Cœkà\S £]{œk]Cœk ]S£@]{œk@]Cœk`]S#£€]{œk€]Cœk ]S÷ùÀ]{œkÀ]Cœkà]Sú^{œk^Cœk ^S3ú@^{œk@^Cœk`^SSú€^{œk€^Cœk ^S~úÀ^{œkÀ^Cœkà^S _{œk_Cœk _S2 @_{œk@_Cœk`_SM €_{œk€_Cœk _Sc À_{œkÀ_Cœkà_S `{œk`Cœk `SŽ @`{œk@`Cœk``S­ €`{œk€`Cœk `SÌ À`{œkÀ`Cœkà`SÙ a{œkaCœk aSÅY @a{œk@aCœk`aSáY €a{œk€aCœk aSZ Àa{œkÀaCœkàaSZ b{œkbCœk bS‚£ @b{œk@bCœk`bSœ£ €b{œk€bCœk bS»£ Àb{œkÀbCœkàbSû£ c{œkcCœk cSÕ @c{œk@cCœk`c{œk`cCœk€c{œk€cCœk c{œkÀc{œkàc{œkd{œk d{œk@d{œk`d{œk€d{œkÀ“Îk‚{œk‚Cœk ‚{œk ‚Cœkà‚“Îkƒ“Îk ƒ“Îk@ƒ“Îk`ƒ“Îk€ƒ“Îk ƒ“Îk „“ׂ@„“Îk`„{œk€„{œk „“Îkà„“Îk…“Îk …“Îk`…“Îk€…“Îk …“ׂÀ…“Q‹à…“Ø †“Îk`†“Îk€†“ׂÀ†“¤l`‡“ÎkÀ‡{œkÀˆÃœkŠ“Îk Š“Îk`Š{œk`ŠCœk€ŠSkm Š{œk ŠCœkÀŠS~màŠ{œkàŠCœk‹{œk‹Cœk ‹{œk ‹Cœk@‹{œk`‹{œk€‹{œk ‹{œkÀ‹{œkà‹{œkŒ{œk Œ{œkÀŸ{œkàŸ{œk {œk  {œk@ {œk` {œk€ {œk  {œk€¤{œk ¤{œkÀ¤{œkà¤{œk¥{œk`¥{œk€¥{œk ¥{œkÀ¥{œkà¥{œkÀ¦{œkà¦{œk§{œk §{œk@§{œk`§{œk€§{œk §{œk¨{œk ¨{œk@¨{œk`¨{œk€¨{œkà¨{œk©{œk ©{œk@©{œk`©{œkÀ©{œkà©{œkª{œk ª{œk@ª{œk ª{œkÀª{œkàª{œk«{œk «{œk€«{œk «{œkÀ«{œkà«{œk¬{œk­{œk ­{œk@­{œk`­{œk€­{œk`²{œk`²Cœk³“Îk ³“Îk@³“Îk`³“Ø€³“ØÀ³“Q‹à³“Îk´“ÂQ ´“ÂQ@´“Îk`´“Îk€´“Îk ´“ÎkÀ´“ÂQà´“ÂQµ“ÂQ µ“ÂQ@µ“Îk`µ“Îk€µ“Îk µ“ÎkÀµ“ÂQ൓Îk¶“ÂQ ¶“Îk@¶“Ø`¶“Ø€¶{œk ¶“ØÀ¶“Îkà¶“Îk@·“ÂQ`·“Ø€·“Ø ·“ÎkÀ·“Îkà·“Îk¸“Îk ¸“Îk@¸“¯þ`¸“Îk€¸“Îk ¸“«À¸“Øà¸“«¹“Ø ¹“ÂQ@¹“Îk`¹“Îk€¹“Ø ¹“ØÀ¹“Øà¹“غ“† º“†@º“Ø`º“¨I º“¨IÀº“«àº“«»“Îk »“Îk@»“Ø`»“Ø€»“Ø`Ù{œk€Ù“ؠٓØ@Ú“ÎkÀÛ“ÎkàÛ“ØàÝ{œkàÝCœkÞSkm Þ{œk ÞCœk@ÞS~m`Þ{œk`ÞCœk€ÞS‹m Þ{œk ÞCœkÀÞSâ¢àÞ{œkàÞCœkß{œkßCœk ß{œk ßCœk@ß{œk`ß{œk€ß{œk ß{œkÀß{œkàß{œkà{œk à{œk@àSkm`à{œk`àCœk€à{œk€àCœk à{œk àCœkÀà{œkÀàCœkàà{œkààCœká{œkáCœk á{œk áCœk@áSkm`á{œk`áCœk€á{œk€áCœk á{œk áCœkÀá{œkÀáCœkàá{œkàáCœkã“Îk ã{œk ãCœk@ãSkm`ã{œk`ãCœk€ãS~m ã{œk ãCœkÀãS‹màã{œkàãCœkä{œkäCœk ä{œk äCœk@ä{œk@äCœk`ä{œk`äCœk€ä{œk€äCœk ä{œk äCœkÀä{œkÀäCœkàä{œkàäCœkå{œkåCœk å{œk åCœk@å{œk@åCœk`å{œk`åCœk€å{œk€åCœk å{œk åCœkÀå{œkÀåCœkàå{œkàåCœkæ{œkæCœk æ{œk æCœk@æ{œk@æCœk`æSkm€æ{œk€æCœk æS~mÀæ{œkÀæCœkàæS‹mç{œkçCœk ç{œk çCœk@ç{œk@çCœk`ç{œk€ç{œk ç{œkÀç{œkàç{œkè{œk è{œk@è{œk`è{œk`èCœk€è{œk€èCœk è{œk èCœkÀè{œkÀèCœkàè{œkàèCœké{œkéCœk é{œk éCœk@é{œk@éCœk`é{œk`éCœk€é{œk€éCœk é{œk éCœkÀé{œkÀéCœkàé{œkàéCœkê{œkêCœk ê{œk êCœk@ê{œk@êCœkàê{œkë{œk ë{œk@ë{œk`ë{œk€ë{œk ë{œkÀë{œkàëSkmì{œkìCœk ì{œk ìCœk@ì{œk@ìCœk`ì{œk`ìCœk€ì{œk€ìCœk ì{œk ìCœkÀìSkmàì{œkàìCœkí{œkíCœk í{œk íCœk@í{œk@íCœk`í{œk`íCœk€í{œk€íCœk î{œk îCœkÀîSkmàî{œkàîCœkïS~m ï{œk ïCœk@ïS‹m`ï{œk`ïCœk€ïS⢠ï{œk ïCœkÀïSï¢àï{œkàïCœkðSü¢ ð{œk ðCœk@ðS £`ð{œk`ðCœk€ðS£ ð{œk ðCœkÀðS#£àð{œkàðCœkñ{œkñCœk ñ{œk ñCœk@ñ{œk@ñCœk`ñ{œk`ñCœk€ñ{œk€ñCœk ñ{œk ñCœkÀñ{œkÀñCœkàñ{œkàñCœkò{œkòCœk ò{œk òCœk@ò{œk@òCœk`ò{œk`òCœk€ò{œk€òCœk ò{œk òCœkÀò{œkÀòCœkàò{œkàòCœkó{œkóCœk ó{œk óCœk@ó{œk@óCœk`ó{œk`óCœk€ó{œk€óCœk ó{œk óCœkÀó{œkÀóCœkàó{œkàóCœkô{œkôCœk ô{œk ôCœk@ô{œk@ôCœk`ô{œk`ôCœk€ô{œk€ôCœk ô{œk ôCœkÀô{œkÀôCœkàô{œkàôCœkõ{œkõCœk õ{œk õCœk@õ{œk@õCœk`õ{œk`õCœk€õ{œk€õCœk õ{œk õCœkÀõ{œkÀõCœkàõ{œkàõCœkö{œköCœk ö{œk öCœk@ö{œk@öCœk`ö{œk`öCœk€ö{œk€öCœk ö{œk öCœkÀö{œkÀöCœkàö{œkàöCœk÷{œk÷Cœk ÷{œk ÷Cœk@÷{œk@÷Cœk`÷{œk`÷Cœk€÷{œk€÷Cœk ÷{œk ÷CœkÀ÷{œkÀ÷Cœkà÷{œkà÷Cœkø{œkøCœk ø{œk øCœk@ø{œk@øCœk`ø{œk`øCœk€ø{œk€øCœk ø{œk øCœkÀø{œkÀøCœkàø{œkàøCœkù{œkùCœk ù{œk ùCœk@ù{œk@ùCœk`ù{œk`ùCœk€ù{œk€ùCœk ù{œk ùCœkÀù{œkÀùCœkàù{œkàùCœkú{œkúCœk ú{œk úCœk@ú{œk@úCœk`ú{œk`úCœkþ{œkþCœk þSkm@þ{œk@þCœk`þS~m€þ{œk€þCœk þ{œk þCœkÀþ{œkÀþCœkàþ{œkàþCœkÿ{œkÿCœk ÿ{œk ÿCœk@ÿ{œk@ÿCœk`ÿ{œk`ÿCœk€ÿ{œk€ÿCœk ÿ{œk ÿCœkÀÿ{œkÀÿCœk{œkCœk`“Îk€“Îk@{œk`{œk {œkÀ{œkà{œk{œk {œk “Ø{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œk {œk`{œk€{œk {œk Cœk@{œk@Cœk “Îk@“Ø`“Îk€“Îk “Îk€ {œk€ Cœk€ “Îk {œk Cœk@ “Îk€ “ÎkÀ “Îkà “Îk“[à“Îk“Îk “Ø@“Ø€“ÎkÀ“Îkà“[ “á@“Îk€“Îk“Îk “Îk “ÎkÀ{œkÀCœkà{œkàCœk{œkCœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk{œkCœk {œk Cœk@“Øà“Îk“Ø “Ø@“Ø`“Îk€“Îk “ÎkÀ“Îkà“Îk“Îk “Îk@“Îk`“Îk€“Îk “ÎkÀ“Îkà“Îk“Îk “Îk@“Îk`“Îk€“Îk “ÎkÀ“Îkà“Îk“Îk “Îk@“Îk`“Îk€“Îk “ÎkÀ“Îkà“Ø “Ø “Ø@ “Îk€"“Îk€#“Îk #“ÎkÀ#“Îkà#“Îk$“Ø`$“«€$“« $“Ø€'“ÎkÀ(“}à(“w7 )“[ )“Îk@)“ño`)“Îk )“Øà)“Ë%*“Ë% *“Ë%`+“é +“é -“¤l`-“[€-“[à-“Îk.“Îk .“Îk@.“Îk`.“Îk€.“Îk .“ÎkÀ.“Îkà.“Îk/“Îk /“Ø@/“Ø`/“Îk€/“Îk /“Îk`0{œk`0Cœk€0{œk€0Cœk 0{œk 0CœkÀ0{œkÀ0Cœkà0{œkà0Cœk1{œk1Cœk 1{œk 1Cœk@1{œk@1Cœk`1{œk`1Cœk€1{œk€1Cœk 1{œk 1CœkÀ1{œkÀ1Cœkà1{œkà1Cœk2{œk2Cœk 2{œk 2Cœk@2{œk@2Cœk`2{œk`2Cœk€2{œk€2Cœk 2{œk 2CœkÀ2{œkÀ2Cœkà2{œkà2Cœk3{œk3Cœk 3{œk 3Cœk@3{œk@3Cœk`3{œk`3Cœk€3{œk€3Cœk 3{œk 3CœkÀ3{œkÀ3Cœkà3{œkà3Cœk4{œk4Cœk 4{œk 4CœkÀ4“ׂà4“Îk5“Ø 5“Œ)@5“}`5“Œ) 5{œk 5CœkÀ5{œkÀ5Cœkà5{œkà5Cœk6{œk6Cœk 6{œk 6Cœk@6{œk@6Cœk`6{œk`6Cœk€6{œk€6Cœk8“Îk 8“Îk@8“Îk 8“[À8“Îkà8“Îk9“Îk 9“Îk@9“Îk`9“Îk€9“Îk 9“[`:“Ø€:“Œ)À:“Îkà:“Îk;“Îk ;“Îk@;“Îk`;“Îk€;“Îk ;“ÎkÀ;“Îkà;“Îk<“Îk <“Îk@<“Îk`<“Îk€<“Îk <“ÎkÀ<“Îkà<“Îk=“Îk =“Îk@=“Îk`=“Îk€=“Îk =“ÎkÀ=“Îkà=“Îk>“Îk >“Îk@>“Îk`>“Îk€>“Îk >“ÎkÀ>“Îkà>“Îk?“Îk ?“Îk@?“Îk`@“Îk€@“Îk@C{œk@CCœk`CSkm€C{œk€CCœk CS~mÀC{œkÀCCœkàC{œkàCCœkD{œkDCœk D{œk@D{œk`D{œk€D{œk D{œkÀD{œk E{œkÀE{œkàE{œkàECœkF{œkFCœk F{œk FCœk@F{œk@FCœk`F{œk`FCœk€F{œk€FCœk F{œk FCœkÀF{œkÀFCœkÀG{œkàG{œkH{œk H{œk@H{œk`H{œk€H{œk H{œkK{œk K{œk@K{œk`K{œk€K{œk K{œk@L{œk`L{œk L{œk LCœkÀLSkmàL{œkàLCœkMS~m M{œk MCœk@MS‹m`M{œk`MCœk€M{œk€MCœk M{œk MCœkÀM{œkàM{œkN{œk N{œk@N{œk`N{œk`O{œk€O{œk O{œk OCœkÀO{œkÀOCœkàO{œkàOCœkP{œkPCœk P{œk PCœk@P{œk@PCœk`P{œk`PCœk€P{œk€PCœk P{œk PCœkÀP{œkÀPCœkàPSkmQ{œkQCœk Q{œk QCœk@Q{œk@QCœk`Q{œk`QCœk€Q{œk Q{œkÀQ{œkàQ{œkR{œk R{œk R{œkÀR{œk`S{œk`SCœk€SSkm S{œk SCœkÀSS~màS{œkàSCœkTS‹m T{œk TCœk@TSâ¢`T{œk`TCœk€TST{œk TCœkÀTSü¢àT{œkàTCœkU{œkUCœk U{œk UCœk@U{œk`U{œk€U{œk U{œkÀU{œkàU{œkV{œk V{œk`V{œk`VCœk€VSkm V{œk VCœkÀVS~màV{œkàVCœkWS‹m W{œk WCœk@W{œk@WCœk`W{œk`WCœk€W{œk W{œkÀW{œkàW{œkX{œk X{œk@X{œk`X{œk€XSkm X{œk XCœkÀX{œkÀXCœkàX{œkàXCœkY{œkYCœk Y{œk YCœk@Y{œk`Y{œk€Y{œk Y{œkÀY{œkàY{œkàZ{œk[{œkÀ[{œkÀ[Cœkà[Skm\{œk\Cœk \S~m@\{œk@\Cœk`\{œk`\Cœk€\{œk€\Cœk \{œkÀ\{œkà\{œk]{œk ]{œk@]{œk`]{œk€]{œkÀ`{œkà`{œka{œk a{œk@a{œk`a{œkÀb{œkàb{œk c{œk cCœk@cSkm`c{œk`cCœk€cS~m c{œk cCœkÀcS‹màc{œkàcCœkdS⢠d{œk dCœk@dSï¢`d{œk`dCœk€dSü¢ d{œk dCœkÀdS £àd{œkàdCœkeS£ e{œk eCœk@eS#£`e{œk`eCœk€e{œk€eCœk e{œk eCœkÀe{œkàe{œkf{œk f{œk@f{œk`f{œkàf{œkg{œkàg{œkàgCœkh{œkhCœk h{œk hCœk@h{œk@hCœk`h{œk`hCœk€h{œk€hCœk h{œk hCœkÀh{œkÀhCœkàh{œkàhCœki{œkiCœk i{œk iCœk@i{œk@iCœk`i{œk`iCœk€i{œk€iCœk i{œk iCœkÀi{œkÀiCœkài{œkàiCœkj{œkjCœk j{œk jCœk@j{œk@jCœk`j{œk`jCœk€j{œk€jCœk j{œk jCœkÀj{œkÀjCœkàj{œkàjCœkk{œkkCœk k{œk kCœk@k{œk@kCœk`k{œk`kCœk€k{œk€kCœk k{œk kCœkÀk{œkÀkCœkàk{œkàkCœkl{œklCœk l{œk lCœk@l{œk@lCœk`l{œk`lCœk€l{œk€lCœk lSkmÀl{œkÀlCœkàl{œkàlCœkm{œkmCœk m{œk mCœk n{œk@n{œk`n{œk€n{œk n{œkÀn{œkàn{œko{œk@p{œk`p{œk€p{œk p{œkÀp{œkàp{œk@r{œk`r{œks{œk s{œk@s{œk`s{œk€s{œk s{œkàs{œkt{œk t{œkÀt{œkàt{œku{œk u{œk@u{œk v{œkÀv{œk@w{œk`w{œk€w{œk w{œkÀw{œkàw{œk€x{œk x{œky{œkyCœk ySkm@y{œk@yCœk`yS~m€y{œk€yCœk yS‹mÀy{œkÀyCœkày{œkàyCœkz{œkzCœk z{œk@z{œk`z{œk€z{œk z{œkÀz{œkàz{œk{{œkÀ{{œkà{{œk|{œk |{œk@|{œk`|{œk }{œk@}{œk ~{œk@~{œk`~{œk€~{œk ~{œkÀ~{œkÀ{œkà{œk {œk Cœk@Skm`{œk`Cœk€S~m {œk CœkÀS‹mà{œkàCœk‚S⢠‚{œk ‚Cœk@‚Sï¢`‚{œk`‚Cœk€‚Sü¢ ‚{œk ‚CœkÀ‚S £à‚{œkà‚CœkƒS£ ƒ{œk ƒCœk@ƒS#£`ƒ{œk`ƒCœk€ƒS÷ù ƒ{œk ƒCœkÀƒSúàƒ{œkàƒCœk„S3ú „{œk „Cœk@„SSú`„{œk`„Cœk€„S~ú „{œk „CœkÀ„S à„{œkà„Cœk…S2 …{œk …Cœk@…SM `…{œk`…Cœk€…{œk€…Cœk …{œk …CœkÀ…{œkà…{œk†{œk †{œk@†{œk`†{œk€†{œk †{œkÀ†{œkÀ†Cœkà†{œkà†Cœk‡{œk‡Cœk ‡{œk ‡Cœk@‡{œk@‡Cœk`‡{œk`‡Cœk€‡{œk€‡Cœk ‡{œk ‡CœkÀ‡{œkÀ‡Cœkà‡{œkà‡Cœkˆ{œkˆCœk ˆ{œk ˆCœk@ˆ{œk@ˆCœk`ˆ{œk`ˆCœk€ˆ{œk€ˆCœk ˆ{œk ˆCœkÀˆ{œkÀˆCœkàˆ{œkàˆCœk‰{œk‰Cœk ‰{œk ‰Cœk@‰{œk@‰Cœk`‰{œk`‰Cœk€‰{œk€‰Cœk ‰{œk ‰CœkÀ‰{œkÀ‰Cœkà‰{œkà‰CœkŠ{œkŠCœk Š{œk ŠCœk@Š{œk@ŠCœk`Š{œk`ŠCœk€Š{œk€ŠCœk Š{œk ŠCœkÀŠ{œkÀŠCœkàŠ{œkàŠCœk‹{œk‹Cœk ‹{œk ‹Cœk@‹{œk@‹Cœk`‹{œk`‹Cœk€‹{œk€‹Cœk ‹{œk ‹CœkÀ‹{œkÀ‹Cœkà‹{œkà‹CœkŒ{œkŒCœk Œ{œk ŒCœk@Œ{œk@ŒCœk`Œ{œk`ŒCœk€Œ{œk€ŒCœk Œ{œk ŒCœkÀŒ{œkÀŒCœkàŒ{œkàŒCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkŽ{œkŽCœk Ž{œk ŽCœk@Ž{œk@ŽCœk`Ž{œk`ŽCœk€Ž{œk€ŽCœk Ž{œk ŽCœkÀŽ{œkÀŽCœkàŽ{œkàŽCœk`{œk€{œk {œkÀ{œkà{œk{œk {œk@{œk`{œk`Cœk€Skm {œk CœkÀS~mà{œkàCœk‘{œk‘Cœk ‘{œk ‘Cœk`‘{œk`‘Cœk€‘{œk€‘Cœk ‘{œk ‘CœkÀ‘{œkÀ‘Cœkà‘{œkà‘Cœk’{œk’Cœk ’{œk ’Cœk@’{œk@’Cœk€’{œk€’Cœk ’SkmÀ’{œkÀ’Cœkà’S~m“{œk“Cœk “S‹m@“{œk@“Cœk`“S⢀“{œk€“Cœk “Sï¢À“{œkÀ“Cœkà“Sü¢”{œk”Cœk ”S £@”{œk@”Cœk`”S£€”{œk€”Cœk ”S#£À”{œkÀ”Cœkà”S÷ù•{œk•Cœk •Sú@•{œk@•Cœk`•S3ú€•{œk€•Cœk •SSúÀ•{œkÀ•Cœkà•S~ú–{œk–Cœk –{œk –Cœk@–{œk@–Cœk`–{œk€–{œk –{œkÀ–{œkà–{œk—{œk —{œk@—{œk`—{œk`—Cœk€—Skm —{œk —CœkÀ—S~mà—{œkà—Cœk˜S‹m ˜{œk ˜Cœk@˜{œk@˜Cœk`˜{œk`˜Cœk€˜{œk ˜{œkÀ˜{œkà˜{œk™{œk ™{œk@™{œk`™{œk€™{œk€™Cœk ™{œk ™CœkÀ™{œkÀ™Cœkà™{œkà™Cœkš{œkšCœk š{œk šCœk@š{œk@šCœk`š{œk`šCœk€š{œk€šCœk š{œk šCœkÀš{œkÀšCœkàš{œkàšCœk›{œk›Cœk ›Skm@›{œk@›Cœk`›S~m€›{œk€›Cœk ›S‹mÀ›{œkÀ›Cœkà›S⢜{œkœCœk œ{œk œCœk@œ{œk@œCœk`œ{œk€œ{œk œ{œkÀœ{œkàœ{œk{œk {œk@{œk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœkž{œkžCœk ž{œk žCœk@ž{œk@žCœk`ž{œk`žCœk€ž{œk€žCœk ž{œk žCœkÀž{œkÀžCœkàž{œkàžCœkŸ{œkŸCœk Ÿ{œk ŸCœk@Ÿ{œk@ŸCœk€Ÿ{œk€ŸCœk ŸSkmÀŸ{œkÀŸCœkàŸS~m {œk Cœk  {œk  Cœk@ {œk@ Cœk` {œk€ {œk  {œkÀ {œkà {œk¡{œk ¡{œk@¡{œk€¡{œk€¡Cœk ¡SkmÀ¡{œkÀ¡Cœkà¡S~m¢{œk¢Cœk ¢S‹m@¢{œk@¢Cœk`¢S⢀¢{œk€¢Cœk ¢{œk ¢CœkÀ¢{œkÀ¢Cœkà¢{œk£{œk £{œk@£{œk`£{œk€£{œk £{œkÀ£{œk¤{œk¤Cœk ¤Skm@¤{œk@¤Cœk`¤S~m€¤{œk€¤Cœk ¤{œk ¤CœkÀ¤{œkÀ¤Cœkà¤{œk¥{œk ¥{œk@¥{œk`¥{œk€¥{œk ¥{œkÀ¥{œk¦{œk¦Cœk ¦Skm@¦{œk@¦Cœk`¦S~m€¦{œk€¦Cœk ¦{œk ¦CœkÀ¦{œkÀ¦Cœkà¦{œk§{œk §{œk@§{œk`§{œk€§{œk §{œkÀ§{œk¨{œk¨Cœk ¨Skm@¨{œk@¨Cœk`¨S~m€¨{œk€¨Cœk ¨S‹mÀ¨{œkÀ¨Cœkà¨S⢩{œk©Cœk ©Sï¢@©{œk@©Cœk`©Sü¢€©{œk€©Cœk ©S £À©{œkÀ©Cœkà©S£ª{œkªCœk ªS#£@ª{œk@ªCœk`ªS÷ù€ª{œk€ªCœk ªSúÀª{œkÀªCœkàªS3ú«{œk«Cœk «{œk «Cœk@«{œk@«Cœk`«{œk€«{œk «{œkÀ«{œkà«{œk¬{œk ¬{œk@¬{œk€¬{œk€¬Cœk ¬SkmÀ¬{œkÀ¬Cœkà¬S~m­{œk­Cœk ­S‹m@­{œk@­Cœk`­S⢀­{œk€­Cœk ­Sï¢À­{œkÀ­Cœkà­Sü¢®{œk®Cœk ®S £@®{œk@®Cœk`®S£€®{œk€®Cœk ®S#£À®{œkÀ®Cœkà®S÷ù¯{œk¯Cœk ¯Sú@¯{œk@¯Cœk`¯S3ú€¯{œk€¯Cœk ¯SSúÀ¯{œkÀ¯Cœkà¯S~ú°{œk°Cœk °S @°{œk@°Cœk`°S2 €°{œk€°Cœk °SM À°{œkÀ°Cœkà°Sc ±{œk±Cœk ±S @±{œk@±Cœk`±SŽ €±{œk€±Cœk ±S­ À±{œkÀ±Cœkà±SÌ ²{œk²Cœk ²SÙ @²{œk@²Cœk`²SÅY €²{œk€²Cœk ²SáY À²{œkÀ²Cœkà²SZ ³{œk³Cœk ³SZ @³{œk@³Cœk`³S‚£ €³{œk€³Cœk ³Sœ£ À³{œkÀ³Cœkà³S»£ ´{œk´Cœk ´Sû£ @´{œk@´Cœk`´SÕ €´{œk€´Cœk ´S$Õ À´{œkÀ´Cœkà´S1Õ µ{œkµCœk µS>Õ @µ{œk@µCœk`µSKÕ €µ{œk€µCœk µSXÕ Àµ{œkÀµCœkàµSeÕ ¶{œk¶Cœk ¶SrÕ @¶{œk@¶Cœk`¶SÕ €¶{œk€¶Cœk ¶SŒÕ À¶{œkÀ¶Cœkà¶S™Õ ·{œk·Cœk ·S¦Õ @·{œk@·Cœk`·S³Õ €·{œk€·Cœk ·SÀÕ À·{œkÀ·Cœkà·SÍÕ ¸{œk¸Cœk ¸SÚÕ @¸{œk@¸Cœk`¸SçÕ €¸{œk€¸Cœk ¸SôÀ¸{œkÀ¸Cœkà¸S¹{œk¹Cœk ¹S@¹{œk@¹Cœk`¹S€¹{œk€¹Cœk ¹S(À¹{œkÀ¹Cœkà¹S5º{œkºCœk ºSB@º{œk@ºCœk`ºSO€º{œk€ºCœk ºS\Àº{œkÀºCœkàºSi»{œk»Cœk »Sv@»{œk@»Cœk`»Sƒ€»{œk€»Cœk »SÀ»{œkÀ»Cœkà»S¼{œk¼Cœk ¼Sª@¼{œk@¼Cœk`¼S·€¼{œk€¼Cœk ¼SÄÀ¼{œkÀ¼Cœkà¼Sѽ{œk½Cœk ½SÞ@½{œk@½Cœk`½S뀽{œk€½Cœk ½SøÀ½{œkÀ½Cœkà½S¾{œk¾Cœk ¾S@¾{œk@¾Cœk`¾S€¾{œk€¾Cœk ¾S,À¾{œkÀ¾Cœkà¾S9¿{œk¿Cœk ¿SF@¿{œk@¿Cœk`¿SS€¿{œk€¿Cœk ¿S`À¿{œkÀ¿Cœkà¿SmÀ{œkÀCœk ÀSz@À{œk@ÀCœk`ÀS‡€À{œk€ÀCœk ÀS”ÀÀ{œkÀÀCœkàÀS¡Á{œkÁCœk ÁS®@Á{œk@ÁCœk`ÁS»€Á{œk€ÁCœk ÁSÈÀÁ{œkÀÁCœkàÁSÕÂ{œkÂCœk ÂSâ@Â{œk@ÂCœk`ÂSï€Â{œk€ÂCœk ÂSüÀÂ{œkÀÂCœkàÂS Ã{œkÃCœk ÃS@Ã{œk@ÃCœk`ÃS#€Ã{œk€ÃCœk ÃS0ÀÃ{œkÀÃCœkàÃS=Ä{œkÄCœk ÄSJ@Ä{œk@ÄCœk`ÄSW€Ä{œk€ÄCœk ÄSdÀÄ{œkÀÄCœkàÄ{œkàÄCœkÅ{œkÅCœk Å{œk@Å{œk`Å{œk€Å{œk Å{œkÀÅ{œkÀÅCœkàÅ{œkàÅCœkÆ{œkÆCœk Æ{œk ÆCœk@Æ{œk@ÆCœk`Æ{œk`ÆCœk€Æ{œk€ÆCœk Æ{œk ÆCœkÀÆ{œkÀÆCœkàÆ{œkàÆCœkÇ{œkÇCœk Ç{œk ÇCœk@Ç{œk@ÇCœk`Ç{œk`ÇCœk€Ç{œk€ÇCœk Ç{œk ÇCœkÀÇ{œkÀÇCœkàÇ{œkàÇCœkÈ{œkÈCœk È{œk ÈCœk@È{œk@ÈCœk`È{œk`ÈCœk€È{œk€ÈCœk È{œk ÈCœkÀÈ{œkÀÈCœkàÈ{œkàÈCœkÉ{œkÉCœk É{œk ÉCœk@É{œk@ÉCœk`É{œk`ÉCœk€É{œk€ÉCœk É{œk ÉCœkÀÉ{œkÀÉCœkàÉ{œkàÉCœkÊ{œkÊCœk Ê{œk ÊCœk@Ê{œk@ÊCœk`Ê{œk`ÊCœk€Ê{œk€ÊCœk Ê{œk ÊCœkÀÊ{œkÀÊCœkàÊ{œkàÊCœkË{œkËCœk Ë{œk ËCœk@Ë{œk@ËCœk`Ë{œk`ËCœk€Ë{œk€ËCœk Ë{œk ËCœkÀË{œkÀËCœkàË{œkàËCœkÌ{œkÌCœk Ì{œk ÌCœk@Ì{œk@ÌCœk`Ì{œk`ÌCœk€Ì{œk€ÌCœk Ì{œk ÌCœkÀÌ{œkÀÌCœkàÌ{œkàÌCœkÍ{œkÍCœk Í{œk ÍCœk@Í{œk@ÍCœk`Í{œk`ÍCœk€Í{œk€ÍCœk Í{œk ÍCœkÀÍ{œkÀÍCœkàÍ{œkàÍCœkÎ{œkÎCœk Î{œk ÎCœk@Î{œk@ÎCœk`Î{œk`ÎCœk€Î{œk€ÎCœk Î{œk ÎCœkÀÎ{œkÀÎCœkàÎ{œkàÎCœkÏ{œkÏCœk Ï{œk ÏCœk@Ï{œk@ÏCœk`Ï{œk`ÏCœk€Ï{œk€ÏCœk Ï{œk ÏCœkÀÏ{œkÀÏCœkàÏ{œkàÏCœkÐ{œkÐCœk Ð{œk ÐCœk@Ð{œk@ÐCœk`Ð{œk`ÐCœk€Ð{œk€ÐCœk Ð{œk ÐCœkÀÐ{œkÀÐCœkàÐ{œkàÐCœkÑ{œkÑCœk Ñ{œk ÑCœk@Ñ{œk@ÑCœk`Ñ{œk`ÑCœk€Ñ{œk€ÑCœk Ñ{œk ÑCœkÀÑ{œkÀÑCœkàÑ{œkàÑCœkÒ{œkÒCœk Ò{œk ÒCœk@Ò{œk@ÒCœk`Ò{œk`ÒCœk€Ò{œk€ÒCœk Ò{œk ÒCœkÀÒ{œkÀÒCœkàÒ{œkàÒCœkÓ{œkÓCœk Ó{œk ÓCœk@Ó{œk@ÓCœk`Ó{œk`ÓCœk€Ó{œk€ÓCœk Ó{œk ÓCœkÀÓ{œkÀÓCœkàÓ{œkàÓCœkÔ{œkÔCœk Ô{œk ÔCœk@Ô{œk@ÔCœk`Ô{œk`ÔCœk€Ô{œk€ÔCœk Ô{œk ÔCœkÀÔ{œkÀÔCœkàÔ{œkàÔCœkÕ{œkÕCœk Õ{œk ÕCœk@Õ{œk@ÕCœk`Õ{œk`ÕCœk€Õ{œk€ÕCœk Õ{œk ÕCœkÀÕ{œkÀÕCœkàÕ{œkàÕCœkÖ{œkÖCœk Ö{œk ÖCœk@Ö{œk@ÖCœk`Ö{œk`ÖCœk€Ö{œk€ÖCœk Ö{œk ÖCœkÀÖ{œkÀÖCœkàÖ{œkàÖCœk×{œk×Cœk ×{œk ×Cœk@×{œk@×Cœk`×{œk`×Cœk€×{œk€×Cœk ×{œk ×CœkÀ×{œkÀ×Cœkà×{œkà×CœkØ{œkØCœk Ø{œk ØCœk@Ø{œk@ØCœk`Ø{œk`ØCœk€Ø{œk€ØCœk Ø{œk ØCœkÀØ{œkÀØCœkàØ{œkàØCœkÙ{œkÙCœk Ù{œk ÙCœk@Ù{œk@ÙCœk`Ù{œk`ÙCœk€Ù{œk€ÙCœk Ù{œk ÙCœkÀÙ{œkÀÙCœkàÙ{œkàÙCœkÚ{œkÚCœk Ú{œk ÚCœk@Ú{œk@ÚCœk`Ú{œk`ÚCœk€Ú{œk€ÚCœk Ú{œk ÚCœkÀÚ{œkÀÚCœkàÚ{œkàÚCœkÛ{œkÛCœk Û{œk ÛCœk@Û{œk@ÛCœk`Û{œk`ÛCœk€Û{œk€ÛCœk Û{œk ÛCœkÀÛ{œkÀÛCœkàÛ{œkàÛCœkÜ{œkÜCœk Ü{œk ÜCœk@Ü{œk@ÜCœk`Ü{œk`ÜCœk€Ü{œk€ÜCœk Ü{œk ÜCœkÀÜ{œkÀÜCœkàÜ{œkàÜCœkÝ{œkÝCœk Ý{œk ÝCœk@Ý{œk@ÝCœk`Ý{œk`ÝCœk€Ý{œk€ÝCœk Ý{œk ÝCœkÀÝ{œkÀÝCœkàÝ{œkàÝCœkÞ{œkÞCœk Þ{œk ÞCœk@Þ{œk@ÞCœk`Þ{œk`ÞCœk€Þ{œk€ÞCœk Þ{œk ÞCœkÀÞ{œkÀÞCœkàÞ{œkàÞCœkß{œkßCœk ß{œk ßCœk@ß{œk@ßCœk`ß{œk`ßCœk€ß{œk€ßCœk ß{œk ßCœkÀß{œkÀßCœkàß{œkàßCœkà{œkàCœk à{œk àCœk@à{œk@àCœk`à{œk`àCœk€à{œk€àCœk à{œk àCœkÀà{œkÀàCœkàà{œkààCœká{œkáCœk á{œk áCœk@á{œk@áCœk`á{œk`áCœk€á{œk€áCœk á{œk áCœkÀá{œkÀáCœkàá{œkàáCœkâ{œkâCœk â{œk âCœk@â{œk@âCœk`â{œk`âCœk€â{œk€âCœk â{œk âCœkÀâ{œkÀâCœkàâ{œkàâCœkã{œkãCœk ã{œk ãCœk@ã{œk@ãCœk`ã{œk`ãCœk€ã{œk€ãCœk ã{œk ãCœkÀã{œkÀãCœkàã{œkàãCœkä{œkäCœk ä{œk äCœk@ä{œk@äCœk`ä{œk`äCœk€ä{œk€äCœk ä{œk äCœkÀä{œkÀäCœkàä{œkàäCœkå{œkåCœk å{œk åCœk@å{œk@åCœk`å{œk`åCœk€å{œk€åCœk å{œk åCœkÀå{œkÀåCœkàå{œkàåCœkæ{œkæCœk æ{œk æCœk@æ{œk@æCœk`æ{œk`æCœk€æ{œk€æCœk æ{œk æCœkÀæ{œkÀæCœkàæ{œkàæCœkç{œkçCœk ç{œk çCœk@ç{œk@çCœk`ç{œk`çCœk€ç{œk€çCœk ç{œk çCœkÀç{œkÀçCœkàç{œkàçCœkè{œkèCœk è{œk èCœk@è{œk@èCœk`è{œk`èCœk€è{œk€èCœk è{œk èCœkÀè{œkÀèCœkàè{œkàèCœké{œkéCœk é{œk éCœk@é{œk@éCœk`é{œk`éCœk€é{œk€éCœk é{œk éCœkÀé{œkÀéCœkàé{œkàéCœkê{œkêCœk ê{œk êCœk@ê{œk@êCœk`ê{œk`êCœk€ê{œk€êCœk ê{œk êCœkÀêSkmàê{œkàêCœkë{œkëCœk ë{œk ëCœk@ë{œk@ëCœk`ë{œk€ë{œk ë{œkÀë{œkàë{œk€ï{œk ï{œkÀï{œkàï{œkð{œk ð{œk@ð{œk`ð{œkàð{œkñ{œk ñ{œk€ñ{œk ñ{œkò{œkòCœk òSkm@ò{œk@òCœk`òS~m€ò{œk€òCœk òS‹mÀò{œkÀòCœkàòSâ¢ó{œkóCœk ó{œk óCœk@ó{œk@óCœk`ó{œk€ó{œk ó{œkÀó{œkàó{œkô{œkôCœk ô{œk ôCœk@ô{œk@ôCœk`ô{œk`ôCœk€ô{œk€ôCœk ô{œk ôCœkÀô{œkÀôCœkàô{œkàôCœkõ{œkõCœk õ{œk õCœk@õ{œk@õCœk`õ{œk`õCœk€õ{œk€õCœk õ{œk õCœkÀõ{œkÀõCœkàõ{œkàõCœkö{œköCœk ö{œk öCœk@ö{œk@öCœk`ö{œk`öCœk€ö{œk€öCœk ö{œk öCœkÀö{œkÀöCœkàöSkm÷{œk÷Cœk ÷S~m@÷{œk@÷Cœk`÷S‹m€÷{œk€÷Cœk ÷{œk ÷CœkÀ÷{œkÀ÷Cœkà÷{œkø{œk ø{œk@ø{œk`ø{œk€ø{œk€øCœk ø{œk øCœkÀø{œkÀøCœkàø{œkàøCœkù{œkùCœk ù{œk ùCœk@ù{œk@ùCœk`ù{œk`ùCœk€ù{œk€ùCœk ù{œk ùCœkÀù{œkÀùCœkàù{œkàùCœkú{œkúCœk úSkm@ú{œk@úCœk`úS~m€ú{œk€úCœk ú{œk úCœkÀú{œkÀúCœkàú{œkû{œk û{œk@û{œk`û{œk€û{œk€ûCœk û{œk ûCœkÀû{œkÀûCœkàû{œkàûCœkü{œküCœk ü{œk üCœk@ü{œk@üCœk`ü{œk`üCœkàý{œkàýCœkþSkm þ{œk þCœk@þS~m`þ{œk`þCœk€þS‹m þ{œk þCœkÀþSâ¢àþ{œkàþCœkÿSï¢ ÿ{œk ÿCœk@ÿSü¢`ÿ{œk`ÿCœk€ÿS £ ÿ{œk ÿCœkÀÿ{œkÀÿCœkàÿ{œkàÿCœk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk {œk Cœk@Skm`{œk`Cœk€S~m {œk CœkÀS‹mà{œkàCœkS⢠{œk Cœk@Sï¢`{œk`Cœk€Sü¢ {œk CœkÀS £à{œkàCœkS£ {œk Cœk@S#£`{œk`Cœk€S÷ù {œk CœkÀSúà{œkàCœkS3ú {œk Cœk@SSú`{œk`Cœk€S~ú {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œkÀ{œkà{œk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk€ {œk€ Cœk  {œk  CœkÀ {œkÀ Cœkà {œkà Cœk {œk Cœk {œk Cœk@ {œk@ Cœk` {œk` Cœk  {œk  CœkÀ Skmà {œkà Cœk S~m {œk Cœk@ S‹m` {œk` Cœk€ S⢠ {œk  CœkÀ Sï¢à {œkà CœkSü¢ {œk Cœk@S £`{œk`Cœk€S£ {œk CœkÀS#£à{œkàCœkS÷ù {œk Cœk@Sú`{œk`Cœk€S3ú {œk CœkÀSSúà{œkàCœkS~ú {œk Cœk@S `{œk`Cœk€S2  {œk CœkÀSM à{œkàCœkSc {œk Cœk@S `{œk`Cœk€SŽ  {œk CœkÀS­ à{œkàCœkSÌ {œk Cœk@SÙ `{œk`Cœk€SÅY  {œk CœkÀSáY à{œkàCœkSZ {œk Cœk@SZ `{œk`Cœk€S‚£  {œk CœkÀSœ£ à{œkàCœkS»£ {œk Cœk@Sû£ `{œk`Cœk€SÕ  {œk CœkÀS$Õ à{œkàCœkS1Õ {œk Cœk@S>Õ `{œk`Cœk€SKÕ  {œk CœkÀSXÕ à{œkàCœk{œkCœk {œk Cœk@{œk`{œk€{œk {œkÀ{œkà{œk{œk {œk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk {œk Cœk@Skm`{œk`Cœk€S~m {œk CœkÀS‹mà{œkàCœkS⢠{œk Cœk@Sï¢`{œk`Cœk€Sü¢ {œk CœkÀS £à{œkàCœkS£ {œk Cœk@S#£`{œk`Cœk€S÷ù {œk CœkÀSúà{œkàCœkS3ú {œk Cœk@SSú`{œk`Cœk€S~ú {œk CœkÀS à{œkàCœkS2 {œk Cœk@SM `{œk`Cœk€Sc  {œk CœkÀS à{œkàCœk SŽ {œk Cœk@ S­ ` {œk` Cœk€ SÌ   {œk  CœkÀ SÙ à {œkà Cœk!SÅY !{œk !Cœk@!SáY `!{œk`!Cœk€!SZ  !{œk !CœkÀ!SZ à!{œkà!Cœk"S‚£ "{œk "Cœk@"Sœ£ `"{œk`"Cœk€"S»£  "{œk "CœkÀ"Sû£ à"{œkà"Cœk#SÕ #{œk #Cœk@#S$Õ `#{œk`#Cœk€#S1Õ  #{œk #CœkÀ#S>Õ à#{œkà#Cœk$SKÕ ${œk $Cœk@$SXÕ `${œk`$Cœk€$SeÕ  ${œk $CœkÀ$SrÕ à${œkà$Cœk%SÕ %{œk %Cœk@%SŒÕ `%{œk`%Cœk€%S™Õ  %{œk %CœkÀ%S¦Õ à%{œkà%Cœk&S³Õ &{œk &Cœk@&{œk@&Cœk`&{œk`&Cœk€&{œk &{œkÀ&{œkà&{œk'{œk '{œk@'{œk`'{œk€'{œk€'Cœk '{œk 'CœkÀ'{œkÀ'Cœkà'{œkà'Cœk({œk(Cœk ({œk (Cœk@({œk@(Cœk`({œk`(Cœk€({œk€(Cœk ({œk (CœkÀ({œkÀ(Cœkà({œkà(Cœk ){œk )Cœk@)Skm`){œk`)Cœk€)S~m ){œk )CœkÀ)S‹mà){œkà)Cœk*S⢠*{œk *Cœk@*Sï¢`*{œk`*Cœk€*Sü¢ *{œk *CœkÀ*S £à*{œkà*Cœk+S£ +{œk +Cœk@+S#£`+{œk`+Cœk€+S÷ù +{œk +CœkÀ+Súà+{œkà+Cœk,S3ú ,{œk ,Cœk@,SSú`,{œk`,Cœk€,S~ú ,{œk ,CœkÀ,S à,{œkà,Cœk-S2 -{œk -Cœk@-SM `-{œk`-Cœk€-Sc  -{œk -CœkÀ-{œkÀ-Cœkà-{œkà-Cœk.{œk .{œk@.{œk`.{œk€.{œk .{œkÀ.{œkà.{œk/Skm /{œk /Cœk@/{œk@/Cœk`/{œk`/Cœk€/{œk€/Cœk /{œk /CœkÀ/{œkà/{œk0{œk 0{œk@0{œk`0{œk€0{œk 0{œkÀ0{œkÀ0Cœkà0Skm1{œk1Cœk 1S~m@1{œk@1Cœk`1{œk`1Cœk€1{œk€1Cœk 1{œkÀ1{œkà1{œk 2{œk@2{œk`2{œk`2Cœk€2{œk€2Cœk 2{œk 2CœkÀ2{œkÀ2Cœkà2{œkà2Cœk3{œk3Cœk 3{œk 3Cœk@3{œk@3Cœk€3{œk€3Cœk 3SkmÀ3{œkÀ3Cœkà3S~m4{œk4Cœk 4S‹m@4{œk@4Cœk`4{œk`4Cœk€4{œk€4Cœk 4{œkÀ4{œkà4{œk5{œk 5{œk@5{œk`5{œk€5{œkÀ5{œkÀ5Cœkà5Skm6{œk6Cœk 6S~m@6{œk@6Cœk`6S‹m€6{œk€6Cœk 6{œk 6CœkÀ6{œkÀ6Cœkà6{œk7{œk 7{œk@7{œk`7{œk€7{œk 7{œkÀ7{œk8{œk8Cœk 8Skm@8{œk@8Cœk`8S~m€8{œk€8Cœk 8S‹mÀ8{œkÀ8Cœkà8Sâ¢9{œk9Cœk 9Sï¢@9{œk@9Cœk`9Sü¢€9{œk€9Cœk 9{œk 9CœkÀ9{œkÀ9Cœkà9{œk:{œk :{œk@:{œk`:{œk€:{œk :{œkÀ:{œk;{œk;Cœk ;Skm@;{œk@;Cœk`;S~m€;{œk€;Cœk ;S‹mÀ;{œkÀ;Cœkà;Sâ¢<{œk<Cœk <{œk <Cœk@<{œk@<Cœk`<{œk€<{œk <{œkÀ<{œkà<{œk={œk ={œk@={œk @Skm@@{œk@@Cœk`@{œk`@Cœk€@{œk€@Cœk @{œk @CœkÀ@{œkÀ@Cœkà@{œkA{œk A{œk@A{œk`A{œk€A{œkàA{œkB{œkÀB{œkàB{œkC{œk C{œk@C{œk`C{œk€C{œk C{œkàC{œkàCCœkDSkm D{œk DCœk@DS~m`D{œk`DCœk€DS‹m D{œk DCœkÀDSâ¢àD{œkàDCœkESï¢ E{œk ECœk@E{œk@ECœk`E{œk`ECœk€E{œk E{œkÀE{œkàE{œkF{œk F{œk@F{œk`F{œk€F{œk€FCœk F{œk FCœkÀF{œkÀFCœkàF{œkàFCœk G{œk GCœk@GSkm`G{œk`GCœk€GS~m G{œk GCœkÀGS‹màG{œkàGCœkHS⢠H{œk HCœk@H{œk@HCœk`H{œk`HCœk€H{œk€HCœk H{œk HCœkÀH{œkÀHCœkàH{œkàHCœkI{œkICœk I{œk ICœk@I{œk@ICœk`I{œk`ICœk€ISkm I{œk ICœkÀI{œkÀICœkàI{œkàICœkJ{œkJCœk J{œk@J{œk`J{œk J{œkÀJ{œkK{œkKCœk KSkm@K{œk@KCœk`KS~m€K{œk€KCœk KS‹mÀK{œkÀKCœkàK{œkàKCœkL{œkLCœk L{œk@L{œk`L{œk€L{œk L{œkÀL{œkàL{œkM{œkÀM{œkÀMCœkàMSkmN{œkNCœk NS~m@N{œk@NCœk`NS‹m€N{œk€NCœk N{œk NCœkÀN{œkÀNCœkàN{œkO{œk O{œk@O{œk`O{œk€O{œk O{œkÀO{œk`VSkm€V{œk€VCœk V{œk VCœkÀV{œkÀVCœkàV{œkàVCœk YSkm@Y{œk@YCœk`Y{œk`YCœk€Y{œk€YCœk Y{œk YCœk`[Skm€[{œk€[Cœk [{œk [CœkÀ[{œkÀ[Cœkà[{œkà[Cœk^Skm ^{œk ^Cœk@^{œk@^Cœk`^{œk`^Cœk€^{œk€^Cœk ^{œkÀ^{œkà^{œk@_{œk`_{œkà_{œk`{œk `{œk@`{œk``{œk€`{œk `{œkÀ`{œkà`Skma{œkaCœk a{œk aCœk@a{œk@aCœk`a{œk`aCœk€a{œk a{œkÀa{œkb{œk b{œk b{œk bCœkÀbSkmàb{œkàbCœkcS~m c{œk cCœk@cS‹m`c{œk`cCœk€c{œk€cCœk c{œk cCœkÀc{œkàc{œkd{œk d{œk@d{œk`d{œk€d{œk d{œkÀd{œkÀdCœkàd{œkàdCœke{œkeCœk e{œk eCœk@e{œk@eCœk`e{œk`eCœk€e{œk€eCœk e{œk eCœkÀe{œkÀeCœkàe{œkàeCœk`f{œk€f{œk f{œkÀf{œkàf{œkg{œk g{œk@g{œk€g{œk€gCœk gSkmÀg{œkÀgCœkàgS~mh{œkhCœk h{œk hCœk@h{œk@hCœk`h{œk€h{œk h{œkÀh{œkàh{œki{œk i{œk@i{œk€i{œk€iCœk iSkmÀi{œkÀiCœkàiS~mj{œkjCœk jS‹m@j{œk@jCœk`j{œk`jCœk€j{œk€jCœk j{œkÀj{œkàj{œkk{œk k{œk@k{œk`k{œk€k{œkÀk{œkÀkCœkàkSkml{œklCœk lS~m@l{œk@lCœk`lS‹m€l{œk€lCœk l{œk lCœkÀl{œkÀlCœkàl{œkm{œk m{œk@m{œk`m{œk€m{œk m{œkÀm{œkàm{œkàmCœkn{œknCœk n{œk nCœk@n{œk@nCœk`n{œk`nCœk€n{œk€nCœk n{œk nCœkÀn{œkÀnCœko{œkoCœk oSkm@o{œk@oCœk`oS~m€o{œk€oCœk oS‹mÀo{œkÀoCœkàoSâ¢p{œkpCœk pSï¢@p{œk@pCœk`pSü¢€p{œk€pCœk p{œk pCœkÀp{œkÀpCœkàp{œkq{œk q{œk@q{œk`q{œk€q{œk€qCœk q{œk qCœkÀq{œkÀqCœkàq{œkàqCœkrSkm r{œk rCœk@r{œk@rCœk`r{œk`rCœk€r{œk€rCœk r{œkÀr{œkàr{œks{œk s{œk wSkm@w{œk@wCœk`w{œk`wCœk€w{œk€wCœk w{œk wCœkÀw{œkÀwCœkàw{œkx{œk x{œkàx{œky{œk y{œk yCœkÀy{œkÀyCœk€zSkm z{œk zCœkÀz{œkÀzCœkàz{œkàzCœk{{œk{Cœk {{œk@{{œk`{{œk {{œkÀ{{œkÀ|Skmà|{œkà|Cœk}{œk}Cœk }{œk }Cœk@}{œk@}Cœk`}{œk€}{œk }{œkà}{œk~{œkÀ~{œkÀ~Cœkà~Skm{œkCœk S~m@{œk@Cœk`{œk`Cœk€{œk€Cœk {œkÀ{œkà{œk€{œk €{œk@€{œk`€{œk€€{œk €{œk €CœkÀ€Skmà€{œkà€CœkS~m {œk Cœk@S‹m`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk‚{œk‚Cœk ‚{œk ‚Cœk@‚{œk@‚Cœk`‚{œk`‚Cœk€‚{œk€‚Cœk ‚{œk ‚CœkÀ‚{œkÀ‚Cœkà‚{œkà‚Cœkƒ{œkƒCœk ƒ{œk ƒCœk@ƒ{œk@ƒCœk`ƒ{œk`ƒCœk „Skm@„{œk@„Cœk`„{œk`„Cœk€„{œk€„Cœk „{œk „CœkÀ„{œkà„{œk…{œk@…{œk`…{œk …{œk …CœkÀ…Skmà…{œkà…Cœk†S~m †{œk †Cœk@†S‹m`†{œk`†Cœk€†S⢠†{œk †CœkÀ†Sï¢à†{œkà†Cœk‡{œk‡Cœk ‡{œk ‡Cœk@‡{œk`‡{œk€‡{œk ‡{œkÀ‡{œkà‡{œkˆ{œk ˆ{œk{œkCœk Skm@{œk@Cœk`{œk`Cœk€{œk {œkÀ{œkà{œkŽ{œk Ž{œk@Ž{œk`Ž{œk ¡{œk ¡CœkÀ¡{œkÀ¡Cœk`¢{œk`¢Cœk€¢{œk€¢Cœk £{œk £Cœk@£{œk@£Cœkà£{œkà£Cœk¤{œk¤Cœk@ª{œk@ªCœk`ªSkm€ª{œk€ªCœk ªS~mÀª{œkÀªCœkàªS‹m«{œk«Cœk «Sâ¢@«{œk@«Cœk`«{œk`«Cœk€«{œk€«Cœk «{œkÀ«{œkà«{œk¬{œk ¬{œk@¬{œk`¬{œk€¬{œk ¬{œk ¬CœkÀ¬{œkÀ¬Cœkà¬{œkà¬Cœk­{œk­Cœk ­{œk ­Cœk@­{œk@­Cœk`­{œk`­Cœk€­{œk€­Cœk ­{œk ­CœkÀ­{œkÀ­Cœkà­{œkà­Cœk®{œk®Cœk ®{œk ®Cœk@®{œk@®Cœk`®{œk`®Cœk€®{œk€®Cœk ®{œk ®CœkÀ®{œkÀ®Cœkà®{œkà®Cœk¯{œk¯Cœk€¯{œk ¯{œkÀ¯{œkà¯{œk°{œk °{œk@°{œk`°{œkà°{œk±{œk ±{œk@±{œk`±{œk€±{œk ±{œkÀ±{œkà±{œkà±Cœk²Skm ²{œk ²Cœk@²S~m`²{œk`²Cœk€²{œk€²Cœk ²{œk ²CœkÀ²{œkà²{œk³{œk ³{œk@³{œk`³{œk€³{œk ³{œkÀ³{œkÀ³Cœkà³{œkà³Cœk´{œk´Cœk ´{œk ´Cœk@´{œk@´Cœk`´{œk`´Cœk€´{œk€´Cœk ´{œk ´Cœk൓Øàµ{œkÀ¸“ÎkณÎk¹“Îk ¹“Îk@¹“Îk`¹“Îk€¹“Îk ¹“ÎkÀ¹“Îk๓Îkº“Îk º“Îk@º“Îk`º“Îk€º“Îk º“ÎkÀº“ÎkຓÎk»“Îk€Ê{œk Ê{œkÀÊ{œkàÊ{œkË{œk Ë{œk@Ë{œk`Ë{œk€Í{œk€ÍCœk Í{œk ÍCœk€Î{œk€ÎCœk Î{œk ÎCœk@Ï{œk@ÏCœk`Ï{œk`ÏCœkÐ{œkÐCœk Ð{œk ÐCœkÀÐ{œkÀÐCœkàÐ{œkàÐCœk€Ñ{œk€ÑCœk Ñ{œk ÑCœk@Ò{œk@ÒCœk`Ò{œk`ÒCœkÓ{œkÓCœk Ó{œk ÓCœkÀÓ{œkÀÓCœkàÓ{œkàÓCœk`Ô{œk€Ô{œk Ô{œkÀÔ{œkàÔ{œkÕ{œk Õ{œk@Õ{œkàÕ{œkàÕCœkÖ{œkÖCœk Ö{œk ÖCœkÀÖ{œkÀÖCœk@×{œk`×{œk€×{œk ×{œkÀ×{œkà×{œkØ{œk Ø{œk Ø{œkÀØ{œkàØ{œkÙ{œk Ù{œk`à{œk€à{œk à{œkÀà{œkàà{œká{œk€á{œk á{œk â{œk@â{œk`â{œk€â{œk â{œkÀâ{œk@ã{œk`ã{œk ã“ÎkÀã“Îk@ä“Îk`ä“Îk€ä“Îkà䓨å“Îk@哨`å“Îk å{œk åCœkÀå{œkÀåCœkàå{œkàåCœkæ{œkæCœk@æ“Îk`æ{œk çSkm@ç{œk@çCœk`ç{œk`çCœk€ç{œk€çCœk ç{œk çCœkÀç{œkàç{œkè{œk è{œk@è{œk`è{œk€è{œk è{œk€é{œk é{œkÀé{œkàé{œkê{œk ê{œk@ê{œk`ê{œk ê{œkÀê{œkàê{œk ë{œkÀë{œkàë{œk@í{œk`í{œk€í{œk í{œkÀí{œkî{œkîCœk îSkm@î{œk@îCœk`îS~m€î{œk€îCœk îS‹mÀî{œkÀîCœkàîSâ¢ï{œkïCœk ïSï¢@ï{œk@ïCœk`ïSü¢€ï{œk€ïCœk ïS £Àï{œkÀïCœkàï{œkàïCœkð{œkðCœk ð{œk@ð{œk`ð{œk€ð{œk ð{œkÀð{œkàð{œkñ{œk ñ{œk ñCœk@ñ{œk@ñCœk`ñ{œk`ñCœk€ñ{œk€ñCœkÀñ{œkÀñCœkàñSkmò{œkòCœk òS~m@ò{œk@òCœk`òS‹m€ò{œk€òCœk ò{œk òCœkÀò{œkÀòCœkàò{œkó{œk ó{œk@ó{œk`ó{œk€ó{œk ó{œkÀó{œkÀô{œkàô{œkõ{œk õ{œk@õ{œk`õ{œk õ{œkÀõ{œkàö{œk÷{œk ÷{œk@÷{œk`÷{œk€÷{œk ÷{œkÀ÷{œk ø{œk øCœkÀøSkmàø{œkàøCœkùS~m ù{œk ùCœk@ùS‹m`ù{œk`ùCœk€ù{œk€ùCœk ù{œk ùCœkÀù{œkàù{œkú{œk ú{œk@ú{œk`ú{œk€ú{œk ú{œkÀú{œkÀúCœkàú{œkàúCœkû{œkûCœk û{œk ûCœk@û{œk@ûCœk`û{œk`ûCœk€û{œk€ûCœk û{œk ûCœkÀû{œkÀûCœkàû{œkàûCœkü{œküCœk ü{œk üCœk@ü{œk@üCœk`ü{œk`üCœk€ü{œk€üCœk ü{œk üCœk@ÿ{œk@ÿCœk`ÿ{œk`ÿCœk@{œk@Cœk`{œk`Cœk{œkCœk {œk CœkÀ{œkÀCœkà{œkàCœk€{œk€Cœk {œk Cœk@{œk@Cœk`{œk`Cœk{œkCœk {œk CœkÀ{œkÀCœkà{œkàCœkà“Îk “¤là “Îk “Îk “Îk@ “Îk` “Îk€ “Îk  “ØÀ “Îkà “Îk “Îk@ “Îk` “Îk  “ÎkÀ “Îkà “Îk “Îk “Îkà “Ø “Îk “Îk@ “Îk` “Îk€ “Îk  “ÎkÀ “Îkà “Îk“Îk “Îk@“Ø€“¤lÀ“Øà“Îk“Îk “Îk@“Îk “ÎkÀ“Îk@{œk`{œk€{œk {œkÀ{œk@“Îk@“Îk`“Îk€“ׂ{œk {œk Cœk@Skm`{œk`Cœk€S~m {œk CœkÀ{œkÀCœkà{œkàCœk{œk {œk@{œk`{œk€{œk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀSkmà{œkàCœkS~m {œk Cœk@{œk@Cœk`{œk`Cœk€{œk€Cœk {œk CœkÀ{œkÀCœkà{œkàCœk{œkCœk {œk Cœk@{œk@Cœk`{œk`Cœk {œk@{œk`{œk€{œk {œkÀ{œkÀ!{œk #{œk '“ÎkÀ'“Îkà'“Ø@(“Îk )“Îk@)“Îk`)“ØÀ)“Îkà)“Îk *“Îkà,“Ø-“Îk -“Îk@-“ÎkÀ-“Îkà-“Ø.“Îk .“¤l@.“ׂ`.“Ø€.“Ø .“ÎkÀ.“Îkà.“Îk/“Îk /“Îk@/“Îk`/“Îk€/“Îk /“ÎkÀ/“Îkà/“Ø 0“Îk@0“Îk 3{œk 3Cœk@3{œk@3Cœk@7“ÎkÀ7“Øà7“Îk8“Ø`8“Îk€8“Îk€;“ÎkÀ;“Îkà;“Ø<“Ø <“Îk@<“Îk <“ÎkÀ<“Ø ?“Îk@?“Îk`?“Ø€?“Îk ?“ÎkÀ?“Îk @“ÎkÀ@“Îkà@“ÎkA“Îk A“Îk@A“Îk€A“ÎkÀA“ÎkàA“ØB“Ø@B“Îk€B“Îk B“ÎkàB“Îk C“Îk C“ÎkàC“ׂ D“ׂ`D“ÎkàD“ÎkE“Îk@E“Îk`E“Îk€E“Îk E“ÎkÀE“ÎkàE“ØF“Ø@F“Ø`F“Îk€F“Îk F“ØÀF“ÎkàF“ØG“Ø@G“ׂ`G“Ø€G“Ø G“ÎkÀG“ÎkàG“ÎkH“Îk H“Îk@H“Îk`H“Îk`L“Ø€L“Îk L“ØÀL“ØàL“Îk M“Ø@M“Ø`M“Ø€M“Ø N“Îk`N“Îk O“Îk@O“Ø P“Îk@P“Îk`P“Îk€P“Ø P“ׂÀP“ØàP“ׂQ“Ø Q“Îk@Q“Ø`Q“Ø€Q“ÎkÀQ“ÎkR“Îk R“ÎkàR“ÎkS“Îk S“Îk@S“Îk S“ÎkàS“ÎkT“Îk T“ׂ@T{œk`T“ׂ€T“ÎkÀT“ׂU“Ø U“Ø@U“u’`U“1Q€U“¤l U“ׂàU“ØV“Ø V“Îk@V“Îk`V“Îk€V“Îk V“ÎkÀV“ÎkàV“Ø W“!×@W“¤l W“ÎkÀW“ØàW“ÎkY{œk Y{œk@Y{œk Z{œk ZCœk@Z“¤l`Z{œk€Z“Ø Z“ØÀZ“ׂàZ“Ø [“Ø@[“Ø`[“Îk€[“Ø [“ÎkÀ[“Îkà[“Ø\“Îk \“ׂ@\“Ø`\“Îk€\“Ø \“ׂÀ\“1Qà\“1Q ]“ׂ@]“ׂ`]“Îk ]“Îk@^“Ø`^“ØÀ^“Ø_“Ø _“Îk``{œk€`{œk `{œkÀb{œkÀbCœkàb{œkàbCœk€c{œk€cCœk c{œk cCœk d“Îk@d“Ø`d“Îk€d“Îk d“¤làd“Îke“Ø e“ׂÀe“Îkàe“Îkf“Îk f“Îk`f“Îk f“Îkg“Îk@g“Îk€g“Îk g“ØÀg“Øàg“Îkh“Îk h“Îk`h“Ø€h“Øi“Îk i“Îk`i“Ø i“Îkài“Îkj“¤l j“¤l@j“Îk`j“Îk€j“ׂ j“ׂàj“Ø k“Ø@k“Ø`k“¤l€k“¤l k“ØÀk“Ø l“Îk`l“Îk€l“Îk@m{œk@mCœk`m{œk`mCœkn{œknCœk n{œk nCœkÀn{œkÀnCœkàn{œkànCœk€o{œk€oCœk o{œk oCœkq{œkqCœk q{œk qCœk@q{œk@qCœk`q{œk`qCœk€q{œk€qCœk q{œk qCœkàq“ׂs{œksCœk s{œk sCœkt{œktCœk t{œk tCœk@u{œk@uCœk`u{œk`uCœkv{œkvCœk v{œk vCœkÀv{œkÀvCœkàv{œkàvCœk€w{œk€wCœk w{œk wCœk@x{œk@xCœk`x{œk`xCœkÀx{œkàx{œk z{œk zCœk@z“Îkàz“Îk{“¤l@{“Îk€}{œk€}Cœk }{œkÀ}“Îk`~“ÂQà~“Ø@“ׂ€“Îk€€“Îk“Îk ‚“ׂÀ‚“Îkà‚“Îkƒ“Îk ƒ“Ø@ƒ“Îk`ƒ“Îk€ƒ“ÎkÀƒ“ÎkàƒSkm„{œk„Cœk „{œk „Cœk@„{œk@„Cœk`„{œk`„Cœk€„{œk€„Cœk „{œk „Cœk`…{œk`…Cœk€…Skm …{œk …CœkÀ…S~mà…{œkà…Cœk†{œk†Cœk †{œk †Cœk@†{œk`†{œk€†{œk †{œkÀ†{œk‘“Îkà‘{œkà‘Cœk’Skm ’{œk ’Cœk@’S~m`’{œk`’Cœk€’S‹m ’{œk ’CœkÀ’Sâ¢à’{œkà’Cœk“Sï¢ “{œk “Cœk@“Sü¢`“{œk`“Cœk€“{œk€“Cœk “{œk “CœkÀ“{œkÀ“Cœkà“{œkà“Cœk”{œk”Cœk ”{œk ”Cœk@”{œk@”Cœk`”{œk`”Cœk€”{œk€”Cœk ”{œk ”CœkÀ”{œkÀ”Cœkà”{œkà”Cœk•{œk•Cœk •{œk •Cœk@•{œk@•Cœk`•{œk`•Cœk€•{œk€•Cœk •{œk •CœkÀ•{œkÀ•Cœkà•{œkà•Cœk–{œk–Cœk –{œk –Cœk@–{œk@–Cœk`–{œk`–Cœk –{œk –CœkÀ–Skmà–{œkà–Cœk—S~m —{œk —Cœk@—S‹m`—{œk`—Cœk€—S⢠—{œk —CœkÀ—Sï¢à—{œkà—Cœk˜Sü¢ ˜{œk ˜Cœk@˜S £`˜{œk`˜Cœk€˜{œk€˜Cœk ˜{œk ˜CœkÀ˜{œkÀ˜Cœkà˜{œkà˜Cœk™{œk™Cœk ™{œk ™Cœk@™{œk@™Cœk`™{œk`™Cœk€™{œk€™Cœk ™{œk ™CœkÀ™{œkÀ™Cœkà™{œkà™Cœkš{œkšCœk š{œk šCœk@š{œk@šCœk`š{œk`šCœk€š{œk€šCœk š{œk šCœkÀš{œkÀšCœkàš{œkàšCœk›{œk›Cœk ›{œk ›Cœk@›{œk@›Cœk`›{œk`›Cœk€›{œk€›Cœk ›{œk ›CœkÀ›{œkÀ›Cœkà›{œkà›Cœkœ{œkœCœk œ{œk œCœk@œ{œk`œ“Îk€œ“Îk`“Ø`ž“ÎkŸ“Ø Ÿ“Ø@Ÿ“Îk`Ÿ“Îk€Ÿ“Îk Ÿ“ÎkÀŸ“ÎkàŸ“Îk “Îk@ “ÎkÀ “Îk@¡“Îk`¡“Îkà¡“¤l¢“ׂÛ{œkÛCœk Û{œk ÛCœkÄ`Ë œk¡±an£±an¥±cn§²Žp­²p˲ŽpÓ²cn岎pë²çqù²Žp ³Žp³r³Žp³çq+³Žp/³çq1³Žp3³ŽpC³ŽpO³IrU³IrW³IrY³Ir[³Ir]³Ire³Žpk³Žpm³Žps³çqu³Žp‡³Žp•³Žp'´cn)´Žp+´an/´Žp1´çq3´¸t7´¸t9´Žp;´Žp=´Žp?´rA´¸tE´¸tG´IrI´¸tK´¸tM´×tO´ŽpQ´×tS´×tU´cnW´anY´anÍuñu±`uÙ`uau)auYau…au±auáaubu=buibu™buÅbuñbu!cuIcuµ–uí±u²u5²uU²uy²u•²uµ²uݲuù²u³u9³uY³uy³u•³uÁ³uݳuý³u%´u9´u]´uy´u•´u±´uÑ´uñ´uµu-µuIµuqµu™µu¹µuåµu ¶u5¶u]¶u…¶u­¶uÕ¶uý¶u%·uM·uÔuÕueòuòuáu‰u= ua u… u© uÍ uñ u!uQuyu¡uÉuåuu%uqu•uuEuÙu‘#uµ#uÙ#uù#u$u9$u%uA%uqKuOu=Ouuu¨u•¨uÌuùÌu)ÍuiÍu™ÙuÅÙuuIuqPu[u=muMuyu¡uÅuõu%uQuu©uÕu‘u)‘uQ‘u}‘u©‘uÁ—,-¡ýuYu¡uè6Ž6>66D6À 6ø5!6p"6Ìe#6 $6%6S&6G'6;(6/)6*6 +6,6-6.6€/6006 16 2636>46À56 6676ˆ86@96t:6;6<6 =6a"a;abíbÍc_ l!l.l9lbl|l‰_mZm˜mÅmÉmÍmämnšožo£s®sÂsÆsÖsÚs(tµtñt u/u_ucuƒuCvHvNv]v¸xÀxy!y™yñyz/zCz†_[zzIy‰z”z˜zTy¢z±z {e{l{p{y{¦{û{E|‚|·|I}›}±}Á};~‡~|¶j€u€Š€Ÿ€±€3žð‚ƒ@ƒÒƒ„Ô„á„ú„ ……Ö…ç…ì…ö…ü…ÿ…´…(†N†S†\†b†n†à†³† ‡‡3‡S‡¥†‚‡›‡ª‡ˆç‡ˆ2ˆTˆYˆgˆ·ˆÔˆÞˆ‰I‰U‰¢‰ç‰ö‰SŠ‹‹‹J‹n‹þo׋8ŒAŒ~Œ‡Œ›Œ¯ŒéŒwŽ£ŽÃŽáŽïŽpË%Α{‘ú¬‘͑ؑ|’æ’“=“Z“c“Ú“ï“”ŽA•Ž*–¨–Ü–û–——!—0—9—õ—h˜½˜Þ˜’™¼™Ê™šše™:šNš¶šïšþš-›G›L›_›d›p›"œWœvœ¬†µœÀœÈœÖœ.`†œ£ž¨ž¸ž&Ÿ4Ÿ@ŸGŸãžNŸ`ŸgŸzŸCžž\ž‰ŸŸ™ŸמœŸ£Ÿ 6¡C¡˜¡º¡Ý¡U¢‡¢ºv¯¢×¢^£m£Ĥý¤ ¥¥Q¥`¥š¥Ÿ¥Ì¥Ñ¥á¥æ¥ ¦4¦˜¦¨¢¨§¨K¨ʨ©N©¤ªiª¶ªǪóª«8«?«F«f«o«t«…«›«ëÝ« ¬¬¬9¬W¬e¬‚¬5®:®?®M®_®à­Ÿ®Ø®æ®-¯K¯G±õ°T±u±± ±°±ø±¼±J²†²–²¡²¨²¯²¨³–´´±´)µ¶¶¶b¶h¶x¶¡¶ܶF·K·P· ·k··Š·¢·–¸›¸k»¤»³»!½‹½B¿a¿¯¿¿¿пÀ;ÀXÀaÀlÀsÀļÀ–À¡À¨À¯À¶À½ÀÄÀËÀ$ÁšÂ¸ÂWþÄÄCÄJͼ˼ ¾UÄ\Ľ¼cÄjÄqÄ|ăľġÅá½oÆïÆÇ£Ç‡ÈµÈÇÈDÉõÊˈËîËÌÌÜž»¹ÌÌ¿»#Ì(Ì8Ì‚¼4ºY»M»uÍpÏxÏóÏ ÐºÏ;ЉУÐ[лÐu¤àÐÑ5ÑhÑÒ'ÒPÒÒ¦ÒóÒÓÓFÓKÓkÓËÓßÓ ÔÔ!Ô5ÔõÖ×1׀רBØYØ•ØÃØÕØÙÓÙJÚ¯ÛÙÛ ÕÜPÜ‹ÜÝÝ2ÝWÝÉÝÑݹ½«ÕÝÝ)Þ.ÞIÞRÞ[ÞiÞnÞÞ Þ¥Þ°Þ·Þ¼ÞËßøàýàá áá'á.áâBãPããíãäää%äOägäÁäå&å5åIå¥å™æ¹æÀæÒæßæçgçlçwç‚ç‘ç¥è ê êêêê*ê5ê‘ê–êŸê¤ê¹ê¬ìçîïîïïï,ïmïrïwï€ï˜ï£ï®ïµï’ñAóô¾ôÎô®õ6ö=öiöoö‚÷ëøù4ùjù–ùù¬ùßù;úMú]únúOùŠúÍúêú ûYûƒû¯ûüü%ü2üüü[ý ýÔýäý4þ!ÿŠÿ¡ÿ±ÿ¸ÿÄÿÔÿoʼn}½Þ=Sh†‘¡¹ëö"18CNU\OäõV ] d • ñ û   $ . 3 > J S \ ç X ½ Í Ô ß í  X Ë ù u’³1éû† ! AgvŒªyiÉ8¯Ekæÿ¹#T' 5#F#o#$»#>$2æ`!Ò$ó$"Ê"Ã"&%:%:&Å'Ê'ò'( (M(t(y(„(‹(“(¨(´(Ø(â(‰*3,h,˜,‘,Í,è,-ÿ,T-.-¡-a.q-ç.I/’//¤/Ú/0Z0š0õ0ý0A1F1û1–2Ò4Ù4÷4(5>5E5P5¦566€66á6ò6ÿ6 77Œ7˜7£7¯7¶7Á7Í78»8àÙJ9Z9O:p:•:£:¿:Ñ:å:;X;_;o;v;};…;°;=<Ç<=q=¼>ؽû>?1?J?_?o?‰?ž?ª?·?Ó? AxBŒB“B˜B¡BÄBËBcª‹CíDôDE@EÒEßE¢E3FH–HëHI/IhIwI}II¸IiJ‰J¦J¿JÍJ™KLfL¨LMIM]M—MéMõMüMN NN1¶$N/N6NfN~N’N™N N´N»NÂNÉNÐNÛNèNóN&O—PORVRvRÙRSâ‡S‚S©SÓSéSITrTœT£T®TëTsUˆU¾UÔUÙUæUV"V)V0VyVÌVKWÏW-X*YZÞZ[;[¢[é[0\ \y\K\ò\~]^R^·^@_£_ó_+`ø`Sa'a¬avaAbob4de²eff`f¯fÞfjT%g gfg8gÏg‡g‘héh÷h-iiÂiUjkjùkldl@lµllmÞlŸmUm^n,ogoCo¬o~o pÑošp8qvqñqrbr€rsËsVÐõsLtŽuÜuUÖv-vfvˆvw/wbw½wéwxx-xFxUx‹x’x°xLymyîy&z7zNzwzËz({_{Ë{ä{@|s|›|Ã|Ê|ñ|ü|}}i}[~Œ~“~ž~¥~¬~½~X_fmt{‚z€‰€®€Á€e³ßð=‚D‚K‚V‚]‚d‚p‚w‚~‚…‚ƒ—„ž„å„í„$…¹…7†{†ž†²†+‡K‡V‡g‡»‡ƇׇˆRˆsˆN‰Z‰Љ=ŠDŠsŠzмŠ(ŒG|ƒŠÅMŽ£ŽªŽ±ŽÊŽãêñø3dk„–°‘ü‘X’a’n’Š’ª’“1“c“Œ“å“ ”s”Ô”•Ó•z––L—€—Ï—˜$˜+˜2˜9˜D˜T˜[˜˜ʘƒ™Ž™ë™bšˆšš–š¹šÒšÙšàšçšîšõšLœ°Î"ž”ž¨ž"Ÿ-ŸGŸ¥Ÿ" G X ˜ ¡ ® Ú ß 4¡D¡ˆ¡²¡Т„£î£>¤ì¤¥\¥q¥è¥ï¥r¦y¦¨¦¯¦Þ¦å¦§§J§Q§€§‡§¶§½§ħϧX¨Ô¨Û¨æ¨í¨m©t©{©‚©‰©©Ó©ó©LªWª³ªºªŪЪÍ« ¬I¬‡¬Ŭ­€­‡­Ê­N°Z° °±±ñ±¸³<³¿³Ƴù³B±´¬´´Ú«´´²#´*´1´8´”¬V¬?´Ò¬F´Ù²M´T´[´b´³´ж½¶Ķ˶Ö¶ݶw®è¶ï¶þ¶?·\¹nº„ºýº»I»ú»G¼v¼ƒ¼½Œ½“½ν\¾¾†¾¿©ÀÄÀâÀëÀ ÁAÁHÁlÁsÁžÁºÁÇÁzÂíÃôÃ\ÄyÅóÅúÅÆ(Æ›ÆÑƽÇÄÇËÇÕÇȽÈÄÈËÈÒÈÝÈëÈòÈýÈÉ>É0ÊKÊVÊˤ,Ì7Ì ¤f̫̹ÌÕÌ7¤ïÌ͗ͨÎÏ=ÑÝÑÐäÑÒþÒ#Ó±·}ÏVÓԽΟÔÕÕ$Õ;Õ*֓ׯ×FاØ0Ù‡ÙÆÙ ÚÚuÚ‘Ú¿ÚúÛœÜMÝßÝÈÞߔߛßÅßÌßÓßJá°â÷â-ãeããìãˆé½éêìê#ë„íŸí*îÎì—îîîâðÒñÝò ôùôiõ÷P÷Æ÷ ù^ïØüßü@wæüíüôüûüý ýýýý%ý,ý3ý:ýAýÝý~áµµtI`“Üí´»ÂÉþJŽ¢Æ -4;BIPW^elsz¾žµ?bÏÖj q } • ² Ç Õ  ) 0 7 > E L S Z a h † “ ø ×  a Ì å   @ f k “ ¥ Ä  e§°íöR§°ëü4P™Œz³*={z†’žªš¢µ0Cö˜Vƒ•ÂÇÌð gx}‡Øò,41N^o‚‡Œ‘£·àêô# "©#½#,á#õ#$‰$%˜%%¢%«%Ä%Þ%N&§&¹&í&|'¦'í'j((’((È(),))¶)Ò)*+H+|+—+â+&,”-Ô-U.}.·.Ô./û/00 00B0G0L0x0Ö0.1M1R1p1©1³1Í12 2272]2‚2ž2£2¬2±2¾2ð2õ23"3'3@3k3—3­3²34?4˜4â4ç4`5¦5Û596£6ñ67;7Å7Ê7ç7<8P8]8e8o8x8}8-9Ë9Ô9Ý9æ9W:b:š:é:î:ó:±vø:;*w ;%;/;9;z;%<G<Z<Ð<ñ<=%=j=ò=ƒ>Ÿ>J?¶?×?@,@:@A@T@d@é@kCÛFßGHH‰è‰ï‰þ‰aŠxŠŠùŠv‹”‹î‹Œ?ŒkŒ‰ŒÑŒÜŒ>¡ÐãKŽRŽYŽjŽÓŽÚŽBIPaÊÕä)”ŸÖ@‘E‘J‘Q‘Š‘#’n’£’ú’A““Ò“ò“”7”d”o”|”¸”•&•6•C•u•Ë•וà•E–—«—¾—Ñ—[˜Y™z™É™šš"švš‹š¼š››*›1›L›¥›ƒœ"+4±&žƒžŸ ŸYŸâŸçŸìŸ   - S š *¡x¡œ¡Ý¡û¡'¢7¢O¢T¢c¢k¢p¢u¢€¢…¢¢’¢—¢œ¢¡¢ª¢¯¢´¢¹¢É¢΢Ó¢ã¢è¢ô¢1£‹¤”¤ì¤¸¥ò¥n¦Ħ§!§'§x§P§±§ÿ§e¨Ȩ=©©Ÿ©«©ä©ó©ÿ©ª>ªCªHªlª‰ª—ªµªÁªÔª)¬1¬=¬B¬L¬U¬§¬¬¬´¬ج謴²©´2µEµ޵¢µÁµäµ¶=¶S¶€¶‡¶ݶ·$·]·o·}·æ·Ÿ¸³¸Ѹ︹v¹µ¹ƹ º:ºVºfºtºƒº–ºŸº©º·ºÀºȺÛºåºøº/¼½¶½à½Y¾x¾¿,¿;¿~¿À6À>ÀÁÁ‚Á»ÁÂúÂÃÄ+Ä™ÄQÄÅæÅíÅÆÇÄZƎƕƥƬÆoųÆÇưÈiʰÊ×ÊËMËfˌ˥ËÈËéË8Í=ÍøÏÐTÐYÎMÎÀ,zИжпÐÓÐMÑìÑýÑ$ÒOÒÀÒãÒäÓ@Ô‡ÔžÔÁÔÈÔBÏâÔüÔ ÕÕý¬Õ%ÕbÕF©3ÖJÖÙ,Ï,ªÖ|ה׿×IØ\ØVÙÅÙùÙÚÚ«Ú&Û‡Û²ÛÇÛãÛ;ܰÜäÜâÝ1Þ)ϋ޵ÞëÞ.ßBßêßjà(àùàà~áâââSâoã½ãÉãæÚ"æmæ¾æÞåÌæ¹ÌüæÝçüçËèéŸéõé9ê`êëê ë/ëwëíCí|í‹í™í0ï7ïCïSïðñòÂòÈó¹ôó<òMõ×öm÷Ú÷+ø£ø’ù¼ÁÔP´ŠIvªÖìõSh³lv{‹Ï.GRbpˆîO _ ¥   }  8 ? s › bi„Ú-4;BZ¤æö'sòý=ÂÉÐïCtÄ3q±¸ÃÎÕóINj¸¿ÆÍÙàúÄÉÝ"0NšþªÙÞçì$ÀÅÕ ˜¹Ý)F]uÇ‘šŸÎ!(TÏÔH x !—!¢!­!¸!¿!Æ!Í!"u"|"³"Ï"ß"a#þ#,$O$d$…$Š$´$ê$#%n%y%™%£%Ã%>&C&H&a&Ÿ&Á&Ì&Ô&Ü&ç&X(¯)ß)ê)ñ)*þ*+"+N+U+\+k+—+ž+¥+¬+³+º+Á+È+,U,\,g,,†,¬,³,º,Á,É,Ð,Õ,Ü,ç,î,õ,ü,- ----&---4-;-B-I-P-W-^-e-l-s-z--ˆ-”-œ-¡-;u¨-´-»-Â-Í-Ô-Â.2Q2V2[2q22–2¬2²2È2Í2ä2é2ø2'32393@3C3J3M3T3[3b3i3p3w3z33„3‹3’3™3œ3£3´3‡4«4Î4÷4D5É5ø5i6³6Ç67757ª778y8›8¯8Ü809n9¿9:z:Þ:D;Œ; <Ä<Ë<8=´=b>>Þ>w?š?Å?Ñ?Ö?Û?à?å?ý?@)@0@7@>@E@qAdDˆD«DØD¡E¨E¯E¶EÛEôEHFÁFÜFðFGGH­HÖH¥IÝIôITJšJ½JåJùJOLuL’L³L¸L¿L[MYN_OÃOPP PtP“PÈPmQ»Q×QýQ]RlRwR½R6SnS¢S)T?TyTõTU"U)U0UPUWUnUuU„U˜UŸUÁU¥VîWÿWX XXX!X=XLXWXÉX-ZCZŠZ›Z‚[]]]%]C](^T^R_y_‡_Ð_Õ_ü_``$`—`§aîaxb†b¯b?cFcMctc½cäcd e9fRfqf\hihšhi#jSjj”j›j¢jåkìkók5lslßm&prp¿pq¾rÍtHuSu\ucujuquxuNv!x¬xÎyäyýyz zz:zÑ{–|}u}À} ~~#~>~I~‚~‡~Ž~“~§~¼~Wõ€8iu€œ&‚>‚ ‚´‚Õ‚¹ƒ9„|„õ„š…† †]†‡‡1‡>‡J‡^‡q‡…‡*ˆJ‹~‹ŒBŒ„Œ’Œ—Œ¼ŒÞŒ¦¶Ø4mÐ諭ú;‘m‘y‘‘þ‘%’¸’“-“A“H“O“V“]“d“k“r“y“¯“­”´”˔Ҕٔ•”•ú•-–È–×–l—Å—ñ— ˜˜˜À˜,š^š ›.œdœ¦œÇœôœ!,7>fmt{‹’™¦åžç¡¢£ó£¤f¤š¤ç¤ì¤¥Œ¥0¦~¦ئݦ%§@§‘§ù§¨1¨M¨c¨}¨’¨¹¨K©»©ªªÆ«ñ«÷«¬¬;¬m¬À¬*­9­y­ˆ­Ñ­dzà´å´ܶá¶%·•¸ª¸¸¸¿¸˸Û¸@ºqº¿ºôºj¼®¼I½нè½¾C¾K¾‡¾—¾¿Þ¾ˆ¿¶¿À3ÀÁdÁÒÁÂö¾Q¡¿ÂíÂÃuÃÄĶÄÊÄþÄ=ÇUÈvÈ›ÈÉÈ>ÉÙÇoÉŸÉÆÉ×ÉÞÉHÊ—ÊñÇË›Ëõ˯̺ÌÝÌ;ÍwÍ~Ï«ÏÛÏ]ÐÔÐÑðÐcÑ3ÑÙÑÒÓJÓ…ÓŽÓ—Ó Ó©Ó²Ó»ÓÅÓÏÓ×ÓíÓÆÔ ÕøÕÿÕÖõÖ/×E×…×ÿ× ØØ<ÙvÙÚ@Ú-Û¤ÛÚÛÜÜÜ%Ü,Ü3Ü:ÜAÜHÜOÜVÜ]ÜdÜkÜrÜy܀܇܎ܕܜܤݰݷÝuÞüãräÂä6åyåæqæôç‹è6é†éúé½êÍêþêÚëîëáì í-¶*íÚíWîmî‘ïdðlñ‹ñ~ôjõö©ö×ù#ü©ü;þBþIþÊþô-2s$Çv(-©'Œàv  ¨ 0 š Õ  3 G ` i n ’ Ÿ © ²  äû4¼ÅÚ3^nËàVwì>sÌ™ëCšõ’™¹f‘Ó¸½Ï£#f}ÉÞ÷  0 > C ñ ¥"®"ë"Îô" #`#°#Ò#å$ò$%í%ò%&& &é&¿'Ä'Ê'Ð'…)¨)Þ)€*+1+E+^+Ë+è,¶-ú./%/*0<0`0r0Þ0/1w1«1ù12A2Y23‘3Ÿ3±3Ù3å3÷34<4Z4w44›4æ5O9‡9•9³9Ê9Ü9g:—<ù<\=n=Â=«>?vÁvPwhw«wìwÀxÕxy»yzZz‚zR{‚{²{â{ù{³|oŠW€l€5‚:‚?‚D‚I‚N‚T‚Y‚^‚c‚h‚ÂÈ‚ƒ@ƒlƒ}ƒ‘ƒ¡ƒ²ƒÞƒ)„9„P„\„q„±„è„]…ã…/†j†ކ††{‡¿‡Їý‡+ˆ4ˆUˆŒˆáˆ>‰L‰t‰}‰¿‰ú‰Š:ŠcŠŠ¼Š׊‹:‹b‹Š‹º‹MŒ¥Œ®ŒòŒùŒ LYné&òù ‘`‘{’¥’““(“4“J“V“l“y”Œ”¹”Ú”Ÿ•½•–@–Û–5—j—€—z˜÷˜þ˜<™v™é™î™ šy›°› œ‰œ°œÇŠžûž^ŸÓŸ º ¡¢…¢£M£n£¶£|¤¿¤ؤ줥$¥i¥¿¦èܦ9§”¨¬¨y©‘©¤©ªÖ«ñ«ÿ«h¬¼­ ®7¯¯¸¯Ù¯‚±Œ±ϱ̲.³8³¤³´&´Zµxµµªµ¶··Ý·ï·>¸Q¸d¸͸ º’ºS»Å»×»ú»q¼½n½¹½¾ƒ¾ ¾¿)¿¦¿Á¨Á¼Á—®ÂÃUÄoÄÒÄQÅVÇÇÊÇqȦÈHÉÉÊ Ë?ËuË˹ËXÌsÌö̸ÍÎ&ÎPÏfϬÏÑÏЂиÐÓÐÚÐÃÑìÒ+ÓFÓeÓwÓ‰ÓœÓ Õ…ØSÙÙ£ÙVÚHÛۦܼÜÑÜOÝØÝëÝ Þ'ÞdÞýÞ ßß)ßTߡ߲ßÒßêßOàÖàákæ€æ¼æèîèé(é1é@éFéTéféœé¬é»éÎêÙë=íxîÀî ïtï¦ï ðäð[ó ó2ôWôzôûô¦õÀõNöªøÝøøø3ùÞùñùúú*úEú‰ú§úÀúÙúòú#ûçû:üIýý¿ýcþþ¥þõþÊÿæÿdÙb³ÊÚáèïöý.£ªÖÛè*18?FMT[bipw~…Üã UŸâ:~À'y¬Ò×ùcl˜ ( Y ` i … ˆ Ì ê ï  ^ — Á ð Z Œ gpu¥P˜ñ–ÜçòK©âHXȬ/6¢2¡zòý?üД»ÊßøxÏ I É â $!c!n!y!‰!©!è!D"é"5#f#Š#§#n$¢%Ú%Ð&—',(f(×(ý("),r.)i)F*´*»*E+®+ã+>,‚,½,-'-k-Ò-7.K.Õ.;/¬/Z00111)1Å12E2–2¢2z3‡4•4£45ì5b6¡6à6Ö7î8*9:¹:S<‚<É<L=r=Ð=>->A>U>f>s>Ã>f@•@·A¾B×B«CLDUDdD„DVE,F1F6FžFÎF[G¶G8HI$I6IXIšI¨IÚI7J>JEJjJKKKK4K¶K½KÄKËKÐK×KÞKåKìKóKúKL¥L¬L³LÃLMÿM2NŠN«N9OP(PUP+Q6Q?QdQ•QšQÅQ S'SmGm_mfm‡m«m¸mÌmðnPs[s”s™s¨sßsýs3trt¯tÁt&u9uduÂv"wzww”w¦wµwÇwÚwáwìwþw x5x±H²¥²*´ò´µ?µ}¶¶ζ£·X¹¹й1º}ºšº?»[¼˜¼½4½¾9¾ξŠ¿¥¿è¿ðÀÜÁìÁÂ:©īƿÆÇòÈÊËýËÜÌ!ÍFÍRÍ[Í}ÍÑYÓU՛ՍרVØ[ØÖØ$Ù)ÙÙJÚQÚŽÚ!Û”ÛµÛÇÛÔÛìÛñÛÜCÜ€Ý?áÐá×áÞá­ã3ä\änäòä%æoæ£æôæNç¦çóç]éuéé{êŽëìëóëúëì£ìµìÐì)íSíbí{í™í¶íÚí!î8îkîî—î­îÄîÚîñîï ïUï«ïÁïÞïñïð$ðGðUð„ð£ðµðºðÔðßðäðüðññ+ñ=ñOñ†ñ‘ñ˜ñ¼ñÚñòò<òüúúcµ‚£¾Çܘ ‚ ¯ I P d Ç û  6 J c n £ > "nÚ!P³ÏZ£³÷/þ‰;X]bˆ·Ï@dxœb¡@ X Ê D"4#%%±%Ø&ù'S(n(w((·(Õ(â(ë(9*¬,Ó,€-…-š-Ÿ-ª-ç-%/0/p/è/ÿ/0Í0Ô1Ù12¸2½2D3w3Å3î3ù3Ì4ä4´5Ò5ö5 66 6®7«8Û8â8é89c9¢9ô9+:ª:%;…;<`<r<›< =$=4=®>À>Ø>×?7C~C´C DRDYD`D™D;E“E¢E¿EøE@FÖF[HjIƒM,O-¾=NYOõO&PWP Q9Q@QGQTQaQžQÿQRGRTÙT=VšV©VÍWþWÁ\ö\R]l]]·]Ý^_I_ß_W`aƒaçbSb]b{cþcUede‘g gÍgLh¤h¯h‰i÷i`j™j¨j—lÇl7^ûlÄoÓop"pbpqp}p¶pÅp‰uÜvÿvDwÝx/y£yÆyz^zzzÆz.{É{|e|j}{}Woã}¥û‚‚¦‚5ƒo„¨…ÿ…z†½†å‡y‰1ŠQŠkŠ¥Šu‹þ‹”ŒŽ™ªµÏÞîþŽ8ŽgŽŽÈ‘Û“#”T•H–-™uœ ;w§ùažÌžñ W¡ý¡=¢£¢¤¤¤î¥¦ĦQ§å§ø¨=©_ª«Ë«ÿ«ª¯Ú°³±º±²©²:³–³â³0´7´G´N´U´\´´~µúµ·Ë·ä·l¸«¸"¹á¹ú¹4º»»¦»¾»¼ñ½ä¾/¿>À„ÀÁwÁÂËÂÜÂŽÃÉÄ´ÅÆ6ÆsÆØÆsǵÇÈHÈZÈ—ÈÅräÈaÉËkË¡ËÕËÜËãËÌ ÌÌÌ$Ì6ÌoÌyÎϊϯÏ$ÐÚÐÑrÑÚÑîÒOÔ–ÔÔ´ÔÏÔäÔzÕ:×yØÒת·…Ú0ÛÎÜUތޛß(àbà0á7ápáwá„áŸîÎá ã2ãƒã]åæÿæ,ç3ç†çWèoè¥è!éfééÜéìÕÉOêlê€ê”ê®ê½êÆêªëÏì-íOíbí÷ífî}îï7ï@ïOïÐï·ð#ñ.ñRñkñBòHóOóVógóéóôÄô¬õö¾ö ÷X÷“÷¿÷Î÷ñ÷»øVøÿø¯ùÉùÚùïù ú™úæú¼·%ûtû{û§ûÀûÒû ü%üQüsüÁüHýSýtýêýöýlþçþ%ÿ0ÿ;ÿãÿêÿ~œXÀáI¡¶Ê8?[bq€‹›1aßG‰© W ” @ S j Õ q ´ >ELS L¡,t€ÁÊÞöþ$8~QÁSSÓ*Ƨå;(V€•YÌ T â!("˜"ü"#Q#…$¨$ÿ$P%þ%('7'È'{(ž(Ú(n)Ý)x*˜*ª*²*i+T,ˆ.¢.³."./ß/ï/ÿ/]0»0Ð0ù0e12G3î3Z45¤5¯56m6‹6 7u7–7Ÿ7¶7¿7Ä7É7Ù7â78ç9yC­¿¿Ci<+DˆEL<PGGÍGòGFd9TH´HmK4<@<ÙKöK>LùLO×O?™?¥?ÛPàPîAùP»?DQvQ£Q¨Q†BÎQ’BãQvR¨BnBÈRåRzBùRSbR#SçSÍUäUñVÿVWW\W¨XY,YdYOZTZØZï[ô[!\K\¢]ò^ _9_I_ _ò_6`~`¿`a%a6c’g—gÏi«E«¬ˆ¬&­G­f­Ç­ð­®_®j¯ü¯k°~°˜°¯°Õ°±.±¬±@²E²…²¶²æ²õ² ³³³%³1³<³I³P³W³r³†³–³¡³µ?ºƒºóº`»•»X¼‡¼½7½™½ž½'¾‰¾.¿ü¿ÀÀüÀÁ:ÁjÁéÁo‘àÛÅéźÆ]ÇjÇ»ÇÄÈGɧɻÊ`˱ËÌw̗̞̥Ì!ÍÕÍÎJÎ|ΧÎÍÎóÎ ÏÏLϬÏÐ ÐÐ_ÐÑLÑ“Ñ¿Ñ Ò1Ò}ÒÑÒBÓ¡ÓDÔhÔÇÔÒÔ=ÕÃÕËÕÞÕúÕoÖU×bכע׫ØÏØÚØÙ8ÙGÙrÙÚJÚ“ÚÌÚïÚÛHÛyÛÌÛðÛÜcÜnÜ¥ÜPÝݶÝõÝCÞNÞsÞîÞß"ß)ß>ßÌßžàáRáLâ;ã¥ãzäŽåæiæºæÑæ çvçñçpè{è‚èè¨èMéTécéjééÐéðéûéêê5ê ëSìŸì-íïhðúð‚ñíñaòhòËòµôÖô#öFö?÷ý÷­øüø3ù)úvúÒúü.üqüòü ý,ý&þ‹ÿp { Ç › ´ Þ  W Ö ! ‹ À ß  , ’  k ™ Þ é Â Å Õ ö ˆ – ¾ % — Ý ì ý ì ± Á Ò ß O ´ Ç •  ` g œ £ ª ! &! °! ò" Ô# ç# $ £! N$ ü$ % +% š% Ã% 7& £& Ù& ' ªM@( S( d( í( í* 2+ E+ @, ¥- Ï- t. ¬. / ‡/ s/ C0 ¿0 1 Q1 p1 3 n3 ¯3 4 Ÿ3 4 l4 5 I5 \5 |5 ñ6 x7 –9 Ï9 d: w: : ¸: ¤; Ý; a< š< "= f> š> m? ŠB äB C yC lF G €G ¸G ÛG ùG 'H RH H øH XI ÷I J 3J CJ JJ WJ DK L SL oL ‡M ˜M ©N ¹N P iP ÃP èP pQ Q ¹Q -R 4R `R gR zR êR S US ´S ÖS GT !U “U ÌU äU •V W vW õW ‡X ¾X %Y úY —Z [ [ ž[ Š\ Ï\ ã\ =] …] ] ß] Ý^ ÿ^ Á_ .` 5` <` C` ` ` ñ` b b ²b çb .c Ùc d -d yd ôd Ge fe —e Sf æf pg ìg h Zh ©h »h &i =i ›i Ëi ¦j wk ¼k l ;l l ½l òl m ym °m ¿m Êm @n õn o "o 1o @o Oo _o 'p ¾q Ûr >s as Ãs t 3t Ht ït v [v åw ªx Ôx ¯y ¶y ½y ez ]{ { ¨{ ;| {} à} ‹~  x € > c £„ Ô„ {† »† E‡ ‡ ɇ .ˆ ‹ˆ ш ‰ ‰ ‰ ‰ %‰ ,‰ 3‰ @‰ 3Š :Š ²Š x‹ ±‹ YŒ Ž H Ñ [‘ 3“ Δ Ž• *V– w– ¦— ®˜ ­™ š žš ¥š ïš Kœ œ Üœ á ú ÿž 2Ÿ —Ÿ ú  [¡ †¡ ·¡ Ý¡ +¢ Ä¢ )£ 0£ 7£ >£ E£ L£ S£ Z£ a£ Æ£ õ£ @¤ ¥ )¥ ¦ d¦ t¦ ¯¦ Ò¦ «§ ǧ ¨ 2¨ ^¨ t¨ ·¨ ¾¨ ÷¨ þ¨ © © © $© Æ© ­ª áª ïª D« Ä« F¬ q¬ †¬ ¬¬ ׬ š­ Í­ ©® Ò® Ù® à® ç® î® õ® ™¯ ¹¯ ° $° ¾° Ö° á° ù° V± ¤² ´ Ñ´ …¶ ˜¶ ø¶ · /· "¸ ›¸ žº x½ “½ £½ ν ã½ ê½ t¿  | †Ã –à žÃ Äà ØÃ èà ïà üÇJÄ öÅ %Æ ²Æ NÇ «È ¾È ¢× Ç× èÙ qÚ ôÚ ÖØ \Û ÏÜ uÝ žÝ âÝ ß 8ß \ß dà xà ¥á Åá oâ ä ¨Ð $ä æ !æ £ê Ïê «ë $ì +ì äì rí ­í î bî µî îî ‰ï $ð ð …ñ üñ Éò ó &ó >ô Mô ^÷ qø ø Åø òø ýø xù »ù íù 1ú cú 0û <û šû ü Áü þ þ ¡þ Uÿ úÿ Ô 6 { Ž Ð `øP _ o — ˜  Â À á ù / °S°BøC c Qøí Õ g @ W ð x É ß  c q  ü L u  ¥ Ê Â I b w ‘  — ¶ Ù ô  & $ ! 4! T! &" S# q# Š# Ÿ# ¹# Í# ç# % '& <& M& c& Á& ž' ¯' É' ß' ú' ( ­( h) †) –) «) ¼) Ö) «* Ê+ ã+ ø+ u, - &- 8- . . p. 3/ b/ 0 Š0 ³0 Ã0 Ó0 V1 Á2 X3 z3 4 94 ˜4 ú5 6 Q6 ˆ7 Ñ8 ×9 : < ô< = += h= = ®= ú= > 1> A> \> > ™> ¬> Ñ> æ> ? K? [? v? §? »? Þ? @ 4@ a@ ­@ Á@ ä@ !A @A yA ×A ñA B oB „B ¦B ÄB ûB VC zC ½C *D ?D dD ¤D ÊD I /I dI ÕI €J ÜJ K K VM ÜN O àO P ßP TQ ÔQ åQ GR îR S ˜S ·S ÖS öS ÏT V V 8V VV oV ƒV SW «X íX Z #[ 4[ _[ ´[ ò^ ^_ ë_ ` a )a öa 0b Gb £b åb ‰c ãc )d Ýd .e ‚e —e ¹e Qf [f f (g ¶g h ¬h æh ²i ¹i Ài Çi Lj tj ÷j Mk Ók %l ƒl Úl ál èl ýl m Pm †n æn Eo Ño Øo Tp ˜p q Çq r yt (u Iu åu ºv 3w ëw ?x Êx ñx xy “y Äy sz 8{ ½{ {| | ô| E} Y} y} ã} ç~ ü û€ ç …‚ ß‚ ƒ 0„ ‚„ ²„ … t… Û… ð… h† µ† ô† &‡ s‡ ²‡ ¾ˆ *‰ ‰ Š‹ A Ž ¼Ž ÒŽ / ^ ‘ Ÿ g’ ” .• ו ç• – Ö– ï– 6— Á— ê— $˜ Y˜ ~˜ G™ S™ ²™ û™ ªš › g› $œ eœ œ •œ Ñœ  / ž .Ÿ ±Ÿ 3  ;  ^  ¡ ¡ j¡ =¢ —¢ ž¢ á¢ é¤ û¤ (¥ –¥ å¥ ¦ :¦ L¦ }¦ 7§ K§ ¤§ ¨ 2¨ S¨ ë¨ 6© Ê© Cª Jª ïª ‹« ¬ 3¬ ?¬ p¬ ¿¬ ߬ ú¬ €­ ® ® Ì® "¯ t¯ ʯ ¦° Ȱ ê° ± `² ™² Ʋ ‰³ Ÿ³ س X´ •´ ž´ µ bµ ¶ v¶ B· Ü ¸ ׸ «¹ ˹ Dº wº Ùº (» 9» n» ½» λ ÷» ¼ 8¼ O½ ¾ W¾ h¾ Ÿ¾ ý¾ ¿ ¿ 1¿ r¿ ¥¿ Õ¿ À 3À À ÖÀ ýÀ /Á uÁ ÞÁ  D h ¥Â ¬Â ͠렾à :Ä ÒÄ .Æ ¢Å ’Æ QÇ žÇ üÇ È È È ÑÈ @É NÉ ’É ÊÊ Ì .Ì 5Í RÎ òÎ Ï ÆÏ *Ð sÐ ÜÐ lÑ Ò LÒ ¿Ò ùÒ tÓ €Ó õÓ Ô :Ô ‹Ô œÔ ÛÔ âÔ |Õ ®Õ ¼Ö öÖ ”× á× dØ ›Ø Ù oÙ ëÙ dÚ áÚ Û ¢Û ¼Û NÜ ‰Ü +Ý ’Ý ÇÝ ¬Þ ÐÞ 'ß 0ß Kß Æß "à 5à õà ‡á â jâ °â ‘ã Ðã ×ã }ä õä hå ·å æ (æ Ñæ ç è Lè Øè àè !é ·í ìí î î î 3î Kî Sî eî Êî Üî ÷î Lï sï ÷ð »ñ ×ñ åñ ò "ò 4ò Fò ò ¶ò àò ó 6ó aó ¿ó àó ô 6ô Wô Œô ¼ô Óô Sõ bõ ™õ qö ½ö ÷ $÷ a÷ æø 7ù "ú ¥ü Úü áü øü ý ?ý Lý ^ý uý ¢ý ¾ý ÿ òÿ úÿ \ v ™ Õ S }  Í ø # N ƒ Ë Ý 1 Q | ‰  ¤ Î  > K l  ¸ ÷ 6 > A ®  Þ ù 4 ­ ³ ¾ Ó  _ z ™ ª _ s F p : ¤  „  ¤ Ü Ü ! *! Q! f! è! ø! ‹" —" Ò" ,& ´& ' B' ¨' ˆ( ) ) >+ È+ Ô+ e, ¬- §. S/ Z/ ñ/ €0 ›0 1 1 £1 2 :2 Š2 ¼2 £4 Ó4 ê4 5 ‡6 6 ð6 7 C7 €7 À7 Ë7 8 d8 ¶8 à8 9 û9 t: ; ; &; H; W; Í; Þ; W< ^< e< Â< ë< = K= í= 3> ˜> ? ? K? Z@ °@ É@ Ü@ ä@ ò@ B 8C LC £C 3D ÆD ÓD ßE F %G 0G ìG #I BI âJ BK ´K ÆK L ýL ÷M @N ZN pN ÑN oO P (P ËO S °S ·S ¾S ÕS ÜS äS T T QT ‰T ¶T ÁT ÒT ùT U U zU U »U GV aV €V ›V ÆV ÍV ÔV òV CW hW ÀW X )X ›X ¿X ÆX ÍX ÔX ÛX âX éX ðX ÷X þX #Y Y IZ VZ ]Z dZ kZ rZ ¢Z 3c Øe ëe 9f Lf mf uf Žf •f ¯f Æf g Ëg ýg .h Ph Yh ¢h Äh #i ld ×d çd ÷d Pe `e 7e 'e #d |d Œd ¥d Cd Sd 3d ¾d ‚e  k í ) M U f r! 1" é# /' n' j( ( Ø( û( ) ,* * à* y+ ¸+ ä+ , >, ‹, ¬, à, ú, .- ®- Ú- ô- ÿ/ 0  0 1 •1 *2 ª2 W3 Ö3 À4 g5 ™5 Ù6 ä7 8 ì8 -: ¤: 0; í; < [< ©< Ä< ü< = C= b= €= »= Ä> à> ? ? X? —? ä? ù? m@ Ö@ &A :A tA A ÚA /B |B ÉB FC TC D TD xD D ¿D .E oE æE 'F ÜF JG óG IH ŠI ©I ÃI ÜI J }J ÄJ (K >K KK šK õL 8M “M ¦M N ˆN O cP ¿P Q ¯Q gR uR ÒR \T —U ;V ºV ëV tW ÉW HX —X ÞX CY dY ¢Y GZ jZ qZ Z ßZ <[ M[ Ÿ[ ¦[ 7\ V\ k\ ] "] ] ì] ÷] š^ ç^ _ -_ A_ Î_ êa œb »b ±c ¬d "e 2e we f 4f }f Sg ›g ¾g ág h &h `h Þh ïh ÿh ¥i j Bj gj Tk œk l Il }l l l :m ]m …m ¤m øm +n wn ƒo Èp ?q àq (r nr s ¶s äs _t 'u bu ¾u v Bv av “v Ïv `w ‰w x x ˆx y ny y îy z ]{ | } (} ¦~ w Ê Ä‚ ƒ 2„ O„ a… y… ¥… Ñ… è… û… '† :† M† `† s† †† n‰ ²Œ + : ] g u ¨ EŽ žŽ ' < Š ê N‘ ¡’ í’ '“ œ“ ­î„” Δ ê” ,• ¸• – &– ®– — >— ]˜ ®™ ¤š g› €› £› ×› ì› û› .œ û P  h  ¡ S¡ l¡ Ñ¡ o¢ {¢ ¢ £ #£ ^£ Ù£ ¤ 2¤ •¤ ¦ ¦ ¦ (¦ «¦ ò¦ § § C§ {§ š§ ´§ ,¨ ù¨ /© Y© x© æ© « ú« …¬ ç¬ ­ q­ ·­ Э ® T® E¯ y¯ ° 1° q° #± !² y² «² ‡³ ½´ %µ Ƶ +¶ ж æ¶ · h· {¸ ¥¸ Ð {¹ Þº éº õº ,» à» _½ ù½ (¾ !¿ °¿ NÀ ÆÀ Á 'Á zÁ ÖÁ ðÁ ( = q Ô ‘Ä ÆÆ 0Ç 7É ŒÉ ÑÉ Ë #Ë bÍ ¹Ï Ð LÐ _Ð ŒÐ ÐÐ kÒ @Ó ZÓ fÔ ¬Ô ³Ô ýÖ £× ´× Ø ²Ø ¼Ù Ú •Ú lß Žß >à ðà Úá ˆâ sã Æä ¯æ Ýæ Cç Íç ïç è 5è dè ¼è é ®é Ûé %ê ;ê cê ~ê Çê :ë Lë ¬ë fì ¥ì £î ôî 5ï Zï oï Ôï ð Mð bð }ð wò `ó öó .õ ö ¢÷ ¹÷ ø Cø uø Ãø Kù íü uý ýÿ `ÿ Éþ G  ¤ Ù Ñ ö = { B Œ «  . ù h  B W p „ – « À Ì Û ì ø  A k … ¨ k2 …2 •2 4 ®4 «) 55 ™5 6 É6 ä6 '7 b7 ¡7 Ê7 ×7 8 `8 }8 ¥8 t9 I: ¬: l; ¸; < P< z< \= œ= Ï= 6> Ì> á> ? i? I@ w@ ¶@ A CA C BC oC “C ¾C D D yD ¦D ÍD éD E &E 8E WE zE óE }F ˜F »F èF G *G ‹G ëG H +H áH †I µI WJ ^J ÙJ „K L YL `L «M ÆM $N FN vN ðN O $O YO €O  O ©O ÇO ¼P Q Q bQ uQ ÃQ îQ R R +R €R ’R ëR þR LS S ‡S žS ¥S ½S T T ,T CT [T qT ƒT CU VU ÔU V MV VV ŸV éV ÿV W W 3W uX ˜X ÊX åX òX VY oY †Y ÐY éY FZ VZ }Z åZ [ ([ b[ ì\ _ âe 5f ¶i eh Ïi æi j h kj j ×j Oh üj 0k ’k ûk 6l ™h kl Èl xm ¤m ·h Ém ým tn ¡n Ön /o ™c Ho Ëo Óo âo ~p q .q Rq gq r "r { š{ ¾{ È{ ß{ )| U| ó} ú} ~ ~ 5~ ¦~ ö~  n } Š ¯ (€ W€ ˜€ »€ þ€  “ Û† c‡ wˆ Ý‹ ç‹ i— ¨— Q® d® ²® Å® ¯ l¯ ¯ ͯ ௠°° Y² ê· `¸ ¸ ›¸ Þ¸ ¹ *¹ n¹ D» ˜» ä» c¼ Ò¼ ÿ¼ "½ -¾ ‰¾ RÀ ¢Á 5 Z à %à [à cà ‚Ä ¥Ä ÀÄ ’Å ÏÅ þÅ gÆ ”Æ [È nÈ ‰È È —È žÈ ÄÈ ËÈ ÒÈ É .É HÉ vÉ ²É ¹É ÀÉ ÇÉ ÎÉ ÕÉ ÜÉ ãÉ êÉ ñÉ øÉ ÿÉ Ê Ê Ê Ê "Ê )Ê 0Ê 7Ê >Ê EÊ `Ê gÊ nÊ uÊ |Ê ƒÊ ŠÊ ‘Ê ¥Ê {Ë ‚Ë ‰Ë £Ë ¹Ë ÀË ÇË ÎË ÕË ÜË öË ‹Ì ’Ì ™Ì  Ì §Ì 4Í CÍ JÍ [Í kÍ £Í ØÍ Î QÎ dÎ ›Î EÐ ’Ð ØÐ æÐ 6Ñ `Ò ŒÒ ±Ò ÞÒ Ó JÓ ~Ó µÓ ÈÓ åÓ ûÓ Ô !Ö É× jÙ %Ú ÈÛ Ý è Âè bé ‰é 2ê †ê î $î :î Uî „î ¹î ï jï ‚ï ñ tò ò ˆò žò áò ƒó Žó àó ô 8ô ªñ =ñ •ô $õ šõ ¢õ ¾õ Hö …ö ”ö °ö Ô÷ ø ø Aø \ø hø ø öø ú uú |ú Åú áú ‚û °û ü Âü Ôü 3ý sý õý Xþ ÿ Mÿ ’ÿ ¥ÿ Ðÿ õÿ AÇ7”× L~Ýxîƒgnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìó%ip¦ ‹ – ¦ ›  ® 5¨/²/Ì/6"6s88‰88©8²8Ã8Ë8ì8PÁ99/9<9I9z9¬9Â9ý9:_:¤:µ:½:æ:$;_;};µ;ú; <<©<Q<=k=|=ï=F>W>c>4Ãp>>‰>–>»>Ç>Ö>÷>'??vÏ@d@}@–@ù@¥A´AÔAB,B8B‹BèB:CÏC'DPD°DÅDØDâDéDñDEE-E´R´a´o´~´´¾´È´×´ê´µ"µKµ¥µÁµKÌöµ¶8¶K¶€¶…¶›¶½¶¶Þ¶ ·;·¨·¸¸-¸j¸t¸¾¸¹a¹†¹š¹í¹*ºwº«ºº)»q»¥»¼!¼_¼‹¼ؼ ½<½f½§½Ó½1¾n¾~¾À¾ô¾Z¿±¿ÀNÀÂÀÁlÁ«ÁÉÁ÷ÁÂAÂe–ÂÏÂù ÃÃ%Ã5Ã×ÃàÄýÄ.ÅŸÅèÅNÆlÆ~ÆùÆ”ÇÉÇÐÇçÇåÈ&ɯɶÉÏÉáÉëÉÊ;ʘ˫ËúËOÌX̔̽ÌçÌ ÍqÎ|ΆάÎLÐYÐÑÑrÑѣѪÑéÑ#Ò?Ò`ÒtÒÂÒÏÒóÒúÒ)Ó6ÓTÓÓÓÁÓÈÓÕÓçÓÔÔjÔwÔ›Ô¢Ô¯ÔÁÔâÔöÔ?ÕLÕjÕqÕ©ÕÂÕðÕ ÖÖ/ÖJÖuÖÖžÖ ×:×èרXØe؃Ø$ÛoÛÁÛèÛ_ÜïÜÝBÝKÝ{Ý‘ÝóÝ%Þ“ÞßÞCߓߺßàBà]à¦àÆàãà8áöáâ4â`âŸâ@ã÷ãMä›äå2åèJèžèôè5éÆéê{êkë{ë÷ëóìÿì—í¤íèíîï0ïBïeï…ïÁïöïýï ððAîVððòFòYòäòó*ó¡óªþÿÿdÿwÿœÿÑÿßÿýÿ†»Äâû09W|±ºØý2;Y³¼Ýõ¡¨Ã×àò V i m&L•?œ?BM/M4OOO‰O6Y“ZÌ` j|oì!z*z0l00‹0Û0õ01%11191ä12242“2Æ2Ú2I3Ð3 4-4”4 4ó4=6Ô66q7°7*8g8¡8ë8 9'9.959s9ª9Ã9Ð9â9é9u;};•;®;¼;ê;ñ;þ;<<&<3<F<S<d<n<xÊ ½<Þ<å<=ƒ=‹=•=Ã=> >(>=>G>Y>o>§>Ë>è>ò>?$?^B;EÒEFF\FG&G-GÚFTGtG‚G GÂGNSNnNvNÀNÉNÖNìN-OÆOíOP'P;PMPWPfPoPwP„PP¯QôSiT’T¶T½TàT»b»m»–»°»Ë5Í5ÎSÎQÏúÏmюѕѠÑÒ¹Ñ'ÒMÒeÒUÓfÓ‘ÓµÓÊÓàÓ?ÔFÔÔ±ÔºÔèÔþÔJÕQÕŠÕ¼ÕÅÕóÕ ÖHÖOÖkÖ€Ö‰Ö›Ö±ÖðÖ÷Ö×(×1×C×Yטן׻×Ð×Ù×ëר@ØGØcØxØØ“Ø©ØèØïØ Ù Ù)Ù;ÙQÙٗٳÙÈÙÑÙãÙùÙ8Ú?Ú[ÚpÚyÚ‹Ú¡ÚÛÛ.ÛNÛ\ÛxÛŽÛÓÛÚÛøÛÜÜ*Ü@ܟܦÜÍÜíÜûÜÝ-Ý[Ý|ÝÅݬÞÛÞøÞßßßßà8à@à;éQéÚé¼éêïéPê¦êÞê·ì}íÞíðíøïð†ðñ'òTò¦òóŽóþóõôÀõEöÃöÊöÑöØö ÷Y÷t÷ž÷Ú÷Aøùø!ùdùyùÀùúOúVú^úkúŠúšú°ú¿ø•ûý²ý2þaþþÏý¯þ7ÿqÿÙw‚Ë$< t™-BQÇ΄¨³ÒC f q | « ù  J Æ Ü K ˜ Ù p ª ß ó *4UÁ̰»À× V -t„K¢ºÍö/чƒŸ"¡íÇ: ›aïJ¸p@æÈ\ Áæ d –!"·"<&w&¼&Â&ß&˜'&(P(y'Ó())S)[)¡)»)Ý)ë)*+y+†+®+f,Í,ä,ï, -h.m.Ô./y/Ë•ƒ111?1a1À1.X2v2‡2ï2¾3É-!4â45d5–5L6n6Ë6‚7Â8Ý89g;«;°;µ; >>>!>(>O>V>]>d>??(?8?O?a?t?|?“?£?±?Ã?Ö?Þ?õ?@@%@8@@@W@g@u@‡@š@¢@¹@É@×@é@ü@AA+A9AKA^AfA}AA›A­AÀAÈAßAïAýAB"B*BABQB_BqB„BŒB£B³BÁBÓBæBîBCC#C5CHCPCgCwC…C—CªC²CÉCÙCçCùC DD+D;DID[D¿D×D˜DEgEéEkFIiIpI­IOI¡K)L4L;LpLÏLzMÃMúMNˆNN–NN¤N«N²N¹NÀNÇNÎNÕNÜNãNêNñNøNÿNO OxO‰OþO#PXPhP¾P Q/QŽQ”S¿S/_t_‡_—_Ü_ï_÷_4`C`T`f`3aYØaæaôabðZ'b9bKb…b®bcµc‚Wócd…död e(e7ee°eÉeáe$fef’fÈfòf gPgqgg’gµgÃghOh²hR/Ui“i i±i¶i½iÄiËijÇjÎjÕjÝjäjójbk²ÝikkÅkÌklFlMl³lÅlm0m;mŒm´mºmÎmúm n„nn–nnÆnùn ooo&o7o‰oœo¯oÎopOpQqYqyqšq¨qÌrÓrs s&s1s`s‰ss¿sîsõsttKtRtmtDuqu~u©u/vZvˆvÇvçvøv‡wÇwXxÖxVyE{L{S{g{ Ì{f|Ž|ž|ë|_~o~v~}~„~‹~’~‹€Á€!Iü‚S‚Ü‚[ƒу „ß„„‡”‡ˇþ‡‰Š~‹º‹é‹&Ž6Ž‹ŽÇŽT ]·•’-’Ë——™´™šMŸÇ¢¼¦æ§I§£§Û§û§ÿ¨3©Ž©ô©ª«U«M­‚­š­æ­þ­I®ô¯°'° ±(±G·q»ûÝ»;¼b¼ò¼ù¼½½M½“½å½»¸ò½†¾Ú¾ ¿¿J¿ù¿¨ÀüÀ’Á-‚Â×ÂÃUÃFÄÂĹÏÄ.ŋŖÇÙÇõÇÈ$È¢ÈÉSÉ|ɭɹÊ(ËÌ7ÌÄ̰ÍáÍpÎ&ÏbϿϸÐÑžÓæÓÔ>ÔnÔ¬ÔÊÔ}Õº×ØSØŸÛŽÜÒÜpÞºÞg߃ßÉßàá ááááNá¬áââÒâkãã–ãÓã ä$äç2éçéûé¶êèë!ìoìÂìÜìí¥í¬íï1ïŸï?ðFðð¾ðñ'ñyñÖñéñ òOòYò’ò½òçòó†óìóUôïô.ö9öYöüö÷H÷P÷X÷`÷h÷t÷{÷ø øúø„ù3úSúõúCû“ûü ürüü»üØü(ýgýÇýðýþ7þ\þªþšÿ_f›Çïý?FO§Ö?K»ù0Kg~?|²ÃçýK¤·$Ry‚°  < V r | ™ » Ö n þ ‡ ³ 6 m  þ2i™Ðÿ0c©ÄØóIyËá"GWœ¯Îà,FY…{‚‰vU©|/ý*<†›ý !?!t!Ð!%"="ã#ê#ô# $G$Õ%.&A&&è&û&@'S'ù()))))#)*)Y*X-’G›G­GÃG5JcOcªcÏcícöcd,f5fOf«f¾fg,gh4hFhEici;lDlVll•l»lÎóßlül!m nnPmXnn•n oIo€o“o$q-q„q—qåqøqrRrr©r·rHtQtot‡t7u@uRuhu`xwùx2yüz{pz9{W{m{9|B|­{v|”|ª|.}A}t}®·Õëû@€S€uÐW‚‚•‚«‚ƒz„…’…ΆFŠòŠG‹•‹´‹ŒBŒŽGŽNŽzŽ…ŽÄŽߎExš¡ÖÝä'cqp‘®‘’$’;’p’Õ’ž“½“*”k”{•º•ó•– –3–@–L–W—^˜˜Á™±—šL›¿›†œ3ž{žåžŸŸ(Ÿ–Ÿ¡W¡p¡‘¡Ú G¢Σ¤+¥Ý¥V¦%§–§µ§¨û¨,©7©«R®™®Ï®þ®F¯Y¯¸³̳ô³f´¥´Ò´µ3µtµ$¶‡¶±¶¸¶Á¶é¶ò¶N·U·i·t·É·Õ·"¸8¸J¸\¸¸ž¸¥¸½¸ظ@¹ƒ¹°¹·¹¾¹Ź̹ºEºÞºîºûº»»f»i¼Á¼”½›½¶½ʽԽ콓¾¦¾¼¾ÀÚ¾ñ¾ ¿E¿O¿s¿±¿è¿ÂÂhÂ#Ã9ÃMÃ}ÿÃòÇ~ÈsÊœÊÚÊùÊqË|Ë9ÌD̷̟̉̔Ìÿ̈ΓΠÑ.ÑeÑÄÑ\éÍÑ'Ò ÓÓ&ӌӖӱÓ×Ó~Ô)ÕPÕrÕ”Õ¢ÕÄÕ¥ÖLØõØÙ)Ù«ÙÐÙÚ+ÚªÚÛ(Û~Û™ÜÝ'Ý[Ý`Þ¿àæ3áÔâxãè!èQè’è^éçéVê`ê˜ê%ëÁë÷ë#ì.ì?ìhì³ì7í^d¯íÍíÐïðèðúð ñbñÐñEónóóô­ô»ô2õ=õHõwõÜõíõ¬öb÷€÷Ž÷2ø²ø9ù’ùÅùú-ú_úmúúûvûˆû½û#ü.ý¢ýyþ¡þä~ÿ¿ l¥îýDÜ!<M¢­S˜Jb=›Ào§î\ {  n w … – ¡ Ü $ _ Ä D ‹ µ è ‘™í?p¼á;V•ÕOzØó¡³~þ\s õ.ä~·ÐñOéi— ×þH]™Ô{’ÃÏë)_™ÒßßînœÂOŽ«ö I  Ì ã !6!¶!“"ê#!$($µvýw3$:$gÓ¨>Ï>Ú>?2?Z?}?Ê?Ô?è?|@Ž@Ÿ@æ@AA‚AžA´AB@B[BCKCàBzCŸC D\D)EnEÛD©EÿEóFG%GÄGGæGH™HþH%IÎHNI†I(JJ]JîJK´JNKK‘LMLºLòLºM”MN.N×MWNNfO1OˆO¶O;P]PxP-QTQýP}QµQ‡R®RWR×RS±SÃSÔST7TMT·TàTU¢UÄUòU $')6EQRV]mos!x"$…%Š&Ž'‘(’)–*˜+œ-Ÿ. /¡0¢1£2¤5¥6¨7¬9±:¹>½CÅEØFàGâHãIêKñMøOüPþQÿRSTUW X YZ[\^abd e!f#h)i+j,k-l/m0n1o3p6q9r=sAtCvJwKxLyMzN|Q}R~TU€W‚^ƒ_„a…b†dˆiŠq‹rŒsŽz{ƒ‘…•‹˜Œ™›‘ž“¦™È›ÉŸÚ¡ø¢T¨Z¬\­e²g¶‰»HÀ{Â}ØÅòÇ ÉÑÒÓÔÕÖרÙÚÛÜÝÞkßms*{0|1~45€67‚8„B…C†E‡FˆG‰HŠI‹KŒLMŽNT‘U’W“X”Y•[ \¡`¤a¦f§g©hªi¬j°m³u¸vÞ|ß~à€â†ãˆäŒåæ’ç–èšê¢ë¤ì©í­î±ïµð·ñ¼òÀóÄÈ Í Î Ï ÐÑÔÖØÚÜÝ!ç"è#é$ê%ë&ì(í+ö,ø.û/ý5;=>?@AC DEFGH!I%J)W+Y0Z6[;\@]B^H_M`RcT°VÄWdmexfygzh{i~j€k‚l…mˆnŠoŒpq‘r“s–t—~™ ¢¢¬¤±¦¶§·©¸ª¹¬º­¿®Â¯Æ¶5·=à²â´µ¼ÃÆÇÈÉÊ!̋Ќגޔã«í­ò¯°±²³´µ¶· ¸ ¹ º » ¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌ%Î(Ï*Ð+Ñ-ö.ø1ù4ú:û=C%S&T(Y)f*n,s1x3y5~AƒB‘DœE¥F§G­H±I²J´K½L¿MÅNÉOÊPÌSÐUÑVÒXÕYÖZ×[Ø\Ù]Û_Þ`ßaäbåcêdí‚÷…û‹ü”ýŸ ¡¢£¤¥¦§¨±´ ¿$Ø(Ù+Û.Ü/Ý0Þ1â2æ5è8é9ê:ë;í<òAóE F G P UL XM Yk ^l _o cq dz e} i k€ m“ p” sž v  x¡ {­ ® •¯ —± ¢² ¤³ ¦´ §µ ©¶ «· ­¸ ²¹ ´º ¶» ¸¼ ¹½ »¾ ½¿ ¿À ÄÁ Æ ÈÆ ÉÌ ËÎ ÐÏ ÝÐ æ[ î^ ô_ ö` ùa ýb c d e f g h i j k l "m %n )o *p +q 0r 3s 6t 9u =v Aw Ex Hy Kz L{ M| Q} S~ T U€ V W‚ Xƒ Y„ Z… [† aˆ cŠ gŒ iŽ k o r² ~» ޾ “¿ •Á ˜ šË Î  Ô ¤Ö «× ¯Ø ²Ú ÀÛ ÎÜ ÚÝ éÞ ëé ü þ      3 '5 2M 4O 9P <Q ?R AS CT FU IV KW MY R[ Y] ^_ c` ia mb rc xd }e †f g ”h ªi ¬j ¯k ³? µL ¶V ·W ½“ ĉNjЌÑÕŽÚÛÜ‘à’哿”ì–õ—÷˜ù™úšû›ýœÿ ž Ÿ ¡ ¢ £ ¤ ¥ ¦ § ¨ © × Ù Ú" Û$ Ü' Ý) ä4 æ8 ç9 è< é? ê@ ëC ìF õJ ÷P úQ JR LY SZ X_ qk sq vr ós ôv ö{ ÷ ù‡ úˆ Š !Œ R Z” \¬ ]­ ^® _² `³ 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Ù {Ú |Û }Ý ~ß á €â ã ‚å ƒè „ê …ë †ì ‡í ˆï ‰ñ Œò Žö ø û ‘ý ’ ” • ¸ ¼ ¾! Á( Ã) Ä* Æ1 Ú6 à8 ø< ù= H I GN HP KU LW NZ O\ Ù_ Ú` Üd Þe àf j m r w |  † ‰ Œ ’ ˜ ž ¡ ¥ © ­ ² ¹ À  Ä Æ È !Ê $Ï &Ð )Ñ 9× :Ú ;Ý <Þ >é @ù Aû Bü Cÿ D E F G H I J K L M N O! P" Q% R' S) T, U0 V3 W6 X9 Y= Z@ [A \E ]H ^R aU c^ d` eb fe gi hm iq jt ku lw my n| o€ p„ qˆ r‹ sŒ u w’ Ÿ”  ˜ ¡œ «  Þ¤ í© î® ï³ ð· ñ» ò¿ ó õË ö× ÷Ú øß ùà úæ ûì üõ ýû ÿÿ          {F II ‚J ”O •\ ™_ ›j œk m žn Ÿp £w ¦x §y ¶ ¸™ ¹ º¡ »¥ ¿© ÁÊ ÂÎ ÃÑ ÄÓ Å× ÆÛ ÇÞ Èà Øä Úó Ûõ Üù Ýû èÿ é ê í" ï: ð> ñ@ òD óH ôJ N X Y e i k o s u Ry V~ X† Yˆ ZŠ [Œ tŽ v” w• x– y— z˜ {™ |š }› ~œ  €ž ¨  ª¥ ʦ « ]® d¯ fÍ gÏ hÐ iÑ jÒ kÓ lÔ mÕ nÖ o× pØ qÙ rÛ sÜ tÝ uÞ vß wà xâ yä zå {æ |è }é ~ê ì €ï ñ ‚ó ƒô „õ …ö †÷ ‡ø ˆù ‰ú Šû ‹ü Œý ÿ Ž‘’“”• – — ˜ ™š›œž¤!¥$ª)µ*·+¸Ó»Õ½Û¾Ý¿äÀðÁõ]^)_-b0e4ƒ8…?©B¬E®H¯JµK·P¹RºS¼UÂVÙ^ìtíxA~³…µŒÇŽ'•P˜™™ž›ÌžÍ¬Î²Ï·è7êTí_ïhñlómõn÷sùxûü”þš¨±·»¿ÆË Î1567BMNOPSTUV X!Y"Z#[$^%_&`'a(c)p+{,|-}.€/…0ˆ1‹2˜3³5¹6º7»8¼9½:¾;¿=Ð>Ò?Ú@ïBýCÿDEFGHI J K L MNOPQRSTUVWX!Y"Z#[&\']1_8`;a>bBcCdFeIfMgNhRiTjŒkœl m¥n¨oµp qCrOsYuavcwexfyhzj{k|l}n~pq€su‚vƒw…~†‡€ˆ‚‰ƒŠ„‹…Œ‡ˆŽ•§‘ª’«“¬”­•®–±˜´™µš¶›·œ¸ÀžÃŸÅ¡Ú¢Û£Ü¤Ý¥Þ¦ß§à¨á©âªã«ä¬å­æ®ç¯è°é±ê²ë³ì´íµî¶ï·ð¸ñ¹òºó»ô¼õ½ö¾÷¿øÀùÁúÃþÄÅÆÇ È ÉÊÌÍÎÏ Ð"Ñ'Ò)Ó+Ô,Õ.Ö3×7Ø>ÙEÚPÛRÜUÞeßhàkápâwã|äå…æ‰çè–éšêžë£ì¦í§îªï­ð²ñ¹ò¾óÃôÇõËöÒ÷ØøÜùàúåûèüéþÿ    ! " $&(*+-./02=>?@ACEGI K!L"M#N$O%P&R'T(V)X*Y+[,\-].^/`0k2p4u6|8…:Š<”=•>–@™A›BœCžDŸE§F´G¼HÁJÇKÈLÉMËNÍOÑPÒQÓRÕS×TÛUÞVäWæXéYð[ó\ö]÷^úžû·þ¸¹È ÏÑÒÓÕרÚÛÝ"Þ#ß%à&á(â*ã/ä2æxç{è|é~ê€ë‚ì…í‡îˆï‰ðŠñ‹òŒóôŽõö÷‘ø’ù“ú”û•ü–ý˜þ™ÿš› ¡£¥§ª¬ ­ ® ¯ ° ±²³´µ¶·¸¹º»½¾¿ÀÂÊÌ Ï!Ð"Ñ#Ó$Õ%Ö&Ø'Û(Ü)Ý*ß+á6â7å9é:ê;ë<ì=í>îFïHôLöRùSúUýWXYZ acg$injokplqmrnsotpuqvrwsxtyuzv{w|x}y~z{€|}‚~ƒ„€…†‚‡ƒˆ„‰…І‹‡Œˆ‰ŽŠ‹Œ‘’Ž“”•‘–’—“˜”™•š–›—œ˜™žšŸ› œ¡¢ž£Ÿ¤ ¥¡¦¢§£¨¤©¥ª¦«§¬¨­©®ª¯«°¬±­²®³¯´°µ±¶²·³¸´¹µº¶»·¼¸½¹¾º¿»À¼Á½Â¾Ã¿ÄÀÅÁÆÂÇÃÈÄÉÅÊÆËÇÌÈÍÉÎÊÏËÐÌÑÍÒÎÓÏÔÐÕÑÖÒ×ÓØÔÙÕÚÖÛ×ÜÙaI$ÒJ$ÔK$ÖL$ØM$Ù^$Þa$ãc$åe$çh$ÿi$j$k$ l$m$"n$%o$)p$+Š$,‹$0Õ$5Ö$9Ù$:ã$Aä$Dæ$Eè$Ké$Më$Oì$Qî$Sð$Xñ$Zò$aô$fõ$k÷$‚ø$ƒù$„ú$…û$†ü$‡ý$ˆþ$‰ÿ$Š%‹%Œ%%Ž%%%‘%’%” %– %— %™ %š %›%œ%%ž%Ÿ% %¡%¢%£%¤%¥%¦%§%¨%©%«%­%®%°!%º"%¼#%¿$%Á%%Ä&%Ç'%È(%Ê)%Ì*%Ï+%Ñ,%Ô-%×.%Ø/%Ú1%á3%æ5%í7%ó:%ô=%õ?%ùA%úC%ûE%ÿG%I%K%M%O%Q% S% U% W%X%Y%[%]%"^%%`%1a%3b%5c%7d%9e%;f%=g%@h%Ci%Fj%Ik%Ll%Nm%Pn%Ro%Tp%Vq%Xr%[s%^t%au%dv%gx%xy%yz%€{%‡|%‰}%Œ~%%‘€%’%•‚%—ƒ%š„%…%Ÿ†%¡‡%¤ˆ%¥‰%¬Š%³‹%µŒ%¸%»Ž%½%¾%Á‘%Ã’%Æ“%É”%Ë•%Í–%И% ™% š% ›% œ% % ž%" Ÿ%&  %* ¡%0 ¢%4 £%; ¤%B ¥%E ¦%I §%N ¨%S ©%X ª%Z «%\ ¬%a ­%h ®%m ¯%t °%y ±%{ ²%€ ³%‡ ´%ˆ µ%Œ ¶% ·%“ ¸%— ¹%› º%¡ »%¥ ¼%ª ½%­ ¾%° ¿%³ À%µ Á%· Â%¸ Ã%¼ Ä%À Å%Ä Æ%Å Ç%È È%Ë É%Ò Ê%Ô Ë%Ù Ì%Ý Í%á Î%æ Ï%è Ð%ê Ñ%ì Ò%ð Ó%õ Ô%÷ Õ%ú Ö%ý ×%!Ø%!Ù%!Ú%!Û%!Ü%!Ý% !Þ%#!ß%'!à%,!á%1!â%6!ã%8!ä%:!å%?!æ%F!ç%K!è%R!é%W!ê%Y!ë%^!ì%e!í%f!î%j!ï%m!ð%q!ñ%u!ò%y!ó%!ô%ƒ!õ%ˆ!ö%‹!÷%Ž!ø%‘!ù%“!ú%•!û%–!ü%š!ý%ž!þ%¢!ÿ%£!&¦!&©!&°!&²!&·!&»!&¿!&Ä!&Æ! &È! &Ê! &Î! &Ô!&×!&Ú!&à!&ã!&æ!&é!&ê!&ë!&ì!&í!&ð!&ó!&õ!&ø!&ú! &ý!!&ÿ!"&"#&"$&"&&"'&"(&")&$"*&'"+&*",&-"-&/".&5"/&7"0&9"1&<"2&>"3&?"4&A"5&C"6&E"7&H"8&M"9&O":&Q";&R"<&W"=&Z">&]"?&`"@&b"A&h"B&j"C&l"D&o"E&q"F&r"G&t"H&v"I&x"J&{"K&€"L&‚"M&†"N&Ž"O&“"P&—"Q&§"R&«"S&°"U&½"W&Ã"X&Æ"Y&È"Z&Ê"[&Ì"\&Î"]&Ñ"^&Ó"_&Õ"`&×"a&Ù"c&ï"d&ñ"e&ó"g&ü"h&ÿ"i&#j&#k& #l&#m&#n&#o&#p&#q&#r&"#s&$#t&'#u&(#v&/#w&7#y&:#z&;#{&<#|&=#}&>#&B#€&E#&G#‚&J#ƒ&L#„&Q#…&Z#†&d#‡&s#ˆ&w#‰&{#Š&#‹&‡#Œ&‹#Ž&#&’#&”#‘&—#’&™#“&Ÿ#•&¬#–&®#—&°#˜&µ#™&¹#š&½#›&À#œ&Ã#&Æ#ž&È#Ÿ&Ë# &Ö#¡&Ø#¢&Ú#£&ß#¤&ã#¥&ç#¦&ê#§&í#¨&ð#©&ò#ª&õ#«&$­& $®&$¯&$°&$±&$²&$³&$´&$µ&!$¶&#$·&$$¸&'$¹&+$º&.$»&1$¼&3$½&5$¾&7$¿&9$À&;$Á&<$Â&@$Ä&J$Å&M$Æ&P$Ç&R$È&T$É&V$Ê&X$Ë&Z$Ì&[$Í&^$Î&a$Ï&c$Ð&e$Ñ&g$Ò&i$Ó&k$Ô&l$Õ&u$Ö&}$×&$Ù&…$Ú&‡$Û&ˆ$Ü&Ž$Ý&$Þ&‘$ß&—$á&›$â&$ã&ž$ä&¤$å&¦$æ&§$ç&­$é&°$ê&²$ë&´$ì&¶$í&¸$î&»$ò&¾$ó&Á$ô&Æ$õ&Î$ö&Ô$ø&Ø$ù&Ù$ú&Ú$û&Û$'Ü$ 'ß$ 'ä$'è$'é$'ì$'í$'ð$'þ$'ÿ$'%'%'%'%' %'%'%'%'% '%!'%"'%#'%$' %%'"%&'$%'''%('*%)'-%*'0%+'3%,'5%-'6%6'8%7'9%@'@%B'D%O'K%X'O%Y'Q%_'S%b'U%c'X%q'a%y'c%'d%£'e%Æ'h%Ç'j%É'l%Ñ'‡%Ô'Š%Õ'%Ø'%Ü'%ß'¦%â'©%W(²%\(¸%](»%^(¿%_(Â%d(È%e(Î%(Ò%‘(Ù%’(Ú%“(Û%”(Ü%•(Ý%–(Þ%—(ß%š(á%›(â%œ(ã%(ä%ž(å%Ÿ(æ%¡(ì%£(ò%¤(õ%¥(ú%¦(ý%§(&¨(&Ç("&É()&Ê(*&Ë(+&Ì(,&Í(-&ø(3&)5&)<&)=&)>&)B&)C&,)D&-)n&.)q&3)s&4)u&6)y&7){&8)|&9)}&:)&;)€&<)&=)ƒ&>)ˆ&@)ž&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)¸&[)¹&\)º&])»&^)¼&_)½&`)¾&a)¿&b)À&c)Á&d)Â&e)Ã&*Ä&*Æ&*ð&*ñ&*ò&*ô&*ø&*ü&*ÿ&*'*'*'* '*'*'*'*'$*'%*!'&*(''*0'ø*–'+¡'+©'+«'+­'+°'+³'+µ'+¸'+¹'+»' +½'!+¾'"+¿'#+Á'$+Ã'(+Æ'*+Ý'-+ß'0+à'5+å'7+è'8+ê'9+ì':+î'I+ð'J+û'N+ÿ'u+ (v+(+(„+(†+(‡+(ˆ+(‰+(Š+(‹+(+(ª+ («+!(¬+"(°+#(±+Ï)²+Ð)³+Ñ)´+Ò)µ+Ó)¶+Ô)·+Õ)¸+Ö)¹+×)º+Ø)»+Ù)¼+Ú)½+Û)¾+Ü)Ï+Ý)Ñ+ *ã+*ä+*æ+ *è+!*ê+"*í+$*ï+”*ð+•*ñ+–*ò+—*ó+˜*ô+™*õ+š*ö+›*÷+œ*ø+*ù+ž*ú+Ÿ*û+ *ü+¡*ý+¢*þ+£*ÿ+¤*,¥*,¦*,§*,¨*,©*,ª*,«*,¬*,­* ,®* ,¯* ,°* ,±* ,²*,³*,´*,µ*,¶*,·*,¸*,¹*,º*,A+,‚+Ž,†+,‹+‘,“+’,Ÿ+“,¦+”,«+•,²+–,·+—,¼+˜,Æ+£,Ê+¥,Ò+¦,Ó+§,Ô+¨,Ù+©,Ú+ª,Û+«,Ü+¬,Ý+­,Þ+®,ä+¯,è+²,û+³,ý+ó,,$- ,%-,&-,'- ,)-),*-.,+-8,--<,.->,/-@,0-A,1-C,2-E,3-F,5-J,6-L,7-N,8-O,9-Q,:-S,;-T,<-W,=-[,>-f,@-p,A-t,B-w,C-|,D-,E-‚,F-†,G-ˆ,H-Š,I-Œ,J-,K-“,L-˜,M-›,N-ž,O-¢,P-¤,Q-¦,Y-¨,Z-¬,[-´,]-·,^-¸,_-¹,`-º,b-»,d-8-j-9-l-@-m-A-n-B-o-C-p-D-q-J-r-R-s-X-v-d-w-e-y-f-z-g-{-h-|-l-}-m--z---‚-‹-ƒ--…-’-†-Ÿ-‡-¨-‰-»-Š-½-‹-¾-Œ-¿--À-Ž-Á--Â--Ã-‘-Æ-’-È-“-É-”-Ê-•-Ë-–-Ì-—-Í-˜-Î-™-Ñ-š-Ô-œ-×--å-ž-è-Ÿ-ó- -ù-¢-.£-.¨-.ª-%.«-&.¬-'.­-(.®-).¯-*.°-+.±-,.²--.³-..´-/.µ-0.¶-1.·-2.¸-3.¹-4.º-6.»-7.¼-8.½-9.¾-:.¿-;.À-<.Á-=.Â->.Ã-?.Ä-@.Å-A.Æ-B.Ç-C.È-D.É-E.Ê-G.Ë-I.Í-M.Î-N.Ï-O.Ð-P.Ñ-Q.Ó-n.Õ-r.Ö-s.×-t.Ø-u.Ù-v.Ú-w.Û-x.Ý-}.Þ-~.ß-.à-€.á-.â-‚.ã-ƒ.ä-„.å-….ç-Š.é-“.ë-˜.í-.ï-¶.ñ-A/ò-B/ó-C/ô-D/õ-F/ö-G/÷-H/ø-K/ù-L/ú-M/û-N/ü-Q/ý-R/þ-S/ÿ-T/.W/.X/.[/.^/.b/.e/.f/.h/.i/ .k/ .n/ .o/ .p/ .r/.u/.v/.w/.x/.y/.z/.{/.|/./.‚/.ƒ/.„/.…/.†/.‡/.ˆ/.Œ/.Ž/ ./!.’/".“/#.”/$.•/%.—/&.™/'.š/(.œ/)./*.ž/+.Ÿ/,. /-.¢/..£//.¤/0.§/1.¨/2.©/3.ª/4.­/5.®/6.¯/7.°/8.³/9.´/:.·/;.º/<.¾/=.Á/>.Â/?.Ä/@.Å/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.ï/[.ð/\.ñ/].ó/^.õ/_.ö/`.ø/a.ù/b.û/c.0k.0l.0n. 0p.0q.0r.0s.0t.0u.0v.0w.0x.0z.!0{."0|.#0}.$0~.%0.&0€.'0‚.*0ƒ.+0„.,0….-0†..0‡.00ˆ.60Š.E0Œ.U0.V0Ž.W0.X0.Y0‘.Z0’.[0“.\0”.]0•.^0–._0—.`0˜.a0™.b0š.c0›.d0œ.e0.f0ž.g0Ÿ.h0 .i0¡.j0¢.k0£.l0¤.m0¥.n0¦.o0¨.µ0©.¹0ª.º0«.»0¬.½0­.¿0®.Ã0¯.Ä0°.Å0±.Ç0².É0´.1µ. 1¶.!1·."1¸.#1¹.$1º.%1¼.J1½.M1¿.Q1À.R1Á.S1Â.T1Ã.U1Å.\1Ç.c1É.p1Ë.y1Ì.1Í.‰1Î.Œ1Ï.‘1Ð.•1Ò.Ÿ1Ó. 1Ô.¡1Ö.¨1×.©1Ø.ª1Ù.«1Ú.¬1Û.¯1ß.¶1á.½1â.Ä1ã.î1å.ñ1æ.ú1ç.ý1è.2é. 2ê.2ë.2ì.2î.2ñ.$2ò.%2ô.&2õ.'2ö.(2÷.*2ù./2û.62ÿ.<2/=2/>2/J2/K2/L2/N2 /O2 /k2 /p2 /t2/w2/}2/€2/…2/‰2/Š2/Œ2/2/Ž2/2/‘2/•2/˜2 /£2!/°2"/Æ2E/È2b/3d/3e/3f/3g/3h/3i/3j/ 3k/"3l/$3m/&3n/(3p/+3q/,3r/-3s/.3u//3»/23Ï/43Ð/63ì/83í/<3î/@3ð/A3ñ/E3ò/G3ô/J3ö/L3ø/Z3ù/[3ú/\3ü/c3ý/i30p30t30u30w30y30z30|3 0~330340€370‚380ƒ3:0†3;0‡3<0ˆ3=0‰3>0Š3@03A0Ž3B03C03J0‘3K0“3M0˜3O0œ3Q0 3”0¡3³0¢3µ0£3¹0¤3Î0¥3Ó0«3à0®3ä0°3å0±3è0²3é0µ3í0¹31¾31Â31Ê31Ë31Í31Î31Ï31Ð31Ñ3 1Ó3!1Ô3"1Õ3#1Ö3%1ß3&1à3'1á3(1â3)1ä3*1æ3+1ç3,1è3-1é3.1ê3/1ì301î351ï3›°t_•N=mèNQmôNVmOVmOVm [=m [=m [=m [=m•N=mPVm†PVmPVmQVm QØoQVmQVm QLpQVm+QLp1QVm7Q•pQq Q qQLpQVm QØoQVmQVm QLpQVm+QLp1QVm7Q•pQq Q qQLp[Q=mfQ=m“Qq§QØqºQrÊQ=mÖQ4rõQGrR=m R=mR=m$R=m.RVm=RVmMR¨r°T=m½T=mÈT=mÛT=mðT=mU=m U=mU=mU=m+U=m7U=mQU=mXUsaUspU•s9WsBWsIWtPWtaW=mnWtuW=m‰W=mšW=mªW=m½WVmÏW=m[Øo \žv\s)\s;\¦v]w]w ]w-]w8]wM]wY]q7^–wB^=mP^¡w[^«wg^µw{^µw‘^µw§^µw¸^µw¾^µwØ^µwõ^µw_µw1_Çw<_=mI_=mb=m bVmœb&y©b2y [Byb=mÍg$~Q-~ Q2~Q2~+Q=m?h2~DhÚ~b=m bVmMh-~Th-~ch-~ÏiQ-~ Q"Q'+Q'1Q=m?h'DhÚ~ bVm [Byb=mWj¯…·Š=m]j=m=mk¯…!k=m=møkØo l=m±Š†Y]qlqØlÔ‡ålÚ‡’qålÚ‡Øl8ˆvm-~•N=mÊnVmÓnVm [-~ [q [-~ [qoëoëpUã˜Óqí˜áq혷rW™¾r[™Ér[™Ír_™•N=mu°š uVm–‡°šuVmuq™u=m<=m£u=m¯u=m ›Y]q¹uqDwKwTwfw$y=m!y=m-yfž8ylžprž•N=mByqLy=m•N=mŸ|Ñ¢­|Vm½|Ñ¢Ì|VmÝ|Ñ¢å|Vmï|Ñ¢ú|Vm}Ñ¢}Vm}Ñ¢&}Vm3}Ñ¢@}VmO}Ñ¢Y}Vme}Ñ¢o}VmL†Vqaqf=mls£±Šy£qy£{Vm़Ťw€0¤¢€L¤©€T¤½€T¤Ï€T¤á€]¤ó€Vmg¤•N=m-‚¾¤3‚Vm3¾¤;‚VmG‚¾¤O‚Vm•N=m-‚¥3‚Vm3¥;‚VmG‚¥O‚Vm•N=mׂVmæ‚Vmô‚VmQ† QÛ¦ [q [Û¦Q† QÛ¦ [q [Û¦•N=mOƒE¨WƒVmaƒVmkƒVmyƒE¨‡ƒVmQT© QÛ¦ [ЩQT© QÛ¦ [ЩDwPª7„Wª=„VmL„L¤â„WªSÁžªuq•N=m©…½«¸…VmÉ…VmÚ…Vm [qQq Qq [qQq Qq•N=m‡†Ú­š†Vm¯†VmÀ†VmÖ†VmQq QQ¯ [į [qQq QQ¯ [į [q•N=m [ë°aqð‡¶±f=m•ˆb´b=mpUi´aqõˆq¹æq¥ˆq¥ˆ¶±qq¶‰*¶Á‰VmaqHŠK¶•N=mG‚·O‚VmµŠ·ŠVmÑŠVmàŠVm [q [q [q [q•N=mt‹Vmƒ‹Vm [ȸQT¤ Qq [ȸQT¤ Qq•N=mÏ‹VmÙ‹VmpUµ¹ bVm⋵¹ÿ‹Vm [ºQÙº Q† [ºQÙº Q†•N=mÅŒe»ÉŒVmÏŒe»ÒŒVm•N=m¹»:Vmf¹»…Vm4¹»¦Vm­Vm [º [ºQ޼ [–¼èdž¼7Ùº_¦¼Ë󮼱Іz“¯Ï¶“qÆ“g¤דg¤æ“Vm”Vm ”FÐ)”LÐ>”qDwPª„–Vm•N=mb—ÅÓo—Vm~—ÅÓ†—Vm—Vm [Õ [Õ•N=m [¡Õ•N=m [ÖŒšW™°šW™éœ[™¾Ü¾Ü/¾ÜNÇÜ_×ÜÓ£=mÞ£=m•N=mQVm Q;ÿQ;ÿ•N=m [-~Ù¦t_Lq.pЧØBoä2ªì8ªVm&³Î9@³Î9^³×9t³ä94´/:R‡ÕDU¶PªÓ£=mosÝDp¶VmF·ŽFS·©Fg·ÔF·ÔF•N=mÅŒ)IÉŒVmÏŒ)IÒŒVm\ºW™kºW™ŽºW™¢ºW™¶ºW™•N=m [-~ØÂM•=ÇW™HÇW™“Ë/:¨Ë/:ôÏÅ!r5Å•N=m!ÔVm(ÔVm1ÔVmEÔVmPÔVm]ÔVmkÔVm [Óä [Lå [Çå [Mæ [Êæ [Zç [ëç [Óä [Lå [Çå [Mæ [Êæ [Zç [ëçI×W™Y×W™l×W™×W™Ž×W™£×W™³×W™Ç×W™Û×W™ï×W™ØW™ØW™%ØW™6ØW™HØW™YØW™mØW™ØW™’ØW™£ØW™¶ØW™ÈØW™רW™çØW™úØW™ÙW™"ÙW™2ÙW™HÙW™XÙW™hÙW™xÙW™ˆÙW™šÙW™«ÙW™¾ÙW™ÏÙW™áÙW™ñÙW™ÿÙW™ ÚW™ÚW™)ÚW™;ÚW™PÚW™`ÚW™qÚW™}ÚW™ÚW™™ÚW™©ÚW™¸ÚW™ÉÚW™âÚW™ýÚW™ÛW™áߨøßW™àW™àW™)àW™:àW™QàW™càW™qàW™€àW™ŽàW™ àW™µàW™Åà°Òà°àà°íà°þà°á°nã[™{ãt_ƒã[™šãt_¥ãt_³ã‹ åår •N=móæVmüæVm [-~ [ô [-~ [ô•N=m-çVm:ç‹KçVm^ç‹cçVmjçVmsçVm}çVm‰çVm [ÖQn Qy [n [y [y [ÖQn Qy [n [y [y•N=mŠè¶‘èVmšèVm­èVm¾èVm [ÖQÖ Qy [ô [ÖQÖ Qy [ô^ê.zê°“ê[™¥ê9Øë=m•N=m%ìVm1ìVmBì}KìVm [q [q [q [qZqÇìVmÛìVmM¶IÐOÚUÇÝD¤í]ªícµím[lyÓ£=mäîVmosÝDìîùïù(ï5ïVmóÍ/^çÖ/•N=m [=m•N=m@÷VmN÷Vmb÷Vmn÷j@t÷w@QA QqQA QqQtA+QzAQA QqQB+Q BQA QqQA QqQtA+QzAQA QqQB+Q B•N=mý÷Vm øVmøVm(øVm6øVmn÷µBt÷ÂBQA QqQA QqQB+QtA1QåCQA QqQtA+Q BQA QqQtA+QEQA QqQB+Q¿EQA QqQA QqQB+QtA1QåCQA QqQtA+Q BQA QqQtA+QEQA QqQB+Q¿E•N=m÷øVm ùVmn÷±Ft÷¾F [B [tA [B [tA•N=m‰ùVmùVmQq QDHQq QºHQq QDHQq QºH úHI•N=m4úVmNúVmfú0JwúVmŠú0J›úVm®úVmÄú0JÕúVm [ßJ [FÐ [FÐ [ßJ [FÐ [FЕN=mbüCLoüVm~üVm‹üVmqIL—üTLûRaL¡üVmQ×M QFÐQØo QFÐQoNQ×M QFÐQØo QFÐQoN{˜=m•N=múýVm þVm [-Q [–Q [-Q [–Q•N=m^þVmnþVmƒþVm˜þVmQA Q=mQ=m+Q‹S1QFÐQA QØoQFÐ+QoNQA Q“TQFÐ+QoNQA Q=mQA Q=mQ=m+Q‹S1QFÐQA QØoQFÐ+QoNQA Q“TQFÐ+QoNQA Q=m•N=mMÿVm]ÿVmlÿVm{ÿVmQA QqQ=m+Q=m1QFÐ7Q×MQA QqQFÐ+QoN1Q>XQA QqQFÐ+QoN1QºXQA Q=mQA QqQ=m+Q=m1QFÐ7Q×MQA QqQFÐ+QoN1Q>XQA QqQFÐ+QoN1QºXQA Q=m:ùYSÁÿY%¡cNt__t_u[™[™†[™[™›[™¥[™­[™¹[™Ä[™Ð[™Û[™ê[™ö[™[™[™[™!g-Í/?'gE:g+/:7/:H/:U/:a/:p/:–/:³/:à/:/:3«t[†[†[†[qÇ"qÍ"†[qÇ"†[qÇ"†[qÇ"qÍ"†[qÇ"qÍ"†[qÇ"†[qÇ"†[qÇ"qÍ"†[qÇ"†[qÇ"†[‹¥Ç"‹¥Í"†[†[qÇ";ÿ•N=m##ئ1#VmA#ئM#Vm[#ئf#Vms#ئ|#Vm•N=mr$V©y$Vm‚$V©$Vmš$V©ž$Vm´=V©(ÔVm¤$Vm•N=mF%¥©R%Vm`%¥©m%Vm•N=më%Vmû%Vm &ù©&Vm [q [q [q [q•N=mQ† Qq±Š†Mxq•N=mQq Q[¬•N=mQq Q[¬QqP'Vmp'Vm{'s­ÿq VmŒ'Vméœq¶'VmÅ';ÿÖ'Vmç'Vmý'L¤(L¤(Vm!(Vm+({­A(Vm](Vmð⪭L¤ƒ(Ì­‘([¬ (÷­iŸVmº(T¤Ë(VmÜ(s­ê(L¤ŠVm.=m>wwwcwwwù(Vm )Vm)Vm0);ÿ;)q[)q{)qŸ)ø®¨)Vm´)VmÆ)+¯Í)Vm×)Vmò)Vm*;ÿ*Vm*Vm(*Vm@*;ÿR*Vm[*Vmh*Vm~*Vm*Vmœ*q¯*;ÿÀ*VmÆ*VmÛ*;ÿâ*;ÿì*Vmö*B°^­;ÿþ*Vm +L¤+Vm.+VmL+Vmd+Vmy+Vm…+Vm¥+Vm»+=m×+qà+qî+Vm,L¤?VmM%±,Vm',Vm2,Vm=,=mwžVmG,s­S,Vm],Vmo,Vmy,Vm,Vm,Vm–,Ô±¢,Vm°,s­µ,qÎ,VmÙ,Vmã,Vmø,Vm-Vm,-Vm2-VmK-Vm<VmZ-Vmh-Vm HY¶Hq*H_¶7HqBHqIHVmPHg¶:³x¶9Ic·OIVmŠqP'Vmp'Vm{'s­ÿq VmŒ'VmcIq¶'VmÅ';ÿÖ'Vmç'Vmý'L¤(L¤(Vm!(VmA(Vm](Vm+({­ð⪭L¤ƒ(Ì­‘([¬ (÷­uI;ÿiŸVmº(T¤Ë(VmÜ(s­ê(L¤ŠVm.=m>wwwcwwwù(Vm )Vm)Vm0);ÿ;)q[)q{)qŸ)ø®¨)Vm´)VmÆ)+¯Í)Vm×)Vmò)Vm*;ÿ*Vm*Vm(*Vm@*;ÿR*Vm}Iq[*Vmh*Vm~*Vm*Vmœ*q¯*;ÿÀ*VmÆ*VmÛ*;ÿâ*;ÿì*Vmö*B°^­;ÿþ*Vm +L¤+Vm.+VmL+Vmd+Vmy+Vm…+Vm¥+Vm»+=m×+qà+qî+Vm,L¤?VmM%±,Vm',Vm2,Vm=,=mG,s­S,Vm],Vmo,Vmy,Vm,Vm–,Ô±¢,Vm°,s­,Vmµ,qÎ,VmÙ,Vmã,Vmø,Vm-Vm,-Vm2-VmK-Vm<VmZ-Vmh-VmžIi·µIL¤½IL¤7MÁÓ£=mÓ£=muqyOÐ…O)ÌŸOVm³O3ÌÒO?ÌT³Ú‡T³Ú‡XQŸÌmQL¤ˆQL¤ŸOVm­QQ§Ì•N=mkSVm†SVm [jÍ [q [jÍ [q•N=m [eÎGTåÎLTïÎUTûÎ^TÏÑ\èëÝ\ýë)”÷­è\ìï\èë÷\%ì]%ì•N=m4^=í?^VmL^=íX^Vmf^=ín^Vm•N=mQèí QîQî+Qî+_ŸÌ2_bï=_jïL_]X_]e_rïX=jïy_]_]œ_ŸÌ•N=m…aXùˆaVmaXù‘aVm•N=mÐaVmÞaVmìaVmøaVmbVmbVm-bVm:bVmFbVmUbVmhbVmbVmŽbVm›bVm [²ú [û [ƒû [àû [ƒû [žü [¡Õ [²ú [¡Õ [¡Õ [‡þ [n [}ÿQ  Q' [²ú [û [ƒû [àû [ƒû [žü [¡Õ [²ú [¡Õ [¡Õ [‡þ [n [}ÿQ  Q'•N=mQq QqQ2+Q81Q;ÿ•N=m¹dVmÉdVmQq Qî [îQq Qî [î•N=mvfVmƒfVmQq Q†QqQq Q†QWª+Q%ì1Q%ì7Qº Qq Q†QqQq Q†QWª+Q%ì1Q%ì7Qº Ñh[™èht_úhã ië i[™ ió (iÿ 5iÿ Diÿ Xiÿ ri xi€i•it_°iºi'–‰a©•N=mۉȩê‰Vmû‰È© ŠVm qÆ*Vm£ŠVmÀŠVm犪öŠVm‹Vm×)VmM 'ªZ-VmX Vm˜ VmK-VmŸUÜŒbªâŒŸÌ5!›ªêŒ¡ªµ­ª±qµªb¦»ª•N=m¨Œ«±Vm¼Œ«ÇVm4ŽÚ‡>ŽqWŽ;ÿeŽL¤nŽqpUJ¬•N=m•ð¬oVm{ð¬‚Vm•N=mâ?­íVmú?­Vm•®q¥w²®Ã!®Ñ*®Ù2®ä>®÷J®µ|V®‘^®‘j®>‘>®a‘j®•N=mt*>¯¹“VmÀ“>¯Ë“VmØ“Vmæ“Vm÷“Vm”Vm”Vm ”VmQ° Q°QVm+Q®1Qq7Q®•(°•(°•R°Qú° QR°Qe± Q°Qú°+Q†1Qm±7QбQ® Q=mQ°+QN² [=mQ=m QN²Q° Q°QVm+Q®1Qq7Q®•(°•(°•R°Qú° QR°Qe± Q°Qú°+Q†1Qm±7QбQ® Q=mQ°+QN² [=mQ=m QN²•N=m6•²³D•VmT•Vm [L´ [L´•N=m¿•Vmã•Vm [µ [ªµ [µ [ªµ¡–@¶¦–P¶•N=mæ–Vmú–Vm [wQw Q¨·Qj®+Q=m1Q=m [wQw Q¨·Qj®+Q=m1Q=m•N=m [=me—=m mḅ—®œ—Vm†l縨—í¸»—¹Ç—¹Ñ—-¹Þ—9¹™wVm•N=mQq Q^®Q‚½8™̾~”Áâr°Çë›qö›=m•N=mž žVm,žVm;žVm@žVmVž_žVmjžVm—xžVmžVm‘žœžVm [}Í [ëÍQ=m Q6Î [˜ÎQ˜Î QëÍ [}Í [ëÍQ=m Q6Î [˜ÎQ˜Î QëÍY¥™d¥¥q¥¥‚¥±-¦;<¦JL¦YZ¦h \æªwíªVmE|-¹¹«t_Ä«sЫ~•N=m‚­Vm­Vm [$ [-~ [$ [-~¡–J® bVmÝ­d%•N=m®Vm®Vm [.& [.& [.& [.&Q®'\®'Uj†f®J®r®J®ä®j®ì®J®õ®·(ý®·([†d¯å.§ŸÌŸUl­‰Aù¬‰AF­ AĬ¸A‚±‰AM­ÒA±èA•N=m+²"C1²Vm9²"C@²Vm”²Vm£²=m²²kC†I©µÓQ­øQĬ¸AŽ´R‚±‰AvµC[•N=m;¸/nE¸VmQ¸Vm [/o [/o•N=mª¸Ap²¸Vm¼¸VmQJ® Q®QJ® Q® ¹/o¹Yq1¹.&ѹþt§ŸÌŸU÷¹U®´qUj†ºvºv•N=mQ=m Qñ|Q»N}V»†}\»‰Aq»¢}ƒ»‰A”»Vmç¼t_ÿ¼t_½E½W™%½W™9½W™F½W™U½W™f½W™z½t_ˆ½t_˜½t_®½Q¾½[ͽW™Ú½aâ½aî½}¾}-¾[™•N=m)ÓÐà•N=mhÓáuÓVm„ÓVmÓVm›ÓVm¨ÓVm´ÓVmÅÓVmÒÓVmçÓVmQ=m Q´áQ° Q´á [gâQÈâ QgâQ/ã QgâQ›ã Q£ãQ%ä Q=mQ=m+Q®1Q£ãQ=m Q®Q=m Q´áQ° Q´á [gâQÈâ QgâQ/ã QgâQ›ã Q£ãQ%ä Q=mQ=m+Q®1Q£ãQ=m Q®AÕVm]Õ´á}jå€Ã:è%Ö@躿-~¦Ö=m³Ö=m½ÖVmÇÖVmp×Vmƒ×ª­Ž×ª­›×ª­®×=m¼×=mÌ×=mâ×Vmñ×VmØVmØVm,ØVm=ØzéŸUÜŒbªµ­ªIÛVm;½ŸÌTÛÊé›ÒÔ±¢,Vmb¦»ªÒÛKêàÛWêëÛfêùÛrê܇êÜšê"ܨêpUºêÞøÞø)Þø;ÞøQÞ øcÞ&ø[qÇ"†[ÙºÇ"£ãÍ"†[ÙºÇ"£ãÍ"†]†[ÙºÇ"sGÍ"£ã]£ãz†[ÙºÇ"°Í"†[ÙºÇ"°Í"°]†[†[ÙºÇ"-¹Í"†[ÙºÇ"ÈâÍ"=m]†[ÙºÇ"=mÍ"=m]†[ÙºÇ"=mÍ"=m]†[ÙºÇ" HÍ" H]†[ÙºÇ" HÍ"†[L¤Ç"†[ÙºÇ"£ãÍ"†[ÙºÇ"£ãÍ"Vm]†[†[sG[ÙºÇ"VmÍ".&]Hz†[ÙºÇ" HÍ"†[ÙºÇ"°Í"†[ÙºÇ"°Í"†[ÙºÇ"£ãÍ"£ã]†[ÙºÇ"£ãÍ"£ã]†[ÙºÇ"£ãÍ"£ã]†[ÙºÇ"£ãÍ"†[ÙºÇ"£ãÍ"†[†[†[ÙºÇ"£ãÍ"£ã]†[VmÇ"†[†[†[†[†[†[†[†[†[UÇ"ÙºÍ"q]IzI—†[qÇ"†•N=m´VmÄNIÓVmQ H Q—IQ H Q—IH=m¿tJö€JYVmôVm ªJ"‰Aõ¦¼àüJKKK®¼+KF&Kh3Kt?K7Ùº~¦¼ŸU!ÃM !áM!Vmµ­ª'!ñMüùMBŸÌ;!N?!Vma!Vmg!Vmýj￈ No!N@|L¤•N=mR#¤P\#Vmh#Vmu#VmQ²R QÍRQxS Q²RQÍRQ²R QÍRQxS Q²RQÍR•N=mQ@U Qб•N=mQáU QqQq•N=mÚ`VÛ$Vmé$`Vù$Vm %`V%Vm•N=mQj® Qj®QVm•N=mQW Q2®•N=m&“W+&VmC&“W]&Vmy&“W“&Vm¯&“W¿&VmÑ&“Wñ&Vm'“W%'Vm9'Vm•N=mQsG QXQ£ã+Q X1QX7QVm•X•7X•PX**gX1*Vmq£ã^sG•N=mQsG QhYQ X+QX1QVm7QX•7X•PX•gX**Vm1*Vm•N=mQsG QhYQ Z+QX1QVm7QX•7X•gX•Vm**Vm1*Vm€*Vm‡*j® 3hY•N=m [ÉZ•N=mQX QVmQ2®+QP[1QX[7QX•g[•®•PX**£ã1*†€*s[ê*Vmñ*Œ[¯=®ø*s[•N=m [^•N=m [šd•N=mÜ)eÈ+Vmé+e ,Vm•N=mQje QveQÓä•N=mQùe QfQf+Qf•N=mQgX QŠfQVm+QVm1Q’f7QP[•f•f•ùe**f1*†€*s[•N=mV-Wg•ßVme-Wgx-Vm•N=mQUh Q®QVm±Š†q£ã¯=®•N=mjbZju.Vm{.Zj„.Vm.Zj .Vm³.Zj½.VmÉ.ZjØ.Vmè/®jí=´j•N=m-0Vm>0VmK0Vm^0VmQ®m Q†Q†Q2n QÓäQ†QK Q†QÓä Q†Q®m Q†Q†Q2n QÓäQ†QK Q†QÓä Q†•N=meåŠoû0Vm1Šo1Vm•N=m†1Ùo£1VmÂ1ÙoÎ1VmÜ1Ùoè1Vm•N=mË2(pÔ2Vmß2(pê2Vm•N=mW3wpa3Vmm3wpx3Vm•N=mQÈâ QËpQtJ+Q€J1Qj®•N=mQ~q Q†qNe~q•N=mQëq QñqQ÷q+Qýq•N=mQëq QñqQ÷q+QÊæ1Q†•N=mQÈâ Qj®Q÷q+Q»r•N=mQ÷q QÈâQtJ+Q€J1Qj®7Q9s•†•ñq•N=mQ~q QXQsG+Qj®1Qj®7Q£ã•Þs•÷q•N=mQëq QñqQ÷q+Qëç•N=mQ=m QëqQj®+QX1Q.&7QX•Þs•X•tJ**tJ1*€J€*gXê*£ãñ*÷qž4j®ôk.&ÚX¶4j®Å4=mÊåëq=Ú÷qK5ýq\5uÕ5j®î5¥u\5uhÚÄuî5¥u\5u‡*j®hÚÄuí=´j[†[†•N=mQ°É Q¸ÉQÀÉ+QVm1QVm•N=mQ°É Q¸ÉQÀÉ+QVm1QVm7Q=m<2®<2®!<2®•N=m‚KVm—KVm¦KVm¿KVmÍK^9òKVmL^9 [=mQá9 QY=Q® QtJ [w> [=m•N=mQÈâ Q±?•N=mÂPVm×PVmæPVmÿPVm Q@2QVmYQ@|QVmQá9 QY=Q® QtJ [w> [èAQá9 QY=Q® QtJ [w> [èA•N=mQÈâ QžB•N=mÕUVmíUVmQ·( QVmQVmQ® QVmQ·( QVmQVmQ® QVmQVÈâZVj®uVÑh‡V.&—VÄu­VJ®¾VtJÙV€JòVtJ W.&Wjï•N=mZVm ZVm*ZVm [VmQVm Q=mQ HQVm Q.&Qe± [VmQVm Q=mQ HQVm Q.&Qe±~ZÕkŽZUŸZÞk¨Z‰A•N=m\Vm\§q¹\Vm×\§qñ\Vm [w> [w>O}´¹b´Íb´Ûb´Ý|´ï|´jb´£cÀTjj®¨—í¸`jVmhjVmnjVmÎjº¦ØjĦŸUµ­ª¿ˆ NeKʈٺ⌟̻µVmÞñVmójVmkVm•N=m–lVm¨lÙ¨²lVm¾lÙ¨ÍlVm [=m [=mµmt_Åm[™Òm°•N=mÅŒWÃÉŒVmÏŒWÃÒŒVmŸUµ­ª;½ŸÌšp¦Ã¦p³ÃnÀÃÀ}(Äq=m!q3Ä&q=Ä1qUÄpUdÄ[ô[qÇ"†•N=m†sÛÌŸUµ­ªʈÙº/j®ö„ ŸUµ­ªj÷ N•N=m[…Vmc…Vmo…Vm……Vm™…Vm£…Vm¯…Vm¸…VmÂ…VmÊ…VmÕ…Vmã…Vmï…Vm†Vm†Vm†Vm,†Vm<†VmF†Vm[†Vmh†Vmr†Vm~†Vm [° [u QÓ Q£ãQ=m+Q† [F [Èâ [ç [sG [‡ [ã Qq Q= Qq Q¸ Qq Q¸ [£ã [£ãQq Qñ|Qq Q£ Q Qq Q° [q [& [sGQsG Q£ãQsG Q–¼ [& [° [u QÓ Q£ãQ=m+Q† [F [Èâ [ç [sG [‡ [ã Qq Q= Qq Q¸ Qq Q¸ [£ã [£ãQq Qñ|Qq Q£ Q Qq Q° [q [& [sGQsG Q£ãQsG Q–¼ [& •N=mm‰Vmx‰Vmƒ‰; Q° Q; QE QM Q; Q° Q; QE QM Q; •N=mωÍ Þ‰Vmï‰Í ý‰VmˆŠÙºu.! ”Š>! žŠL! ´ŠL! ØŠ^! åŠp! úŠp! ‹€! <‹€! n ²(W™»(W™Æ(W™Ò(W™Þ(W™è(W™ñ(W™ú(W™)W™ )W™)W™!)W™-)W™6)W™>)W™G)W™P)W™Y)W™e)W™n)W™w)W™)W™Ž)W™œ)W™­)W™»)W™Æ)W™Ñ)W™à)W™ì)W™÷)W™*W™ *W™*W™$*W™0*W™=*W™I*W™T*W™]*W™i*W™t*W™*W™*W™œ*W™©*W™¹*W™Æ*W™Ö*W™ã*W™ó*W™ü*W™+W™+W™+W™&+W™5+W™C+W™P+W™\+W™l+W™|+W™‹+W™œ+On ª+`n ·+nn À+ˆn Ë+ˆn Ö+ˆn Ü+šn ë+¶n ó+Ín û+Þn ,ïn ,$o ,;o (,Xo /,so C,°o M,Ëo \,ìo p,p v,&p ,=p ˆ,Rp œ,ƒp ¦,˜p µ,³p ¼,Äp Ä,Ùp Ø,q ã,q ó,*q -_q -vq "-“q 6-®q J-Ãq X-Þq f-óq z-0r ‚-Kr -lr £-£r ­-»r ¼-Ùr Ñ-s Ù-1s æ-Ùr û-s .1s .Rs -.s ;.ªs N.Ës c.t j.#t v.Ës ‹.t –.#t ¦.Dt ».ut Ã.Št Ð.¥t å.Ðt ï.ât þ.út /+u /@u (/út =/+u I/@u Z/[u o/Œu }/¡u /¼u ¥/íu ¬/v ¸/¼u Í/íu Ø/v è/v ð/4v ø/_q ÿ/q 0Ev 0\v ÚE-~âEØÉ Lq”1cÊ =FnÊ b=mBFt{˜=mFqšFtÀFøÊ ÊFË ÓF Ë ÜFË aqâF%Ë {˜=m"²ÒË uGŸÌ|GØË ‚GãË ŠG÷Ë ’G Ì ˜GØË ¡GÌ «G+Ì ´G<Ì ÀGUÉGqÅH0Í ÎHAÍ aq×HKÍ b=mÎäÍ PIÚ‡YIêÍ _IùÍ gI Î oI!Î uI5Î ~I@Î ˆIOÎ ‘I^Î Iq£IЃN– –N¥ ¥Nº °NW™¹NW™ÉN ÛNÊ äN× ïNä Oñ Oþ #O 7O, KOC [OZ fOg vO~ †O† šO† ±O† ÈO† èO† óO† P† P† &PŽ 4Pã 8Pã ?Pã EP[™dP[™‡P[™£P[™½P[™ÜP[™ïPW™QW™OQW™ŠQW™¿QW™•N=m [ï¸ [ú¸ pU¹ [«¹ bVmpUµ¹ ›ï¸ [‚º pUŒº bVm¥¯˜ ›Z» !›i» pUº •N=mz›½ ƒ›VmŽ›½ œ›Vm¬›½ ¶›Vm[œr½ gœi» pU •N=mQj® Q£ã•N=m [:À }EÀ ›†Á pU•Á pUäÁ •N=mVm ¥Â ÍVmüVmQÚ‡ Qgè [àà QÚ‡ Qgè [àà ŸVmŸVm!ŸVm4ŸVmBŸVmYŸVmkŸVm}ŸVm· VmÚ ÕÅ í åÅ ý Vm ¡Vm=Çs­ ¡Vm4¡VmE¡Vmd¡Vmz¡Vm‘¡Vm¦¡Vm·¡VmÍ¡VmÜ¡Vmê¡Vm ¢Vm)¢VmŸUE¢ñÅ Z¢ùÅ ž¦®Ç §¦ÃÇ ´¦x‚ pUØÇ §ªJ§ªJ(§‰A0§bÈ >§yÈ pUÈ •N=mæ§ÿÏ ï§Vmú§ÿÏ %¨VmR¨ÿÏ d¨Vm•N=mélØ Õ©Vmé©lØ ù©Vm ªlØ ªVm[qÇ"†ƒÛ Jƒ/Û wƒHÛ bƒ\Û ƒtÛ êªˆÛ úªµÛ 1¬å >¬Gå L¬Vmô¬À–¯ò §¯&ò I°'T°Eõ g°aõ Eµ[™tµl }µt ‚µt ‡µt Œµt ‘µt –µt ›µt  µ| §µ| ®µ| µµ| ¼µ| •N=mQO QqQVm+Q£ã1QW •N=mQE QÈâQVÈ✵E çV [» ¶'Vmù(Vmöºq¾\ŸÌ§\ŸÌ»Vm2-Vmh»' y»Èâ‹»È✻È⨻Èâ´»ÈâÀ»ÈâÌ»ÈâØ»Èâä»Èâó»Èâ¼Èâ¼Èâ¼I YT_ -¼Èâ>¼Èâ¹ÈâN¼ÈâºÈâ?ºÈâ\¼Èâi¼Èâw¼Èâ¼È⋼È╼Èâ ¼È⫼Èâ¶¼ÈâÀ¼Èâ̼ÈâÕ¼Èââ¼Èâë¼Èâô¼Èâ½Èâ½Èâ½Èâ"½Èâ,½Èâ8½ÈâC½ÈâP½ÈâY½Èâc½Èân½Èâ’·Èâ°·Èây½È↽È⓽Èâ6¹È⢽È⯽Èâ½ÈâÕ½Èâr¹Èâ¹È⮹Èâ̹È≺Èâä½Èâï½Èâú½Èâ¾Èâ¾Èâ¾Èâ&¾Èâ1¾ÈâB¾ÈâT¾Èâd¾Èâv¾Èâ¾È⥾ÈâžÈâä¾ÈâH¸£ã ¿£ã¿£ã%¿£ã.¿£ã7¿£ã@¿£ãJ¿£ãT¿£ã^¿£ãg¿£ãs¸£ão¿£ãy¿£ã€¿£ãˆ¿£ã¿£ã—¿£ã¢¿£ã«¿£ã¶¿£ãÇ¿£ãÙ¿£ãð¿£ãÀ£ãÀ£ã2À£ãBÀ£ãWÀ£ãhÀ£ãzÀ£ãŠÀÈâ¦ÀÈâ¿ÀÈâÔÀÈâçÀÈâúÀÈâ ÁÈâ ÁÈâ4ÁÈâFÁÈâXÁÈâjÁÈâ~ÁÈâ’ÁÈâ¦ÁÈâ»ÁÈâÏÁÈâãÁÈâ£ã#£ãBÂÈâb£ã€Â£ã¡ÂÈâ´ÂÈâÈÂÈâÚÂÈâö£ããã$ã㷸£ãḣã?ÃÈâbÃÈâÃÈâÀÃÈâìÃÈâÄÈâ(ÄÈâJÄÈâcÄØ ƒÄØ §ÄØ ÆÄØ áÄØ ÅØ $ÅØ :ÅØ TÅØ qÅØ ÅØ °ÅØ ÍÅØ íÅØ ÆØ "ÆØ >ÆØ XÆØ kÆØ ÆØ ˜ÆØ µÆØ ÑÆØ ïÆØ ÇØ #ÇØ AÇØ aÇØ ƒÇØ ŸÇØ ºÇÈâáÇÈâÈÈâ;ÈÈâ`ÈÈâÈÈâ¤ÈØ ËÈØ æÈØ ÉØ *ÉØ GÉØ dÉØ |ÉØ ˜ÉØ ¹ÉØ çÉØ ÊØ ÊØ 4ÊØ KÊØ oÊØ ˆÊØ ²ÊØ ÜÊØ ÿÊØ ËØ 9ËØ TËØ qËØ ŒËØ ­ËØ ÌËØ òËØ ÌØ <ÌØ _ÌØ „ÌØ ›ÌØ ¹ÌØ ÜÌØ ôÌØ ÍØ 4ÍØ MÍØ nÍØ “Í/ãžÍ/ã¨Í°±Í°ºÍ°ÄͰÐͰÝͰåͰîͰ ΰ-ΰOΰmΰ‘ΰ©Î°Çΰåΰûΰϰ.ϰUϰsϰŒÏ°¤Ï°ÆÏ°áϰаа'а8аOаgа€Ð°˜Ð°²Ð°ÍаæÐ°Ñ°Ñ°2ÑÄ# ;ÑÄ# HѰUÑÄ# aѰmÑÄ# Ѱ•Ѱ¡ÑÄ# °Ñ°¿Ñ°ÉÑÄ# ÚÑÄ# þÑÄ# ÒÄ# ?ÒÄ# ]ÒÄ# rÒ°„Ò°•Ò°ªÒ°ÄÒ°ÓÒ°äÒ°úÒ° Ó°Ó°-ÓÈâAÓ°`Ó°Ó°žÓ°½Ó°ÞÓ°ÿÓ° Ô°AÔ°cÔ°…Ô°§Ô°ÉÔ°ëÔÄ# ÕÄ# Õ°Õ°-Õ°9Õ°JÕÄ# dÕÄ# ŠÕÄ# ±ÕÄ# ¼ÕÄ# ÌÕÄ# ØÕÄ# éÕÄ# öÕ°Ö°Ö°'Ö°8Ö°IÖ°ZÖ°kÖÄ# |ÖÄ# ‹Ö°šÖÄ# ©Ö°¸ÖÄ# ÈÖ°ØÖÄ# ëÖ°þÖÄ# ×° ×Ä# 6×°L×Ä# ^×Ä# o×Ä# |×°‰×Ä# œ×°¯×Ä# ¾×°Í×Ä# Ý×Ä# è×Ä# ø×Ä# ØÄ# ØÄ# )ØÄ# :ØÄ# KØÄ# `ØÄ# tØÄ# „ØÄ# žØÄ# ´ØÄ# ÃØÄ# ÙØÄ# éØÄ# ٰٰ!Ù°6Ù°FÙ) TÙ& eÙD) Z-Vmø·k) rÙŠ) l" [™~" [™—" [™£" [™¬" [™¼" [™Ó" [™è" [™ÿ" [™# [™-# [™=# [™L# =6 Z# =6 o# /:{# /:„# /:”# =6 «# =6 »# =6 Ð# =6 ç# =6 ú# =6 $ =6 $$ =6 2$ =6 @$ =6 N$ =6 _$ =6 Å) G6 Ï) Q6 Ö) G6 ß) Q6 æ) ë ð) Z6 * [™* b6 ,* b6 <* [™_* [™•N=my6 ªN ƒ6 Vm6 ªN –6 VmŸ6 ªN ûVm¨6 ªN ®6 Vm•N=mO7 Vm_7 O p7 Vm [Vm [Vm•N=mí7 ´P ÷7 Vm8 ´P 8 Vm•N=mÏŒQ ÒŒVmÅŒQ ÉŒVm•N=mo8 }Q {8 Vm‰8 }Q ‘8 Vm›8 }Q ¥8 Vm±8 }Q ¿8 Vm›9 7Xª9 Vm¾9 XÉ9 ÖQ Ø9 Vmð9 ÞQ ßÿVm : Vm$: Vm3: æQ D: Vm]: ÞQ y: Vmš: Vm¬: ÞQ Á: Vmè: ÞQ ; Vm&; %ä•N=mq¥R \“VmŸ¥R <= VmF= ;ÿ•N=m†= S Œ= Vm”= S  = Vm®= S ½= VmÎ= S ×= VmÿS â= Vmé= Vmø= Vm> VmF? Vmª9 VmR? _S \? gS loS e? Vm}? wS ˆ? Vm&; =m1ÔVm=@ VmM@ Vmq@ Vm@ °&; %ä[=mÇ"–T Í"sG]L¤[½T Ç"qÍ"q]q•N=mUA ýT lA Vm…A ýT ’A Vm¡A ýT «A Vm•N=mQÚ‡ Q^U T³Ú‡wB ^U •N=m [g¤B g¤øk^W ®ÃqÈB q9ÿqÕB qC q±Š†ê%ä(C 2®°P[0C quhî:C fW GC oS òNsGYC nW ðgvW fC VmvC q•C j®÷3Ð £C Vm°C ñÅ ÆC ~W ÎdW •hñÅ =@ Vm1ÔVm«A Vm(ÔVmØC VmãC Vm÷C Vm D Vm&D Vm/D ™W ¾dKBD ¥W PD ­W _D ¶W oD ¶W ‡D ¶W ˜D ¶W ±D Vm¾D ÂW ÌD ÎW ÜD ×W ÎHVmíD ãW E VmE ëW E gè 0E Vm>E VmWE VmfE Vm}E VmE Vm¦E Vm¼E VmÎE VmáE VmïE VmûE VmF Vm+F Vm?F X `F ñ|…F -¹ F X »F -X äF 'ñ G GX "G GX ?G -¹RG \X iG E M@ Vmq@ Vm}N x[ ‹N oS —N [ ¤N %ä±N qÅN ;ÿÚN †çN ñÅ O 2®O nW (O Ð l Ð Gl …q ª9 Vm\? gS }? wS ˆ? Vme? VmR? _S F? VmloS &D Vm(C 2®9ÿqÎHVmSl Vm•N=m-m Vm9m VmFm VmUm Vmhm Vm~m Vmm VmŸm Vm¼m VmÅm VmÚm Vmím Vmúm VmQ£ã Q†Q=m Q£ãQ† [†Qës Q† [† [†Qñ| Q† [†Q£ã Q† [† [†Q£ã Q£ãQ† [†Q£ã Q†Q=m Q£ãQ† [†Qës Q† [† [†Qñ| Q† [†Q£ã Q† [† [†Q£ã Q£ãQ† [†•N=mQñ| QqQ»w +Qñ|1QÐ 7QÃw ÿo qï_ Ð >l Ôw •N=m0p Vm

s Vm 8 VmD: Vmš: VmÁ: Vmy: VmWs Vmrs Vm3: æQ ›9 7X$: Vm¾9 X‰s Vmª9 Vm(C 2®°P[0C q”s ~q¡s Èâ´s ÈâÉs =mÔs ~qÎd\{ ·ÿVm 3h{ ãs £ã'I j®®ÃqÈB q¨qç|q9ÿqÎHVmÿu qv ;ÿ"v †,v †;v £ãDv %äNv ÞQ Xv Œ[bv Ò kv ñÅ vv P{ †v 2®’v Z v ~q²v P[½v qÔs ÈâFy <} Zy Vmî2»w >z ÈâNz W œ_ŸÌi}q¹æq•N=mQ–} QW •N=mQŸÌ Qg¤Çz =~ œ_ŸÌÂg¤9ÿqÐz qäz g¤i}qÜFbïùz I~ uhîGÕbï¨kO À{ VmË{ VmÖ{ bïä{ bïÜFbïÇz =~ ó{ VmRG \X iG E ®ÃqÈB q9ÿqÕB qC q±Š†ê%ä(C 2®°P[0C quhîvC q:C fW GC oS òNsGYC nW ðgvW fC Vm•C j®÷3Ð £C Vm°C ñÅ ÆC ~W ÎdW •hñÅ =@ Vm1ÔVm«A Vm(ÔVm/D ™W ØC VmãC Vm÷C Vm D Vm¾dKBD ¥W PD ­W _D ¶W ‡D ¶W ˜D ¶W oD ¶W ¾D ÂW ÌD ÎW ÜD ×W íD ãW ?F X `F ñ|…F -¹ F X +F VmWE VmfE Vm&D Vm»F -X äF 'ñ G GX "G GX E VmE ëW E gè ±D Vm0E Vm>E Vm}E VmE Vm¦E Vm¼E VmáE VmïE VmûE VmF VmM@ Vmq@ Vmü{ H | T ,| T GÕ.&¨kÙ À{ VmË{ VmÖ{ .&ä{ .&ÜF.&Çz tJq£ã 3h{ ãs £ã'I j®®Ãq9ÿqç|q±Š†•hñÅ ”s ~qÔs ~qˆr †`Œ[òNsG¨qê%ä˜r Vm·ÿVmÈB qÎd\{ Îr Ò æ‚Vm>s Vmâr P{ ír Vms Vm-s Vm 8 Vmy: VmD: VmØ9 VmßÿVmrs VmWs Vm3: æQ ›9 7X$: VmÞq Z¾9 X‰s Vmª9 Vm(C 2®°P[0C q¡s Èâ´s ÈâÉs =m•N=mQÈâ QqQVÈâ0} q8bï[¨ (C 2®±Š†Å4=m_D ¶W ï_ £ã•N=mQÈâ QqQVÈâ=q8bïN[—I£a 2®±Š†Å4=m•N=mb} Vmq} Vm}} Vm‹} Vm—} Vm¥} Vm±} VmQj® Q£ãQÈâ Qñ| [ñ|Q£ã Q£ãQ/ã Qñ| [H [“ƒ Qj® Q£ãQÈâ Qñ| [ñ|Q£ã Q£ãQ/ã Qñ| [H [“ƒ •N=m¢~ Vm¯~ Vm¼~ VmÊ~ Vm×~ )„ â~ Vm [H [ÈâQ“ƒ Q“ƒ [“ƒ [H [ÈâQ“ƒ Q“ƒ [“ƒ u;ÿT³Ú‡ê%ä  ;ÿ® q VmŸOVmË ù … Û Vm›bïê ¶… € Ì… Æ)£† Ú VmLqÜF£† æ VmÛ Vmi}qT³Ú‡ê%äu;ÿŸOVm  ;ÿ® q Vm›bï€ «† ü ïg ‚ ïg •N=mƒ Vmƒ Vm [ŸÌ [q [ŸÌ [q´±bïlƒ qójVm•N=mă Vmσ Vm [(° [° [(° [°•N=mQÈâ QU‰ Q]‰ +Qi‰ 1QVm7Qu‰ •†•N=mQ® Q®•N=m [Š •N=m:„ VmA„ VmI„ VmP„ VmX„ Vma„ Vmi„ Vmr„ Vmz„ Vmƒ„ VmŒ„ Vm–„ VmŸ„ Vm¨„ Vm¯„ Vm¸„ Vm7 ‹ „ VmÉ„ ‹ ΄ Vm [Vm [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [%ä [; [ÛŽ [( [¿Ï [q [ô [Vm [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [%ä [; [ÛŽ [( [¿Ï [q [ô •N=mw† Vm‚† Vmކ VmQ® QM‘ QY‘ +Q†Qæ‘ Q=mQ´j QV’ Q® QM‘ QY‘ +Q†Qæ‘ Q=mQ´j QV’ •N=mQpÜ QV’ æ† pÜ ô† V’ •N=mc…Vm%‡ Vm3‡ Vm¹““ ;‡ VmD‡ Vm……VmQ/ã Qñ|Q=m Q£ã [›ãQ£ã Q£ãQ® Qñ|QÙ” +Q=m1QÓ Q/ã Qñ|Q=m Q£ã [›ãQ£ã Q£ãQ® Qñ|QÙ” +Q=m1QÓ •N=mQJ® Q®QÁ• •N=mQ.& Q®Qs[ .&¯=®Á‡ s[•N=mQÓ Q°Q=mú‡ Ó ˆ ° ˆ =m•N=mQÖ– Q@UQбsˆ @U|ˆ =m‹ˆ =m•ˆ VmŸˆ w­ˆ â– cq =m(C 2®aKê•N=mQsG QoS •N=m3‡ VmD‰ VmJ‰ VmW‰ Vm`‰ Vmk‰ Vmq‰ Vmz‰ Vm€‰ Vm†‰ Vmމ Vm£‰ Vm¨‰ Vm°‰ Vm»‰ VmQ›ã Q†Q£ãQ° Q‘š Q†Q® Q®Qðš +Qøš 1Q†Q%ä QtJQtJ+QJ®1Q®7Q†•£ãQ%ä Qj®Q®+Q†1Q£ãQ® Q£ãQñ|+Qæ‘ 1Q†Q·( Q®Q†+QМ Q´j Q®Q†+QМ Q%ä Q£ãQtJ+Q®1Q¼ 7QÙ •†Qs[ Q†QV’ +Q±ž 1Q†7Q£ãQWŸ Q®Q®+Q†QÖŸ Qñ|Qæ‘ +Q†Q® QR  QVm+Q†1Q£ãQj® Q®Q† [²¡ Q›ã Q†Q£ãQ° Q‘š Q†Q® Q®Qðš +Qøš 1Q†Q%ä QtJQtJ+QJ®1Q®7Q†•£ãQ%ä Qj®Q®+Q†1Q£ãQ® Q£ãQñ|+Qæ‘ 1Q†Q·( Q®Q†+QМ Q´j Q®Q†+QМ Q%ä Q£ãQtJ+Q®1Q¼ 7QÙ •†Qs[ Q†QV’ +Q±ž 1Q†7Q£ãQWŸ Q®Q®+Q†QÖŸ Qñ|Qæ‘ +Q†Q® QR  QVm+Q†1Q£ãQj® Q®Q† [²¡ •N=mc…VmýŠ Vmf'ž¢ ‹ Vml'ž¢ ‹ Vm‹ Vm!‹ Vm+‹ Vm3‹ Vm9‹ VmD‹ VmQ‹ VmX‹ Vmf‹ Vmt‹ Vm†‹ Vm˜‹ Vm©‹ Vm½‹ VmÑ‹ Vmß‹ Vmí‹ Vmý‹ VmŒ ž¢ Œ Vm´nž¢ Œ Vm&Œ ž¢ .Œ Vm—ž¢ xžVm8Œ Vm?Œ VmGŒ VmSŒ Vm^Œ Vm [/ã [Èâ [¯… [µwQV¥ Q^¥ QÁ¥ QÉ¥ Q*¦ Q2¦ Q*¦ Q˜¦ Qø¦ QÈâ [ H [ H [ H [Èâ [/ãQ/ã Q=mQ/ã Q=mQÈâ Q=mQÈâ Q=m [=mQ-ª Qñ| [=m [=m [ës Qt« Q°QVm QVmQVm+QVm1Q‘š 7QVm•Vm•(°•ñ|**ñ|1*ñ| [/ã [Èâ [¯… [µwQV¥ Q^¥ QÁ¥ QÉ¥ Q*¦ Q2¦ Q*¦ Q˜¦ Qø¦ QÈâ [ H [ H [ H [Èâ [/ãQ/ã Q=mQ/ã Q=mQÈâ Q=mQÈâ Q=m [=mQ-ª Qñ| [=m [=m [ës Qt« Q°QVm QVmQVm+QVm1Q‘š 7QVm•Vm•(°•ñ|**ñ|1*ñ|•N=mí ® ÿ Vm ®  Vm•N=mœ l® µ VmÐ l® ö Vm•N=mÿ‘ Í® ’ Vm!’ Í® 3’ VmG’ Í® W’ Vm•N=m5“ &¯ >“ VmI“ &¯ S“ Vm_“ &¯ d“ Vmk“ &¯ u“ Vm•N=m/” ‡¯ 9” VmE” ‡¯ O” Vm•N=m»” VmÕ” è¯ â” Vmñ” è¯ • Vm!• è¯ 7• VmO• è¯ _• Vm [£ã [£ã•N=mЖ Vmä– VmQ£ã Q£ã [£ãQ£ã Q£ã [£ã•N=mQsd Q2®Qj®+Q¤± 1Q®7Q†òNsG•N=mQq Q£ãQj®+Qj®1Qg² 7QÐ aq[— £ãk— j®w— j®„— g² ‘— Ð •N=mQ;ÿ Q£ãQVm+QVm1QVm7Q2®q£ã•N=mQî QK³ Q†qî•N=m7˜ VmD˜ VmM˜ VmX˜ Vmb˜ Vm [I´ [¶´ Q´j Q†Q® Q†Qïg Q·(Qϵ +Q† [I´ [¶´ Q´j Q†Q® Q†Qïg Q·(Qϵ +Q†•N=mQbï QK³ •N=mQ×¶ QÁQI´ +QVm1QVm•N=m [m(™ ªJ3™ ‰AF™ 'Û™ ‰Aæ™ Vmš Vmš ªJ'š bÈ 6š yÈ !yý· •N=mÇ› VmÔ› VmQE Qš¹ Q¡ª [®QE Qš¹ Q¡ª [®[O¿ Ç"ÈâÍ"q[qÇ"qÍ"†[qÇ"qÍ"q]†zq—q¸œ †[qÇ"†Õœ ÎÁ äœ ÖÁ òœ Äv þœ ÎÁ ÖÁ  âÁ åž [™Ÿ Ä Ÿ $Ä Ú¡ qô¡ qû¡ q•N=m4¢ Vm@¢ }Í H¢ VmR¢ Vm [=m [sÏ [=m [sÏ •N=m¢ VmÌ¢ Vm [=mQ²Ñ QºÑ [=mQ²Ñ QºÑ £ sÏ £ ºÑ Z£ sÏ ÿƒqe£ ºÑ r£ æÒ @o=m¤ q¤ æÒ ¤ Vm•N=m]¤ Ô c¤ Vmk¤ Ô r¤ Vm{¤ Vm‹¤ Ô ”¤ VmŸ¤ Ô ¬¤ Vm»¤ Ô Á¤ Vmɤ VmÔ¤ VmठVmì¤ Vmö¤ Vm¥ Vm¥ Ô ¥ Vm+¥ Vm8¥ Ô ?¥ VmH¥ VmQ¥ Vm\¥ Vmg¥ Vmr¥ Vm{¥ Vm…¥ VmŽ¥ Vm˜¥ Vm£¥ Vm­¥ Vm¸¥ VmÂ¥ VmÍ¥ VmÙ¥ Vmæ¥ Vmó¥ Vm¦ Ô ¦ Vm¦ Ô !¦ Vm.¦ Ô 9¦ VmF¦ Ô L¦ VmT¦ Ô ^¦ Vmj¦ Ô v¦ Vm„¦ Ô ‹¦ Vm”¦ Ô £¦ Vm´¦ VmÀ¦ Vmͦ Ô Ù¦ Vmç¦ Ô ñ¦ Vmý¦ Ô § Vm§ Ô $§ Vm1§ Ô >§ VmM§ Ô W§ VmQsÏ QqQVm [sÏ QsÏ QqQsÏ QqQsÏ QqQsÏ QqQ=mQsÏ Qq [=m [Vm [q [ÛŽ [( [¿Ï [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [ä QsÏ Qq [ å [uå [ä QsÏ QqQsÏ QqQVm [sÏ QsÏ QqQsÏ QqQsÏ QqQsÏ QqQ=mQsÏ Qq [=m [Vm [q [ÛŽ [( [¿Ï [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [ä QsÏ Qq [ å [uå [ä QsÏ Qq•N=mL® VmW® Vmb® Vml® Vmx® Vm…® Vm® VmQŽê Q–ê Që QºÑ Q–ê [=m [Žê Q@ì QŽê QæÒ Q=m [æÒ QŽê Q–ê Që QºÑ Q–ê [=m [Žê Q@ì QŽê QæÒ Q=m [æÒ ´=sÏ aqÊ…Vm•N=m‹¯ Vm÷“Vmc“Vm [½ï [uå [ å [½ï [uå [ å ”1@ó =Fí˜b=mê¯ í˜b=m"²ÒË ˜Gìó €Zêô à¢ðô ü¯ õô sØ [™ÔÙ VmÛÙ VméÙ Vm¡´L¤åâIý ¥Ø cý 4·ký äÕD[qÇ"†[qÇ"†ÿÚ “þ Û /:Û /:'Û ©þ 4Û ©þ >Û ·þ OÛ t_•N=maÜ Eÿ hÜ VmqÜ Eÿ xÜ Vm5Ý W™KÝ W™fÝ ðô tÝ ðô –Ý ðô »Ý ðô âÝ W™öÝ ðô Þ ðô 0Þ ðô NÞ ðô sÞ ðô •N=mQ† QVmQVm+QJ1Q†•N=mÊä VmÔä Vmàä Vmíä Vm÷ä Vmå Vmå Vmå Vm,å Vm;å VmIå VmOå Vm]å Vmfå ¡xå VmŒå ¡–å Vm¢å ¡¸å VmÐå ¡âå Vmöå ¡æ Vmæ ¡#æ Vm.æ ¡3æ Vm:æ ¡Dæ VmPæ ¡\æ Vmjæ ¡qæ Vmzæ ¡æ Vm†æ ¡æ Vmœæ ¡¢æ Vmªæ ¡°æ Vm¸æ ¡¾æ VmÆæ ¡Ïæ VmÚæ ¡Þæ Vmäæ Vmîæ Vmõæ ¡ ç Vm#ç ¡=ç VmYç ¡sç Vmç ¡ ç Vm³ç ¡Àç VmÏç ¡âç Vm÷ç ¡è Vmè ¡è Vm'è ¡,è Vm3è ¡:è VmCè ¡Kè VmUè ¡^è Vmiè ¡pè Vmyè ¡€è Vm‰è ¡è Vm™è ¡Ÿè Vm§è ¡°è Vm»è ¡Äè VmÏè ¡×è Vmáè ¡íè Vmûè ¡é Vm é ¡é Vm-é ¡4é Vm=é ¡Aé VmGé ¡Ké VmQé ¡Xé Vmaé ¡hé Vmqé ¡„é Vm™é ¡¨é Vm¹é ¡¿é VmÇé ¡Îé Vm×é ¡ãé Vmñé ¡üé Vm ê ¡ê Vm)ê ¡4ê VmAê ¡Uê Vmkê ¡rê Vm{ê ¡‚ê Vm‹ê ¡’ê Vm›ê ¡¦ê Vm³ê ¡¿ê VmÍê ¡Ôê VmÝê ¡ãê Vmëê ¡÷ê Vmë ¡ ë Vmë ¡ë Vmë ¡)ë Vm7ë ¡Eë VmUë ¡ië Vmë ¡‹ë Vm™ë ¡¦ë Vmµë ¡¿ë VmËë ¡Ðë Vm×ë ¡Ýë Vmåë ¡êë Vmñë ¡öë Vmýë ¡ì Vmì ¡ì Vmì ¡ì Vm'ì ¡.ì Vm7ì ¡>ì VmGì ¡Zì Vmoì ¡~ì Vmì ¡”ì Vm›ì ¡¡ì Vm©ì ¡°ì Vm¹ì ¡Ìì Vmáì ¡ôì Vm í ¡í Vmí ¡í Vmí ¡!í Vm'í ¡,í Vm3í ¡6í Vm;í ¡@í VmGí ¡Kí VmQí ¡Ví Vm]í ¡aí Vmgí ¡ní Vmwí ¡í Vmí ¡–í Vm¡í ¡§í Vm¯í ¡´í Vm»í ¡Áí VmÉí ¡Ïí Vm×í ¡ßí Vméí ¡íí Vmóí ¡öí Vmûí ¡î Vmî ¡î Vmî ¡#î Vm)î ¡-î Vm3î ¡<î VmGî ¡Jî VmOî ¡Rî VmWî ¡_î Vmiî ¡qî Vm{î ¡ƒî Vmî ¡‘î Vm—î ¡šî VmŸî ¡¦î Vm¯î ¡·î VmÁî ¡Åî VmËî ¡Ñî VmÙî ¡Üî Vmáî ¡æî Vmíî ¡ôî Vmýî ¡ï Vm ï ¡ï Vmï ¡ï Vmï ¡'ï Vm1ï ¡9ï VmCï ¡Jï VmSï ¡\ï Vmgï ¡lï Vmsï ¡|ï Vm‡ï ¡Žï Vm—ï ¡¡ï Vm­ï ¡¶ï VmÁï ¡Ìï VmÙï ¡Þï Vmåï Vmîï Vm÷ï Vmð Vmð Vmð Vm!ð Vm+ð Vm1ð Vm9ð VmFð VmOð VmYð Vm`ð Vmið Vmrð Vm~ð Vm‹ð Vm”ð Vmð Vm¦ð Vm®ð Vm¶ð Vm¾ð VmÎð VmÖð VmÝð Vmóð Vmñ Vmñ Vm'ñ Vm?ñ VmKñ VmZñ Vmlñ Vmñ Vm”ñ Vmœñ Vm­ñ Vm¶ñ Vm [è [è [è [þ [þ [þ [þ [þ [þ [þ [þ [q [ý_ [q [Vm [M [M [M [q [q [Vm [Vm [Vm [Vm [Vm [®" [ô [¿Ï [( [ÛŽ [%ä [; [; [Ž [ [yŒ [W& [Í& [Í& [•' [ ( [q [q [q [q [q [q [q [q [q [q [q [q [q [¯… [è [è [è [þ [þ [þ [þ [þ [þ [þ [þ [q [ý_ [q [Vm [M [M [M [q [q [Vm [Vm [Vm [Vm [Vm [®" [ô [¿Ï [( [ÛŽ [%ä [; [; [Ž [ [yŒ [W& [Í& [Í& [•' [ ( [q [q [q [q [q [q [q [q [q [q [q [q [q [¯…•N=m• `/£ Vm³ `/à VmÕ `/æ Vmù `/ Vm `/( Vm; `/K Vm] `/n Vm `/” Vm© `/¼ VmÑ `/ã Vm÷ `/ Vm  `/ Vm3 `/@ VmO `/g Vm `/‘ Vm£ `/¿ VmÝ `/õ Vm `/& Vm? `/N Vm_ `/j Vmw `/‡ Vm™ `/« Vm¿ `/Ì VmÛ `/æ Vmó `/ Vm `/! Vm/ `/; VmI `/U Vmc `/r Vmƒ `/ Vm™ `/§ Vm· `/ VmÏ `/ë Vm  `/) VmK `/k Vm `/¤ Vm½ `/Ð Vmå `/þ Vm `/. VmE `/R Vma `/l Vmy `/† Vm• `/£ Vm³ `/ VmÓ `/à Vmï `/ü Vm  `/ Vm' `/3 VmA `/P Vma `/p Vm `/ VmŸ `/± VmÅ `/Ó Vmã `/ø Vm `/ Vm+ `/5 VmA `/K VmW `/d Vms `/€ Vm `/¨ Vmà `/Ø Vmï `/û Vm  `/ Vm% `/7 VmK `/\ Vmo `/„ Vm› `/¬ Vm¿ `/Ù Vmõ `/ Vm `/ Vm- `/: VmI `/Z Vmm `/ Vm“ `/  Vm¯ `/» VmÉ `/Û Vmï `/ù Vm `/ Vm `/1 VmE `/Y Vmo `/‰ Vm¥ `/· VmË `/Þ Vmó `/ Vm `/  Vm- `/9 VmG `/R Vm_ `/j Vmw `/ Vm `/› Vm« `/· VmÅ `/Ò Vmá `/î Vmý `/ Vm1 `/F Vm] `/h Vmu `/ Vm `/œ Vm« `/Ä Vmß `/ø Vm `/ Vm+ `/4 Vm? `/I VmU `/` Vmm `/v Vm `/Œ Vm™ `/£ Vm¯ `/º VmÇ `/Ñ VmÝ `/ê Vmù `/  Vm `/* Vm; `/G VmU `/` Vmm `/y Vm‡ `/“ Vm¡ `/¯ Vm¿ `/É VmÕ `/Þ Vmé `/ù Vm  `/ Vm% `// Vm; `/E VmQ `/` Vmq `/z Vm… `/Ž Vm™ `/§ Vm· `/Å VmÕ `/ã Vmó `/ý Vm `/ Vm `/* Vm9 `/G VmW `/a Vmm `/y Vm‡ `/ Vm› `/¦ Vm³ `/À VmÏ `/Ú Vmç `/ò Vmÿ `/ ! Vm! `/#! Vm3! `/A! VmQ! `/^! Vmm! `/|! Vm! `/˜! Vm¥! `/´! VmÅ! `/Ò! Vmá! `/ñ! Vm" `/" Vm#" `/4" VmG" `/R" Vm_" `/l" Vm{" `/ˆ" Vm—" `/¨" Vm»" `/Ì" Vmß" `/ì" Vmû" `/# Vm# `/!# Vm1# `/;# VmG# `/S# Vma# `/r# Vm…# `/’# Vm¡# `/¯# Vm¿# `/Ê# Vm×# `/ä# Vmó# `/$ Vm$ `/$ Vm1$ `/B$ VmU$ `/b$ Vmq$ `/~$ Vm$ `/š$ Vm©$ `/µ$ VmÃ$ `/Ï$ VmÝ$ `/é$ Vm÷$ `/ % Vm!% `/-% Vm;% `/F% VmS% `/m% Vm‰% `/¢% Vm½% `/Ñ% Vmç% `/ú% Vm& `/+& VmI& `/Y& Vmk& `/~& Vm“& `/©& VmÁ& `/Ø& Vmñ& `/ ' Vm%' `/1' Vm?' `/T' Vmk' `/x' Vm‡' `/—' Vm©' `/¼' VmÑ' `/Ý' Vm•N=mÊW Ä/æW VmX Ä/%X VmHX Ä/bX Vm~X Ä/’X Vm¨X Ä/¾X VmÖX Ä/ôX VmY Ä/-Y VmHY Ä/bY Vm~Y Ä/œY Vm¼Y Ä/ßY VmZ Ä/#Z VmDZ Ä/\Z VmvZ Ä/ŽZ Vm¨Z Ä/¾Z VmÖZ Ä/ñZ Vm[ Ä/"[ Vm8[ Ä/O[ Vmh[ Ä/ƒ[ Vm [ Ä/¾[ VmÞ[ Ä/ø[ Vm\ Ä//\ VmL\ Ä/j\ VmŠ\ Ä/¤\ VmÀ\ Ä/×\ Vmð\ Ä/] Vm ] Ä/F] Vmn] Ä/] Vm²] Ä/Æ] VmÜ] Ä/ ^ Vm:^ Ä/a^ VmŠ^ Ä/¤^ VmÀ^ Ä/Ô^ Vmê^ Ä/_ Vm(_ Ä/;_ VmP_ Ä/o_ Vm_ Ä/­_ VmÌ_ Ä/ë_ Vm ` Ä/"` Vm:` Ä/X` Vmx` Ä/‹` Vm ` Ä/°` VmÂ` Ä/Û` Vmö` Ä/a Vm(a Ä/?a VmXa Ä/ka Vm€a Ä/–a Vm®a Ä/Ìa Vmìa Ä/þa Vmb Ä/*b VmDb Ä/Wb Vmlb Ä/‚b Vmšb Ä/¬b VmÀb Ä/Úb Vmöb Ä/ c Vm"c Ä/9c VmRc Ä/xc Vm c Ä/·c VmÐc Ä/éc Vmd Ä/'d VmLd Ä/`d Vmvd Ä/Žd Vm¨d Ä/Æd Vmæd Ä/ e Vm4e Ä/Le Vmfe Ä/{e Vm’e Ä/¨e VmÀe Ä/Òe Vmæe Ä/f Vmf Ä/1f VmHf Ä/_f Vmxf Ä/žf VmÆf Ä/Ýf Vmöf Ä/g Vm*g Ä/Mg Vmrg Ä/g Vm°g Ä/Ög Vmþg Ä/#h VmJh Ä/]h Vmrh Ä/Žh Vm¬h Ä/Äh VmÞh Ä/òh Vmi Ä/"i Vm>i Ä/Ni Vm`i Ä/i Vm i Ä/³i VmÈi Ä/×i Vmèi Ä/j Vm j Ä/>j Vm^j Ä/tj VmŒj Ä/¢j Vmºj Ä/Ïj Vmæj Ä/øj Vm k Ä/k Vm,k Ä/@k VmVk Ä/gk Vmzk Ä/œk VmÀk Ä/äk Vm l Ä/-l VmRl Ä/kl Vm†l Ä/¨l VmÌl Ä/çl Vmm Ä/$m VmFm Ä/gm VmŠm Ä/¢m Vm¼m Ä/Ûm Vmüm Ä/n Vm0n Ä/Ln Vmjn Ä/|n Vmn Ä/ªn VmÆn Ä/èn Vm o Ä/*o VmJo Ä/lo Vmo Ä/³o VmØo Ä/ôo Vmp Ä/*p VmDp Ä/[p Vmtp Ä/†p Vmšp Ä/¬p VmÀp Ä/Ùp Vmôp Ä/q Vm,q Ä/Fq Vmbq Ä/xq Vmq Ä/±q VmÔq Ä/ïq Vm r Ä/"r Vm:r Ä/Tr Vmpr Ä/†r Vmžr Ä/°r VmÄr Ä/Ör Vmêr Ä/ür Vms Ä/,s VmJs Ä/\s Vmps Ä/ƒs Vm˜s Ä/ªs Vm¾s Ä/Ïs Vmâs Ä/÷s Vmt Ä/ t Vm4t Ä/Qt Vmpt Ä/‹t Vm¨t Ä/Ât VmÞt Ä/u Vm0u Ä/Cu VmXu Ä/fu Vmvu Ä/ˆu Vmœu Ä/©u Vm¸u Ä/Æu VmÖu Ä/çu Vmúu Ä/v Vm(v Ä/Bv Vm^v Ä/xv Vm”v Ä/©v VmÀv Ä/îv Vmw Ä/Gw Vmrw Ä/’w Vm´w Ä/Ïw Vmìw Ä/x Vm8x Ä/\x Vm‚x Ä/–x Vm¬x Ä/½x VmÐx Ä/çx Vmy Ä/y Vm.y Ä/My Vmny Ä/…y Vmžy Ä/¹y VmÖy Ä/óy Vmz Ä/.z VmLz Ä/bz Vmzz Ä/‘z Vmªz Ä/Àz VmØz Ä/ñz Vm { Ä/!{ Vm8{ Ä/Z{ Vm~{ Ä/Ÿ{ VmÂ{ Ä/à{ Vm| Ä/!| VmD| Ä/a| Vm€| Ä/œ| Vmº| Ä/Ô| Vmð| Ä/} Vm} Ä/9} VmV} Ä/k} Vm‚} Ä/’} Vm¤} Ä/´} VmÆ} Ä/×} Vmê} Ä/ý} Vm~ Ä/&~ Vm<~ Ä/W~ Vmt~ Ä/Œ~ Vm¦~ Ä/½~ VmÖ~ Ä/ë~ Vm Ä/ Vm0 Ä/D VmZ Ä/m Vm‚ Ä/– Vm¬ Ä/¾ VmÒ Ä/ä Vmø Ä/€ Vm€ Ä/*€ Vm<€ Ä/O€ Vmd€ Ä/„€ Vm¦€ Ä/·€ VmÊ€ Ä/æ€ Vm Ä/ Vm0 Ä/B VmV Ä/h Vm| Ä/Ž Vm¢ Ä/¸ VmÐ Ä/ò Vm‚ Ä/;‚ Vmb‚ Ä/t‚ Vmˆ‚ Ä/ž‚ Vm¶‚ Ä/Ï‚ Vmê‚ Ä/ƒ Vm"ƒ Ä/<ƒ VmXƒ Ä/Žƒ Vmƃ Ä/܃ Vmôƒ Ä/ „ Vm „ Ä/;„ VmX„ Ä/t„ Vm’„ Ä/²„ VmÔ„ Ä/ö„ Vm… Ä/@… Vmh… Ä/y… VmŒ… Ä/¢… Vmº… Ä/Ì… Vmà… Ä/ù… Vm† Ä/-† VmH† Ä/\† Vmr† Ä/‚† Vm”† Ä/¬† VmƆ Ä/↠Vm‡ Ä/‡ Vm2‡ Ä/L‡ Vmh‡ Ä/†‡ Vm¦‡ Ä/¿‡ VmÚ‡ Ä/ó‡ Vmˆ Ä/%ˆ Vm>ˆ Ä/Wˆ Vmrˆ Ä/’ˆ Vm´ˆ Ä/׈ Vmüˆ Ä/)‰ VmX‰ Ä/h‰ Vmz‰ Ä/‰ Vm¦‰ Ä/É Vm≠Ä/õ‰ Vm Š Ä/Š Vm$Š Ä/6Š VmJŠ Ä/jŠ VmŒŠ Ä/¦Š VmŠ Ä/ÕŠ VmêŠ Ä/‹ Vm‹ Ä/,‹ Vm>‹ Ä/V‹ Vmp‹ Ä/‹ Vm°‹ Ä/Ì‹ Vmê‹ Ä/ü‹ VmŒ Ä/3Œ VmXŒ Ä/}Œ Vm¤Œ Ä/µŒ VmÈŒ Ä/èŒ Vm Ä/! Vm: Ä/P Vmh Ä/Œ Vm² Ä/Ç VmÞ Ä/õ VmŽ Ä/&Ž Vm@Ž Ä/YŽ VmtŽ Ä/‹Ž Vm¤Ž Ä/¼Ž VmÖŽ Ä/äŽ VmôŽ Ä/ Vm8 Ä/F VmV Ä/c Vmr Ä/ Vm’ Ä/§ Vm¾ Ä/Î Vmà Ä/ñ Vm Ä/ Vm* Ä/9 VmJ Ä/Y Vmj Ä/ Vm– Ä/¬ VmÄ Ä/á Vm‘ Ä/‘ Vm>‘ Ä/`‘ Vm„‘ Ä/ž‘ Vmº‘ Ä/Ç‘ VmÖ‘ Ä/æ‘ Vmø‘ Ä/ ’ Vm"’ Ä/7’ VmN’ Ä/l’ VmŒ’ Ä/¢’ Vmº’ Ä/Ë’ VmÞ’ Ä/î’ Vm“ Ä/“ Vm"“ Ä/5“ VmJ“ Ä/^“ Vmt“ Ä/„“ Vm–“ Ä/ª“ VmÀ“ Ä/Ö“ Vmî“ Ä/” Vm” Ä/,” VmD” Ä/U” Vmh” Ä/ˆ” Vmª” Ä/Ì” Vmð” Ä/• Vm• Ä/3• VmL• Ä/[• Vml• Ä/{• VmŒ• Ä/ž• Vm²• Ä/è• Vm – Ä/D– Vm7T•µC ›µ•N=m [q[†Ç"ô[ôO q0);ÿ` Vmw g¤Œ q•N=mš Èˤ Vm° VmpUÈËQ‰Í Q™ÍQ‰Í Q™ÍPZ Vm&D Vm1 Vm¡A q? q‹ Vm¥}óÎH ûÎQ VmX VmløVmk Vms Vm} Vm† VmBiVm3‚Vm#Z Vm;‚Vm• =m® ϼ ÏÁ Ïy Ïaqª ûÎaq Vm% VmûVm* Øo: ûÎÁ KÑ? qÁ ·Ñy Ϫ Vm®üVmº Vmà VmÖ Vm‘üVm›üVm} Vm£üVmê Vmæ‚VmÁ öÑGVm®üVmRVmw VmûÎÁ ›Ò} Vmº Vm Vmà VmÖ Vmï_ ûÎÁ Ó» =mÛ Vmã Vmì ûÎÁ aÓP ûÎÁ CÔÁ ÕqûÎÁ À×y Ï  qqûÎaq 8 VmÁ Øy Ï•N=mQE QE QÏ­ ™Ýù [™ [™ [™+ Þ; ÞP Þc Þ•N=m [g¤pUÛîpUÛî•N=m¾% VmÌ% VmØ% ïç% VmpUïQÁð QÁðQ޼ Q'ñQÁð QÁðQ޼ Q'ñ•N=m¹hùñœ& Vm¡& ùñÙ& Vmè' q½æ†•N=mQK Qoò±Š†( K ( Vm$( †•N=m( [ó™( Vm§( [ó¹( Vm•N=mQsG Q_S QVm±Š†•N=m7 ô„ Vm:„ VmA„ VmI„ VmP„ VmX„ Vma„ Vmi„ Vmr„ Vmz„ Vmƒ„ VmŒ„ Vm–„ VmŸ„ Vm¨„ Vm¸„ VmK) Vm¯„ Vm‹ Vm!‹ Vm<= Vm [Vm [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [%ä [; [ÛŽ [( [¿Ï [ô [®"Qq Q†Q¯… Q† [µwQõù Qýù [Vm [-Œ [yŒ [»Œ [ [=m [Ž [%ä [; [%ä [; [ÛŽ [( [¿Ï [ô [®"Qq Q†Q¯… Q† [µwQõù Qýù•N=my) Vm) Vm‹) Vm‘) Vmš) Vm¢) (û¦) Vmâ= Vm¬) VmQK Q†Qýù QýùQ†Quü Q†Qýù QýùQ†Qýù Q=mQ† [†Q¸ý Q†QK Q†Qýù QýùQ†Quü Q†Qýù QýùQ†Qýù Q=mQ† [†Q¸ý Q†•N=mT* dþ} Vm[* dþd* Vmo* dþ Vm•N=mÚ* ½þð* Vm+ ½þ&+ Vm•N=m, ÿ, Vm0, ÿX, Vm‚, ÿª, Vm•N=m6. VmK. ÿd. Vm. ÿ”. Vm [† [†•N=mˆ/ Vmž/ i´/ Vm [† [†•N=mQ0 Vmj0 Þƒ0 Vm [† [†•N=m21 VmK1 _d1 Vm [† [†•N=m2 Vm.2 àI2 Vm [† [†•N=m3 Vm3 i83 VmU3 iq3 Vm3 i®3 VmÏ3 iñ3 Vm [† [†•N=m [Vm•N=m6  16 VmH6  V6 Vmf6  p6 Vm•N=mQ’f Q¸ý•N=mF7 Vm^7 Vmz7 Vm’7 Vm«7 VmÄ7 VmÜ7 Vm÷7 Vm8 Vm,8 Vm?8 VmQ¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Qn:Q†Q¸ý Qn:Q†Q@  QL Q†Q¸ý Q®mQ†Q¸ý Q®mQ†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Q†Q¸ý Qn:Q†Q¸ý Qn:Q†Q@  QL Q†Q¸ý Q®mQ†Q¸ý Q®mQ†•N=m­: Vmk‰ Vm¹: Vm ‹ Vm‹ VmÈ: Vm¬) Vmâ= VmÎ: Vmæ: Vm÷: Vm; Vm; Vm'; Vm<; Vm±Š† [zQn: Q×Q®m+Qoò1Q×7QVm•†Qn: QzQ×+Q®m1Qoò7Qו†Qã Q†Q=m Qn:Q†Qn: Qn:Q†Q¸ý Q† [†Qn: QyQ†Qn: Q†Qn: Qn:Q†Qn: Q=mQ†Qõù Q†QÓä Q†Qn: Qn:Q† [zQn: Q×Q®m+Qoò1Q×7QVm•†Qn: QzQ×+Q®m1Qoò7Qו†Qã Q†Q=m Qn:Q†Qn: Qn:Q†Q¸ý Q† [†Qn: QyQ†Qn: Q†Qn: Qn:Q†Qn: Q=mQ†Qõù Q†QÓä Q†Qn: Qn:Q†•N=mà< Vm¨‰ Vm3‡ Vmè< Vm ‹ Vmð< Vmþ< Vmô‚Vm= Vm+‹ Vm3‹ Vm= Vm= Vm2= VmW‰ Vm== Vm†‰ VmK= VmP= Vmk‰ VmY= Vmc= Vmn= VmD‹ Vmx= VmJ‰ Vm= VmŒ= Vm­: Vm”= Vm£= Vm¬= Vmµ= VmÅ= VmÕ= Vmï= Vm > Vm> Vm > Vm+> Vm<> Vm¹“VmO> VmGŒ Vm[> Vmd> Vms> Vmƒ> Vm—> Vm¦> Vm¯> VmÇ> Vmç> Vm? Vm%? Vm;? VmL? Vm±Š†$( †w? †‹? VmQÓä Q†Q×+Q†QÓä QVmQÓä+QVm1Q†Qõù Q†QÓä Qn:Q†Q» QoòQ†QVm Q»Q†Q‡ Q½Qß+Q†QVm Qn:QÓä+Q†Qn: Q¿ Q ;+QØ 1Q†7Q†QV¥ QÓäQÓä+Q†QÁ¥ QsGQÓä+QVm1QÓä7QÓ䕆QÁ¥ Qr"QVm+Qùe1QÓä7QÓ䕆QVm QÓäQ†QVm Q²úQÓä+Q†QVm QVmQÐ#+QÓä1Q†QVm Q†QX$+Qs[1Q†Qs[ QÓäQX$+QVm1Q†QÓä Q†QÓä Q†Q2n QVmQÓä+QÓä1Q†QÓä Q†Q®m+Qoò1Q×7Q†•†QVm QVmQ ;+QÓä1Q†QÓä Q†QX$+Q†1Q†7Q*¦ •2¦ QÓä QÓäQ†+Q*¦ 1Q˜¦ QÓä Q†Qøš QVmQÓä+QÓä1Q†QÓä QÓäQ*+Qs[1QVm7Q†•† [sGQVm QzQH++Q†Qz QÓäQ†QÓä Q†Qz+Q†QÓä QzQÓä+Q†QÓä Q»Q†+Q†QÓä Q»QÓä+Q†1Q†7Q†Qz QÓäQÓä+Q†QÓä QzQÓä+QÓä1Q†QÓä Qn:Q†QÓä Qn:Q†QÓä Qn:Q†QÓä Q†QÓä Q† [†QVm QÓäQ†+Q†Q@  QL QÓä+Q†QÓä Q†QÓä+Q† [†QÉ4 QÓäQ†QÉ4 QÓäQ†Qs[ QVmQVm+Qùe1QÓä7QÓ䕆QÓä Q†Q)7 Q®mQ»+Q®m1Q†Q 8 QÓäQÓä+Q†QÓä QKQ=m+Q†QÓä QKQ=m+QÓä1Q†Qq Q†QÓä Q†QÓä Q†QÓä Q†Q×+Q†QÓä QVmQÓä+QVm1Q†Qõù Q†QÓä Qn:Q†Q» QoòQ†QVm Q»Q†Q‡ Q½Qß+Q†QVm Qn:QÓä+Q†Qn: Q¿ Q ;+QØ 1Q†7Q†QV¥ QÓäQÓä+Q†QÁ¥ QsGQÓä+QVm1QÓä7QÓ䕆QÁ¥ Qr"QVm+Qùe1QÓä7QÓ䕆QVm QÓäQ†QVm Q²úQÓä+Q†QVm QVmQÐ#+QÓä1Q†QVm Q†QX$+Qs[1Q†Qs[ QÓäQX$+QVm1Q†QÓä Q†QÓä Q†Q2n QVmQÓä+QÓä1Q†QÓä Q†Q®m+Qoò1Q×7Q†•†QVm QVmQ ;+QÓä1Q†QÓä Q†QX$+Q†1Q†7Q*¦ •2¦ QÓä QÓäQ†+Q*¦ 1Q˜¦ QÓä Q†Qøš QVmQÓä+QÓä1Q†QÓä QÓäQ*+Qs[1QVm7Q†•† [sGQVm QzQH++Q†Qz QÓäQ†QÓä Q†Qz+Q†QÓä QzQÓä+Q†QÓä Q»Q†+Q†QÓä Q»QÓä+Q†1Q†7Q†Qz QÓäQÓä+Q†QÓä QzQÓä+QÓä1Q†QÓä Qn:Q†QÓä Qn:Q†QÓä Qn:Q†QÓä Q†QÓä Q† [†QVm QÓäQ†+Q†Q@  QL QÓä+Q†QÓä Q†QÓä+Q† [†QÉ4 QÓäQ†QÉ4 QÓäQ†Qs[ QVmQVm+Qùe1QÓä7QÓ䕆QÓä Q†Q)7 Q®mQ»+Q®m1Q†Q 8 QÓäQÓä+Q†QÓä QKQ=m+Q†QÓä QKQ=m+QÓä1Q†Qq Q†QÓä Q†QÓä Q†•N=mþE Vmè< VmF VmQsG QH+QVm+QVm1QVm7Q†Q¨> Qn:Q†Q¨> Q’fQ†QsG QH+QVm+QVm1QVm7Q†Q¨> Qn:Q†Q¨> Q’fQ†•N=m"F Vm.F Vm [sG [sG [sG [sG•N=mnF VmŠF VmQ¸ý Qn:Q†Q¸ý Q†Q¸ý Qn:Q†Q¸ý Q†•N=mG Vmè< VmQ6B Q†QÐ# Qn:Q†Q6B Q†QÐ# Qn:Q†•N=m3‡ Vm4G Vmy) Vmè< VmF Vm;G Vm@G Vm­: Vm ‹ Vmà< Vmð< Vmþ< Vm¹“VmGG VmD‡ Vml® VmUG Vm-s Vm;? Vm±Š†Qõù Q† [†Qùe QsGQVm+QgX1Q†Qùe Qn:Q†Qùe Q’fQ†Qùe QùeQ†QŸF Q†Qz QKêQG+QŸF1QgX7Q†QŸF Q†Qùe Q†QVm QŸFQ†Q‰H Q† [†QsG Q†Qn: Q†QÓä Q†Q¿Ï Q¿Ï Q†QsG QsGQKê+QgX1Q†Qùe Q†Qõù Q† [†Qùe QsGQVm+QgX1Q†Qùe Qn:Q†Qùe Q’fQ†Qùe QùeQ†QŸF Q†Qz QKêQG+QŸF1QgX7Q†QŸF Q†Qùe Q†QVm QŸFQ†Q‰H Q† [†QsG Q†Qn: Q†QÓä Q†Q¿Ï Q¿Ï Q†QsG QsGQKê+QgX1Q†Qùe Q†•N=mQn: Q ;Q†•N=mQùe Q*QÓä+Q†1QÁ• H †±Š†IH zRH Óää¸KêZH Vm±Š†•N=mQpM Q|MQKê•N=mQgX QŠfQVm+QVm1Q’f7QÁð•f•ùe•ve**Óä1*†€*s[ I †"I †7I †•N=mQn: Q†Q’fÁüVm·ÿVm>s Vm›üVmú2O•N=m&J WOeüVmWOæ‚Vm3WOír Vm7J WOCJ VmQJ WO]J VmkJ WOzJ Vm•N=mír Vm;‚VmaƒVm’K VmK VmQP Q»w Q†Qn: Q†Qn: Q†QQ Q†QuQ Q†QP Q»w Q†Qn: Q†Qn: Q†QQ Q†QuQ Q†•N=mûK R L VmL R*L Vm7L RFL VmWL RcL VmqL R}L Vm‹L R–L Vm£L R¯L Vm½L RÍL Vmœe RßL VmóL RM VmM VmQn: Q|MQn: Q|M•N=m¶O VmBiVmþ< Vm¾O Vm¯> Vm£C Vm¦Vm±Š†QgX QÎSQ†QOT Q†QgX QÆTQ†QHU QPUQnU+QÆT1QVm7QVm•ƒU•†Q® Q†QþV Qn:Q† [†QgX QÎSQ†QOT Q†QgX QÆTQ†QHU QPUQnU+QÆT1QVm7QVm•ƒU•†Q® Q†QþV Qn:Q† [†•N=mQ’f QsGQõù+QÁð1Q†±Š†•N=mQ’f QsGQzX+QÁð1QgX7Q†±Š†•N=m P Vm2P Vm [ÆT [ËY [ÆT [ËY•N=mœP Vm—Vm±Š†QHU QÈZQ†Q¸É Q†QHU QÈZQ†Q¸É Q†•N=mQ°É Q¦[QÈZ+Q†•N=mQ’f QVmQKê+Qn:1QVm7QÁð•gX•†•N=mQ’f Q°\Qy+QK1QÁð7QVm•gX•†±Š†•N=mQ’f QsGQf+Qn:1Q|M7QVm•Vm•Áð•gX***1*†ôP †>|MG'n:•N=mQ ^ Q0^sˆ ^•N=mQ’f QVmQKê•N=mQ°\ QVmQy•N=mQ’f Qk_Qs_+QÁð1QgX7Q†±Š†•N=mQ0` Q9sQ†•N=mœP Vm—Vm±Š†QHU Q9sQ†Q¸É Q†QHU Q9sQ†Q¸É Q†•N=mQ°É QÁaQ9s+Q†±Š†•N=m…Q Vmír VmŒQ Vm›Q Vm­Q Vm»Q Vm;‚VmaƒVm’K VmK VmÊQ Vm±Š†QK Q†Qëç Q†QgX Q’fQ6B+QKê1Q†Qn: QÓäQKê+Q†Q ; QVmQVm+Q†QP Q»w Q†Qn: Q÷eQ†Qn: QKêQ†QQ Q†QMæ QgXQ†Q’f QVmQsG+Q†g1QO7Q’g•Áð•gX•Óä**×1*†QK Q†Qëç Q†QgX Q’fQ6B+QKê1Q†Qn: QÓäQKê+Q†Q ; QVmQVm+Q†QP Q»w Q†Qn: Q÷eQ†Qn: QKêQ†QQ Q†QMæ QgXQ†Q’f QVmQsG+Q†g1QO7Q’g•Áð•gX•Óä**×1*†•N=mŸR Vm®R Vmz‰ Vm½R Vm†VmüæVm…Q VmÆR VmÓR VmãR Vm±Š†QsG QKQ†Q°É Q}jQVm+Q†QVm Q ;Q†Qs[ QÓäQ†Q«k Q†Ql Q†Qz Q†Q’f Q†Q3m Q† [ÇåQsG QKQ†Q°É Q}jQVm+Q†QVm Q ;Q†Qs[ QÓäQ†Q«k Q†Ql Q†Qz Q†Q’f Q†Q3m Q† [Çå•N=mQ0` QÈZQ†•N=mŸR Vm®R VmD‰ Vm†VmüæVm…Q VmÓR VmãR Vm±Š†QsG QKQ†Q°É QÙoQ†QP Q†Q­p Q†Q q Q†QK Q†Q3m Q† [$rQsG QKQ†Q°É QÙoQ†QP Q†Q­p Q†Q q Q†QK Q†Q3m Q† [$r•N=mQK QVmQ}j+QÁð1Q’f7QgX•†±Š†•N=mQK QVmQÙo+QÁð1Q’f7QgX•†•N=mQq QL¤Q†•N=mT Vm,T VmãR VmQ}j Q† [ÇåQK QVmQ}j+QÁð1Q’f7Q†Q}j Q† [ÇåQK QVmQ}j+QÁð1Q’f7Q†•N=mT Vm,T VmãR VmQÙo Q† [$rQK QVmQÙo+QÁð1Q’f7Q†QÙo Q† [$rQK QVmQÙo+QÁð1Q’f7Q†•N=mzT VmƒT VmQ}j Q†Q3m Q†Q}j Q†Q3m Q†•N=mQäx Qðx•N=mQäx Qqy•N=mQ† Q=m•N=m [sGMxqòNsG±Š†•N=mQq QVmQ×¶ +QÁ1Qäx7Q€z•Vm•N=mQq Q×¶ QÁ+Qäx1Q{•N=m,U Vm7U Vm±Š† [| [~| [| [~|•N=mQä~ Q†•N=m¨U Ÿ°U VmºU ŸÄU Vm•N=m*V Vm2V Vm9V € [€Q€ Q=mQ† [€Q€ Q=mQ†•N=m*V Vm…V Vm¯„ Vm‘V Vm¢V Vm¶V VmÀV VmÔV VmæV VmW VmW Vm&W Vm9V € [€Q€ Q=mQ†Q€ Q†Q€ Q†Q€ Q†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q† [ì† [€Q€ Q=mQ†Q€ Q†Q€ Q†Q€ Q†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q=mQ†Q€ Q† [ì†[ØoÇ"†Y [™Õœ £ˆäœ «ˆòœ «ˆþœ £ˆ «ˆ]Y ·ˆmY ¿ˆ [ [™[ /:[ [™[ /:{\ ˆ‹‚\ ‹‡\ ‹\ ‹“\ ‹™\ W™ \ ž‹•N=mQ=m Q=mQÏ•N=mç?“•N=mï?c“o` W™†` W™a µ”a Δ#a [™•N=m&f ç©1f Vm>f ç©Kf VmZf ç©ef Vmrf ç©}f Vm•N=mB¬çV {ãt_çV l úÓi ®il Àƒl þÆ•N=m m ;Ç‹m [™”m [™m [™£m [™¬m ™Ç¸m ¦ÇÍm ³ÇØm ³Çàm ½Çïm ËÇým ÔÇn ÞÇ n ËÇn èÇ$n òÇ5n [™@n [™Jn [™Wn [™ln [™n [™žn [™¶n ÈÒn Èìn [™ÿn [™o È•N=mQq Q=m•N=mQVm QL¤±u Vm¹u L¤[q w [™w [™>w ,ÍZw W™bw W™pw W™‚w W™’w 4Í¥w W™µw 8ͼw t_Äw /:âw t_{| Ί| t_š| Ω| +κ| 8ÎÊ| EÎÝ| RÎä| ZÎþ| t_çV }˜ Vme˜ Ìîɘ >ïÒ˜ lïܘ †ïæ˜  ïñ˜ ºïû˜ Ôï™ Ûï ™ íï™ øïœ àúœ ïúœ ïú$œ W™Aœ [™Qœ üúaq¹ô¯…Å4=mö° œ0ÿ° =m ± =m± ¥0’± =m U=mQU=m’± =mɱ =m U=mQU=m<=m¯u=mã± =mí± q¥0ö± Z1±Šb1² w1¸² s­ò ¯…̲ <2HŠE2•N=mn³ Vm€³ Vmг Vm™³ VmÚ²¯…§³ =m [¯… [¯… [q [¯… [¯… [q•N=môk=m«´ ×;«´ ×;«´ ×;«´ ×;Lµ =mLqÆcÊ =FnÊ b=m¡µ t}í˜èµ =mXü=maqï_ ®ðµ ^®®üVmèµ =maqq®•N=mQ=m QqQ®+Q^®•N=mQ=m Qq•N=mQL¤ QqœÚ‡çV ¢,VmÙ,Vm/® ,?È¡ 8?.¶ O?C¶ ÒË N¶ =m[¶ ¯…}˜ Vmf¶ e?>³ r?.pÒË ¯°ÒË n¶ ?y¶ Ž?sä œ?ƒ¶ ¬?Æë»?¶ Ê?£¶ Ù?Ûëç?èëö? >@±¶ @·¶ @Œ¯ @½¶ @å¹ ‚Bõ¹ œBº ¿Bº âB)º C•N=mJ» ÒFX» Vmh» ÒFt» Vm‚» Vm•» Vm [=m [=m [=m [=möLÒË d¼ ²Hq¼ ÍH¼ ×H“ äH˜¼ ùHÊb=mõ½ =mœÚ‡›¦;ÿÛ*èMŸ Vm¢,VmÙ,Vmò)Vm–¾ t_ľ `n •N=m æ_ Vm†PVm [øa [øaËÄ t_{ãt_ÔÄ ¤fâÄ ¤fðÄ ¶fÅ ¶fÅ ¶fÅ ¶f&Å ¶f3Å ¶f?Å ¶fOÅ ¶f\Å ¶fnÅ ¶fyÅ ¶fÅ ¶fžÅ ¶f¬Å ¶f¾Å ¶fËÅ ¶fØÅ ¶féÅ ¶föÅ ¶fÆ ¶fÆ ¶fÆ ¶f-Æ ¶f9Æ ¶fMÆ ¶fZÆ ¶fdÆ ¶fyÆ ¶f‰Æ ¶f及f§Æ ¶f½Æ ¶fÓÆ ¶fâÆ ¶fýÆ ¶fÇ ¶fÇ ¾fÇ Æfà ;ÿ„¦ iŸVmSà =mYà ¯…á =m"á ¸•N=mcá Vmjá Vmpá VmQq QŸ¹ [(º [šºQq QŸ¹ [(º [šºiz-~Œ\=mÀá λpj Ö»¢^Þ»Ãá æ»Æá ¡ª•N=mJâ Vm[â Vmmâ Vm|â VmŠâ Vmœâ Vm­â Vmºâ VmÇâ Vm×â Vmèâ Vmã Vmã Vm9ã VmRã Vmcã Vmtã Vm‚ã Vmã VmŸã S¼¯ã Vm [I¾ [I¾ [Y¿ [À [§À [§À [·Á [\ [à [µÃ [§À [§À [~Å [~Å [­Æ [VÇ [È [ÌÈ [±É [I¾ [I¾ [Y¿ [À [§À [§À [·Á [\ [à [µÃ [§À [§À [~Å [~Å [­Æ [VÇ [È [ÌÈ [±ÉÊb=mõ½ =m•N=mR ±Ñ ç VmY ±Ñç Vm+o±ÑI„ Vmøk±Ñç Vm$ç ±Ñ*ç Vmm ±Ñ2ç Vm9ç ±ÑAç VmKç VmæŸ ±ÑYç VmùŸ ±Ñnç Vm   ±Ñ€ç Vm  ±ÑŽç Vm(  ±Ñ£ç Vm8  ±Ñµç VmH  ±ÑÇç VmX  ±ÑÙç Vme  ±Ñèç Vmt  ±Ñùç Vm(å±Ñ è Vm„  ±Ñè Vm˜  ±Ñ2è Vm [mÒ [mÒ•N=m [òÒ•N=mQš¹ Q^®Q=m•N=mQš¹ Q^®Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ=m Q=m•N=mQ©Ú Q=mQ=m•N=mQ Q=m•N=mQ=m QHÜQ=mV«ÐæKÓÝ7—n¹ÇÐÒO?Ì•N=mQ® QÞQq+Q^®1Q®7Q^®•N=mQ® QÞQq+Q^®1Q(ß7Q®•^®çV ×Ò Và(î %änß bà/î |à?î ‰àJî =maî =myî =mî =m¨î –à¯î =m¼î ¤àËî =mßî =móî =mï =mï =mβàiÝ q!ï =m>ï =mWï =mnï ºàï –T ï ºàžï Ãà«ï =mÂï Íà€Þ ßàß VmÞ Vm™Þ Vm¥Þ Vm¯Þ VmºÞ VmÅÞ VmÐÞ VmÛÞ VmåÞ VmñÞ VmûÞ Vmß VmWÞ VmfÞ VmsÞ VmÊï äà×ï äàäï äàïï äàûï äàð äàð äà(ð äà6ð äàKð äà]ð äàmð äà~ð äàð äà¢ð äà°ð äà»ð äàÌð äàÚð äàïð äàÿð äàñ äàñ äà)ñ äà7ñ äàEñ äàVñ äà`ñ äàrñ äàˆñ äà”ñ äà¦ñ äàÂñ äàÒñ íàäñ ûàøñ áò /á&ò Má?ò fáWò íànò á‚ò ŒáÀØ á¡ò ®á Û ¿áPÛ Ðá¾ò ááÎò îáäò ÿá+Ø "âþò 3âó fâ.ó {âuÙ ŒâmÕ ™âDó ®âd 's W™| W™‰ '• W™¥ W™µ W™Æ W™Ü W™ê W™ø W™N ` %t %‹ -¬ t_Æ þM Ð :Ü [™[ôÇ"†[8Y]q[¾ Ç"†Y]q[¾ Ç"†Y]q[qÇ"†[qÇ"=mÍ"†[†[qÇ"†[qÇ"†[†[q[qÇ"†[qÇ"q[qÇ"qÍ"†•N=m^ Àk Vmz À‚ VmŒ À– Vmd"À¢ Vm½Àª Vm¶ À¾ VmÈ ÀÑ VmÜ Àã Vmì Àò Vmú À Vm  À Vm‘ô  Ó£=m Àä%¨ ÀžˆÀR‡%•N=mu Vm€ VmQ‹¥ Q-~Q‹¥ QôQ‹¥ Q-~Q‹¥ Qô W™™ W™§ W™¶ W™Ã EÒ MÛ ZÙÍgæ l í l ú l U=mQU=mÊj=mÑ W™É„ l ™u=m£u=m<=m¯u=mc Vmé޼o ޼U=ms †~ †uq‡ %ä®t_¾'t_–¾ À À@ "G -~P i(µ -~•N=mñ Vmû Vm  Vm [-~ [ô [´0 [-~ [ô [´0‰ "2ž 32Ì ‡;Ì ÎÌ ™;¦ ã;¶ ô;à ô;Ð ô;Þ ü;ê ü;ö ü;! <! <! <)! <5! <B! <T! <b! <m! <|! <‰! <“! <¥! <³! <À! <Í! <Ý! <æ! <÷! < " <" <8" <G" <T" <a" <m" <{" <ˆ" <”" <¢" <°" <½" $<Æ" $<Ò" ,<á" ,<ð" ,<# 4< # 4<# << # <<.# <<=# D<K# D<Y# L<c# L<p# L<# L<Š# T<—# T<¦# \<­# \<µ# \<À# \<È# \<Î# \<Ô# \<Ú# \<à# \<æ# \<ì# \<ò# \<ø# \<þ# \<$ \<$ \<$ \<$ \<+$ \<4$ \<;$ \<D$ \<L$ \<Z$ \<_$ \<d$ \<m$ \<w$ \<‚$ \<Š$ \<—$ \<£$ \<¯$ \<¹$ W™¿$ W™Ç$ W™Ñ$ W™Û$ W™å$ W™ï$ W™ù$ W™% W™ % W™% W™!% W™+% W™5% W™?% W™I% W™T% W™^% W™h% W™s% W™}% W™†% W™’% W™% W™¨% W™³% W™¾% W™É% W™Ô% W™ß% W™ê% W™õ% W™& W™ & W™& W™& W™$& W™*& W™0& W™6& W™=& W™E& W™K& W™R& W™^& W™i& W™q& W™y& W™& W™‰& W™‘& W™œ& W™§& W™²& W™½& W™È& W™Í& W™×& W™à& W™æ& W™ì& W™ò& W™ø& W™þ& W™' W™' W™' W™"' W™+' W™4' W™?' W™J' W™U' W™`' W™k' W™v' W™' W™‹' W™–' W™¡' W™­' W™¹' W™Ä' W™Ï' W™Ú' W™å' W™ð' W™û' W™( W™( W™ ( W™( W™( W™"( W™+( W™1( W™6( W™<( W™B( W™H( W™Q( W™W( W™]( W™g( W™q( W™{( W™…( W™( W™™( W™£( W™­( W™¸( W™À( W™È( W™Ð( W™Ù( W™å( W™î( W™ú( W™) W™ ) W™) W™) W™#) W™,) W™6) W™?) W™G) W™X) W™i) W™z) W™‹) W™œ) W™­) W™¾) W™Ï) W™ß) W™ï) W™õ) W™½W™þ) W™* W™* W™ * W™,* W™8* W™D* W™P* W™\* W™g* W™s* W™* W™Œ* W™—* W™£* W™¯* W™»* W™Ç* W™Ó* W™ß* W™ì* W™ú* W™+ W™+ W™$+ W™2+ W™@+ W™N+ W™\+ W™h+ W™s+ W™~+ W™ˆ+ W™’+ W™œ+ W™¥+ W™²+ W™¿+ W™É+ W™Ö+ W™à+ W™í+ W™÷+ W™, W™, W™, W™#, W™-, W™6, W™@, W™F, W™L, W™U, W™[, W™d, W™l, W™x, W™€, W™‰, W™‘, W™™, W™¢, W™ª, W™µ, W™Á, W™Í, W™Ø, W™æ, W™ñ, W™ø, W™- W™ - W™- W™- W™'- W™4- W™A- W™N- W™Z- `<f- u<t- u<…- \<- \<˜- \<ž- \<¤- \<ª- \<°- \<¶- \<¼- \<Â- \<È- \<Î- \<Ô- \<ß- \<ê- \<ö- \<ý- \<. \<. \<. \<!. \<+. \<5. \<G. \<T. \<`. \<m. \<w. \<. \<Œ. \<š. \<¡. \<©. \<¹. \<Å. \<Ñ. \<Ú. \<é. \<ñ. \<ú. \</ \</ \<"/ \<+/ \<2/ W™;/ W™C/ W™I/ W™O/ W™U/ W™[/ W™a/ W™i/ W™q/ W™}/ W™†/ W™Ž/ W™™/ W™¤/ W™¯/ W™µ/ W™¼/ W™Ã/ W™Ê/ W™Ð/ W™×/ W™Þ/ W™æ/ W™î/ W™ù/ W™0 W™ 0 W™0 W™&0 W™/0 W™90 W™C0 W™O0 W™W0 W™a0 W™l0 W™0 W™0 W™Ÿ0 W™¥0 W™®0 W™¸0 W™Á0 W™Ê0 ‡<Ú0 œ<í0 ±<þ0 Æ<1 Û<&1 ð<=1 \<V1 \<n1 \<‡1 \<Ÿ1 \<¸1 \<Ó1 \<ð1 \< 2 W™02 W™P2 W™q2 W™2 \<±2 \<Ñ2 \<ò2 \<3 \</3 \<M3 \<o3 \<3 \<´3 \<Ô3 \<õ3 \<Å4=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m•N=m´=µFœµµF…O µFO µF–O µFœO µF µF¦O µFûµF¯O µF½O µFäµFÇO µF×O µFäO µFïO µFûO µFP µFP µFP µFg[µF'P µF3P µFm[µF?P µFOP µFZP µFdP µFmP µFuP µF~P µF…P µF¥}µFŒP µFžP µF©P µFµP µFÊP µFbǵFØP µFåP µF¼ÅµFöP µFQ µFQ µF%Q µF|Z H…Z H€Zêô à¢ðô ü¯ õô 5Ý W™KÝ W™fÝ ðô tÝ ðô –Ý ðô »Ý ðô âÝ W™öÝ ðô Þ ðô 0Þ ðô NÞ ðô sÞ ðô •N=mÉc VmÒc öOÛc Vm [ÌQ [ÌQ•N=m [ÔR•N=m'è ËS,è Vm4d ËS;d VmDd ËSNd VmZd ËS`d Vmhd ËSqd Vm|d ËS†d VmGËS¦ð Vm2ËS‹ð Vm9ËS”ð Vm@ËSð Vm’d ËS—d Vm*ŽËS­ñ Vmì ËS”ì Vmžd ËS¤d Vm7ì ËS>ì VmQé ËSXé Vm¬d ËS±d Vm¸d ËS¿d VmÈd ËSÏd VmØd ËSßd Vm'ì ËS.ì VmÙŒËSð Vm‹ê ËS’ê VmmËSÖð VmMËS®ð VmSËS¶ð VmgËSÎð Vmèd ËSìd Vmí ËS–í VmÞŒËS!ð Vmòd ËSúd Vme ËS e Vme ËSe Vm$e ËS-e VmŠŒËSIå Vm8e ËS@e Vmë ËS ë VmÏè ËS×è VmJe ËSQe Vm›ì ËS¡ì Vm™è ËSŸè Vm ËSYð Vm1ŽËS¶ñ VmZe ËS_e Vmfe ËSke Vmýë ËSì Vmre Vme Vme Vm e Vm©e Vm·e VmÉe VmÚe Vmçe Vmóe Vmf Vmf Vmf Vm(f Vm3f VmCf VmMf Vm[f Vmof Vm [q [q [q [q [=m [æV [lW [æV [†X [Y [Y [Z [ÎZ [[ [\ [ž\ [( [=m [%ä [q [q [q [q [=m [æV [lW [æV [†X [Y [Y [Z [ÎZ [[ [\ [ž\ [( [=m [%ä•N=ma '_l VmOm '_\m Vmkm '_{m Vmm '_™m Vm§m '_¶m VmÇm '_×m Vm©$ '_µ$ VmU$ '_b$ Vmq$ '_~$ Vm$ '_š$ Vmém '_ôm Vmk' '_x' Vm] '_h Vmn '_ n Vmá '_î VmW '_d Vmn '_&n Vm3n '_@n VmOn '_\n Vmkn '_xn VmÅ '_Ò Vmû" '_# Vm- '_: Vm;% '_F% VmÃ$ '_Ï$ VmÝ$ '_é$ Vm!% '_-% Vm‡n '_‘n Vm '_* Vm# '_!# Vmn '_«n Vm»n '_Én VmÙn '_ån Vmón '_o Vm÷ '_ Vmo '_!o Vmï '_ù Vm '_ Vm1o '_>o Vmu '_ Vm' '_3 Vm¿# '_Ê# Vm‡' '_—' VmMo '_Xo Vmeo '_po Vmw '_ Vm}o '_o Vm¥o '_·o VmËo '_ào Vm÷o '_p Vmp '_%p Vm9p '_Op Vmgp '_|p Vm“p '_¤p Vm·p '_Çp VmÙp '_ìp Vmq '_q Vm%q '_8q VmMq '_[q Vmkq '_zq Vm‹q '_Ÿq Vmµq '_Ãq VmÓq '_åq Vmùq '_r Vm+r '_;r Vm©' '_¼' VmÑ' '_Ý' Vm•N=m| _*| VmC| _X| Vmo| _~| Vm| _ | Vm³| _Ç| VmÝ| _ð| Vm} _} Vm'} _J} Vmo} _}} Vm} _ž} Vm±} _Â} VmÕ} _ç} Vmû} _ ~ Vm~ _*~ Vm;~ _I~ VmY~ _k~ Vm~ _“~ Vm©~ _¾~ VmÕ~ _æ~ Vmù~ _  Vm _, Vm? _P Vm Š _Š Vmc _s Vm… _“ Vm£ _® Vm» _É VmÙ _ç Vm÷ _€ Vm€ _3€ VmO€ _e€ Vm}€ _”€ Vm›Š ˜h­Š W™¶Š W™½Š žh•N=mð“ Coô“ Vmú“ Coþ“ Vm@” »Œ H” »Œ Y” =mg” =m|” =mŒ” »Œ ¡” »Œ ±” W™a%äf– =mv– =m‚– =m‘– =mŸ– =m°– =mÅ– =mÚ– »Œ î– »Œ ¡” =m±” W™a%ä[=m)™ »Œ q»Œ 7™ yŒ D™ yŒ ±” W™‚– =mš =m$š =mq»Œ ±” W™¡” =mY” =m’š »Œ Ÿš »Œ ¬š »Œ Áš »Œ ±” W™a=mÆ› =mÓ› =må› Vm±” W™Æ› =m{˜=mAœ =mJœ =m±” W™™œ =m¢œ =m­œ =m´œ =m»œ =mÇœ »Œ М »Œ ݬ=m¡” =m±” W™Í çoÔ ïoq¯…a¯…¡” =mY” =m’š »Œ Ÿš »Œ q=mKŸ =mVŸ =mŸ– =m¯¢ ³rÒ¢ ärþ¢ =m£ =m!£ =m1£ =m9£ ¯…࣠Bs¤ qs,¤ ¡sO¤ Ðsx¤ ýs˜¤ =mª¤ -t¾¤ =mΤ =mठ=mó¤ =m¦ n¦ n4¦ nL¦ nϦ nç¦ n§ n§ n § n1§ nC§ n_§ nq§ nŒ§ nŸ§ n°§ nç nا nø§ n¨ nA¨ n]¨ n{¨ nËÄ t_Ÿ¬ t_p³ Vmy³ -ª ‡ ¥ ´ ÛZ- Л/´ é›;´ œG´ &œS´ Dœd´ gœq´ ‰œ‚´ ¼œ´ Úœ›´ üœ¦´ ´´ üœŒ¶ ¦¶ 1¦«¶ B¦¹¶ O¦ɶ `¦ܶ ¦ð¶ ž¦· «¦_[þ q®aq£¸ qEb qѸ J©Û¸ S©ê¸ J©aqVmô¸ [©•N=mv¹ ®©€¹ VmŒ¹ ®©—¹ Vm¤¹ ®©½¹ Vmع ®©ó¹ Vm•N=mQE QªQVm+Qª•N=mQŒª Q^®Ìü®œµE B» ^®N» ª`» Vmp» ª{» ”ª•N=mþ» Vm¼ Vm ¼ VmQŠ« QV®Q¬ QV® [®QŠ« QV®Q¬ QV® [®•N=m¦¼ Vm³¼ Vm¾¼ VmQ® Q{®Q® Q{® [®Q® Q{®Q® Q{® [®!½ q(½ Vm<½ ®•N=mQE QV®Q!®•N=mQ›° Q^®Q®œµE ´®§½ ›°²½ !®Á½ V®B» ^®ú°•N=m'¾ Vm3¾ Vm?¾ VmM¾ Vm[¾ Vmg¾ Vmu¾ Vm„¾ Vm‘¾ VmQVm Qü±Q=m+Q=mQVm Qü±Q=mQVm Qü±Q=m+Q=m1Q=mQVm Qü±Q=mQü± Q=mQ=mQVm Qü±Q×H+Q=mQVm Qü±Qü± Q=mQÖ» Q{®QVm Qü±Q=m+Q=mQVm Qü±Q=mQVm Qü±Q=m+Q=m1Q=mQVm Qü±Q=mQü± Q=mQ=mQVm Qü±Q×H+Q=mQVm Qü±Qü± Q=mQÖ» Q{®¼¿ V®÷!®É¿ ”¶Ñ¿  ¶(À ð¶6À ð¶GÀ ªUÀ VmeÀ ¥À ªÀ Vm À  ¶•N=mÓÁ Vm¶O Vm [|· [ú· [|· [ú·{ãt_‘ t_ŸÂ Ω  ü¹Ú ºõ =6 à º&à 3à Fà )ºVà :ºdà Fºvà Rºà ¤Ã ^º½Ã [™ØÃ oºëà t_òà wºÄ ºÄ ‰º*Ä ‘º9Ä W™JÄ W™_Ä W™tÄ W™…Ä [™’Ä [™ŸÄ [™³Ä [™ÇÄ [™ÚÄ [™ìÄ [™üÄ [™Å [™Å [™%Å [™=Å [™TÅ [™vÅ [™…Å [™•Å [™ªÅ [™µÅ [™ÍÅ [™ÙÅ [™åÅ [™òÅ [™þÅ [™ Æ [™Æ [™$Æ [™0Æ [™;Æ [™HÆ [™UÆ [™`Æ [™kÆ [™xÆ [™†Æ [™¢Æ [™ºÆ [™ÔÆ [™íÆ ™ºôÆ ã ýÆ ™ºÇ ™º Ç ™ºÇ [™3Ç [™MÇ ¢º[Ç ªºpÇ ²º~Ç ººÇ º›Ç ʺ¢Ç Öº°Ç Þº¹Ç êºËÇ òºÔÇ þº¦# \<­# \<µ# \<À# \<È# \<Î# \<Ô# \<Ú# \<à# \<æ# \<ì# \<ò# \<ø# \<þ# \<$ \<$ \<$ \<$ \<+$ \<4$ \<;$ \<D$ \<L$ \<Z$ \<_$ \<d$ \<m$ \<w$ \<‚$ \<Š$ \<—$ \<çÇ [™ È [™3È [™QÈ [™pÈ [™‘È [™´È [™ÕÈ [™òÈ »þÈ »É ˜hÉ ˜h [Ñþ•N=mŠñ Vm–ñ Vm§ñ Vm­ñ VmÉg¯…¸ñ ¯… [¯… [¯… [¯… [¯…\ò qiò Åvò ÎŒò Vm¡ò Ú±ò ;ÿaq¦ó ÅڲΫó VmݬÚ¸ó ;ÿ¿ó =m  qLqô Vm,Åaqô Vm¦ó Å•N=m –ªº ”Vm(ÔVmÕô VmÀ{ Vmàô Vmìô VmZP l©P x¶  qúô q [l [x¶ [l [x¶•N=m [Æ•õ =mšõ Ûšõ Û•N=mMRö Vm ö ö Vmö !ö Vm+ö 4ö Vm?ö Hö VmSö Zö Vm•N=mP÷ ^ÁüVmY÷ ^j÷ Vm}÷ ^®üVm•N=mQ‚½ Q¿ø ‚½ ø ¿ÁüVmj÷ Vm®üVmP÷ Ç}÷ ÇP÷ Ç}÷ Ç•N=mfø Æoø Vmzø Æ‚ø Vmãø Ú‡íø L¤ûø q¶´ =mù ®ù Ú‡ù L¤aq ù =m? q)ù qúô q  qpú E }ú ^®œµE ù Ú‡ù L¤aqB» ^®)ù q? q•N=m¼  Q Vm‹ Vm[…VmÕú VmÝú Vmãú Vmëú Vm<†Vmýú Vm)ù qúô qdP û š¹ œµE û VmB» ^®û VmQÜ  Q® [  [  [® [® [n [ QVm QE Q®QÜ  Q® [  [  [® [® [n [ QVm QE Q®•N=m [Øo[Øoøû Þðµ ^®ï_ ®@ü E Kü ÞXü =miü qrü ^®{ü ®†ü E øû ÞaqXü=m—ü =mðµ ^®ï_ ® ü n†ü E aqq®Âý (°Ñý ®äý ^®ôý (°Ìü®B» ^®aqøû ÞXü=mþý ^®‘— ®¡þ jü Ìü®Ëa ®aq†ü E ªþ ®•N=mð“ Oô“ Vmÿ Oÿ Vmÿ Oÿ Vm`ÿ Åoÿ Å|ÿ ÅŠÿ q•ÿ Åžÿ Å¥ÿ ÅbÇq; J =mU =mb =mp =m’±  U=mQU=m<=m¯u=m•N=m¯„ Vm:„ Vm¨„ VmA„ VmP„ Vma„ Vmr„ VmI„ VmX„ Vmi„ Vmz„ Vm–„ VmŸ„ Vmt*¹“Vm\“Vm# Vm‹ Vm [;ÿ [Vm [¿Ï [-Œ [»Œ [=m [%ä [yŒ [ [Ž [; [ÛŽ [( [¡ª [[í Q® Qé [;ÿ [Vm [¿Ï [-Œ [»Œ [=m [%ä [yŒ [ [Ž [; [ÛŽ [( [¡ª [[í Q® Qé ú°øk¯…•N=m] Vmo Vmê¯ ¥ [£ [¥ [£ [¥•N=mÇ · Ì VmÓ · Ù Vmá · ç Vmï · õ Vmý ·  Vm  ·  Vm ·  Vm' · - Vm5 · ; VmC · I VmQ · W Vm_ · d Vmk · p Vmw · ~ Vm•N=my Vm‚ Vm¸…Vm [® [ú° [° [® [ú° [°•N=m¿ VmÄ VmÉ VmÎ Vm [=m [%ä [ÛŽ [( [=m [%ä [ÛŽ [( •N=mr % Vm %% Vm•N=m’ è%š Vm¤ è%¯ Vm¼ è%Ç VmÔ è%ß Vm•N=m> I&Àa Vm¯ I&» Vm•N=m ¢&- Vm? ¢&M Vm•N=mÛ 'â Vmë 'ò Vmû ' Vm ' Vm! '+ Vm7 '> VmG 'Q Vm] 'd Vmm 'w Vmƒ ' Vm™ '¤ Vm± '» Vm•N=mÝ ã ä Vmí ã ø Vm ã  Vm# ã * Vm3 ã : VmC ã M VmY ã ` Vmi ã p Vmy ã ƒ Vm ã – VmŸ ã © Vmµ Vm¿ VmÍ VmÞ ã å Vmî ã ù Vm ã  Vm$ ã + Vm4 ã > VmJ ã Q VmZ ã a Vmj ã t Vm€ ã ‡ Vm ã › Vm¨ ã ¶ VmÆ ã Í VmÖ ã Ü Vmä ã ë Vmô ã û Vm ã  Vm ã ! Vm* ã 1 Vm: ã F VmT ã [ Vmd Vmm Vmw Vm‚ VmŒ Vm– Vm¡ Vm« Vmµ Vm¿ VmÆ VmÎ VmØ Vmã ã é Vmñ Vmú Vm Vm Vm$ Vm. Vm9 ã A VmK ã X Vmg ã s Vm Vm‹ ã • Vm¡ Vm¬ Vm¶ Vm VmÍ VmØ Vmâ Vmì Vm÷ Vm Vm Vm Vm) Vm5 Vm? VmI VmQ Vm[ Vmi Vmt Vm VmŠ Vm– Vm¥ Vm´ Vm¿ ã Ç VmÑ VmÞ ã ë Vmú Vm ã  Vm Vm' ã 1 Vm= ã H VmU Vm_ Vmk Vmw Vmˆ Vm [¢/ [¢/ [¢/Q¢/ Q¡0 [ [ Qλ QÞ»Q¢/ [ [ [ Qλ QÞ»Q¢/ [ [=m [ú°Q#4 Q=mQ=m [¬4QÖ» Qú°Q(ßQÖ» Qú°Q(ßQÖ» Q®Qú°+Q(ßQÖ» QnQ(ß [ú°Qú° Q(ß [=mQÞ» Q°Qλ QÞ»Q° [° [°QÞ» Q°Qλ QÞ»Q° [q [® [® [.; [ú° [® [®Qλ QÞ»Q®Qλ QÞ»Q® [® [® [® [® [¢/ [¢/Qæ» QVmQÜ +Q®QÜ  Q®QÜ  Q®QÜ  Q® [® [® [ÃBQλ QÞ»Qλ QÞ» [®Q=m Q=m [îD [¢/ [¢/ [¢/Q¢/ Q¡0 [ [ Qλ QÞ»Q¢/ [ [ [ Qλ QÞ»Q¢/ [ [=m [ú°Q#4 Q=mQ=m [¬4QÖ» Qú°Q(ßQÖ» Qú°Q(ßQÖ» Q®Qú°+Q(ßQÖ» QnQ(ß [ú°Qú° Q(ß [=mQÞ» Q°Qλ QÞ»Q° [° [°QÞ» Q°Qλ QÞ»Q° [q [® [® [.; [ú° [® [®Qλ QÞ»Q®Qλ QÞ»Q® [® [® [® [® [¢/ [¢/Qæ» QVmQÜ +Q®QÜ  Q®QÜ  Q®QÜ  Q® [® [® [ÃBQλ QÞ»Qλ QÞ» [®Q=m Q=m [îD•N=m [Øoì ËGÿ ØG éG1 ËGL úGm åH{ óH I¢ IP =m[ qqt=m® )7» 6ÎË s­•N=m8! VmG! VmT! Vmd! Vm [LQkL QwLQw Q¥Q¥ Q^M [LQkL QwLQw Q¥Q¥ Q^M•N=mñ! Vmþ! Vm " Vm [¥ [¥ [ÚO [¥ [¥ [ÚO•N=m" Vmš" Vm [® [¥ [® [¥q®å" VmÖa Vm# =m# Vm± R‡ ¥#  ¶•N=m¥}TRÕô Vm¬# TR¿# VmÔ# TRÖ Vmæ# TRà Vm÷# TRº Vmo* TR VmT* TR} Vm•N=m¯„ Vm:„ Vm¨„ VmÒ$ VmP„ Vma„ Vmr„ VmÙ$ VmX„ Vmi„ Vmz„ Vm–„ VmŸ„ Vmt*­R¹“Vm [q [Vm [ [-Œ [»Œ [=m [%ä [yŒ [ [Ž [; [ÛŽ [( [q [Vm [ [-Œ [»Œ [=m [%ä [yŒ [ [Ž [; [ÛŽ [( •N=mpUèW bVm % Vm% Vm#% Vm0% èW9% VmD% èWJ% VmR% èWY% Vmb% èWi% Vmr% èW{% Vm†% èWŒ% Vm”% èW% Vm¨% èWVm¼ èWQ Vm oèW:„ VmdÁèWÒ$ Vm0oèWP„ Vm=oèWa„ VmJoèWr„ VmfoèW–„ VmmoèWŸ„ Vm+oèWI„ Vm6oèWX„ VmCoèWi„ VmPoèWz„ Vm‹ Vm¯% èW³% Vm¹% èW¾% Vm èW÷“VmÅ% èWË% VmÓ% èWØ% Vmß% èWè% Vmó% èWý% Vm3èW;‚Vm–‡èWuVm & Vm& èW& Vm)& èW5& VmQ¯… QqQq+Q¯… [=m [=mQ—Y Q£YQ;Z Q;ÿQ¯… QqQq+Q¯… [=m [=mQ—Y Q£YQ;Z Q;ÿ•N=mpUÙZ bVmt*ÙZ¹“Vm=* ÙZE* Vm0% ÙZ9% VmyoÙZ¸„ VmO* ÙZT* VmÓ% ÙZØ% VmD% ÙZJ% VmR% ÙZY% Vmß% ÙZè% Vmó% ÙZý% VmÆÁÙZ & Vm–‡ÙZuVm[* ÙZc* Vmm* ÙZt* Vm}* ÙZ‰* Vm])ÙZþ< Vm—* ÙZ * Vmm ÙZ2ç Vm€eÙZ«* Vm´* ÙZ¼* VmÆ* ÙZÕ* Vmæ* ÙZó* Vm+ ÙZ + Vm+ ÙZ+ Vm"+ ÙZ(+ Vm¼ ÙZQ Vm oÙZ:„ VmdÁÙZÒ$ Vm0oÙZP„ Vm=oÙZa„ VmJoÙZr„ VmfoÙZ–„ VmmoÙZŸ„ VmiÁÙZÙ$ Vm6oÙZX„ VmCoÙZi„ VmPoÙZz„ Vm0+ ÙZ4+ Vm‹ Vm:+ Vmãú Vm¯% ÙZ³% Vm¹% ÙZ¾% Vm [;Z [;Z [;Z [;Z [;Z [;Z•N=m . ð\(. Vm2. ð\9. Vm¡)ð\P= VmB. ð\G. VmN. ð\Y. Vmf. ð\p. Vm|. ð\‰. Vm˜. ð\Ÿ. Vm¨. ð\¯. Vm¸. ð\Â. VmÎ. ð\Ú. Vmè. ð\ó. Vm/ ð\ / Vm/ ð\-/ Vm@/ ð\R/ Vmf/ ð\w/ VmŠ/ ð\¢/ Vm¼/ ð\É/ Vm•N=mQQ] Q¯…•N=m–3 Vm¦3 Vmê¯ ,^ [,^ [†_ [,^ [†_•N=m 4 4`4 Vm&4 4`.4 Vm84 4`A4 Vm•N=m 4 •`4 Vm&4 •`.4 Vm84 •`A4 Vm•N=m4ö`¦VmÙ4 ö`ß4 Vmç4 ö`ï4 Vmù4 ö`5 Vm 5 ö`5 Vm!5 ö`(5 Vm•N=m4Wa¦Vm6 Wa6 Vm 6 Wa6 Vm6 Wa#6 VmŠ6 laqøû ¸a6 Àa6 Vm¦6 Vm°6 ÈaÆ6 Ðaa;ÿq®MR^ü Ìy —Y% Vm VmûVmøµS©Ìy —Yq®øµS©•N=mQ(° Q®ôý (°Ìü®›üVm·üVmI8 Vm£üVm•N=m}÷ `c®üVmÐ8 `cÖ8 Vm®‰`cc“VmÞ8 `cé8 Vm‘üVm [d [d•N=mX9 Vm]9 Vmg9 ‡d£üVmp9 ‡dw9 Vm [Þd [Ae [Þd [Ae•N=m [»e›Çe•N=mƒ²efX9 Vmp9 efw9 Vm: ef : Vm•N=mO: ÓfZ: Vmg: Ófq: Vm}: Óf‹: VmaqGl ^®:; 4gC; VmøµS©^; Vm€; Vmaqó< _gøû Þ¶‰gí —ggú< ð¶= og= wg= Vm"= Vm,= Vm‰Âg9= VmE= VmR= Vmê VmRVm^= Vmp= Vm= Vm= Vm—= Vm¢= >®øµS©°= ^®‡ ‡gX9 Vm± RµÃÞd#  ¶# =mÖa Vm¿= Vmæ‚Vm®üVmÒ= Vm‘üVm›üVm·üVmI8 Vm£üVm ü n•N=m [Shê¯ vhq¡ªaq=A VmRVmN(°X(°MA «iXA ·iøµS©•N=m [ jê¯ jaq=A VmRVm3B «i‰«iøû ‚½q®=B ^ü AŸ ^®øµS©•N=m [Þjê¯ îjaqq®®üVmú< ð¶økÅ`^ü ɱ s­RVmÌy —Y´B Vmw VmGVmøµS©•N=m [¬kê¯ ¼kBC lLC ú°•N=m [)mê¯ Dm•N=m6 Án#6 VmJ‰ VmšC Vm [p [p [p [p{˜s­ÀC ýp•N=mÚC >qæC VmôC >qúC Vm•N=m6 Ÿq6 Vm6 Ÿq#6 Vm 6 Ÿq6 Vm•N=mT* r} Vmo* r Vm\D Vm [ð¶ [ð¶•N=m-‚þs3‚VmþsløVm3þs;‚VmkþsBiVm|D þsmiVm…D Vm [t [t•N=m [Øo E pu[E ˜uaq¢= >®ú<  u£üVm#Z VmbE VmqE Vm|¨uRVmÊj°u~E ¸uŠE ^®•E ¡ªHŠÀu‰Âg9= VmE Èu¤E Ðu°E Øu¾E àuÅE èuøµS©3‚Vm;‚VmBiVmmiVm,Z Vm•N=mQ¯v QÐvê¯ ™cG ðvaqú< ð¶¼Å.zøµS©•N=m [Rzê¯ dz4Ú‡aqºG Vmú<  u¼Å.zøµS©•N=m [{ê¯ ¡{•N=mT* è|} Vmo* è| Vm•N=m ”Vm"H VmÕô Vm [©}Ql Q=m [x¶ [©}Ql Q=m [x¶aqw?y@{A}BCDƒE…H‡J‰Q‹P‹SRTU‘W“V“Y•X•[—Z—]™\™_›^›a`eŸdŸg¡~£…¥‰§Š©Œ«­¯‘±’³“µ”·•¹–»—½˜¿™ÁšÃ›ÅœÇɞ˟͠ϡѢӣդץ٪ۯݷ߸á»ãºãÄå×çÚéÛëÜíÝïâñãóçõë÷÷ùøûùýÿ    ,;><=JOMPNd!i#n%o'p)s+u-v/~135Œ7•9’;”=?ŸA¡C£EªG¸IÃKÆMÇOÏQÍQÐSÎSÓUÒUÕWÔWìYè[é]ê_ëaöc÷eøgùiúkûmüoýq s u wy{}ƒ…‡‰G‹567‘8“9•:—;™<›=>Ÿ?¡@£A¥B§C©D«E­F¯R±S³TµU·V¹W»X½Y¿]Á^ÃaÅcÇdÉeËfÍgÏhÑiÓrÕl×mÙnÛoÝpßqá„ã~åç€éë‚íƒï•ñó’õ”÷ùžû ý¢ÿ¤¥§©´ ¬ ­ ¯±²³¼½¿ÁÂÄ!Å#Æ%Ç'È)Ë+Ì-Ñ/Ý1×3Ø5Ú7Ü9é;ë=ì?ïAñCòEýGõIöKøMúOüQS U W Y[]_ace#g$i%k'm(o.q/s0u1w2y<{=}>?BƒC…P‡H‰I‹JKM‘O“[•]—_™a›gdŸf¡j£l¥m§o©q«r­}¯v±x³yµz·{¹|»€½‚¿ƒÁ…ÇňÇɋˌÍÏŽÑ£Ó›Õœ×ٞ۟ݠߢá¦ã¨åªç«é¬ë­í®ï¯ñ°óÆõÊ÷ËùÌûÍýÎÿÏÐØÞß ð ê ëìíïúþ    !* #+ %< 'D )E +F -M /L /O 1N 1g 3k 5· 7´ 9µ ;¶ =Ä ?à Aî CU EV GW IX K[ MY M\ OZ O’ Q“ S” U• WŸ Y¯ [° ]± _² a³ cÈ eÉ gÊ iË kÙ mÕ oÖ q× sØ u* w+ y, {- }. ƒˆ…‡Ž‰Ý‹Þ÷‘e“X•Z—\™^›`bŸd¡h£j¥l§n©p«r­t¯v±x³zµ|·~¹€»‚½K¿LÁMÃNÅOÇPÉQËRÍSÏTÑUÓVÕW×XÙYÛZÝ[ß\á]ã^å_ç`éaëbícïdñeófõg÷hùiûjýkÿlmnop q r stuvwxyz{|!}#~%'€)+‚-„/…1†3‡5ˆ7‰9Š;‹=Œ?AŽCEG‘I’K“M”O•Q–S¥U¦W§Y¨[©]ª_ÊaÉaÑcÎeÐgÙiÛkÝmßoðqãsäuåwæyç{é}ëíïƒô…ö‡÷‰ù‹ûýÿ‘“•—™› Ÿ ¡£¥§©«­¯± ³!µ#·?¹B»C½D¿KÁYÃTÅVÇWÉXËdÍfÏiÑkÓmÕn×oÙ€Û݂߃á„ã…å†ç‡éëžíŸï ñ¡ó¢õ£÷ ù5ûCýBÿVQSUX Y \ ]_`abdefgi!j#l%m'n)o+q-r/s1t3€5w7y9{;}=?‚AƒC†E‡G‰IŠK‹MŒOQSU‘W’Y”[•]–_—a™cše›gœižkŸm¡o¢q£s¤u¥w§y¨{©}ª¬­ƒ®…¯‡±‰²‹³´â‘ß“á•ä—å™è›êìŸî¡ú£÷¥ù§ý©þ«­¯±³µ·¹ »½¿ÁÃÅÇÉËÍ-Ï/Ñ1Ó3Õ5×7ÙBÛ<Ý=ß?áAãDåEçFéGëMíNïPñQóRõU÷VùXûYýZÿg|~ƒ … ‡ ‰“ŒŽ’—˜™š!›#%ž'Ÿ) +¢-£/¤1¥3§5¨7ª9«;¬=­?®A°C±E²G³IµK¶M·O¸QºS»UÝWÖYØ[Ú]Ü_áaâcãeägåiækèméoêqësìuîwïyð{ñ}òôõƒ÷…ø‡ù‰ú‹ûüþ‘ÿ“•—™›Ÿ¡£ ¥ §©«¶­ç¯é±è±ù³úµû·ü¹ý»þ½ÿ¿ÁÃÅÇÉËÍÏÑ"Ó2Õ4×5ىۊ݋ߌáãŽåç·é¸ëºí ï.ñ8óBõL÷MùNûXýYÿcdnop z { |†‡‘’œž¨©!³#´%¾'¿)À+Ê-Ô/Õ1÷3ï5ð7ñ9ò;ó=ô?õAöCSEKGLIMKNMOOPQQSRU[WdY`[a]b_cavcqesgtiukƒm…oˆqŠsuŽwy•{–}Ÿžƒ«…¨‡©‰ª‹­®‘¯‘“°“ •±•!—²—"™³™´›#µ$Ÿ¶Ÿ%¡·¡&£¸£'¥¹¥(§º§)©»©*«¼«+­½­,¯¾¯-±¿±.³À³/µÁµ0·Â·1¹Ã¹2»Ä»Å½3¿Æ¿4ÁÇÁ5ÃÈÃ6ÅÉÅ7ÇÊÇ8ÉËÉ9ËÌË:ÍÍÍ;ÏÎÏ<ÑÏÑ=ÓÐÓ>ÕÑÕ?×Ò×@ÙÓÙ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 í [î\ï]ð^ñ_ò`óaôbõcöd!÷!e#ø#f%ù%g'ú'h)û)i+ü+j-ý-k/þ/l1ÿ1m33n55o77p99q;;r==s??tAAuCCvE EwG GxI IyK KzM M{OO|QQ}SS~UUWW€YY[[‚]]ƒ__„aa…cc†eegi¤k¥m¦o§q¨s©uªw¯y³{´}µ¶·ƒ¸…¹‡º‰»‹¼½¾‘¿“À•Á—™ÛÄşơǣȥɧʩ˫̭ͯαϳеѷҹӻԽտÖÁ×ÃØÅÙÇÚÉÛËÜÍÝÏÞÑßÓàÕá×âÙãÛäÝåßæáçãèåéçêéëëìííïîñïóðõñ÷òùóûôýõÿö ÷ ø ù ú û ü ý þ ÿ       ! # %  '  )  +  -  / 1 3 5 7 9 ; = ? A C E G I K M O Q S  U !W "Y #[ $] &_ (a ,c e ’g ˜i k m o q s u w  y !{ "} # $ 'ƒ %ƒ &… .‡ +‰ -‹ 1 3 5‘ 7“ ;• :— F™ G› H VŸ ^¡ _£ `¥ a§ b© c« d­ p¯ j± k³ lµ m· n¹ o» ˆ½ „¿ …Á †à ‡Å ‘Ç ’É “Ë ”Í •Ï –Ñ ˜Ó ™Õ š× ›Ù ÏÛ ËÝ Ìß Íá Îã öå Ûç Ýé ßë áí ãï åñ çó éõ ë÷ íù ïû ñý óÿ õ ù û ý ÿ               ! # % ' )  + "- $/ &1 (3 *5 ,7 .9 0; 1= 9? 4A 5C 6E 7G 8I @K =M ?O CQ DS FU HW IY K[ Ÿ] œ_ ža ¢c £e ¤g ¦i §k ¨m ©o ªq «s ­u ®w ¯y ±{ ²} ³ ´ µƒ ¶… í‡ î‰ ï‹ ö ÷ ù‘ ø‘ ý“ þ• ÿ— ™ A› E FŸ M¡  £  ¥ 7 § D © @ « A ­ B ¯ C ± N ³ O µ P · Q ¹ R » S ½ T ¿ U Á V à W Å X Ç Y É Z Ë \ Í ] Ï ^ Ñ _ Ó d Õ ` Õ a × b Ù c Û l Ý h ß i á j ã k å v ç w é x ë y í z ï  ñ œ ó ˜ õ ™ ÷ š ù › û ¬ ý ¨ ÿ ©  ª  «  Ê  Ë Ì Í Î  Ï  Ð  Ñ  Ò  Ó  Ô  Õ  Ö  × ! ë # Û % Ü ' Ý ) Þ + à - â / ä 1 æ 3 è 5 ê 7 î 9 ï ; ð = ñ ? ò A ó C ô E õ G ö I ø K ù M û O ü Q ý S þ U ÿ W !Y ![ !] !_ !a !c  !e  !g  !i  !k !m !o !q !s !u !w !y !{ !} ! ! !ƒ !… !‡ !‰  !‹ !! "! #!‘ %!“ '!• (!— /!™ +!› ,! .!Ÿ 3!¡ 6!£ )· F)¹ W)» X)½ Y)¿ Z)Á [)à \)Å ])Ç ^)É _)Ë a)Í b)Ï c)Ñ d)Ó e)Õ f)× g)Ù i)Û È*Ý É*ß Ê*á û*ã J+å e,ç },é ~,ë ˆ,í ‰,ï Š,ñ ,ó ,õ ‘,÷ ’,ù —,û ˜,ý ™,ÿ š,›, ,¡,¢, §, ¨, ©,ª,¯,¹,º,»,À,Á,Â,Ã,!È,#É,%Ê,'Ë,)Ð,+Ñ,-Ò,/Ó,1Ø,3Ù,5Ú,7Û,9à,;á,=â,?ç,Aè,Cò,Eó,Gô,Iù,Kú,Mû,Oü,Q-S -U-W-Y-[-]-_-a-c-e -g!-i"-k'-m(-o)-q.-s/-u0-w1-y6-{7-}8-9->-ƒ?-…@-‡A-‰F-‹G-H-M-‘N-“O-•T-—^-™h-›i-j-Ÿk-¡p-£q-¥{-§…-©-«™-­£-¯­-±·-³Á-µË-·Ì-¹Í-»Î-½Ï-¿Ð-ÁÕ-ÃÖ-Åä-Çá-Éâ-Ëã-Íç-Ïè-Ñë-Óì-Õî-×ï-Ùð-Ûñ-Ýõ-ßö-á÷-ãø-åù-çú-éû-ëü-íý-ïþ-ñÿ-ó.õ.÷.ù.ûG.ýW.ÿH.ÿX.I.J.K.L.M. N. O. P.Q.R.S.T.U.V.s.m.n.!p.#r.%|.'}.).+€.-./„.1….3‡.5ˆ.7‰.9ž.;œ.=.?©.A¦.C§.E¨.G½.I·.K¸.M¹.Oº.Q».S¼.UÌ.WÉ.YÊ.[Ë.]Ò._Ð.aÑ.câ.eÖ.g×.iØ.kÙ.mÚ.oÛ.qÜ.sÝ.uÞ.wß.yà.{á.}ì./÷.ƒø.…ù.‡ú.‰û.‹ü.ý.þ.‘ÿ.“/•/—/™/›//Ÿ /¡ /£ /¥ /§ /©/«/­/¯/±/³#/µ/·/¹/»/½/¿/Á/Ã/Å/Ç /É!/Ë"/Í%/Ï&/Ñ*/Ó)/Õ/õ?/÷W/ùV/û /ýŸ/ÿª/¦/§/¨/©/ ¹/ ¶/ ·/¸/Á/½/¾/¿/À/Ñ/Å/Æ/!Ç/#È/%É/'Ê/)Ë/+Ì/-Í//Î/1Ï/3Ð/5Ù/7Õ/9Ö/;×/=Ø/?ö/Aó/Cô/Eõ/Gø/Iù/Kû/M60O,0Q-0S.0U/0W00Y10[20]30_40a50c@0eA0gz0is0ku0mw0oy0q}0s~0u0w0y‚0{ƒ0}…0†0ˆ0ƒ‰0…‹0‡Œ0‰0‹00‘0‘“0“”0•–0——0™ž0›š0›0Ÿœ0¡0£°0¥ª0§«0©¬0«­0­®0¯¯0±À0³¼0µ½0·¾0¹¿0»Ð0½Ì0¿Í0ÁÎ0ÃÏ0Åá0ÇÜ0ÉÝ0ËÞ0Íß0Ïà0Ñç0Óå0Õæ0×é0Ùð0Ûì0Ýí0ßî0áï0ãù0åô0çõ0éö0ë÷0íø0ï1ñý0óþ0õÿ0÷1ù 1û1ý1ÿ11 1 1 1  1 1 11111111!11!1#1% 1'31)%1+&1-'1/(11)13*15+17,19-1;.1=/1?01A11C21E51G61I71K81M91O:1Q;1S<1U=1W?1Y@1[A1]C1_D1aE1cG1eH1gI1i%5kG5mf5oa5qb5sc5ud5we5yp5{j5}k5l5m5ƒn5…o5‡è5‰é5‹ê5K8@8‘B8“D8•F8—G8™H8›I8J8ŸN8¡P8£Q8¥R8§S8©U8«V8­W8¯X8±Y8³[8µ]8·_8¹`8»a8½b8¿d8Áe8Ãf8Åg8Çh8Éj8Ër8Ím8Ïn8Ño8Óp8Õq8ׂ8Ùw8Ûy8Ý{8ß}8á~8ã8å€8ç8é…8ë†8íˆ8ï‰8ñ‹8ó8õ8÷8ù’8û“8ý•8ÿ—8œ8š8›8¬8 ¡8 £8 ¥8§8¨8©8ª8«8¯8°8²8³8!µ8#·8%¹8'º8)¼8+½8-¿8/Á81Æ83Ä85Å87E99B9;D9=H9?I9AJ9CL9EM9GO9IP9KQ9MS9OT9QU9SV9UW9WX9YY9[Z9][9_\9a]9c^9e_9gu9ip9kr9mt9ox9qz9s{9u|9w~9y9{€9}‚9„9…9ƒ†9…ˆ9‡‰9‰Š9‹‹9Œ99‘Ž9“¸9•³9—´9™µ9›¶9·9Ÿ»9¡¿9£†:¥‡:§ˆ:©‰:«Š:­‹:¯Œ:±Ž:³ä:µå:·æ:¹ç:»è:½ò:¿þ:Áó:Áô:Ãõ:Åö:Ç÷:Éø:Ëù:Íú:Ïû:Ñÿ:Óü:Ó;Õý:Õ:;×5;Ù6;Û7;Ý8;ß9;áE;ãI;åP<çQ<éR<ë{<íw<ïx<ñy<óz<õ…<÷†<ù‡<ûˆ<ý‰<ÿŠ<Œ<<Ž<< < ’< ›<¥<¦<== =!="=$=#=>!>#>%>'a>)4>+6>-8>/:>1<>3>>5@>7B>9D>;F>=H>?J>AL>CN>EP>GR>IT>KV>MX>OZ>Q\>S^>U`>Wd>Yf>[h>]i>_j>ak>cm>eo>gq>is>ku>mw>oy>qz>s|>u}>w>y€>{‚>}„>†>‡>ƒ‰>…Š>‡‹>‰>‹Ž>>’>‘”>“–>•—>—™>™š>›œ>ž>Ÿ >¡¢>££>¥¤>§¥>©§>«©>­«>¯­>±¯>³±>µ³>·´>¹¶>»·>½¹>¿º>Á¼>þ>ÅÀ>ÇÁ>ÉÃ>ËÄ>ÍÅ>ÏÇ>ÑÈ>ÓÊ>ÕÌ>×Î>ÙÐ>ÛÑ>ÝÓ>ßÔ>áÖ>ãà>åÝ>çß>éã>ëå>íæ>ïè>ñé>óê>õì>÷í>ùï>ûð>ýñ>ÿø>ô>õ>ö>÷> ? ? ????? ? ? ? ? ?!?#?%?'?)?+?-m?/i?1j?3k?5l?7?9}?;~?=??€?A‘?C?EŽ?G?I“?K•?M–?Oš?Q?S¢?U ?W¡?Y¤?[¦?]§?_¨?a±?c­?e®?g¯?i°?kç?mæ?mì?oþ?qü?sý?u@w:@yL@{B@}C@D@E@ƒF@…G@‡H@‰I@‹J@K@¤@‘°@“¬@•­@—®@™¯@› AAŸA¡ A£A¥A§A©A«A­A¯A±A³Aµ A·"A¹#A»$A½BB¿\BÁYBÃZBÅ[BÇ_BÉbBËhBÍdBÍiBÏeBÏjBÑfBÑkBÓgBÓ·BÕÔB××BÙQCÛRCÝSCßTCáUCãZCå[Cç\Cé]Cë^CícCïdCñeCófCõgC÷lCùmCûnCýoCÿpCuCvCwCxC yC ~C C€CŠC‹CŒC–C—C˜C™CšC!›C# C%¡C'¢C)£C+¤C-¥C/ªC1«C3¬C5­C7®C9¯C;´C=µC?¶CA»CC¼CE½CG¾CIÃCKÄCMÅCOÆCQËCSÌCUÍCWÎCYÑC[ÒC]ÓC_ÔCaÖCcÕCcÜCeÝCgÞCißCkáCmâCoãCqðCsèCuéCwêCyëC{íC}ïCóCôCƒöC…÷C‡ùC‰úC‹üCýCD‘D“ D• D— D™ D›DDŸD¡D£D¥ D§!D©"D«#D­KF¯OF±PF³‡FµˆF·‰F¹“F»¥F½›F¿œFÁFÞFÅŸFÇ FÉ¡FË¢FÍ£FϤFÑÌFÓ±FÕ³F×µFÙ·FÛ¹FÝ»Fß½Fá¿FãÁFåÃFçÅFéÇFëÉFíËFïÎFñÐFóÑFõÓF÷ÕFùÖFû×FýÙFÿÚFÜFÝFßFàF áF ãF äFåFæFèFéFêFìFíFîFðF!ñF#òF%ôF'õF)öF+÷F-ùF/úF1ûF3ýF5ÿF7G9G;G=G?GAGC GE GG GI GKGMGOGQGSGUGWGYG[G]G_GaGcGe Gg!Gi"Gk$Gm%Go&Gq(Gs)Gu*Gw+Gy-G{.G}/G1G3Gƒ4G…5G‡6G‰;G‹9G:GCG‘?G“@G•AG—BG™EG›FGGGŸHG¡IG£NG¥LG§MG©eG«VG­XG¯ZG±\G³^Gµ`G·bG¹dG»hG½iG¿kGÁlGÃnGÅoGÇpGÉrGËsGÍtGÏuGÑwGÓxGÕyG×zGÙ|GÛ}GÝ~GßGáGã‚GåƒGç…Gé‡GëˆGíŠGï‹GñGóŽGõG÷‘Gù’Gû“Gý”Gÿ–G—G˜G™G›G œG G žG G¡G¢G¤G«G¨G©GªG®G!¯G#²G%³G' H) H+ H- H/H1H3H5H7H9H;H=H?3HA0HC1HE2HG¾HIºHK»HM¼HO½HQæHSçHUèHWéHYêH[ïH]ðH_ñHaòHcóHeøHgùHiúHkûHmIoIqIsIuIw Iy I{ I}IIIƒI…I‡I‰I‹III‘I“I•0I—)I™*I›+I,IŸ-I¡.I£/I¥2I§3I©4I«5I­:I¯8I±9I³BIµ>I·?I¹@I»AI½HI¿RIÁSIÃTIÅUIÇVIÉWIË^IÍZIÏ[IÑ\IÓ]IÕ`I×iIÙcIÛdIÝeIßfIágIãhIåkIçlIérIëoIípIïqIñtIóuIõ}I÷xIùzIû|Iý€IÿI‚I„I†IˆI ‰I ŠI ŒIŽI”I‘I’I“IšI˜I™IœI!I#¥I% I'¡I)¢I+£I-¤I/§I1¨I3©I5ªI7«I9¬I;­I=®I?½IA±IC²IE³IG´IIµIK¶IM·IO¸IQ¹ISºIU»IW¼IY¿I[ÁI]ÂI_ÃIaÄIcÅIeÆIgÇIiÈIkÉImÊIoËIqÌIsÍIuÎIwÐIyÒI{ÓI}ÔIÕIÖIƒÚI…ÛI‡ÜI‰ÝI‹|M}M~M‘³O“£P•ŸP— P™¡P›¢PÓPŸÏP¡ÐP£ÑP¥ÒP§ÕP©ÖP«×P­ØP¯ÙP±ÚP³ÛPµÜP·äP¹âP»ãP½úP¿ïPÁðPÃñPÅòPÇóPÉôPËõPÍöPÏ÷PÑùPÓýPÕÿP×QÙQÛQÝQßQáQã Qå Qç Qé QëQíQïQñ QóQõQ÷QùQûQýCQÿ@QBQEQFQGQ HQ IQ JQKQLQMQNQOQPQQQRQSQ!TQ#UQ%VQ'WQ)XQ+YQ-]Q/^Q1eQ3fQ5gQ7hQ9jQ;kQ=lQ?mQAoQCpQEqQGrQItQKuQMvQOwQQ‡QS€QU‚QW„QY†Q[‰Q]ŠQ_‹QaŒQcQeQgQi‘Qk’Qm“Qo”Qq•Qs–Qu—Qw˜Qy™Q{šQ}›QœQQƒžQ…ŸQ‡ Q‰¡Q‹¢Q£Q¤Q‘¥Q“¯Q•°Q—±Q™²Q›´QµQŸ¶Q¡¸Q£¹Q¥»Q§¼Q©½Q«¾Q­ÀQ¯ÁQ±ÂQ³ÃQµÅQ·ÆQ¹ÇQ»ÉQ½ÊQ¿ÌQÁÍQÃÎQÅÏQÇóQÉðQËòQÍõQÏöQÑ÷QÓøQÕùQ×úQÙûQÛüQÝýQßþQáÿQãRåRçRéRëRí Rï Rñ Ró RõR÷RùRûRý+Rÿ)R*R-R.R/R 0R 1R 2R3R4R5R6RR?R!@R#AR%BR'CR)IR+GR-HR/KR1LR3MR5NR7OR9PR;QR=RR?SRATRCdRE_RGaRIcRKfRMgROhRQiRSjRUkRWlRYmR[nR]oR_pRaqRcrResRgtRiuRkvRmwRo|Rq}RsRu€RwRy‚R{„R}…R‡RˆRƒ‰R…ŠR‡ŒR‰R‹ŽRR‘R‘’R“”R••R—–R™—R›ÐRÎRŸÏR¡ÒR£ÓR¥ÔR§ÕR©ÖR«×R­ØR¯ÞR±íR³èRµêR·ìR¹ïR»ðR½ñR¿òRÁóRÃôRÅõRÇøRÉûRËüRÍýRÏþRÑSÓSÕS×SÙSÛSÝSß Sá Sã Så SçSéSëSíSïSñ¦Só¢Sõ£S÷¤Sù¥Sû¸Sý±Sÿ²S³S´SµS¶S ·S ½S ¾SÀSÁSÆSÇSÑSÒSTTT!T#T%T'!T)#T+%T-'T/)T1+T3-T5/T71T93T;5T=6T?¼TA¸TC¹TEºTG»TIÇTKUM UO UQ US UUÏUWÐUYÑU[ V]W_ÝVaßVcáVeãVgåViçVkéVmëVoíVqïVsñVuóVwõVy÷V{ùV}ûVýVÿVƒW…W‡W‰W‹ W W W‘W“W•W—W™W›WWŸW¡W£!W¥#W§%W©'W«)W­+W¯-W±/W³0Wµ2W·4W¹6W»8W½:W¿X_?XaAXcBXeEXgGXiIXkJXmLXoMXq_Xs`XuaXwmXynX{oX}qXX€XƒX…‚X‡ƒX‰„X‹…X†X‡X‘ˆX“‰X•ŠX—‹X™ŒX›XŽXŸX¡X£‘X¥’X§“X©”X«•X­–X¯—X±˜X³™XµšX·›X¹œX»X½žX¿ŸXÁ XáXÅ¢XÇ£XɤXË¥XͦXϧXѨXÓ©XÕªX׫XÙ¬XÛ­XÝ®X߯Xá°Xã±Xå²Xç³Xé´XëµXí¶Xï·Xñ¸Xó¹XõºX÷»Xù¼Xû½Xý¾Xÿ¿XÀXÁXÂXÄX ÅX ÓX ÕXÖXØXÙXÚXÛXÜXÝXÞXáX!âX#ãX%äX'åX)æX+çX-éX/êX1ðX3ñX5òX7óX9ôX;õX=ýX?ÿXAYCYEYGYIYK YM YO YQ YS YUYWYYY[Y]Y_YaYcYeYgYiYkYmYoYqYsYuYwYy Y{!Y}"Y#Y$Yƒ%Y…&Y‡'Y‰(Y‹)Y*Y+Y‘,Y“-Y•.Y—/Y™fY›gYwYŸxY¡‡Y£ˆY¥‹Y§ŒY©”Y«•Y­˜Y¯–Y¯™Y±—Y±›Y³œYµ£Y·¤Y¹¦Y»§Y½¨Y¿©YÁªYëYÅ­YǯYɰY˱YͲYϳYÑ´YÓµYÕ¶Y×·YÙ¸YÛ¹YݺYß¼Yá½Yã¾Yå¿YçÂYéÄYëÅYíÆYïÇYñÈYóÉYõÊY÷ËYùÌYûÍYýÎYÿÏY]] ]E] F] v] ‹]Œ]]Ž]'^)^+^-^/^0^!2^#9^%:^';^)<^+=^->^/?^1@^3à^5Å_7Æ_9Ç_; `=`?`A`C`E`GI`IJ`KK`ML`OM`Q¬`S«`U®`W±`Y³`[¸`]¹`_À`aÁ`cÆ`eÇ`gÍ`iÎ`kÏ`mÑ`oaqasauawaya{a}aa!aƒsa…qa‡ra‰|a‹{a~aŒa‘a“‘a•¤a—Ÿa™ a›¡a£aŸ§a¡¨a£«a¥­a§®a©±a«¼a­½a¯¾a±¿a³ÀaµÁa·Âa¹Ãa»ùa½úa¿ûaÁüaÃýaÅþaÇÿaÉbËbÍbÏbÑbÓbÕb×bÙbÛ bÝ bß bá bã båbç9bé:bëbñ?bó@bõAb÷BbùJbûûbýõbÿöb÷bøbùbúb ùc óc ôcõcöc÷cøcdd0d1d2d!3d#4d%5d'6d)öd+÷d-ød/Je1f3f5(f7)f9*f;“f=”f?•fA–fC—fE˜fG™fIšfK›fMœfOfQžfSŸfU fWÕfYÐf[Ñf]Òf_ÓfaÔfcÛfeÙfgÚfiÝfkÞfmßfoàfqáfsâfuãfwäfyåf{æf}çfèféfƒêf…ëf‡ìf‰íf‹îfïfðf‘ñf“òf•óf—ôf™õf›öf÷fŸøf¡ùf£úf¥ûf§üf©ýf«þf­ÿf¯g±g³gµg·g¹g»g½g¿gÁ gà gÅ gÇ gÉ gËgÍgÏgÑgÓgÕg×gÙgÛgÝgßgágãgågçgégëgígï gñ!gó"gõ#g÷$gù%gû&gý'gÿ(g )g *g +g ,g -g .g /g 0g 1g 2g 3g 4g 5g 6g 7g 8g! 9g# :g% ;g' g- ?g/ @g1 Ag3 Bg5 Cg7 Dg9 Eg; Fg= Gg? HgA IgC JgE KgG LgI MgK NgM OgO PgQ QgS RgU SgW TgY Ug[ Vg] Wg_ Xga Ygc Zge [gg \gi ]gk ^gm _go `gq ags bgu cgw dgy eg{ fg} gg hg igƒ jg… kg‡ lg‰ mg‹ ng og pg‘ qg“ rg• sg— tg™ ug› vg wgŸ xg¡ yg£ zg¥ {g§ |g© }g« ~g­ g¯ €g± g³ ‚gµ ƒg· „g¹ …g» †g½ ‡g¿ ˆgÁ ‰gà ŠgÅ ‹gÇ ŒgÉ gË ŽgÍ gÏ gÑ ‘gÓ ’gÕ “g× ”gÙ •gÛ –gÝ —gß ˜gá ™gã šgå ›gç œgé gë žgí Ÿgï  gñ ¡gó ¢gõ £g÷ ¤gù ¥gû ¦gý §gÿ ¨g!©g!ªg!«g!¬g !­g !®g !¯g!°g!±g!²g!³g!´g!µg!¶g!·g!¸g!!¹g#!ºg%!»g'!¼g)!½g+!¾g-!¿g/!Àg1!Ág3!Âg5!Ãg7!Äg9!Åg;!Æg=!Çg?!ÈgA!ÉgC!ÊgE!ËgG!ÌgI!ÍgK!ÎgM!ÏgO!ÐgQ!ÑgS!ÒgU!ÓgW!ÔgY!Õg[!Ög]!×g_!Øga!Ùgc!Úge!Ûgg!Ügi!Ýgk!Þgm!ßgo!àgq!ágs!âgu!ãgw!ägy!åg{!æg}!çg!èg!égƒ!êg…!ëg‡!ìg‰!íg‹!îg!ïg!ðg‘!ñg“!òg•!óg—!ôg™!õg›!ög!÷gŸ!øg¡!ùg£!úg¥!ûg§!üg©!ýg«!þg­!ÿg¯!h±!h³!hµ!h·!h¹!h»!h½!h¿!hÁ! hÃ! hÅ! hÇ! hÉ! hË!hÍ!hÏ!hÑ!hÓ!hÕ!h×!hÙ!hÛ!hÝ!hß!há!hã!hå!hç!hé!hë!hí!hï! hñ!!hó!"hõ!#h÷!$hù!%hû!&hý!'hÿ!(h")h"*h"+h",h "-h ".h "/h"0h"1h"2h"3h"4h"5h"6h"7h"8h!"9h#":h%";h'"h-"?h/"@h1"Ah3"Bh5"Ch7"Dh9"Eh;"Fh="Gh?"HhA"IhC"JhE"KhG"LhI"MhK"NhM"OhO"PhQ"QhS"RhU"ShW"ThY"Uh["Vh]"Wh_"Xha"Yhc"Zhe"[hg"\hi"]hk"^hm"™ho"šhq"›hs"œhu"hw"žhy"Ÿh{" h}"¡h"¢h"£hƒ"¤h…"¥h‡"¦h‰"§h‹"¨h"©h"ªh‘"«h“"¬h•"­h—"®h™"¯h›"°h"±hŸ"²h¡"³h£"´h¥"µh§"·h©"¸h«"¹h­"ºh¯"»h±"¼h³"¾hµ")i·"+i¹"Ji»"Ki½"Zi¿"RiÁ"SiÃ"TiÅ"UiÇ"ViÉ"WiË"XiÍ"YiÏ"jiÑ"giÓ"hiÕ"ii×"uiÙ"xiÛ"€iÝ"|iß"}iá"~iã"iå"iç"Œié"ië"Žií"iï"¤iñ"œió"iõ"ži÷"Ÿiù" iû"¡iý"¢iÿ"£i#¶i#·i#¹i#ºi #»i #¼i #½i#¾i#¿i#Ài#Âi#Ãi#Äi#Åi#Æi#Çi!#Èi##Éi%#Êi'#Ói)#Ïi+#Ði-#Ñi/#Òi1#Ûi3#ëi5#ái7#âi9#ãi;#äi=#åi?#æiA#çiC#èiE#éiG#êiI#óiK#ôiM#õiO#jQ#jS#jU#jW#jY#j[#j]#j_#ja#jc#je#jg#ji#jk#jm#jo# jq#!js#"ju#'jw#(jy#)j{#*j}#3j#-j#.jƒ#/j…#0j‡#1j‰#2j‹#Aj#?j#@j‘#Ij“#Jj•#Pj—#Oj™#Xj›#fj#ej#hjŸ#ij¡#jj£#kj¥#lj§#nj©#oj«#pj­#qj¯#sj±#rj±#tj³#ujµ#vj·#wj¹#xj»#yj½#zj¿#|jÁ#~jÃ#jÅ#€jÇ#jÉ#‚jË#ƒjÍ#„jÏ#…jÑ#†jÓ#‡jÕ#ˆj×#‰jÙ#ŠjÛ#‹jÝ#Œjß#já#Žjã#jå#jç#‘jé#’jë#“jí#”jï#•jñ#˜jó#™jõ#šj÷#›jù# jû#¢jý#£jÿ#¤j$¥j$¦j$§j$¨j $©j $ªj $«j$¬j$­j$®j$¯j$°j$±j$²j$³j$´j!$µj#$¶j%$·j'$¸j)$¹j+$ºj-$»j/$¼j1$½j3$¾j5$¿j7$Àj9$Öj;$Âj;$×j=$Ãj=$Øj?$Äj?$ÅjA$ÆjC$ÙjE$ÇjE$ÈjG$ÉjI$ÚjK$ÊjK$ÛjM$ËjM$ÜjO$ÌjO$ÝjQ$ÍjQ$ÞjS$ÎjS$ßjU$ÏjU$ÐjW$àjY$ÑjY$Òj[$Ój]$Ôj_$Õja$èjc$åje$æjg$çji$ëjk$îjm$ûjo$ðjo$üjq$ñjq$ýjs$òjs$þju$óju$ÿjw$ôjw$õjy$k{$öj{$k}$÷j}$k$øj$k$ùj$kƒ$újƒ$ k…$k‡$k‰$k‹$k$k$k‘$k“$k•$k—$k™$#k›$%k$'kŸ$)k¡$*k£$+k¥$-k§$/k©$1k«$3k­$4k¯$6k±$8k³$:kµ$k»$@k½$Bk¿$DkÁ$FkÃ$GkÅ$HkÇ$IkÉ$JkË$KkÍ$LkÏ$MkÑ$NkÓ$OkÕ$Pk×$QkÙ$RkÛ$SkÝ$Ukß$cká$Ykã$Zkå$[kç$\ké$]kë$^kí$`kï$akñ$bkó$ekõ$gk÷$ikù$jkû$kký$lkÿ$nk%ok%sk%tk%uk %vk %wk %zk%{k%|k%~k%k%€k%k%‚k%‡k%ƒk%„k!%…k#%ˆk%%†k%%Šk'%‹k)%Œk+%k-%k/%k1%‘k3%œk5%’k5%“k7%”k9%•k;%–k=%—k?%˜kA%kC%™kC%žkE%škE%›kG% kI%¡kK%¢kM%£kO%¤kQ%¥kS%¦kU%§kW%¨kY%©k[%ªk]%«k_%­ka%¬ka%®kc%¯ke%ºkg%³ki%µkk%·km%¸ko%¹kq%½ks%¿ku%Ákw%Ãky%Åk{%Çk}%Ék%Êk%Ëkƒ%Ðk…%Ñk‡%Òk‰%Ók‹%Ôk%Ök%×k‘%Øk“%Ùk•%Úk—%Ük™%Ýk›%Þk%ßkŸ%èk¡%çk£%úk¥%òk¥%ûk§%ók§%ük©%ôk©%õk«%ök­%ýk¯%÷k¯%þk±%øk±%ÿk³%ùk³%lµ%lµ%l·%l·%l¹%l»%l½% l¿% lÁ% lÃ% lÅ% lÇ%lÉ%lË%lÍ%lÏ%lÑ%lÓ%lÕ%l×%lÙ%lÛ%lÝ%@lß%'lá%)lã%+lå%-lç%/lé%1lë%3lí%5lï%7lñ%9ló%;lõ%=l÷%?lù%Clû%Dlý%Flÿ%Gl&Hl&Jl&Ll&Ml &Ol &Ql &Sl&Tl&Vl&Xl&Yl&[l&]l&_l&`l&al!&cl#&el%&fl'&hl)&il+&jl-&ll/&nl1&ol3&ql5&sl7&ul9&vl;&xl=&zl?&{lA&}lC&lE&lG&‚lI&ƒlK&…lM&ŽlO&ˆlQ&‰lS&ŠlU&‹lW&ŒlY&l[&l]&‘l_&“la&’la& lc&—le&™lg&›li&lk&žlm&Ÿlo&£lq&¤ls&¥lu&§lw&¨ly&©l{&«l}&¬l&­l&®lƒ&°l…&²l‡&³l‰&´l‹&¶l&·l&¸l‘&ºl“&»l•&¼l—&½l™&¿l›&Àl&ÁlŸ&Âl¡&Ãl£&Îl¥&Ïl§&Ñl©&Ðl©&Ól«&Ôl­&Õl¯&Öl±&×l³&Ølµ&Ùl·&Úl¹&Ûl»&Ül½&Ýl¿&ÞlÁ&ßlÃ&àlÅ&álÇ&âlÉ&ãlË&älÍ&ålÏ&ælÑ&çlÓ&èlÕ&él×&êlÙ&ëlÛ&ìlÝ&ílß&îlá&ïlã&ðlå&ñlç&òlé&ólë&ôlí&õlï&ölñ&÷ló&ølõ&úl÷&ùl÷&ûlù&ülû&ýlý&þlÿ&ÿl'm'm'm'm 'm 'm 'm'm'm' m'm'm'm'm''m'm'(m!'m!'m#')m%'m%'*m''m''+m)'m)' m+'!m-',m/'"m/'-m1'#m1'.m3'$m3'%m5'/m7'&m7'1m9'5m;'2m;'6m='3m='4m?'8mA'9mC';mE'nß(@ná(Bnã(Cnå(Enç(Fné(Hnë(Jní(Wnï(Nnñ(Pnó(Rnõ(Tn÷(Unù(Vnû(Zný(\nÿ(^n)_n)an)cn)en )gn )hn )jn)kn)ln)mn)nn)on)pn)qn)rn)sn!)xn#)tn#)yn%)un%)vn')wn))~n+){n+)n-)|n-)}n/)n1)‚n3)…n5)„n5)†n7)‡n9)ˆn;)‰n=)Šn?)ŒnA)nC)ŽnE)nG)nI)‘nK)’nM)ŸnO)œnQ)žnS)¢nU)¤nW)¦nY)¨n[)©n])ªn_)«na)²nc)¯ne)±ng)µni)·nk)¹nm)»no)Ånq)¾ns)¿nu)Ànw)Ány)Ân{)Ãn})Än)Ën)Énƒ)Ên…)Ðn‡)Ïn‰)øn‹)Õn)×n)Ùn‘)Ûn“)Ýn•)ßn—)án™)ãn›)ån)çnŸ)én¡)ën£)ín¥)ïn§)ñn©)ón«)ôn­)õn¯)ön±)÷n³)oµ)o·)o¹) o») o½) o¿)oÁ)oÃ)oÅ)oÇ)oÉ)oË)oÍ)oÏ)oÑ)!oÓ)#oÕ)%o×)'oÙ))oÛ)+oÝ)-oß)/oá)1oã)3oå)5oç)7oé)9oë);oí)=oï)?oñ)Aoó)Ioõ)Do÷)Foù)Hoû)Loý)Moÿ)No*Oo*Qo*Ro*To *Uo *Wo *Xo*Yo*Zo*\o*]o*_o*`o*eo*co*do!*go#*ho%*wo'*lo)*no+*po-*qo/*ro1*to3*vo5*zo7*{o9*}o;*~o=*€o?*‚oA*ƒoC*…oE*†oG*‡oI*ˆoK*‰oM*‹oO*ŒoQ*ŽoS*oU*‘oW*“oY*”o[*–o]*—o_*˜oa*™oc*šoe* og*oi*žok*Ÿom*§oo*¤oq*¥os*¦ou*©ow*ªoy*«o{*±o}*®o*¯o*°oƒ*³o…*´o‡*µo‰*»o‹*¸o*¹o*ºo‘*½o“*¾o•*¿o—*Ào™*Áo›*Âo*ÃoŸ*Æo¡*Äo¡*Ço£*Åo£*Ío¥*Ëo§*Ìo©*îo«*Ño­*Óo¯*Õo±*×o³*Ùoµ*Ûo·*Ýo¹*ßo»*áo½*ão¿*åoÁ*çoÃ*éoÅ*ëoÇ*íoÉ*ñoË*òoÍ*óoÏ*õoÑ*öoÓ*÷oÕ*ùo×*úoÙ*ûoÛ*üoÝ*ýoß*ÿoá*pã*på*pç*pé*pë*pí*pï*pñ* pó* põ* p÷* pù*pû*pý*pÿ*p+p+p+p+p +p +p +p+p+p+p+p+ p+!p+"p+#p+%p!+&p#+'p%+(p'+)p)+*p++,p-+-p/+.p1+/p3+1p5+2p7+3p9+4p;+6p=+7p?+8pA+9pC+:pE+pK+@pM+BpO+CpQ+DpS+FpU+GpW+HpY+Jp[+Kp]+Lp_+Mpa+Npc+Ppe+Qpg+Rpi+Spk+Tpm+Upo+Vpq+Xps+Ypu+Zpw+[py+\p{+^p}+_p+`p+apƒ+bp…+dp‡+ep‰+fp‹+gp+ip+jp‘+kp“+lp•+np—+op™+pp›+qp+rpŸ+sp¡+tp£+vp¥+wp§+xp©+yp«+zp­+{p¯+}p±+~p³+pµ+€p·+‚p¹+ƒp»+„p½+…p¿+‡pÁ+ˆpÃ+‰pÅ+ŠpÇ+‹pÉ+pË+ŽpÍ+pÏ+‘pÑ+ÒpÓ+•pÕ+—p×+˜pÙ+™pÛ+špÝ+›pß+pá+Ÿpã+¡på+£pç+¥pé+§pë+©pí+«pï+­pñ+¯pó+±põ+³p÷+µpù+·pû+¹pý+»pÿ+½p,¿p,Àp,Áp,Âp ,Ãp ,Äp ,Åp,Æp,Çp,Ép,Ëp,Íp,Ïp,Ñp,Õp,×p!,Ùp#,Ûp%,Ýp',Þp),àp+,áp-,ãp/,äp1,æp3,çp5,ép7,êp9,ìp;,îp=,ðp?,òpA,ôpC,öpE,÷pG,ùpI,úpK,üpM,ýpO,ÿpQ,qS,qU,qW,qY,q[, q], q_, qa,qc,qe,qg,qi,qk,qm,qo,qq,qs,qu,qw,qy,q{,q}, q,"q,$qƒ,%q…,'q‡,(q‰,*q‹,+q,-q,.q‘,0q“,1q•,3q—,5q™,7q›,9q,;qŸ,=q¡,>q£,@q¥,Aq§,Cq©,Dq«,Fq­,Gq¯,Iq±,Kq³,Lqµ,Nq·,Pq¹,Rq»,Tq½,Uq¿,WqÁ,XqÃ,YqÅ,ZqÇ,[qÉ,\qË,]qÍ,^qÏ,_qÑ,`qÓ,aqÕ,hq×,dqÙ,eqÛ,fqÝ,gqß,xqá,tqã,uqå,vqç,wqé,Šqë,„qí,…qï,†qñ,‡qó,ˆqõ,‰q÷,žqù,–qû,—qý,˜qÿ,™q-šq-›q-œq-q -®q -ªq -«q-¬q-­q-Äq-»q-¼q-½q-¾q-¿q-Àq!-Áq#-Âq%-Ãq'-Çq)-Éq+-Ïq--Ìq/-Îq1-Òq3-Óq5-Õq7-×q9-Øq;-Úq=-ãq?-ÝqA-ÞqC-ßqE-àqG-áqI-âqK-åqM-îqO-èqQ-éqS-êqU-ëqW-ìqY-íq[-ðq]-ñq_-òqa-óqc-ôqe-õqg-þqi-øqk-ùqm-úqo-ûqq-üqs-ýqu-rw-ry-r{-r}-r-r-rƒ- r…- r‡-r‰-r‹-r-r-r‘-r“-r•-r—-r™-!r›-"r-#rŸ-$r¡-&r£-(r¥-*r§-+r©--r«-.r­-0r¯-1r±-2r³-3rµ-8r·-6r¹-7r»-Ar½-rÃ-?rÅ-@rÇ-FrÉ-ErË-HrÍ-IrÏ-JrÑ-TrÓ-UrÕ-Vr×-WrÙ-XrÛ-YrÝ-Zrß-irá-frã-hrå-trç-uré-vrë-xrí-zrï-{rñ-|ró-~rõ- s÷- sù- sû-@sý-Asÿ-Bs.Ls.Ms.Ns.Os .Ps .Qs .Rs.\s.]s.s.€s.s.‚s.ƒs.„s.Ùs!.çs#.és%.ìs'.ös).÷s+. t-.t/.t1.t3.t5.t7.t9.t;.t=."t?.tA.!tC.-tE./tG.0tI.2tK.4tM.5tO.6tQ.7tS.AtU.BtW.CtY.Dt[.Et].Ot_.Pta.Qtc.½te.]tg.^ti._tk.`tm.bto.ctq.dts.etu.ftw.gty.ht{.jt}.lt.nt.ptƒ.rt….tt‡.ut‰.vt‹.xt.yt.zt‘.|t“.~t•.€t—.‚t™.„t›.†t.ˆtŸ.Št¡.Œt£.Žt¥.t§.’t©.”t«.–t­.˜t¯.št±.œt³.tµ.žt·.Ÿt¹. t».¡t½.¢t¿.£tÁ.¤tÃ.¥tÅ.¦tÇ.§tÉ.¨tË.©tÍ.ªtÏ.«tÑ.¬tÓ.®tÕ.°t×.±tÙ.²tÛ.³tÝ.´tß.µtá.¶tã.·tå.¸tç.¹té.ºtë.»tí.¼tï.Ètñ.Étó.Êtõ.Ìt÷.Îtù.Ïtû.Ñtý.Òtÿ.Ôt/Õt/×t/Øt/Ùt /Ût /Üt /Þt/àt/ât/ät/æt/èt/êt/ìt/ît/ðt!/òt#/ôt%/öt'/øt)/út+/üt-/ýt//ÿt1/u3/u5/u7/u9/u;/ u=/ u?/ uA/uC/uE/uG/uI/uK/uM/uO/uQ/uS/uU/uW/uY/ u[/"u]/$u_/&ua/(uc/*ue/,ug/.ui/0uk/2um/4uo/6uq/8us/:uu/wÍ0?wÏ0@wÑ0AwÓ0BwÕ0Cw×0DwÙ0EwÛ0FwÝ0Gwß0Hwá0Iwã0Jwå0Kwç0Lwé0Mwë0Nwí0Owï0Pwñ0Qwó0Rwõ0Sw÷0Twù0Uwû0Vwý0Wwÿ0Xw1Yw1Zw1[w1\w 1]w 1^w 1_w1`w1aw1bw1cw1dw1ew1fw1gw1hw!1iw#1jw%1kw'1lw)1mw+1nw-1ow/1pw11qw31rw51sw71tw91uw;1vw=1ww?1xwA1ywC1zwE1{wG1|wI1}wK1~wM1wO1€wQ1wS1‚wU1ƒwW1„wY1…w[1†w]1‡w_1ˆwa1‰wc1Šwe1‹wg1Œwi1wk1Žwm1wo1wq1‘ws1’wu1“ww1”wy1•w{1–w}1—w1˜w1™wƒ1šw…1›w‡1œw‰1w‹1žw1Ÿw1 w‘1¡w“1¢w•1£w—1¤w™1¥w›1¦w1§wŸ1¨w¡1©w£1ªw¥1«w§1¬w©1­w«1®w­1¯w¯1°w±1±w³1²wµ1³w·1´w¹1µw»1¶w½1·w¿1¸wÁ1¹wÃ1ºwÅ1»wÇ1¼wÉ1½wË1¾wÍ1¿wÏ1ÀwÑ1ÁwÓ1ÂwÕ1Ãw×1ÄwÙ1ÅwÛ1ÆwÝ1Çwß1Èwá1Éwã1Êwå1Ëwç1Ìwé1Íwë1Îwí1Ïwï1Ðwñ1Ñwó1Òwõ1Ów÷1Ôwù1Õwû1Öwý1×wÿ1Øw2Ùw2Úw2Ûw2Üw 2Ýw 2Þw 2ßw2àw2áw2âw2ãw2äw2åw2æw2çw2èw!2éw#2êw%2ëw'2ìw)2íw+2îw-2ïw/2ðw12ñw32òw52ów72ôw92õw;2öw=2÷w?2øwA2ùwC2úwE2ûwG2üwI2ýwK2þwM2ÿwO2xQ2xS2xU2xW2xY2x[2x]2x_2xa2 xc2 xe2 xg2 xi2 xk2xm2xo2xq2xs2xu2xw2xy2x{2x}2x2x2xƒ2x…2x‡2x‰2x‹2x2!x2#x‘2%x“2'x•2)x—2+x™2-x›2/x21xŸ23x¡25x£27x¥29x§2;x©2=x«2?x­2Ax¯2Cx±2Ex³2Gxµ2Ix·2Kx¹2Mx»2Ox½2Qx¿2SxÁ2UxÃ2WxÅ2YxÇ2[xÉ2]xË2_xÍ2axÏ2cxÑ2exÓ2gxÕ2ix×2kxÙ2mxÛ2qxÝ2sxß2uxá2wxã2yxå2{xç2}xé2xë2xí2ƒxï2…xñ2‡xó2‰xõ2‹x÷2xù2xû2‘xý2“xÿ2•x3—x3™x3›x3x 3Ÿx 3¡x 3£x3¥x3§x3©x3«x3­x3¯x3±x3³x3µx!3·x#3¹x%3»x'3½x)3¿x+3Áx-3Ãx/3Åx13Çx33Éx53Ëx73Íx93Ïx;3Ñx=3Óx?3ÕxA3×xC3ÙxE3ÛxG3ÝxI3ßxK3áxM3ãxO3åxQ3çxS3éxU3ëxW3íxY3ïx[3ñx]3óx_3õxa3÷xc3ùxe3ûxg3ýxi3ÿxk3ym3yo3yq3ys3 yu3 yw3 yy3y{3y}3y3y3yƒ3y…3y‡3y‰3y‹3!y3#y3%y‘3'y“3)y•3+y—3-y™3/y›31y33yŸ35y¡37y£39y¥3;y§3=y©3?y«3Ay­3Cy¯3Ey±3Gy³3Iyµ3Ky·3Òz¹3Ny»3Oy½3Py¿3QyÁ3RyÃ3SyÅ3TyÇ3UyÉ3VyË3WyÍ3XyÏ3YyÑ3ZyÓ3[yÕ3\y×3]yÙ3^yÛ3_yÝ3`yß3ayá3byã3cyå3dyç3eyé3fyë3gyí3hyï3iyñ3jyó3kyõ3ly÷3myù3nyû3oyý3pyÿ3qy4ry4sy4ty4uy 4vy 4wy 4xy4yy4zy4{y4|y4}y4~y4y4€y4y!4‚y#4ƒy%4„y'4…y)4†y+4‡y-4ˆy/4‰y14Šy34‹y54Œy74y94Žy;4y=4y?4‘yA4’yC4“yE4”yG4•yI4–yK4—yM4˜yO4™yQ4šyS4›yU4œyW4yY4žy[4Ÿy]4 y_4¡ya4¢yc4£ye4¤yg4¥yi4¦yk4§ym4¨yo4©yq4ªys4«yu4¬yw4­yy4®y{4¯y}4°y4±y4²yƒ4³y…4´y‡4µy‰4¶y‹4·y4¸y4¹y‘4ºy“4»y•4¼y—4½y™4¾y›4¿y4ÀyŸ4Áy¡4Ây£4Ãy¥4Äy§4Åy©4Æy«4Çy­4Èy¯4Éy±4Êy³4Ëyµ4Ìy·4Íy¹4Îy»4Ïy½4Ðy¿4ÑyÁ4ÒyÃ4ÓyÅ4ÔyÇ4ÕyÉ4ÖyË4×yÍ4ØyÏ4ÙyÑ4ÚyÓ4ÛyÕ4Üy×4ÝyÙ4ÞyÛ4ßyÝ4àyß4áyá4âyã4ãyå4äyç4åyé4æyë4çyí4èyï4éyñ4êyó4ëyõ4ìy÷4íyù4îyû4ïyý4ðyÿ4ñy5òy5óy5ôy5õy 5öy 5÷y 5øy5ùy5úy5ûy5üy5ýy5þy5ÿy5z5z!5z#5z%5z'5z)5z+5z-5z/5 z15 z35 z55 z75 z95z;5z=5z?5zA5zC5zE5zG5zI5zK5zM5zO5zQ5zS5zU5zW5zY5z[5z]5 z_5!za5"zc5#ze5$zg5%zi5&zk5'zm5(zo5)zq5*zs5+zu5,zw5-zy5.z{5/z}50z51z52zƒ53z…54z‡55z‰56z‹57z58z59z‘5:z“5;z•5z›5?z5@zŸ5Az¡5Bz£5Cz¥5Dz§5Ez©5Fz«5Gz­5Hz¯5Iz±5Jz³5Kzµ5Lz·5Mz¹5Nz»5Oz½5Pz¿5QzÁ5RzÃ5SzÅ5TzÇ5UzÉ5VzË5WzÍ5XzÏ5YzÑ5ZzÓ5[zÕ5\z×5]zÙ5^zÛ5_zÝ5`zß5azá5bzã5czå5dzç5ezé5fzë5gzí5hzï5izñ5jzó5kzõ5lz÷5mzù5nzû5ozý5pzÿ5qz6rz6sz6tz6uz 6vz 6wz 6xz6yz6zz6{z6|z6}z6~z6z6€z6z!6‚z#6ƒz%6„z'6…z)6†z+6‡z-6ˆz/6‰z16Šz36‹z56Œz76z96Žz;6z=6z?6‘zA6’zC6“zE6”zG6•zI6–zK6—zM6˜zO6™zQ6šzS6›zU6œzW6zY6žz[6Ÿz]6 z_6¡za6¢zc6£ze6¤zg6¥zi6¦zk6§zm6¨zo6©zq6ªzs6«zu6¬zw6­zy6®z{6¯z}6°z6±z6²zƒ6³z…6´z‡6µz‰6¶z‹6·z6¸z6¹z‘6ºz“6»z•6¼z—6½z™6¾z›6¿z6ÀzŸ6Áz¡6Âz£6Ãz¥6Äz§6Åz©6Æz«6Çz­6Èz¯6Éz±6Êz³6Ëzµ6Ìz·6Íz¹6Îz»6Ïz½6Ðz¿6ÑzÁ6N}Ã6ÞzÅ6ßzÇ6àzÉ6ázË6âzÍ6ãzÏ6äzÑ6åzÓ6æzÕ6çz×6èzÙ6ézÛ6êzÝ6ëzß6ìzá6ízã6îzå6ïzç6ðzé6ñzë6òzí6ózï6ôzñ6õzó6özõ6÷z÷6øzù6ùzû6úzý6ûzÿ6üz7ýz7þz7ÿz7{ 7{ 7{ 7{7{7{7{7{7{7 {7 {7 {7 {!7 {#7{%7{'7{)7{+7{-7{/7{17{37{57{77{97{;7{=7{?7{A7{C7{E7{G7 {I7!{K7"{M7#{O7${Q7%{S7&{U7'{W7({Y7){[7*{]7+{_7,{a7-{c7.{e7/{g70{i71{k72{m73{o74{q75{s76{u77{w78{y79{{7:{}7;{7<{7={ƒ7>{…7?{‡7@{‰7A{‹7B{7C{7D{‘7E{“7F{•7G{—7H{™7I{›7J{7K{Ÿ7L{¡7M{£7N{¥7O{§7P{©7Q{«7R{­7S{¯7T{±7U{³7V{µ7W{·7X{¹7Y{»7Z{½7[{¿7\{Á7]{Ã7^{Å7_{Ç7`{É7a{Ë7b{Í7c{Ï7d{Ñ7e{Ó7f{Õ7g{×7h{Ù7i{Û7j{Ý7k{ß7l{á7m{ã7n{å7o{ç7p{é7q{ë7r{í7s{ï7t{ñ7u{ó7v{õ7w{÷7x{ù7y{û7z{ý7{{ÿ7|{8}{8~{8{8€{ 8{ 8‚{ 8ƒ{8„{8…{8†{8‡{8ˆ{8‰{8Š{8‹{8Œ{!8{#8Ž{%8{'8{)8‘{+8’{-8“{/8”{18•{38–{58—{78˜{98™{;8š{=8›{?8œ{A8{C8ž{E8Ÿ{G8 {I8¡{K8¢{M8£{O8¤{Q8¥{S8¦{U8§{W8¨{Y8©{[8ª{]8«{_8¬{a8­{c8®{e8¯{g8°{i8±{k8²{m8³{o8´{q8µ{s8¶{u8·{w8¸{y8¹{{8º{}8»{8¼{8½{ƒ8¾{…8¿{‡8À{‰8Á{‹8Â{8Ã{8Ä{‘8Å{“8Æ{•8Ç{—8È{™8É{›8Ê{8Ë{Ÿ8Ì{¡8Í{£8Î{¥8Ï{§8Ð{©8Ñ{«8Ò{­8Ó{¯8Ô{±8Õ{³8Ö{µ8×{·8Ø{¹8Ù{»8Ú{½8Û{¿8Ü{Á8Ý{Ã8Þ{Å8ß{Ç8à{É8á{Ë8â{Í8ã{Ï8ä{Ñ8å{Ó8æ{Õ8ç{×8è{Ù8é{Û8ê{Ý8ë{ß8ì{á8í{ã8î{å8ï{ç8ð{é8ñ{ë8ò{í8ó{ï8ô{ñ8õ{ó8ö{õ8÷{÷8ø{ù8ù{û8ú{ý8û{ÿ8ü{9ý{9þ{9ÿ{9| 9| 9| 9|9|9|9|9|9|9 |9 |9 |9 |!9 |#9|%9|'9|)9|+9|-9|/9|19|39|59|79|99|;9|=9|?9|A9|C9|E9|G9 |I9!|K9"|M9#|O9$|Q9%|S9&|U9'|W9(|Y9)|[9*|]9+|_9,|a9-|c9.|e9/|g90|i91|k92|m93|o94|q95|s96|u97|w98|y99|{9:|}9;|9<|9=|ƒ9>|…9?|‡9@|‰9A|‹9B|9C|9D|‘9E|“9F|•9G|—9H|™9I|›9J|9K|Ÿ9L|¡9M|£9N|¥9O|§9P|©9Q|«9R|­9S|¯9T|±9U|³9V|µ9W|·9X|¹9Y|»9Z|½9[|¿9\|Á9]|Ã9^|Å9_|Ç9`|É9a|Ë9b|Í9c|Ï9d|Ñ9e|Ó9f|Õ9g|×9h|Ù9i|Û9j|Ý9k|ß9l|á9m|ã9n|å9o|ç9p|é9q|ë9r|í9s|ï9t|ñ9u|ó9v|õ9w|÷9x|ù9y|û9z|ý9{|ÿ9||:}|:~|:|:€| :| :‚| :ƒ|:„|:…|:†|:‡|:ˆ|:‰|:Š|:‹|:Œ|!:|#:Ž|%:|':|):‘|+:’|-:“|/:”|1:•|3:–|5:—|7:˜|9:™|;:š|=:›|?:œ|A:|C:ž|E:Ÿ|G: |I:¡|K:¢|M:£|O:¤|Q:¥|S:¦|U:§|W:¨|Y:©|[:ª|]:«|_:¬|a:­|c:®|e:¯|g:°|i:±|k:²|m:³|o:´|q:µ|s:¶|u:·|w:¸|y:¹|{:º|}:»|:¼|:½|ƒ:¾|…:¿|‡:À|‰:Á|‹:Â|:Ã|:Ä|‘:Å|“:Æ|•:Ç|—:È|™:É|›:Ê|:Ë|Ÿ:Ì|¡:Í|£:Î|¥:Ï|§:Ð|©:Ñ|«:Ò|­:Ó|¯:Ô|±:Õ|³:Ö|µ:×|·:Ø|¹:Ù|»:Ú|½:Û|¿:Ü|Á:Ý|Ã:Þ|Å:ß|Ç:à|É:á|Ë:â|Í:ã|Ï:ä|Ñ:å|Ó:æ|Õ:ç|×:è|Ù:é|Û:ê|Ý:ë|ß:ì|á:í|ã:î|å:ï|ç:ð|é:ñ|ë:ò|í:ó|ï:ô|ñ:õ|ó:ö|õ:÷|÷:ø|ù:ù|û:ú|ý:û|ÿ:ü|;ý|;þ|;ÿ|;} ;} ;} ;};};};};};}; }; }; }; }!; }#;}%;}';});}+;}-;}/;}1;}3;}5;}7;}9;};;}=;}?;}A;}C;}E;}G; }I;!}K;"}M;#}O;$}Q;%}S;&}U;'}W;(}Y;)}[;*}];+}_;,}a;-}c;.}e;/}g;0}i;1}k;2}m;3}o;4}q;5}s;6}u;7}w;8}y;9}{;:}};;};<};=}ƒ;>}…;?}‡;@}‰;A}‹;B};C};D}‘;E}“;F}•;G}—;H}™;I}›;J};K}Ÿ;L}¡;M}£;F†¥;G†§;{†©;z†«;‰†­;І¯;”†±;š†³;›†µ;œ†·;†¹;ž†»;׆½;Ó†¿;Ô†Á;Ö†Ã;܆Å;å†Ç;æ†É;é†Ë;ê†Í;î†Ï;ï†Ñ;ð†Ó;ñ†Õ;ò†×;ó†Ù;ô†Û;‡Ý;‡ß;‡á; ‡ã; ‡å; ‡ç; ‡é; ‡ë;‡í;‡ï;‡ñ;‡ó;‡õ;‡÷;‡ù;‡û; ‡ý;-‡ÿ;.‡<5‡<6‡<7‡<8‡ <9‡ <:‡ <=‡<G‡<J‡<N‡<O‡<P‡<Q‡<R‡<S‡<T‡!<U‡#<V‡%<W‡'<X‡)<Y‡+<\‡-<b‡/<c‡1<d‡3<e‡5<g‡7<h‡9<i‡;<j‡=<k‡?<l‡A<m‡C<q‡E<t‡G<u‡I<{‡K<|‡M<~‡O<‡Q<‰‡S<Œ‡U<”‡W<͇Y<·[<χ]<Ї_<Ö‡a<ׇc<؇e<Ù‡g<Ú‡i<‹ˆk<ˆˆm<‰ˆo<Šˆq<•ˆs< ˆu<ƈw<Ljy<êˆ{<ëˆ}<ïˆ<ðˆ<‰ƒ<‰…<‰‡<$‰‰<0‰‹<+‰<-‰<.‰‘</‰“<7‰•<<‰—<=‰™<?‰›<@‰<C‰Ÿ<D‰¡<F‰£<G‰¥<O‰§<K‰©<L‰«<M‰­<N‰¯<Z‰±<[‰³<a‰µ<_‰·<`‰¹<c‰»<d‰½<e‰¿<f‰Á<m‰Ã<i‰Å<j‰Ç<k‰É<l‰Ë<|‰Í<y‰Ï<z‰Ñ<{‰Ó<~‰Õ<«‰×<‰Ù<‚‰Û<„‰Ý<†‰ß<ˆ‰á<Љã<Œ‰å<މç<‰é<’‰ë<”‰í<–‰ï<˜‰ñ<š‰ó<œ‰õ<ž‰÷< ‰ù<¢‰û<¤‰ý<¦‰ÿ<¨‰=ª‰=¯‰=±‰=³‰ =µ‰ =·‰ =¹‰=»‰=½‰=¿‰=Á‰=É=ʼn=lj=ɉ=ˉ!=͉#=ω%=Љ'=Ò‰)=Ó‰+=Õ‰-=׉/=؉1=Ú‰3=܉5=Þ‰7=à‰9=â‰;=ä‰==æ‰?=è‰A=ê‰C=ì‰E=î‰G=ð‰I=ò‰K=ô‰M=ö‰O=ø‰Q=ú‰S=û‰U=ý‰W=þ‰Y=Š[=Š]=Š_=Ša=Šc= Še= Šg= Ši=Šk=Šm=Šo=Šq=Šs=Šu=Šw=Šy=Š{=Š}= Š=!Š=#Šƒ=$Š…=%Ї='Љ=(Š‹=)Š=+Š=-Š‘=.Š“=0Š•=1Š—=3Š™=4Š›=5Š=7ŠŸ=8Š¡=:Š£=;Š¥=<Ч=>Š©=?Š«=@Š­=BН=Dб=Eг=Nе=HŠ·=Iй=JŠ»=Kн=LŠ¿=MŠÁ=^ŠÃ=ZŠÅ=[ŠÇ=\ŠÉ=]ŠË=pŠÍ=jŠÏ=kŠÑ=lŠÓ=mŠÕ=nŠ×=oŠÙ=‚ŠÛ=}ŠÝ=~Šß=Šá=€Šã=Šå=ŠŠç=ŽŠé=—Šë=”Ší=•Šï=–Šñ=ŸŠó=¢Šõ=ªŠ÷=§Šù=¨Šû=©Šý=²Šÿ=µŠ>½Š>ºŠ>»Š>¼Š >ÅŠ >ÈŠ >Њ>ÍŠ>Ί>ÏŠ>ØŠ>ÛŠ>éŠ>àŠ>áŠ>âŠ!>ãŠ#>äŠ%>åŠ'>æŠ)>çŠ+>èŠ->òŠ/>ôŠ1>øŠ3>÷Š5> ‹7>‹9>‹;>‹=>‹?>‹A> ‹C>‹E>‹G>‹I>1‹K>‹M>‹O> ‹Q>"‹S>$‹U>&‹W>(‹Y>*‹[>,‹]>.‹_>0‹a>4‹c>5‹e>7‹g>8‹i>:‹k>;‹m>=‹o>>‹q>@‹s>A‹u>C‹w>D‹y>F‹{>G‹}>H‹>J‹>K‹ƒ>L‹…>N‹‡>O‹‰>P‹‹>R‹>S‹>T‹‘>V‹“>W‹•>X‹—>Z‹™>[‹›>]‹>^‹Ÿ>`‹¡>a‹£>c‹¥>d‹§>f‹©>g‹«>i‹­>j‹¯>l‹±>m‹³>n‹µ>p‹·>q‹¹>r‹»>t‹½>u‹¿>v‹Á>x‹Ã>y‹Å>z‹Ç>|‹É>}‹Ë>~‹Í>ž‹Ï>‹Ñ>ƒ‹Ó>…‹Õ>‡‹×>‰‹Ù>‹‹Û>‹Ý>‹ß>‘‹á>“‹ã>•‹å>—‹ç>™‹é>›‹ë>‹í> ‹ï>¢‹ñ>¤‹ó>¥‹õ>¦‹÷>§‹ù>¨‹û>©‹ý>ª‹ÿ>¬‹?­‹?®‹?¯‹?°‹ ?±‹ ?²‹ ?´‹?µ‹?·‹?¸‹?¹‹?»‹?¼‹?½‹?¿‹?À‹!?‹#?Ä‹%?Å‹'?Æ‹)?È‹+?É‹-?Ë‹/?Ì‹1?Í‹3?Ï‹5?Ћ7?Ñ‹9?Ó‹;?Ô‹=?Ö‹??׋A?Ù‹C?Ú‹E?Û‹G?Ý‹I?ß‹K?à‹M?á‹O?â‹Q?ã‹S?ä‹U?å‹W?ç‹Y?è‹[?é‹]?ê‹_?ë‹a?ì‹c?í‹e?ï‹g?ð‹i?ò‹k?ó‹m?ô‹o?ö‹q?÷‹s?ø‹u?ú‹w?û‹y?ý‹{?ÿ‹}?Œ?Œ?Œƒ?Œ…?Œ‡?Œ‰?Œ‹? Œ? Œ? Œ‘?Œ“?Œ•?Œ—?Œ™?Œ›?Œ?ŒŸ?ŠŒ¡?Œ£?Œ¥?Œ§?Œ©?!Œ«?#Œ­?%Œ¯?'Œ±?)Œ³?+Œµ?-Œ·?/Œ¹?1Œ»?3Œ½?5Œ¿?7ŒÁ?9ŒÃ?;ŒÅ?=ŒÇ??ŒÉ?AŒË?CŒÍ?EŒÏ?GŒÑ?IŒÓ?KŒÕ?MŒ×?OŒÙ?QŒÛ?SŒÝ?UŒß?WŒá?YŒã?[Œå?]Œç?_Œé?aŒë?cŒí?eŒï?gŒñ?iŒó?kŒõ?mŒ÷?oŒù?qŒû?sŒý?uŒÿ?wŒ@yŒ@{Œ@}Œ@Œ @Œ @ƒŒ @…Œ@‡Œ@‰Œ@ŒŒ@Œ@ŽŒ@Œ@‘Œ@’Œ@“Œ!@”Œ#@–Œ%@—Œ'@˜Œ)@™Œ+@šŒ-@œŒ/@Œ1@ŸŒ3@ Œ5@¡Œ7@£Œ9@¤Œ;@¥Œ=@§Œ?@¨ŒA@©ŒC@«ŒE@¬ŒG@­ŒI@®ŒK@°ŒM@±ŒO@²ŒQ@³ŒS@µŒU@¶ŒW@·ŒY@¸Œ[@¹Œ]@ºŒ_@¼Œa@½Œc@¾Œe@¿Œg@ÁŒi@ÂŒk@ÃŒm@ÄŒo@ÅŒq@ÆŒs@ÇŒu@ÉŒw@ÊŒy@ËŒ{@ÌŒ}@ÍŒ@ÎŒ@ÏŒƒ@ÑŒ…@ÒŒ‡@ÓŒ‰@ÕŒ‹@ÖŒ@׌@ØŒ‘@ÚŒ“@ÛŒ•@ÜŒ—@ÝŒ™@ÞŒ›@àŒ@ጟ@⌡@㌣@䌥@挧@猩@茫@錭@ꌯ@쌱@팳@@ðŒ·@òŒ¹@óŒ»@ôŒ½@õŒ¿@öŒÁ@øŒÃ@ùŒÅ@úŒÇ@ûŒÉ@üŒË@ýŒÍ@þŒÏ@Ñ@Ó@Õ@×@Ù@Û@Ý@ß@ á@ ã@ å@ ç@é@ë@í@ï@ñ@ó@õ@÷@ù@û@ý@ÿ@AAA A! A" A# A%A'A(A)A*A,A-A.A0A1!A2#A3%A5'A6)A7+A8-A:/A;1A<3A=5A?7A@9AA;AB=AC?ADAAFCAGEAHGAIIAKKALMAMOANQAOSAQUARWASYAU[AV]AW_AYaAZcA[eA]gA^iA`kAamAcoAeqAfsAguAhwAjyAk{Al}AmAoApƒAq…Ar‡At‰Av‹AwAxAz‘A{“A|•A~—A™A€›AA‚ŸAƒ¡A„£A†¥A‡§A‰©AŠ«A‹­AŒ¯A±A³AµA‘·A’¹A”»A•½A–¿A—ÁA™ÃAšÅA›ÇAœÉAËAŸÍA ÏA¢ÑA£ÓA¥ÕA¦×A¨ÙA©ÛAªÝA«ßA­áA®ãA¯åA°çA±éA³ëA´íA¶ïA·ñA¸óAºõA»÷A¼ùA¾ûA¿ýAÀÿAÂBÃBÄBÅBÇ BÈ BÉ BÊBÌBÍBÎBÏBÐBÑBÓBÔBÕ!BÖ#BØ%BÙ'BÚ)BÛ+BÜ-BÝ/BÞ1Bà3Bá5Bâ7Bã9Bä;Bå=Bæ?BèABéCBêEBìGBíIBîKBïMBñOBòQBóSBôUBõWB÷YBø[Bù]Bú_BûaBýcBþeBÿgBŽiBŽkBŽmBŽoBŽqBŽsB ŽuB ŽwB ŽyB Ž{B Ž}BŽBŽBŽƒBŽ…BއBމBŽ‹BŽBŽBŽ‘BŽ“BŽ•BŽ—BŽ™BŽ›B ŽB!ŽŸB"Ž¡B#Ž£B%Ž¥B&ާB'Ž©B(Ž«B)Ž­B+ޝB,ޱB.޳B/޵B0Ž·B1޹B2Ž»B4޽B5Ž¿B6ŽÁB7ŽÃB8ŽÅB9ŽÇB:ŽÉB<ŽËB>ŽÍB?ŽÏB@ŽÑBAŽÓBCŽÕBDŽ×BEŽÙBGŽÛBHŽÝBIŽßBJŽáBLŽãBMŽåBNŽçBOŽéBQŽëBRŽíBSŽïBTŽñBVŽóBWŽõBXŽ÷BYŽùBZŽûB[ŽýB]ŽÿB^ŽC_ŽC`ŽCbŽCcŽ CdŽ CeŽ CfŽChŽCiŽCjŽClŽCmŽCnŽCpŽCqŽCrŽ!CtŽ#CuŽ%CwŽ'CxŽ)CzŽ+C|Ž-C}Ž/C~Ž1CŽ3CŽ5C‚Ž7CƒŽ9C„Ž;C†Ž=C‡Ž?CˆŽAC‰ŽCC‹ŽECŽGCŽŽICŽKC‘ŽMC’ŽOC“ŽQC•ŽSC–ŽUC—ŽWC˜ŽYC™Ž[CšŽ]C›Ž_CŽaCžŽcC ŽeC¡ŽgC¢ŽiC£ŽkC¤ŽmC¦ŽoC§ŽqC¨ŽsC©ŽuC«ŽwC¬ŽyC­Ž{C®Ž}C°ŽC±ŽC²ŽƒC³Ž…C´Ž‡C¶Ž‰C·Ž‹C¹ŽCºŽC¼Ž‘C½Ž“CÅŽ•CÀŽ—CÂŽ™CÄŽ›CÈŽCÉŽŸCÊŽ¡CËŽ£CÌŽ¥CÍŽ§CÏŽ©CÐŽ«CÑŽ­CÓŽ¯CÔŽ±CÕŽ³C׎µCØŽ·CÙŽ¹CÚŽ»CÛŽ½CÜŽ¿CÞŽÁCߎÃCàŽÅCâŽÇCãŽÉCäŽËCêŽÍCçŽÏCéŽÑCíŽÓCïŽÕCñŽ×CóŽÙCùŽÛCöŽÝCøŽßCüŽáCýŽãCþŽåCçCéCëCíCïCñCóCõC ÷C ùCûCýCÿCDDDD D D DED D"D$D&D(D*D,D.D0!D2#D4%D6'D8)D:+D<-D>/D@1DB3DD5DG7DI9DJ;DL=DN?DOADPCDQEDRGDTIDUKDVMDXODYQDZSD\UD]WD^YD`[Da]Dc_DdaDecDfeDggDhiDjkDkmDmoDnqDpsDquDrwDtyDu{Dw}DyDzD|ƒD}…D‡D€‰D‚‹DƒD„D†‘D‡“Dˆ•D‰—DŠ™DŒ›DDŸD¡D’£D”¥D•§D–©D—«D˜­Dš¯D›±Dœ³DžµDŸ·D ¹D¢»D£½D¤¿D¦ÁD§ÃD©ÅDªÇD«ÉD¬ËD­ÍD®ÏD°ÑD±ÓD³ÕD´×D¶ÙD·ÛD¸ÝDºßD»áD½ãD¿åDÀçDÂéDÃëDÅíDÆïDÈñDÉóDÊõDÌ÷DÍùDÎûDÏýDÐÿDÒEÓEÙEÖE× EØ Eâ EÝEÞEßEàEáEäEåEæEçEè!Eé#Eê%Eñ'Eî)Eï+Eð-E/Eõ1Eö3E÷5Eø7Eù9Eú;Eû=Eü?EýAEþCEÿEEGEIEKEME OEQE SE UE WEYE[E]E_E&aEcEeEgEiEkEmE oE!qE"sE#uE$wE%yE8{E/}E1E3E5ƒE7…E;‡E<‰E=‹E?E@EB‘EC“EE•EF—EH™EI›EKELŸEM¡EO£EP¥ER§ES©EU«EV­EX¯EY±Er³E\µE]·E^¹E_»E`½Ea¿EbÁEcÃEdÅEeÇEfÉEgËEhÍEiÏEjÑEkÓElÕEm×EnÙEoÛEqÝEußEváExãEyåE‰çE|éE~ëE€íE‚ïE„ñE†óEˆõE‹÷EùEŽûEýE‘ÿE’F”F•F–F˜ F™ Fš F›FœFFžFŸF¡F¢F¤F¥F¦!F¨#Fª%F«'F¬)F®+F¯-F±/F²1F³3Fµ5F¶7F·9F¸;F¹=Fº?F»AF¼CF¾EF¿GFÁIFÂKFÃMFÅOFÍQFÈSFÉUFÊWFËYFÌ[FÏ]FØ_FÒaFÓcFÔeFÕgFÖiF×kFÚmFàoFÝqFßsFãuFåwFçyFé{Fï}FìFîFñƒFó…Fô‡Fõ‰F÷‹FøFúFû‘Fü“Fþ•Fÿ—F‘™F‘›F‘F‘ŸF‘¡F‘£F ‘¥F ‘§F ‘©F ‘«F‘­F‘¯F‘±F‘³F‘µF‘·F‘¹F‘»F‘½F‘¿F‘ÁF‘ÃF‘ÅF ‘ÇF.‘ÉF#‘ËF$‘ÍF%‘ÏF&‘ÑF'‘ÓF(‘ÕF)‘×F*‘ÙF+‘ÛF,‘ÝF-‘ßF0‘áF1‘ãF2‘åF7‘çF5‘éF6‘ëF9‘íF?‘ïF<‘ñF=‘óF>‘õFF‘÷FC‘ùFD‘ûFE‘ýFP‘ÿFJ‘GK‘GL‘GM‘GN‘ GO‘ GR‘ GX‘GU‘GV‘GW‘G_‘G\‘G^‘Ga‘Gc‘Gd‘!Ge‘#Gg‘%Gh‘'Gj‘)Gk‘+Gl‘-Gn‘/Go‘1Gv‘3Gr‘5Gs‘7Gt‘9Gu‘;Gx‘=G‘?G{‘AG}‘CG‘EG‘GGƒ‘IG…‘KG‡‘MG‰‘OG‹‘QG‘SG‘UG’‘WG”‘YG•‘[G—‘]G˜‘_Gš‘aG›‘cGœ‘eG‘gGž‘iG ‘kG¡‘mG¢‘oG£‘qG¥‘sG¦‘uG§‘wG¨‘yGª‘{G«‘}G¬‘G®‘G¯‘ƒG°‘…G²‘‡G³‘‰G´‘‹G¶‘G·‘G¹‘‘Gº‘“G»‘•G½‘—G¾‘™G¿‘›GÀ‘GÁ‘ŸG‘¡GÑ£GÄ‘¥GÅ‘§GÆ‘©GÇ‘«GÉ‘­GÊ‘¯GÌ‘±GÍ‘³GÏ‘µGБ·GÑ‘¹GÒ‘»GÓ‘½GÕ‘¿GÖ‘ÁGבÃGØ‘ÅGÚ‘ÇGÛ‘ÉGÜ‘ËGÝ‘ÍGß‘ÏGà‘ÑGá‘ÓGã‘ÕGä‘×Gå‘ÙGç‘ÛGè‘ÝGé‘ßGë‘áGì‘ãGî‘åGï‘çGð‘éGò‘ëGó‘íGô‘ïGõ‘ñGö‘óG÷‘õGø‘÷Gù‘ùGú‘ûGû‘ýGü‘ÿG’Hÿ‘H’H’H’ H’ H ’ H ’H ’H’H’H’H’H’H’H’H’!H’#H’%H’'H ’)H!’+H#’-H$’/H%’1H'’3H(’5H*’7H+’9H-’;H.’=H0’?H1’AH3’CH4’EH6’GH8’IH9’KH:’MH<’OH=’QH>’SH?’UHA’WHB’YHC’[HE’]HF’_HG’aHI’cHJ’eHL’gHM’iHO’kHP’mHR’oHS’qHU’sHV’uHX’wH^’yH[’{H\’}H]’Hq’Hb’ƒHd’…Hf’‡Hh’‰Hj’‹Hl’Hn’Hp’‘Hs’“Hu’•Hv’—Hw’™Hy’›Hz’H{’ŸH}’¡H~’£H€’¥H’§Hƒ’©H„’«H†’­H‡’¯H‰’±HŠ’³HŒ’µHŽ’·H’¹H’»H’’½H“’¿H”’ÁH–’ÃH—’ÅH™’ÇHš’ÉHœ’ËH’ÍHŸ’ÏH ’ÑH¢’ÓH£’ÕH¥’×H¯’ÙH¨’ÛH©’ÝHª’ßH«’áH¬’ãH­’åH®’çH±’éH»’ëH´’íHµ’ïH¶’ñH·’óH¸’õH¹’÷Hº’ùHÂ’ûH¿’ýHÀ’ÿHÁ’IË’IÆ’IÈ’IÊ’ IÎ’ IÏ’ IÑ’IÓ’IÔ’IÕ’IÖ’I×’IØ’IÚ’IÛ’IÝ’!Iß’#Ià’%Iá’'Iâ’)Iã’+Iä’-Iì’/Iç’1Ié’3Ië’5Iï’7Ið’9Iò’;Iô’=Iõ’?Iö’AI÷’CIø’EIù’GIû’IIü’KIþ’MI“OI“QI“SI“UI“WI“YI “[I“]I “_I“aI“cI“eI“gI“iI“kI“mI“oI“qI“sI“uI#“wI!“yI"“{I/“}I-“I.“I9“ƒI8“…I;“‡I<“‰I=“‹IG“I@“IA“‘IB““IC“•ID“—IE“™IF“›IP“IK“ŸIL“¡IM“£IN“¥IO“§IW“©IT“«IV“­IY“¯I[“±I]“³I_“µIa“·I“¹I}“»I~“½I‹“¿I‡“ÁIˆ“ÃI‰“ÅIŠ“ÇIš“ÉI—“ËI™“ÍIŸ“ÏI£“ÑI¥“ÓI¦“ÕI§“×I©“ÙI«“ÛI¬“ÝI­“ßIÇ“áI°“ãI²“åI´“çI¶“éI¸“ëIº“íI¼“ïI¾“ñIÀ“óI“õIÄ“÷IÆ“ùIÉ“ûIË“ýIÍ“ÿIΓJÏ“JÑ“JÒ“JÔ“ JÕ“ Jד JØ“JÚ“JÛ“JÜ“JÞ“Jß“Jà“Jâ“Jã“Jä“!Jæ“#Jç“%Jè“'Jê“)Jë“+Jì“-Jî“/Jï“1Jñ“3Jó“5Jõ“7Jö“9J÷“;Jù“=Jú“?Jü“AJý“CJÿ“EJ”GJ”IJ”KJ”MJ”OJ”QJ”SJ ”UJ ”WJ ”YJ”[J”]J”_J”aJ”cJ”eJ”gJ”iJ”kJ”mJ”oJ6”qJ:”sJ;”uJ<”wJ=”yJ>”{JO”}JP”Ja”Jb”ƒJc”…Jd”‡Jh”‰Jp”‹Jq”Jr”Js”‘JŠ”“J“”•J¸”—Jµ”™J¶”›J·”JÜ”ŸJÛ”¡J锣J蔥J•§J•©J•«J•­J•¯JH•±J@•³JA•µJB•·JC•¹JD•»JE•½JF•¿JG•ÁJw•ÃJv•ÅJ•ÇJë•ÉJ–ËJ–ÍJ–ÏJ_–ÑJ`–ÓJg–ÕJf–×Jr–ÙJs–ÛJt–ÝJu–ßJv–áJw–ãJx–åJy–çJz–éJ}–ëJ~–íJ–ïJ–ñJ‚–óJƒ–õJ…–÷J†–ùJ‡–ûJˆ–ýJ‰–ÿJŠ–K•–K––K›–K©– Kª– K«– KÇ–KÅ–KÆ–KÙ–K×–KØ–Ká–Kâ–Ké–Kò–!Kó–#Kô–%Kø–'Kù–)Kú–+Kû–-Kü–/Ký–1Kþ–3K—5K—7K —9K—;K—=KR—?KS—AKT—CKU—EKV—GKv—IK¶—KKÍ—MKΗOKÏ—QKÙ—SKÚ—UKÛ—WKÜ—YKÝ—[KÞ—]Kß—_Kà—aKá—cKΘeKϘgKИiKÞ˜kKç˜mKš™oK°™qK±™sK²™uK¼™wK½™yK¾™{K¿™}KÉ™KÊ™KË™ƒKÕ™…KÖ™‡K×™‰KØ™‹KÙ™KÚ™K홑KKKð™—Kñ™™Kò™›Kü™Ký™ŸKþ™¡Kÿ™£Kfš¥Kaš§Kcš©Keš«Ksš­Ktš¯Kuš±Kzš³K|šµK~š·K€š¹K‚š»K„š½KŒš¿KšÁK’šÃK—šÅKœšÇK¡šÉK¥šËK¯šÍK°šÏK²šÑK±šÑK´šÓK¶šÕK·š×KÁšÙKšÛKÚÝKÄšßKÅšáKÆšãKÌšåKÍšçKΚéKךëKÓšíKÔšïKÕšñKÖšóKåšõKãš÷KäšùKóšûKñšýKòšÿKýšLþšLÿšL›L› L› L› L› L›L›L›L›L›L›L›L ›L ›L ›L›L ›L ›!L›#L›%L›'L›)L›+L›-L›/L›1L›3L›5L›7L›9L"›;L#›=L$›?L%›AL&›CLt›ELl›GLm›ILn›KLo›MLq›OLs›QL›SL›ULƒ›WL…›YL†›[LŒ›]L‡›]Lˆ›_L›aL‰›aLŽ›cLŠ›cL‹›eLø›gLù›iLœkLœmLœoLœqLœsL œuL!œwL+œyL3œ{Lbœ}L^œL_œLaœƒLnœ…Lqœ‡L›œ‰Lœœ‹LÜLÄœLÊœ‘LËœ“LÌœ•LÍœ—LΜ™LÏœ›LМLÑœŸLÒœ¡LÓœ£LÔœ¥LÕœ§LÖœ©Lל«LØœ­LÙœ¯LÚœ±LÛœ³LÜœµLÝœ·LÞœ¹Lßœ»Làœ½L᜿LâœÁLãœÃLäœÅLåœÇLæœÉLçœËLèœÍLéœÏLêœÑLëœÓLìœÕLíœ×L¥ÙL¨ÛL¬ÝL­ßL®áL²ãL°ãL±åLÖçLÔçLÕéLìëLçíLéïLëñLôóLõõL÷÷LùùLûûLüýLþÿLžMžMžMžM žMž M ž Mž Mž Mž Mž MžMžMAžMžMžMžM žM"žM$žM&žM(ž!M*ž#M,ž%M.ž'M0ž)M2ž+M4ž-M6ž/M8ž1M:ž3M<ž5M>ž7M?ž9M@ž;MDž=MFž?MHžAMJžCMLžEMNžGMPžIMRžKMTžMMVžOMXžQMZžSM\žUM^žWM`žYMbž[Mdž]Mfž_MhžaMjžcMlžeMnžgMpžiMržkMtžmMvžoMxžqMzžsM|žuM~žwM€žyM‚ž{M„ž}M†žMˆžMŠžƒMŒž…MŽž‡Mߟ‰MàŸ‹M MìŸMퟑMMMðŸ—MñŸ™MòŸ›MóŸMôŸŸMõŸ¡MöŸ£M÷Ÿ¥MøŸ§MùŸ©MûŸ«MüŸ­MýŸ¯MþŸ±MÿŸ³M µM ·M ¹M »M ½M ¿M ÁM ÃM ÅM  ÇM  ÉM  ËM  ÍM  ÏM ÑM ÓM ÕM ×M ÙM ÛM ÝM ßM! áM# ãM' åM& çM6 éM3 ëM4 íM5 ïME ñMB óMC õMD ÷MS ùMQ ûMR ýMa ÿM_ N` No Nm Nn  N}  N{  N| N‹ N‰ NŠ N™ N— N˜ N§ N¥ N¦ !N¶ #N³ %N´ 'Nµ )NÄ +N -Nà/NÓ 1NР3NÑ 5NÒ 7Nå 9Næ ;Nç =Né ?Nê ANó CNí ENî GNï INð KNñ MNò ON¡QNÿ SN¡UN¡WN¡YN¡[N¡]N¡_N¡aN¡cN¡eN¡gN¡iN¡kN¡mN¡oN¡qN¡sN¡uN¡wN¡yN¡{N¡}N¡N ¡N!¡ƒN"¡…N#¡‡N$¡‰N%¡‹N&¡N'¡N(¡‘N)¡“N*¡•N+¡—N,¡™N-¡›N.¡N/¡ŸN0¡¡N1¡£N2¡¥N3¡§N4¡©N5¡«N6¡­N7¡¯N8¡±N9¡³N:¡µN;¡·N<¡¹N=¡»N>¡½N?¡¿N@¡ÁNA¡ÃNB¡ÅNC¡ÇND¡ÉNE¡ËNF¡ÍNG¡ÏNH¡ÑNI¡ÓNJ¡ÕNK¡×NL¡ÙNM¡ÛNN¡ÝNO¡ßNP¡áNQ¡ãNR¡åNS¡çNT¡éNU¡ëNV¡íNW¡ïNX¡ñNY¡óNZ¡õN[¡÷N\¡ùN]¡ûN^¡ýN_¡ÿN`¡Oa¡Ob¡Oc¡Od¡ Oe¡ Of¡ Og¡Oh¡Oi¡Oj¡Ok¡Ol¡Om¡On¡Oo¡Op¡!Oq¡#Or¡%Os¡'Ot¡)Ou¡+OI£-OJ£/OK£1OL£3OM£5ON£7OO£9OP£;OQ£=OR£?OS£AO£COž£EOŸ£GO £IO²£KO±£KO¾£MOÆ£OOΣQOÕ£SOÖ£UOà£WOä£YOó£[Oô£]Oø£_Oÿ£aO¤cO¤eO ¤gO ¤iO¤kO¤mO¤oO"¤qO,¤sO-¤uO7¤wO8¤yOB¤{OL¤}OV¤OW¤Oa¤ƒOb¤…Ol¤‡Om¤‰On¤‹O‘¤O{¤O|¤‘O}¤“O~¤•O¤—O€¤™O¤›O‚¤Oƒ¤ŸO„¤¡O…¤£O†¤¥O‡¤§Oˆ¤©O‰¤«OФ­O‹¤¯OŒ¤±O¤³OޤµO¤·O¤¹O›¤»Oœ¤½O¬¤¿O½¤ÁO»¤ÁO¾¤ÃO¼¤ÃO¿¤ÅOÁ¤ÇOÀ¤ÇOäÉO¤ÉOÕ¤ËOÒ¤ÍOÔ¤ÏOؤÑOÙ¤ÓOÛ¤ÕOܤ×OÞ¤ÙOߤÛOá¤ÝOâ¤ßO ¥áO ¥ãO ¥åO ¥çO¥éO¥ëO¥íO#¥ïO$¥ñO%¥óO&¥õO-¥÷O.¥ùO/¥ûO0¥ýO<¥ÿO?¥P@¥PA¥PB¥PC¥ PD¥ PE¥ PF¥PG¥PH¥PI¥PM¥Pš¥P›¥Pœ¥P¥PÀ¥!PÁ¥#PÃ¥%PÂ¥%Pã¥'Pâ¥'Pû¥)Pö¥+Pø¥-Pú¥/Pÿ¥1P¦3P¦5P¦7P¦9P ¦;P¦=P¦?PY¦APZ¦CP[¦EPh¦GPi¦IPj¦KPk¦MPm¦OPn¦QPo¦SPq¦UPr¦WPs¦YPt¦[Pu¦]Pv¦_Pw¦aPx¦cPy¦ePz¦gP{¦iP|¦kP}¦mP~¦oP¦qP€¦sP¦uP‚¦wPƒ¦yP„¦{P…¦}P†¦Pˆ¦P‰¦ƒP‹¦…PŒ¦‡P¦‰P¦‹P¦P‘¦P’¦‘P”¦“P•¦•P—¦—P˜¦™P™¦›P›¦Pœ¦ŸPž¦¡PŸ¦£P ¦¥P¢¦§P£¦©P¥¦«P¦¦­P§¦¯P¨¦±Pª¦³P«¦µP­¦·P®¦¹P¯¦»P°¦½P±¦¿P²¦ÁP³¦ÃP´¦ÅPµ¦ÇP¶¦ÉP·¦ËP¸¦ÍP¹¦ÏPº¦ÑP»¦ÓP¼¦ÕP½¦×P¾¦ÙP¿¦ÛPÀ¦ÝPÁ¦ßP¦áPæãPĦåPŦçPƦéPǦëPȦíPɦïPʦñP˦óP̦õPͦ÷PΦùPϦûPЦýPѦÿPÒ¦QÓ¦QÔ¦QÕ¦QÖ¦ Qצ Qئ QÙ¦QÚ¦QÛ¦QܦQݦQÞ¦QߦQà¦Qá¦Qâ¦!Qã¦#Qä¦%Qå¦'Qæ¦)Qç¦+Qè¦-Qé¦/Qê¦1Që¦3Qì¦5Qí¦7Qî¦9Qï¦;Qð¦=Qñ¦?Qò¦AQó¦CQô¦EQõ¦GQö¦IQ÷¦KQø¦MQù¦OQú¦QQû¦SQü¦UQý¦WQþ¦YQÿ¦[Q§]Q§_Q§aQ§cQ§eQ§gQ§iQ§kQ§mQ §oQ §qQ §sQ §uQ §wQ§yQ§{Q§}Q§Q§Q§ƒQ§…Q§‡Q§‰Q§‹Q§Q§Q§‘Q§“Q§•Q§—Q§™Q§›Q §Q!§ŸQ"§¡Q#§£Q$§¥Q%§§Q&§©Q'§«Q(§­Q)§¯Q*§±Q+§³Q,§µQ-§·Q.§¹Q/§»Q0§½Q1§¿Q2§ÁQ3§ÃQ4§ÅQ5§ÇQ6§ÉQ7§ËQ8§ÍQ9§ÏQ:§ÑQ;§ÓQ<§ÕQ=§×Q>§ÙQ?§ÛQ@§ÝQA§ßQB§áQC§ãQD§åQE§çQF§éQG§ëQH§íQI§ïQJ§ñQK§óQL§õQM§÷QN§ùQO§ûQP§ýQQ§ÿQR§RS§RT§RU§RV§ RW§ RX§ RY§RZ§R[§R\§R]§R^§R_§R`§Ra§Rb§!Rc§#Rd§%Re§'Rf§)Rg§+Rh§-Ri§/Rj§1Rk§3Rl§5Rm§7Rn§9Ro§;Rp§=Rq§?Rr§ARs§CRt§ERu§GRv§IRw§KRx§MRy§ORz§QR{§SR|§UR}§WR~§YR§[R€§]R§_R‚§aRƒ§cR„§eR…§gR†§iR‡§kRˆ§mR‰§oRЧqR‹§sRŒ§uR§wRާyR§{R§}R‘§R’§R“§ƒR”§…R•§‡R–§‰R—§‹R˜§R™§Rš§‘R›§“Rœ§•R§—Rž§™RŸ§›R §R¡§ŸR¢§¡R£§£R¤§¥R¥§§R¦§©R§§«R¨§­R«§¯R¬§±R­§³R®§µR¯§·R°§¹R±§»R²§½R³§¿R´§ÁRµ§ÃR¶§ÅR·§ÇR¸§ÉR¹§ËRº§ÍR»§ÏR¼§ÑR½§ÓR¾§ÕR¿§×RÀ§ÙRÁ§ÛR§ÝRçßRħáRŧãRƧåRǧçRȧéRɧëRʧíR˧ïŖñRͧóRΧõRϧ÷RЧùRѧûRÒ§ýRÓ§ÿRÔ§SÕ§SÖ§S×§Sا SÙ§ SÚ§ SÛ§SܧSݧSÞ§Sß§Sà§Sá§Sâ§Sã§Sä§!Så§#Sæ§%Sç§'Sè§)Sé§+Sê§-Së§/Sì§1Sí§3Sî§5Sï§7Sð§9Sñ§;Sò§=Só§?Sô§ASõ§CSö§ES÷§GSø§ISù§KSú§MSû§OSü§QSý§SSþ§USÿ§WS¨YS¨[S¨]S¨_S¨aS¨cS¨eS¨gS¨iS ¨kS ¨mS ¨oS ¨qS ¨sS¨uS¨wS¨yS¨{S¨}S¨S¨S¨ƒS¨…S¨‡S¨‰S¨‹S¨S¨S¨‘S¨“S¨•S¨—S ¨™S!¨›S"¨S*¨ŸS5¨¡S?¨£SI¨¥SS¨§S]¨©Sg¨«Sq¨­S{¨¯S…¨±S¨³S™¨µS£¨·S­¨¹SÒ¨»SÓ¨½SÔ¨¿SÕ¨ÁSÖ¨ÃSרÅSبÇSÙ¨ÉSÚ¨ËSÛ¨ÍSܨÏSݨÑSÞ¨ÓSߨÕSà¨×Sá¨ÙSâ¨ÛSã¨ÝSä¨ßSå¨áSæ¨ãSç¨åSè¨çSé¨éSê¨ëSë¨íSì¨ïSí¨ñSî¨óSï¨õSð¨÷Sñ¨ùSò¨ûSó¨ýSô¨ÿSõ¨Tö¨T÷¨Tø¨Tù¨ Tú¨ Tû¨ Tü¨Tý¨Tþ¨Tÿ¨T©T©T ©T ©T ©TB©!TC©#TF©%TG©'TH©)TI©+TJ©-TK©/TL©1TM©3TN©5TO©7T\©9TY©;TZ©=T[©?Tg©ATj©CTo©ETn©GTù©ITw©KTx©MTy©OTz©QT{©ST|©UT}©WT~©YT©[T€©]T©_T‚©aTƒ©cT„©eT…©gT†©iT‡©kTˆ©mT‰©oTŠ©qT‹©sTŒ©uT©wTŽ©yT©{T©}T‘©T’©T“©ƒT”©…T•©‡T–©‰T—©‹T˜©T™©Tš©‘T›©“Tœ©•T©—Tž©™TŸ©›T ©T¡©ŸT¢©¡T£©£T¤©¥T¥©§T¦©©T§©«T¨©­T©©¯Tª©±T«©³T¬©µT­©·T®©¹T¯©»T°©½T±©¿T²©ÁT³©ÃT´©ÅTµ©ÇT¶©ÉT·©ËT¸©ÍT¹©ÏTº©ÑT»©ÓT¼©ÕT½©×T¾©ÙT¿©ÛTÀ©ÝTÁ©ßT©áTéãTÄ©åTÅ©çTÆ©éTÇ©ëTÈ©íTÉ©ïTÊ©ñTË©óTÌ©õTÍ©÷TΩùTÏ©ûTЩýTÑ©ÿTÒ©UÔ©UÖ©UØ©UÚ© UÜ© UÞ© Uà©Uâ©Uä©Uæ©Uè©Uê©Uì©Uî©Uð©Uò©!Uô©#Uö©%Uø©'Uü©)Uþ©+Uª-Uª/Uª1Uª3Uª5U ª7U ª9Uª;Uª=Uª?UªAUªCUªEUªGUªIUªKU ªMU"ªOU$ªQU&ªSU(ªUU*ªWU,ªYU.ª[U0ª]U2ª_U4ªaU6ªcU8ªeU:ªgU<ªiU>ªkU@ªmUBªoUDªqUFªsUϪuUIªwUJªyUKª{ULª}UMªUNªUOªƒUPª…UQª‡URª‰USª‹UTªUUªUVª‘UWª“UXª•UYª—UZª™U[ª›U\ªU]ªŸU^ª¡U_ª£U`ª¥Uaª§Ubª©Ucª«Udª­Ueª¯Ufª±Ugª³UhªµUiª·Ujª¹Ukª»Ulª½Umª¿UnªÁUoªÃUpªÅUqªÇUrªÉUsªËUtªÍUuªÏUvªÑUwªÓUxªÕUyª×UzªÙU{ªÛU|ªÝU}ªßU~ªáUªãU€ªåUªçU‚ªéUƒªëU„ªíU…ªïU†ªñU‡ªóUˆªõU‰ª÷UŠªùU‹ªûUŒªýUªÿUŽªVªVªV‘ªV’ª V“ª V”ª V•ªV–ªV—ªV˜ªV™ªVšªV›ªVœªVªVžª!VŸª#V ª%V¡ª'V¢ª)V£ª+V¤ª-V¥ª/V¦ª1V§ª3V¨ª5V©ª7Vªª9V«ª;V¬ª=V­ª?V®ªAV¯ªCV°ªEV±ªGV²ªIV³ªKV´ªMVµªOV¶ªQV·ªSV¸ªUV¹ªWVºªYV»ª[V¼ª]V½ª_V¾ªaV¿ªcVÀªeVÁªgVªiVêkVĪmVŪoVƪqVǪsVȪuVɪwVʪyV˪{V̪}VͪVΪV«ƒVÛª…Vܪ‡Vݪ‰VÞª‹VߪVàªV᪑V⪓V㪕V䪗V媙V檛VçªV誟V骡VꪣV몥V쪧Víª©VV節Vðª¯Vñª±Vòª³VóªµVôª·Võª¹Vöª»V÷ª½Vøª¿VùªÁVúªÃVûªÅVüªÇVýªÉVþªËVÿªÍV«ÏV«ÑV«ÓV«ÕV«×V«ÙV«ÛV«ÝV«ßV «áV «ãV «åV «çV «éV«ëV«íV«ïV«ñV«óV«õV«÷V«ùV«ûV«ýV«ÿV«W«W ¬W¬W¬ WJ¬ WI¬ WX¬ WT¬WU¬WV¬WW¬Wd¬Wc¬Wf¬We¬Wh¬Wg¬Wj¬Wi¬Wl¬Wk¬Wn¬!Wm¬!Wp¬#Wo¬#Wq¬%Wu¬'Wt¬'Ww¬)Wv¬)Wy¬+Wx¬+W{¬-Wz¬-W}¬/W|¬/W¬1W~¬1W¬3W€¬3Wƒ¬5W‚¬5W…¬7W„¬7W‡¬9W†¬9W‰¬;Wˆ¬;WЬ=Wެ?W¬?W¬AW¬AW’¬CW‘¬CW”¬EW“¬EW–¬GW•¬GW˜¬IW—¬IW™¬KW¬MWœ¬MWŸ¬OWž¬OW¡¬QW ¬QW£¬SW¢¬SW¤¬UW¨¬WW§¬WWª¬YW©¬YW¬¬[W«¬[W®¬]W­¬]W°¬_W¯¬_W²¬aW±¬aW³¬cW·¬eW¶¬eW¹¬gW¸¬gWº¬iW»¬kW¼¬mWÀ¬oW¿¬oW¬qWÁ¬qWĬsWìsWƬuWŬuWǬwWˬyWʬyWͬ{W̬{WϬ}Wά}WѬWЬWÓ¬WÒ¬WÕ¬ƒWÔ¬ƒW׬…WÖ¬…WÙ¬‡Wج‡WÛ¬‰WÚ¬‰Wܬ‹W߬Wà¬WᬑW⬓Wö¬•W÷¬—Wø¬™Wù¬›Wú¬Wû¬ŸWü¬¡Wý¬£W"­¥W)­§W0­©W1­«W2­­W3­¯W4­±W>­³WE­µWL­·WS­¹WZ­»Wa­½Wb­¿Wc­ÁWd­ÃWe­ÅWf­ÇWn­ÉWo­ËWp­ÍWq­ÏWr­ÑWs­ÓWt­ÕWu­×Wv­ÙWw­ÛWx­ÝWz­ßW{­áW}­ãW­åW€­çW­éWƒ­ëW…­íW‡­ïWˆ­ñW‰­óWŠ­õW“­÷W•­ùW”­ùWà­ûWá­ýWâ­ÿW\®X]®X`®Xa®Xb® Xc® Xd® Xe®Xf®Xg®Xh®Xi®Xj®XÓ®XÔ®XÕ®XÖ®!XØ®#XÙ®%XÚ®'XÛ®)Xá®+Xâ®-Xã®/Xä®1Xå®3Xæ®5Xç®7Xé®9Xë®;Xì®=Xí®?Xø®AXð®CXñ®EXò®GXó®IXô®KXõ®MXö®OX÷®QX¯SX¯UX¯WX¯YX¯[X¯]X ¯_X ¯aX¯cX¯eX¯gX¯iX¯kX¯mX¯oX ¯qX¯sX¯uX¯wX#¯yX$¯{X&¯}X'¯X)¯X+¯ƒX,¯…X.¯‡X/¯‰X1¯‹X9¯X4¯X6¯‘X8¯“XD¯•XE¯—XG¯™XH¯›XJ¯XL¯ŸXM¯¡XO¯£XP¯¥XR¯§XS¯©XT¯«XU¯­Xd¯¯Xa¯±Xb¯³Xc¯µXk¯·Xh¯¹Xi¯»Xj¯½Xm¯¿Xn¯ÁXo¯ÃXp¯ÅXq¯ÇXr¯ÉXt¯ËXˆ¯ÍXw¯ÏXy¯ÑX{¯ÓX}¯ÕX¯×X¯ÙXƒ¯ÛX…¯ÝX‡¯ßX‹¯áXŒ¯ãX¯åXޝçX¯éX‘¯ëX’¯íX”¯ïX•¯ñX–¯óX—¯õX˜¯÷Xš¯ùX›¯ûXœ¯ýXž¯ÿXŸ¯Y ¯Y¢¯Y£¯Y¤¯ Y¥¯ Y§¯ Y¨¯Yª¯Y«¯Y­¯Y®¯Y°¯Y±¯Y²¯Y³¯Yµ¯!Y¶¯#Y·¯%Y¹¯'Yº¯)Y»¯+Y¼¯-Y½¯/Y¿¯1YÀ¯3YÁ¯5Yï7Yį9Yů;Yǯ=Yȯ?YɯAYʯCY̯EYͯGYϯIYЯKYÒ¯MYÓ¯OYâ¯QYã¯SYä¯UYå¯WYç¯YYè¯[Yé¯]Yê¯_Yë¯aYì¯cYí¯eYî¯gYõ¯iYò¯kYô¯mYø¯oYú¯qYü¯sYþ¯uY°wY°yY°{Y°}Y°Y °Y °ƒY°…Y°‡Y°‰Y"°‹Y&°Y2°Y9°‘Y:°“YH°•YL°—Ya°™Yi°›Y|°Y…°ŸY—°¡Yœ°£Yž°¥YŸ°§Y °©Y¡°«Y¦°­Y§°¯Y¨°±Y©°³Yª°µY«°·Y¬°¹Y­°»Y®°½Y¯°¿Y°°ÁY±°ÃY²°ÅY³°ÇY´°ÉYµ°ËY¶°ÍY·°ÏY¸°ÑY¹°ÓYº°ÕY»°×Y¼°ÙY½°ÛY¾°ÝY¿°ßYÀ°áYÁ°ãY°åYðçYİéYŰëYưíYǰïYȰñYɰóYʰõYϰ÷YѰùYÒ°ûYÔ°ýYÖ°ÿYذZÙ°ZÛ°ZܰZݰ Z ± Z,± Z-±Z0±Z1±Z4±Z5±Z?±Zƒ±Z„±Z…±Z†±!Z‡±#Zˆ±%Z‰±'Zб)Z‹±+ZŒ±-Z±/Zޱ1Z±3Z±5Z‘±7Z’±9Z“±;Z”±=Z•±?Z–±AZ—±CZ˜±EZ™±GZš±IZ›±KZœ±MZ±OZž±QZŸ±SZ ±UZ¡±WZ­±YZ®±[Z¯±]Z°±_Z±±aZ²±cZ³±eZ´±gZÕ±iZü±kZþ±mZý±mZ²oZÿ±oZ²qZ²sZ²uZ²wZ'²yZ(²{Z)²}Z*²Z0²Z2²ƒZ4²…Z6²‡Z7²‰Z8²‹Z9²Z:²Z;²‘Z<²“ZG²•ZH²—ZI²™ZJ²›ZK²ZL²ŸZM²¡ZR²£ZT²¥ZU²§ZV²©Z_²«Z`²­Za²¯Zl²±Zf²³Zg²µZi²·Zk²¹Zt²»Zu²½Zv²¿Zw²ÁZx²ÃZy²ÅZz²ÇZ²ÉZ²ËZ„²ÍZ†²ÏZвÑZ‰²ÓZ’²ÕZ“²×Z˜²ÙZ¨²ÛZœ²ÝZ²ßZž²áZŸ²ãZ ²åZ¡²çZ¢²éZ£²ëZ¤²íZ¥²ïZ¦²ñZ§²óZº²õZ´²÷Zµ²ùZ¶²ûZ·²ýZ¸²ÿZ¹²[Ȳ[Ʋ[Dz[в [Ѳ [Ò² [Ó²[Ô²[Õ²[Ö²[Ú²[Û²[ã²[ß²[à²[á²![â²#[í²%[î²'[ï²)[ð²+[ò²-[ñ²-[õ²/[ö²1[÷²3[ø²5[ü²7[ý²9[ÿ²;[³=[³?[³A[ ³C[ ³E[³G[³I[³K[³M[³O[,³Q[³S[³U[³W[³Y[!³[[#³][%³_['³a[)³c[+³e[4³g[6³i[9³k[:³m[;³o[<³q[=³s[>³u[@³w[A³y[C³{[E³}[G³[I³[K³ƒ[M³…[O³‡[P³‰[Q³‹[S³[T³[V³‘[X³“[Z³•[\³—[^³™[`³›[b³[c³Ÿ[d³¡[h³£[g³¥[j³§[m³©[n³«[o³­[{³¯[|³±[}³³[~³µ[³·[€³¹[ˆ³»[‰³½[г¿[‹³Á[Œ³Ã[³Å[޳Ç[³É[”³Ë[•³Í[–³Ï[¡³Ñ[¢³Ó[£³Õ[¬³×[­³Ù[®³Û[¯³Ý[°³ß[±³á[²³ã[³³å[·³ç[¸³é[À³ë[Á³í[³ï[Ƴñ[ϳó[ɳõ[ʳ÷[˳ù[̳û[ͳý[γÿ[Ù³\Ú³\Û³\ܳ\å³ \æ³ \ç³ \è³\ë³\ì³\í³\î³\ï³\ø³\ù³\ú³\û³!\ü³#\,´%\ ´'\ ´)\´+\´-\´/\´1\´3\´5\´7\´9\´;\!´=\#´?\$´A\%´C\'´E\)´G\+´I\7´K\9´M\;´O\=´Q\?´S\A´U\C´W\E´Y\G´[\I´]\K´_\M´a\O´c\Q´e\S´g\U´i\V´k\X´m\Z´o\\´q\^´s\`´u\b´w\d´y\f´{\h´}\j´\l´\n´ƒ\p´…\r´‡\t´‰\v´‹\w´\x´\y´‘\ˆ´“\…´•\‡´—\Š´™\Œ´›\Ž´\´Ÿ\’´¡\±´£\•´¥\–´§\—´©\˜´«\™´­\š´¯\›´±\œ´³\´µ\ž´·\Ÿ´¹\ ´»\¡´½\¢´¿\£´Á\¤´Ã\¥´Å\¦´Ç\§´É\¨´Ë\©´Í\ª´Ï\«´Ñ\¬´Ó\­´Õ\®´×\¯´Ù\°´Û\´Ý\½´ß\¿´á\Á´ã\Í´å\Ï´ç\Ñ´é\Ó´ë\Õ´í\×´ï\á´ñ\Ú´ó\Ü´õ\Þ´÷\à´ù\ì´û\î´ý\ð´ÿ\ò´]ô´]ö´]ø´]ú´ ]µ ]ý´ ]þ´]ÿ´]µ]µ] µ]µ]µ]µ]µ]µ!]µ#]µ%]%µ']!µ)]"µ+]#µ-]$µ/]5µ1]1µ3]2µ5]3µ7]4µ9]Yµ;]Aµ=]Bµ?]CµA]DµC]EµE]FµG]GµI]HµK]IµM]JµO]KµQ]LµS]MµU]NµW]OµY]Pµ[]Qµ]]Rµ_]Sµa]Tµc]Uµe]Vµg]Wµi]Xµk]'¶m]eµo]fµq]gµs]hµu]iµw]jµy]kµ{]lµ}]mµ]nµ]oµƒ]pµ…]qµ‡]rµ‰]sµ‹]tµ]uµ]vµ‘]wµ“]xµ•]yµ—]zµ™]|µ›]~µ]€µŸ]µ¡]‚µ£]ƒµ¥]„µ§]…µ©]†µ«]‡µ­]ˆµ¯]‰µ±]е³]‹µµ]Œµ·]µ¹]޵»]µ½]µ¿]‘µÁ]’µÃ]“µÅ]”µÇ]•µÉ]–µË]—µÍ]˜µÏ]™µÑ]šµÓ]›µÕ]œµ×]µÙ]žµÛ]ŸµÝ] µß]¡µá]¢µã]£µå]¤µç]¥µé]¦µë]§µí]¨µï]ªµñ]¬µó]®µõ]°µ÷]²µù]´µû]¶µý]¸µÿ]ºµ^¼µ^¾µ^Àµ^µ ^õ ^ĵ ^Ƶ^ȵ^ʵ^̵^ε^е^ѵ^Òµ^Óµ^Ôµ!^Õµ#^Öµ%^ص'^Ùµ)^Úµ+^ܵ-^Þµ/^àµ1^âµ3^äµ5^æµ7^èµ9^êµ;^ìµ=^îµ?^ðµA^òµC^ôµE^öµG^øµI^úµK^üµM^þµO^¶Q^¶S^¶U^¶W^¶Y^ ¶[^ ¶]^ ¶_^¶a^¶c^¶e^¶g^¶i^¶k^¶m^¶o^¶q^¶s^¶u^¶w^¶y^ ¶{^"¶}^$¶^&¶^/¶ƒ^1¶…^3¶‡^5¶‰^6¶‹^8¶^:¶^<¶‘^=¶“^>¶•^@¶—^B¶™^D¶›^F¶^G¶Ÿ^H¶¡^J¶£^L¶¥^N¶§^P¶©^Q¶«^R¶­^T¶¯^V¶±^W¶³^X¶µ^Z¶·^[¶¹^\¶»^^¶½^_¶¿^`¶Á^a¶Ã^c¶Å^d¶Ç^e¶É^g¶Ë^i¶Í^j¶Ï^l¶Ñ^n¶Ó^o¶Õ^q¶×^r¶Ù^s¶Û^u¶Ý^w¶ß^y¶á^z¶ã^|¶å^}¶ç^~¶é^€¶ë^‚¶í^„¶ï^†¶ñ^ˆ¶ó^жõ^Œ¶÷^޶ù^¶û^¶ý^’¶ÿ^“¶_”¶_–¶_˜¶_š¶ _œ¶ _ž¶ _ ¶_¢¶_£¶_¤¶_¥¶_§¶_¨¶_ª¶_«¶_­¶!_®¶#_°¶%_²¶'_´¶)_¶¶+_·¶-_¹¶/_º¶1_¼¶3_¾¶5_¿¶7_Á¶9_ö;_Ŷ=_Ƕ?_ɶA_ʶC_̶E_ζG_жI_ѶK_Ò¶M_Ô¶O_Ö¶Q_ضS_Ú¶U_Û¶W_ܶY_Þ¶[_à¶]_â¶__ä¶a_å¶c_æ¶e_è¶g_ê¶i_ë¶k_ì¶m_î¶o_ï¶q_ð¶s_ò¶u_ó¶w_ô¶y_õ¶{_÷¶}_ø¶_ù¶_û¶ƒ_ý¶…_þ¶‡_·‰_·‹_·_·_·‘_·“_ ·•_ ·—_ ·™_·›_·_·Ÿ_·¡_·£_·¥_·§_·©_·«_·­_ ·¯_"·±_#·³_$·µ_&··_'·¹_(·»_*·½_,·¿_.·Á_0·Ã_2·Å_4·Ç_6·É_7·Ë_8·Í_9·Ï_;·Ñ_<·Ó_>·Õ_?·×_A·Ù_B·Û_D·Ý_F·ß_H·á_J·ã_K·å_M·ç_N·é_P·ë_R·í_S·ï_U·ñ_Y·ó_X·õ_`·÷_a·ù_b·û_c·ý_d·ÿ_f·`g·`h·`i·`y· `z· `„· `…·`Š·`‹·`™·`’·`”·`–·`˜·`¡·`£·!`¤·#`¦·%`§·'`©·)`ª·+`¬·-`®·/`¯·1`±·3`²·5`´·7`µ·9`½·;`¸·=`º·?`¼·A`Å·C`Ç·E`É·G`Ë·I`Í·K`Ï·M`Õ·O`Ò·Q`Ô·S`Ý·U`ß·W`á·Y`ã·[`ä·]`å·_`ç·a`è·c`é·e`ê·g`ë·i`ì·k`þ·m`ð·o`ñ·q`ò·s`ó·u`ô·w`õ·y`ö·{`÷·}`ø·`ù·`ú·ƒ`û·…`ü·‡`ý·‰`&¸‹` ¸` ¸`¸‘`¸“`¸•`¸—`¸™`¸›`¸`¸Ÿ`¸¡`!¸£`#¸¥`$¸§`%¸©`1¸«`3¸­`5¸¯`7¸±`9¸³`;¸µ`=¸·`?¸¹`A¸»`C¸½`E¸¿`G¸Á`I¸Ã`K¸Å`M¸Ç`O¸É`Q¸Ë`S¸Í`U¸Ï`W¸Ñ`Y¸Ó`[¸Õ`]¸×`_¸Ù`a¸Û`c¸Ý`°¸ß`f¸á`g¸ã`i¸å`k¸ç`m¸é`n¸ë`o¸í`p¸ï`q¸ñ`r¸ó`s¸õ`t¸÷`u¸ù`v¸û`w¸ý`x¸ÿ`y¸az¸a{¸a|¸a}¸ a~¸ a¸ a€¸a¸a‚¸aƒ¸a„¸a…¸a†¸a‡¸aˆ¸a‰¸!aЏ#a‹¸%aŒ¸'a¸)aޏ+a¸-a¸/a‘¸1a’¸3a“¸5a”¸7a•¸9a—¸;a˜¸=a™¸?aš¸Aa›¸Caœ¸Ea¸Gaž¸IaŸ¸Ka ¸Ma¡¸Oa¢¸Qa£¸Sa¤¸Ua¥¸Wa¦¸Ya§¸[a¨¸]a©¸_a«¸aa¬¸ca­¸ea®¸ga¯¸ia»¸ka¼¸ma½¸oa¾¸qaÀ¸sa¸uaĸwaŸyaǸ{aȸ}aʸa˸a̸ƒa͸…aϸ‡aѸ‰aÓ¸‹aÔ¸aÖ¸a׸‘a2¹“aÚ¸•aÛ¸—aܸ™aݸ›aÞ¸a߸Ÿaมaḣa⸥a㸧a丩a師a渭a縯a踱a鸳a긵a븷a츹aí¸»aa︿að¸Áañ¸Ãaò¸Åaó¸Çaô¸Éaõ¸Ëaö¸Ía÷¸Ïaø¸Ñaù¸Óaú¸Õaû¸×aü¸Ùaý¸Ûaþ¸Ýaÿ¸ßa¹áa¹ãa¹åa¹ça¹éa¹ëa¹ía¹ïa¹ña ¹óa ¹õa ¹÷a ¹ùa ¹ûa¹ýa¹ÿa¹b¹b¹b¹b¹ b¹ b¹ b¹b¹b¹b¹b¹b¹b¹b¹b¹b ¹!b!¹#b"¹%b#¹'b$¹)b%¹+b&¹-b'¹/b)¹1b+¹3b-¹5b.¹7b/¹9b0¹;b1¹=b=¹?b?¹AbA¹CbC¹EbE¹GbG¹Ibn¹KbJ¹MbK¹ObL¹QbM¹SbN¹UbO¹WbP¹YbQ¹[bR¹]bS¹_bT¹abU¹cbV¹ebW¹gbX¹ibY¹kbZ¹mb[¹ob\¹qb]¹sb^¹ub_¹wb`¹yba¹{bb¹}bc¹bd¹be¹ƒbf¹…bg¹‡bh¹‰bi¹‹bj¹bk¹bl¹‘bm¹“b|¹•bz¹—b{¹™b‹¹›bˆ¹bйŸb¹¡b”¹£b–¹¥b˜¹§bš¹©b£¹«b¹­bž¹¯bŸ¹±b ¹³b¡¹µb¢¹·bµ¹¹b¯¹»b°¹½b±¹¿b²¹Áb³¹Ãb´¹Åb͹ÇbÁ¹Éb¹ËbùÍbĹÏbŹÑbƹÓbǹÕbȹ×bɹÙbʹÛb˹Ýb̹ßbá¹ábÙ¹ãbÚ¹åbÛ¹çbܹébݹëbÞ¹íbß¹ïbà¹ñbë¹óbì¹õbí¹÷bî¹ùbï¹ûbð¹ýbñ¹ÿbò¹cô¹cõ¹cö¹c÷¹ cø¹ cù¹ cú¹cû¹cý¹cþ¹cÿ¹cºcºcºc ºcº!cº#cº%cº'cº)c*º+c º-c!º/c"º1c#º3c$º5c%º7c&º9c'º;c)º=c5º?c7ºAcBºCc;ºEc=ºGc>ºIc?ºKc@ºMcAºOcEºQcGºScIºUcKºWcOºYcNº[cTº]c_º_cYºacZºcc[ºec\ºgc]ºic^ºkcuºmcoºocpºqcqºscrºucsºwctºycº{c€º}cºc‚ºcƒºƒc„º…c…º‡cˆº‰c‰º‹cŠºc‹ºcŒº‘cº“cŽº•cº—cº™c‘º›c’ºc“ºŸc”º¡c•º£c–º¥c—º§c˜º©c™º«cšº­c›º¯cœº±cº³cžºµcŸº·c¡º¹c¢º»c£º½c¤º¿c¥ºÁc¦ºÃc§ºÅc¨ºÇc©ºÉcªºËc«ºÍc¬ºÏc­ºÑc®ºÓc¯ºÕc°º×c±ºÙc²ºÛc¶ºÝcµºßc¸ºác¿ºãcÀºåcÁºçcºécúëcĺícźïcƺñcǺóc̺õc˺÷cκùcкûcѺýcÒºÿcÓºdÔºdÕºdÖºd׺ dغ dÙº dÞºdݺdàºdâºdãºdäºdåºdæºdçºdèº!déº#dêº%dëº'dìº)díº+dîº-dóº/dòº1døº3düº5dýº7d »9d »;d»=d»?d»Ad»Cd»Ed»Gd(»Id*»Kd-»Md/»Od0»Qd1»SdA»Ud=»Wd>»Yd?»[d@»]dS»_dM»adN»cdO»edP»gdQ»idR»kde»md_»od`»qda»sdb»udd»wdr»ydv»{d…»}dy»dz»d{»ƒd|»…d}»‡d~»‰d»‹d€»d»d‚»‘d„»“d»•d»—d“»™d’»›dš»dœ»Ÿd»¡dž»£dŸ»¥d »§d¡»©d¢»«d£»­d¤»¯d¥»±d¦»³d§»µd¨»·d©»¹dª»»d«»½d¬»¿d­»Ád®»Ãd¯»Åd°»Çd±»Éd²»Ëd´»Ídµ»Ïd¶»Ñd·»Ód¸»Õd½»×d»»Ùd¼»Ûd»ÝdûßdÏ»ádлãdÑ»ådÒ»çd×»édÖ»ëdÜ»ídß»ïdà»ñdá»ódâ»õdã»÷dä»ùdé»ûdè»ýdî»ÿdû»e÷»eø»eù»eú» e ¼ e¼ e ¼e ¼e¼e¼e¼e¼e¼e¼e¼e¼!e¼#e¼%e¼'e¼)e$¼+e#¼-e)¼/e8¼1e.¼3e/¼5e0¼7e1¼9e2¼;e3¼=e4¼?e5¼Ae6¼Ce7¼EeB¼GeC¼IeD¼KeE¼MeF¼OeG¼QeH¼SeI¼UeJ¼WeK¼YeL¼[eM¼]eN¼_eP¼aeQ¼ceR¼eeS¼geT¼ieU¼keV¼meW¼oeX¼qeY¼seZ¼ue[¼we\¼ye]¼{e^¼}e_¼e`¼ea¼ƒeb¼…ec¼‡ee¼‰ef¼‹ej¼ei¼e¹¼‘eº¼“e»¼•e¼¼—e½¼™e¾¼›e¿¼eÀ¼ŸeÁ¼¡e¼£eü¥eļ§eż©eƼ«eǼ­eȼ¯eɼ±eʼ³e˼µe̼·eͼ¹eμ»eϼ½eм¿eѼÁeÒ¼ÃeÓ¼ÅeÔ¼ÇeÕ¼ÉeÖ¼Ëe×¼ÍeؼÏeÙ¼ÑeÚ¼ÓeÛ¼Õeܼ×eݼÙeÞ¼Ûeß¼Ýeà¼ßeá¼áeâ¼ãeã¼åeä¼çeå¼éeæ¼ëeç¼íeè¼ïeé¼ñeê¼óeë¼õeì¼÷eí¼ùeî¼ûeï¼ýeð¼ÿeñ¼fò¼fó¼fô¼fõ¼ fö¼ f÷¼ fø¼fù¼fú¼fû¼fü¼fý¼fþ¼fÿ¼f½f½!f½!f½#f½#f½%f½%f[½'fT½)fV½+fX½-fZ½/ff½1fh½3fj½5fk½7fm½9fn½;fp½=fr½?ft½Afu½Cfw½Efx½Gfy½Ifz½Kf„½Mf…½Of”½Qf‘½Sf“½UfŸ½Wf¡½Yf£½[f¥½]f©½_fª½af«½cfQ¾efR¾gf·¾if¸¾kf¾mfþof¿qf¿sf ¿uf ¿wf¿yf¿{f¿}f¿f¿f-¿ƒf.¿…f/¿‡f0¿‰f<¿‹f;¿fF¿fI¿‘fG¿‘fJ¿“fH¿“fX¿•fY¿—f¿™fq¿›fr¿fs¿Ÿft¿¡fu¿£fv¿¥fw¿§fx¿©fy¿«fz¿­f|¿¯f}¿±f~¿³fŠ¿µfŒ¿·f•¿¹f¿»f¿½f‘¿¿f’¿Áf“¿Ãf”¿ÅfŸ¿Çf ¿Éf¡¿Ëf¢¿Íf£¿Ïf¤¿Ñf¯¿Óf°¿Õf±¿×f²¿Ùf³¿Ûf´¿Ýfµ¿ßfÌ¿áfÇ¿ãfÉ¿åfË¿çf׿éfÙ¿ëfÚ¿ífÜ¿ïfÝ¿ñfß¿ófá¿õfâ¿÷fä¿ùfå¿ûf;ÀýfŒÀÿf˜Àg™Àg¯Àg¶Àg³À gµÀ g¾À gÀÀgÂÀgÄÀgÊÀgÇÀgÉÀgÍÀgÏÀgÑÀgÓÀ!gðÀ#gñÀ%göÀ'góÀ'g÷À)gôÀ)gõÀ+gûÀ-güÀ/gÁ1gÁ3gÁ5g Á7gÁ9gÁ;gÁ=gÁ?g!ÁAg ÁAgÿÁCgÆÂEgÑÂGgÃIgˆÃKg‰ÃMgŠÃOg‹ÃQgŒÃSgÃUg¢ÃWg£ÃYg¤Ã[gÑÃ]gÓÃ_gãÃagäÃcgìÃegýÃggþÃig$Äkg!Ämg"Äog#Äqg0Äsg,Äug-Äwg.Äyg/Ä{g‰Ä}gŠÄg‹ÄgŒÄƒgœÄ…g‘ćg“ĉg•Ä‹g—Äg˜Äg™Ä‘g›Ä“gŸÄ•g¡Ä—g¢Ä™g¤Ä›g¦Äg¨ÄŸgªÄ¡g¬Ä£g­Ä¥g¯Ä§g±Ä©g³Ä«gÄÄ­g·Ä¯g¹Ä±g»Ä³g½Äµg¿Ä·gÀĹgÁÄ»gÃĽgÇÄ¿gÉÄÁgËÄÃgÍÄÅgÎÄÇgÐÄÉgÑÄËgÓÄÍgÕÄÏg×ÄÑgÙÄÓgÛÄÕgÜÄ×gÞÄÙgßÄÛgáÄÝgñÄßgôÄágõÄãgöÄåg÷Äçgž –   ¤ ˜ ¦ Œ Š ù¢ !œ #š %ª '¨ )Ž +’ -” / 1! i! k! W! m! o! ! Y! q! s! u$r W$p $n ù5– 5” Y:&ÅùÀm ù¾o e˜ÆešÈeœÊf¤= f¢? Ýêÿ ÝèãÅP`PbŸP^¡Qh¥Qj§Qf©|Ŷ0%Å̾%Åž+è'Ÿ+æ'£6+è'¥>+è'§F+æ'©N+è'­b+æ'¯j+è'!â8Å469m 449o 7D9˜«7B9–«7F9š«¼=ŃšCƒ%ƒ˜C…%‡ÂCƒ%‡ÀC…%ˆÈCm ˆÆCo Dí%Dï%¸ÄIŸ(¸ÂI¡(ö ä^Æö è^Èö æ^ÊñœxCñšx‘CÛâÅܿŶ‡C´‡‘C&HŒC&FŒ‘C2zŒC2xŒ‘CK •±NK •³Nl¨ñSlþ§óS ¨UTž¨WT‚¦¨YT‚¤¨[TŠȨƒTŠƨ…TŒÒ¨ƒTŒШ…TŸ>©ÅTŸ@©ÇT¡J©×T¡H©ÙT¼D³ÁT¼B³ÃT>–µ[>”µƒ[˜–Âí`™šÂù=šžÂï`›¢Âñ`ÁvÃOaÓÒЛdÓÐÐdÚøÐ¯dÚöбdáÑm áÑo å(ÑCå&Ñ‘CGÔëÁTGÒëÃT]$  l]$ž le$HNe$FRe$JPh$dTh$`Nh$^Rh$bPi$†Ti$‚Ni$€Ri$„P}$`T}$dN}$bR}$fPW'¬)ƒoW'®)…oW'ª)‡oW'°)‰oW'¨)‹oZ'ì)•oZ'î)—oZ'ê)™oZ'ð)›oZ'è)o['ø)•o['ú)—o['ö)™o['ü)›o['ô)o\'*¥o\'*­o\'*£o\'*«o\'*¡o]'*¥o]'*­o]'*£o]'*«o]' *¡oš(*5 5›(45 5œ(>5 5(H5 5Î(F7¯dÎ(D7±dï(Ì7£xï(Ê7¥xð(Ò7£xð(Ð7¥x )¦8¯d )¤8±d)è8[)æ8ƒ[Â*’E¡~Â*E£~+èFÁT+æFÃT'+ðHèH1+ŠIÅ3+–IÅ©+°L‚À+hQ‘‚À+fQ“‚Ã+vQ‘‚Ã+tQ“‚Ó+(Rm Ó+&Ro e-"dÁTe- dÃTq-¦dW…-fW™-ØfWã.xuQ(ã.vu /Œwi /Šw8/@ym 8/>yo y/p{¯dy/n{±dz/v{¯dz/t{±d 0Ò=‹ 0Ô?‹ 0ÖA‹ 0ØC‹ 0ÚE‹ 0ÜG‹ 0àI‹ 0ÞK‹ 0âM‹G0ÈÁTG0ÆÃTz0lƒÁTz0jƒÃT0ÔƒÁT0ÒƒÃT0ÞƒÁT0܃ÃT’0êƒÁT’0èƒÃT™0–„0ê„-«0ø„‰‚¬0ü„‰‚´0 …Å´0œ…ß´0ž…«´0˜…›´0š…­º0†Åº0†ßº0†«º0†[º0†­ñ0xˆB ñ0zˆD ñ0|ˆF 1䈿’®h™x  Ú Ã’ ,5BIPX`hpx„Œ”œ¤¬´¼ÄÌÔÜäìôü #+3;CKS[ck|…“›«²ºÃÎæð6JVcjy’£¸ÌÙãíû!)2FOY„Š•¤ÄÜâù.Jfq|œ¯ÂÌÛæõÿ $K\q„‘Ò"C`Ž—£°½ÄÐá÷ "3>JWahsz‡‘ ¬¿ÎÖÞïü.DQ_tŠ´ÅÔßêö  . ; J ^ m | „ ¤ Ô ì   # 8 @ Q \ f o x ‚ ‹ ¦ ³ Ô   ' 6 J c m v ’ ¬ µ  á ñ  & ; ] m „ Å Ò Ù á ï   % ? J Z s ‘ ´ É à õ ü !;EZ„”¬ÃÌÖÞ !+=Gz–Îßõ)8K^is…‘™­ÁÍØèø!0CNboŽ˜¡±ÅÛñü FVkŒ¤´ÄÍ×àõ'b€ž¼×ñ&1ALUau…›®ÂÓê÷8W}“µ×ãïø"Hl˜¯Æå#3Jiy†¦Ëó>N]w–ÆßEU~ˆ˜¨¿Þñ 6BJ^r—Ÿ§¯»Ìø%6UewмÑçBKT_rƒ–£²Îàè"A\dlw€Œ— «´ÀÐàú '2;IWjtˆ˜¦¹ÑÚêÿ (>K_hxˆ¢ÀÎÚéü + : F O Y a y ‡ š ª ² Ì Õ ã ÷ ÿ !! !)!3!>!G!S!Y!o!Š!ª!Ï!ù!" """'"/"7"?"M"\"e"p"}""œ"®"Å"Ó"þ":#F#U#`#k#v###•##ª#¼#Ó#å#ü#$%$7$I$Q$Y$a$i$q$y$$‰$‘$™$¡$¾$Û$ï$ü$ %/%@%N%W%`%r%%Ž%%ª%µ%Ç%Ú%î% &&"&1&@&K&b&r&‰&™&¦&²&Ô&û& '1'D'W'j'}'Œ'œ'¯'Æ'Ý'ç'ô'((!(.(9(M(](u(‰(™(­(Ì(ø(/)>)G)R)`)p))•)¬)Î)Ù)ã)ò)û)**#*/*;*G*U*p*‚*‘*¢*±*Ã*ð*++@+\+u+€+Š+š+­+Á+Ù+ä+ò+ü+ ,,",0,>,L,Z,m,~,‰,‘,™,°,¼,Ä,Ï,-G-„-Á-é-..F.†.—.Ÿ.§.¯.¹.Ñ.é.û.//,/B/Q/[/f/|/‡/•/ª/¹/Å/Ð/à/ 0 0*020:0B0J0R0Z0b0r0z0Š0’0š0¢0ª0¹0Ä0Ô0ä0ì0ô0ü01"111B1X1i1y1ƒ1“1£1±1¿1Í1Û1é1÷1 22)262B2J2R2Z2f2r2„2‘2œ2±2»2ë2 3&3:3S3_3o3v3~3¢3À3è3"4H4Y4o4|4‡4’44¨4³4¿4Ì4×4á4ð4û4 55$535>5M5k55’5¢5ª5º5Å5Ö5é5ø56/6J6Y6z6¶6Ê6Õ6å6ô6ÿ67"757@7O7^7z7‘7¨7¿7Û7ê7888)898D8a8u8€8‘8Ý8ê8ý899Ã9Ò9ú9 ::J:f:~:±:ß:;,;I;a;m;;›;¶;Ä;Ù;æ;õ;<$<3<X<b<y<…<‘<°<Ü<===2=Y=c=r=|=†=®=à=ê=ö=>D>N>W>a>q>’>¥>Ø>ã>ð>ÿ> ??&?F?P?`?l?x?€?˜?Ð?æ?÷? @@@'@0@9@L@d@|@@Î@ AwA†AšA³A»AÃA×AîAýABBKKKXKcKnKyKˆK—K¢K¿KÒKèKLL)LNYN~N•N°N¿NÎNìN/O–OÔO6PEPQPmP|P‰PŸP¬P·PÃP×PïPQQ&Q9QUQdQ€QQ¶QÜQõQR.RJR`RoR~RRR¬R´R¼RÄRÌRÜRS S;SgSsSƒSŽS›S¦S¾STZTiT§TºTéTùTUVU®U×UïUV+VCVcVkVsV{VƒV’V£V¶VÅVØVäVWW-W=WPW_WrW}W…WW˜W¥W´WÃWÒWÞWîWXX"X.XJXUXeXX¢XªX²XºXÂXÊXÒXÚXâXñXY+Y5YCY]YuY™Y¹YÁYÐYàYùYZ-ZKZgZZ¤Z¹ZØZèZüZ[[$[h[u[‚[Œ[—[¦[¼[Ë[ß[ì[\\g\”\ã\]]*]5]I]g]ˆ]©]¸]Ð]ã]ö]^,^7^X^h^x^¢^¸^Í^ß^ê^þ^ _%_;_e_u_‰_•_³_Ã_Î_â_î_``+`U`b`‡`Ç`Ü`ë`aa*aCa\a‚aÇab\bÈb^crcc­cîc`dsd}de$eEeYe…e”e§eÓeâeõefhfˆf±fÍfÜfëfúfgg9gHgXgcg|g‰g•g®g¹gÅgÔgøgh(hR\f†¨²¼ÏÙãþŽŽ&Ž0ŽHŽ]ŽkŽޓަޯŽãŽûŽ *=PZdo™¸ä =U}žºá‘N‘z‘„‘Ž‘¶‘Õ‘’=’j’“’«’Ý’“#“d“‹“—“§“¶“Á“Гۓæ“ñ“””"”1”@”O”g”z””œ”¯””Քá”𔕕!•0•?•J•Y•h•{•…•”•§•º•É•å•ï•ù• –%–4–;–G–[–g–}––¢–º–Ê–Ú–î–——$—3—F—Y—l——Š— —Ç—Ù—è—ø—˜'˜:˜L˜a˜|˜˜£˜»˜Ï˜ç˜þ˜™0™C™Z™q™€™™ž™²™Ä™Ð™ï™šš(š8š?šVšš£šµšÈšïš››P›_›i›s›š›ª›½›È›Ó›Þ›é›ô›ÿ› œœ œ3œ>œQœ\œlœ„œ˜œ»œÆœÕœâœñœ%0Yhsƒ£³Ô÷ž+žzžžž´žÛžŸEŸ‰ŸŸ¨Ÿ»ŸÅŸÏŸçŸ M W a p ‡ ¦ ½ Ï Þ é ø ¡*¡O¡¤¡¢p¢É¢"£w£†£‘£ £¸£Ý£ì£¤¤¤(¤7¤K¤k¤u¤—¤«¤¼¤Ç¤ã¤¥¥/¥C¥`¥x¥”¥µ¥Ñ¥ø¥¦-¦S¦¦œ¦Ä¦ì¦ §:§K§‚§£§Î§ç§ ¨¨F¨g¨v¨™¨¨¨²¨½¨È¨×¨ ©©2©=©M©]©l©†©©¦©¾©ß©ú©ª&ª1ª<ªGªSª€ª°ªçªüª«««%«G«R«j«‚«–« «¯«Ð«ñ«¬¬ ¬0¬B¬T¬m¬z¬’¬²¬Â¬Ù¬å¬õ¬­ ­­)­4­D­T­l­u­…­¡­¨­¼­Þ­ö­®®(®7®J®Z®‚®£®å® ¯2¯}¯‰¯š¯¥¯°¯Á¯Í¯Ù¯å¯ñ¯ý¯ °°3°Z°t°Ž°¨°¿°Þ°æ°ý°±±+±C±O±\±m±}±Œ±—±£±¯±Ã±é±²²6²G²j²{²Œ²¡²ª²Ç²Ô²ß²÷²³³@³i³³•³¡³­³¹³Å³Ó³Þ³ê³õ³ ´´"´-´C´e´´¬´Á´Ú´í´µµµ.µ=µGµQµµÇµÕµáµýµ ¶¶,¶8¶@¶K¶Z¶k¶z¶‰¶•¶­¶¸¶Ã¶Ò¶Ý¶è¶ó¶···(·8·G·V·b·m·|·œ·¬·Ê·Ô·å·¸)¸J¸¸‘¸¡¸°¸È¸Ø¸â¸ì¸ü¸ ¹¹.¹B¹U¹d¹—¹Ê¹ô¹ºHºnºº™º¨º¸ºÂºÑºàºðºúº»(»L»h»„» »¼»Ñ»ç»ü» ¼¼.¼8¼B¼a¼o¼y¼Š¼™¼°¼¿¼Ï¼ã¼ø¼½½!½8½S½o½~½‘½¥½´½Ã½Ö½å½ý½¾%¾0¾@¾K¾V¾e¾u¾…¾”¾£¾´¾»¾Ç¾Ú¾¿6¿}¿‰¿§¿±¿Æ¿Ð¿Ú¿ä¿î¿ú¿ÀÀÀ(À9ÀDÀXÀoÀ{À“À­ÀÊÀÜÀðÀÁÁ(Á@ÁNÁ[ÁkÁ}Á‰Á”Á£Á®Á½ÁÊÁÛÁèÁùÁ Â!Â,Â;ÂJÂUÂdÂsÂ~œ¨¹ÂÅÂÖÂâÂóÂÃÃ$Ã9ÃRÃkÃ|ÈØçúÃÍÃäÃóÃÄ"Ä@ÄQÄbÄqĉĥĴÄÃÄäÄóÄýÄÅÅ7ÅZÅrŇÅŰÅÁÅÒÅáÅðÅÆÆ)Æ8ÆKÆ\ÆqƆƗƬƻÆÎÆÝÆðÆÇÇ!Ç5ÇHÇYÇjÇÇŽÇǰÇÁÇÐÇáÇòÇÈÈ'È6ÈEÈXÈvÈȪÈÂÈÖÈîÈÿÈÉ%É:ÉKÉ\ÉmɋɩɾÉáÉÊÊ8ÊWÊvÊ„ÊʭʾÊÏÊäÊõÊ ËË0ËAËVËgË|Ë˞˳ËÉËÚËïËÌÌÌ.Ì=ÌLÌ_ÌrÌ̵̙ÌÒÌóÌÍÍ8ÍUÍnÍ}͌ͮ͟ÍÁÍÐÍãÍòÍÎÎ'Î6ÎEÎXÎlÎ{Ύ΢γÎÂÎÓÎèÎùÎÏÏ0Ï?ÏRÏcÏxÏ…Ïϥ϶ÏÅÏÖÏëÏÐÐ.ÐPÐ_ÐrЉИдÐÅÐÚÐëÐüÐÑ&Ñ7ÑLÑ[ÑnÑ}ьџѲÑÁÑÔÑåÑüÑ"Ò9Ò_ÒjÒ}ÒŽÒ¥Ò´ÒËÒßÒîÒ Ó(Ó3Ó=ÓGÓoÓÓŽÓ™Ó¤Ó¯ÓºÓäÓõÓÔ%Ô/Ô9ÔMÔaÔuÔ„Ô¡Ô½ÔÙÔõÔÕ(ÕMÕ]ÕmÕ}ՌռÕÏÕÙÕãÕÖÖ,ÖRÖxÖ‹Ö±Ö×Ö××)×=×[×j×~ל׫׿×Ý×ìר Ø(ØDØ`Ø|ØØ¤Ø¸ØÇØìØÙÙ$Ù8Ù]ÙqÙ…Ù™Ù­ÙÁÙÕÙñÙÚÚ*ÚKÚUÚ_Ú‡Ú¯Ú¾ÚÍÚÜÚóÚÛÛ Û/ÛLÛ[Û„Û“Û¢Û¶ÛÛÛêÛùÛÜÜÜ;ÜRÜk܎ܹÜÈÜ×ÜèÜòÜÝÝ6ÝJÝ^ÝgÝrÝ~ݎݘݢݳÝÄÝèÝûÝ ÞÞ)ÞMÞqÞÞ‘Þ¬Þ¼ÞÊÞØÞæÞôÞßß7ßLß\ßnß}ßˆß“ßžß¿ßØßùß!à6àSàgàvàà¦àÑàáá8áAáyáÌáéáùáââ+â?âNâ_âpâ†â‘â¦âÚâââîâúâããã8ãDãPã\ãpã€ãŽã¢ãºãÛãëã÷ã:ä[ä äÏäå4åYå‚å´å æHæ•æµæâæ!ç‡ç¸ç ètè„èèžè®è½èÈèÎèùèéZé…é½éÛéãéíé÷éê êêê)ê3ê=êGêQê[êeêoêyêƒêê—ê¡ê«êµê¿êÉêÓêÝêçêùêë ëë!ë+ë5ë?ëIëSë]ëgëqë{ë…ëë™ë£ë­ë·ëÁëËëÕëßëëëìì8ìhìˆì°ìÈìÔìÝìïìþìí+í:íMí\íkíví…í”í°íÑíùí î î4îCîZîeîoîyîƒîî—î¡î«îµî¿îÉîÓîÝîçîñîûîïïï1ïBïSïhïrï|ï†ïïœï¨ïÆïäïýï ðð"ð3ðCðMðWðaðvðð¤ð±ðÂðÑðàðêðôðþðññ#ñ6ñRñañ}ñŒñ ñ¾ñÚñÿñ.òÇòÖòsó•ó¼óÕóêóô$ôAôZôiô}ôªô·ôÝôõ"õ†õ•õ©õÃõÒõâõòõöö)ö4ö?öIöSö]ögöoöyöŠö“öœö¤ö®ö¾öÍöÙöæö÷ö÷÷ ÷-÷>÷K÷\÷i÷z÷‡÷—÷¡÷©÷¸÷Ã÷Ò÷Þ÷ë÷øø/øJøhø~ø‹øžø¨ø²ø¼øÌøÙøéøùù)ù4ù>ùHùRù\ùfùpùzù„ùŽù˜ù¢ù¬ù¶ùÀùÊùÔùÞùèùòùüùúúú$ú.ú8ú{úÝúû0ûDûSûxû‚ûŒû–û û«ûºûÑûäûïûùûüü,ü?üMüWüaüküuü‡ü“üü§ü·üÂüÍüØüçüûüýý1ýNýoý•ý¥ýÅýäýíýÿýþþ2þ þÿ‚ÿóÿ¡±è÷)4L`o«Ýìû';Oh|‘¥¸Ìàóý&0:DN^fp{ˆ‘šª³¾Ç×ë  )9FQboy…‘¨¿Óãïû-AMYm}™¨µÁÍØìø=HSan€‰“§±»ÅÏÙãíø ;s‘¡®»ÈÓî">_k|†š¤®¸ÈÒÜæðú  # 8 C N Y d … – ¢ ® ¸  Ì à õ    + 2 : R o Œ © Æ Ð Ú â ø  * < F P j w Š « º Ê Ô Þ í ø 7 S £ à   + ^ „  š ¤ ® ¸ Æ Ô ì û %9DXcw‚–¥ÆÞò@`–¦¿ÊÞò6[„“«¿àñû#-7AKU_is}‡‘›¥¯¹ÃÍ×áëõÿ ,=GQ[ep{†‘œ§²½ÈÓÞéôÿ  2Imz‡™·ÃÚñ"=cu™­½Ôö#3CUcu ï@c†ÄÔèø3Efwˆž¨¸Èë+Rbz¯ËÛó(E_„–¶ÂÒÝìü'[t…¢ÌÜæö.:FMXd€‹š©¸ÇÖáBUds~‘œ¦¶ÐÞë8G[d‚˜¢¬¶ÀÔäö)Ddtˆ”¶á"hw˜Â E S c s ˆ   Á Ù ç ÿ !!-!7![!x!£!¸!Õ!ß!""""","6"@"J"T"^"h"r"|"†""š"¤"®"¸"Â"Ì"Ö"à"ê"ô"þ"###&#;#E#V#h#}#–#«#À#Ù#î#$$1$F$W$l$€$™$­$Å$î$%#%7%O%`%j%t%„%Ž%˜%¢%¬%Â%Ù%ï% &&5&S&m&}&ˆ&“&&§&¯&À&Ñ&Û&å&ï&ù&' ''!'+'5'?'I'X'y'ˆ'—'¾'å'ô'((3(B(Q(`(o(~((œ(«(º(Ö( ))F)m)œ)«)Ç)÷)*J*}*–*¢*É*è*+$+G+V+x+«+É+ë+ ,!,H,R,\,f,p,z,„,,®,½,Ì,×,ì,---"-,-6-@-J-T-^-h-r-|-†--š-¤-®-¸-Â-Ì-Ö-à-ê-ô-ÿ- ...'.1.;.E.O.Y.c.m.w..‹.•.Ÿ.©.³.½.Ç.Ñ.Û.å.ï.ù./ //!/+/5/?/I/S/]/g/s/~/Š/™/¨/½/Ç/Ñ/Û/î/ø/0 00 0*040>0H0R0\0f0p0z0„0Ž0˜0¢0¬0¶0À0Ê0Ô0Þ0è0ò0ü0111$1.181G1Q1[1e1o1y1ƒ11´1¾1È1Ò1Ü1æ1ð1ú1222"2,262@2J2T2r22š2¤2®2¸2Â2Ð2Þ2ê2õ233#3E3Y3v3«3º3Ê34,4h44²4î4+5m55¸5È5Ó5Þ5é5 66;6M66š6¯6É6à6ê6ô6þ6777&707n7z7†7’7Â7Õ7á7ì7÷7888.8K8q8¶8;9€9Ø9*:C:N:j:œ:°:Â:;l;;Û;?<`<{<ç<ö<==)=5=?=I=]=m=w==‹=›=§=Ã=ß=ï=ù=> >>!>+>5>?>I>S>]>g>q>{>…>>™>£>¯>·>Í>Ù>ã>??/?E?r???ž?¨?²?Â?Í?Ü?ê?@@*@C@T@o@}@@ª@À@Ì@å@þ@"A0ALAYAeAsA€A¥A²AËAÕAßAèAôA BB3BJBaBqB€B¢BÄBÐBÝBöBCC1C:CBCdCƒC‘C¢CªCÀCÐCØCæCñCûCDD"D2D±L±¸²ó².³{³ ³ªµ}¶̶·=·¡¸¿¸ó¹ºv»”»ç»¼7½{½b¾G¿È¿ÒÀÜÀøÀÁÁ1ÂÑÂÃÃ+Ã?ÔĴÄÇÅEÆWÇÇìÈÉ.ÉBÌTÌ\ÌkÌvÌ‘ÌèÌ>ÍÏÏøÏ³ÐòÐHÑZÑÀÒPÓåÓÔÖÕôÕ.ÖLÖ‹Ö”Ö Ö´ÖÏÖà×oØ„ØòØaÙ˜ÙÇÚÛ#ÛWÛqÛƒÛ¥ÛÀÛÉÛÜsÜÜ7ݯÝÃÞÝޖߪßTáyá‹áªá¼áƒãããuä‡äžäRåpå|åŠåiæÙæ¼çÝçèMèÑê ë@ëZëiëzë„ëŒë ë·ëÂëûëQì¼ïðoð©ð·ðÆðÖðíð÷ðúð ññRñmó˜ó¾óäóÒôõ3õ?õHõ\õgõˆõtö¡öÉöéö÷5÷c÷ðù úúzú#ûNûŽûFüQüvüÊüý†ý‘ýýý(þáþéþÿcÿÿÚÿâÿN0:EOOUeÈ^®×<¢Á%7ëB k t ~ j t Š — ¥ ® · Á Ì Ú ´   Ó Ú â 7¾ë 2FW_ÚØïÑ·ÎËÕàëäîˆ}…“¢¬ÄÌ(5CLµ½¡Ëö':N]Q`ëúÖ å ø 7"S"##>#$Ê$š%&9(A(í(ý(R)æ)ö) ***?*S*k*r*{*ú+, ,,I,¥,­,¹,Æ,d.n.®.».Â.Í.y/€/Æ/Ð/71^1Œ1×12 33 3-3`3h3ÿ3¼4Â4\5f5x5•5L6\6Ô7Þ7é7ó7þ789š:ð:;Ì;ß;î;<8=â>Û?ô??@R@f@~@—@«@µ@Þ@AëBóBC9CTChCpCƒCüDE²EÆE×EDG]G†G´G‹H:IXI•I®IJ.JK:K~L•LüLmM€MM-OAOUOgOqO OåOøOP%PPaRÍRSÚSÃTÕTÜT~UÞU›V°VoW­WXXíXõYúYƒZZ˜Z Z[©\b_z_èaªc²cÑcích~hÕhÝhïhþhi2i:iUi¦i°i\jìmDpqr=sEs‡sþs't³uÓuqvwŠw—wµw¦x>z~z¦zÁz3{G{}$}J}T}_}³~j€á€õ€t€ŽæŒ‚—‚í‚………]‡͇^ˆhˆg‰®‰¹‰ĉŽŠ£»j‘}‘ó‘’%’K’Ñ’Ù’æ’ô’"“½“Ú“%”²”䔳–`—j—u—þ˜0™ž™Ç™Ö™á™üš<›˜›¹›Û›œž5Ÿ?Ÿ®Ÿ¦ ”¡Á¢£O£å¤ ¥g¥Þ©¸«’­œ­J®T®â®ì®¼¯Ưr°`±h¶r¶·¹"¹:¹D¹@ºJº»1»›¼«¼·¼μ鼚½¥½°¾Ò¾ÒÁãÁ ÂÂIÂgÂMžŠÆKÆrÆ÷ÆfÇéÇóÇüÇÈ É…ÊàÊñÊAÌ)ÍfÍ|Íz΂ÎõÎËÏÕÏgÐqÐæÐðÐûÐëÑ¿Ô×ÔWÕƒÕ”Õ¡Õ»ÕÕÕðÕÖÖÐÖB×Ë×ç×ï×ÂØ ْټÙÐÚØÚèÚÛ¬ÛÔÜÜÜæÝ=ßÚßâßêßUàžàöà"á1ámâuâãŠã›ã¬äÊäfépé€é–é¬éDêwê’êšê¹êõêÿêYëvë“ëçëïëVìƒìüìÃíî°îæî1ï9ïVïoïºïÂïðVð¨ð¿ð'ñPñXñ—ñ´ñòlòžòó¦óÚóTôÃôŠõdöôöüöH÷¦÷øÞøõøùŒùÄùÌù?úYú}ú ûEûMûUû§û¯û üüÐüHýcý}ýõÿAnvÙì+Áó&Aw‡¼ÄÌÔÜäìUÔU]->©¢ž » Ô Þ Ï x Œ « Ù  3 ³ H‘™ºàexãðÛã [e5d’äiÎàÓ(›¹Ÿ ®* ‡!“!¥!Ä!Ð!ó!"”#œ#Æ#Ù#$$´$Þ$}%°%¼%&3&Ã&Ô&Ü&ä&Ê'©(³(¾()*+&+/+- -)-6-€-Š-©-Ì.0‰0â1¶2_3Ã3ø3P4X445„5«7Ý7‡8Í8ü8s:W;q;®<ß<6=F=R=\=ß=6>Ê>?-?§?È?ð?@³@5CáFH;H•I§IäIîIOJÃJžL¼L1M`MÊOYPrP¬PQGReRRëR+S2WPW¿YM[W[a[¨\Ä\×\[]d]‹]“]¸]Ñ]ê]–^ ^8_b_j_{_Ô_`3``Ó`a.aaa…a³a¿aÎaíab)bÑ ÒÒqÒÓºÓ“ÔØÔ,ÕFÕXՙ֤עØíØÿØÔÙ¾ÚöÚÜÅÜÙÜšÞ§Þ5ß]ãhäuäƒäüäå>æKæ®æ¶æÓæàæ–êžêÏê×ê'ëQëoë™ëNílí¦íÖîôîÔï÷ïæðÇñÑñ²ò©ô‹ødù‚ù‹ú©úz˜Çå*2?¬m¡ „˜˜®À”§¿Î > ™ 0 pz«¿z…’] *Ž£ÜUç7As‚ై»ß…œ«³Ã­ Ô !R!Ô!í!õ!"-#p#x#€#Ž#%$–$©$%ª%º%''6'A'µ')(ü)*â*+.".9.x.³.`2î2ª35á5&7»8r>y@‘@¨@»@Ò@ A-AMA¶DFúFGG´HÃHéIeJÏLM2MâQ‚R¥RSXTÞUV7VHVrVbXƒX´ZÝZ#[,[9[J[T[c[m[w[4]:^G^ºaàa•b\cYf‚h€i1jFjþlmOm‘mOqäq0rwruêu vv"v6vz.z·|Ò|~Ì~0C &…䂃¥ƒë„3…=…ˆ…Œ‡Ƈчë‡ÈŒÕŒ»ÊI]ÜçiÝ‚‘’€“““&˜Q˜h˜·šÁšËš$œž<žJžXžОÖžh¢˜¢¨¢¸¢Ì¢é¢ £¤‚¤+¥P¥>¦h¦q¦§8§[§ˆ¨ó¨©Ô©ò©˜«¶«e¬ü¬­K­i­à¯þ¯ͳë³ë´ µ+·I·n¸Œ¸¤»¿»Ó»ç»û»¼é¼ó¼½½&½Á½ß½û¾¿¿~¿ø¿À*À²ÀÑÀÞÀìÀnÁwÁÁ¿ÁäÁ,Âu®‹ÃZÅdşźÆÓÆíÆÇ ÇÈ'È2È=ÈaÈkÈãÈ/ɼÉʈ̦ÌjϼÏÑÏŠÑÔÖ¹ÖÄÖÙÖ[×p×YØbÞLàƒà»àÅàšâ¤â¯âÆâãã4ãÝçêDêÞêîêÈí¹ïÃïÎïêïð|ñ±ò¡ó¿ôÉôÔôõ;÷F÷QùxùPû|û©ûdüPþvþ²þÀþµÄÔß9Q`?G‘«ñ®‡–û4 S   Ê  óï ̲Ÿ¢ª²&ÁçGÎøGŽH Š ä e"‘"¸"Þ"ý"°$Ã$Ö$ê$²%ø%Þ&ò'T(\(`)P*ˆ+“+(-®- //V/p/™/µ/ë/z00¢0½0Ë0‡122­4Ê4ì45.5i5Ÿ5¬5Æ5j8u8ê9!:>:Z:Š<=±="?/?|?õ?@AAA.CLCÈCöD GH#I+IJIáIœJ£K¹K½LÐLÚMN,O´PŒSõSýS`UÉUðV&WýWX®XüY®Z][5\e\]¿]ß]ö]¶`Œa¡aªc²cdÿe>fKfdgEhÇhÈjàjùklGlnNnlnlpŠp«q¤rs‚sïs,t6t{u[v£vÊwùxûy+zozî{'}E}¥ÔÍ‚å‚8ƒ¾ƒ΃ÓƒN…†…´…Õ…“†¶†(‡5‡•‡ȇõ‡žˆ¹ˆЈ•‰¨‰ñ‰Š(в‹bŸÁÙáó È‘6‘K‘ʔٗ[™n›Ñ›í›ðœ°Bždž"Ÿ>ŸôŸ x — d¡x¡r¢ç¢‚£š£r¤<¥ý¦§ç©ð©ª'¬A¬f­÷­¯¿¯­±´µµøµ~¸¸¢¸»¸é»Ò½ê½B¿U¿d¿z¿’¿¯ÁâÂõÂŽÄ­ÄSƌȘˢ˷ÌÑÌÎ[ÏîÏêÐÑ9ÑJÑkÑ²ÑæÓ8ÔrÔƒÔ”Ô¥Ô»ÔôÔ(Ø5ØKØõÙ=Ú]ÛçÜöÜÝÝ"Ý1Ý@Ý6ÞMÞÜÞ8ßFßàà0àáàÿàá«áŸævç§èÇè é‘ì[ïcï—ï“óhô>ø²ùÁùÉùÓù"úþúoþJÿŠÿ2iò>·nÞés{… } •  È  '‘Éü…Ww\xK*q›³¼Ä"zÐ[‡“£¶= Ö !Ÿ!"Û"¸#è#!$C$S$¾%L),&,›,ª,-o.’.±.Á.S/]/‹/n01­1ê13<3±4÷47]7›7‘<Â=>°>z@2BJBƒCÅD7EðH­IºISJ]J'KÌLÛLãL!NÄN/P¡Q2SS¸TVVâXñX~ZŒZ"[,[ã\ì\C^o^ƒ^¹^Ð^ã^÷^A_U_v_‘_Á_4cCcàcddBe.f8f¬gŠhk0kLknÝiÝ|ä¤äÅäåäcæ7çê&êsò¾ò]ó†ó”ó¢óÌóúóôqô³ô™õßõôõ öö0öEö[örö{ö³öøö÷³÷Ü÷ú÷ øø+øüøù@ùpù£ù úDú¡ú×ú‹ú‹O5Im¢ W È Ò Ü ð //<Çùë?{ã)’Šc  m"”"ð(O)z)²)Ï)á)û)**¶,³-Ç-ß-]/20:0u0ƒ0ª0:3Ñ4M8‡8—899:Ì;Š<;?w?¢?-CgDqD±EpIŽI=L|PQ0QÁTÉTŽU¬U V'VlVŠVßVýVlWŠWŸW½WAY_YäYZ¢ZÀZ)[G[„\¢\¹\Ñ\à\¤]¢^À^É^Ï`×`ð`jbÃb[cccÖdôd'eEeÒeðecff0gNgcgg}h›hkj‰j‡m¥m–o´oåop4pRpˆp¦pWquqÄqâq=r[r”r²rs0s·sÕsPtntt»tbu€uÍv w´x¼x yjz‰{º{,|R|'}s}—~€•-ƒ­…½…Û…]†h†¸‡À‡XˆL‰T‰]‰ЉÛ‰9‹ß‹îŽUéU‘”””J•ï—+˜h˜—˜^›‘›Wœfœž=žõ¡¢-¢I§î¨ªGª‹ªêªŽ­¯F°â±³³c´p´Ø·£¹ƹæ¹î¹êº»Å»Þ»IÁð¼ÄŨÅËŤƼÆkÇêÇòÇOÉTÊrÊÃÊáÊþÊ Ë=ÌæÍóÍ1Ï’Ñ»ÑÍÒëÔÕJØÙÖÙ¦Ü\Þá?ãlãEæRç_çpç2èè–è˜é¢é¬é»éÅéGëYë”ëœë¦íÇíÙíXïÝñòò]ó}ô¨ôKözö´ö×öïöN÷q÷€÷áùÕúûü_ýiýÄýJþYþÀþ’8ᆵºÈãñk ~ ~ § à ’ ¡ >> I ¦Ç 2E$!7!ç%/'³(¿(Æ({)Ì)Ì*$+*+1+P+¶,¾,Æ,ß,^-÷-ÿ-.4.P.X.€.Ä.ñ.Š/’/š/¢/ª/²/å0&2†2Ž2²2m3©3Î3‰4×45Ó5 6Å6â6ô6ø7º9Ø9À<Þ<2=P=ð?@d@‚@ÝBûB@CHCDG‰GdH“H\KLELuL}LÀLäLîLyO­O¼PÓPåPïP ? u? —? ‰A hB rB jC 0E :E DE H H ÿH 7I =I yI ¹I ÛI ’J ÓJ âJ õJ wL ™L ‚N ‘O GP VP ÊP ÜP Q ŸQ ®Q æS 8T U ãY 0] Õ] õ^ ²_ ©` ·` ×` æ` ¨b Ad Ud We Úi äi ük ³l m m km Öm õm n n jo “o o §o ±o »o Éo Õo ßo öo p p p ­q cr µr „t št Üt ¶x Éx Äy ×y z ¼{ î{ | *| ®} 4 I Y â‚ ƒ c„ …„ Ü„ þ„ † ,† o† † §† ¯† ¾‡ Œ 0Œ  ” 6” @” t” ¦” æ” /• ½• ê• – – b– l– Þ– »— Q˜ [˜ e˜ ̘ 㘠þ˜ ™ ™ -™ iš ì› ¨œ ²œ Åœ eŸ ð  4¡ v¡ í¡ ü¡ ¢ ü£ )¤ A¥ K¥ U¥ `¥ f¥ (¨ e¨ © « « 3« |¬ »¬ ɬ  ¯ ª¯ ± (± ?± š² ´ ±µ 7¸ œ¹ º ,¼ 8¼ ļ ¾ (¾ F¾ ž¾ 5¿ Ä <Ä Æ uÈ —È Ê AÊ ÔÑ öÑ eÒ ‡Ò rÓ ”Ó WÔ yÔ Ï× ñ× gÚ ¥Ú ÆÛ èÛ CÜ eÜ ¢Ü ÄÜ ŠÝ SÞ uÞ Cß Rß ›á »á øá å µå æ ¬æ Mé †ë ¡ë Òî Zï Tð ò šô Zõ ·õ ö qö {ö Ôö >ú Hû Sû cû nû yû “ü Äÿ æÿ  E g Ù  é  T o ™ ò  b Œ Ø ú ¾ è 7 F X ‚ ¢ ° º Õ  ) F z ˆ ñ D [   ´ ì  T › ª W ƒ § Ç Ú  ? | › ¥ ¬ ¶ L h ð  * , E f Ž ® Æ ç h Š ¨ Õ ù Ÿ! Â! ø! 2$ J$ k$ „$ —$ ´$ ß$ x& Œ& ¥& º& /( H( k( …( ‘( ( * 1* @* ]* ˆ* #, ;, \, (. K. e. :/ E/ Û0 1 81 G1 x4 86 w9 9 ¨9 ä: ; ; /; C; R; = –= > M> ¡> ÷> g? Ë? I@ Ñ@ [A B zB ÞB šC PD «D ~G G ÇH "I XK ‰O JQ úR dS pT ŽT ­T ÅV áV þV œX ×X áX øY E[ Ÿ\ ¼] Ê] _ _ %_ ` è` »b Òb =g Og ¡g Ëh k 1k ;k ék l ol yl o Gr ér ór s Os qs {s …s ft ×t pu žu ¾u Ñu Ñw Þx °y ¥} Ä} Ÿƒ ®ƒ æ… ˆ‡ û• – ã– Ü™ øœ E ªŸ L¡ Ø£ ¥ ô¥ C¨ © ö« L¬ X¬ d¬ ²® 0° k° ± -± N± §µ ëµ È¶ · ͺ òº » /» b» ‡» š» Ä» 'À êÀ eÅ ¾Å CÆ zÇ •Ç ¬É ÅÉ ùÉ Ê iÊ ¾Ê ¢Ð »Ð ÅÐ BÑ +Ô ”Ô lØ Ø OÙ òÚ [Ü Ý !Ý Þ {Þ Žß €à Šà °à þà á Pá Zá dá }á ¢â ›æ ½æ ÷æ ç jç «è Íè  é Âé ê +ê Më oë Êì ìì í í ¿í áí `ï ™ñ F÷ ù ­ü Ïü íü cÿ …ÿ Åÿ çÿ / Q [ é ø J l Ö ø  ê ô 0 R ¨ Ê ” ž 6 E ÿ Š  ” Œ ® i } Ÿ þ ] l ‰ Ö # ¡ ¬ Å f m y # - G Ÿ Œ# ›# Q$ `$ ä$ î$ Ù% ™& £& 8' y' ƒ' J( Y( Ò( ô( >) _) j) Å) þ) * * >* H* U* r* ˆ* ’* œ* Ç* Ñ* Û* å* þ* &+ 4+ ›+ ½+ ë+ , , (, U, - ‹- ›- . U. |. ‹0 •0 I2 |2 ú3 J4 …4 4 ¿5 ë5 M: Ö; < )< = /? A A YA qA ‚A ”A ¡A ²A ÉA ÌA nB »C çC D F 7F aF þH YK gK xK ŠK —K UL cL ~L šL ±L ÈL –M íM 6N {N ™N ²N ÇN =O WO P ÚP äP ïP ùP éQ óQ þQ R $R pS T ÈT U ˆU “U §U 7W xW W ±W Y Y Y Z >Z yZ ¢e Äe f %f £g l £l Ål m ¸v 'w ¼w ©x úx ey ëy z z z $z _z z Õz { x{ È{ ã{ | | | } @} U} w} } (~ —~ & . € ; \ œ ® Î Õ Ý ‚ "‚ .‚ :‚ G‚ Y‚ x„ „ š„ ù„ … … … (… 5… G… S… s… w… —… ‡ ˆ ˆ ,ˆ މ oŠ Æ‹ ÁŒ  , × < H o c‘ o‘ ‘ |’ Ж ã– Ò— å— Ì˜ –™ 3› F› †  –  @¡ P¡ ¢ è¢ Y£ ë£ µ¤ ÿ¤ j¥ ¢¥ ½¥ d§ €§ “§ ´§ ̧ é§ Ëª Þª ç« ­ ­ +­ >­ ¯ ¯ é¯ <° §° ÿ° ± α ϲ Þ² ñ² ³ H³ ó ¶ —¶ )· m¹ tº ”» ¹» འ3¿ F¿ Y¿ hÀ <Á I \ £Ã ³Ã Ä rÅ çÅ >Æ ºÆ ŠÇ lÈ €È ÷È 2É «É äÉ Ê ‚Ê ÁÊ ÉÊ ÒÊ ÜÊ äÊ îÊ FË •Ë ZÍ ºÍ ÒÏ Ð Ð Ð UÐ  Ð ¬Ð ºÐ ýÐ ]Ñ iÑ yÑ ÇÑ ÓÑ üÑ Ò 5Ò EÒ fÒ }Ò ‡Ò Ó Ó )Ó ZÓ ¶Ó ÔÓ Ô Ô &Ô KÔ ã× ò× {Ø Ù eÙ ÕÙ ^Ú 2Û xÛ ×Û ãÛ Ü Ü qÜ }Ü ¦Ü ÅÜ ÑÜ Ý 9Ý EÝ MÝ »Ý çÝ "Þ ZÞ §ß –à þà üá aâ øâ rã ¬ã Cæ ¦æ <ç þç Yè ´è ’é ê eê Qì ¯ì 'í gí §í Tî ¼î ãï hð àð Tñ gñ zñ Šñ ýò ¡ó ô Eô Ýô õ ©õ )ö Uö Æö !÷ ~÷ Ÿ÷ ï÷ ø · Ó  @ { ¢ Ñ ø + F g « à ' b  Ì õ $ S ‚ ¡ ½ Ü û  5 T m ƒ œ µ Ê ã Ú , 9 { ‹ U Œ ø ‰  9 Ð O _ d' …) 8 r= Ú> K@ Z@ ª@ ¾@ ‹J —J ¬J »J [K ,L uL ¾L M ÎO ÓV YW «X ¾X C[ ‡^ Ø^ t_ ‡_ ¬b ff 6h Eh qk k •m 'o v Ÿv ©v ´v .x [x æ{ ¸| Â| Ì| Ö| à| ê| ô| þ| ?} ~ C~ b~ ¡€ ™ © ³‚ ׂ á‚ ë‚ E„ ™† £† ­† ²‡ ·ˆ Áˆ ˈ 6‰ } ’ › ŠŽ p“ „“  • n™ Œ™ G› ]› Bœ ­œ àœ øœ ³ d¤ `© G° \° ޵ ¨µ ¶ ¶ · ?· ¹ 9¹ c¹ r¹ Á¹ º 4º ˜º ³º Ôº » Ö» )½ K½ ¾ Y¿ À /À XÀ À ·À ÏÀ ×À Á JÁ VÁ cÁ ¯Á ÉÁ ÿÁ  X Ü þ PÉ ¿Ê ŒË –Ì KÏ ^Ï Ð 8Ð òÕ üÕ Ö Ö × ª× |Ø žØ âÛ hÝ ~Ý ¹Ý ÃÝ ìÝ Þ Þ Þ !Þ +Þ TÞ ^Þ Þ ´Þ ÊÞ óÞ Nß ·à Mã Ýç çç ué ±ê ¼ê ùð .ò :ò cò mò Âò ®ó õ õ $õ ®÷ Óø ù ù bý Ýÿ ž µ V  Ì  A ¯ Ç Õ * ­ Ö Y u  ¿ ê  t3 ~3 ˆ3 ‰4 5 Ž6 ²6 E7 ê7 8 Ì< > > „@ ž@ ª@ +A 7A B êB ‘L ¸L M ;M N ºN ÜN ,O NO ËP íP ,Q NQ Q ¯Q µR ×R S 8S U /U ²U ¼V ÞV DW ƒX X ô\ ] Ä_ æ_ Fd hd †f ¨f Íh âh ýh i 1i ùi ~j k °l ím Ûo Öp øp Är ær cx …x y >y Æ} è} `~ ‚~ ÷ € v€ Ü€ @ b ˆ >„ ㆠ,‡ k‡ ‡ ˆ ¡ˆ Š )Š TŠ vŠ êŠ ‹ §‹ É‹ ‘ B‘ ä’ “ –“ ¸“ – %– Z– |– ©– Ë– <— ^— û— ˜ +š ¤ *¤ ® =® |® ž® Ý® ÿ® 6¯ X¯ —¯ ¹¯ ° '° ¸° Ú° ,² N² ¹² Û² ³ @³ …³ §³ ´ >´ ª¶ ̶ )· K· t· –· æ¸ ¹ 5» ½ 4¾ O¾ &À ;À HÀ pÀ ~À ÕÀ ãÀ úÀ FÁ RÁ `Á ú à ?Ä AÅ çÅ eÈ ãË Í Í «Í ÍÍ Ð :Ð ôÕ Ö îç è Œî ®î Gò °ò Æò Òò Só ¦ó °ó ¸ó Âó ßõ %ö ö É÷ ­ø ¸ø Þø Ìú ¦û >ü ãü 'ý mþ wþ \ÿ ~ÿ ­ÿ Rž²K^mxýV¨²–ÆÜº Ä ÷ o ‚ ‘ ð 4VnõŠ/Ù5û5%9^9™9?w?É@á@¼ACC—EšFG H%HÄH‚I¬IPK\LjMOÕP[Q|QMRØSOYƒ[ð[ÿc»e³g^hàh]jmjÒjk mÎmoúoŸqÕs«u w«w*xŒx¢zÿz{?|N|L}ë}¦ÿ„2…§ˆ6‰Šw‹“‹—¸Ž‘V’ “¯“•í• ˜[›לÛžøžZŸsŸW¥U§‡§Ȩoª’¬Ÿ­8®ܯ7µ·÷·!¸²¸ظ»¹ιݹNº]ºhºæºüº»z»‚»Œ»¼T¼¯¼¾¼ɼ*½†½“½œ½ÿ½¾!¾—¾¦¾±¾,¿E¿Û¿í¿û¿€À–À¨À8ÁJÁXÁÁÁRÃdÃéÃCƙƃǂɤÉoÊwÊË[ËgËËÌ$ÌΚΣÎTÐzÑÊÒ1Ó˜ÓrÔGÕŠÕ×Õ_Ö–Ö×`Ø»ØÃØ#Ù-ÙeÚhÛÍÛÝÛ¸ÜÚÜåÜêà ááâ>âãâþäåôéPí`í‚í¬í¼íÜííîïÉïëïò2ò·òÙòkóóÖóøóÑôóô­ûÏûtþ–þÍþïþ.ÿPÿ¤ÿÆÿް%„¦'†¨t– B ™ » % G Kì><>¤?Æ?Å@ç@ B+B¡DÃDpL’LãLMÒMôM‹N­NêN OgOéO P,RNR¡SÃSMXoXâXY>Y`Y›Z½Zò[\ƒ\¥\D]f]ó]^€^¢^ß^_>_`_`%`r`”`Ô`ö` b/bc¿cßij}nŸnOoqoDsfsÛsýs*tLt¨tÊtov‘v x,xDyfy¹yÛyôyz^zêz {}{Ÿ{Ì{î{"}8Z¯ÑW€y€”‚¶‚ˆˆŽŒµŒÀŒþŒŽ,Ž@ŽHŽVހޡŽÏŽãŽ#ÅDyí‘’‘ž‘Æ‘ý‘V’d’‚’©’“>“s“•“”*”{•I–c—É—L˜í˜ ™!™Üšãš¥›m…®ÒžLžzž£ž±¡À¡ò¡8¦ ©þ© ªsª¿ªϪÙªøª«'«>«S«\«d«r«‹«™«§«µ«õ«2¬T¬­ë­|®†®i²x²˳ý³tµµµܵ¶F¶è¶·h¸B¹a¹ºÊ»4½œ½¨½·½‚¾¿\¿eÁÀÁ_ÃHÄœÄËÆRÇtÇBÈÒÊÚÊ Ë3ËEËgËõËÌ÷ÌÍ Í…Î‹Ò-ÓDÓRÓ\Ó»ÓÈÓcÕ{Õ§Õ®ÖIב×Ù×!بØBÙgÙÎÙÚ\ÛdÛÕÛ@ÞâßúßAá¨á×áäáânâãâœæ׿Sçqéê,êëërìíyíàò2ôùôµù¿ùðù<úcúüfü¯üÌüý ý1ý8ýÕýåýìýüýðþ}ÿÿŸÿºÿm3FUepžÌÙAM‰Ý !NY“ïÉ4„ s Ù 0 = H U ø ;Hq–ÙåHy¤ÝÿÉãq~­ÀÐæˆ“ «®V ø ÿ !š!¯!¹!ñ"ü"###*#5#?#K#V#a#k#v#€#‹#•#¡#¬#¶#Â#Í#×#â#ö#ÿ#$$$#$J$s&q''–'¡'Ú'ú' (($(9(H(,',ô/ÿ/0ê233!363¼3«56%67ó89<‰<§<X=ã=…>»E F+F6FòFG#J³JK–KHMžMÀM§NøN·PÅPØPäPÿPQ!Q(Q{QÄTÔT©VÛVæVõVÿVWiW‰W¹WÇW‚X XþYZ$Z;ZhZ}]%_a_)`K`We‘fggh!hWh†h³hÏhíhiKifi“i°iÖi+j3jwjkkmkÂkl*l‡lånðn9qDqäqñqcrprârïrasnsàsís_tltÞtëtRu\ujuÎuÚuéu‹vÓvy5yzyÛyûy8znzµz{>{l{{ë{8|„|¶|ä|}N}ˆ}Ö}Œ~—~º~=Å|©‚ó‚Í…܆醈šˆäˆŠ¡Š°Šœ‹·‹>ŒœŒ 5ŽÛ‘ã’î’:™N™]™u™€™‹™–™¡™¬™»™Ò™ò™š šš+šBšbšvšóˆž²žמ¾Ÿ & : ¡ÿ¡ ¢â§¨'¨2¨?¨Ï©Þ©ï©ªªPªƒª¾ªïª «9«Z«{«œ«µ«ú«¬€¬¡¬¬Û¬­­3­å´õ´'¶0¶>¶Q¶¨·¥¸Ǹ(»¾>¾ÕÑ÷Ñ(ÓJÓ\ÓÔ4ÔÕ?ÕÖ=ÖÃÖåÖk×ר5Ø»ØÝØcÙ…Ù Ú-ÚÓÚõÚ¦ÛÈÛrÜ”ÜQÝeÝsݪݶÝÞÞ¡Þ²ßÔßÛèçèåí\ïið òýòùŽù¢ù¶ùÁúÖúû9ûIû^û þħ°¾ftŠÄÖéM‘ÏÝæ_ir†¡¹ÖìöAHkwæ÷àì:“¾È ‡ — ¡  " ‰ ¿ u  £ ³ —¡Ðò|•«ØÉëY:Wa|KÞLÀ–"Ÿ"¨"î"÷"~#Ÿ#Æ#í#$C$r$§$â$G%¢%Ü%$&-&›&è&''''1'P']'{(Ã(* *N*€*«*»*Ì*Ø*f+”+È+ä+N,Z,{,,§,Ã,Ø-ó-~.•.Ã.E/O/Y/…/¯/¾/(1J1l1˜1¶1=2Ÿ2©2Æ2l3 3ª3´3î34œ4´4ò4…5ô5T6a6”6¿67“7Ú7ý7C8j8t8ˆ8”8 8¬8¸8Ð8Z9–: ;S;_;´DçD/E:E\E±E¼EÞE3F>F`FrGkHHÖHåH"I-I•I¡IJWLaLM MRM‹M¹M+PMPæRS?SNSˆSŸS¯SÚTüT>_`_¦_È_`!`ª`»`Ò`ú`ùbèc3dQd^de eXfnhIiïilÀlÉmn¤nSouoŽušuKy“zä|4}…}PZÌ‚6„M„„°„ †$ˆcˆžˆ̈r‘!“o•kõžŸ8ŸŸ»Ÿ  P d ˜ ± ü ¡P¡y¡סë¡¢7¢s¢‹¢â¢ÿ¢¾©à©_ªªЪòª]««U­w­n°°ݰÿ°ϱñ±O·q·/¹w¹¢¹ù)»0»»´»*¼ÿ½¾¾"¾,¾C¾M¾W¾a¾ÜÄëÄõÄÿÄ Å|ÇšÊ_ÌlÌuÌQÍÏа×#ØDØÑÙ/ÚwÚŠÛÝøÞßäßÅànáŠá0âUâkâ{â˜â²âEäXä}ä“ääÜäå‘åèåþå^æ¨æ´æÄæáæç(éê#êbëqëÏë1ìAìVìíìáíîjîÖîþîBñPñ‡òóÜóô”ô²ô0õ÷‘øüÊü‡ý¾þÊþïþûþ,ÿ@ÿiÿˆÿÆÿîÿúÿAKn`ް47n÷ÖøL ÑófˆNpY{Ç é G!i!­#Ï#Ÿ%Á%ø%&Y&{&²&Ô&'5'ä(eG‡GNI²I¼IÕIßIøIJ J™JòJKN=NHNµP×PdR†R)SKS@XbXöZ[]"]{]]@^b^Ó^D`f`¥`Ç`a(aga‰awb™b}cŸc±dÓdóefuf—fãfghñhi^j€j0kRkþk lÁmãm$nÞnoNqpq¯qÑq%rGrt=t u,uòwxrx±xÏxéxÐyîy½zßz{ú{|T|ø|}|}ž}q“ €,€€Š´ýÁ‚ä‚ù‚–ƒȃ„^„n„Á„H†ЈÿˆI‰g‰±‰Š{ŠЊ©Ë‚‘‘’¾’픕µ–¿– —è—š˜º˜Ô˜é˜™…™ƒšKœ–ZžhžΞØž<ŸKŸlŸƒŸ½¡ø¡¢à£ñ£äC©-ª˜ªŠ®N¯¯§¯±¯ɯÓ¯ݯå°ø° ±9±O±²#²Q³r³׳ê³õ·¸iºuº„º1»N»•¼¨¼g½‰½]¾¾{¿¿²ÂºÂ,Ã1ÄtĨŗÆòÆ È8ÈPÈgÈ ÉbɰɼÉëÉ(ÊcÊŠÊ“ÊÌÊëÊòÊ˸ËúËÌ%Ì/ÌPÌzÌÎ/ÎFÎPΟÎÉÎÅÏçÏ#Ð<ÐÝÐõÐÿÐÑ"ÑÑcÒžÒäÒÓ]ÔÕÏÕ Ö0ÖVÖwÖ„ÖyØ¥ØÜØÙÙºÙéÙ8ÛaÛoÛÕÜÝM݆ÝËÝÞ>Þ„Þ°ÞàÞêÞ8߇ßÍß×ßáß1àjàŒà§à³àîàÿàMá¤á¸áÄá'â[âÝâùâã¦ã-ä‡ä¸äåLåqå«åÓå-æ7æAæßæçNçcçoç{çœçÓçáçèEè^èoè…èñèûèéé"é¾éÕé êêHêjê†êêãêùêëëëLë`ërëƒëë¢ëÌëÖëìJìTì^ì£ìíˆí’í&îTî^î“îðîúî(ïNï„ïÆïîïøïGðSðzð»ðÞðñ/ñ@ñQñ¼ñÆñ òòÉòïòûò1ó;óbówóžó¨ó²ó×ó3ôHôáôSõcõmõ(ögötöíö ÷ß÷øø1ùqùú úwú'û¡û²ûšü»üýLýrýùýþeþoþ…þ–þÐþÙþ ÿ.ÿ8ÿ[ÿgÿ‰ÿÌÿ&Qmw²ó:”Áø)H‘Euï®g q ¼ ¶ Ó l º q Š ›  S a ÷ S_pÏI-`.H™³ÄÞR°ÄÓ#¾?[tŠ•,6E©µÂÐ-VŸí S‡Øã†Vq W d Ø +!5"r"€"Ö"é"##$#J#c#m##ž#¦#®#»#Ó#Ù#à#~$Š$’$¢$ã$í$ô$‘&Ñ&''„'Ž'(º( )[)x)ƒ)¸)å*¨+t,Ç,¦- ...(.å.////÷/?0Ÿ0#1ç2 3303o3‘3·3ê3E4Z4{4™4Ä4Î4 55 545@5g5n5666&6X6`6½6Ç6Ñ6Û6ç6ø67×7ù7?;a;Z>ö>b?j?:@‘V—VºV@·=hë-Yx í-¦x ï-êx @‰F D‹F" DF© @F @‘F^ ÛKË ÝKç ßKD @X~’ ¡!ª5‰#ªÐ>Ç$ªÑ>&ªÒ>C'ªÓ>(ªÔ>¿)ªÕ>ý*ªÖ>;,ª×>y-ªØ>·.ªÙ>õ/ªÚ>31ªÛ>q2ªÜ>¯3ªÝ>í4ªÞ>+6ªß>i7ªà>§8ªá>å9ªâ>#;ªã>a<ªä>Ÿ=ªå>Ý>ªæ>@ªç>YAªè>—Bªé>ÕCªê>Eªë>QFªì>Gªí>ÍHªî> Jªï>IKªð>‡Lªñ>ÅMªò>Oªó>APªô>Qªõ>½Rªö>ûSª÷>9Uªø>wVªù>µWªú>óXªû>1Zªü>o[ªý>­\ªþ>ë]ªÿ>)_ª?g`ª?¥aª?ãbª?!dª?_eª?fª?Ûgª?iª?Wjª ?•kª ?Ólª ?nª ?Ooª ?pª?Ëqª? sª?Gtª?…uª?Ãvª?xª??yª?}zª?»{ª?ù|ª?7~ª?uª?³€ª?ñª?/ƒª?m„ª?«…ª?醪 ?'ˆª!?e‰ª"?£Šª#?ዪ$?ª%?]Žª&?›ª'?Ùª(?’ª)?U“ª*?“”ª+?Ñ•ª,?—ª-?M˜ª.?‹™ª/?Éšª0?œª1?Eª2?ƒžª3?ÁŸª4?ÿ ª5?=¢ª6?{£ª7?¹¤ª8?÷¥ª9?5§ª:?s¨ª;?±©ª?k­ª??©®ª@?篪A?%±ªB?c²ªC?¡³ªD?ß´ªE?¶ªF?[·ªG?™¸ªH?×¹ªI?»ªJ?S¼ªK?‘½ªL?ϾªM? ÀªN?KÁªO?‰ÂªP?ÇêQ?ŪR?CƪS?ǪT?¿ÈªU?ýɪV?;˪W?y̪X?·ÍªY?õΪZ?3Ъ[?qѪ\?¯Òª]?íÓª^?+Õª_?iÖª`?§×ªa?åØªb?#Úªc?aÛªd?ŸÜªe?Ýݪf?ߪg?Yàªh?—áªi?Õâªj?äªk?Qåªl?æªm?Íçªn? éªo?Iêªp?‡ëªq?Åìªr?îªs?Aïªt?ðªu?½ñªv?ûòªw?9ôªx?wõªy?µöªz?ó÷ª{?1ùª|?oúª}?­ûª~?ëüª?)þª€?gÿª?¥«‚?㫃?!«„?_«…?«†?Û«‡?«ˆ?W «‰?• «Š?Ó «‹? «Œ?O«?«Ž?Ë«? «?G«‘?…«’?ë“?«”??«•?}«–?»«—?ù«˜?7«™?u«š?³«›?ñ «œ?/"«?m#«ž?«$«Ÿ?é%« ?''«¡?e(«¢?£)«£?á*«¤?,«¥?]-«¦?›.«§?Ù/«¨?1«©?U2«ª?“3««?Ñ4«¬?6«­?M7«®?‹8«¯?É9«°?;«±?E<«²?ƒ=«³?Á>«´?ÿ?«µ?=A«¶?{B«·?¹C«¸?÷D«¹?5F«º?sG«»?±H«¼?ïI«½?-K«¾?kL«¿?©M«À?çN«Á?%P«Â?cQ«Ã?¡R«Ä?ßS«Å?U«Æ?[V«Ç?™W«È?×X«É?Z«Ê?S[«Ë?‘\«Ì?Ï]«Í? _«Î?K`«Ï?‰a«Ð?Çb«Ñ?d«Ò?Ce«Ó?f«Ô?¿g«Õ?ýh«Ö?;j«×?yk«Ø?·l«Ù?õm«Ú?3o«Û?qp«Ü?¯q«Ý?ír«Þ?+t«ß?iu«à?§v«á?åw«â?#y«ã?az«ä?Ÿ{«å?Ý|«æ?~«ç?Y«è?—€«é?Õ«ê?ƒ«ë?Q„«ì?…«í?͆«î? ˆ«ï?I‰«ð?‡Š«ñ?Å‹«ò?«ó?AŽ«ô?«õ?½«ö?û‘«÷?9“«ø?w”«ù?µ•«ú?ó–«û?1˜«ü?o™«ý?­š«þ?뛫ÿ?)«@gž«@¥Ÿ«@ã «@!¢«@_£«@¤«@Û¥«@§«@W¨« @•©« @Óª« @¬« @O­« @®«@˯«@ ±«@G²«@…³«@ô«@¶«@?·«@}¸«@»¹«@ùº«@7¼«@u½«@³¾«@ñ¿«@/Á«@m«@«Ã«@éÄ« @'Æ«!@eÇ«"@£È«#@áÉ«$@Ë«%@]Ì«&@›Í«'@ÙΫ(@Ы)@UÑ«*@“Ò«+@ÑÓ«,@Õ«-@MÖ«.@‹×«/@ÉØ«0@Ú«1@EÛ«2@ƒÜ«3@ÁÝ«4@ÿÞ«5@=à«6@{á«7@¹â«8@÷ã«9@5å«:@sæ«;@±ç«<@ïè«=@-ê«>@kë«?@©ì«@@çí«A@%ï«B@cð«C@¡ñ«D@ßò«E@ô«F@[õ«G@™ö«H@×÷«I@ù«J@Sú«K@‘û«L@Ïü«M@ þ«N@Kÿ«O@‰¬P@ǬQ@¬R@C¬S@¬T@¿¬U@ý¬V@; ¬W@y ¬X@· ¬Y@õ ¬Z@3¬[@q¬\@¯¬]@í¬^@+¬_@i¬`@§¬a@å¬b@#¬c@a¬d@Ÿ¬e@ݬf@¬g@Y¬h@—¬i@Õ ¬j@"¬k@Q#¬l@$¬m@Í%¬n@ '¬o@I(¬p@‡)¬q@Å*¬r@,¬s@A-¬t@.¬u@½/¬v@û0¬w@92¬x@w3¬y@µ4¬z@ó5¬{@17¬|@o8¬}@­9¬~@ë:¬@)<¬€@g=¬@¥>¬‚@ã?¬ƒ@!A¬„@_B¬…@C¬†@ÛD¬‡@F¬ˆ@WG¬‰@•H¬Š@ÓI¬‹@K¬Œ@OL¬@M¬Ž@ËN¬@ P¬@GQ¬‘@…R¬’@ÃS¬“@U¬”@?V¬•@}W¬–@»X¬—@ùY¬˜@7[¬™@u\¬š@³]¬›@ñ^¬œ@/`¬@ma¬ž@«b¬Ÿ@éc¬ @'e¬¡@ef¬¢@£g¬£@áh¬¤@j¬¥@]k¬¦@›l¬§@Ùm¬¨@o¬©@Up¬ª@“q¬«@Ñr¬¬@t¬­@Mu¬®@‹v¬¯@Éw¬°@y¬±@Ez¬²@ƒ{¬³@Á|¬´@ÿ}¬µ@=¬¶@{€¬·@¹¬¸@÷‚¬¹@5„¬º@s…¬»@±†¬¼@½@-‰¬¾@kЬ¿@©‹¬À@猬Á@%ެÂ@c¬Ã@¡¬Ä@ß‘¬Å@“¬Æ@[”¬Ç@™•¬È@×–¬É@˜¬Ê@S™¬Ë@‘š¬Ì@Ï›¬Í@ ¬Î@Kž¬Ï@‰Ÿ¬Ð@Ç ¬Ñ@¢¬Ò@C£¬Ó@¤¬Ô@¿¥¬Õ@ý¦¬Ö@;¨¬×@y©¬Ø@·ª¬Ù@õ«¬Ú@3­¬Û@q®¬Ü@¯¯¬Ý@í°¬Þ@+²¬ß@i³¬à@§´¬á@嵬â@#·¬ã@a¸¬ä@Ÿ¹¬å@ݺ¬æ@¼¬ç@Y½¬è@—¾¬é@Õ¿¬ê@Á¬ë@Q¬ì@ìí@ÍĬî@ Ƭï@IǬð@‡È¬ñ@Åɬò@ˬó@A̬ô@ͬõ@½Î¬ö@ûϬ÷@9Ѭø@wÒ¬ù@µÓ¬ú@óÔ¬û@1Ö¬ü@o׬ý@­Ø¬þ@ëÙ¬ÿ@)Û¬AgܬA¥Ý¬AãÞ¬A!à¬A_á¬Aâ¬AÛã¬Aå¬AWæ¬ A•ç¬ AÓè¬ Aê¬ AOë¬ Aì¬AËí¬A ï¬AGð¬A…ñ¬AÃò¬Aô¬A?õ¬A}ö¬A»÷¬Aùø¬A7ú¬Auû¬A³ü¬Añý¬A/ÿ¬Am­A«­Aé­ A'­!Ae­"A£­#Aá­$A ­%A] ­&A› ­'AÙ ­(A­)AU­*A“­+AÑ­,A­-AM­.A‹­/AÉ­0A­1AE­2Aƒ­3AÁ­4Aÿ­5A=­6A{­7A¹ ­8A÷!­9A5#­:As$­;A±%­Ak)­?A©*­@Aç+­AA%-­BAc.­CA¡/­DAß0­EA2­FA[3­GA™4­HA×5­IA7­JAS8­KA‘9­LAÏ:­MA <­NAK=­OA‰>­PAÇ?­QAA­RACB­SAC­TA¿D­UAýE­VA;G­WAyH­XA·I­YAõJ­ZA3L­[AqM­\A¯N­]AíO­^A+Q­_AiR­`A§S­aAåT­bA#V­cAaW­dAŸX­eAÝY­fA[­gAY\­hA—]­iAÕ^­jA`­kAQa­lAb­mAÍc­nA e­oAIf­pA‡g­qAÅh­rAj­sAAk­tAl­uA½m­vAûn­wA9p­xAwq­yAµr­zAós­{A1u­|Aov­}A­w­~Aëx­A)z­€Ag{­A¥|­‚Aã}­ƒA!­„A_€­…A­†AÛ‚­‡A„­ˆAW…­‰A•†­ŠAÓ‡­‹A‰­ŒAOŠ­A‹­ŽAËŒ­A Ž­AG­‘A…­’AÑ­“A“­”A?”­•A}•­–A»–­—AIœ­ÂA®ÃA…®ÄA}:®ÅA=H®ÆA_¯ÇAAm¯ÈAEu¯ÉAI}¯ÊA ‹¯O)‹¯O?‹¯:On¯;O©¯Or–¯?OŘ¯)P嘯*P™¯+P5™¯,PU™¯-PÕ™¯.PÝ™¯/Pᙯ0P陯1P홯2Põ™¯3Pù™¯4Pš¯5Pš¯6P!š¯7P)š¯8P*š¯ÐQJš¯!Vˆ¯"VÆ ¯#V¤¯$VB§¯%V€ª¯&V¾­¯'Vü°¯(V:´¯)Vx·¯*V¶º¯+Vô½¯,V2Á¯-Vpį.V®Ç¯/Vìʯ0V*ί1Vhѯ2V¦Ô¯3Väׯ4V"Û¯5V`Þ¯6Vžá¯7VÜä¯8Vè¯9VXë¯:V–î¯;VÔñ¯VŽû¯?VÌþ¯@V °AVH°BV†°CVÄ °DV°EV@°FV~°GV¼°HVú°IV8°JVv"°KV´%°LVò(°MV0,°NVn/°OV¬2°PVê5°QV(9°RVf<°SV¤?°TVâB°UV F°VV^I°WVœL°XVÚO°YVS°ZVVV°[V”Y°\VÒ\°]V`°^VNc°_VŒf°`VÊi°aVm°bVFp°cV„s°dVÂv°eVz°fV>}°gV|€°hVºƒ°iVø†°jV6аkVt°lV²°mVð“°nV.—°oVlš°pVª°qVè °rV&¤°sVd§°tV¢ª°uVà­°vV±°wV\´°xVš·°yVغ°zV¾°{VTÁ°|V’İ}VÐǰ~V˰VLΰ€VŠÑ°VÈÔ°‚VذƒVDÛ°„V‚Þ°…VÀá°†Vþä°‡V<è°ˆVzë°‰V¸î°ŠVöñ°‹V4õ°ŒVrø°V°û°ŽVîþ°V,±Vj±‘V¨±’Væ ±“V$±”Vb±•V ±–VÞ±—V±˜VZ±™V˜"±šVÖ%±›V)±œVR,±V/±žVÎ2±ŸV 6± VJ9±¡Vˆ<±¢VÆ?±£VC±¤VBF±¥V€I±¦V¾L±§VüO±¨V:S±©VxV±ªVŠW±´VþY±µV>Z±¶VÆ\±·Vâ]±¸V‚f±¹Vžg±ºV^h±»Vi±¼V:j±™YZj±šY[j±›Y\j±œY]j±Y^j±žY_j±ŸY`j± Y€ÔKQ¯œs+ s¹ÚŽˆ“y¬s9j snj ¨ƒ)à :èX^        #",+-+.+/+0+87DCJILKNMOMPMQMRMSMTMVUWUXUYUZU_^`^a^b^c^d^e^gfhfifjfkflfmfutvtwtxtyt{z|z}z~zz€‚€ƒ€„€…€‡†‰ˆŠˆ‹ˆ’‘“‘”‘•‘–‘—‘˜‘Ÿž ž¡ž¢ž£ž¤ž¥ž¦ž§ž¨ž©žªž«ž¬ž­ž®ž¯ž°ž±ž²ž³ž´žµž¶ž·ž¸ž¹žºž»ž¼ž½ž¾ž¿žÀžÁžÂžÃžÄžÅžÆžÇžÈžÉžÊžËžÌžÍžÎžÏžÐžÑžÒžÓžÔžÕžÖž×žØžÙžÚžÛÚÜÚÝÚÞÚßÚàÚáÚâÚãÚäÚåÚæÚçÚèÚéÚêÚëÚìÚíÚîÚïÚðÚñÚòÚóÚôÚõÚöÚ÷ÚøÚùÚúÚûÚüÚýÚþÚÿÚÚÚÚÚÚÚÚÚÚ Ú Ú Ú Ú ÚÚÚÚÚÚÚÚÚÚÚž !"#$%&'()*+,-./01ž2131415ž6ž768696:6;6<6=6>6?6@žA@BžCBDžEDFDGDHDIDJDKDLDMDNDODPžQPRPUTVTWTXT\[][^[_[`[a[b[c[d[e[f[g[hgi[j[k[l[m[n[o[p[q[r[s[t[u[v[xwywzw{w|w}w~ww€ww‚wƒw„w…w†w‡wˆw‹ŠŒŠŠŽŠŠŠ‘Š’Š“Š”Š•Š–Š—Š˜Š™ŠšŠ›ŠœŠŠžŠŸŠ Š¡Š¢Š£Š¤Š¥Š¦Š§Š¨Š©ŠªŠ«Š¬Š­Š®Š¯Š°Š±Š²Š³Š´ŠµŠ¶Š·Š¸Š¹ŠºŠ»Š¼Š½Š¾Š¿ŠÀŠÁŠÂŠÃŠÄŠÅŠÆŠÇŠÈŠÉŠÊŠËŠÌŠÍŠÎŠÏŠÐŠÑŠÒŠÓŠÔŠÕŠÖŠ×ŠØŠÙŠÚŠÛŠÜŠÝŠÞŠßŠàŠáŠâŠãŠäŠåŠæŠçŠèŠéŠêŠëŠìŠíŠîŠïŠðŠñŠòŠóŠôŠõŠöŠ÷ŠøŠùŠúŠûŠüŠýŠþŠÿŠŠŠŠŠŠŠŠŠŠ Š Š Š Š ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ Š!Š"Š#Š$Š%Š&Š'Š(Š)Š*Š+Š,Š-Š.Š/Š0Š1Š2Š3Š4Š5Š6Š8797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7|{~€~~‚~ƒ~„~…~†~‡~‰ˆŠˆ‹ˆŒˆˆŽˆˆˆ‘ˆ’ˆ“ˆ”ˆ•ˆ–ˆ™˜š˜œ››ž›Ÿ› ›¡›¢›£›¤›¥›¦›§›¨›©›ª›«›¬›­›®›¯›°›±›²›³›´›µ›¶›·›¸›¹›º›»›¼›½›¾›¿›À›Á›Â›Ã›Ä›Å›Æ›Ç›È›É›Ê›Ë›Ì›Í›Î›Ï›Ð›Ñ›Ò›Ó›Ô›Õ›Ö›×›Ø›Ù›Ú›Û›Ü›ÞÝßÝàÝáÝâÝãÝäÝåÝæÝçÝèÝéÝêÝëÝìÝíÝîÝïÝñðóòôòõòöò÷òøòùòúòûòüòýòþòÿòòòòòòòòòò ò                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` a b c d e f g h i nmompmutvtwtxtytzt|{}|~||€||‚{ƒ‚„‚…‚†‚‡‚ˆ‚‰‚Š‚‹‚Œ‚‚Ž{ŽŽ‘ޒޓޔޕޖ{—{˜{™{š{›{œ{{ž{¡ ¢ £ ¤ ¥¤¦¤§¤¨¤©¤ª¤«¤¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý ßÞàÞáàâàãàäàåàæàçàèÞéèêèëèìèíèîèïèðèñèòèóèôÞõÞöÞ÷ÞøÞùÞúÞûÞüÞýÞþÞÿÞÞÞÞÞÞÞÞÞÞ     ÞÞÞÞÞÞÞÞÞÞÞÞÞ !"#$%&'Þ(Þ)(*(+(,(-(.(/(0Þ1Þ2Þ3Þ4Þ5Þ6Þ7Þ8Þ9Þ:Þ;Þ<;=;>;?;@;AÞBACADAEAFAGAHAIAJAKÞLÞMÞNÞOÞPÞQÞRÞSÞTÞUÞVÞWÞXWYWZW[W\W]W^W_W`WaÞ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Þ{Þ|Þ}Þ~ÞÞ€ÞÞ‚ÞƒÞ„Þ…Þ†Þ‡ÞˆÞ‰ÞŠÞ‹ÞŒÞÞŽÞÞÞ‘Þ’Þ“Þ”Þ•Þ–Þ—Þ˜Þ™ÞšÞ›ÞœÞÞžÞŸÞ Þ¡Þ¢¡£¡¤¡¥¡¦¡§¡¨¡©¡ª¡«Þ¬«­«®«¯«°Þ±°²°³°´°¶µ·µ¸µ¹µºµ»µ¼µ½µ¾µ¿µÀµÁµÂµÃµÅÄÆÄÇÄÈÄÉÄÊÄËÄÌÄÍÄÎÄÏÄÐÄÑÄÒÄÓÄÔÄÕÄÖÄ×ÄØÄÙÄÚÄÛÄÜÄÝÄÞÄßÄàÄáÄâÄãÄäÄåÄæÄçÄèÄéÄêÄëÄìÄíÄîÄïÄðÄñÄòÄóÄôÄõÄöÄ÷ÄøÄùÄúÄûÄüÄýÄþÄÿÄÄÄÄÄÄÄÄÄÄ Ä Ä Ä Ä ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Ä!Ä"Ä#Ä$Ä%Ä&Ä'Ä(Ä)Ä*Ä+Ä,Ä-Ä.Ä/Ä0Ä1Ä2Ä3Ä4Ä5Ä6Ä7Ä8Ä9Ä:Ä;Ä<Ä=Ä>Ä?Ä@Ä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Ä[Ä\Ä]Ä^Ä_Ä`ÄaÄbÄedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~d~€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽddd‘d’d“d”d•d–d—d˜d™dšd›dœddždŸd d¡ ¢d£¢¤d¥¤¦¤§¤¨¤©¤ª¤«¤¬d­d®d¯d°d±d²d³d´dµd¶d·d¸d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöd÷dødùdúdûdüdýdþdÿdddddddddd d d d d dddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒdŒŽddd‘d’d“d”d•d–d—d˜d™dšd›dœddždŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬«­d®­¯­°­±­²­³­´­µ­¶­·­¸­¹­º­»­¼­½­¾­¿­À­Á­Â­Ã­Ä­Å­Æ­Ç­È­É­Ê­ËdÌdÍÌÎÌÏÌÐÌÑÌÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöõ÷öøöùöúöûöüõýõþõÿõõõõõõõõõõ õ õ   !"#$%&'&()*+*,-./012343565789:;<=>?@ABCBDBEBFBGBHBIBJBKBLBMBNBOBPQPRPSPTPUPVWVXVYVZV[V\]^]_]`]a]b]cdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º½¼¾¼¿¼À¼Á¼Â¼Ã¼Ä¼Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼Í¼Î¼Ï¼Ð¼Ñ¼Ò¼Ó¼Ô¼Õ¼Ö¼ÙØÚÙÛÙÜÙÝÙÞÙߨàØáØâØãØäØåØæØçæèæéæêæëæìØíØîØïØðØñØòØóØôØõØöØ÷ØøØùØúØûØüØýØþØÿØ Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L ØM L N L O L P L Q L R L S L T L U L V L W L X L Y L Z L [ L \ L ] Ø^ ] _ ] ` ] a ] b ] c ] d ] e ] f ] g Øh g i g l k m l n l o l p l q l r k s k t k u k v k w k x k y k z k { z | z } z ~ z  z € k k ‚ k ƒ k „ k … k † k ‡ k ˆ k ‰ k Š k ‹ k Œ k k Ž k k k ‘ k ’ k “ k ” k • k – k — k ˜ k ™ k š k › k œ k k ž k Ÿ ž   ž ¡ ž ¢ ž £ ž ¤ ž ¥ ž ¦ ž § ž ¨ ž © ž ª ž « ž ® ­ ¯ ­ ° ¯ ± ¯ ² ¯ ³ ¯ ´ ¯ µ ¯ ¶ ¯ · ¯ ¸ ¯ ¹ ¯ º ¯ » ¯ ¼ ¯ ½ ¯ ¾ ¯ ¿ ¯ À ¯ Á ­  ­ à ­ Ä ­ Å ­ Æ ­ Ç ­ È ­ É ­ Ê ­ Ë ­ Ì ­ Í ­ Î ­ Ï ­ Ð ­ Ñ ­ Ò ­ Ó ­ Ô ­ Õ ­ Ö ­ × ­ Ø ­ Ù ­ Ú ­ Û ­ Ü ­ Ý ­ Þ ­ ß ­ à ­ á ­ â ­ ã ­ ä ­ å ­ æ ­ ç ­ è ­ é ­ ê ­ ë ­ ì ­ í ­ î ­ ï ­ ð ­ ñ ­ ò ­ ó ­ ô ­ õ ­ ö ­ ÷ ­ ø ­ ù ­ ú ­ û ­ ü ­ ý ­ þ ­ ÿ ­ ­  ­  ­  ­  ­  ­  ­  ­  ­ ­ ­ ­ ­ ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­  ­ ­ ! ­ " ­ # ­ $ ­ % ­ & ­ ' ­ ( ­ ) ­ * ­ + ­ , ­ - ­ . ­ / ­ 0 ­ 1 ­ 2 ­ 3 ­ 4 ­ 5 ­ 6 ­ 7 ­ 8 ­ 9 ­ : ­ ; ­ < ­ = ­ > ­ ? ­ @ ­ 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 ­ \ [ ] [ ^ [ _ [ ` [ 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 [ { [ | [ } [ ~ [  [ € [ [ ‚ [ ƒ [ „ [ … [ † [ ‡ [ ˆ [ ‰ ˆ Š ˆ ‹ ˆ Œ ˆ ˆ Ž [ [ [ ‘ [ ’ [ “ [ ” [ • [ – [ — [ ˜ [ ™ [ š [ › [ œ [ [ ž [ Ÿ [   [ ¡ [ ¢ [ £ [ ¤ [ ¥ [ ¦ [ § [ ¨ [ © [ ª [ « [ ¬ [ ­ [ ® [ ¯ [ ° [ ± [ ² [ ³ [ ´ [ µ [ ¶ [ · [ ¸ [ ¹ [ º [ » [ ¼ » ½ » ¾ » ¿ » À » Á »  » à [ Ä [ Å [ Æ [ Ç [ È [ É [ Ê [ Ë [ Ì [ Í [ Î [ Ï [ Ð [ Ñ [ Ò [ Ó [ Ô [ Õ Ô Ö [ × [ Ø [ Ù Ø Ú [ Û [ Ü [ Ý [ Þ [ ß [ à [ á [ â [ ã [ ä [ å [ æ [ ç [ è [ é [ ê [ ë [ ì [ í [ î [ ï [ ð [ ñ [ ò [ ó [ ô [ õ [ ö [ ÷ [ ø [ ù [ ú [ û [ ü [ ý [ þ [ ÿ [ [  [  [  [  [  [  [  [  [ [ [ [ [ [   [  [  [  [    [  [  [  [  [  [  [  [  [  [  [  [ [ ! [ " [ # [ $ [ % [ & [ ' [ ( [ ) [ * [ + [ , [ - [ . [ / [ 0 [ 1 [ 2 [ 3 [ 4 3 5 [ 6 [ 7 [ 8 [ 9 [ : [ ; [ < [ = [ > [ ? [ @ [ A [ B [ C [ D [ E [ F [ G [ H [ I [ J [ K [ L [ M [ N M O M P M Q M R M S M T M U M V M W [ X W Y [ Z Y [ [ \ [ ] [ ^ ] _ [ ` [ 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 [ { [ | [ } [ ~ [  [ € [ [ ‚ [ ƒ [ „ [ … [ † [ ‡ [ ˆ [ ‰ [ Š [ ‹ [ Œ [ [ Ž [ [ [ ‘ [ ’ [ “ [ ” [ • [ – [ — [ ˜ [ ™ [ š [ › [ œ [ [ ž [ Ÿ [   [ ¡ [ ¢ [ £ [ ¤ [ ¥ [ ¦ [ § [ ¨ [ © [ ª [ « [ ¬ [ ­ [ ® [ ¯ [ ° [ ± [ ² [ ³ [ ´ [ µ [ ¶ [ · [ ¸ [ ¹ [ º [ » [ ¼ [ ½ [ ¾ [ ¿ [ À [ Á [  [ à [ Ä [ Å [ Æ [ Ç [ È [ É [ Ê [ Ë [ Ì [ Í [ Î [ Ï [ Ð [ Ñ [ Ò [ Ó [ Ô [ Õ [ Ö [ × [ Ø [ Ù [ Ú [ Û [ Ü [ Ý [ Þ [ ß [ à [ á [ â [ ã [ ä [ å [ æ [ ç [ è [ é [ ê [ ë [ ì [ í [ î [ ï [ ð [ ñ [ ò [ ó [ ô [ õ [ ö [ ÷ [ ø [ ù [ ú [ û [ ü [ ý [ þ [ ÿ [ [  [  [  [  [  [  [  [  [ [ [ [ [ [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [ [ ! [ " [ # [ $ [ % [ & [ ' [ ( [ ) [ * [ + [ , [ - [ . [ / [ 0 [ 1 [ 2 [ 3 [ 4 [ 5 [ 6 [ 7 [ 8 [ 9 [ : [ ; [ < [ = [ > [ ? [ @ [ 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 [ [ [ \ [ ] [ ^ [ _ [ ` [ 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 [ { [ | [ } [ ~ [  [ € [ [ ‚ [ ƒ [ „ [ … [ † [ ‡ [ ˆ [ ‰ [ Š [ ‹ [ Œ [ [ Ž [ [ [ ‘ [ ’ [ “ [ ” [ • [ – [ — [ ˜ [ ™ [ š [ › [ œ [ [ ž [ Ÿ [   [ ¡ [ ¢ [ £ [ ¤ [ ¥ [ ¦ [ § [ ¨ [ © [ ª [ « [ ¬ [ ­ [ ® [ ¯ [ ° [ ± [ ² [ ³ [ ´ [ µ [ ¶ [ · [ ¸ [ ¹ [ º [ » [ ¼ [ ½ [ ¾ [ ¿ [ À [ Á [  [ à [ Ä [ Å [ Æ [ Ç [ È [ É [ Ê [ Ë [ Ì [ Í [ Î [ Ï [ Ð [ Ñ [ Ò [ Ó [ Ô [ Õ [ Ö [ × [ Ø [ Ù [ Ú [ Û [ Ü [ Ý [ Þ [ ß [ à [ á [ â [ ã [ ä [ å [ æ [ ç [ è [ é [ ê [ ë [ ì [ í [ î [ ï [ ð [ ñ [ ò [ ó [ ô [ õ [ ö [ ÷ [ ø [ ù [ ú [ û [ ü [ ý [ þ [ ÿ [ [  [  [  [  [  [  [  [  [ [ [ [ [ [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [  [ [ ! [ " [ # [ $ [ % [ & [ ' [ ( [ ) [ * [ + [ , [ - [ . [ / [ 0 [ 1 [ 2 [ 3 [ 4 [ 5 [ 6 [ 7 [ 8 [ 9 [ : [ ; [ < [ = [ > [ ? [ @ [ 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 [ [ [ \ [ ] [ ^ [ _ [ ` [ 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 [ { [ | [ } [ ~ [  [ € [ [ ‚ [ ƒ [ „ [ … [ † [ ‡ [ ˆ [ ‰ [ Š [ ‹ [ Œ [ [ Ž [ [ [ ‘ [ ’ [ “ [ ” [ • [ – [ — [ ˜ [ ™ [ š [ › [ œ [ [ ž [ Ÿ [   [ ¡ [ ¢ [ £ [ ¤ [ ¥ [ ¦ [ § [ ¨ [ © [ ª [ « [ ¬ [ ­ [ ® [ ¯ [ ° [ ± [ ² [ ³ [ ´ [ µ [ ¶ [ · [ ¸ [ ¹ ¸ º ¸ » ¸ ¼ ¸ ½ ¸ ¾ ¸ ¿ ¸ À ¸ Á ¸  ¸ à ¸ Ä ¸ Å ¸ Æ ¸ Ç ¸ È ¸ É ¸ Ê ¸ Ë ¸ Ì ¸ Í ¸ Î ¸ Ï ¸ Ð ¸ Ñ ¸ Ò ¸ Ó ¸ Ô ¸ Õ ¸ Ö ¸ × ¸ Ø ¸ Ù ¸ Ú ¸ Û ¸ Ü ¸ Ý ¸ Þ ¸ ß ¸ à ¸ á ¸ â ¸ ã ¸ ä ¸ å ¸ æ ¸ ç ¸ è ¸ é ¸ ê ¸ ë [ ì ë í ë î ë ï ë ð ë ñ ë ò ë ó ë ô ë õ ë ö ë ÷ ë ø ë ù ë ú ë û ë ü ë ý ë þ ë ÿ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë !ë "ë #ë $ë %ë &ë 'ë (ë )ë *ë +ë ,ë -ë .ë /ë 0ë 1ë 2ë 3ë 4ë 5ë 6ë 7ë 8ë 9ë :ë ;ë <ë =ë >ë ?ë @ë 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ë [ë \ë ]ë ^[ _^`^a^b^c[ dcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~cc€cc‚cƒc„c…c†[ ‡†ˆ[ ‰ˆŠ‰‹‰Œ‰‰Ž‰‰‰‘‰’‰“ˆ”ˆ•”–”—”˜”™”š”›”œ””žˆŸˆ Ÿ¡Ÿ¢Ÿ£Ÿ¤Ÿ¥Ÿ¦Ÿ§Ÿ¨Ÿ©ˆªˆ«ˆ¬ˆ­ˆ®ˆ¯ˆ°ˆ±ˆ²ˆ³ˆ´ˆµˆ¶ˆ·ˆ¸ˆ¹ˆºˆ»ˆ¼ˆ½ˆ¾ˆ¿ˆÀˆÁˆÂˆÃˆÄˆÅˆÆˆÇˆÈˆÉˆÊˆËˆÌˆÍˆÎˆÏˆÐˆÑˆÒˆÓˆÔˆÕˆÖ[ ×ÖØ×Ù×Ú×Û×Ü×ÝÖÞÖßÖàÖáÖâÖãÖäÖåäæäçäèäéäêäëäìÖíÖîÖïÖðÖñÖòÖóÖôÖõÖöõ÷õøõùõúõûõüõýÖþÖÿÖÖÖÖÖÖÖÖÖÖ Ö Ö Ö Ö ÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖ[  !"#$%&'()*[ +*,[ -[ .-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J[ MLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrqsqtquqvqwqxqyLzL{L|L}L~LL€LL‚LƒL„L…L†L‡LˆL‰LŠL‹LŒLLŽLLL‘L’L“L”L•L–L—L˜L™LšL›LœLLžLŸL L¡L¢L£L¤L¥L¦L§L¨L©LªL«L¬L­L®L¯L°L±L²L³L´LµL¶L·L¸L¹LºL»L¼L½L¾L¿LÀLÁLÂLÃLÄLÅLÆLÇLÈLÉLÊLËLÌLÍLÎLÏLÐLÑLÒLÓLÔLÕLÖL×LØLÙLÚLÛLÜLÝLÞLßLàLáLâLãLäLåLæLçLèLéLêLëLìLíLîLïLðLñLôóõôöó÷óøóùóúóûóüóýóþóÿóóóóóóóóóó ó ó ó ó óóóóóóóóóóóóóóóóó !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNORQSQTQUQVQWQXQYQZQ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxZyZzZ{Z|Z}Z~ZZ€ZZ‚ZƒZ„Z…Z†Z‡ZˆZ‰ZŠQ‹QŒQŒŽŒŒŒ‘Œ’Q“’”Q•Q–•—Q˜Q™QšQ›QœQQžQŸQ Q¡Q¢Q£Q¤Q¥Q¦Q§Q¨Q©QªQ«Q¬Q­Q®Q¯Q°Q±Q²Q³Q´QµQ¶Q·Q¸Q¹¸ºQ»Q¼Q½¼¾Q¿¾À¾Á¾Â¾Ã¾ÄQÅQÆQÇÆÈQÉQÊQËQÌQÍQÎQÏQÐQÑQÒQÓQÔQÕQÖQ×QØQÙQÚQÛQÜQÝQÞQßQàQáQâQãQäQåQæQçQèQéQêQëQìQíQîQïQðQñQòQóQôQõQöQ÷QøQùQúùûQüQýQþQÿQQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQQQQ !Q"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q3Q4Q5Q6Q7Q8Q9Q:Q;Q<Q=Q>Q?Q@QAQBQCQDQEQFQGQHQIHJHKHLHMHNHOHPQQQRQSQTQUQVQWQXQYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQ€QQ‚QƒQ„Q…Q†Q‡QˆQ‰QŠQ‹QŒQQŽQQQ‘Q’Q“Q”Q•Q–Q—Q˜Q™QšQ›QœQQžQŸQ Q¡Q¢Q£Q¤Q¥Q¦Q§Q¨Q©QªQ«Q¬Q­Q®Q¯Q°Q±Q²Q³Q´QµQ¶Q·Q¸Q¹QºQ»Q¼Q½Q¾Q¿QÀQÁQÂQÃQÄQÅQÆQÇQÈQÉQÊQËQÌQÍQÎQÏQÐQÑQÒQÓQÔQÕQÖQ×QÚÙÛÚÜÚÝÚÞÚßÚàÙáÙâÙãÙäÙåÙæÙçÙèÙéÙêÙëÙìÙíÙîÙïÙðÙñÙòÙóÙôÙõÙöÙ÷ÙøÙùÙúÙûÙüÙýÙþÙÿÙÙÙ      !"!#!$!%!&!'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./012345:9;9<9=<>9?>@>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>[>\9]9^9_9`9a9bacadaeafagahaiajakalamanaoapaqaras9tsusvswsxsy9z9{9|9}9~99€99‚9ƒ9„9…9†9‡9ˆ9‰9Š9‹9Œ99Ž999‘9’9“9”9•9–9—9˜9™9š9›9œ99ž9Ÿ9 9¡9¢9£9¤9¥9¦9§9¨9©9ª9«9¬9­9®9¯9°9±9²9³9´9µ9¶9·9¸9¹9º9»9¼9½9¾9¿9À9Á9Â9Ã9Ä9Å9Æ9Ç9È9É9Ê9Ë9Ì9Í9Î9Ï9Ð9Ñ9Ò9Ó9Ô9Õ9Ö9×9ÚÙÛÙÜÙÝÙÞÙßÞàÙáÙâÙãÙäÙåÙæÙçÙèÙéÙêÙëÙìÙíÙîÙïÙðÙñÙòÙóÙôóõÙöÙ÷ÙøÙùÙúÙûÙüÙýÙþýÿýýýýýýÙÙÙÙ Ù Ù Ù Ù ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ Ù!Ù"Ù#Ù$Ù%Ù&Ù'Ù(Ù)Ù*Ù+Ù,Ù-Ù.Ù/Ù0Ù1Ù2Ù3Ù435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~33€33‚3ƒ3„3…3†3‡3ˆ3‰3Š3‹3Œ33Ž333‘3’3“3”3•3–3—3˜3™3šÙ›šœššžšŸš š¡š¢š£š¤š¥š¦š§š¨š©šªš«š¬š­š®š¯š°š±š²š³š´šµš¶š·š¸š¹šºš»š¼š½š¾š¿šÀšÁšÂšÃšÄšÅšÆšÇšÈšÉšÊšËšÌšÍšÎšÏšÐšÑšÒšÓšÔšÕšÖš×ÙØ×Ù×Ú×Û×Ü×Ý×Þ×ß×à×á×â×ã×ä×å׿×ç×è×é×ê×ë×ì×í×î×ï×ð×ñ×ò×ó×ô×õ×ö×÷×ø×ù×ú×û×ü×ý×þ×ÿ×××××××××× × × × × ××××××××××××××××××× ×!×"×#×$×%×&×'×(×)×*×+×,×-×.×/×0×1×2×3×4×5×6×7×8×9×:×;×<×=×>×?×@×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×[×\×]×^×_×`×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×|{}{~{{€{{‚{ƒ{„{…{†{‡{ˆ{‰{Š{‹{Œ{{Ž{{{‘{’{“{”{•{–{—{˜{™{š{›{œ{{ž{Ÿ{ {¡{¢{£{¤{¥{¦{§{¨{©{ª{«{¬{­{®{¯{°{±{²{³{´{·¶¸·¹·º·»¶¼»½»¾»¿»À»Á»Â»Ã»Ä»Å»Æ»Ç¶ÈÇÉÇÊÇËÇÌÇÍÇÎÇÏÇÐÇÑÇÒÇÓÇÔÇÕÇÖÇ×ÇØÇÙÇÚÇÛÇÜÇÝÇÞÇßÇàÇáÇâÇãÇäÇåÇæÇçÇèÇéÇêÇëÇìÇíÇîÇïÇðÇñÇòÇóÇôÇõÇöÇ÷ÇøÇùÇúÇûÇü¶ýüþüÿüü¶¶      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI¶JIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIv¶wvxvyv|{}{~{{€{{‚{ƒ‚„{…{†{‡{ˆ{‰{Š{‹{Œ{{Ž{{{‘{’{“{”{•{–{—{˜{™{š™›™œ™™ž™Ÿ{ Ÿ¡Ÿ¢Ÿ£Ÿ¤Ÿ¥Ÿ¦Ÿ§{¨{©{ª{«{¬{­{®{¯{°{±{²{³{´{µ{¶{·¶¸¶¹¶º¶»¶¼{½{¾{¿{À¿Á¿Â¿Ã¿Ä¿Å¿Æ¿Ç¿È¿É{Ê{Ë{Ì{Í{Î{Ï{Ð{Ñ{Ò{Ó{Ô{Õ{Ö{×{Ø{ÙØÚØÛØÜØÝØÞ{ß{à{á{â{ã{ä{å{æ{ç{è{é{ê{ë{ì{í{îíïíðíñíòíóíôíõ{ö{÷{ø{ù{ú{û{ü{ý{þ{ÿ{{{{{{{{{{ { { { { {{{{{{{{{{{{ {!{"{#{${%{&{'{({){*{+{,{-{.{/{0{1{2{3{4{5{6{7{8{9{:{;{<{={>{?{@{A{B{C{D{E{F{G{H{I{J{K{L{M{N{O{P{Q{R{S{T{U{V{WVXVYVZ{[{\{]{^{_{`{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{utvtwtxtytzt{t|t}t~tt€{{‚{ƒ{„{…{†{‡{ˆ{‰{Š{‹{Œ{{Ž{{{‘{’{“{”{•{–{—{˜{™{š{›{œ{{ž{Ÿ{ {¡{¢{£{¤{¥{¦{§{¨{©¨ª{«{¬{­{®{¯{°{±{²{³{´{µ{¶{·{¸{¹{º{»{¼{½{¾{¿{À{Á{Â{Ã{Ä{Å{Æ{Ç{È{É{Ê{Ë{Ì{ÍÌÎÌÏÌÐÌÑÌÒÌÓÌÔÌÕÌÖÌ×ÌØÌÙÌÚÌÛÌÜÌÝÌÞÌßÌàÌáÌâÌãÌäÌåÌæÌçÌèÌéÌêÌëÌìÌíÌîÌïÌðÌñÌòÌóÌôÌõÌöÌ÷ÌøÌùÌúÌû{üûýûþûÿûûûû      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[^]_]`]a]b]c]d]edfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽddd‘d’d“d”d•d–d—d˜d™dšd›dœ]œž]Ÿž ]¡]¢]£]¤]¥]¦]§]¨]©]ª]«]¬]­]®]¯]°]±]²]³]´]µ]¸·¹·º·»·¼·½·¾·¿·À·Á·Â·Ã·Ä·Å·Æ·Ç·È·É·Ê·Ë·Ì·Í·Î·Ï·Ð·Ñ·Ò·Ó·Ô·Õ·Ö·×·Ø·Ù·Ú·Û·Ü·Ý·Þ·ß·à·á·â·ã·ä·å·æ·ç·è·é·ê·ë·ì·í·î·ï·ð·ñ·ò·ó·ô·õ·ö·÷·ø·ù·ú·û·ü·ý·þ·ÿ·········· · · · · ··················· ·!·"·#·$·%·&·'·(·)·*·+·,·-·.·/·0·1·2·3·4·5·6·7·8·9·:·;·<·=·>·?·@·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·[·\·]·^·_·`·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·{·|·}·~··€··‚·ƒ·„·…·†·‡·ˆ·‰·Š·‹·Œ··Ž···‘·’·“·”·•·–·—·˜·™·š·›·œ··ž·Ÿ· ·¡·¢·£·¤·¥·¦·§·¨·©·ª·«·¬·­·®·¯·°·±·²·³·´·µ·¶···¸·¹·º·»·¼·½·¾·¿·À·Á·Â·Ã·Ä·Å·Æ·Ç·È·É·Ê·Ë·Ì·Í·Î·Ï·Ð·Ñ·Ò·Ó·Ô·Õ·Ö·×·Ø·Ù·Ú·Û·Ü·Ý·Þ·ß·à·á·â·ã·ä·å·æ·ç·è·é·ê·ë·ì·í·î·ï·ð·ñ·ò·ó·ô·õ·ö·÷·ø·ù·ú·û·ü·ý·þ·ÿ·········· · · · · ··················· ·!·"·#·$·%·&·'·(·)·*·+·,·-·.·/·0·1·2·3·4·5·6·7·8·9·:·;·<·=·>·?·@·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·[·^]_]`]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]{]|]}]~]]€]]‚]ƒ]„ƒ…]†]‡]ˆ]‰]Š]‹]Œ]]Ž]]]‘]’]“]”]•]–]—]˜]™]š]›]œ]]ž]Ÿ] ]¡]¢]£]¤]¥]¦]§]¨]©]ª]«]¬]­]®]¯]°]±]²]³]´]µ]¶µ·µ¸µ¹µºµ»µ¼µ½]¾]¿]À]Á]Â]Ã]Ä]Å]Æ]Ç]È]É]Ê]Ë]Ì]Í]Î]Ï]Ð]Ñ]Ò]Ó]Ô]Õ]Ö]×]Ø]Ù]Ú]Û]Ü]Ý]Þ]ß]à]á]â]ã]ä]å]æ]ç]è]é]ê]ë]ì]í]î]ï]ð]ñ]ò]ó]ô]õ]ö]÷]ø]ù]ú]û]ü]ý]þ]ÿ]]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]BAC]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]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]{]|]}]~]]€]]‚]ƒ]„]…]†]‡]ˆ]‰]Š]‹]Œ]]Ž]]]‘]’]“]”]•]–]—]˜]™]š]›]œ]]ž]Ÿ] ]¡]¢]£]¤]¥]¦]§]¨]©]ª]«]¬]­]®]¯]°]±]²]³]´³µ]¶]·]¸]¹]º]»]¼]½]¾]¿]À]Á]Â]Ã]Ä]Å]Æ]Ç]È]É]Ê]Ë]Ì]Í]Î]Ï]Ð]Ñ]Ò]Ó]Ô]Õ]Ö]×]Ø]Ù]Ú]Û]Ü]Ý]Þ]ß]à]á]â]ã]ä]å]æ]ç]è]é]ê]ë]ì]í]î]ï]ð]ñ]ò]ó]ô]õ]ö]÷]ø]ù]ú]û]ü]ý]þ]ÿ]]]]]]]]]] ] ] ] ] ]]]]]]]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]QPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PP€PP‚PƒP„P…P†P‡PˆP‰PŠP‹PŒPPŽPPP‘P’P“P”P•P–P—P˜P™]š™›™œ™™ž™Ÿ™ ™¡™¢™£™¤™¥]¦¥§¥¨¥©¥ª¥«¥¬¥­¥®¥¯¥°¥±¥²¥³¥´¥µ¥¶¥·¥¸¥¹¥º¥»¥¼¥½¥¾¥¿¥À¥Á¥Â¥Ã¥Ä¥Å¥Æ¥Ç¥È¥É¥Ê¥ÍÌÎÌÏÌÐÌÑÌÒÌÓÌÔÌÕÌÖÌ×ÌØÌÙÌÚÌÛÌÜÌÝÌÞÌßÌàÌáÌâÌãÌäÌåÌæÌçÌèÌëêìêíêîíïêðïñïòïóïôïõêöõ÷êø÷ùêúùûêüêýüþêÿþêêêêêêêê ê ê ê ê êêêêê !"#$%&'(ê)ê*)+),)-ê.ê/ê0ê1ê2ê3ê435363738393:3;ê<ê=ê>ê?ê@ê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@[@\ê]ê^]_]`]a]b]c]d]e]f]gêhêiêjêkêlêmênêoêpêqêrêsêtsusvswsxsyszs{s|s}s~ss€ss‚sƒê„ƒ…ƒ†ƒ‡ƒˆƒ‰ƒŠƒ‹ƒŒƒêŽêê‘’“”•ê–ê—–˜–™–š–›–œêêžêŸê Ÿ¡Ÿ¢Ÿ£Ÿ¤Ÿ¥Ÿ¦Ÿ§Ÿ¨Ÿ©ŸªŸ«Ÿ¬Ÿ­Ÿ®Ÿ¯Ÿ°Ÿ±Ÿ²Ÿ³Ÿ´ŸµŸ¶Ÿ·Ÿ¸Ÿ¹ŸºŸ»Ÿ¼Ÿ½Ÿ¾Ÿ¿ŸÀŸÁêÂÁÃÁÄÁÅÁÆÁÇÁÈÁÉêÊêËÊÌÊÍÊÎÊÏÊÐÊÑÊÒÊÓÊÔÊÕÊÖê×êØêÙêÚêÛêÜêÝÜÞÜßÜàÜáÜâÜãÜäÜåÜæÜçÜèÜéÜêÜëÜìÜíÜîÜïÜðÜñÜòÜóÜôÜõÜöÜ÷ÜøÜùÜúÜûÜüêýüþüÿüüüüüüüüüü ü ü ü ü üüüüüüüüüüüüüüüüüüü ü!ü"ü#ü$ü%ü&ü'ü(ü)ü*ü+ü,ü-ü.ü/ü0ê102ê324ê546ê768ê98:ê;:<:=:>ê?>@>A>B>C>DêEêFêGêHêIHJHKHLHMHNHOHPHQHRHSHTêUêVêWêXêYêZY[Y\Y]Y^Y_ê`ê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ê{ê|ê}ê~êê€êê‚êƒê„ê…ê†ê‡êˆê‰êŠê‹êŒêêŽêêê‘ê’ê“ê”ê•ê–ê—ê˜ê™êšê›êœêêžêŸê ê¡ê¢ê£ê¤ê¥ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾ê¿êÀêÁêÂêÃêÄêÅêÆêÇêÈêÉÈÊÈËÈÐÏÑÏÒÏÓÏÔÓÕÓÖÓ×ÓØÓÙÓÚÓÛÏÜÛÝÛÞÛßÛàÛáÏâÏãÏäÏåäæäçäèäéäêäëäìäíäîäïäðäñäòäóäôäõäöä÷äøäùäúäûäüäýäþäÿääääääääää ä ä ä ä äääääääääääääääÏ !"#$%&'()*+,Ï-Ï.Ï/Ï0Ï1Ï2Ï3Ï4Ï5Ï6Ï7Ï8797:7;7<7=7>7?Ï@ÏAÏBÏCÏDÏEÏFEGEHEIEJEMLNLOLPLSRTRURVRWRXRYRZY[Z\Y]Y^Y_Ybacadaeafagahgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~gg€gg‚gƒg„g…g†g‡gˆg‰gŠg‹gŒggŽggg‘g’g“g”g•g–g—g˜g™gšg›gœggžgŸg g¡g¢g£g¤g¥g¦g§g¨g©gªg«g¬g­g®g¯g°g±g²g³g´gµg¶g·g¸g¹gºg»g¼g½g¾g¿gÀgÁgÂgÃgÄgÅgÆgÇgÈgÉgÊgËgÌgÍgÎgÏgÐgÑgÒgÓgÔgÕgÖg×aØ×ÙaÚÙÛaÜaÝaÞaßaàaáaâaãaäaåaæaçaèaéaêaëaìaíaîaïaðañaòaóaôaõaöa÷aøaùaúaûaüaýaþaÿa a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a! a" a# a$ a% a& a' a( a) a* a+ a, a- a. a/ a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a: a; a< a= a> a? a@ aA aB aC aD aE aF aG aH aI aJ aK aL aM aN aO aP aQ aR aS aT aU aV aW aX aY aZ a[ a\ a] a^ a_ a` aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az a{ a| a} a~ a a€ a a‚ aƒ a„ a… a† a‡ aˆ a‰ aŠ a‹ aŒ a aŽ a a a‘ a’ a“ a” a• a– a— a˜ a™ aš a› aœ a až aŸ a  a¡ a¢ a£ a¤ a¥ a¦ a§ a¨ a© aª a« a¬ a­ a® a¯ a° a± a² a³ a´ aµ a¶ a· a¸ a¹ aº a» a¼ a½ a¾ a¿ aÀ aÁ a aà aÄ aÅ aÆ aÇ aÈ aÉ aÊ aË aÌ aÍ aÎ aÏ aÐ aÑ aÒ aÓ aÔ aÕ aÖ a× aØ aÙ aÚ aÛ aÜ aÝ aÞ aß aà aá aâ aã aä aå aæ aç aè aé aê aë aì aí aî aï að añ aò aó aô aõ aö a÷ aø aù aú aû aü aý aþ aÿ a!a!a!a!a!a!a!a!a!a !a !a !a !a !a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a !a!!a"!a#!a$!a%!a&!a'!a(!a)!a*!a+!a,!a-!a.!a/!a0!a1!a2!a3!a4!a5!a6!a7!a8!a9!a:!a;!a!a?!a@!aA!aB!aC!aD!aE!aF!aG!aH!aI!aJ!aK!aL!aM!aN!aO!aP!aQ!aR!aS!aT!aU!aV!aW!aX!aY!aZ!a[!a\!a]!a^!a_!a`!aa!ab!ac!ad!ae!af!ag!ah!ai!aj!ak!al!am!an!ao!ap!aq!ar!as!at!au!av!aw!ax!ay!az!a{!a|!a}!a~!a!a€!a!a‚!aƒ!a„!a…!a†!a‡!aˆ!a‰!aŠ!a‹!aŒ!a!aŽ!a!a!a‘!a’!a“!a”!a•!a–!a—!a˜!a™!aš!a›!aœ!a!až!aŸ!a !a¡!a¢!a£!a¤!a¥!a¦!a§!a¨!a©!aª!a«!a¬!a­!a®!a¯!a°!a±!a²!a³!a´!aµ!a¶!a·!a¸!a¹!aº!a»!a¼!a½!a¾!a¿!aÀ!aÁ!aÂ!aÃ!aÄ!aÅ!aÆ!aÇ!aÈ!aÉ!aÊ!aË!aÌ!aÍ!aÎ!aÏ!aÐ!aÑ!aÒ!aÓ!aÔ!aÕ!aÖ!a×!aØ!aÙ!aÚ!aÛ!aÜ!aÝ!aÞ!aß!aà!aá!aâ!aã!aä!aå!aæ!aç!aè!aé!aê!aë!aì!aí!aî!aï!að!añ!aò!aó!aô!aõ!aö!a÷!aø!aù!aú!aû!aü!aý!aþ!aÿ!a"a"a"a"a"a"a"a"a"a "a "a "a "a "a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a "a!"a""a#"a$"a%"a&"a'"a("a)"a*"a+"a,"a-"a."a/"a0"a1"a2"a3"a4"a5"a6"a7"a8"a9"a:"a;"a<"a="a>"a?"a@"aA"aB"aC"aD"aE"aF"aG"aH"aI"aJ"aK"aL"aM"aN"aO"aP"aQ"aR"aS"aT"aU"aV"aW"aX"aY"aZ"a["a\"a]"a^"a_"a`"aa"ab"ac"ad"ae"af"ag"ah"ai"aj"ak"al"am"an"ao"ap"aq"ar"as"at"au"av"aw"ax"ay"az"a{"a|"a}"a~"a"a€"a"a‚"aƒ"a„"a…"a†"a‡"aˆ"a‰"aŠ"a‹"aŒ"a"aŽ"a"a"a‘"a’"a“"a”"a•"a–"a—"a˜"a™"aš"a›"aœ"a"až"aŸ"a "a¡"a¢"a£"a¤"a¥"a¦"a§"a¨"a©"aª"a«"a¬"a­"a®"a¯"a°"a±"a²"a³"a´"aµ"a¶"a·"a¸"a¹"aº"a»"a¼"a½"a¾"a¿"aÀ"aÁ"aÂ"aÃ"aÄ"aÅ"aÆ"aÇ"aÈ"aÉ"aÊ"aË"aÌ"aÍ"aÎ"aÏ"aÐ"aÑ"aÒ"aÓ"aÔ"aÕ"aÖ"a×"aØ"aÙ"aÚ"aÛ"aÜ"aÝ"aÞ"aß"aà"aá"aâ"aã"aä"aå"aæ"aç"aè"aé"aê"aë"aì"aí"aî"aï"að"añ"aò"aó"aô"aõ"aö"a÷"aø"aù"aú"aû"aü"aý"aþ"aÿ"a#a#a#a#a#a#a#a#a#a #a #a #a #a #a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a #a!#a"#a##a$#a%#a&#a'#a(#a)#a*#a+#a,#a-#a.#a/#a0#a1#a2#a3#a4#a5#a6#a7#a8#a9#a:#a;#a<#a=#a>#a?#a@#aA#aB#aC#aD#aE#aF#aG#aH#aI#aJ#aK#aL#aM#aN#aO#aP#aQ#aR#aS#aT#aU#aV#aW#aX#aY#aZ#a[#a\#a]#a^#a_#a`#aa#ab#ac#ad#ae#af#ag#ah#ai#aj#ak#al#am#an#ao#ap#aq#ar#as#at#au#av#aw#ax#ay#az#a{#a|#a}#a~#a#a€#a#a‚#aƒ#a„#a…#a†#a‡#aˆ#a‰#aŠ#a‹#aŒ#a#aŽ#a#a#a‘#a’#a“#a”#a•#a–#a—#a˜#a™#aš#a›#aœ#a#až#aŸ#a #a¡#a¢#a£#a¤#a¥#a¦#a§#a¨#a©#aª#a«#a¬#a­#a®#a¯#a°#a±#a²#a³#a´#aµ#a¶#a·#a¸#a¹#aº#a»#a¼#a½#a¾#a¿#aÀ#aÁ#aÂ#aÃ#aÄ#aÅ#aÆ#aÇ#aÈ#aÉ#aÊ#aË#aÌ#aÍ#aÎ#aÏ#aÐ#aÑ#aÒ#aÓ#aÔ#aÕ#aÖ#a×#aØ#aÙ#aÚ#aÛ#aÜ#aÝ#aÞ#aß#aà#aá#aâ#aã#aä#aå#aæ#aç#aè#aé#aê#aë#aì#aí#aî#aï#að#añ#aò#aó#aô#aõ#aö#a÷#aø#aù#aú#aû#aü#aý#aþ#aÿ#a$a$a$a$a$a$a$a$a$a $a $a $a $a $a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a $a!$a"$a#$a$$a%$a&$a'$a($a)$a*$a+$a,$a-$a.$a/$a0$a1$a2$a3$a4$a5$a6$a7$a8$a9$a:$a;$a<$a=$a>$a?$a@$aA$aB$aC$aD$aE$aF$aG$aJ$I$K$I$L$I$M$I$N$I$O$I$P$I$Q$I$R$I$S$I$T$I$U$I$V$I$W$I$X$I$Y$I$Z$I$[$I$\$I$]$I$^$I$_$^$`$^$a$^$b$^$c$^$d$I$e$I$f$I$g$I$h$I$i$I$j$I$k$I$l$I$m$I$n$I$o$I$p$I$q$I$r$I$s$I$t$I$u$I$v$I$w$I$x$I$y$I$z$I${$I$|$I$}$I$~$I$$I$€$I$$I$‚$I$ƒ$I$„$I$…$I$†$I$‡$I$ˆ$I$‰$I$Š$I$‹$I$Œ$I$$I$Ž$I$$I$$I$‘$I$’$I$“$I$”$I$•$I$–$I$—$I$˜$I$™$I$š$I$›$I$œ$I$$I$ž$I$Ÿ$I$ $I$¡$I$¢$I$£$I$¤$I$¥$I$¦$I$§$I$¨$I$©$I$ª$I$«$I$¬$I$­$I$®$I$¯$I$°$I$±$I$²$I$³$I$´$I$µ$I$¶$I$·$I$¸$I$¹$I$º$I$»$I$¼$I$½$I$¾$I$¿$I$À$I$Á$I$Â$I$Ã$I$Ä$I$Å$I$Æ$I$Ç$I$È$I$É$I$Ê$I$Ë$I$Ì$I$Í$I$Î$I$Ï$I$Ð$I$Ñ$I$Ò$I$Ó$I$Ô$I$Õ$I$Ö$I$×$I$Ú$Ù$Û$Ù$Ü$Ù$Ý$Ù$Þ$Ù$ß$Ù$à$Ù$á$Ù$â$Ù$ã$Ù$ä$Ù$å$Ù$æ$Ù$ç$æ$è$æ$é$æ$ê$æ$ë$æ$ì$æ$í$æ$î$Ù$ï$î$ð$Ù$ñ$Ù$ò$Ù$ó$ò$ô$Ù$õ$Ù$ö$õ$÷$õ$ø$õ$ù$õ$ú$õ$û$õ$ü$õ$ý$õ$þ$õ$ÿ$õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$ %õ$ %õ$ %õ$ %õ$ %õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%õ$%Ù$ %%!%%"%%#%%$%%%%%&%%'%%(%%)%%*%%+%%,%%-%%.%%/%Ù$0%/%1%Ù$2%1%3%Ù$4%3%5%Ù$6%5%7%5%8%5%9%5%:%5%;%5%<%5%=%Ù$>%=%?%=%@%=%A%=%B%=%C%Ù$D%C%E%C%F%C%G%C%H%C%I%Ù$J%I%K%I%L%I%M%I%N%I%O%Ù$P%O%Q%O%R%O%S%O%T%O%U%Ù$V%U%W%U%X%U%Y%Ù$Z%Ù$[%Ù$\%[%]%Ù$^%Ù$_%^%`%^%a%^%b%^%c%^%d%^%e%^%f%^%g%^%h%^%i%^%j%^%k%^%l%^%m%^%n%^%o%^%p%^%q%^%r%^%s%^%t%^%u%^%v%Ù$w%v%x%v%y%v%z%v%{%v%|%v%}%v%~%v%%v%€%v%%v%‚%v%ƒ%v%„%v%…%v%†%v%‡%v%ˆ%v%‰%v%Š%v%‹%v%Œ%v%%v%Ž%v%%v%%v%‘%v%’%v%“%v%”%v%•%v%–%Ù$—%–%˜%–%™%–%š%–%›%–%œ%–%%–%ž%–%Ÿ%–% %–%¡%–%¢%–%£%–%¤%–%¥%–%¦%–%§%–%¨%–%©%–%ª%–%«%–%¬%–%­%–%®%–%¯%–%°%–%±%–%²%–%³%–%´%–%µ%–%¶%–%·%–%¸%–%¹%–%º%–%»%–%¼%–%½%–%¾%–%¿%–%À%–%Á%–%Â%–%Ã%–%Ä%–%Å%–%Æ%–%Ç%–%È%–%É%–%Ê%–%Ë%–%Ì%–%Í%–%Î%–%Ï%–%Ð%–%Ñ%–%Ò%–%Ó%–%Ô%–%Õ%–%Ö%–%×%–%Ø%–%Ù%–%Ú%–%Û%–%Ü%–%Ý%–%Þ%–%ß%–%à%–%á%–%â%–%ã%–%ä%–%å%–%æ%–%ç%–%è%–%é%–%ê%–%ë%–%ì%–%í%–%î%–%ï%–%ð%–%ñ%–%ò%–%ó%–%ô%–%õ%–%ö%–%÷%–%ø%–%ù%–%ú%–%û%–%ü%–%ý%–%þ%–%ÿ%–%&–%&–%&–%&–%&–%&–%&–%&–%&–% &–% &Ù$ & & & & & && && && && &&Ù$&&&&&&&&&&&Ù$&&&&&&&&&&&Ù$&& &&!&&"&&#&&$&Ù$%&$&&&$&'&$&(&$&)&$&*&$&+&$&,&$&-&$&.&$&/&$&0&$&1&$&2&$&3&$&4&$&5&$&6&$&7&$&8&$&9&$&:&$&;&$&<&$&=&$&>&$&?&$&@&$&A&$&B&$&C&$&D&$&E&$&F&$&G&$&H&$&I&$&J&$&K&$&L&Ù$M&Ù$N&Ù$O&Ù$P&Ù$Q&Ù$R&Ù$S&Ù$T&S&U&Ù$V&U&W&U&X&U&Y&U&Z&U&[&U&\&U&]&U&^&U&_&U&`&U&a&Ù$b&a&c&a&d&a&e&Ù$f&e&g&e&h&e&i&e&j&e&k&e&l&e&m&e&n&e&o&e&p&e&q&e&r&e&s&e&t&e&u&Ù$v&Ù$w&Ù$x&w&y&w&z&w&{&w&|&w&}&Ù$~&}&&}&€&}&&}&‚&}&ƒ&Ù$„&Ù$…&Ù$†&Ù$‡&Ù$ˆ&Ù$‰&Ù$Š&Ù$‹&Ù$Œ&Ù$&Œ&Ž&Œ&&Œ&&Œ&‘&Œ&’&Ù$“&Ù$”&“&•&“&–&“&—&“&˜&“&™&“&š&“&›&“&œ&“&&“&ž&“&Ÿ&“& &“&¡&“&¢&“&£&“&¤&“&¥&“&¦&“&§&“&¨&“&©&“&ª&“&«&Ù$¬&«&­&«&®&«&¯&«&°&«&±&«&²&«&³&«&´&«&µ&«&¶&«&·&«&¸&«&¹&«&º&«&»&«&¼&«&½&«&¾&«&¿&«&À&«&Á&Ù$Â&Ù$Ã&Â&Ä&Â&Å&Â&Æ&Â&Ç&Â&È&Â&É&Â&Ê&Â&Ë&Â&Ì&Â&Í&Â&Î&Â&Ï&Â&Ð&Â&Ñ&Â&Ò&Â&Ó&Â&Ô&Ù$Õ&Ù$Ö&Ù$×&Ù$Ø&×&Ù&×&Ú&×&Û&×&Ü&×&Ý&×&Þ&×&ß&Ù$à&ß&á&ß&â&ß&ã&ß&ä&ß&å&ß&æ&ß&ç&Ù$è&ç&é&ç&ê&ç&ë&ç&ì&ç&í&Ù$î&Ù$ï&Ù$ð&Ù$ñ&Ù$ò&Ù$ó&Ù$ô&Ù$õ&Ù$ö&Ù$÷&ö&ø&ö&ù&ö&ú&ö&û&ö&ü&Ù$ý&Ù$þ&Ù$ÿ&Ù$'Ù$'Ù$'Ù$'Ù$'Ù$'Ù$'Ù$'Ù$'Ù$ 'Ù$ 'Ù$ 'Ù$ ' ' 'Ù$' '' '' '' '' ''Ù$'''''''''''''''''''''''' ''!''"''#''$''%''&'''''('')''*''+'',''-'Ù$.'Ù$/'Ù$0'Ù$1'Ù$2'Ù$3'Ù$4'Ù$5'Ù$6'Ù$7'Ù$8'7'9'7':'7';'7'<'7'='7'>'7'?'Ù$@'Ù$C'B'D'B'E'B'F'B'G'B'H'B'I'B'J'B'K'B'L'B'M'B'N'B'O'B'P'B'Q'B'R'B'S'B'T'B'U'B'V'B'W'B'X'B'Y'B'Z'B'['B'\'B']'B'c'b'd'c'e'b'f'b'g'b'h'b'i'b'j'b'k'b'l'b'm'b'n'b'o'b'p'b'q'b'r'b's'b't'b'u'b'v'b'w'b'x'b'y'b'z'b'{'b'|'b'}'b'~'b''b'€'b''b'‚'b'ƒ'b'„'b'…'b'†'b'‡'b'ˆ'b'‰'b'Š'b'‹'b'Œ'b''b'Ž'b''b''b'‘'b'’'b'“'b'”'b'•'b'–'b'—'b'˜'b'™'b'š'b'›'b'ž''Ÿ'' ''¡''¢''£''¤''¥''¦''§''¨''©''ª''«''¬''­''®''¯''°''±''²''³''´''µ''¶''·''¸''¹''º''»''¼''½''¾''¿''À''Á''Â''Ã''Ä''Ç'Æ'Ê'É'Ë'É'Ì'É'Í'É'Î'É'Ï'É'Ð'É'Ñ'É'Ò'É'Ó'É'Ô'É'Õ'É'Ö'É'Ù'Ø'Ú'Ø'Ý'Ü'Þ'Ü'ß'Ü'à'Ü'á'Ü'â'Ü'ã'Ü'ä'Ü'å'Ü'æ'Ü'ç'Ü'è'Ü'é'Ü'ê'Ü'ë'Ü'ì'Ü'í'Ü'î'Ü'ï'Ü'ð'Ü'ñ'Ü'ò'Ü'ó'Ü'ô'Ü'õ'Ü'ö'Ü'÷'Ü'ø'Ü'ù'Ü'ú'Ü'û'Ü'ü'Ü'ý'Ü'þ'Ü'ÿ'Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü' (Ü' (Ü' (Ü' (Ü' (Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü'(Ü' (Ü'!(Ü'"(Ü'#(Ü'$(Ü'%(Ü'&(Ü''(Ü'((Ü')(Ü'*(Ü'+(Ü',(Ü'-(Ü'.(Ü'/(Ü'0(Ü'1(Ü'2(Ü'3(Ü'4(Ü'5(Ü'6(Ü'7(Ü'8(Ü'9(Ü':(Ü';(Ü'<(Ü'=(Ü'>(Ü'?(Ü'@(Ü'A(Ü'B(Ü'C(Ü'D(Ü'E(Ü'F(Ü'G(Ü'H(Ü'I(Ü'J(Ü'K(Ü'L(Ü'M(Ü'N(Ü'O(Ü'P(Ü'Q(Ü'R(Ü'S(R(T(R(U(R(X(W(Y(W(Z(W([(W(\(W(](W(^(W(_(W(`(W(a(W(b(W(c(W(d(W(e(W(f(W(g(W(h(W(i(W(j(W(k(W(l(W(m(W(n(W(o(W(p(W(q(W(r(W(s(W(t(W(u(W(v(W(w(W(x(W(y(W(z(W({(W(|(W(}(W(~(W((W(€(W((W(‚(W(ƒ(W(„(W(…(W(†(W(‡(W(ˆ(W(‰(W(Š(W(‹(W(Œ(W((W(Ž(W((W(((‘((’((“((”((•((–((—(W(˜(W(™(W(š(W(›(W(œ(W((W(ž(W(Ÿ(W( (W(¡(W(¢(W(£(W(¤(W(¥(W(¦(W(§(W(¨(W(©(W(ª(W(«(W(¬(W(­(W(®(W(¯(W(°(W(±(W(²(W(³(W(´(W(µ(W(¶(W(·(W(¸(W(¹(W(º(W(»(W(¼(W(½(W(¾(W(¿(W(À(W(Á(W(Â(W(Ã(W(Ä(W(Å(W(Æ(W(Ç(W(È(Ç(É(Ç(Ê(Ç(Ë(Ç(Ì(Ç(Í(W(Î(W(Ï(W(Ð(W(Ñ(W(Ò(W(Ó(W(Ô(W(Õ(W(Ö(W(×(W(Ø(W(Ù(W(Ú(W(Û(W(Ü(W(Ý(W(Þ(W(ß(W(à(W(á(W(â(W(ã(W(ä(W(å(W(æ(W(ç(W(è(W(é(W(ê(W(ë(W(ì(W(í(W(î(W(ï(W(ð(W(ñ(W(ò(W(ó(W(ô(W(õ(W(ö(W(÷(W(ø(W(ù(W(ú(W(û(W(ü(W(ý(W(þ(W(ÿ(W()W()W()W()W()W()W()W()W()) )) )) )) )) )))))))))))))))))))))))))))))))))))))) ))!))"))#))$))%))&))'))())))W(*)W(-),).),)/),)0),)1),)2),)3),)4),)5)4)6)4)7)4)8)4)9)4):)4);)4)<),)=),)>),)?)>)@)>)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)>)[)>)\)>)])>)^)>)_)>)`)>)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),){),)|),)}),)~),)),)€),)),)‚),)ƒ),)„),)…),)†),)‡),)ˆ),)‰),)Š),)‹),)Œ),)),)Ž),)),)),)‘),)’),)“),)”),)•),)–),)—),)˜),)™),)š),)›),)œ),)),)ž),)Ÿ),) ),)¡),)¢),)£),)¤),)¥),)¦),)§),)¨),)©),)ª),)«),)¬),)­),)®),)¯),)°),)±),)²),)³),)´),)µ),)¶),)·),)¸),)¹),)º),)»),)¼),)½),)¾),)¿),)À),)Á),)Â),)Ã),)Ä),)Å),)Æ),)Ç),)È),)É),)Ê),)Ë),)Ì),)Í),)Î),)Ï),)Ð),)Ñ),)Ò),)Ó),)Ô),)Õ),)Ö),)×),)Ø),)Ù),)Ú),)Û),)Ü),)Ý),)Þ),)ß),)à),)á),)â),)ã),)ä),)å),)æ),)ç),)è),)é),)ê),)ë),)ì),)í),)î),)ï),)ð),)ñ),)ò),)ó),)ô),)õ),)ö),)÷),)ø),)ù),)ú),)û),)ü),)ý),)þ),)ÿ),)*,)*,)*,)*,)*,)*,)*,)*,)*,) *,) *,) *,) *,) *,)*,)*,)*******,)*,)*,)*,)*,)*,)*,)*,)*,)*,)*,)*,)*,) *,)!*,)"*,)#*,)$*,)%*,)&*,)'*,)(*,))*,)**,)+*,),*,)-*,).*,)/*,)0*,)1*,)2*,)3*,)4*,)5*,)6*,)7*,)8*,)9*,):*,);*,)<*,)=*,)>*,)?*,)@*,)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*,)[*,)\*,)]*,)^*,)_*,)`*,)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*,){*,)|*,)}*,)~*,)*,)€*,)*,)‚*,)ƒ*,)„*,)…*,)†*,)‡*,)ˆ*,)‰*,)Š*,)‹*,)Œ*,)*,)Ž*,)*,)*,)‘*,)’*,)“*,)”*,)•*,)–*,)—*,)˜*,)™*,)š*,)›*,)œ*,)*,)ž*,)Ÿ*,) *,)¡*,)¢*,)£*,)¤*,)¥*,)¦*,)§*,)¨*,)©*,)ª*,)«*,)¬*,)­*,)®*,)¯*,)°*,)±*,)²*,)³*,)´*,)µ*,)¶*,)·*,)¸*,)¹*,)º*,)»*,)¼*,)½*,)¾*,)¿*,)À*,)Á*,)Â*,)Ã*,)Ä*,)Å*,)Æ*,)Ç*,)È*,)É*,)Ê*,)Ë*,)Ì*,)Í*,)Î*,)Ï*,)Ð*,)Ñ*,)Ò*,)Ó*,)Ô*,)Õ*,)Ö*,)×*,)Ø*,)Ù*,)Ú*,)Û*,)Ü*,)Ý*,)Þ*,)ß*,)à*,)á*,)â*,)ã*,)ä*,)å*,)æ*,)ç*,)è*,)é*,)ê*,)ë*,)ì*,)í*,)î*,)ï*,)ð*,)ñ*,)ò*,)ó*,)ô*,)õ*,)ö*,)÷*,)ø*,)û*ú*ü*ú*ý*ú*þ*ú*ÿ*ú*+ú*+ú*+ú*+ú*+ú*+ú*+ú*+ú*+ú* +ú* + + + + + ++ +++++++++++++++++++++++++++++++ ++!++"++#++$++%++&++'++(++)+(+*+++++,++-++.++/++0++1++2++3++4++5++6+5+7+5+8+5+9+5+:+5+;++<++=++>++?++@++A++B++C++D++E++F++G++J+I+K+I+L+I+M+I+N+I+O+I+P+I+Q+I+R+I+S+I+T+I+U+I+V+I+W+I+X+I+Y+I+Z+I+[+I+\+I+]+I+^+I+_+I+`+I+a+I+b+I+c+I+d+I+e+I+f+I+g+I+h+I+i+I+j+I+k+I+l+I+m+I+n+I+o+I+p+I+q+I+r+I+s+I+v+u+w+u+x+u+y+u+z+u+{+u+|+u+}+u+~+u++u+€+u++u+‚+u+ƒ+u+„+ƒ+…+„+†+„+‡+„+ˆ+„+‰+„+Š+„+‹+„+Œ+ƒ++ƒ+Ž+ƒ++ƒ++ƒ+‘+ƒ+’+ƒ+“+ƒ+”+u+•+u+–+u+—+–+˜+u+™+˜+š+u+›+š+œ+š++š+ž+š+Ÿ+š+ +š+¡+u+¢+u+£+u+¤+u+¥+¤+¦+u+§+¦+¨+u+©+¨+ª+u+«+u+¬+u+­+u+®+u+±+°+²+°+³+°+´+°+µ+°+¶+°+·+°+¸+°+¹+°+º+°+»+°+¼+°+½+°+¾+°+¿+°+À+°+Á+°+Â+°+Ã+°+Ä+°+Å+°+Æ+°+Ç+°+È+°+É+°+Ê+°+Ë+°+Ì+°+Í+°+Î+°+Ï+°+Ò+Ñ+Ó+Ñ+Ô+Ñ+Õ+Ñ+Ö+Ñ+×+Ñ+Ø+Ñ+Ù+Ñ+Ú+Ñ+Û+Ñ+Ü+Ñ+Ý+Ñ+Þ+Ñ+ß+Ñ+à+Ñ+á+Ñ+ä+ã+å+ä+æ+ä+ç+ä+è+ä+é+ä+ê+ã+ë+ã+ì+ã+í+ã+î+í+ï+í+ð+í+ñ+í+ò+í+ó+í+ô+í+õ+í+ö+í+÷+í+ø+í+ù+í+ú+í+û+í+ü+í+ý+í+þ+í+ÿ+í+,í+,í+,í+,í+,í+,í+,í+,í+,í+ ,í+ ,í+ ,í+ ,í+ ,í+,í+,í+,í+,í+,í+,í+,í+,ã+,,,ã+,,,ã+,ã+,ã+,ã+,ã+,ã+,ã+ ,ã+!,ã+",ã+#,ã+$,ã+%,ã+&,ã+',ã+(,ã+),ã+*,ã++,ã+,,ã+-,ã+.,ã+/,ã+0,ã+1,ã+2,ã+3,ã+4,ã+5,ã+6,ã+7,ã+8,ã+9,ã+:,ã+;,ã+<,ã+=,ã+>,ã+?,ã+@,ã+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,ã+[,ã+\,ã+],ã+^,ã+_,ã+`,ã+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,ã+{,ã+|,ã+},ã+~,ã+,ã+€,ã+,ã+‚,ã+ƒ,ã+„,ã+…,ã+†,ã+‡,ã+ˆ,ã+‰,ã+Š,ã+‹,ã+Ž,,,Ž,,,‘,,’,,“,,”,,•,,–,,—,,˜,,™,,š,,›,,œ,,,,ž,,Ÿ,, ,,¡,,¢,,£,,¤,,¥,,¦,,§,,¨,,©,,ª,,«,,¬,,­,,®,,¯,,°,,³,²,´,²,µ,²,¶,²,·,²,¸,²,¹,²,º,²,»,²,¼,²,½,²,¾,²,¿,²,À,²,Á,²,Â,²,Ã,²,Ä,²,Å,²,Æ,²,Ç,²,È,²,É,²,Ê,²,Ë,²,Ì,²,Í,²,Î,²,Ï,²,Ð,²,Ñ,²,Ò,²,Ó,²,Ô,²,Õ,²,Ö,²,×,²,Ø,²,Ù,²,Ú,²,Û,²,Ü,²,Ý,²,Þ,²,ß,²,à,²,á,²,â,²,ã,²,ä,²,å,²,æ,²,ç,²,è,²,é,²,ê,²,ë,²,ì,²,í,²,î,²,ï,²,ô,ó,õ,ó,ö,ó,÷,ó,ø,ó,ù,ó,ú,ó,û,ó,ü,ó,ý,ó,þ,ó,ÿ,ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó, -ó, -ó, -ó, -ó, -ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó,-ó, -ó,!-ó,"-ó,%-$-&-$-'-$-(-'-)-$-*-$-+-$-,-+---+-.-+-/-+-0-+-1-+-2-+-3-$-4-3-5-3-6-3-7-3-8-3-9-3-:-3-;-$-<-$-=-$->-$-?->-@->-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-$-[-$-\-[-]-[-^-[-_-[-`-[-c-b-d-b-e-b-f-b-g-b-h-b-i-b-j-b-k-j-l-j-m-j-n-j-o-j-p-b-q-b-r-b-s-b-t-s-u-s-v-s-w-s-x-s-y-s-z-s-{-b-|-b-}-b-~-}--b-€---b-‚-b-ƒ-b-„-ƒ-…-b-†-b-‡-b-ˆ-‡-‰-‡-Š-‡-‹-‡-Œ-‡--‡-Ž-‡--‡--‡-‘-‡-’-‡-“-‡-”-‡-•-‡-–-‡-—-‡-˜-‡-™-b-š-b-›-b-œ-b--b-ž-b-Ÿ-b- -b-¡- -¢-b-£-b-¤-b-¥-b-¦-b-§-b-¨-b-©-¨-ª-¨-«-¨-¬-¨-­-¨-®-¨-¯-¨-°-¨-±-¨-²-¨-³-¨-´-¨-µ-¨-¶-¨-·-¨-¸-¨-¹-¨-º-¨-»-¨-¼-¨-½-¨-¾-¨-¿-¨-À-¨-Á-¨-Â-¨-Ã-¨-Ä-¨-Å-¨-Æ-¨-Ç-¨-È-¨-É-¨-Ê-b-Ë-b-Ì-Ë-Í-Ë-Î-Ë-Ï-Ë-Ð-Ë-Ñ-b-Ò-Ñ-Ó-b-Ô-Ó-Õ-Ó-Ö-Ó-×-Ó-Ø-Ó-Ù-Ó-Ú-Ó-Û-b-Ü-Û-Ý-Û-Þ-Û-ß-Û-à-Û-á-Û-â-Û-ã-Û-ä-Û-å-b-æ-å-ç-b-è-ç-é-b-ê-é-ë-b-ì-ë-í-b-î-í-ï-b-ð-ï-ñ-ï-ò-ï-ó-ï-ô-ï-õ-ï-ö-ï-÷-ï-ø-ï-ù-ï-ú-ï-û-ï-ü-ï-ý-ï-þ-ï-ÿ-ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï- .ï- .ï- .ï- .ï- .ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï-.ï- .ï-!.ï-".ï-#.ï-$.ï-%.ï-&.ï-'.ï-(.ï-).ï-*.ï-+.ï-,.ï--.ï-..ï-/.ï-0.ï-1.ï-2.ï-3.ï-4.ï-5.ï-6.ï-7.ï-8.ï-9.ï-:.ï-;.ï-<.ï-=.ï->.ï-?.ï-@.ï-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.ï-[.ï-\.ï-].ï-^.ï-_.ï-`.ï-a.b-b.b-c.b-d.b-e.b-f.b-g.b-h.b-i.b-j.b-k.b-l.b-m.b-n.b-o.n.p.n.q.n.r.n.s.n.t.n.u.n.v.n.w.n.x.b-y.x.z.x.{.x.|.x.}.x.~.x..x.€.b-.€.‚.€.ƒ.€.„.€.….€.†.b-‡.b-ˆ.b-‰.ˆ.Š.b-‹.Š.Œ.Š..Š.Ž.Š..Š..Š.‘.Š.’.Š.“.Š.”.Š.•.Š.–.Š.—.Š.˜.Š.™.Š.š.Š.›.Š.œ.Š..Š.ž.Š.Ÿ.Š. .Š.¡.Š.¢.Š.£.Š.¤.Š.¥.Š.¦.b-§.¦.¨.¦.©.¦.ª.¦.«.¦.¬.¦.­.¦.®.¦.¯.¦.°.¦.±.¦.².b-³.².´.².µ.².¶.².·.².¸.².¹.².º.b-».º.¼.b-½.b-¾.½.¿.½.À.½.Á.½.Â.½.Ã.b-Ä.Ã.Å.b-Æ.Å.Ç.b-È.Ç.É.b-Ê.É.Ë.b-Ì.b-Í.b-Î.b-Ï.b-Ð.b-Ñ.Ð.Ò.Ð.Ó.Ð.Ô.b-Õ.Ô.Ö.Ô.×.Ô.Ø.Ô.Ù.Ô.Ú.b-Û.b-Ü.Û.Ý.b-Þ.b-ß.b-à.ß.á.b-â.b-ã.b-ä.b-å.b-æ.b-ç.b-è.b-é.b-ê.b-ë.b-ì.b-í.b-î.b-ï.î.ð.î.ñ.î.ò.î.ó.î.ô.î.õ.î.ö.b-÷.b-ø.÷.ù.b-ú.ù.û.b-ü.û.ý.û.þ.û.ÿ.û./û./û./û./b-///////b-/b- /b- /b- /b- /b- /b-/b-/b-/b-/b-/b-///b-///////////////b-/b-/b-// /b-!/b-"/b-#/b-$/b-%/b-&/b-'/b-(/b-)/b-*/b-+/b-,/b--/b-./b-//b-0/b-1/b-2/b-3/b-4/b-5/b-6/b-7/b-8/b-9/b-:/b-;/b-/b-?/b-@/b-A/b-B/b-C/b-D/b-E/b-F/b-G/b-H/b-I/b-J/b-K/b-L/b-M/b-N/b-O/b-P/b-Q/b-R/b-S/b-T/b-U/b-V/b-W/b-X/b-Y/b-Z/b-[/b-\/b-]/b-^/b-_/b-`/b-a/b-b/b-c/b/d/b/e/b/f/b/g/b/h/b/i/b/j/b/k/b/l/b-m/b-n/b-o/n/p/n/q/n/r/n/s/n/t/b-u/b-v/b-w/b-x/b-y/b-z/b-{/b-|/b-}/b-~/b-/b-€/b-/b-‚/b-ƒ/b-„/b-…/b-†/b-‡/b-ˆ/b-‰/b-Š/b-‹/b-Œ/b-/b-Ž/b-/b-/b-‘/b-’/b-“/b-”/b-•/b-–/b-—/b-˜/b-™/b-š/b-›/b-œ/b-/b-ž/b-Ÿ/b- /b-¡/b-¢/b-£/b-¤/b-¥/b-¦/b-§/b-¨/b-©/b-ª/b-«/b-¬/b-­/b-®/b-¯/b-°/b-±/b-²/b-³/b-´/b-µ/b-¶/b-·/b-¸/b-¹/b-º/b-»/b-¼/b-½/b-¾/b-¿/b-À/b-Á/b-Â/b-Ã/b-Ä/b-Å/b-Æ/b-Ç/b-È/b-É/b-Ê/b-Ë/b-Ì/b-Í/b-Î/b-Ï/b-Ð/b-Ñ/b-Ò/b-Ó/b-Ô/b-Õ/b-Ö/b-×/b-Ø/b-Ù/b-Ú/b-Û/b-Ü/b-Ý/b-Þ/b-ß/b-à/b-á/b-â/b-ã/b-ä/b-å/b-æ/b-ç/b-è/b-é/b-ê/b-ë/b-ì/b-í/b-î/b-ï/b-ð/b-ñ/ð/ò/ð/õ/ô/ö/ô/÷/ö/ø/ö/ù/ö/ú/ô/û/ú/ü/ô/ý/ô/þ/ô/ÿ/ô/0ô/0ô/00000000000000 0ô/ 0ô/ 0ô/ 0ô/ 0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/0ô/!0 0"0 0'0&0(0&0+0*0,0*0-0*0.0*0/0*000*010*04030503080709080:080;080<080=080>070?0>0@0>0A0>0B0>0C0>0D070E070F070G070H070I070J070K070L070M070N070O070P070Q070R0Q0S0Q0T070U0T0V0T0W0T0X070Y0X0Z0X0[0X0\0X0]0X0^0X0_0X0`0X0a0X0b070c0b0d0b0e0b0f0b0g0b0h0b0i0b0j0b0k0b0l0b0m0b0n0b0o0b0p0b0q0b0r0b0s0b0t0b0u0b0v0b0w0b0x0b0y070z0y0{0y0|070}0|0~0|00|0€0|00|0‚0|0ƒ0|0„0|0…0|0†0|0‡0|0ˆ070‰070Š070‹070Œ0700Œ0Ž0Œ00Œ00Œ0‘070’0‘0“0‘0”070•070–0•0—0•0˜0•0™0•0š0•0›0•0œ0•00•0ž0•0Ÿ0•0 0•0¡0•0¢0•0£0•0¤0•0¥0•0¦070§070¨0§0©0§0ª070«0ª0¬0ª0±0°0²0°0³0°0´0°0¶0µ0·0µ0¸0µ0¹0µ0º0µ0»0µ0½0¼0¿0¾0À0¾0Á0¾0Â0¾0Ä0Ã0Å0Ã0Æ0Ã0Ç0Ã0È0Ã0É0Ã0Ê0Ã0Ë0Ã0Ï0Î0Ð0Î0Ñ0Î0Ò0Î0Ó0Î0Ô0Î0Õ0Î0Ö0Î0×0Î0Ù0Ø0Ü0Û0Ý0Û0Þ0Û0ß0Û0á0à0â0à0ã0à0ä0à0æ0å0é0è0ê0è0ë0è0ì0è0í0è0î0í0ï0è0ð0è0ñ0è0ò0è0ó0è0ô0è0õ0è0ö0è0÷0è0ø0è0ù0è0ú0è0û0è0ü0è0ý0è0þ0è0ÿ0è01è01è01è01è01è01è01è01è01è0 1è0 1è0 1è0 1è0 1è01è01è01è01è01è01è01è01è0111111111111111111 11!11"11#11$1#1%1#1&1#1'1#1(1#1)1#1*1#1+1#1,1#1-1#1.1#1/1#101#1111211131114116151715181519151:151;151<151=151>151?151@151A151B151D1C1G1F1H1F1I1F1J1F1K1F1L1F1M1F1N1F1O1F1P1F1Q1F1R1F1S1F1T1F1U1F1V1F1W1F1X1F1Y1F1Z1F1[1F1\1F1]1F1^1F1_1F1`1F1a1F1b1F1c1F1d1F1e1F1f1F1g1F1h1F1i1F1j1F1k1F1l1F1m1F1n1F1o1F1p1F1q1F1r1F1s1F1t1F1u1F1v1F1w1F1x1F1y1F1z1F1{1F1|1F1}1F1~1F11F1€1F11F1‚1F1ƒ1F1„1F1…1F1†1F1‡1F1ˆ1F1‰1F1Š1F1‹1F1Œ1F11F1Ž1F11F11F1‘1F1’1F1“1F1”1F1•1F1–1F1—1F1˜1F1™1F1š1F1›1F1œ1F11F1ž1F1Ÿ1F1 1F1¡1F1¢1F1£1F1¤1F1¥1F1¦1F1§1F1¨1F1©1F1ª1F1«1F1¬1F1­1F1®1F1¯1F1°1F1±1F1²1F1³1F1´1F1µ1F1¶1F1·1F1¸1F1¹1F1º1F1»1F1¼1F1½1F1¾1F1¿1F1À1F1Á1F1Â1F1Ã1F1Ä1F1Å1F1Æ1F1Ç1F1È1F1É1F1Ê1F1Ë1F1Ì1F1Í1F1Î1F1Ï1F1Ð1F1Ñ1F1Ò1F1Ó1F1Ô1F1Õ1F1Ö1F1×1F1Ø1F1Ù1F1Ú1F1Û1F1Ü1F1Ý1F1Þ1F1ß1F1à1F1á1F1â1F1ã1F1ä1F1å1F1æ1F1ç1F1è1F1é1F1ê1F1ë1F1ì1F1í1F1î1F1ï1F1ð1F1ñ1F1ò1F1ó1F1ô1F1õ1F1ö1F1÷1F1ø1F1ù1F1ú1F1û1F1ü1F1ý1F1þ1F1ÿ1F12F12F12F12F12F12F12F12F12F1 2F1 2F1 2F1 2F1 2F12F12F12F12F12F12F12F12F12F12F12F12F12F12F12F12F12F12F1 2F1!2F1"2F1#2F1$2F1%2F1&2F1'2F1(2F1)2F1*2F1+2F1,2F1-2F1.2F1/2F102F112F122F132F142F152F162F172F182F192F1:2F1;2F1<2F1=2F1>2F1?2F1@2F1A2F1B2F1C2F1D2F1E2F1F2F1G2F1H2F1I2F1J2F1K2F1L2F1M2F1N2F1O2F1P2F1Q2F1R2F1S2F1T2F1U2F1V2F1W2F1X2F1Y2F1Z2F1[2F1\2F1]2F1^2F1_2F1`2F1a2F1b2F1c2F1d2F1e2F1f2F1g2F1h2F1i2F1j2F1k2F1l2F1m2F1n2F1o2F1p2F1q2F1r2F1s2F1t2F1u2F1v2F1w2F1x2F1y2F1z2F1{2F1|2F1}2F1~2F12F1€2F12F1‚2F1ƒ2F1„2F1…2F1†2F1‡2F1ˆ2F1‰2F1Š2F1‹2F1Œ2F12F1Ž2F12F12F1‘2F1’2F1“2F1”2F1•2F1–2F1—2F1˜2F1™2F1š2F1›2F1œ2F12F1ž2F1Ÿ2F1 2F1¡2F1¢2F1£2F1¤2F1¥2F1¦2F1§2F1¨2F1©2F1ª2F1«2F1¬2F1­2F1®2F1¯2F1°2F1±2F1²2F1³2F1´2F1µ2F1¶2F1·2F1¸2F1¹2F1º2F1»2F1¼2F1½2F1¾2F1¿2F1À2F1Á2F1Â2F1Ã2F1Ä2F1Å2F1Æ2F1Ç2F1È2F1É2F1Ê2F1Ë2F1Ì2F1Í2F1Î2F1Ï2F1Ð2F1Ñ2F1Ò2F1Ó2F1Ô2F1Õ2F1Ö2F1×2F1Ø2F1Ù2F1Ú2F1Û2F1Ü2F1Ý2F1Þ2F1ß2F1à2F1á2F1â2F1ã2F1ä2F1å2F1æ2F1ç2F1è2F1é2F1ê2F1ë2F1ì2F1í2F1î2F1ï2F1ð2F1ñ2F1ò2F1ó2F1ô2F1õ2F1ö2F1÷2F1ø2F1ù2F1ú2F1û2F1ü2F1ý2F1þ2F1ÿ2F13F13F13F13F13F13F13F13F13F1 3F1 3F1 3F1 3F1 3F13F13F13F13F13F13F13F13F13F13F13F13F13F13F13F13F13F13F1 3F1!3F1"3F1#3F1$3F1%3F1&3F1'3F1(3F1)3F1*3F1+3F1,3F1-3F1.3F1/3F103F113F123F133F143F153F163F173F183F193F1:3F1;3F1<3F1=3F1>3F1?3F1@3F1A3F1B3F1C3F1D3F1E3F1F3F1G3F1H3F1I3F1J3F1K3F1L3F1M3F1N3F1O3F1P3F1Q3F1R3F1S3F1T3F1U3F1V3F1W3F1X3F1Y3F1Z3F1[3F1\3F1]3F1^3F1_3F1`3F1a3F1b3F1c3F1d3F1e3F1f3F1g3F1h3F1i3F1j3F1k3F1l3F1m3F1n3F1o3F1p3F1q3F1r3F1s3F1t3F1u3F1v3F1w3F1x3F1y3F1z3F1{3F1|3F1}3F1~3F13F1€3F13F1‚3F1ƒ3F1„3F1…3F1†3F1‡3F1ˆ3F1‰3F1Š3F1‹3F1Œ3F13F1Ž3F13F13F1‘3F1’3F1“3F1”3F1•3F1–3F1—3F1˜3F1™3F1š3F1›3F1œ3F13F1ž3F1Ÿ3F1 3F1¡3F1¢3F1£3F1¤3F1¥3F1¦3F1§3F1¨3F1©3F1ª3F1«3F1¬3F1­3F1®3F1¯3F1°3F1±3F1²3F1³3F1´3F1µ3F1¶3F1·3F1¸3F1¹3F1º3F1»3F1¼3F1½3F1¾3F1¿3F1À3F1Á3F1Â3F1Ã3F1Ä3F1Å3F1Æ3F1Ç3F1È3F1É3F1Ê3F1Ë3F1Ì3F1Í3F1Î3F1Ï3F1Ð3F1Ñ3F1Ò3F1Ó3F1Ô3F1Õ3F1Ö3F1×3F1Ø3F1Ù3F1Ú3F1Û3F1Ü3F1Ý3F1Þ3F1ß3F1à3F1á3F1â3F1ã3F1ä3F1å3F1æ3F1ç3F1è3F1é3F1ê3F1ë3F1ì3F1í3F1î3F1ï3F1ð3F1ñ3F1ò3F1ó3F1ô3F1õ3F1ö3F1÷3F1ø3F1ù3F1ú3F1û3F1ü3F1ý3F1þ3F1ÿ3F14F14F14F14F14F14F14F14F14F1 4F1 4F1 4F1 4F1 4F14F14F14F14F14F14F14F14F14F14F14F14F14F14F14F14F14F14F1 4F1!4F1"4F1#4F1$4F1%4F1&4F1'4F1(4F1)4F1*4F1+4F1,4F1-4F1.4F1/4F104F114F124F134F144F154F164F174F184F194F1:4F1;4F1<4F1=4F1>4F1?4F1@4F1A4F1B4F1C4F1D4F1E4F1F4F1G4F1H4F1I4F1J4F1K4F1L4F1M4F1N4F1O4F1P4F1Q4F1R4F1S4F1T4F1U4F1V4F1W4F1X4F1Y4F1Z4F1[4F1\4F1]4F1^4F1_4F1`4F1a4F1b4F1c4F1d4F1e4F1f4F1g4F1h4F1i4F1j4F1k4F1l4F1m4F1n4F1o4F1p4F1q4F1r4F1s4F1t4F1u4F1v4F1w4F1x4F1y4F1z4F1{4F1|4F1}4F1~4F14F1€4F14F1‚4F1ƒ4F1„4F1…4F1†4F1‡4F1ˆ4F1‰4F1Š4F1‹4F1Œ4F14F1Ž4F14F14F1‘4F1’4F1“4F1”4F1•4F1–4F1—4F1˜4F1™4F1š4F1›4F1œ4F14F1ž4F1Ÿ4F1 4F1¡4F1¢4F1£4F1¤4F1¥4F1¦4F1§4F1¨4F1©4F1ª4F1«4F1¬4F1­4F1®4F1¯4F1°4F1±4F1²4F1³4F1´4F1µ4F1¶4F1·4F1¸4F1¹4F1º4F1»4F1¼4F1½4F1¾4F1¿4F1À4F1Á4F1Â4F1Ã4F1Ä4F1Å4F1Æ4F1Ç4F1È4F1É4F1Ê4F1Ë4F1Ì4F1Í4F1Î4F1Ï4F1Ð4F1Ñ4F1Ò4F1Ó4F1Ô4F1Õ4F1Ö4F1×4F1Ø4F1Ù4F1Ú4F1Û4F1Ü4F1Ý4F1Þ4F1ß4F1à4F1á4F1â4F1ã4F1ä4F1å4F1æ4F1ç4F1è4F1é4F1ê4F1ë4F1ì4F1í4F1î4F1ï4F1ð4F1ñ4F1ò4F1ó4F1ô4F1õ4F1ö4F1÷4F1ø4F1ù4F1ú4F1û4F1ü4F1ý4F1þ4F1ÿ4F15F15F15F15F15F15F15F15F15F1 5F1 5F1 5F1 5F1 5F15F15F15F15F15F15F15F15F15F15F15F15F15F15F15F15F15F15F1 5F1!5F1"5F1#5F1$5F1%5F1&5F1'5F1(5F1)5F1*5F1+5F1,5F1-5F1.5F1/5F105F115F125F135F145F155F165F175F185F195F1:5F1;5F1<5F1=5F1>5F1?5F1@5F1A5F1B5F1C5F1D5F1E5F1F5F1G5F1H5F1I5F1J5F1K5F1L5F1M5F1N5F1O5F1P5F1Q5F1R5F1S5F1T5F1U5F1V5F1W5F1X5F1Y5F1Z5F1[5F1\5F1]5F1^5F1_5F1`5F1a5F1b5F1c5F1d5F1e5F1f5F1g5F1h5F1i5F1j5F1k5F1l5F1m5F1n5F1o5F1p5F1q5F1r5F1s5F1t5F1u5F1v5F1w5F1x5F1y5F1z5F1{5F1|5F1}5F1~5F15F1€5F15F1‚5F1ƒ5F1„5F1…5F1†5F1‡5F1ˆ5F1‰5F1Š5F1‹5F1Œ5F15F1Ž5F15F15F1‘5F1’5F1“5F1”5F1•5F1–5F1—5F1˜5F1™5F1š5F1›5F1œ5F15F1ž5F1Ÿ5F1 5F1¡5F1¢5F1£5F1¤5F1¥5F1¦5F1§5F1¨5F1©5F1ª5F1«5F1¬5F1­5F1®5F1¯5F1°5F1±5F1²5F1³5F1´5F1µ5F1¶5F1·5F1¸5F1¹5F1º5F1»5F1¼5F1½5F1¾5F1¿5F1À5F1Á5F1Â5F1Ã5F1Ä5F1Å5F1Æ5F1Ç5F1È5F1É5F1Ê5F1Ë5F1Ì5F1Í5F1Î5F1Ï5F1Ð5F1Ñ5F1Ò5F1Ó5F1Ô5F1Õ5F1Ö5F1×5F1Ø5F1Ù5F1Ú5F1Û5F1Ü5F1Ý5F1Þ5F1ß5F1à5F1á5F1â5F1ã5F1ä5F1å5F1æ5F1ç5F1è5F1é5F1ê5F1ë5F1ì5F1í5F1î5F1ï5F1ð5F1ñ5F1ò5F1ó5F1ô5F1õ5F1ö5F1÷5F1ø5F1ù5F1ú5F1û5F1ü5F1ý5F1þ5F1ÿ5F16F16F16F16F16F16F16F16F16F1 6F1 6F1 6F1 6F1 6F16F16F16F16F16F16F16F16F16F16F16F16F16666666666 66!66"66#66$66%66&66'66(66)66*66+66,66-66.66/66066166266366466566666766866966:66;66<66=66,to63^83^:šb<Ég<[>N@NBNBÃiDÉgDNFÉgFNHÉgH[HÃiTNVNXNZN\N^N`NbapbfpdapdfpjNºN†šb’šbøšbüšbþšbA±.šb2šb@A±všbvA±zšb~šbÆšbÚšb¦šb¨šbªšb®šb°šb°A±²šb>šbN’NšbA±ÁišbA±æšbîšbîA±8N:Ái:šb<Ái>Ái@A±@šbDšbFšbFA±HNJNLNNNPNRNTNVNXNZN\N^N`NbNdNfNhNlNnNpNrNtNvNxNzN|N~N‚N„N†NˆNŠNŒNŽNN’N”N–N˜NšNœNžN N¢N¤N¦NªN¬N®N°N²N´N¶N¸šbºN¼N¾NÀNÂNÄNÆNÊNÌNÎNÐNÒNø%çú%çü%çþ%ç%ç%ç6N8N:A±<A±BNœÁiœ‹tžšbžA±žÁiž‹t$N&N6šbrA±ÄšbÄA±èšbèA± Æc Æc Æc Æc* šb2 N4 šb4 N: N< N> ND šbD –D ˜F ˜H šbH A±H ­H –J ­L šbL –L ˜N ˜P šbP –R –T –X šbX –X ˜Z ˜\ šb\ –\ ˜^ ˜„ šb½ N¿ N A±{ ÊcÕ Êc šb A± ÁiC NK ÊcM ÊcO ÊcO NS NU Nu šbu A±ª ÁiÈ A±Ê A±ø Nú Nü N šb N N Þm N èm ëm N èm ëm öm èm ëm öm n šb A± Þm šb A± Þm šb Þm Þm Þm Þm Þm Þm[ šb] šb_ šb_ A±a šbc šbe šbi šby apy fp{ N¹ Ái¹ ‹t¹ tà šbà A±Ì šbÔ šb!šb#šb0šb2šb4šbîšbðšbòšbôšböšbøšbþA±A±A±šb{šb²N´N¶N¸NºN¼NÀA±Ïšbšbšbšb$šb$A±[šb[A±[Ái[‹t…šb‡šb—šb—A±—Ái—‹t—t—aZžšb¡šb¡A±¡Ái¡‹t¡t¡aZ£šb£A±£Ái£‹t£t¥šb¥A±¥Ái¥‹t¥t¥aZ¥Ÿ§šb´šbšbA±"šb"A±$šb$A±Žšbšb˜º¿ºšb¼šb¾šbÀšbïšbõA±÷A±øšbýšb‡Ái‰šb‰A±ŒšbÊšbúšbþšbšbšb;šb;A±=šbAšbCšbUšbWšb…šbØýk(ÁisA±yšb{šb}šb}A±…šb…A±¼ýkýkËšbÏA±ýkýk€šb‚šb šb[šb[A±išbvšb‰N¡šbÈšbàšbâšbäšbæšbèšbêšbìšbšbšbšbšbšb šbWšbWA±WÁiYšbYA±€šb‚šb‡šb‡A±‡Ái‰šb‹šbíšbñšbñA±ùšbûšbF šb šb A± Ái Ái‘ šb‘ A±‘ Ái“ šb“ A±• N— N™ N› N NŸ N¡ N£ šb¥ N§ N© N« N-!šb1!A±X!šbÜ!šbî!šbî!A±"šb"šbR"šb²"šb#šb #šb #šb/#šbƒ#A±‘#A±$šb($šbN$A±N$šbP$šbP$A±W$NY$N[$šb$šb$A±$Ái$‹ta%šbc%šbe%šbŠ%šbŒ%šbŽ%šb%šb’%šb”%šb–%šb˜%šbž%šb %šb¢%šb¤%šb°%¬²%¬´%¬¶%¬¸%¬º%¬¼%¬¾%¬Ú%N&šb&šb!&šb)&A±C&šbG&šbG&A±I&šbK&šbW&šb[&Æc_&Æca&Æcc&Æcm&šbs&Nu&Nw&Ny&Ny&šb{&N}&N&Np'šbr'šbv'šbv'A±Œ'šb’'šbÀ'šbÂ'šbô'Nø'N (N (N(N(N(N(N(N(N(N(šb (šb((šb*(šb.(šb0(šb2(šb4(šb6(šb8(šb:(šb<(šb>(šb@(šbB(šbÛ(šbF)šbø)šb*šb*A±V*t\*t~*Ÿ„*ŸŽ*{i”*{i+N+N+–+˜+šb!+–!+˜#+­#+–#+šb#+A±%+­%+–'+–'+˜'+šb)+–)+˜++–++šb-+–/+–U+–U+˜U+šbW+–W+˜Y+–Y+˜Y+šb[+–[+˜o+NÕ+šbL,šbP,šbR,šbV,šb],šbƒ,šb-šb -šbV-NX-NZ-NÄ.šb6/šb>/šb@/šbB/šbT/šbV/šbX/A±X/šbZ/šbZ/A±\/šb^/šb`/šbb/šbd/šbf/šbh/šbj/šbl/šbn/šbp/šbr/šb¤/šb¨/šb®/šbÍ/šbÑ/šbÞ/šbà/šbë/šbý/N0N0šb0A±0šb0A± 0šb!0N50šb70šbM0šb”0A±”0Ég”0[–0šb–0Ég–0[ž0A± 0A±¢0A±d1A±p1ÚEv1Nx1šbz1N|1øk|1ˆ€1øk€1ˆ„1›0„1ž0†1›0†1ž0ˆ1›0ˆ1ž0ˆ1«0Š1›0Š1ž0Š1«0Œ1›0Œ1ž0Œ1«0Œ1¸0Ž1›0Ž1ž0Ž1«0Ž1¸01ž01«0’1ž0’1«0’1¸0”1ž0”1«0”1¸0”1 1–1N˜1Nš1Nœ1Nž1N 1N¢1N¤1NÄ2šbÄ2A±Æ2šbÆ2A±È2šbÈ2A±Ê2šbÊ2A±Î2šbÎ2A±Ð2šbÐ2A±Ò2šbÒ2A±Ö2šbÖ2A±¼4N¾4NÀ4NÂ4NÄ4NÆ4NÈ4NÚ4šbÚ4A±X5NZ5N\5N^5Nf5šb 6šb 6A± 6Ái.6šbm6šbZ7šbŽ7Êc7Êc’7Êc”7Êc–7Êc˜7Êcš7Êcœ7Êcž7šb 7šb¢7šb¤7šb¦7šb¨7šbª7šb¬7šb®7šb°7šb²7šb´7šb¶7šb¸7šb8šb8šb¢8šbÃ8‹tÇ8ÁiÉ8A±Ë8šb49šb69šb89šb:šbz=šbz=A±z=Ái|=šb|=A±|=Ái~=A±~=Ái€=šb€=A±€=Ái‚=A±‚=Ái„=šb„=A±„=Ái =šb =A±ã=šbå=šb>šbQ>šbi>šbk>šbm>šbo>šbq>šby>šby>A±{>šb{>A±}>šb‰>šbŒ>NŽ>šb™>šbš>A±¬>šbÄ>šbÈ>šbu?šbu?A±y?Ái?‹t @t CšbEDA±QDšb¦HšbªHšbªHA±®Hšb®HA±²Hšb²HA±sJšbuJA±wJšbyJšbyJA±‰Jšb‘JšbËJA±ÑKšbÙKšbÙKA±7Mšb?MšbEMšbËMšbËMA±ñMšbñMA±ýMšbýMA±Nšb Nšb NA± Nšb NA±¢Nšb¢NA±¤Nšb¤NA±¤NÁi¦Nšb¦NÁi¦NA±¨Nšb¨NÁi¨NA±ªNšbªNÁiªNA±¬Nšb¸Nšb¸NA±ºNšbºNA±ÊNé3ÊN4h ÊNqÌN4h ÎN4h ÎNé3ÎNqÐN4h ÐNé3ÐNqÒN4h úNšb+Ošb-Ošb†Ošb¡Ošb£Ošb­Oº¿¯Oº¿ºOšbºOA±ßOšbáOšbçOšbíOšb5Pšb7Pšb9Pšb;Pšb=Pšb?PšbAPšbCPšbEPšbEPA±EPÁiGPšbGPA±GPÁiMPšbMPA±OPšbOPA±yPšb{PšbPšbPA±Pšb¦PA±¨Pšb¨PA±ªPšbªPA±ÖPšbëPšbóPA± QÁiQ‹tQt>QN@QNòQšbRšbHRšbxRN@T‹tBT‹tDTNDT‹tFTNFT‹tUšb]Ušb_UšbiUšbwUšb£Ušb­Ušb»UšbÇUšbÓUšbÕUšbéUšbëUšbíUšbõUšböUapöUšböUfpøUapøUšbøUfpúUapúUfpüUapüUfpþUapþUfpVapVfpVfpVšbVapVapVfpVapVfpVšbVap Všb Vap Všb VapVapVfpVNVNVNVNVNVN$VN$VÞm(VN(VÞm5VšbLVšbdVšbjVNlVNnVNpVNrVNtVNvVšbxVšb|VA±|Všb€Všb‚Všb‚VA±„Všb¡VýkÕVýkìVøkìVòNîVøkîVòNðVøkðVòNòVøkòVòNôVøkôVòNöVøköVòNøVòNøVøkúVøkúVòNüVòNþVøkþVòNWøkWòNWNWN WN WNWNWNWNWNWNWNWNWNWN WN"WN$WN&WN)Wýk.WN.Wšb2WA±2Wšb6Wšb8Wšb8WA±:Wšb:WA±WA±>Wšb?Wšb?WA±@WšbAWÁiCWÁiCW‹tJWšbRW›0RWž0ªWšbªWA±³WýkÔWNÖWšbØWA±ØWšbéWýkKXýkQXýkYXteXaZkXŸkX¬kXMkXkXcmX{imXUjmXÙV“Xšb£Xšb«Xšb­Xšb×Xšb†Yšb²Yšb²YA±ÆZA±ÆZšbÈZÉgÈZøkÊZÉgÌZøkÌZÉgÎZÉgÎZøkÐZøkÒZøkÆ\gÌ È\gÌ Ì\gÌ Î\gÌ Ð\gÌ Ò\gÌ Ô\gÌ D^gÌ F^gÌ J^gÌ ^^šbt^A±t^šbv^šbv^A±x^šbx^A±À^šbÀ^A±è^šbè^A±è^Ái_šb_šb"_šb&_šb0_šb0_Ái2_šb2_Ái4_šb6_šb8_šb:_šbD_A±J_šbJ_A±J_ÁiL_šbL_A±L_ÁiP_šbR_šbR_A±R_ÁiT_šbT_A±T_Ái^_šb`_šbh_šbˆ_šbŠ_šbŒ_šbŽ_šbN`NP`NV`ÉgV`NX`ÊcX`ÉgX`NX`ÞmZ`ÉgZ`NZ`Þm\`Ég\`N^`Ég^`N``Ég``Nb`Égb`Np`%çr`%çt`%çv`%çx`%çz`%ç|`N~`N€`N‚`N„`N†`NŠ`‹tŒ`NŽ`N`N`Þm–`N–`š`Égš`[œ`Égœ`[ž`Égž`[ `Ég `[ª`šbª`A±¬`šb¬`A±®`šb®`A±²`N´`N¶`N¸`N¸`šbº`Nº`šb¼`N¾`NÀ`NÂ`NÆ`šbÆ`A±È`šbÈ`A±Ê`šbÊ`A±Ì`šbÌ`A±Î`NÐ`šbÐ`A±Ð`ÁiÒ`šbÔ`šbÔ`A±Ö`šbØ`šbÚ`šbÚ`A±Ú`ÁiÚ`‹tÜ`šbÜ`A±Ü`ÁiÞ`šbÞ`NÞ`A±à`Nà`šbâ`Nä`Nä`šbæ`Næ`šbè`Nê`Nì`Nî`šbî`A±ð`šbð`A±ô`šbö`šbö`A±ú`šbþ`šbašbaA±ašbašbaA±ašbaA±ašb ašb ašbašbaNaNašbaN aN$ašb&ašb&aA±,aN.ašb.aA±.aÁi.a‹t0ašb0aA±0aÁi0a‹t2aN4ašb6ašb8ašb8aA±:ašb:aA±ašb>aA±>aÁi@ašbBašbBaA±DašbDaA±FašbHašbPaNRaA±VaNVaÞmXaNXaÞmbašbbaA±dašbdaA±faÉgfaNhašbhaA±lašbnaNpaNraNtašbvašbzaÉgza[zaÃi~aÉg~a[€aÉg€a[‚a[‚aÉg„aÉg„a[ˆaNŠaNŒaNŽaNaN’aN’aÉg”aÁi”aN”aÞm–aN–aÞmªa3^®a3^²ašb¸atoºatoÈaNÞaA±èaÁiêaÁiìaÁiîaÁiðaÁiòaÁiôaA±ôaÁib‹t b‹t b‹tb‹tbtbtbt b‹t bt"b‹t„bÊc]iýkyiýk{lšbomšbomA±ƒmšb©mšb±ošb³ošb·ošb¹ošbmpšbupšbršbtšb™tšb‘ušbÑxšbçyšbéyšbzšbC{šbY{šb[{šb]{šb]{A±_{šb_{A±a{šbg{šb‹{šb{šb{šb•{šb›{šb›{A±{šb{A±½{šbÕ{šbí{šb|šb|šb|šb|šb|šb|šb|šb!|šb)|šb£„šb¥„šb§„šbu…šbƒ…šb…šb«…šb­…šb­…A±7†šb=†A±C†‹tE†tG†aZG†ŸI†¬I†MK†¬K†MM†¬M†MO†¬O†MQ†S†NW†W†cY†Y†c[†[†c]†]†ci†šb‹ŒNŒNŒNŒÞm‘ŒN‘ŒÞm“ŒN•ŒN›Œšb¿Œšb¿ŒA±¿ŒÁiËŒšb댚b팚bbïŒA±õŒšb÷ŒšbÑšb‘šb=‘šbK‘šbK‘A±Q‘šb±“šb³“šbe”šbs”šbw–šbÓ—šbÙ—šbå—A±å—Áiå—‹tå—té—aZé—Ÿé—¬ë—Më—ë—cë—{iÅššbÅšA±ÉššbÍššbÑššbÕššbßššbáššbãššbóšbõšb¡žšb­žšb7 šb7 A±Q šbS šbU šbW šb N› šbË šbÏ šbÝ šbÝ A±ß šbá šbã šbå šbç šbé šbë šbí šbï šb‡¨šb‡¨A±‘¨šb™¨šb™¨A±›¨šb%ªšb'ªšb)ªšb7ªšb;ªšbCªšbGªšb«Ég«[«šb«A±ƒ«A±…«šb­A±ïšb°A±%°šbC°›0C°ž0E°›0E°ž0E°«0G°›0G°ž0G°«0G°¸0W°ž0W°«0Y°ž0Y°«0Y°¸0[°ž0[°«0[°¸0[° 1]°šb]°A±_°šb_°A±a°šba°A±c°šbe°Ng°šbi°Nk°Nm°No°šbq°šbs°Nu°NŸ°šbŸ°A±¥°N§°N‘±šb‘±A±“±N•±šb•±A±—±N£±šb£±A±?³šb]³šb]³A±‡³šb‡³A±ºšb/ºšb/ºA±ƒºšb‘ºšb3»šbí»šbñ»Nó»šbó»A±‘¼šb½¼šb½¼A±ý¼šbÿ¼šbÿ¼A±I½šbK½šb½Ái½šb½A±Ÿ½šbŸ½A±Ÿ½Ái©½šb«½šbÛ½šb龋t뾚bë¾A±ë¾Áiý¾šb¿šb#¿Êc%¿šb'¿šb)¿šb+¿šb-¿šb/¿šb1¿šb3¿Êc5¿Êco¿Ns¿‹ts¿ts¿aZu¿šbu¿A±u¿Ái›¿šbQÀšbaÀšbcÀšb{ÀšbÉÇšb™Êšb½Êšb3Ìšb5Ìšb…Ìšb…ÌA±cÍšbeÍšbiÍšbiÍA±kÍšbmÍšboÍšbÑšbÑA±ÑšbÑšbÅÑšbÅÑA±ÇÑšbÇÑA±ÉÑšbÉÑA±AÒšbAÒA±[Òšb‰Òšb‰ÒA±‰ÒÁi‹Òšb‹ÒA±‹ÒÁi=Õšb!çN#çšb%çšb'çšb'çA±)çšb+çšb-çšb-çA±/çšb1çšb3çšb5çšb7çšb9çšb;çšb=çšb=çA±©ëšb«ëšb¿ëšbûëšbìšbìA±ìšbìšb)ìšb{ìšb}ìšbìšbƒìšbƒìA±…ìšb…ìA±…ìÁi‘ìšb?íšbGíÁiGí‹tGítIíšbIíA±IíÁiMíšbOíšbUíšb[íšbgíšbkíšb§íšbk šbu šb} šb šb A± šb A±ƒ šbƒ A±… šb… A±¥šb}šbšbçto—(šb)šb)šb#)A±#)šb#)Ái%)A±%)šb-)šb-)A±/)šb/)A±‘)Ái;*šbG*šbO*šbQ*šbÙ+šbÙ+A±ý+šbý+A±ÿ+šb,šb,šb,šb ,A± ,Ái ,A±,šb,šb,šb,šb,šb,šb.šb.A±.Áik.šb.šb‘.šb‘.A±ñ.šb/šb3/šb3/A±7/šb;/šb;/A±S/šb1šb1A±Ã1šbÍ1šbÍ1AŸ Í1FŸ Ù1šb2šb2A±_2šbË2šbÓ2šb×2šbÛ2šbÝ2šbé2šb%3šbC3šbk5šb'7šbY8šb[8N]8Ne8šbƒ8šb‘8šbW9šbo9šbu9šbw9šby9šb{9šb}9šb9šbí9šbí9A±í9Áií9‹tï9šbï9A±ï9Áiï9Nï9‹tñ9šbñ9A±ñ9Áió9šbó9A±ó9Áiõ9šbõ9A±õ9Ái÷9šb÷9A±÷9Ái}:šb}:A±‡:ÁiM;šb«Fap«Ffp«FA±­Fap­Ffp¯Fap÷FNùFNûFNýFN5Gšb7GšbEGšbQGšbSGšb_GšboGšbqGšbsGšbuGšbyGšbGšbGšbƒGšbƒGA±…Gšb‰Gšb‰GA±‹Gšb‹GA±Gšb‘Gšb“Gšb•Gšb•GA±—Gšb›GšbéHNñHšbÙI‹tÙItÛIÁiÝIA±ßIšbýIšbJA±JšbAKšbAKA±AKÁiAK‹tAKtCKšbCKA±CKÁiCK‹tCKtEKšbEKA±GKšbGKA±GKÁiIKšbIKA±IKÁiKKšbKKA±KKÁiMKšbMKA±MKÁiOKšbOKA±OKÁiQKšbQKA±QKÁiQK‹tSKšbSKA±SKÁiSK‹tUKšbUKA±UKÁiUK‹tWKšbWKA±WKÁiWK‹tWKtYKšbYKA±YKÁiYK‹tYKt[Kšb[KA±[KÁi[K‹t[Kt[KaZ]Kšb]KA±]KÁi]K‹t]Kt]KaZ]KŸ_Kšb_KA±_KÁi_K‹t_KtaKšbaKA±aKÁiaK‹tcKšbcKA±cKÁicK‹tcKtcKaZcKŸeKšbeKA±eKÁieK‹tgKšbgKA±gKÁigK‹tgKtgKaZiKšbiKA±iKÁiiK‹tiKtkKšbkKA±oKšbqKšbsKøksKòNuKNwKšbyKšb{Kšb}KšbKšbãKNåKNçKN9Lšb;Lšb=Lšb=LA±?Lšb?LA±ALšbCLNCLšbILšbILA±OLšbOLA±QLšbSLšbULšbULA±WLšbWLA±YLšbYLA±[Lšb[LA±]Lšb]LA±_Lšb_LA±aLšbaLA±cLšbeLšbeLA±gLšbLšbLA±LÁiƒL½oƒL”j…Lšb‡LN‰LN‹LNLNLN‘LN“LN“Lšb•LN•Lšb—LN™Lšb›LNŸLšb¡Lšb­L›0­Lž0Ršb Ršb RA±RšbeRšbmRšboRšbqRšbqRA±sRšbuRšbXšb=[šbo[šb“[šb¡[šb¡[A±£[šb£[A±½\šb¿\šb`šb`A±G`gÌ I`šbI`A±K`šbK`A±“`gÌ ÷`šb#ašb#aA±'ašb'aA±…bšb…bA±—bšb—bA±™bšb™bA±™bÁi›bÉg›bÞm©bšb«bšbµbšbµbÁi·bšb·bA±·bÁi¹bA±¹bÁi¹bšb¹b‹t»bšb»bA±»bÁiÅbšbÇbšbÇbA±ÇbÁiÉbšbÉbA±ÉbÁiËbšbÍbšbOcšbQcšbScšb;~N;~Þm=~N=~Þm?~NA~NC~NE~NG~NI~NK~NM~NO~NO~ÞmQ~NS~NU~NU~ÊcW~N€šb€šb›€N€NŸ€N¡€N£€N¥€N§€N©€N«€N«€Êc­€N¯€N±€N³€Nµ€N·€N¹€N»€N½€N¿€NÁ€NÀNÍ€ÉgÍ€NÏ€ÉgÏ€NÑ€ÉgÑ€NÓ€ÉgÓ€NÕ€ÉgÕ€N×€Ég×€NÙ€NÙ€ÞmÛ€ÉgÛ€NÝ€ÉgÝ€N߀Ég߀Ná€Ná€Þmá€Égã€Égã€Nã€Þmå€Égå€Nå€Þmç€Égç€Né€Égé€Né€Þmë€Égë€Ní€Êcí€Égí€Ní€Þmï€Égï€Nï€Þmñ€Égñ€Nñ€Þmó€Égó€Nõ€Égõ€N÷€Ég÷€Nù€Égù€Nû€Égû€NGšbIšbKšbMšbOšbQNSNUšbWšbYšbYA±YÁiY‹t[šb]šbaNaÞm«Ÿ«¬­aZ¯t±‹t³ÁiµA±·šb{‚šb{‚A±}‚šb}‚A±‚šb‚A±‚šb‚A±ƒ‚šbƒ‚A±…‚šb…‚A±“‚N•‚N—‚N™‚N›‚N‚N‚šbŸ‚NŸ‚šb¡‚N£‚N¥‚NË‚šbË‚A±Í‚šbÍ‚A±Ï‚NÏ‚šbÑ‚šbÑ‚A±Ó‚šbÓ‚A±Õ‚šbÕ‚A±ׂNÙ‚NÛ‚NÝ‚Nß‚šbß‚A±ß‚Áiႚbá‚A±ã‚šbã‚A±ã‚Áiã‚‹t傚bå‚A±å‚Ái炚bç‚Nç‚A±é‚N邚bë‚Ní‚N킚bï‚Nbñ‚Nó‚Nõ‚Nõ‚šb÷‚Nù‚Nû‚Ný‚Nÿ‚NƒNƒšbƒA±ƒšbƒA±gƒšbgƒA±sƒšbuƒšbwƒšbyƒšb{ƒšb}ƒšbƒšbƒA±ƒšbƒA±ƒƒšb…ƒšb‡ƒšb‰ƒšb·ƒšb¹ƒšb¹ƒA±»ƒšb½ƒšb¿ƒšb¿ƒA±¿ƒÁiÁƒšbÁƒA±ÁƒÁiÚbÃA±ŃšbǃNɃN˃N̓N̓šbσN僚båƒA±ñƒšb„N„A±„šb„šb„šb„šb„A±!„šb#„A±%„šb'„A±)„šb+„šb-„šb-„A±-„Ái/„šb/„A±/„Ái1„šb1„A±3„N5„A±7„šb9„šb;„šb=„šb?„šb?„A±?„Ái?„‹tA„šbA„A±A„ÁiA„‹tC„šbC„A±C„ÁiE„šbG„šbI„NK„NM„šbO„šbS„šbU„šbU„A±W„šbW„A±Y„šb[„šb]„šb_„šb_„A±_„Áia„šba„A±a„Áic„šbe„šbg„šbi„šbk„šbm„šbo„šbo„A±q„šbq„A±q„Áis„šbu„šbu„A±u„Áiw„šbw„A±w„Áiy„šby„A±y„Ái{„šb}„šb}„A±„šb„A±„šb„A±„Áiƒ„šb…„šb…„A±‡„šbÅ„šbÇ„šbÇ„A±Ç„ÁiÉ„šbË„šbË„A±Ë„ÁiÍ„šbÍ„A±Ï„šbÑ„NÓ„NÕ„šbÕ„A±ׄšbׄA±ׄÁiÙ„šbÙ„A±Ù„ÁiÛ„NÝ„Nß„A±á„A±ã„šb儚b焚bñ„Nñ„Þmó„Nó„Þmõ„Þm…N…N…šb…šb …šb …A± …šb …A± …Ái …šb …A±…šb…A±…Ái…šb…A±…Ái…šb…šb…A±…šb…A±…šb…N…šb…A±!…šb#…šb%…šb'…šb)…šb+…šb+…A±-…šb/…šb/…A±1…šb1…A±3…šb5…šb7…šb9…šb;…N=…šb?…šbA…šbA…A±C…šbC…A±E…šbE…A±G…šbG…A±I…šbI…A±K…šbK…A±M…NM…šbO…šbQ…NQ…šbS…NS…šbU…NU…šbW…NW…šbY…NY…šb[…N[…šb]…šb]…A±_…N_…šba…Na…šbc…šbc…A±e…šbe…A±e…Áig…šbg…A±i…šbi…A±k…šbk…A±k…Áim…šbm…A±m…Áio…šbo…A±o…Áiq…Nq…Áiq…‹ts…Ns…šbs…A±u…Nu…šbu…A±u…Áiw…šbw…A±y…šby…A±{…šb{…A±}…šb}…A±…šb…A±…šb…A±‘…šb‘…A±“…šb•…šb¥…šb§…šb©…šb«…N­…šb¯…N±…šb³…Nµ…N·…šb¹…šb¹…A±»…šb½…šb¿…šbÁ…šbÃ…šbÅ…šbÇ…šbÉ…šbË…šbÍ…šbÏ…šbÑ…šbÓ…NÕ…N×…šbÙ…NÛ…šbÝ…Nß…šbá…šbã…šbå…Nç…šbé…A±ë…šbí…šbï…šbñ…šbó…šb†šb †šb †šbA†NC†NE†NG†NI†NK†NM†NO†NQ†NS†NU†NW†NY†N[†N]†N_†N_†Þma†Na†Þmc†Ne†Ng†Ni†Nk†Nm†šbo†Nq†Ns†Ns†Þmu†Nu†Þmw†Ny†N{†N{†Þm}†N}†Þm}†Ái†N†Þm†Nƒ†N…†N‡†N‡†Þm‰†N‰†Þm‹†N†N†N‘†N“†N“†Ég•†N•†Þm—†N—†Þm™†N›†N†NŸ†N¡†šb¡†A±£†šb£†A±¥†N§†N©†[¼©†±©† ±«†ð²«†§»«†Þm­†N­†Þm¯†N¯†Þm±†N³†N³†Þmµ†Nµ†Þmµ†Ái·†N·†šb¹†šb¹†N»†Þm»†N½†N½†Ái¿†NÁ†NÆNņNdžNɆNɆÞmˆNˆÞm‡3^‡3^‡3^‹‡šbµ‡N·‡Nׇšb뇚bñ‡A±ó‡šbõ‡šb÷‡šb÷‡A±ˆA±ˆA±ˆÁi#ˆ‹t%ˆ‹t%ˆt'ˆ‹t+ˆšb/ˆN7ˆN9ˆN;ˆN=ˆNɉšbŠNŠNŠšbŠ(cŠšbŠ(c!ŠN!ŠÊcÿ_#ˆ`+a¾ ÿ_3b9ÚbA·cCaIˆ`OÂdU[e[fa©fgDgmÊgsNhyçh‚i…ÿ_‹a‘ïj—Nh¿wlËýlÍýl¼ ýlÙ¯mÙµoat#at%at-atЇuEXvG€vE„vI€vK€v‡atƒat…atæyÙ}{ãö{at} }~Ù°~ª…atK<²…atÆ…at´…at¶…at¸…_Î…atÂ…at¼…atº…atÊ…atÈ…atÄ…atæ…atÞ…atà…at¾…atê…atî…at]atò…atËá€ì…atâ…atÙÐL…#‚M‚P…#‚d…f‚f…#‚Z…#‚h…#‚n…f‚r…f‚t… ƒ'ƒb…#‚j…Žƒ—ƒl…f‚V…#‚H…#‚`…#‚^…#‚R…#‚v…#‚x…#‚z…#‚~…#‚]}€…#‚Ëk…§~­Ñ…GÑ…IÑ…$†KÑ…#$†%$†ƒÿ_ÿ_ÅaGˆIˆKˆK#ˆßýlßâˆßY‰ßú‰ýlß‹ßR‹ƒ­‹EýlÙbŒGatG•ŒIatI•ŒKatK•Œ/u7}9}A€vE}G}Q#‚Aat…æyUæyªFf‚7ýlcâˆg;’c;’q;’ýlƒæy‡S”qw”‘Ò”•••w”/ß•/û•/–¬F#‚®FýlÅÊ—ƒæ—Ûýl•ýlű˜ƒýlcatÍŸ™Í®™ÿ_Íò™Í&š%ÿ_ 4š¸ ršÙÔšÍà›; œCmœDGHgP ýl ö{.#€vÙC£Ùâ¤Ù6¥Ù¸¥Gú¥G¦I¦Iú¥K¦K‡¦Ù‰¨ çª úªÙö«Ù!®K¯Ù3±K–± k³ÿö{ „´ Ò´ˆà´BLè´gñ´‘µ #µ”¶Ö¶Ù2·Ù´¸ÙºÙ‰»Ùú»Íd½+ÿ_^†4¾ [¿ ú¥ #ÀüÁ\†îÂgà´€†ŽÄV†ŽÄ…ŽÄ‘¡Är¬ÄsÆÆuÆwÆ}Æ JÌzÿ_z€v6„ÿ_„ÌìÄæÅͪ uÍ/ÐIŽÐI“ÐI™Ð ŽÐ “ÐÍüÐKŽÐK“ÐK™ÐÝ[¿Î¹Ñ΄´Îú¥Î#ÀÎyÒÎØÒÙøÓGÔIÔKÔÙéÕÙAÖV$ïÖV$uV$X×V$ØV$/Ø ÿ_ÿ_€vJö{èHAÝX„ÿ_‘a•ÿ_…ÿ_èHö{cße'ßèH:ß•Kßgtß‘„ßDGNáqÿ_qÿ_èHcáèHkáèH…áJÑ…ƒäèH¨ä¤°›å„ýlËÿ_ň惑æ ú¥ƒ´çÿÿ_ aë~€ö{†›å$†üÁðqÎðˆñèHWõËa€€x÷–@ø aø¢€ø¤¤ø¦Âøßx÷pKbù‚,ö{s#úó#úƒ#úJÿ_ ¦‘û‘`ü)–ü‘œüg¥ü•¥ü‘«ü)Ýü•Ýü‘êü•bù1ÿ_Eö{ßþÙvÿ­ú¥Kú¥Ùùÿqö{}¹À‰a‰n‰\cä‰pJÒ¡1™ƒÂq‡‘‘"ƒF‘O«)ϱ󱳃/ƒÏgÏcÏc U q  ~ ƒÔ ƒ™ƒ3 ß< %ö{‘K …ýlöσ#‰‰æ‰÷‰qσn‰ùg/‘“‰ ‰ƒUÔ qÔ cÔ ‰ï‰Y‰l‰‚ƒ ù Gg ‰ !‰p"‰(#ôatcÿ_îS%‘[%Í ù ­%ƒº%ù Ë%gØ%‘î%c™9 â'ƒâ'‘ç'•(c‘æ‘H)ƒÝ)B^*J…*c/Í–.û µ.†ÿ_‰Ù.³Ñ…‰ˆ/ Îð $†Ñ…@ýl‰53‰t3:4<4‰É4ƒp5gp5•5•p5ßö{•Ý)$)Q9pKÿ_¡ x÷$°Ä;€ì,=gã?q#ú‘@x 1@‘À@qÔ@‘ù@•#útƒýB$°atL„ÿ_ÃÄ;ÙMIT…*VöI1ã?‘ÕJg Kc2K6„GKcLKq †K‘ L{ M} ÿ_} …*‡ 8O‰ MO aO‘·O‘ÍO‘ÚOUP‘P¡ {P/2KÍmR aO‘¶TUÍT à´zýlxýl|õXG™ÐG“ÐGŽÐ‰©Z‰´ZÍÒ\K é\S s]g–ü‘¬^g `ÍbK 4b• üÁ™ üÁ‰ d‰)dÍZhÁ NhÉ …*|#‚X$[¿ šk[¿Í*n'OnV$„´V$ú¥V$#ÀÍtpApV$yÒÍÿ_‘oq‰NsoPP‘~u§ÿ_ÍÈu¹vZïj¡ < ŽÑðwËøwŽÑ%xŽÑMxgnxË™xS SyS `y~€x÷hæy)•zƒ¹z¡ ö{‘Ñ€gýlš ö{#½‚%Ü‚'…*cü‚) ƒgú„] …G …‘…ˆ†)†Zn†$)¥†7ÿ_Z‡Íq‰A›‰ƒ¥‰ …*‘ŠO Œ72K˸ŽS ÁŽ Å ÿ_1ÎðË‘‘‰š‘Ù<’Åó”ƒà´UX—ª ¼—ãX—Å‘‘ª ÿ_‡¨™…º™ º™7X—V!›ù]›V}›û]›ª Áª >¡Œ +£ Y£X,¤ƒ¼—g¼—i¼—‰²­‰_®‰÷®‰ѯ“‚±•¼—“<²• ¼—‘i´e¢´‰}¶“·‰-¹‰O¹‰Uº…¼—‘‘‘c¦¡ 𾆿Šýlˆýlª ¾ÀоÀÅ%Â5ÂÅ>Â)QÂÅY•5ÂÅq‘bÅglÅìÈÅgÆ mÆmÆ;ƈ`qX—ƒ$Éc$Éø/É‘hÊÅŸÊÍlÅ‘¼Ê)$ɱƒË±ÅË $É5`Ì7mƱ3Í OÍ5‘Íì$ɉàω|ЉѱÒú/Éð*Ó±:Óe_ÕŸR‹Ž ê֑娒 ÙÃàÚÃýlƒ¦Þ’ ¾Þ¨ ýlŒ Eࢠýl’ ˜àœ ýl‘Ëàg¦Þi¦Þ  ýl‘Áã’ ÞãÙ¿ä ê Nê’ #‚  at¨ at” atŒ ›ëŒ ìŒ žì‘¦í‘ðíœ at‘ î– atèîÃatŒ Šï˜ at• ðŒ Òð™ ðgð•ðŒ ÎôËAö“–ö‰ù¦ atŒ ”ù‘"ú‰(û‘îûiðƒðŪýåÓýš at¤ atƒÿ+OŒ aCIErŒ .ž at’ ƒàÚ’ ‰Œ x.#¦uï ‚#ö{ýlÙÑGÿIÿKÿÙöÙÃÑOýl#ýlZ$ö{#at‘Ç ÿ_:ÍH%ÿ_Ù®ÍÀ1ÓV†bù‘Æc#ú‘1 cÝü‘? ¡ M ƒf |&v |&f ,+v  +„ ,+f (+´ $+Ç (+ï +!+8!+8!+>!‘_!gÿ_‘f!‘m!‘v!)Ÿ!‘µ!‘â!uÏ#v&8!r&8!r&>!Œ$‰%z&v v&þ%ƒ¥ü„ƒ8!|ƒ8!vƒ8!±8!‘à) 0ù)‰=+`%¦b%,d%¦‰D-‰T- ;.‰J.~ƒD/O®/'ýl&ýl&ýl‘¤0+Î0‘17]1 &d1-Ç1gB2UM2 &x2OM2‘M3gx2OuÍæ3?ÿ_Í{4Eÿ_F&~5g•5H&ýlJ&€vg(‘6+(6g„6‘’67!7+*7 ýlUýlZ&ýliuƒu¡Ç8`&ýlB&“ÐV&“ÐgÇ8^&ýl7C;gJ;b&< <l&Ù<b&ç<‘˜à ýlO´>x&~5gº>Íñ>&?Í@?Ù@ÙÆ@ÙHCÙôFÙ0H&at&atÙbJ­wJ­“ÐGwJIwJÍbJKwJÙ±LÍPMÕÿ_årOçC;(&ugÞO‘P§Ç1g'P C;‘‡PC“ÐÙQÙZRÍÉRAãRÍS 4SÙEWn+mWn+€vn+xW‘ÉY-!7*OZ‡Ñ[aC;imW…at§€v^&at`&atËatË}Õ…*˃_Ëœ_+ÿ_"+‡`&+ÿ_*+[a(+aËûaËb brƒûaT+ÿ_X+ÿ_ÍÆc5ÿ_ußihߘhß·hßÞhc¥iƒ¥iÿ_\,Pj)¥i‘j~€< ~€©kÓÄk~€ökAlgÓl^„fm«±mXL#pPLuJuJ7pÔ+ö{ö{X„u‘+{¶‡&š¶‡üÐÍ‚|¶‡ÿ_¶‡mR1C}‘K}gT}‘\}aÿ_¶‡H¶‡¾Æ¶‡mwïj¶‡¬bË€c.€•.€U.€Uÿ¡ ê„…¡ .…Äk¡ y…;—…¡ w†CÄk¡ ©†5ö{¡ ¤‡C¸‡ €v¡aI¸ˆKáˆK¸ˆ‘œ‰g©‰‘³‰Jö‰‘‡Š1–ücX—‘$‘1‘˜J×…ë¡ó‡…¦¡®‡ÉDGb‘Ër‘Ëz‘J‚‘±ß‘±’€ì‚‘J,=‘´’eÅ’eÖ’J6“¤°ýlê/ˆ“ê/›å ë“ (”ãÿ_å”–”å²”rGÿtGé•‘–g–gÙ–÷ýl•‰—•¨îgG˜gÙgQ˜0q™0q™0ö{ 0Ýü‘ šgµšåb›„ƒýBvƒýBg @+l)ýl^„Fžg¥iEx÷'mÆ•¥ie<¡60N¡/ÿ_gc¡E< •õ¡±ÿ_L0ÿ±ã¤E(¥E.¥E4¥EE¥EU¥E[¥Ea¥Eg¥Em¥Es¥Ey¥E¥E…¥E²¥KÉ¥EÒ¥E⥑;¦‘D¦af¦Ù÷¦Ùu©ÙÉ©Ù*ªÙ¬Ùœ¬KάÙ_­G¸ˆG7pGaëIaëI7pJú¥X„¥üc¥üJúµKcáKaëK"¶K3¶K5ÂKC}K7pKL·ͬ·Ïÿ_JÍ·l6⷇ߑ ¹g;¹‘L¹ÛÝüƒÝü¡ºl6€v‡ »C'»Å3»ãT»ws»w…»ïs»Ñ»±é•wT»±T»‘¼‘¼ OÝüƒW¿‘p¿O–ü;s»1´çÌ/u‰íÂÐ/u‰÷ÉÄE*Ç™kÇËuÇ~€ÆÇŸö{~€UÈ¥kÇ~€˜h±–ȱ£È‘Êaºc–üc3Ê –üq–ü  ÙVÍÙ·Î7ë“7(”cÑÏcáÏJáÏ‘=ÐååÐéÑ…ëÑ…åÑåÿ_³0Ñ ˜ÒŦ҃¸ÒÍÓÏÓJ+Ô1áÏ…*1­‹‘8Õ³PÕe\ÖƒeÖ)eÖ‘yÖ)­‹-ö{•­‹/²”J e}؃’Ø‘ Ù•8Ù1/Æ8ýlÈ8ýlJéÙ‘ÉÚ«ãÚ±ÛJÑÏJÍÜ‘ÁÝ•ÓÝgÕÞ âÞ7¥ßJâúFˆ-ˆÇM‰ŒäÂ8at 2榰›å¦°ˆ“a2æ ÿ_å0Ñ‘k葌èÊ8áèJé艒éWíéiatiö{ü/atgYëg¡ëÙaíÙéîGPÕGýîGïIïIýîIPÕKïKýîKPÕ„ƒÛñ°Ûñ~ƒ”ó~ƒÂõ~ƒ.÷ˆƒýB~ƒúøÙwùÙžúÙÙÚ atK ÿ_40ÿ_gÏ‘ÞS ö{U ö{‘¡)º•ºcbùgbùx åx ºU„ ‘‘ …ºÙ3 …Ýü‘$ c„ ð„Ä g2K‘³‘ÇA 'I1R‘5¢€ÿ_t„CF„–‘ó”'\‘ægòë •ë Ð7\+h³«O€$„ò‘ÒJûÍAANh!Ò«xJ€J«g2 Í= +2 gÜ Íæ g !gZ!+æ +Ü +ý!C!}{h>ýll>ýln>ýlgÔ"ƒÝ# ç#‘ò#z>Z$|>¦•þ$x>%‘'i!ö{‡~')Ò'‘é'‘(y!š)1c+)c+ˆ>$†±.ˆ>â·•.Ëh2ƒ<5º2K„2K‘º6g•7!7Û!. .-.ˆ>.7•7!š=˜>ö{‡æ‚LP@€Lb@„„@+#p$„.ð».$„<51<5"þ@±A‘Aq.‘ Að»€vgF+;F͈J9"ÿ_gš)‘ìJ+BLJôL‘NMU2KtGSOO"†eJQ1WQiiQiQ)Rcò‘˜RcÒË‚S)p5‡#Vƒ¨W«rXežX‘¯Xc<5‘§Z¢€p5‘ÉZ³,]‘Ö]‘þ] .€‘6`¡ ?`Ã"v` `…®a…p5+¢b…Tc‘ýccTcx?¶lt?¾l!Òm šq‘‰uU”uJšu¡ òuU5Â+v v‘v[#Txgc+‘ò|¤€p5gÿ|gÎðJ0cî‚‘û‚¡ ƒ‘Pƒ^„|ƒ‘P…J¤‡>¾‡cp5J݇*„Tcgþ‡‘ˆ•c+O.^„Ë•ð^„ ’•u…<5…u!’’J°’‘¢“‘ä”Oý”¡ •‘‡•ƒЕ•{–•Ï–3$d—’˜h>º˜ƒš)JVšJëš™ n @<5S$.€‘Ëg ò)n)þ$)fžƒnž¡vža$/1•7ƒ“žƒd—ƒþ$cncþ$³¸ž³Äž•d—1.€ƒ)¢@„K¢â=<56„ù)eh¥‘ѧaã§ ã§G©©I©©K©©Ùç©Ù««g‘¬Ù­Ù^­Ùó¯Ùà³Ùþ´G¼¶G̶I̶I¼¶K̶K¼¶Ù>·Ù¸å«C!¬»h>atn>atp>atj>atn>º˜‰4½ÙÔ½Ks¾K¾V†nV†d—cd—V†fžcfž•%d—†ngFÀx>ÅÀ‰öÀÛp5•ƒ Ã »Ã‘×ù{ĉoʼn!ÇÍÉ-&a•š)O´ÉƆfÊc…Êë ìJV†fÊV†ËÙ›ÌK/ÍKš)‘7Ð~€·ÑÏÑ·&ö{Û!•z^„:Ø•y؉Øà‰Þâ‰øâ‰Gã *åŒ?¦Op5Ë~ègáéqu™ /• /T„áï‘4ð‰WðP>ÿ_(Äò˜‚.€‰Põ‰]õ‰i÷ƒÎðË ù‰­ùä=“ž‰Ñû‰[þ• ng“ž‘‚þÅ“ä=•7‰ÿgS]Ô Ôå"‘BLJ.cu-¶l Ñ )Ñ ‘Û ±è ±ï 1ú ƒë‡#pc#pa#pOú  ¶l¡ ‚g   ¶l).+ÛtJýl1)aÊM÷ÊMÊM‚t„Vò€Êš šÊMýcÊMÊ‘Â+‚S‘ò€‚JÕ ÄÑÛ ÙÏ"­atKÄ#tJat‘„%Ù &G•'G¨'I¨'I•'¢€ò¢€Ö'‘(‘!(K¨'K•'‰e(E÷(ö€‚‘j*ÊMr+±‚ p5ô€‚ø€‚±{+cc+vJ†/+/0vJæ—±¬0‘ž1qc+ˆJ.‘Òmc.t„º4xJÛ4t„5t„?5+‡5t„¶5J×5t„.:ØKO:ÐK.t„€=Ê„¡=t„†?t„AÙAC‘D$„êD‘EcêDhK©FgõIrJJ6MÕ ‘K1VKg…KˆJýlg L>M€vgÅL>M.Õ*JDMÕ ì€rN"¿J4¿Jë*J…Õ gÕ GaGÈRGâRIâRIÈRIaKPSKâRKÈRKuSKa‘‚UgžU‘LWÊM˜X)p5ð€YgY‘'Yò€ýcÊMÒmJ„p5ò„[¬L*[ò„3[±&\¡ m\‘º\‘ê\t„¢]« A)`¡ y`±˜`*„2K¡ Db‘_b±ub(„êD¡ ðb«cd„ÈcüMCdgXd¡ Me‘îe(„Èc(„%fN¬gð€¿gò€ôg‡±h«/0…c+¡ ¤k*„êD¡ l)êD¡ /l)c+4¿ÿm¯+ÿmÙanK`Ùp‘‚‡Âq¡ sðM#‚‘@t"¿a2¿a',a­w­a­+wgpygšy7,ÿm9,ýl,Oÿmgwz*O."¿ÿmÙ:}­0G+wGwG0I0IwI+wK0KwK+w͹k,‚ §‚‘­‚¢O›å Oƒ­aë;§‚,Ý„,ƒÅ …à‚"…³3…™ ƒ•ƒÞOÿ_àOýlæOÿ_è‚ö†Í‡‘W‡!g‡gp‡…§1§……êÖ‘w«ñ4Pýl6PýlPýlBPýl;•7;.‘î‚"…sƒÅŠ’1p51òg˜«˜1.1š)….JSOŒPbÅ).Ã"Èœ«ãœ-0¥O¶lW-\¥Ë®©‘ ª4P§‚DPs­-ì­DP›®6P§‚‘‚U¯q¯g»7Ù–g…QìUtìUÀJ+ ìUýlgÿ ‘$ß01$!‚SVýlVýl‘8(1I()I(‘U(•2KJnxcš)F„àÚet/HL‚4Vnx)nx1nx4V¾4‘›<)¬<‘¸<[1àÚ)j=…àÚ•€>•ˆ>•ëÿ@NL%B••C‘“D‘œD‘§Dg´D¡ E«"EË)I‡1ÉI V¦JòL^„N‘äNcO‘OƒšJ>PƒOP ”S‘{T1IV^„¢XJüXc–Z^„£Zg5[JýlÔV€vÔVØ\J€v‘)^ãZ^Z^2Z^ƒZ^‘–^ _‡_g/_;_ë h_J¨_*„ò(„2KJ¾b•¶ehU¶ecXf^„efJàÚ(„¦L„¦gµi‘µiJOj[j [jƒ[jJÓm üm-n‘ n Vn6„[j‚…ÿ_‘On‚…[jêU[j‘§n^„½nnGÓmcyr^„†rnGö{«2bv^„pvJ—xhUàÚ‘¿x^„Ùx)àÚ‘éx â·‘òx $†¿22KÁ2y‘+ynGIynG—x(W—x^„oyôU¤yôUÅyã2.‚…àÚJ2K š)7në24-G‘Ua$àÚcàÚJž€R ú¥‘-)¦J:+d’Œà´‘%ƒ)⃒‚.€ƒY„^„m„‘Єc⃕•7‘ñ„+ÿ„‘…‘…•“‘*…JP†‘]†–(n†cv†gŒ‡@WýlJ„‰XX€vÌ‚nJÍŠ‘¡ A^„{‘§^„ÈU)‘J[‘-‰‘•”‘‘’Jñ—ƒ˜êUk˜e嘹3.(ª…*7•zOÿ_O®º‘N¼‘‹¼‘ͼL„àÚ²W£ÄJk˜‡üÆ¿4àÚ‘jÍeÒCÐÒÅîÒù 7ÓJxÕ^„‹ÕèW.‘‘Ü•nx‘¤Ü‡±Ü«ÒmË—ãa$.U€vg-UÖ䑸æ‘ÙægU(cÐç<‘.ƒŸè„„±Ü~„¦é‘Ãé‘öé‘SòƒmòcmòJòg©ò‘ó«>ó)àÚ)ºó)äó‘ô‘=ô)ùô~„õ~„"õ~„Nõ~„põ~„Ëõ‘Ðç‘ËõtG…*~„‘ö~„Ïö‘[÷‘‡÷|„È÷ ©òJŸè±oø±Šø±¥øÿÍTUI(†„¹ø„Áø¡ Ðø‘ù^„ù‘Æù«ìù«0ú‘búc}ú Œú•}ú‘0úgèú+D€„m€„m•›‘*96VÆ„ÙxÌ‚U‘³ c6¡º6„X—”Œ¾b’Œ¾b‘ØJÎð‘ì±BL±€‘¹+^„1±Nå¨'gY…{–gQfLnx‘úJ‘sgÍT•ÍT‘€¢U\U] XX\"dX2KJã"J,%jX‡%lX¡%ƒI)^„X)«Ÿ))Û)^U] ‘D/åO/qW/cW/g0±I0‘T0¡ c0)ò‘™0c¤0˜tòºU] ‘6‘&6a46g;6 c6‘j6+y6‘Ž6‘—6˜t˜7^„ 7Û!ýlJð8^„y9’Œý:gX—•X—•;1;±f;e<•{<‘<•0âÞ~ƒ+=„ƒ£Ä„ƒ>„ƒa>J?„ƒ?„ƒè@„ƒ°A„ƒBgÞBcÎð5„ƒ.F„ƒÄFEBGEËGEUHE~HEÎHEÔHEäHEêHEðHEöHEüHEIEIEIEIEHIÙƒIÙ%QJ[QvUnxÙ¡UÙVÙVÙòVÙWÙ²WÙTYÙ÷YÙµZÙ<[Ù—\Ùµ^NL˜evadLõag“èUatJÍbÙédÙ:eÙåeÙvfÙCgÙvgÙh12KÙ~jÙšmÙ©oÙøoÙGpÙ›pÙjqÙ×qÙPrÙ§rÙ%sÙÊsÙctÙ°tÙuuÆUæyƒ¾‡c!w‘.w‰ÅxOX—g{} €vL„{JA| n‘~+b•0ÚÚõ9.U5:•7J•7‰í…1⃉n‰>W ŠgÙŠBWc‹ƒÌŽ«ߎ‘‘‘/‘?‘M‘d>„ˆ‘¯cò^„¡ ƒJΓ‘ •”‚·˜¡‰¿˜ƒ€>‰±›(ªÿ_/…*ƒ®ºÍ{ C;¢J‘¤Jat‚…ùôgùô‰¦­‘³®„õ°JȱUI(‘|¶JXatJX2KPXatPX2K„˜Jõ»Ã2K¥<üÀRLò˱ÄEzÅÛ!atEƒÆ•ÿJȑɢX¦¡ )É)[Éc[ÉÙgÊÙÖÊg†•†J†+‰‘~ƒ]ÌU†°£Äˆƒ£Ä€ƒ¹Í~ƒ^άX] °>ªX] ~ƒÏc{–~ƒøÓ°?~ƒÕˆƒ?…pÙU¨î~ƒÚc°Û+3Ü+iÜ~ƒ™Ý°°A~ƒPß–Gö{•WQÖXPÕq°ÛnGdãnG…*ƒ¨î~ƒ+儃ö{ˆƒö{°ÄFƒ‰—~ƒêæ‘Eçg:èF„ÿg6eÕêeâêeøêeëe$ëgÿ±:ëcÿcQë1ÿ¡rëcƒë‘oí«í)Óí)ëíc~ïc‰ïq ˜ï±Ãïepñe}ñe“ñe²ñe¿ñgÕñ1ÕñcÓícÕñc,ò‘2ô«\ô),ò^„NõzlÿgÖþiÖþƒÖþnmñÿnmöÿJ å>M ¸Òé>§ë>§³ûé>Mé>ÿ_ö{‚mQÂq ‚B„µÿ2KNL‚S‘q ’X•7ƒ•7c•7‘‘ ƒ.€NL… +³±(1Œ„‚S+M!‘‡/q8‘‘¡ QB„Q¨m] ¡ e²o¦¸o¦q ‚‘§c¾ Ò‘ç«‰ï™ Öþ“““ • Öþ•Öþ“VZL˜““+J@Kf^„¥‘ᕃëcÖþ•Öþ‰K!‰X!JH%J5JÅ%‡q ‘Ñ%Ë … Ã)¡ Ô*a+ƒ …/ …°oýl¶oýl‰i-)ã. ã.1º/)›^„‡3…Û)^„¬4‘¾5aÌ5^„6‘˜6«²6)î6ƒòƒ2KtpnÙÍ9ÙÓ<ÙE=Ù@Ùw@ÙðB‰QCJáCS Dƒ%DcÛ)p„ÂF1›…%D‰’Glp^HAáC1%Dã%D2%DJIK‘™L«±LgÙL+ÙL^„HO^„SQ1ÈQ‰:R(„ò1BSqBSgBSewSƒ€S~rncî6‘ÞS‰µU‰ÂU‰®V‰ÛV‰æV‘*WåDW~„7Yc\Ygû\‘]«.]gha‘{+^„©ag 4b)ÒbcÒbqÒb+cÙ°gÙZjJ§lËÒm‰ÚpÙÙqgVtƒÒb^„–x‰‰z •{t] ‡ˆ}‘Í~’X.‘‘‚Jo€JÝ€J[jJ½c³‚JJƒO„g*†g^†qòqWQgWQ±‚S‘¹ˆ±„@bLò±Ɖq–Œ1–Œ7”SEjŽéBœŽ‘g‡g"ÿÑ5:p5gä‘‘Ê’„‚“¡™“•>”  š•4›•<›ƒ3œCWœÅiœs–œÅ¬œg3œ•Îðz„¾‡ÿ€ƒnxunx nxuÍT1ÍT•.‘z„RR I(7Ç¥NL‚Ùþ¨|‚.«PL2K‰¬¡]­$ª…*L„3œó3œ‰9¯7T°å‚gµ³€€.…(„.ÇCø³¡ ´€€b´‘z´ËCÄk).ÍÇ´‘$µ‘^µgkµ‘vµcƒµ6„l¼‘"½‘µ³†òÐx¦‘¿+µ¿Dê¿V†òV†.ÙvÃgõÄEÅE#Å3D.æy³Çz„p5èy³Çÿp5z5…òÙÍæyat‘™Íƒ¼ÍW5‡Îƒ²Î7ÎgºÎ ú„w.€'%Ñ'9чŸÑ+©Ñ'IÒiDñÒ'Ó±xÓgýÓgLÔ ¼ÍgíÔ' ÕgíÕ †B{†7»ÖÞ‚ØÖÞ‚×Ô‚¸Že~è§.€+íÕ+ÿ k,eØDI(cýlX{\{õXZ{‘õXËÛf{†a$†‘ŒÜƒ†€€< öFMf{5)ÍT¯Da߃sß „߯D„ßósßJá\{;á\{8âcnxŒ{ýlŽ{áèŒèã±mä”{áäcÍTfLyåe屿œ{æßDÿ_\{ê^{£êX{ËêZ{ËêJåê\{€ì`{Ëê’ŒËê\{ü푣î\{ØîƒËꑆð^{ÕðŠ{ËêJ€ò¼{X—Jà´\{Æ÷`{sßJå÷Ô{¥ø’Œsß\{£îZ{sßJùŠ{éùŒþùX{sߌ«úŒ[üJ_ýŒ¨ýX{þZ{þ`{þŠ{þJ¤ º žL¤ fL“’Œþ(„X—ì{X—6ªýl:ªýl|ýl|ýl|ýl »Ö± gV ‘^ –‚nxg¼Í‘ô g g  ‘ ‘ g+ ‘7 ‘H )ÿ_‘_ ‘l ‘y 7† ]E† ‘¬ cà´±^ ±é ±l ±y ±_ ,p5,5Ò‚âÞg5kEe ƒ5ev |¦± g.€‘Œ ‘™ ‘¦ Ì‚Îg²Î‘³ Ì‚âÞ‘À ‘ ‘Í )à´|à´kEÛe¸ŽÌ‚6 ˜‚†±À (|ýl±§ ±{ “› ź ‰a ‰  Ùû Ù„ Ùò 7º 76 Ù³# +;$ €Ñ†7 & –‚“Ù( •0”SÙÌ( Ù.) ÙŸ* Ù+ ‰*, ‰,- ‰9- ‘µ- ‘Â- Gh. Ih. Kh. +÷. Ù0 •20 ‰ü1 CFÛ2 •yåΠý”š{#‚Eô4 Ù(5 Ž{Î5 E: ÙC: Ô{at)sße§= Ù? ÙŠ? |at|¦‰}B Fª¦áF…*|at|at |at|¦ |¦|¦(|°G ­ÍH MG+I ÍH MGNI MG”I ¸ˆOiQ)kJ ‘|J …2KMG³J Ë#pMG K ¢„iQ¤„iQ¦„iQÙŒL GÍH IÍH KÍH ‘ŒN ‘®O e+Q „GÝR ‚G‡S qÝR )T cÝR )ÝR ‘T ‘&T c‘øT gÝR XL˜t…¦J’[ ‘·‘—] ª…«] ‚GË] eè^ ‚G»_ )2K„Ê` ÝGMJÑ‘üb U c q c gc e„@a$2K•hd šGhd „Gò”G‚S„G2K\L‚S’GWQ…WQ”G„@<†ýl<†*„õ°H†õX‘ n #Hÿ_q‡o J†õX)‡o L†õXŒ…ýlR†2KYHu¡ ¿r ¡ Ír )u1uV†õXX†õXZ†õXe_t ‘¬t ‘Ìt P†€vgŸèN†v 1Ÿè¬…)v e:v P†.6†.€Gýlh†ö{¡ | <„.‚G~~ –G…*E € E¸€ Ù÷‚ Ùx„ •˜„ Ùñ„ ÏH8† ª…›† €G}E‡ ‚G:‰ „GWQ6„2KBª€vq2KfL2K‚G? š æybLnxšGò1hd ”GN” EI’[ „G • ŽG~• „G– „G"— ‘™— YH’[ „GE˜ ŽGõ°‘¦˜ J¥ø‘7™ )JæyF†Ï™ D†.5J…*?Jo› \†BL)o› ª…’[ B†.oJ.qJ¤ ‡NMe4¥ Ål¥ i€¥ •€¥ Å„¥ i˜¥ •˜¥ Åœ¥ •uÅ¥¥ i …• …Ź¥ i$†ÅÍ¥ iâ·Åᥠiõ¥ Åù¥ i ¦ Ŧ WàCÿ_¡ ¶¦ Cà±²§ gBL1¿§ ±J« ¾Œ*« …ëÊŒýlJ@S$ë+¯­ +À­ ‘V® 1¡® ‘bÊŒ.¾Œs³ p„»µ 1¶ ‘· J· g'· ‡ޏ O¶ ìŒ.ꌺ º ùJº Ãu Kß¾ ‘õ¾ Ã"¿ ±¿ cX¿ +W Û!þà þà ‡+Ä )'· c'· ΃uF„þà cþà 1þà ±AÇ GHÈ EUÈ IHÈ KHÈ E]È ÙŠÈ Ù4Ê ÙéÑ ÙzÒ Ù‡Ó ÙlÔ Ùä× EöØ 2K 2K1¼ÍeÞÚ ëÚ ÙÛÛ ÙXÜ Ù·Ü ÙhÞ šŒò±kà ³Kº ôŒatöŒuôŒu±‘é ‘ýlg\í K0‚SJÂñ D¦ò „„ ô ¡ éô ‘dõ ±Áõ ±ö ±…ö eNø  2KELUú GLÿ_ILMåˆû [L¢ü P‘2K‘ÂqJþ ÙÙÿ ‘atÙZ Ùî Ù( Ùþ E Ùˆ Ù Ù{ Ùí Ù× Ù" Ù& Ùq 1E˜ ¡Ä ¡ß )E˜ ±Ä )v ¡ö )õ°%MI(gõ°$„õ°‘š L„õ°6„õ°$„ • e. gv .„^ d”.ÍMç ÓM.”uÕMÿ_×MÖ ×M÷ r”  ßM² ßMº ×M ãMÚ ×M6 ×MM×MM íM õMº  ‘ • ×Mƒ! ùMá! ×M $ ×M!$ N^$ NÍ$ ×Mk& Nœ& Nu×M( ×M( #N]( )N² .×Mú) ×Mº ×M* 5Nv* ×M, ?NO, ENMöF² J  IN=. ON%xƒ.QNÿ_QN…*QNº SNM[Nù0 ÝG%xcN² gN…*iNM±2KƒZ4 •Z4 yNMOë !6 é>º   N² #e9 ‰¼9 Åó: #; ‰n; ]º º ‰G ‰×H º ~„NI ~„ˆJK JM ‘>O ‘“O K0õO 1 P ”‚ìP 1ìP gìP ¢‚ìP •·˜‡T ‘;T dL‚SƒÇT ‘V c¯V ‘W ‘,W gBW g·˜‰ [ ZL‚Sg$\ ‰Ù] ‘þ^ ƒ·˜ƒìP ¢‚·˜™ ÇT ‰0_ ‰=_ )` ‰ó` ƒ` ‰×a :„Îð…Îð‘pd 䂹d ä‚Çd +e +e ‘¬e gº/‘nf Ò—…f $„šK0ng ¡ ƒg Ò—ýl ¿h Ø—…f H%K0,j Ô‚…ä‚#k Ô‚àk ä‚ l ä— m K0m „,m ê— m è—Am „:p „Gp )WQPGö{(„¾‡Ò—atK0vr „Õs e‘^u )…*.„ƒu 6„.‘£y ‡£y ‘ˆ} q™} ‘Ò} ‡ô‚ ÞšýlàšæyâšæyÞšæyïP—‡ ÷P[‰ ûP4‹ ÷PO‹ ýP.Кp5Äš‚Ôšp5Èšp5Ìšp5).¡ o˜ ‘ ™ 1Ï–1{–‘È™ ‘Ò™ ‘ñ™ )–‘LK‘Dœ 6 L BL‘ܱV ‘w ‘ ‘§ c¿ Ò ‘ï ‘ž cGK‘$Ÿ ‘‚Ÿ ‘–Ÿ ‘ Ÿ ~„H  7¡ ‘×¢ ‰¢£ 6 ¤ )¹øÛ!P•P$„2KÛ!¹ø6„•z‘‚S‘„@)¬ ‘c­ ‘ ® fLþ® ±¯ :° u° òuôuqT ‘o± ‘~± ‘«³ ‘Ƴ ‘ѳ +ѳ ±B´ ±ò´ gþ® ‡g‡‘ã· ‘ ¸ òatôat‘³¼ ‘½ ‘²½ ±aq|¾ ‘¾ ‘ɾ …GK(„GK‘'¿ 7GK‘Ë¿ 6„<5gn ý 6 à gd—‘à gþ$‘à gfž‘.à ‘8à BLOà ±bà c‰Ã ˜Ã ‘­Ã 'Ä ‘0Ä \Æ 6 tÆ gѳ oGKƒGKeRgRM‘ÄÈ K …P ýl+IÊ +žÊ -IÊ {RýlR ýlR ö{R …*R ‘Î c P !˜~„·O~„sÏ E"Ð E&Ð E…*EiQE€¥ E$†E˜¥ Eâ·EuEõ¥ E …E ¦ …R%xöF%x‰Rÿ_JÏÐ ßD…*Ž ðwËàk GL…*•RtÕ „õO ^„4Ù ”‚.€e !œ‚ !å>tÕ ‘¯Û Ê nxå>ðwé>ðwöFðwÅjÜ ƒÍT‘|Ü Ê €ve%B‘ºÝ 7qÞ à ýlÜ }{…½ß ä ýlæ ýl½R…*‘ná â ýlè ýlî nxî ÍTè nx)nxè ÍT)ÍTJI(Ù°æ P atÙÀè Ùµé Ùê Ùbë Ùßì ÙÔí q & ‘rî ‘žî U & Ù®ñ GLŽÐ‘Êò GLu‘{õ ~„Pƒùô~„¡ö ƒR~„‘ J` ¡ ù ÙÂü cSMeSÿ_eS…*eS€vÙxÿ ÙÚÿ ÙD OÔ‘i Ùp SMßDußDŽÐSMO} ú¥‰ Ù_ Ew Ùë SMŸSŽÐŸSÿ_Ž Mx‰ÿ } € ¡ \ ÙE Ù½ E¯ E· JÛ ÕS:wtÕ ÝS%x‰U ‰¨ Ù¡ š¨ƒ ˜¨‹ ˜¨® ˜¨Ñ ˜¨ë ˜¨ ˜¨ ˜¨5 é>% öF% ƒ  ‘- é>MxöFMxƒ ƒV R t R Ã R  R = R ˜ R Ð ]ú¥¨¥øå>% ‰«# å>Mx‰p$ ‰ù$ c  c †¨ã% cV †¨& å>B( áT%x‰i( Ùç( ”‚at+) –‚atÿT…*”‚})}U…*1atê atì atgatÙ°+ é>ã+ [Uö+ ILã+ &ªR‹$ªÿ_[U…*Sã+ cSã+ &ªl2 &ªaëS 4 S T4 6ª¦:ª¦1¬ )ÏeS\8 GL\8 ßDh: /\8 JO; Jíé ÿ_ÙUº< ˆ±<5cþ]g$= ‘5= ¡ †> áUtÕ gNu}"? gNÿ_áUB( çU…*ONM}>? ‘M@ !Ö]ƒWõƒêÖåPÕ~«ñC c5‚«ýl‘@E „«…E åüE ƒPÕƒvG 5VMO‘ÕJ ‰ K {Vat‰ßL ‚«at³üE åÏJüE ‰Q ‰Q ‰:R ‰RR a¥ßES %ö{ƒiQãiQDT ãiQ2iQC¶U 1¾V h„¾V þV …˜„ Ù1Z Í”Z %Wÿ_Ù·e Ùf ­¶U G¶U E§f I¶U K¶U ‰\g ¶U •·h Ž­at¯ö{ƒWö{Wö{#ýl¡Wýlb°ÿ_b°íéb°Ã ·WR ·Wÿ_·W …·WÀ ·WuÀ R d°ÿ_d°À d°R d°uãWö{ëWö{íWö{ïWö{õWÒ„ õWß„ õWì„ l°ÿ_l°À l°R l°už°€… íéXö{Xö{!Xö{#Xö{EXö{IXö{l°<5 <5ÍE YXì ±Ù–”±Ù–f°ÿ_f°2Kp°ÿ_p°2KiXö{kXö{mXö{oXö{¢±5š ^°5š Xö{‘Xö{\°5š `°5š f°X— \Yd°\Y—Xö{ šd°š™Xö{p°X—l°\Y \Yl°šf°”¡ ŸXö{p°”¡ .‘ .‘d°.‘©Xö{«Xö{ ¬ d°¬ ­Xö{¯Xö{ •7 •7d°•7±Xö{³Xö{f°µ¥ f°¬ h°PÕµXö{V†@§ g@§ ‘M§ ·Xö{¹Xö{»Xö{½Xö{¿Xö{ÁXö{\°ª ÃXö{ÅXö{ÇXö{ÍXö{ÏXö{\°[® ÑXö{ÓXö{…Ïl°.‘l°¬ ¬ p°àl°•7r°PÕp°.€‘· ¤‚.€`°ª `°[® ©Yö{«Yö{­Yö{¯Yö{ÃYö{d°â·ÅYö{l°š)l°â·ËYö{ÍYö{ €>d°€>ÏYö{ ˆ>d°ˆ>ÑYö{l°êD êDl°€> €>l°ˆ> ˆ>•íéWZö{YZö{oZö{‘Zö{³at u uf°Ñ…f°—Ö f°ôÖ p°Ñ…p°—Ö p°ôÖ f°uM[ö{ |¾ d°|¾ W[ö{[[ö{ <5d°<5_[ö{p°ul°|¾ |¾ æyd°æy©[ö{]E#‚¯[ö{l°æy æya#‚¢±ª ^°ª 2Kd°2KÓ[ö{¢±[® l°2K^°[® l°.€ .€f°H%f°Ñp°H%p°Ñ WQd°WQù[ö{n°WQ WQ òd°ò\ö{l°ò òb°2K ¾‡d°¾‡\ö{l°¾‡ ¾‡ –d°–/\ö{l°– – .€d°.€=\ö{f°àf°Æä f°.€f°îå ™æ d°™æ [\ö{ º/d°º/a\ö{ <›d°<›q\ö{ 4›d°4›w\ö{ ` d°` }\ö{f°ý”f°€ p5d°p5\ö{ 5d°5•\ö{™\ö{b°µ¥ p°µ¥ p°¬ p°Æä p°îå l°™æ ™æ l°º/ º/l°<› <›l°4› 4›l°` ` p°ý”p°€l°p5 p5l°5 5 ëd°ë ]ö{f°@l°ë ëp°@ š)d°š)!]ö{f°p5+]ö{-]ö{/]ö{1]ö{p°p5 Rd°R?]ö{ õó d°õó C]ö{ êDd°êDG]ö{l°R Rl°õó õó c+d°c+_]ö{ >”d°>”g]ö{d°.k]ö{ Îðd°Îðq]ö{l°c+ c+l°>” >”l°.l°Îð Îð]ö{•Æ •ë j°2Kj°4 t°2Kt°4 t°.j°.j°[ j°¢ j°þ j° j°êDt°[ t°¢ t°þ t° t°êDd°¶ll°¶lº2KMGv ‚LÒ€L› 2„2KeÎ ¡  .ºÒ‘,m 7d 1ÝR 1T 1†+“ +T +&T ‚ºýlMG' `L‚S`LÎ )òc†+8(âÞc–2»ÿ_+¬! J " gŒN ì»ýl컡 * )•7+P0 +x0 -Ý0 -ê0 ¼_1 +2 g™2 +™2 gï2 Ì„F3 PLò+À3 J∼¼ô7 Jª8 L„•zJ; q¡é\¡ä= ¡¡> H½æyJ½æy­ÞB ­õB ­ C ‘ŒC ‘^ìC +ùC |‚²D +YE +F ±G +4G +´G +3H +õI +J Ÿ^êÖž½L £^…*ž½cL ¥^…*ž½¬L §^…*¨½ýlª½êDª½ÜM +¦O +ôO -P -IP +žQ +øQ Ú½7R -¦O +¸R -BT -OT ‘^ëT +'U +ŠU +…K+ïU tY cîe‡„Y DÇ[ Dÿ[ ‘:p ‘Gp ‘ng Ëe] Ër] łŅ ‘U_ Æ„b_ ‘š_ ‘§_ 2„.‘’d ËŸd ¡ Çe ^„Lf ‘,j ‘m ‘%BËi î‚/i ^†Di ‘[i Ë%BË|i ‘Zj ‘… !… ÆÑo ì».ò»õXè¾êÖê¾y- u +u _@fLu_uuy!u1ë_@¿pw >x Ãpw ;>x ë {x ü¾¶l!Ù{ '_ù{ ;_!~ g/~ $¿ýl(¿ýl&¿ýl,¿ýl'9~ g…~ g~ A_ýl*¿ýlE_ýlgÀ I_ýlO_ýlg÷‚ Ì„ƒ gý!0¿ýlã_… r¿*« t¿tŽ n¿.‡— © ÷_Æ y!© ‘Ô ‘á š¿æy‘ ” ‘” Up5`„(— ‡ÿ— PÀæy‘š q *š Ã"iš Ã"Yœ ‡}œ $„—œ gš + ‘5 SO±SOcSOq F g +å  ¶l‡{+h„¶l9`òzÀæyâ„.‘Q`SO‘{x +é­ +ö­ )ë[1@„.ÙR¹ 7™¹ +º +½º ‘Õs Ù>½ D¬½ «ÒV†¶lÙ"À Ù¦À ‰kÁ 7ÚÁ cxÙñ å©Æ ³©Æ S$cáü¼ÿ_þ¼aG C GõB GÞB IÞB IõB I C KÞB KõB K C œ½šË ¨½at‘lÏ ‘}Ï ‘ŽÏ ¡ ŸÏ Ù+Ð ‘vr ‰Ö ‰)Ö ¿atÙ‘Ø EÅØ $¿atgˆÝ ™bat*¿at,¿at.¿at#cvÞ #cšÞ gýÞ ‡‚à ‡*á ‡·¡ 6ã `À.bÀ.J§æ U; g¹ç +¹‘¯ g‘é ‘¹‘]ê )` )GKn„@ì ‡pì ‘zì )2K)p5‘„ì ‘Žì ‘™î ¼Ê2K˜Êp5˜Ê5‘eï ‘oð ÷cýlgYò 2Ìýl2Ìöò ð€Šó ‘˜ó qþ® ‘×ó ò€Ò2Ìat4Ìò¡ sö +dýø -d„ÌÒ„Ì£ú „Ìû „ÌTû „ÌÙû Z„ò?d®agñý gÿ Od®agˆ _d®aad®a~„²½ 7M 7.«O"íé‘ /ÿ_ƒ¢ ù ¾ jÍ2KlÍ2KnÍ2KdÍ2KbÍ2KhÍ‚S‘ä cK ‘j •ü ‘# •Ž Ù² Ùÿ ‰“3 6„–‰Rÿ7 ­"Ð ­&Ð G€¥ G˜¥ Gâ·G ¦ G"Ð G&Ð GiQGC: ­H%­`; ‘Þ< §ô< §5iD%= ƒë= ÿd@ ÿdA ÿd ëE ‘ÁŽ @Ò‚G ‘H c¬ Ô‚pd ˨I 7ÆL k,ÍL 7IM k,TM ˆÒ¸M JPÕg… giN ÙÏN ÙAO ÙàP ÙAQ Ù¢Q ER ÙÊR Ù+S EµS EST Ù"U ÙÇU KŽV ÙÑV ­ŽÐŽÑMŽÐJ¬ 7}Y Z š‚.€Ù ] 7_ ÙÙ_ Ù[d Ù›f s57âÞ+ k 7„l +•l 7U+Úm 7²n +¿n ‡ …*½e…*Ùëp K[q ÙÙr Ùxx Ù1y ÙÛ} GëE IëE KëE Ùu~ Ë/ Í€ Jp5S J€ Ù‹€ J.‘ëe.‘Ùñ€ ëe•7ÙU Í{ Ù{ J$‡ YH…*Ù€‡ Ù”ˆ ÙŠ ÙiŠ ÙÿŠ Ù¼‹ Ù5‘ Ùù’ Ù«“ Ù– Ùo– Ù¾– ÙQ— ‘‚— ‘— Ù˜ ÙÇ´Ù¤ Ù0® Ù‘® Ùò® ÙK¯ Ù¬¯ Ù° ÙͰ ÙA² Ùβ Ù3³ Ùš³ Ù1´ Ù¿¶ Ù>· Ù‰· ­¨'Ùû¸ G`; GH%IH%I`; KH%Kf¹ K`; K<5€Ñ5~‚²D ~‚U M,½ ‰k¾ E³¿ Eο EÖ¿ •04À 4À ~‚ŠÀ •0ïÀ ïÀ +Á ‘ ‘E ýlÅõXƒ,ýlsýl+õX%ýlWýl)OÅ «ƒµ<烵¨ël¼)gö{ÙÀÍ Ù-Ð K*Ñ Ù Ö K¬Û Ùè K&ê ¨ëOÅ Ù¡î ªëOÅ ¨ë}ñ ªëòñ ggö{igÿ_sgö{Gyó Iyó Kyó KÊó Gô Iô Kô ¨ëÿ_úëuìýlúëýlúëˆø úë …úë ¦ úë"Ð úë&Ð ì¦ìˆø Ûg×ú úëö{|ìýlíg‚ü GHGåý Gíý Iíý Iåý IHK5þ Kíý Kåý KHEƒþ E‹þ Ùqÿ ‘fcye‹‘‹…‡Fí ;h­c¨îZíX—Zíö{gbÅjí6jíX—Zíÿ_c[jZíOjZí[jZíR cn†ZíZ ÙIÙ Ù‚|Ùî5Ë‘8ËcáË»8Ëà8ËàÚË9ËV9Ëß9Ë::ZíF:±R:˦ËÑ:ËA;Ëœ;Zí‘8±¨;ËëËö<ËF:jí¨îˉ—ËÎ>Ë?Ëc?Ëk?jíc?Ëÿ?˯@ËëíË×ËüBZí%CËÇCËX—Ë7DË?DË6ËCEËQëË}EÇhCEËÅEfíÕñËhPFËsFˈGËóG˳HËIËÕñË–IËÐIZíÐIËAJËQÂË6Kïh_KËLËPLcŒLËLMjíÿËàMfíÿiOËBOË8QË3RËBSË.VËàX‘^^Zík^eZají.VËÇcCidËÿËeEiÒeËMfIi}fË[jË#iËjËkk‘k1˜keªkeÁkËÅ%ËœlËñlËhm…˜7˘7Ën…ŒLËŒLËŽn…hmË×nZíŒLËÓoËÛo˘kËúpË¡rËs‘sË_KËtË8t•iætËouËgvNí#iËövŸiö{ËýwË„xËOj…[j«i,zËÝz«òz•iV}Ë·}¦í…*Ë„ËR„…k„Ëk„Ëó„Ë*…ËU…Ëi…ËmœË…ËÝ)Ë¿…˶eˇËÚ‡Ë|ˆË‰ËY‹Ë[ŒjàÚZíàÚË…Ë ŽËõ…¦jíàÚËú‘ˇ’˓˕˿•ËÆ–Ujé–Ë—WjàÚËi˜ËmšËA›Ë`˼žujàÚˡ˖¡…ΡHí¢U.¢q.¢Zí`Ë=¥Ëö¦Ë¨Ëè¨Ë ©Ë©ežªË«ªË}¬Ël­Ë}­«’­‘¶­Zíl­Ë1¯Ëï…QÂË´Tíˆø j 쵃”j A¶ Ѷ-ÿ_t ˆƒ,·‰Rýl…Rk~ õXöF-ÿ_%iQ² §» 6½¤6½6½~ NÂ| …*‚ WÂ~ ‰Â~ ÆÂ| ÿ_‚ ÆÂEÃöFoÄ wÄ €ÃÏkM„ ÆÂÏktÕ ÏkðwÏkMxÏkB( Ïk% „ œÃöFtÕ „ ¸Ã„ ÅÄ ÎÃÕku"Å×kM‡ ‹Æåk‹Æçk½ÆékáÆ‡ MJØÇù aå ÉZÉÙ—ÉEÊEÊ xW‰‰ÊˈÙÌG/ÌG?ÌI?ÌI/ÌåûK?ÌK/Ìé>”úF”IL5ÒüF5ÒILnÒúFnÒS5ÒSÔúFÔS5ÒSðÔúFðÔƒßÕ‘åÕågÖånÖW½ ËüÖË&×E3×‰ÌØ‰AÙ€ 1ÚÝSoÀ >ÚmoÀ KÚ moÀ XÚmoÉuÚ€ ‡ÚáToÃmMÙÍÜKoÝGáÝIáÝKáÝL„X—¦ ¦‘Àâ+ã|àÚ+tä+ŽäË<5+ÚéËsë1j=_àÚ1àÚeÂ냛åkíåtíæ„Çíæ„ÔímÔímÇíÙïÙÞïGðGÔíIÔíIðKÔíKðÙ%òÙÌòÙ€óÙëóÙæôÙÂûÙ‰þÙâþÙCÿÙ¹ÿÙ£ÙÙ™ÙÙ›Ù‰Ù5 Ù® Ù: Ù`ÙÙ/>Ù¹?ÙÚ@ÙBÙ¶DÙ…LÙøLÙçMÙ NÙÿNÙ|OÙþOÙARÙ¶SÙbXÙ÷XÙSYÙ°ZÙ\Ù˜\ÙY]Ù^Ù•^Ùô^ÙS_Ù`Ù‡`Ùé`Ù"bÙ²cÙôiÙ’nÙdoÙYsÙðsÙ?tÙ½tÙ„vÙxÙYyÙÎyÙ zÙszÙÿzÙ’{Ùá{|at~àÚÙMÙÄÙl€KÙ©‚Ëð1v†‘Ö‰‘‰Š)[j1n†oGK uÃêÖ3oˆŽ")ÏÙ‘­À GÀ IÀ KÀ ") ’")šË Ù1“Ùˆ“ ”‡P•:*Ê– å˜qå˜+ù˜F*<5…5Âq5ÂN*…*+,™P*嘇?™c7š þ$ n  & ë Å d—‘‘ž Ë¡‘Ó¡c塱嘇룱V¤±Á¤±,¥±—¥ „å˜-å˜ë +¦a$Ï‘X¦‘‹©Ùª-}â„};}ÙG¬‰‘®‰ˆ²‰0´Ø+õXØ+9¶Ø+·+P•)š)…š)Ø+,ºgĺþ+ýl,ýl å¡ `‘k½ ,!¾‡Œ¾‘¢¾þ+$¿,,¿‘4¿‡F¿,ýl+XÁ‡pÁ‘‚Á§` `±”Á‘¡Á,ýl,ýl+³Á,ýl,ýlü+#p ,zÅ,$¿,€v,at,€vÙgÇ¡‹È-ÿ_ÙZËÙ ÌEªÌaaa\„õXÿôÖ gaT”GÑÓGãÓGêÓGÔGÔG8ÔGRÔI8ÔIÔIÔIêÓIãÓIÑÓKRÔK8ÔKÔKÔKêÓKãÓKÑÓKäÔKïÔMGÀÕŒ1ÖŒ1v׌1¾×Œ1ØŒ1NØqæØ‘ÃÙ§”MGñÙõr”TèÚ "g" "T"TѶ‘(Þ /Þ/s¾” ” ”gÕß•€àg×à§7šMGÅá•/‘eâÛ!Tc:/µãÛ! & 2/5äÿVšÿuÿÔ•Ô Væa$â·‘^æa$u‘sæcˆæT\çÿbçgnçÿ<5•Ï•”gmègzèg‡èn•fžgëè¥thé+Ÿé•H%•Tc­t3ê•<5gH%ÏÍ|ì•ä‘bíËLîË}îËšîIRÔ ïò‘õò.þòq”R/H%• & MGÞù›u©uu©uH%©uÔ©uÉú©uÑú­û­ˆû5ü÷_ü%Wö{÷_Üý óýïþë þy!!þ}"JêÖËêÖÌ1ÿÌ1ÿÌ1!ÿtÿÌ1§ÿÌ1³ÿÌ1ÅÿÌ1ÕÿÌ1Ýÿß”áuö{#=ßö{ß½ßöß!Ë/ß…'œŽg|¾ •|¾ V„† T„† V„ì T„ì ^2cáÍ€ôMG”MGÁT„„•Е•7š8ýl) •  ù  Ò2ýlÒ2&Ú2ýl {Ê2ÿ_•nž•¯•‘æV„ï T„ï  !S$! !‘'Ä Ûn'~5$†ÍÂ'ewÕ'$3Ñ…'æ'2( 7p‘,•,B3ÿ_ ÒX8ÿ_Ø1ö{~€*0Ó¸‡GˆûGûIûIˆûKûKˆû­Ï1­óýGóýGÏ1IÏ1IóýKÏ1Kóý ö2 þ5þü7ö2Â1u'¶4]Eö2‘×4•óýÌ1¶5Ì1¼5‰Â5‰06ÍC7'e7Ù9E¦;]! !V†aty!at„P•Ùm=Ùø=Ùš>E³E ÆEÍOFÙGG JGJIJI JK?KKJKZKKgKK JÜ2&Ö2&è2u]Ñ… Ñ…­ÒGÒIÒKÒZ8ýlUOqO ŸP…õP õP‘2Q‘CQ‘bQ•oQ¿4<5 „VgŒV‘”V ¡V…aW…­W)„V•R‘™Z‘ÖZ±$[c„V‚8\[•¦\•aW&7ýl… d8u\8õPÙ>`KSa‘-d‘Þdýy!j `; $q•,qð9*« ò9*« ô9*« ­xGxIxzuV9-y\jyV9ryV90zV9fzV9¥zV9­zV9ùzV96{V9ã{V90|V9||V9}V9€}åÑ…ƒ§~c§~‘°~au uåC}MGg‚å€ô9k†:‚ƒ‘ƒò9„ò9”„ „‘Єö9\… xö9z‰åå÷‰7un9<5n9un97šö9•³î‘§<5± & 娓ò9Ógî“‘û“åĞ帞åù•V„áïö9c–åî‘Uh™qh™Ý{š)á{š)ã{š)å{š)ç{š)í{š)ó{š)õ{š)÷{š)ù{š)û{š)|š)¿4u‘#p|š) ÖgÖ‘Þ ë+žV„›žT„›žV„êžT„êžånŸå‰Ÿå£ŸMG¨+|ö{ƒõPw$†ì9F¨î9Q¨î9a¨î9q¨ì9¨î9Œ¨î9œ¨î9¾¨î9Ψî9©ì9©î9©ì9/©ì9:©ì9A©ì9I©ì9U©ì9m©ì9…©ì9¡©ì9¸©fƒaå'­MG»·G,¸I,¸K,¸Ùº¸KU¹EŠ»Ù1¾v9š)t9zËt9°Ët9æËt9Ìt9RÌv9ÏÌx9ÏÌt9ÏÌz9™Ít9™Í|9™Ít9òÎt92Ït9ƒÏt9ÓÏz9^Ðt9ÆÐ~9ÆÐv9ÆÐt9š)ÙêÑKEÒÙ=ÓK¾ÓÙ'ÔÙ2ÕÙ0ÖÙØÖÙ€×Ù(ØÙÐØÙxÙÙ ÚÙèÚK­zÙ»ÛÙ‡ÜK€}Ù”ÞK ßÙÇßKx‰ôè|:Ñêò9\…ò9›ñ‘Øñô9yóƒfžò9 ôò9võö9ßöcøcù÷_Èú h™‘û¿4+û•+ûÍvûƒ¯…‘æƒ L;‰÷ƒ}ã…*ãu?Jat‰P‰ JýlnGýlcÿ‚G´ ˆGõX5€’[ Gýl9€’[ ‚GÒ ŠG; ‚GA E‡ G™ E¢ I™ K™ E¶ Eë K¥‰E"E5EHEPEXE`EhEpExE€EˆMG´ÙåÙñ„GatˆGŠÀ ‚GõX„GýlGat”G#‚1…*üIÿE™€c¡ S ¡ Ο€+EÔíÍô;E¦¬L#pò„R"¬L`"ò„i"9€‹"9€êÖ ë$ P%ö{1ýl•Š'vKýl-R‹/R‹­}G}I}K}K)‘;*‘Z*ap*‘Œ*gó*‘þ*• +rK#‚….Ùž/ÓatâKat À2äKat•Ö2Óƒ3atæKat¦4¢€ýlCõXÅ6ƒ6g9€…*NL}{+7TLõXXLõXXL°7)ýl)\LõX^LõXZL}{NLõXdLõXPLatã…*NL#‚y‚{‚˜L‹˜Lÿ_k, :žLýl©u…*©u …EEÒEryEfzE¥zEùzE6{E0zEã{E0|E||E}E­zE-yE€}•öD‘‡E‘ F‘‹FåGå’Gå Gå±GåÂGåÓGåäGåõG•¡HRI•°J R½J RÐJ RâJ RùJ R K R!K RHK R^K RyK R‹KåáKåòKdRs¾dR Ù@PK}QÙ.SÙïTÙS_Ù»_Ë`ËzÅËš)Ë ßËx`Ë‹`rRž`rR<5ËÊaËæËËòÎ˰ËËbË™Í˾bËÆÐËÒcËÓÏlRž`…«d‘ºdËãdË«dlRVepRreË“elRfË5fpRGflR<5ËÖfpRåfËgpRP•Ë;gË|¾ c|¾ lRs¾pRîgpR.hgÑ…‘ÒigáiXÿ_ j#ëjËpkË€k#u#tm ®n˶n˾n ¾nÙhoE’qG€kI€kK€kGýrIýrKýrGZsIZsKZsGtmItmKtmG¹sI¹sK¹sGèsIèsKèsGtItKt#š)%š)š)K îv<[ýl<[š)‘›w‘¨w‘P•‘Z{‘§{‘Y|ËM}n[<5+@€‘´€‘v‘ƒ‘ ‚‡„,]ËNƒ‘NƒËP•‘ă‘ýƒ‹„n„„›„¢[õX‘£„’[™„ìˆË‰fƒP•‘|‘ [#‚¢[“Ó„‹•Ó„¥•Û„­—Ó„¯˜‘–Ÿ¼\cá¾\cácԟ廤åФåë¤å¥å¥å>¥å\¥å‹¥å¥¥åÃ¥åá¥+•§‘ì§ÙÓ©ÙtªÙåªÙr«Ùj­Ùƒ°Ùò°Ùä±ăuÙd·F`o¹’`»¹³å­­~ ­R¼H`õX­­ÂGÂGIIÂKK‘ÔÃåKÇ¢€uJ`‰ÇJ`ÐÇ+ÈgøÈg=É‘4Ê‘ˆ`L„š)‘‹Ë‡­Ë OÌ`ÒÌ`]ͳÏ&aÐÍ‘2Î ‘ƒ³SÎ`¢Îƒ Ï`„Ï7ôÏ+гBÐåBÐ7<5‡¼Ö7ˆæ+¿Ú³ÒÚåÒÚ7Û+Û³"Ûå"Û³nŸƒ|Û7ñÛ+ܳÜåÜ‘d܇wÜ‘+Ý„b^ݘbÛ߆ÿßg~5ªbù‘Ðá‘ñá'†=â‘…â7†eä)ùgNå±›åcÚ呿+hæ[†êÖ´bÚæò„ê„”êgœêMG¦ë…í–b–ïc & qd—‘gñï$†MGÀóNcýl…°’…ˆæO#ˆʃ ʃ+úÿs¾ÿ£ýȃ ȃ+ú̃Îý̃ßý`ÿ`Jÿ•}ÙƒGR¼G~ GII~ IR¼KK~ KR¼Ë Ù£­ G I K Ù'|¾ K;gÙ*ÙƒÙ ÙëËH%‘ð Ùa ÙæQ‡€vÙ{Ùc­ZÉGZÉIZÉKZÉKpÙnÙÜ Ù\!ÙÂ#Ù´%Ù &Ùn&ÙÇ&Ù('ÙE KK-ÙzG¯‡atGZJIZJJ`kJKZJÙKKµKKÁKÙ0NKØNÙÊPÙyRÙ>SÙUXÙ [Ù]Ù]ÙU^G{^I{^Kù•K{^ÙY`Ùº`ÙaÙ|aÙŒbÙ’cÙÆdÙfG fI fK fÙŠfÙøfÙiÙsjÙEkÙlG+lI+lK+lÙÖmGîmIîmk,=nKîmcnžÙón­¸ˆ­VæGVæIVæKVæÙcqÙÄqÙ:rÙ0tÙuÙxGxG?xI?xIx ‘ƒK?xKx‰ zÙÒzGêzIêzk,'{KêzÙ|G'|I'|k,d|K'|Ù }Ù‘}Ù†GžIžKžÙ€Ù£"aŠÀ 7Í„‘^Ý„+·†V†7šÙåŠK¯ŽÙ¾•Ë•ˆ’5‰¦’J`°“•ùM‰ý”)5Â15Â1ù¨b5‘ñ–´b#‚cQ™¸bž¶b*žÆb+£gT šb¦¡)íÄbRgí+û£ÊbRÈbó¤ºbý¤ø€¦¡‘?¦Æbó¤gMª‘~ª‘‹ªc”ê)ŠÕªÌbË‘«‘«K,¯Ncat‰¼¯Pcat#ذPc±‰#±Rc±‰f±‰8²‰”³j„|¾ K'­K_µGèµGöµIöµIèµKöµK资ÔÇõX§ýl±ýl7ýl¿4ýlÙ ¸ö`ö{š)Gl¹wÝ)#»ͬÍD»•V»^»uÝ)#‹Ý)ï^»)‹ÿ_EO½Ù|½Ùr¾­l¹Il¹Kl¹Ù¿‰ÃÂ{‹Ò g;Ä‹­‹âˆ³‹µ‹êÖ·‹êÖ†êÖ¿‹IÈ­‹êÖ·‹-ÉgnÉð€ÈÉð€ÛßÙ}ÊãâÊ;iQE˳ýl?Jýlù‹WõÙiÌÙ¸Î~ƒõX~ƒÒ ˆƒýl†ƒýl„ƒýl`#‚EUÑ7#‚•%~-#‚…èÕ7êØc}kEÅÙ•%úÙ-êØ…UÛ,áÜ Ý|‚õXk,’Ý7ÝïŒáÜÒ‚qÞ qÞ ”‚ýlk,ºÞk,ßî‚DßC‘ßÅ—ßïŒqÞ CíßÅøße#‚‘#‚Å á7õXk,Yák,yák,°á7°7+ÐáaÙ–]EÙ–k,1âk,ƒâCMãÅXãïŒrãk,*« â‚Lä7²äk,Çä7rãk,}åë2yá-Ù–çٖٖ Ù–UÙ–k,ëæk,çƒ4À qÊó Åyè‰/é‰>éÎé­Þéãûa³…*½yêã}tƒýlzƒýl͸ýl~ƒXïrƒatzƒatxƒat~ƒŠÀ ã¡ð~ƒ¬»‚ƒateõXJ„ýl2„ýl^„*« t„*« X„ýlÍó3D∕âˆðƒuS$ýlUýlqýl„ýl5€…*„ýlK0õX"„ýl&„ýl,„*« ‘}{0„}{4„ýl8„ýl«2ýöc÷‘÷‘°÷g Ð÷«ü÷íg«øD„ýlýl ýlR„9€ ú`„*« 9€„úb„ýlf„ýlj„ýl^„”û)êÖ9€ü¡ ”û•½ß ±×ü‘Dß)½ß ‡Dß1½ß H„at•at±#‚^„+£^„Úÿ)atK #‚‡#‚6„ýl9€ýlЄýl!õX#êÖÞ„ýlà„ýlä„ýlÚ„atQ‡}©uÿ_±}{g°7[#ðD*« ¡ *« !õXqýl«õX ýlaõXcõXB…õXD…õXH…õXL…õXF…õXJ…õXN…V…õXT…õXZ…õXX…õX\…õX^…õXb…õX9€ö{d…*« 9€åf…õXh…õXj…*« l…*« n…*« ígê p…*« t…« ígÆ L…IÈn…x v…õX âˆgÆ |…õX‡#‚~“~¤…ýl¦…ýlª…ýl¨…ýl¬…ýl®…ýl°…ýl²…ýl¶…ýl¸…õX9€º…ýl¼…ýlÀ…ýlÂ…ýlÄ…ýlÆ…ýlÈ…ýlÊ…ýl´…ýlÎ…ýlÌ…ýlÐ…ýlØ…ýlÜ…ýlÖ…ýlÚ…ýlä…ýlè…ýlì…ýlð…ýlatatat¹k‰v‰ÙL†ýlX†ýld†ýlh†ýll†ýln†ýlr†õXv†ýl•%ýl”†õXl†u˜†ýlœ†ýl †}{¢†}{¬†õXH†êÖF†F†ýl¸†õX¶†õXÀ†ýlĆýlH†âˆ‰1#‰;#5Ju#¶U #€v‡ýlƒC}ƒ5Â…€v €v¹‘€v´‡atåð(ê‡uò‡ýlð‡uó‘¸+ȉ€vö‡Â,‘ -‘J-Ë.Ö‡€v¡1.’/’$/‘G/ˆÂ,’11ˆuŠ;1Š#p"ˆ€vˆö{Š@1;” Ô‘P1‘a1$ˆÂ,‘g1&ˆ€vˆ€vŠñÿÛ€vȉýlEC: E[2E_2*ˆýlô‡ö{Ùü2Ù„3e’ò3’76’B6’ñ6Ùì7ÙT;÷’›> ( €vŠõXŠõX€v¾ mR¾ Æc¾ &š¾ üо m¾ ØE¾ H¾ H¾ nI¾ sK¾ ÚL¾ wN¾ £O¾ ¾Æ¾ Q¾ ÷R¾ Ÿ™¾ ®™¾ ¬¾ ßU‰žV ®=®=ŽE'îD(ÞG)®G*jG+®GÐ:¤Ñ:¤'ˆ#(ˆ#0ŽE1ŽE2´¬9´¬;îD<îD?´¬K”¬aîDhž§i®GjjGk®Gl®G012345` ‘a ‘b ‘Œ˜‘Dˆ#}½~½é´¬ð8Þ@H®=îðõ  ‘ª˜‘ø !¡#½$½'%t´¬z=Þ@FSharp.Compiler.dllFSStrings.resourcesFSComp.resourcesFSharpSignatureData.FSharp.CompilerFSharpOptimizationData.FSharp.CompilerSystemObjectmscorlibFSCompSRInternal.Utilities.StructuredFormatJointIEquatable`1System.CollectionsIStructuralEquatableTags_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsInternal.Utilities.Text.LexingPositionIComparable`1IComparableIStructuralComparableLexBuffer`1UnicodeTablesInternal.Utilities.Text.ParsingRecoverableParseErrorExceptionAcceptIParseStateParseErrorContext`1Tables`1Stack`1Internal.Utilities.CollectionsHashMultiMap`2System.Collections.GenericICollection`1KeyValuePair`2IDictionary`2IEnumerableIEnumerable`1Internal.Utilities.Collections.TaggedSetTree`1Set`2MapTree`2Map`3Microsoft.FSharp.Compiler.AbstractIL.InternalByteStreamByteBufferVizVisualizableMicrosoft.FSharp.CompilerTypeProviderErrorTaintedContextTainted`1ValueStrength`1StrongWeakStrong@DebugTypeProxyWeak@DebugTypeProxyAgedLookup`2MruCache`2ListInternal.Utilities.FileSystemPathInternal.UtilitiesQueueList`1Internal.Utilities.DebugTraceSeverityErrorInfoErrorScopeIDisposableMicrosoft.FSharp.Compiler.SourceCodeServicesTokenColorKindEnumTriggerClassTokenCharKindTokenInformationColorStateSingleLineTokenStateLineTokenizerSourceTokenizerDeclarationItemKindDeclarationItemTopLevelDeclarationNavigationItemsNoteworthyParamInfoLocationsInheritanceOriginInheritanceContextRecordContextCopyOnUpdateConstructorNewCopyOnUpdate@DebugTypeProxyConstructor@DebugTypeProxyNew@DebugTypeProxyCompletionContextInheritRecordFieldInherit@DebugTypeProxyRecordField@DebugTypeProxyUntypedParseResultsUntypedParseInfoIPartialEqualityComparer`1IEqualityComparer`1XmlComment_XmlCommentNoneXmlCommentTextXmlCommentSignature_XmlCommentNone@DebugTypeProxyXmlCommentText@DebugTypeProxyXmlCommentSignature@DebugTypeProxyDataTipElementDataTipElementGroupDataTipElementCompositionErrorDataTipElement@DebugTypeProxyDataTipElementGroup@DebugTypeProxyDataTipElementCompositionError@DebugTypeProxyDataTipTextDeclarationDeclarationSetParamMethodMethodOverloadsFindDeclFailureReasonProvidedTypeProvidedMemberProvidedType@DebugTypeProxyProvidedMember@DebugTypeProxyFindDeclResultDeclNotFoundDeclFoundDeclNotFound@DebugTypeProxyDeclFound@DebugTypeProxyNameResResultMembersCancelMembers@DebugTypeProxyCancel@DebugTypeProxyResolveOverloadsGetPreciseCompletionListFromExprTypingsResultSomeSome@DebugTypeProxyCapturedNameResolutionTypeCheckInfoUnresolvedReferencesSetCheckOptionsTypeCheckResultsTypeCheckAnswer_NoAntecedant_AbortedTypeCheckSucceeded_NoAntecedant@DebugTypeProxy_Aborted@DebugTypeProxyTypeCheckSucceeded@DebugTypeProxyNotifyFileTypeCheckStateIsDirtyDependencyChangeCodeIsResultObsoleteBackgroundCompilerInteractiveCheckerDriverErrorLoggerThatQuitsAfterMaxErrors@85-1Microsoft.FSharp.CoreFSharpFunc`2FSharp.CoreUnitErrorLoggerThatQuitsAfterMaxErrors@89-3FSharpFunc`3OptimizedClosuresSystem.TextStringBuilderErrorLoggerThatQuitsAfterMaxErrors@88-2ErrorLoggerThatQuitsAfterMaxErrors@107-5ErrorLoggerThatQuitsAfterMaxErrors@103-4ErrorLoggerThatQuitsAfterMaxErrors@82TypeCheck@120DelayAndForwardErrorLoggerget_ErrorCount@134-1Tuple`2combineFilePath@153AddIfNotPresent@167-1references@174-4references@174-5references@174-6Microsoft.FSharp.CollectionsFSharpList`1AppendClosureInformation@175-1AppendClosureInformation@176-2AppendClosureInformation@176-4AppendClosureInformation@176-3AppendClosureInformation@177-5AppendClosureInformation@178-6AppendClosureInformation@179-7AppendClosureInformation@172_unwindEL_1@216collect@230-10collect@229-9sourceFiles@252-4sourceFiles@257-5_unwindEL_2@298inputs@337FSharpOption`1getTcImportsFromCommandLine@351tcConfig@353inputs@371-1createErrorLogger@389runFromCommandLineToImportingAssemblies@391runFromCommandLineToImportingAssemblies@392-1EncodeInterfaceData@599Microsoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1data@619-2Lazy`1bytes@626-2createMscorlibExportList@899createMscorlibExportList@900-1createSystemNumericsExportList@913SigningInfoArgs`1main1@1773-1EventHandlermain1@1773-2main1@1773-4main1@1773-3EventArgsmain1@1773-5main1@1762main1@1775-6scopedPragmas@1798-2_unwindEL_3@1801main1@1821-7main2@1860FSharpFunc`5bytes@1869-3ilxGenerator@1906main2b@1918pdbfile@1962FileWriterStaticLinkerStaticLinkILModules@1179dependentCcuUsingQuotations@1183StaticLinkILModules@1189-1StaticLinkILModules@1193-2assems@1198rewriteExternalRefsToLocalRefs@1205allResources@1208savedResources@1222intfDataResources@1224savedResources@1227-1optDataResources@1229savedResources@1232-2reflectedDefinitionResources@1233otherResources@1235moduls@1241savedNativeResources@1246StaticLinkILModules@1251-4StaticLinkILModules@1251-3topTypeDef@1256topTypeDef@1257-1StaticLinkILModules@1262-5tdefs1@1292tdefs2@1293fakeModule@1301-1fakeModule@1308-2fakeModule@1300fakeModule@1321-5fakeModule@1318-4fakeModule@1315-3depModuleTable@1347roots@1412FindDependentILModulesForStaticLinking@1421FindProviderGeneratedILModules@1432Tuple`3providerGeneratedAssemblies@1455StaticLink@1462StaticLink@1469-1ilAssemStaticLinkMap@1488providerGeneratedILModules@1499-3providerGeneratedILModules@1499-2providerGeneratedILModules@1495-1providerGeneratedILModules@1486walk@1509loop@1515-71allTypeDefsInProviderGeneratedAssemblies@1519buildRelocatedGeneratedType@1531-1buildRelocatedGeneratedType@1535-3buildRelocatedGeneratedType@1535-2buildRelocatedGeneratedType@1545-5buildRelocatedGeneratedType@1545-4generatedILTypeDefs@1548trySplitFind@1557-1implantTypeDef@1570-1ilxMainModule@1581-2ilxMainModule@1581-1ilxMainModule@1580rw@1591-1StaticLink@1587-3StaticLink@1613-4StaticLink@1613-5StaticLink@1471-2MainModuleBuildermanifestAttrs@954quotDataResources@980-1quotDataResources@978resources@989-2readResX@1001-1DictionaryEntrywriteResources@1004-1resources@1019-3resources@986-1stringFileInfo@1063-4stringFileInfo@1063-3stringFileInfo@1063-2stringFileInfo@1063-1stringFileInfo@1064-8stringFileInfo@1064-7stringFileInfo@1064-6stringFileInfo@1064-5stringFileInfo@1065-12stringFileInfo@1065-11stringFileInfo@1065-10stringFileInfo@1065-9stringFileInfo@1063assemblyVersionResources@1108nativeResources@1151-1nativeResources@1146AttributeHelpersTryFindStringAttribute@841TryFindIntAttribute@846TryFindBoolAttribute@851ManifestResourceFormatVersionResourceFormatVersionInfoNode@688VersionInfoElement@695Version@705children@721children@730-1children@741-3children@739-2VS_FIXEDFILEINFO@752children@815-4ResFileFormatResFileNode@668BinaryGenerationUtilitiesPadded@658XmlDocWriterdoValSig@468-1doTyconSig@470-1doModuleSig@480-1vals@494-4vals@493-5doVal@510doTycon@514doModule@525-1vals@532-6vals@531-7writeXmlDoc@546InterfaceFileWriterWriteInterfaceFile@440WriteInterfaceFile@446-1.$Microsoft.FSharp.CompilerPrettyNamingIsIdentifierPartCharacter@2156IsLongIdentifierPartCharacter@2157GetLongNameFromString@2158FormatAndOtherOverloadsString@2159DebuggerEnvironmentCompilerEnvironmentParserErrorHandler-ctor@1235-57oneError@1210-1clo@1227-203unwindEL@1278-5tokenizer@1305-1lexfun@1306FSharpTypeFunclexfun@1306TparseResult@1302TcResultsSinkImpl-ctor@1365-58TypeCheckAbortedunwindEL@1436-6TypeCheckSource@1447TypeCheckSource@1457-1TypeCheckSource@1458-2sameFile@1463-1hashLoadsInFile@1468TypeCheckSource@1471-3hashLoadBackgroundErrorsGroupedByFileName@1477errorsAndWarnings@1487TypeCheckSource@1488-4TypeCheckSource@1489-5TypeCheckSource@1489-6checkForErrors@1519tcEnvAtEndOpt@1523ParamsParamsOfParamDatas@105ParamsOfParamDatas@123-1FSharpFunc`4ParamsOfTypes@137staticParameters@234-5ITypeProviderstaticParameters@235-6typ@238spName@240-2spOpt@241ParamsOfItem@244-2ParamsOfItem@244-1ParamsOfItem@244ParamsOfItem@190-3ParamsOfItem@189-4ParamsOfItem@192-5ParamsOfItem@199-6ParamsOfItem@216-7ParamsOfItem@217-8EnvMisc$Service-ctor@280-52items@297-6items@298-7methods@337-3DebugToString@400-1DebugToString@400-ctor@437-53Tuple`7-ctor@438-54-ctor@448-55-ctor@451-56t@979-20t@979-19t@979-18t@979-17items@987-8items@988-9GetDeclarations@983GetDeclarations@990-1matches@1011-1matches@1009-2GetReferenceResolutionDataTipText@1004GetReferenceResolutionDataTipText@1055-1t@1059-24t@1059-23t@1059-22t@1059-21Compute@1065-3Compute@1068-4Compute@1064-2Compute@1069-5t@1081-28t@1081-27t@1081-26t@1081-25GetF1Keyword@1085-3GetF1Keyword@1096-5GetF1Keyword@1096-4GetF1Keyword@1084-2GetF1Keyword@1110-6t@1116-32t@1116-31t@1116-30t@1116-29GetMethods@1117-1GetMethods@1115GetMethods@1120-2GetDeclarationLocation@1126GetExtraColorizations@1166clo@459-189clo@483-190clo@521-191quals@533clo@599-192clo@596-193clo@600-194clo@558-195clo@559-196clo@590-197clo@591-198quals@607-1Tuple`6clo@622-199bestQual@633clo@671-200items@685-10items@700-11t@727-37t@727-36t@727-35t@727-34t@727-33GetBaseClassCandidates@729-1GetInterfaceCandidates@734-1f@744-84filterDeclItemsByResidue@748-2filterDeclItemsByResidue@748-1FilterRelevantItemsBy@741-1FilterRelevantItemsBy@741-1TFilterRelevantItemsBy@741-1TT|FilterRelevantItems|_|@857-1clo@789-201visitor@956clo@976-202-ctor@1555-59GetHashCode@1567-1GetHashCode@1567ToString@1610-75ToString@1610-74ToString@1610-73-ctor@1624-60GetDeclarations@1667-5GetDeclarations@1667-4Microsoft.FSharp.ControlFSharpAsync`1GetDeclarations@1666-3GetDeclarations@1662-2t@1672-43t@1672-42t@1672-41t@1672-40t@1672-39t@1672-38GetDataTipText@1677-1GetDataTipText@1679-2GetDataTipText@1674t@1683-47t@1683-46t@1683-45t@1683-44GetF1Keyword@1685-8GetF1Keyword@1684-7t@1689-51t@1689-50t@1689-49t@1689-48GetMethods@1692-4GetMethods@1691-3t@1695-56t@1695-55t@1695-54t@1695-53t@1695-52GetDeclarationLocation@1698-2GetDeclarationLocation@1697-1t@1701-57GetExtraColorizations@1702-1clo@1640-204-ctor@1777-61-ctor@1814-62-ctor@1815-63-ctor@1816-64-ctor@1817-65t@1842-58t@1845-59dependencyFiles@1858UntypedParse@1843t@1868-60t@1871-61dependencyFiles@1876-1UntypedParseForSlot@1869t@1884-62t@1887-63GetSlotsCount@1885t@1893-64t@1896-65MatchBraces@1894t@1907-66t@1909-67TypeCheckSource@1923-8TypeCheckSource@1923-9errors@1929-5TypeCheckSource@1908-7references@1951-3nowarns@1952co@1957GetCheckOptionsFromScriptRoot@1946t@1968-68t@1970-69InvalidateConfiguration@1969InvalidateConfiguration@1980-1t@1994-70InvalidateAll@1995StartBuilding@1999t@1782-71clo@1795-205clo@1804-206-ctor@2042-66-ctor@2042-67-ctor@2042-68-ctor@2042-69-ctor@2045-70-ctor@2045-71-ctor@2045-72-ctor@2045-73-ctor@2056-74ItemDescriptionsImplOutputFullName@118-1OutputFullName@118rangeOfPropInfo@157rangeOfMethInfo@164rangeOfEventInfo@171|FilterDefaultStructCtors|@175rangeOfItem@187ccuOfItem@212ccuOfItem@214-1ccuOfItem@216-2ccuOfItem@217-3ccuOfItem@219-4ParamNameAndTypesOfUnaryCustomOperation@259-1ParamNameAndTypesOfUnaryCustomOperation@262-2ParamNameAndTypesOfUnaryCustomOperation@258formatOne@444WrapType`1partialDistinctBy@467ItemDisplayPartialEquality@533-1ItemDisplayPartialEquality@542-2ItemDisplayPartialEquality@546-3ItemDisplayPartialEquality@564-4ItemDisplayPartialEquality@565-5ItemDisplayPartialEquality@572-6ItemDisplayPartialEquality@486RemoveDuplicateModuleRefs@578RemoveExplicitlySuppressed@595-1RemoveExplicitlySuppressed@589FormatItemDescriptionToDataTipElement@624FormatItemDescriptionToDataTipElement@624-1ty@639-3FormatItemDescriptionToDataTipElement@654-3FormatItemDescriptionToDataTipElement@654-2FormatItemDescriptionToDataTipElement@669-5FormatItemDescriptionToDataTipElement@669-4FormatItemDescriptionToDataTipElement@672-6FormatItemDescriptionToDataTipElement@672-7FormatItemDescriptionToDataTipElement@681-8FormatItemDescriptionToDataTipElement@681-9FormatItemDescriptionToDataTipElement@705-11FormatItemDescriptionToDataTipElement@705-10argTys@778-6FormatItemDescriptionToDataTipElement@830-12FormatItemDescriptionToDataTipElement@830-13definiteNamespace@840kind@843-5FormatItemDescriptionToDataTipElement@845-15FormatItemDescriptionToDataTipElement@845-14namesToAdd@849namesToAdd@853-1FormatItemDescriptionToDataTipElement@858-16FormatItemDescriptionToDataTipElement@858-17FormatItemDescriptionToDataTipElement@868-19FormatItemDescriptionToDataTipElement@868-18getKeywordForValRef@955-3getKeywordForValRef@955-2getKeywordForValRef@955-1getKeywordForMethInfo@977-3getKeywordForMethInfo@977-2getKeywordForMethInfo@977-1GetF1Keyword@1006prefix@1027-3GetF1Keyword@1024-1FormatDescriptionOfItem@1104FormatDescriptionOfItem@1105-1FormatReturnTypeOfItem@1108FormatReturnTypeOfItem@1108-1TestHooksFormatOverloadsToListScope@101EnvMisc2$ServiceDeclarationsdescription@1231work@1225-1get_DescriptionText@1247Description@1273Description@1273-1items@1287-3items@1305-4items@1320-5decls@1325UntypedParseInfoImplGetRangeOfExprLeftOfDot@418getLidParts@501-1getLidParts@500-2TryGetExpression@520-1walker@528dive@554-2pick@556-8traverseLidOrElse@582-2traverseLidOrElse@582-3traverseLidOrElse@577-1walker@596-2walker@558-1|SynAttr|_|@687-1walker@747-3SourceFileImplSourceFileIsCompilable@41MustBeSingleFileProject@45$ServiceUntypedParset@123-14GetNavigationItemsImpl@122GetNavigationItemsImpl@131-1checkRange@140-1walkBindSeqPt@142-1walkForSeqPt@143-1walkWhileSeqPt@144-1walkTrySeqPt@145-1walkWithSeqPt@146-1walkFinallySeqPt@147-1walkBind@151-2walkExprs@161-1walkBinds@162-1walkMatchClauses@164-3walkExprOpt@168-3walkExpr@215-6walkExpr@222-7walkExpr@230-8walkExpr@230-9walkExpr@234-11walkExpr@234-10walkExpr@238-13walkExpr@237-12walkExpr@241-14walkExpr@246-17walkExpr@245-16walkExpr@244-15walkExpr@250-19walkExpr@249-18walkExpr@255-22walkExpr@253-21walkExpr@253-20walkExpr@263-26walkExpr@261-25walkExpr@261-24walkExpr@260-23walkExpr@266-27walkExpr@272-30walkExpr@271-29walkExpr@270-28walkExpr@278-33walkExpr@277-32walkExpr@276-31walkExpr@281-34walkExpr@286-37walkExpr@285-36walkExpr@284-35walkExpr@289-38walkExpr@294-40walkExpr@293-39walkExpr@298-42walkExpr@297-41walkExpr@303-44walkExpr@302-43walkExpr@173-5walkTycon@307-1walkMember@320-2walkMember@315-1walkDecl@329-1walkModule@353-1walkImplFile@359-1ValidateBreakpointLocationImpl@367ValidateBreakpointLocationImpl@376-1t@390-15t@395-16NoteworthyParamInfoLocationsImpldigOutIdentStartEndFromAnApp@63-1digOutIdentStartEndFromAnApp@67-2astFindNoteworthyParamInfoLocationsSynExprExactParen@125-1getTypeName@168-1traverseInput@181-1traverseInput@181-2traverseInput@206-3traverseInput@207-4traverseInput@220-5traverseInput@226-6traverseInput@230-7traverseInput@245-8traverseInput@247-9traverseInput@251-10traverseInput@255-11traverseInput@279-12traverseInput@280-13traverseInput@171$ServiceParamInfoLocations-ctor@35-51NavigationImplrange_of_decls'@79range_of_decls'@80-1range_of_decls@83range_of_decls@83-1moduleRange@86fldspec_range@90uniqueName@107-3uniqueName@107-2uniqueName@107-1processBinding@129-1cases@167cases@173-1fields@179-5processTycon@155-1members@194-3processMembers@209-1processMembers@209-2processMembers@210-3processNestedDeclarations@213-1processTopLevelDeclarations@219-1items@244-2f@265-58getNavigationFromImplFile@267$ServiceNavigationAstTraversalTraverseStepExprModuleModuleOrNamespaceTypeDefnMemberDefnMatchClauseBindingExpr@DebugTypeProxyModule@DebugTypeProxyModuleOrNamespace@DebugTypeProxyTypeDefn@DebugTypeProxyMemberDefn@DebugTypeProxyMatchClause@DebugTypeProxyBinding@DebugTypeProxyAstVisitorBase`1dive@90pick@122pick@130-1pick@144-3pick@144-4pick@144-4Tpick@144-4TTtraverseSynTypeDefn@462-1traverseSynBinding@523-1defaultTraverse@151-1defaultTraverse@152-2defaultTraverse@154-3defaultTraverse@148traverseSynModuleDecl@146-1traverseSynModuleOrNamespace@164-2traverseSynExpr@165-1traverseSynBinding@523-2defaultTraverse@179-5defaultTraverse@180-6defaultTraverse@198-8defaultTraverse@209-10defaultTraverse@207-9defaultTraverse@221-13defaultTraverse@221-12copyOpt@230defaultTraverse@232-16defaultTraverse@244-18defaultTraverse@257-20defaultTraverse@255-19defaultTraverse@238-17defaultTraverse@231-15defaultTraverse@230-14defaultTraverse@218-11defaultTraverse@183-7result@272-2result@271-3defaultTraverse@278-21defaultTraverse@324-22defaultTraverse@328-24defaultTraverse@327-23defaultTraverse@343-26defaultTraverse@343-25defaultTraverse@348-28defaultTraverse@347-27defaultTraverse@360-29defaultTraverse@376-31defaultTraverse@375-30defaultTraverse@380-33defaultTraverse@379-32defaultTraverse@168-4traverseSynMemberDefn@480-1normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@440-4normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@442-5normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@438-3normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@426-2normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@425-6normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@426-1traverseSynTypeDefn@474-3traverseSynTypeDefn@469-4traverseSynTypeDefn@477-5traverseSynTypeDefn@465-2traverseSynExpr@165-2traverseSynBinding@523-3pick@481-6traverseSynMemberDefn@489-2traverseSynMemberDefn@493-3traverseSynMemberDefn@498-4traverseSynMemberDefn@505-6traverseSynMemberDefn@505-5traverseSynExpr@165-3defaultTraverse@521-35defaultTraverse@517-36defaultTraverse@514-34traverseSynMatchClause@512-1defaultTraverse@525-37traverseSynModuleOrNamespace@162-1Traverse@539$ServiceParseTreeWalkItemDescriptionIcons$ServiceConstantsLexerStateEncodingcallLexCont@518callLexCont@526-1callLexCont@527-2TestExposeTokenClassificationsFlags$ServiceLexingunwindEL@622-4GetTokenWithPosition@670-1GetTokenWithPosition@671-2clo@580-186clo@588-187clo@598-188ReactorResultOrException`1ResultResult@DebugTypeProxyException@DebugTypeProxyReactorCommandsStartBuildSyncOpAsyncOpStopBuildFinishBuildStartBuild@DebugTypeProxySyncOp@DebugTypeProxyAsyncOp@DebugTypeProxyStopBuild@DebugTypeProxyFinishBuild@DebugTypeProxyReactorStateActivelyBuildingFinishingBuildBackgroundErrorActivelyBuilding@DebugTypeProxyFinishingBuild@DebugTypeProxyBackgroundError@DebugTypeProxy-ctor@214-50FSharpMailboxProcessor`1StopBuilding@220FSharpAsyncReplyChannel`1SyncOp@226WaitForBackgroundCompile@236RunSyncOp@242RunAsyncOp@248Loop@201-2Loop@200-1$ReactorIncrementalFSharpBuildFixedLengthMRU`1MostRecentList@1122-1MostRecentList@1122IBEventIBEParsedIBETypechecked_IBENukedIBEParsed@DebugTypeProxyIBETypechecked@DebugTypeProxy_IBENuked@DebugTypeProxyFileDependencyToString@1153-72ToString@1153-71ToString@1153-70TypeCheckAccumulatorframeworkTcImportsCache@1181Tuple`4frameworkDLLsKey@1189CompilationErrorLoggerGetErrors@1232GetErrors@1232-1CompilationGlobalsScope-ctor@1241-49IncrementalBuildersourceFiles@1275sourceFiles@1280-2sourceFiles@1280-1sourceFiles@1279-3nonFrameworkAssemblyInputs@1296DateTimestampedFileNames@1532parseTrees@1533stampedReferencedAssemblies@1534initialTcAcc@1535tcStates@1536finalizedTypeCheck@1537unresolvedFileDependencies@1555unresolvedFileDependencies@1554-1unresolvedFileDependencies@1553-2unresolvedFileDependencies@1552-3resolvedFileDependencies@1557sourceFileDependencies@1562buildInputs@1572buildInputs@1573-1IncrementUsageCount@1581get_ThereAreLiveTypeProviders@1600CompareFileNames@1636-2CompareFileNames@1636-1tcConfigB@1693dllReferences@1719-1dllReferences@1717warnSink@1743-1warnSink@1743-2errorSink@1744-1errorSink@1744-2errorLogger@1747-3tcImports@1420fullComputation@1474-1fullComputation@1466-2fullComputation@1463clo@1492-185results@1514-5IncrementalBuildIdScalarBuildRuleScalarInputScalarDemultiplexScalarMapScalarInput@DebugTypeProxyScalarDemultiplex@DebugTypeProxyScalarMap@DebugTypeProxyVectorBuildRuleVectorInputVectorScanLeftVectorMapVectorStampVectorMultiplexVectorInput@DebugTypeProxyVectorScanLeft@DebugTypeProxyVectorMap@DebugTypeProxyVectorStamp@DebugTypeProxyVectorMultiplex@DebugTypeProxyget_GetId@49get_GetName@54ToString@60-30ToString@60-29ToString@61-32ToString@61-31ToString@62-34ToString@62-33get_GetId@92-1get_GetName@99-1ToString@107-36ToString@107-35ToString@108-38ToString@108-37ToString@109-40ToString@109-39ToString@110-42ToString@110-41ToString@111-44ToString@111-43BuildRuleExprScalarBuildRule@DebugTypeProxyVectorBuildRule@DebugTypeProxyget_GetId@118-2get_GetName@122-2IScalarIVectorScalar`1Vector`1NamedOutputNamedVectorOutputNamedScalarOutputNamedVectorOutput@DebugTypeProxyNamedScalarOutput@DebugTypeProxyBuildRulesVisitRule@168FoldOverBuildRules@171CreateRules@178-1EnsureUniqueNames@183FSharpMap`2InputSignatureSingleMappedVectorInputEmptyTimeStampedInputIndexedValueElementSingleMappedVectorInput@DebugTypeProxyEmptyTimeStampedInput@DebugTypeProxyIndexedValueElement@DebugTypeProxyIsEvaluated@213-1_NotAvailableInProgressAvailable_NotAvailable@DebugTypeProxyInProgress@DebugTypeProxyAvailable@DebugTypeProxyget_GetAvailable@228get_Timestamp@230get_InputSignature@232ToString@242-46ToString@242-45ResultVector-ctor@250-46-ctor@250-45Resize@257Maximize@268-1l@275-3ResultSetScalarResultVectorResultScalarResult@DebugTypeProxyVectorResult@DebugTypeProxyActionResultIndexedResultScalarValuedResultVectorValuedResultResizeResultIndexedResult@DebugTypeProxyScalarValuedResult@DebugTypeProxyVectorValuedResult@DebugTypeProxyResizeResult@DebugTypeProxyToString@338-50ToString@338-49ToString@338-48ToString@338-47ToString@339-53ToString@339-52ToString@339-51ToString@340-56ToString@340-55ToString@340-54ToString@341-58ToString@341-57ActionIndexedActionScalarActionVectorActionResizeResultActionIndexedAction@DebugTypeProxyScalarAction@DebugTypeProxyVectorAction@DebugTypeProxyResizeResultAction@DebugTypeProxyStringOfList2@362PartialBuilds@373-4s@373-3ToString@371-59ToString@376-61ToString@376-60GetTopLevelExprByName@399GetTopLevelExprByName@399-1MatchName@404exprs@430exprs@430-1GetScalarExprResult@447-1GetScalarExprResult@447GetVectorExprResultVector@459-1GetVectorExprResultVector@459GetVectorExprResult@471-1GetVectorExprResult@471Extract@494-1AvailableAllResultsOfExpr@511ApplyScalarExpr@522-1ApplyScalarExpr@521-2ApplyScalarExpr@520-3ApplyVectorExpr@534-1results@531-3ApplyVectorExpr@530-2ApplyVectorExpr@529-3ApplyExpr@540results@545-4t@551-7scanOp@614scanOp@616-1Scan@605VisitVector@640-2OneToOneOp@648VisitVector@644-3VisitVector@666-4VisitVector@677-6VisitVector@670-5MultiplexOp@689DemultiplexOp@708MapOp@720ForeachAction@726ForeachAction@730-1ForeachAction@730-2t@735-8Append@752t@782-9ExecuteApply@785t@799-10t@802-11Cons@803-1t@809-12Step@799t@833-13GetVectorResult@852MatchNames@871-1GetSlotByInput@879-2GetSlotByInput@879-1GetSlotByInput@879InputVector@890InputScalar@897BuildDescriptionScopeVectorBoxingMapVector@923-1Map@926-1BoxingScanLeft@935-1ScanLeft@939BoxingDemultiplex@946-1Demultiplex@949BoxingTouch@957-1Stamp@960AsScalar@965ScalarBoxingMap@904-1Map@907BoxingMultiplex@912-1Multiplex@915TimeslotMessage@301-1slotMessage@301gcPrev@306spanGC@315-1$IncrementalBuildToString@998-69ToString@998-68ToString@998-67ToString@998-66ToString@998-65ToString@998-64ToString@998-63ToString@998-62-ctor@1035-48-ctor@1034-47get_Errors@1044get_Warnings@1045ProtectWithDefault@1073ProtectAndDiscard@1076FscoptsPrintOptionInfo@185inputFileFlagsBoth@192referenceFlagAbbrev@197errorsAndWarningsFlags@209errorsAndWarningsFlags@214-2errorsAndWarningsFlags@215-3errorsAndWarningsFlags@217-4errorsAndWarningsFlags@218-5errorsAndWarningsFlags@212-1errorsAndWarningsFlags@221-6errorsAndWarningsFlags@227-7errorsAndWarningsFlags@230-8errorsAndWarningsFlags@233-9outputFileFlagsFsc@244outputFileFlagsFsc@247-1outputFileFlagsFsc@250-2outputFileFlagsFsc@253-3outputFileFlagsFsc@256-4outputFileFlagsFsc@259-5outputFileFlagsFsc@262-6outputFileFlagsFsc@265-7outputFileFlagsFsc@268-8outputFileFlagsFsc@271-9outputFileFlagsFsc@274-10outputFileFlagsFsc@277-11outputFileFlagsFsc@280-12resourcesFlagsFsc@291resourcesFlagsFsc@294-1resourcesFlagsFsc@297-2resourcesFlagsFsc@300-3resourcesFlagsFsc@303-4codeGenerationFlags@313codeGenerationFlags@316-1codeGenerationFlags@319-2codeGenerationFlags@322-3codeGenerationFlags@325-4mlCompatibilityFlag@337languageFlags@341languageFlags@343-1libFlag@353libFlagAbbrev@357codePageFlag@361utf8OutputFlag@371fullPathsFlag@375cliRootFlag@379noFrameworkFlag@391advancedFlagsFsc@402-1advancedFlagsFsc@405-2advancedFlagsFsc@411-3advancedFlagsFsc@415-4advancedFlagsFsc@418-5advancedFlagsFsc@420-6advancedFlagsFsc@423-7advancedFlagsFsc@424-8advancedFlagsFsc@402testFlag@431vsSpecificFlags@450vsSpecificFlags@451-1vsSpecificFlags@452-2vsSpecificFlags@453-3vsSpecificFlags@454-4internalFlags@459internalFlags@460-1internalFlags@471-2internalFlags@472-3internalFlags@473-4internalFlags@478-5internalFlags@479-6internalFlags@479-7internalFlags@480-8internalFlags@481-9internalFlags@482-10internalFlags@482-11internalFlags@483-12internalFlags@484-13internalFlags@484-14internalFlags@488-15internalFlags@489-16internalFlags@490-17internalFlags@491-18internalFlags@492-19internalFlags@493-20internalFlags@494-21internalFlags@495-22internalFlags@496-23internalFlags@497-24internalFlags@499-25internalFlags@500-26internalFlags@501-27internalFlags@502-28internalFlags@503-29internalFlags@504-30internalFlags@505-31internalFlags@506-32internalFlags@509-33internalFlags@510-34internalFlags@511-35internalFlags@512-36internalFlags@513-37internalFlags@515-38internalFlags@519-39compilingFsLibFlag@527compilingFsLib20Flag@532compilingFsLib40Flag@534mlKeywordsFlag@536gnuStyleErrorsFlag@539deprecatedFlagsBoth@543deprecatedFlagsBoth@544-1deprecatedFlagsBoth@545-2deprecatedFlagsFsc@553deprecatedFlagsFsc@554-1deprecatedFlagsFsc@555-2deprecatedFlagsFsc@556-3deprecatedFlagsFsc@557-4deprecatedFlagsFsc@561-5deprecatedFlagsFsc@563-6deprecatedFlagsFsc@564-7deprecatedFlagsFsc@565-8deprecatedFlagsFsc@566-9deprecatedFlagsFsc@567-10deprecatedFlagsFsc@568-11deprecatedFlagsFsc@569-12deprecatedFlagsFsc@571-13deprecatedFlagsFsc@572-14deprecatedFlagsFsc@573-15deprecatedFlagsFsc@574-16miscFlagsBoth@599miscFlagsFsc@604abbreviatedFlagsBoth@614abbreviatedFlagsBoth@615-1abbreviatedFlagsBoth@616-2abbreviatedFlagsBoth@617-3abbreviatedFlagsFsc@626abbreviatedFlagsFsc@627-1abbreviatedFlagsFsc@629-2abbreviatedFlagsFsc@630-3abbreviatedFlagsFsc@631-4abbrevFlagSet@636abbrevFlagSet@636-1testingAndQAFlags@666GetCoreServiceCompilerOptions@722GetCoreServiceCompilerOptions@722-1ReportTime@774-1ReportTime@774gcNow@812spanGC@818ReportTime@819-4ReportTime@819-3ReportTime@819-2ReportTime@822-8ReportTime@822-7ReportTime@822-6ReportTime@822-5InitialOptimizationEnv@850ApplyAllOptimizations@869-1ApplyAllOptimizations@869NormalizeAssemblyRefs@969AttributesBuildHashIncludeNotAllowedInNonScriptHashReferenceNotAllowedInNonScriptHashDirectiveNotAllowedInNonScriptFileNameNotResolvedAssemblyNotResolvedLoadedSourceNotFoundIgnoringMSBuildReferenceResolutionWarningMSBuildReferenceResolutionErrorDeprecatedCommandLineOptionFullDeprecatedCommandLineOptionForHtmlDocDeprecatedCommandLineOptionSuggestAlternativeDeprecatedCommandLineOptionNoDescriptionInternalCommandLineOptionHashLoadedSourceHasIssuesHashLoadedScriptConsideredSourceInvalidInternalsVisibleToAssemblyNameToPhased@407OutputExceptionR@645-1tokenIdToText@791-1foundInContext@1031-1foundInContext@1030-2foundInContext@1028OutputExceptionR@1089-2OutputExceptionR@1088-3OutputExceptionR@1172-4ErrorStyleoutputWhere@1394-4outputWhere@1394-3outputWhere@1394-2outputWhere@1394-1outputWhere@1396-7outputWhere@1396-6outputWhere@1396-5outputWhere@1398-12outputWhere@1398-11outputWhere@1398-10outputWhere@1398-9outputWhere@1398-8outputWhere@1404-17outputWhere@1404-16outputWhere@1404-15outputWhere@1404-14outputWhere@1404-13OutputCanonicalInformation@1423-3OutputCanonicalInformation@1423-2OutputCanonicalInformation@1423-1OutputCanonicalInformation@1424-5OutputCanonicalInformation@1424-4report@1432-1OutputErrorOrWarning@1446OutputErrorOrWarningContext@1465-1OutputErrorOrWarningContext@1465OutputErrorOrWarningContext@1466-4OutputErrorOrWarningContext@1466-3OutputErrorOrWarningContext@1466-2DefaultBasicReferencesForOutOfProjectSources@1494SystemAssemblies@1531TryResolveFileUsingPaths@1611CompilerTargetResolveAssemblyReferenceModeVersionFlagVersionStringVersionFile_VersionNoneVersionString@DebugTypeProxyVersionFile@DebugTypeProxy_VersionNone@DebugTypeProxyAssemblyReferenceUnresolvedAssemblyReferenceResolvedExtensionReferenceTcConfigBuilderimplFiles@1986-1implFiles@1986TurnWarningOff@2031TurnWarningOn@2040AddLoadedSource@2066RemoveReferencedAssemblyByPath@2080AssemblyResolutionTcConfig-ctor@2232-42-ctor@2232-41ComputeCanContainEntryPoint@2427ComputeLightSyntaxInitialStatus@2461resolveLoadedSource@2467GetAvailableLoadedSources@2476GetAvailableLoadedSources@2475-1IsSystemAssembly@2493IsSystemAssembly@2494-1get_SearchPathsForLibraryFiles@2502-1get_SearchPathsForLibraryFiles@2501ResolveLibWithDirectories@2565groupedReferences@2602-1groupedReferences@2599groupedReferences@2597-2groupedReferences@2598-3logmessage@2607-3logmessage@2608-4logwarning@2620-3logwarning@2620-4logwarning@2611-2logerror@2624-2resolvedAsFile@2657f@2655-51f@2654-52f@2653-53toMsBuild@2682-1toMsBuild@2682resolvedByMsbuild@2693resultingResolutions@2710IsResolved@2717-1unresolvedReferences@2726unresolvedReferences@2726-1TryResolveLibsUsingMSBuildRules@2732TryResolveLibsUsingMSBuildRules@2732-1TryResolveLibsUsingMSBuildRules@2734-2TryResolveLibsUsingMSBuildRules@2734-3clo@2192-182clo@2253-183GetScopedPragmasForHashDirective@2760ErrorLoggerFilteringByScopedPragmasWarnSinkImpl@2796DelayedErrorLoggerget_ErrorCount@2813IsScript@2834PrepandPathToQualFileName@2854PrependPathToInput@2861PrependPathToInput@2860-1ComputeAnonModuleName@2865ComputeAnonModuleName@2876-1PostParseModuleImpl@2889PostParseModuleSpec@2912PostParseModuleImpls@2927impls@2932scopedPragmas@2937PostParseModuleSpecs@2947specs@2953-1scopedPragmas@2956-1unwindEL@2978input@2982input@2985-1input@2988-2tokenizer@3014ParseOneInputLexbuf@3022-3ParseOneInputLexbuf@3022-2System.IOTextWriterParseOneInputLexbuf@3022-1ParseOneInputLexbuf@3022-4ParseOneInputLexbuf@3028-5ParseOneInputLexbuf@3030-7ParseOneInputLexbuf@3030-6ParseOneInputLexbuf@3030-8ParseOneInputLexbuf@3029-11ParseOneInputLexbuf@3029-10ParseOneInputLexbuf@3029-9ParseOneInputLexbuf@3029-12res@3034-10flattenSpecs@3038-1flattenDefns@3040-1flattenModSpec@3042flattenModImpl@3043ParseOneInputLexbuf@3012ParseOneInputFile@3059TcAssemblyResolutions-ctor@3072-43-ctor@3073-44TryFindByExactILAssemblyRef@3084resolutions@3092FSharpChoice`2fallBack@3098-1fallBack@3099-2GetAllDllReferences@3115SplitNonFoundationalResolutions@3141references@3184-1PickleToResource@3216WriteOptimizationData@3252ImportedBinaryImportedAssemblyAvailableImportedAssemblyResolvedImportedAssemblyUnresolvedImportedAssemblyResolvedImportedAssembly@DebugTypeProxyUnresolvedImportedAssembly@DebugTypeProxyTcConfigProviderConstant@3297BasedOnMutableBuilder@3298TcImportsGetCcusExcludingBase@3399GetCcusInDeclOrder@3403anameOpt@3440System.ReflectionAssemblyNamebytes@3457bytes@3457-1theActualAssembly@3466AssemblyccuData@3481ccuData@3488-1ccuData@3487-2ccuData@3489-3get_ProviderGeneratedTypeRoots@3516get_ProviderGeneratedTypeRoots@3515-1ToString@3528-28ToString@3528-27ToString@3528-26ToString@3528-25ToString@3528-24OpenILBinaryModule@3560auxModTable@3570MkLoaderForMultiModuleIlAssemblies@3571IsAlreadyRegistered@3588loaderInterface@3596importProvidedType@3652-1isSuppressRelocate@3653-1InjectProvidedNamespaceOrTypeIntoEntity@3666cpath@3641-1typeProviderEnvironment@3687providerAssemblies@3698providerAssemblies@3696-1providers@3712-1providers@3706wasApproved@3713providers@3714-2ImportTypeProviderExtensions@3721-1ImportTypeProviderExtensions@3719ImportTypeProviderExtensions@3727-3ImportTypeProviderExtensions@3727-4ImportTypeProviderExtensions@3727-6ImportTypeProviderExtensions@3727-5ImportTypeProviderExtensions@3727-7ImportTypeProviderExtensions@3727-2ImportTypeProviderExtensions@3737-8path@3744-2IProvidedNamespacetys@3752-5Typeptys@3753-1ptys@3753loop@3757-69providedNamespaces@3760-1ccu@3801ccuinfo@3805ccuinfo@3806-1PrepareToImportReferencedIlDll@3815optDataReaders@3838sigDataReaders@3843data@3860optDataReaders@3870-1codeDir@3892ccu@3910-1ccu@3913-2ccu@3914-3ccu@3914-4data@3923-1optdata@3924-1optdata@3917ccuinfo@3929-2ccuinfo@3930-3ccuRawDataAndInfos@3939-1ccuRawDataAndInfos@3859ccuRawDataAndInfos@3855-2PrepareToImportReferencedFSharpDll@3946PrepareToImportReferencedFSharpDll@3950-3PrepareToImportReferencedFSharpDll@3950-2PrepareToImportReferencedFSharpDll@3952-4PrepareToImportReferencedFSharpDll@3954-5PrepareToImportReferencedFSharpDll@3954-6PrepareToImportReferencedFSharpDll@3950-1RegisterAndPrepareToImportReferencedDll@3967RegisterAndPrepareToImportReferencedDll@3983-1RegisterAndPrepareToImportReferencedDll@3984-2RegisterAndImportReferencedAssemblies@4005RegisterAndImportReferencedAssemblies@4011-1search@4183-5search@4177-6getTypeCcu@4173ReportUnresolvedAssemblyReferences@4217-1ReportUnresolvedAssemblyReferences@4217ReportUnresolvedAssemblyReferences@4219-2clo@3330-184RequireResolved@4262RequireDLL@4270ProcessMetaCommand@4307-1ProcessMetaCommand@4324-2ProcessMetaCommand@4291-3WarnOnIgnoredSpecDecls@4347-1WarnOnIgnoredImplDecls@4354-1ProcessMetaCommandsFromModuleSpec@4361-1ProcessMetaCommandsFromModuleSpec@4361ProcessMetaCommandsFromModuleImpl@4370-1ProcessMetaCommandsFromModuleImpl@4370addNoWarn@4391addReferencedAssemblyByPath@4392-1addLoadedSource@4393-1getWarningNumber@4400-1addReferencedAssemblyByPath@4401-2addLoadedSource@4402-2LoadClosureCodeContextimplicitOpen@4666internalsAreVisibleHere@4676-1ccus@4683GetInitialTypecheckerEnv@4689TypecheckerSigsAndImplsqnameOrder@4708TcStateccu@4739-5ccu@4747-6ccu@4748-7TypecheckOneInputEventually@4905-2TypecheckOneInputEventually@4901-8TypecheckOneInputEventually@4875-7TypecheckOneInputEventually@4865-6TypecheckOneInputEventually@4855-5TypecheckOneInputEventually@4852-4TypecheckOneInputEventually@4831-11TypecheckOneInputEventually@4820-10TypecheckOneInputEventually@4812-9TypecheckOneInputEventually@4804-3TypecheckOneInputEventually@4798-1TypecheckOneInputEventually@4797-12TypecheckOneInputEventually@4797unwindEL@4918-3topAttrs@4925-6TypecheckMultipleInputs@4934TypecheckSingleInputAndFinishEventually@4940-1TypecheckSingleInputAndFinishEventually@4939TypecheckClosedInputSetFinish@4949OptionSwitchOptionSpecOptionClearOptionFloatOptionIntOptionIntListOptionIntListSwitchOptionRestOptionSetOptionStringOptionStringListOptionStringListSwitchOptionUnitOptionHelpOptionGeneralOptionClear@DebugTypeProxyOptionFloat@DebugTypeProxyOptionInt@DebugTypeProxyOptionSwitch@DebugTypeProxyOptionIntList@DebugTypeProxyOptionIntListSwitch@DebugTypeProxyOptionRest@DebugTypeProxyOptionSet@DebugTypeProxyOptionString@DebugTypeProxyOptionStringList@DebugTypeProxyOptionStringListSwitch@DebugTypeProxyOptionUnit@DebugTypeProxyOptionHelp@DebugTypeProxyOptionGeneral@DebugTypeProxyCompilerOptionCompilerOptionBlockPublicOptionsPrivateOptionsPublicOptions@DebugTypeProxyPrivateOptions@DebugTypeProxycompilerOptionUsage@4995-1compilerOptionUsage@4995compilerOptionUsage@4996-3compilerOptionUsage@4996-2compilerOptionUsage@4998-5compilerOptionUsage@4998-4compilerOptionUsage@4999-7compilerOptionUsage@4999-6compilerOptionUsage@5000-9compilerOptionUsage@5000-8compilerOptionUsage@5001-11compilerOptionUsage@5001-10compilerOptionUsage@5002-13compilerOptionUsage@5002-12compilerOptionUsage@5004-15compilerOptionUsage@5004-14printWord@5028-2printWord@5028-1printWord@5025printPublicOptions@5042equals@5045-1publicBlocks@5046headingOptions@5051headingOptions@5051-1consider@5048-1FSharpSet`1dumpCompilerOption@5058-1dumpCompilerOption@5058dumpCompilerOptionBlock@5077dumpCompilerOptionBlock@5076-1dumpCompilerOptionBlocks@5078specs@5094-2attempt@5200-1attempt@5207-2attempt@5214-3attempt@5221-4ScriptPreprocessClosureClosureDirectiveClosedSourceFileSourceFile@DebugTypeProxyClosedSourceFile@DebugTypeProxyObservedCreateScriptSourceTcConfig@4477getWarningNumber@4506-2addReferencedAssemblyByPath@4507-3addLoadedSource@4508-3errorLogger@4538-1unwindEL@4543-1AddFileIfNotSeen@4551FindClosure@4527ExtractOne@4578errorLogger@4592-2unwindEL@4598-2references@4600-2isRootRange@4609protoClosure@4642TraceInteropMessageBeepType$TraceCall-cctor@30-1CurrentThreadInfo@56-1CurrentThreadInfo@56LogMessage@68-1LogMessage@68LogMessage@72-3LogMessage@72-2IlxgenDropErasedTyargs@52takenFieldNames@86-1ChooseParamNames@89markup@94CheckCodeDoesSomething@99CheckCodeDoesSomething@100-1tns@105chooseName@106-1IComparer`1AttributeDecoder-ctor@125-35reports@139AddReport@140NewCounter@145NewCounter@146-1IlxGenIntraAssemblyInfoIlxGenBackendIlxGenOptionscenvEmitSequencePointStateCompileLocationCompLocForFixedPath@275ns@276encl@278CleanUpGeneratedTypeName@302TypeReprEnvAdd@365-1VoidNotOKPtrsOKilTypeInst@418GenTyAppAux@412tps@455-3GenUnionCaseRef@466GenUnionRef@486ComputeUnionHasHelpers@499GenTypes@521GenParamTypes@538GenTypeArgs@540GenFieldSpecForStaticField@564IlxClosureInfoValStorageStaticFieldStaticPropertyEnvArgLocalStaticField@DebugTypeProxyStaticProperty@DebugTypeProxyMethod@DebugTypeProxyEnv@DebugTypeProxyArg@DebugTypeProxyLocal@DebugTypeProxyOptionalShadowLocal_NoShadowLocalShadowLocal_NoShadowLocal@DebugTypeProxyShadowLocal@DebugTypeProxyNamedLocalIlxClosureInfoNamedLocalIlxClosureInfoGeneratorNamedLocalIlxClosureInfoGeneratedNamedLocalIlxClosureInfoGenerator@DebugTypeProxyNamedLocalIlxClosureInfoGenerated@DebugTypeProxyModuleStorageBranchCallItemBranchCallClosureBranchCallMethodBranchCallClosure@DebugTypeProxyBranchCallMethod@DebugTypeProxyMarkIlxGenEnvAddStorageForLocalVals@754-1AddStorageForLocalVals@754ilTy@813GetMethodSpecForMemberVal@826-3GetMethodSpecForMemberVal@826-2GetMethodSpecForMemberVal@826-1GetMethodSpecForMemberVal@826GetMethodSpecForMemberVal@829-4ilMethodInst@836ilMethodInst@843-1hasLiteralAttr@909-2ilMethodInst@931-2acc@946-13ComputeStorageForNonLocalModuleOrNamespaceRef@951-1ComputeStorageForNonLocalModuleOrNamespaceRef@950eenv@959ComputeStorageForExternalCcu@968-1ComputeStorageForExternalCcu@967AddBindingsForLocalModuleType@973AddBindingsForLocalModuleType@972-1AddBindingsForTycon@983AddBindingsForModuleDefs@986AddBindingsForModuleDef@994AddBindingsForModuleDef@993-1allocVal@1022AddIncrementalLocalAssemblyFragmentToIlxGenEnv@1023HashRangeSorted@1055HashRangeSorted@1055-1HashRangeSorted@1055-2PropKeyht@1089MergePropertyDefs@1090TypeDefBuilderTypeDefsBuilder-ctor@1101-36-ctor@1131-37Close@1139-1FindNestedTypeDefsBuilder@1155AssemblyBuilder-ctor@1173-38-ctor@1181-39AddInitializeScriptsInOrderToEntryPoint@1198-1AddInitializeScriptsInOrderToEntryPoint@1198instrs@1236-163orderedReflectedDefinitions@1257orderedReflectedDefinitions@1256-1orderedReflectedDefinitions@1255-2CodeGenBuffermsg@1324-3msg@1324-2msg@1334-6msg@1334-5msg@1334-4EmitInstrs@1347instrs@1465-164Close@1470-2sequelLeaveHandlerBrCmpThenBrOrContinueDiscardThenEndLocalScopeLeaveHandler@DebugTypeProxyBr@DebugTypeProxyCmpThenBrOrContinue@DebugTypeProxyDiscardThen@DebugTypeProxyEndLocalScope@DebugTypeProxyinnerVals@1560localDebugSpecs@1573localDebugSpecs@1571-2localDebugSpecs@1571-1CodeGenThen@1577dump@1592-4dump@1592-3dump@1592-2dump@1592-1lab2pc@1594-1AlwaysSuppressSequencePoint@1638AlwaysSuppressSequencePoint@1638-1WillGenerateSequencePoint@1660GenExpr@1790GenExpr@1793-1GenExpr@1796-2GenExpr@1799-3GenExprs@1829CodeGenMethodForExpr@1835sequelAfterDiscard@1849formalTyvars@1978argtys@2014-5relevantFields@2034relevantFields@2033-1GenAllocRecd@2051GenAllocRecd@2038-1GenNewArraySimple@2060GenNewArray@2090GenNewArray@2090-1GenNewArray@2080-2GenNewArray@2080-3GenNewArray@2081-4GenNewArray@2081-5GenNewArray@2082-6GenNewArray@2082-7GenNewArray@2083-8GenNewArray@2083-9GenNewArray@2084-10GenNewArray@2084-11GenNewArray@2085-12GenNewArray@2085-13GenNewArray@2086-14GenNewArray@2086-15GenNewArray@2087-16GenNewArray@2087-17GenNewArray@2088-18GenNewArray@2088-19GenNewArray@2089-20GenNewArray@2089-21GenNewArray@2092-22GenNewArray@2094-23GenUntupledArgsDiscardingLoneUnit@2274GenUntupledArgExpr@2286GenUntupledArgExpr@2297-2GenUntupledArgExpr@2292-1GenApp@2317ntmargs@2333mkFormalParams@2389-1numEnclILTypeArgs@2434isDllImport@2456hasByrefArg@2457hasMDArrayParameter@2511fsiScoRefOpt@2520typeofGenericArgs@2569getNameExprs@2570ilActualArgs@2574ilActualArgs@2574-1ilActualArgs@2574-2GenApp@2577-1GenApp@2685-3GenApp@2714-4GenApp@2683-2ilContractClassTyargs@2752ilxClosureApps@2797-2ilxClosureApps@2795-1ilxClosureApps@2795ilxClosureApps@2798-3ilxClosureApps@2803-4GenTryCatch@2859GenTryFinally@2952ilTyArgs@3117ilReturnTys@3118err@3123-8err@3123-7ilAfterInst@3121ilAfterInst@3120-1mkList@3286-1typeExprs@3287typeExprs@3287-1hasByrefArg@3306-1ilReturnTys@3317-1GenDefaultValue@3428subTypeConstraints@3444subTypeConstraints@3444-1refTypeConstraint@3445notNullableValueTypeConstraint@3446defaultConstructorConstraint@3447ilParams@3496ilParams@3506-1ilRetTy@3507ilOverrideMethRef@3521GenMethodImpl@3519eenvForMeth@3575genMethodAndOptionalMethodImpl@3616-1GenObjectExpr@3621mimpls@3628interfaceTys@3630interfaceTys@3630-1stateVarsSet@3645eenvouter@3649getFreshMethod@3674GenGenericParams@3765GenGenericParams@3765-1GenGenericArgs@3766GenGenericArgs@3766-1boundv@3860cloFreeVars@3890ilCloFreeVars@3930ilCloFreeVars@3929-1ilCloFreeVarStorage@3934takenNames@3974getClosureArgs@3985-1narginfo@4002takenNames@4132-1envForDelegeeMeth@4148repeatSP@4248GenDecisionTreeSuccess@4343GenDecisionTreeSuccess@4344-1targetInfos@4372Tuple`8caseLabels@4425dests@4487-1mn@4503-1mn@4503-2mx@4504mx@4504-1destinationLabels@4508destinationLabels@4508-1dests@4465-2GenDecisionTreeCases@4527bindsPossiblyRequiringFixup@4595selfv@4609computeFixupsForOneRecursiveVar@4614-3computeFixupsForOneRecursiveVar@4611-2computeFixupsForOneRecursiveVar@4620-4computeFixupsForOneRecursiveVar@4606-1recursiveVars@4625GenLetRecBinds@4632-1GenLetRecBinds@4627GenLetRecBinds@4644-3GenLetRecBinds@4639-2GenLetRec@4654GenLetRec@4654-1ilAttribs@4800ilAttribs@4821-1otherAttribs@4873otherAttribs@4873-1GenMarshal@4875inFlag@4991outFlag@4992optionalFlag@4993attribs@5000-3attribs@5000-4attribs@4999-5attribs@4999-6attribs@4998-7attribs@4998-8argInfosAndTypes@5009argInfosAndTypes@5014-1argInfosAndTypes@5016-2GenParams@5019ComputeFlagFixupsForMemberBinding@5090ComputeFlagFixupsForMemberBinding@5114-2ComputeFlagFixupsForMemberBinding@5115-3ComputeFlagFixupsForMemberBinding@5092-1implflags@5119-1hasPreserveSigAttr@5124attrs@5135-20attrs@5135-21attrs@5134-22attrs@5134-23eenvForMeth@5171-1GenMethodForBinding@5185bodyExpr@5197attrs@5213-24attrs@5213-25attrs@5212-26attrs@5212-27GenMethodForBinding@5216-1GenMethodForBinding@5219-2GenMethodForBinding@5226-3ilAttrsThatGoOnPrimaryItem@5236isExplicitEntryPoint@5247-1access@5285-7mdef@5311ilArgTys@5351GenBindings@5410GenGetLocalVals@5541j@5562cloinfoGenerate@5573AllocStorageForBinds@5594AllocStorageForBinds@5598-1EmitSaveStack@5653EmitSaveStack@5654-1EmitRestoreStack@5661GenAttribArg@5705props@5747-3ilArgs@5759GenAttrs@5762GenCompilationArgumentCountsAttr@5765CreatePermissionSets@5784-1CreatePermissionSets@5775GenModuleExpr@5824-2GenModuleExpr@5824-1GenModuleExpr@5819GenModuleDefs@5829GenModuleDef@5834GenModuleDef@5839-1GenTopImpl@5932GenTopImpl@5971-2GenTopImpl@5969-1GenTopImpl@6023-3GenTopImpl@6032-4GenForceWholeFileInitializationAsPartOfCCtor@6040-1GenForceWholeFileInitializationAsPartOfCCtor@6040GenEqualsOverrideCallingIComparable@6053ilAttrs@6091ilPropDef@6132ilIntfTys@6157GenTypeDef@6197GenTypeDef@6196-1methodImpls@6208defaultMemberAttrs@6236GenTypeDef@6250-2GenTypeDef@6251-3generateDebugProxies@6254ilDebugDisplayAttributes@6260CustomAttrs@6268-1CustomAttrs@6268-2CustomAttrs@6266isEmptyStruct@6292fieldSummaries@6300Tuple`1ilFieldDefs@6322-1ilFieldDefs@6335-2ilFieldDefs@6339-3ilFieldDefs@6346-4ilFieldDefs@6346-5ilFieldDefs@6344-6ilFieldDefs@6344-7ilFieldDefs@6365-8ilFieldDefs@6319ilPropertyDefsForFields@6379methodDefs@6480-1methodDefs@6484-2methodDefs@6508-3methodDefs@6399tdef@6575tdef@6605-1validateExplicit@6619validateSequential@6626alternatives@6641GenTypeDef@6696-4GenExnDef@6715interfaces@6792-4eenv@6816-1IlxGenResultsquotationResourceBytes@6874-1quotationResourceBytes@6869ExecutionContextgminfo@6917-1MethodInfodefaultOf@6921IlxAssemblyGenerator-ctor@7026-40AddExternalCcus@7031CGLowertopLowerImplFile@68LowerImplFile@69-1LoweredSeqFirstPhaseResultLower@203-1Lower@234-2Lower@252-3Lower@286-4Lower@329-5Lower@390-6Lower@395-7tgl@396labs@397stateVars@398significantClose@399Lower@403-9Lower@409-10Lower@410-11Lower@400-8tyConfirmsToSeq@439-1Lower@453-12Lower@342-13Lower@359-14Lower@374-15pcs@496dtree@529-4addJumpTable@522-1TlrTree`1TreeNodeLeafNodeTreeNode@DebugTypeProxyLeafNode@DebugTypeProxycollect@67-7collect@67-7TGetValsBoundUnderMustInline@158BindingGroupSharingSameReqdItemsget_Pairs@325ToString@327-21fclassOrder@329ReqdItemReqdSubEnvReqdValReqdSubEnv@DebugTypeProxyReqdVal@DebugTypeProxyreqdItemOrder@345ReqdItemsForDefnget_ReqdSubEnvs@358get_ReqdVals@359ToString@372-22ToString@373-23PackedReqdItemsAbortTLRenv@710-32carrierMapFor@713-1carrierMapFor@713-2valsSubEnvFor@714vals@722-1vals@753-2vals@755-3packEnv@759-2cmapPairs@764aenvExprFor@767-1pack@772unpackCarrier@774unpackSubenv@778-1unpackSubenv@776packEnv@709-1FlatEnvPacks@802-1FlatEnvPacks@802wf@850fc@851-1envp@852newArgtys@859fHatTy@860CreateNewValuesForTLR@868MakeTLRDecisions@1355Pass4_RewriteAssemblyRewriteContextIsRecursiveRewriteStateMakePreDec@972decs@978envp@1005-1aenvExprs@1010vsExprs@1011fHat@1012fRebinding@1020-1fRebinding@1008wf@1025-1fHat@1026-1fHat_args@1038fHat_body@1039fHat_body@1040-1fHatNewBinding@1025-1shortRecBinds@1045TransBindings@1055forceTopBindToHaveArity@1065TransApp@1088fc@1093-2envp@1094-2fHat@1095-2tys@1096-4aenvExprs@1097-1TransExpr@1123TransExpr@1131-1TransExpr@1150-2TransExpr@1151-3TransExpr@1151-4TransExpr@1151-5TransExpr@1154-7TransExpr@1154-6TransExpr@1162-9TransExpr@1162-8TransExpr@1169-11TransExpr@1169-10TransExpr@1176-12TransExpr@1179-14TransExpr@1179-13TransExpr@1184-15TransExpr@1189-16TransLinearExpr@1246TransLinearExpr@1204-1TransLinearExpr@1212-2e@1223g@1224-14g@1224-13TransLinearExpr@1222-3e@1239-1g@1240-17g@1240-16g@1240-18TransLinearExpr@1238-4TransBindingRhs@1260TransDecisionTree@1266TransDecisionTreeCase@1275-1TransDecisionTree@1279-1TransValBindings@1289TransModuleDefs@1296TransModuleBindings@1315Pass2_DetermineReqdItemsstateSaveFrame@475logIntoFrame@485-1LogShortCall@490FreeInBindings@499accBinds@529-2reqdVals0@538z@542-1accBinds@545-3fc@587directCallReqdTypars@588-1directCallReqdTypars@586reqdTypars@592closeStep@585-1folder@624DetermineReqdItems@642Pass1_DetermineTLRAndAritiesGetMaxNumArgsAtUses@201hasDelayedRepr@221-1hasDelayedRepr@221IsValueRecursionFree@222fArities@231fArities@232-1fArities@236-2tlrS@238DetermineTLRAndArities@240Zmapforce@55-5force@55-4DetupleTupleStructure_UnknownTSTupleTS_UnknownTS@DebugTypeProxyTupleTS@DebugTypeProxyValReprInfoForTS@395andTS@402uncheckedExprTS@410uncheckedTypeTS@416rebuild@424-1callPatternOrder@447andCPs@469-1siteCP@478TransformedFormal_SameArgNewArgs_SameArg@DebugTypeProxyNewArgs@DebugTypeProxyTransformvs@521-2vs@525-3transformedFormals@513topValInfo@536-1tys1r@538fCty@541zipTSTyp@569-1zipTSListTypList@582-1zipTSListTypList@583-2zipCallPatternArgTys@587trimTsByAccess@600-1trim@612-1trimTsByVal@608-1trimTsByFormal@616-1tss@623tys@632-3selectTransform@692-2selectTransform@682-1penvenvbuildProjections@756mkLets@803transFormal@837transRebind@843y1Ps@881rebinds@884passBind@887binds@927-8passImplFile@940GlobalUsageAnalysisGetValsBoundInExpr@185accessorResultslogRecBindings@247logRecBindings@248-1recognise@308-1collect@316-5exprUsageIntercept@304targetIntercept@340tmethodIntercept@341UsageFolders@347UsageFolders@345-1UsageFolders@346-2OptTypeValueInfoExprValueInfoSizeValueValValueTupleValueRecdValueUnionCaseValueConstValueCurriedLambdaValueConstExprValueSizeValue@DebugTypeProxyValValue@DebugTypeProxyTupleValue@DebugTypeProxyRecdValue@DebugTypeProxyUnionCaseValue@DebugTypeProxyConstValue@DebugTypeProxyCurriedLambdaValue@DebugTypeProxyConstExprValue@DebugTypeProxyValInfoValInfos-ctor@142-32-ctor@150-34-ctor@150-33ModuleInfoseqL@164namemapL@165exprValueInfosL@177moduleInfoL@180moduleInfoL@181-1Summary`1bound@233-1OptimizationSettingsIncrementalOptimizationEnvIsPartialExprVal@367IsPartialModuleOrNamespaceVal@373IsPartialModuleOrNamespaceVal@374-1UnionModuleInfos@393UnionModuleInfos@394-1UnionModuleInfos@394-2BindValsInModuleOrNamespace@476BindValsInModuleOrNamespace@475-1nms@501-2nms@501-3BindTypeVarsToUnknown@502BindTypeVarsToUnknown@505-1AddTotalSizesFlat@953AddFunctionSizesFlat@954OrEffectsFlat@960OrTailcallsFlat@963AbstractLazyModulInfoByHiding@1010AbstractLazyModulInfoByHiding@1011-1AbstractLazyModulInfoByHiding@1012-2AbstractLazyModulInfoByHiding@1013-3AbstractLazyModulInfoByHiding@1014-4abstractExprInfo@1049-1abstractExprInfo@1049-2abstractExprInfo@1054-3abstractExprInfo@1054-4abstractModulInfo@1071-1abstractModulInfo@1070-2abstractLazyModulInfo@1073abstractModulInfo@1081-4abstractModulInfo@1082-5abstractLazyModulInfo@1083-2boundVars@1096abstractExprInfo@1106-6abstractExprInfo@1109-7abstractExprInfo@1143-8abstractExprInfo@1126-9abstractExprInfo@1127-10abstractExprInfo@1126-11abstractExprInfo@1127-12abstractModulInfo@1161-7abstractModulInfo@1162-8remapModulInfo@1191-1RemapLazyModulInfo@1199SplitValuesByIsUsedOrHasEffect@1255ExprsHaveEffect@1297BindingsHaveEffect@1298OpHasEffect@1313ExpandStructuralBinding@1442argBind@1447ExpandStructuralBinding@1453-1|AnyTupleTrans|@1517|AnyTupleTrans|@1518-1|AnyQueryBuilderOpTrans|_|@1524tryRewriteToSeqCombinators@1587ty@1589-2OptimizeExpr@1691splices@1696splices@1696-1splices@1696-2OptimizeExpr@1712-1OptimizeMethods@1756env@1762-28OptimizeInterfaceImpls@1776argValues@1851OptimizeExprOpFallback@1892vs@2014-1fvsN@2022fvs@2023-1OptimizeLetRec@2024OptimizeLinearExpr@2087OptimizeLinearExpr@2043-1g@2064-9OptimizeLinearExpr@2061-2TakeAddressOfStructArgumentIfNeeded@2287TakeAddressOfStructArgumentIfNeeded@2289-1args2@2327args2@2349-1args2@2358-2TryInlineApplication@2508isSecureMethod@2540args'@2553-2shapes@2593-1shapes@2590shapes@2596-2env@2655-29env@2656-30env@2658-31OptimizeLambdas@2680-1OptimizeLambdas@2680OptimizeLambdas@2682-3OptimizeLambdas@2682-2OptimizeLambdas@2684-6OptimizeLambdas@2684-5OptimizeLambdas@2684-4OptimizeLambdas@2686-9OptimizeLambdas@2686-8OptimizeLambdas@2686-7OptimizeLambdas@2689-11OptimizeLambdas@2689-10OptimizeLambdas@2691-13OptimizeLambdas@2691-12OptimizeExprsThenReshapeAndConsiderSplits@2718OptimizeExprsThenConsiderSplits@2723OptimizeFlatExprsThenConsiderSplits@2727OptimizeDecisionTreeTargets@2733ReshapeExpr@2739ComputeSplitToMethodCondition@2765OptimizeDecisionTree@2849OptimizeSwitch@2893OptimizeSwitch@2897-1OptimizeSwitchFallback@2907einfo@2971OptimizeBindings@3008dead@3031-1dead@3028deadSet@3039mty@3053elimModTy@3055-1elimModDef@3061-1elimModDef@3064-2elim_mbind@3074OptimizeModuleDef@3097OptimizeModuleBindings@3120-1OptimizeModuleBindings@3120OptimizeModuleDefs@3131-1OptimizeModuleDefs@3131p_ExprValueInfo@3184p_ExprValueInfo@3185-1p_ExprValueInfo@3188-2p_ModuleInfo@3196-1p_ModuleInfo@3196p_ModuleInfo@3197-2p_LazyModuleInfo@3202loop@3207-67u_ModuleInfo@3226u_ModuleInfo@3226-1u_LazyModuleInfo@3229TypeCheckerisThreadOrContextStatic@57isThreadOrContextStatic@58-1BakedInMemberConstraintNameFunctionExpectedNotAFunctionRecursionRecursiveUseCheckedAtRuntimeLetRecEvaluatedOutOfOrderLetRecCheckedAtRuntimeLetRecUnsoundTyconBadArgsUnionCaseWrongArgumentsUnionCaseWrongNumberOfArgsFieldsFromDifferentTypesFieldGivenTwiceMissingFieldsFunctionValueUnexpectedUnitTypeExpectedUnionPatternsBindDifferentNamesVarBoundTwiceValueRestrictionFieldNotMutableValNotMutableValNotLocalInvalidRuntimeCoercionIndeterminateRuntimeCoercionIndeterminateStaticCoercionRuntimeCoercionSourceSealedCoercionTargetSealedUpcastUnnecessaryTypeTestUnnecessaryStaticCoercionShouldUseBoxSelfRefObjCtorVirtualAugmentationOnNullValuedTypeNonVirtualAugmentationOnNullValuedTypeUseOfAddressOfOperatorDeprecatedThreadStaticBindingWarningIntfImplInIntrinsicAugmentationIntfImplInExtrinsicAugmentationOverrideInIntrinsicAugmentationOverrideInExtrinsicAugmentationNonUniqueInferredAbstractSlotStandardOperatorRedefinitionWarningexists@128-2SafeInitDataSafeInitField_NoSafeInitInfoSafeInitField@DebugTypeProxy_NoSafeInitInfo@DebugTypeProxyCtorInfoUngeneralizableItemTcEnvAdjustCtorShapeCounter@331ExitCtorShapeRegion@332addFreeItemOfTy@345addFreeInModuleTy@348addFreeInModuleTy@348-1addFreeInModuleTy@349-2addFreeItemOfModuleTy@355AddValMapToNameEnv@358AddValListToNameEnv@361env@374-9env@379-10env@380-12env@380-11env@385-13env@386-15env@386-14env@391-16env@397-17AddLocalTyconRefs@404env@410-18env@419-19AddRootModuleOrNamespaceRefs@424modrefs@429tcrefs@431-19AddNonLocalCcu@433modrefs@439-1tcrefs@441-20env@443-20env@449-21env@456-22RegisterDeclaredTypars@462-1RegisterDeclaredTypars@462AddDeclaredTypars@465instantiationGenerator@519MakeInnerEnv@565LocateEnv@599BuildRootModuleType@604BuildRootModuleExpr@609ImplicitlyOpenOwnNamespace@618SettersOfPropInfos@693GettersOfPropInfos@694AfterTcOverloadResolution_DoNothingSendToSinkReplaceWithOverrideAndSendToSink_DoNothing@DebugTypeProxySendToSink@DebugTypeProxyReplaceWithOverrideAndSendToSink@DebugTypeProxyForMethods@714ForMethods@717-1ForMethods@717-2sendPropertyToSink@723-1ForConstructors@740ForNewConstructors@752ForNewConstructors@752-1tcMeasure@763-1PartialValReprInfooptAttrs@866-1TranslateTopValSynInfo@891ValMemberInfoTransientoptIntfSlotTys@923memberInfo@931compiledName@948-1compiledName@948MakeMemberDataAndMangledNameForMemberVal@955OverridesOKExplicitTyparInfoArgAndRetAttribsDeclKindPrelimValScheme1PrelimValScheme2ValSchemeTcPatPhase2InputCheckedBindingInfonleref@1182PublishModuleDefn@1188PublishTypeDefn@1195PublishValueDefnPrim@1199inlineFlag@1309implflags@1315MakeAndPublishVals@1394MakeAndPublishBaseVal@1400InstanceMembersNeedSafeInitCheck@1406AdjustAndForgetUsesOfRecValue@1457FSharpRef`1RecursiveUseFixupPointsGetAllUsesOfRecValue@1500ChooseCanonicalDeclaredTyparsAfterInference@1509ChooseCanonicalDeclaredTyparsAfterInference@1516-1PlaceTyparsInDeclarationOrder@1530-1PlaceTyparsInDeclarationOrder@1530computeRelevantTypars@1558-2computeRelevantTypars@1558-1GeneralizeVal@1568DontGeneralizeVals@1581topValInfo@1675valSchemes@1690MakeSimpleVals@1692sink@1716MakeAndPublishSimpleVals@1729-1MakeAndPublishSimpleVals@1729tps@1754-2FreshenTyconRef@1756FreshenTyconRef@1759-1FreshenAbstractSlot@1800frefSets@1814relevantTypeSets@1818-1relevantTypeSets@1818tcref@1821tcref@1821-1BuildFieldMap@1835-2BuildFieldMap@1834-1BuildFieldMap@1834ApplyUnionCaseOrExnTypes@1878-1ApplyUnionCaseOrExnTypes@1878ApplyUnionCaseOrExnTypes@1879-2ApplyUnionCaseOrExnTypesForPat@1882-1ApplyUnionCaseOrExnTypesForPat@1882ApplyUnionCaseOrExnTypesForPat@1883-2SyntacticUnscopedTyparEnvHideUnscopedTypars@1913GeneralizeConstrainedTyparOptionsNormalizedBindingRhsNormalizedBindingPatternInfoNormalizedBindingIsObjExprBindingTcValEarlyGeneralizationConsistencyCheck@2539TcVal@2640TcVal@2644-1TcVal@2628-2TcVal@2632-3TcVal@2607-4TcVal@2613-5ApplicableExprisNonFlexibleType@2757curriedActualTypes@2760MakeApplicableExprWithFlex@2762MakeApplicableExprWithFlex@2762-1MakeApplicableExprWithFlex@2763-2curriedFlexibleTypes@2768MakeApplicableExprWithFlex@2777-3MakeApplicableExprWithFlex@2777-4TcRuntimeTypeTest@2804tcVal@2843BuildPossiblyConditionalMethodCall@2850-1BuildPossiblyConditionalMethodCall@2850GetMethodArgs@3002GetMethodArgs@3004-1CompilePatternForMatchClauses@3025allEquivReturnTypes@3103-1isInt32OrObjectIndexer@3106elems@3257-3|ExprAsPat|_|@3258|ExprAsPat|_|@3259-1YieldFree@3270-1YieldFree@3274-2YieldFree@3275-3InitializationGraphAnalysisStatePreInitializationGraphEliminationBindingfixupsl@3345bindsWithoutLaziness@3346rvs@3347CheckExpr@3375-1CheckBinding@3432-7CheckExpr@3393-2CheckExpr@3394-3CheckExpr@3394-4CheckExpr@3394-5CheckExpr@3397-6CheckExpr@3398-7CheckExpr@3398-8CheckExpr@3398-9CheckExpr@3375-10CheckDecisionTree@3433-2CheckDecisionTree@3434-3CheckDecisionTreeTarget@3437-3EliminateInitializationGraphs@3475ddgNodes@3481ddg@3482EliminateInitializationGraphs@3483-1EliminateInitializationGraphs@3512-3EliminateInitializationGraphs@3494-2DelayedItemDelayedTypeAppDelayedAppDelayedDotLookupDelayedSetDelayedTypeApp@DebugTypeProxyDelayedApp@DebugTypeProxyDelayedDotLookup@DebugTypeProxyDelayedSet@DebugTypeProxyNewSlotsOKImplictlyBoundTyparsAllowedCheckConstraintsTypeRealizationPassMemberOrValContainerInfoContainerInfoNormalizedRecBindingDefnTyconBindingDefnTyconBindingDefnsTyconMemberDataValSpecResultRecursiveBindingDefnInfoRecursiveBindingInfoPreCheckingRecursiveBindingPreGeneralizationRecursiveBindingPostGeneralizationRecursiveBindingPostBindCtorThisVarRefCellRecursiveBindingmemFlagsOpt@3786TcTyparConstraint@3832FSharpFunc`6TcTyparConstraint@3834-1TcTyparConstraint@3836-2TcTyparConstraint@3838-3TcTyparConstraint@3840-4TcTyparConstraint@3842-5TcPseudoMemberSpec@3888tys@3890-2argtys@3903-4TcValSpec@3943fakeArgReprInfos@3960-1fakeArgReprInfos@3960-2fakeArgReprInfos@3960generateOneMember@3970-1partialValReprInfo@3987AttributeTargetsargtysl@4001-1argtysl@3999argtysl@3998-2argtysl@3998-3ty'@4004ty'@4004-1generateOneMember@4018-2TcValSpec@4041-1partialValReprInfo@4045-1TcTyparOrMeasurePar@4075hasMeasureAttr@4086hasEqDepAttr@4087hasCompDepAttr@4088attrs@4089-18attrs@4089-19TcTyparDecls@4099TcTypeOrMeasure@4138TcTypeOrMeasure@4160-1TcTypes@4275TcTypesOrMeasures@4304TcTypesOrMeasures@4301-1TcTyparConstraints@4312-1TcTyparConstraints@4312staticParameters@4386-3staticParameters@4387-4args@4390-8unnamedArgs@4393otherArgs@4394namedArgs@4395-1namedArgs@4395-2otherArgs@4396-1TcProvidedTypeAppToStaticConstantArgs@4401-1TcProvidedTypeAppToStaticConstantArgs@4401TcProvidedTypeAppToStaticConstantArgs@4401-2TcProvidedTypeAppToStaticConstantArgs@4403-4TcProvidedTypeAppToStaticConstantArgs@4403-3spKind@4415spName@4416-1argsInStaticParameterOrderIncludingDefaults@4422-1argsInStaticParameterOrderIncludingDefaults@4427-2argsInStaticParameterOrderIncludingDefaults@4428-3argsInStaticParameterOrderIncludingDefaults@4414isGenerated@4463TcTypeApp@4483kindsForArgs@4489TcTypeApp@4492-1ValidateOptArgOrder@4570TcSimplePats@4600TcPatBindingName@4623TcPatAndRecover@4640TcPat@4662TcPat@4657-1TcPat@4665-2TcPat@4674-3TcPat@4677-4TcPat@4687-5TcPat@4705-6TcPat@4710-7TcPat@4713-8TcPat@4714-10TcPat@4714-9TcPat@4723-11convSynPatToSynExpr@4750-2convSynPatToSynExpr@4762-3convSynPatToSynExpr@4750-1delayed@4774TcPat@4785-12TcPat@4814-14TcPat@4811-13TcPat@4826-15TcPat@4837-16TcPat@4847-17TcPat@4858-19TcPat@4858-18TcPat@4866-20args'@4868TcPat@4870-22TcPat@4867-21ftys@4878TcPat@4884-24TcPat@4880-23TcPat@4885-26TcPat@4885-25TcPat@4891-27TcPat@4895-28TcPat@4899-29TcPat@4901-30TcPatterns@4905RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects@4929env@4981-23TcExprThatCanBeCtorBody@4999TcExprs@5071flexes@5206TcExprUndelayed@5218TcExprUndelayed@5222-1TcExprUndelayed@5289-2TcExprUndelayed@5290-3TcExprUndelayed@5291-4TcExprUndelayed@5292-5genCollTy@5302genCollTy@5302-1TcExprUndelayed@5309-6TcExprUndelayed@5309-7TcExprUndelayed@5312-8TcExprUndelayed@5312-9TcExprUndelayed@5316-10TcExprUndelayed@5316-11filterClauses@5321TcExprUndelayed@5335-12TcExprUndelayed@5336-13TcExprUndelayed@5345-14TcExprUndelayed@5351-15TcLinearSeqs@5361-1TcExprUndelayed@5366-16TcExprUndelayed@5394-17flexes@5445-1flexes@5445-2TcExprUndelayed@5454-19TcExprUndelayed@5454-18TcExprUndelayed@5455-20TcExprUndelayed@5463-22TcExprUndelayed@5463-21TcExprUndelayed@5466-23flexes@5476-3byrefs@5512TcIteratedLambdas@5516TcIteratedLambdas@5518-1TcIteratedLambdas@5521-2propName@5539idxRange@5565idxRange@5565-1TcIndexerThen@5602meths@5663-12TcRecordConstruction@5703fldsList@5712-1fldsList@5709TcRecordConstruction@5721-1fieldNameUnbound@5732-1oldFldsList@5736oldFldsList@5735-1oldFldsList@5734-2fspecs@5741TcRecordConstruction@5745-3TcRecordConstruction@5744-2ns1@5749ns1@5749-1ns2@5750ns2@5750-1rfrefs@5759TcRecordConstruction@5763-4args@5767-9infosForExplicitArgs@5806-1absSlotsByName@5822bindingTy@5837bindingTy@5837-1slotImplSets@5913allImpls@5917-2allImpls@5916-1allImpls@5916ComputeObjectExprOverrides@5925-1dispatchSlots@5936-3virtNameAndArityPairs@5937bindNameAndSynInfoPairs@5941bindNames@5942bindKeys@5946-1bindKeys@5944preAssignedVirtsPerBinding@5952-1preAssignedVirtsPerBinding@5952absSlotInfo@5956ComputeObjectExprOverrides@5959-2Tuple`5partialValInfo@5964overrides@5963-2overrides@5963-1ComputeObjectExprOverrides@5921fldsList@6010-2TcObjectExpr@6024meths@6038-13env@6057-24overrideSpecs@6069TcObjectExpr@6068-1allTypeImpls@6085-2allTypeImpls@6079-1allTypeImpls@6077TcConstExpr@6173flds@6223-1fldsList@6275-3TcForEachExpr@6302TcForEachExpr@6302-1TcForEachExpr@6311-2TcForEachExpr@6314-3TcForEachExpr@6324-4TcForEachExpr@6324-5valsDefinedByMatching@6339nameSearch@6460nameSearch@6461-1nameSearch@6462-2joinConditionWord@6466joinConditionWord@6467-1joinConditionWord@6468-2flagSearch@6471-1flagSearch@6472-2flagSearch@6473-3customOperationMethods@6457customOperationMethods@6456-1customOperationMethodsIndexedByKeyword@6488customOperationMethodsIndexedByKeyword@6487-1customOperationMethodsIndexedByMethodName@6495customOperationMethodsIndexedByMethodName@6494-1customOperationIsLikeZip@6529-1customOperationIsLikeJoin@6534-1customOperationIsLikeGroupJoin@6539-1env@6566-27env@6565-26env@6565-25isCustomOperationProjectionParameter@6597-1|CustomOpId|_|@6606-1item@6623|OnExpr|_|@6618-1item@6642-1MatchOnExprOrRecover@6656-1item@6777-2mkExprForVarSpace@6791-1mkSimplePatForVarSpace@6798-1mkPatForVarSpace@6805-1addVarsToVarSpace@6836-3addVarsToVarSpace@6836-2addVarsToVarSpace@6833-1addVarsToVarSpace@6838-4emptyVarSpace@6840varSpaceWithFirstVars@6877varSpaceWithSecondVars@6883varSpaceWithGroupJoinVars@6891item@6909-3mkJoinExpr@6913-1mkZipExpr@6922tryTrans@7073-1item@7101-4args@7124-10dataCompAfterOp@7128consumeClauses@7156-1consumeClauses@7178-2tryTrans@7196-2tryTrans@7226-3tryTrans@7237-4tryTrans@7244-5varSpace@7257-1varSpace@7255tryTrans@7268-6varSpace@7289-2tryTrans@7295-7clauses@7320clauses@7328-1varSpace@7021-3tryTrans@7026-8tryTrans@7039-9transNoQueryOps@7357-1trans@7381-3basicSynExpr@7383basicSynExpr@7383-1tryTcSequenceExprBody@7514-1tryTcSequenceExprBody@7516-2tryTcSequenceExprBody@7542-3mkConstrApp@7756-1flexes@7767-4flexes@7767-5TcItemThen@7811TcItemThen@7815-1TcItemThen@7820-3TcItemThen@7819-2meths@7861-14text@7897TcItemThen@7892-4argTypars@7921argTys@7923-5TcItemThen@7926-5checkTys@7982TcItemThen@8015-6afterTcOverloadResolution@8021meths@8137-15afterTcOverloadResolution@8163-1TcLookupThen@8170objArgs@8232-1bindObjArgs@8243-1expr@8248-4mWholeExpr@8294isSimpleFormalArg@8347-1objArgTys@8350calledMeths@8352TcMethodApplication@8359TcMethodApplication@8360-1candidateMethsAndProps@8367candidates@8371-2TcMethodApplication@8383-2MakeUnnamedCallerArgInfo@8397TcMethodApplication@8407-3unnamedCurriedCallerArgs@8412namedCurriedCallerArgs@8413TcMethodApplication@8424-4namedCurriedCallerArgs@8439-1CalledMethHasSingleArgumentGroupOfThisLength@8451-1GenerateMatchingSimpleArgumentTypes@8459-1GenerateMatchingSimpleArgumentTypes@8458-2UnifyMatchingSimpleArgumentTypes@8464-1TcMethodApplication@8518-5TcMethodApplication@8519-6unnamedCurriedCallerArgs@8494-1TcMethodApplication@8495-7unnamedCurriedCallerArgs@8512-2TcMethodApplication@8513-8mk_CalledMeth@8528-1methsAndPropsToCalledMeths@8532-1unnamedCurriedCallerArgs@8589-3lambdaVarsAndExprs@8583TcMethodApplication@8584-9TcMethodApplication@8585-10TcMethodApplication@8586-11TcMethodApplication@8586-12namedCurriedCallerArgs@8594-2preArgumentTypeCheckingCalledMethGroup@8599mk_CalledMeth2@8619-1mk_CalledMeth2@8616finalCalledMeth@8631overridingInfo@8652overridingInfo@8651-1assignedNamedArgs@8668-2paramArrayCallerArgs@8669unnamedCalledArgs@8670-2unnamedCallerArgs@8671TcMethodApplication@8675-13TcMethodApplication@8689-14TcMethodApplication@8696-15TcMethodApplication@8704-17TcMethodApplication@8704-16emptyPreBinder@8716TcMethodApplication@8724-18normalUnnamedArgs@8761es@8769-1build@8822-1wrapper@8834TcMethodApplication@8794-19wrapOptionalArg@8841TcMethodApplication@8871-20TcMethodApplication@8889-21coerce@8895TcMethodApplication@8898-22outArgTys@8917-1expr@8920-5propSetExpr@8930expr@8975-6TcMethodArgs@8999TcMethodNamedArgs@9006checkRecursiveBindingIds@9041binds@9060-1builder'@9072TcMatchPattern@9090TcMatchClauses@9094TcAttrs@9128-1isVolatile@9135argAttribs@9140argAttribs@9140-1argAttribs@9140-2TcNormalizedBinding@9148TcNormalizedBinding@9160-1TcNormalizedBinding@9164-2TcNormalizedBinding@9167-3partialValReprInfo@9187-2envinner@9210tc@9219tc@9220-1TcNormalizedBinding@9229-4hasLiteralAttr@9258rigidCopyOfDeclaredTypars@9276rigidCopyOfDeclaredTypars@9279-1rigidCopyOfDeclaredTypars@9281-2rigidCopyOfDeclaredTypars@9283-3TcAttribute@9321TcAttribute@9347-1TcAttribute@9356-2meths@9396-16mkAttribExpr@9404namedAttribArgMap@9407try_dest_unit_or_tuple@9445attribs@9465TcAttributesWithPossibleTargets@9466-1TcAttributesWithPossibleTargets@9467-2TcAttributesWithPossibleTargets@9468-3TcAttributesWithPossibleTargets@9459TcAttributes@9478TcLetBinding@9487TcLetBinding@9493-1lazyFreeInEnv@9499TcLetBinding@9519-4valSchemes@9526-1prelimRecValues@9529TcLetBinding@9548-5mkRhsBind@9565-1mkRhsBind@9565-1TvalsDefinedByMatching@9568-1mkCleanup@9575-1TcLetBinding@9582-6TcLetBinding@9582-7TcLetBinding@9582-8mk_seq_bind@9538-1mk_seq_bind@9538-1TTcLetBinding@9539-9TcLetBinding@9502-3TcLetBinding@9502-2TcLetBinding@9502-10ComputeIsComplete@9643makeUniqueBySig@9669-1absSlotTy@9704absSlotTy@9704-1ApplyAbstractSlotInference@9718dispatchSlots@9729-4ApplyAbstractSlotInference@9764-2ApplyAbstractSlotInference@9764-3ApplyAbstractSlotInference@9745-1ApplyAbstractSlotInference@9784-4partialValReprInfo@10017-3extraBindings@10027AnalyzeAndMakeRecursiveValue@10029-1AnalyzeAndMakeRecursiveValue@10029AnalyzeAndMakeRecursiveValues@10061-1AnalyzeAndMakeRecursiveValues@10061envRec@10112envRec@10113-1TcLetrecBinding@10136freeInUncheckedRecBinds@10200-1freeInUncheckedRecBinds@10200frozenBindingTypes@10210freeInFrozenAndLaterBindings@10216loop@10220-63freeInEnv@10295supportForBindings@10310generalizedTyparsL@10313TcIncrementalLetRecGeneralization@10316TcIncrementalLetRecGeneralization@10323-1memFlagsOpt@10350-1binds@10516-2uncheckedRecBindsTable@10522TcLetrec@10525-1TcLetrec@10525generalizedRecBinds@10532generalizedTyparsForRecursiveBlock@10534generalizedTyparsForRecursiveBlock@10534-1generalizedTyparsForRecursiveBlock@10535-2vxbinds@10539vxbinds@10542-1inlineFlag@10583-1hasLiteralAttr@10604-1TcAndPublishValSpec@10579NotUpperCaseConstructorCheckDuplicates@10635-1CheckDuplicates@10634TcTyconMemberSpecs@10791TcOpenDecl@10809TcOpenDecl@10809-1TcOpenDecl@10821-3TcOpenDecl@10820-2TcOpenDecl@10825-5TcOpenDecl@10825-4TcOpenDecl@10826-6TcOpenDecl@10830-7TcOpenDecl@10832-8ParameterlessStructCtorinterfacesFromTypeDefn@12338-1interfaceMembersFromTypeDefn@12370-3interfaceMembersFromTypeDefn@12368-2interfaceMembersFromTypeDefn@12368-1TcTyconMemberDefns@12384-1TcTyconMemberDefns@12380tyconBindingsOfTypeDefn@12399-1slotImplSets@12423-1binds@12419-5TyconDefnCoreTyconDefnCoreIndexedTcSignatureElement@14636-2TcSignatureElement@14643-3modrefs@14652-2TcSignatureElement@14653-4modrefs@14655-3TcSignatureElement@14656-6TcSignatureElement@14655-5TcSignatureElement@14682-7TcSignatureElement@14612-1TcSignatureElement@14611-8TcSignatureElement@14611TcSignatureElements@14706-2TcSignatureElements@14706-1TcSignatureElements@14703TcModuleOrNamespaceSignature@14736-3TcModuleOrNamespaceSignature@14723-2TcModuleOrNamespaceSignature@14720-1TcModuleOrNamespaceSignature@14716TcModuleOrNamespaceSignatureElements@14753-1TcModuleOrNamespaceSignatureElements@14744modrefs@14772-4TcModuleOrNamespaceElement@14773-2modrefs@14775-5TcModuleOrNamespaceElement@14776-4TcModuleOrNamespaceElement@14778-5TcModuleOrNamespaceElement@14775-3TcModuleOrNamespaceElement@14782-6exprfWithEscapeCheck@14790-1exprfWithEscapeCheck@14796-2exprfWithEscapeCheck@14789TcModuleOrNamespaceElement@14807-7binds@14842-7TcModuleOrNamespaceElement@14844-8TcModuleOrNamespaceElement@14847-9TcModuleOrNamespaceElement@14824-10TcModuleOrNamespaceElement@14862-11TcModuleOrNamespaceElement@14865-12TcModuleOrNamespaceElement@14892-14TcModuleOrNamespaceElement@14880-13TcModuleOrNamespaceElement@14927-17TcModuleOrNamespaceElement@14914-16TcModuleOrNamespaceElement@14898-15TcModuleOrNamespaceElement@14767-1TcModuleOrNamespaceElement@14931-19TcModuleOrNamespaceElement@14766-18TcModuleOrNamespaceElement@14762TcModuleOrNamespaceElementsAux@14948-1TcModuleOrNamespaceElementsAux@14936mexpr@14961-1mexpr@14961topAttrsNew@14964-1topAttrsNew@14964TcModuleOrNamespaceElements@14961-2TcModuleOrNamespaceElements@14959-1TcModuleOrNamespaceElements@14956TcModuleOrNamespace@14994-1TcModuleOrNamespace@14970AddCcuToTcEnv@15011CreateInitialTcEnv@15026TopAttribsIterTyconsOfModuleOrNamespaceType@15049IterTyconsOfModuleOrNamespaceType@15050-1applyDefaults@15074-3applyDefaults@15075-4applyDefaults@15067-2applyDefaults@15063-1ApplyDefaults@15084check@15098-8check@15108-9SolveInternalUnknowns@15115cenv@15173-3defs@15177topAttrs@15183topAttrs@15184-1topAttrs@15186-2topAttrs@15187-3topAttrs@15188-4topAttrs@15189-5TypecheckOneImplFile@15198-2TypecheckOneImplFile@15205-3TypecheckOneImplFile@422-4TypecheckOneImplFile@15209-5TypecheckOneImplFile@15213-6implFileExprAfterSig@422TypecheckOneImplFile@422-7hasExplicitEntryPoint@422TypecheckOneImplFile@15180-1TypecheckOneImplFile@15173cenv@15255-4specs@15258TypecheckOneSigFile@15264-3TypecheckOneSigFile@15264-2TypecheckOneSigFile@15264-4TypecheckOneSigFile@15267-5TypecheckOneSigFile@15261-1TypecheckOneSigFile@15255TcTypeDeclarationsresInfo@14195ComputeTyconDeclKind@14239allFalse@14258CheckMembersForm@14284CheckMembersForm@14290-1CheckMembersForm@14290-2CheckMembersForm@14290-3CheckMembersForm@14290-4CheckMembersForm@14290-5CheckMembersForm@14305-6CheckMembersForm@14305-7CheckMembersForm@14305-8CheckMembersForm@14305-9CheckMembersForm@14305-10CheckMembersForm@14305-11CheckMembersForm@14305-12implements1@14330fields@14334-3implements2@14335inherits@14336-5tycons@14340-11slotsigs@14341membersIncludingAutoProps@14345attribs@14365-1preAutoProps@14362attribs@14392-2postAutoProps@14402-1postAutoProps@14388isConcrete@14443isIncrClass@14452hasSelfReferentialCtor@14457implicitCtorSynPats@14463preEstablishedHasDefaultCtor@14470SplitTyconDefns@14486augments@14508-2augments@14508-1augments@14508binds@14516-6binds3@14517implements1@14532-1fields@14535-4implements2@14536-1inherits@14537-6nestedTycons@14538slotsigs@14539-1members@14540-2isConcrete@14546-1preEstablishedHasDefaultCtor@14553-1SplitTyconSignatures@14582TcTyconSignatureMemberSpecs@14586EstablishTypeDefinitionCoresGetTyconAttribs@12969GetTyconAttribs@12970-1GetTyconAttribs@12971-2GetTyconAttribs@12972-3GetTyconAttribs@12973-4GetStructuralElementsOfTyconDefn@13057-1GetStructuralElementsOfTyconDefn@13032-3GetStructuralElementsOfTyconDefn@13036-6GetStructuralElementsOfTyconDefn@13035-5GetStructuralElementsOfTyconDefn@13035-4GetStructuralElementsOfTyconDefn@13027-7GetStructuralElementsOfTyconDefn@13024-2GetStructuralElementsOfTyconDefn@13040-8GetStructuralElementsOfTyconDefn@13052-11GetStructuralElementsOfTyconDefn@13054-12GetStructuralElementsOfTyconDefn@13049-10GetStructuralElementsOfTyconDefn@13045-9GetStructuralElementsOfTyconDefn@13021TcTyconDefnCore_Phase0_BuildInitialTycon@13070TcTyconDefnCore_Phase0_BuildInitialTycon@13096-1hasMeasureAttr@13116-1optGeneratedTypePath@13220TcTyconDefnCore_TryAsGenerateDeclaration@13222previousContext@13262previousContext@13262-1theRootTypeWithRemapping@13274stRootAssembly@13277isRootGenerated@13279nm@13283-2isForcedSuppressRelocate@13287repr@13295TcTyconDefnCore_Phase2_EstablishDeclarationForGeneratedSetOfTypes@13301TcTyconDefnCore_Phase2_EstablishDeclarationForGeneratedSetOfTypes@13306-1stAssembly@13316isGenerated@13319-1nm@13323-3access@13328-6nestedTycon@13331doNestedType@13340-2doNestedType@13345-3doNestedType@13315-1doNestedTypes@13361-1hasMeasureAttr@13413-2hasMeasureableAttr@13414TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13518-1TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13518TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13479-3TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13479-4inherits@13491-4inheritedTys@13492inheritedTys@13492-1TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13496-5TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13513-6TcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypes@13473-2hasAbstractAttr@13571hasMeasureAttr@13578-3hasMeasureableAttr@13582-1hasCLIMutable@13583hasStructLayoutAttr@13585hasAllowNullLiteralAttr@13586allowNullLiteralAttributeCheck@13601-1allowNullLiteralAttributeCheck@13602-2writeFakeRecordFieldsToSink@13645-1TcTyconDefnCore_Phase6_EstablishRepresentation@13714TcTyconDefnCore_Phase6_EstablishRepresentation@13724-1recdFields@13728-2TcTyconDefnCore_Phase6_EstablishRepresentation@13729-2TcTyconDefnCore_Phase6_EstablishRepresentation@13736-3userFields@13743implicitStructFields@13746TcTyconDefnCore_Phase6_EstablishRepresentation@13758-4TcTyconDefnCore_Phase6_EstablishRepresentation@13773-5kind@13784-2kind@13807-3kind@13813-4fparams@13817abstractSlots@13839TcTyconDefnCore_Phase6_EstablishRepresentation@13868-6TcTyconDefnCore_Phase6_EstablishRepresentation@13872-7TcTyconDefnCore_Phase6_EstablishRepresentation@13889-8TcTyconDefnCore_Phase6_EstablishRepresentation@13891-9accInAbbrevType@13913-1accInMeasure@13933-1accInAbbrevTypes@13905-1edgesFrom@13905CheckForCyclicAbbreviations@13956CheckForCyclicAbbreviations@13957-1insertEdgeToTycon@14005-1insertEdgeToTycon@14006-2insertEdgeToType@14010-1accStructField@14019-1accStructFieldType@14033-1accStructFields@14049-1fspecs@14055-1edgesFrom@14004-1CheckForCyclicStructsAndInheritance@14079CheckForCyclicStructsAndInheritance@14080-1typeDefCores@14092TcTyconDefnCores@14094tycons@14097-10TcTyconDefnCores@14100-1envinner@14111-1checkedAttrsList@14117TcTyconDefnCores@14120-2structuralTypes@14139-1TcTyconDefnCores@14144-3checkExplicitConstraints@14148-1TcTyconDefnCores@14159-5TcTyconDefnCores@14159-4TcTyconDefnCores@14162-6baseValOptsForTycons@14170baseValOptsForAugmentations@14172TcTyconDefnCores@14174-7TcTyconDefnCores@14174-8TcExceptionDeclarationsargs'@12848-1candidates@12867-3structuralTypes@12900TcExnDefnCore@12913TyconConstraintInferencetab@12564-5initialAssumedTycons@12568checkIfFieldTypeSupportsComparison@12582-2checkIfFieldTypeSupportsComparison@12589-3checkIfFieldTypeSupportsComparison@12594-4checkIfFieldTypeSupportsComparison@12616-5checkIfFieldTypeSupportsComparison@12617-6checkIfFieldTypeSupportsComparison@12620-7checkIfFieldTypeSupportsComparison@12623-8checkIfFieldTypeSupportsComparison@12582-1newSet@12634-1newSet@12634-2res@12637-8newSet@12656-3newSet@12656-4newSet@12643-5newSet@12643-6newSet@12632tab@12692-6initialAssumedTycons@12696-1checkIfFieldTypeSupportsEquality@12710-2checkIfFieldTypeSupportsEquality@12715-3checkIfFieldTypeSupportsEquality@12720-4checkIfFieldTypeSupportsEquality@12744-5checkIfFieldTypeSupportsEquality@12747-6checkIfFieldTypeSupportsEquality@12710-1newSet@12758-8newSet@12758-9res@12762-9newSet@12784-10newSet@12784-11newSet@12769-12newSet@12769-13newSet@12756-7AddAugmentationDeclarationstcaug_has_nominal_interface@12439TyconBindingCheckingTyconBindingsPassAPassAIncrClassCtorPassAInheritPassAIncrClassBindingsPassAMemberPassAIncrClassCtor@DebugTypeProxyPassAInherit@DebugTypeProxyPassAIncrClassBindings@DebugTypeProxyPassAMember@DebugTypeProxyTyconBindingsPassAGroupTyconBindingsPassBPassBIncrClassCtorPassBInheritPassBIncrClassBindingsPassBMemberPassBIncrClassCtor@DebugTypeProxyPassBInherit@DebugTypeProxyPassBIncrClassBindings@DebugTypeProxyPassBMember@DebugTypeProxyTyconBindingsPassBGroupTyconBindingsPassCPassCIncrClassCtorPassCInheritPassCIncrClassBindingsPassCMemberPassCIncrClassCtor@DebugTypeProxyPassCInherit@DebugTypeProxyPassCIncrClassBindings@DebugTypeProxyPassCMember@DebugTypeProxyTyconBindingsPassCGroupbaseValOpt@11755TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns@11767-3cbinds@11801TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns@11730-2TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns@11730-1TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns@11730-4rest@11820-1isAfter@11832-1isAfter@11827defnAs@11839TcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns@11705uncheckedRecBindsTable@11860-1envInstance@11915envNonRec@11917binds@11939-4TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization@11949-2envNonRec@11956-1TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization@11961-3envInstance@11972-1TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization@11905-1TcTyconBindings_PassB_TypeCheckAndIncrementalGeneralization@11881generalizedBindingsMap@12042TcTyconBindings_PassC_FixupRecursiveReferences@12049-1TcTyconBindings_PassC_FixupRecursiveReferences@12045nonMethodBinds@12123hasStaticBindings@12121-1hasStaticBindings@12119TcTyconBindings_ExtractImplicitFieldAndMethodBindings@12140-1localDecs@12157memberBindsWithFixups@12162localDecs@12174-1memberBinds@12180thisTyInst@12212-1memberBindsWithFixups@12203-1TcTyconBindings_ExtractImplicitFieldAndMethodBindings@12222-2TcTyconBindings_ExtractImplicitFieldAndMethodBindings@12088generalizedTyparsForRecursiveBlock@12247-3generalizedTyparsForRecursiveBlock@12247-4generalizedTyparsForRecursiveBlock@12248-5allExtraGeneralizableTypars@12254genSet@12277allTypes@12280unsolvedTyparsForRecursiveBlockInvolvingGeneralizedVariables@12301-1unsolvedTyparsForRecursiveBlockInvolvingGeneralizedVariables@12296IncrClassCheckingIncrClassBindingGroupIncrClassDoIncrClassBindingGroup@DebugTypeProxyIncrClassDo@DebugTypeProxyIncrClassCtorLhsctorArgs@10904synArgInfos@10917partialValReprInfo@10923-4partialValReprInfo@10943-5TcImplictCtorLhsPassA@10935isVolatile@10986-2IncrClassValReprInVarInFieldInMethodInVar@DebugTypeProxyInField@DebugTypeProxyInMethod@DebugTypeProxyIncrClassReprInfovalSynInfo@11096memberFlags@11097memberFlags@11097-1thisArgs@11163rfspecs@11216-1rfspecs@11206FixupExprNode@11241FixupIncrClassExprPassC@11276IncrClassConstructionBindingsPassCPassCBindings_PassCCtorJustAfterSuperInit_PassCCtorJustAfterLastLetPassCBindings@DebugTypeProxy_PassCCtorJustAfterSuperInit@DebugTypeProxy_PassCCtorJustAfterLastLet@DebugTypeProxyMakeCtorForIncrClassConstructionPassC@11311freeChoiceTypars@11316-1thisTyInst@11318accFreeInBinding@11324methodBinds@11344MakeCtorForIncrClassConstructionPassC@11341-4MakeCtorForIncrClassConstructionPassC@11341-3MakeCtorForIncrClassConstructionPassC@11335-2MakeCtorForIncrClassConstructionPassC@11335-1TransBind@11407-2TransBind@11413-3TransBind@11436-4TransBind@11377-1binder@11467reps@11446reps@11451-1TransTrueDec@11457-1TransTrueDec@11442-2binders@11487-1binders@11482binders@11501-3binders@11497-2TransDec@11478takenFieldNames@11517binds@11530-3MakeCtorForIncrClassConstructionPassC@11550-5ctorBody@11558-1ctorBody@11558ctorBody@11592-3ctorBody@11592-2cctorInitAction@11604-1cctorInitAction@11604TcRecdUnionAndEnumDeclarationsTcFieldDecl@10657attrsForProperty@10658attrsForField@10659zeroInit@10661isVolatile@10662-1TcUnionCaseDecl@10728rfields@10734TcUnionCaseDecl@10724-1TcUnionCaseDecls@10745TcUnionCaseDecls@10744-1TcEnumDecls@10762TcEnumDecls@10762-1EventDeclarationNormalizationdeclPattern@2461BindingNormalizationGeneralizationHelpersComputeUnabstractableTycons@1948ComputeUnabstractableTraitSolutions@1958IsGeneralizableValue@1988IsGeneralizableValue@1991-1IsGeneralizableValue@2000-2TrimUngeneralizableTypars@2023TrimUngeneralizableTypars@2028-1TrimUngeneralizableTypars@2033-2allUntupledArgTys@2054allUntupledArgTysWithFreeVars@2058relevantUniqueSubtypeConstraint@2062-1relevantUniqueSubtypeConstraint@2065-2lhsConstraintTypars@2075IsCondensationTypar@2089-1IsCondensationTypar@2091-2IsCondensationTypar@2093-3IsCondensationTypar@2094-5IsCondensationTypar@2094-4IsCondensationTypar@2085CondenseTypars@2100CanonicalizePartialInferenceProblem@2107CanonicalizePartialInferenceProblem@2108-1typarsToAttemptToGeneralize@2128ComputeAndGeneralizeGenericTypars@2134generalizedTypars@2143-1generalizedTypars@2143allConstraints@2145ComputeAndGeneralizeGenericTypars@2150-1PostTypecheckSemanticCheckstestHookMemberBody@35-5testHookMemberBody@35-4testHookMemberBody@35-3testHookMemberBody@35-2testHookMemberBody@35-1testHookMemberBody@35nms@142nms@142-1BindTypars@143-1BindTypars@146-2CheckTypeDeep@195CheckTypeDeep@208-2CheckTypeDeep@208-1CheckTypesDeep@220CheckTraitInfoDeep@239CheckForByrefLikeType@247CheckForByrefLikeType@247-1CheckForByrefLikeType@247-2CheckForByrefLikeType@247-3passedIn@269cantBeFree@269AccessInternalsVisibleToAsInternal@309visitType@319CheckTypeForAccess@327CheckTypeForAccess@327-1CheckTypeForAccess@327-2visitTyconRef@337visitType@346-1visitByrefsOfByrefs@351-1visitByrefsOfByrefs@351-2visitByrefsOfByrefs@351-3visitByrefsOfByrefs@344visitTraitSolution@354CheckType@362ByrefCallContextKnownArityTuple_DirectArg_GeneralContextKnownArityTuple@DebugTypeProxy_DirectArg@DebugTypeProxy_GeneralContext@DebugTypeProxyargAritiesOfVal@393keyf@415firstInterfaceWithMultipleGenericInstantiations@419-1firstInterfaceWithMultipleGenericInstantiations@418CheckExprInContext@534CheckExprInContext@535-1CheckExprInContext@536-2CheckExprInContext@537-3CheckExprInContext@553-4CheckExprInContext@559-5CheckExprInContext@561-6CheckExprInContext@567-7CheckExprInContext@584-8CheckExprInContext@590-9CheckExprInContext@499-10CheckExprInContext@496-12CheckExprInContext@496-13CheckExprInContext@498-14CheckExprInContext@498-15CheckExprInContext@496-11CheckExprInContext@514-16CheckMethods@600CheckInterfaceImpls@611CheckInterfaceImpl@614CheckExprOp@620CheckExprOp@735-1CheckExprOp@625-2CheckExprOp@629-3CheckExprOp@634-4CheckExprOp@638-5CheckExprOp@643-6CheckExprOp@644-7CheckExprOp@645-8CheckExprOp@646-9CheckExprOp@665-10CheckExprOp@669-11CheckExprOp@673-12CheckExprOp@676-13CheckExprOp@686-14CheckExprOp@680-15CheckExprOp@689-16CheckExprOp@690-17CheckExprOp@714-18CheckLambdas@765CheckLambdas@767-1CheckLambdas@768-2CheckLambdas@781-3CheckExprsInContext@802CheckExprs@805CheckExprDirectArgs@811CheckDecisionTreeTarget@817CheckDecisionTreeTarget@818-1CheckDecisionTree@823CheckDecisionTreeSwitch@829CheckDecisionTreeSwitch@830-1CheckDecisionTreeTest@834CheckAttrib@842CheckAttrib@843-1CheckAttribArgExpr@877tcrefs@895-18allowMultiple@909-1allowMultiple@909allowMultiple@910-3allowMultiple@910-2allowMultiple@911-4duplicates@906duplicates@903-1duplicates@902-2duplicates@901-3duplicates@900-4CheckAttribs@918CheckValInfo@921CheckValSpec@929CheckBinding@965access@967-3CheckBinding@968-1CheckBinding@979-2CheckBinding@991-3CheckBinding@995-4CheckBinding@1013-5CheckBindings@1046isExplicitEntryPoint@1050CheckTopBinding@1060CheckTopBinding@1061-1CheckTopBinding@1062-2hasDefaultAugmentation@1085access@1175-4CheckRecdField@1176CheckRecdField@1181-1env@1187-8allVirtualMethsInParent@1198immediateMeths@1209getOtherMethods@1230-1checkForDup@1248-1CheckEntityDefn@1258CheckEntityDefn@1263-1checkForDup@1284-3CheckEntityDefn@1301-2checkForDup@1326-5checkForDup@1341-7CheckEntityDefn@1355-3CheckEntityDefn@1356-4CheckEntityDefn@1362-6CheckEntityDefn@1360-5access@1364-5visitType@1365-3visitType@1365-4CheckEntityDefn@1366-7CheckEntityDefn@1378-8interfaces@1385-1interfaces@1384-2interfaces@1384-3CheckEntityDefn@1396-9CheckEntityDefn@1407-10CheckDefnInModule@1434CheckDefnInModule@1435-1CheckDefnInModule@1436-2CheckDefnInModule@1437-3CheckDefnInModule@1447-4CheckModuleSpec@1451cenv@1458-2QuotationTranslatorIsReflectedDefinitionQuotationTranslationEnvBindTypars@92InvalidQuotedTermIgnoringPartOfQuotedTermWarningConvExpr@154ConvExpr@159-1ConvExpr@191-4ConvExpr@191-3ConvExpr@191-2ConvExpr@196-5ConvExpr@264-6untupledCurriedArgs@221ConvExpr@228-9ConvExpr@228-8ConvExpr@228-7ConvExpr@228-10argTys@239-3argtys@394-3methArgTypesR@475ConvExpr@493-11ConvExpr@495-12ConvExpr@279-13vsR@298env@299-7bindsR@301argsR@614ConvExprs@618ConvTyparRef@670FilterMeasureTyargs@678ConvTypes@701ConvDecisionTree@739ConvDecisionTree@787-1ConvDecisionTree@785-2ConvDecisionTree@786-3ConvILType@825rangeExpr@892attrExpr@899ConvExprPublic@904argTys@919-4FindUnsolvedaccTy@36accTypeInst@41accExpr@72accExpr@77-1accExpr@97-2accMethods@105accMethod@107accIntfImpls@110accIntfImpl@113accOp@117accOp@122-1accOp@123-2accOp@124-3accOp@127-4accOp@128-5accOp@131-6accLambdas@141accLambdas@142-1accLambdas@143-2accExprs@148accFlatExprs@149accDTree@156accSwitch@162accSwitch@163-1accDiscrim@167accDiscrim@174-1accAttrib@177accAttrib@178-1accAttribs@180accValReprInfo@183accArgReprInfo@187accVal@191accBinds@199accTyconRecdField@206accTyconRecdField@207-1accTycon@210accTycon@214-2accTycon@215-3accTycon@213-1accTycons@218accModuleOrNamespaceDefs@228accModuleOrNamespaceDef@233accModuleOrNamespaceDef@234-1accModuleOrNamespaceDef@239-2accModuleOrNamespaceBinds@240UnsolvedTyparsOfModuleDef@250NameresNameResolverUnionCaseRefsInTycon@72UnionCaseRefsInModuleOrNamespace@75TryFindTypeWithUnionCase@79TryFindTypeWithRecdField@83ActivePatternElemsOfValRef@87aprefs@112ActivePatternElemsOfModuleOrNamespace@113ItemValueUnionCaseActivePatternResultActivePatternCaseExnCaseRecdFieldNewDefILFieldEventPropertyMethodGroupCtorGroupFakeInterfaceCtorDelegateCtorTypesCustomOperationCustomBuilderTypeVarModuleOrNamespacesImplicitOpArgNameSetterArgUnqualifiedTypeValue@DebugTypeProxyUnionCase@DebugTypeProxyActivePatternResult@DebugTypeProxyActivePatternCase@DebugTypeProxyExnCase@DebugTypeProxyRecdField@DebugTypeProxyNewDef@DebugTypeProxyILField@DebugTypeProxyEvent@DebugTypeProxyProperty@DebugTypeProxyMethodGroup@DebugTypeProxyCtorGroup@DebugTypeProxyFakeInterfaceCtor@DebugTypeProxyDelegateCtor@DebugTypeProxyTypes@DebugTypeProxyCustomOperation@DebugTypeProxyCustomBuilder@DebugTypeProxyTypeVar@DebugTypeProxyModuleOrNamespaces@DebugTypeProxyImplicitOp@DebugTypeProxyArgName@DebugTypeProxySetterArg@DebugTypeProxyUnqualifiedType@DebugTypeProxyMakeMethGroup@157MakeCtorGroup@161ExtensionMemberFSExtMemILExtMemFSExtMem@DebugTypeProxyILExtMem@DebugTypeProxyFullyQualifiedFlagNameResolutionEnvBulkAddvrefs@324AddValRefsToNameEnvWithPriority@353ePatItems@357AddValRefsToNameEnvWithPriority@355-1apresl@373AddActivePatternResultTagsToNameEnv@374-1AddActivePatternResultTagsToNameEnv@374AddTyconsByDemangledNameAndArity@384entries@387AddTyconByAccessNames@390CSharpExtensionMemberInfosForTyconRef@401AddUnionCases1@424-1AddUnionCases2@438-1ucrefs@444-1eExtensionMembers@450AddPartsOfTyconRefToNameEnv@456AddPartsOfTyconRefToNameEnv@458-1tab@482-4AddPartsOfTyconRefToNameEnv@492-2AddPartsOfTyconRefToNameEnv@497-3env@505-6add@534-9nestedModuleRefs@544modrefsMap@549addModrefs@552-1AddModuleOrNamespaceRefsToNameEnv@565tcrefs@579tcrefs@579-1exrefs@580exrefs@580-1nenv@581vrefs@585-1AddModulesAndNamespacesContentsToNameEnv@600CheckForDuplicateTyparFlagtyparmap@614AddDeclaredTyparsToNameEnv@622TypeNameResolutionFlagTypeNameResolutionStaticArgsInfo_IndefiniteDefinite_Indefinite@DebugTypeProxyDefinite@DebugTypeProxyTypeNameResolutionInfoLookupTypeNameInEnvHaveArity@762PermitDirectReferenceToGeneratedTypeimportProvidedType@827isSuppressRelocate@828matches@841ResolveProvidedTypeNameInEntity@843ResolveProvidedTypeNameInEntity@859-2ResolveProvidedTypeNameInEntity@859-1ResolveProvidedTypeNameInEntity@859-3ResolveProvidedTypeNameInEntity@861-4tcrefs@875-2MakeNestedType@906-1GetNestedTypesOfType@921-2GetNestedTypesOfType@922-3GetNestedTypesOfType@921-1GetNestedTypesOfType@931-4GetNestedTypesOfType@930-5GetNestedTypesOfType@894ItemOccurenceITypecheckResultsSinkTcResultsSinkWithNewTypecheckResultsSink@967TemporarilySuspendReportingTypecheckResultsToSink@972CheckAllTyparsInferrable@998freeInArgsAndRetType@1011CheckAllTyparsInferrable@1007-1ResolutionInfoSendToSink@1053get_Empty@1065AddWarning@1073tcrefs@1099-3tcrefs@1096-4tcrefs@1111-5tcrefs@1113-7tcrefs@1112-6tcrefs@1118-8ResolveLongIndentAsModuleOrNamespace@1173look@1165-12ResolveLongIndentAsModuleOrNamespace@1171-2ResolveLongIndentAsModuleOrNamespace@1167-1ResolveLongIndentAsModuleOrNamespaceThen@1182defaultStructCtorInfo@1202ctorInfos@1208ResolveObjectConstructor@1212extValRefs@1236ExtensionPropInfosOfTypeInScope@1238-1ExtensionPropInfosOfTypeInScope@1228ImmediateExtensionMethInfosOfTypeInScope@1272ImmediateExtensionMethInfosOfTypeInScope@1270-1ExtensionMethInfosOfTypeInScope@1297IndeterminateTypeLookupKindCoreDisplayName@1331contentsSearchAccessible@1380contentsSearchAccessible@1410-1nestedSearchAccessible@1422nestedSearchAccessible@1421-1ResolveLongIdentInTypes@1430ResolveLongIdentInTypes@1430-1ResolveLongIdentInType@1437ResolveLongIdentInTyconRefs@1449tcrefs@1485-9tyconSearch@1502tyconSearch@1501-1tyconSearch@1500-2tyconSearch@1494-3ResolveExprLongIdentInModuleOrNamespace@1517tcrefs@1524-10typs@1533ChooseTyconRefInExpr@1534typs@1528-1ChooseTyconRefInExpr@1531-1ChooseTyconRefInExpr@1530-2tcrefs@1568-11envSearch@1576failingCase@1598ResolveExprLongIdentPrim@1601moduleSearch@1628-1moduleSearch@1628-1Dtcrefs@1634-12failingCase@1655-1ResolveExprLongIdentPrim@1657-1tcrefs@1694-13ctorSearch@1707ctorSearch@1706-1ctorSearch@1705-2ResolvePatternLongIdentInModuleOrNamespace@1721UpperCaseIdentifierInPatternWarnOnUpperFlagmoduleSearch@1757-3moduleSearch@1757-3DtyconSearch@1762-6ResolvePatternLongIdentPrim@1771tcrefs@1807-14ResolveTypeLongIdentInTyconRefPrim@1811tcrefs@1821-15ResolveTypeLongIdentInTyconRefPrim@1825-1ResolveTypeLongIdentInTyconRefPrim@1824-2ResolveTypeLongIdentInTyconRef@1831ResolveTypeLongIdentInModuleOrNamespace@1843ResolveTypeLongIdentInModuleOrNamespace@1842-1modulSearch@1852ResolveTypeLongIdentInModuleOrNamespace@1857-2ResolveTypeLongIdentInModuleOrNamespace@1856-3ResolveTypeLongIdentPrim@1886modulSearch@1902-1modulSearch@1902-1DmodulSearch@1903-2modulSearchFailed@1907-1modulSearchFailed@1907-1DmodulSearchFailed@1908-2ResolveTypeLongIdentPrim@1920-1ResolveTypeLongIdentPrim@1924-2ResolveTypeLongIdent@1933ResolveTypeLongIdent@1937-1error@1948tcrefs@1960-16tyconSearch@1963-7tyconSearch@1963-8ResolveField@1996ResolveField@1994-1tcrefs@2006-17tyconSearch@2009-10tyconSearch@2009-11modulSearch@2014-4modulSearch@2014-4DfilterMethodGroups@2078IfOverloadResolutionFailsAfterOverloadResolutioncallSink@2110-1ResolveLongIdentAsExprAndComputeRange@2117|NonOverridable|_|@2125|NonOverridable|_|@2126-1ResolveExprDotLongIdentAndComputeRange@2140sendToSink@2155-1ResolveExprDotLongIdentAndComputeRange@2164-1ResolveExprDotLongIdentAndComputeRange@2162-2FakeInstantiationGenerator@2184PartialResolveLongIndentAsModuleOrNamespaceThen@2245ResolveRecordOrClassFieldsOfType@2254ResolveRecordOrClassFieldsOfType@2253-1rfinfos@2262ucinfos@2269ucinfos@2268-1ucinfos@2267-2einfos@2274finfos@2287pinfosIncludingUnseen@2293pinfoMethNames@2302pinfoMethNames@2301-1pinfoMethNames@2306-2pinfoMethNames@2305-3einfoMethNames@2309pinfos@2321minfoFilter@2328pinfoItems@2353pinfoItems@2352-1pinfoItems@2351-2addersAndRemovers@2357minfos@2364-3minfos@2364-2ResolveCompletionsInType@2378ResolveCompletionsInType@2380-1ResolveCompletionsInType@2381-2ResolveCompletionsInType@2382-3ResolveCompletionsInType@2383-4rfinfos@2396-1rfinfos@2395-2ResolvePartialLongIdentInType@2404ResolvePartialLongIdentInType@2403-1ResolvePartialLongIdentInType@2415-2ResolvePartialLongIdentInType@2414-3ResolvePartialLongIdentInType@2413-4ResolvePartialLongIdentInType@2419-5ResolvePartialLongIdentInType@2419-6ResolvePartialLongIdentInType@2419-7ResolvePartialLongIdentInType@2423-8ResolvePartialLongIdentInType@2431-9ResolvePartialLongIdentInType@2427-10ctors@2449-5ctors@2448-6EntityRefContainsSomethingAccessible@2469EntityRefContainsSomethingAccessible@2487-1EntityRefContainsSomethingAccessible@2493-2tycons@2504tycons@2503-1ilTyconNames@2509ResolvePartialLongIdentInModuleOrNamespace@2570ResolvePartialLongIdentInModuleOrNamespace@2521-1ResolvePartialLongIdentInModuleOrNamespace@2520-2ResolvePartialLongIdentInModuleOrNamespace@2519-3ResolvePartialLongIdentInModuleOrNamespace@2518-4ResolvePartialLongIdentInModuleOrNamespace@2527-5ResolvePartialLongIdentInModuleOrNamespace@2526-6ResolvePartialLongIdentInModuleOrNamespace@2525-7ResolvePartialLongIdentInModuleOrNamespace@2533-8ResolvePartialLongIdentInModuleOrNamespace@2532-9ResolvePartialLongIdentInModuleOrNamespace@2541-10ResolvePartialLongIdentInModuleOrNamespace@2540-11ResolvePartialLongIdentInModuleOrNamespace@2540-12ResolvePartialLongIdentInModuleOrNamespace@2539-13ResolvePartialLongIdentInModuleOrNamespace@2551-14ResolvePartialLongIdentInModuleOrNamespace@2550-15ResolvePartialLongIdentInModuleOrNamespace@2549-16ResolvePartialLongIdentInModuleOrNamespace@2549-17ResolvePartialLongIdentInModuleOrNamespace@2548-18ResolvePartialLongIdentInModuleOrNamespace@2547-19ResolvePartialLongIdentInModuleOrNamespace@2546-20ResolvePartialLongIdentInModuleOrNamespace@2555-21ResolvePartialLongIdentInModuleOrNamespace@2558-22namespaces@2643staticSometingInType@2662ilTyconNames@2592-1unqualifiedItems@2603unqualifiedItems@2602-1activePatternItems@2611moduleAndNamespaceItems@2620moduleAndNamespaceItems@2619-1moduleAndNamespaceItems@2619-2moduleAndNamespaceItems@2618-3moduleAndNamespaceItems@2617-4moduleAndNamespaceItems@2616-5tycons@2628-2tycons@2627-3tycons@2627-4tycons@2626-5tycons@2625-6constructors@2635constructors@2634-1constructors@2634-2tycons@2684-7tycons@2683-8tycons@2682-9ilTyconNames@2689-2ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2734ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2729-1ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2728-2ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2702-3ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2701-4ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2700-5ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2700-6ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2699-7ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2698-8ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2697-9ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2705-10ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2712-12ResolvePartialLongIdentInModuleOrNamespaceForRecordFields@2707-11ResolvePartialLongIdentToClassOrRecdFieldsImpl@2790ResolvePartialLongIdentToClassOrRecdFieldsImpl@2806-1ResolvePartialLongIdentToClassOrRecdFieldsImpl@2802-2iltyconNames@2756mods@2766mods@2765-1mods@2765-2mods@2764-3mods@2763-4mods@2762-5recdTyCons@2774recdTyCons@2773-1recdTyCons@2773-2recdTyCons@2772-3recdTyCons@2771-4typeInsts@2780recdFields@2779recdFields@2778-1FormatsFormatItemSimple_FuncAndValSimple@DebugTypeProxy_FuncAndVal@DebugTypeProxyFormatInfoRegisterargtys@67argtys@68-1argtys@70-2parseLoop@72-1parseLoop@82-2flags@86-1flags@97-2flags@89-3flags@93-4flags@104-5flags@101-6digitsPrecision@108-1precision@114-1precision@118-2optionalDotAndPrecision@121-1digitsWidthAndPrecision@127-1widthAndPrecision@133-1digitsPosition@140-1parseLoop@159-3acc@161-11acc@163-12checkNoPrecision@165-1checkNoZeroFlag@166-1checkNoNumericPrefix@168-1parseLoop@238-4parseLoop@180-5parseLoop@184-6parseLoop@189-7parseLoop@191-8parseLoop@195-9parseLoop@232-10parseLoop@198-11parseLoop@226-12ConstraintSolverNewInferenceTypes@93copy_tyvar@101ConstraintSolverTupleDiffLengthsConstraintSolverInfiniteTypesConstraintSolverTypesNotInEqualityRelationConstraintSolverTypesNotInSubsumptionRelationConstraintSolverMissingConstraintConstraintSolverErrorConstraintSolverRelatedInformationErrorFromApplyingDefaultErrorFromAddingTypeEquationErrorsFromAddingSubsumptionConstraintErrorFromAddingConstraintPossibleOverloadUnresolvedOverloadingUnresolvedConversionOperatorGetPossibleOverloads@143ConstraintSolverStateNew@162ConstraintSolverEnvoccursCheck@196TraitConstraintSolutionTTraitSolvedTTraitSolvedRecdPropTTraitSolved@DebugTypeProxyTTraitSolvedRecdProp@DebugTypeProxyUndo@286OptionalTrace_NoTraceWithTrace_NoTrace@DebugTypeProxyWithTrace@DebugTypeProxyFilterEachThenUndo@304-1FilterEachThenUndo@303NonRigidTyparLocallyAbortOperationThatLosesAbbrevsTransactStaticReq@392SolveTypStaticReq@409TransactDynamicReq@421SubstMeasureWarnIfRigid@438SubstMeasureWarnIfRigid@443-1UnifyMeasureWithOne@475UnifyMeasureWithOne@483-1UnifyMeasureWithOne@483-2UnifyMeasureWithOne@485-3UnifyMeasureWithOne@486-4newms@489newms@490-1UnifyMeasureWithOne@491-5UnifyMeasureWithOne@491-6simp@513-1simp@513-2vars'@520remainingvars@526newms@527-2newms@528-3SimplifyMeasuresInTypeScheme@604SolveTyparEqualsTyp@656-2SolveTyparEqualsTyp@667-3SolveTyparEqualsTyp@669-4SolveTyparEqualsTyp@648-1SolveTyparEqualsTyp@638solveTypMeetsTyparConstraints@703-3solveTypMeetsTyparConstraints@686-2solveTypMeetsTyparConstraints@683-1solveTypMeetsTyparConstraints@681SolveTypEqualsTypKeepAbbrevs@758SolveTypEqualsTypKeepAbbrevs@759-1loop@771-58SolveFunTypEqn@777SolveTypSubsumesTypKeepAbbrevs@852SolveTypSubsumesTypKeepAbbrevs@853-1tys@900-1SolveMemberConstraint@915-2SolveMemberConstraint@912-1SolveMemberConstraint@1017-5SolveMemberConstraint@1016-4SolveMemberConstraint@1024-7SolveMemberConstraint@1026-9SolveMemberConstraint@1024-8SolveMemberConstraint@1023-6SolveMemberConstraint@1034-11SolveMemberConstraint@1036-13SolveMemberConstraint@1034-12SolveMemberConstraint@1032-10SolveMemberConstraint@1071-14props@1154-2SolveMemberConstraint@1172-15SolveMemberConstraint@1173-16SolveMemberConstraint@1175-17tyString@1184callerArgs@1206calledMethGroup@1209-1calledMethGroup@1205calledMethGroup@1204-2SolveMemberConstraint@1213-18SolveMemberConstraint@1236-20SolveMemberConstraint@1228-19SolveMemberConstraint@1247-21SolveMemberConstraint@1137-22SolveMemberConstraint@1140-23SolveMemberConstraint@1132-26SolveMemberConstraint@1131-25SolveMemberConstraint@1130-24SolveMemberConstraint@1103-28SolveMemberConstraint@1102-27SolveMemberConstraint@1096-29SolveMemberConstraint@1093-31SolveMemberConstraint@1092-30SolveMemberConstraint@1084-32SolveMemberConstraint@1078-34SolveMemberConstraint@1077-33SolveMemberConstraint@1065-35SolveMemberConstraint@1059-36SolveMemberConstraint@1053-39SolveMemberConstraint@1052-38SolveMemberConstraint@1051-37SolveMemberConstraint@1045-42SolveMemberConstraint@1044-41SolveMemberConstraint@1043-40SolveMemberConstraint@1009-44SolveMemberConstraint@1008-43SolveMemberConstraint@1003-46SolveMemberConstraint@1002-45SolveMemberConstraint@997-47SolveMemberConstraint@985-48SolveMemberConstraint@989-50SolveMemberConstraint@988-49SolveMemberConstraint@985-51SolveMemberConstraint@985-52SolveMemberConstraint@969-54SolveMemberConstraint@968-53SolveMemberConstraint@976-56SolveMemberConstraint@975-55SolveMemberConstraint@980-58SolveMemberConstraint@979-57SolveMemberConstraint@915-3SolveMemberConstraint@1250-59SolveMemberConstraint@895MemberConstraintSolutionOfMethInfo@1289MemberConstraintSolutionOfMethInfo@1298-1declaringType@1299-3TransactMemberConstraintSolution@1320minfos@1329-1results@1337-1results@1337-2GetSupportOfMemberConstraint@1350SolveRelevantMemberConstraints@1362-1SolveRelevantMemberConstraints@1361SolveRelevantMemberConstraintsForTypar@1378SolveRelevantMemberConstraintsForTypar@1384-2SolveRelevantMemberConstraintsForTypar@1384-1SolveRelevantMemberConstraintsForTypar@1386-3AddMemberConstraint@1411-1AddMemberConstraint@1414-2AddMemberConstraint@1402AddMemberConstraint@1420-3consistent@1447-1consistent@1451-2consistent@1452-4consistent@1451-3collect@1466-4consistent@1471-6consistent@1470-5consistent@1481-7implies@1514-1implies@1530-2enforceMutualConsistency@1546-1enforceMutualConsistency@1546-2AddConstraint@1551-1eliminateRedundant@1580-1AddConstraint@1591-3AddConstraint@1570-2AddConstraint@1549SolveTypeSupportsComparison@1620SolveTypeSupportsComparison@1625-1SolveTypeSupportsComparison@1628-2SolveTypeSupportsComparison@1629-3SolveTypeSupportsComparison@1635-4SolveTypSupportsEquality@1660SolveTypSupportsEquality@1665-1SolveTypSupportsEquality@1681-2SolveTypIsEnum@1698SolveTypIsDelegate@1714-1SolveTypIsDelegate@1714SolveTypChoice@1760SolveTypChoice@1761-1SolveTypRequiresDefaultConstructor@1785SolveTypRequiresDefaultConstructor@1784-1SolveTypRequiresDefaultConstructor@1787-2CanMemberSigsMatchUpToCheck@1846-2CanMemberSigsMatchUpToCheck@1852-5CanMemberSigsMatchUpToCheck@1852-6CanMemberSigsMatchUpToCheck@1849-4CanMemberSigsMatchUpToCheck@1858-9CanMemberSigsMatchUpToCheck@1857-8CanMemberSigsMatchUpToCheck@1859-11CanMemberSigsMatchUpToCheck@1858-10outArgTys@1890CanMemberSigsMatchUpToCheck@1875-12CanMemberSigsMatchUpToCheck@1856-7CanMemberSigsMatchUpToCheck@1848-3CanMemberSigsMatchUpToCheck@1845-1CanMemberSigsMatchUpToCheck@1829SolveTypSubsumesTypWithReport@1972SolveTypSubsumesTypWithReport@1973-1SolveTypEqualsTypWithReport@1976SolveTypEqualsTypWithReport@1977-1ArgsMustSubsumeOrConvert@1990ReportNoCandidatesError@2026ReportNoCandidatesError@2027-1ReportNoCandidatesError@2028-2ReportNoCandidatesError@2029-3ReportNoCandidatesError@2030-4ReportNoCandidatesError@2094-5s@2110-2s@2110-1candidates@2139alwaysCheckReturn@2157ResolveOverloading@2168-1ResolveOverloading@2169-2ResolveOverloading@2170-3ResolveOverloading@2170-4ResolveOverloading@2163applicable@2184-1applicable@2185-2applicable@2186-3applicable@2179failOverloading@2208-2failOverloading@2208-1compareCond@2243-1compareTypes@2247-1compareTypes@2246-2c@2256-1compareArg@2252c@2315-2c@2315-3c@2318-4c@2318-5bestMethods@2350-1bestMethods@2349methods@2370-1methods@2371-2methodNames@2373msg@2379-1msg@2379errors@2221-2errors@2222-3errors@2223-4errors@2216-1errors@2215ResolveOverloading@2392-6ResolveOverloading@2393-7ResolveOverloading@2394-8ResolveOverloading@2388-5candidates@2415-1UnifyUniqueOverloading@2435UnifyUniqueOverloading@2424-1UnifyUniqueOverloading@2425-2UnifyUniqueOverloading@2426-3UnifyUniqueOverloading@2429-4EliminateConstraintsForGeneralizedTypars@2451-2EliminateConstraintsForGeneralizedTypars@2447-1EliminateConstraintsForGeneralizedTypars@2441AddCxTypeEqualsTypeUndoIfFailed@2480AddCxTypeMustSubsumeTypeUndoIfFailed@2483AddCxMethodConstraint@2492-1AddCxMethodConstraint@2492AddCxMethodConstraint@2493-2AddCxTypeMustSupportNull@2497AddCxTypeMustSupportNull@2498-1AddCxTypeMustSupportComparison@2502AddCxTypeMustSupportComparison@2503-1AddCxTypeMustSupportEquality@2507AddCxTypeMustSupportEquality@2508-1AddCxTypeMustSupportDefaultCtor@2512AddCxTypeMustSupportDefaultCtor@2513-1AddCxTypeIsReferenceType@2517AddCxTypeIsReferenceType@2518-1AddCxTypeIsValueType@2522AddCxTypeIsValueType@2523-1AddCxTypeIsUnmanaged@2527AddCxTypeIsUnmanaged@2528-1AddCxTypeIsEnum@2532AddCxTypeIsEnum@2533-1AddCxTypeIsDelegate@2537AddCxTypeIsDelegate@2538-1css@2544mtps@2558-1convertedArgs@2586CodegenWitnessThatTypSupportsTraitConstraint@2547ChooseTyparSolutionAndSolve@2622ChooseTyparSolutionAndSolve@2623-1CheckDeclaredTypars@2632-2CheckDeclaredTypars@2633-3CheckDeclaredTypars@2630-1CheckDeclaredTypars@2629CheckDeclaredTypars@2634-4css@2646-1css@2647-2IsApplicableMethApprox@2654-1IsApplicableMethApprox@2654IsApplicableMethApprox@2655-2OutcomePatcompileMatchIncompleteRuleNeverMatchedActionOnFailurePatternTPat_constTPat_wildTPat_asTPat_disjsTPat_conjsTPat_queryTPat_unioncaseTPat_exnconstrTPat_tupleTPat_arrayTPat_recdTPat_rangeTPat_nullTPat_isinstTPat_const@DebugTypeProxyTPat_wild@DebugTypeProxyTPat_as@DebugTypeProxyTPat_disjs@DebugTypeProxyTPat_conjs@DebugTypeProxyTPat_query@DebugTypeProxyTPat_unioncase@DebugTypeProxyTPat_exnconstr@DebugTypeProxyTPat_tuple@DebugTypeProxyTPat_array@DebugTypeProxyTPat_recd@DebugTypeProxyTPat_range@DebugTypeProxyTPat_null@DebugTypeProxyTPat_isinst@DebugTypeProxyPatternValBindingTypedMatchClauseSubExprOfInputfreezeVar@121-1freezeVar@121PathQueryPathConjPathTuplePathRecdPathUnionConstrPathArrayPathExnConstrPathEmptyPathQuery@DebugTypeProxyPathConj@DebugTypeProxyPathTuple@DebugTypeProxyPathRecd@DebugTypeProxyPathUnionConstr@DebugTypeProxyPathArray@DebugTypeProxyPathExnConstr@DebugTypeProxyPathEmpty@DebugTypeProxyRefutedSetRefutedInvestigation_RefutedWhenClauseRefutedInvestigation@DebugTypeProxy_RefutedWhenClause@DebugTypeProxyCannotRefutemkUnknown@187mkOneKnown@212-1go@194-9go@197-10go@201-11go@204-12go@208-13mkOneKnown@212-2consts@222c'@224c'@226-1c'@227-2c'@228-3c'@229-4c'@230-5c'@231-6c'@232-7c'@233-8c'@234-9c'@235-10c'@236-11c'@237-12c'@238-13c'@239-14c'@240-15c'@241-16ucrefs@252others@258others@257-1others@256-2RefuteDiscrimSet@216CombineRefutations@279CombineRefutations@284-1CombineRefutations@292-2refutations@318counterExample@324failingWhenClause@326ActiveFrontierInvestigationPointdiscrimsEq@408discrimsHaveSameSimultaneousClass@454edgeCompare@564BuildSwitch@600BuildSwitch@543-1mkFrontiers@634isPatternPartial@648erasePartialPatterns@665erasePartials@671EdgeDiscrimCompilePatternBasic@695tyargs@775-1CompilePatternBasic@777-1CompilePatternBasic@778-2es2@838CompileSuccessPointAndGuard@850-1ChooseSimultaneousEdges@870-1CompileSimultaneousSet@947-2CompileSimultaneousSet@945-1simulSetOfDiscrims@1010isRefuted@1016-1fallthroughPathFrontiers@1025mkSubActive@1048accessf'@1065-1GenerateNewFrontiersAfterSucccessfulInvestigation@1070-2accessf'@1081-3GenerateNewFrontiersAfterSucccessfulInvestigation@1082-3GenerateNewFrontiersAfterSucccessfulInvestigation@1096-4GenerateNewFrontiersAfterSucccessfulInvestigation@1100-5GenerateNewFrontiersAfterSucccessfulInvestigation@1111-6GenerateNewFrontiersAfterSucccessfulInvestigation@1112-7GenerateNewFrontiersAfterSucccessfulInvestigation@1122-8GenerateNewFrontiersAfterSucccessfulInvestigation@1123-9accessf'@1136-4GenerateNewFrontiersAfterSucccessfulInvestigation@1039-1mkSubActive@1175-2mkSubActive@1175-2Taccessf'@1185-5pathBuilder@1186accessf'@1192-7BindProjectionPattern@1193-2BindProjectionPattern@1191-1BindProjectionPattern@1191-3BindProjectionPattern@1197-4BindProjectionPattern@1199-5BindProjectionPattern@1199-6BindProjectionPattern@1173-7BindProjectionPatterns@1216-1initialSubExpr@1222frontiers@1221CompilePatternBasic@1240-3CompilePattern@1250clausesPretendAllPartialFail@1257atMostOnePartialAtATime@1263-1TyprelnsTypeDefinitelySubsumesTypeNoCoercion@67TypeDefinitelySubsumesTypeNoCoercion@69-1TypeDefinitelySubsumesTypeNoCoercion@87-2TypeDefinitelySubsumesTypeNoCoercion@71-3CanCoerceTypesFeasiblyEquiv@106TypesFeasiblyEquiv@104-1TypeFeasiblySubsumesType@143TypeFeasiblySubsumesType@127-1TypeFeasiblySubsumesType@125-2ChooseTyparSolutionAndRange@159-1ChooseTyparSolutionAndRange@159loop@225-46tps@238-1solutions@240IteratedAdjustArityOfLambdaBody@287IteratedAdjustArityOfLambda@299-1IteratedAdjustArityOfLambda@299RequiredButNotSpecifiedValueNotContainedConstrNotContainedExnconstrNotContainedFieldNotContainedInterfaceNotRevealedOverrideCanImplementOverrideInfoRequiredSlotSlotImplSetTypeIsImplicitlyAbstractOverrideDoesntOverrideCallerArg`1CalledArgAssignedCalledArg`1AssignedItemSetterTargetAssignedPropSetterAssignedIlFieldSetterAssignedRecdFieldSetterAssignedPropSetter@DebugTypeProxyAssignedIlFieldSetter@DebugTypeProxyAssignedRecdFieldSetter@DebugTypeProxyAssignedItemSetter`1CallerNamedArg`1CalledMethArgSet`1CalledMeth`1get_UsesParamArrayConversion@1580get_ParamArrayCalledArgOpt@1582get_ParamArrayCallerArgs@1584get_HasCorrectArity@1597get_AllUnnamedCalledArgs@1613MakeCalledArgs@1621unnamedCalledArgs@1652-1unnamedCalledArgs@1650argSetInfos@1662-2argSetInfos@1663-3argSetInfos@1666-4assignedNamedArgs@1689-1assignedNamedArgs@1689unassignedNamedItem@1690-1unassignedNamedItem@1690argSetInfos@1703-5names@1723-4argSetInfos@1647-1argSetInfos@1647MakeCalledMeth@1733MakeCalledMeth@1734-1MakeCalledMeth@1735-2MakeCalledMeth@1736-3MakeCalledMeth@1737-4MakeCalledMeth@1738-5NamesOfCalledArgs@1742FindUniqueFeasibleSupertype@1821minfos@1831dispatchSlots@1834-2topValSynArities@1835GetAbstractMethInfosForSynMethodDecl@1837GetAbstractPropInfosForSynPropertyDecl@1850GetAbstractPropInfosForSynPropertyDecl@1846-1TakeObjAddrForMethodCall@1911methodName@1922-1declaringType@1923-2TryImportProvidedMethodBaseAsLibraryIntrinsic@1932BuildMethodCall@1955BuildNewDelegateExpr@2051delArgVals@2054args@2064-6args@2062-7ProvidedMethodCallsconvertConstExpr@2092convertConstExpr@2095-1loop@2134-48loop@2135-49et@2136-1rank@2137loop@2138-50loop@2139-51et@2140-2loop@2141-52loop@2142-53et@2143-3loop@2144-54isGeneric@2146headType@2147loop@2152-55genericArgs@2159-2genericArgs@2163-3erasedArgTys@2172loop@2171-56varConv@2184-2varConv@2184-1varConv@2184varConv@2186-3varConv@2186-4addVar@2385-1removeVar@2394-1fail@2189-3exprToExprAndWitness@2193-1exprToExprAndWitness@2202-2exprToExprAndWitness@2210-3exprToExprAndWitness@2219-4exprToExprAndWitness@2224-5exprToExprAndWitness@2229-6exprToExprAndWitness@2236-7exprToExprAndWitness@2245-8exprToExprAndWitness@2257-9exprToExprAndWitness@2266-10exprToExprAndWitness@2276-11exprToExprAndWitness@2288-12exprToExprAndWitness@2296-13exprToExprAndWitness@2307-14exprToExprAndWitness@2330-15exprToExprAndWitness@2336-16exprToExprAndWitness@2340-17exprToExprAndWitness@2348-18exprToExprAndWitness@2356-19exprToExprAndWitness@2370-20bT@2358v1@2359e1T@2361v2@2363e2T@2365exprToExprAndWitness@2350-21exprToExprAndWitness@2342-22exprToExprAndWitness@2309-23vs@2311exprToExprAndWitness@2298-24exprToExprAndWitness@2290-25exprToExprAndWitness@2278-26exprToExprAndWitness@2268-27exprToExprAndWitness@2259-28exprToExprAndWitness@2247-29exprT@2254exprToExprAndWitness@2238-30elems@2240-1elems@2231-2exprT@2233-1exprToExprAndWitness@2212-31exprToExprAndWitness@2204-32targetTy@2206exprToExprAndWitness@2195-33targetTy@2197-1sourceTy@2198ctorCallToExpr@2378-1ctorCallToExpr@2379-2ctorCallToExpr@2381-4ctorCallToExpr@2381-3nm@2386-1mut@2387vRaw@2388tyT@2389vRaw@2395-1methodCallToExpr@2399-1targetMethInfo@2400objArgs@2402arguments@2406-1arguments@2406genericArguments@2408genericArguments@2409-1vRaw@2423-2parameters@2439-3paramTys@2442paramVars@2448-1paramVars@2448erasedThisTy@2455thisVar@2456ea@2461-2ea@2461-1ea@2461typeName@2475-3methName@2476DispatchSlotCheckingargInfos@938-2argInfos@945-3argTys@963-1GetTypeMemberOverrideInfo@968GetTypeMemberOverrideInfo@969-1argTys@999-2IsTyparKindMatch@1036reverseTyparRenaming@1047composeTyparInsts@1050IsExactMatch@1061IsExactMatch@1061-1ttpinst@1089ttpinst@1089-1ttpinst@1089-2ttpinst@1090-3OverrideImplementsDispatchSlot@1100DispatchSlotIsAlreadyImplemented@1105availPriorOverridesKeyed@1123overridesKeyed@1124CheckDispatchSlotsAreImplemented@1129-1CheckDispatchSlotsAreImplemented@1140-2CheckDispatchSlotsAreImplemented@1158-3CheckDispatchSlotsAreImplemented@1142-4CheckDispatchSlotsAreImplemented@1126availPriorOverridesKeyed@1176-1relevantVirts@1182CheckOverridesAreAllUsedOnce@1184CheckOverridesAreAllUsedOnce@1205-1CheckOverridesAreAllUsedOnce@1214-3CheckOverridesAreAllUsedOnce@1214-2CheckOverridesAreAllUsedOnce@1189-4CheckOverridesAreAllUsedOnce@1194-5availImpliedInterfaces@1232intfSets@1243reqdTyInfos@1257-2reqdTyInfos@1255-1reqdTyInfos@1253overlap@1273GetSlotImplSets@1275-1GetSlotImplSets@1274GetSlotImplSets@1286-3GetSlotImplSets@1285-4isImpliedInterfaceType@1292-1dispatchSlots@1305-1dispatchSlots@1299availPriorOverrides@1336isRelevantRequiredProperty@1343dispatchSlotsKeyed@1350GetSlotImplSets@1280-2interfaces@1362allImmediateMembersThatMightImplementDispatchSlots@1381mustOverrideSomething@1395-2mustOverrideSomething@1386-1allImmediateMembersThatMightImplementDispatchSlots@1412-1overrides@1418overridesToCheck@1428overridesToCheck@1427-1overriden@1445-1overriden@1442CheckImplementationRelationAtEndOfInferenceScope@1436SignatureConformanceChecker-ctor@323-29-ctor@323-28-ctor@322-31-ctor@322-30sigAttribs@339attribExprEq@342attribNamedArgEq@346attribsEq@353-1attribsHaveSameTycon@360-1clo@415-74clo@410-73clo@428-76clo@420-75clo@432-77clo@398-72err@436clo@439-78aintfsUser@453aintfsUser@453-1flatten@458-1flatten@457-2flatten@456-3unimpl@463clo@464-79hidden@465clo@466-81clo@466-82clo@466-80clo@503-83clo@515-84clo@517-85clo@518-86clo@519-87implArgInfos@522res@531-5res@530-4res@530-6res@535-7clo@510-88err@549-2clo@551-89clo@552-90clo@553-91clo@554-92clo@555-93clo@556-94clo@557-95clo@558-96clo@562-97clo@565-98clo@567-99clo@569-100clo@587-101clo@575-102clo@577-103clo@579-104clo@582-105clo@591-106clo@592-107clo@593-108clo@593-109clo@594-110clo@595-111clo@599-112clo@600-113clo@601-114clo@602-115clo@603-116clo@604-117clo@606-118clo@607-119clo@614-120clo@616-121clo@620-122clo@628-123clo@630-124clo@632-125clo@637-126clo@639-127m1@655m2@656clo@657-129clo@657-128clo@657-130clo@658-132clo@658-131clo@658-133clo@661-134clo@663-135m1@668-1m2@669-1clo@670-137clo@670-136clo@670-138clo@671-140clo@671-139clo@671-141clo@674-142clo@676-143m1@679-2m2@680-2clo@681-145clo@681-144clo@681-146clo@682-148clo@682-147clo@682-149m1@687-3m2@688-3clo@689-151clo@689-150clo@689-152clo@691-154clo@691-153clo@691-155aset@698fset@699reportNiceError@703-1reportNiceError@704-2reportNiceError@705-3clo@771-156names@730-3clo@732-157clo@719-158clo@750-159clo@750-160clo@753-161clo@723-162clo@759-163clo@725-164clo@761-165clo@770-166clo@774-167clo@786-168clo@785-169clo@780-170clo@795-172clo@795-171clo@796-173clo@801-175clo@801-174clo@802-176sigValHadNoMatchingImplementation@805-1clo@819-177matchingPairs@833-1matchingPairs@832allPairsOk@842allPairsOk@842-1clo@848-180clo@847-179clo@820-178clo@860-181CheckNamesOfModuleOrNamespaceContents@874-1CheckNamesOfModuleOrNamespaceContents@874CheckNamesOfModuleOrNamespaceContents@875-2CheckNamesOfModuleOrNamespaceContents@881-4CheckNamesOfModuleOrNamespaceContents@881-3CheckNamesOfModuleOrNamespaceContents@882-5CheckNamesOfModuleOrNamespaceContents@888-7CheckNamesOfModuleOrNamespaceContents@886-6CheckNamesOfModuleOrNamespaceContents@894-8AugmentmkCombineHashGenerators@116mkCompareTestConjuncts@151mkEqualsTestConjuncts@168mkTest@201mkTest@225-1mkTest@249-2mkTest@270-3mkTest@293-4mkTest@317-5mkTest@356-6mkCase@351-4expr@369dtree@373mkTest@413-7mkCase@408-5expr@426-1dtree@430-1mkTest@472-8mkCase@467-6expr@484-2dtree@487-2mkTest@527-9mkCase@522-7expr@540-3dtree@543-3mkFieldHash@578mkHash@597mkHash@621-1mkCase@617-8hasNominalInterface@756-1MakeBindingsForCompareAugmentation@928MakeBindingsForCompareAugmentation@929-1MakeBindingsForCompareWithComparerAugmentation@954-2MakeBindingsForCompareWithComparerAugmentation@954-1MakeBindingsForCompareWithComparerAugmentation@954MakeBindingsForCompareWithComparerAugmentation@955-5MakeBindingsForCompareWithComparerAugmentation@955-4MakeBindingsForCompareWithComparerAugmentation@955-3MakeBindingsForEqualityWithComparerAugmentation@1000MakeBindingsForEqualityWithComparerAugmentation@1000-3MakeBindingsForEqualityWithComparerAugmentation@1000-2MakeBindingsForEqualityWithComparerAugmentation@1000-1MakeBindingsForEqualityWithComparerAugmentation@1001-4MakeBindingsForEqualityWithComparerAugmentation@1001-7MakeBindingsForEqualityWithComparerAugmentation@1001-6MakeBindingsForEqualityWithComparerAugmentation@1001-5MakeBindingsForEqualityWithComparerAugmentation@1002-8MakeBindingsForEqualityWithComparerAugmentation@1002-11MakeBindingsForEqualityWithComparerAugmentation@1002-10MakeBindingsForEqualityWithComparerAugmentation@1002-9MakeBindingsForEqualsAugmentation@1037MakeBindingsForEqualsAugmentation@1038-1MakeBindingsForEqualsAugmentation@1039-2TypeDefinitelyHasEquality@1043TypeDefinitelyHasEquality@1045-1TypeDefinitelyHasEquality@1050-2TypeDefinitelyHasEquality@1060-3NicePrintPrintDatadataExprWrapL@1735lay@1745-18dataExprsL@1749InferredSigPrintingisConcreteNamespace@1642-1isConcreteNamespace@1645-2imdefL@1657-1filterVal@1658filterExtMem@1659imdefL@1664-2imdefL@1666-3denv@1675imbindL@1681-2imbindL@1692-3imbindL@1671-1TastDefinitionPrintinglayoutExtensionMembers@1274layoutUnionCaseArgTypes@1277layoutUnionCase@1282layoutUnionCases@1288-1fieldLs@1350fieldLs@1349-1iimplsLs@1367-1impliedNames@1378ctorLs@1388ctorLs@1388-1methLs@1394-1methLs@1394-2methLs@1394methLs@1393-3methLs@1392-4fieldLs@1398-2propLs@1403eventLs@1407membLs@1409membLs@1409-1nestedTypeLs@1419nestedTypeLs@1415-2nestedTypeLs@1416-3nestedTypeLs@1415-1adhoc@1485-4adhoc@1485-3adhoc@1477-5adhoc@1476-6adhoc@1475-7sortKey@1487-1iimpls@1497-1layoutTycon@1499layoutTycon@1500-1layoutTycon@1500-2layoutTycon@1501-3layoutTycon@1501-4layoutTycon@1502-5layoutTycon@1502-6recdFieldRefL@1525rhsL@1533rhsL@1538-1inherits@1551-2inherits@1550-3vsprs@1557-2vsprs@1556-3vsprs@1555-4staticValsLs@1561staticValsLs@1560-1instanceValsLs@1565instanceValsLs@1564-1layoutExnDefn@1618xs@1630InfoMemberPrintingformatMethInfoToBufferFSharpStyle@1179-1formatMethInfoToBufferFSharpStyle@1177formatMethInfoToBufferCSharpStyle@1201formatMethInfoToBufferCSharpStyle@1201-1PrintTastMemberOrValsptps@1119ptps@1118-1ptps@1117-2PrintTypesstr@527-2str@532-3isInternalCompPath@545path@576-1layoutAttribArg@615layoutAttribArgs@640attrs@671-2attrs@671-3attrs@672-4attrs@672-5attrs@673-6attrs@673-7attrs@674-8attrs@674-9attrs@675-10attrs@675-11attrs@676-12attrs@676-13attrs@677-14attrs@677-15attrs@678-16attrs@678-17layoutAttribs@681layoutTyparAttribs@691layoutTyparRef@694-2layoutTyparRef@694-1layoutTyparRef@694cxs@731-1cxs@731cxsL@737layoutConstraintWithInfo@797tys@811sortVars@823-1sortVars@823-2sortVars@823-2TsortCons@824-1sortCons@824-2sortCons@824-2TlayoutMeasure@825layoutMeasure@826-1prefix@829-1prefix@830-2postfix@831postfix@832-1layoutTypeWithInfoAndPrec@856layoutTypeWithInfoAndPrec@875-1layoutTypesWithInfoAndPrec@893isOptionalArg@915isParamArray@916argL@915allArgsL@934allArgsL@931-1allArgsL@933-2layoutTopType@935tpcs@940-1tpcs@940coreL@950layoutPrettifiedTypes@962env@965-4env@965-5layoutMemberTypeAndConstraints@975-1layoutMemberTypeAndConstraints@975layoutMemberTypeCore@982argInfos@986-1argInfos@986memberParentTypars@990parentTyparTys@991PrintILfullySplitILTypeRef@86layoutILArrayShape@134layoutILGenericParameterDefs@137layoutILType@160args@173-5layoutILParameters@213layoutSetterType@272-1s@308textOpt@314ctors@418-1ctors@418-2ctors@417-3ctors@416-4fields@423-1fields@422-2props@428props@427-1events@433events@432-1meths@442-4meths@442-5meths@442-6meths@442-7meths@442-3meths@441-8meths@439-9meths@438-10meths@437-11members@447members@446-1bodyStatic@453bodyStatic@454-1bodyStatic@455-2bodyStatic@456-3bodyInstance@459bodyInstance@460-1bodyInstance@461-2bodyInstance@462-3types@473types@472-1types@471-2layoutILTypeDef@482layoutILTypeDef@481-1rhs@489PrintUtilitieslayoutsL@59suppressInheritanceAndInterfacesForTyInSimplifiedDisplays@62suppressInheritanceAndInterfacesForTyInSimplifiedDisplays@62-1InfossuperOpt@68itys@102itys@117-2itys@117-1itys@121-3itys@123-4AllowMultiIntfInstantiationsloop@142-39loop@147-40loop@171-41IterateEntireHierarchyOfType@215ExistsInEntireHierarchyOfType@219SearchEntireHierarchyOfType@224AllSuperTypesOfType@232AllSuperTypesOfType@232-1AllInterfacesOfType@236AllInterfacesOfType@236-1AllInterfacesOfType@236-2ExistsSameHeadTypeInHierarchy@251ExistsHeadTypeInEntireHierarchy@255CopyTyparConstraints@303-1CopyTyparConstraints@280FixupNewTypars@323ILTypeInfoParamNameAndTypeParamNameAndTypeOfArgInfo@394ParamNameAndTypesOfMember@396InstParamNameAndTypes@400OptionalArgCallerSideValueConstantPassByRefConstant@DebugTypeProxyPassByRef@DebugTypeProxyOptionalArgInfo_NotOptional_CalleeSideCallerSide_NotOptional@DebugTypeProxy_CalleeSide@DebugTypeProxyCallerSide@DebugTypeProxyParamDataOptionalArgInfoOfProvidedParameter@479OptionalArgInfoOfProvidedParameter@480-1pty@490GetAndSanityCheckProviderMethod@501GetAndSanityCheckProviderMethod@502-1GetAndSanityCheckProviderMethod@502-2RepresentativeMethodInfoOfPropertyInfo@507RepresentativeMethodInfoOfPropertyInfo@508-1RepresentativeMethodInfoOfPropertyInfo@508-2RepresentativeMethodInfoOfPropertyInfo@509-3RepresentativeMethodInfoOfPropertyInfo@510-4RepresentativeMethodInfoOfPropertyInfo@510-5RepresentativeMethodInfoOfPropertyInfo@512-6RepresentativeMethodInfoOfPropertyInfo@512-7ILMethInfoILFSMethInfoILMethInfo@DebugTypeProxyILFSMethInfo@DebugTypeProxyGetParamTypes@637GetRawArgTypes@642GetParamNamesAndTypes@646MethInfoFSMethILMethDefaultStructCtorProvidedMethFSMeth@DebugTypeProxyILMeth@DebugTypeProxyDefaultStructCtor@DebugTypeProxyProvidedMeth@DebugTypeProxyget_EnclosingType@730get_LogicalName@758get_XmlDoc@826-3get_XmlDoc@826-2get_NumArgs@838get_NumArgs@841-1get_IsInstance@853get_GenericArity@866get_IsProtectedAccessiblity@875get_IsVirtual@884get_IsConstructor@895get_IsClassConstructor@904get_IsFinal@927get_IsAbstract@944get_IsNewSlot@954ILFieldInfoProvidedFieldILFieldInfo@DebugTypeProxyProvidedField@DebugTypeProxyget_EnclosingType@1011-1get_ILTypeRef@1019get_FieldName@1038get_IsInitOnly@1046get_IsStatic@1064get_IsSpecialName@1072get_LiteralValue@1081get_LiteralValue@1082-1get_ILFieldType@1092FieldType@1100RecdFieldInfoUnionCaseInfoILPropInfoGetParamNamesAndTypes@1227-1GetParamTypes@1231-1PropInfoFSPropILPropProvidedPropFSProp@DebugTypeProxyILProp@DebugTypeProxyProvidedProp@DebugTypeProxyget_PropertyName@1269get_HasGetter@1278get_HasSetter@1286get_EnclosingType@1295-2get_IsVirtualProperty@1310get_IsNewSlot@1324-1get_IsDispatchSlot@1343get_IsStatic@1354-1get_IsIndexer@1384get_XmlDoc@1416-5get_XmlDoc@1416-4GetParamNamesAndTypes@1443-3GetParamNamesAndTypes@1443-2GetParamNamesAndTypes@1447-5GetParamNamesAndTypes@1448-6GetParamNamesAndTypes@1449-7GetParamNamesAndTypes@1447-4GetPropertyType@1466GetParamDatas@1472GetParamTypes@1475-2get_GetterMethod@1483get_GetterMethod@1483-1get_SetterMethod@1495get_SetterMethod@1495-1ILEventInfoBadEventTransformationFindDelegateTypeOfPropertyEvent@1557EventInfoFSEventILEventProvidedEventFSEvent@DebugTypeProxyILEvent@DebugTypeProxyProvidedEvent@DebugTypeProxyget_EnclosingType@1582-3get_XmlDoc@1599-7get_XmlDoc@1599-6get_EventName@1607get_IsStatic@1616-2get_IsStatic@1616-3get_IsStatic@1617-4GetAddMethod@1636GetAddMethod@1636-1GetRemoveMethod@1646GetRemoveMethod@1646-1GetDelegateType@1668mtps@1682GetPropInfoHashCode@1744GetPropInfoHashCode@1744-1returnType@1783returnType@1784-1returnType@1785-2mkSlotParam@1804GetCompiledReturnTy@1818paramTypes@1837paramTypes@1837-1GetParamTypes@1839-3GetParamTypes@1844-5GetParamTypes@1845-6GetParamTypes@1844-4GetObjArgTypes@1857GetObjArgTypes@1860-1GetParamAttribs@1867isParamArrayArg@1878isOutArg@1879isOptArg@1880GetParamAttribs@1877-1GetParamAttribs@1891-3GetParamAttribs@1892-5GetParamAttribs@1892-4GetParamAttribs@1894-6GetParamAttribs@1891-2formalEnclosingTypars@1933formalMethTypars@1935GetSlotSig@1943GetSlotSig@1955-2GetSlotSig@1956-3GetSlotSig@1957-4GetSlotSig@1958-5GetSlotSig@1955-1formalParams@1919formalParams@1919-1formalRetTy@1920items@1973items@1973-1paramNamesAndTypes@1981-1paramNamesAndTypes@1983-2paramNamesAndTypes@1987-3paramNamesAndTypes@1981GetParamDatas@1995-2GetParamDatas@1995-1GetParamDatas@1995-3CompiledSigMethInfosEquivByNameAndPartialSig@2058MethInfosEquivByNameAndPartialSig@2058-1PropInfosEquivByNameAndPartialSig@2065AccessorDomainAccessibleFromAccessibleFrom@DebugTypeProxyObsoleteWarningObsoleteErrortuptys@2688BuildFSharpMethodApp@2681-2BuildFSharpMethodApp@2677-1BuildFSharpMethodApp@2677isConstructor@2724valu@2725chooser@2743GetImmediateIntrinsicMethInfosOfType@2791meths@2780meths@2779-2meths@2779-1GetImmediateIntrinsicMethInfosOfType@2781-1GetImmediateIntrinsicMethInfosOfType@2787-2GetImmediateIntrinsicMethInfosOfType@2790-3PropertyCollectorhashIdentity@2802hashIdentity@2800-1Close@2834GetImmediateIntrinsicPropInfosOfType@2872matchingProps@2852matchingProps@2848-1GetImmediateIntrinsicPropInfosOfType@2854-1GetImmediateIntrinsicPropInfosOfType@2861-2GetImmediateIntrinsicPropInfosOfType@2868-3HierarchyItemMethodItemPropertyItemRecdFieldItemEventItemILFieldItemMethodItem@DebugTypeProxyPropertyItem@DebugTypeProxyRecdFieldItem@DebugTypeProxyEventItem@DebugTypeProxyILFieldItem@DebugTypeProxyInfoReaderhashFlags1@3052hashFlags2@3057-ctor@3061-18-ctor@3062-19-ctor@3063-20-ctor@3064-21-ctor@3065-22-ctor@3066-23-ctor@3068-24-ctor@3068-25-ctor@3069-26-ctor@3069-27clo@2917-51clo@2906-52clo@2904-54clo@2904-53clo@2914-55clo@2930-56clo@2928-58clo@2928-57clo@2938-59clo@2963-60clo@2970-61clo@2974-62clo@2977-63clo@2980-64clo@2983-65clo@2986-66clo@2989-67clo@2995-68clo@3030-69clo@3024-70clo@3046-71ConstructorInfosOfILType@3118ConstructorInfosOfILType@3117-1GetIntrinsicConstructorInfosOfType@3129-1GetIntrinsicConstructorInfosOfType@3129GetIntrinsicConstructorInfosOfType@3142-2GetIntrinsicConstructorInfosOfType@3138-3FindMemberFlagIndexedList`1AddItems@3161excludeItems@3168-1excludeItems@3168itemsToAdd@3197excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes@3204-1excludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypes@3204equivVirts@3207-1equivNewSlots@3226-1filterOverrides@3265-1filterOverrides@3262filterOverrides@3238-2filterOverrides@3230-3filterOverrides@3230-4filterOverrides@3221-6filterOverrides@3219-5FilterOverridesOfMethInfos@3269FilterOverridesOfMethInfos@3269-1FilterOverridesOfMethInfos@3269-2FilterOverridesOfMethInfos@3269-3FilterOverridesOfMethInfos@3269-4FilterOverridesOfMethInfos@3269-5FilterOverridesOfPropInfos@3272FilterOverridesOfPropInfos@3272-1FilterOverridesOfPropInfos@3272-2FilterOverridesOfPropInfos@3272-3FilterOverridesOfPropInfos@3272-4FilterOverridesOfPropInfos@3272-5ExcludeHiddenOfMethInfos@3277ExcludeHiddenOfMethInfos@3278-1ExcludeHiddenOfPropInfos@3287ExcludeHiddenOfPropInfos@3287-1SigOfFunctionForDelegateGetSigOfFunctionForDelegate@3361AttributeCheckingprovAttribs@2351TryBindTyconRefAttribute@2352-1TryBindTyconRefAttribute@2352TryBindTyconRefAttribute@2361-2BindMethInfoAttributes@2372TryBindMethInfoAttribute@2378TryBindMethInfoAttribute@2379-2TryBindMethInfoAttribute@2379-1TryBindMethInfoAttribute@2382-5TryBindMethInfoAttribute@2382-4TryBindMethInfoAttribute@2381-3TryFindMethInfoStringAttribute@2392TryFindMethInfoStringAttribute@2393-1TryFindMethInfoStringAttribute@2394-2TryFindTyconRefStringAttribute@2399TryFindTyconRefStringAttribute@2400-1TryFindTyconRefStringAttribute@2401-2CheckFSharpAttributes@2426CheckFSharpAttributes@2440-2CheckFSharpAttributes@2438-1CheckFSharpAttributes@2453-4CheckFSharpAttributes@2451-3CheckFSharpAttributes@2462-6CheckFSharpAttributes@2460-5CheckProvidedAttributes@2472-1CheckProvidedAttributes@2472isObsolete@2497isHidden@2499CheckProvidedAttributesForUnseen@2512-1CheckProvidedAttributesForUnseen@2512CheckPropInfoAttributes@2523CheckILFieldAttributes@2534search@2539search@2543-3search@2542-2search@2540-1search@2549-4isUnseenByObsoleteAttrib@2560isUnseenByObsoleteAttrib@2561-1isUnseenByObsoleteAttrib@2563-2isUnseenByHidingAttribute@2579-1isUnseenByHidingAttribute@2579isUnseenByHidingAttribute@2588-2PropInfoIsUnseen@2605CheckUnionCaseAttributes@2615CheckRecdFieldAttributes@2619AccessibilityLogicIsAccessible@2133accessibleByFamily@2150IsEntityAccessible@2183IsTypeInstAccessible@2221access@2235access@2302-1access@2314-2ImportAssemblyLoaderImportMapImportILTypeRefUncached@104ImportILType@139ImportProvidedNamedType@157ImportProvidedTypeAsILType@164ImportProvidedTypeAsILType@165-1ImportProvidedTypeAsILType@166-2ImportProvidedTypeAsILType@167-3et@168ImportProvidedTypeAsILType@169-4ImportProvidedTypeAsILType@170-5ImportProvidedTypeAsILType@171-6ImportProvidedTypeAsILType@173-7ImportProvidedTypeAsILType@174-8ImportProvidedTypeAsILType@178-9args@179-4ImportProvidedTypeAsILType@180-10genericArgs@190genericArgs@190-1ImportProvidedTypeAsILType@193-11ImportProvidedType@201elemTy@202ImportProvidedType@203-1ImportProvidedType@204-2ImportProvidedType@205-3ImportProvidedType@207-4ImportProvidedType@208-5ImportProvidedType@214-6ImportProvidedType@215-7ImportProvidedType@216-8ImportProvidedType@238-9tref@261mbase@267declaringType@268declaringGenericTypeDefn@270declaringGenericTypeDefn@271-1methods@274metadataToken@275found@276-1found@276methodName@280typeName@281-1mbase@285-1declaringType@286-1declaringGenericTypeDefn@287-2ctors@292actualParameterTypes@294-1actualParameterTypes@295-2actualParameterTypes@294found@302-3found@299-5found@300-6found@299-4found@297-2typeName@307-2rty@316rty@313-1genericArity@319genericArity@320-1callingConv@322parameters@324-1parameters@325-2parameters@324ImportProvidedMethodBaseAsILMethodRef@326tps@342tptys@344constraints@347ImportILGenericParameters@346multisetDiscriminateAndMap@358multisetDiscriminateAndMap@373-1lazyModuleOrNamespaceTypeForNestedTypes@380ImportILTypeDef@389ImportILTypeDef@389-1modty@407add@406-6add@412-7ImportILTypeDefs@425info@441-1info@438ImportILAssemblyExportedTypes@454nested@475-1ImportILAssemblyTypeForwarders@469-1ImportILAssemblyTypeForwarders@467ImportILAssembly@499ImportILAssembly@507-1ImportILAssembly@510-2LexfilterstringOfPos@33-3stringOfPos@33-2outputPos@34-3outputPos@34-2warningStringOfPos@39-1warningStringOfPos@39ContextCtxtLetDeclCtxtIfCtxtTryCtxtFunCtxtFunctionCtxtWithAsLetCtxtWithAsAugmentCtxtMatchCtxtForCtxtWhileCtxtWhenCtxtVanillaCtxtThenCtxtElseCtxtDoCtxtInterfaceHeadCtxtTypeDefnsCtxtNamespaceHeadCtxtModuleHeadCtxtMemberHeadCtxtMemberBodyCtxtModuleBodyCtxtNamespaceBodyCtxtExceptionCtxtParenCtxtSeqBlockCtxtMatchClausesCtxtLetDecl@DebugTypeProxyCtxtIf@DebugTypeProxyCtxtTry@DebugTypeProxyCtxtFun@DebugTypeProxyCtxtFunction@DebugTypeProxyCtxtWithAsLet@DebugTypeProxyCtxtWithAsAugment@DebugTypeProxyCtxtMatch@DebugTypeProxyCtxtFor@DebugTypeProxyCtxtWhile@DebugTypeProxyCtxtWhen@DebugTypeProxyCtxtVanilla@DebugTypeProxyCtxtThen@DebugTypeProxyCtxtElse@DebugTypeProxyCtxtDo@DebugTypeProxyCtxtInterfaceHead@DebugTypeProxyCtxtTypeDefns@DebugTypeProxyCtxtNamespaceHead@DebugTypeProxyCtxtModuleHead@DebugTypeProxyCtxtMemberHead@DebugTypeProxyCtxtMemberBody@DebugTypeProxyCtxtModuleBody@DebugTypeProxyCtxtNamespaceBody@DebugTypeProxyCtxtException@DebugTypeProxyCtxtParen@DebugTypeProxyCtxtSeqBlock@DebugTypeProxyCtxtMatchClauses@DebugTypeProxyAddBlockEndFirstInSequenceToString@97-18ToString@97-17ToString@106-20ToString@106-19LexbufStateValueTypeTokenTupangles@451afterAngles@452|TyparsCloseOp|_|@496-1|TyparsCloseOp|_|@496LexFilterImplclo@967-50clo@948-49thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember@1076-1thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember@1080-2thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember@1082-3tokenBalancesHeadContext@1111-1suffixExists@1148-1suffixExists@1148-1TinsertComingSoonTokens@1218-1insertComingSoonTokens@1226-2LexFilterPicklePickledDataWithReferences`1Fixup@52OptionalFixup@58Table`1Create@91-13InputTable`1NodeOutTable`2WriterStateNodeInTable`2ReaderStatep_tup2@234-1p_tup2@234p_tup3@235-1p_tup3@235p_tup4@236-1p_tup4@236u_tup2@314u_tup3@316u_tup4@318p_array@430p_lazy@461p_hole@499p_hole@499-1u_array@505u_lazy@555u_hole@587u_hole@587-1u_encoded_string@598u_strings@600u_strings@600-1u_ints@601u_ints@601-1p_encoded_string@605p_strings@607p_strings@607-1p_ints@608p_ints@608-1u_encoded_pubpath@634p_encoded_pubpath@639u_encoded_nleref@647u_encoded_nleref@647-1p_encoded_nleref@667p_encoded_nleref@667-2p_encoded_nleref@667-1st1@691st1@691-1st1@691-2st1@691-3st1@692-4st1@692-5st1@692-6st1@692-7st1@693-8st1@693-9st1@693-10st1@693-11st2@713st2@713-1st2@713-2st2@713-3st2@714-4st2@714-5st2@714-6st2@714-7st2@715-8st2@715-9st2@715-10st2@715-11pickleObjWithDanglingCcus@723pickleObjWithDanglingCcus@728-1st2@749-12st2@749-13st2@749-14st2@750-15st2@750-16st2@750-17st2@751-18st2@751-19st2@751-20phase2data@760phase2data@765-1unpickleObjWithDanglingCcus@779unpickleObjWithDanglingCcus@779-1unpickleObjWithDanglingCcus@779-2unpickleObjWithDanglingCcus@780-3unpickleObjWithDanglingCcus@780-4unpickleObjWithDanglingCcus@780-5unpickleObjWithDanglingCcus@781-6unpickleObjWithDanglingCcus@781-7unpickleObjWithDanglingCcus@781-8p_ILModuleRef@817p_ILModuleRef@817-1p_ILAssemblyRef@821p_ILAssemblyRef@821-1p_ILAssemblyRef@821-2p_ILAssemblyRef@821-3p_ILAssemblyRef@821-5p_ILAssemblyRef@821-4p_ILAssemblyRef@821-6p_ILAssemblyRef@821-7p_ILAssemblyRef@821-8u_ILModuleRef@841u_ILModuleRef@841-1u_ILAssemblyRef@848u_ILAssemblyRef@848-1u_ILAssemblyRef@848-2u_ILAssemblyRef@848-3u_ILAssemblyRef@848-4u_ILAssemblyRef@848-5u_ILAssemblyRef@848-6u_ILAssemblyRef@848-7p_ILArrayShape@873p_ILArrayShape@873-1p_ILArrayShape@873-2p_ILArrayShape@873-3p_ILArrayShape@873-5p_ILArrayShape@873-4p_ILArrayShape@873-6p_ILArrayShape@873-7p_ILTypes@887p_ILTypes@887-1u_ILArrayShape@926u_ILArrayShape@926-1u_ILArrayShape@926-2u_ILArrayShape@926-3u_ILArrayShape@926-4u_ILArrayShape@926-5u_ILArrayShape@926-6u_ILCallSig@943-1u_ILCallSig@943u_ILCallSig@943-2u_ILTypeSpec@944u_ILMethodRef@979u_ILMethodSpec@987encode_table@1114clo@1115-20decoders@1120decoders@1121-1decoders@1122-2decoders@1123-3decoders@1124-4decoders@1125-5decoders@1126-6decoders@1127-7decoders@1128-8decoders@1129-9decoders@1130-10decoders@1131-11decoders@1132-12decoders@1133-13decoders@1134-14decoders@1135-15decoders@1136-16decoders@1137-17decoders@1138-18decoders@1139-19decoders@1140-20decoders@1141-21decoders@1142-22decoders@1143-23decoders@1144-24decoders@1145-25decoders@1146-26decoders@1147-27decoders@1148-28tab@1151-3add_instr@1152-1decode_tab@1154-1decode_tab@1154u_ILInstr@1198p_Map@1208-1p_Map@1208p_Map@1208-2p_Map@1208-3p_namemap@1210u_Map@1214u_Map@1214-1u_Map@1214-2u_namemap@1216p_local_item_ref@1236p_tcref@1239p_ucref@1243u_tcref@1252u_ucref@1258p_typs@1268p_nonlocal_val_ref@1275p_vref@1282u_typs@1290b1@1295u_vref@1303u_vrefs@1309p_trait_sln@1370p_trait_sln@1370-1p_trait@1381p_trait@1381-1p_trait@1381-2u_trait_sln@1389u_trait_sln@1389-1u_trait@1404u_trait@1404-1p_typar_constraints@1444p_typar_constraints@1444-1u_typar_constraint@1450u_typar_constraint@1451-1u_typar_constraint@1452-2u_typar_constraint@1453-3u_typar_constraint@1454-4u_typar_constraint@1455-5u_typar_constraint@1456-6u_typar_constraint@1457-7u_typar_constraint@1458-8u_typar_constraint@1459-9u_typar_constraint@1460-10u_typar_constraint@1461-11u_typar_constraint@1462-12u_typar_constraints@1466u_typar_constraints@1466-1p_typar_spec_data@1471p_typar_spec@1483p_typar_specs@1485p_typar_specs@1485-1u_typar_spec_data@1489u_typar_spec@1500u_typar_specs@1502u_typar_specs@1502-1clo@1506-21clo@1520-22p_ArgReprInfo@1555p_ValReprInfo@1562p_ValReprInfo@1563-1p_ValReprInfo@1563-2b@1569u_ValReprInfo@1580u_ValReprInfo@1581-1u_ValReprInfo@1581-2p_ranges@1587-1p_ranges@1587p_cpath@1596-1p_cpath@1596p_cpath@1596-2u_ranges@1600u_cpath@1610u_cpath@1610-1p_tycon_repr@1619p_tycon_objmodel_data@1637p_access@1656p_recdfield_spec@1660p_rfield_table@1664p_entity_spec_data@1669p_entity_spec_data@1671-1p_entity_spec_data@1681-2p_entity_spec_data@1682-3p_tcaug@1688-1p_tcaug@1688p_tcaug@1688-2p_tcaug@1689-3p_tcaug@1690-5p_tcaug@1690-4p_tcaug@1690-6p_tcaug@1691-8p_tcaug@1691-7p_tcaug@1691-9p_tcaug@1692-11p_tcaug@1692-10p_tcaug@1692-12p_tcaug@1693-14p_tcaug@1693-13p_tcaug@1693-15p_tcaug@1694-16p_tcaug@1696-17p_tcaug@1708-18p_tcaug@1707-19p_tycon_spec@1714p_attrib@1727p_attrib@1727-1p_attrib@1727-2p_attrib@1727-3p_member_info@1736p_member_info@1736-1p_ValData@1773p_ValData@1773-1p_ValData@1777-2p_ValData@1777-3p_ValData@1779-4p_ValData@1779-5p_ValData@1783-6p_ValData@1784-7p_Val@1801p_modul_typ@1806p_modul_typ@1806-1p_modul_typ@1806-2p_modul_typ@1807-3p_modul_typ@1807-4p_modul_typ@1807-5u_tycon_repr@1817u_tycon_repr@1823-1v@1825u_tycon_repr@1826-2u_tycon_repr@1832-3u_tycon_repr@1850-4u_tycon_repr@1853-5u_access@1879u_rfield_table@1911u_entity_spec_data@1918u_entity_spec_data@1918-1u_entity_spec_data@1920-2u_entity_spec_data@1920-3u_entity_spec_data@1929-4u_entity_spec_data@1929-5u_entity_spec_data@1930-6u_entity_spec_data@1938-7u_tcaug@1963u_tcaug@1963-1u_tcaug@1965-2u_tcaug@1965-3u_tcaug@1966-4u_tcaug@1966-5u_tcaug@1967-6u_tcaug@1967-7u_tcaug@1968-8u_tcaug@1968-9u_tcaug@1979-10u_tycon_spec@1988u_attrib@2005u_attrib@2005-1u_attrib@2005-2u_attrib@2005-3u_member_info@2017u_member_info@2017-1u_ValData@2062u_ValData@2062-1u_ValData@2066-2u_ValData@2066-3u_ValData@2068-4u_ValData@2068-5u_Val@2092u_modul_typ@2099u_modul_typ@2099-1u_modul_typ@2099-2u_modul_typ@2100-3u_modul_typ@2100-4u_modul_typ@2100-5p_const@2128-1p_const@2110u_const@2151-1u_const@2132p_dtree@2158p_dtree@2158-1p_dtree@2158-2p_dtree@2158-3u_dtree@2189u_dtree@2189-1u_dtree@2189-2u_dtree@2189-3u_bind@2208p_op@2234p_op@2234-1p_op@2249-2u_op@2284u_op@2310-1p_expr@2322-6p_expr@2322-7p_expr@2322-8p_expr@2322-9p_expr@2328-10p_expr@2328-11p_expr@2316-5a0@2355b0@2356c@2388u_expr@2335p_slotparam@2415p_slotparam@2415-1p_slotsig@2416p_slotsig@2416-1p_slotsig@2416-2p_slotsig@2416-3p_method@2417p_methods@2418p_intfs@2420-1p_intfs@2420u_slotparam@2431u_slotparam@2431-1u_slotsig@2435u_slotsig@2435-1u_slotsig@2435-2u_methods@2442u_intf@2444u_intfs@2446clo@2449-23clo@2449-24clo@2450-25clo@2451-26clo@2451-27clo@2452-28clo@2454-29clo@2455-30clo@2455-31clo@2456-32clo@2456-33clo@2457-34clo@2457-35clo@2460-36clo@2460-37clo@2461-38clo@2462-39clo@2462-40clo@2463-41clo@2465-42clo@2466-43clo@2466-44clo@2467-45clo@2467-46clo@2468-47clo@2468-48pickleModuleOrNamespace@2475pickleModuleInfo@2477-1pickleModuleInfo@2477unpickleModuleOrNamespace@2480unpickleModuleInfo@2483TastopsTyparMap`1TyconRefMap`1OfList@61-1OfList@61ValMap`1OfList@75-3OfList@75-2RemapgeneralizeTypars@155remapMeasureAux@212remapMeasureAux@206-1remapMeasureAux@207-2remapTypesAux@213remapTyparConstraintsAux@215remapTraitAux@261bindTypars@267tps'@275tyenv@276copyAndRemapAndBindTyparsFull@277copyAndRemapAndBindTypars@284remapSlotSig@349remapSlotSig@349-1remapSlotSig@349-2instSlotSig@361copySlotSig@362tinst@365gather@430-1gather@440-3gather@451-5gather@463-7ProdMeasures@484normalizeMeasure@515-1normalizeMeasure@515normalizeMeasure@515-3normalizeMeasure@515-2mkCompiledTupleTyconRef@582stripTyEqnsA@632ErasureTypeEquivEnvBindTyparsToTypes@762BindEquivTypars@765FromEquivTypars@772traitsAEquivAux@775traitsAEquivAux@778-1typarConstraintsAEquivAux@810typarConstraintSetsAEquivAux@823aenv@827typarsAEquivAux@828typeAEquivAux@839trans@863-1remapTyconRef@864vars2@866measureAEquiv@870measureAEquiv@871-1measureAEquiv@872-2typesAEquivAux@875getErasedTypes@905valOrder@916tyconOrder@917recdFieldRefOrder@919unionCaseRefOrder@926mkIteratedFunTy@942mkLambdaTy@952MatchBuildermkLambdas@1063mkMultiLambdasCore@1066mkCompGenBinds@1093mkLetsBind@1097mkLetsFromBindings@1098mkInvisibleBinds@1106mkInvisibleFlatBindings@1110mkInvisibleLets@1112mkInvisibleLetsFromBindings@1113NormalizeDeclaredTyparsForEquiRecursiveInference@1127TypeSchemefreeChoiceTypars@1151isBeingGeneralized@1156ValHash`1get_Values@1228ValMultiMap`1TyconRefMultiMap`1actualTysOfRecdFields@1283actualTysOfUnionCaseFields@1287recdFieldTysOfExnDefRef@1295reduceIteratedFunTy@1333GetTopTauTypeInFSharpForm@1370TypeDefMetadataILTypeMetadata_FSharpOrArrayOrByrefOrTupleOrExnTypeMetadataExtensionTypeMetadataILTypeMetadata@DebugTypeProxy_FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata@DebugTypeProxyExtensionTypeMetadata@DebugTypeProxyisUnmanagedTy@1577actualReturnTyOfSlotSig@1596returnTyOfMethod@1603MemberIsExplicitImpl@1622typarOrder@1661FreeVarOptionsboundTypars@1794boundTypars@1793-1accFreeInTyparConstraints@1797accFreeInTrait@1816accFreeInTrait@1819-1accFreeInMeasure@1869-1accFreeInMeasure@1869accFreeInTypars@1881acc@1897boundTyparsLeftToRight@1901boundTyparsLeftToRight@1901-1accFreeInTyparConstraintsLeftToRight@1906accFreeInTraitLeftToRight@1927accFreeTyparRefLeftToRight@1931acc@1934-1accFreeTyparRefLeftToRight@1936-1accFreeInTypeLeftToRight@1948accFreeInTypeLeftToRight@1949-2accFreeInTypeLeftToRight@1949-1valsOfBinds@1961tinst@2120-1generalizedTyconRef@2123DisplayEnvSetOpenPaths@2358-1SetOpenPaths@2358Empty@2384fullNameOfParentOfValRef@2429fullDisplayTextOfModRef@2433fullDisplayTextOfTyconRef@2434fullDisplayTextOfExnRef@2435findOpenedNamespace@2467HasILAttribute@2495TryDecodeILAttribute@2498ILThingHasExtensionAttribute@2502HasFSharpAttribute@2507TryFindFSharpAttribute@2509|ExtractAttribNamedArg|_|@2512TryFindFSharpBoolAttribute@2520TryFindFSharpInt32Attribute@2526TryFindFSharpStringAttribute@2531TryFindILAttribute@2536SignatureRepackageInfoSignatureHidingInfomkRepackageRemapping@3412accEntityRemap@3441accEntityRemap@3451-1sigValOpt@3485acc@3508-2accEntityRemapFromModuleOrNamespaceType@3509acc@3513-3accValRemapFromModuleOrNamespaceType@3514abstractSlotValsOfTycons@3534abstractSlotValsOfTycons@3533-1acc@3539-4accEntityRemapFromModuleOrNamespace@3541accEntityRemapFromModuleOrNamespace@3540-1accEntityRemapFromModuleOrNamespaceDefs@3549acc@3558-5acc@3559-6acc@3559-7accValRemapFromModuleOrNamespace@3562accValRemapFromModuleOrNamespaceDefs@3571accTyconHidingInfoAtAssemblyBoundary@3594accTyconHidingInfoAtAssemblyBoundary@3602-1acc@3626-8acc@3627-9accModuleOrNamespaceHidingInfoAtAssemblyBoundary@3628IsHidden@3651IsHiddenTycon@3656IsHiddenTycon@3656-1IsHiddenTycon@3656-2IsHiddenTycon@3656-3IsHiddenTyconRepr@3657IsHiddenTyconRepr@3657-1IsHiddenTyconRepr@3657-2IsHiddenTyconRepr@3657-3IsHiddenVal@3658IsHiddenVal@3658-1IsHiddenVal@3658-2IsHiddenVal@3658-3IsHiddenRecdField@3659IsHiddenRecdField@3659-1IsHiddenRecdField@3659-2IsHiddenRecdField@3659-3acc@3668-10allValsOfModuleOrNamespaceTy@3674allValsOfModuleOrNamespaceTy@3674-1allEntitiesOfModuleOrNamespaceTy@3675allEntitiesOfModuleOrNamespaceTy@3675-1freeVarsAllPublic@3698freeVarsAllPublic@3699-1freeVarsAllPublic@3700-2freeVarsAllPublic@3701-3freeTyvarsAllPublic@3704boundLocalVals@3848accFreeInSwitchCases@3857accFreeInSwitchCases@3857-1accFreeInTest@3872-1accFreeInTest@3872accFreeInMethod@3935accFreeInMethods@3938accFreeInExpr@3945accFreeInExprLinear@3953accFreeInExprLinear@3952-1accFreeInExprNonLinear@3964accFreeInExprNonLinear@3965-1accFreeInExprNonLinear@3966-2accFreeInExprNonLinear@3975-4accFreeInExprNonLinear@3975-5accFreeInExprNonLinear@3975-3accFreeInExprNonLinear@3981-6accFreeInExprNonLinear@3985-8accFreeInExprNonLinear@3985-7accFreeInOp@4076accFreeInOp@4079-1accFreeInTargets@4092accFreeInTarget@4095accFreeInFlatExprs@4097accFreeInModuleOrNamespace@4115accFreeInModuleOrNamespace@4115-1accFreeInModuleOrNamespaces@4122curriedArgInfos@4197-1curriedArgInfos@4192-2curriedArgInfos@4193-3curriedArgInfos@4196-4curriedArgInfos@4188ValCopyFlagbindLocalVals@4307bindTycons@4313remapAttrib@4328remapAttrib@4329-1remapAttribs@4337remapPossibleForallTy@4339remapArgData@4342remapValReprInfo@4345remapValReprInfo@4345-1remapValData@4357remapValData@4358-1copyVal@4374vs2@4384copyAndRemapAndBindVals@4386e1ty'@4460remapExpr@4469remapExpr@4399-1remapExpr@4400-2remapExpr@4406-3remapExpr@4409-4remapExpr@4415-5remapExpr@4431-6remapExpr@4434-7remapExpr@4435-8remapLinearExpr@4498remapLinearExpr@4484-1remapLinearExpr@4484-2remapLinearExpr@4489-3remapExprs@4537remapDecisionTree@4544remapDecisionTree@4554-1remapDecisionTree@4557-2remapAndRenameBinds@4571slotsig2@4576remapMethod@4577remapMethod@4578-1remapInterfaceImpl@4583remapRecdFields@4590remapUnionCases@4597remapFsObjData@4603remapFsObjData@4605-1remapTyconRepr@4620ctxt@4625-27ctxt@4625-28ctxt@4625-29remapTyconRepr@4624-1remapTyconAug@4634remapTyconAug@4638-1remapTyconAug@4638-2remapTyconAug@4639-3remapTyconAug@4640-4remapTyconAug@4641-5remapTyconAug@4635-6remapTyconAug@4636-7remapTyconAug@4637-8remapMemberInfo@4659remapMemberInfo@4659-1remapModTy@4669remapModTy@4669-1tycons'@4693lookupVal@4711lookupTycon@4725copyAndRemapAndBindTyconsAndVals@4741-1copyAndRemapAndBindTyconsAndVals@4742-2copyAndRemapAndBindTyconsAndVals@4743-3copyAndRemapAndBindTyconsAndVals@4745-4copyAndRemapAndBindTyconsAndVals@4738allTyconsOfTycon@4755allTyconsOfModDef@4760allValsOfModDef@4776remapModExpr@4798remapModExpr@4798-1remapAndRenameModDef@4814remapAndRenameModDef@4815-1remapAndRenameModDef@4815-2remapAndRenameModDef@4816-3remapAndRenameModDef@4826-4copyImplFile@4846remarkExpr@4867remarkExpr@4868-1remarkInterfaceImpl@4890remarkExprs@4892remarkDecisionTree@4898remarkDecisionTree@4898-1remarkDecisionTree@4899-2remarkBinds@4902ucaseAllocObservable@4914isUnionCaseAllocObservable@4915isRecdOrUnionOrStructTyconAllocObservable@4919isRecdOrUnionOrStructTyconAllocObservable@4921-1isExnFieldMutable@4943-1isExnFieldMutable@4943mkMethodTy@4969mkMethodTy@4969-1accTargetsOfDecisionTree@5095-1accTargetsOfDecisionTree@5095accTargetsOfDecisionTree@5095-2mapAccTipsOfDecisionTree@5101mapAccTipsOfDecisionTree@5101-1mapTargetsOfDecisionTree@5107used@5111eliminateDeadTargetsFromMatch@5117eliminateDeadTargetsFromMatch@5118-1decisionTreeHasNonTrivialBindings@5138decisionTreeHasNonTrivialBindings@5139-1isLinearTarget@5170-1isLinearTarget@5170-1TrebuildDecisionTree@5182-1rebuildDecisionTreeEdge@5194es@5206foldLinearBindingTargetsOfMatch@5207-1foldLinearBindingTargetsOfMatch@5200MutatesDefensiveCopyWarningmkExprAddrOfExpr@5294mkExprAddrOfExpr@5334-1mkExprAddrOfExpr@5347-2mkExprAddrOfExpr@5368-3mkExprAddrOfExpr@5311-4mkExprAddrOfExpr@5322-5mkExprAddrOfExpr@5298-6mkExprAddrOfExpr@5302-7IterateRecursiveFixups@5406-1IterateRecursiveFixups@5404-2IterateRecursiveFixups@5403IterateRecursiveFixups@5415-4IterateRecursiveFixups@5413-5IterateRecursiveFixups@5412-3IterateRecursiveFixups@5426-7IterateRecursiveFixups@5422-6IterateRecursiveFixups@5422-8ExprFolder`1ExprFolder0@5470ExprFolder0@5471-1ExprFolder0@5472-2ExprFolder0@5473-3ExprFolder0@5474-4ExprFolder0@5475-5ExprFolder0@5476-6exprF@5496-2exprF@5530-3exprF@5530-4bindF@5542-1exprF@5496-5dtreeF@5546-1mdefF@5580-1exprF@5496-1dcaseF@5559targetF@5563tmethodF@5570mbindF@5592implF@5594implsF@5596mkTupledNoTypes@5668mkTupledVars@5670liftPosition@5717-1rewrite@5720rfrefsArray@5751mkRecordExpr@5752mkRecordExpr@5754-1argTyps@5758names@5759-1mkRecordExpr@5761-2mkCallUnpickleQuotation@5889mkCompilationMappingAttrPrim@5971mkCompilationMappingAttrPrim@5972-1mkCompilationArgumentCountsAttr@5980untupling_es@6082untupledToTupled@6083AdjustArityOfLambdaBody@6101MakeApplicationAndBetaReduceAux@6169MakeApplicationAndBetaReduceAux@6170-1MakeArgsForTopArgs@6187-1MakeArgsForTopArgs@6186tps'@6198-1tyargs'@6199call@6203AdjustValForExpectedArity@6206stripTupledFunTy@6226argTys@6286curriedNiceNames@6306-1curriedNiceNames@6305appm@6323CoerceDetupled@6341-1CoerceDetupled@6341-2CoerceDetupled@6342-3CoerceBoundTuple@6351-1CoerceTupled@6380-1CoerceTupled@6389-2CoerceTupled@6407-3CoerceTupled@6417-4AdjustPossibleSubsumptionExpr@6438-2AdjustPossibleSubsumptionExpr@6429-1AdjustPossibleSubsumptionExpr@6429suppliedArgs@6461niceNames@6484exprForAllArgs@6492-2lambdaBuilder@6494binderBuilder@6495-1lambdaBuilder@6489-2exprForAllArgs@6472-1exprForAllArgs@6472exprForAllArgs@6517-3exprForAllArgs@6518-4etaExpandTypeLambda@6560isThrowingTarget@6585-1LinearizeTopMatchAux@6588fvs@6590vtys@6591newTg@6597binds@6606LinearizeTopMatchAux@6614-1typarEnc@6637typarEnc@6640-1typeEnc@6679tyargsEnc@6694XmlDocArgsEnc@6698buildAccessPath@6703argTs@6742CanHaveUseNullAsTrueValueAttribute@6789CanHaveUseNullAsTrueValueAttribute@6790-1IsUnionTypeWithNullAsTrueValue@6798IsUnionTypeWithNullAsTrueValue@6799-1flds@6839TypeHasDefaultValue@6841TypeHasDefaultValue@6841-1CompileAsEvent@6929ExprRewritingEnvRewriteExpr@7084preRewriteExpr@7094rewriteExprStructure@7118rewriteExprStructure@7119-1rewriteExprStructure@7142-2rewriteLinearExpr@7178rewriteLinearExpr@7167-1rewriteLinearExpr@7171-2rewriteExprs@7184es'@7190rewriteDecisionTree@7196rewriteDecisionTree@7197-1rewriteTargets@7207rewriteObjExprInterfaceImpl@7213rewriteModuleOrNamespaceDef@7224rewriteModuleOrNamespaceDef@7227-1rewriteModuleOrNamespaceBindings@7232RewriteImplFile@7234accEntityRemap@7246-2accValRemap@7260remapEntityDataToNonLocal@7288remapEntityDataToNonLocal@7294-1remapEntityDataToNonLocal@7299-2remapEntityDataToNonLocal@7300-3remapEntityDataToNonLocal@7291-4remapTyconToNonLocal@7304remapValToNonLocal@7307ApplyExportRemappingToEntity@7309IsGenericValWithGenericContraints@7326-1IsGenericValWithGenericContraints@7326Entity-HasInterface@7331Entity-HasOverride@7344-1Entity-HasOverride@7344-2Entity-HasOverride@7338checkExpr@7359-1checkDecisionTree@7404-1checkDecisionTreeCase@7410-1checkDecisionTreeTarget@7412-2checkDecisionTreeTarget@7412-1EvalAttribArg@7509DebugPrintjlistL@2716tinstL@2759auxTypeWrapL@2775auxTyparConstraintL@2874auxTyparConstraintsL@2881env@2888-1env@2895-2typarDeclL@2901env@2902-3layoutTyparDecls@2906arityInfoL@2933valL@2943MemberL@2975str@3009str@3014-1lhsL@3028adhoc@3035adhoc@3033-1adhoc@3032-2iimpls@3040iimplsLs@3045adhocLs@3046ucaseL@3053-2ucaseL@3055-3ucaseL@3052-1tyconReprL@3069-1inherits@3088inherits@3087-1vsprs@3093vsprs@3092-1vals@3094eqnsL@3133eqnsL@3134-1wrap@3142-2formalsL@3174lay@3181lay@3183-1lay@3194-2lay@3268-3lay@3196-4lay@3198-5lay@3200-6lay@3203-7instrs@3236-161instrs@3236-162lay@3239-8lay@3241-9lay@3245-10lay@3246-11lay@3247-12lay@3248-13lay@3250-14lay@3273-15lay@3274-16lay@3275-17assemblyL@3287z@3291appL@3292mdefsL@3301mdefL@3304mdefL@3304-1entityTypeL@3313entityTypeL@3314-1decisionTreeL@3327decisionTreeL@3329-1dtestL@3338flatValsL@3346tmethodL@3350tmethodL@3351-1tmethodL@3351-2tmethodL@3351-3iimplL@3354SimplifyTypesfoldTypeButNotConstraints@2269foldTypeButNotConstraints@2270-1foldTypeButNotConstraints@2271-2accTyparCounts@2282TypeSimplificationInfosingletons@2300constraintTypars@2305singletons@2307-1categorizeConstraints@2310inplace@2315CollectInfo@2322PrettyTypesniceTypars@2152NewPrettyTypars@2155choose@2197-1choose@2207-3choose@2201-2ftps@2216computeKeep@2222-1alreadyInUse@2230names@2231getTauStayTau@2237PrettifyTypes@2242PrettifyTypes@2244-2PrettifyTypes@2244-1PrettifyTypes1@2250PrettifyTypes1@2250-1PrettifyTypes2@2251PrettifyTypes2@2251-1PrettifyTypesN@2252PrettifyTypesN@2252-1PrettifyTypesN1@2253-1PrettifyTypesN1@2253-2PrettifyTypesN1@2253-3PrettifyTypesN1@2253PrettifyTypesN1@2253-5PrettifyTypesN1@2253-6PrettifyTypesN1@2253-7PrettifyTypesN1@2253-4PrettifyTypesNM1@2255-1PrettifyTypesNM1@2255-2PrettifyTypesNM1@2255-3PrettifyTypesNM1@2255-4PrettifyTypesNM1@2255-5PrettifyTypesNM1@2255PrettifyTypesNM1@2255-7PrettifyTypesNM1@2255-8PrettifyTypesNM1@2255-9PrettifyTypesNM1@2255-6IntrinsicValRefBuiltinAttribInfoTcGlobalsmkSysTyconRef@595op_MinusMinusGreater@650mkSmallTupledTy@652knownIntrinsics@655argCount@660valRefEq@758unionCaseRefEq@759knownFSharpCoreModules@769decodeTupleTy@797-1memoize_file@816memoize_file@816-1mkTcGlobals@1054entries1@1229-1entries1@1227entries2@1231dict@1248-2dict@1248-1dict@1249-3dict@1249-4mkTcGlobals@1250-1dict@1260-5dict@1261-6dict@1261-7mkTcGlobals@1262-2FSharpLibTastnewUnique@48newStamp@53ValInlineValRecursiveScopeInfoValInRecScope_ValNotInRecScopeValInRecScope@DebugTypeProxy_ValNotInRecScope@DebugTypeProxyValMutabilityTyparDynamicReqValBaseOrThisInfoValFlagsTyparKindTyparRigidityTyparFlagsEntityFlagsUndefinedNameInternalUndefinedItemRefModuleOrNamespaceKindCompilationPathPublicPathmangledTextOfCompPath@441mangledPathOfCompPath@443publicPathOfCompPath@444attrs@452-1attrs@452EntityEntityDataParentRefParent_ParentNoneParent@DebugTypeProxy_ParentNone@DebugTypeProxyTyconAugmentationTyconRepresentationTFsObjModelReprTRecdReprTFiniteUnionReprTILObjModelReprTAsmReprTMeasureableReprTProvidedTypeExtensionPointTProvidedNamespaceExtensionPointTFsObjModelRepr@DebugTypeProxyTRecdRepr@DebugTypeProxyTFiniteUnionRepr@DebugTypeProxyTILObjModelRepr@DebugTypeProxyTAsmRepr@DebugTypeProxyTMeasureableRepr@DebugTypeProxyTProvidedTypeExtensionPoint@DebugTypeProxyTProvidedNamespaceExtensionPoint@DebugTypeProxyTProvidedTypeInfoTyconObjModelKindTTyconDelegateTTyconDelegate@DebugTypeProxyTyconObjModelDataTyconRecdFieldsTyconUnionCasesTyconUnionDataExceptionInfoTExnAbbrevReprTExnAsmReprTExnFreshTExnAbbrevRepr@DebugTypeProxyTExnAsmRepr@DebugTypeProxyTExnFresh@DebugTypeProxyModuleOrNamespaceTypeConstructAccessibilityTyparDataTyparTyparConstraintCoercesToDefaultsToSupportsNullMayResolveMemberIsNonNullableStructIsReferenceTypeSimpleChoiceRequiresDefaultConstructorIsEnumSupportsComparisonSupportsEqualityIsDelegateIsUnmanagedCoercesTo@DebugTypeProxyDefaultsTo@DebugTypeProxySupportsNull@DebugTypeProxyMayResolveMember@DebugTypeProxyIsNonNullableStruct@DebugTypeProxyIsReferenceType@DebugTypeProxySimpleChoice@DebugTypeProxyRequiresDefaultConstructor@DebugTypeProxyIsEnum@DebugTypeProxySupportsComparison@DebugTypeProxySupportsEquality@DebugTypeProxyIsDelegate@DebugTypeProxyIsUnmanaged@DebugTypeProxyTraitConstraintInfoTraitConstraintSlnFSMethSlnFSRecdFieldSlnILMethSlnClosedExprSlnFSMethSln@DebugTypeProxyFSRecdFieldSln@DebugTypeProxyILMethSln@DebugTypeProxyClosedExprSln@DebugTypeProxyValLinkagePartialKeyValLinkageFullKeyValValDataValMemberInfoNonLocalValOrMemberRefValPublicPathNonLocalEntityRefEntityRefValRefUnionCaseRefRecdFieldRefTTypeTType_forallTType_appTType_tupleTType_funTType_ucaseTType_varTType_measureTType_forall@DebugTypeProxyTType_app@DebugTypeProxyTType_tuple@DebugTypeProxyTType_fun@DebugTypeProxyTType_ucase@DebugTypeProxyTType_var@DebugTypeProxyTType_measure@DebugTypeProxyMeasureExprMeasureVarMeasureConMeasureProdMeasureInvMeasureVar@DebugTypeProxyMeasureCon@DebugTypeProxyMeasureProd@DebugTypeProxyMeasureInv@DebugTypeProxyCcuDataCcuThunkCcuResolutionResultResolvedCcuUnresolvedCcuResolvedCcu@DebugTypeProxyUnresolvedCcu@DebugTypeProxyPickledModuleInfoAttribKindILAttribFSAttribILAttrib@DebugTypeProxyFSAttrib@DebugTypeProxyAttribAttribExprAttribNamedArgConstBoolSByteByteInt16UInt16Int32UInt32Int64UInt64IntPtrUIntPtrSingleDoubleCharDecimalBool@DebugTypeProxySByte@DebugTypeProxyByte@DebugTypeProxyInt16@DebugTypeProxyUInt16@DebugTypeProxyInt32@DebugTypeProxyUInt32@DebugTypeProxyInt64@DebugTypeProxyUInt64@DebugTypeProxyIntPtr@DebugTypeProxyUIntPtr@DebugTypeProxySingle@DebugTypeProxyDouble@DebugTypeProxyChar@DebugTypeProxyString@DebugTypeProxyDecimal@DebugTypeProxyDecisionTreeTDSwitchTDSuccessTDBindTDSwitch@DebugTypeProxyTDSuccess@DebugTypeProxyTDBind@DebugTypeProxyDecisionTreeCaseTestArrayLengthIsInstArrayLength@DebugTypeProxyConst@DebugTypeProxyIsInst@DebugTypeProxyDecisionTreeTargetActivePatternElemRefValReprInfoArgReprInfoTyparReprInfoSequentialLambdaTyLambdaAppLetRecLetObjMatchStaticOptimizationOpQuoteTyChooseLinkVal@DebugTypeProxySequential@DebugTypeProxyLambda@DebugTypeProxyTyLambda@DebugTypeProxyApp@DebugTypeProxyLetRec@DebugTypeProxyLet@DebugTypeProxyObj@DebugTypeProxyMatch@DebugTypeProxyStaticOptimization@DebugTypeProxyOp@DebugTypeProxyQuote@DebugTypeProxyTyChoose@DebugTypeProxyLink@DebugTypeProxyTOpExnConstrBytesUInt16sWhileForTryCatchTryFinallyRecdValFieldSetValFieldGetValFieldGetAddrUnionCaseTagGetUnionCaseProofUnionCaseFieldGetUnionCaseFieldSetExnFieldGetExnFieldSetTupleFieldGetILAsmGotoLabelTraitCallLValueOpILCallExnConstr@DebugTypeProxyBytes@DebugTypeProxyUInt16s@DebugTypeProxyWhile@DebugTypeProxyFor@DebugTypeProxyTryCatch@DebugTypeProxyTryFinally@DebugTypeProxyRecd@DebugTypeProxyValFieldSet@DebugTypeProxyValFieldGet@DebugTypeProxyValFieldGetAddr@DebugTypeProxyUnionCaseTagGet@DebugTypeProxyUnionCaseProof@DebugTypeProxyUnionCaseFieldGet@DebugTypeProxyUnionCaseFieldSet@DebugTypeProxyExnFieldGet@DebugTypeProxyExnFieldSet@DebugTypeProxyTupleFieldGet@DebugTypeProxyILAsm@DebugTypeProxyGoto@DebugTypeProxyLabel@DebugTypeProxyTraitCall@DebugTypeProxyLValueOp@DebugTypeProxyILCall@DebugTypeProxyRecordConstructionInfoSpecialWhileLoopMarkerForLoopStyleLValueOperationSequentialOpKindValUseFlagPossibleConstrainedCallPossibleConstrainedCall@DebugTypeProxyTTyconEqualsTyconTTyconIsStructTTyconEqualsTycon@DebugTypeProxyTTyconIsStruct@DebugTypeProxyObjExprMethodSlotSigSlotParamModuleOrNamespaceExprWithSigModuleOrNamespaceExprTMAbstractTMDefsTMDefLetTMDefDoTMDefRecTMAbstract@DebugTypeProxyTMDefs@DebugTypeProxyTMDefLet@DebugTypeProxyTMDefDo@DebugTypeProxyTMDefRec@DebugTypeProxyModuleOrNamespaceBindingTypedImplFileTypedAssemblyFreeTyvarsFreeVarsCompiledTypeReprILAsmNamedILAsmOpenILAsmNamed@DebugTypeProxyILAsmOpen@DebugTypeProxyget_XmlDoc@533-1get_XmlDoc@533get_AllInstanceFieldsAsList@680get_TrueFieldsAsList@684get_TrueInstanceFieldsAsList@688get_ImmediateInterfaceTypesOfFSharpTycon@830get_MembersOfFSharpTyconSorted@837get_AllGeneratedValues@854top@895-1get_TrueFieldsAsList@1220-1get_TrueInstanceFieldsAsList@1221-1get_TypeDefinitions@1409get_ExceptionDefinitions@1412get_ModuleAndNamespaceDefinitions@1415get_TypeAndExceptionDefinitions@1418TypesByDemangledNameAndArity@1425get_TypesByAccessNames@1431addTyconByMangledName@1435addEntityByMangledName@1442get_AllEntitiesByLogicalMangledName@1453addValByMangledName@1460TryLinkVal@1471addValByName@1480get_AllValsAndMembersByLogicalNameUncached@1490add@1498-3add@1505-4isErased@1525baseSystemTy@1530lazyBaseTy@1529lazyBaseTy@1534-1NewProvidedTyconRepr@1540-1NewProvidedTyconRepr@1540NewProvidedTyconRepr@1541-3NewProvidedTyconRepr@1541-2NewProvidedTyconRepr@1548-4NewProvidedTyconRepr@1549-5NewProvidedTyconRepr@1550-6NewProvidedTyconRepr@1551-7NewProvidedTyconRepr@1552-8name@1558-3findAttrib@1563-3CustomAttributeDatakind@1562kind@1571-1cpath@1583NewProvidedTycon@1597NewProvidedTycon@1603-1NewModuleOrNamespace@1630NewModuleOrNamespace@1624-1tryResolveNestedTypeOf@2359-1newEntity@2362matched@2391newEntity@2405-1get_Deref@2487get_TryModuleOrNamespaceType@2492get_Deref@2528-1res@2770-3resOpt@2780ToString@2904-14ToString@2905-15ToString@2907-16get_AritiesOfArgs@3265get_KindsOfTypars@3266typesOfVals@3717InternalUndefinedTyconItemget_UnionCase@3766get_Index@3773get_Index@3775-2get_Index@3775-1get_RecdField@3785get_Index@3793-3get_Index@3795-5get_Index@3795-4get_UnionCasesAsRefList@3829get_TrueInstanceFieldsAsRefList@3830get_AllFieldAsRefList@3831copyTypars@3876stringOfAccess@4101demangledPathOfCompPath@4104canAccessFromOneOf@4121canAccessFrom@4124isLessAccessible@4129-1isLessAccessible@4129subst@4133MakeUnionCasesTable@4150MakeRecdFieldsTable@4154NewExn@4203NewExn@4208-1NewTycon@4249DuplicateNameClashFullAbstractionNewModifiedModuleOrNamespace@4319NewClonedModuleOrNamespace@4333NewClonedTycon@4334combineMaps@4340combineMaps@4341-1combineMultiMaps@4344-1combineMultiMaps@4344combineMultiMaps@4345-3combineMultiMaps@4345-2entities@4357combineEntityList@4371combineEntites@4382-1combineEntites@4378combineModuleOrNamespaceTypeList@4390ValReprInfoModuleInferTyparInfo@3707InferArgReprInfos@3709InferArgReprInfos@3709-1QueueListModule$QueueListQuotationPicklermkRLinear@31TypeVarDataNamedTypeDataTypeCombOpArrayTyOp_FunTyOpNamedTyOpArrayTyOp@DebugTypeProxy_FunTyOp@DebugTypeProxyNamedTyOp@DebugTypeProxyTypeDataVarTypeAppTypeVarType@DebugTypeProxyAppType@DebugTypeProxyCtorDataMethodDataVarDataCombOpModuleValueOpRecdMkOpRecdGetOpRecdSetOpSumMkOpSumFieldGetOpSumTagTestOpTupleGetOpBoolOpStringOpSingleOpDoubleOpCharOpSByteOpByteOpInt16OpUInt16OpInt32OpUInt32OpInt64OpUInt64OpPropGetOpFieldGetOpCtorCallOpMethodCallOpPropSetOpFieldSetOpModuleValueOp@DebugTypeProxyRecdMkOp@DebugTypeProxyRecdGetOp@DebugTypeProxyRecdSetOp@DebugTypeProxySumMkOp@DebugTypeProxySumFieldGetOp@DebugTypeProxySumTagTestOp@DebugTypeProxyTupleGetOp@DebugTypeProxyBoolOp@DebugTypeProxyStringOp@DebugTypeProxySingleOp@DebugTypeProxyDoubleOp@DebugTypeProxyCharOp@DebugTypeProxySByteOp@DebugTypeProxyByteOp@DebugTypeProxyInt16Op@DebugTypeProxyUInt16Op@DebugTypeProxyInt32Op@DebugTypeProxyUInt32Op@DebugTypeProxyInt64Op@DebugTypeProxyUInt64Op@DebugTypeProxyPropGetOp@DebugTypeProxyFieldGetOp@DebugTypeProxyCtorCallOp@DebugTypeProxyMethodCallOp@DebugTypeProxyPropSetOp@DebugTypeProxyFieldSetOp@DebugTypeProxyExprDataAttrExprCombExprVarExprQuoteExprLambdaExprHoleExprThisVarExprAttrExpr@DebugTypeProxyCombExpr@DebugTypeProxyVarExpr@DebugTypeProxyQuoteExpr@DebugTypeProxyLambdaExpr@DebugTypeProxyHoleExpr@DebugTypeProxyThisVarExpr@DebugTypeProxymkLetRec@148p_types@335p_MethodData@344p_CtorData@347p_PropInfoData@350p_expr@405p_expr@405-1p_expr@405-2p_expr@410-3p_expr@410-4ModuleDefnDataMethodBaseDataModuleDefnCtorModuleDefn@DebugTypeProxyCtor@DebugTypeProxypickle@423pickle@423-1PickleDefns@439-1PickleDefns@439PickleDefns@439-2PickleDefns@439-3SimplePickleCreate@212-12QuotationPickleOutStatepickle_obj@312pickle_obj@312-1Lexerfin@127-1_fslex_token@608_fslex_token@609-1_fslex_mlOnly@1045LexhelpLightSyntaxStatusLexResourceManagerlexargsusingLexbufForParsing@94ReservedKeywordIndentationProblemKeywordscompatibilityModekeywordList@275unreserveWords@290keywordNames@297QuoteIdentifierIfNeeded@345parse_error_rich@80BindingSetunionRangeWithListBy@152rangeOfNonNilAttrs@155rangeOfLongIdent@159tokenHASH_IFHASH_ELSEHASH_ENDIFCOMMENTWHITESPACEHASH_LINEHASH_LIGHTINACTIVECODELINE_COMMENTSTRING_TEXTEOFLEX_FAILUREODUMMYOBINDEROLETLQUOTERQUOTERQUOTE_DOTPERCENT_OPBINDERLESSGREATERLETYIELDYIELD_BANGBIGNUMDECIMALCHARIEEE64IEEE32NATIVEINTUNATIVEINTUINT64UINT32UINT16UINT8INT64INT32INT32_DOT_DOTINT16INT8FUNKY_OPERATOR_NAMEADJACENT_PREFIX_OPPLUS_MINUS_OPINFIX_AMP_OPINFIX_STAR_DIV_MOD_OPPREFIX_OPINFIX_BAR_OPINFIX_AT_HAT_OPINFIX_COMPARE_OPINFIX_STAR_STAR_OPIDENTKEYWORD_STRINGSTRINGBYTEARRAYHASH_IF@DebugTypeProxyHASH_ELSE@DebugTypeProxyHASH_ENDIF@DebugTypeProxyCOMMENT@DebugTypeProxyWHITESPACE@DebugTypeProxyHASH_LINE@DebugTypeProxyHASH_LIGHT@DebugTypeProxyINACTIVECODE@DebugTypeProxyLINE_COMMENT@DebugTypeProxySTRING_TEXT@DebugTypeProxyEOF@DebugTypeProxyLEX_FAILURE@DebugTypeProxyODUMMY@DebugTypeProxyOBINDER@DebugTypeProxyOLET@DebugTypeProxyLQUOTE@DebugTypeProxyRQUOTE@DebugTypeProxyRQUOTE_DOT@DebugTypeProxyPERCENT_OP@DebugTypeProxyBINDER@DebugTypeProxyLESS@DebugTypeProxyGREATER@DebugTypeProxyLET@DebugTypeProxyYIELD@DebugTypeProxyYIELD_BANG@DebugTypeProxyBIGNUM@DebugTypeProxyDECIMAL@DebugTypeProxyCHAR@DebugTypeProxyIEEE64@DebugTypeProxyIEEE32@DebugTypeProxyNATIVEINT@DebugTypeProxyUNATIVEINT@DebugTypeProxyUINT64@DebugTypeProxyUINT32@DebugTypeProxyUINT16@DebugTypeProxyUINT8@DebugTypeProxyINT64@DebugTypeProxyINT32@DebugTypeProxyINT32_DOT_DOT@DebugTypeProxyINT16@DebugTypeProxyINT8@DebugTypeProxyFUNKY_OPERATOR_NAME@DebugTypeProxyADJACENT_PREFIX_OP@DebugTypeProxyPLUS_MINUS_OP@DebugTypeProxyINFIX_AMP_OP@DebugTypeProxyINFIX_STAR_DIV_MOD_OP@DebugTypeProxyPREFIX_OP@DebugTypeProxyINFIX_BAR_OP@DebugTypeProxyINFIX_AT_HAT_OP@DebugTypeProxyINFIX_COMPARE_OP@DebugTypeProxyINFIX_STAR_STAR_OP@DebugTypeProxyIDENT@DebugTypeProxyKEYWORD_STRING@DebugTypeProxySTRING@DebugTypeProxyBYTEARRAY@DebugTypeProxytokenIdnonTerminalId_fsyacc_reductions@2706-112_fsyacc_reductions@2715-113_fsyacc_reductions@2724-114_fsyacc_reductions@2733-115_fsyacc_reductions@2744-116_fsyacc_reductions@2755-117_fsyacc_reductions@2765-118_fsyacc_reductions@2777-119_fsyacc_reductions@2788-120_fsyacc_reductions@2799-121_fsyacc_reductions@2810-122_fsyacc_reductions@2820-123_fsyacc_reductions@2832-124_fsyacc_reductions@2842-125_fsyacc_reductions@2853-126_fsyacc_reductions@2864-127_fsyacc_reductions@2876-128_fsyacc_reductions@2888-129_fsyacc_reductions@2900-130_fsyacc_reductions@2913-131_fsyacc_reductions@2926-132_fsyacc_reductions@2939-133_fsyacc_reductions@2950-134_fsyacc_reductions@2962-135_fsyacc_reductions@2977-136_fsyacc_reductions@2988-137_fsyacc_reductions@3000-138_fsyacc_reductions@3012-139_fsyacc_reductions@3024-140_fsyacc_reductions@3036-141_fsyacc_reductions@3048-142_fsyacc_reductions@3060-143_fsyacc_reductions@3073-144_fsyacc_reductions@3084-145_fsyacc_reductions@600-147_fsyacc_reductions@3095-146_fsyacc_reductions@3120-148_fsyacc_reductions@3132-149_fsyacc_reductions@3143-150_fsyacc_reductions@3156-151_fsyacc_reductions@627-153_fsyacc_reductions@3167-152_fsyacc_reductions@3192-154_fsyacc_reductions@3204-155_fsyacc_reductions@3215-156_fsyacc_reductions@648-158_fsyacc_reductions@3228-157_fsyacc_reductions@655-160_fsyacc_reductions@3249-159m@664_fsyacc_reductions@665-162_fsyacc_reductions@3264-161_fsyacc_reductions@672-164_fsyacc_reductions@3285-163_fsyacc_reductions@3300-165_fsyacc_reductions@3311-166_fsyacc_reductions@3324-167_fsyacc_reductions@3339-168_fsyacc_reductions@3352-169_fsyacc_reductions@3363-170_fsyacc_reductions@3373-171_fsyacc_reductions@3383-172_fsyacc_reductions@3396-173_fsyacc_reductions@3408-174_fsyacc_reductions@3420-175_fsyacc_reductions@3433-176_fsyacc_reductions@3448-177_fsyacc_reductions@3461-178_fsyacc_reductions@3472-179_fsyacc_reductions@3483-180_fsyacc_reductions@3493-181_fsyacc_reductions@3510-182_fsyacc_reductions@3526-183_fsyacc_reductions@3541-184_fsyacc_reductions@3552-185_fsyacc_reductions@3563-186_fsyacc_reductions@3575-187_fsyacc_reductions@3588-188_fsyacc_reductions@3599-189_fsyacc_reductions@3611-190_fsyacc_reductions@3623-191_fsyacc_reductions@3634-192_fsyacc_reductions@3645-193_fsyacc_reductions@3661-194_fsyacc_reductions@3677-195_fsyacc_reductions@795-197_fsyacc_reductions@3692-196f@800-30_fsyacc_reductions@3711-198_fsyacc_reductions@818-200_fsyacc_reductions@814-201_fsyacc_reductions@3728-199_fsyacc_reductions@3754-202_fsyacc_reductions@3767-203_fsyacc_reductions@3778-204_fsyacc_reductions@3790-205_fsyacc_reductions@3801-206_fsyacc_reductions@3815-207_fsyacc_reductions@3829-208_fsyacc_reductions@3866-209_fsyacc_reductions@3881-210_fsyacc_reductions@3894-211_fsyacc_reductions@3907-212_fsyacc_reductions@3920-213_fsyacc_reductions@3932-214_fsyacc_reductions@3946-215_fsyacc_reductions@3957-216_fsyacc_reductions@3967-217_fsyacc_reductions@3979-218_fsyacc_reductions@3990-219_fsyacc_reductions@4001-220_fsyacc_reductions@4021-221_fsyacc_reductions@4040-222_fsyacc_reductions@4059-223_fsyacc_reductions@4075-224_fsyacc_reductions@4086-225_fsyacc_reductions@4112-226_fsyacc_reductions@4122-227_fsyacc_reductions@4133-228_fsyacc_reductions@4145-229_fsyacc_reductions@4157-230_fsyacc_reductions@4170-231_fsyacc_reductions@4182-232_fsyacc_reductions@4193-233_fsyacc_reductions@4203-234_fsyacc_reductions@4214-235_fsyacc_reductions@4226-236_fsyacc_reductions@4239-237_fsyacc_reductions@4250-238_fsyacc_reductions@4264-239_fsyacc_reductions@4276-240_fsyacc_reductions@4287-241_fsyacc_reductions@4300-242_fsyacc_reductions@4314-243_fsyacc_reductions@4329-244_fsyacc_reductions@4345-245_fsyacc_reductions@4356-246_fsyacc_reductions@4367-247_fsyacc_reductions@4378-248_fsyacc_reductions@4390-249_fsyacc_reductions@4402-250_fsyacc_reductions@4414-251_fsyacc_reductions@4425-252_fsyacc_reductions@4438-253_fsyacc_reductions@1040-255_fsyacc_reductions@4450-254_fsyacc_reductions@1044-257_fsyacc_reductions@4468-256_fsyacc_reductions@1050-259_fsyacc_reductions@4482-258_fsyacc_reductions@1055-261_fsyacc_reductions@4495-260_fsyacc_reductions@1063-263_fsyacc_reductions@4511-262_fsyacc_reductions@4527-264_fsyacc_reductions@4539-265_fsyacc_reductions@4551-266_fsyacc_reductions@4565-267_fsyacc_reductions@4577-268_fsyacc_reductions@4589-269_fsyacc_reductions@4602-270_fsyacc_reductions@4613-271_fsyacc_reductions@4625-272_fsyacc_reductions@4637-273_fsyacc_reductions@4650-274_fsyacc_reductions@4661-275_fsyacc_reductions@4672-276_fsyacc_reductions@4682-277_fsyacc_reductions@1124-279_fsyacc_reductions@4695-278_fsyacc_reductions@1125-281_fsyacc_reductions@4705-280_fsyacc_reductions@1126-283_fsyacc_reductions@4715-282_fsyacc_reductions@1127-285_fsyacc_reductions@4725-284_fsyacc_reductions@4735-286_fsyacc_reductions@1131-288_fsyacc_reductions@4746-287_fsyacc_reductions@1132-290_fsyacc_reductions@4756-289_fsyacc_reductions@4766-291_fsyacc_reductions@4776-292_fsyacc_reductions@4787-293_fsyacc_reductions@4798-294_fsyacc_reductions@4810-295_fsyacc_reductions@4824-296_fsyacc_reductions@4840-297_fsyacc_reductions@4871-298_fsyacc_reductions@4886-299_fsyacc_reductions@4900-300_fsyacc_reductions@4915-301_fsyacc_reductions@4929-302_fsyacc_reductions@4944-303_fsyacc_reductions@4961-304_fsyacc_reductions@4976-305_fsyacc_reductions@4988-306_fsyacc_reductions@4998-307_fsyacc_reductions@1216-309_fsyacc_reductions@5009-308m@1219-1_fsyacc_reductions@5025-310_fsyacc_reductions@5038-311_fsyacc_reductions@1246-313_fsyacc_reductions@5065-312_fsyacc_reductions@1250-315_fsyacc_reductions@5082-314_fsyacc_reductions@1253-317_fsyacc_reductions@5099-316_fsyacc_reductions@1258-319_fsyacc_reductions@5112-318_fsyacc_reductions@1264-321_fsyacc_reductions@5124-320_fsyacc_reductions@1271-323_fsyacc_reductions@5142-322_fsyacc_reductions@5159-324m@1282-2_fsyacc_reductions@5171-325m@1286-3_fsyacc_reductions@5184-326_fsyacc_reductions@5199-327_fsyacc_reductions@1297-329_fsyacc_reductions@5211-328_fsyacc_reductions@1303-331_fsyacc_reductions@5228-330_fsyacc_reductions@5244-332_fsyacc_reductions@5257-333_fsyacc_reductions@5269-334_fsyacc_reductions@5280-335_fsyacc_reductions@5291-336_fsyacc_reductions@5302-337_fsyacc_reductions@5312-338_fsyacc_reductions@5325-339_fsyacc_reductions@5336-340_fsyacc_reductions@5347-341_fsyacc_reductions@5359-342_fsyacc_reductions@5370-343_fsyacc_reductions@5382-344_fsyacc_reductions@1367-346_fsyacc_reductions@5398-345mWhole@1372optAttrs@1384_fsyacc_reductions@1380-349_fsyacc_reductions@1376-348_fsyacc_reductions@5417-347_fsyacc_reductions@5576-350_fsyacc_reductions@5586-351_fsyacc_reductions@5596-352_fsyacc_reductions@5610-353_fsyacc_reductions@5624-354mWhole@1568-1_fsyacc_reductions@5641-355_fsyacc_reductions@5662-356_fsyacc_reductions@5692-357_fsyacc_reductions@5707-358_fsyacc_reductions@5722-359_fsyacc_reductions@5737-360_fsyacc_reductions@5754-361_fsyacc_reductions@5777-362_fsyacc_reductions@1622-364_fsyacc_reductions@5792-363_fsyacc_reductions@1633-366_fsyacc_reductions@5812-365_fsyacc_reductions@5833-367_fsyacc_reductions@5843-368_fsyacc_reductions@5854-369_fsyacc_reductions@5865-370_fsyacc_reductions@5876-371_fsyacc_reductions@5888-372_fsyacc_reductions@5898-373_fsyacc_reductions@5909-374_fsyacc_reductions@5919-375_fsyacc_reductions@5929-376_fsyacc_reductions@5939-377_fsyacc_reductions@5950-378_fsyacc_reductions@5960-379_fsyacc_reductions@5972-380_fsyacc_reductions@5982-381_fsyacc_reductions@5994-382_fsyacc_reductions@6004-383_fsyacc_reductions@6016-384_fsyacc_reductions@6026-385_fsyacc_reductions@6039-386_fsyacc_reductions@6054-387_fsyacc_reductions@6067-388_fsyacc_reductions@6078-389_fsyacc_reductions@6088-390_fsyacc_reductions@6099-391_fsyacc_reductions@6110-392_fsyacc_reductions@6120-393_fsyacc_reductions@6133-394_fsyacc_reductions@6144-395_fsyacc_reductions@6156-396_fsyacc_reductions@6169-397_fsyacc_reductions@6180-398_fsyacc_reductions@6193-399_fsyacc_reductions@1723-401_fsyacc_reductions@6205-400_fsyacc_reductions@1725-403_fsyacc_reductions@6219-402_fsyacc_reductions@6233-404_fsyacc_reductions@6245-405_fsyacc_reductions@6258-406_fsyacc_reductions@6268-407_fsyacc_reductions@6278-408_fsyacc_reductions@6295-409rangesOf3@1744mWhole@1745-2_fsyacc_reductions@1746-411_fsyacc_reductions@1748-412_fsyacc_reductions@1756-413_fsyacc_reductions@6310-410_fsyacc_reductions@6337-414_fsyacc_reductions@6351-415_fsyacc_reductions@6368-416_fsyacc_reductions@6380-417_fsyacc_reductions@6393-418_fsyacc_reductions@6404-419_fsyacc_reductions@6418-420_fsyacc_reductions@6428-421_fsyacc_reductions@6438-422_fsyacc_reductions@6448-423_fsyacc_reductions@6458-424_fsyacc_reductions@6468-425_fsyacc_reductions@6480-426_fsyacc_reductions@6493-427_fsyacc_reductions@6507-428_fsyacc_reductions@6518-429_fsyacc_reductions@6530-430_fsyacc_reductions@6542-431_fsyacc_reductions@6553-432_fsyacc_reductions@6565-433_fsyacc_reductions@6581-434_fsyacc_reductions@6592-435_fsyacc_reductions@6603-436_fsyacc_reductions@6613-437_fsyacc_reductions@6630-438_fsyacc_reductions@6641-439_fsyacc_reductions@6651-440_fsyacc_reductions@6662-441_fsyacc_reductions@6672-442_fsyacc_reductions@6682-443_fsyacc_reductions@6693-444_fsyacc_reductions@6705-445_fsyacc_reductions@6716-446_fsyacc_reductions@6728-447_fsyacc_reductions@6740-448_fsyacc_reductions@6751-449_fsyacc_reductions@6764-450_fsyacc_reductions@6775-451_fsyacc_reductions@6788-452_fsyacc_reductions@6802-453_fsyacc_reductions@6814-454_fsyacc_reductions@6829-455_fsyacc_reductions@6845-456_fsyacc_reductions@6857-457_fsyacc_reductions@6868-458_fsyacc_reductions@6880-459_fsyacc_reductions@6893-460_fsyacc_reductions@6904-461_fsyacc_reductions@1911-463_fsyacc_reductions@6914-462_fsyacc_reductions@1912-465_fsyacc_reductions@6927-464_fsyacc_reductions@1918-467_fsyacc_reductions@6938-466_fsyacc_reductions@1923-469_fsyacc_reductions@6955-468_fsyacc_reductions@1929-471_fsyacc_reductions@6973-470_fsyacc_reductions@1934-473_fsyacc_reductions@6992-472_fsyacc_reductions@7010-474_fsyacc_reductions@7021-475_fsyacc_reductions@7032-476_fsyacc_reductions@7043-477_fsyacc_reductions@7057-478_fsyacc_reductions@7072-479_fsyacc_reductions@7084-480_fsyacc_reductions@7098-481_fsyacc_reductions@7113-482_fsyacc_reductions@1973-484_fsyacc_reductions@7125-483_fsyacc_reductions@7137-485_fsyacc_reductions@7148-486_fsyacc_reductions@7161-487_fsyacc_reductions@7173-488_fsyacc_reductions@1994-490_fsyacc_reductions@7188-489_fsyacc_reductions@1999-492_fsyacc_reductions@7204-491_fsyacc_reductions@7216-493_fsyacc_reductions@7228-494_fsyacc_reductions@7238-495_fsyacc_reductions@7253-496_fsyacc_reductions@7264-497_fsyacc_reductions@7276-498_fsyacc_reductions@7286-499_fsyacc_reductions@7297-500_fsyacc_reductions@2039-502_fsyacc_reductions@7308-501_fsyacc_reductions@7339-503_fsyacc_reductions@2057-505_fsyacc_reductions@7351-504_fsyacc_reductions@2076-507_fsyacc_reductions@7366-506_fsyacc_reductions@2091-509_fsyacc_reductions@7399-508_fsyacc_reductions@7416-510_fsyacc_reductions@7427-511_fsyacc_reductions@7438-512_fsyacc_reductions@7449-513_fsyacc_reductions@2102-515_fsyacc_reductions@7460-514_fsyacc_reductions@2104-517_fsyacc_reductions@7470-516_fsyacc_reductions@2124-519_fsyacc_reductions@7485-518_fsyacc_reductions@7518-520_fsyacc_reductions@7529-521_fsyacc_reductions@7540-522_fsyacc_reductions@7550-523_fsyacc_reductions@7562-524_fsyacc_reductions@7574-525_fsyacc_reductions@7586-526_fsyacc_reductions@7599-527_fsyacc_reductions@7611-528_fsyacc_reductions@7624-529_fsyacc_reductions@7636-530_fsyacc_reductions@7648-531_fsyacc_reductions@7659-532_fsyacc_reductions@7671-533_fsyacc_reductions@2192-535_fsyacc_reductions@2190-536_fsyacc_reductions@7683-534_fsyacc_reductions@7705-537_fsyacc_reductions@7720-538attrLocalBindingBuilder@2207-1_fsyacc_reductions@7730-539_fsyacc_reductions@7745-540_fsyacc_reductions@2221-542_fsyacc_reductions@7755-541_fsyacc_reductions@2232-544_fsyacc_reductions@7781-543_fsyacc_reductions@2245-546_fsyacc_reductions@7805-545_fsyacc_reductions@7829-547_fsyacc_reductions@7841-548_fsyacc_reductions@7855-549_fsyacc_reductions@7866-550_fsyacc_reductions@7878-551_fsyacc_reductions@7890-552_fsyacc_reductions@7900-553_fsyacc_reductions@7912-554_fsyacc_reductions@7924-555_fsyacc_reductions@7935-556_fsyacc_reductions@7947-557_fsyacc_reductions@7958-558_fsyacc_reductions@7970-559_fsyacc_reductions@7981-560_fsyacc_reductions@7993-561_fsyacc_reductions@8004-562_fsyacc_reductions@8016-563_fsyacc_reductions@8027-564_fsyacc_reductions@8039-565_fsyacc_reductions@8050-566_fsyacc_reductions@8061-567_fsyacc_reductions@8072-568_fsyacc_reductions@8083-569_fsyacc_reductions@8094-570_fsyacc_reductions@8105-571_fsyacc_reductions@8116-572_fsyacc_reductions@8127-573_fsyacc_reductions@8138-574_fsyacc_reductions@8149-575_fsyacc_reductions@8160-576_fsyacc_reductions@2309-578_fsyacc_reductions@8172-577_fsyacc_reductions@8184-579_fsyacc_reductions@8195-580_fsyacc_reductions@8206-581_fsyacc_reductions@8219-582_fsyacc_reductions@8232-583_fsyacc_reductions@8243-584_fsyacc_reductions@8255-585_fsyacc_reductions@8267-586_fsyacc_reductions@8278-587_fsyacc_reductions@8291-588_fsyacc_reductions@8302-589_fsyacc_reductions@8314-590_fsyacc_reductions@8326-591_fsyacc_reductions@8338-592_fsyacc_reductions@8350-593_fsyacc_reductions@8361-594_fsyacc_reductions@8372-595_fsyacc_reductions@8383-596_fsyacc_reductions@8395-597_fsyacc_reductions@8407-598_fsyacc_reductions@8419-599_fsyacc_reductions@8431-600_fsyacc_reductions@8443-601_fsyacc_reductions@8456-602_fsyacc_reductions@8469-603_fsyacc_reductions@8482-604_fsyacc_reductions@8493-605_fsyacc_reductions@8504-606_fsyacc_reductions@8516-607_fsyacc_reductions@8529-608_fsyacc_reductions@8542-609_fsyacc_reductions@8553-610_fsyacc_reductions@8564-611_fsyacc_reductions@8576-612_fsyacc_reductions@8588-613_fsyacc_reductions@8599-614_fsyacc_reductions@8610-615_fsyacc_reductions@8620-616_fsyacc_reductions@8631-617_fsyacc_reductions@8645-618_fsyacc_reductions@8656-619_fsyacc_reductions@8666-620_fsyacc_reductions@8676-621_fsyacc_reductions@8686-622_fsyacc_reductions@8699-623_fsyacc_reductions@8712-624_fsyacc_reductions@8723-625_fsyacc_reductions@2440-627_fsyacc_reductions@8735-626_fsyacc_reductions@2442-629_fsyacc_reductions@8746-628_fsyacc_reductions@8756-630_fsyacc_reductions@8768-631_fsyacc_reductions@8780-632_fsyacc_reductions@8791-633_fsyacc_reductions@8802-634_fsyacc_reductions@8815-635_fsyacc_reductions@8828-636_fsyacc_reductions@8840-637_fsyacc_reductions@8851-638_fsyacc_reductions@8863-639_fsyacc_reductions@8875-640_fsyacc_reductions@8887-641_fsyacc_reductions@8899-642_fsyacc_reductions@8910-643_fsyacc_reductions@8922-644_fsyacc_reductions@8935-645_fsyacc_reductions@8947-646_fsyacc_reductions@8957-647_fsyacc_reductions@8969-648_fsyacc_reductions@8982-649_fsyacc_reductions@8994-650_fsyacc_reductions@9007-651_fsyacc_reductions@9018-652_fsyacc_reductions@9030-653_fsyacc_reductions@9041-654_fsyacc_reductions@9052-655_fsyacc_reductions@9063-656_fsyacc_reductions@9075-657_fsyacc_reductions@9086-658_fsyacc_reductions@9099-659_fsyacc_reductions@9111-660_fsyacc_reductions@9122-661_fsyacc_reductions@9134-662_fsyacc_reductions@9147-663_fsyacc_reductions@9162-664_fsyacc_reductions@9172-665_fsyacc_reductions@9183-666_fsyacc_reductions@9195-667_fsyacc_reductions@9206-668_fsyacc_reductions@9219-669_fsyacc_reductions@9232-670_fsyacc_reductions@9245-671_fsyacc_reductions@9258-672_fsyacc_reductions@9270-673_fsyacc_reductions@9281-674_fsyacc_reductions@9292-675_fsyacc_reductions@9307-676_fsyacc_reductions@9321-677_fsyacc_reductions@9340-678_fsyacc_reductions@9355-679_fsyacc_reductions@9371-680_fsyacc_reductions@9384-681_fsyacc_reductions@9401-682_fsyacc_reductions@9418-683_fsyacc_reductions@9429-684_fsyacc_reductions@9440-685_fsyacc_reductions@9450-686_fsyacc_reductions@9461-687_fsyacc_reductions@9472-688_fsyacc_reductions@9482-689_fsyacc_reductions@9499-690_fsyacc_reductions@9517-691_fsyacc_reductions@9535-692_fsyacc_reductions@9552-693_fsyacc_reductions@9564-694_fsyacc_reductions@9580-695_fsyacc_reductions@9596-696_fsyacc_reductions@9614-697_fsyacc_reductions@9633-698_fsyacc_reductions@9652-699_fsyacc_reductions@9670-700_fsyacc_reductions@9688-701_fsyacc_reductions@9708-702_fsyacc_reductions@9727-703_fsyacc_reductions@9746-704_fsyacc_reductions@9764-705_fsyacc_reductions@9781-706_fsyacc_reductions@9793-707_fsyacc_reductions@9810-708_fsyacc_reductions@9827-709_fsyacc_reductions@9839-710_fsyacc_reductions@9851-711_fsyacc_reductions@9868-712_fsyacc_reductions@9887-713_fsyacc_reductions@9906-714_fsyacc_reductions@9920-715_fsyacc_reductions@9932-716_fsyacc_reductions@9946-717_fsyacc_reductions@9958-718_fsyacc_reductions@9970-719_fsyacc_reductions@9982-720_fsyacc_reductions@9994-721_fsyacc_reductions@10006-722_fsyacc_reductions@2891-724_fsyacc_reductions@10018-723_fsyacc_reductions@10029-725_fsyacc_reductions@10041-726_fsyacc_reductions@10053-727_fsyacc_reductions@10066-728_fsyacc_reductions@10078-729_fsyacc_reductions@10090-730_fsyacc_reductions@10102-731_fsyacc_reductions@10115-732_fsyacc_reductions@10127-733_fsyacc_reductions@10140-734_fsyacc_reductions@10152-735_fsyacc_reductions@10165-736_fsyacc_reductions@10178-737_fsyacc_reductions@10191-738_fsyacc_reductions@10204-739_fsyacc_reductions@10216-740_fsyacc_reductions@10229-741_fsyacc_reductions@10241-742_fsyacc_reductions@10253-743_fsyacc_reductions@10266-744_fsyacc_reductions@10279-745_fsyacc_reductions@10291-746_fsyacc_reductions@10303-747_fsyacc_reductions@10316-748_fsyacc_reductions@10328-749_fsyacc_reductions@10340-750_fsyacc_reductions@10352-751_fsyacc_reductions@10365-752_fsyacc_reductions@10377-753_fsyacc_reductions@10390-754_fsyacc_reductions@10402-755_fsyacc_reductions@10415-756_fsyacc_reductions@10428-757_fsyacc_reductions@10441-758_fsyacc_reductions@10454-759_fsyacc_reductions@10466-760_fsyacc_reductions@10479-761_fsyacc_reductions@10491-762_fsyacc_reductions@10503-763_fsyacc_reductions@10516-764_fsyacc_reductions@10529-765_fsyacc_reductions@10540-766_fsyacc_reductions@10553-767_fsyacc_reductions@10565-768_fsyacc_reductions@10576-769_fsyacc_reductions@10587-770_fsyacc_reductions@10600-771_fsyacc_reductions@10611-772_fsyacc_reductions@10622-773_fsyacc_reductions@10634-774_fsyacc_reductions@10646-775_fsyacc_reductions@10658-776_fsyacc_reductions@10672-777_fsyacc_reductions@10687-778_fsyacc_reductions@10702-779_fsyacc_reductions@10717-780_fsyacc_reductions@10731-781_fsyacc_reductions@10742-782_fsyacc_reductions@10752-783_fsyacc_reductions@3030-785_fsyacc_reductions@10763-784_fsyacc_reductions@10781-786_fsyacc_reductions@10792-787_fsyacc_reductions@10804-788_fsyacc_reductions@10817-789_fsyacc_reductions@10827-790_fsyacc_reductions@10838-791_fsyacc_reductions@10850-792_fsyacc_reductions@10863-793_fsyacc_reductions@10876-794_fsyacc_reductions@10888-795_fsyacc_reductions@10900-796_fsyacc_reductions@10915-797_fsyacc_reductions@10929-798_fsyacc_reductions@10941-799_fsyacc_reductions@10952-800_fsyacc_reductions@10965-801_fsyacc_reductions@10983-802_fsyacc_reductions@10996-803_fsyacc_reductions@11007-804_fsyacc_reductions@11018-805_fsyacc_reductions@11031-806_fsyacc_reductions@11043-807_fsyacc_reductions@11053-808_fsyacc_reductions@11064-809_fsyacc_reductions@11075-810_fsyacc_reductions@11086-811_fsyacc_reductions@11098-812_fsyacc_reductions@11110-813_fsyacc_reductions@11125-814_fsyacc_reductions@11138-815_fsyacc_reductions@11152-816_fsyacc_reductions@11166-817_fsyacc_reductions@11181-818_fsyacc_reductions@11195-819_fsyacc_reductions@11208-820_fsyacc_reductions@11220-821_fsyacc_reductions@11231-822_fsyacc_reductions@11244-823_fsyacc_reductions@11254-824_fsyacc_reductions@11265-825_fsyacc_reductions@11276-826_fsyacc_reductions@11289-827_fsyacc_reductions@11300-828_fsyacc_reductions@11313-829_fsyacc_reductions@3185-831_fsyacc_reductions@11324-830_fsyacc_reductions@3187-833_fsyacc_reductions@11336-832_fsyacc_reductions@3192-835_fsyacc_reductions@11349-834_fsyacc_reductions@3198-837_fsyacc_reductions@11364-836_fsyacc_reductions@3202-839_fsyacc_reductions@11378-838_fsyacc_reductions@3206-841_fsyacc_reductions@11392-840_fsyacc_reductions@3210-843_fsyacc_reductions@11403-842_fsyacc_reductions@3214-845_fsyacc_reductions@11416-844_fsyacc_reductions@3218-847_fsyacc_reductions@11427-846_fsyacc_reductions@3220-849_fsyacc_reductions@11440-848_fsyacc_reductions@3222-851_fsyacc_reductions@11451-850_fsyacc_reductions@3224-853_fsyacc_reductions@11463-852_fsyacc_reductions@3226-855_fsyacc_reductions@11476-854_fsyacc_reductions@11490-856_fsyacc_reductions@11502-857_fsyacc_reductions@11513-858_fsyacc_reductions@11524-859_fsyacc_reductions@11534-860_fsyacc_reductions@11545-861_fsyacc_reductions@11556-862_fsyacc_reductions@11567-863_fsyacc_reductions@11577-864_fsyacc_reductions@11587-865_fsyacc_reductions@11597-866_fsyacc_reductions@11608-867_fsyacc_reductions@11619-868_fsyacc_reductions@11630-869_fsyacc_reductions@11641-870_fsyacc_reductions@11653-871_fsyacc_reductions@11663-872_fsyacc_reductions@11673-873_fsyacc_reductions@11687-874_fsyacc_reductions@11702-875_fsyacc_reductions@11714-876_fsyacc_reductions@11727-877_fsyacc_reductions@11738-878_fsyacc_reductions@11751-879_fsyacc_reductions@11761-880_fsyacc_reductions@11774-881_fsyacc_reductions@11785-882_fsyacc_reductions@11798-883_fsyacc_reductions@11812-884_fsyacc_reductions@11824-885_fsyacc_reductions@11836-886_fsyacc_reductions@11848-887_fsyacc_reductions@11860-888_fsyacc_reductions@11872-889_fsyacc_reductions@3339-891_fsyacc_reductions@11884-890_fsyacc_reductions@3341-893_fsyacc_reductions@11898-892_fsyacc_reductions@11909-894_fsyacc_reductions@11920-895_fsyacc_reductions@11931-896_fsyacc_reductions@11943-897_fsyacc_reductions@11955-898_fsyacc_reductions@11966-899_fsyacc_reductions@11978-900_fsyacc_reductions@11993-901_fsyacc_reductions@12005-902_fsyacc_reductions@12018-903_fsyacc_reductions@3378-905_fsyacc_reductions@12030-904_fsyacc_reductions@12041-906_fsyacc_reductions@12052-907_fsyacc_reductions@3386-909_fsyacc_reductions@12063-908_fsyacc_reductions@3388-911_fsyacc_reductions@12074-910_fsyacc_reductions@3392-913_fsyacc_reductions@12084-912_fsyacc_reductions@12095-914_fsyacc_reductions@3399-916_fsyacc_reductions@12106-915_fsyacc_reductions@3406-918_fsyacc_reductions@12124-917_fsyacc_reductions@3412-920_fsyacc_reductions@12137-919_fsyacc_reductions@12157-921_fsyacc_reductions@12168-922_fsyacc_reductions@12180-923_fsyacc_reductions@12192-924_fsyacc_reductions@12205-925_fsyacc_reductions@12218-926_fsyacc_reductions@3448-928_fsyacc_reductions@12232-927_fsyacc_reductions@12249-929_fsyacc_reductions@12261-930_fsyacc_reductions@12271-931_fsyacc_reductions@12281-932_fsyacc_reductions@12292-933_fsyacc_reductions@12302-934_fsyacc_reductions@12315-935_fsyacc_reductions@12325-936_fsyacc_reductions@12336-937_fsyacc_reductions@12347-938_fsyacc_reductions@12368-939_fsyacc_reductions@12388-940_fsyacc_reductions@12402-941_fsyacc_reductions@12417-942_fsyacc_reductions@12434-943_fsyacc_reductions@12450-944_fsyacc_reductions@12462-945_fsyacc_reductions@12479-946_fsyacc_reductions@12490-947_fsyacc_reductions@12500-948_fsyacc_reductions@12510-949_fsyacc_reductions@12520-950_fsyacc_reductions@12530-951_fsyacc_reductions@12540-952_fsyacc_reductions@12551-953_fsyacc_reductions@12563-954_fsyacc_reductions@12576-955_fsyacc_reductions@12586-956_fsyacc_reductions@12598-957_fsyacc_reductions@12612-958_fsyacc_reductions@12627-959_fsyacc_reductions@12641-960_fsyacc_reductions@3592-962_fsyacc_reductions@12656-961_fsyacc_reductions@3596-964_fsyacc_reductions@12672-963_fsyacc_reductions@3599-966_fsyacc_reductions@12687-965_fsyacc_reductions@12699-967_fsyacc_reductions@12713-968_fsyacc_reductions@12726-969_fsyacc_reductions@12737-970_fsyacc_reductions@12748-971_fsyacc_reductions@12758-972_fsyacc_reductions@12771-973_fsyacc_reductions@3627-975_fsyacc_reductions@12784-974_fsyacc_reductions@12800-976_fsyacc_reductions@12812-977_fsyacc_reductions@12822-978_fsyacc_reductions@12834-979_fsyacc_reductions@12845-980_fsyacc_reductions@12860-981_fsyacc_reductions@12870-982_fsyacc_reductions@12880-983_fsyacc_reductions@12893-984_fsyacc_reductions@12905-985_fsyacc_reductions@12918-986_fsyacc_reductions@12933-987_fsyacc_reductions@12945-988_fsyacc_reductions@12958-989_fsyacc_reductions@12969-990_fsyacc_reductions@12979-991_fsyacc_reductions@12992-992_fsyacc_reductions@13005-993_fsyacc_reductions@13016-994_fsyacc_reductions@13028-995_fsyacc_reductions@13039-996_fsyacc_reductions@13053-997_fsyacc_reductions@13063-998_fsyacc_reductions@13076-999_fsyacc_reductions@13090-1000_fsyacc_reductions@3721-1002_fsyacc_reductions@13101-1001_fsyacc_reductions@13113-1003_fsyacc_reductions@13124-1004_fsyacc_reductions@13136-1005_fsyacc_reductions@13147-1006_fsyacc_reductions@13162-1007_fsyacc_reductions@13175-1008_fsyacc_reductions@13187-1009_fsyacc_reductions@13201-1010_fsyacc_reductions@13213-1011_fsyacc_reductions@13224-1012_fsyacc_reductions@13236-1013_fsyacc_reductions@13247-1014_fsyacc_reductions@13259-1015_fsyacc_reductions@13272-1016_fsyacc_reductions@13286-1017_fsyacc_reductions@13297-1018_fsyacc_reductions@13309-1019_fsyacc_reductions@13323-1020_fsyacc_reductions@13334-1021_fsyacc_reductions@13346-1022_fsyacc_reductions@13357-1023_fsyacc_reductions@13368-1024_fsyacc_reductions@13379-1025_fsyacc_reductions@13394-1026_fsyacc_reductions@13405-1027_fsyacc_reductions@13417-1028_fsyacc_reductions@13429-1029_fsyacc_reductions@13441-1030_fsyacc_reductions@13456-1031_fsyacc_reductions@13467-1032_fsyacc_reductions@13481-1033_fsyacc_reductions@13492-1034_fsyacc_reductions@13502-1035_fsyacc_reductions@13512-1036_fsyacc_reductions@13522-1037_fsyacc_reductions@13532-1038_fsyacc_reductions@13545-1039_fsyacc_reductions@13558-1040_fsyacc_reductions@13572-1041_fsyacc_reductions@13582-1042_fsyacc_reductions@13593-1043_fsyacc_reductions@13608-1044_fsyacc_reductions@13622-1045_fsyacc_reductions@13635-1046_fsyacc_reductions@13648-1047_fsyacc_reductions@13662-1048_fsyacc_reductions@13677-1049_fsyacc_reductions@13688-1050_fsyacc_reductions@13703-1051_fsyacc_reductions@13715-1052_fsyacc_reductions@13726-1053_fsyacc_reductions@13742-1054_fsyacc_reductions@13757-1055_fsyacc_reductions@13768-1056_fsyacc_reductions@13779-1057_fsyacc_reductions@13789-1058_fsyacc_reductions@13801-1059_fsyacc_reductions@13814-1060_fsyacc_reductions@13825-1061_fsyacc_reductions@13836-1062_fsyacc_reductions@13849-1063_fsyacc_reductions@13859-1064_fsyacc_reductions@13869-1065_fsyacc_reductions@13880-1066_fsyacc_reductions@13892-1067_fsyacc_reductions@13904-1068_fsyacc_reductions@13918-1069_fsyacc_reductions@13931-1070_fsyacc_reductions@13945-1071_fsyacc_reductions@13957-1072_fsyacc_reductions@13973-1073_fsyacc_reductions@13995-1074_fsyacc_reductions@14011-1075_fsyacc_reductions@14024-1076_fsyacc_reductions@14041-1077_fsyacc_reductions@14053-1078_fsyacc_reductions@14071-1079_fsyacc_reductions@14082-1080_fsyacc_reductions@14094-1081_fsyacc_reductions@14108-1082_fsyacc_reductions@14119-1083_fsyacc_reductions@14131-1084_fsyacc_reductions@14146-1085_fsyacc_reductions@14159-1086_fsyacc_reductions@14171-1087_fsyacc_reductions@14182-1088_fsyacc_reductions@14193-1089_fsyacc_reductions@14205-1090_fsyacc_reductions@14216-1091_fsyacc_reductions@14231-1092_fsyacc_reductions@14245-1093_fsyacc_reductions@14257-1094_fsyacc_reductions@14268-1095_fsyacc_reductions@14280-1096_fsyacc_reductions@14291-1097_fsyacc_reductions@14303-1098_fsyacc_reductions@14318-1099_fsyacc_reductions@14331-1100_fsyacc_reductions@14343-1101_fsyacc_reductions@14354-1102_fsyacc_reductions@14367-1103_fsyacc_reductions@14378-1104_fsyacc_reductions@14388-1105_fsyacc_reductions@14399-1106_fsyacc_reductions@14411-1107_fsyacc_reductions@14424-1108_fsyacc_reductions@14436-1109_fsyacc_reductions@14447-1110_fsyacc_reductions@14457-1111_fsyacc_reductions@14470-1112_fsyacc_reductions@14483-1113_fsyacc_reductions@14496-1114_fsyacc_reductions@14507-1115_fsyacc_reductions@14518-1116_fsyacc_reductions@14529-1117_fsyacc_reductions@14540-1118_fsyacc_reductions@14551-1119_fsyacc_reductions@14562-1120_fsyacc_reductions@14573-1121_fsyacc_reductions@14583-1122_fsyacc_reductions@14594-1123_fsyacc_reductions@14604-1124_fsyacc_reductions@14614-1125_fsyacc_reductions@14624-1126_fsyacc_reductions@14634-1127_fsyacc_reductions@14645-1128_fsyacc_reductions@14656-1129_fsyacc_reductions@14666-1130_fsyacc_reductions@14676-1131_fsyacc_reductions@14686-1132_fsyacc_reductions@14696-1133_fsyacc_reductions@14706-1134_fsyacc_reductions@14719-1135_fsyacc_reductions@14730-1136_fsyacc_reductions@14740-1137_fsyacc_reductions@14750-1138_fsyacc_reductions@14763-1139_fsyacc_reductions@14775-1140_fsyacc_reductions@14786-1141_fsyacc_reductions@14798-1142_fsyacc_reductions@14809-1143_fsyacc_reductions@14820-1144_fsyacc_reductions@14831-1145_fsyacc_reductions@14842-1146_fsyacc_reductions@14854-1147_fsyacc_reductions@14865-1148_fsyacc_reductions@14876-1149_fsyacc_reductions@14886-1150_fsyacc_reductions@14896-1151_fsyacc_reductions@14906-1152_fsyacc_reductions@14917-1153_fsyacc_reductions@14929-1154_fsyacc_reductions@14939-1155_fsyacc_reductions@14949-1156_fsyacc_reductions@14960-1157_fsyacc_reductions@14972-1158_fsyacc_reductions@14984-1159_fsyacc_reductions@14994-1160_fsyacc_reductions@15006-1161_fsyacc_reductions@15016-1162_fsyacc_reductions@15026-1163_fsyacc_reductions@15036-1164_fsyacc_reductions@15046-1165_fsyacc_reductions@15056-1166_fsyacc_reductions@15066-1167_fsyacc_reductions@15076-1168_fsyacc_reductions@15086-1169_fsyacc_reductions@15096-1170_fsyacc_reductions@15106-1171_fsyacc_reductions@15116-1172_fsyacc_reductions@15126-1173_fsyacc_reductions@15136-1174_fsyacc_reductions@15146-1175_fsyacc_reductions@15156-1176_fsyacc_reductions@15166-1177_fsyacc_reductions@15176-1178_fsyacc_reductions@15186-1179_fsyacc_reductions@15197-1180_fsyacc_reductions@15207-1181_fsyacc_reductions@15217-1182_fsyacc_reductions@15227-1183_fsyacc_reductions@15237-1184_fsyacc_reductions@15247-1185_fsyacc_reductions@15257-1186_fsyacc_reductions@15267-1187_fsyacc_reductions@15277-1188_fsyacc_reductions@15287-1189_fsyacc_reductions@15297-1190_fsyacc_reductions@15307-1191_fsyacc_reductions@15317-1192_fsyacc_reductions@15327-1193_fsyacc_reductions@15337-1194_fsyacc_reductions@15347-1195_fsyacc_reductions@15357-1196_fsyacc_reductions@15367-1197_fsyacc_reductions@15377-1198_fsyacc_reductions@15387-1199_fsyacc_reductions@15397-1200_fsyacc_reductions@15407-1201_fsyacc_reductions@15417-1202_fsyacc_reductions@15427-1203_fsyacc_reductions@15437-1204_fsyacc_reductions@15447-1205_fsyacc_reductions@15458-1206_fsyacc_reductions@15468-1207_fsyacc_reductions@15478-1208_fsyacc_reductions@15489-1209_fsyacc_reductions@15499-1210_fsyacc_reductions@15509-1211_fsyacc_reductions@15520-1212_fsyacc_reductions@15530-1213_fsyacc_reductions@15540-1214_fsyacc_reductions@15551-1215_fsyacc_reductions@15561-1216_fsyacc_reductions@15571-1217_fsyacc_reductions@15582-1218_fsyacc_reductions@15592-1219_fsyacc_reductions@15602-1220_fsyacc_reductions@15612-1221_fsyacc_reductions@15622-1222_fsyacc_reductions@15632-1223_fsyacc_reductions@15642-1224_fsyacc_reductions@15653-1225_fsyacc_reductions@15663-1226_fsyacc_reductions@15673-1227_fsyacc_reductions@15683-1228_fsyacc_reductions@15693-1229_fsyacc_reductions@15703-1230tables@15729-3tables@15718-4tables@15719-5ExtensionTypingTypeProviderDesignationProvidedTypeResolutionProvidedTypeResolutionNoRangeResolutionEnvironmentgetTypeProviderImplementationTypes@284createTypeProvider@324createTypeProvider@326-1providerSpecs@374providerSpecs@383-1unmarshal@391tryTypeMember@398tryTypeMember@402-1result@410-1tryTypeMemberNonNull@424tryMemberMember@432tryMemberMember@436-1DisplayNameOfTypeProvider@439isWhitespace@441validateNamespaceName@447providedSystemTypeComparer@462ProvidedTypeContext_NoEntriesEntries_NoEntries@DebugTypeProxyEntries@DebugTypeProxyRemapTyconRefs@499Dictionary`2IProvidedCustomAttributeProviderProvidedCustomAttributeProviderProvidedMemberInfoProvidedParameterInfoProvidedAssemblyProvidedMethodBaseProvidedFieldInfoProvidedMethodInfoProvidedPropertyInfoProvidedEventInfoProvidedConstructorInfoTaintedEquals@595TaintedEquals@595-1|Member|_|@606-1CustomAttributeNamedArgumentCustomAttributeTypedArgumentfindAttribByName@608-1findAttrib@609-1Create@617-6Create@614-5Create@627-8Create@628-9Create@629-10Create@626-7Create@633-11Create@610-4TaintedGetHashCode@720TaintedEquals@722-2MethodBaseTaintedEquals@722-3TaintedGetHashCode@773-1TaintedEquals@775-4PropertyInfoTaintedEquals@775-5TaintedGetHashCode@790-2TaintedEquals@792-6TaintedEquals@792-7clo@516-17IList`1clo@647-18clo@663-19ProvidedExprProvidedVar|ProvidedNewObjectExpr|_|@831|ProvidedCallExpr|_|@851GetInvokerExpression@950Microsoft.FSharp.QuotationsFSharpExprnewError@956fullName@964validateAttributesOfProvidedType@965validateAttributesOfProvidedType@967-1validateAttributesOfProvidedType@969-2name@972namespaceName@976declaringTypes@978-1declaringTypes@980-2path@982name@995-1namespaceName@996-1fullName@997-1ValidateProvidedTypeAfterStaticInstantiation@1002-1ValidateProvidedTypeAfterStaticInstantiation@1003-2ValidateProvidedTypeAfterStaticInstantiation@1004-3ValidateProvidedTypeAfterStaticInstantiation@1005-4ValidateProvidedTypeAfterStaticInstantiation@1008-5ValidateProvidedTypeAfterStaticInstantiation@1002memberName@1022miDeclaringType@1026miDeclaringTypeFullName@1034adder@1079remover@1080expectRead@1054expectWrite@1058canRead@1061canWrite@1062isPublic@1041isGenericMethod@1042name@1096-2_namespaceName@1097_fullname@1098staticParameters@1107ValidateProvidedTypeDefinition@1108resolverNamespaceName@1123resolvedType@1125tryNamespace@1129-2tryNamespace@1129-1tryNamespace@1134-3tryNamespace@1139-4tryNamespace@1123providedNamespaces@1144resolveType@1146typeName@1161nameContrib@1162-1nameContrib@1164-2encContrib@1170-1TryApplyProvidedType@1179nm@1188defaultArgValues@1191defaultArgValues@1194-1nonDefaultArgs@1199TryApplyProvidedType@1207-1actualName@1210checkTypeName@1212staticParameters@1236-1staticParameters@1238-2typeBeforeArgumentsName@1242spName@1243staticArgs@1245staticArgs@1246-1spReprTypeName@1256namespaceParts@1304walkUpNestedClasses@1308-1walkUpNestedClasses@1308-2GetFSharpPathToProvidedType@1309ILAssemblyRefFromProvidedAssembly@1313aref@1320GetILTypeRefOfProvidedType@1329ProviderGeneratedTypeProvidedAssemblyStaticLinkingMapIsGeneratedTypeDirectReference@1345$EstAstXmlDocCollector-ctor@58-14-ctor@58-13-ctor@61-17-ctor@61-16-ctor@61-15firstLineIndexAfterGrabPoint@78grabPointIndex@79firstLineIndexAfterPrevGrabPoint@86XmlDocXmlDocStaticsprocessLines@111-1PreXmlDocPreXmlMerge_PreXmlDocEmptyPreXmlMerge@DebugTypeProxyPreXmlDoc@DebugTypeProxy_PreXmlDocEmpty@DebugTypeProxyParserDetailIdentLongIdentWithDotsTyparStaticReqSynTyparSynConstUserNumMeasureUserNum@DebugTypeProxyMeasure@DebugTypeProxySynMeasureNamedProductSeqDividePowerAnonVarNamed@DebugTypeProxyProduct@DebugTypeProxySeq@DebugTypeProxyDivide@DebugTypeProxyPower@DebugTypeProxyAnon@DebugTypeProxyVar@DebugTypeProxySynAccessSequencePointInfoForTargetSequencePointInfoForSeqSequencePointInfoForTrySequencePointAtTry_SequencePointInBodyOfTry_NoSequencePointAtTrySequencePointAtTry@DebugTypeProxy_SequencePointInBodyOfTry@DebugTypeProxy_NoSequencePointAtTry@DebugTypeProxySequencePointInfoForWithSequencePointAtWith_NoSequencePointAtWithSequencePointAtWith@DebugTypeProxy_NoSequencePointAtWith@DebugTypeProxySequencePointInfoForFinallySequencePointAtFinally_NoSequencePointAtFinallySequencePointAtFinally@DebugTypeProxy_NoSequencePointAtFinally@DebugTypeProxySequencePointInfoForForLoopSequencePointAtForLoop_NoSequencePointAtForLoopSequencePointAtForLoop@DebugTypeProxy_NoSequencePointAtForLoop@DebugTypeProxySequencePointInfoForWhileLoopSequencePointAtWhileLoop_NoSequencePointAtWhileLoopSequencePointAtWhileLoop@DebugTypeProxy_NoSequencePointAtWhileLoop@DebugTypeProxySequencePointInfoForBindingSequencePointAtBindingSequencePointAtBinding@DebugTypeProxySeqExprOnlyExprAtomicFlagSynBindingKindSynTyparDeclSynTypeConstraintWhereTyparIsValueTypeWhereTyparIsReferenceTypeWhereTyparIsUnmanagedWhereTyparSupportsNullWhereTyparIsComparableWhereTyparIsEquatableWhereTyparDefaultsToTypeWhereTyparSubtypeOfTypeWhereTyparSupportsMemberWhereTyparIsEnumWhereTyparIsDelegateWhereTyparIsValueType@DebugTypeProxyWhereTyparIsReferenceType@DebugTypeProxyWhereTyparIsUnmanaged@DebugTypeProxyWhereTyparSupportsNull@DebugTypeProxyWhereTyparIsComparable@DebugTypeProxyWhereTyparIsEquatable@DebugTypeProxyWhereTyparDefaultsToType@DebugTypeProxyWhereTyparSubtypeOfType@DebugTypeProxyWhereTyparSupportsMember@DebugTypeProxyWhereTyparIsEnum@DebugTypeProxyWhereTyparIsDelegate@DebugTypeProxySynTypeLongIdentLongIdentAppTupleArrayFunWithGlobalConstraintsHashConstraintMeasureDivideMeasurePowerStaticConstantStaticConstantExprStaticConstantNamedLongIdent@DebugTypeProxyLongIdentApp@DebugTypeProxyTuple@DebugTypeProxyArray@DebugTypeProxyFun@DebugTypeProxyWithGlobalConstraints@DebugTypeProxyHashConstraint@DebugTypeProxyMeasureDivide@DebugTypeProxyMeasurePower@DebugTypeProxyStaticConstant@DebugTypeProxyStaticConstantExpr@DebugTypeProxyStaticConstantNamed@DebugTypeProxySynExprParenTypedArrayOrListRecordObjExprForEachArrayOrListOfSeqExprCompExprMatchLambdaDoAssertTypeAppLetOrUseTryWithLazyIfThenElseLongIdentSetDotGetDotSetDotIndexedGetDotIndexedSetNamedIndexedPropertySetDotNamedIndexedPropertySetTypeTestUpcastDowncastInferredUpcastInferredDowncastNullAddressOfJoinInImplicitZeroYieldOrReturnYieldOrReturnFromLetOrUseBangDoBangLibraryOnlyILAssemblyLibraryOnlyStaticOptimizationLibraryOnlyUnionCaseFieldGetLibraryOnlyUnionCaseFieldSetArbitraryAfterErrorFromParseErrorDiscardAfterMissingQualificationAfterDotParen@DebugTypeProxyTyped@DebugTypeProxyArrayOrList@DebugTypeProxyRecord@DebugTypeProxyObjExpr@DebugTypeProxyForEach@DebugTypeProxyArrayOrListOfSeqExpr@DebugTypeProxyCompExpr@DebugTypeProxyMatchLambda@DebugTypeProxyDo@DebugTypeProxyAssert@DebugTypeProxyTypeApp@DebugTypeProxyLetOrUse@DebugTypeProxyTryWith@DebugTypeProxyLazy@DebugTypeProxyIfThenElse@DebugTypeProxyIdent@DebugTypeProxyLongIdentSet@DebugTypeProxyDotGet@DebugTypeProxyDotSet@DebugTypeProxyDotIndexedGet@DebugTypeProxyDotIndexedSet@DebugTypeProxyNamedIndexedPropertySet@DebugTypeProxyDotNamedIndexedPropertySet@DebugTypeProxyTypeTest@DebugTypeProxyUpcast@DebugTypeProxyDowncast@DebugTypeProxyInferredUpcast@DebugTypeProxyInferredDowncast@DebugTypeProxyNull@DebugTypeProxyAddressOf@DebugTypeProxyJoinIn@DebugTypeProxyImplicitZero@DebugTypeProxyYieldOrReturn@DebugTypeProxyYieldOrReturnFrom@DebugTypeProxyLetOrUseBang@DebugTypeProxyDoBang@DebugTypeProxyLibraryOnlyILAssembly@DebugTypeProxyLibraryOnlyStaticOptimization@DebugTypeProxyLibraryOnlyUnionCaseFieldGet@DebugTypeProxyLibraryOnlyUnionCaseFieldSet@DebugTypeProxyArbitraryAfterError@DebugTypeProxyFromParseError@DebugTypeProxyDiscardAfterMissingQualificationAfterDot@DebugTypeProxySynSimplePatId@DebugTypeProxyAttrib@DebugTypeProxySynSimplePatAlternativeIdInfoUndecidedDecidedUndecided@DebugTypeProxyDecided@DebugTypeProxySynStaticOptimizationConstraintWhenTyparTyconEqualsTyconWhenTyparIsStructWhenTyparTyconEqualsTycon@DebugTypeProxyWhenTyparIsStruct@DebugTypeProxySynSimplePatsSimplePatsSimplePats@DebugTypeProxySynPatWildOrAndsOptionalValDeprecatedCharRangeInstanceMemberWild@DebugTypeProxyOr@DebugTypeProxyAnds@DebugTypeProxyOptionalVal@DebugTypeProxyDeprecatedCharRange@DebugTypeProxyInstanceMember@DebugTypeProxySynInterfaceImplSynMatchClauseSynAttributeSynValDataSynBindingSynBindingReturnInfoMemberFlagsMemberKindSynMemberSigMemberInterfaceValFieldNestedTypeMember@DebugTypeProxyInterface@DebugTypeProxyValField@DebugTypeProxyNestedType@DebugTypeProxySynTypeDefnKindTyconDelegateTyconDelegate@DebugTypeProxySynTypeDefnSimpleReprUnionGeneralTypeAbbrevNoneUnion@DebugTypeProxyEnum@DebugTypeProxyGeneral@DebugTypeProxyTypeAbbrev@DebugTypeProxyNone@DebugTypeProxySynEnumCaseSynUnionCaseSynUnionCaseTypeUnionCaseFieldsUnionCaseFullTypeUnionCaseFields@DebugTypeProxyUnionCaseFullType@DebugTypeProxySynTypeDefnSigReprObjectModelObjectModel@DebugTypeProxySynTypeDefnSigSynFieldSynComponentInfoSynValSigSynValInfoSynArgInfoSynValTyparDeclsSynExceptionReprSynExceptionDefnSynTypeDefnReprSynTypeDefnSynMemberDefnOpenImplicitCtorImplicitInheritLetBindingsAbstractSlotAutoPropertyOpen@DebugTypeProxyImplicitCtor@DebugTypeProxyImplicitInherit@DebugTypeProxyLetBindings@DebugTypeProxyAbstractSlot@DebugTypeProxyAutoProperty@DebugTypeProxySynModuleDeclModuleAbbrevNestedModuleDoExprHashDirectiveNamespaceFragmentModuleAbbrev@DebugTypeProxyNestedModule@DebugTypeProxyDoExpr@DebugTypeProxyAttributes@DebugTypeProxyHashDirective@DebugTypeProxyNamespaceFragment@DebugTypeProxySynExceptionSigSynModuleSigDeclSynModuleOrNamespaceSynModuleOrNamespaceSigParsedHashDirectiveParsedImplFileFragmentAnonModuleNamedModuleAnonModule@DebugTypeProxyNamedModule@DebugTypeProxyParsedSigFileFragmentParsedFsiInteractionIDefnsIHashIDefns@DebugTypeProxyIHash@DebugTypeProxyParsedImplFileParsedSigFilepathOfLid@1412arrPathOfLid@1413textOfLid@1416ScopedPragmaQualifiedNameOfFileParsedImplFileInputParsedSigFileInputParsedInputImplFileSigFileImplFile@DebugTypeProxySigFile@DebugTypeProxySynArgNameGeneratorpathToSynLid@1487lid@1490SimplePatOfPat@1605composeFunOpt@1610SimplePatsOfPat@1623-1SimplePatsOfPat@1623SimplePatsOfPat@1626-2PushCurriedPatternsToExpr@1658PushCurriedPatternsToExpr@1670-1ParseAssemblyCodeInstructions@1681ParseAssemblyCodeType@1695SynReturnInforhsExpr@1973-1rhsExpr@1973LexerIfdefStackEntryLexerEndlineContinuationTokenSkipToken@DebugTypeProxySkip@DebugTypeProxyLexerWhitespaceContinuationIfDefSkipVerbatimStringTripleQuoteStringCommentSingleLineCommentStringInCommentVerbatimStringInCommentTripleQuoteStringInCommentMLOnlyEndLineIfDefSkip@DebugTypeProxyVerbatimString@DebugTypeProxyTripleQuoteString@DebugTypeProxyComment@DebugTypeProxySingleLineComment@DebugTypeProxyStringInComment@DebugTypeProxyVerbatimStringInComment@DebugTypeProxyTripleQuoteStringInComment@DebugTypeProxyMLOnly@DebugTypeProxyEndLine@DebugTypeProxySyntaxErrorNiceNameGeneratorStableNiceNameGeneratorwalkMatchClauses@2171-1walkExprOpt@2173-1walkExpr@2173-1walkExpr@2224-2walkExpr@2228-3walkBind@2168LexbufLocalXmlDocStoreSynInfoHasOptionalArgs@1856HasOptionalArgs@1856-1AritiesOfArgs@1877InferSynArgInfoFromSimplePats@1893AdjustArgsForUnitElimination@1906infosForExplicitArgs@1943explicitArgsAreSimple@1948CustomOperationsjoin@67-1join1@68-1join2@69-1join3@70-1op_AtAt@88-1op_AtAtMinus@89-1op_AtAtMinusMinus@90-1commaListL@101-1semiListL@102-1spaceListL@103-1sepListL@104-1aboveListL@111-1breaksrender`2addL@273-3addL@273-3TaddL@280-4addL@285-5addL@292-6renderL@297stringR@303NoStateNoResultchannelR@315bufferR@324htmlR@333indentR@348UnicodeLexing$InternalFileSystemUtilsMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILXEraseIlxUnionsDiscriminationTechniqueUnionReprDecisions`3OptimizeAlternativeToNull@96OptimizingOneAlternativeToNull@102OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull@108OptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNull@110-1cuspecRepr@168cuspecRepr@169-1cuspecRepr@170-2cuspecRepr@171-3cuspecRepr@172-4cuspecRepr@173-5cuspecRepr@174-6NoTypesGeneratedViaThisReprDecidercudefRepr@179cudefRepr@180-1cudefRepr@181-2cudefRepr@182-3cudefRepr@183-4cudefRepr@184-5cudefRepr@185-6formalTypeArgs@204convInstr@419convInstr@537-1mkCase@558-3code@579convMethodDef@586mkMethodsAndPropertiesForFields@619convAlternativeDef@749debugProxyCtor@796basicCtorMeth@867basicCtorMeth@878-1results@916baseMethsFromAlt@918basePropsFromAlt@919altUniqObjMeths@920altTypeDefs@921altDebugTypeDefs@922altNullaryFields@923convClassUnionDef@931fields@933selfAndTagFields@950ctorMeths@956addConstFieldInit@975-1tagEnumFields@997ctorMeths@1052-1existingMeths@1063existingMeths@1060-1existingProps@1068convClassUnionDef@1132-1convTypeDef@1151-1convTypeDef@1152-2convTypeDef@1157-3convTypeDefs@1160-1ConvModule@1164-1.$Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILXEraseIlxFuncsaddMethodGeneratedAttrsToTypeDef@30stripSupportedIndirectCall@87stripSupportedIndirectCall@87-1stripSupportedAbstraction@110stripSupportedAbstraction@110-1formalArgTys@172mkMethSpecForMultiApp@183computePreCall@251-1computePreCall@251-2buildApp@263-2buildApp@263-1code'@335code'@339-1mkILCloFldDefs@370rewriteInstrToAccessArgsFromEnv@415-1rewriteInstrToAccessArgsFromEnv@416-2rewriteInstrToAccessArgsFromEnv@420-3rewriteInstrToAccessArgsFromEnv@421-4rewriteInstrToAccessArgsFromEnv@425-5rewriteInstrToAccessArgsFromEnv@426-6rewriteInstrToAccessArgsFromEnv@404ldenvCode@430rewriteCodeToAccessArgsFromEnv@435-1ctorMethodDef@648ctorMethodDef@654-1convIlxClosureDef@668nowStruct@551argToFreeVarMap@557laterFreeVars@558nowCode@570nowCode@572-1laterTypeDefs@592nowStruct@454-1laterTypeDefs@473-1nowCode@484-2convTypeDef@691convTypeDefs@694ConvModule@699IlxSettingsIlxCallImplementationCompileOpName@136choice@165DecompileOpName@155IsValidPrefixOperatorUse@225IsValidPrefixOperatorDefinitionName@230IsPrefixOperator@236afterSkipStartsWith@250NameArityPairIsActivePatternName@407IsActivePatternName@409-1ActivePatternInfoInvalidMangledStaticArgdemangleProvidedTypeName@456FSharpEnvironmentresult@266Option$CompilerLocationUtilsMicrosoft.FSharp.Compiler.AbstractILILRuntimeWriterequalTypeLists@320setVersion@342collectPrefixParts@372-1prefix@380emEnvenvBindTypeRef@437envGetTyvar@524-1envGetTyvar@524tyargs@556convTypeSpec@560convTypeSpec@560-2convTypeSpec@560-1convTypes@606convTypesToArray@608methInfos@722select@734-1haveArgTs@739ParameterInfoselect@730emitInstrCall@920emitInstr@1261emitInstr@1099-1System.Reflection.EmitemitInstr@1118-2emitInstr@1112-3emitInstr@1260-4emEnv@1274emitter@1286-1emitHandler@1314-1convCustomAttr@1365ConstructorInfoemitCustomAttrs@1388gpsNames@1398constraintTs@1407buildGenParamsPass1b@1408-1buildGenParamsPass1b@1417-2buildGenParamsPass1b@1417-3buildGenParamsPass1b@1404emitParameter@1448emitParameter@1448-1buildMethodPass2@1574GenericTypeParameterBuilderdefineParameter@1602ParameterAttributesParameterBuilderbuildMethodPass3@1603buildMethodPass3@1605-1ILGeneratorbuildMethodPass3@1606-2buildMethodPass3@1606-3buildMethodPass3@1619-4buildMethodPass3@1619-5defineParameter@1622-1buildMethodPass3@1623-6buildMethodPass3@1626-7buildMethodPass3@1628-8buildMethodPass3@1628-9buildFieldPass2@1663buildFieldPass2@1666-1buildFieldPass3@1676buildFieldPass3@1676-1buildPropertyPass2@1688buildPropertyPass2@1689-1buildPropertyPass2@1691-2buildPropertyPass3@1699buildPropertyPass3@1699-1buildEventPass3@1714buildEventPass3@1715-1buildEventPass3@1716-2buildEventPass3@1716-3attr@1774-1attr@1775-2buildTypeDefPass1@1806buildTypeDefPass1@1808-1buildTypeDefPass1@1820-2buildTypeTypeDef@1825TypeAttributesTypeBuilderbuildTypeDefPass1b@1837buildTypeDefPass1b@1843-1buildTypeDefPass2@1854buildTypeDefPass2@1854-1emEnv@1856-1emEnv@1857-2emEnv@1858-3buildTypeDefPass2@1862-2buildTypeDefPass3@1874buildTypeDefPass3@1875-1buildTypeDefPass3@1876-2buildTypeDefPass3@1877-3emEnv@1878-4buildTypeDefPass3@1879-4buildTypeDefPass3@1884-5getEnclosingTypeRefs@1909getTypeRefsInType@1916getTypeRefsInType@1917-1traverseType@1960-1traverseTypeRef@1966-1traverseTypeDef@1933-1traverseTypeDef@1935-3traverseTypeDef@1935-2traverseTypeDef@1951-5traverseTypeDef@1951-4traverseTypeDef@1956-6traverseTypeRef@1966-2traverseType@1963-2typeCreationHandler@1978buildTypeDefPass4@2010buildModuleTypePass1@2017emEnv@2031-5buildModuleFragment@2032emEnv@2033-6emEnv@2034-7buildModuleFragment@2037-1emEnv@2038-8buildModuleFragment@2039-2buildModuleFragment@2039-3buildModuleFragment@2040-4emitModuleFragment@2095emitModuleFragment@2095-1execEntryPtFun@2098-1execEntryPtFun@2098LookupTypeRef@2132LookupFieldRef@2136FieldBuilderFieldInfoLookupMethodRef@2137MethodBuilderforce@317-1force@317-3force@317-2.$Microsoft.FSharp.Compiler.AbstractILILBinaryWriterreportTime@55-3reportTime@55-2reportTime@55-1reportTime@50PdbLocalVarPdbMethodScopePdbSourceLocPdbSequencePointToString@205-13ToString@205-12ToString@205-11ToString@205-10PdbMethodDataPdbDataWritePdbInfo@261allSps@278WritePdbInfo@281-2WritePdbInfo@281-1WritePdbInfo@294-3add@316-2spsets@323WritePdbInfo@327-6WritePdbInfo@325-5writePdbScope@337-1WritePdbInfo@299-4bestMatch@379docs@415WriteMdbInfo@424DumpDebugInfo@469-1DumpDebugInfo@469DumpDebugInfo@476-2DumpDebugInfo@479-5DumpDebugInfo@479-4DumpDebugInfo@479-3DumpDebugInfo@481-12DumpDebugInfo@481-11DumpDebugInfo@481-10DumpDebugInfo@481-9DumpDebugInfo@481-8DumpDebugInfo@481-7DumpDebugInfo@480-6DumpDebugInfo@485-18DumpDebugInfo@485-17DumpDebugInfo@485-16DumpDebugInfo@485-15DumpDebugInfo@485-14DumpDebugInfo@485-13writeScope@490-4writeScope@490-3writeScope@490-2writeScope@492-6writeScope@492-5writeScope@492-9writeScope@492-8writeScope@492-7ILStrongNameSignerPublicKeySignerKeyPairKeyContainerPublicKeySigner@DebugTypeProxyKeyPair@DebugTypeProxyKeyContainer@DebugTypeProxyRowElementIGenericRowISharedRowSimpleSharedRowUnsharedRowAssemblyRefRowMemberRefRowILTypeWriterEnvMetadataTable`1SetRowsOfTable@845MethodDefKeyEquals@883FieldDefKeyPropertyTableKeyEventTableKeyTypeDefTableKeyILTokenMappingsGenTypeDefPass1@1043GenTypeDefsPass1@1046sized@1165lobounded@1166EmitArrayShape@1169EmitArrayShape@1171-1EmitCallsig@1283EmitCallsig@1290-1EmitTypes@1296GenFieldDefPass2@1513GenMethodDefPass2@1522GenPropertyDefPass2@1537GenEventDefPass2@1552GenTypeDefPass2@1578GenTypeDefPass2@1579-1GenTypeDefPass2@1580-2GenTypeDefPass2@1581-3GenTypeDefPass2@1582-4GenTypeDefsPass2@1590MethodDefNotFoundtypeNameOfIdx@1603-1FindMethodDefIdx@1616GetMethodRefAsMethodDefIdx@1648GetMethodRefAsMethodDefIdx@1653-1GetMethodRefAsMethodDefIdx@1653-3GetMethodRefAsMethodDefIdx@1653-2blob@1688GenCustomAttrsPass3@1801GenSecurityDeclsPass3@1817EmitLocalSig@1881ExceptionClauseKindTypeFilterClauseFilterClauseTypeFilterClause@DebugTypeProxyFilterClause@DebugTypeProxyCodeBufferCreate@1923-3RecordReqdBrFixups@1960canUseSmall@2694GenILMethodBody@2714GenILMethodBody@2728-1GenGenericParamPass4@2845GetMethodDefSigAsBytes@2907GenMethodDefPass3@3005GenMethodDefPass3@3008-1GenMethodDefPass4@3048GetPropertySigAsBytes@3068GenPropertyPass3@3083GenPropertyPass3@3084-1GenEventPass3@3119GenEventPass3@3120-1GenTypeDefPass3@3163GenTypeDefPass3@3164-1GenTypeDefPass3@3165-2GenTypeDefPass3@3166-3GenTypeDefPass3@3167-4GenTypeDefPass3@3181-5GenTypeDefsPass3@3189GenTypeDefPass4@3198GenTypeDefPass4@3199-1GenTypeDefsPass4@3207GenNestedExportedTypesPass3@3227GenExportedTypePass3@3243GenManifestPass3@3282SortTableRows@3320GenModule@3328GenModule@3331-1GenModule@3336-2GenModule@3344-3cenv@3378cenv@3379-1enc@3402userStrings@3406mappings@3413mappings@3415-1mappings@3418-2mappings@3421-3mappings@3424-4BinaryChunkcount@3446-1version@3501-2version@3501-1version@3501stringsStreamUnpaddedSize@3519userStringsStreamUnpaddedSize@3522blobsStreamUnpaddedSize@3528writeILMetadataAndCode@3537-1writeILMetadataAndCode@3537unlinkedResources@4106-1writeBinaryAndReportMappings@4138textV2P@4369optionsFileSystemUtilitesCodebuforderedOrigReqdBrFixups@1985applyBrFixups@2065i@2086adjuster@2084tab@2099newReqdStringFixups@2103newExnClauses@2106remap@2114-1applyBrFixups@2121-1SEHTree_Tip_Tip@DebugTypeProxyencodingsForNoArgInstrs@2156clo@2159-16args@2407args@2414-1args@2421-2args@2430-3mkScopeNode@2464mkScopeNode@2467-1exnBranches@2500emitCode@2529-1emitCode@2529emitCode@2530-3emitCode@2530-2emitCodeLinear@2560-1emitCodeLinear@2566-2emitCode@2573-4emitExceptionHandlerTree@2600emitExceptionHandlerTree2@2603RowElementTagsSequencePointILBinaryReaderILReaderOptionsMemChannelMemoryMappedFileCreate@160Create@166-1Create@171-2MMapChannelInputChannelChanMemMMapChan@DebugTypeProxyMem@DebugTypeProxyMMap@DebugTypeProxyTaggedIndex`1ILInstrPrefixesRegisterILInstrDecoderI_u16_u8_instrI_u16_u16_instrI_none_instrI_i64_instrI_i32_i32_instrI_i32_i8_instrI_r4_instrI_r8_instrI_field_instrI_method_instrI_unconditional_i32_instrI_unconditional_i8_instrI_conditional_i32_instrI_conditional_i8_instrI_string_instrI_switch_instrI_tok_instrI_sig_instrI_type_instrI_u16_u8_instr@DebugTypeProxyI_u16_u16_instr@DebugTypeProxyI_none_instr@DebugTypeProxyI_i64_instr@DebugTypeProxyI_i32_i32_instr@DebugTypeProxyI_i32_i8_instr@DebugTypeProxyI_r4_instr@DebugTypeProxyI_r8_instr@DebugTypeProxyI_field_instr@DebugTypeProxyI_method_instr@DebugTypeProxyI_unconditional_i32_instr@DebugTypeProxyI_unconditional_i8_instr@DebugTypeProxyI_conditional_i32_instr@DebugTypeProxyI_conditional_i8_instr@DebugTypeProxyI_string_instr@DebugTypeProxyI_switch_instr@DebugTypeProxyI_tok_instr@DebugTypeProxyI_sig_instr@DebugTypeProxyI_type_instr@DebugTypeProxymkStind@620mkStind@620-1mkLdind@621mkLdind@621-1instrs@624instrs@624-1instrs@625-2instrs@625-3instrs@626-4instrs@626-5instrs@627-6instrs@627-7instrs@628-8instrs@628-9instrs@629-10instrs@629-11instrs@630-12instrs@630-13instrs@631-14instrs@631-15instrs@632-16instrs@632-17instrs@633-18instrs@633-19instrs@634-20instrs@634-21instrs@635-22instrs@635-23instrs@655-24instrs@655-25instrs@656-26instrs@656-27instrs@657-28instrs@657-29instrs@658-30instrs@658-31instrs@659-32instrs@659-33instrs@660-34instrs@660-35instrs@661-36instrs@661-37instrs@662-39instrs@662-38instrs@662-40instrs@663-42instrs@663-41instrs@663-43instrs@664-44instrs@664-45instrs@665-46instrs@665-47instrs@666-48instrs@666-49instrs@667-50instrs@667-51instrs@668-52instrs@668-53instrs@669-54instrs@669-55instrs@670-56instrs@670-57instrs@671-58instrs@671-59instrs@672-61instrs@672-60instrs@672-62instrs@673-63instrs@673-64instrs@674-65instrs@674-66instrs@675-67instrs@675-68instrs@676-69instrs@676-70instrs@677-71instrs@677-72instrs@678-73instrs@678-74instrs@679-75instrs@679-76instrs@680-77instrs@680-78instrs@681-79instrs@681-80instrs@682-81instrs@682-82instrs@683-83instrs@683-84instrs@684-85instrs@684-86instrs@685-87instrs@685-88instrs@686-89instrs@686-90instrs@687-91instrs@687-92instrs@688-93instrs@688-94instrs@689-95instrs@689-96instrs@690-97instrs@690-98instrs@691-99instrs@691-100instrs@692-101instrs@692-102instrs@693-103instrs@693-104instrs@694-105instrs@694-106instrs@695-107instrs@695-108instrs@696-109instrs@696-110instrs@697-111instrs@697-112instrs@698-113instrs@698-114instrs@699-115instrs@699-116instrs@700-117instrs@700-118instrs@701-119instrs@701-120instrs@702-121instrs@702-122instrs@703-123instrs@703-124instrs@704-125instrs@704-126instrs@705-127instrs@705-128instrs@706-129instrs@706-130instrs@707-131instrs@707-132instrs@708-133instrs@708-134instrs@709-135instrs@709-136instrs@710-137instrs@710-138instrs@711-139instrs@711-140instrs@712-141instrs@712-142instrs@713-143instrs@713-144instrs@714-145instrs@714-146instrs@715-147instrs@715-148instrs@716-150instrs@716-149instrs@716-151instrs@717-153instrs@717-152instrs@717-154instrs@718-155instrs@718-156instrs@719-157instrs@719-158instrs@720-159instrs@720-160addInstr@729-1fillInstrs@743-1fillInstrs@743ImageChunkRowElementKindSimpleIndexSimpleIndex@DebugTypeProxyRowKindTypeDefAsTypIdxTypeRefAsTypIdxBlobAsMethodSigIdxBlobAsFieldSigIdxBlobAsPropSigIdxBlobAsLocalSigIdxMemberRefAsMspecIdxMethodSpecAsMspecIdxMemberRefAsFspecIdxCustomAttrIdxSecurityDeclIdxGenericParamsIdxmkCacheInt32@882mkCacheInt32@888-1mkCacheGeneric@905mkCacheGeneric@911-1ILModuleReaderVarArgMethodDataILReaderContextseekReadTypeRefRow@1193seekReadTypeDefRowUncached@1208seekReadInterfaceImplRowUncached@1254seekReadMemberRefRow@1262seekReadConstantRowUncached@1275seekReadCustomAttributeRow@1284seekReadCustomAttributeRow@1285-1seekReadFieldMarshalRowUncached@1296seekReadPermissionRow@1306seekReadEventRow@1353seekReadMethodSemanticsRowUncached@1386seekReadMethodImplRow@1395seekReadMethodImplRow@1396-1seekReadImplMapRow@1421seekReadExportedTypeRow@1486seekReadManifestResourceRow@1497seekReadGenericParamRow@1518seekReadGenericParamConstraintRow@1528seekReadMethodSpecRow@1536readNativeResources@1598dataEndPoints@1632-1dataEndPoints@1604look@1652-3look@1652-7look@1652-6look@1652-5look@1652-4seekReadModule@1678seekReadClassLayout@1752seekReadClassLayout@1752-1seekReadClassLayout@1752-2seekReadClassLayout@1752-3rest@1845seekReadTopTypeDefs@1896nestedIdxs@1904nestedIdxs@1904-1nestedIdxs@1904-2nestedIdxs@1904-3seekReadNestedTypeDefs@1905-1seekReadNestedTypeDefs@1903seekReadInterfaceImpls@1912seekReadInterfaceImpls@1913-1seekReadInterfaceImpls@1914-2seekReadInterfaceImpls@1916-3seekReadInterfaceImpls@1916-4pars@1925pars@1926-1pars@1927-2pars@1929-3seekReadGenericParamsUncached@1946seekReadGenericParamsUncached@1946-1seekReadGenericParamConstraintsUncached@1951seekReadGenericParamConstraintsUncached@1952-1seekReadGenericParamConstraintsUncached@1953-2seekReadGenericParamConstraintsUncached@1955-3seekReadGenericParamConstraintsUncached@1955-4enclIdx@1968enclIdx@1968-1enclIdx@1968-2enclIdx@1968-3seekReadField@2080seekReadField@2081-1seekReadField@2081-2seekReadField@2083-3rva@2087rva@2088-1rva@2088-2rva@2088-3seekReadField@2092-4seekReadField@2093-5seekReadField@2093-6seekReadField@2093-7seekReadFields@2100-1seekReadFields@2099seekReadMethods@2106-1seekReadMethods@2105sigptrGetTy@2138sigptrGetTy@2167-1sigptrGetTy@2169-2sigptrGetTy@2189-3sigptrGetVarArgTys@2199readBlobHeapAsPropertySigUncached@2268readBlobHeapAsLocalsSigUncached@2281seekReadMemberRefAsMethodDataUncached@2310seekReadMethodSpecAsMethodDataUncached@2330tidx@2359tidx@2360-1tidx@2361-2tidx@2366-3tidx@2389-4tidx@2390-5tidx@2391-6tidx@2395-7fmReader@2512-1fmReader@2512-2fmReader@2512-3fmReader@2512-4seekReadMethodImpls@2534-1seekReadMethodImpls@2533-2seekReadMethodImpls@2533-3seekReadMethodImpls@2533-4seekReadMethodImpls@2533-5seekReadMethodImpls@2532seekReadMultipleMethodSemantics@2554seekReadMultipleMethodSemantics@2553-1seekReadMultipleMethodSemantics@2546-2seekReadMultipleMethodSemantics@2547-3seekReadMultipleMethodSemantics@2548-4seekReadMultipleMethodSemantics@2550-5seekReadEvents@2584-1seekReadEvents@2584-2seekReadEvents@2584-3seekReadEvents@2584-4seekReadEvents@2594-5seekReadEvents@2583seekReadProperties@2625-1seekReadProperties@2625-2seekReadProperties@2625-3seekReadProperties@2625-4seekReadProperties@2634-5seekReadProperties@2624seekReadCustomAttrs@2642-1seekReadCustomAttrs@2642-2seekReadCustomAttrs@2643-3seekReadCustomAttrs@2645-4seekReadCustomAttrs@2640seekReadSecurityDecls@2665-1seekReadSecurityDecls@2666-2seekReadSecurityDecls@2667-3seekReadSecurityDecls@2669-4seekReadSecurityDecls@2663seekReadConstant@2682seekReadConstant@2683-1seekReadConstant@2684-2seekReadConstant@2684-3seekReadImplMap@2709-1seekReadImplMap@2710-2seekReadImplMap@2711-3seekReadImplMap@2713-4seekReadImplMap@2707rawToLabel@2764-1offsets@2978dests@2982lab2pc@2991raw2nextLab@3001seqpoints@3052ilvs@3061ilinfos@3065scopes@3072-1scopes@3076-3scopes@3076-2localPdbInfos2@3095seekReadMethodRVA@3143-1seekReadMethodRVA@3163-2sehMap@3179sehClauses@3182sehClauses@3210-1localPdbInfos2@3218-1seekReadMethodRVA@3017seekReadManifestResources@3326-2seekReadManifestResources@3318-1seekReadManifestResources@3317seekReadNestedExportedTypes@3341-1seekReadNestedExportedTypes@3340seekReadTopExportedTypes@3359docfun@3402genOpenBinaryReader@3421genOpenBinaryReader@3421-2genOpenBinaryReader@3421-1sectionHeaders@3503anyV2P@3540-1ilMetadataVersion@3594getNumRows@3741rowAddr@3962ctxt@3990ctxt@3991-1ctxt@3992-2ctxt@3993-3ctxt@3994-4ctxt@3995-5ctxt@3996-6ctxt@3997-7ctxt@3998-8ctxt@3999-9ctxt@4000-10ctxt@4001-11ctxt@4002-12ctxt@4003-13ctxt@4004-14ctxt@4005-15ctxt@4006-16ctxt@4007-17ctxt@4008-18ctxt@4009-19ctxt@4010-20ctxt@4011-21ctxt@4012-22ctxt@4013-23ctxt@4014-24ctxt@4015-25ctxt@4016-26genOpenBinaryReader@4073-4genOpenBinaryReader@4073-3OpenILModuleReader@4100OpenILModuleReader@4110-1ilModuleReaderCache@4117ilModuleReader@4139OpenILModuleReaderFromBytes@4151MemoryMapping$InternalCollectionsclo@61-10clo@65-11clo@77-12newdata@91clo@92-13newdata@95-1clo@104-14clo@105-15-ctor@159-10-ctor@162-11-ctor@165-12keyToIndex@207groupByFirst@226List`1referenceDistinct@231referenceDistinct@232-1Tainted|Null|_|@159Eq@161EqTainted@164GetHashCodeTainted@166$TaintedMapText@46messages@97u@124CreateAll@146Coerce@155ErrorLoggerWrappedErrorReportedErrorStopProcessingNumberedErrorErrorInternalErrorUserCompilerMessageLibraryUseOnlyDeprecatedExperimentalPossibleUnverifiableCodeUnresolvedReferenceNoRangeUnresolvedReferenceErrorUnresolvedPathReferenceNoRangeUnresolvedPathReferenceExiterQuitProcessExiter@123-1QuitProcessExiter@114BuildPhasePhasedErrorDebugDisplay@171-1DebugDisplay@171DiscardErrorsLogger@245AssertFalseErrorLogger@254CompileThreadStaticPushThreadBuildPhaseUntilUnwind@360chkErrorLogger@369PushErrorLoggerPhaseUntilUnwind@374errorLogger@413OperationResult`1OkResultErrorResultOkResult@DebugTypeProxyErrorResult@DebugTypeProxyReportWarnings@439IterateD@467WhileD@468loop@469-24TrackErrorsBuilderloop@486-26Iterate2D@493TryD@498RepeatWhileD@501AtLeastOneD@502-1AtLeastOneD@502ErrorLoggerExtensionsBuildPhaseSubcategoryRangeposFileIndexTableIndexToFile@136IndexToFile@137-1rangeToString@177-9ToString@177-8ToString@177-7ToString@177-6ToString@177-5ToString@177-4ToShortString@178-3ToShortString@178-2ToShortString@178-1ToShortString@178posOrder@188rangeOrder@190outputPos@192-1outputPos@192outputRange@193-4outputRange@193-3outputRange@193-2outputRange@193-1outputRange@193outputRange@193-5outputRange@193-6boutputPos@194-1boutputPos@194boutputRange@195-4boutputRange@195-3boutputRange@195-2boutputRange@195-1boutputRange@195boutputRange@195-5boutputRange@195-6stringOfPos@241-1stringOfPos@241stringOfRange@242-5stringOfRange@242-4stringOfRange@242-3PosLibGraphNode`2Graph`2edges@386nodes@387-ctor@389-7-ctor@391-8-ctor@391-9trace@396-1trace@397-2trace@397-3IterateCycles@399cache`1UnmanagedProcessExecutionOptionsAsyncUtilAsyncResult`1AsyncOkAsyncExceptionAsyncCanceledAsyncOk@DebugTypeProxyAsyncException@DebugTypeProxyAsyncCanceled@DebugTypeProxyCommit@546OperationCanceledExceptionAsyncResultCell`1postOrQueue@579-1postOrQueue@578-2postOrQueue@576-3System.ThreadingSynchronizationContextget_AsyncPrimitiveResult@594get_AsyncResult@614-1get_AsyncResult@613ZsetgroupBy@319FlatListSetremove@284ListSetunionFavourRight@239subtract@257isSubsetOf@260isSupersetOf@262-1isSupersetOf@262setify@280ListAssocIntMapCheckNameMapModuledomain@102NameSetModuleofList@98-7Pairorder@89-2FilenameBitsBinaryConstantsTableNameTypeDefOrRefTagHasConstantTagHasCustomAttributeTagHasFieldMarshalTagHasDeclSecurityTagMemberRefParentTagHasSemanticsTagMethodDefOrRefTagMemberForwardedTagImplementationTagCustomAttributeTypeTagResolutionScopeTagTypeOrMethodDefTagnoArgInstrs@556-1ILCmpInstrMap@773-1ILCmpInstrMap@773-2ILCmpInstrMap@772ILCmpInstrRevMap@789-1ILCmpInstrRevMap@789-2ILCmpInstrRevMap@788ILNativeTypeMap@899ILNativeTypeRevMap@931-1ILNativeTypeRevMap@931ILVariantTypeMap@934ILVariantTypeRevMap@976-1ILVariantTypeRevMap@976ILSecurityActionMap@979ILSecurityActionRevMap@999-1ILSecurityActionRevMap@999TableNames.$Microsoft.FSharp.Compiler.AbstractIL.InternalAsciiLexerkeywords@41t@77-3kwdInstrTable@78-1addTable@79-1kwdInstrTable@80-2kwdInstrTable@81-3kwdInstrTable@82-4kwdInstrTable@83-5kwdInstrTable@84-6kwdInstrTable@85-7kwdInstrTable@86-8kwdInstrTable@87-9kwdInstrTable@88-10kwdInstrTable@89-11kwdInstrTable@90-12kwdInstrTable@76AsciiParserSigArg_SentinelSigArg@DebugTypeProxy_Sentinel@DebugTypeProxyResolvedAtMethodSpecScope`1noMethodSpecScope@50resolveMethodSpecScopeThen@53VAL_SQSTRINGVAL_QSTRINGVAL_DOTTEDNAMEVAL_IDVAL_HEXBYTEINSTR_VALUETYPEINSTR_INT_TYPEINSTR_TYPEINSTR_TOKINSTR_STRINGINSTR_NONEINSTR_METHODINSTR_RINSTR_I8INSTR_I32_I32INSTR_IVAL_FLOAT64VAL_INT32_ELIPSESVAL_INT64VAL_SQSTRING@DebugTypeProxyVAL_QSTRING@DebugTypeProxyVAL_DOTTEDNAME@DebugTypeProxyVAL_ID@DebugTypeProxyVAL_HEXBYTE@DebugTypeProxyINSTR_VALUETYPE@DebugTypeProxyINSTR_INT_TYPE@DebugTypeProxyINSTR_TYPE@DebugTypeProxyINSTR_TOK@DebugTypeProxyINSTR_STRING@DebugTypeProxyINSTR_NONE@DebugTypeProxyINSTR_METHOD@DebugTypeProxyINSTR_R@DebugTypeProxyINSTR_I8@DebugTypeProxyINSTR_I32_I32@DebugTypeProxyINSTR_I@DebugTypeProxyVAL_FLOAT64@DebugTypeProxyVAL_INT32_ELIPSES@DebugTypeProxyVAL_INT64@DebugTypeProxy_fsyacc_reductions@645_fsyacc_reductions@654-1_fsyacc_reductions@663-2_fsyacc_reductions@674-3_fsyacc_reductions@685-4_fsyacc_reductions@696-5_fsyacc_reductions@708-6_fsyacc_reductions@719-7_fsyacc_reductions@731-8_fsyacc_reductions@741-9_fsyacc_reductions@763-10_fsyacc_reductions@774-11_fsyacc_reductions@786-12_fsyacc_reductions@799-13_fsyacc_reductions@811-14_fsyacc_reductions@823-15_fsyacc_reductions@835-16_fsyacc_reductions@858-17_fsyacc_reductions@870-18_fsyacc_reductions@883-19_fsyacc_reductions@895-20_fsyacc_reductions@907-21_fsyacc_reductions@917-22_fsyacc_reductions@231-25_fsyacc_reductions@231-24_fsyacc_reductions@928-23_fsyacc_reductions@939-26_fsyacc_reductions@950-27_fsyacc_reductions@241-29_fsyacc_reductions@962-28_fsyacc_reductions@975-30_fsyacc_reductions@985-31_fsyacc_reductions@996-32_fsyacc_reductions@1007-33_fsyacc_reductions@1018-34_fsyacc_reductions@1030-35_fsyacc_reductions@1044-36_fsyacc_reductions@1055-37_fsyacc_reductions@1066-38_fsyacc_reductions@277-40_fsyacc_reductions@1078-39_fsyacc_reductions@1092-41_fsyacc_reductions@289-43_fsyacc_reductions@1104-42_fsyacc_reductions@1116-44_fsyacc_reductions@1127-45_fsyacc_reductions@1138-46_fsyacc_reductions@1149-47_fsyacc_reductions@1160-48_fsyacc_reductions@1171-49_fsyacc_reductions@1181-50_fsyacc_reductions@1191-51_fsyacc_reductions@1201-52_fsyacc_reductions@1211-53_fsyacc_reductions@324-55_fsyacc_reductions@1221-54_fsyacc_reductions@327-57_fsyacc_reductions@1233-56_fsyacc_reductions@330-59_fsyacc_reductions@1245-58_fsyacc_reductions@333-61_fsyacc_reductions@1257-60_fsyacc_reductions@335-63_fsyacc_reductions@1268-62_fsyacc_reductions@337-65_fsyacc_reductions@1280-64_fsyacc_reductions@339-67_fsyacc_reductions@1291-66_fsyacc_reductions@1302-68_fsyacc_reductions@1312-69_fsyacc_reductions@1322-70_fsyacc_reductions@1332-71_fsyacc_reductions@1342-72_fsyacc_reductions@1352-73_fsyacc_reductions@1362-74_fsyacc_reductions@1372-75_fsyacc_reductions@1382-76_fsyacc_reductions@1392-77_fsyacc_reductions@1402-78_fsyacc_reductions@1412-79_fsyacc_reductions@1422-80_fsyacc_reductions@1432-81_fsyacc_reductions@1442-82_fsyacc_reductions@1452-83_fsyacc_reductions@1462-84_fsyacc_reductions@1472-85_fsyacc_reductions@1482-86_fsyacc_reductions@1492-87_fsyacc_reductions@1502-88_fsyacc_reductions@1513-89_fsyacc_reductions@1524-90_fsyacc_reductions@1536-91_fsyacc_reductions@1546-92_fsyacc_reductions@1557-93_fsyacc_reductions@1569-94_fsyacc_reductions@1580-95_fsyacc_reductions@1592-96_fsyacc_reductions@1603-97_fsyacc_reductions@1614-98_fsyacc_reductions@1625-99_fsyacc_reductions@1636-100_fsyacc_reductions@1647-101_fsyacc_reductions@1658-102_fsyacc_reductions@1669-103_fsyacc_reductions@434-105_fsyacc_reductions@1679-104_fsyacc_reductions@1691-106_fsyacc_reductions@443-108_fsyacc_reductions@1702-107_fsyacc_reductions@447-111_fsyacc_reductions@446-110_fsyacc_reductions@1714-109tables@1743tables@1732-1tables@1733-2SupportPEFileTypeIMAGE_FILE_HEADERIMAGE_SECTION_HEADERIMAGE_SYMBOLIMAGE_RELOCATIONIMAGE_RESOURCE_DIRECTORYIMAGE_RESOURCE_DIRECTORY_ENTRYIMAGE_RESOURCE_DATA_ENTRYResFormatHeaderResFormatNodeunlinkedResources@604cmdLineArgs@640-1cmdLineArgs@640attempts@655attempts@654-1linkNativeResources@698IMetaDataDispenserIMetadataImportIMetadataEmitISymUnmanagedDocumentWriterImageDebugDirectoryISymUnmanagedWriter2PdbWriterPdbDocumentWriteriddPdbReaderPdbDocumentPdbMethodPdbVariableICLRMetaHostICLRStrongNameICLRRuntimeInfoMorphsInstrMorphblock_bblock2code_typ2typ@172seh@180block_bblock2code@194block_bblock2code@202-1typ_tref2tref@223tspec_tref2tref@233callsig_scoref2scoref_tyvar2typ@249typs_scoref2scoref_tyvar2typ@251celem_typ2typ@294meth@301FSharpChoice`3elems@306namedArgs@307fdef_typ2typ@320alts_typ2typ@325alts_typ2typ@326-1varargs_typ2typ@333return_typ2typ@374param_typ2typ@375morphExpandILTypeDefs@384ilmbody_bblock2code_typ2typ_maxstack2maxstack@395mdef_typ2typ_ilmbody2ilmbody@412mdef_typ2typ_ilmbody2ilmbody@414-1mdef_typ2typ_ilmbody2ilmbody@416-2fdefs_typ2typ@418mdefs_typ2typ_ilmbody2ilmbody@420mimpl_typ2typ@438edef_typ2typ@445edef_typ2typ@446-1edef_typ2typ@447-2pdef_typ2typ@451pdef_typ2typ@452-1pdef_typ2typ@455-2pdefs_typ2typ@457edefs_typ2typ@458tdef_typ2typ_ilmbody2ilmbody_mdefs2mdefs@468tdef_typ2typ_ilmbody2ilmbody_mdefs2mdefs@473-1tdef_typ2typ_ilmbody2ilmbody_mdefs2mdefs@476-2tdefs_typ2typ_ilmbody2ilmbody_mdefs2mdefs@487manifest_typ2typ@494ftdefs@502morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs@508morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs@509-1filmbody@514-2filmbody@513-1filmbody@513-4filmbody@513-3fmdefs@518-1fmdefs@518module_bblock2code_typ2typ@522morphILInstrsAndILTypesInILModule@524morphILInstrsInILCode@526morphExpandILInstrsInILCode@527finstr@532-2finstr@532-3finstr@532-4finstr@531-1finstr@531fty@536morphILTypeRefsInILModuleMemoized@537morphILScopeRefsInILModuleMemoized@540ILAsciiWriterAsciiConstantsnoArgInstrs@32mk_stind@171mk_ldind@172NoArgInstrs@204-2NoArgInstrs@204-1NoArgInstrs@230-3NoArgInstrs@231-4NoArgInstrs@204Int64Instrs@236-1Int64Instrs@236Int32Instrs@239-1Int32Instrs@240-2Int32Instrs@239Int32Int32Instrs@243-1Int32Int32Instrs@243DoubleInstrs@246-1DoubleInstrs@247-2DoubleInstrs@246MethodSpecInstrs@250-1MethodSpecInstrs@250StringInstrs@253-1StringInstrs@253TokenInstrs@256-1TokenInstrs@256TypeInstrs@260-1TypeInstrs@261-2TypeInstrs@262-3TypeInstrs@263-4TypeInstrs@264-5TypeInstrs@265-6TypeInstrs@266-7TypeInstrs@267-8TypeInstrs@268-9TypeInstrs@260IntTypeInstrs@271-1IntTypeInstrs@272-2IntTypeInstrs@273-3IntTypeInstrs@274-4IntTypeInstrs@271ValueTypeInstrs@277-1ValueTypeInstrs@278-2ValueTypeInstrs@279-3ValueTypeInstrs@280-4ValueTypeInstrs@281-5ValueTypeInstrs@282-6ValueTypeInstrs@283-7ValueTypeInstrs@277IlxUnionFieldIlxUnionAlternativeIlxUnionHasHelpersIlxUnionRefIlxUnionSpecIlxClosureLambdasLambdas_forallLambdas_lambdaLambdas_returnLambdas_forall@DebugTypeProxyLambdas_lambda@DebugTypeProxyLambdas_return@DebugTypeProxyIlxClosureAppsApps_tyappApps_appApps_doneApps_tyapp@DebugTypeProxyApps_app@DebugTypeProxyApps_done@DebugTypeProxyIlxClosureFreeVarIlxClosureRefIlxClosureSpecIlxInstrEI_lddataEI_isdataEI_brisdataEI_castdataEI_stdataEI_datacaseEI_lddatatagEI_newdataEI_callfuncEI_lddata@DebugTypeProxyEI_isdata@DebugTypeProxyEI_brisdata@DebugTypeProxyEI_castdata@DebugTypeProxyEI_stdata@DebugTypeProxyEI_datacase@DebugTypeProxyEI_lddatatag@DebugTypeProxyEI_newdata@DebugTypeProxyEI_callfunc@DebugTypeProxydestinations@147-1destinations@147remapIlxLabels@164clo@169-6clo@170-7clo@171-8clo@172-9IlxUnionInfoIlxTypeDefKindClosureClosure@DebugTypeProxyILlazyMap@56LazyOrderedMultiMap`2t@173-2-ctor@174-3-ctor@172-2Add@179Filter@181PublicKeyPublicKeyTokenPublicKey@DebugTypeProxyPublicKeyToken@DebugTypeProxyAssemblyRefDataILAssemblyRefILModuleRefILScopeRef_Local_Local@DebugTypeProxyAssembly@DebugTypeProxyILArrayShapeILArrayShapeStaticsILArgConventionILThisConventionILCallingConvILCallingConvStaticsILBoxityILTypeRefILTypeSpecILTypeBoxedPtrByrefFunctionPointerModifiedBoxed@DebugTypeProxyPtr@DebugTypeProxyByref@DebugTypeProxyFunctionPointer@DebugTypeProxyModified@DebugTypeProxyIlxExtensionTypeILCallingSignatureget_BasicQualifiedName@706ILMethodRefILFieldRefILMethodSpecILFieldSpecILPlatformILSourceDocumentILSourceMarkerToString@876-3ToString@876-2ToString@876-1ToString@876ILAttribElemTypeRefType@DebugTypeProxyTypeRef@DebugTypeProxyILAttributeILAttributesCustomAttrsLazyCustomAttrsCustomAttrsLazy@DebugTypeProxyCustomAttrs@DebugTypeProxyILBasicTypeILTokenILMethodILType@DebugTypeProxyILMethod@DebugTypeProxyILConstI4I8R4R8I4@DebugTypeProxyI8@DebugTypeProxyR4@DebugTypeProxyR8@DebugTypeProxyILTailcallILAlignmentILVolatilityILReadonlyILComparisonInstrILInstrAI_convAI_conv_ovfAI_conv_ovf_unAI_ldcI_ldargI_ldargaI_ldindI_ldlocI_ldlocaI_stargI_stindI_stlocI_brI_jmpI_brcmpI_switchI_callI_callvirtI_callconstraintI_calliI_ldftnI_newobjI_leaveI_ldsfldI_ldfldI_ldsfldaI_ldfldaI_stsfldI_stfldI_ldstrI_isinstI_castclassI_ldtokenI_ldvirtftnI_cpobjI_initobjI_ldobjI_stobjI_boxI_unboxI_unbox_anyI_sizeofI_ldelemI_stelemI_ldelemaI_ldelem_anyI_stelem_anyI_newarrI_mkrefanyI_refanyvalI_seqpointI_cpblkI_initblkEI_ilzeroEI_ldlen_multiI_otherAI_conv@DebugTypeProxyAI_conv_ovf@DebugTypeProxyAI_conv_ovf_un@DebugTypeProxyAI_ldc@DebugTypeProxyI_ldarg@DebugTypeProxyI_ldarga@DebugTypeProxyI_ldind@DebugTypeProxyI_ldloc@DebugTypeProxyI_ldloca@DebugTypeProxyI_starg@DebugTypeProxyI_stind@DebugTypeProxyI_stloc@DebugTypeProxyI_br@DebugTypeProxyI_jmp@DebugTypeProxyI_brcmp@DebugTypeProxyI_switch@DebugTypeProxyI_call@DebugTypeProxyI_callvirt@DebugTypeProxyI_callconstraint@DebugTypeProxyI_calli@DebugTypeProxyI_ldftn@DebugTypeProxyI_newobj@DebugTypeProxyI_leave@DebugTypeProxyI_ldsfld@DebugTypeProxyI_ldfld@DebugTypeProxyI_ldsflda@DebugTypeProxyI_ldflda@DebugTypeProxyI_stsfld@DebugTypeProxyI_stfld@DebugTypeProxyI_ldstr@DebugTypeProxyI_isinst@DebugTypeProxyI_castclass@DebugTypeProxyI_ldtoken@DebugTypeProxyI_ldvirtftn@DebugTypeProxyI_cpobj@DebugTypeProxyI_initobj@DebugTypeProxyI_ldobj@DebugTypeProxyI_stobj@DebugTypeProxyI_box@DebugTypeProxyI_unbox@DebugTypeProxyI_unbox_any@DebugTypeProxyI_sizeof@DebugTypeProxyI_ldelem@DebugTypeProxyI_stelem@DebugTypeProxyI_ldelema@DebugTypeProxyI_ldelem_any@DebugTypeProxyI_stelem_any@DebugTypeProxyI_newarr@DebugTypeProxyI_mkrefany@DebugTypeProxyI_refanyval@DebugTypeProxyI_seqpoint@DebugTypeProxyI_cpblk@DebugTypeProxyI_initblk@DebugTypeProxyEI_ilzero@DebugTypeProxyEI_ldlen_multi@DebugTypeProxyI_other@DebugTypeProxyIlxExtensionInstrinternal_instr_extensionILInstrSetExtension`1mk@1122test@1123dest@1124RegisterInstructionSetExtension@1127RegisterInstructionSetExtension@1128-1RegisterInstructionSetExtension@1129-2RegisterInstructionSetExtension@1130-3ILDebugMappingILBasicBlockget_Fallthrough@1157ILCodeGroupBlockRestrictBlockTryBlockILBasicBlock@DebugTypeProxyGroupBlock@DebugTypeProxyRestrictBlock@DebugTypeProxyTryBlock@DebugTypeProxyILExceptionBlockFaultBlockFinallyBlockFilterCatchBlockFaultBlock@DebugTypeProxyFinallyBlock@DebugTypeProxyFilterCatchBlock@DebugTypeProxyILFilterBlockTypeFilterCodeFilterTypeFilter@DebugTypeProxyCodeFilter@DebugTypeProxyILLocalILMethodBodyILMemberAccessILFieldInitInt8UInt8Int8@DebugTypeProxyUInt8@DebugTypeProxyILNativeTypeCustomFixedSysStringFixedArraySafeArrayCustom@DebugTypeProxyFixedSysString@DebugTypeProxyFixedArray@DebugTypeProxySafeArray@DebugTypeProxyILNativeVariantVector@DebugTypeProxyILSecurityActionILPermissionILPermissionsSecurityDeclsSecurityDeclsLazySecurityDecls@DebugTypeProxySecurityDeclsLazy@DebugTypeProxyPInvokeCharBestFitPInvokeThrowOnUnmappableCharPInvokeCallingConventionPInvokeCharEncodingPInvokeMethodILParameterILReturnILOverridesSpecILMethodVirtualInfoMethodKindVirtualVirtual@DebugTypeProxyMethodBodyPInvokeIL@DebugTypeProxyPInvoke@DebugTypeProxyILLazyMethodBodyMethodCodeKindtypesOfILParamsRaw@1441typesOfILParamsList@1442ILGenericVarianceILGenericParameterDefILMethodDefILMethodDefsFindByNameAndArity@1539ILEventDefILEventDefsILPropertyDefILPropertyDefsILFieldDefILFieldDefsILMethodImplDefILMethodImplDefsget_AsList@1611ILTypeDefLayout_AutoExplicit_Auto@DebugTypeProxyExplicit@DebugTypeProxyILTypeDefLayoutInfoILTypeInitILDefaultPInvokeEncodingILTypeDefAccess_Public_PrivateNested_Public@DebugTypeProxy_Private@DebugTypeProxyNested@DebugTypeProxyILTypeDefKindOtherOther@DebugTypeProxyIlxExtensionTypeKindinternal_type_def_kind_extensionILTypeDefILTypeDefsSystem-Collections-Generic-IEnumerable-1-GetEnumerator@1699ILNestedExportedTypeILNestedExportedTypesILExportedTypeOrForwarderILExportedTypesAndForwardersget_AsList@1723-1get_AsList@1736-2ILResourceAccessILResourceLocationFileFile@DebugTypeProxyILResourceILResourcesILAssemblyLongevityILAssemblyManifestILModuleDefILTypeDefKindExtension`1mk@1902-1test@1903-1dest@1904-1destinationsOfInstr@2057instrIsTailcall@2065instrIsBasicBlockEnd@2073accEntriesOfCode@2082basicOutsideLabels@2093accLabelsOfCode@2110accLabelsOfSEH@2118mkGroupBlock@2189mkTryMultiFilterCatchBlock@2202new_generator@2215uniqueEntryOfCode@2226uniqueExitOfCode@2232joinCode@2259mkILFormalTypars@2288mkILFormalTyparsRaw@2289mkILFormalGenericArgsRaw@2292mkILFormalGenericArgs@2295mkRefForNestedILTypeDef@2304prev@2318addLazyTypeDefToTable@2327buildTable@2329-2buildTable@2329-1buildTable@2329mkILTypeDefs@2334mkILTypeDefsLazy@2335addILMethod@2350mkILMethods@2352mkILMethodsLazy@2353-1mkILMethodsLazy@2353filterILMethodDefs@2359-1filterILMethodDefs@2357ILGlobalsldargs@2513ldlocs@2517stlocs@2520ldi32s@2523rescopeILTypes@2869instILGenericArgsAux@2912instILCallSigAux@2915mkCallBaseConstructor@3003prependInstrsToMethod@3172cdef_cctorCode2CodeOrCreate@3179prependInstrsToClassCtor@3202ILLocalsAllocatormkILFieldsLazy@3238mkILEventsLazy@3242mkILPropertiesLazy@3246mkILExportedTypes@3251mkILExportedTypesLazy@3252-1mkILExportedTypesLazy@3252mkILNestedExportedTypes@3258mkILNestedExportedTypesLazy@3261-1mkILNestedExportedTypesLazy@3261mkILMethodImpls@3271mkILMethodImplsLazy@3272-1mkILMethodImplsLazy@3272mkILStorageCtorWithParamNames@3283mkILStorageCtorWithParamNames@3290-1addParamNames@3307destTypeDefsWithGlobalFunctionsFirst@3374ILExceptionClauseFinallyFaultFilterCatchTypeCatchFinally@DebugTypeProxyFault@DebugTypeProxyFilterCatch@DebugTypeProxyTypeCatch@DebugTypeProxyILExceptionSpecILLocalSpecstructspecSEHLOCALSEH@DebugTypeProxyLOCAL@DebugTypeProxycollect@3458-1BasicBlockStartsToCodeLabelsMapbbstartToCodeLabelMap@3474-1bbstartToCodeLabelMap@3472bbstartToCodeLabelMap@3478-2-ctor@3485-4-ctor@3486-5-ctor@3497-6remapLabels@3528-1remapLabels@3528remapLabels@3530-2CodeOffsetViewOfLabelledItemsclause_inside_lrange@3562clauses_inside_lrange@3566tryspec_inside_clause@3574locspec_inside_clause@3577tryspec_inside_tryspec@3581locspec_inside_tryspec@3585disjoint_clause_and_lrange@3591disjoint_clauses_and_lrange@3594disjoint_tryspec_and_clause@3601tryspec_disjoint_from_tryspec@3605extent_lrange@3628-1extent_list@3630-1extent_list2@3631-1extent_clause@3632stringOfRange@3641-1string_of_clause@3644string_of_locspec@3646-1clauseBlock@3671clauseBlock@3671-1tryCodeBlocks@3674tryHiddn@3676-1tryHiddn@3676tryBlock@3677blockForInnerTrySpec@3704blockForInnerTrySpec@3708-2blockForInnerTrySpec@3708-1newBlockRange@3725newBlock@3734newStarts@3742-1newStarts@3742maker@3685maker@3686-1blockForInnerTrySpec@3704-3blockForInnerTrySpec@3704-4newBlock@3770-1newBlock@3770-2buildOrder@3778doStructure'@3796-1doStructure'@3796consumeBBlockInstrs@3836-1inside@3883-1addBlock@3890-1addBlocks@3895-1overlapBlocks@3910computeCoveredBlocks@3907-1computeCoveredBlocks@3907coverageOfCodes@3924-3coverageOfCodes@3924-2coverageOfCodes@3921-1doStructure@3928specs1@3937specs2@3938string_of_tryspec@3947-2string_of_locspec@3951-3string_of_locspec@3951-2buildCodeFromInstructionArray@3964-3buildCodeFromInstructionArray@3963-4buildCodeFromInstructionArray@3957-2buildCodeFromInstructionArray@3926-1ILEnumInfocomputeILEnumInfo@4006computeILEnumInfo@4009-1formatILVersion@4201-3formatILVersion@4201-2formatILVersion@4201-1formatILVersion@4201encodeCustomAttrElemTypeForObject@4248decodeCustomAttrElemType@4272encodeCustomAttrPrimValue@4298encodeCustomAttrValue@4303encodeCustomAttrValue@4305-1encodeCustomAttrNamedArg@4310mkILCustomAttribMethRef@4318res@4383-2mkPermissionSet@4415-1mkPermissionSet@4410ILTypeSigParserParseType@4487scope@4516ILReferencesILReferencesAccumulatorrefs_of_genparams@4729refs_of_typs@4749refs_of_custom_attrs@4759refs_of_varargs@4760refs_of_il_block@4798refs_of_il_block@4806-1refs_of_ilmbody@4815refs_of_mdef@4827refs_of_mdefs@4835refs_of_event_def@4838refs_of_event_def@4841-1refs_of_event_def@4842-2refs_of_events@4845refs_of_property_def@4848refs_of_property_def@4849-1refs_of_properties@4854refs_of_fields@4860refs_of_method_impls@4862refs_of_tdef@4874refs_of_types@4884refs_of_exported_types@4889refs_of_resources@4901refs_of_modul@4906computeILRefs@4917computeILRefs@4918-1resolveILMethodRef@4978-1resolveILMethodRef@4975ILEventRefILPropertyRefCodeLabelsILListModuleSHA1chansha_instreamMSBuildResolverResolutionFailureResolvedFromPath@DebugTypeProxyResolvedFileResolutionResultsReplaceFrameworkVariables@70DeriveTargetFrameworkDirectories@94-1DeriveTargetFrameworkDirectories@94ForegroundedForegroundedMessageForegroundedErrorForegroundedWarningForegroundedMessage@DebugTypeProxyForegroundedError@DebugTypeProxyForegroundedWarning@DebugTypeProxylogmessage@144-1engine@175Microsoft.Build.FrameworkIBuildEngineexplicitIncludeDirs@197references@198ResolveCore@215ITaskItemsearchPaths@232-3searchPaths@232-2searchPaths@232-1searchPaths@232searchPaths@243-7searchPaths@243-6searchPaths@243-5searchPaths@243-4ResolveCore@262-1ResolveCore@273-2ResolveCore@279-3ResolveCore@280-4ResolveCore@281-5ResolveCore@282-6ResolveCore@283-7ResolveCore@284-8Resolve@320$ReferenceResolutionDiagnosticsdprintf@30dprintfn@33$BytesZsetModuleaddList@24addFlatList@25$ZsetZmapModulefirst@25fmap@37chooseL@43ofList@45-6ofFlatList@46keys@48values@49$ZmapIllegalFileNameCharcheckPathForIllegalChars@24.$Internal.UtilitiesLibraryEventually`1DoneNotYetDoneDone@DebugTypeProxyNotYetDone@DebugTypeProxyEventuallyBuilderCombine@684UniqueStampGenerator`1-ctor@706-1MemoizationTable`2UndefinedExceptionLazyWithContextFailureLazyWithContext`2NotLazy@769LayeredMap`2clo@1140-4LayeredMultiMap`2clo@1251-5ShimFileSystemFileSystem@1479MultiMapModuleexistsInRange@910-2range@913-2initBy@916-1NameMultiMapModuleexistsInRange@896-1range@899-1rangeReversingEachBucket@900chooseRange@902map@903-1initBy@905ofList@906-4ofList@906-3ofList@906-5range@830forall@832exists@833ofKeyedList@834layer@838layerAdditive@842union@848-1union@848union@847-2union@846-3subfold2@853suball2@855mapFold@858foldBackRange@860filterRange@862mapFilter@864map@866iter@868partition@874partition@874-1existsInRange@886tryFindInRange@889Tablest@810-1memoize@811EventuallyModulebox@595force@605loop@642-21runTimeShare@633-1bind@652fold@655-2fold@655-1catch@661delay@667tryFinally@671tryWith@678FlatListMapHashsetModulecreate@477-1fold@479t@481ofList@482-2Dictionarydict@468ofList@469-1sortWithOrder@178zip4@273unzip4@276order@294-1count@370iterSquared@400collectSquared@401mapSquared@402mapfoldSquared@403mapfoldSquared@403-1forallSquared@404mapiSquared@405-1mapiSquared@405existsSquared@406-1existsSquared@406FrontAndBackorder@110loop@127-12OrderorderBy@49orderOn@52FlatListModule$FlatListMapTreeModuletoList@1027ofList@1029MapIterator`2toSeq@1103-1IEnumeratorIEnumerator`1SetTreeModulesubset@268nextElemCont@377prevElemCont@388SetIterator`1toSeq@497copyToArray@564$TaggedCollectionsSystem-IComparable-CompareTo@1172$HashMultiMap-ctor@30System-Collections-Generic-IDictionary-2-get_Keys@144System-Collections-Generic-IDictionary-2-get_Values@145System-Collections-Generic-ICollection-1-CopyTo@164ResizeArrayModulecreate@25init@26concat@37sub@44sort@192sortBy@193mapi2@269zip@313$ResizearrayParseHelpersImplementationAssocTableReadAll@201IdxToIdxListTableReadAll@211-1ValueInfoexplicit@453shiftableTokens@456reducibleProductions@466reduceTokens@470$Prim-parsingTop@103GenericImplFragments$Prim-lexingFromFunction@151lexBuffer@159clo@241-2clo@241-3DiagnosticMessagebuildFunctionForOneArgPat@62capture1@69capture@82-4ResourceString`1resources@13System.ResourcesResourceManager$SrDisplayBreaksitemL@675itemL@688-1PrecedenceShowModestopShort@796-1res@836env@866res@870-1objL@799-1recdAtomicTupleL@887-3recdAtomicTupleL@887-2recdAtomicTupleL@887-1recdAtomicTupleL@888-6recdAtomicTupleL@888-5recdAtomicTupleL@888-4recdAtomicTupleL@888-7objL@799-2bracketIfL@890-1project@964project2@973-1rowL@975project1@976possibleKeyValueL@994-4possibleKeyValueL@994-3possibleKeyValueL@994-2possibleKeyValueL@997-7possibleKeyValueL@997-6possibleKeyValueL@997-5possibleKeyValueL@990-1itemLs@1000reprL@1010-1itemLs@1016-1reprL@1047-2IComparerreprL@1053-3itemL@903-6itemL@903-5itemL@903-4itemL@902-3project@911-2leafFormatter@1098squash_layout@1142output_layout@1146layout_to_string@1150ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxypvals@362pvals@368-1LayoutOpsjoin@154join1@155join2@156join3@157op_AtAt@168op_AtAtMinus@169op_AtAtMinusMinus@170commaListL@180semiListL@181spaceListL@182sepListL@183aboveListL@189unfoldL@215$Sformatget_Default@250.$Assemblyinfo.FSharp.Compilerdll$FSComp-cctor@17undefinedNameNamespace@105-1undefinedNameNamespace@105PrintfFormat`5undefinedNameNamespaceOrModule@108-1undefinedNameNamespaceOrModule@108undefinedNameFieldConstructorOrMember@111-1undefinedNameFieldConstructorOrMember@111undefinedNameValueConstructorNamespaceOrType@114-1undefinedNameValueConstructorNamespaceOrType@114undefinedNameValueOfConstructor@117-1undefinedNameValueOfConstructor@117undefinedNameValueNamespaceTypeOrModule@120-1undefinedNameValueNamespaceTypeOrModule@120undefinedNameConstructorModuleOrNamespace@123-1undefinedNameConstructorModuleOrNamespace@123undefinedNameType@126-1undefinedNameType@126undefinedNameRecordLabelOrNamespace@129-1undefinedNameRecordLabelOrNamespace@129undefinedNameRecordLabel@132-1undefinedNameRecordLabel@132undefinedNameTypeParameter@135-1undefinedNameTypeParameter@135undefinedNamePatternDiscriminator@138-1undefinedNamePatternDiscriminator@138buildUnexpectedTypeArgs@141-2buildUnexpectedTypeArgs@141-1buildUnexpectedTypeArgs@141buildInvalidWarningNumber@144-1buildInvalidWarningNumber@144buildInvalidVersionString@147-1buildInvalidVersionString@147buildInvalidVersionFile@150-1buildInvalidVersionFile@150buildProductName@153-1buildProductName@153buildProblemWithFilename@156-2buildProblemWithFilename@156-1buildProblemWithFilename@156buildInvalidSearchDirectory@168-1buildInvalidSearchDirectory@168buildSearchDirectoryNotFound@171-1buildSearchDirectoryNotFound@171buildInvalidFilename@174-1buildInvalidFilename@174buildInvalidAssemblyName@177-1buildInvalidAssemblyName@177buildInvalidPrivacy@180-1buildInvalidPrivacy@180buildMultipleReferencesNotAllowed@183-1buildMultipleReferencesNotAllowed@183buildRequiresCLI2@186-1buildRequiresCLI2@186buildMscorlibAndReferencedAssemblyMismatch@192-1buildMscorlibAndReferencedAssemblyMismatch@192buildCannotReadAssembly@195-1buildCannotReadAssembly@195buildMscorLibAndFSharpCoreMismatch@198-1buildMscorLibAndFSharpCoreMismatch@198buildImplicitModuleIsNotLegalIdentifier@204-2buildImplicitModuleIsNotLegalIdentifier@204-1buildImplicitModuleIsNotLegalIdentifier@204buildUnknownFileSuffix@213-1buildUnknownFileSuffix@213buildOptionRequiresParameter@216-1buildOptionRequiresParameter@216buildCouldNotFindSourceFile@219-1buildCouldNotFindSourceFile@219buildInvalidSourceFileExtension@222-1buildInvalidSourceFileExtension@222buildCouldNotResolveAssembly@225-1buildCouldNotResolveAssembly@225buildCouldNotResolveAssemblyRequiredByFile@228-2buildCouldNotResolveAssemblyRequiredByFile@228-1buildCouldNotResolveAssemblyRequiredByFile@228buildErrorOpeningBinaryFile@231-2buildErrorOpeningBinaryFile@231-1buildErrorOpeningBinaryFile@231buildDifferentVersionMustRecompile@234-1buildDifferentVersionMustRecompile@234buildSignatureAlreadySpecified@252-1buildSignatureAlreadySpecified@252buildImplementationAlreadyGivenDetail@255-1buildImplementationAlreadyGivenDetail@255buildImplementationAlreadyGiven@258-1buildImplementationAlreadyGiven@258buildSignatureWithoutImplementation@261-1buildSignatureWithoutImplementation@261buildArgInvalidInt@264-1buildArgInvalidInt@264buildArgInvalidFloat@267-1buildArgInvalidFloat@267buildUnrecognizedOption@270-1buildUnrecognizedOption@270pickleErrorReadingWritingMetadata@276-2pickleErrorReadingWritingMetadata@276-1pickleErrorReadingWritingMetadata@276tastTypeOrModuleNotConcrete@279-1tastTypeOrModuleNotConcrete@279tastTypeHasAssemblyCodeRepresentation@282-1tastTypeHasAssemblyCodeRepresentation@282tastNamespaceAndModuleWithSameNameInAssembly@285-1tastNamespaceAndModuleWithSameNameInAssembly@285tastTwoModulesWithSameNameInAssembly@288-1tastTwoModulesWithSameNameInAssembly@288tastDuplicateTypeDefinitionInAssembly@291-2tastDuplicateTypeDefinitionInAssembly@291-1tastDuplicateTypeDefinitionInAssembly@291tastConflictingModuleAndTypeDefinitionInAssembly@294-2tastConflictingModuleAndTypeDefinitionInAssembly@294-1tastConflictingModuleAndTypeDefinitionInAssembly@294tastRecursiveValuesMayNotAppearInConstructionOfType@324-1tastRecursiveValuesMayNotAppearInConstructionOfType@324tastRecursiveValuesMayNotBeAssignedToNonMutableField@327-2tastRecursiveValuesMayNotBeAssignedToNonMutableField@327-1tastRecursiveValuesMayNotBeAssignedToNonMutableField@327ValueNotContainedMutabilityAttributesDiffer@348-3ValueNotContainedMutabilityAttributesDiffer@348-2ValueNotContainedMutabilityAttributesDiffer@348-1ValueNotContainedMutabilityAttributesDiffer@348ValueNotContainedMutabilityNamesDiffer@351-3ValueNotContainedMutabilityNamesDiffer@351-2ValueNotContainedMutabilityNamesDiffer@351-1ValueNotContainedMutabilityNamesDiffer@351ValueNotContainedMutabilityCompiledNamesDiffer@354-3ValueNotContainedMutabilityCompiledNamesDiffer@354-2ValueNotContainedMutabilityCompiledNamesDiffer@354-1ValueNotContainedMutabilityCompiledNamesDiffer@354ValueNotContainedMutabilityDisplayNamesDiffer@357-3ValueNotContainedMutabilityDisplayNamesDiffer@357-2ValueNotContainedMutabilityDisplayNamesDiffer@357-1ValueNotContainedMutabilityDisplayNamesDiffer@357ValueNotContainedMutabilityAccessibilityMore@360-3ValueNotContainedMutabilityAccessibilityMore@360-2ValueNotContainedMutabilityAccessibilityMore@360-1ValueNotContainedMutabilityAccessibilityMore@360ValueNotContainedMutabilityInlineFlagsDiffer@363-3ValueNotContainedMutabilityInlineFlagsDiffer@363-2ValueNotContainedMutabilityInlineFlagsDiffer@363-1ValueNotContainedMutabilityInlineFlagsDiffer@363ValueNotContainedMutabilityLiteralConstantValuesDiffer@366-3ValueNotContainedMutabilityLiteralConstantValuesDiffer@366-2ValueNotContainedMutabilityLiteralConstantValuesDiffer@366-1ValueNotContainedMutabilityLiteralConstantValuesDiffer@366ValueNotContainedMutabilityOneIsTypeFunction@369-3ValueNotContainedMutabilityOneIsTypeFunction@369-2ValueNotContainedMutabilityOneIsTypeFunction@369-1ValueNotContainedMutabilityOneIsTypeFunction@369ValueNotContainedMutabilityParameterCountsDiffer@372-3ValueNotContainedMutabilityParameterCountsDiffer@372-2ValueNotContainedMutabilityParameterCountsDiffer@372-1ValueNotContainedMutabilityParameterCountsDiffer@372ValueNotContainedMutabilityTypesDiffer@375-3ValueNotContainedMutabilityTypesDiffer@375-2ValueNotContainedMutabilityTypesDiffer@375-1ValueNotContainedMutabilityTypesDiffer@375ValueNotContainedMutabilityExtensionsDiffer@378-3ValueNotContainedMutabilityExtensionsDiffer@378-2ValueNotContainedMutabilityExtensionsDiffer@378-1ValueNotContainedMutabilityExtensionsDiffer@378ValueNotContainedMutabilityArityNotInferred@381-3ValueNotContainedMutabilityArityNotInferred@381-2ValueNotContainedMutabilityArityNotInferred@381-1ValueNotContainedMutabilityArityNotInferred@381ValueNotContainedMutabilityGenericParametersDiffer@384-5ValueNotContainedMutabilityGenericParametersDiffer@384-4ValueNotContainedMutabilityGenericParametersDiffer@384-3ValueNotContainedMutabilityGenericParametersDiffer@384-2ValueNotContainedMutabilityGenericParametersDiffer@384-1ValueNotContainedMutabilityGenericParametersDiffer@384ValueNotContainedMutabilityGenericParametersAreDifferentKinds@387-3ValueNotContainedMutabilityGenericParametersAreDifferentKinds@387-2ValueNotContainedMutabilityGenericParametersAreDifferentKinds@387-1ValueNotContainedMutabilityGenericParametersAreDifferentKinds@387ValueNotContainedMutabilityAritiesDiffer@390-7ValueNotContainedMutabilityAritiesDiffer@390-6ValueNotContainedMutabilityAritiesDiffer@390-5ValueNotContainedMutabilityAritiesDiffer@390-4ValueNotContainedMutabilityAritiesDiffer@390-3ValueNotContainedMutabilityAritiesDiffer@390-2ValueNotContainedMutabilityAritiesDiffer@390-1ValueNotContainedMutabilityAritiesDiffer@390ValueNotContainedMutabilityDotNetNamesDiffer@393-3ValueNotContainedMutabilityDotNetNamesDiffer@393-2ValueNotContainedMutabilityDotNetNamesDiffer@393-1ValueNotContainedMutabilityDotNetNamesDiffer@393ValueNotContainedMutabilityStaticsDiffer@396-3ValueNotContainedMutabilityStaticsDiffer@396-2ValueNotContainedMutabilityStaticsDiffer@396-1ValueNotContainedMutabilityStaticsDiffer@396ValueNotContainedMutabilityVirtualsDiffer@399-3ValueNotContainedMutabilityVirtualsDiffer@399-2ValueNotContainedMutabilityVirtualsDiffer@399-1ValueNotContainedMutabilityVirtualsDiffer@399ValueNotContainedMutabilityAbstractsDiffer@402-3ValueNotContainedMutabilityAbstractsDiffer@402-2ValueNotContainedMutabilityAbstractsDiffer@402-1ValueNotContainedMutabilityAbstractsDiffer@402ValueNotContainedMutabilityFinalsDiffer@405-3ValueNotContainedMutabilityFinalsDiffer@405-2ValueNotContainedMutabilityFinalsDiffer@405-1ValueNotContainedMutabilityFinalsDiffer@405ValueNotContainedMutabilityOverridesDiffer@408-3ValueNotContainedMutabilityOverridesDiffer@408-2ValueNotContainedMutabilityOverridesDiffer@408-1ValueNotContainedMutabilityOverridesDiffer@408ValueNotContainedMutabilityOneIsConstructor@411-3ValueNotContainedMutabilityOneIsConstructor@411-2ValueNotContainedMutabilityOneIsConstructor@411-1ValueNotContainedMutabilityOneIsConstructor@411ValueNotContainedMutabilityStaticButInstance@414-3ValueNotContainedMutabilityStaticButInstance@414-2ValueNotContainedMutabilityStaticButInstance@414-1ValueNotContainedMutabilityStaticButInstance@414ValueNotContainedMutabilityInstanceButStatic@417-3ValueNotContainedMutabilityInstanceButStatic@417-2ValueNotContainedMutabilityInstanceButStatic@417-1ValueNotContainedMutabilityInstanceButStatic@417DefinitionsInSigAndImplNotCompatibleNamesDiffer@420-1DefinitionsInSigAndImplNotCompatibleNamesDiffer@420DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer@423-1DefinitionsInSigAndImplNotCompatibleParameterCountsDiffer@423DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer@426-1DefinitionsInSigAndImplNotCompatibleAccessibilityDiffer@426DefinitionsInSigAndImplNotCompatibleMissingInterface@429-2DefinitionsInSigAndImplNotCompatibleMissingInterface@429-1DefinitionsInSigAndImplNotCompatibleMissingInterface@429DefinitionsInSigAndImplNotCompatibleImplementationSaysNull@432-1DefinitionsInSigAndImplNotCompatibleImplementationSaysNull@432DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2@435-1DefinitionsInSigAndImplNotCompatibleImplementationSaysNull2@435DefinitionsInSigAndImplNotCompatibleSignatureSaysNull@438-1DefinitionsInSigAndImplNotCompatibleSignatureSaysNull@438DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2@441-1DefinitionsInSigAndImplNotCompatibleSignatureSaysNull2@441DefinitionsInSigAndImplNotCompatibleImplementationSealed@444-1DefinitionsInSigAndImplNotCompatibleImplementationSealed@444DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed@447-1DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed@447DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract@450-1DefinitionsInSigAndImplNotCompatibleImplementationIsAbstract@450DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract@453-1DefinitionsInSigAndImplNotCompatibleSignatureIsAbstract@453DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes@456-1DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes@456DefinitionsInSigAndImplNotCompatibleNumbersDiffer@459-2DefinitionsInSigAndImplNotCompatibleNumbersDiffer@459-1DefinitionsInSigAndImplNotCompatibleNumbersDiffer@459DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot@462-3DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot@462-2DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot@462-1DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot@462DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot@465-3DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot@465-2DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot@465-1DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot@465DefinitionsInSigAndImplNotCompatibleImplDefinesStruct@468-1DefinitionsInSigAndImplNotCompatibleImplDefinesStruct@468DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden@471-1DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden@471DefinitionsInSigAndImplNotCompatibleTypeIsHidden@474-1DefinitionsInSigAndImplNotCompatibleTypeIsHidden@474DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind@477-1DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind@477DefinitionsInSigAndImplNotCompatibleILDiffer@480-1DefinitionsInSigAndImplNotCompatibleILDiffer@480DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer@483-1DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer@483DefinitionsInSigAndImplNotCompatibleFieldWasPresent@486-2DefinitionsInSigAndImplNotCompatibleFieldWasPresent@486-1DefinitionsInSigAndImplNotCompatibleFieldWasPresent@486DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer@489-1DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer@489DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified@492-2DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified@492-1DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified@492DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig@495-2DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig@495-1DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig@495DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl@498-2DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl@498-1DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl@498DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig@501-2DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig@501-1DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig@501DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer@504-3DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer@504-2DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer@504-1DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer@504DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer@507-3DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer@507-2DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer@507-1DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer@507DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig@510-1DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig@510DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation@513-1DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation@513ModuleContainsConstructorButNamesDiffer@516-2ModuleContainsConstructorButNamesDiffer@516-1ModuleContainsConstructorButNamesDiffer@516ModuleContainsConstructorButDataFieldsDiffer@519-2ModuleContainsConstructorButDataFieldsDiffer@519-1ModuleContainsConstructorButDataFieldsDiffer@519ModuleContainsConstructorButTypesOfFieldsDiffer@522-2ModuleContainsConstructorButTypesOfFieldsDiffer@522-1ModuleContainsConstructorButTypesOfFieldsDiffer@522ModuleContainsConstructorButAccessibilityDiffers@525-2ModuleContainsConstructorButAccessibilityDiffers@525-1ModuleContainsConstructorButAccessibilityDiffers@525FieldNotContainedNamesDiffer@528-2FieldNotContainedNamesDiffer@528-1FieldNotContainedNamesDiffer@528FieldNotContainedAccessibilitiesDiffer@531-2FieldNotContainedAccessibilitiesDiffer@531-1FieldNotContainedAccessibilitiesDiffer@531FieldNotContainedStaticsDiffer@534-2FieldNotContainedStaticsDiffer@534-1FieldNotContainedStaticsDiffer@534FieldNotContainedMutablesDiffer@537-2FieldNotContainedMutablesDiffer@537-1FieldNotContainedMutablesDiffer@537FieldNotContainedLiteralsDiffer@540-2FieldNotContainedLiteralsDiffer@540-1FieldNotContainedLiteralsDiffer@540FieldNotContainedTypesDiffer@543-2FieldNotContainedTypesDiffer@543-1FieldNotContainedTypesDiffer@543typrelCannotResolveImplicitGenericInstantiation@546-2typrelCannotResolveImplicitGenericInstantiation@546-1typrelCannotResolveImplicitGenericInstantiation@546typrelCannotResolveAmbiguityInOverloadedOperator@549-1typrelCannotResolveAmbiguityInOverloadedOperator@549typrelSigImplNotCompatibleConstraintsDiffer@570-2typrelSigImplNotCompatibleConstraintsDiffer@570-1typrelSigImplNotCompatibleConstraintsDiffer@570typrelSigImplNotCompatibleConstraintsDifferRemove@573-2typrelSigImplNotCompatibleConstraintsDifferRemove@573-1typrelSigImplNotCompatibleConstraintsDifferRemove@573typrelTypeImplementsIComparableShouldOverrideObjectEquals@576-1typrelTypeImplementsIComparableShouldOverrideObjectEquals@576typrelTypeImplementsIComparableDefaultObjectEqualsProvided@579-1typrelTypeImplementsIComparableDefaultObjectEqualsProvided@579typrelExplicitImplementationOfGetHashCodeOrEquals@582-1typrelExplicitImplementationOfGetHashCodeOrEquals@582typrelExplicitImplementationOfGetHashCode@585-1typrelExplicitImplementationOfGetHashCode@585typrelExplicitImplementationOfEquals@588-1typrelExplicitImplementationOfEquals@588ExceptionDefsNotCompatibleHiddenBySignature@591-2ExceptionDefsNotCompatibleHiddenBySignature@591-1ExceptionDefsNotCompatibleHiddenBySignature@591ExceptionDefsNotCompatibleDotNetRepresentationsDiffer@594-2ExceptionDefsNotCompatibleDotNetRepresentationsDiffer@594-1ExceptionDefsNotCompatibleDotNetRepresentationsDiffer@594ExceptionDefsNotCompatibleAbbreviationHiddenBySignature@597-2ExceptionDefsNotCompatibleAbbreviationHiddenBySignature@597-1ExceptionDefsNotCompatibleAbbreviationHiddenBySignature@597ExceptionDefsNotCompatibleSignaturesDiffer@600-2ExceptionDefsNotCompatibleSignaturesDiffer@600-1ExceptionDefsNotCompatibleSignaturesDiffer@600ExceptionDefsNotCompatibleExceptionDeclarationsDiffer@603-2ExceptionDefsNotCompatibleExceptionDeclarationsDiffer@603-1ExceptionDefsNotCompatibleExceptionDeclarationsDiffer@603ExceptionDefsNotCompatibleFieldInSigButNotImpl@606-3ExceptionDefsNotCompatibleFieldInSigButNotImpl@606-2ExceptionDefsNotCompatibleFieldInSigButNotImpl@606-1ExceptionDefsNotCompatibleFieldInSigButNotImpl@606ExceptionDefsNotCompatibleFieldInImplButNotSig@609-3ExceptionDefsNotCompatibleFieldInImplButNotSig@609-2ExceptionDefsNotCompatibleFieldInImplButNotSig@609-1ExceptionDefsNotCompatibleFieldInImplButNotSig@609ExceptionDefsNotCompatibleFieldOrderDiffers@612-2ExceptionDefsNotCompatibleFieldOrderDiffers@612-1ExceptionDefsNotCompatibleFieldOrderDiffers@612typrelOverloadNotFound@621-2typrelOverloadNotFound@621-1typrelOverloadNotFound@621typrelOverrideWasAmbiguous@624-1typrelOverrideWasAmbiguous@624typrelMoreThenOneOverride@627-1typrelMoreThenOneOverride@627typrelMethodIsSealed@630-1typrelMethodIsSealed@630typrelOverrideImplementsMoreThenOneSlot@633-3typrelOverrideImplementsMoreThenOneSlot@633-2typrelOverrideImplementsMoreThenOneSlot@633-1typrelOverrideImplementsMoreThenOneSlot@633typrelNeedExplicitImplementation@639-1typrelNeedExplicitImplementation@639typrelNoImplementationGiven@645-1typrelNoImplementationGiven@645typrelNoImplementationGivenWithSuggestion@648-1typrelNoImplementationGivenWithSuggestion@648typrelMemberDoesNotHaveCorrectNumberOfArguments@651-2typrelMemberDoesNotHaveCorrectNumberOfArguments@651-1typrelMemberDoesNotHaveCorrectNumberOfArguments@651typrelMemberDoesNotHaveCorrectNumberOfTypeParameters@654-2typrelMemberDoesNotHaveCorrectNumberOfTypeParameters@654-1typrelMemberDoesNotHaveCorrectNumberOfTypeParameters@654typrelMemberDoesNotHaveCorrectKindsOfGenericParameters@657-2typrelMemberDoesNotHaveCorrectKindsOfGenericParameters@657-1typrelMemberDoesNotHaveCorrectKindsOfGenericParameters@657typrelMemberCannotImplement@660-3typrelMemberCannotImplement@660-2typrelMemberCannotImplement@660-1typrelMemberCannotImplement@660forFlagSetTwice@720-1forFlagSetTwice@720forDoesNotSupportZeroFlag@735-1forDoesNotSupportZeroFlag@735forFormatDoesntSupportPrecision@741-1forFormatDoesntSupportPrecision@741forDoesNotSupportPrefixFlag@753-2forDoesNotSupportPrefixFlag@753-1forDoesNotSupportPrefixFlag@753forBadFormatSpecifierGeneral@756-1forBadFormatSpecifierGeneral@756chkByrefUsedInInvalidWay@768-1chkByrefUsedInInvalidWay@768chkMutableUsedInInvalidWay@771-1chkMutableUsedInInvalidWay@771chkVariableUsedInInvalidWay@777-1chkVariableUsedInInvalidWay@777chkTypeLessAccessibleThanType@780-2chkTypeLessAccessibleThanType@780-1chkTypeLessAccessibleThanType@780chkNoByrefAtThisPoint@804-1chkNoByrefAtThisPoint@804chkNoAddressOfAtThisPoint@813-1chkNoAddressOfAtThisPoint@813chkNoAddressStaticFieldAtThisPoint@816-1chkNoAddressStaticFieldAtThisPoint@816chkNoAddressFieldAtThisPoint@819-1chkNoAddressFieldAtThisPoint@819chkAttrHasAllowMultiFalse@834-1chkAttrHasAllowMultiFalse@834chkMemberUsedInInvalidWay@837-3chkMemberUsedInInvalidWay@837-2chkMemberUsedInInvalidWay@837-1chkMemberUsedInInvalidWay@837chkPropertySameNameMethod@855-1chkPropertySameNameMethod@855chkGetterSetterDoNotMatchAbstract@858-1chkGetterSetterDoNotMatchAbstract@858chkPropertySameNameIndexer@861-1chkPropertySameNameIndexer@861chkDuplicateMethod@867-1chkDuplicateMethod@867chkDuplicateMethodWithSuffix@870-1chkDuplicateMethodWithSuffix@870chkDuplicateMethodCurried@873-1chkDuplicateMethodCurried@873chkDuplicateProperty@879-1chkDuplicateProperty@879chkDuplicatePropertyWithSuffix@882-1chkDuplicatePropertyWithSuffix@882chkDuplicateMethodInheritedType@885-1chkDuplicateMethodInheritedType@885chkDuplicateMethodInheritedTypeWithSuffix@888-1chkDuplicateMethodInheritedTypeWithSuffix@888chkMultipleGenericInterfaceInstantiations@891-2chkMultipleGenericInterfaceInstantiations@891-1chkMultipleGenericInterfaceInstantiations@891crefBoundVarUsedInSplice@900-1crefBoundVarUsedInSplice@900csTypeCannotBeResolvedAtCompileTime@951-1csTypeCannotBeResolvedAtCompileTime@951csIndexArgumentMismatch@963-2csIndexArgumentMismatch@963-1csIndexArgumentMismatch@963csExpectTypeWithOperatorButGivenFunction@966-1csExpectTypeWithOperatorButGivenFunction@966csExpectTypeWithOperatorButGivenTuple@969-1csExpectTypeWithOperatorButGivenTuple@969csTypesDoNotSupportOperator@972-2csTypesDoNotSupportOperator@972-1csTypesDoNotSupportOperator@972csTypeDoesNotSupportOperator@975-2csTypeDoesNotSupportOperator@975-1csTypeDoesNotSupportOperator@975csTypesDoNotSupportOperatorNullable@978-2csTypesDoNotSupportOperatorNullable@978-1csTypesDoNotSupportOperatorNullable@978csTypeDoesNotSupportOperatorNullable@981-2csTypeDoesNotSupportOperatorNullable@981-1csTypeDoesNotSupportOperatorNullable@981csTypeDoesNotSupportConversion@984-2csTypeDoesNotSupportConversion@984-1csTypeDoesNotSupportConversion@984csMethodFoundButIsStatic@987-3csMethodFoundButIsStatic@987-2csMethodFoundButIsStatic@987-1csMethodFoundButIsStatic@987csMethodFoundButIsNotStatic@990-3csMethodFoundButIsNotStatic@990-2csMethodFoundButIsNotStatic@990-1csMethodFoundButIsNotStatic@990csTypeDoesNotHaveNull@996-1csTypeDoesNotHaveNull@996csNullableTypeDoesNotHaveNull@999-1csNullableTypeDoesNotHaveNull@999csTypeDoesNotSupportComparison1@1002-1csTypeDoesNotSupportComparison1@1002csTypeDoesNotSupportComparison2@1005-1csTypeDoesNotSupportComparison2@1005csTypeDoesNotSupportComparison3@1008-1csTypeDoesNotSupportComparison3@1008csTypeDoesNotSupportEquality1@1011-1csTypeDoesNotSupportEquality1@1011csTypeDoesNotSupportEquality2@1014-1csTypeDoesNotSupportEquality2@1014csTypeDoesNotSupportEquality3@1017-1csTypeDoesNotSupportEquality3@1017csTypeIsNotEnumType@1020-1csTypeIsNotEnumType@1020csTypeHasNonStandardDelegateType@1023-1csTypeHasNonStandardDelegateType@1023csTypeIsNotDelegateType@1026-1csTypeIsNotDelegateType@1026csGenericConstructRequiresStructType@1032-1csGenericConstructRequiresStructType@1032csGenericConstructRequiresUnmanagedType@1035-1csGenericConstructRequiresUnmanagedType@1035csTypeNotCompatibleBecauseOfPrintf@1038-2csTypeNotCompatibleBecauseOfPrintf@1038-1csTypeNotCompatibleBecauseOfPrintf@1038csGenericConstructRequiresReferenceSemantics@1041-1csGenericConstructRequiresReferenceSemantics@1041csGenericConstructRequiresNonAbstract@1044-1csGenericConstructRequiresNonAbstract@1044csGenericConstructRequiresPublicDefaultConstructor@1047-1csGenericConstructRequiresPublicDefaultConstructor@1047csMemberIsNotStatic@1056-1csMemberIsNotStatic@1056csMemberIsNotInstance@1059-1csMemberIsNotInstance@1059csMemberIsNotAccessible@1071-2csMemberIsNotAccessible@1071-1csMemberIsNotAccessible@1071csMemberIsNotAccessible2@1074-2csMemberIsNotAccessible2@1074-1csMemberIsNotAccessible2@1074csMethodIsNotAStaticMethod@1077-1csMethodIsNotAStaticMethod@1077csMethodIsNotAnInstanceMethod@1080-1csMethodIsNotAnInstanceMethod@1080csMemberHasNoArgumentOrReturnProperty@1083-3csMemberHasNoArgumentOrReturnProperty@1083-2csMemberHasNoArgumentOrReturnProperty@1083-1csMemberHasNoArgumentOrReturnProperty@1083csRequiredSignatureIs@1086-1csRequiredSignatureIs@1086csMemberSignatureMismatch@1089-3csMemberSignatureMismatch@1089-2csMemberSignatureMismatch@1089-1csMemberSignatureMismatch@1089csMemberSignatureMismatch2@1092-3csMemberSignatureMismatch2@1092-2csMemberSignatureMismatch2@1092-1csMemberSignatureMismatch2@1092csMemberSignatureMismatch3@1095-4csMemberSignatureMismatch3@1095-3csMemberSignatureMismatch3@1095-2csMemberSignatureMismatch3@1095-1csMemberSignatureMismatch3@1095csMemberSignatureMismatch4@1098-4csMemberSignatureMismatch4@1098-3csMemberSignatureMismatch4@1098-2csMemberSignatureMismatch4@1098-1csMemberSignatureMismatch4@1098csMemberSignatureMismatchArityNamed@1101-5csMemberSignatureMismatchArityNamed@1101-4csMemberSignatureMismatchArityNamed@1101-3csMemberSignatureMismatchArityNamed@1101-2csMemberSignatureMismatchArityNamed@1101-1csMemberSignatureMismatchArityNamed@1101csMemberSignatureMismatchArity@1104-4csMemberSignatureMismatchArity@1104-3csMemberSignatureMismatchArity@1104-2csMemberSignatureMismatchArity@1104-1csMemberSignatureMismatchArity@1104csMemberSignatureMismatchArityType@1107-4csMemberSignatureMismatchArityType@1107-3csMemberSignatureMismatchArityType@1107-2csMemberSignatureMismatchArityType@1107-1csMemberSignatureMismatchArityType@1107csMemberNotAccessible@1110-4csMemberNotAccessible@1110-3csMemberNotAccessible@1110-2csMemberNotAccessible@1110-1csMemberNotAccessible@1110csIncorrectGenericInstantiation@1113-3csIncorrectGenericInstantiation@1113-2csIncorrectGenericInstantiation@1113-1csIncorrectGenericInstantiation@1113csMemberOverloadArityMismatch@1116-3csMemberOverloadArityMismatch@1116-2csMemberOverloadArityMismatch@1116-1csMemberOverloadArityMismatch@1116csNoMemberTakesTheseArguments@1119-3csNoMemberTakesTheseArguments@1119-2csNoMemberTakesTheseArguments@1119-1csNoMemberTakesTheseArguments@1119csNoMemberTakesTheseArguments2@1122-4csNoMemberTakesTheseArguments2@1122-3csNoMemberTakesTheseArguments2@1122-2csNoMemberTakesTheseArguments2@1122-1csNoMemberTakesTheseArguments2@1122csNoMemberTakesTheseArguments3@1125-4csNoMemberTakesTheseArguments3@1125-3csNoMemberTakesTheseArguments3@1125-2csNoMemberTakesTheseArguments3@1125-1csNoMemberTakesTheseArguments3@1125csMethodNotFound@1128-1csMethodNotFound@1128csNoOverloadsFound@1131-1csNoOverloadsFound@1131csMethodIsOverloaded@1134-1csMethodIsOverloaded@1134csCandidates@1137-1csCandidates@1137parsUnexpectedIdentifier@1308-1parsUnexpectedIdentifier@1308parsExpectedStatementAfterLet@1338-1parsExpectedStatementAfterLet@1338parsMismatchedQuote@1368-1parsMismatchedQuote@1368parsUnmatched@1371-1parsUnmatched@1371parsMismatchedQuotationName@1410-1parsMismatchedQuotationName@1410tcMethodNotAccessible@1428-1tcMethodNotAccessible@1428tcInvalidMethodNameForRelationalOperator@1479-2tcInvalidMethodNameForRelationalOperator@1479-1tcInvalidMethodNameForRelationalOperator@1479tcInvalidMethodNameForEquality@1482-2tcInvalidMethodNameForEquality@1482-1tcInvalidMethodNameForEquality@1482tcInvalidMemberName@1485-2tcInvalidMemberName@1485-1tcInvalidMemberName@1485tcInvalidMemberNameFixedTypes@1488-1tcInvalidMemberNameFixedTypes@1488tcInvalidOperatorDefinitionRelational@1491-1tcInvalidOperatorDefinitionRelational@1491tcInvalidOperatorDefinitionEquality@1494-1tcInvalidOperatorDefinitionEquality@1494tcInvalidOperatorDefinition@1497-1tcInvalidOperatorDefinition@1497tcInvalidIndexOperatorDefinition@1500-1tcInvalidIndexOperatorDefinition@1500tcExpectModuleOrNamespaceParent@1503-1tcExpectModuleOrNamespaceParent@1503tcImplementsIComparableExplicitly@1506-1tcImplementsIComparableExplicitly@1506tcImplementsGenericIComparableExplicitly@1509-1tcImplementsGenericIComparableExplicitly@1509tcImplementsIStructuralComparableExplicitly@1512-1tcImplementsIStructuralComparableExplicitly@1512tcLessGenericBecauseOfAnnotation@1527-2tcLessGenericBecauseOfAnnotation@1527-1tcLessGenericBecauseOfAnnotation@1527tcGenericParameterHasBeenConstrained@1533-1tcGenericParameterHasBeenConstrained@1533tcTypeParameterHasBeenConstrained@1536-1tcTypeParameterHasBeenConstrained@1536tcFieldAppearsTwiceInRecord@1551-1tcFieldAppearsTwiceInRecord@1551tcNotSufficientlyGenericBecauseOfScope@1557-1tcNotSufficientlyGenericBecauseOfScope@1557tcFunctionRequiresExplicitTypeArguments@1599-1tcFunctionRequiresExplicitTypeArguments@1599tcDoesNotAllowExplicitTypeArguments@1602-1tcDoesNotAllowExplicitTypeArguments@1602tcTypeParameterArityMismatch@1605-2tcTypeParameterArityMismatch@1605-1tcTypeParameterArityMismatch@1605tcFunctionRequiresExplicitLambda@1623-1tcFunctionRequiresExplicitLambda@1623tcTypeCannotBeEnumerated@1626-1tcTypeCannotBeEnumerated@1626tcRequireBuilderMethod@1671-1tcRequireBuilderMethod@1671tcUnexpectedSymbolInTypeExpression@1677-1tcUnexpectedSymbolInTypeExpression@1677tcNameNotBoundInPattern@1701-1tcNameNotBoundInPattern@1701tcUnionCaseExpectsTupledArguments@1725-1tcUnionCaseExpectsTupledArguments@1725tcFieldIsNotStatic@1728-1tcFieldIsNotStatic@1728tcExpressionCountMisMatch@1749-2tcExpressionCountMisMatch@1749-1tcExpressionCountMisMatch@1749tcUnableToParseFormatString@1770-1tcUnableToParseFormatString@1770tcNamedTypeRequired@1815-1tcNamedTypeRequired@1815tcSyntaxCanOnlyBeUsedToCreateObjectTypes@1830-1tcSyntaxCanOnlyBeUsedToCreateObjectTypes@1830tcConstructorRequiresCall@1833-1tcConstructorRequiresCall@1833tcUndefinedField@1836-2tcUndefinedField@1836-1tcUndefinedField@1836tcFieldRequiresAssignment@1839-2tcFieldRequiresAssignment@1839-1tcFieldRequiresAssignment@1839tcNoAbstractOrVirtualMemberFound@1848-1tcNoAbstractOrVirtualMemberFound@1848tcArgumentArityMismatch@1851-2tcArgumentArityMismatch@1851-1tcArgumentArityMismatch@1851tcArgumentArityMismatchOneOverload@1854-2tcArgumentArityMismatchOneOverload@1854-1tcArgumentArityMismatchOneOverload@1854tcNumericLiteralRequiresModule@1899-1tcNumericLiteralRequiresModule@1899tcInvalidUseOfTypeNameOrConstructorWithOverloads@1953-1tcInvalidUseOfTypeNameOrConstructorWithOverloads@1953tcPropertyIsNotStatic@1962-1tcPropertyIsNotStatic@1962tcPropertyIsNotReadable@1965-1tcPropertyIsNotReadable@1965tcPropertyIsStatic@1971-1tcPropertyIsStatic@1971tcPropertyCannotBeSet1@1974-1tcPropertyCannotBeSet1@1974tcEventIsStatic@1983-1tcEventIsStatic@1983tcEventIsNotStatic@1986-1tcEventIsNotStatic@1986tcNamedArgumentDidNotMatch@1989-1tcNamedArgumentDidNotMatch@1989tcAbstractPropertyMissingGetOrSet@2124-1tcAbstractPropertyMissingGetOrSet@2124tcNewMemberHidesAbstractMember@2136-1tcNewMemberHidesAbstractMember@2136tcNewMemberHidesAbstractMemberWithSuffix@2139-1tcNewMemberHidesAbstractMemberWithSuffix@2139tcTypeIsNotInterfaceType1@2208-1tcTypeIsNotInterfaceType1@2208tcModuleRequiresQualifiedAccess@2220-1tcModuleRequiresQualifiedAccess@2220tcOpenUsedWithPartiallyQualifiedPath@2223-1tcOpenUsedWithPartiallyQualifiedPath@2223tcMemberAndLocalClassBindingHaveSameName@2250-1tcMemberAndLocalClassBindingHaveSameName@2250tcImplementsIStructuralEquatableExplicitly@2283-1tcImplementsIStructuralEquatableExplicitly@2283tcImplementsIEquatableExplicitly@2286-1tcImplementsIEquatableExplicitly@2286tcDeclaredTypeParametersForExtensionDoNotMatchOriginal@2415-1tcDeclaredTypeParametersForExtensionDoNotMatchOriginal@2415tcModuleAbbreviationForNamespace@2436-1tcModuleAbbreviationForNamespace@2436tcTypeUsedInInvalidWay@2439-3tcTypeUsedInInvalidWay@2439-2tcTypeUsedInInvalidWay@2439-1tcTypeUsedInInvalidWay@2439tcMemberUsedInInvalidWay@2442-3tcMemberUsedInInvalidWay@2442-2tcMemberUsedInInvalidWay@2442-1tcMemberUsedInInvalidWay@2442tcAttributeAutoOpenWasIgnored@2445-2tcAttributeAutoOpenWasIgnored@2445-1tcAttributeAutoOpenWasIgnored@2445ilUndefinedValue@2448-1ilUndefinedValue@2448ilLabelNotFound@2451-1ilLabelNotFound@2451ilDynamicInvocationNotSupported@2457-1ilDynamicInvocationNotSupported@2457ilAddressOfValueHereIsInvalid@2463-1ilAddressOfValueHereIsInvalid@2463ilStaticMethodIsNotLambda@2487-1ilStaticMethodIsNotLambda@2487optsProblemWithCodepage@2517-2optsProblemWithCodepage@2517-1optsProblemWithCodepage@2517optsUnrecognizedTarget@2658-1optsUnrecognizedTarget@2658optsUnrecognizedDebugType@2661-1optsUnrecognizedDebugType@2661optsInvalidWarningLevel@2664-1optsInvalidWarningLevel@2664optsShortFormOf@2667-1optsShortFormOf@2667optsUnknownArgumentToTheTestSwitch@2700-1optsUnknownArgumentToTheTestSwitch@2700optsUnknownPlatform@2703-1optsUnknownPlatform@2703optsInternalNoDescription@2706-1optsInternalNoDescription@2706optsDCLONoDescription@2709-1optsDCLONoDescription@2709optsDCLODeprecatedSuggestAlternative@2712-2optsDCLODeprecatedSuggestAlternative@2712-1optsDCLODeprecatedSuggestAlternative@2712optsDCLOHtmlDoc@2715-1optsDCLOHtmlDoc@2715optsInvalidSubSystemVersion@2727-1optsInvalidSubSystemVersion@2727typeInfoOtherOverloads@2742-1typeInfoOtherOverloads@2742typeInfoFromFirst@2781-1typeInfoFromFirst@2781typeInfoFromNext@2784-1typeInfoFromNext@2784recursiveClassHierarchy@2805-1recursiveClassHierarchy@2805eventHasNonStandardType@2811-3eventHasNonStandardType@2811-2eventHasNonStandardType@2811-1eventHasNonStandardType@2811typeIsNotAccessible@2814-1typeIsNotAccessible@2814unionCasesAreNotAccessible@2817-1unionCasesAreNotAccessible@2817valueIsNotAccessible@2820-1valueIsNotAccessible@2820unionCaseIsNotAccessible@2823-1unionCaseIsNotAccessible@2823fieldIsNotAccessible@2826-1fieldIsNotAccessible@2826structOrClassFieldIsNotAccessible@2829-1structOrClassFieldIsNotAccessible@2829lexhlpIdentifierReserved@2853-1lexhlpIdentifierReserved@2853patcMissingVariable@2856-1patcMissingVariable@2856impTypeRequiredUnavailable@2862-2impTypeRequiredUnavailable@2862-1impTypeRequiredUnavailable@2862impReferencedTypeCouldNotBeFoundInAssembly@2865-2impReferencedTypeCouldNotBeFoundInAssembly@2865-1impReferencedTypeCouldNotBeFoundInAssembly@2865impReferenceToDllRequiredByAssembly@2871-3impReferenceToDllRequiredByAssembly@2871-2impReferenceToDllRequiredByAssembly@2871-1impReferenceToDllRequiredByAssembly@2871impImportedAssemblyUsesNotPublicType@2874-1impImportedAssemblyUsesNotPublicType@2874optValueMarkedInlineButIncomplete@2877-1optValueMarkedInlineButIncomplete@2877optValueMarkedInlineButWasNotBoundInTheOptEnv@2880-1optValueMarkedInlineButWasNotBoundInTheOptEnv@2880optLocalValueNotFoundDuringOptimization@2883-1optLocalValueNotFoundDuringOptimization@2883optFailedToInlineValue@2892-1optFailedToInlineValue@2892optRecursiveValValue@2895-1optRecursiveValValue@2895lexfltTokenIsOffsideOfContextStartedEarlier@2901-1lexfltTokenIsOffsideOfContextStartedEarlier@2901nrTypeInstantiationNeededToDisambiguateTypesWithSameName@2910-2nrTypeInstantiationNeededToDisambiguateTypesWithSameName@2910-1nrTypeInstantiationNeededToDisambiguateTypesWithSameName@2910nrTypeInstantiationIsMissingAndCouldNotBeInferred@2913-2nrTypeInstantiationIsMissingAndCouldNotBeInferred@2913-1nrTypeInstantiationIsMissingAndCouldNotBeInferred@2913nrTypeDoesNotContainSuchField@2925-2nrTypeDoesNotContainSuchField@2925-1nrTypeDoesNotContainSuchField@2925nrInvalidExpression@2931-1nrInvalidExpression@2931nrNoConstructorsAvailableForType@2934-1nrNoConstructorsAvailableForType@2934ilwriteErrorCreatingPdb@2937-1ilwriteErrorCreatingPdb@2937lexCharNotAllowedInOperatorNames@2943-1lexCharNotAllowedInOperatorNames@2943lexUnexpectedChar@2946-1lexUnexpectedChar@2946lexIdentEndInMarkReserved@2952-1lexIdentEndInMarkReserved@2952lexInvalidLineNumber@3015-1lexInvalidLineNumber@3015memberOperatorDefinitionWithNoArguments@3045-1memberOperatorDefinitionWithNoArguments@3045memberOperatorDefinitionWithNonPairArgument@3048-2memberOperatorDefinitionWithNonPairArgument@3048-1memberOperatorDefinitionWithNonPairArgument@3048memberOperatorDefinitionWithCurriedArguments@3051-1memberOperatorDefinitionWithCurriedArguments@3051tcStructuralComparisonNotSatisfied1@3057-2tcStructuralComparisonNotSatisfied1@3057-1tcStructuralComparisonNotSatisfied1@3057tcStructuralComparisonNotSatisfied2@3060-2tcStructuralComparisonNotSatisfied2@3060-1tcStructuralComparisonNotSatisfied2@3060tcNoComparisonNeeded1@3063-3tcNoComparisonNeeded1@3063-2tcNoComparisonNeeded1@3063-1tcNoComparisonNeeded1@3063tcNoComparisonNeeded2@3066-3tcNoComparisonNeeded2@3066-2tcNoComparisonNeeded2@3066-1tcNoComparisonNeeded2@3066tcNoEqualityNeeded1@3069-3tcNoEqualityNeeded1@3069-2tcNoEqualityNeeded1@3069-1tcNoEqualityNeeded1@3069tcNoEqualityNeeded2@3072-3tcNoEqualityNeeded2@3072-2tcNoEqualityNeeded2@3072-1tcNoEqualityNeeded2@3072tcStructuralEqualityNotSatisfied1@3075-2tcStructuralEqualityNotSatisfied1@3075-1tcStructuralEqualityNotSatisfied1@3075tcStructuralEqualityNotSatisfied2@3078-2tcStructuralEqualityNotSatisfied2@3078-1tcStructuralEqualityNotSatisfied2@3078chkUnusedValue@3084-1chkUnusedValue@3084chkUnusedThisVariable@3087-1chkUnusedThisVariable@3087tastUndefinedTyconItemField@3114-2tastUndefinedTyconItemField@3114-1tastUndefinedTyconItemField@3114tastUndefinedTyconItemUnionCase@3117-2tastUndefinedTyconItemUnionCase@3117-1tastUndefinedTyconItemUnionCase@3117tastUndefinedItemRefModuleNamespace@3120-3tastUndefinedItemRefModuleNamespace@3120-2tastUndefinedItemRefModuleNamespace@3120-1tastUndefinedItemRefModuleNamespace@3120tastUndefinedItemRefVal@3123-3tastUndefinedItemRefVal@3123-2tastUndefinedItemRefVal@3123-1tastUndefinedItemRefVal@3123tastUndefinedItemRefModuleNamespaceType@3126-3tastUndefinedItemRefModuleNamespaceType@3126-2tastUndefinedItemRefModuleNamespaceType@3126-1tastUndefinedItemRefModuleNamespaceType@3126tcParameterInferredByref@3132-1tcParameterInferredByref@3132tcNonUniformMemberUse@3135-1tcNonUniformMemberUse@3135tcAttribArgsDiffer@3141-1tcAttribArgsDiffer@3141tcCannotCallAbstractBaseMember@3144-1tcCannotCallAbstractBaseMember@3144mlCompatMessage@3150-1mlCompatMessage@3150ilFieldDoesNotHaveValidOffsetForStructureLayout@3153-2ilFieldDoesNotHaveValidOffsetForStructureLayout@3153-1ilFieldDoesNotHaveValidOffsetForStructureLayout@3153activePatternIdentIsNotFunctionTyped@3171-1activePatternIdentIsNotFunctionTyped@3171activePatternChoiceHasFreeTypars@3174-1activePatternChoiceHasFreeTypars@3174ilwriteMDBMemberMissing@3192-1ilwriteMDBMemberMissing@3192tcUnionCaseNameConflictsWithGeneratedType@3198-2tcUnionCaseNameConflictsWithGeneratedType@3198-1tcUnionCaseNameConflictsWithGeneratedType@3198buildExplicitCoreLibRequiresNoFramework@3207-1buildExplicitCoreLibRequiresNoFramework@3207buildExpectedFileAlongSideFSharpCore@3216-1buildExpectedFileAlongSideFSharpCore@3216buildUnexpectedFileNameCharacter@3222-2buildUnexpectedFileNameCharacter@3222-1buildUnexpectedFileNameCharacter@3222tcEnumTypeCannotBeEnumerated@3231-1tcEnumTypeCannotBeEnumerated@3231tcTypeTestLosesMeasures@3240-1tcTypeTestLosesMeasures@3240fscBadAssemblyVersion@3264-1fscBadAssemblyVersion@3264fscQuotationLiteralsStaticLinking@3270-1fscQuotationLiteralsStaticLinking@3270fscIgnoringMixedWhenLinking@3282-1fscIgnoringMixedWhenLinking@3282fscAssumeStaticLinkContainsNoDependencies@3285-1fscAssumeStaticLinkContainsNoDependencies@3285fscAssemblyNotFoundInDependencySet@3288-1fscAssemblyNotFoundInDependencySet@3288fscKeyFileCouldNotBeOpened@3291-1fscKeyFileCouldNotBeOpened@3291fscProblemWritingBinary@3294-2fscProblemWritingBinary@3294-1fscProblemWritingBinary@3294fscReferenceOnCommandLine@3312-1fscReferenceOnCommandLine@3312pathIsInvalid@3318-1pathIsInvalid@3318fscResxSourceFileDeprecated@3321-1fscResxSourceFileDeprecated@3321etIllegalCharactersInNamespaceName@3324-2etIllegalCharactersInNamespaceName@3324-1etIllegalCharactersInNamespaceName@3324etNullOrEmptyMemberName@3327-1etNullOrEmptyMemberName@3327etNullMember@3330-1etNullMember@3330etNullMemberDeclaringType@3333-2etNullMemberDeclaringType@3333-1etNullMemberDeclaringType@3333etNullMemberDeclaringTypeDifferentFromProvidedType@3336-3etNullMemberDeclaringTypeDifferentFromProvidedType@3336-2etNullMemberDeclaringTypeDifferentFromProvidedType@3336-1etNullMemberDeclaringTypeDifferentFromProvidedType@3336etHostingAssemblyFoundWithoutHosts@3339-2etHostingAssemblyFoundWithoutHosts@3339-1etHostingAssemblyFoundWithoutHosts@3339etEmptyNamespaceOfTypeNotAllowed@3342-2etEmptyNamespaceOfTypeNotAllowed@3342-1etEmptyNamespaceOfTypeNotAllowed@3342etEmptyNamespaceNotAllowed@3345-1etEmptyNamespaceNotAllowed@3345etMustNotBeGeneric@3348-1etMustNotBeGeneric@3348etMustNotBeAnArray@3351-1etMustNotBeAnArray@3351etMethodHasRequirements@3354-2etMethodHasRequirements@3354-1etMethodHasRequirements@3354etUnsupportedMemberKind@3357-2etUnsupportedMemberKind@3357-1etUnsupportedMemberKind@3357etPropertyCanReadButHasNoGetter@3360-2etPropertyCanReadButHasNoGetter@3360-1etPropertyCanReadButHasNoGetter@3360etPropertyHasGetterButNoCanRead@3363-2etPropertyHasGetterButNoCanRead@3363-1etPropertyHasGetterButNoCanRead@3363etPropertyCanWriteButHasNoSetter@3366-2etPropertyCanWriteButHasNoSetter@3366-1etPropertyCanWriteButHasNoSetter@3366etPropertyHasSetterButNoCanWrite@3369-2etPropertyHasSetterButNoCanWrite@3369-1etPropertyHasSetterButNoCanWrite@3369etUnexpectedExceptionFromProvidedTypeMember@3375-3etUnexpectedExceptionFromProvidedTypeMember@3375-2etUnexpectedExceptionFromProvidedTypeMember@3375-1etUnexpectedExceptionFromProvidedTypeMember@3375etUnsupportedConstantType@3378-1etUnsupportedConstantType@3378etUnsupportedProvidedExpression@3381-1etUnsupportedProvidedExpression@3381etProvidedTypeHasUnexpectedName@3384-2etProvidedTypeHasUnexpectedName@3384-1etProvidedTypeHasUnexpectedName@3384etEventNoAdd@3387-2etEventNoAdd@3387-1etEventNoAdd@3387etEventNoRemove@3390-2etEventNoRemove@3390-1etEventNoRemove@3390etProviderHasWrongDesignerAssembly@3393-3etProviderHasWrongDesignerAssembly@3393-2etProviderHasWrongDesignerAssembly@3393-1etProviderHasWrongDesignerAssembly@3393etProviderError@3399-2etProviderError@3399-1etProviderError@3399etIncorrectParameterExpression@3402-2etIncorrectParameterExpression@3402-1etIncorrectParameterExpression@3402etIncorrectProvidedMethod@3405-4etIncorrectProvidedMethod@3405-3etIncorrectProvidedMethod@3405-2etIncorrectProvidedMethod@3405-1etIncorrectProvidedMethod@3405etIncorrectProvidedConstructor@3408-2etIncorrectProvidedConstructor@3408-1etIncorrectProvidedConstructor@3408etDirectReferenceToGeneratedTypeNotAllowed@3411-1etDirectReferenceToGeneratedTypeNotAllowed@3411etProvidedTypeHasUnexpectedPath@3414-2etProvidedTypeHasUnexpectedPath@3414-1etProvidedTypeHasUnexpectedPath@3414etUnexpectedNullFromProvidedTypeMember@3417-2etUnexpectedNullFromProvidedTypeMember@3417-1etUnexpectedNullFromProvidedTypeMember@3417etUnexpectedExceptionFromProvidedMemberMember@3420-4etUnexpectedExceptionFromProvidedMemberMember@3420-3etUnexpectedExceptionFromProvidedMemberMember@3420-2etUnexpectedExceptionFromProvidedMemberMember@3420-1etUnexpectedExceptionFromProvidedMemberMember@3420etInvalidStaticArgument@3426-1etInvalidStaticArgument@3426etUnknownStaticArgumentKind@3432-2etUnknownStaticArgumentKind@3432-1etUnknownStaticArgumentKind@3432etProviderReturnedNull@3441-1etProviderReturnedNull@3441etTypeProviderConstructorException@3444-1etTypeProviderConstructorException@3444etNullProvidedExpression@3447-1etNullProvidedExpression@3447etProvidedAppliedTypeHadWrongName@3450-3etProvidedAppliedTypeHadWrongName@3450-2etProvidedAppliedTypeHadWrongName@3450-1etProvidedAppliedTypeHadWrongName@3450tcTypeTestLossy@3453-2tcTypeTestLossy@3453-1tcTypeTestLossy@3453tcTypeCastErased@3456-2tcTypeCastErased@3456-1tcTypeCastErased@3456tcTypeTestErased@3459-2tcTypeTestErased@3459-1tcTypeTestErased@3459etInvalidTypeProviderAssemblyName@3465-2etInvalidTypeProviderAssemblyName@3465-1etInvalidTypeProviderAssemblyName@3465tcInferredGenericTypeGivesRiseToInconsistency@3471-2tcInferredGenericTypeGivesRiseToInconsistency@3471-1tcInferredGenericTypeGivesRiseToInconsistency@3471tcInvalidTypeArgumentCount@3474-2tcInvalidTypeArgumentCount@3474-1tcInvalidTypeArgumentCount@3474tcCannotOverrideSealedMethod@3477-1tcCannotOverrideSealedMethod@3477etProviderErrorWithContext@3480-4etProviderErrorWithContext@3480-3etProviderErrorWithContext@3480-2etProviderErrorWithContext@3480-1etProviderErrorWithContext@3480etProvidedTypeWithNameException@3483-2etProvidedTypeWithNameException@3483-1etProvidedTypeWithNameException@3483etProvidedTypeWithNullOrEmptyName@3486-1etProvidedTypeWithNullOrEmptyName@3486etIllegalCharactersInTypeName@3489-2etIllegalCharactersInTypeName@3489-1etIllegalCharactersInTypeName@3489tcJoinMustUseSimplePattern@3492-1tcJoinMustUseSimplePattern@3492tcMissingCustomOperation@3495-1tcMissingCustomOperation@3495etStaticParameterRequiresAValue@3501-4etStaticParameterRequiresAValue@3501-3etStaticParameterRequiresAValue@3501-2etStaticParameterRequiresAValue@3501-1etStaticParameterRequiresAValue@3501etNoStaticParameterWithName@3504-1etNoStaticParameterWithName@3504etStaticParameterAlreadyHasValue@3507-1etStaticParameterAlreadyHasValue@3507etMultipleStaticParameterWithName@3510-1etMultipleStaticParameterWithName@3510tcCustomOperationMayNotBeOverloaded@3519-1tcCustomOperationMayNotBeOverloaded@3519etProvidedTypeReferenceMissingArgument@3534-1etProvidedTypeReferenceMissingArgument@3534etProvidedTypeReferenceInvalidText@3537-1etProvidedTypeReferenceInvalidText@3537tcCustomOperationNotUsedCorrectly@3540-1tcCustomOperationNotUsedCorrectly@3540tcCustomOperationNotUsedCorrectly2@3543-2tcCustomOperationNotUsedCorrectly2@3543-1tcCustomOperationNotUsedCorrectly2@3543customOperationTextLikeJoin@3546-3customOperationTextLikeJoin@3546-2customOperationTextLikeJoin@3546-1customOperationTextLikeJoin@3546customOperationTextLikeGroupJoin@3549-3customOperationTextLikeGroupJoin@3549-2customOperationTextLikeGroupJoin@3549-1customOperationTextLikeGroupJoin@3549customOperationTextLikeZip@3552-1customOperationTextLikeZip@3552tcBinaryOperatorRequiresVariable@3555-2tcBinaryOperatorRequiresVariable@3555-1tcBinaryOperatorRequiresVariable@3555tcOperatorIncorrectSyntax@3558-2tcOperatorIncorrectSyntax@3558-1tcOperatorIncorrectSyntax@3558tcBinaryOperatorRequiresBody@3561-2tcBinaryOperatorRequiresBody@3561-1tcBinaryOperatorRequiresBody@3561tcCustomOperationHasIncorrectArgCount@3564-3tcCustomOperationHasIncorrectArgCount@3564-2tcCustomOperationHasIncorrectArgCount@3564-1tcCustomOperationHasIncorrectArgCount@3564tcInvalidRelationInJoin@3639-1tcInvalidRelationInJoin@3639impInvalidNumberOfGenericArguments@3645-3impInvalidNumberOfGenericArguments@3645-2impInvalidNumberOfGenericArguments@3645-1impInvalidNumberOfGenericArguments@3645impInvalidMeasureArgument1@3648-2impInvalidMeasureArgument1@3648-1impInvalidMeasureArgument1@3648impInvalidMeasureArgument2@3651-1impInvalidMeasureArgument2@3651etPropertyNeedsCanWriteOrCanRead@3654-2etPropertyNeedsCanWriteOrCanRead@3654-1etPropertyNeedsCanWriteOrCanRead@3654tcOperatorDoesntAcceptInto@3660-1tcOperatorDoesntAcceptInto@3660tcCustomOperationInvalid@3663-1tcCustomOperationInvalid@3663chkNoByrefsOfByrefs@3678-1chkNoByrefsOfByrefs@3678etTypeProviderNotApproved@3681-1etTypeProviderNotApproved@3681etTooManyStaticParameters@3714-3etTooManyStaticParameters@3714-2etTooManyStaticParameters@3714-1etTooManyStaticParameters@3714infosInvalidProvidedLiteralValue@3717-1infosInvalidProvidedLiteralValue@3717etErasedTypeUsedInGeneration@3726-2etErasedTypeUsedInGeneration@3726-1etErasedTypeUsedInGeneration@3726nicePrintOtherOverloadsN@3741-1nicePrintOtherOverloadsN@3741parsUnfinishedExpression@3747-1parsUnfinishedExpression@3747buildProblemReadingAssembly@3759-2buildProblemReadingAssembly@3759-1buildProblemReadingAssembly@3759memberOperatorDefinitionWithNonTripleArgument@3777-2memberOperatorDefinitionWithNonTripleArgument@3777-1memberOperatorDefinitionWithNonTripleArgument@3777cannotResolveNullableOperators@3780-1cannotResolveNullableOperators@3780tcOperatorRequiresIn@3783-2tcOperatorRequiresIn@3783-1tcOperatorRequiresIn@3783chkGetterAndSetterHaveSamePropertyType@3798-3chkGetterAndSetterHaveSamePropertyType@3798-2chkGetterAndSetterHaveSamePropertyType@3798-1chkGetterAndSetterHaveSamePropertyType@3798tcRuntimeSuppliedMethodCannotBeUsedInUserCode@3801-1tcRuntimeSuppliedMethodCannotBeUsedInUserCode@3801clo@48clo@55-1capture@68-1capture@71-2T624133_488Bytes@T622862_1422Bytes@T622150_318Bytes@T622146_2052Bytes@T622143_71492Bytes@T622141_3520Bytes@T622139_13816Bytes@T622137_624Bytes@T622135_26060Bytes@T622005_32Bytes@T622003_22Bytes@T622001_595Bytes@T621997_583Bytes@T621995_571Bytes@T621993_559Bytes@T621990_1Bytes@T621987_12Bytes@T621984_14Bytes@T621978_4Bytes@T621976_8Bytes@T621974_128Bytes@T621970_48Bytes@T621968_32Bytes@T621930_32Bytes@T621803_274Bytes@T621665_830Bytes@T621661_192Bytes@T621658_2208Bytes@T621656_284Bytes@T621654_648Bytes@T621652_64Bytes@T621650_628Bytes@T621583_2Bytes@T621469_1Bytes@T621467_32Bytes@FSharp.CompilerFSharpInterfaceDataVersionAttribute.ctorAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.CompilerServicesInternalsVisibleToAttributeDependencyAttributeLoadHintSystem.DiagnosticsDebuggableAttributeDebuggingModesSwallowResourceTextresourcesfunTyCswallowResourceTextinit@14IntrinsicFunctionsLanguagePrimitivesFailStaticInitget_SwallowResourceTextset_SwallowResourceTextbInvokeFastundefinedNameNamespacea0undefinedNameNamespaceOrModuleundefinedNameFieldConstructorOrMemberundefinedNameValueConstructorNamespaceOrTypeundefinedNameValueOfConstructorundefinedNameValueNamespaceTypeOrModuleundefinedNameConstructorModuleOrNamespaceundefinedNameTypeundefinedNameRecordLabelOrNamespaceundefinedNameRecordLabelundefinedNameTypeParameterundefinedNamePatternDiscriminatorbuildUnexpectedTypeArgsa1buildInvalidWarningNumberbuildInvalidVersionStringbuildInvalidVersionFilebuildProductNamebuildProblemWithFilenamePrintfFormat`4buildNoInputsSpecifiedbuildMismatchOutputExtensionbuildPdbRequiresDebugbuildInvalidSearchDirectorybuildSearchDirectoryNotFoundbuildInvalidFilenamebuildInvalidAssemblyNamebuildInvalidPrivacybuildMultipleReferencesNotAllowedbuildRequiresCLI2buildCouldNotReadVersionInfoFromMscorlibbuildMscorlibAndReferencedAssemblyMismatchbuildCannotReadAssemblybuildMscorLibAndFSharpCoreMismatchbuildAssemblyResolutionFailedbuildImplicitModuleIsNotLegalIdentifierbuildMultiFileRequiresNamespaceOrModulebuildMultipleToplevelModulesbuildUnknownFileSuffixbuildOptionRequiresParameterbuildCouldNotFindSourceFilebuildInvalidSourceFileExtensionbuildCouldNotResolveAssemblybuildCouldNotResolveAssemblyRequiredByFilebuildErrorOpeningBinaryFilebuildDifferentVersionMustRecompilebuildInvalidHashIDirectivebuildInvalidHashrDirectivebuildInvalidHashloadDirectivebuildInvalidHashtimeDirectivebuildDirectivesInModulesAreIgnoredbuildSignatureAlreadySpecifiedbuildImplementationAlreadyGivenDetailbuildImplementationAlreadyGivenbuildSignatureWithoutImplementationbuildArgInvalidIntbuildArgInvalidFloatbuildUnrecognizedOptionbuildInvalidModuleOrNamespaceNamepickleErrorReadingWritingMetadatatastTypeOrModuleNotConcretetastTypeHasAssemblyCodeRepresentationtastNamespaceAndModuleWithSameNameInAssemblytastTwoModulesWithSameNameInAssemblytastDuplicateTypeDefinitionInAssemblytastConflictingModuleAndTypeDefinitionInAssemblytastInvalidMemberSignaturetastValueDoesNotHaveSetterTypetastInvalidFormForPropertyGettertastInvalidFormForPropertySettertastUnexpectedByReftastValueMustBeLocalAndMutabletastInvalidMutationOfConstanttastValueHasBeenCopiedtastRecursiveValuesMayNotBeInConstructionOfTupletastRecursiveValuesMayNotAppearInConstructionOfTypetastRecursiveValuesMayNotBeAssignedToNonMutableFieldtastUnexpectedDecodeOfAutoOpenAttributetastUnexpectedDecodeOfInternalsVisibleToAttributetastUnexpectedDecodeOfInterfaceDataVersionAttributetastActivePatternsLimitedToSeventastConstantCannotBeCustomAttributetastNotAConstantExpressionValueNotContainedMutabilityAttributesDiffera2ValueNotContainedMutabilityNamesDifferValueNotContainedMutabilityCompiledNamesDifferValueNotContainedMutabilityDisplayNamesDifferValueNotContainedMutabilityAccessibilityMoreValueNotContainedMutabilityInlineFlagsDifferValueNotContainedMutabilityLiteralConstantValuesDifferValueNotContainedMutabilityOneIsTypeFunctionValueNotContainedMutabilityParameterCountsDifferValueNotContainedMutabilityTypesDifferValueNotContainedMutabilityExtensionsDifferValueNotContainedMutabilityArityNotInferredInvokeValueNotContainedMutabilityGenericParametersDiffera3a4ValueNotContainedMutabilityGenericParametersAreDifferentKindsValueNotContainedMutabilityAritiesDiffera5a6ValueNotContainedMutabilityDotNetNamesDifferValueNotContainedMutabilityStaticsDifferValueNotContainedMutabilityVirtualsDifferValueNotContainedMutabilityAbstractsDifferValueNotContainedMutabilityFinalsDifferValueNotContainedMutabilityOverridesDifferValueNotContainedMutabilityOneIsConstructorValueNotContainedMutabilityStaticButInstanceValueNotContainedMutabilityInstanceButStaticDefinitionsInSigAndImplNotCompatibleNamesDifferDefinitionsInSigAndImplNotCompatibleParameterCountsDifferDefinitionsInSigAndImplNotCompatibleAccessibilityDifferDefinitionsInSigAndImplNotCompatibleMissingInterfaceDefinitionsInSigAndImplNotCompatibleImplementationSaysNullDefinitionsInSigAndImplNotCompatibleImplementationSaysNull2DefinitionsInSigAndImplNotCompatibleSignatureSaysNullDefinitionsInSigAndImplNotCompatibleSignatureSaysNull2DefinitionsInSigAndImplNotCompatibleImplementationSealedDefinitionsInSigAndImplNotCompatibleImplementationIsNotSealedDefinitionsInSigAndImplNotCompatibleImplementationIsAbstractDefinitionsInSigAndImplNotCompatibleSignatureIsAbstractDefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypesDefinitionsInSigAndImplNotCompatibleNumbersDifferDefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNotDefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNotDefinitionsInSigAndImplNotCompatibleImplDefinesStructDefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHiddenDefinitionsInSigAndImplNotCompatibleTypeIsHiddenDefinitionsInSigAndImplNotCompatibleTypeIsDifferentKindDefinitionsInSigAndImplNotCompatibleILDifferDefinitionsInSigAndImplNotCompatibleRepresentationsDifferDefinitionsInSigAndImplNotCompatibleFieldWasPresentDefinitionsInSigAndImplNotCompatibleFieldOrderDifferDefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecifiedDefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSigDefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImplDefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSigDefinitionsInSigAndImplNotCompatibleSignatureDeclaresDifferDefinitionsInSigAndImplNotCompatibleAbbreviationsDifferDefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySigDefinitionsInSigAndImplNotCompatibleSigHasAbbreviationModuleContainsConstructorButNamesDifferModuleContainsConstructorButDataFieldsDifferModuleContainsConstructorButTypesOfFieldsDifferModuleContainsConstructorButAccessibilityDiffersFieldNotContainedNamesDifferFieldNotContainedAccessibilitiesDifferFieldNotContainedStaticsDifferFieldNotContainedMutablesDifferFieldNotContainedLiteralsDifferFieldNotContainedTypesDiffertyprelCannotResolveImplicitGenericInstantiationtyprelCannotResolveAmbiguityInOverloadedOperatortyprelCannotResolveAmbiguityInPrintftyprelCannotResolveAmbiguityInEnumtyprelCannotResolveAmbiguityInDelegatetyprelInvalidValuetyprelSigImplNotCompatibleParamCountsDiffertyprelSigImplNotCompatibleCompileTimeRequirementsDiffertyprelSigImplNotCompatibleConstraintsDiffertyprelSigImplNotCompatibleConstraintsDifferRemovetyprelTypeImplementsIComparableShouldOverrideObjectEqualstyprelTypeImplementsIComparableDefaultObjectEqualsProvidedtyprelExplicitImplementationOfGetHashCodeOrEqualstyprelExplicitImplementationOfGetHashCodetyprelExplicitImplementationOfEqualsExceptionDefsNotCompatibleHiddenBySignatureExceptionDefsNotCompatibleDotNetRepresentationsDifferExceptionDefsNotCompatibleAbbreviationHiddenBySignatureExceptionDefsNotCompatibleSignaturesDifferExceptionDefsNotCompatibleExceptionDeclarationsDifferExceptionDefsNotCompatibleFieldInSigButNotImplExceptionDefsNotCompatibleFieldInImplButNotSigExceptionDefsNotCompatibleFieldOrderDifferstyprelModuleNamespaceAttributesDifferInSigAndImpltyprelMethodIsOverconstrainedtyprelOverloadNotFoundtyprelOverrideWasAmbiguoustyprelMoreThenOneOverridetyprelMethodIsSealedtyprelOverrideImplementsMoreThenOneSlottyprelDuplicateInterfacetyprelNeedExplicitImplementationtyprelNamedArgumentHasBeenAssignedMoreThenOncetyprelNoImplementationGiventyprelNoImplementationGivenWithSuggestiontyprelMemberDoesNotHaveCorrectNumberOfArgumentstyprelMemberDoesNotHaveCorrectNumberOfTypeParameterstyprelMemberDoesNotHaveCorrectKindsOfGenericParameterstyprelMemberCannotImplementastParseEmbeddedILErrorastParseEmbeddedILTypeErrorastDeprecatedIndexerNotationastInvalidExprLeftHandOfAssignmentaugNoRefEqualsOnStructaugInvalidAttrsaugNoEqualityNeedsNoComparisonaugStructCompNeedsStructEqualityaugStructEqNeedsNoCompOrStructCompaugTypeCantHaveRefEqAndStructAttrsaugOnlyCertainTypesCanHaveAttrsaugRefEqCantHaveObjEqualsaugCustomEqNeedsObjEqualsaugCustomCompareNeedsICompaugNoEqNeedsNoObjEqualsaugNoCompCantImpICompaugCustomEqNeedsNoCompOrCustomCompforPositionalSpecifiersNotPermittedforMissingFormatSpecifierforFlagSetTwiceforPrefixFlagSpacePlusSetTwiceforHashSpecifierIsInvalidforBadPrecisionforBadWidthforDoesNotSupportZeroFlagforPrecisionMissingAfterDotforFormatDoesntSupportPrecisionforBadFormatSpecifierforLIsUnnecessaryforHIsUnnecessaryforDoesNotSupportPrefixFlagforBadFormatSpecifierGeneralelSysEnvExitDidntExitelDeprecatedOperatorchkProtectedOrBaseCalledchkByrefUsedInInvalidWaychkMutableUsedInInvalidWaychkBaseUsedInInvalidWaychkVariableUsedInInvalidWaychkTypeLessAccessibleThanTypechkSystemVoidOnlyInTypeofchkErrorUseOfByrefchkErrorContainsCallToRethrowchkSplicingOnlyInQuotationschkNoFirstClassSplicingchkNoFirstClassAddressOfchkNoFirstClassRethrowchkNoByrefAtThisPointchkLimitationsOfBaseKeywordchkObjCtorsCantUseExceptionHandlingchkNoAddressOfAtThisPointchkNoAddressStaticFieldAtThisPointchkNoAddressFieldAtThisPointchkNoAddressOfArrayElementAtThisPointchkFirstClassFuncNoByrefchkReturnTypeNoByrefchkInvalidCustAttrValchkAttrHasAllowMultiFalsechkMemberUsedInInvalidWaychkNoByrefAsTopValuechkReflectedDefCantSplicechkEntryPointUsagechkUnionCaseCompiledFormchkUnionCaseDefaultAugmentationchkPropertySameNameMethodchkGetterSetterDoNotMatchAbstractchkPropertySameNameIndexerchkCantStoreByrefValuechkDuplicateMethodchkDuplicateMethodWithSuffixchkDuplicateMethodCurriedchkCurriedMethodsCantHaveOutParamschkDuplicatePropertychkDuplicatePropertyWithSuffixchkDuplicateMethodInheritedTypechkDuplicateMethodInheritedTypeWithSuffixchkMultipleGenericInterfaceInstantiationschkValueWithDefaultValueMustHaveDefaultValuechkNoByrefInTypeAbbrevcrefBoundVarUsedInSplicecrefQuotationsCantContainGenericExprscrefQuotationsCantContainGenericFunctionscrefQuotationsCantContainObjExprscrefQuotationsCantContainAddressOfcrefQuotationsCantContainStaticFieldRefcrefQuotationsCantContainInlineILcrefQuotationsCantContainDescendingForLoopscrefQuotationsCantFetchUnionIndexescrefQuotationsCantSetUnionFieldscrefQuotationsCantSetExceptionFieldscrefQuotationsCantRequireByrefcrefQuotationsCantCallTraitMemberscrefQuotationsCantContainThisConstantcrefQuotationsCantContainThisPatternMatchcrefQuotationsCantContainArrayPatternMatchingcrefQuotationsCantContainThisTypecsTypeCannotBeResolvedAtCompileTimecsCodeLessGenericcsTypeInferenceMaxDepthcsExpectedArgumentscsIndexArgumentMismatchcsExpectTypeWithOperatorButGivenFunctioncsExpectTypeWithOperatorButGivenTuplecsTypesDoNotSupportOperatorcsTypeDoesNotSupportOperatorcsTypesDoNotSupportOperatorNullablecsTypeDoesNotSupportOperatorNullablecsTypeDoesNotSupportConversioncsMethodFoundButIsStaticcsMethodFoundButIsNotStaticcsStructConstraintInconsistentcsTypeDoesNotHaveNullcsNullableTypeDoesNotHaveNullcsTypeDoesNotSupportComparison1csTypeDoesNotSupportComparison2csTypeDoesNotSupportComparison3csTypeDoesNotSupportEquality1csTypeDoesNotSupportEquality2csTypeDoesNotSupportEquality3csTypeIsNotEnumTypecsTypeHasNonStandardDelegateTypecsTypeIsNotDelegateTypecsTypeParameterCannotBeNullablecsGenericConstructRequiresStructTypecsGenericConstructRequiresUnmanagedTypecsTypeNotCompatibleBecauseOfPrintfcsGenericConstructRequiresReferenceSemanticscsGenericConstructRequiresNonAbstractcsGenericConstructRequiresPublicDefaultConstructorcsTypeInstantiationLengthMismatchcsOptionalArgumentNotPermittedHerecsMemberIsNotStaticcsMemberIsNotInstancecsArgumentLengthMismatchcsArgumentTypesDoNotMatchcsMethodExpectsParamscsMemberIsNotAccessiblecsMemberIsNotAccessible2csMethodIsNotAStaticMethodcsMethodIsNotAnInstanceMethodcsMemberHasNoArgumentOrReturnPropertycsRequiredSignatureIscsMemberSignatureMismatchcsMemberSignatureMismatch2csMemberSignatureMismatch3csMemberSignatureMismatch4csMemberSignatureMismatchArityNamedcsMemberSignatureMismatchAritycsMemberSignatureMismatchArityTypecsMemberNotAccessiblecsIncorrectGenericInstantiationcsMemberOverloadArityMismatchcsNoMemberTakesTheseArgumentscsNoMemberTakesTheseArguments2csNoMemberTakesTheseArguments3csMethodNotFoundcsNoOverloadsFoundcsMethodIsOverloadedcsCandidatescsSeeAvailableOverloadsparsDoCannotHaveVisibilityDeclarationsparsEofInHashIfparsEofInStringparsEofInVerbatimStringparsEofInCommentparsEofInStringInCommentparsEofInVerbatimStringInCommentparsEofInIfOcamlparsEofInDirectiveparsNoHashEndIfFoundparsAttributesIgnoredparsUseBindingsIllegalInImplicitClassConstructorsparsUseBindingsIllegalInModulesparsIntegerForLoopRequiresSimpleIdentifierparsOnlyOneWithAugmentationAllowedparsUnexpectedSemicolonparsUnexpectedEndOfFileparsUnexpectedVisibilityDeclarationparsOnlyHashDirectivesAllowedparsVisibilityDeclarationsShouldComePriorToIdentifierparsNamespaceOrModuleNotBothparsModuleAbbreviationMustBeSimpleNameparsIgnoreAttributesOnModuleAbbreviationparsIgnoreAttributesOnModuleAbbreviationAlwaysPrivateparsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivateparsUnClosedBlockInHashLightparsUnmatchedBeginOrStructparsModuleDefnMustBeSimpleNameparsUnexpectedEmptyModuleDefnparsAttributesMustComeBeforeValparsAttributesAreNotPermittedOnInterfaceImplementationsparsSyntaxErrorparsAugmentationsIllegalOnDelegateTypeparsUnmatchedClassInterfaceOrStructparsEmptyTypeDefinitionparsUnmatchedWithparsGetOrSetRequiredparsOnlyClassCanTakeValueArgumentsparsUnmatchedBeginparsInvalidDeclarationSyntaxparsGetAndOrSetRequiredparsTypeAnnotationsOnGetSetparsGetterMustHaveAtLeastOneArgumentparsMultipleAccessibilitiesForGetSetparsSetSyntaxparsInterfacesHaveSameVisibilityAsEnclosingTypeparsAccessibilityModsIllegalForAbstractparsAttributesIllegalOnInheritparsVisibilityIllegalOnInheritparsInheritDeclarationsCannotHaveAsBindingsparsAttributesIllegalHereparsTypeAbbreviationsCannotHaveVisibilityDeclarationsparsEnumTypesCannotHaveVisibilityDeclarationsparsAllEnumFieldsRequireValuesparsInlineAssemblyCannotHaveVisibilityDeclarationsparsUnexpectedIdentifierparsUnionCasesCannotHaveVisibilityDeclarationsparsEnumFieldsCannotHaveVisibilityDeclarationsparsConsiderUsingSeparateRecordTypeparsRecordFieldsCannotHaveVisibilityDeclarationsparsLetAndForNonRecBindingsparsUnmatchedParenparsSuccessivePatternsShouldBeSpacedOrTupledparsNoMatchingInForLetparsErrorInReturnForLetIncorrectIndentationparsExpectedStatementAfterLetparsIncompleteIfparsAssertIsNotFirstClassValueparsIdentifierExpectedparsInOrEqualExpectedparsArrowUseIsLimitedparsSuccessiveArgsShouldBeSpacedOrTupledparsUnmatchedBracketparsMissingQualificationAfterDotparsParenFormIsForMLparsMismatchedQuoteparsUnmatchedparsUnmatchedBracketBarparsUnmatchedBraceparsFieldBindingparsMemberIllegalInObjectImplementationparsMissingFunctionBodyparsSyntaxErrorInLabeledTypeparsUnexpectedInfixOperatorparsMultiArgumentGenericTypeFormDeprecatedparsInvalidLiteralInTypeparsUnexpectedOperatorForUnitOfMeasureparsUnexpectedIntegerLiteralForUnitOfMeasureparsUnexpectedTypeParameterparsMismatchedQuotationNameparsActivePatternCaseMustBeginWithUpperCaseparsNoEqualShouldFollowNamespaceparsSyntaxModuleStructEndDeprecatedparsSyntaxModuleSigEndDeprecatedtcStaticFieldUsedWhenInstanceFieldExpectedtcMethodNotAccessibletcImplicitMeasureFollowingSlashtcUnexpectedMeasureAnontcNonZeroConstantCannotHaveGenericUnittcSeqResultsUseYieldtcUnexpectedBigRationalConstanttcInvalidTypeForUnitsOfMeasuretcUnexpectedConstUint16ArraytcUnexpectedConstByteArraytcParameterRequiresNametcReturnValuesCannotHaveNamestcMemberKindPropertyGetSetNotExpectedtcNamespaceCannotContainValuestcNamespaceCannotContainExtensionMemberstcMultipleVisibilityAttributestcMultipleVisibilityAttributesWithLettcUnrecognizedAccessibilitySpectcInvalidMethodNameForRelationalOperatortcInvalidMethodNameForEqualitytcInvalidMemberNametcInvalidMemberNameFixedTypestcInvalidOperatorDefinitionRelationaltcInvalidOperatorDefinitionEqualitytcInvalidOperatorDefinitiontcInvalidIndexOperatorDefinitiontcExpectModuleOrNamespaceParenttcImplementsIComparableExplicitlytcImplementsGenericIComparableExplicitlytcImplementsIStructuralComparableExplicitlytcRecordFieldInconsistentTypestcDllImportStubsCannotBeInlinedtcStructsCanOnlyBindThisAtMemberDeclarationtcUnexpectedExprAtRecInfPointtcLessGenericBecauseOfAnnotationtcConstrainedTypeVariableCannotBeGeneralizedtcGenericParameterHasBeenConstrainedtcTypeParameterHasBeenConstrainedtcTypeParametersInferredAreNotStabletcExplicitTypeParameterInvalidtcOverridingMethodRequiresAllOrNoTypeParameterstcFieldsDoNotDetermineUniqueRecordTypetcFieldAppearsTwiceInRecordtcUnknownUniontcNotSufficientlyGenericBecauseOfScopetcPropertyRequiresExplicitTypeParameterstcConstructorCannotHaveTypeParameterstcInstanceMemberRequiresTargettcUnexpectedPropertyInSyntaxTreetcStaticInitializerRequiresArgumenttcObjectConstructorRequiresArgumenttcStaticMemberShouldNotHaveThistcExplicitStaticInitializerSyntaxtcExplicitObjectConstructorSyntaxtcUnexpectedPropertySpectcObjectExpressionFormDeprecatedtcInvalidDeclarationtcAttributesInvalidInPatternstcFunctionRequiresExplicitTypeArgumentstcDoesNotAllowExplicitTypeArgumentstcTypeParameterArityMismatchtcDefaultStructConstructorCalltcCouldNotFindIDisposabletcNonLiteralCannotBeUsedInPatterntcFieldIsReadonlytcNameArgumentsMustAppearLasttcFunctionRequiresExplicitLambdatcTypeCannotBeEnumeratedtcBadReturnTypeForGetEnumeratortcInvalidMixtureOfRecursiveFormstcInvalidObjectConstructionExpressiontcInvalidConstrainttcInvalidConstraintTypeSealedtcInvalidEnumConstrainttcInvalidNewConstrainttcInvalidPropertyTypetcExpectedUnitOfMeasureMarkWithAttributetcExpectedTypeParametertcExpectedTypeNotUnitOfMeasuretcExpectedUnitOfMeasureNotTypetcInvalidUnitsOfMeasurePrefixtcUnitsOfMeasureInvalidInTypeConstructortcRequireBuilderMethodtcTypeHasNoNestedTypestcUnexpectedSymbolInTypeExpressiontcTypeParameterInvalidAsTypeConstructortcIllegalSyntaxInTypeExpressiontcAnonymousUnitsOfMeasureCannotBeNestedtcAnonymousTypeInvalidInDeclarationtcUnexpectedSlashInTypetcUnexpectedTypeArgumentstcOptionalArgsOnlyOnMemberstcNameNotBoundInPatterntcInvalidNonPrimitiveLiteralInPatternMatchtcInvalidTypeArgumentUsagetcRequireActivePatternWithOneResulttcInvalidArgForParameterizedPatterntcInvalidIndexIntoActivePatternArraytcUnionCaseDoesNotTakeArgumentstcUnionCaseRequiresOneArgumenttcUnionCaseExpectsTupledArgumentstcFieldIsNotStatictcFieldNotLiteralCannotBeUsedInPatterntcRequireVarConstRecogOrLiteraltcInvalidPatterntcUseWhenPatternGuardtcIllegalPatterntcSyntaxErrorUnexpectedQMarktcExpressionCountMisMatchtcExprUndelayedtcExpressionRequiresSequencetcInvalidObjectExpressionSyntaxFormtcInvalidObjectSequenceOrRecordExpressiontcInvalidSequenceExpressionSyntaxFormtcExpressionWithIfRequiresParenthesistcUnableToParseFormatStringtcListLiteralMaxSizetcExpressionFormRequiresObjectConstructortcNamedArgumentsCannotBeUsedInMemberTraitstcNotValidEnumCaseNametcFieldIsNotMutabletcConstructRequiresListArrayOrSequencetcConstructRequiresComputationExpressionstcConstructRequiresSequenceOrComputationstcConstructRequiresComputationExpressiontcInvalidIndexerExpressiontcObjectOfIndeterminateTypeUsedRequireTypeConstrainttcCannotInheritFromVariableTypetcObjectConstructorsOnTypeParametersCannotTakeArgumentstcCompiledNameAttributeMisusedtcNamedTypeRequiredtcInheritCannotBeUsedOnInterfaceTypetcNewCannotBeUsedOnInterfaceTypetcAbstractTypeCannotBeInstantiatedtcIDisposableTypeShouldUseNewtcSyntaxCanOnlyBeUsedToCreateObjectTypestcConstructorRequiresCalltcUndefinedFieldtcFieldRequiresAssignmenttcExtraneousFieldsGivenValuestcObjectExpressionsCanOnlyOverrideAbstractOrVirtualtcNoAbstractOrVirtualMemberFoundtcArgumentArityMismatchtcArgumentArityMismatchOneOverloadtcSimpleMethodNameRequiredtcPredefinedTypeCannotBeUsedAsSuperTypetcNewMustBeUsedWithNamedTypetcCannotCreateExtensionOfSealedTypetcNoArgumentsForRecordValuetcNoInterfaceImplementationForConstructionExpressiontcObjectConstructionCanOnlyBeUsedInClassTypestcOnlySimpleBindingsCanBeUsedInConstructionExpressionstcObjectsMustBeInitializedWithObjectExpressiontcExpectedInterfaceTypetcConstructorForInterfacesDoNotTakeArgumentstcConstructorRequiresArgumentstcNewRequiresObjectConstructortcAtLeastOneOverrideIsInvalidtcNumericLiteralRequiresModuletcInvalidRecordConstructiontcExpressionFormRequiresRecordTypestcInheritedTypeIsNotObjectModelTypetcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypestcEmptyRecordInvalidtcTypeIsNotARecordTypeNeedConstructortcTypeIsNotARecordTypetcConstructIsAmbiguousInComputationExpressiontcConstructIsAmbiguousInSequenceExpressiontcDoBangIllegalInSequenceExpressiontcUseForInSequenceExpressiontcTryIllegalInSequenceExpressiontcUseYieldBangForMultipleResultstcInvalidAssignmenttcInvalidUseOfTypeNametcTypeHasNoAccessibleConstructortcInvalidUseOfTypeNameOrConstructortcInvalidUseOfTypeNameOrConstructorWithOverloadstcInvalidUseOfInterfaceTypetcInvalidUseOfDelegatetcPropertyIsNotStatictcPropertyIsNotReadabletcLookupMayNotBeUsedHeretcPropertyIsStatictcPropertyCannotBeSet1tcConstructorsCannotBeFirstClassValuestcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFieldstcEventIsStatictcEventIsNotStatictcNamedArgumentDidNotMatchtcOverloadsCannotHaveCurriedArgumentstcUnnamedArgumentsDoNotFormPrefixtcStaticOptimizationConditionalsOnlyForFSharpLibrarytcFormalArgumentIsNotOptionaltcInvalidOptionalAssignmentToPropertyOrFieldtcDelegateConstructorMustBePassedtcBindingCannotBeUseAndRectcVolatileOnlyOnClassLetBindingstcAttributesAreNotPermittedOnLetBindingstcDefaultValueAttributeRequiresValtcConditionalAttributeRequiresMemberstcInvalidActivePatternNametcEntryPointAttributeRequiresFunctionInModuletcMutableValuesCannotBeInlinetcMutableValuesMayNotHaveGenericParameterstcMutableValuesSyntaxtcOnlyFunctionsCanBeInlinetcIllegalAttributesForLiteraltcLiteralCannotBeMutabletcLiteralCannotBeInlinetcLiteralCannotHaveGenericParameterstcInvalidConstantExpressiontcTypeIsInaccessibletcUnexpectedConditionInImportedAssemblytcUnrecognizedAttributeTargettcAttributeIsNotValidForLanguageElementUseDotcAttributeIsNotValidForLanguageElementtcOptionalArgumentsCannotBeUsedInCustomAttributetcPropertyCannotBeSet0tcPropertyOrFieldNotFoundInAttributetcCustomAttributeMustBeReferenceTypetcCustomAttributeArgumentMismatchtcCustomAttributeMustInvokeConstructortcAttributeExpressionsMustBeConstructorCallstcUnsupportedAttributetcInvalidInlineSpecificationtcInvalidUseBindingtcAbstractMembersIllegalInAugmentationtcMethodOverridesIllegalHeretcNoMemberFoundForOverridetcOverrideArityMismatchtcDefaultImplementationAlreadyExiststcDefaultAmbiguoustcNoPropertyFoundForOverridetcAbstractPropertyMissingGetOrSettcInvalidSignatureForSettcPropertyAlreadyHasDefaultImplementationtcPropertyImplementedIsAmbiguoustcNewMemberHidesAbstractMembertcNewMemberHidesAbstractMemberWithSuffixtcStaticInitializersIllegalInInterfacetcObjectConstructorsIllegalInInterfacetcMemberOverridesIllegalInInterfacetcConcreteMembersIllegalInInterfacetcConstructorsDisallowedInExceptionAugmentationtcStructsCannotHaveConstructorWithNoArgumentstcConstructorsIllegalForThisTypetcRecursiveBindingsWithMembersMustBeDirectAugmentationtcOnlySimplePatternsInLetRectcOnlyRecordFieldsAndSimpleLetCanBeMutabletcMemberIsNotSufficientlyGenerictcLiteralAttributeRequiresConstantValuetcValueInSignatureRequiresLiteralAttributetcThreadStaticAndContextStaticMustBeStatictcVolatileFieldsMustBeMutabletcUninitializedValFieldsMustBeMutabletcStaticValFieldsMustBeMutableAndPrivatetcFieldRequiresNametcInvalidNamespaceModuleTypeUnionNametcIllegalFormForExplicitTypeDeclarationtcReturnTypesForUnionMustBeSameAsTypetcInvalidEnumerationLiteraltcTypeIsNotInterfaceType1tcDuplicateSpecOfInterfacetcFieldValIllegalHeretcInheritIllegalHeretcModuleRequiresQualifiedAccesstcOpenUsedWithPartiallyQualifiedPathtcLocalClassBindingsCannotBeInlinetcTypeAbbreviationsMayNotHaveMemberstcEnumerationsMayNotHaveMemberstcMeasureDeclarationsRequireStaticMemberstcStructsMayNotContainDoBindingstcStructsMayNotContainLetBindingstcStaticLetBindingsRequireClassesWithImplicitConstructorstcMeasureDeclarationsRequireStaticMembersNotConstructorstcMemberAndLocalClassBindingHaveSameNametcTypeAbbreviationsCannotHaveInterfaceDeclarationtcEnumerationsCannotHaveInterfaceDeclarationtcTypeIsNotInterfaceType0tcAllImplementedInterfacesShouldBeDeclaredtcDefaultImplementationForInterfaceHasAlreadyBeenAddedtcMemberNotPermittedInInterfaceImplementationtcDeclarationElementNotPermittedInAugmentationtcTypesCannotContainNestedTypestcTypeExceptionOrModuletcTypeOrModuletcImplementsIStructuralEquatableExplicitlytcImplementsIEquatableExplicitlytcExplicitTypeSpecificationCannotBeUsedForExceptionConstructorstcExceptionAbbreviationsShouldNotHaveArgumentListtcAbbreviationsFordotNetExceptionsCannotTakeArgumentstcExceptionAbbreviationsMustReferToValidExceptionstcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructortcNotAnExceptiontcInvalidModuleNametcInvalidTypeExtensiontcAttributesOfTypeSpecifyMultipleKindsForTypetcKindOfTypeSpecifiedDoesNotMatchDefinitiontcMeasureDefinitionsCannotHaveTypeParameterstcTypeRequiresDefinitiontcTypeAbbreviationHasTypeParametersMissingOnTypetcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypestcTypesCannotInheritFromMultipleConcreteTypestcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttributetcAllowNullTypesMayOnlyInheritFromAllowNullTypestcGenericTypesCannotHaveStructLayouttcOnlyStructsCanHaveStructLayouttcRepresentationOfTypeHiddenBySignaturetcOnlyClassesCanHaveAbstracttcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasuretcOverridesCannotHaveVisibilityDeclarationstcTypesAreAlwaysSealedDUtcTypesAreAlwaysSealedRecordtcTypesAreAlwaysSealedAssemblyCodetcTypesAreAlwaysSealedStructtcTypesAreAlwaysSealedDelegatetcTypesAreAlwaysSealedEnumtcInterfaceTypesAndDelegatesCannotContainFieldstcAbbreviatedTypesCannotBeSealedtcCannotInheritFromSealedTypetcCannotInheritFromInterfaceTypetcStructTypesCannotContainAbstractMemberstcInterfaceTypesCannotBeSealedtcInvalidDelegateSpecificationtcDelegatesCannotBeCurriedtcInvalidTypeForLiteralEnumerationtcTypeDefinitionIsCyclictcTypeDefinitionIsCyclicThroughInheritancetcReservedSyntaxForAugmentationtcMembersThatExtendInterfaceMustBePlacedInSeparateModuletcDeclaredTypeParametersForExtensionDoNotMatchOriginaltcTypeDefinitionsWithImplicitConstructionMustHaveOneInherittcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMemberstcInheritDeclarationMissingArgumentstcInheritConstructionCallNotPartOfImplicitSequencetcLetAndDoRequiresImplicitConstructionSequencetcTypeAbbreviationsCannotHaveAugmentationstcModuleAbbreviationForNamespacetcTypeUsedInInvalidWaytcMemberUsedInInvalidWaytcAttributeAutoOpenWasIgnoredilUndefinedValueilLabelNotFoundilIncorrectNumberOfTypeArgumentsilDynamicInvocationNotSupportedilAddressOfLiteralFieldIsInvalidilAddressOfValueHereIsInvalidilValuesWithLiteralAttributeCannotBeMutableilValuesWithLiteralAttributeMustBeSimpleilCustomMarshallersCannotBeUsedInFSharpilMarshalAsAttributeCannotBeDecodedilSignatureForExternalFunctionContainsTypeParametersilDllImportAttributeCouldNotBeDecodedilLiteralFieldsCannotBeSetilStaticMethodIsNotLambdailMutableVariablesCannotEscapeMethodilUnexpectedUnrealizedValueilMainModuleEmptyilTypeCannotBeUsedForLiteralFieldilUnexpectedGetSetAnnotationilFieldOffsetAttributeCouldNotBeDecodedilStructLayoutAttributeCouldNotBeDecodedilDefaultAugmentationAttributeCouldNotBeDecodedilReflectedDefinitionsCannotUseSliceOperatoroptsProblemWithCodepageoptsCopyrightoptsNameOfOutputFileoptsBuildConsoleoptsBuildWindowsoptsBuildLibraryoptsBuildModuleoptsDelaySignoptsWriteXmloptsStrongKeyFileoptsStrongKeyContaineroptsPlatformoptsNoOptoptsNoInterfaceoptsSigoptsReferenceoptsWin32resoptsWin32manifestoptsNowin32manifestoptsResourceoptsLinkresourceoptsDebugPMoptsDebugoptsOptimizeoptsTailcallsoptsCrossoptimizeoptsWarnaserrorPMoptsWarnaserroroptsWarnoptsNowarnoptsWarnOnoptsCheckedoptsDefineoptsMlcompatibilityoptsNologooptsHelpoptsCodepageoptsUtf8outputoptsFullpathsoptsLiboptsBaseaddressoptsNoframeworkoptsStandaloneoptsStaticlinkoptsResidentoptsPdboptsSimpleresolutionoptsUnrecognizedTargetoptsUnrecognizedDebugTypeoptsInvalidWarningLeveloptsShortFormOfoptsClirootDeprecatedMsgoptsClirootDescriptionoptsHelpBannerOutputFilesoptsHelpBannerInputFilesoptsHelpBannerResourcesoptsHelpBannerCodeGenoptsHelpBannerAdvancedoptsHelpBannerMiscoptsHelpBannerLanguageoptsHelpBannerErrsAndWarnsoptsUnknownArgumentToTheTestSwitchoptsUnknownPlatformoptsInternalNoDescriptionoptsDCLONoDescriptionoptsDCLODeprecatedSuggestAlternativeoptsDCLOHtmlDocoptsConsoleColorsoptsUseHighEntropyVAoptsSubSystemVersionoptsInvalidSubSystemVersiontypeInfoFullNametypeInfoTypetypeInfoInheritstypeInfoImplementstypeInfoOtherOverloadstypeInfoUnionCasetypeInfoActivePatternResulttypeInfoActiveRecognizertypeInfoFieldtypeInfoEventtypeInfoPropertytypeInfoCustomOperationtypeInfoArgumenttypeInfoPatternVariabletypeInfoNamespacetypeInfoModuletypeInfoNamespaceOrModuletypeInfoFromFirsttypeInfoFromNexttypeInfoGeneratedPropertytypeInfoGeneratedTypeassemblyResolutionFoundByAssemblyFoldersKeyassemblyResolutionFoundByAssemblyFoldersExKeyassemblyResolutionNetFrameworkassemblyResolutionGACrecursiveClassHierarchyInvalidRecursiveReferenceToAbstractSloteventHasNonStandardTypetypeIsNotAccessibleunionCasesAreNotAccessiblevalueIsNotAccessibleunionCaseIsNotAccessiblefieldIsNotAccessiblestructOrClassFieldIsNotAccessibleexperimentalConstructnoInvokeMethodsFoundmoreThanOneInvokeMethodFounddelegatesNotAllowedToHaveCurriedSignaturestlrUnexpectedTExprtlrLambdaLiftingOptimizationsNotAppliedlexhlpIdentifiersContainingAtSymbolReservedlexhlpIdentifierReservedpatcMissingVariablepatcPartialActivePatternsGenerateOneResultimpTypeRequiredUnavailableimpReferencedTypeCouldNotBeFoundInAssemblyimpNotEnoughTypeParamsInScopeWhileImportingimpReferenceToDllRequiredByAssemblyimpImportedAssemblyUsesNotPublicTypeoptValueMarkedInlineButIncompleteoptValueMarkedInlineButWasNotBoundInTheOptEnvoptLocalValueNotFoundDuringOptimizationoptValueMarkedInlineHasUnexpectedValueoptValueMarkedInlineCouldNotBeInlinedoptFailedToInlineValueoptRecursiveValValuelexfltIncorrentIndentationOfInlexfltTokenIsOffsideOfContextStartedEarlierlexfltSeparatorTokensOfPatternMatchMisalignednrInvalidModuleExprTypenrTypeInstantiationNeededToDisambiguateTypesWithSameNamenrTypeInstantiationIsMissingAndCouldNotBeInferrednrGlobalUsedOnlyAsFirstNamenrIsNotConstructorOrLiteralnrUnexpectedEmptyLongIdnrTypeDoesNotContainSuchFieldnrInvalidFieldLabelnrInvalidExpressionnrNoConstructorsAvailableForTypeilwriteErrorCreatingPdblexOutsideIntegerRangelexCharNotAllowedInOperatorNameslexUnexpectedCharlexByteArrayCannotEncodelexIdentEndInMarkReservedlexOutsideEightBitSignedlexOutsideEightBitSignedHexlexOutsideEightBitUnsignedlexOutsideSixteenBitSignedlexOutsideSixteenBitUnsignedlexOutsideThirtyTwoBitSignedlexOutsideThirtyTwoBitUnsignedlexOutsideSixtyFourBitSignedlexOutsideSixtyFourBitUnsignedlexOutsideNativeSignedlexOutsideNativeUnsignedlexInvalidFloatlexOusideDecimallexOusideThirtyTwoBitFloatlexInvalidNumericLiterallexInvalidByteLiterallexInvalidCharLiterallexThisUnicodeOnlyInStringLiteralslexTokenReservedlexTabsNotAllowedlexInvalidLineNumberlexHashIfMustBeFirstlexHashElseNoMatchingIflexHashEndifRequiredForElselexHashElseMustBeFirstlexHashEndingNoMatchingIflexHashEndifMustBeFirstlexHashIfMustHaveIdentlexWrongNestedHashEndiflexExpectedSingleLineCommentmemberOperatorDefinitionWithNoArgumentsmemberOperatorDefinitionWithNonPairArgumentmemberOperatorDefinitionWithCurriedArgumentstcFSharpCoreRequiresExplicittcStructuralComparisonNotSatisfied1tcStructuralComparisonNotSatisfied2tcNoComparisonNeeded1tcNoComparisonNeeded2tcNoEqualityNeeded1tcNoEqualityNeeded2tcStructuralEqualityNotSatisfied1tcStructuralEqualityNotSatisfied2tcStructsMustDeclareTypesOfImplicitCtorArgsExplicitlychkUnusedValuechkUnusedThisVariableparsGetterAtMostOneArgumentparsSetterAtMostTwoArgumentsparsInvalidPropertyparsIndexerPropertyRequiresAtLeastOneArgumenttastInvalidAddressOfMutableAcrossAssemblyBoundaryparsNonAdjacentTyparsparsNonAdjacentTyargsparsNonAtomicTypetastUndefinedTyconItemFieldtastUndefinedTyconItemUnionCasetastUndefinedItemRefModuleNamespacetastUndefinedItemRefValtastUndefinedItemRefModuleNamespaceTypetcInvalidUseNullAsTrueValuetcParameterInferredByreftcNonUniformMemberUsetcNamedArgumentsCannotBeUsedInUnionCaseConstructionstcAttribArgsDiffertcCannotCallAbstractBaseMembertyprelCannotResolveAmbiguityInUnmanagedmlCompatMessageilFieldDoesNotHaveValidOffsetForStructureLayouttcInterfacesShouldUseInheritNotInterfaceparsInvalidPrefixOperatorparsInvalidPrefixOperatorDefinitionbuildCompilingExtensionIsForMLlexIndentOffForMLactivePatternIdentIsNotFunctionTypedactivePatternChoiceHasFreeTyparsilFieldHasOffsetForSequentialLayouttcOptionalArgsMustComeAfterNonOptionalArgstcConditionalAttributeUsagetcMemberOperatorDefinitionInExtrinsicilwriteMDBFileNameCannotBeChangedWarningilwriteMDBMemberMissingilwriteErrorCreatingMdbtcUnionCaseNameConflictsWithGeneratedTypechkNoReflectedDefinitionOnStructMembertcDllImportNotAllowedbuildExplicitCoreLibRequiresNoFrameworkbuildExpectedSigdataFilebuildDidNotExpectOptDataResourcebuildExpectedFileAlongSideFSharpCorebuildDidNotExpectSigdataResourcebuildUnexpectedFileNameCharactertcInvalidUseBangBindingcrefNoInnerGenericsInQuotationstcEnumTypeCannotBeEnumeratedparsEofInTripleQuoteStringparsEofInTripleQuoteStringInCommenttcTypeTestLosesMeasuresparsMissingTypeArgsparsMissingGreaterThanparsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimStringparsErrorParsingAsOperatorNamefscTooManyErrorsdocfileNoXmlSuffixfscNoImplementationFilesfscBadAssemblyVersionfscTwoResourceManifestsfscQuotationLiteralsStaticLinkingfscQuotationLiteralsStaticLinking0fscStaticLinkingNoEXEfscStaticLinkingNoMixedDLLfscIgnoringMixedWhenLinkingfscAssumeStaticLinkContainsNoDependenciesfscAssemblyNotFoundInDependencySetfscKeyFileCouldNotBeOpenedfscProblemWritingBinaryfscAssemblyVersionAttributeIgnoredfscAssemblyCultureAttributeErrorfscDelaySignWarningfscKeyFileWarningfscKeyNameWarningfscReferenceOnCommandLinefscRemotingErrorpathIsInvalidfscResxSourceFileDeprecatedetIllegalCharactersInNamespaceNameetNullOrEmptyMemberNameetNullMemberetNullMemberDeclaringTypeetNullMemberDeclaringTypeDifferentFromProvidedTypeetHostingAssemblyFoundWithoutHostsetEmptyNamespaceOfTypeNotAllowedetEmptyNamespaceNotAllowedetMustNotBeGenericetMustNotBeAnArrayetMethodHasRequirementsetUnsupportedMemberKindetPropertyCanReadButHasNoGetteretPropertyHasGetterButNoCanReadetPropertyCanWriteButHasNoSetteretPropertyHasSetterButNoCanWriteetOneOrMoreErrorsSeenDuringExtensionTypeSettingetUnexpectedExceptionFromProvidedTypeMemberetUnsupportedConstantTypeetUnsupportedProvidedExpressionetProvidedTypeHasUnexpectedNameetEventNoAddetEventNoRemoveetProviderHasWrongDesignerAssemblyetProviderDoesNotHaveValidConstructoretProviderErroretIncorrectParameterExpressionetIncorrectProvidedMethodetIncorrectProvidedConstructoretDirectReferenceToGeneratedTypeNotAllowedetProvidedTypeHasUnexpectedPathetUnexpectedNullFromProvidedTypeMemberetUnexpectedExceptionFromProvidedMemberMemberetNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParametersetInvalidStaticArgumentetErrorApplyingStaticArgumentsToTypeetUnknownStaticArgumentKindinvalidNamespaceForProvidedTypeinvalidFullNameForProvidedTypeetProviderReturnedNulletTypeProviderConstructorExceptionetNullProvidedExpressionetProvidedAppliedTypeHadWrongNametcTypeTestLossytcTypeCastErasedtcTypeTestErasedtcCannotInheritFromErasedTypeetInvalidTypeProviderAssemblyNametcInvalidMemberNameCtortcInferredGenericTypeGivesRiseToInconsistencytcInvalidTypeArgumentCounttcCannotOverrideSealedMethodetProviderErrorWithContextetProvidedTypeWithNameExceptionetProvidedTypeWithNullOrEmptyNameetIllegalCharactersInTypeNametcJoinMustUseSimplePatterntcMissingCustomOperationetBadUnnamedStaticArgsetStaticParameterRequiresAValueetNoStaticParameterWithNameetStaticParameterAlreadyHasValueetMultipleStaticParameterWithNametcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindingstcCustomOperationMayNotBeUsedHeretcCustomOperationMayNotBeOverloadedtcTryFinallyMayNotBeUsedWithCustomOperatorstcTryWithMayNotBeUsedWithCustomOperatorstcIfThenElseMayNotBeUsedWithCustomOperatorsilxgenUnexpectedArgumentToMethodHandleOfDuringCodegenetProvidedTypeReferenceMissingArgumentetProvidedTypeReferenceInvalidTexttcCustomOperationNotUsedCorrectlytcCustomOperationNotUsedCorrectly2customOperationTextLikeJoincustomOperationTextLikeGroupJoincustomOperationTextLikeZiptcBinaryOperatorRequiresVariabletcOperatorIncorrectSyntaxtcBinaryOperatorRequiresBodytcCustomOperationHasIncorrectArgCountparsExpectedExpressionAfterTokenparsExpectedTypeAfterTokenparsUnmatchedLBrackLessparsUnexpectedEndOfFileMatchparsUnexpectedEndOfFileTryparsUnexpectedEndOfFileWhileparsUnexpectedEndOfFileForparsUnexpectedEndOfFileWithparsUnexpectedEndOfFileThenparsUnexpectedEndOfFileElseparsUnexpectedEndOfFileFunBodyparsUnexpectedEndOfFileTypeArgsparsUnexpectedEndOfFileTypeSignatureparsUnexpectedEndOfFileTypeDefinitionparsUnexpectedEndOfFileObjectMembersparsUnexpectedEndOfFileDefinitionparsUnexpectedEndOfFileExpressionparsExpectedNameAfterTokenparsUnmatchedLetparsUnmatchedLetBangparsUnmatchedUseBangparsUnmatchedUseparsWhileDoExpectedparsForDoExpectedtcInvalidRelationInJointypeInfoCallsWordimpInvalidNumberOfGenericArgumentsimpInvalidMeasureArgument1impInvalidMeasureArgument2etPropertyNeedsCanWriteOrCanReadtcIntoNeedsRestOfQuerytcOperatorDoesntAcceptIntotcCustomOperationInvalidtcThisTypeMayNotHaveACLIMutableAttributetcAutoPropertyRequiresImplicitConstructionSequenceparsMutableOnAutoPropertyShouldBeGetSetparsMutableOnAutoPropertyShouldBeGetSetNotJustSetchkNoByrefsOfByrefsetTypeProviderNotApprovedtastopsMaxArrayFourtcNoIntegerForLoopInQuerytcNoWhileInQuerytcNoTryFinallyInQuerytcUseMayNotBeUsedInQueriestcBindMayNotBeUsedInQueriestcReturnMayNotBeUsedInQueriestcUnrecognizedQueryOperatortcTryWithMayNotBeUsedInQueriestcNonSimpleLetBindingInQueryetTooManyStaticParametersinfosInvalidProvidedLiteralValueinvalidPlatformTargettcThisValueMayNotBeInlinedetErasedTypeUsedInGenerationtcUnrecognizedQueryBinaryOperatorinvalidPlatformTargetForOldFrameworkcrefNoSetOfHolenicePrintOtherOverloads1nicePrintOtherOverloadsNerasedToparsUnfinishedExpressioncrefQuotationsCantContainByrefTypesparsAttributeOnIncompleteCodeparsTypeNameCannotBeEmptybuildProblemReadingAssemblytcTPFieldMustBeLiteralloadingDescriptiondescriptionUnavailablechkTyparMultipleClassConstraintstcMatchMayNotBeUsedWithQuerymemberOperatorDefinitionWithNonTripleArgumentcannotResolveNullableOperatorstcOperatorRequiresInparsIllegalMemberVarInObjectImplementationtcEmptyCopyAndUpdateRecordInvalidparsUnderscoreInvalidFieldNametcGeneratedTypesShouldBeInternalOrPrivatechkGetterAndSetterHaveSamePropertyTypetcRuntimeSuppliedMethodCannotBeUsedInUserCodeRunStartupValidationget_ValueSystem.GlobalizationCultureInfoget_CurrentUICultureGetStringnameCompilerGeneratedAttributeMicrosoft.FSharp.ReflectionFSharpTypeMakeFunctionTypeFSharpValueMakeFunctionmkFunctionValuetysimplCompilationArgumentCountsAttributeget_IsArrayget_IsByRefget_IsPointerisNamedTypetyget_IsGenericTypeGetGenericTypeDefinitionEqualsisFunctionTypety1GetGenericArgumentsget_BaseTypedestFunTyget_Item2buildFunctionForOneArgPatget_Charscapture1fmtiargsgoReplacepostProcessStringsget_Lengthget_EmptyGetTypeFromHandleRuntimeTypeHandleUnboxGenericcreateMessageStringmessageStringTPrintfModulePrintFormatToStringThenGetStringFuncmessageID.cctorCompilationMappingAttributeSourceConstructFlagsTagDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateUnbreakableIsUnbreakableIsBreakableIsBroken_unique_Unbreakableget_Unbreakableget_IsUnbreakableNewBreakableitemget_IsBreakableNewBrokenget_IsBrokenget_TagExtraTopLevelOperatorsPrintFormatToString__DebugDisplayGetHashCodeIEqualityComparercompget_GenericEqualityComparerobjStructuralEqualityAttributeNoComparisonAttributeDebuggerDisplayAttributeDebuggerTypeProxyAttributeget_Item_objIsLeafIsNodeIsAttrNewLeafitem1item2item3get_IsLeafNewNodeitem4item5item6get_IsNodeNewAttrget_IsAttrNoEqualityAttributeItem1Item2Item3get_Item1get_Item3Item4Item5Item6get_Item4get_Item5get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorPrintInterceptsStringLimitFormatProviderIFormatProviderBindingFlagsPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@PrintIntercepts@StringLimit@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_PrintInterceptsget_StringLimitget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorprintInterceptsstringLimitformatProviderbindingFlagsprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_InvariantCultureget_DefaultposFileIndexposLineNumposOriginalLineNumposStartOfLineOffsetposColumnOffsetFileIndexLineOriginalLineAbsoluteOffsetStartOfLineStartOfLineAbsoluteOffsetColumnNextLineColumnMinusOneEmptyposFileIndex@posLineNum@posOriginalLineNum@posStartOfLineOffset@posColumnOffset@get_posFileIndexget_posLineNumget_posOriginalLineNumget_posStartOfLineOffsetget_posColumnOffsetget_GenericComparerCompareToget_FileIndexget_Lineget_OriginalLineget_AbsoluteOffsetget_StartOfLineget_StartOfLineAbsoluteOffsetget_Columnget_NextLineEndOfTokennShiftColumnBybyget_ColumnMinusOneApplyLineDirectivefileIdxlineFirstLineSealedAttributeStartPosEndPosLexemeBufferLocalStoreLexemeLengthBufferBufferMaxScanLengthBufferScanLengthBufferScanStartBufferAcceptActionIsPastEndOfStreamBufferScanPosfillercontextbufferbufferMaxScanLengthbufferScanStartbufferScanLengthlexemeLengthbufferAcceptActioneofstartPosendPosset_StartPosget_LexemeLengthset_EndPosEndOfScanget_StartPosget_EndPosArrayModuleGetSubArrayget_Lexemeget_BufferLocalStoreset_LexemeLengthvget_Bufferset_Bufferget_BufferMaxScanLengthset_BufferMaxScanLengthget_BufferScanLengthset_BufferScanLengthget_BufferScanStartset_BufferScanStartget_BufferAcceptActionset_BufferAcceptActionRefillBufferLexemeStringlexbufget_IsPastEndOfStreamset_IsPastEndOfStreamdiscardInputDiscardInputget_BufferScanPosZeroCreateCopyToEnsureBufferSizeFromFunctionfCopyFromArrayFromCharsarrtransacceptsentinelnumLowUnicodeCharsnumSpecificUnicodeCharseofPosInterpretinitialStatelexBufferCreatelookupUnicodeCharactersinpscanUntilSentinelGetObjectDataSystem.Runtime.SerializationSerializationInfoStreamingContextinfoTypeTestGenericData0Data0@data0get_Data0HashCompareGenericHashWithComparerIntrinsicGenericEqualityWithComparerIntrinsicGenericEqualityERIntrinsicLexBufferResultStartPositionResultEndPositionResultRangeruleValuesruleStartPossruleEndPosslhsPosget_LexBufferInputRangeindexInputStartPositionInputEndPositionget_ResultStartPositionget_ResultEndPositionGetInputget_ResultRangeRaiseErrorStateStackReduceTokensCurrentTokenParseStateReducibleProductionsShiftTokensMessagestateStackshiftableTokensreducibleProductionsreduceTokensparseStatemessagecurrentTokenget_StateStackget_ReduceTokensget_CurrentTokenget_ParseStateget_ReducibleProductionsget_ShiftTokensget_MessagetokreductionsendOfInputTagtagOfTokendataOfTokenactionTableElementsactionTableRowOffsetsreductionSymbolCountsimmediateActionsgotossparseGotoTableRowOffsetsstateToProdIdxsTableElementsstateToProdIdxsTableRowOffsetsproductionToNonTerminalTableparseErrornumTerminalstagOfErrorTerminalreductions@endOfInputTag@tagOfToken@dataOfToken@actionTableElements@actionTableRowOffsets@reductionSymbolCounts@immediateActions@gotos@sparseGotoTableRowOffsets@stateToProdIdxsTableElements@stateToProdIdxsTableRowOffsets@productionToNonTerminalTable@parseError@numTerminals@tagOfErrorTerminal@get_reductionsget_endOfInputTagget_tagOfTokenget_dataOfTokenget_actionTableElementsget_actionTableRowOffsetsget_reductionSymbolCountsget_immediateActionsget_gotosget_sparseGotoTableRowOffsetsget_stateToProdIdxsTableElementsget_stateToProdIdxsTableRowOffsetsget_productionToNonTerminalTableget_parseErrorget_numTerminalsget_tagOfErrorTerminallexerstartStateCountIsEmptycontentscountEnsurenewSizeget_CountPopPeepSeqModuleToListListModuleReverseTopPushxget_IsEmptyConsoleWritePrintStackaFirstEntriesRestfirstEntriesrestinit@23-1sizecomparerset_contentsIterateentriesFailInitTryGetValueGetRestkConsset_ItemAddyzClearget_FirstEntriesget_RestEnumeratorget_ComparerGetEnumeratorMoveNextget_Currentget_KeyDisposeKeyNotFoundExceptionFindAllget_TailOrNullFoldaccStateContainsKeyContainsget_HeadOrDefaultRemoveTryFindSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorSystem-Collections-Generic-IDictionary`2-get_ItemSystem-Collections-Generic-IDictionary`2-set_ItemToArraySystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearGenericEqualityIntrinsicSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsIterateIndexedSystem-Collections-Generic-ICollection`1-CopyToarrIndexSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_Countget_IsReadOnlyget_Keysget_ValuesDefaultMemberAttributeKeySetEmptyget_SetEmptyNewSetNodeGetTagCompilationRepresentationAttributeCompilationRepresentationFlagsSetNodeTreeComparerChooseMinimumElementMaximumElementtreeget_TreerefreshPartitionpredicateFilterExistsForAllDifferenceop_Subtractionop_AdditionIntersectionEqualityCompareget_Chooseget_MinimumElementget_MaximumElementIsSubsetOfIsSupersetOfthatGenericHashIntrinsicMathAbsComputeHashCodeSingletonlSystem-IComparable-CompareTos2NotSupportedException_arg1_arg2tcComparerTagMapEmptyget_MapEmptyNewMapNodeMapNodeFirstfolderFoldSectionlohiFoldAndMapactionMapRangemappingFromListieCompareWithm2mbytesmaxbytes@pos@max@get_bytesget_posget_maxset_posvalueGenericComparisonWithComparerIntrinsicReadByteEncodingget_UTF8ReadUtf8StringFromBytesstartlengthReadBytesget_PositionbbArraybbCurrentbbArray@bbCurrent@get_bbArrayget_bbCurrentset_bbArrayset_bbCurrentCloseEmitIntAsByteEmitByteEmitIntsAsBytesFixupInt32EmitInt32EmitBytesEmitInt32AsUInt16EmitBoolAsByteEmitUInt16EmitInt64szDataoget_DataMakeNumberContextualErrorMessagetypeNameContexttpDesignationmethodNameContexterrorserrNummessagesget_Numberget_RangeEnvironmentget_NewLineJoinMapTextWithContextget_ContextualErrorMessageIterTypeProviderTypeProviderAssemblyRefTypeProvider@TypeProviderAssemblyRef@get_TypeProviderget_TypeProviderAssemblyReftypeProvidertypeProviderAssemblyRefAccessObjectDirectlyGetTypeget_FullNameget_TypeProviderDesignationAggregateExceptionProtectPApplyUPApply2U1U2PApply3U3PApply4U4PApplyNoFailurePApplyWithProviderArgumentNullExceptionPApplyArraymethodNamePApplyOptionPUntaintPUntaintNoFailureget_AccessObjectDirectlyCreateAllproviderSpecsOfTypeCoerceClassAttributeIsStrongIsWeakNewStrongget_IsStrongWeakReferenceNewWeakget_IsWeakMostRecentonStrongDiscardkeepStronglyareSamerefskeepMax@38-1OperatorsDefaultArgOptionalArgumentAttributekeepMaxFilterAndHoldTryPeekKeyValueImplTryPeekKeyValuekeyTryGetKeyValueImplAssignWithStrengthTryGetKeyValueTryGetRemoveImplPutHeadget_MostRecentstrongDiscarddataop_AppendPromoteMapIndexednewdatadiscard1TKeyTValuecomputecacheisStillValid@159logComputedNewValue@162logUsedCachedValue@165isStillValidareSameForSubsumptionlogComputedNewValuelogUsedCachedValueonDiscardGetAvailableGetSetAlternategroupByFirstHashIdentityReferencereferenceDistinctGetInvalidPathCharsIndexOfAnyIsInvalidDirectorypathIsNullOrEmptyGetDirectoryNameGetFileNameIsInvalidPathFirstElementsLastElementspushfirstElementslastElementsRevnumLastElementsemptyinit@23-9firstElementsInlastElementsRevInnumLastElementsInxslastElementsToFlatListget_FirstElementsget_LastElementsAppendOneAppendysindentthreadNameLogOutlognoopDisposableoutinit@24-11indent@ThreadStaticAttributeDefaultValueAttributethreadName@get_indentget_threadNameset_indentset_threadNameget_Logset_Logget_Outset_OutConcatEndsWithStringComparisonShouldLogloggingClassThreadget_CurrentThreadget_ManagedThreadIdCurrentThreadInfoTimeSpanget_Nowget_TotalMillisecondsElapsedTimeIndentSpacesFlushLogMessagemsgNameCurrentThreadCallImplfunctionNamedescriptionFuncdeCallCallByThreadNamedPrintLinemessageFuncPrintBeepHelperbeeptypeBeepOkBeepErrorBeepAbstractClassAttributeWarningIsWarningIsError_tag_unique_Warning_unique_Errorget_Warningget_IsWarningget_Errorget_IsErrorRequireQualifiedAccessAttributeFileNameStartLineStartColumnEndColumnSubcategoryFileName@StartLine@EndLine@StartColumn@EndColumn@Severity@Message@Subcategory@get_FileNameget_StartLineget_EndLineget_StartColumnget_EndColumnget_Severityget_SubcategoryfileNamestartLineendLinestartColumnendColumnseveritysubcategoryCompareOrdinalToStringGenericLessThanIntrinsicCreateFromExceptionAndAdjustEofexnwarntrimfallbackRangeCreateFromExceptionErrorsWarningsErrorsAndWarningsMostRecentErrormostRecentErrorunwindBPunwindELinit@1029-12get_Errorsget_Warningsget_ErrorsAndWarningsTryGetFirstErrorTextget_MostRecentErrorerrProtectWithDefaultdfltProtectAndDiscardSystem-IDisposable-Disposevalue__TextKeywordIdentifierUpperIdentifierInactiveCodePreprocessorKeywordOperatorMemberSelectMatchBracesChoiceSelectMethodTipParamStartParamNextParamEndLiteralDelimiterWhiteSpaceLineCommentLeftColumnRightColumnColorClassCharClassTokenNameFullMatchedLengthLeftColumn@RightColumn@ColorClass@CharClass@TriggerClass@Tag@TokenName@FullMatchedLength@get_LeftColumnget_RightColumnget_ColorClassget_CharClassget_TriggerClassget_TokenNameget_FullMatchedLengthleftColumnrightColumncolorClasscharClasstriggerClasstagtokenNamefullMatchedLengthCamlOnlyEndLineThenSkipEndLineThenTokenInitialStateBeforeHashNoFurtherMatchPossiblemaxLengthlexArgsLightOnlexArgsLightOffskipsingleLineTokenStatefsxtokenStackfilenameScanTokenlexStateColorStateOfLexStateLexStateOfColorStatecolorStatedelayTokentok_0tok_1tok_2IndexOfprocessDirectivestrdirectiveLengthdelaycontSubstringprocessWhiteAndCommentoffsetprocessDirectiveLineofsprocessHashEndElseprocessHashIfLineconditionalDefinesToCharArrayCreateLineTokenizerlineTextCreateBufferTokenizerbufferFillerNamespaceDeclIsNamespaceDeclModuleFileDeclIsModuleFileDeclExnDeclIsExnDeclModuleDeclIsModuleDeclTypeDeclIsTypeDeclMethodDeclIsMethodDeclPropertyDeclIsPropertyDeclFieldDeclIsFieldDeclOtherDeclIsOtherDecl_unique_NamespaceDecl_unique_ModuleFileDecl_unique_ExnDecl_unique_ModuleDecl_unique_TypeDecl_unique_MethodDecl_unique_PropertyDecl_unique_FieldDecl_unique_OtherDeclget_NamespaceDeclget_IsNamespaceDeclget_ModuleFileDeclget_IsModuleFileDeclget_ExnDeclget_IsExnDeclget_ModuleDeclget_IsModuleDeclget_TypeDeclget_IsTypeDeclget_MethodDeclget_IsMethodDeclget_PropertyDeclget_IsPropertyDeclget_FieldDeclget_IsFieldDeclget_OtherDeclget_IsOtherDeclbodyRangeUniqueNameNameGlyphKindBodyRangeIsSingleTopLeveluniqueNamesingleTopLevelkindglyphbodyRange@41get_bodyRangeget_UniqueNameget_Nameget_Glyphget_Kindget_BodyRangeget_IsSingleTopLevelWithUniqueNamerange_of_mDeclaration@Nested@get_Declarationget_NesteddeclarationnestedDeclarationsdeclarationsget_DeclarationsLongIdLongIdStartLocationLongIdEndLocationOpenParenLocationTupleEndLocationsIsThereACloseParenNamedParamNamestupleEndLocationsopenParenLocationlongIdStartLocationlongIdEndLocationlongIdisThereACloseParennamedParamNames@26namedParamNamesget_LongIdget_LongIdStartLocationget_LongIdEndLocationget_OpenParenLocationget_TupleEndLocationsget_IsThereACloseParenget_NamedParamNamesClassIsClassIsInterfaceUnknownIsUnknown_unique_Class_unique_Interface_unique_Unknownget_Classget_IsClassget_Interfaceget_IsInterfaceget_Unknownget_IsUnknownIsCopyOnUpdateIsConstructorIsNewNewCopyOnUpdateget_IsCopyOnUpdateNewConstructorget_IsConstructorNewNewget_IsNewInvalidIsInvalidIsInheritIsRecordFieldRangeOperatorIsRangeOperator_unique_Invalid_unique_RangeOperatorget_Invalidget_IsInvalidNewInheritget_IsInheritNewRecordFieldget_IsRecordFieldget_RangeOperatorget_IsRangeOperatorInputParseHadErrorsDependencyFilesErrors@Input@ParseHadErrors@DependencyFiles@get_Inputget_ParseHadErrorsget_DependencyFilesinputparseHadErrorsdependencyFilesParseTreeparsedget_ParseTreeget_ResultsFindNoteworthyParamInfoLocationscolGetNavigationItemsImplValidateBreakpointLocationImplGetNavigationItemsValidateBreakpointLocationInEqualityRelationXmlCommentNoneIsXmlCommentNoneIsXmlCommentTextIsXmlCommentSignature_unique_XmlCommentNoneget_XmlCommentNoneget_IsXmlCommentNoneNewXmlCommentTextget_IsXmlCommentTextNewXmlCommentSignatureget_IsXmlCommentSignatureDataTipElementNoneIsDataTipElementNoneIsDataTipElementIsDataTipElementGroupIsDataTipElementCompositionError_unique_DataTipElementNoneget_DataTipElementNoneget_IsDataTipElementNoneNewDataTipElementget_IsDataTipElementNewDataTipElementGroupget_IsDataTipElementGroupNewDataTipElementCompositionErrorget_IsDataTipElementCompositionErrorNewDataTipTextDescriptionTextdescriptionTextHoldertaskSystem.Threading.TasksTask`1Choice1Of2Choice2Of2Taskget_FactoryTaskFactoryFunc`1StartNewWaitget_DescriptionTextItemsget_ItemsDescriptionSortByOfListinfoReaderdenvitemssyncopcheckAliveNewChoice2Of2CanonicalTypeTextForSortingName@CanonicalTypeTextForSorting@Display@Description@get_CanonicalTypeTextForSortingget_Displayget_DescriptioncanonicalTypeTextForSortingdisplaydescriptionParametersIsStaticArgumentsType@Parameters@IsStaticArguments@get_Typeget_Parametersget_IsStaticArgumentstypeparametersisStaticArgumentsMethodsmethodOverloadsCacheConditionalWeakTable`2methodsinit@268-13unsortedMethodsget_Methodsget_HeadNoSourceCodeIsNoSourceCodeIsProvidedTypeIsProvidedMember_unique_NoSourceCodeget_NoSourceCodeget_IsNoSourceCodeNewProvidedTypeget_IsProvidedTypeNewProvidedMemberget_IsProvidedMemberIsDeclNotFoundIsDeclFoundNewDeclNotFoundget_IsDeclNotFoundNewDeclFoundget_IsDeclFoundIsMembersIsCancelTypecheckStaleAndTextChangedIsTypecheckStaleAndTextChanged_unique_Empty_unique_TypecheckStaleAndTextChangedNewMembersget_IsMembersNewCancelget_IsCancelget_TypecheckStaleAndTextChangedget_IsTypecheckStaleAndTextChangedYesIsYesNoIsNo_unique_Yes_unique_Noget_Yesget_IsYesget_Noget_IsNoNoneBecauseTypecheckIsStaleAndTextChangedIsNoneBecauseTypecheckIsStaleAndTextChangedNoneBecauseThereWereTypeErrorsIsNoneBecauseThereWereTypeErrorsIsNoneIsSome_unique_NoneBecauseTypecheckIsStaleAndTextChanged_unique_NoneBecauseThereWereTypeErrors_unique_Noneget_NoneBecauseTypecheckIsStaleAndTextChangedget_IsNoneBecauseTypecheckIsStaleAndTextChangedget_NoneBecauseThereWereTypeErrorsget_IsNoneBecauseThereWereTypeErrorsget_Noneget_IsNoneNewSomeget_IsSomepnreiodeadget_Posget_ItemOccurenceget_DisplayEnvget_NameResolutionEnvget_AccessorDomainDebugToStringtextSnapshotInfosTcConfigsProjectDirsFilesFallbacksEnvsloadClosuregcapturedExprTypingsamapcapturedNameResolutions@437capturedResolutionsWithMethodGroups@438getDataTipTextCachencenvcapturedNameResolutionscapturedResolutionsWithMethodGroupsGetExtensionGetDeclarationsuntypedParseInfoOptlineStrcolAtEndOfNameshasTextChangedSinceLastTypecheckGetReferenceResolutionDataTipTextGetDataTipTextnamesGetF1KeywordGetMethodsnamesOptGetDeclarationLocationidxisDeclGetExtraColorizations|CNR|cnrget_contentsGetBestEnvForPoscursorPosFilterItemsForCtorsfilterCtorsget_Item7GetPreciseItemsFromNameResolutionmembersByResidueresolveOverloadsGetExprTypingForPositionendOfExprPosGetRecdFieldsForExprGetPreciseCompletionListFromExprTypingsuntypedParseInfoGetEnvironmentLookupResolutionscolAtEndOfNamesAndResidueplidshowObsoleteGetClassOrRecordFieldsEnvironmentLookupResolutions_residueSpecializeGetDeclItemsForNamesAtPositionorigLongIdentOptresidueOptIsValidSignatureFileItemfilterIntellisenseCompletionsBasedOnParseContextsetHashSet`1System.Coreset@get_setunresolvedSetEqualsProjectFileNameProjectFileNamesProjectOptionsIsIncompleteTypeCheckEnvironmentUseScriptResolutionRulesLoadTimeUnresolvedReferencesProjectDirectoryProjectFileName@ProjectFileNames@ProjectOptions@IsIncompleteTypeCheckEnvironment@UseScriptResolutionRules@LoadTime@UnresolvedReferences@get_ProjectFileNameget_ProjectFileNamesget_ProjectOptionsget_IsIncompleteTypeCheckEnvironmentget_UseScriptResolutionRulesget_LoadTimeget_UnresolvedReferencesprojectFileNameprojectFileNamesprojectOptionsisIncompleteTypeCheckEnvironmentuseScriptResolutionRulesloadTimeunresolvedReferencesAreSameProjectNameoptions1options2AreSameProjectForParsingAreSameProjectForBuildingget_ProjectDirectoryAppendFormatHasFullTypeCheckInfodetails@1620decrementerdisposeddetailsFinalizeget_HasFullTypeCheckInfoget_DefaultAsyncBuilderFSharpAsyncBuilderReturnpositiontokenTagisDeclarationdisposeMatchFailureExceptioncheckBuilderNoAntecedantIsNoAntecedantAbortedIsAbortedIsTypeCheckSucceeded_unique_NoAntecedant_unique_Abortedget_NoAntecedantget_IsNoAntecedantget_Abortedget_IsAbortedNewTypeCheckSucceededget_IsTypeCheckSucceededNewNotifyFileTypeCheckStateIsDirtyNoChangeFileChangedTimeChangedSizeDeletedAddedNewIsResultObsoletenotifyFileTypeCheckStateIsDirtyselfreactorscriptClosureincrementalBuildersCacheinit@1771-14UntypedParsesourceUntypedParseForSlotslotGetSlotsCountTypeCheckSourceparseResultisResultObsoleteGetCheckOptionsFromScriptRootloadedTimestampotherFlagsInvalidateConfigurationNotifyProjectCleanedInvalidateAllStartBuildingStopBuildingWaitForBackgroundCompileCommonExtensionsAddToObservableIObservable`1CreateOneIncrementalBuilderGetAntecendantResultWithoutSideEffectsDoStepGlobalForegroundParseCountStatisticGlobalForegroundTypeCheckCountStatisticbackgroundCompilerforegroundParseCountforegroundTypeCheckCountbraceMatchMruuntypedCheckMrutypeCheckLookupinit@2011-15TryGetRecentTypeCheckResultsForFileGCCollectWaitForPendingFinalizersClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransientsfileversionStartBackgroundCompileStopBackgroundCompileget_GlobalForegroundParseCountStatisticget_GlobalForegroundTypeCheckCountStatisticAreSameForParsing_arg3AreSubsumableForParsing_arg4_arg5ComputeBraceMatchingComputeUntypedParseAutoSerializableAttributedefaultFSharpBinariesDirinjectedCompatTypestypesForwardedToMscorlibtypesForwardedToSystemNumericstcImportsCapturedynamicAssemblyCreatorErrorLoggerThatQuitsAfterMaxErrorstcConfigBexiterErrorLoggerInitialTypeChecktcConfigtcImportstcGlobalserrorLoggerassemblyNameniceNameGentcEnv0inputsAddIfNotPresent@167allSourcesAdjustForScriptCompilecommandLineSourceFileslexResourceManagerabortOnErrorZipgetTcImportsFromCommandLine$cont@322displayPSTypeProviderSecurityDialogBlockingUIsourceFilesunitVarTailgetTcImportsFromCommandLineargvdirectoryBuildingFromlcidFromCodePagesetProcessThreadLocalsdisplayBannerIfNeededoptimizeForMemorycreateErrorLoggerrunFromCommandLineToImportingAssembliesBuildInitialDisplayEnvForDocGenerationAppDomainget_CurrentDomainget_BaseDirectoryget_FriendlyNameCombinegetModuleFileNameget_defaultFSharpBinariesDiroutpathoutfileextnGenerateInterfaceDataILResource.get_BytesWriteAllBytesEncodeInterfaceDataexportRemappinggeneratedCcuGenerateOptimizationDataEncodeOptimizationData$cont@619EncodeOptimizationDataget_injectedCompatTypesget_typesForwardedToMscorlibget_typesForwardedToSystemNumericsSetModulecreateMscorlibExportListcreateSystemNumericsExportListValidateKeySigningAttributestopAttrsget_OutputEncodingget_CodePageget_TextInfoTextInfoget_OEMCodePageget_ANSICodePageset_CurrentUICultureDirectoryGetCurrentDirectoryOptionModulemain1bannerAlreadyPrintedmain2get_tcImportsCaptureset_tcImportsCaptureget_dynamicAssemblyCreatorset_dynamicAssemblyCreatormain2bmain2cmain3GetAssembliesmain4mainCompilePrintFormatLineToTextWriterunitVar0tupledArg_0tupledArg_1tupledArg_2tupledArg_3arg10@arg20@WriteLineFailurePatternErrorSinkImplWarnSinkImplget_ErrorCountErrorCountFullErrorCountdelayedLengthForwardDelayedErrorsAndWarningsget_FullErrorCounttuplefiletupledArgpeAddIfNotPresentdelayForFlagsLoggerlowerinputFilesRefToLowerInvariantPrintFormatToTextWriterarg00@resourceisCompilerServiceDllpccurrentGenerateNextnextget_CheckCloseget_LastGeneratedGetFreshEnumeratorclo2arg20systemNumericsAssemblyRefNewSigningInfoeventTargetadd_ProcessExiteventDelegateremove_ProcessExitcallbacksenderprevset_OutputEncodingRuntimeHelpersCreateEventIEvent`2implsmatchValueenumenum0xmlFilevrefvrefFlagsvrefTypeInstsigDataResourcesgeneratedOptDataunionCasev0enum1v1enum2v2enum3casAppliedobjectArgarg00EmitILilGlobals_errorLoggerpdbfileilxMainModulesigningInfoStreamWriterWriteStatsFiledebugStaticLinkingget_debugStaticLinkingisProvided@1211ccuTryPickUnzipLazyExtensionsCreateFromValueStaticLinkILModules$cont@1183dependentILModulesStaticLinkILModulesFindAndAddMscorlibTypesForStaticLinkingIntoFSharpCoreLibrarydummyEntry@1348nmFindDependentILModulesForStaticLinking$cont@1366-1depModuleTableremainingilAssemRefFindDependentILModulesForStaticLinking$cont@1347FindDependentILModulesForStaticLinkingFindProviderGeneratedILModulesproviderGeneratedAssembliesloop@1514-70ilOrigTyRefilTypeDefbuildRelocatedGeneratedType@1531allTypeDefsInProviderGeneratedAssembliesloop@1557-72trySplitFind@1556implantTypeDef@1564isNestedtdefsenctdrw@1589ilOrigTyRefsForProviderGeneratedTypesToRelocateilOrigScopeRefStaticLinkmatchValue0m0assemsintfDataResourcesoptDataResourcesIFormattablemodulstrefilattrmdfakeModuleedgesvisitedname@data@ccu@refs@edges@visited@get_nameget_dataget_ccuget_refsget_edgesget_visitedset_edgesset_visitedSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-EqualsprovAssemStaticLinkInfoimportedBinarydllInfomodulactivePatternResultproviderGeneratedILModuleslocalProvAssemStaticLinkInfomatchValue1activePatternResult0k0clo1arg10ilAssemStaticLinkMapCreateDictionaryntdefilModulenodeilTgtTyRefhtdefrewriteExternalRefsToLocalRefsrewriteAssemblyRefsToMatchLibrariesResXResourceReaderSystem.Windows.FormsCastreadResX@996ResourceWriterwriteResources@1002FindAttribute@1043attribVersionSystem.Runtime.InteropServicesRuntimeEnvironmentGetRuntimeDirectoryCreateMainModulecodegenResultsassemVerFromAttribmetadataVersionsecDeclsiattrsdisableJitOptimizationswriterAddResourcequotDataResourcespatternInputpubripatternInput0pub0name0file0clo4arg40clo3arg30assemblyVersionfileVersionproductVersionv3vsVersionInfoResourcewin32ManifestassemblyVersionResourcesavTryFindStringAttributeattribsTryFindIntAttributeTryFindBoolAttributeTryFindVersionAttributeVS_MANIFEST_RESOURCEisLibraryVersionInfoNodeVersionInfoElementwTypeszKeyvalueOptchildrenisString_arg1_0_arg1_1_arg1_2_arg1_3get_UnicodeGetBytesstringStringTablelanguagestringsStringFileInfostringTablesVarFileInfovarsVS_FIXEDFILEINFOdwFileFlagsMaskdwFileFlagsdwFileOSdwFileTypedwFileSubtypelwFileDateVS_VERSION_INFOfixedFileInfostringFileInfovarFileInfoVS_VERSION_INFO_RESOURCEdata_0data_1data_2wValueLengthchildenum4v4enum5stringTablelangcodePagev5v6enum6v7enum7v8enum8ResFileNodedwTypeIDdwNameIDwMemFlagswLangIDResFileHeaderb0b1b2b3i16i32PaddedinitialAlignmentOperatorIntrinsicsRangeInt32getDocxmlDochasDocdoValSig@468ptextdoTyconSig@469doModuleSig@480doValSigmspeccomputeXmlDocSigsaddMember@507membersiddoModule@525doValdoTyconCreateTextwriteXmlDocxmlfiletcosWriteInterfaceFiletypedAssemblyPrintFormatToStringBuilderdefaultFSharpBinariesDir@565injectedCompatTypes@866typesForwardedToMscorlib@884typesForwardedToSystemNumerics@893debugStaticLinking@1175tcImportsCapture@1890dynamicAssemblyCreator@1891init@IsIdentifierPartCharacterIsLongIdentifierPartCharacterGetLongNameFromStringFormatAndOtherOverloadsStringget_IsIdentifierPartCharacterget_IsLongIdentifierPartCharacterget_GetLongNameFromStringget_FormatAndOtherOverloadsStringremainingOverloadsGuidGetLanguageIDDefaultReferencesForOrphanSourcesget_DefaultReferencesForOrphanSourcesStartsWithTrimMatchAndExtract@1715definesflagprefixQuickParseDefines@1720GetCompilationDefinesForEditingcompilerFlagsIsCheckerSupportedSubcategoryoneError@1210thisreport@1207-2ReportUnexpectedExceptionparenTokensBalance@1309t1t2matchBraces@1323matchBracesOnlymatchPairReftokenizerstackParseSourcereportErrorsmainInputFileNameprojectSourceFilesfileOfBackgroundError@1461err_0err_1sameFile@1462TypeCheckSource$cont@1454backgroundErrorstcStateCollectedErrorsAndWarningsAnyErrorstcConfig@1187errorsAndWarningsCollectorerrorCountfileInfoLastIndexOfget_ErrorLoggerget_CollectedErrorsAndWarningsset_TcConfigget_AnyErrorserrorSinkerrHandler_oldLoggerself1@lightSyntaxStatusCapturedEnvsCapturedExprTypingsCapturedNameResolutionsCapturedMethodGroupResolutionscapturedEnvscapturedNameResolutionIdentifierscapturedMethodGroupResolutionsget_CapturedEnvsget_CapturedExprTypingsget_CapturedNameResolutionsget_CapturedMethodGroupResolutionsMicrosoft-FSharp-Compiler-Nameres-ITypecheckResultsSink-NotifyEnvWithScopenenvMicrosoft-FSharp-Compiler-Nameres-ITypecheckResultsSink-NotifyExprHasTypeMicrosoft-FSharp-Compiler-Nameres-ITypecheckResultsSink-NotifyNameResolutionitemMethodGroupoccurenceTypeallowedRangehashLoadsInFilebackgroundErrorprintCanonicalizedTypeNametauParamOfRecdFieldUnzip3Map3ParamsOfParamDatasparamDatasrtyParamsOfTypesrtau|ItemIsTypeWithStaticArguments|_|f@1-80spgetParamsOfTypes@162Map2ParamsOfItemparamPrefixargTybuildCacheSizerecentForgroundTypeCheckLookupSizebraceMatchCacheSizeuntypedCheckMruSizemaxTypeCheckErrorsOutOfProjectContextGetEnvironmentVariableParseInt32GetEnvIntegerget_buildCacheSizeget_recentForgroundTypeCheckLookupSizeget_braceMatchCacheSizeget_untypedCheckMruSizeget_maxTypeCheckErrorsOutOfProjectContextAutoOpenAttributebuildCacheSize@63recentForgroundTypeCheckLookupSize@64braceMatchCacheSize@65untypedCheckMruSize@66maxTypeCheckErrorsOutOfProjectContext@67DefaultReferencesForOrphanSources@1710f@1-81f@1-82getOverloadsForItem$cont@295getOverloadsForItem@289lineIfExists@994appendisPosMatch@997arTrimEnddataTipOfReferences$cont@1016matchesCompute@1061-1fail$cont@1140defaultReasonfail@1139-5scopereturnItemsOfType@541GetBaseClassCandidates@729GetInterfaceCandidates@734f@744-83filterDeclItemsByResidue@747residueFilterRelevantItemsBy@741exactMatchResidueFindInEnv@775locFindRecordFieldsInEnv@777IsWhiteSpacefindFirstNonWsPos@804|FilterRelevantItems|_|@856exactMatchResidueOptorig_0orig_1orig_2GetDeclItemsForNamesAtPosition$cont@924nameResItemsqualItemsGetHashCode$cont@1571-16minfo_arg30isInterfaceFileBind_arg31arg40@_arg33allTypesconstrtyp_arg35_arg36bestSoFarmostDeeplyNestedEnclosingScopebestAlmostIncludedSoFarendOfNamesPosarg0arg30@slsc_arg21self2@_arg24_arg23VisitExprVisitModuleDecl_arg8get_GenericEqualityERComparer_arg6builderUsingDelayclo5arg50x2x1depbc_arg7_arg9_arg11_arg13_arg14_arg16_arg17_arg18createErrorstcErrorsTruncate_arg20DebuggerCheckThis_arg25_arg26isFunctionOutputFullNameisDeclInfoppFfnFrangeOfPropInfopinforangeOfMethInforangeOfEventInfoeinfo|FilterDefaultStructCtors|ctorsrangeOfItemcomputeCcuOfTyconReftcrefccuOfItemfileNameOfItemqualProjectDirlibFileOfEntityRefget_TailParamNameAndTypesOfUnaryCustomOperationmetaInfoOfEntityRefGetXmlDocSigOfEntityReferefGetXmlDocSigOfValRefGetXmlDocSigOfRecdFieldInforfinfoGetXmlDocSigOfUnionCaseInfoucinfoGetXmlDocSigOfMethInfo$cont@328GetXmlDocSigOfMethInfoGetXmlDocHelpSigOfItemForLookup$cont@394GetXmlDocHelpSigOfItemForLookupf@357-59GetXmlCommentFormatOverloadsToListminfospartialDistinctByperseq|ItemWhereTypIsPreferred|_|equalTypes@511ty2Equals$cont@514-20f@80-60GetHashCode$cont@553-15f@80-61ItemDisplayPartialEqualityRemoveDuplicateModuleRefsmodrefsRemoveDuplicateItemsf@80-62RemoveExplicitlySuppressedSimplerDisplayEnv_isDeclInfof@357-63f@357-64ucf@357-65f@357-66aprefptauf@357-67ecreff@357-68rfieldf@357-69f@357-70finfof@357-71f@357-72f@357-73usageTextcustomOpNamef@357-74f@357-75deltyftyf@357-76FormatItemDescriptionToDataTipElement$cont@847modreff@357-77FormatItemDescriptionToDataTipElementGetValueFormatItemReturnTypeToBufferunwindTypeAbbrev@938getKeywordForValRef@946getKeywordForMethInfo@959GetF1Keyword$cont@1073FormatDescriptionOfItemFormatReturnTypeOfItemReprToGlyph@1114reprTypToGlyph@1142ValueToGlyph@1153f@80-78NamedItemToMajorGlyph@1158f@80-79NamedItemToMinorGlyph@1187GlyphOfItemargInfosargInfoisPPty0NewWrapdictstmiMicrosoft-FSharp-Compiler-SourceCodeServices-IPartialEqualityComparer`1-InEqualityRelationitsupprfldget_FormatOverloadsToListFormatOverloadsToListScopehookmaxMembersdataTipSpinWaitTimeget_maxMembersget_dataTipSpinWaitTimemaxMembers@53dataTipSpinWaitTime@57FormatOverloadsToList@97work@1223declisOpItem@1310NewChoice1Of2GetUntypedParseResultsupiResultOfRange@407CheckLongIdent@408longIdentGetRangeOfExprLeftOfDotparseTreeOptTakeWhilegetLidParts@498lidTryGetExpression@507foundCandidateexprTryFindExpressionIslandInPositiondive@554-1pick@556-7traverseLidOrElse@577optExprIfLeftOfLongIdVisitExpr$cont@577traverseSynExprdefaultTraversepickTryFindExpressionASTLeftOfDotLeftOfCursorcollect@653-8partsdotsparseLid@652|SynAttr|_|@686getKind@691isClassisInterfaceisStructFSharpChoice`5NewChoice5Of5NewChoice1Of5NewChoice2Of5NewChoice3Of5NewChoice4Of5|Class|Interface|Struct|Unknown|Invalid|@685synAttributesgetCompletionContextForInheritSynMember@707typeDefnKindcompletionPathisInRhsOfRangeOp@740contextFromTreePath@757completionPath_0completionPath_1TryGetCompletionContextleftPartResultproject_debugObjdiveResultsattrVisitRecordFieldVisitInheritSynMemberDefnIsInterfaceFileAdditionalDefinesForUseInEditorcompilableExtensionssingleFileProjectExtensionsget_compilableExtensionsget_singleFileProjectExtensionsIsCompilableMustBeSingleFileProjectextcompilableExtensions@35singleFileProjectExtensions@37checkRange@140allowSameLinewalkBindSeqPt@142walkForSeqPt@143walkWhileSeqPt@144walkTrySeqPt@145walkWithSeqPt@146walkFinallySeqPt@147walkBind@149-1walkExprs@161eswalkBinds@162walkMatchClauses@163-2clwalkExprOpt@168-2spAlwayseOptwalkExpr@172-4walkTycon@306CreateSequencewalkMember@314membwalkDecl@328walkModule@351walkImplFile@358modulesfindBreakPoints@139pos0synPatsynExprspInfomemFlagsOptwhenExpre0e2ise1e3spWithspFinallyspTryspSeqe3optmembDefnsmembDefns0bindsunionCase0spExprunionCase1declsunionCase2tydefsm1d0unionCase3m3_msgisStaticArgdigOutIdentStartEndFromAnApp@55getNamedParamName$cont@82getNamedParamName@81handleSingleArg@104parenRangerpRangeOptastFindNoteworthyParamInfoLocationsSynExprExactParen$cont@118astFindNoteworthyParamInfoLocationsSynExprExactParen@98getTypeName@166synTypetraverseInputparseTreeVisitTypeAbbrevVisitImplicitInheritrange_of_declsunion_ranges_checkedr1r2range_of_decls'get_range_of_declsmoduleRangeidmothersfldspec_rangefldspecMapModuleaddItemName@101nameMapFinduniqueName@105createDeclLid@110baseNamebaseGlyphbodymcreateDecl@115createMemberLid@121createMember@124processBinding@129isMemberprocessTycon$cont@164topMembersprocessTycon@154processBindingprocessMembers@193processNestedDeclarations@213processTopLevelDeclarations@219SortInPlaceWithf@1-57nestgetNavigationFromImplFileget_emptycasesfieldsempty@270-1rangeContainsPosLeftEdgeInclusiverangeContainsPosEdgesExclusivedivepick$cont@103_line_colouterRangepick@144-2traverseSynModuleDecl@145visitortraverseSynModuleOrNamespace@162diveIntoSeparator@183offsideColumnscPosOptcopyOptdefaultTraverse$cont@309path@309traverseSynExpr@165normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters@422traverseInherittraverseSynTypeDefn@462pick@481-5VisitInterfaceSynMemberDefnTypetraverseSynMemberDefn@480traverseSynMatchClause@511VisitBindingtraverseSynBinding@523TraverseIsExprIsModuleIsModuleOrNamespaceIsTypeDefnIsMemberDefnIsMatchClauseIsBindingNewExprget_IsExprNewModuleget_IsModuleNewModuleOrNamespaceget_IsModuleOrNamespaceNewTypeDefnget_IsTypeDefnNewMemberDefnget_IsMemberDefnNewMatchClauseget_IsMatchClauseNewBindingget_IsBinding_ty_mbindingVisitMatchClausemc_componentInfo_typeDefnKind_synType_members_range_path_copyOpt_recordFieldSndself3@self4@traverseSynBindingtraverseSynTypeDefnpick0sepOptinheritRangewithRangefieldinheritOptifacesbaseCallOptnewCallbinds0synMatchClauseListsynBindingListsynExprOptsynExpr2synExprListmem2mem1traverseSynMemberDefnGroupBysynMemberDefnssynComponentInfosynTypeDefnKindsynTypeDefnReprsynMemberDefns0synTypeDefnSimpleReprdebugObjsynExprOptiontraverseSynModuleOrNamespaceiIconGroupClassiIconGroupConstantiIconGroupDelegateiIconGroupEnumiIconGroupEnumMemberiIconGroupEventiIconGroupExceptioniIconGroupFieldBlueiIconGroupInterfaceiIconGroupTextLineiIconGroupScriptiIconGroupScript2iIconGroupMethodiIconGroupMethod2iIconGroupModuleiIconGroupNameSpaceiIconGroupFormulaiIconGroupPropertyiIconGroupStructiIconGroupTemplateiIconGroupTypedefiIconGroupTypeiIconGroupUnioniIconGroupVariableiIconGroupValueTypeiIconGroupIntrinsiciIconGroupErroriIconGroupFieldYellowiIconGroupMisc1iIconGroupMisc2iIconGroupMisc3iIconItemPubliciIconItemInternaliIconItemSpecialiIconItemProtectediIconItemPrivateiIconItemShortCutiIconItemNormaliIconBlackBoxiIconLibraryiIconProgramiIconWebProgramiIconProgramEmptyiIconWebProgramEmptyiIconComponentsiIconEnvironmentiIconWindowiIconFolderOpeniIconFolderiIconArrowRightiIconAmbigiousiIconShadowClassiIconShadowMethodPrivateiIconShadowMethodProtectediIconShadowMethodiIconInCompleteSourceget_iIconGroupClassget_iIconGroupConstantget_iIconGroupDelegateget_iIconGroupEnumget_iIconGroupEnumMemberget_iIconGroupEventget_iIconGroupExceptionget_iIconGroupFieldBlueget_iIconGroupInterfaceget_iIconGroupTextLineget_iIconGroupScriptget_iIconGroupScript2get_iIconGroupMethodget_iIconGroupMethod2get_iIconGroupModuleget_iIconGroupNameSpaceget_iIconGroupFormulaget_iIconGroupPropertyget_iIconGroupStructget_iIconGroupTemplateget_iIconGroupTypedefget_iIconGroupTypeget_iIconGroupUnionget_iIconGroupVariableget_iIconGroupValueTypeget_iIconGroupIntrinsicget_iIconGroupErrorget_iIconGroupFieldYellowget_iIconGroupMisc1get_iIconGroupMisc2get_iIconGroupMisc3get_iIconItemPublicget_iIconItemInternalget_iIconItemSpecialget_iIconItemProtectedget_iIconItemPrivateget_iIconItemShortCutget_iIconItemNormalget_iIconBlackBoxget_iIconLibraryget_iIconProgramget_iIconWebProgramget_iIconProgramEmptyget_iIconWebProgramEmptyget_iIconComponentsget_iIconEnvironmentget_iIconWindowget_iIconFolderOpenget_iIconFolderget_iIconArrowRightget_iIconAmbigiousget_iIconShadowClassget_iIconShadowMethodPrivateget_iIconShadowMethodProtectedget_iIconShadowMethodget_iIconInCompleteSourcerevertToDefaultLexContlexstateNumBitsncommentsNumBitsstartPosNumBitshardwhiteNumBitsifdefstackCountNumBitsifdefstackNumBitslexstateStartncommentsStartstartPosStarthardwhitePosStartifdefstackCountStartifdefstackStartlexstateMaskncommentsMaskstartPosMaskhardwhitePosMaskifdefstackCountMaskifdefstackMaskcomputeNextLexStateprevLexcontget_revertToDefaultLexContget_lexstateNumBitsget_ncommentsNumBitsget_startPosNumBitsget_hardwhiteNumBitsget_ifdefstackCountNumBitsget_ifdefstackNumBitsget_lexstateStartget_ncommentsStartget_startPosStartget_hardwhitePosStartget_ifdefstackCountStartget_ifdefstackStartget_lexstateMaskget_ncommentsMaskget_startPosMaskget_hardwhitePosMaskget_ifdefstackCountMaskget_ifdefstackMaskencodeLexContncommentsifdefStacklightdecodeLexContencodeLexIntlexcontdecodeLexIntargsWithIfDefs@508ifdcallLexContTokenInfoToUpperInvarianttokenInfologgingTypeslogginginitialLoggingGUITypesloggingGUIloggingStdOutdoInitget_loggingTypesget_loggingget_initialLoggingGUITypesget_loggingGUIget_loggingStdOutget_doInitinitdoInit@124revertToDefaultLexCont@400startPosNumBits@406hardwhitePosStart@420ifdefstackCountStart@421ifdefstackStart@422lexstateMask@424ncommentsMask@425startPosMask@426hardwhitePosMask@427ifdefstackCountMask@428ifdefstackMask@429CompareTo$cont@93-62CompareTo$cont@93-61CompareTo$cont@93-64objTempCompareTo$cont@93-63GetHashCode$cont@93-14Equals$cont@93-19ColumnsOfCurrentToken@632GetTokenWithPosition@630lexcontInitialTrimStarttheReactorNewExceptionReplyUnexpectedFinishingBuild@84commandNamechannelPostHandleStartBuild@88inboxbuildHandleStartRecentBuild@97NewResultHandleStopBuild@105HandleSyncOp@125opHandleStep@143HandleFinishBuilding@179Loop@199get_theReactorset_theReactorIsResultIsExceptionget_IsResultget_IsExceptionTResultIsStartBuildStartRecentBuildIsStartRecentBuildStepIsStepIsSyncOpIsAsyncOpIsStopBuildIsFinishBuild_unique_StartRecentBuild_unique_StepNewStartBuildget_IsStartBuildget_StartRecentBuildget_IsStartRecentBuildget_Stepget_IsStepNewSyncOpget_IsSyncOpNewAsyncOpget_IsAsyncOpNewStopBuildget_IsStopBuildNewFinishBuildget_IsFinishBuildIdlingIsIdlingIsActivelyBuildingIsFinishingBuildIsBackgroundError_unique_Idlingget_Idlingget_IsIdlingNewActivelyBuildingget_IsActivelyBuildingNewFinishingBuildget_IsFinishingBuildNewBackgroundErrorget_IsBackgroundErrorculturerecentBuildget_LCIDStartCancellationTokenStartBuildingRecentPostAndReplyRunSyncOpget_AsyncResultRunAsyncOpDispatchreplyChannelresultresultCellNewAsyncOkNewAsyncExceptionRegisterResultthis0ReceivetheReactor@258IncrementalBuilderEventsMRUmaxTimeShareMillisecondsmatchValue@1174-1frameworkTcImportsCacheget_IncrementalBuilderEventsMRUMostRecentListGetMostRecentIncrementalBuildEventsnumAddsGetCurrentIncrementalBuildEventNumget_maxTimeShareMillisecondsget_matchValue@1174-1get_frameworkTcImportsCacheSortGetFrameworkTcImportsCompareFileNames@1634warnSink@1743errorSink@1744CurrentEventNumMAXcurIndexget_CurrentEventNumArgumentOutOfRangeExceptionIsIBEParsedIsIBETypecheckedIBENukedIsIBENuked_unique_IBENukedNewIBEParsedget_IsIBEParsedNewIBETypecheckedget_IsIBETypecheckedget_IBENukedget_IsIBENukedExistenceDependencyIncrementalBuildDependencyFilename@ExistenceDependency@IncrementalBuildDependency@get_Filenameget_ExistenceDependencyget_IncrementalBuildDependencyexistenceDependencyincrementalBuildDependencytcEnvtopAttribstypedImplFilestcState@tcImports@tcGlobals@tcConfig@tcEnv@topAttribs@typedImplFiles@errors@get_tcStateget_tcImportsget_tcGlobalsget_tcConfigget_tcEnvget_topAttribsget_typedImplFilesget_errorswarningsSeenInScopeerrorsSeenInScopedebugNameGetErrorswarningOrErrorphaseprojectDirectoryIsAliveBeforeTypeCheckFileFSharpHandler`1ImportedCcusInvalidatedDependenciesThereAreLiveTypeProviderskeepGeneratedTypedAssemblyensureReactivetcConfigPimportsInvalidatedFSharpEvent`1beforeTypeCheckFilenonFrameworkResolutionsframeworkTcImportscleanupItemreferenceCountfileDependenciespartialBuildIncrementUsageCountDecrementUsageCountget_IsAliveget_TcConfigget_Publishget_BeforeTypeCheckFileget_ImportedCcusInvalidatedget_Dependenciesget_ThereAreLiveTypeProvidersGetAntecedentTypeCheckResultsBySlotslotOfFileGetSlotOfFileNameGetParseResultsBySlotCreateBackgroundBuilderForProjectOptionsscriptClosureOptionscommandLineArgsdisposeCleanupItemsetCleanupItemassertNotDisposedStampFileNameTask_isLastCompilandParseTasksourceRangeisLastCompilandTimestampReferencedAssemblyTaskoriginalTimeStampCombineImportedAssembliesTaskNewDoneTypeCheckTasktcAccinput_0input_1input_2input_3OfArrayFinalizeTypeCheckTasktcStatesreferenceTextiaf1_sourceOrDllreferenceclosureresolvedclosureReferencesclosureReferenceTriggercapturingErrorLoggernextidget_nextidNextIdVisitVector@155veVisitScalar@162seFoldBackFoldOverBuildRulesrulesCreateRules@177ToBuildIsEvaluated@213Maximize@267KnownValue@380btGetVectorWidthByExprGetTopLevelExprByNameseekGetExprByNameVectorExprOfId@411ScalarExprOfId@421ExprOfId@426GetExprByIdGetVectorWidthByIdGetScalarExprResultGetVectorExprResultVectorGetVectorExprResultMaxValueMaxTimestamp_inputstampSignatureExtract@494extractorGetAvailable@493rvAllResultsOfExprAvailableAllResultsOfExprApplyScalarExpr@516vectorinputsscalarinputsnowresultsApplyVectorExpr@525ToBoundbuildRulesSeen@553seenHasChanged@558inputtimestampoutputtimestampShouldEvaluate@565currentsigResizeVectorExpr@573actionFuncGetInputAccumulator@600accumulatorExprMinValueVisitVector@588-1VisitScalar@693-1ForeachActionoutputApplyResultactionResultEval@787ExecuteApplygenEvalLeafsFirstCons@803BuildActionList@801EvalGetScalarResultGetVectorResultGetVectorResultBySlotMatchNames@870equalsGetSlotByInputInputVectorInputScalarNewIdtoIntIsScalarInputIsScalarDemultiplexIsScalarMapGetIdGetNameNewScalarInputget_IsScalarInputNewScalarDemultiplexget_IsScalarDemultiplexNewScalarMapget_IsScalarMapget_GetIdget_GetNameIsVectorInputIsVectorScanLeftIsVectorMapIsVectorStampIsVectorMultiplexNewVectorInputget_IsVectorInputNewVectorScanLeftget_IsVectorScanLeftNewVectorMapget_IsVectorMapNewVectorStampget_IsVectorStampNewVectorMultiplexget_IsVectorMultiplexIsScalarBuildRuleIsVectorBuildRuleNewScalarBuildRuleget_IsScalarBuildRuleNewVectorBuildRuleget_IsVectorBuildRuleGetScalarExprGetVectorExprIsNamedVectorOutputIsNamedScalarOutputNewNamedVectorOutputget_IsNamedVectorOutputNewNamedScalarOutputget_IsNamedScalarOutputRuleListRuleList@get_RuleListruleListIsSingleMappedVectorInputIsEmptyTimeStampedInputBoundInputScalarIsBoundInputScalarBoundInputVectorIsBoundInputVectorIsIndexedValueElementUnevaluatedInputIsUnevaluatedInput_unique_BoundInputScalar_unique_BoundInputVector_unique_UnevaluatedInputNewSingleMappedVectorInputget_IsSingleMappedVectorInputNewEmptyTimeStampedInputget_IsEmptyTimeStampedInputget_BoundInputScalarget_IsBoundInputScalarget_BoundInputVectorget_IsBoundInputVectorNewIndexedValueElementget_IsIndexedValueElementget_UnevaluatedInputget_IsUnevaluatedInputIsEvaluatedNotAvailableIsNotAvailableIsInProgressIsAvailableTimestampResultIsInProgress_unique_NotAvailableget_NotAvailableget_IsNotAvailableNewInProgressget_IsInProgressNewAvailableget_IsAvailableget_GetAvailableget_Timestampget_InputSignatureget_ResultIsInProgressGetInProgressContinuationTryGetAvailablezeroElementTimestampmapasListOfSizeget_SizeResizenewsizeSetFoldLeftgetlasttimestampIsScalarResultIsVectorResultNewScalarResultget_IsScalarResultNewVectorResultget_IsVectorResultIsIndexedResultIsScalarValuedResultIsVectorValuedResultIsResizeResultNewIndexedResultget_IsIndexedResultNewScalarValuedResultget_IsScalarValuedResultNewVectorValuedResultget_IsVectorValuedResultNewResizeResultget_IsResizeResultIsIndexedActionIsScalarActionIsVectorActionIsResizeResultActionNewIndexedActionget_IsIndexedActionNewScalarActionget_IsScalarActionNewVectorActionget_IsVectorActionNewResizeResultActionget_IsResizeResultActionExecuteOfList2Rulesget_RulessboptiontablefuncaccumulatorprevoutputtasknameinputExprcardinalityiresvaluestimestampinputsiglistMicrosoft-FSharp-Compiler-IncrementalBuild-IVector-GetVectorExprMicrosoft-FSharp-Compiler-IncrementalBuild-IScalar-GetScalarExproutputsDeclareScalarOutputDeclareVectorOutputGetInitialPartialBuildBoxingMapVector@922IOBoxingScanLeft@934AScanLeftBoxingDemultiplex@945DemultiplexBoxingTouch@956StampAsScalarBoxingMap@904BoxingMultiplex@912MultiplexswStopwatchget_swProcessget_MaxGenerationGetCurrentProcessget_UserProcessorTimeget_TotalSecondsget_PrivateMemorySize64maxGenCollectionCountgcPrevnextid@131sw@296Step@798IncrementalBuilderEventsMRU@1141maxTimeShareMilliseconds@1170ParseInt64clo8arg80clo7arg70clo6arg60errorlexFilterVerboseenableConsoleColoringtagStringtagExetagWinExetagLibrarytagModuletagFiletagFileListtagDirListtagPathListtagResInfotagFullPDBOnlytagWarnListtagSymbolListtagAddresstagInttagNonemlKeywordsFlagshowTermFileCounttPrevnPrevget_lexFilterVerboseget_enableConsoleColoringset_enableConsoleColoringsetFlagSetOptimizeOffSetOptimizeOnSetOptimizeSwitchswitchSetTailcallSwitchjitoptimizeSwitchlocaloptimizeSwitchcrossOptimizeSwitchsplittingSwitchcallVirtSwitchuseHighEntropyVASwitchSplitTryParsesubSystemVersionSwitch$cont@114textsubSystemVersionSwitchSetTargetSetDebugSwitchdtypeget_tagStringget_tagExeget_tagWinExeget_tagLibraryget_tagModuleget_tagFileget_tagFileListget_tagDirListget_tagPathListget_tagResInfoget_tagFullPDBOnlyget_tagWarnListget_tagSymbolListget_tagAddressget_tagIntget_tagNonePrintOptionInfoinputFileFlagsBothreferenceFlagAbbreverrorsAndWarningsFlagsoutputFileFlagsFscresourcesFlagsFsccodeGenerationFlagsmlCompatibilityFlaglanguageFlagslibFlaglibFlagAbbrevcodePageFlagutf8OutputFlagfullPathsFlagcliRootFlag_tcConfigBadvancedFlagsBothnoFrameworkFlagisFscadvancedFlagsFsiadvancedFlagsFsctestFlagvsSpecificFlagsinternalFlagscompilingFsLibFlagcompilingFsLib20FlagcompilingFsLib40Flagget_mlKeywordsFlaggnuStyleErrorsFlagdeprecatedFlagsBothdeprecatedFlagsFscDisplayBannerTextmiscFlagsBothmiscFlagsFscabbreviatedFlagsBothabbreviatedFlagsFsiabbreviatedFlagsFscabbrevFlagSetPostProcessCompilerArgsabbrevArgstestingAndQAFlagsGetCoreFscCompilerOptionsGetCoreServiceCompilerOptionsGetCoreFsiCompilerOptionsget_showTermFileCountPrintWholeAssemblyImplementationheaderget_tPrevget_nPrevReadLineOutOfMemoryExceptionInvalidOperationExceptionAccessViolationExceptionDivideByZeroExceptionNotFiniteNumberExceptionOverflowExceptionArrayTypeMismatchExceptionBadImageFormatExceptionIndexOutOfRangeExceptionInvalidCastExceptionInvalidProgramExceptionMemberAccessExceptionNotImplementedExceptionNullReferenceExceptionReportTime$cont@773descrget_WorkingSetReportTime$cont@810-1ReportTimeAddExternalCcuToOpimizationEnvoptEnvccuinfoInitialOptimizationEnvApplyAllOptimizationstcValimportMapisIncrementalFragmenttassemblyCreateIlxAssemblyGenerator_tcConfigGenerateIlxCodeilxBackendisInteractiveItExprisInteractiveOnMonooptimizedImplsfragNamenetFxHasSerializableAttributeilxGeneratorNormalizeAssemblyRefsfsharpModuleNameignoreFailureOnMono1_1_16ConsoleColorget_ForegroundColorget_BackgroundColorset_ForegroundColorDoWithErrorColorisWarnArgumentExceptionGetEncodingExitblocksoptEnvFirstLoopoptEnvExtraLoopoptEnvFinalSimplifyimplFilescorefenableConsoleColoring@55mlKeywordsFlag@535showTermFileCount@748tPrev@766-1nPrev@767sigSuffixesmlCompatSuffixesimplSuffixesresSuffixesscriptSuffixesdoNotRequireNamespaceOrModuleSuffixeslightSyntaxDefaultExtensionsDefaultBasicReferencesForOutOfProjectSourcesDefaultBasicReferencesForOutOfProjectSources40BasicReferencesForScriptLoadClosureqnameOrderget_sigSuffixesget_mlCompatSuffixesget_implSuffixesget_resSuffixesget_scriptSuffixesget_doNotRequireNamespaceOrModuleSuffixesget_lightSyntaxDefaultExtensionsTargetInvocationExceptionget_InnerExceptionRangeFromException@116RangeOfErrorGetFromException@253GetErrorNumberGetWarningLevelwarningOnlevelspecificWarnOnSplitRelatedException@408ToPhasedSplitRelatedErrorsConstraintSolverTypesNotInEqualityRelation1EConstraintSolverTypesNotInEqualityRelation2EConstraintSolverTypesNotInSubsumptionRelationE|InvalidArgument|_||EndOfStructuredConstructToken|_|@782tokenIdToText$cont@792tidtokenIdToText@791|NONTERM_Category_Expr|_|@989|NONTERM_Category_Pattern|_|@997|NONTERM_Category_IfThenElse|_|@1002|NONTERM_Category_SignatureFile|_|@1007|NONTERM_Category_ImplementationFile|_|@1010|NONTERM_Category_Definition|_|@1013|NONTERM_Category_Type|_|@1018|NONTERM_Category_Interaction|_|@1022get_FormatfoundInContext$cont@1029fix@1086OutputExceptionR$cont@980ctxttokenIdToTextOutputExceptionR$cont@1237-1hassigFileNotFoundExceptionDirectoryNotFoundExceptionIOExceptionUnauthorizedAccessExceptionOutputExceptionR@604OutputPhasedErrorROutputPhasedErrorflattenErrorsSanitizeFileNameimplicitIncludeDirDirectorySeparatorCharoutputWhere$cont@1388showFullPathserrorStyleoutputWhere@1385OutputWhere@1414OutputCanonicalInformation@1420errorNumberreport@1413OutputErrorOrWarningwarningOutputErrorOrWarningContextfileLineFunctionGetFSharpCoreLibraryNameget_DefaultBasicReferencesForOutOfProjectSourcesget_DefaultBasicReferencesForOutOfProjectSources40SystemAssembliesmscorlibAssemblyNamemscorlibVersionmscorlibIsSilverlightget_BasicReferencesForScriptLoadClosureMicrosoft.Win32RegistryhighestInstalledNetFrameworkVersionMajorMinorTryResolveFileUsingPathspathsResolveFileUsingPathsGetWarningNumberComputeMakePathAbsoluteEquals$cont@1695-16Equals$cont@1695-15Equals$cont@1695-14ext@1985Equals$cont@1695-18Equals$cont@1695-17OpenILBinaryopenBinariesInMemoryilGlobalsOptpdbPathOptionnoDebugDataGetNameOfILModuleMakeScopeRefForIlModuleGetCustomAttributesOfIlModulelogmessage@2606-2showMessageslogwarning@2609-1modeerrorAndWarningRangelogerror@2622-1f@1-50_filenamemaxIndexOfReferencereferencesResolve@2661-1targetFrameworkMajorMinortargetProcessorArchitectureoutputDirectorytargetFrameworkDirectoriesf@1-54groupedReferencesf@1-55reff@1-56resolvedFileIsResolved@2716resultingResolutionsoriginalNamenameOfDll@2185defaultCoreLibraryReferenceReportWarningglobalWarnLevelspecificWarnOffReportWarningAsErrorspecificWarnAsErrorspecificWarnAsWarnglobalWarnAsErrorGetScopedPragmasForHashDirectivehdGetScopedPragmasForInputGetErrorLoggerFilteringByScopedPragmascheckFilescopedPragmasCanonicalizeFilenameIsScriptQualFileNameOfModuleNamemodnameQualFileNameOfFilenameQualFileNameOfUniquePathQualFileNameOfSpecsspecsQualFileNameOfImplsPrepandPathToQualFileNamePrepandPathToImplPrepandPathToSpecPrependPathToInputStringModuleComputeAnonModuleNamecheckdefaultNamespacePostParseModuleImpl$cont@2881PostParseModuleImpl_iPostParseModuleSpec$cont@2904intfPostParseModuleSpecPostParseModuleImplsPostParseModuleSpecsParseInputflattenSpecs@3037flattenDefns@3039ParseOneInputLexbufconditionalCompilationDefinesParseOneInputFileretryLockedfallBack@3089assemblyListIsSignatureDataResourceIsOptimizationDataResourceIsReflectedDefinitionsResourceILResource.GetByteReaderPickleToResourcernameWriteSignatureDataWriteOptimizationDatamodulInfoavailableToOptionalCculook@3372-13look@3408-14loop@3743-68typeProviderEnvironmentproviderprovidedNamespacetryFile@4024speculativeFileNameRequireDLLProcessMetaCommand@4291nowarnFloadSourceFdllRequireFpathOfMetaCommandSourcecanHaveScriptMetaCommandshashWarnOnIgnoredSpecDecls@4346WarnOnIgnoredImplDecls@4353ProcessMetaCommandsFromInputstate0addReferencedAssemblyByPath@4392addLoadedSource@4393ApplyNoWarnsToTcConfiggetWarningNumber@4400ApplyMetaCommandsFromInputToTcConfigGetAssemblyResolutionInformationimplicitOpeninternalsAreVisibleHere@4671GetInitialTypecheckerEnvinitmget_qnameOrderTypecheckInitialStateccuNameCheckSimulateExceptionTypecheckOneInputEventuallycheckForErrorsprefixPathOpttcSinkTypecheckOneInputTypecheckMultipleInputsFinishTypecheckMultipleInputsTypecheckSingleInputAndFinishEventuallyTypecheckClosedInputSetFinishmimplsTypecheckClosedInputSetblockOptionsfilterCompilerOptionBlockpredblockcompilerOptionUsageget_BufferWidthprintCompilerOptionprintPublicOptionsheadingoptsequals@5045consider@5047publicBlocksprintCompilerOptionBlocksdumpCompilerOptiondumpCompilerOptionBlockdumpCompilerOptionBlocksisSlashOptoptparseOption@5097getOptionArg@5121compilerOptionargStringgetOptionArgList@5126getSwitchOpt@5133getSwitch@5140reportDeprecatedOption@5151errOptParseNumberStylesattempt@5156collectOtherArgumentoptTokenprocessArg@5144ParseCompilerOptionsData1Data2Data1@Data2@data1data2get_Data1get_Data2_arg10prodIdxprodstokenIdxbosDefaultErrorsIsDefaultErrorsEmacsErrorsIsEmacsErrorsTestErrorsIsTestErrorsVSErrorsIsVSErrors_unique_DefaultErrors_unique_EmacsErrors_unique_TestErrors_unique_VSErrorsget_DefaultErrorsget_IsDefaultErrorsget_EmacsErrorsget_IsEmacsErrorsget_TestErrorsget_IsTestErrorsget_VSErrorsget_IsVSErrorsmainErrorLoadget_MajorWinExeIsWinExeConsoleExeIsConsoleExeDllIsDllIsExe_unique_WinExe_unique_ConsoleExe_unique_Dll_unique_Moduleget_WinExeget_IsWinExeget_ConsoleExeget_IsConsoleExeget_Dllget_IsDllget_Moduleget_IsExeSpeculativeIsSpeculativeReportErrorsIsReportErrors_unique_Speculative_unique_ReportErrorsget_Speculativeget_IsSpeculativeget_ReportErrorsget_IsReportErrorsIsVersionStringIsVersionFileVersionNoneIsVersionNone_unique_VersionNoneNewVersionStringget_IsVersionStringNewVersionFileget_IsVersionFileget_VersionNoneget_IsVersionNoneGetVersionInfoStreamReaderOpenTextTextReaderGetVersionStringNewAssemblyReferenceget_TextSimpleAssemblyNameIsNewUnresolvedAssemblyReferenceNewResolvedExtensionReferenceautoResolveOpenDirectivesToDllsnoFeedbackstackReserveSizeopenDebugInformationForLaterStaticLinkingcompilingFslibcompilingFslib20compilingFslib40useIncrementalBuilderincludesimplicitOpensuseFsiAuxLibframeworkresolutionEnvironmentimplicitlyResolveAssembliesaddVersionSpecificFrameworkReferencesloadedSourcesreferencedDLLsknownUnresolvedReferencessubsystemVersionuseHighEntropyVAinputCodePageembedResourcesmlCompatibilitycheckOverflowshowReferenceResolutionsoutputFileresolutionFrameworkRegistryBaseresolutionAssemblyFoldersSuffixresolutionAssemblyFoldersConditionsplatformprefer32BituseMonoResolutiontargetdebuginfotestFlagEmitFeeFeeAs100001dumpDebugInfodebugSymbolFiletypeCheckOnlyparseOnlyimportAllReferencesOnlysimulateExceptionprintAsttokenizeOnlytestInteractionParserreportNumDeclsprintSignatureprintSignatureFilexmlDocOutputFilestatsgenerateFilterBlockssignercontainerdelaysignversionstandaloneextraStaticLinkRootsnoSignatureDataonlyEssentialOptimizationDatauseOptimizationDataFileuseSignatureDataFilejitTrackingignoreSymbolStoreSequencePointsinternConstantStringsextraOptimizationIterationswin32reswin32manifestincludewin32manifestlinkResourcesvalidateTypeProvidersutf8outputflatErrorsmaxErrorsbaseAddressshowTermswriteTermsToFilesdoDetupledoTLRdoFinalSimplifyoptsOnoptSettingsemitTailcallslcidproductNameForBannerTextshowBannershowTimesshowLoadedAssembliescontinueAfterParseFailureshowExtensionTypeMessagespauseindirectCallArrayMethodsalwaysCallVirtisInteractiveisInvalidationSupportedmscorlibAssemblyName@autoResolveOpenDirectivesToDlls@noFeedback@stackReserveSize@implicitIncludeDir@openBinariesInMemory@openDebugInformationForLaterStaticLinking@defaultFSharpBinariesDir@compilingFslib@compilingFslib20@compilingFslib40@useIncrementalBuilder@includes@implicitOpens@useFsiAuxLib@framework@resolutionEnvironment@implicitlyResolveAssemblies@addVersionSpecificFrameworkReferences@light@conditionalCompilationDefines@loadedSources@referencedDLLs@knownUnresolvedReferences@optimizeForMemory@subsystemVersion@useHighEntropyVA@inputCodePage@embedResources@globalWarnAsError@globalWarnLevel@specificWarnOff@specificWarnOn@specificWarnAsError@specificWarnAsWarn@mlCompatibility@checkOverflow@showReferenceResolutions@outputFile@resolutionFrameworkRegistryBase@resolutionAssemblyFoldersSuffix@resolutionAssemblyFoldersConditions@platform@prefer32Bit@useMonoResolution@target@debuginfo@testFlagEmitFeeFeeAs100001@dumpDebugInfo@debugSymbolFile@typeCheckOnly@parseOnly@importAllReferencesOnly@simulateException@printAst@tokenizeOnly@testInteractionParser@reportNumDecls@printSignature@printSignatureFile@xmlDocOutputFile@stats@generateFilterBlocks@signer@container@delaysign@version@metadataVersion@standalone@extraStaticLinkRoots@noSignatureData@onlyEssentialOptimizationData@useOptimizationDataFile@useSignatureDataFile@jitTracking@ignoreSymbolStoreSequencePoints@internConstantStrings@extraOptimizationIterations@win32res@win32manifest@includewin32manifest@linkResources@showFullPaths@errorStyle@validateTypeProviders@utf8output@flatErrors@maxErrors@abortOnError@baseAddress@showTerms@writeTermsToFiles@doDetuple@doTLR@doFinalSimplify@optsOn@optSettings@emitTailcalls@lcid@productNameForBannerText@showBanner@showTimes@showLoadedAssemblies@continueAfterParseFailure@showExtensionTypeMessages@pause@indirectCallArrayMethods@alwaysCallVirt@noDebugData@isInteractive@isInvalidationSupported@get_mscorlibAssemblyNameget_autoResolveOpenDirectivesToDllsget_noFeedbackget_stackReserveSizeget_implicitIncludeDirget_openBinariesInMemoryget_openDebugInformationForLaterStaticLinkingget_compilingFslibget_compilingFslib20get_compilingFslib40get_useIncrementalBuilderget_includesget_implicitOpensget_useFsiAuxLibget_frameworkget_resolutionEnvironmentget_implicitlyResolveAssembliesget_addVersionSpecificFrameworkReferencesget_lightget_conditionalCompilationDefinesget_loadedSourcesget_referencedDLLsget_knownUnresolvedReferencesget_optimizeForMemoryget_subsystemVersionget_useHighEntropyVAget_inputCodePageget_embedResourcesget_globalWarnAsErrorget_globalWarnLevelget_specificWarnOffget_specificWarnOnget_specificWarnAsErrorget_specificWarnAsWarnget_mlCompatibilityget_checkOverflowget_showReferenceResolutionsget_outputFileget_resolutionFrameworkRegistryBaseget_resolutionAssemblyFoldersSuffixget_resolutionAssemblyFoldersConditionsget_platformget_prefer32Bitget_useMonoResolutionget_targetget_debuginfoget_testFlagEmitFeeFeeAs100001get_dumpDebugInfoget_debugSymbolFileget_typeCheckOnlyget_parseOnlyget_importAllReferencesOnlyget_simulateExceptionget_printAstget_tokenizeOnlyget_testInteractionParserget_reportNumDeclsget_printSignatureget_printSignatureFileget_xmlDocOutputFileget_statsget_generateFilterBlocksget_signerget_containerget_delaysignget_versionget_metadataVersionget_standaloneget_extraStaticLinkRootsget_noSignatureDataget_onlyEssentialOptimizationDataget_useOptimizationDataFileget_useSignatureDataFileget_jitTrackingget_ignoreSymbolStoreSequencePointsget_internConstantStringsget_extraOptimizationIterationsget_win32resget_win32manifestget_includewin32manifestget_linkResourcesget_showFullPathsget_errorStyleget_validateTypeProvidersget_utf8outputget_flatErrorsget_maxErrorsget_abortOnErrorget_baseAddressget_showTermsget_writeTermsToFilesget_doDetupleget_doTLRget_doFinalSimplifyget_optsOnget_optSettingsget_emitTailcallsget_lcidget_productNameForBannerTextget_showBannerget_showTimesget_showLoadedAssembliesget_continueAfterParseFailureget_showExtensionTypeMessagesget_pauseget_indirectCallArrayMethodsget_alwaysCallVirtget_noDebugDataget_isInteractiveget_isInvalidationSupportedset_mscorlibAssemblyNameset_autoResolveOpenDirectivesToDllsset_noFeedbackset_stackReserveSizeset_implicitIncludeDirset_openBinariesInMemoryset_openDebugInformationForLaterStaticLinkingset_compilingFslibset_compilingFslib20set_compilingFslib40set_useIncrementalBuilderset_includesset_implicitOpensset_useFsiAuxLibset_frameworkset_resolutionEnvironmentset_implicitlyResolveAssembliesset_addVersionSpecificFrameworkReferencesset_lightset_conditionalCompilationDefinesset_loadedSourcesset_referencedDLLsset_knownUnresolvedReferencesset_subsystemVersionset_useHighEntropyVAset_inputCodePageset_embedResourcesset_globalWarnAsErrorset_globalWarnLevelset_specificWarnOffset_specificWarnOnset_specificWarnAsErrorset_specificWarnAsWarnset_mlCompatibilityset_checkOverflowset_showReferenceResolutionsset_outputFileset_resolutionFrameworkRegistryBaseset_resolutionAssemblyFoldersSuffixset_resolutionAssemblyFoldersConditionsset_platformset_prefer32Bitset_useMonoResolutionset_targetset_debuginfoset_testFlagEmitFeeFeeAs100001set_dumpDebugInfoset_debugSymbolFileset_typeCheckOnlyset_parseOnlyset_importAllReferencesOnlyset_simulateExceptionset_printAstset_tokenizeOnlyset_testInteractionParserset_reportNumDeclsset_printSignatureset_printSignatureFileset_xmlDocOutputFileset_statsset_generateFilterBlocksset_signerset_containerset_delaysignset_versionset_metadataVersionset_standaloneset_extraStaticLinkRootsset_noSignatureDataset_onlyEssentialOptimizationDataset_useOptimizationDataFileset_useSignatureDataFileset_jitTrackingset_ignoreSymbolStoreSequencePointsset_internConstantStringsset_extraOptimizationIterationsset_win32resset_win32manifestset_includewin32manifestset_linkResourcesset_showFullPathsset_errorStyleset_validateTypeProvidersset_utf8outputset_flatErrorsset_maxErrorsset_abortOnErrorset_baseAddressset_showTermsset_writeTermsToFilesset_doDetupleset_doTLRset_doFinalSimplifyset_optsOnset_optSettingsset_emitTailcallsset_lcidset_productNameForBannerTextset_showBannerset_showTimesset_showLoadedAssembliesset_continueAfterParseFailureset_showExtensionTypeMessagesset_pauseset_indirectCallArrayMethodsset_alwaysCallVirtset_noDebugDataCreateNewResolveSourceFilepathLoadedFromDecideNamesTurnWarningOffTurnWarningOnAddIncludePathpathIncludedFromAddLoadedSourceAddEmbeddedResourceAddReferencedAssemblyByPathRemoveReferencedAssemblyByPathSplitCommandLineResourceInfooriginalReferenceresolvedPathresolvedFromfusionNameredistsysdirilAssemblyReforiginalReference@resolvedPath@resolvedFrom@fusionName@redist@sysdir@ilAssemblyRef@get_originalReferenceget_resolvedPathget_resolvedFromget_fusionNameget_redistget_sysdirget_ilAssemblyRefget_ILAssemblyRefTargetMscorlibVersionTargetIsSilverlightfsharpBinariesDirclrRoottargetFrameworkVersionMajorMinorCloneOfOriginalBuilderClrRootSearchPathsForLibraryFilesdata@2181mscorlibReferencefslibReferencetargetFrameworkVersionValueclrRootValuesystemAssembliesfsharpBinariesDirValuevalidateget_TargetMscorlibVersionget_TargetIsSilverlightget_fsharpBinariesDirget_clrRootget_targetFrameworkVersionMajorMinorget_CloneOfOriginalBuilderComputeCanContainEntryPointget_ClrRootComputeLightSyntaxInitialStatusDistinctGetAvailableLoadedSourcesIsSystemAssemblyget_SearchPathsForLibraryFilesMakePathAbsoluteTryResolveLibWithDirectoriesResolveLibWithDirectoriesCheckFSharpBinaryilAssemblyRefsOfSeqTryResolveLibsUsingMSBuildRulesoriginalReferencesMscorlibDllReferenceCoreLibraryDllReferencecomputeKnownDllReferencelibraryNamecheckFSharpBinaryCompatWithMscorlibexplicitFscoreVersionToCheckOptsysFileErrorStringsget_InputSequenceEmptyStringcodei0resolvedAsFileresolutionassemblyReferencearefnumbersScopedPragmasscopedPragmas@2787set_ScopedPragmaswarningNumpragmaCommitDelayedErrorsAndWarningsIsLetterOrDigitanonymousModuleNameRangehashDirectiveshd0shortFilenameoriginalReferenceToResolutionresolvedPathToResolutionAddResolutionResultsnewResultsAddUnresolvedReferencesnewUnresolvedGetAssemblyResolutionsGetUnresolvedReferencesTryFindByOriginalReferenceTryFindByExactILAssemblyRefassrefTryFindByResolvedPathTryFindByOriginalReferenceTextResolveknownUnresolvedGetAllDllReferencesSplitNonFoundationalResolutionsBuildFromPriorResolutionsresolutionss0RawMetadataProviderGeneratedAssemblyIsProviderGeneratedProviderGeneratedStaticLinkMapILAssemblyRefsRawMetadata@ProviderGeneratedAssembly@IsProviderGenerated@ProviderGeneratedStaticLinkMap@ILAssemblyRefs@ILScopeRef@get_RawMetadataget_ProviderGeneratedAssemblyget_IsProviderGeneratedget_ProviderGeneratedStaticLinkMapget_ILAssemblyRefsget_ILScopeRefrawMetadataproviderGeneratedAssemblyisProviderGeneratedproviderGeneratedStaticLinkMapiLAssemblyRefsiLScopeRefFSharpViewOfMetadataAssemblyAutoOpenAttributesAssemblyInternalsVisibleToAttributesTypeProvidersFSharpOptimizationDataFSharpViewOfMetadata@AssemblyAutoOpenAttributes@AssemblyInternalsVisibleToAttributes@TypeProviders@FSharpOptimizationData@get_FSharpViewOfMetadataget_AssemblyAutoOpenAttributesget_AssemblyInternalsVisibleToAttributesget_TypeProvidersget_FSharpOptimizationDataset_TypeProvidersfSharpViewOfMetadataassemblyAutoOpenAttributesassemblyInternalsVisibleToAttributestypeProvidersfSharpOptimizationDataIsResolvedImportedAssemblyIsUnresolvedImportedAssemblyNewResolvedImportedAssemblyget_IsResolvedImportedAssemblyNewUnresolvedImportedAssemblyget_IsUnresolvedImportedAssemblyNewTcConfigProviderBasedOnMutableBuilderBaseCcuTableDllTableProviderGeneratedTypeRootsimportsBase@3311dllInfosdllTableccuInfosccuTabledisposeActionsilGlobalsOpt@3318generatedTypeRootsinitialResolutionsimportsBaseSetBasebaseTcImportsget_Baseget_CcuTableget_DllTableRegisterCcuccuInfoRegisterDllGetDllInfosTryFindDllInfolookupOnlyFindDllInfoGetImportedAssembliesGetCcusExcludingBaseGetCcusInDeclOrderFindCcuInfoFindCcuFindCcuFromAssemblyRefGetProvidedAssemblyInfoassemblyRecordGeneratedTypeRootrootValueCollectionget_ProviderGeneratedTypeRootsAttachDisposeActionOpenILBinaryModuleMkLoaderForMultiModuleIlAssembliesIsAlreadyRegisteredGetImportMapGetTcGlobalsSetILGlobalsilgSetTcGlobalsInjectProvidedNamespaceOrTypeIntoEntityentityinjectedNamspaceremainingNamespaceTypeProviderAssemblyAttributeImportTypeProviderExtensionstpApprovalsReffileNameOfRuntimeAssemblyilScopeRefOfRuntimeAssemblymoduleAttributesinvalidateCcuSystemRuntimeContainsTypetypeNamePrepareToImportReferencedIlDlldllinfoChangeExtensionPrepareToImportReferencedFSharpDllRegisterAndPrepareToImportReferencedDllRegisterAndImportReferencedAssembliesnmsDoRegisterAndImportReferencedAssembliesImplicitLoadIfAllowedTryFindProviderGeneratedAssemblyByNameTryFindExistingFullyQualifiedPathFromAssemblyRefNewOkResultNewErrorResultTryResolveAssemblyReferenceResolveAssemblyReferenceBuildFrameworkTcImportsframeworkDLLsnonFrameworkDLLsReportUnresolvedAssemblyReferencesBuildNonFrameworkTcImportsnonFrameworkReferencesBuildTcImportsCheckDisposedccuHasTypensnametnameilILBinaryReaderauxModTableviewedScopeRefMicrosoft-FSharp-Compiler-Import-AssemblyLoader-LoadAssemblyMicrosoft-FSharp-Compiler-Import-AssemblyLoader-GetProvidedAssemblyInfoMicrosoft-FSharp-Compiler-Import-AssemblyLoader-RecordGeneratedTypeRootGetFileNameWithoutExtensionproviderAssembliessystemRuntimeAssemblyVersiontpadd_Invalidateremove_Invalidateget_NamespaceNameGetTypesGetNestedNamespacesGetNamespacesilScopeRefiresourceoptDataFilediroptDatasOptionalFixupilShortAssemNameexternalSigAndOptDataoptDataReadersRawData@sigFileNameccuRawDataAndInfosphase2sysCcudllNamesysCcu0fslibCcuentityOptSourceFilesReferencesInputsNoWarnsRootErrorsRootWarningsSourceFiles@References@Inputs@NoWarns@RootErrors@RootWarnings@get_SourceFilesget_Referencesget_Inputsget_NoWarnsget_RootErrorsget_RootWarningsnoWarnsrootErrorsrootWarningsComputeClosureOfSourceTextimplicitDefinesComputeClosureOfSourceFilesfilesuseDefaultScriptingReferencesEvaluationIsEvaluationCompilationIsCompilationEditingIsEditing_unique_Evaluation_unique_Compilation_unique_Editingget_Evaluationget_IsEvaluationget_Compilationget_IsCompilationget_Editingget_IsEditingvisibleToNewRootSigsAndImplsqtcsCcutcsCcuTypetcsNiceNameGentcsTcSigEnvtcsTcImplEnvtcsRootSigsAndImplsTcEnvFromSignaturesTcEnvFromImplsCcutcsCcu@tcsCcuType@tcsNiceNameGen@tcsTcSigEnv@tcsTcImplEnv@tcsRootSigsAndImpls@get_tcsCcuget_tcsCcuTypeget_tcsNiceNameGenget_tcsTcSigEnvget_tcsTcImplEnvget_tcsRootSigsAndImplsget_NiceNameGeneratorget_TcEnvFromSignaturesget_TcEnvFromImplsget_CcuNextStateAfterIncrementalFragmenttcEnvAtEndOfLastInputrootSigsallSigModulTyp_arg2_0_arg2_1_arg2_2rootImplstcSigEnvtcImplEnvallImplementedSigModulTypccuTypequalNameOfFilehadSigimplFileSigTyperootSigOptoldLoggerOnIsOnOffIsOff_unique_On_unique_Offget_Onget_IsOnget_Offget_IsOffIsOptionClearIsOptionFloatIsOptionIntIsOptionSwitchIsOptionIntListIsOptionIntListSwitchIsOptionRestIsOptionSetIsOptionStringIsOptionStringListIsOptionStringListSwitchIsOptionUnitIsOptionHelpIsOptionGeneralNewOptionClearget_IsOptionClearNewOptionFloatget_IsOptionFloatNewOptionIntget_IsOptionIntNewOptionSwitchget_IsOptionSwitchNewOptionIntListget_IsOptionIntListNewOptionIntListSwitchget_IsOptionIntListSwitchNewOptionRestget_IsOptionRestNewOptionSetget_IsOptionSetNewOptionStringget_IsOptionStringNewOptionStringListget_IsOptionStringListNewOptionStringListSwitchget_IsOptionStringListSwitchNewOptionUnitget_IsOptionUnitNewOptionHelpget_IsOptionHelpNewOptionGeneralget_IsOptionGeneralNewCompilerOptionIsPublicOptionsIsPrivateOptionsNewPublicOptionsget_IsPublicOptionsNewPrivateOptionsget_IsPrivateOptionslineWidthcolumnworddoneHeadingsParseScriptTextcodeContextCreateScriptSourceTcConfigStreamReadToEndSourceFileOfFilenameApplyMetaCommandsFromInputToTcConfigAndGatherNoWarnFindClosureDirectivesclosureDirectivesGetLoadClosurerootFilenameGetFullClosureOfScriptSourceGetFullClosureOfScriptFiles_useDefaultScriptingReferencesIsSourceFileIsClosedSourceFileNewSourceFileget_IsSourceFileNewClosedSourceFileget_IsClosedSourceFileSetSeenHaveSeennowarnswarningsobservedSourcestcConfigResultclosureDirectivesourceInputsglobalNoWarnsresolutionErrorsresolutionWarningssigSuffixes@84mlCompatSuffixes@85implSuffixes@86resSuffixes@87scriptSuffixes@88doNotRequireNamespaceOrModuleSuffixes@89lightSyntaxDefaultExtensions@90DefaultBasicReferencesForOutOfProjectSources@1486DefaultBasicReferencesForOutOfProjectSources40@1516BasicReferencesForScriptLoadClosure@1561MessageBeep_mbtuser32.dllOkQuestionInformationdebugDisplayMethodNameuseHiddenInitCodeiLdcZeroilxgenGlobalNngmainMethNamereportsCountClosureCountMethodDefCountStaticFieldDefCountCallFuncInstructionsPush0discarddiscardAndReturnVoidcompileSequenceExpressionsdefaultOfgminfo@6916field624134@DropErasedTyargsAddSpecialNameFlagmdefget_debugDisplayMethodNameget_useHiddenInitCodeget_iLdcZeromkLdfldMethodDefilMethNamereprAccessisStaticilTyilFieldNameilPropTypeChooseParamNamesfieldNamesAndTypesmarkupCheckCodeDoesSomethingchooseName@106ChooseFreeVarNamestakenNamestsget_ilxgenGlobalNngget_mainMethNameget_reportsset_reportsAddReportReportStatisticsocNewCounterget_CountClosureget_CountMethodDefget_CountStaticFieldDefget_CountCallFuncInstructionsBindUnitVarsmvsparamInfosbodymkTypeOfExpriltymkGetNameExpriltuseCallVirtboxityisBaseCallCompareTo$cont@246-59CompareTo$cont@246-60mkTopNamensCompLocForFragmentCompLocForSubModuleOrNamespaceclocsubmodCompLocForFixedPathqnameNestedTypeRefForCompLocCleanUpGeneratedTypeNameTypeNameForInitClassTypeNameForPrivateImplementationDetailsCompLocForInitClassCompLocForPrivateImplementationDetailsTypeRefForCompLocComputeMemberAccesshiddenComputeTypeAccessGenTyAppAuxtyenvtinstGenNamedTyAppAuxptrsOKGenTypeAuxvoidOKGenUnionCaseReffspecsresf@474-1tyconcacheVal@set_cacheValGenUnionRefComputeUnionHasHelpers$cont@496ComputeUnionHasHelpersGenUnionSpectyargsGenUnionCaseSpecucrefGenTypeGenTypesGenReturnTypereturnTyOptGenParamTypesGenTypeArgsGenFieldSpecForStaticFieldilContainerTyvspecGenRecdFieldRefrfrefReplaceTyenveenvEnvForTyparstpsAddTyparsToEnvtyparsAddSignatureRemapInforpimhiAddStorageForValAddStorageForLocalValsvalsStorageForValIterate2GetMethodSpecForMemberValmemberInfogenerate@852ilTyForPropertyComputeFieldSpecForValoptIntraAssemblyInfoilGetterMethRefComputeStorageForTopValoptShadowLocalComputeAndAddStorageForLocalTopValintraAssemblyFieldTableComputeStorageForNonLocalTopValComputeStorageForNonLocalModuleOrNamespaceRefComputeStorageForExternalCcuAddBindingsForLocalModuleTypeallocValmtyAddBindingsForTyconAddBindingsForModuleDefsmdefsAddBindingsForModuleDefAddBindingsForSubModulesAddIncrementalLocalAssemblyFragmentToIlxGenEnvintraAssemblyInfoGenILSourceMarkerGenPossibleILSourceMarkerHashRangeSortedhtMergeOptionso1o2MergePropertyPairpdpdefAddPropertyDefToHashMergePropertyDefsilPropertyDefsget_Push0FeeFeeInstrdocGenStringcgbufGenConstArrayilElementTypewriteget_discardget_discardAndReturnVoidCodeGenThenmgbufzapFirstSeqPointToStartentryPointInfoalreadyUsedArgsalreadyUsedLocalscodeGenFunctiondump@1591instrsCodeGenMethodStartDelayedLocalScopeStartLocalScopeLocalScopeget_compileSequenceExpressionsAlwaysSuppressSequencePointWillGenerateSequencePointDoesGenExprStartWithSequencePointGenExprGenExprsCodeGenMethodForExprspReqexpr0sequel0sequelAfterDiscardsequelIgnoringEndScopesAndDiscardsequelIgnoreEndScopesGenSequelEndScopesStringOfSequelGenSequelGenConstantGenUnitTyGenUnitGenUnitThenSequelGenAllocTupleargtysgetCompiledTupleItem@1988GenGetTupleFieldGenAllocExnGenAllocUnionCaseGenAllocRecdctorInfoGenNewArraySimpleelemselemTyGenNewArrayGenCoercetgtysrctyGenReraisertntyGenGetExnFieldfieldNumGenSetExnFieldGenUnionCaseProofGenGetUnionCaseFieldGenGetUnionCaseTagGenSetUnionCaseFieldGenGetRecdFieldAddrGenGetStaticFieldAddrGenGetRecdFieldGenSetRecdFieldGenGetStaticFieldGenSetStaticFieldGenFieldGetGenFieldStoreGenUntupledArgsDiscardingLoneUnitnumObjArgscurriedArgInfosGenUntupledArgExprntmargs$cont@2342ntmargs|OptionalCoerce|@2370_arg37|OptionalTyapp|@2371_arg38mkFormalParams@2389gparamsGenAppCanTailcallhasStructObjArgccallInfowithinSEHhasByrefArgmustGenerateUnitAfterCallisDllImportisSelfInitmakesNoCriticalTailcallsGenNamedLocalTyFuncCallcloinfoGenArgsAndIndirectCallfunctycheck@2810-11GenIndirectCallGenTryscopeMarks_0scopeMarks_1restyGenTryCatchvfefvhehGenTryFinallybodyExprhandlerExprGenForLoopspForloopBodyGenWhileLoopspWhileGenSequentialspInspecialSeqFlagerr@3122-6modFieldSpec@3125ilTyArgsfspecanyfpType@3226GenAsmCodeilreturnTysmkList@3286elsGenQuotationastconvetyGenILCallvirtvalunewobjvalUseFlagsilMethRefenclArgTysmethArgTysargExprsCommitCallSequelGenTraitCalltraitInfoGenGetAddrOfRefCellFieldGenGetValAddrGenGetByrefGenSetByrefGenDefaultValueRangeCharIsLowerGenGenericParamGenSlotParamGenFormalSlotsiginstSlotParaminstGenActualSlotsigmethTyparsOfOverridingMethodGenNameOfOverridingMethoduseMethodImplGenMethodImplbindBaseOrThisVarOptbaseValOptfixupVirtualSlotFlagsrenameMethodDefnameOfOverridingMethodfixupMethodImplFlagsGenObjectMethodeenvinnertmethodgenMethodAndOptionalMethodImpl@3615baseTypeilTyForOverridingGenObjectExpreenvouterbasecalloverridesinterfaceImplsGenSequenceExprnextEnumeratorValRefpcvrefcurrvrefstateVarsgenerateNextExprcloseExprcheckCloseExprseqElemTyGenClosureTypeDefilGenParamsattrsilCloFreeVarsilCloLambdasilCtorBodyilIntfTysGenGenericParamsGenGenericArgsGenLambdaClosureisLocalTypeFuncselfvGenLambdaValGenLambdaGenTypeOfValGenFreevartyenvinnerfvMapIndexed2GetIlxClosureFreeVarsgetCallStructure@3961tvaccvaccgetClosureArgs@3980returnTytvslvsstrip@4055-3lambdasGetIlxClosureInfoIsNamedLocalTypeFuncValGenNamedLocalTypeFuncContractInfoGenDelegateExprGenStaticOptimizationconstraintsIsSequelImmediateGenJoinPointGenMatchspBind_exprmtargetsGenDecisionTreeAndTargetsstackAtTargetsrepeatSPTryFindTargetInfotargetInfosGenDecisionTreeAndTargetsInnerinplabGetTargetGenDecisionTreeSuccesstargetIdxGenPostponedDecisionTreeTargetsGenDecisionTreeTarget_targetIdxtargetMarkBeforeBindstargetMarkAfterBindseenvAtTargetsuccessExprspTargetstartScopeendScopeg@1-19g@1-20GenDecisionTreeSwitchdefaultTargetOptswitchmFold2GenDecisionTreeCasescaseLabelsdefaultLabel|BoolExpr|_|_arg46GenDecisionTreeTesttestersuccessTreefailureTreeGenLetRecFixupilxCloSpecilFieldcomputeFixupsForOneRecursiveVar@4605boundvforwardReferenceSetfixupsGenLetRecBindsallBindsGenLetRecemitSP@4663GenSequencePointForBind_cenvGenBindbindComputeMemberAccessRestrictedBySigcanTarget@4775goalGenBindAfterSequencePointdecodeUnmanagedType@4878decoderunmanagedTypeGenMarshalGenParamAttribsGenParamsimplValsOptGenReturnInfoilRetTyretInfoGenPropertyForMethodDefcompileAsInstanceilArgTysilPropTyilAttrscompiledNameGenEventForPropertyeenvForMethilAttrsThatGoOnPrimaryItemComputeFlagFixupsForMemberBindingComputeMethodImplAttribs_vEmitTheMethodDef@5245hasPreserveSigNamedArghasSynchronizedImplFlaghasPreserveSigImplFlaghasNoInliningFlagsecurityAttributesGenMethodForBinding$cont@5364accessilMethodBodyattrsAppliedToGetterOrSettersourceNameAttribsilAttrsCompilerGeneratedilTyparsilParamsilReturnmethNameGenMethodForBindingtopValInfoctorThisValOptmethodVarsGenPInvokeMethodnamedArgsGenBindingsGenSetValGenGetValRefAndSequelfetchSequelGenGetValGenBindRhsGenSetBindValueeenv2EmitInitLocalEmitSetLocalEmitGetLocalEmitSetStaticFieldEmitGetStaticFieldAddrEmitGetStaticFieldGenSetStoragestorageCommitGetStorageSequellocalCloInfostoreSequelGenGetStorageAndSequelGenGetLocalValsfvsGenGetLocalValGenGetLocalVRefGenStoreValAllocLocalcompgenAllocLocalValAllocStorageForBindAllocStorageForBindsAllocValForBindAllocTopValWithinExprEmitSaveStackEmitRestoreStacksavedStacksavedStackLocalsGenAttribArg$cont@5676-1tynmisobjGenAttribArg$cont@5676GenAttribArgilArgTyGenAttrGenAttrsGenCompilationArgumentCountsAttrCreatePermissionSetsGenTypeDefForCompLocinitTriggereliminateIfEmptyaddAtEndGenModuleExprlazyInitInfoGenModuleDefsGenModuleDefGenModuleBinding_arg12GenTopImplmainInfoOptGenForceWholeFileInitializationAsPartOfCCtorGenEqualsOverrideCallingIComparableilThisTy_ilThatTyGenFieldInitGenAbstractBindingdefaultMemberAttrs$cont@6241methodDefs$cont@6410isPropHiddenSortWithGenTypeDefGenExnDefexncCodegenAssemblyfileImplsGetEmptyIlxGenEnvGenerateCodeassemAttribsmoduleAttribsget_defaultOfget_gminfo@6916GetFieldGetMethodLookupGeneratedValueClearGeneratedValue_gtakenFieldNamesFindInt16FindInt32FindBoolFindStringFindTypeNamefindConstfindAppTroldStaticFieldInfoStaticFieldInfo@get_StaticFieldInfostaticFieldInfoIlWriteBackendIsIlWriteBackendIlReflectBackendIsIlReflectBackend_unique_IlWriteBackend_unique_IlReflectBackendget_IlWriteBackendget_IsIlWriteBackendget_IlReflectBackendget_IsIlReflectBackendworkAroundReflectionEmitBugsemitConstantArraysUsingStaticDataBlobsmainMethodInfolocalOptimizationsAreOngenerateDebugSymbolsfragName@workAroundReflectionEmitBugs@emitConstantArraysUsingStaticDataBlobs@mainMethodInfo@localOptimizationsAreOn@generateDebugSymbols@ilxBackend@isInteractiveItExpr@netFxHasSerializableAttribute@get_fragNameget_workAroundReflectionEmitBugsget_emitConstantArraysUsingStaticDataBlobsget_mainMethodInfoget_localOptimizationsAreOnget_generateDebugSymbolsget_ilxBackendget_isInteractiveItExprget_netFxHasSerializableAttributeTcValviewCcuilUnitTyg@TcVal@viewCcu@opts@ilUnitTy@amap@intraAssemblyInfo@casApplied@get_gget_TcValget_viewCcuget_optsget_ilUnitTyget_amapget_intraAssemblyInfoget_casAppliedset_ilUnitTySPAlwaysIsSPAlwaysSPSuppressIsSPSuppress_unique_SPAlways_unique_SPSuppressget_SPAlwaysget_IsSPAlwaysget_SPSuppressget_IsSPSuppressclocScopeclocTopImplQualifiedNameclocNamespaceclocEnclclocQualifiedNameOfFileclocScope@clocTopImplQualifiedName@clocNamespace@clocEncl@clocQualifiedNameOfFile@get_clocScopeget_clocTopImplQualifiedNameget_clocNamespaceget_clocEnclget_clocQualifiedNameOfFilereprsAddOneForTyparsForTyconForTyconRefIsVoidNotOKVoidOKIsVoidOK_unique_VoidNotOK_unique_VoidOKget_VoidNotOKget_IsVoidNotOKget_VoidOKget_IsVoidOKPtrTypesOKIsPtrTypesOKPtrTypesNotOKIsPtrTypesNotOK_unique_PtrTypesOK_unique_PtrTypesNotOKget_PtrTypesOKget_IsPtrTypesOKget_PtrTypesNotOKget_IsPtrTypesNotOKtyargjcspeccloExprcloNamecloArityInfocloILFormalRetTycloILFreeVarscloSpeccloAttribscloILGenericParamscloFreeVarslocalTypeFuncILGenericArgslocalTypeFuncContractFreeTyparslocalTypeFuncDirectILGenericParamslocalTypeFuncInternalFreeTyparscloExpr@cloName@cloArityInfo@cloILFormalRetTy@cloILFreeVars@cloSpec@cloAttribs@cloILGenericParams@cloFreeVars@ilCloLambdas@localTypeFuncILGenericArgs@localTypeFuncContractFreeTypars@localTypeFuncDirectILGenericParams@localTypeFuncInternalFreeTypars@get_cloExprget_cloNameget_cloArityInfoget_cloILFormalRetTyget_cloILFreeVarsget_cloSpecget_cloAttribsget_cloILGenericParamsget_cloFreeVarsget_ilCloLambdasget_localTypeFuncILGenericArgsget_localTypeFuncContractFreeTyparsget_localTypeFuncDirectILGenericParamsget_localTypeFuncInternalFreeTyparsIsNullUnrealizedIsUnrealizedIsStaticFieldIsStaticPropertyIsMethodIsEnvIsArgIsLocal_unique_Null_unique_Unrealizedget_Nullget_IsNullget_Unrealizedget_IsUnrealizedNewStaticFielditem7item8item9get_IsStaticFieldNewStaticPropertyget_IsStaticPropertyNewMethodget_IsMethodNewEnvget_IsEnvNewArgget_IsArgNewLocalget_IsLocalItem7Item8Item9get_Item8get_Item9NoShadowLocalIsNoShadowLocalIsShadowLocal_unique_NoShadowLocalget_NoShadowLocalget_IsNoShadowLocalNewShadowLocalget_IsShadowLocalIsNamedLocalIlxClosureInfoGeneratorIsNamedLocalIlxClosureInfoGeneratedNewNamedLocalIlxClosureInfoGeneratorget_IsNamedLocalIlxClosureInfoGeneratorNewNamedLocalIlxClosureInfoGeneratedget_IsNamedLocalIlxClosureInfoGeneratedValsSubModulesVals@SubModules@get_Valsget_SubModulessubModulesIsBranchCallClosureIsBranchCallMethodNewBranchCallClosureget_IsBranchCallClosureNewBranchCallMethodget_IsBranchCallMethodCodeLabelNewMarkget_CodeLabelsomeTypeInThisAssemblyisFinalFilesigToImplRemapInfovalsInScopeinnerValsletBoundVarsliveLocalstyenv@someTypeInThisAssembly@isFinalFile@cloc@sigToImplRemapInfo@valsInScope@innerVals@letBoundVars@liveLocals@withinSEH@get_tyenvget_someTypeInThisAssemblyget_isFinalFileget_clocget_sigToImplRemapInfoget_valsInScopeget_innerValsget_letBoundVarsget_liveLocalsget_withinSEHgtpsmodulsubmodultupledArg_4NewPropKeyNestedTypeDefsgmethodsgfieldsgpropertiesgeventsgnestedAddEventDefedefAddFieldDefilFieldDefAddMethodDefilMethodDefget_NestedTypeDefsReadOnlyGetCurrentFieldsAddOrMergePropertyDefPrependInstructionsToSpecificMethodDefcondcountDownFindTypeDefBuilderFindNestedTypeDefsBuilderFindNestedTypeDefBuilderAddTypeDefcenv@1165gtdefsreflectedDefinitionsvtgeneratorexplicitEntryPointInfoscriptInitFspecsinit@1165-10AddScriptInitFieldSpecfieldSpecAddInitializeScriptsInOrderToEntryPointApplyGenerateRawDataValueTypeAddReflectedDefinitionReplaceNameOfReflectedDefinitionnewNameAddExplicitInitToSpecificMethodDefsourceOptfeefeeseqptget_cenvGetExplicitEntryPointInfoMethodNamePreallocatedArgCountmgbuf@1282localscodebufexnSpecsnstackmaxStackseqpointcodeLabelToPCcodeLabelToCodeLabellastSeqPointDoPushespushesDoPopsGetCurrentStackAssertEmptyStackEmitInstrpopsEmitInstrsGetLastSequencePointEnsureNopBetweenDebugPointsEmitSeqPointsrcEmitStartOfHiddenCodeEmitExceptionClauseclauseGenerateDelayMark_nmSetCodeLabelToCodeLabellab1lab2SetCodeLabelToPClabSetMarkmark1mark2SetMarkToHereSetStackget_mgbufget_MethodNameget_PreallocatedArgCountrangesReallocLocalcomputeCodeLabelToPClbli2EndFilterIsEndFilterIsLeaveHandlerIsBrIsCmpThenBrOrContinueContinueIsContinueIsDiscardThenIsReturnIsEndLocalScopeReturnVoidIsReturnVoid_unique_EndFilter_unique_Continue_unique_Return_unique_ReturnVoidget_EndFilterget_IsEndFilterNewLeaveHandlerget_IsLeaveHandlerNewBrget_IsBrNewCmpThenBrOrContinueget_IsCmpThenBrOrContinueget_Continueget_IsContinueNewDiscardThenget_IsDiscardThenget_Returnget_IsReturnNewEndLocalScopeget_IsEndLocalScopeget_ReturnVoidget_IsReturnVoidinstrbufmarksqntyvarsilElemTyilArrTy_arg34_arg15_arg19_arg22_arg27_arg28_arg29_arg32testlocescopeMarks_gf_arg39nowArgsisSuperInitmethodInfoTyruntimeMethodHandleTymakeGenericMethodSpecgetMethodHandleSpecfindMethodSpecgetFunctionPointerSpectypeofGenericArgsgetNameExprsilActualRetTyilActualArgslaterArg_arg40laterArgsactualRetTyisTailCallcallInstrfeenvsofardtyformalFuncTyp_arg41_arg42_arg43_arg44_arg45eenvForSlotSiginstForSlotSignameOfOverridenMethodilOverrideTyilOverrideRetilOverrideParamsmethodImplGeneratorFunctionmimplovtmethodsstateVarsSetilCloRetTyInnerformalClospecilCloTyInnertvactiveSPcaselabelcaseLabelcloeenvcloslotsignumImplicitArgsreprOptargactionssecactionilNamedArgssetArgsdefarg50@mexprmemberParentTyparsmemberMethodTyparseenvUnderTyparsmethodImplGeneratordebugDisplayAttrsgenerateDebugDisplayAttributedefaultMemberAttrsnormalAttrsilDebugDisplayAttributeshiddenRepruseGenuineFieldilTypetyconReprrequiresExtraFieldfieldSummariesisFSharpMutableilFieldOffsetilNotSerializedfattribsilFieldMarshalfattribs0isFieldHiddenextraAttribsisCLIMutablepropAttribsilCallingConvilPropNameilHasSetterilFieldAttrsuseGenuineField0isStatic0isPropHidden0ilPropType0ilFieldName0fspec0matchValue_0matchValue_1relevantFieldsfdefucspecfldilPropDefilTypeDefsilAssemAttrsilNetModuleAttrsquotationResourceBytesilTypeDefs@ilAssemAttrs@ilNetModuleAttrs@quotationResourceBytes@get_ilTypeDefsget_ilAssemAttrsget_ilNetModuleAttrsget_quotationResourceBytesLookupFieldRefLookupMethodRefLookupTypeRefLookupTypeLookupFieldRef@LookupMethodRef@LookupTypeRef@LookupType@get_LookupFieldRefget_LookupMethodRefget_LookupTypeRefget_LookupTypelookupFieldReflookupMethodReflookupTypeReflookupTypeInitializeArrayRuntimeFieldHandleDeserializePatternsModuleCallPatternGetGenericMethodDefinitionMakeGenericMethodilxGenEnvAddExternalCcusccusAddIncrementalLocalAssemblyFragmentcodeGenOptsiLdcZero@69ilxgenGlobalNng@117mainMethName@122CountClosure@148CountMethodDef@149CountStaticFieldDef@150CountCallFuncInstructions@151Push0@1270discard@1548discardAndReturnVoid@1549defaultOf@6915InterceptExprLowerImplFileassmkLambdaNoTypeuvmkUnitDelayLambdacallNonOverloadedMethodisVarFreeInExpr|SeqYield|_|@120|SeqAppend|_|@128|SeqWhile|_|@136|SeqTryFinally|_|@145|SeqUsing|_|@154|SeqFor|_|$cont@163|SeqFor|_|@162|SeqDelay|_|@172|SeqEmpty|_|@177|Seq|_|@182tyConfirmsToSeq@439Lower@188isWholeExprnoDisposeContinuationLabelcurrentDisposeContinuationLabelmkGotoLabelTarget@524mbuilderaddJumpTable@522initLabelpcepcspcDonepc2labisDisposalhandleExeceptionsInDispose@540disposalExprLowerSeqExpr$cont@487LowerSeqExproverallExprlabelssignificantClosephase2@labels@significantClose@stateVars@get_phase2get_labelsget_significantCloseget_stateVarsres2res1compensationinnerDisposeContinuationLabelresptexprmtglReducespmpc0verboseTLRfclassOrderreqdItemOrderget_verboseTLRinternalErrorcollect@67-6trfringeTRdestAppisDelayedReprmkLocalNameTypeArityGetValsBoundUnderMustInlinexinfoIsRefusedTLRIsMandatoryTopLevelget_fclassOrderget_reqdItemOrderIsArityMetwfcarrierMapFor@713fclassMcarrierMapsaenvExprFor@767cmappackEnv@708topValSreqdItemsMapFlatEnvPacksdeclistMakeSimpleArityInfocreateFHat@849arityMenvPackMCreateNewValuesForTLRtlrSMakeTLRDecisionsIsTreeNodeIsLeafNodeNewTreeNodeget_IsTreeNodeNewLeafNodeget_IsLeafNodeself0@rejectSPairsvsetbindingsget_PairsfclassIsReqdSubEnvIsReqdValNewReqdSubEnvget_IsReqdSubEnvNewReqdValget_IsReqdValreqdTyparsreqdItemsReqdSubEnvsReqdValsreqdTypars@reqdItems@m@get_reqdTyparsget_reqdItemsget_mget_ReqdSubEnvsget_ReqdValsExtendInitialep_etpsep_aenvsep_packep_unpackep_etps@ep_aenvs@ep_pack@ep_unpack@get_ep_etpsget_ep_aenvsget_ep_packget_ep_unpackfcrewriteState0get_rewriteState0EnterInnerExitInnerEnterMustInlineExtractPreDecsPopPreDecsMakePreDecisRecRecursivePreDecspdsApdsBConvertBindfHatNewBinding@1024envpshortRecBindsTransTLRBindingsGetAEnvBindingsTransBindingsxisRecTransAppfxTransExprg@1-10sp2dtreetg1g@1-11g@1-12rebindspdsg@1-15TransLinearExprcontfTransMethodTransBindingRhsTransDecisionTreeCase@1274TransDecisionTreeTransDecisionTreeTargetTransValBindingsTransModuleExprTransModuleDefsTransModuleDefTransModuleBindingsTransModuleBindingrecShortCallSfHatMtlrS@topValS@arityM@fclassM@recShortCallS@envPackM@fHatM@get_tlrSget_topValSget_arityMget_fclassMget_recShortCallSget_envPackMget_fHatMIsRecIsIsRecNotRecIsNotRec_unique_IsRec_unique_NotRecget_IsRecget_IsIsRecget_NotRecget_IsNotRecrws_mustinlinerws_innerLevelrws_preDecsrws_mustinline@rws_innerLevel@rws_preDecs@get_rws_mustinlineget_rws_innerLevelget_rws_preDecsget_state0PushFramereqdTypars0reqdVals0SaveFramelogIntoFrame@479gvLogRequiredFromLogShortCallFreeInBindingsbsaccInstance@508fvrefaccBinds@528-1exprFExprEnvInterceptcloseStep@584fixpoint@606CloseReqdTyparsvalBindingSiteIntercept@nonRecBindingsIntercept@recBindingsIntercept@dtreeIntercept@targetIntercept@tmethodIntercept@DetermineReqdItemsrevDecliststack@reqdItemsMap@revDeclist@get_stackget_reqdItemsMapget_revDeclistmpchangedGetMaxNumArgsAtUsesSelectTLRValsIsValueRecursionFreeDetermineTLRAndAritiesforcesoKreqdItemOrder@344state0@447rewriteState0@919callPatternOrder|TyappAndApp|_|mkLocalValValReprInfoForTSandTStsBcheckTSuncheckedExprTSuncheckedTypeTSrebuild@424rebuildTSget_callPatternOrderminimalCallPatterncallPatternandCPs@469cpAcpBcommonCallPatterncallPatternssiteCP_accessors_instmkTransformx1NtystyfringeszipTSTyp@569zipTSListTypList@580tsszipCallPatternArgTysvsstrimTsByAccess@600accessorstrim@612trimTsByVal@608trimTsByFormal@615trimTsByValdecideFormalSuggestedCPdecideTransformeligibleValselectTransform@681determineTransformssuffixEnewLocalNnoEffectExprbuildProjectionsxtyscollapseArgcollapseArgsmkLetsfixupApptransFormalybixitransRebindpassBindpostTransformExprpassImplFileDetupleImplFileUnknownTSIsUnknownTSIsTupleTS_unique_UnknownTSget_UnknownTSget_IsUnknownTSNewTupleTSget_IsTupleTSexprsSameArgIsSameArgIsNewArgs_unique_SameArgget_SameArgget_IsSameArgNewNewArgsget_IsNewArgstransformCallPatterntransformedFormalstransformedValtransformCallPattern@transformedFormals@transformedVal@get_transformCallPatternget_transformedFormalsget_transformedValbaseRangecpisitestransformstransforms@get_transformsegeg@prefix@get_egget_prefixxtyz0RecursiveBindings@218exprIntercept@GetValsBoundInExprCompareTo$cont@197-57CompareTo$cont@197-58get_z0get_RecursiveBindings@218logUsetup_0tup_1tup_2logBindingisInDTreelogNonRecBindinglogRecBindingsfoldUnderLambdafoldLocalVal@300recognise@304UsageFoldersGetUsageInfoOfImplFileNewTupleGetUsesDefnsDecisionTreeBindingsRecursiveBindingsTopLevelBindingsIterationIsAtTopLevelUses@Defns@DecisionTreeBindings@RecursiveBindings@TopLevelBindings@IterationIsAtTopLevel@get_Usesget_Defnsget_DecisionTreeBindingsget_RecursiveBindingsget_TopLevelBindingsget_IterationIsAtTopLevelusesdefnsdecisionTreeBindingsrecursiveBindingstopLevelBindingsiterationIsAtTopLevelmubindseqnsz0@215verboseOptimizationInfoverboseOptimizationsi_ldlencallSizeforAndWhileLoopSizetryCatchSizetryFinallySizeclosureTotalSizemethodDefnTotalSizejitOptDefaultlocalOptDefaultcrossModuleOptDefaultEmptyModuleInfoUnknownValInfolocalVarSizeNoExprsNoFlatExprsAbstractLazyModulInfoToEssentialsabstractLazyModulInfo@1083-1suffixForVariablesThatMayNotBeEliminatedget_verboseOptimizationInfoget_verboseOptimizationsget_i_ldlenget_callSizeget_forAndWhileLoopSizeget_tryCatchSizeget_tryFinallySizeget_closureTotalSizeget_methodDefnTotalSizebraceLseqLxLnamemapLxmapexprValueInfoLexprValueInfosLvinfosmoduleInfoLvalInfoLFunctionSize@TotalSize@HasEffect@MightMakeCriticalTailcall@CompareTo$cont@187-49InfoCompareTo$cont@187-50go@208-14SizeOfValueInfosSizeOfValueInfoMakeValueInfoWithCachedSizevdepthbound@233depthBoundValueInfoBySizevinfoget_jitOptDefaultget_localOptDefaultget_crossModuleOptDefaultCompareTo$cont@260-53CompareTo$cont@260-52CompareTo$cont@260-51CompareTo$cont@260-56CompareTo$cont@260-55CompareTo$cont@260-54GetHashCode$cont@260-13Equals$cont@260-12Equals$cont@260-13IsPartialExprValIsPartialModuleOrNamespaceValssCheckInlineValueIsCompleteget_EmptyModuleInfoUnionModuleInfosFindOrCreateModuleInfoFindOrCreateGlobalModuleInfoBindValueInSubModuleFSharpCorevvalBindValueInModuleForFslibBindValueInGlobalModuleForFslibBindValueForFslibnlvrefget_UnknownValInfoBindInternalLocalValBindExternalLocalValBindValsInModuleOrNamespacemvalBindTypeVartyvtypeinfoBindTypeVarsToUnknownBindCcuGetInfoForLocalValueTryGetInfoForEntitysvTryGetInfoForPathTryGetInfoForNonLocalEntityRefnlerefGetInfoForNonLocalValGetInfoForValstripValue|StripConstValue|_|ev|StripLambdaValue|_|destTupleValuedestRecdValue|StripUnionCaseValue|_|check@643-10MakeValueInfoForValuemkAssemblyCodeValueInfo$cont@897mkAssemblyCodeValueInfo$cont@862-3mkAssemblyCodeValueInfo$cont@862-2mkAssemblyCodeValueInfo$cont@862-1mkAssemblyCodeValueInfo$cont@874-4mkAssemblyCodeValueInfo$cont@881-5IntegerBinaryOp$cont@689c2c1IntegerBinaryOp$cont@689-1IntegerBinaryOp$cont@689-2IntegerBinaryOp$cont@689-3IntegerBinaryOp$cont@689-4IntegerBinaryOp$cont@689-5IntegerUnaryOp$cont@660mkAssemblyCodeValueInfo$cont@727-6mkAssemblyCodeValueInfoargvalsget_localVarSizeAddTotalSizesAuxAddFunctionSizesAuxAddTotalSizesFlatAddFunctionSizesFlatOrEffectsOrEffectsFlatOrTailcallsOrTailcallsFlatOptimizeListAuxacc1acc2OptimizeFlatListget_NoExprsget_NoFlatExprsCombineValueInfoseinfosCombineFlatValueInfosabstractExprInfo@1016isAssemblyBoundaryabstractLazyModulInfopatternInput_0patternInput_1patternInput_2patternInput_3patternInput_4ivalueabstractValInfo@1062abstractModulInfo@1065AbstractLazyModulInfoByHidingget_AbstractLazyModulInfoToEssentialsabstractModulInfo@1080-3get_abstractLazyModulInfo@1083-1abstractExprInfo@1102-5boundTyVarsboundVarsabstractValInfo@1156-1abstractModulInfo@1160-6AbstractExprInfoByVarsremapExprInfo@1174tmenvremapValInfo@1187remapModulInfo@1188RemapLazyModulInfoAbstractAndRemapModulInforepackageget_suffixForVariablesThatMayNotBeEliminatedIsTyFuncValRefExprIsSmallConstExprValueOfExprValueIsUsedOrHasEffectbinfoSplitValuesByIsUsedOrHasEffectIlAssemblyCodeInstrHasEffectExprHasEffectExprsHaveEffectBindingsHaveEffectBindingHasEffectOpHasEffectIsUniqueUse@1346vspec1vspec2GetImmediateUseContext@1354rargslargsrTryEliminateBinding_envTryEliminateLet|KnownValApp|_|ExpandStructuralBinding|QueryRun|_||AnyInstanceMethodApp|_||InstanceMethodApp|_|expectedValRef|QuerySourceEnumerable|_||QueryFor|_||QueryYield|_||QueryYieldFrom|_||QuerySelect|_||QueryZero|_||AnyTupleTrans||AnyQueryBuilderOpTrans|_|f@1-49PicktryRewriteToSeqCombinatorsloopOuter@1620TryDetectQueryQuoteAndRunOptimizeExprOptimizeObjectExpriimplsOptimizeMethodsOptimizeMethodOptimizeInterfaceImplsOptimizeInterfaceImplOptimizeExprOpOptimizeExprOpFallbackargs'arginfosOptimizeConstInfo@TryOptimizeRecordFieldGete1info_tinstTryOptimizeTupleFieldGetTryOptimizeUnionCaseGet_tysOptimizeFastIntegerForLoopspStartOptimizeLetRecg@1-6spTarget2spMatchdinfotg1infoe2infog@1-7e1'e2'g@1-8bindingInfobind'body'bodyInfoOptimizeLinearExprOptimizeTryFinallyOptimizeTryCatchOptimizeWhileLoopmarkerOptimizeTraitCallTryOptimizeValmustInlinevalInfoForValTryOptimizeValInfoAddValEqualityInfoOptimizeValStripToNominalTyconRefCanDevirtualizeApplicationTakeAddressOfStructArgumentIfNeededDevirtualizeApplicationTryDevirtualizeApplicationTryInlineApplication_f0'OptimizeApplicationf0f0tyOptimizeLambdas$cont@2678bodyinfoOptimizeLambdasOptimizeExprsThenReshapeAndConsiderSplitsOptimizeExprsThenConsiderSplitsOptimizeFlatExprsThenConsiderSplitsOptimizeExprThenReshapeAndConsiderSplitshapeOptimizeDecisionTreeTargetsReshapeExprOptimizeExprThenConsiderSplitComputeSplitToMethodConditionthresholdConsiderSplitToMethod$cont@2780ConsiderSplitToMethodOptimizeMatchCombineMatchInfostinfoRebuildOptimizedMatchtgstinfosOptimizeDecisionTreeTargetOptimizeDecisionTreeTryOptimizeDecisionTreeTest$cont@2875TryOptimizeDecisionTreeTestOptimizeSwitchOptimizeSwitchFallbacke'cut@2935einfo$cont@2979nvrefOptimizeBindingOptimizeBindingselimModTy@3050deadSetmtypelimModSpec@3057elimModDef@3061elim_mbindOptimizeModuleExprOptimizeModuleDefbindInfosCollOptimizeModuleBindingsOptimizeModuleBindingOptimizeModuleDefsdefsMarkAsCollapsibleOptimizeImplFileInternalOptimizeImplFilesettingsemitTaicallsp_ExprValueInfop_ValInfop_ModuleInfop_LazyModuleInfoloop@3207-66u_ExprInfou_ValInfou_ModuleInfou_LazyModuleInfoUnknownTypeValue_unique_UnknownTypeValueget_UnknownTypeValueUnknownValueIsUnknownValueIsSizeValueIsValValueIsTupleValueIsRecdValueIsUnionCaseValueIsConstValueIsCurriedLambdaValueIsConstExprValue_unique_UnknownValueget_UnknownValueget_IsUnknownValueNewSizeValueget_IsSizeValueNewValValueget_IsValValueNewTupleValueget_IsTupleValueNewRecdValueget_IsRecdValueNewUnionCaseValueget_IsUnionCaseValueNewConstValueget_IsConstValueNewCurriedLambdaValueget_IsCurriedLambdaValueNewConstExprValueget_IsConstExprValueValMakesNoCriticalTailcallsValExprInfoValMakesNoCriticalTailcalls@ValExprInfo@get_ValMakesNoCriticalTailcallsget_ValExprInfovalMakesNoCriticalTailcallsvalExprInfovalInfoTablevalInfosForFslibget_EntriesTryFindForFslibModuleOrNamespaceInfosValInfos@ModuleOrNamespaceInfos@get_ValInfosget_ModuleOrNamespaceInfosvalInfosmoduleOrNamespaceInfosFunctionSizeTotalSizeHasEffectMightMakeCriticalTailcallget_Infoget_FunctionSizeget_TotalSizeget_HasEffectget_MightMakeCriticalTailcallfunctionSizetotalSizehasEffectmightMakeCriticalTailcallabstractBigTargetsjitOptUserlocalOptUsercrossModuleOptUserbigTargetSizeveryBigExprSizelambdaInlineThresholdreportingPhasereportNoNeedToTailcallreportFunctionSizesreportHasEffectreportTotalSizesDefaultsabstractBigTargets@jitOptUser@localOptUser@crossModuleOptUser@bigTargetSize@veryBigExprSize@lambdaInlineThreshold@reportingPhase@reportNoNeedToTailcall@reportFunctionSizes@reportHasEffect@reportTotalSizes@get_abstractBigTargetsget_jitOptUserget_localOptUserget_crossModuleOptUserget_bigTargetSizeget_veryBigExprSizeget_lambdaInlineThresholdget_reportingPhaseget_reportNoNeedToTailcallget_reportFunctionSizesget_reportHasEffectget_reportTotalSizesget_DefaultsjitOptlocalOptcrossModuleOptKeepOptimizationValuesInlineLambdasEliminateUnusedBindingsEliminateTryCatchAndTryFinallyEliminateSequentialEliminateSwitchEliminateRecdFieldGetEliminateTupleFieldGetEliminatUnionCaseFieldGetEliminateImmediatelyConsumedLocalsExpandStructrualValuesoptimizinglocalInternalValsoptimizing@scope@localInternalVals@settings@get_optimizingget_scopeget_localInternalValsget_settingslatestBoundIddontInlinedontSplitVarsfunctionValtyparInfoslocalExternalValsglobalModuleInfoslatestBoundId@dontInline@dontSplitVars@functionVal@typarInfos@localExternalVals@globalModuleInfos@get_latestBoundIdget_dontInlineget_dontSplitVarsget_functionValget_typarInfosget_localExternalValsget_globalModuleInfosrflv2vtyreplaceArgsnewSourcedetupArgssubshapeContainsValtypeToLookFordeadSet0p1i_ldlen@63-1EmptyModuleInfo@389UnknownValInfo@424NoExprs@976NoFlatExprs@977AbstractLazyModulInfoToEssentials@1078abstractLazyModulInfo@1083permitInferTyparsdontInferTyparsnoArgOrRetAttribsemptyUnscopedTyparEnvExprContainerInfoEmptyTopAttrsisThreadOrContextStaticmkNilListPatmkConsListPatphmkCompGenLetInIsSecurityAttributecasmapIsSecurityCriticalAttributeRecdFieldInstanceChecksILFieldInstanceChecksMethInfoChecksisInstancetyargsOptobjArgsCheckRecdFieldMutationemptyTcEnvEnterFamilyRegionExitFamilyRegionAreWithinCtorShapeGetCtorShapeCounterGetRecdInfoAdjustCtorShapeCounterExitCtorShapeRegionisEmptyFreeTyvarsftyvsaddFreeItemOfTyeUngeneralizableItemsaddFreeInModuleTyaddFreeItemOfModuleTyAddValMapToNameEnvAddValListToNameEnvaddInternalsAccessibilityModifyNameResEnvAddLocalValPrimitiveAddLocalValMapscopemAddLocalValsAddLocalValAddLocalExnDefnAddLocalTyconRefsownDefinitiontcrefsAddLocalTyconsAndReporttyconsOpenModulesOrNamespacesmvvsAddRootModuleOrNamespaceRefsAddNonLocalCcuinternalsVisibleAddLocalRootModuleOrNamespaceAddModuleAbbreviationAddLocalSubModuleRegisterDeclaredTyparsAddDeclaredTyparsUnifyTypesexpectedTyactualTyMakeInitialEnvMakeInnerEnvmodKindMakeInnerEnvForTyconRefisExtrinsicExtensionMakeInnerEnvForMemberLocateEnvenclosingNamespacePathBuildRootModuleTypecpathBuildRootModuleExprImplicitlyOpenOwnNamespaceUnifyTupleTypepsUnifyFunctionTypeUndoIfFailedUnifyFunctionTypeextraInfomFunExprUnifyUnitType$cont@663exprOptUnifyUnitTypeSettersOfPropInfospinfosGettersOfPropInfossendPropertyToSink@721callSinksendToSink@744-2mObjTyrefinedMinfostcMeasure@763msunif_measure_arg@785iszerotcrTcConstTcFieldInitlitAdjustValSynInfoInSignatureTranslateTopArgSynInfoisArgtcAttributeTranslateTopValSynInfoTranslatePartialArityComputeLogicalNamememberFlagsMakeMemberDataAndMangledNameForMemberVal$cont@951valSynDataMakeMemberDataAndMangledNameForMemberValisExtrinsicoptImplSlotTysisCompGenget_permitInferTyparsget_dontInferTyparsget_noArgOrRetAttribsAllowedAttribTargets$cont@1030memberFlagsOptUpdateAccModuleOrNamespaceTypePublishModuleDefnPublishTypeDefnPublishValueDefnPrimPublishValueDefndeclKindCombineVisibilityAttribsvis1vis2ComputeAccessAndCompPathdeclKindOptvisactualParentFSharpChoice`6CheckForAbnormalOperatorNames$cont@1270idRangeopNameCheckForAbnormalOperatorNamesMakeAndPublishValaltActualParentinSigvreckonstisGeneratedEventValMakeAndPublishValsvalSchemesMakeAndPublishBaseValbaseIdOptInstanceMembersNeedSafeInitCheckthisTyMakeSafeInitFieldComputeInstanceSafeInitInfoMakeAndPublishSafeThisValthisIdOptAdjustAndForgetUsesOfRecValuevrefTgtvalSchemeAdjustRecTypeRecordUseOfRecValuevexpGetAllUsesOfRecValueChooseCanonicalDeclaredTyparsAfterInferencedeclaredTyparsChooseCanonicalValSchemeAfterInferencevalschemePlaceTyparsInDeclarationOrdergeneralizedTyparsSetTyparRigidcomputeRelevantTypars@1556generalizedTyparsForThisBindingallDeclaredTyparsthruFlagForAll2GeneralizeValenclosingDeclaredTyparsDontGeneralizeValstypesComputeIsTyFunchasDeclaredTyparsarityInfoUseSyntacticAritytypeSchemepartialValReprInfochoose@1652-5ai1ai2loop@1660-60ais1ais2CombineSyntacticAndInferredAritiesrhsExprprelimSchemeBuildValSchemepartialArityInfoOptMakeSimpleValsMakeAndPublishSimpleVals$cont@1713MakeAndPublishSimpleValsmergeNamesInOneNameresEnvFreshenTyconRefrigiddeclaredTyconTyparsFreshenPossibleForallTyinfoOfTyconRefFreshenAbstractSlotsynTyparDeclsabsMethInfoBuildFieldMap$cont@1839frefSetsrfldsListfsfldExprfref2BuildFieldMapisPartialfldsApplyUnionCaseOrExnmakerForUnionCasemakerForExnTagoverallTyApplyUnionCaseOrExnTypesApplyUnionCaseOrExnTypesForPatUnionCaseOrExnChecknargtysnargsTcUnionCaseOrExnFieldfuncs_0funcs_1get_emptyUnscopedTyparEnvAddUnscopedTyparHideUnscopedTyparsComputeInlineFlagmemFlagsOptionisInlineisMutablePushOnePatternToRhsFreshenObjectArgTypeTcValEarlyGeneralizationConsistencyCheckcheckInst@2622TcVal$cont@2622-1tpenvoptInstTcVal$cont@2602checkAttributesLightweightTcValForUsingInBuildMethodCallMakeApplicableExprWithFlexTcRuntimeTypeTestisCastsrcTyTcStaticUpcastBuildPossiblyConditionalMethodCallisPropminstTryFindIntrinsicOrExtensionMethInfoBuildDisposableCleanupBuildILFieldGetobjExprBuildILFieldSetargExprBuildILStaticFieldSetBuildRecdFieldSet|BinOpExpr|_||SimpleEqualsExpr|_|isOpName@2959|JoinRelation|_|$cont@2967|JoinRelation|_|TryGetNamedArgGetMethodArgsCompilePatternForMatchmExprmatchmwarnOnUnusedactionOnFailureclausesinputTyresultTyCompilePatternForMatchClausestclauseserr@3046-5findMethInfo@3051m@3051hasArgs@3058allEquivReturnTypes@3101enumElemTy$cont@3101tyToSearchForGetEnumeratorAndItemenumElemTytryType$cont@3087-1localAllocexprToSearchForGetEnumeratorAndItemgetEnumerator_minfogetEnumerator_minstretTypeOfGetEnumeratormoveNext_minfomoveNext_minstget_Current_minfoget_Current_minsttryType$cont@3068tryType@3063probe@3153exprtyAnalyzeArbitraryExprAsEnumerableConvertArbitraryExprToEnumerablemkSeqEmptygenTymkSeqCollectlamenumExprmkSeqUsingresourceTyresourceExprmkSeqDelaymkSeqAppendmkSeqFromFunctionsmkSeqFinallymkSeqExprMatchClausespat'vspecsinnerExprcompileSeqExprMatchClausesinputExprMarkbindPatTygenInnerTyelimFastIntegerForLoopfinish|ExprAsPat|_|YieldFree@3270IsSimpleSemicolonSequenceElement@3288acceptDeprecatedGetSimpleSemicolonSequenceOfComprehension@3306|SimpleSemicolonSequence|_|stripChooseAndExpr@3356strict@3362lzy@3366fixable@3369CheckExpr@3375rvsoutOfOrderruntimeChecksdirectRecursiveDatareportedEagerdefiniteDependenciesavailIfInOrderCheckBinding@3432-6CheckDecisionTree@3433-1CheckDecisionTreeTarget@3437-2CheckExprOp@3439-19CheckValSpec@3444-1checkDelayed@3465check@3361-6EliminateInitializationGraphs$cont@3499mustHaveArityfixupPointsseqPtOptIterateCyclesEliminateInitializationGraphsfixupsAndBindingsWithoutLazinessbindsmerror@3532-1rewriteContruction@3538recdExprf@1-44checkAndRewrite@3562checkAndRewriteCtorUsage@3593CheckAndRewriteObjectCtorctorLambaExprbuildAppMakeDelayedSetget_ExprContainerInfoModuleOrNamespaceContainerInfoTyconContainerInfoparentsafeInitInfoCanInferExtraGeneralizedTyparsForRecBindingpgrbindfirstArg@3795GetInstanceMemberThisVariablecheckSimpleConstraint@3811newOkconstraintAdderTcTyparConstraint$cont@3858checkCxsoccTcTyparConstraint$cont@3870-1TcTyparConstraintridxTcPseudoMemberSpec$cont@3895memSpfnTcPseudoMemberSpecsynTyparsreallyGenerateOneMember@3985memberContainerInfovalSynInfoty'generateOneMember@3949declaredTyTcValSpeccontainerInfothisTyOptvalSpfncheckRes@4058optKindTcTyparOrMeasureParTcTyparTcTyparDeclTcTyparDeclsTcTypeOrMeasure$cont@4128postfixTcTypeOrMeasure$cont@4238-1arg1TcTypeOrMeasureTcTypeTcMeasureTcAnonTypeOrMeasuredynTcTypesTcTypesAsTuplegather@4289-8isquotTcMeasuresAsTupleTcTypesOrMeasuresoptKindsTcTyparConstraintswcsfail@4317-4record@4318idOptttypeBooleanv$cont@4327-2v$cont@4327-1v$cont@4327v$cont@4355-3TcStaticConstantParameterSkipWhileTcProvidedTypeAppToStaticConstantArgsoptGeneratedTypePathTcTypeApppathTypeArgsTcTypeOrMeasureAndRecoverTcTypeAndRecoverTcNestedTypeApplicationmWholeTypeAppTryAdjustHiddenVarNameToCompGenNamealtNameRefCellOptTcSimplePatoptArgsOKgetPats@4555spatsisOptArg@4560-1patValidateOptArgOrderTcSimplePatsTcPatBindingNameisMemberThistopValDatainlineFlagargAttribsTcPatAndRecoverwarnOnUppervFlags_0vFlags_1vFlags_2vFlags_3vFlags_4vFlags_5convSynPatToSynExpr@4750args$cont@4797-1TcPat$cont@4793vFlagsTcPatTcPatternss_0s_1s_2solveTypAsErrorRecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffectsdummyCheckedDelayed@4935RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects_DelayedTcExprOfUnknownTypeTcExprFlexflexTcExprTcExprNoRecoverTcExprThatIsCtorBodysafeInitInfo_0safeInitInfo_1TcExprThatCanBeCtorBodyTcExprThatCantBeCtorBodyTcStmtThatCantBeCtorBodyTcStmtTcExprThenZip3TcExprsflexesCheckSuperInitobjTyTcExprUndelayedNoTypeTcLinearSeqs@5357TcExprUndelayedTcIteratedLambdasisFirstMakeIndexParam@5566indexArgsidxRangevoptTcIndexerThen$cont@5607mWholeExprmDotwholeExpre1typropNameTcIndexerThenTcNewExprmObjTyOptsuperInitmWholeExprOrObjTyTcCtorCallisNakedmWholeCallafterTcOverloadResolutionOptfieldNameUnbound@5732fldsListnomTcRecordConstructionoptOrigExprlookPat@5800mBindingGetNameAndArityOfObjExprBindingFreshenObjExprAbstractSlot$cont@5822virtNameAndArityPairsbindNameFreshenObjExprAbstractSlotimpltybindAttribsabsSlotslookPat@5853-1bindingRhsTcObjectExprBindingabsSlotInfoComputeObjectExprOverridesCheckSuperTypeTcObjectExprsynObjTyargoptextraImplsmNewExprTcConstStringExpr$cont@6119TcConstStringExprexpr$cont@6159suffixmodNamemrefTcConstExprTcAssertExprTcRecdExprinheritsNewChoice2Of3NewChoice3Of3TcForEachExpr$cont@6297enumExprTyChoice1Of3Choice2Of3Choice3Of3NewChoice1Of3TcForEachExprenumSynExprspForLoopTcQuotationExpr_operrawisFromQueryExpressionTcComputationOrSequenceExpressioninterpValOptmkSynCall@6429builderValNamemkSourceExpr@6442sourceMethInfocallExprflagSearch@6469mBuilderValmethInfotryGetDataForCustomOperation$cont@6504customOperationMethodsIndexedByMethodNameopDatatryGetDataForCustomOperation@6500customOperationMethodsIndexedByKeywordcustomOperationMaintainsVarSpace@6519customOperationMaintainsVarSpaceUsingBind@6524customOperationIsLikeZip@6529customOperationIsLikeJoin@6534customOperationIsLikeGroupJoin@6539customOperationJoinConditionWord@6544customOperationAllowsInto@6549customOpUsageText@6554tryGetArgInfosForCustomOperator@6572expectedArgCountForCustomOperator@6585isCustomOperationProjectionParameter@6591|ForEachThen|_|@6600|CustomOpId|_|@6605|InExpr|_|@6611|OnExpr|_|@6617|IntoSuffix|_|@6629arbPat@6636MatchIntoSuffixOrRecover@6638alreadyGivenErrorMatchOnExprOrRecover@6650onExprJoinOrGroupJoinOp@6660detectorarbKeySelectors@6679|JoinExpr|_|@6681customOperationIsLikeJoin|GroupJoinExpr|_|@6692customOperationIsLikeGroupJoin|JoinOrGroupJoinOrZipClause|_|$cont@6707customOperationIsLikeZip|JoinOrGroupJoinOrZipClause|_|@6706|ForEachThenJoinOrGroupJoinOrZipClause|_|@6735strip@6755-2|StripApps|@6754|OptionalIntoSuffix|@6765|CustomOperationClause|_|@6770mkExprForVarSpace@6787patvsmkSimplePatForVarSpace@6793mkPatForVarSpace@6801|OptionalSequential|@6807checkForBinaryApp@6813addVarsToVarSpace@6831varSpacemkJoinExpr@6912mOpCorefirstSourcesecondSourcefirstSourceSimplePatssecondSourceSimplePatskeySelector1keySelector2innerPatwrapInArbErrSequence@6941captionisNullableOp@6945opIdtryTrans$cont@6950-2varSpaceWithGroupJoinVarssecondResultPatrelExprtryTrans$cont@6974-3varSpaceWithSecondVarsForcetryTrans$cont@6909-1builderTyisQueryemptyVarSpacetranslatedCtxtsecondResultPatOptkeySelectorsOptinnerComptryTrans$cont@6871secondSourcePatisFromSourcefirstSourcePatInitializeconsumeClauses@7087mClausedataCompPriorcompClausesExprlastUsesBindtryTrans$cont@7201-4innerComp2innerComp1tryTrans$cont@7303-5tryTrans$cont@7324-6mTryToLasttryTrans$cont@7043-7unwindExprtryTrans@6847firstTrytransNoQueryOps@7357trans@7358-2TcComputationExpressionmWholeinterpExprmkDelayedExpr@7421coreExprtryTcSequenceExprBody@7426env@7426genOuterTytcSequenceExprBody@7574env@7574-1TcSequenceExpressionpropagate@7606delayedListPropagateThenTcDelayedatomicFlagTcDelayeddelayRestmPriorTcFunctionApplicationThenmExprAndArgsynArgTcLongIdentThenmkConstrApp@7756mItem|FittedArgs|_|@7769TcItemThenafterOverloadResolutionGetMemberApplicationArgsTcLookupThenmObjExprobjExprTymExprAndLongIdbindObjArgs@8240objDetailsTcEventValueThenmExprAndItemTcMethodApplicationThenuserTypeArgsmutmethsafterTcOverloadResolutionGetNewInferenceTypeForMethodArgisSimpleFormalArg@8347CalledMethHasSingleArgumentGroupOfThisLength@8450GenerateMatchingSimpleArgumentTypes@8455isSimpleFormalArgcalledMethUnifyMatchingSimpleArgumentTypes@8461mMethExprexprTymk_CalledMeth@8524checkingAttributeCallobjArgTysunnamedCurriedCallerArgsnamedCurriedCallerArgspinfoOptusesParamArrayConversionmethsAndPropsToCalledMeths@8531methsAndPropsisUniquelyResolved@8540callerArgCounts_0callerArgCounts_1calledMethGroupTcMethodApplication$cont@8560candidatescoerceExpr$cont@8735isOutArgcalledArgTycallerArgTycallerArgExprcoerceExpr@8730build@8801emptyPreBinderitem12item11item10get_ParamArrayCalledArgOptNewCallerArgNewAssignedCalledArgTcMethodApplicationcalledMethsAndPropscurriedCallerArgsTcMethodArgsTcMethodArgTcMethodNamedArgsNewCallerNamedArgTcMethodNamedArgTcNewDelegateThenmDelTydelegateTybind_letreccheckRecursiveBindingIdsTcLinearLetExprsbodyCheckerprocessUseBindingsisUseTcAndPatternCompileMatchClausesTcMatchPatternoptWhenExprTcMatchClausesTcMatchClauseTcStaticOptimizationConstraintTcAttrs@9128envinnerattrTgttgtTcNormalizedBindingsafeThisValOpteval@9261TcLiteralsynLiteralValExprTcBindingTyparDeclsalwaysRigidTcNonrecBindingTyparDeclsTcNonRecursiveBindingtry1@9314mAttrtypathtyidTcAttribute$cont@9341TcAttribute$cont@9356-1directedTgts$cont@9370-1targetIndicatorpossibleTgtsdirectedTgts$cont@9370TcAttributesynAttrTcAttributesWithPossibleTargetssynAttribsTcAttributesmkRhsBind@9565rhsetmpmkPatBind@9567tauTypat''allValsDefinedByPatterntmtmtymkCleanup@9573mk_seq_bind@9538TcLetBindingstripLets@9599TcLetBindingsCheckMemberFlagsoptIntfSlotTynewslotsOKoverridesOKApplyTypesFromArgumentPatternsComputeIsCompletemakeUniqueBySig@9669ApplyAbstractSlotInference$cont@9672-1bindingTymemberIdrenamingtypToSearchForAbstractMembersApplyAbstractSlotInference$cont@9669ApplyAbstractSlotInferencetcrefObjTy_objTyCheckForNonAbstractInterfaceAnalyzeRecursiveStaticMemberOrValDecl$cont@9840AnalyzeRecursiveStaticMemberOrValDecltcrefContainerInfobindingAttribsAnalyzeRecursiveInstanceMemberDeclthisIdtoolIdanalyzeRecursiveDeclPat@9936AnalyzeRecursiveDecldeclPatternAnalyzeAndMakeRecursiveValuerecBindIdxAnalyzeAndMakeRecursiveValuesTcLetrecBindingenvRecextraGeneralizableTyparsreqdThisValTyOptenvNonRecgeneralizedRecBindspreGeneralizationRecBindsuncheckedRecBindsTablerbindloop@10207-62freeInEnvfreeInUncheckedRecBindsfrozenBindingsTcIncrementalLetRecGeneralizationTcLetrecComputeAndGeneralizeGenericTyparsForBindingTcLetrecComputeSupportForBindingTcLetrecGeneralizeBindingTcLetrecComputeCtorSafeThisValBindMakeCheckSafeInitFieldthisValOptreqExprMakeCheckSafeInitTcLetrecAdjustMemberForSpecialValsFixupLetrecBindgeneralizedTyparsForRecursiveBlockTcLetrecTcAndPublishValSpecCheckNamespaceModuleOrTypeNameCheckDuplicatesidfPublishInterfaceTcAndPublishMemberSpecTcTyconMemberSpecsaugSpfnTcModuleOrNamespaceLidAndPermitAutoResolveIsPartiallyQualifiedNamespace@10811TcOpenDeclinterfacesFromTypeDefn@12336interfaceMembersFromTypeDefn@12368tyconBindingsOfTypeDefn@12396TcTyconMemberDefnstyconDefnMembersComputeModuleNamelongPathCheckForDuplicateConcreteTypeCheckForDuplicateModuleTcSignatureElement$cont@14669TcSignatureElementendmTcSignatureElementsxmlComputeModuleOrNamespaceKindisModuleTcModuleOrNamespaceSignatureTcModuleOrNamespaceSignatureElementsTcModuleOrNamespaceElement$cont@14814TcModuleOrNamespaceElementTcModuleOrNamespaceElementsAuxdefsSoFarenvAtEndmoreDefsTcModuleOrNamespaceElementsTcModuleOrNamespacemodAttrswarn@15012AddCcuToTcEnvautoOpensCreateInitialTcEnvget_EmptyTopAttrsCombineTopAttrstopAttrs1topAttrs2IterTyconsOfModuleOrNamespaceTypeapplyDefaults@15062denvAtEndunsolvedpriorityApplyDefaultscheck@15094-7CheckValueRestrictionimplFileTypePriorToSigSolveInternalUnknownsCheckModuleSignature$cont@15138implFileSpecPriorToSigCheckModuleSignaturef@422-45f@422-46f@422-47f@422-48implFileExprAfterSig_arg2_3TypecheckOneImplFiletopCcuTypecheckOneSigFileData3Data3@data3get_Data3Data4Data4@data4get_Data4Data5Data5@data5get_Data5IsSafeInitFieldNoSafeInitInfoIsNoSafeInitInfo_unique_NoSafeInitInfoNewSafeInitFieldget_IsSafeInitFieldget_NoSafeInitInfoget_IsNoSafeInitInfoctorShapeCounterctorIsImplicitctorShapeCounter@safeThisValOpt@safeInitInfo@ctorIsImplicit@get_ctorShapeCounterget_safeThisValOptget_safeInitInfoget_ctorIsImplicitWillNeverHaveFreeTyparsCachedFreeLocalTyconsCachedFreeTraitSolutionscomputeFreeTyvarswillNeverHaveFreeTyparscachedFreeLocalTyconscachedFreeTraitSolutionsGetFreeTyvarsget_WillNeverHaveFreeTyparsget_CachedFreeLocalTyconsget_CachedFreeTraitSolutionseNameResEnvePatheCompPatheAccessPatheAccessRightseInternalsVisibleCompPathseModuleOrNamespaceTypeAccumulatoreFamilyTypeeCtorInfoNameEnveNameResEnv@eUngeneralizableItems@ePath@eCompPath@eAccessPath@eAccessRights@eInternalsVisibleCompPaths@eModuleOrNamespaceTypeAccumulator@eFamilyType@eCtorInfo@get_eNameResEnvget_eUngeneralizableItemsget_ePathget_eCompPathget_eAccessPathget_eAccessRightsget_eInternalsVisibleCompPathsget_eModuleOrNamespaceTypeAccumulatorget_eFamilyTypeget_eCtorInfoget_NameEnvrecUsespostInferenceChecksisScriptsynArgNameGeneratorcsscompilingCanonicalFslibModuleTypeisSighaveSignameResolverrecUses@postInferenceChecks@isScript@synArgNameGenerator@tcSink@topCcu@css@compilingCanonicalFslibModuleType@isSig@haveSig@niceNameGen@infoReader@nameResolver@conditionalDefines@get_recUsesget_postInferenceChecksget_isScriptget_synArgNameGeneratorget_tcSinkget_topCcuget_cssget_compilingCanonicalFslibModuleTypeget_isSigget_haveSigget_niceNameGenget_infoReaderget_nameResolverget_conditionalDefinesset_recUsesset_postInferenceCheckstpsorigDoNothingIsDoNothingIsSendToSinkIsReplaceWithOverrideAndSendToSink_unique_DoNothingget_DoNothingget_IsDoNothingNewSendToSinkget_IsSendToSinkNewReplaceWithOverrideAndSendToSinkget_IsReplaceWithOverrideAndSendToSinkForMethodsForPropertiesgettersOrSettersForConstructorsForNewConstructorsOnOverloadResolutionFailureNewPartialValReprInfoNewValMemberInfoTransientlogicalNameityIsOverridesOKWarnOnOverridesIsWarnOnOverridesErrorOnOverridesIsErrorOnOverrides_unique_OverridesOK_unique_WarnOnOverrides_unique_ErrorOnOverridesget_OverridesOKget_IsOverridesOKget_WarnOnOverridesget_IsWarnOnOverridesget_ErrorOnOverridesget_IsErrorOnOverridesNewExplicitTyparInfoNewArgAndRetAttribsModuleOrMemberBindingIsModuleOrMemberBindingIntrinsicExtensionBindingIsIntrinsicExtensionBindingExtrinsicExtensionBindingIsExtrinsicExtensionBindingClassLetBindingIsClassLetBindingObjectExpressionOverrideBindingIsObjectExpressionOverrideBindingExpressionBindingIsExpressionBindingCanBeDllImport_unique_ModuleOrMemberBinding_unique_IntrinsicExtensionBinding_unique_ExtrinsicExtensionBinding_unique_ClassLetBinding_unique_ObjectExpressionOverrideBinding_unique_ExpressionBindingget_ModuleOrMemberBindingget_IsModuleOrMemberBindingget_IntrinsicExtensionBindingget_IsIntrinsicExtensionBindingget_ExtrinsicExtensionBindingget_IsExtrinsicExtensionBindingget_ClassLetBindingget_IsClassLetBindingget_ObjectExpressionOverrideBindingget_IsObjectExpressionOverrideBindingget_ExpressionBindingget_IsExpressionBindingIsModuleOrMemberOrExtensionBindingMustHaveArityget_CanBeDllImportIsAccessModifierPermittedImplicitlyStaticAllowedAttribTargetsCanGeneralizeConstrainedTyparsConvertToLinearBindingsCanOverrideOrImplementItem10Item11NewPrelimValScheme1get_Item10get_Item11get_IdentNewPrelimValScheme2Item12GeneralizedTyparsNewValSchemeget_Item12get_GeneralizedTyparsget_TypeSchemeNewTcPatPhase2InputItem13Item14SeqPointitem13item14NewCheckedBindingInfoget_Item13get_Item14get_Exprget_SeqPointintoFslibCcuNewRecursiveUseFixupPointslv1ftpsnameResolutionsmergedtyparInstFromAbsSlotl1l2NewUnscopedTyparEnvIsCanGeneralizeConstrainedTyparsDoNotGeneralizeConstrainedTyparsIsDoNotGeneralizeConstrainedTypars_unique_CanGeneralizeConstrainedTypars_unique_DoNotGeneralizeConstrainedTyparsget_CanGeneralizeConstrainedTyparsget_IsCanGeneralizeConstrainedTyparsget_DoNotGeneralizeConstrainedTyparsget_IsDoNotGeneralizeConstrainedTyparsNewNormalizedBindingRhsNewNormalizedBindingPatNewNormalizedBindingObjExprBindingValOrMemberBindingIsValOrMemberBinding_unique_ObjExprBinding_unique_ValOrMemberBindingget_ObjExprBindingget_IsObjExprBindingget_ValOrMemberBindingget_IsValOrMemberBindingtau2NewApplicableExprSupplyArgumentisNonFlexibleTypeactualTypettypesvalrefvalUseotherIsTopInnerTopIsInnerTopDefinitelyStrictIsDefinitelyStrictMaybeLazyIsMaybeLazyDefinitelyLazyIsDefinitelyLazy_unique_Top_unique_InnerTop_unique_DefinitelyStrict_unique_MaybeLazy_unique_DefinitelyLazyget_Topget_IsTopget_InnerTopget_IsInnerTopget_DefinitelyStrictget_IsDefinitelyStrictget_MaybeLazyget_IsMaybeLazyget_DefinitelyLazyget_IsDefinitelyLazyFixupPointsFixupPoints@Binding@get_FixupPointsget_BindingvelazyIsDelayedTypeAppIsDelayedAppIsDelayedDotLookupIsDelayedSetNewDelayedTypeAppget_IsDelayedTypeAppNewDelayedAppget_IsDelayedAppNewDelayedDotLookupget_IsDelayedDotLookupNewDelayedSetget_IsDelayedSetIsNewSlotsOKNoNewSlotsIsNoNewSlots_unique_NewSlotsOK_unique_NoNewSlotsget_NewSlotsOKget_IsNewSlotsOKget_NoNewSlotsget_IsNoNewSlotsNewTyparsOKButWarnIfNotRigidIsNewTyparsOKButWarnIfNotRigidNewTyparsOKIsNewTyparsOKNoNewTyparsIsNoNewTypars_unique_NewTyparsOKButWarnIfNotRigid_unique_NewTyparsOK_unique_NoNewTyparsget_NewTyparsOKButWarnIfNotRigidget_IsNewTyparsOKButWarnIfNotRigidget_NewTyparsOKget_IsNewTyparsOKget_NoNewTyparsget_IsNoNewTyparsCheckCxsIsCheckCxsNoCheckCxsIsNoCheckCxs_unique_CheckCxs_unique_NoCheckCxsget_CheckCxsget_IsCheckCxsget_NoCheckCxsget_IsNoCheckCxsFirstPassIsFirstPassSecondPassIsSecondPass_unique_FirstPass_unique_SecondPassget_FirstPassget_IsFirstPassget_SecondPassget_IsSecondPassNewMemberOrValContainerInfoNewContainerInfoget_ParentRefNewNormalizedRecBindingDefnNewTyconBindingDefnNewTyconBindingDefnsNewTyconMemberDataNewValSpecResultNewRecBindingDefnEnclosingDeclaredTyparsDeclaredTyparsIndexNewRBInfoget_EnclosingDeclaredTyparsget_Valget_ExplicitTyparInfoget_DeclaredTyparsget_Indexget_ContainerInfoget_DeclKindSyntacticBindingRecBindingInfoSyntacticBinding@RecBindingInfo@get_SyntacticBindingget_RecBindingInfosyntacticBindingrecBindingInfoExtraGeneralizableTyparsCheckedBindingExtraGeneralizableTypars@CheckedBinding@get_ExtraGeneralizableTyparsget_CheckedBindingcheckedBindingValScheme@get_ValSchemememInfovalSynInfo0memberFlags0delTyunnamedArgsspNamehitOptArgc'bindfnames2pat1'pat2'pats'apinfoactivePatResTysactivePatExprarg'activePatIdentitymkfargtyisArrayfspfldsmapfldsmap'IdentityvspecMapfnamefexproldve'isObjExprBindingimplTySetbindingSynAttribsextraBindingbkeybindingBodyovinfodispatchSlotsKeyedoverrideMeththisValmtpsisFakeEventPropertysearchForOverrideoverriddenlidwdisOkarrExpridxExprelemVararrVarcustomOperationMethods_mCustomOppat3mOpCore0varSpaceSimplePatholeFillspIfToThenmIfToThenmIfToEndOfElseBranchisRecoveryguardExprelseCompmQueryOpbindRangeinnerRange_arg64_arg65sourceExprwrappedSourceExprmFormPatmWhileenv0matchty_arg66mkConstrAppmExprAndTypeArgskindsdelegateTypeinvokeMethInfocompiledViewOfDelArgTysargsTyobjVars_arg68argTysdummyExpr_arg69_arg70methget_UsesParamArrayConversion_arg74cmeth_arg75resultMinfoargSet_arg78caobjArgcalledcallerparamArrayCalledArgElementType_arg79wrapper2rhswrapper_arg80_arg81_arg82_arg83hashOfBinds_arg84synAttribtbinfotp1tp2mkf_sofarlazyFreeInEnverasureFlagminfo2uniqueAbstractPropvStamp_arg85get_ContentsfrozenBindingTypesfreeInFrozenAndLaterBindings_arg86synCanInferTyparsmutableFlagliteralExprOptcanInferTyparsvalSpecResultuc1uc2memity'defnNewTyconDefnCoreNewTyconDefnCoreIndexedmtypeAccmvvisContinuingModulemexprRootmainMethodAttrsnetModuleAttrsassemblyAttrsmainMethodAttrs@netModuleAttrs@assemblyAttrs@get_mainMethodAttrsget_netModuleAttrsget_assemblyAttrscsenvtpcimplFileFragssigFileFragssigFileTypeComputeTyconDeclKindisAtOriginalTyconDefncsallFalseCheckMembersForm$cont@14277dsCheckMembersForm$cont@14305-1CheckMembersFormpreAutoProps$cont@14365tyOptpropKindmWholeAutoPropSplitTyconDefn$cont@14333treprsynTyconInfoimplements1SplitTyconDefnSplitTyconDefnsPrepareTyconMemberDefnstyDeclmTcTyconDefnstypeDefspreEstablishedHasDefaultCtor$cont@14555SplitTyconSignature$cont@14535extraMembersSplitTyconSignatureSplitTyconSignaturesTcTyconSignatureMemberSpecsTcTyconSignaturestspecsmMemberPortionfldIdheadPatIdsheadPatComputeTyconNamedoEraseGetTyconAttribsInferTyconKindslotsigsisConcrete|TyconCoreAbbrevThatIsReallyAUnion|_|hasMeasureAttrsynTyconReprGetStructuralElementsOfTyconDefnTcTyconDefnCore_Phase0_BuildInitialTyconrepr$cont@13126-1TcTyconDefnCore_Phase1_EstablishBasicKindTcTyconDefnCore_GetGenerateDeclaration_RhsrhsTypeTcTyconDefnCore_TryAsGenerateDeclarationdoNestedType@13312lookupTyconReflookupILTypeRefisSuppressRelocatedoNestedTypes@13360TcTyconDefnCore_Phase2_EstablishDeclarationForGeneratedSetOfTypestcrefForContainertheRootTypecheckTypeNameTcTyconDefnCore_Phase2_Phase4_EstablishAbbreviationspasscheckedAttrsTcTyconDefnCore_Phase3_Phase5_EstablishSuperTypesAndInterfaceTypestypeDefCorescheckedAttrsListnoAbstractClassAttributeCheck@13592hasAbstractAttrnoAllowNullLiteralAttributeCheck@13595hasAllowNullLiteralAttrallowNullLiteralAttributeCheck@13599structLayoutAttributeCheck@13605thisTyconRefhasStructLayoutAttrallowedhiddenReprChecks@13614hasSealedAttrhasReprnoMeasureAttributeCheck@13621noCLIMutableAttributeCheck@13624hasCLIMutablenoSealedAttributeCheck@13627noFieldsCheck@13630fields'writeFakeRecordFieldsToSink@13642thisTyInstwriteFakeUnionCtorsToSink@13655unionCasesTcTyconDefnCore_Phase6_EstablishRepresentation$cont@13864innerParentm@13864-1TcTyconDefnCore_Phase6_EstablishRepresentationaccInAbbrevType@13905accInMeasure@13931accInAbbrevTypes@13941CheckForCyclicAbbreviationsinsertEdgeToTycon@14004tycon2insertEdgeToType@14010accStructField@14017structTyconstructTyInstaccStructFieldType@14022fieldTydoneTypesaccStructFields@14048includeStaticFieldsaccStructInstanceFields@14058CheckForCyclicStructsAndInheritanceisAugmentationTyconDefnReprcheckExplicitConstraints@14147TcTyconDefnCoresargtyslimplicitCtorSynPatsilTgtRootTyRefnestedTyReffirstPassinheritedTysisIncrClassctorArgNamestaccessslotsscSetseSetexnc$cont@12863TcExnDefnCoreTcExnDefnTcExnSignaturecheckIfFieldTypeSupportsComparison@12582initialAssumedTyconsassumedTyconsassumedTyparsassumedTyparsAccloop@12577-64tabInferSetOfTyconsSupportingComparablestructuralTypescheckIfFieldTypeSupportsEquality@12710loop@12705-65InferSetOfTyconsSupportingEquatablecheckIfFieldTypeSupportsComparisontyconStampcheckIfFieldTypeSupportsEqualitytcaug_has_nominal_interfacetcaugAddGenericCompareDeclarations$cont@12464-1genericIComparableTyAddGenericCompareDeclarations$cont@12445AddGenericCompareDeclarationsAddGenericEqualityWithComparerDeclarationsAddGenericCompareBindingsAddGenericCompareWithComparerBindingsAddGenericEqualityWithComparerBindingsAddGenericHashAndComparisonBindingsAddGenericEqualityBindings$cont@12530AddGenericEqualityBindingsinitialInnerState@11727uncheckedBindsRevprelimRecValuesRevenvForTyconTcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatterns$cont@11762incrClassCtorLhsOptletBindsTcTyconBindings_PassA_CreateRecursiveValuesAndCheckArgumentPatternsenvInitialbindslTcTyconBindings_PassB_TypeCheckAndIncrementalGeneralizationdefnsAsprelimRecValuesuncheckedRecBindsTcTyconBindings_PassC_FixupRecursiveReferencesdefnsBsTcTyconBindings_ExtractImplicitFieldAndMethodBindingsdefnsCsTcTyconBindingsIsPassAIncrClassCtorIsPassAInheritIsPassAIncrClassBindingsIsPassAMemberPassAIncrClassCtorJustAfterSuperInitIsPassAIncrClassCtorJustAfterSuperInitPassAIncrClassCtorJustAfterLastLetIsPassAIncrClassCtorJustAfterLastLet_unique_PassAIncrClassCtorJustAfterSuperInit_unique_PassAIncrClassCtorJustAfterLastLetNewPassAIncrClassCtorget_IsPassAIncrClassCtorNewPassAInheritget_IsPassAInheritNewPassAIncrClassBindingsget_IsPassAIncrClassBindingsNewPassAMemberget_IsPassAMemberget_PassAIncrClassCtorJustAfterSuperInitget_IsPassAIncrClassCtorJustAfterSuperInitget_PassAIncrClassCtorJustAfterLastLetget_IsPassAIncrClassCtorJustAfterLastLetNewTyconBindingsPassAGroupIsPassBIncrClassCtorIsPassBInheritIsPassBIncrClassBindingsIsPassBMemberPassBIncrClassCtorJustAfterSuperInitIsPassBIncrClassCtorJustAfterSuperInitPassBIncrClassCtorJustAfterLastLetIsPassBIncrClassCtorJustAfterLastLet_unique_PassBIncrClassCtorJustAfterSuperInit_unique_PassBIncrClassCtorJustAfterLastLetNewPassBIncrClassCtorget_IsPassBIncrClassCtorNewPassBInheritget_IsPassBInheritNewPassBIncrClassBindingsget_IsPassBIncrClassBindingsNewPassBMemberget_IsPassBMemberget_PassBIncrClassCtorJustAfterSuperInitget_IsPassBIncrClassCtorJustAfterSuperInitget_PassBIncrClassCtorJustAfterLastLetget_IsPassBIncrClassCtorJustAfterLastLetNewTyconBindingsPassBGroupIsPassCIncrClassCtorIsPassCInheritIsPassCIncrClassBindingsIsPassCMemberPassCIncrClassCtorJustAfterSuperInitIsPassCIncrClassCtorJustAfterSuperInitPassCIncrClassCtorJustAfterLastLetIsPassCIncrClassCtorJustAfterLastLet_unique_PassCIncrClassCtorJustAfterSuperInit_unique_PassCIncrClassCtorJustAfterLastLetNewPassCIncrClassCtorget_IsPassCIncrClassCtorNewPassCInheritget_IsPassCInheritNewPassCIncrClassBindingsget_IsPassCIncrClassBindingsNewPassCMemberget_IsPassCMemberget_PassCIncrClassCtorJustAfterSuperInitget_IsPassCIncrClassCtorJustAfterSuperInitget_PassCIncrClassCtorJustAfterLastLetget_IsPassCIncrClassCtorJustAfterLastLetNewTyconBindingsPassCGroupcopyOfTyconTyparsinnerState_0innerState_1innerState_2innerState_3innerState_4innerState_5afterRevbeforeRevouterStateinnerStatedefnAdefnsAgeneralizedBindingsMapdefnBdefnsBlocalDecslocalDecsafeStaticInitInfolocalRepsdefnAsdefnBsincrClassCtorLhsgenSetotherTyparTcImplictCtorLhsPassAMakeIncrClassFieldformalTyparInstreportIfUnused@11062repr$cont@11094TransBind$cont@11389freeChoiceTyparsisPriorToSuperInitTransBind@11376repsTransTrueDec@11442staticForcedFieldVarsinstanceForcedFieldVarsisCtorArgdecMakeCtorForIncrClassConstructionPassC_tpenvinheritsExprinheritsIsVisibledecsmemberBindsIsIncrClassBindingGroupIsIncrClassDoNewIncrClassBindingGroupget_IsIncrClassBindingGroupNewIncrClassDoget_IsIncrClassDoTyconRefInstanceCtorDeclaredTyparsStaticCtorValInfoInstanceCtorValInstanceCtorValSchemeInstanceCtorArgsInstanceCtorSafeThisValOptInstanceCtorSafeInitInfoInstanceCtorBaseValOptInstanceCtorThisValNameGeneratorTyconRef@InstanceCtorDeclaredTypars@StaticCtorValInfo@InstanceCtorVal@InstanceCtorValScheme@InstanceCtorArgs@InstanceCtorSafeThisValOpt@InstanceCtorSafeInitInfo@InstanceCtorBaseValOpt@InstanceCtorThisVal@NameGenerator@get_TyconRefget_InstanceCtorDeclaredTyparsget_StaticCtorValInfoget_InstanceCtorValget_InstanceCtorValSchemeget_InstanceCtorArgsget_InstanceCtorSafeThisValOptget_InstanceCtorSafeInitInfoget_InstanceCtorBaseValOptget_InstanceCtorThisValget_NameGeneratortyconRefinstanceCtorDeclaredTyparsstaticCtorValInfoinstanceCtorValinstanceCtorValSchemeinstanceCtorArgsinstanceCtorSafeThisValOptinstanceCtorSafeInitInfoinstanceCtorBaseValOptinstanceCtorThisValnameGeneratorGetNormalizedInstanceCtorDeclaredTyparsIsInVarIsInFieldIsInMethodNewInVarget_IsInVarNewInFieldget_IsInFieldNewInMethodget_IsInMethodTakenFieldNamesRepInfoTcGlobalsValReprsValsWithRepresentationTakenFieldNames@RepInfoTcGlobals@ValReprs@ValsWithRepresentation@get_TakenFieldNamesget_RepInfoTcGlobalsget_ValReprsget_ValsWithRepresentationrepInfoTcGlobalsvalReprsvalsWithRepresentationLookupReprIsMethodReprChooseRepresentationChooseAndAddRepresentationValNowWithRepresentationIsValWithRepresentationMakeValueLookupMakeValueAssignMakeValueGetAddressPublishIncrClassFieldsFixupIncrClassExprPassClocalRepctorDeclaredTyparsrevTypeInstrwIsPassCBindingsPassCCtorJustAfterSuperInitIsPassCCtorJustAfterSuperInitPassCCtorJustAfterLastLetIsPassCCtorJustAfterLastLet_unique_PassCCtorJustAfterSuperInit_unique_PassCCtorJustAfterLastLetNewPassCBindingsget_IsPassCBindingsget_PassCCtorJustAfterSuperInitget_IsPassCCtorJustAfterSuperInitget_PassCCtorJustAfterLastLetget_IsPassCCtorJustAfterLastLetaccFreeInBindingassignExpradjustSafeInitFieldExprOptdoExprrepsetExprsetExpr0binderTransTrueDecCombineReprAccessMakeRecdFieldSpecattrsForPropertyattrsForFieldvolxmldocTcFieldDeclsynAttrsTcAnonFieldDeclTcNamedFieldDeclCheckUnionCaseNamerealUnionCaseNamemkName@10719nFieldsTcUnionCaseDeclTcUnionCaseDeclsTcEnumDeclTcEnumDeclsenumCasesConvertSynInfoConvertMemberFlagsConvertMemberFlagsOptConvertSynDataRenameBindingPatternMakeOne@2460bindingXmlDocbindingKindGenerateExtraBindingsPushMultiplePatternsToRhsMakeNormalizedStaticOrValBindingNormalizeStaticMemberBindingNormalizeInstanceMemberBindingnormPattern@2355NormalizeBindingPatternNormalizeBindingloop@1928-61ComputeUngeneralizableTyparsComputeUnabstractableTyconsComputeUnabstractableTraitSolutionsIsGeneralizableValueCanGeneralizeConstrainedTyparsForDeclTrimUngeneralizableTyparsgenConstrainedTyparFlagrelevantUniqueSubtypeConstraint@2060CondenseTyparsCanonicalizePartialInferenceProblemComputeAndGeneralizeGenericTyparsimmutmaxInferredTyparsresultFirstCheckDeclaredTyparsPermittedComputeCanInferExtraGeneralizableTyparsparentRefcxtyreturnTypeFreeTyparsallUntupledArgTysWithFreeVarslhsConstraintTyparsFieldDeclRestrictedUnionCaseDeclTyconDeclget_FieldDeclRestrictedget_UnionCaseDeclget_TyconDeclpermitInferTypars@980dontInferTypars@981noArgOrRetAttribs@984emptyUnscopedTyparEnv@1906ExprContainerInfo@3714EmptyTopAttrs@15038testFlagMemberBodyget_testFlagMemberBodytestHookMemberBodymembInfoBindTyparBindTyparsBindValCheckTypeDeepCheckTypesDeepf_0f_1f_2f_3CheckTypeConstraintDeepCheckTraitInfoDeep_arg3_0_arg3_1_arg3_2_arg3_3CheckForByrefLikeTypeCheckEscapes$cont@259allowProtectedsyntacticArgsCheckEscapesAccessInternalsVisibleToAsInternalthisCompPathinternalsVisibleToPathsCheckTypeForAccessobjNamevalAccCheckTypepermitByrefsmkKnownArityargAritiesOfValargAritiesOfFunExprCheckNoReraisefreesOptis_spliceCheckMultipleInterfaceInstantiationsinterfacesCheckValCheckExprInContextCheckMethodsCheckMethodCheckInterfaceImplsCheckInterfaceImpllimitedCheck@618CheckExprOpf@1-43CheckLambdasinlinedalwaysCheckNoReraiseargArity@801aritiesCheckExprsInContextCheckExprsCheckExprDirectArgsCheckDecisionTreeTargetsCheckDecisionTreeTargetCheckDecisionTreeCheckDecisionTreeSwitchCheckDecisionTreeTestdiscrimCheckAttribCheckAttribExprCheckAttribArgExprCheckAttribsCheckValInfoCheckArgInfoCheckValSpecAdjustAccessisHiddenCheckBinding$cont@997-1CheckBinding$cont@973CheckBindingCheckBindingscheck$cont@1108check@1090-5hasDefaultAugmentationskipValCheckCheckTopBinding$cont@1082CheckTopBindingCheckRecdFieldisUnionMethInfosEquivWrtUniqueness@1203namesOfMethodsThatMayDifferOnlyInReturnTypeeraseFlaggetHash@1214getOtherMethods@1227hashOfImmediateMethsIsAbstractDefaultPair2@1245checkForDup@1247checkForDup@1279-2checkForDup@1326-4checkForDup@1341-6CheckEntityDefn$cont@1316-1allVirtualMethsInParentimmediateMethsCheckEntityDefn$cont@1193visitType@1365-2CheckEntityDefnCheckModuleExprCheckNothingAfterEntryPointCheckDefnInModuleCheckModuleSpecCheckTopImplboundTyparslimitedquotereflectboundTypars@limited@quote@reflect@get_boundTyparsget_limitedget_quoteget_reflectboundValspotentialUnboundUsesOfValsusesQuotationsentryPointGivenboundVals@potentialUnboundUsesOfVals@internalsVisibleToPaths@denv@reportErrors@isLastCompiland@usesQuotations@entryPointGiven@get_boundValsget_potentialUnboundUsesOfValsget_internalsVisibleToPathsget_denvget_reportErrorsget_isLastCompilandget_usesQuotationsget_entryPointGivenset_potentialUnboundUsesOfValsset_usesQuotationsset_entryPointGivencxinternalsVisibleToPathIsKnownArityTupleDirectArgIsDirectArgGeneralContextIsGeneralContext_unique_DirectArg_unique_GeneralContextNewKnownArityTupleget_IsKnownArityTupleget_DirectArgget_IsDirectArgget_GeneralContextget_IsGeneralContexttyp1typ2vslexpReferenceEqualspinfo2testFlagMemberBody@31verboseCReflectmscorlibNamemkVoidTyget_verboseCReflectget_mscorlibNameget_mkVoidTymk_cenvisReflectedDefinitionBindFormalTyparsBindIsInstValBindSubstValloop@117-59|ModuleValueOrMemberUse|_|isSpliceExists2ConvExprConvLdfldenclTypeArgsConvRFieldGetConvLetBindConvLValueArgsConvLValueExprConvObjectModelCallisPropGetisPropSetisNewObjparentTyconRmethArgTypesRmethRetTypeRnumGenericArgscallArgsConvModuleValueAppConvExprsConvValRefholeOkConvUnionCaseRefConvRecdFieldRefConvValConvTyparRefFilterMeasureTyargsConvTypeConvTypestypsConvConstFoldBack2ConvDecisionTreetypRConvILTypeRefConvILTypeTryElimErasableTyconRefConvTyconRefConvReturnTyperetTyConvExprPublicisReflectedDefintionConvMethodBasetypeSplicesexprSplicestypeSplices@exprSplices@isReflectedDefinition@get_typeSplicesget_exprSplicesget_isReflectedDefinitionnvstyvsisinstValssubstValsvs@nvs@tyvs@isinstVals@substVals@get_vsget_nvsget_tyvsget_isinstValsget_substValsfRcurriedArgInfovRverboseCReflect@36mkVoidTy@39accTyaccTypeInstaccExpraccMethodsaccMethod_baseValOptaccIntfImplsaccIntfImplaccOpaccLambdasaccExprsaccFlatExprsaccTargetsaccTargetaccDTreeaccSwitchaccDiscrimaccAttribaccAttribsaccValReprInfoaccArgReprInfoaccValaccBindaccBindsaccTyconRecdField_tyconaccTyconaccTyconsaccModuleOrNamespaceExpraccModuleOrNamespaceDefsaccModuleOrNamespaceDefaccModuleOrNamespaceBindsaccModuleOrNamespaceBindUnsolvedTyparsOfModuleDefNix_unique_Nixget_Nixunsolved@get_unsolvedset_unsolvedUnionCaseRefsInTyconUnionCaseRefsInModuleOrNamespaceTryFindTypeWithUnionCaseTryFindTypeWithRecdFieldActivePatternElemsOfValReftryMkValRefInModRefActivePatternElemsOfValf@483-38ActivePatternElemsOfModuleOrNamespaceMakeMethGroupMakeCtorGroupDisplayNameOfItemAddAndMarkAsCollapsibleAddValRefsToItemsbulkAddModeeUnqualifiedItemsvrefsAddValRefToExtensionMembersprieExtensionMembersAddFakeNamedValRefToNameEnvAddFakeNameToNameEnvAddValRefsToNameEnvWithPriorityAddValRefToNameEnvAddActivePatternResultTagsToNameEnvGeneralizeUnionCaseReff@1-39AddTyconsByDemangledNameAndArityAddTyconByAccessNamesCSharpExtensionMemberInfosForTyconRefAddUnionCases1@423ucrefsf@1-40AddUnionCases2@428f@80-41LinearTryModifyThenLaterFlattenAddPartsOfTyconRefToNameEnvAddTyconRefsToNameEnvAddExceptionDeclsToNameEnvadd@534-8AddModuleAbbrevToNameEnvnestedModuleRefsaddModrefs@550modrefsMapAddModuleOrNamespaceRefsToNameEnvAddModuleOrNamespaceContentsToNameEnvAddModulesAndNamespacesContentsToNameEnvAddModrefToNameEnvAddDeclaredTyparsToNameEnvFreshenUnionCaseRefFreshenUnqualifiedItemOneResultAddResultsCollectResultsMapResultsAtMostOneResultLookupTypeNameInEntityHaveAritystaticResInfoLookupTypeNameInEnvHaveArityfqnumTyArgsLookupTypeNameNoAritybyDemangledNameAndAritybyAccessNamesLookupTypeNameInEnvNoArityLookupTypeNameInEnvMaybeHaveAritytypeNameResInfoCheckForDirectReferenceToGeneratedTypegenOkAddEntityForProvidedTypeResolveProvidedTypeNameInEntityLookupTypeNameInEntityMaybeHaveArityMakeNestedType@906tcrefNestedGetNestedTypesOfTypeoptFiltercheckForGeneratedWithNewTypecheckResultsSinknewSinksinkTemporarilySuspendReportingTypecheckResultsToSinkCallEnvSinkCallNameResolutionSinkCallExprHasTypeSinkCheckAllTyparsInferrableDistinctByCheckForTypeLegitimacyAndMultipleGenericTypeAmbiguitieslook@1157-11ResolveLongIndentAsModuleOrNamespacefullyQualifiedResolveLongIndentAsModuleOrNamespaceThenResolveObjectConstructorPrim$cont@1197edenvresInfoResolveObjectConstructorPrimResolveObjectConstructorIntrinsicPropInfosOfTypeInScopefindFlagExtensionPropInfosOfTypeInScope_findFlagAllPropInfosOfTypeInScopeIntrinsicMethInfosOfTypeallowMultiIntfInstImmediateExtensionMethInfosOfTypeInScope_adExtensionMethInfosOfTypeInScopeAllMethInfosOfTypeInScopeTryFindUnionCaseOfTypeCoreDisplayNameDecodeFSharpEvent$cont@1337DecodeFSharpEventcontentsSearchAccessible$cont@1401-2lookupKindcontentsSearchAccessible$cont@1375-1contentsSearchAccessible$cont@1375ResolveLongIdentInTypePrimResolveLongIdentInTypesResolveLongIdentInTypeResolveLongIdentInTyconRefResolveLongIdentInTyconRefs|AccessibleEntityRef|_|ResolveExprLongIdentInModuleOrNamespaceChooseTyconRefInExprValIsInEnv@1613moduleSearch@1626tyconSearch@1632-4ResolveExprLongIdentPrimResolveExprLongIdentResolvePatternLongIdentInModuleOrNamespacenumTyArgsOptmoduleSearch@1755-2tyconSearch@1758-5ResolvePatternLongIdentPrimnewDefResolvePatternLongIdentDerefAbbrevTyconRef_WORKAROUNDResolveTypeLongIdentInTyconRefPrimResolveTypeLongIdentInTyconRefResolveTypeLongIdentInModuleOrNamespace_mtymodulSearchFailed@1905ResolveTypeLongIdentPrimResolveTypeLongIdentoccurenceResolveFieldInModuleOrNamespacetyconSearch@2001-9modulSearch@2012-3ResolveFieldFreshenRecdFieldRefResolveExprDotLongIdentComputeItemRangewholemfilterMethodGroupsitemRangestaticOnlyneedsOverloadResolutionnamedItemcallSink@2110refinedItemResolveLongIdentAsExprAndComputeRange|NonOverridable|_|resolveExpr@2134sendToSink@2155thisIsActuallyATyAppNotAnExprunrefinedItemResolveExprDotLongIdentAndComputeRangeFakeInstantiationGeneratorgpsIsTyconUnseenObsoleteSpecallowObsoleteIsValUnseenIsUnionCaseUnseenItemIsUnseenItemOfTyconRefItemOfTyIsInterestingModuleNamePartialResolveLookupInModuleOrNamespaceAsModuleOrNamespaceThenPartialResolveLongIndentAsModuleOrNamespaceThenResolveRecordOrClassFieldsOfTypestaticspartitionl@2367ResolveCompletionsInTypeisApplicableMethFullTypeOfPinfo@2407ResolvePartialLongIdentInTypeInfosForTyconConstructorsf@87-42EntityRefContainsSomethingAccessibletryCollapseToDictAndNothingElseResolvePartialLongIdentInModuleOrNamespaceResolvePartialLongIdentPrimResolvePartialLongIdentResolvePartialLongIdentInModuleOrNamespaceForRecordFieldsResolvePartialLongIdentToClassOrRecdFieldsResolvePartialLongIdentToClassOrRecdFieldsImplInstantiationGeneratorinstantiationGeneratorg@48amap@49get_InstantiationGeneratorget_InfoReaderIsValueIsUnionCaseIsActivePatternResultIsActivePatternCaseIsExnCaseIsRecdFieldIsNewDefIsILFieldIsEventIsPropertyIsMethodGroupIsCtorGroupIsFakeInterfaceCtorIsDelegateCtorIsTypesIsCustomOperationIsCustomBuilderIsTypeVarIsModuleOrNamespacesIsImplicitOpIsArgNameIsSetterArgIsUnqualifiedTypeNewValueget_IsValueNewUnionCaseget_IsUnionCaseNewActivePatternResultget_IsActivePatternResultNewActivePatternCaseget_IsActivePatternCaseNewExnCaseget_IsExnCaseNewRecdFieldget_IsRecdFieldNewNewDefget_IsNewDefNewILFieldget_IsILFieldNewEventget_IsEventNewPropertyget_IsPropertyNewMethodGroupget_IsMethodGroupNewCtorGroupget_IsCtorGroupNewFakeInterfaceCtorget_IsFakeInterfaceCtorNewDelegateCtorget_IsDelegateCtorNewTypesget_IsTypesNewCustomOperationget_IsCustomOperationNewCustomBuilderget_IsCustomBuilderNewTypeVarget_IsTypeVarNewModuleOrNamespacesget_IsModuleOrNamespacesNewImplicitOpget_IsImplicitOpNewArgNameget_IsArgNameNewSetterArgget_IsSetterArgNewUnqualifiedTypeget_IsUnqualifiedTypeIsFSExtMemIsILExtMemPriorityNewFSExtMemget_IsFSExtMemNewILExtMemget_IsILExtMemget_PriorityFullyQualifiedIsFullyQualifiedOpenQualifiedIsOpenQualified_unique_FullyQualified_unique_OpenQualifiedget_FullyQualifiedget_IsFullyQualifiedget_OpenQualifiedget_IsOpenQualifiedeDisplayEnvePatItemseModulesAndNamespaceseFullyQualifiedModulesAndNamespaceseFieldLabelseTyconsByAccessNameseFullyQualifiedTyconsByAccessNameseTyconsByDemangledNameAndArityeFullyQualifiedTyconsByDemangledNameAndArityeTyparseDisplayEnv@eUnqualifiedItems@ePatItems@eModulesAndNamespaces@eFullyQualifiedModulesAndNamespaces@eFieldLabels@eTyconsByAccessNames@eFullyQualifiedTyconsByAccessNames@eTyconsByDemangledNameAndArity@eFullyQualifiedTyconsByDemangledNameAndArity@eExtensionMembers@eTypars@get_eDisplayEnvget_eUnqualifiedItemsget_ePatItemsget_eModulesAndNamespacesget_eFullyQualifiedModulesAndNamespacesget_eFieldLabelsget_eTyconsByAccessNamesget_eFullyQualifiedTyconsByAccessNamesget_eTyconsByDemangledNameAndArityget_eFullyQualifiedTyconsByDemangledNameAndArityget_eExtensionMembersget_eTyparsFindUnqualifiedItemTyconsByDemangledNameAndArityTyconsByAccessNamesModulesAndNamespacesnwCheckForDuplicateTyparsIsCheckForDuplicateTyparsNoCheckForDuplicateTyparsIsNoCheckForDuplicateTypars_unique_CheckForDuplicateTypars_unique_NoCheckForDuplicateTyparsget_CheckForDuplicateTyparsget_IsCheckForDuplicateTyparsget_NoCheckForDuplicateTyparsget_IsNoCheckForDuplicateTyparsResolveTypeNamesToCtorsIsResolveTypeNamesToCtorsResolveTypeNamesToTypeRefsIsResolveTypeNamesToTypeRefs_unique_ResolveTypeNamesToCtors_unique_ResolveTypeNamesToTypeRefsget_ResolveTypeNamesToCtorsget_IsResolveTypeNamesToCtorsget_ResolveTypeNamesToTypeRefsget_IsResolveTypeNamesToTypeRefsIndefiniteIsIndefiniteIsDefiniteDefiniteEmptyHasNoStaticArgsInfoNumStaticArgs_unique_Indefiniteget_Indefiniteget_IsIndefiniteNewDefiniteget_IsDefiniteget_DefiniteEmptyFromTyArgsget_HasNoStaticArgsInfoget_NumStaticArgsMangledNameForTypeStaticArgsInfoResolutionFlagDropStaticArgsInfoNewTypeNameResolutionInfoResolveToTypeRefsstatResInfoget_StaticArgsInfoget_ResolutionFlagget_DropStaticArgsInfost0stynestedTypenestedTypeNamenestedTcrefUseUseInTypeUseInAttributeNotifyEnvWithScopeNotifyExprHasTypeNotifyNameResolutionCurrentSinkNoSinkCurrentSink@get_CurrentSinkset_CurrentSinkcurrentSinkget_NoSinkWithSinkNewResolutionInfotyparCheckerAddEntityAddWarning_typarCheckerresInfo0propCollectorememIsPatternIsTypeIsCtor_unique_RecdField_unique_Pattern_unique_Expr_unique_Type_unique_Ctorget_RecdFieldget_Patternget_IsPatternget_IsTypeget_Ctorget_IsCtorpiitem_1item_2self@WarnOnUpperCaseIsWarnOnUpperCaseAllIdsOKIsAllIdsOK_unique_WarnOnUpperCase_unique_AllIdsOKget_WarnOnUpperCaseget_IsWarnOnUpperCaseget_AllIdsOKget_IsAllIdsOKlistschooserfref1NewIfOverloadResolutionFailssuppressedMethNamesaddersAndRemoversfrefilTyconNamesisItemValtcref0iltyconNamestyarlowestDefaultPrioritycopyAndFixupFormatTyparget_lowestDefaultPrioritymkFlexibleFormatTyparmkFlexibleIntFormatTyparmkFlexibleFloatFormatTyparisDigitCompareTo$cont@49-47CompareTo$cont@49-48flags@85lendigitsPrecision@107precision@113optionalDotAndPrecision@120digitsWidthAndPrecision@126widthAndPrecision@132digitsPosition@139position@146checkNoPrecision@165checkNoZeroFlag@166checkNoNumericPrefix@167IsSurrogatePairparseLoop@64btyctyParseFormatStringIsSimpleFuncAndValIsFuncAndVal_unique_FuncAndValNewSimpleget_IsSimpleget_FuncAndValget_IsFuncAndValleftJustifynumPrefixIfPosaddZerosprecisionleftJustify@numPrefixIfPos@addZeros@precision@get_leftJustifyget_numPrefixIfPosget_addZerosget_precisionset_leftJustifyset_numPrefixIfPosset_addZerosset_precisioncompgen_idBakedInTraitConstraintNameslocalAbortDget_compgen_idNewCompGenTyparstaticReqdynamicReqNewAnonTyparvarNewNamedInferenceMeasureVarNewInferenceMeasureParNewErrorTyparNewErrorMeasureVarNewInferenceTypeNewErrorTypeNewErrorMeasureNewInferenceTypesFreshenAndFixupTyparsfctpsFreshenTypeInstFreshenTyparsFreshenMethInfoGetPossibleOverloadsMakeConstraintSolverEnvoccursCheckunisNativeIntegerTyisSignedIntegerTyisUnsignedIntegerTyisIntegerOrIntegerEnumTyisIntegerTyisFpTyIsNonDecimalNumericOrIntegralEnumTypeIsNumericOrIntegralEnumTypeIsNonDecimalNumericTypeIsNumericTypeGetMeasureOfTypeget_BakedInTraitConstraintNamesCollectThenUndoFilterEachThenUndoget_localAbortDPreferUnifyTyparfindmin@363FindMinimumMeasureExponentSubstMeasureTransactStaticReqtracetprreqSolveTypStaticReqTyparSolveTypStaticReqTransactDynamicReqSolveTypDynamicReqSubstMeasureWarnIfRigidDivRoundDownUnifyMeasureWithOnesimp@512SimplifyMeasureSimplifyMeasuresInTypeSimplifyMeasuresInTypesparam_0param_1SimplifyMeasuresInConstraintSimplifyMeasuresInConstraintsSimplifyMeasuresInTypeSchemegeneralizableCheckWarnIfRigidSolveTyparEqualsTypndeepsolveTypMeetsTyparConstraintsdreqsreqSolveTypEqualsTyp$cont@720aenvsty1sty2SolveTypEqualsTypSolveTypEqualsTypKeepAbbrevsloop@767-57origl1origl2SolveTypEqualsTypEqnsSolveFunTypEqnd1d2SolveTypSubsumesTypSolveTypSubsumesTypKeepAbbrevsSolveTyparSubtypeOfTypeDepthCheckSolveDimensionlessNumericTypeSolveMemberConstraint$cont@1181-1SolveMemberConstraint$cont@1200-2permitWeakResolutionmemFlagsrecdPropSearchSolveMemberConstraint$cont@1148checkRuleAppliesInPreferenceToMethods@949argty1argty2checkRuleAppliesInPreferenceToMethods@949-1SolveMemberConstraintRecordMemberConstraintSolutionMemberConstraintSolutionOfMethInfo$cont@1289MemberConstraintSolutionOfMethInfoMemberConstraintSolutionOfRecdFieldInfoisSetTransactMemberConstraintSolutionslnGetRelevantMethodsForTraitGetSupportOfMemberConstraintGetFreeTyparsOfMemberConstraintSolveRelevantMemberConstraintsSolveRelevantMemberConstraintsForTyparCanonicalizeRelevantMemberConstraintsAddMemberConstraintsupportfreescollect@1464-3consistent@1437tpc1tpc2implies@1507enforceMutualConsistency@1543allCxscxseliminateRedundant@1576AddConstraintnewConstraintSolveTypSupportsNullSolveTypeSupportsComparisonSolveTypSupportsEqualitySolveTypIsEnumunderlyingSolveTypIsDelegateatySolveTypIsNonNullableValueTypeSolveTypIsUnmanagedSolveTypChoiceSolveTypIsReferenceTypeSolveTypRequiresDefaultConstructorCanMemberSigsMatchUpToCheckpermitOptArgsalwaysCheckReturnunifyTypessubsumeTypessubsumeArgreqdRetTyOptadjustDelegateTy@1935calledTyAdjustCalledArgType$cont@1926optArgInfoisOptCallerArgAdjustCalledArgTypeisConstraintSolveTypSubsumesTypWithReportSolveTypEqualsTypWithReportArgsMustSubsumeOrConvertArgsMustSubsumeOrConvertInsideUndocalledArgArgsEquivInsideUndo_traceget_AllUnnamedCalledArgsReportNoCandidatesError$cont@2067-1nReqdnActualget_TotalNumUnnamedCalledArgsget_TotalNumAssignedNamedArgsget_TotalNumUnnamedCallerArgsReportNoCandidatesError$cont@2058IntersectManyReportNoCandidatesError$cont@2026-2nUnnamedCallerArgsnNamedCallerArgsmatchValue_2matchValue_3get_HasCorrectArityReportNoCandidatesErrorfailOverloading@2190isOpConversioncompareCond@2242compareTypes@2246c$cont@2303compareTypescompareArgcandidatebetter$cont@2328-1better$cont@2280better@2268candidateWarnCountotherWarnCountResolveOverloading$cont@2242applicableMethsResolveOverloadingUnifyUniqueOverloadingreqdRetTyEliminateConstraintsForGeneralizedTyparsAddCxTypeEqualsTypeUndoIfFailedAddCxTypeEqualsTypeUndoIfFailedAddCxTypeMustSubsumeTypeUndoIfFailedAddCxTypeMustSubsumeTypeAddCxMethodConstraintAddCxTypeMustSupportNullAddCxTypeMustSupportComparisonAddCxTypeMustSupportEqualityAddCxTypeMustSupportDefaultCtorAddCxTypeIsReferenceTypeAddCxTypeIsValueTypeAddCxTypeIsUnmanagedAddCxTypeIsEnumAddCxTypeIsDelegateFSharpChoice`4NewChoice1Of4NewChoice2Of4NewChoice4Of4NewChoice3Of4sln$cont@2552Choice1Of4CodegenWitnessThatTypSupportsTraitConstraint$cont@2570Choice2Of4CodegenWitnessThatTypSupportsTraitConstraint$cont@2601-1CodegenWitnessThatTypSupportsTraitConstraintChooseTyparSolutionAndSolveCheckDeclaredTyparstypars1typars2IsApplicableMethApproxavailObjTyExtraCxsInfoReader@ExtraCxs@get_ExtraCxsset_ExtraCxsextraCxsSolverStateEquivEnvSolverState@EquivEnv@DisplayEnv@get_SolverStateget_EquivEnvsolverStateequivEnvdisplayEnvTTraitUnsolvedIsTTraitUnsolvedTTraitBuiltInIsTTraitBuiltInIsTTraitSolvedIsTTraitSolvedRecdProp_unique_TTraitUnsolved_unique_TTraitBuiltInget_TTraitUnsolvedget_IsTTraitUnsolvedget_TTraitBuiltInget_IsTTraitBuiltInNewTTraitSolvedget_IsTTraitSolvedNewTTraitSolvedRecdPropget_IsTTraitSolvedRecdPropNewTraceUndoNoTraceIsNoTraceIsWithTraceHasTrace_unique_NoTraceget_NoTraceget_IsNoTraceNewWithTraceget_IsWithTraceget_HasTraceorigtpnmOptnewvtpdataisGetPropisSetPropms1ms2cxsttpnrty1rty2ty1Parentty2Parentparents2bty2bty1ty20cx2existingConstraintscallerArgget_ParamArrayCallerArgsassignedNamedPropsunnamedCalledOutArgsmethodRetTyunnamedCalledOptArgscallerObjArgTysisParamArrayArgHasCorrectObjArgscmeth2naIsCandidatenewTracePhysicalEqualityIntrinsicChoice3Of4_resreqdObjTy_errcompgen_id@72BakedInTraitConstraintNames@268localAbortD@314successrazeop_BarBarQmarkGreaterop_BarQmarkGreaterForceRaiseotherwisedebugnotNullTextotherSubtypeTextget_debugBindSubExprOfInputgtpsGetSubExprOfInputpathEqp2get_notNullTextget_otherSubtypeTextgo@188-8mkOneKnown@212RangeSByteRangeInt16RangeInt64RangeByteRangeUInt16RangeUInt32RangeUInt64tm$cont@222RefuteDiscrimSetdiscrimsMaxStrings@299s1op_LessThanCombineRefutationsShowCounterExamplerefutedisMemOfActivesactiveslookupActiveremoveActivegetDiscrimOfPatterntpinstconstOfDiscrimdiscrimsEqisDiscrimSubsumedBychooseSimultaneousEdgeSetprevOptcanCompactConstantClassdiscrimsHaveSameSimultaneousClasschoose@464-4ChooseInvestigationPointLeftToRightfrontierscompactify@574currBuildSwitchresPreBindOptmkFrontiersinvestigationsisPatternPartialerasePartialPatternsinpperasePartialsinpsgetIncompleteMatchClause$cont@706warnOnIncompletetopvincompleteMatchClauseOncegetIncompleteMatchClause@700GetClause@760clausesAnclausesInvestigateFrontiers@781topgtvsCompileSuccessPointAndGuard@833valMapChooseSimultaneousEdges@868ChoosePreBinder$cont@887simulSetOfEdgeDiscrimssubexprChoosePreBinder@886CompileSimultaneousSet@943isRefuted@1012simulSetOfDiscrimsCompileFallThroughTree@1008fallthroughPathFrontierssimulSetOfCasesmkSubFrontiers@1046accessf'active'argpatspathBuilderaccessf'@1064resTysaparityaccessf'@1080-2GenerateNewFrontiersAfterSucccessfulInvestigation$cont@1060i'GenerateNewFrontiersAfterSucccessfulInvestigation@1039resPostBindOptmkSubActive@1175-1p'accessf'@1192-6accessfBindProjectionPattern@1173BindProjectionPatterns@1215CompilePatternBasicclausesLisPartialOrWhenClauseatMostOnePartialAtATime@1261doGroupWithAtMostOnePartial@1270groupCompilePatternThrowIncompleteMatchExceptionIsThrowIncompleteMatchExceptionIgnoreWithWarningIsIgnoreWithWarningThrowIsThrowRethrowIsRethrowFailFilterIsFailFilter_unique_ThrowIncompleteMatchException_unique_IgnoreWithWarning_unique_Throw_unique_Rethrow_unique_FailFilterget_ThrowIncompleteMatchExceptionget_IsThrowIncompleteMatchExceptionget_IgnoreWithWarningget_IsIgnoreWithWarningget_Throwget_IsThrowget_Rethrowget_IsRethrowget_FailFilterget_IsFailFilterIsTPat_constIsTPat_wildIsTPat_asIsTPat_disjsIsTPat_conjsIsTPat_queryIsTPat_unioncaseIsTPat_exnconstrIsTPat_tupleIsTPat_arrayIsTPat_recdIsTPat_rangeIsTPat_nullIsTPat_isinstNewTPat_constget_IsTPat_constNewTPat_wildget_IsTPat_wildNewTPat_asget_IsTPat_asNewTPat_disjsget_IsTPat_disjsNewTPat_conjsget_IsTPat_conjsNewTPat_queryget_IsTPat_queryNewTPat_unioncaseget_IsTPat_unioncaseNewTPat_exnconstrget_IsTPat_exnconstrNewTPat_tupleget_IsTPat_tupleNewTPat_arrayget_IsTPat_arrayNewTPat_recdget_IsTPat_recdNewTPat_rangeget_IsTPat_rangeNewTPat_nullget_IsTPat_nullNewTPat_isinstget_IsTPat_isinstNewPBindGuardExprTargetBoundValsNewTClauseget_GuardExprget_Targetget_BoundValsNewSubExprtyschemesomeSolvedIsPathQueryIsPathConjIsPathTupleIsPathRecdIsPathUnionConstrIsPathArrayIsPathExnConstrIsPathEmptyNewPathQueryget_IsPathQueryNewPathConjget_IsPathConjNewPathTupleget_IsPathTupleNewPathRecdget_IsPathRecdNewPathUnionConstrget_IsPathUnionConstrNewPathArrayget_IsPathArrayNewPathExnConstrget_IsPathExnConstrNewPathEmptyget_IsPathEmptyIsRefutedInvestigationRefutedWhenClauseIsRefutedWhenClause_unique_RefutedWhenClauseNewRefutedInvestigationget_IsRefutedInvestigationget_RefutedWhenClauseget_IsRefutedWhenClauseconstsConvertToDecimalmkUnknownNewActiveNewFrontierNewInvestigationedgeGroupNewEdgeDiscrimunit_tpinsttaken_e'_jucref1tgtTy1subExprBindProjectionPattern_tpinstusedTypeDefinitelySubsumesTypeNoCoercionTypesFeasiblyEquivTypeFeasiblySubsumesTypecanCoercejoin@160-2maxSoFarChooseTyparSolutionAndRange$cont@166ChooseTyparSolutionAndRangeChooseTyparSolutionloop@216-45IterativelySubstituteTyparSolutionssolutionsChooseTyparSolutionsForFreeChoiceTyparsstripLambdaUpto@252startStripLambdaUpto@260tryDestTopLambdadestTopLambdaIteratedAdjustArityOfLambdaBodyIteratedAdjustArityOfLambdaMakeCalledArgsNewCalledMethMakeCalledMethfreshenMethInfouminstcallerArgsallowParamArgsallowOutAndOptArgsNamesOfCalledArgscalledArgsshowAccessDomainFinalTypeDefinitionChecksAtEndOfInferenceScope$cont@1788isImplementationFinalTypeDefinitionChecksAtEndOfInferenceScopeFindUniqueFeasibleSupertypeGetAbstractMethInfosForSynMethodDeclmemberNamebindmGetAbstractPropInfosForSynPropertyDecl_k_valSynDataIsBaseCallComputeConstrainedCallInfoTakeObjAddrForMethodCallTryImportProvidedMethodBaseAsLibraryIntrinsicmbaseBuildMethodCall$cont@1999-1allArgsprovidedMethenclTyisCtoruseCallvirtisProtectedBuildMethodCall$cont@1976directBuildMethodCallBuildNewDelegateExpr$cont@2051eventInfoOptdelArgTysBuildNewDelegateExprCoerceFromFSharpFuncToDelegateIsCanCoerceNoCoerceIsNoCoerce_unique_CanCoerce_unique_NoCoerceget_CanCoerceget_IsCanCoerceget_NoCoerceget_IsNoCoerceftvsCanImplementAnyInterfaceSlotIsCanImplementAnyInterfaceSlotCanImplementAnyClassHierarchySlotIsCanImplementAnyClassHierarchySlotCanImplementAnySlotIsCanImplementAnySlotCanImplementNoSlotsIsCanImplementNoSlots_unique_CanImplementAnyInterfaceSlot_unique_CanImplementAnyClassHierarchySlot_unique_CanImplementAnySlot_unique_CanImplementNoSlotsget_CanImplementAnyInterfaceSlotget_IsCanImplementAnyInterfaceSlotget_CanImplementAnyClassHierarchySlotget_IsCanImplementAnyClassHierarchySlotget_CanImplementAnySlotget_IsCanImplementAnySlotget_CanImplementNoSlotsget_IsCanImplementNoSlotsIsFakeEventPropertyLogicalNameBoundingTyconRefNewOverrideget_IsFakeEventPropertyget_LogicalNameget_BoundingTyconRefNewRequiredSlotNewSlotImplSetNewCalledArgget_CalledArgIsAssignedPropSetterIsAssignedIlFieldSetterIsAssignedRecdFieldSetterNewAssignedPropSetterget_IsAssignedPropSetterNewAssignedIlFieldSetterget_IsAssignedIlFieldSetterNewAssignedRecdFieldSetterget_IsAssignedRecdFieldSetterNewAssignedItemSetterUnnamedCalledArgsUnnamedCallerArgsParamArrayCalledArgOptParamArrayCallerArgsAssignedNamedArgsNumUnnamedCallerArgsNumAssignedNamedArgsNumUnnamedCalledArgsNewCalledMethArgSetget_UnnamedCalledArgsget_UnnamedCallerArgsget_AssignedNamedArgsget_NumUnnamedCallerArgsget_NumAssignedNamedArgsget_NumUnnamedCalledArgsCalledTyArgsCallerTyArgsCallerObjArgTysArgSetsNumArgSetsAssignedPropsAssociatedPropertyInfoUnassignedNamedArgsAttributeAssignedNamedArgsHasOptArgsHasOutArgsUsesParamArrayConversionNumAssignedPropsNumCalledTyArgsNumCallerTyArgsAssignsAllNamedArgsHasCorrectArityHasCorrectGenericArityAllUnnamedCalledArgsTotalNumUnnamedCalledArgsTotalNumUnnamedCallerArgsTotalNumAssignedNamedArgsget_Methodget_CalledTyArgsget_CallerTyArgsget_CallerObjArgTysget_ArgSetsget_NumArgSetsget_AssignedPropsget_AssociatedPropertyInfoget_UnassignedNamedArgsget_AttributeAssignedNamedArgsget_HasOptArgsget_HasOutArgsParamArrayElementTypeget_NumAssignedPropsCalledObjArgTysget_NumCalledTyArgsget_NumCallerTyArgsget_AssignsAllNamedArgsget_HasCorrectGenericArityIsAccessiblenamedCallerArgsfullCalledArgsreturnedObjTyunnamedCallerArgstopValSynAritiesfail@2096-1constantconvertConstExpr$cont@2098-1normTyconvertConstExpr$cont@2098convertConstExprf@1-36loop@2133-47eraseSystemTypeinputTypefail@2189-2eaexprToExprAndWitness$cont@2356-8varConvexprToExprAndWitness$cont@2340-7exprToExprAndWitness$cont@2307-6addVarremoveVartopexprToExprAndWitness$cont@2288-5exprToExprAndWitness$cont@2266-4exprToExprAndWitness$cont@2245-3exprToExprAndWitness$cont@2229-2exprToExprAndWitness$cont@2210-1exprToExprAndWitness$cont@2193exprToExprAndWitness@2188ctorCallToExpr@2377neaddVar@2385removeVar@2394methodCallToExpr@2398_origExprmcevarToExpr@2420exprToExpr@2429convertProvidedExpressionToExprAndWitnessthisArgparamVarsf@1-37TranslateInvokerExpressionForProvidedMethodCallBuildInvokerExpressionForProvidedMethodCallrankMakeArrayTypeMakeByRefTypeMakePointerTypegenericArgsgenericArgerasedArgTysMakeGenericTypeetreeerasedParamTymbPrintOverrideToBufferPrintMethInfoSigToBufferFormatOverrideFormatMethInfoSigGetInheritedMemberOverrideInfoparentTypeGetTypeMemberOverrideInforeqdTyoverrideByGetObjectExprOverrideInfoIsNameMatchdispatchSlotIsImplMatchIsTyparKindMatchIsPartialMatchreverseTyparRenamingcomposeTyparInstsinst1inst2IsExactMatchOverrideImplementsDispatchSlotavailPriorOverrideDispatchSlotIsAlreadyImplementedavailPriorOverridesKeyedfail@1120showMissingMethodsAndRaiseErrorsnoimpl@1138isReqdTyInterfaceCheckDispatchSlotsAreImplemented$cont@1142vargtysfvmtpsCheckDispatchSlotsAreImplementedisOverallTyAbstractdispatchSlotsavailPriorOverridesCheckOverridesAreAllUsedOnce$cont@1179isObjExprCheckOverridesAreAllUsedOnceisImpliedInterfaceType@1290reqdTyRangeimpliedTysisImpliedInterfaceTableGetSlotImplSetsallReqdTysmustOverrideSomething@1385CheckImplementationRelationAtEndOfInferenceScopememberToParentInsttcrefToLookForoverridesKeyedbaseTyOptbaseTyintfSetsoverlapoverlappingTyavailImpliedInterfacesimpliedTyisOptionalreqdSlotreqdTyInfosoverrideByInfovirtMemberallImplsattribsEq@351attribExprEqattribNamedArgEqattrib1attribsHaveSameTycon@358check@366-4keptImplAttribsRevimplAttribssigAttribsflatten@454err@549-1implModRefimplValsigValerr@590-3implUnionCasesigUnionCaseerr@598-4implFieldsigFieldreportNiceError@697names@730-2sigValHadNoMatchingImplementation@804_closeActualValvaluesPartiallyMatch@812CheckNamesOfModuleOrNamespaceContentssignModTypeCheckNamesOfModuleOrNamespacecheckingSigsigToImplRemapremapInfoCheckSignatureCheckTyparsimplTyparssignTyparscheckAttribs_aenvfixupcheckTyparssigTyparscheckTypeDefimplTyconsigTyconcheckValInfocheckValcheckExnInfoimplTypeReprsigTypeReprcheckUnionCasecheckFieldcheckMemberDatasConform_implAttrsimplMemberInfo_sigAttrssigMemberInfocheckRecordFields_amap_denvimplFieldssigFieldscheckRecordFieldsForExncheckVirtualSlotsimplAbstractSlotssigAbstractSlotscheckClassFieldscheckTypeReprcheckTypeAbbrevkind1kind2implTypeAbbrevsigTypeAbbrevcheckModuleOrNamespaceContentscheckModuleOrNamespacesigModRefimplValRefsignValRefimplTcrefsignTcrefattrib2implTyparCximplTyparsigTyparsigTyparCxfityaityntpssigArgInfosimplArgInfosigArgInfolist1list2sigRetInfoimplRetInfo_s_x_y_fxfxsavsunitArgunaryArgtupArgmkIComparableCompareToSlotSigmkGenericIComparableCompareToSlotSigmkIStructuralComparableCompareToSlotSigmkGenericIEquatableEqualsSlotSigmkIStructuralEquatableEqualsSlotSigmkIStructuralEquatableGetHashCodeSlotSigmkGetHashCodeSlotSigmkEqualsSlotSigmkThisTymkCompareObjTymkCompareTymkCompareWithComparerTymkEqualsObjTymkEqualsTymkEqualsWithComparerTymkHashTymkHashWithComparerTymkRelBinOpmkILLangPrimTymkILCallGetComparermkILCallGetEqualityComparermkShlaccemkShrmkAddmkAddToHashAccaccvmkCombineHashGeneratorsmkThisVarThatVarmkThatVarBindthatvmkThatAddrLocalmkBindThatAddrthataddrvthatemkCompareTestConjunctsmkEqualsTestConjunctsmkMinimalTymkBindNullComparisonthisemkBindThisNullEqualsmkBindThatNullEqualsmkBindNullHashmkRecdComparemkRecdCompareWithComparer_thisvcompemkRecdEqualitymkRecdEqualityWithComparerthatobjemkExnEqualityexnrefmkExnEqualityWithComparermkUnionComparemkUnionCompareWithComparermkUnionEqualitymkUnionEqualityWithComparermkRecdHashWithComparermkExnHashWithComparermkUnionHashWithComparerisNominalExncisTrueFSharpStructTyconcanBeAugmentedWithEqualscanBeAugmentedWithComparegetAugmentationAttribshasNominalInterface@754CheckAugmentationAttribs$cont@772hasExplicitIComparehasExplicitIGenericComparehasExplicitEqualshasExplicitGenericEqualsCheckAugmentationAttribsTyconIsCandidateForAugmentationWithCompare$cont@799TyconIsCandidateForAugmentationWithCompareTyconIsCandidateForAugmentationWithEqualsTyconIsCandidateForAugmentationWithHashslotImplMethodfinalnonVirtualMethodget_unitArgget_unaryArgget_tupArgmkValSpecmethnargDataMakeValsForCompareAugmentationMakeValsForCompareWithComparerAugmentationMakeValsForEqualsAugmentationMakeValsForEqualityWithComparerAugmentationmkCompare$cont@907comparefmkCompare@903MakeBindingsForCompareAugmentationmkCompare$cont@940-1mkCompare@936-1MakeBindingsForCompareWithComparerAugmentationmkStructuralEquatable$cont@968hashfequalsfmkStructuralEquatable@962MakeBindingsForEqualityWithComparerAugmentationmkEquals$cont@1014mkEquals@1009MakeBindingsForEqualsAugmentationTypeDefinitelyHasEqualitythataddrecrefthisucvethatucveucasec1refucveucase1unitArg@851unaryArg@852tupArg@853layoutMemberSigx_0x_1x_2x_3x_4layoutTyparConstraintoutputTyoutputTyparsoutputTyconReflayoutConstlayoutPrettifiedTypeAndConstraintsdataExprLoutputValOrMemberstringValOrMemberoutputQualifiedValOrMemberoutputQualifiedValSpecstringOfQualifiedValOrMemberformatMethInfoToBufferFreeStylestringOfMethInfostringOfParamDataparamDataoutputILTypeRefoutputExnDefstringOfTyparConstraintsoutputTyconstringOfTyparConstrainttpc_0tpc_1stringOfTyprettyStringOfTystringOfRecdFieldstringOfUnionCasestringOfExnDeflayoutInferredSigOfModuleExprshowHeaderlayoutValOrMemberlayoutPrettifiedTypestausminimalStringsOfTwoTypes$cont@1814tpcsminimalStringsOfTwoTypesminimalStringsOfTwoValuesminimalStringOfTypestrip@1734-1dataExprWrapLisAtomicdataExprsLisConcreteNamespace@1642imexprL@1653imdefL@1657imbindL@1670layoutExtensionMemberlayoutExtensionMemberslayoutUnionCaseArgTypeslayoutUnionCaseprefixLlayoutUnionCasesucaseslayoutRecdFieldaddAccessbreakTypeDefnEqnlayoutILFieldInfolayoutEventInfolayoutPropInfosortKey@1355layoutProvidedTycon$cont@1354lhsLlayoutProvidedTyconaddMembersAsWithEnd@1505simplifiedmemberLsreprLrhsL$cont@1545memberStaticLsmemberInstanceLsmemberImplementLsmemberCtorLsreprL$cont@1519layoutTycon$cont@1472layoutTycontypewordLlayoutExnDefnlayoutTyconDefnspropseventsimpliedNamesformatParamDataToBufferformatMethInfoToBufferFSharpStyleformatMethInfoToBufferCSharpStyleprettifyILMethInfof@357-35layoutMethInfoFSharpStyledatasmkNameL@1026niceMethodTyparslayoutMember$cont@1050statlayoutMember$cont@1064-1layoutMemberlayoutNonMemberValtprenaming|Public|Internal|Private|@548isInternalCompPathlayoutAccessibilityaccessibilityitemLlayoutTyconReflayoutMemberFlagslayoutAttribArglayoutAttribArgslayoutAttriblayoutAttribsrestLlayoutTyparAttribslayoutTyparReftyparlayoutTyparRefWithInfolayoutConstraintsWithInfolongConstraintPrefix@750layoutConstraintWithInfolayoutTraitWithInfosortVars@823sortCons@824layoutMeasureuntlayoutTypeAppWithInfoAndPrectcLprecloop@879-44soFarLlayoutTypeWithInfoAndPreclayoutTypesWithInfoAndPrecseptypllayoutTypeWithInfolayoutTypelayoutTopTypelayoutTyparDeclsnmLtypars_0typars_1layoutPrettifiedTypesAndConstraintslayoutMemberTypeAndConstraintsparentTyparTyslayoutMemberTypeCoremethTyparslayoutMemberTypelayoutPrettyTypeIsDigitcx1delimitReturnValueargLallTyparInstinfosnoShowfullySplitILTypeReflayoutILTypeRefNamelayoutILTypeRefadjustILMethodNameisStaticILEventlayoutILArrayShapelayoutILGenericParameterDefsparamsLpruneParmsclassNameilTyparSubstlayoutILTypelayoutILCallingSignatureconssignaturlayoutILParameterlayoutILParametersretTypelayoutILMethodDeflayoutILFieldDeflayoutILEventDeflayoutGetterType@260getterReflayoutSetterType@266setterReflayoutILPropertyDeftextOpt$cont@293layoutILFieldInitlayoutILEnumDefPartslitVallayoutILEnumDefisStaticILPropertyisPublicILMethodisPublicILEventtypeDefisPublicILPropertyisPublicILCtorisNotSpecialNameisPublicILFieldisPublicILTypeDefisShowEnumFieldget_noShowisShowBaserenderL@385-1prepostmemberBlockLs@413fieldDefsmethodDefspropertyDefseventDefslayoutILTypeDeflayoutILNestedClassDeffdedbracketIfLlytsquareAngleLangleLcommentLcommentlayoutsLlssuppressInheritanceAndInterfacesForTyInSimplifiedDisplaysapplyMaxMembersalldeclsadjustILNameshrinkOverloadslayoutFunctionresultFunctionnoShow@378ImportTypeimportInstisExnDeclTyGetSuperTypeOfTypemkSystemCollectionsGenericIListTyGetImmediateInterfacesOfTypeloop@142-38followInterfacesFoldHierarchyOfTypeAuxFoldPrimaryHierarchyOfTypeFoldEntireHierarchyOfTypeIterateEntireHierarchyOfTypeExistsInEntireHierarchyOfTypeSearchEntireHierarchyOfTypeAllSuperTypesOfTypeAllInterfacesOfTypeHaveSameHeadTypeHasHeadTypeExistsSameHeadTypeInHierarchytypeToSearchFromExistsHeadTypeInEntireHierarchyImportTypeFromMetadataImportReturnTypeFromMetaDataCopyTyparConstraintstprefInsttporigFixupNewTyparsformalEnclosingTyparsMemberRefIsVirtualMemberRefIsDefiniteFSharpOverrideMemberRefIsDispatchSlotValRef.IsFSharpEventPropertyParamNameAndTypeOfArgInfoParamNameAndTypesOfMemberInstParamNameAndTypeInstParamNameAndTypesparamTypesanalyze@432ilParamOptionalArgInfoOfILParameterilScopeilTypeInstget_IsEnumConstantObjToILFieldInit$cont@451ConstantObjToILFieldInitanalyze@483-1OptionalArgInfoOfProvidedParameterprovParamGetAndSanityCheckProviderMethodRepresentativeMethodInfoOfPropertyInfoAnalyzeTypeOfMemberValtyConformsToIDelegateEventnonStandardEventErrorFindDelegateTypeOfPropertyEventMethInfosUseIdenticalDefinitionsoptVrefEq@1702PropInfosUseIdenticalDefinitionsEventInfosUseIdenticalDefintionsGetMethInfoHashCodeGetPropInfoHashCodeGetEventInfoHashCodeInstMethInfoCombineMethInststtpsGetCompiledReturnTyOfProvidedMethodInfoReparentSlotSigToUseMethodTyparsovByMethValRefmkSlotParammkSlotSigctpsparamlCompiledSigOfMethMethInfosEquivByNameAndPartialSigignoreFinalPropInfosEquivByNameAndPartialSigMethInfosEquivByNameAndSigPropInfosEquivByNameAndSigBuildILMethInfoCallBuildObjCtorCallBuildFSharpMethodApp$cont@2686arityBuildFSharpMethodAppvexprtyBuildFSharpMethodCallMakeMethInfoCallSelectImmediateMemberValscheckFilterTrySelectMemberVal_membInfoGetImmediateIntrinsicMethInfosOfTypehash@1GetImmediateIntrinsicPropInfosOfTypereadRawIntrinsicNamedItemsUncached$cont@3001finfosrfinfosConstructorInfosOfILTypeGetIntrinsicConstructorInfosOfTypeexcludeItemskeepTestnmfitemsToAddilistemptyIndexedListAddItemsloop@3183-42itemListsfilterItemsInSubTypesBasedOnItemsInSuperTypesloop@3193-43indexedItemsInSubTypesfilterItemsInSuperTypesBasedOnItemsInSubTypesexcludeItemsInSuperTypesBasedOnEquivTestWithItemsInSubTypesequivTestequivVirts@3207isVirtequivSigsequivNewSlots@3226isNewSlotfilterOverridesisDefiniteOverrideisFinalFilterOverridesOfMethInfosFilterOverridesOfPropInfosExcludeHiddenOfMethInfosExcludeHiddenOfPropInfosGetIntrinsicMethInfoSetsOfTypeGetIntrinsicPropInfoSetsOfTypeGetRecordOrClassFieldsOfTypeGetIntrinsicMethInfosOfTypeGetIntrinsicPropInfosOfTypeTryFindIntrinsicNamedItemOfTypeTryFindIntrinsicMethInfoTryFindPropInfoGetSigOfFunctionForDelegateTryDestStandardDelegateTypIsStandardEventInfoArgsTypOfEventInfoPropTypOfEventInforeprTyitcrefunitVar1TypeInstToTypeIsValueTypeNewILTypeInfoget_ILTypeRefget_TypeInstget_ToTypeget_IsValueTypeInstantiateFormalTyparsFromTypeNewParamNameAndTypeIsConstantDefaultValueIsDefaultValueMissingValueIsMissingValueWrapperForIDispatchIsWrapperForIDispatchWrapperForIUnknownIsWrapperForIUnknownIsPassByRef_unique_DefaultValue_unique_MissingValue_unique_WrapperForIDispatch_unique_WrapperForIUnknownNewConstantget_IsConstantget_DefaultValueget_IsDefaultValueget_MissingValueget_IsMissingValueget_WrapperForIDispatchget_IsWrapperForIDispatchget_WrapperForIUnknownget_IsWrapperForIUnknownNewPassByRefget_IsPassByRefNotOptionalIsNotOptionalCalleeSideIsCalleeSideIsCallerSideIsOptional_unique_NotOptional_unique_CalleeSideget_NotOptionalget_IsNotOptionalget_CalleeSideget_IsCalleeSideNewCallerSideget_IsCallerSideget_IsOptionalNewParamDataIsILMethInfoIsILFSMethInfoExtensionMethodInfoILNameIsCSharpExtensionMethodActualILTypeRefActualTypeInstMetadataScopeParamMetadataNumParamsGenericArityIsClassConstructorIsProtectedAccessibilityIsVirtualIsFinalIsAbstractIsStaticIsNewSlotIsInstanceEnclosingTypeNewILMethInfoget_IsILMethInfoNewILFSMethInfoget_IsILFSMethInfoget_ILTypeInfoget_ExtensionMethodInfoget_ILNameget_IsCSharpExtensionMethodget_ActualILTypeRefget_ActualTypeInstget_MetadataScopeget_ParamMetadataget_NumParamsget_GenericArityget_IsClassConstructorget_IsProtectedAccessibilityget_IsVirtualget_IsFinalget_IsAbstractget_IsStaticget_IsNewSlotget_IsInstanceGetParamTypesGetRawArgTypesGetParamNamesAndTypesget_EnclosingTypeget_ILMethodRefIsDllImportGetObjArgTypesGetCompiledReturnTyGetFSharpReturnTyextInfoextMethPriIsFSMethIsILMethIsDefaultStructCtorIsProvidedMethDisplayNameHasDirectXmlCommentFormalMethodTyparsFormalMethodInstArbitraryValRefNumArgsIsCurriedIsProtectedAccessiblityIsDispatchSlotIsDefiniteFSharpOverrideIsExtensionMemberIsFSharpEventPropertyIsNullaryIsStructNewFSMethget_IsFSMethNewILMethget_IsILMethNewDefaultStructCtorget_IsDefaultStructCtorNewProvidedMethget_IsProvidedMethget_DisplayNameget_HasDirectXmlCommentget_TcGlobalsget_FormalMethodTyparsget_FormalMethodInstget_XmlDocget_ArbitraryValRefget_NumArgsget_IsCurriedget_IsProtectedAccessiblityget_IsDispatchSlotget_IsDefiniteFSharpOverrideget_IsExtensionMemberget_IsFSharpEventPropertyget_IsNullaryget_IsStructGetParamAttribsGetSlotSigGetParamDatasGetFormalTyparsOfEnclosingTypemixIsILFieldInfoIsProvidedFieldScopeRefFieldNameIsInitOnlyIsSpecialNameLiteralValueILFieldTypeNewILFieldInfoget_IsILFieldInfoNewProvidedFieldget_IsProvidedFieldget_ScopeRefget_FieldNameget_IsInitOnlyget_IsSpecialNameget_LiteralValueget_ILFieldTypeFieldTypeget_ILFieldReffiTyconNewRecdFieldInfoget_RecdFieldRefget_Tyconget_FieldTypeNewUnionCaseInfoget_UnionCaseRefget_UnionCasePropertyNameGetterMethodSetterMethodHasGetterHasSetterNewILPropInfoget_PropertyNameget_GetterMethodget_SetterMethodget_HasGetterget_HasSetterGetPropertyTypeIsFSPropIsILPropIsProvidedPropIsVirtualPropertyIsIndexerDropSetterDropGetterNewFSPropget_IsFSPropNewILPropget_IsILPropNewProvidedPropget_IsProvidedPropget_IsVirtualPropertyget_IsIndexerget_DropSetterget_DropGetterpixparamNameparamTypeAddMethodRemoveMethodNewILEventInfoget_AddMethodget_RemoveMethodget_TypeRefIsFSEventIsILEventIsProvidedEventEventNameNewFSEventget_IsFSEventNewILEventget_IsILEventNewProvidedEventget_IsProvidedEventget_EventNameGetAddMethodGetRemoveMethodGetDelegateTypeeieixvrilMethInfoParamArrayAttributepxformalMethTyparTysilminfoftinfoisOutisInmethodToParentRenamingpnameptypNewCompiledSigIsAccessibleFromAccessibleFromEverywhereIsAccessibleFromEverywhereAccessibleFromSomeFSharpCodeIsAccessibleFromSomeFSharpCodeAccessibleFromSomewhereIsAccessibleFromSomewhere_unique_AccessibleFromEverywhere_unique_AccessibleFromSomeFSharpCode_unique_AccessibleFromSomewhereNewAccessibleFromget_IsAccessibleFromget_AccessibleFromEverywhereget_IsAccessibleFromEverywhereget_AccessibleFromSomeFSharpCodeget_IsAccessibleFromSomeFSharpCodeget_AccessibleFromSomewhereget_IsAccessibleFromSomewhereCustomGetHashCodeCustomEqualsad1ad2Adaptaddpinfo1eqIsMethodItemIsPropertyItemIsRecdFieldItemIsEventItemIsILFieldItemNewMethodItemget_IsMethodItemNewPropertyItemget_IsPropertyItemNewRecdFieldItemget_IsRecdFieldItemNewEventItemget_IsEventItemNewILFieldItemget_IsILFieldItemg@2894amap@2894methodInfoCachepropertyInfoCacherecdOrClassFieldInfoCacheilFieldInfoCacheeventInfoCachenamedItemsCacheentireTypeHierarchyCacheprimaryTypeHierarchyCacheGetRawIntrinsicMethodSetsOfTypeGetRawIntrinsicPropertySetsOfTypeGetRawIntrinsicRecordOrClassFieldsOfTypeGetILFieldInfosOfTypeGetEventInfosOfTypeTryFindRecdOrClassFieldInfoOfTypeTryFindNamedItemOfTypeReadEntireTypeHierachyReadPrimaryTypeHierachygetImmediateIntrinsicILFieldsOfTypegetImmediateIntrinsicEventsOfTypemkRecdFieldInfogetImmediateIntrinsicRecdOrClassFieldsOfTypereadRawIntrinsicMethodSetsUncachedreadRawIntrinsicPropertySetsUncachedreadIlFieldInfosUncachedreadEventInfosUncachedreadRecdOrClassFieldInfoUncachedreadEntireTypeHierachyUncachedreadPrimaryTypeHierachyUncachedreadRawIntrinsicNamedItemsUncachedmakeInfoCacheflagsEqhashFlags0edefsciIgnoreOverridesIsIgnoreOverridesPreferOverridesIsPreferOverrides_unique_IgnoreOverrides_unique_PreferOverridesget_IgnoreOverridesget_IsIgnoreOverridesget_PreferOverridesget_IsPreferOverridesitemsByNameItemsWithNamesuperTypeItemsnewItempriorItemequivVirtsdefiniteOverridesNewSigOfFunctionForDelegateTryBindTyconRefAttributef2f3BindMethInfoAttributesTryBindMethInfoAttributeTryFindMethInfoStringAttributeattribSpecTryFindTyconRefStringAttributeCheckILAttributescattrsCheckFSharpAttributes$cont@2426CheckFSharpAttributesCheckProvidedAttributesprovAttribsCheckILAttributesForUnseenCheckFSharpAttributesForUnseen$cont@2497CheckFSharpAttributesForUnseenCheckProvidedAttributesForUnseenCheckPropInfoAttributesCheckILFieldAttributesCheckMethInfoAttributesMethInfoIsUnseenPropInfoIsUnseenCheckEntityAttributesCheckUnionCaseAttributesCheckRecdFieldAttributesCheckValAttributesCheckRecdFieldInfoAttributesatrefilAttribsfsAttribsObsoleteAttributeTypeProviderEditorHideMethodsAttributeCheckILMemberAccess$cont@2144tcrefOfViewedItemCheckILMemberAccessisILTypeDefAccessibleisTyconAccessibleViaVisibleToisILTypeInfoAccessibleisILMemberAccessibleIsEntityAccessibleCheckTyconAccessibleIsTyconReprAccessibleCheckTyconReprAccessibleIsTypeAccessibleIsProvidedMemberAccessibleIsTypeInstAccessiblegetILAccessisPublicisFamilyisFamilyOrAssemblyisFamilyAndAssemblyIsILFieldInfoAccessibleIsILEventInfoAccessibleIsILMethInfoAccessibleIsILPropInfoAccessibleIsValAccessibleCheckValAccessibleIsUnionCaseAccessibleCheckUnionCaseAccessibleIsRecdFieldAccessibleCheckRecdFieldAccessibleCheckRecdFieldInfoAccessibleCheckILFieldInfoAccessibleIsMethInfoAccessibletryGetILAccessForProvidedMethodBase@2315IsPropInfoAccessibleIsFieldInfoAccessibleppiImportTypeRefDataImportILTypeRefUncachedImportILTypeRefImportTyconRefAppImportILTypeImportProvidedNamedTypeImportProvidedTypeAsILTypetcref$cont@227conv$cont@241conv@240-1ImportProvidedTypeImportProvidedMethodBaseAsILMethodRefImportILGenericParametersmultisetDiscriminateAndMapnodeftipfImportILTypeDefadd@400-5ImportILTypeDefListImportILTypeDefsImportILAssemblyMainTypeDefsImportILAssemblyExportedTypeauxModLoaderexportedTypeImportILAssemblyExportedTypesexportedTypesImportILAssemblyTypeDefsmainmodnested@474netsImportILAssemblyTypeForwardersImportILAssemblyauxModuleLoadersrefsourceDirLoadAssemblyassemblyLoaderILTypeRefToTyconRefCacheg@50assemblyLoader@50typeRefToTyconRefCacheget_assemblyLoaderget_ILTypeRefToTyconRefCachenspdeclaringTypemetadataTokendeclaringGenericTypeDefncinfoactualGenericArgsctorilFormalTyactualParameterTypesgpbucketsnetstringOfPosoutputPoswarningStringOfPosisInfixisNonAssocInfixTokeninfixTokenLengthisIfBlockContinuatorisTryBlockContinuatorisThenBlockContinuatorisDoContinuatorisInterfaceContinuatorisNamespaceContinuatorisTypeContinuatorisForLoopContinuatorisWhileBlockContinuatorisLetContinuatorisTypeSeqBlockElementContinuatorisSeqBlockElementContinuatorisWithAugmentBlockContinuatorisLongIdentifierisLongIdentifierOrGlobalisAtomicExprEndTokenparenTokensBalanceafterOp$cont@476afterAngles|TyparsCloseOp|_|$cont@455angles|TyparsCloseOp|_|txtcheck@617-3unindentationLimit@634newCtxtstrictscanAhead@862indentationtokenEndPosnParenisSameLine@1002tokenStartPosisControlFlowOrNotSameLine@1007loop@1019-36isLongIdentEquals@1015insertTokenFromPrevPosToCurrentPos@1049tokenTupinsertToken@1059thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember@1074ctxtStackendTokenForACtxt@1087tokenBalancesHeadContext@1111suffixExists@1148tokenForcesHeadContextClosure@1154tokenBalancesHeadContextsuffixExistsnextOuterMostInterestingContextIsNamespaceOrModule@1191offsideStackinsertComingSoonTokens@1183keywordNamecomingSoonisHeredelayMergedToken@2177nextTokenTupnoMerge@2178op_UnaryNegationrulesForBothSoftWhiteAndHardWhite$cont@2192plusloop@2265-37__IsCtxtLetDeclIsCtxtIfIsCtxtTryIsCtxtFunIsCtxtFunctionIsCtxtWithAsLetIsCtxtWithAsAugmentIsCtxtMatchIsCtxtForIsCtxtWhileIsCtxtWhenIsCtxtVanillaIsCtxtThenIsCtxtElseIsCtxtDoIsCtxtInterfaceHeadIsCtxtTypeDefnsIsCtxtNamespaceHeadIsCtxtModuleHeadIsCtxtMemberHeadIsCtxtMemberBodyIsCtxtModuleBodyIsCtxtNamespaceBodyIsCtxtExceptionIsCtxtParenIsCtxtSeqBlockIsCtxtMatchClausesStartColNewCtxtLetDeclget_IsCtxtLetDeclNewCtxtIfget_IsCtxtIfNewCtxtTryget_IsCtxtTryNewCtxtFunget_IsCtxtFunNewCtxtFunctionget_IsCtxtFunctionNewCtxtWithAsLetget_IsCtxtWithAsLetNewCtxtWithAsAugmentget_IsCtxtWithAsAugmentNewCtxtMatchget_IsCtxtMatchNewCtxtForget_IsCtxtForNewCtxtWhileget_IsCtxtWhileNewCtxtWhenget_IsCtxtWhenNewCtxtVanillaget_IsCtxtVanillaNewCtxtThenget_IsCtxtThenNewCtxtElseget_IsCtxtElseNewCtxtDoget_IsCtxtDoNewCtxtInterfaceHeadget_IsCtxtInterfaceHeadNewCtxtTypeDefnsget_IsCtxtTypeDefnsNewCtxtNamespaceHeadget_IsCtxtNamespaceHeadNewCtxtModuleHeadget_IsCtxtModuleHeadNewCtxtMemberHeadget_IsCtxtMemberHeadNewCtxtMemberBodyget_IsCtxtMemberBodyNewCtxtModuleBodyget_IsCtxtModuleBodyNewCtxtNamespaceBodyget_IsCtxtNamespaceBodyNewCtxtExceptionget_IsCtxtExceptionNewCtxtParenget_IsCtxtParenNewCtxtSeqBlockget_IsCtxtSeqBlockNewCtxtMatchClausesget_IsCtxtMatchClausesget_StartColIsAddBlockEndNoAddBlockEndIsNoAddBlockEndAddOneSidedBlockEndIsAddOneSidedBlockEnd_unique_AddBlockEnd_unique_NoAddBlockEnd_unique_AddOneSidedBlockEndget_AddBlockEndget_IsAddBlockEndget_NoAddBlockEndget_IsNoAddBlockEndget_AddOneSidedBlockEndget_IsAddOneSidedBlockEndFirstInSeqBlockIsFirstInSeqBlockNotFirstInSeqBlockIsNotFirstInSeqBlock_unique_FirstInSeqBlock_unique_NotFirstInSeqBlockget_FirstInSeqBlockget_IsFirstInSeqBlockget_NotFirstInSeqBlockget_IsNotFirstInSeqBlockPastEOFpastEOFget_PastEOFStructAttributeLastTokenPosToken@LexbufState@LastTokenPos@get_Tokenget_LexbufStateget_LastTokenPoslastTokenPosUseLocationUseShiftedLocationshiftLeftshiftRight_ccompilingFsLibsavedLexbufStatehaveLexbufStatedelayedStacktokensThatNeedNoProcessingCountinitializedprevWasAtomicEndlexbufStateForInsertedDummyTokenslastTokenStartPoslastTokenEndPosgetLexbufStatesetLexbufStatestartPosOfTokenTuprunWrappedLexerInConsistentLexbufStatedelayTokenNoProcessingpopNextTokenTuppeekInitialdetectJoinInCtxtpushCtxtpopCtxtreplaceCtxtpeekNextTokenTuppeekNextTokenisAdjacentleftTokenTuprightTokenTupnextTokenIsAdjacentLParenOrLBracknextTokenIsAdjacentfirstTokenTuppeekAdjacentTyparsreturnTokentokenLexbufStatehwTokenFetchuseBlockRulerulesForBothSoftWhiteAndHardWhitepushCtxtSeqBlockaddBlockBeginaddBlockEndpushCtxtSeqBlockAtswTokenFetchinnerpopNextTokeninsertComingSoonTokensverbosespaceu_encoded_stringu_stringsu_intsp_encoded_stringp_stringsp_intsu_encoded_pubpathp_encoded_pubpathu_encoded_nlerefp2@314p_encoded_nlerefp2@234-1p_ILArrayShapep1@234p2@234-3u_ILArrayShapep1@314-1p2@314-4u_ILCallSigitag_nopitag_ldargitag_ldnullitag_ilzeroitag_callitag_additag_subitag_mulitag_divitag_div_unitag_remitag_rem_unitag_anditag_oritag_xoritag_shlitag_shritag_shr_unitag_negitag_notitag_convitag_conv_unitag_conv_ovfitag_conv_ovf_unitag_callvirtitag_ldobjitag_ldstritag_castclassitag_isinstitag_unboxitag_throwitag_ldflditag_ldfldaitag_stflditag_ldsflditag_ldsfldaitag_stsflditag_stobjitag_boxitag_newarritag_ldlenitag_ldelemaitag_ckfiniteitag_ldtokenitag_add_ovfitag_add_ovf_unitag_mul_ovfitag_mul_ovf_unitag_sub_ovfitag_sub_ovf_unitag_ceqitag_cgtitag_cgt_unitag_cltitag_clt_unitag_ldvirtftnitag_locallocitag_rethrowitag_sizeofitag_ldelem_anyitag_stelem_anyitag_unbox_anyitag_ldlen_multisimple_instrsencode_tabledecodersdecode_tabtab@1151-2arr@1add_instr@1152p_ucrefu_tcrefu_ucrefpatternInput@1267-2p_typfill_p_typp_typspatternInput@1270-3p_attribsfill_p_attribspatternInput@1289-4u_typfill_u_typu_typspatternInput@1291-5u_attribsfill_u_attribsu_vrefu_vrefspatternInput@1363-6u_expr_fwdfill_u_expr_fwdpatternInput@1365-7p_expr_fwdfill_p_expr_fwdp_typar_constraintsu_typar_constraintsp_typar_specsu_typar_specspatternInput@1535-8p_bindsfill_p_bindspatternInput@1536-9p_targetsfill_p_targetspatternInput@1537-10p_Exprsfill_p_ExprspatternInput@1538-11p_FlatExprsfill_p_FlatExprspatternInput@1539-12p_constraintsfill_p_constraintspatternInput@1540-13p_Valsfill_p_ValspatternInput@1541-14p_FlatValsfill_p_FlatValspatternInput@1544-15u_bindsfill_u_bindspatternInput@1545-16u_targetsfill_u_targetspatternInput@1546-17u_Exprsfill_u_ExprspatternInput@1547-18u_FlatExprsfill_u_FlatExprspatternInput@1548-19u_constraintsfill_u_constraintspatternInput@1549-20u_Valsfill_u_ValspatternInput@1550-21u_FlatValsfill_u_FlatValsp_constu_constp_expru_exprpickleModuleOrNamespacepickleModuleInfoget_verbosep_bytep_boolprim_p_int32p_int32get_spacep_spacep_bytesp_prim_stringp_intp_int64p_tup2T1T2p_tup3p3T3p_tup4p4T4u_byteu_boolprim_u_int32u_int32u_intu_int64u_spaceu_tup2u_tup3u_tup4T5NodeStamp@Table@FindOrAddDeref@p_osgn_decloutMapNodes@u_osgn_refinMapLinkNode@u_osgn_decluitbl_rows@itbl_name@lookup_uniqtblp_arrayp_optionp_lazyp_holeu_arrayu_array_reviu_optionu_lazyu_holeget_u_encoded_stringu_stringget_u_stringsget_u_intsget_p_encoded_stringp_stringget_p_stringsget_p_intsu_encoded_ccurefdecode_pubpathstringTabget_u_encoded_pubpathencode_pubpathpubpathTabget_p_encoded_pubpathdecode_nlerefccuTabget_u_encoded_nlerefget_p2@314encode_nlerefnlerefTabthisCcuget_p_encoded_nlerefget_p2@234-1p_nlerefdecode_simpletyp_ccuTab_stringTabp_simpletypp2@239-2rows@pickleObjWithDanglingCcusunpickleObjWithDanglingCcusviewedScopephase2bytesp_ILPublicKeyp_ILVersionp_ILModuleRefp_ILAssemblyRefp_ILScopeRefu_ILPublicKeyu_ILVersionu_ILModuleRefu_ILAssemblyRefu_ILScopeRefp_ILHasThisget_p_ILArrayShapeget_p1@234get_p2@234-3p_ILTypep_ILTypesp_ILBasicCallConvp_ILCallConvp_ILCallSigp_ILTypeRefp_ILTypeSpecu_ILBasicCallConvu_ILHasThisu_ILCallConvu_ILTypeRefget_u_ILArrayShapeget_p1@314-1get_p2@314-4u_ILTypeget_u_ILCallSigu_ILTypeSpecp_ILMethodRefp_ILFieldRefp_ILMethodSpecp_ILFieldSpecp_ILBasicTypeu_ILMethodRefu_ILFieldRefu_ILMethodSpecu_ILFieldSpecu_ILBasicTypeu_ILVolatilityu_ILReadonlyget_itag_nopget_itag_ldargget_itag_ldnullget_itag_ilzeroget_itag_callget_itag_addget_itag_subget_itag_mulget_itag_divget_itag_div_unget_itag_remget_itag_rem_unget_itag_andget_itag_orget_itag_xorget_itag_shlget_itag_shrget_itag_shr_unget_itag_negget_itag_notget_itag_convget_itag_conv_unget_itag_conv_ovfget_itag_conv_ovf_unget_itag_callvirtget_itag_ldobjget_itag_ldstrget_itag_castclassget_itag_isinstget_itag_unboxget_itag_throwget_itag_ldfldget_itag_ldfldaget_itag_stfldget_itag_ldsfldget_itag_ldsfldaget_itag_stsfldget_itag_stobjget_itag_boxget_itag_newarrget_itag_ldlenget_itag_ldelemaget_itag_ckfiniteget_itag_ldtokenget_itag_add_ovfget_itag_add_ovf_unget_itag_mul_ovfget_itag_mul_ovf_unget_itag_sub_ovfget_itag_sub_ovf_unget_itag_ceqget_itag_cgtget_itag_cgt_unget_itag_cltget_itag_clt_unget_itag_ldvirtftnget_itag_locallocget_itag_rethrowget_itag_sizeofget_itag_ldelem_anyget_itag_stelem_anyget_itag_unbox_anyget_itag_ldlen_multiget_simple_instrsget_encode_tableget_decodersget_decode_tabget_tab@1151-2f@1-34get_arr@1get_add_instr@1152p_ILInstru_ILInstrp_Mappkpvp_namemapu_Mapuku_namemapp_posp_rangep_identu_rangeu_identp_local_item_refp_tcrefget_p_ucrefp_rfrefget_u_tcrefget_u_ucrefu_rfrefget_patternInput@1267-2get_p_typget_fill_p_typget_p_typsget_patternInput@1270-3get_p_attribsget_fill_p_attribsp_nonlocal_val_refp_vrefget_patternInput@1289-4get_u_typget_fill_u_typget_u_typsget_patternInput@1291-5get_u_attribsget_fill_u_attribsu_nonlocal_val_refget_u_vrefget_u_vrefsp_member_kindu_kindu_member_kindp_MemberFlagsu_MemberFlagsget_patternInput@1363-6get_u_expr_fwdget_fill_u_expr_fwdget_patternInput@1365-7get_p_expr_fwdget_fill_p_expr_fwdp_trait_slnp_traitu_trait_slnu_traitp_measure_expru_measure_exprp_typar_constraintget_p_typar_constraintsu_typar_constraintget_u_typar_constraintsp_typar_spec_datap_typar_specget_p_typar_specsu_typar_spec_datau_typar_specget_u_typar_specsget_patternInput@1535-8get_p_bindsget_fill_p_bindsget_patternInput@1536-9get_p_targetsget_fill_p_targetsget_patternInput@1537-10get_p_Exprsget_fill_p_Exprsget_patternInput@1538-11get_p_FlatExprsget_fill_p_FlatExprsget_patternInput@1539-12get_p_constraintsget_fill_p_constraintsget_patternInput@1540-13get_p_Valsget_fill_p_Valsget_patternInput@1541-14get_p_FlatValsget_fill_p_FlatValsget_patternInput@1544-15get_u_bindsget_fill_u_bindsget_patternInput@1545-16get_u_targetsget_fill_u_targetsget_patternInput@1546-17get_u_Exprsget_fill_u_Exprsget_patternInput@1547-18get_u_FlatExprsget_fill_u_FlatExprsget_patternInput@1548-19get_u_constraintsget_fill_u_constraintsget_patternInput@1549-20get_u_Valsget_fill_u_Valsget_patternInput@1550-21get_u_FlatValsget_fill_u_FlatValsp_ArgReprInfop_TyparReprInfop_ValReprInfou_ArgReprInfou_ValReprInfop_rangesp_istypep_cpathu_rangesu_istypeu_cpathp_tycon_reprp_tycon_objmodel_datap_unioncase_specp_exnc_reprp_accessp_recdfield_specp_rfield_tablep_entity_spec_datap_tcaugp_tycon_specp_parentrefp_attribkindp_attribp_attrib_exprp_attrib_argp_member_infop_tycon_objmodel_kindp_vrefFlagsp_ValDatap_Valp_modul_typfind@1836iltrefenclosingTypeNamesu_tycon_repru_tycon_objmodel_datau_unioncase_specu_exnc_repru_accessu_recdfield_specu_rfield_tableu_entity_spec_datau_tcaugu_tycon_specu_parentrefu_attribkindu_attribu_attrib_expru_attrib_argu_member_infou_tycon_objmodel_kindu_vrefFlagsu_ValDatau_Valu_modul_typget_p_constget_u_constp_dtreep_dtree_casep_dtree_discrimp_targetp_bindp_lval_op_kindp_recdInfou_dtreeu_dtree_caseu_dtree_discrimu_targetu_bindu_lval_op_kindp_opu_opget_p_exprget_u_exprp_static_optimization_constraintp_slotparamp_slotsigp_methodp_methodsp_intfp_intfsu_static_optimization_constraintu_slotparamu_slotsigu_methodu_methodsu_intfu_intfsget_pickleModuleOrNamespaceget_pickleModuleInfounpickleModuleOrNamespaceunpickleModuleInfoRawDataFixupThunksFixupThunks@get_RawDataget_FixupThunksrawDatafixupThunksFixuploaderreqdrowsAsArraytbl@count@get_tblget_rowsget_countset_rowsset_countget_AsArrayitbl_nameitbl_rowsget_itbl_nameget_itbl_rowsNodeStampNodeNameGetRangeDerefTableNodeName@GetRange@get_NodeStampget_NodeNameget_GetRangeget_Derefget_TablenodeStampnodeNamegetRangederefstampFnameFrangeFderefFoscopeoccusotyconsotyparsovalsostringsopubpathsonlerefsosimpletypsoglobalsofileos@oscope@occus@otycons@otypars@ovals@ostrings@opubpaths@onlerefs@osimpletyps@oglobals@ofile@get_osget_oscopeget_occusget_otyconsget_otyparsget_ovalsget_ostringsget_opubpathsget_onlerefsget_osimpletypsget_oglobalsget_ofileLinkNodeIsLinkedNodesIsLinked@get_LinkNodeget_IsLinkedget_NodeslinkNodeisLinkednodesget_InputMustBeNonNegativeStringmkEmptylnkiilscopeiccusityconsityparsivalsistringsipubpathsinlerefsisimpletypsifileiILModuleis@iilscope@iccus@itycons@itypars@ivals@istrings@ipubpaths@inlerefs@isimpletyps@ifile@iILModule@get_isget_iilscopeget_iccusget_ityconsget_ityparsget_ivalsget_istringsget_ipubpathsget_inlerefsget_isimpletypsget_ifileget_iILModuleosgntgarg01@arg02@arg03@mk_flagBitflagBitBitConverterToInt32DoubleToInt64BitsGetBitsToSingleInt64BitsToDoublep2@234-2p2@314-3simple_instrs@1079decoders@1119decode_tab@1150tab@1151-1u_tcref@1251p_typ@1267fill_p_typ@1267p_attribs@1270fill_p_attribs@1270u_typ@1289fill_u_typ@1289u_attribs@1291fill_u_attribs@1291u_vref@1302u_expr_fwd@1363fill_u_expr_fwd@1363p_expr_fwd@1365fill_p_expr_fwd@1365p_binds@1535fill_p_binds@1535p_targets@1536fill_p_targets@1536p_Exprs@1537fill_p_Exprs@1537p_FlatExprs@1538fill_p_FlatExprs@1538p_constraints@1539fill_p_constraints@1539p_Vals@1540fill_p_Vals@1540p_FlatVals@1541fill_p_FlatVals@1541u_binds@1544fill_u_binds@1544u_targets@1545fill_u_targets@1545u_Exprs@1546fill_u_Exprs@1546u_FlatExprs@1547fill_u_FlatExprs@1547u_constraints@1548fill_u_constraints@1548u_Vals@1549fill_u_Vals@1549u_FlatVals@1550fill_u_FlatVals@1550p_const@2109u_const@2131p_expr@2315u_expr@2334pickleModuleInfo@2476emptyTyconRefRemapemptyTyparInstemptyRemapmaxTuplegoodTupleFieldstypeEquivEnvEmptyvalOrdertyconOrderrecdFieldRefOrderunionCaseRefOrderemptyFreeLocalsemptyFreeRecdFieldsemptyFreeUnionCasesemptyFreeTyconstyparOrderemptyFreeTyparsemptyFreeTyvarsCollectAllNoCachingCollectTyparsNoCachingCollectLocalsNoCachingCollectTyparsAndLocalsNoCachingCollectAllCollectTyparsAndLocalsCollectTyparsCollectLocalsemptyFreeVarsboxisinstunboxtnameCompilationSourceNameAttrtnameCompilationArgumentCountsAttrtnameCompilationMappingAttrtnameSourceConstructFlagstname_SignatureDataVersionAttrtname_AutoOpenAttrenum_CompilationRepresentationAttribute_Staticenum_CompilationRepresentationAttribute_Instanceenum_CompilationRepresentationAttribute_StaticInstanceMaskenum_CompilationRepresentationAttribute_ModuleSuffixenum_CompilationRepresentationAttribute_PermitNullget_emptyTyconRefRemapget_emptyTyparInstget_emptyRemapimapaddTyconRefRemaptcref1tcref2isRemapEmptyremapinstTyparRefremapTyconReftcmapremapUnionCaseRefremapRecdFieldRefmkTyparInstgeneralizeTyparsremapTypeAuxremapMeasureAuxremapTypesAuxremapTyparConstraintsAuxremapTraitAuxbindTyparscopyAndRemapAndBindTyparsFullremapAttribcopyAndRemapAndBindTyparsremapValLinkagevlinkremapNonLocalValRefremapValRefremapTyperemapTypesremapTypeFullremapParamremapSlotSiginstTypeinstTypesinstTraitinstTyparConstraintsinstSlotSigcopySlotSigmkTyparToTyparRenamingtpsOrigmkTyconRefInsttyconRefEqvalRefEqvref1vref2reduceTyconRefAbbrevMeasureablestripUnitEqnsFromMeasureAuxcanShortcutMeasureConExponentabbrevMeasureConExponentAfterRemappingMeasureVarExponentgather@428ListMeasureVarOccsgather@438-2untexprListMeasureVarOccsWithNonZeroExponentsgather@449-4eraseAbbrevsListMeasureConOccsWithNonZeroExponentsgather@461-6ListMeasureConOccsAfterRemappingMeasureProdOptProdMeasuresisDimensionlessdestUnitParMeasureisUnitParMeasurenormalizeMeasuretryNormalizeMeasureInTypesizeMeasuremkNativePtrTypemkByrefTymkArrayTyget_maxTupleget_goodTupleFieldsis_tuple_tcrefmkCompiledTupleTyconRefmkCompiledTupleTyapplyTyconAbbrevabbrevTyreduceTyconAbbrevreduceTyconRefAbbrevreduceTyconMeasureableOrProvidedreduceTyconRefMeasureableOrProvidedstripTyEqnsAstripTyEqnsstripTyEqnsAndEraseeraseFuncAndTuplestripTyEqnsAndMeasureEqnsstripTyEqnsWrtErasurestripExnEqnsprimDestForallTydestTupleTydestTyparTydestAnyParTydestMeasureTyisFunTyisForallTyisTupleTyisUnionTyisReprHiddenTyisFSharpObjModelTyisRecdTyisTyparTyisAnyParTyisMeasureTyisTupleStructTyisProvenUnionCaseTymkAppTymkProvenUnionCaseTyisAppTydestAppTytcrefOfAppTytryDestAppTy|AppTy|_|argsOfAppTytyconOfAppTytryNiceEntityRefOfTy|NullableTy|_||StripNullableTy|mkInstForAppTydomainOfFunTyrangeOfFunTyget_typeEquivEnvEmptytraitsAEquivAuxreturnTypesAEquivAuxtyparConstraintsAEquivAuxtyparConstraintSetsAEquivAuxtyparsAEquivAuxtps1tps2tcrefAEquivtc1tc2typeAEquivAuxtrans@863measureAEquivun1un2typesAEquivAuxtypeEquivAuxtypeAEquivtypeEquivtraitsAEquivtyparConstraintsAEquivtyparsAEquivreturnTypesAEquivmeasureEquivisErasedTypegetErasedTypesget_valOrderget_tyconOrderget_recdFieldRefOrderget_unionCaseRefOrdermkFunTyop_MinusMinusGreatertryMkForallTyop_PlusMinusGreatermkTupleTymkIteratedFunTydlmkLambdaArgTytypeOfLambdaArgmkMultiLambdaTymkLambdaTyloop@960-34prior_cpathensureCcuHasModuleOrNamespaceAtPathstripExprmkCaseisTupleExprtryDestTuplerangeOfExprExpr.get_RangeprimMkMatchmkBoolSwitchprimMkCondspTarget1mkCondexprForValRefexprForValgen_mk_localmkLocalmkCompGenLocalmkMutableCompGenLocalmkMultiLambdarebuildLambdamkLambdamkTypeLambdatau_tymkTypeChoosemkObjExprbasevmkLambdasmkMultiLambdasCoremkMultiLambdasmkMemberLambdasmkMultiLambdaBindletSeqPtOptmkBindmkCompGenBindmkCompGenBindsmkLetBindmkLetsBindmkLetsFromBindingsmkLetmkCompGenLetmkInvisibleBindmkInvisibleLetmkInvisibleBindsmkInvisibleFlatBindingsmkInvisibleLetsmkInvisibleLetsFromBindingsmkLetRecBindsNormalizeDeclaredTyparsForEquiRecursiveInferencemkGenericBindRhsisBeingGeneralizedmkLazyAndmkLazyOrmkCoerceExprto_tyfrom_tymkAsmExprrettysmkUnionCaseExprmkExnExprmkTupleFieldGetmkRecdFieldGetViaExprAddrmkRecdFieldGetAddrViaExprAddrmkStaticRecdFieldGetAddrmkStaticRecdFieldGetmkStaticRecdFieldSetmkRecdFieldSetViaExprAddrmkUnionCaseTagGetmkUnionCaseProofmkUnionCaseFieldGetProvenmkUnionCaseFieldGetUnprovenmkUnionCaseFieldSetmkExnCaseFieldGetmkExnCaseFieldSetmkDummyLambdamkWhilemkFormkTryWithmkTryFinallymkDefaultmkValSetmkAddrSetmkAddrGetmkValAddrtryRescopeEntityviewedCcutryRescopeValentityRemapactualTyOfRecdFieldactualTysOfRecdFieldsrfieldsactualTysOfInstanceRecdFieldsactualTysOfUnionCaseFieldsactualResultTyOfUnionCaserecdFieldsOfExnDefRefrecdFieldTysOfExnDefRefrecdFieldTyOfExnDefRefByIdxactualTyOfRecdFieldForTyconactualTyOfRecdFieldRefdestForallTytryDestForallTystripFunTyapplyForallTyreduceIteratedFunTyapplyTyArgsapplyTysformalApplyTysstripFunTyNtryDestTupleTyGetTopTauTypeInFSharpFormdestTopForallTyGetTopValTypeInFSharpFormIsCompiledAsStaticPropertyIsCompiledAsStaticPropertyWithFieldisArrayTyconRefrankOfArrayTyconRefdestArrayTyisByrefLikeTyconRefisArrayTyisArray1DTyisUnitTyisObjTyisVoidTyisILAppTyisByrefTyisByrefLikeTyextensionInfoOfTymetadataOfTyconmetadataOfTyisILReferenceTyisILInterfaceTyconrankOfArrayTyisFSharpObjModelRefTyisFSharpClassTyisFSharpStructTyisFSharpInterfaceTyisDelegateTyisInterfaceTyisClassTyisRefTyisStructTyisUnmanagedTyisInterfaceTyconisInterfaceTyconRefisEnumTyactualReturnTyOfSlotSigparentTyInstmethTyInstslotSigHasVoidReturnTyreturnTyOfMethodisAbstractTyconMemberIsExplicitImplValIsExplicitImplValRefIsExplicitImplget_emptyFreeLocalsunionFreeLocalsget_emptyFreeRecdFieldsunionFreeRecdFieldsget_emptyFreeUnionCasesunionFreeUnionCasesget_emptyFreeTyconsunionFreeTyconsget_typarOrderget_emptyFreeTyparsunionFreeTyparsget_emptyFreeTyvarsunionFreeTyvarsfvs1fvs2CompareTo$cont@1683-42CompareTo$cont@1683-41CompareTo$cont@1683-44CompareTo$cont@1683-43Equals$cont@1683-11get_CollectAllNoCachingget_CollectTyparsNoCachingget_CollectLocalsNoCachingget_CollectTyparsAndLocalsNoCachingget_CollectAllget_CollectTyparsAndLocalsget_CollectTyparsget_CollectLocalsaccFreeLocalTyconaccFreeTyconaccFreeInTyparConstraintsaccFreeInTyparConstraintaccFreeInTraitaccFreeInTraitSlnaccFreeLocalValInTraitSln_optsaccFreeValRefInTraitSlnaccFreeTyparRefaccFreeInTypeaccFreeInMeasureaccFreeInTypesfreeInTypefreeInTypesfreeInValaccFreeInTyparsboundTyparsLeftToRightcxFlagfilterDupesFlagaccFreeInTyparConstraintsLeftToRightaccFreeInTyparConstraintLeftToRightaccFreeInTraitLeftToRightaccFreeTyparRefLeftToRightaccFreeInTypeLeftToRightaccFreeInTypesLeftToRightfreeInTypeLeftToRightfreeInTypesLeftToRightfreeInTypesLeftToRightSkippingConstraintsvalsOfBindsGetMemberTypeInFSharpFormcheckMemberValGetTopValTypeInCompiledFormGetMemberTypeInMemberFormGetTypeOfMemberInMemberFormGetTypeOfMemberInFSharpFormPartitionValTyparsPartitionValRefTyparsArgInfosOfMemberValArgInfosOfMemberGetFSharpViewOfReturnTypeReturnTypeOfPropertyValArgInfosOfPropertyValgeneralizeTyconRefgeneralizedTyconRefprefixOfStaticReqprefixOfRigidTyparop_PlusDotPlusfullNameOfParentOfPubPathppfullNameOfPubPathfullNameOfParentOfNonLocalEntityRefnlrfullNameOfParentOfEntityReffullNameOfEntityRefnmFxreffullNameOfParentOfValReffullDisplayTextOfParentOfModReffullDisplayTextOfModReffullDisplayTextOfTyconReffullDisplayTextOfExnReffullDisplayTextOfUnionCaseReffullDisplayTextOfRecdFieldReffullDisplayTextOfValReffullMangledPathToTyconRefqualifiedMangledNameOfTyconReffirstEqfirstRemtrimPathByDisplayEnvsuperOfTyconisILAttribHasILAttributeTryDecodeILAttributeILThingHasExtensionAttributeIsMatchingFSharpAttributeHasFSharpAttributeTryFindFSharpAttribute|ExtractAttribNamedArg|_||AttribInt32Arg|_||AttribInt16Arg|_||AttribBoolArg|_||AttribStringArg|_|TryFindFSharpBoolAttributeTryFindFSharpInt32AttributeTryFindFSharpStringAttributeTryFindILAttributedestByrefTyisRefCellTydestRefCellTyStripSelfRefCellbaseOrThisInfomkRefCellTymkLazyTymkPrintfFormatTymkOptionTymkListTyisOptionTytryDestOptionTydestOptionTyisLinqExpressionTytryDestLinqExpressionTydestLinqExpressionTymkNoneCasemkSomeCaseValRef.get_IsDispatchSlot|UnopExpr|_||BinopExpr|_||SpecificUnopExpr|_|vrefReqd|SpecificBinopExpr|_||EnumExpr|_||AttribBitwiseOrExpr|_|isUncheckedDefaultOfValRefisTypeOfValRefisSizeOfValRefisTypeDefOfValRef|UncheckedDefaultOfExpr|_||TypeOfExpr|_||SizeOfExpr|_||TypeDefOfExpr|_|wrapModuleOrNamespaceTypewrapModuleOrNamespaceTypeInNamespacewrapModuleOrNamespaceExprInNamespaceSigTypeOfImplFileCompareTo$cont@3394-45CompareTo$cont@3394-46addValRemapv'mkRepackageRemappingmrpiaccEntityRemapmsigtyaccSubEntityRemapvalLinkageAEquivaccValRemapgetCorrespondingSigTyaccEntityRemapFromModuleOrNamespaceTypeacc_0acc_1accValRemapFromModuleOrNamespaceTypeComputeRemappingFromInferredSignatureToExplicitSignatureabstractSlotValsOfTyconsaccEntityRemapFromModuleOrNamespaceaccEntityRemapFromModuleOrNamespaceDefsaccEntityRemapFromModuleOrNamespaceBindaccValRemapFromModuleOrNamespaceaccValRemapFromModuleOrNamespaceBindaccValRemapFromModuleOrNamespaceDefsComputeRemappingFromImplementationToSignatureaccTyconHidingInfoAtAssemblyBoundaryaccValHidingInfoAtAssemblyBoundaryaccModuleOrNamespaceHidingInfoAtAssemblyBoundaryComputeHidingInfoAtAssemblyBoundarycheck@3640-2setFaccessFremapFmrmiIsHiddendebugFIsHiddenTyconIsHiddenTyconReprIsHiddenValIsHiddenRecdFieldgo@3667-7ftfoldModuleOrNamespaceTyallValsOfModuleOrNamespaceTyallEntitiesOfModuleOrNamespaceTyisPublicVallvisPublicUnionCaseucrisPublicRecdFieldrfrisPublicTyconfreeVarsAllPublicfreeTyvarsAllPublictyvars|LinearMatchExpr|_|rebuildLinearMatchExprget_emptyFreeVarsunionFreeVarsaccFreeVarsInTyaccFreeVarsInTysaccFreevarsInTyconaccFreevarsInValaccFreeVarsInTraitSlnboundLocalValboundProtectaccUsesFunctionLocalConstructsflgbound_rethrowaccUsesRethrowboundLocalValsfreeVarsCacheComputeaccFreeInSwitchCasescslaccFreeInSwitchCaseaccFreeInTestaccFreeInDecisionTreeaccFreeInValFlagsaccFreeLocalValaccLocalTyconRepraccUsedRecdOrUnionTyconRepraccFreeUnionCaseRefcraccFreeRecdFieldRefaccFreeValRefaccFreeInMethodaccFreeInMethodsaccFreeInExprg@1freeaccFreeInExprLinearaccFreeInExprNonLinearaccFreeInOpaccFreeInTargetsaccFreeInTargetaccFreeInFlatExprsaccFreeInExprsaccFreeInSlotSigfreeInDecisionTreefreeInExpraccFreeInModuleOrNamespaceaccFreeInModuleOrNamespaceBindaccFreeInModuleOrNamespacesfreeInBindingRhsfreeInModuleOrNamespacestripLambdastripLambdaNtryStripLambdaNstripTopLambdastripLambda_notypes@4168stripTopLambdaNoTypes@4176InferArityOfExprpartialArgAttribsLretAttribsInferArityOfExprBindingunderlyingTypeOfEnumTy$cont@4220underlyingTypeOfEnumTysetValHasNoAritynormalizeEnumTydecideStaticOptimizationConstraintDecideStaticOptimizationsmkStaticOptimizationExprmarkAsCompGenbindLocalValbindLocalValsvs'bindTyconstcstcs'remapAttribKindtmenvCopyRemapAndBindTyparsremapAttribExprremapAttribsremapPossibleForallTyremapArgDataremapValReprInforemapValDataremapParentRefmapImmediateValsAndTyconscopyValfixupValDatacopyAndRemapAndBindValscopyAndRemapAndBindValremapExprremapTargetg@1-1g@1-2remapLinearExprremapConstraintremapOpremapValFlagsremapExprsremapDecisionTreecopyAndRemapAndBindBindingcopyAndRemapAndBindBindingsremapAndRenameBindstmenvinnerremapAndRenameBindremapMethodremapInterfaceImplremapRecdFieldremapRecdFieldsremapUnionCaseremapUnionCasesremapFsObjDataremapTyconReprremapTyconAugremapTyconExnInforemapMemberInfocopyAndRemapAndBindModTyremapModTy_compgenrenameTyconrenameValcopyAndRemapAndBindTyconsAndValsallTyconsOfTyconallTyconsOfModDefallValsOfModDefremapAndBindModExprremapModExprcopyAndRemapModDefremapAndRenameModDefremapAndRenameModBindcopyModuleOrNamespaceTypecopyExprcopyImplFileinstExprf@1-33remarkExprremarkObjExprMethodremarkInterfaceImplremarkExprsremarkDecisionTreeremarkBindsremarkBindisRecdOrStructFieldAllocObservableucaseAllocObservableisUnionCaseAllocObservableisRecdOrUnionOrStructTyconAllocObservableisRecdOrUnionOrStructTyconRefAllocObservableisExnAllocObservable_ecrefisUnionCaseFieldMutableisExnFieldMutableComputeFieldNamemkQuotedExprTymkRawQuotedExprTymkTupledTymkTupledVarsTymkMethodTymkArrayTypemkByteArrayTytyOfExpr$cont@4995tyOfExprprimMkAppargslloop@5042-35isExpansiveUnderInstantiationfty0pargsmkExprApplAuxmkAppsAuxtyargslmkAppsarglmkTyAppExpraccTargetsOfDecisionTreemapAccTipsOfDecisionTreemapAccTipsOfEdgemapTargetsOfDecisionTreeSortInPlaceeliminateDeadTargetsFromMatchtargetOfSuccessDecisionTreedecisionTreeHasNonTrivialBindingsaccumulateTipsOfDecisionTree@5155branchesToTargetsisLinearTarget@5170rebuildDecisionTree@5182rebuildDecisionTreeEdgefoldLinearBindingTargetsOfMatchsimplifyTrivialMatchmkAndSimplifyMatchisRecdOrStuctTyImmutableCanTakeAddressOfImmutableValMustTakeAddressOfValMustTakeAddressOfRecdFieldCanTakeAddressOfRecdFieldmkExprAddrOfExprmustTakeAddressuseReadonlyForGenericArrayAddressaddrExprValmkRecdFieldGetmkRecdFieldSetIterateRecursiveFixupsexprToFixJoinTyparStaticReqExprFolder0exprF@5496valBindingSiteInterceptrecBindingsInterceptnonRecBindingsInterceptexprInterceptdtreeInterceptdcaseFtargetFtmethodFmbindFvalBindF@5534valBindsF@5538bindF@5542dtreeF@5546mdefF@5580mkFoldersfoldersFoldExprFoldImplFilemkStringmkBoolmkBytemkUInt16mkTruemkFalsemkUnitmkInt32mkIntmkZeromkOnemkTwomkMinusOnedestInt32isIDelegateEventTypedestIDelegateEventTypemkIEventTypemkIObservableTypemkIObserverTypemkRefCellContentsRefmkSequentialmkCompGenSequentialmkSequentialsmkGetArg0mkTupledmkTupledNoTypesmkTupledVarsinversePermsigmapermuteexistsRfmapi@5693mapFoldListiliftPosition@5712invSigmapermuteExprpermuteExprListSortInPlaceBymkRecordExprrfrefsmkRefCellmkRefCellGetmkRefCellSetmkNilmkConsmkCompGenLocalAndInvisbleBindget_boxget_isinstget_unboxmkUnboxmkBoxmkIsInstmspec_Type_GetTypeFromHandlefspec_Missing_ValuetypedExprForIntrinsicmkCallGetGenericComparermkCallGetGenericEREqualityComparermkCallGetGenericPEREqualityComparermkCallUnboxmkCallUnboxFastmkCallTypeTestmkCallTypeOfmkCallTypeDefOfmkCallDisposemkCallSeqmkCallCreateInstancemkCallGetQuerySourceAsEnumerablemkCallNewQuerySourcemkCallCreateEventmkCallGenericComparisonWithComparerOutermkCallEqualsOperatormkCallGenericEqualityEROutermkCallGenericEqualityWithComparerOutermkCallGenericHashWithComparerOutermkCallArrayGetmkCallArray2DGetidx1idx2mkCallArray3DGetidx3mkCallArray4DGetidx4mkCallNewDecimale4e5mkCallNewFormatmkCallRaiseTryEliminateDesugaredConstants$cont@5835TryEliminateDesugaredConstantsmkSeqTymkIEnumeratorTymkCallSeqCollectalphaTybetaTyarg2mkCallSeqUsingmkCallSeqDelaymkCallSeqAppendmkCallSeqGeneratedmkCallSeqFinallymkCallSeqOfFunctionsarg3mkCallSeqToArraymkCallSeqToListmkCallSeqMapinpElemTygenElemTymkCallSeqSingletonmkCallSeqEmptymkCallUnpickleQuotationmkCallCastQuotationmkCallLiftValuemkCallCheckThismkCallFailInitmkCallFailStaticInitmkCallQuoteToLinqLambdaExpressionmkLazyDelayedmkLazyForcemkDecrmkIncrmkLdlenarremkLdelemidxemkILAsmCeqmkILAsmCltmkNullmkThrowdestThrowisThrowmkReraiseLibCallmkReraiseget_tnameCompilationSourceNameAttrget_tnameCompilationArgumentCountsAttrget_tnameCompilationMappingAttrget_tnameSourceConstructFlagsmkCompilationMappingAttrPrimnumsmkCompilationMappingAttrmkCompilationMappingAttrWithSeqNumseqNummkCompilationMappingAttrWithVariantNumAndSeqNumvarNummkCompilationArgumentCountsAttrmkCompilationSourceNameAttrisTypeProviderAssemblyAttrcattrTryDecodeTypeProviderAssemblyAttrget_tname_SignatureDataVersionAttrmkSignatureDataVersionAttrget_tname_AutoOpenAttrIsSignatureDataVersionAttrTryFindAutoOpenAttrtref_InternalsVisibleToAttrTryFindInternalsVisibleToAttrIsMatchingSignatureDataVersionAttr$cont@6059IsMatchingSignatureDataVersionAttrmkCompilerGeneratedAttruntupledToTupledAdjustArityOfLambdaBodyMultiLambdaToTupledLambdaMakeApplicationAndBetaReduceAuxMakeApplicationAndBetaReduceMakeArgsForTopArgsAdjustValForExpectedArityflagsstripTupledFunTy|ExprValWithPossibleTypeInst|_|mkCoerceIfNeededtgtTyCoerceDetupled@6337detupledArgsactualTysCoerceBoundTuple@6347appmtupleVarCoerceTupled@6358buildingLambdasniceNamesbinderBuilder@6495lambdaBuilder@6489-1AdjustPossibleSubsumptionExprsuppliedArgsNormalizeAndAdjustPossibleSubsumptionExprsetaExpandTypeLambdaAdjustValToTopValvalDataitemsProj@6580isThrowingTarget@6585fixup@6598tmpTynewTgLinearizeTopMatchAux$cont@6588targetsLLinearizeTopMatchAuxLinearizeTopMatchticksAndArgCountTextOfTyconRefTryFindIndextyparEncgtpsTypegtpsMethodtypeEnctyargsEncXmlDocArgsEncargTsbuildAccessPathcpprependPathXmlDocSigOfValXmlDocSigOfUnionCaseXmlDocSigOfFieldXmlDocSigOfTyconXmlDocSigOfSubModulXmlDocSigOfEntityget_enum_CompilationRepresentationAttribute_Staticget_enum_CompilationRepresentationAttribute_Instanceget_enum_CompilationRepresentationAttribute_StaticInstanceMaskget_enum_CompilationRepresentationAttribute_ModuleSuffixget_enum_CompilationRepresentationAttribute_PermitNullHasUseNullAsTrueValueAttributeTyconHasUseNullAsTrueValueAttributeCanHaveUseNullAsTrueValueAttributeIsUnionTypeWithNullAsTrueValueTypeNullNeverTypeNullIsExtraValueTypeNullIsTrueValueTypeNullNotLikedTypeSatisfiesNullConstraintTypeHasDefaultValue|SpecialComparableHeadType|_||SpecialEquatableHeadType|_||SpecialNotEquatableHeadType|_|canUseTypeTestFastcanUseUnboxFastmkIsInstConditionalvinpemkNullTestmkNonNullTestmkNonNullCondmkIfThenModuleNameIsMangledCompileAsEventMemberIsCompiledAsInstanceisExtensionMemberisSealedTyisComInteropTyValSpecIsCompiledAsInstanceValRefIsCompiledAsInstanceMemberGetMemberCallInfo$cont@6995GetMemberCallInfoTryGetActivePatternInfoActivePatternElemRef.get_NamemkChoiceTyconRefmkChoiceTymkChoiceCaseRefActivePatternInfo.get_NamesActivePatternInfo.get_IsTotalActivePatternInfo.ResultTypertysActivePatternInfo.OverallTyperewrite_bindRewriteExprpreRewriteExprpostRewriteExprrewriteExprStructureg@1-3g@1-4g@1-5rewriteLinearExprrewriteExprsrewriteDecisionTreerewriteTargetrewriteTargetsrewriteObjExprOverriderewriteObjExprInterfaceImplrewriteModuleOrNamespaceExprrewriteModuleOrNamespaceDefrewriteModuleOrNamespaceBindingrewriteModuleOrNamespaceBindingsmbindsRewriteImplFilemvMakeExportRemappingremapEntityDataToNonLocalremapTyconToNonLocalremapValToNonLocalApplyExportRemappingToEntityisCompiledConstraintIsGenericValWithGenericContraintsEntity.HasInterfaceEntity.HasOverrideEntityRef.HasInterfaceEntityRef.HasOverridemkFastForLoopspLetidvcheckExpr@7359checkDecisionTree@7404checkDecisionTreeCase@7409checkDecisionTreeTarget@7411IsSimpleSyntacticConstantExprEvalAttribArgExprEvaledAttribExprEqualityEvalAttribArgGetTypeOfIntrinsicMemberInCompiledFormmkCompiledTuplemkILMethodSpecForTupleItemmkGetTupleItemNteretty|Int32Expr|_||TryFinally|_||WhileLoopForCompiledForEachExpr|_||Let|_||RangeInt32Step|_|$cont@7601|RangeInt32Step|_||CompiledInt32ForEachExprWithKnownStep|_|DetectFastIntegerForLoops|InnerExprPat|NewTPMapContentsvalRemaptyconRefRemaptpinst@valRemap@tyconRefRemap@get_tpinstget_valRemapget_tyconRefRemapEraseAllIsEraseAllEraseMeasuresIsEraseMeasuresEraseNoneIsEraseNone_unique_EraseAll_unique_EraseMeasures_unique_EraseNoneget_EraseAllget_IsEraseAllget_EraseMeasuresget_IsEraseMeasuresget_EraseNoneget_IsEraseNoneEquivTyparsEquivTyconsEquivTypars@EquivTycons@get_EquivTyparsget_EquivTyconsequivTyparsequivTyconsBindTyparsToTypestys2BindEquivTyparsFromTyparInstFromEquivTyparstpmapSystem-Collections-Generic-IComparer`1-CompareinpRangeAddTargetAddResultTargetCloseTargetsNewTypeSchemeValuesNewValHashIsILTypeMetadataFSharpOrArrayOrByrefOrTupleOrExnTypeMetadataIsFSharpOrArrayOrByrefOrTupleOrExnTypeMetadataIsExtensionTypeMetadata_unique_FSharpOrArrayOrByrefOrTupleOrExnTypeMetadataNewILTypeMetadataget_IsILTypeMetadataget_FSharpOrArrayOrByrefOrTupleOrExnTypeMetadataget_IsFSharpOrArrayOrByrefOrTupleOrExnTypeMetadataNewExtensionTypeMetadataget_IsExtensionTypeMetadatacanCachecollectInTypesincludeLocalTyconsincludeTyparsincludeLocalTyconReprsincludeRecdFieldsincludeUnionCasesincludeLocalscanCache@collectInTypes@includeLocalTycons@includeTypars@includeLocalTyconReprs@includeRecdFields@includeUnionCases@includeLocals@get_canCacheget_collectInTypesget_includeLocalTyconsget_includeTyparsget_includeLocalTyconReprsget_includeRecdFieldsget_includeUnionCasesget_includeLocalsincludeStaticParametersInTypeNamesopenTopPathsSortedopenTopPathsRawshortTypeNamessuppressNestedTypesshowObsoleteMembersshowTyparBindingshowImperativeTyparAnnotationssuppressInlineKeywordsuppressMutableKeywordshowMemberContainersshortConstraintsuseColonForReturnTypeshowAttributesshowOverridesshowConstraintTyparAnnotationsabbreviateAdditionalConstraintsshowTyparDefaultConstraintscontextAccessibilitygeneratedValueLayoutincludeStaticParametersInTypeNames@openTopPathsSorted@openTopPathsRaw@shortTypeNames@suppressNestedTypes@maxMembers@showObsoleteMembers@showTyparBinding@showImperativeTyparAnnotations@suppressInlineKeyword@suppressMutableKeyword@showMemberContainers@shortConstraints@useColonForReturnType@showAttributes@showOverrides@showConstraintTyparAnnotations@abbreviateAdditionalConstraints@showTyparDefaultConstraints@contextAccessibility@generatedValueLayout@get_includeStaticParametersInTypeNamesget_openTopPathsSortedget_openTopPathsRawget_shortTypeNamesget_suppressNestedTypesget_showObsoleteMembersget_showTyparBindingget_showImperativeTyparAnnotationsget_suppressInlineKeywordget_suppressMutableKeywordget_showMemberContainersget_shortConstraintsget_useColonForReturnTypeget_showAttributesget_showOverridesget_showConstraintTyparAnnotationsget_abbreviateAdditionalConstraintsget_showTyparDefaultConstraintsget_contextAccessibilityget_generatedValueLayoutSetOpenPathsAddOpenPathAddOpenModuleOrNamespaceAddAccessibilityopened_pathmrpiValsmrpiEntitiesImplToSigMappingmrpiVals@mrpiEntities@get_mrpiValsget_mrpiEntitiesget_ImplToSigMappingmhiTyconsmhiTyconReprsmhiValsmhiRecdFieldsmhiUnionCasesmhiTycons@mhiTyconReprs@mhiVals@mhiRecdFields@mhiUnionCases@get_mhiTyconsget_mhiTyconReprsget_mhiValsget_mhiRecdFieldsget_mhiUnionCasessigtyconCloneAllIsCloneAllCloneAllAndMarkExprValsAsCompilerGeneratedIsCloneAllAndMarkExprValsAsCompilerGeneratedOnlyCloneExprValsIsOnlyCloneExprVals_unique_CloneAll_unique_CloneAllAndMarkExprValsAsCompilerGenerated_unique_OnlyCloneExprValsget_CloneAllget_IsCloneAllget_CloneAllAndMarkExprValsAsCompilerGeneratedget_IsCloneAllAndMarkExprValsAsCompilerGeneratedget_OnlyCloneExprValsget_IsOnlyCloneExprValstc'tmenvinner2lookupVallookupTyconnestedTycondef0tgnmTargetDefinitelyMutatesIsDefinitelyMutatesPossiblyMutatesIsPossiblyMutatesNeverMutatesIsNeverMutates_unique_DefinitelyMutates_unique_PossiblyMutates_unique_NeverMutatesget_DefinitelyMutatesget_IsDefinitelyMutatesget_PossiblyMutatesget_IsPossiblyMutatesget_NeverMutatesget_IsNeverMutatestargetIntercepttmethodInterceptget_exprInterceptget_valBindingSiteInterceptget_nonRecBindingsInterceptget_recBindingsInterceptget_dtreeInterceptget_targetInterceptget_tmethodIntercept_exprF_z_b_bs_dtimplFj'rbindsuntupledTystupledeuntupling_esdummyTyNinpArgTyactualArgTysinpsAsVarssuppliedArgvtystmpePreInterceptPostTransformIsUnderQuotationsPreIntercept@PostTransform@IsUnderQuotations@get_PreInterceptget_PostTransformget_IsUnderQuotationspreInterceptpostTransformisUnderQuotationslayoutRangesget_layoutRangesintLjlistLlvalopLangleBracketLauxTyparsLwrap@2766auxTypeWrapLwrap@2804-1auxTyparWrapLauxTyparConstraintTypLconstraintPrefix@2849auxTyparConstraintLauxTyparConstraintsLtyparLtypeAtomLtypeLtyparDeclLinstLtyLvalRefLarityInfoLvalLtypeOfValLslotSigLMemberLvspecAtBindLunionCaseRefLrecdFieldRefLconstLucaseL@3051layoutUnionCases@3057layoutRecdField@3061tyconReprL@3066tyconLbindingLexprLletRecLbodyLletLexprWrapLassemblyLappLflayoutimplFileLmexprLmdefsLmdefLmbindLentityTypeLentityLdecisionTreeLdcaseLdtestLtargetLflatValsLtmethodLoverrideLtmethiimplLtmethsshowTypeshowExprtraitLtyparsLemptyTyparCountstypeSimplificationInfo0foldTypeButNotConstraintsincMaccTyparCountsget_emptyTyparCountsget_typeSimplificationInfo0categorizeConstraintssimplifyCollectInfosingletonsinplaceConstraintspostfixConstraintssingletons@inplaceConstraints@postfixConstraints@get_singletonsget_inplaceConstraintsget_postfixConstraintsconstraintTyparsnewPrettyTyparNewPrettyTyparsNeedsPrettyTyparNameuseThisName@2175alreadyInUsetypeIndexmeasureIndextryAgain@2179tryName@2182choose$cont@2189choose@2168PrettyTyparNamescomputeKeep@2218keepchangePrettifyTypesfoldTysmapTysPrettifyTypes1PrettifyTypes2PrettifyTypesNPrettifyTypesN1PrettifyTypesNM1tpnicexssemptyTyconRefRemap@87emptyRemap@96typeEquivEnvEmpty@754recdFieldRefOrder@918unionCaseRefOrder@925emptyFreeLocals@1636emptyFreeRecdFields@1642emptyFreeUnionCases@1648emptyFreeTycons@1654typarOrder@1660emptyFreeTypars@1664emptyFreeTyvars@1670CollectAllNoCaching@1693CollectTyparsNoCaching@1703CollectLocalsNoCaching@1713CollectTyparsAndLocalsNoCaching@1723CollectAll@1733CollectTyparsAndLocals@1743CollectTypars@1754CollectLocals@1766emptyTyparCounts@2284typeSimplificationInfo0@2294layoutRanges@2706emptyFreeVars@3724box@5783isinst@5784unbox@5785tnameCompilationSourceNameAttr@5959tnameCompilationArgumentCountsAttr@5960tnameCompilationMappingAttr@5961tnameSourceConstructFlags@5962tname_SignatureDataVersionAttr@6014tname_AutoOpenAttr@6025DummyFileNameForRangesWithoutASpecificLocationenvRangevaravarbvarcvardvarevarfvargvaraTyvarbTyvarcTyvardTyvareTyget_DummyFileNameForRangesWithoutASpecificLocationget_envRangeget_varaget_varbget_varcget_vardget_vareget_varfget_vargget_varaTyget_varbTyget_varcTyget_vardTyget_vareTyValRefForIntrinsicmkNonGenericTymkNonLocalTyconRef2mk_MFCore_tcrefmk_MFQuotations_tcrefmk_MFLinq_tcrefmk_MFCollections_tcrefmk_MFCompilerServices_tcrefmk_MFRuntimeHelpers_tcrefmk_MFControl_tcrefmkSysNonGenericTy@598getTypeCcumkNullableTy@646nullable_tcrmkByrefTy@647byref_tcrmkNativePtrType@648nativeptr_tcrtryMkForallTy@653makeIntrinsicValRef@657mkSmallTupledTyknownIntrinsicsarg4arg5arg6mk_unop_ty@674mk_binop_ty@675mk_shiftop_ty@676int_tymk_binop_ty3@677ty3mk_rel_sig@678bool_tymk_compare_sig@679mk_hash_sig@680mk_compare_withc_sig@681mk_IComparer_tymk_equality_withc_sig@682mk_IEqualityComparer_tymk_hash_withc_sig@683mkListTy@684list_tcr_nicemkSeqTy@685seq_tcrmkQuerySourceTy@686querySource_tcrmkArrayType@688il_arr1_tcrmk_array2_typ@689il_arr2_tcrmk_array3_typ@690il_arr3_tcrmk_array4_typ@691il_arr4_tcrmkLazyTy@692lazy_tcrmkPrintfFormatTy@694format_tcrmk_format4_ty@695format4_tcrmkQuotedExprTy@696expr_tcrmkLinqExpressionTy@699linqExpression_tcrdecodeTupleTy$cont@800tuple1_tcrt7t6t5t4t3decodeTupleTy@797mk_MFCore_attrib@807mkMscorlibAttrib@810mk_doc@814mkTcGlobalsdirectoryToResolveRelativePathsusing40environmentmkMscorlibAttribNewIntrinsicValRefNewAttribInfoilxPubCloEnvbetter_tcref_maprefcell_tcr_canonoption_tcr_canonchoice2_tcrchoice3_tcrchoice4_tcrchoice5_tcrchoice6_tcrchoice7_tcrlist_tcr_canonset_tcr_canonmap_tcr_canonlazy_tcr_canonunionCaseRefEqrefcell_tcr_niceoption_tcr_nicelazy_tcr_niceraw_expr_tcrnativeint_tcrint32_tcrint16_tcrint64_tcruint16_tcruint32_tcruint64_tcrsbyte_tcrdecimal_tcrdate_tcrpdecimal_tcrbyte_tcrbool_tcrunit_tcr_canonunit_tcr_niceexn_tcrchar_tcrfloat_tcrfloat32_tcrpfloat_tcrpfloat32_tcrpint_tcrpint8_tcrpint16_tcrpint64_tcrilsigptr_tcrfastFunc_tcrarray_tcr_niceseq_base_tcrmeasureproduct_tcrmeasureinverse_tcrmeasureone_tcrtuple2_tcrtuple3_tcrtuple4_tcrtuple5_tcrtuple6_tcrtuple7_tcrtuple8_tcrtcref_IQueryabletcref_IObservabletcref_IObserverfslib_IEvent2_tcrfslib_IDelegateEvent_tcrsystem_Nullable_tcrefsystem_GenericIComparable_tcrefsystem_GenericIEquatable_tcrefsystem_IndexOutOfRangeException_tcrefnativeint_tyunativeint_tyint32_tyint16_tyint64_tyuint16_tyuint32_tyuint64_tysbyte_tybyte_tystring_tyobj_tyunit_tyexn_tychar_tydecimal_tyfloat_tyfloat32_tysystem_Array_typsystem_Object_typsystem_IDisposable_typsystem_Value_typsystem_Delegate_typsystem_MulticastDelegate_typsystem_Enum_typsystem_Exception_typsystem_Int32_typsystem_String_typsystem_Type_typsystem_TypedReference_tcrefsystem_ArgIterator_tcrefsystem_Decimal_tcrefsystem_SByte_tcrefsystem_Int16_tcrefsystem_Int32_tcrefsystem_Int64_tcrefsystem_IntPtr_tcrefsystem_Bool_tcrefsystem_Char_tcrefsystem_Byte_tcrefsystem_UInt16_tcrefsystem_UInt32_tcrefsystem_UInt64_tcrefsystem_UIntPtr_tcrefsystem_Single_tcrefsystem_Double_tcrefsystem_RuntimeArgumentHandle_tcrefsystem_RuntimeTypeHandle_typsystem_RuntimeMethodHandle_typsystem_MarshalByRefObject_tcrefsystem_MarshalByRefObject_typsystem_Reflection_MethodInfo_typsystem_Array_tcrefsystem_Object_tcrefsystem_Void_tcrefsystem_LinqExpression_tcrefmk_IComparable_tymk_IStructuralComparable_tymk_IStructuralEquatable_tytcref_System_Collections_IComparertcref_System_Collections_IEqualityComparertcref_System_Collections_Generic_IEqualityComparertcref_System_Collections_Generic_Dictionarytcref_System_IComparabletcref_System_IStructuralComparabletcref_System_IStructuralEquatabletcref_LanguagePrimitivesattrib_CustomOperationAttributeattrib_ProjectionParameterAttributeattrib_AttributeUsageAttributeattrib_ParamArrayAttributeattrib_IDispatchConstantAttributeattrib_IUnknownConstantAttributeattrib_SystemObsoleteattrib_DllImportAttributeattrib_CompiledNameAttributeattrib_NonSerializedAttributeattrib_AutoSerializableAttributeattrib_StructLayoutAttributeattrib_TypeForwardedToAttributeattrib_ComVisibleAttributeattrib_ComImportAttributeattrib_FieldOffsetAttributeattrib_MarshalAsAttributeattrib_InAttributeattrib_OutAttributeattrib_OptionalAttributeattrib_ThreadStaticAttributeattrib_SpecialNameAttributeattrib_VolatileFieldAttributeattrib_ContextStaticAttributeattrib_FlagsAttributeattrib_DefaultMemberAttributeattrib_DebuggerDisplayAttributeattrib_DebuggerTypeProxyAttributeattrib_PreserveSigAttributeattrib_MethodImplAttributetcref_System_Collections_Generic_IListtcref_System_Collections_Generic_ICollectiontcref_System_Collections_Generic_IEnumerabletcref_System_Collections_IEnumerabletcref_System_Collections_Generic_IEnumeratortcref_System_Attributeattrib_RequireQualifiedAccessAttributeattrib_EntryPointAttributeattrib_DefaultAugmentationAttributeattrib_CompilerMessageAttributeattrib_ExperimentalAttributeattrib_UnverifiableAttributeattrib_LiteralAttributeattrib_ConditionalAttributeattrib_OptionalArgumentAttributeattrib_RequiresExplicitTypeArgumentsAttributeattrib_DefaultValueAttributeattrib_ClassAttributeattrib_InterfaceAttributeattrib_StructAttributeattrib_ReflectedDefinitionAttributeattrib_AutoOpenAttributeattrib_CompilationRepresentationAttributeattrib_CompilationArgumentCountsAttributeattrib_CompilationMappingAttributeattrib_CLIEventAttributeattrib_AllowNullLiteralAttributeattrib_CLIMutableAttributeattrib_NoComparisonAttributeattrib_NoEqualityAttributeattrib_CustomComparisonAttributeattrib_CustomEqualityAttributeattrib_EqualityConditionalOnAttributeattrib_ComparisonConditionalOnAttributeattrib_ReferenceEqualityAttributeattrib_StructuralEqualityAttributeattrib_StructuralComparisonAttributeattrib_SealedAttributeattrib_AbstractClassAttributeattrib_GeneralizableValueAttributeattrib_MeasureAttributeattrib_MeasureableAttributeattrib_NoDynamicInvocationAttributeattrib_SecurityAttributeattrib_SecurityCriticalAttributeattrib_SecuritySafeCriticalAttributecons_ucrefnil_ucrefseq_vrefand_vrefand2_vrefaddrof_vrefaddrof2_vrefor_vrefor2_vrefgeneric_equality_er_inner_vrefgeneric_equality_per_inner_vrefgeneric_equality_withc_inner_vrefgeneric_comparison_inner_vrefgeneric_comparison_withc_inner_vrefgeneric_hash_inner_vrefgeneric_hash_withc_inner_vrefreference_equality_inner_vrefcompare_operator_vrefequals_operator_vrefequals_nullable_operator_vrefnullable_equals_nullable_operator_vrefnullable_equals_operator_vrefnot_equals_operator_vrefless_than_operator_vrefless_than_or_equals_operator_vrefgreater_than_operator_vrefgreater_than_or_equals_operator_vrefbitwise_or_vrefbitwise_and_vrefbitwise_xor_vrefbitwise_unary_not_vrefbitwise_shift_left_vrefbitwise_shift_right_vrefunchecked_addition_vrefunchecked_unary_plus_vrefunchecked_unary_minus_vrefunchecked_unary_not_vrefunchecked_subtraction_vrefunchecked_multiply_vrefunchecked_defaultof_vrefseq_inforeraise_inforeraise_vreftypeof_infotypeof_vrefmethodhandleof_infomethodhandleof_vrefsizeof_vreftypedefof_infotypedefof_vrefenum_vrefnew_decimal_infogeneric_comparison_withc_outer_infogeneric_equality_er_outer_infogeneric_equality_withc_outer_infogeneric_hash_withc_outer_infoequals_operator_infoquery_source_vrefquery_value_vrefquery_run_value_vrefquery_run_enumerable_vrefquery_for_vrefquery_yield_vrefquery_yield_from_vrefquery_select_vrefquery_where_vrefquery_zero_vrefquery_builder_tcrefgeneric_hash_withc_tuple2_vrefgeneric_hash_withc_tuple3_vrefgeneric_hash_withc_tuple4_vrefgeneric_hash_withc_tuple5_vrefgeneric_equals_withc_tuple2_vrefgeneric_equals_withc_tuple3_vrefgeneric_equals_withc_tuple4_vrefgeneric_equals_withc_tuple5_vrefgeneric_compare_withc_tuple2_vrefgeneric_compare_withc_tuple3_vrefgeneric_compare_withc_tuple4_vrefgeneric_compare_withc_tuple5_vrefgeneric_equality_withc_outer_vrefcreate_instance_infocreate_event_infounbox_vrefunbox_fast_vrefistype_vrefistype_fast_vrefget_generic_comparer_infoget_generic_er_equality_comparer_infoget_generic_per_equality_comparer_infounbox_infounbox_fast_infoistype_infoistype_fast_infodispose_inforange_op_vrefrange_int32_op_vrefarray_get_vrefarray2D_get_vrefarray3D_get_vrefarray4D_get_vrefseq_collect_vrefseq_collect_infoseq_using_infoseq_using_vrefseq_delay_infoseq_delay_vrefseq_append_infoseq_append_vrefseq_generated_infoseq_generated_vrefseq_finally_infoseq_finally_vrefseq_of_functions_infoseq_of_functions_vrefseq_to_array_infoseq_to_list_infoseq_map_infoseq_map_vrefseq_singleton_infoseq_singleton_vrefseq_empty_infoseq_empty_vrefnew_format_inforaise_infolazy_force_infolazy_create_infoarray_get_infoarray2D_get_infoarray3D_get_infoarray4D_get_infounpickle_quoted_infocast_quotation_infolift_value_infoquery_source_as_enum_infonew_query_source_infofail_init_infofail_static_init_infocheck_this_infoquote_to_linq_lambda_infosprintf_vrefsplice_expr_vrefsplice_raw_expr_vrefnew_format_vrefmkSysTyconRefsuppressed_typesmemoize_fileknownFSharpCoreModulesilg@ilxPubCloEnv@directoryToResolveRelativePaths@fslibCcu@sysCcu@using40environment@better_tcref_map@refcell_tcr_canon@option_tcr_canon@choice2_tcr@choice3_tcr@choice4_tcr@choice5_tcr@choice6_tcr@choice7_tcr@list_tcr_canon@set_tcr_canon@map_tcr_canon@lazy_tcr_canon@unionCaseRefEq@valRefEq@refcell_tcr_nice@option_tcr_nice@list_tcr_nice@lazy_tcr_nice@format_tcr@expr_tcr@raw_expr_tcr@nativeint_tcr@int32_tcr@int16_tcr@int64_tcr@uint16_tcr@uint32_tcr@uint64_tcr@sbyte_tcr@decimal_tcr@date_tcr@pdecimal_tcr@byte_tcr@bool_tcr@unit_tcr_canon@unit_tcr_nice@exn_tcr@char_tcr@float_tcr@float32_tcr@pfloat_tcr@pfloat32_tcr@pint_tcr@pint8_tcr@pint16_tcr@pint64_tcr@byref_tcr@nativeptr_tcr@ilsigptr_tcr@fastFunc_tcr@array_tcr_nice@seq_tcr@seq_base_tcr@measureproduct_tcr@measureinverse_tcr@measureone_tcr@il_arr1_tcr@il_arr2_tcr@il_arr3_tcr@il_arr4_tcr@tuple1_tcr@tuple2_tcr@tuple3_tcr@tuple4_tcr@tuple5_tcr@tuple6_tcr@tuple7_tcr@tuple8_tcr@tcref_IQueryable@tcref_IObservable@tcref_IObserver@fslib_IEvent2_tcr@fslib_IDelegateEvent_tcr@system_Nullable_tcref@system_GenericIComparable_tcref@system_GenericIEquatable_tcref@system_IndexOutOfRangeException_tcref@int_ty@nativeint_ty@unativeint_ty@int32_ty@int16_ty@int64_ty@uint16_ty@uint32_ty@uint64_ty@sbyte_ty@byte_ty@bool_ty@string_ty@obj_ty@unit_ty@exn_ty@char_ty@decimal_ty@float_ty@float32_ty@system_Array_typ@system_Object_typ@system_IDisposable_typ@system_Value_typ@system_Delegate_typ@system_MulticastDelegate_typ@system_Enum_typ@system_Exception_typ@system_Int32_typ@system_String_typ@system_Type_typ@system_TypedReference_tcref@system_ArgIterator_tcref@system_Decimal_tcref@system_SByte_tcref@system_Int16_tcref@system_Int32_tcref@system_Int64_tcref@system_IntPtr_tcref@system_Bool_tcref@system_Char_tcref@system_Byte_tcref@system_UInt16_tcref@system_UInt32_tcref@system_UInt64_tcref@system_UIntPtr_tcref@system_Single_tcref@system_Double_tcref@system_RuntimeArgumentHandle_tcref@system_RuntimeTypeHandle_typ@system_RuntimeMethodHandle_typ@system_MarshalByRefObject_tcref@system_MarshalByRefObject_typ@system_Reflection_MethodInfo_typ@system_Array_tcref@system_Object_tcref@system_Void_tcref@system_LinqExpression_tcref@mk_IComparable_ty@mk_IStructuralComparable_ty@mk_IStructuralEquatable_ty@mk_IComparer_ty@mk_IEqualityComparer_ty@tcref_System_Collections_IComparer@tcref_System_Collections_IEqualityComparer@tcref_System_Collections_Generic_IEqualityComparer@tcref_System_Collections_Generic_Dictionary@tcref_System_IComparable@tcref_System_IStructuralComparable@tcref_System_IStructuralEquatable@tcref_LanguagePrimitives@attrib_CustomOperationAttribute@attrib_ProjectionParameterAttribute@attrib_AttributeUsageAttribute@attrib_ParamArrayAttribute@attrib_IDispatchConstantAttribute@attrib_IUnknownConstantAttribute@attrib_SystemObsolete@attrib_DllImportAttribute@attrib_CompiledNameAttribute@attrib_NonSerializedAttribute@attrib_AutoSerializableAttribute@attrib_StructLayoutAttribute@attrib_TypeForwardedToAttribute@attrib_ComVisibleAttribute@attrib_ComImportAttribute@attrib_FieldOffsetAttribute@attrib_MarshalAsAttribute@attrib_InAttribute@attrib_OutAttribute@attrib_OptionalAttribute@attrib_ThreadStaticAttribute@attrib_SpecialNameAttribute@attrib_VolatileFieldAttribute@attrib_ContextStaticAttribute@attrib_FlagsAttribute@attrib_DefaultMemberAttribute@attrib_DebuggerDisplayAttribute@attrib_DebuggerTypeProxyAttribute@attrib_PreserveSigAttribute@attrib_MethodImplAttribute@tcref_System_Collections_Generic_IList@tcref_System_Collections_Generic_ICollection@tcref_System_Collections_Generic_IEnumerable@tcref_System_Collections_IEnumerable@tcref_System_Collections_Generic_IEnumerator@tcref_System_Attribute@attrib_RequireQualifiedAccessAttribute@attrib_EntryPointAttribute@attrib_DefaultAugmentationAttribute@attrib_CompilerMessageAttribute@attrib_ExperimentalAttribute@attrib_UnverifiableAttribute@attrib_LiteralAttribute@attrib_ConditionalAttribute@attrib_OptionalArgumentAttribute@attrib_RequiresExplicitTypeArgumentsAttribute@attrib_DefaultValueAttribute@attrib_ClassAttribute@attrib_InterfaceAttribute@attrib_StructAttribute@attrib_ReflectedDefinitionAttribute@attrib_AutoOpenAttribute@attrib_CompilationRepresentationAttribute@attrib_CompilationArgumentCountsAttribute@attrib_CompilationMappingAttribute@attrib_CLIEventAttribute@attrib_AllowNullLiteralAttribute@attrib_CLIMutableAttribute@attrib_NoComparisonAttribute@attrib_NoEqualityAttribute@attrib_CustomComparisonAttribute@attrib_CustomEqualityAttribute@attrib_EqualityConditionalOnAttribute@attrib_ComparisonConditionalOnAttribute@attrib_ReferenceEqualityAttribute@attrib_StructuralEqualityAttribute@attrib_StructuralComparisonAttribute@attrib_SealedAttribute@attrib_AbstractClassAttribute@attrib_GeneralizableValueAttribute@attrib_MeasureAttribute@attrib_MeasureableAttribute@attrib_NoDynamicInvocationAttribute@attrib_SecurityAttribute@attrib_SecurityCriticalAttribute@attrib_SecuritySafeCriticalAttribute@cons_ucref@nil_ucref@seq_vref@and_vref@and2_vref@addrof_vref@addrof2_vref@or_vref@or2_vref@generic_equality_er_inner_vref@generic_equality_per_inner_vref@generic_equality_withc_inner_vref@generic_comparison_inner_vref@generic_comparison_withc_inner_vref@generic_hash_inner_vref@generic_hash_withc_inner_vref@reference_equality_inner_vref@compare_operator_vref@equals_operator_vref@equals_nullable_operator_vref@nullable_equals_nullable_operator_vref@nullable_equals_operator_vref@not_equals_operator_vref@less_than_operator_vref@less_than_or_equals_operator_vref@greater_than_operator_vref@greater_than_or_equals_operator_vref@bitwise_or_vref@bitwise_and_vref@bitwise_xor_vref@bitwise_unary_not_vref@bitwise_shift_left_vref@bitwise_shift_right_vref@unchecked_addition_vref@unchecked_unary_plus_vref@unchecked_unary_minus_vref@unchecked_unary_not_vref@unchecked_subtraction_vref@unchecked_multiply_vref@unchecked_defaultof_vref@seq_info@reraise_info@reraise_vref@typeof_info@typeof_vref@methodhandleof_info@methodhandleof_vref@sizeof_vref@typedefof_info@typedefof_vref@enum_vref@new_decimal_info@generic_comparison_withc_outer_info@generic_equality_er_outer_info@generic_equality_withc_outer_info@generic_hash_withc_outer_info@equals_operator_info@query_source_vref@query_value_vref@query_run_value_vref@query_run_enumerable_vref@query_for_vref@query_yield_vref@query_yield_from_vref@query_select_vref@query_where_vref@query_zero_vref@query_builder_tcref@generic_hash_withc_tuple2_vref@generic_hash_withc_tuple3_vref@generic_hash_withc_tuple4_vref@generic_hash_withc_tuple5_vref@generic_equals_withc_tuple2_vref@generic_equals_withc_tuple3_vref@generic_equals_withc_tuple4_vref@generic_equals_withc_tuple5_vref@generic_compare_withc_tuple2_vref@generic_compare_withc_tuple3_vref@generic_compare_withc_tuple4_vref@generic_compare_withc_tuple5_vref@generic_equality_withc_outer_vref@create_instance_info@create_event_info@unbox_vref@unbox_fast_vref@istype_vref@istype_fast_vref@get_generic_comparer_info@get_generic_er_equality_comparer_info@get_generic_per_equality_comparer_info@unbox_info@unbox_fast_info@istype_info@istype_fast_info@dispose_info@range_op_vref@range_int32_op_vref@array_get_vref@array2D_get_vref@array3D_get_vref@array4D_get_vref@seq_collect_vref@seq_collect_info@seq_using_info@seq_using_vref@seq_delay_info@seq_delay_vref@seq_append_info@seq_append_vref@seq_generated_info@seq_generated_vref@seq_finally_info@seq_finally_vref@seq_of_functions_info@seq_of_functions_vref@seq_to_array_info@seq_to_list_info@seq_map_info@seq_map_vref@seq_singleton_info@seq_singleton_vref@seq_empty_info@seq_empty_vref@new_format_info@raise_info@lazy_force_info@lazy_create_info@array_get_info@array2D_get_info@array3D_get_info@array4D_get_info@unpickle_quoted_info@cast_quotation_info@lift_value_info@query_source_as_enum_info@new_query_source_info@fail_init_info@fail_static_init_info@check_this_info@quote_to_linq_lambda_info@sprintf_vref@splice_expr_vref@splice_raw_expr_vref@new_format_vref@mkSysTyconRef@suppressed_types@memoize_file@knownIntrinsics@knownFSharpCoreModules@get_ilgget_ilxPubCloEnvget_directoryToResolveRelativePathsget_fslibCcuget_sysCcuget_using40environmentget_better_tcref_mapget_refcell_tcr_canonget_option_tcr_canonget_choice2_tcrget_choice3_tcrget_choice4_tcrget_choice5_tcrget_choice6_tcrget_choice7_tcrget_list_tcr_canonget_set_tcr_canonget_map_tcr_canonget_lazy_tcr_canonget_unionCaseRefEqget_valRefEqget_refcell_tcr_niceget_option_tcr_niceget_list_tcr_niceget_lazy_tcr_niceget_format_tcrget_expr_tcrget_raw_expr_tcrget_nativeint_tcrget_int32_tcrget_int16_tcrget_int64_tcrget_uint16_tcrget_uint32_tcrget_uint64_tcrget_sbyte_tcrget_decimal_tcrget_date_tcrget_pdecimal_tcrget_byte_tcrget_bool_tcrget_unit_tcr_canonget_unit_tcr_niceget_exn_tcrget_char_tcrget_float_tcrget_float32_tcrget_pfloat_tcrget_pfloat32_tcrget_pint_tcrget_pint8_tcrget_pint16_tcrget_pint64_tcrget_byref_tcrget_nativeptr_tcrget_ilsigptr_tcrget_fastFunc_tcrget_array_tcr_niceget_seq_tcrget_seq_base_tcrget_measureproduct_tcrget_measureinverse_tcrget_measureone_tcrget_il_arr1_tcrget_il_arr2_tcrget_il_arr3_tcrget_il_arr4_tcrget_tuple1_tcrget_tuple2_tcrget_tuple3_tcrget_tuple4_tcrget_tuple5_tcrget_tuple6_tcrget_tuple7_tcrget_tuple8_tcrget_tcref_IQueryableget_tcref_IObservableget_tcref_IObserverget_fslib_IEvent2_tcrget_fslib_IDelegateEvent_tcrget_system_Nullable_tcrefget_system_GenericIComparable_tcrefget_system_GenericIEquatable_tcrefget_system_IndexOutOfRangeException_tcrefget_int_tyget_nativeint_tyget_unativeint_tyget_int32_tyget_int16_tyget_int64_tyget_uint16_tyget_uint32_tyget_uint64_tyget_sbyte_tyget_byte_tyget_bool_tyget_string_tyget_obj_tyget_unit_tyget_exn_tyget_char_tyget_decimal_tyget_float_tyget_float32_tyget_system_Array_typget_system_Object_typget_system_IDisposable_typget_system_Value_typget_system_Delegate_typget_system_MulticastDelegate_typget_system_Enum_typget_system_Exception_typget_system_Int32_typget_system_String_typget_system_Type_typget_system_TypedReference_tcrefget_system_ArgIterator_tcrefget_system_Decimal_tcrefget_system_SByte_tcrefget_system_Int16_tcrefget_system_Int32_tcrefget_system_Int64_tcrefget_system_IntPtr_tcrefget_system_Bool_tcrefget_system_Char_tcrefget_system_Byte_tcrefget_system_UInt16_tcrefget_system_UInt32_tcrefget_system_UInt64_tcrefget_system_UIntPtr_tcrefget_system_Single_tcrefget_system_Double_tcrefget_system_RuntimeArgumentHandle_tcrefget_system_RuntimeTypeHandle_typget_system_RuntimeMethodHandle_typget_system_MarshalByRefObject_tcrefget_system_MarshalByRefObject_typget_system_Reflection_MethodInfo_typget_system_Array_tcrefget_system_Object_tcrefget_system_Void_tcrefget_system_LinqExpression_tcrefget_mk_IComparable_tyget_mk_IStructuralComparable_tyget_mk_IStructuralEquatable_tyget_mk_IComparer_tyget_mk_IEqualityComparer_tyget_tcref_System_Collections_IComparerget_tcref_System_Collections_IEqualityComparerget_tcref_System_Collections_Generic_IEqualityComparerget_tcref_System_Collections_Generic_Dictionaryget_tcref_System_IComparableget_tcref_System_IStructuralComparableget_tcref_System_IStructuralEquatableget_tcref_LanguagePrimitivesget_attrib_CustomOperationAttributeget_attrib_ProjectionParameterAttributeget_attrib_AttributeUsageAttributeget_attrib_ParamArrayAttributeget_attrib_IDispatchConstantAttributeget_attrib_IUnknownConstantAttributeget_attrib_SystemObsoleteget_attrib_DllImportAttributeget_attrib_CompiledNameAttributeget_attrib_NonSerializedAttributeget_attrib_AutoSerializableAttributeget_attrib_StructLayoutAttributeget_attrib_TypeForwardedToAttributeget_attrib_ComVisibleAttributeget_attrib_ComImportAttributeget_attrib_FieldOffsetAttributeget_attrib_MarshalAsAttributeget_attrib_InAttributeget_attrib_OutAttributeget_attrib_OptionalAttributeget_attrib_ThreadStaticAttributeget_attrib_SpecialNameAttributeget_attrib_VolatileFieldAttributeget_attrib_ContextStaticAttributeget_attrib_FlagsAttributeget_attrib_DefaultMemberAttributeget_attrib_DebuggerDisplayAttributeget_attrib_DebuggerTypeProxyAttributeget_attrib_PreserveSigAttributeget_attrib_MethodImplAttributeget_tcref_System_Collections_Generic_IListget_tcref_System_Collections_Generic_ICollectionget_tcref_System_Collections_Generic_IEnumerableget_tcref_System_Collections_IEnumerableget_tcref_System_Collections_Generic_IEnumeratorget_tcref_System_Attributeget_attrib_RequireQualifiedAccessAttributeget_attrib_EntryPointAttributeget_attrib_DefaultAugmentationAttributeget_attrib_CompilerMessageAttributeget_attrib_ExperimentalAttributeget_attrib_UnverifiableAttributeget_attrib_LiteralAttributeget_attrib_ConditionalAttributeget_attrib_OptionalArgumentAttributeget_attrib_RequiresExplicitTypeArgumentsAttributeget_attrib_DefaultValueAttributeget_attrib_ClassAttributeget_attrib_InterfaceAttributeget_attrib_StructAttributeget_attrib_ReflectedDefinitionAttributeget_attrib_AutoOpenAttributeget_attrib_CompilationRepresentationAttributeget_attrib_CompilationArgumentCountsAttributeget_attrib_CompilationMappingAttributeget_attrib_CLIEventAttributeget_attrib_AllowNullLiteralAttributeget_attrib_CLIMutableAttributeget_attrib_NoComparisonAttributeget_attrib_NoEqualityAttributeget_attrib_CustomComparisonAttributeget_attrib_CustomEqualityAttributeget_attrib_EqualityConditionalOnAttributeget_attrib_ComparisonConditionalOnAttributeget_attrib_ReferenceEqualityAttributeget_attrib_StructuralEqualityAttributeget_attrib_StructuralComparisonAttributeget_attrib_SealedAttributeget_attrib_AbstractClassAttributeget_attrib_GeneralizableValueAttributeget_attrib_MeasureAttributeget_attrib_MeasureableAttributeget_attrib_NoDynamicInvocationAttributeget_attrib_SecurityAttributeget_attrib_SecurityCriticalAttributeget_attrib_SecuritySafeCriticalAttributeget_cons_ucrefget_nil_ucrefget_seq_vrefget_and_vrefget_and2_vrefget_addrof_vrefget_addrof2_vrefget_or_vrefget_or2_vrefget_generic_equality_er_inner_vrefget_generic_equality_per_inner_vrefget_generic_equality_withc_inner_vrefget_generic_comparison_inner_vrefget_generic_comparison_withc_inner_vrefget_generic_hash_inner_vrefget_generic_hash_withc_inner_vrefget_reference_equality_inner_vrefget_compare_operator_vrefget_equals_operator_vrefget_equals_nullable_operator_vrefget_nullable_equals_nullable_operator_vrefget_nullable_equals_operator_vrefget_not_equals_operator_vrefget_less_than_operator_vrefget_less_than_or_equals_operator_vrefget_greater_than_operator_vrefget_greater_than_or_equals_operator_vrefget_bitwise_or_vrefget_bitwise_and_vrefget_bitwise_xor_vrefget_bitwise_unary_not_vrefget_bitwise_shift_left_vrefget_bitwise_shift_right_vrefget_unchecked_addition_vrefget_unchecked_unary_plus_vrefget_unchecked_unary_minus_vrefget_unchecked_unary_not_vrefget_unchecked_subtraction_vrefget_unchecked_multiply_vrefget_unchecked_defaultof_vrefget_seq_infoget_reraise_infoget_reraise_vrefget_typeof_infoget_typeof_vrefget_methodhandleof_infoget_methodhandleof_vrefget_sizeof_vrefget_typedefof_infoget_typedefof_vrefget_enum_vrefget_new_decimal_infoget_generic_comparison_withc_outer_infoget_generic_equality_er_outer_infoget_generic_equality_withc_outer_infoget_generic_hash_withc_outer_infoget_equals_operator_infoget_query_source_vrefget_query_value_vrefget_query_run_value_vrefget_query_run_enumerable_vrefget_query_for_vrefget_query_yield_vrefget_query_yield_from_vrefget_query_select_vrefget_query_where_vrefget_query_zero_vrefget_query_builder_tcrefget_generic_hash_withc_tuple2_vrefget_generic_hash_withc_tuple3_vrefget_generic_hash_withc_tuple4_vrefget_generic_hash_withc_tuple5_vrefget_generic_equals_withc_tuple2_vrefget_generic_equals_withc_tuple3_vrefget_generic_equals_withc_tuple4_vrefget_generic_equals_withc_tuple5_vrefget_generic_compare_withc_tuple2_vrefget_generic_compare_withc_tuple3_vrefget_generic_compare_withc_tuple4_vrefget_generic_compare_withc_tuple5_vrefget_generic_equality_withc_outer_vrefget_create_instance_infoget_create_event_infoget_unbox_vrefget_unbox_fast_vrefget_istype_vrefget_istype_fast_vrefget_get_generic_comparer_infoget_get_generic_er_equality_comparer_infoget_get_generic_per_equality_comparer_infoget_unbox_infoget_unbox_fast_infoget_istype_infoget_istype_fast_infoget_dispose_infoget_range_op_vrefget_range_int32_op_vrefget_array_get_vrefget_array2D_get_vrefget_array3D_get_vrefget_array4D_get_vrefget_seq_collect_vrefget_seq_collect_infoget_seq_using_infoget_seq_using_vrefget_seq_delay_infoget_seq_delay_vrefget_seq_append_infoget_seq_append_vrefget_seq_generated_infoget_seq_generated_vrefget_seq_finally_infoget_seq_finally_vrefget_seq_of_functions_infoget_seq_of_functions_vrefget_seq_to_array_infoget_seq_to_list_infoget_seq_map_infoget_seq_map_vrefget_seq_singleton_infoget_seq_singleton_vrefget_seq_empty_infoget_seq_empty_vrefget_new_format_infoget_raise_infoget_lazy_force_infoget_lazy_create_infoget_array_get_infoget_array2D_get_infoget_array3D_get_infoget_array4D_get_infoget_unpickle_quoted_infoget_cast_quotation_infoget_lift_value_infoget_query_source_as_enum_infoget_new_query_source_infoget_fail_init_infoget_fail_static_init_infoget_check_this_infoget_quote_to_linq_lambda_infoget_sprintf_vrefget_splice_expr_vrefget_splice_raw_expr_vrefget_new_format_vrefget_mkSysTyconRefget_suppressed_typesget_memoize_fileget_knownIntrinsicsget_knownFSharpCoreModulesfslib_MFLanguagePrimitives_nlereffslib_MFIntrinsicOperators_nlereffslib_MFIntrinsicFunctions_nlereffslib_MFHashCompare_nlereffslib_MFOperators_nlereffslib_MFOperatorIntrinsics_nlereffslib_MFOperatorsUnchecked_nlereffslib_MFOperatorsChecked_nlereffslib_MFExtraTopLevelOperators_nlereffslib_MFNullableOperators_nlereffslib_MFQueryRunExtensions_nlereffslib_MFQueryRunExtensionsLowPriority_nlereffslib_MFQueryRunExtensionsHighPriority_nlereffslib_MFSeqModule_nlereffslib_MFListModule_nlereffslib_MFArrayModule_nlereffslib_MFArray2DModule_nlereffslib_MFArray3DModule_nlereffslib_MFArray4DModule_nlereffslib_MFSetModule_nlereffslib_MFMapModule_nlereffslib_MFStringModule_nlereffslib_MFOptionModule_nlereffslib_MFRuntimeHelpers_nlerefsysCoreOperatorsNameCoreOperatorsCheckedNameControlNameLinqNameCollectionsNameLanguagePrimitivesNameCompilerServicesNameLinqRuntimeHelpersNameRuntimeHelpersNameExtraTopLevelOperatorsNameHashCompareNameQuotationsNameOperatorsPathOperatorsCheckedPathControlPathLinqPathCollectionsPathLanguagePrimitivesPathHashComparePathCompilerServicesPathLinqRuntimeHelpersPathRuntimeHelpersPathQuotationsPathExtraTopLevelOperatorsPathRootPathArrayCorePathArrayLinqPathArrayControlPathArrayCollectionsPathArrayget_CoreOperatorsNameget_CoreOperatorsCheckedNameget_ControlNameget_LinqNameget_CollectionsNameget_LanguagePrimitivesNameget_CompilerServicesNameget_LinqRuntimeHelpersNameget_RuntimeHelpersNameget_ExtraTopLevelOperatorsNameget_HashCompareNameget_QuotationsNameget_OperatorsPathget_OperatorsCheckedPathget_ControlPathget_LinqPathget_CollectionsPathget_LanguagePrimitivesPathget_HashComparePathget_CompilerServicesPathget_LinqRuntimeHelpersPathget_RuntimeHelpersPathget_QuotationsPathget_ExtraTopLevelOperatorsPathget_RootPathArrayget_CorePathArrayget_LinqPathArrayget_ControlPathArrayget_CollectionsPathArrayenvRange@34vara@36varb@37varc@38vard@39vare@40varf@41varg@42varaTy@44varbTy@45varcTy@46vardTy@47vareTy@48CoreOperatorsName@61CoreOperatorsCheckedName@62ControlName@63LinqName@64CollectionsName@65LanguagePrimitivesName@66CompilerServicesName@67LinqRuntimeHelpersName@68RuntimeHelpersName@69ExtraTopLevelOperatorsName@70HashCompareName@71QuotationsName@73OperatorsPath@75OperatorsCheckedPath@76ControlPath@77LinqPath@78CollectionsPath@79LanguagePrimitivesPath@80HashComparePath@81CompilerServicesPath@82LinqRuntimeHelpersPath@83RuntimeHelpersPath@84QuotationsPath@85ExtraTopLevelOperatorsPath@86RootPathArray@88CorePathArray@89LinqPathArray@90ControlPathArray@91CollectionsPathArray@92newUniquei@48-1newStampi@53-2globalNngglobalStableNameGeneratorunassignedTyparNametaccessPublictaccessInternalFSharpOptimizationDataResourceNameFSharpSignatureDataResourceNameget_newUniqueget_i@48-1get_newStampget_i@53-2get_globalNngget_globalStableNameGeneratormustinlineget_unassignedTyparNameKeyTyconByDemangledNameAndArityKeyTyconByAccessNamesgetNameOfScopeRefmangledTextOfCompPathmangledPathOfCompPathpublicPathOfCompPathparentCompPathmkNestedCPathdefinitionLocationOfProvidedItemCompareTo$cont@1873-35CompareTo$cont@1873-36CompareTo$cont@3144-37CompareTo$cont@3144-38objCastGetHashCode$cont@3144-11op_EqualityEquals$cont@3144-9CompareTo$cont@3670-39CompareTo$cont@3670-40top@888raccilTypeRefForCompilationPath@887resf@474f@483-31f@483-32findAttrib@1563-2tryResolveNestedTypeOf@2358parentEntityinjectNamespacesFromIToJ@2403tryResolvePrefix@2387resolverstryResolvePrefixes@2425tryForwardPrefixPath@2446loop@3271-31Equals$cont@3144-10typeOfValtypesOfValsnameOfValarityOfValmapTImplFilefmapTImplFilemapAccImplFilefoldTImplFiletyparEqtyparRefEqvalEqccuEqmv1mv2|ValDeref|mkRecdFieldRefmkUnionCaseRefERefLocalERefNonLocalERefNonLocalPreResolved|ERefLocal|ERefNonLocal|mkLocalTyconRefmkNonLocalEntityRefmkNestedNonLocalEntityRefmkNonLocalTyconRefmkNonLocalTyconRefPreResolvedmkNestedUnionCaseRefmkNestedRecdFieldRefmkModuleUnionCaseRefVRefLocalVRefNonLocalVRefNonLocalPreResolved|VRefLocal|VRefNonLocal|mkNonLocalValRefmkNonLocalValRefPreResolvedccuOfValRefccuOfTyconRefmkTyparTycopyTyparcopyTyparstryShortcutSolvedUnitParstripUnitEqnsAuxstripTyparEqnsAuxstripTyparEqnsstripUnitEqnsmkLocalValRefmkLocalModRefmkLocalEntityRefmkNonLocalCcuRootEntityRefmkNestedValRefrescopePubPathToParentrescopePubPathvalRefInThisAssemblytyconRefUsesLocalXmlDocentityRefInThisAssemblyloop@3983-32y1y2len1arrayPathEqnonLocalRefEqnonLocalRefDefinitelyNotEqpubPathEqfslibRefEqnlr1fslibEntityRefEqeref1eref2fslibValRefEqprimEntityRefEqprimUnionCaseRefEqprimValRefEqstringOfAccessdemangledPathOfCompPathfullCompPathOfModuleOrNamespaceloop@4112-33canAccessCompPathFromcanAccessFromOneOfcpathscpathTestcanAccessFromcanAccessFromEverywherecanAccessFromSomewhereisLessAccessibleaccessSubstPathsnewPatholdPathcompPathOfCcuget_taccessPublictaccessPrivateaccessPathget_taccessInternalcombineAccessNewFreeVarsCacheMakeUnionCasesTableucsMakeRecdFieldsTableMakeUnionCasesMakeUnionReprNewTyparisFromErroreqDepcompDepNewRigidTypardocOptionNewModuleOrNamespaceTypemkindNewEmptyModuleOrNamespaceTypeNewExnisVolatilepattribssecretNewTyconusesPrefixDisplaypreEstablishedHasDefaultCtorhasSelfReferentialCtorNewILTyconnlpathGetHashCode$cont@4265-12mtypeNewValrecValInfospecialReprbaseOrThisinlineInfoisModuleOrMemberBindingisIncrClassSpecialMemberisTyFuncallowTypeInstNewCcuContentsNewModifiedTyconNewModifiedModuleOrNamespaceNewModifiedValNewClonedModuleOrNamespaceNewClonedTyconcombineMapscombineMultiMapscombineModuleOrNamespaceTypesmty1mty2combineEntityListcombineEntitesentity1entity2combineModuleOrNamespaceTypeListget_FSharpOptimizationDataResourceNameget_FSharpSignatureDataResourceNamePseudoValIsPseudoValAlwaysIsAlwaysOptionalNeverIsNever_unique_PseudoVal_unique_Always_unique_Optional_unique_Neverget_PseudoValget_IsPseudoValget_Alwaysget_IsAlwaysget_Optionalget_Neverget_IsNeverIsValInRecScopeValNotInRecScopeIsValNotInRecScope_unique_ValNotInRecScopeNewValInRecScopeget_IsValInRecScopeget_ValNotInRecScopeget_IsValNotInRecScopeImmutableIsImmutableMutableIsMutable_unique_Immutable_unique_Mutableget_Immutableget_IsImmutableget_Mutableget_IsMutableCtorThisValIsCtorThisValBaseValIsBaseValNormalValIsNormalValMemberThisValIsMemberThisVal_unique_CtorThisVal_unique_BaseVal_unique_NormalVal_unique_MemberThisValget_CtorThisValget_IsCtorThisValget_BaseValget_IsBaseValget_NormalValget_IsNormalValget_MemberThisValget_IsMemberThisValBaseOrThisInfoIsCompilerGeneratedInlineInfoMutabilityInfoIsMemberOrModuleBindingSetIsMemberOrModuleBindingIsIncrClassSpecialMemberIsTypeFunctionRecursiveValInfoMakesNoCriticalTailcallsSetMakesNoCriticalTailcallsPermitsExplicitTypeInstantiationHasBeenReferencedSetHasBeenReferencedIsCompiledAsStaticPropertyWithoutFieldSetIsCompiledAsStaticPropertyWithoutFieldIsGeneratedEventValPickledBitsget_BaseOrThisInfoget_IsCompilerGeneratedSetIsCompilerGeneratedget_InlineInfoget_MutabilityInfoget_IsMemberOrModuleBindingget_SetIsMemberOrModuleBindingget_IsIncrClassSpecialMemberget_IsTypeFunctionget_RecursiveValInfoSetRecursiveValInfoget_MakesNoCriticalTailcallsget_SetMakesNoCriticalTailcallsget_PermitsExplicitTypeInstantiationget_HasBeenReferencedget_SetHasBeenReferencedget_IsCompiledAsStaticPropertyWithoutFieldget_SetIsCompiledAsStaticPropertyWithoutFieldget_IsGeneratedEventValget_PickledBitsIsMeasureAttrName_unique_Measureget_Measureget_IsMeasureget_AttrNameRigidIsRigidWillBeRigidIsWillBeRigidWarnIfNotRigidIsWarnIfNotRigidFlexibleIsFlexibleIsAnonErrorIfUnifiedWarnIfUnifiedWarnIfMissingConstraint_unique_Rigid_unique_WillBeRigid_unique_WarnIfNotRigid_unique_Flexible_unique_Anonget_Rigidget_IsRigidget_WillBeRigidget_IsWillBeRigidget_WarnIfNotRigidget_IsWarnIfNotRigidget_Flexibleget_IsFlexibleget_Anonget_IsAnonget_ErrorIfUnifiedget_WarnIfUnifiedget_WarnIfMissingConstraintIsFromErrorStaticReqRigidityComparisonConditionalOnDynamicReqEqualityConditionalOnrigidityequalityDependsOncomparisonDependsOnget_IsFromErrorget_StaticReqget_Rigidityget_ComparisonConditionalOnget_DynamicReqget_EqualityConditionalOnIsPrefixDisplayPreEstablishedHasDefaultConstructorHasSelfReferentialConstructorReservedBitForPickleFormatTyconReprFlagisModuleOrNamespaceget_IsPrefixDisplayget_PreEstablishedHasDefaultConstructorget_HasSelfReferentialConstructorget_ReservedBitForPickleFormatTyconReprFlagFSharpModuleWithSuffixIsFSharpModuleWithSuffixModuleOrTypeIsModuleOrTypeNamespaceIsNamespace_unique_FSharpModuleWithSuffix_unique_ModuleOrType_unique_Namespaceget_FSharpModuleWithSuffixget_IsFSharpModuleWithSuffixget_ModuleOrTypeget_IsModuleOrTypeget_Namespaceget_IsNamespaceAccessPathNewCompPathget_AccessPathEnclosingPathNewPubPathget_EnclosingPathCompiledNameDisplayNameWithStaticParametersAndUnderscoreTyparsDisplayNameWithStaticParametersAttribsXmlDocSigTypeContentsTypeOrMeasureKindTypeReprInfoIsExceptionDeclDemangledModuleOrNamespaceNameTyparsNoRangeIsTypeAbbrevTypeReprAccessibilityCompiledReprCacheIsProvidedIsProvidedNamespaceIsProvidedErasedTyconIsProvidedGeneratedTyconIsErasedCompilationPathOptAllFieldTableAllFieldsArrayAllFieldsAsListAllInstanceFieldsAsListTrueFieldsAsListTrueInstanceFieldsAsListIsUnionTyconUnionTypeInfoUnionCasesArrayUnionCasesAsListFSharpObjectModelTypeInfoIsILTyconILTyconInfoILTyconRawMetadataIsRecordTyconIsFSharpObjectModelTyconIsAsmReprTyconIsMeasureableReprTyconIsHiddenReprTyconIsFSharpInterfaceTyconIsFSharpDelegateTyconIsFSharpEnumTyconIsFSharpClassTyconIsILEnumTyconIsEnumTyconIsFSharpStructOrEnumTyconIsILStructOrEnumTyconIsStructOrEnumTyconImmediateInterfacesOfFSharpTyconImmediateInterfaceTypesOfFSharpTyconMembersOfFSharpTyconSortedMembersOfFSharpTyconByNameGeneratedHashAndEqualsWithComparerValuesGeneratedCompareToWithComparerValuesGeneratedCompareToValuesGeneratedHashAndEqualsValuesAllGeneratedValuesCompiledRepresentationCompiledRepresentationForNamedTypeData@set_Dataget_CompiledNameget_DisplayNameWithStaticParametersAndUnderscoreTyparsget_DisplayNameWithStaticParametersGetDisplayNamewithStaticParameterswithUnderscoreTyparsget_Stampget_Attribsget_XmlDocSigset_XmlDocSigget_ModuleOrNamespaceTypeget_TypeContentsget_TypeOrMeasureKindget_Idget_TypeReprInfoget_ExceptionInfoget_IsExceptionDeclDemangleEntityNameget_DemangledModuleOrNamespaceNameTyparsget_TyparsNoRangeget_TypeAbbrevget_IsTypeAbbrevget_TypeReprAccessibilityget_CompiledReprCacheget_PublicPathget_Accessibilityget_IsProvidedget_IsProvidedNamespaceget_IsProvidedErasedTyconget_IsProvidedGeneratedTyconget_IsErasedget_CompilationPathOptget_CompilationPathget_AllFieldTableget_AllFieldsArrayget_AllFieldsAsListget_AllInstanceFieldsAsListget_TrueFieldsAsListget_TrueInstanceFieldsAsListGetFieldByIndexGetFieldByNameget_IsUnionTyconget_UnionTypeInfoget_UnionCasesArrayget_UnionCasesAsListGetUnionCaseByNameNewUnlinkedreasonget_FSharpObjectModelTypeInfoget_IsILTyconget_ILTyconInfoget_ILTyconRawMetadataget_IsRecordTyconget_IsFSharpObjectModelTyconget_IsAsmReprTyconget_IsMeasureableReprTyconget_IsHiddenReprTyconget_IsFSharpInterfaceTyconget_IsFSharpDelegateTyconget_IsFSharpEnumTyconget_IsFSharpClassTyconget_IsILEnumTyconget_IsEnumTyconget_IsFSharpStructOrEnumTyconget_IsILStructOrEnumTyconget_IsStructOrEnumTyconget_ImmediateInterfacesOfFSharpTyconget_ImmediateInterfaceTypesOfFSharpTyconget_MembersOfFSharpTyconSortedget_MembersOfFSharpTyconByNameget_GeneratedHashAndEqualsWithComparerValuesget_GeneratedCompareToWithComparerValuesget_GeneratedCompareToValuesget_GeneratedHashAndEqualsValuesget_AllGeneratedValuesget_CompiledRepresentationget_CompiledRepresentationForNamedTypeSetAttribsentity_typarsentity_kindentity_flagsentity_stampentity_logical_nameentity_compiled_nameentity_rangeentity_tycon_repr_accessibilityentity_attribsentity_tycon_reprentity_tycon_abbreventity_tycon_tcaugentity_exn_infoentity_modul_contentsentity_xmldocentity_xmldocsigentity_pubpathentity_accessiblityentity_cpathentity_il_repr_cacheentity_typars@entity_kind@entity_flags@entity_stamp@entity_logical_name@entity_compiled_name@entity_range@entity_tycon_repr_accessibility@entity_attribs@entity_tycon_repr@entity_tycon_abbrev@entity_tycon_tcaug@entity_exn_info@entity_modul_contents@entity_xmldoc@entity_xmldocsig@entity_pubpath@entity_accessiblity@entity_cpath@entity_il_repr_cache@get_entity_typarsget_entity_kindget_entity_flagsget_entity_stampget_entity_logical_nameget_entity_compiled_nameget_entity_rangeget_entity_tycon_repr_accessibilityget_entity_attribsget_entity_tycon_reprget_entity_tycon_abbrevget_entity_tycon_tcaugget_entity_exn_infoget_entity_modul_contentsget_entity_xmldocget_entity_xmldocsigget_entity_pubpathget_entity_accessiblityget_entity_cpathget_entity_il_repr_cacheset_entity_typarsset_entity_kindset_entity_flagsset_entity_compiled_nameset_entity_attribsset_entity_tycon_reprset_entity_tycon_abbrevset_entity_tycon_tcaugset_entity_exn_infoset_entity_modul_contentsset_entity_xmldocsigIsParentParentNoneIsParentNone_unique_ParentNoneNewParentget_IsParentget_ParentNoneget_IsParentNonetcaug_comparetcaug_compare_withctcaug_equalstcaug_hash_and_equals_withctcaug_hasObjectGetHashCodetcaug_adhoc_listtcaug_adhoctcaug_interfacestcaug_supertcaug_closedtcaug_abstracttcaug_compare@tcaug_compare_withc@tcaug_equals@tcaug_hash_and_equals_withc@tcaug_hasObjectGetHashCode@tcaug_adhoc_list@tcaug_adhoc@tcaug_interfaces@tcaug_super@tcaug_closed@tcaug_abstract@get_tcaug_compareget_tcaug_compare_withcget_tcaug_equalsget_tcaug_hash_and_equals_withcget_tcaug_hasObjectGetHashCodeget_tcaug_adhoc_listget_tcaug_adhocget_tcaug_interfacesget_tcaug_superget_tcaug_closedget_tcaug_abstractset_tcaug_compareset_tcaug_compare_withcset_tcaug_equalsset_tcaug_hash_and_equals_withcset_tcaug_hasObjectGetHashCodeset_tcaug_adhocset_tcaug_interfacesset_tcaug_superset_tcaug_closedset_tcaug_abstractSetCompareSetCompareWithSetHashAndEqualsWithSetHasObjectGetHashCodeIsTFsObjModelReprIsTRecdReprIsTFiniteUnionReprIsTILObjModelReprIsTAsmReprIsTMeasureableReprIsTProvidedTypeExtensionPointIsTProvidedNamespaceExtensionPointTNoReprIsTNoRepr_unique_TNoReprNewTFsObjModelReprget_IsTFsObjModelReprNewTRecdReprget_IsTRecdReprNewTFiniteUnionReprget_IsTFiniteUnionReprNewTILObjModelReprget_IsTILObjModelReprNewTAsmReprget_IsTAsmReprNewTMeasureableReprget_IsTMeasureableReprNewTProvidedTypeExtensionPointget_IsTProvidedTypeExtensionPointNewTProvidedNamespaceExtensionPointget_IsTProvidedNamespaceExtensionPointget_TNoReprget_IsTNoReprLazyBaseTypeIsSealedIsStructOrEnumUnderlyingTypeOfEnumIsSuppressRelocateIsGeneratedResolutionEnvironment@ProvidedType@LazyBaseType@IsClass@IsSealed@IsInterface@IsStructOrEnum@IsEnum@UnderlyingTypeOfEnum@IsDelegate@IsErased@IsSuppressRelocate@get_ResolutionEnvironmentget_ProvidedTypeget_LazyBaseTypeget_IsSealedget_IsStructOrEnumget_UnderlyingTypeOfEnumget_IsDelegateget_IsSuppressRelocateprovidedTypelazyBaseTypeisSealedisStructOrEnumisEnumunderlyingTypeOfEnumisDelegateisErasedget_IsGeneratedBaseTypeForErasedTTyconClassIsTTyconClassTTyconInterfaceIsTTyconInterfaceTTyconStructIsTTyconStructIsTTyconDelegateTTyconEnumIsTTyconEnum_unique_TTyconClass_unique_TTyconInterface_unique_TTyconStruct_unique_TTyconEnumget_TTyconClassget_IsTTyconClassget_TTyconInterfaceget_IsTTyconInterfaceget_TTyconStructget_IsTTyconStructNewTTyconDelegateget_IsTTyconDelegateget_TTyconEnumget_IsTTyconEnumfsobjmodel_kindfsobjmodel_vslotsfsobjmodel_rfieldsfsobjmodel_kind@fsobjmodel_vslots@fsobjmodel_rfields@get_fsobjmodel_kindget_fsobjmodel_vslotsget_fsobjmodel_rfieldsFieldsByIndexFieldsByNameFieldsByIndex@FieldsByName@get_FieldsByIndexget_FieldsByNamefieldsByIndexfieldsByNameFieldByIndexFieldByNameCasesByIndexCasesByNameCasesByIndex@CasesByName@get_CasesByIndexget_CasesByNamecasesByIndexcasesByNameGetUnionCaseByIndexCasesTableCasesTable@CompiledRepresentation@get_CasesTablecasesTablecompiledRepresentationFieldTableReturnTypeRecdFieldsArrayRecdFieldsFieldTable@ReturnType@CompiledName@XmlDoc@XmlDocSig@Id@Accessibility@Attribs@get_FieldTableget_ReturnTypeset_AttribsfieldTablereturnTypexmlDocSigget_RecdFieldsArrayget_RecdFieldsStructuredFormatDisplayAttributerfield_mutablerfield_xmldocrfield_xmldocsigrfield_typerfield_staticrfield_volatilerfield_secretrfield_constrfield_accessrfield_pattribsrfield_fattribsrfield_idPropertyAttribsFieldAttribsIsVolatileFormalTypeIsZeroInitrfield_mutable@rfield_xmldoc@rfield_xmldocsig@rfield_type@rfield_static@rfield_volatile@rfield_secret@rfield_const@rfield_access@rfield_pattribs@rfield_fattribs@rfield_id@get_rfield_mutableget_rfield_xmldocget_rfield_xmldocsigget_rfield_typeget_rfield_staticget_rfield_volatileget_rfield_secretget_rfield_constget_rfield_accessget_rfield_pattribsget_rfield_fattribsget_rfield_idset_rfield_xmldocsigset_rfield_pattribsset_rfield_fattribsget_PropertyAttribsget_FieldAttribsget_IsVolatileget_FormalTypeget_IsZeroInitIsTExnAbbrevReprIsTExnAsmReprIsTExnFreshTExnNoneIsTExnNone_unique_TExnNoneNewTExnAbbrevReprget_IsTExnAbbrevReprNewTExnAsmReprget_IsTExnAsmReprNewTExnFreshget_IsTExnFreshget_TExnNoneget_IsTExnNoneAllValsAndMembersAllEntitiesActivePatternElemRefLookupTableTypeDefinitionsExceptionDefinitionsModuleAndNamespaceDefinitionsTypeAndExceptionDefinitionsTypesByAccessNamesTypesByMangledNameAllEntitiesByCompiledAndLogicalMangledNamesAllEntitiesByLogicalMangledNameAllValsAndMembersByPartialLinkageKeyAllValsByLogicalNameAllValsAndMembersByLogicalNameUncachedExceptionDefinitionsByDemangledNameModulesAndNamespacesByDemangledNameentities@1350activePatternElemRefCachemodulesByDemangledNameCacheexconsByDemangledNameCachetyconsByDemangledNameAndArityCachetyconsByAccessNamesCachetyconsByMangledNameCacheallEntitiesByMangledNameCacheallValsAndMembersByPartialLinkageKeyCacheallValsByLogicalNameCacheentitiesget_ModuleOrNamespaceKindget_AllValsAndMembersget_AllEntitiesAddModuleOrNamespaceByMutationAddProvidedTypeEntityAddValget_ActivePatternElemRefLookupTableget_TypeDefinitionsget_ExceptionDefinitionsget_ModuleAndNamespaceDefinitionsget_TypeAndExceptionDefinitionsTypesByDemangledNameAndArityget_TypesByAccessNamesget_TypesByMangledNameget_AllEntitiesByCompiledAndLogicalMangledNamesget_AllEntitiesByLogicalMangledNameget_AllValsAndMembersByPartialLinkageKeyTryLinkValget_AllValsByLogicalNameget_AllValsAndMembersByLogicalNameUncachedget_ExceptionDefinitionsByDemangledNameget_ModulesAndNamespacesByDemangledNameNewProvidedTyconReprimportProvidedTypeNewProvidedTyconNewTAccesstypar_idtypar_il_nametypar_flagstypar_stamptypar_xmldoctypar_attribstypar_solutiontypar_constraintstypar_id@typar_il_name@typar_flags@typar_stamp@typar_xmldoc@typar_attribs@typar_solution@typar_constraints@get_typar_idget_typar_il_nameget_typar_flagsget_typar_stampget_typar_xmldocget_typar_attribsget_typar_solutionget_typar_constraintsset_typar_idset_typar_il_nameset_typar_flagsset_typar_attribsset_typar_solutionset_typar_constraintsAsTypeSolutionConstraintsIsSolvedAsType@get_AsTypeset_AsTypeasTypeget_Solutionget_ConstraintsFixupConstraintsget_IsSolvedSetIdentSetRigiditySetCompilerGeneratedSetStaticReqSetDynamicReqSetEqualityDependsOnSetComparisonDependsOnIsCoercesToIsDefaultsToIsSupportsNullIsMayResolveMemberIsIsNonNullableStructIsIsReferenceTypeIsSimpleChoiceIsRequiresDefaultConstructorIsIsEnumIsSupportsComparisonIsSupportsEqualityIsIsDelegateIsIsUnmanagedNewCoercesToget_IsCoercesToNewDefaultsToget_IsDefaultsToNewSupportsNullget_IsSupportsNullNewMayResolveMemberget_IsMayResolveMemberNewIsNonNullableStructget_IsIsNonNullableStructNewIsReferenceTypeget_IsIsReferenceTypeNewSimpleChoiceget_IsSimpleChoiceNewRequiresDefaultConstructorget_IsRequiresDefaultConstructorNewIsEnumget_IsIsEnumNewSupportsComparisonget_IsSupportsComparisonNewSupportsEqualityget_IsSupportsEqualityNewIsDelegateget_IsIsDelegateNewIsUnmanagedget_IsIsUnmanagedMemberNameNewTTraitget_MemberNameset_SolutionIsFSMethSlnIsFSRecdFieldSlnIsILMethSlnIsClosedExprSlnBuiltInSlnIsBuiltInSln_unique_BuiltInSlnNewFSMethSlnget_IsFSMethSlnNewFSRecdFieldSlnget_IsFSRecdFieldSlnNewILMethSlnget_IsILMethSlnNewClosedExprSlnget_IsClosedExprSlnget_BuiltInSlnget_IsBuiltInSlnMemberParentMangledNameMemberIsOverrideTotalArgCountMemberParentMangledName@MemberIsOverride@LogicalName@TotalArgCount@get_MemberParentMangledNameget_MemberIsOverrideget_TotalArgCountmemberParentMangledNamememberIsOverridetotalArgCountPartialKeyTypeForLinkagetypeForLinkagepartialKeyget_PartialKeyget_TypeForLinkageDefinitionRangeIsCompiledAsTopLevelLinkagePartialKeyLinkageFullKeyReflectedDefinitionMemberInfoIsMemberIsIntrinsicMemberIsModuleBindingIsCompiledIntoModuleIsInstanceMemberIsOverrideOrExplicitImplIsIncrClassGeneratedMemberIsIncrClassConstructorMustInlineActualParentTopValActualParentMemberApparentParentNumObjArgsApparentParentTauTypeget_DefinitionRangeget_ValReprInfoget_IsCompiledAsTopLevelget_LinkagePartialKeyget_LinkageFullKeyget_ReflectedDefinitionget_MemberInfoget_IsMemberget_IsIntrinsicMemberget_IsModuleBindingget_IsCompiledIntoModuleget_IsInstanceMemberget_IsOverrideOrExplicitImplget_IsIncrClassGeneratedMemberget_IsIncrClassConstructorget_MustInlineget_ActualParentget_TopValActualParentget_MemberApparentParentget_NumObjArgsget_ApparentParentget_TauTypeget_Typarsget_CoreDisplayNameSetValRecSetValReprInfoSetTypeSetDefnRangeval_logical_nameval_compiled_nameval_rangeval_defn_rangeval_typeval_stampval_flagsval_constval_defnval_accessval_member_infoval_attribsval_repr_infoval_actual_parentval_xmldocval_xmldocsigval_logical_name@val_compiled_name@val_range@val_defn_range@val_type@val_stamp@val_flags@val_const@val_defn@val_access@val_member_info@val_attribs@val_repr_info@val_actual_parent@val_xmldoc@val_xmldocsig@get_val_logical_nameget_val_compiled_nameget_val_rangeget_val_defn_rangeget_val_typeget_val_stampget_val_flagsget_val_constget_val_defnget_val_accessget_val_member_infoget_val_attribsget_val_repr_infoget_val_actual_parentget_val_xmldocget_val_xmldocsigset_val_defn_rangeset_val_typeset_val_flagsset_val_constset_val_defnset_val_attribsset_val_repr_infoset_val_actual_parentset_val_xmldocsigImplementedSlotSigsIsImplementedApparentParent@ImplementedSlotSigs@IsImplemented@MemberFlags@get_ImplementedSlotSigsget_IsImplementedget_MemberFlagsset_ImplementedSlotSigsset_IsImplementedapparentParentimplementedSlotSigsisImplementedEnclosingEntityItemKeyEnclosingEntity@ItemKey@get_EnclosingEntityget_ItemKeyenclosingEntityitemKeyget_AssemblyNameNewValPubPathTryDerefLastItemMangledNameEnclosingMangledPathTryModuleOrNamespaceTypeNewNonLocalEntityRefTryDerefEntityPathTryDerefEntityPathViaProvidedTypeget_TryDerefget_Pathget_LastItemMangledNameget_EnclosingMangledPathget_TryModuleOrNamespaceTypeIsLocalRefIsResolvedPrivateTargetResolvedTargetCanDerefUnionCasesAsRefListTrueInstanceFieldsAsRefListAllFieldAsRefListbinding@nlr@get_bindingget_nlrset_bindingget_IsLocalRefget_IsResolvedget_PrivateTargetget_ResolvedTargetget_CanDerefget_UnionCasesAsRefListget_TrueInstanceFieldsAsRefListget_AllFieldAsRefListMkNestedTyconRefMkNestedRecdFieldRefCaseNameNewUCRefget_CaseNameFindIndexNewRFRefIsTType_forallIsTType_appIsTType_tupleIsTType_funIsTType_ucaseIsTType_varIsTType_measureNewTType_forallget_IsTType_forallNewTType_appget_IsTType_appNewTType_tupleget_IsTType_tupleNewTType_funget_IsTType_funNewTType_ucaseget_IsTType_ucaseNewTType_varget_IsTType_varNewTType_measureget_IsTType_measureIsMeasureVarIsMeasureConIsMeasureProdIsMeasureInvMeasureOneIsMeasureOne_unique_MeasureOneNewMeasureVarget_IsMeasureVarNewMeasureConget_IsMeasureConNewMeasureProdget_IsMeasureProdNewMeasureInvget_IsMeasureInvget_MeasureOneget_IsMeasureOneQualifiedNameSourceCodeDirectoryIsFSharpInvalidateEventUsesQuotationsMemberSignatureEqualityTypeForwardersStamp@QualifiedName@SourceCodeDirectory@IsFSharp@InvalidateEvent@ImportProvidedType@UsesQuotations@Contents@MemberSignatureEquality@TypeForwarders@get_QualifiedNameget_SourceCodeDirectoryget_IsFSharpget_InvalidateEventget_ImportProvidedTypeget_UsesQuotationsget_MemberSignatureEqualityget_TypeForwardersset_UsesQuotationsset_ContentsstampqualifiedNamesourceCodeDirectoryisFSharpinvalidateEventmemberSignatureEqualitytypeForwardersorphanfixupIsUnresolvedReferenceRootModulesAndNamespacesRootTypeAndExceptionDefinitionsorphanfixup@get_orphanfixupset_orphanfixupget_IsUnresolvedReferenceEnsureDerefablerequiringPathget_RootModulesAndNamespacesget_RootTypeAndExceptionDefinitionsCreateDelayedavailFixupOrphanedTryForwardIsResolvedCcuIsUnresolvedCcuNewResolvedCcuget_IsResolvedCcuNewUnresolvedCcuget_IsUnresolvedCcucompileTimeWorkingDirmspec@compileTimeWorkingDir@get_mspecget_compileTimeWorkingDirIsILAttribIsFSAttribNewILAttribget_IsILAttribNewFSAttribget_IsFSAttribNewAttribNewAttribExprNewAttribNamedArgIsBoolIsSByteIsByteIsInt16IsUInt16IsInt32IsUInt32IsInt64IsUInt64IsIntPtrIsUIntPtrIsSingleIsDoubleIsCharIsStringIsDecimalIsUnitZeroIsZero_unique_Unit_unique_ZeroNewBoolget_IsBoolNewSByteget_IsSByteNewByteget_IsByteNewInt16get_IsInt16NewUInt16get_IsUInt16NewInt32get_IsInt32NewUInt32get_IsUInt32NewInt64get_IsInt64NewUInt64get_IsUInt64NewIntPtrget_IsIntPtrNewUIntPtrget_IsUIntPtrNewSingleget_IsSingleNewDoubleget_IsDoubleNewCharget_IsCharNewStringget_IsStringNewDecimalget_IsDecimalget_Unitget_IsUnitget_Zeroget_IsZeroIsTDSwitchIsTDSuccessIsTDBindNewTDSwitchget_IsTDSwitchNewTDSuccessget_IsTDSuccessNewTDBindget_IsTDBindDiscriminatorCaseTreeNewTCaseget_Discriminatorget_CaseTreeIsArrayLengthIsConstIsIsNullIsIsInst_unique_IsNullNewArrayLengthget_IsArrayLengthNewConstget_IsConstget_IsIsNullNewIsInstget_IsIsInstNewTTargetSequencePointInfoNewTBindget_Varget_SequencePointInfoIsTotalActivePatternActivePatternValCaseIndexNewAPElemRefget_IsTotalActivePatternget_ActivePatternValget_CaseIndexArgInfosNumCurriedArgsNumTyparsHasNoArgsAritiesOfArgsKindsOfTyparsNewValReprInfoget_ArgInfosget_NumCurriedArgsget_NumTyparsget_HasNoArgsget_AritiesOfArgsget_KindsOfTyparsset_NameNewTyparReprInfoIsValIsSequentialIsLambdaIsTyLambdaIsAppIsLetRecIsLetIsObjIsMatchIsStaticOptimizationIsOpIsQuoteIsTyChooseIsLinkget_IsValNewSequentialget_IsSequentialNewLambdaget_IsLambdaNewTyLambdaget_IsTyLambdaNewAppget_IsAppNewLetRecget_IsLetRecNewLetget_IsLetNewObjget_IsObjNewMatchget_IsMatchNewStaticOptimizationget_IsStaticOptimizationNewOpget_IsOpNewQuoteget_IsQuoteNewTyChooseget_IsTyChooseNewLinkget_IsLinkIsExnConstrIsTupleIsArrayIsBytesIsUInt16sIsWhileIsForIsTryCatchIsTryFinallyIsRecdIsValFieldSetIsValFieldGetIsValFieldGetAddrIsUnionCaseTagGetIsUnionCaseProofIsUnionCaseFieldGetIsUnionCaseFieldSetIsExnFieldGetIsExnFieldSetIsTupleFieldGetIsILAsmRefAddrGetIsRefAddrGetIsCoerceReraiseIsReraiseIsGotoIsLabelIsTraitCallIsLValueOpIsILCall_unique_Tuple_unique_Array_unique_RefAddrGet_unique_Coerce_unique_ReraiseNewExnConstrget_IsExnConstrget_Tupleget_IsTupleget_ArrayNewBytesget_IsBytesNewUInt16sget_IsUInt16sNewWhileget_IsWhileNewForget_IsForNewTryCatchget_IsTryCatchNewTryFinallyget_IsTryFinallyNewRecdget_IsRecdNewValFieldSetget_IsValFieldSetNewValFieldGetget_IsValFieldGetNewValFieldGetAddrget_IsValFieldGetAddrNewUnionCaseTagGetget_IsUnionCaseTagGetNewUnionCaseProofget_IsUnionCaseProofNewUnionCaseFieldGetget_IsUnionCaseFieldGetNewUnionCaseFieldSetget_IsUnionCaseFieldSetNewExnFieldGetget_IsExnFieldGetNewExnFieldSetget_IsExnFieldSetNewTupleFieldGetget_IsTupleFieldGetNewILAsmget_IsILAsmget_RefAddrGetget_IsRefAddrGetget_Coerceget_IsCoerceget_Reraiseget_IsReraiseNewGotoget_IsGotoNewLabelget_IsLabelNewTraitCallget_IsTraitCallNewLValueOpget_IsLValueOpNewILCallget_IsILCallRecdExprIsObjInitIsRecdExprIsObjInitRecdExprIsRecdExpr_unique_RecdExprIsObjInit_unique_RecdExprget_RecdExprIsObjInitget_IsRecdExprIsObjInitget_RecdExprget_IsRecdExprNoSpecialWhileLoopMarkerIsNoSpecialWhileLoopMarkerWhileLoopForCompiledForEachExprMarkerIsWhileLoopForCompiledForEachExprMarker_unique_NoSpecialWhileLoopMarker_unique_WhileLoopForCompiledForEachExprMarkerget_NoSpecialWhileLoopMarkerget_IsNoSpecialWhileLoopMarkerget_WhileLoopForCompiledForEachExprMarkerget_IsWhileLoopForCompiledForEachExprMarkerFSharpForLoopUpIsFSharpForLoopUpFSharpForLoopDownIsFSharpForLoopDownCSharpForLoopUpIsCSharpForLoopUp_unique_FSharpForLoopUp_unique_FSharpForLoopDown_unique_CSharpForLoopUpget_FSharpForLoopUpget_IsFSharpForLoopUpget_FSharpForLoopDownget_IsFSharpForLoopDownget_CSharpForLoopUpget_IsCSharpForLoopUpLGetAddrIsLGetAddrLByrefGetIsLByrefGetLSetIsLSetLByrefSetIsLByrefSet_unique_LGetAddr_unique_LByrefGet_unique_LSet_unique_LByrefSetget_LGetAddrget_IsLGetAddrget_LByrefGetget_IsLByrefGetget_LSetget_IsLSetget_LByrefSetget_IsLByrefSetNormalSeqIsNormalSeqThenDoSeqIsThenDoSeq_unique_NormalSeq_unique_ThenDoSeqget_NormalSeqget_IsNormalSeqget_ThenDoSeqget_IsThenDoSeqIsPossibleConstrainedCallNormalValUseIsNormalValUseCtorValUsedAsSuperInitIsCtorValUsedAsSuperInitCtorValUsedAsSelfInitIsCtorValUsedAsSelfInitVSlotDirectCallIsVSlotDirectCall_unique_NormalValUse_unique_CtorValUsedAsSuperInit_unique_CtorValUsedAsSelfInit_unique_VSlotDirectCallNewPossibleConstrainedCallget_IsPossibleConstrainedCallget_NormalValUseget_IsNormalValUseget_CtorValUsedAsSuperInitget_IsCtorValUsedAsSuperInitget_CtorValUsedAsSelfInitget_IsCtorValUsedAsSelfInitget_VSlotDirectCallget_IsVSlotDirectCallIsTTyconEqualsTyconIsTTyconIsStructNewTTyconEqualsTyconget_IsTTyconEqualsTyconNewTTyconIsStructget_IsTTyconIsStructNewTObjExprMethodImplementedTypeClassTyparsMethodTyparsFormalParamsFormalReturnTypeNewTSlotSigget_ImplementedTypeget_ClassTyparsget_MethodTyparsget_FormalParamsget_FormalReturnTypeNewTSlotParamNewModuleOrNamespaceExprWithSigIsTMAbstractIsTMDefsIsTMDefLetIsTMDefDoIsTMDefRecNewTMAbstractget_IsTMAbstractNewTMDefsget_IsTMDefsNewTMDefLetget_IsTMDefLetNewTMDefDoget_IsTMDefDoNewTMDefRecget_IsTMDefRecNewModuleOrNamespaceBindingNewTImplFileNewTAssemblyFreeTyconsFreeTraitSolutionsFreeTyparsFreeTycons@FreeTraitSolutions@FreeTypars@get_FreeTyconsget_FreeTraitSolutionsget_FreeTyparsfreeTyconsfreeTraitSolutionsfreeTyparsFreeLocalsUsesMethodLocalConstructsUsesUnboundRethrowFreeLocalTyconReprsFreeRecdFieldsFreeUnionCasesFreeLocals@UsesMethodLocalConstructs@UsesUnboundRethrow@FreeLocalTyconReprs@FreeRecdFields@FreeUnionCases@FreeTyvars@get_FreeLocalsget_UsesMethodLocalConstructsget_UsesUnboundRethrowget_FreeLocalTyconReprsget_FreeRecdFieldsget_FreeUnionCasesget_FreeTyvarsfreeLocalsusesMethodLocalConstructsusesUnboundRethrowfreeLocalTyconReprsfreeRecdFieldsfreeUnionCasesfreeTyvarsIsILAsmNamedIsILAsmOpenNewILAsmNamedget_IsILAsmNamedNewILAsmOpenget_IsILAsmOpenv20v10matchValue2v21v11get_Constructorget_DeclaringTypeGetCustomAttributesDataMeasureAttributeresolvermoduleOrNamespacetypenamerfspeccpath1bbData6Data6@data6get_Data6unnamedTopArg1unnamedTopArgunitArgDataunnamedRetValselfMetadataemptyValDataget_unnamedTopArg1get_unnamedTopArgget_unitArgDataget_unnamedRetValget_selfMetadataget_emptyValDataInferTyparInfoInferArgReprInfoInferArgReprInfosi@48i@53-1globalNng@57globalStableNameGenerator@61unnamedTopArg1@3700-2unnamedTopArg@3701-2unitArgData@3702-2unnamedRetVal@3703-2selfMetadata@3704-2emptyValData@3705taccessPublic@4137taccessInternal@4139ofSeqiterexistsfilterfoldBackforallofListtoListtryFindoneappendOnepickledDefinitionsResourceNameBasepicklePickleDefnsmkRLinearmkVarTymkILNamedTymkVarmkHolemkAppmkQuotex3mkModuleValueAppmkTuplemkLetRecRawmkLetRecvesmkRecdMkmkRecdGetmkRecdSetmkSummkSumFieldGetmkSumTagTestmkTupleGetmkCoercemkTypeTestmkAddressOfmkAddressSetmkVarSetmkDefaultValuemkThisVarmkNewArraymkSinglemkDoublemkCharmkSBytemkInt16mkUInt32mkInt64mkUInt64mkForLoopmkWhileLoopmkDelegatemkPropGetmkPropSetmkFieldGetmkFieldSetmkCtorCallmkMethodCallmkAttributedExpressionget_pickledDefinitionsResourceNameBasefreshVarp_NamedTypep_tyconp_typep_typesp_varDeclp_recdFieldSpecv_0v_1p_ucaseSpecp_MethodDatap_CtorDatap_PropInfoDataa_0a_1a_2a_3ToInt64p_CombOpget_picklep_MethodBaseget_PickleDefnstvNametvName@get_tvNametcNametcAssemblytcName@tcAssembly@get_tcNameget_tcAssemblyIsArrayTyOpFunTyOpIsFunTyOpIsNamedTyOp_unique_FunTyOpNewArrayTyOpget_IsArrayTyOpget_FunTyOpget_IsFunTyOpNewNamedTyOpget_IsNamedTyOpIsVarTypeIsAppTypeNewVarTypeget_IsVarTypeNewAppTypeget_IsAppTypectorParentctorArgTypesctorParent@ctorArgTypes@get_ctorParentget_ctorArgTypesmethParentmethArgTypesmethRetTypemethParent@methName@methArgTypes@methRetType@numGenericArgs@get_methParentget_methNameget_methArgTypesget_methRetTypeget_numGenericArgsvTextvTypevMutablevText@vType@vMutable@get_vTextget_vTypeget_vMutableAppOpIsAppOpCondOpIsCondOpIsModuleValueOpLetRecOpIsLetRecOpLetRecCombOpIsLetRecCombOpLetOpIsLetOpIsRecdMkOpIsRecdGetOpIsRecdSetOpIsSumMkOpIsSumFieldGetOpIsSumTagTestOpTupleMkOpIsTupleMkOpIsTupleGetOpUnitOpIsUnitOpIsBoolOpIsStringOpIsSingleOpIsDoubleOpIsCharOpIsSByteOpIsByteOpIsInt16OpIsUInt16OpIsInt32OpIsUInt32OpIsInt64OpIsUInt64OpIsPropGetOpIsFieldGetOpIsCtorCallOpIsMethodCallOpCoerceOpIsCoerceOpNewArrayOpIsNewArrayOpDelegateOpIsDelegateOpSeqOpIsSeqOpForLoopOpIsForLoopOpWhileLoopOpIsWhileLoopOpNullOpIsNullOpDefaultValueOpIsDefaultValueOpIsPropSetOpIsFieldSetOpAddressOfOpIsAddressOfOpExprSetOpIsExprSetOpAddressSetOpIsAddressSetOpTypeTestOpIsTypeTestOpTryFinallyOpIsTryFinallyOpTryWithOpIsTryWithOp_unique_AppOp_unique_CondOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_TupleMkOp_unique_UnitOp_unique_CoerceOp_unique_NewArrayOp_unique_DelegateOp_unique_SeqOp_unique_ForLoopOp_unique_WhileLoopOp_unique_NullOp_unique_DefaultValueOp_unique_AddressOfOp_unique_ExprSetOp_unique_AddressSetOp_unique_TypeTestOp_unique_TryFinallyOp_unique_TryWithOpget_AppOpget_IsAppOpget_CondOpget_IsCondOpNewModuleValueOpget_IsModuleValueOpget_LetRecOpget_IsLetRecOpget_LetRecCombOpget_IsLetRecCombOpget_LetOpget_IsLetOpNewRecdMkOpget_IsRecdMkOpNewRecdGetOpget_IsRecdGetOpNewRecdSetOpget_IsRecdSetOpNewSumMkOpget_IsSumMkOpNewSumFieldGetOpget_IsSumFieldGetOpNewSumTagTestOpget_IsSumTagTestOpget_TupleMkOpget_IsTupleMkOpNewTupleGetOpget_IsTupleGetOpget_UnitOpget_IsUnitOpNewBoolOpget_IsBoolOpNewStringOpget_IsStringOpNewSingleOpget_IsSingleOpNewDoubleOpget_IsDoubleOpNewCharOpget_IsCharOpNewSByteOpget_IsSByteOpNewByteOpget_IsByteOpNewInt16Opget_IsInt16OpNewUInt16Opget_IsUInt16OpNewInt32Opget_IsInt32OpNewUInt32Opget_IsUInt32OpNewInt64Opget_IsInt64OpNewUInt64Opget_IsUInt64OpNewPropGetOpget_IsPropGetOpNewFieldGetOpget_IsFieldGetOpNewCtorCallOpget_IsCtorCallOpNewMethodCallOpget_IsMethodCallOpget_CoerceOpget_IsCoerceOpget_NewArrayOpget_IsNewArrayOpget_DelegateOpget_IsDelegateOpget_SeqOpget_IsSeqOpget_ForLoopOpget_IsForLoopOpget_WhileLoopOpget_IsWhileLoopOpget_NullOpget_IsNullOpget_DefaultValueOpget_IsDefaultValueOpNewPropSetOpget_IsPropSetOpNewFieldSetOpget_IsFieldSetOpget_AddressOfOpget_IsAddressOfOpget_ExprSetOpget_IsExprSetOpget_AddressSetOpget_IsAddressSetOpget_TypeTestOpget_IsTypeTestOpget_TryFinallyOpget_IsTryFinallyOpget_TryWithOpget_IsTryWithOpIsAttrExprIsCombExprIsVarExprIsQuoteExprIsLambdaExprIsHoleExprIsThisVarExprNewAttrExprget_IsAttrExprNewCombExprget_IsCombExprNewVarExprget_IsVarExprNewQuoteExprget_IsQuoteExprNewLambdaExprget_IsLambdaExprNewHoleExprget_IsHoleExprNewThisVarExprget_IsThisVarExprModule@IsProperty@moduleisPropertyIsModuleDefnNewModuleDefnget_IsModuleDefnNewCtorprim_pint32prim_pstringp_listpickle_objAsListget_AsList_fslex_tablesfield622151@field622152@field622153@field622154@field622155@field622156@field622157@field622158@field622159@field622160@field622161@field622162@field622163@field622164@field622165@field622166@field622167@field622168@field622169@field622170@field622171@field622172@field622173@field622174@field622175@field622176@field622177@field622178@field622179@field622180@field622181@field622182@field622183@field622184@field622185@field622186@field622187@field622188@field622189@field622190@field622191@field622192@field622193@field622194@field622195@field622196@field622197@field622198@field622199@field622200@field622201@field622202@field622203@field622204@field622205@field622206@field622207@field622208@field622209@field622210@field622211@field622212@field622213@field622214@field622215@field622216@field622217@field622218@field622219@field622220@field622221@field622222@field622223@field622224@field622225@field622226@field622227@field622228@field622229@field622230@field622231@field622232@field622233@field622234@field622235@field622236@field622237@field622238@field622239@field622240@field622241@field622242@field622243@field622244@field622245@field622246@field622247@field622248@field622249@field622250@field622251@field622252@field622253@field622254@field622255@field622256@field622257@field622258@field622259@field622260@field622261@field622262@field622263@field622264@field622265@field622266@field622267@field622268@field622269@field622270@field622271@field622272@field622273@field622274@field622275@field622276@field622277@field622278@field622279@field622280@field622281@field622282@field622283@field622284@field622285@field622286@field622287@field622288@field622289@field622290@field622291@field622292@field622293@field622294@field622295@field622296@field622297@field622298@field622299@field622300@field622301@field622302@field622303@field622304@field622305@field622306@field622307@field622308@field622309@field622310@field622311@field622312@field622313@field622314@field622315@field622316@field622317@field622318@field622319@field622320@field622321@field622322@field622323@field622324@field622325@field622326@field622327@field622328@field622329@field622330@field622331@field622332@field622333@field622334@field622335@field622336@field622337@field622338@field622339@field622340@field622341@field622342@field622343@field622344@field622345@field622346@field622347@field622348@field622349@field622350@field622351@field622352@field622353@field622354@field622355@field622356@field622357@field622358@field622359@field622360@field622361@field622362@field622363@field622364@field622365@field622366@field622367@field622368@field622369@field622370@field622371@field622372@field622373@field622374@field622375@field622376@field622377@field622378@field622379@field622380@field622381@field622382@field622383@field622384@field622385@field622386@field622387@field622388@field622389@field622390@field622391@field622392@field622393@field622394@field622395@field622396@field622397@field622398@field622399@field622400@field622401@field622402@field622403@field622404@field622405@field622406@field622407@field622408@field622409@field622410@field622411@field622412@field622413@field622414@field622415@field622416@field622417@field622418@field622419@field622420@field622421@field622422@field622423@field622424@field622425@field622426@field622427@field622428@field622429@field622430@field622431@field622432@field622433@field622434@field622435@field622436@field622437@field622438@field622439@field622440@field622441@field622442@field622443@field622444@field622445@field622446@field622447@field622448@field622449@field622450@field622451@field622452@field622453@field622454@field622455@field622456@field622457@field622458@field622459@field622460@field622461@field622462@field622463@field622464@field622465@field622466@field622467@field622468@field622469@field622470@field622471@field622472@field622473@field622474@field622475@field622476@field622477@field622478@field622479@field622480@field622481@field622482@field622483@field622484@field622485@field622486@field622487@field622488@field622489@field622490@field622491@field622492@field622493@field622494@field622495@field622496@field622497@field622498@field622499@field622500@field622501@field622502@field622503@field622504@field622505@field622506@field622507@field622508@field622509@field622510@field622511@field622512@field622513@field622514@field622515@field622516@field622517@field622518@field622519@field622520@field622521@field622522@field622523@field622524@field622525@field622526@field622527@field622528@field622529@field622530@field622531@field622532@field622533@field622534@field622535@field622536@field622537@field622538@field622539@field622540@field622541@field622542@field622543@field622544@field622545@field622546@field622547@field622548@field622549@field622550@field622551@field622552@field622553@field622554@field622555@field622556@field622557@field622558@field622559@field622560@field622561@field622562@field622563@field622564@field622565@field622566@field622567@field622568@field622569@field622570@field622571@field622572@field622573@field622574@field622575@field622576@field622577@field622578@field622579@field622580@field622581@field622582@field622583@field622584@field622585@field622586@field622587@field622588@field622589@field622590@field622591@field622592@field622593@field622594@field622595@field622596@field622597@field622598@field622599@field622600@field622601@field622602@field622603@field622604@field622605@field622606@field622607@field622608@field622609@field622610@field622611@field622612@field622613@field622614@field622615@field622616@field622617@field622618@field622619@field622620@field622621@field622622@field622623@field622624@field622625@field622626@field622627@field622628@field622629@field622630@field622631@field622632@field622633@field622634@field622635@field622636@field622637@field622638@field622639@field622640@field622641@field622642@field622643@field622644@field622645@field622646@field622647@field622648@field622649@field622650@field622651@field622652@field622653@field622654@field622655@field622656@field622657@field622658@field622659@field622660@field622661@field622662@field622663@field622664@field622665@field622666@field622667@field622668@field622669@field622670@field622671@field622672@field622673@field622674@field622675@field622676@field622677@field622678@field622679@field622680@field622681@field622682@field622683@field622684@field622685@field622686@field622687@field622688@field622689@field622690@field622691@field622692@field622693@field622694@field622695@field622696@field622697@field622698@field622699@field622700@field622701@field622702@field622703@field622704@field622705@field622706@field622707@field622708@field622709@field622710@field622711@field622712@field622713@field622714@field622715@field622716@field622717@field622718@field622719@field622720@field622721@field622722@field622723@field622724@field622725@field622726@field622727@field622728@field622729@field622730@field622731@field622732@field622733@field622734@field622735@field622736@field622737@field622738@field622739@field622740@field622741@field622742@field622743@field622744@field622745@field622746@field622747@field622748@field622749@field622750@field622751@field622752@field622753@field622754@field622755@field622756@field622757@field622758@field622759@field622760@field622761@field622762@field622763@field622764@field622765@field622766@field622767@field622768@field622769@field622770@field622771@field622772@field622773@field622774@field622775@field622776@field622777@field622778@field622779@field622780@field622781@field622782@field622783@field622784@field622785@field622786@field622787@field622788@field622789@field622790@field622791@field622792@field622793@field622794@field622795@field622796@field622797@field622798@field622799@field622800@field622801@field622802@field622803@field622804@field622805@field622806@field622807@field622808@field622809@field622810@field622811@field622812@field622813@field622814@field622815@field622816@field622817@field622818@field622819@field622820@field622821@field622822@field622823@field622824@field622825@field622826@field622827@field622828@field622829@field622830@field622831@field622832@field622833@field622834@field622835@field622836@field622837@field622838@field622839@field622840@field622841@field622842@field622843@field622844@field622845@field622846@field622847@field622848@field622849@field622850@field622851@field622852@field622853@field622854@field622855@field622856@field622857@field622858@field622859@field622860@field622861@field622863@lexemetrimBothlexemeTrimBothlexemeTrimRightlexemeTrimLeftfailmsg_0msg_1getSign32isOXBis0OXBget0OXBFormatExceptionformatErrorparse@87parseBinaryUInt64ToUInt64parse@91-1parseOctalUInt64ToLowerToUInt32parseInt32lexemeTrimRightToInt32checkExprOpunexpectedCharfin@125startpstartStringtrySaveXmlDocbufftryAppendXmlDocshouldStartLineextractIdentFromHashIflexedget_transget_actionsget__fslex_tables_fslex_dummyifdefSkipendlinesargs_0sargs_1sargs_2sargs_3verbatimStringtripleQuoteStringsingleLineCommentcargs_0cargs_1cargs_2cargs_3stringInCommentverbatimStringInCommenttripleQuoteStringInCommentmlOnlyparseLeadingDirective@488parseLeadingWhitespace@493parseLineNumber@498parseWhitespaceBeforeFile@507parseFile@513ParseUInt64_fslex_token_fslex_state_fslex_ifdefSkip_fslex_endline_fslex_string_fslex_verbatimString_fslex_tripleQuoteString_fslex_singleLineComment_fslex_comment_fslex_stringInComment_fslex_verbatimStringInComment_fslex_tripleQuoteStringInComment_fslex_mlOnly_m2trans@166-2actions@1591-2_fslex_tables@1592-2stdinMockFilenameget_stdinMockFilenamemkLexargsresourceManagerreusingLexbufForParsingresetLexbufPosusingLexbufForParsingdefaultStringFinisher_endmcallStringFinisherfinaddUnicodeStringaddUnicodeCharaddByteCharstringBufferAsBytesstringBufferIsBytesnewlinetrigraphc3digithexdigitunicodeGraphShorthexGraphShortunicodeGraphLongescapeStatusExplicitlySetWarnOnMultipleTokensinitialstatusget_Statusset_Statusget_ExplicitlySetget_WarnOnMultipleTokensInternIdentifierTokendefines@ifdefStack@resourceManager@lightSyntaxStatus@errorLogger@get_definesget_ifdefStackget_resourceManagerget_lightSyntaxStatusget_errorLoggerkeywordListunreserveWordskeywordNameskeywordTabletab@301-1enumerator@302-2permitFsharpKeywordsget_keywordListget_unreserveWordsget_keywordNamesget_keywordTableget_tab@301-1get_enumerator@302-2get_permitFsharpKeywordsset_permitFsharpKeywordsIdentifierTokenKeywordOrIdentifierToken$cont@320KeywordOrIdentifierTokenQuoteIdentifierIfNeededALWAYSIsALWAYSFSHARPIsFSHARP_unique_ALWAYS_unique_FSHARPget_ALWAYSget_IsALWAYSget_FSHARPget_IsFSHARPkeywordList@190unreserveWords@289keywordNames@296keywordTable@299tab@301permitFsharpKeywords@308_fsyacc_endOfInputTag_fsyacc_tagOfErrorTerminal_fsyacc_gotos_fsyacc_sparseGotoTableRowOffsets_fsyacc_stateToProdIdxsTableElements_fsyacc_stateToProdIdxsTableRowOffsets_fsyacc_action_rows_fsyacc_actionTableElements_fsyacc_actionTableRowOffsets_fsyacc_reductionSymbolCounts_fsyacc_productionToNonTerminalTable_fsyacc_immediateActionsfield622136@field622138@field622140@field622142@field622144@field622145@field622147@field622148@field622149@debugPrintexprFromParseErrorpatFromParseErrormkSynOptionalExprxoptrun@54lastSeprebindRangesfirst_0first_1mkUnderscoreRecdFieldmkRecdFieldmkSynDoBindingmkSynDoDecladdAttribsparse_error_richreportParseErrorAtunionRangeWithPosraiseParseErrorAtcheckEndOfFileErrormkClassMemberLocalBindingsinitialRangeOptmkLocalBindingsmkDefnBindingsattrsmidOfPatcheckForMultipleAugmentationsgrabXmlDocelemIdxunionRangeWithListByprojectRangeFromThinglistOfThingrangeOfNonNilAttrsrangeOfLongIdentGetHashCode$cont@364-9GetHashCode$cont@560-10tokenTagToTokenIdprodIdxToNonTerminalget__fsyacc_endOfInputTagget__fsyacc_tagOfErrorTerminaltoken_to_string_fsyacc_dataOfTokenget__fsyacc_gotosget__fsyacc_sparseGotoTableRowOffsetsget__fsyacc_stateToProdIdxsTableElementsget__fsyacc_stateToProdIdxsTableRowOffsetsget__fsyacc_action_rowsget__fsyacc_actionTableElementsget__fsyacc_actionTableRowOffsetsget__fsyacc_reductionSymbolCountsget__fsyacc_productionToNonTerminalTableget__fsyacc_immediateActionsgetSetAdjuster@1164getSetgo@1391-5mBindLhsadjustValueArg@1440valueArgmergeLidVisOuter@1481lidVisOuterlidVisInnerargs$cont@1497go@1490-6lidOuter_fsyacc_reductions$cont@1421_3propertyNameBindingBuildermemFlagsBuilderoptReturnTypebindingBuilderoptInlinememberKindgetSetAdjuster@1575-1attrLocalBindingBuilder@2207_1localBindingBuilder_fsyacc_reductionstablesenginesignatureFileimplementationFileinteractionNewBindingSetPreAttrsthingIsHASH_IFIsHASH_ELSEIsHASH_ENDIFIsCOMMENTIsWHITESPACEIsHASH_LINEIsHASH_LIGHTIsINACTIVECODEIsLINE_COMMENTIsSTRING_TEXTIsEOFIsLEX_FAILUREIsODUMMYOINTERFACE_MEMBERIsOINTERFACE_MEMBEROBLOCKENDIsOBLOCKENDOBLOCKEND_COMING_SOONIsOBLOCKEND_COMING_SOONOBLOCKEND_IS_HEREIsOBLOCKEND_IS_HEREORIGHT_BLOCK_ENDIsORIGHT_BLOCK_ENDODECLENDIsODECLENDOENDIsOENDOBLOCKSEPIsOBLOCKSEPOBLOCKBEGINIsOBLOCKBEGINORESETIsORESETOFUNIsOFUNOFUNCTIONIsOFUNCTIONOWITHIsOWITHOELSEIsOELSEOTHENIsOTHENODO_BANGIsODO_BANGODOIsODOIsOBINDERIsOLETHIGH_PRECEDENCE_TYAPPIsHIGH_PRECEDENCE_TYAPPHIGH_PRECEDENCE_PAREN_APPIsHIGH_PRECEDENCE_PAREN_APPHIGH_PRECEDENCE_BRACK_APPIsHIGH_PRECEDENCE_BRACK_APPTYPE_COMING_SOONIsTYPE_COMING_SOONTYPE_IS_HEREIsTYPE_IS_HEREMODULE_COMING_SOONIsMODULE_COMING_SOONMODULE_IS_HEREIsMODULE_IS_HEREEXTERNIsEXTERNVOIDIsVOIDPUBLICIsPUBLICPRIVATEIsPRIVATEINTERNALIsINTERNALGLOBALIsGLOBALSTATICIsSTATICMEMBERIsMEMBERCLASSIsCLASSABSTRACTIsABSTRACTOVERRIDEIsOVERRIDEDEFAULTIsDEFAULTCONSTRUCTORIsCONSTRUCTORINHERITIsINHERITGREATER_RBRACKIsGREATER_RBRACKSTRUCTIsSTRUCTSIGIsSIGBARIsBARRBRACKIsRBRACKRBRACEIsRBRACERBRACE_COMING_SOONIsRBRACE_COMING_SOONRBRACE_IS_HEREIsRBRACE_IS_HEREMINUSIsMINUSDOLLARIsDOLLARLBRACE_LESSIsLBRACE_LESSBAR_RBRACKIsBAR_RBRACKGREATER_RBRACEIsGREATER_RBRACEUNDERSCOREIsUNDERSCORESEMICOLON_SEMICOLONIsSEMICOLON_SEMICOLONLARROWIsLARROWEQUALSIsEQUALSLBRACKIsLBRACKLBRACK_BARIsLBRACK_BARLBRACK_LESSIsLBRACK_LESSLBRACEIsLBRACEQMARKIsQMARKQMARK_QMARKIsQMARK_QMARKDOTIsDOTCOLONIsCOLONCOLON_COLONIsCOLON_COLONCOLON_GREATERIsCOLON_GREATERCOLON_QMARK_GREATERIsCOLON_QMARK_GREATERCOLON_QMARKIsCOLON_QMARKCOLON_EQUALSIsCOLON_EQUALSSEMICOLONIsSEMICOLONWHENIsWHENWHILEIsWHILEWITHIsWITHHASHIsHASHAMPIsAMPAMP_AMPIsAMP_AMPQUOTEIsQUOTELPARENIsLPARENRPARENIsRPARENRPAREN_COMING_SOONIsRPAREN_COMING_SOONRPAREN_IS_HEREIsRPAREN_IS_HERESTARIsSTARCOMMAIsCOMMARARROWIsRARROWGREATER_BAR_RBRACKIsGREATER_BAR_RBRACKLPAREN_STAR_RPARENIsLPAREN_STAR_RPARENOPENIsOPENORIsORRECIsRECTHENIsTHENTOIsTOTRUEIsTRUETRYIsTRYTYPEIsTYPEVALIsVALINLINEIsINLINEINTERFACEIsINTERFACEINSTANCEIsINSTANCECONSTIsCONSTLAZYIsLAZYOLAZYIsOLAZYMATCHIsMATCHMUTABLEIsMUTABLENEWIsNEWOFIsOFEXCEPTIONIsEXCEPTIONFALSEIsFALSEFORIsFORFUNIsFUNFUNCTIONIsFUNCTIONIFIsIFINIsINJOIN_INIsJOIN_INFINALLYIsFINALLYDO_BANGIsDO_BANGANDIsANDASIsASASSERTIsASSERTOASSERTIsOASSERTASRIsASRBEGINIsBEGINDOIsDODONEIsDONEDOWNTOIsDOWNTOELSEIsELSEELIFIsELIFENDIsENDDOT_DOTIsDOT_DOTBAR_BARIsBAR_BARUPCASTIsUPCASTDOWNCASTIsDOWNCASTNULLIsNULLRESERVEDIsRESERVEDMODULEIsMODULENAMESPACEIsNAMESPACEDELEGATEIsDELEGATECONSTRAINTIsCONSTRAINTBASEIsBASEIsLQUOTEIsRQUOTEIsRQUOTE_DOTIsPERCENT_OPIsBINDERIsLESSIsGREATERIsLETIsYIELDIsYIELD_BANGIsBIGNUMIsDECIMALIsCHARIsIEEE64IsIEEE32IsNATIVEINTIsUNATIVEINTIsUINT64IsUINT32IsUINT16IsUINT8IsINT64IsINT32IsINT32_DOT_DOTIsINT16IsINT8IsFUNKY_OPERATOR_NAMEIsADJACENT_PREFIX_OPIsPLUS_MINUS_OPIsINFIX_AMP_OPIsINFIX_STAR_DIV_MOD_OPIsPREFIX_OPIsINFIX_BAR_OPIsINFIX_AT_HAT_OPIsINFIX_COMPARE_OPIsINFIX_STAR_STAR_OPIsIDENTIsKEYWORD_STRINGIsSTRINGIsBYTEARRAY_unique_OINTERFACE_MEMBER_unique_OBLOCKEND_unique_OBLOCKEND_COMING_SOON_unique_OBLOCKEND_IS_HERE_unique_ORIGHT_BLOCK_END_unique_ODECLEND_unique_OEND_unique_OBLOCKSEP_unique_OBLOCKBEGIN_unique_ORESET_unique_OFUN_unique_OFUNCTION_unique_OWITH_unique_OELSE_unique_OTHEN_unique_ODO_BANG_unique_ODO_unique_HIGH_PRECEDENCE_TYAPP_unique_HIGH_PRECEDENCE_PAREN_APP_unique_HIGH_PRECEDENCE_BRACK_APP_unique_TYPE_COMING_SOON_unique_TYPE_IS_HERE_unique_MODULE_COMING_SOON_unique_MODULE_IS_HERE_unique_EXTERN_unique_VOID_unique_PUBLIC_unique_PRIVATE_unique_INTERNAL_unique_GLOBAL_unique_STATIC_unique_MEMBER_unique_CLASS_unique_ABSTRACT_unique_OVERRIDE_unique_DEFAULT_unique_CONSTRUCTOR_unique_INHERIT_unique_GREATER_RBRACK_unique_STRUCT_unique_SIG_unique_BAR_unique_RBRACK_unique_RBRACE_unique_RBRACE_COMING_SOON_unique_RBRACE_IS_HERE_unique_MINUS_unique_DOLLAR_unique_LBRACE_LESS_unique_BAR_RBRACK_unique_GREATER_RBRACE_unique_UNDERSCORE_unique_SEMICOLON_SEMICOLON_unique_LARROW_unique_EQUALS_unique_LBRACK_unique_LBRACK_BAR_unique_LBRACK_LESS_unique_LBRACE_unique_QMARK_unique_QMARK_QMARK_unique_DOT_unique_COLON_unique_COLON_COLON_unique_COLON_GREATER_unique_COLON_QMARK_GREATER_unique_COLON_QMARK_unique_COLON_EQUALS_unique_SEMICOLON_unique_WHEN_unique_WHILE_unique_WITH_unique_HASH_unique_AMP_unique_AMP_AMP_unique_QUOTE_unique_LPAREN_unique_RPAREN_unique_RPAREN_COMING_SOON_unique_RPAREN_IS_HERE_unique_STAR_unique_COMMA_unique_RARROW_unique_GREATER_BAR_RBRACK_unique_LPAREN_STAR_RPAREN_unique_OPEN_unique_OR_unique_REC_unique_THEN_unique_TO_unique_TRUE_unique_TRY_unique_TYPE_unique_VAL_unique_INLINE_unique_INTERFACE_unique_INSTANCE_unique_CONST_unique_LAZY_unique_OLAZY_unique_MATCH_unique_MUTABLE_unique_NEW_unique_OF_unique_EXCEPTION_unique_FALSE_unique_FOR_unique_FUN_unique_FUNCTION_unique_IF_unique_IN_unique_JOIN_IN_unique_FINALLY_unique_DO_BANG_unique_AND_unique_AS_unique_ASSERT_unique_OASSERT_unique_ASR_unique_BEGIN_unique_DO_unique_DONE_unique_DOWNTO_unique_ELSE_unique_ELIF_unique_END_unique_DOT_DOT_unique_BAR_BAR_unique_UPCAST_unique_DOWNCAST_unique_NULL_unique_RESERVED_unique_MODULE_unique_NAMESPACE_unique_DELEGATE_unique_CONSTRAINT_unique_BASENewHASH_IFget_IsHASH_IFNewHASH_ELSEget_IsHASH_ELSENewHASH_ENDIFget_IsHASH_ENDIFNewCOMMENTget_IsCOMMENTNewWHITESPACEget_IsWHITESPACENewHASH_LINEget_IsHASH_LINENewHASH_LIGHTget_IsHASH_LIGHTNewINACTIVECODEget_IsINACTIVECODENewLINE_COMMENTget_IsLINE_COMMENTNewSTRING_TEXTget_IsSTRING_TEXTNewEOFget_IsEOFNewLEX_FAILUREget_IsLEX_FAILURENewODUMMYget_IsODUMMYget_OINTERFACE_MEMBERget_IsOINTERFACE_MEMBERget_OBLOCKENDget_IsOBLOCKENDget_OBLOCKEND_COMING_SOONget_IsOBLOCKEND_COMING_SOONget_OBLOCKEND_IS_HEREget_IsOBLOCKEND_IS_HEREget_ORIGHT_BLOCK_ENDget_IsORIGHT_BLOCK_ENDget_ODECLENDget_IsODECLENDget_OENDget_IsOENDget_OBLOCKSEPget_IsOBLOCKSEPget_OBLOCKBEGINget_IsOBLOCKBEGINget_ORESETget_IsORESETget_OFUNget_IsOFUNget_OFUNCTIONget_IsOFUNCTIONget_OWITHget_IsOWITHget_OELSEget_IsOELSEget_OTHENget_IsOTHENget_ODO_BANGget_IsODO_BANGget_ODOget_IsODONewOBINDERget_IsOBINDERNewOLETget_IsOLETget_HIGH_PRECEDENCE_TYAPPget_IsHIGH_PRECEDENCE_TYAPPget_HIGH_PRECEDENCE_PAREN_APPget_IsHIGH_PRECEDENCE_PAREN_APPget_HIGH_PRECEDENCE_BRACK_APPget_IsHIGH_PRECEDENCE_BRACK_APPget_TYPE_COMING_SOONget_IsTYPE_COMING_SOONget_TYPE_IS_HEREget_IsTYPE_IS_HEREget_MODULE_COMING_SOONget_IsMODULE_COMING_SOONget_MODULE_IS_HEREget_IsMODULE_IS_HEREget_EXTERNget_IsEXTERNget_VOIDget_IsVOIDget_PUBLICget_IsPUBLICget_PRIVATEget_IsPRIVATEget_INTERNALget_IsINTERNALget_GLOBALget_IsGLOBALget_STATICget_IsSTATICget_MEMBERget_IsMEMBERget_CLASSget_IsCLASSget_ABSTRACTget_IsABSTRACTget_OVERRIDEget_IsOVERRIDEget_DEFAULTget_IsDEFAULTget_CONSTRUCTORget_IsCONSTRUCTORget_INHERITget_IsINHERITget_GREATER_RBRACKget_IsGREATER_RBRACKget_STRUCTget_IsSTRUCTget_SIGget_IsSIGget_BARget_IsBARget_RBRACKget_IsRBRACKget_RBRACEget_IsRBRACEget_RBRACE_COMING_SOONget_IsRBRACE_COMING_SOONget_RBRACE_IS_HEREget_IsRBRACE_IS_HEREget_MINUSget_IsMINUSget_DOLLARget_IsDOLLARget_LBRACE_LESSget_IsLBRACE_LESSget_BAR_RBRACKget_IsBAR_RBRACKget_GREATER_RBRACEget_IsGREATER_RBRACEget_UNDERSCOREget_IsUNDERSCOREget_SEMICOLON_SEMICOLONget_IsSEMICOLON_SEMICOLONget_LARROWget_IsLARROWget_EQUALSget_IsEQUALSget_LBRACKget_IsLBRACKget_LBRACK_BARget_IsLBRACK_BARget_LBRACK_LESSget_IsLBRACK_LESSget_LBRACEget_IsLBRACEget_QMARKget_IsQMARKget_QMARK_QMARKget_IsQMARK_QMARKget_DOTget_IsDOTget_COLONget_IsCOLONget_COLON_COLONget_IsCOLON_COLONget_COLON_GREATERget_IsCOLON_GREATERget_COLON_QMARK_GREATERget_IsCOLON_QMARK_GREATERget_COLON_QMARKget_IsCOLON_QMARKget_COLON_EQUALSget_IsCOLON_EQUALSget_SEMICOLONget_IsSEMICOLONget_WHENget_IsWHENget_WHILEget_IsWHILEget_WITHget_IsWITHget_HASHget_IsHASHget_AMPget_IsAMPget_AMP_AMPget_IsAMP_AMPget_QUOTEget_IsQUOTEget_LPARENget_IsLPARENget_RPARENget_IsRPARENget_RPAREN_COMING_SOONget_IsRPAREN_COMING_SOONget_RPAREN_IS_HEREget_IsRPAREN_IS_HEREget_STARget_IsSTARget_COMMAget_IsCOMMAget_RARROWget_IsRARROWget_GREATER_BAR_RBRACKget_IsGREATER_BAR_RBRACKget_LPAREN_STAR_RPARENget_IsLPAREN_STAR_RPARENget_OPENget_IsOPENget_ORget_IsORget_RECget_IsRECget_THENget_IsTHENget_TOget_IsTOget_TRUEget_IsTRUEget_TRYget_IsTRYget_TYPEget_IsTYPEget_VALget_IsVALget_INLINEget_IsINLINEget_INTERFACEget_IsINTERFACEget_INSTANCEget_IsINSTANCEget_CONSTget_IsCONSTget_LAZYget_IsLAZYget_OLAZYget_IsOLAZYget_MATCHget_IsMATCHget_MUTABLEget_IsMUTABLEget_NEWget_IsNEWget_OFget_IsOFget_EXCEPTIONget_IsEXCEPTIONget_FALSEget_IsFALSEget_FORget_IsFORget_FUNget_IsFUNget_FUNCTIONget_IsFUNCTIONget_IFget_IsIFget_INget_IsINget_JOIN_INget_IsJOIN_INget_FINALLYget_IsFINALLYget_DO_BANGget_IsDO_BANGget_ANDget_IsANDget_ASget_IsASget_ASSERTget_IsASSERTget_OASSERTget_IsOASSERTget_ASRget_IsASRget_BEGINget_IsBEGINget_DOget_IsDOget_DONEget_IsDONEget_DOWNTOget_IsDOWNTOget_ELSEget_IsELSEget_ELIFget_IsELIFget_ENDget_IsENDget_DOT_DOTget_IsDOT_DOTget_BAR_BARget_IsBAR_BARget_UPCASTget_IsUPCASTget_DOWNCASTget_IsDOWNCASTget_NULLget_IsNULLget_RESERVEDget_IsRESERVEDget_MODULEget_IsMODULEget_NAMESPACEget_IsNAMESPACEget_DELEGATEget_IsDELEGATEget_CONSTRAINTget_IsCONSTRAINTget_BASEget_IsBASENewLQUOTEget_IsLQUOTENewRQUOTEget_IsRQUOTENewRQUOTE_DOTget_IsRQUOTE_DOTNewPERCENT_OPget_IsPERCENT_OPNewBINDERget_IsBINDERNewLESSget_IsLESSNewGREATERget_IsGREATERNewLETget_IsLETNewYIELDget_IsYIELDNewYIELD_BANGget_IsYIELD_BANGNewBIGNUMget_IsBIGNUMNewDECIMALget_IsDECIMALNewCHARget_IsCHARNewIEEE64get_IsIEEE64NewIEEE32get_IsIEEE32NewNATIVEINTget_IsNATIVEINTNewUNATIVEINTget_IsUNATIVEINTNewUINT64get_IsUINT64NewUINT32get_IsUINT32NewUINT16get_IsUINT16NewUINT8get_IsUINT8NewINT64get_IsINT64NewINT32get_IsINT32NewINT32_DOT_DOTget_IsINT32_DOT_DOTNewINT16get_IsINT16NewINT8get_IsINT8NewFUNKY_OPERATOR_NAMEget_IsFUNKY_OPERATOR_NAMENewADJACENT_PREFIX_OPget_IsADJACENT_PREFIX_OPNewPLUS_MINUS_OPget_IsPLUS_MINUS_OPNewINFIX_AMP_OPget_IsINFIX_AMP_OPNewINFIX_STAR_DIV_MOD_OPget_IsINFIX_STAR_DIV_MOD_OPNewPREFIX_OPget_IsPREFIX_OPNewINFIX_BAR_OPget_IsINFIX_BAR_OPNewINFIX_AT_HAT_OPget_IsINFIX_AT_HAT_OPNewINFIX_COMPARE_OPget_IsINFIX_COMPARE_OPNewINFIX_STAR_STAR_OPget_IsINFIX_STAR_STAR_OPNewIDENTget_IsIDENTNewKEYWORD_STRINGget_IsKEYWORD_STRINGNewSTRINGget_IsSTRINGNewBYTEARRAYget_IsBYTEARRAYTOKEN_HASH_IFIsTOKEN_HASH_IFTOKEN_HASH_ELSEIsTOKEN_HASH_ELSETOKEN_HASH_ENDIFIsTOKEN_HASH_ENDIFTOKEN_COMMENTIsTOKEN_COMMENTTOKEN_WHITESPACEIsTOKEN_WHITESPACETOKEN_HASH_LINEIsTOKEN_HASH_LINETOKEN_HASH_LIGHTIsTOKEN_HASH_LIGHTTOKEN_INACTIVECODEIsTOKEN_INACTIVECODETOKEN_LINE_COMMENTIsTOKEN_LINE_COMMENTTOKEN_STRING_TEXTIsTOKEN_STRING_TEXTTOKEN_EOFIsTOKEN_EOFTOKEN_LEX_FAILUREIsTOKEN_LEX_FAILURETOKEN_ODUMMYIsTOKEN_ODUMMYTOKEN_OINTERFACE_MEMBERIsTOKEN_OINTERFACE_MEMBERTOKEN_OBLOCKENDIsTOKEN_OBLOCKENDTOKEN_OBLOCKEND_COMING_SOONIsTOKEN_OBLOCKEND_COMING_SOONTOKEN_OBLOCKEND_IS_HEREIsTOKEN_OBLOCKEND_IS_HERETOKEN_ORIGHT_BLOCK_ENDIsTOKEN_ORIGHT_BLOCK_ENDTOKEN_ODECLENDIsTOKEN_ODECLENDTOKEN_OENDIsTOKEN_OENDTOKEN_OBLOCKSEPIsTOKEN_OBLOCKSEPTOKEN_OBLOCKBEGINIsTOKEN_OBLOCKBEGINTOKEN_ORESETIsTOKEN_ORESETTOKEN_OFUNIsTOKEN_OFUNTOKEN_OFUNCTIONIsTOKEN_OFUNCTIONTOKEN_OWITHIsTOKEN_OWITHTOKEN_OELSEIsTOKEN_OELSETOKEN_OTHENIsTOKEN_OTHENTOKEN_ODO_BANGIsTOKEN_ODO_BANGTOKEN_ODOIsTOKEN_ODOTOKEN_OBINDERIsTOKEN_OBINDERTOKEN_OLETIsTOKEN_OLETTOKEN_HIGH_PRECEDENCE_TYAPPIsTOKEN_HIGH_PRECEDENCE_TYAPPTOKEN_HIGH_PRECEDENCE_PAREN_APPIsTOKEN_HIGH_PRECEDENCE_PAREN_APPTOKEN_HIGH_PRECEDENCE_BRACK_APPIsTOKEN_HIGH_PRECEDENCE_BRACK_APPTOKEN_TYPE_COMING_SOONIsTOKEN_TYPE_COMING_SOONTOKEN_TYPE_IS_HEREIsTOKEN_TYPE_IS_HERETOKEN_MODULE_COMING_SOONIsTOKEN_MODULE_COMING_SOONTOKEN_MODULE_IS_HEREIsTOKEN_MODULE_IS_HERETOKEN_EXTERNIsTOKEN_EXTERNTOKEN_VOIDIsTOKEN_VOIDTOKEN_PUBLICIsTOKEN_PUBLICTOKEN_PRIVATEIsTOKEN_PRIVATETOKEN_INTERNALIsTOKEN_INTERNALTOKEN_GLOBALIsTOKEN_GLOBALTOKEN_STATICIsTOKEN_STATICTOKEN_MEMBERIsTOKEN_MEMBERTOKEN_CLASSIsTOKEN_CLASSTOKEN_ABSTRACTIsTOKEN_ABSTRACTTOKEN_OVERRIDEIsTOKEN_OVERRIDETOKEN_DEFAULTIsTOKEN_DEFAULTTOKEN_CONSTRUCTORIsTOKEN_CONSTRUCTORTOKEN_INHERITIsTOKEN_INHERITTOKEN_GREATER_RBRACKIsTOKEN_GREATER_RBRACKTOKEN_STRUCTIsTOKEN_STRUCTTOKEN_SIGIsTOKEN_SIGTOKEN_BARIsTOKEN_BARTOKEN_RBRACKIsTOKEN_RBRACKTOKEN_RBRACEIsTOKEN_RBRACETOKEN_RBRACE_COMING_SOONIsTOKEN_RBRACE_COMING_SOONTOKEN_RBRACE_IS_HEREIsTOKEN_RBRACE_IS_HERETOKEN_MINUSIsTOKEN_MINUSTOKEN_DOLLARIsTOKEN_DOLLARTOKEN_LBRACE_LESSIsTOKEN_LBRACE_LESSTOKEN_BAR_RBRACKIsTOKEN_BAR_RBRACKTOKEN_GREATER_RBRACEIsTOKEN_GREATER_RBRACETOKEN_UNDERSCOREIsTOKEN_UNDERSCORETOKEN_SEMICOLON_SEMICOLONIsTOKEN_SEMICOLON_SEMICOLONTOKEN_LARROWIsTOKEN_LARROWTOKEN_EQUALSIsTOKEN_EQUALSTOKEN_LBRACKIsTOKEN_LBRACKTOKEN_LBRACK_BARIsTOKEN_LBRACK_BARTOKEN_LBRACK_LESSIsTOKEN_LBRACK_LESSTOKEN_LBRACEIsTOKEN_LBRACETOKEN_QMARKIsTOKEN_QMARKTOKEN_QMARK_QMARKIsTOKEN_QMARK_QMARKTOKEN_DOTIsTOKEN_DOTTOKEN_COLONIsTOKEN_COLONTOKEN_COLON_COLONIsTOKEN_COLON_COLONTOKEN_COLON_GREATERIsTOKEN_COLON_GREATERTOKEN_COLON_QMARK_GREATERIsTOKEN_COLON_QMARK_GREATERTOKEN_COLON_QMARKIsTOKEN_COLON_QMARKTOKEN_COLON_EQUALSIsTOKEN_COLON_EQUALSTOKEN_SEMICOLONIsTOKEN_SEMICOLONTOKEN_WHENIsTOKEN_WHENTOKEN_WHILEIsTOKEN_WHILETOKEN_WITHIsTOKEN_WITHTOKEN_HASHIsTOKEN_HASHTOKEN_AMPIsTOKEN_AMPTOKEN_AMP_AMPIsTOKEN_AMP_AMPTOKEN_QUOTEIsTOKEN_QUOTETOKEN_LPARENIsTOKEN_LPARENTOKEN_RPARENIsTOKEN_RPARENTOKEN_RPAREN_COMING_SOONIsTOKEN_RPAREN_COMING_SOONTOKEN_RPAREN_IS_HEREIsTOKEN_RPAREN_IS_HERETOKEN_STARIsTOKEN_STARTOKEN_COMMAIsTOKEN_COMMATOKEN_RARROWIsTOKEN_RARROWTOKEN_GREATER_BAR_RBRACKIsTOKEN_GREATER_BAR_RBRACKTOKEN_LPAREN_STAR_RPARENIsTOKEN_LPAREN_STAR_RPARENTOKEN_OPENIsTOKEN_OPENTOKEN_ORIsTOKEN_ORTOKEN_RECIsTOKEN_RECTOKEN_THENIsTOKEN_THENTOKEN_TOIsTOKEN_TOTOKEN_TRUEIsTOKEN_TRUETOKEN_TRYIsTOKEN_TRYTOKEN_TYPEIsTOKEN_TYPETOKEN_VALIsTOKEN_VALTOKEN_INLINEIsTOKEN_INLINETOKEN_INTERFACEIsTOKEN_INTERFACETOKEN_INSTANCEIsTOKEN_INSTANCETOKEN_CONSTIsTOKEN_CONSTTOKEN_LAZYIsTOKEN_LAZYTOKEN_OLAZYIsTOKEN_OLAZYTOKEN_MATCHIsTOKEN_MATCHTOKEN_MUTABLEIsTOKEN_MUTABLETOKEN_NEWIsTOKEN_NEWTOKEN_OFIsTOKEN_OFTOKEN_EXCEPTIONIsTOKEN_EXCEPTIONTOKEN_FALSEIsTOKEN_FALSETOKEN_FORIsTOKEN_FORTOKEN_FUNIsTOKEN_FUNTOKEN_FUNCTIONIsTOKEN_FUNCTIONTOKEN_IFIsTOKEN_IFTOKEN_INIsTOKEN_INTOKEN_JOIN_INIsTOKEN_JOIN_INTOKEN_FINALLYIsTOKEN_FINALLYTOKEN_DO_BANGIsTOKEN_DO_BANGTOKEN_ANDIsTOKEN_ANDTOKEN_ASIsTOKEN_ASTOKEN_ASSERTIsTOKEN_ASSERTTOKEN_OASSERTIsTOKEN_OASSERTTOKEN_ASRIsTOKEN_ASRTOKEN_BEGINIsTOKEN_BEGINTOKEN_DOIsTOKEN_DOTOKEN_DONEIsTOKEN_DONETOKEN_DOWNTOIsTOKEN_DOWNTOTOKEN_ELSEIsTOKEN_ELSETOKEN_ELIFIsTOKEN_ELIFTOKEN_ENDIsTOKEN_ENDTOKEN_DOT_DOTIsTOKEN_DOT_DOTTOKEN_BAR_BARIsTOKEN_BAR_BARTOKEN_UPCASTIsTOKEN_UPCASTTOKEN_DOWNCASTIsTOKEN_DOWNCASTTOKEN_NULLIsTOKEN_NULLTOKEN_RESERVEDIsTOKEN_RESERVEDTOKEN_MODULEIsTOKEN_MODULETOKEN_NAMESPACEIsTOKEN_NAMESPACETOKEN_DELEGATEIsTOKEN_DELEGATETOKEN_CONSTRAINTIsTOKEN_CONSTRAINTTOKEN_BASEIsTOKEN_BASETOKEN_LQUOTEIsTOKEN_LQUOTETOKEN_RQUOTEIsTOKEN_RQUOTETOKEN_RQUOTE_DOTIsTOKEN_RQUOTE_DOTTOKEN_PERCENT_OPIsTOKEN_PERCENT_OPTOKEN_BINDERIsTOKEN_BINDERTOKEN_LESSIsTOKEN_LESSTOKEN_GREATERIsTOKEN_GREATERTOKEN_LETIsTOKEN_LETTOKEN_YIELDIsTOKEN_YIELDTOKEN_YIELD_BANGIsTOKEN_YIELD_BANGTOKEN_BIGNUMIsTOKEN_BIGNUMTOKEN_DECIMALIsTOKEN_DECIMALTOKEN_CHARIsTOKEN_CHARTOKEN_IEEE64IsTOKEN_IEEE64TOKEN_IEEE32IsTOKEN_IEEE32TOKEN_NATIVEINTIsTOKEN_NATIVEINTTOKEN_UNATIVEINTIsTOKEN_UNATIVEINTTOKEN_UINT64IsTOKEN_UINT64TOKEN_UINT32IsTOKEN_UINT32TOKEN_UINT16IsTOKEN_UINT16TOKEN_UINT8IsTOKEN_UINT8TOKEN_INT64IsTOKEN_INT64TOKEN_INT32IsTOKEN_INT32TOKEN_INT32_DOT_DOTIsTOKEN_INT32_DOT_DOTTOKEN_INT16IsTOKEN_INT16TOKEN_INT8IsTOKEN_INT8TOKEN_FUNKY_OPERATOR_NAMEIsTOKEN_FUNKY_OPERATOR_NAMETOKEN_ADJACENT_PREFIX_OPIsTOKEN_ADJACENT_PREFIX_OPTOKEN_PLUS_MINUS_OPIsTOKEN_PLUS_MINUS_OPTOKEN_INFIX_AMP_OPIsTOKEN_INFIX_AMP_OPTOKEN_INFIX_STAR_DIV_MOD_OPIsTOKEN_INFIX_STAR_DIV_MOD_OPTOKEN_PREFIX_OPIsTOKEN_PREFIX_OPTOKEN_INFIX_BAR_OPIsTOKEN_INFIX_BAR_OPTOKEN_INFIX_AT_HAT_OPIsTOKEN_INFIX_AT_HAT_OPTOKEN_INFIX_COMPARE_OPIsTOKEN_INFIX_COMPARE_OPTOKEN_INFIX_STAR_STAR_OPIsTOKEN_INFIX_STAR_STAR_OPTOKEN_IDENTIsTOKEN_IDENTTOKEN_KEYWORD_STRINGIsTOKEN_KEYWORD_STRINGTOKEN_STRINGIsTOKEN_STRINGTOKEN_BYTEARRAYIsTOKEN_BYTEARRAYTOKEN_end_of_inputIsTOKEN_end_of_inputTOKEN_errorIsTOKEN_error_unique_TOKEN_HASH_IF_unique_TOKEN_HASH_ELSE_unique_TOKEN_HASH_ENDIF_unique_TOKEN_COMMENT_unique_TOKEN_WHITESPACE_unique_TOKEN_HASH_LINE_unique_TOKEN_HASH_LIGHT_unique_TOKEN_INACTIVECODE_unique_TOKEN_LINE_COMMENT_unique_TOKEN_STRING_TEXT_unique_TOKEN_EOF_unique_TOKEN_LEX_FAILURE_unique_TOKEN_ODUMMY_unique_TOKEN_OINTERFACE_MEMBER_unique_TOKEN_OBLOCKEND_unique_TOKEN_OBLOCKEND_COMING_SOON_unique_TOKEN_OBLOCKEND_IS_HERE_unique_TOKEN_ORIGHT_BLOCK_END_unique_TOKEN_ODECLEND_unique_TOKEN_OEND_unique_TOKEN_OBLOCKSEP_unique_TOKEN_OBLOCKBEGIN_unique_TOKEN_ORESET_unique_TOKEN_OFUN_unique_TOKEN_OFUNCTION_unique_TOKEN_OWITH_unique_TOKEN_OELSE_unique_TOKEN_OTHEN_unique_TOKEN_ODO_BANG_unique_TOKEN_ODO_unique_TOKEN_OBINDER_unique_TOKEN_OLET_unique_TOKEN_HIGH_PRECEDENCE_TYAPP_unique_TOKEN_HIGH_PRECEDENCE_PAREN_APP_unique_TOKEN_HIGH_PRECEDENCE_BRACK_APP_unique_TOKEN_TYPE_COMING_SOON_unique_TOKEN_TYPE_IS_HERE_unique_TOKEN_MODULE_COMING_SOON_unique_TOKEN_MODULE_IS_HERE_unique_TOKEN_EXTERN_unique_TOKEN_VOID_unique_TOKEN_PUBLIC_unique_TOKEN_PRIVATE_unique_TOKEN_INTERNAL_unique_TOKEN_GLOBAL_unique_TOKEN_STATIC_unique_TOKEN_MEMBER_unique_TOKEN_CLASS_unique_TOKEN_ABSTRACT_unique_TOKEN_OVERRIDE_unique_TOKEN_DEFAULT_unique_TOKEN_CONSTRUCTOR_unique_TOKEN_INHERIT_unique_TOKEN_GREATER_RBRACK_unique_TOKEN_STRUCT_unique_TOKEN_SIG_unique_TOKEN_BAR_unique_TOKEN_RBRACK_unique_TOKEN_RBRACE_unique_TOKEN_RBRACE_COMING_SOON_unique_TOKEN_RBRACE_IS_HERE_unique_TOKEN_MINUS_unique_TOKEN_DOLLAR_unique_TOKEN_LBRACE_LESS_unique_TOKEN_BAR_RBRACK_unique_TOKEN_GREATER_RBRACE_unique_TOKEN_UNDERSCORE_unique_TOKEN_SEMICOLON_SEMICOLON_unique_TOKEN_LARROW_unique_TOKEN_EQUALS_unique_TOKEN_LBRACK_unique_TOKEN_LBRACK_BAR_unique_TOKEN_LBRACK_LESS_unique_TOKEN_LBRACE_unique_TOKEN_QMARK_unique_TOKEN_QMARK_QMARK_unique_TOKEN_DOT_unique_TOKEN_COLON_unique_TOKEN_COLON_COLON_unique_TOKEN_COLON_GREATER_unique_TOKEN_COLON_QMARK_GREATER_unique_TOKEN_COLON_QMARK_unique_TOKEN_COLON_EQUALS_unique_TOKEN_SEMICOLON_unique_TOKEN_WHEN_unique_TOKEN_WHILE_unique_TOKEN_WITH_unique_TOKEN_HASH_unique_TOKEN_AMP_unique_TOKEN_AMP_AMP_unique_TOKEN_QUOTE_unique_TOKEN_LPAREN_unique_TOKEN_RPAREN_unique_TOKEN_RPAREN_COMING_SOON_unique_TOKEN_RPAREN_IS_HERE_unique_TOKEN_STAR_unique_TOKEN_COMMA_unique_TOKEN_RARROW_unique_TOKEN_GREATER_BAR_RBRACK_unique_TOKEN_LPAREN_STAR_RPAREN_unique_TOKEN_OPEN_unique_TOKEN_OR_unique_TOKEN_REC_unique_TOKEN_THEN_unique_TOKEN_TO_unique_TOKEN_TRUE_unique_TOKEN_TRY_unique_TOKEN_TYPE_unique_TOKEN_VAL_unique_TOKEN_INLINE_unique_TOKEN_INTERFACE_unique_TOKEN_INSTANCE_unique_TOKEN_CONST_unique_TOKEN_LAZY_unique_TOKEN_OLAZY_unique_TOKEN_MATCH_unique_TOKEN_MUTABLE_unique_TOKEN_NEW_unique_TOKEN_OF_unique_TOKEN_EXCEPTION_unique_TOKEN_FALSE_unique_TOKEN_FOR_unique_TOKEN_FUN_unique_TOKEN_FUNCTION_unique_TOKEN_IF_unique_TOKEN_IN_unique_TOKEN_JOIN_IN_unique_TOKEN_FINALLY_unique_TOKEN_DO_BANG_unique_TOKEN_AND_unique_TOKEN_AS_unique_TOKEN_ASSERT_unique_TOKEN_OASSERT_unique_TOKEN_ASR_unique_TOKEN_BEGIN_unique_TOKEN_DO_unique_TOKEN_DONE_unique_TOKEN_DOWNTO_unique_TOKEN_ELSE_unique_TOKEN_ELIF_unique_TOKEN_END_unique_TOKEN_DOT_DOT_unique_TOKEN_BAR_BAR_unique_TOKEN_UPCAST_unique_TOKEN_DOWNCAST_unique_TOKEN_NULL_unique_TOKEN_RESERVED_unique_TOKEN_MODULE_unique_TOKEN_NAMESPACE_unique_TOKEN_DELEGATE_unique_TOKEN_CONSTRAINT_unique_TOKEN_BASE_unique_TOKEN_LQUOTE_unique_TOKEN_RQUOTE_unique_TOKEN_RQUOTE_DOT_unique_TOKEN_PERCENT_OP_unique_TOKEN_BINDER_unique_TOKEN_LESS_unique_TOKEN_GREATER_unique_TOKEN_LET_unique_TOKEN_YIELD_unique_TOKEN_YIELD_BANG_unique_TOKEN_BIGNUM_unique_TOKEN_DECIMAL_unique_TOKEN_CHAR_unique_TOKEN_IEEE64_unique_TOKEN_IEEE32_unique_TOKEN_NATIVEINT_unique_TOKEN_UNATIVEINT_unique_TOKEN_UINT64_unique_TOKEN_UINT32_unique_TOKEN_UINT16_unique_TOKEN_UINT8_unique_TOKEN_INT64_unique_TOKEN_INT32_unique_TOKEN_INT32_DOT_DOT_unique_TOKEN_INT16_unique_TOKEN_INT8_unique_TOKEN_FUNKY_OPERATOR_NAME_unique_TOKEN_ADJACENT_PREFIX_OP_unique_TOKEN_PLUS_MINUS_OP_unique_TOKEN_INFIX_AMP_OP_unique_TOKEN_INFIX_STAR_DIV_MOD_OP_unique_TOKEN_PREFIX_OP_unique_TOKEN_INFIX_BAR_OP_unique_TOKEN_INFIX_AT_HAT_OP_unique_TOKEN_INFIX_COMPARE_OP_unique_TOKEN_INFIX_STAR_STAR_OP_unique_TOKEN_IDENT_unique_TOKEN_KEYWORD_STRING_unique_TOKEN_STRING_unique_TOKEN_BYTEARRAY_unique_TOKEN_end_of_input_unique_TOKEN_errorget_TOKEN_HASH_IFget_IsTOKEN_HASH_IFget_TOKEN_HASH_ELSEget_IsTOKEN_HASH_ELSEget_TOKEN_HASH_ENDIFget_IsTOKEN_HASH_ENDIFget_TOKEN_COMMENTget_IsTOKEN_COMMENTget_TOKEN_WHITESPACEget_IsTOKEN_WHITESPACEget_TOKEN_HASH_LINEget_IsTOKEN_HASH_LINEget_TOKEN_HASH_LIGHTget_IsTOKEN_HASH_LIGHTget_TOKEN_INACTIVECODEget_IsTOKEN_INACTIVECODEget_TOKEN_LINE_COMMENTget_IsTOKEN_LINE_COMMENTget_TOKEN_STRING_TEXTget_IsTOKEN_STRING_TEXTget_TOKEN_EOFget_IsTOKEN_EOFget_TOKEN_LEX_FAILUREget_IsTOKEN_LEX_FAILUREget_TOKEN_ODUMMYget_IsTOKEN_ODUMMYget_TOKEN_OINTERFACE_MEMBERget_IsTOKEN_OINTERFACE_MEMBERget_TOKEN_OBLOCKENDget_IsTOKEN_OBLOCKENDget_TOKEN_OBLOCKEND_COMING_SOONget_IsTOKEN_OBLOCKEND_COMING_SOONget_TOKEN_OBLOCKEND_IS_HEREget_IsTOKEN_OBLOCKEND_IS_HEREget_TOKEN_ORIGHT_BLOCK_ENDget_IsTOKEN_ORIGHT_BLOCK_ENDget_TOKEN_ODECLENDget_IsTOKEN_ODECLENDget_TOKEN_OENDget_IsTOKEN_OENDget_TOKEN_OBLOCKSEPget_IsTOKEN_OBLOCKSEPget_TOKEN_OBLOCKBEGINget_IsTOKEN_OBLOCKBEGINget_TOKEN_ORESETget_IsTOKEN_ORESETget_TOKEN_OFUNget_IsTOKEN_OFUNget_TOKEN_OFUNCTIONget_IsTOKEN_OFUNCTIONget_TOKEN_OWITHget_IsTOKEN_OWITHget_TOKEN_OELSEget_IsTOKEN_OELSEget_TOKEN_OTHENget_IsTOKEN_OTHENget_TOKEN_ODO_BANGget_IsTOKEN_ODO_BANGget_TOKEN_ODOget_IsTOKEN_ODOget_TOKEN_OBINDERget_IsTOKEN_OBINDERget_TOKEN_OLETget_IsTOKEN_OLETget_TOKEN_HIGH_PRECEDENCE_TYAPPget_IsTOKEN_HIGH_PRECEDENCE_TYAPPget_TOKEN_HIGH_PRECEDENCE_PAREN_APPget_IsTOKEN_HIGH_PRECEDENCE_PAREN_APPget_TOKEN_HIGH_PRECEDENCE_BRACK_APPget_IsTOKEN_HIGH_PRECEDENCE_BRACK_APPget_TOKEN_TYPE_COMING_SOONget_IsTOKEN_TYPE_COMING_SOONget_TOKEN_TYPE_IS_HEREget_IsTOKEN_TYPE_IS_HEREget_TOKEN_MODULE_COMING_SOONget_IsTOKEN_MODULE_COMING_SOONget_TOKEN_MODULE_IS_HEREget_IsTOKEN_MODULE_IS_HEREget_TOKEN_EXTERNget_IsTOKEN_EXTERNget_TOKEN_VOIDget_IsTOKEN_VOIDget_TOKEN_PUBLICget_IsTOKEN_PUBLICget_TOKEN_PRIVATEget_IsTOKEN_PRIVATEget_TOKEN_INTERNALget_IsTOKEN_INTERNALget_TOKEN_GLOBALget_IsTOKEN_GLOBALget_TOKEN_STATICget_IsTOKEN_STATICget_TOKEN_MEMBERget_IsTOKEN_MEMBERget_TOKEN_CLASSget_IsTOKEN_CLASSget_TOKEN_ABSTRACTget_IsTOKEN_ABSTRACTget_TOKEN_OVERRIDEget_IsTOKEN_OVERRIDEget_TOKEN_DEFAULTget_IsTOKEN_DEFAULTget_TOKEN_CONSTRUCTORget_IsTOKEN_CONSTRUCTORget_TOKEN_INHERITget_IsTOKEN_INHERITget_TOKEN_GREATER_RBRACKget_IsTOKEN_GREATER_RBRACKget_TOKEN_STRUCTget_IsTOKEN_STRUCTget_TOKEN_SIGget_IsTOKEN_SIGget_TOKEN_BARget_IsTOKEN_BARget_TOKEN_RBRACKget_IsTOKEN_RBRACKget_TOKEN_RBRACEget_IsTOKEN_RBRACEget_TOKEN_RBRACE_COMING_SOONget_IsTOKEN_RBRACE_COMING_SOONget_TOKEN_RBRACE_IS_HEREget_IsTOKEN_RBRACE_IS_HEREget_TOKEN_MINUSget_IsTOKEN_MINUSget_TOKEN_DOLLARget_IsTOKEN_DOLLARget_TOKEN_LBRACE_LESSget_IsTOKEN_LBRACE_LESSget_TOKEN_BAR_RBRACKget_IsTOKEN_BAR_RBRACKget_TOKEN_GREATER_RBRACEget_IsTOKEN_GREATER_RBRACEget_TOKEN_UNDERSCOREget_IsTOKEN_UNDERSCOREget_TOKEN_SEMICOLON_SEMICOLONget_IsTOKEN_SEMICOLON_SEMICOLONget_TOKEN_LARROWget_IsTOKEN_LARROWget_TOKEN_EQUALSget_IsTOKEN_EQUALSget_TOKEN_LBRACKget_IsTOKEN_LBRACKget_TOKEN_LBRACK_BARget_IsTOKEN_LBRACK_BARget_TOKEN_LBRACK_LESSget_IsTOKEN_LBRACK_LESSget_TOKEN_LBRACEget_IsTOKEN_LBRACEget_TOKEN_QMARKget_IsTOKEN_QMARKget_TOKEN_QMARK_QMARKget_IsTOKEN_QMARK_QMARKget_TOKEN_DOTget_IsTOKEN_DOTget_TOKEN_COLONget_IsTOKEN_COLONget_TOKEN_COLON_COLONget_IsTOKEN_COLON_COLONget_TOKEN_COLON_GREATERget_IsTOKEN_COLON_GREATERget_TOKEN_COLON_QMARK_GREATERget_IsTOKEN_COLON_QMARK_GREATERget_TOKEN_COLON_QMARKget_IsTOKEN_COLON_QMARKget_TOKEN_COLON_EQUALSget_IsTOKEN_COLON_EQUALSget_TOKEN_SEMICOLONget_IsTOKEN_SEMICOLONget_TOKEN_WHENget_IsTOKEN_WHENget_TOKEN_WHILEget_IsTOKEN_WHILEget_TOKEN_WITHget_IsTOKEN_WITHget_TOKEN_HASHget_IsTOKEN_HASHget_TOKEN_AMPget_IsTOKEN_AMPget_TOKEN_AMP_AMPget_IsTOKEN_AMP_AMPget_TOKEN_QUOTEget_IsTOKEN_QUOTEget_TOKEN_LPARENget_IsTOKEN_LPARENget_TOKEN_RPARENget_IsTOKEN_RPARENget_TOKEN_RPAREN_COMING_SOONget_IsTOKEN_RPAREN_COMING_SOONget_TOKEN_RPAREN_IS_HEREget_IsTOKEN_RPAREN_IS_HEREget_TOKEN_STARget_IsTOKEN_STARget_TOKEN_COMMAget_IsTOKEN_COMMAget_TOKEN_RARROWget_IsTOKEN_RARROWget_TOKEN_GREATER_BAR_RBRACKget_IsTOKEN_GREATER_BAR_RBRACKget_TOKEN_LPAREN_STAR_RPARENget_IsTOKEN_LPAREN_STAR_RPARENget_TOKEN_OPENget_IsTOKEN_OPENget_TOKEN_ORget_IsTOKEN_ORget_TOKEN_RECget_IsTOKEN_RECget_TOKEN_THENget_IsTOKEN_THENget_TOKEN_TOget_IsTOKEN_TOget_TOKEN_TRUEget_IsTOKEN_TRUEget_TOKEN_TRYget_IsTOKEN_TRYget_TOKEN_TYPEget_IsTOKEN_TYPEget_TOKEN_VALget_IsTOKEN_VALget_TOKEN_INLINEget_IsTOKEN_INLINEget_TOKEN_INTERFACEget_IsTOKEN_INTERFACEget_TOKEN_INSTANCEget_IsTOKEN_INSTANCEget_TOKEN_CONSTget_IsTOKEN_CONSTget_TOKEN_LAZYget_IsTOKEN_LAZYget_TOKEN_OLAZYget_IsTOKEN_OLAZYget_TOKEN_MATCHget_IsTOKEN_MATCHget_TOKEN_MUTABLEget_IsTOKEN_MUTABLEget_TOKEN_NEWget_IsTOKEN_NEWget_TOKEN_OFget_IsTOKEN_OFget_TOKEN_EXCEPTIONget_IsTOKEN_EXCEPTIONget_TOKEN_FALSEget_IsTOKEN_FALSEget_TOKEN_FORget_IsTOKEN_FORget_TOKEN_FUNget_IsTOKEN_FUNget_TOKEN_FUNCTIONget_IsTOKEN_FUNCTIONget_TOKEN_IFget_IsTOKEN_IFget_TOKEN_INget_IsTOKEN_INget_TOKEN_JOIN_INget_IsTOKEN_JOIN_INget_TOKEN_FINALLYget_IsTOKEN_FINALLYget_TOKEN_DO_BANGget_IsTOKEN_DO_BANGget_TOKEN_ANDget_IsTOKEN_ANDget_TOKEN_ASget_IsTOKEN_ASget_TOKEN_ASSERTget_IsTOKEN_ASSERTget_TOKEN_OASSERTget_IsTOKEN_OASSERTget_TOKEN_ASRget_IsTOKEN_ASRget_TOKEN_BEGINget_IsTOKEN_BEGINget_TOKEN_DOget_IsTOKEN_DOget_TOKEN_DONEget_IsTOKEN_DONEget_TOKEN_DOWNTOget_IsTOKEN_DOWNTOget_TOKEN_ELSEget_IsTOKEN_ELSEget_TOKEN_ELIFget_IsTOKEN_ELIFget_TOKEN_ENDget_IsTOKEN_ENDget_TOKEN_DOT_DOTget_IsTOKEN_DOT_DOTget_TOKEN_BAR_BARget_IsTOKEN_BAR_BARget_TOKEN_UPCASTget_IsTOKEN_UPCASTget_TOKEN_DOWNCASTget_IsTOKEN_DOWNCASTget_TOKEN_NULLget_IsTOKEN_NULLget_TOKEN_RESERVEDget_IsTOKEN_RESERVEDget_TOKEN_MODULEget_IsTOKEN_MODULEget_TOKEN_NAMESPACEget_IsTOKEN_NAMESPACEget_TOKEN_DELEGATEget_IsTOKEN_DELEGATEget_TOKEN_CONSTRAINTget_IsTOKEN_CONSTRAINTget_TOKEN_BASEget_IsTOKEN_BASEget_TOKEN_LQUOTEget_IsTOKEN_LQUOTEget_TOKEN_RQUOTEget_IsTOKEN_RQUOTEget_TOKEN_RQUOTE_DOTget_IsTOKEN_RQUOTE_DOTget_TOKEN_PERCENT_OPget_IsTOKEN_PERCENT_OPget_TOKEN_BINDERget_IsTOKEN_BINDERget_TOKEN_LESSget_IsTOKEN_LESSget_TOKEN_GREATERget_IsTOKEN_GREATERget_TOKEN_LETget_IsTOKEN_LETget_TOKEN_YIELDget_IsTOKEN_YIELDget_TOKEN_YIELD_BANGget_IsTOKEN_YIELD_BANGget_TOKEN_BIGNUMget_IsTOKEN_BIGNUMget_TOKEN_DECIMALget_IsTOKEN_DECIMALget_TOKEN_CHARget_IsTOKEN_CHARget_TOKEN_IEEE64get_IsTOKEN_IEEE64get_TOKEN_IEEE32get_IsTOKEN_IEEE32get_TOKEN_NATIVEINTget_IsTOKEN_NATIVEINTget_TOKEN_UNATIVEINTget_IsTOKEN_UNATIVEINTget_TOKEN_UINT64get_IsTOKEN_UINT64get_TOKEN_UINT32get_IsTOKEN_UINT32get_TOKEN_UINT16get_IsTOKEN_UINT16get_TOKEN_UINT8get_IsTOKEN_UINT8get_TOKEN_INT64get_IsTOKEN_INT64get_TOKEN_INT32get_IsTOKEN_INT32get_TOKEN_INT32_DOT_DOTget_IsTOKEN_INT32_DOT_DOTget_TOKEN_INT16get_IsTOKEN_INT16get_TOKEN_INT8get_IsTOKEN_INT8get_TOKEN_FUNKY_OPERATOR_NAMEget_IsTOKEN_FUNKY_OPERATOR_NAMEget_TOKEN_ADJACENT_PREFIX_OPget_IsTOKEN_ADJACENT_PREFIX_OPget_TOKEN_PLUS_MINUS_OPget_IsTOKEN_PLUS_MINUS_OPget_TOKEN_INFIX_AMP_OPget_IsTOKEN_INFIX_AMP_OPget_TOKEN_INFIX_STAR_DIV_MOD_OPget_IsTOKEN_INFIX_STAR_DIV_MOD_OPget_TOKEN_PREFIX_OPget_IsTOKEN_PREFIX_OPget_TOKEN_INFIX_BAR_OPget_IsTOKEN_INFIX_BAR_OPget_TOKEN_INFIX_AT_HAT_OPget_IsTOKEN_INFIX_AT_HAT_OPget_TOKEN_INFIX_COMPARE_OPget_IsTOKEN_INFIX_COMPARE_OPget_TOKEN_INFIX_STAR_STAR_OPget_IsTOKEN_INFIX_STAR_STAR_OPget_TOKEN_IDENTget_IsTOKEN_IDENTget_TOKEN_KEYWORD_STRINGget_IsTOKEN_KEYWORD_STRINGget_TOKEN_STRINGget_IsTOKEN_STRINGget_TOKEN_BYTEARRAYget_IsTOKEN_BYTEARRAYget_TOKEN_end_of_inputget_IsTOKEN_end_of_inputget_TOKEN_errorget_IsTOKEN_errorNONTERM__startsignatureFileIsNONTERM__startsignatureFileNONTERM__startimplementationFileIsNONTERM__startimplementationFileNONTERM__startinteractionIsNONTERM__startinteractionNONTERM_interactionIsNONTERM_interactionNONTERM_hashDirectiveIsNONTERM_hashDirectiveNONTERM_stringOrKeywordStringIsNONTERM_stringOrKeywordStringNONTERM_hashDirectiveArgIsNONTERM_hashDirectiveArgNONTERM_hashDirectiveArgsIsNONTERM_hashDirectiveArgsNONTERM_interactiveTerminatorIsNONTERM_interactiveTerminatorNONTERM_interactiveItemsTerminatorIsNONTERM_interactiveItemsTerminatorNONTERM_interactiveModuleDefnsIsNONTERM_interactiveModuleDefnsNONTERM_interactiveExprIsNONTERM_interactiveExprNONTERM_interactiveHashIsNONTERM_interactiveHashNONTERM_signatureFileIsNONTERM_signatureFileNONTERM_implementationFileIsNONTERM_implementationFileNONTERM_moduleIntroIsNONTERM_moduleIntroNONTERM_namespaceIntroIsNONTERM_namespaceIntroNONTERM_fileNamespaceSpecsIsNONTERM_fileNamespaceSpecsNONTERM_fileNamespaceSpecListIsNONTERM_fileNamespaceSpecListNONTERM_fileNamespaceSpecIsNONTERM_fileNamespaceSpecNONTERM_fileNamespaceImplsIsNONTERM_fileNamespaceImplsNONTERM_fileNamespaceImplListIsNONTERM_fileNamespaceImplListNONTERM_fileNamespaceImplIsNONTERM_fileNamespaceImplNONTERM_fileModuleSpecIsNONTERM_fileModuleSpecNONTERM_fileModuleImplIsNONTERM_fileModuleImplNONTERM_moduleSpfnsPossiblyEmptyBlockIsNONTERM_moduleSpfnsPossiblyEmptyBlockNONTERM_moduleSpfnsPossiblyEmptyIsNONTERM_moduleSpfnsPossiblyEmptyNONTERM_moduleSpfnsIsNONTERM_moduleSpfnsNONTERM_moduleDefnsOrExprPossiblyEmptyOrBlockIsNONTERM_moduleDefnsOrExprPossiblyEmptyOrBlockNONTERM_moduleDefnsOrExprPossiblyEmptyIsNONTERM_moduleDefnsOrExprPossiblyEmptyNONTERM_moduleDefnsOrExprIsNONTERM_moduleDefnsOrExprNONTERM_moduleDefnsIsNONTERM_moduleDefnsNONTERM_moduleDefnOrDirectiveIsNONTERM_moduleDefnOrDirectiveNONTERM_moduleDefnIsNONTERM_moduleDefnNONTERM_namedModuleAbbrevBlockIsNONTERM_namedModuleAbbrevBlockNONTERM_namedModuleDefnBlockIsNONTERM_namedModuleDefnBlockNONTERM_wrappedNamedModuleDefnIsNONTERM_wrappedNamedModuleDefnNONTERM_opt_signatureIsNONTERM_opt_signatureNONTERM_tyconDefnAugmentationIsNONTERM_tyconDefnAugmentationNONTERM_moduleSpfnIsNONTERM_moduleSpfnNONTERM_valSpfnIsNONTERM_valSpfnNONTERM_opt_literalValueIsNONTERM_opt_literalValueNONTERM_moduleSpecBlockIsNONTERM_moduleSpecBlockNONTERM_opt_attributesIsNONTERM_opt_attributesNONTERM_attributesIsNONTERM_attributesNONTERM_attributeListIsNONTERM_attributeListNONTERM_attributeListElementsIsNONTERM_attributeListElementsNONTERM_attributeIsNONTERM_attributeNONTERM_attributeTargetIsNONTERM_attributeTargetNONTERM_tyconSpfnsIsNONTERM_tyconSpfnsNONTERM_tyconSpfnListIsNONTERM_tyconSpfnListNONTERM_tyconSpfnIsNONTERM_tyconSpfnNONTERM_tyconSpfnRhsBlockIsNONTERM_tyconSpfnRhsBlockNONTERM_tyconSpfnRhsIsNONTERM_tyconSpfnRhsNONTERM_tyconClassSpfnIsNONTERM_tyconClassSpfnNONTERM_classSpfnBlockKindUnspecifiedIsNONTERM_classSpfnBlockKindUnspecifiedNONTERM_classSpfnBlockIsNONTERM_classSpfnBlockNONTERM_classSpfnMembersIsNONTERM_classSpfnMembersNONTERM_classSpfnMembersAtLeastOneIsNONTERM_classSpfnMembersAtLeastOneNONTERM_memberFlagsIsNONTERM_memberFlagsNONTERM_memberSpecFlagsIsNONTERM_memberSpecFlagsNONTERM_classMemberSpfnGetSetIsNONTERM_classMemberSpfnGetSetNONTERM_classMemberSpfnGetSetElementsIsNONTERM_classMemberSpfnGetSetElementsNONTERM_classMemberSpfnIsNONTERM_classMemberSpfnNONTERM_typeNameInfoIsNONTERM_typeNameInfoNONTERM_tyconDefnListIsNONTERM_tyconDefnListNONTERM_tyconDefnIsNONTERM_tyconDefnNONTERM_tyconDefnRhsBlockIsNONTERM_tyconDefnRhsBlockNONTERM_tyconDefnRhsIsNONTERM_tyconDefnRhsNONTERM_tyconClassDefnIsNONTERM_tyconClassDefnNONTERM_classDefnBlockKindUnspecifiedIsNONTERM_classDefnBlockKindUnspecifiedNONTERM_classDefnBlockIsNONTERM_classDefnBlockNONTERM_classDefnMembersIsNONTERM_classDefnMembersNONTERM_classDefnMembersAtLeastOneIsNONTERM_classDefnMembersAtLeastOneNONTERM_classDefnMemberGetSetIsNONTERM_classDefnMemberGetSetNONTERM_classDefnMemberGetSetElementsIsNONTERM_classDefnMemberGetSetElementsNONTERM_classDefnMemberGetSetElementIsNONTERM_classDefnMemberGetSetElementNONTERM_memberCoreIsNONTERM_memberCoreNONTERM_abstractMemberFlagsIsNONTERM_abstractMemberFlagsNONTERM_classDefnMemberIsNONTERM_classDefnMemberNONTERM_valDefnDeclIsNONTERM_valDefnDeclNONTERM_autoPropsDefnDeclIsNONTERM_autoPropsDefnDeclNONTERM_opt_typIsNONTERM_opt_typNONTERM_atomicPatternLongIdentIsNONTERM_atomicPatternLongIdentNONTERM_opt_accessIsNONTERM_opt_accessNONTERM_accessIsNONTERM_accessNONTERM_opt_declVisibilityIsNONTERM_opt_declVisibilityNONTERM_opt_interfaceImplDefnIsNONTERM_opt_interfaceImplDefnNONTERM_opt_classDefnIsNONTERM_opt_classDefnNONTERM_opt_classSpfnIsNONTERM_opt_classSpfnNONTERM_inheritsDefnIsNONTERM_inheritsDefnNONTERM_optAsSpecIsNONTERM_optAsSpecNONTERM_asSpecIsNONTERM_asSpecNONTERM_optBaseSpecIsNONTERM_optBaseSpecNONTERM_baseSpecIsNONTERM_baseSpecNONTERM_objectImplementationBlockIsNONTERM_objectImplementationBlockNONTERM_objectImplementationMembersIsNONTERM_objectImplementationMembersNONTERM_objectImplementationMemberIsNONTERM_objectImplementationMemberNONTERM_memberOrOverrideIsNONTERM_memberOrOverrideNONTERM_tyconDefnOrSpfnSimpleReprIsNONTERM_tyconDefnOrSpfnSimpleReprNONTERM_braceFieldDeclListIsNONTERM_braceFieldDeclListNONTERM_inlineAssemblyTyconReprIsNONTERM_inlineAssemblyTyconReprNONTERM_classOrInterfaceOrStructIsNONTERM_classOrInterfaceOrStructNONTERM_interfaceMemberIsNONTERM_interfaceMemberNONTERM_tyconNameAndTyparDeclsIsNONTERM_tyconNameAndTyparDeclsNONTERM_prefixTyparDeclsIsNONTERM_prefixTyparDeclsNONTERM_prefixTyparDeclListIsNONTERM_prefixTyparDeclListNONTERM_typarDeclIsNONTERM_typarDeclNONTERM_postfixTyparDeclsIsNONTERM_postfixTyparDeclsNONTERM_explicitValTyparDeclsCoreIsNONTERM_explicitValTyparDeclsCoreNONTERM_explicitValTyparDeclsIsNONTERM_explicitValTyparDeclsNONTERM_opt_explicitValTyparDeclsIsNONTERM_opt_explicitValTyparDeclsNONTERM_opt_explicitValTyparDecls2IsNONTERM_opt_explicitValTyparDecls2NONTERM_opt_typeConstraintsIsNONTERM_opt_typeConstraintsNONTERM_typeConstraintsIsNONTERM_typeConstraintsNONTERM_typeConstraintIsNONTERM_typeConstraintNONTERM_typarAltsIsNONTERM_typarAltsNONTERM_unionReprIsNONTERM_unionReprNONTERM_barAndgrabXmlDocIsNONTERM_barAndgrabXmlDocNONTERM_attrUnionCaseDeclsIsNONTERM_attrUnionCaseDeclsNONTERM_attrUnionCaseDeclIsNONTERM_attrUnionCaseDeclNONTERM_unionCaseNameIsNONTERM_unionCaseNameNONTERM_firstUnionCaseDeclOfManyIsNONTERM_firstUnionCaseDeclOfManyNONTERM_firstUnionCaseDeclIsNONTERM_firstUnionCaseDeclNONTERM_unionCaseReprIsNONTERM_unionCaseReprNONTERM_recdFieldDeclListIsNONTERM_recdFieldDeclListNONTERM_recdFieldDeclIsNONTERM_recdFieldDeclNONTERM_fieldDeclIsNONTERM_fieldDeclNONTERM_exconDefnIsNONTERM_exconDefnNONTERM_exconSpfnIsNONTERM_exconSpfnNONTERM_exceptionAndGrabDocIsNONTERM_exceptionAndGrabDocNONTERM_exconCoreIsNONTERM_exconCoreNONTERM_exconIntroIsNONTERM_exconIntroNONTERM_exconReprIsNONTERM_exconReprNONTERM_openDeclIsNONTERM_openDeclNONTERM_defnBindingsIsNONTERM_defnBindingsNONTERM_doBindingIsNONTERM_doBindingNONTERM_hardwhiteLetBindingsIsNONTERM_hardwhiteLetBindingsNONTERM_hardwhiteDoBindingIsNONTERM_hardwhiteDoBindingNONTERM_classDefnBindingsIsNONTERM_classDefnBindingsNONTERM_hardwhiteDefnBindingsTerminatorIsNONTERM_hardwhiteDefnBindingsTerminatorNONTERM_cPrototypeIsNONTERM_cPrototypeNONTERM_cArgsIsNONTERM_cArgsNONTERM_cMoreArgsIsNONTERM_cMoreArgsNONTERM_cArgIsNONTERM_cArgNONTERM_cTypeIsNONTERM_cTypeNONTERM_cRetTypeIsNONTERM_cRetTypeNONTERM_localBindingsIsNONTERM_localBindingsNONTERM_moreLocalBindingsIsNONTERM_moreLocalBindingsNONTERM_attr_localBindingIsNONTERM_attr_localBindingNONTERM_localBindingIsNONTERM_localBindingNONTERM_typedExprWithStaticOptimizationsBlockIsNONTERM_typedExprWithStaticOptimizationsBlockNONTERM_typedExprWithStaticOptimizationsIsNONTERM_typedExprWithStaticOptimizationsNONTERM_opt_staticOptimizationsIsNONTERM_opt_staticOptimizationsNONTERM_staticOptimizationIsNONTERM_staticOptimizationNONTERM_staticOptimizationConditionsIsNONTERM_staticOptimizationConditionsNONTERM_staticOptimizationConditionIsNONTERM_staticOptimizationConditionNONTERM_rawConstantIsNONTERM_rawConstantNONTERM_constantIsNONTERM_constantNONTERM_bindingPatternIsNONTERM_bindingPatternNONTERM_simplePatternIsNONTERM_simplePatternNONTERM_simplePatternCommaListIsNONTERM_simplePatternCommaListNONTERM_simplePatternsIsNONTERM_simplePatternsNONTERM_headBindingPatternIsNONTERM_headBindingPatternNONTERM_tuplePatternElementsIsNONTERM_tuplePatternElementsNONTERM_conjPatternElementsIsNONTERM_conjPatternElementsNONTERM_constrPatternIsNONTERM_constrPatternNONTERM_atomicPatternsIsNONTERM_atomicPatternsNONTERM_atomicPatternIsNONTERM_atomicPatternNONTERM_parenPatternBodyIsNONTERM_parenPatternBodyNONTERM_parenPatternIsNONTERM_parenPatternNONTERM_tupleParenPatternElementsIsNONTERM_tupleParenPatternElementsNONTERM_conjParenPatternElementsIsNONTERM_conjParenPatternElementsNONTERM_recordPatternElementsIsNONTERM_recordPatternElementsNONTERM_recordPatternElementsAuxIsNONTERM_recordPatternElementsAuxNONTERM_recordPatternElementIsNONTERM_recordPatternElementNONTERM_listPatternElementsIsNONTERM_listPatternElementsNONTERM_typedSeqExprBlockIsNONTERM_typedSeqExprBlockNONTERM_declExprBlockIsNONTERM_declExprBlockNONTERM_typedSeqExprBlockRIsNONTERM_typedSeqExprBlockRNONTERM_typedSeqExprIsNONTERM_typedSeqExprNONTERM_seqExprIsNONTERM_seqExprNONTERM_recoverIsNONTERM_recoverNONTERM_declExprIsNONTERM_declExprNONTERM_dynamicArgIsNONTERM_dynamicArgNONTERM_withClausesIsNONTERM_withClausesNONTERM_withPatternClausesIsNONTERM_withPatternClausesNONTERM_patternAndGuardIsNONTERM_patternAndGuardNONTERM_patternClausesIsNONTERM_patternClausesNONTERM_patternGuardIsNONTERM_patternGuardNONTERM_patternResultIsNONTERM_patternResultNONTERM_ifExprCasesIsNONTERM_ifExprCasesNONTERM_ifExprThenIsNONTERM_ifExprThenNONTERM_ifExprElifsIsNONTERM_ifExprElifsNONTERM_tupleExprIsNONTERM_tupleExprNONTERM_minusExprIsNONTERM_minusExprNONTERM_appExprIsNONTERM_appExprNONTERM_argExprIsNONTERM_argExprNONTERM_atomicExprIsNONTERM_atomicExprNONTERM_atomicExprQualificationIsNONTERM_atomicExprQualificationNONTERM_optRangeIsNONTERM_optRangeNONTERM_atomicExprAfterTypeIsNONTERM_atomicExprAfterTypeNONTERM_beginEndExprIsNONTERM_beginEndExprNONTERM_quoteExprIsNONTERM_quoteExprNONTERM_arrayExprIsNONTERM_arrayExprNONTERM_parenExprIsNONTERM_parenExprNONTERM_parenExprBodyIsNONTERM_parenExprBodyNONTERM_staticallyKnownHeadTyparsIsNONTERM_staticallyKnownHeadTyparsNONTERM_staticallyKnownHeadTyparAltsIsNONTERM_staticallyKnownHeadTyparAltsNONTERM_braceExprIsNONTERM_braceExprNONTERM_braceExprBodyIsNONTERM_braceExprBodyNONTERM_listExprElementsIsNONTERM_listExprElementsNONTERM_monadicExprInitialIsNONTERM_monadicExprInitialNONTERM_rangeSequenceExprIsNONTERM_rangeSequenceExprNONTERM_monadicSingleLineQualifiersThenArrowThenExprRIsNONTERM_monadicSingleLineQualifiersThenArrowThenExprRNONTERM_forLoopBinderIsNONTERM_forLoopBinderNONTERM_forLoopRangeIsNONTERM_forLoopRangeNONTERM_inlineAssemblyExprIsNONTERM_inlineAssemblyExprNONTERM_opt_curriedArgExprsIsNONTERM_opt_curriedArgExprsNONTERM_opt_atomicExprAfterTypeIsNONTERM_opt_atomicExprAfterTypeNONTERM_opt_inlineAssemblyTypeArgIsNONTERM_opt_inlineAssemblyTypeArgNONTERM_opt_inlineAssemblyReturnTypesIsNONTERM_opt_inlineAssemblyReturnTypesNONTERM_recdExprIsNONTERM_recdExprNONTERM_opt_seps_recdIsNONTERM_opt_seps_recdNONTERM_seps_recdIsNONTERM_seps_recdNONTERM_pathOrUnderscoreIsNONTERM_pathOrUnderscoreNONTERM_recdExprBindingsIsNONTERM_recdExprBindingsNONTERM_recdBindingIsNONTERM_recdBindingNONTERM_objExprIsNONTERM_objExprNONTERM_objExprBaseCallIsNONTERM_objExprBaseCallNONTERM_opt_objExprBindingsIsNONTERM_opt_objExprBindingsNONTERM_objExprBindingsIsNONTERM_objExprBindingsNONTERM_objExprInterfacesIsNONTERM_objExprInterfacesNONTERM_opt_objExprInterfacesIsNONTERM_opt_objExprInterfacesNONTERM_objExprInterfaceIsNONTERM_objExprInterfaceNONTERM_forLoopDirectionIsNONTERM_forLoopDirectionNONTERM_anonLambdaExprIsNONTERM_anonLambdaExprNONTERM_anonMatchingExprIsNONTERM_anonMatchingExprNONTERM_typeWithTypeConstraintsIsNONTERM_typeWithTypeConstraintsNONTERM_topTypeWithTypeConstraintsIsNONTERM_topTypeWithTypeConstraintsNONTERM_opt_topReturnTypeWithTypeConstraintsIsNONTERM_opt_topReturnTypeWithTypeConstraintsNONTERM_topTypeIsNONTERM_topTypeNONTERM_topTupleTypeIsNONTERM_topTupleTypeNONTERM_topTupleTypeElementsIsNONTERM_topTupleTypeElementsNONTERM_topAppTypeIsNONTERM_topAppTypeNONTERM_typIsNONTERM_typNONTERM_tupleTypeIsNONTERM_tupleTypeNONTERM_tupleOrQuotTypeElementsIsNONTERM_tupleOrQuotTypeElementsNONTERM_tupleTypeElementsIsNONTERM_tupleTypeElementsNONTERM_appTypeConIsNONTERM_appTypeConNONTERM_appTypeConPowerIsNONTERM_appTypeConPowerNONTERM_appTypeIsNONTERM_appTypeNONTERM_arrayTypeSuffixIsNONTERM_arrayTypeSuffixNONTERM_appTypePrefixArgumentsIsNONTERM_appTypePrefixArgumentsNONTERM_typeArgListElementsIsNONTERM_typeArgListElementsNONTERM_powerTypeIsNONTERM_powerTypeNONTERM_appTypeNonAtomicDeprecatedIsNONTERM_appTypeNonAtomicDeprecatedNONTERM_powerTypeNonAtomicDeprecatedIsNONTERM_powerTypeNonAtomicDeprecatedNONTERM_atomTypeIsNONTERM_atomTypeNONTERM_typeArgsNoHpaDeprecatedIsNONTERM_typeArgsNoHpaDeprecatedNONTERM_typeArgsActualIsNONTERM_typeArgsActualNONTERM_typeArgActualIsNONTERM_typeArgActualNONTERM_typeArgActualOrDummyIfEmptyIsNONTERM_typeArgActualOrDummyIfEmptyNONTERM_dummyTypeArgIsNONTERM_dummyTypeArgNONTERM_measureTypeArgIsNONTERM_measureTypeArgNONTERM_measureTypeAtomIsNONTERM_measureTypeAtomNONTERM_measureTypePowerIsNONTERM_measureTypePowerNONTERM_measureTypeSeqIsNONTERM_measureTypeSeqNONTERM_measureTypeExprIsNONTERM_measureTypeExprNONTERM_typarIsNONTERM_typarNONTERM_staticallyKnownHeadTyparIsNONTERM_staticallyKnownHeadTyparNONTERM_identIsNONTERM_identNONTERM_pathIsNONTERM_pathNONTERM_opNameIsNONTERM_opNameNONTERM_operatorNameIsNONTERM_operatorNameNONTERM_barNameIsNONTERM_barNameNONTERM_barNamesIsNONTERM_barNamesNONTERM_identOrOpIsNONTERM_identOrOpNONTERM_pathOpIsNONTERM_pathOpNONTERM_nameopIsNONTERM_nameopNONTERM_topSeparatorIsNONTERM_topSeparatorNONTERM_topSeparatorsIsNONTERM_topSeparatorsNONTERM_interactiveSeparatorIsNONTERM_interactiveSeparatorNONTERM_interactiveSeparatorsIsNONTERM_interactiveSeparatorsNONTERM_opt_interactiveSeparatorsIsNONTERM_opt_interactiveSeparatorsNONTERM_opt_topSeparatorsIsNONTERM_opt_topSeparatorsNONTERM_sepsIsNONTERM_sepsNONTERM_declEndIsNONTERM_declEndNONTERM_opt_declEndIsNONTERM_opt_declEndNONTERM_opt_ODECLENDIsNONTERM_opt_ODECLENDNONTERM_deprecated_opt_equalsIsNONTERM_deprecated_opt_equalsNONTERM_opt_OBLOCKSEPIsNONTERM_opt_OBLOCKSEPNONTERM_opt_sepsIsNONTERM_opt_sepsNONTERM_opt_recIsNONTERM_opt_recNONTERM_opt_barIsNONTERM_opt_barNONTERM_opt_inlineIsNONTERM_opt_inlineNONTERM_opt_mutableIsNONTERM_opt_mutableNONTERM_doTokenIsNONTERM_doTokenNONTERM_doneDeclEndIsNONTERM_doneDeclEndNONTERM_structOrBeginIsNONTERM_structOrBeginNONTERM_sigOrBeginIsNONTERM_sigOrBeginNONTERM_colonOrEqualsIsNONTERM_colonOrEqualsNONTERM_opt_HASHIsNONTERM_opt_HASHNONTERM_opt_HIGH_PRECEDENCE_APPIsNONTERM_opt_HIGH_PRECEDENCE_APPNONTERM_opt_HIGH_PRECEDENCE_TYAPPIsNONTERM_opt_HIGH_PRECEDENCE_TYAPPNONTERM_type_keywordIsNONTERM_type_keywordNONTERM_module_keywordIsNONTERM_module_keywordNONTERM_rbraceIsNONTERM_rbraceNONTERM_rparenIsNONTERM_rparenNONTERM_oblockendIsNONTERM_oblockendNONTERM_ends_other_than_rparen_coming_soon_or_recoverIsNONTERM_ends_other_than_rparen_coming_soon_or_recoverNONTERM_ends_coming_soon_or_recoverIsNONTERM_ends_coming_soon_or_recover_unique_NONTERM__startsignatureFile_unique_NONTERM__startimplementationFile_unique_NONTERM__startinteraction_unique_NONTERM_interaction_unique_NONTERM_hashDirective_unique_NONTERM_stringOrKeywordString_unique_NONTERM_hashDirectiveArg_unique_NONTERM_hashDirectiveArgs_unique_NONTERM_interactiveTerminator_unique_NONTERM_interactiveItemsTerminator_unique_NONTERM_interactiveModuleDefns_unique_NONTERM_interactiveExpr_unique_NONTERM_interactiveHash_unique_NONTERM_signatureFile_unique_NONTERM_implementationFile_unique_NONTERM_moduleIntro_unique_NONTERM_namespaceIntro_unique_NONTERM_fileNamespaceSpecs_unique_NONTERM_fileNamespaceSpecList_unique_NONTERM_fileNamespaceSpec_unique_NONTERM_fileNamespaceImpls_unique_NONTERM_fileNamespaceImplList_unique_NONTERM_fileNamespaceImpl_unique_NONTERM_fileModuleSpec_unique_NONTERM_fileModuleImpl_unique_NONTERM_moduleSpfnsPossiblyEmptyBlock_unique_NONTERM_moduleSpfnsPossiblyEmpty_unique_NONTERM_moduleSpfns_unique_NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock_unique_NONTERM_moduleDefnsOrExprPossiblyEmpty_unique_NONTERM_moduleDefnsOrExpr_unique_NONTERM_moduleDefns_unique_NONTERM_moduleDefnOrDirective_unique_NONTERM_moduleDefn_unique_NONTERM_namedModuleAbbrevBlock_unique_NONTERM_namedModuleDefnBlock_unique_NONTERM_wrappedNamedModuleDefn_unique_NONTERM_opt_signature_unique_NONTERM_tyconDefnAugmentation_unique_NONTERM_moduleSpfn_unique_NONTERM_valSpfn_unique_NONTERM_opt_literalValue_unique_NONTERM_moduleSpecBlock_unique_NONTERM_opt_attributes_unique_NONTERM_attributes_unique_NONTERM_attributeList_unique_NONTERM_attributeListElements_unique_NONTERM_attribute_unique_NONTERM_attributeTarget_unique_NONTERM_tyconSpfns_unique_NONTERM_tyconSpfnList_unique_NONTERM_tyconSpfn_unique_NONTERM_tyconSpfnRhsBlock_unique_NONTERM_tyconSpfnRhs_unique_NONTERM_tyconClassSpfn_unique_NONTERM_classSpfnBlockKindUnspecified_unique_NONTERM_classSpfnBlock_unique_NONTERM_classSpfnMembers_unique_NONTERM_classSpfnMembersAtLeastOne_unique_NONTERM_memberFlags_unique_NONTERM_memberSpecFlags_unique_NONTERM_classMemberSpfnGetSet_unique_NONTERM_classMemberSpfnGetSetElements_unique_NONTERM_classMemberSpfn_unique_NONTERM_typeNameInfo_unique_NONTERM_tyconDefnList_unique_NONTERM_tyconDefn_unique_NONTERM_tyconDefnRhsBlock_unique_NONTERM_tyconDefnRhs_unique_NONTERM_tyconClassDefn_unique_NONTERM_classDefnBlockKindUnspecified_unique_NONTERM_classDefnBlock_unique_NONTERM_classDefnMembers_unique_NONTERM_classDefnMembersAtLeastOne_unique_NONTERM_classDefnMemberGetSet_unique_NONTERM_classDefnMemberGetSetElements_unique_NONTERM_classDefnMemberGetSetElement_unique_NONTERM_memberCore_unique_NONTERM_abstractMemberFlags_unique_NONTERM_classDefnMember_unique_NONTERM_valDefnDecl_unique_NONTERM_autoPropsDefnDecl_unique_NONTERM_opt_typ_unique_NONTERM_atomicPatternLongIdent_unique_NONTERM_opt_access_unique_NONTERM_access_unique_NONTERM_opt_declVisibility_unique_NONTERM_opt_interfaceImplDefn_unique_NONTERM_opt_classDefn_unique_NONTERM_opt_classSpfn_unique_NONTERM_inheritsDefn_unique_NONTERM_optAsSpec_unique_NONTERM_asSpec_unique_NONTERM_optBaseSpec_unique_NONTERM_baseSpec_unique_NONTERM_objectImplementationBlock_unique_NONTERM_objectImplementationMembers_unique_NONTERM_objectImplementationMember_unique_NONTERM_memberOrOverride_unique_NONTERM_tyconDefnOrSpfnSimpleRepr_unique_NONTERM_braceFieldDeclList_unique_NONTERM_inlineAssemblyTyconRepr_unique_NONTERM_classOrInterfaceOrStruct_unique_NONTERM_interfaceMember_unique_NONTERM_tyconNameAndTyparDecls_unique_NONTERM_prefixTyparDecls_unique_NONTERM_prefixTyparDeclList_unique_NONTERM_typarDecl_unique_NONTERM_postfixTyparDecls_unique_NONTERM_explicitValTyparDeclsCore_unique_NONTERM_explicitValTyparDecls_unique_NONTERM_opt_explicitValTyparDecls_unique_NONTERM_opt_explicitValTyparDecls2_unique_NONTERM_opt_typeConstraints_unique_NONTERM_typeConstraints_unique_NONTERM_typeConstraint_unique_NONTERM_typarAlts_unique_NONTERM_unionRepr_unique_NONTERM_barAndgrabXmlDoc_unique_NONTERM_attrUnionCaseDecls_unique_NONTERM_attrUnionCaseDecl_unique_NONTERM_unionCaseName_unique_NONTERM_firstUnionCaseDeclOfMany_unique_NONTERM_firstUnionCaseDecl_unique_NONTERM_unionCaseRepr_unique_NONTERM_recdFieldDeclList_unique_NONTERM_recdFieldDecl_unique_NONTERM_fieldDecl_unique_NONTERM_exconDefn_unique_NONTERM_exconSpfn_unique_NONTERM_exceptionAndGrabDoc_unique_NONTERM_exconCore_unique_NONTERM_exconIntro_unique_NONTERM_exconRepr_unique_NONTERM_openDecl_unique_NONTERM_defnBindings_unique_NONTERM_doBinding_unique_NONTERM_hardwhiteLetBindings_unique_NONTERM_hardwhiteDoBinding_unique_NONTERM_classDefnBindings_unique_NONTERM_hardwhiteDefnBindingsTerminator_unique_NONTERM_cPrototype_unique_NONTERM_cArgs_unique_NONTERM_cMoreArgs_unique_NONTERM_cArg_unique_NONTERM_cType_unique_NONTERM_cRetType_unique_NONTERM_localBindings_unique_NONTERM_moreLocalBindings_unique_NONTERM_attr_localBinding_unique_NONTERM_localBinding_unique_NONTERM_typedExprWithStaticOptimizationsBlock_unique_NONTERM_typedExprWithStaticOptimizations_unique_NONTERM_opt_staticOptimizations_unique_NONTERM_staticOptimization_unique_NONTERM_staticOptimizationConditions_unique_NONTERM_staticOptimizationCondition_unique_NONTERM_rawConstant_unique_NONTERM_constant_unique_NONTERM_bindingPattern_unique_NONTERM_simplePattern_unique_NONTERM_simplePatternCommaList_unique_NONTERM_simplePatterns_unique_NONTERM_headBindingPattern_unique_NONTERM_tuplePatternElements_unique_NONTERM_conjPatternElements_unique_NONTERM_constrPattern_unique_NONTERM_atomicPatterns_unique_NONTERM_atomicPattern_unique_NONTERM_parenPatternBody_unique_NONTERM_parenPattern_unique_NONTERM_tupleParenPatternElements_unique_NONTERM_conjParenPatternElements_unique_NONTERM_recordPatternElements_unique_NONTERM_recordPatternElementsAux_unique_NONTERM_recordPatternElement_unique_NONTERM_listPatternElements_unique_NONTERM_typedSeqExprBlock_unique_NONTERM_declExprBlock_unique_NONTERM_typedSeqExprBlockR_unique_NONTERM_typedSeqExpr_unique_NONTERM_seqExpr_unique_NONTERM_recover_unique_NONTERM_declExpr_unique_NONTERM_dynamicArg_unique_NONTERM_withClauses_unique_NONTERM_withPatternClauses_unique_NONTERM_patternAndGuard_unique_NONTERM_patternClauses_unique_NONTERM_patternGuard_unique_NONTERM_patternResult_unique_NONTERM_ifExprCases_unique_NONTERM_ifExprThen_unique_NONTERM_ifExprElifs_unique_NONTERM_tupleExpr_unique_NONTERM_minusExpr_unique_NONTERM_appExpr_unique_NONTERM_argExpr_unique_NONTERM_atomicExpr_unique_NONTERM_atomicExprQualification_unique_NONTERM_optRange_unique_NONTERM_atomicExprAfterType_unique_NONTERM_beginEndExpr_unique_NONTERM_quoteExpr_unique_NONTERM_arrayExpr_unique_NONTERM_parenExpr_unique_NONTERM_parenExprBody_unique_NONTERM_staticallyKnownHeadTypars_unique_NONTERM_staticallyKnownHeadTyparAlts_unique_NONTERM_braceExpr_unique_NONTERM_braceExprBody_unique_NONTERM_listExprElements_unique_NONTERM_monadicExprInitial_unique_NONTERM_rangeSequenceExpr_unique_NONTERM_monadicSingleLineQualifiersThenArrowThenExprR_unique_NONTERM_forLoopBinder_unique_NONTERM_forLoopRange_unique_NONTERM_inlineAssemblyExpr_unique_NONTERM_opt_curriedArgExprs_unique_NONTERM_opt_atomicExprAfterType_unique_NONTERM_opt_inlineAssemblyTypeArg_unique_NONTERM_opt_inlineAssemblyReturnTypes_unique_NONTERM_recdExpr_unique_NONTERM_opt_seps_recd_unique_NONTERM_seps_recd_unique_NONTERM_pathOrUnderscore_unique_NONTERM_recdExprBindings_unique_NONTERM_recdBinding_unique_NONTERM_objExpr_unique_NONTERM_objExprBaseCall_unique_NONTERM_opt_objExprBindings_unique_NONTERM_objExprBindings_unique_NONTERM_objExprInterfaces_unique_NONTERM_opt_objExprInterfaces_unique_NONTERM_objExprInterface_unique_NONTERM_forLoopDirection_unique_NONTERM_anonLambdaExpr_unique_NONTERM_anonMatchingExpr_unique_NONTERM_typeWithTypeConstraints_unique_NONTERM_topTypeWithTypeConstraints_unique_NONTERM_opt_topReturnTypeWithTypeConstraints_unique_NONTERM_topType_unique_NONTERM_topTupleType_unique_NONTERM_topTupleTypeElements_unique_NONTERM_topAppType_unique_NONTERM_typ_unique_NONTERM_tupleType_unique_NONTERM_tupleOrQuotTypeElements_unique_NONTERM_tupleTypeElements_unique_NONTERM_appTypeCon_unique_NONTERM_appTypeConPower_unique_NONTERM_appType_unique_NONTERM_arrayTypeSuffix_unique_NONTERM_appTypePrefixArguments_unique_NONTERM_typeArgListElements_unique_NONTERM_powerType_unique_NONTERM_appTypeNonAtomicDeprecated_unique_NONTERM_powerTypeNonAtomicDeprecated_unique_NONTERM_atomType_unique_NONTERM_typeArgsNoHpaDeprecated_unique_NONTERM_typeArgsActual_unique_NONTERM_typeArgActual_unique_NONTERM_typeArgActualOrDummyIfEmpty_unique_NONTERM_dummyTypeArg_unique_NONTERM_measureTypeArg_unique_NONTERM_measureTypeAtom_unique_NONTERM_measureTypePower_unique_NONTERM_measureTypeSeq_unique_NONTERM_measureTypeExpr_unique_NONTERM_typar_unique_NONTERM_staticallyKnownHeadTypar_unique_NONTERM_ident_unique_NONTERM_path_unique_NONTERM_opName_unique_NONTERM_operatorName_unique_NONTERM_barName_unique_NONTERM_barNames_unique_NONTERM_identOrOp_unique_NONTERM_pathOp_unique_NONTERM_nameop_unique_NONTERM_topSeparator_unique_NONTERM_topSeparators_unique_NONTERM_interactiveSeparator_unique_NONTERM_interactiveSeparators_unique_NONTERM_opt_interactiveSeparators_unique_NONTERM_opt_topSeparators_unique_NONTERM_seps_unique_NONTERM_declEnd_unique_NONTERM_opt_declEnd_unique_NONTERM_opt_ODECLEND_unique_NONTERM_deprecated_opt_equals_unique_NONTERM_opt_OBLOCKSEP_unique_NONTERM_opt_seps_unique_NONTERM_opt_rec_unique_NONTERM_opt_bar_unique_NONTERM_opt_inline_unique_NONTERM_opt_mutable_unique_NONTERM_doToken_unique_NONTERM_doneDeclEnd_unique_NONTERM_structOrBegin_unique_NONTERM_sigOrBegin_unique_NONTERM_colonOrEquals_unique_NONTERM_opt_HASH_unique_NONTERM_opt_HIGH_PRECEDENCE_APP_unique_NONTERM_opt_HIGH_PRECEDENCE_TYAPP_unique_NONTERM_type_keyword_unique_NONTERM_module_keyword_unique_NONTERM_rbrace_unique_NONTERM_rparen_unique_NONTERM_oblockend_unique_NONTERM_ends_other_than_rparen_coming_soon_or_recover_unique_NONTERM_ends_coming_soon_or_recoverget_NONTERM__startsignatureFileget_IsNONTERM__startsignatureFileget_NONTERM__startimplementationFileget_IsNONTERM__startimplementationFileget_NONTERM__startinteractionget_IsNONTERM__startinteractionget_NONTERM_interactionget_IsNONTERM_interactionget_NONTERM_hashDirectiveget_IsNONTERM_hashDirectiveget_NONTERM_stringOrKeywordStringget_IsNONTERM_stringOrKeywordStringget_NONTERM_hashDirectiveArgget_IsNONTERM_hashDirectiveArgget_NONTERM_hashDirectiveArgsget_IsNONTERM_hashDirectiveArgsget_NONTERM_interactiveTerminatorget_IsNONTERM_interactiveTerminatorget_NONTERM_interactiveItemsTerminatorget_IsNONTERM_interactiveItemsTerminatorget_NONTERM_interactiveModuleDefnsget_IsNONTERM_interactiveModuleDefnsget_NONTERM_interactiveExprget_IsNONTERM_interactiveExprget_NONTERM_interactiveHashget_IsNONTERM_interactiveHashget_NONTERM_signatureFileget_IsNONTERM_signatureFileget_NONTERM_implementationFileget_IsNONTERM_implementationFileget_NONTERM_moduleIntroget_IsNONTERM_moduleIntroget_NONTERM_namespaceIntroget_IsNONTERM_namespaceIntroget_NONTERM_fileNamespaceSpecsget_IsNONTERM_fileNamespaceSpecsget_NONTERM_fileNamespaceSpecListget_IsNONTERM_fileNamespaceSpecListget_NONTERM_fileNamespaceSpecget_IsNONTERM_fileNamespaceSpecget_NONTERM_fileNamespaceImplsget_IsNONTERM_fileNamespaceImplsget_NONTERM_fileNamespaceImplListget_IsNONTERM_fileNamespaceImplListget_NONTERM_fileNamespaceImplget_IsNONTERM_fileNamespaceImplget_NONTERM_fileModuleSpecget_IsNONTERM_fileModuleSpecget_NONTERM_fileModuleImplget_IsNONTERM_fileModuleImplget_NONTERM_moduleSpfnsPossiblyEmptyBlockget_IsNONTERM_moduleSpfnsPossiblyEmptyBlockget_NONTERM_moduleSpfnsPossiblyEmptyget_IsNONTERM_moduleSpfnsPossiblyEmptyget_NONTERM_moduleSpfnsget_IsNONTERM_moduleSpfnsget_NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlockget_IsNONTERM_moduleDefnsOrExprPossiblyEmptyOrBlockget_NONTERM_moduleDefnsOrExprPossiblyEmptyget_IsNONTERM_moduleDefnsOrExprPossiblyEmptyget_NONTERM_moduleDefnsOrExprget_IsNONTERM_moduleDefnsOrExprget_NONTERM_moduleDefnsget_IsNONTERM_moduleDefnsget_NONTERM_moduleDefnOrDirectiveget_IsNONTERM_moduleDefnOrDirectiveget_NONTERM_moduleDefnget_IsNONTERM_moduleDefnget_NONTERM_namedModuleAbbrevBlockget_IsNONTERM_namedModuleAbbrevBlockget_NONTERM_namedModuleDefnBlockget_IsNONTERM_namedModuleDefnBlockget_NONTERM_wrappedNamedModuleDefnget_IsNONTERM_wrappedNamedModuleDefnget_NONTERM_opt_signatureget_IsNONTERM_opt_signatureget_NONTERM_tyconDefnAugmentationget_IsNONTERM_tyconDefnAugmentationget_NONTERM_moduleSpfnget_IsNONTERM_moduleSpfnget_NONTERM_valSpfnget_IsNONTERM_valSpfnget_NONTERM_opt_literalValueget_IsNONTERM_opt_literalValueget_NONTERM_moduleSpecBlockget_IsNONTERM_moduleSpecBlockget_NONTERM_opt_attributesget_IsNONTERM_opt_attributesget_NONTERM_attributesget_IsNONTERM_attributesget_NONTERM_attributeListget_IsNONTERM_attributeListget_NONTERM_attributeListElementsget_IsNONTERM_attributeListElementsget_NONTERM_attributeget_IsNONTERM_attributeget_NONTERM_attributeTargetget_IsNONTERM_attributeTargetget_NONTERM_tyconSpfnsget_IsNONTERM_tyconSpfnsget_NONTERM_tyconSpfnListget_IsNONTERM_tyconSpfnListget_NONTERM_tyconSpfnget_IsNONTERM_tyconSpfnget_NONTERM_tyconSpfnRhsBlockget_IsNONTERM_tyconSpfnRhsBlockget_NONTERM_tyconSpfnRhsget_IsNONTERM_tyconSpfnRhsget_NONTERM_tyconClassSpfnget_IsNONTERM_tyconClassSpfnget_NONTERM_classSpfnBlockKindUnspecifiedget_IsNONTERM_classSpfnBlockKindUnspecifiedget_NONTERM_classSpfnBlockget_IsNONTERM_classSpfnBlockget_NONTERM_classSpfnMembersget_IsNONTERM_classSpfnMembersget_NONTERM_classSpfnMembersAtLeastOneget_IsNONTERM_classSpfnMembersAtLeastOneget_NONTERM_memberFlagsget_IsNONTERM_memberFlagsget_NONTERM_memberSpecFlagsget_IsNONTERM_memberSpecFlagsget_NONTERM_classMemberSpfnGetSetget_IsNONTERM_classMemberSpfnGetSetget_NONTERM_classMemberSpfnGetSetElementsget_IsNONTERM_classMemberSpfnGetSetElementsget_NONTERM_classMemberSpfnget_IsNONTERM_classMemberSpfnget_NONTERM_typeNameInfoget_IsNONTERM_typeNameInfoget_NONTERM_tyconDefnListget_IsNONTERM_tyconDefnListget_NONTERM_tyconDefnget_IsNONTERM_tyconDefnget_NONTERM_tyconDefnRhsBlockget_IsNONTERM_tyconDefnRhsBlockget_NONTERM_tyconDefnRhsget_IsNONTERM_tyconDefnRhsget_NONTERM_tyconClassDefnget_IsNONTERM_tyconClassDefnget_NONTERM_classDefnBlockKindUnspecifiedget_IsNONTERM_classDefnBlockKindUnspecifiedget_NONTERM_classDefnBlockget_IsNONTERM_classDefnBlockget_NONTERM_classDefnMembersget_IsNONTERM_classDefnMembersget_NONTERM_classDefnMembersAtLeastOneget_IsNONTERM_classDefnMembersAtLeastOneget_NONTERM_classDefnMemberGetSetget_IsNONTERM_classDefnMemberGetSetget_NONTERM_classDefnMemberGetSetElementsget_IsNONTERM_classDefnMemberGetSetElementsget_NONTERM_classDefnMemberGetSetElementget_IsNONTERM_classDefnMemberGetSetElementget_NONTERM_memberCoreget_IsNONTERM_memberCoreget_NONTERM_abstractMemberFlagsget_IsNONTERM_abstractMemberFlagsget_NONTERM_classDefnMemberget_IsNONTERM_classDefnMemberget_NONTERM_valDefnDeclget_IsNONTERM_valDefnDeclget_NONTERM_autoPropsDefnDeclget_IsNONTERM_autoPropsDefnDeclget_NONTERM_opt_typget_IsNONTERM_opt_typget_NONTERM_atomicPatternLongIdentget_IsNONTERM_atomicPatternLongIdentget_NONTERM_opt_accessget_IsNONTERM_opt_accessget_NONTERM_accessget_IsNONTERM_accessget_NONTERM_opt_declVisibilityget_IsNONTERM_opt_declVisibilityget_NONTERM_opt_interfaceImplDefnget_IsNONTERM_opt_interfaceImplDefnget_NONTERM_opt_classDefnget_IsNONTERM_opt_classDefnget_NONTERM_opt_classSpfnget_IsNONTERM_opt_classSpfnget_NONTERM_inheritsDefnget_IsNONTERM_inheritsDefnget_NONTERM_optAsSpecget_IsNONTERM_optAsSpecget_NONTERM_asSpecget_IsNONTERM_asSpecget_NONTERM_optBaseSpecget_IsNONTERM_optBaseSpecget_NONTERM_baseSpecget_IsNONTERM_baseSpecget_NONTERM_objectImplementationBlockget_IsNONTERM_objectImplementationBlockget_NONTERM_objectImplementationMembersget_IsNONTERM_objectImplementationMembersget_NONTERM_objectImplementationMemberget_IsNONTERM_objectImplementationMemberget_NONTERM_memberOrOverrideget_IsNONTERM_memberOrOverrideget_NONTERM_tyconDefnOrSpfnSimpleReprget_IsNONTERM_tyconDefnOrSpfnSimpleReprget_NONTERM_braceFieldDeclListget_IsNONTERM_braceFieldDeclListget_NONTERM_inlineAssemblyTyconReprget_IsNONTERM_inlineAssemblyTyconReprget_NONTERM_classOrInterfaceOrStructget_IsNONTERM_classOrInterfaceOrStructget_NONTERM_interfaceMemberget_IsNONTERM_interfaceMemberget_NONTERM_tyconNameAndTyparDeclsget_IsNONTERM_tyconNameAndTyparDeclsget_NONTERM_prefixTyparDeclsget_IsNONTERM_prefixTyparDeclsget_NONTERM_prefixTyparDeclListget_IsNONTERM_prefixTyparDeclListget_NONTERM_typarDeclget_IsNONTERM_typarDeclget_NONTERM_postfixTyparDeclsget_IsNONTERM_postfixTyparDeclsget_NONTERM_explicitValTyparDeclsCoreget_IsNONTERM_explicitValTyparDeclsCoreget_NONTERM_explicitValTyparDeclsget_IsNONTERM_explicitValTyparDeclsget_NONTERM_opt_explicitValTyparDeclsget_IsNONTERM_opt_explicitValTyparDeclsget_NONTERM_opt_explicitValTyparDecls2get_IsNONTERM_opt_explicitValTyparDecls2get_NONTERM_opt_typeConstraintsget_IsNONTERM_opt_typeConstraintsget_NONTERM_typeConstraintsget_IsNONTERM_typeConstraintsget_NONTERM_typeConstraintget_IsNONTERM_typeConstraintget_NONTERM_typarAltsget_IsNONTERM_typarAltsget_NONTERM_unionReprget_IsNONTERM_unionReprget_NONTERM_barAndgrabXmlDocget_IsNONTERM_barAndgrabXmlDocget_NONTERM_attrUnionCaseDeclsget_IsNONTERM_attrUnionCaseDeclsget_NONTERM_attrUnionCaseDeclget_IsNONTERM_attrUnionCaseDeclget_NONTERM_unionCaseNameget_IsNONTERM_unionCaseNameget_NONTERM_firstUnionCaseDeclOfManyget_IsNONTERM_firstUnionCaseDeclOfManyget_NONTERM_firstUnionCaseDeclget_IsNONTERM_firstUnionCaseDeclget_NONTERM_unionCaseReprget_IsNONTERM_unionCaseReprget_NONTERM_recdFieldDeclListget_IsNONTERM_recdFieldDeclListget_NONTERM_recdFieldDeclget_IsNONTERM_recdFieldDeclget_NONTERM_fieldDeclget_IsNONTERM_fieldDeclget_NONTERM_exconDefnget_IsNONTERM_exconDefnget_NONTERM_exconSpfnget_IsNONTERM_exconSpfnget_NONTERM_exceptionAndGrabDocget_IsNONTERM_exceptionAndGrabDocget_NONTERM_exconCoreget_IsNONTERM_exconCoreget_NONTERM_exconIntroget_IsNONTERM_exconIntroget_NONTERM_exconReprget_IsNONTERM_exconReprget_NONTERM_openDeclget_IsNONTERM_openDeclget_NONTERM_defnBindingsget_IsNONTERM_defnBindingsget_NONTERM_doBindingget_IsNONTERM_doBindingget_NONTERM_hardwhiteLetBindingsget_IsNONTERM_hardwhiteLetBindingsget_NONTERM_hardwhiteDoBindingget_IsNONTERM_hardwhiteDoBindingget_NONTERM_classDefnBindingsget_IsNONTERM_classDefnBindingsget_NONTERM_hardwhiteDefnBindingsTerminatorget_IsNONTERM_hardwhiteDefnBindingsTerminatorget_NONTERM_cPrototypeget_IsNONTERM_cPrototypeget_NONTERM_cArgsget_IsNONTERM_cArgsget_NONTERM_cMoreArgsget_IsNONTERM_cMoreArgsget_NONTERM_cArgget_IsNONTERM_cArgget_NONTERM_cTypeget_IsNONTERM_cTypeget_NONTERM_cRetTypeget_IsNONTERM_cRetTypeget_NONTERM_localBindingsget_IsNONTERM_localBindingsget_NONTERM_moreLocalBindingsget_IsNONTERM_moreLocalBindingsget_NONTERM_attr_localBindingget_IsNONTERM_attr_localBindingget_NONTERM_localBindingget_IsNONTERM_localBindingget_NONTERM_typedExprWithStaticOptimizationsBlockget_IsNONTERM_typedExprWithStaticOptimizationsBlockget_NONTERM_typedExprWithStaticOptimizationsget_IsNONTERM_typedExprWithStaticOptimizationsget_NONTERM_opt_staticOptimizationsget_IsNONTERM_opt_staticOptimizationsget_NONTERM_staticOptimizationget_IsNONTERM_staticOptimizationget_NONTERM_staticOptimizationConditionsget_IsNONTERM_staticOptimizationConditionsget_NONTERM_staticOptimizationConditionget_IsNONTERM_staticOptimizationConditionget_NONTERM_rawConstantget_IsNONTERM_rawConstantget_NONTERM_constantget_IsNONTERM_constantget_NONTERM_bindingPatternget_IsNONTERM_bindingPatternget_NONTERM_simplePatternget_IsNONTERM_simplePatternget_NONTERM_simplePatternCommaListget_IsNONTERM_simplePatternCommaListget_NONTERM_simplePatternsget_IsNONTERM_simplePatternsget_NONTERM_headBindingPatternget_IsNONTERM_headBindingPatternget_NONTERM_tuplePatternElementsget_IsNONTERM_tuplePatternElementsget_NONTERM_conjPatternElementsget_IsNONTERM_conjPatternElementsget_NONTERM_constrPatternget_IsNONTERM_constrPatternget_NONTERM_atomicPatternsget_IsNONTERM_atomicPatternsget_NONTERM_atomicPatternget_IsNONTERM_atomicPatternget_NONTERM_parenPatternBodyget_IsNONTERM_parenPatternBodyget_NONTERM_parenPatternget_IsNONTERM_parenPatternget_NONTERM_tupleParenPatternElementsget_IsNONTERM_tupleParenPatternElementsget_NONTERM_conjParenPatternElementsget_IsNONTERM_conjParenPatternElementsget_NONTERM_recordPatternElementsget_IsNONTERM_recordPatternElementsget_NONTERM_recordPatternElementsAuxget_IsNONTERM_recordPatternElementsAuxget_NONTERM_recordPatternElementget_IsNONTERM_recordPatternElementget_NONTERM_listPatternElementsget_IsNONTERM_listPatternElementsget_NONTERM_typedSeqExprBlockget_IsNONTERM_typedSeqExprBlockget_NONTERM_declExprBlockget_IsNONTERM_declExprBlockget_NONTERM_typedSeqExprBlockRget_IsNONTERM_typedSeqExprBlockRget_NONTERM_typedSeqExprget_IsNONTERM_typedSeqExprget_NONTERM_seqExprget_IsNONTERM_seqExprget_NONTERM_recoverget_IsNONTERM_recoverget_NONTERM_declExprget_IsNONTERM_declExprget_NONTERM_dynamicArgget_IsNONTERM_dynamicArgget_NONTERM_withClausesget_IsNONTERM_withClausesget_NONTERM_withPatternClausesget_IsNONTERM_withPatternClausesget_NONTERM_patternAndGuardget_IsNONTERM_patternAndGuardget_NONTERM_patternClausesget_IsNONTERM_patternClausesget_NONTERM_patternGuardget_IsNONTERM_patternGuardget_NONTERM_patternResultget_IsNONTERM_patternResultget_NONTERM_ifExprCasesget_IsNONTERM_ifExprCasesget_NONTERM_ifExprThenget_IsNONTERM_ifExprThenget_NONTERM_ifExprElifsget_IsNONTERM_ifExprElifsget_NONTERM_tupleExprget_IsNONTERM_tupleExprget_NONTERM_minusExprget_IsNONTERM_minusExprget_NONTERM_appExprget_IsNONTERM_appExprget_NONTERM_argExprget_IsNONTERM_argExprget_NONTERM_atomicExprget_IsNONTERM_atomicExprget_NONTERM_atomicExprQualificationget_IsNONTERM_atomicExprQualificationget_NONTERM_optRangeget_IsNONTERM_optRangeget_NONTERM_atomicExprAfterTypeget_IsNONTERM_atomicExprAfterTypeget_NONTERM_beginEndExprget_IsNONTERM_beginEndExprget_NONTERM_quoteExprget_IsNONTERM_quoteExprget_NONTERM_arrayExprget_IsNONTERM_arrayExprget_NONTERM_parenExprget_IsNONTERM_parenExprget_NONTERM_parenExprBodyget_IsNONTERM_parenExprBodyget_NONTERM_staticallyKnownHeadTyparsget_IsNONTERM_staticallyKnownHeadTyparsget_NONTERM_staticallyKnownHeadTyparAltsget_IsNONTERM_staticallyKnownHeadTyparAltsget_NONTERM_braceExprget_IsNONTERM_braceExprget_NONTERM_braceExprBodyget_IsNONTERM_braceExprBodyget_NONTERM_listExprElementsget_IsNONTERM_listExprElementsget_NONTERM_monadicExprInitialget_IsNONTERM_monadicExprInitialget_NONTERM_rangeSequenceExprget_IsNONTERM_rangeSequenceExprget_NONTERM_monadicSingleLineQualifiersThenArrowThenExprRget_IsNONTERM_monadicSingleLineQualifiersThenArrowThenExprRget_NONTERM_forLoopBinderget_IsNONTERM_forLoopBinderget_NONTERM_forLoopRangeget_IsNONTERM_forLoopRangeget_NONTERM_inlineAssemblyExprget_IsNONTERM_inlineAssemblyExprget_NONTERM_opt_curriedArgExprsget_IsNONTERM_opt_curriedArgExprsget_NONTERM_opt_atomicExprAfterTypeget_IsNONTERM_opt_atomicExprAfterTypeget_NONTERM_opt_inlineAssemblyTypeArgget_IsNONTERM_opt_inlineAssemblyTypeArgget_NONTERM_opt_inlineAssemblyReturnTypesget_IsNONTERM_opt_inlineAssemblyReturnTypesget_NONTERM_recdExprget_IsNONTERM_recdExprget_NONTERM_opt_seps_recdget_IsNONTERM_opt_seps_recdget_NONTERM_seps_recdget_IsNONTERM_seps_recdget_NONTERM_pathOrUnderscoreget_IsNONTERM_pathOrUnderscoreget_NONTERM_recdExprBindingsget_IsNONTERM_recdExprBindingsget_NONTERM_recdBindingget_IsNONTERM_recdBindingget_NONTERM_objExprget_IsNONTERM_objExprget_NONTERM_objExprBaseCallget_IsNONTERM_objExprBaseCallget_NONTERM_opt_objExprBindingsget_IsNONTERM_opt_objExprBindingsget_NONTERM_objExprBindingsget_IsNONTERM_objExprBindingsget_NONTERM_objExprInterfacesget_IsNONTERM_objExprInterfacesget_NONTERM_opt_objExprInterfacesget_IsNONTERM_opt_objExprInterfacesget_NONTERM_objExprInterfaceget_IsNONTERM_objExprInterfaceget_NONTERM_forLoopDirectionget_IsNONTERM_forLoopDirectionget_NONTERM_anonLambdaExprget_IsNONTERM_anonLambdaExprget_NONTERM_anonMatchingExprget_IsNONTERM_anonMatchingExprget_NONTERM_typeWithTypeConstraintsget_IsNONTERM_typeWithTypeConstraintsget_NONTERM_topTypeWithTypeConstraintsget_IsNONTERM_topTypeWithTypeConstraintsget_NONTERM_opt_topReturnTypeWithTypeConstraintsget_IsNONTERM_opt_topReturnTypeWithTypeConstraintsget_NONTERM_topTypeget_IsNONTERM_topTypeget_NONTERM_topTupleTypeget_IsNONTERM_topTupleTypeget_NONTERM_topTupleTypeElementsget_IsNONTERM_topTupleTypeElementsget_NONTERM_topAppTypeget_IsNONTERM_topAppTypeget_NONTERM_typget_IsNONTERM_typget_NONTERM_tupleTypeget_IsNONTERM_tupleTypeget_NONTERM_tupleOrQuotTypeElementsget_IsNONTERM_tupleOrQuotTypeElementsget_NONTERM_tupleTypeElementsget_IsNONTERM_tupleTypeElementsget_NONTERM_appTypeConget_IsNONTERM_appTypeConget_NONTERM_appTypeConPowerget_IsNONTERM_appTypeConPowerget_NONTERM_appTypeget_IsNONTERM_appTypeget_NONTERM_arrayTypeSuffixget_IsNONTERM_arrayTypeSuffixget_NONTERM_appTypePrefixArgumentsget_IsNONTERM_appTypePrefixArgumentsget_NONTERM_typeArgListElementsget_IsNONTERM_typeArgListElementsget_NONTERM_powerTypeget_IsNONTERM_powerTypeget_NONTERM_appTypeNonAtomicDeprecatedget_IsNONTERM_appTypeNonAtomicDeprecatedget_NONTERM_powerTypeNonAtomicDeprecatedget_IsNONTERM_powerTypeNonAtomicDeprecatedget_NONTERM_atomTypeget_IsNONTERM_atomTypeget_NONTERM_typeArgsNoHpaDeprecatedget_IsNONTERM_typeArgsNoHpaDeprecatedget_NONTERM_typeArgsActualget_IsNONTERM_typeArgsActualget_NONTERM_typeArgActualget_IsNONTERM_typeArgActualget_NONTERM_typeArgActualOrDummyIfEmptyget_IsNONTERM_typeArgActualOrDummyIfEmptyget_NONTERM_dummyTypeArgget_IsNONTERM_dummyTypeArgget_NONTERM_measureTypeArgget_IsNONTERM_measureTypeArgget_NONTERM_measureTypeAtomget_IsNONTERM_measureTypeAtomget_NONTERM_measureTypePowerget_IsNONTERM_measureTypePowerget_NONTERM_measureTypeSeqget_IsNONTERM_measureTypeSeqget_NONTERM_measureTypeExprget_IsNONTERM_measureTypeExprget_NONTERM_typarget_IsNONTERM_typarget_NONTERM_staticallyKnownHeadTyparget_IsNONTERM_staticallyKnownHeadTyparget_NONTERM_identget_IsNONTERM_identget_NONTERM_pathget_IsNONTERM_pathget_NONTERM_opNameget_IsNONTERM_opNameget_NONTERM_operatorNameget_IsNONTERM_operatorNameget_NONTERM_barNameget_IsNONTERM_barNameget_NONTERM_barNamesget_IsNONTERM_barNamesget_NONTERM_identOrOpget_IsNONTERM_identOrOpget_NONTERM_pathOpget_IsNONTERM_pathOpget_NONTERM_nameopget_IsNONTERM_nameopget_NONTERM_topSeparatorget_IsNONTERM_topSeparatorget_NONTERM_topSeparatorsget_IsNONTERM_topSeparatorsget_NONTERM_interactiveSeparatorget_IsNONTERM_interactiveSeparatorget_NONTERM_interactiveSeparatorsget_IsNONTERM_interactiveSeparatorsget_NONTERM_opt_interactiveSeparatorsget_IsNONTERM_opt_interactiveSeparatorsget_NONTERM_opt_topSeparatorsget_IsNONTERM_opt_topSeparatorsget_NONTERM_sepsget_IsNONTERM_sepsget_NONTERM_declEndget_IsNONTERM_declEndget_NONTERM_opt_declEndget_IsNONTERM_opt_declEndget_NONTERM_opt_ODECLENDget_IsNONTERM_opt_ODECLENDget_NONTERM_deprecated_opt_equalsget_IsNONTERM_deprecated_opt_equalsget_NONTERM_opt_OBLOCKSEPget_IsNONTERM_opt_OBLOCKSEPget_NONTERM_opt_sepsget_IsNONTERM_opt_sepsget_NONTERM_opt_recget_IsNONTERM_opt_recget_NONTERM_opt_barget_IsNONTERM_opt_barget_NONTERM_opt_inlineget_IsNONTERM_opt_inlineget_NONTERM_opt_mutableget_IsNONTERM_opt_mutableget_NONTERM_doTokenget_IsNONTERM_doTokenget_NONTERM_doneDeclEndget_IsNONTERM_doneDeclEndget_NONTERM_structOrBeginget_IsNONTERM_structOrBeginget_NONTERM_sigOrBeginget_IsNONTERM_sigOrBeginget_NONTERM_colonOrEqualsget_IsNONTERM_colonOrEqualsget_NONTERM_opt_HASHget_IsNONTERM_opt_HASHget_NONTERM_opt_HIGH_PRECEDENCE_APPget_IsNONTERM_opt_HIGH_PRECEDENCE_APPget_NONTERM_opt_HIGH_PRECEDENCE_TYAPPget_IsNONTERM_opt_HIGH_PRECEDENCE_TYAPPget_NONTERM_type_keywordget_IsNONTERM_type_keywordget_NONTERM_module_keywordget_IsNONTERM_module_keywordget_NONTERM_rbraceget_IsNONTERM_rbraceget_NONTERM_rparenget_IsNONTERM_rparenget_NONTERM_oblockendget_IsNONTERM_oblockendget_NONTERM_ends_other_than_rparen_coming_soon_or_recoverget_IsNONTERM_ends_other_than_rparen_coming_soon_or_recoverget_NONTERM_ends_coming_soon_or_recoverget_IsNONTERM_ends_coming_soon_or_recover_4modu_2_5_7lhsmnameInfoaugmentationneedsChecknameRangeinvokemRhsvisNoLongerUsedhasGethasSet_6mValDeclmLeftmGetSetOptmDeclcdmLetKwdlocalBindingsBuilderbindingSetRangekwdnmmargsmmoreBindings_attrs_vis_letmattrLocalBindingBuilderIsUppermThenexprThenexprGuardmIfdotmmArg_8isArrayOrListopm_isArray_fsyacc_gotos@2694-2_fsyacc_sparseGotoTableRowOffsets@2695-2_fsyacc_stateToProdIdxsTableElements@2696-2_fsyacc_stateToProdIdxsTableRowOffsets@2697-2_fsyacc_actionTableElements@2699-2_fsyacc_actionTableRowOffsets@2700-2_fsyacc_reductionSymbolCounts@2701-2_fsyacc_productionToNonTerminalTable@2702-2_fsyacc_immediateActions@2703-2providedSystemTypeComparerCompareTo$cont@232-33CompareTo$cont@232-34raiseError@246runTimeAssemblyFileNamedesignTimeAssemblyNameStringloadFromDir@253loadFromGac@260GetExportedTypesgetTypeProviderImplementationTypesTypeInitializationExceptionstrip@308protect@303typeProviderImplementationTypeTypeProviderConfigGetConstructorset_ResolutionFolderset_RuntimeAssemblyset_ReferencedAssembliesset_TemporaryFolderset_IsInvalidationSupportedset_IsHostedExecutionset_SystemRuntimeAssemblyVersioncreateTypeProviderruntimeAssemblyPathsystemRuntimeContainsTypeproviderSpecs$cont@362GetTypeProvidersOfAssemblyruntimeAssemblyFilenamedesignerAssemblyNameunmarshaltryTypeMemberfullNamerecovertryTypeMemberArraytryTypeMemberNonNulltryMemberMembermemberMemberNameDisplayNameOfTypeProviderisWhitespacevalidateNamespaceNamenamespaceget_bindingFlagsget_providedSystemTypeComparer|Member|_|@606|Arg|_|@607findAttribByName@608tyFullNamefindAttrib@609NewObjectPattern|ProvidedNewObjectExpr|_|WhileLoopPattern|ProvidedWhileLoopExpr|_|FSharpVarNewDelegatePattern|ProvidedNewDelegateExpr|_||ProvidedCallExpr|_|DefaultValuePattern|ProvidedDefaultExpr|_|ValuePattern|ProvidedConstantExpr|_|CoercePattern|ProvidedTypeAsExpr|_|NewTuplePattern|ProvidedNewTupleExpr|_|TupleGetPattern|ProvidedTupleGetExpr|_|NewArrayPattern|ProvidedNewArrayExpr|_|SequentialPattern|ProvidedSequentialExpr|_|LambdaPattern|ProvidedLambdaExpr|_|TryFinallyPattern|ProvidedTryFinallyExpr|_|TryWithPattern|ProvidedTryWithExpr|_|TypeTestPattern|ProvidedTypeTestExpr|_|LetPattern|ProvidedLetExpr|_|ForIntegerRangeLoopPattern|ProvidedForIntegerRangeLoopExpr|_|VarSetPattern|ProvidedVarSetExpr|_|IfThenElsePattern|ProvidedIfThenElseExpr|_|VarPattern|ProvidedVarExpr|_|GetInvokerExpressionmethodBaseparamExprscomputeNameprojpropertyStringvalidateAttributesOfProvidedTypedeclaringTypes@977accuvalidateExpectedNameexpectedPathexpectedNameValidateProvidedTypeAfterStaticInstantiationValidateProvidedTypeDefinitionresolveTypeTryResolveProvidedTypenameContrib@1160encContrib@1169ILPathToProvidedTypeget_RawDefaultValuef@1-28TryApplyProvidedTypetypeBeforeArgumentsstaticArgsParseUInt32f@1-29typeLogicalNameargSpecsTableTryLinkProvidedTypegetPartsOfDotNetNamespaceRecovernamespaceNameGetPartsOfDotNetNamespacewalkUpNestedClasses@1305soFarGetFSharpPathToProvidedTypeILAssemblyRefFromProvidedAssemblyGetOriginalILTypeRefOfProvidedTypeGetILTypeRefOfProvidedTypeIsGeneratedTypeDirectReferenceNewTypeProviderDesignationresolutionFoldershowResolutionMessagesreferencedAssembliestemporaryFolderresolutionFolder@showResolutionMessages@referencedAssemblies@temporaryFolder@get_resolutionFolderget_showResolutionMessagesget_referencedAssembliesget_temporaryFolderTypeProviderAttributeGetCustomAttributesActivatorCreateInstanceget_AssemblyNoEntriesIsNoEntriesIsEntries_unique_NoEntriesget_NoEntriesget_IsNoEntriesNewEntriesget_IsEntriesTryGetILTypeRefTryGetTyconRefRemapTyconRefsIsGenericTypeFullNameBaseTypeIsVoidIsGenericParameterIsByRefIsPointerIsPublicIsNestedPublicGenericParameterPositionRawSystemTypeVoidHandleget_AttributesGetInterfacesGetEventsGetEventGetPropertiesGetPropertyGetConstructorsGetFieldsGetNestedTypesGetAllNestedTypesGetNestedTypeGetStaticParametersGetElementTypeApplyStaticArgumentsfullTypePathAfterArgumentsget_IsVoidget_IsGenericParameterget_IsPublicget_IsNestedPublicGetArrayRankget_GenericParameterPositionget_RawSystemTypeGetEnumUnderlyingTypeCreateWithNullCheckCreateArrayCreateNoContextget_Voidget_Handleget_ContextApplyContextTaintedEqualspt1pt2Microsoft-FSharp-Compiler-ExtensionTyping-IProvidedCustomAttributeProvider-GetHasTypeProviderEditorHideMethodsAttributeMicrosoft-FSharp-Compiler-ExtensionTyping-IProvidedCustomAttributeProvider-GetDefinitionLocationAttributeMicrosoft-FSharp-Compiler-ExtensionTyping-IProvidedCustomAttributeProvider-GetXmlDocAttributesprovideAllowNullLiteralAttributeGetDefinitionLocationAttributeGetXmlDocAttributesGetHasTypeProviderEditorHideMethodsAttributeGetAttributeConstructorArgsattribNameattributesDeclaringTypeMicrosoft-FSharp-Compiler-ExtensionTyping-IProvidedCustomAttributeProvider-GetAttributeConstructorArgsIsOutIsInRawDefaultValueParameterTypeget_IsOutget_IsInget_ParameterType_ctxtGetGeneratedAssemblyContentsGetManifestModuleContentsIsGenericMethodIsFamilyIsFamilyOrAssemblyIsFamilyAndAssemblyIsHideBySigget_IsGenericMethodget_IsFamilyget_IsFamilyOrAssemblyget_IsFamilyAndAssemblyget_IsHideBySigGetParametersTaintedGetHashCodeIsLiteralIsPrivateget_IsLiteralGetRawConstantValueget_IsPrivateMetadataTokenget_MetadataTokenCanReadCanWritePropertyTypeGetGetMethodGetSetMethodget_CanReadget_CanWriteGetIndexParametersget_PropertyTypeEventHandlerTypeget_EventHandlerTypeget_TypedValueget_ConstructorArgumentsget_NamedArgumentsTypeProviderXmlDocAttributefindAttribTypeProviderDefinitionLocationAttribute_providerUnderlyingExpressionStringget_UnderlyingExpressionStringFreshdtx0miDeclaringTypeResolveTypeNamedisplayNametryNamespaceactualNameNewProviderGeneratedTypeILTypeMapILTypeMap@get_ILTypeMapiLTypeMapprovidedSystemTypeComparer@460FsiDynamicModulePrefixopNameParenGetopNameQMarkCtorMemberFlagsClassCtorMemberFlagsinferredTyparDeclsnoInferredTyparsget_FsiDynamicModulePrefixprocessLines@100linesidenttextOfIdpathOfLidarrPathOfLidtextOfPathtextOfArrPathtextOfLidrangeOfLidmkSynIdpathToSynLidmkSynIdGetmkSynLidGetmkSynIdGetWithAltaltInfomkSynSimplePatVarisOptmkSynCompGenSimplePatVar|LongOrSingleIdent|_||SingleIdent|_|IsControlFlowExpressionmkAnonFieldmkSynPatVarmkSynThisPatVarmkSynPatMaybeVar|SynPatForConstructorDecl|_||SynPatForNullaryArgs|_||SynExprErrorSkip||SynExprParen|_||SynPatErrorSkip|SimplePatOfPatappFunOptfunOptcomposeFunOptfunOpt1funOpt2SimplePatsOfPatPushPatternToExprisSimplePatternPushCurriedPatternsToExprpatsParseAssemblyCodeInstructionsParseAssemblyCodeTypeget_opNameParenGetget_opNameQMarkmkSynOperatoropermkSynInfixmkSynBifixmkSynTrifixmkSynQuadfixx4mkSynQuinfixx5mkSynPrefixmkSynCaseNamemkSynApp1mkSynApp2mkSynApp3mkSynApp4mkSynApp5mkSynDotParenSetmkSynDotBrackGetmkSynQMarkSetmkSynDotBrackSliceGetmkSynDotBrackSlice2GetmkSynDotBrackSlice3Gety3mkSynDotBrackSlice4Gety4mkSynDotParenGetmkSynUnitmkSynUnitPatmkSynDelaymkSynAssign$cont@1755-1mkSynAssign$cont@1755mkSynAssignmkSynDotmkSynDotMissingmkSynFunMatchLambdasarbExprdebugStrmkSynBindingRhsstaticOptimizationsmkSynBindingmBindorigRhsExprNonVirtualMemberFlagsget_CtorMemberFlagsget_ClassCtorMemberFlagsOverrideMemberFlagsAbstractMemberFlagsStaticMemberFlagsget_inferredTyparDeclsget_noInferredTyparsposOfLexPositionmkSynRangeLexBuffer`1.get_LexemeRangelhsrhs2IParseState.GetSynArgNameGeneratorIParseState.ResetSynArgNameGeneratorwalkMatchClauses@2171walkBindwalkExprOpt@2172walkExpr@2173synExprContainsErrorinpExprsavedLinessavedGrabPointssavedGrabPointsAsArraysavedLinesAsArrayAddGrabPointAddXmlDocLineLinesBeforegrabPointPosposCompareprevGrabPointPosNewXmlDocMergeinit@120-8System.SecuritySecurityElementEscapeIsPreXmlMergeIsPreXmlDocPreXmlDocEmptyIsPreXmlDocEmpty_unique_PreXmlDocEmptyNewPreXmlMergeget_IsPreXmlMergeNewPreXmlDocget_IsPreXmlDocget_PreXmlDocEmptyget_IsPreXmlDocEmptyToXmlDocCreateFromGrabPointcollectorIsOkThereWereSignificantParseErrorsSoDoNotTypecheckThisNodeIsThereWereSignificantParseErrorsSoDoNotTypecheckThisNode_unique_Ok_unique_ThereWereSignificantParseErrorsSoDoNotTypecheckThisNodeget_Okget_IsOkget_ThereWereSignificantParseErrorsSoDoNotTypecheckThisNodeget_IsThereWereSignificantParseErrorsSoDoNotTypecheckThisNodeidTextget_idTextget_idRangeLidThereIsAnExtraDotAtTheEndRangeSansAnyExtraDotNewLongIdentWithDotsget_Lidget_ThereIsAnExtraDotAtTheEndget_RangeSansAnyExtraDotNoStaticReqIsNoStaticReqHeadTypeStaticReqIsHeadTypeStaticReq_unique_NoStaticReq_unique_HeadTypeStaticReqget_NoStaticReqget_IsNoStaticReqget_HeadTypeStaticReqget_IsHeadTypeStaticReqIsUserNumNewUserNumget_IsUserNumNewMeasureIsNamedIsProductIsSeqIsDivideIsPowerOneIsOneIsVar_unique_OneNewNamedget_IsNamedNewProductget_IsProductNewSeqget_IsSeqNewDivideget_IsDivideNewPowerget_IsPowerget_Oneget_IsOneNewAnonNewVarget_IsVarPublicInternalIsInternalPrivate_unique_Public_unique_Internal_unique_Privateget_Publicget_Internalget_IsInternalget_PrivateSequencePointAtTargetIsSequencePointAtTargetSuppressSequencePointAtTargetIsSuppressSequencePointAtTarget_unique_SequencePointAtTarget_unique_SuppressSequencePointAtTargetget_SequencePointAtTargetget_IsSequencePointAtTargetget_SuppressSequencePointAtTargetget_IsSuppressSequencePointAtTargetSequencePointsAtSeqIsSequencePointsAtSeqSuppressSequencePointOnExprOfSequentialIsSuppressSequencePointOnExprOfSequentialSuppressSequencePointOnStmtOfSequentialIsSuppressSequencePointOnStmtOfSequential_unique_SequencePointsAtSeq_unique_SuppressSequencePointOnExprOfSequential_unique_SuppressSequencePointOnStmtOfSequentialget_SequencePointsAtSeqget_IsSequencePointsAtSeqget_SuppressSequencePointOnExprOfSequentialget_IsSuppressSequencePointOnExprOfSequentialget_SuppressSequencePointOnStmtOfSequentialget_IsSuppressSequencePointOnStmtOfSequentialIsSequencePointAtTrySequencePointInBodyOfTryIsSequencePointInBodyOfTryNoSequencePointAtTryIsNoSequencePointAtTry_unique_SequencePointInBodyOfTry_unique_NoSequencePointAtTryNewSequencePointAtTryget_IsSequencePointAtTryget_SequencePointInBodyOfTryget_IsSequencePointInBodyOfTryget_NoSequencePointAtTryget_IsNoSequencePointAtTryIsSequencePointAtWithNoSequencePointAtWithIsNoSequencePointAtWith_unique_NoSequencePointAtWithNewSequencePointAtWithget_IsSequencePointAtWithget_NoSequencePointAtWithget_IsNoSequencePointAtWithIsSequencePointAtFinallyNoSequencePointAtFinallyIsNoSequencePointAtFinally_unique_NoSequencePointAtFinallyNewSequencePointAtFinallyget_IsSequencePointAtFinallyget_NoSequencePointAtFinallyget_IsNoSequencePointAtFinallyIsSequencePointAtForLoopNoSequencePointAtForLoopIsNoSequencePointAtForLoop_unique_NoSequencePointAtForLoopNewSequencePointAtForLoopget_IsSequencePointAtForLoopget_NoSequencePointAtForLoopget_IsNoSequencePointAtForLoopIsSequencePointAtWhileLoopNoSequencePointAtWhileLoopIsNoSequencePointAtWhileLoop_unique_NoSequencePointAtWhileLoopNewSequencePointAtWhileLoopget_IsSequencePointAtWhileLoopget_NoSequencePointAtWhileLoopget_IsNoSequencePointAtWhileLoopIsSequencePointAtBindingNoSequencePointAtDoBindingIsNoSequencePointAtDoBindingNoSequencePointAtLetBindingIsNoSequencePointAtLetBindingNoSequencePointAtStickyBindingIsNoSequencePointAtStickyBindingNoSequencePointAtInvisibleBindingIsNoSequencePointAtInvisibleBinding_unique_NoSequencePointAtDoBinding_unique_NoSequencePointAtLetBinding_unique_NoSequencePointAtStickyBinding_unique_NoSequencePointAtInvisibleBindingNewSequencePointAtBindingget_IsSequencePointAtBindingget_NoSequencePointAtDoBindingget_IsNoSequencePointAtDoBindingget_NoSequencePointAtLetBindingget_IsNoSequencePointAtLetBindingget_NoSequencePointAtStickyBindingget_IsNoSequencePointAtStickyBindingget_NoSequencePointAtInvisibleBindingget_IsNoSequencePointAtInvisibleBindingNewSeqExprOnlyAtomicNonAtomicStandaloneExpressionIsStandaloneExpressionNormalBindingIsNormalBindingDoBindingIsDoBinding_unique_StandaloneExpression_unique_NormalBinding_unique_DoBindingget_StandaloneExpressionget_IsStandaloneExpressionget_NormalBindingget_IsNormalBindingget_DoBindingget_IsDoBindingNewTyparDeclIsWhereTyparIsValueTypeIsWhereTyparIsReferenceTypeIsWhereTyparIsUnmanagedIsWhereTyparSupportsNullIsWhereTyparIsComparableIsWhereTyparIsEquatableIsWhereTyparDefaultsToTypeIsWhereTyparSubtypeOfTypeIsWhereTyparSupportsMemberIsWhereTyparIsEnumIsWhereTyparIsDelegateNewWhereTyparIsValueTypeget_IsWhereTyparIsValueTypeNewWhereTyparIsReferenceTypeget_IsWhereTyparIsReferenceTypeNewWhereTyparIsUnmanagedget_IsWhereTyparIsUnmanagedNewWhereTyparSupportsNullget_IsWhereTyparSupportsNullNewWhereTyparIsComparableget_IsWhereTyparIsComparableNewWhereTyparIsEquatableget_IsWhereTyparIsEquatableNewWhereTyparDefaultsToTypeget_IsWhereTyparDefaultsToTypeNewWhereTyparSubtypeOfTypeget_IsWhereTyparSubtypeOfTypeNewWhereTyparSupportsMemberget_IsWhereTyparSupportsMemberNewWhereTyparIsEnumget_IsWhereTyparIsEnumNewWhereTyparIsDelegateget_IsWhereTyparIsDelegateIsLongIdentIsLongIdentAppIsFunIsWithGlobalConstraintsIsHashConstraintIsMeasureDivideIsMeasurePowerIsStaticConstantIsStaticConstantExprIsStaticConstantNamedNewLongIdentget_IsLongIdentNewLongIdentAppget_IsLongIdentAppNewTupleNewArrayNewFunget_IsFunNewWithGlobalConstraintsget_IsWithGlobalConstraintsNewHashConstraintget_IsHashConstraintNewMeasureDivideget_IsMeasureDivideNewMeasurePowerget_IsMeasurePowerNewStaticConstantget_IsStaticConstantNewStaticConstantExprget_IsStaticConstantExprNewStaticConstantNamedget_IsStaticConstantNamedIsParenIsTypedIsArrayOrListIsRecordIsObjExprIsForEachIsArrayOrListOfSeqExprIsCompExprIsMatchLambdaIsDoIsAssertIsTypeAppIsLetOrUseIsTryWithIsLazyIsIfThenElseIsIdentIsLongIdentSetIsDotGetIsDotSetIsDotIndexedGetIsDotIndexedSetIsNamedIndexedPropertySetIsDotNamedIndexedPropertySetIsTypeTestIsUpcastIsDowncastIsInferredUpcastIsInferredDowncastIsAddressOfIsJoinInIsImplicitZeroIsYieldOrReturnIsYieldOrReturnFromIsLetOrUseBangIsDoBangIsLibraryOnlyILAssemblyIsLibraryOnlyStaticOptimizationIsLibraryOnlyUnionCaseFieldGetIsLibraryOnlyUnionCaseFieldSetIsArbitraryAfterErrorIsFromParseErrorIsDiscardAfterMissingQualificationAfterDotRangeOfFirstPortionIsArbExprAndThusAlreadyReportedErrorNewParenget_IsParenNewTypedget_IsTypedNewArrayOrListget_IsArrayOrListNewRecordget_IsRecordNewObjExprget_IsObjExprNewForEachget_IsForEachNewArrayOrListOfSeqExprget_IsArrayOrListOfSeqExprNewCompExprget_IsCompExprNewMatchLambdaget_IsMatchLambdaNewDoget_IsDoNewAssertget_IsAssertNewTypeAppget_IsTypeAppNewLetOrUseget_IsLetOrUseNewTryWithget_IsTryWithNewLazyget_IsLazyNewIfThenElseget_IsIfThenElseNewIdentget_IsIdentNewLongIdentSetget_IsLongIdentSetNewDotGetget_IsDotGetNewDotSetget_IsDotSetNewDotIndexedGetget_IsDotIndexedGetNewDotIndexedSetget_IsDotIndexedSetNewNamedIndexedPropertySetget_IsNamedIndexedPropertySetNewDotNamedIndexedPropertySetget_IsDotNamedIndexedPropertySetNewTypeTestget_IsTypeTestNewUpcastget_IsUpcastNewDowncastget_IsDowncastNewInferredUpcastget_IsInferredUpcastNewInferredDowncastget_IsInferredDowncastNewNullNewAddressOfget_IsAddressOfNewJoinInget_IsJoinInNewImplicitZeroget_IsImplicitZeroNewYieldOrReturnget_IsYieldOrReturnNewYieldOrReturnFromget_IsYieldOrReturnFromNewLetOrUseBangget_IsLetOrUseBangNewDoBangget_IsDoBangNewLibraryOnlyILAssemblyget_IsLibraryOnlyILAssemblyNewLibraryOnlyStaticOptimizationget_IsLibraryOnlyStaticOptimizationNewLibraryOnlyUnionCaseFieldGetget_IsLibraryOnlyUnionCaseFieldGetNewLibraryOnlyUnionCaseFieldSetget_IsLibraryOnlyUnionCaseFieldSetNewArbitraryAfterErrorget_IsArbitraryAfterErrorNewFromParseErrorget_IsFromParseErrorNewDiscardAfterMissingQualificationAfterDotget_IsDiscardAfterMissingQualificationAfterDotget_RangeOfFirstPortionget_IsArbExprAndThusAlreadyReportedErrorIsIdIsAttribget_IsIdget_IsAttribIsUndecidedIsDecidedNewUndecidedget_IsUndecidedNewDecidedget_IsDecidedIsWhenTyparTyconEqualsTyconIsWhenTyparIsStructNewWhenTyparTyconEqualsTyconget_IsWhenTyparTyconEqualsTyconNewWhenTyparIsStructget_IsWhenTyparIsStructIsSimplePatsNewSimplePatsget_IsSimplePatsIsWildIsOrIsAndsIsOptionalValIsDeprecatedCharRangeNewWildget_IsWildNewOrget_IsOrNewAndsget_IsAndsNewOptionalValget_IsOptionalValNewDeprecatedCharRangeget_IsDeprecatedCharRangeNewInstanceMemberNewInterfaceImplRangeOfGuardAndRhsNewClauseget_RangeOfGuardAndRhsTypeNameArgExprAppliesToGetterAndSetterTypeName@ArgExpr@Target@AppliesToGetterAndSetter@Range@get_TypeNameget_ArgExprget_AppliesToGetterAndSetterappliesToGetterAndSetterNewSynValDataRangeOfBindingSansRhsRangeOfBindingAndRhsRangeOfHeadPatget_RangeOfBindingSansRhsget_RangeOfBindingAndRhsget_RangeOfHeadPatNewSynBindingReturnInfoIsInstance@IsDispatchSlot@IsOverrideOrExplicitImpl@IsFinal@MemberKind@get_MemberKindisDispatchSlotisOverrideOrExplicitImplClassConstructorPropertyGetIsPropertyGetPropertySetIsPropertySetPropertyGetSetIsPropertyGetSet_unique_ClassConstructor_unique_Constructor_unique_Member_unique_PropertyGet_unique_PropertySet_unique_PropertyGetSetget_ClassConstructorget_Memberget_PropertyGetget_IsPropertyGetget_PropertySetget_IsPropertySetget_PropertyGetSetget_IsPropertyGetSetIsValFieldIsNestedTypeNewMemberNewInterfaceNewValFieldget_IsValFieldNewNestedTypeget_IsNestedTypeTyconUnspecifiedIsTyconUnspecifiedTyconClassIsTyconClassTyconInterfaceIsTyconInterfaceTyconStructIsTyconStructTyconRecordIsTyconRecordTyconUnionIsTyconUnionTyconAbbrevIsTyconAbbrevTyconHiddenReprIsTyconHiddenReprIsTyconAugmentationTyconILAssemblyCodeIsTyconILAssemblyCodeIsTyconDelegate_unique_TyconUnspecified_unique_TyconClass_unique_TyconInterface_unique_TyconStruct_unique_TyconRecord_unique_TyconUnion_unique_TyconAbbrev_unique_TyconHiddenRepr_unique_TyconAugmentation_unique_TyconILAssemblyCodeget_TyconUnspecifiedget_IsTyconUnspecifiedget_TyconClassget_IsTyconClassget_TyconInterfaceget_IsTyconInterfaceget_TyconStructget_IsTyconStructget_TyconRecordget_IsTyconRecordget_TyconUnionget_IsTyconUnionget_TyconAbbrevget_IsTyconAbbrevget_TyconHiddenReprget_IsTyconHiddenReprget_TyconAugmentationget_IsTyconAugmentationget_TyconILAssemblyCodeget_IsTyconILAssemblyCodeNewTyconDelegateget_IsTyconDelegateIsUnionIsGeneralNewUnionget_IsUnionNewEnumNewGeneralget_IsGeneralNewTypeAbbrevNewNoneNewEnumCaseIsUnionCaseFieldsIsUnionCaseFullTypeNewUnionCaseFieldsget_IsUnionCaseFieldsNewUnionCaseFullTypeget_IsUnionCaseFullTypeIsObjectModelNewObjectModelget_IsObjectModelNewTypeDefnSigNewFieldNewComponentInfoRangeOfIdNewValSpfnget_RangeOfIdget_SynInfoget_SynTypeNewSynValInfoNewSynArgInfoNewSynValTyparDeclsNewExceptionDefnReprNewExceptionDefnIsOpenIsImplicitCtorIsImplicitInheritIsLetBindingsIsAbstractSlotIsAutoPropertyNewOpenget_IsOpenNewImplicitCtorget_IsImplicitCtorNewImplicitInheritget_IsImplicitInheritNewLetBindingsget_IsLetBindingsNewAbstractSlotget_IsAbstractSlotNewAutoPropertyget_IsAutoPropertyIsModuleAbbrevIsNestedModuleIsDoExprIsAttributesIsHashDirectiveIsNamespaceFragmentNewModuleAbbrevget_IsModuleAbbrevNewNestedModuleget_IsNestedModuleNewDoExprget_IsDoExprNewAttributesget_IsAttributesNewHashDirectiveget_IsHashDirectiveNewNamespaceFragmentget_IsNamespaceFragmentNewExceptionSigNewSynModuleOrNamespaceNewSynModuleOrNamespaceSigNewParsedHashDirectiveIsAnonModuleIsNamedModuleNewAnonModuleget_IsAnonModuleNewNamedModuleget_IsNamedModuleIsIDefnsIsIHashNewIDefnsget_IsIDefnsNewIHashget_IsIHashNewParsedImplFileNewParsedSigFileNewWarningOffNewQualifiedNameOfFileNewParsedImplFileInputNewParsedSigFileInputIsImplFileIsSigFileNewImplFileget_IsImplFileNewSigFileget_IsSigFilegeneratedArgNamePrefixResetrhsfNewSynReturnInfoIfDefIfIsIfDefIfIfDefElseIsIfDefElse_unique_IfDefIf_unique_IfDefElseget_IfDefIfget_IsIfDefIfget_IfDefElseget_IsIfDefElseIsTokenIsSkipLexerIfdefStackNewTokenget_IsTokenNewSkipget_IsSkipget_LexerIfdefStackIsIfDefSkipIsVerbatimStringIsTripleQuoteStringIsCommentIsSingleLineCommentIsStringInCommentIsVerbatimStringInCommentIsTripleQuoteStringInCommentIsMLOnlyIsEndLineNewIfDefSkipget_IsIfDefSkipNewVerbatimStringget_IsVerbatimStringNewTripleQuoteStringget_IsTripleQuoteStringNewCommentget_IsCommentNewSingleLineCommentget_IsSingleLineCommentNewStringInCommentget_IsStringInCommentNewVerbatimStringInCommentget_IsVerbatimStringInCommentNewTripleQuoteStringInCommentget_IsTripleQuoteStringInCommentNewMLOnlyget_IsMLOnlyNewEndLineget_IsEndLinebasicNameCountsFreshCompilerGeneratedNameGetUniqueCompilerGeneratedNameuniqxmlDocKeyget_xmlDocKeyClearXmlDocSaveXmlDocLineGrabXmlDocBeforeMarkermarkerRangeemptySynValInfoemptySynValDataIsOptionalArgHasOptionalArgsIncorporateEmptyTupledArgForPropertyGetterIncorporateSelfArgIncorporateSetterArgAttribsOfArgDataInferSynArgInfoFromSimplePatInferSynArgInfoFromSimplePatsInferSynArgInfoFromPatAdjustArgsForUnitEliminationinfosForArgsAdjustMemberArgsloop@1920-30InferLambdaArgsInferSynReturnDataget_emptySynValInfoget_emptySynValDataInferSynValDataIntoLiteralAttributeRootRootPathCoreCorePathget_Rootget_RootPathget_Coreget_CorePathRootPath@37Core@38CorePath@39opNameParenGet@1707opNameQMark@1708unnamedTopArg1@1833unnamedTopArg@1836unitArgData@1839unnamedRetVal@1842selfMetadata@1845emptySynValInfo@1932emptySynValData@1934CtorMemberFlags@1986ClassCtorMemberFlags@1987inferredTyparDecls@1992noInferredTypars@1993emptyLjoinjoin1join2join3chunkNstringRjuxtLeftjuxtRightget_emptyLisEmptyLmkNodejointwordLsepLrightLleftLaboveLget_joinget_join1get_join2get_join3linkLlyapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_MinusMinusMinusMinusop_MinusMinusMinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@96-1taggertagListLcommaListLsemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLlistLget_chunkNpushBreaksavingpopBreakforceBreakfitLeaf@185-1maxWidthlayouttextWidthfit@175-1squashToAddTextAddTagaddL@273-2rrFinishrenderLget_stringRchannelRbufferRhtmlRbaseRindentRshowLoutLbufferLNewBreaksAddBreakjmMicrosoft-FSharp-Compiler-Layout-render`2-StartMicrosoft-FSharp-Compiler-Layout-render`2-AddTextMicrosoft-FSharp-Compiler-Layout-render`2-AddBreakMicrosoft-FSharp-Compiler-Layout-render`2-AddTagMicrosoft-FSharp-Compiler-Layout-render`2-Finish_unique_NoStateget_NoState_unique_NoResultget_NoResultemptyL@44-2stringR@302retryDelayMillisecondsnumRetriesStringAsLexbufFunctionAsLexbufget_retryDelayMillisecondsget_numRetriesSleepgetSource@53retryNumberUnicodeFileAsLexbufcuspecReprcudefReprtagPropertyNameTagNilTagConsALT_NAME_CONSmkMakerNamecuspecget_cuspecReprget_cudefReprget_tagPropertyNameformalTypeArgsconstFormalFieldTyTypeForAlternativeGetILTypeForAlternativealtaltOfUnionSpeccidxdoesRuntimeTypeDiscriminateUseHelperavoidHelpersmkRuntimeTypeDiscriminatealtNamealtTymkRuntimeTypeDiscriminateThenaftermkGetTagFromFieldadjustFieldNamehasHelpersmkLdDatafidxOptimizingOneAlternativeToNullmkGetTagFromHelpersmkGetTagmkCeqThenmkTagDiscriminate_baseTymkTagDiscriminateThenOptimizeAlternativeToNullMaintainPossiblyUniqueConstantFieldForAlternativeOptimizeSingleNonNullaryAlternativeToRootClassconvNewDataInstrInternalmkCase@391outlablocnlastfailLabmkCase@508-1_lastmkCase@557-2OptimizeAlternativeToRootClassOptimizeSingleNonNullaryAlternativeToRootClassAndAnyOtherAlternativesToNullconvInstrtmpsconvILMethodBodyconvMethodDefmkHiddenGeneratedInstanceFieldDefmkHiddenGeneratedStaticFieldDeff@1-23mkMethodsAndPropertiesForFieldsaddAltAttribs@642f@1-24f@1-25debugProxyTyf@1-26convAlternativeDef$cont@783cudf@1-27isTotallyImmutableconvAlternativeDefnuminfo_0info_1info_2convClassUnionDef$cont@933tagFieldsInObjectaddConstFieldInit@970altNullaryFieldsconvClassUnionDefconvTypeDefconvTypeDefsConvModuleTailOrNullIsTailOrNullRuntimeTypesIsRuntimeTypesSingleCaseIsSingleCaseIntegerTagIsIntegerTag_unique_TailOrNull_unique_RuntimeTypes_unique_SingleCase_unique_IntegerTagget_IsTailOrNullget_RuntimeTypesget_IsRuntimeTypesget_SingleCaseget_IsSingleCaseget_IntegerTagget_IsIntegerTagnullPermittednameOfAltmakeRootTypemakeNestedTypeisNullaryisListgetAlternativesTaggingThresholdFixedConstantinit@58-7OptimizeAllAlternativesToConstantFieldsInRootClasscuOptimizeAlternativeToConstantFieldInTaggedRootClassAltalt2_unique_NoTypesGeneratedViaThisReprDeciderget_NoTypesGeneratedViaThisReprDecidercaseInfoselfFieldsfldTyfldNameinRootClassconstFieldId_0constFieldSpectagFieldTypecuspecRepr@166cudefRepr@177addMethodGeneratedAttrsToTypeDefstripUpTodestdestTyLambdastripSupportedIndirectCallappsstripSupportedAbstractionmkFuncTypeRefnew_cenvmkILTyFuncTymkILFuncTytyp_FuncdtysmkTyOfAppsmkTyOfLambdasmkMethSpecForMultiAppargtys'mkCallBlockForMultiValueAppdoTailCallrty'mkLdFreeVarclospecunwind@231varCountcomputePreCall@246fstloadersbuildApp@253tlthisGenParamsconvReturnInstr_inplab_outlabthisCloboxReturnTyconvMethodBodymkILFreeVarForParammkILCloFldSpecsmkILCloFldDefsfindMatchingArg@405argToFreeVarMapmkEnvmkArgfixupArg@404rewriteCodeToAccessArgsFromEnv@400laterCloSpecconvIlxClosureDef$cont@640nowFieldsnowTynowCloSpectagCloconvIlxClosureDef$cont@599-1nowParamsnowReturnTyconvIlxClosureDef$cont@501-2convIlxClosureDefmdefGenencltref_Functref_Func@mkILTyFuncTy@get_tref_Funcget_mkILTyFuncTyrevArgsSoFarnumLocalsilxCompilingFSharpCoreLibilxFsharpCoreLibAssemReffield622006@get_ilxCompilingFSharpCoreLibget_ilxFsharpCoreLibAssemRefilxFsharpCoreLibScopeRefilxNamespaceVirtEntriesVirtCode_unique_VirtEntriesVirtCodeget_VirtEntriesVirtCodeilxCompilingFSharpCoreLib@24ilxFsharpCoreLibAssemRef@27parenGetparenSetqmarkqmarkSetopNameTableopCharTranslateTableopCharDictt@124-4enumerator@125CompileOpNamet@134-5t2@135DecompileOpNamet@152-6enumerator@153-1opNameConsopNameNilopNameEqualsopNameEqualsNullableopNameNullableEqualsopNameNullableEqualsNullablecompilerGeneratedMarkercompilerGeneratedMarkerCharmangledGenericTypeNameSymFSharpModuleSuffixMangledGlobalNameIllegalCharactersInTypeAndNamespaceNamesfield622004@get_parenGetget_parenSetget_qmarkget_qmarkSetget_opNameTableget_opCharTranslateTableget_opCharDictget_t@124-4get_enumerator@125loop@130-27IsOpNameget_CompileOpNameget_t@134-5get_t2@135IsMangledOpNameget_DecompileOpNameget_t@152-6get_enumerator@153-1loop@161-28get_opNameConsget_opNameNilget_opNameEqualsget_opNameEqualsNullableget_opNameNullableEqualsget_opNameNullableEqualsNullableUnicodeCategoryGetUnicodeCategoryIsIdentifierFirstCharacterIsValidPrefixOperatorUseIsValidPrefixOperatorDefinitionNameIsPrefixOperatorIsTernaryOperatorIsInfixOperatorNewChoice3Of6NewChoice5Of6NewChoice4Of6NewChoice6Of6|Control|Equality|Relational|Indexer|FixedTypes|Other|$cont@268NewChoice1Of6NewChoice2Of6|Control|Equality|Relational|Indexer|FixedTypes|Other|get_compilerGeneratedMarkerget_compilerGeneratedMarkerCharIsCompilerGeneratedNameCompilerGeneratedNameGetBasicNameOfPossibleCompilerGeneratedNameCompilerGeneratedNameSuffixbasicNameget_mangledGenericTypeNameSymIsMangledGenericNameDecodeGenericTypeNameDemangleGenericTypeNamechopStringToTryChopPropertyNameChopPropertyNameDemangleOperatorNameSplitNamesForILPathisNotQuotedQuotation@372text'split@373separatorcurinsideQuotationsplitAroundQuotationsplitAroundQuotationWithCount$cont@390splitAroundQuotationWithCountget_FSharpModuleSuffixget_MangledGlobalNameget_IllegalCharactersInTypeAndNamespaceNamesIsActivePatternNameloop@423-29ActivePatternInfoOfValNamemangleStaticStringArgtryDemangleStaticStringArgmangledTextf@1-22piecedemangleProvidedTypeNamemangleProvidedTypeNamenonDefaultArgsskipIgnoredCharsNewNameArityPairIsTotalActiveTagsNewAPInfoget_IsTotalget_ActiveTagsopNameTable@38opCharTranslateTable@96opCharDict@123t@124CompileOpName@133t@134-1DecompileOpName@151t@152-2opNameCons@182opNameNil@183opNameEquals@184opNameEqualsNullable@185opNameNullableEquals@186opNameNullableEqualsNullable@187IllegalCharactersInTypeAndNamespaceNames@399DotNetBuildStringFSharpBinaryMetadataFormatRevisionFSharpCoreLibRunningVersionmaxPathmaxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZis32BitBackupInstallationProbePointsIsRunningOnNetFx45OrAboveget_DotNetBuildStringget_FSharpBinaryMetadataFormatRevisionget_FSharpCoreLibRunningVersionRegOpenKeyExW_hKey_lpSubKey_ulOptions_samDesired_phkResultAdvapi32.dllRegQueryValueExW_lpValueName_lpReserved_lpType_lpData_lpchDataRegCloseKeyget_maxPathget_maxDataLengthget_KEY_WOW64_DEFAULTget_KEY_WOW64_32KEYget_HKEY_LOCAL_MACHINEget_KEY_QUERY_VALUEget_REG_SZGetDefaultRegistryStringValueViaDotNetsubKeyget_OSVersionOperatingSystemget_VersionMarshalAllocCoTaskMemPtrToStringUniFreeCoTaskMemGet32BitRegistryStringValueViaPInvokeget_is32BittryRegKeytryCurrentDomainSystem.ConfigurationConfigurationSettingsget_AppSettingsSystem.Collections.SpecializedNameValueCollectionGetExecutingAssemblyget_LocationtryAppConfigappConfigKeySystem.Text.RegularExpressionsRegexReadAllTextGroupget_Successget_GroupsGroupCollectionCapturetryFsharpiScripturlget_BackupInstallationProbePointsexists@270-1BinFolderOfDefaultFSharpCompilerget_IsRunningOnNetFx45OrAboveofStringFSharpCoreLibRunningVersion@37maxDataLength@65HKEY_LOCAL_MACHINE@68is32Bit@136BackupInstallationProbePoints@206UTF32EncodingGetMaxByteCountcodeLabelOrderlogRefEmitCallsorderILTypeReforderILMethodReforderILFieldReforderILPropertyRefemEnv0TypeBuilderInstantiationTverbose2field621994@field621996@field621998@field621999@field622000@field622002@get_codeLabelOrderwrapCustomAttrsetCustomAttrget_logRefEmitCallsDefineDynamicAssemblyAssemblyBuilderAccessAppDomain.DefineDynamicAssemblyAndLogasmNameasmDirDefineDynamicModuleModuleBuilderAssemblyBuilder.DefineDynamicModuleAndLogasmBSetCustomAttributeAssemblyBuilder.SetCustomAttributeAndLogAddResourceFileResourceAttributesAssemblyBuilder.AddResourceFileAndLognm1nm2CustomAttributeBuildercabGetArrayMethodCallingConventionsModuleBuilder.GetArrayMethodAndLogmodBDefineDocumentSystem.Diagnostics.SymbolStoreISymbolDocumentWriterModuleBuilder.DefineDocumentAndLogvendordoctypeModuleBuilder.GetTypeAndLognameInModuleflag1flag2DefineTypeModuleBuilder.DefineTypeAndLogDefineManifestResourceModuleBuilder.DefineManifestResourceAndLogstreamModuleBuilder.SetCustomAttributeAndLogConstructorBuilderSetImplementationFlagsMethodImplAttributesConstructorBuilder.SetImplementationFlagsAndLogconsBDefineParameterConstructorBuilder.DefineParameterAndLogGetILGeneratorConstructorBuilder.GetILGeneratorAndLogMethodBuilder.SetImplementationFlagsAndLogmethBSetReturnTypeMethodBuilder.SetReturnTypeAndLogrtSetParametersMethodBuilder.SetParametersAndLogMethodBuilder.DefineParameterAndLogDefineGenericParametersMethodBuilder.DefineGenericParametersAndLogMethodBuilder.GetILGeneratorAndLogMethodBuilder.SetCustomAttributeAndLogCreateTypeTypeBuilder.CreateTypeAndLogDefineNestedTypeTypeBuilder.DefineNestedTypeAndLogtypBDefineMethodMethodAttributesTypeBuilder.DefineMethodAndLogcconvTypeBuilder.DefineGenericParametersAndLogDefineConstructorTypeBuilder.DefineConstructorAndLogparmsDefineFieldFieldAttributesTypeBuilder.DefineFieldAndLogDefinePropertyPropertyBuilderPropertyAttributesTypeBuilder.DefinePropertyAndLogDefineEventEventBuilderEventAttributesTypeBuilder.DefineEventAndLogSetParentTypeBuilder.SetParentAndLogAddInterfaceImplementationTypeBuilder.AddInterfaceImplementationAndLogInvokeMemberBinderTypeBuilder.InvokeMemberAndLogTypeBuilder.SetCustomAttributeAndLogOpCodeToUpperOpCode.get_RefEmitNameDeclareLocalLocalBuilderILGenerator.DeclareLocalAndLogilGisPinnedMarkLabelILGenerator.MarkLabelAndLogMarkSequencePointILGenerator.MarkSequencePointAndLogsymDocBeginExceptionBlockILGenerator.BeginExceptionBlockAndLogEndExceptionBlockILGenerator.EndExceptionBlockAndLogBeginFinallyBlockILGenerator.BeginFinallyBlockAndLogBeginCatchBlockILGenerator.BeginCatchBlockAndLogBeginExceptFilterBlockILGenerator.BeginExceptFilterBlockAndLogBeginFaultBlockILGenerator.BeginFaultBlockAndLogDefineLabelILGenerator.DefineLabelAndLogEmitILGenerator.EmitAndLogflagsIfequalTypesequalTypeListsttgetGenericArgumentsOfTypetypTgetGenericArgumentsOfMethodmethIgetTypeConstructorSetPublicKeyTokenSetPublicKeyset_CultureInfoconvAssemblyRefcollectPrefixParts@366getTRefTypeGetHashCode$cont@408-8Equals$cont@408-7Equals$cont@408-8get_orderILTypeRefget_orderILMethodRefget_orderILFieldRefget_orderILPropertyRefget_emEnv0envBindTypeRefIsCreatedget_IsGenericTypeDefinitionFormatterServicesGetUninitializedObjectenvUpdateCreatedTypeRefenvGetTypTpreferCreatedenvBindConsRefenvGetConsBenvBindMethodRefenvGetMethBenvBindFieldReffieldBenvGetFieldBenvBindPropRefprefpropBenvGetPropBenvGetTypBenvGetTypeDefenvSetLocalslocsenvGetLocalenvSetLabelenvGetLabelenvPushTyvarsenvPopTyvarsenvGetTyvaru16isEmittedTypeRefenvAddEntryPtmref_0mref_1envPopEntryPtsconvCallConvconvTypeSpectspecconvTypeAuxconvTypeconvTypesconvTypesToArrayconvCreatedTypeconvFieldInitget_TypeBuilderInstantiationTtypeIsNotQueryablequeryableTypeGetField_emEnvparentTnonQueryableTypeGetFieldparentTIfieldInfoconvFieldSpecqueryableTypeGetMethodBySearchParameterModifierqueryableTypeGetMethodnonQueryableTypeGetMethodconvMethodRefconvMethodSpecqueryableTypeGetConstructornonQueryableTypeGetConstructorconsInfoconvConstructorSpecemitLabelMarkdefineLabelOpCodesBeqBgeBge_UnBgtBgt_UnBleBle_UnBltBlt_UnBne_UnBrfalseBrtrueemitInstrComparetargVolatileemitInstrVolatileUnalignedemitInstrAlignTailcallRetemitInstrTailtailemitTheCallNewobjemitInstrNewobjvarargsemitSilverlightCheckemitInstrCallopCallgetGenericMethodDefinitiongetArrayMethInfosetArrayMethInfoguid@1246Add_OvfAdd_Ovf_UnAndDivDiv_UnCeqCgtCgt_UnCltClt_UnConv_IConv_I1Conv_I2Conv_I4Conv_I8Conv_UConv_U1Conv_U2Conv_U4Conv_U8Conv_R_UnConv_R4Conv_R8Conv_Ovf_IConv_Ovf_I1Conv_Ovf_I2Conv_Ovf_I4Conv_Ovf_I8Conv_Ovf_UConv_Ovf_U1Conv_Ovf_U2Conv_Ovf_U4Conv_Ovf_U8Conv_Ovf_I_UnConv_Ovf_I1_UnConv_Ovf_I2_UnConv_Ovf_I4_UnConv_Ovf_I8_UnConv_Ovf_U_UnConv_Ovf_U1_UnConv_Ovf_U2_UnConv_Ovf_U4_UnConv_Ovf_U8_UnMulMul_OvfMul_Ovf_UnRemRem_UnShlShrShr_UnSubSub_OvfSub_Ovf_UnXorNegNotLdnullDupCkfiniteNopLdc_I4Ldc_I8Ldc_R4Ldc_R8LdargLdargaLdind_ILdind_I1Ldind_I2Ldind_I4Ldind_I8Ldind_R4Ldind_R8Ldind_U1Ldind_U2Ldind_U4Ldind_RefLdlocLdlocaStargStind_IStind_I1Stind_I2Stind_I4Stind_I8Stind_R4Stind_R8Stind_RefStlocJmpSwitchCallvirtConstrainedLdftnEndfinallyLeaveLdsfldLdfldLdsfldaLdfldaStsfldStfldLdstrIsinstCastclassLdtokenLdvirtftnCpobjInitobjLdobjStobjBoxUnboxUnbox_AnySizeofLdelem_ILdelem_I1Ldelem_I2Ldelem_I4Ldelem_I8Ldelem_R4Ldelem_R8Ldelem_U1Ldelem_U2Ldelem_U4Ldelem_RefStelem_IStelem_I1Stelem_I2Stelem_I4Stelem_I8Stelem_R4Stelem_R8Stelem_RefReadonlyLdelemaLdelemStelemNewarrLdlenMkrefanyRefanytypeRefanyvalBreakArglistLocallocCpblkInitblkemitInstremitBasicBlockbblockemitSusp@1276suspcommitSusp@1281emitter@1286emitHandler@1304sehemitCodeemitLocallocalemitILMethodBodyilmbodyemitMethodBody_namembodyconvCustomAttremitCustomAttremitCustomAttrsbuildGenParamsPass1defineGenericParametersbuildGenParamsPass1bgenArgsemitParameterdefineParameterparamconvMethodAttributesconvMethodImplFlagsCallingConventionCharSetDefinePInvokeMethodbuildMethodPass2buildMethodPass3DefineInitializedDatabuildFieldPass2buildFieldPass3_typBbuildPropertyPass2propbuildPropertyPass3SetAddOnMethodSetRemoveOnMethodbuildEventPass3eventDefDefineMethodOverridebuildMethodImplsPass3_treftypeAttrbutesOfTypeDefKindtypeAttrbutesOfTypeAccesstypeAttributesOfTypeEncodingattr@1766typeAttributesOfTypeLayoutbuildTypeDefPass1rootTypeBuildernestingbuildTypeTypeDefbuildTypeDefPass1bbuildTypeDefPass2buildTypeDefPass3ScangetEnclosingTypeRefsgetTypeRefsInTypevalueTypesOnlyget_verbose2traverseTypeDef@1924createdtraverseType@1960ResolveEventHandleradd_TypeResolveremove_TypeResolvetraverseTypeRef@1966createTypeRefbuildTypeDefPass4buildModuleTypePass1buildModuleTypePass1bbuildModuleTypePass2buildModuleTypePass3buildModuleTypePass4visited_0visited_1KeyCollectionbuildModuleFragmentmkDynamicAssemblyAndModuleoptimizedebugInfoemitModuleFragmentresolvePathset_VersiongeneratePdbgeneratePdb@resolvePath@get_generatePdbget_resolvePathh2h1emTypMapemConsMapemMethMapemFieldMapemPropMapemLocalsemLabelsemTyvarsemEntryPtsemTypMap@emConsMap@emMethMap@emFieldMap@emPropMap@emLocals@emLabels@emTyvars@emEntryPts@get_emTypMapget_emConsMapget_emMethMapget_emFieldMapget_emPropMapget_emLocalsget_emLabelsget_emTyvarsget_emEntryPtstyargTsEmitCallvartypscallsigCalliEmitCalligpBgenpBsGenericParameterAttributesSetBaseTypeConstraintSetInterfaceConstraintsSetGenericParameterAttributesparBretBSetConstantSetOffsetSetSetMethodSetGetMethodeventBSetRaiseMethodAddOtherMethodimplTtraverseTypenestingToProbeResolveEventArgsMemoryStreamunitVar2fieldBuildermethodBuildercodeLabelOrder@38orderILTypeRef@419orderILMethodRef@420orderILFieldRef@421orderILPropertyRef@422emEnv0@424TypeBuilderInstantiationT@671FastGenericComparerreportTimetFirst@48tPrev@49sizeof_IMAGE_DEBUG_DIRECTORYmonoCompilerSvcmsdosHeaderfield621969@field621971@field621972@field621973@field621975@field621977@field621979@field621980@field621981@field621982@field621983@field621985@field621986@field621988@field621989@field621991@get_reportTimeget_tFirst@48get_tPrev@49ByteBuffer.Z32Size.StaticByteBuffer.EmitZ32ByteBuffer.EmitPaddingByteBuffer.EmitZUntaggedIndexbigByteBuffer.EmitZTaggedIndexnbitsscan@141markerForUnicodeBytescheckFixup32applyFixup32CompareTo$cont@186-25CompareTo$cont@186-26CompareTo$cont@198-27CompareTo$cont@198-28get_sizeof_IMAGE_DEBUG_DIRECTORYgetDocument@257docsWritePdbInfo$cont@281allSpsadd@315-1f@1-12f@1-13pdbwwritePdbScope@337scoWritePdbInfofixupOverlappingSequencePointsfpdbGetTupleFieldsop_DynamicArgsRget_monoCompilerSvccreateSourceMethodImplnamespaceIDcreateWritergetDocument@420-1writeScope@441wrWriteMdbInfofmdbwriteScope@489-1offsDumpDebugInfoTypeDefOrRefOrSpecTypeOrMethodDefHasConstantHasCustomAttributeHasFieldMarshalHasDeclSecurityMemberRefParentHasSemanticsMethodDefOrRefMemberForwardedCustomAttributeTypeResolutionScopehashRowequalRowselems2envForMethodRefCompareTo$cont@903-29CompareTo$cont@903-30AddSharedEntryAddSharedRowAddUnsharedEntryAddUnsharedRowmetadataSchemaVersionSupportedByCLRVersionv_2v_3headerVersionSupportedByCLRVersionpeOptionalHeaderByteByCLRVersionrecordRequiredDataFixuprequiredDataFixupsFindOrAddSharedEntryGetBytesAsBlobIdxGetStringHeapIdxGetStringHeapIdxOptionsoptGetTypeNameAsElemPairAddUniqueEntryGenTypeDefPass1GenTypeDefsPass1tdsdict@GetIdxForTypeDefGetAssemblyRefAsRowGetModuleRefAsRowGetModuleRefAsFileRowisScopeRefLocalisTypeLocalGetScopeRefAsImplementationElemGetTypeRefAsTypeRefRowGetTypeRefAsTypeRefIdxGetResolutionScopeAsElememitTypeInfoAsTypeDefOrRefEncodedgetTypeDefOrRefAsUncodedTokenEmitArrayShapecallconvToBytentyparsEmitTypeSpecetGetTypeAsTypeDefOrRefGetTypeAsTypeSpecRowGetTypeAsTypeSpecIdxEmitTypeEmitCallsigcallconvretgenarityf@83-14GetCallsigAsBytesEmitTypesGetTypeAsMemberRefParentGetVariantTypeAsInt32EmitNativeTypeGetFieldInitAsBlobIdxGetFieldInitGetFieldInitFlagsGetMemberAccessFlagsGetTypeAccessFlagsflags$cont@1454GetTypeDefAsRow_encGetTypeOptionAsTypeDefOrRefGetTypeDefAsPropertyMapRowtidxGetTypeDefAsEventMapRowGenFieldDefPass2GetKeyForMethodDefGenMethodDefPass2GetKeyForPropertyDefGenPropertyDefPass2GetTypeAsImplementsRowGenEventDefPass2GenTypeDefPass2pidxGenTypeDefsPass2typeNameOfIdx@1600FindMethodDefIdxmdkeyFindFieldDefIdxfdkeyGetMethodRefAsMethodDefIdxMethodRefInfoAsMemberRefRowfenvGetMethodRefInfoAsBlobIdxinfo_3info_4GetMethodRefInfoAsMemberRefIdx_arg1_4_arg1_5_arg1_6GetMethodRefInfoAsMethodRefOrDefisAlwaysMethodDeff@83-15GetMethodSpecInfoAsMethodSpecIdxccGetMethodDefOrRefAsUncodedTokenGetMethodSpecInfoAsUncodedTokenGetMethodRefInfoOfMethodSpecInfoInfoOfMethodSpecGetOverridesSpecAsMemberRefIdxospecGetOverridesSpecAsMethodDefOrRefGetMethodRefAsMemberRefIdxGetMethodRefAsCustomAttribTypeGetCustomAttrDataAsBlobIdxGetCustomAttrRowhca_0hca_1GenCustomAttrPass3GenCustomAttrsPass3GetSecurityDeclRowhds_0hds_1GenSecurityDeclPass3GenSecurityDeclsPass3GetFieldSpecAsMemberRefRowGetFieldSpecAsMemberRefIdxGetFieldSpecSigAsBytesGetFieldSpecSigAsBlobIdxGetFieldSpecAsFieldDefOrRefGetFieldDefOrRefAsUncodedTokenGetCallsigAsBlobIdxGetCallsigAsStandAloneSigRowGetCallsigAsStandAloneSigIdxEmitLocalSigGetLocalSigAsBlobHeapIdxGetLocalSigAsStandAloneSigIdxGetFieldDefTypeAsBlobIdxf@1-17kindAsInt32@2697kindAsExtraInt32@2703GenILMethodBodymnameGetFieldDefAsFieldDefRowGetFieldDefSigAsBlobIdxGenFieldDefPass3GetGenericParamAsGenericParamRowowner_0owner_1GenTypeAsGenericParamConstraintRowgpidxGenGenericParamPass3GenGenericParamPass4GetParamAsParamRowGenParamPass3GenReturnAsParamRowreturnvGenReturnPass3f@83-18GetMethodDefSigAsBytesGenMethodDefAsRowmidxGenMethodImplPass3_tgparamsGenMethodDefPass3GenMethodDefPass4GenPropertyMethodSemanticsPass3f@83-19GetPropertySigAsBytesGetPropertyAsPropertyRowGenPropertyPass3GenEventMethodSemanticsPass3eidxGenEventAsEventRowGenEventPass3GetResourceAsManifestResourceRowGenResourcePass3GenTypeDefPass3GenTypeDefsPass3GenTypeDefPass4GenTypeDefsPass4GenNestedExportedTypePass3ceGenNestedExportedTypesPass3nidxnceGenExportedTypePass3GetManifsetAsAssemblyRowGenManifestPass3newGuidGetModuleAsRowrowElemCompareSortTableRowsSetRowsOfTableGenModuleEqualityComparer`1f@1-20idxForNextedTypeDef@3401generateILdesiredMetadataVersioncilStartAddressguidAddress@3557stringAddress@3568stringAddressTableuserStringAddress@3582userStringAddressTableblobAddress@3595blobAddressTablef@1-21codedBigness@3611-1writeILMetadataAndCodeget_msdosHeaderBinaryWriterwriteInt64writeInt32writeInt32AsUInt16writeDirectorydataRva$cont@4148rawdataChunkdataOffsetget_BaseStreamwrite@4161chunkNamechunkwritePadding@4171_commentFileStreamFileModeFileAccessFileShareSeekSeekOriginwriteBinaryAndReportMappings$cont@4543textV2PpdbDatadebugDirectoryChunkdebugDataChunkGetByteCountwriteBinaryAndReportMappingsCompareTo$cont@4604-31CompareTo$cont@4604-32WriteILBinarySignature@Index@get_SignaturesignatureChildrenStartOffsetEndOffsetLocalsChildren@StartOffset@EndOffset@Locals@get_Childrenget_StartOffsetget_EndOffsetget_LocalsstartOffsetendOffsetDocumentDocument@Line@Column@get_DocumentdocumentOffsetOffset@get_OffsetMethTokenMethNameRootScopeSequencePointsMethToken@MethName@Params@RootScope@SequencePoints@get_MethTokenget_MethNameget_Paramsget_RootScopeget_SequencePointsmethTokenparamsrootScopesequencePointsEntryPointModuleIDDocumentsEntryPoint@ModuleID@Documents@Methods@get_EntryPointget_ModuleIDget_DocumentsentryPointmoduleIDdocumentssp1spsetspCountsspOffsetdoc0unitIsPublicKeySignerIsKeyPairIsKeyContainerIsFullySignedSignatureSizeNewPublicKeySignerget_IsPublicKeySignerNewKeyPairget_IsKeyPairNewKeyContainerget_IsKeyContainerOpenPublicKeyFileOpenPublicKeypubkeyOpenKeyPairFileOpenKeyContainerget_IsFullySignedget_PublicKeyget_SignatureSizeSignFileGetGenericRowGenericRowhashCodeget_GenericRowMicrosoft-FSharp-Compiler-AbstractIL-ILBinaryWriter-IGenericRow-GetGenericRowgenericRows3s4nameIdxstr2mrpnmIdxblobIdxEnclosingTyparCountEnclosingTyparCount@get_EnclosingTyparCountenclosingTyparCountEntriesAsArrayget_dicthashEqget_EntriesAsArraygeterrGetTableEntryTypeIdxArgTypesgarityget_TypeIdxget_ArgTypesNewEventKeyNewTdKeyrequiredStringFixupscodeChunksnextCodeAddrmoduleGuidpdbinfoentrypointtrefCacheAssemblyRefsmethodDefIdxsByKeymethodDefIdxsguidsblobsuserStringsmscorlib@desiredMetadataVersion@requiredDataFixups@requiredStringFixups@codeChunks@nextCodeAddr@moduleGuid@pdbinfo@documents@resources@entrypoint@trefCache@tables@AssemblyRefs@fieldDefs@methodDefIdxsByKey@methodDefIdxs@propertyDefs@eventDefs@typeDefs@guids@blobs@strings@userStrings@get_mscorlibget_desiredMetadataVersionget_requiredDataFixupsget_requiredStringFixupsget_codeChunksget_nextCodeAddrget_moduleGuidget_pdbinfoget_documentsget_resourcesget_entrypointget_trefCacheget_tablesget_AssemblyRefsget_fieldDefsget_methodDefIdxsByKeyget_methodDefIdxsget_propertyDefsget_eventDefsget_typeDefsget_guidsget_blobsget_stringsget_userStringsset_requiredStringFixupsset_nextCodeAddrset_moduleGuidset_entrypointassemblyRefsGetTableAddCodeGetCodeTypeDefTokenMapFieldDefTokenMapMethodDefTokenMapPropertyTokenMapEventTokenMapTypeDefTokenMap@FieldDefTokenMap@MethodDefTokenMap@PropertyTokenMap@EventTokenMap@get_TypeDefTokenMapget_FieldDefTokenMapget_MethodDefTokenMapget_PropertyTokenMapget_EventTokenMaptypeDefTokenMapfieldDefTokenMapmethodDefTokenMappropertyTokenMapeventTokenMapkvpFinallyClauseIsFinallyClauseFaultClauseIsFaultClauseIsTypeFilterClauseIsFilterClause_unique_FinallyClause_unique_FaultClauseget_FinallyClauseget_IsFinallyClauseget_FaultClauseget_IsFaultClauseNewTypeFilterClauseget_IsTypeFilterClauseNewFilterClauseget_IsFilterClausereqdBrFixupsavailBrFixupsreqdStringFixupsInMethodseqpointscode@reqdBrFixups@availBrFixups@reqdStringFixupsInMethod@seh@seqpoints@get_codeget_reqdBrFixupsget_availBrFixupsget_reqdStringFixupsInMethodget_sehget_seqpointsset_reqdBrFixupsset_reqdStringFixupsInMethodset_sehEmitUncodedTokenRecordReqdStringFixupstringidxRecordReqdBrFixupsRecordReqdBrFixupRecordAvailBrFixupmethbufaddrsize@addr@get_sizeget_addrblobmetadataresourcesChunknextPhyspdbfile@fixupOverlappingSequencePoints@get_pdbfileget_fixupOverlappingSequencePointsprogressget_progresssetExecutablePermissionencodingsForNoArgInstrsgo@1976-4binaryChopapplyBrFixups$cont@2028origCodeorigAvailBrFixupsnewCoderemainingReqdFixupsorigWherenewWherenewReqdBrFixupsf@1-16adjusterremap@2114applyBrFixupsorigExnClausesorigReqdStringFixupsorigReqdBrFixupsorigSeqPointsorigScopesget_encodingsForNoArgInstrsemitInstrCodeemitMethodSpecInfoInstrmspecinfo_0mspecinfo_1mspecinfo_2mspecinfo_3mspecinfo_4mspecinfo_5mspecinfo_6emitMethodSpecInstrmspec_0mspec_1emitShortUInt16Instri_shortemitShortInt32InstremitTailnessemitAfterTailcallemitVolatilityemitAlignmentmkScopeNodelocalSigschcollect@2546-2newSuspchildSEHchildScopesscopesclose@2551emitCodeLinear@2534brToSuspcommitSuspcommitSuspNoDestemitExceptionHandlerTreesehTreeemitExceptionHandlerTree2EmitTopCodenewEndOfInstrIfSmallnewEndOfInstrIfBigshortnewAvailBrFixupsTipIsTip_unique_Tipget_Tipget_IsTiptryStarttryFinishUShortULongDataResourcesBlobSimpleIndexMinSimpleIndexMaxTypeDefOrRefOrSpecMinTypeDefOrRefOrSpecMaxTypeOrMethodDefMinTypeOrMethodDefMaxHasConstantMinHasConstantMaxHasCustomAttributeMinHasCustomAttributeMaxHasFieldMarshalMinHasFieldMarshalMaxHasDeclSecurityMinHasDeclSecurityMaxMemberRefParentMinMemberRefParentMaxHasSemanticsMinHasSemanticsMaxMethodDefOrRefMinMethodDefOrRefMaxMemberForwardedMinMemberForwardedMaxImplementationMinImplementationMaxCustomAttributeTypeMinCustomAttributeTypeMaxResolutionScopeMinResolutionScopeMaxorderBySourceorderByOffsetreportTime@44progress@3454-2msdosHeader@3876checkingoneByteInstrstwoByteInstrskindAssemblyRefkindModuleRefkindFileRefkindTypeRefkindTypeSpeckindTypeDefkindPropertyMapkindEventMapkindInterfaceImplkindNestedkindCustomAttributekindDeclSecuritykindMemberRefkindStandAloneSigkindFieldDefkindFieldRVAkindFieldMarshalkindConstantkindFieldLayoutkindParamkindMethodDefkindMethodImplkindImplMapkindMethodSemanticskindPropertykindEventkindManifestResourcekindClassLayoutkindExportedTypekindAssemblykindGenericParam_v1_1kindGenericParam_v2_0kindMethodSpeckindGenericParamConstraintkindModulekindIllegaldefaultsilModuleReaderCachefield621931@get_checkingBinaryReaderreadBytereadBytesreadInt64ReadInt32readInt32readUInt16readCompressedUInt32seekReadSinglecountUtf8StringseekReadUTF8StringreadUserStringi32ToUncodedTokenuncodedTokenToTypeDefOrRefOrSpecuncodedTokenToMethodDefOrRefreadTaggedIdxsigptrGetBoolsigptrsigptrGetSBytesigptrGetUInt16sigptrGetInt16sigptrGetInt32sigptrGetUInt32sigptrGetUInt64sigptrGetInt64sigptrGetSinglesigptrGetDoublesigptrGetZInt32sigptrFoldAccsigptrGetBytessigptrGetStringnoPrefixesprefixesvolatileOrUnalignedPrefixvolatilePrefixtailPrefixconstraintOrTailPrefixreadonlyPrefixmkStindmkLdindget_oneByteInstrsget_twoByteInstrsaddInstr@729oneByteInstrTabletwoByteInstrTablefillInstrsgetOneByteInstrgetTwoByteInstrGetHashCode$cont@766-6get_kindAssemblyRefget_kindModuleRefget_kindFileRefget_kindTypeRefget_kindTypeSpecget_kindTypeDefget_kindPropertyMapget_kindEventMapget_kindInterfaceImplget_kindNestedget_kindCustomAttributeget_kindDeclSecurityget_kindMemberRefget_kindStandAloneSigget_kindFieldDefget_kindFieldRVAget_kindFieldMarshalget_kindConstantget_kindFieldLayoutget_kindParamget_kindMethodDefget_kindMethodImplget_kindImplMapget_kindMethodSemanticsget_kindPropertyget_kindEventget_kindManifestResourceget_kindClassLayoutget_kindExportedTypeget_kindAssemblyget_kindGenericParam_v1_1get_kindGenericParam_v2_0get_kindMethodSpecget_kindGenericParamConstraintget_kindModuleget_kindIllegaltag@index@hcComparehsComparehcaComparemfComparehdsComparehfmComparetomdComparesimpleIndexComparemkCacheInt32lowMem_inbase_szmkCacheGenericseekReadIndexedRows$cont@934rowReaderrowConverternumRowskeyFunckeyComparerseekReadIndexedRowsseekReadOptionalIndexedRowinfo_5seekReadIndexedRowCompareTo$cont@1035-21thisCastCompareTo$cont@1035-22thisCastuthatCastuEquals$cont@1035-5CompareTo$cont@1036-23CompareTo$cont@1036-24GetHashCode$cont@1036-7Equals$cont@1036-6readUntaggedIdxreadStringIdxreadGuidIdxreadBlobIdxseekReadModuleRowseekReadTypeRefRowseekReadTypeDefRowUncachedctxtHseekReadFieldRowseekReadMethodRowseekReadParamRowseekReadInterfaceImplRowUncachedseekReadMemberRefRowseekReadConstantRowUncachedseekReadCustomAttributeRowseekReadFieldMarshalRowUncachedseekReadPermissionRowseekReadClassLayoutRowseekReadFieldLayoutRowseekReadStandAloneSigRowseekReadEventMapRowseekReadEventRowseekReadPropertyMapRowUncachedseekReadPropertyRowseekReadMethodSemanticsRowUncachedseekReadMethodImplRowseekReadModuleRefRowseekReadTypeSpecRowseekReadImplMapRowseekReadFieldRVARowseekReadAssemblyRowseekReadAssemblyRefRowseekReadFileRowseekReadExportedTypeRowseekReadManifestResourceRowseekReadNestedRowUncachedseekReadGenericParamRowseekReadGenericParamConstraintRowseekReadMethodSpecRowreadUserStringHeapUncachedreadStringHeapUncachedreadStringHeapOptionreadBlobHeapUncachedreadBlobHeapOptionreadNativeResourcesdataEndPoints$cont@1619dataStartPointsdataEndPointslook@1649-2rvarvaToDataisSortedseekReadModulesubsyssubsysversionilOnlyonly32is32bitpreferredonly64isDllalignVirtalignPhysimageBaseRealilMetadataVersionseekReadAssemblyManifestseekReadAssemblyRefUncachedseekReadModuleRefseekReadFileseekReadClassLayoutmemberAccessOfFlagstypeAccessOfFlagstypeLayoutOfFlagstypeKindOfFlags$cont@1787supertypeKindOfFlags_mdefs_fdefstypeEncodingOfFlagsisTopTypeDefreadBlobHeapAsSplitTypeNamenamespaceIdxreadBlobHeapAsTypeNameseekReadTypeDefRowExtents_infoseekReadTypeDefRowWithExtentsseekReadTypeDeftoponlyseekReadTopTypeDefsseekReadNestedTypeDefsseekReadInterfaceImplsnumtyparsseekReadGenericParamsseekReadGenericParamsUncachedseekReadGenericParamConstraintsUncachedseekReadTypeDefAsTypeUncachedseekReadTypeDefAsTypeRefseekReadTypeRefUncachedseekReadTypeRefAsTypeUncachedseekReadTypeDefOrRefginstseekReadTypeDefOrRefAsTypeRefseekReadMethodRefParentseekReadMethodDefOrRefseekReadMethodDefOrRefNoVarargsseekReadCustomAttrTypeseekReadImplAsScopeRefseekReadTypeRefScopeseekReadOptionalTypeDefOrRefseekReadFieldhasLayoutseekReadFieldsfidx1fidx2seekReadMethodsmidx1midx2sigptrGetTypeDefOrRefOrSpecIdxdim@2171numSizedsizesnumLoBoundedloboundssigptrGetTysigptrGetVarArgTyssigptrGetArgTyssigptrGetLocalreadBlobHeapAsMethodSigUncachedreadBlobHeapAsTypereadBlobHeapAsFieldSigreadBlobHeapAsFieldSigUncachedreadBlobHeapAsPropertySigUncachedreadBlobHeapAsLocalsSigUncachedbyteAsHasThisbyteAsCallConvseekReadMemberRefAsMethodDataseekReadMemberRefAsMethodDataUncachedseekReadMemberRefAsMethDataNoVarArgsseekReadMethodSpecAsMethodDataUncachedseekReadMemberRefAsFieldSpecUncachedseekReadMethodDefAsMethodDataseekReadMethodDefAsMethodDataUncachedseekReadFieldDefAsFieldSpecUncachedseekReadMethodf@1-8seekReadParamspidx1pidx2fmReader@2512seekReadParamExtrasretResparamsResseekReadMethodImplsseekReadMultipleMethodSemanticsseekReadoptional_MethodSemanticsid_0id_1seekReadMethodSemanticsseekReadEventseekReadEventsseekReadPropertyseekReadPropertiesseekReadCustomAttrsseekReadCustomAttrseekReadCustomAttrUncachedseekReadSecurityDeclsseekReadSecurityDeclseekReadSecurityDeclUncachedseekReadConstant$cont@2685-1vidxseekReadConstant$cont@2685seekReadConstantseekReadImplMaptryRawToLabel@2758labelsOfRawOffsetsrawOffsetrawToLabel@2764get@2782lastblastb2isInstrStart@3001ilOffsetsOfLabelsseekReadTopCodef@1-9get_docscopes@3055scpseekReadMethodRVA_internalcallnoinlineint32AsILVariantTypereadBlobHeapAsNativeTypesigptrGetILNativeTypeseekReadManifestResourcesseekReadNestedExportedTypesparentIdxseekReadTopExportedTypesf@1-10pdbdocgetPdbReaderinfilelook@3511-8numSectionsfindSectionHeader@3510sectionHeadersStartPhysLoclook@3541-9anyV2P@3540look@3605-10metadataPhysLocnumStreamstryFindStream@3604streamHeadersStartfindStream@3625codedBigness@3753tableRowCountf@1-11stringsBignessguidsBignessblobsBignesstableBignesstdorBignesstomdBignesshcBignesshcaBignesshfmBignesshdsBignessmrpBignesshsBignessmdorBignessmfBignessiBignesscatBignessrsBignessrowKindSize@3838genOpenBinaryReaderCloseILModuleReaderget_defaultsClosePdbReaderpdbDllNotFoundExceptionOpenILModuleReaderget_ilModuleReaderCacheOpenILModuleReaderAfterReadingAllBytesOpenILModuleReaderFromBytesfileNameForDebugOutputassemblyContentspdbPathpdbPath@ilGlobals@get_pdbPathget_ilGlobalsmcPosmcBlocksmcPos@mcBlocks@get_mcPosget_mcBlocksset_mcPosOpenInOpenBytesInputByteInputBytesInputInt32InputUInt16hMapGetHRForLastWin32ErrorAddrReadUInt16CountUtf8StringReadUTF8StringmmPosmmMapmmPos@mmMap@get_mmPosget_mmMapset_mmPosPeekUTF8StringIsChanIsMemIsMMapNewChanget_IsChanNewMemget_IsMemNewMMapget_IsMMapget_tagget_indexalroconstrainedal@tl@vol@ro@constrained@get_alget_tlget_volget_roget_constrainedset_alset_tlset_volset_roset_constrainedIsI_u16_u8_instrIsI_u16_u16_instrIsI_none_instrIsI_i64_instrIsI_i32_i32_instrIsI_i32_i8_instrIsI_r4_instrIsI_r8_instrIsI_field_instrIsI_method_instrIsI_unconditional_i32_instrIsI_unconditional_i8_instrIsI_conditional_i32_instrIsI_conditional_i8_instrIsI_string_instrIsI_switch_instrIsI_tok_instrIsI_sig_instrIsI_type_instrI_invalid_instrIsI_invalid_instr_unique_I_invalid_instrNewI_u16_u8_instrget_IsI_u16_u8_instrNewI_u16_u16_instrget_IsI_u16_u16_instrNewI_none_instrget_IsI_none_instrNewI_i64_instrget_IsI_i64_instrNewI_i32_i32_instrget_IsI_i32_i32_instrNewI_i32_i8_instrget_IsI_i32_i8_instrNewI_r4_instrget_IsI_r4_instrNewI_r8_instrget_IsI_r8_instrNewI_field_instrget_IsI_field_instrNewI_method_instrget_IsI_method_instrNewI_unconditional_i32_instrget_IsI_unconditional_i32_instrNewI_unconditional_i8_instrget_IsI_unconditional_i8_instrNewI_conditional_i32_instrget_IsI_conditional_i32_instrNewI_conditional_i8_instrget_IsI_conditional_i8_instrNewI_string_instrget_IsI_string_instrNewI_switch_instrget_IsI_switch_instrNewI_tok_instrget_IsI_tok_instrNewI_sig_instrget_IsI_sig_instrNewI_type_instrget_IsI_type_instrget_I_invalid_instrget_IsI_invalid_instrIsUShortIsULongIsDataGGuidIsGGuidIsBlobSStringIsSStringIsSimpleIndexIsTypeDefOrRefOrSpecIsTypeOrMethodDefIsHasConstantIsHasCustomAttributeIsHasFieldMarshalIsHasDeclSecurityIsMemberRefParentIsHasSemanticsIsMethodDefOrRefIsMemberForwardedIsImplementationIsCustomAttributeTypeIsResolutionScope_unique_UShort_unique_ULong_unique_Byte_unique_Data_unique_GGuid_unique_Blob_unique_SString_unique_TypeDefOrRefOrSpec_unique_TypeOrMethodDef_unique_HasConstant_unique_HasCustomAttribute_unique_HasFieldMarshal_unique_HasDeclSecurity_unique_MemberRefParent_unique_HasSemantics_unique_MethodDefOrRef_unique_MemberForwarded_unique_Implementation_unique_CustomAttributeType_unique_ResolutionScopeget_UShortget_IsUShortget_ULongget_IsULongget_Byteget_IsDataget_GGuidget_IsGGuidget_Blobget_IsBlobget_SStringget_IsSStringNewSimpleIndexget_IsSimpleIndexget_TypeDefOrRefOrSpecget_IsTypeDefOrRefOrSpecget_TypeOrMethodDefget_IsTypeOrMethodDefget_HasConstantget_IsHasConstantget_HasCustomAttributeget_IsHasCustomAttributeget_HasFieldMarshalget_IsHasFieldMarshalget_HasDeclSecurityget_IsHasDeclSecurityget_MemberRefParentget_IsMemberRefParentget_HasSemanticsget_IsHasSemanticsget_MethodDefOrRefget_IsMethodDefOrRefget_MemberForwardedget_IsMemberForwardedget_Implementationget_IsImplementationget_CustomAttributeTypeget_IsCustomAttributeTypeget_ResolutionScopeget_IsResolutionScopeNewRowKindNewTypeDefAsTypIdxNewTypeRefAsTypIdxNewBlobAsMethodSigIdxNewBlobAsFieldSigIdxNewBlobAsPropSigIdxNewBlobAsLocalSigIdxNewMemberRefAsMspecIdxNewMethodSpecAsMspecIdxNewMemberRefAsFspecIdxNewCustomAttrIdxNewSecurityDeclIdxNewGenericParamsIdxmodul@ilAssemblyRefs@dispose@get_modulget_ilAssemblyRefsget_disposeget_ILModuleDefNewMethodDataNewVarArgMethodDatasortedentryPointTokengetNumRowstextSegmentPhysicalLoctextSegmentPhysicalSizedataSegmentPhysicalLocdataSegmentPhysicalSizeanyV2PmetadataAddrsectionHeadersnativeResourcesAddrnativeResourcesSizeresourcesAddrstrongnameAddrvtableFixupsAddruserStringsStreamPhysicalLocstringsStreamPhysicalLocblobsStreamPhysicalLocreadUserStringHeapmemoizeStringreadStringHeapreadBlobHeapguidsStreamPhysicalLocrowAddrcountTypeRefcountTypeDefcountFieldcountMethodcountParamcountInterfaceImplcountMemberRefcountConstantcountCustomAttributecountFieldMarshalcountPermissioncountClassLayoutcountFieldLayoutcountStandAloneSigcountEventMapcountEventcountPropertyMapcountPropertycountMethodSemanticscountMethodImplcountModuleRefcountTypeSpeccountImplMapcountFieldRVAcountAssemblycountAssemblyRefcountFilecountExportedTypecountManifestResourcecountNestedcountGenericParamcountGenericParamConstraintcountMethodSpecseekReadNestedRowseekReadConstantRowseekReadMethodSemanticsRowseekReadTypeDefRowseekReadInterfaceImplRowseekReadFieldMarshalRowseekReadPropertyMapRowseekReadAssemblyRefseekReadMethodSpecAsMethodDataseekReadMemberRefAsFieldSpecseekReadTypeRefseekReadTypeRefAsTypereadBlobHeapAsPropertySigreadBlobHeapAsMethodSigreadBlobHeapAsLocalsSigseekReadTypeDefAsTypeseekReadFieldDefAsFieldSpecdataEndPoints@sorted@pdb@entryPointToken@getNumRows@textSegmentPhysicalLoc@textSegmentPhysicalSize@dataSegmentPhysicalLoc@dataSegmentPhysicalSize@anyV2P@metadataAddr@sectionHeaders@nativeResourcesAddr@nativeResourcesSize@resourcesAddr@strongnameAddr@vtableFixupsAddr@infile@userStringsStreamPhysicalLoc@stringsStreamPhysicalLoc@blobsStreamPhysicalLoc@readUserStringHeap@memoizeString@readStringHeap@readBlobHeap@guidsStreamPhysicalLoc@rowAddr@tableBigness@rsBigness@tdorBigness@tomdBigness@hcBigness@hcaBigness@hfmBigness@hdsBigness@mrpBigness@hsBigness@mdorBigness@mfBigness@iBigness@catBigness@stringsBigness@guidsBigness@blobsBigness@countTypeRef@countTypeDef@countField@countMethod@countParam@countInterfaceImpl@countMemberRef@countConstant@countCustomAttribute@countFieldMarshal@countPermission@countClassLayout@countFieldLayout@countStandAloneSig@countEventMap@countEvent@countPropertyMap@countProperty@countMethodSemantics@countMethodImpl@countModuleRef@countTypeSpec@countImplMap@countFieldRVA@countAssembly@countAssemblyRef@countFile@countExportedType@countManifestResource@countNested@countGenericParam@countGenericParamConstraint@countMethodSpec@seekReadNestedRow@seekReadConstantRow@seekReadMethodSemanticsRow@seekReadTypeDefRow@seekReadInterfaceImplRow@seekReadFieldMarshalRow@seekReadPropertyMapRow@seekReadAssemblyRef@seekReadMethodSpecAsMethodData@seekReadMemberRefAsMethodData@seekReadMemberRefAsFieldSpec@seekReadCustomAttr@seekReadSecurityDecl@seekReadTypeRef@seekReadTypeRefAsType@readBlobHeapAsPropertySig@readBlobHeapAsFieldSig@readBlobHeapAsMethodSig@readBlobHeapAsLocalsSig@seekReadTypeDefAsType@seekReadMethodDefAsMethodData@seekReadGenericParams@seekReadFieldDefAsFieldSpec@get_dataEndPointsget_sortedget_pdbget_entryPointTokenget_getNumRowsget_textSegmentPhysicalLocget_textSegmentPhysicalSizeget_dataSegmentPhysicalLocget_dataSegmentPhysicalSizeget_anyV2Pget_metadataAddrget_sectionHeadersget_nativeResourcesAddrget_nativeResourcesSizeget_resourcesAddrget_strongnameAddrget_vtableFixupsAddrget_infileget_userStringsStreamPhysicalLocget_stringsStreamPhysicalLocget_blobsStreamPhysicalLocget_readUserStringHeapget_memoizeStringget_readStringHeapget_readBlobHeapget_guidsStreamPhysicalLocget_rowAddrget_tableBignessget_rsBignessget_tdorBignessget_tomdBignessget_hcBignessget_hcaBignessget_hfmBignessget_hdsBignessget_mrpBignessget_hsBignessget_mdorBignessget_mfBignessget_iBignessget_catBignessget_stringsBignessget_guidsBignessget_blobsBignessget_countTypeRefget_countTypeDefget_countFieldget_countMethodget_countParamget_countInterfaceImplget_countMemberRefget_countConstantget_countCustomAttributeget_countFieldMarshalget_countPermissionget_countClassLayoutget_countFieldLayoutget_countStandAloneSigget_countEventMapget_countEventget_countPropertyMapget_countPropertyget_countMethodSemanticsget_countMethodImplget_countModuleRefget_countTypeSpecget_countImplMapget_countFieldRVAget_countAssemblyget_countAssemblyRefget_countFileget_countExportedTypeget_countManifestResourceget_countNestedget_countGenericParamget_countGenericParamConstraintget_countMethodSpecget_seekReadNestedRowget_seekReadConstantRowget_seekReadMethodSemanticsRowget_seekReadTypeDefRowget_seekReadInterfaceImplRowget_seekReadFieldMarshalRowget_seekReadPropertyMapRowget_seekReadAssemblyRefget_seekReadMethodSpecAsMethodDataget_seekReadMemberRefAsMethodDataget_seekReadMemberRefAsFieldSpecget_seekReadCustomAttrget_seekReadSecurityDeclget_seekReadTypeRefget_seekReadTypeRefAsTypeget_readBlobHeapAsPropertySigget_readBlobHeapAsFieldSigget_readBlobHeapAsMethodSigget_readBlobHeapAsLocalsSigget_seekReadTypeDefAsTypeget_seekReadMethodDefAsMethodDataget_seekReadGenericParamsget_seekReadFieldDefAsFieldSpecvirtAddrnestedIdxsbeginEventIdxendEventIdxbeginPropIdxendPropIdxilvilinfosraw2nextLabsectionBaserawToLabelsehMapimplIdxdatalabvirtSizephysLoctableRowSizestablePhysLocationsmmapcellINVALID_HANDLEMAP_READGENERIC_READNULL_HANDLEFILE_SHARE_NONEFILE_SHARE_READFILE_SHARE_WRITEFILE_SHARE_READ_WRITECREATE_ALWAYSOPEN_EXISTINGOPEN_ALWAYSCloseHandle_handlerkernel32CreateFile_lpFileName_dwDesiredAccess_dwShareMode_lpSecurityAttributes_dwCreationDisposition_dwFlagsAndAttributes_hTemplateFileCreateFileMapping_hFile_lpAttributes_flProtect_dwMaximumSizeLow_dwMaximumSizeHigh_lpNameMapViewOfFile_hFileMappingObject_dwFileOffsetHigh_dwFileOffsetLow_dwNumBytesToMapUnmapViewOfFile_lpBaseAddressget_INVALID_HANDLEget_MAP_READget_GENERIC_READget_NULL_HANDLEget_FILE_SHARE_NONEget_FILE_SHARE_READget_FILE_SHARE_WRITEget_FILE_SHARE_READ_WRITEget_CREATE_ALWAYSget_OPEN_EXISTINGget_OPEN_ALWAYSINVALID_HANDLE@138NULL_HANDLE@141oneByteInstrs@724twoByteInstrs@725kindAssemblyRef@791kindModuleRef@792kindFileRef@793kindTypeRef@794kindTypeSpec@795kindTypeDef@796kindPropertyMap@797kindEventMap@798kindInterfaceImpl@799kindNested@800kindCustomAttribute@801kindDeclSecurity@802kindMemberRef@803kindStandAloneSig@804kindFieldDef@805kindFieldRVA@806kindFieldMarshal@807kindConstant@808kindFieldLayout@809kindParam@810kindMethodDef@811kindMethodImpl@812kindImplMap@813kindMethodSemantics@814kindProperty@815kindEvent@816kindManifestResource@817kindClassLayout@818kindExportedType@819kindAssembly@820kindGenericParam_v1_1@821kindGenericParam_v2_0@822kindMethodSpec@823kindGenericParamConstraint@824kindModule@825kindIllegal@826defaults@4079ilModuleReaderCache@4116Lookup@42Compute@175indexOfKey@208nextIndexkeyToIndexvalue0weakReferencekvtossThresholdweakThreshhold|Null|_|EqEqTaintedGetHashCodeTaintedaeget_InnerExceptionsSystem.Collections.ObjectModelReadOnlyCollection`1QuitProcessExiterDiscardErrorsLoggerAssertFalseErrorLoggeruninitializedErrorLoggerFallbackreportLibraryOnlyFeaturesCompleteDtrackErrorsstringThatIsAProxyForANewlineInFlatErrorsfindOriginalExceptionprotectAssemblyExplorationprotectAssemblyExplorationNoReraisedflt1dflt2AttachRangeget_QuitProcessExiterget_DiscardErrorsLoggerget_AssertFalseErrorLoggerget_uninitializedErrorLoggerFallbackPushThreadBuildPhaseUntilUnwindPushErrorLoggerPhaseUntilUnwinderrorLoggerTransformerSetThreadBuildPhaseNoUnwindSetThreadErrorLoggerNoUnwindSetUninitializedErrorLoggerFallbackerrLoggererrorRphasedErrorwarnSinkerrorRecoverystopProcessingRecoveryerrorRecoveryNoRangereportdeprecatedWithErrorget_reportLibraryOnlyFeaturesset_reportLibraryOnlyFeatureslibraryOnlyErrorlibraryOnlyWarningdeprecatedOperatormlCompatWarningsuppressErrorReportingconditionallySuppressErrorReportingReportWarningswarnsCommitOperationResultRaiseOperationResultErrorDWarnDget_CompleteDResultDCheckNoErrorsAndGetWarningsIterateDWhileDgdloop@469-23MapDget_trackErrorsOptionDloop@486-25IterateIdxDIterate2DTryDRepeatWhileDAtLeastOneDget_stringThatIsAProxyForANewlineInFlatErrorsNewlineifyErrorStringIsControlNormalizeErrorStringMicrosoft-FSharp-Compiler-ErrorLogger-Exiter-ExitDefaultPhaseIsDefaultPhaseCompileIsCompileParameterIsParameterIsParseIsTypeCheckCodeGenIsCodeGenOptimizeIsOptimizeIlxGenIsIlxGenIlGenIsIlGenOutputIsOutputInteractiveIsInteractive_unique_DefaultPhase_unique_Compile_unique_Parameter_unique_Parse_unique_TypeCheck_unique_CodeGen_unique_Optimize_unique_IlxGen_unique_IlGen_unique_Output_unique_Interactiveget_DefaultPhaseget_IsDefaultPhaseget_Compileget_IsCompileget_Parameterget_IsParameterget_Parseget_IsParseget_TypeCheckget_IsTypeCheckget_CodeGenget_IsCodeGenget_Optimizeget_IsOptimizeget_IlxGenget_IsIlxGenget_IlGenget_IsIlGenget_Outputget_IsOutputget_Interactiveget_IsInteractivePhaseException@Phase@get_Exceptionget_PhaseexceptionDebugDisplayIsSubcategoryOfCompileIsPhaseInCompilenameForDebuggingWarnSinkErrorSinkbuildPhaseBuildPhaseUncheckedbuildPhase@get_buildPhaseset_buildPhaseset_errorLoggerget_BuildPhaseUncheckedget_BuildPhaseset_BuildPhaseset_ErrorLoggeroldBuildPhasenewErrorLoggernewInstalledoldErrorLoggerIsOkResultIsErrorResultget_IsOkResultget_IsErrorResultReturnFromPreserveStackTraceSystemExceptionReraiseIfWatsonableErrorLogger.ErrorRErrorLogger.WarningErrorLogger.ErrorErrorLogger.PhasedErrorThreadAbortExceptionErrorLogger.ErrorRecoveryErrorLogger.StopProcessingRecoveryErrorLogger.ErrorRecoveryNoRangeQuitProcessExiter@113DiscardErrorsLogger@244AssertFalseErrorLogger@253uninitializedErrorLoggerFallback@263reportLibraryOnlyFeatures@403CompleteD@450trackErrors@479stringThatIsAProxyForANewlineInFlatErrors@507posBitCountposColumnMasklineColumnMaskmaxFileIndexfileIndexTableposOrderrangeOrderrange0rangeStartuprangeCmdArgscolumnBitCountlineBitCountfileIndexBitCountstartLineBitCountstartColumnBitCountheightBitCountendColumnBitCountisSyntheticBitCountfileIndexShiftstartLineShiftstartColumnShiftheightShiftendColumnShiftisSyntheticShiftfileIndexMaskstartLineMaskstartColumnMaskheightMaskendColumnMaskisSyntheticMaskget_posBitCountget_posColumnMaskget_lineColumnMaskf@1-7get_maxFileIndexget_fileIndexTablefileIndexOfFilefileOfFileIndexmkPosmkRangemkFileIndexRangeget_posOrderget_rangeOrderoutputRangeboutputPosboutputRangeposGtposEqposGeqposLtunionRangesrangeContainsRangerangeContainsPosrangeBeforePosrangeNget_pos0get_range0get_rangeStartupget_rangeCmdArgstrimRangeToLinestringOfRangeEncodingSizeget_Encodingget_EncodingSizeDecodeCustomEqualityAttributeindexToFileTablefileToIndexTableMonitorEnterFileToIndexIndexToFileIsSyntheticEndStartRangeEndRangeCodeblelecget_IsSyntheticget_Startget_Endget_StartRangeget_EndRangeMakeSyntheticToShortStringget_CodetoVSfromVSposColumnMask@36lineColumnMask@37maxFileIndex@140fileIndexTable@144pos0@226range0@227rangeStartup@228rangeCmdArgs@229trackingget_trackingconditionmapFoldFstmapFoldSndpairp13p23p33map1Of2map2Of2map1Of3map2Of3map3Of3map3Of4map4Of4map5Of5map6Of6foldPairfold1Of2_a2foldTriplemapPairmapTriplefmap2Of2equalOnbufswriteViaBufferWithEnvironmentNewLinesnodeIdentitynodeId@nodeData@nodeNeighbours@trace@396nullableSlotEmptynullableSlotFullnewCachecachedresfop_Dereferenceop_ColonEqualscacheOptRefdelayInsertedToWorkaroundKnownNgenBugnodeIdnodeDatanodeNeighboursget_nodeIdget_nodeDataget_nodeNeighboursset_nodeNeighboursnodes@389-1GetNodeDatacacheValget_cacheValGetProcessHeapkernel32.dllHeapSetInformation_HeapHandle_HeapInformationClass_HeapInformation_HeapInformationLengthGetLastErrorPadLeftSecurityExceptionEnableHeapTerminationOnCorruptionsavedContsf@1-5SendOrPostCallbackWaitCallbackThreadPoolQueueUserWorkItempostOrQueue@576f@1-6IsAsyncOkIsAsyncExceptionIsAsyncCanceledget_IsAsyncOkget_IsAsyncExceptionNewAsyncCanceledget_IsAsyncCanceledFSharpAsyncFromContinuationsCommitAsyncPrimitiveResultAsyncResultsyncRootget_AsyncPrimitiveResultorderfixpointmapKeynoRepeatsxOrdergroupByremovecontainsinsertunionFavourRightfindIndexAuxfindIndexsubtractisSubsetOfisSupersetOfunionFavourLeftintersectsetifyfindcontainsKeyfoldNotNoneargnameArgumentNotNullArrayArgumentNotNullOrEmptyStringArgumentNotNullOrEmptydomaindomainLcompare1compare2get_orderPathTooLongExceptionfullpathcwdhasSuffixCaseInsensitivepown32pown64mask32mask64progress@27tracking@28order@79-2order@82-3order@85-4sortedTableInfotdor_TypeDeftdor_TypeReftdor_TypeSpechc_FieldDefhc_ParamDefhc_Propertyhca_MethodDefhca_FieldDefhca_TypeRefhca_TypeDefhca_ParamDefhca_InterfaceImplhca_MemberRefhca_Modulehca_Permissionhca_Propertyhca_Eventhca_StandAloneSighca_ModuleRefhca_TypeSpechca_Assemblyhca_AssemblyRefhca_Filehca_ExportedTypehca_ManifestResourcehca_GenericParamhca_GenericParamConstrainthca_MethodSpechfm_FieldDefhfm_ParamDefhds_TypeDefhds_MethodDefhds_Assemblymrp_TypeRefmrp_ModuleRefmrp_MethodDefmrp_TypeSpechs_Evenths_Propertymdor_MethodDefmdor_MemberRefmdor_MethodSpecmf_FieldDefmf_MethodDefi_Filei_AssemblyRefi_ExportedTypecat_MethodDefcat_MemberRefrs_Modulers_ModuleRefrs_AssemblyRefrs_TypeReftomd_TypeDeftomd_MethodDefet_ENDet_VOIDet_BOOLEANet_CHARet_I1et_U1et_I2et_U2et_I4et_U4et_I8et_U8et_R4et_R8et_STRINGet_PTRet_BYREFet_VALUETYPEet_CLASSet_VARet_ARRAYet_WITHet_TYPEDBYREFet_Iet_Uet_FNPTRet_OBJECTet_SZARRAYet_MVARet_CMOD_REQDet_CMOD_OPTet_SENTINELet_PINNEDi_nopi_breaki_ldarg_0i_ldarg_1i_ldarg_2i_ldarg_3i_ldloc_0i_ldloc_1i_ldloc_2i_ldloc_3i_stloc_0i_stloc_1i_stloc_2i_stloc_3i_ldarg_si_ldarga_si_starg_si_ldloc_si_ldloca_si_stloc_si_ldnulli_ldc_i4_m1i_ldc_i4_0i_ldc_i4_1i_ldc_i4_2i_ldc_i4_3i_ldc_i4_4i_ldc_i4_5i_ldc_i4_6i_ldc_i4_7i_ldc_i4_8i_ldc_i4_si_ldc_i4i_ldc_i8i_ldc_r4i_ldc_r8i_dupi_popi_jmpi_calli_callii_reti_br_si_brfalse_si_brtrue_si_beq_si_bge_si_bgt_si_ble_si_blt_si_bne_un_si_bge_un_si_bgt_un_si_ble_un_si_blt_un_si_bri_brfalsei_brtruei_beqi_bgei_bgti_blei_blti_bne_uni_bge_uni_bgt_uni_ble_uni_blt_uni_switchi_ldind_i1i_ldind_u1i_ldind_i2i_ldind_u2i_ldind_i4i_ldind_u4i_ldind_i8i_ldind_ii_ldind_r4i_ldind_r8i_ldind_refi_stind_refi_stind_i1i_stind_i2i_stind_i4i_stind_i8i_stind_r4i_stind_r8i_addi_subi_muli_divi_div_uni_remi_rem_uni_andi_ori_xori_shli_shri_shr_uni_negi_noti_conv_i1i_conv_i2i_conv_i4i_conv_i8i_conv_r4i_conv_r8i_conv_u4i_conv_u8i_callvirti_cpobji_ldobji_ldstri_newobji_castclassi_isinsti_conv_r_uni_unboxi_throwi_ldfldi_ldfldai_stfldi_ldsfldi_ldsfldai_stsfldi_stobji_conv_ovf_i1_uni_conv_ovf_i2_uni_conv_ovf_i4_uni_conv_ovf_i8_uni_conv_ovf_u1_uni_conv_ovf_u2_uni_conv_ovf_u4_uni_conv_ovf_u8_uni_conv_ovf_i_uni_conv_ovf_u_uni_boxi_newarri_ldelemai_ldelem_i1i_ldelem_u1i_ldelem_i2i_ldelem_u2i_ldelem_i4i_ldelem_u4i_ldelem_i8i_ldelem_ii_ldelem_r4i_ldelem_r8i_ldelem_refi_stelem_ii_stelem_i1i_stelem_i2i_stelem_i4i_stelem_i8i_stelem_r4i_stelem_r8i_stelem_refi_conv_ovf_i1i_conv_ovf_u1i_conv_ovf_i2i_conv_ovf_u2i_conv_ovf_i4i_conv_ovf_u4i_conv_ovf_i8i_conv_ovf_u8i_refanyvali_ckfinitei_mkrefanyi_ldtokeni_conv_u2i_conv_u1i_conv_ii_conv_ovf_ii_conv_ovf_ui_add_ovfi_add_ovf_uni_mul_ovfi_mul_ovf_uni_sub_ovfi_sub_ovf_uni_endfinallyi_leavei_leave_si_stind_ii_conv_ui_arglisti_ceqi_cgti_cgt_uni_clti_clt_uni_ldftni_ldvirtftni_ldargi_ldargai_stargi_ldloci_ldlocai_stloci_localloci_endfilteri_unalignedi_volatilei_constrainedi_readonlyi_taili_initobji_cpblki_initblki_rethrowi_sizeofi_refanytypei_ldelem_anyi_stelem_anyi_unbox_anynoArgInstrsILCmpInstrMapILCmpInstrRevMapnt_VOIDnt_BOOLEANnt_I1nt_U1nt_I2nt_U2nt_I4nt_U4nt_I8nt_U8nt_R4nt_R8nt_SYSCHARnt_VARIANTnt_CURRENCYnt_PTRnt_DECIMALnt_DATEnt_BSTRnt_LPSTRnt_LPWSTRnt_LPTSTRnt_FIXEDSYSSTRINGnt_OBJECTREFnt_IUNKNOWNnt_IDISPATCHnt_STRUCTnt_INTFnt_SAFEARRAYnt_FIXEDARRAYnt_INTnt_UINTnt_NESTEDSTRUCTnt_BYVALSTRnt_ANSIBSTRnt_TBSTRnt_VARIANTBOOLnt_FUNCnt_ASANYnt_ARRAYnt_LPSTRUCTnt_CUSTOMMARSHALERnt_ERRORnt_MAXvt_EMPTYvt_NULLvt_I2vt_I4vt_R4vt_R8vt_CYvt_DATEvt_BSTRvt_DISPATCHvt_ERRORvt_BOOLvt_VARIANTvt_UNKNOWNvt_DECIMALvt_I1vt_UI1vt_UI2vt_UI4vt_I8vt_UI8vt_INTvt_UINTvt_VOIDvt_HRESULTvt_PTRvt_SAFEARRAYvt_CARRAYvt_USERDEFINEDvt_LPSTRvt_LPWSTRvt_RECORDvt_FILETIMEvt_BLOBvt_STREAMvt_STORAGEvt_STREAMED_OBJECTvt_STORED_OBJECTvt_BLOB_OBJECTvt_CFvt_CLSIDvt_VECTORvt_ARRAYvt_BYREFILNativeTypeMapILNativeTypeRevMapILVariantTypeMapILVariantTypeRevMapILSecurityActionMapILSecurityActionRevMape_CorILMethod_TinyFormate_CorILMethod_FatFormate_CorILMethod_FormatMaske_CorILMethod_MoreSectse_CorILMethod_InitLocalse_CorILMethod_Sect_EHTablee_CorILMethod_Sect_FatFormate_CorILMethod_Sect_MoreSectse_COR_ILEXCEPTION_CLAUSE_EXCEPTIONe_COR_ILEXCEPTION_CLAUSE_FILTERe_COR_ILEXCEPTION_CLAUSE_FINALLYe_COR_ILEXCEPTION_CLAUSE_FAULTe_IMAGE_CEE_CS_CALLCONV_FASTCALLe_IMAGE_CEE_CS_CALLCONV_STDCALLe_IMAGE_CEE_CS_CALLCONV_THISCALLe_IMAGE_CEE_CS_CALLCONV_CDECLe_IMAGE_CEE_CS_CALLCONV_VARARGe_IMAGE_CEE_CS_CALLCONV_FIELDe_IMAGE_CEE_CS_CALLCONV_LOCAL_SIGe_IMAGE_CEE_CS_CALLCONV_PROPERTYe_IMAGE_CEE_CS_CALLCONV_GENERICINSTe_IMAGE_CEE_CS_CALLCONV_GENERICe_IMAGE_CEE_CS_CALLCONV_INSTANCEe_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICITget_sortedTableInfoget_tdor_TypeDefget_tdor_TypeRefget_tdor_TypeSpecmkTypeDefOrRefOrSpecTagget_hc_FieldDefget_hc_ParamDefget_hc_PropertymkHasConstantTagget_hca_MethodDefget_hca_FieldDefget_hca_TypeRefget_hca_TypeDefget_hca_ParamDefget_hca_InterfaceImplget_hca_MemberRefget_hca_Moduleget_hca_Permissionget_hca_Propertyget_hca_Eventget_hca_StandAloneSigget_hca_ModuleRefget_hca_TypeSpecget_hca_Assemblyget_hca_AssemblyRefget_hca_Fileget_hca_ExportedTypeget_hca_ManifestResourceget_hca_GenericParamget_hca_GenericParamConstraintget_hca_MethodSpecmkHasCustomAttributeTagget_hfm_FieldDefget_hfm_ParamDefmkHasFieldMarshalTagget_hds_TypeDefget_hds_MethodDefget_hds_AssemblymkHasDeclSecurityTagget_mrp_TypeRefget_mrp_ModuleRefget_mrp_MethodDefget_mrp_TypeSpecmkMemberRefParentTagget_hs_Eventget_hs_PropertymkHasSemanticsTagget_mdor_MethodDefget_mdor_MemberRefget_mdor_MethodSpecmkMethodDefOrRefTagget_mf_FieldDefget_mf_MethodDefmkMemberForwardedTagget_i_Fileget_i_AssemblyRefget_i_ExportedTypemkImplementationTagget_cat_MethodDefget_cat_MemberRefmkILCustomAttributeTypeTagget_rs_Moduleget_rs_ModuleRefget_rs_AssemblyRefget_rs_TypeRefmkResolutionScopeTagget_tomd_TypeDefget_tomd_MethodDefmkTypeOrMethodDefTagget_et_ENDget_et_VOIDget_et_BOOLEANget_et_CHARget_et_I1get_et_U1get_et_I2get_et_U2get_et_I4get_et_U4get_et_I8get_et_U8get_et_R4get_et_R8get_et_STRINGget_et_PTRget_et_BYREFget_et_VALUETYPEget_et_CLASSget_et_VARget_et_ARRAYget_et_WITHget_et_TYPEDBYREFget_et_Iget_et_Uget_et_FNPTRget_et_OBJECTget_et_SZARRAYget_et_MVARget_et_CMOD_REQDget_et_CMOD_OPTget_et_SENTINELget_et_PINNEDget_i_nopget_i_breakget_i_ldarg_0get_i_ldarg_1get_i_ldarg_2get_i_ldarg_3get_i_ldloc_0get_i_ldloc_1get_i_ldloc_2get_i_ldloc_3get_i_stloc_0get_i_stloc_1get_i_stloc_2get_i_stloc_3get_i_ldarg_sget_i_ldarga_sget_i_starg_sget_i_ldloc_sget_i_ldloca_sget_i_stloc_sget_i_ldnullget_i_ldc_i4_m1get_i_ldc_i4_0get_i_ldc_i4_1get_i_ldc_i4_2get_i_ldc_i4_3get_i_ldc_i4_4get_i_ldc_i4_5get_i_ldc_i4_6get_i_ldc_i4_7get_i_ldc_i4_8get_i_ldc_i4_sget_i_ldc_i4get_i_ldc_i8get_i_ldc_r4get_i_ldc_r8get_i_dupget_i_popget_i_jmpget_i_callget_i_calliget_i_retget_i_br_sget_i_brfalse_sget_i_brtrue_sget_i_beq_sget_i_bge_sget_i_bgt_sget_i_ble_sget_i_blt_sget_i_bne_un_sget_i_bge_un_sget_i_bgt_un_sget_i_ble_un_sget_i_blt_un_sget_i_brget_i_brfalseget_i_brtrueget_i_beqget_i_bgeget_i_bgtget_i_bleget_i_bltget_i_bne_unget_i_bge_unget_i_bgt_unget_i_ble_unget_i_blt_unget_i_switchget_i_ldind_i1get_i_ldind_u1get_i_ldind_i2get_i_ldind_u2get_i_ldind_i4get_i_ldind_u4get_i_ldind_i8get_i_ldind_iget_i_ldind_r4get_i_ldind_r8get_i_ldind_refget_i_stind_refget_i_stind_i1get_i_stind_i2get_i_stind_i4get_i_stind_i8get_i_stind_r4get_i_stind_r8get_i_addget_i_subget_i_mulget_i_divget_i_div_unget_i_remget_i_rem_unget_i_andget_i_orget_i_xorget_i_shlget_i_shrget_i_shr_unget_i_negget_i_notget_i_conv_i1get_i_conv_i2get_i_conv_i4get_i_conv_i8get_i_conv_r4get_i_conv_r8get_i_conv_u4get_i_conv_u8get_i_callvirtget_i_cpobjget_i_ldobjget_i_ldstrget_i_newobjget_i_castclassget_i_isinstget_i_conv_r_unget_i_unboxget_i_throwget_i_ldfldget_i_ldfldaget_i_stfldget_i_ldsfldget_i_ldsfldaget_i_stsfldget_i_stobjget_i_conv_ovf_i1_unget_i_conv_ovf_i2_unget_i_conv_ovf_i4_unget_i_conv_ovf_i8_unget_i_conv_ovf_u1_unget_i_conv_ovf_u2_unget_i_conv_ovf_u4_unget_i_conv_ovf_u8_unget_i_conv_ovf_i_unget_i_conv_ovf_u_unget_i_boxget_i_newarrget_i_ldelemaget_i_ldelem_i1get_i_ldelem_u1get_i_ldelem_i2get_i_ldelem_u2get_i_ldelem_i4get_i_ldelem_u4get_i_ldelem_i8get_i_ldelem_iget_i_ldelem_r4get_i_ldelem_r8get_i_ldelem_refget_i_stelem_iget_i_stelem_i1get_i_stelem_i2get_i_stelem_i4get_i_stelem_i8get_i_stelem_r4get_i_stelem_r8get_i_stelem_refget_i_conv_ovf_i1get_i_conv_ovf_u1get_i_conv_ovf_i2get_i_conv_ovf_u2get_i_conv_ovf_i4get_i_conv_ovf_u4get_i_conv_ovf_i8get_i_conv_ovf_u8get_i_refanyvalget_i_ckfiniteget_i_mkrefanyget_i_ldtokenget_i_conv_u2get_i_conv_u1get_i_conv_iget_i_conv_ovf_iget_i_conv_ovf_uget_i_add_ovfget_i_add_ovf_unget_i_mul_ovfget_i_mul_ovf_unget_i_sub_ovfget_i_sub_ovf_unget_i_endfinallyget_i_leaveget_i_leave_sget_i_stind_iget_i_conv_uget_i_arglistget_i_ceqget_i_cgtget_i_cgt_unget_i_cltget_i_clt_unget_i_ldftnget_i_ldvirtftnget_i_ldargget_i_ldargaget_i_stargget_i_ldlocget_i_ldlocaget_i_stlocget_i_locallocget_i_endfilterget_i_unalignedget_i_volatileget_i_constrainedget_i_readonlyget_i_tailget_i_initobjget_i_cpblkget_i_initblkget_i_rethrowget_i_sizeofget_i_refanytypeget_i_ldelem_anyget_i_stelem_anyget_i_unbox_anyget_noArgInstrsisNoArgInstr$cont@673isNoArgInstrget_ILCmpInstrMapget_ILCmpInstrRevMapget_nt_VOIDget_nt_BOOLEANget_nt_I1get_nt_U1get_nt_I2get_nt_U2get_nt_I4get_nt_U4get_nt_I8get_nt_U8get_nt_R4get_nt_R8get_nt_SYSCHARget_nt_VARIANTget_nt_CURRENCYget_nt_PTRget_nt_DECIMALget_nt_DATEget_nt_BSTRget_nt_LPSTRget_nt_LPWSTRget_nt_LPTSTRget_nt_FIXEDSYSSTRINGget_nt_OBJECTREFget_nt_IUNKNOWNget_nt_IDISPATCHget_nt_STRUCTget_nt_INTFget_nt_SAFEARRAYget_nt_FIXEDARRAYget_nt_INTget_nt_UINTget_nt_NESTEDSTRUCTget_nt_BYVALSTRget_nt_ANSIBSTRget_nt_TBSTRget_nt_VARIANTBOOLget_nt_FUNCget_nt_ASANYget_nt_ARRAYget_nt_LPSTRUCTget_nt_CUSTOMMARSHALERget_nt_ERRORget_nt_MAXget_vt_EMPTYget_vt_NULLget_vt_I2get_vt_I4get_vt_R4get_vt_R8get_vt_CYget_vt_DATEget_vt_BSTRget_vt_DISPATCHget_vt_ERRORget_vt_BOOLget_vt_VARIANTget_vt_UNKNOWNget_vt_DECIMALget_vt_I1get_vt_UI1get_vt_UI2get_vt_UI4get_vt_I8get_vt_UI8get_vt_INTget_vt_UINTget_vt_VOIDget_vt_HRESULTget_vt_PTRget_vt_SAFEARRAYget_vt_CARRAYget_vt_USERDEFINEDget_vt_LPSTRget_vt_LPWSTRget_vt_RECORDget_vt_FILETIMEget_vt_BLOBget_vt_STREAMget_vt_STORAGEget_vt_STREAMED_OBJECTget_vt_STORED_OBJECTget_vt_BLOB_OBJECTget_vt_CFget_vt_CLSIDget_vt_VECTORget_vt_ARRAYget_vt_BYREFget_ILNativeTypeMapget_ILNativeTypeRevMapget_ILVariantTypeMapget_ILVariantTypeRevMapget_ILSecurityActionMapget_ILSecurityActionRevMapget_e_CorILMethod_TinyFormatget_e_CorILMethod_FatFormatget_e_CorILMethod_FormatMaskget_e_CorILMethod_MoreSectsget_e_CorILMethod_InitLocalsget_e_CorILMethod_Sect_EHTableget_e_CorILMethod_Sect_FatFormatget_e_CorILMethod_Sect_MoreSectsget_e_COR_ILEXCEPTION_CLAUSE_EXCEPTIONget_e_COR_ILEXCEPTION_CLAUSE_FILTERget_e_COR_ILEXCEPTION_CLAUSE_FINALLYget_e_COR_ILEXCEPTION_CLAUSE_FAULTget_e_IMAGE_CEE_CS_CALLCONV_FASTCALLget_e_IMAGE_CEE_CS_CALLCONV_STDCALLget_e_IMAGE_CEE_CS_CALLCONV_THISCALLget_e_IMAGE_CEE_CS_CALLCONV_CDECLget_e_IMAGE_CEE_CS_CALLCONV_VARARGget_e_IMAGE_CEE_CS_CALLCONV_FIELDget_e_IMAGE_CEE_CS_CALLCONV_LOCAL_SIGget_e_IMAGE_CEE_CS_CALLCONV_PROPERTYget_e_IMAGE_CEE_CS_CALLCONV_GENERICINSTget_e_IMAGE_CEE_CS_CALLCONV_GENERICget_e_IMAGE_CEE_CS_CALLCONV_INSTANCEget_e_IMAGE_CEE_CS_CALLCONV_INSTANCE_EXPLICITFromIndexTypeDefFieldPtrFieldMethodPtrParamPtrInterfaceImplMemberRefCustomAttributeFieldMarshalPermissionClassLayoutFieldLayoutStandAloneSigEventMapEventPtrPropertyMapPropertyPtrMethodSemanticsMethodImplModuleRefTypeSpecImplMapFieldRVAENCLogENCMapAssemblyProcessorAssemblyOSAssemblyRefAssemblyRefProcessorAssemblyRefOSExportedTypeManifestResourceGenericParamMethodSpecGenericParamConstraintUserStringsget_TypeDefget_FieldPtrget_Fieldget_MethodPtrget_ParamPtrget_Paramget_InterfaceImplget_MemberRefget_Constantget_CustomAttributeget_FieldMarshalget_Permissionget_ClassLayoutget_FieldLayoutget_StandAloneSigget_EventMapget_EventPtrget_Eventget_PropertyMapget_PropertyPtrget_Propertyget_MethodSemanticsget_MethodImplget_ModuleRefget_TypeSpecget_ImplMapget_FieldRVAget_ENCLogget_ENCMapget_AssemblyProcessorget_AssemblyOSget_AssemblyRefget_AssemblyRefProcessorget_AssemblyRefOSget_Fileget_ExportedTypeget_ManifestResourceget_GenericParamget_MethodSpecget_GenericParamConstraintget_UserStringsModule@28TypeRef@29TypeDef@30FieldPtr@31Field@32MethodPtr@33Method@34ParamPtr@35Param@36InterfaceImpl@37MemberRef@38Constant@39CustomAttribute@40FieldMarshal@41Permission@42ClassLayout@43FieldLayout@44StandAloneSig@45EventMap@46EventPtr@47Event@48PropertyMap@49PropertyPtr@50Property@51MethodSemantics@52MethodImpl@53ModuleRef@54TypeSpec@55ImplMap@56FieldRVA@57ENCLog@58ENCMap@59Assembly@60AssemblyProcessor@61AssemblyOS@62AssemblyRef@63AssemblyRefProcessor@64AssemblyRefOS@65File@66ExportedType@67ManifestResource@68Nested@69GenericParam@70MethodSpec@71GenericParamConstraint@72UserStrings@74sortedTableInfo@82tdor_TypeDef@100tdor_TypeRef@101tdor_TypeSpec@102hc_FieldDef@112hc_ParamDef@113hc_Property@114hca_MethodDef@125hca_FieldDef@126hca_TypeRef@127hca_TypeDef@128hca_ParamDef@129hca_InterfaceImpl@130hca_MemberRef@131hca_Module@132hca_Permission@133hca_Property@134hca_Event@135hca_StandAloneSig@136hca_ModuleRef@137hca_TypeSpec@138hca_Assembly@139hca_AssemblyRef@140hca_File@141hca_ExportedType@142hca_ManifestResource@143hca_GenericParam@144hca_GenericParamConstraint@145hca_MethodSpec@146hfm_FieldDef@176hfm_ParamDef@177hds_TypeDef@187hds_MethodDef@188hds_Assembly@189mrp_TypeRef@200mrp_ModuleRef@201mrp_MethodDef@202mrp_TypeSpec@203hs_Event@215hs_Property@216mdor_MethodDef@226mdor_MemberRef@227mdor_MethodSpec@228mf_FieldDef@239mf_MethodDef@240i_File@250i_AssemblyRef@251i_ExportedType@252cat_MethodDef@263cat_MemberRef@264rs_Module@274rs_ModuleRef@275rs_AssemblyRef@276rs_TypeRef@277tomd_TypeDef@289tomd_MethodDef@290noArgInstrs@555-1ILCmpInstrMap@771ILCmpInstrRevMap@787ILNativeTypeMap@898ILVariantTypeMap@933ILSecurityActionMap@978keywordskwdInstrTablefield621666@field621667@field621668@field621669@field621670@field621671@field621672@field621673@field621674@field621675@field621676@field621677@field621678@field621679@field621680@field621681@field621682@field621683@field621684@field621685@field621686@field621687@field621688@field621689@field621690@field621691@field621692@field621693@field621694@field621695@field621696@field621697@field621698@field621699@field621700@field621701@field621702@field621703@field621704@field621705@field621706@field621707@field621708@field621709@field621710@field621711@field621712@field621713@field621714@field621715@field621716@field621717@field621718@field621719@field621720@field621721@field621722@field621723@field621724@field621725@field621726@field621727@field621728@field621729@field621730@field621731@field621732@field621733@field621734@field621735@field621736@field621737@field621738@field621739@field621740@field621741@field621742@field621743@field621744@field621745@field621746@field621747@field621748@field621749@field621750@field621751@field621752@field621753@field621754@field621755@field621756@field621757@field621758@field621759@field621760@field621761@field621762@field621763@field621764@field621765@field621766@field621767@field621768@field621769@field621770@field621771@field621772@field621773@field621774@field621775@field621776@field621777@field621778@field621779@field621780@field621781@field621782@field621783@field621784@field621785@field621786@field621787@field621788@field621789@field621790@field621791@field621792@field621793@field621794@field621795@field621796@field621797@field621798@field621799@field621800@field621801@field621802@field621804@get_keywordsget_kwdInstrTableaddTable@79kwdOrInstrevalkwdOrInstrOrIdkeywords@40kwdInstrTable@75trans@105actions@382_fslex_tables@383field621651@field621653@field621655@field621657@field621659@field621660@field621662@field621663@field621664@pfailwithnormals@36varargs@40decodeVarargsNewResolvedAtMethodSpecScopenoMethodSpecScoperesolveMethodSpecScoperesolveMethodSpecScopeThenresolveFormalMethodSpecScopetspecoresolveCurrentMethodSpecScopefindMscorlibAssemblyReffindAssemblyRefGetHashCode$cont@148-4GetHashCode$cont@217-5ilInstrsIsSigArgSentinelIsSentinel_unique_SentinelNewSigArgget_IsSigArgget_Sentinelget_IsSentinel_cgparamsVARARGIsVARARGVALUETYPEIsVALUETYPEVALUEIsVALUEUNSIGNEDIsUNSIGNEDUNMANAGEDIsUNMANAGEDUINTIsUINTSLASHIsSLASHPLUSIsPLUSOBJECTIsOBJECTNATIVEIsNATIVEMETHODIsMETHODINTIsINTFLOAT64IsFLOAT64FLOAT32IsFLOAT32FIELDIsFIELDEXPLICITIsEXPLICITELIPSESIsELIPSESDCOLONIsDCOLONBOOLIsBOOLBANGIsBANGIsVAL_SQSTRINGIsVAL_QSTRINGIsVAL_DOTTEDNAMEIsVAL_IDIsVAL_HEXBYTEIsINSTR_VALUETYPEIsINSTR_INT_TYPEIsINSTR_TYPEIsINSTR_TOKIsINSTR_STRINGIsINSTR_NONEIsINSTR_METHODIsINSTR_RIsINSTR_I8IsINSTR_I32_I32IsINSTR_IIsVAL_FLOAT64IsVAL_INT32_ELIPSESIsVAL_INT64_unique_VARARG_unique_VALUETYPE_unique_VALUE_unique_UNSIGNED_unique_UNMANAGED_unique_UINT8_unique_UINT64_unique_UINT32_unique_UINT16_unique_UINT_unique_STRING_unique_SLASH_unique_PLUS_unique_OBJECT_unique_NATIVE_unique_METHOD_unique_LESS_unique_INT8_unique_INT64_unique_INT32_unique_INT16_unique_INT_unique_GREATER_unique_FLOAT64_unique_FLOAT32_unique_FIELD_unique_EXPLICIT_unique_EOF_unique_ELIPSES_unique_DCOLON_unique_CHAR_unique_BYTEARRAY_unique_BOOL_unique_BANGget_VARARGget_IsVARARGget_VALUETYPEget_IsVALUETYPEget_VALUEget_IsVALUEget_UNSIGNEDget_IsUNSIGNEDget_UNMANAGEDget_IsUNMANAGEDget_UINT8get_UINT64get_UINT32get_UINT16get_UINTget_IsUINTget_STRINGget_SLASHget_IsSLASHget_PLUSget_IsPLUSget_OBJECTget_IsOBJECTget_NATIVEget_IsNATIVEget_METHODget_IsMETHODget_LESSget_INT8get_INT64get_INT32get_INT16get_INTget_IsINTget_GREATERget_FLOAT64get_IsFLOAT64get_FLOAT32get_IsFLOAT32get_FIELDget_IsFIELDget_EXPLICITget_IsEXPLICITget_EOFget_ELIPSESget_IsELIPSESget_DCOLONget_IsDCOLONget_CHARget_BYTEARRAYget_BOOLget_IsBOOLget_BANGget_IsBANGNewVAL_SQSTRINGget_IsVAL_SQSTRINGNewVAL_QSTRINGget_IsVAL_QSTRINGNewVAL_DOTTEDNAMEget_IsVAL_DOTTEDNAMENewVAL_IDget_IsVAL_IDNewVAL_HEXBYTEget_IsVAL_HEXBYTENewINSTR_VALUETYPEget_IsINSTR_VALUETYPENewINSTR_INT_TYPEget_IsINSTR_INT_TYPENewINSTR_TYPEget_IsINSTR_TYPENewINSTR_TOKget_IsINSTR_TOKNewINSTR_STRINGget_IsINSTR_STRINGNewINSTR_NONEget_IsINSTR_NONENewINSTR_METHODget_IsINSTR_METHODNewINSTR_Rget_IsINSTR_RNewINSTR_I8get_IsINSTR_I8NewINSTR_I32_I32get_IsINSTR_I32_I32NewINSTR_Iget_IsINSTR_INewVAL_FLOAT64get_IsVAL_FLOAT64NewVAL_INT32_ELIPSESget_IsVAL_INT32_ELIPSESNewVAL_INT64get_IsVAL_INT64TOKEN_VARARGIsTOKEN_VARARGTOKEN_VALUETYPEIsTOKEN_VALUETYPETOKEN_VALUEIsTOKEN_VALUETOKEN_UNSIGNEDIsTOKEN_UNSIGNEDTOKEN_UNMANAGEDIsTOKEN_UNMANAGEDTOKEN_UINTIsTOKEN_UINTTOKEN_SLASHIsTOKEN_SLASHTOKEN_PLUSIsTOKEN_PLUSTOKEN_OBJECTIsTOKEN_OBJECTTOKEN_NATIVEIsTOKEN_NATIVETOKEN_METHODIsTOKEN_METHODTOKEN_INTIsTOKEN_INTTOKEN_FLOAT64IsTOKEN_FLOAT64TOKEN_FLOAT32IsTOKEN_FLOAT32TOKEN_FIELDIsTOKEN_FIELDTOKEN_EXPLICITIsTOKEN_EXPLICITTOKEN_ELIPSESIsTOKEN_ELIPSESTOKEN_DCOLONIsTOKEN_DCOLONTOKEN_BOOLIsTOKEN_BOOLTOKEN_BANGIsTOKEN_BANGTOKEN_VAL_SQSTRINGIsTOKEN_VAL_SQSTRINGTOKEN_VAL_QSTRINGIsTOKEN_VAL_QSTRINGTOKEN_VAL_DOTTEDNAMEIsTOKEN_VAL_DOTTEDNAMETOKEN_VAL_IDIsTOKEN_VAL_IDTOKEN_VAL_HEXBYTEIsTOKEN_VAL_HEXBYTETOKEN_INSTR_VALUETYPEIsTOKEN_INSTR_VALUETYPETOKEN_INSTR_INT_TYPEIsTOKEN_INSTR_INT_TYPETOKEN_INSTR_TYPEIsTOKEN_INSTR_TYPETOKEN_INSTR_TOKIsTOKEN_INSTR_TOKTOKEN_INSTR_STRINGIsTOKEN_INSTR_STRINGTOKEN_INSTR_NONEIsTOKEN_INSTR_NONETOKEN_INSTR_METHODIsTOKEN_INSTR_METHODTOKEN_INSTR_RIsTOKEN_INSTR_RTOKEN_INSTR_I8IsTOKEN_INSTR_I8TOKEN_INSTR_I32_I32IsTOKEN_INSTR_I32_I32TOKEN_INSTR_IIsTOKEN_INSTR_ITOKEN_VAL_FLOAT64IsTOKEN_VAL_FLOAT64TOKEN_VAL_INT32_ELIPSESIsTOKEN_VAL_INT32_ELIPSESTOKEN_VAL_INT64IsTOKEN_VAL_INT64_unique_TOKEN_VARARG_unique_TOKEN_VALUETYPE_unique_TOKEN_VALUE_unique_TOKEN_UNSIGNED_unique_TOKEN_UNMANAGED_unique_TOKEN_UINT_unique_TOKEN_SLASH_unique_TOKEN_PLUS_unique_TOKEN_OBJECT_unique_TOKEN_NATIVE_unique_TOKEN_METHOD_unique_TOKEN_INT_unique_TOKEN_FLOAT64_unique_TOKEN_FLOAT32_unique_TOKEN_FIELD_unique_TOKEN_EXPLICIT_unique_TOKEN_ELIPSES_unique_TOKEN_DCOLON_unique_TOKEN_BOOL_unique_TOKEN_BANG_unique_TOKEN_VAL_SQSTRING_unique_TOKEN_VAL_QSTRING_unique_TOKEN_VAL_DOTTEDNAME_unique_TOKEN_VAL_ID_unique_TOKEN_VAL_HEXBYTE_unique_TOKEN_INSTR_VALUETYPE_unique_TOKEN_INSTR_INT_TYPE_unique_TOKEN_INSTR_TYPE_unique_TOKEN_INSTR_TOK_unique_TOKEN_INSTR_STRING_unique_TOKEN_INSTR_NONE_unique_TOKEN_INSTR_METHOD_unique_TOKEN_INSTR_R_unique_TOKEN_INSTR_I8_unique_TOKEN_INSTR_I32_I32_unique_TOKEN_INSTR_I_unique_TOKEN_VAL_FLOAT64_unique_TOKEN_VAL_INT32_ELIPSES_unique_TOKEN_VAL_INT64get_TOKEN_VARARGget_IsTOKEN_VARARGget_TOKEN_VALUETYPEget_IsTOKEN_VALUETYPEget_TOKEN_VALUEget_IsTOKEN_VALUEget_TOKEN_UNSIGNEDget_IsTOKEN_UNSIGNEDget_TOKEN_UNMANAGEDget_IsTOKEN_UNMANAGEDget_TOKEN_UINTget_IsTOKEN_UINTget_TOKEN_SLASHget_IsTOKEN_SLASHget_TOKEN_PLUSget_IsTOKEN_PLUSget_TOKEN_OBJECTget_IsTOKEN_OBJECTget_TOKEN_NATIVEget_IsTOKEN_NATIVEget_TOKEN_METHODget_IsTOKEN_METHODget_TOKEN_INTget_IsTOKEN_INTget_TOKEN_FLOAT64get_IsTOKEN_FLOAT64get_TOKEN_FLOAT32get_IsTOKEN_FLOAT32get_TOKEN_FIELDget_IsTOKEN_FIELDget_TOKEN_EXPLICITget_IsTOKEN_EXPLICITget_TOKEN_ELIPSESget_IsTOKEN_ELIPSESget_TOKEN_DCOLONget_IsTOKEN_DCOLONget_TOKEN_BOOLget_IsTOKEN_BOOLget_TOKEN_BANGget_IsTOKEN_BANGget_TOKEN_VAL_SQSTRINGget_IsTOKEN_VAL_SQSTRINGget_TOKEN_VAL_QSTRINGget_IsTOKEN_VAL_QSTRINGget_TOKEN_VAL_DOTTEDNAMEget_IsTOKEN_VAL_DOTTEDNAMEget_TOKEN_VAL_IDget_IsTOKEN_VAL_IDget_TOKEN_VAL_HEXBYTEget_IsTOKEN_VAL_HEXBYTEget_TOKEN_INSTR_VALUETYPEget_IsTOKEN_INSTR_VALUETYPEget_TOKEN_INSTR_INT_TYPEget_IsTOKEN_INSTR_INT_TYPEget_TOKEN_INSTR_TYPEget_IsTOKEN_INSTR_TYPEget_TOKEN_INSTR_TOKget_IsTOKEN_INSTR_TOKget_TOKEN_INSTR_STRINGget_IsTOKEN_INSTR_STRINGget_TOKEN_INSTR_NONEget_IsTOKEN_INSTR_NONEget_TOKEN_INSTR_METHODget_IsTOKEN_INSTR_METHODget_TOKEN_INSTR_Rget_IsTOKEN_INSTR_Rget_TOKEN_INSTR_I8get_IsTOKEN_INSTR_I8get_TOKEN_INSTR_I32_I32get_IsTOKEN_INSTR_I32_I32get_TOKEN_INSTR_Iget_IsTOKEN_INSTR_Iget_TOKEN_VAL_FLOAT64get_IsTOKEN_VAL_FLOAT64get_TOKEN_VAL_INT32_ELIPSESget_IsTOKEN_VAL_INT32_ELIPSESget_TOKEN_VAL_INT64get_IsTOKEN_VAL_INT64NONTERM__startilInstrsIsNONTERM__startilInstrsNONTERM__startilTypeIsNONTERM__startilTypeNONTERM_ilTypeIsNONTERM_ilTypeNONTERM_ilInstrsIsNONTERM_ilInstrsNONTERM_compQstringIsNONTERM_compQstringNONTERM_methodNameIsNONTERM_methodNameNONTERM_instrs2IsNONTERM_instrs2NONTERM_methodSpecMaybeArrayMethodIsNONTERM_methodSpecMaybeArrayMethodNONTERM_instrIsNONTERM_instrNONTERM_sigArgs0IsNONTERM_sigArgs0NONTERM_sigArgs1IsNONTERM_sigArgs1NONTERM_sigArgs1aIsNONTERM_sigArgs1aNONTERM_sigArgIsNONTERM_sigArgNONTERM_opt_idIsNONTERM_opt_idNONTERM_name1IsNONTERM_name1NONTERM_classNameIsNONTERM_classNameNONTERM_slashedNameIsNONTERM_slashedNameNONTERM_typeNameInstIsNONTERM_typeNameInstNONTERM_typeNameIsNONTERM_typeNameNONTERM_typSpecIsNONTERM_typSpecNONTERM_callConvIsNONTERM_callConvNONTERM_callKindIsNONTERM_callKindNONTERM_bounds1IsNONTERM_bounds1NONTERM_boundIsNONTERM_boundNONTERM_idIsNONTERM_idNONTERM_int32IsNONTERM_int32NONTERM_int64IsNONTERM_int64NONTERM_float64IsNONTERM_float64NONTERM_opt_actual_tyargsIsNONTERM_opt_actual_tyargsNONTERM_actual_tyargsIsNONTERM_actual_tyargsNONTERM_actualTypSpecsIsNONTERM_actualTypSpecs_unique_NONTERM__startilInstrs_unique_NONTERM__startilType_unique_NONTERM_ilType_unique_NONTERM_ilInstrs_unique_NONTERM_compQstring_unique_NONTERM_methodName_unique_NONTERM_instrs2_unique_NONTERM_methodSpecMaybeArrayMethod_unique_NONTERM_instr_unique_NONTERM_sigArgs0_unique_NONTERM_sigArgs1_unique_NONTERM_sigArgs1a_unique_NONTERM_sigArg_unique_NONTERM_opt_id_unique_NONTERM_name1_unique_NONTERM_className_unique_NONTERM_slashedName_unique_NONTERM_typeNameInst_unique_NONTERM_typeName_unique_NONTERM_typSpec_unique_NONTERM_callConv_unique_NONTERM_callKind_unique_NONTERM_bounds1_unique_NONTERM_bound_unique_NONTERM_id_unique_NONTERM_int32_unique_NONTERM_int64_unique_NONTERM_float64_unique_NONTERM_opt_actual_tyargs_unique_NONTERM_actual_tyargs_unique_NONTERM_actualTypSpecsget_NONTERM__startilInstrsget_IsNONTERM__startilInstrsget_NONTERM__startilTypeget_IsNONTERM__startilTypeget_NONTERM_ilTypeget_IsNONTERM_ilTypeget_NONTERM_ilInstrsget_IsNONTERM_ilInstrsget_NONTERM_compQstringget_IsNONTERM_compQstringget_NONTERM_methodNameget_IsNONTERM_methodNameget_NONTERM_instrs2get_IsNONTERM_instrs2get_NONTERM_methodSpecMaybeArrayMethodget_IsNONTERM_methodSpecMaybeArrayMethodget_NONTERM_instrget_IsNONTERM_instrget_NONTERM_sigArgs0get_IsNONTERM_sigArgs0get_NONTERM_sigArgs1get_IsNONTERM_sigArgs1get_NONTERM_sigArgs1aget_IsNONTERM_sigArgs1aget_NONTERM_sigArgget_IsNONTERM_sigArgget_NONTERM_opt_idget_IsNONTERM_opt_idget_NONTERM_name1get_IsNONTERM_name1get_NONTERM_classNameget_IsNONTERM_classNameget_NONTERM_slashedNameget_IsNONTERM_slashedNameget_NONTERM_typeNameInstget_IsNONTERM_typeNameInstget_NONTERM_typeNameget_IsNONTERM_typeNameget_NONTERM_typSpecget_IsNONTERM_typSpecget_NONTERM_callConvget_IsNONTERM_callConvget_NONTERM_callKindget_IsNONTERM_callKindget_NONTERM_bounds1get_IsNONTERM_bounds1get_NONTERM_boundget_IsNONTERM_boundget_NONTERM_idget_IsNONTERM_idget_NONTERM_int32get_IsNONTERM_int32get_NONTERM_int64get_IsNONTERM_int64get_NONTERM_float64get_IsNONTERM_float64get_NONTERM_opt_actual_tyargsget_IsNONTERM_opt_actual_tyargsget_NONTERM_actual_tyargsget_IsNONTERM_actual_tyargsget_NONTERM_actualTypSpecsget_IsNONTERM_actualTypSpecs_fsyacc_gotos@633_fsyacc_sparseGotoTableRowOffsets@634_fsyacc_stateToProdIdxsTableElements@635_fsyacc_stateToProdIdxsTableRowOffsets@636_fsyacc_actionTableElements@638_fsyacc_actionTableRowOffsets@639_fsyacc_reductionSymbolCounts@640_fsyacc_productionToNonTerminalTable@641_fsyacc_immediateActions@642DateTime1970Jan01MAX_PATHE_FAILiclrsnget_DateTime1970Jan01get_UtcNowabsilWriteGetTimeStampThrowExceptionForHR_actionhresultgetDebugFileNameget_MAX_PATHget_E_FAILbytesToWordbytesToDWordbytesToQWordb4b5b6b7dwToByteswToBytesbytesToIFHbytesToISHbytesToISbytesToIRbytesToIRDbytesToIRDEbytesToIRDataESaveChunk@549pUnlinkedResourceunlinkedResourceOffsetGetRandomFileNameGetUniqueRandomFileName@625createCvtresArgs@638unlinkedResourcescmdLineArgsPreambleProcessStartInfoset_Argumentsset_CreateNoWindowset_WindowStyleProcessWindowStyleWaitForExitget_ExitCodeDeletelinkNativeResourcesfileTypetempFilePathunlinkResourceulLinkedResourceBaseRVApbLinkedResourceCompareTo$cont@1030-19CompareTo$cont@1030-20GetTypeFromProgIDGetComInterfaceForObjectReleasepdbInitializebinaryNamepdbNameReleaseComObjectpdbClosepdbSetUserEntryPointentryMethodTokenpdbDefineDocumentpdbOpenMethodmethodTokenpdbCloseMethodpdbOpenScopepdbCloseScopepdbDefineLocalVariableaddr1pdbSetMethodRangedocWriter1startColdocWriter2endColpdbDefineSequencePointsdocWriterptspdbGetDebugInfopdbReadOpenmoduleNamepdbReadClose_readerSymbolTokenISymbolReaderISymbolMethodpdbReaderGetMethodreaderGetMethodFromDocumentPositionISymbolDocumentpdbReaderGetMethodFromDocumentPositionGetDocumentspdbReaderGetDocumentsGetDocumentpdbReaderGetDocumentlanguageVendordocumentTypeget_URLpdbDocumentGetURLget_DocumentTypeToByteArraypdbDocumentGetTypeget_LanguagepdbDocumentGetLanguageget_LanguageVendorpdbDocumentGetLanguageVendorFindClosestLinepdbDocumentFindClosestLineGetTokenpdbMethodGetTokenISymbolScopepdbMethodGetRootScopef@1-4offsetscolsendLinesendColumnsget_SequencePointCountGetSequencePointspdbMethodGetSequencePointsGetChildrenpdbScopeGetChildrenpdbScopeGetOffsetsISymbolVariableGetLocalspdbScopeGetLocalspdbVariableGetNamevariableGetSignaturepdbVariableGetSignatureget_AddressKindSymAddressKindget_AddressField1pdbVariableGetAddressAttributesCreateInterface_clsidguid_guid_metaHostSecurityCriticalAttributemscoree.dllsignerOpenPublicKeyFilefilePathsignerOpenKeyPairFileget_iclrsnset_iclrsnGetSystemVersiongetICLRStrongNamesignerGetPublicKeyForKeyPairkpsignerGetPublicKeyForKeyContainerkcsignerCloseKeyContainersignerSignatureSizesignerSignFileWithKeyPairsignerSignFileWithKeyContainerkcNameX86IsX86X64IsX64_unique_X86_unique_X64get_X86get_IsX86get_X64get_IsX64MachineNumberOfSectionsTimeDateStampPointerToSymbolTableNumberOfSymbolsSizeOfOptionalHeaderCharacteristicsWidthmachinenumberOfSectionstimeDateStamppointerToSymbolTablenumberOfSymbolssizeOfOptionalHeadercharacteristicssecsptstnossohget_Machineset_Machineget_NumberOfSectionsset_NumberOfSectionsget_TimeDateStampset_TimeDateStampget_PointerToSymbolTableset_PointerToSymbolTableget_NumberOfSymbolsset_NumberOfSymbolsget_SizeOfOptionalHeaderset_SizeOfOptionalHeaderget_Characteristicsset_Characteristicsget_WidthtoBytesPhysicalAddressVirtualSizeVirtualAddressSizeOfRawDataPointerToRawDataPointerToRelocationsPointerToLineNumbersNumberOfRelocationsNumberOfLineNumbersaddressInfovirtualAddresssizeOfRawDatapointerToRawDatapointerToRelocationspointerToLineNumbersnumberOfRelocationsnumberOfLineNumbersaivasrdprdprplnnrnlget_PhysicalAddressset_PhysicalAddressget_VirtualSizeset_VirtualSizeget_VirtualAddressset_VirtualAddressget_SizeOfRawDataset_SizeOfRawDataget_PointerToRawDataset_PointerToRawDataget_PointerToRelocationsset_PointerToRelocationsget_PointerToLineNumbersset_PointerToLineNumbersget_NumberOfRelocationsset_NumberOfRelocationsget_NumberOfLineNumbersset_NumberOfLineNumbersSectionNumberStorageClassNumberOfAuxSymbolssectionNumberstypestorageClassnumberOfAuxSymbolssnnasset_Valueget_SectionNumberset_SectionNumberset_Typeget_StorageClassset_StorageClassget_NumberOfAuxSymbolsset_NumberOfAuxSymbolsRelocCountSymbolTableIndexsymbolTableIndexstiget_RelocCountset_RelocCountget_SymbolTableIndexset_SymbolTableIndexMajorVersionMinorVersionNumberOfNamedEntriesNumberOfIdEntriesmajorVersionminorVersionnumberOfNamedEntriesnumberOfIdEntriesmjvmnvnnenieget_MajorVersionset_MajorVersionget_MinorVersionset_MinorVersionget_NumberOfNamedEntriesset_NumberOfNamedEntriesget_NumberOfIdEntriesset_NumberOfIdEntriesOffsetToDataOffsetToDirectoryDataIsDirectoryget_OffsetToDataset_OffsetToDataget_OffsetToDirectoryget_DataIsDirectoryCodePageReservedoffsetToDatareservedset_Sizeset_CodePageget_Reservedset_ReservedDataSizeHeaderSizeTypeIDNameIDDataVersionMemFlagsLangIDdwDataSizedwHeaderSizedwDataVersiondwVersiondwCharacteristicsget_DataSizeset_DataSizeget_HeaderSizeset_HeaderSizeget_TypeIDset_TypeIDget_NameIDset_NameIDget_DataVersionset_DataVersionget_MemFlagsset_MemFlagsget_LangIDset_LangIDResHdrDataEntryresHdrdataEntrycTypewzTypecNamewzNamenidget_ResHdrget_DataEntrySavecvtrestempResFileNameDefineScopeOpenScopeszScopedwOpenFlagsriidpunkComImportAttributeInterfaceAttributeGuidAttributeInterfaceTypeAttributeComInterfaceTypePlaceholderCLSCompliantAttributeSetSourcesourceSizeSetCheckSumalgorithmIdcheckSumSizecheckSumComVisibleAttributeSizeOfDataAddressOfRawDataCharacteristics@TimeDateStamp@MajorVersion@MinorVersion@SizeOfData@AddressOfRawData@PointerToRawData@get_SizeOfDataget_AddressOfRawDataRetValSetUserEntryPointentryMethodOpenMethodCloseMethodpRetValCloseScopeSetScopeRangescopeIDDefineLocalVariablevarnamecSigaddressKindaddr2addr3paramnamesequencefieldnameDefineGlobalVariableglobalvarnameSetSymAttributeattnamecDataOpenNamespaceCloseNamespaceUsingNamespaceSetMethodSourceRangestartDocendDocSystem.Runtime.InteropServices.ComTypesIStreamemitterfullBuildGetDebugInfoiDDpcDataDefineSequencePointsspCountcolumnsRemapTokenoldTokennewTokenInitialize2tempfilenamefinalfilenameDefineConstantconstnameAbortDefineLocalVariable2localvarname2sigTokenDefineGlobalVariable2globalvarname2DefineConstant2constantname2OpenMethod2method2isectsymWritersymWriter@get_symWritersymDocWritersymDocWriter@get_symDocWriteriddCharacteristicsiddMajorVersioniddMinorVersioniddTypeiddDataiddCharacteristics@iddMajorVersion@iddMinorVersion@iddType@iddData@get_iddCharacteristicsget_iddMajorVersionget_iddMinorVersionget_iddTypeget_iddDatasymReadersymReader@get_symReadersymDocumentsymDocument@get_symDocumentsymMethodsymMethod@get_symMethodsymVariablesymVariable@get_symVariablesymScopesymScope@get_symScopepdbSeqPointOffsetpdbSeqPointDocumentpdbSeqPointLinepdbSeqPointColumnpdbSeqPointEndLinepdbSeqPointEndColumnpdbSeqPointOffset@pdbSeqPointDocument@pdbSeqPointLine@pdbSeqPointColumn@pdbSeqPointEndLine@pdbSeqPointEndColumn@get_pdbSeqPointOffsetget_pdbSeqPointDocumentget_pdbSeqPointLineget_pdbSeqPointColumnget_pdbSeqPointEndLineget_pdbSeqPointEndColumnGetVersionFromFileEnumerateInstalledRuntimesEnumerateLoadedRuntimesReserved01GetRuntimeinterfaceIdget_GetVersionFromFileget_EnumerateInstalledRuntimesget_EnumerateLoadedRuntimesget_Reserved01GetHashFromAssemblyFileGetHashFromAssemblyFileWGetHashFromBlobGetHashFromFileGetHashFromFileWGetHashFromHandleStrongNameCompareAssembliesStrongNameGetBlobStrongNameGetBlobFromImageStrongNameHashSizeStrongNameKeyGenStrongNameKeyGenExStrongNameKeyInstallStrongNameSignatureGenerationExStrongNameSignatureVerificationStrongNameSignatureVerificationFromImageStrongNameTokenFromAssemblyStrongNameTokenFromAssemblyExStrongNameTokenFromPublicKeyget_GetHashFromAssemblyFileget_GetHashFromAssemblyFileWget_GetHashFromBlobget_GetHashFromFileget_GetHashFromFileWget_GetHashFromHandleget_StrongNameCompareAssembliesStrongNameFreeBufferpbMemoryget_StrongNameGetBlobget_StrongNameGetBlobFromImageStrongNameGetPublicKeypwzKeyContainerpbKeyBlobcbKeyBlobppbPublicKeyBlobpcbPublicKeyBlobget_StrongNameHashSizeStrongNameKeyDeleteget_StrongNameKeyGenget_StrongNameKeyGenExget_StrongNameKeyInstallStrongNameSignatureGenerationpwzFilePathppbSignatureBlobpcbSignatureBlobget_StrongNameSignatureGenerationExStrongNameSignatureSizepbPublicKeyBlobcbPublicKeyBlobpcbSizeget_StrongNameSignatureVerificationStrongNameSignatureVerificationExfForceVerificationpfWasVerifiedget_StrongNameSignatureVerificationFromImageget_StrongNameTokenFromAssemblyget_StrongNameTokenFromAssemblyExget_StrongNameTokenFromPublicKeyComConversionLossAttributeIsLoadedLoadErrorStringLoadLibraryGetProcAddressGetInterfacecoClassIdDateTime1970Jan01@15iclrsn@1381DateTimeKindmorphCustomAttributeDataget_morphCustomAttributeDataset_morphCustomAttributeDataenablemorphCustomAttributeDatadisablemorphCustomAttributeDatabblock_instr2instrbblock_instr2instrscountAccInstrscommitAccInstrsAuxcommitAccInstrscommitAccBasicBlockbblockLoopcurrBBlockInpLabelcurrInpLabelcurrOutLabelbblock2code_instr2codeblock_bblock2code_typ2typcode_bblock2code_typ2typblock_bblock2codecode_bblock2codetyp_tref2treftspec_tref2treftyp_scoref2scoref_tyvar2typtspec_scoref2scoref_tyvar2typfs_0fs_1callsig_scoref2scoref_tyvar2typtyps_scoref2scoref_tyvar2typmorphILScopeRefsInILTypeReffscopecallsig_typ2typgparam_typ2typgfmref_typ2typmspec_typ2typfref_typ2typfspec_typ2typcelem_typ2typcelemcattr_typ2typfdef_typ2typftypef@1-3alts_typ2typaltsfreevar_typ2typvarargs_typ2typconv_fspec@337factualtyfrconv_mspec@338mrmorphILTypesInILInstrreturn_typ2typparam_typ2typmorphILMethodDefsmorphILTypeDefsmorphExpandILTypeDefsmorphILTypeDefsInILModuletypesffreevars_typ2typilmbody_bblock2code_typ2typ_maxstack2maxstackfs_2morphILMethodBodyfilmbodyospec_typ2typmdef_typ2typ_ilmbody2ilmbodyfdefs_typ2typmdefs_typ2typ_ilmbody2ilmbodycuinfo_typ2typcloinfo_typ2typ_ilmbody2ilmbodymorphIlxClosureInfomimpl_typ2typedef_typ2typpdef_typ2typpdefs_typ2typpdefsedefs_typ2typtdef_typ2typ_ilmbody2ilmbody_mdefs2mdefstdefs_typ2typ_ilmbody2ilmbody_mdefs2mdefsmanifest_typ2typmorphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefsfmdefsfilmbody@513modCtxtmodule_bblock2code_typ2typ_maxstack2maxstackmodule_bblock2code_typ2typmorphILInstrsAndILTypesInILModulemorphILInstrsInILCodemorphExpandILInstrsInILCodemorphILTypeInILModulemorphILTypeRefsInILModuleMemoizedmorphILScopeRefsInILModuleMemoizedIsInstrsInstrsisInstrsget_IsInstrsget_Instrsftype'tdefCtxt_0tdefCtxt_1mdefCtxt_modCtxt_tdefCtxt_mdefCtxttdefCtxt_instrCtxt_formalCtxtmorphCustomAttributeData@31parseILGlobalsNoArgInstrsInt64InstrsInt32InstrsInt32Int32InstrsDoubleInstrsMethodSpecInstrsStringInstrsTokenInstrsTypeInstrsIntTypeInstrsValueTypeInstrsget_parseILGlobalsmk_stindmk_ldindget_NoArgInstrsget_Int64Instrsget_Int32Instrsget_Int32Int32Instrsget_DoubleInstrsget_MethodSpecInstrsget_StringInstrsget_TokenInstrsget_TypeInstrsget_IntTypeInstrsget_ValueTypeInstrsparseILGlobals@24noArgInstrs@31NoArgInstrs@203Int64Instrs@235Int32Instrs@238Int32Int32Instrs@242DoubleInstrs@245MethodSpecInstrs@249StringInstrs@252TokenInstrs@255TypeInstrs@259IntTypeInstrs@270ValueTypeInstrs@276patternInput@167mkIlxExtInstrisIlxExtInstrdestIlxExtInstrpatternInput@198-1mkIlxExtTypeDefKindisIlxExtTypeDefKinddestIlxExtTypeDefKindmkLowerNameCompareTo$cont@79-18instAppsAuxinstLambdasAuxmkILFreeVardestinationsfallthroughisTailcallremapIlxLabelslab2clget_patternInput@167get_mkIlxExtInstrget_isIlxExtInstrget_destIlxExtInstrmkIlxInstrget_patternInput@198-1get_mkIlxExtTypeDefKindget_isIlxExtTypeDefKindget_destIlxExtTypeDefKindmkIlxTypeDefKinddestTyFuncAppmkILFormalCloRefcsigactualTypOfIlxUnionFieldLowerNamelowerNameget_ILFieldget_LowerNamealtFieldsaltCustomAttrsFieldDefsFieldTypesaltName@altFields@altCustomAttrs@get_altNameget_altFieldsget_altCustomAttrsget_FieldDefsFieldDefget_FieldTypesNoHelpersIsNoHelpersAllHelpersIsAllHelpersSpecialFSharpListHelpersIsSpecialFSharpListHelpersSpecialFSharpOptionHelpersIsSpecialFSharpOptionHelpers_unique_NoHelpers_unique_AllHelpers_unique_SpecialFSharpListHelpers_unique_SpecialFSharpOptionHelpersget_NoHelpersget_IsNoHelpersget_AllHelpersget_IsAllHelpersget_SpecialFSharpListHelpersget_IsSpecialFSharpListHelpersget_SpecialFSharpOptionHelpersget_IsSpecialFSharpOptionHelpersNewIlxUnionRefGenericArgsAlternativesArrayIsNullPermittedHasHelpersAlternativesNewIlxUnionSpecget_GenericArgsget_AlternativesArrayget_IsNullPermittedget_HasHelpersget_AlternativesAlternativeIsLambdas_forallIsLambdas_lambdaIsLambdas_returnNewLambdas_forallget_IsLambdas_forallNewLambdas_lambdaget_IsLambdas_lambdaNewLambdas_returnget_IsLambdas_returnIsApps_tyappIsApps_appIsApps_doneNewApps_tyappget_IsApps_tyappNewApps_appget_IsApps_appNewApps_doneget_IsApps_donefvNamefvCompilerGeneratedfvTypefvName@fvCompilerGenerated@fvType@get_fvNameget_fvCompilerGeneratedget_fvTypeNewIlxClosureRefClosureRefFormalFreeVarsFormalLambdasNewIlxClosureSpecget_ILTypeget_ClosureRefget_FormalFreeVarsget_FormalLambdasclorefIsEI_lddataIsEI_isdataIsEI_brisdataIsEI_castdataIsEI_stdataIsEI_datacaseIsEI_lddatatagIsEI_newdataIsEI_callfuncNewEI_lddataget_IsEI_lddataNewEI_isdataget_IsEI_isdataNewEI_brisdataget_IsEI_brisdataNewEI_castdataget_IsEI_castdataNewEI_stdataget_IsEI_stdataNewEI_datacaseget_IsEI_datacaseNewEI_lddatatagget_IsEI_lddatatagNewEI_newdataget_IsEI_newdataNewEI_callfuncget_IsEI_callfunccloStructurecloCodecloSourcecloStructure@cloCode@cloSource@get_cloStructureget_cloCodeget_cloSourcecudReprAccesscudHelpersAccesscudHasHelperscudDebugProxiescudDebugDisplayAttributescudAlternativescudNullPermittedcudWherecudReprAccess@cudHelpersAccess@cudHasHelpers@cudDebugProxies@cudDebugDisplayAttributes@cudAlternatives@cudNullPermitted@cudWhere@get_cudReprAccessget_cudHelpersAccessget_cudHasHelpersget_cudDebugProxiesget_cudDebugDisplayAttributesget_cudAlternativesget_cudNullPermittedget_cudWhereIsClosureNewClosureget_IsClosuremkIlxExtInstr@167isIlxExtInstr@167destIlxExtInstr@167mkIlxExtTypeDefKind@198isIlxExtTypeDefKind@198destIlxExtTypeDefKind@198get_TypeDefKindExtensionrunningOnMonoint_ordermemoizeNamespaceTablememoizeNamespaceRightTablememoizeNamespaceArrayTableemptyStringArrayAssemblyRefUniqueStampGeneratoremptyILTypesemptyILGenericArgsinstrExtensionsemptyILLocalsemptyILParametersmkILEmptyGenericParamsemptyILGenericArgsListtype_def_kind_extensionstypeNameForGlobalFunctionsemptyILCustomAttrscheckscodeLabelGeneratoremptyILSecurityDeclsemptyILTypeDefsemptyILMethodsdefaultSubSystemdefaultPhysAlignmentdefaultVirtAlignmentdefaultImageBasetname_Objecttname_Stringtname_StringBuildertname_AsyncCallbacktname_IAsyncResulttname_IComparabletname_Exceptiontname_Typetname_Missingtname_Activatortname_SerializationInfotname_StreamingContexttname_SecurityPermissionAttributetname_Delegatetname_ValueTypetname_TypedReferencetname_Enumtname_MulticastDelegatetname_Arraytname_Int64tname_UInt64tname_Int32tname_UInt32tname_Int16tname_UInt16tname_SBytetname_Bytetname_Singletname_Doubletname_Booltname_Chartname_IntPtrtname_UIntPtrtname_RuntimeArgumentHandletname_RuntimeTypeHandletname_RuntimeMethodHandletname_RuntimeFieldHandleldargsmkLdarg0ldlocsstlocsldi32stname_CompilerGeneratedAttributetname_DebuggableAttributeecmaPublicKeyecmaMscorlibScopeRefecmaILGlobalsmkILVoidReturnemptyILFieldsl@3239emptyILEventsl@3243-1emptyILPropertiesl@3247-2emptyILMethodImplstname_DebuggerNonUserCodeAttributetname_DebuggableAttribute_DebuggingModestname_DebuggerHiddenAttributetname_DebuggerDisplayAttributetname_DebuggerTypeProxyAttributetname_DebuggerStepThroughAttributetname_DebuggerBrowsableAttributetname_DebuggerBrowsableStateemptyILRefstspancopyOfStruct@4920copyOfStruct@4920-1field621468@field621470@field621471@field621472@field621473@field621474@field621476@field621584@get_runningOnMonoget_int_orderget_IsValueCreatedlazyMapsplitNameAtsplitNamespaceAuxget_memoizeNamespaceTableget_memoizeNamespaceRightTablesplitNamespaceget_memoizeNamespaceArrayTablesplitNamespaceToArraysplitILTypeNameget_emptyStringArraysplitILTypeNameWithPossibleStaticArgumentsunsplitTypeNamesplitTypeNameRightAuxsplitTypeNameRightsha1HashBytesCompareTo$cont@435-6CompareTo$cont@435-7get_AssemblyRefUniqueStampGeneratorToCharconvDigit@508get_emptyILTypesget_emptyILGenericArgsmkILTypesmkILGenericArgsmkILCallSigRawmkILCallSigmkILBoxedTypeCompareTo$cont@859-8CompareTo$cont@859-9CompareTo$cont@944-10CompareTo$cont@944-11Equals$cont@944get_instrExtensionsRegisterInstructionSetExtensionExtensionlook@1135-1find_extensionget_emptyILLocalsmkILLocalsCompareTo$cont@1206-12CompareTo$cont@1206-13GetHashCode$cont@1206-2Equals$cont@1206-1Equals$cont@1206-2CompareTo$cont@1230-14CompareTo$cont@1230-15GetHashCode$cont@1230-3Equals$cont@1230-3Equals$cont@1230-4get_emptyILParametersCompareTo$cont@1408-16CompareTo$cont@1408-17mkMethBodyAuxmkMethBodyLazyAuxtypesOfILParamsRawtypesOfILParamsListget_mkILEmptyGenericParamsget_emptyILGenericArgsListmkILNestedTyRefmkILTyRefmkILTySpecRawmkILTySpecmkILNonGenericTySpecmkILTyRefInTyRefmkILTyboxedvcmkILValueTymkILBoxedTymkILBoxedTyRawmkILNonGenericValueTymkILNonGenericBoxedTyget_type_def_kind_extensionsRegisterTypeDefKindExtensionmkSimpleAssRefmkSimpleModRefget_typeNameForGlobalFunctionsmkILTypeForGlobalFunctionsisTypeNameForGlobalFunctionsmkILMethRefRawmkILMethRefmkILMethSpecForMethRefInTyRawmkILMethSpecForMethRefInTymkILMethSpecmk_mspec_in_trefmkILMethSpecInTyRawmkILMethSpecInTymkILNonGenericMethSpecInTymkILInstanceMethSpecInTymkILNonGenericInstanceMethSpecInTymkILStaticMethSpecInTymkILNonGenericStaticMethSpecInTymkILCtorMethSpeccinstmkILCtorMethSpecForTymkILFieldRefmkILFieldSpecmkILFieldSpecInTyget_emptyILCustomAttrsmkILCustomAttrsmkILComputedCustomAttrsandTailnessformatCodeLabeldestinationsOfInstrinstrIsTailcallinstrIsBasicBlockEndget_checksaccEntriesOfCodeentriesOfCodeAsSetaccExitsOfCodeexitsOfCodeAsSetaccLabelsOfCodeaccLabelsOfSEHaccLabelsOfFilterCodelabelsOfCodecheckILCodemkBasicBlockmkScopeBlockmkGroupBlockFromCodeinternalscodesmkGroupBlockmkRestrictBlockmkTryFinallyBlocktryblockenterFinallyLabfinallyBlockmkTryFaultBlockentarFaultLabfaultBlockmkTryMultiFilterCatchBlocknew_generatorget_codeLabelGeneratorgenerateCodeLabeluniqueEntryOfCodeuniqueExitOfCodemkNonBranchingInstrsmkNonBranchingInstrsThenmkNonBranchingInstrsThenBrnonBranchingInstrsToCodejoinCodecode1code2get_emptyILSecurityDeclsmkILSecurityDeclsmkILLazySecurityDeclsmkILTyvarTymkILSimpleTyparmkILFormalTyparsmkILFormalTyparsRawmkILFormalGenericArgsRawmkILFormalGenericArgsmkILFormalBoxedTymkRefForNestedILTypeDefgetNameltdaddILTypeDefToTable_casaddLazyTypeDefToTablelarrbuildTableaddILTypeDefmkILTypeDefsmkILTypeDefsLazyllistget_emptyILTypeDefsaddILMethodToTableaddILMethodmkILMethodsmkILMethodsLazyget_emptyILMethodsfilterILMethodDefsget_defaultSubSystemget_defaultPhysAlignmentget_defaultVirtAlignmentget_defaultImageBasemkILArrTymkILArr1DTyisILArrTydestILArrTyget_tname_Objectget_tname_Stringget_tname_StringBuilderget_tname_AsyncCallbackget_tname_IAsyncResultget_tname_IComparableget_tname_Exceptionget_tname_Typeget_tname_Missingget_tname_Activatorget_tname_SerializationInfoget_tname_StreamingContextget_tname_SecurityPermissionAttributeget_tname_Delegateget_tname_ValueTypeget_tname_TypedReferenceget_tname_Enumget_tname_MulticastDelegateget_tname_Arrayget_tname_Int64get_tname_UInt64get_tname_Int32get_tname_UInt32get_tname_Int16get_tname_UInt16get_tname_SByteget_tname_Byteget_tname_Singleget_tname_Doubleget_tname_Boolget_tname_Charget_tname_IntPtrget_tname_UIntPtrget_tname_RuntimeArgumentHandleget_tname_RuntimeTypeHandleget_tname_RuntimeMethodHandleget_tname_RuntimeFieldHandlemkNormalCallmkNormalCallvirtmkNormalCallconstraintmkNormalNewobjget_ldargsmkLdargget_mkLdarg0get_ldlocsmkLdlocget_stlocsmkStlocget_ldi32smkLdcInt32get_tname_CompilerGeneratedAttributeget_tname_DebuggableAttributemkILGlobalsmscorlibScopeRefmscorlibAssemblyNameOptget_ecmaPublicKeyget_ecmaMscorlibScopeRefget_ecmaILGlobalsmkInitializeArrayMethSpecmkMscorlibExnNewobjeclasstspec_is_mscorlibtyp_is_boxed_mscorlib_typtyp_is_value_mscorlib_typisILObjectTyisILStringTyisILTypedReferenceTyisILSByteTyisILByteTyisILInt16TyisILUInt16TyisILInt32TyisILUInt32TyisILInt64TyisILUInt64TyisILIntPtrTyisILUIntPtrTyisILBoolTyisILCharTyisILSingleTyisILDoubleTyqrescope_scorefscoref_oldqrescope_trefrescopeILScopeRefrescopeILTypeRefrescopeILTypeSpecQuickrescopeILTypeSpecrescopeILTyperescopeILTypesrescopeILCallSigrescopeILMethodRefrescopeILFieldRefinstILTypeAuxnumFreeinstILGenericArgsAuxinstILCallSigAuxinstILTypemkILParammkILParamNamedmkILParamAnonmkILReturnmkILLocalmkILMethodBodyinitlocalsmaxstackmkMethodBodyzeroinitget_mkILVoidReturnmkILCtormkCallBaseConstructormkNormalStfldmkNormalStsfldmkNormalLdsfldmkNormalLdfldmkNormalLdfldamkNormalLdobjmkNormalStobjmkILNonGenericEmptyCtorsuperTymkILStaticMethodgenparamsmkILNonGenericStaticMethodmkILClassCtormkILGenericVirtualMethodactual_argsactual_retmkILNonGenericVirtualMethodmkILGenericNonVirtualMethodmkILNonGenericInstanceMethodilmbody_code2codemdef_code2codeprependInstrsToCodeprependInstrsToMethodnew_codecdef_cctorCode2CodeOrCreatemkRefToILMethodmkRefToILFieldmkRefForILMethodmkRefForILFieldprependInstrsToClassCtormkILFieldatisLiteralmkILInstanceFieldmkILStaticFieldmkILLiteralFieldmkILFieldsLazymkILFieldsget_emptyILFieldsget_l@3239mkILEventsLazymkILEventsget_emptyILEventsget_l@3243-1mkILPropertiesLazymkILPropertiesget_emptyILPropertiesget_l@3247-2mkILExportedTypesmkILExportedTypesLazymkILNestedExportedTypesmkILNestedExportedTypesLazymkILResourcesmkILResourcesLazyaddMethodImplToTablemkILMethodImplsmkILMethodImplsLazyget_emptyILMethodImplsmkILStorageCtorWithParamNamespreblockmkILSimpleStorageCtorWithParamNamesbase_tspecaddParamNamesmkILSimpleStorageCtormkILStorageCtormkILGenericClassextendsnestedTypesmkRawDataValueTypeDefpackmkILSimpleClassmkILTypeDefForGlobalFunctionsdestTypeDefsWithGlobalFunctionsFirstmkILSimpleModulehashalglocalecollect@3458popRangeMadd_range@3469disjoint_rangestart_pc1end_pc1start_pc2end_pc2merge_rangesrangeInsideRangelranges_of_clauseextent_lrange@3628extent_list@3630extent_itemextent_list2@3631extent_tryspec@3633extent_clausetryspecstringOfRange@3641string_of_tryspec@3645string_of_clausestring_of_locspec@3646locspecgetClause@3664computeCoveredBlockscodeOffsetViewbbstartToCodeLabelMapr_0r_1otherBlocksblockForInnerTrySpeccoverageOfCodesaddBlocksstate0_0state0_1blockForInnerLocSpec@3767doStructure'structspecsblockState_0blockState_1consumeBBlockInstrs@3819rinstrsnextBBstartPcconsumeOneBlock@3852bbstartPccurrentPcloop@3870-22bbstartToCodeLabelMap@3870fetchBasicBlocks@3869bbstartToCodeLabelMap@3869-1inside@3883range_0range_1addBlock@3890addBlocks@3895coverageOfCodes@3920string_of_tryspec@3947-1stringOfRange@3948-2buildCodeFromInstructionArray@3814tryspecslocalspecsbuildILCodelab2pcone@3978mkILDelegateMethodsrtvmkCtorMethSpecForDelegateuseUIntPtrgetTyOfILEnumInfolazyItemscomputeILEnumInfomdNamemdFieldssigptr_get_u8sigptr_get_i8sigptr_get_u16sigptr_get_i16sigptr_get_i32sigptr_get_u32sigptr_get_i64sigptr_get_u64sigptr_get_ieee32sigptr_get_ieee64sigptr_get_intarraysigptr_get_stringsigptr_get_z_i32sigptr_get_serstringsigptr_get_serstring_possibly_nullmkRefToILAssemblyz_unsigned_intu16AsBytesi32AsBytesi64AsBytesformatILVersionencodeCustomAttrStringencodeCustomAttrElemTypeencodeCustomAttrElemTypeForObjectdecodeCustomAttrElemTypeencodeCustomAttrPrimValueencodeCustomAttrValueencodeCustomAttrNamedArgelemmkILCustomAttribMethReffixedArgsmkILCustomAttributeargvspropvstref_CompilerGeneratedAttributeget_tname_DebuggerNonUserCodeAttributeget_tname_DebuggableAttribute_DebuggingModesget_tname_DebuggerHiddenAttributeget_tname_DebuggerDisplayAttributeget_tname_DebuggerTypeProxyAttributeget_tname_DebuggerStepThroughAttributeget_tname_DebuggerBrowsableAttributeget_tname_DebuggerBrowsableStatetref_DebuggerNonUserCodeAttributetref_DebuggerStepThroughAttributetref_DebuggerHiddenAttributetref_DebuggerDisplayAttributetref_DebuggerTypeProxyAttributetref_DebuggerBrowsableAttributetref_DebuggableAttribute_DebuggingModestyp_DebuggerBrowsableStatemkCompilerGeneratedAttributemkDebuggerNonUserCodeAttributemkDebuggerHiddenAttributemkDebuggerDisplayAttributemkDebuggerTypeProxyAttributemkDebuggerBrowsableAttributemkDebuggerBrowsableNeverAttributemkDebuggerStepThroughAttributemkDebuggableAttributejitOptimizerDisabledaddGeneratedAttrsaddMethodGeneratedAttrsaddPropertyGeneratedAttrsaddFieldGeneratedAttrsadd_never_attrsaddPropertyNeverAttrsaddFieldNeverAttrsmkPermissionSetgrabScopeComponent@4508parseElems@4629parseVal@4569parseFixed@4639parseNamed@4648decodeILAttribDatamkDebuggableAttributeV2enableEnCget_emptyILRefsrefs_of_scorefrefs_of_typrefs_of_tspecrefs_of_callsigrefs_of_genparamsrefs_of_mrefrefs_of_frefrefs_of_ospecrefs_of_mspecrefs_of_typsrefs_of_tokenrefs_of_custom_attrscasrefs_of_varargstysorefs_of_instrrefs_of_il_blockrefs_of_il_coderefs_of_ilmbodyrefs_of_localrefs_of_mbodyrefs_of_mdefrefs_of_paramrefs_of_returnrefs_of_mdefsrefs_of_event_defrefs_of_eventsrefs_of_property_defrefs_of_propertiesrefs_of_fieldsrefs_of_method_implsrefs_of_method_implrefs_of_tdefrefs_of_typesrefs_of_exported_typesrefs_of_resource_whererefs_of_resourcesrefs_of_modulrefs_of_manifestcomputeILRefsget_tspanget_copyOfStruct@4920set_copyOfStruct@4920get_copyOfStruct@4920-1set_copyOfStruct@4920-1zero32@4946get_Daysget_TimeOfDayget_MinorRevisionget_Minorget_BuildparseILVersionvstrcompareILVersionsresolveILMethodRefmkRefToILModuleungenericizeTypeNamekeyfquickMapIsPublicKeyIsPublicKeyTokenIsKeyIsKeyTokenKeyTokenNewPublicKeyget_IsPublicKeyNewPublicKeyTokenget_IsPublicKeyTokenget_IsKeyget_IsKeyTokenget_KeyTokenToTokenKeyAsTokenStructuralComparisonAttributeassemRefNameassemRefHashassemRefPublicKeyInfoassemRefRetargetableassemRefVersionassemRefLocaleassemRefName@assemRefHash@assemRefPublicKeyInfo@assemRefRetargetable@assemRefVersion@assemRefLocale@get_assemRefNameget_assemRefHashget_assemRefPublicKeyInfoget_assemRefRetargetableget_assemRefVersionget_assemRefLocaleHashRetargetableLocaleUniqueStampuniqueStampencodeget_Hashget_Retargetableget_Localeget_UniqueStampyobjpublicKeyretargetableget_RevisionGetPublicKeyTokenget_FlagsAssemblyNameFlagsFromAssemblyNameanamehasMetadataHasMetadatahasMetadata@hash@get_hasMetadataget_hashget_HasMetadataIsAssemblyIsModuleRefIsAssemblyRefQualifiedNameWithNoShortMscorlib_unique_Localget_LocalNewAssemblyget_IsAssemblyget_IsModuleRefget_IsAssemblyRefget_QualifiedNameWithNoShortMscorlibRankSingleDimensionalNewILArrayShapeget_Rankget_SingleDimensionalFromRanksingleDimensionalinit@571-5IsDefaultCDeclIsCDeclStdCallIsStdCallThisCallIsThisCallFastCallIsFastCallVarArgIsVarArg_unique_Default_unique_CDecl_unique_StdCall_unique_ThisCall_unique_FastCall_unique_VarArgget_IsDefaultget_CDeclget_IsCDeclget_StdCallget_IsStdCallget_ThisCallget_IsThisCallget_FastCallget_IsFastCallget_VarArgget_IsVarArgInstanceInstanceExplicitIsInstanceExplicitStatic_unique_Instance_unique_InstanceExplicit_unique_Staticget_Instanceget_InstanceExplicitget_IsInstanceExplicitget_StaticThisConvBasicConvNewCallconvget_ThisConvget_BasicConvinstanceCallConvstaticCallConvinit@604-6AsObjectIsAsObjectAsValueIsAsValue_unique_AsObject_unique_AsValueget_AsObjectget_IsAsObjectget_AsValueget_IsAsValuetrefScopetrefEnclosingtrefNameasBoxedTypeScopeEnclosingApproxIdBasicQualifiedNametrefScope@trefEnclosing@trefName@hashCode@asBoxedType@get_trefScopeget_trefEnclosingget_trefNameget_hashCodeget_asBoxedTypeset_asBoxedTypeenclosingget_Scopeget_Enclosingget_ApproxIdAsBoxedTypeget_BasicQualifiedNameAddQualifiedNameExtensionWithNoShortMscorlibbasicCustomComparisonAttributetspecTypeReftspecInsttspecTypeRef@tspecInst@get_tspecTypeRefget_tspecInsttypeRefinstantiationIsBoxedIsPtrIsByrefIsFunctionPointerIsModifiedBoxityIsNominalIsTyvar_unique_VoidNewBoxedget_IsBoxedNewPtrget_IsPtrNewByrefget_IsByrefNewFunctionPointerget_IsFunctionPointerNewModifiedget_IsModifiedget_Boxityget_IsNominalget_IsTyvarNewExt_typGenericComparisonIntrinsicCallingConvCallingConv@ArgTypes@get_CallingConvcallingConvargTypesmrefParentmrefCallconvmrefGenericAritymrefNamemrefArgsmrefReturnEnclosingTypeRefArgCountCallingSignaturemrefParent@mrefCallconv@mrefGenericArity@mrefName@mrefArgs@mrefReturn@get_mrefParentget_mrefCallconvget_mrefGenericArityget_mrefNameget_mrefArgsget_mrefReturnget_EnclosingTypeRefget_ArgCountget_CallingSignatureenclosingTypeRefgenericArityEnclosingTypeRef@mspecMethodRefmspecEnclosingTypemspecMethodInstMethodRefFormalArgTypesmspecMethodRef@mspecEnclosingType@mspecMethodInst@get_mspecMethodRefget_mspecEnclosingTypeget_mspecMethodInstget_MethodRefget_FormalArgTypesFieldRefActualTypeFieldRef@EnclosingType@get_FieldReffieldRefenclosingTypeget_ActualTypeAMD64IsAMD64IA64IsIA64_unique_AMD64_unique_IA64get_AMD64get_IsAMD64get_IA64get_IsIA64sourceLanguagesourceVendorsourceDocTypesourceFileLanguageVendorDocumentTypesourceLanguage@sourceVendor@sourceDocType@sourceFile@get_sourceLanguageget_sourceVendorget_sourceDocTypeget_sourceFileget_VendorsourceDocumentsourceLinesourceColumnsourceEndLinesourceEndColumnsourceDocument@sourceLine@sourceColumn@sourceEndLine@sourceEndColumn@get_sourceDocumentget_sourceLineget_sourceColumnget_sourceEndLineget_sourceEndColumnIsTypeRefNewTypeNewTypeRefget_IsTypeRefMethod@methodIsCustomAttrsLazyIsCustomAttrsNewCustomAttrsLazyget_IsCustomAttrsLazyNewCustomAttrsget_IsCustomAttrsDT_RIsDT_RDT_I1IsDT_I1DT_U1IsDT_U1DT_I2IsDT_I2DT_U2IsDT_U2DT_I4IsDT_I4DT_U4IsDT_U4DT_I8IsDT_I8DT_U8IsDT_U8DT_R4IsDT_R4DT_R8IsDT_R8DT_IIsDT_IDT_UIsDT_UDT_REFIsDT_REF_unique_DT_R_unique_DT_I1_unique_DT_U1_unique_DT_I2_unique_DT_U2_unique_DT_I4_unique_DT_U4_unique_DT_I8_unique_DT_U8_unique_DT_R4_unique_DT_R8_unique_DT_I_unique_DT_U_unique_DT_REFget_DT_Rget_IsDT_Rget_DT_I1get_IsDT_I1get_DT_U1get_IsDT_U1get_DT_I2get_IsDT_I2get_DT_U2get_IsDT_U2get_DT_I4get_IsDT_I4get_DT_U4get_IsDT_U4get_DT_I8get_IsDT_I8get_DT_U8get_IsDT_U8get_DT_R4get_IsDT_R4get_DT_R8get_IsDT_R8get_DT_Iget_IsDT_Iget_DT_Uget_IsDT_Uget_DT_REFget_IsDT_REFIsILTypeIsILMethodNewILTypeget_IsILTypeNewILMethodget_IsILMethodIsI4IsI8IsR4IsR8NewI4get_IsI4NewI8get_IsI8NewR4get_IsR4NewR8get_IsR8IsTailcallNormalcallIsNormalcall_unique_Tailcall_unique_Normalcallget_Tailcallget_IsTailcallget_Normalcallget_IsNormalcallAlignedIsAlignedUnaligned1IsUnaligned1Unaligned2IsUnaligned2Unaligned4IsUnaligned4_unique_Aligned_unique_Unaligned1_unique_Unaligned2_unique_Unaligned4get_Alignedget_IsAlignedget_Unaligned1get_IsUnaligned1get_Unaligned2get_IsUnaligned2get_Unaligned4get_IsUnaligned4NonvolatileIsNonvolatile_unique_Volatile_unique_Nonvolatileget_Volatileget_Nonvolatileget_IsNonvolatileReadonlyAddressIsReadonlyAddressNormalAddressIsNormalAddress_unique_ReadonlyAddress_unique_NormalAddressget_ReadonlyAddressget_IsReadonlyAddressget_NormalAddressget_IsNormalAddressBI_beqIsBI_beqBI_bgeIsBI_bgeBI_bge_unIsBI_bge_unBI_bgtIsBI_bgtBI_bgt_unIsBI_bgt_unBI_bleIsBI_bleBI_ble_unIsBI_ble_unBI_bltIsBI_bltBI_blt_unIsBI_blt_unBI_bne_unIsBI_bne_unBI_brfalseIsBI_brfalseBI_brtrueIsBI_brtrue_unique_BI_beq_unique_BI_bge_unique_BI_bge_un_unique_BI_bgt_unique_BI_bgt_un_unique_BI_ble_unique_BI_ble_un_unique_BI_blt_unique_BI_blt_un_unique_BI_bne_un_unique_BI_brfalse_unique_BI_brtrueget_BI_beqget_IsBI_beqget_BI_bgeget_IsBI_bgeget_BI_bge_unget_IsBI_bge_unget_BI_bgtget_IsBI_bgtget_BI_bgt_unget_IsBI_bgt_unget_BI_bleget_IsBI_bleget_BI_ble_unget_IsBI_ble_unget_BI_bltget_IsBI_bltget_BI_blt_unget_IsBI_blt_unget_BI_bne_unget_IsBI_bne_unget_BI_brfalseget_IsBI_brfalseget_BI_brtrueget_IsBI_brtrueAI_addIsAI_addAI_add_ovfIsAI_add_ovfAI_add_ovf_unIsAI_add_ovf_unAI_andIsAI_andAI_divIsAI_divAI_div_unIsAI_div_unAI_ceqIsAI_ceqAI_cgtIsAI_cgtAI_cgt_unIsAI_cgt_unAI_cltIsAI_cltAI_clt_unIsAI_clt_unIsAI_convIsAI_conv_ovfIsAI_conv_ovf_unAI_mulIsAI_mulAI_mul_ovfIsAI_mul_ovfAI_mul_ovf_unIsAI_mul_ovf_unAI_remIsAI_remAI_rem_unIsAI_rem_unAI_shlIsAI_shlAI_shrIsAI_shrAI_shr_unIsAI_shr_unAI_subIsAI_subAI_sub_ovfIsAI_sub_ovfAI_sub_ovf_unIsAI_sub_ovf_unAI_xorIsAI_xorAI_orIsAI_orAI_negIsAI_negAI_notIsAI_notAI_ldnullIsAI_ldnullAI_dupIsAI_dupAI_popIsAI_popAI_ckfiniteIsAI_ckfiniteAI_nopIsAI_nopIsAI_ldcIsI_ldargIsI_ldargaIsI_ldindIsI_ldlocIsI_ldlocaIsI_stargIsI_stindIsI_stlocIsI_brIsI_jmpIsI_brcmpIsI_switchI_retIsI_retIsI_callIsI_callvirtIsI_callconstraintIsI_calliIsI_ldftnIsI_newobjI_throwIsI_throwI_endfinallyIsI_endfinallyI_endfilterIsI_endfilterIsI_leaveI_rethrowIsI_rethrowIsI_ldsfldIsI_ldfldIsI_ldsfldaIsI_ldfldaIsI_stsfldIsI_stfldIsI_ldstrIsI_isinstIsI_castclassIsI_ldtokenIsI_ldvirtftnIsI_cpobjIsI_initobjIsI_ldobjIsI_stobjIsI_boxIsI_unboxIsI_unbox_anyIsI_sizeofIsI_ldelemIsI_stelemIsI_ldelemaIsI_ldelem_anyIsI_stelem_anyIsI_newarrI_ldlenIsI_ldlenIsI_mkrefanyI_refanytypeIsI_refanytypeIsI_refanyvalI_breakIsI_breakIsI_seqpointI_arglistIsI_arglistI_locallocIsI_locallocIsI_cpblkIsI_initblkIsEI_ilzeroIsEI_ldlen_multiIsI_other_unique_AI_add_unique_AI_add_ovf_unique_AI_add_ovf_un_unique_AI_and_unique_AI_div_unique_AI_div_un_unique_AI_ceq_unique_AI_cgt_unique_AI_cgt_un_unique_AI_clt_unique_AI_clt_un_unique_AI_mul_unique_AI_mul_ovf_unique_AI_mul_ovf_un_unique_AI_rem_unique_AI_rem_un_unique_AI_shl_unique_AI_shr_unique_AI_shr_un_unique_AI_sub_unique_AI_sub_ovf_unique_AI_sub_ovf_un_unique_AI_xor_unique_AI_or_unique_AI_neg_unique_AI_not_unique_AI_ldnull_unique_AI_dup_unique_AI_pop_unique_AI_ckfinite_unique_AI_nop_unique_I_ret_unique_I_throw_unique_I_endfinally_unique_I_endfilter_unique_I_rethrow_unique_I_ldlen_unique_I_refanytype_unique_I_break_unique_I_arglist_unique_I_locallocget_AI_addget_IsAI_addget_AI_add_ovfget_IsAI_add_ovfget_AI_add_ovf_unget_IsAI_add_ovf_unget_AI_andget_IsAI_andget_AI_divget_IsAI_divget_AI_div_unget_IsAI_div_unget_AI_ceqget_IsAI_ceqget_AI_cgtget_IsAI_cgtget_AI_cgt_unget_IsAI_cgt_unget_AI_cltget_IsAI_cltget_AI_clt_unget_IsAI_clt_unNewAI_convget_IsAI_convNewAI_conv_ovfget_IsAI_conv_ovfNewAI_conv_ovf_unget_IsAI_conv_ovf_unget_AI_mulget_IsAI_mulget_AI_mul_ovfget_IsAI_mul_ovfget_AI_mul_ovf_unget_IsAI_mul_ovf_unget_AI_remget_IsAI_remget_AI_rem_unget_IsAI_rem_unget_AI_shlget_IsAI_shlget_AI_shrget_IsAI_shrget_AI_shr_unget_IsAI_shr_unget_AI_subget_IsAI_subget_AI_sub_ovfget_IsAI_sub_ovfget_AI_sub_ovf_unget_IsAI_sub_ovf_unget_AI_xorget_IsAI_xorget_AI_orget_IsAI_orget_AI_negget_IsAI_negget_AI_notget_IsAI_notget_AI_ldnullget_IsAI_ldnullget_AI_dupget_IsAI_dupget_AI_popget_IsAI_popget_AI_ckfiniteget_IsAI_ckfiniteget_AI_nopget_IsAI_nopNewAI_ldcget_IsAI_ldcNewI_ldargget_IsI_ldargNewI_ldargaget_IsI_ldargaNewI_ldindget_IsI_ldindNewI_ldlocget_IsI_ldlocNewI_ldlocaget_IsI_ldlocaNewI_stargget_IsI_stargNewI_stindget_IsI_stindNewI_stlocget_IsI_stlocNewI_brget_IsI_brNewI_jmpget_IsI_jmpNewI_brcmpget_IsI_brcmpNewI_switchget_IsI_switchget_I_retget_IsI_retNewI_callget_IsI_callNewI_callvirtget_IsI_callvirtNewI_callconstraintget_IsI_callconstraintNewI_calliget_IsI_calliNewI_ldftnget_IsI_ldftnNewI_newobjget_IsI_newobjget_I_throwget_IsI_throwget_I_endfinallyget_IsI_endfinallyget_I_endfilterget_IsI_endfilterNewI_leaveget_IsI_leaveget_I_rethrowget_IsI_rethrowNewI_ldsfldget_IsI_ldsfldNewI_ldfldget_IsI_ldfldNewI_ldsfldaget_IsI_ldsfldaNewI_ldfldaget_IsI_ldfldaNewI_stsfldget_IsI_stsfldNewI_stfldget_IsI_stfldNewI_ldstrget_IsI_ldstrNewI_isinstget_IsI_isinstNewI_castclassget_IsI_castclassNewI_ldtokenget_IsI_ldtokenNewI_ldvirtftnget_IsI_ldvirtftnNewI_cpobjget_IsI_cpobjNewI_initobjget_IsI_initobjNewI_ldobjget_IsI_ldobjNewI_stobjget_IsI_stobjNewI_boxget_IsI_boxNewI_unboxget_IsI_unboxNewI_unbox_anyget_IsI_unbox_anyNewI_sizeofget_IsI_sizeofNewI_ldelemget_IsI_ldelemNewI_stelemget_IsI_stelemNewI_ldelemaget_IsI_ldelemaNewI_ldelem_anyget_IsI_ldelem_anyNewI_stelem_anyget_IsI_stelem_anyNewI_newarrget_IsI_newarrget_I_ldlenget_IsI_ldlenNewI_mkrefanyget_IsI_mkrefanyget_I_refanytypeget_IsI_refanytypeNewI_refanyvalget_IsI_refanyvalget_I_breakget_IsI_breakNewI_seqpointget_IsI_seqpointget_I_arglistget_IsI_arglistget_I_locallocget_IsI_locallocNewI_cpblkget_IsI_cpblkNewI_initblkget_IsI_initblkNewEI_ilzeroget_IsEI_ilzeroNewEI_ldlen_multiget_IsEI_ldlen_multiNewI_otherget_IsI_otherNewExt_instrinternalInstrExtIsinternalInstrExtDestsinternalInstrExtFallthroughinternalInstrExtIsTailcallinternalInstrExtRelabelinternalInstrExtIs@internalInstrExtDests@internalInstrExtFallthrough@internalInstrExtIsTailcall@internalInstrExtRelabel@get_internalInstrExtIsget_internalInstrExtDestsget_internalInstrExtFallthroughget_internalInstrExtIsTailcallget_internalInstrExtRelabelinstrExtDestsinstrExtFallthroughinstrExtIsTailcallinstrExtRelabelinstrExtDests@instrExtFallthrough@instrExtIsTailcall@instrExtRelabel@get_instrExtDestsget_instrExtFallthroughget_instrExtIsTailcallget_instrExtRelabelLocalIndexLocalNameLocalIndex@LocalName@get_LocalIndexget_LocalNamelocalIndexlocalNameInstructionsLastInstructionFallthroughLabel@Instructions@get_Labelget_Instructionsinstructionsget_LastInstructionget_FallthroughIsILBasicBlockIsGroupBlockIsRestrictBlockIsTryBlockNewILBasicBlockget_IsILBasicBlockNewGroupBlockget_IsGroupBlockNewRestrictBlockget_IsRestrictBlockNewTryBlockget_IsTryBlockIsFaultBlockIsFinallyBlockIsFilterCatchBlockNewFaultBlockget_IsFaultBlockNewFinallyBlockget_IsFinallyBlockNewFilterCatchBlockget_IsFilterCatchBlockIsTypeFilterIsCodeFilterNewTypeFilterget_IsTypeFilterNewCodeFilterget_IsCodeFilterIsPinnedIsPinned@get_IsPinnedMaxStackNoInliningSourceMarkerIsZeroInit@MaxStack@NoInlining@Code@SourceMarker@get_MaxStackget_NoInliningget_SourceMarkerisZeroInitnoInliningsourceMarkerCompilerControlledIsCompilerControlledFamilyAndAssemblyFamilyOrAssemblyFamily_unique_Assembly_unique_CompilerControlled_unique_FamilyAndAssembly_unique_FamilyOrAssembly_unique_Familyget_CompilerControlledget_IsCompilerControlledget_FamilyAndAssemblyget_FamilyOrAssemblyget_FamilyIsInt8IsUInt8NewInt8get_IsInt8NewUInt8get_IsUInt8IsCustomIsFixedSysStringIsFixedArrayCurrencyIsCurrencyLPSTRIsLPSTRLPWSTRIsLPWSTRLPTSTRIsLPTSTRByValStrIsByValStrTBSTRIsTBSTRLPSTRUCTIsLPSTRUCTStructIntIsIntUIntIsUIntAsAnyIsAsAnyBSTRIsBSTRIUnknownIsIUnknownIDispatchIsIDispatchIsSafeArrayANSIBSTRIsANSIBSTRVariantBoolIsVariantBool_unique_Currency_unique_LPSTR_unique_LPWSTR_unique_LPTSTR_unique_ByValStr_unique_TBSTR_unique_LPSTRUCT_unique_Struct_unique_Bool_unique_Int8_unique_Int16_unique_Int32_unique_Int64_unique_Single_unique_Double_unique_UInt16_unique_UInt32_unique_UInt64_unique_Int_unique_UInt_unique_Method_unique_AsAny_unique_BSTR_unique_IUnknown_unique_IDispatch_unique_ANSIBSTR_unique_VariantBoolNewCustomget_IsCustomNewFixedSysStringget_IsFixedSysStringNewFixedArrayget_IsFixedArrayget_Currencyget_IsCurrencyget_LPSTRget_IsLPSTRget_LPWSTRget_IsLPWSTRget_LPTSTRget_IsLPTSTRget_ByValStrget_IsByValStrget_TBSTRget_IsTBSTRget_LPSTRUCTget_IsLPSTRUCTget_Structget_Boolget_Int8get_Int16get_Int32get_Int64get_Singleget_Doubleget_UInt16get_UInt32get_UInt64get_Intget_IsIntget_UIntget_IsUIntget_AsAnyget_IsAsAnyget_BSTRget_IsBSTRget_IUnknownget_IsIUnknownget_IDispatchget_IsIDispatchNewSafeArrayget_IsSafeArrayget_ANSIBSTRget_IsANSIBSTRget_VariantBoolget_IsVariantBoolVariantIsVariantDateIsDateHRESULTIsHRESULTCArrayIsCArrayUserDefinedIsUserDefinedFileTimeIsFileTimeIsStreamStorageIsStorageStreamedObjectIsStreamedObjectStoredObjectIsStoredObjectBlobObjectIsBlobObjectCFIsCFCLSIDIsCLSIDPTRIsPTRIsVector_unique_Variant_unique_Decimal_unique_Date_unique_SafeArray_unique_HRESULT_unique_CArray_unique_UserDefined_unique_Record_unique_FileTime_unique_Stream_unique_Storage_unique_StreamedObject_unique_StoredObject_unique_BlobObject_unique_CF_unique_CLSID_unique_UInt8_unique_PTRget_Variantget_IsVariantget_Decimalget_Dateget_IsDateget_SafeArrayget_HRESULTget_IsHRESULTget_CArrayget_IsCArrayget_UserDefinedget_IsUserDefinedget_Recordget_FileTimeget_IsFileTimeget_Streamget_IsStreamget_Storageget_IsStorageget_StreamedObjectget_IsStreamedObjectget_StoredObjectget_IsStoredObjectget_BlobObjectget_IsBlobObjectget_CFget_IsCFget_CLSIDget_IsCLSIDget_UInt8get_PTRget_IsPTRNewVectorget_IsVectorRequestIsRequestDemandIsDemandDenyIsDenyPermitOnlyIsPermitOnlyLinkCheckIsLinkCheckInheritCheckIsInheritCheckReqMinIsReqMinReqOptIsReqOptReqRefuseIsReqRefusePreJitGrantIsPreJitGrantPreJitDenyIsPreJitDenyNonCasDemandIsNonCasDemandNonCasLinkDemandIsNonCasLinkDemandNonCasInheritanceIsNonCasInheritanceLinkDemandChoiceIsLinkDemandChoiceInheritanceDemandChoiceIsInheritanceDemandChoiceDemandChoiceIsDemandChoice_unique_Request_unique_Demand_unique_Assert_unique_Deny_unique_PermitOnly_unique_LinkCheck_unique_InheritCheck_unique_ReqMin_unique_ReqOpt_unique_ReqRefuse_unique_PreJitGrant_unique_PreJitDeny_unique_NonCasDemand_unique_NonCasLinkDemand_unique_NonCasInheritance_unique_LinkDemandChoice_unique_InheritanceDemandChoice_unique_DemandChoiceget_Requestget_IsRequestget_Demandget_IsDemandget_Assertget_Denyget_IsDenyget_PermitOnlyget_IsPermitOnlyget_LinkCheckget_IsLinkCheckget_InheritCheckget_IsInheritCheckget_ReqMinget_IsReqMinget_ReqOptget_IsReqOptget_ReqRefuseget_IsReqRefuseget_PreJitGrantget_IsPreJitGrantget_PreJitDenyget_IsPreJitDenyget_NonCasDemandget_IsNonCasDemandget_NonCasLinkDemandget_IsNonCasLinkDemandget_NonCasInheritanceget_IsNonCasInheritanceget_LinkDemandChoiceget_IsLinkDemandChoiceget_InheritanceDemandChoiceget_IsInheritanceDemandChoiceget_DemandChoiceget_IsDemandChoiceNewPermissionSetIsSecurityDeclsIsSecurityDeclsLazyNewSecurityDeclsget_IsSecurityDeclsNewSecurityDeclsLazyget_IsSecurityDeclsLazyUseAssemblyIsUseAssemblyEnabledIsEnabledDisabledIsDisabled_unique_UseAssembly_unique_Enabled_unique_Disabledget_UseAssemblyget_IsUseAssemblyget_Enabledget_IsEnabledget_Disabledget_IsDisabledCdeclIsCdeclStdcallIsStdcallThiscallIsThiscallFastcallIsFastcallWinApiIsWinApi_unique_Cdecl_unique_Stdcall_unique_Thiscall_unique_Fastcall_unique_WinApiget_Cdeclget_IsCdeclget_Stdcallget_IsStdcallget_Thiscallget_IsThiscallget_Fastcallget_IsFastcallget_WinApiget_IsWinApiAnsiIsAnsiUnicodeIsUnicodeAutoIsAuto_unique_Ansi_unique_Unicode_unique_Autoget_Ansiget_IsAnsiget_IsUnicodeget_Autoget_IsAutoWhereCharEncodingNoMangleLastErrorThrowOnUnmappableCharCharBestFitWhere@CharEncoding@NoMangle@LastError@ThrowOnUnmappableChar@CharBestFit@get_Whereget_CharEncodingget_NoMangleget_LastErrorget_ThrowOnUnmappableCharget_CharBestFitwherecharEncodingnoManglelastErrorthrowOnUnmappableCharcharBestFitDefault@Marshal@IsIn@IsOut@IsOptional@CustomAttrs@get_Marshalget_CustomAttrsdefaultmarshalcustomAttrsNewOverridesSpecIsCheckAccessOnOverrideIsNewSlot@IsCheckAccessOnOverride@IsAbstract@get_IsCheckAccessOnOverrideisCheckAccessOnOverrideisAbstractCctorIsCctorNonVirtualIsNonVirtual_unique_Cctor_unique_NonVirtualget_Cctorget_IsCctorget_NonVirtualget_IsNonVirtualNewVirtualIsILIsPInvokeAbstractNativeIsNative_unique_Abstract_unique_NativeNewILget_IsILNewPInvokeget_IsPInvokeget_Abstractget_Nativeget_IsNativeNewILLazyMethodBodyRuntimeIsRuntime_unique_IL_unique_Runtimeget_ILget_Runtimeget_IsRuntimeNonVariantIsNonVariantCoVariantIsCoVariantContraVariantIsContraVariant_unique_NonVariant_unique_CoVariant_unique_ContraVariantget_NonVariantget_IsNonVariantget_CoVariantget_IsCoVariantget_ContraVariantget_IsContraVariantVarianceHasReferenceTypeConstraintHasNotNullableValueTypeConstraintHasDefaultConstructorConstraintConstraints@Variance@HasReferenceTypeConstraint@HasNotNullableValueTypeConstraint@HasDefaultConstructorConstraint@get_Varianceget_HasReferenceTypeConstraintget_HasNotNullableValueTypeConstraintget_HasDefaultConstructorConstraintvariancehasReferenceTypeConstrainthasNotNullableValueTypeConstrainthasDefaultConstructorConstraintmdKindAccessmdBodymdCodeKindIsInternalCallIsManagedIsForwardRefHasSecurityIsEntryPointIsReqSecObjIsUnmanagedExportIsSynchronizedIsPreserveSigIsMustRunIsNoInlineGenericParamsParameterTypesIsClassInitializerIsNonVirtualInstancemdKind@Return@Access@mdBody@mdCodeKind@IsInternalCall@IsManaged@IsForwardRef@SecurityDecls@HasSecurity@IsEntryPoint@IsReqSecObj@IsHideBySig@IsSpecialName@IsUnmanagedExport@IsSynchronized@IsPreserveSig@IsMustRun@IsNoInline@GenericParams@get_mdKindget_Accessget_mdBodyget_mdCodeKindget_IsInternalCallget_IsManagedget_IsForwardRefget_SecurityDeclsget_HasSecurityget_IsEntryPointget_IsReqSecObjget_IsUnmanagedExportget_IsSynchronizedget_IsPreserveSigget_IsMustRunget_IsNoInlineget_GenericParamsreturnisInternalCallisManagedisForwardRefsecurityDeclshasSecurityisEntryPointisReqSecObjisHideBySigisSpecialNameisUnmanagedExportisSynchronizedisPreserveSigisMustRunisNoInlinegenericParamsget_ParameterTypesget_MethodBodyget_IsClassInitializerget_IsNonVirtualInstanceNewMethodsFindByNameFindByNameAndArityIsRTSpecialNameFireMethodOtherMethodsIsRTSpecialName@AddMethod@RemoveMethod@FireMethod@OtherMethods@get_IsRTSpecialNameget_FireMethodget_OtherMethodsisRTSpecialNameaddMethodremoveMethodfireMethodotherMethodsNewEventsLookupByNameSetMethodInitSetMethod@GetMethod@Init@Args@get_SetMethodget_GetMethodget_Initget_ArgssetMethodgetMethodNewPropertiesNotSerializedIsStatic@LiteralValue@NotSerialized@IsLiteral@IsInitOnly@get_NotSerializedliteralValuenotSerializedisInitOnlyNewFieldsOverridesOverrideByOverrides@OverrideBy@get_Overridesget_OverrideByNewMethodImplsIsExplicitNewExplicitget_IsExplicitPackSize@Pack@get_PackBeforeFieldIsBeforeFieldOnAnyIsOnAny_unique_BeforeField_unique_OnAnyget_BeforeFieldget_IsBeforeFieldget_OnAnyget_IsOnAnyIsNestedNewNestedget_IsNestedDelegateIsOther_unique_ValueType_unique_Enum_unique_Delegateget_ValueTypeget_Enumget_DelegateNewOtherget_IsOtherNewExt_type_def_kindinternalTypeDefKindExtIsinternalTypeDefKindExtIs@get_internalTypeDefKindExtIstdKindIsSerializableIsComInteropNestedTypesImplementsExtendsFieldsMethodImplsInitSemanticsEventsPropertiestdKind@IsSerializable@IsComInterop@Layout@Encoding@NestedTypes@Implements@Extends@Fields@MethodImpls@InitSemantics@Events@Properties@get_tdKindget_IsSerializableget_IsComInteropget_Layoutget_NestedTypesget_Implementsget_Extendsget_Fieldsget_MethodImplsget_InitSemanticsget_Eventsget_PropertiesisSerializableisComInteropencodingimplementsmethodImplsinitSemanticspropertiesAsListOfLazyTypeDefsNewTypeDefTableget_AsListOfLazyTypeDefsNewILNestedExportedTypesIsForwarderScopeRef@IsForwarder@get_IsForwarderscopeRefisForwarderNewILExportedTypesAndForwardersIsFileNewFileget_IsFileLocationLocation@locationNewILResourcesUnspecifiedIsUnspecifiedIsLibraryPlatformAppDomainIsPlatformAppDomainPlatformProcessIsPlatformProcessPlatformSystemIsPlatformSystem_unique_Unspecified_unique_Library_unique_PlatformAppDomain_unique_PlatformProcess_unique_PlatformSystemget_Unspecifiedget_IsUnspecifiedget_Libraryget_IsLibraryget_PlatformAppDomainget_IsPlatformAppDomainget_PlatformProcessget_IsPlatformProcessget_PlatformSystemget_IsPlatformSystemAuxModuleHashAlgorithmAssemblyLongevityDisableJitOptimizationsJitTrackingExportedTypesEntrypointElsewhereAuxModuleHashAlgorithm@PublicKey@Version@Locale@AssemblyLongevity@DisableJitOptimizations@JitTracking@Retargetable@ExportedTypes@EntrypointElsewhere@get_AuxModuleHashAlgorithmget_AssemblyLongevityget_DisableJitOptimizationsget_JitTrackingget_ExportedTypesget_EntrypointElsewhereauxModuleHashAlgorithmassemblyLongevityentrypointElsewhereManifestTypeDefsSubsystemVersionUseHighEntropyVASubSystemFlagsIsDLLIsILOnlyPlatformStackReserveSizeIs32BitIs32BitPreferredIs64BitVirtualAlignmentPhysicalAlignmentImageBaseMetadataVersionResourcesNativeResourcesManifestOfAssemblyHasManifestManifest@TypeDefs@SubsystemVersion@UseHighEntropyVA@SubSystemFlags@IsDLL@IsILOnly@Platform@StackReserveSize@Is32Bit@Is32BitPreferred@Is64Bit@VirtualAlignment@PhysicalAlignment@ImageBase@MetadataVersion@Resources@NativeResources@get_Manifestget_TypeDefsget_SubsystemVersionget_UseHighEntropyVAget_SubSystemFlagsget_IsDLLget_IsILOnlyget_Platformget_StackReserveSizeget_Is32Bitget_Is32BitPreferredget_Is64Bitget_VirtualAlignmentget_PhysicalAlignmentget_ImageBaseget_MetadataVersionget_Resourcesget_NativeResourcesmanifestsubSystemFlagsisDLLisILOnlyis32BitPreferredis64BitvirtualAlignmentphysicalAlignmentimageBasenativeResourcesget_ManifestOfAssemblyget_HasManifestTypeDefKindExtension_unique_TypeDefKindExtension_n_gaetdtref_Objecttspec_Objecttyp_Objecttref_Stringtyp_Stringtyp_StringBuildertyp_AsyncCallbacktyp_IAsyncResulttyp_IComparabletref_Typetyp_Typetyp_Missingtyp_Activatortyp_Delegatetyp_ValueTypetyp_Enumtspec_TypedReferencetyp_TypedReferencetyp_MulticastDelegatetyp_Arraytspec_Int64tspec_UInt64tspec_Int32tspec_UInt32tspec_Int16tspec_UInt16tspec_SBytetspec_Bytetspec_Singletspec_Doubletspec_IntPtrtspec_UIntPtrtspec_Chartspec_Booltyp_int8typ_int16typ_int32typ_int64typ_uint8typ_uint16typ_uint32typ_uint64typ_float32typ_float64typ_booltyp_chartyp_IntPtrtyp_UIntPtrtyp_RuntimeArgumentHandletyp_RuntimeTypeHandletyp_RuntimeMethodHandletyp_RuntimeFieldHandletyp_Bytetyp_Int16typ_Int32typ_Int64typ_SBytetyp_UInt16typ_UInt32typ_UInt64typ_Singletyp_Doubletyp_Booltyp_Chartyp_SerializationInfotyp_StreamingContexttref_SecurityPermissionAttributetspec_Exceptiontyp_ExceptiongeneratedAttribsCachedebuggerBrowsableNeverAttributeCachedebuggerTypeProxyAttributeCachemscorlibScopeRef@tref_Object@tspec_Object@typ_Object@tref_String@typ_String@typ_StringBuilder@typ_AsyncCallback@typ_IAsyncResult@typ_IComparable@tref_Type@typ_Type@typ_Missing@typ_Activator@typ_Delegate@typ_ValueType@typ_Enum@tspec_TypedReference@typ_TypedReference@typ_MulticastDelegate@typ_Array@tspec_Int64@tspec_UInt64@tspec_Int32@tspec_UInt32@tspec_Int16@tspec_UInt16@tspec_SByte@tspec_Byte@tspec_Single@tspec_Double@tspec_IntPtr@tspec_UIntPtr@tspec_Char@tspec_Bool@typ_int8@typ_int16@typ_int32@typ_int64@typ_uint8@typ_uint16@typ_uint32@typ_uint64@typ_float32@typ_float64@typ_bool@typ_char@typ_IntPtr@typ_UIntPtr@typ_RuntimeArgumentHandle@typ_RuntimeTypeHandle@typ_RuntimeMethodHandle@typ_RuntimeFieldHandle@typ_Byte@typ_Int16@typ_Int32@typ_Int64@typ_SByte@typ_UInt16@typ_UInt32@typ_UInt64@typ_Single@typ_Double@typ_Bool@typ_Char@typ_SerializationInfo@typ_StreamingContext@tref_SecurityPermissionAttribute@tspec_Exception@typ_Exception@generatedAttribsCache@debuggerBrowsableNeverAttributeCache@debuggerTypeProxyAttributeCache@get_mscorlibScopeRefget_tref_Objectget_tspec_Objectget_typ_Objectget_tref_Stringget_typ_Stringget_typ_StringBuilderget_typ_AsyncCallbackget_typ_IAsyncResultget_typ_IComparableget_tref_Typeget_typ_Typeget_typ_Missingget_typ_Activatorget_typ_Delegateget_typ_ValueTypeget_typ_Enumget_tspec_TypedReferenceget_typ_TypedReferenceget_typ_MulticastDelegateget_typ_Arrayget_tspec_Int64get_tspec_UInt64get_tspec_Int32get_tspec_UInt32get_tspec_Int16get_tspec_UInt16get_tspec_SByteget_tspec_Byteget_tspec_Singleget_tspec_Doubleget_tspec_IntPtrget_tspec_UIntPtrget_tspec_Charget_tspec_Boolget_typ_int8get_typ_int16get_typ_int32get_typ_int64get_typ_uint8get_typ_uint16get_typ_uint32get_typ_uint64get_typ_float32get_typ_float64get_typ_boolget_typ_charget_typ_IntPtrget_typ_UIntPtrget_typ_RuntimeArgumentHandleget_typ_RuntimeTypeHandleget_typ_RuntimeMethodHandleget_typ_RuntimeFieldHandleget_typ_Byteget_typ_Int16get_typ_Int32get_typ_Int64get_typ_SByteget_typ_UInt16get_typ_UInt32get_typ_UInt64get_typ_Singleget_typ_Doubleget_typ_Boolget_typ_Charget_typ_SerializationInfoget_typ_StreamingContextget_tref_SecurityPermissionAttributeget_tspec_Exceptionget_typ_Exceptionget_generatedAttribsCacheget_debuggerBrowsableNeverAttributeCacheget_debuggerTypeProxyAttributeCacheset_generatedAttribsCacheset_debuggerBrowsableNeverAttributeCacheset_debuggerTypeProxyAttributeCachenumPreallocnewLocalspreAllocIsFinallyIsFaultIsFilterCatchIsTypeCatchNewFinallyget_IsFinallyNewFaultget_IsFaultNewFilterCatchget_IsFilterCatchNewTypeCatchget_IsTypeCatchexnRangeexnClausesexnRange@exnClauses@get_exnRangeget_exnClauseslocRangelocInfoslocRange@locInfos@get_locRangeget_locInfosIsSEHIsLOCALNewSEHget_IsSEHNewLOCALget_IsLOCALInitialCodeLabelBasicBlockStartPositionsBasicBlockStartCodeLabelslab2clMappc2clMapcl0bbstart_code_labs@3506bbstartPcs@3506get_InitialCodeLabelget_BasicBlockStartPositionsget_BasicBlockStartCodeLabelsbbLabpc2clremapLabelsaddBBstartPcclsespecbbstart_lablabelsToRangelrange_inside_lrangels1ls2disjoint_lrangesclause_inside_lrangelrclauses_inside_lrangetryspec_inside_lrangetryspec1tryspec_inside_clauselocspec_inside_clauselocspec1tryspec_inside_tryspectryspec2locspec_inside_tryspectryspec_inside_locspeclocspec2disjoint_clause_and_lrangedisjoint_clauses_and_lrangedisjoint_tryspec_and_lrangedisjoint_tryspec_and_clausetryspec_disjoint_from_tryspectryspec_disjoint_from_locspeclocspec_disjoint_from_locspeclocspec_inside_locspecstructspec_inside_structspecspecAspecBextent_structspecstring_of_structspeclr1extent_lrangeflt_tryspecremaining_entriesmorphedBlocksenumValuesenumTypeenumValues@enumType@get_enumValuesget_enumTypeelemTypefixedArgnamedArgtstringcurrentPosnilParseTypeParseTypeSpecresetpeekpeekNherestepdroptakeAssemblyReferencesModuleReferencesAssemblyReferences@ModuleReferences@get_AssemblyReferencesget_ModuleReferencesassemblyReferencesmoduleReferencesrefsArefsMrefsA@refsM@get_refsAget_refsMerAerBerA@erB@get_erAget_erBprAprBprA@prB@get_prAget_prBmapiisEmptytoArrayofArrayiterinthlengthsEqAndForall2k0to19k20to39k40to59k60to79get_k0to19get_k20to39get_k40to59get_k60to79rot_left32sha_after_eof$cont@239shasha_after_eofsha_read8sha_read32sha1_hashNewSHABytesstream@eof@get_streamget_eofset_eofrunningOnMono@33int_order@48memoizeNamespaceTable@78memoizeNamespaceRightTable@81memoizeNamespaceArrayTable@94emptyStringArray@112AssemblyRefUniqueStampGenerator@444emptyILTypes@769emptyILGenericArgs@770instrExtensions@1118emptyILLocals@1182emptyILParameters@1394type_def_kind_extensions@1898emptyILCustomAttrs@2016empty@2040codeLabelGenerator@2219emptyILSecurityDecls@2265emptyILTypeDefs@2336emptyILMethods@2354mkLdarg0@2515ecmaPublicKey@2759ecmaMscorlibScopeRef@2761ecmaILGlobals@2763mkILVoidReturn@2968emptyILFields@3240emptyILEvents@3244emptyILProperties@3248emptyILMethodImpls@3273emptyILRefs@4700tspan@4920get_TicksDotNetFrameworkReferenceAssembliesRootDirectorymatchValue@62CompareTo$cont@48-2CompareTo$cont@48-3GetHashCode$cont@48get_DotNetFrameworkReferenceAssembliesRootDirectoryget_matchValue@62ReplaceFrameworkVariablesdirsDeriveTargetFrameworkDirectoriestargetFrameworkVersionexcludeNonExecutableAssemblieslogmessageDecodeResolvedFromCompareTo$cont@112-4CompareTo$cont@112-5GetHashCode$cont@112-1logmessage@144foregroundedbackgroundExceptionlogwarning@154logwarninglogerror@164logerrorMicrosoft.Build.TasksMicrosoft.Build.Tasks.v4.0Microsoft.Build.UtilitiesMicrosoft.Build.Utilities.v4.0set_BuildEngineset_TargetFrameworkDirectoriesset_FindRelatedFilesset_FindDependenciesset_FindSatellitesset_FindSerializationAssembliesset_TargetProcessorArchitectureset_Assembliesset_SearchPathsset_AllowedAssemblyExtensionsResolveCorefsharpCoreExplicitDirOrFSharpBinariesDirexplicitIncludeDirsframeworkRegistryBaseassemblyFoldersSuffixassemblyFoldersConditionsallowRawFileNamef@1-2CallResolveCore@322AssemblyFoldersIsAssemblyFoldersAssemblyFoldersExIsAssemblyFoldersExTargetFrameworkDirectoryIsTargetFrameworkDirectoryRawFileNameIsRawFileNameGlobalAssemblyCacheIsGlobalAssemblyCacheIsPath_unique_AssemblyFolders_unique_AssemblyFoldersEx_unique_TargetFrameworkDirectory_unique_RawFileName_unique_GlobalAssemblyCacheget_AssemblyFoldersget_IsAssemblyFoldersget_AssemblyFoldersExget_IsAssemblyFoldersExget_TargetFrameworkDirectoryget_IsTargetFrameworkDirectoryget_RawFileNameget_IsRawFileNameget_GlobalAssemblyCacheget_IsGlobalAssemblyCacheNewPathget_IsPathCompileTimeLikeIsCompileTimeLikeRuntimeLikeIsRuntimeLikeDesigntimeLikeIsDesigntimeLike_unique_CompileTimeLike_unique_RuntimeLike_unique_DesigntimeLikeget_CompileTimeLikeget_IsCompileTimeLikeget_RuntimeLikeget_IsRuntimeLikeget_DesigntimeLikeget_IsDesigntimeLikeitemSpecbaggageitemSpec@baggage@get_itemSpecget_baggageresolvedFilesreferenceDependencyPathsrelatedPathsreferenceSatellitePathsreferenceScatterPathsreferenceCopyLocalPathssuggestedBindingRedirectsresolvedFiles@referenceDependencyPaths@relatedPaths@referenceSatellitePaths@referenceScatterPaths@referenceCopyLocalPaths@suggestedBindingRedirects@get_resolvedFilesget_referenceDependencyPathsget_relatedPathsget_referenceSatellitePathsget_referenceScatterPathsget_referenceCopyLocalPathsget_suggestedBindingRedirectswindowsFrameworkIsForegroundedMessageIsForegroundedErrorIsForegroundedWarningNewForegroundedMessageget_IsForegroundedMessageNewForegroundedErrorget_IsForegroundedErrorNewForegroundedWarningget_IsForegroundedWarningMicrosoft-Build-Framework-IBuildEngine-BuildProjectFileIDictionarytargetNamesglobalPropertiestargetOutputsBuildEventArgsMicrosoft-Build-Framework-IBuildEngine-LogCustomEventCustomBuildEventArgsBuildErrorEventArgsMicrosoft-Build-Framework-IBuildEngine-LogErrorEventMicrosoft-Build-Framework-IBuildEngine-LogMessageEventBuildMessageEventArgsBuildWarningEventArgsMicrosoft-Build-Framework-IBuildEngine-LogWarningEventMicrosoft-Build-Framework-IBuildEngine-get_ColumnNumberOfTaskNodeMicrosoft-Build-Framework-IBuildEngine-get_LineNumberOfTaskNodeMicrosoft-Build-Framework-IBuildEngine-get_ContinueOnErrorMicrosoft-Build-Framework-IBuildEngine-get_ProjectFileOfTaskNodeBuildProjectFileLogCustomEventLogErrorEventLogMessageEventLogWarningEventget_ColumnNumberOfTaskNodeget_ContinueOnErrorget_LineNumberOfTaskNodeget_ProjectFileOfTaskNodeeidreferenceNameTaskItemSetMetadatararget_ResolvedFilesget_ItemSpecGetMetadataget_ResolvedDependencyFilesget_RelatedFilesget_SatelliteFilesget_ScatterFilesget_CopyLocalFilesget_SuggestedRedirectsDotNetFrameworkReferenceAssembliesRootDirectory@58diagnosticsLogget_diagnosticsLogdflushndflushdprintnPrintFormatToTextWriterThendprintfdprintfnsetDiagnosticsChanneldiagnosticsLog@23zeroCreateblitofInt32ArraystringAsUtf8NullTerminatedstringAsUnicodeNullTerminatedordaddListaddFlatListsingletonsubsetequalelementsunioninterdiffmemberOffirstfoldSectionfmapchoosechooseLofFlatListkeysillegalPathCharsget_illegalPathCharsCharEnumeratorcheckPathForIllegalCharscheckSuffixHasExtensionhasExtensionchopExtensiondirectoryNamefileNameOfPathfileNameWithoutExtensionillegalPathChars@20eventuallyop_GreaterGreaterGreaterAmpnotlazyisSomeisNoneisNilnonNilisNullisNonNullnonNullop_EqualsEqualsEqualsfoldOnnotFoundgetHoleget_eventuallyf@1-1IsDoneIsNotYetDoneget_IsDoneNewNotYetDoneget_IsNotYetDonehandlerencodeTabnItemsEncodecanMemoizeUndefinedundefinedinit@745-2get_UndefinedfuncOrExceptionIsDelayedIsForcedvalue@funcOrException@findOriginalException@get_valueget_funcOrExceptionget_findOriginalExceptionset_valueset_funcOrExceptionNotLazyget_IsDelayedget_IsForcedUnsynchronizedForceDefaultAugmentationAttributeElementsinit@1117-3xqueuexentriesxdictget_Elementskvsinit@1232-4get_FileSystemset_FileSystemEncoding.GetEncodingShim.StaticFileStreamReadShimFileStreamCreateShimGetFullPathShimSafeGetFullPathIsPathRootedShimIsInvalidFilenameGetTempPathShimGetLastWriteTimeShimSafeExistsFileDeleteReadReadAllBytesShimLoadFromAssemblyLoadFromAssemblyLoadReadAllBytesGetFullPathIsPathRootedGetInvalidFileNameCharsGetTempPathGetLastWriteTimeexistsInRangeinitByrangeReversingEachBucketchooseRangeofKeyedListlayerlayerAdditiveaddfunionfsubfold2errfsuball2mapFoldfoldBackRangefilterRangemapFilterpartitiontryFindInRangememoizeforceWhileget_ElapsedMillisecondsStoploop@636-20timeShareInMillisecondsrunnerrunTimeShare@632repeatedlyProgressUntilDoneOrTimeShareOvercatchtryFinallytryWithworkeltOrdermapqtryFindMulticreateindexNotFoundmakesubrindexlowercaseuppercaseisUppercapitalizeuncapitalizetryDropPrefixtryDropSuffixhasPrefixdropPrefixdropSuffixsortWithOrdersplit_after_acc@181splitAfterloop@185-13existsifindiloop@199-14choploop@208-15ch@222selectsplitChoosecheck@238-1loop@246-16frontAndBackloop@256-17tryRemoveheadAndTailzip4l3l4unzip4iter3loop@287-18takeUntilloop@296-19replicateassocmemAssocmemqmapfoldBackmn@362mapNthuntilrepeatArepeatmapHeadTailfheadftailcollectFoldfmapAcollect2iterSquaredcollectSquaredmapSquaredmapfoldSquaredforallSquaredmapiSquaredexistsSquared|NonEmpty|Empty|loop@79-9arr1arr2forall2loop@114-10forallFrom@122loop@125-11existsOnelook@133findFirstIndexWhereTrueorderByorderOnpxOrdertoFunctionorder@428eventually@691FileSystem@1478collectfold2foldBack2map2iter2sumsumByunzipphysicalEqualityconcattoMapziprebalance$cont@775-1t1hrebalancesizeAuxMapOnepartition1partitionAuxfilter1filterAuxspliceOutSuccessorforAllfold_from_to@993foldMapmkFromEnumeratortoSeqCurrentstartedcollapseLHSalreadyFinishednotStartedSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextSystem-Collections-IEnumerator-Resettoleranceget_tolerancehlhrrebalance$cont@99t2hbalancesplitpivotelementsAuxdiffAuxcountAuxintersectionAux|MatchSetNode|MatchSetEmpty|nextElemContprevElemContminimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcompareStackscompareloop@553-8copyToArrayk2kvp1kvp2start1start2arrsfillcopyadd@64loop@96-1loop@101-2loop@107-3loop@114-4tryPickloop@122-5revComparison`1sortsortByloop@199-6exists2go@203go@207-1findIndexifoldSubfoldBackSubreducereduceBackloop@253-7iteri2mapi2scanBackSubscanSubscanscanBackgo@303-2tryFindIndexgo@307-3tryFindIndexiparse_erroranyMarkershiftFlagreduceFlagerrorFlagacceptFlagactionMaskget_anyMarkerget_shiftFlagget_reduceFlagget_errorFlagget_acceptFlagget_actionMaskpopStackUntilErrorShifted@270valueStackactionTabletokenOptinterpretoffsetTabelemTabcacheSizeReadAssocminElemNummaxElemNumdefaultValueOfAssockeyToFindrowNumberReadAllfirstElemNumbernumberOfElementsInAssocnumberOfElementsstartPos@endPos@get_startPosget_endPosdefaultActionexplicittag0stateToProdIdxsTablestartInterpretafterRefillendOfScanCompareTo$cont@24CompareTo$cont@24-1loop@210baseForSpecificUnicodeCharsextensionstaticInvokeFlagsget_staticInvokeFlagsget_funTyCcapture@82-3DeclareResourceStringFormatfmtStringGetObjectfunTyC@43nullLmeasureLtypeUsesSystemObjectToStringcatchExnf@1fitLeaf@509fit@486leafFormatteraddText@568rstrsnewLine@571addL@578z_0z_1newLine@614-1addL@621-1outAttributeunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LformatCharisCharcheck@742conv@743formatStringformatStringInWidthwidthcountNodes@795stopShort@796objL@799showModedepthLimsameObjL@800objWithReprL@802showMode@802recdAtomicTupleL@884bracketIfL@890basicLproject2@972n1n2possibleKeyValueL@989objLitemL@901-2project@911-1GetLowerBoundGetLengthreprL@893showMode@893-1anyLIsNaNIsNegativeInfinityIsPositiveInfinityany_to_layoutsquash_layoutoutput_layoutlayout_to_stringoutput_anylayout_as_stringany_to_stringfsi_any_to_layoutBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowAllIsShowAllShowTopLevelBindingIsShowTopLevelBinding_unique_ShowAll_unique_ShowTopLevelBindingget_ShowAllget_IsShowAllget_ShowTopLevelBindingget_IsShowTopLevelBindingInternal-Utilities-StructuredFormat-IEnvironment-GetLayoutInternal-Utilities-StructuredFormat-IEnvironment-get_MaxColumnsInternal-Utilities-StructuredFormat-IEnvironment-get_MaxRowsinterceptSystem-Collections-IComparer-ComparenDepthty@1ty@1-1equivHeadTypesget_optionget_ty@1get_funcget_ty@1-1GetUnionCasesisListTypeIsTupleTypeIsFunctionTypeIsRecordTypeIsSumTypeUnitTypeIsUnitTypeIsObjectType_unique_UnitTypeNewTupleTypeget_IsTupleTypeNewFunctionTypeget_IsFunctionTypeNewRecordTypeget_IsRecordTypeNewSumTypeget_IsSumTypeget_UnitTypeget_IsUnitTypeNewObjectTypeget_IsObjectTypeIsFunctionClosureValueIsRecordValueIsConstructorValueIsExceptionValueUnitValueIsUnitValueIsObjectValue_unique_UnitValueNewFunctionClosureValueget_IsFunctionClosureValueNewRecordValueget_IsRecordValueNewConstructorValueget_IsConstructorValueNewExceptionValueget_IsExceptionValueget_UnitValueget_IsUnitValueNewObjectValueget_IsObjectValueIsExceptionRepresentationGetExceptionFieldsGetRecordFieldsGetValueInfoOfObject$cont@365reprtyIsFunctionGetUnionFieldsGetValueInfoOfObjectGetValueInfolayout1layout2tagAttrLmapsprocess'@175layoutsselectorsquareBracketLconsume@207stopShortboundedUnfoldLunfoldLemptyL@142option@288func@289nullL@667measureL@668capture@68-undefinedNameNamespace,,,%s,,,=undefinedNameNamespaceOrModuleKundefinedNameFieldConstructorOrMemberYundefinedNameValueConstructorNamespaceOrType?undefinedNameValueOfConstructorOundefinedNameValueNamespaceTypeOrModuleSundefinedNameConstructorModuleOrNamespace#undefinedNameTypeGundefinedNameRecordLabelOrNamespace1undefinedNameRecordLabel5undefinedNameTypeParameterCundefinedNamePatternDiscriminator/buildUnexpectedTypeArgs,,,%s,,,%d,,,3buildInvalidWarningNumber3buildInvalidVersionString/buildInvalidVersionFile!buildProductName1buildProblemWithFilename,,,%s,,,%s,,,,,,-buildNoInputsSpecified9buildMismatchOutputExtension+buildPdbRequiresDebug7buildInvalidSearchDirectory9buildSearchDirectoryNotFound)buildInvalidFilename1buildInvalidAssemblyName'buildInvalidPrivacyCbuildMultipleReferencesNotAllowed#buildRequiresCLI2QbuildCouldNotReadVersionInfoFromMscorlibUbuildMscorlibAndReferencedAssemblyMismatch/buildCannotReadAssemblyEbuildMscorLibAndFSharpCoreMismatch;buildAssemblyResolutionFailedObuildImplicitModuleIsNotLegalIdentifierObuildMultiFileRequiresNamespaceOrModule9buildMultipleToplevelModules-buildUnknownFileSuffix9buildOptionRequiresParameter7buildCouldNotFindSourceFile?buildInvalidSourceFileExtension9buildCouldNotResolveAssemblyUbuildCouldNotResolveAssemblyRequiredByFile7buildErrorOpeningBinaryFileEbuildDifferentVersionMustRecompile5buildInvalidHashIDirective5buildInvalidHashrDirective;buildInvalidHashloadDirective;buildInvalidHashtimeDirectiveEbuildDirectivesInModulesAreIgnored=buildSignatureAlreadySpecifiedKbuildImplementationAlreadyGivenDetail?buildImplementationAlreadyGivenGbuildSignatureWithoutImplementation%buildArgInvalidInt)buildArgInvalidFloat/buildUnrecognizedOptionCbuildInvalidModuleOrNamespaceNameCpickleErrorReadingWritingMetadata7tastTypeOrModuleNotConcreteKtastTypeHasAssemblyCodeRepresentationYtastNamespaceAndModuleWithSameNameInAssemblyItastTwoModulesWithSameNameInAssemblyKtastDuplicateTypeDefinitionInAssemblyatastConflictingModuleAndTypeDefinitionInAssembly5tastInvalidMemberSignature=tastValueDoesNotHaveSetterTypeAtastInvalidFormForPropertyGetterAtastInvalidFormForPropertySetter'tastUnexpectedByRef=tastValueMustBeLocalAndMutable;tastInvalidMutationOfConstant-tastValueHasBeenCopiedatastRecursiveValuesMayNotBeInConstructionOfTuplegtastRecursiveValuesMayNotAppearInConstructionOfTypeitastRecursiveValuesMayNotBeAssignedToNonMutableFieldOtastUnexpectedDecodeOfAutoOpenAttributectastUnexpectedDecodeOfInternalsVisibleToAttributegtastUnexpectedDecodeOfInterfaceDataVersionAttributeAtastActivePatternsLimitedToSevenGtastConstantCannotBeCustomAttribute5tastNotAConstantExpressionWValueNotContainedMutabilityAttributesDiffer%,,,%s,,,%s,,,%s,,,MValueNotContainedMutabilityNamesDiffer]ValueNotContainedMutabilityCompiledNamesDiffer[ValueNotContainedMutabilityDisplayNamesDifferYValueNotContainedMutabilityAccessibilityMoreYValueNotContainedMutabilityInlineFlagsDiffermValueNotContainedMutabilityLiteralConstantValuesDifferYValueNotContainedMutabilityOneIsTypeFunctionaValueNotContainedMutabilityParameterCountsDifferMValueNotContainedMutabilityTypesDifferWValueNotContainedMutabilityExtensionsDifferWValueNotContainedMutabilityArityNotInferredeValueNotContainedMutabilityGenericParametersDiffer9,,,%s,,,%s,,,%s,,,%s,,,%s,,,{ValueNotContainedMutabilityGenericParametersAreDifferentKindsQValueNotContainedMutabilityAritiesDifferM,,,%s,,,%s,,,%s,,,%s,,,%s,,,%s,,,%s,,,YValueNotContainedMutabilityDotNetNamesDifferQValueNotContainedMutabilityStaticsDifferSValueNotContainedMutabilityVirtualsDifferUValueNotContainedMutabilityAbstractsDifferOValueNotContainedMutabilityFinalsDifferUValueNotContainedMutabilityOverridesDifferWValueNotContainedMutabilityOneIsConstructorYValueNotContainedMutabilityStaticButInstanceYValueNotContainedMutabilityInstanceButStatic_DefinitionsInSigAndImplNotCompatibleNamesDiffersDefinitionsInSigAndImplNotCompatibleParameterCountsDifferoDefinitionsInSigAndImplNotCompatibleAccessibilityDifferiDefinitionsInSigAndImplNotCompatibleMissingInterfaceuDefinitionsInSigAndImplNotCompatibleImplementationSaysNullwDefinitionsInSigAndImplNotCompatibleImplementationSaysNull2kDefinitionsInSigAndImplNotCompatibleSignatureSaysNullmDefinitionsInSigAndImplNotCompatibleSignatureSaysNull2qDefinitionsInSigAndImplNotCompatibleImplementationSealed{DefinitionsInSigAndImplNotCompatibleImplementationIsNotSealedyDefinitionsInSigAndImplNotCompatibleImplementationIsAbstractoDefinitionsInSigAndImplNotCompatibleSignatureIsAbstractDefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypescDefinitionsInSigAndImplNotCompatibleNumbersDiffer€…DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot€…DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNotkDefinitionsInSigAndImplNotCompatibleImplDefinesStruct€‰DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHiddenaDefinitionsInSigAndImplNotCompatibleTypeIsHiddenoDefinitionsInSigAndImplNotCompatibleTypeIsDifferentKindYDefinitionsInSigAndImplNotCompatibleILDiffersDefinitionsInSigAndImplNotCompatibleRepresentationsDiffergDefinitionsInSigAndImplNotCompatibleFieldWasPresentiDefinitionsInSigAndImplNotCompatibleFieldOrderDiffer€DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecifieduDefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSigDefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImpl}DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSigwDefinitionsInSigAndImplNotCompatibleSignatureDeclaresDifferoDefinitionsInSigAndImplNotCompatibleAbbreviationsDifferwDefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySigmDefinitionsInSigAndImplNotCompatibleSigHasAbbreviationOModuleContainsConstructorButNamesDifferYModuleContainsConstructorButDataFieldsDiffer_ModuleContainsConstructorButTypesOfFieldsDifferaModuleContainsConstructorButAccessibilityDiffers9FieldNotContainedNamesDifferMFieldNotContainedAccessibilitiesDiffer=FieldNotContainedStaticsDiffer?FieldNotContainedMutablesDiffer?FieldNotContainedLiteralsDiffer9FieldNotContainedTypesDiffer_typrelCannotResolveImplicitGenericInstantiationatyprelCannotResolveAmbiguityInOverloadedOperatorItyprelCannotResolveAmbiguityInPrintfEtyprelCannotResolveAmbiguityInEnumMtyprelCannotResolveAmbiguityInDelegate%typrelInvalidValueWtyprelSigImplNotCompatibleParamCountsDifferotyprelSigImplNotCompatibleCompileTimeRequirementsDifferWtyprelSigImplNotCompatibleConstraintsDifferctyprelSigImplNotCompatibleConstraintsDifferRemovestyprelTypeImplementsIComparableShouldOverrideObjectEqualsutyprelTypeImplementsIComparableDefaultObjectEqualsProvidedctyprelExplicitImplementationOfGetHashCodeOrEqualsStyprelExplicitImplementationOfGetHashCodeItyprelExplicitImplementationOfEqualsWExceptionDefsNotCompatibleHiddenBySignaturekExceptionDefsNotCompatibleDotNetRepresentationsDifferoExceptionDefsNotCompatibleAbbreviationHiddenBySignatureUExceptionDefsNotCompatibleSignaturesDifferkExceptionDefsNotCompatibleExceptionDeclarationsDiffer]ExceptionDefsNotCompatibleFieldInSigButNotImpl]ExceptionDefsNotCompatibleFieldInImplButNotSigWExceptionDefsNotCompatibleFieldOrderDiffersctyprelModuleNamespaceAttributesDifferInSigAndImpl;typrelMethodIsOverconstrained-typrelOverloadNotFound5typrelOverrideWasAmbiguous3typrelMoreThenOneOverride)typrelMethodIsSealedOtyprelOverrideImplementsMoreThenOneSlot1typrelDuplicateInterfaceAtyprelNeedExplicitImplementation]typrelNamedArgumentHasBeenAssignedMoreThenOnce7typrelNoImplementationGivenStyprelNoImplementationGivenWithSuggestion_typrelMemberDoesNotHaveCorrectNumberOfArgumentsityprelMemberDoesNotHaveCorrectNumberOfTypeParametersmtyprelMemberDoesNotHaveCorrectKindsOfGenericParameters7typrelMemberCannotImplement/astParseEmbeddedILError7astParseEmbeddedILTypeError9astDeprecatedIndexerNotationEastInvalidExprLeftHandOfAssignment-augNoRefEqualsOnStructaugInvalidAttrs=augNoEqualityNeedsNoComparisonAaugStructCompNeedsStructEqualityEaugStructEqNeedsNoCompOrStructCompEaugTypeCantHaveRefEqAndStructAttrs?augOnlyCertainTypesCanHaveAttrs3augRefEqCantHaveObjEquals3augCustomEqNeedsObjEquals5augCustomCompareNeedsIComp/augNoEqNeedsNoObjEquals+augNoCompCantImpICompEaugCustomEqNeedsNoCompOrCustomCompGforPositionalSpecifiersNotPermitted3forMissingFormatSpecifierforFlagSetTwice=forPrefixFlagSpacePlusSetTwice3forHashSpecifierIsInvalidforBadPrecisionforBadWidth3forDoesNotSupportZeroFlag7forPrecisionMissingAfterDot?forFormatDoesntSupportPrecision+forBadFormatSpecifier#forLIsUnnecessary#forHIsUnnecessary7forDoesNotSupportPrefixFlag9forBadFormatSpecifierGeneral+elSysEnvExitDidntExit)elDeprecatedOperator1chkProtectedOrBaseCalled1chkByrefUsedInInvalidWay5chkMutableUsedInInvalidWay/chkBaseUsedInInvalidWay7chkVariableUsedInInvalidWay;chkTypeLessAccessibleThanType3chkSystemVoidOnlyInTypeof%chkErrorUseOfByref;chkErrorContainsCallToRethrow7chkSplicingOnlyInQuotations/chkNoFirstClassSplicing1chkNoFirstClassAddressOf-chkNoFirstClassRethrow+chkNoByrefAtThisPoint7chkLimitationsOfBaseKeywordGchkObjCtorsCantUseExceptionHandling3chkNoAddressOfAtThisPointEchkNoAddressStaticFieldAtThisPoint9chkNoAddressFieldAtThisPointKchkNoAddressOfArrayElementAtThisPoint1chkFirstClassFuncNoByref)chkReturnTypeNoByref+chkInvalidCustAttrVal3chkAttrHasAllowMultiFalse3chkMemberUsedInInvalidWay)chkNoByrefAsTopValue3chkReflectedDefCantSplice%chkEntryPointUsage1chkUnionCaseCompiledForm?chkUnionCaseDefaultAugmentation3chkPropertySameNameMethodCchkGetterSetterDoNotMatchAbstract5chkPropertySameNameIndexer-chkCantStoreByrefValue%chkDuplicateMethod9chkDuplicateMethodWithSuffix3chkDuplicateMethodCurriedEchkCurriedMethodsCantHaveOutParams)chkDuplicateProperty=chkDuplicatePropertyWithSuffix?chkDuplicateMethodInheritedTypeSchkDuplicateMethodInheritedTypeWithSuffixSchkMultipleGenericInterfaceInstantiationsYchkValueWithDefaultValueMustHaveDefaultValue-chkNoByrefInTypeAbbrev1crefBoundVarUsedInSpliceKcrefQuotationsCantContainGenericExprsScrefQuotationsCantContainGenericFunctionsCcrefQuotationsCantContainObjExprsEcrefQuotationsCantContainAddressOfOcrefQuotationsCantContainStaticFieldRefCcrefQuotationsCantContainInlineILWcrefQuotationsCantContainDescendingForLoopsGcrefQuotationsCantFetchUnionIndexesAcrefQuotationsCantSetUnionFieldsIcrefQuotationsCantSetExceptionFields=crefQuotationsCantRequireByrefEcrefQuotationsCantCallTraitMembersKcrefQuotationsCantContainThisConstantScrefQuotationsCantContainThisPatternMatch[crefQuotationsCantContainArrayPatternMatchingCcrefQuotationsCantContainThisTypeGcsTypeCannotBeResolvedAtCompileTime#csCodeLessGeneric/csTypeInferenceMaxDepth'csExpectedArguments/csIndexArgumentMismatch,,,%d,,,%d,,,QcsExpectTypeWithOperatorButGivenFunctionKcsExpectTypeWithOperatorButGivenTuple7csTypesDoNotSupportOperator9csTypeDoesNotSupportOperatorGcsTypesDoNotSupportOperatorNullableIcsTypeDoesNotSupportOperatorNullable=csTypeDoesNotSupportConversion1csMethodFoundButIsStatic7csMethodFoundButIsNotStatic=csStructConstraintInconsistent+csTypeDoesNotHaveNull;csNullableTypeDoesNotHaveNull?csTypeDoesNotSupportComparison1?csTypeDoesNotSupportComparison2?csTypeDoesNotSupportComparison3;csTypeDoesNotSupportEquality1;csTypeDoesNotSupportEquality2;csTypeDoesNotSupportEquality3'csTypeIsNotEnumTypeAcsTypeHasNonStandardDelegateType/csTypeIsNotDelegateType?csTypeParameterCannotBeNullableIcsGenericConstructRequiresStructTypeOcsGenericConstructRequiresUnmanagedTypeEcsTypeNotCompatibleBecauseOfPrintfYcsGenericConstructRequiresReferenceSemanticsKcsGenericConstructRequiresNonAbstractecsGenericConstructRequiresPublicDefaultConstructorCcsTypeInstantiationLengthMismatchEcsOptionalArgumentNotPermittedHere'csMemberIsNotStatic+csMemberIsNotInstance1csArgumentLengthMismatch3csArgumentTypesDoNotMatch+csMethodExpectsParams/csMemberIsNotAccessible1csMemberIsNotAccessible25csMethodIsNotAStaticMethod;csMethodIsNotAnInstanceMethodKcsMemberHasNoArgumentOrReturnProperty+csRequiredSignatureIs3csMemberSignatureMismatch%,,,%s,,,%d,,,%s,,,5csMemberSignatureMismatch25csMemberSignatureMismatch3/,,,%s,,,%d,,,%s,,,%s,,,5csMemberSignatureMismatch4GcsMemberSignatureMismatchArityNamed9,,,%s,,,%d,,,%d,,,%d,,,%s,,,=csMemberSignatureMismatchArity/,,,%s,,,%d,,,%d,,,%s,,,EcsMemberSignatureMismatchArityType+csMemberNotAccessible/,,,%s,,,%d,,,%s,,,%d,,,?csIncorrectGenericInstantiation%,,,%s,,,%s,,,%d,,,;csMemberOverloadArityMismatch%,,,%s,,,%d,,,%d,,,;csNoMemberTakesTheseArguments=csNoMemberTakesTheseArguments2/,,,%s,,,%s,,,%d,,,%d,,,=csNoMemberTakesTheseArguments3/,,,%s,,,%s,,,%d,,,%s,,,!csMethodNotFound%csNoOverloadsFound)csMethodIsOverloadedcsCandidates/csSeeAvailableOverloadsMparsDoCannotHaveVisibilityDeclarationsparsEofInHashIfparsEofInString/parsEofInVerbatimString!parsEofInComment1parsEofInStringInCommentAparsEofInVerbatimStringInComment!parsEofInIfOcaml%parsEofInDirective)parsNoHashEndIfFound+parsAttributesIgnoredcparsUseBindingsIllegalInImplicitClassConstructors?parsUseBindingsIllegalInModulesUparsIntegerForLoopRequiresSimpleIdentifierEparsOnlyOneWithAugmentationAllowed/parsUnexpectedSemicolon/parsUnexpectedEndOfFileGparsUnexpectedVisibilityDeclaration;parsOnlyHashDirectivesAllowedkparsVisibilityDeclarationsShouldComePriorToIdentifier9parsNamespaceOrModuleNotBothMparsModuleAbbreviationMustBeSimpleNameQparsIgnoreAttributesOnModuleAbbreviationkparsIgnoreAttributesOnModuleAbbreviationAlwaysPrivatekparsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate9parsUnClosedBlockInHashLight5parsUnmatchedBeginOrStruct=parsModuleDefnMustBeSimpleName;parsUnexpectedEmptyModuleDefn?parsAttributesMustComeBeforeValoparsAttributesAreNotPermittedOnInterfaceImplementationsparsSyntaxErrorMparsAugmentationsIllegalOnDelegateTypeGparsUnmatchedClassInterfaceOrStruct/parsEmptyTypeDefinition#parsUnmatchedWith)parsGetOrSetRequiredEparsOnlyClassCanTakeValueArguments%parsUnmatchedBegin9parsInvalidDeclarationSyntax/parsGetAndOrSetRequired7parsTypeAnnotationsOnGetSetIparsGetterMustHaveAtLeastOneArgumentIparsMultipleAccessibilitiesForGetSetparsSetSyntax_parsInterfacesHaveSameVisibilityAsEnclosingTypeOparsAccessibilityModsIllegalForAbstract=parsAttributesIllegalOnInherit=parsVisibilityIllegalOnInheritWparsInheritDeclarationsCannotHaveAsBindings3parsAttributesIllegalHerekparsTypeAbbreviationsCannotHaveVisibilityDeclarations[parsEnumTypesCannotHaveVisibilityDeclarations=parsAllEnumFieldsRequireValueseparsInlineAssemblyCannotHaveVisibilityDeclarations1parsUnexpectedIdentifier]parsUnionCasesCannotHaveVisibilityDeclarations]parsEnumFieldsCannotHaveVisibilityDeclarationsGparsConsiderUsingSeparateRecordTypeaparsRecordFieldsCannotHaveVisibilityDeclarations7parsLetAndForNonRecBindings%parsUnmatchedParenYparsSuccessivePatternsShouldBeSpacedOrTupled-parsNoMatchingInForLetWparsErrorInReturnForLetIncorrectIndentation;parsExpectedStatementAfterLet!parsIncompleteIf=parsAssertIsNotFirstClassValue-parsIdentifierExpected+parsInOrEqualExpected+parsArrowUseIsLimitedQparsSuccessiveArgsShouldBeSpacedOrTupled)parsUnmatchedBracketAparsMissingQualificationAfterDot)parsParenFormIsForML'parsMismatchedQuoteparsUnmatched/parsUnmatchedBracketBar%parsUnmatchedBrace!parsFieldBindingOparsMemberIllegalInObjectImplementation/parsMissingFunctionBody9parsSyntaxErrorInLabeledType7parsUnexpectedInfixOperatorUparsMultiArgumentGenericTypeFormDeprecated1parsInvalidLiteralInTypeMparsUnexpectedOperatorForUnitOfMeasureYparsUnexpectedIntegerLiteralForUnitOfMeasure7parsUnexpectedTypeParameter7parsMismatchedQuotationNameWparsActivePatternCaseMustBeginWithUpperCaseAparsNoEqualShouldFollowNamespaceGparsSyntaxModuleStructEndDeprecatedAparsSyntaxModuleSigEndDeprecatedUtcStaticFieldUsedWhenInstanceFieldExpected+tcMethodNotAccessible?tcImplicitMeasureFollowingSlash/tcUnexpectedMeasureAnonMtcNonZeroConstantCannotHaveGenericUnit)tcSeqResultsUseYield?tcUnexpectedBigRationalConstant=tcInvalidTypeForUnitsOfMeasure9tcUnexpectedConstUint16Array5tcUnexpectedConstByteArray/tcParameterRequiresName;tcReturnValuesCannotHaveNamesKtcMemberKindPropertyGetSetNotExpected=tcNamespaceCannotContainValuesQtcNamespaceCannotContainExtensionMembers=tcMultipleVisibilityAttributesKtcMultipleVisibilityAttributesWithLet?tcUnrecognizedAccessibilitySpecQtcInvalidMethodNameForRelationalOperator=tcInvalidMethodNameForEquality'tcInvalidMemberName;tcInvalidMemberNameFixedTypesKtcInvalidOperatorDefinitionRelationalGtcInvalidOperatorDefinitionEquality7tcInvalidOperatorDefinitionAtcInvalidIndexOperatorDefinition?tcExpectModuleOrNamespaceParentCtcImplementsIComparableExplicitlyQtcImplementsGenericIComparableExplicitlyWtcImplementsIStructuralComparableExplicitly=tcRecordFieldInconsistentTypes?tcDllImportStubsCannotBeInlinedWtcStructsCanOnlyBindThisAtMemberDeclaration;tcUnexpectedExprAtRecInfPointAtcLessGenericBecauseOfAnnotationYtcConstrainedTypeVariableCannotBeGeneralizedItcGenericParameterHasBeenConstrainedCtcTypeParameterHasBeenConstrainedItcTypeParametersInferredAreNotStable=tcExplicitTypeParameterInvalid_tcOverridingMethodRequiresAllOrNoTypeParametersMtcFieldsDoNotDetermineUniqueRecordType7tcFieldAppearsTwiceInRecordtcUnknownUnionMtcNotSufficientlyGenericBecauseOfScopeQtcPropertyRequiresExplicitTypeParametersKtcConstructorCannotHaveTypeParameters=tcInstanceMemberRequiresTargetAtcUnexpectedPropertyInSyntaxTreeGtcStaticInitializerRequiresArgumentGtcObjectConstructorRequiresArgument?tcStaticMemberShouldNotHaveThisCtcExplicitStaticInitializerSyntaxCtcExplicitObjectConstructorSyntax1tcUnexpectedPropertySpecAtcObjectExpressionFormDeprecated)tcInvalidDeclaration;tcAttributesInvalidInPatternsOtcFunctionRequiresExplicitTypeArgumentsGtcDoesNotAllowExplicitTypeArguments9tcTypeParameterArityMismatch=tcDefaultStructConstructorCall3tcCouldNotFindIDisposableCtcNonLiteralCannotBeUsedInPattern#tcFieldIsReadonly;tcNameArgumentsMustAppearLastAtcFunctionRequiresExplicitLambda,,,%d,,,1tcTypeCannotBeEnumerated?tcBadReturnTypeForGetEnumeratorAtcInvalidMixtureOfRecursiveFormsKtcInvalidObjectConstructionExpression'tcInvalidConstraint;tcInvalidConstraintTypeSealed/tcInvalidEnumConstraint-tcInvalidNewConstraint+tcInvalidPropertyTypeQtcExpectedUnitOfMeasureMarkWithAttribute/tcExpectedTypeParameter=tcExpectedTypeNotUnitOfMeasure=tcExpectedUnitOfMeasureNotType;tcInvalidUnitsOfMeasurePrefixQtcUnitsOfMeasureInvalidInTypeConstructor-tcRequireBuilderMethod-tcTypeHasNoNestedTypesEtcUnexpectedSymbolInTypeExpressionOtcTypeParameterInvalidAsTypeConstructor?tcIllegalSyntaxInTypeExpressionOtcAnonymousUnitsOfMeasureCannotBeNestedGtcAnonymousTypeInvalidInDeclaration/tcUnexpectedSlashInType3tcUnexpectedTypeArguments7tcOptionalArgsOnlyOnMembers/tcNameNotBoundInPatternUtcInvalidNonPrimitiveLiteralInPatternMatch5tcInvalidTypeArgumentUsageGtcRequireActivePatternWithOneResultGtcInvalidArgForParameterizedPatternItcInvalidIndexIntoActivePatternArray?tcUnionCaseDoesNotTakeArguments=tcUnionCaseRequiresOneArgumentCtcUnionCaseExpectsTupledArguments%tcFieldIsNotStaticMtcFieldNotLiteralCannotBeUsedInPattern?tcRequireVarConstRecogOrLiteral!tcInvalidPattern+tcUseWhenPatternGuard!tcIllegalPattern9tcSyntaxErrorUnexpectedQMark3tcExpressionCountMisMatchtcExprUndelayed9tcExpressionRequiresSequenceGtcInvalidObjectExpressionSyntaxFormStcInvalidObjectSequenceOrRecordExpressionKtcInvalidSequenceExpressionSyntaxFormKtcExpressionWithIfRequiresParenthesis7tcUnableToParseFormatString)tcListLiteralMaxSizeStcExpressionFormRequiresObjectConstructorUtcNamedArgumentsCannotBeUsedInMemberTraits-tcNotValidEnumCaseName'tcFieldIsNotMutableMtcConstructRequiresListArrayOrSequenceStcConstructRequiresComputationExpressionsStcConstructRequiresSequenceOrComputationsQtcConstructRequiresComputationExpression5tcInvalidIndexerExpressionitcObjectOfIndeterminateTypeUsedRequireTypeConstraint?tcCannotInheritFromVariableTypeotcObjectConstructorsOnTypeParametersCannotTakeArguments=tcCompiledNameAttributeMisused'tcNamedTypeRequiredItcInheritCannotBeUsedOnInterfaceTypeAtcNewCannotBeUsedOnInterfaceTypeEtcAbstractTypeCannotBeInstantiated;tcIDisposableTypeShouldUseNewQtcSyntaxCanOnlyBeUsedToCreateObjectTypes3tcConstructorRequiresCall!tcUndefinedField3tcFieldRequiresAssignment;tcExtraneousFieldsGivenValuesgtcObjectExpressionsCanOnlyOverrideAbstractOrVirtualAtcNoAbstractOrVirtualMemberFound/tcArgumentArityMismatchEtcArgumentArityMismatchOneOverload5tcSimpleMethodNameRequiredOtcPredefinedTypeCannotBeUsedAsSuperType9tcNewMustBeUsedWithNamedTypeGtcCannotCreateExtensionOfSealedType7tcNoArgumentsForRecordValueitcNoInterfaceImplementationForConstructionExpression[tcObjectConstructionCanOnlyBeUsedInClassTypesmtcOnlySimpleBindingsCanBeUsedInConstructionExpressions]tcObjectsMustBeInitializedWithObjectExpression/tcExpectedInterfaceTypeYtcConstructorForInterfacesDoNotTakeArguments=tcConstructorRequiresArguments=tcNewRequiresObjectConstructor;tcAtLeastOneOverrideIsInvalid=tcNumericLiteralRequiresModule7tcInvalidRecordConstructionGtcExpressionFormRequiresRecordTypesGtcInheritedTypeIsNotObjectModelType€™tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypes)tcEmptyRecordInvalidKtcTypeIsNotARecordTypeNeedConstructor-tcTypeIsNotARecordType[tcConstructIsAmbiguousInComputationExpressionUtcConstructIsAmbiguousInSequenceExpressionGtcDoBangIllegalInSequenceExpression9tcUseForInSequenceExpressionAtcTryIllegalInSequenceExpressionAtcUseYieldBangForMultipleResults'tcInvalidAssignment-tcInvalidUseOfTypeNameAtcTypeHasNoAccessibleConstructorGtcInvalidUseOfTypeNameOrConstructoratcInvalidUseOfTypeNameOrConstructorWithOverloads7tcInvalidUseOfInterfaceType-tcInvalidUseOfDelegate+tcPropertyIsNotStatic/tcPropertyIsNotReadable1tcLookupMayNotBeUsedHere%tcPropertyIsStatic-tcPropertyCannotBeSet1MtcConstructorsCannotBeFirstClassValuesotcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFieldstcEventIsStatic%tcEventIsNotStatic5tcNamedArgumentDidNotMatchKtcOverloadsCannotHaveCurriedArgumentsCtcUnnamedArgumentsDoNotFormPrefixitcStaticOptimizationConditionalsOnlyForFSharpLibrary;tcFormalArgumentIsNotOptionalYtcInvalidOptionalAssignmentToPropertyOrFieldCtcDelegateConstructorMustBePassed5tcBindingCannotBeUseAndRecAtcVolatileOnlyOnClassLetBindingsQtcAttributesAreNotPermittedOnLetBindingsEtcDefaultValueAttributeRequiresValKtcConditionalAttributeRequiresMembers5tcInvalidActivePatternName[tcEntryPointAttributeRequiresFunctionInModule;tcMutableValuesCannotBeInlineUtcMutableValuesMayNotHaveGenericParameters+tcMutableValuesSyntax5tcOnlyFunctionsCanBeInline;tcIllegalAttributesForLiteral1tcLiteralCannotBeMutable/tcLiteralCannotBeInlineItcLiteralCannotHaveGenericParameters7tcInvalidConstantExpression)tcTypeIsInaccessibleOtcUnexpectedConditionInImportedAssembly;tcUnrecognizedAttributeTargetYtcAttributeIsNotValidForLanguageElementUseDoOtcAttributeIsNotValidForLanguageElementatcOptionalArgumentsCannotBeUsedInCustomAttribute-tcPropertyCannotBeSet0ItcPropertyOrFieldNotFoundInAttributeItcCustomAttributeMustBeReferenceTypeCtcCustomAttributeArgumentMismatchMtcCustomAttributeMustInvokeConstructorYtcAttributeExpressionsMustBeConstructorCalls-tcUnsupportedAttribute9tcInvalidInlineSpecification'tcInvalidUseBindingMtcAbstractMembersIllegalInAugmentation9tcMethodOverridesIllegalHere5tcNoMemberFoundForOverride/tcOverrideArityMismatchItcDefaultImplementationAlreadyExists%tcDefaultAmbiguous9tcNoPropertyFoundForOverrideCtcAbstractPropertyMissingGetOrSet1tcInvalidSignatureForSetStcPropertyAlreadyHasDefaultImplementationAtcPropertyImplementedIsAmbiguous=tcNewMemberHidesAbstractMemberQtcNewMemberHidesAbstractMemberWithSuffixMtcStaticInitializersIllegalInInterfaceMtcObjectConstructorsIllegalInInterfaceGtcMemberOverridesIllegalInInterfaceGtcConcreteMembersIllegalInInterface_tcConstructorsDisallowedInExceptionAugmentation[tcStructsCannotHaveConstructorWithNoArgumentsAtcConstructorsIllegalForThisTypemtcRecursiveBindingsWithMembersMustBeDirectAugmentation9tcOnlySimplePatternsInLetRecUtcOnlyRecordFieldsAndSimpleLetCanBeMutableAtcMemberIsNotSufficientlyGenericOtcLiteralAttributeRequiresConstantValueUtcValueInSignatureRequiresLiteralAttributeUtcThreadStaticAndContextStaticMustBeStatic;tcVolatileFieldsMustBeMutableKtcUninitializedValFieldsMustBeMutableQtcStaticValFieldsMustBeMutableAndPrivate'tcFieldRequiresNameKtcInvalidNamespaceModuleTypeUnionNameOtcIllegalFormForExplicitTypeDeclarationKtcReturnTypesForUnionMustBeSameAsType7tcInvalidEnumerationLiteral3tcTypeIsNotInterfaceType15tcDuplicateSpecOfInterface+tcFieldValIllegalHere)tcInheritIllegalHere?tcModuleRequiresQualifiedAccessItcOpenUsedWithPartiallyQualifiedPathEtcLocalClassBindingsCannotBeInlineItcTypeAbbreviationsMayNotHaveMembers?tcEnumerationsMayNotHaveMembersStcMeasureDeclarationsRequireStaticMembersAtcStructsMayNotContainDoBindingsCtcStructsMayNotContainLetBindingsstcStaticLetBindingsRequireClassesWithImplicitConstructorsqtcMeasureDeclarationsRequireStaticMembersNotConstructorsQtcMemberAndLocalClassBindingHaveSameNamectcTypeAbbreviationsCannotHaveInterfaceDeclarationYtcEnumerationsCannotHaveInterfaceDeclaration3tcTypeIsNotInterfaceType0UtcAllImplementedInterfacesShouldBeDeclaredmtcDefaultImplementationForInterfaceHasAlreadyBeenAdded[tcMemberNotPermittedInInterfaceImplementation]tcDeclarationElementNotPermittedInAugmentation?tcTypesCannotContainNestedTypes/tcTypeExceptionOrModuletcTypeOrModuleUtcImplementsIStructuralEquatableExplicitlyAtcImplementsIEquatableExplicitlytcExplicitTypeSpecificationCannotBeUsedForExceptionConstructorsctcExceptionAbbreviationsShouldNotHaveArgumentListktcAbbreviationsFordotNetExceptionsCannotTakeArgumentsetcExceptionAbbreviationsMustReferToValidExceptions€‡tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructor!tcNotAnException'tcInvalidModuleName-tcInvalidTypeExtension[tcAttributesOfTypeSpecifyMultipleKindsForTypeWtcKindOfTypeSpecifiedDoesNotMatchDefinitionYtcMeasureDefinitionsCannotHaveTypeParameters1tcTypeRequiresDefinitionatcTypeAbbreviationHasTypeParametersMissingOnTypeytcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes[tcTypesCannotInheritFromMultipleConcreteTypes€tcRecordsUnionsAbbreviationsStructsMayNotHaveAllowNullLiteralAttributeatcAllowNullTypesMayOnlyInheritFromAllowNullTypesItcGenericTypesCannotHaveStructLayoutAtcOnlyStructsCanHaveStructLayoutOtcRepresentationOfTypeHiddenBySignature9tcOnlyClassesCanHaveAbstractgtcOnlyTypesRepresentingUnitsOfMeasureCanHaveMeasureWtcOverridesCannotHaveVisibilityDeclarations1tcTypesAreAlwaysSealedDU9tcTypesAreAlwaysSealedRecordEtcTypesAreAlwaysSealedAssemblyCode9tcTypesAreAlwaysSealedStruct=tcTypesAreAlwaysSealedDelegate5tcTypesAreAlwaysSealedEnum_tcInterfaceTypesAndDelegatesCannotContainFieldsAtcAbbreviatedTypesCannotBeSealed;tcCannotInheritFromSealedTypeAtcCannotInheritFromInterfaceTypeStcStructTypesCannotContainAbstractMembers=tcInterfaceTypesCannotBeSealed=tcInvalidDelegateSpecification5tcDelegatesCannotBeCurriedEtcInvalidTypeForLiteralEnumeration1tcTypeDefinitionIsCyclicUtcTypeDefinitionIsCyclicThroughInheritance?tcReservedSyntaxForAugmentationqtcMembersThatExtendInterfaceMustBePlacedInSeparateModulemtcDeclaredTypeParametersForExtensionDoNotMatchOriginalwtcTypeDefinitionsWithImplicitConstructionMustHaveOneInherit€—tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembersItcInheritDeclarationMissingArgumentsetcInheritConstructionCallNotPartOfImplicitSequence]tcLetAndDoRequiresImplicitConstructionSequenceUtcTypeAbbreviationsCannotHaveAugmentationsAtcModuleAbbreviationForNamespace-tcTypeUsedInInvalidWay1tcMemberUsedInInvalidWay;tcAttributeAutoOpenWasIgnored!ilUndefinedValueilLabelNotFoundAilIncorrectNumberOfTypeArguments?ilDynamicInvocationNotSupportedAilAddressOfLiteralFieldIsInvalid;ilAddressOfValueHereIsInvalidWilValuesWithLiteralAttributeCannotBeMutableQilValuesWithLiteralAttributeMustBeSimpleOilCustomMarshallersCannotBeUsedInFSharpGilMarshalAsAttributeCannotBeDecodediilSignatureForExternalFunctionContainsTypeParametersKilDllImportAttributeCouldNotBeDecoded5ilLiteralFieldsCannotBeSet3ilStaticMethodIsNotLambdaIilMutableVariablesCannotEscapeMethod7ilUnexpectedUnrealizedValue#ilMainModuleEmptyCilTypeCannotBeUsedForLiteralField9ilUnexpectedGetSetAnnotationOilFieldOffsetAttributeCouldNotBeDecodedQilStructLayoutAttributeCouldNotBeDecoded_ilDefaultAugmentationAttributeCouldNotBeDecodedYilReflectedDefinitionsCannotUseSliceOperator/optsProblemWithCodepage,,,%d,,,%s,,,optsCopyright)optsNameOfOutputFile!optsBuildConsole!optsBuildWindows!optsBuildLibraryoptsBuildModuleoptsDelaySignoptsWriteXml#optsStrongKeyFile-optsStrongKeyContaineroptsPlatformoptsNoOptoptsNoInterfaceoptsSigoptsReferenceoptsWin32res#optsWin32manifest'optsNowin32manifestoptsResource!optsLinkresourceoptsDebugPMoptsDebugoptsOptimizeoptsTailcalls#optsCrossoptimize#optsWarnaserrorPMoptsWarnaserroroptsWarnoptsNowarnoptsWarnOnoptsCheckedoptsDefine'optsMlcompatibilityoptsNologooptsHelpoptsCodepageoptsUtf8outputoptsFullpathsoptsLiboptsBaseaddressoptsNoframeworkoptsStandaloneoptsStaticlinkoptsResidentoptsPdb)optsSimpleresolution-optsUnrecognizedTarget3optsUnrecognizedDebugType/optsInvalidWarningLeveloptsShortFormOf1optsClirootDeprecatedMsg-optsClirootDescription3optsHelpBannerOutputFiles1optsHelpBannerInputFiles/optsHelpBannerResources+optsHelpBannerCodeGen-optsHelpBannerAdvanced%optsHelpBannerMisc-optsHelpBannerLanguage5optsHelpBannerErrsAndWarnsEoptsUnknownArgumentToTheTestSwitch'optsUnknownPlatform3optsInternalNoDescription+optsDCLONoDescriptionIoptsDCLODeprecatedSuggestAlternativeoptsDCLOHtmlDoc#optsConsoleColors)optsUseHighEntropyVA)optsSubSystemVersion7optsInvalidSubSystemVersion!typeInfoFullNametypeInfoType!typeInfoInherits%typeInfoImplements-typeInfoOtherOverloads#typeInfoUnionCase7typeInfoActivePatternResult1typeInfoActiveRecognizertypeInfoFieldtypeInfoEvent!typeInfoProperty/typeInfoCustomOperation!typeInfoArgument/typeInfoPatternVariable#typeInfoNamespacetypeInfoModule3typeInfoNamespaceOrModule#typeInfoFromFirst!typeInfoFromNext3typeInfoGeneratedProperty+typeInfoGeneratedTypeWassemblyResolutionFoundByAssemblyFoldersKey[assemblyResolutionFoundByAssemblyFoldersExKey=assemblyResolutionNetFramework+assemblyResolutionGAC/recursiveClassHierarchyOInvalidRecursiveReferenceToAbstractSlot/eventHasNonStandardType'typeIsNotAccessible5unionCasesAreNotAccessible)valueIsNotAccessible1unionCaseIsNotAccessible)fieldIsNotAccessibleCstructOrClassFieldIsNotAccessible+experimentalConstruct)noInvokeMethodsFound9moreThanOneInvokeMethodFoundUdelegatesNotAllowedToHaveCurriedSignatures%tlrUnexpectedTExprOtlrLambdaLiftingOptimizationsNotAppliedWlexhlpIdentifiersContainingAtSymbolReserved1lexhlpIdentifierReserved'patcMissingVariableUpatcPartialActivePatternsGenerateOneResult5impTypeRequiredUnavailableUimpReferencedTypeCouldNotBeFoundInAssemblyWimpNotEnoughTypeParamsInScopeWhileImportingGimpReferenceToDllRequiredByAssemblyIimpImportedAssemblyUsesNotPublicTypeCoptValueMarkedInlineButIncomplete[optValueMarkedInlineButWasNotBoundInTheOptEnvOoptLocalValueNotFoundDuringOptimizationMoptValueMarkedInlineHasUnexpectedValueKoptValueMarkedInlineCouldNotBeInlined-optFailedToInlineValue)optRecursiveValValue=lexfltIncorrentIndentationOfInWlexfltTokenIsOffsideOfContextStartedEarlier[lexfltSeparatorTokensOfPatternMatchMisaligned/nrInvalidModuleExprTypeqnrTypeInstantiationNeededToDisambiguateTypesWithSameNamecnrTypeInstantiationIsMissingAndCouldNotBeInferred7nrGlobalUsedOnlyAsFirstName7nrIsNotConstructorOrLiteral/nrUnexpectedEmptyLongId;nrTypeDoesNotContainSuchField'nrInvalidFieldLabel'nrInvalidExpressionAnrNoConstructorsAvailableForType/ilwriteErrorCreatingPdb-lexOutsideIntegerRangeAlexCharNotAllowedInOperatorNames#lexUnexpectedChar1lexByteArrayCannotEncode3lexIdentEndInMarkReserved1lexOutsideEightBitSigned7lexOutsideEightBitSignedHex5lexOutsideEightBitUnsigned5lexOutsideSixteenBitSigned9lexOutsideSixteenBitUnsigned9lexOutsideThirtyTwoBitSigned=lexOutsideThirtyTwoBitUnsigned9lexOutsideSixtyFourBitSigned=lexOutsideSixtyFourBitUnsigned-lexOutsideNativeSigned1lexOutsideNativeUnsignedlexInvalidFloat!lexOusideDecimal5lexOusideThirtyTwoBitFloat1lexInvalidNumericLiteral+lexInvalidByteLiteral+lexInvalidCharLiteralElexThisUnicodeOnlyInStringLiterals!lexTokenReserved#lexTabsNotAllowed)lexInvalidLineNumber)lexHashIfMustBeFirst/lexHashElseNoMatchingIf7lexHashEndifRequiredForElse-lexHashElseMustBeFirst3lexHashEndingNoMatchingIf/lexHashEndifMustBeFirst-lexHashIfMustHaveIdent/lexWrongNestedHashEndif9lexExpectedSingleLineCommentOmemberOperatorDefinitionWithNoArgumentsWmemberOperatorDefinitionWithNonPairArgumentYmemberOperatorDefinitionWithCurriedArguments9tcFSharpCoreRequiresExplicitGtcStructuralComparisonNotSatisfied1GtcStructuralComparisonNotSatisfied2+tcNoComparisonNeeded1+tcNoComparisonNeeded2'tcNoEqualityNeeded1'tcNoEqualityNeeded2CtcStructuralEqualityNotSatisfied1CtcStructuralEqualityNotSatisfied2ktcStructsMustDeclareTypesOfImplicitCtorArgsExplicitlychkUnusedValue+chkUnusedThisVariable7parsGetterAtMostOneArgument9parsSetterAtMostTwoArguments'parsInvalidProperty[parsIndexerPropertyRequiresAtLeastOneArgumentctastInvalidAddressOfMutableAcrossAssemblyBoundary+parsNonAdjacentTypars+parsNonAdjacentTyargs#parsNonAtomicType7tastUndefinedTyconItemField?tastUndefinedTyconItemUnionCaseGtastUndefinedItemRefModuleNamespace/tastUndefinedItemRefValOtastUndefinedItemRefModuleNamespaceType7tcInvalidUseNullAsTrueValue1tcParameterInferredByref+tcNonUniformMemberUseitcNamedArgumentsCannotBeUsedInUnionCaseConstructions%tcAttribArgsDiffer=tcCannotCallAbstractBaseMemberOtyprelCannotResolveAmbiguityInUnmanagedmlCompatMessage_ilFieldDoesNotHaveValidOffsetForStructureLayoutQtcInterfacesShouldUseInheritNotInterface3parsInvalidPrefixOperatorGparsInvalidPrefixOperatorDefinition=buildCompilingExtensionIsForML#lexIndentOffForMLIactivePatternIdentIsNotFunctionTypedAactivePatternChoiceHasFreeTyparsGilFieldHasOffsetForSequentialLayoutUtcOptionalArgsMustComeAfterNonOptionalArgs7tcConditionalAttributeUsageKtcMemberOperatorDefinitionInExtrinsicQilwriteMDBFileNameCannotBeChangedWarning/ilwriteMDBMemberMissing/ilwriteErrorCreatingMdbStcUnionCaseNameConflictsWithGeneratedTypeMchkNoReflectedDefinitionOnStructMember+tcDllImportNotAllowedObuildExplicitCoreLibRequiresNoFramework1buildExpectedSigdataFileAbuildDidNotExpectOptDataResourceIbuildExpectedFileAlongSideFSharpCoreAbuildDidNotExpectSigdataResourceAbuildUnexpectedFileNameCharacter/tcInvalidUseBangBinding?crefNoInnerGenericsInQuotations9tcEnumTypeCannotBeEnumerated5parsEofInTripleQuoteStringGparsEofInTripleQuoteStringInComment/tcTypeTestLosesMeasures'parsMissingTypeArgs-parsMissingGreaterThan€…parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString=parsErrorParsingAsOperatorName!fscTooManyErrors%docfileNoXmlSuffix1fscNoImplementationFiles+fscBadAssemblyVersion/fscTwoResourceManifestsCfscQuotationLiteralsStaticLinkingEfscQuotationLiteralsStaticLinking0+fscStaticLinkingNoEXE5fscStaticLinkingNoMixedDLL7fscIgnoringMixedWhenLinkingSfscAssumeStaticLinkContainsNoDependenciesEfscAssemblyNotFoundInDependencySet5fscKeyFileCouldNotBeOpened/fscProblemWritingBinaryEfscAssemblyVersionAttributeIgnoredAfscAssemblyCultureAttributeError'fscDelaySignWarning#fscKeyFileWarning#fscKeyNameWarning3fscReferenceOnCommandLine!fscRemotingErrorpathIsInvalid7fscResxSourceFileDeprecatedEetIllegalCharactersInNamespaceName/etNullOrEmptyMemberNameetNullMember3etNullMemberDeclaringTypeeetNullMemberDeclaringTypeDifferentFromProvidedTypeEetHostingAssemblyFoundWithoutHostsAetEmptyNamespaceOfTypeNotAllowed5etEmptyNamespaceNotAllowed%etMustNotBeGeneric%etMustNotBeAnArray/etMethodHasRequirements/etUnsupportedMemberKind?etPropertyCanReadButHasNoGetter?etPropertyHasGetterButNoCanReadAetPropertyCanWriteButHasNoSetterAetPropertyHasSetterButNoCanWrite_etOneOrMoreErrorsSeenDuringExtensionTypeSettingWetUnexpectedExceptionFromProvidedTypeMember3etUnsupportedConstantType?etUnsupportedProvidedExpression?etProvidedTypeHasUnexpectedNameetEventNoAddetEventNoRemoveEetProviderHasWrongDesignerAssemblyKetProviderDoesNotHaveValidConstructoretProviderError=etIncorrectParameterExpression3etIncorrectProvidedMethod=etIncorrectProvidedConstructorUetDirectReferenceToGeneratedTypeNotAllowed?etProvidedTypeHasUnexpectedPathMetUnexpectedNullFromProvidedTypeMember[etUnexpectedExceptionFromProvidedMemberMember/,,,%s,,,%s,,,%s,,,%s,,,€etNestedProvidedTypesDoNotTakeStaticArgumentsOrGenericParameters/etInvalidStaticArgumentIetErrorApplyingStaticArgumentsToType7etUnknownStaticArgumentKind?invalidNamespaceForProvidedType=invalidFullNameForProvidedType-etProviderReturnedNullEetTypeProviderConstructorException1etNullProvidedExpressionCetProvidedAppliedTypeHadWrongNametcTypeTestLossy!tcTypeCastErased!tcTypeTestErased;tcCannotInheritFromErasedTypeCetInvalidTypeProviderAssemblyName/tcInvalidMemberNameCtor[tcInferredGenericTypeGivesRiseToInconsistency5tcInvalidTypeArgumentCount9tcCannotOverrideSealedMethod5etProviderErrorWithContext?etProvidedTypeWithNameExceptionCetProvidedTypeWithNullOrEmptyName;etIllegalCharactersInTypeName5tcJoinMustUseSimplePattern1tcMissingCustomOperation-etBadUnnamedStaticArgs?etStaticParameterRequiresAValue7etNoStaticParameterWithNameAetStaticParameterAlreadyHasValueCetMultipleStaticParameterWithName€…tcCustomOperationMayNotBeUsedInConjunctionWithNonSimpleLetBindingsCtcCustomOperationMayNotBeUsedHereGtcCustomOperationMayNotBeOverloadedWtcTryFinallyMayNotBeUsedWithCustomOperatorsQtcTryWithMayNotBeUsedWithCustomOperatorsWtcIfThenElseMayNotBeUsedWithCustomOperatorskilxgenUnexpectedArgumentToMethodHandleOfDuringCodegenMetProvidedTypeReferenceMissingArgumentEetProvidedTypeReferenceInvalidTextCtcCustomOperationNotUsedCorrectlyEtcCustomOperationNotUsedCorrectly27customOperationTextLikeJoinAcustomOperationTextLikeGroupJoin5customOperationTextLikeZipAtcBinaryOperatorRequiresVariable3tcOperatorIncorrectSyntax9tcBinaryOperatorRequiresBodyKtcCustomOperationHasIncorrectArgCountAparsExpectedExpressionAfterToken5parsExpectedTypeAfterToken/parsUnmatchedLBrackLess9parsUnexpectedEndOfFileMatch5parsUnexpectedEndOfFileTry9parsUnexpectedEndOfFileWhile5parsUnexpectedEndOfFileFor7parsUnexpectedEndOfFileWith7parsUnexpectedEndOfFileThen7parsUnexpectedEndOfFileElse=parsUnexpectedEndOfFileFunBody?parsUnexpectedEndOfFileTypeArgsIparsUnexpectedEndOfFileTypeSignatureKparsUnexpectedEndOfFileTypeDefinitionIparsUnexpectedEndOfFileObjectMembersCparsUnexpectedEndOfFileDefinitionCparsUnexpectedEndOfFileExpression5parsExpectedNameAfterToken!parsUnmatchedLet)parsUnmatchedLetBang)parsUnmatchedUseBang!parsUnmatchedUse'parsWhileDoExpected#parsForDoExpected/tcInvalidRelationInJoin#typeInfoCallsWordEimpInvalidNumberOfGenericArguments5impInvalidMeasureArgument15impInvalidMeasureArgument2AetPropertyNeedsCanWriteOrCanRead-tcIntoNeedsRestOfQuery5tcOperatorDoesntAcceptInto1tcCustomOperationInvalidQtcThisTypeMayNotHaveACLIMutableAttributeetcAutoPropertyRequiresImplicitConstructionSequenceOparsMutableOnAutoPropertyShouldBeGetSetcparsMutableOnAutoPropertyShouldBeGetSetNotJustSet'chkNoByrefsOfByrefs3etTypeProviderNotApproved'tastopsMaxArrayFour3tcNoIntegerForLoopInQuery!tcNoWhileInQuery+tcNoTryFinallyInQuery5tcUseMayNotBeUsedInQueries7tcBindMayNotBeUsedInQueries;tcReturnMayNotBeUsedInQueries7tcUnrecognizedQueryOperator=tcTryWithMayNotBeUsedInQueries9tcNonSimpleLetBindingInQuery3etTooManyStaticParameters%,,,%d,,,%d,,,%d,,,AinfosInvalidProvidedLiteralValue+invalidPlatformTarget5tcThisValueMayNotBeInlined9etErasedTypeUsedInGenerationCtcUnrecognizedQueryBinaryOperatorIinvalidPlatformTargetForOldFrameworkcrefNoSetOfHole1nicePrintOtherOverloads11nicePrintOtherOverloadsNerasedTo1parsUnfinishedExpressionGcrefQuotationsCantContainByrefTypes;parsAttributeOnIncompleteCode3parsTypeNameCannotBeEmpty7buildProblemReadingAssembly-tcTPFieldMustBeLiteral%loadingDescription-descriptionUnavailableAchkTyparMultipleClassConstraints9tcMatchMayNotBeUsedWithQuery[memberOperatorDefinitionWithNonTripleArgument=cannotResolveNullableOperators)tcOperatorRequiresInUparsIllegalMemberVarInObjectImplementationCtcEmptyCopyAndUpdateRecordInvalid=parsUnderscoreInvalidFieldNameStcGeneratedTypesShouldBeInternalOrPrivateMchkGetterAndSetterHaveSamePropertyType[tcRuntimeSuppliedMethodCannotBeUsedInUserCode=destFunTy: not a function type)bad format specifier\n \t \r \"" %+0.8Ag10%unrecognized input {0}{1}:-IThe item was not found in collection%ReadOnlyCollectionend of streamFromBytes1ReadBytes: end of streamSnull ITypeProvider in Tainted constructor array*;(id=%d)(id=%d,name=%s) %A ms %s%s,7%s (%d,%d)-(%d,%d) %s %s %swarning errorrreferenceI load timecdsilentCdq quit help nowarn# SyncOp%GetNavigationItems5ValidateBreakpointLocation <Note>%A: %+A!CompilerServicesGetDeclarations .fsiGetDataTipTextGetF1Keyword=GetDeclItemsForNamesAtPosition {0} {0} SCheckOptions(%s) Files: %s Options: %sGetMethods-GetDeclarationLocation+GetExtraColorizations€½/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/service.fsUntypedParse'UntypedParseForSlotGetSlotsCountMatchBracesTypeCheckSource/InvalidateConfigurationInvalidateAllReactor7CreateOneIncrementalBuilderGImport mscorlib and FSharp.Core.dll1Import system referencesParse inputs9Import non-system referencesTypecheckTypecheckedCOMPILEDImport mscorlib?Incremental Parse and Typecheckout. Bytes?FSharp.LanguageService.Compiler.sigdata2.0.0.0.optdataSystem.NumericsYSystem.Reflection.AssemblyDelaySignAttributeUSystem.Reflection.AssemblyKeyFileAttributeUSystem.Reflection.AssemblyKeyNameAttribute en-USUSystem.Reflection.AssemblyVersionAttribute)Write Interface File;Write XML document signaturesWrite XML docsWrite HTML docs+Encode Interface Data;Note, optimizations are off. !Encoding OptData.fsdataTAST -> ILX9System.SerializableAttribute%ILX -> IL (Unions)#ILX -> IL (Funcs)#Write .NET Binary!Write Stats File%sExitingEErrorLoggerThatQuitsAfterMaxErrors5DelayAndForwardErrorLogger .resx .dll AST: %+ASystem.ITupleMunreachable: expected a local resource'Writing assembly...stats.txtFSharp.Coremscorlib SystemSystem.CoreSystem.Xml3Microsoft.Build.Framework3Microsoft.Build.Utilities#Find dependencies)Relocating %s to %s €ÕGenerating simple class '%s' because we didn't find an original type '%s' in a provider generated assembly)ReflectedDefinitions<Module>%System.EnvironmentQMicrosoft.FSharp.Core.PrivateEnvironment]System.Runtime.TargetedPatchingOptOutAttributeadding provider-generated assembly '%s' into static linking setOdeciding whether to rewrite type ref %A7rewriting type ref %A to %A/implanting '%s' at '%s'uKeep provided type %s in place because it wasn't relocated1Find assembly referencesStatic link7Have [<Generate>] root '%s'1Creating main module... ]System.Reflection.AssemblyAlgorithmIdAttributeUSystem.Reflection.AssemblyCultureAttributeQSystem.Reflection.AssemblyFlagsAttribute]System.Reflection.AssemblyFileVersionAttributeoSystem.Reflection.AssemblyInformationalVersionAttribute000004b0 v4.0+default.win32manifest v3.5;..\v3.5\default.win32manifestSystem.Runtime.CompilerServices.CompilationRelaxationsAttribute.resources!Assembly Version%d.%d.%d.%dFileVersionProductVersionComments]System.Reflection.AssemblyDescriptionAttributeFileDescriptionQSystem.Reflection.AssemblyTitleAttributeProductNameUSystem.Reflection.AssemblyProductAttributeCompanyNameUSystem.Reflection.AssemblyCompanyAttributeLegalCopyrightYSystem.Reflection.AssemblyCopyrightAttributeLegalTrademarksYSystem.Reflection.AssemblyTrademarkAttributeStringFileInfoVarFileInfoVS_VERSION_INFOTranslationT:xmlM<?xml version="1.0" encoding="utf-8"?> <doc>I<assembly><name>%s</name></assembly><members></members> </doc>%<member name="%s"></member> #light %s System.Tuple`1System.Tuple`2System.Tuple`3System.Tuple`4System.Tuple`5System.Tuple`6System.Tuple`7System.Tuple`8System.TupleQSystem.Collections.IStructuralComparableOSystem.Collections.IStructuralEquatable3System.AggregateException]System.Threading.CancellationTokenRegistrationESystem.Threading.CancellationTokenQSystem.Threading.CancellationTokenSourceSystem.Lazy`1)System.IObservable`1%System.IObserver`15System.Numerics.BigInteger7FSHARP_DEBUG_STATIC_LINKING-d:--define:startup ErrorHandler%s%s: %s?unreachable'GetStaticParameters ?%s:params %s: %s: 5Microsoft.FSharp.Core.Unit-mFSharp_BuildCacheSizeUmFSharp_RecentForegroundTypeCheckCacheSize7mFSharp_BraceMatchCacheSizeAmFSharp_UntypedCheckMruCacheSizeImFSharp_MaxErrorsOutOfProjectContextO line=%+A,colAtEndOfNames=%+A,names=%+A7 line=%+A,idx=%+A,names=%+AAline = %d, idx = %d, names = %+A intog plid=%+A residueOpt=%+A line=%d colAtEndOfNames=%dAttributeQ at=(%d:%d),names=%+A tag=%d tokenId=%+A+ at=(%d:%d),names=%+A= at=(%d:%d),names=%+A,flag=%+A!UntypedParseImplThreadPool#GetSlotsCountImplMatchBracesImpl'TypeCheckSourceImpl-r:--nowarn:--noframework--warn:3.fsprojsReceived notification to invalidate build for options: %AChangeEvents3InvalidateBuildCacheEntryoptions = %+AserviceuA build cache entry is being invalidated because of a : %s %s: %sAfile stored in metadata is '%s' cannot happen ``%dM:P:F:E: %s%s .%s: %s %s: = %s %s %s () %s .%s (%s %s : :  ``%s.%s%s .#ctor;mFSharp_MaxMembersInQuickInfo7mFSharp_DataTipSpinWaitTime[])Unexpected empty bagop_ArrayLookup ClassAbstractClassInterface Struct€Õ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/ServiceUntypedParse.fsop_RangeINTERACTIVEEDITINGop_Equality dummy%s_%d_of_%d'tycon as member???? filemod landlor lxorlsllsrasrtokenInfoc:\fsharp\log-m .log#c:\fsharp\trace-m .txt[[Bug]Did not expect %s during FinishingBuild.StopBuildFinishBuildingStartBuild!StartRecentBuild StepAsyncOpFinishBuild Idling!ActivelyBuildingFinishingBuildBackgroundError-Background warning: %s)Background error: %sncn must be between 0 and %d, inclusive, but got %d]FileDependency(%s,existence=%A,incremental=%A)/CompilationErrorLogger(5nonFrameworkAssemblyInputsFileNames)ReferencedAssemblies)SourceFileTimeStamps Parse7TimestampReferencedAssembly3CombineImportedAssembliesTypeCheck#FinalizeTypeCheckParseTrees%TypeCheckingStatesInitialTcAcc1Build was not evaluated.#Cannot know sizesParseTask'last chance failure?TimestampReferencedAssemblyTask;CombineImportedAssembliesTaskTypeCheckTask1CreateIncrementalBuilderMExpected vector to have vector result.aGetExprById did not find an expression for Id %d?Attempt to get width of scalar.UGetScalarExprResult had no match for %A,%AaGetVectorExprResultVector had no match for %A,%AUGetVectorExprResult had no match for %A,%A#wrong result type/IncrementalBuildVerboseForeachActionApplyResultUnexpectedEvalLeafsFirstBuildActionListGetScalarResult!Expected scalar.3Expected a scalar result.!Expected vector.5Expected vector expressionsCould not find requested input '%A' named '%s' in set %+AECould not find requested input: %A Id(%d)%InputScalar(%d,%s)1ScalarDemultiplex(%d,%s)!ScalarMap(%d,%s)%VectorInput(%d,%s)+VectorScanLeft(%d,%s)!VectorMap(%d,%s)%VectorStamp(%d,%s)-VectorMultiplex(%d,%s)%VectorBuildRule ve%ScalarBuildRule seWTwo build expressions had the same name: %s%Anot in progressNotAvailableInProgress1Available('%s' as of %A)'No available result!VectorResult(%s)!ScalarResult(%s)=IndexedResult(%d,%d,%d,obj,%A)AScalarValuedResult(%d,obj,%A,%A)EVectorValuedResult(%d,obj[],%A,%A)'ResizeResult(%d,%d) [,  ]5{Rules={%s} Results={%s}}3 {Id=%d,ResultSet=%s}IExpected all results to be availablename=%s!ExecuteOneAction3IncrementalBuildWorkUnits%s over slot %d)mFSharp_MaxTimeShareErrorScopeexpected 0/1exe winexelibrary modulepdbonly full<string> <file><file;...><dir;...><path;...><resinfo>{full|pdbonly}<warn;...><symbol;...><address><n>= jitOptUser . . . . . . : %+A= localOptUser . . . . . : %+A= crossModuleOptUser . . : %+A= lambdaInlineThreshold : %+A= ignoreSymStoreSeqPts . : %+A= doDetuple . . . . . . : %+A= doTLR . . . . . . . . : %+A= doFinalSimplify. . . . : %+A= jitTracking . . . . . : %+A= debuginfo . . . . . . : %+A= resolutionEnvironment : %+A= product . . . . . . . : %+A; include . . . . . . . : %A--referencewarnaserror warn warnonconsolecolors targetdelaysigndockeyfilekeycontainerplatform%nooptimizationdatanointerfacedatasigwin32reswin32manifestnowin32manifestresourcelinkresource debugoptimizetailcallscrossoptimizemlcompatibilitychecked definelib --libcodepageutf8outputfullpathsclirootnoframework testvserrors/validate-type-providers LCIDflaterrorsmaxerrors+use-incremental-build stamps--stamps ranges--ranges terms--termstermsfile--termsfile pause--pausedetuple--detuple#simulateException'--simulateExceptioniSimulate an exception from some part of the compiler!stackReserveSize%--stackReserveSizeEfor an exe, set stack reserve sizetlr --tlr)mscorlibAssemblyNamefinalSimplify--finalSimplifyparseonly--parseonlytypecheckonly--typecheckonlyast --asttokenize--tokenize+testInteractionParser/--testInteractionParser/testparsererrorrecovery3--testparsererrorrecoveryinlinethreshold#--inlinethreshold-extraoptimizationloops1--extraoptimizationloopsabortonerror--abortonerror%implicitresolution)--implicitresolutionresolutions?resolutionframeworkregistrybase=resolutionassemblyfoldersuffixGresolutionassemblyfoldersconditions#msbuildresolution1indirectcallarraymethods5--indirectCallArrayMethodsalwayscallvirtnodebugdata--nodebugdatajitlocaloptimizesplittingversionfile times/showextensionresolutionmetadataversioncompiling-fslib#--compiling-fslib%compiling-fslib-20)--compiling-fslib-20%compiling-fslib-40)--compiling-fslib-40!gnu-style-errors%--gnu-style-errors light--light%indentation-syntax)--indentation-syntax+no-indentation-syntax/--no-indentation-syntaxjit-optimize--jit-optimizeno-jit-optimize#--no-jit-optimizejit-tracking--jit-trackingno-jit-tracking#--no-jit-trackingprogress--progressversion--versionlocal-optimize!--local-optimize#no-local-optimize'--no-local-optimizecross-optimize!--cross-optimize#no-cross-optimize'--no-cross-optimize'no-string-interning+--no-string-interningstatistics--statistics-generate-filter-blocks1--generate-filter-blocksmax-errors--max-errors--maxerrorsdebug-file--debug-file --pdbno-debug-file--no-debug-file--debug- Ooff -Ooff--optimize- nologod--defineO--optimize[+|-]g--debugi --sigo --outa!--target library --helpfull-help/3dumpAllCommandLineOptions .termsE ------------------ showTerm: %s: ) ------------------ Y[done '%s', entering '%s'] press any key... fsc-oom fsc-ansimulatedfsc-invop fsc-avfsc-aorfsc-dv0fsc-nfn fsc-oefsc-atmmfsc-biffsc-knffsc-ior fsc-ic fsc-ip fsc-ma fsc-ni fsc-nr fsc-ocfsc-failCTIME: %4.1f Delta: %4.1f Mem: %3d= G0: %3d G1: %2d G2: %2d [%s] pass-startOptimizationspass-end)Ending Optimizations/Generating ILX code... dllnetmodulex86x64Itanium)anycpu32bitpreferred anycpu62baseaddressstandalonestaticlinkresidentpdb!simpleresolutionhighentropyva!subsystemversionErrorRanges!MemberBodyRangesTracking!NoNeedToTailcallFunctionSizesTotalSizesHasEffectNoErrorText%EmitFeeFeeAs100001DumpDebugInfo)ShowLoadedAssemblies3ContinueAfterParseFailure42ml-keywords--ml-keywordsWConstraintSolverTypesNotInEqualityRelation1WConstraintSolverTypesNotInEqualityRelation2[ConstraintSolverTypesNotInSubsumptionRelation %s%s%s%Parser.TOKEN.OTHEN%Parser.TOKEN.OELSE#Parser.TOKEN.OLET'Parser.TOKEN.BINDER!Parser.TOKEN.ODO%Parser.TOKEN.OWITH-Parser.TOKEN.OFUNCTION#Parser.TOKEN.OFUN'Parser.TOKEN.ORESET'Parser.TOKEN.ODUMMY+Parser.TOKEN.ODO.BANG%Parser.TOKEN.YIELD/Parser.TOKEN.YIELD.BANG=Parser.TOKEN.OINTERFACE.MEMBER#Parser.TOKEN.ELIF'Parser.TOKEN.RARROW!Parser.TOKEN.SIG'Parser.TOKEN.STRUCT'Parser.TOKEN.UPCAST+Parser.TOKEN.DOWNCAST#Parser.TOKEN.NULL+Parser.TOKEN.RESERVED'Parser.TOKEN.MODULE!Parser.TOKEN.ANDParser.TOKEN.AS'Parser.TOKEN.ASSERT!Parser.TOKEN.ASR'Parser.TOKEN.DOWNTO-Parser.TOKEN.EXCEPTION%Parser.TOKEN.FALSE!Parser.TOKEN.FOR!Parser.TOKEN.FUN+Parser.TOKEN.FUNCTION)Parser.TOKEN.FINALLY#Parser.TOKEN.LAZY%Parser.TOKEN.MATCH)Parser.TOKEN.MUTABLE!Parser.TOKEN.NEWParser.TOKEN.OF#Parser.TOKEN.OPENParser.TOKEN.OR#Parser.TOKEN.VOID'Parser.TOKEN.EXTERN-Parser.TOKEN.INTERFACE!Parser.TOKEN.RECParser.TOKEN.TO#Parser.TOKEN.TRUE!Parser.TOKEN.TRY#Parser.TOKEN.TYPE!Parser.TOKEN.VAL'Parser.TOKEN.INLINE#Parser.TOKEN.WHEN%Parser.TOKEN.WHILE#Parser.TOKEN.WITHParser.TOKEN.IFParser.TOKEN.DO'Parser.TOKEN.GLOBAL#Parser.TOKEN.DONEParser.TOKEN.INMParser.TOKEN.HIGH.PRECEDENCE.PAREN.APPMParser.TOKEN.HIGH.PRECEDENCE.BRACK.APP%Parser.TOKEN.BEGIN!Parser.TOKEN.END/Parser.TOKEN.HASH.ENDIF3Parser.TOKEN.INACTIVECODE1Parser.TOKEN.LEX.FAILURE/Parser.TOKEN.WHITESPACE)Parser.TOKEN.COMMENT3Parser.TOKEN.LINE.COMMENT1Parser.TOKEN.STRING.TEXT-Parser.TOKEN.BYTEARRAY'Parser.TOKEN.STRING7Parser.TOKEN.KEYWORD_STRING!Parser.TOKEN.EOF%Parser.TOKEN.CONST-Parser.TOKEN.OBLOCKEND%Parser.TOKEN.IDENT!Parser.TOKEN.INT%Parser.TOKEN.FLOAT)Parser.TOKEN.DECIMAL#Parser.TOKEN.CHAR#Parser.TOKEN.BASE?Parser.TOKEN.LPAREN.STAR.RPAREN'Parser.TOKEN.DOLLAR?Parser.TOKEN.INFIX.STAR.STAR.OP;Parser.TOKEN.INFIX.COMPARE.OP5Parser.TOKEN.COLON.GREATER1Parser.TOKEN.COLON.COLON/Parser.TOKEN.PERCENT.OP9Parser.TOKEN.INFIX.AT.HAT.OP3Parser.TOKEN.INFIX.BAR.OP5Parser.TOKEN.PLUS.MINUS.OP-Parser.TOKEN.PREFIX.OPAParser.TOKEN.COLON.QMARK.GREATEREParser.TOKEN.INFIX.STAR.DIV.MOD.OP3Parser.TOKEN.INFIX.AMP.OP!Parser.TOKEN.AMP)Parser.TOKEN.AMP.AMP)Parser.TOKEN.BAR.BAR#Parser.TOKEN.LESS)Parser.TOKEN.GREATER%Parser.TOKEN.QMARK1Parser.TOKEN.QMARK.QMARK1Parser.TOKEN.COLON.QMARK5Parser.TOKEN.INT32.DOT.DOT)Parser.TOKEN.DOT.DOT%Parser.TOKEN.QUOTE#Parser.TOKEN.STAREParser.TOKEN.HIGH.PRECEDENCE.TYAPP%Parser.TOKEN.COLON3Parser.TOKEN.COLON.EQUALS'Parser.TOKEN.LARROW'Parser.TOKEN.EQUALS?Parser.TOKEN.GREATER.BAR.RBRACK%Parser.TOKEN.MINUS?Parser.TOKEN.ADJACENT.PREFIX.OPAParser.TOKEN.FUNKY.OPERATOR.NAME%Parser.TOKEN.COMMA!Parser.TOKEN.DOT!Parser.TOKEN.BAR#Parser.TOKEN.HASH/Parser.TOKEN.UNDERSCORE-Parser.TOKEN.SEMICOLONAParser.TOKEN.SEMICOLON.SEMICOLON'Parser.TOKEN.LPAREN'Parser.TOKEN.RPAREN'Parser.TOKEN.LQUOTE'Parser.TOKEN.LBRACK/Parser.TOKEN.LBRACK.BAR1Parser.TOKEN.LBRACK.LESS'Parser.TOKEN.LBRACE1Parser.TOKEN.LBRACE.LESS/Parser.TOKEN.BAR.RBRACK7Parser.TOKEN.GREATER.RBRACE7Parser.TOKEN.GREATER.RBRACK'Parser.TOKEN.RQUOTE'Parser.TOKEN.RBRACK'Parser.TOKEN.RBRACE'Parser.TOKEN.PUBLIC)Parser.TOKEN.PRIVATE+Parser.TOKEN.INTERNAL/Parser.TOKEN.CONSTRAINT+Parser.TOKEN.INSTANCE+Parser.TOKEN.DELEGATE)Parser.TOKEN.INHERIT1Parser.TOKEN.CONSTRUCTOR)Parser.TOKEN.DEFAULT+Parser.TOKEN.OVERRIDE+Parser.TOKEN.ABSTRACT%Parser.TOKEN.CLASS'Parser.TOKEN.MEMBER'Parser.TOKEN.STATIC-Parser.TOKEN.NAMESPACE1Parser.TOKEN.OBLOCKBEGIN1NONTERM.Category.Pattern+NONTERM.Category.Expr+NONTERM.Category.Type-NONTERM.typeArgsActualFixKeywordFixSymbolFixReplace!BlockEndSentence=TokenName1TokenName2TokenName3)TokenName1TokenName2TokenName1#ValueRestriction1#ValueRestriction2#ValueRestriction3#ValueRestriction4#ValueRestriction5AConstraintSolverTupleDiffLengths %d%dSeeAlso;ConstraintSolverInfiniteTypesCConstraintSolverMissingConstraint+ConstraintSolverError %s9ErrorFromAddingTypeEquation19ErrorFromAddingTypeEquation23ErrorFromApplyingDefault13ErrorFromApplyingDefault2KErrorsFromAddingSubsumptionConstraint9UpperCaseIdentifierInPattern/NotUpperCaseConstructor!PossibleOverload!FunctionExpected7BakedInMemberConstraintName-BadEventTransformation/ParameterlessStructCtor)InterfaceNotRevealedNotAFunction1NotAFunction2TyconBadArgs %s%d%d#IndeterminateTypeNameClash1NameClash2%s%s%s%s%s memberDuplicate1Duplicate2FieldNotMutable1FieldsFromDifferentTypesVarBoundTwiceRecursion%s%s%s%s-InvalidRuntimeCoercion9IndeterminateRuntimeCoercion7IndeterminateStaticCoercion5StaticCoercionShouldUseBox1TypeIsImplicitlyAbstractNonRigidTypar2NonRigidTypar3NonRigidTypar1)UnexpectedEndOfInput9RuntimeCoercionSourceSealed19RuntimeCoercionSourceSealed2)CoercionTargetSealed#UpcastUnnecessary'TypeTestUnnecessary/OverrideDoesntOverride2/OverrideDoesntOverride3/OverrideDoesntOverride1/UnionCaseWrongArguments?UnionPatternsBindDifferentNames|/RequiredButNotSpecified-UseOfAddressOfOperator)DefensiveCopyWarningIDeprecatedThreadStaticBindingWarning/FunctionValueUnexpected#UnitTypeExpected2#UnitTypeExpected19RecursiveUseCheckedAtRuntimeLetRecUnsound1LetRecUnsound23LetRecEvaluatedOutOfOrder-LetRecCheckedAtRuntimeSelfRefObjCtor2SelfRefObjCtor1GVirtualAugmentationOnNullValuedTypeMNonVirtualAugmentationOnNullValuedType=NonUniqueInferredAbstractSlot1=NonUniqueInferredAbstractSlot2=NonUniqueInferredAbstractSlot3=NonUniqueInferredAbstractSlot4Failure1Failure2Failure3Failure4FullAbstraction!MatchIncomplete1!MatchIncomplete3!MatchIncomplete2!MatchIncomplete4!RuleNeverMatchedValNotMutableValNotLocalObsolete1Obsolete2Experimental1PossibleUnverifiableCodeDeprecatedLibraryUseOnlyMissingFields+RecoverableParseErrorReservedKeyword%IndentationProblem?OverrideInIntrinsicAugmentation?OverrideInExtrinsicAugmentation?IntfImplInIntrinsicAugmentation?IntfImplInExtrinsicAugmentation5UnresolvedReferenceNoRange=UnresolvedPathReferenceNoRangeAHashIncludeNotAllowedInNonScriptEHashReferenceNotAllowedInNonScriptEHashDirectiveNotAllowedInNonScript'FileNameNotResolved'AssemblyNotResolved5HashLoadedSourceHasIssues15HashLoadedSourceHasIssues2AHashLoadedScriptConsideredSourceMInvalidInternalsVisibleToAssemblyName2MInvalidInternalsVisibleToAssemblyName19LoadedSourceNotFoundIgnoring?MSBuildReferenceResolutionErrorATargetInvocationExceptionWrapper\MFile "%s", line %d, characters %d-%d: %s(%d,%d): #%s(%d,%d-%d,%d): #%s(%d,%d,%d,%d): %s %s FS%04d: %s FS%04d: 1Unexpected ReportedError3Unexpected StopProcessing %s%s %s%s%s €½HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.5 v4.5 .netmodule .exe $fsx_fsxfsscript`global`'FSharpSignatureData-FSharpOptimizationData)UnpickleFromResourceGetTypes'GetNestedNamespacesonoff tc-oom tc-antc-invop tc-av tc-aor tc-dv0 tc-nfn tc-oetc-atmm tc-bif tc-knf tc-ior tc-ic tc-ip tc-ma tc-ni tc-nr tc-octc-fail-- --%s--%s:%s--%s[+|-]--%s[+|-]:%s--%s ... %s:%s %-30s %sIsection='%-25s' ! option=%-30s kind=OptionUnitOptionSetOptionClearOptionHelp!OptionStringListOptionIntListOptionSwitch-OptionStringListSwitch'OptionIntListSwitchOptionStringOptionIntOptionFloatOptionRestOptionGeneral+GNONTERM.Category.ImplementationFile7NONTERM.Category.Definition=NONTERM.Category.SignatureFile'NONTERM.interaction+NONTERM.hashDirective#NONTERM.fieldDecl+NONTERM.unionCaseRepr)NONTERM.localBinding9NONTERM.hardwhiteLetBindings/NONTERM.classDefnMember)NONTERM.defnBindings/NONTERM.classMemberSpfnNONTERM.valSpfn#NONTERM.tyconSpfn-NONTERM.anonLambdaExpr3NONTERM.attrUnionCaseDecl%NONTERM.cPrototypeGNONTERM.objectImplementationMembers'NONTERM.ifExprCases!NONTERM.openDecl-NONTERM.fileModuleSpec-NONTERM.patternClauses)NONTERM.beginEndExpr!NONTERM.recdExpr#NONTERM.tyconDefn#NONTERM.exconCore)NONTERM.typeNameInfo+NONTERM.attributeList#NONTERM.quoteExpr-NONTERM.typeConstraint%LetRecUnsoundInner/System.Runtime.RemotingYSystem.Runtime.Serialization.Formatters.SoapSystem.DataSystem.Drawing€System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Web'System.Web.Services)System.Windows.FormsSystem.Net#System.DeploymentSystem.Design!System.Messaging#System.Observable0.0.0.0+AssemblyReference(%s)SExpected a valid defaultFSharpBinariesDirASoftware\Microsoft\.NetFramework#AssemblyFoldersEx-(private, test-signed)€³/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../build.fs publicprivate v%d.%d4.0IMSBuild resolution is not supported. amd64 ia64 MSIL source%s MSB3246MSB3106MSB3245GErrorLoggerFilteringByScopedPragmas%DelayedErrorLoggerKtokenize - getting one token from %s /tokenize - got %s @ %a +!!! at end of stream 3Parsed OK, got hash @ %a 9Parsed OK, got %d defs @ %a =parsing yielded %d definitions1parsing yielded %d specsIFSharp.Compiler.Interactive.Settings€³tcImports = dllInfos=%A dllTable=%A ccuInfos=%A ccuTable=%A Base=%s None .pdb€¯unreachable: GetGlobals - are the references to mscorlib.dll and FSharp.Core.dll valid?€™Unexpected representation in namespace entity referred to by a type provider€£Found extension type hosting hosting assembly '%s' with the following extensions:GetNamespaces€éPrepareToImportReferencedIlDll: cannot reference .NET netmodules directly, reference the containing assembly insteadsigdataUBuildFoundationalTcImports: no sysCcu for ]BuildFrameworkTcImports: no resolution of '%s'cBuildFrameworkTcImports: no successful import of /not ILScopeRef.Assembly€“Unexpected ILScopeRef.Local or ILScopeRef.Assembly in exported type tableThe provider ''' reported a changesrc\fsharp\optdata!FSharp.PowerPack+FSharp.PowerPack.Linq3FSharp.PowerPack.Metadata ..\lib%-30s %sNoSectionFindClosureGetLoadClosure .mli.ml.fs.fsscript .fsx__DebugDisplay<StartupCode$>.$=<PrivateImplementationDetails$>GGenUnionRef m: unexpected ASM tyrepGenUnionRef m€©CodeGen check: type checking did not ensure that this method is sufficiently generic-This instance method '%' has no argumentsACodeGen check: type checking did not quantify the correct number of type variables for this method, #parentTypars = %d, #ctps = %d, #mtps = %d, #thisArgTys = %dYComputeStorageForTopVal: no arity found for get_ set_oComputeStorageForNonLocalTopVal, expected an arity for field start_ end_€µ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../ilxgen.fs%Unexpected reclink1Unexpected Expr.TyChooseletGUnexpected operator node expressioncontinuediscard; ReturnVoid'CmpThenBrOrContinue ReturnEndLocalScope( Br L%sLeaveHandlerEndFilter1EndLocalScope unexpected)getCompiledTupleItem-GenUntupledArgExpr (2)arguntuplelength mismatch9System.Reflection.MethodInfo9System.Reflection.MethodBase5System.RuntimeMethodHandleWMicrosoft.FSharp.Compiler.Interactive.Utils#MakeGenericMethod!get_MethodHandlefindMethod%GetFunctionPointercallstack??DirectInvoke tryrestrystackendLoop/%s: bad instruction: %A=Bad polymorphic IL instruction+NotSupportedExceptioncontents ilzeroUTResultU1TResult1U2TResult2T+fixupVirtualSlotFlagsfixupMethodImpl%GetFreshEnumerator Closeget_CheckCloseGenerateNext next#get_LastGenerated/GenLambda: not a lambdaclo€¹AdjustNamedLocalTypeFuncIlxClosureInfo: local functions can currently only be type functionsUGetIlxClosureInfo: not a lambda expression$contract .ctorSystem.UIntPtr Invoke _join€Ëinternal error: matches that immediately succeed should have been normalized using mkAndSimplifyMatch matchdtreeBindYGetTarget: target not found in decision treetargetBindsinternal error: GenDecisionTreeSwitch: Test.IsInst/isnull/queryKinternal error: GenDecisionTreeSwitchIthese matches should never be needed;should have been done earlier!internal error: €çnon-dense integer matches not implemented in codegen - these should have been removed by the pattern match compilercinternal error in codegen: Test.ActivePatternCase=internal error: Test.UnionCaseiinternal error: GenDecisionTreeTest during bool elim letrec .cctor valueSizeParamIndexArraySubType!SafeArraySubType7SafeArrayUserDefinedSubTypeSizeConst add_remove_op_oInternal error: empty argument list for instance method€ÓA property may not be more generic than the enclosing type - constrain the polymorphism in the expressionPreserveSigEntryPoint#CallingConventionCharSetExactSpellingSetLastError+ThrowOnUnmappableCharBestFitMapping)Unexpected generator9non-lambda at use of method Qgetting an unrealized value of type '%s'System.StringSystem.TypeThe type '[' may not be used as a custom attribute valueSystem.Int16System.ByteSystem.UInt16System.UInt32System.UInt64oinvalid custom attribute value (not a valid constant): cinvalid custom attribute value (not a constant): System.ObjectSystem.SByteSystem.Int32 $Main initCompareTo Equalsobj ItemQSystem.Reflection.DefaultMemberAttribute!op_IndexedLookup Pack Size infocontextGetObjectData-SerializationFormatterKUndefined or unsolved type variable: €ñCodeGen check: type checking did not quantify the correct type variables for this method: generalization list contained Q and list from 'this' pointer contained )FindTypeDefBuilder:  not found/NO_ADD_FEEFEE_TO_CCTORS'ADD_SEQPT_TO_CCTORS€…pop on empty stack during code generation, methodName = %s, m = %s€÷stack flush didn't work, or extraneous expressions left on stack before stack restore, methodName = %s, stack = %+A, m = %s+recursive label graph%s: %d: %A Fsi,res handle filter?Bad polymorphic ILX instructiondefaultOinternal error: badly formed const testIerror: mixed constructor/const test?GenLetRec: 7 was not in the environment/compute real fixup vars€‰internal error: should never need to set non-delayed recursive val:  spillYinternal error: unrecognized security action defs{ (),nq}value____dummy@wA free type variable was detected in a reflected definitionounexpected failure decoding quotation at ilxgen startup mainclosures]IL method defintitions corresponding to values[IL field defintitions corresponding to valuesMcallfunc instructions (indirect calls)unitVar'The method called '7' resolved to a non-IL type%No method called '' was found enumGetEnumeratorMoveNextget_CurrentvexneefpccurrentError: %s fclassMcarrierMapForaenvForcreateFHat - wfcreateFHat - fc9CreateNewValuesForTLR - envp&packEnv!TransTLRBindingsTransApp - wfTransApp - fcTransApp - envpTransApp - fHatfRebinding/fHatNewBinding - arityM-fHatNewBinding - fHatM;trl: popFrame has empty stackreqdTyparsFor)IsValueRecursionFreeKIsValueRecursionFree - hasDelayedRepr%Zmap.force: %s %s €…exprTS: Tuple[x] not expected. (singleton tuples should not exist.sexprTS: Tuple[] not expected. (units not done that way).WrebuildTS: not enough fringe to build tupleorebuildTS: had move fringe vars than fringe. REPORT BUG'_pcollapseArgs: CallPattern longer than callsite args. REPORT BUGCpassBinds: |vss|<p - detuple pass_trimByFormal: ts must be tuple?? PLEASE REPORT } aliaslamModules: Values:ValExprInfo: 9ValMakesNoCriticalTailcalls: true false€¯/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../opt.fs $contkunexpected return pattern from GetImmediateUseContextSystem.Arrayget_LengthYunexpected goto/label/return in optimizationkTryOptimizeRecordFieldGet: term argument out of rangeAerror: tuple lengths don't matcheTryOptimizeTupleFieldGet: tuple index out of rangegTryOptimizeUnionCaseGet: term argument out of rangeqtuple, union and record values cannot be marked 'inline'GStripToNominalTyconRef: unreachableavalue %s at line %d may make a critical tailcallkvalue %s at line %d does not make a critical tailcallKvalue %s at line %d has total size %dMvalue %s at line %d has method size %dfunction %s at line %d causes side effects or may not terminate[function %s at line %d causes no side effects-the mustinline value 'Q' was not inferred to have a known value optvalopt data opttab loopMicrosoft FSharp Core!OptionalArgument?<-.Static.Override€­/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tc.fsBuildFieldMap fldsOnot a union case or exception reference itemDisposeobjectToDisposeNullablematchValueget_ItemenumeratorinputSequence.. .. ..€¥GetInstanceMemberThisVariable: instance member did not have expected internal formwUnexpected MemberKind.PropertyGetSet from signature parsing<unimplemented>^!empty tuple typeeTcNestedTypeApplication: expected type application TcPat~&~&& upcastdowncastinOnly zero or one pushed items are permitted in IL assembly code7unexpected empty index listSetSliceGetSlice%LanguagePrimitives%IntrinsicFunctionsOperators%OperatorIntrinsicsGetStringGetStringSliceGetArraySlice4DGetArraySlice3DGetArraySlice2DGetArraySliceGetArray4DGetArrayGetArray3DGetArray2DSetArraySlice4DSetArraySlice3DSetArraySlice2DSetArraySliceSetArray4DSetArraySetArray3DSetArray2Dinheritnew3unexpected member binding this baseFromZeroFromOneFromInt32FromInt64FromStringNumericsBigIntegerNumericLiteralDiagnostics Debug AssertinputRecordQUnexpected failure in getting super typearridxforLoopVar Source_missingVar_innerSource=_keySelectors_keySelector2_secondSource_outerSource_innerComp?==??=?_keySelector1Combine Delay Using BindTryWithTryFinally ZeroYieldFromReturnFrom YieldFor Whilebuilder Quote <@ @>Run KUnexpected error: empty property listGetNextArgeventTarget Value]System.Runtime.InteropServices.DispatchWrapper[System.Runtime.InteropServices.UnknownWrapperdefaultByrefArg€…at least one error should be returned by failed method overloadingGetHashCodeobjectArgreturnValyunreachable - expected some lambda vars for a tuple mismatch param typeconstructor event returnproperty methodassembly€¥TcLetBindings: let sequence is non linear. Maybe a LHS pattern was not linearised? doval FSI_uName resolution does not match overriden for method groupsoName resolution does not match overriden for propertiesName resolution does not match overriden for constructor groupsimpossible#JoinConditionWord?MaintainsVariableSpaceUsingBind-MaintainsVariableSpace!AllowIntoPatternIsLikeZipIsLikeJoinIsLikeGroupJoin _arg'ApplyUnionCaseOrExneventDelegatecallback-Unexpected NotOptionalUnreachable Some outArgInheritedpatternInput getter setter7Unexpected generic property€ÅIntrinsic augmentations of types are only permitted in the same file as the definition of the type=Unexpected declaration element Module3Typecheck implementation Tuple`KList.takeUntil is wrong, have bindingKList.takeUntil is wrong, have slotsigOList.takeUntil is wrong, have interfacewimplicit class construction with two implicit constructionsWList.takeUntil is wrong, have auto propertySCheckMembersForm: List.takeUntil is wrongiCheckMembersForm: implicit ctor line should be first unit__`?should have inferred tycon kind#GetAllNestedTypes UnitException Dataunreachble+Unexpected definition5unexpected definition kind cctorgLookupRepr: failed to find representation for valuekUnexpected missing 'this' variable in MakeValueLookupkUnexpected missing 'this' variable in MakeValueAssignLocal was given method storage, yet later it's been assigned tosUnexpected missing 'this' variable in MakeValueGetAddress€‡Local was given method storage, yet later it's address was required Cons Empty Tagsunion caseenum elementhandlerAddHandlerRemoveHandlerCTestMemberBody,%A,%s,%d,%d,%d,%d €³/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../check.fs€…Tuple arity does not correspond to planned function argument arityTagNewIsop_Explicitop_ImplicitAllowMultiple€Çwarning: unexpected missing object argument when generating quotation for call to F# object member qvref.DisplayName = %A, #objArgs = %A, #curriedArgs = %AOvref.DisplayName = %A was under appliedQno arity information found for F# value €¹vref.DisplayName = %A , after unit adjust, #untupledCurriedArgs = %A, #curriedArgInfos = %d=unhandled construct in AST: %A7Unexpected expression shape%ConvModuleValueAppkignoring generic application of local quoted variableDebugRangeaTest.ActivePatternCase test in quoted expression!VERBOSE_CREFLECTSystem.Voidiresolving name '%s' in SingleTypeExtensionPoint '%s'€·/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../nameres.fsounexpected (property must have either getter or setter)5ResolveLongIdentInTypePrimUResolvePatternLongIdentInModuleOrNamespace?ResolveFieldInModuleOrNamespace< globaltype parameterGetNestedTypes/cannot happen: ILExtMemGetTypeToStringfmt0'SubstMeasure: rigid/SubstMeasure: kind=typealready solveddestArrayTy, ?>=?>?<=?<?<>>=?>?<=?<?<>? ?>=??>? ?<=??<? ?<>?€§this extension method on F# types was the unexpected solution to a trait constraint€¡the default struct constructor was the unexpected solution to a trait constraint€µ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../csolve.fs'SolveTyparEqualsTypop_Multiplyset_Itemget_Sign Atan2PowSinCosTan Sinh Cosh Tanh Atan Acos AsinExpCeiling Floor RoundTruncate Log10Log SqrtAbsop_LogicalNot#op_OnesComplement!op_UnaryNegationop_UnaryPlusop_LeftShiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrDivideByIntget_Oneget_Zeroop_Additionop_Subtractionop_Modulusop_Division Func)should not be called'some-non-null-value%some-other-subtype_<failure during counter example generation: %s>!not a const case€™ChooseInvestigationPointLeftToRight: no non-immediate patterns in first ruleeChooseInvestigationPointLeftToRight: no frontiers!5internal error: compactifyeTest.ActivePatternCase should have been eliminatedUinexhaustive match - need a default cases!Ointernal error: no edges and no default+MatchFailureExceptionGetClause%Unexpected pattern€¯CompilePattern:compile - empty clauses: at least the final clause should always succeed€Unexpected generalized type variables when compiling an active pattern'activePatternResulttypeTestResultQilltyped term during pattern compilationstrange switchtestExprunionCase€pattern compilation: GenerateNewFrontiersAfterSucccessfulInvestigation;Unexpected projection pattern€©recursive class hierarchy (detected in TypeDefinitelySubsumesTypeNoCoercion), ty1 = €‘recursive class hierarchy (detected in TypeFeasiblySubsumesType), ty1 = €—IteratedAdjustArityOfLambda, List.length arities = %d, List.length vsl = %daccessible;public, protected or internalC: cannot call a class constructor€¹/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../typrelns.fsdelegateArg'GetGenericArguments'GetInvokerExpressonGetParameters#multiple objArgs?_Unexpected shape for object expression override %s::%snamespace'get_GenericComparer7get_GenericEqualityComparerobjCastobjTempthisTagthatTag comp thatunitArgthisCastmkUnionComparethisCastuthatCastumkUnionEquality[||]namespace beginend withofmutable staticval get,set setdelegate ofA(# "<Common IL Type Omitted>" #) classinterface structexception(# ... #)and€»/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../NicePrint.fs nested|  = ?%s: static new : member  : ->  ) : () * with getwith set inlineyuysusuLULung12.0fM nullinternal <...>abstractoverridetypeof<typedefof<:>|||I(* unsupported attribute argument *)Measure ^%when <constraints>requires when :comparisonequalitydelegatevalue typeunmanagedreference typenot struct'default constructornew : unit -> or->1 ^ %dparams a%d Void Object String string Singlefloat32 Double floatDecimaldecimal Char char Byte byte SByte sbyte Int16 int16 Int32int Int64 int64 UInt16 uint16 UInt32 uint32 UInt64 uint64 IntPtrnativeintUIntPtrunativeintBoolean bool[] params#value unavailableE`Invoke` method could not be found!cannot show type[<>](**)...!System.ValueTypeValueTypenot supportedNot supported€³/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../infos.fsSinternal error in getting arguments, n = , #args = Unexpected U remaining arguments in method applicationmBuildFSharpMethodCall: unexpected List.length mismatchGetProperties[Unexpected multiple fields with the same nameGetInterfaces'ILTypeInfo.FromTypeAno slotsig for DefaultStructCtor::!no getter method!no setter method%GetIndexParametersAUnexpected zero arity, args = %sEexpected additional arguments hereSunexpected multiple fields with same nameGetFieldsGetEventsGetConstructorsIsHiddenICheckPropInfoAttributes: unreachableIsErrorOImportILTypeRef: unexpected local scope€ƒImportILTypeRef: reference found to a type in an auxiliary moduleunexpected€ÍImportILAssembly: cannot reference .NET netmodules directly, reference the containing assembly instead(%d:%d):=<-$%%%€»/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../lexfilter.fs</^-simpossible, the while loop guard just above prevents this&& nsheadmodheadmodbody nsbodylet(%b,%s)withlet(%s)withaugdointerface-decl parenmember-head bodyseqblock(%s,%s)subsequent firstmatchingifforwhile(%s)tryfunfunction thenelse(%s)vanilla(%s) TYPE MODULE+.-.Eu_osgn_ref: out of range, table = , n = +lookup_uniq in table ' out of range, n = !, sizeof(tab) = /u_option: found number ?u_encoded_ccuref: found number onlerefs occusotyconsotypars ovalsostringsopubpathsosimpletypsoccus (fake)ostrings (fake)!opubpaths (fake)onlerefs (fake)%osimpletyps (fake)inlerefs (fake)iccus (fake)ityconsitypars ivalsistrings (fake)!ipubpaths (fake)%isimpletyps (fake) iccusistringsipubpathsinlerefsisimpletypsu_ILPublicKeyu_ILAssemblyRefu_ILScopeRef#u_ILBasicCallConvu_ILHasThisu_ILTypeu_ILBasicTypeu_ILVolatilityu_ILReadonlyUthe IL instruction '%+A' cannot be emitted rfref nlvref€pickling: MemberKind.PropertyGetSet only expected in parse trees u_kindu_member_kind traitu_trait_slnmeasure typaru_measure_expr%u_typar_constraint1p_typar_spec: from erroru_istype;Unexpected IL type definition vslotsexn abbrevcompare_objcomparecompare_withchash_objhash_withcequals_withc hash equals adhocparent tycon attribmember_infou_tycon_repru_exnc_repru_attribkind+u_tycon_objmodel_kindu_vrefFlags€…Test.ActivePatternCase: only used during pattern match compilation€µexplicit object constructors can't be inlined and should not have optimization informationu_dtreeu_dtree_discrimuval_op_kindoprecd opcnstr op exn op lvalYunexpected backend construct in pickled TAST u_op!unknown for loopAu_static_optimization_constraint count+p_hole: unfilled hole+u_hole: unfilled hole7no decoder for instruction ucrefu_item_reftyp u_typu_const u_exprspecialSeqFlag'incorrect kinds: %AAremapMeasureAux: incorrect kinds[not a measure abbreviation, or incorrect kind tcrefgdestUnitParMeasure: not a unit-of-measure parameter?mkCompiledTupleTyconRef, n = %dWthis type definition is not an abbreviation tyconQthis type definition is not a refinementtcGprimDestForallTy: not a forall type;destTupleTy: not a tuple type;destTyparTy: not a typar typeOdestAnyParTy: not a typar or unpar typeSdestMeasureTy: not a unit-of-measure typedestAppTytcrefOfAppTymkLambdaArgTy€™mk_basev_multi_lambdas_core: can't attach a basev to a non-lambda expressionAmkCompGenBinds: invalid argumentEmkInvisibleBinds: invalid argumentSmkInvisibleFlatBindings: invalid argumentWrankOfArrayTyconRef: unsupported array rankOvalue does not have a valid member type3checkMemberVal - no arity9checkMemberVal - no membInfoGPartitionValTypars: not a top value/ReturnTypeOfPropertyVal+ArgInfosOfPropertyVal;destByrefTy: not a byref type;destRefCellTy: not a ref typeAdestOptionTy: not an option typeYdestLinqExpressionTy: not an expression typedefaultof typeof sizeoftypedefof3unreachable - linear expr/skipping ctorThisValOpt'skipping baseValOptSystem.Int64System.SingleSystem.DoubleSystem.CharSystem.Boolean]no 'value__' field found for enumeration type €·/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tastops.fscopyOfStructAcannot remap IL type definitions=couldn't remap internal tycon IisExnFieldMutable, exnc = %s, n = %d'bad TOp.Coerce node%bad TOp.Array node!bad TOp_try node/bad TOp.RefAddrGet node)bad TOp.Reraise node1expected a function typeSsimplifyTrivialMatch: target out of rangeYsimplifyTrivialMatch: invalid argument, n = 1, List.length targets = MdestIDelegateEventType: internal erroredestIDelegateEventType: not an IDelegateEvent type#GetTypeFromHandlewSystem.Runtime.CompilerServices.InternalsVisibleToAttributetupledArg)lengths don't add up7length untupledTys <> aritycMultiLambdaToTupledLambda: expected some argments result)itemsProj: no items?#matchResultHolderQTypar not found during XmlDoc generation``0IMicrosoft.FSharp.Core.FSharpTypeFuncoimpossible: rankOfArrayTyconRef: unsupported array rank[0:,0:][0:,0:,0:][0:,0:,0:,0:]System.Tuple%sAMicrosoft.FSharp.Core.FSharpFuncExtension Type #ctor{name_of_apref: index out of range for active pattern refernce5not an active pattern name!mkChoiceTyconRef ChoiceOf1unreachable - linear let1unreachable - linear seqmkCompiledTupleget_Rest'reduceIteratedFunTyeSystem.Runtime.CompilerServices.ExtensionAttribute€—Test.ActivePatternCase should only be used during pattern match compilationEcouldn't remap internal value '%s'€eliminateDeadTargetsFromMatch: failure while eliminating unused targetsbad permutation€Unexpected entity without a pubpath when remapping assembly dataUnexpected value without a pubpath when remapping assembly dataLGetAddrLByrefGet LSetLByrefSet!<measure>@[ arity<>[inline mutable slotsig#compiled_name! = )membInfo-slotsig! = delegate ...???![<Measure>] type<constrained><selfinit><superinit><vdirect>; (*ThenDo*); (*Seq*) base=LAM CHOOSERecLinkExpr.Op ... (new).#.! .tag .castRethrow!(##) ILCall meth tinst minst tyargs args whileto doneTOp.TryCatch...finally#TOp.TryFinally...bytes++uint16++GetRefLVal...traitcall...%TOp.ExnFieldGet...%TOp.ExnFieldSet...<@@> OBJ:optwhen...'top implementation Module DefsSuccess Switch dflt://is length isnull isinst queryTObjExprMethodMETH-LAMmeth-lam implrec3not isTTyparCoercesToType?.CompilationSourceNameAttributeG.CompilationArgumentCountsAttribute9.CompilationMappingAttribute+.SourceConstructFlagsI.FSharpInterfaceDataVersionAttribute%.AutoOpenAttribute int32decimal`1float`1float32`1 int`1sbyte`1int16`1int64`1byref`1nativeptr`1ilsigptr`1FSharpFunc`2 LinqCollectionsGeneric Lazy`1IEvent`2IQueryable`1IObservable`1IObserver`1!IDelegateEvent`1option`1 List`1 list`1 seq`1PrintfFormat`5PrintfFormat`4DateTimeIEnumerable`1IEnumerator`1 Expr`1 ExprQueryBuilderQuerySource`2ExpressionsExpression`1 []`1 [,]`1 [,,]`1[,,,]`1 TypeReflectionMethodInfoNullable`1IComparer#IEqualityComparer'RuntimeMethodHandleIEnumerableop_ColonColon op_Nil%IntrinsicOperatorsHashCompareUncheckedChecked-ExtraTopLevelOperators#NullableOperators%QueryRunExtensionsLowPriorityHighPrioritySeqModuleListModuleArrayModuleArray2DModuleArray3DModuleArray4DModuleSetModuleMapModuleStringModuleOptionModuleRuntimeHelpersQuotations/LeafExpressionConverterLazyExtensionsTuple`1Tuple`2Tuple`3Tuple`4Tuple`5Tuple`6Tuple`7Tuple`8Choice`2Choice`3Choice`4Choice`5Choice`6Choice`7Option`1 Ref`1FSharpTypeFuncOr||Compare<><=>=;GenericComparisonWithComparerFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5!FastEqualsTuple2!FastEqualsTuple3!FastEqualsTuple4!FastEqualsTuple5#FastCompareTuple2#FastCompareTuple3#FastCompareTuple4#FastCompareTuple5#GenericEqualityERGenericComparer3GenericEqualityERComparer/GenericEqualityComparer7GenericEqualityWithComparer/GenericHashWithComparer5GenericEqualityERIntrinsic1GenericEqualityIntrinsicIGenericEqualityWithComparerIntrinsic5GenericComparisonIntrinsicMGenericComparisonWithComparerIntrinsic)GenericHashIntrinsicAGenericHashWithComparerIntrinsicCreateInstanceUnboxGenericUnboxFastTypeTestGenericTypeTestFast3PhysicalEqualityIntrinsicNotnot raise RaisereraiseReraise TypeOfmethodhandleofMethodHandleOf SizeOfDefaultOfTypeDefOf ToEnumRangeInt32collectCollect delay append AppendEnumerateUsingEnumerateWhile)EnumerateThenFinally-EnumerateFromFunctionsCreateEventtoArrayToArray toList ToListmapMapsingletonSingleton emptysprintf/PrintFormatToStringThen Force CreateseqCreateSequenceop_Splice!op_SpliceUntypedMakeDecimalDeserialize Cast Selectget_Source WhereFailInitFailStaticInitCheckThis7QuotationToLambdaExpression Set`1 Map`2 ref`1/GeneratedSequenceBase`1!MeasureProduct`2!MeasureInverse`1MeasureOne ArrayIDisposableDelegate#MulticastDelegate EnumTypedReferenceArgIterator+RuntimeArgumentHandle#RuntimeTypeHandle%MarshalByRefObject1IndexOutOfRangeExceptionIComparable`1IEquatable`1IComparable+IStructuralComparable)IStructuralEquatable'IEqualityComparer`1Dictionary`2IList`1ICollection`1=System.AttributeUsageAttribute5System.ParamArrayAttributeuSystem.Runtime.CompilerServices.IDispatchConstantAttributesSystem.Runtime.CompilerServices.IUnknownConstantAttribute1System.ObsoleteAttributecSystem.Runtime.InteropServices.DllImportAttributeiSystem.Runtime.InteropServices.StructLayoutAttributeqSystem.Runtime.CompilerServices.TypeForwardedToAttributeeSystem.Runtime.InteropServices.ComVisibleAttributecSystem.Runtime.InteropServices.ComImportAttributegSystem.Runtime.InteropServices.FieldOffsetAttributecSystem.Runtime.InteropServices.MarshalAsAttributeUSystem.Runtime.InteropServices.InAttributeWSystem.Runtime.InteropServices.OutAttributeaSystem.Runtime.InteropServices.OptionalAttribute9System.ThreadStaticAttributeiSystem.Runtime.CompilerServices.SpecialNameAttribute-VolatileFieldAttribute;System.ContextStaticAttribute+System.FlagsAttributeWSystem.Diagnostics.DebuggerDisplayAttribute[System.Diagnostics.DebuggerTypeProxyAttributegSystem.Runtime.InteropServices.PreserveSigAttributegSystem.Runtime.CompilerServices.MethodImplAttribute9ProjectionParameterAttribute1CustomOperationAttribute;System.NonSerializedAttribute3AutoSerializableAttribute?RequireQualifiedAccessAttribute'EntryPointAttribute9DefaultAugmentationAttribute1CompilerMessageAttribute+ExperimentalAttribute+UnverifiableAttribute!LiteralAttributeOSystem.Diagnostics.ConditionalAttribute3OptionalArgumentAttributeMRequiresExplicitTypeArgumentsAttribute+DefaultValueAttributeClassAttribute%InterfaceAttributeStructAttribute9ReflectedDefinitionAttribute+CompiledNameAttribute#AutoOpenAttributeECompilationRepresentationAttributeECompilationArgumentCountsAttribute7CompilationMappingAttribute#CLIEventAttribute'CLIMutableAttribute3AllowNullLiteralAttribute'NoEqualityAttribute+NoComparisonAttribute/CustomEqualityAttribute3CustomComparisonAttribute=EqualityConditionalOnAttributeAComparisonConditionalOnAttribute5ReferenceEqualityAttribute7StructuralEqualityAttribute;StructuralComparisonAttributeSealedAttribute-AbstractClassAttribute7GeneralizableValueAttribute!MeasureAttributeKMeasureAnnotatedAbbreviationAttribute9NoDynamicInvocationAttribute[System.Security.Permissions.SecurityAttributeSSystem.Security.SecurityCriticalAttribute[System.Security.SecuritySafeCriticalAttribute<TcGlobals>bc!Microsoft.FSharp.Core.Operators/.Core.Operators.Checked.Control .Linq.Collections1.Core.LanguagePrimitives-.Core.CompilerServices).Linq.RuntimeHelpersK.Core.CompilerServices.RuntimeHelpers9.Core.ExtraTopLevelOperatorsI.Core.LanguagePrimitives.HashCompare.Quotations<local>GtryShortcutSolvedUnitPar: kind=typeEtryShortcutSolvedUnitPar: unsolved#combineEntityListAcombineModuleOrNamespaceTypeListMnot an F# object model type definition5not a .NET type definitiongNo compiled representation for provided erased typecNo compiled representation for provided namespace%expect erased typeFieldByIndex'GetUnionCaseByIndexUTopValActualParent: does not have a parent)MemberApparentParent5<some module on this path>Eunion case %s not found in type %s;field %s not found in type %sforall _. !union case type Winternal error: the ccu thunk for assembly  not delayed!7internal error: ccu thunk '' not fixed up!System.Delegate1System.MulticastDelegate€±/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tast.fs#bad format string token2147483648'9223372036854775808<@@ @@>€—#light should only occur as the first non-comment text in an F# source fileifdefSkipendlineverbatimString#tripleQuoteString#singleLineCommentcommentstringInComment/verbatimStringInComment5tripleQuoteStringInComment mlOnly stdin XmlDoc digithexdigitunicodegraphhexgraph!unicodeGraphLong)__SOURCE_DIRECTORY____SOURCE_FILE____LINE__as assert const downto elif else extern lazy openuse void yield#__token_OBLOCKSEP__token_OWITH!__token_ODECLEND__token_OTHEN__token_OELSE__token_OEND__token_ODO__token_OLET%__token_constraint atomic breakcomponentconstraint eager fixed forifunctorinclude mixin objectparallelprocessprotected purerecursive sealedtailcallvirtualvolatile9tokenTagToTokenId: bad tokenUprodIdxToNonTerminal: bad production indexHASH_IFHASH_ELSEHASH_ENDIFCOMMENTWHITESPACEHASH_LINEHASH_LIGHTINACTIVECODELINE_COMMENTSTRING_TEXTEOFLEX_FAILURE ODUMMY#OINTERFACE_MEMBEROBLOCKEND+OBLOCKEND_COMING_SOON#OBLOCKEND_IS_HERE!ORIGHT_BLOCK_ENDODECLEND OENDOBLOCKSEPOBLOCKBEGIN ORESET OFUNOFUNCTION OWITH OELSE OTHENODO_BANGODOOBINDER OLET+HIGH_PRECEDENCE_TYAPP3HIGH_PRECEDENCE_PAREN_APP3HIGH_PRECEDENCE_BRACK_APP!TYPE_COMING_SOONTYPE_IS_HERE%MODULE_COMING_SOONMODULE_IS_HERE EXTERN VOID PUBLICPRIVATEINTERNAL GLOBAL STATIC MEMBER CLASSABSTRACTOVERRIDEDEFAULTCONSTRUCTORINHERITGREATER_RBRACK STRUCTSIGBAR RBRACK RBRACE%RBRACE_COMING_SOONRBRACE_IS_HERE MINUS DOLLARLBRACE_LESSBAR_RBRACKGREATER_RBRACEUNDERSCORE'SEMICOLON_SEMICOLON LARROW EQUALS LBRACKLBRACK_BARLBRACK_LESS LBRACE QMARKQMARK_QMARKDOT COLONCOLON_COLONCOLON_GREATER'COLON_QMARK_GREATERCOLON_QMARKCOLON_EQUALSSEMICOLON WHEN WHILE WITH HASHAMPAMP_AMP QUOTE LPAREN RPAREN%RPAREN_COMING_SOONRPAREN_IS_HERE STAR COMMA RARROW%GREATER_BAR_RBRACK%LPAREN_STAR_RPAREN OPENORREC THENTO TRUETRYVAL INLINEINTERFACEINSTANCE CONST LAZY OLAZY MATCHMUTABLENEWOFEXCEPTION FALSEFORFUNFUNCTIONIFINJOIN_INFINALLYDO_BANGANDAS ASSERTOASSERTASR BEGINDO DONE DOWNTO ELSE ELIFENDDOT_DOTBAR_BAR UPCASTDOWNCAST NULLRESERVEDNAMESPACEDELEGATECONSTRAINT BASE LQUOTE RQUOTERQUOTE_DOTPERCENT_OP BINDER LESSGREATERLET YIELDYIELD_BANG BIGNUMDECIMAL CHAR IEEE64 IEEE32NATIVEINTUNATIVEINT UINT64 UINT32 UINT16 UINT8 INT64 INT32INT32_DOT_DOT INT16 INT8'FUNKY_OPERATOR_NAME%ADJACENT_PREFIX_OPPLUS_MINUS_OPINFIX_AMP_OP+INFIX_STAR_DIV_MOD_OPPREFIX_OPINFIX_BAR_OPINFIX_AT_HAT_OP!INFIX_COMPARE_OP%INFIX_STAR_STAR_OP IDENTKEYWORD_STRING STRINGBYTEARRAYget huh? let! use!failwithUextern was not given a DllImport attributenativeptr byreflocalBinding1localBinding2seqExprdeclExpr1declExpr2declExpr3ifGuard1thenBody1whileBody1whileBody2whileLoop1whileGuard1whileBody3forLoopBody2aforLoopBody2forLoopBody1declExpr11_loopVarstartLoopRange1endLoopRange1declExpr12#forLoopCollectionforLoopBody3@indeclExprInfixtupleExpr1tupleExpr2~-~minusExprminusExpr2indexerExpr1indexerExpr2beginEndExprquoteExprquoteExpr2parenExpr1parenExpr2tcsparenExpr2mcsparenExpr2rbcsparenExpr2obecsparenExpr2braceExprrangeSeqError1forLoopBinderforLoopBinder2anonLambdaExpr1anonLambdaExpr2anonLambdaExpr3anonLambdaExpr4anonLambdaExpr5 ****|_|.[].() .()<-FullNameIsGenericTypeIsArrayDeclaringType NameNamespaceCinvalid provided type member nameAinvalid declaring type full nameGetAddMethodGetRemoveMethodGetGetMethodGetSetMethodCanReadCanWriteIsPublicIsGenericMethodSystem.Decimal True-<NonExistentNamespace>+GenericTypeDefinition%EnumUnderlyingTypeParameterTypeFieldTypeReturnTypePropertyType!EventHandlerTypeFilePath Line Columnc resolution via GetType(typeName=%s) in %s failedA provided type '%s' was resolved<summary></summary>rangeOfLid'SynArgNameGeneratorrangeOfLidwd'invalid setter type .Core html:a href'popBreak: underflow<a href='%s'> </a>alternative _tag HeadHeadOrDefault TailTailOrNullGet_unique_7System.InvalidCastException€unexpected: strange switch on single-case unions should not be present€—unexpected: switches on lists should have been eliminated to brisdata tests _obj@DebugTypeProxyget_Emptyget_IsEmptyget_Valueget_NoneIsEmptyno+Microsoft.FSharp.Core.FSharpFunc`2%.OptimizedClosuresFSharpFunc`.FSharpTypeFuncInvokeFastSpecialize€Ë*** Error: internal error: unknown indirect calling convention returned by stripSupportedIndirectCall7Unexpected call instructionMclosure parameters must be given namesmUnexpected unsupported abstraction sequence, #tyabs = , #tmabs = D selfaclassunions should have been erased by this timeno!?+?-~?+~?-~+~+.~-.~%~%%!=**<<<|<|||>||> |||>>>CInvalid internal property name: '(  )\\~++op_Increment~--op_Decrement#op_Exponentiationop_Appendop_Concatenate&&&^^^<<<~~~>>>op_AddressOf'op_IntegerAddressOfop_BooleanAndop_BooleanOr%op_LessThanOrEqualop_Inequality+op_GreaterThanOrEqualop_LessThanop_GreaterThanop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2 <|||op_PipeLeft3op_Dereferenceop_ComposeRightop_ComposeLeft << >>1op_TypedQuotationUnicode<<| |>>op_ChevronsBarop_Quotation'op_QuotationUntyped+=+op_AdditionAssignment-=1op_SubtractionAssignment*=+op_MultiplyAssignment/=+op_DivisionAssignmentop_RangeStepop_Dynamic)op_DynamicAssignmentop_ArrayAssignGreater Less Plus MinusMultiplyTwiddlePercentDot DollarAmpBarAt HashHat Bang Qmark Divide Colon LParen Comma RParen Space LBrack RBrack'HKEY_LOCAL_MACHINE\{exepath}/mono.* (\/.*)\/fsi\.exebin1fsharp-compiler-locationUSoftware\Microsoft\FSharp\2.0\Runtime\v4.0USoftware\Microsoft\FSharp\3.0\Runtime\v4.0'FSHARP_COMPILER_BINfscfsifsharpcfsharpig/Library/Frameworks/Mono.framework/Versions/Current/usr/local /usr_i4_I4\+GetTRefTypeQbinding null type in envBindTypeRef: %s +envGetTypeDef: failedGenvGetTypT: null create type table?9envGetTypT: null type table?'envGetConsB: failed'envGetMethB: failed+- envGetMethB: failed+- envGetPropB: failed%envGetTypB: failedMwant tyvar #%d, but only had %d tyvarsGenvGetTyvar: not scope of type vars+convTypeSpec: generic3convTypeSpec: non generic€‹- convTypeSpec: non-generic type '%O' has type instance of length %d?)convType: array baseconvType: valueconvType: boxed+convType: ptr eltTypeconvType: ptr/convType: byref eltTypeconvType: byrefconvType: tyvarconvType: fptr%convType: modified+queryableTypeGetFieldconvMethodRefOconvMethodRef: could not bind to method/convMethodRef (emitted)convMethodSpec=convConstructorSpec: (emitted)3emit: pending new varargsuunexpected failure decoding quotation at ilreflect startupCnot expecting array dimension > 4Othe IL instruction %s cannot be emittedAI_conv DT_REF?#AI_conv_ovf DT_R?%AI_conv_ovf DT_R4?%AI_conv_ovf DT_R8?'AI_conv_ovf DT_REF?)AI_conv_ovf_un DT_R?+AI_conv_ovf_un DT_R4?+AI_conv_ovf_un DT_R8?-AI_conv_ovf_un DT_REF?[emitInstrI_arith (AI_ldc (typ,const)) iltyped/emitInstr cenv: ldind R/emitInstr cenv: ldind U1emitInstr cenv: ldind U8/emitInstr cenv: stind R1emitInstr cenv: ldelem R1emitInstr cenv: ldelem U3emitInstr cenv: ldelem U81emitInstr cenv: stelem R1emitInstr cenv: stelem U3emitInstr cenv: stelem U13emitInstr cenv: stelem U23emitInstr cenv: stelem U43emitInstr cenv: stelem U8AddressSetGetLengthQthe ILX instruction %s cannot be emitted7emitMethodBody cenv: native'convCustomAttr: %+AXCMethod access compiler controled.AField access compiler controled.AtypeAttributes of other external5Nested compiler controled.SSystem.Runtime.InteropServices.LayoutKindKbuildTypeDefPass1 cenv: typB is null!/getTypeRefsInType: fptr7getTypeRefsInType: modifiedAemitInstrCall: .ctor and varargsEbuildGenParam: multiple base types€§references to resources other assemblies may not be emitted using System.Reflection/Zmap.force: %s: x = %+AESystem.Reflection.MonoGenericClass_System.Reflection.Emit.TypeBuilderInstantiation{EmitZUntaggedIndex: too big for small address or simple index3fixup sanity check failed7getDocument: bad doc number3PDB: Defined %d documents-PDB: Sorted %d methods%PDB: Wrote methodsPDB: Closed€ËMono.CompilerServices.SymbolWriter, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756gMono.CompilerServices.SymbolWriter.SourceMethodImplgMono.CompilerServices.SymbolWriter.MonoSymbolWriterOpenScope'DefineLocalVariableCloseScopeOpenMethod#MarkSequencePointget_SourceFileCloseMethodWriteSymbolFile# %s- [%d-%d]) %s Locals: %A .debuginfo%ENTRYPOINT %b DOCUMENTS [%d] %s Type: %A# Language: %A Vendor: %A METHODS Params: %A Range: %A Points:S - Doc: %d Offset:%d [%d:%d]-[%d-%d] Scopes:2.0.40520.02.0.40608.0type indexMOne of your modules expects the type '€¥' to be defined within the module being emitted. You may be missing an input file;getTypeDefOrRefAsUncodedToken€“GetTypeAsMemberRefParent: mspec should have been encoded as mdtMethodDef?1GetTypeAsMemberRefParent/Unexpected variant type-Unexpected native type!bad type acccess€…index of typedef on second pass does not match index on first pass1Error in pass2 for type , error: %The local method ' '::'C' was referenced but not declaredgeneric arity: !The local field A was referenced but not declared€Ýmethod referred to by method impl, event or property is not in a type defined in this module, method ref is %AyError in GetMethodRefAsMethodDefIdx for mref = %A, error: %swGetMethodRefInfoAsMethodRefOrDef: unexpected local tref-typ?GetMethodDefOrRefAsUncodedTokenwGetOverridesSpecAsMethodDefOrRef: unexpected local tref-typmGetFieldSpecAsFieldDefOrRef: unexpected local tref-typ)duplicate entrypoint€¿cannot write body of native method - Abstract IL cannot roundtrip mixed native/managed binariesyindex of method def on pass 3 does not match index on pass 21Error in pass3 for type 1Error in pass4 for type ;Module Generation Preparation1Module Generation Pass 11Module Generation Pass 21Module Generation Pass 31Module Generation Pass 4row table ILAssemblyRefpdbdocsfield defsmethod defsproperty defsevent defstype defs guids blobsstringsuser stringskwarning: no entrypoint specified in executable binaryEFinalize Module Generation Resultsstring index  out of range;userString index out of range/blob index out of range3Generated Tables and Codev%d.%d.%d#~#Strings#US #GUID #Blob/Layout Header of TablesABuild String/Blob Address TablesSort Tables1Write Header of tablebuf5invalid tag in row element1Write Tables to tablebufLayout Metadata+Write Metadata Header+Write Metadata Tables-Write Metadata Strings7Write Metadata User Strings#Write Blob Stream€•strings-in-code fixup: a group of fixups is located outside the code arrayastrings-in-code fixup: not at ldstr instruction!Fixup Metadata9data rva before data section]data rva after end of data section, dataRva = -, rawdataChunk.addr = -, rawdataChunk.size = warning: A not where expected, pCurrent = , p.addr = -writePadding: size < 0#Generate PDB Info€Debug data area is not big enough. Debug info may not be usableWError while writing debug directory entry: Write Started€‘Note: The output assembly will be delay-signed using the original public€‡Note: key. In order to load it you will need to either sign it with€Note: the original private key or to turn off strong-name verification€—Note: (use sn.exe from the .NET Framework SDK to do this, e.g. 'sn -Vr *').€“Note: Alternatively if this tool supports it you can provide the original€—Note: private key when converting the assembly, assuming you have access toNote: it.SA call to StrongNameGetPublicKey failed (€åWarning: The output assembly is being signed or delay-signed with a strong name that is different to the original._Could not open file for writing (binary mode): €Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.Local€ƒExpected mscorlib to be ILScopeRef.Assembly was ILScopeRef.ModuleSExpected msorlib to have a version number2.0.50727.03Generated IL and metadataELinking a native resource failed: Layout imagemsdos headerpe signaturepe file header%pe optional header'text section header'data section header)reloc section header#pad to text begin#import addr table#pad to cli headercli header%rest of cli headercode paddingstrongnameraw resourcesraw data+start of import tableimport table'import lookup table-import name hint tablemscoree string#end of import tab%head of entrypoint! entrypoint code/ itanium global pointerdebug directorydebug dataend of .text)raw native resourcesdummy dataend of .rsrc!base reloc tableend of .relocWriting Image€É/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilwrite.fsFinalize PDBsWarning: A call to StrongNameSignatureGeneration failed (Signing Imagegilwrite: TIME %10.3f (total) %10.3f (delta) - %s (%d,%d)-(%d,%d)DefineDocument+DefineCompilationUnit %d: %s/[%d,%d:%d] - [%d,%d:%d]UA call to StrongNameSignatureSize failed (#duplicate entry ' ' in  tableAwarning: code not 4-byte aligned;Duplicate in method table is: Type index:  Method name: K Method arity (num generic params): ?mutiple type names map to indexA method in '[' had the right name but the wrong signature:mdkey2: %A]data RVA fixup: fixup located outside metadatacresource offset bigger than resource data section€›Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756Oloading type Mono.Unix.UnixFileInfo... 9Mono.Unix.UnixFileSystemInfo%GetFileSystemEntry3get_FileAccessPermissions3set_FileAccessPermissionsfailure: %s... Abinary chop did not find elementAbr fixup sanity check failed (1)branch target % not found in codeKmismatch between newWhere and newCode[mismatch between origWhere and origEndOfInstrGan IL instruction cannot be emitted ldind stelem ldelem%adjuster: address ! is out of rangetarget 1 not found in new fixups7br fixupsanity check failed+local variable index ]in debug info does not reference a valid local=FSharp_DebugSetFilePermissions1readByte: input channel  was closed)seek: input channel 3readBytes: input channel [bad table in uncodedTokenToTypeDefOrRefOrSpecSbad table in uncodedTokenToMethodDefOrReftoo many nbitsOan unaligned prefix is not allowed hereKa volatile prefix is not allowed hereKa tailcall prefix is not allowed hereKa readonly prefix is not allowed hereQa constrained prefix is not allowed hereMwarning: duplicate decode entries for Omultiple rows found when indexing tableQno row found for key when indexing table=cannot read Module table row 0md!native resources#managed resources%managed strongname+managed vtable_fixups€¥find_text_data_extent: none found for infile=%s, name=%s, rva=0x%08x, start=0x%08xrva is zeroSystem.Enum€­type spec used as type constructor for a generic instantiation: ignoring instantiation3seekReadTypeDefOrRef ctxtotype spec used where a type ref or def ctxt.is requirediseekReadTypeDefOrRefAsTypeRef_readTypeDefOrRefOrSpec9seekReadMethodRefParent ctxt7seekReadMethodDefOrRef ctxtyignoring sentinel and varargs in ILMethodDef token signature7seekReadCustomAttrType ctxt7seekReadImplAsScopeRef ctxt3seekReadTypeRefScope ctxt7fptr sig may not be genericvarargs NYIGwarning: field sig was not CC_FIELD5warning: property sig was / instead of CC_PROPERTYGwarning: local sig was not CC_LOCALOwarning: method inst ILCallingConv was 5 instead of CC_GENERICINSTmignoring sentinel and varargs in ILMethodDef signature+unsupported code typeWnon-IL or abstract method with non-zero RVA-bad seq num. for param?multiple method semantics found[seekReadMethodSemantics ctxt: no method found/unknown security action7bad alignment for unaligned5bad table in FieldDefOrRefCbad table in MethodDefOrRefOrSpec1bad method on array typeWwarning: bad table in user string for ldstr+invalid instruction: +bad token for ldtoken?strange table for callsig token€Ÿbad image: a generic method signature ctxt.is begin used at a calli instructionu: int32AsILVariantType ctxt: unexpected variant type, n = ?: unexpected native type, nt = w* Warning: PDB file could not be read and will be ignored: : bad , rva gnot a PE file - bad magic PE number 0x%08x, is = %AQnot a PE file - bad optional header sizemetadata;: bad metadata magic number: 3bad metadata magic number€›no metadata tables found under stream names '#~' or '#-', please report this -MethodSpecAsMethodData+MemberRefAsMemberDataCustomAttrILTypeRefTypeRefAsType+BlobHeapAsPropertySig%BlobHeapAsFieldSig'BlobHeapAsMethodSigTypeDefAsType+MethodDefAsMethodDataGenericParams'FieldDefAsFieldSpecUserStringHeapstring heapblob heap#Nested Table RowsConstant Rows)MethodSemantics RowsILTypeDef Rows%InterfaceImpl Rows#FieldMarshal Rows!PropertyMap Rows%CreateFile(0x%08x)3CreateFileMapping(0x%08x)+MapViewOfFile(0x%08x)%: native resourcessection start#manifest resource'strange CallingConv)strange CharEncoding'strange CharBestFit;strange ThrowOnUnmappableChar'branch destination 1the bytecode raw offset w did not refer either to the start or end of an instructionE: unknown exception handler kind: method rva=strange table for locals token€›non-nested access for a nested type described as being in an auxiliary module%Document with URL _ not found in list of documents in the PDB file (Failure)) (ArgumentException)Iterate2D textReportedError %s: %scompileparameter parsetypecheckcodegen ilxgen ilgen outputinteractiveErrorLogger(%s)'DiscardErrorsLogger-AssertFalseErrorLogger?PushErrorLoggerPhaseUntilUnwind-suppressErrorReporting5InternalPreserveStackTrace(%d,%d)%s%a-%a%s%s-%sWfileOfFileIndex: negative argument: n = %d UfileOfFileIndex: invalid argument: n = %d A%s (%d,%d--%d,%d) IsSynthetic=%b(%d,%d--%d,%d)unknowncommandLineArgs€›Unable to enable unmanaged process execution option TerminationOnCorruption. gHeapSetInformation() returned FALSE; LastError = 0x3Zmap.force: lookup failed/mkTypeDefOrRefOrSpecTagx!mkHasConstantTag3Unexpected character '%s'bad hexbytebytearrayexplicitfloat64instance int8 native uint uint8unsignedvaluetype vararg*** error: 9two sentinels in vararg call€mscorlibScopeRef not set to valid assembly reference in parseILGlobals1Undefined assembly ref ' VARARGVALUETYPE VALUEUNSIGNEDUNMANAGED UINT SLASH PLUS OBJECT NATIVE METHODINTFLOAT64FLOAT32 FIELDEXPLICITELIPSES DCOLON BOOL BANGVAL_SQSTRINGVAL_QSTRINGVAL_DOTTEDNAME VAL_IDVAL_HEXBYTEINSTR_VALUETYPEINSTR_INT_TYPEINSTR_TYPEINSTR_TOKINSTR_STRINGINSTR_NONEINSTR_METHODINSTR_RINSTR_I8INSTR_I32_I32INSTR_IVAL_FLOAT64#VAL_INT32_ELIPSESVAL_INT64 .mdbYbuffer too small to fit an IMAGE_FILE_HEADER buffer_buffer too small to fit an IMAGE_SECTION_HEADERObuffer too small to fit an IMAGE_SYMBOLWbuffer too small to fit an IMAGE_RELOCATIONgbuffer too small to fit an IMAGE_RESOURCE_DIRECTORYsbuffer too small to fit an IMAGE_RESOURCE_DIRECTORY_ENTRYibuffer too small to fit an IMAGE_RESOURCE_DATA_ENTRY%s "/Out:%s" "X64X86;/NOLOGO /READONLY /MACHINE:%scvtres.exe .\Process.StartACLRMetaData.CorMetaDataDispenserIBA3FEE4C-ECB9-4E41-83B7-183FA41CD859!CorSymWriter_SxS action€‹Unable to obtain ICLRMetaHost object - check freshness of mscoree.dllMUnable to obtain ICLRStrongName object1Mono.Security.StrongNamePublicKey€·the use of key containers for strong name signing is not yet supported when running on Mono Sign Verifyldci42345678M1m1 stloc ldloc ldargretaddovfdivceqcgtclt convi1i2i8r4r8u1u2u4u8refmulremshlshrsubxorneg ldnullduppopckfinitenoparglistendfilterendfinallyrefanytypelocalloc throw ldlenrethrow stind cpblkinitblk multi call ldstrldtokenldelemaany newarrcastclassinitobj unbox cpobj ldobj stobjboxdestTyFuncApp)splitNameAt: idx < 0/splitNameAt: idx > last€‹RegisterInstructionSetExtension: only one extension currently allowedextension for wdefine_type_extension: only one extension currently allowed instreuniqueEntryOfCode: need one entry to code, found: KuniqueEntryOfCode: no entries to codeeuniqueExitOfCode: need one exit from code, found: IuniqueExitOfCode: no exits from code€§mkNonBranchingInstrsThen: bblock already terminates with a control flow instructions* warning: joinCode: exit of code1 is not entry of code 2%not unique type %sdestILArrTy3System.Text.StringBuilder)System.AsyncCallback'System.IAsyncResult%System.IComparable!System.Exception3System.Reflection.Missing!System.Activator]System.Runtime.Serialization.SerializationInfo[System.Runtime.Serialization.StreamingContextoSystem.Security.Permissions.SecurityPermissionAttribute+System.TypedReferenceSystem.IntPtr9System.RuntimeArgumentHandle1System.RuntimeTypeHandle3System.RuntimeFieldHandleuSystem.Runtime.CompilerServices.CompilerGeneratedAttributeMSystem.Diagnostics.DebuggableAttributeomkILGlobals: mscorlib ILScopeRef is not an assembly ref]System.Runtime.CompilerServices.RuntimeHelpersInitializeArray=mdef_code2code - method not ILYbad method table: more than one .cctor found)-tryspec / local ]clause block specification covers no real codeWtry block specification covers no real codeOinvalid pattern of exception constructsGfinally clause combined with others[scope block specification covers no real code€É* WARNING: basic block at end of method ends without a leave, branch, return or throw. Adding throw ia tailcall must be followed by a return, instrs = %A€‘internal error: bad basic block structure (missing bblock start marker?)Delay4i3u* error while converting instructions to code for method: BeginInvokeobjectsEndInvokeKinfo_of_enum_tdef: badly formed enum 7: no non-static field foundM: more than one non-static field founduencodeCustomAttrElemType: unrecognized custom element type€…decodeCustomAttrElemType ilg: unrecognized custom element type: %A_System.Diagnostics.DebuggerNonUserCodeAttributeDebuggingModesUSystem.Diagnostics.DebuggerHiddenAttribute_System.Diagnostics.DebuggerStepThroughAttribute[System.Diagnostics.DebuggerBrowsableAttributeSSystem.Diagnostics.DebuggerBrowsableState€‡decodeILAttribData: error parsing type in custom attribute blob: %s€‘decodeILAttribData: attribute data involves an enum or System.Type valueAdecodeILAttribData: invalid data-Invalid version format!no method named  found in type /multiple methods named ] appear with identical argument types in type _ with appropriate argument types found in type not a keynot a key token, Version=, Culture=neutral#, PublicKeyToken=-not a module reference3not an assembly referencemodule €¿/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/il.fs/unexpected pointer type+unexpected byref typeAunexpected function pointer type%not a nominal typebad comparison (...)9last_of_bblock: empty bblock not ILnot virtual÷no manifest. It is possible you are using an auxiliary module of an assembly in a context where the main module of an assembly is expected. Typically the main module of an assembly must be specified first within a list of the modules in an assembly.<ILGlobals>%basic block label  not declaredAinternal error while mapping pc  to code labelinternal error€ƒexception block specification overlaps the range of a basic blockstart_of_codes€Ù ERROR: could not find an innermost exception block or local scope, specs = %s Trying again without locals.Delay4k[: static field does not have an default valueMono.Runtime windir1\Microsoft.NET\Framework v1.09{WindowsFramework}\v1.0.3705 v1.19{WindowsFramework}\v1.1.4322 v2.0;{WindowsFramework}\v2.0.50727 v3.05{ReferenceAssemblies}\v3.0/{WindowsFramework}\v3.05{ReferenceAssemblies}\v3.5/{WindowsFramework}\v3.55{ReferenceAssemblies}\v4.05{ReferenceAssemblies}\v4.5wDerived target framework directories for version %s are: %s{RawFileName} {GAC}5{TargetFrameworkDirectory}#{AssemblyFolders}{Registry:MUsing scripting resolution precedence.+{Registry:%s,%s,%s%s}QUsing compilation resolution precedence.[Saw error on logger thread during resolution.MShowing messages seen after exception.!ResolvedFile(%s)%{WindowsFramework}+{ReferenceAssemblies}BaggageResolvedFromFusionNameVersion Redist#ProgramFiles(x86)ProgramFileso\Reference Assemblies\Microsoft\Framework\.NETFrameworkchopExtension null: getHoleUthe key was not found in the LayerdNameMap€‰unreachable, bulkQueue was non empty, newFastDict should not be nullmAn index for the character was not found in the stringdropPrefixdropSuffix'List.chop: overchopempty listl!List.headAndTail iter3 last€ƒAn index satisfying the predicate was not found in the collection len1Array.forall2rebalanceWinternal error: Map.splice_out_succ_or_predPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextWEnumeration has not started. Call MoveNext.;Enumeration already finished.minimumElementmaximumElementPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNext-index must be positive start1 start2/length must be positivelen3(start1+len) out of range3(start2+len) out of range startCthe arrays have different lengths arr2Athe input array may not be emptyparse error-shift on end of input!%empty symbol stackGparse error: unexpected end of filesyntax error9End of file on lexing streamfsstrings€É/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/sformat.fsunpackConsGList value had unexpected ValueInfo\b\'+[ chars]I<StructuredFormatDisplay exception: Error: <fun: rank=bound1=bound2= <seq>+<ToString exception: nan-infinityinfinityKey-System.Linq.IQueryable FSCompjPŸEƒø§EƒjP·z\V4à‰   TT !%) 1%1! €”€” €˜€˜ €¤  €¬€¬ €Ü€Ü €ä€ä €ø€ø    $$ ,, 4 T= xx ˜˜ ¸¸ ÄÄ ÐÐ ‚‚ ‚< ‚D°?_Õ :AEE MQÀ¬¨EAEAUÀ¬¨AAEA–° A–Ø–°AUY–ØY–Ø A–°EAUÀ­8EAÀ­8UÀ­8 AUYÀ­8YUÀ­8AUYÀ­8 AÀ¬¨E AÀ¬´‚˜AAÀ¬´À¬´AU]UÀ›ØAUÀ›ØEM–ÜUÀ›Ø–ÜAUÀ›ØÀ›Ø A–¼À¬´ A–¼E aÀ¼p Ae§Me§ÀbüE AÀ¼8 ƒ ƒ AiEAAAmEiAmE aÀ›È*qÀuÀÀxèYÀuÌÀ­8UÀwpÀuÌa AÀvpAÀµÌÀµÌAU]Àv8À¼„]Àv8AU]Àv8À¼„aaU]Àv8À¼pAU]Àv8À¼pMU]Àv8À¼pÀ¼pAU]Àv8À¼pÀ¼pAU]Àv8À¼„À¼„ ae AÀ¼$AÀ¼„UYÀ¼$YÀ¼$AÀ¼$YÀ»ˆAÀ¼$YÀ»¤ aÀ·(AÀ¶À¶ AÀ·(AÀ»ˆÀ»ˆ aÀ¼$=aƒàaU]Àv8À¼„&aUu]Àv8ÀµÌÀ¼„UaU˜XÀ“XAUÀ¼„À¼„aUÀ¶À¶ AAE@AUu]Àv8ÀµÌÀ¼„UÀ“Xu]Àv8ÀµÌÀ¼„-MYUÀ¶À“TÀ“TYUÀ¶À“TaUÀ¶À¼$AÀ“TÀ¼$ AYuY]YMÀ¼(UÀ¶À¼$À¼(-Au]Àv8ÀµÌÀ¼„U]Àv8À¼„AE AÀ¼p AyU AUEA AAAAAAAAA aUa MÀu¤E AÀt4EM]Àt4E AÀu¤ AÀu¤E AUE MQEA AYA MÀ¬¨E A€ EAXÀ}œ AÀ}œAX]À›Ø=UÀ­( …œ…œAUÀ¬¨E AUAUYÀ­8AUÀ¬¨UUÀ¬¨AUÀ¬¨U AU AUAÀZœuÀuÌ€UÀuÌ,ÄAUÀuÌ,ÄAUÀ‘”€…À‘¤AÀ‘¤À‘¤AÀ‘¤À‘” AÀ‘¤ AÀ‘¤ AAAAAAÀZTÀZœAUÀuÌÀwhÀZT AÀtÈÄAÀZTÀuÌMÀZTÀuÌÀZœAÈUAÀZüÀAhaÈ AÀAhAUAÀAh/A€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8‚0AUuuMÀ­8YÀtüYÀuÌ AYAAYAAAYAEAp]À›Ø AÀAh AEÀAÀA–Ø AE¸A¸AUUUU AÀAh˜ AÀAhu]ÀAh]ÀAh;Au]ÀAh]ÀAhAÀAhu]ÀAh]ÀAh AE] A]A]YAA]YAAA]Y AEÌAÌaUUUU€ìAuÀ­8ÀBPÀ]XEA‚0 A‚0ÀAhAuYÀAhÀkdÀ­8‚MÀZüÀuÌ(A€À­(ÀuÌÀkdÀBPÀ]XÀ­8 AAA]AA!A]YA]AAMÀkdÀAhAYÀAhYÀAh@€]AAÀAhuYÀAh]uYÀAh MÀAhŒp=–´ A–´UAUA–´UA5€‘ÀAE€‘ÀAu‚4ŽàŽX€‘À AÀ\AAÀ\AYAAÀ\AAYAAÀ\"AAAYAAÀ\Au‚4ŽàŽX¸Au‚4ŽàŽX]Au‚4ŽàŽXÌAAYAAAYAAAAYA AEèAu‚4ŽàŽXè)Au‚4ŽàŽXUUUU€ìAU‚<‚<A‚<uŽàY€ä5AuŽàY€ä5EAް AEpAE+AEUUUUUUUAAEEEa€ä AE‚DAUY–Ø AE‚<2Au‚<UUUUUUUAUu‚<u‚<7AUu‚<UUUUUUUAu‚<pAUu‚<pAUU‚<U‚<AÀuÀÀ­8 AÀZüAÀu¼À­8AÀuÀ]Àv8AÀu¼]Àv8 AÀ“À aÀZTAÀZüUx  ‰ AAUÀZüÀZüAUÀ[´À[´ MÀZü AÀ[´t‰ ÀAht‰ Àu¼ AÀu¼AÀuÀ]Àu´ AÀuÀAÀtÈÀuÌAÀu¼]Àt AÀu¼MYÀu¼Y MUAUÀtAÀt] AE˜A˜AÀAhUAUYÀAhAUYÀAh¼ŒpUUU AÀ“ÀŒpMAUAE%MYUÀ­8AE]]AUÀ­8MÀ­8UÀ­8 M]À–XÀ“Ä]UÀ­(AÀ–X]UÀ­(ŒpUÀ­(AÀ™8]EŒpT AEAaUUUAE1UUUA]À–X]À–X:AuUÀ“Ä]À–X]UÀ­8]À­(]À–XAÀ™01UUUAÀ™41UUUAÀšL1UUUAE]UUUA]UUUMÀ–XÀ­8uAuU Au AÀ•ØAÀ­8U AÀ•ØŒp AÀ­8MÀ­8À­8À­8AUAYUÀ­8AuMÀ­8ÀšÀ­8AAAMÀ™@YU aU!AÀšHYuYUAÀšLUÀ­8YUAUÀ­8YUÀ­8%AUÀ­8YUYUAÀš¬YU!AÀš¬YuYU!AÀ›PYuYU M MAE)AUÀ­8AE]]AE]%AUÀ­8AE]AE]#AYUÀ­8AE]]+€À­8YUÀ­8AE]]MYŒ0ÀšH]MYŒ0À™@]AÀš¬UÀ­8AE]AÀ™@UÀ­8AE]AÀšHUÀ­8AE]AÀš¬]MYŒ0À–X]AÀ–XUÀ­8AE]AÀ–X] AE]AE1UÀ­8AE]$AUÀ–XUÀ­8]À­(À–X'AuYŒ0]À–X]À“Ä]JAuUÀ“Ä]À–X]UÀ­8]À­(1UÀ­8AE]AÀ•Ø]AÀ™0À•ØaUÀ­8AE]AÀ™4UÀ­8AE]/€YŒ0AUÀ•ØÀ­8]ÀšL]AUÀ•ØÀ­8]/AUÀ­81ÀšL]UÀ­8AE]AÀšLÀ­8&AYÀšL1UÀ­8AE]AÀš0](AAYUÀ­8AE]] aÀ–XAÀ™4]AÀ™@]MYŒ0À›P]AÀ›PUÀ­8AE]€À­8À}œMAÀ}œAÀ}œAuÀ}œEAAuÀ}œEE  ððA€•Ž€‘EA€™ðEŽAŽ€‘ AE€‘ ŽŽ ްް AAAAA+AU€YY€YYA–ØAÀ¬¨UÀ¬¨AUÀ­8AuÀ­8AUÀ­8AuÀ­8AUÀ­8auÀ­8€¡AuÀ­8€¡1AuÀ­8€]À›ØÀ­8YUÀ¬¨AuÀ­8€¡€¡AuÀ­8€¡ŽÀ3MŽÀ€]À›ØÀ­8YUÀ¬¨ÀÀøŽÀ&AŽÀ€‰šP¶LÀyXª@˜„Às<–ÜAްA–´ A–ØްAuÀ­8ްAuÀ­8AuÀ­8€¡ a€¨€…AuAuAuAUY–Øa–°(AUuª@¶LYÀyTšPÀÀøŽÀAEÀÀøŽÀAAEÀÀøŽÀÀÀøŽÀAŽÀuª@¶LYÀyT || A€|A€ AA A |A  A |A  M AU  APU M €¥|€¥| ||A|A  A €¡ A |A€¡ AA€¡ AU AEYU  M M€¡U €¡AU | AA€¡AAA€¡AAAA€¡A|A€¡A|AA€¡A| AU M|ìE AU M ] ] A] AU ] AìA€AìA AìMYU YM쀥|쀥|ì AUì AUMU AuYìAuYM €¥|쀥|ìAEÀÀø A]AE MAEM€¥ €¥  M‘\‘Œ‘ŒMYYM‘Œ]‘ŒAM]U ]AÔ AAÔAAAÔLHAMÀÀøA A€¡ AA AAaAAAAAAAAAAAAAAA$AAAAAAA)AAAAAAAAA€äA Aš¬EM Mš¬EAEa›,AE AY›0EA–¼Y›,A›, A›0›0 A AEA A AE AAEAAAEAAAAE M§@˜\§@*AÀyTUUÀyTe§u§@§@§@;Au§@§@§@AÀyTUUÀyTe§u§@§@§@ AÀ¬¨AÀdÀd AÀd AY AÀ\ AÀ\ AÀuÀE •ø•ø AAEAAAEAAAAEAAAEAAAAEAAAAAE AAEAAAEAAAE –€–€ –ˆ–ˆ –– –° –´ –¼ –ØMAUÀ­8]UÀ­8A]UÀ­8UÀ­8A]UÀ­8 A]–ØAU–°–°"AU1U–°uY–°M–°U–° AU–°AEMEAUY–ØA]–Ø–Ø A]–ØA–°]–Ø Au A–°–ØAUY–ØAuY–°AUY–°–´AuY–°UY–° AÀµÄ AÀ›ÈAÀ›TÀ›TAÀ›PÀ›P AÀ“ÀAÀ›\]YÀ“ÀMÀ›\À›PAÀ›|]YÀ“ÀMÀ›|À›T AÀ¬´—ˆ AÀ­8E!AA€©AÀ­8EAÀ­8E&AAA€©AÀ­8EAÀ­8EM€©À­8E&AAA€©AÀ­8EAÀ­8EAÀ›YÀ›AÀš¬YÀš¬AÀ›TYÀ›AÀ›PYÀš¬AXÀ›ØA–ØU–ØA–°€­–Ø–°A€­–Ø–°]–ØA€­–Ø–°]–´ AE–Ü A˜\Àv8AÀ‘¨]€±AUÀ‘¨€…A AÀ‘¨€µ AÀ‘¨A€¨À‘”ÀuÌMÀuÌÀuÌAE€¥UÀu¼AUÀ“TÀ“TAUÀ“TA€¥˜\AAY˜\A€¥˜\A+A€¥˜XAY˜\A€¥˜\A6AY˜XA€¥˜XAY˜\A€¥˜\AAÀµÌÀ¼„A˜X AÀ‘” A€¨€…AUÀtAÀ·(]aUY€¨€…AUY€¨€…!AUY€¨€…Y€¨€… A€…€… A€…EA€¨€…EA€¹ A€¹€½ A€½À‘”a€¨À‘” A€¹€¹ A€…€¹ AEÀ` AEY˜`AÀ¼p]UAEaUAEAÀcÀvTAÀce§A]Àv8AE]e§,AUAEuÀbàÀvT˜\AEE!AuÀbàÀvT˜\AEEE A˜\˜`"AuÀbàÀvT˜\AEE˜\A–ØU˜XAEY˜`AAEY˜`Y˜` AÀv8 aÀv8MYÀv8AUY–°EA–´UY–°M]Àt4]Àt4 A˜`˜\ Mª@˜\ª@ M MÀ›X AÀ›E AÀš¬E MÀ› MÀ›T MÀš¬ MÀ›PMEUÀ­8EMEUE MEE š0š0A˜\uÀv8Y Mª@ª@ šH AÀ›ÌGA€‰¶LYÀyTª@ª@ª@šHÀt4ÀÀøUuª@¶LYÀyTšP/AEÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4<Au¶LÀyTª@ÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4<Auª@ª@ÀtìÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4'AEÀÀøUuª@¶LYÀyTšP'AÀÀøUuª@¶LYÀyTšP M¶L¶L¶L&MšPÀ›ØUuª@¶LYÀyTšP?AUuª@¶LYÀyTšPÀÀøUuª@¶LYÀyTšPMÀ›ÌÀtìE š¬š¬M A›,EA›0]UY›,AUY›,Y›,AUY›,M€ÁU€Á A›0EA›0Y›,AUÀ­8Y›ØA›ØY›Ø A›ØE AÀ¬¨AUÀ­8Y›Ø AÀuÌ AuAuuMU MÀ·¼ AÀ¹¸AU]+M€„€ÅU]U€„€ÅAÀvxUÀvt A€©E œ” œ˜œ˜ œ¨œ¨ œ°œ°AUÀtMMœÄÀtüœÄ œÌœÌ œÔœÔAÀuÌÀ¶ AÀtüMÀtÈÀ´”MÀtÄÀ´˜ p ŒŒ AAUÀu¤AAÀtüÀuÌAAAAAAAMÀtüÀuÌEMÀt4 AEMÀu¤MÀt4 MÀu¤ MÀt4 MÀuÀ MÀy  MÀyP MÀt4€œ°Àu¤MÀyT AU AU aU žž=ž AÀ»œE MžžAUœ°À¶ =Uœ° AÀ»ˆAUÀ¶|À­8E aÀ·¼/AUUUÀu¤ÀwpUUÀu¤ÀwpAUUUÀu¤ÀwpaUUUÀu¤ÀwpAYÀ¶AAAYÀ¶A AÀ·¼EMÀ·¼À·¼A žt#AUÀuÀtUÀuÀUtŒAUUUŒŒÀ½´'AUUŒŒUUUŒŒ9MUYUUŒŒÀ¶YUUUŒŒ%AUYUUŒŒÀ¶ÀºAAÀ·¼EAAAÀ·¼E MÀ·¼E AÀw\ M€˜E AÀwp M€˜E AÀwp AÀwpE MžPE Ažtžt aÀ¶AÀtÈÀ¶ AÀtÈMÀwpÀtÈE MÀwpE AÀv|M€˜Àv|E AÀwpM€˜ÀwpEMYUÀuÌÀwhÀwpEMUÀuÌÀwhEAUŒŒEMÀuÌÀtüMMÀuÌÀ¶ AÀ¶A€µ]ÀµÌAÀ¶YÀwpAÀ¶ÀwpAÀwpÀuÌ'MÀwpU€­UÀ¶ÀwpA€­UÀ¶ÀwpEAÀ´ÌÀ´Ì AÀwpUÀuÌAÀ´ÌÀ´Ì;AUÀuÌAÀ´ÌÀ´ÌAÀwpUÀuÌAÀ´ÌÀ´ÌMÀuÌÀ´ÌÀ´Ì AÀ·¼AAÀ·¼AÀ·¼À·¼ AÀ·¼MÀwpÀwpÀwpAÀuÌÀwpAÀu]ÀuÌ AÀuAÀyÀ»0AÀuÌÀuÌAUÀ¶YÀtüÀ»¬MÀu¤UÀu¤aU]À»¬À»ˆA]À»¬]À»¬AUÀuÌYÀyÀ¶AÀuÀÀu¤AÀuÀUÀu¤AÀtüÀ»„AÀtüÀ¶ AÀuÀMÀu¤À´ì AÀu¤€Àu¤À´ìUÀu¤MÀtüÀ´¬À´¬ AÀu¤MÀu¤ÀwpEKA%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ AÀw$ŒMÀw$ŒUAUA AU€§€€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÅŒÀw$€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÅAÀu¤ÀuÀ'q]Àu¤ÀwpAÀwpÀwpÀwpEAÀw\Àu¤AÀwpÀwp1M€„Àu¤€ÅÀu¤Àw\€„Àu¤€ÅÀu¤AuÀu¤Àu¤AEEAÀ¶UÀ¶Àwh2MUÀ¶ÀwhÀu¤UUÀ¶Àwh]Àu¤-AUÀ¶ÀwhUUÀ¶Àwh]Àu¤4M€ÁUUÀ¶Àwh]Àu¤UÀ»0€ÁAÀyAÀ»ˆÀ»ˆMÀ»ˆAÀ»ˆÀ»ˆÀ»ˆAUÀuÌÀwhÀuÌ AÀw\E"MUYUUŒŒÀ¶ AMÀw\U] A]EMÀ¶U MÀ¶EAÀwpÀ¶ AÀvx€À¶À¶ MÀvtÀ¶À¶ AÀvpÀ·($A€À¶À¶ uÀ¶À¶  aÀºðMœ°Àu¤A AÀy E AÀyPE€À¶|YÀ·¼YÀ·¼E+AAÀ¶|AYÀ·¼AYÀ·¼EE(AÀuÀuYÀ»ˆYÀ»œYÀ»”MÀuÀÀuÀ aÀ»¬AÀuÀ]À·(&a€ÉYÀvpÀ¶€ÍÀtÈ aÀvpAÀv|Àº( aÀ»¤ aÀ»œ'A€ÉYÀvpÀ¶€ÍÀtÈ1A€ÉYÀvpÀ¶€ÍÀtÈuÀ¶ aÀ»ˆ AÀ»¤E#a€À»ˆÀ»¤À»œuÀ¶)AUUÀu¤Àwp]UÀ|ÜÀ|p AE€ÑA€½ =À¶pMÀv8 MAÀwpÀwpÀwp]ÀwpAÀwp]Àwp2A€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwp AÀwX A]¢üA]¢ü¢ü A¢üYA¢üYÀuÀA¢üMÀwX¢üuÀwXÀwpÀwp aÀw$MÀwpÀwp  £d £d£dM£dYY7€Àu¤Àwp€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤AÀu¤UÀu¤£ˆA£ˆYÀu¤A£˜UÀu¤ £´ aÀu¤ AÀtü,A£˜A£ˆAÀu¤YÀu¤AÀu¤UÀu¤Àu¤AUÀu¤Àu¤Àw\AÀu¤YÀw\>A£ˆU€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU£ˆ£È=AU€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU£ˆ£ÈjA€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆAU€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU£ˆ£ÈAÀu¤ÀuÌMÀuÌÀuÌÀuÌM¤@ÀyU¤@Ày ¤8¤8MÀw\ÀwpÀwpAUYYAÀu¤ÀwpAYÀu¤ÀwpAÀw\Àw\AU¤@ÀwpU¤@ÀwpM¤@ÀwpU¤@ÀwpM¤@ÀyU¤@Ày M¤@YÀyU¤@YÀy2M¤@UÀuÌYÀyU¤@UÀuÌYÀy"AU¤8YÀw\AÀwpÀwpM¤@ÀwXU¤@ÀwXM¤@Àw\U¤@Àw\A¤@U¤@ÀwpM¤@Àw$U¤@Àw$M¤@ÀwU¤@ÀwM¤@Ày U¤@Ày M¤@ÀyPU¤@ÀyP ¥4>M€Àu¤£ˆ€ÅÀu¤UÀu¤£ˆ€Àu¤£ˆ€ÅÀu¤>Au€„Àu¤€ÅÀu¤£´u€„Àu¤€ÅÀu¤£´#Au£ˆ€„Àu¤€ÅÀu¤£´MÀy`Àw\Ày`M¥4Àw\¥4AÀu¤€„Àtü€ÅÀtü@M€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü€£´U£´'€A¥4AÀwp¥4¥4Àwp]¥4A£ˆ"AuY¦€YÀuÌYÀwpMÀu¤Àwp]UÀu¤AUÀu¤AUÀu¤Àu¤ ¥°¥°A¥°YYÀwh M¥°¥°¥° AÀwp¥° AÀuÌ¥°+MYÀu¤¥°UYÀu¤UÀwpÀuÌMY¥°Y¥°MY¥°Y¥°Y¥°AÀu¤Àu¤MÀuÌÀu¤ M¥°UYÀuÌYÀu¤¥è#AUYÀuÌYÀu¤YÀuÌM¥°ÀuÌU¥°YÀuÌAU¥°YÀuÌ¥°AU¥°YÀuÌYÀuÌ-M¥°YÀu¤U¥°UYÀuÌYÀu¤MY¦€¥°¥°M¥°uY¦€¥°€¦„¥°Àu¤¥°M¥°YÀu¤¥°AYÀu¤ÀuÌAuYÀwpY¥°.MÀu¤YuYÀwp]UÀu¤¦MÀuÌUÀw\ÀwpMÀu¤ÀwpÀw\M¥èYÀu¤YYÀu¤M¥èYÀu¤YÀw\6M€„Àu¤€ÅÀu¤UÀu¤€„Àu¤€ÅÀu¤ ¦„¦„MM€Àu¤UYÀu¤€ÅÀu¤Àu¤€Àu¤UYÀu¤€ÅÀu¤;M€Àu¤Àwp€ÅÀu¤Àw\€Àu¤Àwp€ÅÀu¤M¦„Àu¤¦„'€A¦„AÀwp¦„¦„Àwp]¦„'€A¦„AÀwp¦„¦„ÀwX]¦„'€A¦„AÀwp¦„¦„Ày]¦„M¦„UÀu¤¦„M¦„Àw\¦„M¦„YÀw\¦„ ¦¸¦¸AEÀj°UÀuÀ§aUÀuœUÀuÀ§AE€¥ÀuœUÀuÀ§ § M,, €,, A¦¼,Me§,AUÀuÀ§,  §0 §0 M¦¼¦¼ §8§8A¦¼ Me§AUÀuÀ§aUÀuÀ§A1e§e§Ae§€¥e§M§@UÀuÀ§§@Me§§@§@AUÀtü¦¸ MÀtüEM§@Àtü§@ A§0 A§0 AÀt4 AÀuÈ AÀuÄAÀtÈÀuÈAÀtÄÀuÄ AÀtÄAUÀuÀ§UÀuÀ§Ae§e§AUÀw\§0€ÀwpÀuÌUÀwpÀw\AYÀwpÀwpA]ÀwXAÀwX]ÀuÌ&AUÀwp§0¦¼UÀwp§0¦¼AYÀwpYÀwp:AuYÀuÌYÀwpÀ|puYÀuÌYÀwpÀ|pAÀu¤ÀwhAÀyUÀy§0¦¼MÀu¤§@§@4AUÀuÌYÀyUUÀuÌYÀy§0¦¼A§0¦¼¦¼M¦¼ÀtȦ¼AUÀw\§0¦¼Ày`MÀy`Ày`Ày`AE€„Àu¤€ÅÀu¤ AÀwh¦¼AYÀwh¦¼ AÀwp¦¼MYÀu¤§@§@!AU¦¼ÀwpUÀwp§0¦¼AÀwpUÀwp§0¦¼AÀwXUÀwX§0¦¼ M¦¼Àwp AÀw$AÀw$UÀw$§0¦¼$M§@Àw\UUÀw\§0¦¼§@AUÀw\§0¦¼AUÀw\§0¦¼Àu¤AÀy Ày AÀyPÀyPMÀw\§0¦¼UÀuÀ§BAÀyPUUÀyPUe§U§@YYUÀw\§0¦¼fAU§@YYUÀw\§0¦¼AÀyPUUÀyPUe§U§@YYUÀw\§0¦¼=AÀy UUÀy e§U§@YYUÀw\§0¦¼aAU§@YYUÀw\§0¦¼AÀy UUÀy e§U§@YYUÀw\§0¦¼M¦¼ÀbüE AÀbüEAUÀuÀ§AÀbüEM§ÀbüE AÀc¦¼AÀcUÀuÀ§ AÀc§ Aª8ª8 AEÀy\MÀuÌÀy\Ày\AÀu¤AÀy\Ày\MÀt4Ày\Ày\MÀu¤ÀBPÀBPAÀBPÀBPAYª<Yª<AÀu¤AYª<Yª<AÀt4Àu¼AÀtüAYª<Yª<Mª@À“Àª@%MÀ“ÀUÀtÀtìUÀtÀtì%MÀ“ÀUÀtÀy UÀtÀy AuÀu¼ÀtìÀu¼AÀ[´]UÀZü]À[´AUÀZü]À[´EAÀZüUÀZü]À[´AU]À[´EAÀ”|Àv AÀš ÀwhAÀuÌÀyAÀuÌAAYÀš  «P«P «`«`MÀtìÀtì4€«p€¥UÀu¤Àj¤€¥UÀu¤Àj¤AÀ“ÀÀu¤Au€ÕÀwpÀ­8E+Au€ÕÀwpÀ­8U€ÕÀwpÀ­8 AÀtüEMÀtüÀtü A«h«l A«,Àwd A«l«pAUÀu¤Àj¤Àu¤DA€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8UÀBPÀ­8VAUÀBPÀ­8A€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8UÀBPÀ­8AÀtüÀtü=AUUYÀ“ÀÀ“ÀuUYÀ“ÀÀ“ÀYÀuÈAÀuÈ]Àu¼.AuUYÀ“ÀÀ“ÀYÀuÈYÀu¼MÀu¼Àu¼MYÀu¼YÀu¼YÀu¼<AuUYÀ“ÀÀ“ÀYÀuÈU€¥YUWAU€¥YUAuUYÀ“ÀÀ“ÀYÀuÈU€¥YU(AUÀuÄYÀuÌAYÀwpÀwpMÀu¼YÀwpÀwpAYÀLøÀLø(AUÀuÄYÀuÌAYÀLøÀLøMÀu¼YÀLøÀLøM€¥ÀtüÀtü€¥Àtü ¬4¬4 ¬H¬HAÀtüÀsðMÀuÌÀuÌEAÀuÌYÀuÌAYÀuÌAYÀuÌÀuÌ AÀuÌE M¬,YÀsðUYÀu̬, AÀ–XAÀ–X]uÀ“ÀÀ–XMÀu¤Àu¤AÀ–X]À“ÀA]À“ÀA]À“ÀÀ˜ AÀ™4 ¬Ì¬Ì A¬Ô«¤ A¬ÔÀw\AÀw\ÀuÀM¬ÌÀwpEM¬ÌÀw\E AÀyEAYÀyEAUÀuÌYÀyEM¬ÌÀwE AÀw$E AÀwXEMYÀuÀÀw\YÀuÀ AÀuÀ AYÀuÀEAU€ÕÀwpÀ­8E"M«¤Àw\UYÀw\YÀw\ ­\­\ ­d­d ­l­l ­t­tAÀu¬À™H €ÙÀkdÀHTÀ­8ÀH„ÀuÌEM¬,À“ÐUÀtü¬, aÀwh aYÀwhM€ÝYÀ™8YÀvpAUÀuÌÀš ÀuÌ#AUYÀuÌYÀš YÀuÌAYUÀuÌÀwhYÀuÌa­”AÀ•tÀtüAUÀ•ØM¬,À•ØUÀu̬,!M¬,UÀ•ØÀsðUÀu̬,AÀ•xU¬,AU¬,AÀ•xU¬,AÀ•ØU]À“ÀÀ•ØAU]À“ÀÀ•Ø$AU]À“ÀÀ•ØUÀ“ÀÀ•ØAU€¨À‘¤M€¨À‘¤U€¨À‘¤A€¨À‘¤AUÀ“ÀÀ•Ø AÀ‘¤M€¨À‘¤ AÀ˜(ECMu¬,€¥«h€ÁUÀuÌÀ˜(Uu¬,€¥«h€Á A«tÀMp A«tÀLø aÀ˜ M«hEAÀ˜ÀuÌAA«tÀLøÀLøAÀ˜À–XMÀ–XÀ˜À–X AÀ–X­4MÀLøÀLøÀLøAÀtÈUÀuÌÀtÈNMu¬,€¥«h€ÁUÀuÌÀtÈUA«tÀLøu¬,€¥«h€Á,AEUA«tÀLøu¬,€¥«h€ÁNMu¬,€¥«h€ÁUÀuÌÀ˜UA«tÀLøu¬,€¥«h€Á"M¬,uÀuÌÀ–XUÀwp¬,M¬,À–XUÀwp¬, AÀ–X AÀ–XMÀs<ÀuÌÀuÌqÀs<À­8ÀuÌÀwpÀwp qÀu̪@¬,À–XUÀwp¬, AUÀwpÀuÌUÀwpÀuÌAÀ™4À™4AEuÀwpÀu̬,AEUÀwp¬,AUÀwp¬,AUÀwp¬,UÀwp¬,M¬,À˜`UÀxø¬, AÀwp AUÀuÄYÀuÌAÀwpMÀu¼ÀwpMÀwpÀwp)AUÀuÄYÀuÌAAÀwpÀwp€Àu¼ÀwpÀwpMÀu¤UÀu¤MUÀu¤E AÀu¤MÀuÌ]]AÀ–XÀ­8MÀ–XY­4Y­4a€À–XÀuÌ)M¬,€À–XÀuÌUUÀwp¬,AUÀwpAÀtÈUÀwp AÀtÈEM€„€Å€„€ÅAUÀwp AÀtÈAUÀwpÀuÈ AÀuÈEAUÀwpÀwpAÀ˜xYÀš AUUÀZü)AuÀ­8ÀuÌYÀ™@UÀuÌÀ­8 AÀ™@¬D$AÀOÜ€À­8ÀuÌY¬DÀOÜ?AuÀ­8ÀuÌYÀ™@AÀOÜ€À­8ÀuÌY¬DÀOÜaU¬DYÀvpAÀOØÀZüAÀZüUUYÀZüA¬DUÀšAUÀšAUÀšUYAUUYÀZü%AUYYUUYÀZüDA€¬DYÀvpYUUYÀZü]uYÀtüÀuÌNM¬,U]uYÀtüÀu̬DU€áÀ“ÀÀ™HÀuÌYÀvpÀwp¬,EAUÀšUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpkA€áÀ“ÀÀ™HÀuÌYÀvpÀwpAUÀšUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp€”M¬,€À­8ÀuÌY¬DÀOÜU€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp¬,AÀ™@UÀ–X*M¬,À™0UuÀ­8ÀuÌYÀ™@¬,MÀu¤ª@ª@@AUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpÀOÔqA€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpEAÀOØ]ÀZü aÀy€A€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpUÀuÌYÀy#aUUYÀ“ÀÀ“À]À–X AU]À–X]UÀ–XMÀu¤ÀwpÀwp+AUYÀ¶ Y€À¶À¶ ]AÀvp]AY]]+AUYÀ¶ Y€À¶À¶ ]AÀvp]AY]]'AÀZü]€ÉU]ÀZüJAU1€ÉU]ÀZüUY€ÉU]ÀZüA€ÉU]ÀZü(MÀBP€ÉU]ÀZüÀBPAÀ–X]UÀ–XÀ–XAÀu¤À–XAÀu¤À˜(AÀu¤À˜AÀ­8UYÀu¤AMÀ­8ª@UYÀu¤ª@AÀ–XÀ–XMÀ–XÀ–X AÀ–XM¬,À™4UÀMt¬, AY AEÀwpMÀuÌUÀu¤Àwp AÀZü AÀZüEAÀ“ÐÀtü#AYÀ[´YUÀZü]À[´AUÀwpÀuÌÀwpAUÀu¤ÀwpÀwpMÀ­8À–XÀ­8AuÀZ|AUÀZü]À[´ÀZüa­4AUÀZü]À[´)AÀ–XUYÀ–XYuÀ“ÀÀ–XAÀ–XuÀ–XÀuÌÀ­8AYuÀ“ÀÀ–X AÀ–XYuÀ–XÀuÌÀ­85AYuÀ“ÀÀ–XY€áÀ“ÀÀ–XÀuÌÀ­8-AuÀ“ÀÀ–X€áÀ“ÀÀ–XÀuÌÀ­8AYuÀZ|YÀuÌ"AYuÀZ|YuÀZ|MÀuÌYÀuÌÀuÌ#AuÀ–XÀuÌÀ­8ÀOèÀwp*A€áÀ“ÀÀ–XÀuÌÀ­8ÀPÀwpAÀuÌÀOèÀwp$AYÀOèÀwpYÀPÀwpMÀ­8ÀZüYÀuÌaÀP Àwp#AuÀ–XÀuÌÀ­8ÀOèÀ–X€ÀuÌUÀu¤ÀwpAUÀu¤ÀwpÀOèÀwp4AYUÀu¤ÀwpY€áÀ“ÀÀ–XÀuÌÀ­8AUÀu¤ÀwpÀu¤AYUÀu¤ÀwpYÀu¤*A€áÀ“ÀÀ–XÀuÌÀ­8ÀPÀ–X-AÀP Àwp€ÀZüYÀuÌ]À[´-A€ÀZüYÀuÌ]À[´ÀP ÀwpAÀOèÀwpYÀtü AÀPÀwpYÀOðÀwp AÀPÀwpYÀOèÀwpAÀPÀwpYÀOì AÀ[´E AÀZœ MÀOìMÀPÀwp!MÀOìÀOèÀwpÀOðÀwpAÀOèÀwpÀwp5MAÀwpÀwpÀOìUÀOðÀwpAÀwpÀwpAÀOðÀwpÀOðÀwp'AÀOìUUÀOðÀwpÀwpÀw\AÀOðÀwpUAÀOðÀwpÀwpAÀOðÀwpEMÀwpÀPÀwpÀwpMYÀu¤ÀwpÀwp&M¬,ÀOèÀ–XUÀOèÀwp¬,&M¬,ÀPÀ–XUÀPÀwp¬, AÀ™@E AÀ™@­˜AÀš YÀvpAYÀš YYÀvpAÀ˜xYYÀvp$€ÙªÈÀu̪@¬,À–XUÀwp¬,AEÀÀàUÀu̬,A€À¶À¶ ]AÀwpÀvtAÀPÀwpÀvxAÀwpYÀwpAU€ÝÀvpÀvpAÀ™8YU€ÝÀvpM¬,À™@U«x¬,A«xYÀtüAE€„Àtü€ÅÀtüAUÀwpUÀwp%MÀu¤UÀwpÀuÌUÀwpÀuÌ1A«xuAUÀwpÀuÌUÀwpÀu̪@¬,_AuAUÀwpÀuÌUÀwpÀu̪@¬,A«xuAUÀwpÀuÌUÀwpÀu̪@¬,1M€„Àtü€ÅÀtüÀtü€„Àtü€ÅÀtüMÀZüÀZüAÀZüÀuÌ AÀ[´AÀ[´ÀuÌa­„'A­„UUY­ YÀu¤U¬,3AU¬,A­„UUY­ YÀu¤U¬,(€Ày\ Yu€ÕÀwpÀ­8Ày\ A­¤ÀuÌA­¤/M€„Àtü€ÅÀtü­¤€„Àtü€ÅÀtüA­¤YÀtüMYÀtü­¤­¨ A­¨Àu¤ A­˜­„A­ U ­ )A­ €áª@Y­¨Y­¤¬,€¥ ­ OA€áª@Y­¨Y­¤¬,€¥ ­ A­ €áª@Y­¨Y­¤¬,€¥ ­ A­¨MYÀtüYÀtüYÀtüA­¨YÀtü A­¨­¬ A­¬¬Ô A«8À™HM¬,­”UÀu¤¬, MEM¬,À™TUYÀu¤¬, AÀ“ÀEAuÀu¼ÀtìEAuÀu¼Àtì$AÀšLYuÀuÌYÀšLÀ­8AÀšL]­ˆAÀOÜY­ˆ(AuÀuÌYÀšLAÀOÜY­ˆ AÀšLE A­E)AuÀuÌYÀšLÀ­8UÀuÌÀ­8 A­­ŒAUÀt4ª@ÀÀøª@ AÀu¼EAEÀÀøª@Aª@ÀÀøª@AÀÀøª@Mª@À›ÀÀøª@#AUÀtìª@ÀÀøUÀt4ª@AEÀÀøUÀt4ª@Aª@ÀÀøUÀtìª@AEÀÀøUÀtìª@AYÀy YÀy AAEÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@gAuuYU€ÝÀvpÀt4ÀyPª@ª@ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@_A€Ày YU€ÝÀvpª@ª@ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@AAÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@wAuUAYÀy YÀy YU€ÝÀvpª@ª@ÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@EAEÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@DAUAYÀy YÀy YU€ÝÀvpAYÀy YÀy $AYU€ÝÀvpYU€ÝÀvpRAUAYÀy YÀy YU€ÝÀvpAYU€ÝÀvpYU€ÝÀvpcAuYUAYÀy YÀy YU€ÝÀvpª@ª@ÀÀø€Ày YU€ÝÀvpª@ª@-AEÀÀø€Ày YU€ÝÀvpª@ª@SA€Ày YU€ÝÀvpª@ª@ÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@5AEÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@Mª@uÀv8Yª@AEÀ¬ÔEAÀ¬ÔE AÀuE aÀš¬AU€ÝÀvp AEÀy:A€Ày YU€ÝÀvpª@ª@ÀÀøu¶LÀyTª@AEÀÀøu¶LÀyTª@ aÀ›AEÀÀøEAÀÀøEAEÀÀøuª@ª@ÀtìAª@ÀÀøuª@ª@ÀtìAÀ•tÀ•Ø MA AÀšLAÀšL]UÀ•ØÀ­8AÀšL]Àš$AÀšL]uÀ•ØÀ­8]À“ÀAÀšL]ÀšHAÀšL]UÀšÀ™H AÀ™8AÀšLYÀšL aÀšLAÀšL]YÀ˜(!AÀšHUYµXYYÀšLAYÀšL­$AU]Àu¤ª AYÀšL­4AUÀšHµXAU]Àu¤ª AYÀšL­AÀt4YÀw\AÀ™T]UÀ•ØÀ­8AÀ™T]Àš$AÀ™T]uÀ•ØÀ­8]À“ÀAÀ™T]Àš AÀ™T]UÀšÀ™H AÀ™T+AÀš UYµXYuÀšYÀ™T*M¬,uÀšYÀ™TUYÀu¤¬,AÀš1UÀuÌÀ­8$AUÀuÌÀwh1UÀuÌÀ­8(AYUÀuÌÀwh1UÀuÌÀ­8AE1UÀuÌÀ­8AÀ™Ø1UÀuÌÀ­8A1UÀuÌÀ­8AÀ‘”À‘xAÀ‘xÀ‘xAÀ‘”À‘”AÀ‘”À‘¨ AÀ‘” AÀ‘”EA€¨À‘”À“TAÀ‘”À‘”Mµ\Àt4E5AUYÀvpYUÀuÌÀ­8Aµ\AÀt4E*M¬,UÀ•ØÀ­8UUÀuÌÀ­8¬,)AuÀ•ØÀ­8]À“ÀUÀ•ØÀ­8AUÀ•ØÀ­8EAUÀuÌÀ­8E5€µ\Àt4YÀvpUYÀvpYUÀuÌÀ­8 AEUAÀšÀtÈAÀtÈÀ“À aÀtÈAUÀuÌÀwhÀy aÀuÀMÀt4Àt4-MÀuÌYUÀt4Àt4YUÀt4Àt4AÀt4YUÀt4Àt4 AÀt4 AYÀt4EAUÀt4Àt4GMÀtÈUYÀuÌYUÀt4Àt4UYÀuÌYUÀt4Àt4 MµXµ\Aµ\ Aµ\Àt4Mµ\Àt4YÀvp€µ\Àt4YÀvpEMµ\Àt4YUÀuÌÀ­8'€µ\Àt4YÀvpu]Àu¤ª Aµ\u]Àu¤ª %Au]Àu¤ª U]Àu¤ª Au]Àu¤ª MÀšÀtÈAÀtÈUÀuÌÀ­85MÀt4YUÀuÌU UÀt4YUÀuÌa MÀt4ÀuÌAUÀuÌA AuÀuÌÀ­8A»t]Àu¤ AÀ™@aº$5A­ˆUYº$€]»tª@¬,YÀu¤Y­ \A€]»tª@¬,YÀu¤Y­ A­ˆUYº$€]»tª@¬,YÀu¤Y­ \M€]»tª@¬,YÀu¤Y­ Y­ˆUYº$€]»tª@¬,YÀu¤Y­ Aº$@M€¬,YÀu¤Y­ ­ŒUºL€¬,YÀu¤Y­ AÀy UYÀw\»\Mª@Àw\ª@MÀw\ª@ª@^M€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ º$UºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ RM€á¬,Y­¨Y­¤€¥ ­ ª@ºLUºx€á¬,Y­¨Y­¤€¥ ­ ª@A­¨U­¨MºPUº|MºxUº¤A»\Aº|Aº|]¬Ôa»Ô A¬Ô¬ÔAº¤UY¬ÔYÀw\ aÀtü aÀuÌAÀ˜(Àš AEuYÀu¤Àu¤«pAUÀuÌÀwhÀš AÀ™LÀ™HA»\UÀy`Ày`'AUÀy`Ày`A»\UÀy`Ày`A»ÔUÀy`Ày`'AUÀy`Ày`A»ÔUÀy`Ày`)AÀw\UUAÀwpÀwpYÀw\M»°Àw\»°N€»°»\UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°aUAÀwpÀwpLM»°»ÔUuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°AÀu¤Àw\AUAÀwpÀwp%AUAÀwpÀwpAÀwpÀwpMUÀuÌÀwhÀtÈAÀtÄÀ“ÀAÀ™ØÀtÄAÀ™ÔÀtÈ/M€„Àt4€ÅÀt4ª<€„Àt4€ÅÀt4/M€„Àu¤€ÅÀu¤ª<€„Àu¤€ÅÀu¤AÀuÌUÀuÌYÀtüAÀuÌYÀtüAUÀuÌYÀtüAÀtüYÀu$AÀ™LAAAAAE AÀtüM½LÀtü½LAUÀu¼YÀuÌE AÀutEMÀtôÀtÀtô ½Ä½ÄA½Ä AÀuÌ AÀuÌ]UÀuÌÀuÌ AÀxøEMÀuÌYÀuÌYÀuÌ AÀwE AÀvxE AÀvtEaUÀu¼À­8AÀvx]AUÀu¼À­8%AUUÀu¼À­8UÀu¼À­8AUUÀu¼À­8.AU 1UÀu¼À­8UUÀu¼À­8AUÀu¼À­8 AÀvpE AÀwhE AÀwdE AEÀt aÀZü AÀtÄE AÀyE=  ¿Ð¿ÐM¿ÜÀtü¿ÜAÀu¤]Àu¤MÀ|pÀwpÀ|pMÀwpYUÀuÌÀwh$MÀwpYUÀuÌÀwhYÀwpAYAEAAYAEAYÀwpAÀ¶À{lAÀu¤À{ŒM¿ÜÀu¤¿ÜAÀw\À|pAYÀwpYÀ|pAÀwpÀ|pAÀuÌÀ{lMÀw$À|pÀ|p€À{ŒÀwpÀ|pÀ|p  À@€ À@€ aÀuÄ MÀw` aÀw`M€¥Àw`Àw`€¥Àw` AÀZü  ÀBH ÀBH  ÀBT ÀBT!MÀj¼ÀB0ÀuÀÀj¼ÀB0MÀw`€¥ÀAh€¥ÀAhM€¥ÀAhÀuÀ€¥ÀAh MUAÀÁ4ÀAhÀÁ4ÀAh(AUAÀÁ4ÀAhÀÁ4ÀAh4MÀÁ4ÀŸDÀu¼%ÀŸDÀu¼ÀÁ4ÀŸDÀu¼AÀu¼%Àu¼(MÀÁ<Àu¼%Àu¼ÀÁ<Àu¼AÀ»ˆYUÀu¼ÀB0M€¥ÀAhÀuÄ€¥ÀAh#MÀÁ4ÀAhÀuÄÀÁ4ÀAh*MÀj¼ÀB0UÀu¼ÀB0Àj¼ÀB0'M€¥YÀuÈÀtÈ€¥YÀuÈA]ÀAhÀAhMÀBPÀu¼ÀBPMYYYMYÀu¼Àu¼YÀu¼AÀu¤]ÀuÀMÀu¼ÀBPÀBP  ÀBà ÀBàMÀtü€¥Àtü€¥Àtü!€Àtü€¥Àtü€¥Àtü  ÀBð ÀBðAYÀu¼Àu¼  ÀC ÀCA€¨€…]€¨À‘” aÀu¼AÀu¼ÀuÌAÀt4ÀuÌ  ÀChMYÀuÌÀy\Ày\AUÀ­8Àu¼E AAEEAUÀC€Àu¼AUÀC€Àu¼ aUÀC€Àu¼AÀu¼ÀÀàuÀu¼ÀtìAuÀu¼ÀtìÀÀàAUYÀAhÀAhMÀB0ÀB0 AÀB0EAÀuÌYÀ[´AÀB0]ÀZüAÀuÌYÀZü  ÀCä ÀCä AÀ‘¸)AUÀC€ÀAhuÀC€ÀAhYÀ“ÀAÀuÌÀÀàUÀC€ÀAh+AÀuÌÀÀàYuÀC€ÀAhYÀ“À'AÀuÌÀÀàuÀC€ÀAhYÀ“À0AUÀC€Àu¼ÀÀàuÀC€ÀAhYÀ“ÀAÀu¼UÀC€Àu¼'AUÀC€ÀuÌÀÀàUÀC€ÀAh AUÀC€Àu¼UÀC€ÀuÌauÀC€ÀAhYÀ“À&AUÀC€ÀuÌuÀC€ÀAhY&AUÀC€ÀAhuÀC€ÀAhYE€ÙÀC€À­8Àu¼ÀtìAYÀ“ÀÀÀàuÀC€ÀAhYÀ“À+AYÀ“ÀÀÀàuÀC€ÀAhYÀ“À  ÀD| ÀD|'AUÀC€Àu¼ÀÀàUÀC€Àu¼AÀu¼ÀÀàUÀC€Àu¼@€ÙÀC€À­8Àu¼ÀtìAYÀ“ÀÀÀàYUÀC€Àu¼&AYÀ“ÀÀÀàYUÀC€Àu¼,AYYUÀC€Àu¼YUÀC€Àu¼(AYUÀC€Àu¼YUÀC€Àu¼AUÀC€Àu¼Àu¼1AuÀC€ÀAhYÀ“À]UÀuÈYÀ“À5AYuÀC€ÀAhYÀ“ÀYUÀuÈYÀ“ÀMÀuÈÀuÈ@€ÙÀC€À­8Àu¼ÀtìAYÀ“ÀÀÀàUÀuÈYÀ“À&AYÀ“ÀÀÀàUÀuÈYÀ“À AÀAhEAÀu¼YAÀ[ ÀAh AÀ[ AÀuÄÀAh AÀ\@ AÀ[` AÀ[´A]ÀAhAÀ[´]ÀAhAÀAhYAÀ[`ÀAhAÀ\@ÀAhAÀuÌÀAhAUYÀZüÀAhAÀ[ YÀAhAÀ[´YÀAhAÀ\@ÀuÌAÀuÌYÀAhAÀ\@YÀAhAÀ[`YÀAh MÀt4AÀt4]AÀt4YÀAhAÀuÀÀAhAÀ[¤ÀAhAÀuÄÀ[¤AÀw`ÀAh AÀw`AÀu¼ÀAhAÀt4ÀAhAÀu¼YÀAh aÀAhAÀu¼]AÀt4YÀ[ AÀu¼YÀ[ AÀuÈÀAhA%YÀuÈYÀuÈ  ÀG€ ÀG€AU]ÀuÌAU]ÀuÌÀuÌAYÀuÌA AUAUÀuÌÀuÌ AÀuÌAUÀP AÀH|À¬ÔA]UAUÀtüÀ¬ÔEAUÀtüAUÀu¼AUÀu¼Àv AUÀtüÀv AÀtüUÀtü AÀ¬ÔAÀ¬ÔEAÀuÀ¬ÔEAÀuÌÀ¬ÔEAEÀ¬ÔÀHdAÀuÌ]ÀHd AÀuÌAÀZüÀP Àwp&AÀH|U]ÀP ÀwpÀ¬ÔEAÀHdÀ¬ÔAEÀ¬ÔMÀwpÀu¤AÀ‘´À‘”MYÀZüYÀZüYÀZüAÀuÌ]ÀtüAÀtüÀ¬ÔAUÀupÀ­8EAUÀupÀ­8À¬ÔAUÀupÀ­8AÀtüÀ¬ÔEMÀuÌÀuÌÀ¬ÔEMÀuÀ¬ÔEMÀuÌÀtüÀ¬ÔEAÀPÀ¬ÔEAÀOèÀ¬ÔEAYÀOèÀ¬ÔEAÀOìÀ¬ÔEAÀOðÀ¬ÔEAÀPÀ¬ÔEAÀOìÀuÌAÀP AÀPAÀP €ÁAÀP Àwp AEÀH|MÀOìÀOèÀwpÀ¬ÔEMÀH|ÀP ÀwpÀ¬ÔE MMÀuÌÀuÌMÀOìÀOìAAUÀP Àwp*AUÀP Àwp]UÀP Àwp!AUÀP ÀwpÀP ÀwpAÀP ÀwpAÀH|À¬ÔE&AÀP Àwp]UÀP ÀwpMÀwpÀuÌÀwpAÀ¬Ô]Àwp6AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌAÀ¬Ô  ÀLð ÀLð&€AÀuÌÀwpYÀuÌYÀwpMÀuÌÀwpAÀw(]Àv| AÀv| AÀv| AÀv| AÀv| A Àv| AÀv| AÀv| A Àv| A Àv|AÀw(]ÀuÄ AÀuÄAÀMÌYÀwp AÀMÌMÀw$Àw$MYÀw$ÀwÀwMÀw$ÀwÀw"AUYÀN|ÀiˆÀwpÀN€ AÀLøAÀLøÀLø MÀMtEAÀMxÀwpAÀLø]Àw( M]ÀN¬ÀN€U]ÀN¬ AÀw((MYÀw(ÀN¬UYÀw$YÀw(AÀw$Àw( AÀN€MÀLøÀN|€YUÀtüÀuÌÀwpMÀM„ÀM„ €YUÀtüÀuÌÀwp"€YUÀtüÀuÌÀwpÀwp MYUÀtüÀuÌÀwpÀwpAÀN€YÀN€NqAÀM„AÀM„AAYUÀtüÀuÌAÀwpÀwpÀLøÀN|#€YUÀtüÀuÌÀwpÀwp€ÀLøÀuÈÀN|&AÀLøYUYÀN|ÀiˆÀwp)AAYUÀtüÀuÌAÀwpÀwp?MÀN|UYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwpCMÀN|YUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwpMÀMtYÀN€ AÀMtAÀMtYÀMt  ÀOx ÀOxAÀuUÀuÌÀ­8)AUÀuÌÀ­8AÀuUÀuÌÀ­8;€YÀu¤UYYÀu¤ÀwpUYYÀu¤Àwp  ÀOÌ ÀOÌAÀPAÀP]ÀOìAÀP]YÀOèAÀPYÀOì€ÀZœÀOìAÀP AÀOìAÀOìÀOìAÀP]ÀOðAÀOì]ÀOð$AÀP€­ÀPÀPTAYÀOì€ÀPYÀPYÀPYÀPYÀOìYÀOìvAUYÀOèYÀPAYÀOì€ÀPYÀPYÀPYÀPYÀOìYÀOìTA€ÀPYÀPYÀPYÀPYÀOìYÀOìÀPXA€ÀPYÀPYÀPYÀPYÀOìYÀOìYÀPXA€ÀPYÀPYÀPYÀPYÀOìYÀOìYÀPTA€ÀPYÀPYÀPYÀPYÀOìYÀOìYÀOìAÀOì] AÀ‘¬AÀ‘¬À‘”A%Àu¤]Àu¤$M]ÀuÌYÀwpUÀwpÀuÌAÀuÌÀu¤AUÀ‘”UÀ‘” AÀwp AÀ‘” AÀ‘”€½AÀ’,À’,A€¨À’,À’,aUÀ’,U]Àu¤Àwp =À’,!AUÀ’,U]Àu¤ÀwpEA€¨À’,Àu¤A€¨À’,E AÀ’(AÀ’(]UÀ’(À‘” AÀ’(]uÀ’(À’(À’(AÀ’(]À’,AÀ’(]UÀ‘”AÀ’(]À’(AÀ’(]UÀ‘”À’(AÀ’(]UÀ’(AÀ’(]UÀ’,À’( AÀ’(]uÀ’,À’(À’(AÀ’(]UÀ’(À’(&AÀ’(]€À’,À’(À’(À’(!AÀ’(]uÀ‘”À’,À’(AÀ’(]À‘”%AÀ’(]u]À’(À‘´À’(+AÀ’(]€áÀ’(À’,À’(À’,À’(AÀ’(]UÀ‘ÀÀ’('A€áÀ’(À’,À’(À’,À’(À’('A€áÀ’(À’,À’(À’,À’(À’, AUÀ’(À’(UÀ’(À’(,AuÀ‘”À’,À’(uÀ‘”À’,À’(AÀ’,À’,6A€À’,À’(À’(À’(€À’,À’(À’(À’( AUÀ’,À’(UÀ’,À’(*AuÀ’,À’(À’(uÀ’,À’(À’(AUÀ’(UÀ’("AUÀ‘”À’(UÀ‘”À’(AÀ’(À’(*AuÀ’(À’(À’(uÀ’(À’(À’( AUÀ’(À‘”UÀ’(À‘”AÀ’(À‘”"AUÀ‘ÀÀ’(UÀ‘ÀÀ’(AÀ‘ÀÀ‘¬ aÀwp AÀ’, AÀ’,AÀ’,À‘”4Au]À’(À‘´À’(u]À’(À‘´À’(AÀ‘´À‘¬A]À’(]À’( AÀ‘´AÀ‘´À‘”AÀ‘¬À‘¤AÀ‘”À’,M€¨À‘”€¨À’, aÀ’,AUÀ‘¬€…À’(AÀuÌUÀuÌÀwh AUÀtüÀuÌUÀtüÀuÌAUÀuÌUÀuÌMYÀuÌYÀuÌAUÀtüÀuÌ AÀOÔ AÀOÔ AÀOØ AÀOØE,MUÀuÌÀ­8€ÀuÌYÀuÌÀ­8/MYÀuÌ€ÀuÌYÀuÌÀ­8YÀuÌ6A€ÀuÌYÀuÌÀ­8€ÀuÌÀ­8YÀuÌAÀuÌUÀu¼E aÀOØ aÀOÔ AÀOØ aÀOÜ!AuÀuÌÀ­8UÀuÌÀ­8 AÀyAÀuÀUÀuÀÀOÔAUÀuÀÀOÔÀOÔAUÀuÀÀOÔ aÀyAÀi”Ài” AUÀuÀÀuÀAÀi”Ài” AUÀu¼Àu¼AÀi”Ài”AÀvpÀvpMÀvtÀvtMÀvxÀvxAYÀvpEAAUAAUAuÀuÌÀ­8ÀuÌ AuMYÀwhYÀwhMYÀwhYÀwhYÀwhMÀwhÀwhMÀkdAu AUMÀtÈÀtÈ AU MÀtÈ MÀuÀMÀuÀÀuÀ AÀtÄMÀtÄÀtÄMÀyÀyMYÀyYÀyAQEMYÀu¤AÀu¤]UÀu¤Àu¤AAUÀu¤Àu¤!AÀu¤€­Àu¤UÀu¤Àu¤MYÀu¤YÀu¤AÀtÈÀwpMÀtÈÀwpAÀtÄ]Àw$A]Àw$A]Àw$Àw$MÀtÄÀw$'€Às<Àu¼Àt4uÀu¤Àu¤Àwp AUÀu¤ÀwpAÀwpÀwpAqÀs<Àu¼Àt4UÀu¤ÀwpAUÀu¤ÀwpAÀwpÀwp&qÀs<Àu¼Àt4ÀwpUÀu¤Àwp%MÀwpUÀu¤ÀwpAÀwpÀwpJqÀs<Àu¼Àt4UÀu¤ÀwpAÀwpAUÀu¤ÀwpAÀwpÀwp AÀwp,MÀtÈÀwp, AÀy  AÀyPMÀkdÀy , AÀu¤, AÀyP, AÀuÌ, AÀtÄ, AÀ[`, AÀZü, MÀZü,,MÀZü,U€á,&AUYÀZüYU€á,AÀ[`U€á,AÀ[´U€á,AÀ\@U€á,AU€á,,AU€á,€áA,AÀuÀ€YAuÀuÌÀ­8, AÀuÀ, AÀtÈ,AÀyUÀuÌÀwh AÀt4, MÀZœEMYÀZœEAYÀZœEAÀuÌÀtü AÀt AÀvt, AÀvp,AUÀtüÀu%AUÀtüÀuAUÀtüÀuAUÀtüÀuY,AUÀtü"AYUÀtüYUÀtüAUÀu¼"AYUÀu¼YUÀu¼AUÀtü,AUÀu¼,AUÀuÌÀwh,A,,AYUÀuÌÀwhY, AY,, M,,,AÀuUÀtüÀuAÀtüYUÀtüÀu MÀtü AUÀuÌÀwhUÀuÌÀwh(AYUÀuÌÀwhYUÀuÌÀwhAUÀtüÀuÌÀtüAU]] AÀ»„, AÀ¶, AÀ»0, AÀ»ˆ, MÀ»ˆ,, AÀ»ˆ AÀ»¤, AÀ»¤AÀ»œUU, AÀ»œ AÀ»”, AÀ»”AUUÀ»ˆ,!MUUÀ»ˆ,UU,AUUÀ»ˆU,AUYUUÀ»ˆYUU,AUUÀ»ˆAÀ»ˆUUÀ»ˆAUU,,AUU,U AÀ¼$, AÀ¼$AÀ‘”]À‘”AÀ¶ÀuÌ  ÀZ ÀZ;€ÀuÌu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌ9MÀuu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌ MÀuÌEE MÀuÌMÀuÌ]ÀuÌ]ÀuÌAÀuÀuMÀtüÀtüEAÀZTÀZT AÀ‘¬A AÀ‘¸AÀ‘¸À‘´AUUAÀ»0ÀuÌAÀ»0ÀZT AÀ‘¬AYUÀuÌÀwh AÀ‘¬ AÀ‘¬AÀ‘°À‘” AÀ‘° AÀ‘° AÀ‘°AÀ¶ÀZTAÀ‘¸À‘” AÀ‘¸ AÀ‘¸AÀ‘¸À‘¤AÀ‘¤]AÀ‘¼À‘” AÀ‘¼ AÀ‘¼AÀ‘¼À‘´AYUÀuÌÀwhYÀZTauÀZ|AUÀuÌÀwhuÀZ| aÀyAÀ‘¤uAuÀZ|AÀZTÀZœ%MYuÀZ|YÀZTYÀZœ AUÀwpUYÀwpÀuÌ6AUYÀwpÀuÌAUÀwpUYÀwpÀuÌAÀuÀ]AÀ‘”À‘´AÀ»ˆÀZüMÀu¬ÀuÀ]ÀZüMÀ[´À[´ =À[´ aÀ[´AÀ‘”À‘¸AÀ‘”À‘¸A€¨À‘¸À[´AÀ»œÀ[´MÀu¬ÀuÀ]=U]À]X=UÀ]X2Auu]À]XÀZÀ­8ÀuÌYYÀZü2Auu]À]XÀZÀ­8ÀuÌYYÀ[´)AuU]À]XÀ­8ÀuÌYÀ[ )AuU]À]XÀ­8ÀuÌYÀ[`)AuU]À]XÀ­8ÀuÌYÀ\@%AuUÀ]XÀ­8ÀuÌ]À]Ð AuÀZÀ­8ÀuÌYÀuÌ =ÀZAÀ‘”À‘°AÀ‘”À‘° aÀ[`AÀ»¤À[`AÀ‘”À‘¼AÀ‘”À‘¼ aÀ\@ aÀ[ #MÀuÌYYÀZüYYÀZü#MÀuÌYYÀ[´YYÀ[´MÀuÌYÀ[`YÀ[`MÀuÌYÀ\@YÀ\@MÀuÌYÀ[ YÀ[ MÀuÌ]À]Ð]À]Ð=uÀ­8ÀuÌAuÀ­8ÀuÌ=u]À]XAÀ‘”À‘ÀAÀuÀÀZüAÀuÀ]ÀuÀ  À^  À^ M€¥Y€¥Y MY MAYYAÀ‘”À‘˜AÀ‘˜]Y]AÀ‘¬À‘˜AÀ·,]AYÀvp]A€¨À‘˜] AÀ‘˜AÀ‘¸À‘˜AÀ‘°À‘˜AÀ·,]À¬ÔEAYÀvp]À¬ÔEA€¨À‘˜]À¬ÔEAÀ·,]AYÀvp]A€¨À‘˜]AÀ‘°Àº AÀ‘¬Àº AÀ‘¸]Àº AÀ‘”]AUÀtüÀ¶À¶AUÀtüÀ¶MÀtüÀuÌÀuÌ AÀ‘´A€¨À‘´ AÀ‘´ AÀ‘ÀAÀ‘ÀÀ‘”AÀ‘ÀÀ‘¤A€¨À‘ÀAÀ»„ÀtüAÀ¶ÀuMÀtüÀ»„Ea AEÀtìAÀ­8YÀtü4MYUYUeuÀµÌeÀ¼$Àt4&AUeuÀµÌeÀ¼$Àt4FA€YÀ·,eÀ¼$UYUeuÀµÌÀ·,eÀ¼$ AEÀ¼$AEuÀµÌÀ·,eÀ¼$ aÀtìaUUÀu¼  Àbp Àbp  Àbx Àbx AA  Àb Àb AÀ}œaAÀ}œAUÀb”E AÀaMÀ}œYÀaMAYY AÀv8EAUAÀbüEAuAÀbüEA€AÀbüEAÀcUAÀcuAÀc€MÀbüEMeÀbüEAAAÀbüEE MÀbüE AÀcAÀceAAÀcE AÀc AÀcAÀcY AÀcAÀcY MÀbüEMYÀbüE MÀbüEMYÀbüEAÀcUAUAÀbüE AÀt4AÀt4À­8AÀt4Àt8 AÀtü AÀtüÀ­8AÀtüÀtø AÀu¤ AÀu¤À­8AÀu¤Àu¨ AEÀt4MÀt4Àt8E AEÀtüMÀtüÀtøE AEÀu¤MÀu¤Àu¨E MÀbüEM]ÀbüEMÀµ¨ÀbüEM]Àµ¨ÀbüEA€AÀbüEM]€ÀbüEM]ÀbüE AÀcAÀc]AÀcÀµ¨AÀc]Àµ¨AÀc€AÀc]€AÀc]M]ÀbüEAU]]AÀbüEMYU]]ÀbüEMÀµìÀbüEMÀ¶ÀbüEAÀc]AÀcU]]AÀcYU]]AÀcÀµìAÀcÀ¶ AÀcuÀ¶YÀ¶À¶AÀcÀ¶h =À·¼AUÀ·¼EAÀcÀ·¼AUAÀcÀ·¼E"MAÀcÀ·¼AÀcÀ·¼MYUÀbüEM€¥ÀbüEAÀcYUAÀc€¥MÀu¼ÀbüEMÀuÄÀbüEAÀcÀu¼AÀcÀuÄMYÀuÌÀbüEMÀuÀÀbüEAÀcYÀuÌAÀcÀuÀAÀcYÀuÀMÀ¶ÀbüEM]À¶ÀbüEM]ÀuÌÀbüEMÀutÀbüEM]ÀutÀbüEAÀcÀ¶AÀc]À¶AÀcÀutAÀc]ÀutMÀuÀbüEMYÀuÀbüE AÀuAÀcAÀuAÀcYÀuMÀtøÀbüEMÀtüÀbüEMYÀtüÀbüEAÀcÀtøAÀcÀtüAÀcYÀtüMÀuÌÀbüEAÀcÀuÌMÀ“ÀÀbüEMÀwlÀbüEMÀwhÀbüEMYÀwhÀbüEAÀcÀ“ÀAÀcÀwlAÀcÀwhAÀcYÀwhAUÀ­8À­8AÀbüEAUÀtAÀbüEMYUÀtÀbüEAÀcUÀ­8À­8AÀcUÀtAÀcYUÀtMÀtÄÀbüEMYÀuÀÀbüEMÀtÀbüEM]Àv|ÀbüEMÀtÈÀbüEMÀtÀbüEMÀtìÀbüEAUÀuÀÀuÀAÀbüEM]UÀuÀÀuÀÀbüEM]ÀuÀÀbüE"AuÀuÀÀuÀÀuÀAÀbüE"M]uÀuÀÀuÀÀuÀÀbüEAUÀuÀAÀbüEMYUÀuÀÀbüEAuÀuÌÀ­8AÀbüEMYuÀuÌÀ­8ÀbüE MEÀbüEAUÀuÀUÀuÀAUÀuÀMÀt8ÀbüEMÀvtÀbüEMYÀvtÀbüEMÀvxÀbüEMYÀvxÀbüEMÀyÀbüEMYÀyÀbüEMÀu¬ÀbüEM]Àu¬ÀbüEMÀwdÀbüEM]ÀwdÀbüEMÀu¨ÀbüEMÀu¤ÀbüEMYÀu¤ÀbüEM€ÔÀu¤ÀbüEMÀt4ÀbüEMYÀt4ÀbüEM€ÔÀt4ÀbüE AÀtXAÀcÀtÄAÀcÀtAÀcÀtÈAÀcÀtAÀc]ÀtAÀc]ÀtAÀcÀtìAÀcUÀuÀÀuÀAÀc]UÀuÀÀuÀAÀcuÀuÀÀuÀÀuÀ AÀc]uÀuÀÀuÀÀuÀAÀcUÀuÀAÀcYUÀuÀAÀcuÀuÌÀ­8AÀcYuÀuÌÀ­8AUÀuÀUÀuÀAÀcÀt8AÀcÀvtAÀcYÀvtAÀcÀvxAÀcYÀvxAÀcÀyAÀcYÀyAÀcÀu¬AÀc]Àu¬AÀcÀwdAÀc]ÀwdAÀcÀu¨AÀcÀu¤AÀcYÀu¤AÀc€ÔÀu¤AÀcÀt4AÀcYÀt4AÀc€ÔÀt4MÀv|ÀbüEAÀcÀv|MÀw$ÀbüEMYÀw$ÀbüEMÀwÀbüEM]ÀwÀbüEAÀcÀw$AÀcYÀw$AÀcÀwAÀc]ÀwMÀ·¼ÀbüEMYÀ·¼ÀbüE MÀbüE AÀcM]Àu¤ÀbüEMÀwpÀbüEAÀcÀwpMÀyÀbüEMYÀyÀbüEMYYÀyÀbüEMYYÀu¤ÀbüEMÀyÀbüE!AUÀuÌYÀyAÀbüEAÀcÀyAÀcYÀyAÀcYYÀyAÀcÀyAÀcUÀuÌYÀyMÀw\ÀbüEMYÀw\ÀbüEMÀwXÀbüEMÀxøÀbüEMYÀxøÀbüEMYÀwpÀbüEMÀvpÀbüEMYÀvpÀbüEAÀcÀw\AÀcYÀw\AÀcÀwXAÀcÀxøAÀcYÀxøAÀcYÀwpAÀcÀvpAÀcYÀvpMÀvTÀbüEAÀi|Ài|%AUÀu¼AÀi|Ài|AÀiˆÀiˆ%AUÀu¤AÀiˆÀiˆ AÀv AÀu]ÀuMUAYÀvpYÀvpAÀyÀyAYÀyYÀyMÀv Àv Àv AÀv Àv AUÀtüAÀv Àv AUÀu¼AÀv Àv AÀu¼  Àj Àj '€ÀtüÀuÌÀixÀuÌÀixÀuÌMÀuÀuAÀu¼Àu¼ €ÅÀu¤ €ÅÀt4 €ÅÀuÈ €ÅÀuÄ)MYÀu¤UÀwpÀuÌUÀwpÀuÌMÀuÌÀuÌ$MYÀwhÀuÌYUÀuÌÀwh €ÅÀtü  Àk ÀkMÀtüÀy\Ày\MÀuÀy\Ày\MÀutÀy\Ày\AÀy\Ày\AUÀtüAÀy\Ày\MYÀtüÀtüYÀtüMÀtüYÀtüYÀtüMYÀtüÀuYÀtüMYÀtüÀuÌYÀtüAYÀtüYÀtü$AUÀtüAYÀtüYÀtüMYYAEYYAÀu¤],AY]/AÀ·(]UYÀ¶ Y€À¶À¶ AÀvx]Àvt  Àk´ Àk´ AUÀuÀÀuÀUÀu¤ÀuÀMÀtÈÀk´Àk´MÀtÄÀk´Àk´%MÀt4UÀk°Àk´UÀk°Àk´%MÀu¤UÀk°Àk´UÀk°Àk´AÀt4YÀuÀ%MÀyPUÀk°Àk´UÀk°Àk´%MÀy UÀk°Àk´UÀk°Àk´)AÀw\AUÀk°Àk´UÀk°Àk´MÀt4Àk´Àk´MÀu¤Àk´Àk´MYUAÀk´€„Àt4€ÅÀt4AÀt4ÀtôMÀi”Àt4Àt4AÀk´€„Àu¤€ÅÀu¤AÀu¤ÀtôMÀi”Àu¤Àu¤AÀk´€„ÀuÈ€ÅÀuÈAÀuÈÀtôMÀi”ÀuÈÀuÈ AÀuÈ,MÀt4YÀu¤YÀu¤MÀu¤YÀu¤YÀu¤MÀt4YÀt4YÀt4MÀu¤YÀt4YÀt4MÀu¤Ày`Ày`MÀwÀy`Ày`MÀw$Ày`Ày`AÀy`Ày`$AUÀuÀYÀuÌAÀy`Ày`MYÀu¤Ày`Ày`MÀyÀy`Ày` AEÀy`MÀw\Ày`Ày`$AUÀuÌYÀyAÀy`Ày`MÀutÀy`Ày`MÀuÌÀy`Ày`MÀwXÀy`Ày`MÀwpÀy`Ày`MÀyPÀy`Ày`MÀy Ày`Ày`M]À“ÀYÀvpÀwhAÀu¤]À“ÀAÀuÌ]À“ÀAÀuÌYÀvp MUYÀu¤ÀuÌYÀwh  Àm Àm'€Àu¤Àu¤ÀiˆÀuÀÀiˆÀuÀ'€Àt4Àt4Ài|Àu¼Ài|Àu¼AÀvtÀvtAÀvxÀvxAÀwhÀwhAYÀwhYÀwhAÀwdÀwdAÀu¬Àu¬AÀu¨Àu¨AÀxøÀxøMÀi”Àu¤UÀu¤Ài”AÀyÀy(AUÀuÌYÀyUÀuÌYÀyAÀw$Àw$AÀwÀwMÀw\Àu¤Àw\$MÀi”YÀu¤UYÀu¤Ài”AÀtÈÀtÈAÀtÄÀtÄAÀuÀÀuÀ AÀu¼A AUÀuÀÀuÀUÀuÀÀuÀAYÀuÀYÀuÀAUÀuÀUÀuÀ"AuÀuÌÀ­8uÀuÌÀ­8*AuÀuÀÀuÀÀuÀuÀuÀÀuÀÀuÀAÀyÀyAÀt4Àt4MÀt4Àt4E aÀt4MÀi”ÀyUÀyÀi”AYYAÀw$AYYMÀwYYMYÀwpÀwME AÀw AYMÀwXÀwX  ÀnÌ ÀnÌAAÀwpEMÀuÈÀwpE#€AAÀwpÀwp]MUÀu¤ MÀw\MYÀw\ MÀw#€AAÀwpÀwX]#€AAÀwpÀy] MÀwpMYÀyMUÀuÌYÀy€Àw\ MÀw$ MÀwX MÀy MÀyP MÀyT MÀyX&€YÀw\ÀwpUYÀw\ÀwpMÀuÈUÀuÈAUÀuÈMUÀuÈEAÀuÈÀuÌ AÀuÈ AÀ¶ AÀ¶  MYÀu¤ÀwpUÀu¤ÀwpMUÀuÌÀwhÀu¤ MYUÀuÌÀwhYÀu¤'€ÀuÌYÀuÌuÀuÌYÀuÌMUÀuÌÀwhMYUÀuÌÀwhYMÀ­8ÀwpÀ­8AÀwpÀ­8€ÀuÌÀuÌÀwpÀwp€ÀuÌÀuÌÀwp*AuÀu¤ÀwpÀuÌuÀu¤ÀwpÀuÌAAuÀuÌYÀuÌAuÀu¤ÀwpÀuÌuÀu¤ÀwpÀuÌ MÀuÌMÀuÌUÀu¤ÀwpA7MY]ÀwpuAÀwpÀwpAÀwpÀwpÀwpRAuÀuÌYÀuÌAYA]ÀwpuAÀwpÀwpAÀwpÀwpÀwpMAÀwpÀwpÀwpÀwpMÀu¤Àw\AÀwXÀwXAÀyÀyMÀt4Ài”Ài”MÀu¤Ài”Ài”AÀt8Àt8M€Á ÀwpM€Á ÀwM€Á Àu¤€Á M,,AUÀtüÀu,3M€Àtü€ÅÀtüÀuÌ€Àtü€ÅÀtüA, AÀy, AÀw\, MÀwX, AÀ·¼, AÀy,AUÀuÌYÀy, AÀyT, AÀy , AÀw$,AYÀu¤Y,AYÀu¤, MÀuÌMÀtü]ÀtüAUÀtüÀuÀu AUÀtüÀuUÀtüÀuÌMÀtüÀtü AEYBAAYÀtüAÀuÌYÀtüAYÀtüAÀuÌYÀtü AAÀuÌÀuÌAÀuÌÀuÌD€AYÀtüAÀuÌYÀtüYÀtüUÀuÌÀuÌYÀtü.MAÀuÌÀuÌUÀuÌÀuÌUÀuÌÀuÌ?€AYÀtüAÀuÌYÀtüYÀtüYÀuÌYÀtü$MAÀuÌÀuÌYÀuÌYÀuÌ$MYÀtüUÀuÌÀwhYÀtü(MYÀtüYUÀuÌÀwhYÀtü1MYÀtüUYUÀuÌÀwhÀuÌYÀtüXAAYÀtüAÀuÌYÀtüAYÀtüAUYUÀuÌÀwhÀuÌYÀtü:AUYUÀuÌÀwhÀuÌUYUÀuÌÀwhÀuÌLAAÀuÌÀuÌAUYUÀuÌÀwhÀuÌUYUÀuÌÀwhÀuÌMYÀtüYÀuÌYÀtü,MYÀtüYYUÀuÌÀwhYÀtü>MYÀtüuYÀuÌYYUÀuÌÀwhÀuÌYÀtüeAAYÀtüAÀuÌYÀtüAYÀtüAuYÀuÌYYUÀuÌÀwhÀuÌYÀtü0AYYUÀuÌÀwhYYUÀuÌÀwhTAuYÀuÌYYUÀuÌÀwhÀuÌuYÀuÌYYUÀuÌÀwhÀuÌfAAÀuÌÀuÌAuYÀuÌYYUÀuÌÀwhÀuÌuYÀuÌYYUÀuÌÀwhÀuÌMYÀu¼ =UAYÀuÌMÀuÄÀuÄaUÀu¼ AÀ¶ˆ=*AUÀu¼uÀu¼AYÀuÌÀuÌMÀu¼YÀuÌ]ÀuÌDAuÀu¼AYÀuÌÀuÌUAÀu¼AYÀuÌ]ÀuÌ*AUAÀu¼AYÀuÌ]ÀuÌE7AuÀu¼AYÀuÌÀuÌU AYÀuÌÀuÌAU AYÀuÌÀuÌEAE  Às´ Às´  Às¼ Às¼  ÀsÔ ÀsÔ  ÀsÜ ÀsÜ  Àsä Àsä  Àsì Àsì  Àsð Àsð  Àsø Àsø  Àt Àt  Àt Àt  Àt Àt  Àt Àt  Àt ÀtA]u  Àtô Àtô  Àuœ Àuœ  Àu´  Àv| Àv|  ÀxÀ ÀxÀ  ÀxÈ ÀxÈ  ÀxÐ ÀxÐ  ÀxØ ÀxØ  Àxà Àxà  Ày\ Ày\  Ày` Ày`  Àyd Àyd AÀ‘”AÀt4%ÀŸDÀt4AÀt4%Àt4MÀt4€¥Àt4€¥Àt4/MÀu¤€¥ÀuœYÀu¤€¥ÀuœYÀu¤MÀu¤€¥Àu¤€¥Àu¤'MÀu¤€¥YÀu¤€¥YÀu¤AUÀ­8ÀuÌÀuÌ AEÀuÌA€éAUÀ‘”€…AÀtÀtaU€¨€…€¨À‘”AuUAÀt4ÀtìAÀt4]Àu¤AYÀwhAÀwlÀsð AÀtAÀtÀtAÀtìÀt쀀¥€¥ M€¥Y€¥Y'€Y€¥Y€¥YAYÀt4Àt4MÀt4Àt4Àt4MÀtìÀtìÀtìAÀtüÀwlAYÀu¤YÀwh M  À{D À{D  À{H À{H  À{L À{L  À{l À{l  À{„ À{„  À{ˆ À{ˆ  À{Œ À{Œ  À{ À{  À|p À|pAUÀ{ŒÀ|pÀ|pMÀ{lÀ} EMÀ|pÀ} EMYÀ|pÀ} E  À|Ø À|Ø  À|Ü À|Ü AÀ|p AÀ} EAUÀ|ÜÀ|pAÀ} EMYUÀ|ÜÀ|pÀ} EAYUÀ|ÜÀ|p  À}  À} MÀ} EMYÀ} E€À}œ  À}T  À}h À}hAuÀ}hÀ}œAuÀ}hÀ}œ]AuÀ}hÀ}œ AlEMÀ­8À­8AÀ™8À­8AÀ“ÀÀ­8  À\ À\  Àd ÀdAhAÀ›YÀ›XAÀš¬YÀ›XAUYÀ“ÀÀ“˜À›|AÀš¬À­8AUYÀ“ÀÀ“˜À›\AÀšHÀ­8MÀ­8ÀšÀš €À­8ÀšYÀ™TÀš AÀ­8UÀš0YÀšL$MÀ­8YÀšLUÀš0YÀšL.€]À”¼AÀ™LÀ™HYÀ™8YÀšL€—A€YÀ™8UA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À­8]Àœ À–XÀ­8À­8AÀ™8À™8€›A€YÀ™8UA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À­8]Àœ À–XÀ­8]ÀšL!€]À­8YÀ™8YÀšL&€YÀ™8AÀ™LÀ™HYÀšLA€­À™ÔÀ™ØÀ­8A€­À™ÔÀ™ØA€­À™ÔÀ™Ø]À™ÔA€­À™ÔÀ™Ø]À™ØAÀ“˜Y€­À™ÔÀ™ØAÀ“˜€­À™ÔÀ™ØAÀ•ØÀšMYÀ™8Àš,MYÀ™8]À”¼UYÀ™8YÀ™@ MÀ­8E%€YÀ™8]À”¼À­8YÀ™@"qYÀ™8]À”¼À­8À™@!€YÀ™8]À”¼À­8À™@cA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@AÀ­8À˜MÀ–XÀ­8À–X€À–XÀ­8À­8À–XAÀ­8À–XMÀ­8À–XMÀ­8À–XAÀšL]À™@AÀ•ØUÀ•ØAlÀ}œE AÀ}œ AÀ}œ  À‘( À‘(  À‘4 À‘4a€½ AE€…aU€…ÀµÌAA€…=€½  À‘xAE€í€½A€ñ]€õ M€½€é A€õ]A€éY] A€ñ] A€ñ]A€éu A€é]AÀ‘¬u AÀ‘¬€ùAÀ‘¸u AÀ‘¸€ýAÀ‘¼u AÀ‘¼A€…€é aÀ’(a a€¨À‘  AÀ‘ AÀ‘ À‘” AÀ‘¤ A€¹À‘”A€¨€¹]€¨À‘” A€…À‘”AUÀ‘”€…U]AU]U]AUU]]UAUÀ‘”€…À‘” AÀ‘¨€±AÀ‘”]À¶  À“T À“T  À“XMÀ­(À­( AEÀ­(AUÀ­(AUÀ­(AUÀ­(AEUÀ­(AUÀ­( AÀ­(  À“Œ À“Œ  À“˜  À“¸ À“¸  À“È À“È  À”¼ À”¼  À”Ä À”Ä  À”Ì À”Ì  À”Ô  À”ô  À•  À•$  À•<  À•T  À•d À•d  À•l À•l  À™H  À™L  À›ÈBAUYÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–XaAUÀ˜(]AÀ–XÀ–XAUYÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–X$AÀ˜UÀ˜(]AÀ–XÀ–X-MÀ˜UYÀ˜xÀ–XUYÀ˜xÀ–XMÀ˜xÀ–XÀ–XAXÀ¯´$AUYÀ˜`À–XAÀ–XÀ–X  Àœ, Àœ,  Àœ4 aÀ™@ AÀš AYÀš AYÀš YÀš AÀ˜YÀš AÀ˜  À< À<€Ù,AU AUAUU À@Y  À` À`  Àd ÀdÀ@ÀdÀ` À@  ÀŒ ÀŒAÀ´¨À´˜ AÀ´¨ AÀ´˜ AÀ´˜AÀ´¨À¶AUÀ´¨À¶  ÀÄ ÀÄ!AuYÀ¼$À¼$ÀµhÀ´˜AuYÀ¼$À¼$Àµh AuYÀ¼$À¼$ÀµhÀÄ%AUuYÀ¼$À¼$ÀµhÀÄMÀ¶À¶MÀ´˜uÀ¹¸uÀ¹¸MUUÀ¹¸UÀ¹¸M€À·¼À²ÌAÀºÀºMÀ´”À·¼AÀ»¤UÀ¶mMÀ´˜€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤pA€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤YÀ»ˆpA€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤YÀ»œpA€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤YÀ¼$€˜A€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤AÀ´”UÀ¶MÀ´˜À»¤6A€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À»¤AÀ¼$À¼$AÀ¼(À¼( AÀ´ÌAÀ´ÌUÀ¶À´Ì AÀ´¬AÀ´¬UÀ»„À´¬MÀ¶À¶À¶AYÀ·¼AYÀ·¼UÀ·¼YÀ·¼AÀ¶UYÀ¶À´Ì1AUYÀ¶À´ÌAÀ¶UYÀ¶À´ÌAÀ´ìÀ»¤AYÀ·¼AÀ·¼YÀ·¼MUÀ´ìYÀ·¼AUÀ´ìÀºAUÀ¶À»0MUÀ¶YÀ·¼MÀ»0À´¬À´¬MÀ»0UÀ´ìAUÀ´ìÀ´ìAÀ´ìYÀ·¼AUÀ´ìÀ·¼MÀ»„À´¬À´¬AÀ¼$YÀ¼$  ÀŸ ÀŸAU]U  ÀŸD ÀŸD  ÀŸP ÀŸP MA€EM  ÀŸˆ AÀŸˆ AÀ¶€½A€½A€½A€½A€½A€Ñ A €½AMÀŸˆÀŸˆM]À¹¸]AUÀºÀ¹¸EA AÀ·(E AÀ»„A€½AUE MÀ»„E AAu! MÀ»0E AE% AÀº(E AÀ¶pEA€À¶À¶ A€À¶À¶ MÀŸˆÀ¼$ÀŸˆAU)- AÀ¶E AÀ¼$E A€½EMÀŸˆÀ»ˆÀŸˆMÀŸˆÀ»¤ÀŸˆMÀŸˆÀ»œÀŸˆ AÀ»ˆE AÀ»”EMÀŸˆÀ»¬ÀŸˆMÀ¶À¶MÀ¶YÀ¶YÀ¶€À¶E MÀ¶E AÀ»„E AÀ»0E AÀ¶MÀŸˆÀ¶ÀŸˆ AÀ¼pE AE]AU-AE]A€€½-À¼$]€½€½ A15 A9€Ñ AA A AEA A AEME  À¡p À¡p  À¡t À¡t  À¡x À¡x  À¡| À¡|  À¡ À¡ AÀ¡MÀ¡|UÀ¡|AUÀ¡|AUÀ¡|AUÀ¡|7M€¥€ÕYÀ¡|UÀ¡|€¥€ÕYÀ¡|AU€ÕYÀ¡|À¡|MÀ¡|À¡| AÀ¡|E MÀ¡tE MÀ¡E aUAAAAAAAAAAAAUÀ¡xÀ¡xAAAAAE AAAAAAE AYEAAYE  À¢< À¢<  À¢\ À¢\  À¢x À¢xMÀ¶À¶  À¢ À¢  À¢” À¢”  À¢˜ À¢˜ AÀ¢˜AU]]AU]]E AÀ¢Œ AÀ¢„ AÀ¢ AÀ¢” M]À¢˜%À¢˜]À¢˜A%À¢„E AÀºðE AÀºE  À£ À£  À£4A€áÀ£A€áÀ£E AÀ»¬E AÀ¼0E AÀ¼8EMÀ¢\À¢\=AAUYÀ¼$À¼$MUYÀ¼$À¼$À»¤MUYÀ¼$À¼$À»ˆMUYÀ¼$À¼$À»œMUYÀ¼$À¼$À»”  À£à À£àAAÀ¢`UU$AUUAÀ¢`UU AeAUUE  À¤ À¤AuU]Y AuAUU A€áÀ£€áÀ£AÀ¡tÀ¡tA€E  À¤D À¤DAÀ¹¬À¡p AÀ¹¬>AUÀºÀ¹¸U]€áÀ£YUÀ¤DYÀ¡tAUÀ¤DYÀ¡tÀ¤DOAU]€áÀ£YUÀ¤DYÀ¡tU]€áÀ£YÀ¤DAUÀ¤DYÀ¡tYÀ¡t=AU]€áÀ£YUÀ¤DYÀ¡tYYÀ¡tAu]À¤DYÀ¡t AÀ¹¸E2Au]À¤DYÀ¡tu]À¤DYÀ¡t%AU]€áÀ£YÀ¤DE AÀ¤DE  À¤¸ À¤¸  À¤Ì  À¤Ð  À¤ð À¤ðAUÀ·œÀ·¤À·¼AÀ¤ôÀ·¼ AÀ·¼AÀ¤ôAÀ·¼ A À·¼AÀ¤ôA À·¼ AÀ·¼AÀ¤ôAÀ·¼ A À·¼AÀ¤ôA À·¼ A À·¼AÀ¤ôA À·¼AÀ¶|À·¼ AUÀ·œÀ·¤AÀ¶|À·¼AÀ¤ôAÀ¶|À·¼MÀ·¤À¶|À·¼$MÀ·”UÀ¶x]YÀ¶À·¼(AÀ¤ôAUÀ¶x]YÀ¶À·¼AUÀ¶x]YÀ¶À·¼5AU]À¶À·”AUÀ¶x]YÀ¶À·¼AUÀ·¼AÀ¤ôAUÀ·¼ AÀ·¼AÀ¤ôAÀ·¼AUYÀ·¼AÀ¤ôAUYÀ·¼AÀ·LÀ·¼AÀ¤ôAÀ·LÀ·¼$MÀ·”UÀ¶h]YÀ¶À·¼(AÀ¤ôAUÀ¶h]YÀ¶À·¼AÀ¶À·¼AÀ¤ôAÀ¶À·¼MÀ·¬À¶À·¼ AUÀ·œÀ·¤AÀ¶À·¼AUÀ¤øE  À¨8 À¨8  À¨< À¨<  À¨L À¨L  À¨P À¨P  À¨T À¨T  À¨X À¨X  À¨\ À¨\  À¨` À¨`  À¨d À¨d  À¨h À¨h  À¨l À¨l  À¨p À¨p  À¨t À¨t  À¨x À¨x  À¨| À¨|MAMA  À¨” À¨”  À¨˜ À¨˜ AÀ®ô AÀ®È AÀ®Ü AÀ®Ì AÀ®Ð AÀ®ð AÀ®Ô AÀ®Ø AÀ®à AÀ®ä AÀ®è AÀ®ì AÀ®ø aU AEYA AAAAAAAAA#AEY€YÀ·,eÀ¼$ Au AuAuUa€YÀ·,eÀ¼$ AUAUÀ¤ðÀ®ÈAUÀ¤ðÀ®ÈAÀ¤ðÀ®ÈÀ¶AUÀ¤ðÀ®ÈÀ¶A€áÀ¤ðÀ®ø%A€áÀ¤ðÀ®øÀ¤ðÀ®øAÀ¤ðÀ®ø#A€áÀ¤ðÀ®øUÀ»„AUÀ»„À»„AUÀ»„AUÀ¤ðÀ®Ô!AUÀ¤ðÀ®ÔÀ¤ðÀ®ÔAÀ¤ðÀ®ÔAUÀ¤ðÀ®ÔÀº˜AEYÀ»¤AEYÀ»ˆMUÀ¶ MUMUÀº*AUU€À¤ðÀ®ÈUNAUU€À¤ðÀ®ÈUUU€À¤ðÀ®ÈU*AUU€À¤ðÀ®ÈU%AUÀ¤ðÀ®äÀ¤ðÀ®äÀ»¬"AuÀ¤ðÀ®äÀ¤ðÀ®ä"AuÀ¤ðÀ®äÀ¤ðÀ®ä=AuÀ¤ðÀ®äÀ¤ðÀ®äUÀ¤ðÀ®äÀ¤ðÀ®äAEYÀ»¬AUÀ¶pÀ¶pAUÀ¶pAuÀ¤ðÀ®à"AuÀ¤ðÀ®àÀ¤ðÀ®àAÀ¤ðÀ®à AuÀ¤ðÀ®àUÀ¶pAUUAUUAUUU aÀ»”AEYÀ»”AEYÀ»œ"AuÀ¤ðÀ®ÐÀ¤ðÀ®ð-AuÀ¤ðÀ®ÐÀ¤ðÀ®ðÀ¤ðÀ®ÐAÀ¤ðÀ®Ð&AuÀ¤ðÀ®ÐÀ¤ðÀ®ðÀ·(AEYÀ·(AuÀ¤ðÀ®Ø"AuÀ¤ðÀ®ØÀ¤ðÀ®ØAÀ¤ðÀ®ØAuÀ¤ðÀ®ØÀºðAEYÀºðAuÀ¤ðÀ®Ì"AuÀ¤ðÀ®ÌÀ¤ðÀ®ÌAÀ¤ðÀ®ÌAuÀ¤ðÀ®ÌUA€À¤ðÀ®è$A€À¤ðÀ®èÀ¤ðÀ®èAÀ¤ðÀ®èA€À¤ðÀ®èu AEÀ»PAUÀ¶Œ AÀ²¬AÀ²¬À¹¬AAÀ½´*AYAAÀ½´YAAÀ½´3AÀ²°AYAAÀ½´YAAÀ½´AAAÀ½´À½´A€ =UA€E)MYÀ½°%UYÀ½ˆYÀ½°AEYÀ¼p aÀ¼0AEYÀ¼0AEYÀ¼8 AÀ¶ˆ AÀ¤ÐEAAÀ¤ÐE au AUA AÀ®Ä MÀ®ÄA€À¤ðÀ®È AÀµÄAÀ¨lÀ¨˜AÀ¨hÀ¨˜AÀ¨pÀ¶|AÀ¨tÀ·(AÀ¨xÀºð AÀ¶ AÀ¨`uÀµüÀ¶YÀ¶AÀ¨\À¶0AÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨dYÀºAÀ¨PÀ¶AÀ¨TÀ¶ AÀ¨”AÀ¨|YÀ»„ AÀ¶| aÀµÄAEYÀµÄAUU€¡U€¡ AU aUMUUUAUUAUUU€¬AUEAUUEAEAU=UY A%A  À¬  À¬   À¬¨ À¬ÔAÀ¬ÔYAEÀ¬ÔAYÀ¬Ô AAAAAAAAAAAAAAAAAAAAAÀ­(UAÀ­8UÀ­( AÀ­(E!AA€©AÀ­(EAÀ­(E*AÀ­(AA€©AÀ­(EAÀ­(E@AA€©AÀ­(EAÀ­(AA€©AÀ­(EAÀ­(EEAAA€©AÀ­(EAÀ­(AA€©AÀ­(EAÀ­(EM€©À­(E AAQAÀ­(EAÀ­(E)AÀ­(AAQAÀ­(EAÀ­(E>AAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(ECAAAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(E MQÀ­(E À­ØÀ­ØAUUAUÀ­Ø AUÀ­ØÀ­ØAUÀ­Ø AUMYÀ­ØEAÀ­ØE  À® À® À®#AuAEAEAAEEAUEAÀ®EE*AuAÀ®EAEAAEEAÀ®€‘AU1UY M €€„€Å€„€Å €ÅU  À®Ä À®Ä  À®È À®È  À®Ì À®Ì  À®Ð À®Ð  À®Ô À®Ô  À®Ø À®Ø  À®Ü À®Ü  À®à À®à  À®ä À®ä  À®è À®è  À®ì À®ì  À®ð À®ð  À®ô À®ô  À®ø À®øAEYUÀ·¼ =À·´AUÀ·´EAE€íÀ·´AEYUÀº˜AUÀº˜UÀº˜AEYUÀº˜AEYUÀºÈAUÀºÈUÀºÈAEYUÀºÈAEYUÀºèAUÀºèUÀºèAEYUÀºèAEYUÀ¯´AUÀ¯´EAAEÀ·¼À¯´AAÀ·¼À¯´AAUÀ·¼À¯´AA À·¼À¯´AAÀ·lÀ·¼À¯´(AAUÀ¶x]YÀ¶À·¼À¯´AAÀ¶À·¼À¯´AAUÀ¶À·¼À¯´AAÀ·¼À¯´AAÀ·LÀ·¼À¯´AExÀ¯´  À¯ À¯AYÀ»„  À°T À°T  À°\ À°\AÀ¯¨À¯À¯AYÀ»„YÀ¯AÀ¶À¯¨À¯AYÀ¶À¯¨À¶AÀ¶À¯¨À¶AÀ¶À¯¨À¶AYÀ¶À¯¨YÀ¶AÀ¶À¯¨YÀ¶AlÀ¯´E AÀ¯´ AÀ¯´  À²8 À²8AAuYAuY  À²Œ À²Œ  À²”  À²˜  À²œ À²œ  À²   À²¤  À²¨  À²¬  À²°  À²´AÀ¹¸À¹¸ AUÀºÀ¹¸UÀºÀ¹¸AÀ¶À¶AÀ¶ À¶ &AIÀ¶xÀ¶|À´¨AÀ¶À¶&A€À¶À¶ €À¶À¶ AÀ·(À·(AÀ´”À´”AYÀ¶YMÀ¼$YÀ¼$YÀ¼$AÀºÀºAÀ»„À»„AÀ»0À»0AÀ»¤À»¤AÀ¶pÀ¶pAÀ»œÀ»œAÀ»”À»”AÀ»¬À»¬AÀ¼€À¼€A]À»ˆAÀºÀº6MÀ¼„UYÀ¼$À¼$A]À»ˆAÀºÀºAÀ»ŒÀ»Œ)MÀ¼„UYÀ¼$À¼$AÀ»ŒÀ»Œ&qÀ¼„UYÀ¼$À¼$]À»ˆ.qÀ¼„UYÀ¼$À¼$]À»ˆÀ¹°À¹¸AÀ¹°À¹¸A]À·¼AÀ¶À¶/M]À·¼IÀ¶xÀ¶|À´¨AÀ¶À¶A]À»ˆAÀ·¼À·¼6MÀ¼„UYÀ¼$À¼$A]À»ˆAÀ·¼À·¼2qÀ¼„]UYÀ¼$À¼$]À»ˆÀ¶À¶AEYUYÀ·¼ AEÀ·¼&AUYÀ·¼UYAEÀ·¼AEYUYAEÀ·¼AEYUYA À·¼AEYUYAÀ·¼"AEYUYAUÀ·¼AÀ·lÀ·¼!AEYUYAÀ·lÀ·¼2AEYUYAUÀ¶x]YÀ¶À·¼AEYUYAÀ·¼!AEYUYAÀ·LÀ·¼!AEYUYAÀ¶À·¼AUÀ¶À·¼&AEYUYAUÀ¶À·¼  À´œ À´œ  À´Ì À´Ì  À´ì À´ìAUAYYAUUAÀ´øYAÀ´ø] AÀ´øMAÀ´øÀ´øAY€íY  Àµ¨ Àµ¨  ÀµÀ ÀµÀ  ÀµÈ ÀµÈ  ÀµÌ ÀµÌ  Àµì Àµì  Àµô Àµô  Àµü Àµü  À¶ À¶  À¶ À¶  À¶ À¶  À¶ À¶  À¶h À¶h AÀ¶  À¶p À¶p  À¶t À¶t  À¶x À¶x  À¶| À¶|  À¶€ À¶€  À¶ˆ À¶ˆ  À¶Œ À¶Œ  À¶  À¶   À·( À·(  À·D À·D  À·L À·L  À·l À·l  À·” À·”  À·œ À·œ  À·¤ À·¤  À·¬ À·¬  À·´ À·´  À·¼  À¹„ AÀ¹„ AÀ¹„ AÀ¹„AÀ¹„YAÀ¹„]MAÀ¹„À¹„  À¹¬ À¹¬  À¹°AÀ¹ˆ]]  À¹¸  À¹à  Àº  Àº Àº  Àº( Àº(  Àº˜ Àº˜  ÀºÈ ÀºÈ  Àºè Àºè  Àºð Àºð  Àºô  À» À»  À» À»  À» À»  À»$ À»$  À»8 À»8  À»< À»<  À»@ À»@  À»h  À»l À»lAÀ»0À¶  À»| À»| 1À»ˆ  À»¨  À»¬ À»¬  À»°&€UYÀ»¬YÀ»¬YÀ»¬  À»¸ À»¸  À»Ø À»Ø  À»Ü À»Ü  À»ä À»ä  À»ì À»ì  À¼  À¼  À¼( 1À¼$  À¼4  À¼<€À¼0YÀ¼0YÀ¼0€À¼8YÀ¼8YÀ¼8  À¼H À¼H  À¼t  À¼x À¼x  À¼ˆ À¼ˆ AÀ¼ AÀ¼ AÀ¼AÀ¹ˆ]YAÀ¹ˆ]!MÀ¹¸€„€Å€„€ÅMYÀ¹¸YMYUÀºÀ¹¸Y4AU€­UÀ¹¸À¶UÀ¹¸UÀºÀ¹¸AÀ¶À»„MÀ»„À¶8A€YÀ·,eÀ¼$€YÀ·,eÀ¼$(A€¥Y€í€¥Y€í;A€YA€¥Y€í€¥Y€í&A€Y€¥Y€í"AÀ¼$€YÀ·,eÀ¼$;AY€YÀ·,eÀ¼$€YÀ·,eÀ¼$<AUYÀ»ˆ€¥YÀ»ˆUYÀ»ˆ€¥YÀ»ˆAMÀ»ˆUYÀ»ˆ€¥YÀ»ˆUYÀ»ˆ€¥YÀ»ˆ"AEUYÀ»ˆ€¥YÀ»ˆ'MÀ»ˆ€¥YÀ»ˆ€¥YÀ»ˆMÀ¶À·¼ AÀ»¤ AÀ»” AÀ»œMÀ¼8€¥À¼8€¥À¼8AE€¥À¼8MÀ¼0€¥À¼0€¥À¼0AE€¥À¼01MÀ»¬€¥UYÀ»¬€¥UYÀ»¬AE€¥UYÀ»¬AuÀ¶À»0MuÀ¶YÀ·¼AUu  À½ˆ À½ˆ  À½° À½°  À½´ À½´  À½¸ À½¸=€UY€€ÅUY€€Å AÀ½ˆE AÀ½°E AÀ½´E/MUY€„€ÅUY€„€ÅAÀ¹ˆ]À¹„ AU AÀ½ˆ AÀ½ˆ AU AÀ½ˆ AÀ¹¬AUÀ¹¸À¹¸A€„€Å€„€Å%AÀ¹¸A€„€Å€„€ÅDAÀ½ˆUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸€ƒAUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸AÀ½ˆUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸DAU€­UÀ¹¸À¶uYUÀ¹¸À¹¸YUÀ¹¸WAU€­UÀ¹¸À¶uYUÀ¹¸À¹¸U€­UÀ¹¸À¶UÀ¹¸QAU€­UÀ¹¸À¶uYUÀ¹¸À¹¸A€„€Å€„€ÅAuÀ¹¸À¹¸À¹¸ AÀ½¸AÀ½¸U€„€Å1AU€„€ÅAÀ½¸U€„€ÅAUYÀ·¼AUURM€YUU€ÅUU€YUU€ÅVM€YUU€ÅYUU€YUU€ÅAUUÀ¹¸YA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅcAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€Å AUUAUUAYUUUkMYÀ½¸U€YUUÀ¹¸€Å€„€ÅU€YUUÀ¹¸€Å€„€ÅAÀ½°À½¸AÀ½´À½¸ AÀ½´AUUÀ¹¸À¹¸ AEÀ¹¸  À¾ì À¾ìAÀ»¤UÀº(AUÀ¶  À¿< À¿<  À¿@AYÀ¶E AÀ¼€EMÀµÄYÀµÄYÀµÄMÀµÈYÀµÈYÀµÈMÀ»0À¶  À¿° À¿°  À¿´ À¿´  À¿Ä À¿Ä  À¿È À¿È  À¿Ø À¿Ø  À¿è À¿è  À¿ð À¿ð  À¿ô À¿ô  ÀÀ ÀÀ AUaQAAAA AÀÀE aÀ¿ð"M€„€Å€„€ÅM]U€U€YY,M€€ÅU€€ÅM]M]  ÀÀà ÀÀà ÀÀøAEÀÀø MEMYE MY€YYY MY€YYY€YYYAYYAU1UY AUAU1UUY AU€YY €M€¥€¥€€¥€¥#€€¥Y€¥Y A%AU1%U A% a% € q$€U€¥U€¥ €€€¥€¥ M MEM €€]]AÀÀøMÀÀøÀÀøAEÀÀøÀÀàAÀÀàÀÀøM%AUE!AUu€!A€uU €ÅY AYEMYUYAYYUYY MMYY€Å€Å!€YUYUM€ˆU€ˆ Y%A]]YM%%M%EA AU aU aY AXEAUX M€½€Y€½ AE] AU,,AU],,  ÀôAALA],],€Àð,A,AÀðA,AAÀðA,AU, M,,A]UA]U AU,AÀðAU,AAÀðAU,AE]UEA€ýU],AUU,A]UAM€ýU€YUEAUeAEA.AUeAAEUAA.AUeAAEUAA9AUeAAAEuAAAAAAAAPAUeAAAAAE€áAAAAAAAAAAA$AAAAAAAfAUeAAAAAAAE€‰AAAAAAA.AUeAAEUAAAAA9AUeAAAEuAAAAAAAAAAEAUeAAAAE€AAAAAAAAAAAAAAAAPAUeAAAAAE€áAAAAAAAAAEAUeAAAAE€AAAAAAAAAAAEAUeAAAAE€AAAAAAA9AUeAAAEuAAA9AUeAAAEuAAAAAAAEAUeAAAAE€AAAAAAAAEAUeAAAAE€AAAAAUeAEA.AUeAAEUAAEAUeAAAAE€AAAA9AUeAAAEuAAAa€ $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî  FSharp.Compiler.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#UOfsc, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eeUOfsi, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eehbFSharp.LanguageService, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eemgFSharp.LanguageService.Base, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eekeFSharp.ProjectSystem.Base, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eemgFSharp.ProjectSystem.FSharp, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eetnFSharp.ProjectSystem.PropertyPages, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eevpFSharp.Compiler.Interactive.Settings, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eeoiFSharp.Compiler.Server.Shared, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eeWQSalsa, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee[UUnittests, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eee_SystematicUnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eeVPTest, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee ‰ FSharp.Core ‘e]€½ eAEUeAE AUeAEAA eAAEUUeAAEU$AUeAAEUAAA U UeAAEUUeAAEU$AUeAAEU  U eEE E eEEeEEEU eAAAEu%UeAAAEu*AUeAAAEu'AAAA -eAAAAAE€á2UeAAAAAE€á7AUeAAAAAE€á/AAAAA A 9eAAAAAAAE€‰>UeAAAAAAAE€‰CAUeAAAAAAAE€‰ AAA  UeAAEUUeAAEU$AUeAAEU eAAAEu%UeAAAEu*AUeAAAEu  U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U-eAAAAAE€á2UeAAAAAE€á7AUeAAAAAE€á A U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U eAAAEu%UeAAAEu*AUeAAAEu  U eAAAEu%UeAAAEu*AUeAAAEu  U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U UeAEUeAEAUeAE U UeAAEUUeAAEU$AUeAAEU U'eAAAAE€,UeAAAAE€1AUeAAAAE€  U eAAAEu%UeAAAEu*AUeAAAEu Ue] ¡ ¡ €½€½€½ €½A €½A  €½ €½ €½ €½ U€½€½€½U€½€½€½ U€½€½€½ U€½€½€½€½€½A€½A  AY€½ #Y€½AYA€½A  E  YY€½¹ EE Å( Ñ (   Å     eA E A A     ÙÙ      Ù       {__DebugDisplay(),nq}! €½JEInternal.Utilities.StructuredFormat.Joint+_Unbreakable@DebugTypeProxy Å GBInternal.Utilities.StructuredFormat.Joint+Breakable@DebugTypeProxyD?Internal.Utilities.StructuredFormat.Joint+Broken@DebugTypeProxy   , ,,, ,YU,,,eA,E A,A,( C>Internal.Utilities.StructuredFormat.Layout+Leaf@DebugTypeProxy(,(  ,,  ,  C>Internal.Utilities.StructuredFormat.Layout+Node@DebugTypeProxy( (YU YU YU, YUC>Internal.Utilities.StructuredFormat.Layout+Attr@DebugTypeProxy4 48 8< < , (AAYUAE (YALA],  (ñ (õ        PAAYUAEYALA],ñõ AAYUAE YALA], ñ õ@ AAYUAEYALA],ñõYALA],P"(TT aaa T TT aT T T TTT T(() AXE€íX€í AXE T   ) ) X X   ÀÃp AuXAuX ÀÃt  X X X  X \\ \  AXE  X ‚ ‚ €¤.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089TSerializationFormatterÙÙ `   Ù  d Ù(X (UTTTX TTTX XUTT UTT  UTT0(Y(](h (YYY YYh]l$ YhY]YYY Y ] h YY (Ah (A (A(  (AlE    AhAA AlEp Ah A A  AlE: AhAAAlE AXXt ÀÃd tYY1YY Y  (€í(€íY( €í€íY €í =x €íY =€Õx €Õx ÀÂü €ÕxAE1 U€Õx 1U=YY Y YYY €í €íY x ‚!E %‚!Y %Y = ‚! ‚! %% ‚!Y %YLx€í‚!E%€íY‚!Y%Y xY5  Y1 YY3 €í‚!E%YYE50AAA E1 €í‚!E%YYE5 AAE YYYY] ] ]=% =% ‚) ‚)%> =%€í‚!E%YYE5 Y% U ÀÃ# x%Y% 1 % ! ÀÃ# x%Y% ! % ! % % Àà %AAE1 %  Item|((|||| ||||| || |eA|E A| A| ‚5 (€Å€Å €„ €Å| €Å €„€„€„|  €„ AE 0AAU||U€„€„U||U|||| U€„€„A €„A A€„€„€„€„€„€„€„ €„ €„€„€„YYE5 €„€„€„1 €„ €„ €„Count = {Count} €ˆ( (€ˆ €ˆ €ˆ €ˆ €ˆ€ˆ"€ˆ€ˆ€ˆ €ˆ €ˆ €ˆeA€ˆE A€ˆA€ˆ € €Å€ˆ€ "€€€ˆ  € 0]AA] AA €AA0AAAU€ˆ €ˆ U€ˆ U€U€ˆ€ˆ00U€AAAU  0€A0€AAU€ˆ€ˆU€ˆ€ˆU€€*U€ˆ€ˆ€ˆ€ˆ) U€€AA € YU U€YU€1U €€€Y% UU1 Y%E%U%5 ÀÂô € €AA11 € €(   a  a €”€” €”€” ‚E   €”   €”   €˜€˜€˜€˜      €˜ €˜€œ(À­8]À­8Y À­8Y]]Y1 UÀ­8 À­81 À­81YYY1U1A1 U € AUÀ­8] € ]]]]YYYYYYE5 A€ E(€…(ÀµÌ€…ÀµÌ €… ÀµÌ €…ÀµÌ €…€¤€¤ÀµÌÀµÌ ÀµÌ €¤€¤ (€¨€…€¨ €¤€ ‚QA  € ‚Q‚QUY€ 0AÀ­8€¨€… €¨€…€¨0€¨AÀ­8 U UU€¨U€¨€¨U(0U€¨€¨AUÀ­8 u u u €¨u€¨€¨€¨ u10u€¨€¨€¨AuÀ­8€ € € €¨!€€¨€¨€¨€¨ €<0€€¨€¨€¨€¨A€À­80€¨A À¬H €¨AU€…0€¨AU€…À­8 €¨ €¨€ 0€¨AÀ­8] ]] ]€¨]]0]€¨A]À­8 0A €¨€…Y€¨€…YU€…ÀµÌ0]€¨ À¬P0€¨À­8€´ €¬€¸ ‚] €¬‚]€¬ €¬eA€¬E A€¬ A€¬€´€¸‚] ‚]€´€¸9 €¬€´€´€¸€¸€¬€¬2 €´€´€¸€¸€¬€¬ €¬IDInternal.Utilities.Collections.ValueStrength`1+Strong@DebugTypeProxy(‚] ‚]GBInternal.Utilities.Collections.ValueStrength`1+Weak@DebugTypeProxy€¼ €´€À €¸(]U ]AEAUYU€¬ €ÄYU€¬ ]" AU]AE] YU0]UYUYU ]UU]UYU ]U YU-0U]UYUYUU]UYU YU0YUYUMYUU]UYU]UYUYU ]UYYUU]UYU]UYUYU]UUYUYU0YU-0UYUYUYU YUUYUYU0YUYUNYUUYUYUYUYUYUBYUUYUYUYUYU Y ]UYUYU ]AEAE]AE]AE  €Ä €Ä YUYYY À«ì €ÄYAY UU YU0YUYUUYUYU À«ð UYYAYUYUYUUYUYU ]UU]UYU ]U]U]U€´€¸€´€¸ À«ôQ €ÄU€¬€¬€´€¸‚]YU€¬U€´€¸YUU'UYUUYUU À«øYAAY UUU À«ü UU&UYUUYUU À¬YAY UUU€¬ À¬ €ÄAEY U À¬ €Äp YUUUYUUYUUYUUYUUYU€¬ AAU AE €È AU À¬  AU À¬ AE À¬AUd AAU]AU]AU]AE]AE]AE]U3]U€ÄYU]U]U]U€Õ=U= €íYU=U=€Õ=U= À¬€í 1U YU= U=  À¬1U= U=UY UYR €Õ=U=€íYUEU=U=5YUYYU €í =€í À¬  €í À¬$ 1% % €í  €Ô(YY€ÔY€Ô YY €Ô Y €Ô €Ô1€©€©€©€©  ‚y AA A‚} AA AA‚€¡ ‚€¡€¡eA E  A  A ‚€¡  AA AA €©AA€©€© ]]5] AE 5AE5AE AE€Ü€Ü€ÜeA€ÜE A€ÜA€Ü €Ü€Ü €Ü€Ü(€Ü €Ü €Ü a€Ü€Ü €ä€ä €ä€Ü€Ü €ä€Ü€Ü*AAAAAAAADeAAAAAAAAE€É€Í+ AAAAAAAA AAA4AAAAAAAA€Ü€ÜUUU U& €äUUUU€ä€äÀ¬¨À­8U ]À­8UQ ]À­8$ À­8]À­8UUQ€äÀ¬¨À­8 €ä€ä (Y€ä ]€äY€ä]€äY€ä À¬´ €ä Y€äY€äY€ä€ä ] ]€ä€èAEA!€è]]]]5À­8AEA“À­8AEÀ­8AEE€ì  €ðð @€ô(€ì(€ô(€ð €ì €ô €ð €ì€ô€ð €ø€ø€ø €ø€ø€ü   ]À}T‚uÀ}œ‚uÀ}œ X]À}TÀ}T U]€ø UÀœLÀœLÀ}LUuÀ}œÀ}œu]€øÀœLu€ì€ô€ðÀ}Ì]€ø À\À~p UÀœLUuÀ}œ uÀ}œ u€ì€ô€ð]€øu]€øÀœL U]€ø €Ï&5U]€ø 5U]€ø UÀœLÀœLÀ}LÀ}TUuÀ}œÀ}œu]€øÀœLu€ì€ô€ð€ð€ì€ôÀœL€øÀ}Ì]€øU]€ø À\]€øUuÀ}œÀ}œÀ~pÀœL€ø5 U]€ø !€á€üÀ­(YUÀœ,À­8€ü YUÀœ,1UÀœ, €ü uÀ}œ uÀ}œ À}œ uÀ­8ÀœL AuÀ}œEÀœL   AuÀ}œEÀœL=uÀ}œ=uÀ}œ&=uÀ}œuÀ}œÀ}œ% uÀ}œAAuÀ}œEE uÀ}œÀœL uÀ}œÀœLÀ}PYUÀœ,À­8€ÕYUÀœ,À­8 À}PÀ}L Y X]X  Au        eA E A A       ( (UUU  À­8À­8   UUU  À­8À­8UUU UUUÀ­8((   (  (Y(U (U(U$ YUUUU Y U U $$$eA$E A$A$ $$ $$,,,eA,E A,A, ,, ,,4À­8UY]44UY]44eA4E A4A4<UY]@DUY] ] À­8) <UY]Y]@D4R4<<UY]UY]Y]Y]@@DD444 UY]; <<UY]UY]@@DD444 4(UY] À­8UY] UY][VMicrosoft.FSharp.Compiler.SourceCodeServices.RecordContext+CopyOnUpdate@DebugTypeProxyZUMicrosoft.FSharp.Compiler.SourceCodeServices.RecordContext+Constructor@DebugTypeProxy UY]RMMicrosoft.FSharp.Compiler.SourceCodeServices.RecordContext+New@DebugTypeProxy < @ DTTTT,UY]T4eATE ATAT\`"\UY]Y]`OT\\,,UY]UY]Y]Y]``44,\\UY]UY]`` TT(, ,UY] ,ZUMicrosoft.FSharp.Compiler.SourceCodeServices.CompletionContext+Inherit@DebugTypeProxy(4 4 4^YMicrosoft.FSharp.Compiler.SourceCodeServices.CompletionContext+RecordField@DebugTypeProxy \ `(€ä (]À›Ø€ä ]À›Ø €ä ]À›Ø €ä]À›ØY(ll l lÀ›Ø ]À›Øl]À›ØÀ›Ø ]   À­( ]UUU À­( ]UUUUÀ›äÀ›à]À›Ø]À›ØÀ›äÀ›àAE5AE5]UUU!5AE]UUU5xxxxxxeAxE AxAx„ˆ „„aˆˆxxx x x„„ˆˆxxx „ˆx x„„ˆˆxxx „„ˆˆxxx x[VMicrosoft.FSharp.Compiler.SourceCodeServices.XmlComment+_XmlCommentNone@DebugTypeProxyZUMicrosoft.FSharp.Compiler.SourceCodeServices.XmlComment+XmlCommentText@DebugTypeProxy _ZMicrosoft.FSharp.Compiler.SourceCodeServices.XmlComment+XmlCommentSignature@DebugTypeProxy€ € „ ˆ˜˜˜ ˜x˜YUx˜eA˜E A˜A˜ ¤ YUx¨ YUx8  axx¤¤YUxYUx¨¨ ˜8˜  xx¤¤YUxYUx¨¨  ¤¨7 ˜  xx¤¤YUxYUx¨¨ YUx  ¤¤¨¨ ˜˜(x x x^YMicrosoft.FSharp.Compiler.SourceCodeServices.DataTipElement+DataTipElement@DebugTypeProxy(YUx YUx YUxc^Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElement+DataTipElementGroup@DebugTypeProxyniMicrosoft.FSharp.Compiler.SourceCodeServices.DataTipElement+DataTipElementCompositionError@DebugTypeProxy   ¤ ¨ (Y˜Y˜ ¸Y˜ Y˜ Y˜eA¸E A¸A¸¸Y˜¸¸aY˜Y˜ ¸¸¸¸Y˜Y˜¸ Y˜¸¸ ¸¸(¸;€­€YÀAhÀ^À­8ÀkdAAEEEAE¸]¸‚‘E? €­€YÀAhÀ^À­8ÀkdAAEEEAE¸;‚•€YÀAhÀ^À­8ÀkdAAEEEAE¸AAEEE YÀAhÀ^ÀkdAE:‚™€YÀAhÀ^À­8ÀkdAAEEEAE¸:‚•€YÀAhÀ^À­8ÀkdAAEEEAE¸2€YÀAhÀ^À­8ÀkdAAEEEAE   ‚‘E‚¡‚¥E 0‚‘‚¥ ]¸€² ]¸€­€YÀAhÀ^À­8ÀkdAAEEEAE¸‚•€YÀAhÀ^À­8ÀkdAAEEEAE¸AAEEEÀ­8YÀAhÀ^ÀkdAE]¸ ¸(¼À¼ ¼ ¼ ¸ ¸ Às<YUYÀAhY¼YAY ÀAhU ÀAh ÀAh UYÀAh UYÀAh¼ Y ¼MÀs<YÀAhYÀAhYÀAhYUYÀAhYUYÀAhY¼2ÀÀ^À­8ÀkdYÀAhAAEEEAE:€­€YÀAhÀ^À­8ÀkdAAEEEAE¸ €­ÀÀ  ÄÄÄÄ Ä(ÄÄ Ä ¸Ä(È‚©ÀAhÈÈAÈUÌÈA ÈUÈAÈUÌ È È YÀAh È Às<ÈÌÀ^À­8ÀkdYÀAhÐÐÐÐeAÐE AÐAÐØÜØØaÜÜ ÐÐØØÜÜ ØÜØØÜÜ ÐÐc^Microsoft.FSharp.Compiler.SourceCodeServices.FindDeclFailureReason+ProvidedType@DebugTypeProxye`Microsoft.FSharp.Compiler.SourceCodeServices.FindDeclFailureReason+ProvidedMember@DebugTypeProxy Ø ÜèÐ èUèèeAèE AèAè(Ð Ð Ð\WMicrosoft.FSharp.Compiler.SourceCodeServices.FindDeclResult+DeclNotFound@DebugTypeProxy UYTMicrosoft.FSharp.Compiler.SourceCodeServices.FindDeclResult+DeclFound@DebugTypeProxyð ðô ô‚‚‚uYÀAhÀkdÀ­8‚ÀkdÀ­8‚eA‚E A‚A‚(uYÀAhÀkdÀ­8uYÀAhÀkdÀ­8 uYÀAhÀkdÀ­8 uYÀAhÀkdÀ­8VQMicrosoft.FSharp.Compiler.SourceCodeServices.NameResResult+Members@DebugTypeProxy(Àkd ÀkdÀ­8 ÀkdUPMicrosoft.FSharp.Compiler.SourceCodeServices.NameResResult+Cancel@DebugTypeProxy‚ ‚‚  ‚ ‚‚‚eA‚E A‚A‚ ‚‚ ‚‚‚ ‚ ‚ ‚ uYÀAhÀkdÀ­8eA‚ E A‚ A‚ snMicrosoft.FSharp.Compiler.SourceCodeServices.GetPreciseCompletionListFromExprTypingsResult+Some@DebugTypeProxy‚( ‚((À­((ÀAh(ÀC`(ÀBP(À]XÀBPÀC`ÀAhÀ]X& À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8 À­( ÀAh ÀC` ÀBP À]XAUAÀAh,eAUAÀAhEUUÀAh AUAÀAhAUÀAhAUAÀAh{DebugToString()}–Ü=uÀ­8ÀBPÀ]X]š,)=€À­(ÀuÌÀkdÀBPÀ]XÀ­8À` =‚0€Äu¸ÀAH- €‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8‚0€Äu¸€Î –ÜÀs<À`=uÀ­8ÀBPÀ]XÀBP=€À­(ÀuÌÀkdÀBPÀ]XÀ­8=€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8=€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8]š,AAEEEAEÀ UY‚y À Y5AEÀ53 À]pUYAUUUUÀ­( ¸uu!5AE¸u]¸¸5 ¸Y5AE]5 ]Y Ì Ì]Y]uYÀAhÀkdÀ­8]p ]YÀBðAUUUUÀA˜ YÀZüÀZØÀuÌÀZäÀZàÀZPÀAœÀAŒ ]Y]uYÀAhÀkdÀ­8uYÀAhÀkdÀ­8 YÀZü YÀuÌ€Â]uYÀAhÀkdÀ­8]p]Y]ÀBð‚AUUUU]uYÀAhÀkdÀ­8ÀAhÀAhÀA˜YÀZüÀZØÀuÌÀZäÀZàÀZPÀAœÀAŒ]À­8]À­8À­8 èYÀ\ UUUU€ì UUUU€ì(€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8 - €‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8‚0€Õ]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X€Õ]uÀ­8ÀBPÀ]X uÀ­8ÀBPÀ]XUÀBPÀ]X]uÀ­8ÀBPÀ]XuÀ­8ÀBPÀ]XUUÀBPÀ]XÀ­8€Õ]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X€Õ]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X UUÀBPÀ]XÀ­8À­( YÀAhÀBðYÀAhY‚0)€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8ÀA¨ YÀuÌÀApÀuÀÀu¤À]` ]Àu¼Àu¼ YÀt ‚0Y‚0  ‚0ÀAh Àkd ]Àu¼€°À­(=‚0Y‚0Y‚0€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8À­8ÀkdÀA¨YÀuÌÀuÌÀBPÀ]XÀs<À`ÀApÀuÀÀC`Àu¤À]XÀ]`]Àu¼Àu¼YÀtÀuÌ00‚]ÀBð‚AUUUU%€À­(ÀuÌÀkdÀBPÀ]XÀ­8'1€À­(ÀuÌÀkdÀBPÀ]XÀ­81A1% €À­(ÀuÌÀkdÀBPÀ]XÀ­8A)U€À­(ÀuÌÀkdÀBPÀ]XÀ­8N€À­(ÀuÌÀkdÀBPÀ]XÀ­8=€À­(ÀuÌÀkdÀBPÀ]XÀ­80 U€À­(ÀuÌÀkdÀBPÀ]XÀ­8À­(*U€À­(ÀuÌÀkdÀBPÀ]XÀ­8(]€À­(ÀuÌÀkdÀBPÀ]XÀ­8]A']€À­(ÀuÌÀkdÀBPÀ]XÀ­8#€À­(ÀuÌÀkdÀBPÀ]XÀ­8€¿ U€À­(ÀuÌÀkdÀBPÀ]XÀ­8€À­(ÀuÌÀkdÀBPÀ]XÀ­8]€À­(ÀuÌÀkdÀBPÀ]XÀ­8]€À­(ÀuÌÀkdÀBPÀ]XÀ­8ÀuÌÀkdÀ­8À]XÀBPYÀAh" ]uYÀAhÀkdÀ­8À­8-U]€À­(ÀuÌÀkdÀBPÀ]XÀ­8UUU$€À­(ÀuÌÀkdÀBPÀ]XÀ­8,U]€À­(ÀuÌÀkdÀBPÀ]XÀ­8]UUUUUUU…À­(U€À­(ÀuÌÀkdÀBPÀ]XÀ­8€À­(ÀuÌÀkdÀBPÀ]XÀ­8U]€À­(ÀuÌÀkdÀBPÀ]XÀ­8l]À›ØÀ›Ø]UUU]UUUUUU]€À­(ÀuÌÀkdÀBPÀ]XÀ­8]€À­(ÀuÌÀkdÀBPÀ]XÀ­8€À­(ÀuÌÀkdÀBPÀ]XÀ­8ÀuÌÀBPÀ­8ÀkdÀ]XYÀAhÀs<À`YÀAhYÀAhYÀAh) ‚ pÀBðAUUUUUUÀBPÀ]XÀ­8R À­(UUÀBPÀ]XÀ­8ÀBPÀ­8À]XYÀAhÀs<À`YÀAhYÀAh& uYÀAhÀkdÀ­8YÀBð?À­(UUÀBPÀ]XÀ­8ÀBPÀ­8À]XYÀAhYÀAh% uYÀAhÀkdÀ­8Y]AÀkdAÀAh}]T] UYp]UÀ­( U‚ ]T ]T]p]UÀ­( UÀ­(U‚  ÀkdÀ­80VA]AAÀkdAÀAhAuYÀAhÀkdÀ­8]uYÀAhÀkdÀ­8A]AÀkdAÀAh8 AuYÀAhÀkdÀ­8]uYÀAhÀkdÀ­86AuYÀAhÀkdÀ­8]uYÀAhÀkdÀ­8˜85AE]uYÀAhÀkdÀ­8AÀkdAÀAhAÀkdAÀAh}]T]T]T]]‚]]]]]UY]]YYUY‚ ]pp]UÀ­(]UÀ­(À­(U‚ ‚(]uYÀAhÀkdÀ­8uYÀAhÀkdÀ­8‚ À­8Àkd‚\`DYÀAh<À­854AÀkdAÀAh]AÀkdAÀAh]AÀkdAÀAh]W ]uYÀAhÀkdÀ­8]p]Y]ÀBð‚AUUUU ÀAhŒp]À›ØÀ›ØŒp YÀAh]À›ØYÀAh (‚­–´ ‚­–´ ‚­–´‚­–´ 1= 1–´‚81–´ 1‚8‚8AA1 –´U ‚­–´(€¡ (]‚8€¡]‚8 €¡ ]‚8 €¡]‚8‚<  €¡ ]‚8‚< ‚<‚<]‚8$]‚8]‚8]‚8]‚8‚8‚8AAA Q AAA QQAAA ‚<]u‚4ŽàŽX]u‚4ŽàŽX u‚4ŽàŽX$]u‚4ŽàŽX]u‚4ŽàŽX €ä]u‚4ŽàŽX‚± 0€‘ €‘À< €‘À]pUUYAUUUU5AE¸5 ¸UY5AE]5 ]UY5AEÌ5 ÌU]Y è5AEè5 èUYUUUU€ìUUUU€ì UUUU€ì%5AEUUUU€ì5ŽX']u‚4ŽàŽX]u‚4ŽàŽXŽXŽà‚4Au‚4ŽàŽX >]u‚4ŽàŽX]u‚4ŽàŽXŽà]u‚4ŽàŽX‚4ŽX0Au‚4ŽàŽX‚D‚D‚D‚D‚@‚DeA‚DE A‚DA‚D‚T ‚@ ‚T‚D‚D‚T‚T‚D‚D‚T‚T‚D‚D ‚D^YMicrosoft.FSharp.Compiler.SourceCodeServices.TypeCheckAnswer+_NoAntecedant@DebugTypeProxyYTMicrosoft.FSharp.Compiler.SourceCodeServices.TypeCheckAnswer+_Aborted@DebugTypeProxy(‚@‚@ ‚@ ‚@c^Microsoft.FSharp.Compiler.SourceCodeServices.TypeCheckAnswer+TypeCheckSucceeded@DebugTypeProxy‚L ‚L‚P ‚P ‚T (AEAE ‚dAE AE AEeA‚dE A‚dA‚d‚h (AE ‚lAE AE AEeA‚lE A‚lA‚l‚d €Õ‚p €Ä‚<š,€È‚<uŽàY€ä5€Õ‚p €Ä‚<š,]AU‚<‚<]AuŽàY€ä5E€È‚<uŽàY€ä5 ‚d p5AEp5 p‚< p‚<5AE5 ‚<&UUUUUUU' UUUUUUU25AEUUUUUUU5, UUUUUUU‚<ˆ| ‚pl‚<AE ‚D5AE‚D50‚Dl‚<AE ‚< ‚<€¡5AEE5 ‚<]uŽàY€ä5]uŽàY€ä5uŽàY€ä5-]uŽàY€ä5]uŽàY€ä5ŽàuŽàY€ä5UŽàY€ä YUŽàY€ä‚½AE55AEuŽàY€ä5UŽàY€äY€äŽà5 uŽàY€ä5‚<6uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡:]uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡5]uŽàY€ä5]uŽàY€ä5Y€äŽà@ ]uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡‚<uŽàY€ä5Žà‚p4€Èu‚<UUUUUUU€Èu‚<p€ÄU‚<up‚@;]AUu‚<UUUUUUU]AUu‚<u‚<3€Èu‚<UUUUUUU]AUu‚<p€Èu‚<p€ÄU‚<up‚@‚t‚d u‚<]up‚@U‚<]up‚@ ]up‚@]up‚@ ]up‚@‚< up‚@AE‚D‚T‚@‚D ‚Dp‚<‚l ‚<€¡ ‚<‚< u‚<u‚< u‚< u‚<‚<‚<0u‚<u‚< €Á]A˜„E,]A€‰–ÜÀ½À¬´]À¼„ƒ E€ÕÀ¬´–¼À¬”€šP¶LÀyXª@šP YÀ›Ø €šP¶LÀyXª@€šP¶LÀyXª@šP< €šP¶LÀyXª@–ܘ„Às<À¬´Àœ¸ª@YÀ›ØÀ¬” €ÕY€ÕYA €ÕY(AY€ÕY–ÜAEAEY–¼YÀ}P À¬´À¬”˜xuY–ØY–ØY–´Y–ØY–´ UÀs<˜„˜„!€‰Às<˜„˜„Àv8ÀyX¶L–ÜYUÀ›Øª@ YÀ›ØÀyX¶LÀv8uY–ØY–ØY–´ UÀs<˜„YUYY YA]Y UUÀ›Ø YUÀ›Ø UÀ›ØAAY UÀ›Ø–Ü UÀ›ØÀ›Ø€šP¶LÀyXª@ €‰Às<˜„˜„Àv8ÀyX¶L–Ü€ã˜xuY–ØY–ØY–´Y–ØY–ØY–´UÀs<˜„Às<˜„5€‰Às<˜„˜„Àv8ÀyX¶L–ÜYUÀ›ØYUÀ›Ø–ܘx˜„5€‰Às<˜„˜„Àv8ÀyX¶L–ܪ@YÀ›Ø€šP¶LÀyXª@ÀyX¶LšPÀv85G€‰Às<˜„˜„Àv8ÀyX¶L–ÜÀ¬”]AEÀ}PY–ÜÀ¬´E–¼‚˜€ÁUYY u]À¬´€‰šP¶LÀyXª@˜„Às<–Ü ‚˜UYY Y u] u] –Ü€‰šP¶LÀyXª@˜„Às<–Ü€]À¬´1€ÉÀs<˜„˜„Àv8ÀyX¶L–Ü€]À¬´ €Ò –¼‚˜5À}PYY€ÕYAE€ÁYUYYYYYu]u]]–Ü–ÜÀ¬´5€‰Às<˜„˜„Àv8ÀyX¶L–ÜŽà€‰šP¶LÀyXª@˜„Às<–ÜÀyX¶LšP˜„ÀsUÀ¼„AÀµÌÀµÌ–ÜÀ¼„À½YU]Àv8À¼„EYU]Àv8À¼„<UÀ¼„AÀµÌÀµÌ–ÜÀ½À¼„YU]Àv8À¼„À¨ YÀ¼87 À¨YÀ¼$À¼(YÀ¼$YÀ¼$À¼„À¼„À¼„À¼„–ÜÀ½À¼„Yƒà ƒàÀ¼„Àv<ÀvDÀ¿<xƒà YÀµÈ€ÕYÀµÄ ÀµÄ2 ]˜X]˜X˜X]Àv8Àv<ÀvDÀ¼„À¿<(˜„À¼„xƒà€ÕYÀµÄÀµÄE xƒà€ÕYÀµÄY%ƒà %ƒà Uƒàƒà YÀµÄ YÀµÄYƒà]ƒà €ÕYƒà YÀµÄ ]Àµ¨ ]Àµ¨ 1%ƒà Y%ƒà%ƒàUƒà 1ÀµÄ YÀµÄ]ƒà ƒà €ÕYƒà€xƒà€Á€ÕYÀµÄÀµÄY%ƒàE%ƒàUƒà%ƒàƒàYÀµÄYÀµÄEƒà5Yƒà]ƒà€ÕYƒà%YU]Àv8À¼„˜„–ÜÀ¼„E#YU]Àv8À¼„–ܘ„À¼„ƒðv ˜„YU˜XU˜X˜XÀµÄ]˜X]˜X˜X]Àv8À¼„YU˜XUu]Àv8ÀµÌÀ¼„U$ Uu]Àv8ÀµÌÀ¼„U ]˜X9YUu]Àv8ÀµÌÀ¼„U˜„YU˜X1UÀ¶À¼$À¶À¼$AÀ“TÀ¼$À¶ YÀ“T AAEAAE€©EEÀ»ì)À¶À¼$eAAE€©EEU AAE À“TÀ¼$R AÀ“TÀ¼$À¶À¶YÀ“TÀ¼$AAEAAE€©EEÀ»ìÀ¼$À½)À¶À¼$À“TYYAuY]YYY,uY]YAYY„8 A*AYuY]YAuYÀ¼$À¼$YÀ¼$ uYÀ¼$]À¼$YÀ¼$ ]À¼$,AYÀ¼$uYÀ¼$]À¼$YÀ¼$uYÀ¼$]À¼$YÀ¼$ ]À¼$uYÀ¼$À¼$YÀ¼$u YYYÀ¼$uYÀ¼$À¼$YÀ¼$uYÀ¼$]À¼$YÀ¼$]À¼$YÀ¼$YÀ¼$À¼$À¼$À¼(À½À¼(YÀ¼$$À¼()À¶À“TÀµÌYÀ¼(YU˜XÀ“X %˜X ]À“X%˜X ]À“X U˜XÀ“Xƒø –ÜÀ½YU˜XÀ“Xƒü„\ –ܘ„À½YU˜XÀ“X#YU˜XÀ“X%˜X]À“X"AUÀ¼„À¼„–ܘ„À½ ÀµÌÀµÌU]Àv8À¼„ ]Àv8U]Àv8À¼„]Àv8À¼„ U]Àv8À¼„YU]Àv8À¼„U]Àv8À¼„YU]Àv8À¼„` YU]Àv8À¼„U]Àv8À¼„À¼„]À¼€]À¼€À¼€YU]Àv8À¼„1U]Àv8À¼„YU]Àv8À¼„ YU]Àv8À¼„ ]À¼€ 1 Y €ÁU]Àv8À¼pr YU]Àv8À¼„U]Àv8À¼„À¼„]Àv8À¼pYU]Àv8À¼„YÀ¼pU]Àv8À¼pU]Àv8À¼p 1U]Àv8À¼p U]Àv8À¼p YU]Àv8À¼p U]Àv8À¼pYU]Àv8À¼pY –ÜYU]Àv8À¼pU]Àv8À¼pÀ¼p]Àv8YU]Àv8À¼pÀ¼p1U]Àv8À¼pYU]Àv8À¼p YU]Àv8À¼p‚ñ ñ]Àv8À¼p‚ñ‚ñ À¼pU]Àv8À¼p À¼pU]Àv8À¼p À¼„U]Àv8À¼„ YÀ¼„e Ye3 YÀ¼„À¼„YÀ¼„eYee 1À¼„ YÀ¼„ 1e Ye Ye YÀ¼„ 1e e Ye À¼$À¼( UYÀ¼$YÀ¼$À¼„À»Œ À»ˆÀ»Œ YÀ»ˆÀ¼$ YÀ»¤À¼$À·( YÀ·(0 YÀ¼„À¼„YÀ¼„À·(YÀ·(À·( 1À·( YÀ·( YÀ·( 1À·( À·( YÀ·( À½ À¶À¶ À·( À¼$ À»ˆÀ»ˆ YÀ¼$ À¼„À¼$YÀ¼$À¼$ YÀ¼$ À»ˆÀ»ˆ YÀ¼$ 1À¼$ À¼$ YÀ¼$(À¼„ (]Àv8(À¿< (Yƒà À¼„ ]Àv8 À¿< Yƒà Yƒà À¼„]Àv8À¿<Yƒà   ' –Üxƒà]ƒà]ƒàYƒà Y ]ƒà 1ƒà ƒà ]ƒà Yƒà% €ÕYƒàƒàU]Àv8À¼„ 1U]Àv8À¼„ U]Àv8À¼„ YU]Àv8À¼„YU˜X U˜XYU˜X#Uu]Àv8ÀµÌÀ¼„Uƒð 1U˜XYU˜X U˜Xu]Àv8ÀµÌÀ¼„U"Uu]Àv8ÀµÌÀ¼„U YU˜X(AE€©EEÀv<ÀvD]˜X* 1Uu]Àv8ÀµÌÀ¼„U$ Uu]Àv8ÀµÌÀ¼„U ]˜X) YUu]Àv8ÀµÌÀ¼„U U˜XÀ“XY%˜X U˜XÀ“XJ ˜„%˜XU˜X˜X]À“X]À“XÀ“XY%˜XU˜XÀ“X 1%˜X Y%˜XU˜X U˜XÀ“X Y%˜X%˜X]À“X 1U˜XÀ“X U˜XÀ“X YU˜XÀ“Xƒø UÀ¼„ À¼„ À¼„UÀ¼„*YUu]Àv8ÀµÌÀ¼„UÀ“X&Uu]Àv8ÀµÌÀ¼„UÀ“X%À¶À¶UÀ¶À¶+YUu]Àv8ÀµÌÀ¼„UÀ“XY%À¶À¶ YUu]Àv8ÀµÌÀ¼„UÀ“XÀ“XUu]Àv8ÀµÌÀ¼„UÀ“XÀ“X%À¶À¶UÀ¶À¶À¶À¶%À¶À¶UÀ¶À¶À¶À¶YUu]Àv8ÀµÌÀ¼„UÀ“XY%À¶À¶Y%À¶À¶UÀ¶À¶)1Uu]Àv8ÀµÌÀ¼„UÀ“X*YUu]Àv8ÀµÌÀ¼„UÀ“X%Uu]Àv8ÀµÌÀ¼„UÀ“X UÀ“X1%À¶À¶Y%À¶À¶%À¶À¶UÀ¶À¶ Y%À¶À¶, YUu]Àv8ÀµÌÀ¼„UÀ“X%À¶À¶ 1UÀ¶À¶ UÀ¶À¶ YUÀ¶À¶ AAE AE AE)À¶À¶ )À¶À¶ UÀ¶)À¶À¶ UÀ¶HAE€©EEUÀ¶À¶AAEAAE€©EE1 À½YUu]Àv8ÀµÌÀ¼„UÀ“Xu]Àv8ÀµÌÀ¼„ UÀ“X UÀ¶À¶1UÀ¶À¶)1U À¶À¶Wu]Àv8ÀµÌÀ¼„UÀ“XÀµÌÀ¼„]Àv8À“X)À¶À¶%À¶À¶> u]Àv8ÀµÌÀ¼„Uu]Àv8ÀµÌÀ¼„UÀ“XUÀ¶À“TYUÀ¶À“T À“TYUÀ¶À“TYÀ“TÀ¶+ YUÀ¶À“TYUÀ¶À“TÀ“TUÀ¶À¼$YUÀ¶À¼$L À¶À¼$À¼$YÀ¼$UÀ¶À¼$YUÀ¶À¼$UÀ¶À¼$UÀ¶À¼$1UÀ¶À¼$YUÀ¶À¼$ YUÀ¶À¼$ 1UÀ¶À¼$ UÀ¶À¼$ YUÀ¶À¼$Yu]Àv8ÀµÌÀ¼„Yu]Àv8ÀµÌÀ¼„€š Yu]Àv8ÀµÌÀ¼„u]Àv8ÀµÌÀ¼„ÀµÌÀ¼„À¼$Yu]Àv8ÀµÌÀ¼„YÀ¼$UÀ¶À¼$YUÀ¶À¼$UÀ¶À¼$1u]Àv8ÀµÌÀ¼„Yu]Àv8ÀµÌÀ¼„ Yu]Àv8ÀµÌÀ¼„)À¶À¼$ À½)À¶À¼$ À¼$À“TÀ“T YÀ“T< ˜„À½)À¶À¼$À“TÀ¶YÀ“TUÀ¶À¼$ 1À“T YÀ“T YÀ“TA„8 A uY]YY0À¶À¼$AAEAAE€©EE À¼(À¼(UÀ¶À¼$)À¶À“T: )À¶À“TÀµÌYÀ¼(À¼$À¶YÀ¼$À¼$)À¶À“TAE€©EE )À¶À“T-]Àv8ÀµÌÀ¼„À¼()À¶À“TÀµÌ+ U]Àv8À¼„u]Àv8ÀµÌÀ¼„ AÀµÌÀµÌAÀµÌÀµÌ AÀµÌÀµÌ„\ UYU]Àv8À¼„À¼„2AYUÀ¶À“TAÀ“TYUÀ¶À“TYUÀ¶À¼$UÀ¼„AÀµÌÀµÌ À“X> Uu]Àv8ÀµÌÀ¼„UÀ“Xu]Àv8ÀµÌÀ¼„1UÀ¶À“T À¶À“T UÀ¶À¼$ À¶À¼$ UÀ¶À¼$À¼(+ u]Àv8ÀµÌÀ¼„U]Àv8À¼„UYU]Àv8À¼„À¼„‰À¼„YU]Àv8À¼„YUu]Àv8ÀµÌÀ¼„UÀ“XYu]Àv8ÀµÌÀ¼„UYU]Àv8À¼„À¼„)À¶À“TAYUÀ¶À“TAÀ“TYUÀ¶À“T)À¶À¼$YÀ“TYÀ“TEÀ“TÀ¶AE€©EE5YUÀ¶À¼$À½)À¶À¼$À¼„YU]Àv8À¼„UÀ¼„AÀµÌÀµÌAÀµÌÀµÌÀ¼„AÀµÌÀµÌAÀµÌÀµÌ‚õ YU 1- y yU‚õYU5 YU‚ù U ‚ùE5YUU YU ]]YU¶LÀs<–€ YÀ¼8À·,YYUYU YU#€É€€€Í U‚ý ]À¶€UYÀ·(„dB –ÜÀs<]¢ÄYÀ·(À·(YÀ·(À·(YÀ·(À·( À¼p„€€ –Ü1À¼pYÀ¼puÀ¼HÀ¼HuÀ¼HÀ¼HYÀ¼pYÀ¼pÀ¼pYÀ¼pÀ¼pYÀ¼pYÀ¼p UUYUYUYU YU€Í "€É€€€Í 1UYU 1U YUYU‚ý ]À¶€ %+YÀ·(À¼(À¼„]]]]–€–€YÀ¼8À·,€]À¼€À¼€€YÀ¼pÀ¼tY]€]€€]€€YUYUYU€É€€€Í U‚ýYe]À¶€]À¶€]À¶€I À¼„–ÜÀs<]¶LUYÀ·(1À¼p¢Ä]€Àºô„d YÀ¶ YÀ¶ Y€À¶À¶  E  ‚ñ‚ñ À¼pU Uy ‚ù  EU 1À¼p uÀ¼HÀ¼H uÀ¼H„€ uÀ¼H uÀ¼H] uÀ¼HÀ¼HA A  AA AAA AAAA AAA AA AAAAAA AAAAAAA AAAU YU€‚ Às<¶L€€€UYUUYUUYUUYUUYUU €'eAAAAE€ AAAAA U 1U YU YUAAAA 1U U YU Y –ÜY–€–€Y –ÜYYe1Y Y ]ÀvpÀs8 YÀvt]AY ]Àvp YÀvt(]ÀvpÀs8]ÀvpYÀvt]]Às<YÀvp(]ÀvpÀs8]ÀvpYÀvt]]Às<YÀvp(]ÀvpÀs8]ÀvpYÀvt]]Às<YÀvp]]]€]€Às<YÀvp Às<Às8] ]]  1U „ì UYU„ô UYU€€ „ü 1U1U <€É€€€Í 1U1UM ]]YYYYYYYY] Y 1U! 1UUYU 1 YU YU „ì 1U YUU YU Y YU„ô YU YUc €€ YYYYYYYYYY 1U 1U„ü 1U 1U J YYYYYYYYYY YY 11Y YÀ“ŒÀ“ŒY1À“ŒÀ“ŒÀs<Àu¤AÀt4EÀs<A]AÀt4EÀtì YÀu¤ €ÔÀu¤ eÀtì 1Àu¤ Àu¤A]AÀt4E Àt4AAÀu¤E:A]AÀt4EÀtì]]YÀu¤€ÔÀu¤"Às<AAÀu¤E]Àt4AAÀu¤E'AAÀu¤EÀs<AAÀu¤E Às<Àv8€ÕYU YU€ÕYUÀ“Œ AÀt4E%AÀt4EÀtìYÀu¤€ÔÀu¤-€ÕYUAÀu¤EAÀt4EÀt4€ÕYU AÀu¤E‚é‚éU €ÕYUAÀu¤EAÀt4E€ÕYUAÀu¤EAÀt4E‚éE5 Àv8 EÀu¤ Às< YÀuÀ YÀuÀ YÀtÄ YÀtÄÀtÄ YÀtÈ YÀtÈÀtÈ 1ÀuÀ YÀuÀ 1ÀtÄ YÀtÄ 1ÀtÈ YÀtÈO YÀuÀYÀuÀEÀuÀ5YÀtÄYÀtÄÀtÄYÀtÈYÀtÈÀtÈ EÀt4 Às<AAÀu¤E E]Àt4 Àu¤ €ÕYU EÀu¤S YÀuÀYÀuÀEÀuÀÀu¤5YÀtÄYÀtÄÀtÄYÀtÈYÀtÈÀtÈ( €ÕYUAÀu¤EAÀt4E ‚é EUÀy Y, YÀyT€©YÀyTEÀyTÀyÀkd5Às<–ÜÀ^ÀyXeAEQEEQQEE EQA AYAA AYA  Y  ƒ YY€ÕY YY€ÕYY€ÕY€ÕY YY…p=€ä …pÀ­8€ä …pÀ¬¨AAÀ¬¨EUÀ¬¨YÀ¬¨ YÀ¬¨UÀ¬¨YÀ¬¨AAÀ¬¨E6…pAAÀ¬¨EUÀ¬¨YÀ¬¨YÀ¬¨À¬¨ …pÀ¬¨À¬X À¬XÀ}àÀ}äUÀ}àÀ}äUU À}œÀ}œYUÀ}œÀ­8 XYUÀ}œÀ­8UÀ}œÀ­8$UUUUUUU)=UUUUUUU?À}œYUÀ}œÀ­8À}œÀ}œYUÀ}œÀ­8À­8À­8I=UUUUUUUXÀbÔYUÀ}œÀ­89€€äUUUUUUU]À›Ø*=UUUUUUU ]À›Ø8€€äUUUUUUU]À›Ø€€äUUUUUUU]À›Ø…pX=UUUUUUU5€€äUUUUUUU]À›Ø5€€äUUUUUUU]À›Ø]À›ØYÀ}LÀ}PÀ}T5F€€äUUUUUUU]À›ØY–Ü]À­8]À­8À­8 À¬¨…´AUYUYÀ­8!UYUÀ¬¨YUÀ¬¨YUYUÀ¬¨YUYÀ­8UYÀ­8YUYUÀ¬¨UYUÀ¬¨ YÀ­8 YUUYUYUY]š, UYÀ­8 UYUÀ¬¨YUÀ¬¨ UÀ¬¨UUÀ¬¨ UÀ¬¨1UYÀ­8YUYÀ­81UYUÀ¬¨YUYUÀ¬¨UYUÀ¬¨ 1À­8 YÀ­8 UÀ¬¨U UUYUYU UYL]š,š,YUYÀ­8UYUÀ¬¨YUÀ¬¨YUÀ¬¨YUÀ¬¨YUYUÀ¬¨YUYÀ­8EUYÀ­8YUYUÀ¬¨EUYUÀ¬¨YÀ­8YÀ­8EÀ­8YUUYUYUYUYUYYY5YUÀ¬¨UÀ¬¨À¬¨˜„]š,YUÀ¬¨Eu€ä]‚4…œÀœ¸…”]ª@"ÀÀøUuª@¶LYÀyTšPÀCd]Uuª@¶LYÀyTšP€í ]ÀCd Uuª@¶LYÀyTšP]Uuª@¶LYÀyTšPUuª@¶LYÀyTšPuª@¶LYÀyT]ª@u€ä]‚4…œ]‚4€æu€ä]‚4…œ]À›ØÀ›Ø…p5u€ä]‚4…œ5u€ä]‚4…œ–Ü–ÜÀœ¸…”À`]ª@]ª@AEÀÀøUuª@¶LYÀyTšPÀCd]Uuª@¶LYÀyTšP]Uuª@¶LYÀyTšP€äª@‚45au€ä]‚4…œ]À›Ø–ÜÀs<˜„šP]š,YUÀ¬¨AAEEEAEAE(À¬´(–Ü =€ä1Y1Y ‚y1Y…p5 –Ü À¬´ –ÜÀ¬¨€ € À¬¨ À¬¨ …p …p EÀ¬¨ …pÀ¬¨ E€  À}T À}œXÀbÔ ÀbÔ…Œ ÀbÔ…ˆ AÀ}œ…ˆ…Œ…ˆ À}œC Y–Ü…p=UUUUUUUÀ}LÀ}TI ]À›ØÀbÔ}=UUUUUUUXÀbÔ ]À›ØX(=uÀ­8ÀBPÀ]X*(=€À­(ÀuÌÀkdÀBPÀ]XÀ­8/(=€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8.=€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8‚­UÀ­(=uÀ­8ÀBPÀ]X(=€À­(ÀuÌÀkdÀBPÀ]XÀ­8-=€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8‚­UÀ­( =uÀ­8ÀBPÀ]X* =€À­(ÀuÌÀkdÀBPÀ]XÀ­8/ =€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8 À­8ÀBPÀ]X ! À­(ÀuÌÀkdÀBPÀ]XÀ­8 UÀ­( UÀ­(ÀApÀuÀÀu¤UÀ­(+ À­(ÀAhÀAhÀC`ÀkdÀBPÀ]XÀ­8 À­8À­( UÀ­(À­(À­( UÀ­(UÀ­(…œ…œ…œeA…œE A…œA…œ …œ…œ …œ…œÀ¬¨ EUÀ¬¨…´ U YÀ­8YÀ­8YÀ­8 UYÀ­8 YUYÀ­8 YÀ­8UUÀ¬¨ UUÀ¬¨UÀ¬¨U UUÀ¬¨ U U …p ÀuÌÀkdÀs<ÀkdÀuÌÀuÌÄÀs<ÀkdÀtÈuYYYÀuÌ UY,,Y, ÀZœuÀuÌ'uYYYYu ÀuÌuYYYÀuÌ ÀuÌ UY,, , ÀuÌ,/YAAAYYY UÀuÌ,ÄPuYYYÀuÌYÀuÌYYUY,,Y,UY,,Y,!YÄÀs<ÀkdYÀZœÀuÌ UÀuÌ,Ä&UY,,Y,UY,,Y,!YÄÀs<ÀkdYÀuÌÀuÌ]UÀu¼YÀuÌ]UÀu¼YÀuÌUÀu¼YÀuÌ=ÀA¨YÀuÌYÀuÌ]UÀu¼YÀuÌÀu¼YÀuÌ]Àu¼Às<ÀAh €¨À‘¤ À‘”ÀuÌAAAÄÀ­8ÀkdÀ`€¨À‘¤UYÀtüÀuÌUÀuÌÀuÌUYÀtüÀuÌUÀuÌÀuÌYÄ6UYÀtüÀuÌÀuÌÀs<UÀuÌÀuÌÀuÌÀuÌYÄÀkdÀs<ÀuÀE €¨À‘”ÀtXÀt4Àtx €¨À‘¤ €¨À‘¤ ]ÀwdÀwd/€YÀtüYYUÀuÌÀwhÀuÌÀwhYYUÀuÌÀwhYUÀuÌÀwhÀ[¤Àw`UYÀuÌÀuÌÀA”À[´ÀZüÀA¬ ]ÀZü AE] YÀZT2uYUÀtüÀuÌYÀuÌYUÀtüÀuÀ_( €¨À‘” À‘¤ €¨À‘¤ À‘¤ €¨À‘¤ Ä ]Àwd.€YÀtüYYUÀuÌÀwhÀuÌÀwhYYUÀuÌÀwh UÀuÌÀwhÀZT ÀZTÀZœ ÀtÈÄUYÀuÌÀuÌ YÀ[´ YÀZœ ]ÀZü ÀZTÀuÌ1uYUÀtüÀuÌYÀuÌYUÀtüÀu#YAAYY ÀZTÀuÌÀZœ YÀZœ)À`Às<]Àu¼Àu¼€¨À‘”ÀtXÀt4Àtx€¨À‘¤€¨À‘¤ÄÀuÀ]ÀwdÀu¤]ÀwdÀwd€YÀtüYYUÀuÌÀwhÀuÌÀwhÀuÌYYUÀuÌÀwhYYUÀuÌÀwhYUÀuÌÀwhÀ[¤Àw`UYÀtüÀuÌUYÀuÌÀuÌÀA”À[´ÀAœÀZüÀA˜ÀA¬]ÀZüAE]YÀZTuYUÀtüÀuÌYÀuÌYUÀtüÀuYÀuÌÀ_(ÀuÌYÄÀ^À­8ÀkdÀAh ÀkdÀZ| ]ÀuÌ uÀuÌ A5 ÀuÌÀZ|]]ÀuÌ]]ÀuÌÀuÌÀZ| uÀuÌÀZœ Às<Àkd UÀuÌ, ÀuÌ, ÄUÀuÌ, ÄUÀuÌ,À‘” UÀ‘”€… À‘”€… À‘¤UÀ‘”€… À‘¤À‘¤ À‘”À‘¤ À‘¤ À‘¤ A AAA A AAA AA AA ÀZœÀZTÀwhUÀuÌÀwh ÀuÌÀwh ÀZTUÀuÌÀwh ÀkdÀs< ÄÀtÈ ÀuÌÀZT ÀZœÀZTÀuÌA AYAÄÈÈÈÀ­8À^ÀkdÀAhÀ[  YÀ[´ÀAh ÀZüÀAh YÀtÈ À[´ÀAh‚©ÀAhÈeYÀAh]Àu¼ÀA˜YÀZüÀAœÀ[ ÀuÀÀu¤À[¤ÀtÄÀu¼YÀ[´À[´ÈÀAhÈ!ÈÀ­8À^ÀkdÀs<ÀAhE UÈ UÈUÈÈÈÀ­8À^ÀkdÀs<ÀAh  À­8 À­(–°–Ø–°Y–ØY–ؖؖ°¸Y–ØE¸‚4YEÀAÀ\@À[`8 ÀAœYÀZüÀA˜ÀA”YÀ[´ÀAÀ\@ÀAŒÀ[`èÐÀAhE]Àu¼Àu¼è‚4ÐÀAhuYÀAhÀ­8AuYÀAhÀ­8‚%‚4YÀAhYÀAhYÀAhÀ­8X‚‚4AUUUUÀBðYÀAhÀs<À­8AuYÀAhÀ­8‚ÀA¨YÀuÌÀuÌ ÀkdÀAh‡L AAÀAhAÀAhAAÀAh‡T AAÀAh‚4‚4/AYÀAhYÀAh‚4AAÀAhuYÀAh]uYÀAhYÀAh‚4YÀAhA]uYÀAh‚4]AAÀAhuYÀAh)uYÀAhÀkdÀ­8‚4ÀBðY(uYÀAhÀkdÀ­8‚4Y] ]‡d -]uYÀAh‚4]YÀAh uYÀAhÀkdÀ­8‚À­8YÀAhÀkd]uYÀAhÀkdÀ­8‚(]uYÀAhÀkdÀ­8uYÀAhÀkdÀ­8> ]uYÀAhÀkdÀ­8‚4]ÀBð‚Y]‚ E Ù‚<EÄU Ä UÈ ÀAhÀZü YÀAhÈ YÈ> À^À­8ÀkdYÀAhÀs<ÀAhYÀAhÈYÈÈ 1ÀAh YÀAh1ÈYÈ YÈ YÀAh 1È È YÈ AÀAh AÀAh ÀAh AUAÀAhAÀAh AÀAhU%À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8- ‚0€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8Uuuuu Uuu YÀuÌÀ­8YÀtü AY AY YAAY AAY AY AYAAAY AAAYAAY AAY Y(eAAAYEuY AAAY YAAAY E ]À›Øp ‚41 ‚4]pAUUUUY]A]] pÀ›Øs ]uYÀAhÀkdÀ­8]Y]ÀBð‚]uYÀAhÀkdÀ­8À­8YÀAhÀkdYÀAhYÀAh ÀE À À­( –Ø ‚4À­(%Y–Ø]š,]š,š,YY–Ø ¸E ¸UUU UUUU À­8ÀkdÀ^ ˜ÀAh ‚4Y ÀAh˜€‡ ]uYÀAhÀkdÀ­8]p]Y]ÀBð‚AUUUU]uYÀAhÀkdÀ­8À­8YÀAhÀkdÀ^ ]ÀAh ]ÀAh]ÀAhu]ÀAh]ÀAh ]ÀAh u]ÀAh]ÀAhÀAh]ÀAh]ÀAh9 AÀAhu]ÀAh]ÀAhu]ÀAh]ÀAhu]ÀAh]ÀAh ÀAhu]ÀAh]ÀAh€¸]uYÀAhÀkdÀ­8]p]Y]ÀBð‚AUUUU]uYÀAhÀkdÀ­8YÀAhYÀAhÀAhu]ÀAh]ÀAh]ÀAh]ÀAh]ÀAh ]E ]A]Y A]Y ]YAA]Y AA]YA]Y A]YAAA]Y AAA]YAA]Y AA]Y ]Y0eAAA]YEu]Y AAA]Y ]YAAA]Y ‚4]Y€‡5AEÌ]uYÀAhÀkdÀ­8]p]ÀBð‚AUUUU]uYÀAhÀkdÀ­8À­8YÀAhÀkd5 ÌE Ì‚0 Y‚0UUUU€ìYUUUU€ì\ ‚4‚0Y‚0UUUU€ìYUUUU€ìUUUU€ì1‚0Y‚0 1 11UUUU€ìYUUUU€ì YUUUU€ì Y‚0f€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8ÀAp€‰À­(ÀAhÀC`ÀkdÀBPÀ]XÀ­8À­8ÀuÀÀs< 1UUUU€ì UUUU€ì YUUUU€ì$ À­(€Õ]uÀ­8ÀBPÀ]XDÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]XÀ­8 EuÀ­8ÀBPÀ]X; À­(]uÀ­8ÀBPÀ]X€Õ]uÀ­8ÀBPÀ]XDÀ­8ÀBPÀ]XÀ­8]uÀ­8ÀBPÀ]X]uÀ­8ÀBPÀ]X ÀBðÀBð ‚0ÀA¬ ÀAh‚0 ‚uYÀAhÀkdÀ­8 À­8Às<À` ÀZüÀuÌ' À­(ÀuÌÀkdÀBPÀ]XÀ­8Às<& €À­(ÀuÌÀkdÀBPÀ]XÀ­8%À­(ÀuÌÀkdÀBPÀ]XÀ­8Às< À­8 À­(ÀuÌÀkdÀBPÀ]XÀ­8 A AA AAA AA]AA A]AA AA AA]"A]YA]AA$ A]YA]AAA]AA A]AA]Y ]Y]?eA]YA]AAE€]Y]# A]YA]AAA]Y]#A]YA]AA ÀkdÀAhAAÀAh‡L AÀAh‡P‡T YÀAhYÀAh‡\ ‚4‡X‡X‡\ ‡` ‚4‡X‡\GA]AAAÀAhAuYÀAh]uYÀAh‡\ ‡`uYÀAhYÀAh‡X‡\= ]uYÀAh]AAÀAhuYÀAh ÀAh/ ]YŒ0AÀ–X]AÀ–X]À–XÀšÌAÀš¬]ÀšÌÀ­8À­( ]AÀš¬]À𬠖´ –´–´ U–´ A–´UU4 ]pUYAUUUU‚47 ]pUYAUUUU‚4ŽX €‘À5: ]pUYAUUUU‚4ŽàŽX0€‘A€‘ 5À €‘ÀE1 ]pUYAUUUU0€‘AE€‘ ‚4ŽàŽX €‘Àu‚4ŽàŽX AÀ\ AÀ\ À\AAÀ\ AAÀ\ AÀ\ AÀ\AYAAÀ\ AYAAÀ\AAÀ\ AAÀ\YAAYAAÀ\ AAYAAÀ\AYAAÀ\ AYAAÀ\#AAAYAAÀ\% AAAYAAÀ\AAYAAÀ\ AAYAAÀ\ Y=eAAAYAAÀ\E€áYÀ\$ AAAYAAÀ\ YÀ\$AAAYAAÀ\ Y‚4 ‚4 Y ¸u‚4ŽàŽX Y Y ]u‚4ŽàŽX ]Y ]Y‚4 ]Y Ìu‚4ŽàŽXA A AYA AYAA AYAAYA AAYAAYA AYAAAAYA AAAYAAAYA AAYA Y/eAAAYAE€Y AAAYA YAAAYA Y‚4 èE Y èu‚4ŽàŽX' UUUU€ìu‚4ŽàŽX U‚<‚< U‚<‚< ‚pŽàY€ä5 EuŽàY€ä5 ް ‚p‚< ްg 5puŽàY€ä5Žà€€äUUUUUUU]À›Ø€ä]À›ØY5 pE ‚p‚<u]À›ØÀ­8u]À›ØÀ­8=5puŽàY€ä5Žàu]À›ØÀ­8]À›ØY5 ‚p‚<5uŽàY€ä55 E>5UUUUUUUuŽàY€ä5Žà5) UUUUUUUE ŽX EAEE Žà Y€ä. l‚<Y€ä€ä€äY€ä€äY€ä€ä1€äY€ä Y€ä11 1€ä €ä Y€äˆ|;]uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡)]€šP˜„Às<–ÜYUÀ¬¨€¡]‚4(]€šP˜„Às<–ÜYUÀ¬¨€¡$€šP˜„Às<–ÜYUÀ¬¨€¡ 5‚D]uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡]uŽàY€ä]€šP˜„Às<–ÜYUÀ¬¨€¡]€šP˜„Às<–ÜYUÀ¬¨€¡šP˜„Às<–ÜY€äŽàYUÀ¬¨€¡]š,u€ä]‚4…œŽX€ä]‚4…œ…œ€ä]‚4‚45 ‚DE UY–Ø ‚p€¡ UY–Øš,YYYY‚< ‚<EeA‚<E‚< A‚<A‚<)5AEEuŽàY€ä5Y€ä5Žà ‚p‚d‚t ‚t‚<0 UUUUUUUu‚< u‚<Uu‚<u‚<u‚<u‚< Uu‚<u‚<5 Uu‚<UUUUUUU pu‚< Uu‚<p U‚<UU‚<U‚<U‚<U‚<‚<‚< UU‚<U‚<UYÀtüÀuÌÀuÌ Às<ÀuÌ A]eAAEQEEUAAAEA]AQÀ[Ä À‘¸ ÀuÀÀ­8À[Ä]À­8À[´À[ À‘¬À[]À­8ÀZüÀ\P À‘¼À\P]À­8À\@ ÀZüYÀZüYÀZüÀuÈÀA¸ Àu¼À­8 YÀu¼sÀuÀÀu¤À[¤ÀtÄÀw`Àu¼À[ ÀuÈÀtÈÀ\@YÀ[´ÀA¨ÀuÌÀA¬ÀZüÀA¸ÀA˜ÀAœYÀZüÀ­8ÀAh]À­8Às<ÀAh]Àv8Àu¼ÀuÄ ÀuÀÀv8 Àu¼Àv8dÀuÀÀ[¤ÀuÄÀw`Àu¼À[ ÀuÈÀ\@YÀ[´ÀA˜ÀZüÀAœYÀZüÀA¨ÀuÌÀA¬ÀA¸ÀAh]Àv8ÀAh Às<]Àv8]]Àv8Àv8Às<]À­8ÀAh€­Àt4Àu¸Àu¸‚™Àt4Àu¸€­Àt4Àu¸Àu¸Àv8 ]Àu¼À[1YUÀuÌÀwh UÀuÌÀwhYUÀuÌÀwh ÀZT YÀZTFÀ[ÀuÀYUÀuÌÀwhYYUÀuÌÀwhYUÀuÌÀwhYÀZTÀs<ÀZü YÀtüuYÀtüÀZP]uYÀtüÀZPB Às<€­Àt4Àu¸Àu¸]Àv8]YÀtüYÀuÌÀZP(]uYÀtüÀZPÀ^À­8Àu¼]uYÀtüÀZPF]uYÀtüÀZP]uYÀtüÀZPÀZP]]Àt4xÀ^À­8Àu¼]]Àu¤Àu¼Àt4xÀs<Àu¼ÀuÀÀu¼ÀuÈ]]ÀtÈ xÀ[ Àu¼ÀuÄ]]ÀtÄ xÀ[¤À[&€]ÀZP]À¶À»ˆYÀtü ]ÀZPÀ»ˆ ]À¶ UÀu¼ YÀtü%€]ÀZP]À¶À»ˆYÀtü ]ÀZP UÀu¼ ]À¶€ÔÀ[ÀZØÀs<€]ÀZP]À¶À»ˆYÀtüÀZäÀZàÀZP]ÀZPÀ»ˆ]À¶YÀtüUÀu¼]ÀZP]À¶À¶Àu¼]uYÀtüÀZP]uYÀtüÀZPYÀtüÀZØYÀuÌxÀ^À­8ÀZüÀ`EÀ`À[ÀuÀÀuÌÀs<xÀ^À­8ÀZüÀ[¼ ]ÀuÀÀ[ÀÀ»œÀ[¨ ]ÀuÀ~À[¼ÀuÌÀs<Àu¼]ÀuÀ]ÀuÀÀ[ÀÀZPÀ»œ]uYÀtüÀZP]uYÀtüÀZPÀZPYÀtüÀ[¨À[´xÀ^À­8À`À[´EÀA|Àu°À[hÀ»¤À\LÀ\4€Ñ#À`Às<ÀuÀÀA|]Àv8Àu°Àu¸]Àu¤Àu¼À[¤À[ ÀAŒÀ[hÀZPÀ»¤]uYÀtüÀZP]uYÀtüÀZPÀZPÀA¨YÀuÌÀA¬ÀZüÀA¸ÀA”À[´ÀAÀ\LÀ\4À\@ÀA˜ÀAœxÀ^À­8ÀAheEQEEEQ QxxÀ“ŒÀ^À­8ÀAhAÀZüUx]A˜˜ ÀZüUx€Õ]A˜˜]A˜˜ A˜˜2AÀZüUx˜]A˜˜]A˜˜"˜À^À­8ÀkdÀAhYÀZü€í‰  =‰  €í‰ ‰$ t‰ €í‰ €í‰ Yt‰ YÀ[ ]ÀuÌ(ÀuÌÀAœYÀZüÀ[ ÀA¨YÀuÌ]ÀuÌÀAhÀs<ÀuÌÀuÌÀA€ÀA´ YÀu¼ÀAÄÀ“À UÀ­8ÀA°ÀŸPÀAtÀA„ ‰ ÀAh 1ÀZü1U11 ÀZüÀZüA1 UÀZüÀZüAÀuÄÀuÄ À[´À[´ UÀ[´À[´\@ÀA€ÀA€Àu¼Àu¼ÀAŒÀ[hÀAŒÀ[hÀ»¤À»¤ÀA¬]ÀZüÀA¬]ÀZüÀZüÀZüÀA´ÀA´ÀA¸YÀu¼ÀA¸YÀu¼ÀAÄÀAÄÀ“ÀÀ“ÀÀ­8UÀ­8À­8UÀ­8ÀA˜ÀA˜YÀZüYÀZüÀApÀApÀuÀÀuÀÀA°ÀA°ÀA|ÀA|ÀŸPÀŸPÀAtÀAtÀuÄÀuÄÀA„ÀA„ÀA”ÀA”YÀ[´YÀ[´ÀAÀAÀ\@À\@ÀAœÀAœÀs<‰ ÀAh‰ ÀAhEÀA¤F ]ÀuÌ]ÀuÌÀuÌÀuÌÀA¤ÀA¤ÀA¨YÀuÌÀA¨YÀuÌUU  ÀZüU  U  À[´Y€ƒÀAŒÀ»¤ÀA¬ÀZüÀA¸Àu¼À“ÀÀ­8UÀ­8YÀZüÀAœÀuÀÀA|ÀŸPUÀt4ÀAt U ÀA„À\@ÀA”YÀ[´‰ ÀAhE]ÀuÌÀuÌÀu¼Àt4Às<‰ ÀAhEt‰ ÀAhÀs< Àu¼YÀu¼YÀu¼YÀAhÀs<YÀAhÀA¨YÀuÌÀuÌÀs<ÀAhEÀkdÀkd ÀuÀÀu´ ÀuÌÀu¤Às<ÀkdÀuÀQÀd ÀdÀ`Àu¼ÀuÄ,ÀdÀkdÀ[¤ÀtÄÀuÌQ YÀkdÀuÌYQÀkdÀw`ÀuÀÀuÌQ Àu¼ÀtÀt4,ÀdÀkdÀu¼Q ]Àv|Àv| ]Àv|. Àu¼ÀuÈ,Àd]Àv|]Àv|Àv|EÀkdÀ[ ÀtÈÀuÌQ À“ÀQ ]Àº(Àº( ]Àº(]Àº(]Àº(Àº(EÀ^À­8ÀkdÀ[`QÀu¼,ÀdÀs<ÀkdÀ\@ÀuÌQÀs<ÀkdÀ[´ÀuÌQ YÀuÌ 1ÀuÌ YÀuÌo ]YÀuÌuYUÀtüÀuÌYÀuÌYUÀtüÀuYÀuÌYÀuÌEÀuÌ5]Àu¼,Àd Às<ÀkdAE]ÀZüQÀs<ÀkdÀuÌQÀs<ÀkdÀuÌÀuÌQÀ^À­8ÀkdÀu¼Q YU YU 1Àu¼ Àu¼Y1AA1 U U YU 1U YU+ YUYYUEU5x+˜À^À­8ÀAhÀs<Àu¼QYÀu¼EÀkdÀ“ÀÀuÌQÀAx.uYUÀtüÀuÌÀuÌYUÀtüÀuÀuØÀAÀ ÀtÈÀuÌ-uYUÀtüÀuÌÀuÌYUÀtüÀu;.Às<À`ÀkdÀuÀQÀu¤À[¤ÀtÄÀuÌÀuÄYÀtÈÀuÌÀAxYÀw`UYÀtüÀuÌuYUÀtüÀuÌÀuÌYUÀtüÀuÀu¼À[ ÀtÈÀuÈÀ“ÀÀ[`À\@YÀ[´À[´ÀuÌÀA¬]ÀZüAE]ÀZüYÀZüÀ_(ÀA¨YÀuÌÀuØÀA¸YÀu¼YÀu¼YÀu¼AAEÀAÀÀAh˜À^À­8ÀkdÀAh ] ÀŸP€Î Às<À`ÀkdÀkdÀuÀUYÀtüÀuÌÀuÌUÀuÌÀuÌÀuÌÀuÌUY,,,Y,UY,,,ÀdÀ[¤ÀuÄÀw`UYÀuÌÀuÌÀŸPYÀ[ À[`À\@YÀ[´À[´ÀA¬ÀZüÀA˜ÀAœÀ^À­8ÀkdQÀAh#]ÀuÌÀt4]ÀuÌÀuÌÀuØ]Àu¼Àu¼'Àu¤Àu¼YÀtüAAA ]ÀuÀÀt<ÀtDuÀu¼]À¶À»ˆuÀu¼]À¶À»ˆ YÀ»„zÀ[ÀuÀÀt<Àu¤ÀtDÀu¼À[ÀZØuÀu¼]À¶À»ˆÀZäÀZàÀZPÀ»ˆ]À¶]À¶AAA ]ÀZüB YÀZüÀuÀÀt<Àu¤ÀtDÀu¼ÀZØÀZàÀZPÀ[ ÀuÌÀs<]YÀZüEÀA ÀAÈÀ\H Àu¼ Àt€ì*ÀuÀÀw`À[¤ÀuÄÀtÄÀ[ ÀuÈÀtÈÀ[`À[hÀZPÀ»¤ÀA¨YÀuÌÀu¼ÀA¤ÀA ÀAÈYÀu¼YÀu¼Àt4ÀA”À[´À[¼Àt<Àu¤ÀtDÀ[ÀÀ»œÀ\@À\LÀ\4À\H]ÀuÀ]ÀuÀYÀZüÀA¬ÀZüÀA˜ÀAhÀ[´À\@ ]ÀAh ˜À^À­8ÀkdÀAhÀt`Àt´ÀtlÀt`Àt´ÀtlÀtXÀs<Àu¼Àt4 ÀkdÀuÌ ÀuÀÀu¤ÀA¨ÀuÌÀA¸Àu¼ÀkdÀAhEÀ¬Œ À¬Œ ÀkdÀAhÀApÀuÀÀu¤Àu¤ À­8ÀuÀ ÀZü À­8Àu¼ ]Àv8ÀuÀ ]Àv8Àu¼ À“ÀUÀuÌÀwhYUÀuÌÀwhÀZTQ Às<YUÀuÌÀwhUÀuÌÀwhÀuÌÀwhÀuÌYUÀuÌÀwhÀZT1UÀuÌÀwhYUÀuÌÀwh À“À YUÀuÌÀwhÀs8 1ÀZT ÀZT YÀZT À^À­8ÀkdÀAhUxQ UxÀZü‰  ‰ eA‰ E A‰  A‰ ‰  ‰ ‰ ‰ ‰ ‰ ‰  ‰  ‰  t‰ €í‰ ‰$ t‰  €í‰ UÀZüÀZü ÀZüÀZü UÀZüÀZüUÀ[´À[´ À[´À[´ UÀ[´À[´ ÀZü À[´ÀA¨YÀuÌÀAŒÀA¸ ‰ ÀAh À¬Œ ‰ ÀAh‰ ÀAh ‰ ÀAh=‰ ÀAh ‰ Àu¼ ‰ Àu¼ Àu¼Àu¼ ‰ Àu¼‰ Àu¼ Àu¼Àt4 ‰ Àu¼=‰ Àu¼ Às<ÀuÌ Àu¼ ]Àu´ÀuÀ ÀuÀ ÀuÌÀtÈÀt4 ]ÀtÀu¼ Àu¼ YYÀu¼ U UÀt UÀt Àu¼YUÀt1UÀt UÀt1YUÀt ]Àt À^À­8ÀkdÀAh ˜E ˜€Õ]A˜˜€Õ]A˜˜5A˜˜€Õ]A˜˜5¼AAEEEÀ­8YÀAhÀ^ÀkdAEEYÀAhÀA˜YÀZü YÀAh À­8À^Àkd¼% ¼À­8YÀAhÀ^ÀkdAE3 ¼AAEEEÀ­8YÀAhÀ^ÀkdAE E À*ÀA¨YÀuÌÀu¼ÀA ÀA¤ÀAœÀZü UÀAhUYÀAh YÀAh UYÀAh' À^À­8ÀkdAAEEEAE €­ ¼UYÀAhlpUUUÀ­8 YÀ“À À“À 1À“À YÀ“À UÀ­8 À­8YÀ“ÀEÀ“ÀÀ­85UÀ­8À­(YÀ“À UUU]À›ØÀ›ØÀ­(!]UUU]À›ØYÀ­(YÀ“ÀÀ–`À–XÀ—<À–Ð YÀ“À]€ÕÀ˜HÀ–ØO À–`À–XÀ—<À–ÐYÀ“ÀÀ­8]€ÕÀ˜HÀ–Ø]Y]YY]YÀ­(À–XŒp ]À›ØÀ›ØÀ­(À­(Œp]]À›Ø Š8%AAAUAE Š< À­(À­88AAYUÀ­8AE]]À­(À­8 ]À–X]UÀ­8 ]À–X À­8UÀ­8 UÀ­8]UÀ­8 UÀ­8 YÀ“ÀR YÀ“ÀYÀ­8]UÀ­(]À–XÀ–XÀ­8]UÀ­8]UÀ­8#]UÀ­(À­(]À–XÀ“Ä%A]À–XAÀ“Ä]UÀ­(À“ÄÀ–Ô"YUÀ­8AE]UÀ­(AÀ“Ä]UÀ­(À–ÜÀ–èÀ–ìÀ—@À–¬À–Ì$A]À–XAÀ“Ä]UÀ­( À“ÄÀ­8]UÀ­( AÀ­8AÀ“Ä]UÀ­( UÀ­8AE]UÀ­( À–XÀ­8]UÀ­( AÀ­8AÀ–X]UÀ­(!YUÀ­8AE]UÀ­(<AÀ–XAYUÀ­8AE]UÀ­(]UÀ­(3AYUÀ­8AE]UÀ­(]UÀ­(€ÚA]À–XAÀ“Ä]UÀ­(À­(À–ÐÀ“ÄÀ­8]€ÕÀ˜HÀ–ÔÀ–XYUÀ­8AE]UÀ­(À­8AÀ“Ä]UÀ­(À–ØÀ­8À­8À–ÜÀ–XÀ–èÀ–ìÀ–XÀ—@]UÀ­(À–¬À–ÌÀ“À€†]UÀ­(À­(AÀ–X]UÀ­(À–XAÀ–X]UÀ­(AÀ–XAYUÀ­8AE]UÀ­(]UÀ­(EŒpUÀ­( UÀ­($]À›ØÀ›ØÀ­(ŒpUÀ­(]UÀ­(]À›Ø]UY]@ À­(YÀ“ÀYÀ“ÀÀ“ÀÀ­(À­8]YÀ­8YÀ­80]UY]À­(YYÀ“ÀYÀ­8]UY]GYÀ“ÀYÀ­8À­(]UY]]UY]]Y]UY]À­(À“ÄAÀ™8]E YÀ™8]E YÀ™8uG YÀ™8]EYÀ™8]EYÀ™8]EYÀ™8]EYÀ™8uYÀ™8uƒEEEEEƒƒƒƒƒ uƒEEEEEYÀ™8ƒEEEEEYÀ™8ƒEEEEE,!]TÀšÀ™„UY]YŒ0Œ8YŒ0 YŒ0Œ8À–¬À–¬À–ÌÀ“À YŒ0ŒD=UY]YŒ0YŒ0YŒ0YŒ0ŒDYÀ“ÀÀ“À4YŒ0Y] ŒpT T0]À›Ø]pp]À›ØÀ›ØÀ­(ŒpT]T]p UÀ­8AÀ–X]UUU€‡À–ÐYÀ“ÀÀ­8]€ÕÀ˜HUÀ­8À­8À–ÔÀ–XÀ–ØÀ­8À–ÜÀ–XÀ–ìÀ–XÀ—@À—<À–¬À–ÌÀ“À]UUU\ ]UUUYŒ0AÀ–X]UUUAÀ–X]UUUÀ–X À“À À­(YÀ“ÀYYAÀ–X]]Y]YY1/ ]YŒ0AÀ–X]AÀ–X]À–X Š8  UAEA Š< # ]YUÀ­8AE]À­8 UÀ­8 UÀ­8À­8 ]UÀ­(]À–XÀ“Ä ]UÀ­(À–X À­(=AÀ–XAYUÀ­8AE]UÀ­(]UÀ­( À–XUÀ­([AÀ–XAYUÀ­8AE]UÀ­(]UÀ­(À—@À–X]UÀ­(À­8J ]UÀ­(YŒ0AÀ–X]UÀ­(AÀ–X]UÀ­(À–X]EYÀ“ÀÀ“À ]EÀ™8AÀ–X]T ]T5 ]TYŒ0AÀ–X]TAÀ–X]TÀ–X ]À“Ä ]À“ÄS4]À–XÀ–X]À“ÄÀ“Ä]UY]]UY]UY]" ]TYŒ0]À–X]À“ÄÀ•à0À•àÀ“Ä]UY]]UY]& ]TÀšÀ™„À•ØYÀšLÀ­8Y!YUUUÀ­(À­8À•\ À•\À­8!YUUUÀ­(À•TÀ•, À•,À­8!YUUUÀ­(À•$À•D À•DÀ­8!YUUUÀ­(À•<À”Ü À”ÜÀ­8!YUUUÀ­(À”ÔÀ”ü À”üÀ­8!YUUUÀ­(À”ôÀ• À•À­8!YUUUÀ­(À• À˜À•T ]À™HÀ˜À–XÀ•T]À™H!YUUUÀ­(À™@%YUUUÀ­(1À–X%YUUUÀ­(1À™@ ]À–X%YUUUÀ­(1À™4&YUUUÀ­(]À–X"YUUUÀ­(À–XÀš0 YÀšLÀš8Àš0YÀšLÀš8!YUUUÀ­(ÀšH1AE111!YUUUÀ­(ÀšLÀš¼ÀšÀÀš¸ÀšÄÀšÈ Àš¼À­8ÀšÀÀš¸ÀšÄÀšÈ!YUUUÀ­(Àš¬ YÀš¬YUUUÀ­8YÀš¬!YUUUÀ­(À›P%YUUUÀ­(YÀ›P YÀ›P4 À­(À­(À­(]À›Ø]À›ØYÀ›PÀ›àYUUUpÀ­( pÀ›Ì YÀ›T YÀ›XX5AE]À›Ø]À›ØÀ›äÀ›ÌYÀ›ÈYÀ›TYÀ›XÀ›àYÀ›P5 E $ À­(À­8À­(UUU 1UUU YUUU) À­(À•TÀ•\À­8UUU1UUU À­8À•\À•$) À­(À•$À•,À­8UUU À­8À•,À•<) À­(À•<À•DÀ­8UUU À­8À•DÀ”Ô) À­(À”ÔÀ”ÜÀ­8UUU À­8À”ÜÀ”ô) À­(À”ôÀ”üÀ­8UUU À­8À”üÀ• ) À­(À• À•À­8UUU À­8À•YUUUX À­(À˜À–XÀ•T]À™HUUUYUUUUUUÀ˜´ YÀ˜ YÀ˜YUUU YUUUÀ˜´YÀ˜ 1À–X YÀ–XW À­(1À–XÀ–XYÀ–XUUUYUUUUUU 1À–X YÀ–X YÀ–X 1À™@À™@ YÀ™@W À­(1À™@À™@YÀ™@UUUYUUUUUU 1À™@ YÀ™@ YÀ™@ 1À™4À™4 YÀ™4€˜ À­(1À™4À™4]À–XÀ–X]À–XÀ–XYÀ™4UUUYUUUUUUYUUUUUU 1À™4 YÀ™4 YÀ™42 À­(]À–X]À–XÀ–XUUU À­(À–X 1UUUE ]À–X]À–X UÀ“Ä]UÀ­8]À­(-uUÀ“Ä]À–X]UÀ­8]À­(+UÀ“Ä]À–X]UÀ­8]À­(8 ]À–XuUÀ“Ä]À–X]UÀ­8]À­( À­( YÀ™@ YÀ™@ 1UUUÀ™0 YÀ™0 À­(YÀ™0 1À™01A1+ À™01UUUUUU À­(À–XÀ–X111 À­(À–XÀ–XÀ–X]À–XÀ–X 1UUUÀ™4 YÀ™4 À­(YÀ™4+ À™41UUUUUU À­(À–XYÀ™4 À­(À”ôÀ–XYÀ™4 À­(À•  À­(À”ÔÀ•  À­(À”ÔÀ• À–XÀ”Ì À­(À”ÌÀ–X À­(]À–X À­(]À–XÀ–X À­(]À–XÀ–XÀ–X YÀ–X À­(YÀ–X À­(YÀ–XÀ–XE À­(À–XUUUYUUUUUUÀ—4À–x2YuUÀ“Ä]À–X]UÀ­8]À­(À–€À–„À—À–ˆÀ–ŒÀ–œÀ–˜À– À–´À–¸À–¼À–ÄÀ–ÈÀ–àÀ–äÀ— 8 uUÀ“Ä]À–X]UÀ­8]À­(]À–X ]À–XÀ–X&À–XÀ–èÀ–XÀ–ÜÀ—4À–¬YÀ–XÀ–xYuUÀ“Ä]À–X]UÀ­8]À­(À–€YÀ™0YÀ™@À–„À•<À—À–ˆÀ•$À–XÀ–ŒÀ–œÀ•TYÀ™4À–˜À– À–´À–¸À”ôÀ”ÔÀ–¼À• À–ÄÀ”ÌÀ–È]À–XÀ–àÀ–äÀ–ìÀ— ÀšL YÀšL€ž À­(Àš0YÀšLÀšLÀš8YÀšLÀšLYÀšLUUUYUUUYÀšLUUUYUUUUUU 1ÀšL YÀšL YÀšLÀš8 1UUUÀšL À­(ÀšLÀš|À“˜ ]À•ØÀ™L ]À”¼Àšl]YÀšLÀ•Ø ]YÀšL+ ÀšL1UUUUUUjYÀ™@Àš|À–XÀ“˜]À•ØÀ™LÀ“ÀYÀ™8]À”¼À­8À™@Àšl]YÀšLYÀšLÀ•ØÀš¬ YÀšHÀšH YÀš¬ YÀšH; "À­(Àš¬Àš¼À­8YÀ™@ÀšÀÀ•TÀ–XÀš¸À­8YÀš¬Àš¬ÀšÄYÀšHÀ­8ÀšHÀšÈYÀšLÀ­8ÀšLUUUYUUUYÀš¬UUUYUUUYÀšHUUUYUUUYÀšLUUUYUUUUUU 1Àš¬ YÀš¬ YÀš¬ 1ÀšH YÀšH YÀšH À­8Àš¼ÀšÀÀš¸ÀšÄÀšÈW À­(YÀš¬Àš¬YÀš¬UUUYUUUUUUÀ›P YÀ›PW À­(YÀ›PÀ›PYÀ›PUUUYUUUUUU 1À›P YÀ›P YÀ›P pÀ­(YUUU>YUUUYUUUYUUU ]UUUE ]UUUÀ•ØÀ–°]UYYUUYYU]UYYU€À–ÌÀ“ÀYYUÀ­8À–ÐYÀ“ÀÀ–ØÀ–°À–X]UYYU]UYYUYU]UYYU]UYYUÀ–XA À–¬À–¬À–ÌÀ–ÐYÀ“ÀÀ“ÀÀ“À]€ÕÀ˜HÀ­8À­8 À–XE%À–¬À–¬À–ÌÀ–ÌÀ“ÀÀ“ÀÀ­8À–X YuuUYuAÀ–X] YuuUYu]uUYu$U]uUYu]1À­8UYuuUYuKU]uUYu]À­(AÀ–X]À–XÀ­8]À—8À–h ]](U]uUYu]]F À–X]À­8UYuuUYuÀ—8À–hFU]uUYu]]À­(AÀ–X]À–XE"]€À–XÀ­8]À­8À­8À–p)U]uUYu]]!]€À–XÀ­8]À­8À­8€À–XÀ­8]À­8À­8 À–XÀ­8u À­8]N]€À–XÀ­8]À­8À­8À–pYÀ–XÀ–X]À­8À­8YÀ­8À­8À­8UYuuUYu]€À–XÀ­8]À­8À­8]€À–XÀ­8]À­8À­8]€À–XÀ­8]À­8À­8]€À–XÀ­8]À­8À­8U]uUYu]]]€À–XÀ­8]À­8À­8DU]uUYu]]À­(AÀ–X]À–XÀ•à YÀ•Ø  À­(À­(] À›Ø] ]  uÀ–XÀ­8 Uu u À•Ø UÀ­8À–À–À•àYÀ“ÀÀ“À À•ØÀ–|*U]uUYu]] ]uUYu ]] YÀ•ØAÀ–X] )U]uUYu]] ]] 1u uU U u]  À•Ø À­8U 1À•Ø À•Ø;À–|À•ØÀ–XU]uUYu]] ]uUYu]] ]uUYuUYuYÀ­8À–¬À–X] ]UYYU]UYYUYUYUUU]UYYUÀ–°YÀ•ØÀ­8YÀ­8]À­8À­8À­85 ] YŒ0AÀ–X] AÀ–X] À–XÀ•äS À•äÀ•à]À­8À­8À­8À“ÄYÀ“ÀYÀ­8]À­8YÀ•ØÀ­8À­8 ] À•ØÀ­8€‡ ] À­8U]uUYu]] ]uUYu]uUYuUYuYÀ­8( ] AÀ–X] À•ØÀ–XÀ­8 YAYUÀ­8À­8À­8À­8‹Ì A À­8 À­8À­8YÀ­8YÀ­8À­8AYAYUÀ­8 ‹Ü uÀ­8À­8YuÀ™èÀ™ä YÀšUÀ•ØÀš ÀšÀ­8À™èÀ™äYÀš À­8À™Ü €Õ€¥]€¥ €¥ €¥€Õ€¥AAA€¥ AAAAAA€Õ€¥ u3u€Õ€¥YÀ“À À­8À­8/u€Õ€¥À“À À­8À­8U(U€Õ€¥YÀ“À À­8$U€Õ€¥À“À À­8À–lÀ™H U UYÀ“ÀÀ­8 ]À™HU UYÀ“ÀÀ­8 YUÀ˜À–X]À™HÀ­8À–lÀ˜´]À™HYÀ“ÀÀ™HU  UYÀ“ÀÀ­8YÀ“ÀYÀ“ÀÀ“ÀÀ“ÀÀ­8À˜´ YU€Õ€¥À™@Àš<À™”À™œ YÀ™Ø YUÀ™  YÀ™ÔÀ™¤À™°YuYU U YU] Àš<À™”À™œÀ­8YÀ™ØYUYUÀ™ YÀ™ÔÀ­8À™¤YÀšÀ™°HYuYU€Õ€¥Àš0À­8YÀ“ÀYUEJAÀšHYuYU€Õ€¥AAÀ™@YUYUÀ­8YU 1À­8YYU ÀšLUÀ­8YU1UÀ­8YU UÀ­8YUÀ­8# UÀ­8YUYU1YUUÀ­8YU4YUÀ­8YU1À­8YYUFUÀ­8YU€Õ€¥AAÀ™@YUYÀšL Àš¬U1YUAAÀ™@YUYÀš¬ Àš¬uYUJYuYU€Õ€¥AAÀ™@YUYÀš¬ U U UAA " UU!€Õ€¥YU €Õ€¥AAÀ™@YUYuYUuYUuYU €¥ YÀ›P À›PuYU uYUuYUuYU €Á€Õ€¥AAÀ™@YU€Õ€¥AAÀ™@YU€Õ€¥AAÀ™@YUYuYUuYUuYUYÀ›P A‹Ì A À­8 À­8À­8À­8 UAU AU À­8YU u  u À­8À­8Àš AAA AA €Õ€¥ YUÀ™@À™ØÀ™Ü YÀ™Ø: €Õ€¥YÀ™ØÀ™ØÀ“ÀÀ™ÜYÀ™ØU 1À™Ø YÀ™Ø YÀ™Ø 1U U YUÀ™Ô YÀ™Ô: €Õ€¥YÀ™ÔÀ™ÔÀ­8À“ÀYÀ™ÔU 1À™Ô YÀ™Ô YÀ™ÔÀš ]À“À YÀš> €Õ€¥YÀšÀšÀ­8]À“ÀYÀšU 1Àš YÀš ]À“À YÀš* €Õ€¥AAÀ™@YUU Àš0YÀšLÀ­8YÀ“ÀYUÀš8YÀšLÀ­8YUYU YuYUÀšH) €Õ€¥AAÀ™@YUÀštÀšhAAÀ™@YU À™@UkYÀ™@À™@Àšt]À“ÀÀ•ØÀ“ÀÀš|À“˜]À•ØÀ–XÀ™LYÀ™8]À”¼ÀšhÀšlYÀšL UÀ­8YUÀšL À­8UÀ­8YU# YUUÀ­8YU AAÀ™@YUÀš¼YÀ™@ YUÀš¬Àš´ YU ÀšHuYUnÀš´À­8YÀ“ÀÀ“ÀÀš¸YÀš¬YUYuYUÀšÄYÀšHÀšÈYÀšLÀ™Ü YuYUÀš¬* €Õ€¥AAÀ™@YUC À­8YÀ“ÀYÀš¬YUYuYU YuYUÀ›P  AYUÀ­8AU À­8À­( Œt AUAEUAEAYAE] AE]UÀ­8AE]YUÀ­8AE]Œx# UÀ­8AE]AE]YAE] AE]YUÀ­8AE]1UÀ­8AE]YUÀ­8AE]UÀ­8AE]Œ|AUÀ­8AE]E{ YAE]YAE]AE]UÀ­8AE]YUÀ­8AE]EUÀ­8AE]À­85)]À­(YUÀ­8AE]EYUÀ­8AE] 1]À­(À­8YUÀ­8AE]  Œ€ À­(À­84AYUÀ­8AE]]À­(À­8AYŒ0AÀšH]AYŒ0AÀ™@]Œ ŒpÀ­(}Œ”Œ¨N ŒpÀ­(}YŒ0AYŒ0AÀšH]AYŒ0AÀ™@]6AYŒ0AÀšH]AYŒ0AÀ™@])AÀš¬]ŒpÀ­(}YŒ0YUÀ­8AE]Œ¬ ŒpÀ­(}YŒ0 Àš¬UÀ­8AE] À›P#AYUÀ­8AE]]0YÀš¬À­8YŒ0YUÀ­8AE]%]ŒpÀ­(}YŒ0À›P ]À­(Œp! ]YŒ0]À–X]À“Ä ]À­(À­(]À­(À­(/]ŒpÀ­(YŒ0]À­(]À–XÀ–”, À–”À–XYŒ0Œ8]À“ÀÀ–ÐÀ“Ä4]ŒpYŒ0À–XYŒ0AÀ–X]EAYŒ0AÀ–X]-AÀ–XAYUÀ­8AE]]AÀ–X]Œ°Œ´ À–X5AÀ­8AÀ–XAYUÀ­8AE]]8€„ ŒpÀ­(}YŒ0À–XAYŒ0AÀ–X]AYŒ0AÀ™@]À­(AÀ–XAYUÀ­8AE]]AYŒ0AÀ–X]2 ]YŒ0AÀ–X]AÀ–X]À–X{AYŒ0AÀ–X]AYŒ0AÀ™@]À­(AÀ–XAYUÀ­8AE]]AÀ–X]À­8%]ŒpÀ­(}YŒ0À–X7AYŒ0AAUÀ•ØÀ­8]AÀšL]<Th ŒpÀ­(}YŒ0AUÀ•ØÀ­8]AYŒ0AAUÀ•ØÀ­8]AÀšL]8AYŒ0AAUÀ•ØÀ­8]AÀšL]XAYÀšL1UÀ­8AE]ŒpÀ­(}YŒ0AUÀ•ØÀ­8]Àšd€¶ ŒpÀ­(}Àš0YÀšLÀšYŒ0Àš8À™„YÀšLAUÀ•ØÀ­8]Àš<À™”À™°À•ØÀ­8UÀ­8AE]YUÀ­8AE]UÀ­8AE] UÀ­8AE] ÀšHN À­8Àš0YÀšLÀšYŒ0YUÀ­8AE]Àš8Àš<À™°À­8%]ŒpÀ­(}YŒ0ÀšHp À­(ÀšL7AAYUÀ­8AE]]À­(ÀšLÀšXÀš`)AAYUÀ­8AE]]ÀšdÀšpÀšxhltR ŒpAUÀ•ØÀ­8]AYŒ0AÀ–X]YŒ0À•ØÀ–XÀ­8 EÀ­8]x: ŒpAYŒ0AÀ–X]YŒ0À•ØÀ–XÀ­8 |$ AYŒ0AÀ™@]YŒ0 À™@UÀ­8AE] ]À•Ø„# ŒpÀ­(}YŒ0YÀšLUÀ•ØÀ­8AUÀ•ØÀ­8]€ãAYŒ0AÀ–X]AYŒ0AÀ™@]YŒ0ÀšXÀš`À•ØÀ–XÀ­8YUÀ­8AE]AAYUÀ­8AE]]Àš|ÀšdYÀ™@Àšl]YÀšL]]YÀšLYÀšLÀšpÀšx=]ŒpÀ­(}YŒ0AUÀ•ØÀ­8]ÀšLˆ˜2 ŒpÀ­(YŒ0AYŒ0AÀ–X]AYŒ0AÀ–X])AÀ™4]ŒpÀ­(}YŒ0AÀ™@]œ ]AÀ™@]À™@AÀ™@]%]ŒpÀ­(}YŒ0À™@AYŒ0AÀ›P]Œp Œp¤ AYŒ0AÀ›P] À›PUÀ­8AE] YÀ›PZ À­(}AYŒ0AÀ›P]ŒpÀ­(}À›àYÀ›PYUÀ­8AE]]À›ØŒp Œ0À–X Œ0Àš¬ Œ0À›P Œ0ÀšH Œ0ÀšL Œ0À™4 Œ0À™@eAŒ0E AŒ0AŒ0(À–X À–X À–X_ZMicrosoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+Expr@DebugTypeProxy(Àš¬ Àš¬ Àš¬a\Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+Module@DebugTypeProxy(À›P À›P À›PlgMicrosoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+ModuleOrNamespace@DebugTypeProxy(ÀšH ÀšH ÀšHc^Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+TypeDefn@DebugTypeProxy(ÀšL ÀšL ÀšLe`Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+MemberDefn@DebugTypeProxy(À™4 À™4 À™4faMicrosoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+MatchClause@DebugTypeProxy(À™@ À™@ À™@b]Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal+TraverseStep+Binding@DebugTypeProxy Œ8Œ< Œ<Œ@ Œ@ ŒDŒH ŒHŒL ŒLŒP ŒP ]À•ØÀ­8& ]AÀ–X]À•ØÀ–XÀ­8 ]AÀš¬]Àš¬ ]AÀ™4]À™4% ]ÀšÀ™„À•ØYÀšLÀ­8 A ŒtA EŒx AE]UÀ­8AE]]AE]À­8AE]À­8' ]AE]UÀ­8AE] U À­8AE]# AE]UÀ­8AE] Œ€ ! ]YUÀ­8AE]Œˆ À­(Œ„Œ„Œˆ ŒŒ À­(Œ„Œˆ2AÀ­8AAYUÀ­8AE]]Œˆ ŒŒ#AYUÀ­8AE]] Œ„Œˆ( ]À­8YUÀ­8AE]Œ ]YŒ0ÀšHŒ” ]YŒ0À™@Œ˜ Àš¬À­8] UÀ­8AE]Àš¬AYŒ0AÀ™@]ŒœAYŒ0AÀ™@] À™@À­8] UÀ­8AE]À™@AYŒ0AÀšH]Œ $ AYŒ0AÀšH]YŒ0AYŒ0AÀšH] ÀšHÀ­8] UÀ­8AE]ÀšH-AÀš¬AYUÀ­8AE]]Œ¤ ŒpÀ­(}YŒ0AYŒ0AÀšH]AYŒ0AÀ™@]Àš¬AÀš¬AYUÀ­8AE]]YUÀ­8AE]ÀšØ Àš¬UÀ­8AE],AÀš¬AYUÀ­8AE]] À™@UÀ­8AE] ÀšHUÀ­8AE]V YŒ0Àš¸YÀš¬YUÀ­8AE]Àš¼YÀ™@ÀšÀÀšÄYÀšHÀšØ ]Àš¬Œ¨AÀš¬] Àš¬5AÀ­8AÀš¬AYUÀ­8AE]]ŒpBAÀš¬AYUÀ­8AE]]AÀš¬]À­8Œ¬Œ° ]YŒ0À–XŒ´AÀ–X]Œ¸ AÀ–X] À–XÀ­8] UÀ­8AE]À–XŒ¼ŒÀE ŒpÀ­(À­(YŒ0AÀ–X]]UÀ­8]À­(À­8 ]À–XŒÄ$ ŒpÀ­(YŒ0À­8]À­( ]EŒÈ1 ŒpÀ­(YŒ0]UÀ­8]À­(À­8 UÀ­8AE]]UÀ­8]À­(UÀ­8]À­( EÀ­8]&]UÀ­8]À­(À­8]À­( 1UÀ­8AE]EŒÌ ŒpÀ­(YŒ0À­8À–XŒÐUÀ–XUÀ­8]À­(" À–XUÀ–XUÀ­8]À­(ŒØ ŒpÀ­(À“ÄuYŒ0]À–X]À“ÄYŒ0]À–X]À“Ä% ]uYŒ0]À–X]À“ÄŒÜO ŒpÀ­(À­(YŒ0AÀ–X]]À–X]UÀ­8]À­(À–XŒà) ŒpÀ­(YŒ0]À–X]À­(Œä6 ŒpÀ­(YŒ0]À–X]UÀ­8]À­(4]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8Œè€Š ŒpÀ­(À­(YŒ0AÀ–X]]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]À–X]UÀ­8]À­(À“Ä]À–X3]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8/€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8IÀ­8]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]À–XÀ–XŒìf ŒpÀ­(À­(YŒ0AÀ–X]]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]À–X UÀ“Ä* uYŒ0]À–X]À“ÄÀ­8]&]UÀ­8]À­(À“Ä]À–XH 1UÀ­8AE]uUÀ“Ä]À–X]UÀ­8]À­( ]UÀ–XUÀ­8]À­(Œð€­ ŒpÀ­(À­(YŒ0AÀ–X]]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8YuUÀ“Ä]À–X]UÀ­8]À­(]UÀ–XUÀ­8]À­(" UÀ–XUÀ­8]À­(À–X11uUÀ“Ä]À–X]UÀ­8]À­(] uUÀ“Ä]À–X]UÀ­8]À­(1UÀ­8AE]UÀ­8AE]Œô]UÀ–XUÀ­8]À­(+]UÀ–XUÀ­8]À­(À­8À–XŒøU]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ­8]À­(À­8À–XŒü Œp À•ØÀ™0]UÀ–X]À“ÀÀ™0 YÀ™0UÀ­8AE]€Ì AYŒ0AÀ™@]YŒ0AÀ–X]À•ØYÀ™0YÀ™@]UÀ–X]À“À]UÀ–X]À“ÀÀ–XÀ–XÀ™@À™0YÀ™@À™@YÀ™@YÀ™0YÀ™@UÀ­8AE]]UÀ–X]À“ÀUÀ–X]À“À YÀ™0 YÀ™0]UÀ–X]À“À 1UÀ­8AE] UÀ­8AE] YUÀ­8AE] À™4À­8] UÀ­8AE]À™4 M ŒpÀ­(}YŒ0AÀ–X]YÀ™4À–XUÀ­8AE] À™4UÀ­8AE]1UÀ­8AE]YUÀ­8AE]€† AYŒ0AÀ™@]YŒ0AÀ–X]À–XYÀ™@UÀ­8AE]YUÀ­8AE]UÀ­8AE]YUÀ­8AE] YUÀ­8AE] $I AÀ–X]]À–XÀ–XÀ–X]À–XÀ–XUÀ­8AE](,6 AÀ–X]YÀ–XÀ–XUÀ­8AE] À–XUÀ­8AE]04j AÀ–X]YÀ–XÀ–XÀ–XUÀ­8AE]YUÀ­8AE]UÀ­8AE]AYŒ0AÀ–X]-AÀ–XAYUÀ­8AE]]8À–dÀ–tÀ–À–¤À–¨À–ÀÀ–ðÀ–ôÀ–øÀ–üÀ—À—À— À—À—À—$AYŒ0AÀ–X]YUÀ­8AE],AÀ–XAYUÀ­8AE]] À™0À•Ø]A]1 À•Ø‚AYŒ0AÀ–X]À–`À–dÀ–XYUÀ­8AE]À–lÀ–pYÀ–XÀ–tÀ–x]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8YuUÀ“Ä]À–X]UÀ­8]À­(]UÀ–XUÀ­8]À­(À–|À–€À•ØYÀ™0YÀ™@]UÀ–X]À“À]]UÀ–X]À“ÀÀ–„À–XÀ–ˆÀ–XÀ–ŒÀ–À–˜À–œYÀ™4À– À–¤À–¨À–¬À–°À–´À–¸À–¼À–ÀÀ–ÄÀ–È]À–X]À–XÀ–ÔÀ–ØÀ–ÜÀ–àÀ–äÀ—À–èÀ–ìÀ–ðÀ–ôÀ–øÀ–üÀ—À—À— À—À—À— À—$À—<À—@<, ]YŒ0AUÀ•ØÀ­8]ÀšL ]UÀ•ØÀ­8H$ ŒpÀ­(}YŒ0ÀšLÀšL@D]AUÀ•ØÀ­8]7AYŒ0AAUÀ•ØÀ­8]AÀšL]L 1ÀšLUÀ­81ÀšL ÀšL YÀšL]UÀ­8AE]#AYŒ0AUÀ•ØÀ­8] AÀšL] ÀšLÀ­8]oÀ­81ÀšLYÀšLYÀšLYÀšLÀšXÀ˜´]À“ÀÀšXÀ˜´]À“ÀÀšLÀšLÀ“ÄÀ“ÄÀ“ÀÀ“À- ]UÀ­8AE]UÀ­81ÀšL À­8ÀšLT!1U1A1 ÀšLÀ­81A]1) UÀ­81ÀšLUÀ­8AE]$ 1UÀ­8AE]YÀšLX ŒpÀ•ØÀ­8 ]Àš0À™„\ ŒpÀšÀ™„YÀšL À•ØÀ­8d Àš0À­8]`À­8À™°Àš<Àš8Àš8Àš<À™°À­8hlp & AYUÀ­8AE]]tx|„€ˆŒ$ AYŒ0AÀ–X]YŒ0 ]À–XÀ–X]À–XÀ–X 1À–X YÀ–X”+ À­(AYŒ0AÀ–X]YŒ0 À™42]À–XÀ–XYUÀ­8AE]]À–X ]À™4˜AÀ™4]YŒ0AÀ™4]œ ]À™@  ]YŒ0À›PAYŒ0AÀ›P]¤AYŒ0AÀ›P] À›PÀ­8] UÀ­8AE]À›PÀœL À}¤À}¨À}¬ÀœLÀ}¤À}¨À}¬ÀœLÀ}œÀœLÀœL YUÀœ, UÀœ,1UÀœ,YUÀœ, UÀœ,%YUÀœ,EUÀœ,5  €ü À­(1UÀœ,YUÀœ,À­8Àœ,UÀœ,À­8 YUÀœ,À­8Àœ,$€á€üÀ­(YUÀœ,À­8 !€€ü À­(YUÀœ,À­8ÀœXÀœ€Àœ@Àœ\ÀœhÀœlÀœpÀœtÀœxÀœ|Àœ`Àœd €€ü À­(YUÀœ,À­81UÀœ,À­8€€ü À­(YUÀœ,À­8YUÀœ,À­8ÀœXÀ­8Àœ€Àœ@Àœ\ÀœhÀœlÀœpÀœtÀœxÀœ|Àœ`Àœd€üÀ­(  ÀœL"€á€üÀ­(YUÀœ,À­8?€á€üÀ­(YUÀœ,À­8€üÀ­(YUÀœ,À­8 UÀœL À}TÀ}TYUÀœ,À­8ÀœTVÀœ€ÀœTYUÀœ,À­8ÀœXÀ­8Àœ\ÀœhÀœlÀœpÀœtÀœxÀœ|Àœ`ÀœdÀ}œÀœLÀ}TX À}œÀ­8u€ì€ô€ðÀ}œÀ~XÀ~l À~XÀ~lEEa€ð€ð €ø€øEa€ì€ì€ô€ô €ð€ð€ì€ì€ô€ô €ø€øE€øE €øETT]] UEÀ~PÀ~hÀ~dÀ~`À~\À~TÀ~LÀ~HÀ}è]UAÀ}œ]À}œ AÀ}œ ]À}œ]UAÀ}œ]À}œUAÀ}œ]À}œ ]À}œAAÀ}œ À}œ€µ!UuÀ}œÀ}œUÀ}¤À­8ÀœLÀ}¨À}¬À~lÀ}œÀ~PÀ~hÀ~dÀ~`À~\À~XÀ~TÀ~LÀ~HÀ}è]UAÀ}œ]À}œAÀ}œ]À}œ]À}œUuÀ}œÀ}TÀœL]€© E€© AÀ}œAÀ}œ =uÀ}œ À}œ EuÀ}œ ÀœL EAuÀ}œE ÀœL UŽXð ð €™ð€™ð€•ŽŽ8€•ŽAEŽ8 ]AE ]AEŽX]AE]AEŽ8ŽX€•ŽŽ8ŽDŽHðE ð €™ðE ŽXŽDŽHŽ8ŽX€™ðEŽ8Ž8 Ž8ŽHŽ8AEE€™ðEŽ8]€™ðE €™ðE]€™ðE@ŽXAE]€™ðEŽDŽ8]€™ðE€™ðEŽ@ Ž@AEŽD€™ðEŽHŽ8€•Ž€™ðEŽ8Žx ŽX€•ŽŽ8ŽXŽX€‘ŽX€•ŽŽ8ŽXŽXøü ð ðeAðE Að Aðøü øü9 ðøøüüðð2 øøüüðð ðc^Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ResultOrException`1+Result@DebugTypeProxy( faMicrosoft.FSharp.Compiler.SourceCodeServices.Reactor+ResultOrException`1+Exception@DebugTypeProxyŽ øŽ üŽŽ ŽAEŽŽAEE€™ðE ŽAEEŽ€™ðEeAŽE AŽAŽc^Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorCommands+StartBuild@DebugTypeProxy (AEE(€™ðE AEE AEE€™ðE AEE €™ðE_ZMicrosoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorCommands+SyncOp@DebugTypeProxy AEE`[Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorCommands+AsyncOp@DebugTypeProxy €™ðEb]Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorCommands+StopBuild@DebugTypeProxyd_Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorCommands+FinishBuild@DebugTypeProxyŽ ŽŽ ŽŽ ŽŽ ŽŽ  Ž Ž8Ž8 Ž8AEŽ8AE€™ðEŽ8eAŽ8E AŽ8AŽ8faMicrosoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorState+ActivelyBuilding@DebugTypeProxy AE€™ðEd_Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorState+FinishingBuild@DebugTypeProxye`Microsoft.FSharp.Compiler.SourceCodeServices.Reactor+ReactorState+BackgroundError@DebugTypeProxy Ž@ ŽD ŽH¡ €•Ž"€•A€•€‘E]ƒ%ðEüE0A€™] ðEüEøEðEüE €Õ] €Õ]Žl AE€Õ] €Õ] 0AE À®4 À®4Žp AEÀ®4 €‘À®4AEE0€‘AE ŽX€•Ž0€‘€•Ž €‘E€•Ž Ž€™ðE AE €Õ]Žl] €Õ] À®4Žp À® À® À® À®4 À®À®4À®Žt< ŽAEŽAEE€™ðEŽ€•ŽŽXŽ8ŽŽ €‘ŽŽx €‘]0€‘€‘A€‘ Ž €‘E Ž„Ž$€Ä€YYUÀs<˜„ Ž„ŽŽ„Ž YŽ$€Ä€YYUÀs<˜„€YY]UÀs<˜„ –Ø€YY"€Ä€YYUÀs<˜„]UÀs<˜„€Às<˜„Y–ØY–´€€uY–ØY–ØY–´Y–´Y–ØY–ØYUÀs<˜„Y€YY]UÀs<˜„˜xUÀs<˜„˜„Às< €Às<˜„Y–ØY–´–Ü <AuAuAEAAÀ¬¨]Ž„  ]ƒ) AA&ƒ)AAY]]ŽŽŽŽŽeAŽE AŽAŽŽ˜Žœ Ž˜Ž˜aŽœŽœŽŽŽ Ž ŽŽ˜Ž˜ŽœŽœŽŽŽ Ž˜ŽœŽ Ž˜Ž˜ŽœŽœŽŽŽ ŽVQMicrosoft.FSharp.Compiler.IncrementalFSharpBuild+IBEvent+IBEParsed@DebugTypeProxy[VMicrosoft.FSharp.Compiler.IncrementalFSharpBuild+IBEvent+IBETypechecked@DebugTypeProxyVQMicrosoft.FSharp.Compiler.IncrementalFSharpBuild+IBEvent+_IBENuked@DebugTypeProxy Ž˜ ŽœŽ  Ž   a ްް ްްAAA eAAAEu AAA AAA ް AA AA A AAA AA AA(šP(˜„(Às<(ª@ (]¶L (YÀyT(YUÀ¬¨]¶L šP ˜„ Às< –Ü ª@ ]¶L YÀyT YUÀ¬¨2 šP˜„Às<–ܪ@]¶LYÀyTYUÀ¬¨&U€YY€YY< €YY€YYYYYY) U€YY€YY –Ø =À¬¨ =À¬¨ –ÜÀ¬´ À¬¨UÀ¬¨ UÀ¬¨À¬¨ À¬´À¬ (‚åƒ- (Yްƒ1]˜„Yް‘Œ€Às<˜„Y–ØY–´YUÀ­8YuÀ­8YuÀ­8€¡ŽÌŽØ’€LuÀ­8LuÀ­8€¡(L€]À›ØÀ­8YUÀ¬¨ HŽÀ LŽÀ$H€‰šP¶LÀyXª@˜„Às<–ÜYuYƒ1 UÀ­8 UÀ­8 UÀ­8uÀ­8 uÀ­8€¡ uÀ­8/ uÀ­8€]À›ØÀ­8YUÀ¬¨ uÀ­8€¡ŽÀ' ŽÀ€]À›ØÀ­8YUÀ¬¨# ŽÀ€‰šP¶LÀyXª@˜„Às<–Ü$ €]À›ØÀ­8YUÀ¬¨ ŽÀ €‰šP¶LÀyXª@˜„Às<–Ü –´ ް –Øް uÀ­8ް YYް 1Yް ްYuÀ­8 uÀ­8 uYYuÀ­8€¡ uÀ­8€¡YuY YU6€Às<˜„Y–ØY–´YUÀ­8YuÀ­8YuÀ­8€¡ŽÌŽØYuÀ­8€¡€¡5’€LuÀ­8LuÀ­8€¡LuÀ­8L€]À›ØÀ­8YUÀ¬¨LuÀ­8€¡HŽÀLŽÀH€‰šP¶LÀyXª@˜„Às<–ÜYްYްYްYuYYU –ÜÀœ¸À}PYÀ¬´ 5 ‚åƒ- ‚åƒ- Yް]˜„ Y€¨€…]˜„]˜„˜„]‘ŒA‘Œ ]‘Œ]‘Œ]‘Œ]‘Œ‘Œ]UŽÀ€¡]UŽÀ€¡ UŽÀ€¡=]UŽÀ€¡]UŽÀ€¡€¡šP˜„Às<–ÜYUÀ¬¨+ ]€šP˜„Às<–ÜYUÀ¬¨€¡*]U€‰šP¶LÀyXª@˜„Às<–Ü€¡)]U€‰šP¶LÀyXª@˜„Às<–Ü€¡%U€‰šP¶LÀyXª@˜„Às<–Ü€¡W‘Œ]U€‰šP¶LÀyXª@˜„Às<–Ü€¡]U€‰šP¶LÀyXª@˜„Às<–Ü€¡ €‰šP¶LÀyXª@˜„Às<–Ü uÀ­8 À­8À­8 |]ìÔ €¥|ì]ì |]ì]ìÔ]Uu]À›ØÀ­8€¡ u]À›ØÀ­8]Uu]À›ØÀ­8€¡Uu]À›ØÀ­8€¡A]Uu]À›ØÀ­8€¡‘Œ]Uu]À›ØÀ­8€¡ u]À›ØÀ­8]UY–Ø Y–°]UY–ØY–°1–°Y–°i€èUŽàY€äÀ}P–¼–¼E]š,š,Y–°]UY–ØY–°–°5u]–ÜÀœ¸À¬´$UŽàY€ä]š,YY]˜„]˜„˜„5 ˜„ €¡À­8#€]À›ØÀ­8YUÀ¬¨"€]À›ØÀ­8YUÀ¬¨PŽÌŽØ€]À›ØÀ­8YUÀ¬¨€]À›ØÀ­8YUÀ¬¨5+ €]À›ØÀ­8YUÀ¬¨À­8ŽÌŽØ€¡€¡€¡5 0€¡€¡ŽÀ YÀv8 YÀv8 1Àv8 YÀv8 YÀyT5 ŽÌŽØŽÀ˜„˜„˜„YÀv8YÀv8EÀv85ª@0ŽÀ ÀÀøŽÀ ÀÀøŽÀ ÀÀø4 ]À›ØÀ›ØŽÌÀ¬´ŽÀÀÀøŽÀŽØÀÀøŽÀ5*0ÀÀøŽÀŽÀ]À›ØYUÀ¬¨Yuª@¶LYÀyTUuª@¶LYÀyTšP UšPÀyX ŽÀuª@¶LYÀyT ÀyT UšPÀyXTŽÀYuª@¶LYÀyTUuª@¶LYÀyTšP¶LšPª@YÀyTUšPÀyX$ €‰šP¶LÀyXª@˜„Às<–ÜŽÀ UÀ­8 À­8 uÀ­8 AuÀ­8UÀ­8 UÀ­8 Y–ØuÀ­8€¡% ŽàŽÌ–Ø€¡Y–ØuÀ­8€¡Žô1–ØY–Ø uÀ­8€¡ Y–Ø Žô€¡–° 1uÀ­8€¡ uÀ­8€¡€¡ YuÀ­8€¡ À­8 €¡uÀ­8/ €]À›ØÀ­8YUÀ¬¨uÀ­8 À­8€¡ €¡uÀ­8€¡ uÀ­8€¡ ŽÀuÀ­8€¡]À›ØÀ­8YUÀ¬¨1 ÀÀøŽÀŽÀ€]À›ØÀ­8YUÀ¬¨ ް –´ ް–Ø ްuÀ­8 uÀ­8 uÀ­8€¡˜\ Y˜\ €¨€…Y€¨€…/ ˜„˜\Y˜\€¨€…Y€¨€…€¨€…1˜\Y˜\ 1€¨€… Y€¨€… Y€¨€… Y˜\ 1€¨€… Y€¨€… 8 u u 8 Auu –° Y–Ø UY–ØK –¼š,–°]UY–Ø]UY–ØY–Ø–ØY–°Y–Ø–° UY–Ø Y–°–°]UY–Ø 1–° –°]UY–Ø Y–° À¬¨A ŽàŽÌŽÀuª@¶LYÀyT]¶L0uª@¶LYÀyTšPYÀyT¶Lª@YÀyT& ÀÀøŽÀUuª@¶LYÀyTšP ŽàÀ›ØŽÌÀ¬´ŽÀ Uuª@¶LYÀyTšPŽÀ ÀÀøŽÀE ŽàÀ¬´ŽØÀÀøŽÀ5 ÀÀøŽÀAEÀÀøŽÀ ¶L uª@¶LYÀyTŽÀ€ÕAA‘Œ]‘Œ€Õ|¬ €¸ A ¬ €¸A A ŒŒ €€A A€A Al A A U  AAY   A AA AhA A PU hYPEA A€¥|€¥|h €¥| | €¥|+A A€¥|€¥|h€¥| hYP A|„A | A|„|äA€¡AU €¡ìø]ì]ììøÔ ]‘Œ   ] U    ‘ŒA A] ] ] A A] ] ¨] °´] ! ¨|¬ €] °´¸] | ˆˆ|Œ €€] |€,(,(] | Y]  U ] Y] |Y] Y]    ‘Œ|  ,  ‘Œ| A€Aì"eA€AìEU€ì A€Aì A€ì/ ]ì]ìì €ìA€Aì€  ‘Œ€A Aì]Ô"eA AìEU ì A Aì A ì,]ì]ììÔ ìA Aì]Ô‘Œ   ‘Œ ô]ì]ììøô €¡‘Œ| |‘Œ| ‘Ð A )AYAU YA AYAU Y eYU  U YAYAU YYA Ô|]ì]ììøYA ‘Œ  Y‘Œ  Uì 쀥|ìˆ|Œ€7€¥|ìYuYYU€¡€€¥|ì uY uYì¨|¬ €¸7€¥|ìYuYYU€¡ €¥|ì"A A€¥|쀥|ì €¥|ì |ì  €¥|ìM€¡YuYYU€¡A A€¥|쀥|쀥|ì!‘ŒhYuYYU €í|€í|||| ‘Œ|| A‘\' |]]]ì]ììøÔ‘ŒA‘\A  ‘Œ €AAÀÀø A]A A€¡A° AE’7 ‘ŒA‘\A  |AAÀÀø€ ’& ‘ŒA‘\A  |A’ ( ‘ŒA‘\A  |A€¡w¬ |AAÀÀø€]]A]]°A€¡€¡´A€¡¸A °|AE%‘ŒA‘\A€í| A]ÔAEJŒ |A]Ô]ÔÔ|€¡AE€A °€¡€%‘ŒA‘\A€í|€ €í|A‘\A’0 ‘ŒA‘\A€í|35AE€í|‘ŒA‘\A€í|5‘ŒA‘\A‘‘‘A€¥ A€¥  €¥ ‘ ÀÀø ÀÁ ÀÁ   €¥ ÀÁAEÀÀøÀÁ€—5AE‘Œ‘|]ì]ììøÔÔ€¥|ìì‘€¡|‘A€¥ A€¥ €¥ Y‘ ÀÀø ÀÁÀÁ5 ‘Œ‘‘Œ ‘Œ‘Œ‘ŒA‘\A‘Œ‘Œ‘ŒA‘\A‘Œ‘Œ35AE‘ŒA‘\A‘Œ‘ŒA‘\A‘Œ‘Œ5 ‘Œ‘ŒAA‘Œ]‘Œ’TAAYYY‘\ ‘\Y‘\ Y‘\5AEY‘\5Y‘\‘ŒE]U€¡]u€¡|]u€¡| u€¡| U€¡ ]U€¡_5AE]U€¡ (€|]ì]ììô ]u€¡|]u€¡|€¡5]U€¡‘Œ’d ‘Œ- , ]u€¡|]u€¡|€¡]U€¡‘Œ ’h AA/A]AU ]AAA]AU ]AAAÔ ì U ]&eAAAÔEuÔ AAAÔ’t AAAÔ ÔeAE AD  |ìøÔ]A]AU ]AAAÔ‘ŒAA’x    L’| €€ H|eA|E A|A| ||a | |||| |||||| || A€| A€ €|€| A€|€AeA€E A€ A€| A€ˆAAŒ€(| | |ZUMicrosoft.FSharp.Compiler.IncrementalBuild+ScalarBuildRule+ScalarInput@DebugTypeProxy(  (A | A   A`[Microsoft.FSharp.Compiler.IncrementalBuild+ScalarBuildRule+ScalarDemultiplex@DebugTypeProxy(€(A |€A € AXSMicrosoft.FSharp.Compiler.IncrementalBuild+ScalarBuildRule+ScalarMap@DebugTypeProxy ˆ Œ  A | A   |! |€ AAÀÀø | A | A€¡ |€AeA E A  A | A ¨AA¬°´¸ZUMicrosoft.FSharp.Compiler.IncrementalBuild+VectorBuildRule+VectorInput@DebugTypeProxy(AAÀÀø |€ AAÀÀø AAÀÀø]XMicrosoft.FSharp.Compiler.IncrementalBuild+VectorBuildRule+VectorScanLeft@DebugTypeProxy | AXSMicrosoft.FSharp.Compiler.IncrementalBuild+VectorBuildRule+VectorMap@DebugTypeProxy (A€¡ | A€¡ A€¡ZUMicrosoft.FSharp.Compiler.IncrementalBuild+VectorBuildRule+VectorStamp@DebugTypeProxy (A |€A A^YMicrosoft.FSharp.Compiler.IncrementalBuild+VectorBuildRule+VectorMultiplex@DebugTypeProxy ¨ ¬ ° ´ ¸ |€ € AA A |    A | A  €   eA E A  A | A \WMicrosoft.FSharp.Compiler.IncrementalBuild+BuildRuleExpr+ScalarBuildRule@DebugTypeProxy\WMicrosoft.FSharp.Compiler.IncrementalBuild+BuildRuleExpr+VectorBuildRule@DebugTypeProxy ( ,, (€ |   PD P@PPeAPE APAP(DD D D\WMicrosoft.FSharp.Compiler.IncrementalBuild+NamedOutput+NamedVectorOutput@DebugTypeProxy(@@ @ @\WMicrosoft.FSharp.Compiler.IncrementalBuild+NamedOutput+NamedScalarOutput@DebugTypeProxyX X\ \(YU YU  YU  YU A Al  U  U \@XD U P]| €¥|]|!€¥||]|]|| €¥| €¥|| |||€¡|eA|E A|ˆŒ |„„ˆˆŒŒ | |„„ˆˆŒŒ „ˆŒeA|E| |(|| | |e`Microsoft.FSharp.Compiler.IncrementalBuild+InputSignature+SingleMappedVectorInput@DebugTypeProxy €¡c^Microsoft.FSharp.Compiler.IncrementalBuild+InputSignature+EmptyTimeStampedInput@DebugTypeProxya\Microsoft.FSharp.Compiler.IncrementalBuild+InputSignature+IndexedValueElement@DebugTypeProxy „ ˆ Œ  A  A €¡ A |  AEÀÀø€¡  €¡| eA E A A  A  A €¡ A |¬¬ ÀÀø°|€¡  ]u€¡|AA€¡eAA€¡EU€¡ AA€¡A€¡°€¡AA€¡ SNMicrosoft.FSharp.Compiler.IncrementalBuild+Result+_NotAvailable@DebugTypeProxy(AEÀÀøAEÀÀø AEÀÀø€¡ AEÀÀøPKMicrosoft.FSharp.Compiler.IncrementalBuild+Result+InProgress@DebugTypeProxy(| €¡| |OJMicrosoft.FSharp.Compiler.IncrementalBuild+Result+Available@DebugTypeProxy¨ ¨ ¬ °   €¡  |  A€¡ A€¡ €¡ AA€¡ A€¡ A€¡eYU eAE YU  €¡€¥ Ô  "€¥AA€¥ Ô €¥  Ô  U €¡ YU Y| U |YU Y| U 0AAU ] ]  ]  ÔU  U  U  YU E   U   €¡ €¡€¡U   |U ì ìÔìeAìE AìøÔô (     UPMicrosoft.FSharp.Compiler.IncrementalBuild+ResultSet+ScalarResult@DebugTypeProxy(Ô ÔUPMicrosoft.FSharp.Compiler.IncrementalBuild+ResultSet+VectorResult@DebugTypeProxy ô ø‘|ÀÀø€¡‘|€¡|‘|€¡| ‘|eA‘E A‘A‘AAAA€¡AA€¡A|+eAAAA€¡E€€¡ AAAA€¡ €¡(eAA€¡A|Eu€¡| AA€¡A|A€¡ |O ‘ |€¡AAAA€¡‘|AA€¡A|‘‘AA (ÀÀø |ÀÀø€¡YTMicrosoft.FSharp.Compiler.IncrementalBuild+ActionResult+IndexedResult@DebugTypeProxy |€¡|^YMicrosoft.FSharp.Compiler.IncrementalBuild+ActionResult+ScalarValuedResult@DebugTypeProxy( |€¡| ^YMicrosoft.FSharp.Compiler.IncrementalBuild+ActionResult+VectorValuedResult@DebugTypeProxy |XSMicrosoft.FSharp.Compiler.IncrementalBuild+ActionResult+ResizeResult@DebugTypeProxy ‘  ‘ ‘ ‘AA€¡ AA€¡ A€¡AAA€¡ AAA€¡AA€¡ AA€¡ AAAA€¡AAA€¡ AAA€¡ A| A| |A€¡A| A€¡A| A| A|€¡ AA€¡A|A€¡A| A€¡A|‘\|€¡AEÀÀø‘\|€¡|AE‘\|€¡|AE ‘\|eA‘\E A‘\A‘\‘d‘h‘l‘p ÀÀø 7 ‘d€¡|AEÀÀø‘h|AE‘lAE‘p‘‘\ |€¡AEÀÀøSNMicrosoft.FSharp.Compiler.IncrementalBuild+Action+IndexedAction@DebugTypeProxy (AE |€¡|AE AERMMicrosoft.FSharp.Compiler.IncrementalBuild+Action+ScalarAction@DebugTypeProxy (AE |€¡|AE AERMMicrosoft.FSharp.Compiler.IncrementalBuild+Action+VectorAction@DebugTypeProxyXSMicrosoft.FSharp.Compiler.IncrementalBuild+Action+ResizeResultAction@DebugTypeProxy ‘d ‘h ‘l ‘p ‘ˆ UYU U(h (€¥|ì h€¥|ì h €¥|ìAAE€¥  QAA Q QAA E|ì U  ]  ] ]  | ] U Aì Aì ì A€Aì Aì Aì€ A Aì Aì  A  ‘Ð U  A   YYU  €¥|ì쀥|ì ìU U U Y U €¥YUYYU  ìuY Y uY YuYYU€¡ €¥|ì €¥|ì AAÀÀø ÀÀøEA‘\A’]AEÀÀø]AEÀÀø A‘\W  °°€¡€¡||€¡ €¡]AEÀÀø]AEÀÀøAEÀÀø ] E ‘Œ AÀÀø’€¡€¡AEÀÀø ’ A€¡ °€¡€¡ AA ‘Œ AA E A’0 €¡| €¥ €¥ ‘‘ ‘Œ‘\‘Œ YY‘\1 5AE]‘ŒY‘\5]‘ŒY‘\‘\‘5 ]‘Œ‘Œ AA ’hA  ° ]]U  AÔ AÔ ÔAAÔ AAÔ AÔ AÔAAAÔ’tAAÔ AAÔ’x’|YPYP @@ 0H DD 0L ‘ŒYuYYU ’ˆ AAA ’Œ  LAL ’ AAÀÀø,AAÀÀøAAÀÀø ’” €  .LAAÀÀøHL ’˜ AAA’œ €HAL ’  A€¡A€¡A€¡ ’¤LA€¡L’¨ HL A ’ˆA ’ŒAAÀÀø ’  A ÀÀø ÀÀø’” A ’˜ AA ’œ A€¡ ’  A€¡ €¡’¤  ’°’´€€HAH ’¸ AAA’¼€ LAH ’°’´ A ’¸ A  ’¼ƒ5ƒ5 AAƒ9  AAƒ9 ‚  AAƒ9 ‚  AE AA A Y 1 Y Yƒ5AA‘Œ]‘Œ Ž„Ž#€Ä€YYUÀs<˜„ AAAA AAAAAAA AAAAAAAA AAAAAAAAA AAAA AAAAAA" AAAAAAAAAAA AAAAA%AAAAAAA' AAAAAAA!AAAAAA" AAAAAA, AAAAAAAA&AAAAAAA' AAAAAAA €è]€ä€Ü€Ü“ ›,€Õ]U  €Õ]A A§8§8–¼š¬š¬ –¼š¬§8š¬U UUU –¼E–¼ š¬]–¼]š¬A]E€©EEAE€©EEAE€©EEAÀ¿èE€©EEeA]E€©EE] A]E A]EeAE€©EE AEeAE€©EE AEeAÀ¿èE€©EEÀ¿è AÀ¿èE AÀ¿èEuA]E€©EEAE€©EEAE€©EEAÀ¿èE€©EEAE€©EEYAEY›, Y›,–¼›,–¼]] ›,–¼ ›,AE AE›,Y›, Y›,›,1›,Y›,#YY›,Y›,E›,5Y €Á–¼ ]Y€Á Y›, –¼ YY›, 1Y›,Y›0 Y›0–¼ A›, ›0›0 A›, ‚é‚ñ‚ñE€©,Àd5 –ÜÀyX€Õ]U  €Õ]]AAE]]–Ü]E ]U A A AEAAAAE€Õ]U  €Õ] ]U U $eA A AE€©EEu  A A AEA  E+eAAAAE€©EE€ AAAAE EZ ‚ƒ9]U ]]U ] A A AEAAAAEE ]e§e]e§ ]e§]e§]e§§@Às<§@˜\Y˜\ ˜\§@ Y˜\ §@˜„Às<&UYUÀyTe§u§@§@§@YUÀyTe§UYÀyTYe§ Ye§ u§@§@§@$ u§@§@§@ÀyTUÀyTe§%UYUÀyTe§u§@§@§@ ÀyTe§UYÀyTYe§ 1e§ YÀyTUYUÀyTe§u§@§@§@YUÀyTe§§@UYÀyTYe§YÀyTYe§e§ÀyXg uÀyXe§§@–ÜÀs<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ`§@Àv8ÀyX¢ÜYÀv8K¢Ü–ܘ„Às<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀv8œ œ˜ ]YÀvp œ œ˜–€–€ ¢Äœ˜–ܶLÀyX¢ÜAÀµÌÀµÌ˜„–€E AEE]Uƒuƒuƒuƒu Uƒuƒu]Uƒuƒuƒu*]Uƒuƒu]UƒuƒuƒuƒuEAE Eš¬   Eš¬ E ]À¶€ –¼]ƒy‚EE‚Eƒyƒy –¼ –¼›, 1›, ›, Y›,§8 E AE EY›0 Y›,–¼ ›, A›, ›0›0AE AE A AE A AE AE AE  A A AEA AE A AE AAE AAE AEAAAE AAAEAAE AAE AAAAEAAAE AAAE §@§@˜\7AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌU –ÜÀs<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ`Àv8§@§@§@u§@ÀyTe§ UÀyT§@u§@ÀyTe§ UÀyT§@UÀyTe§!UUÀyTe§u§@§@§@x§8§8§8u§@ÀyTe§§@e§ÀyT§8§8UÀyT§@u§@ÀyTe§§@ÀyTÀyTÀyTÀyTUÀyT§@§@( UUÀyTe§u§@§@§@ÀyTL –ÜÀs<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ`Àv8 §@§@§@9 AÀyTUUÀyTe§u§@§@§@u§@§@§@ÀµÜÀµÜÀµÄ]˜X]˜XÀµÌ€Õ]U  €Õ] €ÅÀ›ÌÀH@À‘0À‘,À}\À}`ÀH8ÀH4ÀH<©|©xªÀ\8µ0©Ä©„©Ð©Ô©Ø©ì©à©ä¿è©è©ÜÀO䩸©œÀOàÀO´©°©´©üªªÀnÔ©ÀDx´ü©ˆ©ŒÀ¬hÀ¬dÀœ´ÀzäÀOÈÀLèÀLì©È©Ì©¬ª ªªª©À©”À]lÀ]hÀ¬|À¬€À¬pÀ¬xÀ¬t©¤ÀC੘ÀOÄÀO¸ÀO¼ÀOÀ©¼ÀtÀzÜÀzàÀHHÀHLÀHD©ô©øÀH¤ÀHÀHÀH(ÀH ÀH,ÀH$ÀH0©ð©€ÀÀÐÀ¬ˆÀ¬•´•¸•¼•À•Ä•”•˜•œ• •¨•¬•°•¤•ȕ̃}ÝxÀH@À‘0À‘,À­8À}\À}`ÀH8ÀH4ÀH<©|©xªÀ\8µ0©Ä©„©Ð©Ô©Ø©ì©à©ä¿è©è©ÜÀO䩸©œÀOàÀO´©°©´©üªªÀnÔ©ÀDx´ü©ˆ©ŒÀ¬hÀ¬dÀœ´À¬lÀzäÀOÈÀ¬XÀLèÀLì©È©Ì©¬ª ªªª©À©”À]lÀ]hÀ¬|À¬€À¬pÀ¬xÀ¬t©¤ÀC੘ÀOÄÀtÈÀO¸Àu¤ÀO¼ÀtÄÀOÀÀt4©¼À“ÀÀtÀzÜÀzàÀHHÀHLÀHD©ô©øÀH¤ÀHÀHÀH(ÀH ÀH,ÀH$ÀH0©ð©€ÀÀÐÀ¬ˆÀ¬•´•¸•¼•À•Ä•”•˜•œ• •¨•¬•°•¤•ȕ̃}ƒ}€ €  ]À­8]À­8À¬¨À¬„•ТqÀH8©|©€©Ä©„©Ð©ÔÀ¬€Àœ´©Ø©ì©ÜÀO䩸©œ©´©ˆ©ŒÀzàÀLèÀLì©È©Ì©¬©À©”©¤©˜ÀO¸À¬xÀO¼ÀzÜ©¼Àt©ÀHHÀ¬tÀH@À]hÀzäÀ}\©ð©ôÀDxÀOÈ©üÀnÔ´üÀOàªÀ¬|À}`©àª ©øÀ¬pÀOÀÀH¤©ä©è¿èªªÀH4ÀCàÀ¬lÀ¬„À¬ˆÀ¬ŒÀ¬•´•¸•¼•À•Ä•”•˜•œ©x• •¨µ0•¬•°•¤•Ȫ•ЪªÀ\8•ÌÀHLÀ]lÀ‘0À‘,ƒ}ƒ}À¬XÀ¬h]À¬dÀÀЂñ‚ñ€ € À¬¨©ˆ©ŒÀnÔÀzäÀ¬dÀ¬hÀ¬¨YÀtü À¬¨ YÀ¬¨wÀHHYÀ­8ÀkdYÀ¬¨ÀH0]UÀ¬¨YÀ¬¨À¬¨ÀH8ÀuÌÀuÌÀs<ÀH4ÀtüÀH<ÀH@À¬Xƒ}ƒ}&UÀ¬¨YÀ¬¨À¬¨AÀ¬¨ AÀ¬¨AÀ¬¨À¬¨AÀ¬¨UÀ¬¨YÀ¬¨À¬¨ÀÃAAÀÃAAAƒyƒy ]EÀ\eAÀ\EÀ\ AÀ\ À\E]EÀ\ ]EÀd YÀd YÀdÀÃ:YÀd]EQYÀd]EYÀd]EYÀdQYÀdEÀ}Ð ÀÃA lÀ}œ Y À\ À\ À\Y€ÁÀÃAAAÀÃAA?]À}œÀ}œÀ\]EQÀ}ÐÀ\YYYY#QlÀ}œAÀ\]À}œE ]Àu¬Àu¬ ]Àu¬*ÀkdÀuÌÀs<Q]Àu¬]Àu¬Àu¬QÀu¤ÀkdEuÀuÀzxAUUÀt AuU7uYUÀtüÀuÌUÀuÌÀuÌYUÀtüÀu lÀ}œÀOÔ Au AU AQE ]U`ƒƒ…‚=ƒ‰ƒÀÃAAuÀÃAAA AAAAA!ÀÃAAAAA AAAAÀÃAAAA6uYUÀtüÀuÌUÀuÌÀuÌYUÀtüÀu lÀ}œ YÀuÀ ÀuÀ ]U„€ÒÀHYÀuÌYÀuÌÀ­8À­8QÀHÀuÌÀuÌÀkduÀH(ÀtüÀuÀH ÀH$ÀH,ÀH0]ÀH,AEÀH8ÀH ÀuÌÀuÌÀs<ÀH8ÀH$ÀH4ÀH<ÀDx´üÀH@À‘0À‘,€ € ÀHHÀHLÀHDQ©|©xªÀ\8µ0ÀOÈ©€©˜Àu¼ÀCàÀzàÀzÜÀtAÀ“ÀÀzxAUUUÀt AuU©Ä©¤ÀuÈÀuÈ©¼©„©Ð©Ô©Ø©ìÀOàÀH¤uYUÀtüÀuÌUÀuÌÀuÌYUÀtüÀu]Àœ´lÀ}œAÀ\]À}œ©ÜuYUÀtüÀuÌÀuÌYUÀtüÀu©à©ä©è¿èÀOä]ÀZüÀOÔÀ`]ÀZüÀZü©œ©¸ÀO¸Àu¤Àu¤AuUÀO¼ÀtÄÀtÄAUÀOÀÀt4Àt4ÀOÄÀtÈÀtÈÀO´AQE©üÀnÔª©°©´©ˆ©”YÀuÀÀuÀYÀuÀ©Œ©©ð©ô©øªÀZüÀ¬hÀ¬dÀ¬lÀzäÀ¬XÀLè]U]UÀLì©È©ÌÀ]lÀ]hÀ¬|À¬€À¬pÀ¬xÀ¬t©¬Y1©À`À}\À}`ª ªªªÀ¬ˆÀ¬„À¬À¬Œ•´•¸•¼•Ä•À•”•˜•œ• •¤ÀÀЂñ‚ñ•ÈYYY•Ì•Ð]]•¨•¬•°ƒ}ƒ}ƒƒƒ…ƒ…ƒyƒy‚=‚=ƒ‰ƒ‰ƒƒQ QÀ¬¨QQ QÀ¬¨AAAAEAAAEAAAAAE*eAAAAEQEE€ AAAAE E#eAAAEQEEu AAAE 0eAAAAAEQEE€á AAAAAE EKÀ­8AAAAEAAAEAAAAAE•øQÀ­8E•øQÀ­8]À­8]À­8•øQÀ¬¨AAAE AAE#eAAAEQEEu AAAEeAAEQEEU AAEAAAEAAE•øQÀ¬¨"UÀ¬¨YÀ¬¨YÀ¬¨À¬¨•øQÀ¬¨À¬\À¬`À¬\À¬`€ € À¬¨•øQÀ¬¨AAAE#eAAAEQEEu AAAE E> ]À­8]À­8À­8AAEAAAEAAQÀ¬¨ Y‚ý  U‚ý U‚ýEƒyƒy]YÀ­8 ]1YÀ­8 ] ]À­8 ƒy –¼–¼E ]§8§8–¼–¼ÙE–¼E §8À¤´ ]À½ À½À¤´À¨]À½]]À¼€]À¼€À¼„]À¼€]À¼€À¼€ ÀµÌÀ¼„YÀ·(À¼„ AE–ÜAAE–ˆÀ­8 –°]–Ø ]–Ø ]–Ø–Ø UY–ØUY–Ø–ÜY–°À¿ôÀ¿Ô À¿ôÀ¿ôÀ¿Ô" À¿ô–Ü–ˆÀ­8YU uY–°uuuY–° ‚ñ‚ñ UuY–° –°–ØuY–°Y–°$UY–Ø–ÜuY–°À¿ð –Ü–ˆÀ­8YY–Ø U–°] –ÜÀ­8U–°]–Ü–°–°YYÀ¬¨YYYYÀ¬¨$ À­8]YÀ›ÈÀ›X À›àÀ›äYÀ›ÈÀ›ØÀ¬´YÀ›ÈÀ¬´À›ÌÀ­8YÀ“À À›ÌÀ­81À›ÌÀ­8Y YÀ›TYÀ›TYÀ“ÀÀ­8À›ÌYÀ›TYÀ›PYÀ“ÀÀ­8À›ÌYÀ›PÀ“ÀÀ›ÌYÀ“ÀÀ›Ì1YÀ“ÀÀ­8]À”¼YÀ™8À“˜YÀš¬À›PYÀ“ÀÀ›P YÀ›1YÀ“ÀÀ­8]À”¼YÀ™8À“˜YÀ›À›TYÀ“ÀÀ›T À›TÀ›T À›PÀ›P8 À›äYÀ›TÀ›ÌYÀ›XYÀ›ÈÀ›àYÀ›PÀ›ØYÀ“ÀÀ›Ø A À“À]1À­8YÀ“À]À­8À›h YÀ“ÀX À›hÀ“˜À­8YÀ“ÀYÀš¬YÀ™8]À”¼YÀ“ÀÀ“ÀYÀ“ÀYÀ“ÀÀ›PÀ›\EÀ›dÀ›lÀ›\ YÀš¬QÀ›dÀ­8YÀš¬À›lYÀ“ÀYÀ™8À“˜YÀ“ÀÀ“ÀYÀ“ÀÀ›\À›P]À›\À›ˆX À›ˆÀ“˜À­8YÀ“ÀYÀ›YÀ™8]À”¼YÀ“ÀÀ“ÀYÀ“ÀYÀ“ÀÀ›TÀ›|EÀ›„À›ŒÀ›| YÀ›QÀ›„À­8YÀ›À›ŒYÀ“ÀYÀ™8À“˜YÀ“ÀÀ“ÀYÀ“ÀÀ›|À›T]À›| YÀ›\]YÀ“ÀÀšÔ À›\ À›\YÀ“À YÀ›\ ]YÀ“À À›\À›PV YÀ›\YÀ›X]YÀ“À]YÀ“ÀYÀ“ÀYÀ›PÀ›ÌYÀ›ÈÀšÔÀ›Ø]À›´ YÀ›|À›( À›| À›|YÀ“À YÀ›| À›|À›TU YÀ›|YÀ›X]YÀ“À]YÀ“ÀYÀ“ÀYÀ›TÀ›ÌYÀ›ÈÀ›(À›Ø]À›¸—€—ˆÀ›´À›¸ YÀ›È —ˆ pÀ}œ À›´ À›¸ À›Ø- —€—ˆ5À›Ø5À›ØÀ›ØÀ›ØÀ›´À›¸5&À›ØAXÀ}œÀ¬´X] À›À›YÀ›YÀ› Àš¬Àš¬YÀš¬YÀš¬%5]À›Ø]À›ØÀ}LÀ}T5$]À›Ø–ÜÀ}PYXÀ¬´]À›ØX ]À›Ø–ÜÀ}PYÀ¬´Y€­–Ø–° –°€­–Ø–° €­–Ø–°–Ø €­–Ø–°–´UY–ØY–´Y€­–Ø–° UY–ØY–´–ÜY–°EÀ¼p AE À¼PAEÀ¼pÀ­8'À¼pÀs<Àv8AAÀbüE ÀvT Àt4Àt4À¼p–ÜÀs<Ài”Àv8À¼pÀs<Àv8e§ÀvD]Àv8Àv< ˜X]˜X]˜„]˜„]˜X ]˜X˜„]˜\ ˜\]˜\]˜\]˜„]˜„]˜\ ]˜\˜„ €¨€½ €¨À‘” €¨€¹€¨€¹ €½ €¨À‘”]€¨À‘” €¹4YY€¨€½€¨À‘”€¨À‘”€¨€¹(˜„–ÜÀt4À­8À‘4€¨€…€¨€¹À¬ÔY–ØÀ¬ÜY–Ø ]AEUY˜XY˜`À¬àY–ØÀ¬ÜY–ØHÀ¬ÔY–ØÀ¬ÜY–ØYY–Ø]AEUY˜XY˜` ˜„À­8 A˜`˜\Y˜XY˜` Y–ØUY˜XY˜` ˜`˜\ ˜\ª@UY˜XY˜\Uª@UY˜XY˜\DA˜`˜\Y–ØUY˜XY˜`Y˜XY˜`Y˜\Às<À`'Uª@UY˜XY˜\˜„ª@À­8™ð AAUÀ­8À­8 AUÀ­8™ô AAUÀ­8EÀ­8À­8À­8YYSAAUÀ­8AAUÀ­8EAAUÀ­8–¼À›X À› YÀ› YÀš¬AAÀ›XAAÀ›TAAÀ›P™øJ AAUÀ­8AAUÀ­8AAUÀ­8E–¼šš À›X À›Ta 5À›àAAÀ›XAAÀ›TAAÀ›PYÀ›PYÀ›XÀ›äYÀ›T5RAAUÀ­8AAUÀ­8AAUÀ­8E–¼À›Ø šAEAUE šAEAUÀ­8E À­8!À›Ø–¼AEAUÀ­8E–Ü–ÜUÀ›Øš AEAE7À›Ø–¼AEAUÀ­8EAEAUÀ­8EUY–ØY–´˜(Y–´"5UY–ØY–´Y–°˜(5UY–ØY–´–ܪ@Às<À`À­8ª@] ]˜\YuÀv8Y ˜\uÀv8Y ª@"À­8YuÀv8YÀ`ª@ª@]À­8–ܘ„Às< €ÅÀ›Ì ‚åƒ-A€¨À‘”ÀuÌÀj €À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›Ì €¥UÀu¼€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›Ìg Àt4Àv8‚åƒ-A€¨À‘”ÀuÌÀj €À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìšPÀ­8–ÜÀs<˜„Àœ¸ª@–ÜOÀÀøUuª@¶LYÀyTšPAE–ܘ„Às<]YÀ“ÀÀChšPÀ›Ø<5Uuª@¶LYÀyTšP5Uuª@¶LYÀyTšP5CUuª@¶LYÀyTšPAE–ܘ„Às<]YÀ“ÀšPÀ›ØuYª@Y¶LYYY¶LYª@ YY ª@¶LYuYª@Y¶LYY ¶L¶L 1YYª@uª@¶LYUuª@¶LYšPBuYª@Y¶LYYY¶LYª@YY¶LYª@1Uuª@¶LYšPYuª@¶LYšPUYuª@¶LYÀyTšP šPÀ›Øuª@¶LYÀyTUYuª@¶LYÀyTšP:UYuª@¶LYÀyTšPšPYuª@¶LYÀyTGUuª@¶LYÀyTšPAE–ܘ„Às<]YÀ“ÀšPYÀ›ØšH2šH€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌUšPÀyXYÀyTšP:Uuª@¶LYÀyTšP¶LšPª@YÀyTUšPÀyX@€šP¶LÀyXª@AE–ܘ„Às<]YÀ“ÀšPYÀ›Ø Y›,›0›<›8›<Y›,›8›0A›,›0š´š´AA›, AAAA? ]AE€©EEAA]E€©EE›,#E€©EEAE€©EE Y›,›˜ A›¨ YUY›,.A€ÁAU€ÁYUY›,YUY›, ›0UY›, Y›, €Á UY›,€ÁYUY›,€Á Y›08š´AAEAAE€©EEE€©EE›,›<›8Y›,›0 ›0   U›, Y›,]š¬ ] ]šìAY›0E]šèšÈ Aš¬EšØ€Õš¼šÜšÄšÀA EšÔšÌšÐAAš¬EšàšäAAš¬Ešð AYAYY  ƒñA E AYAYY.5Y›,šìAY›0E]Y›,šèAEEY›,šÈAš¬EY›,šØ€ÕY›,š¼Y›,šÜAE›,Y›,šÄAEAEY›,šÀA EA E Y›,šÔY›,šÌYYY›,šÐAAš¬Eš¬Y›,šàY›,šäAAš¬EY›,šðAYAYYY›,)YAEY›0YYY›,Y›00 YYUAEY›0YYAEY›0Y›,Y ›0›,$5EY›,AEY›0Y›,5AEY›0Y •” •˜ •œ À­8 •  À­8 •¤ •¨ •¬ •° •´ •¸ •¼ •À •Ä(Y YYÀ­8 Y •ÈYY Y •Ì ] •Ð À¬¨2]E]E]E]E]E]E]E]E ÀdÀd Àd Àd ÀdÀd 1Àd €ÁÀd Àd:YÀdYÀd]EQYÀd]EYÀd]E Y À\ À\ QÀu¤ EÀuÀ•ø•øeA•øE A•øA•ø •ø•ø •ø•ø AAE AAE AEAAAE AAAEAAE AAE AAAAEAAAE AAAE AAAE AAEAAAAE AAAAE AAAE AAAAAEAAAAE AAAAE AAE AE AAAEAAE AAE •øQÀ¬¨ •øQÀ¬¨ AAAE AAE €µ€µ‚ý ‚ý–€–€eA–€E A–€A–€ –€–€ –€–€–ˆ–ˆ–ˆeA–ˆE A–ˆA–ˆ –ˆ–ˆ –ˆ–ˆ–––––eA–E A–A––˜–œ –˜–˜a–œ–œ––– – ––˜–˜–œ–œ––– –˜–œ–€ €ƒ¡ƒ¡–œƒ¡5– –˜–˜–œ–œ––– –MHMicrosoft.FSharp.Compiler.Build+VersionFlag+VersionString@DebugTypeProxyKFMicrosoft.FSharp.Compiler.Build+VersionFlag+VersionFile@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Build+VersionFlag+_VersionNone@DebugTypeProxy –˜ –œ–  –  –°À­8eA–°E A–°A–°–° –°–°–°€± €±–°–°–° (Y–° –´Y–° Y–° Y–°eA–´E A–´–´–´–´–´–´Y–°Y–° Y–°–´–´ –´–´(Y€¨€… Y€¨€…–¸Y–°Y€¨€… Y–°Y€¨€… Y€¨€…eA–¸E A–¸A–¸(](À¿è   (]  (YUÀ­8   (Y–´           ! " # $ % & ' ( ) (]À¶€ * + ,(–€ - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _(§8 ` a b c d e f g h i j k l m nÀ¿è ] À¿è ] YUÀ­8 Y–´ ]À¶€ –€ – •ø §8 ] ] Y À¿è ] YUÀ­8 Y–° Y–´ U Y ]À¶€ –€ – •ø §8 o]]YYÀ¿è]YYUÀ­8Y–°Y–´U]YYYYY]]À¶€–€]]]]]–]YY•ø]§8]YUÀ­8 U}–¼YYÀ¿èÀ¿èYUÀ­8YUÀ­8Y–°Y–°Y–´Y–´UUYY–€–€––•ø•ø –¼55 À­855u]Y]YY]]5 u]Y5E]]5]] À­8"]YUÀ­8UÀ­8Y–°–°  uÀ¼H uÀ¼H YUÀ­8 Y–´UU –¼–¼(–°(À¿Ø(€Õ]ÀµÄ(ÀµÄÀ¿Ø€Õ]ÀµÄ À¿Ø €Õ]ÀµÄ –°À¿Ø€Õ]ÀµÄ€Õ]ÀµÄ1–Ø–°–°À¿ØÀ¿Ø€Õ]ÀµÄ€Õ]ÀµÄ ]ÀµÄ ]ÀµÄ]ÀµÄÀ¤´À¨ÀµÄÀµÄ ÀµÄ €Õ]ÀµÄ–Ø(‚ý(–¼ U–°]u]U‚ýeAAEU AAu]U‚ý u]U‚ý €©E€U–°]]U–°]]u]U‚ý]u]U‚ýÀ¨u]U‚ýÀ¼„]€]€AA–Ü –¼ ‚ý 5–Ü5 –Ü–¼ –¼Y –¼ YY5Y]Y]55]]5AUÀ­8]UÀ­8 UÀ­8]UÀ­8 ]UÀ­8 ]UÀ­8UÀ­81UÀ­8>5YUÀ­8AUÀ­8]UÀ­8YUÀ­85]–Ø]–Ø0À­85]–Ø]]À¤´À¨5 ]–Ø–° –Ø% À­85–ØY]–Ø15 –Ø–°5E5 YÀµÄÀ­8uY–° YU–°UY–ØAUY–ØU u AuuÀ¿ðYUY–Ø Y–ØYuY–°AuY–° –°U–° 1U–° U–° U1U–°uY–° uY–°uY–° UY–Ø uuÀ¿ðYUY–Ø1UY–Ø 1 UY–Ø UY–ØYuY–° uY–°UY–° UY–°–´5'5UY–ØY–´Y–°uY–°YU–°]À¶€]À¶€]]YUY–ØUY–ØAUY–ØuY–°UuuAuUuÀ¿ôÀ¿ðUY–ØY–ØYY–ØYUY–ØY–ØYuY–°AuY–°–ˆ5&UY–ØY–´–ÜY–°À­8–ˆ–°Y–°Y–°–° U–°]]€]€ €H ]ÀµÄ]ÀµÄÀµÄ]€]€]€!0YÀµÄ]€À­8 –Ü ]UÀ­8]UÀ­8À­8]UÀ­8 ]UÀ­8UÀ­8 UÀ­8]UÀ­8 ]UÀ­8 –ÜYY –ÜÀ­8 ]–ØU–° –°U–° 1U–°YU–° U–°U1U–° U–° YU–° U–°–°Y 1U–°YU–°1U–°YU–°U–°U–°U–°U–°5 uY–°U1U–° U–°–°–° U–° E –ˆÀ­8 E–ˆ Y–Ø UY–Ø –Ø]–Ø ]–Ø UY–Ø uÀ¿ð –ÜÀ¿ð UY–Ø –ÜÀ­8–ˆYY–Ø uY–° AuY–° UY–° Y–° –´UY–° Y–° UY–°uY–° ÀµÄÀ›X* À›XYÀ­8]]YÀ›È ]À­8 (YÀ›È YÀ›ÈÀ¬´ YÀ›È]À­8]À­8À­8 —€À­8 À›È YÀ“À À›TÀ›T À›PÀ›P À“ÀÀ›h ]YÀ“ÀÀ›\ ] À›PÀ›\ YÀ›Xy YÀ›XYÀ›PÀ›PYÀš¬Àš¬ÀšÔÀ›XÀ›XYÀ›PYÀš¬À›ÈYÀ›ÈYÀ›XÀ›ÈYÀ›ÈÀ›È 1À›X YÀ›X YÀ›XÀšÔÀ›ˆ ]YÀ“ÀÀ›| À›TÀ›|À›TÀ› YÀ›T YÀ›y YÀ›XYÀ›TÀ›TYÀ›À›À›(À›XÀ›XYÀ›TYÀ›À›ÈYÀ›ÈYÀ›XÀ›ÈYÀ›ÈÀ›È 1À›T YÀ›T 1À› YÀ› YÀ› YÀ›TÀ›( —ˆ —ˆÀ¬´ AÀ­8E AÀ­8E EÀ­8"AA€©AÀ­8EAÀ­8E$ AA€©AÀ­8EAÀ­8E AÀ­8E AÀ­8EA€©AÀ­8E'AAA€©AÀ­8EAÀ­8E) AAA€©AÀ­8EAÀ­8E#AA€©AÀ­8EAÀ­8E$ AA€©AÀ­8EAÀ­8E E€©À­8'AAA€©AÀ­8EAÀ­8E) AAA€©AÀ­8EAÀ­8E$ AA€©AÀ­8EAÀ­8EÀ›À› YÀ›À›Àš¸ YÀš¬Àš¬ YÀ›À›T YÀš¬À›P –ÜÀ¬´À}LÀ}T3AAA€©AÀ­8EAÀ­8E€©EEÀ›œAXÀ}œÀ›¨À›¤AÀ›TYÀ›AÀ›PYÀš¬NeAAA€©AÀ­8EAÀ­8E€©EEuA€©AÀ­8EÀ­8( AAA€©AÀ­8EAÀ­8EAA€©AÀ­8E À­8E À›œHeAA€©AÀ­8EAÀ­8E€©EEUA€©AÀ­8EÀ­8# AA€©AÀ­8EAÀ­8EAA€©AÀ­8EÀ­8NeAAA€©AÀ­8EAÀ­8E€©EEuA€©AÀ­8EÀ­8( AAA€©AÀ­8EAÀ­8EAA€©AÀ­8E À›PÀš¬ À›TÀ›<ÀbÔAE€©EEÀ}œAAA€©AÀ­8EAÀ­8EAAA€©AÀ­8EAÀ­8E€©EEE€©EEÀ›œAXÀ}œÀ›¨À­8AA€©AÀ­8EAÀ­8EÀ›¤YÀš¬AAA€©AÀ­8EAÀ­8EÀ›ØAÀ›TYÀ›AÀ›PYÀš¬À›àYÀ›PÀ›äYÀ›T À›ØX €¥–Ø –ØU–Ø Y–ØY–´ ˜(Y–Ø –´ ˜(Y–´ Y–Ø €¥–Ø ]–ØÀµÄ"UY–ØY–´Y–´Y–ؘ(–ÜY–°Y–´ Y–°–ÜUY–ØY–ØUY–ØY–ØY–°˜(UY–ØY–ØuY–ØY–ØY–´–Ü Y–°˜(–ÜY–ØY–´U–Ø U–Ø–Ø €­–Ø–° €­–Ø–°€­–Ø–°À­8 €­–Ø–°–° ‚•–Ø–° ‚•–Ø–° ‚•–Ø–° ]–Ø€­–Ø–° ‚™–Ø–° ‚™–Ø–°]–´‚™–Ø–°–° ]–´€­–Ø–° –ÜYY–° (]€µ (]À“X (YÀµÄ]€µ ]€µ ]À“X YÀµÄ( À¼„]€µ]À“XYÀµÄÀµÌ(Àv8(e]e§e]e§ Àv8 e]e§ Y€¨€…3 ÀµÌÀv8YYY€¨€…e]e§˜`˜\˜`˜`˜`eA˜`E A˜`A˜`(˜\ ˜\ ˜\faMicrosoft.FSharp.Compiler.Build+AvailableImportedAssembly+ResolvedImportedAssembly@DebugTypeProxyhcMicrosoft.FSharp.Compiler.Build+AvailableImportedAssembly+UnresolvedImportedAssembly@DebugTypeProxy˜h ˜h˜l ˜l (AE–Ü AE–ܘxAE–Ü AE–Ü AE–ÜeA˜xE A˜xA˜x˜x–ܘx–¼ –ÜE (]˜„ (€¥˜\ (€¥˜X (YÀ“T €¥˜X €¥˜\ YAEE ]À½ ]Às<€íÀ¶UÀ“TY˜XY˜\ YAEE€íÀ¶UÀ“T ˜x˜(]˜„]À½ ]˜„ €¥˜\ €¥˜X ˜\ €¥˜\ ˜X ˜X Y˜X]˜X]˜X ]˜XÀ­8 ]˜X ˜XÀ­8 Y˜\ ˜\Àv8 YÀv8]˜\]˜\]˜\ ˜`À­8˜`˜l˜h˜\ Àv<À­8 ˜`˜h˜\ Àv<À­8ÀµÄ]€±UÀ¼„YÀµÄÀv4 €¨À‘¨ ]€±]€±€¨UÀ¼„YÀµÄ €µ]€µ€íÀ¶À¶ ]e§U]À“X~]€±]€±€±Àv<Às<ÀµÌUÀ¼„YÀµÄÀ¤´À¨À¼„YÀµÄ€µ˜XÀv4‚åƒ-]Àt4Àv8˜\ÀvD U]À“XÀ­8€¨À‘¨UUÀ“T UÀ“TUUÀ“T UÀ“T!À¶UUÀ“TUÀ“T À“Tƒ­À¶UÀ“T ƒ­1UÀ“T1A1 UÀ“T UÀ“TÀ“T À“Tƒ­À¶UÀ“T YÀ“T7AY˜XA€¥˜XAY˜\A€¥˜\AeeAY˜XA€¥˜XAY˜\A€¥˜\AE€áY˜X€¥˜XY˜\€¥˜\8 AY˜XA€¥˜XAY˜\A€¥˜\AAY˜X€¥˜X Y˜\€¥˜\FAY˜XA€¥˜XAY˜\A€¥˜\A]˜„]˜„ UÀ¼„YÀµÄ+ UÀ¼„YÀµÄ–ܘx]À¨ UÀ¼„YÀµÄÀ­8 xÀ¼„ xÀ¼„ xÀ¼„ AÀµÌÀ¼„À­8À`À` À` ]Às<]Às<]˜„]˜„]€¨À‘”Àt|À‘4 ]Àt4Àt €¥Àt4 UÀt ]Àt Àtì ]Àt4u]€¨À‘”€¨À‘”A€¨À‘”ÀuÌÀt4ÀtXÀt|À‘4Y€¨€…YY]Àt4ÀtY]Àt45 À‘4–ÜÀ­8Àt4YY€¨€…]€¨À‘”$YUY€¨€…YY€¨€… À·( UY€¨€… UY€¨€…Y€¨€…1Y€¨€…€ŒÀ‘4€ÁY‚ýYUY€¨€…Y€¨€…YY€¨€…Y€¨€…E€¨€…5E˜„–ÜÀt4À­8À‘4€¨€…€¨€¹C0 Y€¨€…€Õ]AE–ÜÀµÌYÀ·(Àt4ƒ1À­8UYYÀs<AÀµÌÀ¼„™T9 ˜„€ÕÀ­8]AE–ÜÀ¼„ÀµÌƒ1Àv8˜\6 –ܘxÀ¼„ÀµÌÀµÄAÀµÌÀ¼„ƒ1Àv8˜\+0AEY˜`€ÕÀ­8]AE˜XYUAE YuÀbàÀvT˜\AEE À¼pUAE UAE™”B ˜„€ÕÀ­8]AE–ÜÀ¼„ÀµÌYYUAEYUAE UAE* UAEuÀbàÀvT˜\AEE uÀbàÀvT˜\AEEn –ܘxÀ¼„ÀµÌYÀ·(YÀ¼pYYUAEYuÀbàÀvT˜\AEEYUAEAEY˜`U˜XAEY˜` AEY˜`ZÀ­8–°UÀ¼„YÀµÄÀ¼„YÀµÄÀµÌ˜XYÀ·(€˜XAEY˜`,0U˜XAEY˜`€Õ]AE–Ø €ÕYUY˜XYAEY˜`YAEY˜` €ÕY –ØU˜XAEY˜` ˜XAEY˜`UY˜XYAEY˜` AEY˜`˜`9€ÕYUY˜XYAEY˜`YAEY˜`& UY˜XY˜`]AEY–ØUY˜XY˜` ]AEY–Ø –ܘx À­8]˜X]˜X ]€µ]–Ø]–Ø–Ø ]ÀµÄÀ¬ÔY–ØÀ¬ÔYÀ¬ÔYM –ܘx]–ؘ(]–Ø–ÜUY–ØY–´Y–´Y–ØY–Ø–Ø]–Ø À¬ÔY–Ø–°–ˆ Y–Ø–°–ˆAYAÀv8Y˜` ]ÀµÄ €ÕÀ½€»–ܘ(˜(–°˜„˜\–ØUY˜XY˜`Y˜`˜h˜\À½Àv8]AEY–Ø–°]–Ø]–Ø]–Ø]–ؘ\–°ÀµÌÀµÜAYAÀv8]€]€Às<ÀµÌUÀs<˜„˜xY–ØY–Ø –´UY–° UY–°$–ܘ(Y–ؘ„UY˜XY˜`)˜„]AE˜xÀs<˜„Y–ØY–´G–ÜuY–ØY–ØY–´Y–ØY–´Y–ØUÀs<˜„Às<˜„UÀs<˜„˜xYAEE 1AEE YAEEYAEEYAEEE5 ]Àt4 Àt4]Àt4]Àt4Àt4Àv8Y Àv8˜\ ]€±À‘¨À‘¨ UÀ‘¨€… À‘¨€… UÀ‘¨€…  €µÀ‘¨ À‘¨ ˜„À­8 ÀuÌ€¨À‘” ÀuÌÀuÌ UÀu¼ €¥UÀu¼E À“TUÀ“T UÀ“TA€¥˜\A A€¥˜\A A€¥˜\AY˜\A€¥˜\A! AY˜\A€¥˜\AA€¥˜\A A€¥˜\AY˜\,A€¥˜XAY˜\A€¥˜\A. A€¥˜XAY˜\A€¥˜\A AY˜\A€¥˜\A) AY˜\A€¥˜\A€¥˜X9 AY˜XA€¥˜XAY˜\A€¥˜\A-A€¥˜XAY˜\A€¥˜\A4 A€¥˜XAY˜\A€¥˜\AY˜X À¨ ˜„À­8xÀ¼„ÀµØÀµÈ À¼„/ –ܘxÀµØÀµÈ–ØUÀ¼„YÀµÄÀ¼„ À¼„ÀµÌÀµÌÀµÜÀµÄ ˜X À‘” €¨€… €¨€… UÀt ˜„–ØY–Ø ]À·(UY€¨€…F ˜„]AE–ÜÀµÌÀ­8À‘4€Á‚ýYUY€¨€… 1UY€¨€… UY€¨€… YUY€¨€…UY€¨€…Y€¨€… UY€¨€… Y€¨€…UY€¨€… €…€… A€…€…EA€…€… €… ƒ1 E€… E€¨€… €¹ €½€¹ À‘”€½ €¨€½Y€¨€½1 À­8€¨€½€¨€½Y€¨€½€¨À‘” 1€¨€½ Y€¨€½€¨€½ Y€¨€½ 1€¨À‘” €¨À‘” Y€¨À‘” €¹ €¹€¹ €¹€… À`E€Õ™T Y˜`E]UAE ]UAEÀ¼pUAE/ À­8YÀ¼pÀ¼pYÀ¼pUAE 1UAE UAE YUAE ÀvTÀc e§Àc ]Àv8€¥AE% ˜„À­8À¼„ÀµÌ€¥AE ]AEÀbàe§ AE ]AEÀbàe§ A]Àv80]AE]AEAEÀbàe§ ]e§E™™” ÀbàÀvTÀvT ÀbàÀvTuÀbàÀvT˜\AEE€”AEÀbàÀvTYUAE€¥AEÀvTÀt4ƒ1Y]]Àv8 ‚åƒ-]À¼€]À¼€À¼€e]e§˜\* uÀbàÀvT˜\AEEUAE EuÀbàÀvT˜\AEEÀbàÀvT˜\AEEÀvTÀbàÀvT˜\AEE ˜`˜\ ˜\uÀbàÀvT˜\AEE* ˜„À­8YuÀbàÀvT˜\AEE uÀbàÀvT˜\AEE˜\ ˜\˜` ˜„À­8 € ˜„]AE€ÕYU˜XAEY˜` Y U˜XAEY˜`U˜XAEY˜`–° U˜XAEY˜`–Ø Y˜`AEY˜` Àv89 –ܘ„˜\]˜\]˜\˜\Àv8YÀv8YÀv8 YÀv8 ]˜\ 1Àv8 YÀv8 –ܘ„˜\Àv8]A1 Àv8]Àv8]˜\ Àv8Y EUY–° UY–°–´]Àt4Àt4 ]Àt4]Àt4˜l ˜\˜` ª@ª@˜\AAUÀ­8™ðAUÀ­8 AAUÀ­8E™ô™ø À›XÀ›(À­8À› EÀ›ÀšÔÀ­8Àš¸ EÀš¬šÀ›(À›YÀ› À›š À› À›Tš ÀšÔÀš¸YÀš¬ Àš¬š Àš¬ À›P EEUÀ­8 EEU EE –¼(YUYÀ­8(YUY–Ø(YU]À›Ø (YÀ¬¨YUY–ØYU]À›Ø YUYÀ­8 YUY–Ø YU]À›Ø YÀ¬¨b YUYÀ­8YUY–ØY–´YU]À›ØYUYÀ­8YÀ¬¨YÀ¬¨ 5š,5š,š0À}Pš,–ÜYUÀ­8š0À}Pš0š0š0eAš0E Aš0Aš0 š0š0 š0š0 ˜\ Àv8uÀv8Y uÀv8Y˜\ Às<À­8À` ª@ª@(€À›ÌÀtì€ÅÀ›Ì(€„À›Ì€ÅÀ›Ì(Àtì<šH€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtì: €À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtì €À›ÌÀtì€ÅÀ›Ì €„À›Ì€ÅÀ›Ì ÀtìeAšHE AšHAšH €„À›Ì€ÅÀ›Ì €À›ÌÀtì€ÅÀ›ÌšH šHšHšHšHšH šHšH À›Ì(Àt4(Àœ¸(šH Àt4 Àœ¸ šH Àv8Àt4Àœ¸ª@ª@šH šPª@ À­8˜„ Às<Àj  šP"€‰¶LYÀyTª@ª@ª@šHÀt4!ÀÀøUuª@¶LYÀyTšP5 ¶LYÀyTª@ª@ª@šHÀt4uª@¶LYÀyTšPE ÀÀøUuª@¶LYÀyTšP€‰¶LYÀyTª@ª@ª@šHÀt4P €À›ÌÀtì€ÅÀ›ÌÀtì¶LÀyTª@€„À›Ì€ÅÀ›Ìª@ª@ÀtìÀt4)ÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4šHYÀyT- ÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4EÀChr Às<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ`À›Ìª@¶LÀyTª@Àtì YÀtì ÀÀøE$ €‰¶LYÀyTª@ª@ª@šHÀt4;€„À›Ì€ÅÀ›ÌÀ­8ª@ª@ª@]YÀ“ÀÀtìÀt4 ]Àtìj Às<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ`À›Ì]Àtìª@u¶LÀyTª@¶LÀyTª@ÀtìÀy: ÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4u¶LÀyTª@À›Ðv AE–ÜÀs<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ`À›ÌÀ›Ð]Àtì3 u¶LÀyTª@€‰¶LYÀyTª@ª@ª@šHÀt4ª@{ AE–ÜÀs<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ­8À`À›ÌÀ›Ð]Àtì^ Às<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ`À›Ìuª@ª@ÀtìX ª@ª@Àtì€À›ÌÀtì€ÅÀ›Ìª@]YÀ“ÀYÀ“ÀÀ­8YÀyTª@šHÀt4: ÀÀø€‰¶LYÀyTª@ª@ª@šHÀt4uª@ª@ÀtìÀ›Ôm AE–ÜÀs<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ`À›ÌÀ›Ô3 uª@ª@Àt쀉¶LYÀyTª@ª@ª@šHÀt4r AE–ÜÀs<]YÀ“ÀÀChšP€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ­8À`À›ÌÀ›Ôm AE–ÜÀs<]YÀ“ÀÀChšPÀ›Ø€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ­8À`&À›àÀ›ÌÀ›Ð]ÀtìÀ›äÀ›Ô/ AE–ܘ„Às<]YÀ“ÀÀChšPÀ›Ø> €‰¶LYÀyTª@ª@ª@šHÀt4Uuª@¶LYÀyTšPFšH€À›ÌÀtì€ÅÀ›Ì€„À›Ì€ÅÀ›ÌÀtìÀtìÀ­8À`% ÀÀøUuª@¶LYÀyTšPE!ª@YÀyTuª@¶LYÀyT% ÀÀøUuª@¶LYÀyTšP À›Ø YÀ›È ¶L¶L¶L" AE–ܘ„Às<]YÀ“À$ Uuª@¶LYÀyTšPšPÀ›ØYuª@¶LYÀyTuª@¶LYÀyTšP= ÀÀøUuª@¶LYÀyTšPUuª@¶LYÀyTšP6 Uuª@¶LYÀyTšPUuª@¶LYÀyTšP €„À›Ì€ÅÀ›Ì EÀ›ÌÀt욬š¬eAš¬E Aš¬Aš¬ š¬š¬ š¬ š´€Õ š´A E š´AEš´Aš¬Eš´AAš¬E š´AE  š´AAš¬E  š´AEE  š´AY›0E  š´AYAYY  eAš´E Aš´Aš´(€Õ €Õ €ÕJEMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionClear@DebugTypeProxy (A E A E A EJEMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionFloat@DebugTypeProxy (AE AEHCMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionInt@DebugTypeProxy (Aš¬E Aš¬E Aš¬EKFMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionSwitch@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionIntList@DebugTypeProxy(AAš¬E AAš¬E AAš¬ERMMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionIntListSwitch@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionRest@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionSet@DebugTypeProxyKFMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionString@DebugTypeProxy OJMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionStringList@DebugTypeProxy(AAš¬E  AAš¬E AAš¬EUPMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionStringListSwitch@DebugTypeProxy IDMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionUnit@DebugTypeProxy(AY›0E  AY›0E AY›0EIDMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionHelp@DebugTypeProxy (AY (AYY  AYAYY AY AYYLGMicrosoft.FSharp.Compiler.Build+OptionSpec+OptionGeneral@DebugTypeProxy š¼ šÀ šÄ šÈ šÌ šÐ šÔ šØ šÜ šà šä šè šì šð(š´(]›,š´]] š´]] š´ ]eA›,E A›,A›, ›0Y›, ›0Y›,›0›0eA›0E A›0A›0 (Y›, Y›, Y›,UPMicrosoft.FSharp.Compiler.Build+CompilerOptionBlock+PublicOptions@DebugTypeProxy Y›,VQMicrosoft.FSharp.Compiler.Build+CompilerOptionBlock+PrivateOptions@DebugTypeProxy ›8 ›]€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8:€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8UÀuÌÀ­8ƒ)pÀwp]€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8Àw˜ÀuÌYÀyÀ­8YUÀuÌYÀy]Àu¤ÀwpÀw¨€Õ]uYÀuÌYÀwpÀ|pÀw¬ÀwxÀv|ÀwœÀwÀwXÀ•TÀ­8Àw€À”ÌÀwpÀxàÀwYÀw\Àw”Àw\UŒŒŒŒœ¨ÀwŒYÀuÌYÀwpÀw|ÀuÀÀw¤ÀwðÀu¼ÀuÄÀxÀxÀÀx@YÀwpÀx8Àx0Àx(Àx,Àx<YÀwpÀx4Àx ÀuÈÀx$ÀxÀxDYÀuÌYÀ·¼ÀxÀw„YÀu¤Àw„YÀu¤À•<Àx YÀwpÀw„YÀu¤Àu¤À•$ÀwpÀxÐÀxÀ”ÔÀ• ÀxÀu¤À”ôÀxXÀxèYÀuÌÀ¶pYÀuÌÀuÌÀxPÀupÀxTÀxAÀwpÀs<ÀwpžPœ¤ÀxAÀwpÀ·¼Àw YÀxøÀy]€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8œ¤žPœ¨Àwpžtœ¤žPYÀwpœ¨. Àºœ¤ž,œ¨YUÀuÀtÀwpžtžˆžŒžt]žt žtžtžˆžŒžtŒ ]žtžt]žt žt]žtžtžtžŒ žŒžtŒ žPžtž€žˆžtžŒž€žtž„ž| uŒ žtžˆžtÀ·¼ž„ž€Œž|œ¤œ°žPžt ]ÀwpÀv„ÀvˆÀvÀv˜Àv Àv¨ÀvŒÀv”Àvœ Àv¤ Àv¬Àv´Àv° Àv¸Àv¼ ]Àwp€•#À¶]žt]žt]ÀwpÀv„YÀ¶À·¼ÀvˆÀvÀv˜Àv  Àv¨YÀ·¼ÀvŒÀv”Àvœ Àv¤ Àv¬Àv´ Àv° Àv¸Àv¼]Àwpœ¤žPÀv|À­8ÀuÌžt]À¶À¶À¶œ¤À­8YÀ¶À·¼œ¤À­8žP]žt]žtœ¤À­8œ°žPžt"€Àu¼YÀuÌYÀwpÀ­8!€Àu¼YÀuÌYÀwpÀ­8 À¶] €Àu¼YÀuÌYÀwpÀ­8YÀuÌÀu¼À­8YÀwpÀ¶YÀ¶YÀ¶À·¼&œ¤žPYÀwpYÀuÌÀ­8žtUYÀuÌYÀuÌUYÀuÌYÀuÌI Àu¼UYÀuÌYÀuÌYÀuÌYÀuÌÀuÌYÀuÌÀ¶Àwp&Àwpœ¤Às<ÀwpYÀuÌÀ­8œ¤#œ¤žPÀwpYÀuÌÀ­8žtÀ¶x ÀtÈÀ¶-À¶YÀtÈYÀ¶À¶xYÀ¶À·¼"œ¤žPÀu¼YÀwpÀ­8žtÀ´¨À´øAÀ´øÀ¹„3 UÀ´¨À`Às<œÄÀ´¨YÀ¶À·¼À´ø+œ¤žPÀuÄYÀuÌYÀwpÀ­8žt ÀtÈ ÀwpÀtÈ"À¶YÀtÈœÄYÀ¶À·¼0 œ¤žPÀxÀÀu¼YÀuÌYÀwpÀ­8žt AAEYÀ¶À¶YÀ¶YÀ·¼"œ¤žPYÀwpÀuÌÀ­8žt!UAÀv|A€˜AÀv|EA€˜AÀv|E AÀv| UAÀv|A€˜AÀv|ESÀwpUAÀv|A€˜AÀv|EÀwpÀwxA€˜AÀv|EAÀv|À¶À¶YÀ¶YÀ·¼#œ¤žPÀwpÀuÌÀ­8ÀuÌžtÀ¶YÀ·¼YÀ¶œ¤žPÀuÌÀ­8žt2Àt4À¶YÀ·¼ÀtÈÀ¶À¶xYÀ¶À·¼œ¤žPÀwpÀu¼À­8žt%Àt4À¶YÀ·¼ÀtÈÀ¶À·¼$ œ¤žPÀwpÀu¼ÀwpÀ­8žt; UÀ´¨À`Às<œÄÀ´¨À¶YÀ¶YÀ·¼À´ø'œ¤žPÀwpÀuÄYÀuÌÀ­8žt< UÀ´¨À`Às<œÄÀ´¨À¶YÀ¶YÀ·¼À´ø( œ¤žPÀwpÀuÄYÀuÌÀ­8žtÀ´¨YÀ¶YÀ·¼À´ø'œ¤žPÀwpÀu¼YÀuÌÀ­8žt2 UÀ´¨À`Às<œÄÀ´¨YÀ¶À·¼À´ø- œ¤žPÀwpÀuÄYÀuÌÀwpÀ­8žtÀ¶|YÀ¶YÀ·¼'œ¤žPÀwpÀuÈYÀuÌÀ­8žt"œ¤žPÀuÈYÀuÌÀ­8žt, œ¤žPÀwpÀuÈYÀuÌÀwpÀ­8žt'œ¤žPÀuÈYÀuÌÀwpÀ­8žtÀ·¤.À¶|À·¤À·¼YÀ¶YÀ·¼À¶À¶x œ¤žPÀuÈYÀuÌÀ­8À¶|ÀtÈÀ¶À¶xÀ·¼#œ¤žPÀuÈYÀuÌÀ­8žt  YUÀuÌÀwhÀwp{ YYUÀuÌÀwhYÀwpÀwpYYUÀuÌÀwhYUÀuÌÀwhYYUÀuÌÀwhYÀwpYÀwpÀwp1œ¤žPÀ­8YYUÀuÌÀwhYÀwpUÀu¤ÀwpUÀu¤Àwp0YÀwpÀuÌUÀu¤ÀwpÀu¤ÀwpÀw\+œ¤žPÀ­8YUÀuÌÀwhÀwpžtqYYUÀuÌÀwhYÀwpYYUÀuÌÀwhYUÀuÌÀwhYYUÀuÌÀwhYÀwpYÀwp&YÀwpYYUÀuÌÀwhEÀw¤YÀwpÀwp ÀwpÀwpÀwŒYÀuÌÀwpYÀ¶YÀuÌ UtŒt€|UYÀwpYÀwp€É€ÍUYÀ¶YÀ¶ÀxðÀ·”À¶$Àµì ]ÀµÌ ÀuÀUtŒ ÀuÀÀuÀUtŒ UtŒ ÀuÌÀtüUYÀwpYÀwp€É€ÍUYÀ¶YÀ¶YU]]]A] €µÀµÌ ]ÀµÌ À¶Àwp ÀwpÀuÌ€YÀuÌYÀwpÀ­8žt#]€YÀuÌYÀwpÀ­8žt‚ÀlÀw|ÀuÀUtŒt€YYŒYYUÀuÌÀwh|YÀ·¼Àw|YÀuÌYÀwpYÀwpÀuÌÀs<ÀwpÀwpYÀ¶À·¼Àw|YÀwpÀ­8Àw„ÀwŒÀwpÀuÀÀ¶xÀw¤ÀxXÀ¶pYÀuÌYÀuÌÀ¶ Àw|Àwd€YÀtüYYUÀuÌÀwhÀuÌÀwhÀu¤YÀtüÀxèUYÀwpYÀwpYÀwpYÀwp€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀùɀÍÀu¼UYÀ¶YÀ¶YÀ¶YÀ¶À¶x]ÀuÌÀxðÀ·”Às8À¶ ÀuÌœ˜œ˜À¶À¶$Àµì]ÀµÌÀ¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶xÀ¶pÀ¶xÀ¶pÀ¶xÀ¶pÀ¶xYÀwpYÀwpÀ¶YÀwpYÀ¶À`œÄÀw|0 œ¤žPÀwpÀuÌYÀuÌYÀwpÀ­8žtžtžˆ À·”]ÀuÌžt"€YÀ»„YÀ»„À¶À¶ YÀ»„!€YÀ»„YÀ»„À¶À¶uYÀ¶YÀ¶€YÀ»„YÀ»„À¶À¶YÀ»„À¶À¶À¶YÀ¶YÀ·¼ÀuÌÀ¶xÀ¶À·¼&ÀuÌœ¤žPÀuÌYÀuÌÀ­8+œ¤žPÀuÌYÀuÌYÀwpÀ­8žtÀ´ÔÀ´ØÀ´ÌÀ´ÔÀ´ØÀ¶À´ÌÀ´ÌÀ´ÌUÀuÌAÀ´ÌÀ´ÌAÀ´ÌÀ´ÌUÀuÌAÀ´ÌÀ´Ì ÀwpUÀuÌAÀ´ÌÀ´Ì ÀuÌÀ´ÌxÀ´ÌUYÀtüÀuÌYÀtüÀuÌœÄUÀuÌAÀ´ÌÀ´ÌÀuÌAÀ´ÌÀ´ÌÀ´ÌÀ¶À·”YÀ¶À·¼À´øUUYÀ¶YUYÀ¶Y UUUYÀ¶YU)€UYÀ¶YUŒÀ¶aœ¨À”ÜÀ­8UUYÀ¶YUYÀ¶YŒŒŒÀ¶UÀ”ÔN €UYÀ¶YUŒÀ¶œ¤žPŒŒÀwpÀ­8ÀuÌÀ”Ô< œ¤žPÀwpÀu¤ÀwpÀu¤ÀwpÀ­8ÀuÌÀ”ÔÀ”ôžt - œ¤žPÀwpÀwpÀ­8ÀuÌÀ”ÔÀ• žtU]À·´U]UYÀ¶Y~ŒŒŒŒUUYÀ¶YUYÀ¶YUUU]À•,À·¼YÀ¶À·´žt2 œ¤žPÀ•$Àu¤ÀwpÀxÐÀwpÀwpÀ­8žtŒŒŒŒÀ•D#œ¤žPÀ•<ÀwpÀwpÀ­8žt Uœ¨œ¨ Uœ¨œ¨Uœ¨œ¨œ¨œ¨+ œ¤žPœ¨ÀwpÀwpÀxàÀ”ÌÀ­8žt AAÀ·¼"eAAÀ·¼EUÀ·¼ AAÀ·¼AAÀ·¼À­8À·¼À¶À¶À¶À¶|YÀ¶À¶|À·ü À·¼À·¼0YÀ¶À`Às<œÄYÀ¶YÀ·¼YÀ·¼YÀ·¼ž„YÀ·¼ž„YÀ·¼ž„YÀ·¼ž„YÀ·¼ž„YÀ·¼ž„À·üÀ·¼YÀuÌÀuÌYÀwpYÀwpÀwxÀv„À·´ÀwpÀ·´ÀvˆÀvÀv˜Àv ÀvŒÀv”ÀvœÀv¤YÀ¶žtÀ¶žtŒŒŒYÀ¶8 œ¤žPYÀ·¼YÀuÌYÀwpYÀuÌÀ­8žt ÀwpÀwpÀs<Àwpœ¤À­8ÀuÌYÀwpuYÀuÌYÀwpÀ|p ]uYÀuÌYÀwpÀ|p¿äÀ|pAÀuÌÀ¶$€Õ]uYÀuÌYÀwpÀ|p uYÀuÌYÀwpÀ|p]uYÀuÌYÀwpÀ|puYÀuÌYÀwpÀ|p ÀuÌÀwp€¹uYÀuÌYÀwpÀ|p]uYÀuÌYÀwpÀ|puYÀuÌYÀwpÀ|p¿äÀ|pYÀuÌYÀwpÀwpÀuÌÀs<YÀwpAÀuÌÀ¶À`œÄÀwpÀwpÀwpÀwpBœ¤žPÀwp€Õ]uYÀuÌYÀwpÀ|pÀ­8ÀuÌžt|]ÀuÌÀxðÀ¶ À·”YÀ¶YÀ¶YÀ¶À`Às<œÄÀ¶xYÀ¶YÀ·¼]ÀuÌÀuÌÀ¶YÀ·¼Fœ¤žPÀxèÀ¶pYÀuÌYÀuÌYÀwpYÀuÌÀ­8žt œ¤À­8œ°žPžt ]Àwp]Àwp]ÀwpÀs<'œ¤žPÀupYÀwpÀ­8Àwpžt À¶|Às<YÀ¶YÀ·¼œ¤žPÀwpÀuÌÀ­8žt$NÀu¤À¶$Àu¤YÀ¶YÀ·¼À¶À¶|ÀuÀÀ¶À¶ À¶ œ¤žPÀuÀÀ­8žtÀ¶Àu¤YÀ¶YÀ·¼À¶Àu¤YÀ·¼œ¤žPÀuÀÀwpÀ­8žtQ À¶YÀ¶À·¼]Àu¼]Àu¼Àu¼Às<]Àu¼]Àu¼]Àu¼À¶œ¤žPÀuÌÀ­8 ÀuÀuÌ Àu 1 :YÀ¶YÀuÌÀ`À­8Às<œÄœÌœÔÀ·,]À»„œ¤Àtü€á]Àº˜YÀvp ]Àº˜€á]Àº˜YÀvpG ÀuÌ]YÀvp€á]Àº˜YÀvp]Àº˜YÀvpÀ»0À­8œ¤ÀyYYÀy YÀy YÀ»0 1YÀy Ày ÀyÀ»0uÀ¶YÀ»0À»4N ÀuÌ]ÀuÌYYÀyYÀtüYÀtüYÀyÀ¶YÀ»0À¶)uÀ¶YÀ»0À»4À­8œ¤ÀyÀuÌ]YÀvpÀyYUÀtüÀuÌÀyYUÀtüÀuÌ ÀuÌÀuÌUYÀ»0À»4X ÀuÌ]ÀuÌYYÀyYÀtüYÀtüYÀyYUÀtüÀuÌYÀ»0À¶-UYÀ»0À»4À­8œ¤ÀyYÀtüÀuÌ œ¤ÀyuÀ¶YÀ»0À»4 UAUÀ¶YÀtüÀ»¬.uÀ¶YÀ»0À»4À¶À»4YÀ»03UAUÀ¶YÀtüÀ»¬œ¤ÀyÀ­8]Àu¤Àu¤œ¤]Àu¤À»@À»HÀ»<À»@À»HÀ»< À»ˆÀ»ˆÀº Àº À»@À»HÀ»<ÀyYYÀu¤UYÀ»0À»4Àº!UAUÀ¶YÀtüÀ»¬AUÀ¶YÀtüÀ»¬6YUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ 1YÀu¤ Àu¤UÀu¤YUÀuÀt)uAUÀ¶YÀtüÀ»¬YÀtü2UuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ€¹ÀyYYÀu¤ÀwpYÀtüÀ­8YÀvpUYÀ»0À»4À»4YÀ»0YÀ·(YÀu¤ÀºUAUÀ¶YÀtüÀ»¬AUÀ¶YÀtüÀ»¬À»ˆÀ»ˆÀ»ˆGYUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆœ¤žPÀy U]À»¬À»ˆ0YU]À»¬À»ˆœ¤žPÀuÌÀ¶ÀyuÀwpÀ´¬À´ôÀ´ìÀ´ðUY]À»¬YÀ»ˆY]À»¬ YÀ»ˆ YÀ»¬uÀwp ]À»¬À»ˆUY]À»¬YÀ»ˆ ]À»¬À»¬ UÀuÌYÀyÀ¶€õ"uÀwpYÀvpYÀu¤À´¬À´ôÀ´ìYÀ»„YÀ¶À´ôÀ¶À¶À´ðÀ¶ÀºUY]À»¬YÀ»ˆY]À»¬YÀ»ˆYÀ»¬YÀ¶AÀuÌÀ¶À`Às<œÄYÀ·(À¶YÀ¶À¼$YÀ¶À·¼K œ¤žPÀwpÀuÌ]Àu¤ÀwpYÀyYUÀuÌYÀyÀ­8žt €„Àu¤€ÅÀu¤F€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€ÍUÀ·¼Àº YÀu¤ ÀuÀÀu¤€„Àu¤€ÅÀu¤ ÀuÀUÀu¤E€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€Í€Í UÀu¤YUÀu¤ ]À¶YUÀ¶ YÀ»ˆ YÀ»¬ YÀu¤K,YÀuÀ€„Àu¤€ÅÀu¤€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€ÍÀ¶À´ìYÀu¤YÀtüYÀvpÀ¶ÀuÌÀ¶À¶À¶À¶À¶YÀ»„À¶À´¬À´ðÀ´ôYÀ¶À´ôÀ»ˆUÀ·¼ÀºÀºÀs<À»ˆœ¨À»ˆÀ»ˆÀ¶À»ˆYÀ·(À¼$YÀu¤YÀu¤EÀu¤5À·¼@ œ¤žPÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpÀuÌÀ­8žtÀ»¸À»ÜÀ»°Àµl ÀºAÀµlÀ¼/ À»¸À»ìÀ·,À»ÜÀ»ŒÀ»°Àµl]À¶ŒQ À¼$œ¤À¶YÀ»„YÀ·(À´ìÀ´¬ÀºYÀ»ˆYÀ»¬À¶YÀ¶ ÀtüÀ»„YÀ»„œ¤YÀtü ÀtüÀ¶YÀ¶À­8œÄYÀtüYUÀuÀt UÀuÀt UÀ­8€ÕÀ­8uÀwpÀwpYUÀuÀt]ÀuÀÀºÀ¶À´ôÀ´ðÀ¼$€YÀ»„YÀ»„À¶À¶À¶YÀ»„YÀ»„À¶À¶À¶À»ˆYÀ»ˆÀ¼$À»¸À»ìÀ·,À»ÜÀ»ŒÀºYÀ»ˆ&UÀ­8œ¤žP]ÀuÀÀwpYÀ¶À·¼œ¤žPÀ­8 UÀ­8UÀ­8À­8œ¤žP]ÀuÀÀwpžtÀ¶œ¤Àu¤ $À¶œ¤À­8œÄÀu¤Ày`€„Àtü€ÅÀtü YÀ´ìYUÀu¤ Àu¤ Àu¤À´ì(YAAAYY Àu¤À´ìUÀu¤ À´ì€¨]ÀuÀ]ÀuÀÀuÀ À¶À­8Ày`YÀu¤€„Àtü€ÅÀtüYÀtü€„Àtü€ÅÀtüYÀtüYÀtüÀ¶YÀ»„YÀ´ìYUÀu¤e€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€Íœ¤À­8]ÀuÀYÀwpÀwˆ YÀtü%€YYÀtüYÀu¤ÀwpÀuÌ YYÀtü@ ÀwˆYÀtüÀuÌÀwpÀ­8Àw„YÀu¤UÀu¤ÀwpÀu¤H€YYÀtüYÀu¤ÀwpÀuÌYYÀtüYÀu¤ÀwpÀuÌ UÀ´¬YYÀtü UÀ´¬ ÀtüÀ´¬Y YÀu¤Àu¤YÀu¤UÀ´¬À´¬À¶YYÀtüYÀtüYYÀtü5UÀ´¬œ¤À­8ÀuÌYYÀtüYÀu¤À´´À»„À´¼ À»„uYÀ»„À¶À´¬ À´´À´¬À»„À´¼À¶À´¬'uYÀ»„À¶À´¬À´¬YÀ»„&€YYÀtüYÀu¤ÀwpÀuÌuYÀ»„À¶À´¬ Àu¤Y#ÀuÌÀuÌ€YYÀtüYÀu¤ÀwpÀuÌYÀu¤YYÀtüÀwpY€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€ÍÀ¶À´ìYÀtüYÀu¤YÀtüYÀvpœ¤À­8ÀuÌUÀ´¬À´¬YÀ¶YÀ»„YÀ¶YÀ»„YÀ¶YÀ»„YÀ¶uYÀ»„À¶À´¬À¶YÀ»„À´¬À´ô+uÀwpœ¤À­8]ÀuÀÀwpÀs<Àu¤ÀwpfÀ¶À´ôÀ´ðÀ¶YÀ»„UYÀtüÀuÌÀwpÀwˆYÀtüÀuÌYÀ»„À¶YÀ¶1€YÀ»„YÀ»„À¶À¶œ¤À­8uÀµÌYÀ¼$À¼$À»0uÀµÌYÀ¼$À¼$0YYÀu¤ÀyYÀtüÀuÌÀwpÀ¶YÀu¤Àu¼uÀµÌYÀ¼$À¼$À¼$YÀ»ˆYÀ»ˆÀ»ˆYÀ»0YÀ»0YÀ»0À»0Y€ÉYÀvpYÀtüYÀtüYÀtüYÀu¤À¶À´ì€ÍÀ¶À´ìYÀu¤YÀtüYÀvpYÀ»„YÀ¶À¶UYÀ»0À»4À»4ÀºÀ»ˆÀºÀ´¬YÀ·(YÀ¶À´ôYÀ¶À·¼À¶À¶xÀ¶xœ¤žPÀwpÀyÀ­8žt 'œ¤žPYÀxøÀwpÀwpÀ­8žtžˆžt€žtŒYÀ¶žt€žtŒYÀ¶žt: YÀ¶À¶ŒžŒžt€žtŒYÀ¶žtžtžtžˆ0€žtŒYÀ¶žtœ¤žPÀuÌÀ­8žtJ À•\]À­8AEEYÀ¶€žtŒYÀ¶žtYÀ¶žtžtŒ. œ¤žPÀ•TÀ­8ÀwÀwXÀ­8ÀuÌžtM€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Å+œ¤žPYÀ¶ÀwÀwXAEEžt( ]U€U€Å ]U]U]U]€U€ÅÀwÀwÀw > ÀwÀwÀw\UŒŒŒŒœ¨ŒÀ·¼ÀwÀw Àw€Ç €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åœ¤žPŒYÀ¶ÀwÀwXAEE€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åžt0  ÀwXÀ”ÄA]€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ=€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒBU€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ ÀwX? €ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒuYÀw\ŒŒ<€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒAU€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ@]€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ Àu¤ÀwpBÀwXYÀu¤ÀwpÀ”Ä]€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒŒŒUŒŒŒŒYÀw\€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒÀ·¼U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ]€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒœ¨€Ì €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åœ¤žPŒYÀ¶YÀwpÀwXAEE€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åžt4 K1%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒLY%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒG%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒGUU€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒJ1%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒI %U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒKY%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒF%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒFUU€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒª 1%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒY%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒE%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒUU€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ5bœ¤žPYÀ¶€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åžtœ¨Iœ¤žPYÀ¶ŒŒÀwpÀ”ÄAEEYÀu¤YÀw\ŒŒžt   A YÀw$YŒÀw(Àw$Àw8Àw<Àw0 YÀw$ Àw$Œ ŒO €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÅYŒ Àw$ŒU U UY ]ÀwuYÀ¶À·¼]uYÀ¶À·¼€´"À­8YÀw$YŒŒÀw(Àw$À·´Àw8ÀuÌÀs<À¶YÀ¶À·¼Àw<ÀuÌÀwpŒÀv|YUYYÀ·¼Àw0YÀuÌÀuÄÀ´¨À´øÀv„ÀwÀwYÀw$€Þ €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åœ¤žPŒYÀ¶ÀwpYÀw$]ÀwÀ­8ÀwXAEE€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åžt<  ]Àw'AAAYYW ŒÀw$€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Å ]Àw€Û €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åœ¤žPYÀ¶ÀwXAEE€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÅYŒYÀw$]ÀwŒžt8 Àwx ]Àwp]uYÀ¶À·¼À¸ À¹„ uÀ´¨ÀµAÀ¹„À´ø uÀ´¨€«ÀwÀwYÀwpYÀwpÀwXÀwX]]]uYÀ¶À·¼YÀ¶À·¼YÀ·¼ŒŒÀ¸ À¹„uÀ´¨À´øÀµÀ´¨]uYÀ¶À·¼À·¼€è €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åœ¤œ°žPYÀ¶Àwp]uYÀ¶À·¼ÀwÀwÀwXAEE€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Åžt YÀ·¼#œ¤žPÀ´ôÀwpÀ¶|Àwp{A]Àu¤AÀwpAAÀwpÀwpAÀwpEœ¤žPÀ­8Àu¤€„Àu¤€ÅÀu¤€ÕYuÀu¤Àu¤AEE €ÕYuÀu¤Àu¤AEEYuÀu¤Àu¤AEE€ÕYuÀu¤Àu¤AEE Àw\Àu¤ Àw\€„Àu¤€ÅÀu¤>YÀw\€ÕYuÀu¤Àu¤AEE€„Àu¤€ÅÀu¤œ¤žPYÀw\À­8UŒŒŒ"œ¤žPYÀw\ÀwpÀ­8žtœ¨žPÀ•TÀwpEÀu¤À•TÀwpÀ­8œ¨œ¤žPÀw\œ¤žPÀw\Àº Àu¤]€Ý€Ý]€Ý ]€Ý€Ý ]€Ý€Ý ]Àu´8€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌÀ»PLYUÀ¶À»¤YUÀ¶À»¤UÀ¶À»¤7€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ ]À¶pUÀ¶À»¤YUÀ¶À»¤1UÀ¶À»¤YUÀ¶À»¤‡<Àu¤Àwp]Àu´]ÀwpÀwpÀº Àº Àº À­8Àu¼€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYÀtüÀwdÀwhYÀwhÀ¶xYYÀu¤]Àu¤ÀuÌ]Àu¤YÀu¤@YÀ·(À¶À»œÀ»ˆÀ»PÀs<LYÀ¶À·¼À¶pÀ¶pÀ¶À¶|YUÀ¶À»¤À»¤À»¤ÀwxÀ­8Àv|À»¤À¶YUÀ¶À»¤EUÀ¶À»¤À¶5À»ˆœ¤žPœ¨Àw\]U]ÀºÈ U]]U] ]Àº˜ Àº˜]U]ÀºÈÀºÈÀº˜À­8œ| AÀvp YÀvxœ|U]Àº˜YÀvpdYÀvpAÀvpÀs<Às8]Àvp]ÀvpYÀvt]YÀvxÀ­8œ|À­8œ|]Àvp$U]Àº˜YÀvpœ¤YÀvpU]Àº˜YÀvp8Às<Às8YÀvpAÀvpU]Àº˜YÀvp(€á]Àº˜YÀvpœ¤YÀvpYUÀ¶Àwh YUUÀ¶Àwh]Àu¤]YÀu¤ YÀwh À¶Àwh À¶UÀ¶Àwh ]YÀu¤0 UÀ¶ÀwhÀu¤UUÀ¶Àwh]Àu¤+ UÀ¶ÀwhUUÀ¶Àwh]Àu¤( €ÁUUÀ¶Àwh]Àu¤À»0UYÀ»0€ÁRYÀ¶YUÀ¶ÀwhYUUÀ¶Àwh]Àu¤]YÀu¤YÀu¤,YÀ»0œ¤À¶xYÀwh]YÀu¤*U]Àº˜YÀvp]Àº˜YÀvpÀ»4œ¤À¶Àwh À™LÀ™L4 À»œÀ¶À»ˆÀu¤Àu¬YÀ¶À¶À·,],  YÀ¶pÀuÌÀ¶À¶*À»”œ¤À¶xÀu¤YÀ·(À­8ÀuÌ YÀyYAÀ»ˆÀ»ˆ ÀyAÀ»ˆÀ»ˆ!YAÀ»ˆÀ»ˆœ¤Àu¤Àu¬€YÀvpB ]ÀvpÀs<Às8]ÀvpYÀvt]YÀvpAÀvp$€YÀvpœ¤Àu¤YÀvpÀsìÀs<Às8À»ˆÀ»ˆÀsì3 œ¤žPÀu¤YÀvpYÀvpÀºôÀ¶À»ˆ,À»ˆYÀ·(]Àu¬]Àu¬Àu¬À·,yœ¤žPÀu¤Àº À»PYÀvpYÀ·(YÀvpYÀvpÀºôYÀ·(YÀ·(YÀ»„YÀ»0À»4À¶EuYÀu¤YÀu¤UYÀu¤Àwp uÀ»P UÀ»PUYÀ·(]€YÀvpYAÀ»ˆÀ»ˆÀ»”uYÀu¤YÀu¤ uYÀu¤YÀu¤ Àwh UÀ»P uÀ»P uÀ»PUYÀ·(] AÀ»ˆÀ»ˆÀ»ˆ UÀuÌÀwhÀuÌ‚¤UÀ­8uYÀu¤YÀu¤YÀu¤YÀu¤Àu¤UYÀu¤ÀwpYÀu¤ÀwpYÀu¤€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYYUÀuÌÀwhYÀtüYUÀuÀtžtuÀ»P]ÀvpÀs<Às8]ÀvpYÀvt]YÀvxÀ­8UÀ»P]ÀvpÀwpÀ»PYÀvpAÀvpUYÀvpYÀvpYÀvpYÀvpUYÀ·(]YÀ·(€YÀvpYÀvpUYÀvpYÀvpYÀvpYÀvpYÀºðÀºôYÀ·(YÀ·(YÀ»„YÀ»0À»4À¶]Àu¬]Àu¬Àu¬]Àu¬YÀ»„À™LÀ™LÀº Àu¼Àt4À»ˆYAÀ»ˆÀ»ˆÀ»ˆÀ»ˆÀ»@À»HÀ»<Àº À»”ÀuÌÀ¶YÀ¶À»œ\œ¤žPÀu¤À¶xÀº YÀwhÀwhÀwd]Àu¤]Àu¤YÀtüYÀu¤ÀwpÀuÌœ|UÀ»PYÀvxœ¤žPYÀw\À¶YÀ¶Àu¤9œ¤žPÀ­8ÀuÀ]€YÀuÌYÀwpÀ­8žtœ¤žPœ¨Àu¤Àwpœ¤žPÀu¤Àwp žPÀ¶À·¼žP žPÀ¶|žPÀ¶À¶|2 $À¶pÀ¶À·¼À¶xÀ­8À¶|À­8žP ]€ÕXd$]€YÀuÌYÀwpÀ­8žt A ]€ÕX€ÕX€€ ]€ÕXd]€YÀuÌYÀwpÀ­8žtYÀuÌžtÀ­8YÀwp]€YÀuÌYÀwpÀ­8žtAEœ¤žPÀ­8ÀuÌ]€ÕX]€YÀuÌYÀwpÀ­8žtUÀwpÀuÌ UÀwpÀuÌ YYÀuÌ€¯$]€ÕXÀ¶pÀ¶À¶|YÀ¶À·¼À¶xÀuÀÀwdUÀwpÀuÌÀuÌÀwp]€YÀuÌYÀwpÀ­8žtYÀuÌžtÀ­8YÀwp YÀ·¼Aœ¤žPÀ­8ÀuÌÀ¶]€YÀuÌYÀwpÀ­8žtœ¤žPÀ­8YÀu¤9œ¤žPÀ­8Àu¤]€YÀuÌYÀwpÀ­8žtžPÀ­8Àu¤YUUŒŒYUUŒŒUUŒŒ UŒŒYUUŒŒ Uœ¤žPÀ¶ŒŒ  U U]*UÀuÌAU-U]œ¤žPÀu¤]ÀwpŒŒ  YÀw\œ¤žPŒŒÀw\UY] Y] Àw\]UY] ]"UY]Y]œ¤žPŒŒYÀw\ Àu¤Àwp$U]œ¤žPŒŒÀw\ U@] U@2U@U]]]@œ¤žPœ°ŒŒÀu¤  UY À¶ UYYÀ¶UYY/UUYÀ¶Yœ¤žPÀ­8ŒŒ À¶žPYÀ¶Y À¶ AÀv¼ÀvˆÀvÀv˜Àv ÀvŒÀv”ÀvœÀv¤Àv´Àv°Àv¸À¶ À­8Àv|EÀv˜Àv˜Àv˜Àv˜Àv˜]UÀwpÀwpÀ¶ À¶´À¶¸À¶¼À¶ÀÀ¶ÄÀ¶ÈÀ¶ÌÀ¶Ð]UÀwpÀwpUÀwpÀwp ÀwpÀ¶ €Ý5]ÀuÌÀuÌ]ÀuÌÀw¤YÀwpÀwp]Àwp]UÀwpÀwpÀwpÀ¶ À¶ À¶´À¶´À¶¸À¶¸À¶¼À¶¼À¶ÀÀ¶À À¶ÄÀ¶ÄÀ¶ÈÀ¶ÈÀ¶ÌÀ¶Ì À¶ÐÀ¶Ð ÀwxÀ­8Àv|Àv˜YÀuÌÀ¶À¶ À`Às<ÀwpÀ¶ÀvXY€À¶À¶ ÀvdÀv` YÀ¶  Àvx€À¶À¶  Àu¬ ÀvtÀ¶À¶ U YÀvxÀvXYÀvtY€À¶À¶ À¶xÀvdÀuÀÀu¤Àv`À¶pYÀ¶ À·(À`Às<Àvp ÀvpÀ·( À`Às<YÀ·(œ¤YÀvpYÀ·(œ¤Àu¤ Àºð!YÀºðÀs<À`YÀvpÀ¶À¼$À¼$ œ¤ž,œ°YÀvpÀ»Ü ÀtìÀy @œ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼EÀy Ày Dœ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼EYÀy Ày4 ÀyP@ Ày8YÀt4YÀyPÀ­8YÀw\Ày0Àw\Ày4Ày(Ày,@œ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼EÀy 1 À»¤Àt4Ày À»Ü@œ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼EÀyP+=AÀ¶|AYÀ·¼AYÀ·¼EUYÀ·¼YÀ·¼À¸ŒÀ¶Œ]YÀvp*=AÀ¶|AYÀ·¼AYÀ·¼EUYÀ·¼YÀ·¼)1AÀ¶|AYÀ·¼AYÀ·¼E' AÀ¶|AYÀ·¼AYÀ·¼E  +À›ÌÀyœ°À¶À»Ü=AÀ¶|AYÀ·¼AYÀ·¼EÀ­8œ°Àv8UÀ·¼ÀºÀ·¼ÀºUYÀ·¼YÀ·¼À·¼À¸ŒÀ¶ŒYÀ·¼YÀ·¼À»ˆ]YÀvpYÀvp]À¶À·,À­8À»ˆ]À¶À¶À»¤À¶|À`Às<œ”@ œ¤ž,]YÀvpÀyT=œ¤ž,=AÀ¶|AYÀ·¼AYÀ·¼EÀ¶À­8À¶xÀs<À¶À»ˆœ¤Àu¼À¶ Àº(FÀvˆÀvÀv˜Àv ÀvŒÀv”ÀvœÀv¤Àv„Àv¸Àv°Àv´Àv¼Àº(À­8Àv| YÀ»œ YÀ»”uYÀ»ˆYÀ»œYÀ»”! uYÀ»ˆYÀ»œYÀ»”€ã!À­8Àu¤Àu¬YÀvp€YÀvpYÀvpYÀ·(€áÀ¶xYÀtüYÀtüYÀwhÀwhÀwhYÀtüÀ¶xYÀtüYÀwhYÀ»„À»4YÀ»0À»ˆÀ»ˆÀ»ˆÀ»@À»HÀ»<À»ˆÀuÌÀ»”À»œÀ¶1uYÀ»ˆYÀ»œYÀ»”œ¤À¶ÀuÀ ]À·(]Àu¬Àu¬À™L]À·(œ¤ÀuÀ]Àu¬E!À¶|YÀ»0À»4Àº À»ˆ1À»ˆÀ¶À¶ÀtÈE uYÀ»ˆYÀ»œYÀ»”,uYYÀ»ˆYYÀ»œYYÀ»”YYÀ»ˆYYÀ»œYYÀ»” YÀ»œ YÀ»”À¼ 'Y€ÉYÀvpÀ¶€ÍÀtÈÀ» À»˜À»¨UÀ»¸À»äÀ»äÀ»Ø AÀ»¤EÀ´˜YAAY& ÀuÀuYÀ»ˆYÀ»œYÀ»” YÀ»ˆYÀ»œYÀ»”+uYYÀ»ˆYYÀ»œYYÀ»” 1YÀ»ˆ 1YÀ»œ 1YÀ»” À»” À»¬ ÀuÀÀ·(Y]$ €ÉYÀvpÀ¶€ÍÀtÈ YÀ»œ YÀ»”]UÀ»¸À»ä‚¿aÀu¼ÀuÌÀ¶À¶YÀ»„YÀ¶À`Às<œÄÀ»ìYÀ»ˆuYÀ»ˆYÀ»œYÀ»”uYYÀ»ˆYYÀ»œYYÀ»”YYÀ»ˆYYÀ»œYYÀ»”YÀ»œYÀ»ˆYÀ»”YÀ»œYÀ»¬YÀ·(ÀtXUYÀvpYÀvpÀs8YÀvpYÀvpUYÀvpYÀvpYÀvpYÀvpYÀºðÀºôYÀ·(YÀ·(Àº À¼ Àt`Àt´Y€ÉYÀvpÀ¶€ÍÀtÈYÀ»¤YÀ»œYÀ»ˆYÀ»ˆÀ» YÀ»œÀ»˜À»¨À¼$]]ÀtXÀtlÀ¼$ÀtXÀuÌÀ¶YÀ·(À»ÜÀ¼$À»°UÀ»¸À»ä]Àvp]ÀvpYÀvt]YÀvxœ|À»äÀ»Ø]ÀvpÀ­8À»¸AÀ»¤EAÀ»¤EÀ¼$À´˜À·,À»ŒÀµlÀ»¸@œ¤ž,=AÀ¶|AYÀ·¼AYÀ·¼EÀ­8Àt40€YÀ»ˆYÀ»¤YÀ»œYuÀ¶YuÀ¶! €À»ˆÀ»¤À»œuÀ¶ À»ˆÀ»¤À»œuÀ¶/€YÀ»ˆYÀ»¤YÀ»œYuÀ¶YuÀ¶uÀ¶À¶ YuÀ¶À¶ UÀ¶YuÀ¶À¶  YUÀ¶YuÀ¶À¶  YÀºð€ÆÀu¼À¶À¶À»ìÀº YÀtÈ€YÀ»ˆYÀ»¤YÀ»œYuÀ¶YÀ»œYÀ»ˆYÀ»¤YuÀ¶À»ˆYÀ»ˆÀ»ˆÀ¶À»ˆÀ»ˆÀ¹¸YÀ¶À`Às<œÄÀ¼$À¼$œ¤ž,À­8Àt4UYÀyTÀyTUYÀyTÀyT5UYÀyTÀyTÀyTYÀyT]YÀvpœ¤ž,YÀyT€E€Å ÀiˆYUÀuÀUtŒAœ°ÀiˆeYÀuÀ€E€ÅYUÀuÀUtŒ Àv8ž,%UYÀ¼$YUUÀu¤ÀwpYUUÀu¤Àwp$UYÀ¼$YUUÀu¤ÀwpYUUÀu¤Àwp# UUÀu¤ÀwpUÀ|ÜÀ|pk YÀyT5¢Äž,YÀ·(UYÀ¼$YUUÀu¤ÀwpYÀ¼$YUUÀu¤ÀwpY5"¢Äœ¤ÀyXYÀvpYÀvp A€½ e€Ñ ]U€½ AÀ¶€½ 5  €Ñõ U€½ ]U€½5 ]U€½€½À¶pÀ¶À¶|€½À¶x#]U€½À`¢ÐÀs<Àu¤€Ñ! EÀ¶pÀ¶|€½€½€Ñ¢ÐÀs<Àu¤ ÀuÌu uœd uuU U À·¼ À¹¸ U]]) U€„€Å€„€ÅU] €¥Àvt ÀvxUÀvt Àvt YÀvx]Àv|]Àv| ]Àv|]Àv| ]Àv|]Àv| ]Àv|]Àv|]Àu¼]Àu¼Àu¼ ]Àvt ]Àvt]Àvt]ÀvtÀv| ]Àv|,]Àvt]ÀvtÀwŒYÀuÌÀuØÀu¼ ]Àu¼€ÀuÌÀvt UÀvt UÀvtÀvx E€© A€©EA€©E €Õ ‚ñ‚ñ €Õ(€íÀ¶pÀ¶|€íÀ¶pÀ¶| €íÀ¶pÀ¶| €íÀ¶pÀ¶| €íÀ¶pÀ¶|œ” œ”œ˜œ˜eAœ˜E Aœ˜Aœ˜ œ˜œ˜ œ˜œ˜(]YÀvp(œ˜ ]YÀvp œ˜ ]YÀvpœ˜8(AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌ(œ  (]À¶(À`(œ” (€í 8 AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌ œ  ]À¶ œ” €í  ]À¶^ Às<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀv8œ ]À¶À`œ”€í œ¨œ¨eAœ¨E Aœ¨Aœ¨ œ¨œ¨ œ¨ ÀµÌ]Y œ°œ°œ°ÀµÌÀµÌYY œ°Àt ÀtÀt UÀtÀt œÄ€¥  €¥ €¥  ‚% ÀtüÀ­8 œÄÀtü ÀtüœÄ œÄYÀtüœÄœÄYÀtü YÀtü œÄÀt4 œÄÀu¼ œÄœÄÀtüœÌœÌeAœÌE AœÌAœÌ œÌœÌ œÌœÌœÔœÔeAœÔE AœÔAœÔ œÔœÔ œÔœÔ À`À­8Às<œÄ À¶ÀuÌ Àtü À`À­8Às<œÄÀ»¤ À´”ÀtÈ À´˜ÀtÄ À`À­8Às<œÄœÌœÔ(Àwp(À¶(À´ì(À´ô (YÀvp (YÀ»„ (YÀu¤(À´¬ (YÀ¶ (YÀtü Àwp À¶ À´ì À´ô YÀvp YÀ»„ YÀu¤ À´¬ YÀ¶ YÀtüb ÀwpYÀ¶À´ìÀ´ôYÀvpYÀ»„YÀu¤À´¬YÀ¶YÀtüYÀ»„YÀtü( À¶|ÀuÀÀ¶À¶À¶pÀ¶p@ À¶x@'ÀwdÀuÀÀ¶xÀ­8YÀwhÀwhÀ¶À¶|]€ÕX]€ÕXeAE AA(À¶|(ÀuÀ(À¶p(@& À¶|ÀuÀÀ¶À¶À¶pÀ¶p@ À¶| ÀuÀ À¶p @KFMicrosoft.FSharp.Compiler.Ilxgen+ValStorage+StaticField@DebugTypeProxy(À¶x À¶x@ À¶xNIMicrosoft.FSharp.Compiler.Ilxgen+ValStorage+StaticProperty@DebugTypeProxy(Àwd (YÀwh(Àwh% ÀwdÀuÀÀ¶xÀ­8YÀwhÀwh Àwd YÀwh ÀwhFAMicrosoft.FSharp.Compiler.Ilxgen+ValStorage+Method@DebugTypeProxy(]€ÕX À¶À¶|]€ÕX ]€ÕXC>Microsoft.FSharp.Compiler.Ilxgen+ValStorage+Env@DebugTypeProxyC>Microsoft.FSharp.Compiler.Ilxgen+ValStorage+Arg@DebugTypeProxy ]€ÕXE@Microsoft.FSharp.Compiler.Ilxgen+ValStorage+Local@DebugTypeProxy       $@@@@eA@E A@A@WRMicrosoft.FSharp.Compiler.Ilxgen+OptionalShadowLocal+_NoShadowLocal@DebugTypeProxy(  TOMicrosoft.FSharp.Compiler.Ilxgen+OptionalShadowLocal+ShadowLocal@DebugTypeProxyH H LXAXXXeAXE AXAX (A A AojMicrosoft.FSharp.Compiler.Ilxgen+NamedLocalIlxClosureInfo+NamedLocalIlxClosureInfoGenerator@DebugTypeProxy(  ojMicrosoft.FSharp.Compiler.Ilxgen+NamedLocalIlxClosureInfo+NamedLocalIlxClosureInfoGenerated@DebugTypeProxy` ` d(e€¥(e€¥pe€¥e€¥p e€¥ e€¥p e€¥e€¥p e€¥p e€¥pp p tY+tYYYUÀuÌÀwhYÀtüteAtE AtAtUPMicrosoft.FSharp.Compiler.Ilxgen+BranchCallItem+BranchCallClosure@DebugTypeProxy(YYUÀuÌÀwh) YYYUÀuÌÀwhYÀtü YYUÀuÌÀwhTOMicrosoft.FSharp.Compiler.Ilxgen+BranchCallItem+BranchCallMethod@DebugTypeProxy | €ŒeAŒE AŒAŒ ŒŒa Œ ŒŒŒŒ ŒŒŒŒŒ ŒŒ(œÄ(œ°(YUÀi”Àk´(Àiˆe(YUÀuÀUtŒ (YÀuÀ(€E€ÅYUÀi”Àk´ œÄ œ° YUÀi”Àk´ Àiˆe YUÀuÀUtŒ YÀuÀ €E€Å^ œÄÀ¶œ°YUÀi”Àk´ÀiˆeYUÀuÀUtŒYÀuÀ€E€Å Às<Àu¤  Àu¤ AUÀu¤ ÀuÌÀtüAAA AAA AA AAAAAAA AAA Às<À­8  ‚ñ‚ñ EÀtüÀuÌ À`Às<œ°Àu¼ Àt4 À`Às<œ°Àu¼Àu¤ E Àu¤ À`Às<Àv8œ° Àt4Aœ°AÀu¤AÜ  Àu¤à Àt4ä ÀuÀè Ày ì ÀyPð Àt4 À`Às<œ”@ œ°Àu¤! œ°Aœ°AÀu¤AÀ›ÌÀyœ° ÀyT U U)U%UUUY%UU ž1%UY%U %U UU Y%U%U 1U U YU(ÀµüÀµüžYÀ¶Àµü YÀ¶Àµü ÀµüeAžE AžAž) žžaYÀ¶YÀ¶ÀµüÀµü ž) žžžYÀ¶YÀ¶ÀµüÀµüž'žžžYÀ¶YÀ¶ÀµüÀµü YÀ¶ Àµüžž žž žž À­8€ížUÀ»œ EÀ»œ(ž =À»ˆ =À»¤ =À»”ž =À»ˆ =À»¤ =À»”@ À¼$À»ŒÀ»ŒÀ»¨YÀ»¤À» YÀ»œÀ»˜YÀ»”À¼( À»” À»¤ À»ˆ ž 1À»¤ =À»¤ 1À»¤ À»œÀ­8  ]] AÀ»ˆYÀ·¼]À¶ŒxUUžxUUž YÀ¼$ž UUžUž ž‚% ž ž žY žÀ¶ À¼$ UžYUž* žUžžÀ¼$YUžÀ¼$)UUž Už 1Už YUž YÀ»¤ YUž À¼(À»Œ žž(œ¤€íÀu¤uÀwpÀÁ Uœ°À¶YUÀ¶|À­8 €Õž,€Õž,€íÀu¤uÀwpÀÁ Uœ°À¶ A=]AYUÀ¶|À­8 €Õž, œ¤UÀ¶|À­8 À¶|À­8 UÀ¶|À­8]À¶]À¶À¶Uœ° À¶œ° À¶À¼$žž=À»¤ 1À»¤À¶ uÀwp Àu¤ÀwpUuÀwp uÀwpUuÀwp#UuÀwpuÀwpÀwp Àu¤žž À¶À»ˆYÀ·¼ž2 AÀ»ˆÀ¶À¶|]À¶ŒYÀ·¼YÀ·¼ À¶À»” À¶À»¤ À¶À»œÀ­8%Àu¤uÀwp%Àu¤uÀwp UUUÀu¤Àwp UUUÀu¤Àwp- UUUÀu¤ÀwpUUÀu¤Àwp-YUUÀu¤Àwp%Àu¤uÀwp& UYÀ¼$YUUÀu¤Àwp œ¤ ]À¶ ž,€Õž, ž,$ œ° ‚ñ‚ñÀ¼$À¶À¶À¼$ À¶Uœ°œ° Uœ° œ°œ° Uœ°Uœ° À»ˆ ž,À¶ À¶|À­8 EUÀ¶|À­8 YÀ·¼/ À¶|YÀ·¼YÀ·¼À·¼YÀ·¼À·¼ 1À·¼ YÀ·¼ YÀ·¼ 1À·¼ À·¼ YÀ·¼UUUÀu¤Àwp- UUÀu¤ÀwpUUUÀu¤Àwp UUUÀu¤ÀwpUÀu¤uÀwpY%Àu¤uÀwpUUUÀu¤Àwpl ž,%Àu¤uÀwpUÀu¤uÀwpÀu¤ÀwpY%Àu¤uÀwpUUUÀu¤Àwp1%Àu¤uÀwpY%Àu¤uÀwpUÀu¤uÀwp UÀu¤UUÀu¤Àwp Y%Àu¤uÀwp%Àu¤uÀwp 1UUUÀu¤Àwp UUUÀu¤Àwp YUUUÀu¤Àwp(ž,"=UYUUŒŒÀ¶ =À·¼ =À½° ]À·¼€í!=UYUUŒŒÀ¶ =À·¼ =À½°€í À­8ž, YÀ¶ 1À¶ YÀ¶YÀ¶EÀ¶5 YÀ¶-YÀ¶YÀ¶YÀ¶AAAAYÀ¶A0eAAYÀ¶AEuYÀ¶ AAYÀ¶AAYÀ¶AAYÀ¶A YÀ¶À·¼ =À·¼ YÀ¶YÀ·¼ ]À­8À·¼À¸ŒÀ¶Œœ¤ À¶Œ ]À·¼]À¶ŒÀ·¼À¶ˆÀ¶ˆ À½°0Œ ŒŒ Œ ž,UYUUŒŒÀ¶ YUUŒŒÀ¶UYUUŒŒÀ¶ UYUUŒŒÀ¶ UUŒŒ<]]UYUUŒŒÀ¶YUUŒŒA AAUYUUŒŒÀ¶YUUŒŒÀ¶ À½°7 À·¼À·¼]À·¼]À·¼À¸ŒÀ¶ŒÀ·¼À·¼œ¤> €YUYUUŒŒÀ¶AÀ·¼YÀ½° AYÀ¶A AYÀ¶A AYÀ¶ AAYÀ¶AAYÀ¶A AYÀ¶A =À·¼ EÀ·¼ À·¼ À·¼À·¼ žPžtuŒžtŒ žtÀ·¼ žtžtŒeAžtE AžtAžt uŒ" ž|uŒŒž€ž„žˆžŒQžtž|ž|uŒuŒŒŒž€ž€ž„ž„À·¼À·¼žˆžˆžtžtžŒžŒ uŒ4ž|ž|uŒuŒž€ž€ž„ž„žˆžˆžŒžŒ žtžt (uŒ uŒ uŒHCMicrosoft.FSharp.Compiler.Ilxgen+sequel+LeaveHandler@DebugTypeProxy(Œ Œ>9Microsoft.FSharp.Compiler.Ilxgen+sequel+Br@DebugTypeProxy(À·¼ À·¼OJMicrosoft.FSharp.Compiler.Ilxgen+sequel+CmpThenBrOrContinue@DebugTypeProxy(žt žt žtGBMicrosoft.FSharp.Compiler.Ilxgen+sequel+DiscardThen@DebugTypeProxy žtŒIDMicrosoft.FSharp.Compiler.Ilxgen+sequel+EndLocalScope@DebugTypeProxy ž| ž€ ž„ žˆ žŒUÀuÀUtŒ ÀuÀt! UÀuÀUtŒUÀuÀtUUŒŒUUUŒŒ YÀ¹¬UUŒŒŒŒ À½´UUUŒŒ% UUUŒŒUUŒŒ% UUŒŒUUUŒŒYUUŒŒÀ¶7 YUUUŒŒUYUUŒŒÀ¶# ÀºUYUUŒŒÀ¶ AÀ·¼E AÀ·¼EAAÀ·¼E AAÀ·¼E AÀ·¼E AÀ·¼EAAAÀ·¼E AAAÀ·¼EAAÀ·¼E AAÀ·¼E,eAAAÀ·¼E€©EEuÀ·¼ AAAÀ·¼E À·¼EAAAÀ·¼E EÀ·¼ À­8À·¼A Àw\ E€˜ À­8Às< Àwp E€˜ Àwp œ¤žP EÀwp œ¤œ¨Àwpžt EžP žtžt YÀ¶ 1À¶ YÀ¶ œ¤À­8 À¶ÀtÈ ÀtÈ œ¤À­8œÄ$ œ¤žPÀu¼YÀuÌÀ­8À¶ YÀ¶ EÀwpÀtÈ œ¤žPÀ¶À¶YÀ¶YÀ·¼À·¼ EÀwp Àv| E€˜Àv|Àv„Àv¸ÀvŒÀv”Àvœ Àv¤ Àvˆ ÀvÀv˜Àv  AÀv|Àwx Àwp A€˜AÀv|E A€˜Àv| E€˜Àwp œ¤žPÀ­8 EYUÀuÌÀwhÀwp œ¤žPÀ­8ÀwpYÀuÌ EUÀuÌÀwh5 œ¤žPÀ­8YUÀuÌÀwhžtÀuÌÀwpÀw\YÀuÌ EUŒŒ ÀuÌÀtü À¶ÀuÌ À¶ À¶$Àµì €± ]ÀµÌ€µ œ¤À­8 YÀwpÀ¶ ÀwpÀ¶ À­8À`Às<œÄ ÀuÌÀwp œ¤žPÀ­8žtÀuÀYÀwpYYUÀuÌÀwhÀ¶xÀ¶À¶À¶xÀ¶xÀ¶xÀ¶xYÀwpYÀwpÀ¶YÀ¶À¶hÀ½ˆ YÀ½ˆ€ŽUUYÀ¶YUYÀ¶YUŒŒŒUYÀ¶YÀ·¼À·¼À¶À¶hUÀ½ˆŒŒŒ œ¤žPÀ­8UŒŒ UÀ¶€­UÀ¶ÀwpU€­UÀ¶ÀwpÀ¶U% U€­UÀ¶ÀwpÀwp‚™UÀ¶Àwp‚•UÀ¶Àwp‚™UÀ¶Àwp‚•UÀ¶Àwp*‚™UÀ¶Àwp‚•UÀ¶Àwp E€­UÀ¶Àwp5 œ¤žPÀ­8žtYÀwpÀuÌÀ¶xÀ·”À·¼ UY€­UÀ¶ÀwpY€­UÀ¶Àwp Àwp€­UÀ¶ÀwpUY€­UÀ¶Àwp €­UÀ¶ÀwpZ UY€­UÀ¶ÀwpY€­UÀ¶ÀwpÀ¶YÀ¶YÀ·¼À·”! œ¤À­8œÄAÀ´ÌÀ´ÌÀuÌ À´ÌÀ´Ì! œ¤À­8œÄÀuÌAÀ´ÌÀ´ÌUÀuÌÀuÌÀuÌÀuÌ UÀuÌAÀ´ÌÀ´ÌÀwpÀuÌAÀ´ÌÀ´Ì9 AÀwpUÀuÌAÀ´ÌÀ´ÌUÀuÌAÀ´ÌÀ´Ì À´ÌÀuÌÀ´Ì< œ¤žPÀwpÀu¤ÀwpÀu¤ÀwpÀ­8ÀuÌÀ”ÔÀ”ôžt*€UYÀ¶YUŒÀ¶€½€UYÀ¶YUŒÀ¶UUYÀ¶YÀ¶ŒÀ½ˆŒŒ€žtŒYÀ¶žtYÀ¶žtžtŒÀ”üYÀ¶U]À·¼ŒŒUŒŒ- œ¤žPÀwpÀwpÀ­8ÀuÌÀ”ÔÀ• žtv€UYÀ¶YUŒÀ¶UUYÀ¶YÀ¶ŒŒŒYÀ¶œ¨À•À­8ŒU AÀ·¼ AÀ·¼ À·¼ AAÀ·¼ AÀ·¼ AÀ·¼ YÀuÌÀ­8YÀ¶À¸dÀ¸\À¸<À¸@À¸€À¸xÀ¸tÀ·¬À¸|À¸TÀ·œÀ¸XÀ¸DÀ·TÀ¸hÀ¸$À¸4À¸0À¸ À¸˜€’À¸dYÀ¶À¶À¸\À¸<À¸@À¸€ÀµìÀ¸xÀ¸tÀ·¬À¸|À¸TÀ·¤À·œÀ¸XÀ¸DÀ·TÀ¸hÀ¸$À¶|À¸4À¸0À¸ À¸˜À¸ À¹„À´ø À·¼À·¼ À·¼ ÀuÌÀs< ÀwpÀwpÀwp œ¤À­8AÀuÌÀ¶ ÀwpÀuÌ œ¤žPÀ­8À¶ UÀuÀu ]ÀuÌÀu Àu À­8œ¤ À»0Ày À­8œ¤YUÀtüÀuÌ YUÀtüÀuÌ ÀuÌÀuÌ( œ¤ÀyÀ­8À¶À»4YÀ»0UÀ¶YÀtüO À¶YÀtüÀ¶À¶pUYÀ»0À»4À»4YÀ»0YÀ»„YÀ¶ À»¬UÀ¶YÀtü UÀu¤Àu¤3UuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ ]À»¬8YUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆU]À»¬À»ˆ€Ê œ¤žPÀuÌÀ¶ÀyUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ]À»¬YUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆU]À»¬À»ˆ61UuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ7YUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ ]À»¬U]À»¬À»ˆ9 YUuAUÀ¶YÀtüÀ»¬YÀtüÀ»ˆ 1U]À»¬À»ˆ U]À»¬À»ˆ YU]À»¬À»ˆUÀuÌYÀy YÀyYU]À»¬À»ˆYUÀuÌYÀy€ê œ¤žPÀuÌYÀyYUÀuÌYÀyÀ¶ÀyUÀuÌYÀyYÀyÀyYÀyU]À»¬À»ˆYU]À»¬À»ˆYUÀuÌYÀyYÀyU]À»¬À»ˆYU]À»¬À»ˆU]À»¬À»ˆ 1Ày YÀy1U]À»¬À»ˆYU]À»¬À»ˆ YU]À»¬À»ˆ YÀy1UÀuÌYÀyYUÀuÌYÀyUÀuÌYÀy YUÀuÌYÀy ]À»¬]À»¬ AÀuÌÀ¶ À¶UÀuÌYÀy Àu¤ÀuÀ UÀu¤ÀuÀ8 œ¤À­8€„Àu¤€ÅÀu¤À´ìYÀu¤À¶À´ô$YÀu¤EÀu¤5YÀ¶À·¼ œ¤ À»„Àtü À­8œÄ À¶Àtü ÀuÀ œ¤À­8]ÀuÀ]ÀuÀÀuÀÀs< œ¤À­8 À´ìÀu¤ Àu¤ À­8À¶"]€ÕX]€ÕXÀ¶| UÀu¤Àu¤À´ì À´¬ÀtüÀ´¬ Àu¤ žP]À­8 ]À­8]À­8À­8]À­8 œ¤žPœ¨ EÀu¤Àwp žPH%U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒI %U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ ŒÀw$/ Àw(Àw8Àv|ÀvˆÀvÀvŒÀv”ÀvœÀv¸ UÀw$Œ AU U Àw0ÀuÄ& œ¤žPYÀ¶ÀwXAEEžt€¤ €U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€Å€U€ÉŒŒÀwpÀ”ÄAEEYÀu¤uYÀw\ŒŒ€ÅŒÀw$ À­8 ÀuÀÀu¤# œ¤žPÀ­8ÀwpÀu¤À¶|T œ¤žPÀ­8Àu¤€„Àu¤€ÅÀu¤€ÕYuÀu¤Àu¤AEEÀwpuÀu¤Àu¤AEEÀ¶|AÀwpÀwp œ¤žPAÀwpÀwpÀwpI œ¤žPÀ­8Àu¤€„Àu¤€ÅÀu¤€ÕYuÀu¤Àu¤AEE Àu¤ÀuÀ0]ÀuÀuÀwpÀw|ÀuÀÀu¤% E]Àu¤ÀwpAÀwpÀwpÀwp Àu¤Àw\ Àw\ ÀwpÀwp0 œ¤žPÀ­8€ÕYuÀu¤Àu¤AEEÀwp/ €„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤Àw\ €„Àu¤€ÅÀu¤Àu¤Àu¤AEE uÀu¤Àu¤AEE+ œ¤žP€ÕYuÀu¤Àu¤AEE uÀu¤Àu¤AEE€„Àu¤€ÅÀu¤ AÀvpUÀ¶Àwh UÀ¶ÀwhÀ¶UUÀ¶Àwh]Àu¤0 UUÀ¶Àwh]Àu¤UÀ¶ÀwhÀu¤+ UUÀ¶Àwh]Àu¤UÀ¶ÀwhUÀ¶ÀwhU]€ÁU]€ÁUÀ»0€Á€›UÀ¶Àwh]Àu¤ÀwhÀ¶€á]Àº˜YÀvpYÀvp]Àº˜]À“À]À“À]Àu¤Àu¤]À“ÀU]€ÁÀ“À€Á]2 UÀ»0€Á€ÁUUÀ¶Àwh]Àu¤ œ¤Àu¤UÀu¼YÀuÌ2 ÀuÌUÀu¼YÀuÌÀu¼Àu¼Àt4Às< AÀ»ˆÀ»ˆÀy, œ¤Àu¤YÀvpÀ·(YÀ·(À·( À»ˆÀ»ˆAÀ»ˆÀ»ˆ ÀuÌUÀuÌÀwh EÀw\ À¶ UYUUŒŒÀ¶ œ¤Àu¤]Àwp  œ¤žPŒŒ U]Àw\  €ÕX*]$€ÕXX`A E] œ¤žPÀ­8ŒŒ UÀ¶ EÀ¶ À`Às<À¶ À¶ Àwp À`Às<€À¶À¶ ÀuÌÀwpÀ­8À¶ €À¶À¶ Àvx À¶ ÀvtÀ¶ À`Às< À·(Àvp œ¤Àu¤]ÀwdÀ·(]ÀwdÀwdYÀ¶À¶ " uÀ¶À¶ €À¶À¶ ÀvpÀºè#UYÀ¶ Y€À¶À¶ YuÀ¶À¶  YÀvpÀºð€– Às<À`YÀvpÀvpÀu¼YÀvtÀºèÀ¶À·(UYÀ¶ Y€À¶À¶ Y€À¶À¶ YuÀ¶À¶ YÀvpÀºð']UYÀ¶ Y€À¶À¶  1Àvp YÀvpeYUÀºè Àºè&]UYÀ¶ Y€À¶À¶ "UYÀ¶ Y€À¶À¶ " €À¶À¶ uÀ¶À¶  YÀvp]YÀvt]]UYÀ¶ Y€À¶À¶ ]UYÀ¶ Y€À¶À¶  1Àºð Àºð YÀºð œ¤žPœ°Àu¤ŒŒ œ¤žPUŒŒ Aœ°Àu¤E œ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼EÀtìÀy UÀk°Àk´UÀk°Àk´UÀk°Àk´; œ¤žPÀ›Ì=AÀ¶|AYÀ·¼AYÀ·¼E EÀy ; œ¤žP=AÀ¶|AYÀ·¼AYÀ·¼EÀ­8 EÀyP: œ¤À›ÌÀy=AÀ¶|AYÀ·¼AYÀ·¼E œ¤ž,À­8À¶ EÀ¶|YÀ·¼YÀ·¼ YÀ·¼YÀ·¼À¶|AÀ¶|YÀ·¼ YÀ·¼E) EAÀ¶|AYÀ·¼AYÀ·¼E À`Às<œ”@ œ¤ž,À¶À­8 Àu¼À¶À¶xÀ·¼, œ¤ÀuÀYÀvpÀ·(YÀ·(À·( œ¤À¶& uYÀ»ˆYÀ»œYÀ»”ÀuÀ €ÅÀ­8  ÀuÀÀuÀ YÀyÀ»¬€§ œ¤À­8Àt4À¶ÀuÀÀu¬ÀyUYÀtüYÀtüYÀtüYÀtüUAUÀ¶YÀtüÀ»¬AUÀ¶YÀtüÀ»¬YÀuÀYÀyÀ»¬@]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ 1Ày YÀy?]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ;€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ YÀy YÀuÀ€…Àu¤]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ 1À»¬ À»¬ YÀ»¬Àu¤]Àu¬ ]À·(ÀuÀ( œ¤YÀvpÀ·(YÀ·(À·(H œ¤YÀ·(YÀvpYÀ·(À·(YÀ·(À·(YÀ·(À·(AÀvpÀs<Às8#€ÉYÀvpÀ¶€ÍÀtÈV œ¤À­8Àt4Àu¼ÀtÈÀ¶YÀtÈ€ÉYÀvpÀ¶€ÍÀtÈ €ÍÀtÈ"€ÉYÀvpÀ¶€ÍÀtÈ YÀtÈ* 1€ÉYÀvpÀ¶€ÍÀtÈ$ €ÉYÀvpÀ¶€ÍÀtÈ) Y€ÉYÀvpÀ¶€ÍÀtÈ ÀtÈÀvpYÀvpÀvp 1Àvp Àvp YÀvp Àº(Àv|(Y€ÉYÀvpÀ¶€ÍÀtÈ€ç œ¤À­8Àt4ÀtXY€ÉYÀvpÀ¶€ÍÀtÈ€ÉYÀvpÀ¶€ÍÀtÈÀ¶ÀtÈ]YÀvpYÀvpU]Àº˜YÀvp]Àº˜YÀvpYÀ·(Y€ÉYÀvpÀ¶€ÍÀtÈÀ»¤&1€ÉYÀvpÀ¶€ÍÀtÈ'Y€ÉYÀvpÀ¶€ÍÀtÈ Àv|Àº() Y€ÉYÀvpÀ¶€ÍÀtÈG ]ÀvpÀs<Às8]ÀvpYÀvt]]ÀvpÀ­8AÀvp 1À»¤ À»¤ YÀ»¤(U€ÉYÀvpÀ¶€ÍÀtÈ-YU€ÉYÀvpÀ¶€ÍÀtÈ€µ œ¤À¶Y€ÉYÀvpÀ¶€ÍÀtÈU€ÉYÀvpÀ¶€ÍÀtÈYÀvpÀ¶ÀtÈÀ¶YÀ·(YU€ÉYÀvpÀ¶€ÍÀtÈÀ»œ+1U€ÉYÀvpÀ¶€ÍÀtÈ,YU€ÉYÀvpÀ¶€ÍÀtÈ'U€ÉYÀvpÀ¶€ÍÀtÈ. YU€ÉYÀvpÀ¶€ÍÀtÈ 1À»œ À»œ YÀ»œYÀvpÀ¶ÀtÈ% €ÉYÀvpÀ¶€ÍÀtÈ uÀ¶/ uÀ¶€ÉYÀvpÀ¶€ÍÀtÈ Àº ]e YÀ»ˆw *œ¤À­8Àt4À¶ÀtXÀº Y€ÉYÀvpÀ¶€ÍÀtÈ€ÉYÀvpÀ¶€ÍÀtÈÀ¶ÀtÈÀº €ÉYÀvpÀ¶€ÍÀtÈÀ¶ÀtÈ]e]eY€ÉYÀvpÀ¶€ÍÀtÈYuÀ¶À»ˆY€ÉYÀvpÀ¶€ÍÀtÈY€ÉYÀvpÀ¶€ÍÀtÈÀ»ˆYÀ»ˆÀ»ˆYÀ»ˆÀ»ˆÀt¤Àt¬Ày YÀ»ˆ YÀ»ˆ ]Àu¤ ]e/ €ÉYÀvpÀ¶€ÍÀtÈuÀ¶ YYÀy YÀy€Û ]e]eÀ¶xÀ¶xÀ¶À¶xÀ¶xÀ»ˆÀ´øÀs<Àt`Àt´Àt¤Àt¬ÀyUYÀ»0À»4ÀuÌ]ÀuÌYYÀyYÀtüYÀtüYYÀyYYÀyYÀyÀyÀ»4YÀ»0 1À»ˆ À»ˆ YÀ»ˆ À­8À¼$ EÀ»¤ œ¤À­8 UÀtÈYUÀtÈ €À»ˆÀ»¤À»œuÀ¶€ œ¤À­8Àt4À¶À¶Àº YÀtÈUÀtÈÀtÈÀ¶À»ˆÀ»¤À»œYUÀtÈ€À»ˆÀ»¤À»œuÀ¶1UÀtÈYUÀtÈ UÀtÈ€À»ˆÀ»¤À»œuÀ¶ YUÀtÈ' 1€À»ˆÀ»¤À»œuÀ¶! €À»ˆÀ»¤À»œuÀ¶& Y€À»ˆÀ»¤À»œuÀ¶ œ¤ž,]YÀvp (YÀ¼$ (YÀ·((Y YÀ·( Y$ YÀ¼$YÀ·(YÀ·(Y UÀu¤]UÀ|ÜÀ|puYÀtüÀwpÀuÌ¿ÜÀ|ÜuYÀtüÀwpÀuÌUÀ|ÜÀ|p]UÀ|ÜÀ|p€žUÀu¤ÀwpÀu¤]UÀ|ÜÀ|pÀuÌuYÀtüÀwpÀuÌÀwˆYÀtüÀwp¿ÜuYÀuÌYÀwpÀ|pYÀuÌÀ|pYÀwpÀ­8À|Ü¿ä' ]UÀ|ÜÀ|pUUÀu¤Àwp(AÀ¶t5(AÀ¶p€Ñ(AÀ¶€½(AÀ¶€½ AÀ¶t5 AÀ¶p€Ñ AÀ¶€½ AÀ¶€½ AÀ¶t5 AÀ¶p€Ñ AÀ¶€½ AÀ¶€½3 AÀ¶t5AÀ¶p€ÑAÀ¶€½AÀ¶€½ ]u] €ÑY Y€½Y ƒ¹ƒ½ €½Y€½Y ]u] €ÑY  ]u] €ÑY u] €ÑY  €Ñ! ]u] €ÑY €Ñ €ÑEe€Ñ €Ñ€½ €½H À`Às<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀv8 Àv8 YÀv8 ÀyXœ¤ ¢Äœ ÀyXYÀvpYÀvp ¢ÐÀu¤ ]U€½¢ÐÀu¤ YÀºðYÀvp À¶p À¶p À¶pÀ¶p À`Às< Àv8 A€½e€Ñ €ÑaÀw|ÀuÀÀ­8Àxè]ÀwdÀu¤]ÀwdÀwdÀwŒYÀuÌÀuÌÀwpYÀwpYÀwpÀwp#]ÀwpÀs<AÀwpÀwpÀwp(]AAÀwpÀwpAÀwp]ÀwpÀyTÀs<ÀyTÀwpÀs<À­8Àu¤ÀwpUÀu¤ÀwpÀwpÀs<À­8Àwp%YÀZüYÀZüÀ[ÀZØÀs<%ÀwpÀs<À`À­8ÀuÌYÀwp Àu¤ÀwpUÀwpÀ­8]UÀwpÀ­82ÀwŒÀw|YÀwpÀuÀÀ­8ÀwpYÀuÌÀuÌ]UÀwpÀ­8Às<ÀwpuÀwpÀwpÀ­8]uÀwpÀwpÀ­8@ ÀwŒÀw|YÀwpYÀwpÀuÀÀ­8ÀwpÀwpYÀuÌÀuÌ#]uÀwpÀwpÀ­8Às<ÀwpS ÀwŒÀw|YÀwpÀw„YÀu¤YÀwpÀuÀÀwpÀu¤À­8ÀwpYÀuÌÀuÌS ÀwŒÀw|YÀwpYÀwpÀw„YÀu¤ÀuÀÀu¤ÀwpÀ­8ÀwpYÀuÌÀuÌ€áÀwpÀu¤ÀwpÀuÌÀ­8"]€áÀwpÀu¤ÀwpÀuÌÀ­8jÀwŒÀw|YÀuÌYÀuÌYÀuÌYÀwpYÀwpÀw„YÀu¤ÀuÀÀu¤ÀwpÀ­8ÀuÌÀwpÀuÌ.]€áÀwpÀu¤ÀwpÀuÌÀ­8Às<ÀwpfÀwŒÀw|YÀuÌYÀuÌYÀwpÀw„YÀu¤YÀwpÀuÀÀu¤À­8ÀwpÀuÌÀwpÀuÌÀuÌ0]€áÀwpÀu¤ÀwpÀuÌÀ­8Às<ÀwpEtÀwŒÀw|YÀuÌYÀuÌYÀuÌYÀwpÀw„YÀu¤YÀwpÀuÀÀu¤À­8ÀwpÀuÌÀwpÀuÌÀuÌÀuÌ]UÀwpÀuÌJ ÀwŒÀw|YÀuÌYÀwpÀw„YÀu¤ÀuÀÀu¤ÀwpÀuÌÀ­8ÀuÌ]UÀwpÀuÌÀs<Àwp$ÀwŒÀw|ÀuÀÀ­8YÀuÌÀuÌ]À­8Às<Àwp7 ÀwŒÀw|YÀuÌYÀwpÀuÀÀuÌÀwpÀ­8ÀuÌAÀuÌÀs<]UÀwpÀ­8]UÀwpÀuÌ]uÀwpÀwpÀ­8]¢ü¢ü#]€áÀwpÀu¤ÀwpÀuÌÀ­8 Y]¢ü ]¢üY¢üUÀ”ÌÀ­8]¢üÀwX ]¢ü ]¢ü¢ü ¢ü ¢üÀuÀ ¢üUÀ”ÌÀ­8£1]UÀwpÀ­8À­8Àwp]UÀwpÀuÌÀuÌ]uÀwpÀwpÀ­8Àwp]¢ü]¢ü]¢ü]¢ü¢ü¢üYÀuÀ]uÀwpÀwpÀ­8]€áÀwpÀu¤ÀwpÀuÌÀ­8Àu¤]€áÀwpÀu¤ÀwpÀuÌÀ­8ÀuÌÀuÌUÀu¤ÀwpÀu¤ÀwpÀwp]uÀwpÀwpÀ­8]À­8ÀwœÀwXÀ•TÀwÀ­8Y]¢ü]¢üÀwXY¢üY]ÀuÌ]ÀuÌÀw€À”ÌÀw”Àw\UÀ”ÌÀ­8À•\ÀuÀ]¢üÀs<À`ÀwpÀwÀ­8ÀjxÀjx Àw$€¥ ÀjxÀw+ ÀwpÀs<À­8ÀwpY€¥ÀwpjUÀu¤ÀwpÀu¤ÀwpÀuÀUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwpÀjxÀwÀwpÀwpÀs<À­8ÀwpÀwp€¥uÀwpÀwpÀwpAAÀwpÀwp€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwpAAÀwpÀwp€Î]¢ü¢üYYÀuÀUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤UÀu¤ÀwpÀu¤ÀuÀÀuÀÀuÀY€¥€¥uÀwpÀwpÀwpÀwpÀwpÀwpÀwpÀu¤ÀwpAAÀwpÀwpÀwpÀwpÀwpZ]€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8Às<ÀuÌÀ­8]¢üE6 Às<À`]UÀwpÀuÌÀuÌÀwpÀ­8]¢üO]€ÉÀuÀÀuÀÀuÀYÀuÀÀwpÀwpÀwpUÀuÌÀ­8Às<À`Àwp ]ÀwpAÀwpÀwpÀwp ]ÀwpÀwp4(A€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwp3A€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwp4 A€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwpD A€ÀuÀÀuÀÀuÀ€¥uÀwpÀwpÀwpYYÀuÀ Às<À­8ÀwpÀuÀÀuÀÀuÀ€¥À”Ì0 uÀwpÀwpÀwp€ÀuÀÀuÀÀuÀ€¥ À­8¢ü¢üFuÀwpÀwpÀwpÀwpÀwpÀwpuÀwpÀwpÀwpÀwpÀwpÀwp Às<À­8Àwp¢ü$uÀwpÀwpÀwpÀwpÀwpÀwp Às<À­8Àwp¢ü6ÀuÀ€¥uÀwpÀwpÀwpÀwpÀwpÀwpÀwp Às<À­8 ÀwX ]¢ü ¢ü]¢ü Y¢ü YÀuÀ¢ü ¢ü€ÀuÀÀuÀÀuÀ€¥ €ÀuÀÀuÀÀuÀ€¥uÀwXÀwpÀwp(YÀu¤À”ÄuÀwpÀwpÀwpÀwp uÀwXÀwpÀwpÀwX¢ü. Às<ÀuÌÀwXÀ•TÀwÀ­8À­8Y¢ü uYÀwXYÀwpYÀwp YÀwX ÀwX¢üuÀwXÀwpÀwp ÀwXÀwpÀwpuYÀwXYÀwpYÀwpAAY<uYÀwXYÀwpYÀwpYÀwXYÀwpYÀwp Às<ÀwpÀ­8ÀuÀÀuÀÀuÀ€¥À”Ì ÀwpÀ”ÌÀ­8¢üuÀwpÀwpÀwpÀwp À­8Àw\¢ü À®Ày` À­8¢üÀwpÀ­8À”ÌÀuÀ)uÀwpÀwpÀwpÀwpÀwpÀwpÀu¤) À­8Y€¥ÀjxYÀw$ 1Àw$ Àw$ YÀw$! Às<À­8ÀwpY€¥ ÀwpÀwp €Å£ˆ €Å£˜£p£l£p£lA£dAYY Y£d £dY}£p£lY£dYY£d€áÀwpÀuÌYÀuÌÀwpÀwŒYÀuÌÀuÌÀwp6€áÀwpÀuÌYÀuÌÀwpÀuÌYÀuÌ&€YÀtüYYÀu¤ÀwpÀuÌ%€YÀtüYYÀu¤ÀwpÀuÌ YYÀu¤4€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤Àu¤À­8ÀuÌ]Àwd€Àu¤Àwp€ÅÀu¤ €„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤¦„Às´Às´Às´ Às<Àu¤Àu¤ €Å£ˆ €Å£˜ÀuÀYÀuÌY Àu¤£ˆ £ˆ€Àu¤Àu¤€ÅÀu¤`€Àu¤Àu¤€ÅÀu¤€Àu¤£ˆ€ÅÀu¤€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆÀu¤ Àu¤Àu¤(Àwp£´€Àu¤Àu¤€ÅÀu¤Àu¤€¬A£ˆU€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU£ˆ£ÈÀs<€Àu¤£ˆ€ÅÀu¤€„Àu¤€ÅÀu¤€£ˆ£´€Å£ˆ€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆ*€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆ<U€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆYU£ˆ£È)€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆ¤F Às<€Àu¤£ˆ€ÅÀu¤€„Àu¤€ÅÀu¤€£ˆ£´€Å£ˆYU£ˆ£È7 €£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU£ˆ£È;U€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆYU£ˆ£È £ˆ£Èf€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆU€£ˆ€Àu¤Àu¤€ÅÀu¤€Å£ˆYU£ˆ£È_€£ˆ£È€Å£ˆÀs<€Àu¤£ˆ€ÅÀu¤€„Àu¤€ÅÀu¤Y€£ˆ£´€Å£ˆ YÀwhÀwdYÀtü£ˆ£È Àu¤ÀuÌl£ˆ£ÈÀ­8UYÀtüÀuÌYÀtüÀuÌUYÀuÌÀuÌÀuÌYÀuÌYÀtüÀuÌYÀuÌÀwdPÀu¤Às<€Àu¤€ÅÀu¤€Àu¤£ˆ€ÅÀu¤€£ˆ£È€Å£ˆÀu¤ Àu¤UÀu¤Àu¤ YÀu¤s€Àu¤Àu¤€ÅÀu¤Às<€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤€Àu¤£ˆ€ÅÀu¤€£ˆ£È€Å£ˆBu€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤€Àu¤€ÅÀu¤K€€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€£ˆ£È€Å£ˆ€Àu¤Àu¤€ÅÀu¤ U¤@ÀyT¤4£ÌAu€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤J€€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤ £ˆ ¤@¤@ U¤@ÀyT[ÀyTu€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤€€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤€£ˆ£´€Å£ˆ€„Àu¤€ÅÀu¤€Àu¤£ˆ€ÅÀu¤Y£ˆ€£ˆ£È€Å£ˆ€Àu¤Àu¤€ÅÀu¤U¤@ÀyT¤4£ÌÀ­8ÀyTÀv8Às<ÀyT£l Y£d£dY£d£p £d£d £deA£dE A£d A£d£l£p Y£dK £l£laY£dY£d£p£p£d£d £dO £d£l£lY£dY£d£p£p£d£d£l£p Y£d2 £l£l£p£p£d£d £d (Y£d Y£dA u£ˆ€„Àu¤€ÅÀu¤£´u£ˆ€„Àu¤€ÅÀu¤£´¥4Àu¤Y£˜¥4 u£ˆ€„Àu¤€ÅÀu¤£´ ¥4Àu¤¥4 Àw\Ày`Ày`YÀw\€Àu¤€ÅÀu¤Y£˜Àu¤]]2¥4€Àu¤€ÅÀu¤¥4ÀuÀYÀuÌY¥4 Àw\¥4g UYÀw\YÀw\YÀw\YÀw\£ˆÀy`YÀtüYÀu¤YÀu¤€„Àu¤€ÅÀu¤¥4¥4=¥4€„Àu¤€ÅÀu¤A¥4AÀwp¥4À­8¥4YÀw\]¥4 Àwp¥4 A¥4Àwp€”ÀuÀÀw¤ÀxTYÀwpYÀuÌ¥4ÀwŒÀ­8ÀuÌÀwp€áÀwpÀuÌYÀuÌYÀwpÀ­8YÀuÌÀwpYÀwpÀw|ÀwYÀw\Àw”Àw\M]¥4€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤A¥4AÀwp¥4¥4Àwp¥h- €Àu¤£ˆ€ÅÀu¤€£ˆ£´€Å£ˆGAAA£´U£´€Àu¤£ˆ€ÅÀu¤€£ˆ£´€Å£ˆU€£ˆ£´€Å£ˆ £ˆ£´£´U€£ˆ£´€Å£ˆ-U€£ˆ£´€Å£ˆ€£ˆ£´€Å£ˆ?€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤ Ào¥4 Ào¥4AAUÀu¤AAÀw\AAYÀw\AAÀw+AAAÀwpAAÀwX]+AAAÀwpAAÀy]€Î AAAÀwpAAÀwp]AAUÀu¤AAÀw\AAYÀw\AAÀwAAAÀwpAAÀwX]AAAÀwpAAÀy] A¥4ÀyT€„ Ào¥4Ào¥4¥4€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤€£ˆ£´€Å£ˆ€£ˆ£´€Å£ˆz€€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤ÀyT$(Yu£ˆ€„Àu¤€ÅÀu¤£´(€£ˆ£´€Å£ˆ (Y£ˆ$ Yu£ˆ€„Àu¤€ÅÀu¤£´ €£ˆ£´€Å£ˆ Y£ˆj Yu£ˆ€„Àu¤€ÅÀu¤£´€£ˆ£´€Å£ˆ€Àu¤£ˆ€ÅÀu¤Y£ˆ€„Àu¤€ÅÀu¤ €Àu¤£ˆ€ÅÀu¤ €£ˆ£´€Å£ˆW¥4Yu£ˆ€„Àu¤€ÅÀu¤£´Yu£ˆ€„Àu¤€ÅÀu¤£´Y£ˆY£ˆ$ Yu£ˆ€„Àu¤€ÅÀu¤£´ Y£ˆ ¥4¥4€Àu¤£ˆ€ÅÀu¤ Àu¤£ˆ< €Àu¤£ˆ€ÅÀu¤€Àu¤£ˆ€ÅÀu¤UÀu¤£ˆY£˜¥<u€„Àu¤€ÅÀu¤£´€„Àu¤€ÅÀu¤£´< u€„Àu¤€ÅÀu¤£´u€„Àu¤€ÅÀu¤£´£ˆ€„Àu¤€ÅÀu¤£´! u£ˆ€„Àu¤€ÅÀu¤£´ Ày`Ày`Àw\A¥4AÀwp¥4 A¥4AÀwp¥4 ¥4¥4Àw\£ˆ €„Àtü€ÅÀtüÀu¤> €„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü¥hY€„Àtü€ÅÀtü Àu¤€„Àtü€ÅÀtü* €„Àtü€ÅÀtü€„Àtü€ÅÀtüU£´KYÀu¤Y€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü U£´£´, €„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤$ ]¥4A¥4AÀwp¥4¥4Àwp €£ˆ£´€Å£ˆ £ˆ&]YuY¦€YÀuÌYÀwp"YuY¦€YÀuÌYÀwp15€Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤%]YuY¦€YÀuÌYÀwp uY¦€YÀuÌYÀwp€‚ ]YuY¦€YÀuÌYÀwp]YuY¦€YÀuÌYÀwpYuY¦€YÀuÌYÀwpY1Y5 ¦„Àu¤ UÀu¤]UÀu¤A€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤YÀtü"]UÀu¤Às<¦„Àu¤Àwp AÀu¤UYÀu¤ Àu¤UYÀu¤UYÀu¤$AÀu¤UYÀu¤YÀu¤ ¦„Àu¤¦„YUÀu¤ Àu¤ÀwpUÀu¤ UÀu¤ UÀu¤Àu¤k¦„YUÀu¤YUÀu¤€„Àu¤€ÅÀu¤YUÀu¤€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤Mu€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤€ÅÀu¤Às<ÀyTY¦€uY¦€YÀuÌYÀwpY¦€YÀuÌYÀwp uY¦€YÀuÌYÀwp ¦„ Às<¦„ ]UÀu¤Àu¤Àwp UÀu¤Àu¤ Àu¤UÀu¤€€ÅAAE€€ÅA €Å£ˆ €Å£˜ £ˆYÀu¤ Àu¤ £˜UÀu¤AY¥°AY¥°*]€áÀwpÀuÌYÀuÌYÀwpÀ­8J ÀwŒYÀuÌÀ­8ÀuÌÀwpYÀwpÀwpÀwŒYÀuÌÀ­8ÀuÌÀwp1]€áÀwpÀuÌYÀuÌYÀwpÀ­8ÀwpÀu¤À­8ÀuÌ]Àwd¥¼ ¥°YÀwh YYÀwh¥¼YYÀwh¥°Y¥°Y¥° ¥°¥°¥°¥¼¥¼Y¥°Y¥° ¥°¥°¥°¥°¥¼Y¥°¥°¥°¥° Àwp¥°Àw¤YÀwpYÀuÌ ¥°Àwp ÀuÌ¥° YÀuÌ¥°Às<ÀuÌ0AYÀu¤A¥°UYÀu¤UÀwpÀuÌ UYÀu¤YUÀwpÀuÌYUÀwpÀuÌUYÀwpYÀuÌYUÀwpÀuÌ YÀu¤¥°UÀwpÀuÌUYÀu¤YUÀwpÀuÌUYÀwpYÀuÌUYÀu¤UÀwpÀuÌ€¾AYÀu¤A¥°UYÀu¤UÀwpÀuÌYÀu¤¥¼YÀu¤Y¥°UYÀu¤YUÀwpÀuÌYUÀwpÀuÌYÀu¤UYÀwpYÀuÌYÀwpYÀuÌÀwpÀuÌÀu¤3UYÀu¤UÀwpÀuÌÀs<À­8YÀu¤¥°UYÀu¤UÀwpÀuÌ5Às<À­8UYÀu¤UÀwpÀuÌÀwpYÀu¤ÀwpÀs<À­8¥°YÀu¤AY¥°AY¥°Y¥°¥¼Y¥°Y¥°Y¥°Y¥°$Y¥°Y¥°¥°Y¥°Y¥°¥°Y¥°Y¥°Y¥°AY¥°AY¥°Y¥° Y¥°AY¥°AY¥°Y¥°Y¥°YY¥°Y¥°YÀwpY¥è ¥°UYÀuÌYÀu¤¥è UYÀuÌYÀu¤ÀuÌYUYÀuÌYÀu¤2Y¥è]ÀwdYÀuÌYÀuÌYÀuÌÀuÌL¦Às<Àu¤À­8YÀtüYÀuÌÀuÌY¥°YUYÀuÌYÀu¤$UY¥°YÀuÌUY¥°YÀuÌU¥°YÀuÌ9¥¼Y¥°YÀuÌUY¥°YÀuÌYÀuÌY¥°U¥°YÀuÌÀs<¥°ÀuÌ!A¥°AÀuÌU¥°YÀuÌYU¥°YÀuÌ ¥°ÀuÌU¥°YÀuÌ U¥°YÀuÌ¥° U¥°YÀuÌÀuÌ6A¥°AÀuÌU¥°YÀuÌYU¥°YÀuÌ+UY¥°YÀuÌÀs<Y¥°YÀuÌ+ ¥°YÀu¤U¥°UYÀuÌYÀu¤ ¥°UYÀuÌYÀu¤Às<YYÀu¤EUY¥°YUYÀuÌYÀu¤À­8Às<Y¥°YYÀu¤AY¦€A¥°¥°Y¦€AY¦€A¥°¥° ¥°9AY¦€A¥°¥°¥¼Y¦€Y¥°Y¦€YÀuÌ¥°Y¦€¥° ¦0 A¥°AuY¦€¥° YÀuÌYÀwp" uY¦€YÀuÌYÀwp¥°m]YuY¦€YÀuÌYÀwp]YuY¦€YÀuÌYÀwpYuY¦€YÀuÌYÀwp¥°¦„¥°Àu¤6A¥°AYÀu¤¥°A¦„A¥°AÀu¤¥°¦„A¦„A¥°AÀu¤¥° ¥°YÀu¤¥°#A¦„A¥°AÀu¤¥°Y¥°'Y¥°Às<¦„YÀuÌYYÀu¤&UY¥°YUYÀuÌYÀu¤YUYÀuÌYÀu¤ YÀu¤ÀuÌ%UY¥°YUYÀuÌYÀu¤ UYÀuÌYÀu¤ UÀu¤¦]UÀu¤¦€Ž YÀuÌY¥°Y¥°Y¥°Y¥°UY¥°YUYÀuÌYÀu¤YUYÀuÌYÀu¤Y¥°Y¥°YUYÀuÌYÀu¤J]UÀu¤¦Às<¦„Àu¤YY¥°À­8YÀtüYYÀu¤ÀuÌÀs´Às´ ¦H=AÀu¤AYuYÀwp]UÀu¤¦Às<¦„ Y¦€YÀuÌ4 Àu¤YuY¦€YÀuÌYÀwpUÀu¤¦ Àu¤¦!€Àu¤¦€ÅÀu¤Às<¦„ ¦P¦PUÀu¤Àwp¦PÀuÌUYÀw\ÀwpUÀu¤ÀwpÀwpÀu¤%UYÀw\Àwp¦PYÀw\ÀwpUYÀw\YÀwp ÀuÌUÀw\ÀwpUYÀw\YÀwp*UYÀw\YÀwpYÀwpYÀw\2UYÀw\YÀwp¦PYÀw\ÀwpYÀu̦PUYÀw\ÀwpnÀ­8¦P¥¼Àw¤YÀwpY¥°YÀuÌÀwpUYÀw\ÀwpÀwpYÀw\¦PÀuÌUYÀw\YÀwp,UYÀw\YÀwp¦PYÀw\¥°Àwp|Y¥°Y¥°¥°YÀwpYÀwpÀwp¦P‚ñ‚ñUYÀw\YÀwpYÀwpYÀw\UYÀw\YÀwpYÀwp5UYÀw\YÀwp¦PYÀw\Y¥°YÀwpÀwpYÀw\Àwp]¦¦€Àu¤¦€ÅÀu¤]¦hÀw|ÀuÀÀ­8Àu¤]¦]¦¦Y¥°Àu¤ÀuÌÀwp¦PUYÀw\YÀwpYÀw\YÀwp+Àwp¦LÀwpÀuÌYÀuÌYÀwpÀ­8¥ô¥ôYYÀu¤¥èYÀu¤ Àu¤ÀwpÀw\*¥ôYÀu¤ÀwpÀu¤YÀu¤YÀu¤YÀw\¥èYÀu¤Y¥è ¥èYÀu¤YYÀu¤1YYÀu¤ ¥èYÀu¤YÀw\ 1YÀw\€»ÀwpÀ•TÀu¤À­8]¦]¦¦€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤YÀtüÀuÌÀwpÀu¤Y¥èYYÀu¤YYÀu¤YYÀu¤YYÀu¤YÀw\ÀwpÀw\¦LÀw\+]€áÀwpÀuÌYÀuÌYÀwpÀ­8s ]€áÀwpÀuÌYÀuÌYÀwpÀ­8YÀuÌÀ­8ÀuÌÀwpYÀwpÀwYÀw\YÀw\Àw”Àw\Àw\]Àwp¦LÀwpÀyT¦LÀyT€Àu¤¦€ÅÀu¤ ¦„ A¦„ÀyT¦„€Àu¤¦€ÅÀu¤¥°¥° ¥°Y¥°¥°eA¥°E A¥°A¥°! ¥¼¥¼aY¥°Y¥°¥°¥° ¥°! ¥°¥¼¥¼Y¥°Y¥°¥°¥°¥¼¥¼¥¼¥°¥° ¥°OJMicrosoft.FSharp.Compiler.Detuple+TupleStructure+_UnknownTS@DebugTypeProxy (Y¥° Y¥° Y¥°LGMicrosoft.FSharp.Compiler.Detuple+TupleStructure+TupleTS@DebugTypeProxy¥¸ ¥¸ ¥¼ YYÀwh¥° ¥°¥°¥° ¥°Àwp ¥°ÀuÌ) UYÀu¤UÀwpÀuÌYÀu¤¥° Y Y¥°Y¥° Y¥°Y¥°Y¥°¥è¥è¥è¥èYÀu¤Àwp¥èeA¥èE A¥èA¥èPKMicrosoft.FSharp.Compiler.Detuple+TransformedFormal+_SameArg@DebugTypeProxy YÀu¤ÀwpOJMicrosoft.FSharp.Compiler.Detuple+TransformedFormal+NewArgs@DebugTypeProxy¥ð ¥ð ¥ô (Y¥è Y¥è Y¥°Y¥èÀu¤ Àu¤Àu¤ ‚ñ‚ñ Àu¤ÀuÌUYÀuÌYÀu¤ ÀuÌÀu¤4YÀuÌYÀu¤¥¼YÀu¤YÀu¤Àu¤À­8 ¥è¥°UYÀuÌYÀu¤! YÀuÌUYÀuÌYÀu¤ U¥°YÀuÌ¥°ÀuÌ ¥°U¥°YÀuÌ YÀuÌU¥°YÀuÌU¥°YÀuÌU¥°UYÀuÌYÀu¤U¥°YÀuÌYÀuÌ+ U¥°UYÀuÌYÀu¤¥°YÀu¤ ¥°Y¦€¥°uY¦€ Y¦€ ¥°¥°uY¦€ ¥°¦„¥°Àu¤ A¦„A¥°AÀu¤¥°¦„A¦„A¥°AÀu¤¥° ¥°Àu¤¥° YÀu¤Àu¤YÀu¤Y¥° ¥°¥°YÀu¤ ÀuÌYÀu¤uYÀwpYÀwp Y¥°uYÀwp ¦H ¦D uYÀwpY¥°u ]Àwp]ÀwpÀwp€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤YÀtüÀuÌYÀu¤YÀu¤Àu¤À­8, ]UÀu¤¦Àu¤YuYÀwp(€Àu¤¦€ÅÀu¤ €Àu¤¦€ÅÀu¤$ €Àu¤¦€ÅÀu¤Àv8Às< Às<À­8 ¦PÀwpYÀuÌUÀw\ÀwpUÀu¤ÀwpÀwpÀu¤À•T UÀw\ÀwpÀuÌ Àw\Àu¤Àwp YYÀu¤¥èYÀu¤ YÀw\¥èYÀu¤¦L ¦L¦„$€Àu¤UYÀu¤€ÅÀu¤Ào€„Àu¤€ÅÀu¤Ào€„Àu¤€ÅÀu¤+AAAÀwpAAÀwp]A€„Àu¤€ÅÀu¤Àwp1Ào€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤Àwp €Àu¤Àwp€ÅÀu¤$ €Àu¤UYÀu¤€ÅÀu¤ a ¦„¦„Ea¦„¦„E¦„$€Àu¤UYÀu¤€ÅÀu¤uY¦€YÀuÌYÀwp!YuY¦€YÀuÌYÀwp€«uY¦€YÀuÌYÀwp]YuY¦€YÀuÌYÀwpYuY¦€YÀuÌYÀwp]YuY¦€YÀuÌYÀwpYuY¦€YÀuÌYÀwp&¦„Àu¤Y¦€YÀuÌYÀwp¦„¦„¦„¦„Àu¤#€Àu¤UYÀu¤€ÅÀu¤"€Àu¤UYÀu¤€ÅÀu¤EÀu¤YÀu¤€Àu¤UYÀu¤€ÅÀu¤UYÀu¤Àwp ¦„¦„Àw\) Àu¤€Àu¤UYÀu¤€ÅÀu¤ Àw\€Àu¤Àwp€ÅÀu¤-YÀu¤€Àu¤UYÀu¤€ÅÀu¤¦„¦„YÀw\ A¦„ ¦„¦„¦„A¦„A¦„¦„ AÀu¤"Às<AAÀu¤ÀuÀA¦„AÀu¤¦„]¦„ Àwp¦„€ÀuÀ]€áÀwpÀuÌYÀuÌYÀwpÀ­8YÀuÌÀwpYÀwpÀw|A¦„AÀu¤¦„¦„Àw¤Àx@Àw„YÀu¤ ]Àu¤]Àu¤ÀwˆYÀtü0]¦„Às<A¦„AÀwp¦„¦„Y¦€Àwp/AA¦„AÀwp¦„A¦„AÀwp]¦„/AA¦„AÀwp¦„A¦„AÀwX]¦„/AA¦„AÀwp¦„A¦„AÀy]¦„ Ào¦„ Ào¦„€–AA¦„AÀwp¦„A¦„AÀwp]¦„AA¦„AÀwp¦„A¦„AÀwX]¦„AA¦„AÀwp¦„A¦„AÀy]¦„Ào¦„Ào¦„Às<¦„Às<ÀyTÀu¤4 €„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤UÀu¤ (YÀu̦€YÀuÌ YÀuÌ YÀuÌeA¦€E A¦€A¦€7(€Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤(€Àu¤Àwp€ÅÀu¤$(€Àu¤UYÀu¤€ÅÀu¤6€Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤€Àu¤Àwp€ÅÀu¤7 €Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤ €Àu¤Àwp€ÅÀu¤$ €Àu¤UYÀu¤€ÅÀu¤€œ €Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤€Àu¤Àwp€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤UYÀu¤€ÅÀu¤€„Àu¤€ÅÀu¤7 €Àu¤YuY¦€YÀuÌYÀwp€ÅÀu¤ ¦„¦„ ¦„ YÀu¤UYÀu¤K €Àu¤UYÀu¤€ÅÀu¤€Àu¤UYÀu¤€ÅÀu¤Àu¤9 €Àu¤Àwp€ÅÀu¤€Àu¤Àwp€ÅÀu¤Àw\ Y¦€ ¦„¦„Àu¤ Y¦€YÀuÌYÀwpA¦„AÀwp¦„Às<A¦„AÀwp¦„¦„$ ]¦„A¦„AÀwp¦„¦„Àwp$ ]¦„A¦„AÀwp¦„¦„ÀwX$ ]¦„A¦„AÀwp¦„¦„Ày ¦„¦„UÀu¤ ¦„¦„Àw\ ¦„¦„YÀw\AY¥°AY¥° YÀ·¼ e§§UYÀwpY§0¦¼Ae§e§ YÀ·¼,,§ A, ,,A,1§  AA,$AAA€¥ ,,AA,€¥¦Ø¦Ä¦È¦¼¦Ì¦¼¦Ð¦Ô¦Ü¦à1¦Ø¦Ä¦ÈÀuÀ¦¼¦Ì¦¼¦Ð¦ÔÀuĦÜÀwp¦à ,Às<¦¼ ¦¼ ¦¼, ,Às<¦¼§§eÀj°UÀuÀ§Àj°UÀuÀ§ 1 UÀuÀ§§§,Às<e§ ,Às<§§0 a§0§0E ¦¼¦¼¦¼ ¦È¦¼¦¼¦¼¦Ä ¦¼¦¼AA¦¼¦¼ A¦¼¦¼AA¦¼¦¼¦¼ A¦¼¦¼JAA¦¼¦¼¦Ä¦¼¦¼¦ÈÀuÀ¦Ì¦¼A¦¼¦¼¦¼¦ÐÀu¼¦ÔÀuĦ¼¦¼¦¼ a §8§8E a §8§8Ea§8§8E Ù§8E§8§8ÙE §8§8E ¦¼¦¼¦¼AA€¥ e§§§ Àu¤¦¼ e§ e§€¥e§ e§e§ §e§1e§€¥e§ ]e§e§€¥e§ÀÁ4e§e§ÀÁ4e§ UÀuÀ§§Àu¤§§ €¥e§e§e§(€¥e§Àu¤§€¥e§ ÀÁ4 e§0ÀÁ4e§Àu¤§ÀÁ4e§Àu¸§@Àu°Àu¤§§@§§ €í §§§<Àu¤§ ÀÁ4 §§§@]ÀuÀ]ÀuÀÀuÀ§@§<Àu¤§§@ e§§@ UÀuÀ§§@§@§<e§§@ UÀtü¦¸YUÀtü¦¸§@Àtü¦¸§@ UÀtü¦¸ Àtü Àtü§@Y§@YÀtü§@ÀÁ4e§§@Àv8e§§@Às<]§]§§]§§§<§@Àu¤À­8]§]e§]e§e§ ]§§]§]§]§]§§$]e§Àv8]e§e§]§§@Àu¸]UÀuÀ§e€¥ÀuœUÀuÀ§€¥ÀuœUÀuÀ§]UÀuÀ§KÀu¤]§]§§]UÀuÀ§§]UÀuÀ§]UÀuÀ§§§<§@ÀuÀ UÀuÀ§§UÀuÀ§§§<§@À­8ÀuÀ¦È¦Ä¦¼¦Ø]Àv|¦¼€á ÀwpÀuÌ]€á ÀwpÀu̦¼¦ÜÀuÌ Àwp]€á ÀwpÀu̦¼]¦¼¦¼¦Ì ]¦¼¦¼¦¼¦Ð UÀuĦ¼]UÀuĦ¼¦¼¦Ô¦¼ÀuÄ]UÀuĦ¼¦¼¦ÈÀuÀ¦¼¦ÄÀs<À­8ÀuÀ¦¼¦¼Às<À­8ÀuÀ¦¼¦¼Às<À­8ÀuÀ¦¼ ¦¼Às<ÀuÌE' ¦ØÀv”¦ØÀv˜¦ØÀvŒ¦ØÀv˜¦¼Às<¦¼¦¼E' ¦ØÀv¤¦ØÀv˜ ¦ØÀvœ¦ØÀv˜ ' ¦ØÀv¦ØÀv˜¦ØÀvˆ¦ØÀv˜' ¦ØÀv˜¦ØÀv˜¦ØÀv ¦ØÀv˜ ' ¦ØÀvœ¦ØÀv˜ ¦ØÀv¤¦ØÀv˜ ]¦¼w-Àv„Àv„Àv˜Àv˜Àv Àv  ÀvÀvÀvˆÀvˆÀvŒÀvŒÀv”Àv”ÀvœÀvœ Àv¤Àv¤ ]¦¼Às<Àv|Àv|EAÀv„Àv˜Àv  ÀvÀvˆÀvŒÀvœ Àv¤ Àv”]¦¼Às<Àv|E]¦¼3]¦¼]Àv|Àv|Àv˜Àv  ÀvÀvˆ¦¼Às<¦¼EÀ·ÄY¦¼Y¦¼‚fYÀ·¼YÀ·¼À·ÄY¦¼YÀuÌÀu̦¼¦¼¦Ø  YÀ·¼À·ÄY¦¼YÀuÌ YÀ·¼À·ÄY¦¼YÀuÌYÀ·¼À·ÄY¦¼YÀuÌYÀ·¼À·ÄY¦¼YÀuÌYÀ·¼À·ÄY¦¼YÀuÌYÀ·¼À·ÄY¦¼YÀuÌ YÀ·¼Y¦¼Y¦¼YÀu̦¼¦¼Àv¸¦ØÀv¸ÀvŒÀvŒÀv”Àv”ÀvœÀvœÀv¤Àv¤ YÀ·¼Y¦¼Y¦¼YÀuÌÀvˆÀvˆÀvÀvÀv˜Àv˜Àv Àv YÀ·¼Y¦¼Y¦¼YÀuÌY¦¼YÀuÌYÀ·¼Y¦¼¦Ø¦ØÀv˜]¦¼]Àv|]Àv|Àv|Àv|Àv„Àv„#¦¼Às<YÀ·¼Y¦¼YÀuÌ Y§0§0 Y§0Y§0Y§0§0Y§0§t §0Y§0§xY§0§|§€ UAUYY UYYYYU3UYYAUYYY U'UYYAUYUYÀwpY§0¦¼§0 §0Y§0Ày\AÀtÈÀuÈAÀtÄÀuÄ€„Àt4€ÅÀt4 ÀtÄ€„ÀuÈ€ÅÀuÈ€„ÀuÄ€ÅÀuÄ~¦ØÀuÌÀy\¦Ì¦¼¦¼¦ÐÀu¼AÀtÈÀuÈÀt4Àu¼¦ÔÀuÄAÀtÄÀuÄÀuĦĦ¼¦¼¦ÈÀuÀÀu¤¦ÜÀwpÀy`¦àM¦¼Ae§e§AÀt4AÀt4AÀu¤AÀuÈAÀuĦ¼M§Ae§e§AÀt4AÀt4AÀu¤AÀuÈAÀuħ€¥e§ UÀuÀ§UÀuÀ§€¥e§§M§Ae§e§AÀt4AÀt4AÀu¤AÀuÈAÀuħ AÀt4€„Àt4€ÅÀt4 AÀuÈ€„ÀuÈ€ÅÀuÈ AÀuÄ€„ÀuÄ€ÅÀuÄ€ÛAÀt4€„Àt4€ÅÀt4AÀt4AÀu¤€„Àu¤€ÅÀu¤AÀuÈ€„ÀuÈ€ÅÀuÈAÀuÄ€„ÀuÄ€ÅÀuÄAe§e§Ae§e§AÀt4AÀt4AÀu¤AÀuÈAÀuÄAe§e§Àk´Ae§e§AUÀuÀ§#€¥e§§AUÀuÀ§§§€­Àu¤Àu°‚•Àu¤Àu°€¦È€­Àu¤Àu°Àu¤Ày\€„Àtü€ÅÀtü¦¼¦ØÀu̦̦¼¦¼¦ÐÀu¼¦ÔÀuĦĦ¼¦ÈÀuÀ¦ÜÀwpÀy`€„Àu¤€ÅÀu¤¦à¦¼YÀtüYÀu¤¦¼§YÀtüYÀu¤§AUÀuÀ§UÀuÀ§.€¥e§§AUÀuÀ§UÀuÀ§§YÀtüYÀu¤§YÀu¤YÀtüYÀu¤¦¼YÀu¤YÀtü¦¼O¦ÈÀuÀ¦¼¦Ì¦¼¦¼¦ÐÀu¼Àu¼¦ÔÀuÄÀuĦĦ¼¦Ü ÀuÌÀwp¦Ø¦à¦¼Às<Ài”¦¼§Às<Ài”§$§Às<Ài”Ae§e§§:Às<Ài”Ae§e§Às<Ài”Ae§e§Ae§e§Às<Ài”Ài”e§%e§Às<À­8Àk°Àk´e§ Àw|ÀuÀÀwpÀw|ÀuÀÀwŒÀwpYÀwp ¦¼Àwp-§<AE€„Àu¤€ÅÀu¤Àw\§0§ð §<AE€„Àu¤€ÅÀu¤ UÀw\§0 Àw\§0LUYÀw\Y§0§<AE€„Àu¤€ÅÀu¤YUÀw\§0À·¼< ÀuÀÀwŒÀwpÀw¤ÀwðYÀwpÀwYÀw\Àw”Àw\ Às<ÀwpÀs<YÀwpÀs<YÀw\ Às<Àw\Àwø/ ÀxÀu¼ÀwøÀuÄÀx0ÀxDÀx8Àx ÀuÈ Às<ÀwðÀy`Àu¤Àu¤YÀwp]UYÀwpYÀwp;YÀwpÀw|€­Àu¤Àu°Àu¤YÀwpÀwpYÀwp6]UYÀwpYÀwp§<Àu¤YÀwpYÀwp§<]UYÀwpYÀwpD,Àu¤À•TÀwp§<Àu¤ÀwpÀw|€­Àu¤Àu°Àu¤ÀwœÀw Àw|€­Àu¤Àu°ÀwX]ÀwYÀw$Ày`ÀuÌÀ•TÀ­8À­8À•TÀwŒYÀuÌÀwpYÀwp]UYÀwpYÀwp]UYÀwpYÀwpYÀwpYÀwpYÀwpÀwpÀw¤Àw¤YÀuÌÀwðÀwðÀwpYÀwpYÀwpÀwpÀwpYÀwp]Àwp§<Àw\Àwp UÀwp]Àwp]Àwp!UÀwp§<Àw\ÀwpÀ­8 ]uÀuÀYÀuÌYÀwpuÀuÀYÀuÌYÀwp]uÀuÀYÀuÌYÀwpTÀwpÀuÀÀwŒ]uÀuÀYÀuÌYÀwpYÀuÌYÀuÌYÀwpYÀwp&]uÀuÀYÀuÌYÀwpÀwp&AAÀwpAÀuÌUÀwpÀw\UYÀwpYÀw\ ÀwpÀuÌUÀwpÀw\ ÀwpÀw\UYÀwpYÀw\€„ Àw”Àu¤ÀwpÀ•TÀ­8ÀwpYÀwpYÀuÌAAÀwpAÀuÌUÀwpÀw\UYÀwpYÀw\YÀwpYÀw\ÀwpÀwp§<ÀwpUÀwp]ÀuÌ]UÀwp]ÀuÌW ÀwŒÀw|YÀwpYÀwpÀuÀÀwpÀwpÀwŒÀw|YÀuÌYÀwpYÀwpÀuÌ"]UÀwp]ÀuÌÀs<Àwp!€ÀuÀYÀuÌÀwpYÀwp%]€ÀuÀYÀuÌÀwpYÀwpC ÀwŒÀw|YÀwpYÀwpYÀwpÀuÀYÀuÌÀwpYÀwp,]€ÀuÀYÀuÌÀwpYÀwpÀwp&]€ÀuÀYÀuÌÀwpYÀwpuYÀuÌÀwpYÀwp]uYÀuÌÀwpYÀwpC]€ÀuÀYÀuÌÀwpYÀwpÀuÀYÀuÌÀwpYÀwp0]uYÀuÌÀwpYÀwpÀs<ÀuÀÀwp ]uYÀuÌÀwpYÀwpUÀuÌÀwp]UÀuÌÀwpB]uYÀuÌÀwpYÀwpYÀuÌYÀwpÀuÌÀwpÀwp]UÀuÌÀwpÀs<Àwp€áÀuÌÀuÌÀuÌÀwpÀwp"]€áÀuÌÀuÌÀuÌÀwpÀwpz]uYÀuÌÀwpYÀwpYÀuÌYÀuÌYÀuÌYÀuÌYÀwpYÀwpÀuÌÀwpÀwpÀuÌÀuÌÀuÌÀwp.]€áÀuÌÀuÌÀuÌÀwpÀwpÀs<ÀwpuÀuÌÀuÌÀwp]uÀuÌÀuÌÀwpP]uYÀuÌÀwpYÀwpYÀuÌYÀuÌYÀwpÀuÌÀwpÀuÌÀwp#]uÀuÌÀuÌÀwpÀs<Àwpl ]uYÀuÌÀwpYÀwpYÀuÌYÀuÌYÀuÌYÀwpYÀwpÀuÌÀwpÀwpÀuÌÀuÌÀwp]UÀuÌÀuÌB]uYÀuÌÀwpYÀwpYÀuÌYÀuÌÀuÌÀuÌÀwp]UÀuÌÀuÌÀs<ÀwpUYÀwpAYÀwpÀwpÀw¤YÀuÌÀ­8YÀwp&UYÀwpAYÀwpÀwpÀwp UYÀwpAYÀwpÀwpAYÀwpÀwpUÀwpAÀwpÀwp]UÀwpAÀwpÀwp€’ÀwŒÀw|YÀwpYÀwpUYÀwpAYÀwpÀwpYÀwpÀuÀÀt<ÀtDÀuÌÀwpYÀuÌÀwpYÀwpAYÀwpÀwpÀ­8Àwp']UÀwpAÀwpÀwpÀs<Àwp ]ÀwX,YÀu¤À”ÄÀwp]Àwp]ÀwpÀwp]ÀwXÀs<ÀwX]uÀuÌÀuÌÀwp]UÀuÌÀwp#]€áÀuÌÀuÌÀuÌÀwpÀwp]UÀuÌÀuÌ ]ÀwX ]ÀwX ]ÀwXA] ÀwXÀuÌ>"À­8]uÀuÌÀuÌÀwpÀwpÀuÌ]uÀuÌÀuÌÀwp]UÀuÌÀwp]€áÀuÌÀuÌÀuÌÀwpÀwpÀwpÀuÌÀuÌ]Àwp]ÀwpÀwp]UÀuÌÀuÌ]€áÀuÌÀuÌÀuÌÀwpÀwp]UÀuÌÀwpÀw„YÀu¤Àu¤À­8Àw”Àw\ÀwœÀwXÀ•TÀwÀ­8]ÀwX]ÀwXÀwXÀwX]ÀwpÀs<Àwp]UÀwpAÀwpÀwp ]UÀwp]UÀuÌÀuÌUÀwp]UÀuÌÀuÌ]UÀwp]UÀuÌÀuÌ*]€áÀuÌÀuÌÀuÌÀwpÀwpÀuÌÀuÌ]Àwp]ÀwpÀwp]€áÀuÌÀuÌÀuÌÀwpÀwp]uÀuÌÀuÌÀwp]uÀuÌÀuÌÀwp]UÀwpAÀwpÀwpAÀwpÀwp]UÀwp]UÀuÌÀuÌ]UÀwp]UÀuÌÀuÌ]UÀuÌÀuÌÀwpÀwp]UÀuÌÀuÌ.]UÀwp]UÀuÌÀu̧<Às<Àwp]UÀwp]ÀuÌ€·Às<]UÀwp]ÀuÌ]ÀuÌÀwpÀw¨Àwp§<Às<]UÀwp]UÀuÌÀuÌ]UÀwp]UÀuÌÀuÌÀwp]UÀuÌÀuÌ]UÀuÌÀuÌÀuÌÀuÌ]ÀuÌ]Àwp§<ÀwpAYÀwpYÀwpUÀwp§0¦¼ §0¦¼8 uYÀuÌYÀwpÀ|puYÀuÌYÀwpÀ|p§0¦¼UÀwp§0¦¼ YÀwl Àu¤Àwhœ2ÀwpÀwpÀwpÀwxÀuÌÀ­8Àv|Àw|ÀuÀÀw¨€Õ]uYÀuÌYÀwpÀ|pÀwp€Õ]uYÀuÌYÀwpÀ|pAYÀwpYÀwpAÀwpÀwpÀw˜YÀyYUÀuÌYÀy]Àu¤Àw¤YÀuÌÀwðYÀwpÀwŒ]Àwp]ÀwpÀw„YÀu¤ÀwˆYÀtüÀwœÀwXÀ•TÀ­8ÀwÀwYÀw\Àw ÀwpYÀxøUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§<§@ÀwpUYÀyY§0¦¼ Y§0¦¼'UYUÀuÌYÀyY§0¦¼UYÀyY§0¦¼&UYUÀuÌYÀyY§0¦¼€– UÀwp§0¦¼§0¦¼ÀwpUYÀyY§0¦¼YÀyY§0¦¼UYUÀuÌYÀyY§0¦¼Y§0¦¼YUÀuÌYÀyPUÀwp§0¦¼§<§@ÀuÌ]Àu¤ÀwpYÀyYUÀuÌYÀyÀ­8 Y§0¦¼ ÀyÀy§0¦¼3UYÀyY§0¦¼§<§@]Àu¤YÀy]UÀu¤ÀwdAA] Àu¤§@UÀy§0¦¼i YYÀu¤YÀtüÀyÀ­8ÀwpYÀvp§@]UÀu¤Àwd§@§@UÀwp§0¦¼§0¦¼Àwp'UÀy§0¦¼§<§@]Àu¤Ày. UÀuÌYÀyUÀuÌYÀy§0¦¼MUYUÀuÌYÀyY§0¦¼§<§@]Àu¤YUÀuÌYÀyUUÀuÌYÀy§0¦¼'UYÀyY§0¦¼Y§0¦¼=UUÀuÌYÀy§0¦¼§<§@]Àu¤ÀuÌYÀyUYÀwpY§0¦¼ÀxÈUYÀwpY§0¦¼\3ÀxDYÀuÌYÀwpÀuÌÀwpUYÀwpY§0¦¼YÀwpY§0¦¼]¦¼Àx Y§0¦¼Àuȧ0¦¼Àx@Àx0ÀuÄ]¦¼¦¼]Àwp]ÀwpYÀuÌÀuÌUÀwp§0¦¼ÀwpÀxÀw„YÀu¤Àw„YÀu¤À•<ÀxÈÀx YÀwpÀw„YÀu¤Àu¤À•$ÀwpÀxÐÀxÀ”ÔÀ• ÀxÀu¤À”ôÀxPÀupÀxXÀ¶pYÀuÌ5UÀwp§0¦¼§<§@ÀwðYÀuÌYÀwpÀ­8 U¦¼]UÀuĦ¼ §0¦¼¦¼U¦¼ ¦¼ÀtȦ¼ U¦¼€™Y¦¼U¦¼ÀwøÀuĦ¼¦¼]UÀuĦ¼ÀxDYÀuÌYÀ·¼ÀxÀxÀxÀu¼ÀxÀYÀtÈÀxX§0¦¼]Àwp]ÀwpDUÀwp§0¦¼§<§@ÀwðYÀuÌYÀwpÀ­8Y§0¦¼¦¼]ÀwpÀv¼]Àwp-UÀwp§0¦¼§<§@ÀwpÀv|À­8ÀuÌ ]¦¼]¦¼]¦¼¦¼*]¦¼§<§@§0¦¼ÀuÈYÀuÌÀ­8&]¦¼§<§@§0¦¼YÀuÌÀ­8!¦¼]UÀuĦ¼ÀuĦ¼+]¦¼§<§@§0¦¼ÀuÄYÀuÌÀ­8UÀwpÀxÐUÀwpÀxЀàUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼ÀwpUÀwpÀxÐÀw¤ÀxDYÀ·¼ÀwxÀv˜YÀwpÀw¤ÀxDYÀ·¼YÀ·¼À·ÄYÀwpYÀwpÀwpÀxÐY§0¦¼Às<< UÀwp§0¦¼§<§@À•$Àu¤ÀwpÀxÐÀwpÀwpÀ­8UYUÀw\§0¦¼§@YUÀw\§0¦¼UYÀw\Y§0¦¼ YÀy`UYUÀw\§0¦¼§@ UÀw\§0¦¼Ày` Ày`Ày`UYÀw\Y§0¦¼ ¦¼¦¼€¡YÀu¤UYUÀw\§0¦¼§@§@YUÀw\§0¦¼UÀwp§0¦¼§0¦¼ÀwpUYÀw\Y§0¦¼Ày`YÀy`Ày`YÀw\Y§0¦¼¦¼,UÀwp§0¦¼§<§@YÀw\ÀwpÀ­85UÀwp§0¦¼§0¦¼ÀwpY§0¦¼YÀwXY UÀwp§0¦¼§<§@ÀuÌÀ”ÄÀ•TÀ­8À­8Àw§0¦¼§0¦¼ÀwXÀwp§0¦¼ ÀxàÀwx?UÀwp§0¦¼§<À”ÌÀ­8Àxà§0¦¼ÀwpÀwp§0¦¼ UÀwp §@UÀwpÀwp¦¼8UÀwp§0¦¼§<À­8§@§0¦¼Àw\Àwp§0¦¼UÀw§0¦¼UÀwX§0¦¼UUÀw\§0¦¼§@UÀw§0¦¼UÀwX§0¦¼UUÀw\§0¦¼§@UÀw\§0¦¼€õÀwp]€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀuÌÀwXÀ”ÄÀ•TÀ­8À­8ÀwpÀwUÀw§0¦¼Àw§0¦¼UÀwX§0¦¼§0¦¼ÀwXÀw€À”ÌÀxàÀwpUÀwp§0¦¼ÀwpÀw”Àw\UUÀw\§0¦¼§@§@Àw\DUÀwp§0¦¼§<§@ÀwpAUÀwp§0¦¼UÀwp§0¦¼P UÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼Àwp§0¦¼À”ÌÀ”Ô7UÀwp§0¦¼§<§@À”ÔÀ• ÀwpÀwpÀ­8ÀuÌd UÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼Àwp§0¦¼F UÀwp§0¦¼§<§@ÀwpÀu¤ÀwpÀu¤ÀwpÀ­8ÀuÌÀ”ÔÀ”ô >UÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼Àwp2UÀwp§0¦¼§<§@À•<ÀxÈÀwpÀwpÀ­8À¬Ô]ÀwpÀ¬Ü]ÀwpÀ¬Ü]ÀwpIÀ¬Ô]ÀwpÀ¬Ü]ÀwpÀwpUYÀwpY§0¦¼YÀwp,UÀwp§0¦¼§<§@ÀupYÀwpÀ­8: ¦ØÀuÌÀv|¦¼¦ÈÀuÀ]Àwp]Àwp¦àÀwp¦Ü]Àwp§<§@¦¼À­8]Àwp§<§@À­8§0¦¼!§0¦¼Às<À­8ÀuÀ§0¦¼<§]ÀwpÀu¤]ÀwpÀwpUÀwp§0¦¼§0¦¼(UÀwp§0¦¼§<§@ÀwpÀuÀÀ­8Às<YÀuÌUÀu¼YÀu̧<Àu̧<ÀuÀÀuÀÀuÌYUAÀwpÀwpÀwpUAÀwpÀwpÀwpUAÀwpÀwpYÀwpCYÀwpYÀwpÀwpUAÀwpÀwpÀwpAÀwpÀwpÀwp8UAÀwpÀwpYÀwp§<ÀuÀÀuÌYÀwpÀ­8UAÀwpÀwpYÀwp9UAÀwpÀwpYÀwpAÀwpÀwpYÀwpÀu¤:UÀwp§0¦¼§<§@ÀuÀÀuÌYÀuÌYÀwpÀ­8]UÀuÀÀuÀ]uÀuÀÀuÀÀuÀ]UÀuÀÀuÀUÀuÀÀuÀ]UÀwp§0¦¼]uÀuÀÀuÀÀuÀuÀuÀÀuÀÀuÀ®5Àw|YÀuÌÀuÀÀuÌUÀu¼YÀuÌYÀuÌÀu¼]UÀuÀÀuÀÀt4]UÀuÀÀuÀÀuÀÀw|YÀuÌ]ÀuÀ]ÀuÀYÀwpYÀwpYÀwpÀwpÀwpÀwpYÀwpÀs<YÀwpÀw|YÀuÌÀw|YÀuÌ]uÀuÀÀuÀÀuÀ]uÀuÀÀuÀÀuÀÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|YÀuÌÀw|Àw|YÀuÌÀw|Àu¤9]UÀwp§0¦¼§<§@ÀwpYÀuÌYÀwpÀ­8]€á ÀwpÀuÌÀsä €„ €Å €€¦¼]€á ÀwpÀuÌ ÀuÌÀwpÀwpÀw|ÀuÀÀsäÀu¤Às䦼¦ÈÀt<ÀtDÀu¼Às<ÀydÀylÀ¶YÀwpÀwp?]UÀwp§0¦¼§<§@§0¦¼YÀuÌYÀwpÀ­8]UÀwp§0¦¼YYÀwh YÀwh¦¼ Àwp¦¼ ¦¼Àwp]UÀu¤ÀwdUÀu¤ÀwdUÀwp§0¦¼§0¦¼Àwp]UÀwp§0¦¼]UÀwp§0¦¼Y¦¼Àw|ÀuÀÀu¤ÀwdYYÀwh¦¼UYÀwpY§0¦¼YÀwpY§0¦¼Àwp]uÀuÀYÀuÌYÀwpYÀwpYÀuÌ]UÀu¤Àwd]UÀu¤Àwd]Àwd]Àwd:UÀwp§0¦¼§<§@ÀwpÀuÌYÀuÌYÀwpÀ­8AAE€©EEAAAE€©EEeAAE€©EEU$eAAAE€©EEuYAAEAAE€©EEÀ­8AAAEAAAE€©EE§<§0¦¼Àu¤E YÀu¤§@€ÎÀw„À­8 Àu¤€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYYÀu¤YÀtü]Àu¤ÀuÌÀwp]Àu¤§@]Àu¤§@§@§@§@§@YÀu¤UÀwp§0¦¼§0¦¼ÀwpÀwp¦¼Àwˆ1UÀwp§0¦¼]Àu¤§<§@ÀwdÀwpÀuÌYU¦¼Àwp U¦¼ÀwpÀwp§0¦¼1UYÀwpY§0¦¼§<§@YU¦¼Àwp ÀwpÀwp§0¦¼*UYÀwpY§0¦¼§<§@YÀwp!UÀwp§0¦¼§<§@¦¼Àwp ÀwXÀwX§0¦¼,UYÀwXY§0¦¼§<§@À­8ÀwX&¦ÌÀw|¦¼À­8ÀuÀÀxèYÀuÌÀwp§<¦¼Àwp UÀwp§0¦¼§0¦¼Àwp§<§@Àwp§0T À­8UÀu¤ÀwpÀu¤ÀuÌ]À“À]À“ÀÀ“ÀUÀu¤ÀwpÀu¤ÀwpÀs<(UÀwp§0¦¼§<§@Àwp§0¦¼E(UÀwp§0¦¼§<§@Àwp§0¦¼UYÀwXY§0¦¼UYÀwXY§0¦¼NUÀw§0¦¼Àw§0¦¼UYÀwXY§0¦¼Y§0¦¼YÀwX8UÀwp§0¦¼§<§@À•TÀ­8ÀwÀwXÀ­8Àu̧0¦¼§0§0 §0¦¼IUÀwp§0¦¼À•TÀ­8À­8ÀuÌÀwYÀwX§0¦¼Y§0¦¼T YÀu¤À”ÄÀwpUÀwp§0¦¼§0¦¼ÀwpUÀwp§0¦¼§0¦¼Àwp¦¼#UÀwX§0¦¼§<§@À­8ÀwX€ÑÀwYÀwpUYÀwpY§0¦¼YÀwpY§0¦¼ÀwÀwÀw\UUÀw\§0¦¼§@§@§0¦¼Àw\UÀw§0¦¼§0¦¼Àw§0¦¼ÀwpUÀwpÀwpÀw À­8]ÀwYÀw$Àw#UÀw§0¦¼§<§@À­8Àw]Àv|Àv|Àv|Àw8Àv|]Àw(¦¼E"Àw0]UÀuĦ¼ÀuÄÀuÄ]§<Àw(¦¼UYÀw$]Àw ]Àw$ ]Àw$UYÀw$]Àwh UÀwp§0¦¼§0¦¼ÀwpUYÀw$]Àw]Àw$]Àw$Àw]ÀwYÀw$]Àw5UÀw§0¦¼§<§@ÀwpYÀw$]ÀwÀ­8UYÀw$Y§0¦¼U]ÀwY§0¦¼ Àw$UÀw$§0¦¼ Àw$§0¦¼UYÀw$Y§0¦¼U]ÀwY§0¦¼ §0¦¼€‚ UYÀw$Y§0¦¼Y§0¦¼YÀw$U]ÀwY§0¦¼]ÀwÀwUÀw§0¦¼§0¦¼ÀwY§0¦¼=UÀw§0¦¼§<§@Àwp§0¦¼YÀw$]ÀwÀ­8>¦ÜÀwpÀy`¦È¦¼¦Ì¦¼¦¼¦ÐÀu¼Àu¼¦ÔÀuĦĦ¼ ¦¼§<¦¼ §<ÀuÀE ÀiˆE ÀiˆE€¶Àu¤À•TÀwpUUÀw\§0¦¼§@§@ÀiˆEUÀwp§0¦¼§@§<Às´Às´UÀwp§0¦¼§0¦¼Àwp§0¦¼§0¦¼Àt<ÀtDÀu¼Às<À`À­8ÀuÌÀuÌÀuÀ¦¼&UUÀw\§0¦¼§@§<§@Àw\ §@Àw\UÀw\§0¦¼.UYUÀw\§0¦¼§@§<§@YÀw\ 1Àu¤ €ÔÀu¤$Àtì€ÔÀu¤AÀu¤1Àu¤ Àt쀄Àu¤€ÅÀu¤ÀtìÀt쀄Àu¤€ÅÀu¤Àt4AÀy Ày ÀyPÀyP YÀt4 Ày Ày M AÀy Ày Ày8YÀw\YÀt4YÀyPÀ­8Ày0Àw\Ày,YÀy .Ày €„Àu¤€ÅÀu¤AÀyPÀyPÀy 5UUÀy e§U§@YYUÀw\§0¦¼YYUÀw\§0¦¼Àk´AÀyPÀyPYYUÀw\§0¦¼4UUÀy e§U§@YYUÀw\§0¦¼UÀy e§ U§@YYUÀw\§0¦¼1YUÀw\§0¦¼ UÀw\§0¦¼ UÀw\§0¦¼Àu¤UÀye§ ÀtìÀ­8Ày UUÀy e§U§@YYUÀw\§0¦¼e§Ày YYUÀw\§0¦¼YUÀw\§0¦¼UÀk°Àk´Àk´Ày Ày`YUÀw\§0¦¼€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤AÀyPÀyP€„Àu¤€ÅÀu¤AÀyPÀyPUÀye§§<§@Ày>UYUÀyPUe§U§@YYUÀw\§0¦¼YUÀyPUe§UYÀyPYUe§YUe§UÀye§UÀw\§0¦¼9UUYÀy e§U§@YYUÀw\§0¦¼ Àw\§0¦¼=UYUÀyPUe§U§@YYUÀw\§0¦¼ ÀyPUe§UYÀyPYUe§ Àw\§0¦¼UÀuÀ§1UÀuÀ§YUÀuÀ§YUe§YUÀw\§0¦¼8UUYÀy e§U§@YYUÀw\§0¦¼UYÀy e§‚*Ày8YÀt4YÀyPÀ­8YÀw\§@YÀu¤UYUÀw\§0¦¼§@§@YUÀw\§0¦¼UYÀw\Y§0¦¼Y§0¦¼YÀw\UYUÀyPUe§U§@YYUÀw\§0¦¼YUÀyPUe§§@YYUÀw\§0¦¼UYÀyPYUe§YUe§YÀyPÀy(ÀyUÀye§Àye§Ày0Àw\UUÀw\§0¦¼§@§0¦¼UÀw\§0¦¼Àw\§Àu¤¦¼Ày4ÀwpUÀwp§0¦¼ÀwpÀy,YÀy UUYÀy e§U§@YYUÀw\§0¦¼YÀy ZUUÀy e§U§@YYUÀw\§0¦¼§<§@YYUÀw\§0¦¼Ày < U§@YYUÀw\§0¦¼ÀyPUÀyPUe§gUYUÀyPUe§U§@YYUÀw\§0¦¼§<§@YYUÀw\§0¦¼YÀyP Ue§UÀyPUe§9UUÀyPUe§U§@YYUÀw\§0¦¼mÀt4Ày À“ÀUUÀy e§U§@YYUÀw\§0¦¼e§Ày YYUÀw\§0¦¼§@_UUÀyPUe§U§@YYUÀw\§0¦¼§<§@YYUÀw\§0¦¼ÀyP9UYUÀy e§U§@YYUÀw\§0¦¼YUÀy e§UYÀy Ye§7 U§@YYUÀw\§0¦¼Ày UÀy e§8UYUÀy e§U§@YYUÀw\§0¦¼ Ày e§UYÀy Ye§€UYUÀy e§U§@YYUÀw\§0¦¼§@YUÀy e§YYUÀw\§0¦¼UYÀy Ye§Ye§bUUYÀy e§U§@YYUÀw\§0¦¼§<§@YYUÀw\§0¦¼YÀy u§@Àye§u§@Àye§ ÀÁ4€›À›ÌYÀ›ÈÀtìÀyu§@Àye§ÀtìÀ­8Ày UUÀy e§U§@YYUÀw\§0¦¼e§§@Ày UÀye§ÀyÀk´!u§@ÀyTe§§<§@ÀyTg u§@ÀyTe§§8Àv8Às<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ`§@ÀyTAÀuÀAÀbüEA¦¼AÀbüEAÀu¼AÀbüEAÀv|ÀbüAÀuÌÀbüAÀuÀÀbü A¦¼ÀbüAÀuÄÀbüAÀwpÀbüAÀu¼Àbü|¦ØÀuÌÀv|¦È¦¼ÀuÀAÀuÀAÀbüE¦Ì¦¼¦ÔÀuÄA¦¼AÀbüE¦ÜÀwp¦à¦ÐÀu¼AÀu¼AÀbüE¦Ä ¦¼Àbü¦¼ §ÀbüAUÀuÀ§AÀbüEA€¥e§AÀbüEUÀuÀ§AUÀuÀ§ÀbüA€¥e§ÀbükAUÀuÀ§AÀbüEAÀuÀAÀbüEA€¥e§AÀbüEUÀuÀ§§€¥e§ §ÀbüAe§Àbüe§Àbü AÀc¦¼UÀuĦ¼AÀc¦¼UÀu¼¦¼ AÀc¦¼ UÀu¼¦¼AAÀc¦¼UÀuĦ¼AÀc¦¼ÀwpÀuÌUÀu¼¦¼ ¦¼Àc¦¼ §ÀcUUÀuÀ§€¥e§AÀcUÀuÀ§AÀc€¥e§AÀcUÀuÀ§AÀc€¥e§UUÀuÀ§€¥e§fUUÀuÀ§€¥e§AÀcUÀuÀ§AÀc€¥e§€¥e§UÀuÀ§ §Àce§Àc¦¸¦¸¦¸eA¦¸E A¦¸A¦¸ ¦¸¦¸ ¦¸¦¼¦¼ ¦¼ÀuÀ¦¼ ¦¼¦¼¦¼Àu¼¦¼¦¼ÀuĦ¼¦¼Àv|Àu̦¼ ÀwpÀuÌ ¦¼ÀwpeA¦¼E A¦¼A¦¼(¦¼ ¦¼ ¦¼IDMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+SizeValue@DebugTypeProxy ÀuÀ¦¼HCMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+ValValue@DebugTypeProxy(¦¼ ¦¼ ¦¼JEMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+TupleValue@DebugTypeProxy(Àu¼ Àu¼¦¼ Àu¼IDMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+RecdValue@DebugTypeProxy(ÀuÄ ÀuĦ¼ ÀuÄNIMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+UnionCaseValue@DebugTypeProxy(Àv|(ÀuÌ Àv|ÀuÌ Àv| ÀuÌJEMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+ConstValue@DebugTypeProxy(   ÀwpÀuÌRMMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+CurriedLambdaValue@DebugTypeProxy ÀwpNIMicrosoft.FSharp.Compiler.Opt+ExprValueInfo+ConstExprValue@DebugTypeProxy ¦Ä ¦È ¦Ì ¦Ð ¦Ô ¦Ø ¦Ü ¦à ¦¼(1UÀuÀ§eÀj°UÀuÀ§e€¥ÀuœUÀuÀ§ Àj°UÀuÀ§ €¥ÀuœUÀuÀ§ 1UÀuÀ§ 1UÀuÀ§! §AUÀuÀ§UÀuÀ§ §AUÀuÀ§ ]UÀuÀ§ÀuÀ1UÀuÀ§Àj°UÀuÀ§YUÀuÀ§ Àj°YUÀuÀ§ Àu¤>Àj°UÀuÀ§YUÀuÀ§EUÀuÀ§§ÀuÀ5 Àj°UÀuÀ§EUÀuœUÀuÀ§K 1UÀuÀ§UÀuÀ§ÀuÀYUÀuÀ§UÀuœUÀuÀ§UÀuœUÀuÀ§ YUÀuÀ§ 1UÀuœUÀuÀ§ UÀuœUÀuÀ§ YUÀuœUÀuÀ§ UÀuœUÀuÀ§ ÀuœUÀuÀ§ €¥ÀuœUÀuÀ§E(§(€¥e§ § €¥e§ §€¥e§ €¥e§ §§ § A,§ ,,AA,§  ,, ,¦¼ ,e§ ÀuÀ§ ,UÀuÀ§§0 a §0§0§0 §0 §0 §0 ¦¼¦¼§8 ]]]a §8§8§8] §8 (€í § €í § €í §] Às<AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ`Àv8€í §§8€í  (]À“À(€„ €Å (ÀiˆE(]UÀu¤Àwd(YUÀtü¦¸ (ÀÁ4 §(ÀÁ4e§§@ €„ €Å YUÀtü¦¸ ÀÁ4 §ÀÁ4e§ ]À“À €„ €Å ÀiˆE ]UÀu¤Àwd YUÀtü¦¸ ÀÁ4 § ÀÁ4e§] ]À“À€„ €Å ÀiˆE]UÀu¤ÀwdYUÀtü¦¸ÀÁ4 §ÀÁ4e§ ÀÁ4$YUÀtü¦¸]UÀu¤Àwd§@ ¦¼ e§ UÀuÀ§ 1e§ Ye§N 1e§e§§Ye§UÀuÀ§YUÀuÀ§UÀuÀ§ Ye§ Ye§ 1UÀuÀ§ UÀuÀ§ YUÀuÀ§ e§1e§ €¥e§e§ §< §@§@UÀuÀ§ §@e§§@ Àtü¦¸ UÀtü¦¸ EÀtü §@§@Àtü €„Àt4€ÅÀt4 Àt4 €„ÀuÈ€ÅÀuÈ ÀuÈ €„ÀuÄ€ÅÀuÄ ÀuÄ ÀuÈÀtÈ AÀuÈAÀtÈÀuÈ ÀuÄÀtÄ AÀuÄAÀtÄÀuÄ ÀtÄH Ae§e§AÀt4AÀt4AÀu¤AÀuÈAÀuÄ ÀuÀ§§ UÀuÀ§UÀuÀ§ AÀu¤ e§e§ÀuÀ§Àu¤ €„Àtü€ÅÀtü YÀtüYÀu¤ Às<Ài”ÀuÀ§ÀuÀ§ Às<Ài”Ae§e§AE€„Àu¤€ÅÀu¤§ðUÀw\§0Àw\§0 UÀw\§0UÀwpÀw\#‚ñ‚ñUÀu¤ÀwpÀwpÀu¤ UÀwpÀw\ÀwpÀuÌ YÀuÌÀ­8 ÀwpYÀwpYÀwpÀwp; ÀuÌÀwpYÀuÌYÀwpAYÀwpÀwpÀ­8Àwp ]ÀwX ]ÀuÌÀwX$ UÀwp§0¦¼UÀwp§0¦¼ §<§@ AÀwpÀwp YÀwpYÀwp AYÀwpYÀwpYÀuÌYÀwpÀ|p8 uYÀuÌYÀwpÀ|puYÀuÌYÀwpÀ|p ÀwhÀu¤ §<§@]Àu¤ UÀy§0¦¼Ày §@Àu¤§@2 UUÀuÌYÀy§0¦¼UÀuÌYÀy ¦¼§0¦¼ ¦¼¦¼ÀtÈ Ày`UÀw\§0¦¼ Ày`Ày`Ày` Ày` €„Àu¤€ÅÀu¤E'AUÀwp§0¦¼UÀwp§0¦¼b §<§@AUÀwp§0¦¼UÀwp§0¦¼ÀuÌÀ”ÄÀ•TÀ­8À­8Àw§0¦¼§0¦¼ÀwXH §<AUÀwp§0¦¼UÀwp§0¦¼À”ÌÀ­8Àxà§0¦¼Àwp ÀwpA §<AUÀwp§0¦¼UÀwp§0¦¼À­8§@§0¦¼Àw\ §<À­8 ¦¼Àwh Àwh¦¼ YÀwh ¦¼YÀwh ¦¼Àwp §@YÀu¤§@ U¦¼Àwp ¦¼Àwp UÀwp§0¦¼U¦¼Àwp UÀwp§0¦¼Àwp §<§@À­8 UÀwX§0¦¼ÀwX §<ÀwpÀ­8YÀuÌ Àwp¦¼ ÀsäÀsä Àw §<§0¦¼Àw( Àw$UÀw$§0¦¼ÀwÀw(UÀw§0¦¼ UÀw$§0¦¼Àw$ Às<ÀuÌ §<" UUÀw\§0¦¼§@§@Àw\ §<Àk´Ày`Àw\§0¦¼ UÀw\§0¦¼ Àu¤UÀw\§0¦¼% €„Àu¤€ÅÀu¤AÀyPÀyP Ày Ày 9 €„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤AÀyPÀyP Àt4Ày ÀyPÀyP §Àu¤¦¼ UÀuÀ§Àw\§0¦¼" §<§@YYUÀw\§0¦¼@ UUÀyPUe§U§@YYUÀw\§0¦¼ÀyP§@YYUÀw\§0¦¼d AÀyPUUÀyPUe§U§@YYUÀw\§0¦¼U§@YYUÀw\§0¦¼; UUÀy e§U§@YYUÀw\§0¦¼Ày _ AÀy UUÀy e§U§@YYUÀw\§0¦¼U§@YYUÀw\§0¦¼ E¦¼Àbü AÀuÀAÀbüEÀuÀ§ EÀbü AÀuÀAÀbüE AÀbüEUÀuÀ§ E§Àbü ¦¼Àc UÀuÀ§Àc §Àc«X«\¬,­€¶LÀs<YÀvp YÀLøÀLøÀs<À­8ÀuÌÀLøÀs<ÀuÌÀLøÀLø.ÀwpÀ­8ÀuÌÀwpAUÀu¤ÀwpÀwpÀu¼Às8 Àt4Às<À`€í ÀvpÀ­8 Àu¼Às8 Às<ÀvpÀs<À]XÀ­8À[ Às<À`À]XÀ­8À[`= À]XYÀwpÀ]`]Àu¼Àu¼YÀtÀwpÀuÌÀuÌ-Às<À`]YÀwpÀ]XÀ­8ÀZüÀ­8ÀkdÀ[ YUÀtYª< YÀt €ÕÀtìÀt ª@Às< ]Àu¼ ª@Àu¼ª@ª@ª@]ª8ª8]ª8]ª8]ª8ª8ª@]ª8]ª8ª@ ÀxÀª@ ª8ª8ª@Aª@Ày\Ày\Yª<ÀuÌYª<AÀu¤AÀy\Ày\AÀuÌAÀy\Ày\AÀt4AÀy\Ày\ €ÔÀt4 €ÔÀt4 Àt4Ày\ Àu¤Ày\`AÀu¤AÀy\Ày\AÀuÌAÀy\Ày\€ÔÀu¤Ày\AÀt4AÀy\Ày\€ÔÀt4Ày\ÀtìÀy\Yª<ÀtìYª< Àu¤ÀBPÀBP€¥Àu¤ÀBPÀBPYÀu¤ÀBPÀtYÀt ª@ª@Àv8ª@AÀBPÀBPª@ ª@Àu¤ª@ Àu¤Yª<ª@ª@ª@ÀChÀ­8€¥Àu¤ª@ª@ÀChÀ­8YÀu¤ª@ª@ÀChÀ­8Àu¤ª@ª@ÀChÀ­8Àt4ª@!ª@Às<À`À­8YÀu¼ª@ Àt4Àu¼%ª@ÀChÀs<À`À­8YÀt4ª@%ª@ÀChÀs<À`À­8ª@YÀu¼ ª@Às<À`À­8ª@YÀu¼ª@YÀu¼YÀu¼ª@Às<À`À­8ª@Àv8YÀu¼YÀu¼ª@ª@ª@!ª@ÀChÀs<À`À­8ª@Àtì ª@ÀAh ª@ÀChÀ­8À“ÀYÀu¼ª@&ª@ÀChÀs<À`À­8À­8ª@Àt4 ÀtüYª<ª@YÀtüª@ª@ÀBàYÀtüª@ªÈª@À­8ÀuÌÀuÌ €ÕÀtìUª@€ÕÀtì €ÕÀtìUª@€ÕÀtìª@.YÀ“À€ÕÀtìÀtÀ]XÀBPÀkdY Uª@€ÕÀtìª@À“ÀÀtª@ÀtÀt4ª@ª@Àu¼ª@ª@Àu¤ À“Àª@ª@Àv8ª@YÀ“ÀUÀtÀtì À“ÀUÀtÀtìÀtìYÀ“ÀÀtÀtìUÀtÀy  À“ÀUÀtÀy Ày YÀ“ÀÀtÀy ÀÀàYuÀu¼ÀtìÀÀèYuÀu¼ÀtìYuÀu¼ÀtìÀÀìYuÀu¼ÀtìÀÀèYuÀu¼Àtì uÀu¼ÀtìÀu¼NÀ]XÀÀàYuÀu¼ÀtìÀÀèYuÀu¼ÀtìYuÀu¼Àtì%ª@ÀChÀs<À`À­8YÀ“Àª@YÀuÌÀs<YÀuÌ$YÀu̪ÈÀkdÀ­8ÀuÌYÀs<ÀuÌÀuÌ&]UÀuÌÀu̪ÈÀkdÀ­8ÀuÌ UÀuÌÀuÌ$]UÀuÌÀuÌ]À­8À­8+UÀuÌÀuÌ]À­8ªÈÀkdÀ­8ÀuÌ9 ÀuÌÀuÌ]ÀwpÀwŒÀw|YÀwpYÀwpÀuÀ ªÈÀkdÀ­8ÀuÌ]ÀwpEªÈÀkdÀ­8ÀuÌ]Àwp À[´UÀZü]À[´!YUÀZü]À[´YÀ[´« AÀAhE$AU]À[´EAÀAhE#ÀChª@À­8YÀZüYÀZüAÀ”|Àv À”„À””À”|À”ˆÀ”À”Œ YÀ”| Àv YÀ”| À”|Àv \AÀ”|Àv À”„YÀ“ÀÀ­8À]XÀu¼Àt4À””À”|À”ˆÀ”|À”À”ŒYÀ”|Àv ªÈÀ­8ª@À”|À”( À”(À”|ªÈÀuÌÀ­8ª@Àu¼À“ԪȃŠÀv|$ªÈÀ­8ª@  À”( ƒÅÀv|ªÈÀuÌÀ­8ª@À“ÔÀº0Àº4Àº8Àº<Àº@ÀºDÀºHÀºLÀºPÀºTÀºXÀº\Àº`DÀº0Àº4Àº8Àº<Àº@ÀºDÀºHÀºLÀºPÀºTÀºXÀº\Àº`Àv|À­8Àº(Àš YYÀš YYÀš YÀš Àš YYÀš ÀšÀs<ÀuÌÀš À™8AYÀ™8YÀvp ]À“ÀYÀ™8YÀ™8(ÀwhÀ­8AYÀ™8YÀvpÀš AYÀ™8YÀvpA€ÝAYÀ™8YÀvp Àš Àwh*Àš YYÀš AYÀ™8YÀvp,«,À­8A€ÝAYÀ™8YÀvpÀšÀwhYYÀwhÀwdYÀtü«, À“ÀÀ™H YÀš À­8YYYÀšÀ“ÀE ÀuÌÀy ÀuÌ' YÀuÌÀu¬Àt4À™LÀ™L2 «8Às<Àu¼YÀvpYÀuÌÀ™HÀšÀ“À«X«\5]À™HÀ™HÀ™LÀ™L]À™H]À™H]À™H€Ý]À™HE AÀtìÀu¸YÀ“ÀÀt4ªÈª@AAÀtìÀtìÀAhªÈª@Àt4ªÈª@Àu¤«`ÀtT UÀuÀ=UÀuÀ< «`ÀtÀt]Àu¬]Àu¬Àu¬ÀtTÀu¼Àt4ÀuÀªÈª@«`Àu¤]]]À­8]«`Àtô]«` ]À”¼UÀtô]Àt8 Àt]«`Àtô]À”¼ÀtôÀtDÀu¼Àt4Àt1UÀtô]Àtª@]«`À­8]À”¼Àt<ƒÉEEEEEEƒÉEEEEEEƒÉEEEEEE À­8E ªÈÀ­8Àj¤]«8UÀtô]Àt]«8€×-]À”¼Àj¤]Àwd]«8Às´À“ÀÀsäÀuÌÀ­8«`Àt<]«8Àu¬Àu¼UÀtô]ÀtÀtôÀs´Às<Às8Às´]Àvp]ÀvpYÀvt]]À™LÀ™L]]Àu¬Àu¤ÀBPÀAh6 Àu¤ªÈª@Àt<«`Às¼«pYÀvpÀ“Œ]Àv|«”. ªÈª@Àt<«`Às¼YÀvpÀ“Œ]Àv| UÀu¤Àj¤ «p€¥UÀu¤Àj¤M €¥UÀu¤Àj¤ªÈª@Àt<«`Às¼€¥«pYÀvpÀ“Œ]Àv| À“ÀÀu¤]Àu¤ªÈª@]À“ÀÀu̪ÈÀ­8ÀuÌ-À“ÀÀtô]Àv|ÀuÌYÀvpYÀvpÀtÈÀs<ª@À­8ÀtȪ ªÈª@À­8ÀuÌ«p]À“ÀÀ“À«pÀs¼Àj¸u€ÕÀwpÀ­8 YÀu¤ u€ÕÀwpÀ­8 Àj¸Àu¤)Àj¤YÀtüÀuÌÀj¤Àu¤Àu¤Às¼ªÈÀuÀ«pÀj¤]ÀwdÀuÌÀs¼Àu¤«pÀsÄu€ÕÀwpÀ­8 Àj¸Àu¤ÀsÄ€ÕÀwpÀwpªÈÀs¼ÀuÀÀwpÀ­8) u€ÕÀwpÀ­8U€ÕÀwpÀ­8 «¤ªÈÀu¤ YÀtü#YÀtüÀs<ÀkdYÀtüÀ­8K]À”¼Àj¤]«8Às´À“ÀÀsä]ÀwdÀuÌYÀtüYÀtü«pÀs<Àkd«pÀ­8YÀtüYÀtüYÀtü]ÀuÌ]ÀuÌÀuÌÀkdÀ­8Àtü&YÀtüªÈYÀtüÀuÌYÀtü]«,«X«\AAYY ÀtüÀtüi]À”¼ÀuÌ]«,]«8Às´«XÀ“ÀÀsä«\YÀtüÀ­8YÀtüYÀtüYÀtüYÀtü"«lªÈÀkdYÀtüYÀtü«h «h«l€¥«l€¥«h]ÀwdÀwdÀ“À]Àwd]Àwd«`Àj¤«, YY6YYYYYYYYYY!YYYYYYYYYÀvp«,]«,_ Àj¤YÀvp]«,]«8YYYÀvp]«,«,ÀwhYYÀwhÀwdYYÀwh]«,Às<«`Àwp«l «,Àwd2 ]À”¼Àj¤]«8Às´À“ÀÀsä]Àwd«p«`]«,«l €¥«l €¥«p€¥UÀu¤Àj¤ «l«p UÀu¤Àj¤Àu¤#U€¥UÀu¤Àj¤€¥Àu¤(€¥«l€¥«p€¥UÀu¤Àj¤4U€¥UÀu¤Àj¤€¥Àu¤ªÈª@€¥«h8=€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8$U€¥UÀu¤Àj¤€¥Àu¤ €¥Àu¤3€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8UÀBPÀ­88‚)€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­87=€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­82€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8 €ÍÀ­8UÀBPÀ­861€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8B €ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8UÀBPÀ­87‚)€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8„=€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8U€¥UÀu¤Àj¤€¥Àu¤ÀCd5U€¥UÀu¤Àj¤€¥Àu¤5€¥Àu¤€¥UÀu¤Àj¤€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8À­8À]XUÀBPÀ­8ÀBPÀ­8‚)€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8E€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8ÀC`À­8ÀAhÀkdÀAhÀ]X6U€¥UÀu¤Àj¤€¥Àu¤ªÈª@€¥«hE&uª@€¥UÀu¤Àj¤€¥Àu¤DU€¥UÀu¤Àj¤€¥Àu¤€¥Àu¤€¥UÀu¤Àj¤=uª@€¥UÀu¤Àj¤€¥Àu¤ªÈª@À­8€¥«hÀsø UYUÀtüÀuÌYÀuÌUYUÀtüÀuÌYÀuÌ*€ÀuÌYÀtüYUÀtüÀuÌÀuÌJYÀtüÀsøUYUÀtüÀuÌYÀuÌYÀuÌYUÀtüÀuÌD€ÀuÌYÀtüYUÀtüÀuÌÀuÌÀ­8ÀsøÀu¼YÀtü)uYÀtüYUÀtüÀuÌYÀuÌuYÀtüYÀuÌÀuÌ(uYÀtüYUÀtüÀuÌYÀuÌwUYÀtüÀuÌYÀtüÀuÌYÀtüuYÀtüYUÀtüÀuÌYÀuÌYÀtüYÀuÌYUÀtüÀuÌ1uYÀtüYÀuÌÀuÌÀs<À­8ÀsøÀuÌ.€YÀtüYUÀtüÀuÌYÀuÌÀuÌ<uYÀtüYUÀtüÀuÌYÀuÌYÀtüYÀuÌ:€YÀtüYUÀtüÀuÌYÀuÌÀuÌÀ­8Àu¼ YÀ•tÀ]HYYÀuÌ YÀ•t!€YÀtüYYÀuÌÀuÌ YÀ•tÀ]H]ÀuÌYÀtüYYÀuÌuYÀtüYUÀtüÀuÌYÀuÌYÀtüYÀuÌYUÀtüÀuÌ<€YÀtüYYÀuÌÀuÌÀs<À`À­8Àš$ÀZü"uUYÀ“ÀÀ“ÀYÀuÈ YÀuÈUYÀ“ÀÀ“À€¥# uUYÀ“ÀÀ“ÀYÀuÈ!uUYÀ“ÀÀ“ÀYÀuÈ ÀuÈU€¥YU€¥U YU?ÀAhÀs<uUYÀ“ÀÀ“ÀYÀuÈYÀuÈÀuÈ€‚ U€¥YUªÈª@À­8À]XYuUYÀ“ÀÀ“ÀYÀuÈÀu¼YU€¥UYÀ“ÀÀ“ÀÀuÈE&YuUYÀ“ÀÀ“ÀYÀuÈYYÀu¼AÀu¼AÀu¼U€¥YU YUYUUYÀ“ÀÀ“À«ô ªÈª@ÀuÌÀ]X; UUYÀ“ÀÀ“ÀuUYÀ“ÀÀ“ÀYÀuÈ«ü, uUYÀ“ÀÀ“ÀYÀuÈYÀu¼ YÀu¼ YÀu¼YÀu¼¬= ªÈª@À­8À]XYuUYÀ“ÀÀ“ÀYÀuÈÀu¼: uUYÀ“ÀÀ“ÀYÀuÈU€¥YU UuÀu¼€¥YU€ÀÀ]XYuUYÀ“ÀÀ“ÀYÀuÈYYÀu¼Àu¼YÀu¼AÀu¼AÀu¼Às<YÀu¼Àu¼uUYÀ“ÀÀ“ÀYÀuÈYÀuÈÀuÈU€¥YUYULuÀu¼€¥YUªÈª@ÀuÌYUUYÀ“ÀÀ“ÀÀ­8 AÀu¼UYÀuÌUÀuÄYÀuÌAUÀuÄYÀuÌ8 À]XÀA€Àu¼ÀAtÀ[¤ÀuÄÀuÌYUÀtüÀuÌJUYÀuÌAUÀuÄYÀuÌAÀu¼À­8ªÈª@ÀuÌÀAh  AYÀwpÀwp6UAYÀwpÀwpYÀuÌÀ­8ªÈª@ÀuÌÀAh AYÀLøÀLø6UAYÀLøÀLøYÀuÌÀ­8ªÈª@ÀuÌÀAh ª@À­8UYÀuÌ UYÀuÌ UÀuÌ-À]XUYÀuÌÀAhÀAhYÀuÌKUÀu̪Ȫ@ÀuÌÀ­8YÀ“ÀAUÀuÄYÀuÌAÀu¼¬, €¥Àtü €¥Àtü €¥Àtü¬,Àtü¬, Àtü€¥Àtü¬,YÀtü¬,&Às´]À™HÀ™HÀ™LÀ™LÀs´Às´]À™HÀ­8 YÀ˜x ]À™DUÀ˜xÀ–XÀ˜xUÀ˜xÀ–X YÀ˜x,YÀ˜x]À™DÀ–XUÀ˜xÀ–XÀ˜x¬<ªÈÀ˜¬<+€ÀuÌYÀtüYUÀtüÀuÌÀuÌ/€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌH€ÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌYUÀtüÀuÌÀuÌM€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀu̪ÈÀ­8ÀsøÀu¼YÀtü =AEEÀsÄ+ªÈª@Àu¤Às¼YÀuÌÀuÌÀuÌÀ­8À­8Àu¤YÀuÌ0]UÀxèAAYÀsðUYÀuÌ#AAYÀsðUYÀuÌuYÀtüYÀuÌÀuÌUYÀuÌ/]UÀxèAAYÀsðUYÀuÌ+UÀxèAAYÀsðUYÀuÌ ÀtüÀsðAYÀsð UYÀuÌUYÀuÌ€ÀxèYÀuÌÀuÌ€Â]UÀxèAAYÀsðUYÀuÌÀxèAAYÀsðUYÀuÌuYÀtüYÀuÌÀuÌYÀuÌYÀtüÀuÌUYÀuÌYÀuÌÀsÄUYÀtüÀuÌÀuÌo €ÀxèYÀuÌÀu̪Ȫ@ÀuÀ]UÀxèAAYÀsðUYÀuÌÀ­8Àu¤Às¼ÀuÌE€ÀxèYÀuÌÀuÌ€áÀwpÀuÌYÀuÌ€ƒ€ÀxèYÀuÌÀuÌÀs<Às8uYÀtüYÀuÌÀuÌÀsÄUYÀtüÀuÌYÀtüÀuÌÀxèYÀuÌÀwpÀwpp €áÀwpÀuÌYÀu̪Ȫ@ÀuÀ]UÀxèAAYÀsðUYÀuÌÀ­8Àu¤Às¼ÀuÌEe Àu¤Às¼Àu¤ÀuÌ]Àv|ÀsäÀsäÀwpÀuÌ]Àv|Àv|uYÀtüYÀuÌÀuÌYÀuÌ`€áÀwpÀuÌYÀu̪Ȫ@ÀuÀ]UÀxèAAYÀsðUYÀuÌÀ­8f Àu¤ÀuÌÀu¤]Àv|ÀuÌuYÀtüYÀuÌÀuÌYÀuÌYÀtüÀuÌÀwp]Àv|Àv|-UÀwpÀuÌÀs<ÀuÀÀxèYÀuÌÀ­8 AÀuÌ ÀuÌYÀuÌ YÀuÌ YÀuÌÀuÌ_ ÀuÌÀ­8AÀuÌUYÀuÌÀuÌÀuÌYÀuÌYYÀuÌÀs<AÀuÌYYÀu̬lªÈª@Àwp Às<ªÈÀkdÀ­8ÀuÌÀuÌ Às<ªÈÀkdÀ­8ÀuÌÀuÌ €¨À‘¬u]€¨À‘´ÀwpÀuÌu]€¨À‘´ÀwpÀuÌs]]Às<À[€¨À‘¬AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌu]€¨À‘´ÀwpÀuÌF UÀwpÀu̪Ȫ@ÀnÌÀ­8ÀZüÀxèYÀuÌYÀwpYÀwp!YÀZüªÈª@À­8À]XÀuÌU À]XÀZüYÀZüYÀZüÀZüÀs<UÀu¤ÀwpÀu¤ÀwpUÀwpÀuÌÀwpÀwpªÈª@À­8Àu¤À¶thÀ¶tÀ¶ YÀuÌÀuÌÀuÌ]Àº(]Àº(Àº(UAÀwpÀwpÀwpAÀwpÀwpÀwpÀ¶| ÀwpÀs<À`À­8ÀwpÀ[`G À¶tÀ¶ YÀuÌÀ¶|UAÀwpÀwpÀwpAÀwpÀwpÀwp ÀwpÀs<À­8ÀwpÀ[`ÀwpÀ¶tÀ¶ YÀuÌÀ¶|ÀwpÀ­8À[`Àwp ÀuÌÀwp ÀwpÀs<À­8ÀwpÀ[ ÀwpuÀ“ÀÀ–XÀ–X]uÀ“ÀÀ–XÀ–X$À–¬À–¬]À“ÀÀ“ÀÀ–XÀ–X]uÀ“ÀÀ–XÀ–XÀ–X]uÀ“ÀÀ–XÀ–XUÀ–XÀ–X]UÀ–XÀ–X(]uÀ“ÀÀ–XÀ–XÀ“ÀÀ–XÀ–X]UÀ–XÀ–XÀ–XUÀAhYÀ“ÀUÀAhYÀ“À-À­8À]XUÀAhYÀ“ÀÀApÀuÀÀs<ªÈª@À–XÀuÀD]uÀ“ÀÀ–XÀ–XÀ“ÀÀ–XÀ–XÀ–X]uÀ“ÀÀ–XÀ–X!]UÀ–XÀ–XªÈª@À–XED]uÀ“ÀÀ–XÀ–XÀ“ÀÀ–XÀ–X]uÀ“ÀÀ–XÀ–XÀ–X]UÀ–XÀ–XªÈª@À–X]UÀ–XÀ–X#]€À“Ä]€ÕÀ˜HÀ­8"]€À“Ä]€ÕÀ˜HÀ­8€À“Ä]€ÕÀ˜HÀ­8uÀ“ÀÀ–X]uÀ“ÀÀ–XJ]UÀ–XÀ–X]€À“Ä]€ÕÀ˜HÀ­8YÀ“ÀÀ–XÀ“À]uÀ“ÀÀ–XÀ–XUYÀ–XYÀ–X YÀ–XUYÀ–XYÀ–X À–XuÀ“ÀÀ–X UYÀ–XYuÀ“ÀÀ–X€„ YÀ–X]€À–XÀ­8]À­8À­8YÀ–X]€À–XÀ­8]À­8À­8À–XÀ–hÀ–pUYÀ–XYÀ–XYÀ–X'UYÀ–XYuÀ“ÀÀ–XÀ–XUÀwYÀwXUÀwYÀwXUÀwYÀwX> ÀwpªÈª@À­8À­8ÀLðÀu¤YÀtüYÀMtÀuÌÀuÌ0  YÀMtÀMÀLø YÀMtI YÀMtÀMYÀu¤Àu¤À”ÄÀLøÀ­8YÀtüÀwpUÀu¤Àwp9 UÀu¤ÀwpªÈª@À­8À­8ÀLðÀuÌÀuÌYÀMt ÀÀà ÀÀà UÀÀàª@À­8ÀuÌ ÀÀàÀZü ÀÀàYÀZüYÀZü*ÀÀàÀZüªÈª@À­8À]XÀ­8ÀuÌYYÀuÌYYÀu̪ÈÀ­8ÀZüYÀu̪ÈÀ­8ÀZüYÀZü AÀZü>AÀZüYÀZüYÀZüYÀZüÀZüYÀZüYÀZü#Àu̪Ȫ@À­8À]XÀuÌÀuÌE6€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp=ÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀuÌÀuÌUÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀwpÀuÌÀuÌÀwpUÀwpÀuÌÀuÌÀwpUÀwpÀuÌÀuÌÀwpÀwp€‹ÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpªÈª@À­8À]XÀuÌÀwpÀZüYÀuÌÀuÌÀZüYÀuÌÀZüYÀuÌE ÀÀèÀZü ÀÀàÀZü ÀÀìÀZü ÀÀèÀZü8 €ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp ÀÀìÀZü~ÀÀèÀZüÀZüYÀuÌÀuÌÀÀàÀZüÀÀèÀZüÀZüYÀuÌÀuÌÀÀàÀZüÀÀèÀZüÀZüYÀuÌÀÀìÀZüh ÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpªÈª@À­8À]XÀuÌÀwpÀÀàÀZüEÀÀàÀZüÀÀìÀZüZÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpªÈª@À­8À]XÀwpÀuÌ>ÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp>ÀÀì€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp>ÀÀè€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp=ÀÀì€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp=ÀÀè€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp:]€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp€¹ÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀÀì€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀÀè€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp\]€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpªÈª@À­8ÀuÌÀwpÀ]XÀuÌ;]€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp À]XÀÀà€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀÀì€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀuÌÀuÌ]€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀuÌ]€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpN€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpªÈª@À­8ÀuÌÀwp7€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwp} À­8ÀuÌUÀu¤ÀwpÀu¤Àwp€ÉÀu¤ÀwpÀuÌÀuÌÀwpÀuÌÀwpUÀuÌÀwpÀuÌÀuÌÀwpÀwpÀu¤ÀuÌÀwp UÀwpÀu̪ÈÀu̪@ÀwpÀwpªÈª@À­8ÀuÌ&ÀwpªÈª@À­8ÀuÌÀuÌÀwpÀwpÀwpªÈª@À­8ÀuÌÀwp!ÀwpªÈª@À­8ÀuÌÀwpÀwpYÀMtÀLøYÀu¤Àwp8UÀu¤ÀwpªÈª@À­8ÀLøYÀu¤ÀwpÀuÌÀuÌ$À–X&À–XÀ•$À“ÀÀ–XÀ–XÀ–XÀ­8Y]À“À ]À˜ À–X]À“À ]À“À ]À“ÀÀ˜q]À“ÀÀ“À]€À–XÀ­8]À­8À­8]À“À]€À–XÀ­8]À­8À­8YÀ–XY]À“À]À˜À–X AÀ–XA] À™4< AÀ–XÀ–ÄÀ–XÀ–XÀ–È]À–XÀ–¸YÀ™4À– À–X À–X ]YÀ–XÀ–ÄÀ–XÀ–X]YÀ–XÀ–XYÀ–X]YÀ–XÀ–X ÀwpÀw¬¬Ì¬ÌA¬ÌAÀwpEA¬ÌAÀw\EAYÀyE AÀyE AÀwXE Ày UÀuÌYÀyA¬ÌAÀwpEA¬ÌAÀw\E€é A¬ÌAÀwpEA¬ÌAÀw\EÀwpÀwpÀw˜ÀuÌYÀyYUÀuÌYÀyAYÀyEAÀyEÀw|ÀuÀÀ­8Àw¤ÀwðYÀwpÀwYÀw\Àw”Àw\ÀwœÀwXÀwAÀwXEÀwŒÀw€ÀwpÀw €ÕÀwp[ Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬ÌÀwp[ Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬ÌÀw\A¬ÌAÀwEA¬ÌAÀwE Àwd A¬ÌAÀwpEA¬ÌAÀwEÀw Àwp]ÀwYÀw$ÀwYÀwpÀwÀwÀw\Àw[ Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬ÌÀw` AÀwXEÀs<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬Ì ÀxTÀuÀ` Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬ÌÀwðÀ­8 ÀuÀÀuÀ€ÕYUÀuÀÀuÀYUÀuÀÀuÀ` Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬ÌÀuÀÀ­8€ÕYUÀuÀÀuÀR Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀX Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀÀwpYYYÀvp U€ÕÀwpÀ­8Y ÀuÌÀ­8ÀuÌÀuÌUÀu¤ÀwpÀu¤ÀwpÀwp]ÀwdUÀu¤ÀwpÀu¤ÀwpÀwpFUYÀw\YÀw\Às<YU€ÕÀwpÀ­8Àu¤À•TÀwpEY«¤À­ÜÀuÀ UYYÀw\YYÀw\YYÀw\ ¬Ô«¤ ¬ÔÀw\ Àw\ÀuÀ Àw\YÀuÀ À­ÜÀuÀ  AYYU AYE «¤Àw\UYÀw\YÀw\ YÀw\YÀw\UYYÀw\YYÀw\€±Y«¤YÀw\YÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀ­ÜÀuÀ UYÀw\YÀw\UYYÀw\YYÀw\YYÀw\YYÀw\"YÀw\Às<ÀkdY¬ÔÀ­8ª ª(M ]ª8]ª8ª8Àwp]Àu¤]Àu¤Àu¤ÀuÌÀwpª ª(ÀuÈYÀuÌÀwpÀs<ª@À­8ÀwpYÀu¤À”ÄÀwpÀwXÀs<ª@À­8ÀwX€‹Àw¤ÀxÀw€À”ÌÀwpÀ­8ÀwpÀw”Àw\ÀwœÀwXÀ•TÀuÌÀwÀ­8ÀwXÀwÀ­8À•TÀwYÀw\ÀwŒYÀwpYÀuÌZ€ÕÀwpÀwpÀwŒYÀuÌÀ­8ÀuÌÀw|ÀuÀ]Àu¬Àu¤]Àu¬Àu¬À™LÀ™Ll À­8€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤YÀtüÀuÌÀwpÀs<ª@À­8ÀwpUÀwpÀuÌÀwpÀs<ª@Àwp€…ÀwŒÀw|YÀwpÀuÀÀs<ÀwpÀwŒÀw|YÀwpÀwŒÀw|UÀuÌÀuÌÀuÌÀwŒÀw|UAÀwpÀwpÀwpAÀwpÀwp¬lªÈ¬lÀuÌÀwpÀ­8­4À–XÀ­8­€]­| ­€Àu¼­€Àt<Àu¼YÀtüª ­œ­€ Àu¬À™H«X­œ]À™HÀu¤­€­¤ÀwpÀw„YÀu¤Àu¤]Àu¤Àwp]Àu¤Àu¤Àwp UÀtü¬,¬, UÀtü¬,AÀkdÀHT ÀH„ÀuÌEUÀtü¬,¬,ÀtüE¬,ªÈ­dª@¬,À“ÐAÀkdAÀHTAAÀH„AÀuÌEÀ•¨À“Ð UÀu̬, YÀ•Ø UÀu̬,tÀ•¨YÀ•ØÀ“ÐÀ­8UÀtü¬,¬,ÀtüYÀ•ØYÀ•ØÀ•ØÀ•ØUÀu̬,¬,ÀuÌUÀu̬,¬,ÀuÌ ¬,ªÈ­d­lÀC`ª@¬,À•xEÀ•  YÀ“ÐÀ™T UÀup¬, UÀup¬,hÀ• YÀ“ÐÀ™TÀ­8UÀup¬,Àup¬,À™HÀ™LÀ™L]ÀuÌYÀuÌYÀuÌYÀuÌÀu̬,ªÈ­dª@¬,À•xEÀ•˜ÀH\À•œ­dÀ•ŒÀ•À•”À•„À•€À•ˆÀ•¤€‚À•˜À•ØÀ“ÐÀ­8UÀu̬,Àu̬,UÀtü¬,¬,ÀtüÀH\À•œ­dÀ•ŒÀ•À•”À•„À•€À•ˆÀ•¤YÀ•ØYÀ•ج,ªÈ­d­lÀC`ª@¬,À•xÀ™\ÀšUY­”¬,Y­”UY­”¬,Y­”€Õ]Àut UÀup¬,€ÑÀ™\ÀšÀ™HÀ­8UY­”¬,¬,Y­”Y­”«,ÀuÌÀ“ÀUYÀtüÀuÌYÀtüÀwd€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀuÌYYUÀuÌÀwhYUÀuÌÀwhYÀuÌ*UÀup¬,ªÈ­dª@À™T¬,YÀuÌEUYÀtü¬, ¬,À“ÐÀtüUYÀtü¬,)UYÀtü¬,YÀtü¬,YÀuÌ-UÀup¬,ªÈ­dª@YÀ“Ь,À™TÀ­8 UYYUÀuÌÀwhÀuÌAUÀuÌÀwhÀuÌUYYUÀuÌÀwhÀuÌ YUÀuÌÀwhYÀuÌ YÀuÌYÀš ! UYÀuÌYÀš YÀuÌ€Œ «,YYÀwhÀuÌUYYUÀuÌÀwhÀuÌÀuÌYYUÀuÌÀwhYYÀuÌAUÀuÌÀwhÀuÌÀs<]Àu¼Àu¼«`P ­”ªÈª@YÀvpÀ­8YÀtüÀt<]Àu¼YÀtü«`À“ÀÀšÀuÌÀ™HUÀuÌÀšÀšUÀuÌÀš UÀuÌÀš ­”{ UÀuÌÀšYYÀwhUYYUÀuÌÀwhÀuÌÀuÌYYUÀuÌÀwhÀšÀšUÀuÌÀšÀšÀuÌYY­”ªÈª@YÀvpÀšÀ­8À“ÀYÀtüÀt<]Àu¼YÀtü«`ÀuÌÀuÌÀ™H YÀ•x]­|$€YÀtü]Àu¼]ÀuÌ«`0€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌ­lÀ–#€YÀtü]Àu¼]ÀuÌ«`#ÀšÀ•ØYÀ•tYÀ•xÀ­8À“ÀYÀtü]­|Àt<€YÀtü]Àu¼]ÀuÌ«`]­|Àu¼YÀtü«`€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌÀuÌ]ÀuÌ]Àu¼YÀtüª@­l¬,¬,À–Às<ÀkdUÀu̬,¬,]À™H]ÀuÌÀuÌÀ™HÀš«,B UY­”¬,ªÈª@«`­d­€]À™H]Àu̬,ÀšYÀvpÀsð ]Àsð ]ÀsðÀsð]ÀsðÀAhÀ­8/UÀtü¬,]ÀsðªÈª@¬,À“ÐÀ“ÀÀtü ]Àtü Àtü ]Àtü-À“À]Àtü]Àtü­dÀtü]Àtü(UÀtü¬,]ÀsðªÈª@­d¬,À“ÐUÀtü¬,ªÈª@­d¬,À“ÐIÀ“ÐYÀ™8YÀvpÀs<Às8YÀvpAÀvpÀtü]]ÀtüªÈª@À•t À•tÀtüYÀtüªÈª@YÀ•t UÀv ¬,Àv UÀv ¬,C À]XÀu¼ÀsðÀt4]ÀsðYÀ•ØÀ•ØUÀv ¬,¬,Àv E UÀu̬,]ÀsðªÈ­d­lÀC`ª@¬,YÀ“ÀÀ­8YÀ•ØEC ]ÀsðYÀ•ØÀ•ØUÀv ¬,¬,Àv UÀv ¬,¬,Àv F UÀu̬,]ÀsðªÈ­d­lÀC`ª@¬,À­8À­8YÀ•ØÀ•ØEÀ•øÀ– À•èÀ•ìYUÀ•ØUYÀu̬,À•ôÀ•ðÀ–À–À“ÔÀ“ðÀ– UÀ•ØUYÀu̬,?0À•àYÀ“ÀÀ“ÄÀ­8À]XÀu¼ÀsðÀt4]ÀsðÀ•äYÀ•ØYÀ­8À•øÀ­8À•ØÀ– À•èUÀu̬,¬,ÀuÌÀs<UÀu¼YÀuÌYÀuÌÀ•ìYUÀ•ØUÀv ¬,Àv UYÀu̬,À•ôÀ•ØUÀu̬,À•ðÀ“ÐUÀtü¬,ÀtüÀ–YÀ•xÀ–À–À“ÔÀ“ðÀ–UÀv ¬,¬,Àv 0UÀu̬,]ÀsðªÈ­d­lÀC`ª@¬,À•Ø'UÀu̬,ªÈ­d­lÀC`ª@¬,À•ØÀ•üÀuìÀ•üÀ­8UÀu̬,Àuì,UÀv ¬,ªÈ­d­lÀC`ª@¬,À•ØÀ­8­dÀsøÀsøÀsð]Àsð%Àtü]ÀsðªÈÀsøÀsÜ­dÀ­8 ¬,À•ØÀuÌ/UYÀu̬,ªÈ­d­lÀC`ª@¬,YÀ•ØYUÀ•Ø UÀ•Ø UYÀu̬,V YUÀ•ØÀ•ØUÀu̬,YUÀ•ØÀu̬,UYÀu̬,YÀu̬,9UYÀu̬,ªÈ­d­lÀC`ª@¬,YUÀ•ØÀ­88YUÀ•ØÀ•ØYUÀ•ØUÀv ¬,¬,Àv ; UÀv ¬,ªÈ­d­lÀC`ª@À­8YUÀ•ج,Àv ªÈ­d­lÀC`ª@À­85UÀv ¬,ªÈ­d­lÀC`ª@¬,YUÀ•ØÀ­8]YÀsð YÀsð ]YÀsð YÀsð À•ØÀsð ¬,UÀ•ØÀsðÀuÌ#]YÀsðYÀsð]ÀsðA UYÀu̬,]YÀsðªÈ­d­lÀC`ª@¬,YÀ•ØÀ­8 YÀ•xU¬, À•xU¬,"¬,ªÈ­d­lÀC`ª@¬,YÀ•xª@ÀuÌÀ•ØE]À“ÀÀ“ÀÀAhªÈª@]À“ÀÀuÌÀ” À”À”À“ÜÀ” À”À”À“Ü#ªÈª@ÀuÌÀ•Ø]À“ÀÀ“ÔEÀ“ôÀ“üÀ”À”À“ô À“ü À”ƒÅÀ” À“øÀ“àÀ“ìÀ“ðÀ“ø À“àÀ“ì!ÀwxÀv|  ƒÅ Àv¼#ªÈª@ÀuÌÀ•Ø]À“ÀÀwpEÀ“äÀ“èÀ– UÀwp¬, U¬,U¬, UÀwp¬,QÀ–À“ÔÀ“äÀ“èÀ–À–XUÀwp¬,¬,ÀwpÀwpÀwpÀ•àÀ“ÄÀ­8&U¬,ªÈª@¬,ÀuÌÀ•Ø]À“ÀYU]À“ÀÀ•ØÀ•ØU]À“ÀÀ•ØYUÀ“ÀÀ•ØYUÀ“ÀÀ•ØUÀ“ÀÀ•ØYU€¨À‘¤U€¨À‘”AEE]U€¨À‘”AEE À•ØU]À“ÀÀ•Ø1U]À“ÀÀ•Ø U]À“ÀÀ•ØU]À“ÀÀ•ØU]À“ÀÀ•Ø" U]À“ÀÀ•ØUÀ“ÀÀ•ØYU]À“ÀÀ•Ø1UÀ“ÀÀ•ØYUÀ“ÀÀ•ØUÀ“ÀÀ•Ø €¨À‘¤ €¨À‘¤U€¨À‘¤ U€¨À‘¤YU€¨À‘¤YUÀ“ÀÀ•Ø €¨À‘¤]U€¨À‘”AEEU€¨À‘”AEE U€¨À‘”AEEu€¨À‘”AEEW€¨À‘”ÀtXÀt4Àtx€¨À‘¤€¨À‘¤YU]À“ÀÀ•ØÀ•ØU]À“ÀÀ•ØÀ•ØYU]À“ÀÀ•ØYUÀ“ÀÀ•ØYU]À“ÀÀ•ØYUÀ“ÀÀ•ØEUÀ“ÀÀ•ØÀ“ÀYU€¨À‘¤YU€¨À‘¤5U€¨À‘”AEE]U€¨À‘”AEE]U€¨À‘”AEE€¨À‘”AEE>u€¨À‘”AEEªÈª@]Y¬,Àu¼YÀ•ØÀ­8u€¨À‘”AEE/€YÀtüYUÀtüÀuÌYÀuÌÀuÌ€ªu€¨À‘”AEE€¨À‘”AEE€YÀtüYUÀtüÀuÌYÀuÌÀuÌYÀtüYÀuÌ­lUYÀu̬,YÀtüYÀsð¬,YÀuÌYÀuÌ> UÀu̬,ªÈ­d­lÀC`ª@¬,À­8Àu¼YÀuÌYÀ•ØUÀu̬,À­8­d UÀu̬,Às<ÀuØYÀuÌÀu¼5 UÀu̬,ªÈ­d­lÀC`ª@¬,À­8ÀuÌYÀ•ØÀ˜P €ÕÀ˜H]€ÕÀ˜H €ÕÀ˜H$]€ÕÀ˜HÀ“ÀÀ˜P€ÕÀ˜H$]À“ÀªÈª@À“À]€ÕÀ˜HÀ˜0 uA«tÀMp€¥«h€Á €¥«hÀ˜4À˜(À˜8uA«tÀMp€¥«h€Áu¬,€¥«h€ÁUu¬,€¥«h€Á€–À˜0À­8À“À]€ÕÀ˜H]À“ÀÀuÌuA«tÀMp€¥«h€Á€Á€¥«h]À“ÀÀ“ÀÀ˜4À˜(À•ØUÀu̬,¬,À˜8À˜(C Uu¬,€¥«h€Á­lªÈÀu̪@¬,€¥«h€ÁÀ˜($À˜„À˜€UYÀ˜(À­8 À˜„À˜€UYÀ˜(À­8À˜xÀ˜4À˜8À˜(À˜(UYÀ˜(À­8 YÀ˜( À˜((UYÀ˜(À­8YÀ˜(À­8€ÕÀ˜xUu¬,€¥«h€Á UYu¬,€¥«h€Á YÀ˜(UYu¬,€¥«h€Á ÀuÌÀ˜(' u¬,€¥«h€ÁUÀuÌÀ˜(€ÐÀ˜„À˜xÀ­8À•ØUÀu̬,¬,ÀuÌÀ˜€YÀ˜(À˜0À˜(Uu¬,€¥«h€Á€Á€¥«hYÀ˜(YÀuÌUYu¬,€¥«h€ÁYÀ“À‚ñ‚ñuA«tÀMp€¥«h€ÁG UYu¬,€¥«h€ÁªÈ­lÀu̪@¬,€¥«h€ÁÀ˜x«h €¥«h]À”¼Àsä«hguA«tÀMp€¥«h€ÁªÈª@À“ÀÀuÌ]À”¼]«,Às´«X«\]À”¼€¥«h€Á, 'UA«tÀLøu¬,€¥«h€Á&UA«tÀLøu¬,€¥«h€Á/UA«tÀLøu¬,€¥«h€ÁÀ­8lUA«tÀLøu¬,€¥«h€ÁÀD|ªÈª@]«,Às´«X«\]À”¼¬,€¥«h€ÁÀuÌÀ˜(AÀ˜À–XÀ˜˜À˜ À˜¤ ]Àš$À˜¸À˜À À˜À–XxAÀ˜À–XÀ˜À˜˜À­8À“ÔÀ˜ À“ÀÀ˜¤À•ØÀ˜´YÀ“ÀÀ“ÄYÀ­8YÀ˜]Àš$À–XÀ˜¸À˜À À–XÀ˜À˜¼ YÀ˜ À˜YÀ˜À˜À˜À˜¼YÀ˜À­8YÀ˜E UAYÀLøÀLøYÀuÌAYÀLøÀLø+UYA«tÀLøu¬,€¥«h€ÁYA«tÀLøUAYÀLøÀLøYÀuÌ€Às´«X«\]À”¼*UYA«tÀLøu¬,€¥«h€Á€¦ UAYÀLøÀLøYÀuÌAYÀLøÀLøYÀuÌYÀ˜YÀ˜À˜À˜¸YÀ˜À˜¼À˜UYA«tÀLøu¬,€¥«h€ÁYA«tÀLø€ƒ UA«tÀLøu¬,€¥«h€ÁÀD|ªÈª@€Às´«X«\]À”¼¬,€¥«h€ÁÀuÌÀ­8YÀ“ÀYÀ˜ÀAhE€Às´«X«\]À”¼À” À˜Ð A«tÀMp A«tÀLøÀ˜¬À˜°ÀD|ÀAˆ€áÀwpÀuÌYÀu̬,¬lUYÀ˜À˜Y­4]UÀuÀYÀuÌÀ˜Ä YUUYÀ“ÀÀ“ÀÀ˜#uÀu¼€¥À˜YUÀ˜ €¥À˜YUÀuÌÀtÈÀ˜Ø( UA«tÀLøu¬,€¥«h€Á €Á «h À˜ÀuÌ ¬,€áÀwpÀuÌYÀu̬,UYÀ˜À˜ À–X­4UÀuÀYÀuÌ]UÀuÀYÀuÌ"uÀu¼€¥À˜YUÀ˜ ÀtÈUÀuÌÀtÈ2 u¬,€¥«h€ÁUÀuÌÀtÈA«tÀLøƒ‡]€Às´«X«\]À”¼À]XÀ˜˜À­8À“ÔÀv|À” À­8Às<À˜ÐÀ•ØUÀu̬,¬,ÀuÌÀ˜ ]À”¼À“ÀuA«tÀMp€¥«h€Á€Á€¥«hA«tÀMpÀ˜UA«tÀLøu¬,€¥«h€ÁA«tÀLøÀ˜¤À˜¬À˜UA«tÀLøu¬,€¥«h€Á¬,€ÁA«tÀLø€¥«hÀ˜°YÀ˜UYA«tÀLøu¬,€¥«h€ÁYA«tÀLøÀ˜´]Àš$YÀ“ÀÀD|ÀAhÀAˆÀA|ÀuÀÀŸP€áÀwpÀuÌYÀu̬,ÀwpYÀu̬lUYÀ˜À˜UYÀuÌÀuÌÀuÌYÀuÌYÀ˜AÀ˜À–XYÀ–XY­4UÀwp¬,ÀwpÀuÌ]UÀuÀYÀuÌÀAhÀAŒÀ[`]Àº(]Àº(Àº(ÀA„À[ À]XÀtÈ]Àv|]Àv|ÀApÀu¤À˜¸À˜ÀÀ˜ÄYUUYÀ“ÀÀ“ÀÀ˜uÀu¼€¥À˜YUÀ˜Àu¼€¥À˜€YÀtüYUÀtüÀuÌYÀuÌÀuÌYUÀtüÀuÌYÀtÈYUÀuÌÀtÈÀ˜Ø ÀuÌÀ˜2 u¬,€¥«h€ÁUÀuÌÀ˜A«tÀLøqUYA«tÀLøu¬,€¥«h€ÁÀD|ªÈª@Às´«X«\]À”¼¬,€¥«h€ÁYÀuÌYÀ˜$ À¬ÔEÀuÌÀ¬ÔEªÈÀkdÀ­8Àu̪Ȫ@¬,À–X­@À•hY­4"Y­4­@Y­4À–XÀ­8À•hªÈª@¬,Y­4 ªÈª@¬,uÀwpÀu̬,ÀuÌUÀwp¬,!uÀwpÀu̬,ªÈª@¬,À–XÀuÌUÀwp¬,¬,Àwp"UÀwp¬,ªÈÀu̪@¬,À–XÀ­8UÀwp¬,Às]€ÉU]ÀZü]€ÉU]ÀZüN)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“ÀP ]€ÉU]ÀZü]€ÉU]ÀZü]ÀZüN)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“ÀR])Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“À]YUÀuÌÀwhc]€ÉU]ÀZü]€ÉU]ÀZüÀZüÀ[ÀuÀYYUÀuÌÀwhf]YUÀuÌÀwhªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“À]YUÀuÌÀwhA]YUÀuÌÀwh]YUÀuÌÀwhYUÀuÌÀwhQªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“À]]YUÀuÌÀwh]YUÀuÌÀwhYUÀuÌÀwhUÀuÌÀwhÀwhÀs<Às8RªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“À€áÀ˜À–XÀ–XÀ–X]€áÀ˜À–XÀ–XÀ–X&À–ŒÀ–ÄÀ–XÀ˜À–XÀ–XÀ•$%]€áÀ˜À–XÀ–XÀ–XÀ–XdAÀ–X]À“À)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀuÀ–XÀ–XÀ­8]uÀ–XÀ–XÀ­8À—À­8À–XÀ–X]uÀ–XÀ–XÀ­8À–XnAÀ–X]UÀ–XÀ–XªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüª@À“À ]À˜uÀ–XÀ­8À˜]uÀ–XÀ­8À˜-À–¬À–¬]À“À]À˜À“ÀÀ–XÀ˜]uÀ–XÀ­8À˜À–X À˜À­8]uÀ–XÀ­8À˜uÀ–XÀ˜/]uÀ–XÀ­8À˜À–XÀ­8À˜ÀAhhuÀ–XÀ˜ªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüª@À“ÀÀ–X\]UÀ–XÀ–X]€À–XÀ­8]À­8À­8À–XÀ–XuÀwpÀu̬,À­8À­8jUÀ–XÀ–XªÈ¬,)Y€ÉU]ÀZü)Y€ÉU]ÀZüª@À“ÀÀ–X€À“ÀÀ˜À­8]€À“ÀÀ˜À­8F À–¬]À“À]À˜À“ÀÀ­8À˜À–¬]À“ÀÀ–X]À“Àp]€À“ÀÀ˜À­8)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀÀ–X À–XÀ­8]uÀ–XÀ–XÀ­8]€À“ÀÀ˜À­8UÀ–XÀ–X€áÀ“ÀÀ˜À–XÀ–XÀ­8"]€áÀ“ÀÀ˜À–XÀ–XÀ­8€„]uÀ–XÀ–XÀ­8]€À“ÀÀ˜À­8À–XÀ“ÀÀ­8À˜UÀ–XÀ–XÀ–XÀ–X]€À“ÀÀ˜À­8À­8À­8€‚]€áÀ“ÀÀ˜À–XÀ–XÀ­8ªÈ¬,)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“Àª@À–XuÀ–XÀ˜#€À“ÀÀ˜À–XÀ–XÀ˜À­8']€À“ÀÀ˜À–XÀ–XÀ˜À­8€ž]uÀ–XÀ–XÀ­8]€À“ÀÀ˜À­8À“ÀÀ­8À–XÀ˜uÀ–XÀ˜À–XÀ˜UÀ–XÀ–XÀ–XÀ–X]€À“ÀÀ˜À­8À­8À­8€‡]€À“ÀÀ˜À–XÀ–XÀ˜À­8ªÈ¬,)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“Àª@À–X+€À“ÀÀ˜À–X]À–X]À˜À­8/]€À“ÀÀ˜À–X]À–X]À˜À­8= ]À“ÀÀ“ÀÀ­8À­8À–¬]À“À]À˜À˜À­8€ˆ]€À“ÀÀ˜À–X]À–X]À˜À­8)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀÀ–XE#]€áÀ“ÀÀ˜À–XÀ–XÀ­8(]€À“ÀÀ˜À–XÀ–XÀ˜À­8€— ]€áÀ“ÀÀ˜À–XÀ–XÀ­8À“ÀÀ­8À–XÀ˜À–X]€À“ÀÀ˜À–XÀ–XÀ˜À­8À˜]uÀ–XÀ–XÀ­8À–¬]À“À]À˜€£ ]€À“ÀÀ˜À–X]À–X]À˜À­8ªÈ¬,)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@À–X]€áÀ˜À–XÀ–XÀ–X0]€À“ÀÀ˜À–X]À–X]À˜À­8UÀ˜x]AÀ–XÀ–XUÀ˜x]AÀ–XÀ–Xu]À˜À­8À–X?€ÉÀ˜À–XÀ“ÀÀ˜À–X]À–Xu]À˜À­8À–XC]€ÉÀ˜À–XÀ“ÀÀ˜À–X]À–Xu]À˜À­8À–X€ú]€áÀ˜À–XÀ–XÀ–X]€À“ÀÀ˜À–X]À–X]À˜À­8À˜UÀ˜x]AÀ–XÀ–X5UÀ˜x]AÀ–XÀ–X5À–X]À˜À“ÀÀ­8]À–XÀ–XÀ˜À–X]€À“ÀÀ˜À–X]À–X]À˜À­8À­8À­8€· ]€ÉÀ˜À–XÀ“ÀÀ˜À–X]À–Xu]À˜À­8À–XªÈ¬,)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@À–XUÀ–XYÀ–XUÀ–XYÀ–X6À—<À–¬À–XÀ–XUÀ–XYÀ–XÀ–XYÀ–XUÀ–XYÀ–XÀ–X"UÀ–XYÀ–XÀ–XYÀ–XUÀ­8À˜]UÀ­8À˜UÀ–X]UÀ­8À˜(]uÀ–XÀ­8À˜À˜À­8À–X"UÀ–X]UÀ­8À˜À–XUÀ–X]UÀ­8À˜]UÀ­8À˜ €ÉU]ÀZü7€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜;]€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜~ UÀ–X]UÀ­8À˜UÀ–XYÀ–X]À“ÀÀ“À]UÀ­8À˜À–X]À˜]UÀ­8À˜À˜À­8ÀAh€Ž]€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜ªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüª@À–X Àu¤À–XYÀu¤Àu¤YÀu¤À–XÀ­8YÀu¤ Àu¤À˜(YÀu¤Àu¤À“ÀYÀu¤À˜xÀ­8YÀu¤ Àu¤À˜À˜À­8YÀu¤UÀ–X]À–XÀ–ÄÀ–XÀ–XÀ”ÌUÀ–X]À–XÀ–X€—UÀ–XYÀ–X]À“ÀYÀ–XUÀ–XYÀ–X]À“ÀYÀ–XÀ“ÀÀ“ÀYÀ–XÀ–XÀ­8À–pUÀ–XYÀ–X]À“ÀYÀ–XÀ­8QªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ–XAÀ­8UYÀu¤ A±x> ÀÁ,UYÀu¤ª@À­8AÀ­8Aª@UYÀu¤AÀ­8UYÀu¤ÀÁ,UYÀu¤À­8 A"AÀ­8UYÀu¤AYÀÁ,UYÀu¤À­8ÀÁ,UYÀu¤ª@À­8AÀ­8Aª@UYÀu¤> AÀ–XÀ–XÀ­8À–XÀ–XÀ˜xÀ˜xÀZüÀ–XÀ–XÀ˜x À­8À­8 À–XÀ–X]AÀ–XÀ–X.UAÀ–XÀ–XÀÁ,UYÀu¤ª@À­8€‚ UÀ˜x]AÀ–XÀ–XÀ˜x]AÀ–XÀ–X]UÀ–XÀ–XÀ–XÀ–X]uÀ“ÀÀ–XÀ–XÀ“ÀÀ–XÀ–XÀ­8À­8€‚UAÀ–XÀ–XÀÁ,UYÀu¤ª@À­8ªÈª@À“ÀÀ­8À–XÀ–XÀÁ,UYÀu¤ª@À­8À˜xÀ˜xÀZüÀ˜À–XEP ]UÀ–XÀ–XÀ–XÀ–X]uÀ“ÀÀ–XÀ–XÀ“ÀÀ–XÀ–XÀ­8À­8€™UAÀ–XÀ–XÀÁ,UYÀu¤ª@À­8ªÈª@À“ÀÀ­8À–XÀ–XÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8À˜xÀ˜xÀZüÀ–XEAÀ–XÀ–X/UAÀ–XÀ–XÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8UYÀu¤ª@ÀÁ,UYÀu¤ª@À­8 UYÀu¤ª@€ÙÀ­8]€ÉU]ÀZüÀZüÀAhAÀ–XÀ–XUAÀ–XÀ–XÀÁ,UYÀu¤ª@À­8]À˜]À–XÀ˜À–X]À–XÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XUYÀu¤ª@YÀu¤À–XE]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–X]À˜À“ÀÀ­8]À–XÀ–XÀ–XÀ–XÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8À˜xÀ˜x]€ÉU]ÀZüE ª@€òÀ–XÀ–XÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8]À˜À˜UÀ˜x]AÀ–XÀ–X]AÀ–XÀ–XÀ˜xUÀ˜x]AÀ–XÀ–XÀ˜x]AÀ–XÀ–X]€ÉU]ÀZü ]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XÀ˜À–X]À˜À“ÀÀ­8]À–XÀ–XÀ˜À–XEUÀ–X]À–X<]€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜ À–XÀ–XYA€ü"UYÀu¤ª@YÀu¤À˜xÀ˜UÀ–X]À–X]€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜]À˜]À–XÀ–XÀ“ÀÀZüÀ­8ÀAh]À–XÀ–XUÀ–XYÀ–X]À“ÀÀ“ÀYÀ–XYÀ–XÀ–X]À˜À˜€×À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8À–XÀ­8ÀÁ,UYÀu¤ª@À­8À–XÀ–XD ]À–XÀ–XÀ­8À–ÈÀ­8À­8À– À–¸À–¼À–ˆÀ–ŒÀ–„€Ñ]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XÀ­8À–XÀ–X]À–XE YÀ™4À­8À–XÀ–XÀ–XÀ–X€Ó]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XÀ•TÀ–XÀ˜À–XÀ“ÀE!À­8YÀ™4À–XÀ–XÀ­8€Ò]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XÀ”ÔÀ­8À–XYÀ™4EÀ­8À­8€Î]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8AÀ–XÀ–XÀ–XÀ”ÔÀ­8À–XED]€ÉÀ˜À–XÀ“ÀÀ˜À–X]À–Xu]À˜À­8À–X$)Y€ÉU]ÀZü AÀ“ÀY¬D¬H YÀ™@ À™@¬DY¬D‚‰C]€ÉÀ˜À–XÀ“ÀÀ˜À–X]À–Xu]À˜À­8À–XÀ˜À–X]À˜À“ÀÀ­8]À–XÀ–XÀ˜À–XUÀ–X]À–X]€À“ÀÀ˜À–X]À–X]À˜À­8UYÀu¤ª@YÀu¤UÀ–X]À–X]€áÀ“À€ÉU]ÀZüÀ–XÀ­8]À˜ªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8À–XÀ­8À–ÄÀ”ÌÀ—$À•TÀ–È]À–XÀ–´YÀ™@Y¬D¬HY¬DY¬DÀ— À˜ À˜´YÀ“ÀÀ– YÀ™4YÀ™4À–¸À”ÔÀ”ôÀ­8À—À—À–ŒÀ•$À•,À–ˆÀ–„À•<À–¼À• €Ú]À–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8À–XAÀ–XÀ–X€ªÀ–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8À–X&]À–XÀ—$À–XÀ­8À­8À–X€ÖÀ–XªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8ÀÁ,UYÀu¤ª@À­8À–XAÀ–XÀ–X! ÀZü€ÉU]ÀZü1€ÉU]ÀZü €ÉU]ÀZüH U1€ÉU]ÀZüUY€ÉU]ÀZü! Y€ÉU]ÀZü¶.À]XÀ­8Àw|ÀuÀÀ­8ÀAhÀu¤Às<YÀZüY€ÉU]ÀZüÀ`)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8YÀu¤ªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8À–XÀ–XÀ–XÀ–XÀ–XÀ“ÀUÀwp¬,¬,Àwp0UÀwp¬,ªÈª@ÀuÌÀ­8ÀwpÀu̬,À–XÀwpªÈª@Àwp]UÀwp¬,]UÀwp¬, ]UÀwp¬, ¬,À™4ÀMtØDÀ–ŒÀ–XÀ˜À­8À–XÀ•$uÀwpÀu̬,¬,ÀwpÀuÌUÀwpÀuÌÀwpÀuÌ€áÀLø]ÀwpYÀu¤ª@¬,YÀu¤¬,ÀLøª@UÀwp¬,¬,ÀwpÀMÀwŒÀw|YÀuÌYÀwpÀuÀÀs<ÀwpYÀu¤Àu¤ÀuÌÀ­8ÀwpÀwpUÀu¤ÀwpÀ–ˆÀ“ÀÀ–XÀ–„À•<UÀwp¬,À–¼À”ÔÀ• À­8À—$À–ÄÀ”Ì]UÀwp¬,]UÀwp¬,À–ÈÀ•T]À–XUÀwp¬,À”ÄÀ–´YÀ™@]À”¼À– YÀ™4UYÀMt¬,YÀMtÀ—À—2]UÀwp¬,ªÈª@ÀuÌÀ­8ª@Àu̬,À–X+]UÀwp¬,À­8UÀwp¬,¬,Àwp.UÀwp¬,ªÈª@ÀuÌÀ­8ª@Àu̬,À–X+ªÈª@ÀuÌÀ­8ÀuÌUÀwp¬,¬,Àwp&UÀwp¬,ªÈª@¬,À–XÀuÌÀ­8­ uÀu¤Àwp¬,À­8À­8ÀLðªÈÀuÌÀu̪@¬,YÀ™4€® À­8UA«tÀLøu¬,€¥«h€Á¬,A«tÀLø€¥«huª@€¥UÀu¤Àj¤€¥Àu¤€¥Àu¤€¥UÀu¤Àj¤ª@U]Àwp¬,Àu̬,]Àwp@€áÀLø]ÀwpYÀu¤ª@¬,ªÈÀu̪@¬,À˜]À–X.UYÀMt¬,ªÈÀuÌÀu̪@¬,YÀ™4 UÀMt¬,rÀ”ÄÀ­8À˜]À–XÀ–X€áÀLø]ÀwpYÀu¤ª@¬,YÀu¤¬,ÀLø]Àwpª@UÀwp¬,¬,Àwp&UÀMt¬,ªÈÀuÌÀu̪@¬,À™4À˜lÀ˜h UÀxø¬,E À˜lÀ“ÐÀ­8UÀtü¬,¬,ÀtüÀ˜hÀ•ØUÀu̬,Àu̬,UÀxø¬,ªÈª@¬,À˜` YÀvp%YÀvpªÈª@À­8€Ý€ÝYÀ™8A€ÝAYÀ™8YÀvpAYÀš YYÀvpAÀš YÀvp]uÀŸPÀuÌÀ­8 ]ÀŸP4AªÈAÀuÌAª@A¬,AÀ–XUÀwp¬,U]Àv| À˜xYYÀvp ]À™D ]ÀŸPuÀŸPÀuÌÀ­8]uÀŸPÀuÌÀ­8 AªÈÀuÌ ª@¬,À–XUÀwp¬,U]Àv|‚eEYÀtüª@]À”¼À™<YÀ˜xÀ•T]À™DÀ–XÀ˜À­8À“ŒÀ•lYÀ™8Àš]À™H€ÝA€ÝAYÀ™8YÀvpYÀvpÀs<Às8Às´YYYÀvpAYÀš YYÀvpAÀš YÀvpAYÀ™8YÀvpYÀvp]À™D«\«`]À™H«X«,UA«tÀLøu¬,€¥«h€Á¬,A«tÀLø€¥«h]uÀŸPÀuÌÀ­8Y«hY«hÀuÌÀ“À]ÀŸP]ÀŸPÀŸPª@]uÀŸPÀuÌÀ­8À­8À™HÀ™LÀ™LAªÈAÀuÌAª@A¬,AÀ–XUÀwp¬,UÀwp¬,AEUÀwp¬,¬,ÀwpÀ•lYÀuÌUYÀuÌÀuÌÀuÌU]Àv|]Àv|8 U«x¬,«`ªÈª@¬,ÀuÌ]Àu¤ª YÀtü«X¬D,  Àwp Àv|ÀwpÀs<Às8UÀwp¬,Àwp,U]Àv|ªÈÀu̪@¬,YÀvpÀ–X6YÀ•tYÀ•xYÀtüª@¬,YÀtüYÀtüU«X¬,ªÈª@¬,Àš$U«X¬,ªÈª@¬,¬D¬DU«X¬,¬,«X"U«x¬,«`ªÈª@¬,ÀuÌÀ™@ ÀÀàÀu¼ ÀÀìÀu¼ ÀÀìÀu¼ÀÀàUÀu̬,2À“ÀÀ­8YÀ“ÀÀ]XÀÀàÀu¼ÀÀìÀu¼/ÀÀàUÀu̬,ªÈª@À­8YÀ“ÀÀ“ÀÀ¶¬ €À¶À¶ €©À¼$Àt4À¶Às8]UYÀ¶ Y€À¶À¶ ]UYÀ¶ Y€À¶À¶ YÀ¶ À¶¼YÀ¶ À¶¬YÀ¶ À¶¬Y€À¶À¶ ]UªÈÀu¼Ei]ÀvpÀs<Às8Àt4]ÀvpYÀvt]]ÀvpYÀvt]YÀvt]YÀvt]UªÈÀ­8Àu¼E6]À“ÀÀ“À]À“À]À“À]À“À]À“À€Ý]À“À€ÝE4]À“ÀÀ“À]À“À]À“À]À“À]À“ÀUYÀ“ÀÀ“ÀAÀwpÀvtAÀwpYÀwpYU€ÝÀvp ÀPÀwpÀvx ÀwpÀvt U€ÝÀvpW/À“ÄYÀ“ÀÀ–X]À“ÀÀ­8UYÀ“ÀÀ“ÀYÀ“ÀÀ“À€ÝUÀu̬,Àu̬,À]XÀu¼]]U€Ý€Ý]À“ÀÀ“À€ÝÀAhÀAœYÀZüYUÀZü]À[´ªìUuÀwpYÀPÀwpY­4¬,YÀPÀwpÀwpAÀwpÀvtYÀvxÀw¤ÀxXÀ­8À¶pYÀwpYÀuÌÀwŒÀw|ÀuÀAÀwpYÀwp YU€ÝÀvpªÈª@€ÝÀ™8 À™8U€ÝÀvp$YU€ÝÀvpªÈª@€ÝYÀ™8 U€ÝÀvpÀvpYÀvpªÈª@€ÝYÀ™8 UÀwp Àwp-UÀwpÀ•TÀ­8ÀwpÀu¤UÀwpYÀu¤ÀwpN UÀwpÀu̪ȫ`Àt<ª@ÀuÌÀ­8YÀtüÀu¤ÀLøYÀu¤ÀwpÀuÌ Àu¤UÀwpÀuÌ4UÀwpÀu̪ÈÀkdª@À­8YÀu¤ÀwpÀuÌ#UÀwpÀ­8ÀwpUÀwpUY«x¬,Y«xe€„Àtü€ÅÀtü ¬,À™@«xUY«x¬, «xÀtü/ «xuAUÀwpÀuÌUÀwpÀu̪@¬,<UY«x¬,¬,Y«xÀt<Àkde€„Àtü€ÅÀtüO uAUÀwpÀuÌUÀwpÀu̪@¬,ªÈª@­€«`¬,YÀ™@À­8À­8$%Àw”À­8ÀwpÀw\Àw€ÀwpÀwxYÀy YÀy ÀwpuYÀy ª@¬,ouAUÀwpÀuÌUÀwpÀu̪@¬,¬,AUÀwpÀuÌUÀwpÀu̪@ÀwpÀs<UÀwpÀuÌÀwp7uYÀy ª@¬,ªÈª@­€«`¬,YÀ™@À­8À­8 ­\«P ­\«PÀs<]­\«PÀ™HÀ­8€ž]À™DYÀ˜xÀ–XYÀ˜xÀ˜xYÀ˜xUÀuÌÀuÌÀuÌÀuÌUYu¬,€¥«h€Á]À™DÀ•ØÀ­8UÀu̬,]À™HÀ™HÀ™LÀ™L#ªÈª@ÀuÌÀ­8¬,¬<]À™H Àtü€„Àtü€ÅÀtüYÀtüYÀtüÀuÌÀj Às<À`YÀZüªÈÀ­8YÀZüUYÀZüYÀZü]UÀuÌÀOÜUYÀZüYÀZü ÀZüÀuÌ]UÀuÌÀOÜUÀuÌÀOÜUYÀuÌYÀtü€³UYÀZüYÀZüYÀZüYÀZüYÀZüYÀtüYÀZüÀZüÀZü€YÀtüYYÀuÌÀuÌYÀtüÀuÌYYÀuÌYÀtüÀuÌÀs<]UÀuÌÀOÜ} UYÀuÌYÀtüªÈª@ÀuÌÀ­8Àš$YÀtüÀ“ÀYUÀtüÀuÌ]UÀuÌÀOÜÀšÀ]XUÀuÌ]ÀOÜE À™LÀš À[´ÀuÌI À™L]UÀuÌÀOÜÀ™LYÀ[´YÀ[´YÀ[´YÀ[´À[´€‹UYÀuÌYÀtüªÈª@ÀuÌÀ­8Àš$YÀtüÀ“ÀYUÀtüÀuÌ]UÀuÌÀOÜÀšÀ™HYÀvpÀ]XUÀuÌ]ÀOÜEUÀuÌ]ÀOÜÀOÜUÀuÌ]ÀOÜ ]ÀOÜ5À]XUÀuÌ]ÀOÜ]UÀuÌÀOÜÀuÌÀOÜzUYÀuÌYÀtüªÈª@ÀuÌÀ­8Àš$YÀtüÀ“ÀÀuÌYUÀtüÀuÌ]UÀuÌÀOÜÀšÀ™HYÀvp À™LÀ™L«`«`Àu¼À™HÀ­8U]Àu¤]Àu¤H YYÀš ]Àu¤]Àu¤]ÀuÌ]ÀuÌÀuÌ]Àu¤Àu¤U U]Àu¤]Àu¤ªÈÀ“À]À“ÀÀšÀuÌÀ­8Àu¼]Àu¤ÀuÌÀu̪@EU]Àu¤]Àu¤«8 ªÈ€áYÀtü]Àu¤H€Éª@À“À]«8]]]Àu¤€áYÀtü]Àu¤€Ò]]­|]À™HÀu¼]UÀuÌÀOÜÀ™HYÀtü]Àu¤ª Àt4À™LÀ™L«`€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌÀuÌÀuÌYÀtüª@ª@U]Àu¤]Àu¤]Àu¤]Àu¤«8€¤€Éª@À“À]«8]]]Àu¤€áYÀtü]Àu¤ªÈª@«`­\«P]­|]À“À]]À™H]À“ÀYÀvpÀšÀuÌÀ­8UYÀuÌYÀtü UÀuÌÀOÜ&€áYÀtü]Àu¤«X¬<YÀtüN€Éª@À“À]«8]]]€áYÀtü]Àu¤«X¬<YÀtüP €Éª@À“À]«8]]]€áYÀtü]Àu¤«X¬<YÀtü9(]YÀtü]­|]À™HÀu¼]UÀuÌÀOÜÀ™HYÀtü]Àu¤ª ¬<«`€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌÀuÌÀuÌYUÀtüÀuÌÀuÌYÀtüª@ª@]Àu¤ÀuÌUYÀuÌYÀtüYÀuÌYÀtü«X]Àu¤]ÀuÌ]ÀuÌÀuÌ]Àu¤Àu¤«8]À“ÀÀ“ÀÀ­8€´€Éª@À“À]«8]]]€áYÀtü]Àu¤«X¬<YÀtüªÈª@«`Àš$Àš«X­\«P]À“ÀÀ“À]À“ÀYÀvp]]­|]À™HÀu̬<À­8À˜¨Z €Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtü ¬,À”¼YÀtü¬<«X ¬,À”¼Àu¤eÀ˜À˜¤À•ØUÀu̬,¬,ÀuÌÀ˜¨À­8YÀ™8À˜˜À“ÀÀ˜ ]À”¼À˜Ü]À“ÀÀ“À€¿€Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtüªÈª@«`Àš$YÀtü]À“ÀÀš«X­\«P]À”¼YÀvp]­|]À™HÀu̬<À­8¬,À˜_ªÈª@«`Àš$YÀtü]À“ÀÀš«X­\«P]À”¼YÀvp]­|]À™HÀu̬<À­8€¿€Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtüªÈª@¬,«`Àš$YÀtü]À“ÀÀš«X­\«P]À”¼À˜YÀvp]­|]À™HÀu̬<À­8Y€Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtü€Y­ YÀu¤¬,Y­„%UYUY­ YÀu¤U¬,YUY­ YÀu¤UYY­ YYÀu¤ YY­ Y­ ­ X€Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtü ­„U¬,! U¬,­„UY­ YÀu¤$UYUY­ YÀu¤U¬, Y­ YÀu¤UYY­ YYÀu¤ 1Y­  ­ €Y­ YÀu¤¬,Y­ UY­ YÀu¤ UUY­ YÀu¤U¬,‚=J­\«`­€¬D]À”¼À™<Àš$À•TÀ­8À˜À“ŒYÀ™8¬<À•lÀ–XÀš]À“À]À™H]­|Àt<€ÝYÀvpÀuÌÀs´U«X¬,¬,«XYÀtüª@€Éª@¬,À“À]«8]À”¼]À”¼]Àu¤€áYÀtü]Àu¤«X¬<YÀtü]À”¼]À”¼¬,]Àu¤]«8«Xª@YÀtüYÀtü¬<À“À]Àu¤Àj¤«,]Àwd«pU]Àv|]Àv|€Y­ YÀu¤¬,Y­„UYUY­ YÀu¤U¬,¬,YUY­ YÀu¤UYY­ YYÀu¤YYÀu¤YY­ YÀu¤Y­ Àu¤À“ÀÀ­8¬D­œ]­|­ 3UUY­ YÀu¤U¬,«PªÈª@¬,­„ U¬,uY­ YÀu¤U¬,zUYUY­ YÀu¤U¬,U¬,YUY­ YÀu¤UYY­ YYÀu¤YYÀu¤YY­ 1uY­ YÀu¤U¬,«PªÈª@¬,Y­„«xuÀuÌÀuÌÀ­8­¤ €¥ ­ Y­¤uÀuÌÀuÌÀ­8 €¥ ­  €¥Y­¤€Å#­œÀu¤ÀuÌ]Àu¤ª «XYÀtü«`]Àu¤YÀtü­œ«Xª@ÀChª@ª@U«x¬,¬,«xE]ÀuÌÀuÌuÀuÌÀuÌÀ­8]Àu¤]Àu¤Àu¤ÀuÌÀu¼À­8ÀuÌ­¤€¥ ­ Y­¤a €áª@Y­¨Y­¤¬,€¥ ­ ªÈª@À­8YÀtü]Àu̪@Y­¨Y­¤¬,€¥ ­ ­  eÀy\UY­¤Y­¤ ­¤ÀuÌ Ày\ ­¤UY­¤Y­¤4YÀuÌeÀy\UY­¤Y­¤Y­¤Y­¤BUY­¤Y­¤ªÈ€„Àtü€ÅÀtüeÀy\Y­¤Y­¤uY­¨Y­¤¬,UY­¨¬,Y­¨ ­¤€„Àtü€ÅÀtüY­¨UY­¨¬, ­¤Àtü ­¤YÀtü YÀtü­¤­¨ 1YÀtüuY­¨Y­¤¬, ­¨Àu¤ ­¨"€áª@Y­¨Y­¤¬,€¥ ­ €»Àkd€„Àtü€ÅÀtüuY­¨Y­¤¬,eÀy\ªÈ€„Àtü€ÅÀtüeÀy\UY­¤Y­¤Y­¤Y­¤€„Àtü€ÅÀtüUY­¨¬,YÀtüYYÀtü¬,Y­¨I€áª@Y­¨Y­¤¬,€¥ ­ ªÈÀ­8ª@Y­¨Y­¤¬,€¥ ­ ¬4€—€„Àtü€ÅÀtü€„Àtü€ÅÀtü­œÀu¤«xÀ­8Às´Àwp«XYÀtüYÀtüYÀtü]À™H]À™HÀ™HÀ™LÀ™LÀuÌYÀtü¬4*YÀtüªÈÀkd€„Àtü€ÅÀtü­¤­œ«XYÀtüªÈ­¤«lb­œÀu¤]À”¼«,]«8«XYÀtü«`«xÀs´Àwp«\UYÀtüÀuÌÀuÌ«h«l«pÀs<­¨ªÈÀkdYÀtü­¤ ]Àw\]Àu¤Àu¤À­8ÀuÌ]Àw\ªÈ]Àu¤À­8Àwp]Àu¤Àu¤Àwp-ÀwpÀs<YÀuÌ]Àu¤ÀuÈÀwpÀwpª("ÀwpÀs<YÀu̪ ÀwpÀwp ]Àw\€Å­œÀu¤]Àu¤ª ]Àu¤Àwp«xÀ•TÀwp]Àw\]Àw\Àw\À­8€YÀtüYYÀu¤ÀwpÀuÌYYÀu¤YÀtüÀuÌÀwpÀwpUÀwpÀu̪(ÀuÈÀu¤YÀuÌÀwpÀs< ­¬ªÈ­¨«¤YUÀu¼Àu¼€´ Àw\Àu¤À•TÀwp]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌYÀtüYÀtü«¤Àwp«p¬ÔªÈÀkdYÀtü­¬uY­ YÀu¤U¬,#€áª@Y­¨Y­¤¬,€¥ ­ AÀtüAÀtüY­¬Y¬Ô ­˜­„ ­ U ­   ­ ' ­ €áª@Y­¨Y­¤¬,€¥ ­  ­¨ ­¨YÀtü YÀtüYÀtü ­¨­¬ ­¬¬Ô€ÃY­„uY­ YÀu¤U¬,Y­ ¬,YÀu¤ª@€¥ ­ €áª@Y­¨Y­¤¬,€¥ ­ Y­¨Y­¤YÀtü]Àu̬,Y­¨AÀtüAÀtüY­¬Y¬ÔÀkdY­ ­ ­œ2uYÀw\ª@¬,«PªÈª@¬,Y­˜À­8À­8 À•t ¬,­”Àu¤`]À”¼YÀ•tYÀ™8À­8]À–XÀ“˜€ÝYÀvp­dUY­”¬,Y­”¬,Àkd/UYÀu¤¬,ªÈª@­€«`]À™H¬,Àš Às<À“Àµ AÀ“ÀYYAÀ“ÀYuÀuÌÀ­8YuÀuÌÀ­8ÀtTÀt4Às<ªÈÀkdÀu¼À­8ÀuÌÀ™hÀ™dÀ™l UYÀu¤¬,UYÀu¤¬,'À™hÀ­8À™dÀ™lÀ™\ÀšÀ™H&UYÀu¤¬,ªÈª@­€«`¬,À™TUYYÀu¤¬, ¬,À™TYÀu¤UYYÀu¤¬,&UYYÀu¤¬,¬,YYÀu¤*UYÀu¤¬,ªÈª@­€«`¬,YÀ™TÀÀìYuÀu¼ÀtìÀÀàYuÀu¼ÀtìUÀ]XÀÀàYuÀu¼ÀtìÀÀìYuÀu¼ÀtìÀÀèYuÀu¼Àtì(ÀÀàYuÀu¼Àtìª@YÀ“À@ÀtYUÀtYUÀtYUÀtYUÀtYÀ“ÀÀu¼ YuÀu¼Àtì uÀu¼ÀtìYuÀu¼Àtì*ª@ÀChÀs<À`À­8À­8ª@YÀ“À ÀšLuÀuÌYÀšLÀ­8Àu¼YÀšLYÀtü«`«P&YuÀuÌYÀšLÀ­8ªÈª@­µ@ Àt<­3AuÀuÌYÀšLAÀOÜY­ˆÀt<­ ÀšL­ˆ.Àu¼ª ­\YÀšLYÀtü«`]Àu¤­€Y­ˆÀt<­UYÀw\ª@Y­Œ ­ ­­ŒUYÀw\ª@.UYÀw\ª@Y­ŒuYÀw\ª@¬,.UYÀw\ª@ªÈª@Àt<À­8À­8Y­À“ÀYÀ“À Àtìª@À­8À›, ª@ª@\À›,À“˜]À”¼À­8YÀ“ÀYÀ›YÀ™8YÀ“ÀE5YÀ“ÀYÀ›ª@ª@ÀÀøª@ªÈª@À›E!ÀÀøª@ªÈÀt<À­8ª@À›*ÀÀøª@ªÈÀt<À­8ª@À“˜YÀ›ÀtÀs<YÀvp UÀt4ª@B ÀÀøUÀt4ª@ªÈª@À“ÀYÀ›À“˜YÀ™8ÀtôÀ­8 UÀtìª@=ÀÀøUÀtìª@ªÈÀt<ª@À“ÀÀtYÀ›À­8À“˜YU€ÝÀvpAYÀy YÀy +UAYÀy YÀy YU€ÝÀvp6 uUAYÀy YÀy YU€ÝÀvpª@ª@;ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@*UAYÀy YÀy YU€ÝÀvp4uUAYÀy YÀy YU€ÝÀvpª@ª@lYÀ™@À™@À–¤À–hYU€ÝÀvpAYÀy YÀy UAYÀy YÀy YU€ÝÀvpPÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@ª@À­8YÀ™@ERÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@ªÈÀt<À­8ª@Àš¬: uYUAYÀy YÀy YU€ÝÀvpª@ª@€‹ÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@ªÈÀt<À­8YUAYÀy YÀy YU€ÝÀvpª@ª@YÀš¬" €Ày YU€ÝÀvpª@ª@GÀÀø€Ày YU€ÝÀvpª@ª@ªÈÀt<À­8ª@À“˜YÀš¬* uuYU€ÝÀvpÀt4ÀyPª@ª@^ ÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@ªÈª@À“ÀYÀš¬À“˜YÀvpÀtôÀ­8ª@À­8Àv8ª@E"ª@Às<À`À­8ª@Àv8Y uÀv8Yª@'ª@Às<À`À­8YuÀv8Y¶L ¶L¶L¶L 1Àt4AÀt4E€ÔÀt4AÀt4EÀtìªÈÀs<ÀkdYÀtüEYÀtü#ªÈÀs<ÀkdÀ­8Ày YÀvpJ €ÔÀu¤YÀu¤EÀu¤YÀtü]Àwd]ÀwdYÀtüÀtü5 ÀkdÀtì ÀkdEÀkd]ÀtìÀ­8Às<ªÈÀkdÀy YÀvpÀk°ÀjÀS` ]Àtì Ài|Àu¼Ài|YUÀu¼@ ]ÀtìÀtìÀkdEUÀk°Àk´Àk°ÀjÀjÀS`Àu¼.ÀyªÈÀ­8Àkd]ÀtìÀtìÀt4Ày E1ÀyÀs<ªÈÀ­8Àkd]ÀtìÀtìÀt4Ày EÀ^ªÈÀtìÀkdÀ­8E3 ÀyÀs<]ÀtìªÈÀtìÀkdÀ­8Àt4Ày E=AEE‚)AEE ‚)AEE*=AEE‚)AEEEAEEE ªÈÀ­8E. Às<AEªÈÀ­8YÀvpÀyª@ª@E u¶LÀyTª@YÀ›ÈÀ›ÌYÀ›PN ÀÀøu¶LÀyTª@Às<Àœ¸À`Àv8AEYÀChª@]ÀtìÀ›Ð uª@ª@ÀtìYÀ›TÀ›ÌE ÀÀøuª@ª@ÀtìÀs<Àœ¸À`Àv8AEYÀChª@À›Ô ©x ÀkdÀuÌÀ­8 ÀkdÀuÌÀ­8À­8(À“À ÀkdÀ“ÀÀuÌÀuÌÀ­8 À“À ÀkdÀuÀÀ­8 ÀkdÀuÀÀuÀÀ­8 © ÀkdYÀuÀÀ­8 ÀkdÀu¼À­8 ÀkdÀ­8(ÀuÈ ÀkdÀuÈÀuÈÀ­8 ÀuÈ ÀkdÀuÈÀ­8 YÀ­8 ©¬YY ÀkdÀuÌÀ­8 ©¸ À“À(Àtü ÀkdÀu¤ÀtüÀ­8 Àtü ÀkdÀuÌÀuÌÀ­8 ©ä ©è À­8 ©ð ©ô ©ø ©ü ª ª ª ª  ª(ÀZü Às<ÀkdÀZüÀZüÀ­8 ÀZü ªª ª ÀuÈÀtȪ ª eAª E Aª Aª (ÀtÈ ÀuÈÀtÈ ÀtÈTOMicrosoft.FSharp.Compiler.TypeChecker+SafeInitData+SafeInitField@DebugTypeProxyVQMicrosoft.FSharp.Compiler.TypeChecker+SafeInitData+_NoSafeInitInfo@DebugTypeProxy ª(ª, ª, (]Àu¤(ª ]Àu¤ ª  ]Àu¤ª (€„Àt4€ÅÀt4 AEÀy\ AEÀy\ Ày\ €„Àt4€ÅÀt4 (Yª< (YÀ“À(Àt (YÀt (€ÕÀtì (]Àu¼ (]ª8Yª< Yª< YÀ“À Àt YÀt €ÕÀtì ]Àu¼ ]ª8J ÀBPYª<YÀ“ÀÀtÀtÀ]XYÀt€ÕÀtì]Àu¼]ª8 A ª8ª8 ÀuÌ Ày\E Ày\ÀuÌÀy\ AÀuÌAÀy\Ày\AÀuÌAÀy\Ày\ AÀy\Ày\Àu¤ Ày\Àt4Ày\ Àtì ÀBPÀu¤ÀBP ÀBPÀBP €¥Àu¤ Yª<Yª< AYª<Yª<Àu¤ Àt4 Às<À`À­8YÀu¼ Àu¼Àt4 Às<À`À­8ª@YÀu¼ Àv8 Às<À`À­8YÀu¼ À“ÀYÀu¼ Às<À`À­8ª@Àt4 À]XÀu¼ AYª<Yª<ÀtüÀBà ÀBàYÀtü(Àj¸u€ÕÀwpÀ­8(=AEE(À›ð(ÀCh(ÀHT(À^(ÀAHÀj¸u€ÕÀwpÀ­8À›ðÀHT Àj¸u€ÕÀwpÀ­8 =AEE À›ð ÀCh ÀHT À^ ÀAH Àj¸u€ÕÀwpÀ­8 =AEEa Às<Àj¸u€ÕÀwpÀ­8=AEEÀ`À›ðÀChÀv8ÀHTÀœ¸À^ÀAHY AÀ­8AYÀtüYÀuÌ Àj¸0À^AÀ­8AYÀtüYÀuÌÀAHÀHT\ ªÈÀs<Àœ¸À`Àv8YÀChAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌ ª@ª@À“À ÀtÀtì# UÀtÀtìÀ“ÀUÀtÀtì ÀtÀy # UÀtÀy À“ÀUÀtÀy Àu¼Àtì Àu¼uÀu¼Àtì ]À[´ ]UÀZü]À[´À[´ªìªì"ªìAUÀZü]À[´EÀE8ªìYUÀZü]À[´AUÀZü]À[´EÀEªìeAªìE AªìAªìÀE,ÀE AÀAhEÀE0 ªì1ÀE,ÀEAÀAhEÀE0ÀA˜YÀZüÀE ªìÀE 1ÀE,ÀEAÀAhEÀE0ÀA”YÀ[´ÀE .ªìAYÀ[´YUÀZü]À[´ÀE ÀE,ÀEAÀAhEÀE YÀZüªìÀChª@À­8YÀZü ªøªüªì^YMicrosoft.FSharp.Compiler.TypeChecker+AfterTcOverloadResolution+_DoNothing@DebugTypeProxy(AUÀZü]À[´E(ÀE AUÀZü]À[´EÀE AUÀZü]À[´E ÀE^YMicrosoft.FSharp.Compiler.TypeChecker+AfterTcOverloadResolution+SendToSink@DebugTypeProxy(YUÀZü]À[´6 YUÀZü]À[´AUÀZü]À[´EÀE YUÀZü]À[´toMicrosoft.FSharp.Compiler.TypeChecker+AfterTcOverloadResolution+ReplaceWithOverrideAndSendToSink@DebugTypeProxyªô ªô ªø ªü AÀAhEÀZü]À[´ EUÀZü]À[´ UÀZü]À[´ÀZü«U]À[´]À[´]À[´À[´ EU]À[´ ÀChª@À­8YÀZü ªÈÀ­8ª@ Àv À”|(YYÀwh«,YYÀwhÀwh YYÀwhÀwh YYÀwheA«,E A«,A«, À­8AYÀ™8YÀvp ÀwhÀš (Àu¬ «8Àu¬ Àu¬ Àu¬eA«8E A«8A«8 ÀyÀuÌÀu¼ AÀuÌ YÀš «P«PeA«PE A«PA«P «P«P «P«P«XYÀtüYÀtü YÀtüYÀtüeA«XE A«XA«X(YYYÀvp«\YYYÀvpYÀvp YYYÀvpYÀvp YYYÀvpeA«\E A«\A«\«`«`eA«`E A«`A«` «`«`«`€Ý]À™H«`«P«` «`«`(«X (]«, (]«8(Às´(Àsä(«\ (]À”¼  8 «hÀ“À«XÀuÌ]«,]«8Às´Àsä«\]À”¼6 À“À«XÀuÌ]«,]«8Às´Àsä«\]À”¼ «X ]«, ]«8 Às´ Àsä «\ ]À”¼eA«hE A«hA«h(Àj¤6 «lÀ“ÀÀj¤]«,]«8Às´Àsä«\]À”¼4 À“ÀÀj¤]«,]«8Às´Àsä«\]À”¼ Àj¤eA«lE A«lA«l (]Àwd 7 «pÀ“ÀÀj¤]Àwd]«8Às´Àsä]À”¼5 À“ÀÀj¤]Àwd]«8Às´Àsä]À”¼ ]ÀwdeA«pE A«pA«p(€¥UÀu¤Àj¤«t€¥UÀu¤Àj¤ €¥UÀu¤Àj¤ €¥UÀu¤Àj¤eA«tE A«tA«t(À“Œ(A«tÀLø (€¥«h(À•T (]Àv| R«xÀs´YÀvpÀ“ŒA«tÀLø«X€¥«hÀwp«\ÀuÌÀ­8À•T]Àv|P Às´YÀvpÀ“ŒA«tÀLø«X€¥«hÀwp«\ÀuÌÀ­8À•T]Àv| À“Œ A«tÀLø €¥«h À•T ]Àv|eA«xE A«xA«x ÀtìÀtì«”UÀu¤Àj¤UÀu¤Àj¤€¥UÀu¤Àj¤Àu¤Àj¤UÀu¤Àj¤1 €¥UÀu¤Àj¤«p€¥UÀu¤Àj¤ ªÈª@ÀuÌ«p Àu¤À“À ªÈ Às<Àu¼ ÀuÀYÀtüÀuÌUÀxèYÀuÌUÀxèYÀuÌL €ÕÀwpÀ­8UÀxèYÀuÌÀwpÀwŒÀw|ÀxèYÀuÌYÀuÌ Eu€ÕÀwpÀ­8(YU€ÕÀwpÀ­8YU€ÕÀwpÀ­8«¤YU€ÕÀwpÀ­8 YU€ÕÀwpÀ­8 YU€ÕÀwpÀ­8eA«¤E A«¤A«¤U€ÕÀwpÀ­8€ÕÀwpÀ­8) U€ÕÀwpÀ­8u€ÕÀwpÀ­8 ÀuÌ EÀtü ÀtüÀtü YÀtü]À”¼ÀuÌ «l«h Àj¤ Àwd«, «p«l Àu¤UÀu¤Àj¤: =€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8 ÀBPÀ­84 À­(ÀAhÀAhÀC`ÀkdÀBPÀ]XÀ­8ÀuÀÀu¤B UÀBPÀ­8€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8 ÀBPÀ­8T A€ÉÀ­(ÀAhÀAhÀC`ÀkdÀBPÀ]X€ÍÀ­8UÀBPÀ­8UÀBPÀ­8 ÀtüÀtü Àsø«ôUUYÀ“ÀÀ“À!uUYÀ“ÀÀ“ÀYÀuÈUYÀ“ÀÀ“À; uUYÀ“ÀÀ“ÀYÀuÈUUYÀ“ÀÀ“À ]Àu¼ÀuÈ ÀuÈÀu¼UYÀ“ÀÀ“ÀYÀuÈ, YÀu¼uUYÀ“ÀÀ“ÀYÀuÈ Àu¼Àu¼ AÀu¼AÀu¼ Àu¼Àu¼ YÀu¼YÀu¼YÀu¼ ªÈÀu¼&YuUYÀ“ÀÀ“ÀYÀuÈ €¥ YU¬ P ªÈª@À­8À]XYuUYÀ“ÀÀ“ÀYÀuÈÀu¼€¥YU YÀuÈ U€¥YU8UYÀ“ÀÀ“ÀYÀuÈYÀuÈYÀuÈÀuÈ: U€¥YUuUYÀ“ÀÀ“ÀYÀuȬU€¥YU€¥YUU AuUYÀ“ÀÀ“ÀYÀuÈU€¥YUU€¥YU À­8ÀuÄYÀuÌÀuÄYÀuÌ& AYÀwpÀwpUÀuÄYÀuÌ ÀwpÀu¼YÀwp ÀLøYÀLø& AYÀLøÀLøUÀuÄYÀuÌ ÀLøÀu¼YÀLø (€¥Àtü¬,€¥Àtü €¥Àtü €¥ÀtüeA¬,E A¬,A¬, €¥Àtü€¥ÀtüÀtü¬4¬4eA¬4E A¬4A¬4 ¬4¬4 ¬4¬4 (YÀ˜x (]À™D¬<YÀ˜x]À™DÀ–X YÀ˜x]À™DÀ–X YÀ˜x ]À™DeA¬<E A¬<A¬<(À˜(¬<(À™<(Àš$¬@À˜¬<À™<Àš$ À˜¬<À™<Àš$ À˜ ¬< À™< Àš$eA¬@E A¬@A¬@(À•l (YÀ™8? ¬D]À”¼À•lYÀ™8À“ŒÀš$À™<À˜¬<À­8À•T= ]À”¼À•lYÀ™8À“ŒÀš$À™<À˜¬<À­8À•T À•l YÀ™8eA¬DE A¬DA¬D¬H¬HeA¬HE A¬HA¬H ¬H¬H ¬H¬H& ªÈª@Àu¤YÀuÌÀuÌÀuÌÀ­85UYÀtüÀuÌYÀtüÀuÌYÀtüÀuÌQ ÀsðÀtü ªÈª@À­8 EÀuÌÀuÌ ªÈª@À­8Àu¤ÀuÌÀuÌE(ªÈ¬lªÈÀwp ªÈÀwp ªÈeA¬lE A¬lA¬l ÀwpªÈ; ÀwpªÈÀwŒYÀuÌÀuÌYÀwpÀs<ÀuÌÀ­8Àwp ¬lÀwpÀ­8 YÀuÌÀuÌ AÀuÌ YÀuÌ ÀuÌYÀuÌ ªÈÀkdÀ­8 EÀuÌ YÀuÌ UYÀu̬,¬,YÀsð ªÈª@€áÀwpÀuÌYÀu̬, À–X ]uÀ“ÀÀ–XÀ–X Àu¤Àu¤ ªÈÀ­8ÀuÌ ªÈÀ­8*YYÀuÌYYÀuÌYÀuÌÀuÌ ]À“ÀÀ–X ]À“À À˜]À“À À™4¬Ì¬Ì¬ÌeA¬ÌE A¬ÌA¬Ì ¬Ì¬Ì ¬Ì¬Ì(«¤(Àw\ «¤ Àw\ «¤Àw\ «¤¬Ô Àw\¬Ô ÀuÀÀw\S Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ E¬ÌÀwp E¬ÌÀw\V Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀYÀuÀÀuÀ¬Ì EÀy AÀyE EYÀy AYÀyE EUÀuÌYÀy E¬ÌÀw EÀw$ EÀwXE Às<ÀkdYÀuÀ€Õ€Õ€Õ€Õ€ÕYUÀuÀÀuÀ YÀuÀYÀuÀÀw\  ÀuÀÀuÀÀu¤ EYÀuÀ Às<ÀuÌÀwp€ÕÀwpÀ­8 EU€ÕÀwpÀ­8 Às<(YU€ÕÀwpÀ­8Àu¤À•TÀwp UYÀw\YÀw\«¤Àw\­4YÀ•ØÀ­8À­8­4À•hÀ–XÀ­8­4YÀ“ÀÀ­8eA­4E A­4A­4 (YÀ•Ø YÀ•ØÀ­8À­8 YÀ•ØTOMicrosoft.FSharp.Compiler.TypeChecker+DelayedItem+DelayedTypeApp@DebugTypeProxy(À•h À•hÀ–XÀ­8 À•hPKMicrosoft.FSharp.Compiler.TypeChecker+DelayedItem+DelayedApp@DebugTypeProxy YÀ“ÀÀ­8VQMicrosoft.FSharp.Compiler.TypeChecker+DelayedItem+DelayedDotLookup@DebugTypeProxy À–XÀ­8PKMicrosoft.FSharp.Compiler.TypeChecker+DelayedItem+DelayedSet@DebugTypeProxy ­< ­@ ­D ­H­\­\eA­\E A­\A­\ ­\­\ ­\­\­d­deA­dE A­dA­d ­d­d ­d­d­l­leA­lE A­lA­l ­l­l ­l­l­t­t­teA­tE A­tA­t ­t­t ­t­t(]UÀuÌÀOÜ1­|Àu¼]UÀuÌÀOÜ]Àu¤ª YÀtü/ Àu¼]UÀuÌÀOÜ]Àu¤ª YÀtü ]UÀuÌÀOÜeA­|E A­|A­|(Àt< (]­|­€Àt<]­| Àt<]­| Àt< ]­|eA­€E A­€A­€(­€(­\(«`(¬D­„­€­\«`¬D ­€­\«`¬D ­€ ­\ «` ¬DeA­„E A­„A­„­ˆ­€­\«`ÀšLÀ­8 ­€­\«`ÀšLÀ­8eA­ˆE A­ˆA­ˆ (Y­ˆY­ˆ­ŒÀu¼YÀtü«`Y­ˆ Àu¼YÀtü«`Y­ˆ Y­ˆeA­ŒE A­ŒA­Œ (YÀšL3­«`Àu¼]Àu¤ª YÀtüYÀšLÀ­8­\1 «`Àu¼]Àu¤ª YÀtüYÀšLÀ­8­\ YÀšLeA­E A­A­(«,3­”Àt<]«8À“ÀYÀtüYÀtüÀuÌ«,«`1 Àt<]«8À“ÀYÀtüYÀtüÀuÌ«,«` «,eA­”E A­”A­”­˜­€­\«`À™@ ­€­\«`À™@eA­˜E A­˜A­˜O­œ­€YÀtüÀs´Àu¤«X«,]«8]Àu¤]Àu¤ª ]À”¼ÀuÌ«`M ­€YÀtüÀs´Àu¤«X«,]«8]Àu¤]Àu¤ª ]À”¼ÀuÌ«`eA­œE A­œA­œ«X(­œ ­œ ¬D­œ(«x «x YÀtü«x­œ(«p «p «p«x­œ «pÀw\ À™HÀu¬ EÀkdÀHTÀ­8ÀH„ÀuÌ ªÈ­dª@ UÀtü¬,¬,À“Ð À­8Às<Àkd YÀwh 1Àwh YÀwh ÀšYYÀwh 1YÀwh YYÀwh YÀvp€ÝYÀ™8UÀuÌÀš ÀuÌÀš  ÀuÌUÀuÌÀš YÀš UYÀuÌYÀš ÀuÌÀš  UÀuÌÀš ÀuÌYÀuÌYÀš ! YÀuÌUYÀuÌYÀš  AUÀuÌÀwhÀuÌ YÀuÌYUÀuÌÀwh­”p ªÈª@YÀvpÀ­8À“ÀYÀtüÀt<]Àu¼YÀtü«`ÀuÌÀuÌÀ™HÀšÀuÌÀšÀ™HÀuÌÀuÌ­” 1­” ­” Y­” Y­”b ªÈª@YÀvpÀšÀ­8À“ÀYÀtüÀt<]Àu¼YÀtü«`ÀuÌÀuÌÀ™H­”Y­”­”1­”Y­” Y­” ÀtüÀ•tÀ•Ø UÀ•Ø ªÈ­d­lÀC`ª@ UÀu̬,¬,À•ØUÀ•ØÀsð À•ØÀsð UÀu̬,¬,UÀ•ØÀsð ªÈ­d­lÀC`ª@]Àsð ªÈ­d­lÀC`ª@¬, U¬,À•x¬, AÀ•xU¬,U¬,À–À•àYÀ“ÀÀ•ØÀ“À U]À“ÀÀ•ØÀ•Ø U]À“ÀÀ•Ø]À“ÀÀ•Ø" UÀ“ÀÀ•ØU]À“ÀÀ•Ø À­8À•ØÀ“À €¨À‘¤U€¨À‘¤ €¨À‘¤ U€¨À‘¤ U€¨À‘¤€¨À‘¤ €¨À‘¤ À“ÀÀ•Ø UÀ“ÀÀ•Ø À‘¤. ªÈª@¬,Àu¼À­8À•ØYUÀ“ÀÀ•Ø UÀ“ÀÀ•ØK ÀuÌÀ•ØYUÀ“ÀÀ•ØYUÀ“ÀÀ•ØÀ“ÀYUÀ“ÀÀ•Ø €¨À‘¤ YÀu À­8€Õ EÀ˜( ªÈ­lª@UÀuÌÀ˜( ÀuÌÀ˜(A Uu¬,€¥«h€Áu¬,€¥«h€ÁUÀuÌÀ˜(]UÀu¤Àj¤€¥UÀu¤Àj¤ UÀu¤Àj¤]UÀu¤Àj¤8€¥UÀu¤Àj¤UÀu¤Àj¤]UÀu¤Àj¤ ÀMp«t ÀLø«t À­8Àv| À­8YÀ˜ 1À˜ YÀ˜ ÀuÌÀuÌÀ­8 ÀuÌÀuÌÀ­8A«tÀMp ]ÀMp À­8A«tÀMpA«tÀLø ªÈª@À­8€¥«h]«h]«hÀuÌÀ“À]«h]«h E«h À­8A«tÀLøA«tÀLø ÀuÌÀ˜«t «t ÀLøA«tÀLø À­8YA«tÀLø A«tÀLøÀLø À–XÀ˜ À–XÀ–XÀ˜ ­4À–XR ªÈª@À­8YÀ“ÀÀAhÀŸPYÀuÌÀwpA«tÀLø]UÀuÀYÀuÌ/€áÀwpYÀuÌ]UÀuÀYÀuÌÀŸP9 ªÈª@YÀ“ÀÀAhAYÀLøÀLøYA«tÀLø! À­8YÀuÌYA«tÀLø ÀLøÀLøÀLø! ªÈÀ­8ÀuÌYA«tÀLø YÀLø ÀLøÀLøYÀLøÀs<UÀuÌÀtÈ UÀuÌÀtÈÀtÈ4 ÀD|ªÈª@À­8€¥À˜Às´«X«\]À”¼ À˜ ÀuÌÀtÈL UA«tÀLøu¬,€¥«h€Áu¬,€¥«h€ÁUÀuÌÀtÈ& À­8Àu¼YÀuÌYA«tÀLø À­8B ÀD|ªÈª@]«,¬,€¥«h€ÁÀ˜Às´«X«\]À”¼* UA«tÀLøu¬,€¥«h€ÁE$ ÀD|ªÈª@Às´«X«\]À”¼UÀuÌÀ˜ ÀuÌÀ˜L UA«tÀLøu¬,€¥«h€Áu¬,€¥«h€ÁUÀuÌÀ˜ ªÈª@¬,À–XEuÀwpÀu̬,uÀuÌÀ–X ÀuÌÀ–X UÀwp¬,¬,uÀuÌÀ–X ªÈª@ÀuÌ UÀwp¬,¬,À–XÀ–hÀ–h À–XÀ–h À–X ÀuÌÀs<ÀuÌ ÀwpÀs<À­8ÀuÌÀwp Às<À­8ÀuÌ UÀwp¬,Àu̪@¬,À–X UÀwpÀuÌUÀwpÀuÌÀ˜]À–XÀ­8 À™4À™4 uÀwpÀu̬,E ªÈª@À–X¬, ªÈÀu̪@¬,À–X UÀwp¬,EAUÀwp¬,¯° Àwp¬, UÀwp¬, UÀwp¬,UÀwp¬, UÀxø¬,¬,À˜` À­8ÀwpÀuÄYÀuÌ Àwp À­8Àwp AÀwpUÀuÄYÀuÌ ÀwpÀu¼ ªÈÀ­8ÀwpÀuÄYÀuÌ ÀwpÀwp ªÈÀ­8Àwp' AAÀwpÀwpUÀuÄYÀuÌ ÀwpÀu¼Àwp UÀu¤Àu¤ Àu¤ EUÀu¤ Àu¤ ªÈª@Àu̬,À–X ªÈª@À­8À]X ]ÀuÌ] À­8À–X Y­4À–XY­41UÀ–X UÀ–XYUÀ–X€À–XÀuÌt ªÈª@ÀuÌ1UÀ–XÀ­8Àt4YÀuÌYÀtÈUÀ–XÀ–XÀtÈÀuÌYUÀ–X€À–XÀṵ YUÀ–X UÀ–XAY€À–XÀuÌ YUÀ–X° ÀtÈ‚%Às< 1€À–XÀuÌ €À–XÀuÌ Y€À–XÀuÌ UÀwpUUÀwp¬,À–XÀuÌUÀwp¬,' UUÀwp¬,¬,€À–XÀuÌÀwp UÀwp ªÈÀ­8Àu¼YÀuÌÀwp UÀwpÀtÈ YUÀwp ÀtÈ À­8Àu¼YUÀwp EÀtÈ €„€Å€„€Å UÀwp ÀtÈ ÀuÈUÀwp EÀuÈ ÀwpUÀwp YÀš À˜x°PUUÀZü UUÀZüÀ­8ÀuÌYÀ™@' UÀuÌÀ­8uÀ­8ÀuÌYÀ™@ ªÈª@¬H ¬DÀ™@ ªÈª@À­8ÀuÌYÀ™@€À­8ÀuÌY¬DÀOÜ" €À­8ÀuÌY¬DÀOÜÀOÜ= AÀOÜ€À­8ÀuÌY¬DÀOÜuÀ­8ÀuÌYÀ™@ Y¬DU¬DYÀvpZ ªÈª@Y¬D¬DÀ™<YÀ™8]À™H€ÝYÀvp¬DY¬DY¬DU¬DYÀvp1¬DY¬DU¬DYÀvp Y¬D€Ý 1U¬DYÀvp U¬DYÀvp YU¬DYÀvp ÀZüÀOØ UYUUYÀZü UUYÀZüÀZü ªÈª@ UÀš¬D UÀšÀš UYUÀš UY UY"UYYUYY UUYÀZüYUUYÀZü YUUYÀZü UUYÀZü# YUUYÀZüUY% ªÈª@ÀuÌYUUYÀZü)€¬DYÀvpYUUYÀZü YUY&¬DYÀvpYUUYÀZüB ]uYÀtüÀuÌ€¬DYÀvpYUUYÀZüU]uYÀtüÀu̬D]uYÀtüÀu̬DL U€áÀ“ÀÀ™HÀuÌYÀvpÀwp¬,¬,U]uYÀtüÀu̬D+ ªÈª@ÀuÌÀ“ÀÀ™HÀuÌYÀvpÀwp+Àš«,UYÀtüÀuÌYÀtüÀwdC UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpUÀšÀ“ÀÀ™HÀuÌYÀvpÀwpi AUÀšUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp€áÀ“ÀÀ™HÀuÌYÀvpÀwp YÀOØ€¥YÀOØ YÀOÔUY¬DYYÀvpYYÀvpYUÀšYUYYYUUYÀZüY]uYÀtüÀuÌ.UY€áÀ“ÀÀ™HÀuÌYÀvpÀwp¬,'Y€áÀ“ÀÀ™HÀuÌYÀvpÀwp<YUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp U¬DYÀvp ¬DYÀvpUY¬DYYÀvp ÀOØÀZü ÀZüUUYÀZü ¬DUÀš UÀš UÀšUY# UYYUUYÀZü& ¬DYÀvpYUUYÀZüB €¬DYÀvpYUUYÀZü]uYÀtüÀuÌ ]uYÀtüÀu̬DE ¬,U]uYÀtüÀu̬D€áÀ“ÀÀ™HÀuÌYÀvpÀwp-UY€áÀ“ÀÀ™HÀuÌYÀvpÀwp¬,e €áÀ“ÀÀ™HÀuÌYÀvpÀwpUÀšUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpk€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwprU€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp¬,pÀ­8ÀuÌY¬DÀOÜYÀOØ€¥YÀOØYÀOÔUY¬DYYÀvp€ÝYYÀvpY¬DYÀZüYUUYÀZüYUÀšYYUYYYUUYÀZüY]uYÀtüÀuÌUY€áÀ“ÀÀ™HÀuÌYÀvpÀwp¬,¬,Y€áÀ“ÀÀ™HÀuÌYÀvpÀwpYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp€’ U€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp¬,¬,€À­8ÀuÌY¬DÀOÜ UÀ–X¬DÀ˜ À–XÀ“À UÀ–XÀ™@UuÀ­8ÀuÌYÀ™@¬,+À•ØYÀ™@À­8UÀu̬,¬,ÀuÌ( UuÀ­8ÀuÌYÀ™@¬,¬,À™0 À­8ÀCh ª@Àu¤ª@7UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp> ÀOÔUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp> UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpÀOÔ 1ÀOÔrÀ­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpYÀOÔo E€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp ªÈÀ­8ÀOÔÀZü ]ÀZüÀOØ8UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp=YUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp ªÈÀ•ØÀ­8€¥YÀOØYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpÀu¤ÀOÔYÀtüYYÀu¤À“ÀÀwpYÀvp]ÀZüÀZüYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpÀy;1UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp<YUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp.€á]Àu¤Àu¤YYÀu¤YÀvpÀwpUYÀtüYUÀtüÀuÌ ÀOØ> YUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp 1Ày Ày YÀy ªÈÀ•ØhÀ­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp UÀuÌYÀy€À­8ÀuÌYÀOØ€¥YÀOØYÀOÔYUÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp.uUÀ“Ä]À–X]UÀ­8]À­(3YuUÀ“Ä]À–X]UÀ­8]À­( UUYÀ“ÀÀ“À]À–X€Â YuUÀ“Ä]À–X]UÀ­8]À­(uUÀ“Ä]À–X]UÀ­8]À­(]À–XÀ“ÄYuUÀ“Ä]À–X]UÀ­8]À­(UUYÀ“ÀÀ“À]À–X2YuUÀ“Ä]À–X]UÀ­8]À­(UUYÀ“ÀÀ“À]À–X4 YuUÀ“Ä]À–X]UÀ­8]À­(' 1UUYÀ“ÀÀ“À]À–X! UUYÀ“ÀÀ“À]À–X& YUUYÀ“ÀÀ“À]À–XU]À–X]UÀ–X ]À–X ]UÀ–XU]À–X ÀwpÀu¤Àwp ªÈÀ­8ÀwpÀwpÀuÌ À­8ÀwpÀu¤) ]UYÀ¶ Y€À¶À¶ YÀvt] ]Àvp ]Y]]Àvt]) ]UYÀ¶ Y€À¶À¶ ]Àvt] ]Àvp ]Y] ]]]% ]€ÉU]ÀZüÀZü À]XÀ­8À`1€ÉU]ÀZü#U1€ÉU]ÀZü#UY€ÉU]ÀZü!1€ÉU]ÀZüH UY€ÉU]ÀZüU1€ÉU]ÀZü ]ÀZü €ÉU]ÀZüI )Y€ÉU]ÀZü)Y€ÉU]ÀZüO À­8)Y€ÉU]ÀZü)Y€ÉU]ÀZüN À­8)Y€ÉU]ÀZü)Y€ÉU]ÀZü& ÀBPÀBP€ÉU]ÀZül À­8Y€ÉU]ÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZü! €ÉU]ÀZüÀBPS )Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“À]À“ÀÀ“ÀT ªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüª@À“À)À–¬À–¬]À“ÀÀ“ÀÀ–XÀ–XÀAh ]UÀ–XÀ–XÀ–X ªÈ¬,ª@À–X À–XÀu¤ À˜(Àu¤ À˜Àu¤ AÀ­8Aª@UYÀu¤±xUYÀu¤ AÀ­8ª@ UYÀu¤UYÀu¤8UYÀu¤ª@YÀu¤ª@UYÀu¤YÀu¤ UYÀu¤À­8  ªÈ¬,À˜85UYÀu¤ª@€áÀLø]ÀwpYÀu¤ª@¬,5 UYÀu¤ª@À­8ª@N )Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ“À6 À­8À–XÀ–XÀ˜xÀ˜xÀZüÀ–XÀ–XÀ˜xÀ­8 À–XÀ–X' À­8À–XÀ–XÀ˜xÀ˜xÀ­8ÀZüV ªÈ)Y€ÉU]ÀZü)Y€ÉU]ÀZüÀ˜xÀ“À À–XÀ–X‚ñ‚ñÀ­8 À–X AÀ–XÀ–XÀ”ÌÀ­8À–X+ AÀ–XÀ–XÀ•TÀ­8À­8À–XÀ–X ªÈ¬,YÀ™@ UYÀu¤ª@Y Y¬D¬HY¬DÀ˜]À”¼5UYÀu¤ª@€áÀLø]ÀwpYÀu¤ª@¬,5 AÀ–XÀ–XÀ­8YÀ™@+ AÀ–XÀ–XÀ•TÀ˜À­8À­8À–X€¡ ªÈÀu̬,À]XYÀZü)Y€ÉU]ÀZü)Y€ÉU]ÀZüAÀ“ÀAÀ“ÀAÀ“Àª@ÀÁ,UYÀu¤ª@À­8À”ÄÀ­8À˜À–XÀ”ÄÀ­8À˜]À–XÀ–X0 AÀ–XÀ–XÀ–XÀ˜À–XÀ­8À­8À•T! AÀ–XÀ–XÀ–XÀ–XÀ­8 À–XAÀ–XÀ–X ªÈª@ÀuÌÀ­8 ªÈª@ÀuÌÀ­8ª@ÀuÌÀuÌm À”ÄÀ˜À–X]À–X€áÀLø]ÀwpYÀu¤ª@¬,YÀu¤¬,ÀLøª@]ÀwpUÀwp¬,¬,Àwp UÀMt¬,¬,À™4² Y Y ªÈÀ­8AYÀwpÀwp ÀwpE AYÀwpÀwp UÀu¤ÀwpÀuÌ& ªÈÀ­8AYÀwpÀwpYÀuÌ/UYÀu¤YÀwpYÀu¤YÀwpÀwp À­8À`Àkd ÀZü ªÈª@À­8ÀuÌ EÀZü ÀtüÀ“Ð ªÈª@À­8YÀ•Ø! YUÀZü]À[´YÀ[´ ÀwpUÀwpÀuÌ ÀwpUÀu¤Àwp+ ªÈª@À­8À\@ÀuÌÀZüYÀuÌÀuÌ ]À\@2UÀu¤ÀwpÀu¤ÀwpUÀwpÀuÌÀwpÀuÌ À­8À­8À–X ÀZ| uÀZ| ÀZüUÀZü]À[´­4 YÀ–XÀ–XYÀ–X­4 1­4 ­4 Y­4 ªÈÀ­8À]X UÀZü]À[´' UYÀ–XYuÀ“ÀÀ–XÀ–XuÀ–XÀuÌÀ­8 uÀ–XÀuÌÀ­8À–X YuÀ“ÀÀ–XYuÀ–XÀuÌÀ­8 ÀuÌÀ­8 YuÀ–XÀuÌÀ­8À–XY€áÀ“ÀÀ–XÀuÌÀ­83 Y€áÀ“ÀÀ–XÀuÌÀ­8YuÀ“ÀÀ–X ªÈÀkd€áÀ“ÀÀ–XÀuÌÀ­8À“ÀÀ–XÀuÌ+ €áÀ“ÀÀ–XÀuÌÀ­8uÀ“ÀÀ–X ªÈÀ­8 YÀuÌYuÀZ| AuÀZ| YuÀZ|YuÀZ| ªÈª@À­8Àkd ÀuÌÀuÌYÀuÌÀ–XÀuÌÀ­8! ÀOèÀwpuÀ–XÀuÌÀ­8À“ÀÀ–XÀuÌÀ­8( ÀPÀwp€áÀ“ÀÀ–XÀuÌÀ­8 ÀOèÀwpÀuÌ" YÀPÀwpYÀOèÀwp YÀuÌÀ­8ÀZü1UÀZü]À[´UÀZü]À[´YUÀZü]À[´€º ªÈ]YÀuÌÀ­8À­8À]XYÀuÌYYÀOèÀwpYYÀPÀwp1UÀZü]À[´UÀZü]À[´]À[´ÀZüÀP ÀwpYUÀZü]À[´ÀP ÀwpYUÀZü]À[´ YUÀZü]À[´ 1ÀP Àwp ÀP Àwp YÀP Àwp! ÀOèÀ–XuÀ–XÀuÌÀ­8 UÀu¤ÀwpÀuÌ ÀOèÀwpUÀu¤Àwp2 Y€áÀ“ÀÀ–XÀuÌÀ­8YUÀu¤Àwp Àu¤UÀu¤Àwp AUÀu¤ÀwpÀu¤ UÀu¤ÀwpÀu¤ YÀu¤YUÀu¤Àwp( ÀPÀ–X€áÀ“ÀÀ–XÀuÌÀ­8€ÀZüYÀuÌ]À[´+ €ÀZüYÀuÌ]À[´ÀP ÀwpO ªÈ]YÀuÌÀ­8À]XYÀuÌYYÀOèÀwpYYÀPÀwpKÀZüYÀuÌ]À[´YÀuÌYUYÀOèÀwpYÀPÀwp+ ÀP Àwp€ÀZüYÀuÌ]À[´ YÀtüÀOèÀwp ªÈÀZü ÀPÀwpYÀOð YÀOðÀwpÀPÀwpYÀOè YÀOèÀwpÀPÀwp YÀOìÀPÀwp EÀ[´ ÀZœUU ÀOì ÀOì ÀPÀwp ÀOðÀwpÀOìÀOèÀwp ªÈÀ]XÀuÌ ÀwpÀOèÀwp À­8Àu¤AÀwpÀwpÀwp AÀwpÀwpAÀwpÀwp ªÈÀ­8À­8AÀwpÀwpÀZŒ ÀOèÀwp UAÀwpÀwpÀwpUÀOðÀwpAÀwpÀwpsÀZ|ÀuÌUAÀwpÀwpÀwpÀZŒÀZdªÈÀ­8AÀwpÀwpÀuÌÀs<ÀwpAÀwpÀwpÀOèÀwpÀZ|3 UÀOðÀwpAÀwpÀwpAÀwpÀwpÀOì@ ÀZ|À­8]À“ÀÀwpÀuÌÀuÌÀOìÀwpÀs<ÀuÌÀZ| ÀOðÀwpÀOðÀwpUÀOðÀwpÀwpUUÀOðÀwpÀwpÀw\5ÀuÌÀuÌUÀu¤ÀwpÀu¤ÀwpÀwpÀOèÀwp% UUÀOðÀwpÀwpÀw\ÀOìÀOì UÀOðÀwp ªÈÀ]X ÀwpÀOðÀwp ªÈª@À]X#]À“ÀÀOì]À“ÀÀ“ÀÀAh EÀOðÀwp ªÈª@À]XÀkdÀwpÀOôUÀwpÀAhÀOüÀnÌÀPÀP ÀPÀwpUÀwpÀAhvÀOôÀ­8À“ÀÀuÌÀwpUÀwpÀAhÀOüYÀuÌÀZüÀ[´ÀuÌÀwpÀnÌÀPÀ[`ÀPÀ[ ÀAhÀAhÀOô ÀwpÀwpÀPÀwp ÀwpYÀu¤Àwp$ UÀOèÀwp¬,¬,ÀOèÀ–X$ UÀPÀwp¬,¬,ÀPÀ–X €íÀ˜"À­8À˜À“ÀÀ˜´YÀ“À EÀ™@ ­˜À™@C AUÀwpÀuÌUÀwpÀuÌAUÀwpÀuÌUÀwpÀuÌÀwpÀuÌUÀwpÀuÌ ªÈÀuÌÀu̪@ ªÈª@À­8€Ý AYÀ™8YÀvp YÀvpÀš  AÀš YÀvp Àš YÀvp YYÀvpYÀš  AYÀš YYÀvp YYÀvpÀ˜x ÀuÌÀ­8ÀŸP ]Àu¤ª ! UÀwp¬,ªÈÀu̪@¬,À–XI ªÈÀuÌÀ–X¬,ª@AªÈAÀuÌAª@A¬,AÀ–XUÀwp¬, ªÈª@À­8YÀ“ÀÀ“À ÀÀàUÀu̬,EÀ¶¬ ]€À¶À¶  ÀvtÀwp uÀuÌ uÀuÌsÀ­8À“ÀÀwpÀuÌÀ­8UÀAhYÀ“ÀÀAhuÀuÌÀA”YÀ[´À[´À[`ÀA„À[ ÀuÈÀuÌÀAh ÀvxÀPÀwp ÀwxÀwp YÀwpÀwp ÀvpU€ÝÀvp ªÈª@€Ý<YU€ÝÀvpYU€ÝÀvpYÀvpÀs<Às8À­8 YU€ÝÀvpÀ™8 ªÈª@«` U«x¬,¬,À™@ ÀuÌ«X YÀtü«x ª@ €„Àtü€ÅÀtüE ªÈÀkdYÀtüYÀtü «`ÀwpÀs< À•TÀ­8ÀwpÀu¤´  À•TÀ­8ÀwpÀu¤´AUÀwpUÀwp´´  UÀwp Àwp´ UÀwpUÀwp ªÈÀkdª@À­8ÀwpÀuÌÀwp# UÀwpÀuÌÀu¤UÀwpÀuÌA ªÈ«`Àt<ª@ÀuÌÀ•TÀ­8YÀtüÀwpÀu¤ÀLøYÀu¤= ªÈÀkdª@À­8YÀu¤AUÀwpÀuÌUÀwpÀuÌ´< À­8Àwp´8´8´< Àwp´8- AUÀwpÀuÌUÀwpÀuÌÀ­8ÀwpZ ªÈ­€«`À­8Àt<Àkde€„Àtü€ÅÀtüAUÀwpÀuÌUÀwpÀu̪@¬,UYÀtü€¥«lÀMe€„Àtü€ÅÀtüUYÀtü€¥«l UÀu¤ÀLø„)A«tÀLøÀuÌÀ•TÀwp€¥«hÀ­8]Àv|Às´«XÀ“ŒYÀvpYÀtüYÀtüUYÀtü€¥«lYÀtüYÀtü€„Àtü€ÅÀtüYÀtü€¥«l¬,€¥«pÀs<€¥UÀu¤Àj¤ÀLø€¥Àu¤ÀwpUÀu¤ÀLøÀMÀu¤ÀLøUÀu¤Àwp}YÀu¤AUÀwpÀuÌUÀwpÀuÌAUÀwpÀuÌUÀwpÀuÌAUÀwpÀuÌUÀwpÀuÌÀM/ uAUÀwpÀuÌUÀwpÀu̪@¬,«x4 ªÈ­€«`À­8Àt<Àkde€„Àtü€ÅÀtü(AUÀwpÀuÌUÀwpÀu̪@¬,] A«xuAUÀwpÀuÌUÀwpÀu̪@¬,uAUÀwpÀuÌUÀwpÀu̪@¬,/ €„Àtü€ÅÀtü€„Àtü€ÅÀtüÀtü À­8Àj Às<À` ÀZüÀZü ÀuÌÀZü À™LÀ™L À[´9 ªÈª@ÀuÌÀ­8Àš$À“ÀYUÀtüÀuÌÀ™HÀ™Lp À™LÀZüÀZü€YÀtüYYÀuÌÀuÌYÀtüÀuÌYYÀuÌÀ™LÀs<YYÀuÌYÀuÌ ÀuÌÀ[´­„* ªÈ­\«`­€¬DYÀvp¬DY¬D­„ 1­„ ­„ Y­„ «PªÈª@¬,% UUY­ YÀu¤U¬,­„ «PªÈª@¬,1 A­„UUY­ YÀu¤U¬,U¬, €¥ ­  ­ Àu¤­œ% Ày\Ày\ Yu€ÕÀwpÀ­8 ªÈ€¥ ­  €¥ Y$AAA€¥  Yu€ÕÀwpÀ­8Ày\ Àu¤­œ ÀuÌ­¤ eÀy\YÀuÌ eÀy\# ªÈ€„Àtü€ÅÀtüeÀy\€€€„Àtü€ÅÀtü­œ€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü«X€„Àtü€ÅÀtü€„Àtü€ÅÀtü ­¤[«x€„Àtü€ÅÀtü­œ€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü«X- €„Àtü€ÅÀtü€„Àtü€ÅÀtü­¤ YÀtü­¤ ªÈÀkd€„Àtü€ÅÀtü ­¨YÀtü­¤­œ Àu¤­¨ «`À™@ ­„­˜U ­  U ­ ­ = ªÈÀ­8ª@ª@Y­¨Y­¤¬,€¥ ­ YÀtü]ÀuÌ' €áª@Y­¨Y­¤¬,€¥ ­ ­  ªÈÀ­8ª@YÀtü]Àu̪@Y­¨Y­¤¬,€¥ ­ M A­ €áª@Y­¨Y­¤¬,€¥ ­ €áª@Y­¨Y­¤¬,€¥ ­  ­¨ AÀtüAÀtü YÀtüYÀtüYÀtü YÀtü­¨ ­¬­¨ ªÈYÀtüÀkd ¬Ô­¬ À™H«87 ªÈª@]À”¼À­8]À–XÀ“˜YÀvpÀkd «8À™H UÀu¤¬,€šÀuÌ«,]«8À“ÀYÀtüYÀtü«`Àt<Às´YÀtüYÀtü«XYÀtü«h«l¬,«p]Àv|]À–XÀ–XU]Àv|]Àv|Às<Às8 UÀu¤¬,¬,­” ´ü AÀ“Àµ AÀ“À AÀ“ÀÀ“ÀÀ“À Eµ ªÈª@­€«` UYÀu¤¬,¬,À™T EÀ“ÀÀu¼ÀtìÀs8Àt4 EuÀu¼ÀtìÀu¼ÀtìÀs8Àt4 uÀu¼Àtì À­8YÀ“ÀÀu¼Àtì µ0 ªÈª@Àu¼YÀtü«PuÀuÌYÀšLÀ­8YuÀuÌYÀšLÀ­8bÀšlÀ•Ø]YÀšLUYÀuÌÀuÌÀt4ÀuÌÀ­8Àu̪@Às<«P]YÀšLYÀšL" YuÀuÌYÀšLÀ­8ÀšL ­\«`­€]­ˆÀšXÀ­8Àš| ]­ˆÀšL­ Àt<­ÀuÌYÀšL%Àu¼ª ­\YÀtü«`]Àu¤­€ Y­ˆÀOܵ@uÀuÌYÀšLÀuÌYÀšL& AÀOÜY­ˆuÀuÌYÀšL ­\­\ EÀšL* Àu¼­\YÀšLÀ­8«`ÀtTÀt4«` E­ ]­ˆÀuÌYÀšLÀ­8' UÀuÌÀ­8uÀuÌYÀšLÀ­8 ªÈª@Àt<YuÀuÌYÀšLÀ­8' uÀuÌYÀšLÀ­8UÀuÌÀ­8% uÀuÌYÀšLÀ­8ÀOÜY­ˆ 1Y­ˆ ­ˆEÀu¼YÀtü«`Y­ˆY­ˆYuÀuÌYÀšLÀ­8YÀOÜ ­Œ­(Àš(À™”(YUÀ•ØÀ­8YUÀ•ØÀ­8#µXÀšÀ™”YUÀ•ØÀ­8! ÀšÀ™”YUÀ•ØÀ­8 Àš À™” YUÀ•ØÀ­8eAµXE AµXAµX$µ\ÀšÀ™”YUÀ•ØÀ­8" ÀšÀ™”YUÀ•ØÀ­8eAµ\E Aµ\Aµ\ ªÈÀ­8ª@À­8 UÀt4ª@ ÀÀøª@Àt4ª@À­8 ÀÀøª@UÀt4ª@ EÀu¼! ªÈª@À­8À“ÀÀ­8YÀu¼ YÀu¼ ÀÀøª@E ªÈª@À­8YÀ“Àª@ Àtìª@ ÀÀøª@ª@ ªÈÀt<À­8ª@À›À› À› €YÀw\YÀu¤Àu¼ª@À› YÀš À›$À›UYÀu¤¬,À›€YÀw\YÀu¤Àu¼ª@ UÀt4ª@ª@€êÀ› À­8À›À­8€YÀw\YÀu¤Àu¼ª@À›YÀš À›$YÀ“ÀÀ›ÀšÀu¼­€UYÀu¤¬,YÀu¤ÀChÀ›À“˜]À”¼YÀ›YÀ™8À“ÀUÀtô]ÀtÀtôÀ›À]XYuÀu¼ÀtìYÀu¼ À­8ª@ ÀÀøª@ ªÈÀt<À­8 ÀÀøª@ª@À› ªÈÀt<À­8ª@YÀ› ª@À›! ªÈÀt<À­8ª@À“˜YÀ› UÀtìª@ÀÀøUÀt4ª@! ÀÀøUÀt4ª@UÀtìª@4 ªÈª@À“ÀYÀ›À“˜ÀtôÀ­8YÀvpÀt UÀtìª@UÀt4ª@À“ÀÀ­8Àt4Àu¼ ÀÀøUÀt4ª@E5 ªÈª@À“ÀYÀ›À“˜ÀtôÀ­8YÀvpÀt0 ªÈª@À“ÀYÀ›À“˜YÀ™8ÀtôÀ­8YÀvpÀt €ÕÀtìÀÀøUÀtìª@ ÀÀøUÀtìª@ª@+ ªÈÀt<ª@À“ÀÀtYÀ›À­8À“˜Uª@€ÕÀtì ª@UÀtìª@%À­8Uª@€ÕÀtì€ÕÀtìª@ ÀÀøUÀtìª@E YÀy YÀy ! ªÈÀ­8ª@À­8À“ÀYÀu¼^YÀu¼ª@AYÀy YÀy YU€ÝÀvpUAYÀy YÀy YU€ÝÀvp? ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@E À­8Àt4YÀw\ Àu¤ ª@À­8YÀt4YÀw\*€„Àt4€ÅÀt4€„Àu¤€ÅÀu¤ ­€ À­8YÀw\ YÀy  Ày  ªÈÀ­8ª@À­8uYU€ÝÀvpÀt4ÀyP(uuYU€ÝÀvpÀt4ÀyPª@ª@uYU€ÝÀvpÀt4ÀyP€‹ uYU€ÝÀvpÀt4ÀyPª@ª@YU€ÝÀvpÀt4Ày Ày ª@ª@AYÀy YÀy UAYÀy YÀy YU€ÝÀvpe ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@uuYU€ÝÀvpÀt4ÀyPª@ª@ €Ày YU€ÝÀvpª@ª@m Ày YU€ÝÀvpª@ª@ª@Àtìª@Ày AYÀy YÀy UAYÀy YÀy YU€ÝÀvp] ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@€Ày YU€ÝÀvpª@ª@= ªÈÀt<ª@À“˜]À”¼À­8YÀ“ÀYÀš¬YÀ™8V €Ày YU€ÝÀvpª@ª@uUAYÀy YÀy YU€ÝÀvpª@ª@-À­8YÀ“ÀE5YÀ“ÀYÀš¬ª@ª@ ªÈÀt<À­8ª@Àš¬Àš,uYÀw\Àt4ª@uYÀw\YÀt4ª@uYÀy ª@¬,ÀšÐuYÀw\Àt4ª@uYÀw\YÀt4ª@^ uuYU€ÝÀvpÀt4ÀyPª@ª@uUAYÀy YÀy YU€ÝÀvpª@ª@²1Àš´YÀ“ÀÀ­8À“ÀÀ]XYuÀu¼ÀtìYÀu¼ÀšÈÀš,uYÀw\Àt4ª@ª@Àt4YÀw\AYÀy YÀy YU€ÝÀvpUAYÀy YÀy YU€ÝÀvpÀšÄYÀšHÀ­8uYÀw\YÀt4ª@YÀt4ÀšÌÀš¼YÀ™@ÀtDÀu¼­€Y­˜uYÀw\ª@¬,uYÀy ª@¬,YÀy ÀšÀÀ•TÀ–XÀ™@ÀšÐYÀ™8Àš¸À“˜]À”¼YÀš¬YÀvpÀtUÀtô]ÀtÀtôÀšØ ª@Àš¬WÀ­8AYÀy YÀy YU€ÝÀvpUAYÀy YÀy YU€ÝÀvp? ÀÀøuUAYÀy YÀy YU€ÝÀvpª@ª@/YUAYÀy YÀy YU€ÝÀvpG ªÈÀt<À­8YUAYÀy YÀy YU€ÝÀvpYÀš¬.YUAYÀy YÀy YU€ÝÀvp2UAYÀy YÀy YU€ÝÀvpª@ª@u ÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@uUAYÀy YÀy YU€ÝÀvpª@ª@M ªÈÀt<À­8YUAYÀy YÀy YU€ÝÀvpª@ª@YÀš¬, UAYÀy YÀy YU€ÝÀvp8uYUAYÀy YÀy YU€ÝÀvpª@ª@?ÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@n uUAYÀy YÀy YU€ÝÀvpª@ª@uYUAYÀy YÀy YU€ÝÀvpª@ª@LYUAYÀy YÀy YU€ÝÀvpYÀš¬YÀš¬Àš¬À­8C ÀÀøuYUAYÀy YÀy YU€ÝÀvpª@ª@E AYÀy YÀy (AYÀy YÀy YU€ÝÀvpB AYÀy YÀy UAYÀy YÀy YU€ÝÀvp YU€ÝÀvp U€ÝÀvp" YU€ÝÀvpYU€ÝÀvpP AYU€ÝÀvpYU€ÝÀvpUAYÀy YÀy YU€ÝÀvp5 UAYÀy YÀy YU€ÝÀvpYÀy < UAYÀy YÀy YU€ÝÀvpYU€ÝÀvp'ÀÀø€Ày YU€ÝÀvpª@ª@KYUAYÀy YÀy YU€ÝÀvpª@ª@Ày YU€ÝÀvpa ÀÀø€Ày YU€ÝÀvpª@ª@uYUAYÀy YÀy YU€ÝÀvpª@ª@ ªÈÀt<À­8ª@YÀš¬Z uYUAYÀy YÀy YU€ÝÀvpª@ª@€Ày YU€ÝÀvpª@ª@+ ÀÀø€Ày YU€ÝÀvpª@ª@E! ªÈÀt<À­8ª@À“˜YÀ𬠀ÕÀtìÀt4ÀyP/ÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@@Ày YU€ÝÀvpª@ª@ÀyPuYU€ÝÀvpÀt4ÀyPQ ÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@€Ày YU€ÝÀvpª@ª@0 ªÈª@À“ÀYÀš¬À“˜YÀvpÀtôÀ­8J €Ày YU€ÝÀvpª@ª@uuYU€ÝÀvpÀt4ÀyPª@ª@@ À­8ÀtÀ“ÀÀ­8Uª@€ÕÀtì€ÕÀtìª@Àt4Àu¼3 ÀÀøuuYU€ÝÀvpÀt4ÀyPª@ª@E Às<À`À­8Àv8&YUYYÀu¼Àu¸Àu¸ Às<À`À­8 Àv8Y ª@ª@uÀv8Y YÀvpYÀvpYÀvp AÀt4E ÀuÌÀ­8ÀuÌÀH\ À¬ÔEE$ ªÈÀs<ÀkdÀtüÀuÌÀ­8ÀuÌ À¬ÔE À¬ÔE ªÈÀs<ÀkdÀtüÀu Àu ÀuÌÀ­8ÀuÌÀH\ EÀu ªÈÀs<ÀkdÀ“È À“ÈÀ“È ÀsøÀsø! YÀ›PÀ›PYÀ›PÀš¬ 1Àš¬ YÀ𬠀ÝÀvp U€ÝÀvp# Às<ªÈÀy ÀkdÀ­8YÀvp ÀkdÀ^ ªÈÀtìÀkdÀ­8 ]ÀtìÀtìÀkdÀ­8 Às<ªÈÀy ÀkdYÀvp- Às<]ÀtìªÈÀy ÀtìÀkdÀ­8Àt4 ÀyE, Às<AEªÈª@ª@À­8YÀvpÀy: Às<Àv8AE]ÀtìYÀ›ÈÀ›ÌªÈ€ÕÀtì%UYU€ÝÀvpYU€ÝÀvp AEÀy$UYU€ÝÀvpYU€ÝÀvp ÀyÀÀøu¶LÀyTª@Ày YU€ÝÀvpª@ª@Àtì¶LUYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpUYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpUYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpÀkdÀ­8Àt4YÀvpAEEÀyAEÀyAEÀyT8 ÀÀøu¶LÀyTª@€Ày YU€ÝÀvpª@ª@M Às<Àœ¸À`Àv8AEYÀChª@]ÀtìYÀ›ÈÀ›ÌYÀ›P1 €Ày YU€ÝÀvpª@ª@u¶LÀyTª@,ªÈUª@€ÕÀtì€ÕÀtìª@YÀš¬ ÀÀøu¶LÀyTª@E! YÀ›TÀ›TYÀ›TÀ› 1À› À› YÀ› À^Àkd ªÈª@Àtì À^Àkd ÀÀøEE À›Ì ÀÀøE ª@ÀtìÀÀøuª@ª@Àtì ÀÀøuª@ª@ÀtìE AEÀ›ÌªÈ€ÕÀtì ÀÀøuª@ª@Àtìª@9 Às<Àœ¸À`Àv8AEYÀChª@YÀ›TÀ›Ì ª@uª@ª@Àtì,ªÈUª@€ÕÀtì€ÕÀtìª@YÀ›ÀBøU«`YÀtü À•tÀ•Ø ÀÀèÀu¼U«`YÀtüu«`Àu¼YÀtükÀ]XÀu¼ÀBøÀÀàÀu¼]Àt4Àt4]Àt4YÀtüU«`YÀtüYÀtüª@¬,Às<Àkd?u«`Àu¼YÀtüªÈª@À­8YÀ•tYÀ•xYÀ“À¶ì AYAUYÀšLYÀšLYAÀšLUYÀšLYÀšLYAÀšLl YÀšLYÀšLYÀšLÀšLUYÀšLYÀšLUYÀšLYÀšLYAÀšLYÀšLÀ­8YÀšLEDUYÀšLYÀšLYAÀšLYÀšLYÀšLÀ­8ÀšdYÀšLYÀšLÀšL YÀšL ]Àœ ]Àš$ ]À•ØUÀ•ØÀš ]Àœ YUYÀ˜`À–X8 YÀ™8À­8À“ÀÀ˜]Àœ ]À•ØÀ•ØÀ™@9 YÀšLÀ“˜]À•ØÀ–XÀ™LÀ­8À“ÀYÀ™8EYuÀ•ØÀ­8]À“ÀYUÀšÀ™HAÀšLYÀšLUYµXYYÀšLYYÀšLYµX]YÀ˜( ÀšLÀš ÀšLUÀ•ØÀ­8 ÀšLuÀ•ØÀ­8]À“À ÀšLÀšH ÀšLUÀšÀ™H ÀšLÀšL YÀš ÀšUYµXYYÀšL ÀšLYÀ˜( UÀ•ØÀ­8YµX YYÀšL€ÞÀš8À­8À™„YÀšLYÀšYUÀ•ØÀ­8YuÀ•ØÀ­8]À“ÀYÀšHYUÀšÀ™HYÀšLYÀšLAÀšLYÀšLAÀšLYÀšLUYµXYYÀšLYYÀšLYµX]YÀ˜(DUYµXYYÀšLªÈYÀšÀš0ÀšYUÀ•ØÀ­8E1Àš0ÀšYÀšLYUÀ•ØÀ­8Àš<À™”+UYµXYYÀšLªÈYÀšÀšH!UYYµXYYYÀšLYYYÀšL YYµX ÀšHUYµXYYÀšL YµXYYÀšL UYYµXYYYÀšL 1YµX µX1YYÀšL YÀšL>UYYµXYYYÀšLYYYÀšLYYµX/UYµXYYÀšLªÈYÀšYÀšHu«`Àu¼YÀtüH YÀ•tYÀ“ÀYÀ•xu«`Àu¼YÀtüÀu¼YÀtü«`­\0 ­ªÈª@Àš]Àu¤ª YÀšLÀ­8À­8&€YÀt4ª@Y]Àu¤Yª Yª Y]Àu¤Y­%€YÀt4ª@Y]Àu¤Yª ÀšHµX ]Àu¤ª * UÀšHµXU]Àu¤ª YÀšL­ Àt4Àw\€¨UYµXYYÀšLYµXYYÀšL€YÀt4ª@Y]Àu¤Yª YÀt4Yª ª@Y]Àu¤Y­UYÀw\ª@YÀw\ª@YÀw\YÀw\<uYÀw\YÀt4ª@ªÈª@Àt<¬,YÀšHÀ­8À­8`À™\ÀšÀ™HÀ™LÀ™LÀ•ØYYÀš ÀšÀ•ôÀ•àYÀ“ÀYYÀš YÀš À“À À™TE YÀ™T#UYµXYuÀšYÀ™TYuÀšYÀ™TµX À™TÀš À™TUÀ•ØÀ­8 À™TuÀ•ØÀ­8]À“À À™TÀš  À™TUÀšÀ™H À™T"UYµXYuÀšYÀ™TuÀšYÀ™TYuÀšYÀ™T uÀšYÀ™T€¡ YÀšYUÀ•ØÀ­8YuÀ•ØÀ­8]À“ÀYÀš YUÀšÀ™HYÀ™TUYµXYuÀšYÀ™TYuÀšYÀ™TYµXµXbUYµXYuÀšYÀ™TYÀšÀšYÀ™TYUÀ•ØÀ­8À­8À™„YÀ™TEÀ™ôÀšÀ™ü YÀ™TN À™ôÀšYÀ™TYUÀ•ØÀ­8ÀšÀšÀ™”À™üÀ­8À™„YÀ™T2UYµXYuÀšYÀ™TYÀšÀš +UYYµXYYuÀšYÀ™TYYuÀšYÀ™T) Àš UYµXYuÀšYÀ™T YµXYuÀšYÀ™T*UYYµXYYuÀšYÀ™T1YuÀšYÀ™TRUYYµXYYuÀšYÀ™TYYuÀšYÀ™TYYµX6UYµXYuÀšYÀ™TYÀšYÀš ! ¬,uÀšYÀ™TYÀu¤;UYYÀu¤¬,ªÈª@Àt<¬,YuÀšYÀ™TjUYµXYuÀšYÀ™TYµXYuÀšYÀ™T€YÀt4ª@Y]Àu¤Yª ª@&ª@ªÈª@Àt<¬,YÀš À­8À­8 À•ØÀ•t¶ì A ÀšL YAÀšL]UÀ•ØÀ­8 ÀšlÀ•Ø ]UÀ•ØÀ­8ÀšL ]ÀšÀšt ]ÀšÀšLuÀ•ØÀ­8]À“À]uÀ•ØÀ­8]À“ÀÀšpÀ•ØÀ­8]À“ÀÀš`" ]uÀ•ØÀ­8]À“ÀÀšL ]ÀšHÀšx ]ÀšHÀšLUÀšÀ™H]UÀšÀ™HÀšhÀ™HÀš ]UÀšÀ™HÀšLÀšxÀ­8]À“À]À“ÀÀ“À À™8S Àš|À“˜]À•ØÀ–XÀ™LÀ­8À“ÀYÀ™8]À­8]À”¼ÀšlYÀšL YÀšLÀšLAÀ™LÀ™HT À“˜]À•ØÀ™LAÀ™LÀ™H]À”¼À­8YÀ™8À“ÀYÀ“ÀÀ˜ÀšL(À–X]Àœ ]À•ØÀ•ØÀ“ÀÀ˜ 1ÀšL YÀšL€®Àš|À“˜]À•ØÀ™LAÀ™LÀ™H]À­8À“ÀYÀ™8]À”¼À–XÀ­8À­8YÀ™8À“ÀYÀ“ÀÀ˜]À­8À­8Àšl]YÀšLÀ•ØYÀšLYÀšLÀšXÀ™H]YÀšL]À“ÀÀšXÀš\ ]YÀ˜(Àš\ ]YÀ˜(ÀšL3ÀšX]À™H]À˜]EÀ™HÀ™LÀ™LÀš\ YÀš ªÈYÀš UYµXYYÀšLÀšH ªÈª@ÀšHµX]Àu¤ª ÀšÀ­8YÀšLÀ™” ­YÀšL ªÈª@ÀšHµXU]Àu¤ª ]Àu¤ª " AYÀšL­U]Àu¤ª UÀšHµX ÀšHµX2 AU]Àu¤ª AYÀšL­UÀšHµX YÀw\Àt4À™`À™`À­8À•Ø ]UÀ•ØÀ­8À™TÀ™h ]ÀšÀ™TÀ™`À•ØÀ­8 À™dÀ•Ø" ]uÀ•ØÀ­8]À“ÀÀ™T ]Àš À™l ]Àš À™TÀ™\ÀšÀ™H ]UÀšÀ™HÀ™TÀ™lÀ­8À™\À™H À™TÀ™\À™HÀ™LÀ™L YÀš) UYµXYuÀšYÀ™TÀš ] ÀšYÀ™TYÀ•tÀ­8YÀ“ÀYÀ•xu«`Àu¼YÀtüÀu¼YÀtü«`ª@«`( UYÀu¤¬,¬,uÀšYÀ™T 1Àtü YÀtü 1Àtü YÀtü4À“À1ÀtüYÀtüÀtü5À­8‚ñ‚ñÀ“ÀYÀ“ÀYÀtü €á€áÀs<YÀvp €á€á.À™„Às<À™„YÀvpYYÀ­8UÀ“ÀÀ­8]UÀ“ÀÀ­8À™°À•àYÀ“ÀÀ“ÀÀ­8"]UÀ“ÀÀ­8ª@À“ÀÀ™”ÀÁ,YÀtüÀ­8 UÀuÌÀ­8À™”Àu¼À­8ª@ª@%YUÀuÌÀ­8ªÈª@¬,µ\Àt4 ]Àt eÀtì€À™”Àš]À”¼YÀ•tYÀ“ÀÀ“˜YÀtüÀs<À“ÀUÀtô]ÀtÀtô]Àt]À”¼UÀtô]ÀtÀtôÀtôeÀtìÀt4ªÈª@Àt<µ\À™¬À™¨  UÀšÀ™HÀš Àt¤H À™„À™¬À¶À­8À™¤À™¨YUÀšÀ™HYÀšÀ™„Àt¤ ÀtXªÈÀ™”À­8YÀvpE]UÀ“ÀÀ­8 YÀtÄdÀ™”ÀšYÀ•tYÀ™8À­8À“ÀYÀvpÀs<Às8ÀtX]UÀ“ÀÀ­8À­8À™„À™œYÀvpªÈª@µ\Àt4uYÀ“ÀYÀ•ØÀ­8]uYÀ“ÀYÀ•ØÀ­8@ À•äÀ•àYÀ“ÀÀ­8YÀ•ØYÀ­8À“ÄÀ•èYÀ“À&]uYÀ“ÀYÀ•ØÀ­8À•Ø ]uYÀ“ÀYÀ•ØÀ­8 ÀÀèÀu¼*€áÀu¼€¨À‘”AEEYÀ•ØÀ­8.]€áÀu¼€¨À‘”AEEYÀ•ØÀ­8€ÎÀu¼]uYÀ“ÀYÀ•ØÀ­8]uYÀ“ÀYÀ•ØÀ­8YÀ“ÀÀ­8YÀ•ØÀ]XÀÀàÀu¼ÀÀèÀu¼Àu¼€¨À‘”ÀtXÀt4Àtx]YÀtu€¨À‘”AEE€¨À‘”AEEC]€áÀu¼€¨À‘”AEEYÀ•ØÀ­8ªÈª@¬,Àt4À•ØCA€¨À‘”À“TªÈÀt4À­8À‘4€í€½€í€½À¶Àu¼A€¨À‘”À“TÀ“T €¨À‘”)€¨À‘”A€¨À‘”À“TÀ“TC YÀ“TªÈÀt4À­8À‘4€í€½€í€½À¶Àu¼€¨À‘”À‘xU€í€½À¶€í€½À‘„€í€½À¶e€í€½ €í€½U]À“X €¨À‘¨ À‘x €¨À‘x e€í€½U€í€½À¶€í€½ €í€½À¶ €í€½ €í€½ À‘¨€ë%Àu¼EÀ‘4ÀtXÀt4ÀtxÀ‘xU€í€½À¶€í€½À‘„€í€½À¶e€í€½€í€½À‘x€¨À‘”U]À“X€¨À‘¨]À“XÀtôÀ`À¶À¶ªÈÀ­8À‘4€í€½€í€½À¶YÀ“T]À“XÀ“X4 ªÈÀt4À•ØÀu¼€¨À‘”AEEYÀ­8/]€áÀu¼€¨À‘”AEEYÀ•ØÀ­8€ýÀ™”À­8­l­tEÀ“ÀÀu¼Às<Às8ª@ª@]UÀ“ÀÀ­8À™°À•ØÀ­8]€áÀu¼€¨À‘”AEEYÀ•ØÀ­8ÀsðUÀu̬,ÀuÌYÀtüYÀtü]€áÀu¼€¨À‘”AEEYÀ•ØÀ­8Àu¼€¨À‘”À­8AEEYÀ•Ø!ªÈª@¬,­tµ\Àt4YÀvp2 µ\Àt4YÀvpUYÀvpYUÀuÌÀ­8) UYÀvpYUÀuÌÀ­8µ\Àt4 ­l­t-ªÈª@¬,Yµ\YÀt4­tYYÀvp À­8EªÈÀt4À­8EÀ­8Àu¼ ]ªÈÀ­8À“ÀÀu¼]À­8]AEUYÀtÈÀtÈ YÀtÈ2 ÀBPYÀtÈYÀtÈEÀtÈÀ[ ÀBPÀAh5*ªÈÀ­8Àu¼YÀu̪@À]XYÀtÈ)ÀBPYÀtÄEÀtÄÀ[¤ÀBPÀAh5%ªÈÀu¼YÀu̪@À]X1ÀtÄUÀuÌYÀtÈUÀuÌYÀtÈuÀtX]Àu¤ª S UÀuÌYÀtÈYÀtÈÀuÌÀt¤ÀtÈ]Àv|À“ÀYÀvpYÀvpÀs<WuÀtX]Àu¤ª ªÈÀ­8Àu¼Àt<YÀuÌÀuÌ]ª@À]XÀ­8YÀ™ÔEu]Àu¤ª uÀtX]Àu¤ª À™Œ ÀšÀtÈYUÀšÀ™H UÀuÌÀwhÀyYuÀ•ØÀ­8]À“Àu]Àu¤ª ‚kLÀ™”À­8u]Àu¤ª À“ÀÀu¼Àt<UYÀuÌÀuÌYÀuÌÀuÌÀs<Às8]ª@ª@À]XuÀtX]Àu¤ª ]UÀ“ÀÀ­8À“ÀÀtÄYÀtÈYÀvpÀ“ŒÀtôÀ™°À•ØÀsðUÀu̬,ÀuÌYÀ™ØYÀtÄYÀšYÀtÈÀ¶À™¨YUÀšÀ™HÀ™„YuÀ•ØÀ­8]À“À]YÀ˜(]YÀ˜(YÀtÈ]ÀuÌ­€À™„Àt¤À™ŒÀš€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀuÌYYUÀuÌÀwhYÀtüYÀy]À“ÀÀ™¨YuÀ•ØÀ­8]À“ÀYuÀ•ØÀ­8]À“ÀÀ­8]À“À]À“ÀYÀuÀ]Àu¤ª ª(À™ YÀ™ÔÀtX.u]Àu¤ª ªÈª@¬,µ\Àt4YÀvpYUÀt4Àt4 Àt4Àt4UÀt4Àt4YUÀt4Àt4O ÀuÌÀuÜÀuäYÀuÌÀu¼Àt4YUÀt4Àt4ÀuØÀuàÀuÌÀuÔÀuì9YUÀt4Àt4YÀt4Àt4ÀuÌYUÀt4Àt4ÀvÀvÀv %Àv ÀvÀu¼ÀvÀvÀv Àv 9YUÀt4Àt4YÀt4Àt4Àv YUÀt4Àt4 ÀuÌYUÀt4Àt4=YUÀt4Àt4YÀt4Àt4YÀuÌYUÀt4Àt4AÀt4YUÀt4Àt4 Àt4UÀt4Àt4 À­ÜÀt4 /AÀt4YUÀt4Àt4YUÀt4Àt4YÀt4 UÀt4Àt49YUÀt4Àt4YÀt4Àt4Àt4YUÀt4Àt4<YUÀt4Àt4ªÈYÀt4Àt4ÀuÌYUÀt4Àt4lAÀtÈAUYÀuÌYUÀt4Àt4UYÀuÌYUÀt4Àt4ªÈYÀt4Àt4Àt4YÀuÌUYÀuÌYUÀt4Àt4$ÀuÌÀuØÀu¼YÀuÌÀt4ÀuØe UYÀuÌYUÀt4Àt4ªÈYÀt4Àt4Àt4YÀuÌÀtÈÀuÌYÀuÌYUÀt4Àt4 UYÀuÌYUÀt4Àt4& ÀtÈUYÀuÌYUÀt4Àt48Às<YÀuÌYÀtÈUYÀuÌYUÀt4Àt4a UYÀuÌYUÀt4Àt4ªÈYÀt4Àt4ÀuÌÀt4YÀuÌYÀuÌYUÀt4Àt4`UYÀuÌYUÀt4Àt4ªÈYÀt4Àt4ÀuÌÀt4YÀuÌYÀuÌYUÀt4Àt4ªÈYÀt4À™¨À™” µ\Àt4$ªÈ¬,À­8Yµ\YÀt4ª@­lYµ\UYµ\Yµ\YYUÀuÌÀ­8€Á UY]Àu¤Yª Yu]Àu¤ª  µXµ\ µ\UYµ\Yµ\ µ\Àt4YÀvp µ\Àt4YUÀuÌÀ­8$ µ\Àt4YÀvpu]Àu¤ª  µ\u]Àu¤ª  u]Àu¤ª  u]Àu¤ª # u]Àu¤ª U]Àu¤ª UY]Àu¤Yª €½Yµ\UYµ\Yµ\Yµ\Yµ\YÀt4ª@YYÀvp­tYYUÀuÌÀ­8€Á €Á UY]Àu¤Yª Yu]Àu¤ª Yu]Àu¤ª Yª Y]Àu¤G€YÀt4ª@Y]Àu¤Yª ªÈª@Àt<¬,YµXÀ­8À­8 ªÈ¬,ª@À•ØÀ­8UÀu̬,ÀuÌ 1UÀuÌÀ­8Àš" 1UÀuÌÀ­8UÀuÌÀwh0 UÀuÌÀwh1UÀuÌÀ­8UÀuÌÀ­8& 1UÀuÌÀ­8YUÀuÌÀwh À­8YYUÀuÌÀwh4 YUÀuÌÀwh1UÀuÌÀ­8UÀuÌÀ­8 1UÀuÌÀ­8E' Àš1UÀuÌÀ­8UÀuÌÀ­8v À­8À™ÜÀ™èÀ•ØÀšUÀu̬,ÀuÌUYYUÀuÌÀwhÀuÌÀwdYYUÀuÌÀwhÀ™äYÀš 1UÀuÌÀ­8À™ØÀ•ØÀ­8UÀu̬,ÀuÌ ÀuÌÀ­8 ªÈÀt4€¥«hÀuÌ«hÀ­8 1UÀuÌÀ­8# ªÈ¬,Àt4À­8ª@]YÀ˜(# 1UÀuÌÀ­8UÀuÌÀ­8M]YÀ˜(YÀ˜(UYu¬,€¥«h€Á­lÀ˜x€¥«hY ªÈ¬,Àt4À™”À­8ª@' À™Ø1UÀuÌÀ­8UÀuÌÀ­8+À™¤YÀšYÀ™ØÀ™¨]YÀ˜( À‘xÀ‘” À‘xÀ‘x À‘x À‘”À‘” À‘¨À‘” À‘” À­8À` Àu¼€í€½ EÀ‘” €í€½À¶À¶ €í€½Àu¼1 ªÈÀt4À­8À‘4€í€½€í€½À¶Àu¼ ]Àtô_U]À“X€¨À‘¨]À“XÀtÀt4ÀtôÀ`Àt4Àu¼À¶À¶]À“XÀ“X À“T€¨À‘” À‘”À‘”YUÀuÌÀ­8# ªÈYÀvpYUÀuÌÀ­8YUÀuÌÀ­8 ]ÀuÌeÀ™”À­8E]ÀuÌÀ™¨YUÀšÀ™HÀ™„YÀšÀ™„YUÀuÌÀ­8ÀuÌÀ­8Às< Eµ\Àt4 ªÈUYÀvpYUÀuÌÀ­8YÀvpYUÀuÌÀ­83 Aµ\AÀt4EUYÀvpYUÀuÌÀ­8 ªÈ­lª@­dA¬,AÀ•ØUÀu̬, A¬,AÀ•ØUÀu̬, ¬,À•ØÀu̬,À­8( UUÀuÌÀ­8¬,¬,UÀ•ØÀ­8À•ØÀ­8]À“À' UÀ•ØÀ­8uÀ•ØÀ­8]À“ÀÀ•ØÀ­8 EUÀ•ØÀ­8 ªÈÀu¼ª@ EUÀuÌÀ­8 ªÈª@¬,­lUYUÀuÌÀ­8¬,)UYUÀuÌÀ­8YUÀuÌÀ­8YUÀuÌÀ­8UÀuÌÀ­8! ¬,UÀ•ØÀ­8UÀuÌÀ­8UYUÀuÌÀ­8¬,' uÀ•ØÀ­8]À“ÀUÀ•ØÀ­8(UYUÀuÌÀ­8YUÀuÌÀ­81UÀuÌÀ­8YUÀuÌÀ­8pÀ™”YUÀ•ØÀ­8À­8Àu¼ª@ª@UYUÀuÌÀ­8¬,A¬,AÀ•ØUÀu̬,­dYUÀuÌÀ­8UYUÀuÌÀ­8YUÀuÌÀ­8À™¨YUÀšÀ™HÀ­8À™„YuÀ•ØÀ­8]À“ÀYÀšÀ™„YUÀ•ØÀ­8YUÀuÌÀ­8UYUÀuÌÀ­8YUÀuÌÀ­8YUÀuÌÀ­8YUÀuÌÀ­8EUÀuÌÀ­8ÀuÌ52 UYÀvpYUÀuÌÀ­8µ\Àt4YÀvp UE ªÈ¬,Àt<ª@ ÀtÈÀš À“ÀÀtÈ ªÈ¬,Àt<ª@€‚ ªÈ¬,Àt4À­8ª@]YÀ˜(]YÀ˜(YÀ˜(UYu¬,€¥«h€Á€¥«hYÀuÌÀ“ÀÀtôYÀtÈ5­lÀ˜x«h]Àv|YÀvpYÀvp]YÀ˜( 1ÀtÈ]YÀ˜( YÀtÈ& ªÈÀ­8YuÀ•ØÀ­8]À“À$À­8YuÀ•ØÀ­8]À“À ÀyUÀuÌÀwhUÀšÀ™HYUÀšÀ™Ho ªÈ¬,ª@YUÀšÀ™H­€UÀšÀ™HÀšÀ™HÀ­8YÀu¤Àu¤YUÀšÀ™HYÀu¤ÀuÀ1UÀšÀ™HYUÀšÀ™H YÀu¤ YUÀšÀ™H 1ÀuÀ YÀuÀ Àt4Àt4 YÀt4Àt4+ YUÀt4Àt4ÀuÌYUÀt4Àt4 YÀt4"YÀt4Àt4]ÀuÌ]ÀuÌ YUÀt4Àt4Àt4  Àt4 Àt4 EYÀt4 Àt4Àt4 UÀt4Àt4 ªÈYÀt4Àt4" ªÈYÀt4Àt4Àt4YÀuÌYÀuÌYUÀt4Àt4E UYÀuÌYUÀt4Àt4ÀtÈUYÀuÌYUÀt4Àt4Às<ÀtüÀtü ªÈYÀt42AÀuÌAYUÀt4Àt4YUÀt4Àt4€ˆ AÀuÌAYUÀt4Àt4YUÀt4Àt4ªÈYÀt4Àt4YUÀt4Àt4UYÀuÌÀuÌÀuÌYÀuÌYUÀt4Àt4 µ\µX µ\ Àt4µ\ ªÈª@ YÀvpµ\Àt4 ªÈ¬,ª@­t Eµ\Àt4YÀvp YUÀuÌÀ­8µ\Àt4 ªÈª@€Á €Á  ªÈ¬,À­8ª@­l"ÀšYÀ•xª@Àu¼ª@E¬, Às<Àkd ªÈ¬,ª@$ u]Àu¤ª µ\Àt4YÀvp u]Àu¤ª µ\]Àu¤ª # U]Àu¤ª u]Àu¤ª  u]Àu¤ª  À¶/YÀZüYÀZüÀZüÀ¶À[ÀydÀu¼D Àt4ªÈÀ­8À“ÀÀ“˜YÀvpYÀtÈ]ÀtÀtôYÀZüE YÀš ÀtÈUÀuÌÀ­8YYUÀuÌÀ­8€ø ]À”¼YÀ™8]YÀ“ÀÀ­8À“ÀÀ“˜À™ÜYÀvpYÀšÀ]XYÀtÈUÀtô]ÀtÀtô]ÀtÀtôÀt4]YÀ“ÀYÀ“ÀUÀAhYÀ“ÀÀA€Àu¼ÀAœYÀZüÀtTYUÀuÌÀ­8€Á €Á Às<À`YÀt4/uYÀw\Àt4ª@ªÈª@Àt<¬,Àš(À­8Àš(Y­` À­8Àš(YÀšLuYÀw\Àt4ª@Àt4ª@YÀw\UYÀw\ª@ª@YÀw\YÀw\/uYÀw\Àt4ª@ªÈª@Àt<¬,Àš,À­8KÀš(YÀ™TuYÀw\Àt4ª@Àt4ª@YÀw\Àu¼UYÀu¤¬,9€YÀw\YÀu¤Àu¼ª@ªÈª@Àt<¬,À›À­8 ªÈª@Àt<¬, ÀtÈÀš YÀtÈ YY UÀuÌÀ­8ÀtÈAÀt4AÀuÌ €Õ€Á €Á AÀt4AÀuÌ` AÀt4AÀuÌÀs<Àtü]YÀuÌYÀuÌUÀu¼YÀuÌÀu¼Àt4À`ÀuÌÀs82ªÈÀs<€Á €Á €Á €Õ€Á Àt4ÀuÌ €Õ€Á ¹Ô? ªÈª@Às<€¥ UÀt4YUÀuÌAÀt4AÀuÌ €Á U€Á €Á K €Õ€Á AÀt4AÀu̪ÈÀs<€Á €Á €Á €Õ€Á €Á NU€Á €Á ªÈª@Às<€¥ UÀt4YUÀuÌ€Á €Á €Á €¥ UÀt4YUÀuÌU€Á €Á Y UÀt4YUÀu̹3 Àt4YUÀuÌU UÀt4YUÀuÌ  UÀt4YUÀuÌ1 Y €¥ UÀt4YUÀuÌUÀt4YUÀuÌ€½Às<€¥ UÀt4YUÀuÌ€Á ªÈª@Às<€¥ UÀt4YUÀuÌ€Á U€Á €Á €Á €Á Y E UÀt4YUÀuÌÀt4YÀtüÀ­8YÀtüEÀtü5+€Á ªÈª@YYUÀuÌYÀt4a AÀt4AÀuÌÀs<ÀtüÀ­8]YÀuÌYÀuÌ]EUÀu¼YÀuÌÀu¼Àt4Às8º¹ØUÀt4YUÀuÌU UÀt4YUÀuÌ3 U UÀt4YUÀuÌÀt4YUÀuÌ YÀt4 ªÈYÀt4Àt4YÀt4 YÀt4 YÀt4 1  Y ( ªÈÀs<€Á €Á €Á €Õ€Á Àt4ÀuÌ Àtü- ªÈÀs<€Á €Á €Á €Õ€Á Àt4¹À UÀuÌ UÀu̹ÄAUÀuÌ¹È AUÀu̹̹Ѐ¥ UÀt4YUÀu̹ÔUÀt4YUÀuÌYUÀuÌ]UÀuÌ€¥ UÀt4YUÀuÌ UÀuÌ]UÀuÌ€‚UÀt4YUÀuÌÀt4YUÀuÌÀs8AÀuÌ]]UÀuÌAUÀuÌ]UÀuÌÀuÌÀkd]  ºººº ºº uÀuÌÀ­8Às<ÀtTÀu¼UÀu¤Àu¤UÀuÀÀuÀ8UÀu¤Àu¤Àu¤Àu¤Àu¤ÀuÀÀuÀUÀuÀÀuÀ$ªÈª@Àt4Àu¼ÀtTÀ­8ÀuÌE7 Àu¼ÀtTUYÀuÌÀuÌÀt4ÀuÌÀ­8Àu̪Ȫ@Àt4EªÈª@€Á Àt4uÀu¤Àu¤Àu¤uÀuÀÀuÀÀuÀuÀu¤Àu¤Àu¤W Àu¼ÀtTÀ­8uÀu¤Àu¤Àu¤Àu¤Àu¤Àu¤ÀuÀÀuÀÀuÀuÀuÀÀuÀÀuÀYÀw\ªÈÀt4aÀu¼ÀtTUYÀuÌÀuÌÀt4ÀuÌÀ­8UÀu¤Àu¤Àu¤Àu¤ÀuÀÀuÀUÀuÀÀuÀYÀw\ªÈª@Àt4EYÀw\ªÈª@Àt4 Às<Àu¼ ÀuÌÀ­8 uÀuÌÀ­8"€]ª@¬,YÀu¤Y­ <€]ª@¬,YÀu¤Y­ Y­ ¬,YÀu¤ª@Yº$#€]»tª@¬,YÀu¤Y­ .UYº$€]»tª@¬,YÀu¤Y­ e UYº$€]»tª@¬,YÀu¤Y­ Àu¼Y­ ¬,YÀu¤]»tª@À­8YÀ™@E%UYºL€¬,YÀu¤Y­ €¬,YÀu¤Y­ ! €¬,YÀu¤Y­ ­ŒºL$UYºL€¬,YÀu¤Y­ €YºLYÀu¤Y­ ¬,9UYºL€¬,YÀu¤Y­ YÀu¤Y­ ¬,1€YºLYÀu¤Y­ ¬,ªÈª@¬,Y­Œ.UYºx€á¬,Y­¨Y­¤€¥ ­ ª@"€á¬,Y­¨Y­¤€¥ ­ ª@* €á¬,Y­¨Y­¤€¥ ­ ª@ºLºx-UYºx€á¬,Y­¨Y­¤€¥ ­ ª@uYºxY­¨¬,FUYºx€á¬,Y­¨Y­¤€¥ ­ ª@€¥ ­ Y­¨Y­¤AuYºxY­¨¬,ªÈª@¬,À]XYºLYÀu¤Y­ À­8 €¥­¨UYº¤ ­¨U­¨ ­¨»% ªÈª@ÀkdYÀtüÀ­8€¥­¨ ºxº¤ UYº¤€¥­¨UYº¤9UYº¤ªÈª@ÀkdYºxYÀtüY­¨À­8UYY¬ÔYYÀw\ YY¬Ô º¤UY¬ÔYÀw\ Y¬ÔYÀw\UYY¬ÔYYÀw\ 1Y¬Ô ¬ÔUY¬ÔYÀw\6UYY¬ÔYYÀw\YYÀw\YY¬Ô4UY¬ÔYÀw\ªÈª@¬,ÀkdYÀtüYº¤ €YºLYÀu¤Y­ ¬,YºLuYºxY­¨¬,Yºxº8ºXUYº¤¬,Yº¤UY¬ÔYÀw\UYº¤¬,%"À]XÀkd€YºLYÀu¤Y­ ¬,Y­ ¬,YÀu¤YºLuYºxY­¨¬,¬,Y­¨YºxYÀtüAÀtüAÀtüYÀtüº8€„Àtü€ÅÀtüYÀtüEÀtüÀuÌ5YÀtüYÀu̺XÀsøÀsøUYº¤¬,¬,Yº¤UY¬ÔYÀw\YÀw\Y¬ÔYÀw\/uYÀw\ª@¬,ªÈª@¬,À­8À­8Y­Œº$º$º$»tº$À•ØÀ–X]Àu¤À­8º$Àu¼YÀ™@À­8º$­ º$eAº$E Aº$Aº$(»t»t »t »ttoMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassA+PassAIncrClassCtor@DebugTypeProxy(À•Ø À•ØÀ–X]Àu¤À­8 À•ØniMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassA+PassAInherit@DebugTypeProxy (YÀ™@ Àu¼YÀ™@À­8 YÀ™@xsMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassA+PassAIncrClassBindings@DebugTypeProxy(­  ­  ­ mhMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassA+PassAMember@DebugTypeProxyº, º,º0 º0º4 º4 º8 (Yº$Yº$"ºLª@Àu¼YÀtüÀuÌYº$ ª@Àu¼YÀtüÀuÌYº$ Yº$eAºLE AºLAºLºPºPºP»t]Àw\ºPÀwp]Àu¤ ºPY»\ºPºPeAºPE AºPAºP (]Àw\ »t]Àw\ ]Àw\toMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassB+PassBIncrClassCtor@DebugTypeProxy Àwp]Àu¤niMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassB+PassBInherit@DebugTypeProxy (Y»\Y»\ Y»\ Y»\xsMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassB+PassBIncrClassBindings@DebugTypeProxymhMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassB+PassBMember@DebugTypeProxy ºXº\ º\º` º`ºd ºd (YºPYºPºxÀu¼YºP Àu¼YºP YºPeAºxE AºxAºxº|º|º|»t]Àw\º|Àwp]Àu¤ º|Y»\º|¬Ôº|eAº|E Aº|Aº|toMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassC+PassCIncrClassCtor@DebugTypeProxyniMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassC+PassCInherit@DebugTypeProxyxsMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassC+PassCIncrClassBindings@DebugTypeProxy(¬Ô¬Ô ¬Ô ¬ÔmhMicrosoft.FSharp.Compiler.TypeChecker+TyconBindingChecking+TyconBindingsPassC+PassCMember@DebugTypeProxyº„ º„ºˆ ºˆºŒ ºŒº º (Yº|Yº|º¤Àu¼Yº| Àu¼Yº| Yº|eAº¤E Aº¤Aº¤ ]Àu¤»t À™@ Y­  Y­ ­ Y­ º$1­ Y­  Y­  1º$ º$ Yº$]»t< ªÈÀu¼ÀuÌÀuÌYÀtü]»tª@¬,YÀu¤Y­ !UUY­ YÀu¤U¬,0 UYº$€]»tª@¬,YÀu¤Y­ ]»t »tÀu¤ º$,­\À­8«`­€ÀšLÀš\]­|]À”¼]À“ÀÀu¼YÀ˜(ª À­8]Àu¤YÀ™8Àt4»tª@]»tÀš`À•ØÀ–XÀšdYÀ™@ÀšXÀ™@¬DÀ™<]À™H]À™HÀ™H­„«PUUY­ YÀu¤U¬,YÀu¤¬,Y­ Yº$YÀu¤Y­ 3 UYº$€]»tª@¬,YÀu¤Y­ ­ˆ ªÈÀu¼ÀuÌÀuÌYÀtü ]»tª@¬,YÀu¤Y­ Z A­ˆUYº$€]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ ]A€]»tª@¬,YÀu¤Y­ A­ˆUYº$€]»tª@¬,YÀu¤Y­ _ A€]»tª@¬,YÀu¤Y­ A­ˆUYº$€]»tª@¬,YÀu¤Y­ + €]»tª@¬,YÀu¤Y­ ­ˆº$Z UYº$€]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ Y­ˆ º$º4 Yº$ Yº$Yº$º$Yº$º$1º$Yº$ Yº$/UYº$€]»tª@¬,YÀu¤Y­ $€]»tª@¬,YÀu¤Y­ aA€]»tª@¬,YÀu¤Y­ AY­ˆUYº$€]»tª@¬,YÀu¤Y­  Aº$ »t.A€]»tª@¬,YÀu¤Y­ Y­ˆ UºL€¬,YÀu¤Y­ ‚J&Àu¼YÀtü«`Y­ˆY­ ¬,YÀu¤«`ª@ª@€áÀuÌYÀtüYUÀtüÀuÌÀuÌÀuÌÀuÌÀuÌYÀtüUYº$€]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ A€]»tª@¬,YÀu¤Y­ AY­ˆUYº$€]»tª@¬,YÀu¤Y­ A€]»tª@¬,YÀu¤Y­ A­ˆUYº$€]»tª@¬,YÀu¤Y­ €]»tª@¬,YÀu¤Y­ Y­ ¬,YÀu¤ª@Yº$Yº$Yº$Yº$º$Yº$Aº$Yº$Yº$Yº$> UºL€¬,YÀu¤Y­ €¬,YÀu¤Y­ ­Œ Àu¼ UYÀw\»\UYÀw\»\Ày0Àw\Ày4Àwp UYÀw\»\Ày ª@ª@Àw\ ª@Àw\ª@ ªÈÀ]XÀ­8ÀuÌYÀtü€YÀw\Y»\ª@¬,UYYÀw\Y»\ YÀw\(€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ /UºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ Y»\€YÀw\Y»\ª@¬, Ày UYÀw\»\ YÀw\»\UYYÀw\Y»\ Àw\ª@ 1Àw\ YÀw\¡;€¥ ­ ¬,Y­¤Y­¨ª@ª@ª@º,»tª@]Àu¤]Àu¤ª@ª@ª@º0À•ØÀ­8À–XUÀu̬,¬,ÀuÌUÀwp¬,¬,Àwpº4Àu¼YÀ™@€YÀw\Y»\ª@¬,Y­˜uYÀw\ª@¬,YÀw\uYÀy ª@¬,YÀy UYYÀw\Y»\YYÀw\Y»\YÀw\EÀw\Às<Às8Àu¤YÀZüYÀ[´5ª@º8­ ­œ]ÀuÌ€áª@Y­¨Y­¤¬,€¥ ­ €¥ ­ Y­¤Y­¨\ UºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ €‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ º$ ªÈÀ]XYÀu¤À­84UYºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ 0 €‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ º$ºP3UYºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ )Uºx€á¬,Y­¨Y­¤€¥ ­ ª@€’ÀuÌÀu¼ª@Yº$YÀtü€¥ ­ ¬,Y­¤Y­¨ª@ª@ª@UYºP€‰¬,ª@ª@ª@Y­¨Y­¤€¥ ­ €¥ ­ ¬,Y­¤Y­¨ª@P Uºx€á¬,Y­¨Y­¤€¥ ­ ª@€á¬,Y­¨Y­¤€¥ ­ ª@ºLU­¨ U­¨­¨»­¨­¬ Uº| €¥­¨1 ºX]Àw\»t«p«pº\º`Y»\ºd­¨­¬¬Ô Uº|ºP»UYº| ºPº| UYº| Uº¤Àu¼YºPUYº| Uº¤ºx»d»dYÀw\YÀw\ »\ »\ºŒ º|]¬Ôº ]¬Ôº| Yº|»Ô# Yº|º|ºŒY»\Yº|»Ô1º|Yº| Yº| 1»Ô »Ô Y»Ô»° ª Àu¼»°-Àw\ÀwpÀu¤À•T]Àu¤YÀuÌÀwp ¬Ô¬Ô ªÈª@¬,ÀkdYÀtü€Àwp]Àu¤Yº|UYº|Yº| €Àwp]ÀwpYÀw\»°Y»ÔuYÀu¤Àu¤«pYº| º|UYº|Yº|€Àwp]Àu¤Yº| º|¬Ô »Ô€Àwp]ÀwpYÀw\»°Y¬ÔeuYÀu¤Àu¤«puYÀu¤Àu¤«p ¬Ô¬Ô7)Àu¼Yº|Yº|º„]Àw\»tYº|ª ÀtÈÀu¼€Àwp]Àu¤Yº|UYº|Yº|Yº|ºˆÀwpYº|]Àu¤Às<UÀwp¬,ª@ÀtY¬ÔYº|]Àw\Àw\€Àwp]ÀwpYÀw\»°Y»ÔºŒYÀw\»°Àwp]ÀwpY¬Ô]ÀwpÀwpuYÀu¤Àu¤«p«pÀu¤Y¬Ô UY¬ÔYÀw\º¤ºL YºLZ YºLºLYº$YÀtüº$º8­ YºLÀtüYÀtüYº$ÀtüYÀtüÀtü1ºLYºL YÀtü YºL­œº8 1Àtüº8 YÀtü! YÀtüÀtüYÀtüÀuÌ 1ÀuÌ YÀu̺x Y­¨ Yºx YºPE Y­¨Yºx­¨ºxYºPºPºX»tY­¨YºxYºPÀuÌ1­¨Y­¨ Y­¨1ºxYºx1ºPYºP YºP Yºx Àu¤­œºXºX€„Àtü€ÅÀtü U«pÀu¤ À˜(Àš U«pÀu¤ uYÀu¤Àu¤«p€î]Àu¤]ÀuÌ]ÀuÌÀuÌ]Àu¤Àu¤ª@UYu¬,€¥«h€Á­lÀ˜x€¥«hYU€¥UÀu¤Àj¤€¥Àu¤€¥Àu¤YÀu¤U«pÀu¤ÀuÌYÀvpYÀš YÀ™8ÀšÀ“À«8«,Àj¤Àwd«p«p[»tªÈª@¬,Àu¼]À”¼YÀ™8YÀ˜(]À“À]Àu¤ª À­8YÀtüÀuÌÀuÌ9 À“ÀÀ­8ÀuÌÀtôÀs8]Àv|YÀvpYÀvp.ÀtÈÀs<ÀtYUÀtüÀuÌÀu¤ÀuÈ Àu¤EUÀuÌÀwd YÀwl UÀuÌÀwhÀš UÀuÌÀwd Àwl€Â€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYÀtüYYUÀuÌÀwhÀšÀ™HÀ“ÀÀ­8«8YÀtüÀu¼UÀuÌÀwdÀuÌÀuÌÀu¤YÀwlÀwhYYÀwhÀwdÀwdÀj¤«p& »ª@»tªÈÀs<Àu¤Àu¼ÀwdE» '€áYÀtüYÀtüÀwpÀuÌÀ­8&€áYÀtüYÀtüÀwpÀuÌÀ­8UAÀwpÀwp UUAÀwpÀwpYÀw\y» Àu¤€áYÀtüYÀtüÀwpÀuÌÀ­8ÀwpÀw¬YÀtüÀwˆÀuÌÀ­8YÀtüUÀwpÀuÌÀwpÀuÌÀwpH UUAÀwpÀwpYÀw\ªÈÀu¤À­8YÀtüÀ•TÀwp»ESAÀw\UUAÀwpÀwpYÀw\ª »tªÈÀu¤À­8YÀtüYÀuÌ»°»h,uYUAÀwpÀwp»°YYÀw\)UYUAÀwpÀwpYYÀw\YUAÀwpÀwpYUAÀwpÀwp;uYUAÀwpÀwpYUAÀwpÀwpYÀw\BUuYUAÀwpÀwpYUAÀwpÀwpYÀw\»° Àw\»°' Àw\UUAÀwpÀwpYÀw\ UAÀwpÀwpYÀw\(UYUAÀwpÀwpYYÀw\+uYUAÀwpÀwp»°YYÀw\€±»hÀwpÀwpAÀwpÀwp»dYÀw\uYUAÀwpÀwp»°YYÀw\»°»°UYUAÀwpÀwpYYÀw\YYÀw\YUAÀwpÀwpYÀw\€› UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°ª ª@»tªÈÀu¤À­8YÀtüYÀuÌ€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤»°»\AÀy`AÀw\Ày`-U€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤UÀy`Ày`VAA»°A»\UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°QA»°A»ÔUuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°CUuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°GUYuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°@YuYUAÀwpÀwpYUAÀwpÀwpYÀw\HuYYUAÀwpÀwpYYUAÀwpÀwpYYÀw\YYUAÀwpÀwp3UYUAÀwpÀwpYUAÀwpÀwpUÀy`Ày` »ÔUÀy`Ày`,U€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤C »°»ÔuYUAÀwpÀwpYUAÀwpÀwpYÀw\FUYuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°9 YUAÀwpÀwpYUAÀwpÀwpYÀw\GuYYUAÀwpÀwpYYUAÀwpÀwpYYÀw\1YUAÀwpÀwp UAÀwpÀwp2UYUAÀwpÀwpYUAÀwpÀwp UAÀwpÀwpÀwpƒí3ÀkdÀu¤À­8YÀtüÀs<ÀkdÀu¤ÀuÌYÀtüYÀuÌAÀy`AÀw\Ày`U€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤UÀy`Ày`Ày`Ày`Ày`Ày`Ày`€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤AA»°A»\UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°A»°A»ÔUuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°Y»°UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°YÀw\»°YUAÀwpÀwpYUAÀwpÀwpUYuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°»°YuYUAÀwpÀwpYUAÀwpÀwpYÀw\uYYUAÀwpÀwpYYUAÀwpÀwpYYÀw\YYÀw\YYUAÀwpÀwpYYUAÀwpÀwpYUAÀwpÀwpYUAÀwpÀwpYÀw\UYUAÀwpÀwpYUAÀwpÀwpYUAÀwpÀwpYUAÀwpÀwpÀwpÀwpÀwp]Àu¤]Àu¤ÀwpÀ­8uYÀu¤Àu¤«pYÀu¤O €Àwp]ÀwpYÀw\»°ªÈª@»tÀwpY»ÔYÀw\YÀtüª »\YÀw\ »\Àwp»\»\eA»\E A»\A»\ YÀw\wrMicrosoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassBindingGroup+IncrClassBindingGroup@DebugTypeProxy ÀwpmhMicrosoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassBindingGroup+IncrClassDo@DebugTypeProxy »d »h(euYÀu¤Àu¤«peuYÀu¤Àu¤«p euYÀu¤Àu¤«pZ Àu¼YÀtüeuYÀu¤Àu¤«pÀu¤«pYÀu¤]Àu¤ª ]Àu¤Àu¤Àœ¸ YÀtüªÈÀkdÀ­8 YÀ™8 Àš À˜( ªÈÀu¼À­8YÀtüª@- YÀu¤ÀuÌÀšÀ“À«8«,Àj¤Àwd«p uYÀu¤Àu¤«pE» »ÀuÈ»Àu¤Àwd»»eA»E A»A»b]Microsoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassValRepr+InVar@DebugTypeProxy ÀuÈd_Microsoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassValRepr+InField@DebugTypeProxy Àu¤Àwde`Microsoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassValRepr+InMethod@DebugTypeProxy»˜ »˜»œ »œ » (€Á(€Àu¤»€ÅÀu¤€Àu¤»€ÅÀu¤ €Á €Àu¤»€ÅÀu¤9 €ÁÀs<€Àu¤»€ÅÀu¤€„Àu¤€ÅÀu¤€Àu¤»€ÅÀu¤»°Às<Y]»]» » ]» »Àu¤ Àu¤Àwd ªÈÀw\ U€Á U€Á U»€ÁB Às<Àu¤€„Àu¤€ÅÀu¤Àu¼U€Á€ÁÀwdÀuÈM U»€ÁªÈª@»t€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€ÁÀw\U»€ÁÀu¤U»€Á€Á»= »°ªÈª@»t€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤Àw\ »°Àu¤YÀs<»»œÀuÈ]Àu¤Àu¤Àwp» ÀwdUÀwpÀuÌÀuÌYÀuÌYÀwp»/ Àwp]Àu¤YÀu̪ Àu¤YÀuÌÀ­8+ Às<»»œÀuÈ]Àu¤Àu¤Àwp»+ Àwp]Àu¤YÀu̪ Àu¤ÀwpÀ­8& Àwp]Àu¤YÀu̪ Àu¤À­8 %Àu¤»Àt¸ %Àu¤»,Àu¼YÀtÈ%Àu¤»»œª(Àt¸Àt´ ªÈÀkdÀt»tª %AAÀwpÀwpAÀwp]Àwp&AAÀwpÀwpAÀwp]Àwp! Àwp]Àu¤ª YÀuÌÀwp Àš UÀuÌÀwh À™HÀ™L UÀu¤»Y%Àu¤»| »°ªÈÀkdÀt»tª Àu¼%Àu¤»UÀu¤»Àu¤»»œÀuÈYÀtüYUÀtüÀu̪(Y%Àu¤»ÀtÈ1%Àu¤»Y%Àu¤» UÀu¤» Y%Àu¤»%Àu¤»Àu¼»œª(%Àu¤»»œª( »°]Àu¤ª YÀuÌmÀwŒÀw|Àu¤Àu¤YÀuÌÀ­8YÀwpÀs<ÀwpYÀwpÀw|Àu¤Àw¤ÀxTÀu¤ÀwpÀw¤ÀxTÀu¤»Ô »ÔY»\»Ô»ÔeA»ÔE A»ÔA»Ô|wMicrosoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassConstructionBindingsPassC+PassCBindings@DebugTypeProxy€Œ€†Microsoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassConstructionBindingsPassC+_PassCCtorJustAfterSuperInit@DebugTypeProxy€Š€„Microsoft.FSharp.Compiler.TypeChecker+IncrClassChecking+IncrClassConstructionBindingsPassC+_PassCCtorJustAfterLastLet@DebugTypeProxy»Ü »Ü»à »à»ä »ä' ªÈAÀy`AÀw\Ày`Ày`Ày` »hÀwp»dYÀw\YÀw\ UÀy`Ày`»\ ªÈAÀy`AÀw\Ày` Ày`Ày`% A»\UÀy`Ày`UÀy`Ày` »\UÀy`Ày`»Ü»Ô UÀy`Ày`»Ô% A»ÔUÀy`Ày`UÀy`Ày` À­8Àu¤À•TÀwp À­8Àwp]Àwp ]Àwp+ ª »tªÈÀu¤À­8YÀtüYÀuÌ»°^Àu¤À•TÀwpÀwp]Àu¤]Àu¤»»˜»œÀ­8Àwp]Àwpª(ÀuÈÀwpÀs<»' UUAÀwpÀwpYÀw\Àw\6 ª@»tªÈ€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤ »°»°Àw\S ªÈª@»tª Àu¤À­8YÀtüYÀuÌ€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤K UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°»°»\UAÀwpÀwpe ªÈ»tª Àu¤À­8YÀuÌ»°]Àu¤]Àu¤Àu¤ÀwpÀwpAÀwpÀwpUAÀwpÀwpÀu¤]Àu¤ 1UAÀwpÀwp UAÀwpÀwp ]Àu¤ YUAÀwpÀwpY ªÈ»tª Àu¤À­8YÀuÌ»°ª ª(ÀuÈÀwpÀwpAÀwpÀwpUAÀwpÀwp Às<ª(t ªÈ»tª Àu¤À­8YÀuÌAA»°A»\UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°UAA»°A»\UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°C »°»\uYUAÀwpÀwpYUAÀwpÀwpYÀw\D YUAÀwpÀwp]Àu¤ª(»ÜY»\UYuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°»°YuYUAÀwpÀwpYUAÀwpÀwpYÀw\uYYUAÀwpÀwpYYUAÀwpÀwpYYÀw\YYÀw\YYUAÀwpÀwpYYUAÀwpÀwp»ÔJ UuYUAÀwpÀwpYUAÀwpÀwpYÀw\»°»°»Ô YÀw\Àw\YÀw\ YÀw\ Àw\Àu¤AÀwpÀwp UAÀwpÀwp# AÀwpÀwpUAÀwpÀwpÀtDÀu¼Àt4ÀtôÀt<ÀtôUÀtô]ÀtÀtôMÀtȪ@Àt<]Àv|ÀuÌYÀvpYÀvpÀ“ÀÀ“Œ]À”¼À­8 ]À”¼€¹YU€ÝÀvpUYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpYU€ÝÀvpYÀvpYÀvpUÀu̬,ÀuÌÀs<Às8]À”¼]Àv|ÀtÈÀtDÀu¼YU€ÝÀvp> ÀtȪȪ@Àt<¬,YÀ™8À“ÀÀ•ØÀ“Œ]À”¼À­8 3 À“˜]À”¼À•ØÀ­8]À“ÀYÀ™8À“ÀÀtȪȪ@Àt<¬,Àš> À“˜]À”¼À•ØÀ­8]À“ÀYÀ™8]À“ÀÀ“ÀÀtȪȪ@Àt<¬,Àš ªÈÀ­8UYÀtÈÀuÌ UÀuÌÀwhÀtÈUYÀtÈÀuÌ YÀš€ðÀ“˜]À”¼YÀ™8À­8À“ÀÀ™ÜYÀvpUÀtô]ÀtÀtôÀtôUYÀtÈÀuÌÀ™èÀ•ØÀšUÀu̬,ÀuÌUYYUÀuÌÀwhÀuÌÀwdÀuÌYYUÀuÌÀwhYUÀuÌÀwhYÀtÈÀ™äYÀšÀ“ŒÀtĪȪ@Àt<Àu̬,À™Ø À™ØÀtÄ'YÀtĪȪ@Àt<Àu̬,YÀ™Ø] À“˜À“ÔYÀ™8À­8À“ÀYÀvpÀv|UÀtô]ÀtÀtôÀtô]Àv|YÀvp!ÀtȪȪ@Àt<ÀuÌÀuÌÀ™Ô À™ÔÀtÈ-UÀuÌYÀtȪȪ@Àt<ÀuÌYÀ™Ô ªÈª@Àt<À­8ÀuÌÀwhÀ“À]À“À ÀtÈUÀuÌÀwh ªÈª@Àt<¬, À“ÀÀtÄ ªÈª@Àt<Àu̬, ÀtÄÀ™Ø ªÈª@Àt<ÀuÌÀuÌ ÀtÈÀ™Ô YYÀš >Àš YYÀš YYÀš YÀš YYÀš Àš ÀšÀ­8Àš À™HÀ™H ]À™H]À™HÀ™H]À™HÀ­8]À™HÀš]À“À]À™HÀ™<À­8À™<À˜œEÀ˜À˜ À˜œ]À”¼À­8À­8À“ÀÀ­8À˜Ü]À“ÀÀ“ÀÀ˜AÀ˜ U¬<À™< U¬<À™< U¬<À™<@ À˜U¬<À™<À–XÀ­8À™<À–˜À˜€À–XÀ­8À–X¬<6 ¬DªÈ]À”¼À™<À•TÀ­8À˜À“Œ¬<À•l. ]À”¼À™<À•TÀ­8À˜À“Œ¬<À•lY¬DªÈYÀvp¬DUYÀ˜xÀ–XUYÀ˜xÀ–X À˜x9YÀ˜x]À™DÀ–XUYÀ˜xÀ–XYÀ˜xÀ–X¬<ªÈYÀ˜¬<]À™H¬H/¬@ªÈ¬HÀ“À]À”¼Àš$YÀ˜¬<À™< ¬@%Àš]À“ÀYÀ˜À™HÀ™<6 ¬@ªÈÀ™HÀ™<À“À]À”¼Àš$YÀ˜À­8¬<Àš]À“ÀÀ™HD ¬@ªÈÀ™HÀ™<À“ÀÀ“À]À“À]À”¼Àš$YÀ˜À­8¬<¬@ À™H€§À˜¤À­8À•ØÀ˜¬@À™<Àš$À˜À˜¨À˜´]À”¼]Àš$]À“ÀYÀ“ÀYÀ˜]À™HÀ™HYÀ“ÀÀ“ÀYÀ“ÀÀ“ÀÀAhÀAˆ¬HÀ˜ À™LÀ™L. ¬@ªÈÀAH¬Hª@À™<¬<À]X]À™HÀ˜4 À]X]À™HªÈÀAH¬Hª@À™<¬<À]X]À™H ¬@ªÈÀAH¬Hª@À™<À˜¬Microsoft.FSharp.Compiler.Nameres+Item+Property@DebugTypeProxy (YÀZü  YÀZü YÀZüFAMicrosoft.FSharp.Compiler.Nameres+Item+MethodGroup@DebugTypeProxy D?Microsoft.FSharp.Compiler.Nameres+Item+CtorGroup@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Nameres+Item+FakeInterfaceCtor@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Nameres+Item+DelegateCtor@DebugTypeProxy YÀuÌ@;Microsoft.FSharp.Compiler.Nameres+Item+Types@DebugTypeProxy (AE] (]ÀZü AE]]ÀZü AE] ]ÀZüJEMicrosoft.FSharp.Compiler.Nameres+Item+CustomOperation@DebugTypeProxy ÀuÀHCMicrosoft.FSharp.Compiler.Nameres+Item+CustomBuilder@DebugTypeProxyB=Microsoft.FSharp.Compiler.Nameres+Item+TypeVar@DebugTypeProxy (YÀu¼ YÀu¼ YÀu¼MHMicrosoft.FSharp.Compiler.Nameres+Item+ModuleOrNamespaces@DebugTypeProxyE@Microsoft.FSharp.Compiler.Nameres+Item+ImplicitOp@DebugTypeProxy À“ÀÀuÌB=Microsoft.FSharp.Compiler.Nameres+Item+ArgName@DebugTypeProxy À“ÀÀAhD?Microsoft.FSharp.Compiler.Nameres+Item+SetterArg@DebugTypeProxyJEMicrosoft.FSharp.Compiler.Nameres+Item+UnqualifiedType@DebugTypeProxy ÀAp ÀAt ÀAx ÀA| ÀA€ ÀA„ ÀAˆ ÀAŒ ÀA ÀA” ÀA˜ ÀAœ ÀA  ÀA¤ ÀA¨ ÀA¬ ÀA° ÀA´ ÀA¸ÀA¼ ÀA¼ ÀAÀ ÀAÄ ÀAÈY1Y5 ÀZü( ÀB0ÀuÀ ÀB0À¶À»ˆ ÀB0ÀB0eAÀB0E AÀB0 AÀB0ÀB<ÀB8*ÀB<ÀB<À»ˆÀ»ˆÀB8ÀB8ÀuÀÀuÀÀs<ÀB0ÀB0 ÀuÀ NIMicrosoft.FSharp.Compiler.Nameres+ExtensionMember+FSExtMem@DebugTypeProxy(À¶(À»ˆ À¶À»ˆ  À¶NIMicrosoft.FSharp.Compiler.Nameres+ExtensionMember+ILExtMem@DebugTypeProxy ÀB8 ÀB<ÀBHÀBHeAÀBHE AÀBH AÀBH ÀBH ÀBH ÀBHÀBH(ÀÁ4ÀAh (€¥ÀAh(€¥YÀu¼(€¥YÀuÈ(ÀÁ<Àu¼(ÀÁ4ÀŸDÀu¼(Àj¼ÀB0 €¥ÀAh€¥YÀu¼ ÀÁ4ÀAh €¥ÀAh €¥YÀu¼ €¥YÀuÈ ÀÁ<Àu¼ ÀÁ4ÀŸDÀu¼ Àj¼ÀB0€  ÀkdÀÁ4ÀAh€¥ÀAh€¥YÀu¼€¥YÀu¼€¥YÀuÈÀÁ<Àu¼ÀÁ<Àu¼ÀÁ4ÀŸDÀu¼ÀÁ4ÀŸDÀu¼Àj¼ÀB0€¥Àtü ÀÁ< Àj¼@€¥YÀu¼€¥YÀu¼€¥YÀuÈÀÁ4ÀŸDÀu¼ ÀBPÀs< ÀAh ÀÁ4ÀŸDÀu¼ÀBH ÀÁ<Àu¼ÀBH €¥YÀu¼ÀBHÀBTÀBTeAÀBTE AÀBT AÀBT ÀBT ÀBT ÀBTÀBT   Àj¼ÀB0Àj¼ÀB0ÀuÀÀAh €¥ÀAhÀw`€¥ÀAh Àw`€¥ÀAh€¥ÀAhÀu¤ÀAh €¥ÀAh€¥ÀAhÀuÀ U ÀŸPÀuÌÀ­8 ÀÁ4ÀAhÀÁ4ÀAh ÀŸPÀuÌÀ­8& AÀÁ4ÀAhÀÁ4ÀAhUUÀŸDÀu¼%ÀŸDÀu¼UÀŸDÀu¼(UÀŸDÀu¼%ÀŸDÀu¼Àu¼ÀŸD2 ÀÁ4ÀŸDÀu¼ÀÁ4ÀŸDÀu¼%ÀŸDÀu¼ %Àu¼Àu¼ %Àu¼ %Àu¼ ÀÁ<UÀu¼%Àu¼Àu¼& ÀÁ<Àu¼ÀÁ<Àu¼%Àu¼ À`À­8ÀµÌ ÀZP À»0UÀu¼ÀB0À»0À¶À¶ YUÀu¼ÀB0À»ˆ €¥ÀAh€¥ÀAhÀuÄ! ÀÁ4ÀAhÀÁ4ÀAhÀuÄ Àu¼ÀB0( Àj¼ÀB0Àj¼ÀB0UÀu¼ÀB0ÀuÈ% €¥YÀuÈ€¥YÀuÈÀtÈ]ÀAhYÀu¼ ÀAh]ÀAh ÀBTÀs<À`À­8 ÀBPÀBPÀu¼ YYY À]X YÀu¼YÀu¼Àu¼ Às<À`À­8À]X ÀBT À]XÀu¼ ]ÀuÀÀu¤ Às<À`À]XÀ­8 ÀBPÀu¼ÀBPÀBàÀBàeAÀBàE AÀBà AÀBà ÀBà ÀBà ÀBàÀBà ÀBà €¥ÀtüÀtü€¥Àtü €¥ÀtüÀtü€¥ÀtüÀBðÀBðeAÀBðE AÀBð AÀBð ÀBð ÀBð ÀBðÀBøÀBøÀBøeAÀBøE AÀBø AÀBøÀBøYÀ•Øb]Microsoft.FSharp.Compiler.Nameres+TypeNameResolutionStaticArgsInfo+_Indefinite@DebugTypeProxy_ZMicrosoft.FSharp.Compiler.Nameres+TypeNameResolutionStaticArgsInfo+Definite@DebugTypeProxyÀC ÀCÀC ÀC(ÀBð(ÀBøÀC(ÀCÀCÀBðÀBø ÀBðÀBø ÀBð ÀBøeAÀCE AÀC AÀCÀC ÀCÀBø ÀC Àu¼YÀu¼ÀCÀCÀCeAÀCE AÀC AÀC ÀC ÀC ÀCÀC À`À­8 À­8À‘4 ]€¨À‘”€¨€…Y]€¨À‘”h À`À­8Àu¼À‘4Y]€¨À‘”]€¨À‘”]€¨À‘”€¨À‘”Y]€¨À‘”Àu¼1]€¨À‘”Y]€¨À‘” Y]€¨À‘”]€¨À‘” 1Àu¼ YÀu¼ ÀAHÀ­8YÀuÌ ÀuÌÀu¼Y€¨À‘” YÀu¼T ÀAHÀBøÀ­8YÀuÌÀu¼Àt €¨À‘”Àu¼Y€¨À‘”YÀu¼ÀuÌ1€¨À‘”Y€¨À‘” YÀu¼ YÀu¼ Y€¨À‘” À]XÀs< ÀAHÀ­8YÀuÌÀu¼ ÀuÌÀt4" À]XÀAH]ÀBøÀ­8Às<AÀu¼ÀuÌ Àt4ÀuÌ Àu¼ÀuÌk UÀu¼YÀuÌYÀuÌÀu¼Àt4ÀtìAÀu¼ÀuÌÀtXÀtxÀt ÀÁ<Àt4ƒ­YÀt4] (]ÀCdÀCh ]ÀCd ]ÀCd ]ÀCdÀChÀCh ÀChÀCd ÀCh ÀCh]ÀCd4Ày\Ày\€„Àtü€ÅÀtü€„Àtü€ÅÀtü Ày\YÀuÌÀy\ YÀuÌÀy\=YÀuÌÀy\Ày\€„Àtü€ÅÀtü€„Àtü€ÅÀtü(YUÀ­8Àu¼(AAEEÀC€YUÀ­8Àu¼AAEE&ÀC€YUÀ­8Àu¼AAEE" YUÀ­8Àu¼AAEE YUÀ­8Àu¼ AAEEeAÀC€E AÀC€ AÀC€ UÀ­8Àu¼!AAEEYUÀ­8Àu¼(ÀChÀAHÀBPÀC`À]XÀC€AEYUÀ­8Àu¼ÀC€ ÀC€UÀ­8Àu¼AAEE ÀC€AAEE ÀChÀAHÀBPÀC`À]XÀ­8Àu¼ÀAh EUÀ­8Àu¼ EAE AAEEAAEE ÀC€Àu¼ UÀC€Àu¼ÀC€Àu¼Àt4  UÀC€Àu¼ À­8Àu¼Y À­8YUÀC€Àu¼UÀC€Àu¼Àu¼ÀC€ÀC€YUÀC€Àu¼UÀC€Àu¼ YUÀC€Àu¼ 1UÀC€Àu¼ UÀC€Àu¼ YUÀC€Àu¼ À]XYÀ“ÀÀ“À ÀÀàuÀu¼ÀtìÀu¼@AÀC€AAÀ­8AÀu¼AÀtìAYÀ“ÀÀÀà ÀC¸ AÀC€' À­8Àu¼ÀtìAYÀ“ÀÀÀàAYÀ“ÀÀÀàÀu¼ÀtìYÀ“À ÀÀàuÀu¼Àtì À­8À]XÀ`UYÀAh YÀAh ÀAhUYÀAh ÀB0ÀB0À]¨ À]¨(ÀB8ÀuÀ]Àu¬Àu¤]Àu¬Àu¬ EÀB0( Àj¼ÀB0]À]XÀ­8Às<À` YÀB0!Àu¼YÀB0Àj¼ÀB0À]¨ YÀ[´ÀuÌ À^]À­8ÀuÌÀs<] YÀB<À»ˆ] À¶ÀZPUÀu¼YÀuÌÀu¼Àt¤ÀB8ÀuÀ]Àu¬Àu¤]Àu¬ ]ÀZüÀB0 ÀCÜ YÀZüÀuÌ ÀCàÀCäÀCäÀCäeAÀCäE AÀCä AÀCä ÀCä ÀCä ÀCäÀCä À‘¸UÀC€ÀAh ÀC€ÀAh' uÀC€ÀAhYÀ“ÀUÀC€ÀAh ÀAHÀC€À]XÀ­8Àkd ÀC€ ÀÀàUÀC€ÀAhÀuÌ5 ÀAHÀBPÀCäÀC€À­8À]XYÀ“ÀÀ^ ÀC) ÀÀàYuÀC€ÀAhYÀ“ÀÀuÌ3 À­8AÀuÌÀÀàYuÀC€ÀAhYÀ“À% ÀÀàuÀC€ÀAhYÀ“ÀÀuÌ ÀAHÀ­8ÀAh0 ÀAHÀBPÀCäÀ­8À]XYÀ“ÀÀCÀ­8ÀC€Àu¼ÀC€. ÀÀàuÀC€ÀAhYÀ“ÀUÀC€Àu¼ ÀC€ UÀC€Àu¼Àu¼ ÀAHÀBPÀ]XÀ“ÀUÀC€ÀuÌ ÀC€ÀuÌ% ÀÀàUÀC€ÀAhUÀC€ÀuÌ ÀAHÀ­8 UÀC€ÀuÌUÀC€Àu¼z ÀAHÀ“ÀÀ­8YUÀC€Àu¼UÀC€Àu¼Àu¼ÀC€ÀuÌÀAhYÀ“ÀYUÀC€Àu¼uÀC€ÀAhYÀ“À 1uÀC€ÀAhYÀ“À uÀC€ÀAhYÀ“À YuÀC€ÀAhYÀ“À ÀD0uÀC€ÀAhY$ uÀC€ÀAhYUÀC€ÀuÌ$ uÀC€ÀAhYUÀC€ÀAh ÀAHÀ]XÀBPÀ“À À­8ÀC ÀAHÀBPÀCÀ]XB AYÀ“ÀÀÀàuÀC€ÀAhYÀ“ÀÀC€À­8Àu¼ÀtìÀDP1 ÀAHÀBPÀCÀ]XÀDPÀC€À­8Àu¼ÀtìÀDPÀC€À­8Àu¼Àtì) ÀÀàuÀC€ÀAhYÀ“ÀYÀ“À ÀDxÀD|ÀD|eAÀD|E AÀD| AÀD| ÀD| ÀD| ÀD|ÀD|ÀD„1 ÀAHÀBPÀCÀ]XÀD„ÀC€À­8Àu¼ÀtìÀD„ÀC€À­8Àu¼Àtì ÀD¤% ÀÀàUÀC€Àu¼UÀC€Àu¼ ÀÀàUÀC€Àu¼Àu¼+ ÀAHÀCÀ]XÀCÀC€YÀ“ÀÀ­8 ÀAHÀ]XÀCÀC= AYÀ“ÀÀÀàYUÀC€Àu¼ÀC€À­8Àu¼ÀtìÀDÄ1 ÀAHÀ]XÀCÀCÀDÄÀC€À­8Àu¼ÀtìÀDÄÀC€À­8Àu¼Àtì$ ÀÀàYUÀC€Àu¼YÀ“À1YUÀC€Àu¼* YUÀC€Àu¼YYUÀC€Àu¼ÀDÐ1 ÀAHÀ]XÀCÀCÀDÐÀC€À­8Àu¼ÀtìÀDÐÀC€À­8Àu¼Àtì YÀ“ÀÀCÀC& YUÀC€Àu¼YUÀC€Àu¼ Àu¼UÀC€Àu¼]UÀuÈYÀ“ÀÀC€ÀAhYÀ“ÀÀA„ÀuÈ/ ]UÀuÈYÀ“ÀuÀC€ÀAhYÀ“À4 AuÀC€ÀAhYÀ“À]UÀuÈYÀ“À+ uÀC€ÀAhYÀ“ÀUÀuÈYÀ“À3 YUÀuÈYÀ“ÀYuÀC€ÀAhYÀ“À ÀuÈÀuÈ ÀAHÀBPÀ]X= AYÀ“ÀÀÀàUÀuÈYÀ“ÀÀC€À­8Àu¼ÀtìÀE, ÀAHÀBPÀ]XÀEÀC€À­8Àu¼ÀtìÀEÀC€À­8Àu¼Àtì$ ÀÀàUÀuÈYÀ“ÀYÀ“À ÀAHÀ­8ÀEAEEeAÀEE AÀE AÀEÀE ÀE ÀE AÀAhEÀEÀE ÀAhAÀAhEÀEÀE eAÀE E AÀE  AÀE XSMicrosoft.FSharp.Compiler.Nameres+AfterOverloadResolution+_DoNothing@DebugTypeProxy (AÀAhE AÀAhEÀE AÀAhEXSMicrosoft.FSharp.Compiler.Nameres+AfterOverloadResolution+SendToSink@DebugTypeProxy ÀAhAÀAhEÀEniMicrosoft.FSharp.Compiler.Nameres+AfterOverloadResolution+ReplaceWithOverrideAndSendToSink@DebugTypeProxyÀE( ÀE( ÀE, ÀE0 ÀChÀ]XÀBPÀ­8ÀAh EÀAh" ÀChÀAHÀ]XÀBPÀAhÀ­8AÀu¼Y ÀEd ÀAhÀ[  À]X À[  ÀAhÀuÄ À­8À]XÀs< ÀAHÀ­8À]X À\@ À­8À]XÀs<À` À[` À[´ YÀ\@@ ÀAHÀ­8À]XÀ`YÀ\@À\@ÀuÌÀ_(ÀZüYÀ\@ 1À\@ YÀ\@ YÀ\@ÀyAÀZüAÀuÌ< AÀZüAÀuÌÀ­8À]XÀuÌÀs<À`€„€Å ]ÀAh ÀAHÀ­8À]XÀs< ]ÀAhÀ[´ÀAÀ\HÀuÀÀuÀ YÀAh ÀAhÀ[` ÀAhÀ\@ ÀAhÀuÌUYÀZü YÀZü ÀAhUYÀZü/ ÀAHÀBPAÀZüAÀuÌÀ­8À]XY YÀAhÀ[ 9 ÀAHÀBPAÀZüAÀuÌÀ­8À]XÀs<À`Y YÀAhÀ[´ À­8À]XÀs<À` À­8À]XÀ^ ÀuÌÀ\@ YÀAhÀuÌ# AÀ\@ÀuÌAÀuÌYÀAh YÀAhÀ\@0 ÀAHÀBPAÀZüAÀuÌÀ­8À]XY4 ÀAHÀBPAÀZüAÀuÌÀ­8À]XÀ`Y YÀAhÀ[` À­8Às<ÀuÌ ÀF ÀF ÀF Àt4 À­8À]XÀu¼Às< ]Àt4: ÀAHÀBPAÀZüAÀuÌÀ­8À]XÀu¼Às<Y YÀAhÀt4 ÀAhÀuÀ ÀAhÀ[¤ À[¤ÀuÄ ÀAhÀw` Àw` ÀAhÀu¼ AÀu¼ ÀAHÀ­8À]X ÀAHÀ­8Àu¼ ÀAhÀt4 ÀAHÀ­8À]XÀu¼Y YÀAhÀu¼_ ÀAHÀBPAÀZüAÀuÌÀ­8À]XYÀu¼Àu¼ÀuÌYÀu¼ÀAhYÀAhÀAh 1ÀAh YÀAh ]Àu¼Àu¼ÀuÌÀ^] YÀ[ Àt4I ÀAHÀ­8À]XÀu¼YÀt4Àt4ÀuÌYÀt4ÀAhYÀAhÀAhÀu¼À^] ÀAHÀBPÀ­8À]XY ÀBPÀuÌÀ^] YÀ[ Àu¼YÀuÌÀu¼ ÀAhÀuÈ%YÀuÈ%YÀuÈUYÀuÈ%YÀuÈ YÀuÈ%YÀuÈ*uYÀtüYUÀtüÀuÌYÀuÌÀuÌÀ­8ÀtüÀtüYÀuÀuÌÀ­8YÀuÌÀuÌÀuÌÀs<À­8 ]ÀG€ÀG€EaÀG€ÀG€E]eAEEEAE EAE]eAE A ]] ÀG€eAUEU UAUUÀG€ UUUUÀG€ U]U] U]U]]U] ÀG€]]ÀG€ UUYU]ÀuÌ U]ÀuÌ U]ÀuÌÀuÌ eAYÀuÌEYÀuÌ YÀuÌAYÀuÌU]ÀuÌYU]ÀuÌ*eAUÀuÌÀuÌEUÀuÌÀuÌ# UÀuÌÀuÌAUÀuÌÀuÌ}YÀuÌÀG€ÀG€ÀG€U]]UUYU]ÀuÌYU]ÀuÌÀuÌÀuÌ]]> UÀuÌÀuÌÀ­8Às<ÀuÌÀuÌÀuÌYU]ÀuÌÀ­8Às<ÀuÌÀuÌÀuÌ*UÀuÌÀuÌÀ­8Às<ÀuÌÀuÌÀuÌÀGhÀGh ÀGhÀuÌÀGhÀGheAÀGhE AÀGh AÀGhGBMicrosoft.FSharp.Compiler.Formats+FormatItem+Simple@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Formats+FormatItem+_FuncAndVal@DebugTypeProxyÀGp ÀGpÀGt ÀGt(] ] ] ] ÀG€ÀG€ ÀG€ ]ÀuÌ U]ÀuÌ ÀuÌU]ÀuÌ YÀuÌ U UÀuÌÀuÌÀ“À À¬ÔEÀ“ÀÀtüÀsðÀsøÀ“ÈÀsÜ ÀtüÀsðÀ­8ÀsøÀ“ÈÀsÜÀtüÀsøÀ“ÈÀ“ÀÀtüÀuÌÀv ÀH ÀuÌYÀuÌYAÀtüÀtü8AÀtüÀtüYÀtüUYUÀtüÀuÌYÀuÌOuYÀtüYUÀtüÀuÌYÀuÌÀ­8ÀsøYÀtüYÀuÌYÀtü8uYÀtüYUÀtüÀuÌYÀuÌÀ­8YÀtüYÀuÌÀ­8ÀZü ÀHP À`À­8Àkd UÀP +YÀ`À­8ÀkdYUÀP ÀH\ÀHTÀ­8Àkd.ÀuÌYÀuÌÀuàÀuÌÀuÌÀuèÀtüÀuÔÀs<ÀtüÀuÌUÀu¼Àv ]UÀu¼Àv :]UÀu¼YÀuÌYÀuÌÀuÌÀu¼ÀuÌÀuìÀv ]UÀu¼Àv Às<ÀuÌÀH|€ÕYAEE AÀH| ÀH|AÀH| ÀH  AÀH|AÀ¬Ô U,YUAÀH|AÀ¬ÔY À¬ÔEÀsøÀsø ÀtüÀtüYUÀtüYUÀtü UÀtüT YUÀtüYUÀtüÀtüYUÀtüYUÀtüYUÀtüÀtüYUÀtüYUÀtüÀtøÀsøÀsøÀsðÀsðÀtø ÀtüÀv ÀH€ÕYAEE"À­8À“ÈÀH€ÕYAEEÀ¬ÔEÀH\ÀH„ÀtüÀ“ÈÀ¬ÔEÀH\ÀH„À“ÈÀtü UÀtüÀuÌÀuìÀv À¬ÔEÀH\ÀH„À“ÈÀuÌÀsÜÀH€ÕYAEEÀ¬ÔEÀH„ÀtüÀsÜÀtüÀsÜÀsÜÀ¬ÔEÀH\ÀH„ÀsÜÀuÌ EEÀ¬ÔEÀH\ÀH„ÀtüÀv !UYUÀtüYUÀtüYUÀu¼ UYUÀtüYUÀtü UÀu¼ UÀu¼Àv  UÀtüÀv YUÀu¼€” UYUÀtüYUÀtüYUÀtüYUÀtüYUÀu¼YUÀu¼YUÀtüYUÀtüYUÀtüÀtüÀv ÀtüÀ¬ÔEÀH\ÀH„Àv  ÀtüUÀtüUYÀtü]ÀtüEYUÀtüYUÀtüYUÀtüÀtüÀtüYÀtüÀv +UYÀtü]ÀtüÀs<Àv YÀtü Às<Àv +UYÀtü]ÀtüÀs<YÀtüÀv UYÀtü]ÀtüzUYÀtüYÀtüÀuÌYÀuÌÀuàÀuÌÀuÌÀuÔÀuìÀv UYÀtü]Àtü]ÀtüYÀtü]ÀtüÀtü5UYÀtüYÀtüÀs<YÀtüYÀtüÀuÌEUYÀtüYÀtüYÀuÌYÀuÌÀuÌUYÀtüYÀtü8UYÀtüYÀtüÀs<YÀtüYÀtüYÀuÌ,UYÀtüYÀtüÀuÌÀu Àu4ÀuÌ4UYÀtüYÀtüÀs<YÀtüYÀtüÀuEUYÀtüYÀtüYÀuYÀuÀuUYÀtüYÀtü8UYÀtüYÀtüÀs<YÀtüYÀtüYÀuhUYÀtüYÀtüYÀtüYÀtüUYÀtüYÀtüUYÀtüYÀtüYÀtüYÀtü(YÀtüÀs<YÀtüÀuÌYÀuÀs<ÀkdÀtü]À¬ÔEÀH\ÀuÌÀtüÀuÌ À­8Àkd%À¬ÔEÀH\À­8ÀH„ÀuÌÀuÌ3À¬ÔEÀH\À­8ÀH„ÀuÌÀsÜÀ“ÈYÀu€ŠÀuÜÀuÜYÀuÌYÀuÌÀuàÀuàÀuÌÀuÌÀuÌÀuÌÀuìÀuìÀv Àv ÀuÔÀuÔYÀtüYÀtüÀjÀH\ÀuäÀuäÀuÄÀuÄ1 À¬ÔEÀH\À­8ÀH„ÀjÀs<ÀuÌÀuÌE ÀixÀuÌ Àtü€›ÀjÀs<ÀuÌÀuÌÀuèÀuèÀtüÀtüÀuèÀuèÀuèÀuèÀuèÀsøÀsøÀuèÀuØYÀuÌÀu¼ÀuÌÀuØYÀuÌÀuØÀuØÀu¼YÀuÌYÀuÌ0YÀuÌYÀuÌYÀuÌYÀuÌÀuÌÀuÌ?À¬ÔEÀH\À­8ÀH„YÀuÌYÀuÌYÀuÌYÀuÌÀH„$ÀH\À­8ÀH„YÀuÌYÀuÌ-À¬ÔEÀH\À­8ÀH„YÀuÌYÀuÌ/À¬ÔEÀH\À­8ÀH„ÀuÌÀuÌÀuÌÀuÌ À¬ÔE€ê*Às<À`ÀjÀkdÀ­8ÀuÌÀuÌÀuèÀtüÀuèÀuèÀtüÀuØYÀuÌÀu¼ÀuÌÀuØÀuØÀu¼YÀuÌYÀuÌÀuäÀuäÀuÄÀuÄUÀu¼YÀuÌ]ÀuÌ]ÀuÌÀuÜÀuÜÀuàÀuàÀuÌÀuÌÀuÌÀuìÀuìÀv Àv Às<À­8%À¬ÔEÀH\À­8ÀH„ÀtüÀuÌÀ¬ÔEÀ­8]UÀu¼Àv +]UÀu¼Àv ]UÀu¼Àv Àu¼ À¬ÔEÀH\À­8ÀH„ÀuÌ À¬ÔÀHdYÀuÌÀuÌY1)À¬ÔÀHdÀ­8À­8ÀkdYÀuÌE ]ÀHdÀHd ÀZüÀP Àwp U]ÀP ÀwpÀ¬ÔE EÀHd ]ÀHd€› ÀwpYÀP ÀwpU]ÀP ÀwpÀ¬ÔE]ÀP ÀwpÀ¬ÔEÀP ÀwpÀZüU]ÀP ÀwpÀ¬ÔEYÀtüYÀtü]ÀHdÀHd`À¬ÔÀHdÀH\À­8ÀH„À™HÀs<À­8À`ÀkdÀupÀuÌYÀuÌYÀZü]ÀHdE YÀHd ÀuÌÀHd YÀHd4 ]ÀHdYÀHdYÀHdÀHdYÀuÌÀuÌ`À¬ÔÀHdÀH\À­8ÀH„À™HÀs<À­8À`ÀkdYÀuÌÀupÀuÌYÀuÌYÀZüEÀs<YÀZüÀuÌÀuÌÀ¬Ô EK YÀuÌ€Õ]Àut]ÀuÌÀ™HYÀuÌÀs<À­8À`ÀjÀkd À¬ÔÀH\À­8ÀH„ÀupÀHlÀutÀHp%ÀHlYÀuÌÀZüÀutÀHpÀ[ #À¬ÔÀHTÀ­8ÀH„ÀupÀHd]€¨À‘´ €¨À‘´ 1YÀuÌYUÀu¤Àwp ÀwpÀu¤]€¨À‘´ €¨À‘´€òUYÀu¤YÀwpYYÀuÌYÀwpYÀu¤UYÀu¤YÀwpYÀwpYÀu¤u]€¨À‘´ÀwpÀuÌ]€¨À‘´ÀuÌÀwpÀut]€¨À‘´Àw¤ÀxX€¨À‘´À­8À¶pYÀwpYÀuÌYÀuÌYÀuÌÀuÌ,ÀutÀHTÀZü€¨À‘¬À­8Às<À`E\À[ÀZàÀ¶YÀuÌÀu¼À»ˆ]À¶À[ÀuÀÀuÌÀ[€¨À‘¬À­8Às<À`ÀutÀHTÀ­8ÀZüYÀuÌ ÀutÀ[  ]Àut ]Àut!]ÀutÀH€ÕYAEEÀupÀH„ÀutAÀZüAÀZü ÀuÌYÀZü YÀZü YÀZüYÀZü|YÀuÌ€Õ]Àut]ÀuÌÀ™HYÀuÌYÀZüÀ­8Às<YYÀZüÀ^]À]XÀZÀ^ AÀZüAÀZüYÀZüÀH\ÀupYÀtüÀH\ÀupYÀuÌ]ÀuÌYÀuÌ À¬ÔEÀH\ÀH„YÀtüx UÀupÀ­8YUÀupÀ­8x UÀupÀ­8YUÀupÀ­8 UÀupÀ­8>x UÀupÀ­8 YUÀupÀ­8ÀH€ÕYAEEÀ¬ÔÀH\ÀH„ÀtüÀ¬ÔEÀH\ÀH„YÀtüÀs<Àjx UÀupÀ­82À¬ÔEÀH\À­8ÀH„ÀupYÀtüYÀtü€ÕYÀuÌ€ÕYÀuÌ€ÕYÀuÌYÀuÌÀs<À`À­8ÀuÌ€…ÀuÀuYÀuÌYÀuÌÀ™HÀ™HYÀuÌYÀuÌ]ÀuÌ]ÀuÌÀuÌÀuÌÀuÀuÀu(Àu(À­8Àu4Àu4ÀuÌÀuÌ4 À¬ÔEÀH\À­8ÀH„Às<À`À­8ÀuÀupÀuÀuÀupÀupÀuÀuÀuÌÀuÌÀu(Àu(Àu4Àu4ÀuÌÀuÌÀu Àu YÀuÌYÀuÌÀu Àu !Às<ÀjÀ`À­8ÀuÀuYÀuYÀuÀu= À¬ÔEÀH\À­8ÀH„Às<À`À­8YÀuYÀu1YÀuÀs<ÀjÀ`À­8YÀuYÀuUÀs<ÀjÀ`ÀkdÀ­8YÀuYÀuÀH\À­8ÀH„Às<À`À­8YÀu%À¬ÔEÀH\À­8ÀH„ÀtüÀuÀs<À­8Àkd]ÀuÌR Às<À­8À`ÀkdÀs8Àu¼Àt4]YÀuÌYÀuÌÀuÌUÀu¼YÀuÌN Às<À­8ÀkdÀs8Àu¼Àt4]YÀuÌYÀuÌ]EUÀu¼YÀuÌÀs<À­8Àkd?Às<À­8Àkd]UÀuÌÀuÌ]UÀuÌÀuÌÀuÌÀuÌ*À¬ÔEÀH\À­8ÀH„ÀuÌÀuÌÀuÌÀs<À­8ÀkdÀuÌ3 Às<À­8ÀkdÀuÌÀuØYÀuÌÀu¼ÀuÌ1)À¬ÔEÀH\À­8ÀH„ÀuÌYÀuÌ/ Às<À`À­8ÀkdÀuÌÀ]XÀs8Àu¼Àt4YÀP ÀP  ÀKH€¶ AÀuÌAÀuÌÀ¬ÔEAÀuÌAÀuÌÀ¬ÔEAÀOìAÀOèÀ¬ÔE]ÀuÌÀP Às<À`À­8YÀOìYÀOìYÀuÌÀZüÀuÌYÀuÌYÀPU Às<À`À­8YÀOìYÀOìYÀuÌYÀuÌÀZüÀuÌYÀuÌYÀPzÀ¬ÔEÀH\AÀuÌAÀuÌÀ¬ÔEAÀuÌAÀuÌÀ¬ÔEAÀOìAÀOèÀ¬ÔE]ÀuÌÀP À_(ÀuÌYÀuÌYÀuÌ%ÀuÌÀH\ÀuÌÀ­8ÀuÌÀs<ÀuÌÀs<ÀuÌÀuÌÀZ|ÀZ|#ÀuÌÀH\ÀZ|ÀuÌÀ­8ÀuÌE ÀOèÀZ|ÀuÌÀ­8ÀuÌÀuÌÀH\ÀOìÀOèÀ­8ÀuÌÀs<À`ÀuÌ&À¬ÔEÀH\ÀH„ÀOìÀOè À­8ÀuÌ&À¬ÔEÀH\ÀH|ÀOìÀOè ÀOèÀ­8ÀuÌÀuÌ"À¬ÔEÀH\ÀOìÀOèU YÀOìU À¬Ô$UUYÀOìY1Q. À¬ÔÀ`À­8ÀkdÀP ÀZüE YÀPÀZüQ'À¬ÔÀ`À­8ÀkdÀP EYÀP  ÀP  Y€ÁUYÀP YÀP  YÀP  ÀK| ÀP €Á 1€Á€Á1€ÁOYÀP ÀP UÀZüY1YY5€ÁY€Ád À¬ÔÀ]XYÀP À­8UYÀP YÀP UYÀP YÀP EUYÀP YÀP  uÀ­8YÀPYÀP1ÀPYÀP ÀP ÀK` À]XÀ`À­8 ÀP  ÀKd ÀKh ÀKl ÀKp YÀP uÀ­8 ÀP ÀKt ÀP  1ÀPYÀP ÀP YÀOì]À`À­8ÀkdUYÀP YÀP UYÀP YÀP UYÀP YÀP UYÀP YÀP UYÀP YÀP YÀP ÀP UÀZüQuÀ­8YÀPYÀPÀ“ÀÀ­8YÀP YÀP YÀP YÀP1ÀPYÀPYÀP5&À¬ÔÀH\À]XYÀP YÀP Àwpa]UÀuÌÀuÌYÀP Àwp]ÀuÌÀuÌÀP ÀwpYAA]UÀuÌÀuÌBYÀP Àwp]ÀuÌÀ`À­8ÀkdYUÀP  ÀK´ AAAAAAÀH\À­8ÀuÌÀuÌ ÀP  ÀuÌÀuÌ ÀOìÀOìYYÀuÌYÀuÌHÀ`À­8AÀuÌAÀuÌAÀOìAÀOìÀP ÀP E  ÀP ÀP E ÀOìS ÀH\Às<À`À­8AÀuÌAÀuÌAÀOìAÀOìÀP ÀP ES ÀH\Às<À`À­8AÀuÌAÀuÌAÀOìAÀOìÀP ÀP AÀuÌAÀuÌAÀOìAÀOìYUÀP Àwp$ UÀP ÀwpUÀP ÀwpYUÀP ÀwpUÀP Àwp UÀP ÀwpÀP Àwp ÀP ÀwpYUÀP €š AÀuÌAÀuÌAÀOìAÀOìYUÀP ÀwpYUÀP ÀwpÀP ÀwpYUÀP ÀwpYYÀP ÀwpAA1{ U]ÀP ÀwpÀ¬ÔEÀH\YÀP Àwp]ÀuÌÀs<À`À­8ÀkdYÀP ÀwpYUÀP ÀwpEYUÀP Àwp ÀwpE ÀP ÀwpE ÀP ÀwpUÀP Àwp Às<À`À­8ÀkdYÀP ÀwpU]ÀP ÀwpÀ¬ÔEYÀP ÀwpÀP ÀwpYUÀP ÀwpYUÀP ÀwpYUÀP ÀwpYUÀP ÀwpYUÀP ÀwpYUÀP ÀwpÀ¬ÔE]ÀP Àwp]ÀP ÀwpM U]ÀP ÀwpÀ¬ÔEÀH\ÀH„À]XYÀP Àwp]ÀuÌ0 BÀs<À`À­8YÀP ÀwpYÀP ÀwpÀP ÀwpÀH„,À¬ÔÀH\À]XYÀP ÀwpÀuÌ ÀH\ÀH„YÀtüÀkdÀHTÀ­8ÀuÌÀuÌ ]YAÀH|À¬Ô ]Y#ÀH|]Y]YYAÀH|À¬ÔÀkdÀHTÀ­8ÀuÌÀuÌ!ÀkdÀHTÀ­8ÀH„ÀuÌÀuÌÀkdÀHTÀ­8ÀH„ÀupÀkdÀHTÀ­8ÀH„ÀuÌ&ÀkdÀHTÀ­8ÀH„ÀuÌÀuÌÀuÌÀu„Àu€ÀuˆUÀZüYÀuÌ1ƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpEƒñuYÀuÌÀuȃñƒñƒñ€¨]ÀutÀutÀu„ÀuÌÀ¶pYÀuÌ]À¶UÀu¼YÀuÌYÀuÌÀu¼uÀµÌYÀ¼$À¼$À¼$ÀµÌYÀ¼$À»ˆÀ¶YÀtüÀu|ÀuÀÀu€ÀuÈÀuˆMƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpEÀs<À`À­8]ÀutE2ƒõUÀZüYÀuÌuYÀuÌÀuÈÀwpEU]ÀwpYÀwpUÀwpYÀwp1ƒõUÀZüYÀuÌuYÀuÌÀuÈÀwpEU]ÀwpYÀwp ÀwpÀuÌÀwpUÀwpYÀwpÀ¬Ô]Àwp€ÛƒõUÀZüYÀuÌuYÀuÌÀuÈÀwpEÀZüYÀuÌYÀwpYÀuÌYYÀuÌU]ÀwpYÀwpYÀwpYÀwpÀwp]Àwp]ÀwpUÀwpYÀwpUAÀwpÀwpÀwpAÀwpÀwpÀwpbÀ¬Ô]ÀwpÀs<À`À­8ÀupYÀwpƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpEE2ƒùUÀZüYÀuÌuYÀuÌÀuÈÀwpE1ƒùUÀZüYÀuÌuYÀuÌÀuÈÀwpEDƒùUÀZüYÀuÌuYÀuÌÀuÈÀwpEYÀuÌÀuÈXÀ¬Ô]ÀwpÀs<À­8YÀwpƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpEE ]Àwp$ÀHTx UÀupÀ­8ÀH\ÀkdeÀ¬Ô]ÀwpAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀs<À`À­8ÀupYÀwp)Às<À`UÀuÌÀ­8ÀuÌÀ­8ÀH\ÀHTÀkdÀtü$ÀkdÀHTÀ­8YÀtüYÀtüz ÀHTAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌx UÀupÀ­8ÀH\ÀkdYÀuÌYÀuÌYÀuÌÀuÌÀs<À`À­8ÀZüÀuÌ ÀuÌÀsø$ ÀkdYÀuÌYÀuÌÀ­8À­8 ÀkdÀuÌÀuÌÀ­8À­8(Àu ÀkdÀtüÀuÀ­8À­8 Àu À­8À­8 ÀH, ]À­8 ÀH0 Às<ÀkdÀtüÀuÌÀ­8 Às<ÀkdÀuÌÀuÌÀ­8 ÀkdÀ­8 ÀkdÀ­8 ÀkdYÀ­8 ÀHP ÀP UÀP  ÀP ÀP ÀZüQ UÀP (x UÀupÀ­8 x UÀupÀ­8 x UÀupÀ­8[ Às<À`À^AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌx UÀupÀ­8LÀHTÀs<À`À^AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌ(Àj Àj ÀHTÀ­8ÀjÀkd Às<ÀtüÀHdÀHdÀHdÀZüYÀuÌ ÀHdÀ[ eAÀHdE AÀHd AÀHd ÀZüYÀuÌc^Microsoft.FSharp.Compiler.ConstraintSolver+TraitConstraintSolution+TTraitSolved@DebugTypeProxy À[ kfMicrosoft.FSharp.Compiler.ConstraintSolver+TraitConstraintSolution+TTraitSolvedRecdProp@DebugTypeProxy ÀHl ÀHp(€ÕYAEEÀH|€ÕYAEE €ÕYAEE €ÕYAEEeAÀH|E AÀH| AÀH|ÀH| AEE€ÕYAEEÀH„ÀH„ ÀH„ÀH|ÀH„eAÀH„E AÀH„ AÀH„UPMicrosoft.FSharp.Compiler.ConstraintSolver+OptionalTrace+_NoTrace@DebugTypeProxy(ÀH| ÀH| ÀH|VQMicrosoft.FSharp.Compiler.ConstraintSolver+OptionalTrace+WithTrace@DebugTypeProxyÀHŒ ÀHŒ ÀHAÀH|AÀ¬Ô ÀHœ AÀH|AÀ¬Ô AÀH| À¬Ô À¬ÔÀH|AÀH|AÀ¬Ô ÀH AÀH|À¬Ô ÀHœ À¬ÔU ]U.]YAÀH|À¬Ô]YY ]U! Àkd]À­8ÀuÌÀuÌÀ­8 ÀH¨ ÀtüÀ“È ÀH\ÀH„À“ÈÀtü À¬ÔEUÀtü ÀtüÀsÜ ÀH\ÀtüÀv ] ÀH\ÀtüÀv ÀtüÀsøÀsø UÀtü UÀu¼Àu¼ UÀu¼ Àv UÀu¼ Àv UÀtü Àv  UÀtüÀtü ÀtüÀtüÀsðÀsðÀsøÀsø Àtø ÀH\ÀH„Àtü À¬Ô ÀH\À­8ÀH„ÀuÌÀtüÀtøÀH€ÕYAEE' ÀH\À­8ÀH„ÀuÌÀuÌÀ­8Àkd ÀtüÀuì À¬ÔE ÀH\À­8ÀH„ÀuÌÀs<ÀuÀu,Àu0ÀuÀu8ÀuÀu$ ESÀu À­8ÀuÌÀuÀu(Àu,Àu0Àu4ÀuÀu8ÀuÀu$Àu ÀuÀuÀup À¬ÔEÀu& ÀH\À­8ÀH„ÀuÌYÀuÀs<+ ÀH\À­8ÀH„ÀuÌÀ“ÈYÀuÀs< ÀH\À­8ÀH„ÀuÌÀuÌ ÀH\À­8ÀuÌÀuÌÀkdÀH¨ ÀH¨7 ÀH\À­8ÀH„YÀuÌYÀuÌYÀuÌYÀuÌ Às<Àj À¬ÔEÀuÌ ÀH\ÀH„YÀuÌÀ“È À¬ÔÀHdE ÀH\À­8ÀH„Às<ÀuÌ ÀH\À­8ÀH„Às<" ÀH\À­8ÀH„Às<ÀuÌÀuÌ+ ÀH\À­8ÀH„Às<ÀuÌÀuÌYÀuÌ& ÀH\À­8ÀH„Às<ÀuÌYÀuÌ"UYÀuÌÀuÌÀuÌYÀuÌ ÀH\À™HÀ­8]À]Ð]À]ÐÀ]àÀ[  ]ÀHdÀuÌ ÀuÌ ÀH\À­8À`YÀuÌÀwp$UYÀOèÀwpYÀPÀwp(YUYÀOèÀwpYÀPÀwp$YÀOèÀwpYÀuÌYÀuÌ ÀP ÀwpÀZü ÀH\ÀuÌYÀP Àwp$ U]ÀP ÀwpÀ¬ÔEÀH| ÀP ÀwpÀZü. À­8À™HÀs<À­8ÀkdÀP ÀwpÀZü ÀH\À­8ÀH„ÀuÌÀuÌ" ÀH\À­8ÀH„ÀuÌÀuÌÀuÌ" ÀH\À­8ÀH„ÀuÌÀu¼Àv  ÀH\À­8ÀH„ÀuÌ( ÀH\À­8ÀH„ÀuÌÀu¼Àv Àv J ÀH\À­8ÀH„À™HYÀuÌÀs<À­8À`ÀkdYÀuÌÀupÀuÌ€¬YÀuÌYÀZüYÀuÌYÀuÌYÀuÌYÀuÌÀuÌÀuÌYÀuÌYÀuÌYÀuÌYÀuÌ]UÀu¼Àv ]UÀu¼Àv Àu¼Àv Àv ]UÀu¼Àv  ÀH\ÀH„À­8Àup À¬ÔÀHd\ ÀH\À­8ÀH„YÀuÌ€Õ]Àut]ÀuÌÀ™HYÀuÌÀs<À­8À`ÀjÀkd ÀHd1YÀuÌÀupÀuÌYÀuÌYÀuÌÀuÌÀuÌ À¬ÔE ÀwpÀu¤ À‘”À‘´ Àup]Àut! À­8À^À^ ]À]XÀZ AÀZüAÀZü YÀZüYÀZüYÀZü ÀH\ ]ÀtüÀuÌ ÀH\ÀH„ À¬ÔÀtü ÀH\ÀH„YÀtü x UÀupÀ­8  EUÀupÀ­8) x UÀupÀ­8 YUÀupÀ­8 ÀH\ÀH„UÀupÀ­8 ÀupÀ­8 À¬ÔUÀupÀ­8 ÀupÀs<Àj UÀupÀ­8 ÀH\ 4 ÀH\À­8ÀH„ÀupÀs<Àjx UÀupÀ­8+ YUÀupÀ­8ÀH€ÕYAEE ÀH\À­8ÀH„Àup À¬ÔEÀtü ÀH\À­8ÀH„ À¬ÔEÀuÌÀuÌ €ÕYÀuÌ ÀH\À­8ÀH„Às<ÀuÌ! ÀH\À­8ÀH„Às<YÀuÌ ÀH\ÀH„À­8ÀuÌÀuÌ( ÀH\À­8ÀH„Às<À`À­8Àu À¬ÔEÀu5 ÀH\À­8ÀH„Às<À`À­8YÀuYÀu ÀuÀs<ÀjÀ`À­8 Às<ÀjÀ`À­8Àu ÀtøYÀu* ÀH„ÀtüÀs<ÀjÀ`À­8YÀuC YÀuÀs<ÀjÀ`À­8ÀtøYÀuÀH€ÕYAEEB À­8ÀH„ÀtüÀuÀs<ÀjÀ`ÀkdÀ­8YÀuYÀu À¬ÔEÀuÌÀtü À`À­8À]X AÀOìAÀOèÀ¬ÔE ÀK' AÀOìAÀOèÀ¬ÔEÀ­8 ÀP YÀOè ÀOìÀOè À¬ÔEÀP ÀK' AÀOìAÀOèÀ¬ÔEÀuÌAÀOìÀOè À¬ÔEÀOèAÀOèÀ¬ÔE ÀK AÀOèÀ¬ÔE ÀOè À¬ÔEYÀOè ÀK 0 AÀOìAÀOèÀ¬ÔEÀP Às< ]YÀOè YÀOèÀuÌAÀOèÀ¬ÔE À¬ÔEÀOì ÀK$" AÀOìAÀOèÀ¬ÔE ÀOð À¬ÔEÀOð ÀK( ÀOð ÀK,, AÀOìAÀOèÀ¬ÔEÀ`À­8 UÀuÌ ÀP UÀuÌQÀOôÀOèUÀuÌÀOüYÀuÌÀZüÀuÌÀPÀ[`ÀPÀ[ ÀtÈÀOô À¬ÔEÀP ÀK09 AÀOìAÀOèÀ¬ÔEÀ`À­8YÀP ÀP ÀuÌÀOìAÀuÌAÀuÌÀ¬ÔE@ AÀuÌAÀuÌÀ¬ÔE]ÀuÌÀs<YÀOìÀZüÀuÌ ÀOìÀuÌ]ÀuÌYÀuÌ ÀK< AÀuÌAÀuÌÀ¬ÔEAÀOìAÀOèÀ¬ÔE]ÀuÌÀP Às<À`À­8YÀOìÀZüÀuÌYÀP ÀP ÀK@ ÀKD ÀKH ÀH\À­8ÀuÌÀuÌ À­8ÀuÌÀs<À`ÀuÌ À`UÀu¼YÀuÌYÀuÌ ÀK` ÀP  ÀKd0À`À­8 YÀP ÀKt ÀP ÀP ÀKx ÀP €ÁÀP  À]XÀs<À`À­80À`À­8À]X ÀP Àwp ÀH\ÀH| ÀH|E AEÀH| ÀH\AEÀH| AEÀH|Àwp À¬ÔEÀOìÀOèÀwp ÀH\]ÀuÌÀ­8ÀH„AEÀH| À¬ÔEÀH|ÀP Àwp ÀH\ÀH|AA ÀK´ ÀH\À­8 ÀuÌÀuÌ ÀH\Às<Àt5]Àu¼]Àu¼Àu¼]ÀtÀt4]ÀtÀt ÀH\Às<À­8ÀuÌÀuÌ ÀOìÀOìUÀP ÀwpO ÀH\Às<À`À­8AÀuÌAÀuÌAÀOìAÀOìUÀP Àwp UÀP Àwp UÀP ÀwpS ÀH\Às<À`À­8YUÀP ÀwpAÀuÌAÀuÌAÀOìAÀOì]UÀP Àwp( ]UÀP ÀwpUÀP Àwp ÀP ÀwpUÀP Àwp ÀZüQ ÀP Àwp& ÀH\]ÀuÌÀ­8ÀP Àwp À¬ÔEÀH| À¬àE À¬àEUÀP Àwp]UÀP ÀwpÀ¬ÔEÀ¬àE$ ]UÀP ÀwpÀP Àwp ÀH\ÀH„ ÀH\ÀH„À­8 ÀH\ÀH„* ÀH\ÀH„]ÀuÌÀ­8ÀP Àwp ÀH\ÀH„ ÀH\À­8ÀH„UÀupÀ­8 ÀH\ UÀupÀ­8! ÀH\ÀH„ x UÀupÀ­8ÀH€ÕYAEE( x UÀupÀ­8YUÀupÀ­8 ÀkdÀHTÀ­8ÀuÌÀuÌ ÀkdÀHTÀ­8ÀH„Àup ÀkdÀHTÀ­8ÀH„ÀuÌ! ÀkdÀHTÀ­8ÀH„ÀuÌÀuÌ& ÀkdÀHTÀ­8ÀH„ÀuÌÀuÌÀuÌ À` ÀwpÀwpÀuÌ Às<À`À­8ÀupYÀwp2ƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpE2ƒýUÀZüYÀuÌuYÀuÌÀuÈÀwpE1ƒýUÀZüYÀuÌuYÀuÌÀuÈÀwpErƒñUÀZüYÀuÌuYÀuÌÀuÈÀwpE]ÀutƒýUÀZüYÀuÌuYÀuÌÀuÈÀwpEÀwp À¬Ô]Àwp ÀtüÀuÌÀ­8ÀH\ ÀkdÀtüÀs<ÀuÌÀ­8$ ÀkdÀHTÀ­8YÀtüYÀtü4 AÀxèAYÀuÌAÀ­8UÀwpÀuÌÀuÀ À­8ÀuÌÀH\ÀuÌ À¬ÔÀÀàÀÀà ÀÀàÀÀìÀÀè$ÀÀàÀÀàAÀÀàAÀÀàÀÀàA ÀÀìÀÀàAEÀÀà ÀÀè$ÀÀàAEÀÀàÀÀà%AYUÀtüÀuÌAÀwpÀwpAÀtüÀuÌUÀwpÀu¤YUÀtüÀuÌAYUÀtüÀuÌÀwpe Àu¤Àj¤ÀwpÀu¤AYUÀtüÀuÌAÀwpÀwpÀwpYÀuÌ€ÕAÀtüÀuÌYÀuÌ2UÀu¤ÀwpÀs<À`YÀtüÀMpÀ­8ÀMx0ÀwpÀu¤AYUÀtüÀuÌAÀwpÀwp3ÀwpÀs<YYÀuÌYUÀtüÀuÌÀMxÀMŒÀM„ÀMÀM”ÀM˜ÀMœÀM ÀM¤VÀMŒÀMŒÀM„ÀM„ ÀMÀMÀM”ÀM”ÀM˜ÀM˜ÀMœÀMœÀM ÀM ÀM¤ÀM¤ ÀM„ÀM„.AAÀuÌÀwpAAYÀuÌYÀwpÀM¨AAÀuÌÀwp AYÀuÌYÀwpAYÀuÌYÀwp€ˆAAÀuÌÀwpAAYÀuÌYÀwpÀMÀM”YÀuÌÀM„ÀM˜Àu¼YÀwpYÀuÌÀt4ÀMœÀuÄÀM ÀuÌÀM¤ÀM¨$ÀwpÀs<À­8ÀM„AÀuÌÀwp-YÀwpÀs<À­8AÀuÌÀwpYÀuÌ €ÁÀv| YÀv| Àw(Àv| YÀv| 1Àv| €ÁÀv|Y1 Àv| 1  Àv| 1  Àv| Àv| 1   Àv| 1 Àv| 1 Àv| 1     Àv| 1     Àv|'€ÁÀv|YÀv|]Àv|]Àv|!ÀwpÀ­8ÀuÌYÀw(Àv|EAÀuÌÀwpAÀuÌÀwpÀs<À­8ÀwpÀs<À­8ÀM„YÀw(ÀvÀ ÀwpÀwpÀwp ƒÅƒÅ€À&Àw|ÀuÀÀwpÀw|Àw|Àw|Àw|Àw|Àw¤ÀwüÀw¤ÀwüYÀuÌÀwðÀ­8YÀwpYÀwpÀu¼Àu¼Àw¤ÀwøÀw¤ÀwøÀuÄÀuÄÀwxÀwxÀuÌÀv|Àv|Àv¼Àv¼ÀvÀÀvÀƒÅƒÅÀwpÀs<ÀwpÀwpÀMä ÀMÌÀwp ÀMÌ0 ]UYÀwpÀwpYÀwpÀMä$]UÀs<ÀkdÀ­8YÀMÌ YÀN| YÀN|YÀN|YÀN|ÀM„ÀM„YÀN|ÀMxUÀMxÀLø#YÀN|YÀN|ÀLøÀMxÀM„UÀMxÀLøÀM„YÀN|ÀN|YÀN|YÀN|ÀN|ÀM„YÀN|ÀM„YÀN|ÀM4ÀMÀMÀM$ÀM ]Àw(lÀM4ÀuÌÀuÌÀMÀu¼ÀMÀv|ÀMYÀuÌÀuÄÀM$YÀLøÀMÀwpÀŸP]UÀuÀYÀuÌ']Àw(Às<YUÀtüÀuÌÀLø Àv|Àw(€ÒÀw0Àw0ÀuÄÀuÄÀw4Àw4Àw8Àw8Àv|Àv|Àw<Àw<ÀuÌÀuÌÀuÌÀuÌÀw@Àw@]UÀuÀYÀuÌ]UÀuÀYÀuÌ]UÀuÀYÀuÌ]UÀuÀYÀuÌÀuÀÀuÀYÀuÌYÀuÌÀs<Àw(Àw(Àw<Àw<ÀuÌÀuÌÀs<À`À­8Àw(Àw( U]UYY A] U] U] UYY:YYU]UYYY];UYY]A]AU]YÀv|€€ Àw@Àw@]UÀuÀYÀuÌ]UÀuÀYÀuÌ]UÀuÀYÀuÌ]UÀuÀYÀuÌÀuÀÀuÀYÀuÌYÀuÌYÀN|YÀN|ÀN|ÀN|YÀN| YÀN€ YÀN€YÀN€YÀN|ÀN|YÀN€]YÀw$ ]YÀw$ YYÀw$€›%]YÀw$YÀw$YÀw$YÀw$Àw$YÀw$Àw$Àv|Àv|ÀvˆÀvˆÀvÀvÀv˜Àv˜ÀvŒÀvŒÀv”Àv”ÀvœÀvœ Àv¸Àv¸%YYÀw$]YÀw$YÀw$AÀw$AÀw$ YÀw$Àw Àw$ÀwX YÀw$ÀwYÀw$]ÀwYÀw$YÀw$Àw$Àw8Àv|AÀw$AÀw$/Àw]Às<ÀwpYÀw$]ÀwÀ­8 UYÀN|ÀiˆÀwpÀN€)YÀN€YUYÀN|ÀiˆÀwp ÀLøÀMÀLøÀŸPÀMYÀLøÀLøÀMpÀM ÀMÀM ÀM(€€ÀMYÀuÌÀLøÀ­8ÀwpÀŸP]UÀuÀYÀuÌÀMÀMpÀM YÀLøÀMÀM ÀMÀu¼ÀM$ÀuÌÀMÀuÄÀM( ÀLøÀLøYÀLøYÀLøÀMt ]ÀMt€Õ]ÀMtÀ­8ÀwpÀwXÀMtD ÀMtÀs<ÀkdÀ­8ÀLðÀu¤ÀuÌÀjx€Õ]ÀMtYÀMÌE ]ÀMt ]ÀMtB ÀMtÀs<ÀkdÀ­8ÀLðÀu¤ÀuÌÀjx€Õ]ÀMtYÀMÌJ ÀMtÀs<ÀkdÀ­8ÀLðÀu¤ÀuÌÀjx€Õ]ÀMtÀMtYÀMÌUYÀN¬YÀN€ YÀN¬U]Àwp]Àw\UYÀw$YÀw(UYÀN¬YÀN€U]Àwp]Àw\UYÀw$YÀw(€»YÀN€ÀiˆÀwpYÀN€ÀN|ÀMxÀM„UYÀN¬YÀN€YÀN¬YÀN€U]Àwp]Àw\]Àwp]Àw\UYÀw$YÀw(YÀw$]ÀwÀwpÀw]Àw\€…ÀwÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀMÌYÀN€ YÀMÌ:YÀu¤ÀMtYÀwpÀw]Àwp]ÀwpÀwpÀ­8€’ÀwÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀMÌÀiˆÀwpYÀN€ ÀN¬ÀN€€’UYÀN¬YÀN€Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN€ÀM„ YÀN¬gYÀN¬Àw@YÀuÌÀwpÀ­8ÀŸP]UÀuÀYÀuÌÀuÌUÀu¤ÀwpÀwpÀu¤ÀwpÀwpIU]Àwp]Àw\Às<Àu¤YÀtüAÀMxÀwpYÀN¬ÀMxEK YÀN¬Àw<ÀuÌÀ­8ÀuÌYÀN¬UÀu¤ÀwpÀwpÀu¤ÀwpÀwp€’U]Àwp]Àw\Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN¬ÀMx YÀw( YÀw(ÀN¬Àw$€²UYÀw$YÀw(Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN€ÀM„YÀMÌÀMxYÀN¬]Àwp ]Àw( Àw('YÀN|ÀLø]Àw(]Àw(Àw(7Às<À`À­8AÀLø]Àw(ÀM„YÀw(ÀN€ YÀw( YÀMÌ Àw$Àw( ]Àw ÀN€YYÀw(YÀw(Àw8Àv„YÀw(YÀw(YÀN€YÀMÌÀw8Àw0ÀuÄÀu¼€—]ÀwÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN€ÀM„YÀMÌYÀw$AAÀLøÀN| ÀNàL UÀwpÀu¤AAYUÀtüÀuÌAÀwpÀwpAAÀM„ ÀLøÀN|AAÀLøÀN|YÀN|€àYÀN€Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpÀiˆÀwpUÀwpÀu¤AAYUÀtüÀuÌAÀwpÀwpYÀN|YÀLøAAÀM„ ÀNä& Às<À­8]ÀwpYÀuÌÀ­8LAAYUÀtüÀuÌAÀwpÀs<À­8]ÀwpYÀuÌÀ­8 ÀNì Às<À­8]ÀwpYÀuÌFAAYUÀtüÀuÌAÀwpÀs<À­8]ÀwpYÀuÌ ÀM„ Àwp7ÀMYÀuÌÀLøÀ­8ÀŸP]UÀuÀYÀuÌ€»YÀN€Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwp]ÀwpÀN€ÀM„Àw(ÀiˆÀwpUÀwpÀu¤ÀLøYÀN|E€—AÀN€YÀN€Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwp]Àwp]ÀwpÀN„ AÀM„*AAYUÀtüÀuÌAÀwpÀwp`ÀN|ÀM„UÀwpÀu¤AÀM„AÀM„AAYUÀtüÀuÌAÀwpÀwpÀLø ÀO$? Às<À­8AYUÀtüÀuÌAÀwpÀwpYÀuÌÀuÈiAAYUÀtüÀuÌAÀwpÀwpÀs<À­8AYUÀtüÀuÌAÀwpÀwpYÀuÌÀuÈUYÀN|ÀiˆÀwpUÀwpÀu¤*AAYUÀtüÀuÌAÀwpÀwpAÀM„AÀM„ÀM,#€ÕYUYÀN|ÀiˆÀwpUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwpWAAÀM„AÀM„AAAYUÀtüÀuÌAÀwpÀwpAAÀLøÀN|@AAÀM„AÀM„AAYUÀtüÀuÌAÀwpÀwp AAÀLøÀN| ÀtÈÀuÈ ÀLøÀuÈÀN| ÀLøUYÀN|ÀiˆÀwp"€ÕYUYÀN|ÀiˆÀwp UYÀN|ÀiˆÀwpñ*YÀN|ÀiˆÀwpUYÀN|ÀiˆÀwpÀMxÀM„ÀLøUÀwpÀu¤AYUÀtüÀuÌAÀwpÀwp}ÀMÀMpÀLøÀ­8UÀu¤ÀwpÀu¤ÀwpÀiˆÀwpÀM YÀuÌYÀLøAAYUÀtüÀuÌAÀwpÀwpAÀM„AÀM„ÀM(Àu¼ÀM ÀMÀM,€ÕYUYÀN|ÀiˆÀwpÀM]UÀuÀYÀuÌ ]UÀuÀYÀuÌÀuÀÀN|AAYUÀtüÀuÌAÀwpÀwpAÀM„AÀM„AAYUÀtüÀuÌAÀwpÀwpAÀM„AÀM„€©YUYÀN|ÀiˆÀwpÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpÀN|UYÀN|ÀiˆÀwpDAÀN|AUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwp$ ÀN|YUYÀN|ÀiˆÀwp^AÀN|AUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwpUYÀN|ÀiˆÀwp€©YUYÀN|ÀiˆÀwpÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN|YÀN|ÀiˆÀwp€Õ]ÀMtÀMt%UAÀMxÀwpAÀLø]Àw(AÀLø]Àw(AÀMxÀwpÀLðYYÀN€ ÀMt$UAÀMxÀwpAÀLø]Àw( ÀMtYÀN€ 1YÀN€Àjx€Õ]ÀMtÀMtUAÀMxÀwpAÀLø]Àw(YÀuÌYUÀtüÀuÌAÀLø]Àw(AÀMxÀwpÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN€YYÀN€ÀwYÀwX€íU UÀwYÀwXÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüYÀMtÀuÌÀuÌ8 ÀMtUYÀMtYÀMtUYÀMtYÀMt8UYÀMtYÀMtYÀMtYÀMtYÀMtÀMtS UÀwYÀwXÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀuÌYÀMt1UÀwYÀwXYÀwXÀwÀwpÀ”ÄÀMt\ UÀwYÀwXÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀuÌYÀMtYÀMt ÀMtÀMtA YÀMtÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀuÌT UÀwYÀwXÀs<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüYÀMtÀuÌÀuÌ4  (]U ]UÀ­8 ]U ]U ÀLè ÀLìÀLðÀLðeAÀLðE AÀLð AÀLð ÀLð ÀLð ÀLðÀLðÀLøÀv|À­8 ÀLøÀ­8ÀLøÀLøÀMpÀ­8ÀLøYÀLøÀ­8@ÀLø€áÀwpYÀuÌ]UÀuÀYÀuÌÀŸPÀLøÀ­8#ÀLøÀuÄYÀuÌYÀLøÀ­8ÀLøÀu¼YÀLøÀ­8ÀLøYÀLøYÀuÌÀ­8ÀLøYÀLøÀuÌÀ­8#ÀLøÀu¼YÀuÌYÀLøÀ­8ÀLøÀ­8ÀLøÀuÌÀuÌ]ÀMpÀ­8eAÀLøE AÀLø AÀLø Àv|À­8KFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_const@DebugTypeProxyJEMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_wild@DebugTypeProxy(ÀLø(ÀMp ÀLøÀMpÀ­8 ÀLø ÀMpHCMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_as@DebugTypeProxy (YÀLø YÀLøÀ­8 YÀLøKFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_disjs@DebugTypeProxyKFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_conjs@DebugTypeProxy1(€áÀwpYÀuÌ]UÀuÀYÀuÌÀŸP0€áÀwpYÀuÌ]UÀuÀYÀuÌÀŸP< €áÀwpYÀuÌ]UÀuÀYÀuÌÀŸPÀLøÀ­81 €áÀwpYÀuÌ]UÀuÀYÀuÌÀŸPKFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_query@DebugTypeProxy ÀuÄYÀuÌYÀLøÀ­8OJMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_unioncase@DebugTypeProxy Àu¼YÀLøÀ­8OJMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_exnconstr@DebugTypeProxy YÀLøYÀuÌÀ­8KFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_tuple@DebugTypeProxy  YÀLøÀuÌÀ­8KFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_array@DebugTypeProxy   Àu¼YÀuÌYÀLøÀ­8JEMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_recd@DebugTypeProxy(  À­8 KFMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_range@DebugTypeProxyJEMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_null@DebugTypeProxy (]ÀMp   ]ÀMp ÀuÌÀuÌ]ÀMpÀ­8 ]ÀMpLGMicrosoft.FSharp.Compiler.Patcompile+Pattern+TPat_isinst@DebugTypeProxy ÀMÀM ÀM ÀM ÀM  ÀM ÀM ÀM ÀM ÀM  ÀM$ ÀM( ÀM,ÀM0 ÀM0 ÀM4ÀMpÀu¤Àj¤ Àu¤Àj¤eAÀMpE AÀMp AÀMp (]Àwp(ÀwXÀMtÀLø]ÀwpÀwXÀ­8 ÀLø]ÀwpÀwXÀ­8 ]Àwp ÀwXeAÀMtE AÀMt AÀMt&(AYUÀtüÀuÌAÀwpÀwp(UÀwpÀu¤9ÀMxAYUÀtüÀuÌAÀwpÀwpUÀwpÀu¤5 AYUÀtüÀuÌAÀwpÀwpUÀwpÀu¤& AYUÀtüÀuÌAÀwpÀwp UÀwpÀu¤eAÀMxE AÀMx AÀMx Às<À`Àj¤€Õ ÀM„ÀM„ ÀM„ÀM„ÀM„ÀM„YÀuÌÀM„ÀM„Àu¼YÀuÌÀM„ÀM„ÀuÄYÀuÌÀM„ÀM„ÀuÌÀM„ÀM„Àu¼ ÀM„ÀuÌeAÀM„E AÀM„ AÀM„(ÀM„ ÀM„  ÀM„GBMicrosoft.FSharp.Compiler.Patcompile+Path+PathQuery@DebugTypeProxy ÀM„FAMicrosoft.FSharp.Compiler.Patcompile+Path+PathConj@DebugTypeProxy ÀM„YÀuÌGBMicrosoft.FSharp.Compiler.Patcompile+Path+PathTuple@DebugTypeProxy ÀM„Àu¼YÀuÌFAMicrosoft.FSharp.Compiler.Patcompile+Path+PathRecd@DebugTypeProxy ÀM„ÀuÄYÀuÌMHMicrosoft.FSharp.Compiler.Patcompile+Path+PathUnionConstr@DebugTypeProxy ÀM„ÀuÌGBMicrosoft.FSharp.Compiler.Patcompile+Path+PathArray@DebugTypeProxy ÀM„Àu¼KFMicrosoft.FSharp.Compiler.Patcompile+Path+PathExnConstr@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Patcompile+Path+PathEmpty@DebugTypeProxy ÀMŒ ÀM ÀM” ÀM˜ ÀMœ ÀM  ÀM¤ ÀM¨ÀMÌÀMÌÀMÌÀM„YÀw(ÀMÌÀMÌeAÀMÌE AÀMÌ AÀMÌ (YÀw( ÀM„YÀw( YÀw(XSMicrosoft.FSharp.Compiler.Patcompile+RefutedSet+RefutedInvestigation@DebugTypeProxyVQMicrosoft.FSharp.Compiler.Patcompile+RefutedSet+_RefutedWhenClause@DebugTypeProxyÀMÔ ÀMÔÀMØ ÀMØ ÀMä# YÀwpAÀuÌÀwpYÀuÌ% Às<À­8AÀuÌÀwpYÀuÌ À­8YÀuÌÀu¼YÀwp À­8ÀuÄYÀuÌYÀwp" Às<À­8AÀuÌÀwpÀuÌ À­8Àu¼YÀwp À­8AÀuÌÀwp ÀwpÀuÌÀw8 ]Àv|Àw( €ÁÀv| Àv| Àv| Àv| Àv| Àv|  Àv| Àv| Àv|  Àv| ƒÅ ]ÀuÄÀw0 ]ÀuÄÀw( ÀuÄ Às<YÀuÄAÀuÄAÀuÄ$ Às<À­8YÀw(AÀuÌÀwp Àw(ÀuÄ ÀuÄgYÀw(Àw8YÀw(Àv|Àw0ÀuÄYÀuÌYÀuÄÀu¼YÀuÄYÀuÄÀuÄÀt4Àw4ÀuÌÀMÔÀM„YÀw( YÀwpÀMÌ ÀMÌ(ÀMxÀN|ÀM„ÀMxÀLø ÀM„ÀMxÀLø ÀMxeAÀN|E AÀN| AÀN| (YÀN|ÀN€YÀN|ÀiˆÀwp YÀN|ÀiˆÀwp YÀN|eAÀN€E AÀN€ AÀN€(Àw(ÀN„Àw(ÀM„ Àw(ÀM„ Àw(eAÀN„E AÀN„ AÀN„`Àv|Àv|ÀvˆÀvˆÀvÀvÀv˜Àv˜ÀvŒÀvŒÀv”Àv”ÀvœÀvœ Àv¸Àv¸ Àw$Àw$ ÀwpÀ­8 ÀwYÀw$Àw Às<ÀwpÀ­8uÀu¤ÀwpÀw\uÀu¤ÀwpÀw\1ÀwÀw(uÀu¤ÀwpÀw\ÀwpÀw8Àv| ÀwÀw$ÀwYÀN|ÀiˆÀwp ÀN€UYÀN|ÀiˆÀwp ÀLø ÀLøÀLøÀN¬Àw(À­8 Àw(À­8eAÀN¬E AÀN¬ AÀN¬ Àjx EÀMt, Às<YÀtüYÀuÌYUÀtüÀuÌ ÀwpÀMx Às<YUÀtüÀuÌ ]Àw(ÀLø ÀiˆÀwp ]Àwp Às<AÀLø]Àw(ÀM„ ]ÀN¬U]ÀN¬ ]ÀN¬1YÀN|ÀLø]Àw(]Àw(Àw(]ÀN¬ U]ÀN¬]ÀN¬ÀN€ Às<À`À­8Àw( Àw(€” Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpYÀN€ÀM„YÀMÌÀMx]ÀwpÀN„ ÀN€ÀN€€ŸÀ­8Àw(U]Àwp]Àw\Àw0ÀuÄYÀuÌUÀu¤ÀwpÀwpÀu¤ÀwpÀwp]Àw\]ÀwpÀw(Àw@ÀŸPÀN„YÀN€ÀwÀw]Àw\& UYÀw$YÀw(YÀw(ÀN¬ Àw(Àw$2 Às<À`À­8AÀLø]Àw(ÀM„YÀw( ÀN€AAÀM„ ÀNàÀMx ÀN|ÀLø ÀNäÀuÄ ÀwpYUÀtüÀuÌ ÀM„ÀM„ ÀNì ÀwpYUÀtüÀuÌL À­8]ÀwpAYUÀtüÀuÌAÀwpÀwpÀuÄYÀuÌYÀuÌ]ÀwpÀwp ÀwpYUÀtüÀuÌÀwp ÀuÄYÀuÌ6 Às<À­8AYUÀtüÀuÌAÀwpÀwpÀuÌ ÀuÌYÀLø1 À­8AYUÀtüÀuÌAÀwpÀwpÀu¼? Às<À­8]ÀwpAYUÀtüÀuÌAÀwpÀwpÀuÌ ÀwpYUÀtüÀuÌÀwp€† Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwp]Àwp]ÀwpÀN„UÀMxÀLøA(ÀM„Àw(ÀiˆÀwpYÀN|UÀMxÀLøUÀwpÀu¤ÀLøAYUÀtüÀuÌAÀwpÀwpYÀN|ÀMÀuÄYÀuÌYÀLøÀw0ÀuÄYÀuÌÀM$ÀuÌÀw4ÀMÀu¼Àw<ÀuÌÀM4]ÀMpÀuÌ]ÀMpÀMpAYUÀtüÀuÌAÀwpÀwpUÀu¤ÀwpÀu¤ÀwpÀiˆÀwpÀMÀv|Àw8Àv| YÀN€ÀN€ ÀM„UÀwpÀu¤ ÀO ÀM„UÀwpÀu¤ÀOZAAÀM„AÀM„AAAYUÀtüÀuÌAÀwpÀwpAAÀLøÀN|ÀO ÀOÀOL ÀN|AÀM„AÀM„AAYUÀtüÀuÌAÀwpÀwpÀLø5 À­8AYUÀtüÀuÌAÀwpÀwpYÀuÌ ÀO$ ÀwpYUÀtüÀuÌÀwp YÀuÌÀu¼R Às<À­8ÀM„UÀwpÀu¤AYUÀtüÀuÌAÀwpÀwpYÀuÌÀu¼ ÀN|ÀLøÀuÈ€’ Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwpUYÀN|ÀiˆÀwpÀMxÀM„$ YUYÀN|ÀiˆÀwpÀLø' AYUÀtüÀuÌAÀwpÀwp' AYUÀtüÀuÌAÀwpÀwpo Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwp= YUYÀN|ÀiˆÀwpÀN|UYÀN|ÀiˆÀwpF AÀN|AUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwpCAÀN|AUYÀN|ÀiˆÀwpYUYÀN|ÀiˆÀwp4 UYÀN|ÀiˆÀwpUYÀN|ÀiˆÀwpA YUYÀN|ÀiˆÀwpÀN|YUYÀN|ÀiˆÀwpt Às<ÀkdÀ`À­8À­8ÀLðÀu¤YÀtüÀuÌÀuÌÀjx€Õ]ÀMtÀMtAÀLø]Àw(AÀMxÀwp YÀN€ÀMt €í ÀMt]ÀwpÀwXÀLøÀ­8 YÀMtÀMt€—ÀuÌÀuÌÀuØÀuØÀu¼Àu¼YÀuÌYÀuÌÀuäÀuäÀuÄÀuÄ]ÀuÌ]ÀuÌÀuÜÀuÜÀuàÀuàÀuÌÀuÌÀuÌÀuÌÀuìÀuìÀv Àv Às<À`À­8ÀuÌÀuÌ ÀO€ Às<À­8 ÀO„\ÀuÌÀuÌÀuÜÀuÜYÀuÌYÀuÌÀuàÀuàÀuÌÀuÌÀuÌÀuÌÀuØÀuØÀu¼Àu¼Às<À­8ÀuÌÀuÌÀOxtÀuÌÀuÌÀOx]ÀuÌ]ÀuÌÀuÜÀuÜYÀuÌYÀuÌÀuàÀuàÀuÌÀuÌÀuÌÀuÌÀuØÀuØÀu¼Àu¼"Às<À`À­8ÀuÌÀOxÀuÌ ÀuÌÀs<À`ÀuÌÀ­8ÀuÌPÀuÀuÌÀ­8ÀuÀu ÀuÀu,Àu0Àu(Àu4ÀuÀu8Àu$ÀuÀu &UÀuÌÀ­8Às<À`ÀuÌÀuE ÀuUÀuÌÀ­8À­8UÀuÌÀ­8ÀuÌUÀuÌÀ­8Às<À`Àtü!UÀuÌÀ­8ÀuÌÀsøÀsøÀuÌÀs<À`Àtü,YÀuÌÀs<YUÀtüÀuÌYÀuÌ+YUÀtüÀuÌÀs<YUÀtüÀuÌ"YÀuÌÀs<YÀtüYÀuÌ;Àw¬YÀtüÀwp€„Àtü€ÅÀtüYÀtüYÀuÌÀwpÀs<À`ÀwpuYYÀu¤ÀwpÀuÌuYYÀu¤ÀwpÀuÌBÀw„YÀu¤ÀuÌÀwpuYYÀu¤ÀwpÀuÌYYÀu¤(uYYÀu¤ÀwpÀuÌÀwpÀuÌ.€á]Àu¤]Àu¤YYÀu¤ÀwpÀuÌTÀw„YÀu¤ÀuÌ]Àu¤]Àu¤ÀwpuYYÀu¤ÀwpÀuÌYYÀu¤E€á]Àu¤]Àu¤YYÀu¤ÀwpÀuÌÀs<À`ÀwpÀuÌ/€á]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ;]€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ€œYÀwlÀs<À`uYÀtüÀwpÀuÌÀwˆYÀtüÀuÌÀwp€á]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYYÀu¤ÀuÌ]Àu¤Àwp]Àu¤V]€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌÀs<À`ÀwdÀwpÀuÌ<]€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ9 €YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ?]€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌR€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌÀs<À`ÀwdÀwpÀuÌUYYÀu¤Àwp" YÀu¤UYYÀu¤ÀwpYYÀu¤4UYYÀu¤ÀwpÀs<YYYÀu¤ÀwpUYYÀu¤Àwp€“ €YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYYÀu¤YÀtü]Àu¤ÀuÌÀwp]Àu¤YAAUYYÀu¤ÀwpM€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌÀs<À`ÀwdÀwp ÀZœÀOì'YYÀOìÀ`À­8ÀZüYÀuÌYYÀOìLY€ÀPYÀPYÀPYÀPYÀOìYÀOì ÀPlD À^AÀ­8AÀZüYÀuÌÀ­8À]XÀZüÀs<À`ÀuÌp UYÀOèYÀPYÀOì€ÀPYÀPYÀPYÀPYÀOìYÀOì ÀPpR €ÀPYÀPYÀPYÀPYÀOìYÀOìÀP ÀPtR €ÀPYÀPYÀPYÀPYÀOìYÀOìÀP ÀPxR €ÀPYÀPYÀPYÀPYÀOìYÀOìÀP ÀP| ÀP€N €ÀPYÀPYÀPYÀPYÀOìYÀOìÀOì ÀP„ ÀP ÀZüYÀuÌYÀuÌYÀuÌYÀPÀuÌYÀP]À[´YÀPYÀPYÀOìYÀOìiÀs<À`ÀuÌYYÀOìY€ÀPYÀPYÀPYÀPYÀOìYÀO쀄 ÀP À^AÀ­8AÀZüYÀuÌÀ­8À]XÀZüYÀuÌYÀuÌ]À[´YÀuÌYUYÀOèYÀP ÀOìYYÀOìÀ]XÀtTÀ­8À^ÀkdÀt4Às<EÀs<À`ÀtTÀ^ÀkdÀt4ÀOx$]ÀuÌÀs<À`À­8ÀuÌÀuÌ ]ÀOÜ6YÀZü]ÀOÜ€¥YÀOØYÀZüYYCUYÀZüYÀZüÀ^À]XÀ“ÀÀ­8UÀuÌ]ÀOÜÀš ]ÀOÜ6YÀ[´À^À]XÀ“ÀÀ­8UÀuÌ]ÀOÜ$YÀwpÀw|ÀuÀÀsäÀu¤Àsä YÀwpYÀwpÀwpÀuÌÀuÌ(]ÀuÌÀs<À`À­8YÀwpÀZü UÀwpA]ÀuÌYÀwp UÀwpv ]ÀuÌUAÀwpÀwpYÀwpYÀwpÀwpÀuÌUAÀwpÀwpÀwpAÀwpÀwpÀwpÀwpUÀwpUUÀwpÀs<À`ÀZüÀnÌÀ­8YÀwpA]ÀuÌAYÀwpUÀwp UÀuÀ UÀu¼ €¨À‘¬)UÀuÀ )Àu¼ UÀu¼1%Àu¤ %Àu¤Àu¤\ÀuÌÀs<Àu¼Àu¸UÀuÀÀuÀÀt4UÀu¼Àu¼]Àu¤€¥Àu¤]Àu¤Àu¤]ÀuÀÀ`À­8€¨À‘¬$À¶pYÀuÌYÀuÌÀ¶À¶VUÀwpÀuÌÀ­8ÀZüYÀuÌYÀwpÀx耨À‘¬Às<À`ÀuÌÀuÌEAÀuÀÀxè YÀuÌÀ­8UÀwpÀuÌXÀ[€¨À‘¬Às<À`ÀuÌ€ ÀuÌ]ÀuÀ]ÀuÀÀuÀÀs<UÀwpÀuÌk UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀ­8ÀZüYÀuÌYÀwpÀxèE€€ UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀs<À`ÀnÌÀ­8ÀZüÀxèYÀuÌYÀwpYÀwp ]À\@ YÀwpD YÀu¤YÀwp]À\@À\@YÀu¤Àu¤YÀu¤YÀu¤<UYÀu¤ÀwpÀ­8Às<ÀuÌÀwp]À\@YÀuÌEv ÀyUYÀu¤ÀwpÀwd€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYYÀu¤ÀwpYÀu¤Ày< Àwp]À\@Às<À`ÀuÌÀZüYÀuÌÀwpÀuÌÀ­8À_(ÀZüYÀuÌ/ÀwpÀs<À`À^À]XÀuÌÀ­8ÀwpÀuÌ Às<À`À­8ÀuÌÀOxÀOxeAÀOxE AÀOx AÀOx ÀOx ÀOx ÀOx ÀO€ ÀO„ Às<À`À­8ÀuÌÀOx Às<À`À­8 Às<À`ÀtüÀ­8ÀuÌ UÀuÌÀ­8Àu Às<À`ÀtüÀ­8' AÀuUÀuÌÀ­8UÀuÌÀ­8 Às<À`&YYÀu¤ÀwpUYÀu¤Àwp8 UYYÀu¤ÀwpYÀu¤UYYÀu¤Àwp (AQE ÀkdÀu¼AQEÀ­8 AQE(Au# ÀkdÀu¼Àu¤Àu¤Au Au(ÀtÄ (AU ÀkdÀtÄÀtÄAU ÀtÄ AU ÀkdÀt4Àt4AU ÀkdÀtÈÀtÈAUÀOÌÀOÌÀOÌeAÀOÌE AÀOÌ AÀOÌ ÀOÌ ÀOÌ ÀOÌÀOÌ(ÀOÌ!(UYÀtüYUÀtüÀuÌ(YYÀuÌ (]ÀuÌ UYÀtüYUÀtüÀuÌLÀOÔÀOÌÀu¼À“ÀUYÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌH ÀOÌÀu¼À“ÀUYÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌ ÀOÌ! UYÀtüYUÀtüÀuÌ YYÀuÌ ]ÀuÌeAÀOÔE AÀOÔ ÀOØÀZü ÀZüeAÀOØE AÀOØ (YÀOØ(€¥YÀOØ (YÀOÔ1ÀOÜYÀOØ€¥YÀOØYÀOÔYÀ[´- YÀOØ€¥YÀOØYÀOÔYÀ[´ YÀOØ €¥YÀOØ YÀOÔeAÀOÜE AÀOÜ AÀOÜ ÀOà(ÀOÔ% ÀkdÀOÔ]ÀZüÀs<À`À­8 ÀOÔ ÀOè ÀuÌÀ­8eAÀOèE AÀOèAÀOè(ÀZ|ÀOìUÀZ|]ÀuÌ UÀZ|]ÀuÌ ÀZ|eAÀOìE AÀOì AÀOì(ÀOì (ÀOè ]À“ÀÀOìÀOè ÀOì ÀOèeAÀOðE AÀOðAÀOðÀOôÀ[´ÀZüYÀuÌ ÀOôÀ[` ÀOôÀ[ ÀOôeAÀOôE AÀOô AÀOô(À[´ À[´ÀZüYÀuÌ À[´b]Microsoft.FSharp.Compiler.Typrelns+AssignedItemSetterTarget+AssignedPropSetter@DebugTypeProxye`Microsoft.FSharp.Compiler.Typrelns+AssignedItemSetterTarget+AssignedIlFieldSetter@DebugTypeProxygbMicrosoft.FSharp.Compiler.Typrelns+AssignedItemSetterTarget+AssignedRecdFieldSetter@DebugTypeProxy ÀOü ÀP ÀP(ÀOô À“ÀÀOôÀOèÀPÀ“ÀÀOôÀOè ÀOôeAÀPE AÀPAÀP À“ÀÀOèeAÀPE AÀP (YÀOì(YÀOè (]ÀOì(YÀOð< YÀOìYÀOè]ÀOìYÀOèYÀOðDÀPYÀOìYÀOè]ÀOìYÀOèYÀOð YÀOè YÀOðeAÀPE AÀPAÀP YÀOð(YÀP(YÀP (]À[´(YÀP(]YÀOèw ÀZüYÀuÌYÀuÌYÀuÌYÀPÀuÌYÀP]À[´YÀPYÀPYÀOìYÀOì YÀP YÀP ]À[´ YÀPeAÀP E AÀP AÀP ÀZüÀP  YÀP ÀP$ ÀP( ÀPÀOì ÀP, ÀPYÀOè ÀuÌÀs< YÀP YÀuÌÀ`À­8 ÀP0 À`À­8À]X ÀP41ÀPYÀP ÀP 1ÀPYÀP7YÀP1ÀPYÀPÀP5 ÀP ]ÀOìÀP]YÀOè ]YÀOèÀP YÀOìÀP ÀOìÀZœ ÀP< ÀP ÀP@ YÀP ÀP ÀOì ÀOìÀOìÀZ| ÀPP ÀOì ]ÀOðÀ“ÀÀOè ]ÀOðÀP ÀPT ÀPÀOð ]ÀOðÀOì ÀP\ YÀOìAÀ­8AÀZüYÀuÌ ÀP`< À^AÀ­8AÀZüYÀuÌÀ­8À]XÀs<À`ÀuÌAÀ­8ÀZü€­ÀPÀPqÀ“ÀÀOèYYÀ[´YÀ[´YÀ[´À[´ÀZüYÀuÌYÀ[`YÀ[`À[`]À[ ]À[ À[ " €­ÀPÀPÀP ÀPh^ À^AÀ­8AÀZüYÀuÌÀ­8À]XÀZüÀs<À`ÀuÌYÀOèYÀP uYÀOìYÀOìYÀOìUYÀOìYÀOì5uUYÀOèYÀOèYÀOì]ÀOìUYÀOìÀOìUYÀPYÀPUYÀPYÀPUYÀOìYÀOì ÀOìÀOìuYÀOìYÀOìYÀOìUYÀOìÀOì4uUYÀOèYÀOèYÀOì]ÀOìUYÀOèYÀOè ÀOìÀOðUYÀPYÀP ÀPÀPÀPUYÀPYÀP ÀPdG€ÀPYÀPYÀPYÀPYÀOìYÀOìjYÀOìuYÀOìYÀOìYÀOìUYÀOìYÀOìYÀOìYÀOìYÀOìuUYÀOèYÀOèYÀOì]ÀOìÀOìÀuÌUYÀOìÀOìYÀOìYÀOèYÀOè]ÀOìYÀOðYÀPUYÀPYÀPYÀPYÀPUYÀPYÀPYÀPYÀPYR €ÀPYÀPYÀPYÀPYÀOìYÀOìYÀOì ÀPlUYÀOèYÀPYÀOèYÀPt AYÀOì€ÀPYÀPYÀPYÀPYÀOìYÀOìUYÀOèYÀPDÀPYÀPYÀPYÀPYÀOìYÀOìR ÀP€ÀPYÀPYÀPYÀPYÀOìYÀOìV YÀP€ÀPYÀPYÀPYÀPYÀOìYÀOìV YÀP€ÀPYÀPYÀPYÀPYÀOìYÀOìR YÀOì€ÀPYÀPYÀPYÀPYÀOìYÀOì ]ÀOì Às<À`À­8ÀuÌÀOx À‘¬ À‘”À‘¬ %Àu¤ %Àu¤UÀu¤%Àu¤Àu¤ ]Àu¤%Àu¤f AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀs<À`À­8ÀZüÀxèYÀuÌYÀwpG YÀwpÀxè]ÀuÌÀ[À[ÀuÀÀuÌUÀwpÀuÌÀ[ Às<" UÀwpÀuÌ]ÀuÌYÀwp Àu¤ÀuÌ€¨UÀ‘”€ À­8€¨UÀ‘”E-ÀwpÀs<À­8€¨UÀ‘”ÀuÌÀuÌEU€¨€¨À‘”€¨ À‘”U€¨€¨À‘”€¨0U€¨€¨À‘”€¨À‘”€¨ÀuÌÀuÌ%ÀwpÀs<À`À­8€¨UÀ‘” AÀ‘”€½AÀ‘”€½€½€¨À‘”J €¨À‘”Àu¼€¨À‘”YÀtü€¨À‘”€¨À‘”€¨À‘” €¨À‘”À­8À`€¨À‘” À­8À` €¨À‘”À`À­8€¨À‘” €¨À’(À­8€¨À’(E(]€¨€áÀ’(À’,À’(À’,À’(]€¨UÀ‘ÀÀ’(€¨UÀ‘ÀÀ’($€¨€áÀ’(À’,À’(À’,À’( €¨À’, €áÀ’(À’,À’(À’,À’( UÀ‘ÀÀ’(" U]€¨À‘´UÀwpÀuÌ]€¨UÀ‘ÀÀ’( U]€¨À‘´UÀwpÀuÌ']€¨€áÀ’(À’,À’(À’,À’(#€¨€áÀ’(À’,À’(À’,À’( À’( À’,€é]€¨€áÀ’(À’,À’(À’,À’(]€¨UÀ‘ÀÀ’(]€¨UÀ‘ÀÀ’(€¨UÀ‘ÀÀ’(]€¨€áÀ’(À’,À’(À’,À’(€¨€áÀ’(À’,À’(À’,À’(Àwp€¨À’,Àu¤Àwp€¨À’,Àu¤ÀwpÀwp€š U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’(E]€¨UÀ’(À’(€¨UÀ’(À’(U€¨À’(€¨À’( €¨À’( UÀ’(À’(]€¨UÀ’(À’(€¨UÀ’(À’( À’(À’(U€¨À’(€¨À’(€• ]€¨UÀ’(À’(]€¨UÀ’(À’(]€¨UÀ’(À’(€¨UÀ’(À’(U€¨À’(€¨À’(€¨À’(€¨À’(ÀwpÀwpÀwp]€¨uÀ‘”À’,À’("]€¨u]À’(À‘´À’(€¨uÀ‘”À’,À’($u€¨À‘”€¨À’,€¨À’( €¨À’,Y€¨À’, uÀ‘”À’,À’( u]À’(À‘´À’(!]€¨u]À’(À‘´À’(]€¨uÀ‘”À’,À’(€¨uÀ‘”À’,À’( À‘”À’,À’(#u€¨À‘”€¨À’,€¨À’( €¨À’, €¨À’, €¨À’,Àu¤*]€¨uÀ‘”À’,À’(]€¨À‘”]€¨u]À’(À‘´À’(]€¨u]À’(À‘´À’(]€¨À‘”€¨À‘”ÀuÌÀwp]€¨uÀ‘”À’,À’(€¨uÀ‘”À’,À’(u€¨À‘”€¨À’,€¨À’(€¨À’(€¨À’,Y€¨À’,YÀu¤ÀwpÀuÌÀ^Àwp€¾ U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤ÀwpA€¨À’,Àu¤A€¨À’,E€¨À’(E#]€¨€À’,À’(À’(À’(€¨€À’,À’(À’(À’(.€€¨À’,€¨À’(€¨À’(€¨À’( €À’,À’(À’(À’("]€¨€À’,À’(À’(À’(€¨€À’,À’(À’(À’( À’,À’(À’(À’(-€€¨À’,€¨À’(€¨À’(€¨À’(+]€¨UÀ’(À’(]€¨€À’,À’(À’(À’(]€¨€À’,À’(À’(À’(€¨€À’,À’(À’(À’(€€¨À’,€¨À’(€¨À’(€¨À’(€¨À’,€¨À’(€¨À’(€¨À’(ÀwpÀwpÀu¤ÀwpÀwp]€¨UÀ’(À’(€¨UÀ’(À’(U€¨À’(€¨À’(]€¨uÀ’,À’(À’(]€¨UÀ’,À’(€¨UÀ’,À’(U€¨À’,€¨À’(U]Àu¤Àwp€¨uÀ’,À’(À’(#u€¨À’,€¨À’(€¨À’( uÀ’,À’(À’( UÀ’,À’(]€¨UÀ’,À’(€¨UÀ’,À’( À’,À’(U€¨À’,€¨À’(U]Àu¤Àwp]€¨uÀ’,À’(À’(€¨uÀ’,À’(À’( À’,À’(À’("u€¨À’,€¨À’(€¨À’(#]€¨uÀ’,À’(À’(]€¨UÀ’,À’(]€¨UÀ’,À’(€¨UÀ’,À’(U€¨À’,€¨À’(€¨À’,€¨À’(ÀwpU]Àu¤Àwp]Àu¤]Àu¤Àu¤Àwp]€¨uÀ’,À’(À’(€¨uÀ’,À’(À’(u€¨À’,€¨À’(€¨À’(€¨À’(Àwp]€¨UÀ’(€¨UÀ’(U€¨À’(€¨€¨ UÀ’(]€¨UÀ’(€¨UÀ’( À’(U€¨À’(€¨€¨€Û]€¨UÀ’(]€¨UÀ’,À’(]€¨UÀ’,À’(€¨UÀ’,À’(U€¨À’,€¨À’(€¨À’,€¨À’(Àu¤ÀwpÀwp]€¨UÀ’(€¨UÀ’(U€¨À’(€¨€¨ÀuÌYÀuÌ]€¨À’(]€¨UÀ‘”À’(€¨UÀ‘”À’(U€¨À‘”€¨À’( €¨À’( €¨À’( À’( UÀ‘”À’(]€¨UÀ‘”À’(€¨UÀ‘”À’( À‘”À’(U€¨À‘”€¨À’( €¨À’( €¨À’(]€¨À’(€¹]€¨À’(]€¨UÀ‘”À’(]€¨UÀ‘”À’(€¨UÀ‘”À’(U€¨À‘”€¨À’(€¨À‘”€¨À’(ÀuÌ€¨À’(YÀwpÀwpÀwp]€¨À’(]€¨uÀ’(À’(À’(]€¨À’,]€¨UÀ‘”€¨UÀ‘”€¨uÀ’(À’(À’(#u€¨À’(€¨À’(€¨À’( uÀ’(À’(À’( UÀ‘”]€¨UÀ‘”]€¨À’,]€¨uÀ’(À’(À’(€¨uÀ’(À’(À’( À’(À’(À’("u€¨À’(€¨À’(€¨À’(]€¨uÀ’(À’(À’(]€¨À’,]€¨UÀ‘”]€¨UÀ‘”€¨UÀ‘”Àwp]€¨À’,€¨À’,U]Àu¤Àwp]€¨uÀ’(À’(À’(€¨uÀ’(À’(À’(u€¨À’(€¨À’(€¨À’(€¨À’(€¨À’(€¨À’(ÀwpÀwpÀwpÀ•TÀ”Ä]€¨UÀ’(À‘”€¨UÀ’(À‘”U€¨À’(€¨À‘” UÀ’(À‘”]€¨UÀ’(À‘”€¨UÀ’(À‘” À’(À‘”U€¨À’(€¨À‘”€š ]€¨UÀ’(À‘”]€¨UÀ’(À‘”]€¨UÀ’(À‘”€¨UÀ’(À‘”U€¨À’(€¨À‘”€¨À‘”€¨À’(ÀwpÀuÌÀwpÀuÌA€¨À’,Àu¤A€¨À’,E-A€¨À’,Àu¤A€¨À’,E]E€™ U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’(U€¨À‘À€¨À’( €¨À‘À€¨UÀ‘ÀÀ’( À‘ÀÀ’(U€¨À‘À€¨À’( €¨À‘À0U€¨À‘À€¨À’(€¨À‘À€¨À’(€ UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨UÀ‘ÀÀ’(À’, €¨À’,€íÀ’,U]Àu¤Àwp&À’,ÀuÌUÀu¤ÀwpÀwpÀu¤} Àu¤AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’,À’,y AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’,(u€¨]À’(€¨À‘´€¨À’(€¨]À’(]€¨À’(ÀuÌ€¨u]À’(À‘´À’( ]À’(À‘´À’('u€¨]À’(€¨À‘´€¨À’(€¨]À’(]€¨À’(€±u€¨]À’(€¨À‘´€¨À’(€¨]À’(€¨À‘´€¨À’(ÀZüYÀwp]€¨À’(]€¨À’(€¨À’(YÀwp€¨À‘”YÀuÌÀuÌÀnÌÀx耶 U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’(€¨u]À’(À‘´À’( À’,€Š U]Àu¤ÀwpAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’,!U]€¨À‘´UÀwpÀuÌ"U]€¨À‘´UÀwpÀuÌ} ÀwpAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’(€íÀ’,U]Àu¤Àwp YUÀ’,U]Àu¤Àwp UÀ’,U]Àu¤ÀwpYUÀ’,U]Àu¤Àwp€© €íÀ’,U]Àu¤ÀwpYUÀ’,U]Àu¤Àwp€íÀ’,U]Àu¤ÀwpAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€™ U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌ]ÀwpYÀwp€¨À’,Às<À`ÀnÌÀxèÀ­8€¨À’(€¨À‘”À­8€¨À‘¤ €¨À’,U]Àwp€¨À’, €¨À‘”€¨À’,U]Àwp€¨À’,€”€¨À‘¤€¨À‘”€¨À‘”€¨À‘”€¨À‘”€¨À’,U]Àwp€¨À’,YÀwpÀwp€¨À’,]Àwp€¨À’,€¨À’(€Ž U]€¨À‘´UÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀs<À`ÀnÌÀx耨À‘¬YÀwpYÀwpÀ­8 e u]€¨À‘´ÀwpÀuÌU]€¨À‘´UÀwpÀuÌÀuÌ]€¨À‘´ÀwpÀuÌ€ € €Š u]€¨À‘´ÀwpÀuÌAÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀs<À`€¨À‘¬YÀwpÀnÌÀxèYÀwpÀ­8 UÀ‘”UÀ‘”& Às<À­8€¨UÀ‘”ÀuÌÀuÌ Àwp À‘” €½À‘”U€¨À‘”ÀtüYU€¨À‘”Àtü\ €¨À‘”YÀtüU€¨À‘”ÀtüÀtü€¨À‘”YU€¨À‘”Àtü€¨À‘” €¨À‘”Àtü1U€¨À‘”ÀtüYU€¨À‘”ÀtüU€¨À‘”Àtü YU€¨À‘”Àtü ÀsðÀsð €½À‘” €¨À‘” €½€½ €½€½ À’,À’, À’,€¨À’,UÀ’,ÀwpYUÀ’,ÀwpUÀ’,U]Àu¤Àwpl ]ÀwpYÀwp€¨À’,À­8UÀ’,ÀwpÀ’,ÀwpYUÀ’,ÀwpUÀ’,U]Àu¤Àwp1€¨À’, €¨À’,À’, 1Àwp À’,Àwp1UÀ’,ÀwpYUÀ’,ÀwpUÀ’,ÀwpUÀ’,U]Àu¤Àwp YUÀ’,Àwp# 1UÀ’,U]Àu¤Àwp UÀ’,U]Àu¤Àwp" YUÀ’,U]Àu¤Àwp À’, À’,À’, €íÀ’,U]Àu¤ÀwpÀ’,U]Àu¤Àwp EUÀ’,U]Àu¤Àwpo AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp Àu¤€¨À’, E€¨À’, À’(]UÀ’(À‘”UÀ’(À‘”]UÀ’(À‘”"]UÀ’(À‘”UÀ’(À‘” ]UÀ’(À‘”À’(]uÀ’(À’(À’(uÀ’(À’(À’(]uÀ’(À’(À’(,]uÀ’(À’(À’(uÀ’(À’(À’( ]uÀ’(À’(À’(À’( ]À’, ]À’,]À’,À’, ]À’,À’(]UÀ‘” UÀ‘”]UÀ‘”]UÀ‘”UÀ‘” ]UÀ‘”À’( ]À’(À’( ]À’(]À’(À’( ]À’(À’(]UÀ‘”À’(UÀ‘”À’(]UÀ‘”À’($]UÀ‘”À’(UÀ‘”À’( ]UÀ‘”À’(À’(]UÀ’( UÀ’(]UÀ’(]UÀ’(UÀ’( ]UÀ’(À’(]UÀ’,À’(UÀ’,À’(]UÀ’,À’("]UÀ’,À’(UÀ’,À’( ]UÀ’,À’(À’(]uÀ’,À’(À’(uÀ’,À’(À’(]uÀ’,À’(À’(,]uÀ’,À’(À’(uÀ’,À’(À’( ]uÀ’,À’(À’(À’(]UÀ’(À’(UÀ’(À’(]UÀ’(À’("]UÀ’(À’(UÀ’(À’( ]UÀ’(À’(À’(]€À’,À’(À’(À’(€À’,À’(À’(À’(]€À’,À’(À’(À’(8]€À’,À’(À’(À’(€À’,À’(À’(À’($ ]€À’,À’(À’(À’(À’(]uÀ‘”À’,À’(uÀ‘”À’,À’(]uÀ‘”À’,À’(.]uÀ‘”À’,À’(uÀ‘”À’,À’( ]uÀ‘”À’,À’(À’( ]À‘” ]À‘”]À‘”À‘” ]À‘”À’(]u]À’(À‘´À’(u]À’(À‘´À’(]u]À’(À‘´À’(6]u]À’(À‘´À’(u]À’(À‘´À’(# ]u]À’(À‘´À’(À’(#]€áÀ’(À’,À’(À’,À’(€áÀ’(À’,À’(À’,À’("]€áÀ’(À’,À’(À’,À’(B]€áÀ’(À’,À’(À’,À’(€áÀ’(À’,À’(À’,À’() ]€áÀ’(À’,À’(À’,À’(À’(]UÀ‘ÀÀ’(UÀ‘ÀÀ’(]UÀ‘ÀÀ’($]UÀ‘ÀÀ’(UÀ‘ÀÀ’( ]UÀ‘ÀÀ’(À’(À’(€áÀ’(À’,À’(À’,À’(À’(À’,À’(À’,À’(% À’(€áÀ’(À’,À’(À’,À’(% À’,€áÀ’(À’,À’(À’,À’( UÀ’(À’(UÀ’(À’(* uÀ‘”À’,À’(uÀ‘”À’,À’( À’,À’,4 €À’,À’(À’(À’(€À’,À’(À’(À’( UÀ’,À’(UÀ’,À’(( uÀ’,À’(À’(uÀ’,À’(À’( UÀ’(UÀ’( UÀ‘”À’(UÀ‘”À’( À’(À’(( uÀ’(À’(À’(uÀ’(À’(À’( UÀ’(À‘”UÀ’(À‘” À‘”À’( UÀ‘ÀÀ’(UÀ‘ÀÀ’( À‘¬À‘ÀY€¨À’(€™ AÀuÀAÀxèAYÀuÌAÀ­8UÀwpÀuÌÀnÌÀ­8ÀxèÀs<À`€íÀ’,U]Àu¤Àwp€¨À’(€¨À’(Y€¨À’(Àwp1€¨À’(Y€¨À’( Y€¨À’( 1Àwp YÀwp À’, À’, À‘”À’,2 u]À’(À‘´À’(u]À’(À‘´À’( À‘¬À‘´ ]À’(]À’( À‘´ À‘”À‘´ À‘¤À‘¬ À’,À‘” €¨À’,€¨À‘”Y€¨À’,- €¨À’,€¨À’,Y€¨À’,À’,Y€¨À’, Y€¨À’, 1À’, À’, YÀ’, €¨À’,À‘¬ UÀ‘¬€… À‘¬€… À’(UÀ‘¬€… ÀuÌUÀuÌÀwh` ]ÀuÌYÀtüYUÀtüÀuÌÀ“ÀYYÀuÌÀkdÀuÌYYUÀuÌÀwh,ÀdÀkdQÀOÔ` ÀkdÀ]HYUÀtüÀuÌ]ÀuÌYÀtüYYÀuÌÀuÌYYUÀuÌÀwh,ÀdÀs<À`À­8ÀkdQÀZü ÀkdÀOÔÀs<À`À­8ÀkdÀZü:À]HYUÀtüÀuÌ]ÀuÌYÀtüYYÀuÌ ÀOÔÀs<À`À­8ÀOÌÀZü7€YÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌ YÀy8 €YÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌ6€YÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌt€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀuÌYYUÀuÌÀwhYYÀuÌ€YÀtüYUÀtüÀuÌYYÀuÌ]ÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌÀu¤]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌYUÀtüÀuÌ]ÀuÌYÀtüYYÀuÌÀOÌYÀyYÀyÀyÀu¬À­8ÀOÔÀs<ÀuÌÀuÀ9 UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwp€ø€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYÀtü]ÀuÌYYUÀuÌÀwhYYÀuÌ€YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌYYÀu¤Àwp]Àu¤YYÀu¤YÀu¤YYÀu¤Àu¤YYÀu¤ÀOÌj UÀOÔ€á]Àu¤Àu¤YYÀu¤YÀvpÀwpÀs<À`ÀuÌÀ“ÀÀ™HÀuÌÀwdYÀvpÀwp ÀZüÀOÔÀs<ÀZüÀOÔYÀtüÀ]HÀs<À`À­8ÀZüÀOÔ3YÀtüYYÀuÌÀ]HYYÀuÌYÀtü UÀtüÀuÌUÀtüÀuÌ+YUÀtüÀuÌÀs<YUÀtüÀuÌ ÀRŒ UÀuÌUÀuÌ3YUÀuÌYUÀuÌYUÀtüÀuÌAUÀtüÀuÌ YÀuÌYÀuÌ UÀtüÀuÌ€Â]ÀuÌYÀtüYUÀtüÀuÌYYÀuÌÀ]H]ÀuÌYYÀuÌYUÀtüÀuÌYÀtüÀjAÀuÌAÀuÌYUÀtüÀuÌAUÀtüÀuÌAÀuÌYUÀtüÀuÌ ÀuÌÀu¼ ÀOÔ&Às<À`À­8€¥YÀOÔÀZü €Õ!À­8ÀkdÀ`€ÕÀZüE YÀOÔ9YÀOÔYÀOÔÀOÔYÀtüYYÀuÌUQE YÀOÔÀ­8Às<ÀkdÀ`€ÕÀZüYYÀuÌYÀtüE€¥YÀOÔ(€Õ€¥YÀOÔ€¥YÀOÔ8 ÀkdÀs<À`À­8ÀuÌYÀOØYÀOÔYÀOÔhÀ­8YÀOØYÀZüYÀZüYÀZüÀZüQYÀZüYÀZüYÀZüYÀZüÀZüAA= ÀkdÀs<À`ÀuÌ€¥YÀOØ€¥YÀOÔÀOÔE YÀOÔ YÀOÔ$€¥YÀOÔYÀOÔEÀOÔ59ÀkdÀs<À`ÀuÌ€¥YÀOØYÀOÔ1ÀOÔ Ài|E)Às<À`À­8YÀuÌÀi|EÀuÌY€ÀuÌYÀuÌÀ­8Y€ÀuÌÀ­8YÀuÌY€ÀuÌÀ­8YÀuÌ€ÀuÌÀ­8YÀuÌ) UÀuÌÀ­8€ÀuÌYÀuÌÀ­84 €ÀuÌYÀuÌÀ­8€ÀuÌÀ­8YÀuÌ1€ÀuÌÀ­8YÀuÌY€ÀuÌÀ­8YÀuÌ€ÀuÌÀ­8YÀuÌ ÀOÜ€õÀs<À`YÀuÌÀ­8]ÀuÌY€ÀuÌYÀuÌÀ­8Y€ÀuÌÀ­8YÀuÌY€ÀuÌÀ­8YÀuÌE€ÀuÌÀ­8YÀuÌÀuÌYÀuÌ5Y€ÀuÌÀ­8YÀuÌE€ÀuÌÀ­8YÀuÌYÀuÌYÀuÌ(YÀOÜÀ^ÀkdYUÀuÌÀ­8AÀuÀÀs<ÀuÌYuÀuÌÀ­8YUUÀuÌÀ­8ÀOÜYUUÀuÌÀ­8ÀOÜUUÀuÌÀ­8ÀOÜYUÀuÀÀOÔ AÀuÀ uÀuÌÀ­8UÀuÌÀ­8 UÀuÌÀ­8ÀOÜ1UUÀuÌÀ­8ÀOÜYUUÀuÌÀ­8ÀOÜUUÀuÌÀ­8ÀOÜ ÀuÀUÀuÀÀOÔ UÀuÀÀOÔÀOÔ UÀuÀÀOÔÀs<À`ÀtTYuÀuÌÀ­8YUÀuÌÀ­8ÀuÌYUÀuÌÀ­8YÀuÀYÀOÜYUUÀuÌÀ­8ÀOÜYÀuÀYUUÀuÌÀ­8ÀOÜEUUÀuÌÀ­8ÀOÜÀOÜÀuÌÀ­8€¥YÀOØYÀOØYÀOÔEYUÀuÀÀOÔYÀOÔYÀOÔAÀuÀ5À^ÀkdÀt4 UÀuÌÀwhÀuÌUÀtüÀuÌ ÀtüÀuÌ UÀtüÀuÌUÀtüÀuÌ ÀRŒ UÀuÌ ÀuÌ UÀuÌUÀuÌ YÀuÌYÀuÌ UÀtüÀuÌ AUÀtüÀuÌ Às<À`À­8ÀZü ÀOÔ ÀOÔ Às<À`À­8ÀOÔ ÀOØ Às<ÀZüO ÀkdÀs<À`À­8YÀOØYÀOÔ€Õ€¥YÀOÔ€¥YÀOÔ YÀOØE ÀZüYÀOÔÀ]HYYÀuÌYÀtüYÀOÔYÀOÔÀOÔQ EÀOØ Às<À`ÀOÔÀ­8! Às<À`€¥YÀOÔÀ­8 ÀOÔw YUÀuÌÀ­8Às<À`UÀuÌÀ­8ÀuÌÀ­8]ÀuÌ]ÀuÌÀuÌYUÀuÌÀ­8ÀuÌYÀuÌÀuÌ YUÀuÌÀ­8]ÀuÌÀ­8À­8]ÀuÌ€ÀuÌYÀuÌÀ­8ÀuÌÀ­8YÀuÌ* €ÀuÌYÀuÌÀ­8UÀuÌÀ­8 Às<À`ÀuÌÀuÌYÀuÌÀ­8- YÀuÌYÀuÌ€ÀuÌYÀuÌÀ­8* Às<À`Y€ÀuÌYÀuÌÀ­8$ €ÀuÌYÀuÌÀ­8YÀuÌ4 €ÀuÌÀ­8YÀuÌ€ÀuÌYÀuÌÀ­8 ÀkdÀs<À`À­8YÀuÌ UÀu¼E UÀu¼EÀuÌ Às<À`À­8ÀuÌÀOØb À^Às<À`YÀuÌÀ­8ÀuÌYÀuÌÀuÌÀZüÀZüYÀuÌYÀZüYÀZüÀOØ 1ÀOØ ÀOØ YÀOØYYÀZüH À^Às<À`À­8ÀuÌYÀZüÀZüYYÀZüYÀZüÀOÔ 1YÀZüYYÀZü YYÀZü 1ÀOÔ YÀOÔ Ài|E) Às<À`À­8ÀuÌYÀuÌÀi|E ÀOØ YÀOÜ€¡ À^Às<À`YÀuÌY€ÀuÌÀ­8YÀuÌ€ÀuÌÀ­8YÀuÌÀ­8ÀuÌYÀuÌÀi|EY€ÀuÌÀ­8YÀuÌÀOÜYÀOÜÀOÜ AÀ[´ ÀuÌUÀu¼E 1ÀOØ 1ÀOÜ YÀOÜ YÀOÜ Y€ÀuÌÀ­8YÀuÌIYÀOØYÀOÔÀuÌ]ÀuÌAÀ[´YÀ[´€¥YÀOØÀ­8 1ÀOÜ ÀOÜ YÀOÜ UÀuÌÀ­8uÀuÌÀ­8 Àu¬Àu¤ Ày ÀyÀu¬Àu¤YÀyUÀuÀÀOÔ UÀuÀÀOÔÀuÀ ÀOÔUÀuÀÀOÔ AÀuÀ UÀuÀÀOÔ YÀOØa Às<À`ÀuÀÀ­8€¥YÀOØÀOÔÀOØÀZü]ÀuÀ]ÀuÀÀuÀÀyYÀOØÀy YÀOØ YÀOØÀu¤]ÀuÀ 1Ày Ày ]ÀuÀ YÀy€“ Às<À`YUUÀuÌÀ­8ÀOÜÀuÀUUÀuÌÀ­8ÀOÜÀuÌÀ­8€¥YÀOØÀOÔYUUÀuÌÀ­8ÀOÜÀyYÀyÀy YUUÀuÌÀ­8ÀOÜ]ÀuÀÀ­8( Às<À`YUUÀuÌÀ­8ÀOÜYÀyÀ­8Àu¤ÀS`<AÀvpÀS`AÀvtAÀvtAÀvxAÀvxÀvpAÀvpÀS`Àvp]UÀvpYÀvp]UÀvpYÀvpUÀvpYÀvpQYÀvpYÀvpÀvp]UÀvpYÀvpÀu¼À­8]UÀvpYÀvpQYÀvpÀS`AÀvtAÀvtAÀvxAÀvxYÀvpYÀvpYÀvpÀS`Às<À`ÀZYÀuÌÀS`À­8YÀuÌ#Àu¼Àu¤Àu¤ÀkdAu ÀS`ÀS`ÀtÄÀtÄAUÀS`ÀtÈÀtÈAU&€„€Å€„€ÅYYAAUYY ÀtÄYYÀtÄ ÀS`À­8Àu¼Àu¤]Àu¤ Àu¤Àu¤ Àt4Àt4 YÀu¤YÀu¤À­8ÀtìÀt4ÀkdÀu¼Àtì UÀu¼Àu¼Ài” UÀuÀÀuÀÀi”Ài” Às<À`ÀkdÀk° ÀjÀu¼Àtì À­8ÀjYÀtüYÀtüAÀvtAÀvtAÀvxAÀvx ÀvpÀvpo YÀvpÀs<Ài”AÀvtAÀvtAÀvxAÀvxÀS`AÀvtAÀvtAÀvxAÀvxYÀvp'0YÀvpYÀvpAYÀvpE ÀjAAU uÀuÌÀ­8ÀuÌ Àj€†À­8AAUYÀtüYÀtüÀjYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌÀs< ÀjÀt4Àt4AÀwhAÀwhAAuUYYÀwhYYÀwh YÀwhYÀwh YÀwhYÀwhYÀwh ÀSð ÀS`€¶À“À]Àwd]Àwd]Àwd]ÀwdÀwdYÀwlÀwhYYÀwhÀwdYÀwlÀwhYYÀwhYÀsðYÀsðYYÀwhYYÀwhAÀwhAÀwh]Àwd!0AAuÀu¤Àu¤AÀkdAAuAAu ]Àv|AÀkdAAu€²À­8AÀkdAAu]Àv|]Àv|UYÀtüÀuÌYÀtüÀuÌUYÀtüÀuÌYÀtüÀuÌÀkdÀjAAuYÀvp]Àu¬YÀvp]Àu¬ Àu¼ÀjÀu¤Àu¤ÀtØÀtÔÀtÜ@ ÀtØÀtØÀ¶À¶ÀtÔÀtÔÀu¼Àu¼ÀtÜÀtÜÀt¸Àt¸# AAUÀjÀtÌÀtÌ ÀtÈÀtÈ ÀjÀtÄÀtÄ]Àv|]Àv| ÀjÀtÈÀtÈ*]Àu¬]Àu¬Àu¬Àu¬À™LÀ™LB AAuYÀvpÀu¤]Àu¬YÀvpÀu¤]Àu¬ €¥ÀtÈ ÀT¬ AAU ÀtÈÀtÈ ÀT¸AAU,YÀtÈYÀtÈ€¥ÀtÈ€¥ÀtÈ*0AAUÀjÀt¸Àt¸- Às<ÀkdAAUÀjÀt¸Àt¸ €¥ÀuÀ ÀuÀ ÀTü ÀkdAAU ÀuÀÀuÀ ÀU€¥ÀuÀ€¥ÀuÀ00ÀkdAAUYÀuÀYÀuÀ ÀU ÀU(*YÀtÈYÀtÈ€¥ÀtÈ€¥ÀtÈ+0AAUÀjÀt¸Àt¸ÀtdÀthAÀyAÀyÀtpÀtt Às<À`Àkd ÀtÄÀtÄ YÀyYÀy Às<Àj+ÀtdÀtdÀt¸Àt¸ÀthÀthÀtÀÀtÀYÀtÄYÀtÄÀtxÀtxÀt Àt Àt`Àt´Àt`Àt´Àt¤Àt¤Àt¬Àt¬ÀuÌÀuÌ]ÀuÌ]ÀuÌYYÀyYYÀyYÀtüYÀtüYÀtüYÀtüÀjÀjAÀyAÀyÀtpÀtpÀ¶À¶ÀttÀtt# AAUÀjÀtXÀtX)]ÀuÌ]ÀuÌÀuÌÀuÌu5 AAUÀjÀsðÀsð]ÀuÌ]ÀuÌÀtìÀt4ÀtÀt À­8ÀjÀu¼Àtì ÀjÀu¼Àt4 ÀuÀÀuÀ Ài”Ài” ÀuÀÀuÀ AÀi”Ài”UÀuÀÀuÀ Àu¼Àu¼UÀu¼Àu¼ AÀi”Ài”UÀu¼Àu¼ ÀvpÀvp ÀS` ÀvtÀvtÀvt ÀuÌÀvtÀuÌÀvtÀS` ÀvxÀvx3 AÀvtAÀvtAÀvxAÀvxÀvpÀS` ÀvtÀvt ÀvxÀvx5Àu¼YÀvxYÀvtÀu¼YÀvxYÀvtÀs< ÀvpÀS`Àu¼Àu¼Às< ÀjÀuÀs< ÀS`ÀjÀtüÀtüÀ­8 ÀS`ÀjÀu EYÀvp ÀS`ÀjÀ­8À“ÈÀ“ÈÀ“ÀÀ­8 Àt4À­8 AU ÀS`Àt4Àt4 AU ÀuÌuÀuÌÀ­8 À­8Às<À`ÀZ ÀS`Àt4À­8 ÀjÀs< ÀS`Àt4 ‚ñ‚ñ u YÀwhYÀwh À“ÀYYÀwh‚ñ‚ñ YÀwhYÀwhYÀwh ÀwhÀwh ÀSð ÀwhÀwh AÀwhAÀwh ÀwhÀwh Àu¼Àu¤Àu¤ ÀkdAu U ÀtÈÀtÈ ÀtÄ UAAU ÀT¬AAU ÀtÈ ÀT¸AAU AAU ÀkdÀuÀ ÀTü ÀuÀ ÀuÀÀuÀ ÀU ÀU ÀU( Y ÀtÄ ÀtÄÀtÄ ÀyÀy AÀyAÀy ÀyÀy YÀyYÀy ÀsðÀsð EQ ÀS`À­8Àu¼ Àu¤ÀS` YÀu¤ ÀS`ÀjÀu¤ ÀS`ÀjYÀu¤]UÀu¤Àu¤]Àu¤]Àu¤Àu¤ ]UÀu¤Àu¤Àu¤  ÀS`ÀjÀu¼ UÀu¤Àu¤€­Àu¤UÀu¤Àu¤ €­Àu¤UÀu¤Àu¤Àu¤ ÀS`À­8ÀjÀu¼ UYÀu¤YUÀu¤Àu¤YUÀu¤Àu¤ UÀu¤Àu¤YUÀu¤Àu¤ Àu¤Àu¤UÀu¤Àu¤UYÀu¤YUÀu¤Àu¤1UÀu¤Àu¤YUÀu¤Àu¤€œYÀu¤YÀu¤Àu¤Àu¤YUÀu¤Àu¤UYÀu¤YUÀu¤Àu¤YUÀu¤Àu¤YÀu¤YUÀu¤Àu¤EUÀu¤Àu¤5YÀu¤ YÀu¤YÀu¤ ÀkdÀu¼À­8 ÀkdÀu¤ Àu¤YYÀwh ÀyÀs<ÀyÀs<ÀuÌÀuÌÀs<ÀuÌ ÀwpÀs<À·¼À­8ÀwpÀwp À¶Às<À¶Àu¼À¶xÀwpÀs<À­8ÀwpÀs<À­8ÀwpÀwpÀs<À­8ÀwpÀwp ÀwpÀs<À­8ÀwpÀuÀÀwp$ÀwpÀs<À­8YÀwpÀuÀÀwp€Àu¤Àu¤ÀwpÀwp(UÀu¤ÀwpÀu¤ÀwpUÀu¤Àwp*€Àu¤Àu¤ÀwpÀwpÀs<À­8ÀuÌUÀu¤ÀwpÀu¤)UÀu¤ÀwpÀs<À­8ÀuÌÀu¤ÀwpUÀu¤ÀwpÀs<À­8ÀuÌ*ÀwpÀs<À­8ÀuÌÀu¤Àu¤ÀwpÀwpUYÀwpÀwpUYÀwpÀwp+YÀwpÀwpYÀwpUYÀwpÀwpÀwpÀs<À­8YÀwpUYÀuÌÀuÌÀs<Àu¼ ÀwpÀs<À­8ÀwpÀwpÀwp€Àu¤Àu¤ÀwpÀwpAÀtÈÀwp ÀtÈÀwpuÀu¤Àu¤Àwp€ˆÀ­8YÀtÈUYÀuÌÀuÌÀuÌYÀuÌ€Àu¤Àu¤ÀwpÀwpÀu¤ÀwpÀu¤ÀwpÀwpAÀtÈÀwpÀwpÀwpUÀu¤Àwp$uÀu¤Àu¤ÀwpÀs<Àu¼Àt4xÀ­8YÀtÈUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpAÀtÈÀwpÀwpÀwp*ÀwpÀs<Àu¼Àt4ÀwpÀwpÀwp €ƒÀ­8YÀtÈUYÀuÌÀuÌÀuÌYÀuÌ€Àu¤Àu¤ÀwpÀwpÀu¤ÀwpÀu¤ÀwpAÀtÈÀwpÀwpÀwpUÀu¤Àwpe À­8YÀtÈUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpAÀtÈÀwpÀwpÀwpÀwp2 ÀwpÀs<Àu¼Àt4ÀwpÀwpÀu¤ÀwpÀwp$AAÀtÈÀwpc À­8UÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀuÌÀu¤ÀwpAAÀtÈÀwpÀwpÀwpÀjxÀwP À­8UÀu¤ÀwpÀu¤ÀwpAAÀtÈÀwpÀwpÀwpÀjxÀwÀwpÀwpAÀtÄ]Àw$UY]Àw$Y]Àw$Y]Àw$ ÀtÄ]Àw$ ]Àw$UY]Àw$Y]Àw$ Y]Àw$ ]Àw$Àw$À­8YÀtÄUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwpÀjxAÀtÄ]Àw$UY]Àw$Y]Àw$Y]Àw$Y]Àw$ÀwÀwpÀwpÀ•TÀ”Ä€åÀ­8YÀtÄUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀjxAÀtÄ]Àw$UY]Àw$Y]Àw$Y]Àw$Y]Àw$ÀwÀwpÀwpÀ•TÀ”Ä-ÀwpÀs<Àu¼Àt4ÀwpÀu¤ÀwpÀwp€ýÀ­8YÀtÄUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀjxAÀtÄ]Àw$UY]Àw$Y]Àw$Y]Àw$Y]Àw$ÀwÀwpÀwpÀ•TÀ”Ä€êÀ­8YÀtÄUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀjxAÀtÄ]Àw$UY]Àw$Y]Àw$Y]Àw$Y]Àw$ÀwÀwpÀwpÀ•TÀ”ÄÀwpxÀ­8YÀtÈUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpAÀtÈÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwp$UÀu¤ÀwpÀs<Àu¼Àt4ÀwpY À­8UÀu¤ÀwpÀuÌÀu¤ÀwpAAÀtÈÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwpAAÀtÄÀw$ ÀtÄÀw$€‡À­8YÀtÄUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpÀjxUÀu¤ÀwpÀu¤ÀwpAAÀtÄÀw$ÀwÀwpÀwpÀt4 Àt4U]].€É]]]]]U]]:€É]]]]]U]]Às<Àt4Às<À`Àt4Àu¼]]]=À­8€É]]]]]U]]E/€É]]]]]U]]T À­8€É]]]]]U]]]]]]]Às<À`Àt4:€É]]]]]U]]]]Às<Àt4E Às<Àt46€É]]]]]U]]]Àu¬Àu¼Ày Àu¬Àu¼YYÀwh ]Ày ]Ày? À­8YÀtüÀu¬]ÀyÀyÀs´YYÀwh]Àwd7Àu¤Às<Àu¼ÀuÌÀtô]ÀyÀuÌYYÀwh1À­8UYÀuÌÀuÌÀuÌYÀtüÀtôÀt4UÀu¤Àu¤Às<Àu¼,À­8UYÀuÌÀuÌÀuÌYÀtüÀt4Àu¤Às<Àu¼1À­8UYÀuÌÀuÌÀuÌÀtôÀt4YÀtü,UYÀuÌÀuÌÀuÌÀtôÀt4YÀtüuÀu¤Àu¤Àu¤Às<Àu¼uÀu¤Àu¤ÀwpAÀs<Àu¼ Àt4uÀu¤Àu¤Àwp€Ÿ]UÀuÀÀuÀÀuÀÀuÀÀu¤Àu¤ÀwpUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwpÀu¤uÀu¤Àu¤ÀwpjYÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4uÀu¤Àu¤Àwp]UÀuÀÀuÀE]UÀuÀÀuÀVYÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4uÀu¤Àu¤ÀwpÀu¼À­8YÀtüÀ­8YÀw\Às<Àt41 Àt4UÀu¤ÀwpUÀu¤ÀwpAÀwpÀwp€­]ÀuÀÀuÀÀu¤UYÀuÌÀuÌÀuÌUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpÀwpÀwpÀwpYYÀu¤ÀuÌUÀwpÀuÌÀwp€€YÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4AUÀu¤ÀwpAUÀu¤ÀwpAÀwpÀwp]ÀuÀEuYÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4AUÀu¤ÀwpAUÀu¤ÀwpAÀwpÀwp Àt4ÀwpUÀu¤Àwp: Àt4UÀu¤ÀwpÀwpAUÀu¤ÀwpAÀwpÀwp€ê]uÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpUYÀuÌÀuÌÀuÌÀwpUÀu¤ÀwpÀu¤ÀwpUÀu¤ÀwpÀu¤ÀwpÀwpYYÀu¤ÀuÌUÀwpÀuÌYÀuÌÀwpUÀu¤Àwp€É YÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4AÀwpUÀu¤ÀwpAÀs<AÀu¼AÀt4AUÀu¤ÀwpAÀwpAUÀu¤ÀwpAÀwpÀwp]uÀuÀÀuÀÀuÀE]uÀuÀÀuÀÀuÀ€°YÀw\Às<Àt4Àu¼À­8YÀtüAÀs<AÀu¼AÀt4AÀwpUÀu¤ÀwpAÀs<AÀu¼AÀt4AUÀu¤ÀwpAÀwpAUÀu¤ÀwpAÀwpÀwp€­]UÀuÀÀuÀÀuÀÀuÀÀwpuÀu¤Àu¤ÀwpÀu¤Àu¤ÀwpUYÀuÌÀuÌÀuÌYÀuÌUÀu¤ÀwpÀwpUÀu¤ÀwpÀwpÀwpUÀu¤ÀwpÀu¤ÀwpÀu¤Àu¼À­8YÀtüDÀs8Àu¼Àt4Àtü]YÀuÌYÀuÌ]EUÀu¼YÀuÌ Às<À­8ÀuÀÀwp.UÀu¤ÀwpÀu¤ÀwpÀ•TÀ”ÄÀ•TÀ”Ä À•TÀ”Ä% Às<Àu¼YÀuÌÀwpÀwpÀwpÀuÌÀuÈÀ­8ÀtÈ ÀwpÀtÈ% Às<Àu¼ÀwpÀwpYÀuÌÀwp Às<Àu¼YÀuÌÀwpÀwp Às<Àu¼À­8ÀwpÀwp ÀwpÀtÈ! Às<Àu¼ÀwpÀwpÀ­8Àwp* Às<YÀuÌÀwpÀuÄÀ­8ÀwpÀwp* Às<Àu¼YÀuÌÀwpÀwpÀwpÀjx] ÀuÄÀ­8ÀtÄUÀu¤ÀwpÀwpÀu¤UÀu¤ÀwpÀwpÀu¤AAÀtÈÀwpYÀtÈ ]Àw$ÀtÄ ]Àw$ Àw$]Àw$* Às<ÀwpYÀuÌÀuÄÀ­8ÀwpÀwp* Às<Àu¼ÀwpÀwpYÀuÌÀwpÀjx% Às<YÀuÌÀuÄÀ­8ÀwpÀwp% Às<Àu¼YÀuÌÀwpÀwpÀjx Às<Àu¼ÀwpYÀuÌÀwp Às<Àu¼ÀwpÀ­8Àwp% Às<ÀwpYÀuÌÀuÄÀwpÀ­84 Às<Àu¼ÀwpÀ­8YÀuÌÀwpÀjxÀu¤Àwp<ÀuÄUÀu¤ÀwpÀwpÀu¤À­8ÀtÄAAÀtÈÀwp Àw$ÀtÄ$ uÀu¤Àu¤ÀwpÀs<Àu¼Àt4& Às<Àu¼Àt4Àu¤ÀwpÀu¤Àwp Às<Àu¼Àt4Àu¤Àwp AÀwpÀwpUÀu¤Àwp? AUÀu¤ÀwpAÀwpÀwpÀs<Àu¼Àt4UÀu¤Àwp$ UÀu¤ÀwpÀs<Àu¼Àt4Àwp+ Às<Àu¼Àt4Àu¤ÀwpÀwpÀu¤Àwp# AÀwpÀwpÀwpUÀu¤ÀwpH AÀwpAUÀu¤ÀwpAÀwpÀwpÀs<Àu¼Àt4UÀu¤Àwp@,ÀkdYUÀtüÀuÌYÀtüYYUÀuÌÀwhÀuÌ,ÀkdÀtüÀu ,ÀdÀkdQÀuÌÀkdQYÀtüÀkdQÀu¼,Às<ÀuÌÀv| ,ÀkdYUÀuÌÀwhÀuÌ,ÀkdÀwpÀkdQÀu¤ ÀkdÀu¤Àkd,ÀdÀ`À­8ÀkdQÀZüÀ`À­8ÀkdÀZü ÀkdÀZœÀkdQÀ¶ÀkdQÀt4ÀkdYUÀtüÀuÀkdÀ^À]XÀ­8QÀt4UÀtüÀuYUÀtüÀuUÀtüÀuYUÀtüÀu"UÀtüÀuYUÀtüÀuÀkdÀtüÀu ÀkdÀuÌ ÀkdÀtÈ ÀkdÀtÄ ÀkdÀt4,ÀkdÀ^À]XÀ­8Ày,ÀkdÀu¤UY,,ÀkdYÀuÌ ]u ]u]uÀkdÀkd,uÀkdYUÀtüÀuÀuÌÀuÌEq uYUÀtüÀuÌUÀuÌÀuÌYUÀtüÀuYUÀtüÀuÀuÌÀuÌ]uÀkd]uuÀkdÀuÌÀuÌÀkdQÀkdUÀkdÀu¤Àu¤9uYUÀtüÀuÌÀuÌYUÀtüÀuÀuÌÀkd#Àw¤YÀwpYÀwpÀwpÀwpYÀwpÀwpAÀtÈAÀwp, ÀtÈÀwp,~ÀwxÀuÌÀv|ÀuÀÀu¤€ÕÀwpÀw¤ÀwøÀuÄYÀwpÀwüÀu¼Àt4Y,ÀxYÀtÈAÀtÈAÀwp,YÀuÌ,ÀkdÀwp Àwp,Y,ÀkdYÀwp ,Àwp ,ÀtÈÀwp AÀy 6AÀy Ày8YÀt4YÀyPYÀw\Ày,Ày(Ày ,À^À]XÀ­8ÀkdÀyAÀkdAÀy , Àu¤, ÀyP,AÀkdAÀy , Ày ,l AÀkdAÀy ,AÀu¤AÀu¤Ày8YÀt4YÀyPYÀw\Ày0Àw\Ày,YÀy Ày(Ày,À^À]XÀ­8ÀkdÀy "AÀyP,À^À]XÀ­8ÀkdÀ^À]XÀ­8 Ày  ÀyP À^À]XÀ­8 ,ÀkdÀy ,Àu¤ À^À]XÀ­8ÀkdG Àt4Ày YUÀtÀtYUÀtÀkdY,1Àkd, ,ÀyP€•Àt4,,YÀtü]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ,,ÀkdYÀu¤,ÀkdYÀuÌ,YÀuÌ,Àkd,ÀtÄ ÀtÄ,Y,ÀkdYÀtÄ ,,,,ÀkdÀtÈ ÀthÀtÀÀtX ,,,,ÀkdÀ`À­8À[`,ÀkdÀ`À­8À\@ ,,,,,ÀkdÀ`À­8À[´ €á Y1Y5€áÀZüYU€á,Y, ÀZü, UYÀZüU€á, À[`U€á, À[´U€á, À\@U€á, U€á, U€á,€á U€á,, ,€çÀ`YÀZüYÀZüY,YÀ[´YÀ\@€Á€ÁYY,YU€á,YU€á,YU€á,YU€á,Y,Y,ÀtXÀt4ÀtxÀt Y,]ÀuÌ]ÀuÌÀuÌY,,,]0 ,ÀkdÀ^À]XÀ­8],ÀuÌÀs<Àu¼E À[`, Às<UÀu¼YÀuÌÀu¼,$,ÀkdÀ^À]XÀ­8],ÀuÌ ,Y,, uÀuÌÀ­8, ÀuÀ, ÀtÈ,],J Y,Àt¤]ÀuÌ]ÀuÌÀuÌY,Y,Y,Y,Y,,]6 ],Àt4]Y,Y,Y,Y,ÀkdÀt´E], AÀtÈ, ÀyUÀuÌÀwh`],ÀkdAÀtÈ,,Àt`Àt´Àt¤Àt¬]ÀuÌYYÀyÀuÌÀttÀtlÀ¼$],@ ,Àt4Àkd,ÀuÌ]Y,Y,Y,Y,Y,ÀtXE€Y,Y,Y,Y,AÀuÀ€Y ÀuÀ€Y€Y,Y,Y,Y,€³€Y,Y,Y,Y,YÀuÀAÀuÀ€YYÀuÀYuÀuÌÀ­8ÀtXÀt`Àt´YuÀuÌÀ­8Y,Y,Y,Y,Y,,]ÀuÌ]ÀuÌÀuÌ,Àt4Àkd,ÀuÌ]E8 Às<,,Àkd,YÀtüUYÀuÌÀuÌÀuÌ] ,ÀkdÀ^À]XÀ­8,Àt4ÀtÌ) ,,ÀtÌÀtÔÀu¼ÀtÜÀt¸YÀtÈ,ÀkdÀt4 Àt4,,YÀt4Àt4YÀt4YÀt4,Y,,!,ÀkdÀ^À]XÀ­8YÀt4 ,ÀuÌ Àkd, ,ÀtÄ ,À[` ÀkdÀuÌÀs<5 YÀ[´YÀ\@À[´À\@YÀ[´YÀ\@ YÀ[´ ÀkdÀ­8À` ,ÀZü ,ÀZü,U€á, U€á,ÀZü, ÀZüU€á,$ YU€á,UYÀZü U€á,À[` U€á,À[´ U€á,À\@ ,U€á, €áU€á, ,( À­8Àt €¨À‘”Y€¨À‘”Às<Às8Àu¤YÀyÀu¤YÀyÀuÌ €Y ÀwdÀu¤ €YÀuÀ ,uÀuÌÀ­8 ,ÀuÀ ,ÀtÈ UÀuÌÀwhÀy ÀuÌÀkd]Àv|]Àv|Àv| ÀkdÀ^À]XÀ­8, ,Àt4ÀkdQÀZœYYÀZœ 1YÀZœYYÀZœÀuÌ"À`À­8ÀkdQÀZüYÀuÌAAÀZœE0ÀuÌÀu¼,ÀdYYÀZœAAÀZœE€ ÀZàÀ¶YÀuÌÀ¼$Àu¼À»ˆ]À¶uYUÀtüÀuÌYÀuÌYUÀtüÀuYÀuÌUYÀuÌYÀuÌYÀuÌYÀuÌ(UÀZüYÀuÌÀ`À­8ÀZüÀZØUÀZüYÀuÌ> À[ Às<Àu¼,ÀdÀ[ÀuÀÀ[ÀZØUÀZüYÀuÌÀ`À­8ÀkdÀZüQQ,À`À­8ÀkdÀZü ÀkdQ EÀZœ EYÀZœ AAÀZœE EYÀZœ,,,Àu¤,ÀkdÀuÀYÀtüUYÀtü,UYÀtü,i Àu¤YYUÀuÌÀwhYYUÀuÌÀwhYUÀuÌÀwhÀuÌUYÀtü,,YÀtü,-,ÀkdÀuÀ,ÀuÌYYUÀuÌÀwhE%UYUÀuÌÀwhUÀuÌÀwh$UYUÀuÌÀwhUÀuÌÀwhj Àu¤UYUÀuÌÀwhUÀuÌÀwhUÀuÌÀwhYUÀuÌÀwhUYÀtü,,YÀtü,(,ÀkdÀuÀ,YYUÀuÌÀwhEx ÀuÀÀu¬Àu¤,€YÀtüYYUÀuÌÀwhÀuÌÀwhÀuÌYYUÀuÌÀwhUYÀtü,,YÀtü,ÀrxuÀrxYUÀtüÀuUYYUÀuÌÀwhÀuÌÀwdÀuÌYYUÀuÌÀwh,,,,,,],],,.,ÀkdYÀtüÀu¤ÀuÌYUÀtüÀu€ ,UYÀtüÀuÌYÀtüÀuÌÀuÌuYUÀtüÀuÌÀuÌYUÀtüÀuYUÀtüÀuÌÀuÌYUÀtüÀuYÀtüÀs< ÀtüÀuÌj"Àv„Àvˆ‚ñ‚ñÀvŒÀvÀv”Àv˜Àvœ Àv  Àv¤ Àv¨Àv¬Àv° Àv´ Àv¸Àv¼ÀvÀƒÅ IEEE Àt YÀtIEEEAÀtÀtô AÀt IEEE ƒåEEE ƒéEEE ƒíEEE=AÀtÀtôIEEEIEEEIEEEIEEE,ÀkdÀtô,,YY,ÀkdÀu¼,À™LÀ™L, ,À™Hh ]ÀuÌÀuÌ]ÀuÌÀw¤YÀuÌYÀuÌYÀwpÀwp]UÀwpÀwpÀwp]ÀwpÀwxÀv| Àvt,,ÀkdYÀvt|ÀvXYÀvt,ÀvdÀuÀ€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀuÌÀuÌÀu¼Àv`À¶p]À¶À¶,ÀkdÀvp Àvp,^ YÀvpAÀvpÀs<Às8YÀvpYÀvpYÀvpYÀvpYÀvpYÀvpYÀvp,ÀkdÀsðYÀvp,AAA,ÀkdÀtü€ÀtüÀuÌ€ÅÀtü,,]ÀuÌ]ÀuÌÀuÌ,ÀkdÀrxÀtü UÀtüÀu UÀtüÀu,YUÀtüÀuY, ,ÀkdÀrxYUÀtüÀu,ÀkdÀrxÀtü,8 ÀuÀuÌÀuÀupÀu Àu(Àu4ÀuÌÀu YÀuÌY,ÀkdÀrxÀtüÀuQYÀuÌ]ÀuÌÀ™HYÀuÌÀuÌ,YÀuÌÀs<YÀuÌÀuÌYÀuÌ,ÀkdÀrxÀup ÀX˜ UÀtü!YUÀtüYUÀtü ÀX¤ UÀu¼!YUÀu¼YUÀu¼!AYUÀtüYUÀtü!UYUÀu¼YUÀu¼!AYUÀu¼YUÀu¼ AYUÀtüYUÀtü AYUÀu¼YUÀu¼ UYUÀu¼YUÀu¼ UÀtü, UÀu¼,€Â }}UYUÀtüYUÀtüYUÀtüAYUÀtüYUÀtüYUÀtüUYUÀu¼YUÀu¼YUÀu¼AYUÀu¼YUÀu¼YUÀu¼,,,ÀkdÀv YÀuÌÀuÌYÀuÌ,,ÀkdÀrx,YÀuÌÀuÌÀuàÀuÌÀuÌ,ÀkdÀrx,ÀuÌoÀuÌÀuØÀu¼YÀuÌÀs<ÀuØÀuäÀuÜ,ÀuÔYÀtüÀuÌYÀtüÀtüYÀtüÀkdÀrxÀuèÀuì,ÀkdÀrxÀuÌ,ÀkdÀrx,YÀuÌ,ÀkdÀrxÀuÌ,ÀkdÀuÌAUÀuÌÀwh, YY, YUÀuÌÀwhY, Y,, ,,-,,AUÀuÌÀwh,Y,YY,,;,ÀkdÀrxYYUÀuÌÀwhÀuÌYUÀtüÀu ÀtüUÀtüÀu&YUÀtüÀuYÀtüÀtü,,,Àkd,YÀtüY,SuYUÀtüÀuÌYÀuÌYUÀtüÀuYÀuÌYUÀtüÀuÀrx YUÀuÌÀwhÀuÌÀrxAUÀuÌÀwhÀuÌ6,ÀkdYYUÀuÌÀwhÀuÌYUÀtüÀuDuYUÀtüÀuÌUYUÀuÌÀwhÀuÌYUÀtüÀuCuYUÀtüÀuÌUYUÀuÌÀwhÀuÌYUÀtüÀuUYUÀuÌÀwhÀuÌnuYUÀtüÀuÌUYUÀuÌÀwhÀuÌYUÀtüÀuÀuÌYUÀtüÀuYUÀuÌÀwhQuYUÀtüÀuÌuYÀuÌYYUÀuÌÀwhÀuÌYUÀtüÀuPuYUÀtüÀuÌuYÀuÌYYUÀuÌÀwhÀuÌYUÀtüÀu(uYÀuÌYYUÀuÌÀwhÀuÌruYUÀtüÀuÌuYÀuÌYYUÀuÌÀwhÀuÌYUÀtüÀuÀuÌYÀuÌYUÀtüÀu-,ÀkdYYUÀuÌÀwhÀuÌYÀuÌ& YUÀuÌÀwhYUÀuÌÀwh UÀtüÀuÌÀtüiUYÀtüYUÀtüÀuÌYÀtüYUÀtüÀuÌÀuÌYYUÀuÌÀwhYÀtüYÀuÌLUYÀtü,ÀkdYUÀtüÀuÌYÀtüYYUÀuÌÀwhÀuÌ€›]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌYUÀtüÀuÌYÀtü6UYÀtü,ÀkdÀuÀYYUÀuÌÀwhÀuÌUYÀtü,,YÀtü,MuYUÀtüÀuÌÀuÌYUÀtüÀuÀuÌYUÀtüÀuÀrx, Àt ,Àvt ,Àvp ÀkdÀu ÀtüÀuÀuÀuÀupÀup UÀtüÀu ÀtüÀu# AUÀtüÀuUÀtüÀu ÀkdÀrx Y,UÀtüÀu UÀtü Àtü UÀtü ÀX  ÀXœ"AYUÀtüYUÀtüÀXœ ÀX ÀXœ YUÀtüYUÀtü UÀu¼ Àu¼ UÀu¼ ÀX¬ ÀX¨"AYUÀu¼YUÀu¼ÀX¨ ÀX¬ÀX¨ YUÀu¼YUÀu¼ Àtü ,UÀtü Àu¼ ,UÀu¼ ÀkdÀrxHÀuÌÀwhÀs<Às8]À“À]ÀuÌ]À“À]ÀuÌÀuÌÀ“À ,UÀuÌÀwh ,, AUÀuÌÀwh, UÀuÌÀwh, Y,YUÀuÌÀwh , ,Y, ,,, UÀtüÀuÀu ÀuUÀtüÀu YUÀtüÀuÀtü ÀkdÀtü Às<Àtü ÀkdYÀuÌ Àtü UÀuÌÀwhUÀuÌÀwh ÀkdYUÀtüÀuÌ UÀuÌÀwhUÀuÌÀwh& YUÀuÌÀwhYUÀuÌÀwh ÀtüUÀtüÀuÌ YÀ¶YYYUY,ÀkdY,ÀkdÀ¶À¶À»”YU]] U]] U]]YU]]Y1 ,Àµì À»„,Y,YÀ»„ ,Y, ƒñ UY,Y,À¶8À¶@ À¶,+ À¶$À¶ÀµìÀ¶À¶À¶8À¶<À¶@,ÀkdY,À¶Y,,]Y,,,ÀkdY,]À¶h]],ÀkdY,À»0 À»0,!,]YÀ»0À»0YÀ»0",ÀkdY,]YÀ»0À¶ U,] U,]1 Y,Y,U,],],YÀ»0À¶,ÀkdY,À»ˆ,ÀkdY,À»¤,,,]À¶]À¶,ÀkdY,À»”,ÀkdY,À¶pUYÀ¶À¶UYÀ¶À¶1YÀ¶UYÀ¶À¶À¶YÀ¶Y,0 ,ÀµüÀµü,,]À¶p]À¶p]À¶p,,ÀkdY,À»œU]Àº(Àº(Àº4Àº8Àº@‚ñ‚ñÀºDÀºH ÀºPÀºT ÀºX Àº\ Àº` ]]Àº(E ]] ,]Àº(,]Àº( ,À»¤']À¶p]À¶p]À¶pÀ¶pÀ¶À»œ Àº Àº À»ˆ À¼$À»”%]À¶p]À¶p]À¶pÀ¶p À¼$À»œÀ»¤À»üÀ»ìÀ»üÀ»ìÀ¼$, ],,,],Y,,YUU, À»ˆ À»ˆ, À»¤, À»œUU, À»”, À»ˆUUÀ»ˆ UUÀ»ˆ& UYUUÀ»ˆUU, UU, UU,U UU,,;Y,Y,YUU,Y,YUU,Y,,Y,ÀkdÀ¼$Y,À»¨À»ŒÀ» À»˜ À¼$ À¼$,€‡Y,],Y,]À¶]À¶À¶,Y,YÀ»¤À»ŒYÀ»œYÀ»”Y,Y,Y,Y,À¼(YÀ»ˆYÀ»ˆÀ»ˆ,ÀkdÀ¼$,Y,,,, U]] ,À»„ ÀkdY, ,À¶ ,À»0 ÀkdY, ,À»ˆ ,À»ˆ, À»ˆ ,À»¤ À»¤ UU, UU,À»œ À»œ ,À»” À»” AÀ»ˆ, AÀ»ˆ,UUÀ»ˆ ,UUÀ»ˆ UU,UUÀ»ˆ, UUUÀ»ˆ ÀkdÀ¼$Y,YUUÀ»ˆUYUUÀ»ˆ UUÀ»ˆU UUÀ»ˆUU,"YUUÀ»ˆAÀ»ˆ,* YUU,UYUUÀ»ˆ UUÀ»ˆ UUÀ»ˆÀ»ˆ ,UU, UUU, ,À¼$ À¼$,,,Y,,Y,Às<À`À­8ÀuÌ1,Y,]Y,A,YY%YA,AA,Y$ÀuÌÀµÌÀ`À­8YÀuÌÀ¶ÀjÔÀjäÀjÜ€‘ÀuÌÀu¼ÀjÔÀjäÀt €¨À‘”]€¨À‘”]€¨À‘”€¨À‘”ÀjÜÀ¼$ÀµÌUÀu¼YÀuÌYÀuÌ]À¶]À¶À¶ÀjÔ]ÀuÌÀs<À`À­8ÀuÌ À¶ÀuÌnYÀuÌUÀu¼YÀuÌYÀuÌÀu¼ÀttÀjÔÀjäÀt ÀjÜÀ¼$ÀµÌYÀuÌYUÀtüÀuÌÀjÔ Àj¼ÀuÌCAAÀuÌAu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌ ÀZ) ÀZAÀuÌAÀs<À`À­8 Àj¼ÀuÌBAAÀuÌAu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌ ÀuÌu€Á Àj¼ÀuÌ ÀZ* ÀZAÀuÌAÀs<À`À­8 Àuu€Á Àj¼ÀuÌ AÀuÌ€ï€Á Àj¼ÀuÌAAÀuÌAu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌÀj¼ÀuÌÀu¼Àt4ÀZu€Á Àj¼ÀuÌu€Á Àj¼ÀuÌÀtüu€Á Àj¼ÀuÌ€Á Àj¼ÀuÌ_ u€Á Àj¼ÀuÌÀZAÀuÌAÀs<À`À­8ÀuÌu€Á Àj¼ÀuÌAÀuÌA(ÀZAÀuÌAÀs<À`À­82ÀZAÀuÌAÀs<À`À­8ÀuÌ1AÀuÌAÀs<À`À­8ÀZÀuÌ'AÀuÌEÀs<À`À­8ÀZÀuÌ&AÀuÌÀs<À`À­8ÀZÀuÌ)]ÀuÌAÀuÌÀs<À`À­8ÀuÌAÀuÌAÀuÌ$YÀuÌÀs<À`À­8ÀZÀuÌÀs<Àu¼ÀuÌÀs<À`À­8ÀuÌÀuÌÀs<À`À­8ÀuÌÀu¼-ÀuÌÀ`À­8ÀµÌYÀuÌYÀuÌÀ¶1]ÀuÌÀ`À­8À¶ÀµÌYÀuÌYÀuÌ ÀuÀu'YÀuÀ­8YUÀtüÀuÌÀtüT UYUÀtüÀuÌYÀuÌYÀuÌYUÀtüÀuÌYUÀtüÀuÌJUYUÀtüÀuÌYÀuÌÀ­8YÀtüYÀuÌYÀtüYÀtü À™HÀu¤ÀuÀÀu¬Àu¤À™H ÀuÀÀs<ÀZTÀuÌÀwhYYÀZTÀs<ÀuÀÀZTYUÀtüÀuÌÀZT ÀZTÀZT.YYÀZTYUÀtüÀuÌYYÀZTÀZdÀs<À»0ÀuÌ1]Àº(]Àº(Àº(Às<À»0YÀuÌÀ¶)ÀZ|Às<À`À­8ÀµÌYÀuÌÀ»0    €½  Àº(À­8E Àº(À­8ÀZdÀs<ÀuÌ Às<ÀuÌ ÀZ|Às<À`À­8€¨À‘¤ ÀZ¬ AÀ‘´ ÀZ° ÀZ´ €¨À‘¬€¨À‘¬]E4€¨À‘¬À­8€¨AÀ‘´AUU€¨À‘¬€¨À‘¸À­8)€YÀtüYÀtü]ÀuÌYÀuÌe€YÀtüYYUÀuÌÀwh]ÀuÌÀwh]ÀuÌYÀtüYÀuÌUYÀtüYÀtü:€YÀtüYÀtü]ÀuÌYÀuÌÀs<ÀuÌÀuÀ À­8]ÀuÌ]ÀuÌÀuÌÀs<À`À­8ÀuÌaÀ[À[ÀZØÀZØÀ[À[ÀuÀÀuÀÀs<À[ À[ ÀuÌÀuÌÀ[À[€¨À‘¬€¨À‘¬ÀZüÀZü]ÀuÀ]ÀuÀÀuÀÀuÀÀs<]ÀuÀ]ÀuÀlÀ[ÀÀ[ÀÀ[¨À[¨À[¼À[¼]ÀuÀ]ÀuÀ]ÀuÀ]ÀuÀÀs<À[ÄÀ[Ä€¨À‘¸€¨À‘¸À[´ À[´À[´ €¨À‘¼fÀ\HÀ\HÀuÀÀuÀÀuÀÀuÀÀ[´À[´Às<À\LÀ\LÀ\4À\4À\PÀ\P€¨À‘¼€¨À‘¼À\@ À\@À\@À[ÀZØÀ[ÀuÀÀ[ÀZüU]]U]]G À[ÀÀ[¨À[¼]ÀuÀ]ÀuÀ]]U]]À[ÄÀ[´À[´uu5 À\LÀ\4À\HÀuÀÀuÀÀ[´uÀ\PÀ\@À\@] / À[ÀZØ] ÀZàÀZPÀ[ÀuÀÀuÌÀ[ (ÀZüÀ`À­8YUÀtüÀuÌÀZü8YUÀtüÀuÌYÀtüYÀtüYÀuÌYÀuÌ À‘´€¨À‘”ÀuÌ]ÀuÌÀ`À­8€¨À‘¬€¨]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌYÀtüUYUÀtüÀuÌYÀuÌÀyÀs<À­8ÀuÀÀyÀyÀuÌÀwh5ÀyÀuÌYÀtüYÀtüYYÀy]ÀuÌYÀtüYÀuÌYÀuÌÀ]HÀs<À`À­8ÀZüXYÀtüYÀuÌYÀtüYÀuÌYYÀuÌYYÀuÌAÀuÌAÀuÌÀj"Àj Às<À`À­8ÀZüÀZü!Àj Às<À`À­8À[´À[´L À]H]ÀuÌYÀtüÀ]H]ÀuÌYÀtü]ÀuÌ]ÀuÌÀuÌÀuÌDÀZäÀt¤ÀZPÀ¼$À¶pÀuÌYÀuÌYÀuÌÀ¶À¶= UÀwpÀuÌÀs<À`À­8ÀZØÀxèYÀuÌYÀwpÀ¶pUYÀwpÀuÌUÀwpUYÀwpÀuÌ> ‚ñ‚ñUYÀwpYÀwpYÀwpYÀwpYÀuÌ8UÀwpUYÀwpÀuÌÀs<À­8ÀuÌYÀwpE UYÀwpUYÀwpÀuÌ UYÀwpÀuÌÀwpUYÀwpUYÀwpÀuÌH YUYÀwpUYÀwpÀuÌÀuÌYÀwpYÀwp‚ñ‚ñ2UÀwpÀuÌÀs<À­8ÀuÀÀwpÀuÌYÀwp<ÀwpÀuÌÀu¤UYÀtüÀuÌYÀtüÀuÌYÀuÌ;UÀwpÀuÌÀs<À­8ÀuÌÀuÀÀxèYÀuÌYÀwpSÀxèÀ[ÀZØÀs<À[ÀuÀÀuÌÀ[ À[€¨À‘¬À­8À`À¶pYÀuÌ(ÀwpÀ`À­8ÀZüYÀuÌYÀwpAÀuÀ] À]ˆ Às<AÀu¬AÀuÀ]!ÀtTÀt4AÀuÀ]]0YÀs<]AÀu¬AÀuÀ]Àu¼ ]']ÀZüÀs<]ÀuÌ] ÀuÀ €¨À‘´ À»ˆÀZüJ ÀjÔÀjäÀt €¨À‘”€¨À‘´]ÀjÜÀ¼$ÀZPÀ»Œ] ÀjÔ)YÀZü]À]XÀs<À`À­8ÀuÌ €¨À‘¸1€¨À‘¸ €¨À‘¸À[´ À»œÀ[´_ÀjÔÀjäÀt €¨À‘”€¨À‘¸]€¨À‘¸]EÀjÜÀ¼$ÀZPÀ» À]¨YÀjÔ)YÀ[´]À]XÀs<À`À­8ÀuÌ YYÀ[´ YÀ[ +]À]ÐÀ]ÜYYÀ[´YÀ[ À[ :]À]Ð]À]ÐYÀ[´YÀ[`YÀ\@YÀ[ EÀZPYÀZüÀs<À`À­8ÀuÌ ÀuÀÀZü4 Às<À`ÀjÔÀjäÀt €¨À‘”Àu¼Àt4ÀjÔYÀZüÀ^À­8ÀuÌ À^´ AAAÀ^¨,YAAAYÀ^¨ Y À^¨ YY€¥Y À^¨ À^¨ À^¨YA+YYYYYÀ^¨Y*À^¨AAAYYAAA YYAAA+YYAAAYY À^¸$ AAAYÀ^¨ Y"YYYYYY8YYAAAYYYÀ^¨AAYAAAY/YYAAAYYY À^ÀAAAA À^È AAA AAAAA À^Ä AAA À^Ð% AAAAA À^Ô À^Ø À^Ü YY À^äAAALYYÀ^ AAAAAAAYYÀj 0YYÀZüÀ^ Às<À`À­8YYÀZü0YYÀ[´À^ Às<À`À­8YYÀ[´YYÀZü'YÀZüÀs<À`À­8YYÀZü 1YÀ[´YYÀ[´Àj 'YÀ[´Às<À`À­8YYÀ[´2YYÀZüÀ^]À]XÀZÀ^ À­8ÀuÌ2YYÀ[´À^]À]XÀZÀ^ À­8ÀuÌ$YÀ[ À^]À]XÀ­8ÀuÌYYÀ[´.YÀ[´À^]À]XÀZÀ^ À­8ÀuÌÀ]Ð=]À]Ð]À]ÐÀ]ÐÀ]ÜYYÀ[´À]ØYYÀZü%]À]ÐÀ^À]XÀ^ À­8ÀuÌ YÀZüÀ^À­8À]XÀuÌ YÀ[´À^À­8À]XÀuÌ[ Às<À`ÀZüYÀZüYÀZüÀZüYÀuÌYYÀuÌYYÀuÌYÀuÌÀuÌÀ_(À^ÀuÌÀ­8À]X1Às<À_(ÀuÌYÀuÌYÀuÌÀuÌYÀuÌ(]UÀuÌÀuÌÀ^À­8À]XÀuÌÀ^À­8À]XÀ\@2À`ÀuÌ]UÀuÌÀuÌ]UÀuÌÀuÌÀuÌÀ^À­8À]XÀ\@ Às<À` ]À‘”À‘”E Às<À`À­8ÀuÌÀu¼ÀtXÀttÀuÌÀuÌÀu¼YÀuÌÀuÌ Àt4ÀttÀtt1 À`À­8Àt €¨À‘”Y€¨À‘”ÀuÌ À`À­8YÀuÌÀµÌ ÀuÌÀ¶ÀZÀZeAÀZE AÀZ AÀZ ÀZ ÀZ ÀZAÀuÌA ÀZu€Á Àj¼ÀuÌ€Á Àj¼ÀuÌ8 u€Á Àj¼ÀuÌÀuÌu€Á Àj¼ÀuÌ ÀZ7 u€Á Àj¼ÀuÌÀuu€Á Àj¼ÀuÌ AÀuÌE EÀuÌE ÀuÌ ]ÀuÌÀuÌ]ÀuÌ À­8YUÀtüÀuÌ8 ÀuÀuÌÀu Àu(Àu4ÀuÌÀu YÀuÌÀuÀup ÀuÀu YÀu EÀtüÀtü(À¼$ÀZPÀu¼À¶YÀuÌÀ¼$ Àu¼À¶YÀuÌÀ¼$eAÀZPE AÀZP AÀZPÀ¼$À¶YÀuÌÀ¼$ ÀZPYUÀtüÀuÌ YÀtüÀ­8LUÀu¼YÀuÌYÀuÌÀu¼uÀµÌYÀ¼$À¼$À¼$ÀµÌYÀ¼$ÀZPÀs<ÀuÌÀZT]ÀuÌ ]ÀuÌeAÀZTE AÀZT AÀZT ÀZTÀZTÀZd ÀZdÀº(ÀZdÀZdÀuÌÀZdeAÀZdE AÀZd AÀZd(Àº( Àº( Àº(WRMicrosoft.FSharp.Compiler.Infos+OptionalArgCallerSideValue+Constant@DebugTypeProxy(ÀZd ÀuÌÀZd ÀZdXSMicrosoft.FSharp.Compiler.Infos+OptionalArgCallerSideValue+PassByRef@DebugTypeProxy ÀZl ÀZpÀZ|ÀZ| ÀZ|ÀZdeAÀZ|E AÀZ| AÀZ|PKMicrosoft.FSharp.Compiler.Infos+OptionalArgInfo+_NotOptional@DebugTypeProxyOJMicrosoft.FSharp.Compiler.Infos+OptionalArgInfo+_CalleeSide@DebugTypeProxy ÀZdNIMicrosoft.FSharp.Compiler.Infos+OptionalArgInfo+CallerSide@DebugTypeProxyÀZ„ ÀZ„ÀZˆ ÀZˆ ÀZŒÀZœÀZ|]ÀuÌ ÀZ|]ÀuÌeAÀZœE AÀZœ AÀZœ AÀ‘´ ÀZ¬ AÀ‘´ À‘¬  À‘¸ À‘´À‘¸ UU (]ÀZP (]À¶ (YÀ»0#ÀZØÀZP]À¶À»ˆYÀtüÀZØÀu¼Àt¤]À¶À»ˆÀZØeAÀZØE AÀZØ AÀZØÀZà ]ÀZP ÀZàÀZP ]À¶]ÀZP]ÀZPÀZP YÀ»0 YÀ»0À»ˆÀ»ˆÀº Àº À»@À»H À»0ÀuÌ YÀuÌÀ`À­8YÀuÌ À»0ÀZT YÀZTÀ`À­8YÀuÌÀZäÀZàÀZPÀs8À¶À·, Às<À»0ÀµÌYÀuÌÀ¶ ]ÀuÌÀ`À­8YÀuÌ ÀuÌÀ`À­8YÀuÌUYÀuÌÀµÌUYÀuÌÀµÌ9UYÀuÌÀµÌ]À¶À¶YÀuÌÀµÌYÀtü)ÀZüÀ`À­8ÀZP]À¶] À»ˆ(ÀZP ÀZP]À¶À»ˆYÀtü ÀZPIDMicrosoft.FSharp.Compiler.Infos+ILMethInfo+ILMethInfo@DebugTypeProxy(Àt¤ Àu¼Àt¤]À¶À»ˆ Àt¤KFMicrosoft.FSharp.Compiler.Infos+ILMethInfo+ILFSMethInfo@DebugTypeProxy ÀZà ÀZä ÀZØÀ`À­8YÀuÌÀµÌYÀuÌÀ¶ ÀuÌÀ»0 ÀZTÀ»0 (]ÀuÀÀZüÀs<ÀuÌÀuÀ] ÀZüÀs<ÀZØ] ÀZüÀs<ÀuÌ ÀZüÀs<€¨À‘¬À`À­8eAÀZüE AÀZüÀ[À[€¨À‘¬À­8 À[ À[*À[ÀZØÀ[ÀuÀÀ[€¨À‘¬À­8À[ÀuÀÀu¤À[ÀuÀÀs<À[Às<À[I À[ÀZØÀ[ÀuÀÀuÌÀs<UYÀtüÀuÌÀu¤YÀtüYÀuÌ%À[ÀuÀÀu¤À[€¨À‘¬À­8À[ ]ÀuÀ YUÀuÌÀwh/À[ÀZØÀ[ÀuÀÀs<À[€¨À‘¬À­8%À[À[ÀuÀÀ[€¨À‘¬À­8*€YÀtüYÀtü]ÀuÌYÀuÌ] À[ÀZØÀ[ÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌÀ[€¨À‘¬À­8 À[À[À[€¨À‘¬À­89 À[À[ÀuÀÀ™HÀu¤À™LÀ™LÀ[€¨À‘¬À­8À[À[ÀuÀÀs<Àu¤ À[ÀZØÀ[€¨À‘¬À­84 À[À[ÀuÀÀs<Àu¬Àu¤À[€¨À‘¬À­8/À[À[ÀuÀÀu¬Àu¤À[€¨À‘¬À­8À[ÀZØÀ[ÀuÀ À[À[ÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌ]ÀuÌYÀuÌYÀtüYÀtüYUÀtüÀuÌÀ[YYÀZTAUÀuÌÀwhÀZT YUÀuÌÀwhYÀZT€³À[ÀZØÀ[ÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌYÀuÌYÀtüYÀtüYYÀZTAUÀuÌÀwhÀZTYUÀtüÀuÌÀ[€¨À‘¬À­8À`" YYÀuÌÀ`À­8YÀuÌ/À[À[ÀuÀÀuÌÀ[€¨À‘¬À­8À` UÀuÌÀwhuÀZ|*À[ÀZØÀs<À[ÀuÀÀ[€¨À‘¬ YYuÀZ|À`À­8U]ÀuÌYYÀy!AUÀuÌÀwhUÀuÌÀwhU]ÀuÌYYÀyqÀs<Àu¼YÀtüYÀtüUYUÀtüÀuÌYÀuÌYÀuÌYÀtüUYUÀtüÀuÌYÀuÌYÀuÌU]ÀuÌYYÀyÀ[ÀZØÀZPÀ[€¨À‘¬]ÀuÌYYÀyÀ[ÀuÀÀuÌÀs¼Àu¤ÀsÄ€YÀtüYYUÀuÌÀwh]ÀuÌÀwhUYÀtüYÀtüYÀtüYUÀtüÀuÌAUÀuÌÀwhUÀuÌÀwh]ÀuÌ ÀyÀ`À­8AuÀZ|AÀZTÀZœ YYÀZT# YuÀZ|YÀZTYÀZœ€ÆYYÀZTÀ[ÀZØÀ[ÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌYÀuÌYÀtüYÀtüYYÀZTAUÀuÌÀwhÀZTÀ[€¨À‘¬À`AuÀZ|AÀZTÀZœ" YYÀZœÀ`À­8YÀuÌ4 À[ÀZØÀZàÀZPÀ[ÀuÀÀuÌÀs<À[ À[(]  Às<ÀuÌÀuÀ]  ] C>Microsoft.FSharp.Compiler.Infos+MethInfo+FSMeth@DebugTypeProxy(ÀZØ Às<ÀZØ]  ÀZØC>Microsoft.FSharp.Compiler.Infos+MethInfo+ILMeth@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Infos+MethInfo+DefaultStructCtor@DebugTypeProxy (€¨À‘¬ Às<€¨À‘¬À`À­8 €¨À‘¬IDMicrosoft.FSharp.Compiler.Infos+MethInfo+ProvidedMeth@DebugTypeProxy À[ À[ À[  À[ €¨À‘¬ À‘¬ YUÀuÌÀwh À‘¬ À‘¬ (]Àº((À¶tÀ[`ÀZPÀ»¤ À[`Às<€¨À‘°À`À­8À[`eAÀ[`E AÀ[` AÀ[`À[l €¨À‘° €¨À‘° À[lÀ­8€¨À‘°À[hÀZP%À[lÀ­8€¨À‘°À`À[hÀZP À[hÀZPÀ[lÀ­8À[hÀ[lÀ[hÀZPÀ¼$ À[lÀ­8€¨À‘°À[hÀ»¤ ]Àº(À[lÀ­8€¨À‘°À[hA À[lÀ­8€¨À‘°À[hÀZPÀ»¤ÀµÌYÀuÌYÀuÌÀ¶ ÀuÌÀ`À­8 À¶t(À»¤ ÀZPÀ»¤KFMicrosoft.FSharp.Compiler.Infos+ILFieldInfo+ILFieldInfo@DebugTypeProxy (€¨À‘° Às<€¨À‘°À`À­8 €¨À‘°MHMicrosoft.FSharp.Compiler.Infos+ILFieldInfo+ProvidedField@DebugTypeProxy À[h À[l À‘”À‘° À‘° À‘° À‘°À[ YÀuÌÀuÈ YÀuÌÀuÈeAÀ[ E AÀ[  AÀ[  ÀuÈÀtÈÀ[¤YÀuÌÀuÄ YÀuÌÀuÄeAÀ[¤E AÀ[¤ AÀ[¤ÀtÄ ÀuÄÀtÄ(À»œÀ[¨ÀZPÀ»œ ÀZPÀ»œeAÀ[¨E AÀ[¨ AÀ[¨ ÀµüÀµü À¶ÀZT ÀZPÀ»œ YÀZTÀ`À­8(ÀZPÀ»œÀµÌYÀuÌYÀuÌÀ¶ À`À­8ÀZPÀµÌYÀuÌYÀuÌ ÀZTÀ¶#À[´Às<ÀuÌ]ÀuÀ]ÀuÀÀ[´Às<À[¨ À[´Às<€¨À‘¸À`À­8À[´eAÀ[´E AÀ[´À[¼]ÀuÀÀuÀÀs<À[´/À[¨À[¼ÀuÀÀu¤À[Ä€¨À‘¸À­8À[´*À[ÀÀ[¨À[¼À[Ä€¨À‘¸À­8À[´*À[ÀÀ[¨ÀZPÀ[Ä€¨À‘¸À­8À[´*À[¨À[¼ÀuÀÀ[Ä€¨À‘¸À­8À[´4 À[¨À[¼ÀuÀÀu¬Àu¤À[Ä€¨À‘¸À­8À[´G À[¨À[¼]ÀuÀÀuÀÀuÌÀs<Àu¬Àu¤À[Ä€¨À‘¸À­8À[´À[¼ÀuÀÀ[´S À»œÀ[ÀÀ[¼]ÀuÀÀuÀÀs<YYUÀuÌÀwhÀ[Ä€¨À‘¸À­8À[´À[¼]ÀuÀÀuÀÀuÌÀs<*À[¼ÀuÀÀu¤À[Ä€¨À‘¸À­8À[´ À[¼ÀuÀ€ŠÀ[¨À[¼]ÀuÀÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌYÀuÌYÀtüYUÀtüÀuÌÀ[Ä€¨À‘¸À­8À[´x À[¨À[¼]ÀuÀÀuÀÀuÌÀs<€YÀtüYÀtü]ÀuÌYÀuÌYÀuÌYÀtüÀ[Ä€¨À‘¸À­8À[´ YÀZœÀ`À­8G À[ÀÀ[¨Às<À[¼]ÀuÀÀuÀÀuÌÀ[Ä€¨À‘¸À­8À`À[´ Às<ÀuÌ]ÀuÀ]ÀuÀC>Microsoft.FSharp.Compiler.Infos+PropInfo+FSProp@DebugTypeProxy(À[¨ Às<À[¨ À[¨C>Microsoft.FSharp.Compiler.Infos+PropInfo+ILProp@DebugTypeProxy (€¨À‘¸ Às<€¨À‘¸À`À­8 €¨À‘¸IDMicrosoft.FSharp.Compiler.Infos+PropInfo+ProvidedProp@DebugTypeProxy À[¼ À[À À[Ä À‘”À‘¸ À‘¸ €¨À‘¸ À‘¸ À‘¤À‘¸ ]À‘¤Y€¨À‘¤@ À`€¨À‘¸À­8€¨À‘¤]ÀuÌY€¨À‘¤ÀZT1€¨À‘¤Y€¨À‘¤ Y€¨À‘¤(À»”À\4ÀZPÀ»” ÀZPÀ»” À»”eAÀ\4E AÀ\4 AÀ\4 À\8À\@Às<À[´ÀuÀÀuÀÀ\@Às<À\4 À\@Às<À`€¨À‘¼À­8À\@eAÀ\@E AÀ\@ AÀ\@ €¨À‘¼/À\LÀ\4ÀZPÀ\HÀ\PÀ­8€¨À‘¼À\@ À\HÀ\@ À\HÀ\PÀ­8€¨À‘¼À\@ À\LÀ\4À\HÀ\PÀ­8À\@*À\LÀ\4À\HÀ\PÀ­8€¨À‘¼À\@> À\LÀs<À\4À\HÀ[´ÀuÀÀ\PÀ­8€¨À‘¼À`À\@> À\LÀs<À\4À\HÀuÀÀ[´À\PÀ­8€¨À‘¼À`À\@À\HM À\LÀZPÀ»”ÀµÌYÀuÌYÀuÌÀ¶À\HÀ[´À\P€¨À‘¼À\@ Às<À[´ÀuÀÀuÀE@Microsoft.FSharp.Compiler.Infos+EventInfo+FSEvent@DebugTypeProxy(À\4 Às<À\4 À\4E@Microsoft.FSharp.Compiler.Infos+EventInfo+ILEvent@DebugTypeProxy (€¨À‘¼ Às<À`€¨À‘¼À­8 €¨À‘¼KFMicrosoft.FSharp.Compiler.Infos+EventInfo+ProvidedEvent@DebugTypeProxy À\H À\L À\P À‘”À‘¼ €¨À‘¼ À‘¼ À‘¼ À‘´À‘¼ AUÀuÌÀwhÀZT YÀZTYUÀuÌÀwh6 €¨À‘¬À­8À`€¨À‘¤Y€¨À‘¤ÀuÌ YÀ»0 uÀZ|9 À`À­8ÀZØÀs<À»0ÀZ|YÀ»0uÀZ| 1À»0 YÀ»0 YÀ»0 1uÀZ| uÀZ| YuÀZ|ÀuÌÀwhÀs8 uÀZ|UÀuÌÀwh €¨À‘¤G À`À­8€¨À‘¬Às<€¨À‘¤ÀZ|Y€¨À‘¤uÀZ|: À`À­8YÀuÌÀZØÀZPÀ»0ÀuÌYÀ»0Ày 1Ày Ày YÀy uÀ‘¤J À`À­8€¨À‘¬€¨À‘¤]ÀuÌuY€¨À‘¤Ày u# AUÀuÌÀwhUÀuÌÀwhUÀuÌÀwh@ À­8€¨À‘¬À`€¨À‘¤]ÀuÌY€¨À‘¤ÀZT€¨À‘”]E ÀZ| AÀZTÀZœuÀZ| AuÀZ|AÀZTÀZœ uÀZ|ÀZTÀZœ# YÀZœYuÀZ|YÀZT(YUÀtüÀuÌ8À]HYYÀuÌ]ÀuÌYÀtüYUÀtüÀuÌ4 YYÀuÌ]ÀuÌYÀtüYUÀtüÀuÌ YUÀtüÀuÌeAÀ]HE AÀ]H AÀ]H Àj Às<Àj Àj Às<À]XÀ]XYÀt]Àu¼À]XeAÀ]XE AÀ]X AÀ]XÀ]XL À]`À]`]Àu¼]Àu¼YÀtYÀt]Àu¼]Àu¼Àu¼Àu¼Às<À]XÀ]X YÀt]Àu¼QLMicrosoft.FSharp.Compiler.Infos+AccessorDomain+AccessibleFrom@DebugTypeProxy À]` À]h À]l Às<À­8YÀwpÀuÌ UÀwpUYÀwpÀuÌYÀwpYÀwpÀwp UÀwpUYÀwpÀuÌYÀwpÀuÌ4 AUÀwpUYÀwpÀuÌUYÀwpÀuÌAÀu¬AÀuÀ] À]ˆAÀu¬ÀuÀ]Àu¬Àu¤]Àu¬Àu¬ ]ÀuÀ À‘´À‘”Y€¨À‘´< Às<À`À­8€¨À‘´€¨À‘´Y€¨À‘´ÀZü1€¨À‘´Y€¨À‘´ Y€¨À‘´ ÀZüÀ»ˆ ]Às<ÀuÌ]  ]ÀZüÀu¬ÀuÀ€íÀ[´À[´ =À[´AÀ[´AÀ[´MÀ[´À[´MAA€íÀ[´À[´-=À[´AÀ[´AÀ[´MÀ[´À[´! Às<À`À­8ÀuÌ]À]X À[´Àu¤ Àu¬ÀuÀ%À[´À[´%À[´À[´%À[´À[´@ À[´À[¼]ÀuÀÀ[¼]ÀuÀÀuÀÀuÀÀuÌÀ[´]ÀuÀ À[´ À[´À[´ MÀ[´À[´ UÀ[´À[´Y%À[´À[´= À]¨%À[´À[´UÀ[´À[´Y%À[´À[´À[´1%À[´À[´Y%À[´À[´ Y%À[´À[´ 1À[´ YÀ[´ À‘¸À‘” À‘¸À‘” À[´€¨À‘¸ Às<ÀZP À[´À»œ ]Àu¬ÀuÀÀ]ÐYYÀZüÀ]ÐYYÀ[´ À]ÐÀ[ À]ÐYÀ\@À]ÐYÀ[`eAÀ]ÐE AÀ]Ð AÀ]Ð(YYÀZü YYÀZü YYÀZüLGMicrosoft.FSharp.Compiler.Infos+HierarchyItem+MethodItem@DebugTypeProxy(YYÀ[´ YYÀ[´ YYÀ[´NIMicrosoft.FSharp.Compiler.Infos+HierarchyItem+PropertyItem@DebugTypeProxyOJMicrosoft.FSharp.Compiler.Infos+HierarchyItem+RecdFieldItem@DebugTypeProxy (YÀ\@ YÀ\@ YÀ\@KFMicrosoft.FSharp.Compiler.Infos+HierarchyItem+EventItem@DebugTypeProxy (YÀ[` YÀ[` YÀ[`MHMicrosoft.FSharp.Compiler.Infos+HierarchyItem+ILFieldItem@DebugTypeProxy À]Ø À]Ü À]à À]ä À]è6ÀÁ uu]À]XÀZÀ­8ÀuÌYYÀZü6ÀÁ uu]À]XÀZÀ­8ÀuÌYYÀ[´-ÀÁ uU]À]XÀ­8ÀuÌYÀ[ -ÀÁ uU]À]XÀ­8ÀuÌYÀ[`-ÀÁ uU]À]XÀ­8ÀuÌYÀ\@)ÀÁ uUÀ]XÀ­8ÀuÌ]À]Ð$ÀÁ uÀZÀ­8ÀuÌYÀuÌ=U]À]X=UÀ]X ÀZ" u]À]XÀZYYÀZü" u]À]XÀZYYÀ[´ U]À]XYÀ[  U]À]XYÀ[` U]À]XYÀ\@ UÀ]X]À]Ð ÀZYÀuÌ"=U]À]X=UÀ]Xu]À]XÀZ!uu]À]XÀZÀ­8ÀuÌ5ÀÁ uu]À]XÀZÀ­8ÀuÌYYÀZü( YYÀZü]À]XÀZÀ­8ÀuÌ5ÀÁ uu]À]XÀZÀ­8ÀuÌYYÀ[´( YYÀ[´]À]XÀZÀ­8ÀuÌU]À]XuU]À]XÀ­8ÀuÌ,ÀÁ uU]À]XÀ­8ÀuÌYÀ[  YÀ[ ]À]XÀ­8ÀuÌ,ÀÁ uU]À]XÀ­8ÀuÌYÀ[` YÀ[`]À]XÀ­8ÀuÌ,ÀÁ uU]À]XÀ­8ÀuÌYÀ\@ YÀ\@]À]XÀ­8ÀuÌYÀ[ YÀ[ À[  ]À[ À­8ÀuÌ UÀ]XuUÀ]XÀ­8ÀuÌ(ÀÁ uUÀ]XÀ­8ÀuÌ]À]Ð ]À]ÐÀ]XÀ­8ÀuÌ YÀuÌÀZÀ­8ÀuÌ À‘° À»¤À[`TÀs<À`ÀjÔÀjäÀt €¨À‘”]€¨À‘°]EÀjÜÀ¼$ÀZPÀ»¨ÀjÔSÀjÔÀjäÀt €¨À‘”]€¨À‘¼]EÀjÜÀ¼$ÀZPÀ»˜YÀ»”ÀjÔ À[ Às<ÀuÌÀu¼ÀtÈ6]Àu¼]Àu¼Àu¼]]ÀtÈ]ÀtÈÀtÈ0YÀ[ ]ÀuÌ YYÀZü YYÀZü]ÀZÀ]X, YYÀZüu]À]XÀZÀ­8ÀuÌ YYÀ[´, YYÀ[´u]À]XÀZÀ­8ÀuÌ YÀ[` ]À]X# YÀ[`U]À]XÀ­8ÀuÌ YÀ\@# YÀ\@U]À]XÀ­8ÀuÌ U] À^l À^À­8] YÀ[  ]!0YÀ[ U]À­8ÀuÌ ]À]Ð À]X] ]À]ÐUÀ]XÀ­8ÀuÌ À^| Às<= À^€]AuÀ­8ÀuÌÀÁ uÀ­8ÀuÌ=0ÀÁ uÀ­8ÀuÌÀs<AuÀ­8ÀuÌ= À^„ À^0=u]À]X U]À]X]À]X]À]X U]À]XU]À]XÀ]X UÀ]XÀ]XÀ]X UÀ]XUÀ]Xu]À]XÀZu]À]XÀZÀ­8ÀuÌ0 YYÀZüuu]À]XÀZÀ­8ÀuÌ0 YYÀ[´uu]À]XÀZÀ­8ÀuÌU]À]XU]À]XÀ­8ÀuÌ' YÀ[ uU]À]XÀ­8ÀuÌ' YÀ[`uU]À]XÀ­8ÀuÌ' YÀ\@uU]À]XÀ­8ÀuÌ UÀ]XUÀ]XÀ­8ÀuÌ# ]À]ÐuUÀ]XÀ­8ÀuÌÀZÀ­8ÀuÌ YÀuÌuÀZÀ­8ÀuÌ ÀZÀZ À]XÀ­8Às<À` À‘°À‘” À‘°À‘”Y€¨À‘°6 À^À­8€¨À‘”€¨À‘°Y€¨À‘°À[`1€¨À‘°Y€¨À‘° Y€¨À‘° 1À[` YÀ[` ÀZP À[`À»¤ À‘¼À‘” À‘¼À‘”Y€¨À‘¼6 À^À­8€¨À‘”€¨À‘¼Y€¨À‘¼À\@1€¨À‘¼Y€¨À‘¼ Y€¨À‘¼ 1À\@ YÀ\@ YÀ»”: À^À]XÀ­8ÀZPYÀ»”À»”À\4YÀ»”À\@ 1À»” YÀ»” YÀ»”' À^ÀuÌÀu¼ÀtÈYÀtÈÀ[  1À[  YÀ[  À^À­8]À]X! YYÀZüÀuÌYYÀZü! YYÀ[´ÀuÌYYÀ[´ YÀ[`ÀuÌYÀ[` YÀ\@ÀuÌYÀ\@ À^l À­8 YÀ[ ÀuÌYÀ[  À^À­8À]X] À]XÀ­8JYÀZüYÀ[´YÀ[`YÀ\@YÀ[ ]À]ÐÀ]ØYYÀZü ]À]ÐÀuÌ]À]Ð= À^|uÀ­8ÀuÌ. ÀuÌÀuÌÀuÌÀuÌÀuØÀuØÀu¼Àu¼# uÀ­8ÀuÌuÀ­8ÀuÌÀuÌÀuÌÀuØÀu¼Àt4 uÀ­8ÀuÌ À^€"À­8ÀuÌÀuÌÀuØÀu¼Àt4 uÀ­8ÀuÌ À^„u]À]X u]À]X]À]X]À]X# u]À]Xu]À]X À‘ÀÀ‘”Y€¨À‘À; À­8Às<À`€¨À‘”€¨À‘ÀY€¨À‘ÀÀZü À‘À1€¨À‘ÀY€¨À‘À Y€¨À‘À ÀZüÀuÀ(]Àu¬Àu¤]Àu¬Àu¬À™LÀ™L ]ÀuÀÀuÀÀ^ À^ eAÀ^ E AÀ^  AÀ^  À^  À^  À^ À^  (YY €¥Y À^¨ YY Y YY À^¬ A €¥YA €¥Y€¥YAA À^° AAAA À^¨ À^´ À^° À^¨AAY À^¨ À^¸ AY À^¼ AA À^À Y À^Ä À^È À^Ì AAAA À^Ð À^Ô À^Ø À^Ü YY À^à AAAY AA À^äY Às<À`À­8Àj À_(ÀZüYÀuÌÀuÌÀuÌ ÀZüYÀuÌÀuÌÀuÌeAÀ_(E AÀ_( AÀ_( €¨À‘˜]Y] À‘˜ €¨À‘˜ ]Y] ]Y]AY]],AUYÀ¶ Y€À¶À¶ ]AÀvp]€¬À¶ÀjÔÀjäÀt €¨À‘˜]Y]]Y]ÀjÜÀ¼$]UYÀ¶ Y€À¶À¶ ]UYÀ¶ Y€À¶À¶ ]ÀvpÀt4]ÀvpÀjÔk]Às<À­8Às8Àu¼AUYÀ¶ Y€À¶À¶ ]AÀvp]AY]] AÀ·,AYÀvpA€¨À‘˜*À[ÀZØÀ[ÀuÀÀu¤À[€¨À‘¬9À­8ÀZüAÀ·,AYÀvpA€¨À‘˜ À_H9 Às<AUYÀ¶ Y€À¶À¶ ]À¶ À_P Às<Às8AÀvp] À_\ À­8AY]]À¶À¶k]Às<À­8Às8ÀZüAUYÀ¶ Y€À¶À¶ ]AÀvp]AY]]]Às<À­8Às8ÀZü]Às<À­8Às8Àu¼À¶¨{ Às8À¶]UYÀ¶ Y€À¶À¶ ]UYÀ¶ Y€À¶À¶ YÀ¶ À¶¨]YÀ¶ À¶¬À¬ÔEÀs<À·,À­8N ]ÀvpÀs8]ÀvpYÀvt]]ÀvpYÀvt]YÀvt] À¬ÔEÀs<YÀvpÀ­8EÀ¬ÔEÀs<YÀvpÀ­8 Y] Y]]E Às8À¶]Y]]Y]Y]]Y]]À¬ÔEÀs<À­8€¨À‘˜ Às8À¶Às<À·,G Às8]Àvp]ÀvpYÀvt]YÀvt]]Àvt]Às<YÀvpEÀs<YÀvp€¨À‘˜À­8G À[ÀÀ»œÀs<À[¼]ÀuÀÀuÀÀu¤À[Ä€¨À‘¸À­8À`À[´À¬ÔEÀ[´À­8%À[lÀ­8Às<€¨À‘°À[hÀ»¤Às<À[`À­8]À¬ÔE À_À Às<À­8]ÀZü ]À¬ÔE ]À¬ÔE]À¬ÔE!À¬ÔEÀs<À­8]ÀZü"]Àu¼ÀtXÀt4ÀtxÀt Às<À­8ÀuÌÀZü À[´À¬ÔEÀs<Àu¼À­8À¬ÔEÀs<ÀuÄÀ­8À¬ÔEÀs<ÀuÈÀ­8À¬ÔEÀs<ÀuÀÀ­8À¬ÔEÀs<À[ À­8 À‘˜À‘” À¶€¨À‘˜ ]Y]À‘˜ À‘˜À‘¬-AUYÀ¶ Y€À¶À¶ ] À_H& UYÀ¶ Y€À¶À¶  ]À·,AÀvp] À_P Àvp ]YÀvpAY]] À_\AY]]]Y]]Y] ]€¨À‘˜YÀ¶ À¶¨]Y]] Às<YÀvpÀ­8Q]ÀvpÀs8]ÀvpYÀvt]YÀvt]YÀvx]Àvt] €¨À‘˜À¶ €¨À‘˜ À‘˜ À‘˜À‘¸ À‘˜À‘° ]À¬ÔEÀ·, À_¼! Às<À­8]ÀZüYÀvp À_À ]À¬ÔEYÀvp ]À¬ÔE€¨À‘˜ ]À·, ]YÀvp ]€¨À‘˜ Àt  Às<ÀuÄÀ­8 Às<ÀuÈÀ­8À]` À]XÀtô.À]`]Àu¼YÀtÀº ]Àu¼Àu¼#Às<À`À­8Àu¼À]XÀº EÀº !Às<À`À­8Àu¼À]XÀº À»ìÀ»ì À]XÀ¼$ À]XÀu¼ À¼$Àu¼ À]XÀZP!Às<À`À­8À]XÀZPÀº ,uÀµÌYÀ¼$À¼$À¼$YÀ¼$Àt4À­8À]XÀu¼ Àt4"UÀu¼YÀuÌYÀuÌÀu¼Às<À]XÀuÌUÀu¼YÀuÌ!Às<À`À­8À]XÀuÌÀº Às<À]XYÀuÌ Àº  Àº 4 À[l€¨À‘°À­8Às<À`Àº À[hÀZPÀ»¤Às<À`À­8À]XÀ[` ÀZPÀ»”Às<À`À­8À]XÀ\4ÀZäÀu¼À»ˆÀZàÀZPÀs<À`À­8À]XÀZØ1ÀZPÀ»œÀ¼$]À¶p]À¶p]À¶pÀ¶pÀs<À`À­8À]XÀ[¨ À]XÀuÀÀ­8À]XÀuÀ À]XÀuÄÀ­8À]XÀuÄ À]XÀuÈÀ­8À]XÀuÈÀ­8À]XÀ[ Às<À`À­8À]XÀ[`9 À[À[ÀuÀÀu¤À[ À[€¨À‘¬À­8Às<Àº À`À­8À]XÀZü ]Àº ]Àº À‘¬ ]Àº C À[¨À[¼ÀuÀÀu¤À[Ä€¨À‘¸À[´À­8Às<À`Àº À[´Às<À`À­8À]XÀ[´ À]XÀ[  Àtô Às<À]X Àº À‘° Àº À‘¬ ]Àº À‘´]Àº À‘´ ]Àº À‘¸ÀvH Àv<[Àv<ÀµÜÀµÄÀv8ÀvHÀu¼Àu¸Àu¸Àt4Àt41ÀtXÀtxÀt ]Àu¼ÀµÌÀu¼À`À­8ÀµÌUU#UYYYUÀu¼À`À­8À¶€íÀ¶Àu¼AÀu¼YÀuÌÀuÌÀ`Àu¼YÀuÌÀ¶4À¶04 À¶$À¶ÀµìÀ¶À¶4À¶0À¶@À¶<ÀuÌÀuÌÀ`À­8YÀuÌÀ¶ ] ]]Àu¼À`À­8€¨À‘”U€¨À‘”YÀ¶À¶U€¨À‘”YÀ¶ UÀtüÀ¶ UÀtüÀ¶À¶hÀ¶U€¨À‘”YÀ¶YÀ¶€¨À‘”À¶€¨À‘”À¶Àu¼YÀtüYÀ¶À¶À¶À`À­8€¨À‘”Àu¼Às<Àu¼YÀuÌE'ÀuØÀu¼ÀuØÀsðÀt4ÀsðÀuØÀv À­8Às<ÀtüÀuÌE6ÀuØYÀuÌYÀuÌÀu¼ÀuÌÀuÌÀuØYÀuÌÀv À­8Às<ÀtüÀuÌ ÀtüÀuÌÀuÌP Às<ÀuÌUÀu¼YÀuÌ€¨À‘”ÀuÌÀu¼YÀuÌÀu¼YÀtüÀuÌÀ`À­8€¨À‘”]€¨À‘À €¨À‘À €¨À‘´]€¨À‘À €¨À‘À€äÀ¶€¨À‘¬]€¨À‘´]€¨À‘´€¨À‘´€¨À‘”€¨À‘”€¨À‘´]€¨À‘´]€¨À‘´]€¨À‘À]€¨À‘À€¨À‘À]€¨À‘À€¨À‘ÀYÀuÌYÀuÌ]€¨À‘ÀÀ¶YÀ¶À¶pÀ`À­8€¨À‘¬ À»„Àtü"À`YÀtüYÀuÌYÀuÌ2YÀtüAEÀ`À­8ÀµÌYÀuÌYÀ»„€íYUYYUYY UY%YUY Àa(= AYUYUYYUY€íYUY1UYYUY UYYUY%YUY Àa,€’ AAYUY€íYUY%YUYUYUYYUYY%YUYUYYp€íYUYYUYYEUYYYY5%YUYGUYYAAYUYAYUYAÀ­8YÀtü%eÀtìAÀ­8YÀtüA0Àt4AEÀ`À­8ÀµÌÀtYÀ¼$À¼$UYÀt4YÀt4 Àa@! AEÀ`À­8YÀ¼$Àt ÀaD* UeuÀµÌeÀ¼$Àt4Àt4UYÀt4YÀt4AUYÀt4YÀt4YÀt4YÀt4ÀtYÀt4YÀu¤PÀtìAEÀ`À­8YÀ¼$ÀtYUYUeuÀµÌeÀ¼$ AEÀ`AEÀ`À­8YÀ¼$PÀtìAEÀ`À­8ÀtYÀ¼$YUYUeuÀµÌeÀ¼$D €YÀ·,eÀ¼$UYUeuÀµÌÀ·,eÀ¼$ À·,/ÀtìAEÀ`À­8ÀµÌÀtYÀ¼$À¼(!ÀtìAEÀ`À­8ÀµÌÀ¼„euÀµÌÀ·,eÀ¼$ uÀµÌÀ·,eÀ¼$ UeuÀµÌÀ·,eÀ¼$)UYUeuÀµÌÀ·,eÀ¼$-YUYUeuÀµÌÀ·,eÀ¼$-euÀµÌÀ·,eÀ¼$UYY3YÀtìAEÀ`À­8AÀµÌÀ¼„ÀµÌÀ¼83YÀtìAEÀ`À­8AÀµÌÀ¼„ÀµÌÀ¼< YÀtìÀµÌYÀtìÀtì/ÀtìAEÀ`À­8AÀµÌÀ¼„ÀµÄÀ¼„ UUÀu¼5YUUÀu¼À­8AEÀ`À¼8À¼4Y,e€¥UÀu¼AEÀ`À­8À¼ Àa˜TAAÀa¬ÀaüÀbxAAÀa¼ÀaÌÀaÄ TKFMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtLetDecl@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtIf@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtTry@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtFun@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtFunction@DebugTypeProxyMHMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtWithAsLet@DebugTypeProxyQLMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtWithAsAugment@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtMatch@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtFor@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtWhile@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtWhen@DebugTypeProxy TKFMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtVanilla@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtThen@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtElse@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtDo@DebugTypeProxyQLMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtInterfaceHead@DebugTypeProxyMHMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtTypeDefns@DebugTypeProxy(À}œ TÀ}œ À}œQLMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtNamespaceHead@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtModuleHead@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtMemberHead@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtMemberBody@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtModuleBody@DebugTypeProxyQLMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtNamespaceBody@DebugTypeProxyMHMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtException@DebugTypeProxy À}œTIDMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtParen@DebugTypeProxy(Àbx(ÀbpÀbp ÀbxTÀbp Àbx ÀbpLGMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtSeqBlock@DebugTypeProxyPKMicrosoft.FSharp.Compiler.Lexfilter+Context+CtxtMatchClauses@DebugTypeProxy Àa˜Àaœ ÀaœÀa  Àa Àa¤ Àa¤Àa¨ Àa¨ Àa¬Àa° Àa°Àa´ Àa´Àa¸ Àa¸ Àa¼ÀaÀ ÀaÀ ÀaÄÀaÈ ÀaÈ ÀaÌÀaÐ ÀaÐÀaÔ ÀaÔÀaØ ÀaØÀaÜ ÀaÜÀaà ÀaàÀaä ÀaäÀaè Àaè ÀaìÀað ÀaðÀaô Àaô Àaø ÀaüÀb ÀbÀbpÀbpeAÀbpE AÀbp AÀbp Àbp Àbp ÀbpÀbpÀbxÀbxeAÀbxE AÀbx AÀbx Àbx Àbx ÀbxÀbx AA AÀbÀba ÀbÀbÀbÀb Àb ÀbÀb TTÀb Àb(Àb UTT Àb À}œÀbUTTÀb Àb”À}œ Àb”À}œ À}œ AÀ}œ YYAÀ}œ Y 1AÀ}œ AÀ}œ YAÀ}œ ‚Àb” ‚Àb” À}LAXÀ}œXÀb” 0À}œ ÀbTT Àb TÀb”ÀbTTÀ}œÀb Àb” Àb” Àb”YÀaYÀa YÀaUTÀaUTT Àb”Àa Àb”Àb” ]À}œÀb” Àb”€ÕYUÀb” UÀb”B Àb”À}œÀ~hT€ÕYUÀb”Àb¨T€ÕYUÀb” Àb” À}œÀbÀ}œAÀ}œAYÀaÀ}üÀ}ð‚J]Àb”TÀ}œÀbÀb¨AÀ}œAYÀa}YÀaÀa]À}œ]À}œÀb¨YÀaÀa°TYÀaYÀaÀaÄYÀaÀaüÀbpYÀaÀaüYÀaÀaüYÀaYÀaÀa˜ÀaÐYÀaÀaÔYÀaÀaØYÀaÀaìYÀaÀaðYÀaÀaôYÀaÀaèYÀaÀaäYÀaÀaœYÀaÀa¬YÀaÀa°YÀaÀa´YÀaÀa¸YÀaÀa¼YÀaÀaÀYÀaÀa¤YÀaÀa¨YÀaÀa YÀaÀaÈYÀaÀaÌYÀaÀbYÀaYÀaYÀaÀaøÀb”TÀb”ÀaÄYÀaÀ}ôÀ}üÀ}ðÀ}œÀaÜÀaàÀ}œÀ}øÀ}ì@À}œÀb”À}œ]À}œ]À}œÀ~<ÀbÀ}èÀ~PÀ}ì Àbp Àb”Àbp Àb¨S Àb”À}œÀ~h]UAÀ}œ]À}œAÀ}œ]À}œ]À}œÀ}œ EUÀb” ÀaÀaø Àb¨ À}œYÀa ÀbÈ ÀbÄAAYAYÀbÄ ÀbÈÀbÄ AYY Àb”Àb¨ ‚À}œ ‚À}œÀbÔ À}œ À}œÀ}œ AÀcAÀcYAÀcYAAÀbüEAYAÀbüEAYAÀbüE AÀcAAÀbüEAÀcUAUAÀbüEAÀµìAÀbüEA]AÀbüEAÀcÀµìAÀc]AÀcÀ¶hYUÀ·¼ €íÀ·¼YUAÀcÀ·¼AÀcÀ·¼AUAÀcÀ·¼EAÀuÄAÀbüEAÀcÀu¼AÀcÀuÄ4UAAÀuÌAÀbüEEAÀuÌAÀbüEAÀuÌAÀbüEAAÀuÌAÀbüEEAYÀuÌAÀbüE<UAAYÀvpAÀbüEEAYÀvpAÀbüEAYÀvpAÀbüE AAYÀvpAÀbüEE(UAAÀcÀuÌEAÀcÀuÌAÀcÀuÌAAÀcÀuÌEAÀcYÀuÌ0UAAÀcYÀvpEAÀcYÀvpAÀcYÀvpAAÀcYÀvpEAÀcÀuÀAÀcYÀuÀ(UAAÀcÀwpEAÀcÀwpAÀcÀwpAAÀcÀwpE4UAAÀwpAÀbüEEAÀwpAÀbüEAÀwpAÀbüEAAÀwpAÀbüEEAYÀuAÀbüEAÀcYÀuAYÀtüAÀbüEAÀcYÀtü<UAAYÀw\AÀbüEEAYÀw\AÀbüEAYÀw\AÀbüE AAYÀw\AÀbüEE6UAAÀwXAÀbüEEAÀwXAÀbüEAÀwXAÀbüEAAÀwXAÀbüEE<UAAYÀwpAÀbüEEAYÀwpAÀbüEAYÀwpAÀbüE AAYÀwpAÀbüEE<UAAYÀxøAÀbüEEAYÀxøAÀbüEAYÀxøAÀbüE AAYÀxøAÀbüEE<UAAYÀu¤AÀbüEEAYÀu¤AÀbüEAYÀu¤AÀbüE AAYÀu¤AÀbüEE0UAAÀcYÀw\EAÀcYÀw\AÀcYÀw\AAÀcYÀw\E*UAAÀcÀwXEAÀcÀwXAÀcÀwXAAÀcÀwXE0UAAÀcYÀwpEAÀcYÀwpAÀcYÀwpAAÀcYÀwpE0UAAÀcYÀxøEAÀcYÀxøAÀcYÀxøAAÀcYÀxøE0UAAÀcYÀu¤EAÀcYÀu¤AÀcYÀu¤AAÀcYÀu¤EAÀv|AÀbüEAÀcÀv|AÀt4AÀbüEAÀvTAÀbüE Àbü Àbü EÀbü Àbü Àbü  Àbü Àc % AAÀbüEAAÀbüE<AUAÀbüEAAÀbüEAAÀbüE Àc6 AAÀbüEAAÀbüEAAÀbüEOAuAÀbüEAAÀbüEAAÀbüEAAÀbüEÀcG AAÀbüEAAÀbüEAAÀbüEAAÀbüEcA€AÀbüEAAÀbüEAAÀbüEAAÀbüEAAÀbüEÀcÀc  Àc Àc Àc  AÀcAÀc*AÀcUAÀcAÀc Àc$$ AÀcAÀcAÀc7AÀcuAÀcAÀcAÀcÀc(/ AÀcAÀcAÀcAÀcEAÀc€AÀcAÀcAÀcAÀc ÀbøA A Àbì Àbì A AÀbü 'ÀbøAAÀbüEÀbü Àc‚ñ‚ñÀcÀc AÀcAAE ÀcAÀcÀc Àbô ‚ñ‚ñÀcÀbô Àc, AAÀbüE&AAÀbüEAAÀbüE ] AAÀbüE]Àbü Àc0)AeAÀbüEAAÀbüE€Õ]AAÀbüE€Õ]AAÀbüE Àc4 €Õ]AAÀbüE Àc8,UAAAÀbüEEAAÀbüE€Õ]AAÀbüE/UAAAÀbüEEAAÀbüE Àc< AÀcAÀcAÀcAÀcAÀc]AÀcÀc Àc@AÀceAÀc€Õ]AÀc€Õ]AÀc ÀcD €Õ]AÀc ÀcH UAAÀcEAÀc€Õ]AÀc#UAAÀcEAÀc AÀcÀcAÀcYAÀcYAAÀbüEÀbìAYAÀbüEAYAÀbüEÀtÀcÀbô AÀc Àbì ÀbìÀbìÀbìÀbìÀtAAÀbüE Àv8#Àu¸ÀcÀbôÀv8ÀbôAÀcUUÀbìU2 Àu¸]ÀtÀt4]ÀtÀtÀv8+ÀbìÀbìÀbìUÀv8Àu¸AUAÀbüE Àu¸Àbü Àu¸ÀuÌÀcÀbôÀu¸ ÀbìÀbìU ÀbìÀbì-ÀbìÀbìÀbìUÀbìÀv8 Àbü>€‰ÀbìuÀbìÀbìÀbìUÀbìÀbüÀbøÀt8Àt4ÀbøÀtøÀtüÀbøÀu¨Àu¤u UAAÀbüEAAÀbüEAUAÀbüEAAÀbüEÀbì Àbì UÀbøÀt8Àt4- A AAÀ­8AÀbì ÀbøÀtøÀtüÀbøÀu¨Àu¤ == u=€‰ÀbìuÀbìÀbìÀbìUÀbì1 1U AÀbü AÀbüAUÀbü AÀbü'€‰ÀbìuÀbìÀbìÀbìUÀbìÀbüÀbìUÀbøÀt8Àt4Àbì ÀbøÀtøÀtüÀbøÀu¨Àu¤ÀbìuÀbìÀbìÀbìUAAÀbüEAAÀbüEAAÀbüEAUAÀbüEAAÀbüE#Às<Àv8AAÀbüEÀc ÀbôÀu¸ €‰uU AÀc AÀcAÀcU AÀc ÀbôÀv8Àv8 Àbô ÀbôÀtÀtÀu¸U ÀbôÀuÌ ÀbôÀu¸  ÀbôÀv8 Àc-ÀcAEAAEA Àt4Àt8 ÀtüÀtø Àu¤Àu¨Àbô ÀbôÀt ÀbôÀuÌ AÀc AÀcAÀcU AÀc€‰uUU ÀbôÀv8Àbô Àbà YÀv8€ß ÀcÀbôÀu¸€‰uUAÀcAÀcAÀcAÀcUAÀcuUÀbôÀv8Àv8ÀbôÀbôÀtÀtÀu¸UÀbôÀuÌÀuÌ$ÀbàÀµÌÀ¼„AÀcÀµ´Àµ°Àµ´Àµ° Àµ¨Àbü ÀbüA]AÀbüEAAÀbüEA]Àbü0A]AÀbüEAAÀbüE] ÀµÈÀbüA]Àµ¨AÀbüEAÀµ¨AÀbüEA]€AÀbüEA€AÀbüEA]AÀbüEAAÀbüE ]Àµ¨A]Àµ¨ÀbüA]€ÀbüA]Àbü€ÏA]AÀbüEAAÀbüEA]Àµ¨AÀbüEAÀµ¨AÀbüEA]€AÀbüEA€AÀbüEA]AÀbüEAAÀbüE]]Àµ¨]€] ÀµÄÀbüÀµØÀµÈÀµÜÀµÄÀµÌ ÀµÌÀbü Àµ¨Àc€Àc u]AÀc] AÀc u]0u]AÀc]AÀc] ÀµÈÀc)€]]Àµ¨]€]AÀc]Àµ¨AÀcÀµ¨AÀc]€AÀc€AÀc] AÀc(€]]Àµ¨]€]€È€]]Àµ¨]€]AÀc]AÀcAÀc]Àµ¨AÀcÀµ¨AÀc]€AÀc€AÀc]AÀc]]€]Àµ¨] ÀµÄÀc ÀµÌÀc ÀµüÀbüAÀµìAÀbüEA]AÀbüEÀ¶(À¶,AÀµìÀbüEÀ¶$À¶ÀµìÀ¶(À¶À¶,À¶0À¶4À¶8À¶hÀ¶<À¶@À¶ À¶ÀbüAÀ¶AÀbüEAÀ¶AÀbüEAÀbüEYÀ¶ ÀµôÀbüÀµô ÀµôÀµü À¶ÀbüÀ¶YÀ¶À¶ À¶hÀbüAYÀbü ÀµÌY À¶ÀbüÀ¶YÀ¶ À¶Àbü ÀµôÀc ÀµüÀc À¶Àc À¶ÀcAÀcÀµìAÀc] À¶ÀcAÀcÀ¶hAÀcÀ¶ À¶ÀcÀ¶À¶YÀ¶À¶ À¶pÀbü À¶À¶ À¶tÀbüÀ¶pÀ¶YÀ¶ À¶xÀbü À¶tÀ¶ À¶|Àbü À·DÀbü À¶pÀc À¶tÀc À¶xÀc À¶|Àc À·DÀc À·¤Àc À·¬ÀcYUÀ·¼ €íÀ·¼YUAÀcÀ·¼AÀcÀ·¼AÀcÀ·¼AUAÀcÀ·¼EÀ¸À¸À·DÀ¸œ €íÀ·¼eAÀ·¼EÀ·¼ AÀ·¼vÀ·¼À¸À¶xÀ¸À·DÀ¸$À¶|À·¤À¸ À¸4À¸0À¸DÀ¶À¸€ÀµìÀ¸|À¸xÀ¸tÀ·¬À¸TÀ¸XÀ¸œ À·¼ÀbüAAÀcÀ·¼ ÀcÀ·¼ À·¼ÀcAYUAÀbüEAUAÀbüE ÀeŒ Àe AUAÀbüE Àe” AYUAÀbüE4AYUAÀbüEAUAÀbüE=A€¥AÀbüEAAÀbüEAAÀbüE+A€¥AÀbüEAAÀbüEAÀcYUAÀcU Àeœ Àe  AÀcU Àe¤ AÀcYU(AÀcYUAÀcU+AÀc€¥AÀcAÀcAÀc€¥AÀc À­(Àbü À­(À­( À­8Àbü À“ÀÀbü À­8Àc À“ÀÀc Àe¬ ÀbøAÀbüEÀbøAÀu¼AÀbüEAÀuÄAÀbüEÀu¼AÀu¼AÀbüE ÀuÈÀbüAÀcÀu¼AÀcÀuÄ ÀuÈÀc4UAAÀuÌAÀbüEEAÀuÌAÀbüEAÀuÌAÀbüEAAÀuÌAÀbüEEAYÀuÌAÀbüE<UAAYÀvpAÀbüEEAYÀvpAÀbüEAYÀvpAÀbüE AAYÀvpAÀbüEEÀu ÀuœÀu Àu¼Àuœ Àu°ÀbüAÀuÀAÀbüE(UAAÀcÀuÌEAÀcÀuÌAÀcÀuÌAAÀcÀuÌEAÀcYÀuÌ0UAAÀcYÀvpEAÀcYÀvpAÀcYÀvpAAÀcYÀvpEÀu¼]]ÀuÌ Àu°ÀcAÀcÀuÀAÀcYÀuÀ À™LÀbü ÀsðÀc À™LÀc À™L À™HÀbü À™HÀc(UAAÀcÀwpEAÀcÀwpAÀcÀwpAAÀcÀwpE4UAAÀwpAÀbüEEAÀwpAÀbüEAÀwpAÀbüEAAÀwpAÀbüEEA]À¶AÀbüEAÀ¶AÀbüEA]À¶ÀbüAYÀuÌÀbü€‚Àu„YÀuÌÀ¶p]À¶ÀuÌA]À¶AÀbüEAÀ¶AÀbüEÀu|ÀuÀAÀuÀAÀbüEÀuˆÀwpÀu€ÀuÈ ÀutÀbüA]ÀuÌAÀbüEA]ÀutAÀbüEAÀutAÀbüEA]ÀuÌÀbüA]ÀutÀbü~ €Õ]Àut]ÀuÌYÀuÌÀ™HYÀuÌA]ÀuÌAÀbüEA]ÀutAÀbüEAÀutAÀbüE]Àut ÀupÀbü"€ÀuÌ]À¶À¶pYÀuÌAÀc]À¶AÀcÀ¶!€ÀuÌ]À¶À¶pYÀuÌE€ÀuÌ]À¶À¶pYÀuÌAÀc]À¶AÀcÀ¶ ÀutÀc0€YÀuÌÀ™HYÀuÌ]ÀuÌ]ÀutAÀc]ÀutAÀcÀut/€YÀuÌÀ™HYÀuÌ]ÀuÌ]ÀutZ€YÀuÌÀ™HYÀuÌ]ÀuÌ]ÀutAÀc]ÀutAÀcÀut]Àut ÀupÀcÀv ÀtøÀtü/ Àv ÀvÀu¼Àv Àv ÀvÀv ÀvÀtü Àv Àbü Àv Àc8 ÀuÀuÌÀuÀupÀu Àu YÀuÌÀu(Àu4ÀuÌ ÀuÀbüAYÀuAÀbüEÀuÌÀupYÀuÌÀuÌAÀuÀcAÀcYÀuAYÀvpÀbüAYÀuÀbüÀ“ÀYÀvp YÀuÀ“Œ ÀtøÀbü ÀtüÀbüAYÀtüAÀbüE)À“ÀYÀvp YÀuÀ“Œ ]ÀuÌ ÀtøÀc ÀtüÀcAÀcYÀtü<UAAYÀw\AÀbüEEAYÀw\AÀbüEAYÀw\AÀbüE AAYÀw\AÀbüEE6UAAÀwXAÀbüEEAÀwXAÀbüEAÀwXAÀbüEAAÀwXAÀbüEE<UAAYÀwpAÀbüEEAYÀwpAÀbüEAYÀwpAÀbüE AAYÀwpAÀbüEE<UAAYÀxøAÀbüEEAYÀxøAÀbüEAYÀxøAÀbüE AAYÀxøAÀbüEE<UAAYÀu¤AÀbüEEAYÀu¤AÀbüEAYÀu¤AÀbüE AAYÀu¤AÀbüEE0UAAÀcYÀw\EAÀcYÀw\AÀcYÀw\AAÀcYÀw\E*UAAÀcÀwXEAÀcÀwXAÀcÀwXAAÀcÀwXE0UAAÀcYÀwpEAÀcYÀwpAÀcYÀwpAAÀcYÀwpE0UAAÀcYÀxøEAÀcYÀxøAÀcYÀxøAAÀcYÀxøE0UAAÀcYÀu¤EAÀcYÀu¤AÀcYÀu¤AAÀcYÀu¤E ÀwhÀbü ÀsðÀ“À ÀwlÀbüÀwlAÀwhAÀbüE YÀwhAÀwlÀbüAYÀwhÀbüAÀwhYYÀwhYÀwlÀwlAÀwhAÀbüEYÀwh ÀwdÀbüYÀvp]À“À ÀwhÀcAÀcYÀwhAÀcÀwhAÀcÀwlAÀcYÀwh"AÀcYÀwhAÀcÀwh ÀwdÀc UÀ­8À­8]UÀ­8À­8Àbü ÀtÀbüAYUÀtAÀbüEAUÀtAÀbüEAYUÀtÀbüKYUÀtÀµÌAYUÀtAÀbüEAUÀtAÀbüE ÀtÀbü]UÀ­8À­8Àc ÀtÀcUÀµÌYUÀtAÀcYUÀtAÀcUÀtUÀµÌYUÀtCUÀµÌYUÀtAÀcYUÀtAÀcUÀt ÀtÀcÀtÄAÀtÄÀbüYÀtdÀt¸ÀthÀtÀYÀtÄÀtÄÀtpÀ¶Àt`Àt´ÀttÀuÌÀtxÀt ÀtlÀ¼$ ÀtXÀbüAYÀuÀAÀbüEAYÀuÀÀbüAAYÀuÀAÀbüEAÀuÀAÀbüEÀt¤YÀuÀÀt¸ Àt´Àbü!Àt¸ÀuÌÀ“ÀYÀvpÀtô ÀtÄÀbü ÀtÔÀu¼ÀtØÀ¶ÀtÜÀt¸ ÀtÌÀbüÀtAÀtÀbüYÀtÀt ÀtôÀbüA]Àv|AÀbüEA]Àv|ÀbüI A]Àv|AÀbüEÀuÌ]Àv|À“ÀYÀvpYÀvpÀtô ÀtÈÀbüAÀtÈÀbüYÀtÈÀtÈ Àt¸ÀbüÀtAYÀtüÀbü ÀtAeÀtìÀbüÀsðÀteÀtì Àt8Àbü"A]UÀuÀÀuÀAÀbüEAUÀuÀÀuÀAÀbüEA]ÀuÀAÀbüE'A]uÀuÀÀuÀÀuÀAÀbüE#AuÀuÀÀuÀÀuÀAÀbüEAYUÀuÀAÀbüEAUÀuÀAÀbüE#AYuÀuÌÀ­8AÀbüEAuÀuÌÀ­8AÀbüEAEAÀbüEYUÀuÀ UÀuÀ UÀuÀUÀuÀA]UÀuÀÀuÀÀbüA]ÀuÀÀbü A]uÀuÀÀuÀÀuÀÀbüAYUÀuÀÀbüAYuÀuÌÀ­8Àbü AEÀbü‚ A]UÀuÀÀuÀAÀbüEAUÀuÀÀuÀAÀbüEAÀuÀAÀbüEAÀuÀAÀbüEA]ÀuÀAÀbüEA]uÀuÀÀuÀÀuÀAÀbüEAuÀuÀÀuÀÀuÀAÀbüEAÀuÀAÀbüEA]UÀuÀÀuÀAÀbüEAYUÀuÀAÀbüEAUÀuÀAÀbüEAYuÀuÌÀ­8AÀbüEAuÀuÌÀ­8AÀbüEA]ÀuÌAÀbüEAEAÀbüE]UÀuÀÀuÀ]ÀuÀ]uÀuÀÀuÀÀuÀ]UÀuÀÀuÀYUÀuÀYuÀuÌÀ­8]ÀuÌ ÀtTÀbü Àt8Àt4 Àt4Àbü ÀtDÀu¼ Àt<ÀbüÀvdÀuÀÀv`À¶p ÀvXÀbüAYÀvtAÀbüEAÀvtAÀbüEAYÀvxAÀbüEAÀvxAÀbüEAYÀvtÀbüAYÀvxÀbü€‹ YÀvxYÀvtÀvXÀu¼AÀu¼AÀbüEAYÀvtAÀbüEAÀvtAÀbüEAYÀvxAÀbüEAÀvxAÀbüE ÀvpÀbü ÀvtÀbüÀvtÀuÌ ÀvxÀbüAYÀyAÀbüEAÀyAÀbüEAYÀyÀbüVAÀu¼AÀbüEAYÀyAÀbüEAÀyAÀbüEÀu¼À™HYÀy Àu¬Àbü Àt¬Ày Àt¤Àbü ÀxðÀuÌ ÀxèÀbüA]Àu¬AÀbüEAÀu¬AÀbüEA]ÀwdAÀbüEAÀwdAÀbüE]UÀ­8À­8UÀ­8À­8]UÀ­8À­8A]Àu¬ÀbüA]ÀwdÀbü€úA]AÀbüEAAÀbüEA]Àu¬AÀbüEAÀu¬AÀbüEA]ÀwdAÀbüEAÀwdAÀbüEA]Àv|AÀbüEAEAÀbüE]]UÀ­8À­8ÀuÌ Àsì]Àu¬YÀvp]ÀwdÀtôÀt<]Àv| Àu¨Àbü Àu¨Àu¤ Àu¤ÀbüA€ÔÀu¤AÀbüEAYÀu¤AÀbüEAÀu¤AÀbüEA€ÔÀt4AÀbüEAYÀt4AÀbüEAÀt4AÀbüEA€ÔÀu¤ÀbüA€ÔÀt4Àbü€¥ A€ÔÀu¤AÀbüEAYÀu¤AÀbüEAÀu¤AÀbüEA€ÔÀt4AÀbüEAYÀt4AÀbüEAÀt4AÀbüEÀt€ÔÀu¤€ÔÀt4 ÀtìÀbüUYÀ¼$À¼$YYÀ¼$,UYÀ¼$À¼$À¶YÀ¼$YÀ¼(AÀcÀtÄ!Àt¸YÀtÄÀ¶Àt´ÀuÌAÀtXÀc Àt´Àc ÀtÄÀc ÀtÌÀcAÀcÀt ÀtôÀc:€ÉÀuÌ]Àv|À“À€YÀvpYÀvpÀtô€YÀvpYÀvpÀtô9€ÉÀuÌ]Àv|À“À€YÀvpYÀvpÀtôi €ÉÀuÌ]Àv|À“À€YÀvpYÀvpÀtôÀtôYÀvpYÀvpÀ“À]Àv|ÀuÌ ÀtÈÀcAÀcÀtÈ Àt¸Àc{€ÉYÀtü]À­8]ÀtUÀtôÀtôYÀvp€ÉAÀtX]ÀuÌÀtTÀsð ]ÀtueÀtìÀtÌEAÀc]ÀtAÀcÀtAÀc]ÀtAÀcÀtAÀceÀtì AÀtXUÀtôÀtôAÀceÀtìueÀtìÀtÌEA€ÉAÀtX]ÀuÌÀtTÀsð ]ÀtueÀtìÀtÌEz€ÉYÀtü]À­8]ÀtUÀtôÀtôYÀvp€ÉAÀtX]ÀuÌÀtTÀsð ]ÀtueÀtìÀtÌE À®ÀydX€ÉYÀtü]À­8]ÀtUÀtôÀtôYÀvp€ÉAÀtX]ÀuÌÀtTÀsð ]ÀtueÀtìÀtÌEAÀc]AÀcAÀc]ÀtAÀcÀtAÀc]ÀtAÀcÀtAÀceÀtìÀtT]ÀuÌAÀtXYÀvpÀtôÀtô]ÀtÀ­8]ÀtÌeÀtì]Àt ÀsðYÀtüÀtX À“Œ Àt8Àc{€É]UÀuÀÀuÀ]ÀuÀ]uÀuÀÀuÀÀuÀ]UÀuÀÀuÀYUÀuÀYuÀuÌÀ­8]ÀuÌUEAÀc]UÀuÀÀuÀAÀcUÀuÀÀuÀ!AÀc]uÀuÀÀuÀÀuÀAÀcuÀuÀÀuÀÀuÀAÀcYUÀuÀAÀcUÀuÀAÀcYuÀuÌÀ­8AÀcuÀuÌÀ­8UEz€É]UÀuÀÀuÀ]ÀuÀ]uÀuÀÀuÀÀuÀ]UÀuÀÀuÀYUÀuÀYuÀuÌÀ­8]ÀuÌUE UÀuÀUÀuÀ1UÀuÀŽ€É]UÀuÀÀuÀ]ÀuÀ]uÀuÀÀuÀÀuÀ]UÀuÀÀuÀYUÀuÀYuÀuÌÀ­8]ÀuÌUEAÀc]UÀuÀÀuÀAÀcUÀuÀÀuÀAÀc]uÀuÀÀuÀÀuÀAÀcuÀuÀÀuÀÀuÀAÀc]UÀuÀÀuÀAÀcYUÀuÀAÀcUÀuÀAÀcYuÀuÌÀ­8AÀcuÀuÌÀ­8]ÀuÌYuÀuÌÀ­8YUÀuÀ ÀtTÀc Àt4Àc Àt<Àc ÀvXÀc(€Àu¼ÀvXYÀvtYÀvxÀ­8AÀcYÀvtAÀcÀvtAÀcYÀvxAÀcÀvx'€Àu¼ÀvXYÀvtYÀvxÀ­8i€Àu¼ÀvXYÀvtYÀvxÀ­8AÀcYÀvtAÀcÀvtAÀcYÀvxAÀcÀvx ÀvpÀc ÀvtÀcÀuÌÀvt ÀvxÀc€Àu¼À™HYÀyAÀcYÀyAÀcÀy€Àu¼À™HYÀy;€Àu¼À™HYÀyAÀcYÀyAÀcÀy Àu¬Àc Àt¤Àc ÀxèÀcZ€É]]UÀ­8À­8ÀuÌ ]Àu¬YÀvp€]ÀwdÀtôÀt<]Àv|EAÀc]Àu¬AÀcÀu¬AÀc]ÀwdAÀcÀwd$€]ÀwdÀtôÀt<]Àv|EY€É]]UÀ­8À­8ÀuÌ ]Àu¬YÀvp€]ÀwdÀtôÀt<]Àv|E €É]]UÀ­8À­8ÀuÌ ]Àu¬YÀvp€]ÀwdÀtôÀt<]Àv|EAÀc]AÀcAÀc]Àu¬AÀcÀu¬AÀc]ÀwdAÀcÀwdYÀvp]Àu¬ ÀuÌ]]UÀ­8À­8]Àv|Àt<Àtô]Àwd]ÀwpÀ“Œ]UÀ­8À­8 Àu¨Àc Àu¤ÀcuÀt€ÔÀu¤€ÔÀt4AÀc€ÔÀu¤AÀcYÀu¤AÀcÀu¤AÀc€ÔÀt4AÀcYÀt4AÀcÀt4uÀt€ÔÀu¤€ÔÀt4€ž uÀt€ÔÀu¤€ÔÀt4AÀc€ÔÀu¤AÀcYÀu¤AÀcÀu¤AÀc€ÔÀt4AÀcYÀt4AÀcÀt4€ÔÀt4€ÔÀu¤Àt ÀtìÀcAÀv|AÀbüEAÀcÀv|AYÀw$AÀbüEAÀw$AÀbüEA]ÀwAÀbüEAÀwAÀbüEAYÀw$ÀbüA]ÀwÀbüAYÀwpÀbü€™Àw ]ÀwYÀw$ÀwpAYÀw$AÀbüEAÀw$AÀbüEA]ÀwAÀbüEAÀwAÀbüEÀwYÀwpÀwÀwÀw\Àw ÀwÀbü Àw$Àbü6 Àw0ÀuÄYÀuÌÀw8Àv|Àw<ÀuÌÀuÌÀw4 Àw(ÀbüAYÀu¤ÀbüÀwpYÀu¤ ÀwXÀbü ÀwpÀu¤ Àw\Àbü ÀxØÀbü ÀxÀÀbü"€ÀwpYÀw$]ÀwÀ­8AÀcYÀw$AÀcÀw$AÀc]ÀwAÀcÀw!€ÀwpYÀw$]ÀwÀ­8e€ÀwpYÀw$]ÀwÀ­8AÀcYÀw$AÀcÀw$AÀc]ÀwAÀcÀw ÀwÀc Àw$Àc Àw(Àc ÀwXÀc Àw\Àc ÀxØÀcAYÀ·¼AÀbüEAÀ·¼AÀbüEÀxØAYÀ·¼Àbü AÀbü/ÀwøÀuÄÀwüÀu¼ÀxÀxÀAÀu¼AÀbüEÀxÀuÈÀx Àx(Àx0Àx4Àx8Àx<Àx@ÀxDYÀuÌYÀ·¼AYÀ·¼AÀbüEAÀ·¼AÀbüEÀx,ÀxPÀupÀxTÀuÀÀxØAÀuÀAÀbüEÀxXYÀuÌYÀuÌÀ¶pÀxèÀx ÀxÐÀxÀx$Àx ÀwðÀbüAÀcÀ·¼AÀcÀ·¼ AÀcAÀcÀ·¼ ÀwðÀcÀyÀuÌÀyÀuÌ ÀxøÀbü<YÀvpÀuÌ]A]AÀbüEAAÀbüE ÀyÀbüAYYÀyAÀbüEAYÀyAÀbüEAÀyAÀbüEAYYÀyÀbü€ ]ÀuÌYYÀyYÀtüYÀtüÀuÌAYYÀyAÀbüEAYÀyAÀbüEAÀyAÀbüEA]ÀuÌAÀbüE ÀyÀbüAYYÀu¤AÀbüEAYYÀu¤ÀbüGÀwpYYÀu¤YÀtüYÀvpÀyAYYÀu¤AÀbüE ÀyÀbüÀyAÀyÀbüÀyYÀyÀbüÀuÌYÀyÀbüUÀuÌYÀyAUÀuÌYÀyÀbüUÀuÌYÀyYUÀuÌYÀyÀbü ÀxøÀc€]ÀuÌYÀvp€]ÀuÌYÀvp5€]ÀuÌYÀvpAÀc]AÀc ÀyÀc4€ÀuÌYÀtüYÀtüYYÀy]ÀuÌAÀcYYÀyAÀcYÀyAÀcÀy3€ÀuÌYÀtüYÀtüYYÀy]ÀuÌk€ÀuÌYÀtüYÀtüYYÀy]ÀuÌAÀcYYÀyAÀcYÀyAÀcÀy ÀyÀc4€ÀyYÀvpYÀtüYYÀu¤ÀwpÀ­8AÀcYÀu¤3€ÀyYÀvpYÀtüYYÀu¤ÀwpÀ­85€ÀyYÀvpYÀtüYYÀu¤ÀwpÀ­8 ÀyÀcAÀcÀyYÀyÀcUÀuÌYÀyÀcAÀcUÀuÌYÀyYUÀuÌYÀyÀcAÀt4AÀbüEAÀvTAÀbüE€Àt4E€Àt4E€Àt4E ÀvTÀc (YÀv8 Àbà AÀv8 AÀv8 AÀv8 AÀv8 EÀv8A]Àv8 A]Àv8]Àv8]Àv8 (€í (= €í Àbì €í = = €í==€í Àbð= Àbì Àbô (A (A (AÀ­8 (A (Àbì A AÀ­8 Àbø A A AÀ­8 A Àbì Àbì Àbø0ÀbøA AAÀ­8A(€˜ (Àbì(ÀbøÀt8Àt4(ÀbøÀtøÀtü(ÀbøÀu¨Àu¤ (Àbì(ÀbìU (Àbì €˜ Àbì ÀbøÀt8Àt4 ÀbøÀtøÀtü ÀbøÀu¨Àu¤ Àbì ÀbìU Àbìs €˜Àv8ÀbìÀbøÀt8Àt4ÀbøÀtøÀtüÀbøÀu¨Àu¤ÀbìÀbìÀbìUÀbìÀs<(AAE (A(A Àc AAE A  AAEA AAE ÀcAAAE(€”(ÀbôÀv8(ÀcÀt8Àt4(ÀcÀtøÀtü(ÀcÀu¨Àu¤ (Àbô(ÀbôÀt(ÀbôÀu¸(ÀbôÀuÌÀcÀt8Àt4ÀcÀtøÀtüÀcÀu¨Àu¤ €” ÀbôÀv8 ÀcÀt8Àt4 ÀcÀtøÀtü ÀcÀu¨Àu¤ Àbô ÀbôÀt ÀbôÀu¸ ÀbôÀuÌ| €”ÀµÌÀbôÀv8ÀcÀt8Àt4ÀcÀtøÀtüÀcÀu¨Àu¤ÀbôÀbôÀtÀbôÀu¸ÀbôÀuÌÀ¼„AAÀbüEAAÀbüE Àc) AAÀbüEAAÀbüE AÀbü AÀbü Àc  AÀbüEUAAÀbüE Àc< AAÀbüEAAÀbüEAAÀbüE AÀbü Àc u AÀbüEuAAÀbüEÀcO AAÀbüEAAÀbüEAAÀbüEAAÀbüE AÀbüÀc €  AÀbüE€ AÀc AÀc Àc  AÀc UÀc AÀc Àc$ AÀc uÀc AÀcÀc( AÀc €Àc Àc, EÀbü Àc0eNÀbøÀt8Àt4Àbì ÀbøÀtøÀtüÀbøÀu¨Àu¤ EeÀbü€Õ]AAÀbüE Àc4]AAÀbüE€Õ]AAÀbüE EAAÀbüE Àc8]AAÀbüE.]AAÀbüE]AAÀbüE EÀbü Àc< Àc Àc@  eÀc€Õ]AÀc ÀcD]AÀc€Õ]AÀc EAÀc ÀcH]AÀc"]AÀc]AÀc Àc Àc AÀc YÀc Àc AÀc AÀc YÀc EÀbü AAÀbüE EYÀbü EÀbüAAÀbüE AAÀbüE EYÀbü UÀc  AÀbüEU Àt4 À­8Àt4 Àt8Àt4  Àtü À­8Àtü ÀtøÀtü  Àu¤ À­8Àu¤ Àu¨Àu¤ Àt4E EÀt4Àt8 ÀtüE EÀtüÀtø Àu¤E EÀu¤Àu¨ EÀbü AAÀbüE E]Àbü EÀµ¨Àbü AÀµ¨AÀbüE Àµ¨ E]Àµ¨Àbü  AÀbüE€ A€AÀbüE € E]€Àbü E]Àbü Àc AÀc ]Àc Àµ¨Àc AÀcÀµ¨ ]Àµ¨Àc €Àc AÀc€ ]€Àc ]Àc E]Àbü ]]A]ÀbüU]] ]] AÀbüEU]]AU]]AÀbüE AU]]AÀbüEU]]AU]]ÀbüU]] EYU]]Àbü"AYU]]AÀbüE$ AYU]]AÀbüEAYU]]Àbü EÀµìÀbü EÀ¶Àbü YÀ¶AÀ¶AÀbüEAÀ¶ÀbüÀ¶ ]Àc U]]ÀcAÀcU]] AÀcU]]AÀcU]] YU]]ÀcAÀcYU]] AÀcYU]] ÀµìÀc À¶ÀcuÀ¶YÀ¶À¶ uÀ¶YÀ¶À¶Àc!AÀcuÀ¶YÀ¶À¶# AÀcuÀ¶YÀ¶À¶uÀ¶YÀ¶À¶uÀ¶YÀ¶À¶ À¶hÀc À·¼ À·¼À·¼ UÀ·¼À·¼ EUÀ·¼ À·¼ÀcÀ¶ ‚ñ‚ñUAÀcÀ·¼AÀcÀ·¼ EUAÀcÀ·¼ AÀcÀ·¼AÀcÀ·¼ Àeˆ ÀeŒAUAÀbüE Àe UAUÀbü U EYUÀbüAYUAÀbüE Àe”AYUÀbü E€¥Àbü ÀeœAÀcU Àe AÀcU YUÀcAÀcYU Àe¤ €¥Àc Àbø Àe¬A ‚•Àt4Àu¸€­Àt4Àu¸Àu¸Àt4 EÀu¼Àbü EÀuÄÀbü Àu¸ Àu¼Àc ÀuÄÀcAÀuÌÀbüÀuÌ EYÀuÌÀbü‚™Àu¤Àu°€­Àu¤Àu°Àu°Àu¤ EÀuÀÀbüAÀcÀuÌ YÀuÌÀc Àu° ÀuÀÀcAÀcÀuÀ YÀuÀÀc EÀ¶Àbü AÀ¶AÀbüE E]À¶Àbü E]ÀuÌÀbü EÀutÀbü AÀutAÀbüE E]ÀutÀbü À¶Àc AÀcÀ¶ ]À¶Àc ÀutÀc AÀcÀut ]ÀutÀc EÀuÀbüAÀuAÀbüE AÀuAÀbüEÀuAÀuÀbüÀu EYÀuÀbü Àu Àup ÀuÌÀuÌ AÀuÀcAÀcAÀu AÀcAÀu YÀuÀc EÀtøÀbü EÀtüÀbüAÀtüAÀbüE AÀtüAÀbüEÀtüAÀtüÀbüÀtü EYÀtüÀbü ÀtøÀc ÀtüÀcAÀcÀtü AÀcÀtüAÀcÀtü YÀtüÀcsÀuÌYÀuÌÀuØ€­Àt4Àu¸Àu¸Àu¼AÀu¼AÀbüEÀuàÀuÌÀuÌÀtüÀuÔYÀtüÀv ÀuäÀuÄ EÀuÌÀbü ÀuÌÀc EÀ“ÀÀbü EÀwlÀbü EÀwhÀbü AÀwhAÀbüEÀwhAÀwhÀbüÀwh EYÀwhÀbü À“ÀÀc ÀwlÀc ÀwhÀc AÀcÀwhAÀcÀwh YÀwhÀc À­8À­8 AÀbüEUÀ­8À­8 Àt AÀbüEUÀt AUÀtAÀbüE UÀtAUÀtÀbü UÀt EYUÀtÀbü UÀ­8À­8Àc UÀtÀc AÀcUÀtAÀcUÀt YUÀtÀc EÀtÄÀbüAÀuÀÀbüÀuÀ EYÀuÀÀbü EÀtÀbü E]Àv|Àbü EÀtÈÀbü EÀtÀbü EÀtìÀbü5 AÀuÀAÀbüEAÀuÀAÀbüEÀuÀÀuÀ+ AÀuÀAÀbüEAÀuÀAÀbüE AÀbüEUÀuÀÀuÀ AUÀuÀÀuÀAÀbüE UÀuÀÀuÀ E]UÀuÀÀuÀÀbü E]ÀuÀÀbüN AÀuÀAÀbüEAÀuÀAÀbüEAÀuÀAÀbüEÀuÀÀuÀÀuÀ? AÀuÀAÀbüEAÀuÀAÀbüEAÀuÀAÀbüEÀuÀÀuÀÀuÀ AÀbüEuÀuÀÀuÀÀuÀ% AuÀuÀÀuÀÀuÀAÀbüE uÀuÀÀuÀÀuÀ E]uÀuÀÀuÀÀuÀÀbü AÀuÀAÀbüEÀuÀ UÀuÀÀuÀ AÀbüEUÀuÀ AUÀuÀAÀbüE UÀuÀ UÀuÀAUÀuÀÀbü UÀuÀ EYUÀuÀÀbü ÀuÌ AÀbüEuÀuÌÀ­8! AuÀuÌÀ­8AÀbüEuÀuÌÀ­8AuÀuÌÀ­8ÀbüuÀuÌÀ­8 EYuÀuÌÀ­8Àbü EEÀbüÀuÀ UÀuÀUÀuÀ UÀuÀ EÀt8Àbü EÀvtÀbü AÀvtAÀbüEÀvtAÀvtÀbüÀvt EYÀvtÀbü EÀvxÀbü AÀvxAÀbüEÀvxAÀvxÀbüÀvx EYÀvxÀbü EÀyÀbü AÀyAÀbüEÀyAÀyÀbüÀy EYÀyÀbü EÀu¬Àbü AÀu¬AÀbüE E]Àu¬Àbü EÀwdÀbü AÀwdAÀbüE E]ÀwdÀbü EÀu¨Àbü EÀu¤Àbü AÀu¤AÀbüEÀu¤AÀu¤ÀbüÀu¤ EYÀu¤Àbü AYÀu¤AÀbüE E€ÔÀu¤Àbü EÀt4Àbü AÀt4AÀbüEÀt4AÀt4ÀbüÀt4 EYÀt4Àbü AYÀt4AÀbüEAYÀt4Àbü E€ÔÀt4Àbü ÀtX Àt¸ ÀtÄÀc YÀtÄ ÀcÀ¶UYÀ¼$À¼$%À¶ÀtXÀ¶UYÀ¼$À¼$ Àt´ ÀtÀc ÀtÈÀc ÀtÀc AÀcÀt ]ÀtÀc AÀcÀt ]ÀtÀc ÀtìÀc UÀuÀÀuÀÀc AÀcUÀuÀÀuÀ ]UÀuÀÀuÀÀc uÀuÀÀuÀÀuÀÀc AÀcuÀuÀÀuÀÀuÀ ]uÀuÀÀuÀÀuÀÀc UÀuÀÀc AÀcUÀuÀAÀcUÀuÀ YUÀuÀÀc uÀuÌÀ­8Àc AÀcuÀuÌÀ­8AÀcuÀuÌÀ­8 YuÀuÌÀ­8Àc UÀuÀUÀuÀ Àt8Àc ÀvtÀc AÀcÀvtAÀcÀvt YÀvtÀc ÀvxÀc AÀcÀvxAÀcÀvx YÀvxÀc ÀyÀc AÀcÀyAÀcÀy YÀyÀc Àu¬Àc AÀcÀu¬ ]Àu¬Àc ÀwdÀc AÀcÀwd ]ÀwdÀc Àu¨Àc Àu¤Àc AÀcÀu¤AÀcÀu¤ YÀu¤Àc AÀcYÀu¤ €ÔÀu¤Àc Àt4Àc AÀcÀt4AÀcÀt4 YÀt4Àc AÀcYÀt4 €ÔÀt4Àc  ƒÅdÀv„ÀvˆÀvŒÀvÀv”Àv˜Àvœ Àv  Àv¤ Àv¨Àv¬Àv° Àv´ Àv¸Àv¼ÀvÀƒÅ EÀv|Àbü   Àv|Àc EÀw$Àbü AÀw$AÀbüEÀw$AÀw$ÀbüÀw$ EYÀw$Àbü EÀwÀbü AÀwAÀbüE E]ÀwÀbü Àw$Àc AÀcÀw$AÀcÀw$ YÀw$Àc ÀwÀc AÀcÀw ]ÀwÀc EÀ·¼Àbü AÀ·¼AÀbüEAÀ·¼ÀbüÀ·¼ EYÀ·¼Àbü EÀbü Àc E]Àu¤ÀbüÀw°A]Àu¤AÀbüEA]Àu¤ÀbüAYÀw\ÀbüAÀwXÀbüAYÀxøÀbüO*Àw°€ÕÀwpÀwxÀv|ÀuÌÀw|ÀxèÀuÀAÀuÀAÀbüEÀw¤YÀwpYÀuÌÀwðÀw€ÀxàÀwpÀwpÀw„YÀu¤]Àu¤]Àu¤A]Àu¤AÀbüEAÀu¤AÀbüEA]Àu¤AÀbüEÀwˆYÀtüÀwŒÀwYÀw\Àw”Àw\ÀwœÀwXÀwÀw˜YUÀuÌYÀyYÀyÀw YÀxøÀw¬Àw¨ EÀwpÀbüAÀcÀwXW ÀwpÀwp]Àu¤]Àu¤YÀu¤ÀuÌYÀtüYÀyYUÀuÌYÀy ÀwpÀc EÀyÀbü AÀyAÀbüEÀyAÀyÀbüÀy EYÀyÀbü AYÀyAÀbüE YÀy YÀyAYÀyÀbü YÀy EYYÀyÀbü YÀu¤AYÀu¤Àbü YÀu¤ EYYÀu¤Àbü EÀyÀbü ÀuÌYÀy AÀbüEUÀuÌYÀy ÀyÀc AÀcÀyAÀcÀy YÀyÀc AÀcYÀyAÀcYÀy YYÀyÀc ÀyÀc UÀuÌYÀyÀc EÀw\ÀbüAÀw\AÀbüE AÀw\AÀbüEÀw\AÀw\ÀbüÀw\ EYÀw\Àbü EÀwXÀbü EÀxøÀbüAÀxøAÀbüE AÀxøAÀbüEÀxøAÀxøÀbüÀxø EYÀxøÀbüAÀwpÀbüÀwp EYÀwpÀbü EÀvpÀbüAÀvpAÀbüE AÀvpAÀbüEÀvpAÀvpÀbüÀvp EYÀvpÀbü Àw\ÀcAÀcÀw\ AÀcÀw\AÀcÀw\ YÀw\Àc ÀwXÀc ÀxøÀcAÀcÀxø AÀcÀxøAÀcÀxø YÀxøÀcAÀcÀwp YÀwpÀc ÀvpÀcAÀcÀvp AÀcÀvpAÀcÀvp YÀvpÀcAÀt4ÀbüAEAÀbüEÀt4 EÀvTÀbüAÀcYAÀcYAYAÀbüEAYAÀbüEAÀcUAUAÀbüEAÀµìAÀbüEA]AÀbüEAÀcÀµìAÀc]AÀcÀ¶hYUÀ·¼ €íÀ·¼YUAÀcÀ·¼AÀcÀ·¼AUAÀcÀ·¼EAÀuÄAÀbüEAÀcÀu¼AÀcÀuÄ3UAAÀuÌAÀbüEEAÀuÌAÀbüEAÀuÌAÀbüEAAÀuÌAÀbüEEAYÀuÌAÀbüE;UAAYÀvpAÀbüEEAYÀvpAÀbüEAYÀvpAÀbüEAAYÀvpAÀbüEE'UAAÀcÀuÌEAÀcÀuÌAÀcÀuÌAAÀcÀuÌEAÀcYÀuÌ/UAAÀcYÀvpEAÀcYÀvpAÀcYÀvpAAÀcYÀvpEAÀcÀuÀAÀcYÀuÀ'UAAÀcÀwpEAÀcÀwpAÀcÀwpAAÀcÀwpE3UAAÀwpAÀbüEEAÀwpAÀbüEAÀwpAÀbüEAAÀwpAÀbüEEAYÀuAÀbüEAÀcYÀuAYÀtüAÀbüEAÀcYÀtü;UAAYÀw\AÀbüEEAYÀw\AÀbüEAYÀw\AÀbüEAAYÀw\AÀbüEE5UAAÀwXAÀbüEEAÀwXAÀbüEAÀwXAÀbüEAAÀwXAÀbüEE;UAAYÀwpAÀbüEEAYÀwpAÀbüEAYÀwpAÀbüEAAYÀwpAÀbüEE;UAAYÀxøAÀbüEEAYÀxøAÀbüEAYÀxøAÀbüEAAYÀxøAÀbüEE;UAAYÀu¤AÀbüEEAYÀu¤AÀbüEAAYÀu¤AÀbüEE/UAAÀcYÀw\EAÀcYÀw\AÀcYÀw\AAÀcYÀw\E)UAAÀcÀwXEAÀcÀwXAÀcÀwXAAÀcÀwXE/UAAÀcYÀwpEAÀcYÀwpAÀcYÀwpAAÀcYÀwpE/UAAÀcYÀxøEAÀcYÀxøAÀcYÀxøAAÀcYÀxøE/UAAÀcYÀu¤EAÀcYÀu¤AAÀcYÀu¤EAÀv|AÀbüEAÀcÀv|AÀvTAÀbüEYUÀ·¼ UÀ·¼YUAÀcÀ·¼ UAÀcÀ·¼2UAAÀuÌAÀbüEEAÀuÌAÀbüE YÀvp:UAAYÀvpAÀbüEEAYÀvpAÀbüE&UAAÀcÀuÌEAÀcÀuÌ.UAAÀcYÀvpEAÀcYÀvp&UAAÀcÀwpEAÀcÀwp2UAAÀwpAÀbüEEAÀwpAÀbüEAAÀuÌAÀbüEEAAÀcÀuÌE YÀw\:UAAYÀw\AÀbüEEAYÀw\AÀbüE ÀwX4UAAÀwXAÀbüEEAÀwXAÀbüE:UAAYÀwpAÀbüEEAYÀwpAÀbüE YÀxø:UAAYÀxøAÀbüEEAYÀxøAÀbüE:UAAYÀu¤AÀbüEEAYÀu¤AÀbüE.UAAÀcYÀw\EAÀcYÀw\(UAAÀcÀwXEAÀcÀwX.UAAÀcYÀwpEAÀcYÀwp.UAAÀcYÀxøEAÀcYÀxø.UAAÀcYÀu¤EAÀcYÀu¤AAYÀw\AÀbüEEAAÀwXAÀbüEEAAYÀxøAÀbüEEAAYÀwpAÀbüEEAAÀwpAÀbüEEAAYÀvpAÀbüEEAAYÀu¤AÀbüEEAAÀcYÀw\EAAÀcÀwXEAAÀcYÀxøEAAÀcYÀwpEAAÀcÀwpEAAÀcYÀvpEAAÀcYÀu¤E˜AÀcAÀcAAÀbüEAAÀbüEAYU]]AÀbüEAU]]AÀbüEAÀcYU]]AÀcU]]AÀcuÀ¶YÀ¶À¶AÀuAÀbüEAÀcAÀuAÀtüAÀbüEAÀcÀtüAÀw\AÀbüEAÀxøAÀbüEAÀvpAÀbüEAÀu¤AÀbüEAÀcÀw\AÀcÀxøAÀcÀvpAÀcÀu¤Ài|Àu¼YUÀtüÀuÌÀi”Àj €ÅÀu¤ €ÅÀt4 €ÅÀuÈ €ÅÀuÄ€„Àu¤€ÅÀu¤€„ÀuÈ€ÅÀuÈ€„ÀuÄ€ÅÀuÄ€„Àt4€ÅÀt4 €ÅÀtü€„Àtü€ÅÀtüÀy\ÀkÀy`Ài|Àu¼YUÀtüÀuÌÀi” Ài|Àu¼ €¥  €¥ Àu¼ €¥ Ài|Àu¼Àt4Ài”Àu¼Àu¼Ài”ÀiˆÀuÀ ÀiˆÀuÀ €¥ ÀuÀÀi|Àu¼ÀiˆÀuÀÀi”YUÀtüYUÀtü UÀtü'YUÀtüÀtüYUÀtüYUÀtüÀtü]Àu¼Àt4Àu¼Ài|Àu¼Àu¼Àu¼ÀuÄÀi|Àu¼ÀuÄÀuÈÀi|Àu¼ÀuÈ&YUÀtüÀuÌYÀtüYÀuÌYÀuÌYÀtüUYÀtüÀi”UYÀtüÀi”€žÀuÌÀuèÀuØYÀuÌÀu¼]Àu¼Ài|Àu¼Àt4YÀuÌ]Àu¼ÀuäÀuÜÀuàÀuÌÀuÌÀuÌÀuÌÀuÔYÀtüUYÀtüÀi”Ài”ÀuìÀv ÀuÌÀi”ÀuÌ eAÀuÌÀv EÀv ÀuÌ Àv AÀuÌÀv AÀuÌÀv  ÀtüÀtüÀuÌdÀvÀu¼]Àu¼Ài|Àu¼Àt4]Àu¼ÀvÀv Àv Àv ÀvÀtü]ÀuÌ]ÀuÌÀuÌÀv Ài”Àv YÀuÌÀi”YÀuÌYÀuÀi”YÀu€ŒYÀuÌ€Õ]Àut]ÀuÌÀ™HYÀuÌ]Àut]Àut]ÀutÀutÀu„ÀuÌYÀuÌÀ¶p]À¶Àu|ÀuÀÀu€ÀuÈÀuˆÀupÀi”Àup Ài´ U'YUYYYUYÀtüÀi”8UYÀtüÀi”AYÀvpYÀvpÀi”YÀtü"UYÀtüÀi”Ài”YÀtü']ÀuÌ]ÀuÌ]ÀuÌÀuÌÀuÌÀu Ài”Àu Àu¼Àu¼Àu Àu Àu°Ài”Àu°']ÀuÀÀiˆÀuÀÀu¤Àu°Àu°ÀuÀÀi”ÀuÀ1ÀuÌÀuÔYÀtüÀuÌUYÀtüÀi”Ài”'ÀuÌAYÀvpYÀvpÀi”ÀuÌÀyÀi”ÀyAÀyÀyz ÀuÌ]ÀuÌYYÀyYÀtüYÀtüÀuÌUYÀtüÀi”Ài”YÀtüUYÀtüÀi”Ài”AÀyÀy'ÀyAYÀvpYÀvpÀi”Ày  ÀuÀÀuÌYUÀtüÀuÌÀuÌ&YÀuÌYUÀtüÀuÌYÀuÌÀupYUÀtüÀuÌÀup&YÀuYUÀtüÀuÌYÀuÀyYUÀtüÀuÌÀy ÀyÀy3UYUÀtüÀuÌYÀuÌYÀtüYÀtü"YUÀtüÀuÌÀu¼YÀuÌÀs<Àu¼Àu¼Às<ÀuÀÀuÀ]ÀuÌÀt4]ÀuÌÀv Àv Àu¼Àv ÀvÀu¼ Àv Àv %Àv ÀvÀu¼Àv Àv ÀvÀv Às<Àu¼Àv Às<AÀu¼Àu¼Àu¼Àv %Àv ÀvÀtüÀv Àv ÀvÀv ÀtüÀv %Àv ÀvÀtüÀvÀv Àv Àv YÀtüYÀtüÀv YÀtüÀv &Àv ÀvÀtüÀvÀv Àv Àv (YUÀtüÀv YUÀtüÀv Àv YUÀtüÀv &Àv ÀvÀu¼ÀvÀv Àv Àv .YUÀu¼Às<Àv YUÀu¼Àv Às<Àv YUÀu¼Às<Àv *Àv ÀvÀu¼Àu¼ÀvÀv Àv Àv ,YÀu¼Às<AÀu¼Àu¼YÀu¼Àv AÀu¼Àu¼Às<AÀu¼Àu¼#YÀu¼Às<AÀu¼Àu¼Àv Àv Àv Àv Àv Àv YÀv YÀv Àv Àv YÀv Àv YÀv 1YUÀtüYUÀu¼YUÀtüÀtüÀtüÀs<Àv ,YUÀtüYUÀu¼YUÀtü Às<Àv MYUÀtüYUÀu¼YUÀtüYUÀtüYUÀu¼ÀtüÀv Às<Àv #ÀuìÀtü]ÀuÌ]ÀuÌÀv Àv ÀvÀv Àv Àv Àv ÀuÌÀs<ÀuÌÀ­8 Às<Àu¼eAÀu¼EÀu¼ Àu¼AÀu¼ AÀu¼Àu¼Às<Y+UYÀuÌYÀuÌYÀuÌYÀuÌÀuÌÀs<YÀuÌÀuÌÀuÌÀt4YÀuÌ]ÀuÌ]ÀuÌÀuÌÀt4YÀuÌÀuÌÀu¼YÀuÌÀtXÀuÌÀtxÀt ÀuÌÀs<Àt4YÀuÌÀuÌÀs<Àu¼YÀuÌ6ÀuÌÀuØYÀuÌÀu¼Àt4]ÀuÌ]ÀuÌÀuÌÀuÌÀs<ÀuÌ3 ÀuÌÀuÜYÀuÌÀuØÀu¼Àt4ÀuàÀuÌÀuÌÀuÌÀs<ÀuÌÀuÌÀj Às<ÀuÌÀt4ÀtÌÀtÔ Àt4Àu¼ ÀuÌÀuÔUYÀtüÀuÌÀs<ÀuÌ ÀuÌÀuàUÀuÌÀuÌÀs<ÀuÌYÀuÌÀs<ÀuÌÀtüÀs<ÀuÌ ÀuÌÀuìÀv Às<ÀuÌ ÀuÌÀuØÀuÌÀuØÀu¼ÀuÌÀuÌÀuÄYÀuÌUÀu¼YÀuÌÀs<ÀuÌÀu¼Às<ÀuÌ]Àu¼Às<ÀuÌÀuÌÀuØYÀuÌÀu¼"]UÀu¼YÀuÌÀs<ÀuÌÀt4Às<ÀuÌÀuÌÀu¼Àuì]Àu¼ÀuÌ+]UÀu¼YÀuÌYÀuÌÀuÌÀu¼]ÀuÌÀs<ÀuÌ'UÀu¼YÀuÌYÀuÌÀu¼Àt4YUÀtüÀuÌÀs<ÀuÌÀjD YÀuÌ]ÀuÌÀ™HYÀuÌYÀuÌ]ÀuÌÀ™HYÀuÌÀj Às<ÀjÀupÀup]ÀuÌ]ÀuÌÀuÌÀuÌ$Àj Às<Àj]ÀuÌ]ÀuÌnÀuÀuÀuÌÀuÌÀuÀuÀupÀupÀu Àu Àu(Àu(Àu4Àu4ÀuÌÀuÌÀu Àu YÀuÌYÀuÌÀj Às<ÀjÀuÀuÀj Às<ÀjÀtüÀtüÀj$Àj Às<ÀjYÀtüYÀtüÀs<ÀjÀu¼Àu¼ ÀixÀuÌ €¥ ÀuÌ€¶!ÀuÌÀuÌÀuèÀtüÀixÀuÌÀuØÀuØÀu¼Àu¼YÀuÌYÀuÌÀuäÀuäÀuÜÀuÜÀuàÀuàÀuÌÀuÌÀuÌÀuÌÀuìÀuìÀv Àv ÀuÔÀuÔYÀtüYÀtüÀuèÀtüÀj Às<ÀjÀuÌÀuÌÀixÀuÌÀtüÀs<ÀjÀtüKYÀtüAÀtüÀtüAÀu¼Àu¼YÀtüYÀtüYÀu¼YÀu¼Às<ÀjÀv Àv $Àj Às<ÀjYÀuÌYÀuÌÀj Às<ÀuÌÀuÌÀs<ÀjÀuÌÀuÌÀs<ÀjÀupÀupÀs<ÀjÀuÀuÀs<ÀjYÀtüYÀtüÀs<Àj]ÀuÌ]ÀuÌÀs<Àv Àv .ÀuÌÀuÔÀuèÀtüYÀuÌÀuàÀuÌÀuÌ €ÅÀu¤ €ÅÀt4 €ÅÀuÈ €ÅÀuÄÀuÌÀuÌÀuÌÀuÌYÀtüÀuÌÀuÌYÀuÌÀuÌYÀuÌÀuÌYÀuÌÀuÌÀuÌÀ­8YÀuÌÀuÌÀ­8YÀu¤ÀuÌÀ­8YÀu¤ÀuÌÀuÌYÀtüYÀuÌÀuÌYUÀtYUÀt UÀtG ÀtìYÀ“ÀYUÀtYÀ“ÀYUÀtÀtÀ“ÀÀt49À“ŒÀµÌYUÀtYÀ“ÀYUÀtÀt4YUÀtÀµÌÀ“ŒÀµÌÀv8YÀ“ÀÀtÀ“ŒÀw°€ÕÀwpÀw$Àw(ÀwÀw¤Àw¤YÀwpÀ­8Àw°€ÕÀwp À­8Àwp&ÀwpÀ•TÀ­8ÀwÀwXÀ­8ÀuÌÀwÀ­8ÀwpÀwÀw/ÀwpÀ•TÀ”ÄÀ”ÄÀ­8ÀuÌÀwpÀwpÀwp*ÀwpÀ•TÀ”ÄÀ­8ÀuÌÀwpÀwpÀwpÀwpÀ­8ÀuÀÀwpÀ­8Àu¤!UÀu¤ÀwpÀ­8ÀuÌÀsÔUÀu¤ÀwpÀ­8ÀuÌÀwpÀ­8YÀu¤ÀwpÀuÌ1ÀwpÀ­8]Àu¤]Àu¤YÀu¤ÀwpÀuÌÀwpÀ­8Àu¤ÀwpÀuÌÀwpÀ­8YÀtüÀwpÀuÌÀwpÀ­8YÀtüÀwp>ÀwpÀuÌ]Àu¤ÀwpYÀyYUÀuÌYÀyÀ­8UÀwpÀuÌ(ÀwpÀ­8YÀtüYÀu¤ÀwpÀuÌ YÀu¤UÀwpÀuÌ,UÀwpÀuÌÀ­8YYÀu¤ÀwpÀuÌ,ÀwpÀ­8YÀtüYYÀu¤ÀwpÀuÌ UÀwpÀuÌMUÀwpÀuÌYYÀu¤YYÀu¤YÀu¤UÀwpÀuÌÀuÌÀwp>ÀwpÀ­8YÀtü]Àu¤]Àu¤YYÀu¤ÀwpÀuÌ6Àw\Àu¤À•TÀ­8YÀtüYYÀu¤ÀwpÀuÌÀw\À•TÀu¤ÀwpÀw\Àu¤ÀwpYÀw\YÀu¤YÀwpÀwpÀ­8Àw\ÀwpÀwpÀ­8YÀw\Àwp ÀwpÀ•TÀ­8Àu¤ÀwpÀwpÀwpÀ­8Àu¤ÀwpÀwp#ÀwpÀ­8YÀu¤YÀwpÀwpYÀtüÀs<YÀtü"ÀuÌYÀtüYÀtüYÀtü$ÀwpÀs<À­8YÀtüÀj¤Àwp ÀtüÀj¤ÀwpÀwpÀuÌÀ­8ÀuÌ0ÀwpYÀ·¼YÀuÌYÀwpYÀuÌÀ­8#ÀwpÀuÄYÀuÌYÀwpÀ­8ÀwpÀu¼YÀwpÀ­8ÀwpÀwpYÀuÌÀ­8ÀwpÀwpÀuÈYÀuÌÀ­8ÀwpÀuÈYÀuÌÀ­8ÀwpÀuÈYÀuÌÀwpÀ­8$ÀwpÀwpÀuÈYÀuÌÀwpÀ­8ÀwpÀwpÀu¼YÀuÌÀ­8ÀwpÀwpÀuÄYÀuÌÀ­8 ÀwpÀwpÀuÄYÀuÌÀ­8%ÀwpÀwpÀuÄYÀuÌÀwpÀ­8ÀwpÀwpÀu¼À­8ÀwpÀwpÀu¼ÀwpÀ­8ÀwpÀs<ÀwpÀuÌ%ÀwpÀs<À•<ÀxÈÀwpÀwpÀ­8/ÀwpÀs<À•$Àu¤ÀwpÀxÐÀwpÀwpÀ­89 ÀwpÀs<ÀwpÀu¤ÀwpÀu¤ÀwpÀ­8ÀuÌÀ”ÔÀ”ô*ÀwpÀs<ÀwpÀwpÀ­8ÀuÌÀ”ÔÀ• ÀwpÀ­8ÀuÌÀwpÀ­8ÀuÀÀwp]Àt]ÀtÀtÀu¸]Àu¼Àv8Àt4 ]Àu´-]Àu´]Àu´ÀtÀu Àu Àu¸Àu°]ÀuÀÀv8Ài”Àu¤ÀuÌYUÀtüÀuÌÀtÈ&YÀuÌYUÀtüÀuÌYÀtÈ"YÀuÌYUÀtüÀuÌÀu¼"YÀuÌYUÀtüÀuÌÀuÄÀuÌYÀuÌÀuÄYÀtÈÀu¼YUÀtüÀuÌYÀuÌÀu¼YUÀtüÀuÌÀtÈÀt4 ÀuÌÀu¼ÀuÌÀt4YÀuÌÀtÈ Àt4ÀtÈÀuÌÀuÈYÀuÌ"UYÀtüÀuÌYÀtüÀuÌ,UÀuÌÀuÌÀuÌÀuÌUYÀuÌÀuÌUYÀuÌÀuÌÀs<ÀuÌÀuÌÀs<ÀuÌYÀuÌ ÀjÌÀuÌÀs<ÀuÌY!ÀuÌÀs<ÀuÌYÀuÌYÀuÌÀs<ÀuÌYYUYÀuÌÀuÌÀs<ÀuÌ" YÀwhÀuÌYUÀuÌÀwh%UYÀuÌÀuÌÀuÌYÀuÌ=UYYUÀuÌÀwhÀuÌÀs<YYÀwhÀuÌÀ­8+YÀwlUYÀtüÀuÌYÀtüÀuÌ#UYÀtüÀuÌÀs<ÀwdÀuÌSÀwhYYÀwhUYÀtüÀuÌYÀtüÀuÌUYYUÀuÌÀwhÀuÌD€YÀtüYYUÀuÌÀwhÀuÌÀwhÀs<ÀwdÀuÌÀ­80€YÀtüYYUÀuÌÀwhÀuÌÀwh Às<Àu¼+UÀu¼YÀuÌYÀuÌYÀuÌÀuÌÀuÌÀuØÀu¼Àt4ÀtXÀs<ÀuÌ#ÀtXÀtxuÀµÌYÀ¼$À¼$ ÀjÔÀt4:ÀtXÀtxUÀu¼YÀuÌÀu¼uÀµÌYÀ¼$À¼$ÀjÔÀs<ÀuÌ ÀjÔÀjäÀt ÀjÜÀ¼$ÀjÔ%ÀjÔÀjäÀjÜÀ¼$À¼ À¼ ÀjÔ Às<ÀuÌUÀu¼YÀuÌÀu¼*ÀjÔÀjäÀt ÀjÜÀ¼$À¼ À¼ ÀjÔÀu¼SYÀtüYÀtü]ÀuÌYUÀtüÀuÌYUÀtüÀuÌYUÀtüÀuÌ"]ÀuÌYÀuÌYÀuÌÀyÀyÀyÀuÌYÀtü]ÀuÌÀs<Ày YÀy Às<Àu¬]Àu¬]Àu¬€„Àu¤€ÅÀu¤>€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€„Àu¤€ÅÀu¤€„ÀuÈ€ÅÀuÈ>€„ÀuÈ€ÅÀuÈ€„ÀuÈ€ÅÀuÈ€„ÀuÈ€ÅÀuÈ€„ÀuÄ€ÅÀuÄ>€„ÀuÄ€ÅÀuÄ€„ÀuÄ€ÅÀuÄ€„ÀuÄ€ÅÀuÄ€„Àt4€ÅÀt4>€„Àt4€ÅÀt4€„Àt4€ÅÀt4€„Àt4€ÅÀt4 €ÅÀtü€„Àtü€ÅÀtü>€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtüÀy\Ày\Ày\Ày\ÀkÀkEÀkÀkEÀkÀk ÀkEÀkÀy\ÀkÀt4Ày\Ày\ÀkÀu¼Ày\ ÀtüÀy\Ày\ÀkYÀtüÀy\ ÀuÀy\Ày\ÀkYÀuÀy\%ÀuÀuÀu Àu Àu(Àu4ÀuÌÀy\ÀkÀuÀy\ ÀuÌÀy\ ÀutÀy\Ày\ÀkÀupÀy\$Àu„ÀuÌYÀuÌÀu|ÀuÀÀu€Ày\ÀkÀutÀy\Ày\Àu¤Ày\ ÀkÀy\ÀkÀuÀÀy\Ày\ÀkÀtüÀy\TÀuÌÀuÜÀuØYÀuÌÀu¼Ày\YÀuÌÀuÌÀuäÀuàÀuèÀuÔYÀtüÀuìÀy\ÀkÀuÌÀy\ UÀtüÀy\Ày\ÀkÀv Ày\YÀuÌYÀuÌÀuÌÀy\ÀkYÀuÌÀy\Ày\ÀkÀuÌÀy\ÀkYÀuÌÀy\ÀkÀu¤ ÀtüYÀtüYÀtüAÀtüAÀtü%YÀtüÀs<YÀtüYÀtü ÀuYÀtü$YÀtüÀs<YÀtüYÀu YÀtüÀs<YÀtüÀu YÀtüÀuÌ&YÀuÌ]ÀuÌYÀuÌYÀtü YÀtüÀs<YÀtüÀup YÀtüÀs<YÀtüÀtü UÀtüYÀtüB ÀuÌÀuÜÀuØÀuäÀuàÀuÌÀuÌÀuèÀuÔYÀtüÀuìÀv YÀtüÀs<YÀtüÀuÌ$YÀtüÀs<YÀtüYÀuÌYÀtüÀs<ÀuÌYÀtüÀs<YÀuÌYÀtüÀs<YÀuÌYÀu¤YÀw\\€YÀtüYYUÀuÌÀwhÀuÌÀwhYÀtüÀuÌÀwhYYUÀuÌÀwhI€YÀtüYYUÀuÌÀwhÀuÌÀwhÀs<À™HÀwdÀuÌÀ­8]]U]]À­8€õ€YÀtüYYUÀuÌÀwhÀuÌÀwhYÀtüÀuÌÀwhYYUÀuÌÀwhYYÀwhYYUÀuÌÀwhYUÀuÌÀwhYYUÀuÌÀwhYUÀuÌÀwhYYÀwhYÀwhYYÀwhYUÀuÌÀwhÀwhÀuÌH€YÀtüYYUÀuÌÀwh]ÀuÌÀwhÀs<ÀwdÀuÌÀ­8€» €YÀtüYYUÀuÌÀwhÀuÌÀwhYÀtüÀuÌÀwhYYUÀuÌÀwhYYÀwhYYUÀuÌÀwhYUÀuÌÀwhYYÀwhYÀwhYYÀwhÀuÌÀwhM€YÀtüYYUÀuÌÀwh]ÀuÌÀwhÀs<À™HÀwdÀuÌÀ­8UÀu¬Àwd Àu¬ÀwdUÀu¬ÀwdUÀu¬ÀwdÀu¤ÀwdÀu¬>€YÀtüYYUÀuÌÀwh]ÀuÌÀwhÀs<ÀuÀ:€YÀtüYYUÀuÌÀwhÀuÌÀwhÀs<ÀuÀA ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ€§]Àwd]ÀwdÀwdUYÀtüÀuÌYÀtüÀu¼YÀtüUYÀtüYÀtüYÀtüYÀtüUYUÀtüÀuÌYÀuÌYÀuÌYUÀtüÀuÌK]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌÀs<Àu¤K]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌÀs<ÀuÀUÀu¬ÀwdÀwdÀu¬"YYUÀuÌÀwhÀs<Àu¤"YYUÀuÌÀwhÀs<ÀuÀÀuÌÀs<]ÀuÌdUÀu¬ÀwdÀwdÀu¬€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYYUÀuÌÀwhÀuÌÀs<Àu¤ YUÀuÌÀwhdUÀu¬ÀwdÀwdÀu¬YYUÀuÌÀwh€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYUÀuÌÀwhÀs<Àu¤UYÀuÌÀuÌÀu¼ ÀuÌÀu¼À“ÈÀtü 1 ]ÀtÀt ]Àu¸-€­Àt4Àu¸Àu¸Àt4]Àt]ÀtAÀu¼Àu¼2€­Àu¤Àu°Àu°Àu¤]Àu´]Àu´ÀtÀu¼ÀuÄÀuÈ]]Àu¤ÀuÀ-€­Àt4Àu¸Àu¸]ÀtÀt4]Àt Àu¼ 1Àt4 Àu¼YYYYYYYYYYAY] eYYAY]]1 ÀkdYÀuÌÀs<Àt4 YY À¶À·( À¶À·,) À·(UYÀ¶ Y€À¶À¶ @]UYÀ¶ Y€À¶À¶ Às<À¶]ÀµÌÀ·,À·,Às<Às8ÀvpÀs<Às8YÀvp]ÀvpÀs<Às8YÀvp ÀvxÀvt]ÀvtYÀvxÀwx ]Àvt]Àwx ]Àvt ]ÀvtÀwx ]Àvt#]Àvp]ÀvpYÀvt]]Às<Às8YÀvp#]Àvp]ÀvpYÀvt]]Às<Às8YÀvp#]Àvp]ÀvpYÀvt]]Às<Às8YÀvp Às8À·,]Àu¼]Àu¼ÀsäÀuÌÀs<ÀsäÀuÌ%ÀuÌÀs<ÀuÌÀuÌÀuÌÀuÌÀuÌ ÀuÄÀs<UÀuÀÀwp]UÀuÀÀwpÀwŒÀw|YÀwpÀuÀÀwp]UÀuÀÀwpÀwpuÀuÀÀwpÀwp]uÀuÀÀwpÀwp-ÀwŒÀw|YÀwpYÀwpÀuÀÀwpÀwp!]uÀuÀÀwpÀwpÀwp]UÀuÀÀwp]UÀuÀÀwpÀuÀÀwp]ÀwpÀs<ÀuÀÀwp]uÀuÀÀwpÀwp(]uÀuÀÀwpÀwpÀuÀÀwpÀwp#]UÀwpÀwpÀs<ÀuÀÀwp5]UÀwpÀwpÀwpÀwpÀwŒYÀwpYÀwp]UÀwpÀwpÀs<ÀwpÀwŒÀw|YÀuÌÀuÀÀuÌ]ÀuÌÀs<ÀwpÀt4À“ÀÀtÀtìÀt4ÀtYÀt4YÀu¤ÀtìÀ“ÀÀtÀtìÀy À“ÀÀtÀy Ày ÀtìÀyT €„Àt4€ÅÀt4 €„ÀuÈ€ÅÀuÈ €„ÀuÄ€ÅÀuÄÀk´Àk´EaÀk´Àk´E ÀiˆÀuÀ ÀiˆÀuÀÀuÀÀiˆÀuÀÀi”Àu¤Àu¤Ài” UÀuÀÀuÀUÀu¤ÀuÀÀiˆYUÀu¤ Ài”Àk°AA ÀtÈÀk´ ÀtÄÀk´(]Àt4]Àt4Àt4Àu¼Àu¼Àk´$UÀk°Àk´ÀtìÀt4Àk°Àk´#]Àt4]Àt4Àt4Àu¼Àu¼ ÀuœÀuœÀs<ÀjÀu¤Àu¤€¥ÀuœYÀu¤ ÀuœÀu¤1]Àu¤€¥ÀuœYÀu¤ÀuÀ]Àu¤Àu¤.UÀk°Àk´Às<ÀjÀtìÀu¤Àk°Àk´ ÀtìÀtì*AÀt4AUÀk°Àk´UÀk°Àk´ Àt4UÀk°Àk´QUÀk°Àk´UÀk°Àk´AÀt4AUÀk°Àk´UÀk°Àk´€ÔÀt4$UÀk°Àk´ÀtìÀtìÀk°Àk´*AÀu¤AUÀk°Àk´UÀk°Àk´ Àu¤UÀk°Àk´€„UÀk°Àk´UÀk°Àk´AÀt4AUÀk°Àk´UÀk°Àk´€ÔÀt4€ÔÀu¤AÀu¤AUÀk°Àk´UÀk°Àk´.UÀk°Àk´Às<ÀjÀtìÀtìÀk°Àk´UÀk°Àk´Àk°UÀk°Àk´Às<ÀtìÀtì Àt4ÀuÀYÀu¤YÀt4 ÀyPUÀk°Àk´DUÀk°Àk´Ày8YÀt4YÀyPUÀk°Àk´Ày,Ày(Ày$UÀk°Àk´ÀtìÀy Àk°Àk´ Ày UÀk°Àk´(UÀk°Àk´ÀtìYÀy Àk°Àk´Àt4Ày UÀk°Àk´$UÀk°Àk´ÀtìÀyPÀk°Àk´ Àw\UÀk°Àk´€Ž UÀk°Àk´Ày8YÀt4YÀyPYÀw\UÀk°Àk´UÀk°Àk´AÀu¤AUÀk°Àk´UÀk°Àk´Ày0Àw\Ày,Ày(Ày.UÀk°Àk´Às<ÀjÀtìÀy Àk°Àk´.UÀk°Àk´Às<ÀjÀtìÀyPÀk°Àk´2UÀk°Àk´Às<ÀjÀtìYÀy Àk°Àk´UÀk°Àk´Às<Ày Àtì ÀtôÀk´Àk´Àt4Àk´ÀtôÀk´Àu¤Àk´AÀt4AÀk´Àk´AÀu¤AÀk´Àk´ Àt4Àk´ Àu¤Àk´NÀk´AÀt4AÀk´Àk´€ÔÀt4Àk´AÀu¤AÀk´Àk´€ÔÀu¤Àk´ÀtìÀk´ Àk´Àtì YU AÀtôA€„€Å€„€ÅA#ÀtôYUYU?A€„€ÅAÀtôAAYUA€„€Å AÀtôAA Àl0 A€„€ÅAÀtôAA/A€„€ÅAÀtôAAOAYUAA€„€ÅAÀtôAAA, Àk´Àt4Ài”AYUÀi”Àk´Àt4YUÀi”Àk´Àt4 Àk´Àu¤Ài”AYUÀi”Àk´Àu¤YUÀi”Àk´Àu¤ Àk´ÀuÈÀi”AYUÀi”Àk´ÀuÈYUÀi”Àk´ÀuÈAÀt4A Àl\% AÀt4AAÀu¤A+AÀt4A€ÔÀt4€ÔÀu¤.AÀt4AAÀu¤AÀtìAÀu¤A$AÀt4AAÀu¤AYÀu¤Àtì YÀt4YÀt4ÀtìÀuÄÀuÈÀy`5 ÀwœÀwXÀuÌÀwXÀ”ÄÀ•TÀ­8À­8ÀwpÀw=]€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀwp*À•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8ÀuÌ9Àwp€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀy`Ày`Ày`Ày` Ày\Ày\Ày`ÀkÀuÌÀy`Ày`ÀkYÀuÌÀy`Ày`ÀkÀu¼Ày`Ày`ÀkÀu¤Ày`Ày`ÀkÀutÀy` Ày`Ày` Ày`Ày` Àu¤Ày`Ày`ÀkYÀu¤Ày` À®ÀkÀ®AE Àw$Ày` ÀwÀy`#Ày`ÀkYÀw$]ÀwÀy`Ày`ÀkÀw$Ày` UÀuÀYÀuÌÀy`D Àw0ÀuÄYÀuÌÀw4Àw<ÀuÌÀw@Àwp]UÀuÀYÀuÌÀy`ÀkÀw(Ày`7 Àw Àwp]ÀwYÀw$ÀwÀwÀwÀw\ÀwÀy`ÀkÀwÀy`Ày`ÀxðÀuÌÀy\Ày\Ày`ÀkÀxèÀy`Ày`ÀkÀt4Ày`Ày`ÀkÀuÄÀy`Ày`ÀkÀuÈÀy`Ày`ÀkÀuÀÀy` YÀu¤Ày`1YÀtüYYÀu¤ÀyÀwpÀy`Ày\Ày\Ày`ÀkÀyÀy` ÀyÀy`Ày`ÀkYÀyÀy`Ày`ÀkÀwpÀy` Ày`'Ày`ÀkÀy`À®Ày`Àw\Ày` À®Ày`Àw”ÀwpÀ®Ày`Àw\$Ày`ÀkÀwpÀy`AÀy`Ày` UÀuÌYÀyÀy`n+Àw„YÀu¤ÀuÌ]Àu¤]Àu¤ÀwpÀwˆYÀtüÀy`Ày\Ày\Àw¬ÀwÀ®Ày`YÀw\Àw˜YÀyYUÀuÌYÀyÀw|ÀuÀÀxèÀw¨]uYÀuÌYÀwpÀ|pYÀuÌYÀwpÀ|pÀwŒ€ÕÀwpÀw€ÀwpÀw ÀwœÀwXÀw]€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀwXÀwÀw¤YÀwpYÀwpÀwpÀwðYÀwp ÀuÌÀy` ÀutÀy`wÀx(Àu¼ÀuÄÀuÈÀxÀxÀÀy`ÀxÀÀy\Ày\ÀxDÀxPYÀuÌ€Õ]Àut]ÀuÌYÀuÌÀxTÀxXÀxèÀy`ÀkÀwðÀy` ÀwXÀy`Ày`ÀkÀwXÀy`Ày`ÀkÀwXÀy` ÀwpÀy`Ày`ÀkYÀwpÀy`Ày`ÀkÀyÀy`Ày`ÀkÀwÀy`ÀkÀwp ÀyPÀy`)Ày8YÀyPÀy0Àw\Ày4Ày,Ày(Ày`ÀkÀy Ày`Ày`ÀkÀyPÀy` Ày Ày`Ày`ÀkYÀy Ày`Ày`ÀkÀw\Ày`ÀkÀy V Àw„YÀu¤ÀuÌ]Àu¤]Àu¤ÀwpuYYÀu¤ÀwpÀuÌYYÀu¤'uYYÀu¤ÀwpÀuÌÀwpÀuÌuYYÀu¤ÀwpuYYÀu¤ÀwpMÀw„YÀu¤]Àu¤Àwp]Àu¤uYYÀu¤ÀwpYYÀu¤uYYÀu¤ÀwpÀwp]UYYÀu¤Àwp1Àw„uYYÀu¤ÀwpÀwpYYÀu¤"]UYYÀu¤ÀwpÀwpLuYÀtüÀwpÀuÌÀwˆYÀtüÀuÌÀwpuYYÀu¤ÀwpÀuÌ1€YÀtüYYÀu¤ÀwpÀuÌÀwpÀuÌ0Àw„YÀu¤ÀwpUYYÀu¤ÀwpÀw¬UYYÀu¤ÀwpÀwpUYÀtüÀwpUYÀtüÀwpuYÀtüYYÀu¤Àwp=UYÀtüÀwpÀwˆYÀtüÀwpUYYÀu¤Àwp&uYÀtüYYÀu¤ÀwpÀwp uYÀtüYYÀu¤ÀwpYYÀvp YYÀvp UYÀu¤ÀuÌYÀwhs uYÀtüYYÀu¤ÀwpYYÀu¤YÀtüUYÀuÌÀuÌYÀuÌYYÀvpYYÀwhÀwh0ÀwdÀs<ÀuÌYYYÀvpYÀvpÀwp ]ÀwdÀwdÀs<Àu¤ÀwpÀ¾ìÀjÜÀ¼$À¾ìÀ¶ÀuÌÀs<ÀjÔE4 Àt4ÀjÔÀjäÀt ]ÀtÈÀt¸]ÀtÈÀjÔ Àu¤Àu¤N ÀyÀuÌÀuÌ]Àu¼]Àu¼Àu¼ÀyÀuÌÀuÌ]Àu¼]Àu¼Àu¼ Às<ÀxøÀxø YÀxøYÀxøYÀxøÀxøÀs<YÀxø$ÀwpÀs<YÀxøÀwpÀwpÀ­8ÀsìÀsìÀsìÀu¨ÀmÀu¨ Àu¤Àu¤ÀiˆÀuÀÀi”YÀu¤YÀu¤Ài” Àt4Àt4Ài|Àu¼Ài”YÀt4YÀt4Ài” ÀvdÀuÀÀvXÀi”ÀvXUYÀtüÀi”+Àu¼]€ÝYÀvxÀ­8ÀvXYÀvtÀvpÀs<Ài”ÀvpÀvtÀs<Ài”ÀvtYÀvpÀs<Ài”YÀvpÀuÌÀs<Ài”ÀuÌÀwhÀs<Ài”ÀwhAÀwhÀwh+YÀwlÀwhYYÀwhAÀwhÀwhÀwdÀs<Ài”Àwd ÀwdÀwd Àu¬Àu¬C ÀuÌ]ÀwdÀuÌÀt<]Àwd]Àu¬]Àu¬À­8YÀvpÀu¨Às<Ài”Àu¨Àt<Ài”Àt< 1Àt4<€ÔÀu¤€ÔÀu¤1Àu¤€ÔÀt4€ÔÀt41Àt4(ÀtìAÀt4Àt4AÀu¤Àu¤ÀtìÀu¤ÀmÀu¤Às<ÀmÀi”Àu¤UYÀu¤Ài”YÀu¤Ài”,UYÀu¤Ài”Às<ÀmÀi”YÀu¤UÀu¤Ài” Àu¤Ài”$UÀu¤Ài”Às<ÀmÀi”Àu¤U]Àu¤Ài”UYÀu¤Ài”UYÀw\Ài” ÀxøÀxø Ài”Àu¤Àu¤U]Àu¤Ài”UYÀw\Ài” ÀyÀy& UÀuÌYÀyUÀuÌYÀyþDÀw¤YÀuÌÀwðÀ­8YÀwpÀwðYÀuÌYÀwpÀwŒÀuÌÀwpÀwpÀuÌÀw°€ÕÀwpÀw YÀxøÀwxÀv|Àw„YÀu¤]Àu¤]Àu¤U]Àu¤Ài”Ài”]Àu¤U]Àu¤Ài”Ài”]Àu¤UYÀu¤Ài”YÀu¤Ài”ÀwˆYÀtüUYÀtüÀi”YÀtüÀw¬ÀwYÀw\UYÀw\Ài”ÀwœÀwXÀ•TÀwÀ­8ÀwXÀwÀ­8À•TÀw|ÀuÀÀxèÀuÀÀxèÀw¨]uYÀuÌYÀwpÀ|pÀ|pÀw˜YÀyYUÀuÌYÀyÀx$ÀuÈUÀu¤ÀwpÀu¤ÀwpÀs<ÀmÀi”Àwp5YÀu¤À”ÄÀwpUYÀu¤Ài”YÀu¤Ài”ÀwXÀs<ÀmÀi”ÀwX/ÀwpÀ•TÀ”ÄÀ­8À­8ÀwÀwXÀuÌÀwp/ÀwpÀwpÀ”ÌÀ­8ÀwpÀwpÀxàÀwpÀwpUÀw\Ài”UÀw\Ài”€¸]€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀuÌÀwXÀ•TÀ”ÄÀ­8À­8ÀwpÀwÀwÀwXÀuÌÀw”Àw\UÀw\Ài”Ài”Àw\AÀwpÀwpÀw€À”ÌÀwpÀxàÀwp)ÀwpÀs<ÀmÀi”ÀwpAÀwpÀwpÀxøÀi”Àxø€—!ÀxÀu¼Àx(ÀwøÀuÄÀx,ÀwüÀx8Àx<ÀxÀuÈÀx Àx$Àx0Àx4ÀxDYÀuÌÀxPÀupÀxTÀuÀÀxXÀxèYÀuÌÀ¶pYÀuÌÀwðÀi”ÀwðÀxèÀi”Àxè#YÀwpÀs<ÀmÀi”YÀwp Àw$Àw$ ÀwÀwYÀw À­8Àwp]ÀwYÀw$ÀwYÀwpÀwÀwÀw\UÀw\Ài”Ài”ÀwÀwÀs<ÀmÀi”ÀwUÀu¤Ài”Àu¤UÀu¤Ài”Àu¤Ài”$UÀw\Ài”Às<ÀmÀi”Àw\"UYÀu¤Ài”YÀu¤Ài”,UYÀw\Ài”Às<ÀmÀi”YÀw\ Àw\Àu¤Àw\,YÀw\Às<ÀmÀi”YÀw\YÀu¤ ÀwpÀ•T Àw\Às<ÀmÀi”Àw\Àu¤UYYÀu¤Ài” Ài”YÀu¤YÀu¤UYYÀu¤Ài”€†YYÀu¤YÀtüÀyÀ­8ÀwpYÀvpYÀvpÀyUYÀtüÀi”YÀtüÀi”UYYÀu¤Ài”YYÀu¤Ài”ÀyÀs<ÀmÀi”Ày1UÀuÌYÀyÀs<ÀmÀi”ÀuÌYÀyÀuÌYÀvpYÀvpÀtÈÀs<Ài”ÀtÈÀt¸Às<Ài”Àt¸ YÀvpÀtÄÀs<Ài”ÀtÄ YÀtÄÀtÀÀs<Ài”ÀtÀÀt¤Àt¬ÀyÀt´Às<Ài”Àt´ÀÁ,ÀuÌUÀ­8ÀuÌAÀ‘”À‘”UÀ­8ÀuÌÀÁ,ÀuÌUÀ­8ÀuÌf Àt`Àt´ÀtdÀt¸ÀthÀtÀÀtxÀt ÀÁ,ÀuÌUÀ­8ÀuÌ€¨À‘”AÀ‘”À‘”ÀttÀuÌÀtXÀs<Ài”ÀtX€¥YÀuÀAÀuÀÀuÀ=UÀuÀ UÀuÀÀuÀUÀuÀÀuÀ YÀuÀYÀuÀ UÀuÀUÀuÀ uÀuÌÀ­8uÀuÌÀ­8( uÀuÀÀuÀÀuÀuÀuÀÀuÀÀuÀ\]UÀuÀÀuÀ€¥YÀuÀAÀuÀÀuÀ=UÀuÀ]ÀuÌYuÀuÌÀ­8ÀtTÀi”ÀtTÀtÔÀu¼ÀtÜÀt¸ÀtÌÀs<Ài”ÀtÌAYÀvpYÀvp ÀyÀy€¼€YÀtüYYUÀuÌÀwhÀuÌÀwhYÀtü€YÀtüYYUÀuÌÀwhÀuÌÀwhYÀtüUYUÀtüÀuÌYÀuÌYUÀtüÀuÌÀi”AYÀvpYÀvp.Àu¬Às<À­8]ÀwdÀuÌÀuÌÀi”Àu¬uYÀt4YÀu¤Ài”uYÀt4YÀu¤Ài”UÀtìÀi”4YÀt4YÀu¤uYÀt4YÀu¤Ài”Ài”$UÀtìÀi”Às<ÀmÀi”ÀtìÀtìÀs<ÀmÀi”Àtì$Àu¼Ài|Àu¼Àu¼Àt4‚%Àt4Ài”Àt4!]ÀuÀÀiˆÀuÀ]ÀuÀÀu¤Ài”Àu¤AÀu¤Àu¤AÀt4Àt4LYÀt4Ài”UYÀu¤Ài”YÀu¤Ài”AÀu¤Àu¤AÀt4Àt4>uYÀt4YÀu¤Ài”Às<ÀmÀi”YÀt4YÀu¤1Àt4Àt4Ày8Ày,Ày(1Àt4Ày Ày8Ày0Ày,Ày(1Àu¤Ày UÀtìÀi”UÀyÀi”.ÀtìÀy À­8Ày UÀtìÀi”Ài”Àtì$UÀyÀi”Às<ÀmÀi”ÀyÀtìÀy À­8Ày ÀyÀs<ÀmÀi”Ày/YÀt4YÀu¤uYÀt4YÀu¤Ài”Ày Às<ÀmÀi”Ày XÀy8YÀt4YÀyPÀ­8YÀw\Ày0Àw\Àu¤Ày4ÀwpÀy,YÀy Ày(ÀyÀyPÀs<ÀmÀi”ÀyPÀtìÀs<ÀmÀtìÀwpÀs<ÀmÀwp Ài”Ài”UÀyTÀi”ÀyTÀs<ÀmÀyT#ÀwpÀs<YUÀtüÀuÌÀwpÀwXÀ­8ÀwX1-Àw„YÀu¤ ÀuÌ]Àu¤]Àu¤ÀwpÀwˆYÀtüÀw¬ÀwÀ®Ày`YÀw\Àw”Àw\ÀwœÀwXÀwÀwXÀwÀ­8À•TÀw|Àw¨€Õ]uYÀuÌYÀwpÀ|pÀw˜YÀyYUÀuÌYÀyÀw¤YÀuÌÀwðYÀwpÀw°€ÕÀwpÀwŒÀw€ÀwpÀxàÀw YÀxøÀwxÀwpÀ­8Àwp"YYÀu¤YÀtüÀyÀwpÀyÀ­8Ày'UÀuÌYÀyÀ­8ÀuÌYÀyYÀwpÀ­8YÀwpA Àw Àwp]ÀwYÀw$ÀwYÀwpÀwÀwÀw\ÀwÀwÀ­8ÀwYÀw\À­8YÀw\Àw\À­8Àw\ÀtÈÀtÄÀs<ÀuÄAAÀt4 Àu¼ Àt4ÀtÈ Àt4ÀtÈ ÀuÌÀs<YÀuÌÀuÌÀuÌÀs<YÀu¤ÀuÌÀs<YYÀuÌÀuÌ€„Àw¤YÀuÌÀwðYÀuÌYÀuÌÀuÌÀuÌÀuÄÀu¼ÀuÈÀxTÀuÀÀu¤Àx0YUÀtüÀuÌÀt4ÀtÈÀx8]ÀuÌÀxPÀuÌÀs<ÀwpEYÀwŒYÀuÌÀuÌYÀwpÀw|ÀuÀÀu¤Àw€ÀxàÀwpÀwpÀw„YÀu¤ÀwˆÀw°ÀuÌÀs<Àwp,ÀwpUÀwpÀuÌYÀuÌYÀwpÀ­8Às<ÀuÌY ÀuÌÀs< Às<ÀuÌYYYUÀwŒYÀuÌYÀwpÀuÌÀwpÀwpÀw|ÀuÀ]ÀwdÀu¤]ÀwdÀwdÀ­8$ÀwpÀs<ÀwpÀuÌYÀwpÀ­8%YYÀuÌYÀuÌYYÀuÌ1ÀwpÀs<ÀwpÀuÌYYÀuÌYÀwpÀ­85ÀwpÀs<UÀwpÀuÌYYÀuÌYÀwpÀ­8ÀwpÀ­8ÀwpÀuÌYÀuÌ ÀwY Àw$Y(Àw YÀw$]ÀwÀwÀwÀwYÀwY7 Àw À­8YÀw$Àwp]ÀwÀwÀwÀwÀw#ÀwAYÀwpAÀwÀw Àw(Àw#Àw$AYÀwpAÀwÀw$ÀwAÀw UÀwÀwUÀwÀwÀwÀwÀw ]Àw(Àw YÀw$]ÀwÀwÀwÀwÀw YÀw$ 1Àw$ YÀw$YUYÀw\YÀwpXÀw YÀw$]ÀwYÀw$EÀw$5]ÀwÀwYÀwpÀwÀwÀw\Àw,YUYÀw\YÀwpYÀw\Àw YAÀwÀw UYÀw\YÀwpA AÀwÀw]]Àw À­8YÀw$Àwp]ÀwÀw5ÀwYUYÀw\YÀwpAÀw$Àw$ÀwYUYÀw\YÀwpAÀw$Àw$UÀwÀwX YUYÀw\YÀwpAYUYÀw\YÀwp ÀwXÀwXrYUYÀw\YÀwpYUYÀw\YÀwp}AÀw$Àw$YUYÀw\YÀwpAÀw$Àw$UÀwÀwXÀwÀwX. ÀwYÀwpÀwXYÀu¤Àwp‚ñ‚ñ&ÀwpÀ•TÀ­8À­8ÀuÌÀwÀwXUÀwÀwX1ÀwXUÀwÀwXÀwÀwXUÀwÀwX)ÀwpÀ•TÀ­8À­8ÀuÌÀwYÀwXÀs<ÀuÀÀnÌÀnÌÀs<ÀuÈÀnÌYÀuÌ)Àw¤Àx YÀwpYÀuÌÀuÈÀ­8ÀwpÀuÌUAÀwpÀwpÀwpAÀwpÀwpÀwpÀw¤ÀwŒÀw|YÀwpYÀwpÀuÀÀµìÀ·¬]ÀuÀÀwŒÀw|YÀuÌYÀwpYÀwpÀw|ÀnÌÀu¤UÀu¤ÀwpÀxDYÀ·¼À¸ À¶|À·¤À¸$À·œÀuÌÀx ÀxT8UAÀwpÀwpÀwpÀs<ÀnÌÀwp]ÀuÀÀ­8,UAÀwpÀwpÀwpAÀwpÀwpÀwp$ÀwpÀs<ÀwpÀuÈYÀuÌÀ­8)ÀwpÀs<ÀwpÀuÈYÀuÌÀwpÀ­8 ÀuÈÀwpA]Àu¤Àwp AÀwpÀwpÀwpE7 ÀwpÀw¤À­8YÀuÌYÀwpÀwøÀuÄÀxÀu¼\Às<]Àu¤A]Àu¤AÀwpAAÀwpÀwpAÀwpEÀwpAÀwpÀwpÀwpÀ“ÈÀ“ÈÀ“È Ào  Ào$ Ào( Ào, Ào0 Ào4 Ào8 Ào ÀoAAÀwpAAYÀy Ào<€¾ AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPAAAÀwp Àwp] Àwp ÀwX Ào@ AAÀy ÀoD AAYÀy Ày UÀuÌYÀy0'AAÀwp]Àw¤YÀwpYÀuÌÀwðÀw€ÀwpÀwpÀxàÀw„ÀuÌÀ­8 ]Àu¤]Àu¤YÀu¤ÀwˆYÀtüÀwŒÀwYÀw\Àw”Àw\€ÕÀwpÀwœÀwXÀwÀ•TÀ­8Àw¨]uYÀuÌYÀwpÀ|pÀw˜YÀyYUÀuÌYÀyAAYÀyÀw YÀxø€Ç AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPÀwp AÀw\€È AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPÀw\AAAÀw\ ÀoHAYÀw\AAAÀw\ Àw\AAAÀw\€Ì AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPYÀw\AUÀu¤AAÀw ÀoL ÀoP AÀw Àw$ Àw] AAÀwpAAÀwÀwÀwÀw\ÀwÀw Àwp]ÀwYÀw$Àw€Ç AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPÀwAAÀy  ÀoTH AAÀy Ày8YÀyPYÀw\Ày0Àw\Ày4Ày,Ày(Ày€Ç AAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPÀy AAUÀu¤+AAAÀwpAAÀy]+AAAÀwpAAÀwX]AAYÀw\AAÀw\+AAAÀwpAAÀwp]AAÀw$AAÀwXAAÀyAAÀyPAAÀyTAAÀyX ÀoX Ào\ Ào`€ù AAAÀwpAAÀwX]AAÀwpAAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyP Àod€ù AAAÀwpAAÀy]AAÀwpAAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyP Àoh Àol Àop AAÀyTAAÀw$AAÀwXAAÀyAAÀyP7uAAÀwpAAÀyTAAÀyXÿAAUÀu¤AAAÀwpAAÀy]AAAÀwpAAÀwX]AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀwpAAÀw$AAÀwXAAÀyAAÀyPAAÀyTAAÀyXAAUÀu¤AAYÀw\AAÀw\AAAÀwpAAÀwp]AAÀwAAÀw$AAÀwXAAÀyAAÀyPCuAAÀwpAAÀyTAAÀyXÀoAAÀwpÀoAAÀyTÀoÀwpÀs<À­8ÀwpÀs<À­8ÀwpÀs<À­8ÀwpÀs<À­8ÀwpÀs<À­8 ]ÀwpÀuÌÀs<ÀuÌÀuÌ ÀuÈÀs<ÀwpÀ”ÌÀ­8ÀwpÀwpÀwpÀ­8ÀwpÀwpYÀwpÀwpYÀwpÀwpÀ”ÌÀs<À­8YÀwp#ÀwpÀs<À­8YÀwpYÀuÌÀwpÀs<À­8YÀu¤   A U UYYA UU UY0 YYUUYY1UYAAAUY0UYAAAUY.AAYÀw\AÀwpUYÀw\Àwp YÀw\ÀwpÀwpUYÀw\ÀwpbAAYÀw\AÀwpUYÀw\ÀwpYÀwpUYÀw\YÀwpYÀwpYÀw\%UYÀw\ÀwpÀwpÀuÌUYÀw\ÀwpUYÀw\ÀwpÀwp1UYÀw\YÀwpYÀwpYÀuÌY UÀuÈ ÀuÈUÀuÈ UÀuÈA UÀuÈ ÀuÈÀuÌ ÀuÈe UÀu¼YÀuÌYÀuÌÀu¼UÀuÈYÀuÌYUYÀw\YÀwpYÀw\YÀwp6ÀwpÀs<ÀxÀÀu¼YÀuÌYÀuÈYÀwpÀ­8ÀwpÀs<À­8ÀuÌÀwp ÀwpÀs<À­8ÀuÌÀwpÀwpÀwpÀs<À­8ÀuÌÀwpÀs<ÀuÌÀwpÀwp%uÀu¤ÀwpÀw\Às<À­8ÀwpÀwpÀuÌÀwpÀ­8 À¶xÀ½ À¶|À½ ÀuÌÀuÀUÀwpÀuÌÀ­8Às4 ÀwpÀs<À­8ÀuÌÀuÌÀwp*ÀwpÀs<À­8ÀuÌÀuÌÀwpÀwpÀwp%ÀwpÀs<À­8ÀuÌÀwpÀwpÀwp*ÀwpÀs<À­8ÀuÌÀwpÀwpÀwpÀwp/ÀwpÀs<À­8ÀuÌÀwpÀwpÀwpÀwpÀwp*ÀwpÀs<À­8ÀwpÀwpÀwpÀwpÀwp/ÀwpÀs<À­8ÀuÌÀuÌÀuÌÀuÌÀuÌÀwp ÀvÀƒÅ]ÀwpÀs<À­8Àv|E]ÀwpÀs<À­8Àv|ÀuÌÀuÌÀuÌ%ÀwpÀs<À­8ÀuÌÀuÌÀwpÀwp YÀwp%ÀwpÀs<À­8ÀwpÀwpÀwpÀwpÀwpÀ­8ÀuÌÀwpuÀ­8ÀuÌÀwp]uÀ­8ÀuÌÀwp6Àw¤ÀxDYÀ·¼YÀuÌYÀwpÀuÌÀ­8Àwp]uÀ­8ÀuÌÀwpÀwpÀwpÀs<ÀuÌÀ­8 À¶ À¶ À·(Às<Y À·(Às<À·(Às<À·(Às<À·(Às<Y À·(Às<À·(<UYÀ¶ Y€À¶À¶ YÀ¶ YÀ¶ À¶¨ ]À·(À·(Às<€9UYÀ¶ Y€À¶À¶ YÀ¶ À¶¨]À¶S UYÀ¶ Y€À¶À¶ YÀ¶ À¶¼YÀ¶ À¶¼YÀ¶ À¶¼ À·(E€À·(UÀu¤AÀwpÀwp1YÀuÌÀ­8Àu¤UÀu¤ÀwpÀwpYÀwp"UÀu¤AÀwpÀwpYÀu¤UÀu¤AÀwpÀwp^Àu¤YÀuÌUYÀu¤YÀwpYÀu¤YÀwpUÀu¤AÀwpÀwpAÀwpÀwp(UYÀu¤ÀwpÀs<YÀu¤Àwp>YÀu¤Àu¤YÀu¤UÀu¤AÀwpÀwpAÀwpÀwpUÀu¤ÀwpYÀu¤Àwp]UYYÀu¤Àwp YÀu¤ÀwpÀu¤€¿Àw”À­8Àwp]UYYÀu¤Àwp]UYYÀu¤ÀwpYYÀu¤UYÀu¤ÀwpÀwpYÀu¤YYÀuÌYYÀuÌYÀuÌÀwˆYÀtüÀuÌYUÀtüÀuÌÀuÌ YUÀuÌÀwhYÀu¤?YYÀu¤À­8YYUÀuÌÀwhYUÀtüÀù€YÀtüYYUÀuÌÀwhÀuÌÀwhÀu¤YÀtüÀuÌYYUÀuÌÀwhYÀtüYÀuÌYUÀtüÀuÌÀuÌYYÀu¤ÀwpÀwpÀuÌYYÀuÌYÀwpUÀwpÀuÌ)UÀwpÀuÌÀs<À­8ÀuÀÀxèÀwd"UYYÀuÌÀuÌÀs<ÀuÌ€ÀuÀÀxèYÀuÌÀ­8!]€ÀuÀÀxèYÀuÌÀ­8)ÀwŒÀw|ÀuÀYÀuÌÀ­8ÀxèÀuÌ(]€ÀuÀÀxèYÀuÌÀ­8ÀwpÀwpÀs<ÀuÌÀuÌÀwp ÀwpÀ­8 ÀuÌÀuÌÀwpÀwp'ÀwpÀs<YÀuÌYÀwpYÀuÌ ÀuÌÀuÌÀwp(ÀwpÀs<À­8ÀwpYÀuÌYÀuÌjÀuÌYÀuÌYÀuÌYUÀu¤ÀwpÀwpÀu¤YÀuÌÀuÌÀuÌUYÀwpYÀuÌYÀwp7UAÀwpÀwpÀwpÀs<À­8YÀwpYÀuÌ Àp( A Àp,YuÀuÌYÀuÌ"]€ÀuÀÀxèYÀuÌÀ­83UYuÀuÌYÀuÌYuÀuÌYÀuÌuÀu¤ÀwpÀuÌY]Àwp2uYAÀwpÀwpYAÀwpÀwpYÀwpYAÀwpÀwp]UÀwpYÀwp# ÀuÌYÀuÌuÀuÌYÀuÌ YUÀuÌÀwhY uÀuÌYÀuÌ2UYuÀuÌYÀuÌYuÀuÌYÀuÌYuÀuÌYÀuÌuÀu¤ÀwpÀuÌ( uÀuÌYÀuÌuÀu¤ÀwpÀuÌ Àwp]ÀwpH uÀuÌYÀuÌY]ÀwpuAÀwpÀwpAÀwpÀwpÀwp# AÀwpÀwpAÀwpÀwpÀwp1uYAÀwpÀwpYAÀwpÀwpYÀwp AÀwpÀwpÀwp‚')Àw¤YÀuÌYÀuÌYÀwpÀuÌÀuÌÀ­8ÀwpUYYÀuÌÀuÌÀuÌYYÀuÌUYÀuÌÀuÌYÀuÌYuÀuÌYÀuÌYYÀwp]€ÀuÀÀxèYÀuÌÀ­8ÀuÀÀu¤€YÀtüYYUÀuÌÀwhÀuÌÀwhUYuÀuÌYÀuÌYuÀuÌYÀuÌYuÀuÌYÀuÌYuÀuÌYÀuÌUYÀwpYÀwpYÀwpYÀwpÀ­8UÀu¤ÀwpuÀu¤ÀwpÀuÌÀwpÀu¤Y]ÀwpÀwpuYAÀwpÀwpYAÀwpÀwpYÀwpYAÀwpÀwpYÀwpYAÀwpÀwpÀwp+]UÀwpYÀwpÀs<ÀwpYÀwp]UÀwpYÀwpf UÀwpYÀwpÀwpÀwŒÀwpYÀwpÀuÌ]UÀwpYÀwp]UÀwpYÀwpYÀwpÀwpÀs<Àwp$ÀwpÀs<À­8YÀtüÀwpÀuÌÀu¤Àt<ÀwdYÀuÌYÀuÌÀwpÀ­8YÀuÌÀwpÀwX]uÀ­8ÀuÌÀwpMÀwpYÀu¤À”Ä]uÀ­8ÀuÌÀwp]uÀ­8ÀuÌÀwpÀ­8ÀwpÀwXÀuÌÀwXÀwXfÀwXYÀu¤À”ÄÀwpYÀu¤YÀuÌÀuÌUÀu¤ÀwpÀwpÀu¤ÀwXÀwXÀwXYÀw\6 ÀwpÀs<Àt<ÀwÀwXÀ•TÀ­8À­8YÀwXE AÀwXYÀwXAÀwX0ÀwpÀs<Àt<À•TÀ­8ÀwÀwXÀ­8ÀuÌ&ÀwœÀuÌÀwÀwXÀ•TÀ­8À­8ÀwpÀs<Àt<Àwp Y1]AY ]]]‚ñ‚ñYÀtüYÀtüÀtüZÀuÌUÀu¼YÀuÌYÀuÌÀu¼ÀuäÀuÌÀuØÀu¼Y1ÀuÜÀuàÀuÌÀuèÀs<YÀtüYÀtüÀuÌYÀuÌÀuÌ1#Às<YÀtüYÀtüYÀuÌ]ÀtÀt ]Àt1€YÀtüYÀtüYYUÀuÌÀwh0€YÀtüYÀtüYYUÀuÌÀwhV€YÀtüYÀtüYYUÀuÌÀwh]Àu¬]Àu¬Àu¬€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYÀtüYYUÀuÌÀwhUÀu¼UYÀtüYÀtü]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌ]€áYÀtüYÀtüYÀtüYUÀtüÀuÌYÀuÌÀwdYÀtüYÀuÌÀs<Àu¤ Àt4Àt4ÀtÄAÀtÈÀuÌUÀuÌUÀu¼YÀuÌYÀuÌÀu¼YÀtÈAÀtÈÀuÌYUÀtüÀuÌÀt4]YÀuÌÀs<ÀuÌ]EÀs<ÀuÌÀjxÀwÀwÀwÀwp*ÀwpÀs<À­8ÀuÌÀwpÀu¤ÀwpÀwpÀjxÀwÀwÀwUU]]Às<Àu¼Àu¬YÀvp7ÀuÌÀjÔÀjäÀjÜUÀu¼YÀuÌÀu¼Àt4ÀjÔUÀu¼YÀuÌÀu¼Àt4]Àu¬]Àu¬Àu¬ Àu¼À™LÀ™L*€É€ÍÀs<ÀuÀÀxèÀu¬E#€É€ÍÀs<ÀuÀÀxè]ÀŸPÀuÀ&ÀuÀ]ÀŸP]ÀŸPYÀu¤Àw`Àu¼Às<À­8ÀuÌÀs<À­8YÀuÌÀuÄÀs<À­8 YÀŸPÀŸPÀuÌÀŸPÀs<À­8YÀuÌ$ÀuÌÀŸPÀs<À­8ÀuÌYÀuÌÀu¤À•TÀwpÀw\ÀpœÀw\ÀwpÀpœÀwp)]AAÀwpÀwpAÀwp]ÀwpÀpœAAÀwpÀwpÀwpW]AAÀwpÀwpAÀwp]Àwp]AAÀwpÀwpAÀwp]ÀwpÀpœ]ÀwpÀpœÀwp#ÀwŒYÀuÌÀ­8ÀuÌÀwpYÀwpÀwpYÀwpÀw¨]uYÀuÌYÀwpÀ|pÀ|pÀw˜YÀyYUÀuÌYÀy]Àu¤€ÕÀwpÀw¤ÀwðÀw„]Àu¤YÀu¤ ÀwˆYÀtüÀwœÀwXÀ•TÀ­8ÀwÀwYÀw\Àw YÀxøÀw¬/ÀwpÀuÌÀ•TÀ”ÄÀ­8À­8ÀwÀwXÀwp€¤]Àwp]€ÉÀ•TÀ­8ÀwÀwXÀwpÀ”ÄÀ­8€ÍÀuÌÀuÌÀwXÀ•TÀ”ÄÀ­8À­8ÀwpÀwÀwÀwXÀw”Àw\Àw\Àw€À”ÌÀwpÀxàÀwp]ÀwpÀwpÀpœÀwpAÀwpÀwpYÀwpÀpœYÀwpO ÀwYÀwpYÀwpÀw À­8Àwp]ÀwYÀw$ÀwÀwÀw\ÀwÀwÀpœÀwÀwXÀpœÀwXYÀwXÀpœÀwX'YYÀu¤YÀtüÀyÀ­8ÀwpÀyÀpœÀy'UÀuÌYÀyÀpœÀuÌYÀyÀtìÀ­8Ày ÀyÀpœÀyS Ày8YÀt4YÀyPÀ­8YÀw\Ày0Àw\Ày4ÀwpÀy,YÀy Ày(ÀyÀy ÀpœÀy Ày ÀyPÀpœÀyPYÀyPÀpœYÀyPÀyTÀpœÀyTAÀt4AÀi”Ài”AÀu¤AÀi”Ài” Àt4Ài” Àu¤Ài”>AÀt4AÀi”Ài”AÀu¤AÀi”Ài”ÀtìYÀt4Ài”Àv8Àt4L UYÀtüÀi”YÀtüÀi”YÀvpÀtX]ÀuÌÀtTeÀtìÀtÌÀt8Às<Ài”Àt8Àt4Às<Ài”Àt4Àu¤Às<Ài”Àu¤ÀuÀt4Às<ÀuÌÀt4Às<YÀuÌÀu¼Às<ÀuÌÀu¼Às<YÀuÌÀxÐ+ÀwpÀs<À•$À­8Àu¤ÀwpÀwpÀwp€ŒÀwpÀw¤YÀwpÀwp]UÀuÀÀwpÀuÀ]uÀuÀÀwpÀwpÀwp]ÀuÌ]ÀuÌ]ÀuÌÀu¤ÀwœÀwXÀwÀw”Àw\Àw¤Às<€Á ÀwpA€Á AÀwpA€Á AÀwA€Á AÀwpA€Á AÀwm A€Á AÀwpA€Á AÀwÀwYÀwpÀw Àwp]ÀwYÀw$ÀwÀwÀw\Àu¤ÀwÀs<€Á ÀwAÀw$Às<€Á AÀwXÀs<€Á €ü6ÀwxÀ­8Àv|]ÀuÌ]ÀuÌÀw¤YÀwpÀwp]Àwp]UÀwpÀwpÀwpÀwpÀwpÀv˜ÀwxÀv˜ÀuÌÀvˆÀvˆÀvÀvÀv Àv  ÀvŒÀvŒÀv”Àv”ÀvœÀvœ Àv¤Àv¤ ]UÀwpÀwpÀv¼Àv¼]UÀwpÀwpD ÀwxÀwxÀv|Àv|]ÀuÌ]ÀuÌÀuÌÀuÌ]ÀuÌ]ÀuÌÀs<ÀwpÀwp1Àw¤YÀwpÀw¤YÀuÌÀ­8ÀuÌYÀwp€Ú UÀu¬ÀwdÀu¤ÀwdÀu¬€YÀtüYYUÀuÌÀwh]ÀuÌÀwhYÀtü]ÀuÌÀwhYYUÀuÌÀwh€YÀtüYYUÀuÌÀwhÀuÌÀwhYYUÀuÌÀwhYYUÀuÌÀwh€¿UYÀuÌYÀuÌYÀuÌYÀuÌUYÀwpYÀwpYÀwpYÀwpUÀuÌÀwpYÀuÌYÀwpÀuÌÀwpÀuØÀu¼€Àu¼YÀuÌYÀwpÀ­8À­8YÀwpYÀuÌ?€Àu¼YÀuÌYÀwpÀ­8Às<YÀuÌYÀwpÀ­8À¶xÀs<À¶!ÀwpÀs<À­8À¶ÀwpÀuÌM Àw¤YÀuÌYÀwpÀw„YÀu¤YÀwpÀw„YÀu¤ÀwpÀwpÀuÌ]UÀwpÀwpÀwpI Àw¤ÀxYÀwpÀw„YÀu¤YÀwpÀw„YÀu¤À­8ÀwpÀwp]uÀwpÀwpÀ­8Àwp€Àu¤ÀwpÀ•TÀwp]€Àu¤ÀwpÀ•TÀwpÀw”Àu¤À•TÀwpÀwp$]€Àu¤ÀwpÀ•TÀwpÀwpuÀwpÀwp]uÀwpÀwp< ÀwŒÀw|YÀwpYÀwp]YÀwpÀuÀÀwpÀwp!]uÀwpÀwpÀs<ÀwpE; ÀwŒÀw|YÀuÌYÀwpYÀwpÀuÀÀuÌÀwpÀwp]uÀwpÀwpÀs<Àwp]€Àu¤ÀwpÀ•TÀwp]uÀwpÀwp$€‰À•$Àu¤ÀwpÀwpÀwpÀ­8(]€‰À•$Àu¤ÀwpÀwpÀwpÀ­8€Ü]€Àu¤ÀwpÀ•TÀwp]uÀwpÀwp]€Àu¤ÀwpÀ•TÀwp]UÀwpÀwp]uÀwpÀwpÀ­8]€Àu¤ÀwpÀ•TÀwpÀwpÀ•TÀ­8ÀwpÀu¤ÀwpÀwpÀwpÀu¤Àu¤ÀwpÀwpÀ•$À•\4]€‰À•$Àu¤ÀwpÀwpÀwpÀ­8Às<Àwp)]€‰À•$Àu¤ÀwpÀwpÀwpÀ­8I]€‰À•$Àu¤ÀwpÀwpÀwpÀ­8ÀwpÀ•$À­8ÀwpÀu¤Àwp (€¥  (Àtü Àix ÀixÀix€¥  €¥ eAÀixE AÀixAÀix€¥  €¥  ÀixÀtü   Àix (Àu¼ Ài| Ài| Àu¼ ]Àu¼ Ài|Àu¼ Ài|Àu¼ Ài| Ài„ UÀu¼Ài| Ài€ Àu¼ Ài|Ài|# AÀi|Ài|UÀu¼ (Àu¤ Àiˆ Àiˆ ÀiˆÀu¤ Ài UÀu¤Àiˆ ÀiŒ Àiˆ ÀiˆÀiˆÀiˆ ÀiˆÀiˆ UÀu¤ Àu¤# AÀiˆÀiˆUÀu¤(ÀiˆÀuÀ(Ài|Àu¼ ÀiˆÀuÀ Ài|Àu¼- YUÀtüÀuÌÀiˆÀuÀÀi|Àu¼ Àv  Ài” ]Àu> ÀuÀuÌÀ­8ÀuÀupÀu Àu(Àu4ÀuÌÀu YÀuÌ ]ÀuÀu U AYÀvpYÀvpÀi” YÀvpYÀvp ÀyÀy AÀyÀy YÀyYÀy Àv Àv Àv Àtü Àv Àv  AÀv Àv UÀtü Àu¼ AÀv Àv UÀu¼ Àu¼Àj Àj eAÀj E AÀj  AÀj  Àj Àj  Àj (ÀixÀuÌ ÀixÀuÌ ÀixÀuÌÀi|Àu¼ ÀtüÀuÌÀixÀuÌ ÀjYÀtüYÀuÌ ÀjYÀtüYÀtüUYÀtüYÀuÌUYÀtüYÀuÌUYÀtüYÀuÌÀjYUÀtüÀuÌÀjYÀtüYÀtü$ ÀixÀuÌÀtüÀuÌÀixÀuÌ ÀuÀu Àj Àu¼Àu¼ Às<ÀjÀv Àv Àv Àv Às<Àv Àv AÀu¼Àu¼ Àu¤Àu¤ Àt4Àt4Àu¼Àu¼ ÀuÈÀuÈ ÀuÄÀuÄ =ÀwX =ÀwX À•TÀ­8 ÀwX ÀwÀwpÀ”Ä YÀwX ÀwpÀwÀ­8ÀuÌ ÀwpÀuÌ' UÀwpÀuÌYÀu¤UÀwpÀuÌÀj¤YÀtüÀuÌ YÀtüÀuÌeAÀj¤E AÀj¤ AÀj¤ (€í (1 €í  Àj° €í Àj°€í  €í eAÀj°E AÀj°AÀj°% %  Àj´( €í % U Y% €í % €í  €í  U  Y%  1%  Y% U  Y%  % (€¥ Y Àj¸ €¥ Y Àj¸ €¥ Y €¥ Y  Y Àj¼Ài|Y Àj¼ Ài|Y Ài|YÀi|YÀt4Ài|YYÀt4 ÀjÌ ÀuÌÀuÌYÀwhÀwh" YUÀuÌÀwhYÀwhÀuÌÀjÔÀjÔÀµÌÀ¼$ÀjÔ ÀjÔÀt ÀjÔeAÀjÔE AÀjÔ AÀjÔ ÀµÌÀ¼$TOMicrosoft.FSharp.Compiler.Tastops+TypeDefMetadata+ILTypeMetadata@DebugTypeProxysnMicrosoft.FSharp.Compiler.Tastops+TypeDefMetadata+_FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata@DebugTypeProxy(Àt  Àt [VMicrosoft.FSharp.Compiler.Tastops+TypeDefMetadata+ExtensionTypeMetadata@DebugTypeProxy ÀjÜÀjà Àjà Àjä ÀtüÀtü  Àk Àk Àk Ày\ÀtüÀy\ Àk Ày\ÀuÀy\ Ày\ÀutÀy\ ÀkÀtü Ày\Ày\ AÀy\Ày\UÀtü Às< YÀtüYÀtüÀtü YÀtüÀtüYÀtü YÀtüYÀtüÀu YÀtüYÀtüÀuÌ Às<Àtü YÀtüYÀtü" AYÀtüYÀtüUÀtü(eYY (YY(Àtô(AÀu¤],eYYAÀu¤], eYY YY Àtô AÀu¤],G eYYYY]Às<ÀtôAÀu¤], YY ÀkdYY YY ÀkdY ÀkdÀu¼ ÀkdÀtô YY YY YYE ],Àu¤YY1 ]Y À¶ Às<À¶]ÀµÌ- ]UYÀ¶ Y€À¶À¶ À·( ]ÀvtÀvx(YUÀuÀÀuÀ(YUÀu¼Àu¼Àk°YUÀuÀÀuÀYUÀu¼Àu¼ YUÀuÀÀuÀ YUÀu¼Àu¼' YUÀuÀÀuÀYUÀu¼Àu¼Àk°(€„ÀuÈ€ÅÀuÈ(€„ÀuÄ€ÅÀuÄÀk´ €„ÀuÈ€ÅÀuÈ €„ÀuÄ€ÅÀuÄg €„Àt4€ÅÀt4€„Àt4€ÅÀt4€„Àu¤€ÅÀu¤€„ÀuÈ€ÅÀuÈ€„ÀuÄ€ÅÀuÄ Àk´Àk´Àk´ Àk´UÀu¤ÀuÀ UÀu¤ÀuÀUÀuÀÀuÀ Àt4Àu¼ Àt¸ÀuÈ Àk´ÀtÈÀk´ Àk´ÀtÄÀk´ Às<ÀjÀu¤ Àk°Àk´# UÀk°Àk´Àt4UÀk°Àk´ Às<ÀjÀtì# UÀk°Àk´Àu¤UÀk°Àk´ YÀuÀÀt4# UÀk°Àk´ÀyPUÀk°Àk´# UÀk°Àk´Ày UÀk°Àk´, AÀu¤AUÀk°Àk´UÀk°Àk´)AÀu¤AUÀk°Àk´UÀk°Àk´' AUÀk°Àk´UÀk°Àk´Àw\ÀtôÀu¼ÀuÈÀtôÀu¼ÀuÄ Àk´Àt4Àk´ Àk´Àu¤Àk´A€„€Å AÀtôAA Àl  YU €„Àt4€ÅÀt4Àk´ ÀtôÀt4 Àt4Ài”Àt4 €„Àu¤€ÅÀu¤Àk´ ÀtôÀu¤ Àu¤Ài”Àu¤ €„ÀuÈ€ÅÀuÈÀk´ ÀtôÀuÈ ÀuÈÀi”ÀuÈ ,ÀuÈAÀt4AAÀu¤A Àl\ YÀu¤Àt4YÀu¤ YÀu¤Àu¤YÀu¤ YÀt4Àt4YÀt4 YÀt4Àu¤YÀt4 Ày`Àu¤Ày` Ày`ÀwÀy` Ày`Àw$Ày` ÀkÀuÀYÀuÌ Ày`Ày`ÀuÀYÀuÌ" AÀy`Ày`UÀuÀYÀuÌ Ày`YÀu¤Ày` Ày`ÀyÀy` ÀkÀw\Ày` Ày`EAÀy`Ày`, ÀkÀy`AÀy`Ày`À®Ày`Àw\ Ày`Àw\Ày` ÀkÀwpYÀw\ ÀkÀuÌYÀy" AÀy`Ày`UÀuÌYÀy Ày`ÀutÀy` Ày`ÀuÌÀy` Ày`ÀwXÀy` Ày`ÀwpÀy` Ày`ÀyPÀy` Ày`Ày Ày` Àwh]À“ÀYÀvp ]À“ÀÀu¤ ]À“ÀÀuÌ YÀvpÀuÌ Às<YYÀvpUYÀu¤ÀuÌ YYÀvp Àu¤]À“À ÀuÌ]À“À ÀuÌYÀvp ]À“ÀYÀvpÀwh&YÀu¤ÀuÌYYÀvpYÀuÌ YÀwhUYÀu¤ÀuÌÀmÀmÀmeAÀmE AÀm AÀm Àm Àm ÀmÀm$ ÀiˆÀuÀÀu¤Àu¤ÀiˆÀuÀÀu¼Àu¼Àt4$ Ài|Àu¼Àt4Àt4Ài|Àu¼ ÀvtÀvtÀuÌÀvt ÀvxÀvx ÀwhÀwh AÀwhÀwh YÀwhYÀwh ÀwdÀwd% Às<Ài”ÀuÌ]ÀwdÀuÌÀ­8 Àu¬Àu¬ Àu¨Àu¨ Àm Às<ÀmÀi” ÀxøÀxø Às<Àm UÀu¤Ài”Ài”Àu¤ ÀyÀy& UÀuÌYÀyUÀuÌYÀy4 AÀwpÀwpÀ•TÀ”ÄÀ­8À­8ÀwÀwXÀuÌ À­8Àw\4 ÀwpAÀwpÀwpÀ”ÌÀ­8ÀwpÀwpÀxàÀwp3 ÀwÀw(Àw0ÀuÄYÀuÌÀw4ÀuÌÀw<ÀuÌ Àw$Àw$ ÀwÀw Àw\Àw\Àu¤" UYÀu¤Ài”Ài”YÀu¤ ÀtÈÀtÈ ÀtÄÀtÄ ÀuÀÀuÀ Ài|Àu¼ AÀu¼Àu¼ Àu¼ AÀu¼ AÀu¼+À‘xAÀu¼AÀu¼Àu¼Ài|Àu¼ UÀuÀÀuÀUÀuÀÀuÀ AÀuÀÀuÀ YÀuÀYÀuÀ UÀuÀUÀuÀ uÀuÌÀ­8uÀuÌÀ­8( uÀuÀÀuÀÀuÀuÀuÀÀuÀÀuÀ Ài”AYÀvpYÀvp ÀyÀy Àt4Àt4ÀuÀÀiˆÀuÀ‚%) Às<Ài”AÀu¤Àu¤AÀt4Àt4Àt8,Àt8Àt8UYÀtüÀi”YÀtüÀi” EÀt4Àt4, Àt4Àt4YÀt4Àt4YÀt4Àt4 1Àt4 YÀt4 YÀyP YÀy €¡ Ày Ày8YÀt4YÀyPÀt4ÀyPÀt4Ày Ày,YÀy Ày Ày(ÀtìYÀt4Àt4YÀt4YÀyPÀt4YÀt4YÀy Àt4YÀt4Àt4 1ÀyP YÀyP YÀyP 1Ày YÀy YÀy €ª Ày Ày8YÀt4YÀyPYÀw\ÀyPÀy0Àw\Ày,YÀy Ày Ày(ÀtìÀu¤YÀu¤Àu¤YÀu¤YÀyPÀu¤YÀu¤YÀy Àu¤YÀu¤Àu¤ UÀyÀi”Ài”ÀyÀw YY AYYÀw$ YÀwYAYÀwpAÀw AYÀwpAÀw ÀwYÀwp E Àw Àn´ Àn°Àn° Àn´Àn° Y, YUYÀw\YÀwpAÀw$Àw$ YUYÀw\YÀwpKYÀu¤À”ÄÀwpUYÀw\YÀwpYÀwpYÀw\À­8YÀwp ÀwXÀwXÀnÌÀnÌeAÀnÌE AÀnÌ AÀnÌ ÀnÌ ÀnÌ ÀnÌ ÀnÔ ÀwpÀ­8Àu¤4A]Àu¤AÀwpAAÀwpÀwpAÀwpEW Às<A]Àu¤AÀwpAAÀwpÀwpAÀwpE]Àu¤ÀwpAÀwpÀwpN Às<A]Àu¤AÀwpAAÀwpÀwpAÀwpEÀwpÀ­8YÀuÌ]Àu¤ÀwpAÀwpÀwp AÀwpE ÀwpYÀuÌÀ­8ÀuÄÀu¼Àt4S Às<A]Àu¤AÀwpAAÀwpÀwpAÀwpEÀwpYÀuÌÀ­8ÀuÄ* Às<ÀwpYÀuÌÀu¼À­8ÀuÈÀtÈ Àt4S Às<A]Àu¤AÀwpAAÀwpÀwpAÀwpEÀwpYÀuÌÀu¼À­8 EÀuÈÀwp,(AAAÀwpAAÀwp](AAUÀu¤(AAÀw\(AAYÀw\(AAÀw,(AAAÀwpAAÀwX],(AAAÀwpAAÀy] Ào, AAAÀwpAAÀwp] AAUÀu¤ AAÀw\ AAYÀw\ AAÀw, AAAÀwpAAÀwX], AAAÀwpAAÀy] ]AAÀwpÀwp UÀu¤ Àw\ YÀw\ Àw ]AAÀwpÀwX ]AAÀwpÀy Ào< Àwp Ào@ Ày YÀyAAYÀy ÀoDAYÀy UÀuÌYÀy ÀoH Àw\ ÀoL ÀoP ÀoT ÀoX Ào\ Àw$AAÀwp Ào`AAAÀwp ÀwX] ÀwX Àod Ày] Ày Àoh ÀyP Àol ÀyTAAÀyT Àop ÀyT ÀyX  ÀuÌ# UYÀw\ÀwpYÀw\Àwp UÀuÈ UÀuÈÀuÈÀuÈ UÀuÈ À­8 ÀuÈ EUÀuÈ ÀuÌÀuÈ ÀuÈ À¶ À¶  YÀuÌÀ­8Àwp YÀu¤À­8YÀwp UÀu¤ÀwpYÀu¤Àwp À­8YUÀtüÀuÌ, ÀuÌÀwhÀuÌ]À“À]À“À‚ñ‚ñ Àu¤UÀuÌÀwh UÀuÌÀwhÀu¤ YÀu¤YUÀuÌÀwhuÀuÌYÀuÌ$ uÀuÌYÀuÌÀuÌYÀuÌ&ÀuÌÀwh]À“À]À“À‚ñ‚ñ UÀuÌÀwh UÀuÌÀwh YYUÀuÌÀwh À­8À­8Àwp À­8Àwp ÀwpÀuÌÀuÌÀwp Às<À­8ÀwpYÀuÌ ÀwpÀuÌÀuÌ Às<À­8ÀuÌYÀuÌuÀu¤ÀwpÀuÌYÀuÌYÀuÌUYÀu¤YÀwpYÀu¤YÀwpÀwpÀuÌÀuÌUÀu¤Àwp‚ñ‚ñÀwp( uÀu¤ÀwpÀuÌuÀu¤ÀwpÀuÌ Às<À­8ÀuÌYÀuÌ? AuÀu¤ÀwpÀuÌuÀu¤ÀwpÀuÌuÀuÌYÀuÌ ÀuÌ UÀu¤ÀwpÀuÌ Às<À­8YÀu¤  Às<À­8ÀuÌYÀuÌ ÀuÌUÀu¤Àwp%uAÀwpÀwpAÀwpÀwpÀwp€„YÀuÌYÀuÌYYYUYÀu¤YÀwpYÀu¤YÀwpÀwpAÀwpÀwp]ÀwpUAÀwpÀwpÀwpÀwp5 uAÀwpÀwpAÀwpÀwpÀwpY]Àwp Às<À­8P AYA]ÀwpuAÀwpÀwpAÀwpÀwpÀwpuÀuÌYÀuÌ ÀwpAÀwpÀwpÀwp Às<À­8YÀuÌÀwpÀuÌÀwp]Àwd Àw\Àu¤ Às<YÀtüYÀtü Às<AÀtÈÀuÌ*(]AAÀwpÀwpAÀwp]Àwp(AÀwp]ÀwpAÀwp]Àwp* ]AAÀwpÀwpAÀwp]Àwp AÀwp]Àwp> ]AAÀwpÀwpAÀwp]ÀwpAÀwp]Àwp Àpœ9 ÀpœAÀwpÀwpÀuÌÀ•TÀ”ÄÀ­8À­8ÀwÀwX ÀpœAÀwpÀwpÀ­8Àw\9 ÀpœÀwpAÀwpÀwpÀ”ÌÀ­8ÀwpÀwpÀxàÀwp ÀwXÀwX ÀyÀy Ài”]Àu¼]Àu¼Àu¼ Ài”Àt4Ài”4]ÀuÀ]ÀuÀÀuÀÀiˆÀuÀÀiˆÀuÀ Ài”Àu¤Ài” Àt8Àt8 Às<YÀuÌ4]Àu¬Àu¤]Àu¬Àu¬YYUÀuÌÀwh €Á Àwp €Á Àw Às<€Á  €Á €Á Àu¤ Àu¤€Á ,AA,, ÀqD€ÔAA,,,A,€Ô ,ÀxØ , Àt4 ,Àu¼YÀuÌÀuÌ,Y,,Àrx,YÀuÌG ÀuÌÀuÔYÀtüÀuÌÀuäYÀuÌÀu¼ÀuØÀuÜÀuàÀuÌÀuè,ÀrxÀuÌ,, ]ÀuÌ]ÀuÌÀuÌ,ÀrxÀtü,ÀrxÀuÌ,ÀrxÀtü,.ÀuÀuÌÀu Àu(Àu4ÀuÌÀu YÀuÌ,ÀrxÀtüÀu,ÀrxYUÀtüÀu ,ÀtüUÀuÌYUÀtüÀu ÀuÌ€Àtü€ÅÀtü"ÀrxYÀuÌYUÀtüÀu ,ÀuÌ'ÀuÌYUÀtüÀuÀrxYÀuÌ ,YÀtü,A,Y , Àu¤ ,ÀuÀÀvXÀvdÀv`À¶p ,Àvp ,YÀwlY ,Àwd, YÀvp ,Àu¤ ,Ày,Àu¤Àu¬ YY, 1Y,2,]Àu¬]Àu¬Àu¬]Àwd]ÀwdÀwd ,ÀuÄ ,ÀuÈ ,Àv|AÀtÄ,,Y,YÀtÄ,, ,ÀtÈPÀt`Àt´Y,Àt¤]ÀuÌ]ÀuÌÀuÌY,Y,Y,ÀttÀtlÀ¼$,ÀtXÀt4u,,YÀvp,YÀuÀYuÀuÌÀ­8ÀtXÀt`Àt´YuÀuÌÀ­8Y,Y,,]ÀuÌ]ÀuÌÀuÌ ,Àt4 ,Àw\ ,Àwp Àw\,,YÀw\, ,Àw\, A,, ÀwX, À·¼, Ày, UÀuÌYÀy,çVA,,,Àv|Àw|ÀuÀÀxè,Àw€ÀwpÀwpÀxàÀw„]Àu¤YÀu¤,]Àu¤Àu¤ÀwˆYÀtüÀw¬ÀwŒYÀuÌYÀwpÀwYÀw\Àw”Àw\€ÕÀwpÀwœÀwXÀwÀw¤ÀwøÀuÄÀwüÀu¼Àt4Y,ÀxÀxÀYÀtÈAÀtÈAÀwp,ÀxÀuÈYÀwpÀx Àx$Àx(Àx,Àx0‚ñ‚ñÀx4Àx@YÀuÌÀuÌÀxDYÀ·¼AÀ·¼AÀ·¼ÀxTÀxØÀxXYÀuÌÀ¶pYÀuÌYÀwpÀwpÀw˜YÀyYUÀuÌYÀy Àw YÀxøÀ­8 ,Àwp ÀyT, YÀyT ,ÀyX,,YÀuÌYÀwp ,ÀyT ,Ày ,YÀy 6Ày8YÀt4YÀyPYÀw\Ày0Ày4Ày,Ày( ,Ày Ày Àt4, ,ÀyP ,Àtì ,, , Àw$,P ÀwÀwÀw\ÀwYÀwpY,Àw Àwp]ÀwYÀw$]ÀwÀw ,Àw ,Àw$: Àw0YÀuÌÀuÄÀw4ÀuÌÀw8Àv|Àw<Àw@Àwp ,Àw(ÀwpYÀu¤Y, ,ÀwXY,YÀu¤AYÀu¤Y, AÀu¤, YÀu¤,BYYÀu¤YÀtüÀwpY,AYÀu¤Y,AÀu¤, ,Ày,ÀuÌYÀyÀuÌÀwp ,Àup ÀqD ,, Àrx ,UÀtüÀu1 €Àtü€ÅÀtü€Àtü€ÅÀtüÀuÌ , ,Ày ,Àw\ ,ÀwX ,À·¼ ,Ày ,UÀuÌYÀy ,ÀyT ,Ày ,Àw$ AÀu¤, Y,YÀu¤ AYÀu¤Y, ,YÀu¤€Àtü€ÅÀtüÀrx AÀuÌ Àrh AAÀuÌ ÀuÌ Àrl Àrp, ÀuÌÀuÔÀuØÀuäÀuÜÀuàÀuÌÀuÌAAÀuÌÀuÌ€€Å#€€Å€€Å €Àtü€ÅÀtü1€Àtü€ÅÀtü€Àtü€ÅÀtüÀuÌ€Àtü€ÅÀtüÀrx)UYUÀtüÀuYUÀtüÀu ÀtüÀtü UÀtüÀuÀu(UYUÀtüÀuYUÀtüÀu UÀtüÀuUÀtüÀuÌ€¥YÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtü€„Àtü€ÅÀtüUYUÀtüÀuYUÀtüÀuYUÀtüÀuYUÀtüÀuYUÀtüÀuÌ/Àrx€Àtü€ÅÀtüYUÀtüÀu#ÀrxYÀuÌYUÀtüÀuAAÀuÌ Àrh ÀuÌ Àrl ÀrpÀuèÀtüÀsøÀsø(€ÀtüÀuÌ€ÅÀtü(YUÀtüÀu€ÀtüÀuÌ€ÅÀtü €ÀtüÀuÌ€ÅÀtü YUÀtüÀuB €„Àtü€ÅÀtü€ÀtüÀuÌ€ÅÀtüYUÀtüÀu ]ÀtüÀtü ÀuUÀtüÀu €„Àtü€ÅÀtü UÀtüÀuÌUÀtüÀu ÀtüÀtü ÀtüÀtüNYÀtüUYUÀtüÀuÌYÀuÌYUÀtüÀuÌYUÀtüÀuÌAUYÀtüYUÀtüÀuÌYUÀtüÀuÌYÀtüYÀtü'YAÀtüYYYÀtü+YAÀtüYYYÀtüÀtü2YAÀtüYYYÀtüAEY €á €á €á‚ñ‚ñ-YAÀtüYYYÀtüÀtüEYÀtüYÀtüÀtü&YAÀtüYYÀtüYAÀtüYYAÀtüYYÀtüYÀtüÀtüYÀtü3UYÀtüYÀtüYÀtüYÀtüYÀtüAÀuÌÀuÌ)AAYÀtüAÀuÌYÀtüY YÀtüAAÀuÌÀuÌ*uYUÀtüÀuÌYUÀtüÀu€ YÀtüYÀtüUYÀtüYÀtüYÀtüYÀtüYYUYÀtüYUÀtüÀuÌYUÀtüÀuÌYÀtüAÀuÌÀuÌ€ŠuYUÀtüÀuÌYUÀtüÀuÀs<AAYÀtüAÀuÌYÀtüAYAYÀtüAAÀuÌÀuÌA9uYUÀtüÀuÌÀuÌYUÀtüÀuÀs<ÀuÌ ÀtüUÀuÌÀuÌGuYUÀtüÀuÌUÀuÌÀuÌYUÀtüÀuÀs<ÀuÌÀuÌ ÀtüYÀuÌAuYUÀtüÀuÌYÀuÌYUÀtüÀuÀs<YÀuÌ" ÀtüUYUÀuÌÀwhÀuÌauYUÀtüÀuÌUYUÀuÌÀwhÀuÌYUÀtüÀuÀs<YUÀuÌÀwhÀuÌ/ ÀtüuYÀuÌYYUÀuÌÀwhÀuÌ{uYUÀtüÀuÌuYÀuÌYYUÀuÌÀwhÀuÌYUÀtüÀuÀs<YÀuÌYYUÀuÌÀwhÀuÌ ÀtüÀtü' AÀtüYYYÀtüÀtü YE' AÀtüYYYÀtüÀtüu‚ñ‚ñ@ AYÀtüAÀuÌYÀtüAYÀtüAÀuÌYÀtü AÀuÌÀuÌAÀuÌÀuÌAYÀtüÀuÌ ÀuÌÀuÌA YÀtüAYÀtüAÀuÌYÀtüYÀtüUÀuÌÀuÌ, UÀuÌÀuÌAÀuÌÀuÌUÀuÌÀuÌ ÀuÌYÀtü< YÀtüAYÀtüAÀuÌYÀtüYÀtüYÀuÌ" YÀuÌAÀuÌÀuÌYÀuÌ AYÀtüAÀuÌYÀtü" AYÀtüAÀuÌYÀtü" YÀtüYÀtüUÀuÌÀwh)AYÀtüAUÀuÌÀwhYÀtü+ AYÀtüAUÀuÌÀwhYÀtü UÀuÌÀwhYÀtü& YÀtüYÀtüYUÀuÌÀwh-AYÀtüAYUÀuÌÀwhYÀtüN AYÀtüAÀuÌYÀtüAYÀtüAYUÀuÌÀwhYÀtüAYÀtüYUÀuÌÀwhYUÀuÌÀwhÀuÌ/ YÀtüYÀtüUYUÀuÌÀwhÀuÌVAYÀtüAYUÀuÌÀwhYÀtüAYÀtüAUÀuÌÀwhYÀtüV AYÀtüAUYUÀuÌÀwhÀuÌYÀtüAYÀtüAÀuÌYÀtü AÀuÌÀuÌ)AYUÀuÌÀwhYUÀuÌÀwh9 AÀuÌÀuÌAYUÀuÌÀwhYUÀuÌÀwh8 UYUÀuÌÀwhÀuÌUYUÀuÌÀwhÀuÌJAYUÀuÌÀwhYUÀuÌÀwhAUÀuÌÀwhUÀuÌÀwhJ AUYUÀuÌÀwhÀuÌUYUÀuÌÀwhÀuÌAÀuÌÀuÌ YÀtüYÀtüYÀuÌ/ AYÀtüAYUÀuÌÀwhYÀtü YUÀuÌÀwhYÀtü* YÀtüYÀtüYYUÀuÌÀwh$AYÀtüAYÀuÌYÀtü1AYÀtüAYYUÀuÌÀwhYÀtüu AYÀtüAÀuÌYÀtüAYÀtüAYÀuÌYÀtüAYÀtüAYYUÀuÌÀwhYÀtüAYÀtüYÀuÌ#AYÀtüYYUÀuÌÀwh&YÀuÌYYUÀuÌÀwhÀuÌ< YÀtüYÀtüuYÀuÌYYUÀuÌÀwhÀuÌ€©AYÀtüAYÀuÌYÀtüAYÀtüAYYUÀuÌÀwhYÀtüAYÀtüAYUÀuÌÀwhYÀtüAYÀtüAUÀuÌÀwhYÀtüc AYÀtüAuYÀuÌYYUÀuÌÀwhÀuÌYÀtüAYÀtüAÀuÌYÀtü. YYUÀuÌÀwhYYUÀuÌÀwh1AYYUÀuÌÀwhYYUÀuÌÀwhA AÀuÌÀuÌAYYUÀuÌÀwhYYUÀuÌÀwhR uYÀuÌYYUÀuÌÀwhÀuÌuYÀuÌYYUÀuÌÀwhÀuÌRAYYUÀuÌÀwhYYUÀuÌÀwhAUÀuÌÀwhUÀuÌÀwhd AuYÀuÌYYUÀuÌÀwhÀuÌuYÀuÌYYUÀuÌÀwhÀuÌAÀuÌÀuÌ €ÅÀu¤ €ÅÀt4 €ÅÀuÈ €ÅÀuÄ €ÅÀtü€Àtü€ÅÀtü  Àu¼€Àtü€ÅÀtüÀ­8ÀtüÀuÌÀ­8Àu¸Àu Àu° ÀuÀÀs4 Àu¸Àu¸Àu¼Àv8 Àu¼Àv8 ÀuÌAYAÀv8YÀuÌÀu¼ÀuÌÀs4 YÀuÌ€íUÀuÀ1 ÀuÌY1Y5]ÀuÌÀu Às4k Às4AÀuÌAÀuÌÀuÌAYÀuÌÀuÌ€íUÀuÀÀu¸]]YÀtüYYÀuÌÀuÌUYYUYY"UYYÀuÌÀuÌÀuÌÀuÌUYYUYYUYYÀuÌUYYÀuÌÀuÌ'UYYÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀu¼ÀuÌÀuÌ%ÀuÌÀu¼ÀuÌÀuÌÀuÌÀuÌÀuÌ ÀuÌÀu¼ÀuÌÀuÌÀuÌÀuÌ(ÀuØYÀuÌÀu¼ÀuÌÀuÜYÀuÌE ÀuÌÀv8Àu¼YÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌErYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌYÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀv8Àu¼YÀuÌ Às8Àv8UYY Às8À½AYAÀv8À¶ˆAYAÀu¼AÀuÌAÀuÌÀuÌAYÀuÌÀuÌ€íUÀuÀAÀuÀAÀuÀAÀuÄAÀuÄ )Àu¼ÀÁ À¶ˆ)UÀuÀ AÀ¶ˆ!YuÀu¼AYÀuÌÀuÌ&€íAÀu¼AYÀuÌ]ÀuÌ)YUAÀu¼AYÀuÌ]ÀuÌ€í AYÀuÌÀuÌYU AYÀuÌÀuÌ UÀu¼1UÀu¼ Àu¼ ÀÁ À¶ˆYUÀu¼( UÀu¼uÀu¼AYÀuÌÀuÌuÀu¼AYÀuÌÀuÌ YuÀu¼AYÀuÌÀuÌ uÀu¼AYÀuÌÀuÌB uÀu¼AYÀuÌÀuÌUAÀu¼AYÀuÌ]ÀuÌ(YUAÀu¼AYÀuÌ]ÀuÌ%€íAÀu¼AYÀuÌ]ÀuÌ& UAÀu¼AYÀuÌ]ÀuÌ5 uÀu¼AYÀuÌÀuÌU AYÀuÌÀuÌYU AYÀuÌÀuÌ€í AYÀuÌÀuÌ U AYÀuÌÀuÌ‹gúÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼AYAÀu¼YYYYÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼YÀu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀu¼AÀuÌAÀuÌÀuÌAYÀuÌÀuÌ€íUÀuÀÀuÌÀuÌÀuÌÀu¼ÀuÌÀuÌÀuÄÀuÄÀu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼AÀuÀAÀuÀAÀuÄAÀuÄYÀu¼)Àu¼AYÀuÌÀuÌÀÁ À¶ˆÀs4]]YÀtüUYYÀuÌÀuÌÀs4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4)UÀuÀÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌAÀ¶ˆÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼ÀuÌÀu¼ÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8ÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀYuÀu¼AYÀuÌÀuÌYuÀu¼AYÀuÌÀuÌYuÀu¼AYÀuÌÀuÌ€íAÀu¼AYÀuÌ]ÀuÌYUAÀu¼AYÀuÌ]ÀuÌ€íAÀu¼AYÀuÌ]ÀuÌ€í AYÀuÌÀuÌYU AYÀuÌÀuÌ€í AYÀuÌÀuÌ/ Às<Àv8À½Àv8AYAÀv8 Às8Às<(Àu¸(Àu Às4Àu¸ÀuÌÀu  Àu¸ÀuÌÀu  Àu¸ Àu eAÀs4E AÀs4 AÀs4Às8À¶Àu¼ À¶Àu¼eAÀs8E AÀs8 AÀs8(À½(ÀžŒ!(AÀu¼AYÀuÌ]ÀuÌ(AÀuÄAÀuÄ(AÀuÀAÀuÀ o p q r s t u v w x y z { | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ (Às8 ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                       (Às4                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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(AYAÀu¼ z { (AÀ¶ˆ | }()UÀuÀ ~ ()Àu¼ ÀžŒ AÀu¼AYÀuÌ]ÀuÌ À½ ÀžŒ! AÀu¼AYÀuÌ]ÀuÌ AÀuÄAÀuÄ AÀuÀAÀuÀ Às8 Às4 AYAÀu¼ AÀ¶ˆ )UÀuÀ )Àu¼‡È €À½ÀžŒÀv8Àv8AÀu¼AYÀuÌ]ÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼AÀuÄAÀuÄAÀuÀAÀuÀÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀu¼ÀuÌÀuÌÀu¼Àu¼Àu¼Àu¼ÀuÌÀuÌÀuÌÀuÌÀuÌÀu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Àu¼Àu¼Àu¼Àu¼Àu¼Àu¼Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8Às8ÀuÄÀuÄÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀs4Às4ÀuÀÀs4ÀuÀÀs4ÀuÀÀuÀÀs4ÀuÀÀuÀÀs4Às4Às4Às4Às4Às4ÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀu¼ÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀs4Às4ÀuÀÀuÀÀuÀÀuÀÀs4Às4Às4Às4Às4Às4Às4Às4ÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀuÀÀs4Às4ÀuÀÀs4ÀuÀÀs4ÀuÀÀs4ÀuÀÀs4ÀuÀÀs4ÀuÀÀs4Às4Às4ÀuÀÀs4ÀuÀÀs4ÀuÀÀs4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4Às4ÀuÀÀuÀÀuÀÀuÀAYAÀu¼YÀu¼AÀ¶ˆ)UÀuÀ)Àu¼ AYAÀv8 Àu¼YYÀuÌÀuÌYÀuÌ U UU YÀuÌ Àv8 ÀuÄÀuÄ YÀu¸€• Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸Àu¸YÀu¸UÀu¼ YÀu¸ 1Àu¸ YÀu¸ YÀu¸ 1UÀu¼ UÀu¼ YUÀu¼ Àv8Àu¼ À¶ˆ ÀÁ À¶ˆ AYAÀv8Y Àu¼ÀuÌ( uÀu¼AYÀuÌÀuÌUÀu¼ Àv8Àu¼AYÀuÌÀuÌ ]ÀuÌÀu¼YÀuÌ$UAÀu¼AYÀuÌ]ÀuÌÀu¼AYÀuÌÀuÌB UAÀu¼AYÀuÌ]ÀuÌuÀu¼AYÀuÌÀuÌ( €íAÀu¼AYÀuÌ]ÀuÌ"AÀu¼AYÀuÌ]ÀuÌ( EUAÀu¼AYÀuÌ]ÀuÌU AYÀuÌÀuÌÀu¼AYÀuÌÀuÌÀt45 U AYÀuÌÀuÌuÀu¼AYÀuÌÀuÌ €í AYÀuÌÀuÌ AYÀuÌÀuÌ EU AYÀuÌÀuÌ AE €Õ Àœ¼Àtô AE €Õ Àœ¼Às´ %ÀŸD%ÀŸDY%%ÀµØÀµÜÀµÌÀµÌÀµÌYUÀt1Àt YÀtÀtÀ“ÀÀtUYUÀtUÀtUYUÀtUÀt1ÀµÌYUÀtUYUÀtUÀt ÀtÀtÀµÌYUÀtÀtÀtÀt ]uA]u Àt0 €¨ ]u ]u2]uA]u]uÀ­(]À­8€¨ aÀuœÀuœE aÀuœÀuœE ƒÅƒÅ€½9Àv„Àv„aÀvˆÀvˆÀvŒÀvŒÀvÀvÀv”Àv”Àv˜Àv˜ÀvœÀvœ Àv Àv  Àv¤Àv¤ Àv¨Àv¨Àv¬Àv¬Àv°Àv° Àv´Àv´ Àv¸Àv¸Àv¼Àv¼ÀvÀÀvÀÀv|Àv|E€º8Àv„Àv„ÀvˆÀvˆÀvŒÀvŒÀvÀvÀv”Àv”Àv˜Àv˜ÀvœÀvœ Àv Àv  Àv¤Àv¤ Àv¨Àv¨Àv¬Àv¬Àv°Àv° Àv´Àv´ Àv¸Àv¸Àv¼Àv¼ÀvÀÀvÀaÀv|Àv|E ƒÅTÀv„ÀvˆÀvŒÀvÀv”Àv˜ÀvœÀv Àv¤Àv¨Àv¬Àv°Àv´Àv¸Àv¼ÀvÀ ÙÀv|E€¢ Àv„Àv„ÀvˆÀvˆÀvŒÀvŒÀvÀvÀv”Àv”Àv˜Àv˜ÀvœÀvœÀv Àv Àv¤Àv¤Àv¨Àv¨Àv¬Àv¬Àv°Àv°Àv´Àv´Àv¸Àv¸Àv¼Àv¼ÀvÀÀvÀÀv|Àv|E ]À¶;ÀylÀylaÀ¶ À¶ ÀypÀypÀ¶À¶ÀydÀydÀydÀydE8ÀylÀylÀ¶ À¶ ÀypÀypÀ¶À¶ÀydÀydaÀydÀydE*YUÀtYUÀtÀt1 À¶ÀµÌYYUÀtÀµÌYUÀtÀµÌ À¶ÀtB ÀtÌÀtXÀtpÀ¶ À¶ÀtXÀtlÀ¼$ÀµÌYÀ¼$ÀtÔÀtØÀydÀt4EÀÁ4ÀŸDÀt4 Àt4%ÀŸDÀt4 %ÀŸDÀt4ÀÁ4ÀŸDÀt4ÀtìÀ­8E Àt4%Àt4ÀÁ<Àt4ÀtìE A€é€½€¨À‘”]EÀt4']Àt4Àv8Àt4À‘4€¨À‘” Àt4Àt$Àt4Àv8À‘4€¨À‘”Àt4YU€¨€…€¨À‘” U€¨€…€¨À‘”YU€¨€…€¨À‘”U€¨€…€¨À‘”j YU€¨€…€¨À‘”]€¨À‘”YU€¨€…€¨À‘”€¨À‘”Àv8À‘4€¨À‘”Àt4*]Àt4Àv8Àt4Y€¨€…À‘4]Àt4]Àt4) ]Àu¼]Àv8]Àu¼Àu¼]Àt4Àv87YYÀwhYÀwhYÀwhYYÀwhYÀwhYYÀwh€¦$Àv„Àv„ÀvˆÀvˆÀvŒÀvŒÀvÀvÀv”Àv”Àv˜Àv˜ÀvœÀvœÀv Àv Àv¤Àv¤Àv¨Àv¨Àv¬Àv¬Àv°Àv° Àv´Àv´ Àv¸Àv¸Àv¼Àv¼ÀvÀÀvÀ ÀuÌÀu¤YÀuÌYÀu¤Àu¤ ÀwdÀu¤YÀ›ÈÀyÀyTAÀyÀyÀyT UÀy AÀy UÀy UÀy UÀyT)YÀ›ÈÀyÀ›ÌUÀyÀy/UÀyTAAÀyUÀyÀyT UÀy UÀy UÀy UÀyT)YÀ›ÈÀyÀ›ÌUÀyÀy/UÀyTAAÀyUÀyÀyTAAÀyÀyT Àv8Àv8 Àu¤ÀuÀ ÀuÈÀu¼ ÀuÄÀu¼ Àu¼Àt4 Àu¼Àu¸Àu¼Àt4Àu¸€­Àt4Àu¸€­Àt4Àu¸Àu¼Àu¸Àv8 Àu¸Àu¸ Àu¼Àu¸Àu¼Àt4Àu¸ÀuÄÀu¼ÀtÄÀuÈÀu¼ÀtÈÀuÄÀu¼Àt4ÀtÄ ÀuÀÀu¤ ÀuÀÀu°ÀuÀÀu¤Àu°€­Àu¤Àu°€­Àu¤Àu°ÀuÀÀu°ÀuÀÀu¸Àu ÀuÀÀu¤Àu¸Àu €­Àu¤Àu°Àu°Àu¸]Àv8ÀuÀ€­Àt4Àu¸Àu¸ ÀuÌÀtüÀtø ÀtüÀtüYÀtüYÀtü6ÀsðÀsð]ÀuÌ]ÀuÌÀv ÀvÀtü]ÀuÌ Àv Àtü ÀvÀtü@ ÀuèÀtü]ÀuÌ]ÀuÌÀuÌÀuèÀtü]ÀuÌÀuìÀv ÀuÌÀuÌ ÀuÌÀuÌ Àv Àv Àu¸Àu¼Àv8Àt4ÀuÀÀu¼Àu¤]Àv8Àu¸Àv8Àt€­Àu¤Àu° ÀuÀ€­Àt4Àu¸Àt4 Àu¼€­Àt4Àu¸  Àv8Àv8 Àu¸Àu¸ ÀtÀt Àu¸Àt] €­Àt4Àu¸€­Àt4Àu¸Àt4Àt4]Àt]Àt]Àt]ÀtÀtÀtÀu¸Àv8Àu¼Àu¼ Àu v€­Àu¤Àu°€­Àu¤Àu°Àu¤Àu¤]Àu´]Àu´]Àu´]Àu´ÀtÀtÀu Àu Àu°Àu¸ÀuœÀuœÀv8ÀuÀÀuÀÀv8Àu¼Àu¼Àu¼Àu¼Àv8ÀuÄÀuÄ]Àu¤]Àu¤Àv8ÀuÀÀuÀYÀt1ÀtôÀtÀµÌYUÀt ÀtÀt4:YUYUYUYUYUYU Àt(ÀµÌYUÀtÀµÌYUÀt ÀtÀtYÀtÀt ÀtôÀtÀtôYÀtYÀt ÀtôÀtôAÀtÀt ÀtÀtYÀtAÀtÀtÀtôÀtÀtÀtô ÀtÀv8Àtô ÀtôÀtÀtôÀtôÀtô À®Àt¼YÀtÄÀt¸YÀtÈÀtÀYÀtÄÀtXYÀtÄ À“ÈÀ“À ]ÀuÌYÀu'ÀtüÀsðÀsøÀ“ÐÀsÜYÀvp ÀtüÀ­8.ÀtÄÀ“ÀYÀtÈÀuÌYÀvpÀ“ŒÀtôÀtìÀtYÀt4YÀu¤YÀt4YÀu¤ ÀtìÀt ÀtÀt8 Àsð]À­8ÀtT]ÀteÀtì]ÀuÌÀtX-Àt4]ÀtÀ“ÀÀtôÀtÌYÀvpÀ“Œ: ÀtÈ]Àv|À“ÀÀuÌYÀvpYÀvpÀ“ŒÀtôÀt. ]ÀtYÀvp]ÀuÌÀtXÀtÌÀ“ÀK Àt4]ÀtÀ­8ÀtôÀtôÀsðÀÁ,YÀtüÀ­8À“ŒeÀtìÀt4GÀt4]ÀtÀ­8ÀÁ,YÀtüÀ­8ÀµÌYÀ¼$À¼$eÀtì ÙE1Àt4]ÀtÀtôÀ“ÀÀ“ŒYÀvpeÀtì ]ÀwpÀsì]eÀu¤À­8]ÀuÌÀsÔ]ÀwdÀtôÀs¼]Àu¬ÀsäYÀvpÀs´À“Œ]Àv|Àt<Àt4ÀµÌÀ­8Àtì Àt8Àt4AÀt8Àt8Àt4Àt4AÀtìÀtìÀt4Àu¨Àu¨ Àu¤AÀu¨Àu¨Àu¤ Àt4Àt4 Àzô AY€¥ Àzø  €¥*€¥AY€¥€¥ À{$ AYYY€¥Y À{ Y Y€¥Y>€¥YAYYY€¥Y€¥Y €¥Àt4 Àt4Àt4A ÀtÀtÀt€¥Àt4€ÔÀu¤€ÔÀu¤€ÔÀu¤1ÀtìYÀ­8ÀtìÀtì YÀt4Àt4YYÀt4 1Àt4YÀt4Àt4 ÀtìÀtì YÀtìÀtìYÀ­8YÀtì€Õ   EÀs´Às´eAÀs´E AÀs´ AÀs´ Às´ Às´ Às´Às´Às¼Às¼Às¼Às¼eAÀs¼E AÀs¼ AÀs¼ ÀsÄÀsÄaÀs¼Às¼ Às¼ Às¼ÀsÄÀsÄÀs¼Às¼ÀsÄÀs¼ÀsÄÀsÄÀs¼Às¼ÀsÄÀsÄÀs¼Às¼ Às¼VQMicrosoft.FSharp.Compiler.Tast+ValRecursiveScopeInfo+ValInRecScope@DebugTypeProxyZUMicrosoft.FSharp.Compiler.Tast+ValRecursiveScopeInfo+_ValNotInRecScope@DebugTypeProxy ÀsÄÀsÈ ÀsÈÀsÔÀsÔÀsÔeAÀsÔE AÀsÔ AÀsÔ ÀsÔ ÀsÔ ÀsÔÀsÔÀsÜÀsÜeAÀsÜE AÀsÜ AÀsÜ ÀsÜ ÀsÜ ÀsÜÀsÜÀsäÀsäeAÀsäE AÀsä AÀsä Àsä Àsä Àsä(ÀsÔ(Àsì(Às¼ Àsìa  ÀsìÀsìÀsì  Àsì ÀsìÀsìÀsÄ Às¼ÀsäÀs´ÀsÔ Àsì ÀsÔ Àsì Às¼ ÀsìÀs¼Àsì ÀsìÀsìÀsìÀsìÀsðÀsðeAÀsðE AÀsð AÀsð Àsð Àsð ÀsðÀsðÀsøÀsøeAÀsøE AÀsø AÀsø Àsø Àsø Àsø(À“È(Àsø(Àsð(ÀsÜÀt Àta ÀtÀtÀtÀt Àt ÀtÀt ÀsðÀsøÀ“ÈÀsÜ À“È Àsø Àsð ÀsÜÀt ÀtÀtÀtÀt Àta  ÀtÀtÀt  Àt ÀtÀt Àt ÀtÀtÀtÀt(A AÀ“ÀY A(AuU AuU AuUÀtÀteAÀtE AÀt AÀt Àt Àt ÀtÀt(YUÀtÀtÀµÌYUÀt ÀµÌYUÀt YUÀteAÀtE AÀt6ÀtÀtaÀµÌÀµÌYUÀtYUÀt Àt8ÀtÀtÀtÀµÌÀµÌYUÀtYUÀtÀt7ÀtÀtÀtÀµÌÀµÌYUÀtYUÀt YUÀt ÀtÀt Àt eAÀtE AÀt AÀt ÀtÀt ÀtÀtÀtÀtÀt] ÀtÀt€¨ Àt0 ]u(Àt8(ÀtT(ÀtX(ÀtÌ(À®Àyd (]Àt (]Àt(Àt¸(ÀtÈ (YÀtÈ (]ÀtÀ(ÀtÄ (YÀtÄ(Àt´(uÀµÌYÀ¼$À¼$(YuÀuÌÀ­8(€¥YÀuÀ(]uÀuÀÀuÀÀuÀ(]UÀuÀÀuÀ(Àyd Àt8 Àt8 UU UUU+ UUU1YÀtü ÀtXÀtxÀt ]À­8 AÀ‘”&ÀtXÀtxÀt €¨À‘”AÀ‘” ÀtT ÀtX ÀtÌ Àt À®Àyd ]Àt ÀtXÀtx ]Àt ]Àt ÀtÈÀtXÀtÌÀt¸Àt` Àt¸ ÀtÈ YÀtÈ ÀtÈ ]ÀtÈ ÀtXÀth ]ÀtÀ]ÀtÀ]ÀtÀÀtÀ ÀtÄ YÀtÄ ÀtÄ ]ÀtÄÀt4Àt4Àt8ÀtX Àt´ ÀtXÀtl uÀµÌYÀ¼$À¼$]ÀuÌÀtX YuÀuÌÀ­8 €¥YÀuÀ ]uÀuÀÀuÀÀuÀ ]UÀuÀÀuÀ4]UÀuÀÀuÀ]ÀuÀ]uÀuÀÀuÀÀuÀ À®Àyd1ÀtXÀtxÀt Àtx€¨À‘”À®ÀydÀyd ÀydÀyd YÀvp(ÀÁ,YÀtüÀ­8(Àt (eÀtìÀÁ,YÀtüÀ­8 ÀÁ,YÀtüÀ­8 Àt eÀtì ÀÁ,YÀtüÀ­8 Àsð Àt ÀtX ]ÀuÌ ÀtT ÀtÌ eÀt쀆 ÀÁ,YÀtüÀ­8ÀsðÀt ]À­8ÀtôYÀvpÀtX]ÀuÌÀtTÀtÌeÀtìÀ“Œ]ÀtÀtô]ÀtÀ®ÀydÀt< Àt<Àu¼Àt<Àt<eAÀt<E AÀt< AÀt<C>Microsoft.FSharp.Compiler.Tast+ParentRef+Parent@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Tast+ParentRef+_ParentNone@DebugTypeProxy ÀtDÀtH ÀtH(=UÀuÀ =UÀuÀ ]UÀuÀÀuÀ ]ÀuÀ ]uÀuÀÀuÀÀuÀ €¥YÀuÀ YuÀuÌÀ­8€„ ]UÀuÀÀuÀ]ÀuÀ]UÀuÀÀuÀ]uÀuÀÀuÀÀuÀ=UÀuÀ€¥YÀuÀYuÀuÌÀ­8]ÀuÌ UÀuÀÀuÀ uÀuÀÀuÀÀuÀ YÀuÀ€¥YÀuÀ]ÀuÌÀtTÀtX ÀtXÀt´ ÀtXÀt¸ ÀtXÀtÀÀtXÀµÌYÀ¼$À¼$ ÀtXÀ¶ ÀtXÀuÌ ÀtXÀt ÀtXÀ‘4Y€¨€…ÀtXeAÀtXE AÀtX AÀtXVQMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TFsObjModelRepr@DebugTypeProxyPKMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TRecdRepr@DebugTypeProxy(ÀtÀ ÀtÀ ÀtÀWRMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TFiniteUnionRepr@DebugTypeProxy ÀµÌYÀ¼$À¼$VQMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TILObjModelRepr@DebugTypeProxy À¶OJMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TAsmRepr@DebugTypeProxyWRMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TMeasureableRepr@DebugTypeProxyb]Microsoft.FSharp.Compiler.Tast+TyconRepresentation+TProvidedTypeExtensionPoint@DebugTypeProxy(À‘4 À‘4Y€¨€… À‘4gbMicrosoft.FSharp.Compiler.Tast+TyconRepresentation+TProvidedNamespaceExtensionPoint@DebugTypeProxy Àt` Àtd Àth Àtl Àtp Àtt Àtx Àt| (€¨À‘”(ÀÁ,ÀuÌUÀ­8ÀuÌ (AEÀuÌ AEÀuÌ ÀÁ,ÀuÌUÀ­8ÀuÌ AEÀuÌE À‘4€¨À‘”ÀÁ,ÀuÌUÀ­8ÀuÌAEÀuÌAE ÀuÌÀ­8ÀuÌÀt¤Àt¤ Àt¤ÀyeAÀt¤E AÀt¤ AÀt¤(Ày ÀySNMicrosoft.FSharp.Compiler.Tast+TyconObjModelKind+TTyconDelegate@DebugTypeProxy Àt¬ Àt¤YÀuÀÀt¸ (€¥ÀtÈ €¥ÀtÈ ÀtÈ€¥ÀtÈ (€¥ÀtÄ €¥ÀtÄ €¥ÀtÄ ÀtÄ€¥ÀtÄ ÀtÄ(Àt¼(À®À´¤Àt¼ Àt¼ À®À´¤ Àt¼À®À´¤' Àt¸ÀuÌÀ“ŒÀ“ÀÀtôYÀvpÀt¸ {DisplayName}7 À“ŒÀuÌ]Àv|ÀtôYÀvpYÀvpÀ“À]Àv|]Àv|Àv|ÀtÌ ÀtÌÀu¼ ÀtÌÀ¶ ÀtÌÀt¸ÀtÌeAÀtÌE AÀtÌ AÀtÌOJMicrosoft.FSharp.Compiler.Tast+ExceptionInfo+TExnAbbrevRepr@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Tast+ExceptionInfo+TExnAsmRepr@DebugTypeProxyJEMicrosoft.FSharp.Compiler.Tast+ExceptionInfo+TExnFresh@DebugTypeProxy ÀtÔ ÀtØ ÀtÜ(Àt (€ÔÀu¤ (€ÔÀt4(€Õ]€¥Àw` (YÀt4(ÀÁ<Àt4 (€¥Àt4(€¥ÀuœYÀu¤ (€¥Àu¤(€¥YÀu¤€Õ]€¥Àt4€Õ]ÀÁ4ÀŸDÀt4€Õ]ÀÁ<Àt4€Õ]€¥ÀuœYÀu¤€Õ]€¥Àu¤€Õ]€¥Àt4€Õ]ÀÁ4ÀŸDÀt4€Õ]ÀÁ<Àt4€Õ]€¥ÀuœYÀu¤€Õ]€¥Àu¤ Àt€ÔÀu¤€ÔÀt4 Àt €ÔÀu¤ €ÔÀt4 ÀtìÀt4 ÀtìÀu¤ €Õ]€¥Àw` €ÔÀt4 YÀt4]ÀÁ4ÀŸDÀt4ÀÁ4ÀŸDÀt4]ÀÁ4ÀŸDÀt4B€Õ]ÀÁ4ÀŸDÀt4]ÀÁ4ÀŸDÀt4ÀÁ4ÀŸDÀt4 ÀÁ4ÀŸDÀt4À­8]ÀÁ<Àt4]ÀÁ<Àt46€Õ]ÀÁ<Àt4]ÀÁ<Àt4ÀÁ<Àt4 ÀÁ<Àt4$AÀt4A€¥Àt4€¥Àt4]€¥Àt4 Àt4€¥Àt4]€¥Àt4SAÀt4A€¥Àt4€¥Àt4€Õ]€¥Àt4]€¥Àt4€¥Àt4 €¥Àt4hAÀt4A€¥Àt4€¥Àt4€Õ]€¥Àt4]€¥Àt4€¥Àt4€ÔÀt4€¥Àt4:AÀt4A€¥Àt4€¥Àt4€ÔÀt4€¥Àt44AÀu¤A€¥ÀuœYÀu¤€¥ÀuœYÀu¤]€¥ÀuœYÀu¤ ÀuœYÀu¤ Àu¤€¥ÀuœYÀu¤]€¥ÀuœYÀu¤€˜AÀu¤A€¥ÀuœYÀu¤€¥ÀuœYÀu¤€Õ]€¥ÀuœYÀu¤]€¥ÀuœYÀu¤€¥ÀuœYÀu¤€ÔÀu¤€¥ÀuœYÀu¤ €¥ÀuœYÀu¤€¥ÀuœYÀu¤ ]Àu¤Àv8Àu $AÀu¤A€¥Àu¤€¥Àu¤]€¥Àu¤ Àu¤€¥Àu¤]€¥Àu¤hAÀu¤A€¥Àu¤€¥Àu¤€Õ]€¥Àu¤]€¥Àu¤€¥Àu¤€ÔÀu¤€¥Àu¤ €¥Àu¤,AÀu¤A€¥YÀu¤€¥YÀu¤€¥YÀu¤ YÀu¤ Àu¤€¥YÀu¤FAÀu¤A€¥YÀu¤€¥YÀu¤€ÔÀu¤€¥YÀu¤ €¥YÀu¤AUÀ­8ÀuÌÀuÌR ÀÁ,ÀuÌUÀ­8ÀuÌAUÀ­8ÀuÌÀuÌAAEÀuÌAE/ÀtXÀ‘4€¨À‘”A€¨À‘”ÀuÌÀ­8€¨A€¨Y À“ÀÀsð€¨AÀtôÀtÀµÌYÀtÀtX]ÀtYÀvp]ÀuÌÀtÌAÀt4À‘4€¨À‘”A€¨À‘”ÀuÌÀ­8]Àtô]Àt9 ]À­8ÀsðÀt]ÀuÌÀtXÀtÌÀtT]ÀtÀtôYÀt YÀteAÀtôE AÀtô AÀtô!ÀtôÀtôaYÀtYÀt Àtô#ÀtôÀtôÀtôYÀtYÀtÀtô YÀt ÀtôÀtô Àtô(Àt (YÀu Àt YÀu Àt YÀu3 À“À]Àt À“ŒYÀvp]ÀuÌYÀu(Àtø Àtø ÀtøÀuÌÀtü ÀtüÀtøÀtøÀtÀt À“È ÀsÜ {Name}ÀuÀuÌÀ­8ÀuÀuÌÀ­8 ÀuÀ­8ÀuÀupÀ­8ÀuYÀuÌÀ­8ÀuÀuÌÀuÌÀ­8eAÀuE AÀu AÀuLGMicrosoft.FSharp.Compiler.Tast+TyparConstraint+CoercesTo@DebugTypeProxy ÀuÌÀ­8MHMicrosoft.FSharp.Compiler.Tast+TyparConstraint+DefaultsTo@DebugTypeProxyOJMicrosoft.FSharp.Compiler.Tast+TyparConstraint+SupportsNull@DebugTypeProxy(Àup ÀupÀ­8 ÀupSNMicrosoft.FSharp.Compiler.Tast+TyparConstraint+MayResolveMember@DebugTypeProxyVQMicrosoft.FSharp.Compiler.Tast+TyparConstraint+IsNonNullableStruct@DebugTypeProxyRMMicrosoft.FSharp.Compiler.Tast+TyparConstraint+IsReferenceType@DebugTypeProxyOJMicrosoft.FSharp.Compiler.Tast+TyparConstraint+SimpleChoice@DebugTypeProxy]XMicrosoft.FSharp.Compiler.Tast+TyparConstraint+RequiresDefaultConstructor@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Tast+TyparConstraint+IsEnum@DebugTypeProxyUPMicrosoft.FSharp.Compiler.Tast+TyparConstraint+SupportsComparison@DebugTypeProxySNMicrosoft.FSharp.Compiler.Tast+TyparConstraint+SupportsEquality@DebugTypeProxyMHMicrosoft.FSharp.Compiler.Tast+TyparConstraint+IsDelegate@DebugTypeProxyNIMicrosoft.FSharp.Compiler.Tast+TyparConstraint+IsUnmanaged@DebugTypeProxy Àu Àu  Àu Àu Àu Àu Àu  Àu$ Àu( Àu, Àu0 Àu4 Àu8(À™H(€Õ]Àut (]Àut6ÀupYÀuÌÀ™HYÀuÌ]ÀuÌ€Õ]Àut2 YÀuÌÀ™HYÀuÌ]ÀuÌ€Õ]Àut À™H €Õ]ÀuteAÀupE AÀup AÀup ]Àut ]ÀutÀutÀutÀuÌÀuÀYÀuÌÀutYÀuÌÀuÈ#ÀutÀuÌ]À¶À¶pYÀuÌ ÀutÀwpÀuteAÀutE AÀut AÀut ÀuÌÀuÀYÀuÌOJMicrosoft.FSharp.Compiler.Tast+TraitConstraintSln+FSMethSln@DebugTypeProxy YÀuÌÀuÈTOMicrosoft.FSharp.Compiler.Tast+TraitConstraintSln+FSRecdFieldSln@DebugTypeProxy ÀuÌ]À¶À¶pYÀuÌOJMicrosoft.FSharp.Compiler.Tast+TraitConstraintSln+ILMethSln@DebugTypeProxySNMicrosoft.FSharp.Compiler.Tast+TraitConstraintSln+ClosedExprSln@DebugTypeProxy Àu| Àu€ Àu„ Àuˆ ] ÀuœÀuœ Àuœ(Àuœ Àuœ]ÀuÌ Àuœ(Àu¨ (]Àu¬ (]Àu´(UYÀtüÀuÌ Àu¨ Àu¨ ]Àu¬#]Àu¬]Àu¬Àu¬À™LÀ™L Àt<]Àu¬]Àu¬(Àt<ÀtDÀu¼]Àt]ÀtÀt ]Àu´ UYÀtüÀuÌ+]Àu¬]Àu¬Àu¬YÀyYÀy] Às¼ ]ÀwdÀu¤ Àu¤Àu¨ {LogicalName} Àsì ]Àv| ]Àwp Àt<[ ]À­8À­8ÀuÌ Àsì]Àv|]ÀwpÀtô]Àu¬YÀvp]ÀwdÀt<À“Œ{val_logical_name} (YÀy YÀy YÀy Àu¼YÀyÀ™H Àu¼Àu  {Display}(ÀtÀu´ÀtÀu  ÀtÀu  ÀteAÀu´E AÀu´ AÀu´Àu´Àu´Àu´Àu´Àu´ÀtÀt Àu´Àu´ Àu´Àu´ (]Àt4 (]Àtì Àv8eAÀu¸E AÀu¸ AÀu¸]Àt4Àv8Àt4O ÀtXÀtxÀt À‘4€¨À‘”Àv8Àt|Y€¨€…Àt4Y€¨€…À‘4Àv8]Àt4Àv8 ]Àt4]Àt41 Àt4Àtì ]Àtì (YÀuÄ (YÀuÈ Àt4Àu¸1Àu¸ Àu¸1 Àt4Àt¸ YÀuÄ YÀuÈ€­Àt4Àu¸Àu¸ ÀuÈÀt4À“À(Àu° Àu° Àu¤Àu°eAÀuœEÀuœ AÀuœ AÀuœ!Àu¤Àu°Àt4]Àu¤Àu¸ Àt4Àu¤]Àu¤]Àu¤ Àu¼eAÀuÄE AÀuÄÀu¼]ÀtÄA Àu¼‚%AAÀt4eAÀuÈE AÀuÈÀu¼]ÀtÈ Àu¼Àt4‚%AA ÀuÌÀv eAÀuÌE AÀuÌeAÀv EÀv AÀv  AÀv TÀuÔÀuÌÀuØYÀuÌÀu¼1ÀuÜÀuàÀuÌ‚ñ‚ñÀuäÀuÄÀuèÀuìÀv E@Microsoft.FSharp.Compiler.Tast+TType+TType_forall@DebugTypeProxy Àu¼YÀuÌB=Microsoft.FSharp.Compiler.Tast+TType+TType_app@DebugTypeProxyD?Microsoft.FSharp.Compiler.Tast+TType+TType_tuple@DebugTypeProxyB=Microsoft.FSharp.Compiler.Tast+TType+TType_fun@DebugTypeProxyD?Microsoft.FSharp.Compiler.Tast+TType+TType_ucase@DebugTypeProxyB=Microsoft.FSharp.Compiler.Tast+TType+TType_var@DebugTypeProxy(Àv  Àv FAMicrosoft.FSharp.Compiler.Tast+TType+TType_measure@DebugTypeProxy ÀuÔ ÀuØ ÀuÜ Àuà Àuä Àuè ÀuìÀv Àv ÀtüeAÀv EIDMicrosoft.FSharp.Compiler.Tast+MeasureExpr+MeasureVar@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Tast+MeasureExpr+MeasureCon@DebugTypeProxyJEMicrosoft.FSharp.Compiler.Tast+MeasureExpr+MeasureProd@DebugTypeProxyIDMicrosoft.FSharp.Compiler.Tast+MeasureExpr+MeasureInv@DebugTypeProxy Àv Àv Àv Àv (A€¨À‘”ÀuÌ(AÀuÌAÀuÌ(e€¥UÀu¼e€¥UÀu¼ A€¨À‘”ÀuÌ AÀuÌAÀuÌ e€¥UÀu¼c ]ÀµÌ ]‚åƒ-A€¨À‘”ÀuÌÀt4AÀuÌAÀuÌe€¥UÀu¼(Àv4(€¥UÀu¼ Àv4 Àv4 Àv4Àv4e€¥UÀu¼ €¥UÀu¼ Àv8Àv4Àv8 Àv4€¥UÀu¼ ]Àu¼ Àv<Àv8Àv<Àv<eAÀv<E AÀv< AÀv<RMMicrosoft.FSharp.Compiler.Tast+CcuResolutionResult+ResolvedCcu@DebugTypeProxyTOMicrosoft.FSharp.Compiler.Tast+CcuResolutionResult+UnresolvedCcu@DebugTypeProxy ÀvD ÀvH Àt4 ÀvXÀ¶p ÀvXÀuÀÀvXeAÀvXE AÀvX AÀvX À¶pFAMicrosoft.FSharp.Compiler.Tast+AttribKind+ILAttrib@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Tast+AttribKind+FSAttrib@DebugTypeProxy Àv` Àvd(ÀvX (YÀvt (YÀvx (]€Ý0ÀvpÀu¼ÀvXYÀvtYÀvx]€ÝÀ­8, Àu¼ÀvXYÀvtYÀvx]€ÝÀ­8 ÀvX YÀvt YÀvx ]€ÝeAÀvpE AÀvp AÀvpÀvtÀwpÀwp ÀwpÀwpeAÀvtE AÀvt AÀvt(€ÀuÌÀvt€ÀuÌÀvtÀvx€ÀuÌÀvt €ÀuÌÀvt €ÀuÌÀvteAÀvxE AÀvx AÀvxÀv|Àv|Àv|Àv|Àv|Àv|Àv|Àv| Àv| Àv| Àv| Àv| Àv|Àv| Àv|ƒÅÀv|eAÀv|E AÀv| AÀv| Àv| Àv|Àv|=8Microsoft.FSharp.Compiler.Tast+Const+Bool@DebugTypeProxy(  >9Microsoft.FSharp.Compiler.Tast+Const+SByte@DebugTypeProxy(=8Microsoft.FSharp.Compiler.Tast+Const+Byte@DebugTypeProxy(  >9Microsoft.FSharp.Compiler.Tast+Const+Int16@DebugTypeProxy( ?:Microsoft.FSharp.Compiler.Tast+Const+UInt16@DebugTypeProxy>9Microsoft.FSharp.Compiler.Tast+Const+Int32@DebugTypeProxy(    ?:Microsoft.FSharp.Compiler.Tast+Const+UInt32@DebugTypeProxy>9Microsoft.FSharp.Compiler.Tast+Const+Int64@DebugTypeProxy?:Microsoft.FSharp.Compiler.Tast+Const+UInt64@DebugTypeProxy?:Microsoft.FSharp.Compiler.Tast+Const+IntPtr@DebugTypeProxy@;Microsoft.FSharp.Compiler.Tast+Const+UIntPtr@DebugTypeProxy(    ?:Microsoft.FSharp.Compiler.Tast+Const+Single@DebugTypeProxy(   ?:Microsoft.FSharp.Compiler.Tast+Const+Double@DebugTypeProxy =8Microsoft.FSharp.Compiler.Tast+Const+Char@DebugTypeProxy?:Microsoft.FSharp.Compiler.Tast+Const+String@DebugTypeProxy(ƒÅ ƒÅ ƒÅ@;Microsoft.FSharp.Compiler.Tast+Const+Decimal@DebugTypeProxy Àv„ Àvˆ ÀvŒ Àv Àv” Àv˜ Àvœ Àv  Àv¤ Àv¨ Àv¬ Àv° Àv´ Àv¸ Àv¼ ÀvÀ#ÀwÀwpYÀw$]ÀwÀ­8ÀwYÀwpÀwÀw\ÀweAÀwE AÀw AÀw (YÀw$ (]Àw ÀwpYÀw$]ÀwÀ­8 YÀw$ ]ÀwHCMicrosoft.FSharp.Compiler.Tast+DecisionTree+TDSwitch@DebugTypeProxy (YÀwp YÀwp YÀwpIDMicrosoft.FSharp.Compiler.Tast+DecisionTree+TDSuccess@DebugTypeProxy(Àw Àw\Àw ÀwFAMicrosoft.FSharp.Compiler.Tast+DecisionTree+TDBind@DebugTypeProxy Àw  Àw Àw Àw(ÀweAÀw$E AÀw$ AÀw$Àw(Àw(ÀuÄYÀuÌ Àw(ÀuÌ Àw(Àv|Àw(Àw(ÀuÌÀuÌ1Àw(ÀwpYÀuÌ]UÀuÀYÀuÌÀŸPeAÀw(E AÀw( AÀw(AMicrosoft.FSharp.Compiler.Tast+Test+ArrayLength@DebugTypeProxy Àv|=8Microsoft.FSharp.Compiler.Tast+Test+Const@DebugTypeProxy>9Microsoft.FSharp.Compiler.Tast+Test+IsInst@DebugTypeProxy(]UÀuÀYÀuÌ- ÀwpYÀuÌ]UÀuÀYÀuÌÀŸP ]UÀuÀYÀuÌIDMicrosoft.FSharp.Compiler.Tast+Test+ActivePatternCase@DebugTypeProxy Àw0 Àw4 Àw8 Àw< Àw@(À”ÄÀwXYÀu¤ÀwpÀ”Ä YÀu¤ÀwpÀ”Ä À”ÄeAÀwXE AÀwX AÀwXÀw\Àu¤ÀwpÀ•T Àu¤ÀwpÀ•TeAÀw\E AÀw\ AÀw\Àw`ÀŸPÀuÀ ÀŸPÀuÀeAÀw`E AÀw` AÀw` (YÀwl (YÀsð"ÀwdYÀwlYYÀwhÀwh YÀwlYYÀwhÀwh YÀwleAÀwdE AÀwd AÀwdYÀwlYYÀwh YÀwh ÀwlÀsð YÀsðYYÀwh ]À“À YÀvp]À“ÀÀwlÀ“ÀÀsð À“ÀÀsðeAÀwlE AÀwl AÀwlÀwpÀv|À­8ÀuÌÀwpÀuÀÀxèÀ­8 ÀwpÀwpÀwpÀxàÀ”ÌÀ­82Àwp ]Àu¤]Àu¤YÀu¤ÀwpÀ­8ÀuÌ Àwp YÀtüÀwpÀ­8ÀuÌ(ÀwpÀwpÀuÌYÀuÌYÀwpÀ­8&ÀwpYÀw\ÀwpÀ­8À®Ày`"ÀwpÀw\ÀwpÀ­8À®Ày`?Àwp ÀuÌ]Àu¤ÀwpYÀyYUÀuÌYÀyÀ­8ÀwpYÀxøÀwpÀwpÀ­8#ÀwpÀwðYÀuÌYÀwpÀ­8;ÀwpÀwp€Õ]uYÀuÌYÀwpÀ|pÀ­8ÀuÌÀwpYÀtüÀwpÀ­8Àwp€ÕÀwpeAÀwpE Àv|À­8ÀuÌ=8Microsoft.FSharp.Compiler.Tast+Expr+Const@DebugTypeProxy(Àxè ÀuÀÀxèÀ­8 Àxè;6Microsoft.FSharp.Compiler.Tast+Expr+Val@DebugTypeProxy(Àxà(À”Ì ÀwpÀwpÀxàÀ”ÌÀ­8 Àxà À”ÌB=Microsoft.FSharp.Compiler.Tast+Expr+Sequential@DebugTypeProxy.  ]Àu¤]Àu¤YÀu¤ÀwpÀ­8ÀuÌ>9Microsoft.FSharp.Compiler.Tast+Expr+Lambda@DebugTypeProxy  YÀtüÀwpÀ­8ÀuÌ@;Microsoft.FSharp.Compiler.Tast+Expr+TyLambda@DebugTypeProxy$ ÀwpÀuÌYÀuÌYÀwpÀ­8;6Microsoft.FSharp.Compiler.Tast+Expr+App@DebugTypeProxy(À®Ày`" YÀw\ÀwpÀ­8À®Ày` À®Ày`>9Microsoft.FSharp.Compiler.Tast+Expr+LetRec@DebugTypeProxy Àw\ÀwpÀ­8À®Ày`;6Microsoft.FSharp.Compiler.Tast+Expr+Let@DebugTypeProxy (YÀy(YUÀuÌYÀy;  ÀuÌ]Àu¤ÀwpYÀyYUÀuÌYÀyÀ­8 YÀy YUÀuÌYÀy;6Microsoft.FSharp.Compiler.Tast+Expr+Obj@DebugTypeProxy(ÀwX   " À•TÀ­8ÀwÀwXÀ­8ÀuÌ ÀwX=8Microsoft.FSharp.Compiler.Tast+Expr+Match@DebugTypeProxy (YÀxø YÀxøÀwpÀwpÀ­8 YÀxøJEMicrosoft.FSharp.Compiler.Tast+Expr+StaticOptimization@DebugTypeProxy(Àwð  ÀwðYÀuÌYÀwpÀ­8 Àwð:5Microsoft.FSharp.Compiler.Tast+Expr+Op@DebugTypeProxy&(€Õ]uYÀuÌYÀwpÀ|p    7 Àwp€Õ]uYÀuÌYÀwpÀ|pÀ­8ÀuÌ& €Õ]uYÀuÌYÀwpÀ|p=8Microsoft.FSharp.Compiler.Tast+Expr+Quote@DebugTypeProxy YÀtüÀwpÀ­8@;Microsoft.FSharp.Compiler.Tast+Expr+TyChoose@DebugTypeProxy (€ÕÀwp €ÕÀwp €ÕÀwp<7Microsoft.FSharp.Compiler.Tast+Expr+Link@DebugTypeProxy Àwx Àw| Àw€ Àw„ Àwˆ ÀwŒ Àw Àw” Àw˜ Àwœ Àw  Àw¤ Àw¨ Àw¬ Àw°Àwð ÀwðÀuÄ ÀwðÀu¼Àwð Àwð ÀwðÀwðÀ•<ÀxÈÀwðÀ•$ÀxÐÀwðÀ”ÔÀ”ôÀwðÀ”ÔÀ• ÀwðÀxÀÀu¼ ÀwðÀuÈ ÀwðÀuÄ ÀwðÀu¼ÀwðÀwðYÀ·¼YÀuÌ  ÀwðÀup ÀwðÀxØÀuÀ 2 ÀwðÀxèÀ¶pYÀuÌYÀuÌYÀuÌ eAÀwðE AÀwð AÀwð ÀuÄ@;Microsoft.FSharp.Compiler.Tast+TOp+UnionCase@DebugTypeProxy@;Microsoft.FSharp.Compiler.Tast+TOp+ExnConstr@DebugTypeProxy<7Microsoft.FSharp.Compiler.Tast+TOp+Bytes@DebugTypeProxy >9Microsoft.FSharp.Compiler.Tast+TOp+UInt16s@DebugTypeProxy(À•<(ÀxÈ À•<ÀxÈ À•< ÀxÈ<7Microsoft.FSharp.Compiler.Tast+TOp+While@DebugTypeProxy(À•$(ÀxÐ À•$ÀxÐ À•$ ÀxÐ:5Microsoft.FSharp.Compiler.Tast+TOp+For@DebugTypeProxy(À”Ô(À”ô À”ÔÀ”ô À”Ô À”ô?:Microsoft.FSharp.Compiler.Tast+TOp+TryCatch@DebugTypeProxy(À• À”ÔÀ•  À• AÀ{˜À{˜À{œÀ{œÀ{ À{ À{¤À{¤À{¨À{¨À{¬À{¬À{°À{°À{´À{´À{¸À{¸À{¼À{¼À{ÀÀ{À À{ÄÀ{Ä À{ÈÀ{ÈÀ{ÌÀ{ÌÀ{ÐÀ{ÐÀ{ÔÀ{ÔÀ{ØÀ{ØÀ{ÜÀ{ÜÀ{àÀ{àÀ{äÀ{äÀ{èÀ{èÀ{ìÀ{ì€À{HÀ{lYÀ{l€À{HÀ{lYÀ{lÀ{ðÀ{ðÀ{ôÀ{ôÀ{øÀ{øÀ{üÀ{üÀ|À| À{À{!"#$%&'()*+,-./ À{HSNMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+ModuleValueOp@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+RecdMkOp@DebugTypeProxy À{HOJMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+RecdGetOp@DebugTypeProxyOJMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+RecdSetOp@DebugTypeProxyMHMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+SumMkOp@DebugTypeProxy À{HSNMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+SumFieldGetOp@DebugTypeProxyRMMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+SumTagTestOp@DebugTypeProxyPKMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+TupleGetOp@DebugTypeProxyLGMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+BoolOp@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+StringOp@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+SingleOp@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+DoubleOp@DebugTypeProxyLGMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+CharOp@DebugTypeProxyMHMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+SByteOp@DebugTypeProxyLGMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+ByteOp@DebugTypeProxyMHMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+Int16Op@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+UInt16Op@DebugTypeProxyMHMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+Int32Op@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+UInt32Op@DebugTypeProxyMHMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+Int64Op@DebugTypeProxyNIMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+UInt64Op@DebugTypeProxy(€À{HÀ{lYÀ{l €À{HÀ{lYÀ{l €À{HÀ{lYÀ{lOJMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+PropGetOp@DebugTypeProxyPKMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+FieldGetOp@DebugTypeProxy(À{„ À{„ À{„PKMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+CtorCallOp@DebugTypeProxy(À{ˆ À{ˆ À{ˆRMMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+MethodCallOp@DebugTypeProxy(OJMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+PropSetOp@DebugTypeProxy))PKMicrosoft.FSharp.Compiler.QuotationPickler+CombOp+FieldSetOp@DebugTypeProxy À{˜ À{œ À{  À{¤ À{¨ À{¬ À{° À{´ À{¸ À{¼ À{À À{Ä À{È À{Ì À{Ð À{Ô À{Ø À{Ü À{à À{ä À{è À{ì À{ð À{ô À{ø À{ü À|À|pÀ|pYÀ|pÀ|pÀ{YÀ{lYÀ|peAÀ|pE AÀ|p AÀ|p€œ À|xÀ|xaÀ|pÀ|pYÀ|pYÀ|pÀ||À||À{À{YÀ{lYÀ{lÀ|€À|€À|„À|„À|ˆÀ|ˆÀ{ŒÀ{ŒÀ|ŒÀ|ŒÀ{lÀ{lÀ|À| À|p€ž À|pÀ|xÀ|xÀ|pÀ|pYÀ|pYÀ|pÀ||À||À{À{YÀ{lYÀ{lÀ|€À|€À|„À|„À|ˆÀ|ˆÀ{ŒÀ{ŒÀ|ŒÀ|ŒÀ{lÀ{lÀ|À|&À|xÀ||À|€À|„À|ˆÀ|ŒÀ|€›À|pÀ|xÀ|xÀ|pÀ|pYÀ|pYÀ|pÀ||À||À{À{YÀ{lYÀ{lÀ|€À|€À|„À|„À|ˆÀ|ˆÀ{ŒÀ{ŒÀ|ŒÀ|ŒÀ{lÀ{lÀ|À| YÀ|pJÀ|xÀ|xÀ||À||À|€À|€À|„À|„À|ˆÀ|ˆÀ|ŒÀ|ŒÀ|À| À|pÀ|p(À|p (YÀ|p À|pYÀ|p À|p YÀ|pPKMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+AttrExpr@DebugTypeProxy(À{ À{YÀ{lYÀ|p À{PKMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+CombExpr@DebugTypeProxyOJMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+VarExpr@DebugTypeProxy À|pQLMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+QuoteExpr@DebugTypeProxy(À{Œ À{ŒÀ|p À{ŒRMMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+LambdaExpr@DebugTypeProxy À{lPKMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+HoleExpr@DebugTypeProxy À{lSNMicrosoft.FSharp.Compiler.QuotationPickler+ExprData+ThisVarExpr@DebugTypeProxy À|x À|| À|€ À|„ À|ˆ À|Œ À| À|pUÀ{ŒÀ|p EÀ{lÀ}  EÀ|pÀ}  AÀ|pAÀ} E EYÀ|pÀ} aÀ{HÀ{H À|ØÀ|ØÀ{HÀ{HÀ|ØÀ{HÀ{H À|ØÀ|Ø À|ÜÀ|Ø À|ÜÀ{ˆ À|ÜÀ{„À|ÜeAÀ|ÜE AÀ|Ü AÀ|ÜRÀ|äÀ|äaÀ|ØÀ|ØÀ|èÀ|èÀ{ˆÀ{ˆÀ|ìÀ|ìÀ{„À{„À|ÜÀ|ÜÀ|Ü À|ÜTÀ|ÜÀ|äÀ|äÀ|ØÀ|ØÀ|èÀ|èÀ{ˆÀ{ˆÀ|ìÀ|ìÀ{„À{„À|ÜÀ|ÜÀ|ÜÀ|äÀ|èÀ|ìÀ|Ü1 À|äÀ|äÀ|èÀ|èÀ|ìÀ|ìÀ|ÜÀ|ÜÀ|Ü À|Ü(À|Ø À|Ø À|ØXSMicrosoft.FSharp.Compiler.QuotationPickler+MethodBaseData+ModuleDefn@DebugTypeProxyTOMicrosoft.FSharp.Compiler.QuotationPickler+MethodBaseData+Method@DebugTypeProxyRMMicrosoft.FSharp.Compiler.QuotationPickler+MethodBaseData+Ctor@DebugTypeProxy À|ä À|è À|ì À|p À|ÜÀ|p EÀ} À|ÜÀ|p AÀ} EUÀ|ÜÀ|pAUÀ|ÜÀ|pAÀ} E AUÀ|ÜÀ|pAÀ} E UÀ|ÜÀ|p EYUÀ|ÜÀ|pÀ} "AYUÀ|ÜÀ|pAÀ} E$ AYUÀ|ÜÀ|pAÀ} E YUÀ|ÜÀ|p YUÀ|ÜÀ|p À} À} À}  À} AÀ} AAÀ} EYÀ} UYÀ} AYAÀ} EAAÀ} EÀ} À} UYAYÀ} EUYÀ} À}YAYAÀ} EAAÀ} EAAÀ} E (xx À} x xY x À}À}YY À}x À}x Y À} À} (À} À} €˜À} €˜À} À}À} À} À} EÀ}  AAÀ} E EYÀ} AÀ|pAYUÀ|ÜÀ|pTAÀ|pAÀ} EAYUÀ|ÜÀ|pAÀ} EAUÀ|ÜÀ|pAÀ} E\ÀØtÀØp X X UÀ­8À}TX    ¡ ƒñ  ƒñ  UÀ}TX À­8X À}œX À}4 À}TX€˜T(AAAÀ}œÀ}TX€˜T"u€˜AAAÀ}œÀ­8 €˜À­8T/u€˜AAAÀ}œÀ­8À}TX]Q]Q ]QQTX]Q ]QQQ ]QÀ}TXÀ­8\À}œÀ}TXÀ}œÀ­8À}TXÀ}œÀœ4À}TX3À}œ€˜AÀ­8AAÀ}œÀ­8À}TXÀ}œ]QÀ­8À}TXÀ}œÀ­8À}TXU]X U] U]X]X X U]&u€˜AÀ­8AAÀ}œÀ­8AÀ­8AAÀ}œ U]UÀœLAXÀ}œÀœ4 À}œ   ƒñ ƒÅƒñ U]%u€˜AÀ­8AAÀ}œÀ­8UÀœLAXÀ}œ€û#U À}œ ]]U]À­8u€˜AÀ­8AAÀ}œÀ­8AÀ­8AAÀ}œ€˜QTXU]]]UÀœLAXÀ}œÀœ4AXÀ}œÀœLYUÀœ,À­8YUÀœ,À­8YUÀœ,À­8À}œÀ}œÀ}TXS À­8À}œYUÀœ,À­8YUÀœ,À­8YUÀœ,À­8À­8À}œUÀ}œÀ­8À}TXÀœ ? @ 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 [ \ ] ^ _ ` 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 { | } ~  €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — À}œU ˜ ™ š › œ  ž Ÿ   ¡ À}œU ¢ À}œƒÅ £À}œ ¤À}œ ¥À}œ ¦À}œ §À}œ ¨ ©À}œ ªÀ}œ «À}œ ¬ À}œU  ­ À}œU ® ¯ À}œU ° À}œU ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ À}œ ¿eAÀ}œE AÀ}œ AÀ}œ123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿(uÀ­8ÀœLuÀ­8ÀœL uÀ­8ÀœL uÀ­8ÀœLB=Microsoft.FSharp.Compiler.Parser+token+HASH_IF@DebugTypeProxyD?Microsoft.FSharp.Compiler.Parser+token+HASH_ELSE@DebugTypeProxyE@Microsoft.FSharp.Compiler.Parser+token+HASH_ENDIF@DebugTypeProxy(ÀœL ÀœL ÀœLB=Microsoft.FSharp.Compiler.Parser+token+COMMENT@DebugTypeProxyE@Microsoft.FSharp.Compiler.Parser+token+WHITESPACE@DebugTypeProxyD?Microsoft.FSharp.Compiler.Parser+token+HASH_LINE@DebugTypeProxyE@Microsoft.FSharp.Compiler.Parser+token+HASH_LIGHT@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Parser+token+INACTIVECODE@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Parser+token+LINE_COMMENT@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Parser+token+STRING_TEXT@DebugTypeProxy>9Microsoft.FSharp.Compiler.Parser+token+EOF@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Parser+token+LEX_FAILURE@DebugTypeProxyA9Microsoft.FSharp.Compiler.Parser+token+LET@DebugTypeProxy @;Microsoft.FSharp.Compiler.Parser+token+YIELD@DebugTypeProxy¡E@Microsoft.FSharp.Compiler.Parser+token+YIELD_BANG@DebugTypeProxy(U¢ UAYÀ™8]À”¼A]À­8AYÀ™8AYÀšL.AYÀ™8AAAÀ™LÀ™HYÀšL/ AYÀ™8AAAÀ™LÀ™HYÀšL AÀ™LÀ™HYÀšLVYÀ™8]À”¼UAÀ™LÀ™HAYÀ™8AAAÀ™LÀ™HYÀšLV YÀ™8]À”¼À˜]À“ÀÀ–XÀ­8À™<UÀ˜x]AÀ–XÀ–XÀ˜À­8YÀ™8]À”¼ÀšH& ]À”¼À“ÀÀ•ØÀ­8À“˜À­8 ]À­8 YÀšL]À­8YÀ™8(A]À­8AYÀ™8AYÀšL%]À”¼À“ÀÀ•ØÀ­8À“˜À­87 ]À”¼À“À]À•ØÀ–XÀ“˜À­8]À­8À™L# YÀšLYÀ™8AÀ™LÀ™H-AYÀ™8AAAÀ™LÀ™HYÀšLK ]À”¼À“À]À•ØÀ–XU]À­8À™LÀ“˜À­8]À­8À™LÀ•ØU]À”¼À“ÄÀ“ÄYÀ“ÀYÀ­8À­8À“Ä]À”¼ À”¼À”¼À“Ä]À”¼À”¼À•Ø]À“ÀÀ•ØÀ–X]À“À À­8À“ÀÀ­8 À­8@YÀ™8A]À”¼AAÀ™LÀ™HAYÀ™8YÀšL8YÀ™8AYÀ™8AAAÀ™LÀ™HYÀšL U#YÀ™8]À”¼À“ÄU‚™À™ÔÀ™Ø‚•À™ÔÀ™Ø‚™À™ÔÀ™Ø‚•À™ÔÀ™Ø*‚™À™ÔÀ™ØÀ™Ø‚•À™ÔÀ™ØÀ™Ô À­8€­À™ÔÀ™Ø €­À™ÔÀ™Ø ]À™Ô'‚™À™ÔÀ™ØÀ­8‚•À™ÔÀ™Ø ]À™Ô€­À™ÔÀ™Ø ]À™Ø‚™À™ÔÀ™Ø ]À™Ø€­À™ÔÀ™ØY€­À™ÔÀ™Ø Y€­À™ÔÀ™Ø €­À™ÔÀ™ØÀ­8 €­À™ÔÀ™Ø €­À™ÔÀ™ØÀ™Ô €­À™ÔÀ™ØÀ™Ø7YÀ™8]À”¼Y€­À™ÔÀ™ØYÀ­8À­8YÀ™8]À”¼YÀšYÀ™8]À”¼À™” YÀšYÀšU0]À”¼À“ÄYÀ•tYÀ“ÀYÀ•xÀ“˜ YÀ•t0]À”¼YÀ•tÀ“ÄYÀ“ÀYÀ•xÀ“˜UYÀ•tYÀ•x UYÀ•tYÀ•xUYÀ•tYÀ•xF]À”¼À“ÄUYÀ•tYÀ•xYÀ•tYÀ“ÀYÀ•xÀ“˜ À“ÐÀ“Ð YÀ•tÀ•tYÀ•tÀ•tÀ•tYÀ™8À“ÐYÀ•tYÀ•xUYÀ•tYÀ•tYÀ•tUYÀ•t UYÀ•tUYÀ•tYÀ•xÀš$ YÀ•xÀ•xYÀ•xÀ•xÀ•x À“ÐÀ•ØÀ“ÐU À“ÐÀ™T YÀ“ÐYÀ“ÐÀ™T+€áÀ­8]À­8YÀ•ØYÀ­8À­8, €áÀ­8]À­8YÀ•ØYÀ­8À­8*€áÀ­8]À­8YÀ•ØYÀ­8À­86À“ЀáÀ­8]À­8YÀ•ØYÀ­8À­8À­8=À“ЀáÀ­8]À­8YÀ•ØYÀ­8À­8À­8UYÀ“ÐÀ“ÐAÀ“˜Y€­À™ÔÀ™Ø À“˜ AÀ“˜Y€­À™ÔÀ™ØY€­À™ÔÀ™Ø#À“˜AÀ“˜Y€­À™ÔÀ™Ø€­À™ÔÀ™Ø2€­À™ÔÀ™ØÀ“˜AÀ“˜Y€­À™ÔÀ™Ø€­À™ÔÀ™ØAÀ“˜€­À™ÔÀ™Ø< AÀ“˜€­À™ÔÀ™ØÀ“˜AÀ“˜Y€­À™ÔÀ™Ø Y€­À™ÔÀ™ØÀ“˜ AÀ“˜€­À™ÔÀ™Ø;AÀ“˜€­À™ÔÀ™ØÀ“˜AÀ“˜Y€­À™ÔÀ™Ø AÀ“˜€­À™ÔÀ™ØAÀ“˜€­À™ÔÀ™Ø YÀ™8À“ÀÀ­8€­À™ÔÀ™Ø €­À™ÔÀ™ØÀ“˜ YÀ™8]À”¼À“ÀÀ­8 YÀ™8À“ÀYÀšÀ­8)YÀ™8]À”¼À“ÀYÀšÀ­8$ YÀ™8À“ÀUÀ•ØÀšÀ­8.YÀ™8]À”¼À“ÀUÀ•ØÀšÀ­8 YÀ™8À“ÀÀ“ÔÀ­8 À“Ô%YÀ™8]À”¼À“ÀÀ“ÔÀ­8 À“ÀÀ“ÔÀ“ÀYÀš YÀš ÀšÀ•Ø YÀ•Ø À•ØÀšÀ•ØYÀ•ØÀšYÀšÀšU YÀ™8AYÀ™8AÀšÀš]À”¼À­8À“˜À•Ø]À“ÀYÀ™8! ]À”¼À“ÀÀ•ØÀ­8À“˜ ÀšYÀ™8AYÀ™8AÀš ]À”¼À“ÀÀ•ØÀ­8À“˜ Àš(Àš(YÀšLÀš(YÀ™T À™ØAÀ“˜YÀ™8]À”¼À™Ø]YÀ“À]YÀ“ÀYÀ“À-AYÀ™8A]À”¼AÀ­8YÀ™@5 À­8AYÀ™8A]À”¼AÀ­8YÀ™@ À­8YÀ™@YÀ™@U* UYÀ™8YÀ™@YÀ™8]À”¼:U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@; U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@9U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@€€U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@À­8]À­8AYÀ™8A]À”¼AÀ­8YÀ™@]À­82 AYÀ™8A]À”¼UYÀ™8YÀ™@7AYÀ™8A]À”¼UYÀ™8YÀ™@À­8À–XÀ­8À­8AAÀ­8E AAÀ­8E AÀ­8€• U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@AAÀ­8EÀ­8]À­8AYÀ™8A]À”¼AÀ­8YÀ™@À­8]À­8UÀ}ŒÀ–X!À–XAAÀ­8EÀ­8À­8UÀ}ŒÀ­8UÀ}ŒÀ–X UÀ}ŒÀ–XUÀ}ŒÀ–X EÀ­8AAÀ­8EÀœ 4 Àœ À“ÀYÀ˜À“˜À­8À­8À­8À­8À–X À˜À™@ Àœ 0AYÀ™8A]À”¼UYÀ™8YÀ™@F Àœ ]À”¼À“ÀYÀ˜À“˜À­8À­8À­8À­8À­8À–XÀ­8 YÀ˜À˜YÀ˜À˜ À˜À˜YÀ™8À•ØÀ­8À˜YÀ™8À•ØÀ“ÀÀ­8À˜YÀ™8À•ØYÀ™8À­8 YÀ™@" YÀ™@YÀ™8]À”¼À­8.AYÀ™8A]À”¼AÀ­8AÀ™@9 YÀ™@AYÀ™8A]À”¼AÀ­8AÀ™@ À­8À™@;]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@YUÀ™@À­8UYÀ™@YÀ­8:]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@ YUÀ™@À­8 À™@À­8UYÀ™@YÀ­86UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@€ð ]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@YUÀ™@À­8UYÀ™@YÀ­8YÀ™@YÀ­8]À­8]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@À­8AYÀ™8A]À”¼AÀ­8AÀ™@À­8UÀ™@À­8YUÀ™@À­8€¿]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@YUÀ™@À­8À­8]UÀ­8AYÀ™8A]À”¼AÀ­8AÀ™@À­8AYÀ™8A]À”¼AÀ­8AÀ™@)AYÀ™8A]À”¼AÀ­8À™@ À†@ À­8À™@ À™@YÀ™8]À”¼À­82UÀ­8AYÀ™8A]À”¼AÀ­8À™@3 UÀ­8AYÀ™8A]À”¼AÀ­8À™@1UÀ­8AYÀ™8A]À”¼AÀ­8À™@iYÀ™8UÀ­8AYÀ™8A]À”¼AÀ­8À™@À­8AYÀ™8A]À”¼AÀ­8À™@YUYÀ˜`À–X€– ]Àœ YUYÀ˜`À–XÀ–XÀ­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@ À­8À•T À™@YÀ™8]À”¼À­8 UÀ–XYUYÀ˜`À–X! UÀ–XYUYÀ˜`À–XUÀ–XYUYÀ˜`À–X% UA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À­8]Àœ UÀ–XYUYÀ˜`À–XYUYÀ˜`À–XÀ–XÀ­8À­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@} h]Àœ À­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À•TÀ­8À­8À­8€ëUA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À­8]Àœ À­8À­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@{ ]Àœ À­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@ À•TÀ­8€ò UA€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@À­8]Àœ UÀ­8À­8À­8A€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™HÀ™@!UÀ–XYUYÀ˜`À–XCUÀ–XYUYÀ˜`À–XUYUYÀ˜`À–XÀ–X YUYÀ˜`À–X UYÀ˜`À–X3À–XYUYÀ˜`À–XYUYÀ˜`À–XUYÀ˜`À–X*YUYÀ˜`À–XUYÀ˜`À–X YÀ˜`UYÀ˜`À–XYÀ˜`À–XÀ˜` À˜` YÀ˜`YÀ˜`À˜`À˜` U U U U U  U  U    ƒÅU À”| À“ÔÀ”| À˜À“˜R ]À”¼À­8À•T]Àœ À–XÀ­8YUYÀ˜`À–XYÀ™8]À™Ha À™@€É]À”¼À­8À•T]Àœ À–X€À­8YUYÀ˜`À–XYÀ™8]À™H À˜À“˜ À˜(À•ØYÀ™8À˜(À˜(À˜(YÀ˜( YÀ˜(YÀ˜(U À˜À“ÀU]À”¼À“Ä U]À”¼À“ÄU]À”¼À“ÄÀš$&U]À”¼À“Ä]Àš$YÀ˜À˜YÀ˜À˜YÀ˜U#U]À”¼À“Ä]À”¼À“ÄÀ“ÔAÀ­8À˜ AÀ­8À˜AÀ­8À˜À­8AÀ­8À˜UÀ˜ À˜ À˜À­8 À˜À•ØYÀ™8À˜)UYUUYÀ“ÀÀ“ÀÀ˜À­8* UYUUYÀ“ÀÀ“ÀÀ˜À­8(UYUUYÀ“ÀÀ“ÀÀ˜À­8*UYUUYÀ“ÀÀ“ÀÀ˜À­8UUYÀ“ÀÀ“ÀÀ˜ UUYÀ“ÀÀ“ÀÀ˜YUUYÀ“ÀÀ“ÀÀ˜AUUYÀ“ÀÀ“ÀÀ˜YUUYÀ“ÀÀ“ÀÀ˜À­8iUUYÀ“ÀÀ“ÀÀ˜UYUUYÀ“ÀÀ“ÀÀ˜À­8YUUYÀ“ÀÀ“ÀÀ˜À­8UUYÀ“ÀÀ“ÀÀ˜À“ÄÀ˜UYÀ“ÀÀ“ÀÀ–XU À–XÀ•Ø À–XÀ–X0UÀ}ŒÀ­8À­8À}ŒÀ­8UÀ­8À­8 À}ŒÀ–XÀ}ŒÀ­8À­8UÀ}ŒÀ­8À–XÀ­8À}Œ*UÀ}ŒÀ­8À­8À}ŒUÀ­8À­8$UÀ}ŒÀ­8À­8À}ŒÀ­8À­8UÀ}ŒÀ–XÀ–XUÀ­8UYÀ™4À­8 UÀ­8UYÀ™4À­8UÀ­8UYÀ™4À­8UYÀ™4À­8:À–XUÀ­8UYÀ™4À­8À­8À­8À­8YÀ™4DÀ–XUÀ­8UYÀ™4À­8À­8À”ÔÀ­8À­8YÀ™4À”ôÀ–XÀ–XÀ­8À”ÔÀ• AÀ–XAÀ­8À–X AÀ–XAÀ­8À–XÀ–XAÀ–XAÀ­8À–X"UÀ­8À­8À•TÀ–XÀ­8À–XÀ–XÀ­8'À–XÀ–XUÀ­8À•<À­8À–X À–XÀ­8À•<À­8À­8À­8, À–XUÀ­8À•<À­8À­8À–XÀ­8UÀ­8À­8 À­8À•<À­8À­8À–XÀ­8uÀ˜À–X uÀ˜À–XuÀ˜À–XuÀ˜À–XÀ–XuÀ˜À–XÀ–XU4uÀ˜À–XÀ­8À•$À–XÀ˜À­8À­8À­8; uÀ˜À–XUÀ­8À•$À–XÀ˜À­8À­8À­8; uÀ˜À–XÀ–XÀ˜UÀ­8À•$À­8À­8À­8€À“ÀÀ–XÀ–X €À“ÀÀ–XÀ–X€À“ÀÀ–XÀ–X!€À“ÀÀ–XÀ–XÀ–XÀ­8G €À“ÀÀ–XÀ–XÀ–XUÀ­8À•$À–XÀ–XÀ“ÀÀ­8À–X@ €À“ÀÀ–XÀ–XÀ­8À•$À–XÀ–XÀ“ÀÀ­8À­8À­8L €À“ÀÀ–XÀ–XUÀ­8À•$À–XÀ–XÀ“ÀÀ­8À­8À–XÀ­8À–XÀ­8À­8À­8À­8&À˜UÀ­8À•$À­8À­8À­8, À˜UÀ­8À•$À­8À­8À–XÀ­8À–XÀ˜À–XÀ–XÀ•TÀ­8,À˜À–XAAÀ­8EÀ–XÀ•TÀ­81À˜À–XAAÀ­8EÀ•TÀ­8À­8À­8À–XAAÀ­8E À–XUYÀ–XYÀ­8 UYÀ–XYÀ­8UYÀ–XYÀ­8*UYÀ–XYÀ­8YÀ–XYÀ­8 À–XÀ–X À–XÀ–XÀ–XUÀ–XÀ­8À­8À–XUÀ–XÀ­8À­8À–XUÀ–XÀ­8À­8À–XUÀ­8À­8À“ÔUYÀ™4À­8 UYÀ™4À­8UYÀ™4À­8À­8UYÀ™4À­8UYÀ™4À­8uÀ˜]À–XÀ­8uÀ˜]À–XÀ­8 uÀ˜]À–XÀ­81uÀ˜]À–XÀ­8À–XÀ­8À˜]À–XCuÀ˜]À–XÀ­8À–XUYÀ™4À­8À­8À˜]À–X1uÀ˜]À–XÀ­8À­8À˜]À–XÀ­8 ]À–XÀ­8À–X À­8À–X À–XÀ–XÀ­8UÀ–XÀ­8 UÀ–XÀ­8UÀ–XÀ­8AÀ–XAÀ­8À–X#UÀ–XÀ­8]À–XÀ­8À–X À–XÀ­8#À–XAÀ–XAÀ­8À–XÀ­8À–X/UYÀ–XYÀ­8À–XYÀ–XYÀ­8;UYÀ–XYÀ­8UYÀ–XYÀ­8À­8À­8À–XUÀ­8À­8À–XÀ–XYÀ–XYÀ­8À–XUÀ­8À­8 À•ØÀ–XÀ•ØÀ­8À­8 UÀ–X UÀ–X UÀ–X UÀ–X$UÀ–XÀ–XUÀ­8À­8UÀ–XÀ–XU UÀ–XUÀ–XÀ–XÀ–X,€À­8]À­8YÀ•ØYÀ­8À­8- €À­8]À­8YÀ•ØYÀ­8À­8+€À­8]À­8YÀ•ØYÀ­8À­8f UÀ–X€À­8]À­8YÀ•ØYÀ­8À­8À–XÀ­8À­8]À­8YÀ­8YÀ•ØÀ­8#UÀ–XÀ–XUÀ­8À­8!AÀ–XAÀ­8AÀ­8À–X" AÀ–XAÀ­8AÀ­8À–X À­8À–X2UÀ–XAÀ–XAÀ­8AÀ­8À–XÀ–X,AÀ–XAÀ­8AÀ­8À–XÀ–XÀ­8 À“ÀÀ–XUÀ–XÀ–XÀ–XAÀ­8AÀ–X AÀ­8AÀ–XAÀ­8AÀ–XÀ–X!AÀ­8AÀ–XUÀ–XUÀ–X À–XÀ–XÀ­8À­8 AÀ–XAÀ­8AÀ­8À–X À“ÀÀ­8 hUU hÀ–X UÀ–XÀ–X UÀ–XÀ–XUÀ–XÀ–X UÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–X- UÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–X,UÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–X; UÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–X:UÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–XUÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–X" UÀ–XUUÀ­8$UÀ–XUÀ­8À–XÀ­8UUÀ­8À­8UUÀ–XÀ­8À­8AÀ­8AÀ–XAÀ­8À–X AÀ­8À–XAÀ­8À–XÀ­80AÀ­8À–XUÀ­8À­8À­(À­8À–XUÀ­8À­8À­(À­8 YÀ“ÐÀ™TÀ–X À–XÀ­8YÀ“ÐÀ™TÀ–X YÀ“ÐUÀ­8AÀ­8À–X UÀ­8AÀ­8À–XUÀ­8AÀ­8À–XUÀ­8AÀ­8À–X3UÀ­8AÀ­8À–XUAÀ­8À–XÀ­8€ˆu]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€Š u]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€‡u]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€‰ u]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€œu]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(À­8AÀ­8À–XUÀ­8AAÀ­8À–XAAÀ­8À–X UÀ­8AAÀ­8À–XUÀ­8AAÀ­8À–XAAÀ­8À–X1UÀ­8AAÀ­8À–XAAÀ­8À–X AAÀ­8À–XÀ­8 AÀ­8 À–XÀ­8AÀ­8AÀ–X6UÀ­8AAÀ­8À–XAAÀ­8À–XÀ­8 À–XÀ­8À–XÀ­8AAÀ­8À–X À–XÀ–XÀ­8 À–XÀ–¬ À–XÀ–XÀ–X)À–XÀ–XÀ–XÀ­8AAÀ­8À–X À–XÀ­8À–X"À–XUÀ­8À–XÀ­8À­8 À˜À–X;À˜UÀ­8AAÀ­8À–XAAÀ­8À–XÀ­8À˜UÀ­8À­8À˜À–XÀ–XÀ“À$ YÀ•ØYÀ–XYÀ•ØÀ­8 YÀ–X#YÀ•ØYÀ–XYÀ•ØÀ­8YÀ–XÀ–X6YUUUÀ“Ä]À–X]UÀ­8]À­(7 YUUUÀ“Ä]À–X]UÀ­8]À­(3 UUUÀ“Ä]À–X]UÀ­8]À­(+ UÀ“Ä]À–X]UÀ­8]À­(/ uUÀ“Ä]À–X]UÀ­8]À­(I À•Ø]À–XYUUUÀ“Ä]À–X]UÀ­8]À­(]UÀ­8]À­(À–XYUUUÀ“Ä]À–X]UÀ­8]À­(À“ÄUÀ“ÄYuUÀ“Ä]À–X]UÀ­8]À­(uUÀ“Ä]À–X]UÀ­8]À­(]UÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€È À–XÀ–XYUUUÀ“Ä]À–X]UÀ­8]À­(]UÀ­8]À­(]€À“Ä]€ÕÀ˜HÀ­8UÀ­8À“ÄUÀ“ÄYUUUÀ“Ä]À–X]UÀ­8]À­(À­8UUÀ“Ä€—À–XYUUUÀ“Ä]À–X]UÀ­8]À­(]UÀ­8]À­(UUÀ“ÄYUUUÀ“Ä]À–X]UÀ­8]À­(UUÀ“Ä]À–X UUÀ“Ä]À–XUUÀ“Ä]À–X€ÏÀ–XUUÀ“Ä]À–XYUUUÀ“Ä]À–X]UÀ­8]À­(]UÀ­8]À­(YUUUÀ“Ä]À–X]UÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(€ À–X]UÀ­8]À­(]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(UÀ­8]À­( UÀ­8]À­(UÀ­8]À­(À­8]À­(À­8]À­(À­8 À­8U1UUUÀ“Ä]À–X]UÀ­8]À­(5YUUUÀ“Ä]À–X]UÀ­8]À­(`YUUUÀ“Ä]À–X]UÀ­8]À­(UÀ­8]À­(UUÀ“Ä]À–X UÀ“ÄUÀ“ÄÀ–X]À–XUÀ“ÄUUÀ“ÄU UÀ•Ø]UÀ–X]À“À9 UÀ•Ø]UÀ–X]À“ÀYÀ™@YÀ™0À­8UÀ•Ø]UÀ–X]À“À! UÀ•Ø]UÀ–X]À“À YÀ™@ YÀ™08UÀ•Ø]UÀ–X]À“ÀYÀ™@YÀ™0À­80 UÀ•Ø]UÀ–X]À“ÀYÀ™0À­8/UÀ•Ø]UÀ–X]À“ÀYÀ™0À­8 À•ØÀ­8'À•ØÀ–XÀ“À]UÀ–X]À“À"À•ØÀ–X]UÀ–X]À“ÀÀ•Ø]UÀ–X]À“À;U]À­8AYÀ™8A]À”¼AÀ­8YÀ™@ ]À™@ÀšXÀš|À­8 ]À™@ÀšL ÀšLÀ™@ À™0À™0YÀ™0À•ØYÀ™@YÀ˜À–XÀ­8À›ð$YÀ˜À­8À›ðÀ–XÀ­8À­8&YÀ˜À–XUÀ­8À–XÀ›ð*YÀ˜UÀ›ðÀ­8À–XÀ­8À­80 YÀ˜UÀ–XÀ›ðÀ­8À–XÀ­8À­8)YÀ˜À–XÀ›ðÀ­8À–XÀ­8À­8)À–XÀ›ðÀ­8YÀ˜À–XÀ­8À­8'UYÀ™4À­8À­8YÀ™4À­8À•ØYÀ•x#UÀ•ØÀšYÀ•xÀ•ØÀšUÀ•ØÀšÀ•ØÀšÀš UÀ•ØYÀš  UÀ•ØYÀš UÀ•ØYÀš GUÀ•ØYÀš UÀ•ØÀšÀ•ØYÀš À•ØÀš YYÀš 0UÀ•ØYÀš À•ØYÀš YÀš Àš  UÀ•ØÀ•ØUÀ•ØÀš YUÀ•ØÀš UYÀ•ØYÀš  UÀ•ØÀš  YUÀ•ØÀš À•ØÀš UYÀ•ØYÀš  À•ØUÀ•ØTUÀ•ØÀš YUÀ•ØÀš À•ØÀš UYÀ•ØYÀš YÀ•ØYÀš UÀ•ØÀš À•ØÀš YUÀ•ØÀš "UÀ•ØÀš YUÀ•ØÀš UÀ•ØÀš .YÀ™8À•ØÀ•ØÀ•àYÀ“ÀÀ“ÀUYÀ™8À“ÀÀ•ØÀš YÀ™8À•ØÀš %À•ØÀ•ØÀ•àYÀ“ÀÀ“ÀUÀ“ÀÀ•ØÀš À•ØÀš À•ØÀ•Ø YUÀ•ØÀ•ØYUÀ•ØYUÀ•ØUÀ•ØYUÀ•ØUÀ•ØUUÀ•ØUYÀ•ØYÀ­8 UYÀ•ØYÀ­8UYÀ•ØYÀ­8/UYÀ•ØYÀ­8À•ØYÀ­8YÀ•ØÀ“ÐÀ•ØÀ­84À•ØÀ•ØUYÀ•ØYÀ­8YÀ•ØYÀ­8/UYÀ•ØYÀ­8À•ØYÀ•ØYÀ­85UYÀ•ØYÀ­8À•ØUYÀ•ØYÀ­8YÀ•ØYÀ­8À•ØÀ­8À•ØÀ•ØÀ­8À“ÐÀ•ØÀ­8À•ØÀ­8À•ØUUÀ­8À•ØUUÀ–XÀ–X;À•Ø€áÀ­8]À­8YÀ•ØYÀ­8À­8À­8À­8 À•ØÀ“Ä@À•ØÀ“Ä€áÀ­8]À­8YÀ•ØYÀ­8À­8À­8À­8U€À­8]À­8YÀ•ØYÀ­8À­8À­8]À­8À­8YÀ­8YÀ•ØR€À­8]À­8YÀ•ØYÀ­8À­8À­8]À­8YÀ•ØYÀ­8À­86À•ØÀ•ØUYÀ•ØYÀ­8YÀ•ØYÀ­8F À•ØÀ•ØUYÀ•ØYÀ­8UYÀ•ØYÀ­8À­8À­8À•ØUÀ­8À­8.À•ØÀ­8]À­8YÀ•ØYÀ­8À­8À•ØU)À­8]À­8YÀ•ØYÀ­8À­8UÀ­8À­8 À•ØU À­8À•Ø À”|À”|À”|UUUU YÀ”|À”|YÀ”| YÀ”| À”|À”|À”|À”|UÀ”|U À“ÀÀ­8À“ÀUÀ“ÄÀ“ÀYÀ“ÀYÀ­8 À“ÄUYÀ“ÀYÀ­8 À­8UÀ­8Y1À­8UUUÀ“ÀÀ“ÄYÀ“ÀYÀ­8]AlÀ}œE]AlÀ}œE)]AlÀ}œE]AlÀ}œE ElÀ}œ À}œ À}œõ =€½ aÀ‘4À‘4EaÀ‘4À‘4EÀ­8 ]€µ ]€µ]€µÀ­8]€µ€±]€µÀ­8EY€½ Y€½#]€µ€±]€µ€µY€½€½Y€½À­8„)ƒ}ƒ}„)„) € €½À­8AE„- €½  ‚ý „-„-€…€½À‘4A‚ýÀ­8YU€…ÀµÌYU€…ÀµÌ U€…ÀµÌ; YU€…ÀµÌ]€±]€±ƒy]]€±€ € 0 YU€…ÀµÌA‚ýÀ‘4À­8ÀµÌEYU€…ÀµÌ; UY€¨€…]AEÀµÌÀ‘4A‚ýÀ­8 À‘L €¨€¨ A À‘T€¨€ € A"€¨€¨À­8A €¨€¨€¨€ € "€¨€¨À­8A À‘\€¨]EA À‘d#€¨€¨À­8A€¨€…À­8 ‚ñ‚ñ€¨€…À­8õ =€½A€ñ]€õ ]€õ A€é €½€é]UY Y ]UY  ]UY UY UÀ‘ÀÀ’(! ]UY Y ]UÀ‘ÀÀ’(À’(]U  ]U   ]U  U  UÀ’(À’( ]U    ]UÀ’(À’(À’(]u€½Y„1 Y„1]u€½Y„1  ]u€½Y„1 u€½Y„1  „1uÀ‘”À’,À’(' ]u€½Y„1 Y„1€½ ]uÀ‘”À’,À’(À’(] ] ]À’(u]À’(À‘´À’(9 ]u] €ÑY ] €ÑY ]  #]u]À’(À‘´À’(À’(]€½ ]€½ ]€½ ]€½€½]À‘”À’(]U€½ UÀ‘” ]U€½€½]UÀ‘”À’(]U €½]U €½ ]U €½ U €½UÀ’(À‘” ]U €½€½ ]UÀ’(À‘”À’( ]Y ]Y  ]Y    ]Y Y ]À’(À’( ]U ]U  ]U U  UÀ’( ]U  ]UÀ’(À’(]U€½Y ]U€½Y  ]U€½Y U€½Y UÀ‘”À’(! ]U€½Y €½Y ]UÀ‘”À’(À’(]U„1 „1]U„1  ]U„1 U„1 UÀ’,À’( ]U„1 „1 ]UÀ’,À’(À’(]€á „1 „1 ]€á „1 „1  ]€á „1 „1 €á „1 „1 , ]€á „1 „1 „1„1   )]€áÀ’(À’,À’(À’,À’(À’(]u„1  ]u„1   ]u„1  u„1  uÀ’,À’(À’( ]u„1  „1  ]uÀ’,À’(À’(À’(]€„1   ]€„1    ]€„1   €„1   €À’,À’(À’(À’(& ]€„1   „1   $]€À’,À’(À’(À’(À’(]u   ]u    ]u   u   uÀ’(À’(À’( ]u      ]uÀ’(À’(À’(À’(]„1 ]„1 ]„1 ]„1„1]À’,À’(  €ù  À’(€…À‘¬À’,€ € € À­8€¨À‘”AÀ‘” €¨À‘” À‘” À‘”À‘”€¨À‘”À­8€¨À‘” À‘”À‘”€¨À‘”]EYÀ­8€¨À‘”Y À‘” € À­8À­8€¨À‘”u€¨À‘  €¨À‘  €¨À‘ ]€¨À‘¸]€¨À‘¼ €¨À‘ u€¨À‘  €¨À‘  À‘  À‘  À‘ À‘”]€¨À‘¼ À‘¼À‘´]€¨À‘¸ À‘¸À‘´ À‘¸ À‘´€ñu€¨À‘ €¨À‘ €¨À‘ ]E€¨À‘”]E]E]€¨À‘´]€¨À‘”]€¨À‘¸]€¨À‘¼]€¨À‘¼€¨À‘¼€¨À‘´€¨À‘´]€¨À‘¸€¨À‘¸]€¨À‘”€¨À‘”]€¨À‘´À­8€¨À‘” ‚ñ‚ñ€¨À‘¤A€¨€¹]€¨À‘” €¨€¹€¨À‘”NA€¨€¹]€¨À‘”A€¨€¹]€¨À‘”€¨€¹]€¨À‘”!€¨À‘”À‘4€¨€…À­8"]€¨À‘”€¨À‘”]E%]€¨À‘”À‘4€¨€…À­8€¨À‘”]EÀ­8€¨À‘”YÀ­8€¨À‘”UY€¨À‘”À­8 U] ‚ñ‚ñU]À‘¤€¨U] U] U]€¨U]U U]A] UU]UR YUYY€¨U]U]U€¨À‘”]EAEE6]U€¨À‘”AEE€¨À‘”]YÀ­8)  ‚ñ‚ñ#À­8)€¨À‘”€¨À‘¤ÀŸT) UU€¤UUUUÀŸTU)€¨À‘”]E€¨À‘¤€¨À‘¤]U€¨À‘”AEE]U€¨À‘”AEE€¨À‘”AEE%]€¨À‘”À‘4€¨€…À­8YÀ­8€¨€…YÀ­8€¨À‘”Y YÀ­8Y€¨À‘”À­8 €±ÀµÄ€¨À‘¨À­8ÀµÄÀµÌUYYÀ¶€¨À‘”À­8 ]À¶€¨À‘”À­8À‘(eAÀ‘(E AÀ‘( AÀ‘(À‘(À‘(À‘(a À‘(À‘(À‘(À‘( À‘( À‘(À‘( À‘(À‘( À­8 À‘, À‘0 ] À‘4À‘4 À‘4 Y€½ €½€½Y€½€½1€½Y€½ €½ Y€½ 1€½ Y€½ €½„-€½ €…E€½ U€…ÀµÌ: A‚ýÀ‘4À­8ÀµÌ€½€…Y€½U€…ÀµÌ U€…ÀµÌ 1U€…ÀµÌ U€…ÀµÌ YU€…ÀµÌ À‘T À‘\ À­8 À‘d €… €µ U €½UU €½€½À‘xÀ‘x!À‘x€í€½À¶e€í€½À‘xeAÀ‘xE AÀ‘x AÀ‘x e€í€½ €í€½À¶À‘„À‘xÀ‘„À‘„À‘xÀ‘xÀ‘x€í€½À¶€í€½À‘„€í€½À¶À¶ ]À¶€½À‘„e€í€½€í€½ ]€½À‘„e€í€½ À‘xAÀ‘„À‘„À‘xÀ‘x À‘x\WMicrosoft.FSharp.Compiler.ExtensionTyping+ProvidedTypeContext+_NoEntries@DebugTypeProxy(€í€½À¶(e€í€½ €í€½À¶e€í€½ €í€½À¶ e€í€½YTMicrosoft.FSharp.Compiler.ExtensionTyping+ProvidedTypeContext+Entries@DebugTypeProxyÀ‘€ À‘€ À‘„ Ae€í€½ ‚!€½ %€½ U€½ ‚!€½%€½U€½8€í€½€í€½‚!€½E%€½U€½%€½ €í€½E(À‘¨(À‘”(€½À‘”(À‘x €½À‘x ) À‘¨ À‘” €Ñõ À‘´ õ À‘¼ õ À‘¼ €ýõ À‘¸ €ýõ À‘¸ õ À‘À 5õ À‘° 5õ À‘° €½õ €½õ À‘” À‘”  €½ À‘¤€… €½€½ À‘”€…À‘”À‘x€½À‘”À‘x€½À‘”€½ À‘”À‘”À‘x€½ À‘”€½À‘” ] À‘xÀ‘”À‘”À‘x€¨À‘”€¨À‘” €… ]u€… €… À‘˜ ]Y]€…A€½A€éA€½A€éÀ‘˜A€…€é„ „À‘x(   À‘xÀ‘¤À‘x À‘¤ À‘¤À‘¤À‘x   À‘¤ À‘¤À‘¤(€µ €µÀ‘x €µ €…À‘¨À‘x€µ À‘¨À‘¨(€ù€ù €ùÀ‘x   À‘¤ €ùAÀ‘¬u uAÀ‘¬u €¨À‘¬ AÀ‘¬€ù €ùAÀ‘¬€ù€¨À‘¬€¨À‘¬(55 5À‘xÀ‘°À‘x5À‘°5 À‘°À‘°À‘x5 5À‘° À‘°À‘°(€Ñ €ÑÀ‘xÀ‘´À‘x€ÑÀ‘´€Ñ À‘´À‘´À‘x€Ñ À‘´À‘´(€ý€ý €ýÀ‘x À‘´À‘¸À‘x€ýÀ‘¸€ý À‘¸À‘¸À‘x€ý €ýÀ‘¸ À‘¸À‘¸AÀ‘¸uAÀ‘¸u €¨À‘¸ AÀ‘¸€ý €ýAÀ‘¸€ý€¨À‘¸€¨À‘¸( À‘xÀ‘¼À‘xÀ‘¼ À‘¼À‘¼À‘x À‘¼ À‘¼À‘¼AÀ‘¼uAÀ‘¼u €¨À‘¼ AÀ‘¼ AÀ‘¼€¨À‘¼€¨À‘¼( À‘xÀ‘ÀÀ‘xÀ‘À À‘ÀÀ‘ÀÀ‘xÀ‘À À‘ÀÀ‘À „ €õ]€õ ]€õ€ñ €½€é ]] ]€õ €õ €õ1€õ €õ €õ] €õ Y]€é]€õ]€õ] ]€ñ]€õ] ]€ñ €ñ €ñ1€ñ €ñ €ñ €ñ u€éY€õY€õY€õ€õY€õ] ]€éA€…€é! A€…€éA€½A€é €éY] €éA€½A€é €éu €éÀ‘¨ uÀ‘¬ €ùÀ‘¬ uÀ‘¸ €ýÀ‘¸ uÀ‘¼ À‘¼ À‘” €é€…À‘  À‘  À‘¤(  À‘x  À’(À‘x À’(À’(À‘x À’(À’((„1 „1À‘x „1À’,À‘x„1 €½] À’,À‘”À’,„1 À’,À’,À‘x„1 À’,À’, Y À’(Y  Y À’(1 Y Y 1À’( À’( YÀ’( YÀ’, À’,À’,YÀ’, 1À’, YÀ’, „1 YÀ’, 1 Y  À­8€¨À‘”YY€¨À‘¸€› À­8€¨À‘”€¨À‘´€¨À‘¼€¨À‘°€¨À‘¸€¨À‘ÀY€¨À‘´Y€¨À‘¼Y€¨À‘°Y€¨À‘¸Y€¨À‘À€¨À‘  À‘”À‘´ À‘”À‘¼ À‘”À‘° À‘”À‘¸Y€¨À‘¸ Y€¨À‘¸ À‘”À‘À 1€¨À‘  €¨À‘  Y€¨À‘  À‘  À‘”À‘  À‘¤ €½ À‘”€¹+ À‘4À­8A€¨€¹]€¨À‘”€¨À‘”]EAAE ]€¨À‘”€¨€¹ À‘”€…À‘¤À‘”€…À‘¤U] U]UÀ‘”€… U]U] U]UU] ]U" U]]‚ñ‚ñ] ]UUU] Y À‘”UÀ‘”€… À­8Y€¨À‘” À‘”€½ €±À‘¨ ]À¶À‘”À“TÀ¶À¶YÀ“T À¶À¶YÀ“TeAÀ“TE AÀ“T AÀ“T YÀ“T#À“TÀ“TaYÀ“TYÀ“T À“T%À“TÀ“TÀ“TYÀ“TYÀ“TÀ“T#À“TÀ“TÀ“TYÀ“TYÀ“T YÀ“T À“TÀ“T À“TÀ“T(€íÀ¶À¶€íÀ¶À¶ €íÀ¶À¶ €íÀ¶À¶ €íÀ¶À¶À“XÀ“X À“X=€½À™HÀš$YY YY À“ÀÀ­8À“ÀYYÀ“À YÀ“À1 YÀ“ÀYÀ“ÀÀ“ÀYÀ“À À“ÀÀ­8YÀ“ÀÀ­8Y À–XÀ­8YÀ“ÀYÀ­8À–XÀ­8YÀ–XÀ­8À“À]€ÕÀ˜H À˜(À“À À˜(À“À%À–ÐÀ“Ä]€ÕÀ˜HÀ–ÌÀ“À)]€À“Ä]€ÕÀ˜HÀ­8À–XÀ–ÐYÀ“ÀÀ“À]À“ÀÀ–X À–¬À–X ÀšÀ•ØÀ˜]À”¼À“À À˜À“ÀÀ˜À“Ä]À”¼À­8À˜´YÀ“ÀYÀ˜À˜]À˜À˜ À˜¼À˜˜ ]EÀ˜À–`À–XÀ­8]À­8À­8(]€À–XÀ­8]À­8À­8À–X€]€ÕÀ˜HÀ“ÀÀ–XUÀ˜(]AÀ–XÀ–XÀ˜Ì€]€ÕÀ˜HÀ“ÀÀ–X]AÀ–XÀ–XUÀ˜(]AÀ–XÀ–X€”À­8€]€ÕÀ˜HÀ“ÀÀ–XÀ˜´YÀ“ÀÀ“À]€ÕÀ˜HÀ–XÀ˜¤À•ØÀ˜UÀ˜(]AÀ–XÀ–XÀ˜(À˜¨YÀ™8À˜ À˜Ì'UÀ˜(]AÀ–XÀ–XÀ›ðÀ˜ ]A ]A]A]A A Àœ ]AA]AA']A]A]A UYÀ˜(]AÀ–XÀ–X" À˜UÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–X< UÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–X€ À­8UÀ˜(]AÀ–XÀ–XÀ˜(À˜À˜¤À•ØUÀ˜x]AÀ–XÀ–XÀ˜xÀ˜¸YÀ˜UYÀ˜(]AÀ–XÀ–XÀ˜¼À˜˜'UÀ˜x]AÀ–XÀ–XÀ›ðÀ˜4UÀ˜x]AÀ–XÀ–XÀ˜x]AÀ–XÀ–X UÀ˜xÀ–XÀ›ðÀ˜À–XUÀ˜x]AÀ–XÀ–XÀ˜ À˜UYÀ˜xÀ–X À˜xÀ–X4UYÀ˜xÀ–XYÀ˜xÀ–XYÀ˜xYÀ˜x-UYÀ˜xÀ–XÀ›ðÀ­8YÀ˜À–X pÀ¯´À·¼À·¼X`À·¼À­8À¶X` À¶À­8À–XÀ­8À–XÀ–XÀ–XÀ­8À–XÀ–XÀ–XÀ­8À–XÀ–XÀ–X!À–XÀ­8À–XÀ–XÀ–XÀ–X&À–XÀ­8À–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ­8À­8À–XYÀ“ÀÀ­8À–XÀ–XÀ–XÀ­8À–XÀ–XÀ–XÀ–XÀ­8 À–XÀ–XÀ–XÀ–XÀ–XÀ­8%À–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ­8*À–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ­8À–XÀ­8À–XÀ–XÀ–XÀ–XÀ­8À­8À–XÀ–X À–XÀ­8À­8À–XÀ–XÀ–X*À–XÀ­8À­8À–XÀ–XÀ–XÀ–XÀ–X4 À–XÀ­8À­8À–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–X > À–XÀ­8À­8À–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–XÀ–X$$À–pYÀ–XYÀ–XYÀ–XÀ–XÀ­8À–X: À–¬À–¬]À“ÀÀ“ÀÀ–XÀ–XÀ–¬À–ÐÀ“ÄÀ–ØÀ–XÀ–XÀ–XÀ­8EUÀ–ØÀ“ÄÀ–XÀ–àÀ­8À­8YÀ–XÀ—0YÀ“ÀÀ–¬À–¬]À“ÀÀ“ÀÀ–X.À­8]€À“Ä]€ÕÀ˜HÀ­8À“ÄÀ–XÀ–XÀ–X.À–XÀ–ÐYÀ“ÀYÀ­8À“ÀÀ–ØÀ­8À–XÀ­8À­8À–XÀ“ÀÀ–XÀ­8À­8À–X À–XÀ›ðÀ­8YÀ˜À–X À–XÀ­8UÀ–X]À™D UYÀ˜`À–XÀ–XUÀ–X]À™D5À–XUÀ–X]À™D]Àœ À­8À•ØYÀ™8=UÀ–X]À™DYUYÀ˜`À–XÀ–XÀ­8]Àœ À™<UÀ–X]À™Da À™@À“˜À˜]À”¼À­8À•T]Àœ À–XÀ­8YUYÀ˜`À–XYÀ™8]À™H À™HÀ™LÀ™HÀš$ À­(T À­8TTÀ­8X À­8h À­8h À­8h) À›ð) À›ðhhAÀ™@YÀ™4AÀ™@]À–X4 uUÀ“Ä]À–X]UÀ­8]À­(À–X€ç AÀ–XÀ–XÀ–èÀ–XÀ–ÜÀ—4À—À–¬YÀ–XÀ–xYuUÀ“Ä]À–X]UÀ­8]À­(À–€YÀ™0YÀ™@À–ŒÀ–„À–ˆÀ–XÀ–œÀ–˜À– YÀ™4À–´À–¸À–¼À–ÄÀ–È]À–XÀ–àÀ–äÀ–ìÀ— AÀ™@À–X AÀ™@AÀ™@AÀ™@=UÀ­( =À­( eÀ­(eUÀ­(=UÀ­( =À­( À­( UÀ­( UÀ­( À­( UÀ­(À­(eUÀ­( eÀ­( UÀ­( À­( UÀ­(@UÀ­(À­(À­(UÀ­(]UÀ­( À­( À­(À­(À“h À“hAA À­(E À“hÀ­(À­( UÀ­( AUÀ­(UÀ­( UÀ­(E UÀ­( À­(À“Œ À“ŒeAÀ“ŒE AÀ“Œ AÀ“Œ À“ŒÀ“Œ À“ŒÀ“ŒÀ“ŒÀ“ŒÀ“ŒÀ“ŒÀ“ŒÀ“ŒÀ“Œ Y À“ŒÀ“Œ À“ŒÀ“ŒÀ“˜À“˜À“˜À“˜À“˜À­(À“hÀ“˜À“˜eAÀ“˜E AÀ“˜ AÀ“˜À“ À“¤ À“hÀ“ À“¤À“˜6 À“˜À“ À“ À“˜À“˜À“¤À“¤À“˜À“˜À“˜'À“ À“˜À“˜À“¤À­(À“hÀ“˜À“˜À“hÀ­(' À“ À“ À“¤À“¤À“˜À“˜À“˜ À“˜(À“˜ À“˜À“˜ À“˜GBMicrosoft.FSharp.Compiler.Ast+PreXmlDoc+PreXmlMerge@DebugTypeProxy(À“h À­(À“h À“hE@Microsoft.FSharp.Compiler.Ast+PreXmlDoc+PreXmlDoc@DebugTypeProxyKFMicrosoft.FSharp.Compiler.Ast+PreXmlDoc+_PreXmlDocEmpty@DebugTypeProxy À“  À“¤À“¨ À“¨À“¸À“¸À“¸eAÀ“¸E AÀ“¸ AÀ“¸ À“¸ À“¸ À“¸À“¸ {idText} (YÀ­8À“ÄYÀ“ÀYÀ­8 YÀ“ÀYÀ­8 YÀ­8eAÀ“ÄE AÀ“Ä AÀ“Ä0YÀ“ÀYÀ­8À­8À“ÀYÀ“ÀYÀ­8YÀ“ÀYÀ­80YÀ“ÀÀ“ÀYÀ“ÀYÀ­8YÀ­8À­8À“ÈÀ“ÈeAÀ“ÈE AÀ“È AÀ“È À“È À“È À“ÈÀ“ÐÀ“ÀÀ“È À“ÀÀ“ÈeAÀ“ÐE AÀ“Ð AÀ“ÐÀ“ÔÀ“ÔÀ“ÔÀ“ÔÀ“ÔÀ“ÔÀ“ÔÀ“ÔÀ“Ô À“Ô À“Ô À“Ô À“Ô À“Ô À“ԃŠÀ“ÔU À“ÔÀ­8À“ÔÀ­8 À“ÔÀ“ÔÀ“ÔÀ”|eAÀ“ÔE AÀ“Ô AÀ“Ô À­8À­8?:Microsoft.FSharp.Compiler.Ast+SynConst+Bool@DebugTypeProxy@;Microsoft.FSharp.Compiler.Ast+SynConst+SByte@DebugTypeProxy?:Microsoft.FSharp.Compiler.Ast+SynConst+Byte@DebugTypeProxy@;Microsoft.FSharp.Compiler.Ast+SynConst+Int16@DebugTypeProxyAMicrosoft.FSharp.Compiler.Ast+SynMeasure+Divide@DebugTypeProxy À”|À­8B=Microsoft.FSharp.Compiler.Ast+SynMeasure+Power@DebugTypeProxyAMicrosoft.FSharp.Compiler.Ast+SynType+LongIdent@DebugTypeProxy (]À­82 À•Ø]À­8YÀ•ØYÀ­8]À­8À­8=8Microsoft.FSharp.Compiler.Ast+SynType+App@DebugTypeProxy6 À•ØÀ“Ä]À­8YÀ•ØYÀ­8]À­8À­8FAMicrosoft.FSharp.Compiler.Ast+SynType+LongIdentApp@DebugTypeProxy(YUÀ•Ø YUÀ•ØÀ­8 YUÀ•Ø?:Microsoft.FSharp.Compiler.Ast+SynType+Tuple@DebugTypeProxy À•ØÀ­8?:Microsoft.FSharp.Compiler.Ast+SynType+Array@DebugTypeProxy À•ØÀ•ØÀ­8=8Microsoft.FSharp.Compiler.Ast+SynType+Fun@DebugTypeProxy=8Microsoft.FSharp.Compiler.Ast+SynType+Var@DebugTypeProxy>9Microsoft.FSharp.Compiler.Ast+SynType+Anon@DebugTypeProxy (YÀ•x À•ØYÀ•xÀ­8 YÀ•xOJMicrosoft.FSharp.Compiler.Ast+SynType+WithGlobalConstraints@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Ast+SynType+HashConstraint@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Ast+SynType+MeasureDivide@DebugTypeProxy À•ØÀ­8FAMicrosoft.FSharp.Compiler.Ast+SynType+MeasurePower@DebugTypeProxy À“ÔÀ­8HCMicrosoft.FSharp.Compiler.Ast+SynType+StaticConstant@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Ast+SynType+StaticConstantExpr@DebugTypeProxyMHMicrosoft.FSharp.Compiler.Ast+SynType+StaticConstantNamed@DebugTypeProxy À•à À•ä À•è À•ì À•ð À•ô À•ø À•ü À– À– À– À–  À– À– À–À–XÀ–XÀ­8]À­8À­8À–XÀ–XÀ–XÀ­8À–XÀ“ÔÀ­8À–XÀ–XÀ•ØÀ­8À–XYÀ–XYÀ­8À­8À–XYÀ–XÀ­8€À–X]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(À­8À–XÀ•ØÀ–XÀ­8>À–XÀ•Ø]UÀ–X]À“ÀYÀ™@YÀ™0À­8À­8À–XÀ•<À–XÀ–XÀ­8&À–XÀ•$À•dÀ˜À–XÀ–XÀ­8À–XÀ–XÀ­8À–X€ÕÀ–XÀ­8À–XÀ˜xÀ–XÀ­8 À–XÀ­8YÀ™4À•TÀ­8 À–XÀ•TÀ–XYÀ™4À­8À–XÀ–XÀ­8À–XÀ•hÀ–XÀ–XÀ­86À–XÀ–XÀ­8YÀ•ØYÀ­8]À­8À­8À­8À–XYÀ™@À–XÀ­8.À–XÀ–XÀ­8YÀ™4À­8À­8À”ÔÀ”ô À–XÀ–XÀ–XÀ­8À”ÔÀ• À–XÀ”ÌÀ–XÀ–XÀ­8*À–XÀ–XÀ–X]À–XÀ•TÀ­8À­8 À–XÀ“À À–XÀ“Ä]€ÕÀ˜HÀ­8À–XÀ“ÄÀ–XÀ­8À–XÀ–XÀ­8À“ÄÀ­8À–XÀ–XÀ“ÄÀ–XÀ­8À–XÀ–XYÀ–XÀ­8À­8)À–XÀ–XYÀ–XÀ–XÀ­8À­8À­8À–XÀ“ÄÀ–XÀ–XÀ­8 À–XÀ–XÀ“ÄÀ–XÀ–XÀ­8À–XÀ–XÀ­8À­8À–XYÀ“ÐÀ™TÀ–XÀ­8À–XÀ–XÀ­8À–XÀ­8À–XUÀ–XÀ­8"À–XÀ•TÀ˜À–XÀ–XÀ­8-À–XÀ·¼YÀ•ØYÀ–XYÀ•ØÀ­8À–XYÀ˜`À–XÀ–XÀ­8À–XÀ–XYÀ“ÀÀ­8 À–XÀ–XYÀ“ÀÀ–XÀ­8eAÀ–XE AÀ–X AÀ–X À­8À–Ì%À­8À–ØÀ“ÄÀ–XÀ–ÐÀ—@À–Ì*À­8À–XÀ–ŒÀ˜À­(À­(À­8À–Ì À–XÀ­8]À­8À­8?:Microsoft.FSharp.Compiler.Ast+SynExpr+Paren@DebugTypeProxy À–XÀ–XÀ­8?:Microsoft.FSharp.Compiler.Ast+SynExpr+Quote@DebugTypeProxy?:Microsoft.FSharp.Compiler.Ast+SynExpr+Const@DebugTypeProxy À–XÀ•ØÀ­8?:Microsoft.FSharp.Compiler.Ast+SynExpr+Typed@DebugTypeProxy (YÀ–X YÀ–XYÀ­8À­8 YÀ–X?:Microsoft.FSharp.Compiler.Ast+SynExpr+Tuple@DebugTypeProxy YÀ–XÀ­8E@Microsoft.FSharp.Compiler.Ast+SynExpr+ArrayOrList@DebugTypeProxy5(]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8!(]UÀ–XUÀ­8]À­(3(YuUÀ“Ä]À–X]UÀ­8]À­(€‹ ]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8]UÀ–XUÀ­8]À­(YuUÀ“Ä]À–X]UÀ­8]À­(À­85 ]€áÀ•ØÀ–XÀ­8]UÀ­8]À­(À­8! ]UÀ–XUÀ­8]À­(3 YuUÀ“Ä]À–X]UÀ­8]À­(@;Microsoft.FSharp.Compiler.Ast+SynExpr+Record@DebugTypeProxy À•ØÀ–XÀ­8=8Microsoft.FSharp.Compiler.Ast+SynExpr+New@DebugTypeProxy(]UÀ–X]À“À (YÀ™0: À•Ø]UÀ–X]À“ÀYÀ™@YÀ™0À­8À­8 ]UÀ–X]À“À YÀ™0A9Microsoft.FSharp.Compiler.Ast+SynExpr+Lazy@DebugTypeProxy À”ÌÀ–XÀ–XÀ­8D?Microsoft.FSharp.Compiler.Ast+SynExpr+Sequential@DebugTypeProxy (]À–X& À–XÀ–X]À–XÀ•TÀ­8À­8 ]À–XD?Microsoft.FSharp.Compiler.Ast+SynExpr+IfThenElse@DebugTypeProxy?:Microsoft.FSharp.Compiler.Ast+SynExpr+Ident@DebugTypeProxy(]€ÕÀ˜H À“Ä]€ÕÀ˜HÀ­8 ]€ÕÀ˜HC>Microsoft.FSharp.Compiler.Ast+SynExpr+LongIdent@DebugTypeProxy À“ÄÀ–XÀ­8FAMicrosoft.FSharp.Compiler.Ast+SynExpr+LongIdentSet@DebugTypeProxy À–XÀ­8À“ÄÀ­8@;Microsoft.FSharp.Compiler.Ast+SynExpr+DotGet@DebugTypeProxy À–XÀ“ÄÀ–XÀ­8@;Microsoft.FSharp.Compiler.Ast+SynExpr+DotSet@DebugTypeProxy     À–XYÀ–XÀ­8À­8GBMicrosoft.FSharp.Compiler.Ast+SynExpr+DotIndexedGet@DebugTypeProxy!!!!!!% À–XYÀ–XÀ–XÀ­8À­8À­8GBMicrosoft.FSharp.Compiler.Ast+SynExpr+DotIndexedSet@DebugTypeProxy"""" À“ÄÀ–XÀ–XÀ­8QLMicrosoft.FSharp.Compiler.Ast+SynExpr+NamedIndexedPropertySet@DebugTypeProxy##### À–XÀ“ÄÀ–XÀ–XÀ­8TOMicrosoft.FSharp.Compiler.Ast+SynExpr+DotNamedIndexedPropertySet@DebugTypeProxy$$$B=Microsoft.FSharp.Compiler.Ast+SynExpr+TypeTest@DebugTypeProxy%%%@;Microsoft.FSharp.Compiler.Ast+SynExpr+Upcast@DebugTypeProxy&&&B=Microsoft.FSharp.Compiler.Ast+SynExpr+Downcast@DebugTypeProxy''HCMicrosoft.FSharp.Compiler.Ast+SynExpr+InferredUpcast@DebugTypeProxy(JEMicrosoft.FSharp.Compiler.Ast+SynExpr+InferredDowncast@DebugTypeProxy>9Microsoft.FSharp.Compiler.Ast+SynExpr+Null@DebugTypeProxy**** À–XÀ­8À­8C>Microsoft.FSharp.Compiler.Ast+SynExpr+AddressOf@DebugTypeProxy++++ YÀ“ÐÀ™TÀ–XÀ­8C>Microsoft.FSharp.Compiler.Ast+SynExpr+TraitCall@DebugTypeProxy,,,, À–XÀ­8À–XÀ­8@;Microsoft.FSharp.Compiler.Ast+SynExpr+JoinIn@DebugTypeProxy-FAMicrosoft.FSharp.Compiler.Ast+SynExpr+ImplicitZero@DebugTypeProxy(U... UÀ–XÀ­8 UGBMicrosoft.FSharp.Compiler.Ast+SynExpr+YieldOrReturn@DebugTypeProxy///KFMicrosoft.FSharp.Compiler.Ast+SynExpr+YieldOrReturnFrom@DebugTypeProxy0000000 À•TÀ˜À–XÀ–XÀ­8FAMicrosoft.FSharp.Compiler.Ast+SynExpr+LetOrUseBang@DebugTypeProxy11@;Microsoft.FSharp.Compiler.Ast+SynExpr+DoBang@DebugTypeProxy(À·¼22222) À·¼YÀ•ØYÀ–XYÀ•ØÀ­8 À·¼OJMicrosoft.FSharp.Compiler.Ast+SynExpr+LibraryOnlyILAssembly@DebugTypeProxy (YÀ˜`3333 YÀ˜`À–XÀ–XÀ­8 YÀ˜`WRMicrosoft.FSharp.Compiler.Ast+SynExpr+LibraryOnlyStaticOptimization@DebugTypeProxy4444 À–XYÀ“ÀÀ­8VQMicrosoft.FSharp.Compiler.Ast+SynExpr+LibraryOnlyUnionCaseFieldGet@DebugTypeProxy55555 À–XYÀ“ÀÀ–XÀ­8VQMicrosoft.FSharp.Compiler.Ast+SynExpr+LibraryOnlyUnionCaseFieldSet@DebugTypeProxy66MHMicrosoft.FSharp.Compiler.Ast+SynExpr+ArbitraryAfterError@DebugTypeProxy77HCMicrosoft.FSharp.Compiler.Ast+SynExpr+FromParseError@DebugTypeProxy88b]Microsoft.FSharp.Compiler.Ast+SynExpr+DiscardAfterMissingQualificationAfterDot@DebugTypeProxy À–` À–d À–h À–l À–p À–t À–x À–| À–€ À–„ À–ˆ À–Œ À– À–” À–˜ À–œ À–  À–¤ À–¨ À–¬ À–° À–´ À–¸ À–¼ À–À À–Ä À–È À–Ì À–Ð À–Ô À–Ø À–Ü À–à À–ä À–è À–ì À–ð À–ô À–ø À–ü À—À— À— À— À—  À—À— À— À— À— À—  À—$ À—( À—, À—0 À—4 À—8 À—< À—@"À˜(À“À]€ÕÀ˜HÀ­8À˜(À˜(À•ØÀ­8À˜(À˜(YÀ™8À­8eAÀ˜(E AÀ˜( AÀ˜( À“À]€ÕÀ˜HÀ­8A9Microsoft.FSharp.Compiler.Ast+SynPat+Const@DebugTypeProxy=8Microsoft.FSharp.Compiler.Ast+SynPat+Wild@DebugTypeProxy À˜À“À]À”¼À­8>9Microsoft.FSharp.Compiler.Ast+SynPat+Named@DebugTypeProxy À˜À•ØÀ­8>9Microsoft.FSharp.Compiler.Ast+SynPat+Typed@DebugTypeProxy À˜YÀ™8À­8?:Microsoft.FSharp.Compiler.Ast+SynPat+Attrib@DebugTypeProxy À˜À˜À­8;6Microsoft.FSharp.Compiler.Ast+SynPat+Or@DebugTypeProxy (YÀ˜ YÀ˜À­8 YÀ˜=8Microsoft.FSharp.Compiler.Ast+SynPat+Ands@DebugTypeProxy (]Àš$1 À“Ä]À“À]Àš$YÀ˜]À”¼À­8 ]Àš$B=Microsoft.FSharp.Compiler.Ast+SynPat+LongIdent@DebugTypeProxy>9Microsoft.FSharp.Compiler.Ast+SynPat+Tuple@DebugTypeProxy À˜À­8>9Microsoft.FSharp.Compiler.Ast+SynPat+Paren@DebugTypeProxy YÀ˜À­8D?Microsoft.FSharp.Compiler.Ast+SynPat+ArrayOrList@DebugTypeProxy!(YUUYÀ“ÀÀ“ÀÀ˜' YUUYÀ“ÀÀ“ÀÀ˜À­8! YUUYÀ“ÀÀ“ÀÀ˜?:Microsoft.FSharp.Compiler.Ast+SynPat+Record@DebugTypeProxy=8Microsoft.FSharp.Compiler.Ast+SynPat+Null@DebugTypeProxy À“ÀÀ­8D?Microsoft.FSharp.Compiler.Ast+SynPat+OptionalVal@DebugTypeProxy?:Microsoft.FSharp.Compiler.Ast+SynPat+IsInst@DebugTypeProxyB=Microsoft.FSharp.Compiler.Ast+SynPat+QuoteExpr@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Ast+SynPat+DeprecatedCharRange@DebugTypeProxy$ À“ÀÀ“À]À“À]À”¼À­8GBMicrosoft.FSharp.Compiler.Ast+SynPat+InstanceMember@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Ast+SynPat+FromParseError@DebugTypeProxy À˜˜ À˜œ À˜  À˜¤ À˜¨ À˜¬ À˜° À˜´ À˜¸ À˜¼ À˜À À˜ÄÀ˜È À˜È À˜Ì À˜ÐÀ˜Ô À˜Ô À˜Ø À˜ÜÀ˜à À˜àÀ™0À•ØYÀ™@À­8 À•ØYÀ™@À­8eAÀ™0E AÀ™0 AÀ™0$À™4À˜]À–XÀ–XÀ­8À”Ä À˜]À–XÀ–XÀ­8À”ÄeAÀ™4E AÀ™4 AÀ™4]À–XÀ–X]À–XÀ–X#À­8]À–XÀ–X]À–XÀ–X À“ÄÀ–X]À“ÀÀ­8 (]À™H(ÀšÀ™<]À™HÀš]À“À ]À™HÀš]À“À ]À™H ÀšeAÀ™<E AÀ™< AÀ™<G À™@]À”¼À•lYÀ™8À“˜À™<À˜]À™DÀ–XÀ­8À•TC ]À”¼À•lYÀ™8À“˜À™<À˜]À™DÀ–XÀ­8À•TeAÀ™@E AÀ™@ AÀ™@À™DÀ•ØÀ­8YÀ™8 À•ØÀ­8YÀ™8eAÀ™DE AÀ™D AÀ™D(À™L À™L À™LÀ™HÀ™LÀ™L À™HÀ™HÀ™LÀ™LeAÀ™LE AÀ™L À™L À™LÀ™TÀšÀ™HÀ­8À™TÀ•ØÀ­8À™TÀšÀ­8À™TÀš À­8eAÀ™TE AÀ™T AÀ™T(Àš ÀšÀ™HÀ­8 ÀšE@Microsoft.FSharp.Compiler.Ast+SynMemberSig+Member@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Ast+SynMemberSig+Interface@DebugTypeProxyFAMicrosoft.FSharp.Compiler.Ast+SynMemberSig+Inherit@DebugTypeProxy(Àš ÀšÀ­8 ÀšGBMicrosoft.FSharp.Compiler.Ast+SynMemberSig+ValField@DebugTypeProxy(Àš Àš À­8 Àš IDMicrosoft.FSharp.Compiler.Ast+SynMemberSig+NestedType@DebugTypeProxy À™\ À™` À™d À™h À™lÀ™„À™„À™„À•ØÀšeAÀ™„E AÀ™„ AÀ™„ À•ØÀšOJMicrosoft.FSharp.Compiler.Ast+SynTypeDefnKind+TyconDelegate@DebugTypeProxy À™ŒÀ™”]À”¼YÀ™ØÀ­8À™”YÀ™ÔÀ­8À™”]À”¼YÀšÀ­8VÀ™”À™„YuÀ•ØÀ­8]À“ÀYUÀšÀ™HYÀš]YÀ˜(À­8À™”À¶À­8À™”À“¸À•ØÀ­8 À™”À­8eAÀ™”E AÀ™” AÀ™” (YÀ™Ø ]À”¼YÀ™ØÀ­8 YÀ™ØMHMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+Union@DebugTypeProxy (YÀ™Ô YÀ™ÔÀ­8 YÀ™ÔLGMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+Enum@DebugTypeProxy (YÀš ]À”¼YÀšÀ­8 YÀšNIMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+Record@DebugTypeProxy(À™„(YuÀ•ØÀ­8]À“À(YUÀšÀ™H(]YÀ˜(R À™„YuÀ•ØÀ­8]À“ÀYUÀšÀ™HYÀš]YÀ˜(À­8 À™„ YuÀ•ØÀ­8]À“À YUÀšÀ™H ]YÀ˜(OJMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+General@DebugTypeProxy À¶À­8]XMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+LibraryOnlyILAssembly@DebugTypeProxy(À“¸ À“¸À•ØÀ­8 À“¸RMMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+TypeAbbrev@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSimpleRepr+None@DebugTypeProxy À™œ À™  À™¤ À™¨ À™¬ À™°À™´ À™´$À™ÔYÀ™8À“ÀÀ“ÔÀ“˜À­8 YÀ™8À“ÀÀ“ÔÀ“˜À­8eAÀ™ÔE AÀ™Ô AÀ™Ô(À™Ü-À™ØYÀ™8À“ÀÀ™ÜÀ“˜]À”¼À­8) YÀ™8À“ÀÀ™ÜÀ“˜]À”¼À­8 À™ÜeAÀ™ØE AÀ™Ø AÀ™ØÀ™ÜYÀšÀ™ÜUÀ•ØÀšÀ™ÜeAÀ™ÜE AÀ™Ü AÀ™Ü YÀšRMMicrosoft.FSharp.Compiler.Ast+SynUnionCaseType+UnionCaseFields@DebugTypeProxy(UÀ•ØÀš UÀ•ØÀš UÀ•ØÀšTOMicrosoft.FSharp.Compiler.Ast+SynUnionCaseType+UnionCaseFullType@DebugTypeProxy À™ä À™èÀ™ôÀ™„YÀ™TÀ­8À™ôÀ™”À­8À™ôeAÀ™ôE AÀ™ô AÀ™ô (YÀ™T À™„YÀ™TÀ­8 YÀ™TPKMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSigRepr+ObjectModel@DebugTypeProxyKFMicrosoft.FSharp.Compiler.Ast+SynTypeDefnSigRepr+Simple@DebugTypeProxy À™ü Àš(À™ôÀš ÀšÀ™ôYÀ™TÀ­8 ÀšÀ™ôYÀ™TÀ­8 À™ôeAÀš E AÀš  AÀš 3ÀšYÀ™8]À“ÀÀ•ØÀ“˜]À”¼À­8/ YÀ™8]À“ÀÀ•ØÀ“˜]À”¼À­8eAÀšE AÀš AÀš (YÀ•t?ÀšYÀ™8YÀ•tYÀ•xYÀ“ÀÀ“˜]À”¼À­8; YÀ™8YÀ•tYÀ•xYÀ“ÀÀ“˜]À”¼À­8 YÀ•teAÀšE AÀš AÀšB ÀšYÀ™8À“ÀÀš$À•ØÀšÀ“˜]À”¼]À–XÀ­8> YÀ™8À“ÀÀš$À•ØÀšÀ“˜]À”¼]À–XÀ­8eAÀšE AÀš AÀš(YYÀš (Àš ÀšYYÀš Àš  YYÀš Àš  YYÀš  Àš eAÀšE AÀš AÀšÀš YÀ™8]À“À YÀ™8]À“ÀeAÀš E AÀš  AÀš Àš$YÀ•tYÀ•x YÀ•tYÀ•xeAÀš$E AÀš$ AÀš$(À™Ø(]YÀ“À5Àš(YÀ™8À™Ø]YÀ“ÀÀ“˜]À”¼À­81 YÀ™8À™Ø]YÀ“ÀÀ“˜]À”¼À­8 À™Ø ]YÀ“ÀeAÀš(E AÀš( AÀš((Àš(Àš,Àš(YÀšLÀ­8 Àš(YÀšLÀ­8 Àš(eAÀš,E AÀš, AÀš,Àš0À™„YÀšLÀ­8Àš0À™”À­8Àš0eAÀš0E AÀš0 AÀš0 À™„YÀšLÀ­8MHMicrosoft.FSharp.Compiler.Ast+SynTypeDefnRepr+ObjectModel@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Ast+SynTypeDefnRepr+Simple@DebugTypeProxy Àš8 Àš<(Àš0ÀšHÀšÀš0YÀšLÀ­8 ÀšÀš0YÀšLÀ­8 Àš0eAÀšHE AÀšH AÀšHÀšLYÀ“ÀÀ­8ÀšLÀ™@À­80ÀšL]À”¼YÀ™8YÀ˜(]À“ÀÀ­8ÀšLÀ•ØÀ–X]À“ÀÀ­8ÀšLYÀ™@À­8ÀšLÀšÀ™HÀ­8ÀšLÀ•Ø]YÀšLÀ­8ÀšLÀ•Ø]À“ÀÀ­8ÀšLÀšÀ­8ÀšLÀšH]À”¼À­8S ÀšLYÀ™8À“À]À•ØÀ™LAÀ™LÀ™HÀ“˜]À”¼À–X]À­8À­8eAÀšLE AÀšL AÀšLD?Microsoft.FSharp.Compiler.Ast+SynMemberDefn+Open@DebugTypeProxy À™@À­8FAMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+Member@DebugTypeProxy, ]À”¼YÀ™8YÀ˜(]À“ÀÀ­8LGMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+ImplicitCtor@DebugTypeProxy À•ØÀ–X]À“ÀÀ­8OJMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+ImplicitInherit@DebugTypeProxy YÀ™@À­8KFMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+LetBindings@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+AbstractSlot@DebugTypeProxy(]YÀšL À•Ø]YÀšLÀ­8 ]YÀšLIDMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+Interface@DebugTypeProxy À•Ø]À“ÀÀ­8GBMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+Inherit@DebugTypeProxyHCMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+ValField@DebugTypeProxy ÀšH]À”¼À­8JEMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+NestedType@DebugTypeProxy (]À•Ø(AÀ™LÀ™H    O YÀ™8À“À]À•ØÀ™LAÀ™LÀ™HÀ“˜]À”¼À–X]À­8À­8 ]À•Ø AÀ™LÀ™HLGMicrosoft.FSharp.Compiler.Ast+SynMemberDefn+AutoProperty@DebugTypeProxyÀšT ÀšT ÀšX Àš\ Àš` Àšd Àšh Àšl Àšp Àšt Àšx Àš|Àš¬À“ÀYÀ“ÀÀ­8Àš¬ÀšYÀš¬À­8Àš¬YÀ™@À­8Àš¬À•TÀ–XÀ­8Àš¬YÀšHÀ­8Àš¬Àš,À­8Àš¬À“ÄÀ­8Àš¬YÀ™8À­8Àš¬À›XÀ­8 Àš¬À›PeAÀš¬E AÀš¬ AÀš¬ À­8ÀšØ À“ÀYÀ“ÀÀ­8LGMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+ModuleAbbrev@DebugTypeProxy (YÀš¬ ÀšYÀš¬À­8 YÀš¬LGMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+NestedModule@DebugTypeProxy YÀ™@À­8C>Microsoft.FSharp.Compiler.Ast+SynModuleDecl+Let@DebugTypeProxy À•TÀ–XÀ­8FAMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+DoExpr@DebugTypeProxy (YÀšH YÀšHÀ­8 YÀšHE@Microsoft.FSharp.Compiler.Ast+SynModuleDecl+Types@DebugTypeProxy(Àš, Àš,À­8 Àš,IDMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+Exception@DebugTypeProxy À“ÄÀ­8D?Microsoft.FSharp.Compiler.Ast+SynModuleDecl+Open@DebugTypeProxy YÀ™8À­8JEMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+Attributes@DebugTypeProxy(À›X À›XÀ­8 À›XMHMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+HashDirective@DebugTypeProxyQLMicrosoft.FSharp.Compiler.Ast+SynModuleDecl+NamespaceFragment@DebugTypeProxy Àš´ Àš¸ Àš¼ ÀšÀ ÀšÄ ÀšÈ ÀšÌ ÀšÐ ÀšÔ ÀšØÀ›Àš(YÀ™TÀ­8 Àš(YÀ™TÀ­8eAÀ›E AÀ› AÀ›À›À“ÀYÀ“ÀÀ­8À›ÀšYÀ›À­8À›ÀšÀ­8À›YÀš À­8À›À›À­8À›YÀ“ÀÀ­8À›À›XÀ­8 À›À›TeAÀ›E AÀ› AÀ› À­8À›,OJMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+ModuleAbbrev@DebugTypeProxy (YÀ› ÀšYÀ›À­8 YÀ›OJMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+NestedModule@DebugTypeProxy ÀšÀ­8FAMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+Val@DebugTypeProxy (YÀš  YÀš À­8 YÀš HCMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+Types@DebugTypeProxy(À› À›À­8 À›LGMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+Exception@DebugTypeProxyGBMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+Open@DebugTypeProxyPKMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+HashDirective@DebugTypeProxy(À›T À›T À›TTOMicrosoft.FSharp.Compiler.Ast+SynModuleSigDecl+NamespaceFragment@DebugTypeProxy À› À› À› À› À›  À›$ À›( À›,6À›PYÀ“ÀYÀš¬À“˜YÀ™8]À”¼À­82 YÀ“ÀYÀš¬À“˜YÀ™8]À”¼À­8eAÀ›PE AÀ›P AÀ›P6À›TYÀ“ÀYÀ›À“˜YÀ™8]À”¼À­82 YÀ“ÀYÀ›À“˜YÀ™8]À”¼À­8eAÀ›TE AÀ›T AÀ›TÀ›XYÀ­8 YÀ­8eAÀ›XE AÀ›X AÀ›XÀ›\YÀš¬À­8 À›\À›P-À›\YÀ“ÀYÀš¬À“˜YÀ™8À­8eAÀ›\E AÀ›\ AÀ›\SNMicrosoft.FSharp.Compiler.Ast+ParsedImplFileFragment+AnonModule@DebugTypeProxyTOMicrosoft.FSharp.Compiler.Ast+ParsedImplFileFragment+NamedModule@DebugTypeProxy) YÀ“ÀYÀš¬À“˜YÀ™8À­8ZUMicrosoft.FSharp.Compiler.Ast+ParsedImplFileFragment+NamespaceFragment@DebugTypeProxy À›d À›h À›lÀ›|YÀ›À­8 À›|À›T-À›|YÀ“ÀYÀ›À“˜YÀ™8À­8eAÀ›|E AÀ›| AÀ›|RMMicrosoft.FSharp.Compiler.Ast+ParsedSigFileFragment+AnonModule@DebugTypeProxySNMicrosoft.FSharp.Compiler.Ast+ParsedSigFileFragment+NamedModule@DebugTypeProxy) YÀ“ÀYÀ›À“˜YÀ™8À­8YTMicrosoft.FSharp.Compiler.Ast+ParsedSigFileFragment+NamespaceFragment@DebugTypeProxy À›„ À›ˆ À›ŒÀ›œYÀš¬À­8À›œÀ›XÀ­8eAÀ›œE AÀ›œ AÀ›œMHMicrosoft.FSharp.Compiler.Ast+ParsedFsiInteraction+IDefns@DebugTypeProxyLGMicrosoft.FSharp.Compiler.Ast+ParsedFsiInteraction+IHash@DebugTypeProxy À›¤ À›¨ (YÀ›X (YÀ›\À›´YÀ›XYÀ›\ YÀ›XYÀ›\ YÀ›X YÀ›\eAÀ›´E AÀ›´ AÀ›´ (YÀ›|À›¸YÀ›XYÀ›| YÀ›XYÀ›| YÀ›|eAÀ›¸E AÀ›¸ AÀ›¸ À›ÈÀ­8eAÀ›ÈE AÀ›È AÀ›ÈÀ›ÈÀ›ÈÀ›ÈÀ›È À›ÈÀ›ÈÀ›È À›ÌÀ“ÀeAÀ›ÌE AÀ›Ì (YÀ›P*À›ÐÀ›ÌYÀ›ÈYÀ›XYÀ›P& À›ÌYÀ›ÈYÀ›XYÀ›P YÀ›PeAÀ›ÐE AÀ›Ð AÀ›Ð (YÀ›T(À›ÔÀ›ÌYÀ›ÈYÀ›XYÀ›T$ À›ÌYÀ›ÈYÀ›XYÀ›T YÀ›TeAÀ›ÔE AÀ›Ô AÀ›Ô À›ØÀ›Ð À›ØÀ›ÔÀ›ØeAÀ›ØE AÀ›Ø AÀ›Ø$À›äÀ­8YÀ›TÀ›àYÀ›P(À›Ð À›Ð À›ÐFAMicrosoft.FSharp.Compiler.Ast+ParsedInput+ImplFile@DebugTypeProxy(À›Ô À›Ô À›ÔE@Microsoft.FSharp.Compiler.Ast+ParsedInput+SigFile@DebugTypeProxy À›à À›ä À˜À­8À–XÀ™4 ]A A Àœ À˜(]AÀ–XÀ–XYÀ˜(]AÀ–XÀ–X@ UYÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–XÀ˜(]AÀ–XÀ–X_ AUYÀ˜(]AÀ–XÀ–XUYÀ˜(]AÀ–XÀ–XUÀ˜(]AÀ–XÀ–X À›ð" UÀ˜(]AÀ–XÀ–XÀ˜BYÀ˜xÀ–XUÀ˜x]AÀ–XÀ–XÀ˜x]AÀ–XÀ–X+ UYÀ˜xÀ–XÀ˜UYÀ˜xÀ–X À­8 À–XÀ˜xÀ–X À¯´X(UÀ•ØÀš Àœ UÀ•ØÀš À­8 UÀ•ØÀš À­8 UÀ•ØÀš eAÀœ E AÀœ  AÀœ  À­8YÀ˜`À–X" AÀ–XÀ–XUYÀ˜`À–XÀœ,Àœ,eAÀœ,E AÀœ, AÀœ, Àœ, Àœ, Àœ,Àœ,(YUÀœ,À­8Àœ4YUÀœ,À­8Àœ4YUÀœ,À­8À­8Àœ4eAÀœ4E AÀœ4 AÀœ4 Àœ<Àœ@K Àœ4Àœ<Àœ<YUÀœ,À­8YUÀœ,À­8Àœ@Àœ@Àœ4Àœ4YUÀœ,À­8 YUÀœ,À­8 YUÀœ,À­8"Àœ<Àœ<Àœ@Àœ@Àœ4Àœ4 Àœ4 YUÀœ,À­8PKMicrosoft.FSharp.Compiler.Ast+LexerEndlineContinuation+Token@DebugTypeProxy YUÀœ,À­8À­8OJMicrosoft.FSharp.Compiler.Ast+LexerEndlineContinuation+Skip@DebugTypeProxy Àœ< Àœ@ÀœLYUÀœ,À­8ÀœLYUÀœ,À­8À­8ÀœLYUÀœ,À­8À­8 ÀœLÀœ4eAÀœLE AÀœL AÀœLYUÀœ,À­8Àœ€SNMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+Token@DebugTypeProxyWRMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+IfDefSkip@DebugTypeProxy YUÀœ,À­8À­8TOMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+String@DebugTypeProxy\WMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+VerbatimString@DebugTypeProxy_ZMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+TripleQuoteString@DebugTypeProxyUPMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+Comment@DebugTypeProxy_ZMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+SingleLineComment@DebugTypeProxy]XMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+StringInComment@DebugTypeProxye`Microsoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+VerbatimStringInComment@DebugTypeProxyhcMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+TripleQuoteStringInComment@DebugTypeProxyTOMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+MLOnly@DebugTypeProxy(Àœ4 Àœ4 Àœ4UPMicrosoft.FSharp.Compiler.Ast+LexerWhitespaceContinuation+EndLine@DebugTypeProxy ÀœT ÀœX Àœ\ Àœ` Àœd Àœh Àœl Àœp Àœt Àœx Àœ| Àœ€ À­8€í‚ñ‚ñ À­8 €íU  €íU U À­8 AÀ™@0 YÀ™0À™0YÀ™0À™@YÀ™@À™@ 1À™@ YÀ™@À“hXÀ­(À“˜XÀ­8Àš YÀš ÀšÀ™<Àš YÀš ÀšÀš AÀš  AÀš  ÀšÀš*Àš YYÀš YYÀš YÀš YÀšYÀ™8Àš + À˜0À“ÀÀ˜4À˜8YÀ™8À˜(À˜(Àš YÀ™8À˜(À˜„À˜€YÀ™8YÀš À˜xYÀš À˜ YÀš YÀš YYÀš YYÀš YYÀš YYÀ™LYYÀ–˜À˜xÀ–XYYÀš À–X ]Àœ Àš ]Àœ ÀšÀ™< À˜YÀš i YYÀš ]À˜YÀ˜Àš ]À™HÀ™HYYÀš YYÀš YYÀš YYÀš 'À™<]À™H]À˜]Àœ À–X Àš AÀš  YÀš  YÀš YÀš  YÀš À˜ À˜into,A,A,,À@Y<,,4 ,,, ,,,A,A,,,,,A,A,,,,Y,Y,,,A,,,Y,Y,,Y,A,,,A,,Y, ,,Y,,A,] À<À< UÀ< UÀ<À< UÀ<]UÀ<]UÀ<À<]UÀ<€À<,]UÀ<]UÀ<€À<,,À<€À<,À< UÀ<z#€À<,<,YU€À<,,48 ,À<€À<,,À<À<UÀ<À<, €À<,À<,À<,, ÀD À@ À@ U AU)AAAA,AAUA ,AAU ÀL À@AU,AAU ÀP À@AU, YU ÀT& À@AUYU2}8,,<YU,,,,#À@,AU À@U ÀX UÀ@UÀ@,À@YÀ@ÀdÀ`€©À@ÀdÀ`Q Àp À@À@À@ Àt À@À@À@,Àd€©,Q,( À<  eAÀ<E AÀ< AÀ<À<À<a À<À<À<À<À<À<À< À<À< À<À<  À@ ÀD ÀH À@ÀD)AAAA,AAU ÀD ÀH  ÀD ,AU À@AU ÀL À@ U ÀPUU ÀT UU YY YY YYYUÀ`À`À`eAÀ`E AÀ` AÀ` À`À` À`ÀdÀdeAÀdE AÀd AÀd Àd Àd €© À` À`À` À`À` À`À`YU ÀdÀ` À@ Àp YU ÀtA,A,,À@YXXAu ƒµƒ¡]5ƒ‰ƒ‰ ] ]X]À”À´¨À´˜À¶*À”uYÀ¼$À¼$ÀµhÀ´˜ÀÄCons À´¨À”À´¨À´˜À¶*À”uYÀ¼$À¼$ÀµhÀ´˜ÀÄ À¶À¶YÀ¶À¶ À¶À¶À”À´¨À´˜À¶ À¶À´¨À´˜À´˜‚ñ‚ñ À´˜À´¨À´œ À´œÀ´œÀ´¨À´˜!YÀ·¼ÀäÀ´¨À´˜À¶À·ü&YÀ·¼ÀäÀ´¨À´˜À¶À·¼ UÀ¶ UÀ¶UÀ¶À½À¶YÀ·¼ÀäÀ¶ À´œÀ´”À´˜À¶À´”À·¼À´¨À·¼ÀäÀ´¨ À´¨YÀ·¼ÀäÀ´¨ À·üYÀ·¼À·¼YÀ·¼ÀäÀ´¨YÀ·¼ÀäÀ´¨À·¼UYÀ·¼YÀ¶  ÀŒUYÀ·¼YÀ¶7À´˜À¶À¶À¶UYÀ·¼YÀ¶YÀ¶YÀ·¼ÀäÀ´¨ YÀ¹¸&À´˜À¶YÀ·¼À·¼YÀ·¼ À¹¸ÀäÀ´¨À´˜À¶YÀ·¼À·¼ À¹¸ÀäÀ´¨ Àô €íAA€íÀµÀµÀµÀµ YÀ´˜ uÀ¹¸Àµ ÀµÀµUUYU UÀ¹¸ À´˜ uÀ¹¸ À´˜uÀ¹¸UUYU UÀ¹¸ UUÀ¹¸ À´˜€Í$À¸ À¹„À´øÀµÀ´¨À´˜À¶ÀµÀ´”ÀµÀµYÀ´˜À¹¸uÀ¹¸À¹¸YÀ·¼Àµ ÀµÀµÀµYUUUYUYUUUÀ¹¸€íYUE5YÀ²ÌÀäÀ½DÀ·¼À½D Àº À½DÀ¹¸ÀºÀäÀºÀ»ˆÀäÀ»ˆ À»¤À½À¶]Àº(Àº &À»¤À½À¶]Àº(]Àº À»œÀäÀ´œÀ¶À´”À»œÀ´”UYÀ»œYÀ»ˆ À»œ;UYÀ»œYÀ»ˆÀäÀº ]À¶ŒÀ´œÀ¶À´”À»ˆÀ´˜À»ˆÀ¶ À»0À´”À»ˆÀäÀ¶À¶À´”À»œÀäÀ¶À´”À»ˆUYÀ¼$YÀ·(FÀ¶ÀµÌYYÀ»¤À»ˆYÀ»ˆÀ»ˆYÀ»œÀ»œÀ¼$4UYÀ¼$YÀ·(ÀäÀ¼$ÀµhÀ´”À¶E À¶À»¤À»¤ÀäÀ´”uYÀ¼$À¼$ÀµhÀ´”UYÀ»ˆYÀ»œÀ»0ÀäHuYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤2Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤UYÀ¼$YÀ¼$UYÀ¼$YÀ·(À»¤UYÀ»œYÀ»ˆuYÀ¼$À¼$Àµh(À”uYÀ¼$À¼$ÀµhÀ´˜ÀÄUYÀ»ˆYÀ»œ À´”À·¼1Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤GuYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤-€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤UYÀ¼$YÀ¼$ À»¤UÀ¶c€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤Æ+uYÀ¼$À¼$Àµh]À¶ŒÀ´”À¶À´œÀ´œYÀ»ˆÀ¶UYÀ»ˆYÀ»œUYÀ»ˆYÀ»œÀ´øYÀ»œYÀ»ˆUYÀ»ˆYÀ»œÀ»ˆÀ»œÀ»0Àº ÀäÀ½À´˜YÀ»œYÀ»ˆuYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À»¤À»¤UYÀ¼$YÀ¼$UYÀ¼$YÀ·(YÀ·(YÀ¼$YÀ»¤À»¤UYÀ»œYÀ»ˆÀ¼$€— €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤ÀäÀ¼$ÀµhYÀ¼$À¼$ÀµhÀ´¨À¶À´˜(]UÀ´˜YUÀ¶]UÀ´˜ UÀ´˜ À´” À´”UÀ¶ UÀ¶&€YUÀ¶YÀ»ˆYÀ»œr ]UÀ´˜À´˜YUÀ¶À»ˆ]À¶]À¶À¶À´œÀ´œUYÀ»œYÀ»ˆYÀ»œYÀ»ˆ_€YUÀ¶YÀ»ˆYÀ»œÀäÀ¼$ÀµhÀ¶À´¨YUÀ¶]UÀ´˜ELÀ¼$ÀäÀµhÀ¶Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À¼$hY€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤'€YUÀ¶YÀ»ˆYÀ»œ uYÀ»ˆYÀ»œYÀ»¤j À´˜€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤j €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À»ˆj €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À»œj €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À¼$€’ €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤ À´˜À»¤uYÀ»ˆYÀ»œYÀ»¤4 €uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À»¤‚'*À¶À¶YÀ»„À´¨uYÀ¼$À¼$ÀµhÀ´œÀ´œY€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤YUÀ¶À½€YUÀ¶YÀ»ˆYÀ»œ]UÀ´˜YÀ»œYÀ»ˆYUÀ¶YÀ»¤YÀ»ˆ]À¶]À¶À¶uYÀ»ˆYÀ»œYÀ»¤YÀ»¤UYÀ»ˆYÀ»œÀ´øYÀ»œYÀ»ˆYÀ»ˆYÀ»ˆÀ»ŒYÀ»œ]À¼$À¼(YÀ»¤YÀ»œÀ¼$ÀäYÀ¼$À¼$ÀµhÀ¼À¼ÀµxÀµtÀµdAÀ»ˆÀ»ˆAÀ¼ÀµlG À¼ À¼À¼ÀµlÀµxÀµtÀµdÀ¼(À»ŒAÀ»ˆÀ»ˆÀ»ŒÀµlÀ¼$ÀäYÀ¼$À¼$AÀ¼$À¼$ À¼$À¼$AÀ¼$À¼$À¼(ÀäYÀ¼$À¼(ÀäYÀ¼$À¼„À½À¼„ÀŒÀŒÀŒeAÀŒE AÀŒ AÀŒ ÀŒ ÀŒ ÀŒÀŒ AAU A À”= AAAAAAAU A À˜AÀŒÀŒA Àœ À” À  À¤ AA ÀŒÀŒAU AU À˜À” Àœ À” À  À¤ À´˜À´¨ À´¨ À´˜ À´˜ À¶À´¨ UÀ´¨À´¨ À¶UÀ´¨ÀÄÀÄÀÄeAÀÄE AÀÄ AÀÄ ÀÄÀÄ ÀÄÀµhYÀ¼$À¼$Àµh À´˜uYÀ¼$À¼$Àµh uYÀ¼$À¼$ÀµhYÀ¼$À¼$ÀµhÀ´œÀ´œ ÀÄuYÀ¼$À¼$ÀµhUuYÀ¼$À¼$ÀµhuYÀ¼$À¼$Àµh# ÀÄUuYÀ¼$À¼$Àµh À¶À¶ ÀäÀ´¨ À¹¸ uÀ¹¸À´˜uÀ¹¸ ÀäÀ´¨ À¹¸ UÀ¹¸UUÀ¹¸ Àô  ÀäÀ½D À²ÌÀ·¼ Àä ÀºÀº YÀ´”@ ÀäÀº ]À¶ŒÀ´œÀ¶À´”À´”À¶|YÀ´”À»ˆ 1À´” YÀ´” YÀ´” À·¼À´” ÀäÀ¶À¶À·¼+ ÀäÀ¶uYÀ¼$À¼$ÀµhÀ·¼ UÀ¶À»¤% ÀäYÀ¼$À¼$ÀµhÀ¶À´¨k €YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À´˜`YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤n YÀ»ˆ€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤n YÀ»œ€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤n YÀ¼$€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤€– Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤€YÀ»ˆYÀ»œYÀ»ˆYÀ¼$YÀ¼$Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤ uYÀ¼$À¼$Àµh UÀ¶À´”YUÀ¶O ÀäYUÀ¶YUÀ¶UÀ¶À¶À»¤YUÀ¶À»¤1UÀ¶YUÀ¶ YUÀ¶.€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤3Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤€Ì ÀäÀ¶Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤uYÀ¼$À¼$ÀµhÀ»¤À¶À¶|Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤À·¼11€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤2Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤4 Y€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤ À»¤À´˜ Àµh*uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤4 À»¤€uYÀ¼$À¼$ÀµhÀ´˜À¶À»¤ ÀäYÀ¼$ À¼$À¼$ À¼(À¼(À”À´¨À´˜À¶)À”uYÀ¼$À¼$ÀµhÀ´˜ÀÄÀ¼$À½À¼$ U UY UYAUUUUY'UYAAUUÀ»„À´¬À´´UÀ»„À´¬À´¬UYÀ¶À´ÌuYÀ¶YÀ¶À´Ì À´ÌÀ¶UYÀ¶À´ÌP À´ÌÀ´ØÀ´ØÀ´ØÀ´ØÀ´ØÀ¶À¶À¶À¶À¶UYÀ¶À´ÌÀ´Ì"uYÀ¶YÀ¶À´ÌÀ´ÌÀ´¸UYÀ»„À´¬uYÀ»„YÀ»0À´¬ À´¬À»„UYÀ»„À´¬P À´¬À´¸À´¸À´¸À´¸À´¸À»0À»0À»0À»0À»0UYÀ»„À´¬À´¬"uYÀ»„YÀ»0À´¬À´¬ÀµÌY‚ñ‚ñÀ¶À¶À¶À½ ÀžŒÀ½ À¶ÀžŒÀ¶ÀžŒÀ¶À¶À¶ÀžŒYÀ¶À¶À´ØÀ´ÌÀ´ÌÀ¶ÀžŒÀ´ÌÀ´¸À´¬À»0À´¬À¶ÀžŒÀ´¬ UÀ¶xYÀ¶À¶YÀ¶UÀ¶xÀžŒYÀ¶À¶ UÀ¶x UÀ¶xÀ¶xYÀ·¼À·”!À¹¸ÀžŒÀ·”YÀ¶À¶YÀ·¼À´ôÀ´ìUYYÀ·¼YYÀ·¼YYÀ·¼UYYÀ·¼YYÀ·¼ YYÀ·¼€ À´ÔÀ´ÌÀ¶À´ÌUYYÀ·¼YYÀ·¼YYÀ·¼YYÀ·¼À´ØUYÀ·¼YÀ·¼YÀ·¼YÀ·¼À´Ì+UYYÀ·¼YYÀ·¼À½DÀ´Ì 1YÀ·¼ YÀ·¼À·¼:UYYÀ·¼YYÀ·¼YYÀ·¼YYÀ·¼.UYÀ·¼YÀ·¼À½DÀ´ÌYÀ·¼uYÀ¶YÀ¶À´Ì À¶UYÀ¶À´Ì€ªuYÀ¶YÀ¶À´ÌYÀ¶UYÀ¶À´ÌYÀ¶À´ÌYÀ¶UYÀ·¼YÀ·¼YÀ·¼YÀ·¼À·”YÀ·¼YÀ·¼À¶À·”À¹¸À¹¸À¹¸( À¹¸ÀžŒÀ½DÀ·”YÀ·¼À´ÌUÀ·”À´ÌÀµ UÀ·”À´ÌKÀ¸ À¹„À´øUÀ·”À´ÌÀµ À·”À´ÌÀ½DÀ½DÀžŒÀ½DÀ·”!À²ÌÀžŒÀ½DYÀ»„À·¼À²ÌÀ¶À·¼)À½DYÀºÀ¹¸À¹¸]À¶À¶*ÀºÀžŒYÀ»„]]À¶ÀºÀ»X À»XÀº!À»PÀžŒYÀ»„]À»PÀ»P!À»ˆÀžŒYÀ»„]À»ˆ À´ìÀ»0 UÀ¶À´ìÀ´ìUÀ¶À´ìYUÀ¶À´ì À´ìÀ»¤YÀ»¤ÀžŒÀ´ì YU YUYUÀ´ìUYUYU.YUÀ´ìAAYUYUÀ´ìA À´ìYUÀ´ìAA"YUÀ´ìAAAÀ·¼YÀ·¼ eÀº UÀ´ìYÀ·¼ UÀ´ìÀº:ÀºAÀ·¼YÀ·¼À¹¸YÀ·¼YYÀ·¼À¹¸ÀºÀµdÀ´ôYUÀ´ì ]À´ô ]À´ô À´ô ÀžŒ UÀ¶À»0 UÀ¶YÀ·¼UYÀ¼$YL ÀºÀ»ˆYUÀ¶]À¶]À¶YÀ»„]À´ôÀ»ŒYÀ»¤@UYÀ¼$YÀžŒÀ¼$ÀµdÀ´ìÀ¶À´ô]À¶ŒEB À¶À»ˆÀ»ˆYÀ»„À»ìYÀ¶À»¸À»äÀ»ÜYÀ»¤N UYÀ¼$YÀžŒÀ¼$ÀµdÀ´ìÀ¶À´ô]À¶ŒYÀ»0À¶EF ]À¶À»ˆÀ»ˆYÀ»„À»ìYÀ¶À»¸À»äÀ»ÜYÀ»¤N UYÀ¼$YÀžŒÀ¼$ÀµdÀ´ìÀ¶À´ô]À¶ŒYÀ»„À¶EUYÀ¼$YuYÀ»„YÀ»0À´¬ À»0À´¬ UÀ´ì À»0UÀ´ì UÀ´ìÀ´ì À´ìÀ·¼ UÀ´ìÀ·¼ À»„À´¬ €ÕY&UYÀ¼$YÀ´ìÀ¶ÀµÌÀ¶YÀ»„À´ðÀ´ô]À¶Œ]À¶ŒuYÀ»„YÀ»0À´¬YÀ»0À´¬À»ìYÀ»0YÀ»„‚ñ‚ñÀ¶À´¬À¶À´ìYUÀ´ìÀ´ìÀ´ìÀ´ðÀ´ôÀºYÀ¼$ÀºYÀ¼$YÀ¼$À½Y+YÀ¼$ÀžŒ€ÕYYÀ¼$Àµd< À¼ À¼À¼ÀµlÀµtAÀ»ˆÀ»ˆYÀ»„]À»Œ&YÀ¼$ÀžŒ€ÕYYÀ¼$ ÀŸ  ÀžŒ€ÕYY"À¼(ÀžŒ€ÕYYÀ¼(ÀžŒ€ÕYY À´Ì UÀ¶À´ÌÀ´Ì À´¬ UÀ»„À´¬À´¬(À¶ À¶ À½À¶À¶ ÀžŒ À¶À¶À¶ YÀ·¼UÀ·¼YÀ·¼ UÀ·¼YÀ·¼YÀ·¼ YÀ¶À´ÌUÀ¶À´ÌUÀ¶À´ÌUÀ¶À´ÌÀ´ÌÀ¶ UYÀ¶À´ÌÀ¶YÀ¶À´Ì/ AÀ¶UYÀ¶À´ÌUYÀ¶À´Ì ÀžŒYÀ»„À½D À»¤À´ì YÀ·¼ YUÀ´ìÀ·ÔÀ·èÀ·Ø YÀ·¼À·ÔÀ·èÀ·Ø YÀ·¼À·¼ À´ôÀ´ì YÀ·¼UÀ´ìÀ´ì ÀºUÀ´ì À»0UÀ¶ YÀ·¼UÀ¶ ÀžŒYÀ»„]À´ô À´¬À»0À´¬ UÀ´ìÀ»0 À´ìUÀ´ì À´ô YÀ·¼À´ì À·¼UÀ´ì À´¬À»„À´¬ ÀžŒYÀ»„] €ÕY ÀŸ  YÀ¼$À¼$ ÀžŒ€ÕYY€Õ]ÀµÄÀØ€Õ]ÀµÄ ]ÀµÄÀµÌÀŸÀŸÀŸeAÀŸE AÀŸ AÀŸ ÀŸÀŸ ÀŸ YU YU €í YUA €¥ €¥ €í YUÀØ” YU YU €í YU€íA €¥ €¥ €í YU ]U UU$]U]U]]]„U„U„U AƒÉƒÉƒÉƒÉƒÉEEEEEEEƒÉƒÉƒÉEEEEEE ]ÀŸDYY ]1 E ]Y]UYY ]ÀŸP ] ]U ]U AUUUU1 U€¥€¥" ]Y]‚ñ‚ñ1 U ‚ñ‚ñ ]UU€í ÀŸDeAÀŸDE AÀŸD AÀŸDÀŸDÀŸDa ÀŸDÀŸDÀŸDÀŸD ÀŸDÀŸDÀŸDÀŸD ÀŸDÀŸD ÀŸDÀŸD ÀŸPY YeAÀŸPE AÀŸP AÀŸPÀŸPÀŸPaYY ÀŸPÀŸPÀŸPÀŸPYYÀŸPÀŸPÀŸPÀŸPYY ÀŸPÀŸP ÀŸPÀŸP ÀŸT YU€í YU€¥€¥€íU YU 1U YUEU5U] ]         „Y   „m€µ„q„u „u „} „y]„q„u+ ]]U]]]]]]] ]€Å €ÅÀ¶ €ÅÀ¶p €ÅÀ¶t €ÅÀ¿´ÀŸˆ€½ÀؤÀØ ÀØœÀؘ€ÅAUAU „‰€±„„‰‚É€±„ „‘ „‘„‰  „‰ „• „‰„• „™ „‰„™ €Ñ€½„€½€½€Ñ„‘€½„€½€½ „¡ƒ ƒ ƒ „¡„‘ƒ ƒ ƒ  €½ €½„‘ -) -„‘) ƒµ„• „‘ƒµ„• „‘ „­ „©„­ ! !„© %%„© 9„­ 9€½ €½ 9€½ !9  9%9 9€½- --) 9„±„9-„±„ - „©„±„€½„©-„±„€½ 1€½„µ1-€½„µ „¹„½€½€½„¹-„½€½€½ „Á„Å€½„Á-„Å€½ -€½ õ„É¡ -õ - ‚ñ‚ñ„Í „Ñ€½ „Ñ%€½  % „¡ % %% %€½ „Í %„Í „Í %„Í „Í %„Í „Í %„Í „Í€Ñ %„Í€Ñ „Í %„Í „Í€½ %„Í€½ „Í5 %„Í5 „Í %„Í €½€½ ÀŸtYY €½€½ €½€Ñ€½€½A€E(€±]Àµ¨]Àµ¨A€E €±ÀµÄYYY]€­€µAÀµÄ]€­€µ ]€­€µ ‚™€µ ‚•€µ€½< ÀµÌÀµÜÀµÄ€µ]€­€µ€±]€­€µ€µÀµÌ€½ÀŸ|À¶ YU-Y€½ €€Å „Ñ €À¿´„¹€ÅÀ¿´ €À¶t1€ÅÀ¶t €À¶p9€ÅÀ¶p €À¶p„©€ÅÀ¶p- €À¶€€½-À¼$]€½€ÅÀ¶ ÙÀŸˆE Y€½ YU-*Y€½Y€½YU-YU-ÀŸˆÀŸˆÙE Y€½ YU-ÀŸˆÀŸˆE €ÅÀ¶ €ÅÀ¶p €ÅÀ¶t €ÅÀ¿´ÀŸˆ€€½-À¼$]€½€€½-À¼$]€½+€À¶€€½-À¼$]€½€ÅÀ¶eAÀŸˆEÀŸˆ ÀŸˆAÀŸˆ ]€½€€½-À¼$]€½ÀŸˆÀŸˆÀ¶€½-À¼$- À¶€€½-À¼$]€½J €€½-À¼$]€½À¼$€½-€½E]€½€€½-À¼$]€½ÀŸˆÀŸˆÀ¶]€€½-À¼$]€½]€€½-À¼$]€½h]€€½-À¼$]€½]€€½-À¼$]€½]€½€½À¼$€½-]€€½-À¼$]€½€½ÀŸ|ÀŸˆÀ¶€À¶p„©€ÅÀ¶pÀŸˆÀŸˆÀ¶p„© À¶p„©„©ÀŸˆÀ¶p€À¶p9€ÅÀ¶pÀŸˆÀŸˆÀ¶p9 À¶p99ÀŸˆÀ¶p€À¶t1€ÅÀ¶tÀŸˆÀŸˆÀ¶t1 À¶t11ÀŸˆÀ¶t€À¿´„¹€ÅÀ¿´ÀŸˆÀŸˆÀ¿´„¹ À¿´„¹„¹ÀŸˆÀ¿´-ÀŸˆÀ¶À¼$ÀŸˆÀ¶ÀŸˆÀŸˆ„Ñ „ÑÀŸˆ€€ÅÀŸˆÀŸˆ ÀŸˆÀŸˆÀŸˆ€½ €½ ÀŸˆÀŸˆ#Y€½Y€½€½AA €½ÀŸˆ ÀŸˆÀ¶ U-U- U-ÀŸˆÀŸˆ-UÀŸˆYU-UÀŸˆYU-ÀŸˆ ÀµüÀµô „À¶A€½A€½ À¶€½"eA€½A€½E€½U€½ €½A€½A€½A€½€½Y€½A€½A€½€½ÀŸ|ÀŸˆÀ¶4 À¶$ÀµìÀ¶€½À¶(À¶À¶,À¶0À¶4À¶<€½ÀŸ|ÀŸˆÀ¶€½ÀŸ|ÀŸˆÀ¶Y€½ÀŸ|ÀŸˆYÀ¶€½ÀŸ|ÀŸˆYÀ¶Àº(€½ 55€½À¶t 5€½51À¶tÀ¶€½1€½À¶t5ÀŸ|ÀŸˆÀ¶|Y€Ñ A€Ñ]€ÑY€Ñ]€Ñ< õÀ¶Y€Ñ€½Y€ÑY€Ñ€ÑA€Ñ]€Ñ]€Ñ€ÑÀŸ|ÀŸˆ€½À¶p U€½€½ÀŸˆ U€½€½ €Ñõ„É€½„Ù. €½U€½€½ÀŸˆ€½€½À¶õ€Ñ€Ñ €Ñ€½€Ñ9 À¶9€½€½€Ñ€ÑÀŸ|ÀŸˆÀ¶x õ„É€½„Ù€½ÀŸ|ÀŸˆ€½À¶p €½„©À¶p€½„©€½ÀŸ|ÀŸˆÀ¶x ÀŸˆ%ÀŸˆ%ÀŸˆ„ÍÀŸˆ%À·´ %À·¤ „Í %À·œ%À·”AEEÀŸ|ÀŸˆ%À¶x]*ÀŸ|ÀŸˆ%„ÍÀ·”À¶x]YÀ¶]u] €ÑY €Ñ €Ñ €½ €Ñ€½ƒ ƒ ]À·ÐÀ·ÜÀ·ìÀ¸]YÀ¶À¸ À¸À¸À¸À¸”À·L „Í  „Í    „Í ]YÀ¶€ø6À·DÀ·Ð À·ÜÀ·¤À·œÀ·ìÀ¶xÀ·üÀ·´YÀ¸À¸]YÀ¶À·”À¸À¸ À¶À¸YÀ¶À¶hÀ¸À¸ À¶|À¸$À¸0À¸4À¸DÀ¸TÀ¸XÀ¸tÀµìÀ·¬À·¬Àµì€½€½€½€ÑÀ¸xÀ¸|À¸€À¶ŒÀ¸À¸”À¸ À¹„À·LÀŸ|„‘ÀŸˆ%À·¼ À·¼ÀŸ|„‘ÀŸˆ%À¹°%ÀŸˆ]%ÀŸˆ]A]AÀ¹¸]À¹ÌÀ¹à À¹¸]A]AÀ¹¸]AÀ¹¸]? A]AÀ¹¸]À¹ÀÀ¹°À¹ÄÀ¹ÈÀ¹¸À¹ÌÀ¹à!]ÀŸ|„‘%ÀŸˆ]À¹¸À¹èÀ¹ìÀ¹ð UÀºÀ¹¸À¹èÀ¹¸À¹ìÀ¹ðÀ¹àÀŸ|„‘%ÀŸˆÀ¹àÀŸ|„‘% ÀŸˆ!YÀŸˆÀŸ|„‘%ÀŸˆ]ÀŸ|„‘ÀŸˆ%À¹¸„ÑÀŸ|ÀŸˆ%Àº„ÑÀºÀº„ÑÀº„ÑÀŸ|„‘ÀŸˆ%ÀºÀ»PÀ»XÀº ÀŸ|„‘ÀŸˆAEÀ»heAÀ¶xEÀ¶x AÀ¶x AÀ¶x UUÀŸ|ÀŸˆÀ·(AU#ÀŸ|ÀŸˆAUÀ·(!ÀŸ|ÀŸˆAUEÀ·, À»„A YAYÀ»„ ÀŸ|ÀŸˆ€½YÀ»„!AUE u+ ]‚ñ‚ñ!AUEÀ·,#ÀŸ|ÀŸˆAu!À»0 „±À»ˆ À»PÀ»X „­À»ˆ„±„­„À»\À»,„á„å- 9„±„€½€½€½€½€½€½„á„å ÀŸˆB„±„­„À¶pÀŸˆÀ»PÀ»\À»,€½€½„á„å9„©ÀŸˆÀŸˆÀŸˆÀŸ|À¶-ÀŸˆÀ»ˆAu! %@ À¶p„©Au!AUEÀ·,9ÀŸˆ!ÀŸˆÀŸ|À¶„‘-ÀŸˆÀ»ˆ„µ 1„µ„µ„µ„µ€½1]]ÀŸˆÀŸ|À¶-ÀŸˆÀ»¤À¶t1AUEÀ·,ÀŸ|À¶-ÀŸˆÀ»¤„½„¹„½„¹ÀŸˆÀŸ|À¶-ÀŸˆÀ»œÀ¿´À¿´„¹AUEÀ·,ÀŸ|À¶-ÀŸˆÀ»œ„Å„Á 9!„Å„ÁÀ¶pAUEÀ·,ÀŸ|-ÀŸˆÀ»”À»8 €Ñ€Ñ€ÑÀ»8À¶pÀ¶€½€ÑÀŸˆÀŸ|-ÀŸˆÀ»¬ )À¼ À»üÀ»ì )À»ì )À»ä ] €À¶À¶  €À¶À¶  €À¶À¶  ]U]UÀŸ|ÀŸˆÀ»ØÀ»ÈÀ»ÄU)]UÀ»ÈÀ»ØÀ»ÄÀ»¸%U)]UÀŸ|ÀŸˆÀ»¸)U)]U]UU) - U À¼$ÀŸˆV))U)]U]U))))--À¶€½ÀŸˆYÀ¼$À¼(1ÀŸˆÀŸ|ÀŸˆ„‘AU)-YÀ¼$À¼$%ÀŸˆÀŸ|ÀŸˆ„‘-YÀ¼$À¼$&À¶-€½ÀŸˆÀŸˆYÀ¼$À¼(ÀŸ|YÀ¼$ÀŸˆÀ¼$ À»ˆÀŸˆ À»¤ÀŸˆ À»œÀŸˆ6 À¶-ÀŸˆÀŸˆÀ»ŒÀŸˆÀŸˆÀŸˆYÀ¼$À¼(ÀŸˆÀŸ|YÀ¼$ÀŸˆÀ¼$ À»¬ÀŸˆ,À¶-ÀŸˆÀ»ŒÀŸˆÀŸˆYÀ¼$À¼("ÀŸˆÀŸ|YÀ¼$„‘ÀŸˆÀ¼$YAAY À¶ YÀ¶YYYYÀ¶À¶ À¶YÀ¶À¶À¶$À¶(À¶À¶,YÀ¶À¶YÀ¶AAAÀ¶EAAÀ¶E YÀ¶AAÀ¶EA AÀ¶EPAAAÀ¶EAAÀ¶EYÀ¶YÀ»ˆÀ»Œ]À¶YÀ¶)€íÀ¶€íÀ¶ÀŸˆÀ¶À¼$AAÀ¶EYÀ¶%€íÀ¶€íÀ¶ÀŸˆÀ¶„é €íÀ¶ „é €íÀ¶-À¼$„éYE€½$€íÀ¶€íÀ¶ÀŸˆÀ¶ €íÀ¶ €íÀ¶€íÀ¶€íÀ¶ÀŸˆ#€íÀ¶€íÀ¶ÀŸˆÀ¶À¶YÀ¼$À¼(,€íÀ¶€íÀ¶YÀ¼$ÀŸˆÀ¼$ÀŸˆÀŸ|„‘ÀŸˆÀ¼$ÀŸ|ÀŸˆÀ¼$ÀŸˆÀŸ|ÀŸˆÀ¼$#€íÀ¶€íÀ¶ÀŸˆÀ¼$ „í 1À¶ À¶ÀŸˆN YÀ¼$À¼(ÀŸˆÀŸˆÀŸˆ€íÀ¶€íÀ¶ÀŸˆAUEÀ·,ÀŸˆÀŸ|ÀŸˆ„‰„‘À¼„„‰  U„‰„‘‚É€±„‰€½U„‰„‘AU-AE]UÀŸˆYU- U-AE]UÀŸˆYAE]p ÀŸ|ÀŸˆ]À¼€]À¼€À¼€AUEÀ·,AU-AE]UÀŸˆYU-YU-GUÀŸˆYAE]À½ÀŸˆ„‰„‘À¼„AÀµÄ]€­€µ €€½-À¼$]€½€½]€½ÀŸˆÀ¶ 15]5ÀŸˆÀ¶t 9€Ñ]€ÑÀŸˆÀ¶p €± E€(AÀµÄ]€­€µAÀµÄ]€­€µ AÀµÄ]€­€µ À½AÀµÄ]€­€µ -(€À¶€€½-À¼$]€½€ÅÀ¶(€À¶p„©€ÅÀ¶p(€À¶p9€ÅÀ¶p(€À¶t1€ÅÀ¶t(€À¿´„¹€ÅÀ¿´(„Ñ(€€Å (Y€½(YU-,€À¶€€½-À¼$]€½€ÅÀ¶€À¶p„©€ÅÀ¶p€À¶p9€ÅÀ¶p€À¶t1€ÅÀ¶t€À¿´„¹€ÅÀ¿´€€Å- €À¶€€½-À¼$]€½€ÅÀ¶ €À¶p„©€ÅÀ¶p €À¶p9€ÅÀ¶p €À¶t1€ÅÀ¶t €À¿´„¹€ÅÀ¿´ „Ñ €€Å Y€½ YU-€± €À¶€€½-À¼$]€½€ÅÀ¶€À¶p„©€ÅÀ¶p€À¶p9€ÅÀ¶p€À¶t1€ÅÀ¶t€À¿´„¹€ÅÀ¿´„Ñ€€ÅY€½YU-ÀŸˆ ÀŸˆ ÀŸˆ ÀŸ|ÀŸˆ €½À¶ A€½ A€½ A€½A€½ A€½ A€½€½ ÀŸ|ÀŸˆ €Ñ €½  ÀŸ|ÀŸˆÀ¶p€½UY€½€½UY€½€½    €½ €½€½-€½UY€½€½ÀŸˆ€½Y€½Y€½€½% ÀŸ|ÀŸˆ%„ÍÀ¶x]YÀ¶ „̀р½€Ñ]YÀ¶YÀ¶ ÀŸˆ  ÀŸ|ÀŸˆ%YÀ¶À¶h „Í„€½€½€½ ÀŸ|ÀŸˆ%À¶h % ÀŸˆÀŸˆ ÀŸ|„‘%ÀŸˆ ]]À¹¸ÀºÀº ÀºUÀºÀ¹¸ ÀºÀ¹¸Àº À¹¸ÀºÀ¶ EUÀºÀ¹¸  ÀŸ|ÀŸˆAUE EÀ·( À»„  EU ÀŸ|ÀŸˆUY€½Y€½„ñUY€½Y€½ „ñS Y€½UY€½Y€½Y€½Y€½Y€½€½À·,AUE„ñ„ñ„ñ EÀ»„ ! „© !u ÀŸ|ÀŸˆAu! EÀ»0 %E 1 EÀº( ÀŸˆ„¹ EÀ¶p „¹ ÀŸˆ„Á „Á ÀŸ| €À¶À¶  €À¶À¶  - ÀŸ|„‘-YÀ¼$ ÀŸˆÀŸˆÀ¼$) -U) ÀŸ|-ÀŸˆ EÀ¶ ÀŸ|ÀŸˆYÀ¼$ EÀ¼$ E€½ ÀŸ|À¶- ÀŸˆÀŸˆÀ»ˆ ÀŸˆÀŸˆÀ»¤ ÀŸˆÀŸˆÀ»œ ÀŸ|YÀ¼$ ÀŸ|„‘À¶-ÀŸˆ EÀ»ˆ ÀŸ|À¶-ÀŸˆ EÀ»” ÀŸˆÀŸˆÀ»¬ ÀŸ|„‘YÀ¼$ À¶À¶ YÀ¶À¶YÀ¶ €íÀ¶€íÀ¶ÀŸˆ EÀ¶ EÀ¶ AAAÀ¶E EÀ»„ EÀ»0 À¶ ÀŸˆYDÀ¶]€€½-À¼$]€½]€€½-À¼$]€½-€½ €µ„õ' €íÀ¶€íÀ¶ÀŸˆYÀ¼$ „‘ ÀŸ|„‘ ÀŸˆ€íÀ¶€íÀ¶ ÀŸˆÀŸˆÀ¶ „‰„‘„•À¼\&„•À¼PÀ¼XAEÀ¼\ÀµÈÀ¼P EÀ¼p „‰ -]ƒ}ƒ} ]E- AE]U- €½€€½-À¼$]€½ 51 €Ñ9AA À¡LeAAEU AA À¡T AA]AA€€Å À¡P AAA À¡T A A€Å €ÅÀ¶ €ÅÀ¶p €ÅÀ¶t €ÅÀ¿´ €Å À¶t À¿´€½AAE €Õ] ÀØÄÀØÀÀؼÀظÀØ´ÀذÀجÀبAAE €Õ] €˜ €˜ À¡t À¡p aÀ¡tÀ¡tEaÀ¡tÀ¡tE aÀ¡|À¡|EÀ²˜À²˜ UÀ¡|À¡| UÀ¡| UÀ¡| UÀ¡|) UÀ¡|À¡|UÀ¡|À¡|À¡|UÀ¡|E À¡¬>A€¥€ÕYÀ¡|AUÀ¡|€¥€ÕYÀ¡| €á€áÀ¡| €ÕÀ²”€ÕÀ²”À¡pAAÀ¡tEÀ¡pÀ¡t AÀ¡tEÀ¡pAAÀ¡tEÀ¡t AÀ¡tE,AAÀ¡tEÀ¡pÀ¡tAÀ¡tE€ÕÀ²”À¡t €ÕÀ²”À²˜À¶ˆÀ¡À¡À¡|À¡| UÀ¡|À²œÀ¶ˆ À¡À¡À¡| À¡| 1À¡| À¡| À¡|UÀ¡| À¡hE€ÕÀ²”]]À²˜À¶ˆÀ²˜À¶ˆÀ¡À¡À¡|À¡|UÀ¡|€ÕÀ²œÀ²œÀ¡”€Ñ €Ñ€Ñ]€Ñ]€Ñ€Ñ UUUÀ¡p  UE EÀ¡pÀ¡pÀ¡t À¡tU]UÀ¡xÀ¡xÀ¡xU U]UÀ¡xÀ¡xUÀ¡xÀ¡xu u E €á €áE EE ƒ `EUÀ¡À¡]UÀ¡xÀ¡x]UÀ¡xÀ¡xÀ¡xUÀ¡|À¡| À¡”AAYEÀ¡t&eAAYE€©EEUY AAYE/AAAEAAYEÀ¡tÀ¡t ‚éÀ¡t1UÀ¶ˆYUÀ¶ˆ UÀ¶ˆ!AAAAAAE 1À¶ˆ À¶ˆ1UÀ¶ˆYUÀ¶ˆ UÀ¶ˆeAAE€©EEU AAEeA]E€©EE] A]E A]EeAYE€©EEY AYEeA]E€©EE] A]E UÀ¡xÀ¡x A]E7eAAAAAAE€©EE€" AAAAAAE‚éE1UÀ¶ˆYUÀ¶ˆEUÀ¶ˆÀ¶ˆAAE5À¡À¡À¡|À¡|AAAAAAE‚é À¡” À¢\À®ÄÀ®Ä À¢\À®ÄÀ®ÈÀ®È À¢\À®ÈÀ®øÀ®ø À¢\À®øÀ®ÌÀ®Ì À¢\À®ÌÀ®ÐÀ®Ð À¢\À®ÐÀ®ÔÀ®Ô À¢\À®ÔÀ®ØÀ®Ø À¢\À®ØÀ®ÜÀ®Ü À¢\À®ÜÀ®àÀ®à À¢\À®àÀ®äÀ®ä À¢\À®äÀ®èÀ®è À¢\À®èÀ®ìÀ®ì À¢\À®ìÀ®ðÀ®ð À¢\À®ðÀ®ôÀ®ô À¢\À®ô À¢\À¢\À¢\À¢xÀ¢xÀ¶À¢. À¢À¢aÀ¶À¶YÀ¶YÀ¶À¢À¢E+ À¢À¢À¶À¶YÀ¶YÀ¶aÀ¢À¢E À¢|À¢`À¢œÀ®ÄÀ¢dÀ¢œÀ®ÄÀ¢l € U€ÕYU€ÕYU€˜ À¢| À¢œÀ¢| À¢œ À¢œ] U] U]UÀ¢\À¢\U]]UÀ¢\À¢\À¢œ À¢|À¢˜ AÀ¼(YÀ¢œÀ¼$YÀ¢œYÀ¼$ À¢|À¢˜ €íÀ¢˜!À¢|À¢˜‚%Y1 À¢œÀ¢˜F ]€]€]Àµ¨]Àµ¨]]]]À¢pÀ¢œÀµÄÀ¢hÀ¢œÀµÈ]]ÀµÌÀµÌÀ¶À¢` UÀ®ì%ÀµÜÀµÄÀ¢`À®ÄÀµØÀµÈÀµÌUÀ®ìÀ¢œÀµÌUÀ¢\À¢\À¢\ UÀ®ô UÀ®ô*UÀ¢\À¢\À¢\À¢\UÀ®ôÀ®ôÀ¢hÀ¢œÀ¶À¢`À®Ä À¢œÀ¶5 ÀµÜÀµÄÀ¢`À®ÄÀµØÀµÈUYYÀµÌUÀ®ôÀ¢œÀµÌYÀ¢œ€˜ÀµÌYÀ®ÄÀ®ÈÀ®Ä À®È8YU]]YU]]YU]] €˜Àµì À¶À¢œÀ¢x€˜À¶ UÀ®ÈUÀ®ÈÀ¢œÀ¢xÀ¶€˜À¢hÀ¢œÀ¢xÀ¶ À¢`À®ÄÀ¢œÀ¢xÀ¶[À½À¶(À¶À¶(À¶,À¶(À¶$À¶ÀµìÀµìÀ¶<À¶4À¶0À¶8À¶hÀ¶@À¶À¢œÀ¢x€˜À¶]YÀ¶YÀ¶1À¢œÀ¢x€˜À¶YÀ¶À¶]YÀ¶1À¢œÀ¢xÀ¶YÀ¶À¶]YÀ¶€˜/À¢œÀ¢xÀ¶YÀ¶À¶]YÀ¶À¢œÀ¢x€˜YÀ¶ UÀ®ÈUÀ®ÈÀ®ÈÀ®ÈÀ¢\À¢œÀ¢xÀ¶ÀºÐÀºÔÀºØeYUÀºÈ ÀºÈÀºÐÀºÈÀºÔÀºØÀºÈÀº Àº¤Àº¨Àº°Àº¬Àº˜eYUÀº˜ Àº˜xÀº Àº¤Àº¨Àº°ÀºÈ]]Àº¬]U]]Àº˜]Àº˜Àº˜Àº˜]U]]] €˜Àº˜ À¢œÀº(MÀº0Àº4Àº8Àº<Àº@ÀºDÀºHÀºLÀºPÀºT ÀºX Àº\ Àº` €˜Àº( À¢\Àº(Àº À»ìÀ»¸ À¼$E À¢|À¢Œ À¢|À¢„ À¢|À¢Œ =À¢Œ À¢|À¢„ =À¢„C UÀ¢\À¢\À¢\À¢\UÀ®ÈÀ®ÈÀ¢|À¢ŒÀ¢|À¢„À¢lÀ¢œÀ¢xÀ¼$ ]À¶UÀ®ÈÀ¢œÀ¢x]À¶ À¢|À¢ À¢|À¢ =À¢À¢|À¢ À¢lÀ¢œ À¢|À¢” À¢|À¢” =À¢”À¢|À¢”À¢œÀ»¤ À¢„À»ˆ €íÀ»ˆÀ¢œÀ»ˆ À¢À»œÀ¢œÀ»œUÀ®ÈÀ®ÈÀ¢lÀ¢œÀ¢xÀ¶À¢œÀ»”À¢x4 EÀ¢xYÀ»œYÀ»”À»ŒYÀ¼$À¼(YÀ¢œÀ¼$YÀ¢œYÀ¼$ ]À¢˜ €íÀ¢˜1%À¢˜ %À¢˜]À¢˜ ]À¢˜]À¢˜€íÀ¢˜ À¢˜À¢œÀ¢˜ €íÀ¢„ €íÀ¢„1%À¢„ %À¢„8À¢|À¢„‚%À¢˜Y1‚ñ‚ñ€íÀ¢„ À¢œÀ¢„ €íÀ¢ŒÀ¢|À¢Œ‚% À¢œÀ¢ŒeAÀ¶pEEEÀ¶p EAÀ¶pEeAAEEEU EAAEÀ¶À¶AAE À¢œÀ¶p= À¢tÀ¢œÀ¢xÀ¢xÀ¶À¶YÀ¶À¶]YÀ¶.À¢œÀ¢xÀ¶YÀ¶À¶]YÀ¶À¢xÀ¢`À®Ä4 À¢œÀ¢xÀ¶À¶YÀ¶À¶]YÀ¶ UÀ®äÀ¢ð UÀ®äUÀ®äÀ¢ð> UÀ®äÀ¢œÀ¢xÀ¶À¶YÀ¶À¶]YÀ¶À¢œÀ¢xYÀ¶€˜"UÀ®äÀ®ä€˜À¢`À®Ä< À¢œÀ¢xÀ¶À¶YÀ¶À¶]YÀ¶YÀ¶À®ÄÀ®äÀ®Ä À®ä-€‰À¶À¶YÀ¶À¶]YÀ¶,€‰À¶À¶YÀ¶À¶]YÀ¶>À®ÄUÀ®ä€‰À¶À¶YÀ¶À¶]YÀ¶]€‰À¶À¶YÀ¶À¶]YÀ¶À¶À¶YÀ¶À¶]YÀ¶YÀ¶4€‰À¶À¶YÀ¶À¶]YÀ¶YÀ¶H€‰À¶À¶YÀ¶À¶]YÀ¶YÀ¶À¶x]YÀ¶À¢tÀ¢xÀ¢tÀ¢`À®ÄÀ¢œÀ¢xÀ»8À¶UÀ®äÀ¢ðUÀ®äÀ¢œÀ¢xÀ»8À¢tÀ¢`À®ÄÀ¢œÀ¢xÀ¢xÀ¶p UÀ®ð UÀ®ðÀ¢xÀ¶UÀ®ðÀ¢ðUÀ®ðÀ¢œÀ¶p UÀ®ðÀ¢lÀ¢œÀ®ÐÀ·(À¢œÀ®ÐÀ·(À¢œÀ®ÐÀ·,eYUÀºè Àºè ÀºèÀ¢lÀ¢œÀ®ØÀºðÀ¢œÀ®ØÀºðÀ¢œÀ®ØYÀºðÀ¢tÀ¢œÀ¢xÀ¢xÀ¶|À¢œÀ¢xÀ¶|À¢œÀ¢xÀ¶|À¢ŒÀ¶À¶À¢ŒUÀ¢œÀ¢xÀ¶| À®ÄÀ®ÄÀ¢œÀ¢xÀ¶h]YÀ¶#À¢hÀ¢œÀ¢xÀ¶h]YÀ¶À¢œÀ¢x€˜YÀºÀ¢œÀ¢xYÀºÀ¢hÀ¢œÀ¢xYÀºÀ¢`À®ÄÀ¶€˜À¢œÀ¢xÀºÀ£/€áYUY€áÀ£À¡|À¡tY€áÀ£UYU.€áYUY€áÀ£À¡|À¡tY€áÀ£UYUUUYU$uUUYUÀ¡|À¡t €áÀ£€¢Àº€áYUY€áÀ£À¡|À¡tÀ¡|Y€áÀ£À¡tYU€˜UYUY€áÀ£À®ÄÀ¢`À®Ä8uUUYUÀ¡|À¡tÀ¢œÀ¢xÀº ]Àº( ]Àº˜ ]5 ]Àº(]Àº(]Àº˜]Àº˜]]À¢lÀ¢œÀ¢xÀ»¤À¢œÀ¢xÀ»¤N]]]Àº˜]Àº˜Àº˜€˜]Àº(]Àº(Àº(]]À¢œÀ¢xÀ»¤U€À¢hÀ¢œÀ®øÀ»„À¢œÀ®øÀ»„ À¢x À¢`À®ÄÀ¢œÀ¢xÀ®øÀ»„)]Àº(]Àº(]Àº˜]Àº˜À¢lÀ¢œÀ»0]Àº˜]Àº˜Àº˜€˜À¢œÀ»0]Àº˜]Àº˜ À¢lÀ»4 À¢œÀ»4À¢œÀ¢xÀ»ˆ€˜À¢œÀ¢xÀ»ˆ ]U%uUUYUÀ¡|À¡tUUYU À¢|À¢` ]U ]U À¢|À¶ˆ =À¡ =À¢`€²À»@À»HÀ»PÀ»X]U]UÀºuUUYUÀ¡|À¡tÀ¡|À¡tUUYUÀ®Ä]À¶Œ]À¶ŒÀ¶ŒUYUÀ¢|À¢`À¢lÀ¢œÀ¢xÀ»ˆ5€‰À¶À¶YÀ¶À¶]YÀ¶YÀ¶€• UÀ®äÀ¶x]YÀ¶€‰À¶À¶YÀ¶À¶]YÀ¶€‰À¶À¶YÀ¶À¶]YÀ¶YÀ¶À®äUÀ®äÀ®äÀ¢œÀ¢xÀ»¬& À»PÀ»\À»,ÀµÈÀ¢`À®ÄÀ¢œÀ¢xÀ»ˆ À¢ðÀ¢œÀ¶pÀ¢œÀ¢xÀ»œ€˜À¢œÀ¢xÀ»œ]Àº(]Àº(À¢lÀ¢œÀ¢xÀ»œ]Àº(]Àº(Àº(À¢œÀ¢xÀ»œUÀ®ÈÀ®ÈÀ¢lÀ¢œÀ¢xÀ»”À¢œÀ¢xÀ»”UÀ¢\UÀ®ìÀ¼` UÀ®ìUÀ¢\UÀ®ì_UÀ¢\UÀ®ìÀ¼PÀ¼XAEÀ¼\ÀµÈÀ¢`À®ÄÀ¼`ÀµÄUÀ®ìÀ¢\À¼PÀ¢lÀ¢œÀ¼p À¢œÀ¼pEEÀ¢xÀ»ŒYÀ»¬À»¸À»Ø]]YÀ¼$À¼(À»¸EÀ¢xÀ»ŒÀ¼(À¢œÀ¼0 À¼0À¢œÀ¼4,UÀ¢\À¢\À¢\À¢\UÀ®ìÀ¼4 À¢œÀ¼87 ]€]€]]]]À¢lÀ¢œÀ¼€ ]ÀµÈ ]ÀµÈ= À¼<]ÀµÈ]ÀµÈÀµÈ]U]UÀ¢`À®Ä À¢œÀ¼€ À¼„À¢lÀ¢œÀ¼„ À¢\À¢\À¢\À¢`À¢\ À®ÄÀ¢`À¢\ À¢\À¢\ À¢\À¢\À¢`À¢\À¢`À®ÄÀ¢`4YÀ¼$Y]À¼€]À¼€À®ÄÀ¢|À¢` À¢œÀ¼„ =À¢` „ýÀ¢` „ý =À¢` €íÀ¢` €í=‚ñ‚ñ=À¢`À¢|À¢`À¢œYÀ¼$À¼$À¢œÀ¢|À¢` À¢|À¢p =À¢p À¢|À¶ˆ =À¶ˆ =À¡ =À¢Œ =À¢„ €íÀ»ˆ =À¢ =À¢” =À¢˜==À¡” À¢|A À¢|À¢`À¢  „ýÀ¢p =À¢p €íÀ¢p =À¢p À¢|À¢p „ýÀ¶ˆ =À¶ˆ €íÀ¶ˆ =À¶ˆ „ýÀ¢Œ =À¢Œ „ýÀ¢„ =À¢„ „ýÀ¢ =À¢ €íÀ¢ „ýÀ¢” =À¢” €íÀ¢” „ýÀ¢˜ =À¢˜ =À¢˜YUYU€í=„ý= À¢|À¢`&€áYUYUÀ¡”À¢ A€ÉÀ¢`€áYUYUÀ¡”À¢ X3À¢œ€˜€˜À¢|À¢`À¢|À¢`À¢|À¢p=À¢pÀ¢|À¶ˆ=À¶ˆ€íÀ¶=À¡À¢|À¢Œ=À¢ŒÀ¢|À¢„=À¢„€íÀ»ˆÀ¢|À¢=À¢À¢|À¢”=À¢”À¢|À¢˜=À¢˜]U==]UÀ®ÄÀ¡”À¢|A‚EÀ¢|À¢`À¢`À¢|À¢`À¢ o €ÉÀ¢`€áYUYUÀ¡”À¢ €ÕYUU€ÀµÌÀ¼„ À£ä AAÀ¢`À¢`À¢`À¢`À®Ä€ÕYUUB€ÉÀ¢`€áYUYUÀ¡”À¢ YUYU UÀ£à UUÀ£àYUYUYUU€ÕYUU UÀ£à eAAAEu AAA  UU À¢`UUÀ¢` U1UYUYUYUUÀ¡”À¢ -€ÉYUUUÀ¡”À¢ ýv€ÕYUU€ÉÀ¢`€áYUYUÀ¡”À¢ À¢`YUYUÀ¡”À¢ UÀ£àUÀ£àUAAAUÀ£àUÀ£àUÀ£àUÀ£àUÀ£àUÀ£àUÀ£àUUÀ®Ä€ÕÀ¢`À¢`À¢`€˜À¢`À¢\À¢\UÀ£àUÀ£àUÀ£àUÀ£àÀ£àYUYUEUYUYUYUEU5G€ÉYUUUÀ¡”À¢ €ÀµÌÀ¼„… … …À£à ‚ñ‚ñ À£àE ƒµ]‚ñ‚ñ]… ……… … … … ƒµ  …! ]EÀ²œ……E E# ]AÀ¡”À£àÀ£àEÀ¢< €áÀ¡”À£àÀ£àAÀ¢ .€ÉYUUUÀ¡”À¢ YUUÀ²8 Ye e UU€áÀ¡”À£àÀ£àAÀ¢ ‚Ñ€—]À¢<]À¼€]À¼€À¼„]]À¢<À¢<]À¼€]……€áÀ¡”À£àÀ£àAÀ¢ €áÀ¡”À£àÀ£àAÀ¢ UÀ£àUÀ£àUÀ£àUÀ£àUÀ£àÀ£àUÀ£àÀ£à€ÀµÜÀµÄ]€]€€€ÉYUUUÀ¡”À¢ ]YUUÀ¡”À¢ UÀ£àUÀ£àUÀ£àÀ£àUÀ£àÀ£àUÀ£àÀ£àUÀ£àÀ£àÀ£àUÀ£àUÀ£àUÀ£àUÀ£àÀ£àUÀ£àUÀ£àÀ£àUÀ£àÀ£àUÀ£àÀ£àÀ²8YeYUÀ£àÀ£àUÀ£àÀ£àUÀ£àÀ£à]À¶€]À¶€U AEEÀµÌÀ¢<% À¢ ÀµÌ]]À¢<À¼„À¤À¤EÀ¢ À¤À¼„ A AE A AE AE A A AE A A AEA AE A AE ] €Õ] ] $eA A AE€©EEu  A A AE ‚ ] A A AE E  a À¡p À¡pÀ¡p À¡p(À¡t(À¡p À¡t À¡p À¡tÀ¡p À¡tÀ¡t À¡t À¡x À¡xÀ¡x À¡x  À¡| À¡|À¡|AAAA À¡|(À¡t(]UÀ¡xÀ¡x(À¡| À¡t ]UÀ¡xÀ¡x À¡|( À¡pÀ¡t]UÀ¡xÀ¡xÀ¡| ]UÀ¡xÀ¡xaÀ¡tÀ¡t À¡À¡À¡tÀ¡tÀ¡À¡tÀ¡t À¡À¡(À¶ˆ(À¡ À¶ˆ À¡ ]À¶ˆÀ¡ UÀ¡|À¡| À¡|À¡| UÀ¡| AUÀ¡|UÀ¡|]€ÕYÀ¡|€ÕYÀ¡| UÀ¡| €ÕYÀ¡| YÀ¡|€ÕYÀ¡|€¥€ÕYÀ¡|]€ÕYÀ¡|<À¡|]€ÕYÀ¡|€ÕYÀ¡|]€ÕYÀ¡|5 €¥€ÕYÀ¡|€¥€ÕYÀ¡|UÀ¡|U€ÕYÀ¡|€ÕYÀ¡| À¡|U€ÕYÀ¡| À¡|À¡| €ÕÀ²”À²˜ €á€á€á EÀ¡| €ÕÀ²” EÀ¡t& €ÕÀ²”À²˜UÀ¡|€Õ YÀ¡|€¥€ÕYÀ¡| UÀ¡|€¥€ÕYÀ¡| U€ÕYÀ¡|À¡|w UÀ¡|]UÀ¡xÀ¡x]UÀ¡xÀ¡xÀ¡xÀ¡xYÀ¡|€¥€ÕYÀ¡|€¥€ÕYÀ¡|€ÕÀ²” EÀ¡  YÀ¶ˆ! À¡”À¶ˆYÀ¶ˆU YÀ¶ˆ   YÀ¶ˆ 1U U YU YÀ¡p À¡À¡pYÀ¡p 1À¡p YÀ¡p YÀ¡pAAAAA AAAAA AAAA AAAAAA" AAAAAAAAAAA AAAAA3eAAAAAAE€! AAAAAA A,À¡xÀ¡xAAAAAA UÀ¡xÀ¡xAAAAAE AAAAAE AAAAE# AAAAAAEAAAAAE AAAAAE AYE AYE EY AAYE AYE AYE À¡tÀ¡pYÀ¡p À¢<À¢<À¢<eAÀ¢<E AÀ¢< AÀ¢<À¢DÀ¢HÀ¢L4 À¢DÀ¢DÀ¢HÀ¢HÀ¢LÀ¢LaÀ¢<À¢<À¢< À¢<6 À¢<À¢DÀ¢DÀ¢HÀ¢HÀ¢LÀ¢LÀ¢<À¢<À¢<À¢DÀ¢HÀ¢LÀ¢< À¢LÀ¢<À¢HÀ¢LÀ¢<1 À¢DÀ¢DÀ¢HÀ¢HÀ¢LÀ¢LÀ¢<À¢<À¢< À¢À¢œÀ£4À¢x]À¹¸Au]À¤DYÀ¡tu]À¤DYÀ¡tÀ¤D1YU]€áÀ£YUÀ¤DYÀ¡t]€áÀ£UÀ¤DYÀ¡tYUÀ¤DYÀ¡t,U]€áÀ£YUÀ¤DYÀ¡t0YU]€áÀ£YUÀ¤DYÀ¡t< UÀºÀ¹¸U]€áÀ£YUÀ¤DYÀ¡tM U]€áÀ£YUÀ¤DYÀ¡tU]€áÀ£YÀ¤D7 U]€áÀ£YUÀ¤DYÀ¡tYÀ¡t u]À¤DYÀ¡t€ÔÀ¹ÌÀ¹àÀ¹¸u]À¤DYÀ¡t]YÀ¡tÀ¤DYU]€áÀ£YUÀ¤DYÀ¡tÀ¹èÀ¹¸u]À¤DYÀ¡t]YÀ¡tÀ¤DÀ¹ìÀ¹ðÀ¢œÀ£4À¢xÀ¹ÀÀ¹°À·¼À¹à5u]À¤DYÀ¡tÀ¢œÀ£4À¢x]À¹¸À£4] À£4]À¤P! U]€áÀ£YÀ¤DÀ¤P À£4À¤D]€áÀ£€áÀ£"]€áÀ£€áÀ£#À£4]€áÀ£YÀ¤D3€áYUY€áÀ£À¡|YÀ¡t2€áYUY€áÀ£À¡|YÀ¡t€ØÀ£4u]À¤DYÀ¡tYÀ¡t]À¤D]Y€áÀ£YU€íYuU]YÀ¡|€áYUY€áÀ£À¡|YÀ¡tÀ¡|YÀ¡tYUY€áÀ£E€áYUY€áÀ£À¡|À¡tÀ¢œÀ¢xÀ¹¸U]Y uU]Y) €˜€Õ€Õ€ÕY€ € u u ‚%‚ñ‚ñu À¤4 UUÀ£À£( €áÀ£€áÀ£ À¡tÀ¡t €í E‚% E€À¤DÀ¤D*À¤DYU]€áÀ£YÀ¤DÀ¤DeAÀ¤DE AÀ¤D AÀ¤D$YU]€áÀ£YÀ¤Da À¤PÀ¤PaYU]€áÀ£YÀ¤DYU]€áÀ£YÀ¤DÀ¤DÀ¤D À¤Dc À¤DÀ¤PÀ¤PYU]€áÀ£YÀ¤DYU]€áÀ£YÀ¤DÀ¤DÀ¤DÀ¤P% YU]€áÀ£YÀ¤DÀ¤PÀ¤PÀ¤DÀ¤D À¤D\WMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryWriter+Codebuf+SEHTree+_Tip@DebugTypeProxy%(YU]€áÀ£YÀ¤D& YU]€áÀ£YÀ¤D% YU]€áÀ£YÀ¤D\WMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryWriter+Codebuf+SEHTree+Node@DebugTypeProxyÀ¤L À¤L À¤P À¢œÀ¶Àµì  ‚ñ‚ñ À¡pÀ¹¬ À¹¬ À¢œÀ£4À¢x€ÀºÀ¹¸Àº À¹¸u]À¤DYÀ¡t]YÀ¡tÀ¤Du]À¤DYÀ¡t]YÀ¡tÀ¤DÀºÀ¶UÀ®È< U]€áÀ£YUÀ¤DYÀ¡tUÀºÀ¹¸ À¤DUÀ¤DYÀ¡tYUÀ¤DYÀ¡t UÀ¤DYÀ¡tÀ¤D*]€áÀ£YUÀ¤DYÀ¡tM U]€áÀ£YÀ¤DU]€áÀ£YUÀ¤DYÀ¡t YÀ¡tUÀ¤DYÀ¡t UÀ¤DYÀ¡tYÀ¡t; YYÀ¡tU]€áÀ£YUÀ¤DYÀ¡tAu]À¤DYÀ¡t À¤ u]À¤DYÀ¡t? À¢œÀ£4À¢x€Õ]€ÕYÀ¤D€ÕYYÀ¡tu]À¤DYÀ¡t EÀ¹¸0 u]À¤DYÀ¡tu]À¤DYÀ¡t YÀ¤D]€áÀ£YÀ¤D# EU]€áÀ£YÀ¤D EÀ¤D À¡|À¡| AAE €Õ] eYUÀ·¼€Õ]À¤øÀ¨LÀ¤´€ÄU€¡À¨ÀØÈÀ¤Ø…À¤¸À¤ÌÀ¤Ð €Õ]…]…À¤Ø…À¤¸À¤ÌÀ¤ÐÀ¤ÐÀ¤Ø… À¤¸À¤ÌÀ¤Ð À¤Ð À¤Ð  À¤ÐÀ¤Ø…À¤ÌÀ¤¸À¤ÐÀ¤ÐÀ¤à À¤àÀ¤Ð  À¤Ð À¤ÐÀ¤àÀ¤Ì À¤ÐÀ¤Ð UÀ®Ä UÀ®Ä À¤ðÀ®È  À®ÈÀ®ÄÀ¤ðÀ®ÈÀ®Ä À¤ðÀ®ä À®äÀ®ÄÀ¤ðÀ®äÀ®Ä À¤ðÀ¤ðAÀ¤ÐUUU UU U UUUU UUU U U UU  U U U U  U  U U U  U  U U  U U U U  U   U # UUUUU UU UY U+UYAAUYU UU U U< À·œÀ·œÀ·¤À·¤À·”À·”À·¬À·¬]À¶]À¶ À¤ôUÀ·œÀ·¤AUÀ·œÀ·¤(À·”À·”]À¶]À¶À·¬À·¬AUÀ·œÀ·¤À¤ô AÀ·¤2À·œÀ·œÀ·”À·”]À¶]À¶À·¬À·¬AÀ·¤À¤ô AÀ·”2À·œÀ·œÀ·¤À·¤]À¶]À¶À·¬À·¬AÀ·”À¤ôU]À¶À·”AU]À¶À·” À·œÀ·œÀ·¤À·¤À·¬À·¬"AU]À¶À·”À¤ô AÀ·¬2À·œÀ·œÀ·¤À·¤À·”À·”]À¶]À¶AÀ·¬À¤ôAUÀ·œÀ·¤À·¼AUÀ·œÀ·¤À·¼AÀ¤ôÀ·¼À·D AÀ·¼ A À·¼ AÀ·¼ A À·¼ A À·¼!AUÀ·œÀ·¤AÀ¶|À·¼AÀ·¤AÀ¶|À·¼AÀ¶|À·¼)AÀ·”AUÀ¶x]YÀ¶À·¼ AUÀ¶x]YÀ¶À·¼6AU]À¶À·”AUÀ¶x]YÀ¶À·¼AUÀ·¼ AÀ·¼AUYÀ·¼AÀ·LÀ·¼)AÀ·”AUÀ¶h]YÀ¶À·¼AÀ¶À·¼AÀ·¬AÀ¶À·¼!AUÀ·œÀ·¤AÀ¶À·¼ UÀ¤øYUÀ¤ø³AÀ·¼AUÀ·œÀ·¤À·¼A À·¼AÀ·¼A À·¼A À·¼AUÀ·œÀ·¤AÀ¶|À·¼AÀ·¤AÀ¶|À·¼AÀ¶|À·¼AÀ·”AUÀ¶x]YÀ¶À·¼AUÀ¶x]YÀ¶À·¼AU]À¶À·”AUÀ¶x]YÀ¶À·¼AUÀ·¼AÀ·¼AUYÀ·¼AÀ·LÀ·¼AÀ·”AUÀ¶h]YÀ¶À·¼AÀ¶À·¼AÀ·¬AÀ¶À·¼AUÀ·œÀ·¤AÀ¶À·¼YUÀ¤ø€Õ]À¤øÀ¤øÀ¤ø‚ñ‚ñÀ¤øÀ¤øUÀ¤øÀ¤øAUÀ¤øE À¤ø UÀ¤ø ]À¤ø€Õ]À¤øÀ¤øÀ¤øAUÀ¤øE ]À¤ø]À¤ø]À¤øÀ¤øÀ¨D À¨DÀ®Ä ÙÀ¨<EÀ¨L UÀ®Ì À¤ðÀ®Ì À¤ðÀ®Ì UÀ®Ì0 UÀ®ÌÀ¤ðÀ®ÌÀ®ÌUÀ®ÌÀ®ÌÀ¤ðÀ®ÌÀ¤ðÀ®Ì UÀ®à À¤ðÀ®à À¤ðÀ®à UÀ®à0 UÀ®àÀ¤ðÀ®àÀ®àUÀ®àÀ®àÀ¤ðÀ®àÀ¤ðÀ®à UÀ®Ð À¤ðÀ®Ð À¤ðÀ®Ð UÀ®Ð0 UÀ®ÐÀ¤ðÀ®ÐÀ®ÐUÀ®ÐÀ®ÐÀ¤ðÀ®ÐÀ¤ðÀ®Ð UÀ®è À¤ðÀ®è À¤ðÀ®è UÀ®è0 UÀ®èÀ¤ðÀ®èÀ®èUÀ®èÀ®èÀ¤ðÀ®èÀ¤ðÀ®è UÀ®Ø À¤ðÀ®Ø À¤ðÀ®Ø UÀ®Ø0 UÀ®ØÀ¤ðÀ®ØÀ®ØUÀ®ØÀ®ØÀ¤ðÀ®ØÀ¤ðÀ®Ø UÀ®Ô À¤ðÀ®Ô À¤ðÀ®Ô UÀ®Ô0 UÀ®ÔÀ¤ðÀ®ÔÀ®ÔUÀ®ÔÀ®ÔÀ¤ðÀ®ÔÀ¤ðÀ®Ô UÀ®ø À¤ðÀ®ø À¤ðÀ®ø UÀ®ø0 UÀ®øÀ¤ðÀ®øÀ®øUÀ®øÀ®øÀ¤ðÀ®øÀ¤ðÀ®ø€Õ€í À¨€ €Õ€í À¨„ €Õ€í€Õ€Õ€í€ÕAAA€Õ€í À¨ˆ€Õ€í À¨Œ €Õ€í€Õ€Õ€í€ÕAAAY*YAAAAE €ÕY €ÕY€ÕY)YAAAA]YY)]AAAA]]%AAAA$aYÀ¶YÀ¶À¶À¶À¨”À¨”E, À¶À¶YÀ¶YÀ¶À¶À¶aÀ¨”À¨”EÀ¨”2À¨”À¨”À¶À¶À¶À¶YÀ¶YÀ¶À¨”À¨”ÙE ]YÀ¶$aYÀ¶YÀ¶À¶À¶À¨˜À¨˜E!YÀ¶YÀ¶À¶À¶aÀ¨˜À¨˜EÀ¨˜ À¨˜ ÙÀ¨˜E2À¨˜À¨˜À¶À¶À¶À¶YÀ¶YÀ¶À¨˜À¨˜ÙEÀ¤Ð À®ÄÀ¨œÀ¨œ €á€áÀ¨œ À®ôuÀ¤ðÀ®ôuÀ¤ðÀ®ôÀ¨œÀ¨œ À¨œ À®È€À¤ðÀ®ÈÀ¨œ'€À¤ðÀ®È€Õ]À¨œÀ¤ÐuÀ¨œ €€À¨œUÀ¤ðÀ®È"UÀ¤ðÀ®È€Õ]À¨œ À®ÜuÀ¤ðÀ®ÜuÀ¤ðÀ®ÜÀ¨œ À®ÌuÀ¤ðÀ®Ì#uÀ¤ðÀ®Ì€Õ]À¨œ À®Ð À®ðuÀ¤ðÀ®ÐÀ¤ðÀ®ð%uÀ¤ðÀ®ÐÀ¤ðÀ®ðÀ¨œ À®ÔUÀ¤ðÀ®Ô"UÀ¤ðÀ®Ô€Õ]À¨œ À®ØuÀ¤ðÀ®ØuÀ¤ðÀ®ØÀ¨œuuÀ¨œUÀ¨œ À¨œuÀ¤ðÀ®ÈuÀ¤ðÀ®ÈÀ¨œU€Õ]À¨œ À®àuÀ¤ðÀ®à À¨œÀ¤Ð#uÀ¤ðÀ®à€Õ]À¨œ À®äuÀ¤ðÀ®äÀ¤ðÀ®ä%uÀ¤ðÀ®äÀ¤ðÀ®äÀ¨œ À®è€À¤ðÀ®è€À¤ðÀ®èÀ¨œ€ÉU€ÉUÀ¨œ€ÉU€ÉUÀ¨œ À®ì€áÀ¤ðÀ®ì€áÀ¤ðÀ®ìÀ¨œ€À¤ðÀ®ì€À¤ðÀ®ìÀ¨œ À®ø€áÀ¤ðÀ®ø€áÀ¤ðÀ®øÀ¨œUÀ¤ðÀ®ÈÀ¨œUÀ¤ðÀ®äUÀ¤ðÀ®äÀ¨œ À¨œÀ¤Ð€Õ]À¨œÀ¨œ ]À¨œ€Õ]À¨œ]À¨œYeÀ¨œ€ÕYU € YU€ÕYU U U€Á0 YU€ÕYU€YYÀ¨œYUEeY€Õ]À¨œAAAA)eAAAAE€ AAAA )YYÀ¤ÐAAAAÀ¨œY eYYÀ¨œ À¨œ À¨œÀ®Ä €á Y€YÀ·,eÀ¼$€áYe]'À¼„À¨œU]À¶€ €ÉU9€ÉU]À¼<]ÀµÈÀ®Ä À¼€À¨œ€ÉU:À¨œ€ÉU]Àµ¨]]ÀµÄ€Õ]À¨œ ÀµÈÀ¨œ u ]U uU ]U]U]U À»ØÀ¨œÀº À»ìÀ»¸À¨œ]À¶À¶À¼ ]À¶EÀ¼ ]À¶À»ä]]UYÀ¨œ À¨œ€À¤ðÀ®È€À¤ðÀ®ÈUÀ¨œ €À¤ðÀ®È U€À¤ðÀ®ÈU(U€À¤ðÀ®ÈUÀ¨œ]€YÀ·,eÀ¼$9 €À¤ðÀ®ÈUYYÀ·,eÀ¼$&]€YÀ·,eÀ¼$À¨œ]€YÀ·,eÀ¼$ €YÀ·,eÀ¼$]€YÀ·,eÀ¼$&Y€YÀ·,eÀ¼$À¨œE À¼(À¨œAÀ¤ðÀ®ÈÀ¶ UÀ¤ðÀ®ÈÀ¶%AÀ¤ðÀ®ÈÀ¶À¶ YÀ¶YÀ¶À¨œYÀ»„À¨œÀ®øYUÀ»„- €áÀ¤ðÀ®øÀ¤ðÀ®øUÀ»„ UÀ»„ UÀ»„À»„(À®øÀ¨œYUÀ»„À¤ðÀ®øYÀ»„€Õ]À¨œÀ¨|YÀ¶À¶ À¨œÀ¶€Õ]À¨œÀ¨P U%Y€À¤ðÀ®ÈÀ¶ À¶À¨œuÀ¤ðÀ®ô À¤ðÀ®ôUÀµÌYUÀµÌY@ À¨œuÀ¤ðÀ®ôÀ¤ðÀ®ôUÀµÌYÀµÌYÀ¶€Õ]À¨œÀ¶€Õ]À¨œÀ¨T À¤ðÀ®È#UÀ®ÈÀ¤ðÀ®ÈÀ®ÈÀ®È'À¶À¨œÀ¶ YÀ¶À¤ðÀ®ÈÀ¶À¨œÀ¤ðÀ®È UÀ®Ü À¤ðÀ®Ü À¤ðÀ®Ü UÀ®ÜO UÀ®ÜÀ¤ðÀ®ÜÀ®ÜÀ®ÜÀ¶ YÀ¶À¨”À¶À¶À¶YÀ¶À¶À¨œÀ¤ðÀ®Ü À¤ðÀ®ä(UÀ®äÀ¤ðÀ®äÀ®äÀ®äÀ¨”À¨˜À¨œÀ¤ðÀ®äC À¨˜]YÀ¶À¶YÀ¶À¶À¶YÀ¶]YÀ¶À¨”À¨œÀ¤ðÀ®ä À¤ðÀ®ð À¤ðÀ®ðJ UÀ®ðÀ¤ðÀ®ðÀ®ðÀ®ðÀ¨”À¶YÀ¶À¶À¶YÀ¶À¶xÀ¨œÀ¤ðÀ®ð À¤ðÀ®ì À¤ðÀ®ì#UÀ®ìÀ¤ðÀ®ìÀ®ìÀ®ìÀµÌÀ¨œÀ¤ðÀ®ì À¤ðÀ®ô(UÀ®ôÀ¤ðÀ®ôÀ®ôÀ®ôÀ¶!UÀµÌYÀ¨œÀ¤ðÀ®ôÀ¤ðÀ®ÈÀ¤ðÀ®È"]À¶À¨œÀ¶ À¤ðÀ®È$ UÀ¤ðÀ®ÔÀ¤ðÀ®ÔÀº˜6uÀº ]Àº(]Àº˜À¤ðÀ®ÔÀ»¤À¨œÀ»¨À¨œ YÀ»ˆÀ»ŒÀ¨œUÀ¤ðÀ®ÈUÀ¤ðÀ®ÈU]]YYUÀ¤ðÀ®ÈUYÀ¶ UÀ¶ UY UÀ¶UYÀ¶ UÀ¶€®!UUUÀ¤ðÀ®ÈÀ¤ðÀ®ÈUUYÀ¶YÀ¶UÀ¶À¶UUYYUUYYU]]UÀ¶À¶UÀ¶À¨œUYÀ¶À¨œUYÀ¶]YÀ¶UUYÀ¶]YÀ¶1UUYÀ¶YÀ¶UÀ¶À¶4UUYÀ¶]YÀ¶À¨œYÀ¶ UÀºUUUÀ¶UÀºÀ¨œ UUYÀ¶]YÀ¶'€À¶À¶YÀ¶]YÀ¶aÀ¨œUUÀ¶À¶UUUÀ¶À¶UUYÀ¶]YÀ¶<€À¶À¶YÀ¶]YÀ¶€Õ]À¨œÀ¨XÀ¶À¨œÀ¨œUÀ¶€Õ]À¨œÀ¨\uÀµüÀ¶YÀ¶OÀ¨œUÀµü‚ñ‚ñUUÀ¶À¶UYÀ¶YÀ¶,uÀµüÀ¶YÀ¶€Õ]À¨œÀ¨`UYÀº À¨œUUYÀº€Õ]À¨œÀ¨dÀµüÀµô UÀ¶À¨˜À¨œuÀ¤ðÀ®Ü(€À¶À¶YÀ¶]YÀ¶i À¨œuÀ¤ðÀ®ÜÀ¤ðÀ®ÜÀ¶€À¶À¶YÀ¶]YÀ¶]YÀ¶À¶À¨˜€Õ]À¨œÀ¨h6À¨˜]YÀ¶À¶YÀ¶À¶À¶YÀ¶À¨”À¨œUÀ¤ðÀ®äSÀ¨œUÀ¤ðÀ®äÀ¤ðÀ®äÀ¨˜U‚ñ‚ñUUYÀ¶À¨˜€Õ]À¨œÀ¨l4 À¨œuÀ¤ðÀ®ÜÀ¤ðÀ®ÜÀ¶À¶À¶|€Õ]À¨œÀ¨p À¨”À¨œM UU€À¤ðÀ®ÈUUU€À¤ðÀ®ÈU€‚À¨œ€€À¶À¶YÀ¶]YÀ¶]YÀ¶À¶À¶YÀ¶]YÀ¶YÀ¶YÀ¶À¶ À¨”€Õ]À¨œ* À¨œuÀ¶YÀ¶À¶À¶ À¶|€Õ]À¨œUÀ»4YÀ»0À»lUÀ»4YÀ»0 À»P€Ã0€€À¶À¶YÀ¶]YÀ¶]YÀ¶À¶À¶YÀ¶]YÀ¶UÀ»4YÀ»0À»4YÀ»0Àº ÀºôÀ®ÄÀ»lYÀ»„À·,À»ˆÀ¨œ À»0À¶ €ÕÀ»4 €ÕÀ»4À¶!€ÕÀ»4À»0À¶À»0)UÀ»4YÀ»0À¨œÀ¶YÀ¶Àº˜À¨œÀ¤ðÀ®Ô3uÀ·,À»4À»0]Àº˜]Àº(À¨œ€ÕÀ»4À»0 YÀ»¬À»°À¨œ* uÀ¤ðÀ®àÀ¤ðÀ®àUÀ¶p UÀ¶p UÀ¶pÀ¶pYÀ¶pÀ¨œÀ¤ðÀ®à YÀ¶pYÀ¶pYÀ¶pÀ¶p]À¶pÀ¨œÀ¤ðÀ®àÀ¶pÀ¨œÀ¤ðÀ®àuÀ¤ðÀ®È$uÀ¤ðÀ®ÈÀ¤ðÀ®ÈÀ»”À¨œÀ»˜À¨œuÀµüÀ¶YÀ¶`uuÀµüÀ¶YÀ¶À¶ÀµüYÀ¶]À¶p]À¶pÀµü]À¶pÀ¶pÀ¶À»œÀ¨œÀ» À¨œÀ·,À¨œÀ¤ðÀ®ÐUÀ®ðÀ¤ðÀ®ðÀ®ðÀ·(À¨œÀ¤ðÀ®ðÀ®ðÀ¨œ]À·(€Õ]À¨œÀ¨t YÀºðÀºôÀ¨œÀ¤ðÀ®ØÀºðÀ¨œ À¨œÀºð€Õ]À¨œÀ¨xÀº(À¨œE& uÀ¤ðÀ®ÌÀ¤ðÀ®ÌU UÀº(À¨œÀ¤ðÀ®ÌÀ»hÀ¨œ]€í €íÀ¤Ð$À¨œ€Õ€Õ€Õ€ÕE€í€íÀ¤ô€ÕYUÀ¶ŒYUÀ¶Œ UÀ¶Œ UÀ®ÄÀ¥AÀ¤ôAÀ·¼À¥À¥À¥ AÀ¤ôA À·¼À¥AÀ¤ôAÀ·¼À¥À¥AÀ¤ôA À·¼À¥AÀ¤ôA À·¼À¥ AÀ¤ôAÀ¶|À·¼À¥$)AÀ¤ôAUÀ¶x]YÀ¶À·¼À¥HAÀ¤ôAÀ¶À·¼À¥8AÀ¤ôAÀ·¼À¥0AÀ¤ôAUÀ·¼À¥4À¥(À¥,À¥@AÀ¤ôAÀ·LÀ·¼À¥D)AÀ¤ôAUÀ¶h]YÀ¶À·¼À¥<AÀ¤ôAUYÀ·¼€ÕYUÀ¶ŒYUÀ¶Œ UÀ¶Œ UÀ¶Œ AÀ¤ô AÀ¤ô AÀ¤ô AÀ¤ô AÀ¤ô AÀ¤ôÀ¶|UÀ¶x]YÀ¶AÀ¤ôUÀ¶x]YÀ¶AÀ¤ôÀ¶ AÀ¤ôAÀ¤ôUAÀ¤ôÀ·LUÀ¶h]YÀ¶AÀ¤ôUÀ¶h]YÀ¶AÀ¤ôUY€À·¼AAA‚ÛR€í€íA=À·¼€ÕÀ¤ô€Õ€Õ€Õ€ÕYUÀ¶ŒYUÀ¶ŒYUÀ¶ŒÀ¶ŒYUÀ¶ŒUÀ¶ŒÀ¤ÐUÀ®ÄÀ¶À¤øÀ¥AÀ¤ôAÀ·¼À¥À¥À¥ AÀ¤ôA À·¼ À¥AÀ¤ôAÀ·¼À¥À¥AÀ¤ôA À·¼ À¥AÀ¤ôA À·¼ À¥ AÀ¤ôAÀ¶|À·¼À®ÄÀ®ÄÀ¥$AÀ¤ôAUÀ¶x]YÀ¶À·¼À¨˜]YÀ¶YÀ¶À¶À¶YÀ¶À¶$À¶ÀµìÀ¶xÀ¥HAÀ¤ôAÀ¶À·¼À¥8AÀ¤ôAÀ·¼À¥0AÀ¤ôAUÀ·¼À¥4À¥(À¥,‚ñ‚ñÀ¥@AÀ¤ôAÀ·LÀ·¼À¨”À¥DAÀ¤ôAUÀ¶h]YÀ¶À·¼€À¶À¶YÀ¶]YÀ¶À¥<AÀ¤ôAUYÀ·¼YYAA5€À·¼AAAÀ¨œYUÀ¶ŒUÀ¶ŒAÀ¶ˆÀ²´À²¬ YÀ²¬ À²¬ À²¬À¹¬ À²°YAAÀ½´ À²°YAAÀ½´"UÀ²¬YÀ²¬YÀ¹¬YAAÀ½´À²°À»hÀ¨œeYUÀºÈ ÀºÈ ÀºÈÀ¨œ UÀº˜ Àº˜À¨œ UÀº˜eYUÀº˜ Àº˜e!UUUUUUUUUUÀº˜Àº˜‚ñ‚ñUÀº˜À¨œ YÀ¼pÀ¼tÀ¨œE YÀ¼0 À¼4À¨œ YÀ¼8À¼<À¨œE €íÀ¶ˆ€íÀ¶ˆÀ²¤]UÀ² AÀ¶ˆÀ² À²¤ €íÀ¶ˆ AÀ¶ˆÀ²¤UÀ² AÀ¶ˆ]UÀ² AÀ¶ˆI ]]]UÀ² AÀ¶ˆÀ² À²¤€íÀ¶ˆAÀ¶ˆ]UÀ² AÀ¶ˆÀ¤´ À¤Ð À¤Ð À¤Ð ‚ñ‚ñÀ¤Ð À¤ÐÀ¤ÐU ]U€Õ€Õ€Õ]UÀ¤Ð À¤Ð]UÀ¤Ð ]U ]UUÀ¤Ð À®Ä À¨DÀ®ÄÀ¨< YÀ¨< 1À¨< YÀ¨< 1À¨< YÀ¨<"YÀ¨<1À¨<YÀ¨<5À¨LAAÀ¤ÐE Yu AUÀ¨L uY €ÕY AÀ®ÄAAÀµÄAÀµÄ!AAÀ¨lÀ¨˜AÀ¨lÀ¨˜!AAÀ¨hÀ¨˜AÀ¨hÀ¨˜!AAÀ¨tÀ·(AÀ¨tÀ·(AAÀ¶AÀ¶!AAÀ¨TÀ¶AÀ¨TÀ¶EAAÀ¨`uÀµüÀ¶YÀ¶AÀ¨`uÀµüÀ¶YÀ¶!AAÀ¨\À¶AÀ¨\À¶eAAÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨X€À¶À¶YÀ¶]YÀ¶!AAÀ¨PÀ¶AÀ¨PÀ¶AAÀ¨”AÀ¨”)AAÀ¨|YÀ»„AÀ¨|YÀ»„AAÀ¶|AÀ¶|AAAAAAAAUAU3AAuÀ¤ðÀ®ÌAuÀ¤ðÀ®Ì3AAuÀ¤ðÀ®àAuÀ¤ðÀ®à;AA€À¤ðÀ®ÈA€À¤ðÀ®È1AAUÀ¤ðÀ®ÈAUÀ¤ðÀ®È1AAUÀ¤ðÀ®ÔAUÀ¤ðÀ®ÔAÀ®ÄA€Õ]À¨œA AUAuÀ¤ðÀ®ÌAuÀ¤ðÀ®àA€À¤ðÀ®ÈAUÀ¤ðÀ®ÈAUÀ¤ðÀ®Ô AÀµÄAÀ¨lÀ¨˜AÀ¨hÀ¨˜AÀ¨pÀ¶|AÀ¨tÀ·(AÀ¨xÀºð AÀ¶!AÀ¨`uÀµüÀ¶YÀ¶AÀ¨\À¶1AÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨dYÀºAÀ¨PÀ¶AÀ¨TÀ¶ AÀ¨”AÀ¨|YÀ»„ AÀ¶|$eAAÀ¤ÐEEEUÀ¤Ð EAAÀ¤ÐE AÀ¤Ð €ÕY uYÀ¨L ÀµÄ À¨lÀ¨˜ À¨hÀ¨˜ À¨tÀ·( À¶ À¨TÀ¶! À¨`uÀµüÀ¶YÀ¶ À¨\À¶1 À¨X€À¶À¶YÀ¶]YÀ¶ À¨PÀ¶ À¨” À¨|YÀ»„ À¶|   U uÀ¤ðÀ®Ì uÀ¤ðÀ®à €À¤ðÀ®È UÀ¤ðÀ®È UÀ¤ðÀ®Ô€Õ]À¨œAAAAAAAAUAU2AAuÀ¤ðÀ®ÌAuÀ¤ðÀ®Ì2AAuÀ¤ðÀ®àAuÀ¤ðÀ®à:AA€À¤ðÀ®ÈA€À¤ðÀ®È0AAUÀ¤ðÀ®ÈAUÀ¤ðÀ®È0AAUÀ¤ðÀ®ÔAUÀ¤ðÀ®ÔAAÀµÄAÀµÄ AAÀ¨lÀ¨˜AÀ¨lÀ¨˜ AAÀ¨hÀ¨˜AÀ¨hÀ¨˜ AAÀ¨tÀ·(AÀ¨tÀ·(AAÀ¶AÀ¶DAAÀ¨`uÀµüÀ¶YÀ¶AÀ¨`uÀµüÀ¶YÀ¶ AAÀ¨\À¶AÀ¨\À¶dAAÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨X€À¶À¶YÀ¶]YÀ¶ AAÀ¨PÀ¶AÀ¨PÀ¶ AAÀ¨TÀ¶AÀ¨TÀ¶AAÀ¨”AÀ¨”(AAÀ¨|YÀ»„AÀ¨|YÀ»„AAÀ¶|AÀ¶| ]À¨œ YÀµÄ-uÀ¼„eYÀµÄ]UÀ² AÀ¶ˆ‡%€âAAÀ¤ÐE]À¶€YuAUUÀ®Ä‚ñ‚ñU]U]UUUUUÀ¨L uY€ÕY€ÕYAÀ®ÄAAÀµÄAÀµÄÀ®ÄAAÀ¨lÀ¨˜AÀ¨lÀ¨˜AAÀ¨hÀ¨˜AÀ¨hÀ¨˜AAÀ¨tÀ·(AÀ¨tÀ·(AAÀ¶AÀ¶AAÀ¨TÀ¶AÀ¨TÀ¶AAÀ¨`uÀµüÀ¶YÀ¶AÀ¨`uÀµüÀ¶YÀ¶AAÀ¨\À¶AÀ¨\À¶AAÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨X€À¶À¶YÀ¶]YÀ¶AAÀ¨PÀ¶AÀ¨PÀ¶AAÀ¨”AÀ¨”AAÀ¨|YÀ»„AÀ¨|YÀ»„AAÀ¶|AÀ¶|AAAAAAAAAAAUAUAAuÀ¤ðÀ®ÌAuÀ¤ðÀ®ÌAAuÀ¤ðÀ®àAuÀ¤ðÀ®àAA€À¤ðÀ®ÈA€À¤ðÀ®ÈAAUÀ¤ðÀ®ÈAUÀ¤ðÀ®ÈAAUÀ¤ðÀ®ÔAUÀ¤ðÀ®ÔAAUAU€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ]UÀ² AÀ¶ˆAÀ®ÄA€Õ]À¨œÀ¨œAAAAAUAuÀ¤ðÀ®ÌAuÀ¤ðÀ®àA€À¤ðÀ®ÈAUÀ¤ðÀ®ÈAUÀ¤ðÀ®ÔAUAÀµÄAÀ¨lÀ¨˜AÀ¨hÀ¨˜AÀ¨pÀ¶|AÀ¨tÀ·(AÀ¨xÀºðAÀ¶AÀ¨`uÀµüÀ¶YÀ¶AÀ¨\À¶AÀ¨X€À¶À¶YÀ¶]YÀ¶AÀ¨dYÀºAÀ¨PÀ¶AÀ¨TÀ¶AÀ¨”AÀ¨|YÀ»„AÀ¶|:uÀ¼„eYÀµÄ]UÀ² AÀ¶ˆÀ¤ÐÀ¤´À¨À¤´]UÀ² ]UÀ²  UÀ² ]UÀ² ]UÀ² .uÀ¼„eYÀµÄ]UÀ² AÀ¶ˆ… €Õ]…g À¨À¤ÌuÀ¼„eYÀµÄ]UÀ² AÀ¶ˆ]UÀ² AÀ¶ˆ…ƒµ…€Õ]… À¨À¤´€ÄU€¡À¨UU€¡ U€¡ ]À¨eYÀµÄU€¡ UU€¡€ÄU€¡À¨ ]À¨€ UU€¡UU€¡U€¡]À¨À¤¸uÀ¼„eYÀµÄ]UÀ² AÀ¶ˆ]UÀ² AÀ¶ˆÀ¼„eYÀµÄÀ¨KÀ¤¸uÀ¼„eYÀµÄ]UÀ² AÀ¶ˆ]UÀ² AÀ¶ˆÀ¨À¤´ ]À½  À¤¸ À¤¸À¤¸À¤¸ À¤¸ À¤¸ eAEEE EAEÀ¤¼     ‚E(À¤¼À¤¼ À¤¼ À¤¼ À¤¼À¤ÌÀ¤Ì À¤¼ À¤¼ À¤¼À¤¼ À¤ÌÀ¤Ð€Õ]… À¤ÐÀ¤¸ À¤ÐÀ¤ÌeAÀ¤ÐE AÀ¤Ð AÀ¤ÐÀ¤ÜÀ¤ØÀ¤ÜÀ¤àÀ¤ÐbÀ¤ÐÀ¤ØÀ¤Ø€Õ]…€Õ]…À¤ÜÀ¤ÜÀ¤¸À¤¸À¤àÀ¤àÀ¤ÌÀ¤ÌÀ¤ÐÀ¤ÐÀ¤Ð €Õ]…1 À¤ØÀ¤ØÀ¤ÜÀ¤ÜÀ¤àÀ¤àÀ¤ÐÀ¤ÐÀ¤Ð À¤Ð(€Õ]… €Õ]… €Õ]…YTMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+InputChannel+Chan@DebugTypeProxy(À¤¸ À¤¸ À¤¸XSMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+InputChannel+Mem@DebugTypeProxy(À¤Ì À¤Ì À¤ÌYTMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+InputChannel+MMap@DebugTypeProxy À¤Ø À¤Ü À¤à À¤ð À¤ðÀ¤ða À¤ð À¤ðÀ¤ðÀ¤ð À¤ðÀ¤ðÀ¤ðÀ¤ð À¤ð(À·œ(À·”(À·¤(À·¬ À·œ À·” À·¤ À·¬ À·œ À·” À·¤ À·¬ À·œÀ·”À·¤À·¬]À¶À¤øÀ¤øAÀ¤ôAÀ·¼À¤øAÀ¤ôÀ·¼À¤øAÀ¤ôA À·¼À¤øAÀ¤ôAÀ·¼À¤øAÀ¤ôA À·¼À¤øAÀ¤ôA À·¼À¤øAÀ¤ôAÀ¶|À·¼/À¤øAÀ¤ôAUÀ¶x]YÀ¶À·¼À¤øAÀ¤ôAUÀ·¼À¤øAÀ¤ôAÀ·¼#À¤øAÀ¤ôAUYÀ·¼À¤øAÀ¤ôAÀ·LÀ·¼/À¤øAÀ¤ôAUÀ¶h]YÀ¶À·¼À¤øAÀ¤ôAÀ¶À·¼À¤øeAÀ¤øE AÀ¤ø AÀ¤ø(AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼e`Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_u16_u8_instr@DebugTypeProxyfaMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_u16_u16_instr@DebugTypeProxy(AÀ¤ôÀ·¼AÀ¤ôÀ·¼ AÀ¤ôÀ·¼ AÀ¤ôÀ·¼c^Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_none_instr@DebugTypeProxy(AÀ¤ôA À·¼ AÀ¤ôA À·¼ AÀ¤ôA À·¼b]Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_i64_instr@DebugTypeProxy(AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼faMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_i32_i32_instr@DebugTypeProxye`Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_i32_i8_instr@DebugTypeProxy(AÀ¤ôA À·¼ AÀ¤ôA À·¼ AÀ¤ôA À·¼a\Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_r4_instr@DebugTypeProxy(AÀ¤ôA À·¼ AÀ¤ôA À·¼ AÀ¤ôA À·¼a\Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_r8_instr@DebugTypeProxy(AÀ¤ôAÀ¶|À·¼ AÀ¤ôAÀ¶|À·¼ AÀ¤ôAÀ¶|À·¼d_Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_field_instr@DebugTypeProxy*(AÀ¤ôAUÀ¶x]YÀ¶À·¼+ AÀ¤ôAUÀ¶x]YÀ¶À·¼* AÀ¤ôAUÀ¶x]YÀ¶À·¼e`Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_method_instr@DebugTypeProxypkMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_unconditional_i32_instr@DebugTypeProxyojMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_unconditional_i8_instr@DebugTypeProxy(AÀ¤ôAUÀ·¼ AÀ¤ôAUÀ·¼ AÀ¤ôAUÀ·¼niMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_conditional_i32_instr@DebugTypeProxymhMicrosoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_conditional_i8_instr@DebugTypeProxy(AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼ AÀ¤ôAÀ·¼e`Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_string_instr@DebugTypeProxy(AÀ¤ôAUYÀ·¼ AÀ¤ôAUYÀ·¼ AÀ¤ôAUYÀ·¼e`Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_switch_instr@DebugTypeProxy(AÀ¤ôAÀ·LÀ·¼ AÀ¤ôAÀ·LÀ·¼ AÀ¤ôAÀ·LÀ·¼b]Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_tok_instr@DebugTypeProxy*(AÀ¤ôAUÀ¶h]YÀ¶À·¼+ AÀ¤ôAUÀ¶h]YÀ¶À·¼* AÀ¤ôAUÀ¶h]YÀ¶À·¼b]Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_sig_instr@DebugTypeProxy(AÀ¤ôAÀ¶À·¼ AÀ¤ôAÀ¶À·¼ AÀ¤ôAÀ¶À·¼c^Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+ILInstrDecoder+I_type_instr@DebugTypeProxy À¥ À¥ À¥ À¥  À¥ À¥ À¥ À¥ À¥  À¥$ À¥( À¥, À¥0 À¥4 À¥8 À¥< À¥@ À¥D À¥H À·D À·œÀ·¤ À·¼UÀ·œÀ·¤ AUÀ·œÀ·¤À·¼ À·¼À¤ô À·¼ AÀ·¼ AÀ·¼ AÀ·¼À¤ô À·¼ A À·¼ A À·¼ A À·¼À¤ô À·¼ AÀ·¼ AÀ·¼ AÀ·¼À¤ô À·¼ A À·¼ A À·¼ A À·¼À¤ô À·¼ A À·¼ A À·¼ A À·¼À¤ô À·œÀ·¤ À·¼À¶| AÀ¶|À·¼UÀ·œÀ·¤# AUÀ·œÀ·¤AÀ¶|À·¼ AÀ¶|À·¼ AÀ¶|À·¼À¤ô À·¼À·¤À¶| AÀ·¤AÀ¶|À·¼ AÀ¶|À·¼À¶x]YÀ¶" À·¼À·”UÀ¶x]YÀ¶+ AÀ·”AUÀ¶x]YÀ¶À·¼! AUÀ¶x]YÀ¶À·¼& AUÀ¶x]YÀ¶À·¼À¤ô À·¼UÀ¶x]YÀ¶" AUÀ¶x]YÀ¶À·¼ ]À¶À·”À¶x]YÀ¶]À¶]À¶À·”3 AUÀ¶x]YÀ¶À·¼U]À¶À·”8 AU]À¶À·”AUÀ¶x]YÀ¶À·¼ À·¼U AUÀ·¼ AUÀ·¼ AUÀ·¼À¤ô À·¼ AÀ·¼ AÀ·¼ AÀ·¼À¤ôY À·¼UY AUYÀ·¼ AUYÀ·¼ AUYÀ·¼À¤ô À·¼À·L AÀ·LÀ·¼ AÀ·LÀ·¼ AÀ·LÀ·¼À¤ôÀ¶h]YÀ¶" À·¼À·”UÀ¶h]YÀ¶+ AÀ·”AUÀ¶h]YÀ¶À·¼! AUÀ¶h]YÀ¶À·¼& AUÀ¶h]YÀ¶À·¼À¤ô À·¼À¶ AÀ¶À·¼ AÀ¶À·¼ AÀ¶À·¼À¤ô À·¼À·¬À¶ AÀ·¬AÀ¶À·¼ AÀ¶À·¼UÀ·œÀ·¤# AUÀ·œÀ·¤AÀ¶À·¼ À¤øÀ¤øÀ¤ø EUÀ¤ø À¨8À¨8 À¨8À¨8 À¨8À¨<À¨<À¨< À¨<À®ÄeAÀ¨<E AÀ¨< AÀ¨<À¨DÀ¨DaÀ®ÄÀ®Ä À¨<À¨<À¨DÀ¨DÀ®ÄÀ®Ä À®ÄÀ¨DÀ¨D À¨<À¨<(À®Ä À®Ä À®Äb]Microsoft.FSharp.Compiler.AbstractIL.ILBinaryReader+RowElementKind+SimpleIndex@DebugTypeProxy À¨D (YÀ¨<À¨LYÀ¨< YÀ¨< YÀ¨<eAÀ¨LE AÀ¨L AÀ¨LÀ¨L YÀ¨ AÀ­(AA€©AÀ­(EAÀ­(EA€©AÀ­(EH AAA€©AÀ­(EAÀ­(AA€©AÀ­(EAÀ­(EBAA€©AÀ­(EAÀ­(AA€©AÀ­(EAÀ­(EC AA€©AÀ­(EAÀ­(AA€©AÀ­(EAÀ­(E E€©À­(!AAQAÀ­(EAÀ­(E# AAQAÀ­(EAÀ­(E AÀ­(EAQAÀ­(E*AÀ­(AAQAÀ­(EAÀ­(E, AÀ­(AAQAÀ­(EAÀ­(E"AAQAÀ­(EAÀ­(E' AAQAÀ­(EAÀ­(EÀ­(?AAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(EA AAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(E+AÀ­(AAQAÀ­(EAÀ­(E< AÀ­(AAQAÀ­(EAÀ­(EAQAÀ­(EF AAAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(E@AAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(EA AAQAÀ­(EAÀ­(AAQAÀ­(EAÀ­(E EQÀ­( UÀ­(À­, €ÅÀ­( €ÅÀ­8 À­(U À­( À­8UÀ­(5 U UUUUU U+UUAAUUUU+UUAAUU   UAUUA uuA uuA uuA € €A € €A€á$€áA€(€AA 'AAAAAAA 7AAAAAAUUAA u+uAAAUUUU+UUAAUA AQEAQ€©AQAEQAYAÀ­ØEA À­ô À­ÜAYE À­Ü À­Ø À­ø À­ü AA AYEAYAÀ­ØEYÀ­Ø À­Ø.AYAÀ­ØEAA,À­ÜAYEYÀ­ØÀ®AE €Õ €Õ]]€Õ]AE €ÕAE(YÀ­Ø À­Ø YÀ­Ø YÀ­Ø YÀ­ØYÀ­Ø- aYÀ­ØYÀ­Ø À­Ø À­Ø5 À­ØYÀ­ØYÀ­Ø3À­ØYÀ­ØYÀ­Ø YÀ­Ø  À­Ø À­Ø€¥À­Ø YUYUÀ­ØYÀ­Ø À­Ü À­à À­Ü UU À­ä UÀ­Ø À­Ø À­è UÀ­ØÀ­Ø1À­ØYÀ­Ø À­ì À­ð À­Ø U UÀ­ØQYUYUÀ­ØYÀ­ØYÀ­ØEÀ­Ø5€¥À­Ø À­Ü AYE À® À­ØÀ­ÜAYEU UUUÀ­Ø UÀ­Ø À­ØUÀ­Ø À­ØU À­Ø À­ð À­Ø U À­ô EYÀ­Ø À­ø À­ü EÀ­Ø À® a À® À®À® À® À® ‚ý €›.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089T UnmanagedCode]À®YUEAÀ®E ]À®YUEAÀ®E UEAÀ®E1YUEAÀ®EÀ®4À®EEAÀ®EUEAÀ®E À®8 À®AÀ®E …9 À®<…=EAÀ®E#À®UEAÀ®EEE*]À®À®4AÀ®EE À® À® À®  AÀ®A À®eAÀ®E AÀ®AÀ® À®0-€‘AuAEAEAAEE€‘À®QLMicrosoft.FSharp.Compiler.Lib+AsyncUtil+AsyncResult`1+AsyncOk@DebugTypeProxyXSMicrosoft.FSharp.Compiler.Lib+AsyncUtil+AsyncResult`1+AsyncException@DebugTypeProxy(AA AWRMicrosoft.FSharp.Compiler.Lib+AsyncUtil+AsyncResult`1+AsyncCanceled@DebugTypeProxy À® À®$ À® À® À®( À® À®  À®, À®  AE AAEuAEAEAAE AAE?AEAEAAEÀ®À®À® À®! EuAEAEAAE(€‘À® (€‘YUEAÀ®EAUEAÀ®EEAÀ®EUEAÀ®E À®@UEAÀ®E EAÀ®E UEAÀ®E|YUEAÀ®EYUEAÀ®EAUEAÀ®EEEAÀ®EUEAÀ®E À®D À®4 À® €‘À® À®L À®8 À®<EAÀ®E EUEAÀ®E$uAÀ®EAEAAE ]À®>AÀ®EAEAAE]À®]À®( EuAÀ®EAEAAE €‘À® À®H À®€„€Å€„€Å€ÅY€„€Å A€„€Å€„€Å€„€Å?€„€ÅA€„€Å€„€Å€„€Å]€€ÅA]]]]5€€ÅA]]€€ÅY€ÅY À®\ U1UY UY!YUYAY1 U1 UY 1 UYU1 À®dYAAY À®dYYAAYYAAY À®l Y"YAAYYAAYAAYYY À®p AA "YAAYY À®t AAY À®| AAY"YAAYY À®€YAAY À®l À®p  À®t À®x À®| À®x À®€ YU YUYUYU AAYUYUYUAAYU€€Å€€Å"€€Å€€Å€€Å]€€Å €€Å€€Å€€ÅAAE€€Å'€€ÅA€€Å(AAA€€Å ] À®” €„€Å€„€Å€¥Y€¥ €„€Å€„€Å€„€ÅY À®¤ €Å€Å€ÅU€Å€Å€Å À®¤€Å  UU€Å €Å €Å€Å…I…5ƒy‚=…I…5  €Å€Å YUÀ®ÄÀ®ÈÀ®ÌÀ®ÐÀ®ÔÀ®ØÀ®ÜÀ®àÀ®äÀ®èÀ®ìÀ®ðÀ®ôÀ®øeYUÀ·¼e€íÀ·´eYUÀº˜eYUÀº˜eYUÀºÈeYUÀºÈeYUÀºèeYUÀºèYUÀ®ÄÀ®ÈÀ®ÈÀ®ÌÀ®ÌÀ®ÐÀ®ÐÀ®ÔÀ®ÔÀ®ØÀ®ØÀ®ÜÀ®ÜÀ®àÀ®àÀ®äÀ®äÀ®èÀ®èÀ®ìÀ®ìÀ®ðÀ®ðÀ®ôÀ®ôÀ®øÀ®øeYUÀ·¼À·ÈÀ·ÌÀ¸pÀ¸lÀ·ÄÀ·ÈÀ·ÌÀ¸pÀ¸l À·¼EÀ·tÀ·ðÀ·àÀ·ÐÀ·tÀ·ðÀ·àÀ·Ôe€íÀ·´eYUÀº˜eYUÀº˜eYUÀºÈeYUÀºÈeYUÀºèeYUÀºèÀ®Ä À®ÄaÀ®ÄÀ®Ä À®ÄÀ®ÄÀ®ÄÀ®Ä À®ÄÀ®ÄÀ®ÄÀ®ÄÀ®È À®Èa À®ÈÀ®ÈÀ®È À®ÈÀ®ÈÀ®È À®ÈÀ®ÈÀ®ÈÀ®ÈÀ®Ì À®Ìa À®ÌÀ®ÌÀ®Ì À®ÌÀ®ÌÀ®Ì À®ÌÀ®ÌÀ®ÌÀ®ÌÀ®Ð À®Ða À®ÐÀ®ÐÀ®Ð À®ÐÀ®ÐÀ®Ð À®ÐÀ®ÐÀ®ÐÀ®ÐÀ®Ô À®Ôa À®ÔÀ®ÔÀ®Ô À®ÔÀ®ÔÀ®Ô À®ÔÀ®ÔÀ®ÔÀ®ÔÀ®Ø À®Øa À®ØÀ®ØÀ®Ø À®ØÀ®ØÀ®Ø À®ØÀ®ØÀ®ØÀ®ØÀ®Ü À®Üa À®ÜÀ®ÜÀ®Ü À®ÜÀ®ÜÀ®Ü À®ÜÀ®ÜÀ®ÜÀ®ÜÀ®à À®àa À®àÀ®àÀ®à À®àÀ®àÀ®à À®àÀ®àÀ®àÀ®àÀ®ä À®äa À®äÀ®äÀ®ä À®äÀ®äÀ®ä À®äÀ®äÀ®äÀ®äÀ®è À®èa À®èÀ®èÀ®è À®èÀ®èÀ®è À®èÀ®èÀ®èÀ®èÀ®ì À®ìa À®ìÀ®ìÀ®ì À®ìÀ®ìÀ®ì À®ìÀ®ìÀ®ìÀ®ìÀ®ð À®ða À®ðÀ®ðÀ®ð À®ðÀ®ðÀ®ð À®ðÀ®ðÀ®ðÀ®ðÀ®ô À®ôa À®ôÀ®ôÀ®ô À®ôÀ®ôÀ®ô À®ôÀ®ôÀ®ôÀ®ôÀ®ø À®øa À®øÀ®øÀ®ø À®øÀ®øÀ®ø À®øÀ®øÀ®øÀ®ø YUÀ·¼E À·´ À·´À·´ €íÀ·´ €íÀ·´ UÀ·´À·´ EUÀ·´YUÀ·´YUÀ·´ UÀ·´YUÀ·´€íÀ·´ €íÀ·´E UÀº˜YUÀº˜ YUÀº˜E UÀº˜Àº˜ UÀº˜UÀº˜ UÀº˜UÀº˜ YUÀº˜E UÀºÈYUÀºÈ YUÀºÈE UÀºÈÀºÈ UÀºÈUÀºÈ UÀºÈUÀºÈ YUÀºÈE UÀºèYUÀºè YUÀºèE UÀºèÀºè UÀºèUÀºè UÀºèUÀºè YUÀºèEÀ®ÄÀ®ÄYUÀ®ÄeYUÀ·¼e€íÀ·´eYUÀº˜eYUÀº˜eYUÀºÈeYUÀºÈeYUÀºèeYUÀºèYUÀ®Ä YUÀ·¼ €íÀ·´ YUÀº˜ YUÀº˜ YUÀºÈ YUÀºÈ YUÀºè YUÀºèeYUÀ¯´exÀ¯´ÀØÐÀØÌ XeYUÀ¯´exÀ¯´ À¯T xÀ¯´AÀ¯´eYU U)xÀ¯´AÀ¯´eYUexÀ¯´ xÀ¯´À¯´ À¯´X À¯´ À¯´X UÀ¯´YUÀ¯´ YUÀ¯´E xÀ¯´ xÀ¯´À¯´À¯´ EUÀ¯´ AÀ¯´ À¯T AÀ¯´ 1 À¯´AEÀ·¼ À¯´AÀ·¼ À¯´AUÀ·¼ À¯´A À·¼ À¯´AÀ·lÀ·¼& À¯´AUÀ¶x]YÀ¶À·¼ À¯´AÀ¶À·¼ À¯´AUÀ¶À·¼ À¯´AÀ·¼ À¯´AÀ·LÀ·¼eYUÀ¯´ UÀ¯´ AEÀ·¼Y AÀ·¼Y AUÀ·¼Y A À·¼Y AÀ·lÀ·¼Y& AUÀ¶x]YÀ¶À·¼Y AÀ¶À·¼Y AUÀ¶À·¼Y AÀ·¼Y AÀ·LÀ·¼Y xÀ¯´ xÀ¯´EeYUÀ¯´exÀ¯´ YUÀ¯´ xÀ¯´ÀØèÀØäÀØàÀØÜÀØØÀØÔ YÀ¯À¯˜UYÀ¶]YÀ¶ YÀ¯U]À¶8YÀ¯À¯˜YÀ¯À¶UYÀ¶]YÀ¶%UYÀ¶]YÀ¶YÀ¯YÀ¯YÀ¯À¯˜À¶YÀ¶YÀ¯ À¯¬ À¯¨À¯¨AYÀ»„À¯¨AYÀ»„AYÀ»„À¯¨YÀ»„AYÀ»„ À¯°! AÀ¯¨AYÀ»„ À¯¨AYÀ»„$À¯¨À¯¨AÀ¯¨ ]À¶]À¶À¶]À¶À¯¨À¯¨ÀµÄÀµÄ À°TE À°\EÀ¯´À°TÀ°\À¯´À¯¼À¯ÀÀ¯ÄÀ¯ÈÀ¯ÌÀ¯ÐÀ¯ÔÀ¯ØÀ¯ÜÀ¯àÀ¯äÀ¯èÀ¯ìÀ¯ðÀ¯ôÀ¯øÀ¯üÀ°À°aÀ¯¼À¯ÀÀ¯ÄÀ¯ÈÀ¯ÌÀ¯ÐÀ¯ÔÀ¯ØÀ¯ÜÀ¯àÀ¯äÀ¯èÀ¯ìÀ¯ðÀ¯ôÀ¯øÀ¯üÀ°À°À¯´AlÀ¯´EAlÀ¯´E pÀ¯´AXÀ¯´XÀ·¼AXÀ¯´XÀ¶AXÀ¯´XÀ¯À¯À¯U]À¶À¯À¯eAÀ¯E AÀ¯ AÀ¯U]À¶LÀ¯˜À¯˜aU]À¶U]À¶]À¶]À¶À¯À¯ À¯NÀ¯À¯˜À¯˜U]À¶U]À¶]À¶]À¶À¯À¯!À¯˜U]À¶]À¶M À¯À¯˜À¯˜U]À¶U]À¶]À¶]À¶À¯À¯ U]À¶4À¯˜À¯˜U]À¶U]À¶À¯À¯ À¯(U]À¶ U]À¶ U]À¶[VMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+SigArg+SigArg@DebugTypeProxy^YMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+SigArg+_Sentinel@DebugTypeProxy À¯˜À¯œ À¯œ(AYÀ»„ À¯¨ AYÀ»„ AYÀ»„eAÀ¯¨E AÀ¯¨AÀ¯¨ À¯¬ YÀ»„AÀ¯¨AYÀ»„ À¯° À¯¨AYÀ»„AÀ¯¨ À¯¨À¯´À¯´À¯´À¯´AÀ¶À·¼À¯´AUÀ¶À·¼À¯´AÀ·LÀ·¼À¯´AÀ·¼À¯´AEÀ·¼&À¯´AUÀ¶x]YÀ¶À·¼À¯´AÀ·lÀ·¼À¯´A À·¼À¯´AUÀ·¼À¯´AÀ·¼À¯´ À¯´ eAÀ¯´E AÀ¯´ AÀ¯´`[Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_SQSTRING@DebugTypeProxy_ZMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_QSTRING@DebugTypeProxyb]Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_DOTTEDNAME@DebugTypeProxyZUMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_ID@DebugTypeProxy_ZMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_HEXBYTE@DebugTypeProxy(AÀ¶À·¼ AÀ¶À·¼c^Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_VALUETYPE@DebugTypeProxy(AUÀ¶À·¼AUÀ¶À·¼ AUÀ¶À·¼ AUÀ¶À·¼b]Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_INT_TYPE@DebugTypeProxy^YMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_TYPE@DebugTypeProxy(AÀ·LÀ·¼ AÀ·LÀ·¼]XMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_TOK@DebugTypeProxy (AÀ·¼ AÀ·¼`[Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_STRING@DebugTypeProxy (AEÀ·¼ AEÀ·¼ AEÀ·¼ AEÀ·¼^YMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_NONE@DebugTypeProxy!(AUÀ¶x]YÀ¶À·¼9! AUÀ¶x]YÀ¶À·¼`[Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_METHOD@DebugTypeProxy(AÀ·lÀ·¼:AÀ·lÀ·¼ AÀ·lÀ·¼ AÀ·lÀ·¼[VMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_R@DebugTypeProxy (A À·¼; A À·¼\WMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_I8@DebugTypeProxy(AUÀ·¼< AUÀ·¼a\Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_I32_I32@DebugTypeProxy (AÀ·¼= AÀ·¼[VMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+INSTR_I@DebugTypeProxy>_ZMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_FLOAT64@DebugTypeProxy?e`Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_INT32_ELIPSES@DebugTypeProxy@]XMicrosoft.FSharp.Compiler.AbstractIL.Internal.AsciiParser+token+VAL_INT64@DebugTypeProxy À¯¼ À¯À À¯Ä À¯È À¯Ì À¯Ð À¯Ô À¯Ø À¯Ü À¯à À¯ä À¯è À¯ì À¯ð À¯ô À¯ø À¯ü À° À°À°TÀ°TÀ°TeAÀ°TE AÀ°T AÀ°T À°T À°T À°TÀ°TÀ°\À°\À°\eAÀ°\E AÀ°\ AÀ°\ À°\ À°\ À°\À°\ À¯¨À¶ À¯¨À¶ À¯¨À¶AYÀ»„À¶À¯¨À¶À·¼YÀ·¼À¯¨YÀ¶À¯¨YÀ¯ À¯¨YÀ¶ À¯¨YÀ¯ YÀ¯À¯¨YÀ¶AYÀ»„YÀ¶'€À¶À¶YÀ¶À¶YÀ¶8U€À¶À¶YÀ¶À¶YÀ¶]YÀ¶€•À¶À¯¨À¶À¯¨À¶À¯¨YÀ¶À¯¨YÀ¯À¶]À¶YÀ¯UYÀ¶]YÀ¶]YÀ¶YÀ¶YÀ¶À¶ AEÀ·¼ AEÀ·¼ AÀ·¼AUÀ·¼ A À·¼  AÀ·lÀ·¼AÀ·lÀ·¼ AÀ·lÀ·¼ 9U€À¶À¶YÀ¶À¶YÀ¶]YÀ¶(€À¶À¶YÀ¶À¶YÀ¶UÀµìÀ¶: U€À¶À¶YÀ¶À¶YÀ¶]YÀ¶UÀµìÀ¶€« AUÀ¶x]YÀ¶À·¼U€À¶À¶YÀ¶À¶YÀ¶]YÀ¶]YÀ¶À¶€À¶À¶YÀ¶À¶YÀ¶UÀµìÀ¶À¶ÀµìAÀ¶À·¼À¯¨À¶ AUÀ¶À·¼ UÀ¶"AUÀ¶À·¼À¯¨À¶AÀ·LÀ·¼À¯¨À¶À¯¨YÀ¯ YÀ»„ À¯¨À¯AYÀ»„À¯ À¯À¯¨À¯YÀ¯¨À¯ YÀ¯¨À¯ À¯¨À¯ À¯¨À¯À¯ YÀ¯YÀ»„ YÀ¯¨À¯YÀ¯¨À¯ À¯¨À¯YÀ¯¨À¯À¯¨À¯YÀ¯¨À¯À¯¨À¯ À¯ À¯¨À¯À¶ À¶À¯À¯¨À¶] UYuÀµÌYUYYÀµÄUYÀµÌYUYY YÀµÌ À¶ À¯¨À¶YÀ¶uÀµÌY uÀµÌY YÀ¶À¶ À¯¨À¶,uÀµÌYÀ¯¨YÀ¶YÀµÌ!uÀµÌYYÀµÌÀ¶ À¯¨À¶À¶ À¯¨À¶ À¯¨À¶ À¶À¶À¯¨À¶ ÀµôÀµô À¯¨À¶À¶ YU]] YU]] À¯¨À¶YU]]U]]U]]"YU]]U]] ]]]] À¯¨YÀ¶YÀ¶ YÀ¶YÀ¶À¯¨YÀ¶ À¯¨YÀ¶À¶ À¶YÀ¶ À¯¨À¶À¯¨YÀ¶À¯¨À¶ lÀ¯´ ElÀ¯´ À¯´ À¯´€¡ ]À²¼   U U À²@ À²D À²H À²L À²P À²T À²X€Õ€Õ uY' AAYYE5YuYY uYYuY…MÀ²@À²DÀ²LÀ²H uY uYYuY …Qƒ9…M À²D€œ(YYYuYYuYuYYuYYEYE5…Mƒ9À²@À²DÀ²DÀ²DÀ²DÀ²LÀ²HUYÀ²8À²PÀ²TÀ²`À²`À²\ À²`KÀ²PÀ²TÀ²TÀ²PÀ²TÀ²PÀ²`À²TÀ²`À²\À²œÀ²œEaÀ²œÀ²œEÀ²|À² À²|€½ À²€½À²|ƒ À²À² À²”À²” À²”À²ˆƒ ƒ ƒ À²ˆ À²˜À²” À²”À²”À²˜À²˜ €á À²”À²˜€áÀ²ŒÀ²ŒÀ²Œ À²œÀ²” À² À²  …]…U À²¨À²  …]…aÀ²¨À² À²¤…a …a…a…aÀ²¤ À²¤À²  …aƒ ƒ ƒ À²¤À² À²¤ ƒ ƒ À²¤ À²¤…U …U…UÀ²¨ …e À²°À²¨À²´…a …a …a …aÀ²´ À²´À²¨…eÀ²° …e…e…eÀ²° À²°À²° UÀ²°…i …i…i…iÀ²¬ À²¬À²°À²¬ À²¬ …m UÀ²¬ƒ ƒ À²¸+ ]À²¼ ]À²¼ ]À²¼À²¸À²ÀÀ²¼ ]À²¼ À²¸ À²À À²¼* ]À²¼ƒ ƒ ƒ ƒ ƒ À²¸À²ÀÀ²¼À²¼€½ À²¼  À²¼À²¼ À²¼€½ À²¼  À²¼À²8À²8eAÀ²8E AÀ²8 AÀ²8 À²8 À²8 À²8À²8 €˜    €˜  (À²\(À²XÀ²X  À²\ À²X& €Õ€ÕU]   Y uY Y uY ƒ )$809c652e-7396-11d2-9771-00a0c9b4d50c ……)$7DAC8207-D3AE-4c75-9B67-92801A497D44)$BA3FEE4C-ECB9-4E41-83B7-183FA41CD859 ƒ )$B01FAFEB-C450-3A4D-BEEC-B4CEEC01E006À²Œ À²Œa À²Œ À²ŒÀ²Œ À²Œ À²ŒÀ²ŒÀ²Œ À²Œ ƒ ƒ ƒ À²ˆ  *P  *P   À²ˆÀ²ˆ …‘ À²Œ*P À²ˆ …‘   )$0B97726E-9E6D-4f05-9A26-424022093CAA(À² À² À²À²”À²” À²”(À²ˆ À²ˆ À²ˆ À²ˆÀ²˜À²˜ À²˜ À²œ À²œÀ²œ À²œ(…Y…Y …Y …Y …YÀ²  À² (…a…a …a …aÀ²¤À²¤ À²¤(…]…] …] …] …]À²¨ À²¨(…i…i …i …i …iÀ²¬À²¬(…e…e …e …eÀ²°À²° À²°(À²¤ À²¤ À²¤À²´À²´À²¤À²¤ À²´À²´ ƒ )$D332DB9E-B9B3-4125-8207-A14884F53216           )$9FD93CCF-3280-4391-B3A9-96E1CDE77C8D ƒ ƒ )$BD39D1D2-BA2F-486A-89B0-B4B0CB466891 …™À·¼À·¼À¹°AÀ·¼À·¼À¹° €ÕÀ·¼€ÕYÀ·¼ €ÕÀ·¼€ÕYÀ·¼fÀ·¼€ÕÀ·¼€ÕÀ·¼YÀ·¼€ÕYÀ·¼YÀ·¼YÀ·¼YÀ·¼À·¼À·¼À·¼À¹°AÀ·¼YÀ·¼À¹°YYÀ·¼YÀ·¼YYÀ·¼YÀ·¼À·¼YÀ·¼YÀ·¼À·¼&YYÀ·¼YÀ·¼YYÀ·¼YYÀ·¼À·¼ À·¼À·¼YYÀ·¼À²Ì À²Ì0 À·¼YYÀ²ÌÀ¹¸À¹¸YÀ¹¸8À¹¸AAAÀ²ÌÀ¹°YYÀ·¼Y$À¹¸AAAÀ·¼À²ÌÀ¹°YUÀºÀ¹¸ À¹¸À¹¸ UÀºÀ¹¸UÀºÀ¹¸gÀ¹ÀÀ¹ÄYÀ¹¬YÀ¹¸À¹ÌÀ¹¸À¹àÀ¹àÀ¹èÀ¹¸À¹ìÀ¹ðYUÀºÀ¹¸À¹ÈYÀ¹à(À¹¸AÀ¹°À¹¸AÀ¶À¶À¹¸bÀ¹ÀÀ¹ÄYÀ¹¬YÀ¹¸À¹ÌÀ¹¸À¹àÀ¹èÀ¹¸À¹ìÀ¹ðYUÀºÀ¹¸À¹ÈYÀ¹àÀ¹¸AÀ¹°À¹¸À¹¸> À¶0À¶À¶8À¶hÀ¶4À¶,À¶À¶(À¶$À¶<À¶@À¶À¶AÀ¶À¶À¶À¶AÀ¶À¶À¶ AÀ¶4 À¶0À¶À¶8À¶hÀ¶4À¶,À¶À¶(À¶$À¶<$À¶AÀµÌÀµÌAÀ¶À¶$À¶AÀµÌÀµÌAÀ¶À¶$À¶hAÀµÌÀµÌAÀ¶À¶h,YÀ¶AÀµÌÀµÌAÀ¶YÀ¶À¶AÀµÌÀµÌÀ¶À¶hAÀ¶À¶À¶hÀ»„AÀ¶À¶À»„À¶pAÀ¶À¶À¶pIÀ¶xÀ¶|À´¨@À¶xAÀ¶À¶AIÀ¶xÀ¶|À´¨AÀ¶À¶À¶xÀ¶tAÀ¶À¶À¶t@À¶|AÀ¶À¶AIÀ¶xÀ¶|À´¨AÀ¶À¶À¶|À¶ÜÀ¶àÀ¶ä À¶ À¶ $À¶ÜÀ¶À¶àÀ¶À¶äYÀ¶ À¶ AÀ¶À¶À¶ $ €À¶À¶ €À¶À¶ lÀ¶xÀ·(UYÀ¶ Y€À¶À¶ Y€À¶À¶ YÀ¶ YÀ¶ Y€À¶À¶ À·(À½AÀ¶À¶À·( À·(À·(À·,À»¤À½AÀ¶À¶À»¤AÀ´”À´”%AÀ´”À´”À´”À´”À·,À´˜À½AÀ¶À¶À´˜À´˜ À´˜!À´˜À½AÀ¶À¶À´˜À´ìAÀ¶À¶À´ì À³  AÀ¶ YÀ¶Y%]YAÀ¶]YÀ¶3A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶RÀ¶|À·¼AÀ¶À¶A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶À¶|RÀ¶xÀ·¼AÀ¶À¶A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶À¶xAÀ¶À¶À¸À¸HÀ¸PÀ¸LÀ¸`€Û(AÀ¶À¶À¸]YÀ¶À¶hÀ¸À¶xÀ¸À¸ À¶À¸À¸À¸HÀ¸$À¶|À¸ À¸(À¸,À¸4À¸0À¸@À¸<À¸PÀ¸LÀ¸XÀ·¤À¸TÀ¸\À¸`À¸dÀ¸xÀ¸|À¸€À¸tÀ¸hÀ¸DÀ·LÀ·TÀ·XÀ·\À·LZÀ·¼A]À·¼AÀ¶À¶A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶À·¼À»4À½AÀ¶À¶À»4À»0À½AÀ¶À¶À»0À»ŒAÀ»ˆÀ»ˆÀ»ŒÀ¼(AÀ¼$À¼$À¼( À¼$YÀ¼$À¼(AÀ¼$YÀ¼$À¼(À¼„AÀ¼(À¼(À¼„ À´ìÀ´ìAÀ¶À¶À´ì ÀºÀºÀ¹¸À¹¸YÀº.ÀºAÀ¹°À¹¸AÀ¶À¶AÀºÀ»hAÀºÀºÀ»h À¶À¶pÀ»8AÀ¶À¶À»8À»h ]À»ˆA]À»ˆAÀ¶À¶ À»„À»„ À»0À»0#AÀ¶À¶À»hYÀ»„À·,GÀ»ˆÀ½A]À»ˆAÀ¶À¶A]À»ˆAÀºÀºÀ»ˆAÀ»¤À»¤ À»¤À»¤AÀ»¤À»¤YÀ»¤À»¨À½AÀ¶À¶À»¨AÀ»ˆÀ»ˆGÀ»ŒÀ½A]À»ˆAÀ¶À¶A]À»ˆAÀºÀºÀ»ŒÀµhÀ½AÀ¶À¶ÀµhA]ÀºÀº3ÀµdAÀ¶À¶A]AÀºÀºÀµdÀµdAÀºÀºÀµdÀ»¬AÀ¶À¶À»¬ À¶pÀ¶p(À¶pÀ¶p]À¶pYÀ¶pÀ·,À·,À»”À½AÀ¶À¶À»”À»œÀ½AÀ¶À¶À»œ À»œÀ»œ YÀ»œÀ» À½AÀ¶À¶À»  À»”À»” YÀ»”À»˜À½AÀ¶À¶À»˜]UYÀ¼$À¼$ A]UYÀ¼$À¼$] AÀ¶À¶AUYÀ¼$À¼$À»Œ À»Œ À»¬À»¬.AUYÀ¼$À¼$A]AÀºÀº€…AÀ¶À¶À»ŒÀ»¨YÀ¶YÀ»„]À¶À¼(À»°À»°À»˜À» À·,À·,À¼ À¼À¼ÀµlÀµxÀµhÀµlÀµtÀµd€ŸÀ¼$À½YÀ¼$A]UYÀ¼$À¼$A]AÀ¶À¶AUYÀ¼$À¼$A]AÀºÀºAUYÀ¼$À¼$AÀ»ŒÀ»ŒÀ¼$ À³d€• À½YÀ¼$A]UYÀ¼$À¼$A]AÀ¶À¶AUYÀ¼$À¼$A]AÀºÀºAUYÀ¼$À¼$AÀ»ŒÀ»Œ€ŸÀ¼(À½YÀ¼$A]UYÀ¼$À¼$A]AÀ¶À¶AUYÀ¼$À¼$A]AÀºÀºAUYÀ¼$À¼$AÀ»ŒÀ»ŒÀ¼(À¼€À½AÀ¶À¶À¼€AÀ¼(À¼(6A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶2AUYÀ¼$À¼$A]À»ˆAÀºÀº%AUYÀ¼$À¼$AÀ»ŒÀ»Œ>AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶:AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀºÀº-AÀ¼„AUYÀ¼$À¼$AÀ»ŒÀ»ŒAÀ¼„]UYÀ¼$À¼$ ]À»ˆAÀ¶À¶ À¼€À¼€€À AÀ¼(À¼(YÀ¼$A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AUYÀ¼$À¼$A]À»ˆAÀºÀºAUYÀ¼$À¼$AÀ»ŒÀ»ŒÀ¼(À·,AÀ¶À¶À·,€¶À¼„À½AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀºÀºAÀ¼„AUYÀ¼$À¼$AÀ»ŒÀ»ŒÀ¼„YÀ¼$À¼$€ÞA]À»ˆAÀºÀºAÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¼„UYÀ¼$À¼$;AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀºÀº.AÀ¼„AUYÀ¼$À¼$AÀ»ŒÀ»ŒiAÀ¼„AUYÀ¼$À¼$A]À»ˆAÀºÀºAÀ¼„AUYÀ¼$À¼$AÀ»ŒÀ»Œ€»À¼„À½AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¼„€‰À¼„À½AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶À¼„€‰À¼„À½AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ·¼À·¼AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶À¼„AÀ¹°À¹¸AÀ¹°À¹¸À¹¸AÀ·¼YÀ·¼À¹¸$À¹¸AAAÀ·¼À²ÌÀ¹¸;AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ·¼À·¼<AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ·¼À·¼OÀ¼„À½AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶À¼„AÀ¶À¶À¼„À½AÀ¶À¶À¼„À¼„À½AÀµÌÀµÌÀ¼„(À¹¸ YÀ·¼À¹¸ YÀ·¼ À¹¸ À¹¸ AÀ¹°À¹¸AÀ¶À¶ À¹¸À¹¸ ÀºÀ¹¸ÀºÀ¶Àº À¹¸ UÀºÀ¹¸UÀºÀ¹¸ AÀ¹°À¹¸ÀºÀ¹¸Àº À¹¸AÀ¶À¶ AÀ¶À¶ À¶À¶ AÀ¶ AÀµÌÀµÌAÀ¶ AÀ¶À¶ À¶ À¶ $ AÀ¶À¶IÀ¶xÀ¶|À´¨$ €À¶À¶ €À¶À¶  À½AÀ¶À¶ À·(À·( À´”À´” AÀ¶ À³  À¶ YYÀ¶AÀ¼$YÀ¼$ AÀ¼$YÀ¼$ YÀ¼$À¼$YÀ¼$ ÀºÀº À»„À»„ À»0À»0 À»¤À»¤A]À»ˆAÀ¶À¶A]À»ˆAÀºÀº> À½A]À»ˆAÀ¶À¶A]À»ˆAÀºÀº À¶pÀ¶p À»œÀ»œ À»”À»” À»¬À»¬3A]UYÀ¼$À¼$A]AÀ¶À¶/AUYÀ¼$À¼$A]AÀºÀº À³d€› À½YÀ¼$A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AUYÀ¼$À¼$A]À»ˆAÀºÀºAUYÀ¼$À¼$AÀ»ŒÀ»Œ À¼€À¼€% AÀ¹°À¹¸AÀ¶À¶A;AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸?AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶3AÀ¼„AUYÀ¼$À¼$A]À»ˆA€À AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¼„YÀ¼$À¼$AÀ¼„UYÀ¼$À¼$ ]À»ˆAÀ¹°À¹¸ ]À»ˆA6UYÀ¼$À¼$AÀ¹°À¹¸AÀ¶À¶A AÀºÀº]À»ˆ€­ AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆA4 A]À»ˆAÀºÀºÀ¼„UYÀ¼$À¼$ À»ŒÀ»Œ€² À½AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ¹°À¹¸AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶AÀ¼„AUYÀ¼$À¼$A]À»ˆA A]À»ˆAÀ¶À¶XYÀ¼$À¼$UYÀ¼$À¼$A]À»ˆAÀ¶À¶A]À»ˆAÀºÀº' AÀ»ŒÀ»ŒÀ¼„UYÀ¼$À¼$$ À¼„UYÀ¼$À¼$]À»ˆ= AÀ¼„AUYÀ¼$À¼$A]À»ˆAÀ·¼À·¼ ]À»ˆAÀ·¼À·¼, À¹¸À¼„UYÀ¼$À¼$]À»ˆÀ¹° AÀ·¼YÀ·¼ À¹¸À¹°AAAÀ·¼À²Ì AAAÀ·¼À²Ì AÀ¶À¶]À·¼- AÀ¶À¶]À·¼IÀ¶xÀ¶|À´¨A]À·¼AÀ¶À¶4A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶Q A]À·¼AÀ¶À¶A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶T AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶À¼„YÀ¼$À¼$pUYÀ¼$À¼$AÀ¶À¶A]À·¼AÀ¶À¶A]À·¼AIÀ¶xÀ¶|À´¨AÀ¶À¶ AÀ·¼À·¼]À»ˆA AÀ¼„A]UYÀ¼$À¼$A]À»ˆAÀ¶À¶4 A]À»ˆAÀ·¼À·¼À¼„UYÀ¼$À¼$0 À¶À¼„]UYÀ¼$À¼$]À»ˆÀ¶ €ÕÀ½eYUYÀ·¼eYUYAEÀ·¼eYUYA À·¼eYUYAÀ·¼"eYUYAUÀ·¼!eYUYAÀ·lÀ·¼2eYUYAUÀ¶x]YÀ¶À·¼eYUYAÀ·¼!eYUYAÀ·LÀ·¼!eYUYAÀ¶À·¼&eYUYAUÀ¶À·¼ €ÕÀ½eYUYÀ·¼UAEÀ·¼UAEÀ·¼À·DeYUYAEÀ·¼eYUYA À·¼eYUYAÀ·¼"eYUYAUÀ·¼!eYUYAÀ·lÀ·¼2eYUYAUÀ¶x]YÀ¶À·¼eYUYAÀ·¼!eYUYAÀ·LÀ·¼!eYUYAÀ¶À·¼&eYUYAUÀ¶À·¼UYÀ·¼YUYÀ·¼ YUYÀ·¼E À·¼EUYAEÀ·¼ YÀ·¼$ UYAEÀ·¼UYÀ·¼eYUYÀ·¼$ UYÀ·¼UYAEÀ·¼YUYAEÀ·¼ UYAEÀ·¼ YUYAEÀ·¼EUYA À·¼YUYA À·¼ YUYA À·¼EUYAÀ·¼YUYAÀ·¼ YUYAÀ·¼EUYAUÀ·¼YUYAUÀ·¼ YUYAUÀ·¼E À·¼À·lUYAÀ·lÀ·¼YUYAÀ·lÀ·¼ YUYAÀ·lÀ·¼E(UYAUÀ¶x]YÀ¶À·¼,YUYAUÀ¶x]YÀ¶À·¼0 YUYAUÀ¶x]YÀ¶À·¼EUYAÀ·¼YUYAÀ·¼ YUYAÀ·¼EUYAÀ·LÀ·¼YUYAÀ·LÀ·¼ YUYAÀ·LÀ·¼EUYAÀ¶À·¼YUYAÀ¶À·¼ YUYAÀ¶À·¼EÀ¶ À·¼UÀ¶UYAUÀ¶À·¼ YUYAUÀ¶À·¼$ YUYAUÀ¶À·¼E €ÕÀ½eYUYÀ·¼eYUYAEÀ·¼eYUYA À·¼eYUYAÀ·¼!eYUYAUÀ·¼ eYUYAÀ·lÀ·¼1eYUYAUÀ¶x]YÀ¶À·¼eYUYAÀ·¼ eYUYAÀ·LÀ·¼ eYUYAÀ¶À·¼%eYUYAUÀ¶À·¼ YUYÀ·¼ YUYAEÀ·¼ YUYA À·¼ YUYAÀ·¼ YUYAUÀ·¼ YUYAÀ·lÀ·¼. YUYAUÀ¶x]YÀ¶À·¼ YUYAÀ·¼ YUYAÀ·LÀ·¼ YUYAÀ¶À·¼" YUYAUÀ¶À·¼,uAÀ´øÀ¹„AÀ¹„AÀ¹„À´øAÀ´øÀ¹„ AÀ¹„AÀ¹„À´ø,uAÀµlÀ¼AÀ¼AÀ¼ÀµlAÀµlÀ¼ AÀ¼AÀ¼ÀµlÀ´Ü= À´ÔÀ´ÔaÀ¶À¶À´ÌÀ´ÌÀ´ØÀ´ØÀ´ÜÀ´ÜÀ´ÌÀ´ÌÀ´ÌE À´ÔÀ¶À´ÌÀ´ØÀ´ÜÀ´ÌÀ´ÌYÀ¶À´Ì%À´´À´¬À´¸À»0À´¼À¶À´¬À´¬YÀ¶À´¬À´ìÀ¶ UYÀµÀµ ÀµYU YÀ´ø ]À´øÀµ À´ø UUÀµÀµÀ´¨YUÀ´øAÀ´ø,uAÀ´øÀ¹„AÀ¹„AÀ¹„À´øAÀ´øÀ¹„ AÀ¹„AÀ¹„À´ø À·¼À´ø,uAÀµlÀ¼AÀ¼AÀ¼ÀµlAÀµlÀ¼ AÀ¼AÀ¼Àµl À¼ ÀµlÀ´ÔUÀ¶À´ÌÀ´ÌÀ´ôYÀ»„À´ðÀ´”À¶À´¨(À´”(À·,(À¶ À´” À·, À´”À·, À´”À´”À¶À´” À¶À´œÀ´œeAÀ´œE AÀ´œ AÀ´œ À´œ À´œ À´œÀ´œ(À´˜(À´œÀ´¤À¶À´˜À´œ À¶À´˜À´œ À´˜ À´œeAÀ´¤E AÀ´¤ AÀ´¤(À´¤ (YÀ´˜À´¨À´¤YÀ¶ À´¤YÀ¶ À´¤eAÀ´¨E AÀ´¨ AÀ´¨ YÀ´˜ À´˜À´˜ À´”À´¬À»„À´¬À´¬À»0À´¬ À´¬À¶À´¬eAÀ´¬E AÀ´¬ AÀ´¬(À»„ À»„À´¬ À»„niMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureLambdas+Lambdas_forall@DebugTypeProxy(À»0 À»0À´¬ À»0niMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureLambdas+Lambdas_lambda@DebugTypeProxyniMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureLambdas+Lambdas_return@DebugTypeProxy À´´ À´¸ À´¼À´ÌÀ¶À´Ì À´ÌÀ¶À´ÌeAÀ´ÌE AÀ´Ì AÀ´ÌÀ´ÌÀ´Ì À´ÌKÀ´ÌÀ´ÔÀ´ÔÀ¶À¶À´ÌÀ´ÌÀ´ØÀ´ØÀ´ÜÀ´ÜÀ´ÌÀ´ÌÀ´ÌÀ´ÔÀ´ØÀ´ÜÀ´ÌJÀ´ÌÀ´ÔÀ´ÔÀ¶À¶À´ÌÀ´ÌÀ´ØÀ´ØÀ´ÜÀ´ÜÀ´ÌÀ´ÌÀ´Ì1 À´ÔÀ´ÔÀ´ØÀ´ØÀ´ÜÀ´ÜÀ´ÌÀ´ÌÀ´Ì(À´Ì À¶À´Ì À´ÌgbMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureApps+Apps_tyapp@DebugTypeProxye`Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureApps+Apps_app@DebugTypeProxyfaMicrosoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxClosureApps+Apps_done@DebugTypeProxy À´Ô À´Ø À´Ü À¶aÀ¶À¶ À´ìÀ´ìÀ¶À¶À´ìÀ¶À¶ À´ìÀ´ðÀ¶À´¬À´ì À¶À´¬À´ìeAÀ´ðE AÀ´ð AÀ´ð(À´ðÀ´ôÀ´ðYÀ¶À¶ À´ðYÀ¶À¶ À´ðeAÀ´ôE AÀ´ô AÀ´ôÀ´ðÀ´ôÀ´ðYÀ¶ À¶À´ìÀ´ðÀ¶À¶À´øÀ´¨À´øÀ´¨À´øÀ´¨À´øÀ´¨À´øÀ´¨YU À´øÀ´¨ À´øÀ´¨À´øÀ·”À´ÌeAÀ´øE AÀ´ø AÀ´ø(À´¨ À´¨ À´¨`[Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_lddata@DebugTypeProxy À´¨`[Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_isdata@DebugTypeProxy À´¨b]Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_brisdata@DebugTypeProxyb]Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_castdata@DebugTypeProxy À´¨`[Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_stdata@DebugTypeProxy À´¨YUb]Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_datacase@DebugTypeProxy À´¨c^Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_lddatatag@DebugTypeProxy À´¨a\Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_newdata@DebugTypeProxy À·”À´Ìb]Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxInstr+EI_callfunc@DebugTypeProxy Àµ Àµ Àµ Àµ  Àµ Àµ Àµ Àµ Àµ  AYYU UU YÀ´ø ]À´ø À´ø À´øAÀ´ø (eÀº (]À¶Œ eÀº eÀº ]À¶Œ À´¬À´ìeÀº]À¶Œ(Àº  Àº , Àº Àº À´œYÀ·(À´˜]À¶Œ ÀµlÀµd ÀµlÀµhÀµleAÀµlE AÀµl AÀµl(Àµd Àµd Àµdd_Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxTypeDefKind+Closure@DebugTypeProxy(Àµh Àµhb]Microsoft.FSharp.Compiler.AbstractIL.Extensions.ILX.Types+IlxTypeDefKind+Union@DebugTypeProxy Àµt Àµx+uAÀ´øÀ¹„AÀ¹„AÀ¹„À´øAÀ´øÀ¹„ AÀ¹„AÀ¹„À´ø+uAÀµlÀ¼AÀ¼AÀ¼ÀµlAÀµlÀ¼ AÀ¼AÀ¼Àµl À¹ŒÀ´ø2 AYA]AAAA À´ø*uAÀ´øÀ¹„AÀ¹„AÀ¹„À´ø À¼ˆÀµl À¼ˆ Àµl*uAÀµlÀ¼AÀ¼AÀ¼Àµl €íY€íU] €íÀÁÀµÀ€ÕYÀ¹ˆ YÀº YÀ»0 YÀ»„€ÕYÀ¼ À·, AEÀºôÀ¼(À»ŒÀ·¼Àµ¨ÀµÌÀ½À»4À»¨ YÀ»¤À»˜ YÀ»”À»  YÀ»œÀ»°À¿<‚ÀØôÀØðÀØìe ÀµŒ AeeAe U U €íY€íU] €íY €í€í U UY) U]U]U] U Y U]€íU]U]U] ]€ aÀµÀÀµÀEaÀµÀÀµÀEÀÁÀµÀYÀ¶YÀ¶À¶hÀ¶YÀ¶À¶ À¶À¶À¶ŒÀ¶ŒEÀ·xÀ·|À·€5À·tÀ·taÀ·xÀ·x À·|À·| À·€À·€ À·lÀ·lE2À·tÀ·tÀ·xÀ·x À·|À·| À·€À·€ aÀ·lÀ·lE0À·tÀ·tÀ·xÀ·xÀ·|À·| À·€À·€ À·lÀ·lE€ÕYÀ¹ˆ AÀ¹„ AÀ¹„€ÕYÀ¹ˆ YÀ¹ˆ À¹ À¹˜ À¹œ À¹Œ À¹  À¹¤ À¹¨$uAÀ¹„AÀ¹„AÀ¹„"AÀ¹„AÀ¹„AÀ¹„0uAÀ¹„AÀ¹„AÀ¹„À¹ŒYY]A]Y A]A] YÀºYÀºYÀº€1Àº0Àº0aÀº4Àº4Àº8Àº8Àº<Àº<Àº@Àº@ÀºDÀºDÀºHÀºH ÀºLÀºLÀºPÀºPÀºTÀºT ÀºXÀºX Àº\Àº\ Àº`Àº` Àº(Àº(E€š0Àº0Àº0Àº4Àº4Àº8Àº8Àº<Àº<Àº@Àº@ÀºDÀºDÀºHÀºH ÀºLÀºLÀºPÀºPÀºTÀºT ÀºXÀºX Àº\Àº\ Àº`Àº` aÀº(Àº(EEÀº0Àº4Àº8Àº<Àº@ÀºDÀºHÀºLÀºPÀºTÀºXÀº\Àº` ÙÀº(E€„Àº0Àº0Àº4Àº4Àº8Àº8Àº<Àº<Àº@Àº@ÀºDÀºDÀºHÀºHÀºLÀºLÀºPÀºPÀºTÀºTÀºXÀºXÀº\Àº\Àº`Àº`Àº(Àº(E€ˆÀº0Àº0Àº4Àº4Àº8Àº8Àº<Àº<Àº@Àº@ÀºDÀºDÀºHÀºHÀºLÀºLÀºPÀºPÀºTÀºTÀºXÀºXÀº\Àº\ Àº`Àº`  ]U]DÀº Àº aÀº¤Àº¤Àº¨Àº¨Àº¬Àº¬Àº°Àº°ÀºÈÀºÈÀº˜Àº˜EAÀº Àº Àº¤Àº¤Àº¨Àº¨Àº¬Àº¬Àº°Àº°ÀºÈÀºÈaÀº˜Àº˜EÀº Àº¤Àº¨Àº¬Àº° ÙÀº˜E> Àº Àº Àº¤Àº¤Àº¨Àº¨Àº¬Àº¬Àº°Àº°ÀºÈÀºÈÀº˜Àº˜ÙE4 Àº Àº Àº¤Àº¤Àº¨Àº¨Àº¬Àº¬Àº°Àº°Àº˜Àº˜E YÀ»0À»<À»<E À»hÀ»PÀ»heÀ»P À»0À¶YÀ¶YÀ»0 YÀ»„À¶ÀµÌY À¶ÀµÌÀ¶À¶YÀ¶ À¶À¶ ÀµÌY À¶À¶À¶À¶ À¶À¶À¶ À¶YÀ¶À¶À¶YÀ¶ À¶À¶€ÕYÀ¼ AÀ¼ AÀ¼€ÕYÀ¼ YÀ¼ À¼Œ À¼”$uAÀ¼AÀ¼AÀ¼"AÀ¼AÀ¼AÀ¼0uAÀ¼AÀ¼AÀ¼À¼ˆÀµÈÀ¶ À¶ÀµÌ!À¶pÀ¶À¶YÀ¶À¶À¶xÀ¶pÀ¶YÀ¶#À¶xÀ¶pÀ¶ YÀ¶YÀ¶7À¶xÀ¶À¶ À¶YÀ¶À¶YÀ¶YÀ¶)À¶xÀ¶À¶YÀ¶À¶YÀ¶ À¶xÀ¶À¶YÀ¶À¶$À¶xÀ¶YÀ¶À¶YÀ¶À¶xÀ¶YÀ¶À¶À¶xÀ¶YÀ¶YÀ¶À¶xÀ¶YÀ¶À¶tÀ¶À¶À¶|À¶tÀ¶À¶|À¶À¶À·,À·,YÀ·( YÀ·(À·,AEYÀ·( À·”À·” €„€Å À¹ˆY, À·üÀ¸YÀ¸À¸À¸ À¸À¹„ YÀ·¼ À¹ˆÀ¸À¸À¸ À¸À¹„ À¸ À¹„ €„€Å À¹¸€„€ÅI À¹ÀÀ¹°À¹ÄÀ¹ÈYÀ¹¸€„€Å€„€Å€„€ÅÀ¹Ì€„€ÅÀ¹¸€„€Å€„€ÅÀ¹¸U €„€ÅÀ¹ÀÀ¹°À¹ÄÀ¹ÈYÀ¹¸€„€Å€„€Å€„€ÅÀ¹Ì À¹¸Y%À¹ÀÀ¹°À¹ÄÀ¹ÈÀ¹ÌÀ¹àÀ¹¸YYÀ¹¸ UÀºÀ¹¸YÀ¹èÀ¹ìÀ¹ðÀ¹àYYÀ¹à Àº À¹¸YYÀºÀ¹¸ YÀ¹¸À¹ÈYÀ¹¸À¹ÄYÀ¹¸ À¹¸À¹¸ À¹¸À¹°À¹¸YÀ¹¬À¹¸À¹¸YYÀ¹¸ À¹¸À¹¸À¹¸À¹¸À¹¸2 U€­UÀ¹¸À¶UÀ¹¸UÀºÀ¹¸2À¹¸À¹¸YU€­UÀ¹¸À¶UÀ¹¸ À¼¼ A AEYYY1À¹¸À¹¸YÀ·¼À¹¸YÀ·¼À·¼À¹¸YÀ·¼À¹¸YÀ·¼YYÀ¹¸À¹¸À¹¸À¹¸ÀºôÀºôYÀºðÀºôeYÀºðÀ¶À»„ À¶À»„YÀ»„YÀ¶ À»„À¶YÀ¶YÀ»„À¶À¶YÀ»„À¶ÀµÌYÀ¼$À¼$À¼$UY$€YÀ·,eÀ¼$eÀ¼$ €í ]€í Y€í ]€í€í€¥Y€í€í]€í1€¥Y€íY€¥Y€í6 €YÀ·,eÀ¼$€YÀ·,eÀ¼$Ge€YÀ·,eÀ¼$eÀ¼$e€YÀ·,eÀ¼$ À¼ð$ €Y€¥Y€í-e€¥Y€íe€Ye€YÀ·,eÀ¼$ À·,eÀ¼$>e€YÀ·,eÀ¼$e€YÀ·,eÀ¼$À¼(À¼$À¼( À¼$€YÀ·,eÀ¼$ €YÀ·,eÀ¼$ e€YÀ·,eÀ¼$À¼(YÀ¼$9 Y€YÀ·,eÀ¼$€YÀ·,eÀ¼$(À¼(eY€YÀ·,eÀ¼$À¼( À»ˆ€¥YÀ»ˆYÀ»ˆYÀ»ˆ%€¥YÀ»ˆÀ»ˆ€¥YÀ»ˆ!eUYÀ»ˆ€¥YÀ»ˆ: UYÀ»ˆ€¥YÀ»ˆUYÀ»ˆ€¥YÀ»ˆ"eUYÀ»ˆ€¥YÀ»ˆÀ»ŒÀ»ˆÀ»Œ YÀ»ˆUYÀ»ˆ€¥YÀ»ˆ# À»ˆUYÀ»ˆ€¥YÀ»ˆ UYÀ»ˆ€¥YÀ»ˆÀ»ŒYÀ»ˆÀ»ŒeYÀ»ˆÀ»ŒÀ»ŒAÀ»ˆÀ»ŒÀ¶À¶ÀµìÀ¶$UÀµìÀ¶À¶ À·¼À¶xÀ·¼À¶À¶xÀ·¼À·¼À·¼‚[yÀµÜÀµÄÀ¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À½ÀµÌ]Àµ¨À½ À·¼À½À¶ÀµÌÀµÜÀµÄÀµÌÀ½À¶À½À¶ À½À¶ÀµÌÀµÌÀµÌ]ÀµÌÀµÌÀµÌ]ÀµÌ]ÀµÌÀµÌ]À¶ÀµÌÀ¶ ]ÀµÌÀµÌÀµÌÀµÌÀ¶ÀµÌÀ¶'À¶YÀ¶]À¶]À¶À¶]À¶ÀµÌÀ¶ ]À¶À¶ÀµÌÀ¶PÀ¶0À¶À¶8À¶hÀ¶4À¶,À¶]À¶]À¶À¶À¶$À¶(À¶@À¶À¶ÀµÌÀ¶YÀ¶ÀµÌYÀ¶À¶hÀµÌÀ¶hÀ¶pÀµÌÀ¶pÀ¶tÀµÌÀ¶t<À¶0À¶À¶8À¶hÀ¶$À¶4À¶,À¶À¶À¶(À¶<À¶YÀ¶À¶YÀ¶YÀ¶YÀ¶À¶hYÀ¶À¶hÀ¶YÀ¶À¶À»0]À¶ À»0À¶ À»4À¶ ÀºÀ¶ ÀºYÀºÀ¹¸]À¶Œ À»PYÀºÀ¹¸]À¶ŒÀ»4À»ˆÀº YÀ»0À»P À¶À·¼YÀ·¼À¶YÀ¶ À·¼À¶| À·¼À¶À»ˆ]À¶ŒÀ¶)À»ˆYÀ»„Àº YÀ»0À»4À»P À»ˆÀº YÀ»0À»4À»P À»ˆÀ»P)À»ˆÀº YÀ»„YÀ»0À»4À»PÀºAÀ¹¸À¹¸Àº eÀ»PÀºÀ»PÀ»hÀ»ˆAÀ¹¸À¹¸À»ˆÀ¹¸YÀ·¼À¹¸À»ˆYÀ·¼À»ˆUÀ»ˆÀ»Œ eUYÀ»ˆ€¥YÀ»ˆUÀ»ˆÀ»ŒVÀ»ŒUÀ»ˆÀ»ŒYÀ»ˆeUYÀ»ˆ€¥YÀ»ˆYÀ»ˆÀ»ˆÀ»ŒÀ»ˆ#À¼$]À¶ŒAÀ»ˆÀ»ˆÀ¼$À¶pÀ¶À»ˆÀ¶tÀ¶À»¤À¶pÀµÌYÀ¼$À¼$À»ˆÀ¶tÀµÌYÀ¼$À¼$À»¤À¼$YÀ·¼]À¶ŒÀ¼$#À»¤À¶]Àº(]Àº À»¤À¶]Àº(Àº !À»¤À¶]Àº(]Àº À»¤À¶Àº(]Àº ÀµÀ»¤ AeYÀ»¨eYÀ»¤À»¨YÀ»¤À»¨ YÀ»¤ ÀµÀ»”À»˜eYÀ»”À»˜YÀ»”À»˜ YÀ»” ÀµÀ»œÀ» eYÀ»œÀ» YÀ»œÀ»  YÀ»œ À¼8€¥À¼8 €¥À¼8À¼<YÀ¼8À¼<eYÀ¼8 À¼0 À¼0€¥À¼0 €¥À¼0À¼4YÀ¼0À¼4eYÀ¼0À¼tYÀ¼pÀ¼teYÀ¼p UÀ»¬€¥UYÀ»¬!À»8UYÀ»¬YÀ»¬/€¥UYÀ»¬À»¬€¥UYÀ»¬ UYÀ»¬ À»¬€¥UYÀ»¬ €¥UYÀ»¬À»°YÀ»¬À»°eYÀ»¬À»° uÀ¶À»0 uÀ¶YÀ·¼]À¶ŒÀ¶Œ2À»ˆ]À¶ŒYÀ·¼À¶YuÀ¶Àº YÀ·¼]À¶À¶2À»ˆ]À¶Œ]À¶À¶YuÀ¶Àº À½€ UuYuYU À¶1À»ˆ]À¶Œ]À¶À¶YUÀ¶Àº 1À»ˆ]À¶ŒYÀ·¼À¶YUÀ¶Àº G À¼$À»ìYÀ»„À¶YÀ¶À»ŒÀ»¨À¼(À» À»˜À·,À»ÜÀ¼$À½5 À¼$À½À»ìÀ»ŒÀ»¨À¼(À» À»˜À·,À»ÜÀ¼$À½À»ŒÀ»¨3YÀ¼$UYÀ¼$YÀ¼$YÀ¼$YÀ¼$YÀ¼$À½À¼(YeYÀ¼p' À¼„UÀ¼(]]À¼<AEAE À½ÐGAAAUY€€ÅUY€€ÅUY€€ÅEAAAUY€€ÅUY€€Å€€Å UY€€Å UY€€ÅvUY€€ÅAAAUY€€ÅUY€€ÅY€€Å1UY€€Å€€Å€Õ€„€Å€Õ€„€Å UÀ½À½”À½˜À½œÀ½À½”À½˜UÀ½œYUÀ½ˆUUÀ½üU À¾,AY À¾0À½üAÀ½ˆÀ½° U‚ñ‚ñÀ½üU À½ˆÀ½üAÀ½ˆÀ½° À¹¬ À½üÀ½´UYUÀ¹¸YUÀ¹¸ AU UYUÀ¹¸UYUÀ¹¸YUÀ¹¸ À¾D UÀ¹¸À¹¸uYUÀ¹¸À¹¸UuYUÀ¹¸À¹¸BUUYUÀ¹¸YUÀ¹¸À¹¸YYÀ¹¸UUuYUÀ¹¸À¹¸AUAUYUÀ¹¸À½üÀ½ÔU€„€ÅUYUÀ¹¸<UYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸6YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸AuÀ¹¸À¹¸À¹¸ UuYUÀ¹¸À¹¸U€„€Å AU UYUÀ¹¸UYUÀ¹¸ À¾L À¾d2 À½üAUAUYUÀ¹¸À½Ô5YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸;UYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸B À½ˆUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸ À¾h> U€­UÀ¹¸À¶uYUÀ¹¸À¹¸UÀ¹¸ UÀ¹¸AYUÀ¹¸ À¾lU U€­UÀ¹¸À¶uYUÀ¹¸À¹¸U€­UÀ¹¸À¶UÀ¹¸ À¾t? U€­UÀ¹¸À¶uYUÀ¹¸À¹¸€„€Å UÀ¹¸YUÀ¹¸AYUÀ¹¸ UuYUÀ¹¸À¹¸uÀ¹¸À¹¸wU€„€ÅUYUÀ¹¸YUÀ¹¸YÀ¹¸€„€ÅÀ¹¸YYÀ½ˆYÀ½ˆYÀ½ˆUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸À¹¸€„€Å€„€Å€„€ÅÀ½UAuÀ¹¸À¹¸À¹¸YÀ½ˆUuYUÀ¹¸À¹¸YUÀ¹¸À¹¸À½”€‡U€„€ÅÀ½üAYUÀ¹¸AAYUÀ¹¸AUAUYUÀ¹¸À½ÔÀ½°€„€Å À¾ˆEUUYUÀ¹¸YUÀ¹¸À¹¸YYÀ¹¸nUAYUÀ¹¸AUAUYUÀ¹¸À½üAAYUÀ¹¸À½´U€„€Å €ÅÀ½¸U€„€Å À½¸ À¾˜b À½üAUAUYUÀ¹¸AYUÀ¹¸AAYUÀ¹¸À½Ô À½¸ À½¸U€„€ÅU€„€Å€ÅÀ½¸€‹U€„€ÅÀ½üAUAUYUÀ¹¸AYUÀ¹¸AAYUÀ¹¸À½ÔYÀ½¸€„€ÅUYÀ·¼4eAÀ·¼UYÀ·¼EUYÀ·¼À·¼( UYÀ·¼AÀ·¼UYÀ·¼AÀ·¼UYÀ·¼ ]À·¼*UYÀ·¼À½ÔÀ·¼YÀ·¼]UYÀ·¼UUÀ¹¸UUUÀ¹¸]UUUÀ¹¸%UYÀ·¼YÀ·¼À¹¸U,]UUUÀ¹¸À½ÔÀ·¼]]UUUÀ¹¸UUÀ¹¸YUUÀ¹¸ UUÀ¹¸W YY]Y]UUUÀ¹¸]UUUÀ¹¸UUÀ¹¸9YUUÀ¹¸À½ÔÀ·¼YYUUÀ¹¸À½Ô À½ÔÀ·¼&YUUÀ¹¸À½ÔÀ·¼Y À¾ AUU À¾¤YA€YUU€ÅAUU€YUU€Å À¾¨]A€YUU€ÅAYUU€YUU€Å À¾ÀAYUUU À¾Ð AU‚ñ‚ñ À½üdAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€Å À¹¸uÀ½ÔÀ½ÔÀ·¼AUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€Å)À¹¸YÀ½°YÀ½´À½ÔÀ½üÀ·¼À½ü" À½ÔÀ½üÀ·¼À·¼À¹¸&À¹¸AÀ·¼YÀ½°YÀ½´À»ˆÀ»@À»HÀ»<À»ˆYÀ»0À¶À¶À»ˆÀ¶YÀ»ˆÀ½YÀ»0À»4À¶xÀ½À¶ À¶À¾ìUYÀ»¤YÀ»¤ÀµÀ»¤ eY eYÀ»¤UYÀ»¤YÀ»¤ À»¤UÀº(BUYÀ»¤YÀ»¤ÀµÀ»¤YÀ»¤À»¤YÀ»¤À¶ À¾ìÀ»¨ UUU" UUUUBUUUUUUUU U  ! UUUU U U] UUUU]]] ÀµÄÀ¼€ AAAA €kÀ¶(À¶À¶(À¶(À¶(À¶(À¶(À¶(À¶(À¶(À¶(À¶(À¶(À¶,À¶,À¶,À¶À¶$ÀµìÀµìÀ¶ À¶ À¶äÀ¶ À¶ "eAUÀ¶EUÀ¶ UÀ¶AUÀ¶AUÀ¶UUÀ¶À¶UÀ¶À½ À¿- YÀ¶ À¶ YYÀ¶ Y1À¶¨À¶ÜÀ¶À¶àÀ¶  YÀ¶  À¶  À¿ À¶ Y À¿2 YÀ¶ À¶À¶ YYÀ¶ Y.À¶,À¶À¶$À¶äÀµìÀµìYÀ¶ À¶À¶À¶  À¿! À¶À¶ YYÀ¶À¶ /À·(À½À¶xYÀ¶ Y€À¶À¶ 8À·(À½À¶YÀ¶YÀ¶ Y€À¶À¶  À¶À½ À¶À½ À·(À½ À·(À½À·(À½À¶ À·(À½ ]À·(]À·(À·(À·(À½YÀ·(YÀ·(YÀ·(À·,À½À·,À»ˆÀ½À»ˆÀ»œÀ½À»œÀ»¤À½À»¤1ÀºðÀ½ÀºèYUÀ¶YuÀ¶À¶  À¿0E UÀ¶  UÀ¶ UÀ¶ À¶ "YÀ¶ À½À¶YÀ¶ UUU U  U]À¿0€ê5À¶(À¶UÀ¶(UÀ¶(UÀ¶(UÀ¶(UÀ¶(U  À¶(U  À¶(U  À¶(U  À¶(U  À¶(À¶(À¶,U]]À¶,]UÀ¶ À¿0À¶,UÀ¶À¶$ÀµìÀµìÀ¶À½À¶UÀ¶ À½À¶UYÀ¶ UYÀ¶ 7YÀ¶YÀ¶À¶UÀ¶ À¶ UYÀ¶ !UYÀ¶ À½YÀ¶JUUUÀ¶UÀµÌÀ¶À¶À¶UÀ¶ À¶ >Y€À¶À¶ À½]ÀµÌY€À¶À¶ UUUÀ½À½UYÀ¶ À¶xYÀ¶ UÀ½]ÀµÌ7UYÀ¶ Y€À¶À¶ À½À·(]ÀµÌÀ·(À½À¿< ÀµÈÀµÜÀµØÀµÌ À¿@ÀµÌÀ¶@À¶À¶À¶À¶8 À¿@À¶ À¿@À¶ À¿@À¶hÀ¿@YÀ»„ À¿@À¶p À¿@À¶t À¿@À»8 À¿@À¶xÀ¿@YÀ¶À·TÀ·XÀ·\À¶|À·L À¿@À·L À¿@À·,À¿@]YÀ¶A À¸]YÀ¶À¶xÀ¸À¸À¸ À¶À¸À¶hÀ¶|À¸D À¿@À·¼BÀ¹ÀÀ¹°À·¼À¹ÄÀ¹ÈÀ¹ÌÀ¹àÀ¹¸À¹èÀ¹ìÀ¹ðÀ¹à À¿@À¹¸ À¿@Àº À¿@ÀºÀ»XÀ»\À», À¿@À»PÀ»h À¿@À»ˆ À¿@À»0 À¿@À»4À¿@1À»ˆ À¿@À»”ÀµÀ»” eYÀ»”ÀµÀ»” À¿@À»˜ À¿@À»œÀµÀ»œ eYÀ»œÀµÀ»œ À¿@À» À¿@YÀ»¤À¿@YÀ»¬ À¿@À»¬À»¨ÀµÀ»¤ À¿@À¼$ À¿@À¼( À¿@À¼<À¼\À¼`À¼P À¿@À¼P eYÀ¼p À¿@À¼t À¼€ À¿@À¼„ À¿@À¼€À¿@ ÀµÄYÀµÄ ÀµÈYÀµÈÀ¿@ À¿<À¼„‚€¡ ‚€¡‚ý € €€.YÀ¶YÀ»ˆYÀ»ˆYÀ»ˆÀ»ˆÀ»ˆÀ¼$À¶p ÀµÈÀ¼„ €Õe ÀµŒe (Ye€íY Àµ Àµœ Àµ Y€íY eY Y Àµ  YY Àµ Àµ¤ ÀµAe€íY€íY Àµ€íY Àµ˜ Àµ€íY Àµ €íY Àµ Àµ” Àµ˜ €íYY Àµ  Àµ¤ Àµ¨Àµ¨Àµ¨eAÀµ¨E AÀµ¨ AÀµ¨"Àµ°Àµ°Àµ´Àµ´Àµ¨Àµ¨ Àµ¨' Àµ¨Àµ°Àµ°Àµ´Àµ´Àµ¨Àµ¨ Àµ°Àµ´Àµ° Àµ¨OJMicrosoft.FSharp.Compiler.AbstractIL.IL+PublicKey+PublicKey@DebugTypeProxyTOMicrosoft.FSharp.Compiler.AbstractIL.IL+PublicKey+PublicKeyToken@DebugTypeProxy Àµ° Àµ´(] (]Àµ¨(]€ ] ]Àµ¨ ]€& ]]Àµ¨]€] ÀµÀÀµÀÀµÀÀµÀ ÀµÀ ÀÁÀµÀ ÀµÀ*ÀµÄ]]Àµ¨]€] …¡]€‚ý]Àµ¨ ÀµÄ€±SQQ]€]€‚ñ‚ñ]]]Àµ¨]Àµ¨Àµ¨ ] ÀµÈ ÀµÈÀµÈÀµÈ] ÀµÈ(ÀµÈ ÀµÌÀµÈ ÀµÌÀµÄeAÀµÌE AÀµÌ AÀµÌ4 ÀµØÀµØaÀµÈÀµÈÀµÜÀµÜÀµÌÀµÌÀµÌ ÀµÌ6 ÀµÌÀµØÀµØÀµÈÀµÈÀµÜÀµÜÀµÌÀµÌÀµÌÀµØÀµÜÀµÌ ÀµÈÀµÈÀµÜÀµÄÀµÜÀµÌÀµØÀµÈÀµÜÀµÌ' ÀµØÀµØÀµÜÀµÜÀµÌÀµÌÀµÌ ÀµÌMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILScopeRef+_Local@DebugTypeProxy ÀµÈMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILScopeRef+Module@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILScopeRef+Assembly@DebugTypeProxyÀµÔ ÀµÔ ÀµØ ÀµÜ(YU]]ÀµìÀµìYU]] YU]]eAÀµìE AÀµì AÀµì3ÀµìÀµìaYU]]YU]] Àµì5ÀµìÀµìÀµìYU]]YU]]ÀµìÀµì]]U]]Àµì ÀµìÀµì ÀµìÀµìÀµôÀµôeAÀµôE AÀµô AÀµô Àµô Àµô ÀµôÀµüÀµüeAÀµüE AÀµü AÀµü Àµü Àµü ÀµüÀµü(ÀµôÀ¶À¶ÀµüÀµô ÀµüÀµô ÀµôeAÀ¶E AÀ¶ AÀ¶$À¶À¶aÀµüÀµüÀµôÀµô À¶&À¶À¶À¶ÀµüÀµüÀµôÀµôÀ¶%À¶À¶À¶ÀµüÀµüÀµôÀµôÀ¶ À¶À¶ À¶À¶ À¶ eAÀ¶ E AÀ¶  AÀ¶  À¶ À¶  À¶ À¶  ÀµÌYÀ¶ À¶À¶ À¶À¶À¶ÀµÌÀµÌYY 1 À¶ À¶YÀ¶aYÀ¶YÀ¶ À¶À¶YÀ¶YÀ¶À¶YÀ¶YÀ¶ À¶ À¶À¶(À¶À¶À¶ÀµìÀ¶ À¶À¶hÀ¶À¶À¶eAÀ¶E AÀ¶€…!À¶$À¶$aÀµìÀµìÀ¶À¶À¶(À¶(À¶À¶À¶,À¶,À¶0À¶0À¶4À¶4À¶8À¶8À¶hÀ¶hÀ¶<À¶<À¶@À¶@ À¶€‡!À¶À¶$À¶$ÀµìÀµìÀ¶À¶À¶(À¶(À¶À¶À¶,À¶,À¶0À¶0À¶4À¶4À¶8À¶8À¶hÀ¶hÀ¶<À¶<À¶@À¶@+ À¶$À¶(À¶,À¶0À¶4À¶8À¶<À¶@€À¶À¶$À¶$ÀµìÀµìÀ¶À¶À¶(À¶(À¶À¶À¶,À¶,À¶0À¶0À¶4À¶4À¶8À¶8À¶hÀ¶hÀ¶<À¶<À¶@À¶@6 À¶<‚ñ‚ñÀ¶@À¶$À¶YU]]À¶À¶@À¶$À¶TÀ¶$À¶$À¶(À¶(À¶,À¶,À¶0À¶0À¶4À¶4À¶8À¶8À¶<À¶<À¶@À¶@ À¶(Àµì ÀµìÀ¶ ÀµìHCMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Array@DebugTypeProxy À¶HCMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Value@DebugTypeProxyHCMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Boxed@DebugTypeProxyFAMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Ptr@DebugTypeProxyHCMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Byref@DebugTypeProxy(À¶h À¶h À¶hRMMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+FunctionPointer@DebugTypeProxyJEMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+TypeVar@DebugTypeProxy À¶À¶KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILType+Modified@DebugTypeProxy À¶$ À¶( À¶, À¶0 À¶4 À¶8 À¶< À¶@À¶deAÀ¶dE AÀ¶d AÀ¶dÀ¶d À¶dÀ¶d À¶YÀ¶À¶- aÀ¶À¶YÀ¶YÀ¶À¶À¶ À¶h/ À¶hÀ¶À¶YÀ¶YÀ¶À¶À¶-À¶hÀ¶À¶YÀ¶YÀ¶À¶À¶ À¶hÀ¶h À¶ À¶À¶YÀ¶À¶0 aÀ¶À¶YÀ¶YÀ¶À¶À¶2 À¶pÀ¶À¶YÀ¶YÀ¶À¶À¶-À¶pÀ¶À¶YÀ¶YÀ¶À¶À¶ À¶p À¶À¶aÀ¶À¶ À¶tÀ¶tÀ¶À¶À¶tÀ¶À¶ À¶tÀ¶t À¶pÀ¶YÀ¶- aÀ¶pÀ¶pÀ¶À¶YÀ¶YÀ¶ À¶x/ À¶xÀ¶pÀ¶pÀ¶À¶YÀ¶YÀ¶-À¶xÀ¶pÀ¶pÀ¶À¶YÀ¶YÀ¶À¶xÀ¶À¶pYÀ¶ À¶xÀ¶x À¶tÀ¶aÀ¶tÀ¶tÀ¶À¶ À¶|À¶|À¶tÀ¶tÀ¶À¶À¶|À¶tÀ¶tÀ¶À¶ À¶|À¶|À¶€À¶€À¶€eAÀ¶€E AÀ¶€ AÀ¶€ À¶€ À¶€ À¶€À¶€ ]]]a À¶ˆ À¶ˆÀ¶ˆ]]] À¶ˆ(À¶ˆ À¶ˆ À¶ˆaÀ¶ˆÀ¶ˆ À¶ŒÀ¶ŒÀ¶ˆÀ¶ˆÀ¶ŒÀ¶ˆÀ¶ˆÀ¶ŒÀ¶ˆ À¶ŒÀ¶ŒÀ¶  À¶ ]À¶ À¶ À¶ À¶ À¶ À¶  À¶ À¶ À¶  À¶  À¶  À¶  À¶ À¶ ]À¶À¶ ]À¶À¶ À¶YÀ¶ eAÀ¶ E AÀ¶  AÀ¶ À¶°À¶ÔÀ¶Ø€Û?À¶¨À¶¨À¶¬À¶¬aÀ¶°À¶°À¶´À¶´À¶¸À¶¸À¶¼À¶¼À¶ÀÀ¶À À¶ÄÀ¶ÄÀ¶ÈÀ¶ÈÀ¶ÌÀ¶Ì À¶ÐÀ¶Ð À¶ÔÀ¶Ô À¶ØÀ¶Ø À¶ÜÀ¶ÜÀ¶àÀ¶àÀ¶äÀ¶äÀ¶À¶YÀ¶ YÀ¶  À¶ €Ý?À¶ À¶¨À¶¨À¶¬À¶¬À¶°À¶°À¶´À¶´À¶¸À¶¸À¶¼À¶¼À¶ÀÀ¶À À¶ÄÀ¶ÄÀ¶ÈÀ¶ÈÀ¶ÌÀ¶Ì À¶ÐÀ¶Ð À¶ÔÀ¶Ô À¶ØÀ¶Ø À¶ÜÀ¶ÜÀ¶àÀ¶àÀ¶äÀ¶äÀ¶À¶YÀ¶ YÀ¶ SÀ¶¨À¶¬À¶°À¶´À¶¸À¶¼À¶ÀÀ¶ÄÀ¶ÈÀ¶ÌÀ¶ÐÀ¶ÔÀ¶ØÀ¶ÜÀ¶àÀ¶ä€Å'À¶ À¶¨À¶¨À¶¬À¶¬À¶°À¶°À¶´À¶´À¶¸À¶¸À¶¼À¶¼À¶ÀÀ¶ÀÀ¶ÄÀ¶ÄÀ¶ÈÀ¶ÈÀ¶ÌÀ¶ÌÀ¶ÐÀ¶ÐÀ¶ÔÀ¶ÔÀ¶ØÀ¶ØÀ¶ÜÀ¶ÜÀ¶àÀ¶àÀ¶äÀ¶äÀ¶À¶YÀ¶ YÀ¶  YÀ¶ €¨&À¶¨À¶¨À¶¬À¶¬À¶°À¶°À¶´À¶´À¶¸À¶¸À¶¼À¶¼À¶ÀÀ¶ÀÀ¶ÄÀ¶ÄÀ¶ÈÀ¶ÈÀ¶ÌÀ¶ÌÀ¶ÐÀ¶ÐÀ¶ÔÀ¶Ô À¶ØÀ¶Ø À¶ÜÀ¶ÜÀ¶àÀ¶àÀ¶äÀ¶ä À¶ À¶ OJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+String@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Bool@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Char@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+SByte@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Int16@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Int32@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Int64@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Byte@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt16@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt32@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt64@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Single@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Double@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Type@DebugTypeProxy ]À¶PKMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+TypeRef@DebugTypeProxy (YÀ¶  À¶YÀ¶  YÀ¶ NIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttribElem+Array@DebugTypeProxy À¶¨ À¶¬ À¶° À¶´ À¶¸ À¶¼ À¶À À¶Ä À¶È À¶Ì À¶Ð À¶Ô À¶Ø À¶Ü À¶à À¶ä À¶xaÀ¶xÀ¶x À·(À·(À¶xÀ¶xÀ·(À¶xÀ¶xÀ·(À·,eYÀ·(eAÀ·,E AÀ·, AÀ·,À·4 eYÀ·(À·4(eYÀ·(eYÀ·( eYÀ·( eYÀ·(XSMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttributes+CustomAttrsLazy@DebugTypeProxy YÀ·(TOMicrosoft.FSharp.Compiler.AbstractIL.IL+ILAttributes+CustomAttrs@DebugTypeProxy À·4À·8 À·8À·DÀ·DeAÀ·DE AÀ·D AÀ·D À·D À·D À·DÀ·D À·LÀ¶ À·LÀ¶x À·LÀ¶|À·LeAÀ·LE AÀ·L AÀ·LRÀ·TÀ·TaÀ¶À¶À·XÀ·XÀ¶xÀ¶xÀ·\À·\À¶|À¶|À·LÀ·LÀ·L À·LTÀ·LÀ·TÀ·TÀ¶À¶À·XÀ·XÀ¶xÀ¶xÀ·\À·\À¶|À¶|À·LÀ·LÀ·LÀ·TÀ·XÀ·\À·L1 À·TÀ·TÀ·XÀ·XÀ·\À·\À·LÀ·LÀ·L À·LJEMicrosoft.FSharp.Compiler.AbstractIL.IL+ILToken+ILType@DebugTypeProxy À¶xLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILToken+ILMethod@DebugTypeProxy À¶|KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILToken+ILField@DebugTypeProxy À·T À·X À·\À·lÀ·l À·l À·l eAÀ·lE AÀ·l AÀ·l À·lÀ·l À·lÀ·tÀ·xÀ·|À·€1 À·lÀ·tÀ·tÀ·xÀ·xÀ·|À·|À·€À·€ À·lÀ·lFAMicrosoft.FSharp.Compiler.AbstractIL.IL+ILConst+I4@DebugTypeProxyFAMicrosoft.FSharp.Compiler.AbstractIL.IL+ILConst+I8@DebugTypeProxyFAMicrosoft.FSharp.Compiler.AbstractIL.IL+ILConst+R4@DebugTypeProxyFAMicrosoft.FSharp.Compiler.AbstractIL.IL+ILConst+R8@DebugTypeProxy À·t À·x À·| À·€À·”À·”eAÀ·”E AÀ·” AÀ·” À·” À·” À·”À·œÀ·œeAÀ·œE AÀ·œ AÀ·œ À·œ À·œ À·œÀ·œÀ·¤À·¤eAÀ·¤E AÀ·¤ AÀ·¤ À·¤ À·¤ À·¤À·¬À·¬eAÀ·¬E AÀ·¬ AÀ·¬ À·¬ À·¬ À·¬À·¬À·´À·´eAÀ·´E AÀ·´ AÀ·´ À·´ À·´À·´ À·¼À·DÀ·¼À·DÀ·lÀ·¼À·œÀ·¤À·DÀ·¼À·´À·¼UYÀ·¼À·”À¶x]YÀ¶#À·¼À·”À¶À¶x]YÀ¶À·¼À·”À¶h]YÀ¶À·¼À¶x]YÀ¶À·¼À·¤À¶|À·¼À·œÀ·¤À¶|À·¼ À·¼À·LÀ·¼À·œÀ·¤À¶À·¼À·¬ÀµìÀ¶À·¼ÀµìÀ¶ À·¼À¶ŒÀ·¼À·œÀ·¤ À·¼ À·¼À¹„eAÀ·¼EÀ·äÀ·ôÀ·øÀ¸À¸8À¸„À¸ˆ->À·ÄÀ·ÈÀ·ÌÀ·ÐÀ·ÔÀ·ØÀ·ÜÀ·àÀ·äÀ·èÀ·ìÀ·ðÀ·ôÀ·øÀ·üÀ¸UYYÀ¸À¸À¸ À¸À¸À¸À¸À¸ À¸$À¸(À¸,À¸0À¸4À¸8À¸<À¸@À¸DÀ¸HÀ¸LÀ¸PÀ¸TÀ¸XÀ¸\À¸`À¸dÀ¸hÀ¸lÀ¸pÀ¸tÀ¸xÀ¸|À¸€À¸„À¸ˆÀ¸ŒÀ¸À¸”À¸˜À¸œÀ¸ ‚ð€—À·¼À·ÄÀ·ÄÀ·DÀ·DÀ·ÈÀ·ÈÀ·ÌÀ·ÌÀ·ÐÀ·ÐÀ·lÀ·lÀ·ÔÀ·ÔÀ·ØÀ·ØÀ·ÜÀ·ÜÀ·œÀ·œÀ·¤À·¤À·àÀ·àÀ·äÀ·äÀ·èÀ·èÀ·ìÀ·ìÀ·ðÀ·ðÀ·ôÀ·ôÀ·øÀ·øÀ¶xÀ¶xÀ·üÀ·üÀ·´À·´À¸À¸UYUYYYÀ¸À¸À·”À·”À¸À¸À¸ À¸ À¶À¶À¸À¸À¶hÀ¶hÀ¸À¸À¸À¸À¸À¸À¸ À¸ À¶|À¶|À¸$À¸$À¸(À¸(À¸,À¸,À¸0À¸0À¸4À¸4À¸8À¸8À¸<À¸<À¸@À¸@À¸DÀ¸DÀ·LÀ·LÀ¸HÀ¸HÀ¸LÀ¸LÀ¸PÀ¸PÀ¸TÀ¸TÀ¸XÀ¸XÀ¸\À¸\À¸`À¸`À¸dÀ¸dÀ¸hÀ¸hÀ¸lÀ¸lÀ¸pÀ¸pÀ¸tÀ¸tÀ·¬À·¬ÀµìÀµìÀ¸xÀ¸xÀ¸|À¸|À¸€À¸€À¸„À¸„À¸ˆÀ¸ˆÀ¸ŒÀ¸ŒÀ¶ŒÀ¶ŒÀ¸À¸À¸”À¸”À¸˜À¸˜À¸œÀ¸œÀ¸ À¸ À¹„À¹„ UY‚HtÀ·ÄÀ·ÄÀ·ÈÀ·ÈÀ·ÌÀ·ÌÀ·ÐÀ·ÐÀ·ÔÀ·ÔÀ·ØÀ·ØÀ·ÜÀ·ÜÀ·àÀ·àÀ·äÀ·äÀ·èÀ·èÀ·ìÀ·ìÀ·ðÀ·ðÀ·ôÀ·ôÀ·øÀ·øÀ·üÀ·üÀ¸À¸UYUYÀ¸À¸À¸À¸À¸ À¸ À¸À¸À¸À¸À¸À¸À¸À¸À¸ À¸ À¸$À¸$À¸(À¸(À¸,À¸,À¸0À¸0À¸4À¸4À¸8À¸8À¸<À¸<À¸@À¸@À¸DÀ¸DÀ¸HÀ¸HÀ¸LÀ¸LÀ¸PÀ¸PÀ¸TÀ¸TÀ¸XÀ¸XÀ¸\À¸\À¸`À¸`À¸dÀ¸dÀ¸hÀ¸hÀ¸lÀ¸lÀ¸pÀ¸pÀ¸tÀ¸tÀ¸xÀ¸xÀ¸|À¸|À¸€À¸€À¸„À¸„À¸ˆÀ¸ˆÀ¸ŒÀ¸ŒÀ¸À¸À¸”À¸”À¸˜À¸˜À¸œÀ¸œÀ¸ À¸ (À·D À·DKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+AI_conv@DebugTypeProxyOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+AI_conv_ovf@DebugTypeProxyRMMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+AI_conv_ovf_un@DebugTypeProxy(À·l À·DÀ·l À·lJEMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+AI_ldc@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldarg@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldarga@DebugTypeProxy À·œÀ·¤À·DKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldind@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldloc@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldloca@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_starg@DebugTypeProxy)KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stind@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stloc@DebugTypeProxyHCMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_br@DebugTypeProxyIDMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_jmp@DebugTypeProxy(À·´-- À·´ À·´KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_brcmp@DebugTypeProxy (UY UY UYLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_switch@DebugTypeProxy À·”À¶x]YÀ¶JEMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_call@DebugTypeProxy1NIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_callvirt@DebugTypeProxy À·”À¶À¶x]YÀ¶TOMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_callconstraint@DebugTypeProxy À·”À¶h]YÀ¶KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_calli@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldftn@DebugTypeProxy À¶x]YÀ¶LGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_newobj@DebugTypeProxyKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_leave@DebugTypeProxy; À·¤À¶|LGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldsfld@DebugTypeProxy<< À·œÀ·¤À¶|KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldfld@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldsflda@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldflda@DebugTypeProxy?LGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stsfld@DebugTypeProxy@@KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stfld@DebugTypeProxyAKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldstr@DebugTypeProxyBLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_isinst@DebugTypeProxyCOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_castclass@DebugTypeProxy(À·LD À·L À·LMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldtoken@DebugTypeProxyEOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldvirtftn@DebugTypeProxyFKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_cpobj@DebugTypeProxyGMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_initobj@DebugTypeProxyHHH À·œÀ·¤À¶KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldobj@DebugTypeProxyIIIKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stobj@DebugTypeProxyJIDMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_box@DebugTypeProxyKKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_unbox@DebugTypeProxyLOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_unbox_any@DebugTypeProxyMLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_sizeof@DebugTypeProxyNLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldelem@DebugTypeProxyOLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stelem@DebugTypeProxyPPPP À·¬ÀµìÀ¶MHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldelema@DebugTypeProxyQQPKMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_ldelem_any@DebugTypeProxyRRPKMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_stelem_any@DebugTypeProxySSLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_newarr@DebugTypeProxyUNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_mkrefany@DebugTypeProxyWOJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_refanyval@DebugTypeProxy(À¶ŒY À¶Œ À¶ŒNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_seqpoint@DebugTypeProxy\\KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_cpblk@DebugTypeProxy]]MHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_initblk@DebugTypeProxy^MHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+EI_ilzero@DebugTypeProxy__RMMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+EI_ldlen_multi@DebugTypeProxy(À¹„` À¹„ À¹„KFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILInstr+I_other@DebugTypeProxy À·Ä À·È À·Ì À·Ð À·Ô À·Ø À·Ü À·à À·ä À·è À·ì À·ð À·ô À·ø À·ü À¸ À¸ À¸ À¸  À¸ À¸ À¸ À¸ À¸  À¸$ À¸( À¸, À¸0 À¸4 À¸8 À¸< À¸@ À¸D À¸H À¸L À¸P À¸T À¸X À¸\ À¸` À¸d À¸h À¸l À¸p À¸t À¸x À¸| À¸€ À¸„ À¸ˆ À¸Œ À¸ À¸” À¸˜ À¸œ À¸ À¹„eAÀ¹„E AÀ¹„ AÀ¹„À¹„À¹„À¹„À¹„ À¹„À¹„ À¹„À¹„ (AÀ¹„(AÀ¹„Y(AÀ¹„](AAAÀ¹„À¹„AÀ¹„YAÀ¹„]AAAÀ¹„À¹„ AÀ¹„ AÀ¹„Y AÀ¹„] AAAÀ¹„À¹„K AÀ¹„AÀ¹„YAÀ¹„]AÀ¹„AAAÀ¹„À¹„ (AY (A] (A(AAA AY A]AAA À¹Œ AY A] A AAA À¹„ À¹„ À¹Œ À¹œ AY YÀ¹„ À¹  A] ]À¹„ À¹¤ À¹¨ AA À¹„AÀ¹„ À¹¬À¹¬ À¹¬À¹¬ À·¼ À·¼À¹° À¹ˆ]À·¼À¸À¸ À¹„ À¹° ]] ]]À¹ˆÀ¹¸YÀ¹¬YÀ¹¸À¹¸YÀ¹¸À¹¸À¹¸À¹àeAÀ¹¸E AÀ¹¸ AÀ¹¸À¹ÀÀ¹ÄÀ¹ÈÀ¹Ì}À¹¸À¹ÀÀ¹ÀÀ¹°À¹°À¹ÄÀ¹ÄYÀ¹¬YÀ¹¬YÀ¹¸YÀ¹¸À¹ÈÀ¹ÈYYÀ¹¸À¹¸À¹ÌÀ¹ÌÀ¹àÀ¹à YÀ¹¬ YÀ¹¸, À¹ÀÀ¹ÀÀ¹ÄÀ¹ÄÀ¹ÈÀ¹ÈÀ¹ÌÀ¹ÌÀ¹¸(À¹° À¹° À¹°OJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILCode+ILBasicBlock@DebugTypeProxy (YÀ¹¬ (YÀ¹¸ YÀ¹¬YÀ¹¸ YÀ¹¬ YÀ¹¸MHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILCode+GroupBlock@DebugTypeProxy YÀ¹¸PKMicrosoft.FSharp.Compiler.AbstractIL.IL+ILCode+RestrictBlock@DebugTypeProxy(À¹à À¹¸À¹à À¹àKFMicrosoft.FSharp.Compiler.AbstractIL.IL+ILCode+TryBlock@DebugTypeProxy À¹À À¹Ä À¹È À¹Ì À¹àÀ¹¸À¹àYUÀºÀ¹¸À¹àeAÀ¹àE AÀ¹à AÀ¹àYUÀºÀ¹¸À¹èÀ¹ìÀ¹ðÀ¹àdÀ¹àÀ¹èÀ¹èÀ¹¸À¹¸À¹ìÀ¹ìÀ¹ðÀ¹ðYUÀºÀ¹¸YUÀºÀ¹¸À¹àÀ¹àÀ¹à YUÀºÀ¹¸1 À¹èÀ¹èÀ¹ìÀ¹ìÀ¹ðÀ¹ðÀ¹àÀ¹àÀ¹à À¹àWRMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionBlock+FaultBlock@DebugTypeProxyYTMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionBlock+FinallyBlock@DebugTypeProxy(YUÀºÀ¹¸ YUÀºÀ¹¸ YUÀºÀ¹¸]XMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionBlock+FilterCatchBlock@DebugTypeProxy À¹è À¹ì À¹ð ÀºÀ¶ ÀºÀ¹¸ÀºeAÀºE AÀº AÀº ÀºÀº ; ÀºÀºÀºÀ¶À¶Àº Àº À¹¸À¹¸ÀºÀº"ÀºÀºÀº Àº ÀºÀº ÀºTOMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFilterBlock+TypeFilter@DebugTypeProxyTOMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFilterBlock+CodeFilter@DebugTypeProxy Àº Àº À¶ (YÀº YÀº YÀºÀ¹¸]À¶ŒÀº Àº eAÀº E AÀº  AÀº  Àº Àº  Àº Àº(Àº(Àº(Àº(Àº(Àº(Àº(Àº( Àº(Àº( Àº( Àº( Àº( Àº(eAÀº(E AÀº( AÀº( Àº( Àº( Àº(Àº(NIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+String@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Bool@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Char@DebugTypeProxyLGMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Int8@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Int16@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Int32@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Int64@DebugTypeProxyMHMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt8@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt16@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt32@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt64@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Single@DebugTypeProxyNIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILFieldInit+Double@DebugTypeProxy Àº0 Àº4 Àº8 Àº< Àº@ ÀºD ÀºH ÀºL ÀºP ÀºT ÀºX Àº\ Àº`Àº˜Àº˜ Àº˜Àº˜Àº˜]Àº˜]U]Àº˜ÀºÈ]eAÀº˜E AÀº˜ AÀº˜ Àº˜ Àº˜ Àº˜Àº˜ OJMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeType+Custom@DebugTypeProxyWRMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeType+FixedSysString@DebugTypeProxySNMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeType+FixedArray@DebugTypeProxy (]Àº˜(]U] ]Àº˜]U] ]Àº˜ ]U]NIMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeType+Array@DebugTypeProxy(ÀºÈ ÀºÈ] ÀºÈRMMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeType+SafeArray@DebugTypeProxy Àº  Àº¤ Àº¨ Àº¬ Àº°ÀºÈÀºÈ ÀºÈÀºÈeAÀºÈE AÀºÈ AÀºÈ/ ÀºÐÀºÐaÀºÈÀºÈÀºÔÀºÔÀºØÀºØ ÀºÈ1 ÀºÈÀºÐÀºÐÀºÈÀºÈÀºÔÀºÔÀºØÀºØÀºÐÀºÔÀºØ"ÀºÐÀºÐÀºÔÀºÔÀºØÀºØ ÀºÈÀºÈ ÀºÈQLMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeVariant+Array@DebugTypeProxyRMMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeVariant+Vector@DebugTypeProxyQLMicrosoft.FSharp.Compiler.AbstractIL.IL+ILNativeVariant+Byref@DebugTypeProxy ÀºÐ ÀºÔ ÀºØÀºèÀºèeAÀºèE AÀºè AÀºè Àºè Àºè ÀºèÀºè(ÀºèÀºðÀºè Àºè ÀºèeAÀºðE AÀºð AÀºðÀºðÀºðaÀºèÀºè ÀºðÀºðÀºðÀºðÀºèÀºèÀºðÀºðÀºðÀºðÀºèÀºè ÀºðÀºð ÀºðÀºð (YÀºðÀºôeAÀºôE AÀºô AÀºôÀºüÀ» eYÀºð ÀºüÀ»9 ÀºôÀºüÀºüYÀºðYÀºðÀ»À»ÀºôÀºô eYÀºðÀ» YÀºð"ÀºüÀºüÀ»À»ÀºôÀºô Àºô YÀºðWRMicrosoft.FSharp.Compiler.AbstractIL.IL+ILPermissions+SecurityDecls@DebugTypeProxy(eYÀºðeYÀºð eYÀºð eYÀºð[VMicrosoft.FSharp.Compiler.AbstractIL.IL+ILPermissions+SecurityDeclsLazy@DebugTypeProxy Àºü À»À» À» eAÀ» E AÀ»  AÀ»  À» À»  À» À» À»À»eAÀ»E AÀ» AÀ» À» À» À»À»À»À»eAÀ»E AÀ» AÀ» À» À» À»À»À»$À»$eAÀ»$E AÀ»$ AÀ»$ À»$ À»$ À»$À»$(À»(À»$(À»(À»  À» À»$ À» À»  ÀµÈÀ»À»$À»À» ' ]À¶]Àº(]Àº˜À·, ]Àº˜À¶À·,À»8À¶pÀ¶ À¶pÀ¶eAÀ»8E AÀ»8 AÀ»8$À»8À»8aÀ¶pÀ¶pÀ¶À¶ À»8&À»8À»8À»8À¶pÀ¶pÀ¶À¶À»8%À»8À»8À»8À¶pÀ¶pÀ¶À¶ À»8À»8 À»8À»8 À»<À»< À»<À»@À»@ À»@À»<eAÀ»@E AÀ»@ AÀ»@À»HÀ»HaÀ»<À»< À»@À»@À»HÀ»HÀ»<À»<À»HÀ»HÀ»H À»@À»@(À»< À»< À» e€YÀ·,eÀ¼$e€¥Y€íeÀ¼$ e€YÀ·,eÀ¼$ e€¥Y€íeÀ¼$eAÀ¼(E AÀ¼( AÀ¼( e€¥Y€íeÀ¼$ e€YÀ·,eÀ¼$À¼(À¼(À¼(e€YÀ·,eÀ¼$ Y€YÀ·,eÀ¼$e€¥Y€íeÀ¼$€¥Y€íeÀ¼$€íeÀ¼$/e€¥Y€íeÀ¼$UYY À¼$ À¼(À¼( À¼(Y€YÀ·,eÀ¼$g e€YÀ·,eÀ¼$€YÀ·,eÀ¼$eÀ¼$Y€YÀ·,eÀ¼$À¼$1€YÀ·,eÀ¼$Y€YÀ·,eÀ¼$ Y€YÀ·,eÀ¼$(À¼4 À¼4 Àº À¼4À·,(e€¥À¼0 (YÀ¼0e€¥À¼0À¼4e€¥À¼0 e€¥À¼0 e€¥À¼0eAÀ¼4E AÀ¼4 AÀ¼4 e€¥À¼0À¼4À¼4À¼4À¼4e€¥À¼0 À¼0YÀ¼0e€¥À¼0 YÀ¼0 À¼4À¼4 À¼4À¼4 ÀµÌÀ»ìÀ¼4À·,(e€¥À¼8 (YÀ¼8e€¥À¼8À¼<e€¥À¼8 e€¥À¼8 e€¥À¼8eAÀ¼<E AÀ¼< AÀ¼< e€¥À¼8À¼<À¼<À¼<À¼<e€¥À¼8 À¼8YÀ¼8e€¥À¼8 YÀ¼8 À¼<À¼< À¼<À¼< YÀ¼0À¼0YÀ¼0 YÀ¼8À¼8YÀ¼8À¼HÀ¼HeAÀ¼HE AÀ¼H AÀ¼H À¼H À¼H À¼HÀ¼HÀ¼PAE À¼PÀµÈ À¼PÀµÄÀ¼PeAÀ¼PE AÀ¼P AÀ¼P (AE AE AETOMicrosoft.FSharp.Compiler.AbstractIL.IL+ILResourceLocation+Local@DebugTypeProxy ÀµÈSNMicrosoft.FSharp.Compiler.AbstractIL.IL+ILResourceLocation+File@DebugTypeProxyWRMicrosoft.FSharp.Compiler.AbstractIL.IL+ILResourceLocation+Assembly@DebugTypeProxy À¼X À¼\ À¼`(À¼P(À¼H À¼P À¼H À¼PÀ¼HÀ·,(eYÀ¼p (YÀ¼peYÀ¼p eYÀ¼p eYÀ¼peAÀ¼tE AÀ¼t AÀ¼t eYÀ¼pÀ¼tÀ¼tÀ¼tÀ¼t YÀ¼p À¼tÀ¼t À¼tÀ¼tÀ¼xÀ¼xÀ¼xeAÀ¼xE AÀ¼x AÀ¼x À¼x À¼x À¼xÀ¼x(À¼x(À¼< (]ÀµÈ À¼x À¼< ]ÀµÈ= Àºô]]€]À·,À¼xÀ¼<]ÀµÈ (]À¼€(À¼t (Ye(À¼€ ]À¼€ À¼t YeE ]À¼€À·,À¼(U]À¶€]À¼tYe À¼€ À¼ˆ À¼ˆ À¼ˆeAÀ¼ˆE AÀ¼ˆAÀ¼ˆ À¼ˆ À¼ˆ À¼ˆ À¼ À¼ ]Y ]YÀ¹ˆ ]À¹ˆ €„€ÅÀ¹¸€„€Å YYÀ¹¸ ÀºÀ¹¸ YYUÀºÀ¹¸€­UÀ¹¸À¶‚™UÀ¹¸À¶‚•UÀ¹¸À¶"U€­UÀ¹¸À¶UÀ¹¸‚™UÀ¹¸À¶‚•UÀ¹¸À¶T€­UÀ¹¸À¶UÀ¹¸À¹¸‚™UÀ¹¸À¶‚•UÀ¹¸À¶À¹¸2 UÀºÀ¹¸U€­UÀ¹¸À¶UÀ¹¸ À¼¼ À»„À¶ À¶À»„ eÀ¼$Y€YÀ·,eÀ¼$6 €YÀ·,eÀ¼$€YÀ·,eÀ¼$ À¼è Y& €¥Y€í€¥Y€í€Y À¼è Y9 A€¥Y€í€¥Y€í€Y À¼ì Y€í# €Y€¥Y€í$ €¥Y€í€Y €YÀ·,eÀ¼$À¼$9 €YÀ·,eÀ¼$Y€YÀ·,eÀ¼$€¥YÀ»ˆYÀ»ˆ€¥YÀ»ˆ: UYÀ»ˆ€¥YÀ»ˆUYÀ»ˆ€¥YÀ»ˆ? UYÀ»ˆ€¥YÀ»ˆÀ»ˆUYÀ»ˆ€¥YÀ»ˆeYÀ»ˆ eYÀ»ˆ eYÀ»ˆ UYÀ»ˆ€¥YÀ»ˆE% €¥YÀ»ˆÀ»ˆ€¥YÀ»ˆ AÀ»ˆ AÀ»ˆ À»ˆ€¥YÀ»ˆ#YÀ»ˆ€¥YÀ»ˆYÀ»ˆ (]À·( ]À·( ]À·(~ KÀµÌÀ¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶À¶YÀ·(]À·(]À·( YÀ·¼ YÀ¶ À·¼À¶ =Àº =Àº Àº À»¤ À»” À»œ €¥À¼8 €¥À¼8À¼8€¥À¼8eYÀ¼8 eYÀ¼8 eYÀ¼8 €¥À¼8E €¥À¼0 €¥À¼0À¼0€¥À¼0eYÀ¼0 eYÀ¼0 eYÀ¼0 €¥À¼0E/ €¥UYÀ»¬À»¬€¥UYÀ»¬eYÀ»¬ eYÀ»¬ eYÀ»¬ €¥UYÀ»¬E À¶ À»0uÀ¶ YÀ·¼uÀ¶ u uU À½ˆUÀ½ˆUUÀ½ˆÀ¶UeAÀ½ˆE AÀ½ˆKÀ½À½aUUÀ½”À½”À½˜À½˜À½œÀ½œÀ¶À¶ À½ˆMÀ½ˆÀ½À½UUÀ½”À½”À½˜À½˜À½œÀ½œÀ¶À¶À½UÀ½”À½˜À½œKÀ½ˆÀ½À½UUÀ½”À½”À½˜À½˜À½œÀ½œÀ¶À¶8 À½À½UUÀ½”À½”À½˜À½˜À½œÀ½œ À½ˆÀ½ˆUPMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionClause+Finally@DebugTypeProxySNMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionClause+Fault@DebugTypeProxy UUYTMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionClause+FilterCatch@DebugTypeProxy À¶UWRMicrosoft.FSharp.Compiler.AbstractIL.IL+ILExceptionClause+TypeCatch@DebugTypeProxy À½ À½” À½˜ À½œ (YÀ½ˆ YÀ½ˆ UYÀ½ˆ) aUUYÀ½ˆYÀ½ˆ À½°À½°+ À½°UUYÀ½ˆYÀ½ˆ U) À½°UUYÀ½ˆYÀ½ˆ YÀ½ˆ À½°À½° UYÀ¹¬) aUUYÀ¹¬YÀ¹¬ À½´À½´+ À½´UUYÀ¹¬YÀ¹¬) À½´UUYÀ¹¬YÀ¹¬ À½´À½´ À½¸À½° À½¸À½´À½¸À½¸eAÀ½¸E AÀ½¸ AÀ½¸À½ÀÀ½Ä9 À½ÀÀ½ÀaÀ½°À½°À½ÄÀ½ÄÀ½´À½´À½¸À½¸ À½¸; À½¸À½ÀÀ½ÀÀ½°À½°À½ÄÀ½ÄÀ½´À½´À½¸À½¸ À½ÀÀ½Ä"À½ÀÀ½ÀÀ½ÄÀ½ÄÀ½¸À½¸ À½¸(À½° À½°JEMicrosoft.FSharp.Compiler.AbstractIL.IL+structspec+SEH@DebugTypeProxy(À½´ À½´ À½´LGMicrosoft.FSharp.Compiler.AbstractIL.IL+structspec+LOCAL@DebugTypeProxy À½À À½Ä€€ÅUY€€Å€€ÅY€€Å: UY€€ÅUY€€Å(€„€Å€Õ€„€ÅUY€„€Å4AAUY€„€ÅUY€„€ÅuY€„€Å À½´UY€„€Å UY€„€ÅuY€„€Å€– €„€Å€Õ€„€ÅÀ·¼UY€„€ÅAAUY€„€ÅUY€„€ÅY€„€ÅuY€„€Å! À·¼YÀ½°YÀ½´A €„€Å‚%‚ñ‚ñ À¹ˆÀ¹„, À¸À·ôÀ¸ À¹„À·üÀ·´À¸Y* uY€„€ÅY€„€Å €Õ€„€ÅUÀ½˜U EÀ½ˆ EÀ½° EÀ½´ À½ÔA<Y€„€ÅuY€„€ÅY€„€Å- UY€„€ÅUY€„€Å À½Ô À½ÔÀ¹„AAÀ¹„ À¹„ ]À¹„ ]À¹„À¹ˆ À½ˆU YÀ½ˆU À½°U À½°À½ˆ À½´À½ˆ À½°À½°UUU À½´À½° À½°À½´ À½´À½´*À½ÄÀ½ÄÀ½´À½´À½ÀÀ½°À½ÀÀ½° À½¸À½¸ AU AÀ½ˆ&AUAÀ½ˆÀ½ÀÀ½ÄÀ½´ AU AÀ½ˆ!AUAÀ½ˆÀ½ÄÀ½À À½¸ À½üU U À½üÀ½° À½üÀ½´ À½ü À¾, À¾0 AU U AU U À½ˆ À¹¬ UÀ¹¸ À¹¸UÀ¹¸ €„€Å €„€Å€„€Å€„€Å# A€„€Å€„€ÅÀ¹¸&AUAUYUÀ¹¸6YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸ À¾`i À½üAUAUYUÀ¹¸À½ÔYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸ UuYUÀ¹¸À¹¸uYUÀ¹¸À¹¸UuYUÀ¹¸À¹¸uYUÀ¹¸À¹¸€­UÀ¹¸À¶1U€­UÀ¹¸À¶uYUÀ¹¸À¹¸5YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸3 U€­UÀ¹¸À¶uYUÀ¹¸À¹¸;UYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸~ À½˜UUUuYUÀ¹¸À¹¸À¹¸UuYUÀ¹¸À¹¸uYUÀ¹¸À¹¸À½œÀ¶B UYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸À½ˆ À¾d9YU€­UÀ¹¸À¶uYUÀ¹¸À¹¸€ AÀ½ˆUYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸UYU€­UÀ¹¸À¶uYUÀ¹¸À¹¸/€­UÀ¹¸À¶uYUÀ¹¸À¹¸B YUÀ¹¸U€­UÀ¹¸À¶uYUÀ¹¸À¹¸5€­UÀ¹¸À¶uYUÀ¹¸À¹¸À¹¸U U€­UÀ¹¸À¶UÀ¹¸U€­UÀ¹¸À¶uYUÀ¹¸À¹¸ À¾p0 €­UÀ¹¸À¶uYUÀ¹¸À¹¸?À¹¸€„€Å‚•UÀ¹¸À¶€„€Å€„€ÅO A€„€Å€„€ÅU€­UÀ¹¸À¶uYUÀ¹¸À¹¸ À¹¸À¹¸ À¹¸uÀ¹¸À¹¸&AUAUYUÀ¹¸AYUÀ¹¸AAYUÀ¹¸ À¾”p À½üAUAUYUÀ¹¸AYUÀ¹¸AAYUÀ¹¸À½Ô€„€Å €„€Å  À½ÄÀ½À U€„€ÅÀ½¸ À¾˜U€„€Å€„€Å/ AÀ½¸U€„€ÅU€„€Å UYÀ·¼ À¾  UU U UUUU]YUUYUUUU €YUU€Å]YUUYUUlUUU]YUU]YUUYUUYUUP €YUU€Å€YUU€ÅUU0 UU€YUU€ÅT €YUU€Å€YUU€ÅYUUAUUÀ¹¸ AUUÀ¹¸ UUÀ¹¸;UYYUUÀ¹¸€YUUÀ¹¸€ÅYYUUÀ¹¸ €YUUÀ¹¸€ÅYUUÀ¹¸ YUUÀ¹¸:UYYUUÀ¹¸€YUUÀ¹¸€Å1YUUÀ¹¸6UYUUÀ¹¸€YUUÀ¹¸€Å€¬UYYUUÀ¹¸€YUUÀ¹¸€ÅYYUUÀ¹¸€YUUÀ¹¸€ÅYUUÀ¹¸YUUÀ¹¸AUUÀ¹¸W UYUUÀ¹¸€YUUÀ¹¸€Å€YUUÀ¹¸€Åa A€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅU AUUUUYUUYUU À¾¼ UUU(YUUUYUU UYUUp À½ÔÀ½üAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€Å/U€YUUÀ¹¸€Å€„€Å À¹¸- €YUUÀ¹¸€ÅUU-€YUUÀ¹¸€Å€„€Åi U€YUUÀ¹¸€Å€„€ÅYÀ½¸U€YUUÀ¹¸€Å€„€Å À½¸À½° À½¸À½´ 1U À½´ À¹¸UUÀ¹¸3 À½Ô€„€Å€YUUÀ¹¸€Å UUÀ¹¸À¹¸:YUUÀ¹¸YYUUÀ¹¸YYÀ¹¸ À¹¸E€ˆ YÀ½°YÀ½´À½ÔÀ½üÀ·¼AUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅpAYÀ½¸AU€YUUÀ¹¸€Å€„€ÅU€YUUÀ¹¸€Å€„€ÅAYUUÀ¹¸UZA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€Å€é€áÀ½üAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅAYUUÀ¹¸UA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€ÅÀ½Ô0U€YUUÀ¹¸€Å€„€Å YÀ½¸ AÀ½´€è€áÀ½üAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅAYUUÀ¹¸UA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€ÅÀ½Ô€YUUÀ¹¸€Å0 UUÀ¹¸€YUUÀ¹¸€Å À½°À½¸ À½´À½¸<AYÀ½¸U€YUUÀ¹¸€Å€„€Å1 U€YUUÀ¹¸€Å€„€Å À½° À½´ƒ&AYÀ½¸AU€YUUÀ¹¸€Å€„€ÅU€YUUÀ¹¸€Å€„€ÅAYUUÀ¹¸UA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€Å€áÀ½üAUA€YUUÀ¹¸€ÅUYUUÀ¹¸€YUUÀ¹¸€ÅAYUUÀ¹¸UA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€ÅÀ½ÔAYUUÀ¹¸UA€YUUÀ¹¸€ÅAYUUÀ¹¸€YUUÀ¹¸€ÅYUUÀ¹¸€YUUÀ¹¸€ÅU€YUUÀ¹¸€Å€„€ÅYÀ½¸YÀ½¸U€YUUÀ¹¸€Å€„€Å‚%AÀ½´1€„€Å€YUUÀ¹¸€Å(YUÀº(YUÀº( YUÀº( YUÀº(À¶YUÀº(,aYUÀº(YUÀº(À¶À¶ À¾ì.À¾ìYUÀº(YUÀº(À¶À¶-À¾ìYUÀº(YUÀº(À¶À¶ YUÀº( À¾ìÀ¾ì UÀº( ]Àº( UÀº(À»¤ À¶ UÀ¶ YÀ¶  À¿ 1À¶  YÀ¶  YÀ¶  À¿ À¿ À¿UÀ¶À¶ €À¶À¶ YUÀ¶À¶ Y€À¶À¶ €Ÿ À½YÀ¶ Y€À¶À¶ YÀ¶UÀ¶À¶ À¶ À¶€À¶À¶ YYUÀ¶À¶ YYY€À¶À¶ Y À¶À¶ 1UÀ¶À¶ YUÀ¶À¶ UÀ¶À¶  À½ YUÀ¶À¶ 1€À¶À¶ Y€À¶À¶  Y€À¶À¶  À½À·(uÀ¶À¶ YuÀ¶À¶ Y À½YuÀ¶À¶ uÀ¶À¶ À¶ À¶YYuÀ¶À¶ Y1uÀ¶À¶ YuÀ¶À¶  YuÀ¶À¶ !YUÀ¶YuÀ¶À¶ UÀ¶YuÀ¶À¶ "YUÀ¶YuÀ¶À¶ € À½YUÀ¶YuÀ¶À¶ UÀ¶YuÀ¶À¶ À¶YuÀ¶À¶ YYUÀ¶YuÀ¶À¶ YYY 1UÀ¶YuÀ¶À¶ !YUÀ¶YuÀ¶À¶ # YUÀ¶YuÀ¶À¶ U]YÀ¶ ]ÀµìU]YÀ¶ ]ÀµìiU]YÀ¶]YÀ¶]Àµì]]ÀµÌY1À¶YÀ¶À¶À¶]Àµì À¶ ]] À¿0YÀ¶ À¿0 (YÀµÈ YÀµÈ YÀµÈ YÀµÄYÀµÈ*aYÀµÄYÀµÄYÀµÈYÀµÈ À¿<,À¿<YÀµÄYÀµÄYÀµÈYÀµÈ+À¿<YÀµÄYÀµÄYÀµÈYÀµÈ YÀµÈ À¿<À¿< (€íÀµÄ (€íÀµÈ €íÀµÄ €íÀµÈ €íÀµÄ €íÀµÈ €íÀµÄ€íÀµÈ €íÀµÈ €íÀµÄ À¿@ À¿@ EYÀ¶ÀºÀ¹¸ÀºÀº EÀ¼€ YÀµÄÀµÄYÀµÄ YÀµÈÀµÈYÀµÈ À»0À¶À¶À¶À¶À¶ À¶ À¿°À¿°À¿°À¿° À¿°À¶ À¿° À¿´À¿´À¿´ À¿´À¶ À¿´€„€Å€„€Å Y À¿ÈEÀ¿Ä À¿ÄÀ¿È À¿ÄB €Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€Õ€áÀ¿È €á€á À¿ÄeAÀ¿ÄE AÀ¿Ä AÀ¿Ä À¿ÄÀ¿Ä À¿ÄÀ¿ÄÀ¿ÄÀ¿ÄÀ¿Ä À¿ÄÀ¿Ä(À¿Ä À¿Ä À¿Ä aÀ¿ÄÀ¿Ä À¿ÈÀ¿È À¿ÈÀ¿ÄÀ¿ÄÀ¿ÈÀ¿ÄÀ¿Ä À¿ÈÀ¿È €íY€íU] €í ÀÁÀµÀ€ÕYÀ¹ˆ€ÕYÀ¼ AE€½À¿ôÀ¿ôEaÀ¿ôÀ¿ôE À¿ð ÙÀ¿ôEYAA AEÀ¿ØÀÀ ÀÀÀÀÀÀ5 ÀÀ ÀÀ aÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀE2 ÀÀ ÀÀ ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ ÀÀÀÀÀÀ ÀÀE €Õ]€ÕYÀÀ YÀÀ$AE€ÕYÀÀ€Õ]*AAE€ÕYÀÀ€Õ]€ÕYÀÀ €Õ]M…©AAAA M Q QeAE AA ÀÀ À¿ðj€ÕYÀÀ€Õ]AEM…©À¿èYUYYAAAA]]EÀ¿ôÀ¿èUYYAEAAEAAE UEÀ¿ôYÀ¿èAAEAEAAEYUUUUUAUUU 1À¿ð €ÁH UUUUUUUÀ¿ôÀ¿ô€Á€ÁDÀ¿ôÀ¿èUYYAEAAEAAE À¿ÔÀ¿ØÀ¿ØeAÀ¿ØE AÀ¿Ø AÀ¿ØÀ¿àÀ¿àÀ¿àa À¿ØÀ¿ØÀ¿àÀ¿à À¿àÀ¿àÀ¿à À¿ØÀ¿ØOJMicrosoft.FSharp.Compiler.MSBuildResolver+ResolvedFrom+Path@DebugTypeProxy À¿àÀ¿èÀ¿èeAÀ¿èE AÀ¿è AÀ¿è À¿è À¿è À¿èÀ¿è À¿ØaÀ¿ØÀ¿Ø À¿ðÀ¿ðÀ¿ØÀ¿ØÀ¿ðÀ¿ØÀ¿Ø À¿ðÀ¿ð(À¿ð À¿ð À¿ð À¿ô À¿ôÀ¿ô À¿ôÀÀ ÀÀÀÀeAÀÀE AÀÀ AÀÀ ÀÀ6 ÀÀÀÀ ÀÀ ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ1 ÀÀ ÀÀ ÀÀÀÀÀÀÀÀÀÀÀÀÀÀ ÀÀ^YMicrosoft.FSharp.Compiler.MSBuildResolver+Foregrounded+ForegroundedMessage@DebugTypeProxy\WMicrosoft.FSharp.Compiler.MSBuildResolver+Foregrounded+ForegroundedError@DebugTypeProxy^YMicrosoft.FSharp.Compiler.MSBuildResolver+Foregrounded+ForegroundedWarning@DebugTypeProxy ÀÀ  ÀÀ ÀÀ# AE€ÕYÀÀ€Õ]; AEAAEAAE€ÕYÀÀ€Õ] …±…± …¹ …½ …Á …Å UQ! UUYUQ…É…É 1Q Q YQ AAAA AAAÀÀ ÀÀÀÀÀÀ EÀÀ YQ …©QYQÀ¿ð Q1QYQ YQ 1À¿ð À¿ð YÀ¿ð …©QYQ€Õ]€©€Õ]€©]€© €Õ]€©]€©]€©€©]€©]€©AE€©€©E ]€©€©EE ]€© €Õ]€© €„€Å€Å€„€Å€„€Å!€„€Å€„€Å ÀÀœ €„€Å%€„€ÅY€„€Å ÀÀ €„€Å€Å#AA€„€ÅAE€„€ÅA€„€Å€„€Å €„€Å€„€ÅY€„€Å&€„€ÅA€„€Å-€„€Å€„€Å€„€Å€„€Å€„€Å €„€Å€„€Å€€Å€Å'€€Å€€Å]€€Å%€€Å€€Å€€Å"AAE€€Å ÀÀ¬,]UAA€€Å!AA€€Å€€Å+€€ÅA€€Å1€€ÅAA€€Å+AAA€€ÅYU€€Å/AAA€€Å€€ÅU€€ÅÀÀ° AAAU€€Å U€€ÅU€€ÅU€€ÅEU€€ÅAAAU€€Å+]AA]€€Å ÀÀ´ AA] Y+YAA]€€Å ÀÀ¸ U€€Å&€€Å€ÅYU ÀÀ¼ ÀÀÀ Y€€Å ÀÀÄY€€Å€€Å ÀÀ¬ ]UAAAUÀÀ° U UUU U UAA] ÀÀ´] ]]Y]] YY€€Å* €€Å€€ÅU ] ]…Í …Í …ÍE5  ÀÀÐÀÁ ]AAAA€Õ]ÀÁ ÀÁ  €íÀÁ E ÀÀè ÀÀì ÀÀà ÀÀàeAÀÀàE AÀÀàAÀÀà ÀÀè ÀÀìÀÀèÀÀìG ÀÀàÀÀèÀÀèÀÀìÀÀìÀÀàÀÀà> ÀÀèÀÀèÀÀìÀÀìÀÀàÀÀà ÀÀàd_Microsoft.FSharp.Compiler.AbstractIL.Internal.Library+ResultOrException`1+Result@DebugTypeProxygbMicrosoft.FSharp.Compiler.AbstractIL.Internal.Library+ResultOrException`1+Exception@DebugTypeProxy ÀÀð ÀÀè ÀÀô ÀÀì ÀÁ ÀÁ AEÀÀøÀÀøAEÀÀø ÀÀø ÀÀøeAÀÀøE AÀÀøAÀÀø[VMicrosoft.FSharp.Compiler.AbstractIL.Internal.Library+Eventually`1+Done@DebugTypeProxy(AEÀÀø AEÀÀøa\Microsoft.FSharp.Compiler.AbstractIL.Internal.Library+Eventually`1+NotYetDone@DebugTypeProxy ÀÁ ÀÁ ÀÁ ÀÁ ÀÁ  ÀÁ$0ÀÀøÀÀøAÀÀø ÀÀø0ÀÀø ÀÁ ÀÀø0ÀÀøÀÀøEÀÀø$0ÀÀøÀÀøAÀÀø0ÀÀøÀÀøAEE0ÀÀøAEÀÀø ÀÀøE ÀÁ ÀÀøE ÀÁ ÀÁ ]A ÀÁ  ]A&]A]A€í ÀÁ$ÀÁ(ÀÁ(ÀÁ( (A ÀÁ, AÀÁ,AAÀÁ,ÀÁ(#ÀÁ(ÀÁ(AA ÀÁ4 (ƒ­(1% ÀÁ4;uY€­%UA]€¥€í:uY€­%UA]€¥€í ÀÁ49 Y€­%UA]€¥€í$Y€­%UA] €¥] €¥e€íuY€­%UA]€¥€í€¥€í]] ‚% €í 1%%Y€­%UA]€„uY€­%UA]€¥€í€¥€íY€­%UA]€¥€í €­%UA]€–uY€­%UA]€¥€í€¥€íY€­%UA]Y€­%UA]UA]&Y€­%UA]!€­%UA]!‚™%UA] A]!‚•%UA] % ÀÁ8 €í" €­%UA]$1€­%UA]%Y€­%UA] ‚™%UA] A] ‚•%UA]euY€­%UA]€¥€í€¥€íY€­%UA]€í‚!E%U%Y€­%UA]Y€­%UA]€­%UA]‚™%UA]A]‚•%UA]%5 E ÀÁ<(1(1%Y ÀÁ<,uY%€¥Y€íY+uY%€¥Y€íY ÀÁ<* Y%€¥Y€íY Y% Y€¥Y ]Y €¥Y ]Yt€íYuY%€¥Y€íY€¥Y€íY]Y]YYY Yƒ­Y 1Y Yƒ­Y 11%Y %Y 1%YY%~uY%€¥Y€íY€¥Y€íYY%Y]Y€¥Y€íYauY%€¥Y€íY€¥Y€íYY%Y% ÀÁ< UYY% ÀÁ@ €íY % 1%Y%€ÝuY%€¥Y€íY€¥Y€íYY%€íY‚!YE%YUY%YY%Y%%%U%Y5 EYÀÁHÀÁHÀÁH ƒµ €¡  ƒµ 5 €µ€µ€± €µ€± … … …€¡ ÀÁT YA€¥Y ]Y Y ]Y ]YY€¥Y €¥YY!€¥Y€¥Y ÀÁX YYY€¥Y€¥Y ÀÁ\€¥1U€¥YA1 ÀÁT Y YYY ÀÁdA€¥Y ]YY€¥Y €¥Y€¥Y€¥Y ÀÁh YYY€¥Y ÀÁl ÀÁp A] YY!YA]€¥Y ÀÁt YY#€¥YA€¥Y€¥Y ÀÁx  U1UY€¥YA1 ÀÁ€ ÀÁ„ 1U U U1UUY€¥YYU ÀÁd Y YYY A] ÀÁp YYY ÀÁt YY U1 UY 1 UYU1 UU1U ÀÁ| U1U UYU1U U ÀÁŒ YY€¥ "AAA€¥ ÀÁ  ÀÁ” ÀÁ˜ €¥€¥AY€¥YUYU€¥ ÀÁœ €¥€¥€¥€¥ ÀÁ  AYAY €¥Y<€¥YAYAY€¥€¥Y% ÀÁ¨ A1 ÀÁ¬ ÀÁ°? 1€¥€¥Y€¥%Y%% % U1%U  %#€¥A11€¥ÀÁ´4 AAAAAA€¥AAAAAAA€¥€¥ ÀÁ¸ AA 0AAAA€¥€¥ ÀÁ¼ AAAU U€¥ U€¥4U€¥AAAU€¥ ÀÁÀ AAAA€¥ ÀÁÄ€¥A€¥ ÀÁÈ €¥€¥A]€¥ ÀÁÌ€¥A€¥ ÀÁÐAE€¥AAE€¥ €¥AA€¥ ÀÁÔ ÀÁØU€¥€¥&U€¥€¥A€¥ €¥€¥]€¥€¥€¥ €¥ €¥ ÀÁÜ A€¥ ÀÁà ]]A€¥ YY ÀÁ  ÀÁ” ÀÁ˜ €¥ €¥€¥€¥ €¥€¥AYAY ÀÁ  €¥Y €¥Y€¥Y%% % % A1 ÀÁ¨ 1%U1% ÀÁ¤ % A11% UU1% % 1€¥Y€¥ Y% ÀÁ° 1€¥ Y€¥ 1% Y% Y% Y€¥ 1%E% % Y%AAAAAA €¥ÀÁ´ A  ‚% AA ÀÁ¸A AAAU ÀÁ¼ €¥ UU€¥ UU€¥€¥U! U€¥U€¥AA ÀÁÀ  ÀÁÄ ÀÁÈ A]€¥]] €¥€¥ ÀÁÌ  ÀÁÐ E ÀÁÔ  ÀÁØ ÀÁÜ  ÀÁà ]] €í ÀÁè ÀÁì A€í €íAA ÀÁì ÀÁAEÀÀø ÀÁ ÀÁ ÀÁô ÀÁ%ÀÁAEÀÀøÀÁÀÀøÀÀøAEÀÀø#ÀÁAEÀÀøÀÁ]AEÀÀøÀÀø ÀÁü,  AAEÀÀøÀÀøƒ5ÀÀøÀÁAEÀÀø5ÀÀø AAEÀÀøÀÀøƒ5ÀÀø ÀÂAAEÀÀøÀÀøAAEÀÀøÀÀø%ƒ5 AAEÀÀøÀÀøƒ52ÀÀø AAEÀÀøÀÀøÀÀø ÀÂ! AÀÀøAEÀÀø ÀÀøAÀÀø$ÀÀøAÀÀøÀÀø À  AAÀÀø ÀÀø)ÀÀøAAÀÀø1 ÀÂÀÀøÀÀàÀÀøÀÀàÀÀø ÀÂÀÀøAEÀÀø À ÀÀàÀÀøÀÀøAEE À AÀÀø$ÀÀøÀÀøAÀÀø ÀÁôAAEÀÀøÀÀø ÀÁü ÀÂ" AAEÀÀøÀÀøƒ5AÀÀøAEÀÀø ÀÂAEÀÀøAAÀÀø À AAÀÀø ÀÀø ÀÀø À  ÀÀøÀÀø ÀÂÀÀàÀÀøÀÀìÀÀøÀÀèÀÀøÀÀàÀÀøÀÀìÀÀøÀÀøÀÀàÀÀèÀÀøDÀÀàÀÀøÀÀàÀÀøÀÀìÀÀøÀÀèÀÀø ÀÀøÀÀàE À ÀÂÀÀìÀÀè ÀÀøÀÀàAÀÀø ÀÂAÀÀø€ÅY€ÅYAY+UYAAUY+UYAAUYYY e ÀÂ4 €í€í ÀÂ8 1% %AA€í ÀÂ< ÀÂ@ €í€íY ÀÂ8%%U% % ÀÂ@ ÀÂH ÀÂL€íYU ÀÂL EU€Å€Å]] ] ÀÂX €ÅUYY UYYYYUYYYAAY AAAAAAY ]U]UAYYYYYY €­ ‚™ ‚•A€­ ‚™ ‚•/YY€­‚™‚•4UYYA€­YYYA€­A€­(UYYA€­Y UYUYYYUYY UY]UY&]UYAYY A ]UYAYUYYÀÂ\  u Uu€,Y€YYYYuYYYU YUUYYÀÂ` €uU UuYYYU UYY€YYYYFuYYYUYUYYUYY1€YYYYY€ E, YYYYYY*AAAEYYY&UYYAYY€ÅYYYY€ÅYY ÀÂd Y YYUYUYUYUYUYU Y U UU UY1 YYYYYU UY U UY U,YYUYYU+UYAAUYYAY AYAY ÀÂhAYYYYAAYUYY YY YUYY 1YUYYYY/UYAAUYY Y UYYU1UYAAUYY'YAAYYY ÀÂlAEYY ÀÂp AY YYAYYY ÀÂtYYAYYAAYUY ÀÂx AAU ÀÂ|! AAYUYAAYUY7AYYUYYAAU À€AYY Àˆ AAA)YYAAAYY À ÀÂX uUu uu €UuUuU uU€ ÀÂd €Å YY ÀÂh ÀÂl EY AY ÀÂp ÀÂtAAU ÀÂx UYYAAYUY ÀÂ| YY UYYYY À€AAA À„ AAA  Àˆ YY ÀÂŒ À€­UYE€­UYEY U]]U+U]AAU] U]]U+U]AAU]AA] AAAAAAAAA UU%UAAU UU%UAAU€Å À €Å€ÅA À¤A AA À €Å  À¤ À¬€ÅA À° A€Å€ÅA€Å€Å À¬ À°€ÅÀÁYAYYAAY 'AAAYY1Y5YYY1Y5YYY €ˆ"€ˆ€ˆ€ˆ €ˆA €ˆ€ˆ€ˆ€ˆ€ˆ€ˆ%€ˆ€ˆ€ˆE€ˆ€ˆ€ˆ€ˆ€ˆ#€ˆ€ˆ€ˆ €ˆ€Å€ˆ"€ˆ€ˆ€ˆ€Å€ˆ]€Å€ˆU€ˆ€ˆCU€ˆ€ˆ€ÅAA€ˆ€ˆU€ˆ€ˆcU€ˆ€ˆ€ˆ€ˆ€ˆU€ˆ€ˆU€ˆ€ˆHU€ˆ€ˆ€ÅAA€ˆ€ˆ€ˆ-€ˆ€ÅAA€ˆ*€ˆ€ˆ€ˆ€ˆ2€ˆ€ÅAA€ˆ€ˆu€ˆu€ˆ=€ˆ€ˆ€ˆu€ˆ€ˆu€ˆ€ˆ3€ˆ€ˆ€ˆu€ˆ€ˆ€Å€ˆ €ˆ€ˆ€ˆ€Å€ˆ!€ˆ€ˆ€ˆAAE€ˆ ]-€ˆ€ˆ€ˆ]]$]AA]€ˆAA€ˆ €ˆ €ˆ €ˆ"€ˆ€ˆ€ˆ€ˆA€ˆ €ˆ#€ˆAA€ˆ $AAA€ˆ' €ˆ€ˆ€ˆ/€ÅAAA€ˆ€Å €ÅU€ˆ €ˆ U U€ˆ UUG €ˆ€ˆ€ˆU€ˆ€ˆUGU€ˆ€ÅAAAU€ˆ€ˆ ÀÂÄ YUYU€ˆU€ˆ ÀÂÈ U€ˆ€ˆ€ÅYU)€ˆ€Å€ˆYUYU€ˆ5€ˆ€Å1U€ÕÀÂÌ ÀÂÌ €ˆ€ÕÀÂÌ ÀÂÐ €ˆ€ÕÀÂÌ€ÕÀÂÌY%€ˆ YUYU ÀÂÈ €ˆ€ˆU (%Y€ˆ Y€ˆ ÀÂÌ0Y€ˆY€ˆ)Y€ˆY€ˆ€ˆ2Y€ˆY€ˆ€ˆY€ˆY€ˆ Y€ˆ;Y€ˆ€ˆY€ˆ€ˆ€ˆ€ÕÀÂÌ ÀÂЀÕÀÂÌ|||||7 |||||||||||E9 |||||||||||||||€Å|, |||||||€Å||u||u||5 |||u||||#u||€Å| U| U|(|||U||U||+|||U||€Å||||AE|AA|A| ÀÂØ€Å|||||Y|Y||||#|€ÅA|||€Å|||| |I ||||||u||||"|€Å|||U||/U||€ÅA||U||FU|||||U||U||3U||€ÅA|||€­u||Eu||"€­u||E|€­u||E‚™u||EA]]‚•u||E ÀÂÜ A]]*€­u||E||(]€Å|A]] ÀÂà| |||]| |€ÕÀÂä ÀÂä |€ÕÀÂä ÀÂè |€ÕÀÂä€ÕÀÂäY| Y| Y|G Y|Y|||Y|Y|||€ÅY|Y|€Å||Y| ÀÂì €Õ| ||€Å|YY|5|€Å1 ÀÂØA]] ÀÂÜ ]] ÀÂà Y| Y| ÀÂä0Y|Y|Y|Y| Y|Y|Y|*Y||Y|||€ÕÀÂä ÀÂè€ÕÀÂä ÀÂì %% x Y% x %Y% Àà 1% Y%% Y% % E% = == Àà Y = Àà AY=A== ÀÃ- Y==Y=Y=Y= Y==== Àà =Y===== YY==Y====YAE= ==A= M MM==AA= ME ME MEAAE=A=A=A=A=A=A=]A]=A]=]A]=]A=]A= ME MEME AAE== M= M=M=&=AA===]]=A]= ==A=U====#U==A= =AA=AA= = =1= Àà  AA…Õ …ÕAA= ÀÃ$A=!AA==AAAA==AA==A=A=AA=AA=AA=AA=AA=AA=€ €#€AAA €)AAA==€ €€)AAA== = €E €E€E%AAAE== € € ÀÃ( ==€€+=AAA== M MM=#=AA= M MM=#=AA=!=AA=!=AA= = =]A=]A=]AA=]AA= ÀÃ, ===U== =UU====U"U===U ÀÃA Àà Y= Y= Àà 1= Y= Y Y= ÀÃAA Àà  ÀÃ$= € ÀÃ(== € ÀÃ, Utp tÀÃL ](pXttÀÃLÀÃ<]t tÀÃLÀÃ<ÀÃDpAhÀÃLdUYU€Ál AXAUYU ÀÃT6 pYU€ÁUYUY ÀÃ\l AlE€¾0ttÀÃLTTTTTAhÀÃ<ÀÃ<ÀÃDhpXttÀÃLÀÃ<AhÀÃLEd`]UYUYU€ÁYYYYYlpAXX     UYU ÀÃ<YU 1U YU Y ÀÃDY TT YUUYUp ÀÃT ÀÃDYYY 1Y YY ÀÃ\t ÀÃd" ]]ÀÃd UXAUX(XAUXAE TTE \„U \Au uAu EX \X UX XAYA€½A QAYA€½AQQY€½ Àà EÀÃEA€½A A€½A€½ YAYA€½A €½  Y€½ E Àà e] e] ¡ €µ ]E ]€Ñ €­ €­ €­€­AE  ÀäÀä UÀäUÀäÀä UÀä]UÀä]UÀäÀä]UÀä€Àä,]UÀä]UÀä€Àä,,Àä€Àä,Àä UÀäz#€Àä,<,YU€Àä,,48 ,Àä€Àä,,ÀäÀäUÀäÀä, €Àä,AÀä,AAÀä ,A, UYUYYUYY UY' 8,,UYUY<,,UYPAY,PPAUYYY PA, €©AYU  8,,<YU,+AAYUAA€©,AAYUA%AAYUAA€©)AAYUAA€©,UYUYUUYUÀÄŒÀÄ   ]UÀÄŒÀÄ YU]UõAU,, U,,AU,,,,YU,AU],, U],,AU],,,,YU], Y €Õ ÀüA€Õ",ÀôõP€í€ÕÀð„ €­ ‚• ‚™L€íe „‚•‚™ ALA],,O,],€½€½„]]€­‚•],,‚™L, ,ÀôõP€í€ÕÀôÀðÀÄŒAAÀðA, A, ÀÃØ AAÀðA, AÀð , ÀÃä A, ÀÃè A, U,?AAÀðA,YUYUY,A,),ÀôõP€í€ÕYU,ÀôõP€í€Õ,A]Uƒ¹ ÀÄ AAÀðA,"A,AAÀðA, ÀÄ@ €ÕAAÀðA,3AUU,€ÕAAÀðA, ÀÄD õA]UõAA,,ÀĤƒ¹A]UA,A]UU-Àô€ý AA,, A,  E ƒ¹a €ýU], , UU,€ $AAÀðA,AA,,ÀÄ YU,ÀĤ€½ƒ¹ƒ¹A]UY,A,A]U€½€½U,55--Àô€ýYU€í&€í€ÕÀôõP€í€Õ,ÀôõP   ñ     ƒÅ P ,P,P, P€©,P,P €©P ÀäeAÀäE AÀä AÀäU,,, ,U, U], ],, ,U],ÀðÀôÀôeAÀôE AÀô AÀô Àô ÀôÀô Àü  ÀôõP€í€Õ LAL ], ],ALA], ÀôõP€í€Õ ,ÀðA, ÀÃÐ A,A, ,AÀðA, ÀÃÔ AÀðA,AÀðA, A, A,Àð ÀÃØAAÀðA,AÀðA, AÀðA, ÀÃÜ ÀÃà ÀÃä A, ÀÃèA, ,U ,, ƒ¹U ]U ]U ƒ¹ ( P€ÕAAÀðA,ƒ¹ ]U ,U AU,Àð AÀðAU, ÀÄ ÀÄ ÀÄ ÀÄ €ý U, ,€½ UUE ]UE ]UEE  ÀôõP€í€Õ ], U],€ý ÀÄ4 ÀÄ8 ÀÄ< ÀÄ@ ÀÄ< ,U, U,U ÀÄD ]U P …Ù €½]õ…Ù€½]õ …Ù€½ÀÄ\ÀÄ\ÀÄ\Y€½ ÀÄ\€½€½ÀÄ\YU€½ÀÄ\YUYU€½ÀÄ\ ÀÄ\€½eAÀÄ\E AÀÄ\ AÀÄ\ (Y€½ Y€½ Y€½WRInternal.Utilities.StructuredFormat.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy €½€½ZUInternal.Utilities.StructuredFormat.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(YU€½ YU€½ YU€½ YU€½XSInternal.Utilities.StructuredFormat.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(YUYU€½YUYU€½ YUYU€½ YUYU€½UPInternal.Utilities.StructuredFormat.ReflectUtils+TypeInfo+SumType@DebugTypeProxyXSInternal.Utilities.StructuredFormat.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxyÀÄd ÀÄdÀÄh ÀÄhÀÄl ÀÄlÀÄp ÀÄpÀÄt ÀÄtÀÄŒ ÀÄŒY ÀÄŒ€½ÀÄŒYUÀÄŒYUÀÄŒ€½YUÀÄŒÀÄŒeAÀÄŒE AÀÄŒ AÀÄŒ(Y Y YYTInternal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyc^Internal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy (YU YU YUZUInternal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy YU_ZInternal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy €½YU]XInternal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxyZUInternal.Utilities.StructuredFormat.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyÀÄ” ÀÄ”ÀĘ ÀĘÀÄœ ÀÄœ ÀÄ  ÀĤÀĨ ÀĨU]õ€ý€½]õ ]õAA €ýU€ýU€ýÀÄŒõ€½E U…Ù…ÙU…Ù€½]õ U…Ù €ý€½U…مـýU ÀÄŒõ€½ ÀÄŒõ U€ý,4AA]U]U]U-Y,A,A]UA A,A]U#A,A]UA-Y,A,A]UA ÀÅ&Y,A,A]U EYUeAEAE(eAEAAE AUeAEeAAEUAAE<eAAEUAAAAE, AAUeAAEUeAAEUAAE<eAAEUAAAAE, AAUeAAEU!eAAAEuAAAELeAAAEuAAAAAAE7 AAAUeAAAEuAAAAA AAAAAAAAA AAAA.eAAAAAE€á$AAAAAEmeAAAAAE€áAAAAAAAAAAEN AAAAAUeAAAAAE€á AAAAAA" AAAAAAAAAAA AAAAA%AAAAAAA' AAAAAAA!AAAAAA" AAAAAA:eAAAAAAAE€‰.AAAAAAAE& AAAAAAA€eAAAAAAAE€‰AAAAAAAAAAAAAAEd AAAAAAAUeAAAAAAAE€‰eAAEUAAE<eAAEUAAAAE, AAUeAAEUAAA AAA AA!eAAAEuAAAE AAALeAAAEuAAAAAAE7 AAAUeAAAEuAAA AAA AAAAAA AAAAAAA AAA(eAAAAE€AAAAE AAAA]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€AAA AAA AAAAAA AAAAAAA AAAAAAAA AAAAAAAAA AAAA.eAAAAAE€á$AAAAAE AAAAAmeAAAAAE€áAAAAAAAAAAEN AAAAAUeAAAAAE€áAAAA AAAA AAA(eAAAAE€AAAAE AAAA]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€AAA AAA AA AAAAAA AAAAAAA AAA(eAAAAE€AAAAE AAAA]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€AAA AAA AA!eAAAEuAAAE AAALeAAAEuAAAAAAE7 AAAUeAAAEu!eAAAEuAAAELeAAAEuAAAAAAE7 AAAUeAAAEuAAAA AAAAAAA AAA(eAAAAE€AAAAE AAAA]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€AAAA AAAAAAA AAA(eAAAAE€AAAAE AAAA]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€eAEAE(eAEAAE AUeAEeAAEUAAE<eAAEUAAAAE, AAUeAAEU(eAAAAE€AAAAE]eAAAAE€AAAAAAAAEC AAAAUeAAAAE€!eAAAEuAAAE AAALeAAAEuAAAAAAE7 AAAUeAAAEuY YY1Y Y 1 Y 1Uñ?"”jʱ:}ßç¤âÎ)¥þß4–Ǹ€p}za´@-*¾Ò2x+ª÷<ÁGQ†\ f°CÄ<{¼ þ²ihh»@'Ћ1 ž£çê;°‘À~eÙIÉXæ<ÍMË;æ;ôÞ™ÒOvŠÆ¿ÐΡ‚pY ×é#-sx o±¢ƒÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet@PADPADPwû+€ ­é/†ƒê/†ƒë/†ƒì/†ƒf8„†sl‡|Öˆ˜çÛŠ‘1ŒTï}ŒM쉌˜zÑfL™Ÿö~á6’?“Á¹D“¹D“8(\”¢ l” l” l” l”D l”P l”² l”œ9^—´_›!7vœ<é^ŸÞŸÕ @”â.fË¢)¬Ñ¢Òq£=Ñ£˜ßãwiÅ£§ 0¥Š™Ê¨U}=©YȪíæÓªÉ%ö«Ê%ö«Ë%ö«Ì%ö«_‰Þ­0“®ù¯ ^*¯î²*¯ 6¯Òb°Üb°’à°£ú°‘Â(±»Ç²vù²Êm³b.ó³® ¹·°Š¦¸”Af»I|á»C9N¼úym¼}½OÄ<½1q˜½LuO¾Næh¾‚<¾Œ<¾FÚë¾Éȼ¿voûÀ­;ÃsdÃË¿rÃ\çÄ{N>Äû*ƒÅ2=Èê É|É%j¯É&j¯ÉÆa8Ë?bỂfÍæ–±Íw™ÏPàûÏÁF ÐØŠsÒÜ[7Ôß[7ÔϱÔÔp¾^×`v×#×,¶éØ·ö¬Úp»Úq»Ús»ÚO]RÛR‡žÛÿI2ÝĉÞôââÞ=Y›ßhêà-mâ÷î¼äžv åZY“唫æ2@œç]àûç^àûç¥è…K½éâæKê©ÌÞëÐŒýë%VðñððÖ‹ïñIÐ_òQ61õT61õV61õW61õH—åø$”û¥J¡û¦J¡ûð‚þ¥É5¦É5êÀp„ýŸ¯ÓMãX YæÉ º~Ù ñ F· wÒZ Ž×÷ ò˜lý9ÃÁ÷aÉ)ÌŸê¥áÇü˜OçAº!†ÔS ––°êÇ«VÙæð‹mJ»¾=ÆýYkEæ´ébœ\¨h!Æbí!dcí!íhí!Šní!byí!9í!’Ží!åŽí!Ý–í!åší!–ží!µží!¦¢í!h¬í!äºí!"»í!äp "æp "çp "Šê€"µI$Pq&ÒFý'ïµ—)º™e+¾«,aÒó-Ó8. ZÄ.11¾À!3 x©4Ë«©7mãÈ9èúÛ:éúÛ:ëúÛ:îúÛ:ïúÛ:¼p;2š;ì8|<ÎR†<6º²<¯*¶<¬45@¯45@™%@@FïëB€HCƒHCð?êCpz+D<}D?}D™hŠD¹ÎÁD˜Ô|ES?­E=³·HQÃÑHô¡&J÷¡&JdƒKA?®K[5EMT¯}Mƒ£Mý:JN*§úN 3P€øžPäkáQ½kRc™xR²ÝÿRËS†ÊSJ£FSKS´H£Saø¥SIH¯S˜PôST]ôSœgôS7ÿöSÖ T©KTDèRTÂã¬T¸HWVçøcVLávV+£~Vðú¤VêM§VªåUYÓàfYÊ!Ö[°õ^Ó¢¯^«ðþ^¡™_O¼™_íBš_‹›_íü›_›œ_ \œ_¾_wÐ_í= _ëV _ë“ _â¶ _¿y¡_yú¡_á‘¢_Ì9£_~Gax§cÌØe ãf»Îi÷cJjó•kó•kYi÷kòHPnÔ0Io×0Io&io>9És àÎsvÊÖz§ŽzN}`~n~N컸»ñ2s´€'( Þ!¾ ‹9™4*-Û8”:9eFŸ1¡"Ä" ï+å*Ìy%µ>Ûµ «gx6âK ˆ-=[5µ'³:ß1f, ' L q +U#R‹0ë0`0.e.:./:/¢8x Á$Ñ ‰3®®()Îì'Z(É#&“f&Æ&p9é¬åW1h,¹6‘*€·$º^fÂï  Ch}×)Q$» 7Kå#" Þf/+æ26`+–/J cC·Îp$ ‡í5AÝa8=™Z„oƒ ø 9 Z Ù%– ç"â7Z) *K6Ü-„žÐ7Å Â!-)Qz ƒ¦2[-:¶0@%Ž4¼$‘&r”$`1Û/».% 2Cû©=*‹)9A“‰d* l K …Áñ,)4~õî/"õ‡,ª%$'M ¤ ø9:Ñ9F:m:Ep7Âé;vÈ\¨íÔì$?95á4b*¬1¾,à.0n5‘5©7®nZ!Ö667W7)33³-.´5x"}2…(Ù(•,=,¼*\²ë?;å—f4|Œí “{ ¼4ª9\3ñ&ç…191903!V2Ù2/2Y'?&È++¡+°)íÄã3ÑArÎþ O é8:8®3z#:e/’#Õ½ ø ‰²E&AssemblyNotResolved,BadEventTransformation66BakedInMemberConstraintName» BlockEndSentence¸(CoercionTargetSealedñ*ConstraintSolverError[:ConstraintSolverInfiniteTypes`BConstraintSolverMissingConstraint¤DConstraintSolverRelatedInformationÔ@ConstraintSolverTupleDiffLengthsÚVConstraintSolverTypesNotInEqualityRelation1 VConstraintSolverTypesNotInEqualityRelation2PZConstraintSolverTypesNotInSubsumptionRelation~(DefensiveCopyWarning·Deprecated¼HDeprecatedThreadStaticBindingWarningßDuplicate1Duplicate238ErrorFromAddingTypeEquation1V8ErrorFromAddingTypeEquation2±2ErrorFromApplyingDefault1ù2ErrorFromApplyingDefault2XJErrorsFromAddingSubsumptionConstraintƒExperimentaläFailure1.Failure2;Failure3`Failure4eFieldNotMutablez0FieldsFromDifferentTypes•&FileNameNotResolvedÊFixKeywordùFixReplaceFixSymbol'FullAbstraction0 FunctionExpected5.FunctionValueUnexpected—DHashDirectiveNotAllowedInNonScripté@HashIncludeNotAllowedInNonScriptµ @HashLoadedScriptConsideredSource§ 4HashLoadedSourceHasIssues10 4HashLoadedSourceHasIssues2X DHashReferenceNotAllowedInNonScript~ $IndentationProblem` 8IndeterminateRuntimeCoercione 6IndeterminateStaticCoercion] "IndeterminateTypeD(InterfaceNotRevealed*>IntfImplInExtrinsicAugmentationÿ>IntfImplInIntrinsicAugmentationPLInvalidInternalsVisibleToAssemblyName1áLInvalidInternalsVisibleToAssemblyName2',InvalidRuntimeCoercionˆ,LetRecCheckedAtRuntimeÉ2LetRecEvaluatedOutOfOrderLetRecUnsound1bLetRecUnsound2£$LetRecUnsoundInner/LibraryUseOnlyE8LoadedSourceNotFoundIgnoring‰ MatchIncomplete1Ñ MatchIncomplete2 MatchIncomplete3S MatchIncomplete4øMissingFields>MSBuildReferenceResolutionErrorHNameClash1XNameClash2{NonRigidTypar1æNonRigidTypar2ÂNonRigidTypar3f,NONTERM.anonLambdaExprü*NONTERM.attributeList2NONTERM.attrUnionCaseDecl'(NONTERM.beginEndExpr76NONTERM.Category.DefinitionQ*NONTERM.Category.ExpraFNONTERM.Category.ImplementationFileq0NONTERM.Category.PatternŠOverrideInExtrinsicAugmentationÃ>OverrideInIntrinsicAugmentation .ParameterlessStructCtor² *Parser.TOKEN.ABSTRACTü >Parser.TOKEN.ADJACENT.PREFIX.OP! Parser.TOKEN.AMP!!(Parser.TOKEN.AMP.AMP-! Parser.TOKEN.AND:!Parser.TOKEN.ASI! Parser.TOKEN.ASRW!&Parser.TOKEN.ASSERTf! Parser.TOKEN.BARx!(Parser.TOKEN.BAR.BAR„!.Parser.TOKEN.BAR.RBRACK‘!"Parser.TOKEN.BASEž!$Parser.TOKEN.BEGIN®!&Parser.TOKEN.BINDER¿!,Parser.TOKEN.BYTEARRAYÏ!"Parser.TOKEN.CHARã!$Parser.TOKEN.CLASSö!$Parser.TOKEN.COLON"0Parser.TOKEN.COLON.COLON"2Parser.TOKEN.COLON.EQUALS "4Parser.TOKEN.COLON.GREATER-"0Parser.TOKEN.COLON.QMARK:"@Parser.TOKEN.COLON.QMARK.GREATERG"$Parser.TOKEN.COMMAU"(Parser.TOKEN.COMMENTa"$Parser.TOKEN.CONSTj".Parser.TOKEN.CONSTRAINT{"0Parser.TOKEN.CONSTRUCTOR‘"(Parser.TOKEN.DECIMAL¨"(Parser.TOKEN.DEFAULT¹"*Parser.TOKEN.DELEGATEÌ"Parser.TOKEN.DOà"&Parser.TOKEN.DOLLARî""Parser.TOKEN.DONEú" Parser.TOKEN.DOT #(Parser.TOKEN.DOT.DOT#*Parser.TOKEN.DOWNCAST##&Parser.TOKEN.DOWNTO7#"Parser.TOKEN.ELIFI# Parser.TOKEN.ENDY# Parser.TOKEN.EOFh#&Parser.TOKEN.EQUALSv#,Parser.TOKEN.EXCEPTION‚#&Parser.TOKEN.EXTERN—#$Parser.TOKEN.FALSE©#(Parser.TOKEN.FINALLYº#$Parser.TOKEN.FLOATÍ# Parser.TOKEN.FORå# Parser.TOKEN.FUNô#*Parser.TOKEN.FUNCTION$@Parser.TOKEN.FUNKY.OPERATOR.NAME$&Parser.TOKEN.GLOBAL&$(Parser.TOKEN.GREATER8$>Parser.TOKEN.GREATER.BAR.RBRACKD$6Parser.TOKEN.GREATER.RBRACER$6Parser.TOKEN.GREATER.RBRACK_$"Parser.TOKEN.HASHl$.Parser.TOKEN.HASH.ENDIFv$LParser.TOKEN.HIGH.PRECEDENCE.BRACK.APP$LParser.TOKEN.HIGH.PRECEDENCE.PAREN.APPŒ$DParser.TOKEN.HIGH.PRECEDENCE.TYAPP˜$$Parser.TOKEN.IDENT«$Parser.TOKEN.IF·$Parser.TOKEN.INÅ$2Parser.TOKEN.INACTIVECODEÓ$2Parser.TOKEN.INFIX.AMP.OPâ$8Parser.TOKEN.INFIX.AT.HAT.OPò$2Parser.TOKEN.INFIX.BAR.OP%:Parser.TOKEN.INFIX.COMPARE.OP%DParser.TOKEN.INFIX.STAR.DIV.MOD.OP"%>Parser.TOKEN.INFIX.STAR.STAR.OP2%(Parser.TOKEN.INHERITB%&Parser.TOKEN.INLINEU%*Parser.TOKEN.INSTANCEg% Parser.TOKEN.INT{%4Parser.TOKEN.INT32.DOT.DOTŒ%,Parser.TOKEN.INTERFACE—%*Parser.TOKEN.INTERNAL¬%6Parser.TOKEN.KEYWORD_STRINGÀ%&Parser.TOKEN.LARROWÜ%"Parser.TOKEN.LAZYé%&Parser.TOKEN.LBRACEù%0Parser.TOKEN.LBRACE.LESS&&Parser.TOKEN.LBRACK&.Parser.TOKEN.LBRACK.BAR&0Parser.TOKEN.LBRACK.LESS+&"Parser.TOKEN.LESS8&0Parser.TOKEN.LEX.FAILURED&2Parser.TOKEN.LINE.COMMENTQ&&Parser.TOKEN.LPAREN_&>Parser.TOKEN.LPAREN.STAR.RPARENk&&Parser.TOKEN.LQUOTEy&$Parser.TOKEN.MATCH&&Parser.TOKEN.MEMBERž&$Parser.TOKEN.MINUS°&&Parser.TOKEN.MODULE¼&(Parser.TOKEN.MUTABLEÎ&,Parser.TOKEN.NAMESPACEá& Parser.TOKEN.NEWö&"Parser.TOKEN.NULL'0Parser.TOKEN.OBLOCKBEGIN',Parser.TOKEN.OBLOCKEND4' Parser.TOKEN.ODOm'*Parser.TOKEN.ODO.BANG{'&Parser.TOKEN.ODUMMYŠ'$Parser.TOKEN.OELSE 'Parser.TOKEN.OF°'"Parser.TOKEN.OFUN¾',Parser.TOKEN.OFUNCTIONÍ'UnionPatternsBindDifferentNames­4"UnitTypeExpected1ò4"UnitTypeExpected2Ž5 : ' in a class. Add the 'DefaultValue' attribute to this declaration to indicate that the value is initialized to the default value on each new thread.0Two members called '{0}' have the same signature!Duplicate definition of {0} '{1}'YThis expression was expected to have type\n {1} \nbut here has type\n {0} {2}FType mismatch. Expecting a\n {0} \nbut given a\n {1} {2}\n]Type constraint mismatch when applying the default type '{0}' for a type inference variable. ) Consider adding further type constraints_Type constraint mismatch. The type \n {0} \nis not compatible with type\n {1} {2}\nH{0}. This warning can be disabled using '--nowarn:57' or '#nowarn "57"'. parse error#parse error: unexpected end of file{0}internal error: {0}This field is not mutable3The fields '{0}' and '{1}' are from different types-Unable to find the file '{0}' in any of\n {1}keyword " (due to indentation-aware syntax)symbol {0}`This function takes too many arguments, or is used in a context where a function is not expectedPThis expression is a function value, i.e. is missing arguments. Its type is {0}.ÉThis directive may only be used in F# script files (extensions .fsx or .fsscript). Either remove the directive, move this code to a script file or delimit the directive with '#if INTERACTIVE'/'#endif'.ï#I directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-I' compiler option for this reference or delimit the directive with delimit it with '#if INTERACTIVE'/'#endif'.†Loaded files may only be F# source files (extension .fs). This F# script file (.fsx or .fsscript) will be treated as an F# source file&One or more warnings in loaded file.\n$One or more errors in loaded file.\nß#r directives may only occur in F# script files (extensions .fsx or .fsscript). Either move this code to a script file, add a '-r' compiler option for this reference or delimit the directive with '#if INTERACTIVE'/'#endif'.{0}õThis runtime coercion or type test from type\n {0} \n to \n {1} \ninvolves an indeterminate type based on information prior to this program point. Runtime type tests are not allowed on some types. Further type annotations are needed.äThe static coercion from type\n {0} \nto \n {1} \n involves an indeterminate type based on information prior to this program point. Static coercions are not allowed on some types. Further type annotations are needed.ãLookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved.ÒThe type implements the interface '{0}' but this is not revealed by the signature. You should list the interface in the signature, as the interface will be discoverable via dynamic type casts and/or reflection.OInterface implementations should be given on the initial declaration of a type.ŽInterface implementations in augmentations are now deprecated. Interface implementations should be given on the initial declaration of a type.DInvalid assembly name '{0}' from InternalsVisibleTo attribute in {1}_Invalid assembly name '{0}' from InternalsVisibleTo attribute (assembly filename not available)?Invalid runtime coercion or type test from type {0} to {1}\n{2}ÌThis and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'.HBindings may be executed out-of-order because of this forward reference.?The value '{0}' will be evaluated as part of its own definition‰This value will be eventually evaluated as part of its own definition. You may need to make the value lazy or a function. Value '{0}'{1}. will evaluate '{0}'BThis construct is deprecated: it is only for use in the F# libraryFCould not load file '{0}' because it does not exist or is inaccessible.Incomplete pattern matches on this expression.P For example, the value '{0}' may indicate a case not covered by the pattern(s).¢ For example, the value '{0}' may indicate a case not covered by the pattern(s). However, a pattern rule with a 'when' clause might successfully match this value.$ Unmatched elements will be ignored.(The following fields require values: {0}{0} (Code={1})!Duplicate definition of {0} '{1}'iThe {0} '{1}' can not be defined because the name '{2}' clashes with the {3} '{4}' in this type or moduleÙThis construct causes code to be less generic than indicated by its type annotations. The type variable implied by the use of a '#', '_' or other type annotation at or near '{0}' has been constrained to be type '{1}'.¡This construct causes code to be less generic than indicated by the type annotations. The unit-of-measure variable '{0} has been constrained to be measure '{1}'.“This construct causes code to be less generic than indicated by the type annotations. The type variable '{0} has been constrained to be type '{1}'. in lambda expression in attribute list in union case in begin/end expression in definition in expression in implementation file in pattern in signature file in type in member definition in member signature in extern declaration in definitions in exception definition in field declaration! in module or namespace signature in binding in directive in if/then/else expression in interaction in binding in object expression in open declaration in pattern matching in quotation literal in record expression in type definition in type signature in type arguments in type constraint in type name( in discriminated union case declaration in value signaturedThe member '{0}' doesn't correspond to a unique abstract slot based on name and argument count aloneQ. Multiple implemented interfaces have a member with this name and argument count>. Consider implementing interfaces '{0}' and '{1}' explicitly.”. Additional type annotations may be required to indicate the relevant override. This warning can be disabled using '#nowarn "70"' or '--nowarn:70'.‰The containing type can use 'null' as a representation value for its nullary union case. This member will be compiled as a static member.^This value is not a function and cannot be applied. Did you forget to terminate a declaration?2This value is not a function and cannot be appliedLDiscriminated union cases and exception labels must be uppercase identifiersThis construct is deprecated. {0}TThe member '{0}' does not have the correct type to override any given virtual method^The member '{0}' does not have the correct type to override the corresponding abstract method.! The required signature is '{0}'.VOverride implementations should be given as part of the initial declaration of a type.”Override implementations in augmentations are now deprecated. Override implementations should be given as part of the initial declaration of a type.HImplicit object constructors for structs must take at least one argumentkeyword 'abstract'prefix operator symbol '&' symbol '&&' keyword 'and' keyword 'as' keyword 'asr'keyword 'assert' symbol '|' symbol '||' symbol '|]'keyword 'base'keyword 'begin'binder keywordbyte array literalcharacter literalkeyword 'class' symbol ':' symbol '::' symbol ':=' symbol ':>' symbol ':?' symbol ':?>' symbol ','commentkeyword 'const'keyword 'constraint'keyword 'constructor'decimal literalkeyword 'default'keyword 'delegate' keyword 'do' symbol '$'keyword 'done' symbol '.' symbol '..'keyword 'downcast'keyword 'downto'keyword 'elif' keyword 'end' end of input symbol '='keyword 'exception'keyword 'extern'keyword 'false'keyword 'finally'floating point literal keyword 'for' keyword 'fun'keyword 'function' operator namekeyword 'global' symbol '>' symbol '>|]' symbol '>}' symbol '>]'symbol # directive symbol'[' symbol '('type application  identifier keyword 'if' keyword 'in' inactive codeinfix operatorinfix operatorinfix operatorinfix operatorinfix operatorinfix operatorkeyword 'inherit'keyword 'inline'keyword 'instance'integer literal integer..keyword 'interface'keyword 'internal'compiler generated literal symbol '<-'keyword 'lazy' symbol '{' symbol '{<' symbol '[' symbol '[|' symbol '[<' symbol '<' lex failure line comment symbol '(' symbol '(*)'start of quotationkeyword 'match'keyword 'member' symbol '-'keyword 'module'keyword 'mutable'keyword 'namespace' keyword 'new'keyword 'null'start of structured construct7incomplete structured construct at or before this point keyword 'do' keyword 'do!'internal dummy tokenkeyword 'else' keyword 'of' keyword 'fun'keyword 'function'keyword 'interface'keyword 'let' or 'use'keyword 'open' keyword 'or' end of inputkeyword 'then'keyword 'override'keyword 'with' symbol '{0}infix operatorprefix operatorkeyword 'private'keyword 'public' symbol '?' symbol '??' quote symbol symbol '->' symbol '}' symbol ']' keyword 'rec'reserved keyword symbol ')'end of quotation symbol ';' symbol ';;' keyword 'sig'symbol 'splice' symbol '*'keyword 'static'string literal string textkeyword 'struct' keyword 'to'keyword 'true' keyword 'try'keyword 'type' symbol '_'keyword 'upcast' keyword 'val'keyword 'void'keyword 'when'keyword 'while' whitespacekeyword 'with'yieldyield!"\n\nPossible best overload: '{0}'.Possible overload: '{0}'. {1}.“Uses of this construct may result in the generation of unverifiable .NET IL code. This warning can be disabled using '--nowarn:9' or '#nowarn "9"'. syntax errorÏA use of the function '{0}' does not match a type inferred elsewhere. The inferred type of the function is\n {1}. \nThe type of the function required at this point of use is\n {2} {3}\nThis error may be due to limitations associated with generic recursion within a 'let rec' collection or within a group of classes. Consider giving a full type signature for the targets of recursive calls including type annotations for both argument and return types.­This recursive use will be checked for initialization-soundness at runtime. This warning is usually harmless, and may be suppressed by using '#nowarn "21"' or '--nowarn:21'.!Module '{0}' requires a {1} '{2}'{0}This rule will never be matchedNThe type '{0}' cannot be used as the source of a type test or runtime coercionuThe type '{0}' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion.. See also {0}.ƒRecursive references to the object being defined will be checked for initialization soundness at runtime through the use of a delayed reference. Consider placing self-references in members or within a trailing expression of the form ' then '.ƒRecursive references to the object being defined will be checked for initialization soundness at runtime through the use of a delayed reference. Consider placing self-references within 'do' statements after the last 'let' binding in the construction sequence.zA coercion from the value type \n {0} \nto the type \n {1} \nwill involve boxing. Consider using 'box' insteadinternal error: {0}. Expected {0} or other token.#. Expected {0}, {1} or other token.(. Expected {0}, {1}, {2} or other token.]' attribute to your type.+This type test or downcast will always holdú A construct with this name was found in FSharp.PowerPack.dll, which contains some modules and types that were implicitly referenced in some previous versions of F#. You may need to add an explicit reference to this DLL in order to compile this code.Unexpected {0}Unexpected end of input>This constructor is applied to {0} argument(s) but expects {1}CThe two sides of this 'or' pattern bind different sets of variables™This expression should have type 'unit', but has type '{0}'. Use 'ignore' to discard the result of the expression, or 'let' to bind the result to a name.zThis expression should have type 'unit', but has type '{0}'. If assigning to a property use the syntax 'obj.Prop <- expr'.The type referenced through '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.UA required assembly reference is missing. You must add a reference to assembly '{0}'.4This upcast is unnecessary - the types are identicalrUppercase variable identifiers should not generally be used in patterns, and may indicate a misspelt pattern name.BThe use of native pointers may result in unverifiable .NET IL codeThis value is not localThis value is not mutableRModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \n{3}.³Value restriction. The value '{0}' has generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation.ÁValue restriction. The value '{0}' has generic type\n {1} \nEither make '{2}' into a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.êValue restriction. This member has been inferred to have generic type\n {0} \nConstructors and property getters/setters cannot be more generic than the enclosing type. Add a type annotation to indicate the exact types involved.ÉValue restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither make the arguments to '{2}' explicit or, if you do not intend for it to be generic, add a type annotation.óValue restriction. The value '{0}' has been inferred to have generic type\n {1} \nEither define '{2}' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.$'{0}' is bound twice in this patternÆThe containing type can use 'null' as a representation value for its nullary union case. Invoking an abstract or virtual member or an interface implementation on a null value will lead to an exception. If necessary add a dummy data value to the nullary constructor to avoid 'null' being used as a representation for this type..ÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetÑPADPADPüjE€2À°€Bið€áKÿK\ΟbýDÍ»òÙÎä ‚Ñ“B‚Ò“B‚ÈÏJ‚†,ƒ‚c’‚ꪂVRׂU¼AƒS´sƒ£ ƒUt¦ƒ=Y׃âäûƒî „áž1„ÖV„[>n„%˜„º¯„šC´„B—…ÅK%… G…·¶K…Œ„N…ÉÐ[…o©€…wX«…rH‡C>‡…—`‡ ß‹‡¡ß‹‡¢ß‹‡u&ʇÕCˆë‡•: ÕÎ2–,^g–â…–fù‰–tœÙ–Ó U— Ê—¶&˜x*U˜)[i˜hyu˜ª¬ë˜Éý>™l9¸™PÞ"šÍ‘›¥øœ›mC œs¶Oœ³©]œÅþœ è ¾´:¾üB cbÝ_fG~Í!CØ´<žê®Jžqƒž­å’žÝ“ž©Ú¥žqÌž ú8Ÿö(ÀŸ`üŸéÇ  øA ý!G §³· æZÇ ñâ¡Ïsd¡ÐW¢ÌТ³š¢¯¨¢xá¢ñâ¢Ëc#£%¤J£ñ ~£ 5š£=š¯£ÙÑߣÚÑߣࣺ†´¤r U¥ðd¥Âõi¥é+n¥R’¥¾‰©¥E!Î¥ùÜ¥1H)¦zµw¦Óº¦äØû¦Ä§ü8§òn"§¤Ó#§RoM§-X§‡å‡§Bd‹§rÊè§Cò¨r¡¨{­˜¨}Ë©©ë©ÐNN©•aW©{Ùn©2Œ©?uЩ½¹pª0Àª Uت¤îîª06þª16þª36þªÝÿªÂC«RjH«q‹«ÅH¢«}GÌ« Zü«¬Ÿ¬hS¬%¬¬ ¨Í¬ƒ­†5B­ uF­ 1a­Ÿ®@è®Ñs–®á–ª®Ç¤Ò®&Ò7¯ôÇU¯%Ír¯³^ ¯‹Þ°„ãD°’UʰÝBаaµÓ°lå9±"9v±ö …±H!ı4¤æ±áÌ4²HEòòÞ²3«â²Ú³vx³£_׳„)ܳÅL ´„‡´³¨'´‰ˆ´M)µ2<µ’Ê]µ[»µƵ*¡üµÏ2¶v{6¶Dîw¶\®¶€Í¶2xζ îÓ¶ ضðí¶üOò¶\ß·Ë ·0E·x·~É{·¸¤·Ñª¸Ñ÷s¸€÷–¸v¸Ÿ¸îÏŸR¹y5¹Ì·3¹Ñ_¹hꋹ«ö¹ÛXÿ¹ ºD›ºÂ3ºÕ&;º/×Yº>‚=»_i»Â°š»È~´»½»)WÌ»5[лFîû»#o¼Ð¹$¼Í ¬OÍðÇ—ÍÑ+ÆÍE$ÍÍŠÛÞÍ ο“ÎNÎ ›—Î]BµÎ.ÏèΛ- Ï16ϲ½WÏ_ ÑÏ[%ЙÐ:Ъ!Ñ+k:Ñ)ŸÑ«éјóÒù(ÒŒ4@Òz7µÒ%ÌùÒª¾-Ó‡UÓ«þÓô—ÓòEÐÓ{†UÔX`‰Ô^¬¢Ô²\ËÔ)áÔÄŸ)ÕA½YÕB½YÕˆ¦ŒÕˆ¿«Õc›ÓÕôÕ@p+ÖéÁjÖ2u×ÃO‘×ôçQرҠØâøØfAÙƒ=Ùkß=Ù«ìÀÙѹÚS~Úó¤YÚíù¡Úâ¦óÚK} Ûí/ÛÂdoÛTkxÛ@ŽÛÚ_ŸÛ~1LÜ—¡‰ÜçÜÜᵕÞA¤ÁÞ3ûÐÞÿIîÞ=ÁߪJ+ßeŒxß~±ªßQZöß* à/ýQàWhà+®‹àxå™à÷Åšà7ÒáÀw*áË6jáñÜátåâzÁâ 9 ⇙câc÷âW¢âìÌâHwñâJâýâWõã:Ø4ã«úHã—ü[ãæ_xã<„ã7?îã,#ä…÷äøðóäQg,å~ëqåÅâ·å½ØåéSìåH¾æ……xçÙXç(ÐÒçÝF?è{6ªèÀÊÞèêÆìè4é!éfjYés–céÐøÙé°†ñéô„êodrê6Àê±k(ë7%EëùI²ë8Vºë'¦¿ëÐÂÅë•8ìéR’ì±ãÉìWVáì:Fí‹Ùoíi²îÄé@îmÁvî-;÷î’gïæ 9ï {íï饩ðßoüð€GñýïñLñ”Zdñ8ǤñbØñ¯æñè}(ò°—ò[#¨ò€ÙªòŒPûò & óX¥¯ó!63ôtQô¢Rôw÷wô`rƒôÍñô/`øôûþõ†ºõ9#õC¬ºõ¢³öäªö–qºöíð¾öC{ýövÆ÷ö®‹÷JèÓ÷#Dì÷õµ-øÈŒ4øÖ4IøôGWøóÓ‹øBߺø@‹÷ø.%;ùTë<ùÎâù–VîùáZGúï_ú­èú³ƒQûÞé¿ûLíû¤üˆü›N0ýʇ=ý°ðNý8¾×ýÏíý¼Õþ_²3þ§‘wþÅ0…þ=ÝþFѺþØBÊþråëþÕôñþ@õþfçÿò ƒÿá®<à‘¯¼¤¬.´‡ÛíR—ðï öîV ×,fjuÄ Ó°æ¸|œ ½*ˆ16Öà€«ÄÄŸ P¤ö-¶6c@¸c¬i‡gÇ>9/7è}dÌJ,êB 9óqh…ì¶H©Ø >­#Á†%ÖoJ—1YdiÂ=êUÚ/-b"qÞÊù™A) c„p ~Ø¡ —0¶ ¥ :à ‘ì ¯¯ †f/ KD7 R{ ñ‰ óü‹ b‡³ {Þ ë: wu8 ’’¡ b÷ G‹m ±,‡ Ý ‰»ò $ï¦5S<\L@³èL”7NÊ¿nó¿RÌwÿ`‘ Ä™U†·Tˆ¸nÔ4_KÃNPYêpMÚÒÆö·šnu`¥UŠë³ lH{i¥®B°Qå° v¶ÿÇù‘‚ùILËÑç÷ÓD>¤ù„þü¦ÔÇß}ÞJïôlø÷YÿǵÚvŠSF× ­ËðÇÓŸþÖE/t¸±Y ±êm¼ü3áûG Ð[0ú8×üDŽÞE_û•4º€¡( ¬¶|·kßÒV8¼µQÏ‹’(WGjŒ°KúÆ¡êˆz&J„Wò‡•T¯\ðCdgw­–Ù˜Üá뛋°tÆVQž~½±ÍܸO®­£Õˆ3ƒqF ãèŒ ~Ö² ÐÁ Åøå >!gn!ÜËo! )Ž!Ïq³!½!læÉ!ßÊU"hbÖ"¤¤1#Ƈ¼#°pì#µø($ ç[$›Ñe$9S™$Zå¢$IJ$ ¾ì$÷J%fËÄ%?‹Ñ%¥ã&ƒ¤œ&M¥& ‘í&r†A'ý¤Q'g‰r'¡ð”'¹¤¸'~Ö'å×'ňC(–¹N(îæ)à5U*sdd*K³Ó*úÅÓ* ÏÓ*±ŠÚ*ó¢å*q+€ k+Ñ:+¤—›+!1ž+#à+^åê+xo,Æ™%,Så9,ó`,Ïpƒ,ûî¹,Ùì×,ò” -G­,-ã3-ÓA¤-)sJ.TæM.òz.T¶Š.þòŽ.´3ñ.Ú/@Ê"/—ÀE/WÈO/÷ÊS/ÌÀk// —/éÁ±/…²Â/¼ì/5ÿ0Z/˜1M2õS2^»º2áÝ83÷É3'î3ÕFg4úê¨4^¡º4pwÀ4•VÐ4¢Éó4«•W5ÛÉe5ÑCœ5ÄG»5äæ5VÞ6é!k6v~x6x˜ˆ6íE¼6$Ð6#Hù6>Ó7AI,7y\7ýÇÝ7a<-8¦sk8Á˸811»8‡D9c¾69ƒï‚9¤T:„i:õpÄ:Áë;ÜÿT;\Pf;UšÔ;ŠwÕ;¥?<†Ú<ëˆ&?1¾>sÂ>hgå>å!í>üˆû>š™5?e¥?:Éò?¬_@”F@*H@ÔÔÏ@œ=A™ƒAµ|˜A¬DóAM}ÿAÃ"BêTB¥ÌZBP;€BÖÜBö¹©B9 0Cõt8C‹KC¹gOCàYCX¥ÿCÁ…zDIlØDu1æDíTëD­éxE`Ë“EL”¢E¤¯¸E˜ñÆEÌ¡ÐE]Fù‰FÖ¬F>ÆÖF4ìFý' GÖ¹.GðSYG%Ä®G[çGøHÿ²QH‘ÅHÑ÷H,1IÒvzI¾ÂI‘ñÖI8ÇJ9ÇJ/ŽJR]EJ ]JÃùdJvƒJ*Å KÆ-6K ®DK'ªMKšIsKðúÞK;L³C©L›«Lð7¼L€FêLƒFêLdV{Mô…µMÐéÃMQ7NËO‘1O‘Ë…OxPÄOôZùO>„BPÆUP ÙïPÅõP]‡%QSá*Q§YQ#ÆmQ`˜Q MÉQ8ÝØQ=DäQÜQèQØò.RígARuRÜšR|÷·RÔÑRªSRASÿy™Sþ7êS:½ T„JT1þQTᘘT&VTq)ÂTAcâTECñTGÖôTÇ6U…jUÕ”WUôqŽUãLØUŸVN¥.VžÇ[V^À\V\7_VcVD½”V°ã¯VÒ&W2–eWNmW¤(’W®Û©Wõ4ÌW òWU‘X×XÇŸµXykY ~YDÄ,YÐZ£VZZ‚®aZvqZ4·•Zô} Z€vÐZKÙ[3UC[»kK[ôè[>ò¢[N°â[rá(\V‘Õ\~/á\¸ní\Xì]ë/]*þ?]m“F]¡¼G]ÝÔs]û“]Ë•¤]».ô]]ë ^Ä@U^F_^øá6_´§_>Ö×_ú!` @(`áFj`r|`tË`û‚Î`·×jaý ·aIû½a«cÆaaðßa%bïy6bLÚªbIˆ¿bÊ1c‰~cÀkïc›<d§Á&dùŸ3d½DQdsÒÜdìáìdÞÁJe÷clfÕ?gÇ‚Ãgœ¡ógÑh7•>h„BhWh{»h^TÔh}§xiÐßàiÑßài ¼/j°UYjÆ`tj Íéjýhöj—ÆøjæOsk™µkµŠlæ÷’l$›lR¿lkÇlDŠíl?mM mœÆGm‹Mm·ã«màKan¯.o†loA3¯oŠÄoOïpÕ{p(9œp)9œpçÿpsýqÿ…Bq‹ ‹q:'¬q1¨brÆ\crMÎrŸÈ•r8®sÓQNsÑ¿ÂsõdtF >tðfCtú¦«tËÔt$›%u“¥uhµuጵuÔP`vù­Ûv€: w®=w#ñw¥îKwt³rw^¬Žwºñ®w¦;Âw: xlcSxÃyvx]µ|x×x0/åxã™ yûÙyÇ™!yN 4y­ÇÉy#ØyŠmþy±9zï3nzòHnzqŒz•zð.¸zåQ¾z’eÙzcÿçz XëzÊã{+æ{ß‘{ßå>{D·|2Û»|óN}õü}¶Ú}QW}•¼W}¤T·}ÛT·}xšÇ},Î}Ú}íù$~q†R~â^T~‘„~ÑE‡~ Ì~Æ¢OÒ& ™/¶R”ŽŸÞ^/qé—AV HøÌ'a^M‹FÆ&ˆJ)— _x2¿ð3¥å¦9 N™Ã3 / —kF!Åÿ"%â…j*ù°áð¬Ót/M/ / ÀcSNžÁ…%­ìõJPÕQÌÆ•df¢qŠ4Ú $™ý¬ñ,óc@ìI…¨7¢#z ÎiùpîFí¢¥à噸‡‘Žø½øô9œ'Õ%WgzAØ`÷øJk56#ûBŸË0ÙN T¼Y!°‡î“o‹ÑëKk‚S(Å¿ í#Ä÷©W¯ˆð’ðR"` 32òbakáí>M8Am6<ÑóƒŽB? tã_Ü7 Ö@ÜŒÜ'R§«¶+^ìS<ÂôÊßyt^U½‘°ÏW5‡N¯÷…o³‚½-£n³}B¼6Üikb‹ž}ÏKâp£˜h_h‹®½J?ÂK#øàæžw°b~*'²=€.}Ʊ+¨þÓ 15-ÌØ±¹°„YuÀó—XzTˆ¹Y†Òê¯ ã˜Ù9ßrS0’00£©“›ÄZñ ÅužØÄG{Öùµ$Î?YÝÂÈШ*™FÐO!‰E¿®9Tôº› [11¹+M=CÆ‚yІ“íjCŒ‘‰Zæ§€zÒÜ c£^¤ò¿&ÜMך¯ }ŒAŠã,…„ޗ³ÀÖ KCØëŠÎTtUJXRjCÞÔ he¹ÄßŇ U©),+(Ž~]ü§š§fú5›d›à,ÆŽ€-=!ƒ’×±Ø}2ò!ã$—š¦k}Cêµµ _ÏÛô¤Áõ=*CZn“c…Q«î¡›Cðˆ?‘d—%s =!e™„±Ì•oò¹•0L¶)£+r"®H’} #êk¹Šj9Þ¸:4-×Hn¡éò­Èúö]ë„]äÇ3,Æ7/;3d¹´˜î™ŽB<-™yèâ$¸ë•壜éç*K&eÃ…HFb²›–¼.Z×é•4F†äs‘G¼ó›1Œ·Õ;m:iä…µöC4Ю»½NŽ¥ÔÌd2™¬yÁ2 G‹Ý‡üŸº¯nìøù»8S_¦u`Ö)QŠG6õ»$®ô¢µ¡r+v>v"§µNpg¶nn±ºÍ|)OÊPt€þ]½b\ž_fsR¨^(·]& «ruL‹œäýÞ€ƒôn2,Q¥M+¿—ÁÔÚÖ–h€­²~^ÐÕßã5ƒ%Ÿß_;Rƒwï=½»c:2$L/†(]üt`ð¼vÍaðÁ¨K$ë] ï'l¢ 3\Ò~cNîZåOã8ÁÙ?‘)á~¢8'.ÝØMÒçTÕí)f è rÍ“V,X.¸à úêÎí-ñC6.ñ µÞ¿£âÈ0|«(”ËcÿèO.|•3ðbÏ„QaÅŠ a‡&“('"ØF£úhO]ˆ>ãp %tö¨xI“LÇÚáÍúÛ7  H~­(Ím}É*UÙÛqEžBùÊì 7¾›’ŒbÄ›™‚W¯7ô¶¹¢I¤3¡Sø8oÜíYñyù´ûM&Sõ˜*;÷/´âl;E!×ÓÇ¿DKwÏ3‘”š´´ÓfD tA†Ÿç6ü pƒ ‚¾=Ewà:ŠâÔpP’šÞMÁ¾±}nV--ªèrŒ˜=Dèb3n%Íf'öç9¡lj Â(“¸\R³rrã‚TºðÊ©'´µ–‚…%¨Þìîtê_#¿!½¼§ŠÒúp–^?PFS £sH)&)&±%~a»AÌïE |'˜Iuij×¼@OÒÉ­¹“[§ÊÜ\;"È<F– Îñ¤%¶»ˆ¿á¬ž6´Ó1<R‚"‚jaÃW@Ÿ칈UATA+°fg$àYe-ë{¯©~xŠcKÒS„ ZOÒn³2 ¤ïj/¢àÝy‹*[)¥î+ £¸„ 1ã8îv/Š3fÊ·×ýÐ3³t2qGR¿êÕÑ0ÙSâËO Øjùú»ûóá+6às¤ªX‹ûô‹ìð …ܳ‚L’ƒ…|ˆ{,&8üJÝ]I»Bµ#°ÛÀž$ЩÌÑÿÕ#/µ» à“P=r_7¹ ‹±xvó ±%;‚  åXw~œ˜{ZGÙOpkEW×Aà:´5e.,Bÿ=7Ë1»†bå%yÚ+žçXaÎ 4…ûØíð+Ÿ‰(Ó#5þ Á"> -Û‘i%{,¾è|ÔUš(d1{§o ¢Ô!| `‰C Ô(ž È\›*Ë)’)(©8˜k_! E„„¤rp¤-VüŠÞ¹ ŠŸ¨|¯5D;|Õ·Š!ö½QÀ°•<ÉÍ"{íþž†67y9`Z†åàÅŸººÐõÍ÷»$EAbÒƒºÝQÔ¶A„Í`|Jí(oƒõɸ䊭E)?RíÙ‹Oà3¹ˆÚ@œü¢T[üÈÃ8–‹M DNU“Ç[0¨6Ì¢+Lã->é)BNçÇEò<îÞ¥n>H'4 ê¸ÊodlE·ÊeBM¹Uåϱæ"móï lXœøDØ;œÂ«rÓbz;h¶Ÿpé‘E*ÿî•,¦dÈŽ3„Xÿu¥ƒ…ã#ûül&j4{Ë Ó/è|5=£gÔyxÌJ[Ð5dßí6?3˜‹Bœ«Õó ¬uˆ(fv‚YÂ~6Õxuèüâ/XÌÔœ$£Œ |+æùŒæ}zRl„±³g{øÿ¹¤%–Y$—jœm§ï8$Ëâ]‰vÊ:é*M2c˜N°Ò1`f\£ñÏŽ”…(F_ø/iýëÉz&1²Ñhò/æû,º,;y3c 9ñ†8²*f¬†h Äsµ­Îfy`ûáÜ[[•_@ОW'¿V¾4DÑc¿öÄõ ¸œݵI¿z4132½R² ¦7à>‡/ü4ieÓÛ.¡ª~©©íáfNÝÒx2#Õ­eã>ZTõÇ^ªN}ÄCõØNzE®À”gqé‹i&³?~µfèf$Ðgܳ Ô¼LÿL˜ÅOäE>Öà¬69Ü1eªàfysx>xb%àG^NBl) ’×pËpÛ¨Éå>ñoj@activePatternChoiceHasFreeTyparsHactivePatternIdentIsNotFunctionTyped$ZassemblyResolutionFoundByAssemblyFoldersExKeyLVassemblyResolutionFoundByAssemblyFoldersKeyu*assemblyResolutionGACœaugOnlyCertainTypesCanHaveAttrs´2augRefEqCantHaveObjEqualsO@augStructCompNeedsStructEqualityÿDaugStructEqNeedsNoCompOrStructCompi DaugTypeCantHaveRefEqAndStructAttrsæ (buildArgInvalidFloatU $buildArgInvalidIntƒ :buildAssemblyResolutionFailedª .buildCannotReadAssemblyà PbuildCouldNotReadVersionInfoFromMscorlibd 8buildCouldNotResolveAssemblyŽ TbuildCouldNotResolveAssemblyRequiredByFile° @buildDidNotExpectOptDataResourceä @buildDidNotExpectSigdataResource DbuildDifferentVersionMustRecompile\ DbuildDirectivesInModulesAreIgnored± 6buildErrorOpeningBinaryFileØ HbuildExpectedFileAlongSideFSharpCoreþ 0buildExpectedSigdataFile* NbuildExplicitCoreLibRequiresNoFramework_ >buildImplementationAlreadyGivenÁ JbuildImplementationAlreadyGivenDetailNbuildImplicitModuleIsNotLegalIdentifier0buildInvalidAssemblyName¿(buildInvalidFilenameã4buildInvalidHashIDirective:buildInvalidHashloadDirective04buildInvalidHashrDirectivep:buildInvalidHashtimeDirectiveªBbuildInvalidModuleOrNamespaceNameó&buildInvalidPrivacy6buildInvalidSearchDirectoryx>buildInvalidSourceFileExtensionŸ.buildInvalidVersionFile2buildInvalidVersionString52buildInvalidWarningNumberS8buildMismatchOutputExtensionqDbuildMscorLibAndFSharpCoreMismatchXTbuildMscorlibAndReferencedAssemblyMismatch\NbuildMultiFileRequiresNamespaceOrModuleXBbuildMultipleReferencesNotAllowed8buildMultipleToplevelModulesC,buildNoInputsSpecifiedM8buildOptionRequiresParameterb*buildPdbRequiresDebug‚6buildProblemReadingAssembly¿0buildProblemWithFilenameä buildProductName"buildRequiresCLI2"8buildSearchDirectoryNotFound|chkDuplicateMethodInheritedTypeƒRchkDuplicateMethodInheritedTypeWithSuffixü8chkDuplicateMethodWithSuffixÀ (chkDuplicatePropertyo!chkUnionCaseDefaultAugmentation0*chkUnusedThisVariable-0chkUnusedValue1XchkValueWithDefaultValueMustHaveDefaultValue#16chkVariableUsedInInvalidWay20crefBoundVarUsedInSpliceK2>crefNoInnerGenericsInQuotationsÚ2crefNoSetOfHolem3DcrefQuotationsCantCallTraitMembersÎ3DcrefQuotationsCantContainAddressOfb4ZcrefQuotationsCantContainArrayPatternMatchingª4FcrefQuotationsCantContainByrefTypesÜ4VcrefQuotationsCantContainDescendingForLoops5JcrefQuotationsCantContainGenericExprs35RcrefQuotationsCantContainGenericFunctionsj5BcrefQuotationsCantContainInlineIL6BcrefQuotationsCantContainObjExprsd6NcrefQuotationsCantContainStaticFieldRef’6JcrefQuotationsCantContainThisConstantÒ6RcrefQuotationsCantContainThisPatternMatch7BcrefQuotationsCantContainThisType97FcrefQuotationsCantFetchUnionIndexesf7csIncorrectGenericInstantiation!<.csIndexArgumentMismatchz<JcsMemberHasNoArgumentOrReturnProperty´<.csMemberIsNotAccessible=0csMemberIsNotAccessible2G=*csMemberIsNotInstance5>&csMemberIsNotStaticT>*csMemberNotAccessiblep>:csMemberOverloadArityMismatch?2csMemberSignatureMismatch‰?4csMemberSignatureMismatch2ì?4csMemberSignatureMismatch3Z@4csMemberSignatureMismatch4è@csTypeDoesNotSupportComparison1I>csTypeDoesNotSupportComparison2xI>csTypeDoesNotSupportComparison3ûIcsTypeParameterCannotBeNullableûO6csTypesDoNotSupportOperatorÖPFcsTypesDoNotSupportOperatorNullable Q@customOperationTextLikeGroupJoin†Q6customOperationTextLikeJoinòQ4customOperationTextLikeZipSRvDefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySiglRnDefinitionsInSigAndImplNotCompatibleAbbreviationsDiffereS~DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInImplâS|DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig›TnDefinitionsInSigAndImplNotCompatibleAccessibilityDifferEUˆDefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHiddenùUtDefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig‡VhDefinitionsInSigAndImplNotCompatibleFieldOrderDiffer²W€DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecifiedPXfDefinitionsInSigAndImplNotCompatibleFieldWasPresentýXXDefinitionsInSigAndImplNotCompatibleILDiffer›Y„DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot ZjDefinitionsInSigAndImplNotCompatibleImplDefinesStructËZxDefinitionsInSigAndImplNotCompatibleImplementationIsAbstract‚[zDefinitionsInSigAndImplNotCompatibleImplementationIsNotSealed[\tDefinitionsInSigAndImplNotCompatibleImplementationSaysNull3]vDefinitionsInSigAndImplNotCompatibleImplementationSaysNull2ç]pDefinitionsInSigAndImplNotCompatibleImplementationSealed™^hDefinitionsInSigAndImplNotCompatibleMissingInterfacep_^DefinitionsInSigAndImplNotCompatibleNamesDiffer0`bDefinitionsInSigAndImplNotCompatibleNumbersDiffer•`rDefinitionsInSigAndImplNotCompatibleParameterCountsDifferarDefinitionsInSigAndImplNotCompatibleRepresentationsDifferƒalDefinitionsInSigAndImplNotCompatibleSigHasAbbreviationòavDefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer‹b„DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot%cnDefinitionsInSigAndImplNotCompatibleSignatureIsAbstractãcjDefinitionsInSigAndImplNotCompatibleSignatureSaysNullÁdlDefinitionsInSigAndImplNotCompatibleSignatureSaysNull2uenDefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind'f`DefinitionsInSigAndImplNotCompatibleTypeIsHiddenœf~DefinitionsInSigAndImplNotCompatibleTypesHaveDifferentBaseTypes&gTdelegatesNotAllowedToHaveCurriedSignaturesžg,descriptionUnavailableÔg$docfileNoXmlSuffixòg(elDeprecatedOperatorh*elSysEnvExitDidntExitŒherasedTo²h,etBadUnnamedStaticArgs½hTetDirectReferenceToGeneratedTypeNotAllowedi4etEmptyNamespaceNotAllowedÐi@etEmptyNamespaceOfTypeNotAllowed*j8etErasedTypeUsedInGenerationŒjHetErrorApplyingStaticArgumentsToType6ketEventNoAddyketEventNoRemove¾kDetHostingAssemblyFoundWithoutHostslDetIllegalCharactersInNamespaceNamesl:etIllegalCharactersInTypeName´letPropertyCanReadButHasNoGetter r@etPropertyCanWriteButHasNoSetters>etPropertyHasGetterButNoCanReadgs@etPropertyHasSetterButNoCanWriteÅs@etPropertyNeedsCanWriteOrCanRead$tBetProvidedAppliedTypeHadWrongName—t>etProvidedTypeHasUnexpectedName5u>etProvidedTypeHasUnexpectedPath‡uDetProvidedTypeReferenceInvalidTextÐuLetProvidedTypeReferenceMissingArgumentav>etProvidedTypeWithNameExceptionóvBetProvidedTypeWithNullOrEmptyName;wJetProviderDoesNotHaveValidConstructorlwetProviderErrorx4etProviderErrorWithContext7xDetProviderHasWrongDesignerAssembly¦x,etProviderReturnedNully@etStaticParameterAlreadyHasValueby>etStaticParameterRequiresAValuey2etTooManyStaticParametersSzDetTypeProviderConstructorException¿z2etTypeProviderNotApprovedûzZetUnexpectedExceptionFromProvidedMemberMemberÈ{VetUnexpectedExceptionFromProvidedTypeMember|LetUnexpectedNullFromProvidedTypeMemberZ|6etUnknownStaticArgumentKind |2etUnsupportedConstantTypeø|.etUnsupportedMemberKind}>etUnsupportedProvidedExpression}}.eventHasNonStandardType~nExceptionDefsNotCompatibleAbbreviationHiddenBySignatureRjExceptionDefsNotCompatibleDotNetRepresentationsDiffer™€jExceptionDefsNotCompatibleExceptionDeclarationsDifferN\ExceptionDefsNotCompatibleFieldInImplButNotSig‚\ExceptionDefsNotCompatibleFieldInSigButNotImplé‚VExceptionDefsNotCompatibleFieldOrderDiffersÚƒVExceptionDefsNotCompatibleHiddenBySignatureº„TExceptionDefsNotCompatibleSignaturesDiffer¿…*experimentalConstruct†(fieldIsNotAccessible½†LFieldNotContainedAccessibilitiesDiffer‡>FieldNotContainedLiteralsDifferLJ>FieldNotContainedMutablesDiffer=ˆ8FieldNotContainedNamesDiffer³ˆforFormatDoesntSupportPrecisionq‹2forHashSpecifierIsInvalidš‹"forHIsUnnecessaryÆ‹"forLIsUnnecessarybŒ2forMissingFormatSpecifierFforPositionalSpecifiersNotPermitted"6forPrecisionMissingAfterDot]ilDynamicInvocationNotSupported™^ilFieldDoesNotHaveValidOffsetForStructureLayout=™FilFieldHasOffsetForSequentialLayoutÅ™NilFieldOffsetAttributeCouldNotBeDecoded9š@ilIncorrectNumberOfTypeArgumentsišilLabelNotFound›š4ilLiteralFieldsCannotBeSet°š"ilMainModuleEmptyΚFilMarshalAsAttributeCannotBeDecoded›HilMutableVariablesCannotEscapeMethodA›XilReflectedDefinitionsCannotUseSliceOperatoro›hilSignatureForExternalFunctionContainsTypeParameters¼›2ilStaticMethodIsNotLambda`œPilStructLayoutAttributeCouldNotBeDecodedÄœBilTypeCannotBeUsedForLiteralFieldõœ ilUndefinedValue#8ilUnexpectedGetSetAnnotation:6ilUnexpectedUnrealizedValuefVilValuesWithLiteralAttributeCannotBeMutable“PilValuesWithLiteralAttributeMustBeSimpleÌ.ilwriteErrorCreatingMdbLž.ilwriteErrorCreatingPdbÜžPilwriteMDBFileNameCannotBeChangedWarningŸ.ilwriteMDBMemberMissingrŸjilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen¯ŸHimpImportedAssemblyUsesNotPublicTypeäŸ4impInvalidMeasureArgument1* 4impInvalidMeasureArgument2c DimpInvalidNumberOfGenericArguments’ VimpNotEnoughTypeParamsInScopeWhileImportingþ TimpReferencedTypeCouldNotBeFoundInAssemblya¡FimpReferenceToDllRequiredByAssemblyΡ4impTypeRequiredUnavailableZ¢@infosInvalidProvidedLiteralValue»¢invalidNamespaceForProvidedType£*invalidPlatformTarget+£HinvalidPlatformTargetForOldFramework’£NInvalidRecursiveReferenceToAbstractSlotû£0lexByteArrayCannotEncode,¤@lexCharNotAllowedInOperatorNames}¤8lexExpectedSingleLineCommentÕ¤parsAttributesMustComeBeforeValúÊLparsAugmentationsIllegalOnDelegateType$ËFparsConsiderUsingSeparateRecordTypebËLparsDoCannotHaveVisibilityDeclarations‘Ë.parsEmptyTypeDefinitionÍË\parsEnumFieldsCannotHaveVisibilityDeclarations”ÌZparsEnumTypesCannotHaveVisibilityDeclarationsÕÌ parsEofInComment Í$parsEofInDirectivePÍparsEofInHashIf‚Í parsEofInIfOcamlµÍparsEofInStringîÍ0parsEofInStringInCommentÎ4parsEofInTripleQuoteString`ÎFparsEofInTripleQuoteStringInCommentœÎ.parsEofInVerbatimStringìÎ@parsEofInVerbatimStringInComment$ÏVparsErrorInReturnForLetIncorrectIndentationpÏparsUnexpectedEndOfFileTypeArgsïåJparsUnexpectedEndOfFileTypeDefinitionæHparsUnexpectedEndOfFileTypeSignatureFæ8parsUnexpectedEndOfFileWhileqæ6parsUnexpectedEndOfFileWithÄæ0parsUnexpectedIdentifierüæ6parsUnexpectedInfixOperatorçXparsUnexpectedIntegerLiteralForUnitOfMeasureHçLparsUnexpectedOperatorForUnitOfMeasure‚ç„parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimStringâç.parsUnexpectedSemicolonœè6parsUnexpectedTypeParameterÇèFparsUnexpectedVisibilityDeclarationþè0parsUnfinishedExpression.é\parsUnionCasesCannotHaveVisibilityDeclarations_éparsUnmatchedê$parsUnmatchedBeginê4parsUnmatchedBeginOrStruct+ê$parsUnmatchedBraceJê(parsUnmatchedBracketZê.parsUnmatchedBracketBariêFparsUnmatchedClassInterfaceOrStructyê.parsUnmatchedLBrackLess¥ê parsUnmatchedLetÌê(parsUnmatchedLetBangië$parsUnmatchedParenûë parsUnmatchedUse ì(parsUnmatchedUseBang›ì"parsUnmatchedWith-íbparsUseBindingsIllegalInImplicitClassConstructors_í>parsUseBindingsIllegalInModules™íjparsVisibilityDeclarationsShouldComePriorToIdentifierèítastUndefinedTyconItemUnionCaseÕø&tastUnexpectedByRefùNtastUnexpectedDecodeOfAutoOpenAttribute2ùftastUnexpectedDecodeOfInterfaceDataVersionAttributeZùbtastUnexpectedDecodeOfInternalsVisibleToAttributeŽùtcBadReturnTypeForGetEnumeratoru8tcBinaryOperatorRequiresBody@tcBinaryOperatorRequiresVariableŠ4tcBindingCannotBeUseAndRecÂ6tcBindMayNotBeUsedInQueriesótcCannotInheritFromVariableType8tcCannotOverrideSealedMethod?tcDllImportStubsCannotBeInlined+FtcDoBangIllegalInSequenceExpressionNFtcDoesNotAllowExplicitTypeArguments€4tcDuplicateSpecOfInterfaceBtcEmptyCopyAndUpdateRecordInvalid1(tcEmptyRecordInvalidvZtcEntryPointAttributeRequiresFunctionInModule XtcEnumerationsCannotHaveInterfaceDeclaratione>tcEnumerationsMayNotHaveMembers–8tcEnumTypeCannotBeEnumerated¸$tcEventIsNotStatic>tcEventIsStaticYdtcExceptionAbbreviationsMustReferToValidExceptionspbtcExceptionAbbreviationsShouldNotHaveArgumentListÖ.tcExpectedInterfaceTypetcExpectModuleOrNamespaceParent7BtcExplicitObjectConstructorSyntax`BtcExplicitStaticInitializerSyntax©tcIllegalSyntaxInTypeExpressionv'PtcImplementsGenericIComparableExplicitly™'BtcImplementsIComparableExplicitly¡(@tcImplementsIEquatableExplicitlyA)VtcImplementsIStructuralComparableExplicitly8*TtcImplementsIStructuralEquatableExplicitlyÙ*>tcImplicitMeasureFollowingSlashw+ZtcInferredGenericTypeGivesRiseToInconsistency¡+HtcInheritCannotBeUsedOnInterfaceTypeT,dtcInheritConstructionCallNotPartOfImplicitSequenceÕ,HtcInheritDeclarationMissingArguments€-FtcInheritedTypeIsNotObjectModelType .(tcInheritIllegalHere9.,tcInvalidTypeExtension->DtcInvalidTypeForLiteralEnumerationE>:tcInvalidUnitsOfMeasurePrefixü>.tcInvalidUseBangBindingl?&tcInvalidUseBinding§?6tcInvalidUseNullAsTrueValueà?,tcInvalidUseOfDelegatei@6tcInvalidUseOfInterfaceTypeÇ@,tcInvalidUseOfTypeNameé@FtcInvalidUseOfTypeNameOrConstructorA`tcInvalidUseOfTypeNameOrConstructorWithOverloads—A4tcJoinMustUseSimplePatternLBVtcKindOfTypeSpecifiedDoesNotMatchDefinitionyB@tcLessGenericBecauseOfAnnotationÝB\tcLetAndDoRequiresImplicitConstructionSequence}C(tcListLiteralMaxSizeDNtcLiteralAttributeRequiresConstantValueŽD.tcLiteralCannotBeInlineýD0tcLiteralCannotBeMutable(EHtcLiteralCannotHaveGenericParametersTEDtcLocalClassBindingsCannotBeInlineƒE0tcLookupMayNotBeUsedHereF8tcMatchMayNotBeUsedWithQuery'FRtcMeasureDeclarationsRequireStaticMembersWFptcMeasureDeclarationsRequireStaticMembersNotConstructorsŠFXtcMeasureDefinitionsCannotHaveTypeParametersÝFPtcMemberAndLocalClassBindingHaveSameNameG@tcMemberIsNotSufficientlyGenericKGJtcMemberKindPropertyGetSetNotExpectedtGZtcMemberNotPermittedInInterfaceImplementation¬GJtcMemberOperatorDefinitionInExtrinsicéGFtcMemberOverridesIllegalInInterfacegHptcMembersThatExtendInterfaceMustBePlacedInSeparateModule¢H0tcMemberUsedInInvalidWay£I*tcMethodNotAccessible;J8tcMethodOverridesIllegalHeresJ0tcMissingCustomOperationºJ@tcModuleAbbreviationForNamespaceüJ>tcModuleRequiresQualifiedAccessRKtcRequireVarConstRecogOrLiterall>tcReservedSyntaxForAugmentationRl:tcReturnMayNotBeUsedInQueries^mJtcReturnTypesForUnionMustBeSameAsType‘m:tcReturnValuesCannotHaveNamesïmZtcRuntimeSuppliedMethodCannotBeUsedInUserCoden(tcSeqResultsUseYieldðn4tcSimpleMethodNameRequired.oTtcStaticFieldUsedWhenInstanceFieldExpectedUoFtcStaticInitializerRequiresArgument’oLtcStaticInitializersIllegalInInterface½ortcStaticLetBindingsRequireClassesWithImplicitConstructorsûo>tcStaticMemberShouldNotHaveThis™phtcStaticOptimizationConditionalsOnlyForFSharpLibrary qPtcStaticValFieldsMustBeMutableAndPrivateSqZtcStructsCannotHaveConstructorWithNoArgumentsDrVtcStructsCanOnlyBindThisAtMemberDeclarationîrxtcStructsInterfacesEnumsDelegatesMayNotInheritFromOtherTypes/s@tcStructsMayNotContainDoBindingsysBtcStructsMayNotContainLetBindingsìsjtcStructsMustDeclareTypesOfImplicitCtorArgsExplicitly²tRtcStructTypesCannotContainAbstractMembersauFtcStructuralComparisonNotSatisfied1uFtcStructuralComparisonNotSatisfied2nvBtcStructuralEqualityNotSatisfied1 wBtcStructuralEqualityNotSatisfied2ãwPtcSyntaxCanOnlyBeUsedToCreateObjectTypes{x8tcSyntaxErrorUnexpectedQMark­xntcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFieldsÓxPtcThisTypeMayNotHaveACLIMutableAttribute$y4tcThisValueMayNotBeInlinedŽyTtcThreadStaticAndContextStaticMustBeStatic×y,tcTPFieldMustBeLiteralŽzVtcTryFinallyMayNotBeUsedWithCustomOperatorsâz@tcTryIllegalInSequenceExpression{{tcTypesCannotContainNestedTypesÓ…ZtcTypesCannotInheritFromMultipleConcreteTypes† tcTypeTestErased4†.tcTypeTestLosesMeasures­†tcTypeTestLossyï†,tcTypeUsedInInvalidWay@‡6tcUnableToParseFormatStringЇ tcUndefinedFieldõ‡>tcUnexpectedBigRationalConstantCˆNtcUnexpectedConditionInImportedAssemblyeˆ4tcUnexpectedConstByteArray»ˆ8tcUnexpectedConstUint16Array׈:tcUnexpectedExprAtRecInfPointõˆ.tcUnexpectedMeasureAnon)‰@tcUnexpectedPropertyInSyntaxTreeE‰0tcUnexpectedPropertySpec„‰.tcUnexpectedSlashInType´‰DtcUnexpectedSymbolInTypeExpressionʉ2tcUnexpectedTypeArgumentsí‰JtcUninitializedValFieldsMustBeMutableŠ>tcUnionCaseDoesNotTakeArguments ŠBtcUnionCaseExpectsTupledArgumentsÉŠRtcUnionCaseNameConflictsWithGeneratedTypeÿŠtcUnrecognizedAccessibilitySpec Œ:tcUnrecognizedAttributeTarget7ŒBtcUnrecognizedQueryBinaryOperatorÜŒ6tcUnrecognizedQueryOperatorE,tcUnsupportedAttributeAŽ8tcUseForInSequenceExpressionvŽ4tcUseMayNotBeUsedInQueriesÙŽ*tcUseWhenPatternGuard@tcUseYieldBangForMultipleResultshTtcValueInSignatureRequiresLiteralAttribute°:tcVolatileFieldsMustBeMutable@tcVolatileOnlyOnClassLetBindings_NtlrLambdaLiftingOptimizationsNotApplied¬$tlrUnexpectedTExprq‘6typeInfoActivePatternResult‹‘0typeInfoActiveRecognizer¢‘ typeInfoArgumentµ‘"typeInfoCallsWord¿‘.typeInfoCustomOperationÆ‘typeInfoEventØ‘typeInfoFieldß‘"typeInfoFromFirstæ‘ typeInfoFromNextð‘ typeInfoFullNameÿ‘2typeInfoGeneratedProperty ’*typeInfoGeneratedType’$typeInfoImplements.’ typeInfoInherits:’typeInfoModuleD’"typeInfoNamespaceL’2typeInfoNamespaceOrModuleW’,typeInfoOtherOverloadsi’.typeInfoPatternVariable‚’ typeInfoPropertyŠ’typeInfoType”’"typeInfoUnionCaseš’&typeIsNotAccessible¦’LtyprelCannotResolveAmbiguityInDelegateà’DtyprelCannotResolveAmbiguityInEnumY“`typrelCannotResolveAmbiguityInOverloadedOperatorÏ“HtyprelCannotResolveAmbiguityInPrintft”NtyprelCannotResolveAmbiguityInUnmanagedË”^typrelCannotResolveImplicitGenericInstantiationF•0typrelDuplicateInterface+–HtyprelExplicitImplementationOfEqualsM–RtyprelExplicitImplementationOfGetHashCodeî–btyprelExplicitImplementationOfGetHashCodeOrEquals’—$typrelInvalidValue@˜6typrelMemberCannotImplementO˜ltyprelMemberDoesNotHaveCorrectKindsOfGenericParameters¥˜^typrelMemberDoesNotHaveCorrectNumberOfArguments™htyprelMemberDoesNotHaveCorrectNumberOfTypeParametersq™:typrelMethodIsOverconstrainedà™(typrelMethodIsSealedšbtyprelModuleNamespaceAttributesDifferInSigAndImplMš2typrelMoreThenOneOverrideš\typrelNamedArgumentHasBeenAssignedMoreThenOnceÆš@typrelNeedExplicitImplementationþš6typrelNoImplementationGiven†›RtyprelNoImplementationGivenWithSuggestion­›,typrelOverloadNotFoundiœNtyprelOverrideImplementsMoreThenOneSlotàœ4typrelOverrideWasAmbiguous1ntyprelSigImplNotCompatibleCompileTimeRequirementsDifferWVtyprelSigImplNotCompatibleConstraintsDifferžbtyprelSigImplNotCompatibleConstraintsDifferRemove žVtyprelSigImplNotCompatibleParamCountsDiffer‹ŸttyprelTypeImplementsIComparableDefaultObjectEqualsProvidedôŸrtyprelTypeImplementsIComparableShouldOverrideObjectEquals¡RundefinedNameConstructorModuleOrNamespace…¡JundefinedNameFieldConstructorOrMemberÀ¡,undefinedNameNamespace÷¡undefinedNameValueOfConstructor—£0unionCaseIsNotAccessibleÆ£4unionCasesAreNotAccessible¤(valueIsNotAccessible^¤TValueNotContainedMutabilityAbstractsDiffer™¤XValueNotContainedMutabilityAccessibilityMore ¥PValueNotContainedMutabilityAritiesDiffer»¥VValueNotContainedMutabilityArityNotInferred²§VValueNotContainedMutabilityAttributesDiffer*¨\ValueNotContainedMutabilityCompiledNamesDifferš¨ZValueNotContainedMutabilityDisplayNamesDiffer©XValueNotContainedMutabilityDotNetNamesDifferk©VValueNotContainedMutabilityExtensionsDifferÖ©NValueNotContainedMutabilityFinalsDifferUªzValueNotContainedMutabilityGenericParametersAreDifferentKindsŪdValueNotContainedMutabilityGenericParametersDiffer˜«XValueNotContainedMutabilityInlineFlagsDiffert¬XValueNotContainedMutabilityInstanceButStaticÛ¬lValueNotContainedMutabilityLiteralConstantValuesDiffer¾­LValueNotContainedMutabilityNamesDifferC®VValueNotContainedMutabilityOneIsConstructor£®XValueNotContainedMutabilityOneIsTypeFunction&¯TValueNotContainedMutabilityOverridesDifferþ¯`ValueNotContainedMutabilityParameterCountsDiffer~°XValueNotContainedMutabilityStaticButInstanceù°PValueNotContainedMutabilityStaticsDifferÛ±LValueNotContainedMutabilityTypesDifferL²RValueNotContainedMutabilityVirtualsDiffer¬²¡Active pattern '{0}' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x'&Active pattern '{0}' is not a function'Found by AssemblyFoldersEx registry key%Found by AssemblyFolders registry keyGlobal Assembly Cache.NET Framework;This indexer notation has been removed from the F# language(Invalid expression on left of assignmentError while parsing embedded IL$Error while parsing embedded IL type£A type with attribute 'CustomComparison' must have an explicit implementation of at least one of 'System.IComparable' or 'System.Collections.IStructuralComparable'sThe 'CustomEquality' attribute must be used in conjunction with the 'NoComparison' or 'CustomComparison' attributes¸A type with attribute 'CustomEquality' must have an explicit implementation of at least one of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'This type uses an invalid mix of the attributes 'NoEquality', 'ReferenceEquality', 'StructuralEquality', 'NoComparison' and 'StructuralComparison' attributesA type with attribute 'NoComparison' should not usually have an explicit implementation of 'System.IComparable', 'System.IComparable<_>' or 'System.Collections.IStructuralComparable'. Disable this warning if this is intentional for interoperability purposes¸A type with attribute 'NoEquality' should not usually have an explicit implementation of 'Object.Equals(obj)'. Disable this warning if this is intentional for interoperability purposesXThe 'NoEquality' attribute must be used in conjunction with the 'NoComparison' attribute±The 'ReferenceEquality' attribute cannot be used on structs. Consider using the 'StructuralEquality' attribute instead, or implement an override for 'System.Object.Equals(obj)'.˜Only record, union, exception and struct types may be augmented with the 'ReferenceEquality', 'StructuralEquality' and 'StructuralComparison' attributes­A type with attribute 'ReferenceEquality' cannot have an explicit implementation of 'Object.Equals(obj)', 'System.IEquatable<_>' or 'System.Collections.IStructuralEquatable'hThe 'StructuralComparison' attribute must be used in conjunction with the 'StructuralEquality' attribute{The 'StructuralEquality' attribute must be used in conjunction with the 'NoComparison' or 'StructuralComparison' attributesmA type cannot have both the 'ReferenceEquality' and 'StructuralEquality' or 'StructuralComparison' attributes,'{0}' is not a valid floating point argument%'{0}' is not a valid integer argument4Assembly resolution failure at or near this locationUnable to read assembly '{0}'=The file extensions '.ml' and '.mli' are for ML compatibility$Source file '{0}' could not be found(Could not read version from mscorlib.dll Could not resolve assembly '{0}'2Could not resolve assembly '{0}' required by '{1}':Did not expect to find optdata resource in FSharp.Core.dll:Did not expect to find sigdata resource in FSharp.Core.dllSThe F#-compiled DLL '{0}' needs to be recompiled to be used with this version of F#%Directives inside modules are ignored$Error opening binary file '{0}': {1}*File '{0}' not found alongside FSharp.Core3FSharp.Core.sigdata not found alongside FSharp.Core`When mscorlib.dll or FSharp.Core.dll is explicitly referenced the {0} option must also be passedDAn implementation of the file or module '{0}' has already been given…An implementation of file or module '{0}' has already been given. Compilation order is significant in F# because of type inference. You may need to adjust the order of your files to place the signature file before the implementation. In Visual Studio files are type-checked in the order they appear in the project file, which can be edited manually or adjusted using the solution explorer.­The declarations in this file will be placed in an implicit module '{0}' based on the file name '{1}'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file."'{0}' is not a valid assembly name'{0}' is not a valid filename,Invalid directive. Expected '#I \"\"'.>Invalid directive. Expected '#load \"\" ... \"\"'.8Invalid directive. Expected '#r \"\"'.GInvalid directive. Expected '#time', '#time \"on\"' or '#time \"off\"'. Invalid module or namespace nameaUnrecognized privacy setting '{0}' for managed resource, valid options are 'public' and 'private'%The search directory '{0}' is invalidxThe file extension of '{0}' is not recognized. Source files must have extension .fs, .fsi, .fsx, .fsscript, .ml or .mli.Invalid version file '{0}'Invalid version string '{0}'Invalid warning number '{0}'äThe output name extension doesn't match the options used. If '-a' or '--target:library' is used the output file name must end with '.dll', if '--target:module' is used the output extension must be '.netmodule', otherwise '.exe'.The referenced or default base CLI library 'mscorlib' is binary-incompatible with the referenced F# core library '{0}'. Consider recompiling the library or making an explicit reference to a version of this library that matches the CLI version you are using.ùThe referenced or default base CLI library 'mscorlib' is binary-incompatible with the referenced library '{0}'. Consider recompiling the library or making an explicit reference to a version of this library that matches the CLI version you are using.´Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'2Multiple references to '{0}.dll' are not permitted‡This file contains multiple declarations of the form 'module SomeNamespace.SomeModule'. Only one declaration of this form is permitted in a file. Change your file to use an initial namespace declaration and/or use 'module ModuleName = ...' to define your modules.No inputs specifiedOption requires parameter: {0};The '--pdb' option requires the '--debug' option to be used#Problem reading assembly '{0}': {1} Problem with filename '{0}': {1}F# Compiler for F# 3.0 {0}XThe file '{0}' is a CLI 1.x version of mscorlib. F# requires CLI version 2.0 or greater.-The search directory '{0}' could not be foundCA signature for the file or module '{0}' has already been specifiedÒThe signature file '{0}' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match./Filename '{0}' contains invalid character '{1}'eThe non-generic type '{0}' does not expect any type arguments, but here is given {1} type argument(s))ParseInput: unknown file suffix for '{0}'Unrecognized option: '{0}'mThe operator '{0}' cannot be resolved. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.‰The attribute type '{0}' has 'AllowMultiple=false'. Multiple instances of this attribute cannot be attached to a single language element.ˆThe 'base' keyword is used in an invalid way. Base calls cannot be used in closures. Consider using a private member to make base calls.}The byref-typed variable '{0}' is used in an invalid way. Byrefs cannot be captured by closures or passed to inner functions.KA type would store a byref typed value. This is not permitted by Common IL.bMethods with curried arguments cannot declare 'out', 'ParamArray', 'optional' or 'byref' argumentsbDuplicate method. The method '{0}' has the same name and signature as another method in this type.ÂThe method '{0}' has curried arguments but has the same name as another method in this type. Methods with curried arguments cannot be overloaded. Consider using a method taking tupled arguments.wDuplicate method. The abstract method '{0}' has the same name and signature as an abstract method in an inherited type.ÁDuplicate method. The abstract method '{0}' has the same name and signature as an abstract method in an inherited type once tuples, functions, units of measure and/or provided types are erased.¬Duplicate method. The method '{0}' has the same name and signature as another method in this type once tuples, functions, units of measure and/or provided types are erased.hDuplicate property. The property '{0}' has the same name and signature as another property in this type.²Duplicate property. The property '{0}' has the same name and signature as another property in this type once tuples, functions, units of measure and/or provided types are erased.´A function labeled with the 'EntryPointAttribute' attribute must be the last declaration in the last file in the compilation sequence, and can only be used when compiling to a .exeECalls to 'reraise' may only occur directly in a handler of a try-with\A type instantiation involves a byref type. This is not permitted by the rules of Common IL.8The type of a first-class function cannot contain byrefsyA property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.rThe property '{0}' has a getter and a setter that do not match. If one is abstract then the other must be as well.:Invalid custom attribute value (not a constant or literal)e'base' values may only be used to make direct calls to the base implementations of overridden membersœThe member '{0}' is used in an invalid way. A use of '{1}' has been inferred prior to its definition at or near '{2}'. This is an invalid forward reference.•This type implements or inherits the same interface at different generic instantiations '{0}' and '{1}'. This is not permitted in this version of F#.ÕThe mutable variable '{0}' is used in an invalid way. Mutable variables cannot be captured by closures. Consider eliminating this use of mutation or using a heap-allocated mutable reference cell via 'ref' and '!'.;The address of the field '{0}' cannot be used at this pointThe address of the variable '{0}' cannot be used at this pointBThe address of the static field '{0}' cannot be used at this point]A byref typed value would be stored here. Top-level let-bound byref values are not permitted.8The byref typed value '{0}' cannot be used at this pointCThe type abbreviation contains byrefs. This is not permitted by F#.HType '{0}' is illegal because in byref, T cannot contain byref types.>First-class uses of the address-of operators are not permitted;First-class uses of the 'reraise' function is not permittedFFirst-class uses of the expression-splicing operator are not permittedœReflectedDefinitionAttribute may not be applied to an instance member on a struct type, because the instance member takes an implicit 'this' byref parameteröObject constructors cannot directly use try/with and try/finally prior to the initialization of the object. This includes constructs such as 'for x in ...' that may elaborate to uses of these constructs. This is a limitation imposed by Common IL.ÀThe property '{0}' has the same name as another property in this type, but one takes indexer arguments and the other does not. You may be missing an indexer argument to one of your properties.JName clash. The property '{0}' has the same name as a method in this type.žA protected member is called or 'base' is being used. This is only allowed in the direct implementation of members since they could escape their object scope.S[] terms cannot contain uses of the prefix splice operator '%'@A method return type would contain byrefs which is not permitted@Expression-splicing operators may only be used within quotations='System.Void' can only be used as 'typeof' in F#{A type variable has been constrained by multiple different class types. A type variable may only have one class constraint.TThe type '{0}' is less accessible than the value, member or type '{1}' it is used incompiled form of the union case&default augmentation of the union caseØThe recursive object reference '{0}' is unused. The presence of a recursive object reference adds runtime initialization checks to members in this and derived types. Consider removing this recursive object reference.The value '{0}' is unused÷The type of a field using the 'DefaultValue' attribute must admit default initialization, i.e. have 'null' as a proper value or be a struct type whose fields all admit default initialization. You can use 'DefaultValue(false)' to disable this check,The variable '{0}' is used in an invalid wayŒThe variable '{0}' is bound in a quotation but is used as part of a spliced expression. This is not permitted since it may escape its scope.Inner generic functions are not permitted in quoted expressions. Consider adding some type constraints until this function is no longer generic._A quotation may not involve an assignment to or taking the address of a captured local variable‘Quotations cannot contain expressions that make member constraint calls, or uses of operators that implicitly resolve to a member constraint callFQuotations cannot contain expressions that take the address of a field0Quotations cannot contain array pattern matching%Quotations cannot contain byref types.Quotations cannot contain descending for loops5Quotations cannot contain uses of generic expressions©Quotations cannot contain function definitions that are inferred or declared to be generic. Consider adding some type constraints to make this a valid quoted expression.LQuotations cannot contain inline assembly code or pattern matching on arrays,Quotations cannot contain object expressions>Quotations cannot contain expressions that fetch static fields/Quotations cannot contain this kind of constant4Quotations cannot contain this kind of pattern match+Quotations cannot contain this kind of typeCQuotations cannot contain expressions that fetch union case indexesAQuotations cannot contain expressions that require byref pointersIQuotations cannot contain expressions that set fields in exception values@Quotations cannot contain expressions that set union case fieldsArgument length mismatchThe argument types don't matchCandidates: {0}ÓThis code is less generic than indicated by its annotations. A unit-of-measure specified using '_' has been determined to be '1', i.e. dimensionless. Consider making the code generic, or removing the use of '_'.(Expected arguments to an instance memberwExpecting a type supporting the operator '{0}' but given a function type. You may be missing an argument to a function.EExpecting a type supporting the operator '{0}' but given a tuple type@A generic construct requires that the type '{0}' be non-abstractRA generic construct requires that the type '{0}' have a public default constructoroA generic construct requires that the type '{0}' have reference semantics, but it does not, i.e. it is a structKA generic construct requires that the type '{0}' is a CLI or F# struct typeEA generic construct requires that the type '{0}' is an unmanaged typeWIncorrect generic instantiation. No {0} member named '{1}' takes {2} generic arguments.8This indexer expects {0} arguments but is here given {1}^The member or object constructor '{0}' has no argument or settable return property '{1}'. {2}.1The member or object constructor '{0}' is not {1}ëThe member or object constructor '{0}' is not {1}. Private members may only be accessed from within the declaring type. Protected members may only be accessed from an extending type and cannot be accessed from inner lambda expressions.{0} is not an instance member{0} is not a static member£The member or object constructor '{0}' taking {1} arguments are not accessible from this code location. All accessible versions of method '{2}' take {3} arguments.qThe member or object constructor '{0}' does not take {1} argument(s). An overload was found taking {2} arguments.aThe member or object constructor '{0}' requires {1} argument(s). The required signature is '{2}'.lThe member or object constructor '{0}' requires {1} additional argument(s). The required signature is '{2}'.‹The member or object constructor '{0}' requires {1} argument(s). The required signature is '{2}'. Some names for missing arguments are {3}.–The member or object constructor '{0}' requires {1} additional argument(s). The required signature is '{2}'. Some names for missing arguments are {3}.tThe member or object constructor '{0}' takes {1} argument(s) but is here given {2}. The required signature is '{3}'.™The member or object constructor '{0}' requires {1} argument(s) but is here given {2} unnamed and {3} named argument(s). The required signature is '{4}'.yThe member or object constructor '{0}' takes {1} type argument(s) but is here given {2}. The required signature is '{3}'.ËThis method expects a CLI 'params' parameter in this position. 'params' is a way of passing a variable number of arguments to a method in languages such as C#. Consider passing an array for this argumentQThe type '{0}' has a method '{1}' (full name '{2}'), but the method is not staticMThe type '{0}' has a method '{1}' (full name '{2}'), but the method is static{0} is not an instance method{0} is not a static method’A unique overload for method '{0}' could not be determined based on type information prior to this program point. A type annotation may be needed.,Method or object constructor '{0}' not foundCNo {0} member or object constructor named '{1}' takes {2} arguments„No {0} member or object constructor named '{1}' takes {2} arguments. Note the call to this member also provides {3} named arguments.®No {0} member or object constructor named '{1}' takes {2} arguments. The named argument '{3}' doesn't correspond to any argument or settable return property for any overload.$No overloads match for method '{0}'.zThe type '{0}' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'.%Optional arguments not permitted hereThe required signature is {0}FThe available overloads are shown below (or in the Error List window).:The constraints 'struct' and 'not struct' are inconsistentqThe declared type parameter '{0}' cannot be used here since the type parameter cannot be resolved at compile time5The type '{0}' does not have 'null' as a proper valuegThe type '{0}' does not support the 'comparison' constraint because it has the 'NoComparison' attribute€The type '{0}' does not support the 'comparison' constraint. For example, it does not support the 'System.IComparable' interfaceäThe type '{0}' does not support the 'comparison' constraint because it is a record, union or struct with one or more structural element types which do not support the 'comparison' constraint. Either avoid the use of comparison with this type, or add the 'StructuralComparison' attribute to the type to determine which field type does not support comparison>The type '{0}' does not support a conversion to the type '{1}'cThe type '{0}' does not support the 'equality' constraint because it has the 'NoEquality' attributeWThe type '{0}' does not support the 'equality' constraint because it is a function typeÚThe type '{0}' does not support the 'equality' constraint because it is a record, union or struct with one or more structural element types which do not support the 'equality' constraint. Either avoid the use of equality with this type, or add the 'StructuralEquality' attribute to the type to determine which field type does not support equality2The type '{0}' does not support the operator '{1}'zThe type '{0}' does not support the operator '{1}'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'./The type '{0}' has a non-standard delegate typesType inference problem too complicated (maximum iteration depth reached). Consider adding further type annotations."Type instantiation length mismatch)The type '{0}' is not a CLI delegate type%The type '{0}' is not a CLI enum typepThe type '{0}' is not compatible with any of the types {1}, arising from the use of a printf-style format stringØThis type parameter cannot be instantiated to 'Nullable'. This is a restriction imposed in order to ensure the meaning of 'null' in some CLI languages is not confusing when used in conjunction with 'Nullable' values.2None of the types '{0}' support the operator '{1}'zNone of the types '{0}' support the operator '{1}'. Consider opening the module 'Microsoft.FSharp.Linq.NullableOperators'.j{0} var in collection {1} (outerKey = innerKey) into group. Note that parentheses are required after '{2}'_{0} var in collection {1} (outerKey = innerKey). Note that parentheses are required after '{2}'{0} collection into varöThe {0} definitions in the signature and implementation are not compatible because an abbreviation is being hidden by a signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature.{The {0} definitions in the signature and implementation are not compatible because the abbreviations differ: {1} versus {2}¶The {0} definitions in the signature and implementation are not compatible because the abstract member '{1}' was required by the signature but was not specified by the implementation§The {0} definitions in the signature and implementation are not compatible because the abstract member '{1}' was present in the implementation but not in the signature±The {0} definitions in the signature and implementation are not compatible because the accessibility specified in the signature is more than that specified in the implementation‹The {0} definitions in the signature and implementation are not compatible because a CLI type representation is being hidden by a signature¨The {0} definitions in the signature and implementation are not compatible because the field '{1}' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'.›The {0} definitions in the signature and implementation are not compatible because the order of the fields is different in the signature and implementationªThe {0} definitions in the signature and implementation are not compatible because the field {1} was required by the signature but was not specified by the implementation›The {0} definitions in the signature and implementation are not compatible because the field {1} was present in the implementation but not in the signaturepThe {0} definitions in the signature and implementation are not compatible because the IL representations differ»The {0} definitions in the signature and implementation are not compatible because the implementation defines the {1} '{2}' but the signature does not (or does, but not in the same order)´The {0} definitions in the signature and implementation are not compatible because the implementation defines a struct but the signature defines a type with a hidden representationÖThe {0} definitions in the signature and implementation are not compatible because the implementation is an abstract class but the signature is not. Consider adding the [] attribute to the signature.ÕThe {0} definitions in the signature and implementation are not compatible because the implementation type is not sealed but signature implies it is. Consider adding the [] attribute to the implementation.±The {0} definitions in the signature and implementation are not compatible because the implementation says this type may use nulls as a representation but the signature does not¯The {0} definitions in the signature and implementation are not compatible because the implementation says this type may use nulls as an extra value but the signature does notÔThe {0} definitions in the signature and implementation are not compatible because the implementation type is sealed but the signature implies it is not. Consider adding the [] attribute to the signature.½The {0} definitions in the signature and implementation are not compatible because the signature requires that the type supports the interface {1} but the interface has not been implementedcThe {0} definitions in the signature and implementation are not compatible because the names differlThe {0} definitions in the signature and implementation are not compatible because the number of {1}s differ~The {0} definitions in the signature and implementation are not compatible because the respective type parameter counts differmThe {0} definitions in the signature and implementation are not compatible because the representations differ–The {0} definitions in the signature and implementation are not compatible because the signature has an abbreviation while the implementation does not—The {0} definitions in the signature and implementation are not compatible because the signature declares a {1} while the implementation declares a {2}»The {0} definitions in the signature and implementation are not compatible because the signature defines the {1} '{2}' but the implementation does not (or does, but not in the same order)ÛThe {0} definitions in the signature and implementation are not compatible because the signature is an abstract class but the implementation is not. Consider adding the [] attribute to the implementation.±The {0} definitions in the signature and implementation are not compatible because the signature says this type may use nulls as a representation but the implementation does not¯The {0} definitions in the signature and implementation are not compatible because the signature says this type may use nulls as an extra value but the implementation does notsThe {0} definitions in the signature and implementation are not compatible because the types are of different kinds‡The {0} definitions in the signature and implementation are not compatible because a type representation is being hidden by a signaturevThe {0} definitions in the signature and implementation are not compatible because the types have different base types4Delegates are not allowed to have curried signatures(description unavailable...))The documentation file has no .xml suffixmThe treatment of this operator is now handled directly by the F# compiler and its meaning cannot be redefined$System.Environment.Exit did not exit Erased toCNamed static arguments must come after all unnamed static argumentsËA direct reference to the generated type '{0}' is not permitted. Instead, use a type definition, e.g. 'type TypeAlias = '. This indicates that a type provider adds generated types to your assembly.XEmpty namespace found from the type provider '{0}'. Use 'null' for the global namespace.`Type '{0}' from type provider '{1}' has an empty namespace. Use 'null' for the global namespace.§The provider '{0}' returned a non-generated type '{1}' in the context of a set of generated types. Consider adjusting the type provider to only return generated types.AAn error occured applying the static arguments to a provided typeCEvent '{0}' on provided type '{1}' has no value from GetAddMethod()FEvent '{0}' on provided type '{1}' has no value from GetRemoveMethod()kReferenced assembly '{0}' has assembly level attribute '{1}' but no public type provider classes were found?Character '{0}' is not allowed in provided namespace name '{1}':Character '{0}' is not allowed in provided type name '{1}'QThe type provider '{0}' used an invalid parameter in the ParameterExpression: {1}wThe type provider '{0}' provided a constructor which is not reported among the constructors of its declaring type '{1}'™The type provider '{0}' provided a method with a name '{1}' and metadata token '{2}', which is not reported among its methods of its declaring type '{3}'MInvalid static argument to provided type. Expected an argument of kind '{0}'.vAssembly '{0}' hase TypeProviderAssembly attribute with invalid value '{1}'. The value should be a valid assembly name|Invalid member '{0}' on provided type '{1}'. Provided type members must be public, and not be generic, virtual, or abstract.0Multiple static parameters exist with name '{0}'MProvided type '{0}' has 'IsArray' as true, but array types are not supported.UProvided type '{0}' has 'IsGenericType' as true, but generic types are not supported.HNested provided types do not take static arguments or generic parameters*No static parameter exists with name '{0}'.The provided type '{0}' returned a null memberAThe provided type '{0}' member info '{1}' has null declaring typeThe provided type '{0}' has member '{1}' which has declaring type '{2}'. Expected declaring type to be the same as provided type.JThe provided type '{0}' returned a member with a null or empty member name'.jToo many static parameters. Expected at most {0} parameters, but got {1} unnamed and {2} named parameters.:The type provider constructor has thrown an exception: {0}ÊType provider assembly '{0}' is not trusted and will not be loaded for security reasons. This may cause subsequent build errors. See the 'F# Tools' section of Visual Studio options for more information.OUnexpected exception from member '{0}' of provided type '{1}' member '{2}': {3}?Unexpected exception from provided type '{0}' member '{1}': {2}DUnexpected 'null' return value from provided type '{0}' member '{1}'VUnknown static argument kind '{0}' when resolving a reference to a provided type '{1}'Unsupported constant type '{0}'bInvalid member '{0}' on provided type '{1}'. Only properties, methods and constructors are allowedŸUnsupported expression '{0}' from type provider. If you are the author of this type provider, consider adjusting it to provide a different provided expression.°The event '{0}' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit {1} and {2} methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'.ÄThe exception definitions are not compatible because the exception abbreviation is being hidden by the signature. The abbreviation must be visible to other CLI languages. Consider making the abbreviation visible in the signature. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.²The exception definitions are not compatible because the CLI representations differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}¶The exception definitions are not compatible because the exception declarations differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.ßThe exception definitions are not compatible because the field '{0}' was present in the implementation but not in the signature. The module contains the exception definition\n {1} \nbut its signature specifies\n\t{2}.îThe exception definitions are not compatible because the field '{0}' was required by the signature but was not specified by the implementation. The module contains the exception definition\n {1} \nbut its signature specifies\n\t{2}.ÝThe exception definitions are not compatible because the order of the fields is different in the signature and implementation. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.‚The exception definitions are not compatible because a CLI exception mapping is being hidden by a signature. The exception mapping must be visible to other modules. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}ÛThe exception definitions are not compatible because the exception abbreviations in the signature and implementation differ. The module contains the exception definition\n {0} \nbut its signature specifies\n\t{1}.This construct is experimentalQThe record, struct or class field '{0}' is not accessible from this code location´The module contains the field\n {0} \nbut its signature specifies\n {1} \nthe accessibility specified in the signature is more than that specified in the implementationtThe module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'literal' modifiers differtThe module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'mutable' modifiers differfThe module contains the field\n {0} \nbut its signature specifies\n {1} \nThe names differsThe module contains the field\n {0} \nbut its signature specifies\n {1} \nThe 'static' modifiers differfThe module contains the field\n {0} \nbut its signature specifies\n {1} \nThe types differ¯Bad format specifier (after l or L): Expected ld,li,lo,lu,lx or lX. In F# code you can use %d, %x, %o or %u instead, which are overloaded to work with all basic integer types.Bad format specifier: '{0}'!Bad precision in format specifierBad width in format specifier('{0}' does not support prefix '{1}' flag&'{0}' format does not support '0' flag'{0}' flag set twice''{0}' format does not support precision*The # formatting modifier is invalid in F#™The 'h' or 'H' in this format specifier is unnecessary. You can use %d, %x, %o or %u instead, which are overloaded to work with all basic integer types..£The 'l' or 'L' in this format specifier is unnecessary. In F# code you can use %d, %x, %o or %u instead, which are overloaded to work with all basic integer types.Missing format specifier9Positional specifiers are not permitted in format stringsPrecision missing after the '.'"Prefix flag (' ' or '+') set twice•Error emitting 'System.Reflection.AssemblyCultureAttribute' attribute -- 'Executables cannot be satellite assemblies, Culture should always be empty'ÑAssembly '{0}' not found in dependency set of target binary. Statically linked roots should be specified using an assembly name, without a DLL or EXE extension. If this assembly was referenced explicitly then it is possible the assembly was not actually required by the generated binary, in which case it should not be statically linked.gThe 'AssemblyVersionAttribute' has been ignored because a version was given using a command line optionþAssembly '{0}' was referenced transitively and the assembly could not be resolved automatically. Static linking will assume this DLL has no dependencies on the F# library or other statically linked DLLs. Consider adding an explicit reference to this DLL.cAn AssemblyVersionAttribute specified version '{0}', but this value is invalid and has been ignored~Option '--delaysign' overrides attribute 'System.Reflection.AssemblyDelaySignAttribute' given in a source file or added moduleEIgnoring mixed managed/unmanaged assembly '{0}' during static linking&The key file '{0}' could not be openedzOption '--keyfile' overrides attribute 'System.Reflection.AssemblyKeyFileAttribute' given in a source file or added module|Option '--keycontainer' overrides attribute 'System.Reflection.AssemblyNameAttribute' given in a source file or added module!No implementation files specified0A problem occurred writing the binary '{0}': {1}‹The code in assembly '{0}' makes uses of quotation literals. Static linking may not include components that make use of quotation literals.†Code in this assembly makes uses of quotation literals. Static linking may not include components that make use of quotation literals.yThe assembly '{0}' is listed on the command line. Assemblies should be referenced using a command line flag such as '-r'.iThe resident compilation service was not used because a problem occured in communicating with the server.“Passing a .resx file ({0}) as a source file to the compiler is deprecated. Use resgen.exe to transform the .resx file into a .resources file to pass as a --resource option. If you are using MSBuild, this can be done via an item in the .fsproj project file.%Static linking may not include a .EXE.mdb. The --pdb option will be ignored.;MDB generation failed. Could not find compatible member {0}3Invalid argument to 'methodhandleof' during codegenDAn imported assembly uses the type '{0}' but that type is not public7Invalid value '{0}' for unit-of-measure parameter '{1}'-Invalid value unit-of-measure parameter '{0}'jInvalid number of generic arguments to type '{0}' in provided type. Expected '{1}' arguments, given '{2}'.aInternal error or badly formed metadata: not enough type parameters were in scope while importingkA reference to the type '{0}' in assembly '{1}' was found, but the type could not be found in that assembly‰A reference to the DLL {0} is required by assembly {1}. The imported type {2} is located in the first assembly and could not be resolved._The type '{0}' is required here and is unavailable. You must add a reference to assembly '{1}'.$Invalid provided literal value '{0}'#invalid full name for provided type#invalid namespace for provided typeeThe 'anycpu32bitpreferred' platform can only be used with EXE targets. You must use 'anycpu' instead.gThe 'anycpu32bitpreferred' platform flag may only be used with .NET Framework versions 4.5 and greater./Invalid recursive reference to an abstract slotOThis byte array literal contains characters that do not encode as a single byteV'{0}' is not permitted as a character in operator names and is reserved for future use+Expected single line comment or end of lineWThe indentation of this 'in' token is incorrect with respect to the corresponding 'let'The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation.¤Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions.K#else directive must appear as the first non-whitespace character on a line#else has no matching #ifL#endif directive must appear as the first non-whitespace character on a line#endif required for #else#endif has no matching #ifI#if directive must appear as the first non-whitespace character on a line=#if directive should be immediately followed by an identifier5The identifier '{0}' is reserved for future use by F#EIdentifiers containing '@' are reserved for use in F# code generation9Identifiers followed by '{0}' are reserved for future use[,[,public|private]] Ignore ML compatibility warnings(Name of the output file (Short form: -o)6Do not reference the default CLI assemblies by defaultNDon't add a resource to the generated assembly containing F#-specific metadata#Suppress compiler copyright message–Only include optimization information essential for implementing inlined constructs. Inhibits cross-module inlining but improves binary compatibility.!Disable specific warning messages)Do not include the default Win32 manifest%Enable optimizations (Short form: -O)Name the output debug filevLimit which platforms this code can run on: x86, Itanium, x64, anycpu32bitpreferred, or anycpu. The default is anycpu. Problem with codepage '{0}': {1}&Reference an assembly (Short form: -r)PUse a resident background compilation service to improve compiler startup times.$Embed the specified managed resourceShort form of '{0}'6Print the inferred interface of the assembly to a fileVResolve assembly references using directory-based rules rather than MSBuild resolutionjStatically link the F# library and all referenced DLLs that depend on it into the assembly being generated‰Statically link the given assembly and all referenced DLLs that depend on this assembly. Use an assembly name e.g. mylib, not a DLL name.#Specify a strong name key containerSpecify a strong name key file*Specify subsystem version of this assemblyEnable or disable tailcallsUnknown --test argument: '{0}'kUnrecognized platform '{0}', valid values are 'x86', 'x64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu';Unrecognized debug type '{0}', expected 'pdbonly' or 'full'JUnrecognized target '{0}', expected 'exe', 'winexe', 'library' or 'module'Enable high-entropy ASLR!Output messages in UTF-8 encodingSet a warning level (0-5)"Report specific warnings as errorsReport all warnings as errors3Enable specific warnings that may be off by defaultSpecify a Win32 manifest file$Specify a Win32 resource file (.res)2Write the xmldoc of the assembly to the given fileŠThe value '{0}' was marked inline but its implementation makes use of an internal or private function which is not sufficiently accessibleSThe value '{0}' was marked inline but was not bound in the optimization environment/A value marked as 'inline' could not be inlined2A value marked as 'inline' has an unexpected value}Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type.CActive pattern case identifiers must begin with an uppercase letter$All enum fields must be given valuesÔThe use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions.M'assert' may not be used as a first class value. Use 'assert ' instead.hCannot find code target for this attribute, possibly because the code after the attribute is incomplete.9Attributes are not permitted on interface implementations.Attributes have been ignored in this constructAttributes are not allowed here6Attributes are not permitted on 'inherit' declarations(Attributes should be placed before 'val' in do '.'get' and/or 'set' required"'get', 'set' or 'get,set' required5A getter property may have at most one argument groupXA getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'Identifier expected*Ignoring attributes on module abbreviationaIgnoring accessibility attribute on module abbreviation. Module abbreviations are always private.^Ignoring visibility attribute on module abbreviation. Module abbreviations are always private.XNeither 'member val' nor 'override val' definitions are permitted in object expressions.`Incomplete conditional. Expected 'if then ' or 'if then else '.7An indexer property must be given at least one argumentÈ'inherit' declarations cannot have 'as' bindings. To access members of the base class when overriding a method, the syntax 'base.SomeMember' may be used; 'base' is a keyword. Remove this 'as' binding.GAccessibility modifiers are not permitted on inline assembly code types'in' or '=' expected0An integer for loop must use a simple identifier@Interfaces always have the same visibility as the enclosing typeInvalid declaration syntaxInvalid literal in typeInvalid prefix operator_Invalid operator definition. Prefix operator definitions must use a valid prefix operator name.!Invalid property getter or setter…The declaration form 'let ... and ...' for non-recursive bindings is not used in F# code. Consider using a sequence of 'let' bindings8This member is not permitted in an object implementation8Mismatched quotation operator name, beginning with '{0}'*Mismatched quotation, beginning with '{0}'Missing function body#Unmatched '<'. Expected closing '>'Missing qualification after '.')Expected type argument or static argument7A module abbreviation must be a simple name, not a path/A module name must be a simple name, not a pathdThe syntax '(typ,...,typ) ident' is not used in F# code. Consider using 'ident' instead\", not \"C <'T>\"qType parameters must be placed directly adjacent to the type name, e.g. \"type C<'T>\", not type \"C <'T>\"ˆThe use of the type syntax 'int C' and 'C ' is not permitted here. Consider adjusting this type to be written in the form 'C')Only class types may take value argumentsQOnly '#' compiler directives may occur prior to the first 'namespace' declaration,At most one 'with' augmentation is permittedtIn F# code you may use 'expr.[expr]'. A type annotation may be required to indicate the first expression is an array§Accessibility modifiers are not permitted on record fields. Use 'type R = internal ...' or 'type R = private ...' to give an accessibility to the whole representation.oProperty setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '6A setter property may have at most two argument groupsSuccessive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized;Successive patterns should be separated by spaces or tupled Syntax error&Syntax error in labelled type argumentgThe syntax 'module ... : sig .. end' is not used in F# code. Consider using 'module ... = begin .. end'jThe syntax 'module ... = struct .. end' is not used in F# code. Consider using 'module ... = begin .. end'QAccessibility modifiers are not permitted in this position for type abbreviations~Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'Type name cannot be empty.Unclosed block '_' cannot be used as field name%Unexpected empty type moduleDefn listUnexpected end of input?Unexpected end of input in value, function or member definitionŒUnexpected end of input in 'else' branch of conditional expression. Expected 'if then ' or 'if then else '.%Unexpected end of input in expressionVUnexpected end of input in 'for' expression. Expected 'for in do '._Unexpected end of input in body of lambda expression. Expected 'fun ... -> '.tUnexpected end of input in 'match' expression. Expected 'match with | -> | -> ...'.)Unexpected end of input in object membersŒUnexpected end of input in 'then' branch of conditional expression. Expected 'if then ' or 'if then else '.oUnexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '.)Unexpected end of input in type arguments*Unexpected end of input in type definition)Unexpected end of input in type signatureQUnexpected end of input in 'while' expression. Expected 'while do '.6Unexpected end of input in 'match' or 'try' expressionUnexpected identifier: '{0}',Unexpected infix operator in type expression8Unexpected integer literal in unit-of-measure expression^Unexpected infix operator in unit-of-measure expression. Legal operators are '*', '/' and '^'.·Unexpected quotation operator '<@' in type definition. If you intend to pass a verbatim string as a static argument to a type provider, put a space between the '<' and '@' characters.)A semicolon is not expected at this point5Syntax error: unexpected type parameter specification.Accessibility modifiers are not permitted here/Unexpected token '{0}' or incomplete expression¥Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation.Unmatched '{0}'Unmatched 'begin'Unmatched 'begin' or 'struct'Unmatched '{{' Unmatched '['Unmatched '[|'*Unmatched 'class', 'interface' or 'struct'%Unmatched '[<'. Expected closing '>]'šIncomplete value or function definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let' keyword.Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let!' keyword. Unmatched '('ŽIncomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use' keyword.Incomplete value definition. If this is in an expression, the body of the expression must be indented to the same column as the 'use!' keyword.0Unmatched 'with' or badly formatted 'with' block8'use' bindings are not permitted in primary constructorsM'use' bindings are not permitted in modules and are treated as 'let' bindingsZAccessibility modifiers should come immediately prior to the identifier naming a constructFAccessibility modifiers are not permitted on an 'inherits' declarationFMissing 'do' in 'while' expression. Expected 'while do '.Missing variable '{0}'4Partial active patterns may only generate one result8Problem with filename '{0}': Illegal characters in path.ŽError reading/writing metadata for the F# compiled DLL '{0}'. Was the DLL compiled with an earlier version of the F# compiler? (error: '{1}').'Recursive class hierarchy in type '{0}'IThe struct or class field '{0}' is not accessible from this code location7Active patterns cannot return more than 7 possibilitiesaA module and a type definition named '{0}' occur in namespace '{1}' in two parts of this assembly8This constant cannot be used as a custom attribute valueWTwo type definitions named '{0}' occur in namespace '{1}' in two parts of this assembly¶This operation accesses a mutable top-level value defined in another assembly in an unsupported way. The value cannot be accessed through its address. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...', and if necessary assigning the value back after the completion of the operationjInvalid form for a property getter. At least one '()' argument is required when using the explicit syntax.FInvalid form for a property setter. At least one argument is required.@Invalid member signature encountered because of an earlier errorzInvalid mutation of a constant expression. Consider copying the expression to a mutable local, e.g. 'let mutable x = ...'.MA namespace and a module named '{0}' both occur in two parts of this assemblyAThis is not a constant expression or valid custom attribute value%F# supports a maximum array rank of 4¼Recursive values cannot appear directly as a construction of the type '{0}' within a recursive binding. This feature has been removed from the F# language. Consider using a record instead.¡Recursive values cannot be directly assigned to the non-mutable field '{0}' of the type '{1}' within a recursive binding. Consider using a mutable field instead.yRecursively defined values cannot appear directly as part of the construction of a tuple value within a recursive binding;Two modules named '{0}' occur in two parts of this assembly9The type '{0}' has an inline assembly code representation6The type/module '{0}' is not a concrete module or typeaThe module/namespace '{0}' from compilation unit '{1}' did not contain the module/namespace '{2}'jThe module/namespace '{0}' from compilation unit '{1}' did not contain the namespace, module or type '{2}'TThe module/namespace '{0}' from compilation unit '{1}' did not contain the val '{2}',The type {0} did not contain the field '{1}'1The type {0} did not contain the union case '{1}'(Unexpected use of a byref-typed variable&Unexpected decode of AutoOpenAttribute2Unexpected decode of InterfaceDataVersionAttribute0Unexpected decode of InternalsVisibleToAttribute5This value does not have a valid property setter typeQThe value has been copied to ensure the original is not mutated by this operationwA value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'8Abbreviated types cannot be given the 'Sealed' attributeAnonymous type variables are not permitted in this declarationTAnonymous unit-of-measure cannot be nested inside another unit-of-measure expression\The member '{0}' does not accept the correct number of arguments, {1} arguments are expectedeThe member '{0}' does not accept the correct number of arguments. One overload accepts {1} arguments.SAt least one override did not correctly implement its corresponding abstract memberºThe attribute '{0}' appears in both the implementation and the signature, but the attribute arguments differ. Only the attribute from the signature will be included in the compiled code.ŠThe attribute 'AutoOpen(\"{0}\")' in the assembly '{1}' did not refer to a valid module or namespace in that assembly and has been ignored:Attribute expressions must be calls to object constructors new Type(arg1,...,argN))'.;Constructors cannot be specified in exception augmentations,Constructors cannot be defined for this type>This construct may only be used within computation expressions™This construct may only be used within computation expressions. To return a value from an ordinary function simply write the expression without 'return'.ßThis construct may only be used within list, array and sequence expressions, e.g. expressions of the form 'seq {{ ... }}', '[ ... ]' or '[| ... |]'. These use the syntax 'for ... in ... do ... yield...' to generate elementsJThis construct may only be used within sequence or computation expressions:Couldn't find Dispose on IDisposable, or it was overloadedrThe number of args for a custom attribute does not match the expected number of args for the attribute constructor+A custom attribute must be a reference type4A custom attribute must invoke an object constructor¡'{0}' is used with an incorrect number of arguments. This is a custom operation in this query or computation expression. Expected {1} argument(s), but given {2}._The definition of the custom operator '{0}' does not use a valid combination of attribute flags‚The custom operation '{0}' refers to a method which is overloaded. The implementations of custom operations may not be overloaded.ŸA custom operation may not be used in conjunction with 'use', 'try/with', 'try/finally', 'if/then/else' or 'match' operators within this computation expressionŒA custom operation may not be used in conjunction with a non-value or recursive 'let' binding in another part of this computation expression`'{0}' is not used correctly. This is a custom operation in this query or computation expression.l'{0}' is not used correctly. Usage: {1}. This is a custom operation in this query or computation expression. typ' for multi-argument delegates, and 'typ -> (typ -> typ)' for delegates returning function values.XDLLImport bindings must be static members in a class or function definitions in a module!DLLImport stubs cannot be inlined0'do!' cannot be used within sequence expressions…The method or function '{0}' should not be given explicit type argument(s) because it does not declare its type parameters explicitly'Duplicate specification of an interfaceCCopy-and-update record expressions must include at least one field.“'{{ }}' is not a valid expression. Records must include at least one field. Empty sequences are specified by using Seq.empty or an empty list '[]'.WThe 'EntryPointAttribute' attribute may only be used on function definitions in modules/Enumerations cannot have interface declarations Enumerations cannot have membersƒThe type '{0}' is not a valid enumerator type , i.e. does not have a 'MoveNext()' method returning a bool, and a 'Current' propertyEvent '{0}' is not staticEvent '{0}' is staticdException abbreviations must refer to existing exceptions or F# types deriving from System.Exception6Exception abbreviations should not have argument listsExpected an interface type"Expected type, not unit-of-measure6Expected type parameter, not unit-of-measure parameterŠExpected unit-of-measure parameter, not type parameter. Explicit unit-of-measure parameters must be marked with the [] attribute."Expected unit-of-measure, not type'Expected module or namespace parent {0}GAn explicit object constructor should use the syntax 'new(args) = expr'NAn explicit static initializer should use the syntax 'static new(args) = expr'FExplicit type parameters may only be used on module or member bindingsFExplicit type specifications cannot be used for exception constructors!Expected {0} expressions, got {1}_The expression form 'expr then expr' may only be used as part of an explicit object constructor‚The expression form {{ expr with ... }} may only be used with record types. To build object types use {{ new Type(...) with ... }}MThis expression form may only be used in sequence and computation expressions÷This list or array expression includes an element of the form 'if ... then ... else'. Parenthesize this expression to indicate it is an individual element of the list or array, to disambiguate this from a list generated using a sequence expressionTcExprUndelayed: delayed(Extraneous fields have been given valuesBThe field '{0}' appears twice in this record expression or patternThis field is not mutableField '{0}' is not staticThis field is readonly;This field is not a literal and cannot be used in a pattern1No assignment given for field '{0}' of type '{1}'This field requires a name}The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type-A field/val declaration is not permitted here1The corresponding formal argument is not optionalAll record, union and struct types in FSharp.Core.dll must be explicitly labelled with 'StructuralComparison' or 'NoComparison'ªThis function value is being used to construct a delegate type whose signature includes a byref argument. You must use an explicit lambda expression taking {0} arguments.BThe generic function '{0}' must be given explicit type argument(s)ÞThe provided types generated by this use of a type provider may not be used from other F# assemblies and should be marked internal or private. Consider using 'type internal TypeName = ...' or 'type private TypeName = ...'.UA generic type parameter has been used in a way that constrains it to always be '{0}':Generic types cannot be given the 'StructLayout' attributeÀIt is recommended that objects that support the IDisposable interface are created using 'new Type(args)' rather than 'Type(args)' to indicate that resources may be owned by the generated value¼An if/then/else expression may not be used within a computation expression with uses of custom operators. Consider using either an if/then expression, or use a sequence expression instead.TA literal value cannot be given the [] or [] attributes†Explicit type declarations for constructors must be of the form 'ty1 * ... * tyN -> resTy'. Parentheses may be required around 'resTy'Illegal pattern!Illegal syntax in type expression…The struct, record or union type '{0}' implements the interface 'System.IComparable<_>' explicitly. You must apply the 'CustomComparison' attribute to the type, and should also provide a consistent implementation of the non-generic interface System.IComparable.The struct, record or union type '{0}' implements the interface 'System.IComparable' explicitly. You must apply the 'CustomComparison' attribute to the type.ôThe struct, record or union type '{0}' implements the interface 'System.IEquatable<_>' explicitly. Apply the 'CustomEquality' attribute to the type and provide a consistent implementation of the non-generic override 'System.Object.Equals(obj)'.žThe struct, record or union type '{0}' implements the interface 'System.IStructuralComparable' explicitly. Apply the 'CustomComparison' attribute to the type.›The struct, record or union type '{0}' implements the interface 'System.IStructuralEquatable' explicitly. Apply the 'CustomEquality' attribute to the type.(Implicit product of measures following /°The function or member '{0}' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is '{1}'.'inherit' cannot be used on interface types. Consider implementing the interface by using 'interface ... with ... end' instead.¨This 'inherit' declaration has arguments, but is not in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'.†This 'inherit' declaration specifies the inherited type but no arguments. Consider supplying arguments, e.g. 'inherit BaseType(args)'..The inherited type is not an object model type/A inheritance declaration is not permitted here—This instance member needs a parameter to represent the object being invoked. Make the member static or use the notation 'member x.Member(args) = ...'.jInterfaces inherited by other interfaces should be declared using 'inherit ...' instead of 'interface ...'8Interface types and delegate types cannot contain fields Interface types cannot be sealedDA use of 'into' must be followed by the remainder of the computation.This is not a valid name for an active pattern/Invalid argument to parameterized pattern labelInvalid assignment'This is not a valid constant expressionInvalid constraintŠInvalid constraint: the type used for the constraint is sealed, which means the constraint could only be satisfied by at most one solutionInvalid declaration8Delegate specifications must be of the form 'typ -> typ'5An 'enum' constraint must be of the form 'enum'4This is not a valid value for an enumeration literalInvalid indexer expression7Internal error. Invalid index into active pattern arrayPThe '{0}' operator cannot be redefined. Consider using a different operator nameInvalid inline specification“The name '({0})' should not be used as a member name. If defining a static member for use from other CLI languages then use the name '{1}' instead.BInvalid member name. Members may not have name '.ctor' or '.cctor'The name '({0})' should not be used as a member name because it is given a standard definition in the F# library over fixed typesáThe name '({0})' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name '{1}' instead.ìThe name '({0})' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name '{1}' instead.AThis recursive binding uses an invalid mixture of recursive formsInvalid module name2Invalid namespace, module, type or union case nameW'new' constraints must take one argument of type 'unit' and return the constructed typeNon-primitive numeric literal constants cannot be used in pattern matches because they can be mapped to multiple different types through the use of a NumericLiteral module. Consider using replacing with a variable, and use 'when = ' at the end of the match clause.ÒThis is not a valid object construction expression. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor.‚Invalid object expression. Objects without overrides or interfaces should use the expression form 'new Type(args)' without braces.-Invalid object, sequence or record expression]The '{0}' operator should not normally be redefined. Consider using a different operator name¡The '{0}' operator should not normally be redefined. To define equality semantics for a type, override the 'Object.Equals' member in the definition of that type.ÂThe '{0}' operator should not normally be redefined. To define overloaded comparison semantics for a particular type, implement the 'System.IComparable' interface in the definition of that type.2Invalid optional assignment to a property or fieldThis is not a valid patternÎThis property has an invalid type. Properties taking multiple indexer arguments should have types of the form 'ty1 * ty2 -> ty3'. Properties returning functions should have types of the form '(ty1 -> ty2)'.Invalid record constructionZInvalid join relation in '{0}'. Expected 'expr expr', where is =, =?, ?= or ?=?.nInvalid record, sequence or computation expression. Sequence expressions should be of the form 'seq {{ ... }}' Invalid signature for set member|The number of type arguments did not match: '{0}' given, '{1}' expected. This may be related to a previously reported error.'Type arguments cannot be specified hereInvalid type extension`Literal enumerations must have type int, uint, int16, uint16, int64, uint64, byte, sbyte or charSUnits-of-measure supported only on float, float32, decimal and signed integer typesnUnits-of-measure cannot be used as prefix arguments to a type. Rewrite as postfix arguments in angle brackets.9'use!' bindings must be of the form 'use! = '7'use' bindings must be of the form 'use = '†The 'UseNullAsTrueValue' attribute flag may only be used with union types that have one nullary case and at least one non-nullary case\Invalid use of a delegate constructor. Use the syntax 'new Type(args)' or just 'Type(args)'. Invalid use of an interface typeInvalid use of a type nameInvalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'.²Invalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'. The required signature is:\n\t{0}.+In queries, '{0}' must use a simple patternbThe kind of the type specified by its attributes does not match the kind implied by its definitionThis code is less generic than required by its annotations because the explicit type variable '{0}' could not be generalized. It was constrained to be '{1}'.”This definition may only be used in a type with a primary constructor. Consider adding arguments to your type definition, e.g. 'type X(args) = ...'.xThis list expression exceeds the maximum size for list literals. Use an array for larger literals and call Array.ToList.mA declaration may only be the [] attribute if a constant value is also given, e.g. 'val x : int = 1')A literal value cannot be marked 'inline'*A literal value cannot be marked 'mutable'-Literal values cannot have generic parameters€Local class bindings cannot be marked inline. Consider lifting the definition out of the class or else do not mark it as inline.This lookup cannot be used here.'match' expressions may not be used in queries1Measure declarations may have only static membersQMeasure declarations may have only static members: constructors are not available/Measure definitions cannot have type parameters;A member and a local class binding both have the name '{0}''This member is not sufficiently generic6MemberKind.PropertyGetSet only expected in parse trees;This member is not permitted in an interface implementation|Extension members cannot provide operator overloads. Consider defining the operator as part of the type definition instead.9Interfaces cannot contain definitions of member overridesþMembers that extend interface, delegate or enum types must be placed in a module separate to the definition of the type. This module must either have the AutoOpen attribute or be opened explicitly by client code to bring the extension members into scope.•The member '{0}' is used in an invalid way. A use of '{1}' has been inferred prior to the definition of '{2}', which is an invalid forward reference.6Method '{0}' is not accessible from this code locationEMethod overrides and interface implementations are not permitted here@A custom query operation for '{0}' is required but not specifiedTThe path '{0}' is a namespace. A module abbreviation may not abbreviate a namespace.¦This declaration opens the module '{0}', which is marked as 'RequireQualifiedAccess'. Adjust your code to use qualified references to the elements of the module instead, e.g. 'List.map' instead of 'map'. This change will ensure that your code is robust as new constructs are added to libraries.FMultiple visibility attributes have been specified for this identifier£Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions.(Mutable values cannot be marked 'inline'-Mutable values cannot have generic parametersMMutable function values should be written 'let mutable f = (fun args -> ...)'5Named arguments must appear after all other argumentsGThe named argument '{0}' did not match any argument or mutable property5Named arguments cannot be given to member trait calls…The use of named arguments in union case expressions is reserved for future use. Arguments of the form 'a=b' should be parenthesized.''{0}' may only be used with named types'Name '{0}' not bound in pattern context¯Namespaces cannot contain extension members except in the same file and namespace where the type is defined. Consider using a module to hold declarations of extension members.ZNamespaces cannot contain values. Consider using a module to hold your value declarations.n'new' cannot be used on interface types. Consider using an object expression '{{ new ... with ... }}' instead.]This new member hides the abstract member '{0}'. Rename the member or use 'override' instead.§This new member hides the abstract member '{0}' once tuples, functions, units of measure and/or provided types are erased. Rename the member or use 'override' instead.$'new' must be used with a named type/'new' may only be used with object constructorsiThe member '{0}' does not correspond to any abstract or virtual method available to override or implement:No arguments may be given when constructing a record valueüThe struct, record or union type '{0}' is not structurally comparable because the type parameter {1} does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '{2}' to clarify that the type is not comparableôThe struct, record or union type '{0}' is not structurally comparable because the type '{1}' does not satisfy the 'comparison' constraint. Consider adding the 'NoComparison' attribute to the type '{2}' to clarify that the type is not comparable‘The struct, record or union type '{0}' does not support structural equality because the type parameter {1} does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '{2}' to clarify that the type does not support structural equality‰The struct, record or union type '{0}' does not support structural equality because the type '{1}' does not satisfy the 'equality' constraint. Consider adding the 'NoEquality' attribute to the type '{2}' to clarify that the type does not support structural equalityKIn queries, use the form 'for x in n .. m do ...' for ranging over integersEInterface implementations cannot be given on construction expressionsKNo abstract or interface member was found that corresponds to this override;This value is not a literal and cannot be used in a patterngThis 'let' definition may not be used in a query. Only simple value definitions may be used in queries.»The generic member '{0}' has been used at a non-uniform instantiation prior to this program point. Consider reordering the members so this member occurs first. Alternatively, specify the full type of the member explicitly, including argument types, return type and any additional generic parameters and constraints.MNon-zero constants cannot have generic units. For generic zero, write 0.0<_>.@No abstract property was found that corresponds to this overrideNot an exception4'try/finally' expressions may not be used in queriesxThis code is not sufficiently generic. The type variable {0} could not be generalized because it would escape its scope.0This is not a valid name for an enumeration case.'while' expressions may not be used in queries‡This numeric literal requires that a module '{0}' defining functions FromZero, FromOne, FromInt32, FromInt64 and FromString be in scopeYObject construction expressions may only be used to implement constructors in class typesûObject construction expressions (i.e. record expressions with inheritance specifications) may only be used to implement constructors in object model types. Use 'new ObjectType(args)' to construct instances of object model types outside of constructors*An object constructor requires an argument'. When used, a byref parameter is implicitly dereferenced.WA parameter with attributes must also be given a name, e.g. '[] Name : Type'¢The types System.ValueType, System.Enum, System.Delegate, System.MulticastDelegate and System.Array cannot be used as super types in an object expression or class2This property already has a default implementationThis property cannot be setProperty '{0}' cannot be set5The property implemented by this default is ambiguousProperty '{0}' is not readableProperty '{0}' is not staticProperty '{0}' is staticBThis property or field was not found on this custom attribute typeQA property cannot have explicit type parameters. Consider using a method instead.3This record contains fields from inconsistent types[Records, union, abbreviations and struct types cannot have the 'AllowNullLiteral' attributegRecursive bindings that include member specifications can only occur as a direct augmentation of a typeµThe representation of this type is hidden by the signature. It must be given an attribute such as [], [] or [] to indicate the characteristics of the type.FOnly active patterns returning exactly one result may accept argumentsdThis control construct may only be used if the computation expression builder defines a '{0}' method>This is not a variable, constant, active recognizer or literal‰The syntax 'type X with ...' is reserved for augmentations. Types whose representations are hidden but which have members are now declared in signatures using 'type X = ...'. You may also need to add the '[] attribute to the type definition in the signature1'return' and 'return!' may not be used in queries\Return types of union cases must be identical to the type being defined, up to abbreviationsReturn values cannot have namesÝArray method '{0}' is supplied by the runtime and cannot be directly used in code. For operations with array elements consider using family of GetArray/SetArray functions from LanguagePrimitives.IntrinsicFunctions module.]' attribute. They are initialized to the 'null' or 'zero' value for their type. Consider also using a 'static let mutable' binding in a class type.§Structs cannot have an object constructor with no arguments. This is a restriction imposed on all CLI languages as structs automatically support a default constructor.?Structs may only bind a 'this' parameter at member declarationsHStructs, interfaces, enums and delegates cannot inherit from other typesqStructs cannot contain 'do' bindings because the default constructor for structs would not execute these bindingsÃStructs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type.¬Each argument of the primary constructor for a struct must be given a type, for example 'type S(x1:int, x2: int) = ...'. These arguments determine the fields of the struct.,Struct types cannot contain abstract membersÜThe struct, record or union type '{0}' has the 'StructuralComparison' attribute but the type parameter '{1}' does not satisfy the 'comparison' constraint. Consider adding the 'comparison' constraint to the type parameter™The struct, record or union type '{0}' has the 'StructuralComparison' attribute but the component type '{1}' does not satisfy the 'comparison' constraintÖThe struct, record or union type '{0}' has the 'StructuralEquality' attribute but the type parameter '{1}' does not satisfy the 'equality' constraint. Consider adding the 'equality' constraint to the type parameter•The struct, record or union type '{0}' has the 'StructuralEquality' attribute but the component type '{1}' does not satisfy the 'equality' constraint0'{0}' may only be used to construct object types$Syntax error - unexpected '?' symbolOThe syntax 'expr.id' may only be used with record labels, properties and fieldshThis type definition may not have the 'CLIMutable' attribute. Only record types may have this attribute.GThis member, function or value declaration may not be declared 'inline'´Thread-static and context-static variables must be static and given the [] attribute to indicate that the value is initialized to the default value on each new threadRInvalid provided field. Provided fields of erased provided types must be literals.–A try/finally expression may not be used within a computation expression with uses of custom operators. Consider using a sequence expression instead.7'try'/'with' cannot be used within sequence expressions1'try/with' expressions may not be used in queries›A try/with expression may not be used within a within a computation expression with uses of custom operators. Consider using a sequence expression instead.ÚThis type abbreviation has one or more declared type parameters that do not appear in the type being abbreviated. Type abbreviations must use all declared type parameters in the type being abbreviated. Consider removing one or more type parameters, or use a concrete type definition that wraps an underlying type, such as 'type C<'a> = C of ...'.,Type abbreviations cannot have augmentations5Type abbreviations cannot have interface declarations&Type abbreviations cannot have members¿The type '{0}' is not a type whose values can be enumerated with this syntax, i.e. is not compatible with either seq<_>, IEnumerable<_> or IEnumerable and does not have a GetEnumerator methodCThis downcast will erase the provided type '{0}' to the type '{1}'.SThis type definition involves an immediate cyclic reference through an abbreviationjThis type definition involves an immediate cyclic reference through a struct field or inheritance relation]'let' and 'do' bindings must come before member and interface definitions in type definitions_Type definitions may only have one 'inherit' specification and it must be the first declarationtype, exception or module/This type has no accessible object constructorsThis type has no nested types3This type is not accessible from this code locationThis type is not a record typetThis type is not a record type. Values of class and struct types must be created using calls to object constructors."This type is not an interface type'The type '{0}' is not an interface typetype or moduleJThis value, type or method expects {0} type parameter(s) but was given {1}PThis type parameter has been used in a way that constrains it to always be '{0}'1Type parameter cannot be used as type constructor€The type parameters inferred for this value are not stable under the erasure of type abbreviations. This is due to the use of type abbreviations which drop or reorder type parameters, e.g. \n\ttype taggedInt<'a> = int or\n\ttype swap<'a,'b> = 'b * 'a.\nConsider declaring the type parameters for this value explicitly, e.g.\n\tlet f<'a,'b> ((x,y) : swap<'b,'a>) : swap<'a,'b> = (y,x).This type requires a definition%Assembly code types are always sealed Delegate types are always sealed+Discriminated union types are always sealedEnum types are always sealedRecord types are always sealedStruct types are always sealed,Types cannot contain nested type definitions1Types cannot inherit from multiple concrete typeswThis type test with a provided type '{0}' is not allowed because this provided type will be erased to '{1}' at runtime.@This type test or downcast will ignore the unit-of-measure '{0}'OThis type test or downcast will erase the provided type '{0}' to the type '{1}'The type '{0}' is used in an invalid way. A value prior to '{1}' has an inferred type involving '{2}', which is an invalid forward reference.#Unable to parse format string '{0}'LThe field '{0}' has been given a value, but is not present in the type '{1}' Unexpected big rational constantTUnexpected condition in imported assembly: failed to decode AttributeUsage attributeUnexpected Const_bytearrayUnexpected Const_uint16array2Unexpected expression at recursive inference pointUnexpected SynMeasure.Anon=Unexpected source-level property specification in syntax tree.Unexpected source-level property specificationUnexpected / in type!Unexpected {0} in type expressionUnexpected type arguments•Uninitialized 'val' fields must be mutable and marked with the '[]' attribute. Consider using a 'let' binding instead of a 'val' field.'This union case does not take arguments4This union case expects {0} arguments in tupled formBThe union case named '{0}' conflicts with the generated type '{1}'"This union case takes one argument>Unit-of-measure cannot be used in type constructor applicationUnknown union casePThe unnamed arguments do not form a prefix of the arguments of the method called(Unrecognized accessibility specification¢Unrecognized attribute target. Valid attribute targets are 'assembly', 'module', 'type', 'method', 'property', 'return', 'param', 'field', 'event', 'constructor'.gArguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)'ùThis is not a known query operator. Query operators are identifiers such as 'select', 'where', 'sortBy', 'thenBy', 'groupBy', 'groupValBy', 'join', 'groupJoin', 'sumBy' and 'averageBy', defined using corresponding methods on the 'QueryBuilder' type.3This attribute cannot be used in this version of F#aThe use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead.,'use' expressions may not be used in queries_Character range matches have been removed in F#. Consider using a 'when' pattern guard instead.FIn sequence expressions, multiple results are generated using 'yield!'gA declaration may only be given a value in a signature if the declaration has the [] attributeDVolatile fields must be marked 'mutable' and cannot be thread-staticKThe 'VolatileField' attribute may only be used on 'let' bindings in classesÂNote: Lambda-lifting optimizations have not been applied because of the use of this local constrained generic function as a first class value. Adding type constraints may resolve this condition.Unexpected Expr.TyChooseactive pattern resultactive recognizerargumentCallscustom operationeventfieldfrom {0} also from {0} Full namegenerated propertygenerated type implementsinheritsmodule namespacenamespace/moduleand {0} other overloadspatvarpropertytype union case8The type '{0}' is not accessible from this code locationwCould not resolve the ambiguity in the use of a generic construct with a 'delegate' constraint at or near this positiontCould not resolve the ambiguity in the use of a generic construct with an 'enum' constraint at or near this position¢Could not resolve the ambiguity inherent in the use of the operator '{0}' at or near this program point. Consider using type annotations to resolve the ambiguity.UCould not resolve the ambiguity inherent in the use of a 'printf'-style format stringyCould not resolve the ambiguity in the use of a generic construct with an 'unmanaged' constraint at or near this positionâThe implicit instantiation of a generic construct at or near this point could not be resolved because it could resolve to multiple unrelated types, e.g. '{0}' and '{1}'. Consider using type annotations to resolve the ambiguity Duplicate or redundant interfacežThe struct, record or union type '{0}' has an explicit implementation of 'Object.Equals'. Consider implementing a matching override for 'Object.GetHashCode()'¡The struct, record or union type '{0}' has an explicit implementation of 'Object.GetHashCode'. Consider implementing a matching override for 'Object.Equals(obj)'«The struct, record or union type '{0}' has an explicit implementation of 'Object.GetHashCode' or 'Object.Equals'. You must apply the 'CustomEquality' attribute to the type Invalid valueTThe member '{0}' cannot be used to implement '{1}'. The required signature is '{2}'.hThe member '{0}' does not have the correct kinds of generic parameters. The required signature is '{1}'.`The member '{0}' does not have the correct number of arguments. The required signature is '{1}'.mThe member '{0}' does not have the correct number of method type parameters. The required signature is '{1}'.6This method is over-constrained in its type parameters3The method '{0}' is sealed and cannot be overriddenNThe namespace or module attributes differ between signature and implementation'More than one override implements '{0}'6A named argument has been assigned more than one value…The interface '{0}' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface.%No implementation was given for '{0}'¹No implementation was given for '{0}'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.uNo implementations of '{0}' had the correct number of arguments and type parameters. The required signature is '{1}'.OThe override '{0}' implements more than one abstract slot, e.g. '{1}' and '{2}'$The override for '{0}' was ambiguous¶The signature and implementation are not compatible because the type parameter in the class/signature has a different compile-time requirement to the one in the member/implementationThe signature and implementation are not compatible because the declaration of the type parameter '{0}' requires a constraint of the form {1}èThe signature and implementation are not compatible because the type parameter '{0}' has a constraint of the form {1} but the implementation does not. Either remove this constraint from the signature or add it to the implementation.gThe signature and implementation are not compatible because the respective type parameter counts differŸThe type '{0}' implements 'System.IComparable' explicitly but provides no corresponding override for 'Object.Equals'. An implementation of 'Object.Equals' has been automatically provided, implemented via 'System.IComparable'. Consider implementing the override 'Object.Equals' explicitlymThe type '{0}' implements 'System.IComparable'. Consider also adding an explicit override for 'Object.Equals'9The constructor, module or namespace '{0}' is not defined5The field, constructor or member '{0}' is not defined"The namespace '{0}' is not defined,The namespace or module '{0}' is not defined.The pattern discriminator '{0}' is not defined%The record label '{0}' is not defined2The record label or namespace '{0}' is not definedThe type '{0}' is not defined'The type parameter '{0}' is not defined>The value, constructor, namespace or type '{0}' is not defined9The value, namespace, type or module '{0}' is not defined-The value or constructor '{0}' is not defined>The union case '{0}' is not accessible from this code locationVThe union cases or fields of the type '{0}' are not accessible from this code location9The value '{0}' is not accessible from this code locationqModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is abstract and the other isn't¬Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe accessibility specified in the signature is more than that specified in the implementationôModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe arities in the signature and implementation differ. The signature specifies that '{3}' is function definition or lambda expression accepting at least {4} argument(s), but the implementation is a computed function value. To declare that a computed function value is a permitted implementation simply parenthesize its type in the signature, e.g.\n\tval {5}: int -> (int -> int)\ninstead of\n\tval {6}: int -> int -> int.vModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nAn arity was not inferred for this valuenModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe mutability attributes differgModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled names differfModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe display names differiModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe CLI member names differ}Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is an extension member and the other is notnModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is final and the other isn'tÐModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe generic parameters in the signature and implementation have different kinds. Perhaps there is a missing [] attribute.ÙModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe number of generic parameters in the signature and implementation differ (the signature declares {3} but the implementation declares {4}eModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe inline flags differàModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled representation of this method is as an instance member, but the signature indicates its compiled representation is as a static member‚Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe literal constant values and/or attributes differ^Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe names differ€Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is a constructor/property and the other is notÕModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is a type function and the other is not. The signature requires explicit type parameters if they are present in the implementation.~Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is marked as an override and the other isn'tyModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe respective type parameter counts differßModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe compiled representation of this method is as a static member but the signature indicates its compiled representation is as an instance memberoModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is static and the other isn't^Module '{0}' contains\n {1} \nbut its signature specifies\n {2} \nThe types differpModule '{0}' contains\n {1} \nbut its signature specifies\n {2} \nOne is virtual and the other isn't¸ FSharp.CoreFSharp.CompilermscorlibSystem„ˆ… ì¸’FSharp.CompilerW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../fsc.fsVizg/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../ReferenceResolution.fs.ctor MicrosoftFSharpCoreobj Visualizableoget_DataunitMake&M:Viz.Visualizable.Make(System.Object)T:Viz.VisualizableCompiler CompareToh/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/IncrementalBuild.fsiSeverityintSystem IComparable IComparable`1 Collections IComparerIStructuralComparable GetHashCodeIEqualityComparerIStructuralEquatableEqualsbool ErrorInfoCreateFromExceptionAndAdjustEofg/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/IncrementalBuild.fs ErrorLogger PhasedErrorRangerangeCreateFromException ErrorScopeget_ErrorsAndWarningslist`1ProtectastringProtectWithDefaultProtectAndDiscard\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tainted.fsi[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tainted.fsTypeProviderError€‘M:Microsoft.FSharp.Compiler.TypeProviderError.#ctor(System.Tuple{System.Int32,System.String},System.String,Microsoft.FSharp.Compiler.Range.range)seq`1€«M:Microsoft.FSharp.Compiler.TypeProviderError.#ctor(System.Int32,System.String,Microsoft.FSharp.Compiler.Range.range,System.Collections.Generic.IEnumerable{System.String}) get_Number get_Rangeget_ContextualErrorMessage WithContextVM:Microsoft.FSharp.Compiler.TypeProviderError.WithContext(System.String,System.String)MapText€ÃM:Microsoft.FSharp.Compiler.TypeProviderError.MapText(Microsoft.FSharp.Core.FSharpFunc{System.String,System.Tuple{System.Int32,System.String}},System.String,Microsoft.FSharp.Compiler.Range.range)Iter€œM:Microsoft.FSharp.Compiler.TypeProviderError.Iter(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.TypeProviderError,Microsoft.FSharp.Core.Unit}) CreateAllTCompilerServices ITypeProvider AbstractILIL ILScopeRef Tainted`1€ÏM:Microsoft.FSharp.Compiler.Tainted`1.CreateAll(Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Core.CompilerServices.ITypeProvider,Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef}})get_TypeProvider2P:Microsoft.FSharp.Compiler.Tainted`1.TypeProviderget_TypeProviderDesignation=P:Microsoft.FSharp.Compiler.Tainted`1.TypeProviderDesignationget_TypeProviderAssemblyRef=P:Microsoft.FSharp.Compiler.Tainted`1.TypeProviderAssemblyRefPApplyUM:Microsoft.FSharp.Compiler.Tainted`1.PApply``1(Microsoft.FSharp.Core.FSharpFunc{`0,``0},Microsoft.FSharp.Compiler.Range.range)PApply2U1U2€’M:Microsoft.FSharp.Compiler.Tainted`1.PApply2``2(Microsoft.FSharp.Core.FSharpFunc{`0,System.Tuple{``0,``1}},Microsoft.FSharp.Compiler.Range.range)PApply3U3€–M:Microsoft.FSharp.Compiler.Tainted`1.PApply3``3(Microsoft.FSharp.Core.FSharpFunc{`0,System.Tuple{``0,``1,``2}},Microsoft.FSharp.Compiler.Range.range)PApply4U4€šM:Microsoft.FSharp.Compiler.Tainted`1.PApply4``4(Microsoft.FSharp.Core.FSharpFunc{`0,System.Tuple{``0,``1,``2,``3}},Microsoft.FSharp.Compiler.Range.range)PApplyNoFailurefbM:Microsoft.FSharp.Compiler.Tainted`1.PApplyNoFailure``1(Microsoft.FSharp.Core.FSharpFunc{`0,``0})PApplyWithProvider€ÎM:Microsoft.FSharp.Compiler.Tainted`1.PApplyWithProvider``1(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{`0,Microsoft.FSharp.Core.CompilerServices.ITypeProvider},``0},Microsoft.FSharp.Compiler.Range.range) PApplyArray[]`1€”M:Microsoft.FSharp.Compiler.Tainted`1.PApplyArray``1(Microsoft.FSharp.Core.FSharpFunc{`0,``0[]},System.String,Microsoft.FSharp.Compiler.Range.range) PApplyOptionoption`1€©M:Microsoft.FSharp.Compiler.Tainted`1.PApplyOption``1(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpOption{``0}},Microsoft.FSharp.Compiler.Range.range)PUntaint€M:Microsoft.FSharp.Compiler.Tainted`1.PUntaint``1(Microsoft.FSharp.Core.FSharpFunc{`0,``0},Microsoft.FSharp.Compiler.Range.range)PUntaintNoFailuredM:Microsoft.FSharp.Compiler.Tainted`1.PUntaintNoFailure``1(Microsoft.FSharp.Core.FSharpFunc{`0,``0})OfType/M:Microsoft.FSharp.Compiler.Tainted`1.OfType``1CoerceVM:Microsoft.FSharp.Compiler.Tainted`1.Coerce``1(Microsoft.FSharp.Compiler.Range.range) UnicodeLexing[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../unilex.fsi)T:Microsoft.FSharp.Compiler.UnicodeLexingStringAsLexbufZ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../unilex.fsLexbufFunctionAsLexbufcharUnicodeFileAsLexbufInternal UtilitiesTextLexing LexBuffer`1Typrelns\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../typrelns.fs$T:Microsoft.FSharp.Compiler.Typrelns$TypeDefinitelySubsumesTypeNoCoercionEnv TcGlobalsImport ImportMapTastTTypendeepgamapmty1ty2 CanCoerce]/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/.libs/FSComp.fsothercomparerObject IEquatable`1TypesFeasiblyEquiv?unknown€äM:Microsoft.FSharp.Compiler.Typrelns.TypesFeasiblyEquiv``1(System.Int32,Microsoft.FSharp.Compiler.Env.TcGlobals,``0,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Tast.TType)TypeFeasiblySubsumesType canCoerce;M:Microsoft.FSharp.Compiler.Typrelns.TypeFeasiblySubsumesType(System.Int32,Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Typrelns.CanCoerce,Microsoft.FSharp.Compiler.Tast.TType)ChooseTyparSolutionAndRangeTypartp€¹M:Microsoft.FSharp.Compiler.Typrelns.ChooseTyparSolutionAndRange(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Tast.Typar)ChooseTyparSolution#IterativelySubstituteTyparSolutionsTyparsTTypesTypeInsttps solutions'ChooseTyparSolutionsForFreeChoiceTyparsExpretryDestTopLambda ValReprInfoValty€ýM:Microsoft.FSharp.Compiler.Typrelns.tryDestTopLambda(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Tast.ValReprInfo,Microsoft.FSharp.Compiler.Tast.Expr,Microsoft.FSharp.Compiler.Tast.TType) destTopLambda topValInfoIteratedAdjustArityOfLambdaBodyaritiesvslbodyIteratedAdjustArityOfLambda€ãM:Microsoft.FSharp.Compiler.Typrelns.IteratedAdjustArityOfLambda(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Tast.ValReprInfo,Microsoft.FSharp.Compiler.Tast.Expr)OverrideCanImplementget_IsFakeEventProperty OverrideInfoget_LogicalNameget_BoundingTyconRefTyconRefexnTypeIsImplicitlyAbstractget_Type CallerArg`1 CalledArg get_Position get_CalledArgAssignedCalledArg`1 get_IdentCallerNamedArg`1AstIdentget_Nameget_UnnamedCalledArgsCalledMethArgSet`1get_UnnamedCallerArgsget_ParamArrayCalledArgOptget_ParamArrayCallerArgsget_AssignedNamedArgsget_NumUnnamedCallerArgsget_NumAssignedNamedArgsget_NumUnnamedCalledArgs get_Method CalledMeth`1InfosMethInfo GetMethodxget_CalledTyArgsget_CallerTyArgsget_CallerObjArgTys get_ArgSetsget_NumArgSetsget_AssignedPropsAssignedItemSetter`1get_AssociatedPropertyInfoPropInfoget_UnassignedNamedArgsget_AttributeAssignedNamedArgsget_HasOptArgsget_HasOutArgsget_UsesParamArrayConversionParamArrayElementTypeget_NumAssignedPropsCalledObjArgTysget_NumCalledTyArgsget_NumCallerTyArgsget_AssignsAllNamedArgsget_HasCorrectArityget_HasCorrectGenericArity IsAccessibleAccessorDomainadHasCorrectObjArgs_ad IsCandidate_gget_AllUnnamedCalledArgsget_TotalNumUnnamedCalledArgsget_TotalNumUnnamedCallerArgsget_TotalNumAssignedNamedArgsMakeCalledArgsminfominstMakeCalledMeth InfoReader infoReadercheckingAttributeCallfreshenMethInfouminstpinfoOptobjArgs callerArgsallowParamArgsallowOutAndOptArgsNamesOfCalledArgs calledArgsshowAccessDomain.FinalTypeDefinitionChecksAtEndOfInferenceScopeTastops DisplayEnvTyconisImplementationdenvtycon€áM:Microsoft.FSharp.Compiler.Typrelns.FinalTypeDefinitionChecksAtEndOfInferenceScope(Microsoft.FSharp.Compiler.Infos.InfoReader,System.Boolean,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.Entity)FindUniqueFeasibleSupertypeM:Microsoft.FSharp.Compiler.Typrelns.FindUniqueFeasibleSupertype(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Tast.TType)$GetAbstractMethInfosForSynMethodDecl SlotImplSet SynValInfo memberNamebindmtypToSearchForAbstractMembers valSynDataM:Microsoft.FSharp.Compiler.Typrelns.GetAbstractMethInfosForSynMethodDecl(Microsoft.FSharp.Compiler.Infos.InfoReader,Microsoft.FSharp.Compiler.Infos.AccessorDomain,Microsoft.FSharp.Compiler.Ast.Ident,Microsoft.FSharp.Compiler.Range.range,System.Tuple{Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Typrelns.SlotImplSet}},Microsoft.FSharp.Compiler.Ast.SynValInfo)&GetAbstractPropInfosForSynPropertyDecl_k _valSynDataM:Microsoft.FSharp.Compiler.Typrelns.GetAbstractPropInfosForSynPropertyDecl``2(Microsoft.FSharp.Compiler.Infos.InfoReader,Microsoft.FSharp.Compiler.Infos.AccessorDomain,Microsoft.FSharp.Compiler.Ast.Ident,Microsoft.FSharp.Compiler.Range.range,System.Tuple{Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Typrelns.SlotImplSet}},``0,``1) IsBaseCall}M:Microsoft.FSharp.Compiler.Typrelns.IsBaseCall(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr})ComputeConstrainedCallInfo/M:Microsoft.FSharp.Compiler.Typrelns.ComputeConstrainedCallInfo(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr},Microsoft.FSharp.Compiler.Infos.MethInfo)TakeObjAddrForMethodCallMutates isMutable‚jM:Microsoft.FSharp.Compiler.Typrelns.TakeObjAddrForMethodCall``1(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Infos.MethInfo,Microsoft.FSharp.Compiler.Tastops.Mutates,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Tast.TType},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr},System.Tuple{Microsoft.FSharp.Compiler.Tast.Expr,``0}}})-TryImportProvidedMethodBaseAsLibraryIntrinsicExtensionTypingProvidedMethodBaseValRefmbaseBuildMethodCall ValUseFlagtcValisProp valUseFlagsargsƒÅM:Microsoft.FSharp.Compiler.Typrelns.BuildMethodCall(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Tast.ValRef,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Tast.ValUseFlag,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Range.range,System.Tuple{Microsoft.FSharp.Compiler.Tast.Expr,Microsoft.FSharp.Compiler.Tast.TType}}}}},Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Tastops.Mutates,Microsoft.FSharp.Compiler.Range.range,System.Boolean,Microsoft.FSharp.Compiler.Infos.MethInfo,Microsoft.FSharp.Compiler.Tast.ValUseFlag,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Expr})BuildNewDelegateExpr EventInfo eventInfoOpt delegateTyinvokeMethInfo delArgTysftyæM:Microsoft.FSharp.Compiler.Typrelns.BuildNewDelegateExpr(Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Infos.EventInfo},Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Infos.MethInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType},Microsoft.FSharp.Compiler.Tast.Expr,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Range.range)CoerceFromFSharpFuncToDelegate callerArgTy callerArgExprNoCoerceRequiredButNotSpecifiedData0ModuleOrNamespaceRefData1Data2 StringBuilderData3Data4ValueNotContainedConstrNotContained UnionCaseExnconstrNotContainedFieldNotContained RecdFieldInterfaceNotRevealedSignatureConformance9T:Microsoft.FSharp.Compiler.Typrelns.SignatureConformanceSignatureRepackageInfoChecker remapInfo checkingSigCheckSignature TypeEquivEnvModuleOrNamespaceTypeaenv implModRef signModType CheckTypars implTypars signTypars checkAttribsAttribsAttrib_aenv implAttribs sigAttribsfixup checkTypars sigTypars checkTypeDef implTyconsigTycon checkValInfoStringerrimplValsigValcheckVal checkExnInfo ExceptionInfo implTypeRepr sigTypeReprcheckUnionCase implUnionCase sigUnionCase checkField implFieldsigFieldcheckMemberDatasConform ValMemberInfo _implAttrsimplMemberInfo _sigAttrs sigMemberInfocheckRecordFieldsTyconRecdFields_amap_denv implFields sigFieldscheckRecordFieldsForExncheckVirtualSlotsimplAbstractSlotssigAbstractSlotscheckClassFieldsisStruct checkTypeReprTyconRepresentationcheckTypeAbbrev TyparKindkind1kind2implTypeAbbrev sigTypeAbbrevcheckModuleOrNamespaceContentscheckModuleOrNamespace EntityRefModuleOrNamespace sigModRef%CheckNamesOfModuleOrNamespaceContents€ëM:Microsoft.FSharp.Compiler.Typrelns.SignatureConformance.CheckNamesOfModuleOrNamespaceContents(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.EntityRef,Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType)CheckNamesOfModuleOrNamespaceRemapsigToImplRemapCanImplementAnyInterfaceSlot!CanImplementAnyClassHierarchySlotCanImplementAnySlotCanImplementNoSlotsItem1Item2Item3 TyparInstItem4Item5Item6Item7Override1T:Microsoft.FSharp.Compiler.Typrelns.OverrideInfo RequiredSlotLibraryNameMultiMap`1OverrideDoesntOverrideData5DispatchSlotChecking9T:Microsoft.FSharp.Compiler.Typrelns.DispatchSlotCheckingPrintOverrideToBufferosPrintMethInfoSigToBufferFormatOverridedFormatMethInfoSigGetInheritedMemberOverrideInfo parentTypeGetTypeMemberOverrideInforeqdTy overrideByGetObjectExprOverrideInfo MemberFlagsimpltyid memberFlags arityInfobindingAttribsrhsExpr IsNameMatch dispatchSlot IsImplMatchIsTyparKindMatchIsPartialMatchreverseTyparRenamingtinstcomposeTyparInstsinst1inst2 IsExactMatchOverrideImplementsDispatchSlotavailPriorOverride DispatchSlotIsAlreadyImplementedavailPriorOverridesKeyed CheckDispatchSlotsAreImplementedisOverallTyAbstract dispatchSlotsavailPriorOverrides overrides‚@M:Microsoft.FSharp.Compiler.Typrelns.DispatchSlotChecking.CheckDispatchSlotsAreImplemented(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,System.Boolean,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Typrelns.RequiredSlot},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Typrelns.OverrideInfo},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Typrelns.OverrideInfo})CheckOverridesAreAllUsedOnce isObjExprdispatchSlotsKeyed‚KM:Microsoft.FSharp.Compiler.Typrelns.DispatchSlotChecking.CheckOverridesAreAllUsedOnce(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Import.ImportMap,System.Boolean,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Collections.FSharpMap{System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Typrelns.RequiredSlot}},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Typrelns.OverrideInfo},System.Collections.Generic.IEnumerable{Microsoft.FSharp.Compiler.Typrelns.OverrideInfo})GetSlotImplSets allReqdTys3M:Microsoft.FSharp.Compiler.Typrelns.DispatchSlotChecking.GetSlotImplSets(Microsoft.FSharp.Compiler.Infos.InfoReader,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Boolean,Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Range.range}})0CheckImplementationRelationAtEndOfInferenceScope CallerArg0T:Microsoft.FSharp.Compiler.Typrelns.CallerArg`1OptionalArgInfo.T:Microsoft.FSharp.Compiler.Typrelns.CalledArgAssignedCalledArgAssignedItemSetterTargetAssignedPropSetter ILFieldInfoItemAssignedIlFieldSetter RecdFieldInfoAssignedRecdFieldSetterAssignedItemSetterCallerNamedArgCalledMethArgSetItem8Item9Item10Item11Item12 CalledMethProvidedMethodCalls8T:Microsoft.FSharp.Compiler.Typrelns.ProvidedMethodCallsconvertConstExpr ProvidedTypeconstanteraseSystemType inputType€ôM:Microsoft.FSharp.Compiler.Typrelns.ProvidedMethodCalls.eraseSystemType(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType}))convertProvidedExpressionToExprAndWitnessExprs ProvidedVar ProvidedExprProvidedMethodInfothisArgallArgs paramVarsmut isSuperInitexpr/TranslateInvokerExpressionForProvidedMethodCallmi+BuildInvokerExpressionForProvidedMethodCall Exception-T:Microsoft.FSharp.Compiler.TypeProviderError TypeCheckerW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tc.fsi'T:Microsoft.FSharp.Compiler.TypeCheckerget_DisplayEnvV/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tc.fsTcEnv get_NameEnvNameresNameResolutionEnvCreateInitialTcEnvCcuThunk AddCcuToTcEnv autoOpensAddLocalRootModuleOrNamespace TcResultsSink TcOpenDecl LongIdent EmptyTopAttrs TopAttribsCombineTopAttrsTypecheckOneImplFileNiceNameGeneratorConditionalDefinesParsedImplFileInput Eventually`1 TypedImplFileTypecheckOneSigFileParsedSigFileInputBakedInMemberConstraintNameLetRecCheckedAtRuntime MissingFieldsUnionPatternsBindDifferentNamesUpcastUnnecessaryTypeTestUnnecessarySelfRefObjCtor#VirtualAugmentationOnNullValuedType&NonVirtualAugmentationOnNullValuedTypeUseOfAddressOfOperator$DeprecatedThreadStaticBindingWarningNotUpperCaseConstructorIntfImplInIntrinsicAugmentationIntfImplInExtrinsicAugmentationOverrideInIntrinsicAugmentationOverrideInExtrinsicAugmentation#StandardOperatorRedefinitionWarningParameterlessStructCtor TcFieldInit ILFieldInitConstIsSecurityAttributeGeneric Dictionary`2StampIsSecurityCriticalAttribute)LightweightTcValForUsingInBuildMethodCallvref vrefFlags vrefTypeInstSealedAttributemainMethodAttrsnetModuleAttrs assemblyAttrsFunctionExpected NotAFunction RecursionRecursiveUseCheckedAtRuntimeLetRecEvaluatedOutOfOrder LetRecUnsound TyconBadArgsUnionCaseWrongArgumentsUnionCaseWrongNumberOfArgsFieldsFromDifferentTypes RecdFieldRefFieldGivenTwiceUnitTypeExpectedFunctionValueUnexpected VarBoundTwiceValueRestrictionFieldNotMutable ValNotMutable ValNotLocalInvalidRuntimeCoercionIndeterminateRuntimeCoercionIndeterminateStaticCoercionStaticCoercionShouldUseBoxRuntimeCoercionSourceSealedCoercionTargetSealedNonUniqueInferredAbstractSlotTlrX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tlr.fsiT:Microsoft.FSharp.Compiler.TlrMakeTLRDecisionsW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tlr.fs\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tastops.fsi#T:Microsoft.FSharp.Compiler.TastopsErasure typeEquivAux[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tastops.fs typeEquiv measureEquiv MeasureExprstripTyEqnsWrtErasuremkFunTyop_MinusMinusGreater tryMkForallTyop_PlusMinusGreater mkTupleTymkIteratedFunTytypeOfLambdaArgmkMultiLambdaTy mkLambdaTy#ensureCcuHasModuleOrNamespaceAtPathCompilationPathXmlDoc stripExpr valsOfBindsBindingsFlatValsSequencePointInfoForBinding MatchBuilder AddTargetDecisionTreeTargetAddResultTargetSequencePointInfoForTarget DecisionTree CloseTargetsClose mkBoolSwitch primMkCondmkCond mkNonNullCondmkIfThen exprForValxM:Microsoft.FSharp.Compiler.Tastops.exprForVal(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.Val) exprForValRefmkLocal€…M:Microsoft.FSharp.Compiler.Tastops.mkLocal(Microsoft.FSharp.Compiler.Range.range,System.String,Microsoft.FSharp.Compiler.Tast.TType)mkCompGenLocalmkMutableCompGenLocalmkCompGenLocalAndInvisbleBindBinding mkMultiLambda rebuildLambdamkLambda mkTypeLambda mkObjExpr ObjExprMethod mkTypeChoose mkLambdasmkMultiLambdasCoremkMultiLambdasmkMemberLambdasmkWhileSequencePointInfoForWhileLoopSpecialWhileLoopMarkermkForSequencePointInfoForForLoop ForLoopStyle mkTryWithSequencePointInfoForTrySequencePointInfoForWith mkTryFinallySequencePointInfoForFinallymkBind mkLetBind mkLetsBindmkLetsFromBindingsmkLetmkMultiLambdaBind mkCompGenBindmkCompGenBinds mkCompGenLetmkInvisibleLetmkInvisibleBindmkInvisibleFlatBindings FlatExprs mkLetRecBindsmkGenericBindRhs TypeSchemeisBeingGeneralized mkLazyAndmkLazyOr mkByrefTymkUnionCaseExpr UnionCaseRef mkExnExpr mkAsmExprILInstr mkCoerceExpr mkReraisemkReraiseLibCallmkTupleFieldGetmkRecdFieldGetViaExprAddrmkRecdFieldGetAddrViaExprAddrmkStaticRecdFieldGetmkStaticRecdFieldSetmkStaticRecdFieldGetAddrmkRecdFieldSetViaExprAddrmkUnionCaseTagGetmkUnionCaseProofmkUnionCaseFieldGetProvenmkUnionCaseFieldGetUnprovenmkExnCaseFieldGetmkUnionCaseFieldSetmkExnCaseFieldSetmaxTuplegoodTupleFieldsmkCompiledTupleTyconRefmkCompiledTupleTymkCompiledTuplemkGetTupleItemNILTypeDefensiveCopyWarningmkExprAddrOfExpr get_Contentsbyref`1ValMap`1 StampMap`1get_ItemTryFind ContainsValAddRemove get_IsEmpty get_EmptyOfList get_Values ValHash`1CreateFind ValMultiMap`1 TyparMap`1 ContainsKey TyconRefMap`1TyconRefMultiMap`1valOrder IComparer`1 tyconOrderrecdFieldRefOrder typarOrder tyconRefEqvalRefEqaddTyconRefRemap addValRemap mkTyparInstmkTyconRefInstemptyTyparInstinstType instTypesinstTyparConstraintsTyparConstraint instTraitTraitConstraintInfogeneralizeTyparsgeneralizeTyconRefgeneralizedTyconRefmkTyparToTyparRenamingreduceTyconRefAbbrev#reduceTyconRefMeasureableOrProvidedreduceTyconRefAbbrevMeasureable stripTyEqnsA€M:Microsoft.FSharp.Compiler.Tastops.stripTyEqnsA(Microsoft.FSharp.Compiler.Env.TcGlobals,System.Boolean,Microsoft.FSharp.Compiler.Tast.TType) stripTyEqnsstripTyEqnsAndMeasureEqnstryNormalizeMeasureInType stripExnEqnsZM:Microsoft.FSharp.Compiler.Tastops.stripExnEqns(Microsoft.FSharp.Compiler.Tast.EntityRef)recdFieldsOfExnDefRefrecdFieldTysOfExnDefRef destForallTy destFunTy destTupleTy destTyparTy destAnyParTy destMeasureTytryDestForallTyisFunTy isForallTy isTupleTyisTupleStructTy isUnionTyisReprHiddenTyisFSharpObjModelTyisRecdTy isTyparTy isAnyParTy isMeasureTymkAppTymkProvenUnionCaseTyisProvenUnionCaseTyisAppTy destAppTy tcrefOfAppTy tyconOfAppTy tryDestAppTy argsOfAppTymkInstForAppTytryNiceEntityRefOfTy^M:Microsoft.FSharp.Compiler.Tastops.tryNiceEntityRefOfTy(Microsoft.FSharp.Compiler.Tast.TType) domainOfFunTy rangeOfFunTy stripFunTy stripFunTyN applyForallTytryDestTupleTyactualResultTyOfUnionCaseactualTysOfUnionCaseFieldsactualTysOfInstanceRecdFieldsactualTyOfRecdFieldactualTyOfRecdFieldRefactualTyOfRecdFieldForTycondestTopForallTyGetTopTauTypeInFSharpForm ArgReprInfoCurriedArgInfosGetTopValTypeInFSharpFormIsCompiledAsStaticProperty#IsCompiledAsStaticPropertyWithFieldGetTopValTypeInCompiledFormGetFSharpViewOfReturnType0NormalizeDeclaredTyparsForEquiRecursiveInferenceapplyTysemptyFreeTypars FreeTyparsunionFreeTyparsemptyFreeTycons FreeTyconsunionFreeTyconsemptyFreeTyvars FreeTyvarsunionFreeTyvarsemptyFreeLocals FreeLocalsunionFreeLocalsCollectLocalsNoCachingFreeVarOptionsCollectTyparsNoCachingCollectTyparsAndLocalsNoCachingCollectTyparsAndLocals CollectLocals CollectTyparsCollectAllNoCaching CollectAllaccFreeInTypes accFreeInTypeaccFreeInTypars freeInType freeInTypes freeInValfreeInTypeLeftToRightfreeInTypesLeftToRight)freeInTypesLeftToRightSkippingConstraintsisDimensionlessBindEquivTypars FromTyparInstFromEquivTyparstraitsAEquivAux traitsAEquivtyparConstraintsAEquivAuxtyparConstraintsAEquiv typarsAEquiv typeAEquivAux typeAEquivreturnTypesAEquivAuxreturnTypesAEquiv tcrefAEquivvalLinkageAEquiv isErasedTypegetErasedTypes MeasurePower&ListMeasureVarOccsWithNonZeroExponents&ListMeasureConOccsWithNonZeroExponents ProdMeasuresMeasureVarExponentMeasureConExponentGetTypeOfMemberInFSharpFormGetTypeOfMemberInMemberForm&GetTypeOfIntrinsicMemberInCompiledFormGetMemberTypeInMemberFormPartitionValTyparsPartitionValRefTyparsReturnTypeOfPropertyValArgInfosOfPropertyValUncurriedArgInfosArgInfosOfMemberGetMemberCallInfo SetOpenPathsEmptyAddAccessibility Accessibility AddOpenPathAddOpenModuleOrNamespacefullDisplayTextOfModRefeM:Microsoft.FSharp.Compiler.Tastops.fullDisplayTextOfModRef(Microsoft.FSharp.Compiler.Tast.EntityRef)fullDisplayTextOfParentOfModReffullDisplayTextOfValReffullDisplayTextOfTyconReffullDisplayTextOfExnReffullDisplayTextOfUnionCaseReffullDisplayTextOfRecdFieldRefticksAndArgCountTextOfTyconRefqualifiedMangledNameOfTyconRefzM:Microsoft.FSharp.Compiler.Tastops.qualifiedMangledNameOfTyconRef(Microsoft.FSharp.Compiler.Tast.EntityRef,System.String)trimPathByDisplayEnvprefixOfStaticReqTyparStaticReqprefixOfRigidTypar superOfTyconabstractSlotValsOfTycons emptyFreeVarsFreeVars unionFreeVarsaccFreeInTargetsarray`1accFreeInExprsaccFreeInSwitchCasesDecisionTreeCaseaccFreeInDecisionTreefreeInModuleOrNamespaceModuleOrNamespaceExpr€¢M:Microsoft.FSharp.Compiler.Tastops.freeInModuleOrNamespace(Microsoft.FSharp.Compiler.Tastops.FreeVarOptions,Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceExpr) freeInExpr€„M:Microsoft.FSharp.Compiler.Tastops.freeInExpr(Microsoft.FSharp.Compiler.Tastops.FreeVarOptions,Microsoft.FSharp.Compiler.Tast.Expr)freeInBindingRhs€M:Microsoft.FSharp.Compiler.Tastops.freeInBindingRhs(Microsoft.FSharp.Compiler.Tastops.FreeVarOptions,Microsoft.FSharp.Compiler.Tast.Binding)freeTyvarsAllPublicfreeVarsAllPublicExpr.get_RangetyOfExprstripTopLambdaInferArityOfExprInferArityOfExprBindingsetValHasNoArity ValCopyFlag remapTyconRef TyconRefRemapremapUnionCaseRefremapRecdFieldRef remapValRef remapExpr remapAttribremapPossibleForallTycopyModuleOrNamespaceTypecopyExpr copyImplFile copySlotSigSlotSig instSlotSiginstExprSignatureHidingInfo8ComputeRemappingFromInferredSignatureToExplicitSignature-ComputeRemappingFromImplementationToSignature#ComputeHidingInfoAtAssemblyBoundarymkRepackageRemapping$wrapModuleOrNamespaceExprInNamespace$wrapModuleOrNamespaceTypeInNamespacewrapModuleOrNamespaceTypeSigTypeOfImplFiletryRescopeEntityEntity tryRescopeValMakeExportRemappingApplyExportRemappingToEntity IsHiddenTycon€íM:Microsoft.FSharp.Compiler.Tastops.IsHiddenTycon(Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Compiler.Tastops.Remap,Microsoft.FSharp.Compiler.Tastops.SignatureHidingInfo}},Microsoft.FSharp.Compiler.Tast.Entity)IsHiddenTyconRepr IsHiddenValIsHiddenRecdField remarkExpr primMkAppmkApps mkTyAppExprmkValSet€M:Microsoft.FSharp.Compiler.Tastops.mkValSet(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.ValRef,Microsoft.FSharp.Compiler.Tast.Expr) mkAddrSet€žM:Microsoft.FSharp.Compiler.Tastops.mkAddrSet(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.ValRef,Microsoft.FSharp.Compiler.Tast.Expr) mkAddrGetzM:Microsoft.FSharp.Compiler.Tastops.mkAddrGet(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.ValRef) mkValAddrzM:Microsoft.FSharp.Compiler.Tastops.mkValAddr(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tast.ValRef)mkRecdFieldGetmkRecdFieldSetaccTargetsOfDecisionTreemkAndSimplifyMatch primMkMatchIterateRecursiveFixupsMultiLambdaToTupledLambdaAdjustArityOfLambdaBodyMakeApplicationAndBetaReduceJoinTyparStaticReq ExprFolder0State ExprFolder`1 FoldImplFileFoldExprmkNativePtrType mkArrayType isOptionTy destOptionTytryDestOptionTyisLinqExpressionTydestLinqExpressionTytryDestLinqExpressionTyisIDelegateEventTypedestIDelegateEventType mkIEventTypemkIObservableTypemkIObserverTypemkLazyTymkPrintfFormatTymetadataOfTyconTypeDefMetadata metadataOfTy isILAppTy isArrayTy isArray1DTy destArrayTy mkArrayTyisArrayTyconRefrankOfArrayTyconRefisUnitTyisObjTyisVoidTy}M:Microsoft.FSharp.Compiler.Tastops.destArrayTy(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tast.TType) rankOfArrayTyM:Microsoft.FSharp.Compiler.Tastops.rankOfArrayTy(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tast.TType)isInterfaceTyconRef isDelegateTy isInterfaceTyisRefTy isSealedTyisComInteropTyunderlyingTypeOfEnumTynormalizeEnumTy isStructTy isUnmanagedTy isClassTyisEnumTyStripSelfRefCellValBaseOrThisInfo€³M:Microsoft.FSharp.Compiler.Tastops.StripSelfRefCell(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tast.ValBaseOrThisInfo,Microsoft.FSharp.Compiler.Tast.TType) |AppTy|_||NullableTy|_||StripNullableTy|IsUnionTypeWithNullAsTrueValue#TyconHasUseNullAsTrueValueAttribute"CanHaveUseNullAsTrueValueAttributeMemberIsCompiledAsInstanceValSpecIsCompiledAsInstance ValRefIsCompiledAsInstanceMemberModuleNameIsMangledCompileAsEventTypeNullIsExtraValueTypeNullIsTrueValueTypeNullNotLiked TypeNullNeverTypeSatisfiesNullConstraintTypeHasDefaultValueisAbstractTyconisUnionCaseAllocObservable,isRecdOrUnionOrStructTyconRefAllocObservableisExnAllocObservableisUnionCaseFieldMutableisExnFieldMutableuseGenuineFieldComputeFieldNameslotSigHasVoidReturnTyactualReturnTyOfSlotSigreturnTyOfMethod mkRefCell mkRefCellGet mkRefCellSet mkLazyDelayed mkLazyForcemkRefCellContentsRef isRefCellTy destRefCellTy mkRefCellTymkSeqTymkIEnumeratorTymkListTy mkOptionTy mkNoneCase mkSomeCasemkNilmkCons mkSequentialSequencePointInfoForSeqmkCompGenSequential mkSequentials mkRecordExprRecordConstructionInfomkUnboxmkBoxmkIsInstmkNull mkNullTest mkNonNullTestmkIsInstConditionalmkThrow mkGetArg0 mkDefaultisThrowmkStringmkBoolmkBytebytemkUInt16uint16mkTruemkFalsemkUnitmkInt32int32mkIntmkZeromkOnemkTwo mkMinusOne destInt32mkQuotedExprTymkRawQuotedExprTymspec_Type_GetTypeFromHandle ILGlobals ILMethodSpecfspec_Missing_Value ILFieldSpec mkByteArrayTymkCallNewFormat mkCallUnboxmkCallGetGenericComparer"mkCallGetGenericEREqualityComparer#mkCallGetGenericPEREqualityComparermkCallUnboxFastcanUseUnboxFast mkCallDispose mkCallSeqmkCallTypeTestcanUseTypeTestFast mkCallTypeOfmkCallTypeDefOfmkCallCreateInstancemkCallCreateEventmkCallArrayGetmkCallArray2DGetmkCallArray3DGetmkCallArray4DGet mkCallRaise(mkCallGenericComparisonWithComparerOutermkCallGenericEqualityEROutermkCallEqualsOperator&mkCallGenericEqualityWithComparerOuter"mkCallGenericHashWithComparerOutermkCallUnpickleQuotationmkCallCastQuotationmkCallLiftValuemkCallSeqCollectmkCallSeqUsingmkCallSeqDelaymkCallSeqAppendmkCallSeqFinallymkCallSeqGeneratedmkCallSeqOfFunctionsmkCallSeqToArraymkCallSeqToList mkCallSeqMapmkCallSeqSingletonmkCallSeqEmpty mkILAsmCeq mkILAsmCltmkCallFailInitmkCallFailStaticInitmkCallCheckThismkCaseTest!mkCallQuoteToLinqLambdaExpression mkCallGetQuerySourceAsEnumerablemkCallNewQuerySourcemkDecrmkIncrmkLdlenmkLdelemHasILAttribute ILTypeRef ILAttributesTryDecodeILAttribute ILAttribElemILAttributeNamedArgTryFindILAttributeBuiltinAttribInfoIsMatchingFSharpAttributeHasFSharpAttributeTryFindFSharpAttributeTryFindFSharpBoolAttributeTryFindFSharpStringAttributeTryFindFSharpInt32Attribute!TryDecodeTypeProviderAssemblyAttr ILAttributezM:Microsoft.FSharp.Compiler.Tastops.TryDecodeTypeProviderAssemblyAttr(Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribute)IsSignatureDataVersionAttrILThingHasExtensionAttributeTryFindAutoOpenAttrTryFindInternalsVisibleToAttr"IsMatchingSignatureDataVersionAttr ILVersionInfomkCompilationMappingAttr"mkCompilationMappingAttrWithSeqNum/mkCompilationMappingAttrWithVariantNumAndSeqNummkCompilationArgumentCountsAttrmkCompilationSourceNameAttrmkSignatureDataVersionAttrmkCompilerGeneratedAttr isByrefTy destByrefTyisByrefLikeTyconRef isByrefLikeTy isTupleExpr tryDestTuplemkTupledmkTupledNoTypes mkTupledTymkTupledVarsTy mkTupledVars mkMethodTyAdjustValForExpectedArityAdjustValToTopVal ParentRefLinearizeTopMatchAdjustPossibleSubsumptionExpr*NormalizeAndAdjustPossibleSubsumptionExprsbuildAccessPath XmlDocArgsEncXmlDocSigOfValXmlDocSigOfUnionCaseXmlDocSigOfFieldXmlDocSigOfTyconXmlDocSigOfSubModulXmlDocSigOfEntityDecideStaticOptimizationsStaticOptimizationmkStaticOptimizationExpr mkFastForLoopActivePatternElemRef.get_NameActivePatternElemRefTryGetActivePatternInfo PrettyNamingActivePatternInfomkChoiceCaseRef get_NamesActivePatternInfo.get_Names get_IsTotalActivePatternInfo.get_IsTotal ResultTypeActivePatternInfo.ResultType OverallTypeActivePatternInfo.OverallType RewriteExprExprRewritingEnvRewriteImplFile!IsGenericValWithGenericContraints HasInterfaceEntity.HasInterface HasOverrideEntity.HasOverrideEntityRef.HasInterfaceEntityRef.HasOverride|AttribBitwiseOrExpr|_| |EnumExpr|_||TypeOfExpr|_||TypeDefOfExpr|_| EvalAttribArgEvaledAttribExprEqualityIsSimpleSyntacticConstantExpr|ExtractAttribNamedArg|_|AttribNamedArg AttribExpr|AttribInt32Arg|_||AttribInt16Arg|_|int16|AttribBoolArg|_||AttribStringArg|_| |Int32Expr|_||SpecialComparableHeadType|_|€M:Microsoft.FSharp.Compiler.Tastops.|SpecialComparableHeadType|_|(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tast.TType)|SpecialEquatableHeadType|_||SpecialNotEquatableHeadType|_|DetectFastIntegerForLoopsTryEliminateDesugaredConstantsValIsExplicitImplValRefIsExplicitImpl|LinearMatchExpr|_|rebuildLinearMatchExprmkCoerceIfNeededtgtTysrcTy|InnerExprPat|EraseAll EraseMeasures EraseNone.T:Microsoft.FSharp.Compiler.Tastops.TypeSchemeDefinitelyMutatesPossiblyMutates NeverMutatesStructAttributeNoEqualityAttributeNoComparisonAttribute ValueType,T:Microsoft.FSharp.Compiler.Tastops.ValMap`1-T:Microsoft.FSharp.Compiler.Tastops.ValHash`11T:Microsoft.FSharp.Compiler.Tastops.ValMultiMap`1.T:Microsoft.FSharp.Compiler.Tastops.TyparMap`11T:Microsoft.FSharp.Compiler.Tastops.TyconRefMap`16T:Microsoft.FSharp.Compiler.Tastops.TyconRefMultiMap`1ValRemaptpinstvalRemap tyconRefRemap EquivTypars EquivTyconsTyparConstraintsWithTypars PrettyTypes/T:Microsoft.FSharp.Compiler.Tastops.PrettyTypesNeedsPrettyTyparNameNewPrettyTyparsPrettyTyparNamesPrettifyTypes1PrettifyTypes2PrettifyTypesNPrettifyTypesN1PrettifyTypesNM1"includeStaticParametersInTypeNamesControlLazy`1openTopPathsSortedopenTopPathsRawshortTypeNamessuppressNestedTypes maxMembersshowObsoleteMembersshowTyparBindingshowImperativeTyparAnnotationssuppressInlineKeywordsuppressMutableKeywordshowMemberContainersshortConstraintsuseColonForReturnTypeshowAttributes showOverridesshowConstraintTyparAnnotationsabbreviateAdditionalConstraintsshowTyparDefaultConstraintscontextAccessibilityLayoutlayoutgeneratedValueLayout SimplifyTypes1T:Microsoft.FSharp.Compiler.Tastops.SimplifyTypestypeSimplificationInfo0TypeSimplificationInfo CollectInfoZset`1 singletonsZmap`2inplaceConstraintspostfixConstraintsCloneAll*CloneAllAndMarkExprValsAsCompilerGeneratedOnlyCloneExprValsmrpiVals mrpiEntities mhiTycons mhiTyconReprsmhiVals mhiRecdFields mhiUnionCases DebugPrint.T:Microsoft.FSharp.Compiler.Tastops.DebugPrint layoutRangesref`1showTypeshowExprvalRefL unionCaseRefL vspecAtBindLintLvalL typarDeclLtraitLtyparLtyparsLtypeLslotSigL entityTypeLentityL typeOfValLbindingLexprLtyconL decisionTreeL implFileL assemblyL TypedAssembly recdFieldRefL exprInterceptvalBindingSiteInterceptnonRecBindingsInterceptrecBindingsInterceptdtreeIntercepttargetIntercepttmethodIntercept ILTypeDefILTypeMetadata,FSharpOrArrayOrByrefOrTupleOrExnTypeMetadataTProvidedTypeInfoExtensionTypeMetadata PreIntercept PostTransformIsUnderQuotationsX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../tast.fs T:Microsoft.FSharp.Compiler.Tast newUniqueint64newStamp)P:Microsoft.FSharp.Compiler.Tast.newStamp globalNng*P:Microsoft.FSharp.Compiler.Tast.globalNngglobalStableNameGeneratorStableNiceNameGenerator:P:Microsoft.FSharp.Compiler.Tast.globalStableNameGenerator ValInline mustinline_arg1UM:Microsoft.FSharp.Compiler.Tast.mustinline(Microsoft.FSharp.Compiler.Tast.ValInline)ValRecursiveScopeInfo ValMutabilityTyparDynamicReqValFlagsflags recValInfo baseOrThis isCompGen inlineInfoisModuleOrMemberBindingisExtensionMemberisIncrClassSpecialMemberisTyFunc allowTypeInstisGeneratedEventValget_BaseOrThisInfoget_IsCompilerGeneratedSetIsCompilerGeneratedget_InlineInfoget_MutabilityInfoget_IsMemberOrModuleBindingget_SetIsMemberOrModuleBindingget_IsExtensionMemberget_IsIncrClassSpecialMemberget_IsTypeFunctionget_RecursiveValInfoSetRecursiveValInfoget_MakesNoCriticalTailcallsget_SetMakesNoCriticalTailcalls$get_PermitsExplicitTypeInstantiationget_HasBeenReferencedget_SetHasBeenReferenced*get_IsCompiledAsStaticPropertyWithoutField-get_SetIsCompiledAsStaticPropertyWithoutFieldget_IsGeneratedEventValget_PickledBits5P:Microsoft.FSharp.Compiler.Tast.ValFlags.PickledBits get_AttrNameToString TyparRigidityget_ErrorIfUnifiedget_WarnIfUnifiedget_WarnIfMissingConstraint TyparFlagskindrigidity isFromError staticReq dynamicReqequalityDependsOncomparisonDependsOnget_IsFromError7P:Microsoft.FSharp.Compiler.Tast.TyparFlags.IsFromError?P:Microsoft.FSharp.Compiler.Tast.TyparFlags.IsCompilerGenerated get_StaticReq5P:Microsoft.FSharp.Compiler.Tast.TyparFlags.StaticReq get_Rigidity4P:Microsoft.FSharp.Compiler.Tast.TyparFlags.Rigidityget_Kind0P:Microsoft.FSharp.Compiler.Tast.TyparFlags.Kindget_ComparisonConditionalOnCP:Microsoft.FSharp.Compiler.Tast.TyparFlags.ComparisonConditionalOnget_DynamicReq6P:Microsoft.FSharp.Compiler.Tast.TyparFlags.DynamicReqget_EqualityConditionalOnAP:Microsoft.FSharp.Compiler.Tast.TyparFlags.EqualityConditionalOn7P:Microsoft.FSharp.Compiler.Tast.TyparFlags.PickledBits EntityFlagsusesPrefixDisplayisModuleOrNamespacepreEstablishedHasDefaultCtorhasSelfReferentialCtorget_IsModuleOrNamespaceget_IsPrefixDisplay'get_PreEstablishedHasDefaultConstructor!get_HasSelfReferentialConstructor+get_ReservedBitForPickleFormatTyconReprFlagTP:Microsoft.FSharp.Compiler.Tast.EntityFlags.ReservedBitForPickleFormatTyconReprFlag8P:Microsoft.FSharp.Compiler.Tast.EntityFlags.PickledBitsunassignedTyparNameKeyTyconByDemangledNameAndArityKeyValuePair`2 NameArityPairnmtyparsKeyTyconByAccessNamesLM:Microsoft.FSharp.Compiler.Tast.KeyTyconByAccessNames``1(System.String,``0)ModuleOrNamespaceKindget_ILScopeRefget_AccessPath PublicPathget_EnclosingPathgetNameOfScopeRefsrefmangledTextOfCompPathmangledPathOfCompPathpublicPathOfCompPathcpathparentCompPath mkNestedCPathnmodKind definitionLocationOfProvidedItem IProvidedCustomAttributeProviderpValLinkagePartialKey ValPublicPathLValueOperationSequentialOpKindCompiledTypeRepr3P:Microsoft.FSharp.Compiler.Tast.Entity.LogicalNameget_CompiledName4P:Microsoft.FSharp.Compiler.Tast.Entity.CompiledNameget_DisplayName3P:Microsoft.FSharp.Compiler.Tast.Entity.DisplayName6get_DisplayNameWithStaticParametersAndUnderscoreTyparsZP:Microsoft.FSharp.Compiler.Tast.Entity.DisplayNameWithStaticParametersAndUnderscoreTypars#get_DisplayNameWithStaticParametersGP:Microsoft.FSharp.Compiler.Tast.Entity.DisplayNameWithStaticParametersGetDisplayNamewithStaticParameterswithUnderscoreTypars-P:Microsoft.FSharp.Compiler.Tast.Entity.Range get_Stamp-P:Microsoft.FSharp.Compiler.Tast.Entity.Stamp get_Attribs/P:Microsoft.FSharp.Compiler.Tast.Entity.Attribs get_XmlDoc.P:Microsoft.FSharp.Compiler.Tast.Entity.XmlDoc get_XmlDocSig1P:Microsoft.FSharp.Compiler.Tast.Entity.XmlDocSig set_XmlDocSigv@P:Microsoft.FSharp.Compiler.Tast.Entity.XmlDocSig(System.String)get_ModuleOrNamespaceType=P:Microsoft.FSharp.Compiler.Tast.Entity.ModuleOrNamespaceTypeget_TypeContentsTyconAugmentation4P:Microsoft.FSharp.Compiler.Tast.Entity.TypeContentsget_TypeOrMeasureKind9P:Microsoft.FSharp.Compiler.Tast.Entity.TypeOrMeasureKindget_Id*P:Microsoft.FSharp.Compiler.Tast.Entity.Idget_TypeReprInfo4P:Microsoft.FSharp.Compiler.Tast.Entity.TypeReprInfoget_ExceptionInfo5P:Microsoft.FSharp.Compiler.Tast.Entity.ExceptionInfoget_IsExceptionDecl7P:Microsoft.FSharp.Compiler.Tast.Entity.IsExceptionDeclDemangleEntityNamek~M:Microsoft.FSharp.Compiler.Tast.Entity.DemangleEntityName(System.String,Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceKind)"get_DemangledModuleOrNamespaceNameFP:Microsoft.FSharp.Compiler.Tast.Entity.DemangledModuleOrNamespaceNameUM:Microsoft.FSharp.Compiler.Tast.Entity.Typars(Microsoft.FSharp.Compiler.Range.range)get_TyparsNoRange5P:Microsoft.FSharp.Compiler.Tast.Entity.TyparsNoRangeget_TypeAbbrev2P:Microsoft.FSharp.Compiler.Tast.Entity.TypeAbbrevget_IsTypeAbbrev4P:Microsoft.FSharp.Compiler.Tast.Entity.IsTypeAbbrevget_TypeReprAccessibility=P:Microsoft.FSharp.Compiler.Tast.Entity.TypeReprAccessibilityget_CompiledReprCacheLibcache`19P:Microsoft.FSharp.Compiler.Tast.Entity.CompiledReprCacheget_PublicPath2P:Microsoft.FSharp.Compiler.Tast.Entity.PublicPathget_Accessibility5P:Microsoft.FSharp.Compiler.Tast.Entity.Accessibility7P:Microsoft.FSharp.Compiler.Tast.Entity.IsPrefixDisplay;P:Microsoft.FSharp.Compiler.Tast.Entity.IsModuleOrNamespaceget_IsNamespace3P:Microsoft.FSharp.Compiler.Tast.Entity.IsNamespace get_IsModule0P:Microsoft.FSharp.Compiler.Tast.Entity.IsModuleget_IsProvided2P:Microsoft.FSharp.Compiler.Tast.Entity.IsProvidedget_IsProvidedNamespace;P:Microsoft.FSharp.Compiler.Tast.Entity.IsProvidedNamespaceget_IsProvidedErasedTycon=P:Microsoft.FSharp.Compiler.Tast.Entity.IsProvidedErasedTyconget_IsProvidedGeneratedTycon@P:Microsoft.FSharp.Compiler.Tast.Entity.IsProvidedGeneratedTycon get_IsErased0P:Microsoft.FSharp.Compiler.Tast.Entity.IsErasedget_CompilationPathOpt:P:Microsoft.FSharp.Compiler.Tast.Entity.CompilationPathOptget_CompilationPath7P:Microsoft.FSharp.Compiler.Tast.Entity.CompilationPathget_AllFieldTable5P:Microsoft.FSharp.Compiler.Tast.Entity.AllFieldTableget_AllFieldsArray6P:Microsoft.FSharp.Compiler.Tast.Entity.AllFieldsArrayget_AllFieldsAsList7P:Microsoft.FSharp.Compiler.Tast.Entity.AllFieldsAsListget_AllInstanceFieldsAsList?P:Microsoft.FSharp.Compiler.Tast.Entity.AllInstanceFieldsAsListget_TrueFieldsAsList8P:Microsoft.FSharp.Compiler.Tast.Entity.TrueFieldsAsListget_TrueInstanceFieldsAsList@P:Microsoft.FSharp.Compiler.Tast.Entity.TrueInstanceFieldsAsListGetFieldByIndexEM:Microsoft.FSharp.Compiler.Tast.Entity.GetFieldByIndex(System.Int32)GetFieldByNameEM:Microsoft.FSharp.Compiler.Tast.Entity.GetFieldByName(System.String)get_IsUnionTycon4P:Microsoft.FSharp.Compiler.Tast.Entity.IsUnionTyconget_UnionTypeInfoTyconUnionData5P:Microsoft.FSharp.Compiler.Tast.Entity.UnionTypeInfoget_UnionCasesArray7P:Microsoft.FSharp.Compiler.Tast.Entity.UnionCasesArrayget_UnionCasesAsList8P:Microsoft.FSharp.Compiler.Tast.Entity.UnionCasesAsListGetUnionCaseByNameIM:Microsoft.FSharp.Compiler.Tast.Entity.GetUnionCaseByName(System.String) NewUnlinked3M:Microsoft.FSharp.Compiler.Tast.Entity.NewUnlinkedNew EntityDatareasondata]M:Microsoft.FSharp.Compiler.Tast.Entity.New``1(``0,Microsoft.FSharp.Compiler.Tast.EntityData)LinktgWM:Microsoft.FSharp.Compiler.Tast.Entity.Link(Microsoft.FSharp.Compiler.Tast.EntityData) get_IsLinked0P:Microsoft.FSharp.Compiler.Tast.Entity.IsLinkedget_FSharpObjectModelTypeInfoTyconObjModelDataAP:Microsoft.FSharp.Compiler.Tast.Entity.FSharpObjectModelTypeInfo get_IsILTycon1P:Microsoft.FSharp.Compiler.Tast.Entity.IsILTyconget_ILTyconInfo3P:Microsoft.FSharp.Compiler.Tast.Entity.ILTyconInfoget_ILTyconRawMetadata:P:Microsoft.FSharp.Compiler.Tast.Entity.ILTyconRawMetadataget_IsRecordTycon5P:Microsoft.FSharp.Compiler.Tast.Entity.IsRecordTyconget_IsFSharpObjectModelTycon@P:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpObjectModelTyconget_IsAsmReprTycon6P:Microsoft.FSharp.Compiler.Tast.Entity.IsAsmReprTyconget_IsMeasureableReprTycon>P:Microsoft.FSharp.Compiler.Tast.Entity.IsMeasureableReprTyconget_IsHiddenReprTycon9P:Microsoft.FSharp.Compiler.Tast.Entity.IsHiddenReprTyconget_IsFSharpInterfaceTycon>P:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpInterfaceTyconget_IsFSharpDelegateTycon=P:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpDelegateTyconget_IsFSharpEnumTycon9P:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpEnumTyconget_IsFSharpClassTycon:P:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpClassTyconget_IsILEnumTycon5P:Microsoft.FSharp.Compiler.Tast.Entity.IsILEnumTyconget_IsEnumTycon3P:Microsoft.FSharp.Compiler.Tast.Entity.IsEnumTyconget_IsFSharpStructOrEnumTyconAP:Microsoft.FSharp.Compiler.Tast.Entity.IsFSharpStructOrEnumTyconget_IsILStructOrEnumTycon=P:Microsoft.FSharp.Compiler.Tast.Entity.IsILStructOrEnumTyconget_IsStructOrEnumTycon;P:Microsoft.FSharp.Compiler.Tast.Entity.IsStructOrEnumTycon$get_ImmediateInterfacesOfFSharpTyconHP:Microsoft.FSharp.Compiler.Tast.Entity.ImmediateInterfacesOfFSharpTycon(get_ImmediateInterfaceTypesOfFSharpTyconLP:Microsoft.FSharp.Compiler.Tast.Entity.ImmediateInterfaceTypesOfFSharpTyconget_MembersOfFSharpTyconSortedBP:Microsoft.FSharp.Compiler.Tast.Entity.MembersOfFSharpTyconSortedget_MembersOfFSharpTyconByNameBP:Microsoft.FSharp.Compiler.Tast.Entity.MembersOfFSharpTyconByName,get_GeneratedHashAndEqualsWithComparerValuesPP:Microsoft.FSharp.Compiler.Tast.Entity.GeneratedHashAndEqualsWithComparerValues(get_GeneratedCompareToWithComparerValuesLP:Microsoft.FSharp.Compiler.Tast.Entity.GeneratedCompareToWithComparerValuesget_GeneratedCompareToValues@P:Microsoft.FSharp.Compiler.Tast.Entity.GeneratedCompareToValues get_GeneratedHashAndEqualsValuesDP:Microsoft.FSharp.Compiler.Tast.Entity.GeneratedHashAndEqualsValuesget_AllGeneratedValues:P:Microsoft.FSharp.Compiler.Tast.Entity.AllGeneratedValuesget_CompiledRepresentation>P:Microsoft.FSharp.Compiler.Tast.Entity.CompiledRepresentation&get_CompiledRepresentationForNamedTypeJP:Microsoft.FSharp.Compiler.Tast.Entity.CompiledRepresentationForNamedTypeKP:Microsoft.FSharp.Compiler.Tast.Entity.PreEstablishedHasDefaultConstructorEP:Microsoft.FSharp.Compiler.Tast.Entity.HasSelfReferentialConstructor SetAttribsattribs€‚M:Microsoft.FSharp.Compiler.Tast.Entity.SetAttribs(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Attrib}) SetCompareSetCompareWith SetEqualsSetHashAndEqualsWithSetHasObjectGetHashCodebget_IsGeneratedBaseTypeForErasedobjTyget_IsValueTypeTyconObjModelKind FieldByIndex FieldByNameGetUnionCaseByIndexTyconUnionCasesget_RecdFieldsArrayget_RecdFields get_IsNullaryget_PropertyAttribsget_FieldAttribs get_IsMutable get_IsStaticget_IsVolatileget_FormalTypeget_LiteralValueget_IsZeroInit QueueList`1valsentitiesget_ModuleOrNamespaceKindLP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ModuleOrNamespaceKindget_AllValsAndMembersHP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllValsAndMembersget_AllEntitiesBP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllEntitiesAddModuleOrNamespaceByMutationmodul|M:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AddModuleOrNamespaceByMutation(Microsoft.FSharp.Compiler.Tast.Entity)AddProvidedTypeEntityentitysM:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AddProvidedTypeEntity(Microsoft.FSharp.Compiler.Tast.Entity) AddEntitygM:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AddEntity(Microsoft.FSharp.Compiler.Tast.Entity)AddValvspecaM:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AddVal(Microsoft.FSharp.Compiler.Tast.Val)#get_ActivePatternElemRefLookupTable NameMap`1VP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ActivePatternElemRefLookupTableget_TypeDefinitionsFP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.TypeDefinitionsget_ExceptionDefinitionsKP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ExceptionDefinitions!get_ModuleAndNamespaceDefinitionsTP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ModuleAndNamespaceDefinitionsget_TypeAndExceptionDefinitionsRP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.TypeAndExceptionDefinitionsTypesByDemangledNameAndArity LayeredMap`2zM:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.TypesByDemangledNameAndArity(Microsoft.FSharp.Compiler.Range.range)get_TypesByAccessNamesLayeredMultiMap`2IP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.TypesByAccessNamesget_TypesByMangledName/get_AllEntitiesByCompiledAndLogicalMangledNamesbP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllEntitiesByCompiledAndLogicalMangledNames#get_AllEntitiesByLogicalMangledNameVP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllEntitiesByLogicalMangledName(get_AllValsAndMembersByPartialLinkageKey MultiMap`2[P:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllValsAndMembersByPartialLinkageKey TryLinkValValLinkageFullKeyccukey€›M:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.TryLinkVal(Microsoft.FSharp.Compiler.Tast.CcuThunk,Microsoft.FSharp.Compiler.Tast.ValLinkageFullKey)get_AllValsByLogicalNameKP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllValsByLogicalName*get_AllValsAndMembersByLogicalNameUncached]P:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.AllValsAndMembersByLogicalNameUncached'get_ExceptionDefinitionsByDemangledNameZP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ExceptionDefinitionsByDemangledName'get_ModulesAndNamespacesByDemangledNameZP:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledNameNewModuleOrNamespaceType ConstructmkindtyconsNewEmptyModuleOrNamespaceTypeNewProvidedTyconReprResolutionEnvironmentresolutionEnvironmentstimportProvidedTypeisSuppressRelocateNewProvidedTyconOptionalArgumentAttributeaccessNewModuleOrNamespacexmlmtype,P:Microsoft.FSharp.Compiler.Tast.Typar.Stamp get_Solution/P:Microsoft.FSharp.Compiler.Tast.Typar.Solutionget_Constraints2P:Microsoft.FSharp.Compiler.Tast.Typar.Constraints:P:Microsoft.FSharp.Compiler.Tast.Typar.IsCompilerGenerated/P:Microsoft.FSharp.Compiler.Tast.Typar.Rigidity1P:Microsoft.FSharp.Compiler.Tast.Typar.DynamicReqP:Microsoft.FSharp.Compiler.Tast.Typar.ComparisonConditionalOn0P:Microsoft.FSharp.Compiler.Tast.Typar.StaticReq2P:Microsoft.FSharp.Compiler.Tast.Typar.IsFromError+P:Microsoft.FSharp.Compiler.Tast.Typar.Kind/P:Microsoft.FSharp.Compiler.Tast.Typar.IsErased.P:Microsoft.FSharp.Compiler.Tast.Typar.Attribs2P:Microsoft.FSharp.Compiler.Tast.Typar.DisplayNameFixupConstraintscs€M:Microsoft.FSharp.Compiler.Tast.Typar.FixupConstraints(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TyparConstraint})2M:Microsoft.FSharp.Compiler.Tast.Typar.NewUnlinked TyparDataTM:Microsoft.FSharp.Compiler.Tast.Typar.New(Microsoft.FSharp.Compiler.Tast.TyparData)UM:Microsoft.FSharp.Compiler.Tast.Typar.Link(Microsoft.FSharp.Compiler.Tast.TyparData)/P:Microsoft.FSharp.Compiler.Tast.Typar.IsLinked get_IsSolved/P:Microsoft.FSharp.Compiler.Tast.Typar.IsSolvedSetIdentTM:Microsoft.FSharp.Compiler.Tast.Typar.SetIdent(Microsoft.FSharp.Compiler.Ast.Ident) SetRigidity`M:Microsoft.FSharp.Compiler.Tast.Typar.SetRigidity(Microsoft.FSharp.Compiler.Tast.TyparRigidity)SetCompilerGeneratedKM:Microsoft.FSharp.Compiler.Tast.Typar.SetCompilerGenerated(System.Boolean) SetStaticReqaM:Microsoft.FSharp.Compiler.Tast.Typar.SetStaticReq(Microsoft.FSharp.Compiler.Ast.TyparStaticReq) SetDynamicReqdM:Microsoft.FSharp.Compiler.Tast.Typar.SetDynamicReq(Microsoft.FSharp.Compiler.Tast.TyparDynamicReq)SetEqualityDependsOnKM:Microsoft.FSharp.Compiler.Tast.Typar.SetEqualityDependsOn(System.Boolean)SetComparisonDependsOnMM:Microsoft.FSharp.Compiler.Tast.Typar.SetComparisonDependsOn(System.Boolean)get_MemberName?P:Microsoft.FSharp.Compiler.Tast.TraitConstraintInfo.MemberNameget_ReturnType?P:Microsoft.FSharp.Compiler.Tast.TraitConstraintInfo.ReturnTypeTraitConstraintSln=P:Microsoft.FSharp.Compiler.Tast.TraitConstraintInfo.Solution set_Solution€”P:Microsoft.FSharp.Compiler.Tast.TraitConstraintInfo.Solution(Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Tast.TraitConstraintSln}) partialKeytypeForLinkageget_PartialKey=P:Microsoft.FSharp.Compiler.Tast.ValLinkageFullKey.PartialKeyget_TypeForLinkageAP:Microsoft.FSharp.Compiler.Tast.ValLinkageFullKey.TypeForLinkage*P:Microsoft.FSharp.Compiler.Tast.Val.Range*P:Microsoft.FSharp.Compiler.Tast.Val.Stamp)P:Microsoft.FSharp.Compiler.Tast.Val.Type2P:Microsoft.FSharp.Compiler.Tast.Val.Accessibilityget_DefinitionRange4P:Microsoft.FSharp.Compiler.Tast.Val.DefinitionRange1P:Microsoft.FSharp.Compiler.Tast.Val.LiteralValueget_ValReprInfo0P:Microsoft.FSharp.Compiler.Tast.Val.ValReprInfoget_IsCompiledAsTopLevel9P:Microsoft.FSharp.Compiler.Tast.Val.IsCompiledAsTopLevelget_LinkagePartialKey6P:Microsoft.FSharp.Compiler.Tast.Val.LinkagePartialKeyget_LinkageFullKey3P:Microsoft.FSharp.Compiler.Tast.Val.LinkageFullKeyP:Microsoft.FSharp.Compiler.Tast.EntityRef.IsModuleOrNamespace6P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsNamespace3P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsModule5P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsProvided>P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsProvidedNamespace@P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsProvidedErasedTyconCP:Microsoft.FSharp.Compiler.Tast.EntityRef.IsProvidedGeneratedTycon:P:Microsoft.FSharp.Compiler.Tast.EntityRef.CompilationPath8P:Microsoft.FSharp.Compiler.Tast.EntityRef.AllFieldTable9P:Microsoft.FSharp.Compiler.Tast.EntityRef.AllFieldsArray:P:Microsoft.FSharp.Compiler.Tast.EntityRef.AllFieldsAsList;P:Microsoft.FSharp.Compiler.Tast.EntityRef.TrueFieldsAsListCP:Microsoft.FSharp.Compiler.Tast.EntityRef.TrueInstanceFieldsAsListBP:Microsoft.FSharp.Compiler.Tast.EntityRef.AllInstanceFieldsAsListHM:Microsoft.FSharp.Compiler.Tast.EntityRef.GetFieldByIndex(System.Int32)HM:Microsoft.FSharp.Compiler.Tast.EntityRef.GetFieldByName(System.String)8P:Microsoft.FSharp.Compiler.Tast.EntityRef.UnionTypeInfo:P:Microsoft.FSharp.Compiler.Tast.EntityRef.UnionCasesArray;P:Microsoft.FSharp.Compiler.Tast.EntityRef.UnionCasesAsListLM:Microsoft.FSharp.Compiler.Tast.EntityRef.GetUnionCaseByName(System.String)DP:Microsoft.FSharp.Compiler.Tast.EntityRef.FSharpObjectModelTypeInfoKP:Microsoft.FSharp.Compiler.Tast.EntityRef.ImmediateInterfacesOfFSharpTyconOP:Microsoft.FSharp.Compiler.Tast.EntityRef.ImmediateInterfaceTypesOfFSharpTyconEP:Microsoft.FSharp.Compiler.Tast.EntityRef.MembersOfFSharpTyconSortedEP:Microsoft.FSharp.Compiler.Tast.EntityRef.MembersOfFSharpTyconByName>P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsStructOrEnumTycon9P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsAsmReprTyconAP:Microsoft.FSharp.Compiler.Tast.EntityRef.IsMeasureableReprTycon3P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsErasedSP:Microsoft.FSharp.Compiler.Tast.EntityRef.GeneratedHashAndEqualsWithComparerValuesOP:Microsoft.FSharp.Compiler.Tast.EntityRef.GeneratedCompareToWithComparerValuesCP:Microsoft.FSharp.Compiler.Tast.EntityRef.GeneratedCompareToValuesGP:Microsoft.FSharp.Compiler.Tast.EntityRef.GeneratedHashAndEqualsValues4P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsILTycon6P:Microsoft.FSharp.Compiler.Tast.EntityRef.ILTyconInfo=P:Microsoft.FSharp.Compiler.Tast.EntityRef.ILTyconRawMetadata7P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsUnionTycon8P:Microsoft.FSharp.Compiler.Tast.EntityRef.IsRecordTyconCP:Microsoft.FSharp.Compiler.Tast.EntityRef.IsFSharpObjectModelTyconT:Microsoft.FSharp.Compiler.Tast.ValBaseOrThisInfo.CtorThisValBaseVal:T:Microsoft.FSharp.Compiler.Tast.ValBaseOrThisInfo.BaseVal NormalValF:Microsoft.FSharp.Compiler.Tast.EntityData.entity_tycon_tcaugentity_exn_info;F:Microsoft.FSharp.Compiler.Tast.EntityData.entity_exn_infoentity_modul_contentsAF:Microsoft.FSharp.Compiler.Tast.EntityData.entity_modul_contents entity_xmldoc9F:Microsoft.FSharp.Compiler.Tast.EntityData.entity_xmldocentity_xmldocsigF:Microsoft.FSharp.Compiler.Tast.TyconAugmentation.tcaug_adhoctcaug_interfacesCF:Microsoft.FSharp.Compiler.Tast.TyconAugmentation.tcaug_interfaces tcaug_super>F:Microsoft.FSharp.Compiler.Tast.TyconAugmentation.tcaug_super tcaug_closed?F:Microsoft.FSharp.Compiler.Tast.TyconAugmentation.tcaug_closedtcaug_abstractAF:Microsoft.FSharp.Compiler.Tast.TyconAugmentation.tcaug_abstractTFsObjModelReprDT:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TFsObjModelRepr TRecdRepr>T:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TRecdReprTFiniteUnionReprET:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TFiniteUnionReprTILObjModelReprDT:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TILObjModelReprTAsmRepr=T:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TAsmReprTMeasureableReprET:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TMeasureableReprTProvidedTypeExtensionPointPT:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TProvidedTypeExtensionPoint TProvidedNamespaceExtensionPointUT:Microsoft.FSharp.Compiler.Tast.TyconRepresentation.TProvidedNamespaceExtensionPointTNoReprF:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.IsInterfaceIsStructOrEnumAF:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.IsStructOrEnumIsEnum9F:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.IsEnumUnderlyingTypeOfEnumGF:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.UnderlyingTypeOfEnum IsDelegate=F:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.IsDelegateIsErasedIsSuppressRelocateEF:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo.IsSuppressRelocate2T:Microsoft.FSharp.Compiler.Tast.TProvidedTypeInfo TTyconClass>T:Microsoft.FSharp.Compiler.Tast.TyconObjModelKind.TTyconClassTTyconInterfaceBT:Microsoft.FSharp.Compiler.Tast.TyconObjModelKind.TTyconInterface TTyconStruct?T:Microsoft.FSharp.Compiler.Tast.TyconObjModelKind.TTyconStructTTyconDelegateAT:Microsoft.FSharp.Compiler.Tast.TyconObjModelKind.TTyconDelegate TTyconEnum=T:Microsoft.FSharp.Compiler.Tast.TyconObjModelKind.TTyconEnumfsobjmodel_kindBF:Microsoft.FSharp.Compiler.Tast.TyconObjModelData.fsobjmodel_kindfsobjmodel_vslotsDF:Microsoft.FSharp.Compiler.Tast.TyconObjModelData.fsobjmodel_vslotsfsobjmodel_rfieldsEF:Microsoft.FSharp.Compiler.Tast.TyconObjModelData.fsobjmodel_rfields FieldsByIndex>F:Microsoft.FSharp.Compiler.Tast.TyconRecdFields.FieldsByIndex FieldsByName=F:Microsoft.FSharp.Compiler.Tast.TyconRecdFields.FieldsByName CasesByIndex=F:Microsoft.FSharp.Compiler.Tast.TyconUnionCases.CasesByIndex CasesByNameT:Microsoft.FSharp.Compiler.Tast.TraitConstraintSln.BuiltInSln3T:Microsoft.FSharp.Compiler.Tast.TraitConstraintSlnMemberParentMangledNameMF:Microsoft.FSharp.Compiler.Tast.ValLinkagePartialKey.MemberParentMangledNameMemberIsOverrideFF:Microsoft.FSharp.Compiler.Tast.ValLinkagePartialKey.MemberIsOverride LogicalNameAF:Microsoft.FSharp.Compiler.Tast.ValLinkagePartialKey.LogicalName TotalArgCountCF:Microsoft.FSharp.Compiler.Tast.ValLinkagePartialKey.TotalArgCount5T:Microsoft.FSharp.Compiler.Tast.ValLinkagePartialKey2T:Microsoft.FSharp.Compiler.Tast.ValLinkageFullKey {LogicalName}{val_logical_name}val_logical_nameval_compiled_name val_rangeval_defn_rangeval_type val_stamp val_flags2F:Microsoft.FSharp.Compiler.Tast.ValData.val_flags val_constval_defn1F:Microsoft.FSharp.Compiler.Tast.ValData.val_defn val_access3F:Microsoft.FSharp.Compiler.Tast.ValData.val_accessval_member_info8F:Microsoft.FSharp.Compiler.Tast.ValData.val_member_info val_attribs4F:Microsoft.FSharp.Compiler.Tast.ValData.val_attribs val_repr_infoval_actual_parent val_xmldoc3F:Microsoft.FSharp.Compiler.Tast.ValData.val_xmldoc val_xmldocsig6F:Microsoft.FSharp.Compiler.Tast.ValData.val_xmldocsigApparentParent=F:Microsoft.FSharp.Compiler.Tast.ValMemberInfo.ApparentParentImplementedSlotSigsBF:Microsoft.FSharp.Compiler.Tast.ValMemberInfo.ImplementedSlotSigs IsImplementedT:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceExpr.TMDefDoModuleOrNamespaceBindingTMDefRec?T:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceExpr.TMDefRec6T:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceExpr9T:Microsoft.FSharp.Compiler.Tast.ModuleOrNamespaceBindingQualifiedNameOfFile ScopedPragma TImplFile.T:Microsoft.FSharp.Compiler.Tast.TypedImplFile TAssembly.T:Microsoft.FSharp.Compiler.Tast.TypedAssembly+T:Microsoft.FSharp.Compiler.Tast.FreeLocals+T:Microsoft.FSharp.Compiler.Tast.FreeTypars+T:Microsoft.FSharp.Compiler.Tast.FreeTyconsFreeRecdFields/T:Microsoft.FSharp.Compiler.Tast.FreeRecdFieldsFreeUnionCases/T:Microsoft.FSharp.Compiler.Tast.FreeUnionCases6F:Microsoft.FSharp.Compiler.Tast.FreeTyvars.FreeTyconsFreeTraitSolutions>F:Microsoft.FSharp.Compiler.Tast.FreeTyvars.FreeTraitSolutions6F:Microsoft.FSharp.Compiler.Tast.FreeTyvars.FreeTypars+T:Microsoft.FSharp.Compiler.Tast.FreeTyvars.T:Microsoft.FSharp.Compiler.Tast.FreeVarsCache4F:Microsoft.FSharp.Compiler.Tast.FreeVars.FreeLocalsUsesMethodLocalConstructsCF:Microsoft.FSharp.Compiler.Tast.FreeVars.UsesMethodLocalConstructsUsesUnboundRethrowT:Microsoft.FSharp.Compiler.SourceCodeServices.TypeCheckAnswer TriggerClassvalue__None MemberSelect ChoiceSelect MethodTip ParamStart ParamNextParamEndEnumNestedBT:Microsoft.FSharp.Compiler.SourceCodeServices.TopLevelDeclaration LeftColumnwF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.LeftColumn RightColumnxF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.RightColumn ColorClass TokenCharKind CharClassyF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.TriggerClassTagpF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.Tag TokenNamevF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.TokenNameFullMatchedLength~F:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformation.FullMatchedLength?T:Microsoft.FSharp.Compiler.SourceCodeServices.TokenInformationDefaultKeywordComment IdentifierUpperIdentifier InactiveCodePreprocessorKeywordNumberOperatorLiteral Delimiter WhiteSpace LineComment TestHooks8T:Microsoft.FSharp.Compiler.SourceCodeServices.TestHooksFormatOverloadsToListScope IDisposable TestExpose9T:Microsoft.FSharp.Compiler.SourceCodeServices.TestExpose TokenInfoParsertoken>T:Microsoft.FSharp.Compiler.SourceCodeServices.SourceTokenizerSourceFileImpl=T:Microsoft.FSharp.Compiler.SourceCodeServices.SourceFileImplIsInterfaceFileAdditionalDefinesForUseInEditor SourceFile9T:Microsoft.FSharp.Compiler.SourceCodeServices.SourceFile IsCompilableUM:Microsoft.FSharp.Compiler.SourceCodeServices.SourceFile.IsCompilable(System.String)MustBeSingleFileProject`M:Microsoft.FSharp.Compiler.SourceCodeServices.SourceFile.MustBeSingleFileProject(System.String)CompletionPath CopyOnUpdate ConstructorReactor_/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/Reactor.fsi6T:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor StartBuilding^/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/Reactor.fs BuildStepperbuild€™M:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.StartBuilding(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.Boolean})StartBuildingRecentRM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.StartBuildingRecent StopBuildingKM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.StopBuildingWM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.WaitForBackgroundCompileSyncOp Operationop€žM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.SyncOp(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})AsyncOp€ŸM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.AsyncOp(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}) RunSyncOp€M:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.RunSyncOp``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0}) RunAsyncOp€ŽM:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor.RunAsyncOp``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0})>M:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.ReactorCT:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.BuildStepper@T:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Operation>T:Microsoft.FSharp.Compiler.SourceCodeServices.Reactor.Reactor4T:Microsoft.FSharp.Compiler.SourceCodeServices.Range;T:Microsoft.FSharp.Compiler.SourceCodeServices.PrettyNamingIsIdentifierPartCharacterIsLongIdentifierPartCharacterGetLongNameFromStringFormatAndOtherOverloadsString7T:Microsoft.FSharp.Compiler.SourceCodeServices.PositionCanonicalTypeTextForSortingDisplay DescriptionNT:Microsoft.FSharp.Compiler.SourceCodeServices.NotifyFileTypeCheckStateIsDirty NoteworthyParamInfoLocationsImplOT:Microsoft.FSharp.Compiler.SourceCodeServices.NoteworthyParamInfoLocationsImpl>T:Microsoft.FSharp.Compiler.SourceCodeServices.NavigationItemsNavigationImpl=T:Microsoft.FSharp.Compiler.SourceCodeServices.NavigationImplgetNavigationFromImplFileSynModuleOrNamespaceempty ParametersIsStaticArgumentstF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.Method.IsStaticArgumentsT:Microsoft.FSharp.Compiler.SourceCodeServices.DeclarationItemDebuggerEnvironmentBT:Microsoft.FSharp.Compiler.SourceCodeServices.DebuggerEnvironment GetLanguageIDGuidPM:Microsoft.FSharp.Compiler.SourceCodeServices.DebuggerEnvironment.GetLanguageIDFT:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipText.DataTipText:T:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipTextDataTipElementNoneLT:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElement.DataTipElementDataTipElementGroupQT:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElement.DataTipElementGroupDataTipElementCompositionError\T:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElement.DataTipElementCompositionError=T:Microsoft.FSharp.Compiler.SourceCodeServices.DataTipElementInvalidInherit RecordField RangeOperatorCompilerEnvironmentBT:Microsoft.FSharp.Compiler.SourceCodeServices.CompilerEnvironment!DefaultReferencesForOrphanSourcesdP:Microsoft.FSharp.Compiler.SourceCodeServices.CompilerEnvironment.DefaultReferencesForOrphanSourcesGetCompilationDefinesForEditing compilerFlags€¨M:Microsoft.FSharp.Compiler.SourceCodeServices.CompilerEnvironment.GetCompilationDefinesForEditing(System.String,Microsoft.FSharp.Collections.FSharpList{System.String})IsCheckerSupportedSubcategoryoM:Microsoft.FSharp.Compiler.SourceCodeServices.CompilerEnvironment.IsCheckerSupportedSubcategory(System.String)Token IfDefSkipStringInCommentVerbatimStringInCommentCamlOnlyVerbatimStringSingleLineCommentEndLineThenSkipEndLineThenTokenTripleQuoteStringTripleQuoteStringInComment InitialStateProjectFileNameProjectFileNamesProjectOptions IsIncompleteTypeCheckEnvironment€‰F:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions.IsIncompleteTypeCheckEnvironmentUseScriptResolutionRules€F:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions.UseScriptResolutionRulesLoadTimeqF:Microsoft.FSharp.Compiler.SourceCodeServices.Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions.LoadTimeUnresolvedReferences;T:Microsoft.FSharp.Compiler.SourceCodeServices.CheckOptions AstTraversalk/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/ServiceParseTreeWalk.fs;T:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal!rangeContainsPosLeftEdgeInclusiverangeContainsPosEdgesExclusive VisitExprAstVisitorBase`1 TraversePathSynExprËM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitExpr(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.TraverseStep},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynExpr,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynExpr,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Compiler.Ast.SynExpr)VisitTypeAbbrevSynType€©M:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitTypeAbbrev(Microsoft.FSharp.Compiler.Ast.SynType,Microsoft.FSharp.Compiler.Range.range)VisitImplicitInheritCM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitImplicitInherit(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynExpr,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Compiler.Ast.SynType,Microsoft.FSharp.Compiler.Ast.SynExpr,Microsoft.FSharp.Compiler.Range.range)VisitModuleDecl SynModuleDecl€þM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitModuleDecl(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynModuleDecl,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Compiler.Ast.SynModuleDecl) VisitBinding SynBinding€õM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitBinding(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynBinding,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Compiler.Ast.SynBinding)VisitMatchClauseSynMatchClauseM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase`1.VisitMatchClause(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Ast.SynMatchClause,Microsoft.FSharp.Core.FSharpOption{`0}},Microsoft.FSharp.Compiler.Ast.SynMatchClause)VisitInheritSynMemberDefnSynComponentInfoSynTypeDefnKindSynMemberDefnsVisitInterfaceSynMemberDefnTypeVisitRecordFieldLongIdentWithDots_ty_mdefaultTraversedeclmc_componentInfo _typeDefnKind_synType_members_range_path_copyOpt _recordFielddivenodeprojectpick_line_col outerRange _debugObj diveResultsTraverse parseTreevisitor€ÚM:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.Traverse``1(System.Int32,System.Int32,Microsoft.FSharp.Compiler.Ast.ParsedInput,Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.AstVisitorBase{``0}) TraverseStepModule SynTypeDefnTypeDefn SynMemberDefn MemberDefn MatchClauseHT:Microsoft.FSharp.Compiler.SourceCodeServices.AstTraversal.TraverseStepAbstractClassAttributeWarningSRW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../sr.fsiT:Microsoft.FSharp.Compiler.SR GetStringV/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../sr.fs GetObjectZ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../range.fsi!T:Microsoft.FSharp.Compiler.RangefileIndexOfFileY/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../range.fs FileIndexfileOfFileIndexget_Line get_Column get_EncodingDecodeget_EncodingSize2P:Microsoft.FSharp.Compiler.Range.pos.EncodingSizemkPoscolumnBM:Microsoft.FSharp.Compiler.Range.mkPos(System.Int32,System.Int32)posOrder get_StartLineget_StartColumn get_EndLine get_EndColumn get_Startget_Endget_StartRange get_EndRange get_FileIndexget_IsSynthetic3P:Microsoft.FSharp.Compiler.Range.range.IsSynthetic MakeSynthetic ToShortStringget_ZeromkFileIndexRange€ˆM:Microsoft.FSharp.Compiler.Range.mkFileIndexRange(System.Int32,Microsoft.FSharp.Compiler.Range.pos,Microsoft.FSharp.Compiler.Range.pos)mkRange€€M:Microsoft.FSharp.Compiler.Range.mkRange(System.String,Microsoft.FSharp.Compiler.Range.pos,Microsoft.FSharp.Compiler.Range.pos)trimRangeToLine rangeOrder,P:Microsoft.FSharp.Compiler.Range.rangeOrder outputPosIO TextWriter outputRange boutputPos boutputRangeposLtposGtposEqposGeq unionRangesrangeContainsRangerangeContainsPosrangeBeforePosrangeNpos0range0 rangeStartup rangeCmdArgs stringOfPos stringOfRangeCustomEqualityAttributePos%T:Microsoft.FSharp.Compiler.Range.PosfromVStoVS'T:Microsoft.FSharp.Compiler.Range.RangeQuotationTranslator]/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../creflect.fsi/T:Microsoft.FSharp.Compiler.QuotationTranslator\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../creflect.fsQuotationTranslationEnv BindTyparsInvalidQuotedTermIgnoringPartOfQuotedTermWarningIsReflectedDefinitionConvExprPublicConvMethodBaseMethodBaseData]/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../sreflect.fsi,T:Microsoft.FSharp.Compiler.QuotationPickler TypeVarData NamedTypeDatamkVarTy\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../sreflect.fsTypeData mkILNamedTyCtorData MethodDataModuleDefnDatamkVar mkThisVarmkHolemkAppVarDatamkQuotemkModuleValueAppmkLetRecmkRecdMk mkRecdGet RecdFieldData mkRecdSetmkSum mkSumFieldGet mkSumTagTestmkTuple mkTupleGetmkCoerce mkNewArray mkTypeTest mkAddressSetmkVarSetmkDefaultValuemkSinglefloat32mkDoublefloatmkCharmkSBytemkInt16mkUInt32mkInt64mkUInt64 mkAddressOf mkForLoop mkWhileLoop mkDelegate mkPropGet PropInfoData mkPropSet mkFieldGet FieldData mkFieldSet mkCtorCall mkMethodCallmkAttributedExpressionpickle PickleDefns"pickledDefinitionsResourceNameBasefreshVartvNametcName tcAssembly ctorParent ctorArgTypes methParentmethName methArgTypes methRetTypenumGenericArgs IsProperty ModuleDefnCtor`/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../PrettyNaming.fs(T:Microsoft.FSharp.Compiler.PrettyNamingparenGet1P:Microsoft.FSharp.Compiler.PrettyNaming.parenGetparenSetqmarkqmarkSet opNameTableopCharTranslateTable opCharDictIsOpName CompileOpNameIsMangledOpNameDecompileOpName opNameCons opNameNil opNameEqualsopNameEqualsNullableopNameNullableEqualsopNameNullableEqualsNullableIsIdentifierFirstCharacterPM:Microsoft.FSharp.Compiler.PrettyNaming.IsIdentifierFirstCharacter(System.Char)OM:Microsoft.FSharp.Compiler.PrettyNaming.IsIdentifierPartCharacter(System.Char)SM:Microsoft.FSharp.Compiler.PrettyNaming.IsLongIdentifierPartCharacter(System.Char)IsValidPrefixOperatorUses#IsValidPrefixOperatorDefinitionNameIsPrefixOperatorIsTernaryOperatorIsInfixOperator6|Control|Equality|Relational|Indexer|FixedTypes|Other|Choice`6opNamecompilerGeneratedMarkercompilerGeneratedMarkerCharIsCompilerGeneratedNameCompilerGeneratedName+GetBasicNameOfPossibleCompilerGeneratedNameCompilerGeneratedNameSuffix basicNamesuffixmangledGenericTypeNameSymIsMangledGenericNameDecodeGenericTypeNameDemangleGenericTypeName chopStringToTryChopPropertyNameKM:Microsoft.FSharp.Compiler.PrettyNaming.TryChopPropertyName(System.String)ChopPropertyNameDemangleOperatorNameSplitNamesForILPathsplitAroundQuotationtext separatorsplitAroundQuotationWithCountcountFSharpModuleSuffixMangledGlobalName(IllegalCharactersInTypeAndNamespaceNamesIsActivePatternNameget_ActiveTagsActivePatternInfoOfValNamemangleStaticStringArgtryDemangleStaticStringArg mangledTextInvalidMangledStaticArgdemangleProvidedTypeNametypeLogicalNamemangleProvidedTypeNamenonDefaultArgsAPInfoPostTypecheckSemanticChecksZ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../check.fsi7T:Microsoft.FSharp.Compiler.PostTypecheckSemanticCheckstestFlagMemberBodyY/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../check.fs CheckTopImplPickle[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../pickle.fsi"T:Microsoft.FSharp.Compiler.PickleZ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../pickle.fsRawDataPickledDataWithReferences`1 OptionalFixup€ÉM:Microsoft.FSharp.Compiler.Pickle.PickledDataWithReferences`1.OptionalFixup(Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Tast.CcuThunk}})p_byte WriterStatep_boolp_intp_stringp_lazy pickler`1p_tup2T1T2p_tup3T3p_tup4T4p_array p_namemapp_constp_vrefp_tcrefp_ucrefp_exprp_typpickleModuleOrNamespacepickleModuleInfopickleObjWithDanglingCcusscopeu_byte ReaderStateu_boolu_intu_stringu_lazy unpickler`1u_tup2u_tup3u_tup4T5u_array u_namemapu_constu_vrefu_tcrefu_ucrefu_expru_typunpickleModuleOrNamespaceunpickleModuleInfounpickleObjWithDanglingCcus ILModuleDef viewedScopeilModuleFF:Microsoft.FSharp.Compiler.Pickle.PickledDataWithReferences`1.RawData FixupThunksJF:Microsoft.FSharp.Compiler.Pickle.PickledDataWithReferences`1.FixupThunks Patcompile_/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../patcompile.fsi&T:Microsoft.FSharp.Compiler.PatcompileActionOnFailure^/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../patcompile.fsPatternCompilePatternTypedMatchClause‚`M:Microsoft.FSharp.Compiler.Patcompile.CompilePattern(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Range.range,System.Boolean,Microsoft.FSharp.Compiler.Patcompile.ActionOnFailure,Microsoft.FSharp.Compiler.Tast.Val,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Typar},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Patcompile.TypedMatchClause},Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Tast.TType)MatchIncompleteRuleNeverMatchedThrowIncompleteMatchExceptionIgnoreWithWarningThrowRethrow FailFilter6T:Microsoft.FSharp.Compiler.Patcompile.ActionOnFailure TPat_const TPat_wildPatternValBindingTPat_as TPat_disjs TPat_conjs TPat_queryTPat_unioncaseTPat_exnconstr TPat_tuple TPat_array TPat_recd TPat_range TPat_null TPat_isinst.T:Microsoft.FSharp.Compiler.Patcompile.PatternPBindTClause[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/.libs/pars.fs"T:Microsoft.FSharp.Compiler.Parser debugPrint ../pars.fsyexprFromParseErrorpatFromParseErrorSynPatmkSynOptionalExprxopt rebindRangesfieldslastSepmkUnderscoreRecdField mkRecdFieldlidwdmkSynDoBindingvisstrict mkSynDoDecl addAttribs SynAttributesattrsparse_error_richParsingParseErrorContext`1reportParseErrorAtunionRangeWithPosraiseParseErrorAtcheckEndOfFileErrorLexerWhitespaceContinuationtmkClassMemberLocalBindings SynAccess BindingSetisStaticinitialRangeOptmkLocalBindingsmWholemkDefnBindingsattrsmidOfPatcheckForMultipleAugmentationsa1a2 grabXmlDoc IParseState PreXmlDoc parseStateelemIdxunionRangeWithListByprojectRangeFromThing listOfThingrangeOfNonNilAttrsrangeOfLongIdentlid .libs/pars.fstokenId nonTerminalId tagOfTokentokenTagToTokenIdtokenIdxprodIdxToNonTerminalprodIdxEM:Microsoft.FSharp.Compiler.Parser.prodIdxToNonTerminal(System.Int32)_fsyacc_endOfInputTag_fsyacc_tagOfErrorTerminaltoken_to_string_fsyacc_dataOfToken _fsyacc_gotos!_fsyacc_sparseGotoTableRowOffsets$_fsyacc_stateToProdIdxsTableElements&_fsyacc_stateToProdIdxsTableRowOffsets_fsyacc_action_rows_fsyacc_actionTableElements_fsyacc_actionTableRowOffsets_fsyacc_reductionSymbolCounts$_fsyacc_productionToNonTerminalTable_fsyacc_immediateActions_fsyacc_reductionstablesTables`1enginelexerlexbuf startState signatureFile ParsedSigFileimplementationFileParsedImplFile interactionParsedFsiInteractionBindingSetPreAttrsHASH_IF HASH_ELSE HASH_ENDIFCOMMENT WHITESPACE HASH_LINE HASH_LIGHT INACTIVECODE LINE_COMMENT STRING_TEXTEOF LEX_FAILUREODUMMYOINTERFACE_MEMBER OBLOCKENDOBLOCKEND_COMING_SOONOBLOCKEND_IS_HEREORIGHT_BLOCK_ENDODECLENDOEND OBLOCKSEP OBLOCKBEGINORESETOFUN OFUNCTIONOWITHOELSEOTHENODO_BANGODOOBINDEROLETHIGH_PRECEDENCE_TYAPPHIGH_PRECEDENCE_PAREN_APPHIGH_PRECEDENCE_BRACK_APPTYPE_COMING_SOON TYPE_IS_HEREMODULE_COMING_SOONMODULE_IS_HEREEXTERNVOIDPUBLICPRIVATEINTERNALGLOBALSTATICMEMBERCLASSABSTRACTOVERRIDEDEFAULT CONSTRUCTORINHERITGREATER_RBRACKSTRUCTSIGBARRBRACKRBRACERBRACE_COMING_SOONRBRACE_IS_HEREMINUSDOLLAR LBRACE_LESS BAR_RBRACKGREATER_RBRACE UNDERSCORESEMICOLON_SEMICOLONLARROWEQUALSLBRACK LBRACK_BAR LBRACK_LESSLBRACEQMARK QMARK_QMARKDOTCOLON COLON_COLON COLON_GREATERCOLON_QMARK_GREATER COLON_QMARK COLON_EQUALS SEMICOLONWHENWHILEWITHHASHAMPAMP_AMPQUOTELPARENRPARENRPAREN_COMING_SOONRPAREN_IS_HERESTARCOMMARARROWGREATER_BAR_RBRACKLPAREN_STAR_RPARENOPENORRECTHENTOTRUETRYTYPEVALINLINE INTERFACEINSTANCECONSTLAZYOLAZYMATCHMUTABLENEWOF EXCEPTIONFALSEFORFUNFUNCTIONIFINJOIN_INFINALLYDO_BANGANDASASSERTOASSERTASRBEGINDODONEDOWNTOELSEELIFENDDOT_DOTBAR_BARUPCASTDOWNCASTNULLRESERVEDMODULE NAMESPACEDELEGATE CONSTRAINTBASELQUOTERQUOTE RQUOTE_DOT PERCENT_OPBINDERLESSGREATERLETYIELD YIELD_BANGBIGNUMDECIMALCHARIEEE64IEEE32 NATIVEINT UNATIVEINTUINT64UINT32UINT16UINT8INT64INT32 INT32_DOT_DOTINT16INT8FUNKY_OPERATOR_NAMEADJACENT_PREFIX_OP PLUS_MINUS_OP INFIX_AMP_OPINFIX_STAR_DIV_MOD_OP PREFIX_OP INFIX_BAR_OPINFIX_AT_HAT_OPINFIX_COMPARE_OPINFIX_STAR_STAR_OPIDENTKEYWORD_STRINGSTRING BYTEARRAY TOKEN_HASH_IFTOKEN_HASH_ELSETOKEN_HASH_ENDIF TOKEN_COMMENTTOKEN_WHITESPACETOKEN_HASH_LINETOKEN_HASH_LIGHTTOKEN_INACTIVECODETOKEN_LINE_COMMENTTOKEN_STRING_TEXT TOKEN_EOFTOKEN_LEX_FAILURE TOKEN_ODUMMYTOKEN_OINTERFACE_MEMBERTOKEN_OBLOCKENDTOKEN_OBLOCKEND_COMING_SOONTOKEN_OBLOCKEND_IS_HERETOKEN_ORIGHT_BLOCK_ENDTOKEN_ODECLEND TOKEN_OENDTOKEN_OBLOCKSEPTOKEN_OBLOCKBEGIN TOKEN_ORESET TOKEN_OFUNTOKEN_OFUNCTION TOKEN_OWITH TOKEN_OELSE TOKEN_OTHENTOKEN_ODO_BANG TOKEN_ODO TOKEN_OBINDER TOKEN_OLETTOKEN_HIGH_PRECEDENCE_TYAPPTOKEN_HIGH_PRECEDENCE_PAREN_APPTOKEN_HIGH_PRECEDENCE_BRACK_APPTOKEN_TYPE_COMING_SOONTOKEN_TYPE_IS_HERETOKEN_MODULE_COMING_SOONTOKEN_MODULE_IS_HERE TOKEN_EXTERN TOKEN_VOID TOKEN_PUBLIC TOKEN_PRIVATETOKEN_INTERNAL TOKEN_GLOBAL TOKEN_STATIC TOKEN_MEMBER TOKEN_CLASSTOKEN_ABSTRACTTOKEN_OVERRIDE TOKEN_DEFAULTTOKEN_CONSTRUCTOR TOKEN_INHERITTOKEN_GREATER_RBRACK TOKEN_STRUCT TOKEN_SIG TOKEN_BAR TOKEN_RBRACK TOKEN_RBRACETOKEN_RBRACE_COMING_SOONTOKEN_RBRACE_IS_HERE TOKEN_MINUS TOKEN_DOLLARTOKEN_LBRACE_LESSTOKEN_BAR_RBRACKTOKEN_GREATER_RBRACETOKEN_UNDERSCORETOKEN_SEMICOLON_SEMICOLON TOKEN_LARROW TOKEN_EQUALS TOKEN_LBRACKTOKEN_LBRACK_BARTOKEN_LBRACK_LESS TOKEN_LBRACE TOKEN_QMARKTOKEN_QMARK_QMARK TOKEN_DOT TOKEN_COLONTOKEN_COLON_COLONTOKEN_COLON_GREATERTOKEN_COLON_QMARK_GREATERTOKEN_COLON_QMARKTOKEN_COLON_EQUALSTOKEN_SEMICOLON TOKEN_WHEN TOKEN_WHILE TOKEN_WITH TOKEN_HASH TOKEN_AMP TOKEN_AMP_AMP TOKEN_QUOTE TOKEN_LPAREN TOKEN_RPARENTOKEN_RPAREN_COMING_SOONTOKEN_RPAREN_IS_HERE TOKEN_STAR TOKEN_COMMA TOKEN_RARROWTOKEN_GREATER_BAR_RBRACKTOKEN_LPAREN_STAR_RPAREN TOKEN_OPENTOKEN_OR TOKEN_REC TOKEN_THENTOKEN_TO TOKEN_TRUE TOKEN_TRY TOKEN_TYPE TOKEN_VAL TOKEN_INLINETOKEN_INTERFACETOKEN_INSTANCE TOKEN_CONST TOKEN_LAZY TOKEN_OLAZY TOKEN_MATCH TOKEN_MUTABLE TOKEN_NEWTOKEN_OFTOKEN_EXCEPTION TOKEN_FALSE TOKEN_FOR TOKEN_FUNTOKEN_FUNCTIONTOKEN_IFTOKEN_IN TOKEN_JOIN_IN TOKEN_FINALLY TOKEN_DO_BANG TOKEN_ANDTOKEN_AS TOKEN_ASSERT TOKEN_OASSERT TOKEN_ASR TOKEN_BEGINTOKEN_DO TOKEN_DONE TOKEN_DOWNTO TOKEN_ELSE TOKEN_ELIF TOKEN_END TOKEN_DOT_DOT TOKEN_BAR_BAR TOKEN_UPCASTTOKEN_DOWNCAST TOKEN_NULLTOKEN_RESERVED TOKEN_MODULETOKEN_NAMESPACETOKEN_DELEGATETOKEN_CONSTRAINT TOKEN_BASE TOKEN_LQUOTE TOKEN_RQUOTETOKEN_RQUOTE_DOTTOKEN_PERCENT_OP TOKEN_BINDER TOKEN_LESS TOKEN_GREATER TOKEN_LET TOKEN_YIELDTOKEN_YIELD_BANG TOKEN_BIGNUM TOKEN_DECIMAL TOKEN_CHAR TOKEN_IEEE64 TOKEN_IEEE32TOKEN_NATIVEINTTOKEN_UNATIVEINT TOKEN_UINT64 TOKEN_UINT32 TOKEN_UINT16 TOKEN_UINT8 TOKEN_INT64 TOKEN_INT32TOKEN_INT32_DOT_DOT TOKEN_INT16 TOKEN_INT8TOKEN_FUNKY_OPERATOR_NAMETOKEN_ADJACENT_PREFIX_OPTOKEN_PLUS_MINUS_OPTOKEN_INFIX_AMP_OPTOKEN_INFIX_STAR_DIV_MOD_OPTOKEN_PREFIX_OPTOKEN_INFIX_BAR_OPTOKEN_INFIX_AT_HAT_OPTOKEN_INFIX_COMPARE_OPTOKEN_INFIX_STAR_STAR_OP TOKEN_IDENTTOKEN_KEYWORD_STRING TOKEN_STRINGTOKEN_BYTEARRAYTOKEN_end_of_input TOKEN_errorNONTERM__startsignatureFile NONTERM__startimplementationFileNONTERM__startinteractionNONTERM_interactionNONTERM_hashDirectiveNONTERM_stringOrKeywordStringNONTERM_hashDirectiveArgNONTERM_hashDirectiveArgsNONTERM_interactiveTerminator"NONTERM_interactiveItemsTerminatorNONTERM_interactiveModuleDefnsNONTERM_interactiveExprNONTERM_interactiveHashNONTERM_signatureFileNONTERM_implementationFileNONTERM_moduleIntroNONTERM_namespaceIntroNONTERM_fileNamespaceSpecsNONTERM_fileNamespaceSpecListNONTERM_fileNamespaceSpecNONTERM_fileNamespaceImplsNONTERM_fileNamespaceImplListNONTERM_fileNamespaceImplNONTERM_fileModuleSpecNONTERM_fileModuleImpl%NONTERM_moduleSpfnsPossiblyEmptyBlock NONTERM_moduleSpfnsPossiblyEmptyNONTERM_moduleSpfns-NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock&NONTERM_moduleDefnsOrExprPossiblyEmptyNONTERM_moduleDefnsOrExprNONTERM_moduleDefnsNONTERM_moduleDefnOrDirectiveNONTERM_moduleDefnNONTERM_namedModuleAbbrevBlockNONTERM_namedModuleDefnBlockNONTERM_wrappedNamedModuleDefnNONTERM_opt_signatureNONTERM_tyconDefnAugmentationNONTERM_moduleSpfnNONTERM_valSpfnNONTERM_opt_literalValueNONTERM_moduleSpecBlockNONTERM_opt_attributesNONTERM_attributesNONTERM_attributeListNONTERM_attributeListElementsNONTERM_attributeNONTERM_attributeTargetNONTERM_tyconSpfnsNONTERM_tyconSpfnListNONTERM_tyconSpfnNONTERM_tyconSpfnRhsBlockNONTERM_tyconSpfnRhsNONTERM_tyconClassSpfn%NONTERM_classSpfnBlockKindUnspecifiedNONTERM_classSpfnBlockNONTERM_classSpfnMembers"NONTERM_classSpfnMembersAtLeastOneNONTERM_memberFlagsNONTERM_memberSpecFlagsNONTERM_classMemberSpfnGetSet%NONTERM_classMemberSpfnGetSetElementsNONTERM_classMemberSpfnNONTERM_typeNameInfoNONTERM_tyconDefnListNONTERM_tyconDefnNONTERM_tyconDefnRhsBlockNONTERM_tyconDefnRhsNONTERM_tyconClassDefn%NONTERM_classDefnBlockKindUnspecifiedNONTERM_classDefnBlockNONTERM_classDefnMembers"NONTERM_classDefnMembersAtLeastOneNONTERM_classDefnMemberGetSet%NONTERM_classDefnMemberGetSetElements$NONTERM_classDefnMemberGetSetElementNONTERM_memberCoreNONTERM_abstractMemberFlagsNONTERM_classDefnMemberNONTERM_valDefnDeclNONTERM_autoPropsDefnDeclNONTERM_opt_typNONTERM_atomicPatternLongIdentNONTERM_opt_accessNONTERM_accessNONTERM_opt_declVisibilityNONTERM_opt_interfaceImplDefnNONTERM_opt_classDefnNONTERM_opt_classSpfnNONTERM_inheritsDefnNONTERM_optAsSpecNONTERM_asSpecNONTERM_optBaseSpecNONTERM_baseSpec!NONTERM_objectImplementationBlock#NONTERM_objectImplementationMembers"NONTERM_objectImplementationMemberNONTERM_memberOrOverride!NONTERM_tyconDefnOrSpfnSimpleReprNONTERM_braceFieldDeclListNONTERM_inlineAssemblyTyconRepr NONTERM_classOrInterfaceOrStructNONTERM_interfaceMemberNONTERM_tyconNameAndTyparDeclsNONTERM_prefixTyparDeclsNONTERM_prefixTyparDeclListNONTERM_typarDeclNONTERM_postfixTyparDecls!NONTERM_explicitValTyparDeclsCoreNONTERM_explicitValTyparDecls!NONTERM_opt_explicitValTyparDecls"NONTERM_opt_explicitValTyparDecls2NONTERM_opt_typeConstraintsNONTERM_typeConstraintsNONTERM_typeConstraintNONTERM_typarAltsNONTERM_unionReprNONTERM_barAndgrabXmlDocNONTERM_attrUnionCaseDeclsNONTERM_attrUnionCaseDeclNONTERM_unionCaseName NONTERM_firstUnionCaseDeclOfManyNONTERM_firstUnionCaseDeclNONTERM_unionCaseReprNONTERM_recdFieldDeclListNONTERM_recdFieldDeclNONTERM_fieldDeclNONTERM_exconDefnNONTERM_exconSpfnNONTERM_exceptionAndGrabDocNONTERM_exconCoreNONTERM_exconIntroNONTERM_exconReprNONTERM_openDeclNONTERM_defnBindingsNONTERM_doBindingNONTERM_hardwhiteLetBindingsNONTERM_hardwhiteDoBindingNONTERM_classDefnBindings'NONTERM_hardwhiteDefnBindingsTerminatorNONTERM_cPrototype NONTERM_cArgsNONTERM_cMoreArgs NONTERM_cArg NONTERM_cTypeNONTERM_cRetTypeNONTERM_localBindingsNONTERM_moreLocalBindingsNONTERM_attr_localBindingNONTERM_localBinding-NONTERM_typedExprWithStaticOptimizationsBlock(NONTERM_typedExprWithStaticOptimizationsNONTERM_opt_staticOptimizationsNONTERM_staticOptimization$NONTERM_staticOptimizationConditions#NONTERM_staticOptimizationConditionNONTERM_rawConstantNONTERM_constantNONTERM_bindingPatternNONTERM_simplePatternNONTERM_simplePatternCommaListNONTERM_simplePatternsNONTERM_headBindingPatternNONTERM_tuplePatternElementsNONTERM_conjPatternElementsNONTERM_constrPatternNONTERM_atomicPatternsNONTERM_atomicPatternNONTERM_parenPatternBodyNONTERM_parenPattern!NONTERM_tupleParenPatternElements NONTERM_conjParenPatternElementsNONTERM_recordPatternElements NONTERM_recordPatternElementsAuxNONTERM_recordPatternElementNONTERM_listPatternElementsNONTERM_typedSeqExprBlockNONTERM_declExprBlockNONTERM_typedSeqExprBlockRNONTERM_typedSeqExprNONTERM_seqExprNONTERM_recoverNONTERM_declExprNONTERM_dynamicArgNONTERM_withClausesNONTERM_withPatternClausesNONTERM_patternAndGuardNONTERM_patternClausesNONTERM_patternGuardNONTERM_patternResultNONTERM_ifExprCasesNONTERM_ifExprThenNONTERM_ifExprElifsNONTERM_tupleExprNONTERM_minusExprNONTERM_appExprNONTERM_argExprNONTERM_atomicExprNONTERM_atomicExprQualificationNONTERM_optRangeNONTERM_atomicExprAfterTypeNONTERM_beginEndExprNONTERM_quoteExprNONTERM_arrayExprNONTERM_parenExprNONTERM_parenExprBody!NONTERM_staticallyKnownHeadTypars$NONTERM_staticallyKnownHeadTyparAltsNONTERM_braceExprNONTERM_braceExprBodyNONTERM_listExprElementsNONTERM_monadicExprInitialNONTERM_rangeSequenceExpr5NONTERM_monadicSingleLineQualifiersThenArrowThenExprRNONTERM_forLoopBinderNONTERM_forLoopRangeNONTERM_inlineAssemblyExprNONTERM_opt_curriedArgExprsNONTERM_opt_atomicExprAfterType!NONTERM_opt_inlineAssemblyTypeArg%NONTERM_opt_inlineAssemblyReturnTypesNONTERM_recdExprNONTERM_opt_seps_recdNONTERM_seps_recdNONTERM_pathOrUnderscoreNONTERM_recdExprBindingsNONTERM_recdBindingNONTERM_objExprNONTERM_objExprBaseCallNONTERM_opt_objExprBindingsNONTERM_objExprBindingsNONTERM_objExprInterfacesNONTERM_opt_objExprInterfacesNONTERM_objExprInterfaceNONTERM_forLoopDirectionNONTERM_anonLambdaExprNONTERM_anonMatchingExprNONTERM_typeWithTypeConstraints"NONTERM_topTypeWithTypeConstraints,NONTERM_opt_topReturnTypeWithTypeConstraintsNONTERM_topTypeNONTERM_topTupleTypeNONTERM_topTupleTypeElementsNONTERM_topAppType NONTERM_typNONTERM_tupleTypeNONTERM_tupleOrQuotTypeElementsNONTERM_tupleTypeElementsNONTERM_appTypeConNONTERM_appTypeConPowerNONTERM_appTypeNONTERM_arrayTypeSuffixNONTERM_appTypePrefixArgumentsNONTERM_typeArgListElementsNONTERM_powerType"NONTERM_appTypeNonAtomicDeprecated$NONTERM_powerTypeNonAtomicDeprecatedNONTERM_atomTypeNONTERM_typeArgsNoHpaDeprecatedNONTERM_typeArgsActualNONTERM_typeArgActual#NONTERM_typeArgActualOrDummyIfEmptyNONTERM_dummyTypeArgNONTERM_measureTypeArgNONTERM_measureTypeAtomNONTERM_measureTypePowerNONTERM_measureTypeSeqNONTERM_measureTypeExpr NONTERM_typar NONTERM_staticallyKnownHeadTypar NONTERM_ident NONTERM_pathNONTERM_opNameNONTERM_operatorNameNONTERM_barNameNONTERM_barNamesNONTERM_identOrOpNONTERM_pathOpNONTERM_nameopNONTERM_topSeparatorNONTERM_topSeparatorsNONTERM_interactiveSeparatorNONTERM_interactiveSeparators!NONTERM_opt_interactiveSeparatorsNONTERM_opt_topSeparators NONTERM_sepsNONTERM_declEndNONTERM_opt_declEndNONTERM_opt_ODECLENDNONTERM_deprecated_opt_equalsNONTERM_opt_OBLOCKSEPNONTERM_opt_sepsNONTERM_opt_recNONTERM_opt_barNONTERM_opt_inlineNONTERM_opt_mutableNONTERM_doTokenNONTERM_doneDeclEndNONTERM_structOrBeginNONTERM_sigOrBeginNONTERM_colonOrEqualsNONTERM_opt_HASHNONTERM_opt_HIGH_PRECEDENCE_APP!NONTERM_opt_HIGH_PRECEDENCE_TYAPPNONTERM_type_keywordNONTERM_module_keywordNONTERM_rbraceNONTERM_rparenNONTERM_oblockend5NONTERM_ends_other_than_rparen_coming_soon_or_recover#NONTERM_ends_coming_soon_or_recoverOutcome\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../outcome.fsi#T:Microsoft.FSharp.Compiler.Outcomesuccess[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../outcome.fsResultOrException`1razeop_BarBarQmarkGreaterop_BarQmarkGreater ForceRaise otherwiseOptX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../opt.fsiT:Microsoft.FSharp.Compiler.OptOptimizationSettingsjitOptW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../opt.fslocalOpt get_DefaultsIncrementalOptimizationEnvBindCcuLazyModuleInfo€çM:Microsoft.FSharp.Compiler.Opt.BindCcu(Microsoft.FSharp.Compiler.Tast.CcuThunk,System.Lazy{Microsoft.FSharp.Compiler.Opt.ModuleInfo},Microsoft.FSharp.Compiler.Opt.IncrementalOptimizationEnv,Microsoft.FSharp.Compiler.Env.TcGlobals)OptimizeImplFileConstraintSolverTcValFisIncrementalFragment emitTaicallsƒM:Microsoft.FSharp.Compiler.Opt.OptimizeImplFile(Microsoft.FSharp.Compiler.Opt.OptimizationSettings,Microsoft.FSharp.Compiler.Tast.CcuThunk,Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Tast.ValRef,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Tast.ValUseFlag,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType},Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.Range.range,System.Tuple{Microsoft.FSharp.Compiler.Tast.Expr,Microsoft.FSharp.Compiler.Tast.TType}}}}},Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Opt.IncrementalOptimizationEnv,System.Boolean,System.Boolean,Microsoft.FSharp.Compiler.Tast.TypedImplFile) moduleInfoL€ŠM:Microsoft.FSharp.Compiler.Opt.moduleInfoL(Microsoft.FSharp.Compiler.Env.TcGlobals,System.Lazy{Microsoft.FSharp.Compiler.Opt.ModuleInfo})p_LazyModuleInfo€”M:Microsoft.FSharp.Compiler.Opt.p_LazyModuleInfo(System.Lazy{Microsoft.FSharp.Compiler.Opt.ModuleInfo},Microsoft.FSharp.Compiler.Pickle.WriterState)RemapLazyModulInfo€ƒM:Microsoft.FSharp.Compiler.Opt.RemapLazyModulInfo(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tastops.Remap)!AbstractLazyModulInfoToEssentialsUnionModuleInfos ExprHasEffectu_LazyModuleInfoabstractBigTargets jitOptUser localOptUsercrossModuleOptUser bigTargetSizeveryBigExprSizelambdaInlineThresholdreportingPhasereportNoNeedToTailcallreportFunctionSizesreportHasEffectreportTotalSizes ModuleInfo*T:Microsoft.FSharp.Compiler.Opt.ModuleInfo NicePrint]/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../NicePrint.fs%T:Microsoft.FSharp.Compiler.NicePrintlayoutMemberSigStructuredFormatlayoutTyparConstraintoutputTy outputTyparsoutputTyconRef layoutConst"layoutPrettifiedTypeAndConstraintsargInfostau dataExprLoutputValOrMemberstringValOrMemberoutputQualifiedValOrMember€«M:Microsoft.FSharp.Compiler.NicePrint.outputQualifiedValOrMember(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Tast.Val)outputQualifiedValSpecstringOfQualifiedValOrMemberformatMethInfoToBufferFreeStylebufM:Microsoft.FSharp.Compiler.NicePrint.formatMethInfoToBufferFreeStyle(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Infos.MethInfo)stringOfMethInfo€ÞM:Microsoft.FSharp.Compiler.NicePrint.stringOfMethInfo(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Infos.MethInfo)stringOfParamData ParamData paramData€M:Microsoft.FSharp.Compiler.NicePrint.stringOfParamData(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Infos.ParamData)outputILTypeRef outputExnDefstringOfTyparConstraints outputTyconstringOfTyparConstraint stringOfTyprettyStringOfTystringOfRecdFieldstringOfUnionCasestringOfExnDeflayoutInferredSigOfModuleExpr showHeaderlayoutValOrMemberlayoutPrettifiedTypestausminimalStringsOfTwoTypest1t2€¶M:Microsoft.FSharp.Compiler.NicePrint.minimalStringsOfTwoTypes(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Tast.TType)minimalStringsOfTwoValuesv1v2minimalStringOfTypePrintUtilitiesAutoOpenAttribute4T:Microsoft.FSharp.Compiler.NicePrint.PrintUtilities bracketIfLlyt squareAngleLangleLbraceLcommentLcommentstrlayoutsLls9suppressInheritanceAndInterfacesForTyInSimplifiedDisplaysapplyMaxMembersalldecls adjustILNamePM:Microsoft.FSharp.Compiler.NicePrint.PrintUtilities.adjustILName(System.String)shrinkOverloadslayoutFunctionresultFunctiongroupPrintIL-T:Microsoft.FSharp.Compiler.NicePrint.PrintILfullySplitILTypeReftreflayoutILTypeRefNamelayoutILTypeRefadjustILMethodNameOM:Microsoft.FSharp.Compiler.NicePrint.PrintIL.adjustILMethodName(System.String)isStaticILEvent ILEventDeflayoutILArrayShape ILArrayShapelayoutILGenericParameterDefsILGenericParameterDefspsparamsL pruneParms className ilTyparSubst layoutILTypetyplayoutILCallingSignatureILCallingSignatureconssignatur5M:Microsoft.FSharp.Compiler.NicePrint.PrintIL.layoutILCallingSignature(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Compiler.AbstractIL.IL.ILCallingSignature)layoutILParameter ILParameter€õM:Microsoft.FSharp.Compiler.NicePrint.PrintIL.layoutILParameter(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Compiler.AbstractIL.IL.ILParameter)layoutILParameters ILParameters parametersretType€M:Microsoft.FSharp.Compiler.NicePrint.PrintIL.layoutILParameters(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILParameter},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType)layoutILMethodDef ILMethodDefM:Microsoft.FSharp.Compiler.NicePrint.PrintIL.layoutILMethodDef(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout},System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef)layoutILFieldDef ILFieldDeflayoutILEventDeflayoutILPropertyDef ILPropertyDeflayoutILFieldInitlayoutILEnumDefPartslitVallayoutILEnumDefisStaticILPropertyisPublicILMethodisPublicILEventtypeDefisPublicILPropertyisPublicILCtorisNotSpecialNameisPublicILFieldisPublicILTypeDefisShowEnumFieldnoShowSet`1 isShowBaselayoutILTypeDeflayoutILNestedClassDef PrintTypes0T:Microsoft.FSharp.Compiler.NicePrint.PrintTypeslayoutAccessibility accessibilityitemLlayoutTyconRef€–M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTyconRef(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.EntityRef)layoutMemberFlagsmemFlagsmM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutMemberFlags(Microsoft.FSharp.Compiler.Ast.MemberFlags)layoutAttribArgarg€’M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutAttribArg(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.Expr)layoutAttribArgs€ÂM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutAttribArgs(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.AttribExpr}) layoutAttrib€‘M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutAttrib(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.Attrib) layoutAttribsrestLM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutAttribs(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.TyparKind,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Attrib},Internal.Utilities.StructuredFormat.Layout)layoutTyparAttribslayoutTyparReftyparlayoutTyparRefWithInfoenv€áM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTyparRefWithInfo(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Microsoft.FSharp.Compiler.Tast.Typar)layoutConstraintsWithInfocxsJM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutConstraintsWithInfo(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Compiler.Tast.Typar,Microsoft.FSharp.Compiler.Tast.TyparConstraint}})layoutConstraintWithInfotpcM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutConstraintWithInfo(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Microsoft.FSharp.Compiler.Tast.Typar,Microsoft.FSharp.Compiler.Tast.TyparConstraint)layoutTraitWithInfo layoutMeasure€—M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutMeasure(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tast.MeasureExpr)layoutTypeAppWithInfoAndPrectcLprecprefixWM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTypeAppWithInfoAndPrec(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Internal.Utilities.StructuredFormat.Layout,System.Int32,System.Boolean,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType})layoutTypeWithInfoAndPrec€ñM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTypeWithInfoAndPrec(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,System.Int32,Microsoft.FSharp.Compiler.Tast.TType)layoutTypesWithInfoAndPrecseptyplFM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTypesWithInfoAndPrec(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,System.Int32,Internal.Utilities.StructuredFormat.Layout,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType})layoutTypeWithInfo€ÝM:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTypeWithInfo(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Microsoft.FSharp.Compiler.Tast.TType) layoutType layoutTopType‚M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTopType(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Tastops.SimplifyTypes.TypeSimplificationInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Compiler.Tast.ArgReprInfo}}},Microsoft.FSharp.Compiler.Tast.TType,Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Compiler.Tast.Typar,Microsoft.FSharp.Compiler.Tast.TyparConstraint}})layoutTyparDeclsnmL€÷M:Microsoft.FSharp.Compiler.NicePrint.PrintTypes.layoutTyparDecls(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Internal.Utilities.StructuredFormat.Layout,System.Boolean,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.Typar})#layoutPrettifiedTypesAndConstraintslayoutMemberTypeAndConstraintsretTyparentTyparTyslayoutMemberTypeCorememberToParentInst methTyparslayoutMemberTypelayoutPrettyTypePrintTastMemberOrVals;T:Microsoft.FSharp.Compiler.NicePrint.PrintTastMemberOrVals layoutMemberlayoutNonMemberValInfoMemberPrinting8T:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrintingformatParamDataToBuffer€ÂM:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrinting.formatParamDataToBuffer(Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Infos.ParamData)!formatMethInfoToBufferFSharpStylejM:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrinting.formatMethInfoToBufferFSharpStyle(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Infos.MethInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType})!formatMethInfoToBufferCSharpStylejM:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrinting.formatMethInfoToBufferCSharpStyle(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Infos.MethInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Tast.TType})prettifyILMethInfo ILMethInfoM:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrinting.formatMethInfoToBufferFreeStyle(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,System.Text.StringBuilder,Microsoft.FSharp.Compiler.Infos.MethInfo)layoutMethInfoFSharpStyle€úM:Microsoft.FSharp.Compiler.NicePrint.InfoMemberPrinting.layoutMethInfoFSharpStyle(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tastops.DisplayEnv,Microsoft.FSharp.Compiler.Infos.MethInfo)TastDefinitionPrintingP:Microsoft.FSharp.Compiler.Infos.MethInfo.HasDirectXmlComment9P:Microsoft.FSharp.Compiler.Infos.MethInfo.ActualTypeInst get_TcGlobals4P:Microsoft.FSharp.Compiler.Infos.MethInfo.TcGlobalsget_FormalMethodTypars=P:Microsoft.FSharp.Compiler.Infos.MethInfo.FormalMethodTyparsget_FormalMethodInst;P:Microsoft.FSharp.Compiler.Infos.MethInfo.FormalMethodInst1P:Microsoft.FSharp.Compiler.Infos.MethInfo.XmlDocget_ArbitraryValRef:P:Microsoft.FSharp.Compiler.Infos.MethInfo.ArbitraryValRef get_NumArgs get_IsCurried5P:Microsoft.FSharp.Compiler.Infos.MethInfo.IsInstanceget_IsProtectedAccessiblityget_IsDefiniteFSharpOverrideget_IsFSharpEventProperty get_IsStruct;P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.EnclosingType7P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.ILTypeRef get_ScopeRef6P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.ScopeRef6P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.TypeInst7P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.FieldNameget_IsInitOnly8P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.IsInitOnly9P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.IsValueType6P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.IsStaticget_IsSpecialName;P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.IsSpecialName:P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.LiteralValueget_ILFieldType9P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.ILFieldType FieldType€‰M:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.FieldType(Microsoft.FSharp.Compiler.Import.ImportMap,Microsoft.FSharp.Compiler.Range.range)get_ILFieldRef ILFieldRef8P:Microsoft.FSharp.Compiler.Infos.ILFieldInfo.ILFieldRef8P:Microsoft.FSharp.Compiler.Infos.RecdFieldInfo.TypeInstget_RecdFieldRefT:Microsoft.FSharp.Compiler.Infos.AllowMultiIntfInstantiations7T:Microsoft.FSharp.Compiler.Infos.ILTypeInfo.ILTypeInfo,T:Microsoft.FSharp.Compiler.Infos.ILTypeInfoOptionalArgCallerSideValueConstant DefaultValue MissingValueWrapperForIDispatchWrapperForIUnknown PassByRefF:Microsoft.FSharp.Compiler.Ilxgen.IlxGenOptions.isInteractiveisInteractiveItExprnetFxHasSerializableAttributealwaysCallVirt?F:Microsoft.FSharp.Compiler.Ilxgen.IlxGenOptions.alwaysCallVirt ilTypeDefs;F:Microsoft.FSharp.Compiler.Ilxgen.IlxGenResults.ilTypeDefs ilAssemAttrs=F:Microsoft.FSharp.Compiler.Ilxgen.IlxGenResults.ilAssemAttrsilNetModuleAttrsAF:Microsoft.FSharp.Compiler.Ilxgen.IlxGenResults.ilNetModuleAttrsquotationResourceBytesGF:Microsoft.FSharp.Compiler.Ilxgen.IlxGenResults.quotationResourceBytes0T:Microsoft.FSharp.Compiler.Ilxgen.IlxGenResults Reflection FieldInfoLookupFieldRef MethodInfoLookupMethodRef LookupTypeRef LookupType3T:Microsoft.FSharp.Compiler.Ilxgen.ExecutionContext7T:Microsoft.FSharp.Compiler.Ilxgen.IlxAssemblyGeneratorFscopts\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../fscopts.fsi#T:Microsoft.FSharp.Compiler.FscoptsDisplayBannerText[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../fscopts.fsTcConfigBuilderGetCoreFscCompilerOptionsCompilerOptionBlockGetCoreFsiCompilerOptionsGetCoreServiceCompilerOptionsSetOptimizeSwitch OptionSwitchSetTailcallSwitchSetDebugSwitchPrintOptionInfofsharpModuleNameCompilerTargetInitialOptimizationEnvAddExternalCcuToOpimizationEnvImportedAssemblyApplyAllOptimizationsCreateIlxAssemblyGeneratorGenerateIlxCodeNormalizeAssemblyRefsignoreFailureOnMono1_1_16enableConsoleColoringDoWithErrorColor ReportTime abbrevFlagSetPostProcessCompilerArgsFormats\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../formats.fsi#T:Microsoft.FSharp.Compiler.FormatsParseFormatString[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../formats.fs FindUnsolved\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../unsolved.fs(T:Microsoft.FSharp.Compiler.FindUnsolvedaccTycenv_env accTypeInsttyargsaccExpr accMethods baseValOpt accMethod _baseValOpt accIntfImpls accIntfImplaccOp accLambdasetyaccExprsexprs accFlatExprs accTargetstargets accTargetaccDTree accSwitchcases accDiscrim accAttrib accAttribsaccValReprInfoaccArgReprInfoaccValaccBindbindaccBindsaccTyconRecdField_tyconrfieldaccTycon accTyconsaccModuleOrNamespaceExpraccModuleOrNamespaceDefsaccModuleOrNamespaceDefaccModuleOrNamespaceBindsaccModuleOrNamespaceBindUnsolvedTyparsOfModuleDefmdef extraAttribsNixunsolvedX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../est.fsi+T:Microsoft.FSharp.Compiler.ExtensionTypingTypeProviderDesignationProvidedTypeResolutionProvidedTypeResolutionNoRangeGetTypeProvidersOfAssemblyW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../est.fsVersion-displayPSTypeProviderSecurityDialogBlockingUIvalidateTypeProvidersruntimeAssemblyFilenameilScopeRefOfRuntimeAssemblydesignerAssemblyNamesystemRuntimeContainsTypesystemRuntimeAssemblyVersionæM:Microsoft.FSharp.Compiler.ExtensionTyping.GetTypeProvidersOfAssembly(Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc{System.String,Microsoft.FSharp.Core.Unit}},System.Boolean,System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,System.String,Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment,System.Boolean,System.Boolean,Microsoft.FSharp.Core.FSharpFunc{System.String,System.Boolean},System.Version,Microsoft.FSharp.Compiler.Range.range)DisplayNameOfTypeProvider€ÄM:Microsoft.FSharp.Compiler.ExtensionTyping.DisplayNameOfTypeProvider(Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Core.CompilerServices.ITypeProvider},Microsoft.FSharp.Compiler.Range.range)providedSystemTypeComparerProvidedTypeContextTryGetILTypeRefTryGetTyconRefRemapTyconRefs€M:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedTypeContext.RemapTyconRefs(Microsoft.FSharp.Core.FSharpFunc{System.Object,System.Object}),GetHasTypeProviderEditorHideMethodsAttributeproviderGetDefinitionLocationAttributeGetXmlDocAttributesGetAttributeConstructorArgs attribNameget_IsSuppressRelocateget_IsGenericType get_Namespace get_FullName get_IsArray GetInterfaces get_Assembly get_BaseType GetNestedTypeGetNestedTypesGetAllNestedTypes GetFieldsGetField GetProperties GetProperty GetEventsGetEventGetConstructorsProvidedConstructorInfoGetStaticParametersGetGenericTypeDefinition get_IsVoidget_IsGenericParameter get_IsByRef get_IsPointer get_IsEnumget_IsInterface get_IsClass get_IsSealed get_IsPublicget_IsNestedPublicget_GenericParameterPositionGetElementTypeGetGenericArguments GetArrayRankget_RawSystemTypeGetEnumUnderlyingTypeget_VoidCreateNoContext ApplyContext get_Context TaintedEqualsGetName AssemblyNameGetManifestModuleContents get_HandleAssemblyget_DeclaringTypeget_IsGenericMethod get_IsFamilyget_IsFamilyAndAssemblyget_IsFamilyOrAssemblyget_IsHideBySig GetParametersTaintedGetHashCodeget_MetadataTokenget_ParameterTypeget_IsIn get_IsOutget_RawDefaultValue get_IsLiteralGetRawConstantValue get_IsPrivate GetGetMethod GetSetMethodGetIndexParameters get_CanRead get_CanWriteget_PropertyTypeget_EventHandlerTypeget_UnderlyingExpressionStringSP:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedExpr.UnderlyingExpressionStringFresh|ProvidedNewArrayExpr|_||ProvidedNewObjectExpr|_||ProvidedWhileLoopExpr|_||ProvidedNewDelegateExpr|_|#|ProvidedForIntegerRangeLoopExpr|_||ProvidedSequentialExpr|_||ProvidedTryWithExpr|_||ProvidedTryFinallyExpr|_||ProvidedLambdaExpr|_||ProvidedCallExpr|_||ProvidedConstantExpr|_||ProvidedDefaultExpr|_||ProvidedNewTupleExpr|_||ProvidedTupleGetExpr|_||ProvidedTypeAsExpr|_||ProvidedTypeTestExpr|_||ProvidedLetExpr|_||ProvidedVarSetExpr|_||ProvidedIfThenElseExpr|_||ProvidedVarExpr|_|GetInvokerExpression,ValidateProvidedTypeAfterStaticInstantiation expectedPath expectedName€÷M:Microsoft.FSharp.Compiler.ExtensionTyping.ValidateProvidedTypeAfterStaticInstantiation(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType},System.String[],System.String)TryApplyProvidedTypetypeBeforeArgumentsoptGeneratedTypePath staticArgs,M:Microsoft.FSharp.Compiler.ExtensionTyping.TryApplyProvidedType(Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{System.String}},System.Object[],Microsoft.FSharp.Compiler.Range.range)TryResolveProvidedTypetypeNameM:Microsoft.FSharp.Compiler.ExtensionTyping.TryResolveProvidedType(Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment,Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Core.CompilerServices.ITypeProvider},Microsoft.FSharp.Compiler.Range.range,System.String[],System.String)TryLinkProvidedTypeM:Microsoft.FSharp.Compiler.ExtensionTyping.TryLinkProvidedType(Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment,Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Core.CompilerServices.ITypeProvider},System.String[],System.String,Microsoft.FSharp.Compiler.Range.range)GetPartsOfDotNetNamespace€ÒM:Microsoft.FSharp.Compiler.ExtensionTyping.GetPartsOfDotNetNamespace(Microsoft.FSharp.Compiler.Range.range,Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Core.CompilerServices.ITypeProvider},System.String)GetFSharpPathToProvidedType€ÈM:Microsoft.FSharp.Compiler.ExtensionTyping.GetFSharpPathToProvidedType(Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType},Microsoft.FSharp.Compiler.Range.range)GetILTypeRefOfProvidedType€ÇM:Microsoft.FSharp.Compiler.ExtensionTyping.GetILTypeRefOfProvidedType(Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType},Microsoft.FSharp.Compiler.Range.range)"GetOriginalILTypeRefOfProvidedType€ÏM:Microsoft.FSharp.Compiler.ExtensionTyping.GetOriginalILTypeRefOfProvidedType(Microsoft.FSharp.Compiler.Tainted{Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedType},Microsoft.FSharp.Compiler.Range.range) CreateNewVM:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedAssemblyStaticLinkingMap.CreateNewIsGeneratedTypeDirectReferenceBT:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedTypeResolutionIT:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedTypeResolutionNoRangeresolutionFolderRF:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment.resolutionFolder outputFileLF:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment.outputFileshowResolutionMessagesXF:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment.showResolutionMessagesreferencedAssembliesVF:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment.referencedAssembliestemporaryFolderQF:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment.temporaryFolderAT:Microsoft.FSharp.Compiler.ExtensionTyping.ResolutionEnvironment NoEntriesEntries?T:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedTypeContextAllowNullLiteralAttributeAT:Microsoft.FSharp.Compiler.ExtensionTyping.ProviderGeneratedType ILTypeMapVF:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedAssemblyStaticLinkingMap.ILTypeMapLT:Microsoft.FSharp.Compiler.ExtensionTyping.ProvidedAssemblyStaticLinkingMap_/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../ErrorLogger.fs'T:Microsoft.FSharp.Compiler.ErrorLogger WrappedError ReportedError get_MessagefindOriginalExceptionStopProcessing NumberedError InternalErrorUserCompilerMessageLibraryUseOnly Deprecated ExperimentalPossibleUnverifiableCodeUnresolvedReferenceNoRangeUnresolvedReferenceErrorUnresolvedPathReferenceNoRangeUnresolvedPathReferenceprotectAssemblyExploration#protectAssemblyExplorationNoReraisedflt1dflt2 AttachRangeExitExiterQuitProcessExiter BuildPhasephase}M:Microsoft.FSharp.Compiler.ErrorLogger.PhasedError.Create(System.Exception,Microsoft.FSharp.Compiler.ErrorLogger.BuildPhase) DebugDisplay Subcategory?M:Microsoft.FSharp.Compiler.ErrorLogger.PhasedError.SubcategoryIsSubcategoryOfCompile subcategoryYM:Microsoft.FSharp.Compiler.ErrorLogger.PhasedError.IsSubcategoryOfCompile(System.String)IsPhaseInCompileDM:Microsoft.FSharp.Compiler.ErrorLogger.PhasedError.IsPhaseInCompileget_ErrorCount WarnSinkImpl ErrorSinkImplnameForDebuggingWarnSink ErrorSinkDiscardErrorsLoggerAssertFalseErrorLogger uninitializedErrorLoggerFallbackHP:Microsoft.FSharp.Compiler.ErrorLogger.uninitializedErrorLoggerFallbackget_BuildPhaseUncheckedCompileThreadStaticget_BuildPhaseset_BuildPhaseget_ErrorLoggerset_ErrorLoggerPushThreadBuildPhaseUntilUnwindyM:Microsoft.FSharp.Compiler.ErrorLogger.PushThreadBuildPhaseUntilUnwind(Microsoft.FSharp.Compiler.ErrorLogger.BuildPhase)PushErrorLoggerPhaseUntilUnwinderrorLoggerTransformer€£M:Microsoft.FSharp.Compiler.ErrorLogger.PushErrorLoggerPhaseUntilUnwind``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.ErrorLogger.ErrorLogger,``0})SetThreadBuildPhaseNoUnwindSetThreadErrorLoggerNoUnwind#SetUninitializedErrorLoggerFallback errLoggererrorRwarningerror phasedError errorSinkpewarnSink errorRecoverystopProcessingRecoveryerrorRecoveryNoRangereportdeprecatedWithErrorreportLibraryOnlyFeatureslibraryOnlyErrorlibraryOnlyWarningdeprecatedOperatormlCompatWarningsuppressErrorReporting#conditionallySuppressErrorReportingcondReportWarningswarnsCommitOperationResultRaiseOperationResultErrorDWarnD CompleteDResultDCheckNoErrorsAndGetWarnings€ÓM:Microsoft.FSharp.Compiler.ErrorLogger.op_PlusPlus``2(Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{``0},Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{``1}})IterateD€ÙM:Microsoft.FSharp.Compiler.ErrorLogger.IterateD``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpList{``0})WhileDgdMapDTrackErrorsBuilderBind ReturnFromseq trackErrorsOptionD€ÓM:Microsoft.FSharp.Compiler.ErrorLogger.OptionD``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.FSharpOption{``0}) IterateIdxD M:Microsoft.FSharp.Compiler.ErrorLogger.IterateIdxD``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{Microsoft.FSharp.Core.Unit}}},Microsoft.FSharp.Collections.FSharpList{``0}) Iterate2Dys-M:Microsoft.FSharp.Compiler.ErrorLogger.Iterate2D``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Compiler.ErrorLogger.OperationResult{Microsoft.FSharp.Core.Unit}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})TryD RepeatWhileD AtLeastOneD)stringThatIsAProxyForANewlineInFlatErrorsNewlineifyErrorStringNormalizeErrorStringKM:Microsoft.FSharp.Compiler.ErrorLogger.NormalizeErrorString(System.String)4T:Microsoft.FSharp.Compiler.ErrorLogger.WrappedError5T:Microsoft.FSharp.Compiler.ErrorLogger.ReportedError6T:Microsoft.FSharp.Compiler.ErrorLogger.StopProcessing DefaultPhaseCompile ParameterParseCodeGenOptimizeIlxGenIlGenOutput Interactive2T:Microsoft.FSharp.Compiler.ErrorLogger.BuildPhaseBuildPhaseSubcategory=T:Microsoft.FSharp.Compiler.ErrorLogger.BuildPhaseSubcategoryLiteralAttributecompile parameterparse typecheckcodegenoptimizeilxgenilgen interactiveinternal DiagnosticsDebuggerDisplayAttribute+System.Diagnostics.DebuggerDisplayAttribute{DebugDisplay()}Phase buildPhaseThreadStaticAttributeSystem.ThreadStaticAttributeDefaultValueAttribute;T:Microsoft.FSharp.Compiler.ErrorLogger.CompileThreadStaticErrorLoggerExtensions=T:Microsoft.FSharp.Compiler.ErrorLogger.ErrorLoggerExtensionsPreserveStackTraceReraiseIfWatsonableErrorRErrorLogger.ErrorRErrorLogger.WarningErrorLogger.ErrorErrorLogger.PhasedErrorph ErrorRecoveryErrorLogger.ErrorRecoveryStopProcessingRecovery"ErrorLogger.StopProcessingRecoveryErrorRecoveryNoRange ErrorLogger.ErrorRecoveryNoRangeOkResult ErrorResultImperativeOperationResult StartLineEndLine StartColumn EndColumnMessageW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../env.fsT:Microsoft.FSharp.Compiler.Env.DummyFileNameForRangesWithoutASpecificLocationenvRangevaravarbvarcvardvarevarfvargvaraTyvarbTyvarcTyvardTyvareTyValRefForIntrinsicIntrinsicValRefmkNonGenericTymkNonLocalTyconRef2mk_MFCore_tcrefmk_MFQuotations_tcrefmk_MFLinq_tcrefmk_MFCollections_tcrefmk_MFCompilerServices_tcrefmk_MFRuntimeHelpers_tcrefmk_MFControl_tcref mkTcGlobalssysCcuilgdirectoryToResolveRelativePathsmlCompatibilityusing40environmentindirectCallArrayMethods getTypeCcumkMscorlibAttrib FSharpLib)T:Microsoft.FSharp.Compiler.Env.FSharpLibCoreOperatorsNameCoreOperatorsCheckedName ControlNameLinqNameCollectionsNameLanguagePrimitivesNameCompilerServicesNameLinqRuntimeHelpersNameRuntimeHelpersNameExtraTopLevelOperatorsNameHashCompareNameQuotationsName OperatorsPathOperatorsCheckedPath ControlPathLinqPathCollectionsPathLanguagePrimitivesPathHashComparePathCompilerServicesPathLinqRuntimeHelpersPathRuntimeHelpersPathQuotationsPathExtraTopLevelOperatorsPath RootPathArray CorePathArray LinqPathArrayControlPathArrayCollectionsPathArray AttribInfo EraseIlxFuncs ilxPubCloEnvbetter_tcref_maprefcell_tcr_canonoption_tcr_canon choice2_tcr choice3_tcr choice4_tcr choice5_tcr choice6_tcr choice7_tcrlist_tcr_canon set_tcr_canon map_tcr_canonlazy_tcr_canonunionCaseRefEqrefcell_tcr_niceoption_tcr_nice list_tcr_nice lazy_tcr_nice format_tcrexpr_tcr raw_expr_tcr nativeint_tcr int32_tcr int16_tcr int64_tcr uint16_tcr uint32_tcr uint64_tcr sbyte_tcr decimal_tcrdate_tcr pdecimal_tcrbyte_tcrbool_tcrunit_tcr_canon unit_tcr_niceexn_tcrchar_tcr float_tcr float32_tcr pfloat_tcr pfloat32_tcrpint_tcr pint8_tcr pint16_tcr pint64_tcr byref_tcr nativeptr_tcr ilsigptr_tcr fastFunc_tcrarray_tcr_niceseq_tcr seq_base_tcrmeasureproduct_tcrmeasureinverse_tcrmeasureone_tcr il_arr1_tcr il_arr2_tcr il_arr3_tcr il_arr4_tcr tuple1_tcr tuple2_tcr tuple3_tcr tuple4_tcr tuple5_tcr tuple6_tcr tuple7_tcr tuple8_tcrtcref_IQueryabletcref_IObservabletcref_IObserverfslib_IEvent2_tcrfslib_IDelegateEvent_tcrsystem_Nullable_tcrefsystem_GenericIComparable_tcrefsystem_GenericIEquatable_tcref%system_IndexOutOfRangeException_tcrefint_ty nativeint_ty unativeint_tyint32_tyint16_tyint64_ty uint16_ty uint32_ty uint64_tysbyte_tybyte_tybool_ty string_tyobj_tyunit_tyexn_tychar_ty decimal_tyfloat_ty float32_tysystem_Array_typsystem_Object_typsystem_IDisposable_typsystem_Value_typsystem_Delegate_typsystem_MulticastDelegate_typsystem_Enum_typsystem_Exception_typsystem_Int32_typsystem_String_typsystem_Type_typsystem_TypedReference_tcrefsystem_ArgIterator_tcrefsystem_Decimal_tcrefsystem_SByte_tcrefsystem_Int16_tcrefsystem_Int32_tcrefsystem_Int64_tcrefsystem_IntPtr_tcrefsystem_Bool_tcrefsystem_Char_tcrefsystem_Byte_tcrefsystem_UInt16_tcrefsystem_UInt32_tcrefsystem_UInt64_tcrefsystem_UIntPtr_tcrefsystem_Single_tcrefsystem_Double_tcref"system_RuntimeArgumentHandle_tcrefsystem_RuntimeTypeHandle_typsystem_RuntimeMethodHandle_typsystem_MarshalByRefObject_tcrefsystem_MarshalByRefObject_typ system_Reflection_MethodInfo_typsystem_Array_tcrefsystem_Object_tcrefsystem_Void_tcrefsystem_LinqExpression_tcrefmk_IComparable_tymk_IStructuralComparable_tymk_IStructuralEquatable_tymk_IComparer_tymk_IEqualityComparer_ty"tcref_System_Collections_IComparer*tcref_System_Collections_IEqualityComparer2tcref_System_Collections_Generic_IEqualityComparer+tcref_System_Collections_Generic_Dictionarytcref_System_IComparable"tcref_System_IStructuralComparable!tcref_System_IStructuralEquatabletcref_LanguagePrimitivesattrib_CustomOperationAttribute#attrib_ProjectionParameterAttributeattrib_AttributeUsageAttributeattrib_ParamArrayAttribute!attrib_IDispatchConstantAttribute attrib_IUnknownConstantAttributeattrib_SystemObsoleteattrib_DllImportAttributeattrib_CompiledNameAttributeattrib_NonSerializedAttribute attrib_AutoSerializableAttributeattrib_StructLayoutAttributeattrib_TypeForwardedToAttributeattrib_ComVisibleAttributeattrib_ComImportAttributeattrib_FieldOffsetAttributeattrib_MarshalAsAttributeattrib_InAttributeattrib_OutAttributeattrib_OptionalAttributeattrib_ThreadStaticAttributeattrib_SpecialNameAttributeattrib_VolatileFieldAttributeattrib_ContextStaticAttributeattrib_FlagsAttributeattrib_DefaultMemberAttributeattrib_DebuggerDisplayAttribute!attrib_DebuggerTypeProxyAttributeattrib_PreserveSigAttributeattrib_MethodImplAttribute&tcref_System_Collections_Generic_IList,tcref_System_Collections_Generic_ICollection,tcref_System_Collections_Generic_IEnumerable$tcref_System_Collections_IEnumerable,tcref_System_Collections_Generic_IEnumeratortcref_System_Attribute&attrib_RequireQualifiedAccessAttributeattrib_EntryPointAttribute#attrib_DefaultAugmentationAttributeattrib_CompilerMessageAttributeattrib_ExperimentalAttributeattrib_UnverifiableAttributeattrib_LiteralAttributeattrib_ConditionalAttribute attrib_OptionalArgumentAttribute-attrib_RequiresExplicitTypeArgumentsAttributeattrib_DefaultValueAttributeattrib_ClassAttributeattrib_InterfaceAttributeattrib_StructAttribute#attrib_ReflectedDefinitionAttributeattrib_AutoOpenAttribute)attrib_CompilationRepresentationAttribute)attrib_CompilationArgumentCountsAttribute"attrib_CompilationMappingAttributeattrib_CLIEventAttribute attrib_AllowNullLiteralAttributeattrib_CLIMutableAttributeattrib_NoComparisonAttributeattrib_NoEqualityAttribute attrib_CustomComparisonAttributeattrib_CustomEqualityAttribute%attrib_EqualityConditionalOnAttribute'attrib_ComparisonConditionalOnAttribute!attrib_ReferenceEqualityAttribute"attrib_StructuralEqualityAttribute$attrib_StructuralComparisonAttributeattrib_SealedAttributeattrib_AbstractClassAttribute"attrib_GeneralizableValueAttributeattrib_MeasureAttributeattrib_MeasureableAttribute#attrib_NoDynamicInvocationAttributeattrib_SecurityAttribute attrib_SecurityCriticalAttribute$attrib_SecuritySafeCriticalAttribute cons_ucref nil_ucrefseq_vrefand_vref and2_vref addrof_vref addrof2_vrefor_vrefor2_vrefgeneric_equality_er_inner_vrefgeneric_equality_per_inner_vref!generic_equality_withc_inner_vrefgeneric_comparison_inner_vref#generic_comparison_withc_inner_vrefgeneric_hash_inner_vrefgeneric_hash_withc_inner_vrefreference_equality_inner_vrefcompare_operator_vrefequals_operator_vrefequals_nullable_operator_vref&nullable_equals_nullable_operator_vrefnullable_equals_operator_vrefnot_equals_operator_vrefless_than_operator_vref!less_than_or_equals_operator_vrefgreater_than_operator_vref$greater_than_or_equals_operator_vrefbitwise_or_vrefbitwise_and_vrefbitwise_xor_vrefbitwise_unary_not_vrefbitwise_shift_left_vrefbitwise_shift_right_vrefunchecked_addition_vrefunchecked_unary_plus_vrefunchecked_unary_minus_vrefunchecked_unary_not_vrefunchecked_subtraction_vrefunchecked_multiply_vrefunchecked_defaultof_vrefseq_info reraise_info reraise_vref typeof_info typeof_vrefmethodhandleof_infomethodhandleof_vref sizeof_vreftypedefof_infotypedefof_vref enum_vrefnew_decimal_info#generic_comparison_withc_outer_infogeneric_equality_er_outer_info!generic_equality_withc_outer_infogeneric_hash_withc_outer_infoequals_operator_infoquery_source_vrefquery_value_vrefquery_run_value_vrefquery_run_enumerable_vrefquery_for_vrefquery_yield_vrefquery_yield_from_vrefquery_select_vrefquery_where_vrefquery_zero_vrefquery_builder_tcrefgeneric_hash_withc_tuple2_vrefgeneric_hash_withc_tuple3_vrefgeneric_hash_withc_tuple4_vrefgeneric_hash_withc_tuple5_vref generic_equals_withc_tuple2_vref generic_equals_withc_tuple3_vref generic_equals_withc_tuple4_vref generic_equals_withc_tuple5_vref!generic_compare_withc_tuple2_vref!generic_compare_withc_tuple3_vref!generic_compare_withc_tuple4_vref!generic_compare_withc_tuple5_vref!generic_equality_withc_outer_vrefcreate_instance_infocreate_event_info unbox_vrefunbox_fast_vref istype_vrefistype_fast_vrefget_generic_comparer_info%get_generic_er_equality_comparer_info&get_generic_per_equality_comparer_info unbox_infounbox_fast_info istype_infoistype_fast_info dispose_info range_op_vrefrange_int32_op_vrefarray_get_vrefarray2D_get_vrefarray3D_get_vrefarray4D_get_vrefseq_collect_vrefseq_collect_infoseq_using_infoseq_using_vrefseq_delay_infoseq_delay_vrefseq_append_infoseq_append_vrefseq_generated_infoseq_generated_vrefseq_finally_infoseq_finally_vrefseq_of_functions_infoseq_of_functions_vrefseq_to_array_infoseq_to_list_info seq_map_info seq_map_vrefseq_singleton_infoseq_singleton_vrefseq_empty_infoseq_empty_vrefnew_format_info raise_infolazy_force_infolazy_create_infoarray_get_infoarray2D_get_infoarray3D_get_infoarray4D_get_infounpickle_quoted_infocast_quotation_infolift_value_infoquery_source_as_enum_infonew_query_source_infofail_init_infofail_static_init_infocheck_this_infoquote_to_linq_lambda_info sprintf_vrefsplice_expr_vrefsplice_raw_expr_vrefnew_format_vref mkSysTyconRefsuppressed_typesILSourceDocument memoize_file6F:Microsoft.FSharp.Compiler.Env.TcGlobals.memoize_file IDictionary`2knownIntrinsicsknownFSharpCoreModulesDriver"T:Microsoft.FSharp.Compiler.Driver"ErrorLoggerThatQuitsAfterMaxErrors tcConfigBexiter€£M:Microsoft.FSharp.Compiler.Driver.ErrorLoggerThatQuitsAfterMaxErrors(Microsoft.FSharp.Compiler.Build.TcConfigBuilder,Microsoft.FSharp.Compiler.ErrorLogger.Exiter)ErrorLoggerInitial tcImports tcGlobalstcEnv0inputsDelayAndForwardErrorLoggerForwardDelayedErrorsAndWarningsget_FullErrorCountAdjustForScriptCompilecommandLineSourceFiles€ÖM:Microsoft.FSharp.Compiler.Driver.AdjustForScriptCompile(Microsoft.FSharp.Compiler.Build.TcConfigBuilder,Microsoft.FSharp.Collections.FSharpList{System.String},Microsoft.FSharp.Compiler.Lexhelp.LexResourceManager) abortOnErrorgetTcImportsFromCommandLineargvdefaultFSharpBinariesDirdirectoryBuildingFromlcidFromCodePagesetProcessThreadLocalsdisplayBannerIfNeededoptimizeForMemorycreateErrorLogger'runFromCommandLineToImportingAssemblies&BuildInitialDisplayEnvForDocGenerationgetModuleFileNameoutpathoutfileextnGenerateInterfaceData get_BytesILResource.get_Bytes ILResourcekM:Microsoft.FSharp.Compiler.Driver.ILResource.get_Bytes(Microsoft.FSharp.Compiler.AbstractIL.IL.ILResource)EncodeInterfaceDataexportRemapping generatedCcuGenerateOptimizationDataEncodeOptimizationDatainjectedCompatTypestypesForwardedToMscorlibtypesForwardedToSystemNumericscreateMscorlibExportListILExportedTypeOrForwardercreateSystemNumericsExportList SigningInfoValidateKeySigningAttributestopAttrsmain1Args`1bannerAlreadyPrintedmain2tcImportsCapturedynamicAssemblyCreatormain2bmain2cmain3main4 mainCompiledelayederrors=T:Microsoft.FSharp.Compiler.Driver.DelayAndForwardErrorLoggerInterfaceFileWriter6T:Microsoft.FSharp.Compiler.Driver.InterfaceFileWriterWriteInterfaceFile XmlDocWriter/T:Microsoft.FSharp.Compiler.Driver.XmlDocWritergetDocxmlDochasDoccomputeXmlDocSigs writeXmlDocxmlfileBinaryGenerationUtilitiesP:Microsoft.FSharp.Compiler.Build.lightSyntaxDefaultExtensionsQualFileNameOfUniquePathPrependPathToInput ParseInputisLastCompiland ErrorStyle RangeOfErrorSplitRelatedErrorsOutputPhasedErrorSanitizeFileNameOutputErrorOrWarning showFullPaths flattenErrors errorStyleOutputErrorOrWarningContextfileLineFunctionprintCompilerOptionBlocksdumpCompilerOptionBlocksfilterCompilerOptionBlockCompilerOptionAssemblyNotResolvedFileNameNotResolvedDeprecatedCommandLineOptionFull%DeprecatedCommandLineOptionForHtmlDoc-DeprecatedCommandLineOptionSuggestAlternative(DeprecatedCommandLineOptionNoDescriptionInternalCommandLineOptionHashLoadedSourceHasIssues HashLoadedScriptConsideredSourceAssemblyReferenceget_TextAssemblyResolutionUnresolvedAssemblyReference get_IsExeResolveAssemblyReferenceMode VersionFlagGetVersionInfoGetVersionStringisInvalidationSupported DecideNamesTurnWarningOff TurnWarningOnAddIncludePathAddReferencedAssemblyByPathRemoveReferencedAssemblyByPathAddEmbeddedResourceSplitCommandLineResourceInfoILResourceAccessget_mscorlibAssemblyName#get_autoResolveOpenDirectivesToDllsget_noFeedbackget_stackReserveSizeget_implicitIncludeDirget_openBinariesInMemory-get_openDebugInformationForLaterStaticLinkingget_fsharpBinariesDirget_compilingFslibget_compilingFslib20get_compilingFslib40get_useIncrementalBuilder get_includesget_implicitOpensget_useFsiAuxLib get_frameworkget_implicitlyResolveAssemblies get_light0P:Microsoft.FSharp.Compiler.Build.TcConfig.light!get_conditionalCompilationDefinesget_subsystemVersionget_useHighEntropyVAget_referencedDLLsget_optimizeForMemoryget_inputCodePageget_embedResourcesget_globalWarnAsErrorget_globalWarnLevelget_specificWarnOnget_specificWarnOffget_specificWarnAsErrorget_specificWarnAsWarnget_mlCompatibilityget_checkOverflowget_showReferenceResolutionsget_outputFile#get_resolutionFrameworkRegistryBase#get_resolutionAssemblyFoldersSuffix'get_resolutionAssemblyFoldersConditions get_platform ILPlatformget_prefer32Bitget_useMonoResolution get_target get_debuginfoget_testFlagEmitFeeFeeAs100001get_dumpDebugInfoget_debugSymbolFileget_typeCheckOnly get_parseOnlyget_importAllReferencesOnlyget_simulateException get_printAstget_tokenizeOnlyget_testInteractionParserget_reportNumDeclsget_printSignatureget_printSignatureFileget_xmlDocOutputFile get_statsget_generateFilterBlocks get_signer get_container get_delaysign get_versionget_metadataVersionget_standaloneget_extraStaticLinkRootsget_noSignatureData!get_onlyEssentialOptimizationDataget_useOptimizationDataFileget_useSignatureDataFileget_jitTracking#get_ignoreSymbolStoreSequencePointsget_internConstantStringsget_extraOptimizationIterations get_win32resget_win32manifestget_includewin32manifestget_linkResourcesget_showFullPathsget_errorStyleget_validateTypeProvidersget_utf8outputget_flatErrors get_maxErrorsget_baseAddress get_showTermsget_writeTermsToFiles get_doDetuple get_doTLRget_doFinalSimplifyget_optSettingsget_emitTailcallsget_lcid get_optsOnget_productNameForBannerTextget_showBanner get_showTimesget_showLoadedAssembliesget_continueAfterParseFailureget_showExtensionTypeMessages get_pauseget_indirectCallArrayMethodsget_alwaysCallVirtget_noDebugDataget_isInteractive8P:Microsoft.FSharp.Compiler.Build.TcConfig.isInteractiveget_isInvalidationSupportedComputeLightSyntaxInitialStatus get_ClrRootGetAvailableLoadedSourcesDM:Microsoft.FSharp.Compiler.Build.TcConfig.GetAvailableLoadedSourcesComputeCanContainEntryPointResolveSourceFileM:Microsoft.FSharp.Compiler.Build.TcConfig.ResolveSourceFile(Microsoft.FSharp.Compiler.Range.range,System.String,System.String)MakePathAbsoluteJM:Microsoft.FSharp.Compiler.Build.TcConfig.MakePathAbsolute(System.String)validateget_TargetMscorlibVersionget_TargetIsSilverlightGetAssemblyResolutionsTcAssemblyResolutionsSplitNonFoundationalResolutionsBuildFromPriorResolutionsTcConfigProviderBasedOnMutableBuilderSetBase get_DllTableGetImportedAssembliesGetCcusInDeclOrderGetCcusExcludingBase@M:Microsoft.FSharp.Compiler.Build.TcImports.GetCcusExcludingBase FindDllInfoTryFindDllInfo lookupOnlyFindCcuFromAssemblyRefget_ProviderGeneratedTypeRoots GetImportMapTryResolveAssemblyReference€·M:Microsoft.FSharp.Compiler.Build.TcImports.TryResolveAssemblyReference(Microsoft.FSharp.Compiler.Build.AssemblyReference,Microsoft.FSharp.Compiler.Build.ResolveAssemblyReferenceMode)ResolveAssemblyReference€´M:Microsoft.FSharp.Compiler.Build.TcImports.ResolveAssemblyReference(Microsoft.FSharp.Compiler.Build.AssemblyReference,Microsoft.FSharp.Compiler.Build.ResolveAssemblyReferenceMode)0TryFindExistingFullyQualifiedPathFromAssemblyRef€“M:Microsoft.FSharp.Compiler.Build.TcImports.TryFindExistingFullyQualifiedPathFromAssemblyRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILAssemblyRef)&TryFindProviderGeneratedAssemblyByNameaM:Microsoft.FSharp.Compiler.Build.TcImports.TryFindProviderGeneratedAssemblyByName(System.String)"ReportUnresolvedAssemblyReferences€´M:Microsoft.FSharp.Compiler.Build.TcImports.ReportUnresolvedAssemblyReferences(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Build.UnresolvedAssemblyReference})SystemRuntimeContainsTypeBuildFrameworkTcImportsBuildNonFrameworkTcImportsBuildTcImportsIsSignatureDataResourceIsOptimizationDataResourceIsReflectedDefinitionsResourceWriteSignatureDataWriteOptimizationDataGetNameOfILModuleGetFSharpCoreLibraryName RequireDLLProcessMetaCommandsFromInputGetScopedPragmasForInput&GetErrorLoggerFilteringByScopedPragmas checkFileApplyNoWarnsToTcConfig$ApplyMetaCommandsFromInputToTcConfig GetAssemblyResolutionInformation,DefaultBasicReferencesForOutOfProjectSourcesParseOneInputFileGetInitialTypecheckerEnvget_NiceNameGeneratorget_TcEnvFromSignatures!NextStateAfterIncrementalFragmentget_TcEnvFromImplsTypecheckInitialStateTypecheckOneInputEventuallyTypecheckMultipleInputsFinishTypecheckClosedInputSetFinishTypecheckClosedInputSet'TypecheckSingleInputAndFinishEventuallyParseCompilerOptions ReportWarningReportWarningAsError-highestInstalledNetFrameworkVersionMajorMinor CodeContextComputeClosureOfSourceTextimplicitDefinesComputeClosureOfSourceFilesuseDefaultScriptingReferences DefaultErrors EmacsErrors TestErrorsVSErrorsOnOff OptionSpec OptionClear OptionFloat OptionInt OptionIntListOptionIntListSwitch OptionRest OptionSet OptionStringOptionStringListOptionStringListSwitch OptionUnit OptionHelp OptionGeneral,T:Microsoft.FSharp.Compiler.Build.OptionSpecOption`1 PublicOptionsPrivateOptions5T:Microsoft.FSharp.Compiler.Build.CompilerOptionBlockoriginalReferenceFF:Microsoft.FSharp.Compiler.Build.AssemblyResolution.originalReference resolvedPathAF:Microsoft.FSharp.Compiler.Build.AssemblyResolution.resolvedPathAF:Microsoft.FSharp.Compiler.Build.AssemblyResolution.resolvedFrom?F:Microsoft.FSharp.Compiler.Build.AssemblyResolution.fusionName;F:Microsoft.FSharp.Compiler.Build.AssemblyResolution.redistsysdir;F:Microsoft.FSharp.Compiler.Build.AssemblyResolution.sysdir ilAssemblyRefResolvedExtensionReferenceWinExe ConsoleExeDll Speculative ReportErrors VersionString VersionFile VersionNonemscorlibAssemblyNameautoResolveOpenDirectivesToDlls noFeedbackstackReserveSizeopenBinariesInMemory)openDebugInformationForLaterStaticLinkingcompilingFslib20compilingFslib40useIncrementalBuilderincludes implicitOpens useFsiAuxLib frameworkimplicitlyResolveAssemblies%addVersionSpecificFrameworkReferenceslight7F:Microsoft.FSharp.Compiler.Build.TcConfigBuilder.lightconditionalCompilationDefines loadedSources?F:Microsoft.FSharp.Compiler.Build.TcConfigBuilder.loadedSourcesreferencedDLLsknownUnresolvedReferencessubsystemVersionuseHighEntropyVA inputCodePageembedResourcesglobalWarnAsErrorglobalWarnLevelspecificWarnOffspecificWarnOnspecificWarnAsErrorspecificWarnAsWarn checkOverflowshowReferenceResolutionsresolutionFrameworkRegistryBaseresolutionAssemblyFoldersSuffix#resolutionAssemblyFoldersConditionsplatform prefer32BituseMonoResolution debuginfo dumpDebugInfodebugSymbolFile typeCheckOnly parseOnlyimportAllReferencesOnlysimulateExceptionprintAst tokenizeOnlytestInteractionParserreportNumDeclsprintSignatureprintSignatureFilexmlDocOutputFilestatssigner container delaysign standaloneextraStaticLinkRootsnoSignatureDataonlyEssentialOptimizationDatauseOptimizationDataFileuseSignatureDataFile jitTrackingignoreSymbolStoreSequencePointsinternConstantStringsextraOptimizationIterationswin32res win32manifestincludewin32manifest linkResources utf8output flatErrors maxErrors baseAddress showTermswriteTermsToFiles doDetupledoTLRdoFinalSimplifyoptsOn optSettings emitTailcallslcidproductNameForBannerText showBanner showTimesshowLoadedAssembliescontinueAfterParseFailureshowExtensionTypeMessagespause noDebugData?F:Microsoft.FSharp.Compiler.Build.TcConfigBuilder.isInteractive RawMetadataProviderGeneratedAssemblyProviderGeneratedStaticLinkMapILAssemblyRefsFSharpViewOfMetadataAssemblyAutoOpenAttributes$AssemblyInternalsVisibleToAttributes TypeProvidersFSharpOptimizationData Evaluation CompilationEditing SourceFiles9F:Microsoft.FSharp.Compiler.Build.LoadClosure.SourceFiles References8F:Microsoft.FSharp.Compiler.Build.LoadClosure.ReferencesBF:Microsoft.FSharp.Compiler.Build.LoadClosure.UnresolvedReferencesInputs4F:Microsoft.FSharp.Compiler.Build.LoadClosure.InputsNoWarns5F:Microsoft.FSharp.Compiler.Build.LoadClosure.NoWarns RootErrors8F:Microsoft.FSharp.Compiler.Build.LoadClosure.RootErrors RootWarnings:F:Microsoft.FSharp.Compiler.Build.LoadClosure.RootWarningsAugment\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../augment.fsi#T:Microsoft.FSharp.Compiler.AugmentCheckAugmentationAttribs[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../augment.fs*TyconIsCandidateForAugmentationWithCompare)TyconIsCandidateForAugmentationWithEquals'TyconIsCandidateForAugmentationWithHashMakeValsForCompareAugmentation*MakeValsForCompareWithComparerAugmentationMakeValsForEqualsAugmentation+MakeValsForEqualityWithComparerAugmentation"MakeBindingsForCompareAugmentation.MakeBindingsForCompareWithComparerAugmentation!MakeBindingsForEqualsAugmentation/MakeBindingsForEqualityWithComparerAugmentationTypeDefinitelyHasEquality€‹M:Microsoft.FSharp.Compiler.Augment.TypeDefinitelyHasEquality(Microsoft.FSharp.Compiler.Env.TcGlobals,Microsoft.FSharp.Compiler.Tast.TType)W/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../ast.fsT:Microsoft.FSharp.Compiler.AstFsiDynamicModulePrefix6P:Microsoft.FSharp.Compiler.Ast.FsiDynamicModulePrefixXmlDocCollector AddGrabPoint AddXmlDocLine LinesBefore grabPointPos posComparep1p2checkMergeProcess XmlDocStatics.cctorToXmlDocCreateFromGrabPoint collector ParserDetail get_idText get_idRangeget_Lidget_ThereIsAnExtraDotAtTheEndget_RangeSansAnyExtraDotSynConstCombine SeqExprOnlySynBindingKind MemberKind-P:Microsoft.FSharp.Compiler.Ast.SynType.Range-P:Microsoft.FSharp.Compiler.Ast.SynExpr.RangeT:Microsoft.FSharp.Compiler.Ast.SynTypeDefnSigRepr.ObjectModelSimple9T:Microsoft.FSharp.Compiler.Ast.SynTypeDefnSigRepr.Simple2T:Microsoft.FSharp.Compiler.Ast.SynTypeDefnSigRepr TypeDefnSig:T:Microsoft.FSharp.Compiler.Ast.SynTypeDefnSig.TypeDefnSig.T:Microsoft.FSharp.Compiler.Ast.SynTypeDefnSigField(T:Microsoft.FSharp.Compiler.Ast.SynField ComponentInfo0T:Microsoft.FSharp.Compiler.Ast.SynComponentInfoValSpfn5T:Microsoft.FSharp.Compiler.Ast.SynValInfo.SynValInfo*T:Microsoft.FSharp.Compiler.Ast.SynValInfo*T:Microsoft.FSharp.Compiler.Ast.SynArgInfo0T:Microsoft.FSharp.Compiler.Ast.SynValTyparDeclsExceptionDefnRepr0T:Microsoft.FSharp.Compiler.Ast.SynExceptionReprSynExceptionDefn ExceptionDefn0T:Microsoft.FSharp.Compiler.Ast.SynExceptionDefnOpen ImplicitCtor:T:Microsoft.FSharp.Compiler.Ast.SynMemberDefn.ImplicitCtorImplicitInherit=T:Microsoft.FSharp.Compiler.Ast.SynMemberDefn.ImplicitInherit LetBindings9T:Microsoft.FSharp.Compiler.Ast.SynMemberDefn.LetBindings AbstractSlot8T:Microsoft.FSharp.Compiler.Ast.SynMemberDefn.NestedType AutoProperty:T:Microsoft.FSharp.Compiler.Ast.SynMemberDefn.AutoProperty ModuleAbbrevSynModuleDecls NestedModuleDoExpr AttributesParsedHashDirective HashDirectiveNamespaceFragmentSynExceptionSig ExceptionSigSynModuleSigDeclsSynModuleOrNamespaceSig4T:Microsoft.FSharp.Compiler.Ast.SynModuleOrNamespaceParsedImplFileFragment AnonModule NamedModuleParsedSigFileFragmentIDefnsIHash WarningOff3T:Microsoft.FSharp.Compiler.Ast.QualifiedNameOfFileImplFileSigFilegeneratedArgNamePrefix-T:Microsoft.FSharp.Compiler.Ast.SynReturnInfoSynInfo'T:Microsoft.FSharp.Compiler.Ast.SynInfo6P:Microsoft.FSharp.Compiler.Ast.SynInfo.unnamedTopArg15P:Microsoft.FSharp.Compiler.Ast.SynInfo.unnamedTopArg3P:Microsoft.FSharp.Compiler.Ast.SynInfo.unitArgData5P:Microsoft.FSharp.Compiler.Ast.SynInfo.unnamedRetVal4P:Microsoft.FSharp.Compiler.Ast.SynInfo.selfMetadata[M:Microsoft.FSharp.Compiler.Ast.SynInfo.HasNoArgs(Microsoft.FSharp.Compiler.Ast.SynValInfo) IsOptionalArg_M:Microsoft.FSharp.Compiler.Ast.SynInfo.IsOptionalArg(Microsoft.FSharp.Compiler.Ast.SynArgInfo)HasOptionalArgsaM:Microsoft.FSharp.Compiler.Ast.SynInfo.HasOptionalArgs(Microsoft.FSharp.Compiler.Ast.SynValInfo)*IncorporateEmptyTupledArgForPropertyGetter|M:Microsoft.FSharp.Compiler.Ast.SynInfo.IncorporateEmptyTupledArgForPropertyGetter(Microsoft.FSharp.Compiler.Ast.SynValInfo)IncorporateSelfArgdM:Microsoft.FSharp.Compiler.Ast.SynInfo.IncorporateSelfArg(Microsoft.FSharp.Compiler.Ast.SynValInfo)IncorporateSetterArgfM:Microsoft.FSharp.Compiler.Ast.SynInfo.IncorporateSetterArg(Microsoft.FSharp.Compiler.Ast.SynValInfo) AritiesOfArgs_M:Microsoft.FSharp.Compiler.Ast.SynInfo.AritiesOfArgs(Microsoft.FSharp.Compiler.Ast.SynValInfo)AttribsOfArgDatabM:Microsoft.FSharp.Compiler.Ast.SynInfo.AttribsOfArgData(Microsoft.FSharp.Compiler.Ast.SynArgInfo)InferSynArgInfoFromSimplePat€ÄM:Microsoft.FSharp.Compiler.Ast.SynInfo.InferSynArgInfoFromSimplePat(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Ast.SynAttribute},Microsoft.FSharp.Compiler.Ast.SynSimplePat)InferSynArgInfoFromSimplePatsrM:Microsoft.FSharp.Compiler.Ast.SynInfo.InferSynArgInfoFromSimplePats(Microsoft.FSharp.Compiler.Ast.SynSimplePats)InferSynArgInfoFromPatdM:Microsoft.FSharp.Compiler.Ast.SynInfo.InferSynArgInfoFromPat(Microsoft.FSharp.Compiler.Ast.SynPat)AdjustArgsForUnitElimination infosForArgs€ÀM:Microsoft.FSharp.Compiler.Ast.SynInfo.AdjustArgsForUnitElimination(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.Ast.SynArgInfo}})AdjustMemberArgs€»M:Microsoft.FSharp.Compiler.Ast.SynInfo.AdjustMemberArgs``1(Microsoft.FSharp.Compiler.Ast.MemberKind,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Collections.FSharpList{``0}})InferLambdaArgs^M:Microsoft.FSharp.Compiler.Ast.SynInfo.InferLambdaArgs(Microsoft.FSharp.Compiler.Ast.SynExpr)InferSynReturnDataemptySynValInfoemptySynValDataInferSynValDataEM:Microsoft.FSharp.Compiler.Ast.SynInfo.InferSynValData(Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Ast.MemberFlags},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Ast.SynPat},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.Ast.SynReturnInfo},Microsoft.FSharp.Compiler.Ast.SynExpr)IfDefIf IfDefElseSkip8T:Microsoft.FSharp.Compiler.Ast.LexerEndlineContinuationMLOnly;T:Microsoft.FSharp.Compiler.Ast.LexerWhitespaceContinuationLexCont SyntaxError+T:Microsoft.FSharp.Compiler.Ast.SyntaxErrorLexbufLocalXmlDocStore6T:Microsoft.FSharp.Compiler.Ast.LexbufLocalXmlDocStore xmlDocKey ClearXmlDocSaveXmlDocLine€®M:Microsoft.FSharp.Compiler.Ast.LexbufLocalXmlDocStore.SaveXmlDocLine(Internal.Utilities.Text.Lexing.LexBuffer{System.Char},System.String,Microsoft.FSharp.Compiler.Range.pos)GrabXmlDocBeforeMarker markerRange€ªM:Microsoft.FSharp.Compiler.Ast.LexbufLocalXmlDocStore.GrabXmlDocBeforeMarker(Internal.Utilities.Text.Lexing.LexBuffer{System.Char},Microsoft.FSharp.Compiler.Range.range)basicNameCounts1T:Microsoft.FSharp.Compiler.Ast.NiceNameGenerator7T:Microsoft.FSharp.Compiler.Ast.StableNiceNameGeneratord/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../ilx/cu_erase.fsiMorphse/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilmorph.fsi-T:Microsoft.FSharp.Compiler.AbstractIL.MorphsmorphILScopeRefsInILTypeRefd/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilmorph.fsmorph`1M:Microsoft.FSharp.Compiler.AbstractIL.Morphs.morphILScopeRefsInILTypeRef(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef},Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef)morphILMethodDefs ILMethodDefsmorphILTypeDefs ILTypeDefs€÷M:Microsoft.FSharp.Compiler.AbstractIL.Morphs.morphILTypeDefs(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef},Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs)morphExpandILTypeDefsmorphILTypeDefsInILModuleM:Microsoft.FSharp.Compiler.AbstractIL.Morphs.morphILTypeDefsInILModule(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs},Microsoft.FSharp.Compiler.AbstractIL.IL.ILModuleDef)!morphILTypeRefsInILModuleMemoizedT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.OptionoptT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.Stringmakesublenindexrindex lowercase uppercaseisUpper capitalize uncapitalize tryDropPrefix tryDropSuffix hasPrefix dropPrefix dropSuffix DictionaryBT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.Dictionary Hashset`1 HashsetModuleET:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.HashsetModulecreateT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.TablesmemoizeET:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.NameMapModulefoldBack ofKeyedListlayer layerAdditiveaddfunionfmssubfold2errfsuball2 foldBackRange filterRange mapFilteriteri partition existsInRangetryFindInRangeNameMultiMapModuleJT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.NameMultiMapModulerangeReversingEachBucket chooseRangeinitByMultiMapModuleFT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.MultiMapModule init@1117-3DT:Microsoft.FSharp.Compiler.AbstractIL.Internal.Library.LayeredMap`2 init@1232-4ShimT:Microsoft.FSharp.Compiler.AbstractIL.Internal.AsciiConstantsparseILGlobalsd/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilascii.fs NoArgInstrsLazyInstrTable`1 Int64Instrs Int32InstrsInt32Int32Instrs DoubleInstrsMethodSpecInstrs StringInstrs TokenInstrs TypeInstrs IntTypeInstrsValueTypeInstrsILConst ILVarArgsILToken SwitchInstr InstrTable`1ILRuntimeWriterf/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs6T:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWritercodeLabelOrderwrapCustomAttr setCustomAttrcinfobyteslogRefEmitCallsDefineDynamicAssemblyAndLog%AppDomain.DefineDynamicAssemblyAndLog AppDomainEmitAssemblyBuilderAccessAssemblyBuilderasmNameasmDirDefineDynamicModuleAndLog)AssemblyBuilder.DefineDynamicModuleAndLog ModuleBuilderSetCustomAttributeAndLog(AssemblyBuilder.SetCustomAttributeAndLogConstructorInfoAddResourceFileAndLog%AssemblyBuilder.AddResourceFileAndLogResourceAttributesnm1nm2CustomAttributeBuildercabGetArrayMethodAndLog"ModuleBuilder.GetArrayMethodAndLogCallingConventionsatyDefineDocumentAndLog"ModuleBuilder.DefineDocumentAndLog SymbolStoreISymbolDocumentWriterlangvendordoctype GetTypeAndLogModuleBuilder.GetTypeAndLog nameInModuleflag1flag2DefineTypeAndLogModuleBuilder.DefineTypeAndLogTypeAttributes TypeBuilderDefineManifestResourceAndLog*ModuleBuilder.DefineManifestResourceAndLogstream&ModuleBuilder.SetCustomAttributeAndLogSetImplementationFlagsAndLog/ConstructorBuilder.SetImplementationFlagsAndLogConstructorBuilderMethodImplAttributesDefineParameterAndLog(ConstructorBuilder.DefineParameterAndLogParameterAttributesParameterBuilderattrGetILGeneratorAndLog'ConstructorBuilder.GetILGeneratorAndLog ILGenerator*MethodBuilder.SetImplementationFlagsAndLog MethodBuilderSetReturnTypeAndLog!MethodBuilder.SetReturnTypeAndLogrtSetParametersAndLog!MethodBuilder.SetParametersAndLog#MethodBuilder.DefineParameterAndLogDefineGenericParametersAndLog+MethodBuilder.DefineGenericParametersAndLogGenericTypeParameterBuildergps"MethodBuilder.GetILGeneratorAndLog&MethodBuilder.SetCustomAttributeAndLogCreateTypeAndLogTypeBuilder.CreateTypeAndLogDefineNestedTypeAndLog"TypeBuilder.DefineNestedTypeAndLogDefineMethodAndLogTypeBuilder.DefineMethodAndLogMethodAttributescconv)TypeBuilder.DefineGenericParametersAndLogDefineConstructorAndLog#TypeBuilder.DefineConstructorAndLogparmsDefineFieldAndLogTypeBuilder.DefineFieldAndLogFieldAttributes FieldBuilderDefinePropertyAndLog TypeBuilder.DefinePropertyAndLogPropertyAttributesPropertyBuilderDefineEventAndLogTypeBuilder.DefineEventAndLogEventAttributes EventBuilderSetParentAndLogTypeBuilder.SetParentAndLog AddInterfaceImplementationAndLog,TypeBuilder.AddInterfaceImplementationAndLogInvokeMemberAndLogTypeBuilder.InvokeMemberAndLog BindingFlags$TypeBuilder.SetCustomAttributeAndLogget_RefEmitNameOpCode.get_RefEmitNameOpCodeDeclareLocalAndLogILGenerator.DeclareLocalAndLog LocalBuilderisPinnedMarkLabelAndLogILGenerator.MarkLabelAndLoglabMarkSequencePointAndLog#ILGenerator.MarkSequencePointAndLogsymDocc1c2BeginExceptionBlockAndLog%ILGenerator.BeginExceptionBlockAndLogEndExceptionBlockAndLog#ILGenerator.EndExceptionBlockAndLogBeginFinallyBlockAndLog#ILGenerator.BeginFinallyBlockAndLogBeginCatchBlockAndLog!ILGenerator.BeginCatchBlockAndLogBeginExceptFilterBlockAndLog(ILGenerator.BeginExceptFilterBlockAndLogBeginFaultBlockAndLog!ILGenerator.BeginFaultBlockAndLogDefineLabelAndLogILGenerator.DefineLabelAndLog EmitAndLogILGenerator.EmitAndLogflagsIf equalTypesequalTypeListsssttgetGenericArgumentsOfTypetypTgetGenericArgumentsOfMethodmethIgetTypeConstructorconvAssemblyRefaref getTRefType€¯M:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.getTRefType(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.cenv,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef)emEnvorderILTypeReforderILMethodReforderILFieldReforderILPropertyRef ILPropertyRefemEnv0envBindTypeReftypBenvUpdateCreatedTypeRef envGetTypT preferCreatedenvBindConsRefmrefconsB envGetConsBenvBindMethodRefmethB envGetMethBenvBindFieldReffreffieldB envGetFieldBenvBindPropRefprefpropB envGetPropB envGetTypB envGetTypeDef envSetLocalslocs envGetLocal envSetLabel envGetLabel envPushTyvarstyps envPopTyvars envGetTyvaru16isEmittedTypeRef envAddEntryPtenvPopEntryPts convCallConv ILCallingConv convTypeSpectspec convTypeAuxconvType€äM:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.convType(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.cenv,Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) convTypesILTypesconvTypesToArrayconvCreatedType€ëM:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.convCreatedType(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.cenv,Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) convFieldInitTypeBuilderInstantiationTtypeIsNotQueryablequeryableTypeGetField_emEnvparentTnonQueryableTypeGetFieldparentTI fieldInfo convFieldSpecqueryableTypeGetMethodBySearchqueryableTypeGetMethodnonQueryableTypeGetMethodmethInfo convMethodRefconvMethodSpecqueryableTypeGetConstructornonQueryableTypeGetConstructorconsInfoconvConstructorSpec emitLabelMarkilGlabel defineLabelemitInstrComparecomptarg€íM:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emitInstrCompare(Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emEnv,System.Reflection.Emit.ILGenerator,Microsoft.FSharp.Compiler.AbstractIL.IL.ILComparisonInstr,System.Int32)emitInstrVolatile ILVolatility€¡M:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emitInstrVolatile(System.Reflection.Emit.ILGenerator,Microsoft.FSharp.Compiler.AbstractIL.IL.ILVolatility)emitInstrAlign ILAlignment€M:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emitInstrAlign(System.Reflection.Emit.ILGenerator,Microsoft.FSharp.Compiler.AbstractIL.IL.ILAlignment) emitInstrTail ILTailcalltail emitTheCall€óM:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.emitInstrTail(System.Reflection.Emit.ILGenerator,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTailcall,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})emitInstrNewobjvarargsemitSilverlightCheck emitInstrCallopCallgetGenericMethodDefinition QuotationsqgetArrayMethInfosetArrayMethInfo emitInstrmodBinstremitBasicBlock ILBasicBlockbblockemitCodecode emitLocalILLocallocalemitILMethodBodyilmbodyemitMethodBody_namembodyconvCustomAttrcattremitCustomAttremitCustomAttrsbuildGenParamsPass1defineGenericParametersbuildGenParamsPass1bgenArgs emitParameterdefineParameterparamconvMethodAttributesconvMethodImplFlagsbuildMethodPass2buildMethodPass3buildFieldPass2fdefbuildFieldPass3_typBbuildPropertyPass2propbuildPropertyPass3buildEventPass3eventDefbuildMethodImplsPass3ILMethodImplDef_trefmimpltypeAttrbutesOfTypeDefKind ILTypeDefKindtypeAttrbutesOfTypeAccessILTypeDefAccesstypeAttributesOfTypeEncodingILDefaultPInvokeEncodingtypeAttributesOfTypeLayoutILTypeDefLayoutbuildTypeDefPass1rootTypeBuildernestingbuildTypeTypeDefbuildTypeDefPass1bbuildTypeDefPass2buildTypeDefPass3getEnclosingTypeRefsgetTypeRefsInTypevalueTypesOnlyverbose2 createTypeRefcreatedbuildTypeDefPass4buildModuleTypePass1buildModuleTypePass1bbuildModuleTypePass2buildModuleTypePass3buildModuleTypePass4buildModuleFragmentasmBmkDynamicAssemblyAndModule debugInfoemitModuleFragment resolvePath;T:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.Zmap generatePdb;T:Microsoft.FSharp.Compiler.AbstractIL.ILRuntimeWriter.cenvemTypMap emConsMap emMethMap emFieldMap emPropMapemLocalsemLabelsemTyvars emEntryPtsP:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.IsStaticget_IsNonVirtualInstanceJP:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.IsNonVirtualInstance?P:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.IsVirtualget_IsCheckAccessOnOverrideget_MethodBody FindByName ILFieldDefs LookupByName ILEventDefsILPropertyDefsILMethodImplDefsILTypeDefLayoutInfo ILTypeInitget_AsListOfLazyTypeDefsIP:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs.AsListOfLazyTypeDefsNM:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs.FindByName(System.String)get_IsDelegateget_IsStructOrEnumILNestedExportedTypesILNestedExportedType ILResourcesILAssemblyLongevityget_ManifestOfAssemblyILAssemblyManifestget_HasManifestresolveILMethodRef€£M:Microsoft.FSharp.Compiler.AbstractIL.IL.resolveILMethodRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodRef)splitNamespacesplitNamespaceToArraysplitILTypeNameHM:Microsoft.FSharp.Compiler.AbstractIL.IL.splitILTypeName(System.String)*splitILTypeNameWithPossibleStaticArgumentssplitTypeNameRightKM:Microsoft.FSharp.Compiler.AbstractIL.IL.splitTypeNameRight(System.String)typeNameForGlobalFunctionsisTypeNameForGlobalFunctionsungenericizeTypeName mkILGlobals€ªM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILGlobals(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Core.FSharpOption{System.String},System.Boolean)$destTypeDefsWithGlobalFunctionsFirst€´M:Microsoft.FSharp.Compiler.AbstractIL.IL.destTypeDefsWithGlobalFunctionsFirst(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs)decodeILAttribData€úM:Microsoft.FSharp.Compiler.AbstractIL.IL.decodeILAttribData(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribute,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef})mkSimpleAssRefGM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkSimpleAssRef(System.String)mkSimpleModRefemptyILGenericArgs mkILTyvarTymkILNestedTyRef€²M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILNestedTyRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Collections.FSharpList{System.String},System.String) mkILTyRefmkILTyRefInTyRefmkILGenericArgsILGenericArgsListmkILNonGenericTySpecqM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILNonGenericTySpec(Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef) mkILTySpec mkILTySpecRawmkILTy€•M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILBoxity,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeSpec) mkILBoxedTymkILBoxedTyRaw mkILValueTymkILNonGenericBoxedTymkILNonGenericValueTy mkILArrTy mkILArr1DTy isILArrTy destILArrTy mkILBoxedType mkILTypesmkILMethRefRawCM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILMethRefRaw(Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILCallingConv,System.String,System.Int32,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) mkILMethRef mkILMethSpecmkILMethSpecForMethRefInTyRawmkILMethSpecForMethRefInTymkILMethSpecInTymkILMethSpecInTyRawmkILNonGenericMethSpecInTy?M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILNonGenericMethSpecInTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Compiler.AbstractIL.IL.ILCallingConv,System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType)mkILInstanceMethSpecInTy_M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILInstanceMethSpecInTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType})"mkILNonGenericInstanceMethSpecInTyM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILNonGenericInstanceMethSpecInTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType)mkILStaticMethSpecInTy]M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILStaticMethSpecInTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType}) mkILNonGenericStaticMethSpecInTyM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILNonGenericStaticMethSpecInTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.String,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType)mkILCtorMethSpecForTy€ÇM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILCtorMethSpecForTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType}) mkILFieldRef€¦M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILFieldRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef,System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) mkILFieldSpecmkILFieldSpecInTymkILCallSigRaw mkILCallSigmkILFormalBoxedTy€ÕM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILFormalBoxedTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef})mkILFormalTyparsRawmkILFormalTyparsmkILFormalGenericArgsRawmkILFormalGenericArgsmkILSimpleTyparmkILCustomAttribMethRef¿M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILCustomAttribMethRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodSpec,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribElem},Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.Boolean,Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribElem}})mkILCustomAttributemkPermissionSet checkILCodeeM:Microsoft.FSharp.Compiler.AbstractIL.IL.checkILCode(Microsoft.FSharp.Compiler.AbstractIL.IL.ILCode)generateCodeLabelformatCodeLabelnonBranchingInstrsToCode€œM:Microsoft.FSharp.Compiler.AbstractIL.IL.nonBranchingInstrsToCode(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr})mkNonBranchingInstrsThen€ÙM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkNonBranchingInstrsThen(System.Int32,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr},Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr)mkNonBranchingInstrsThenBrmkNonBranchingInstrs€¥M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkNonBranchingInstrs(System.Int32,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr}) mkBasicBlocklM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkBasicBlock(Microsoft.FSharp.Compiler.AbstractIL.IL.ILBasicBlock) mkGroupBlockILLocalsAllocatorpreAlloc AllocLocal mkNormalCalllM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkNormalCall(Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodSpec)mkNormalCallvirtmkNormalCallconstraintmkNormalNewobjmkCallBaseConstructor mkNormalStfldmkNormalStsfldmkNormalLdsfld mkNormalLdfldmkNormalLdflda mkNormalLdobj mkNormalStobj mkLdcInt32mkLdarg0mkLdlocmkStlocmkLdarg andTailness mkILParam€•M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILParam(Microsoft.FSharp.Core.FSharpOption{System.String},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) mkILParamAnonmkILParamNamed mkILReturnILReturn mkILLocal mkILLocals emptyILLocalsmkILEmptyGenericParams@P:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILEmptyGenericParamsmkILMethodBody initlocals8M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILMethodBody(System.Boolean,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILLocal},System.Int32,Microsoft.FSharp.Compiler.AbstractIL.IL.ILCode,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.AbstractIL.IL.ILSourceMarker}) mkMethodBodymkILCtor mkILClassCtormkILNonGenericEmptyCtormkILStaticMethodmkILNonGenericStaticMethodmkILGenericVirtualMethodmkILGenericNonVirtualMethodmkILNonGenericVirtualMethodmkILNonGenericInstanceMethodmkILInstanceFieldM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILInstanceField(System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldInit},Microsoft.FSharp.Compiler.AbstractIL.IL.ILMemberAccess)mkILStaticFieldmkILLiteralFieldmkILGenericClass‚ÞM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILGenericClass(System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefAccess,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILPropertyDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILEventDefs,Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttributes,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeInit)mkILSimpleClassmkILTypeDefForGlobalFunctionsmkRawDataValueTypeDefsizepack€›M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkRawDataValueTypeDef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,System.String,System.Int32,System.UInt16)prependInstrsToCode€ÆM:Microsoft.FSharp.Compiler.AbstractIL.IL.prependInstrsToCode(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr},Microsoft.FSharp.Compiler.AbstractIL.IL.ILCode)prependInstrsToMethodprependInstrsToClassCtor)M:Microsoft.FSharp.Compiler.AbstractIL.IL.prependInstrsToClassCtor(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.AbstractIL.IL.ILSourceMarker},Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef)mkILStorageCtorÈM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILStorageCtor(Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Compiler.AbstractIL.IL.ILSourceMarker},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType}},Microsoft.FSharp.Compiler.AbstractIL.IL.ILMemberAccess)mkILSimpleStorageCtor#mkILSimpleStorageCtorWithParamNamesmkILDelegateMethodsmkCtorMethSpecForDelegate€´M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkCtorMethSpecForDelegate(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType,System.Boolean)mkILTypeForGlobalFunctionsxM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILTypeForGlobalFunctions(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef)mkILCustomAttrs€—M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILCustomAttrs(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribute})mkILComputedCustomAttrsemptyILCustomAttrsmkILSecurityDeclsmkILLazySecurityDeclsemptyILSecurityDecls mkMethBodyAuxmkMethBodyLazyAux mkILEventsmkILEventsLazy emptyILEventsmkILPropertiesmkILPropertiesLazyemptyILProperties mkILMethodsmkILMethodsLazy addILMethodemptyILMethods mkILFieldsmkILFieldsLazy emptyILFieldsmkILMethodImplsmkILMethodImplsLazyemptyILMethodImpls mkILTypeDefsemptyILTypeDefsmkILTypeDefsLazy8M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILTypeDefsLazy(System.Lazy{Microsoft.FSharp.Collections.FSharpList{System.Tuple{Microsoft.FSharp.Collections.FSharpList{System.String},System.String,Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttributes,System.Lazy{Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef}}}}) addILTypeDefmkILNestedExportedTypesmkILNestedExportedTypesLazymkILExportedTypesmkILExportedTypesLazy mkILResourcesmkILResourcesLazymkILSimpleModule moduleNamedll“M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkILSimpleModule(System.String,System.String,System.Boolean,System.Tuple{System.Int32,System.Int32},System.Boolean,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefs,Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.String},System.Int32,Microsoft.FSharp.Compiler.AbstractIL.IL.ILExportedTypesAndForwarders,System.String)mkRefForNestedILTypeDefM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkRefForNestedILTypeDef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef},Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef)mkRefForILMethodmkRefForILFieldmkRefToILMethodmkRefToILFieldmkRefToILAssemblymkRefToILModulerescopeILScopeRef€¢M:Microsoft.FSharp.Compiler.AbstractIL.IL.rescopeILScopeRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef)rescopeILTypeSpec€¢M:Microsoft.FSharp.Compiler.AbstractIL.IL.rescopeILTypeSpec(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeSpec) rescopeILType€šM:Microsoft.FSharp.Compiler.AbstractIL.IL.rescopeILType(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType)rescopeILMethodRef€¤M:Microsoft.FSharp.Compiler.AbstractIL.IL.rescopeILMethodRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodRef)rescopeILFieldRef€¢M:Microsoft.FSharp.Compiler.AbstractIL.IL.rescopeILFieldRef(Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef,Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldRef)ILExceptionClauseILExceptionSpec ILLocalSpec buildILCodepM:Microsoft.FSharp.Compiler.AbstractIL.IL.buildILCode(System.String,Microsoft.FSharp.Core.FSharpFunc{System.Int32,System.Int32},Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr[],Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILExceptionSpec},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILLocalSpec}) instILTypeAux€ÌM:Microsoft.FSharp.Compiler.AbstractIL.IL.instILTypeAux(System.Int32,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) instILType€¼M:Microsoft.FSharp.Compiler.AbstractIL.IL.instILType(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Compiler.AbstractIL.IL.ILType},Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) ecmaPublicKey7P:Microsoft.FSharp.Compiler.AbstractIL.IL.ecmaPublicKeyecmaMscorlibScopeRef>P:Microsoft.FSharp.Compiler.AbstractIL.IL.ecmaMscorlibScopeRef ecmaILGlobals7P:Microsoft.FSharp.Compiler.AbstractIL.IL.ecmaILGlobalsmkInitializeArrayMethSpecvM:Microsoft.FSharp.Compiler.AbstractIL.IL.mkInitializeArrayMethSpec(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals)mkMscorlibExnNewobjmkDebuggableAttribute€M:Microsoft.FSharp.Compiler.AbstractIL.IL.mkDebuggableAttribute(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,System.Boolean,System.Boolean)mkDebuggableAttributeV2mkCompilerGeneratedAttributemkDebuggerNonUserCodeAttributemkDebuggerStepThroughAttributemkDebuggerHiddenAttributemkDebuggerDisplayAttributemkDebuggerTypeProxyAttribute!mkDebuggerBrowsableNeverAttributeaddMethodGeneratedAttrsaddPropertyGeneratedAttrsaddFieldGeneratedAttrsaddPropertyNeverAttrsaddFieldNeverAttrs isILObjectTy€˜M:Microsoft.FSharp.Compiler.AbstractIL.IL.isILObjectTy(Microsoft.FSharp.Compiler.AbstractIL.IL.ILGlobals,Microsoft.FSharp.Compiler.AbstractIL.IL.ILType) isILStringTy isILSByteTy isILByteTy isILInt16Ty isILUInt16Ty isILInt32Ty isILUInt32Ty isILInt64Ty isILUInt64Ty isILIntPtrTy isILUIntPtrTy isILBoolTy isILCharTyisILTypedReferenceTy isILDoubleTy isILSingleTy sha1HashBytesFM:Microsoft.FSharp.Compiler.AbstractIL.IL.sha1HashBytes(System.Byte[])parseILVersionGM:Microsoft.FSharp.Compiler.AbstractIL.IL.parseILVersion(System.String)formatILVersioncompareILVersions ILEnumInfogetTyOfILEnumInfocomputeILEnumInfo ILEventRef runningOnMono computeILRefslM:Microsoft.FSharp.Compiler.AbstractIL.IL.computeILRefs(Microsoft.FSharp.Compiler.AbstractIL.IL.ILModuleDef) emptyILRefsILTypeDefKindExtension`1RegisterTypeDefKindExtensionIlxExtensionTypeKind2T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILList`1StructuralComparisonAttributeAMD64IA64:T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILSourceDocumentIlxExtensionType:T:Microsoft.FSharp.Compiler.AbstractIL.IL.IlxExtensionType>T:Microsoft.FSharp.Compiler.AbstractIL.IL.IlxExtensionTypeKind;T:Microsoft.FSharp.Compiler.AbstractIL.IL.IlxExtensionInstrPublicKeyTokenLocal:T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef.Local;T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef.Module=T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILScopeRef.AssemblyCDeclStdCallThisCallFastCallVarArgInstanceCT:Microsoft.FSharp.Compiler.AbstractIL.IL.ILThisConvention.InstanceInstanceExplicitKT:Microsoft.FSharp.Compiler.AbstractIL.IL.ILThisConvention.InstanceExplicitStaticAT:Microsoft.FSharp.Compiler.AbstractIL.IL.ILThisConvention.StaticCallconv ILArrayBound6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILArrayBound ILArrayBoundsAsObjectAsValue NonVariant CoVariant ContraVariant3T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeRef4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeSpecVoid5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.Void6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.Array6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.ValueBoxed6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.BoxedPtr4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.PtrByref6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.ByrefFunctionPointer@T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.FunctionPointer8T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.TypeVarModified9T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILType.Modified CallingConvArgTypes7T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericArgs ILListModule6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILListModuleofArraynth5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodRefEnclosingTypeRef4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldRef6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodSpecFieldRef EnclosingType5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldSpec5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILCodeLabelDT_RDT_I1DT_U1DT_I2DT_U2DT_I4DT_U4DT_I8DT_U8DT_R4DT_R8DT_IDT_UDT_REFILMethodI4I8R4R8Tailcall NormalcallAligned Unaligned1 Unaligned2 Unaligned4Volatile NonvolatileReadonlyAddress NormalAddressBI_beqBI_bge BI_bge_unBI_bgt BI_bgt_unBI_ble BI_ble_unBI_blt BI_blt_un BI_bne_un BI_brfalse BI_brtrueAI_add AI_add_ovf AI_add_ovf_unAI_andAI_div AI_div_unAI_ceqAI_cgt AI_cgt_unAI_clt AI_clt_unAI_conv AI_conv_ovfAI_conv_ovf_unAI_mul AI_mul_ovf AI_mul_ovf_unAI_rem AI_rem_unAI_shlAI_shr AI_shr_unAI_sub AI_sub_ovf AI_sub_ovf_unAI_xorAI_orAI_negAI_not AI_ldnullAI_dupAI_pop AI_ckfiniteAI_nopAI_ldcI_ldargI_ldargaI_ldindI_ldlocI_ldlocaI_stargI_stindI_stlocI_brI_jmpI_brcmpI_switchI_retI_call I_callvirtI_callconstraintI_calliI_ldftnI_newobjI_throw I_endfinally I_endfilterI_leave I_rethrowI_ldsfldI_ldfld I_ldsfldaI_ldfldaI_stsfldI_stfldI_ldstrI_isinst I_castclass I_ldtoken I_ldvirtftnI_cpobj I_initobjI_ldobjI_stobjI_boxI_unbox I_unbox_anyI_sizeofI_ldelemI_stelem I_ldelema I_ldelem_any I_stelem_anyI_newarrI_ldlen I_mkrefany I_refanytype I_refanyvalI_break I_seqpoint I_arglist I_locallocI_cpblk I_initblk EI_ilzeroEI_ldlen_multiI_other1T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILInstr instrExtDestsinstrExtFallthroughinstrExtIsTailcallinstrExtRelabel Instructions6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILBasicBlock LocalIndex LocalName8T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILDebugMapping GroupBlock RestrictBlockTryBlock0T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILCode FaultBlock FinallyBlockFilterCatchBlock:T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILExceptionBlock TypeFilter CodeFilterInt8UInt85T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldInitVariantCurrencyDateBSTRLPSTRLPWSTRIUnknown IDispatch SafeArrayHRESULTCArray UserDefinedFileTimeBlobStorageStreamedObject StoredObject BlobObjectCFCLSIDPTRIntUIntCustomFixedSysString FixedArrayLPTSTRByValStrTBSTRLPSTRUCTStructAsAnyANSIBSTR VariantBool6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILNativeTypeIsPinned1T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILLocal IsZeroInitMaxStack?F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodBody.MaxStack NoInliningLocalsCode SourceMarker6T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodBodyCompilerControlledFamilyAndAssemblyFamilyOrAssemblyFamily8T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMemberAccess=T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttribElem.String=T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttributeNamedArg5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAttributeMarshal=F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILParameter.MarshalIsInIsOut IsOptional CustomAttrs5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILParameter2T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILReturnRequestDemandDeny PermitOnly LinkCheck InheritCheckReqMinReqOpt ReqRefuse PreJitGrant PreJitDeny NonCasDemandNonCasLinkDemandNonCasInheritanceLinkDemandChoiceInheritanceDemandChoice DemandChoice:T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILSecurityAction PermissionSet7T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILPermissionsCdeclStdcallThiscallFastcallWinApiBT:Microsoft.FSharp.Compiler.AbstractIL.IL.PInvokeCallingConventionAnsiUnicodeAuto UseAssemblyEnabledDisabled PInvokeMethodWhere CharEncodingNoMangle LastErrorThrowOnUnmappableChar CharBestFit OverridesSpec9T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILOverridesSpec IsNewSlotIsCheckAccessOnOverride IsAbstractCctor NonVirtualVirtualPInvokeAbstractNative ConstraintsKF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef.ConstraintsVarianceHF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef.VarianceHasReferenceTypeConstraintZF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef.HasReferenceTypeConstraint!HasNotNullableValueTypeConstraintaF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef.HasNotNullableValueTypeConstraintHasDefaultConstructorConstraint_F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDef.HasDefaultConstructorConstraint?T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILGenericParameterDefmdKindAccessmdBody mdCodeKindIsInternalCall IsManaged IsForwardRef SecurityDecls HasSecurityAF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.HasSecurity IsEntryPoint IsReqSecObj IsHideBySig IsSpecialNameIsUnmanagedExportGF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.IsUnmanagedExportIsSynchronized IsPreserveSig IsMustRun?F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef.IsMustRun IsNoInline GenericParams5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDef IEnumerable`16T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodDefsIsStatic LiteralValueOffset;F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldDef.Offset NotSerialized IsLiteral IsInitOnly4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldDef5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILFieldDefsIsRTSpecialName AddMethod RemoveMethod FireMethod OtherMethods4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILEventDef5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILEventDefs SetMethodInit7T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILPropertyDef8T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILPropertyDefs Overrides OverrideBy9T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILMethodImplDefExplicit9T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefLayoutSizePack BeforeFieldOnAny4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeInitBT:Microsoft.FSharp.Compiler.AbstractIL.IL.ILDefaultPInvokeEncoding9T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefAccessDelegateOther7T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefKind4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDefstdKindIsSerializable IsComInterop@F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef.IsComInterop NestedTypes ImplementsExtendsMethods?F:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef.HasSecurityFields MethodImpls InitSemanticsEvents Properties3T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILTypeDef>T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILNestedExportedTypeScopeRefHF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILExportedTypeOrForwarder.Name IsForwarderCT:Microsoft.FSharp.Compiler.AbstractIL.IL.ILExportedTypeOrForwarderILResourceLocationLocation4T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILResource5T:Microsoft.FSharp.Compiler.AbstractIL.IL.ILResources UnspecifiedPlatformAppDomainPlatformProcessPlatformSystemAuxModuleHashAlgorithmSF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAssemblyManifest.AuxModuleHashAlgorithmFF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAssemblyManifest.PublicKeyLocaleAssemblyLongevityDisableJitOptimizations JitTracking Retargetable ExportedTypesJF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAssemblyManifest.ExportedTypesEntrypointElsewherePF:Microsoft.FSharp.Compiler.AbstractIL.IL.ILAssemblyManifest.EntrypointElsewhereP:Internal.Utilities.Text.Lexing.LexBuffer`1.IsPastEndOfStreamset_IsPastEndOfStreamNP:Internal.Utilities.Text.Lexing.LexBuffer`1.IsPastEndOfStream(System.Boolean) FromCharsEM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromChars(System.Char[]) FromFunction€–M:Internal.Utilities.Text.Lexing.LexBuffer`1.FromFunction(Microsoft.FSharp.Core.FSharpFunc{System.Tuple{`0[],System.Int32,System.Int32},System.Int32}) initialState|M:Internal.Utilities.Text.Lexing.UnicodeTables.Interpret(System.Int32,Internal.Utilities.Text.Lexing.LexBuffer{System.Char}))T:Internal.Utilities.Text.Lexing.Position,T:Internal.Utilities.Text.Lexing.LexBuffer`1.T:Internal.Utilities.Text.Lexing.UnicodeTablese/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/sformat.fsiJoint GetLayoutd/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/sformat.fs IEnvironmentKM:Internal.Utilities.StructuredFormat.IEnvironment.GetLayout(System.Object)get_MaxColumns=P:Internal.Utilities.StructuredFormat.IEnvironment.MaxColumns get_MaxRows:P:Internal.Utilities.StructuredFormat.IEnvironment.MaxRows FormatOptions Unbreakable BreakableBroken+T:Internal.Utilities.StructuredFormat.JointLeafAttr,T:Internal.Utilities.StructuredFormat.Layout LayoutOps/T:Internal.Utilities.StructuredFormat.LayoutOps6P:Internal.Utilities.StructuredFormat.LayoutOps.emptyLdM:Internal.Utilities.StructuredFormat.LayoutOps.isEmptyL(Internal.Utilities.StructuredFormat.Layout)objLCM:Internal.Utilities.StructuredFormat.LayoutOps.objL(System.Object)DM:Internal.Utilities.StructuredFormat.LayoutOps.wordL(System.String)CM:Internal.Utilities.StructuredFormat.LayoutOps.sepL(System.String)EM:Internal.Utilities.StructuredFormat.LayoutOps.rightL(System.String)DM:Internal.Utilities.StructuredFormat.LayoutOps.leftL(System.String)layout1layout2€M:Internal.Utilities.StructuredFormat.LayoutOps.op_HatHat(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€’M:Internal.Utilities.StructuredFormat.LayoutOps.op_PlusPlus(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€”M:Internal.Utilities.StructuredFormat.LayoutOps.op_MinusMinus(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€™M:Internal.Utilities.StructuredFormat.LayoutOps.op_MinusMinusMinus(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€ŽM:Internal.Utilities.StructuredFormat.LayoutOps.op_AtAt(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€“M:Internal.Utilities.StructuredFormat.LayoutOps.op_AtAtMinus(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€˜M:Internal.Utilities.StructuredFormat.LayoutOps.op_AtAtMinusMinus(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)layouts€M:Internal.Utilities.StructuredFormat.LayoutOps.commaListL(Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})€M:Internal.Utilities.StructuredFormat.LayoutOps.spaceListL(Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})€ŽM:Internal.Utilities.StructuredFormat.LayoutOps.semiListL(Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})€¸M:Internal.Utilities.StructuredFormat.LayoutOps.sepListL(Internal.Utilities.StructuredFormat.Layout,Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})dM:Internal.Utilities.StructuredFormat.LayoutOps.bracketL(Internal.Utilities.StructuredFormat.Layout)squareBracketLjM:Internal.Utilities.StructuredFormat.LayoutOps.squareBracketL(Internal.Utilities.StructuredFormat.Layout)bM:Internal.Utilities.StructuredFormat.LayoutOps.braceL(Internal.Utilities.StructuredFormat.Layout)€‹M:Internal.Utilities.StructuredFormat.LayoutOps.tupleL(Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})€M:Internal.Utilities.StructuredFormat.LayoutOps.aboveL(Internal.Utilities.StructuredFormat.Layout,Internal.Utilities.StructuredFormat.Layout)€M:Internal.Utilities.StructuredFormat.LayoutOps.aboveListL(Microsoft.FSharp.Collections.FSharpList{Internal.Utilities.StructuredFormat.Layout})selector€´M:Internal.Utilities.StructuredFormat.LayoutOps.optionL``1(Microsoft.FSharp.Core.FSharpFunc{``0,Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Core.FSharpOption{``0})€·M:Internal.Utilities.StructuredFormat.LayoutOps.listL``1(Microsoft.FSharp.Core.FSharpFunc{``0,Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Collections.FSharpList{``0})tagAttrLmaps€ÅM:Internal.Utilities.StructuredFormat.LayoutOps.tagAttrL(System.String,Microsoft.FSharp.Collections.FSharpList{System.Tuple{System.String,System.String}},Internal.Utilities.StructuredFormat.Layout)unfoldLfolder€ýM:Internal.Utilities.StructuredFormat.LayoutOps.unfoldL``2(Microsoft.FSharp.Core.FSharpFunc{``0,Internal.Utilities.StructuredFormat.Layout},Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpOption{System.Tuple{``0,``1}}},``1,System.Int32)FloatingPointFormatAttributeProcessorPrintIntercepts StringLimitIFormatProviderFormatProvider PrintWidth PrintDepth PrintLength PrintSizeShowPropertiesShowIEnumerable3T:Internal.Utilities.StructuredFormat.FormatOptions-T:Internal.Utilities.StructuredFormat.Display any_to_stringCM:Internal.Utilities.StructuredFormat.Display.any_to_string``1(``0) output_anywriterUM:Internal.Utilities.StructuredFormat.Display.output_any``1(System.IO.TextWriter,``0) any_to_layout squash_layout output_layoutlayout_as_stringlayout_to_string€œM:Internal.Utilities.StructuredFormat.Display.layout_to_string(Internal.Utilities.StructuredFormat.FormatOptions,Internal.Utilities.StructuredFormat.Layout)fsi_any_to_layoutResizeArrayModulei/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/resizearray.fsi&T:Internal.Utilities.ResizeArrayModuleh/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/resizearray.fsVM:Internal.Utilities.ResizeArrayModule.length``1(System.Collections.Generic.List{``0})`M:Internal.Utilities.ResizeArrayModule.get``1(System.Collections.Generic.List{``0},System.Int32)setdM:Internal.Utilities.ResizeArrayModule.set``1(System.Collections.Generic.List{``0},System.Int32,``0)BM:Internal.Utilities.ResizeArrayModule.create``1(System.Int32,``0)oM:Internal.Utilities.ResizeArrayModule.init``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc{System.Int32,``0})append{M:Internal.Utilities.ResizeArrayModule.append``1(System.Collections.Generic.List{``0},System.Collections.Generic.List{``0})concatM:Internal.Utilities.ResizeArrayModule.concat``1(Microsoft.FSharp.Collections.FSharpList{System.Collections.Generic.List{``0}})mM:Internal.Utilities.ResizeArrayModule.sub``1(System.Collections.Generic.List{``0},System.Int32,System.Int32)copyTM:Internal.Utilities.ResizeArrayModule.copy``1(System.Collections.Generic.List{``0})fillrM:Internal.Utilities.ResizeArrayModule.fill``1(System.Collections.Generic.List{``0},System.Int32,System.Int32,``0)€ M:Internal.Utilities.ResizeArrayModule.blit``1(System.Collections.Generic.List{``0},System.Int32,System.Collections.Generic.List{``0},System.Int32,System.Int32)VM:Internal.Utilities.ResizeArrayModule.toList``1(System.Collections.Generic.List{``0})^M:Internal.Utilities.ResizeArrayModule.ofList``1(Microsoft.FSharp.Collections.FSharpList{``0})€¨M:Internal.Utilities.ResizeArrayModule.fold``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``0}},``0,System.Collections.Generic.List{``1})€¬M:Internal.Utilities.ResizeArrayModule.foldBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},System.Collections.Generic.List{``0},``1)€•M:Internal.Utilities.ResizeArrayModule.iter``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit},System.Collections.Generic.List{``0})}M:Internal.Utilities.ResizeArrayModule.map``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.List{``0})iter2€áM:Internal.Utilities.ResizeArrayModule.iter2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})map2€ÉM:Internal.Utilities.ResizeArrayModule.map2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})€ÅM:Internal.Utilities.ResizeArrayModule.iteri``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.List{``0})€­M:Internal.Utilities.ResizeArrayModule.mapi``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,``1}},System.Collections.Generic.List{``0})€‹M:Internal.Utilities.ResizeArrayModule.exists``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})€‹M:Internal.Utilities.ResizeArrayModule.forall``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})€‹M:Internal.Utilities.ResizeArrayModule.filter``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})€ŽM:Internal.Utilities.ResizeArrayModule.partition``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})€¤M:Internal.Utilities.ResizeArrayModule.choose``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.List{``0})€‰M:Internal.Utilities.ResizeArrayModule.find``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})€ŒM:Internal.Utilities.ResizeArrayModule.tryFind``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0})tryPick€¥M:Internal.Utilities.ResizeArrayModule.tryPick``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.List{``0})revSM:Internal.Utilities.ResizeArrayModule.rev``1(System.Collections.Generic.List{``0})sort€­M:Internal.Utilities.ResizeArrayModule.sort``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,System.Int32}},System.Collections.Generic.List{``0})sortBy€€M:Internal.Utilities.ResizeArrayModule.sortBy``2(Microsoft.FSharp.Core.FSharpFunc{``0,``1},System.Collections.Generic.List{``0})WM:Internal.Utilities.ResizeArrayModule.toArray``1(System.Collections.Generic.List{``0})8M:Internal.Utilities.ResizeArrayModule.ofArray``1(``0[])toSeqUM:Internal.Utilities.ResizeArrayModule.toSeq``1(System.Collections.Generic.List{``0})exists2€×M:Internal.Utilities.ResizeArrayModule.exists2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})€ŽM:Internal.Utilities.ResizeArrayModule.findIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0}) findIndexi€¾M:Internal.Utilities.ResizeArrayModule.findIndexi``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean}},System.Collections.Generic.List{``0})reduce€¦M:Internal.Utilities.ResizeArrayModule.reduce``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},System.Collections.Generic.List{``0}) reduceBack€ªM:Internal.Utilities.ResizeArrayModule.reduceBack``1(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},System.Collections.Generic.List{``0})fold2€ôM:Internal.Utilities.ResizeArrayModule.fold2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``0}}},``0,System.Collections.Generic.List{``1},System.Collections.Generic.List{``2}) foldBack2€øM:Internal.Utilities.ResizeArrayModule.foldBack2``3(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.FSharpFunc{``2,``2}}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1},``2)€×M:Internal.Utilities.ResizeArrayModule.forall2``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,System.Boolean}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})WM:Internal.Utilities.ResizeArrayModule.isEmpty``1(System.Collections.Generic.List{``0})iteri2M:Internal.Utilities.ResizeArrayModule.iteri2``2(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,Microsoft.FSharp.Core.Unit}}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})mapi2€ùM:Internal.Utilities.ResizeArrayModule.mapi2``3(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``2}}},System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})scan€¨M:Internal.Utilities.ResizeArrayModule.scan``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``0}},``0,System.Collections.Generic.List{``1})scanBack€¬M:Internal.Utilities.ResizeArrayModule.scanBack``2(Microsoft.FSharp.Core.FSharpFunc{``0,Microsoft.FSharp.Core.FSharpFunc{``1,``1}},System.Collections.Generic.List{``0},``1)8M:Internal.Utilities.ResizeArrayModule.singleton``1(``0) tryFindIndex€‘M:Internal.Utilities.ResizeArrayModule.tryFindIndex``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean},System.Collections.Generic.List{``0}) tryFindIndexi€ÁM:Internal.Utilities.ResizeArrayModule.tryFindIndexi``1(Microsoft.FSharp.Core.FSharpFunc{System.Int32,Microsoft.FSharp.Core.FSharpFunc{``0,System.Boolean}},System.Collections.Generic.List{``0})zipxM:Internal.Utilities.ResizeArrayModule.zip``2(System.Collections.Generic.List{``0},System.Collections.Generic.List{``1})unzipgM:Internal.Utilities.ResizeArrayModule.unzip``2(System.Collections.Generic.List{System.Tuple{``0,``1}})push firstElementslastElementsRevnumLastElements init@23-9 T:Internal.Utilities.QueueList`1QueueListModule$T:Internal.Utilities.QueueListModuleofSeqone appendOne\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../FlatList.fsFlatListModule#T:Internal.Utilities.FlatListModulecollectsumsumByphysicalEqualitytoMapf/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/filename.fsiT:Internal.Utilities.FilenameIllegalFileNameChar checkSuffixe/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/filename.fsFM:Internal.Utilities.Filename.checkSuffix(System.String,System.String) chopExtension:M:Internal.Utilities.Filename.chopExtension(System.String) directoryName:M:Internal.Utilities.Filename.directoryName(System.String) hasExtension9M:Internal.Utilities.Filename.hasExtension(System.String)fileNameOfPath;M:Internal.Utilities.Filename.fileNameOfPath(System.String)fileNameWithoutExtensionEM:Internal.Utilities.Filename.fileNameWithoutExtension(System.String)l/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../InternalFileSystemUtils.fsiIsInvalidDirectoryk/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../InternalFileSystemUtils.fs IsInvalidPathFSharpEnvironmentr/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/CompilerLocationUtils.fs&T:Internal.Utilities.FSharpEnvironmentDotNetBuildString8P:Internal.Utilities.FSharpEnvironment.DotNetBuildString"FSharpBinaryMetadataFormatRevisionFSharpCoreLibRunningVersion RegOpenKeyExW Advapi32.dllCharSetBestFitMapping_hKey _lpSubKey _ulOptions _samDesired _phkResultRegQueryValueExW _lpValueName _lpReserved_lpType_lpData _lpchData RegCloseKeymaxPath maxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZ&GetDefaultRegistryStringValueViaDotNetsubKey%Get32BitRegistryStringValueViaPInvokeis32Bit tryRegKeytryCurrentDomain tryAppConfig appConfigKeytryFsharpiScripturlFM:Internal.Utilities.FSharpEnvironment.tryFsharpiScript(System.String)BackupInstallationProbePoints BinFolderOfDefaultFSharpCompilerIsRunningOnNetFx45OrAbove-T:Internal.Utilities.FSharpEnvironment.OptionofStringEM:Internal.Utilities.FSharpEnvironment.Option.ofString(System.String)Debugget_Log$P:Internal.Utilities.Debug.Trace.Logset_Log3P:Internal.Utilities.Debug.Trace.Log(System.String)get_Out$P:Internal.Utilities.Debug.Trace.Outset_Out:P:Internal.Utilities.Debug.Trace.Out(System.IO.TextWriter) ShouldLog loggingClass9M:Internal.Utilities.Debug.Trace.ShouldLog(System.String)CurrentThreadInfo2M:Internal.Utilities.Debug.Trace.CurrentThreadInfo ElapsedTime=M:Internal.Utilities.Debug.Trace.ElapsedTime(System.DateTime) IndentSpaces-M:Internal.Utilities.Debug.Trace.IndentSpaces LogMessage:M:Internal.Utilities.Debug.Trace.LogMessage(System.String)NameCurrentThread threadNameeM:Internal.Utilities.Debug.Trace.NameCurrentThread(Microsoft.FSharp.Core.FSharpOption{System.String})CallImpl functionNamedescriptionFunckM:Internal.Utilities.Debug.Trace.CallImpl``3(``0,``1,``2,Microsoft.FSharp.Core.FSharpOption{System.String})Call€M:Internal.Utilities.Debug.Trace.Call(System.String,System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})CallByThreadNamed€¨M:Internal.Utilities.Debug.Trace.CallByThreadNamed(System.String,System.String,System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String}) PrintLine messageFunc€„M:Internal.Utilities.Debug.Trace.PrintLine(System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String})Print€€M:Internal.Utilities.Debug.Trace.Print(System.String,Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,System.String}) BeepHelperbeeptype7M:Internal.Utilities.Debug.Trace.BeepHelper``2(``0,``1)BeepOk6M:Internal.Utilities.Debug.Trace.BeepOk(System.String) BeepError9M:Internal.Utilities.Debug.Trace.BeepError(System.String)Beep4M:Internal.Utilities.Debug.Trace.Beep(System.String) TraceInterop'T:Internal.Utilities.Debug.TraceInterop MessageBeepMessageBeepType user32.dll SetLastError_mbtQuestion InformationlognoopDisposableout init@24-11indenth/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../InternalCollections.fsig/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../InternalCollections.fsTKeyTValue AgedLookup`2 keepStronglyareSameonStrongDiscardkeepMaxTryPeekKeyValueAM:Internal.Utilities.Collections.AgedLookup`2.TryPeekKeyValue(`0)TryGetKeyValue@M:Internal.Utilities.Collections.AgedLookup`2.TryGetKeyValue(`0)TryGet8M:Internal.Utilities.Collections.AgedLookup`2.TryGet(`0)Put8M:Internal.Utilities.Collections.AgedLookup`2.Put(`0,`1)8M:Internal.Utilities.Collections.AgedLookup`2.Remove(`0)Clear3M:Internal.Utilities.Collections.AgedLookup`2.Clear MruCache`2 isStillValidareSameForSubsumptionlogComputedNewValuelogUsedCachedValue onDiscard1M:Internal.Utilities.Collections.MruCache`2.ClearGet3M:Internal.Utilities.Collections.MruCache`2.Get(`0) GetAvailableM:Internal.Utilities.Collections.HashMultiMap`2.Replace(`0,`1)8P:Internal.Utilities.Collections.HashMultiMap`2.Item(`0)set_Item;P:Internal.Utilities.Collections.HashMultiMap`2.Item(`0,`1);M:Internal.Utilities.Collections.HashMultiMap`2.TryFind(`0)FindAll;M:Internal.Utilities.Collections.HashMultiMap`2.FindAll(`0)Fold€°M:Internal.Utilities.Collections.HashMultiMap`2.Fold``1(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,Microsoft.FSharp.Core.FSharpFunc{``0,``0}}},``0) get_Count5P:Internal.Utilities.Collections.HashMultiMap`2.CountIterate€M:Internal.Utilities.Collections.HashMultiMap`2.Iterate(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{`1,Microsoft.FSharp.Core.Unit}})o/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/TaggedCollections.fsin/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/TaggedCollections.fs ComparerTagSet`25M:Internal.Utilities.Collections.Tagged.Set`2.Add(`0)8M:Internal.Utilities.Collections.Tagged.Set`2.Remove(`0)3P:Internal.Utilities.Collections.Tagged.Set`2.CountContains:M:Internal.Utilities.Collections.Tagged.Set`2.Contains(`0)5P:Internal.Utilities.Collections.Tagged.Set`2.IsEmptyvM:Internal.Utilities.Collections.Tagged.Set`2.Iterate(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.Unit})€‰M:Internal.Utilities.Collections.Tagged.Set`2.Fold``1(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc{``0,``0}},``0) PartitionlM:Internal.Utilities.Collections.Tagged.Set`2.Partition(Microsoft.FSharp.Core.FSharpFunc{`0,System.Boolean})FilteriM:Internal.Utilities.Collections.Tagged.Set`2.Filter(Microsoft.FSharp.Core.FSharpFunc{`0,System.Boolean})ExistsiM:Internal.Utilities.Collections.Tagged.Set`2.Exists(Microsoft.FSharp.Core.FSharpFunc{`0,System.Boolean})ForAlliM:Internal.Utilities.Collections.Tagged.Set`2.ForAll(Microsoft.FSharp.Core.FSharpFunc{`0,System.Boolean})cM:Internal.Utilities.Collections.Tagged.Set`2.Create(`1,System.Collections.Generic.IEnumerable{`0})7M:Internal.Utilities.Collections.Tagged.Set`2.Empty(`1) Singleton>M:Internal.Utilities.Collections.Tagged.Set`2.Singleton(`1,`0)Equality€™M:Internal.Utilities.Collections.Tagged.Set`2.Equality(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1})Compare€˜M:Internal.Utilities.Collections.Tagged.Set`2.Compare(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1})op_Subtraction€ŸM:Internal.Utilities.Collections.Tagged.Set`2.op_Subtraction(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1}) op_Addition€œM:Internal.Utilities.Collections.Tagged.Set`2.op_Addition(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1}) Intersection€M:Internal.Utilities.Collections.Tagged.Set`2.Intersection(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1})€–M:Internal.Utilities.Collections.Tagged.Set`2.Union(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1}) Difference€›M:Internal.Utilities.Collections.Tagged.Set`2.Difference(Internal.Utilities.Collections.Tagged.Set{`0,`1},Internal.Utilities.Collections.Tagged.Set{`0,`1}) get_Choose4P:Internal.Utilities.Collections.Tagged.Set`2.Chooseget_MinimumElementM:FSComp.SR.undefinedNameRecordLabelOrNamespace(System.String)undefinedNameRecordLabel3M:FSComp.SR.undefinedNameRecordLabel(System.String)undefinedNameTypeParameter5M:FSComp.SR.undefinedNameTypeParameter(System.String)!undefinedNamePatternDiscriminatorM:FSComp.SR.buildSignatureWithoutImplementation(System.String)buildArgInvalidInt-M:FSComp.SR.buildArgInvalidInt(System.String)buildArgInvalidFloat/M:FSComp.SR.buildArgInvalidFloat(System.String)buildUnrecognizedOption2M:FSComp.SR.buildUnrecognizedOption(System.String)!buildInvalidModuleOrNamespaceName-M:FSComp.SR.buildInvalidModuleOrNamespaceName!pickleErrorReadingWritingMetadataJM:FSComp.SR.pickleErrorReadingWritingMetadata(System.String,System.String)tastTypeOrModuleNotConcrete6M:FSComp.SR.tastTypeOrModuleNotConcrete(System.String)%tastTypeHasAssemblyCodeRepresentation@M:FSComp.SR.tastTypeHasAssemblyCodeRepresentation(System.String),tastNamespaceAndModuleWithSameNameInAssemblyGM:FSComp.SR.tastNamespaceAndModuleWithSameNameInAssembly(System.String)$tastTwoModulesWithSameNameInAssembly?M:FSComp.SR.tastTwoModulesWithSameNameInAssembly(System.String)%tastDuplicateTypeDefinitionInAssemblyNM:FSComp.SR.tastDuplicateTypeDefinitionInAssembly(System.String,System.String)0tastConflictingModuleAndTypeDefinitionInAssemblyYM:FSComp.SR.tastConflictingModuleAndTypeDefinitionInAssembly(System.String,System.String)tastInvalidMemberSignature&M:FSComp.SR.tastInvalidMemberSignaturetastValueDoesNotHaveSetterType*M:FSComp.SR.tastValueDoesNotHaveSetterType tastInvalidFormForPropertyGetter,M:FSComp.SR.tastInvalidFormForPropertyGetter tastInvalidFormForPropertySetter,M:FSComp.SR.tastInvalidFormForPropertySettertastUnexpectedByRefM:FSComp.SR.tastUnexpectedByReftastValueMustBeLocalAndMutable*M:FSComp.SR.tastValueMustBeLocalAndMutabletastInvalidMutationOfConstant)M:FSComp.SR.tastInvalidMutationOfConstanttastValueHasBeenCopied"M:FSComp.SR.tastValueHasBeenCopied0tastRecursiveValuesMayNotBeInConstructionOfTupleDefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSiggM:FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig(System.String,System.String);DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDifferrM:FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureDeclaresDiffer(System.String,System.String,System.String)7DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffernM:FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbbreviationsDiffer(System.String,System.String,System.String);DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySigVM:FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbbreviationHiddenBySig(System.String)6DefinitionsInSigAndImplNotCompatibleSigHasAbbreviationQM:FSComp.SR.DefinitionsInSigAndImplNotCompatibleSigHasAbbreviation(System.String)'ModuleContainsConstructorButNamesDifferPM:FSComp.SR.ModuleContainsConstructorButNamesDiffer(System.String,System.String),ModuleContainsConstructorButDataFieldsDifferUM:FSComp.SR.ModuleContainsConstructorButDataFieldsDiffer(System.String,System.String)/ModuleContainsConstructorButTypesOfFieldsDifferXM:FSComp.SR.ModuleContainsConstructorButTypesOfFieldsDiffer(System.String,System.String)0ModuleContainsConstructorButAccessibilityDiffersYM:FSComp.SR.ModuleContainsConstructorButAccessibilityDiffers(System.String,System.String)FieldNotContainedNamesDifferEM:FSComp.SR.FieldNotContainedNamesDiffer(System.String,System.String)&FieldNotContainedAccessibilitiesDifferOM:FSComp.SR.FieldNotContainedAccessibilitiesDiffer(System.String,System.String)FieldNotContainedStaticsDifferGM:FSComp.SR.FieldNotContainedStaticsDiffer(System.String,System.String)FieldNotContainedMutablesDifferHM:FSComp.SR.FieldNotContainedMutablesDiffer(System.String,System.String)FieldNotContainedLiteralsDifferHM:FSComp.SR.FieldNotContainedLiteralsDiffer(System.String,System.String)FieldNotContainedTypesDifferEM:FSComp.SR.FieldNotContainedTypesDiffer(System.String,System.String)/typrelCannotResolveImplicitGenericInstantiationXM:FSComp.SR.typrelCannotResolveImplicitGenericInstantiation(System.String,System.String)0typrelCannotResolveAmbiguityInOverloadedOperatorKM:FSComp.SR.typrelCannotResolveAmbiguityInOverloadedOperator(System.String)$typrelCannotResolveAmbiguityInPrintf0M:FSComp.SR.typrelCannotResolveAmbiguityInPrintf"typrelCannotResolveAmbiguityInEnum.M:FSComp.SR.typrelCannotResolveAmbiguityInEnum&typrelCannotResolveAmbiguityInDelegate2M:FSComp.SR.typrelCannotResolveAmbiguityInDelegatetyprelInvalidValueM:FSComp.SR.typrelInvalidValue+typrelSigImplNotCompatibleParamCountsDiffer7M:FSComp.SR.typrelSigImplNotCompatibleParamCountsDiffer7typrelSigImplNotCompatibleCompileTimeRequirementsDifferCM:FSComp.SR.typrelSigImplNotCompatibleCompileTimeRequirementsDiffer+typrelSigImplNotCompatibleConstraintsDifferTM:FSComp.SR.typrelSigImplNotCompatibleConstraintsDiffer(System.String,System.String)1typrelSigImplNotCompatibleConstraintsDifferRemoveZM:FSComp.SR.typrelSigImplNotCompatibleConstraintsDifferRemove(System.String,System.String)9typrelTypeImplementsIComparableShouldOverrideObjectEqualsTM:FSComp.SR.typrelTypeImplementsIComparableShouldOverrideObjectEquals(System.String):typrelTypeImplementsIComparableDefaultObjectEqualsProvidedUM:FSComp.SR.typrelTypeImplementsIComparableDefaultObjectEqualsProvided(System.String)1typrelExplicitImplementationOfGetHashCodeOrEqualsLM:FSComp.SR.typrelExplicitImplementationOfGetHashCodeOrEquals(System.String))typrelExplicitImplementationOfGetHashCodeDM:FSComp.SR.typrelExplicitImplementationOfGetHashCode(System.String)$typrelExplicitImplementationOfEquals?M:FSComp.SR.typrelExplicitImplementationOfEquals(System.String)+ExceptionDefsNotCompatibleHiddenBySignatureTM:FSComp.SR.ExceptionDefsNotCompatibleHiddenBySignature(System.String,System.String)5ExceptionDefsNotCompatibleDotNetRepresentationsDiffer^M:FSComp.SR.ExceptionDefsNotCompatibleDotNetRepresentationsDiffer(System.String,System.String)7ExceptionDefsNotCompatibleAbbreviationHiddenBySignature`M:FSComp.SR.ExceptionDefsNotCompatibleAbbreviationHiddenBySignature(System.String,System.String)*ExceptionDefsNotCompatibleSignaturesDifferSM:FSComp.SR.ExceptionDefsNotCompatibleSignaturesDiffer(System.String,System.String)5ExceptionDefsNotCompatibleExceptionDeclarationsDiffer^M:FSComp.SR.ExceptionDefsNotCompatibleExceptionDeclarationsDiffer(System.String,System.String).ExceptionDefsNotCompatibleFieldInSigButNotImpleM:FSComp.SR.ExceptionDefsNotCompatibleFieldInSigButNotImpl(System.String,System.String,System.String).ExceptionDefsNotCompatibleFieldInImplButNotSigeM:FSComp.SR.ExceptionDefsNotCompatibleFieldInImplButNotSig(System.String,System.String,System.String)+ExceptionDefsNotCompatibleFieldOrderDiffersTM:FSComp.SR.ExceptionDefsNotCompatibleFieldOrderDiffers(System.String,System.String)1typrelModuleNamespaceAttributesDifferInSigAndImpl=M:FSComp.SR.typrelModuleNamespaceAttributesDifferInSigAndImpltyprelMethodIsOverconstrained)M:FSComp.SR.typrelMethodIsOverconstrainedtyprelOverloadNotFound?M:FSComp.SR.typrelOverloadNotFound(System.String,System.String)typrelOverrideWasAmbiguous5M:FSComp.SR.typrelOverrideWasAmbiguous(System.String)typrelMoreThenOneOverride4M:FSComp.SR.typrelMoreThenOneOverride(System.String)typrelMethodIsSealed/M:FSComp.SR.typrelMethodIsSealed(System.String)'typrelOverrideImplementsMoreThenOneSlot^M:FSComp.SR.typrelOverrideImplementsMoreThenOneSlot(System.String,System.String,System.String)typrelDuplicateInterface$M:FSComp.SR.typrelDuplicateInterface typrelNeedExplicitImplementation;M:FSComp.SR.typrelNeedExplicitImplementation(System.String).typrelNamedArgumentHasBeenAssignedMoreThenOnce:M:FSComp.SR.typrelNamedArgumentHasBeenAssignedMoreThenOncetyprelNoImplementationGiven6M:FSComp.SR.typrelNoImplementationGiven(System.String))typrelNoImplementationGivenWithSuggestionDM:FSComp.SR.typrelNoImplementationGivenWithSuggestion(System.String)/typrelMemberDoesNotHaveCorrectNumberOfArgumentsXM:FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(System.String,System.String)4typrelMemberDoesNotHaveCorrectNumberOfTypeParameters]M:FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(System.String,System.String)6typrelMemberDoesNotHaveCorrectKindsOfGenericParameters_M:FSComp.SR.typrelMemberDoesNotHaveCorrectKindsOfGenericParameters(System.String,System.String)typrelMemberCannotImplementRM:FSComp.SR.typrelMemberCannotImplement(System.String,System.String,System.String)astParseEmbeddedILError#M:FSComp.SR.astParseEmbeddedILErrorastParseEmbeddedILTypeError'M:FSComp.SR.astParseEmbeddedILTypeErrorastDeprecatedIndexerNotation(M:FSComp.SR.astDeprecatedIndexerNotation"astInvalidExprLeftHandOfAssignment.M:FSComp.SR.astInvalidExprLeftHandOfAssignmentaugNoRefEqualsOnStruct"M:FSComp.SR.augNoRefEqualsOnStructaugInvalidAttrsM:FSComp.SR.augInvalidAttrsaugNoEqualityNeedsNoComparison*M:FSComp.SR.augNoEqualityNeedsNoComparison augStructCompNeedsStructEquality,M:FSComp.SR.augStructCompNeedsStructEquality"augStructEqNeedsNoCompOrStructComp.M:FSComp.SR.augStructEqNeedsNoCompOrStructComp"augTypeCantHaveRefEqAndStructAttrs.M:FSComp.SR.augTypeCantHaveRefEqAndStructAttrsaugOnlyCertainTypesCanHaveAttrs+M:FSComp.SR.augOnlyCertainTypesCanHaveAttrsaugRefEqCantHaveObjEquals%M:FSComp.SR.augRefEqCantHaveObjEqualsaugCustomEqNeedsObjEquals%M:FSComp.SR.augCustomEqNeedsObjEqualsaugCustomCompareNeedsIComp&M:FSComp.SR.augCustomCompareNeedsICompaugNoEqNeedsNoObjEquals#M:FSComp.SR.augNoEqNeedsNoObjEqualsaugNoCompCantImpIComp!M:FSComp.SR.augNoCompCantImpIComp"augCustomEqNeedsNoCompOrCustomComp.M:FSComp.SR.augCustomEqNeedsNoCompOrCustomComp#forPositionalSpecifiersNotPermitted/M:FSComp.SR.forPositionalSpecifiersNotPermittedforMissingFormatSpecifier%M:FSComp.SR.forMissingFormatSpecifierforFlagSetTwice*M:FSComp.SR.forFlagSetTwice(System.String)forPrefixFlagSpacePlusSetTwice*M:FSComp.SR.forPrefixFlagSpacePlusSetTwiceforHashSpecifierIsInvalid%M:FSComp.SR.forHashSpecifierIsInvalidforBadPrecisionM:FSComp.SR.forBadPrecision forBadWidthM:FSComp.SR.forBadWidthforDoesNotSupportZeroFlag4M:FSComp.SR.forDoesNotSupportZeroFlag(System.String)forPrecisionMissingAfterDot'M:FSComp.SR.forPrecisionMissingAfterDotforFormatDoesntSupportPrecision:M:FSComp.SR.forFormatDoesntSupportPrecision(System.String)forBadFormatSpecifier!M:FSComp.SR.forBadFormatSpecifierforLIsUnnecessaryM:FSComp.SR.forLIsUnnecessaryforHIsUnnecessaryM:FSComp.SR.forHIsUnnecessaryforDoesNotSupportPrefixFlagDM:FSComp.SR.forDoesNotSupportPrefixFlag(System.String,System.String)forBadFormatSpecifierGeneral7M:FSComp.SR.forBadFormatSpecifierGeneral(System.String)elSysEnvExitDidntExit!M:FSComp.SR.elSysEnvExitDidntExitelDeprecatedOperator M:FSComp.SR.elDeprecatedOperatorchkProtectedOrBaseCalled$M:FSComp.SR.chkProtectedOrBaseCalledchkByrefUsedInInvalidWay3M:FSComp.SR.chkByrefUsedInInvalidWay(System.String)chkMutableUsedInInvalidWay5M:FSComp.SR.chkMutableUsedInInvalidWay(System.String)chkBaseUsedInInvalidWay#M:FSComp.SR.chkBaseUsedInInvalidWaychkVariableUsedInInvalidWay6M:FSComp.SR.chkVariableUsedInInvalidWay(System.String)chkTypeLessAccessibleThanTypeFM:FSComp.SR.chkTypeLessAccessibleThanType(System.String,System.String)chkSystemVoidOnlyInTypeof%M:FSComp.SR.chkSystemVoidOnlyInTypeofchkErrorUseOfByrefM:FSComp.SR.chkErrorUseOfByrefchkErrorContainsCallToRethrow)M:FSComp.SR.chkErrorContainsCallToRethrowchkSplicingOnlyInQuotations'M:FSComp.SR.chkSplicingOnlyInQuotationschkNoFirstClassSplicing#M:FSComp.SR.chkNoFirstClassSplicingchkNoFirstClassAddressOf$M:FSComp.SR.chkNoFirstClassAddressOfchkNoFirstClassRethrow"M:FSComp.SR.chkNoFirstClassRethrowchkNoByrefAtThisPoint0M:FSComp.SR.chkNoByrefAtThisPoint(System.String)chkLimitationsOfBaseKeyword'M:FSComp.SR.chkLimitationsOfBaseKeyword#chkObjCtorsCantUseExceptionHandling/M:FSComp.SR.chkObjCtorsCantUseExceptionHandlingchkNoAddressOfAtThisPoint4M:FSComp.SR.chkNoAddressOfAtThisPoint(System.String)"chkNoAddressStaticFieldAtThisPoint=M:FSComp.SR.chkNoAddressStaticFieldAtThisPoint(System.String)chkNoAddressFieldAtThisPoint7M:FSComp.SR.chkNoAddressFieldAtThisPoint(System.String)%chkNoAddressOfArrayElementAtThisPoint1M:FSComp.SR.chkNoAddressOfArrayElementAtThisPointchkFirstClassFuncNoByref$M:FSComp.SR.chkFirstClassFuncNoByrefchkReturnTypeNoByref M:FSComp.SR.chkReturnTypeNoByrefchkInvalidCustAttrVal!M:FSComp.SR.chkInvalidCustAttrValchkAttrHasAllowMultiFalse4M:FSComp.SR.chkAttrHasAllowMultiFalse(System.String)chkMemberUsedInInvalidWayPM:FSComp.SR.chkMemberUsedInInvalidWay(System.String,System.String,System.String)chkNoByrefAsTopValue M:FSComp.SR.chkNoByrefAsTopValuechkReflectedDefCantSplice%M:FSComp.SR.chkReflectedDefCantSplicechkEntryPointUsageM:FSComp.SR.chkEntryPointUsagechkUnionCaseCompiledForm$M:FSComp.SR.chkUnionCaseCompiledFormchkUnionCaseDefaultAugmentation+M:FSComp.SR.chkUnionCaseDefaultAugmentationchkPropertySameNameMethod4M:FSComp.SR.chkPropertySameNameMethod(System.String)!chkGetterSetterDoNotMatchAbstractM:FSComp.SR.csTypeCannotBeResolvedAtCompileTime(System.String)csCodeLessGenericM:FSComp.SR.csCodeLessGenericcsTypeInferenceMaxDepth#M:FSComp.SR.csTypeInferenceMaxDepthcsExpectedArgumentsM:FSComp.SR.csExpectedArgumentscsIndexArgumentMismatch>M:FSComp.SR.csIndexArgumentMismatch(System.Int32,System.Int32)(csExpectTypeWithOperatorButGivenFunctionCM:FSComp.SR.csExpectTypeWithOperatorButGivenFunction(System.String)%csExpectTypeWithOperatorButGivenTuple@M:FSComp.SR.csExpectTypeWithOperatorButGivenTuple(System.String)csTypesDoNotSupportOperatorDM:FSComp.SR.csTypesDoNotSupportOperator(System.String,System.String)csTypeDoesNotSupportOperatorEM:FSComp.SR.csTypeDoesNotSupportOperator(System.String,System.String)#csTypesDoNotSupportOperatorNullableLM:FSComp.SR.csTypesDoNotSupportOperatorNullable(System.String,System.String)$csTypeDoesNotSupportOperatorNullableMM:FSComp.SR.csTypeDoesNotSupportOperatorNullable(System.String,System.String)csTypeDoesNotSupportConversionGM:FSComp.SR.csTypeDoesNotSupportConversion(System.String,System.String)csMethodFoundButIsStaticOM:FSComp.SR.csMethodFoundButIsStatic(System.String,System.String,System.String)csMethodFoundButIsNotStaticRM:FSComp.SR.csMethodFoundButIsNotStatic(System.String,System.String,System.String)csStructConstraintInconsistent*M:FSComp.SR.csStructConstraintInconsistentcsTypeDoesNotHaveNull0M:FSComp.SR.csTypeDoesNotHaveNull(System.String)csNullableTypeDoesNotHaveNull8M:FSComp.SR.csNullableTypeDoesNotHaveNull(System.String)csTypeDoesNotSupportComparison1:M:FSComp.SR.csTypeDoesNotSupportComparison1(System.String)csTypeDoesNotSupportComparison2:M:FSComp.SR.csTypeDoesNotSupportComparison2(System.String)csTypeDoesNotSupportComparison3:M:FSComp.SR.csTypeDoesNotSupportComparison3(System.String)csTypeDoesNotSupportEquality18M:FSComp.SR.csTypeDoesNotSupportEquality1(System.String)csTypeDoesNotSupportEquality28M:FSComp.SR.csTypeDoesNotSupportEquality2(System.String)csTypeDoesNotSupportEquality38M:FSComp.SR.csTypeDoesNotSupportEquality3(System.String)csTypeIsNotEnumType.M:FSComp.SR.csTypeIsNotEnumType(System.String) csTypeHasNonStandardDelegateType;M:FSComp.SR.csTypeHasNonStandardDelegateType(System.String)csTypeIsNotDelegateType2M:FSComp.SR.csTypeIsNotDelegateType(System.String)csTypeParameterCannotBeNullable+M:FSComp.SR.csTypeParameterCannotBeNullable$csGenericConstructRequiresStructType?M:FSComp.SR.csGenericConstructRequiresStructType(System.String)'csGenericConstructRequiresUnmanagedTypeBM:FSComp.SR.csGenericConstructRequiresUnmanagedType(System.String)"csTypeNotCompatibleBecauseOfPrintfKM:FSComp.SR.csTypeNotCompatibleBecauseOfPrintf(System.String,System.String),csGenericConstructRequiresReferenceSemanticsGM:FSComp.SR.csGenericConstructRequiresReferenceSemantics(System.String)%csGenericConstructRequiresNonAbstract@M:FSComp.SR.csGenericConstructRequiresNonAbstract(System.String)2csGenericConstructRequiresPublicDefaultConstructorMM:FSComp.SR.csGenericConstructRequiresPublicDefaultConstructor(System.String)!csTypeInstantiationLengthMismatch-M:FSComp.SR.csTypeInstantiationLengthMismatch"csOptionalArgumentNotPermittedHere.M:FSComp.SR.csOptionalArgumentNotPermittedHerecsMemberIsNotStatic.M:FSComp.SR.csMemberIsNotStatic(System.String)csMemberIsNotInstance0M:FSComp.SR.csMemberIsNotInstance(System.String)csArgumentLengthMismatch$M:FSComp.SR.csArgumentLengthMismatchcsArgumentTypesDoNotMatch%M:FSComp.SR.csArgumentTypesDoNotMatchcsMethodExpectsParams!M:FSComp.SR.csMethodExpectsParamscsMemberIsNotAccessible@M:FSComp.SR.csMemberIsNotAccessible(System.String,System.String)csMemberIsNotAccessible2AM:FSComp.SR.csMemberIsNotAccessible2(System.String,System.String)csMethodIsNotAStaticMethod5M:FSComp.SR.csMethodIsNotAStaticMethod(System.String)csMethodIsNotAnInstanceMethod8M:FSComp.SR.csMethodIsNotAnInstanceMethod(System.String)%csMemberHasNoArgumentOrReturnProperty\M:FSComp.SR.csMemberHasNoArgumentOrReturnProperty(System.String,System.String,System.String)csRequiredSignatureIs0M:FSComp.SR.csRequiredSignatureIs(System.String)csMemberSignatureMismatchOM:FSComp.SR.csMemberSignatureMismatch(System.String,System.Int32,System.String)csMemberSignatureMismatch2PM:FSComp.SR.csMemberSignatureMismatch2(System.String,System.Int32,System.String)csMemberSignatureMismatch3^M:FSComp.SR.csMemberSignatureMismatch3(System.String,System.Int32,System.String,System.String)csMemberSignatureMismatch4^M:FSComp.SR.csMemberSignatureMismatch4(System.String,System.Int32,System.String,System.String)#csMemberSignatureMismatchArityNamedsM:FSComp.SR.csMemberSignatureMismatchArityNamed(System.String,System.Int32,System.Int32,System.Int32,System.String)csMemberSignatureMismatchArityaM:FSComp.SR.csMemberSignatureMismatchArity(System.String,System.Int32,System.Int32,System.String)"csMemberSignatureMismatchArityTypeeM:FSComp.SR.csMemberSignatureMismatchArityType(System.String,System.Int32,System.Int32,System.String)csMemberNotAccessibleXM:FSComp.SR.csMemberNotAccessible(System.String,System.Int32,System.String,System.Int32)csIncorrectGenericInstantiationUM:FSComp.SR.csIncorrectGenericInstantiation(System.String,System.String,System.Int32)csMemberOverloadArityMismatchRM:FSComp.SR.csMemberOverloadArityMismatch(System.String,System.Int32,System.Int32)csNoMemberTakesTheseArgumentsSM:FSComp.SR.csNoMemberTakesTheseArguments(System.String,System.String,System.Int32)csNoMemberTakesTheseArguments2aM:FSComp.SR.csNoMemberTakesTheseArguments2(System.String,System.String,System.Int32,System.Int32)csNoMemberTakesTheseArguments3bM:FSComp.SR.csNoMemberTakesTheseArguments3(System.String,System.String,System.Int32,System.String)csMethodNotFound+M:FSComp.SR.csMethodNotFound(System.String)csNoOverloadsFound-M:FSComp.SR.csNoOverloadsFound(System.String)csMethodIsOverloaded/M:FSComp.SR.csMethodIsOverloaded(System.String) csCandidates'M:FSComp.SR.csCandidates(System.String)csSeeAvailableOverloads#M:FSComp.SR.csSeeAvailableOverloads&parsDoCannotHaveVisibilityDeclarations2M:FSComp.SR.parsDoCannotHaveVisibilityDeclarationsparsEofInHashIfM:FSComp.SR.parsEofInHashIfparsEofInStringM:FSComp.SR.parsEofInStringparsEofInVerbatimString#M:FSComp.SR.parsEofInVerbatimStringparsEofInCommentM:FSComp.SR.parsEofInCommentparsEofInStringInComment$M:FSComp.SR.parsEofInStringInComment parsEofInVerbatimStringInComment,M:FSComp.SR.parsEofInVerbatimStringInCommentparsEofInIfOcamlM:FSComp.SR.parsEofInIfOcamlparsEofInDirectiveM:FSComp.SR.parsEofInDirectiveparsNoHashEndIfFound M:FSComp.SR.parsNoHashEndIfFoundparsAttributesIgnored!M:FSComp.SR.parsAttributesIgnored1parsUseBindingsIllegalInImplicitClassConstructors=M:FSComp.SR.parsUseBindingsIllegalInImplicitClassConstructorsparsUseBindingsIllegalInModules+M:FSComp.SR.parsUseBindingsIllegalInModules*parsIntegerForLoopRequiresSimpleIdentifier6M:FSComp.SR.parsIntegerForLoopRequiresSimpleIdentifier"parsOnlyOneWithAugmentationAllowed.M:FSComp.SR.parsOnlyOneWithAugmentationAllowedparsUnexpectedSemicolon#M:FSComp.SR.parsUnexpectedSemicolonparsUnexpectedEndOfFile#M:FSComp.SR.parsUnexpectedEndOfFile#parsUnexpectedVisibilityDeclaration/M:FSComp.SR.parsUnexpectedVisibilityDeclarationparsOnlyHashDirectivesAllowed)M:FSComp.SR.parsOnlyHashDirectivesAllowed5parsVisibilityDeclarationsShouldComePriorToIdentifierAM:FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifierparsNamespaceOrModuleNotBoth(M:FSComp.SR.parsNamespaceOrModuleNotBoth&parsModuleAbbreviationMustBeSimpleName2M:FSComp.SR.parsModuleAbbreviationMustBeSimpleName(parsIgnoreAttributesOnModuleAbbreviation4M:FSComp.SR.parsIgnoreAttributesOnModuleAbbreviation5parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivateAM:FSComp.SR.parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate5parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivateAM:FSComp.SR.parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivateparsUnClosedBlockInHashLight(M:FSComp.SR.parsUnClosedBlockInHashLightparsUnmatchedBeginOrStruct&M:FSComp.SR.parsUnmatchedBeginOrStructparsModuleDefnMustBeSimpleName*M:FSComp.SR.parsModuleDefnMustBeSimpleNameparsUnexpectedEmptyModuleDefn)M:FSComp.SR.parsUnexpectedEmptyModuleDefnparsAttributesMustComeBeforeVal+M:FSComp.SR.parsAttributesMustComeBeforeVal7parsAttributesAreNotPermittedOnInterfaceImplementationsCM:FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementationsparsSyntaxErrorM:FSComp.SR.parsSyntaxError&parsAugmentationsIllegalOnDelegateType2M:FSComp.SR.parsAugmentationsIllegalOnDelegateType#parsUnmatchedClassInterfaceOrStruct/M:FSComp.SR.parsUnmatchedClassInterfaceOrStructparsEmptyTypeDefinition#M:FSComp.SR.parsEmptyTypeDefinitionparsUnmatchedWithM:FSComp.SR.parsUnmatchedWithparsGetOrSetRequired M:FSComp.SR.parsGetOrSetRequired"parsOnlyClassCanTakeValueArguments.M:FSComp.SR.parsOnlyClassCanTakeValueArgumentsparsUnmatchedBeginM:FSComp.SR.parsUnmatchedBeginparsInvalidDeclarationSyntax(M:FSComp.SR.parsInvalidDeclarationSyntaxparsGetAndOrSetRequired#M:FSComp.SR.parsGetAndOrSetRequiredparsTypeAnnotationsOnGetSet'M:FSComp.SR.parsTypeAnnotationsOnGetSet$parsGetterMustHaveAtLeastOneArgument0M:FSComp.SR.parsGetterMustHaveAtLeastOneArgument$parsMultipleAccessibilitiesForGetSet0M:FSComp.SR.parsMultipleAccessibilitiesForGetSet parsSetSyntaxM:FSComp.SR.parsSetSyntax/parsInterfacesHaveSameVisibilityAsEnclosingType;M:FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType'parsAccessibilityModsIllegalForAbstract3M:FSComp.SR.parsAccessibilityModsIllegalForAbstractparsAttributesIllegalOnInherit*M:FSComp.SR.parsAttributesIllegalOnInheritparsVisibilityIllegalOnInherit*M:FSComp.SR.parsVisibilityIllegalOnInherit+parsInheritDeclarationsCannotHaveAsBindings7M:FSComp.SR.parsInheritDeclarationsCannotHaveAsBindingsparsAttributesIllegalHere%M:FSComp.SR.parsAttributesIllegalHere5parsTypeAbbreviationsCannotHaveVisibilityDeclarationsAM:FSComp.SR.parsTypeAbbreviationsCannotHaveVisibilityDeclarations-parsEnumTypesCannotHaveVisibilityDeclarations9M:FSComp.SR.parsEnumTypesCannotHaveVisibilityDeclarationsparsAllEnumFieldsRequireValues*M:FSComp.SR.parsAllEnumFieldsRequireValues2parsInlineAssemblyCannotHaveVisibilityDeclarations>M:FSComp.SR.parsInlineAssemblyCannotHaveVisibilityDeclarationsparsUnexpectedIdentifier3M:FSComp.SR.parsUnexpectedIdentifier(System.String).parsUnionCasesCannotHaveVisibilityDeclarations:M:FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations.parsEnumFieldsCannotHaveVisibilityDeclarations:M:FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations#parsConsiderUsingSeparateRecordType/M:FSComp.SR.parsConsiderUsingSeparateRecordType0parsRecordFieldsCannotHaveVisibilityDeclarationsM:FSComp.SR.tcInvalidOperatorDefinitionEquality(System.String)tcInvalidOperatorDefinition6M:FSComp.SR.tcInvalidOperatorDefinition(System.String) tcInvalidIndexOperatorDefinition;M:FSComp.SR.tcInvalidIndexOperatorDefinition(System.String)tcExpectModuleOrNamespaceParent:M:FSComp.SR.tcExpectModuleOrNamespaceParent(System.String)!tcImplementsIComparableExplicitlyM:FSComp.SR.tcDoesNotAllowExplicitTypeArguments(System.String)tcTypeParameterArityMismatchCM:FSComp.SR.tcTypeParameterArityMismatch(System.Int32,System.Int32)tcDefaultStructConstructorCall*M:FSComp.SR.tcDefaultStructConstructorCalltcCouldNotFindIDisposable%M:FSComp.SR.tcCouldNotFindIDisposable!tcNonLiteralCannotBeUsedInPattern-M:FSComp.SR.tcNonLiteralCannotBeUsedInPatterntcFieldIsReadonlyM:FSComp.SR.tcFieldIsReadonlytcNameArgumentsMustAppearLast)M:FSComp.SR.tcNameArgumentsMustAppearLast tcFunctionRequiresExplicitLambda:M:FSComp.SR.tcFunctionRequiresExplicitLambda(System.Int32)tcTypeCannotBeEnumerated3M:FSComp.SR.tcTypeCannotBeEnumerated(System.String)tcBadReturnTypeForGetEnumerator+M:FSComp.SR.tcBadReturnTypeForGetEnumerator tcInvalidMixtureOfRecursiveForms,M:FSComp.SR.tcInvalidMixtureOfRecursiveForms%tcInvalidObjectConstructionExpression1M:FSComp.SR.tcInvalidObjectConstructionExpressiontcInvalidConstraintM:FSComp.SR.tcInvalidConstrainttcInvalidConstraintTypeSealed)M:FSComp.SR.tcInvalidConstraintTypeSealedtcInvalidEnumConstraint#M:FSComp.SR.tcInvalidEnumConstrainttcInvalidNewConstraint"M:FSComp.SR.tcInvalidNewConstrainttcInvalidPropertyType!M:FSComp.SR.tcInvalidPropertyType(tcExpectedUnitOfMeasureMarkWithAttribute4M:FSComp.SR.tcExpectedUnitOfMeasureMarkWithAttributetcExpectedTypeParameter#M:FSComp.SR.tcExpectedTypeParametertcExpectedTypeNotUnitOfMeasure*M:FSComp.SR.tcExpectedTypeNotUnitOfMeasuretcExpectedUnitOfMeasureNotType*M:FSComp.SR.tcExpectedUnitOfMeasureNotTypetcInvalidUnitsOfMeasurePrefix)M:FSComp.SR.tcInvalidUnitsOfMeasurePrefix(tcUnitsOfMeasureInvalidInTypeConstructor4M:FSComp.SR.tcUnitsOfMeasureInvalidInTypeConstructortcRequireBuilderMethod1M:FSComp.SR.tcRequireBuilderMethod(System.String)tcTypeHasNoNestedTypes"M:FSComp.SR.tcTypeHasNoNestedTypes"tcUnexpectedSymbolInTypeExpression=M:FSComp.SR.tcUnexpectedSymbolInTypeExpression(System.String)'tcTypeParameterInvalidAsTypeConstructor3M:FSComp.SR.tcTypeParameterInvalidAsTypeConstructortcIllegalSyntaxInTypeExpression+M:FSComp.SR.tcIllegalSyntaxInTypeExpression'tcAnonymousUnitsOfMeasureCannotBeNested3M:FSComp.SR.tcAnonymousUnitsOfMeasureCannotBeNested#tcAnonymousTypeInvalidInDeclaration/M:FSComp.SR.tcAnonymousTypeInvalidInDeclarationtcUnexpectedSlashInType#M:FSComp.SR.tcUnexpectedSlashInTypetcUnexpectedTypeArguments%M:FSComp.SR.tcUnexpectedTypeArgumentstcOptionalArgsOnlyOnMembers'M:FSComp.SR.tcOptionalArgsOnlyOnMemberstcNameNotBoundInPattern2M:FSComp.SR.tcNameNotBoundInPattern(System.String)*tcInvalidNonPrimitiveLiteralInPatternMatch6M:FSComp.SR.tcInvalidNonPrimitiveLiteralInPatternMatchtcInvalidTypeArgumentUsage&M:FSComp.SR.tcInvalidTypeArgumentUsage#tcRequireActivePatternWithOneResult/M:FSComp.SR.tcRequireActivePatternWithOneResult#tcInvalidArgForParameterizedPattern/M:FSComp.SR.tcInvalidArgForParameterizedPattern$tcInvalidIndexIntoActivePatternArray0M:FSComp.SR.tcInvalidIndexIntoActivePatternArraytcUnionCaseDoesNotTakeArguments+M:FSComp.SR.tcUnionCaseDoesNotTakeArgumentstcUnionCaseRequiresOneArgument*M:FSComp.SR.tcUnionCaseRequiresOneArgument!tcUnionCaseExpectsTupledArguments;M:FSComp.SR.tcUnionCaseExpectsTupledArguments(System.Int32)tcFieldIsNotStatic-M:FSComp.SR.tcFieldIsNotStatic(System.String)&tcFieldNotLiteralCannotBeUsedInPattern2M:FSComp.SR.tcFieldNotLiteralCannotBeUsedInPatterntcRequireVarConstRecogOrLiteral+M:FSComp.SR.tcRequireVarConstRecogOrLiteraltcInvalidPatternM:FSComp.SR.tcInvalidPatterntcUseWhenPatternGuard!M:FSComp.SR.tcUseWhenPatternGuardtcIllegalPatternM:FSComp.SR.tcIllegalPatterntcSyntaxErrorUnexpectedQMark(M:FSComp.SR.tcSyntaxErrorUnexpectedQMarktcExpressionCountMisMatch@M:FSComp.SR.tcExpressionCountMisMatch(System.Int32,System.Int32)tcExprUndelayedM:FSComp.SR.tcExprUndelayedtcExpressionRequiresSequence(M:FSComp.SR.tcExpressionRequiresSequence#tcInvalidObjectExpressionSyntaxForm/M:FSComp.SR.tcInvalidObjectExpressionSyntaxForm)tcInvalidObjectSequenceOrRecordExpression5M:FSComp.SR.tcInvalidObjectSequenceOrRecordExpression%tcInvalidSequenceExpressionSyntaxForm1M:FSComp.SR.tcInvalidSequenceExpressionSyntaxForm%tcExpressionWithIfRequiresParenthesis1M:FSComp.SR.tcExpressionWithIfRequiresParenthesistcUnableToParseFormatString6M:FSComp.SR.tcUnableToParseFormatString(System.String)tcListLiteralMaxSize M:FSComp.SR.tcListLiteralMaxSize)tcExpressionFormRequiresObjectConstructor5M:FSComp.SR.tcExpressionFormRequiresObjectConstructor*tcNamedArgumentsCannotBeUsedInMemberTraits6M:FSComp.SR.tcNamedArgumentsCannotBeUsedInMemberTraitstcNotValidEnumCaseName"M:FSComp.SR.tcNotValidEnumCaseNametcFieldIsNotMutableM:FSComp.SR.tcFieldIsNotMutable&tcConstructRequiresListArrayOrSequence2M:FSComp.SR.tcConstructRequiresListArrayOrSequence)tcConstructRequiresComputationExpressions5M:FSComp.SR.tcConstructRequiresComputationExpressions)tcConstructRequiresSequenceOrComputations5M:FSComp.SR.tcConstructRequiresSequenceOrComputations(tcConstructRequiresComputationExpression4M:FSComp.SR.tcConstructRequiresComputationExpressiontcInvalidIndexerExpression&M:FSComp.SR.tcInvalidIndexerExpression4tcObjectOfIndeterminateTypeUsedRequireTypeConstraint@M:FSComp.SR.tcObjectOfIndeterminateTypeUsedRequireTypeConstrainttcCannotInheritFromVariableType+M:FSComp.SR.tcCannotInheritFromVariableType7tcObjectConstructorsOnTypeParametersCannotTakeArgumentsCM:FSComp.SR.tcObjectConstructorsOnTypeParametersCannotTakeArgumentstcCompiledNameAttributeMisused*M:FSComp.SR.tcCompiledNameAttributeMisusedtcNamedTypeRequired.M:FSComp.SR.tcNamedTypeRequired(System.String)$tcInheritCannotBeUsedOnInterfaceType0M:FSComp.SR.tcInheritCannotBeUsedOnInterfaceType tcNewCannotBeUsedOnInterfaceType,M:FSComp.SR.tcNewCannotBeUsedOnInterfaceType"tcAbstractTypeCannotBeInstantiated.M:FSComp.SR.tcAbstractTypeCannotBeInstantiatedtcIDisposableTypeShouldUseNew)M:FSComp.SR.tcIDisposableTypeShouldUseNew(tcSyntaxCanOnlyBeUsedToCreateObjectTypesCM:FSComp.SR.tcSyntaxCanOnlyBeUsedToCreateObjectTypes(System.String)tcConstructorRequiresCall4M:FSComp.SR.tcConstructorRequiresCall(System.String)tcUndefinedField9M:FSComp.SR.tcUndefinedField(System.String,System.String)tcFieldRequiresAssignmentBM:FSComp.SR.tcFieldRequiresAssignment(System.String,System.String)tcExtraneousFieldsGivenValues)M:FSComp.SR.tcExtraneousFieldsGivenValues3tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual?M:FSComp.SR.tcObjectExpressionsCanOnlyOverrideAbstractOrVirtual tcNoAbstractOrVirtualMemberFound;M:FSComp.SR.tcNoAbstractOrVirtualMemberFound(System.String)tcArgumentArityMismatch?M:FSComp.SR.tcArgumentArityMismatch(System.String,System.Int32)"tcArgumentArityMismatchOneOverloadJM:FSComp.SR.tcArgumentArityMismatchOneOverload(System.String,System.Int32)tcSimpleMethodNameRequired&M:FSComp.SR.tcSimpleMethodNameRequired'tcPredefinedTypeCannotBeUsedAsSuperType3M:FSComp.SR.tcPredefinedTypeCannotBeUsedAsSuperTypetcNewMustBeUsedWithNamedType(M:FSComp.SR.tcNewMustBeUsedWithNamedType#tcCannotCreateExtensionOfSealedType/M:FSComp.SR.tcCannotCreateExtensionOfSealedTypetcNoArgumentsForRecordValue'M:FSComp.SR.tcNoArgumentsForRecordValue4tcNoInterfaceImplementationForConstructionExpression@M:FSComp.SR.tcNoInterfaceImplementationForConstructionExpression-tcObjectConstructionCanOnlyBeUsedInClassTypes9M:FSComp.SR.tcObjectConstructionCanOnlyBeUsedInClassTypes6tcOnlySimpleBindingsCanBeUsedInConstructionExpressionsBM:FSComp.SR.tcOnlySimpleBindingsCanBeUsedInConstructionExpressions.tcObjectsMustBeInitializedWithObjectExpression:M:FSComp.SR.tcObjectsMustBeInitializedWithObjectExpressiontcExpectedInterfaceType#M:FSComp.SR.tcExpectedInterfaceType,tcConstructorForInterfacesDoNotTakeArguments8M:FSComp.SR.tcConstructorForInterfacesDoNotTakeArgumentstcConstructorRequiresArguments*M:FSComp.SR.tcConstructorRequiresArgumentstcNewRequiresObjectConstructor*M:FSComp.SR.tcNewRequiresObjectConstructortcAtLeastOneOverrideIsInvalid)M:FSComp.SR.tcAtLeastOneOverrideIsInvalidtcNumericLiteralRequiresModule9M:FSComp.SR.tcNumericLiteralRequiresModule(System.String)tcInvalidRecordConstruction'M:FSComp.SR.tcInvalidRecordConstruction#tcExpressionFormRequiresRecordTypes/M:FSComp.SR.tcExpressionFormRequiresRecordTypes#tcInheritedTypeIsNotObjectModelType/M:FSComp.SR.tcInheritedTypeIsNotObjectModelTypeLtcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypesXM:FSComp.SR.tcObjectConstructionExpressionCanOnlyImplementConstructorsInObjectModelTypestcEmptyRecordInvalid M:FSComp.SR.tcEmptyRecordInvalid%tcTypeIsNotARecordTypeNeedConstructor1M:FSComp.SR.tcTypeIsNotARecordTypeNeedConstructortcTypeIsNotARecordType"M:FSComp.SR.tcTypeIsNotARecordType-tcConstructIsAmbiguousInComputationExpression9M:FSComp.SR.tcConstructIsAmbiguousInComputationExpression*tcConstructIsAmbiguousInSequenceExpression6M:FSComp.SR.tcConstructIsAmbiguousInSequenceExpression#tcDoBangIllegalInSequenceExpression/M:FSComp.SR.tcDoBangIllegalInSequenceExpressiontcUseForInSequenceExpression(M:FSComp.SR.tcUseForInSequenceExpression tcTryIllegalInSequenceExpression,M:FSComp.SR.tcTryIllegalInSequenceExpression tcUseYieldBangForMultipleResults,M:FSComp.SR.tcUseYieldBangForMultipleResultstcInvalidAssignmentM:FSComp.SR.tcInvalidAssignmenttcInvalidUseOfTypeName"M:FSComp.SR.tcInvalidUseOfTypeName tcTypeHasNoAccessibleConstructor,M:FSComp.SR.tcTypeHasNoAccessibleConstructor#tcInvalidUseOfTypeNameOrConstructor/M:FSComp.SR.tcInvalidUseOfTypeNameOrConstructor0tcInvalidUseOfTypeNameOrConstructorWithOverloadsKM:FSComp.SR.tcInvalidUseOfTypeNameOrConstructorWithOverloads(System.String)tcInvalidUseOfInterfaceType'M:FSComp.SR.tcInvalidUseOfInterfaceTypetcInvalidUseOfDelegate"M:FSComp.SR.tcInvalidUseOfDelegatetcPropertyIsNotStatic0M:FSComp.SR.tcPropertyIsNotStatic(System.String)tcPropertyIsNotReadable2M:FSComp.SR.tcPropertyIsNotReadable(System.String)tcLookupMayNotBeUsedHere$M:FSComp.SR.tcLookupMayNotBeUsedHeretcPropertyIsStatic-M:FSComp.SR.tcPropertyIsStatic(System.String)tcPropertyCannotBeSet11M:FSComp.SR.tcPropertyCannotBeSet1(System.String)&tcConstructorsCannotBeFirstClassValues2M:FSComp.SR.tcConstructorsCannotBeFirstClassValues7tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFieldsCM:FSComp.SR.tcSyntaxFormUsedOnlyWithRecordLabelsPropertiesAndFieldstcEventIsStatic*M:FSComp.SR.tcEventIsStatic(System.String)tcEventIsNotStatic-M:FSComp.SR.tcEventIsNotStatic(System.String)tcNamedArgumentDidNotMatch5M:FSComp.SR.tcNamedArgumentDidNotMatch(System.String)%tcOverloadsCannotHaveCurriedArguments1M:FSComp.SR.tcOverloadsCannotHaveCurriedArguments!tcUnnamedArgumentsDoNotFormPrefix-M:FSComp.SR.tcUnnamedArgumentsDoNotFormPrefix4tcStaticOptimizationConditionalsOnlyForFSharpLibrary@M:FSComp.SR.tcStaticOptimizationConditionalsOnlyForFSharpLibrarytcFormalArgumentIsNotOptional)M:FSComp.SR.tcFormalArgumentIsNotOptional,tcInvalidOptionalAssignmentToPropertyOrField8M:FSComp.SR.tcInvalidOptionalAssignmentToPropertyOrField!tcDelegateConstructorMustBePassed-M:FSComp.SR.tcDelegateConstructorMustBePassedtcBindingCannotBeUseAndRec&M:FSComp.SR.tcBindingCannotBeUseAndRec tcVolatileOnlyOnClassLetBindings,M:FSComp.SR.tcVolatileOnlyOnClassLetBindings(tcAttributesAreNotPermittedOnLetBindings4M:FSComp.SR.tcAttributesAreNotPermittedOnLetBindings"tcDefaultValueAttributeRequiresVal.M:FSComp.SR.tcDefaultValueAttributeRequiresVal%tcConditionalAttributeRequiresMembers1M:FSComp.SR.tcConditionalAttributeRequiresMemberstcInvalidActivePatternName&M:FSComp.SR.tcInvalidActivePatternName-tcEntryPointAttributeRequiresFunctionInModule9M:FSComp.SR.tcEntryPointAttributeRequiresFunctionInModuletcMutableValuesCannotBeInline)M:FSComp.SR.tcMutableValuesCannotBeInline*tcMutableValuesMayNotHaveGenericParameters6M:FSComp.SR.tcMutableValuesMayNotHaveGenericParameterstcMutableValuesSyntax!M:FSComp.SR.tcMutableValuesSyntaxtcOnlyFunctionsCanBeInline&M:FSComp.SR.tcOnlyFunctionsCanBeInlinetcIllegalAttributesForLiteral)M:FSComp.SR.tcIllegalAttributesForLiteraltcLiteralCannotBeMutable$M:FSComp.SR.tcLiteralCannotBeMutabletcLiteralCannotBeInline#M:FSComp.SR.tcLiteralCannotBeInline$tcLiteralCannotHaveGenericParameters0M:FSComp.SR.tcLiteralCannotHaveGenericParameterstcInvalidConstantExpression'M:FSComp.SR.tcInvalidConstantExpressiontcTypeIsInaccessible M:FSComp.SR.tcTypeIsInaccessible'tcUnexpectedConditionInImportedAssembly3M:FSComp.SR.tcUnexpectedConditionInImportedAssemblytcUnrecognizedAttributeTarget)M:FSComp.SR.tcUnrecognizedAttributeTarget,tcAttributeIsNotValidForLanguageElementUseDo8M:FSComp.SR.tcAttributeIsNotValidForLanguageElementUseDo'tcAttributeIsNotValidForLanguageElement3M:FSComp.SR.tcAttributeIsNotValidForLanguageElement0tcOptionalArgumentsCannotBeUsedInCustomAttributeM:FSComp.SR.tcExceptionAbbreviationsMustReferToValidExceptionsCtcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructorOM:FSComp.SR.tcAbbreviationsFordotNetExceptionsMustHaveMatchingObjectConstructortcNotAnExceptionM:FSComp.SR.tcNotAnExceptiontcInvalidModuleNameM:FSComp.SR.tcInvalidModuleNametcInvalidTypeExtension"M:FSComp.SR.tcInvalidTypeExtension-tcAttributesOfTypeSpecifyMultipleKindsForType9M:FSComp.SR.tcAttributesOfTypeSpecifyMultipleKindsForType+tcKindOfTypeSpecifiedDoesNotMatchDefinition7M:FSComp.SR.tcKindOfTypeSpecifiedDoesNotMatchDefinition,tcMeasureDefinitionsCannotHaveTypeParameters8M:FSComp.SR.tcMeasureDefinitionsCannotHaveTypeParameterstcTypeRequiresDefinition$M:FSComp.SR.tcTypeRequiresDefinition0tcTypeAbbreviationHasTypeParametersMissingOnTypeM:FSComp.SR.tcInheritConstructionCallNotPartOfImplicitSequence.tcLetAndDoRequiresImplicitConstructionSequence:M:FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence*tcTypeAbbreviationsCannotHaveAugmentations6M:FSComp.SR.tcTypeAbbreviationsCannotHaveAugmentations tcModuleAbbreviationForNamespace;M:FSComp.SR.tcModuleAbbreviationForNamespace(System.String)tcTypeUsedInInvalidWayMM:FSComp.SR.tcTypeUsedInInvalidWay(System.String,System.String,System.String)tcMemberUsedInInvalidWayOM:FSComp.SR.tcMemberUsedInInvalidWay(System.String,System.String,System.String)tcAttributeAutoOpenWasIgnoredFM:FSComp.SR.tcAttributeAutoOpenWasIgnored(System.String,System.String)ilUndefinedValue+M:FSComp.SR.ilUndefinedValue(System.String)ilLabelNotFound*M:FSComp.SR.ilLabelNotFound(System.String) ilIncorrectNumberOfTypeArguments,M:FSComp.SR.ilIncorrectNumberOfTypeArgumentsilDynamicInvocationNotSupported:M:FSComp.SR.ilDynamicInvocationNotSupported(System.String) ilAddressOfLiteralFieldIsInvalid,M:FSComp.SR.ilAddressOfLiteralFieldIsInvalidilAddressOfValueHereIsInvalid8M:FSComp.SR.ilAddressOfValueHereIsInvalid(System.String)+ilValuesWithLiteralAttributeCannotBeMutable7M:FSComp.SR.ilValuesWithLiteralAttributeCannotBeMutable(ilValuesWithLiteralAttributeMustBeSimple4M:FSComp.SR.ilValuesWithLiteralAttributeMustBeSimple'ilCustomMarshallersCannotBeUsedInFSharp3M:FSComp.SR.ilCustomMarshallersCannotBeUsedInFSharp#ilMarshalAsAttributeCannotBeDecoded/M:FSComp.SR.ilMarshalAsAttributeCannotBeDecoded4ilSignatureForExternalFunctionContainsTypeParameters@M:FSComp.SR.ilSignatureForExternalFunctionContainsTypeParameters%ilDllImportAttributeCouldNotBeDecoded1M:FSComp.SR.ilDllImportAttributeCouldNotBeDecodedilLiteralFieldsCannotBeSet&M:FSComp.SR.ilLiteralFieldsCannotBeSetilStaticMethodIsNotLambda4M:FSComp.SR.ilStaticMethodIsNotLambda(System.String)$ilMutableVariablesCannotEscapeMethod0M:FSComp.SR.ilMutableVariablesCannotEscapeMethodilUnexpectedUnrealizedValue'M:FSComp.SR.ilUnexpectedUnrealizedValueilMainModuleEmptyM:FSComp.SR.ilMainModuleEmpty!ilTypeCannotBeUsedForLiteralField-M:FSComp.SR.ilTypeCannotBeUsedForLiteralFieldilUnexpectedGetSetAnnotation(M:FSComp.SR.ilUnexpectedGetSetAnnotation'ilFieldOffsetAttributeCouldNotBeDecoded3M:FSComp.SR.ilFieldOffsetAttributeCouldNotBeDecoded(ilStructLayoutAttributeCouldNotBeDecoded4M:FSComp.SR.ilStructLayoutAttributeCouldNotBeDecoded/ilDefaultAugmentationAttributeCouldNotBeDecoded;M:FSComp.SR.ilDefaultAugmentationAttributeCouldNotBeDecoded,ilReflectedDefinitionsCannotUseSliceOperator8M:FSComp.SR.ilReflectedDefinitionsCannotUseSliceOperatoroptsProblemWithCodepage?M:FSComp.SR.optsProblemWithCodepage(System.Int32,System.String) optsCopyrightM:FSComp.SR.optsCopyrightoptsNameOfOutputFile M:FSComp.SR.optsNameOfOutputFileoptsBuildConsoleM:FSComp.SR.optsBuildConsoleoptsBuildWindowsM:FSComp.SR.optsBuildWindowsoptsBuildLibraryM:FSComp.SR.optsBuildLibraryoptsBuildModuleM:FSComp.SR.optsBuildModule optsDelaySignM:FSComp.SR.optsDelaySign optsWriteXmlM:FSComp.SR.optsWriteXmloptsStrongKeyFileM:FSComp.SR.optsStrongKeyFileoptsStrongKeyContainer"M:FSComp.SR.optsStrongKeyContainer optsPlatformM:FSComp.SR.optsPlatform optsNoOptM:FSComp.SR.optsNoOptoptsNoInterfaceM:FSComp.SR.optsNoInterfaceoptsSigM:FSComp.SR.optsSig optsReferenceM:FSComp.SR.optsReference optsWin32resM:FSComp.SR.optsWin32resoptsWin32manifestM:FSComp.SR.optsWin32manifestoptsNowin32manifestM:FSComp.SR.optsNowin32manifest optsResourceM:FSComp.SR.optsResourceoptsLinkresourceM:FSComp.SR.optsLinkresource optsDebugPMM:FSComp.SR.optsDebugPM optsDebugM:FSComp.SR.optsDebug optsOptimizeM:FSComp.SR.optsOptimize optsTailcallsM:FSComp.SR.optsTailcallsoptsCrossoptimizeM:FSComp.SR.optsCrossoptimizeoptsWarnaserrorPMM:FSComp.SR.optsWarnaserrorPMoptsWarnaserrorM:FSComp.SR.optsWarnaserroroptsWarnM:FSComp.SR.optsWarn optsNowarnM:FSComp.SR.optsNowarn optsWarnOnM:FSComp.SR.optsWarnOn optsCheckedM:FSComp.SR.optsChecked optsDefineM:FSComp.SR.optsDefineoptsMlcompatibilityM:FSComp.SR.optsMlcompatibility optsNologoM:FSComp.SR.optsNologooptsHelpM:FSComp.SR.optsHelp optsCodepageM:FSComp.SR.optsCodepageoptsUtf8outputM:FSComp.SR.optsUtf8output optsFullpathsM:FSComp.SR.optsFullpathsoptsLibM:FSComp.SR.optsLiboptsBaseaddressM:FSComp.SR.optsBaseaddressoptsNoframeworkM:FSComp.SR.optsNoframeworkoptsStandaloneM:FSComp.SR.optsStandaloneoptsStaticlinkM:FSComp.SR.optsStaticlink optsResidentM:FSComp.SR.optsResidentoptsPdbM:FSComp.SR.optsPdboptsSimpleresolution M:FSComp.SR.optsSimpleresolutionoptsUnrecognizedTarget1M:FSComp.SR.optsUnrecognizedTarget(System.String)optsUnrecognizedDebugType4M:FSComp.SR.optsUnrecognizedDebugType(System.String)optsInvalidWarningLevel1M:FSComp.SR.optsInvalidWarningLevel(System.Int32)optsShortFormOf*M:FSComp.SR.optsShortFormOf(System.String)optsClirootDeprecatedMsg$M:FSComp.SR.optsClirootDeprecatedMsgoptsClirootDescription"M:FSComp.SR.optsClirootDescriptionoptsHelpBannerOutputFiles%M:FSComp.SR.optsHelpBannerOutputFilesoptsHelpBannerInputFiles$M:FSComp.SR.optsHelpBannerInputFilesoptsHelpBannerResources#M:FSComp.SR.optsHelpBannerResourcesoptsHelpBannerCodeGen!M:FSComp.SR.optsHelpBannerCodeGenoptsHelpBannerAdvanced"M:FSComp.SR.optsHelpBannerAdvancedoptsHelpBannerMiscM:FSComp.SR.optsHelpBannerMiscoptsHelpBannerLanguage"M:FSComp.SR.optsHelpBannerLanguageoptsHelpBannerErrsAndWarns&M:FSComp.SR.optsHelpBannerErrsAndWarns"optsUnknownArgumentToTheTestSwitch=M:FSComp.SR.optsUnknownArgumentToTheTestSwitch(System.String)optsUnknownPlatform.M:FSComp.SR.optsUnknownPlatform(System.String)optsInternalNoDescription4M:FSComp.SR.optsInternalNoDescription(System.String)optsDCLONoDescription0M:FSComp.SR.optsDCLONoDescription(System.String)$optsDCLODeprecatedSuggestAlternativeMM:FSComp.SR.optsDCLODeprecatedSuggestAlternative(System.String,System.String)optsDCLOHtmlDoc*M:FSComp.SR.optsDCLOHtmlDoc(System.String)optsConsoleColorsM:FSComp.SR.optsConsoleColorsoptsUseHighEntropyVA M:FSComp.SR.optsUseHighEntropyVAoptsSubSystemVersion M:FSComp.SR.optsSubSystemVersionoptsInvalidSubSystemVersion6M:FSComp.SR.optsInvalidSubSystemVersion(System.String)typeInfoFullNameM:FSComp.SR.typeInfoFullName typeInfoTypeM:FSComp.SR.typeInfoTypetypeInfoInheritsM:FSComp.SR.typeInfoInheritstypeInfoImplementsM:FSComp.SR.typeInfoImplementstypeInfoOtherOverloads0M:FSComp.SR.typeInfoOtherOverloads(System.Int32)typeInfoUnionCaseM:FSComp.SR.typeInfoUnionCasetypeInfoActivePatternResult'M:FSComp.SR.typeInfoActivePatternResulttypeInfoActiveRecognizer$M:FSComp.SR.typeInfoActiveRecognizer typeInfoFieldM:FSComp.SR.typeInfoField typeInfoEventM:FSComp.SR.typeInfoEventtypeInfoPropertyM:FSComp.SR.typeInfoPropertytypeInfoCustomOperation#M:FSComp.SR.typeInfoCustomOperationtypeInfoArgumentM:FSComp.SR.typeInfoArgumenttypeInfoPatternVariable#M:FSComp.SR.typeInfoPatternVariabletypeInfoNamespaceM:FSComp.SR.typeInfoNamespacetypeInfoModuleM:FSComp.SR.typeInfoModuletypeInfoNamespaceOrModule%M:FSComp.SR.typeInfoNamespaceOrModuletypeInfoFromFirst,M:FSComp.SR.typeInfoFromFirst(System.String)typeInfoFromNext+M:FSComp.SR.typeInfoFromNext(System.String)typeInfoGeneratedProperty%M:FSComp.SR.typeInfoGeneratedPropertytypeInfoGeneratedType!M:FSComp.SR.typeInfoGeneratedType+assemblyResolutionFoundByAssemblyFoldersKey7M:FSComp.SR.assemblyResolutionFoundByAssemblyFoldersKey-assemblyResolutionFoundByAssemblyFoldersExKey9M:FSComp.SR.assemblyResolutionFoundByAssemblyFoldersExKeyassemblyResolutionNetFramework*M:FSComp.SR.assemblyResolutionNetFrameworkassemblyResolutionGAC!M:FSComp.SR.assemblyResolutionGACrecursiveClassHierarchy2M:FSComp.SR.recursiveClassHierarchy(System.String)'InvalidRecursiveReferenceToAbstractSlot3M:FSComp.SR.InvalidRecursiveReferenceToAbstractSloteventHasNonStandardTypeNM:FSComp.SR.eventHasNonStandardType(System.String,System.String,System.String)typeIsNotAccessible.M:FSComp.SR.typeIsNotAccessible(System.String)unionCasesAreNotAccessible5M:FSComp.SR.unionCasesAreNotAccessible(System.String)valueIsNotAccessible/M:FSComp.SR.valueIsNotAccessible(System.String)unionCaseIsNotAccessible3M:FSComp.SR.unionCaseIsNotAccessible(System.String)fieldIsNotAccessible/M:FSComp.SR.fieldIsNotAccessible(System.String)!structOrClassFieldIsNotAccessibleM:FSComp.SR.tcCustomOperationMayNotBeOverloaded(System.String)+tcTryFinallyMayNotBeUsedWithCustomOperators7M:FSComp.SR.tcTryFinallyMayNotBeUsedWithCustomOperators(tcTryWithMayNotBeUsedWithCustomOperators4M:FSComp.SR.tcTryWithMayNotBeUsedWithCustomOperators+tcIfThenElseMayNotBeUsedWithCustomOperators7M:FSComp.SR.tcIfThenElseMayNotBeUsedWithCustomOperators5ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegenAM:FSComp.SR.ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen&etProvidedTypeReferenceMissingArgumentAM:FSComp.SR.etProvidedTypeReferenceMissingArgument(System.String)"etProvidedTypeReferenceInvalidText=M:FSComp.SR.etProvidedTypeReferenceInvalidText(System.String)!tcCustomOperationNotUsedCorrectlyM:FSComp.SR.tcAutoPropertyRequiresImplicitConstructionSequence'parsMutableOnAutoPropertyShouldBeGetSet3M:FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet1parsMutableOnAutoPropertyShouldBeGetSetNotJustSet=M:FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSetchkNoByrefsOfByrefs.M:FSComp.SR.chkNoByrefsOfByrefs(System.String)etTypeProviderNotApproved4M:FSComp.SR.etTypeProviderNotApproved(System.String)tastopsMaxArrayFourM:FSComp.SR.tastopsMaxArrayFourtcNoIntegerForLoopInQuery%M:FSComp.SR.tcNoIntegerForLoopInQuerytcNoWhileInQueryM:FSComp.SR.tcNoWhileInQuerytcNoTryFinallyInQuery!M:FSComp.SR.tcNoTryFinallyInQuerytcUseMayNotBeUsedInQueries&M:FSComp.SR.tcUseMayNotBeUsedInQueriestcBindMayNotBeUsedInQueries'M:FSComp.SR.tcBindMayNotBeUsedInQueriestcReturnMayNotBeUsedInQueries)M:FSComp.SR.tcReturnMayNotBeUsedInQueriestcUnrecognizedQueryOperator'M:FSComp.SR.tcUnrecognizedQueryOperatortcTryWithMayNotBeUsedInQueries*M:FSComp.SR.tcTryWithMayNotBeUsedInQueriestcNonSimpleLetBindingInQuery(M:FSComp.SR.tcNonSimpleLetBindingInQueryetTooManyStaticParametersMM:FSComp.SR.etTooManyStaticParameters(System.Int32,System.Int32,System.Int32) infosInvalidProvidedLiteralValue;M:FSComp.SR.infosInvalidProvidedLiteralValue(System.String)invalidPlatformTarget!M:FSComp.SR.invalidPlatformTargettcThisValueMayNotBeInlined&M:FSComp.SR.tcThisValueMayNotBeInlinedetErasedTypeUsedInGenerationEM:FSComp.SR.etErasedTypeUsedInGeneration(System.String,System.String)!tcUnrecognizedQueryBinaryOperator-M:FSComp.SR.tcUnrecognizedQueryBinaryOperator$invalidPlatformTargetForOldFramework0M:FSComp.SR.invalidPlatformTargetForOldFrameworkcrefNoSetOfHoleM:FSComp.SR.crefNoSetOfHolenicePrintOtherOverloads1$M:FSComp.SR.nicePrintOtherOverloads1nicePrintOtherOverloadsN2M:FSComp.SR.nicePrintOtherOverloadsN(System.Int32)erasedToM:FSComp.SR.erasedToparsUnfinishedExpression3M:FSComp.SR.parsUnfinishedExpression(System.String)#crefQuotationsCantContainByrefTypes/M:FSComp.SR.crefQuotationsCantContainByrefTypesparsAttributeOnIncompleteCode)M:FSComp.SR.parsAttributeOnIncompleteCodeparsTypeNameCannotBeEmpty%M:FSComp.SR.parsTypeNameCannotBeEmptybuildProblemReadingAssemblyDM:FSComp.SR.buildProblemReadingAssembly(System.String,System.String)tcTPFieldMustBeLiteral"M:FSComp.SR.tcTPFieldMustBeLiteralloadingDescriptionM:FSComp.SR.loadingDescriptiondescriptionUnavailable"M:FSComp.SR.descriptionUnavailable chkTyparMultipleClassConstraints,M:FSComp.SR.chkTyparMultipleClassConstraintstcMatchMayNotBeUsedWithQuery(M:FSComp.SR.tcMatchMayNotBeUsedWithQuery-memberOperatorDefinitionWithNonTripleArgumentUM:FSComp.SR.memberOperatorDefinitionWithNonTripleArgument(System.String,System.Int32)cannotResolveNullableOperators9M:FSComp.SR.cannotResolveNullableOperators(System.String)tcOperatorRequiresIn=M:FSComp.SR.tcOperatorRequiresIn(System.String,System.String)*parsIllegalMemberVarInObjectImplementation6M:FSComp.SR.parsIllegalMemberVarInObjectImplementation!tcEmptyCopyAndUpdateRecordInvalid-M:FSComp.SR.tcEmptyCopyAndUpdateRecordInvalidparsUnderscoreInvalidFieldName*M:FSComp.SR.parsUnderscoreInvalidFieldName)tcGeneratedTypesShouldBeInternalOrPrivate5M:FSComp.SR.tcGeneratedTypesShouldBeInternalOrPrivate&chkGetterAndSetterHaveSamePropertyType]M:FSComp.SR.chkGetterAndSetterHaveSamePropertyType(System.String,System.String,System.String)-tcRuntimeSuppliedMethodCannotBeUsedInUserCodeHM:FSComp.SR.tcRuntimeSuppliedMethodCannotBeUsedInUserCode(System.String)RunStartupValidation M:FSComp.SR.RunStartupValidationmkFunctionValueimpl isNamedTypeisFunctionTypebuildFunctionForOneArgPatcapture1fmtgopostProcessStringcreateMessageString messageString GetStringFunc messageIDResourceManager resourcesfunTyCswallowResourceTextinit@14M/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler„ oot}}€}?}G}H}J}K}M}N}NQ}€µ}€·}«}}€¼}®}°}€¾}€¿}€Â}ç}€Ý}€Ä}€É}€Ò}÷3‚‚‚‚‚!‚‚%‚‚+‚‚M‚‚N‚‚O‚‚P‚‚Q‚‚,‚‚R‚‚S‚‚T‚‚U‚‚V‚‚X‚‚-‚‚Y‚‚Z‚‚.‚‚[‚‚\‚‚]‚‚^‚‚_‚‚`‚‚a‚‚b‚‚c‚‚d‚‚e‚‚/‚‚0‚‚1‚‚2‚‚3‚‚4‚‚5‚‚6‚‚7‚‚8‚‚9‚‚:‚‚f‚‚;‚‚<‚g  ‚n ‚† ‚Á ‚ã $ ‚ç ‚ò ‚õ ‚ö ‚ø ‚ù ¤ ƒÂ …< › ƒŽ ƒI ƒ^ U …B …C  …f …f…i ƒÀ P ƒÐ …z ƒû „ …€…€…‰\€…‚C€…‚者…°€……´€……µ€……¶€…„*€……·€…Ž€……Û€……߀……÷€…‰Š€…‰‹€…† €…‚€…†€…ƒÚ€…†‘€…„倅†=€…Œ€…… €…†ä€…†›€…€€…†è€…††€…I€…L€…p€…V€…–€… €…‡/€…ƒ”€…‡S€…€›€…ƒ €…ƒ €…‡k€…†€…‡"€…€ª€…‡Ñ€…z€…‡Ö€…†€…‡Ú€…•€…A€…€º€…*€…‚Ç€…‚W€…€†€…€¢€…€¡€…‚s€…ˆH€…‹€…ˆg€…‚€…‹ €…‹ €…^€…‹€…_€……€……€…‚?€…‚‹€…ƒ¯€…„±€…‚ˆ€…‚ƒ€…‚›€…„ö€…€©€…ƒH€…‹I€…€ €…‚€…‚¾€…‹O€…‚„€…€¦€…‹c€…„^€…‹¯€…‚©€…‚¬€…†€…† €…-€…„ò€…‚¡€…ƒÍ€…ˆ‰€…ˆ‹€…ƒ²€…‹æ€…‚(€……”€…ƒ[€…ƒR€…ƒU€…‹ô€…‹ö€…ƒX€…‹Z€…ƒ©€…†!€…Œ€…Œ€…‰7€…‰8€…‰9GŒ"Œ,Œ,Œ‡Œ,Œ¤Œ,ŒÒŒ,Œ9Œ,ŒÚŒ,Œ5Œ,ŒUŒ,ŒáŒ,Œ¹Œ,Œ»Œ,ŒRŒ,ŒòŒ, Œ, Œ,ŒÅŒ,Œ,Œ,Œ¦Œ, Œ, %Œ, .Œ, Œ,&Œ,„øŒ,Œ:Œ,Œ.Œ,ŒVŒ,FŒ,Œ˜Œ,ŒžŒ,IŒ,Œ;Œ,ŒEŒ,Œ0Œ,Œ2Œ,Œ¾Œ,Œ¿Œ,SŒ,^Œ,ŒaŒ,ŒWŒ,Œ¥Œ,žŒ,ŒNŒ,Œ3Œ,§Œ,Œ=Œ,Œ²Œ,Œ´Œ,ŒŠŒ,¸Œ,ŒFŒ,ŒˆŒ,Œ,Œ§Œ,ÊŒ,ŒÃŒ,ŒTŒ,êŒ,êŽ#Œ,êñŒ,êðŽ-&&Ž7&ŒÖ&'&Žn&&ŽsŽsŽwŽsŽyŽsŽzŽsŽ{‹f‹fŽ…‹fŽ‹fŽ‚‹f‹g‹fŽŽ‹fއ‹fŽˆ‹fމ‹fŽ~‹f޳‹fŽ”‹fް„ø„ø†„ø„ù„ø $9>TTWTYTgT[T]T^˜¯°’’˜’˜’›’˜’À’˜’¢’˜’ ’Â’Â’ö’“ ’“I’“ˆ’“Œ’“™’“¶’“¹‚‚“Âꂓ‚“É‚“Ê‚“Ö‚“Ù‚“Û‚“à‚“æ‚“ã‚‚‚“ò‚“ó‚“õ‚“ö‚“÷‚”9‚””=”=”?”=”@”=‡4”=”A”=”B”=”P”=”N”v”v”††X†X”ΆX”؆X‹†X‹!†X‹$†X”ã†X”ç†X”è†X”ë†X”ï†X”û†X”ü†X•†X• †X•†X•†X•$†X•(†X”¾†X”¿†X‡ò†X†Y†X•0†X•0•3†X•0•5†X•F•^•^•c•^•j•^•k•^••^•‚•^•ˆ•••—••”•••••¯••µ••Õ•ï•Æ…c…c…d…c–y…c–€…c–€Ó€Ó–‘€Ó–Ä€ÓW€Ó˜L€Óä€Ó’Ü€Ó“•€Ó—€Ó€Ô€Óé€Óì€Ó” €Ó—\€Ó€ß€Ó—q€Ó—|€Ó4€Ó—¹€Ó€î€Ó˜‰€Ó—Ì€Ó—Í€Ó˜²€Ó—æ€Ó—ó€Ó€ü€Ó“ð€Ó˜€Ó˜<˜í˜í˜ï˜í˜ô˜í˜÷™'™'™*™'™-™'™0™'™E™'™M™'™9€ƒ€ƒ™]€ƒ€„™t™t™w™t™‚™t™ƒ™t™‰™t™y™²™Ð™Õ™Õ“a™Õ™Ù((š (š (š (‡4(š(ú(†(™`(–Þ()(‚(–Û(˜i(–á(˜|(š8(‚(‚(™d(™a)$$š´$šµ$š¸$š¹$Œ‘$šº$š»$š¼$š½$š¾$š¿$šÀ$šÁ$šÂ$šÃ$šÊ$šÌ$›4$%$$$šâ$›K$˜½$›]$›!€€›t€›‡€„À€€‚!!,!c!f!n!t!|!š!ž!¦!°!°½!R!Á!VÈÈÌÏÏÔÏÔÙÏÔ×’¥’¥ž’¥ž’¥ž’¥ž’¥ž’¥ó’¥ô’¥ž’¥ž’¥ž’¥ž’¥ž’¥ž’¥ž’¥ž ’¥’¦’¥õ’¥ø’¥ž"’¥û˜õ˜õž5˜õ™½˜õŸ$˜õžC˜õ™¹˜õžD˜õžE˜õžF˜õžG˜õžH˜õžI˜õžJ˜õžK˜õžL˜õžM˜õžO˜õžP˜õŸA˜õ™Â˜õžR˜õžS˜õ™·˜õ˜ö˜õº˜õ™Å˜õžÚ˜õžÝ˜õ™˜õ™˜õŸ˜õ™ŸÁ€Å€Å›‡€Å £€ÅŸ×€Å‚€€ÅŸâ€Å¥€ÅŸç€Å€Æ€Å‚€ÅŽ€Åƒ¤€Å‰€ÅŸí€Å Ê€Å—€Å‚ЀńZ€Å‚®€Å‚¯€Å‚±€Å‚«€Å‚¨€Å‚…€ÅŸï€Å í€Å ï€Å ñ€ÅŸð€Å ü€Å ÿ€Åõ€Åò€Å €Å €Å q€Å 7€Å}€Å¡<€Åހŋ€Å¡®€Å¡µ€Åý€Å s€Å¾€ÅŸñ€Å¡€Å¡Æ€ÅŽ€ÅŸû€Å¡Ô€ÅŸü€Å¡Ñ€ÅŸý€Å¡á€ÅŸþ€Å¡Ã€Å¡Ö€Å #€ÅހЀŀЀŠ…€Å €Å¡û€Å €ÅŽ%€ÅŽ'€ÅŽ€Åú€Å¢ €Å¢€Å €Å¢€ÅL€Å¢€Å¢€Å¢€Å¢€ÅÑ€ÅÏ€Å̀ŋì€Å‹ë€Å‚&€Å‚*€ÅŒ–€Å €Å r€Å¢"€Å ‡€Å ‰€Å•n€Å–B€Å”€Å¢P€Å¢Q€Å¢S€Å‚$€Å…®DD¢`D¢`¢eD¢`¢yDxDx…kDx¢“Dx…mDx¢¨Dx¢·Dx¢·¢¼Dx¢·¢¾Dx¢·¢øDx¢·¢ÂDx¢·¢ÍDx¢·¢ËDx¢·¢ÜDx¢·¢×Dx¢·¢ÈDx¢·¢äDx¢·¢àDx¢·¢ôDx¢·¢ðDx¢·¢îDx¬Dx¬£=Dx¬‹rDx¬£MDx¬•Dx¬•£}Dx¬jDx¬£Dx¬£’Dx¬£“Dx¬¡WDx¬• Dx¬™GDx¬’’Dx¬£›Dx¬‚'Dx¬£¡Dx¬£Dx¬£!Dx¬˜ Dx¬£(Dx¬£)Dx¬‰0Dx¬£¸Dx¬‡ Dx¬­Dx¬‡Dx¬”ëDx¬£ÍDx¬£ÒDx¬‡Dx¬‡Dx¬£×Dx¬£×£ÚDx‹tDx¢‹Dx•sDx£öDx£ö£øDx£ö¥ÄDx£ö£üDx£ö¤Dx£ö¤Dx£ö¤Dx£ö¤Dx£ö¤!Dx£ö¤&Dx£ö¤)Dx£ö¤,Dx£ö¤/Dx£ö¤3Dx£ö¤6Dx£ö¤;Dx¥êDx¥ê¥ïDx¥ê¥óDx¥êDx¥ê¯Dx¥ê°Dx¦|Dx¦Dx¦¦'Dx¦¦1Dx¦¦/Dx¦¦-Dx¦¦+Dx¦¦)Dx¦¦!Dx¦¦Dx¦¦Dx¦¦%Dx¦¦#Dx¦¦™Dx¦¦šDx¦¦‹D¦›D¦›•$D¦›™ÙD¦›§8D§ùD§ù§þD§ùŒ\D¨D¨¨ D¨¨D¨DEDE¥ñDE»DEžˆDEDE¨$DE©ÖDE©ÐDE¨tDE¨)DE„ÏDE™^DE¨9DEFDE¨@DE¨ADE§cDE©ëDE©íDE“DEŒ DE¨KDE„ºDE¥÷DE‚âDE“"DE¨WDE§jDEªDEŠDE—GDE„DE„DE‹ŸDE¨oDE¦˜DE¦–DE§‘DE§ŽDE§‹DE¨pDE¦—DE¥IDE‚ÊDE¨sDE§£DE¨vDE¢xDE¨wDE¨xDE‚>DE¥§DE¥¤DE§¨DE¨‹DE¢sDE˜DE„½DE„¾DE„ÈDE„»DE“'DE“*DE©&DE¥ªDE™†DE©DE¨~DE¨DE¨€DE¨DE«DE¨‚DE¨ƒDE¨„DE¨†DE¨…DE™nDE“DE¢tDE“/DE¢hDE“2DE¨—DE“DE¨™DE“5DE¨šDE§ÈDE¨›DE§ÒDE¨œDE¨DE§ÐDE§ÎDE§ÌDE¢jDE…DE¨£DE¨¤DEPDE™rDEž_DE«DEEDE¨¥DE¨¦DE¨¨DENDE„~DE¨ÆDE© DE©DE©ŽDE©DE©ÆDE©ÉDE§=DE¾DE©ÎDŠDŠŠDŠŠŠDŠŠŠ¬DŠŠŠ¬ DŠŠŠ¬ DŠŠŠŠDŠŠŠ¬ DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¢vDŠŠŠ¬JDŠŠŠ¬"DŠŠ¬XDŠŠ¬X¬[DŠŠ¬bDŠŠ›§DŠŠ›§™ÙD›AxxyxyzxyzŽxyzޤxyzŽxyzŽÇxyzެ¬xyzެ­xyzެÑxyz{xyz{Œ:xyz{|xyz{–=xy’Æxy’Æ­xy’Æ…cxy’Æ­ xy’Æ­xy’Æ­xy’ÆCxy­Zxy†ôxy­³xy‹Fxy­¹xy”Øxy”Ø­Âxy£Úxy£Ú”cxy­Ôxy­Ô£Mxy®xy®®0xy®®0®3xy®ž"xyxy¢‘xy¢‘®ƒxy¢‘“Exy¢‘®³xy¢‘ˆaxy®Rxy•xy¦xy®B®Õ®ÕŽ-„T    !$%&')+.35BCDEFGbeotovxyz{|€€‚€ƒ€„€…€†}}€€‘€’€…€›€…€ €…€¡€…€¢€…€¦€…€©€…€ª}€µ}€·€…€º€»}€¼}€¾}€¿}€Â}€Ä€Å€Æ}€É}€Ò€Ó€Ô}€Ý€Ó€ß€Ó€î€Ó€ü €… }€Å $()€…*€…-€Ó4€…AzD€…I€…L P}NQ U€…V€…^€…_j€…p€…z€…€€…Œ€…Ž€…•€…–}N › ¤}«Dx¬­}°€Å¾€Óä}ç€Óé€Óì(ú}÷€…‚(‚(‚(‚‚ ‚‚‚‚€…‚‚‚‚€Å‚‚‚!€Å‚$‚‚%€Å‚&Dx¬‚'€…‚(€Å‚*‚‚+‚‚,‚‚-‚‚.‚‚/‚‚0‚‚1‚‚2‚‚3‚‚4‚‚5‚‚6‚‚7‚‚8‚‚9‚‚:‚‚;‚‚<DE‚>€…‚?‚A‚B€…‚C‚I€…‚W‚g ‚n €…‚s€…‚€Å‚€€…‚ƒ€…‚„€Å‚… ‚†€…‚ˆ€Å‚Š€…‚‹€…‚›€…‚¡€Å‚¨€…‚©€Å‚«€…‚¬€Å‚®€Å‚¯€Å‚±€…‚¾ ‚Á€…‚ÇDE‚ÊDE‚â ‚ã‚æ ‚瀅‚è ‚ò ‚õ ‚ö ‚ø ‚ù‚A‚û€…ƒ €…ƒ €…ƒH ƒI€…ƒR€…ƒU€…ƒX€…ƒ[ ƒ^ ƒŽ€…ƒ”€Åƒ¤€…ƒ©ƒ¬€…ƒ¯€…ƒ² ƒÀ ƒÂ€…ƒÍ ƒÐ€…ƒÚ ƒû „€…„*€Å„Z€…„^„m„o„tDE„~DE„DE„€…„±DE„ºDE„»DE„½DE„¾€„ÀDE„ÈDE„Ï€…„倅„ò€…„ö„ø„ù …€……€…………2…3…4…5 …< …C …B…N…O…c…d …f…i …fDx…kDx…m…} …z€……”DE…€…… …¨€…€Å…®€……°€……´€……µ€……¶€……·€……Û€……߀……÷‚A†„ø†€…† €…†(†€…†€…†€…†€…† €…†!€…†=†X†Y€…††€…†‘€…†›€…†ä€…†èxy†ôDx¬‡ Dx¬‡Dx¬‡Dx¬‡€…‡"€…‡/(‡4‡:…O€…‡S€…‡k€…‡Ñ€…‡Ö€…‡Ú†X‡ò€…ˆHˆa€…ˆg€…ˆ‰€…ˆ‹ˆ²€Å‰Dx¬‰0€…‰7€…‰8€…‰9‰^‰ÉDŠŠŠŠŠDEŠ…NŠ÷€…‹€…‹ €…‹‹‹‹"‹%‹)‹+‹.xy‹F€…‹I€…‰\€…‹Z€…‹c‹f‹gDE‹Ÿ€…‹æ€Å‹ë€Å‹ì€…‹ô€…‹öDEŒ ŒŒ€…ŒŒ Œ"Œ,Œ.Œ,Œ0Œ,Œ2Œ,Œ3Œ,Œ5Œ,Œ9Œ,Œ:Œ,Œ;Œ,&…NŒ<Œ,Œ=Œ,ŒEŒ,ŒFŒ,ŒNŒ,ŒRŒ,ŒTŒ,ŒUŒ,ŒVŒ,ŒWŒ,ŒaŒhŒ,Œ‡Œ,ŒˆŒ,ŒŠ‚ê€ÅŒ–Œ,Œ˜Œ,ŒžŒ,Œ¤Œ,Œ¥Œ,Œ¦Œ,Œ§Œ,Œ²Œ,Œ´Œ,Œ¹Œ,Œ»Œ,Œ¾Œ,Œ¿Œ,ŒÃŒ,ŒÅŒ,Œ,ŒÒ&ŒÖŒ,ŒáŒêŒ,Œò Œ, Œ, Œ,Œ,Œ,Œ, Œ, %Œ, .Œ, Œ,„øŒ,F€ÅLŒ,IŒ,S€ÓWŒ,^šŒ,žŒ,§»Œ,¸Œ,ÊŒ,ŒÚŒ,êŒ,êðŒ,êñ€Åò€Åõ€Åú€Åý€ÅŽ€ÅŽ€ÅŽ€ÅŽ€ÅŽŒ,êŽ#€ÅŽ%€ÅŽ'Ž+Ž-&Ž7&ŽYŽZŽm&Žn&&ŽsŽwŽsŽyŽsŽzŽsŽ{Žs‹fŽ~‹fŽ‹fŽ‚‹fŽ…‹f‹fއ‹fŽˆ‹fމ‹fŽŽ‹fޔޢޤ‹fް‹f޳„øŽè„ø $€…‹ 9>DENTWTYT[TT]T^Tg€Å}€Å‹xyzހŔ€Å—˜xyzޤ€Å¥¯°xyzŽÇ€ÅÍ€ÅÏ€ÅÑDx¬’’’’˜’›’˜’ ’˜’¢’˜’¥’¦’˜’Àxy’Æ…c’€Ӓܒ÷’Â’ö’“ DE“DE“DE“DE“"DE“'DE“*DE“/DE“2DE“5“E’“I’“ˆ’“Œ€Ó“•’“™’“¶’“¹‚““ɂ“Ê‚‚“Ö‚“Ù‚“Û‚“à‚“ã‚“æ‚“ï€Ó“ð‚“ò‚“ó‚“õ‚“ö‚“÷‚”€Ó” ‚”9”=”?”=”@”=‡4”=”A”=”B”=”=”N”=”P”v†X†X”¾†X”¿†X”ΆX”؆X‹†X‹!†X‹$†X”ã†X”ç†X”è†X”ë†X”ï†X”ü†X”û†X•†X• †X•†X•†X•$†X•(†X•0•3†X•0•5•=†X•0•A•B‹(•I•J•K†X•F‹#•W•X•Y•W•X•\•^•^•c•^•j•^•k€Å•n$$Dx•s•^••^•‚•^•ˆ•xyz{Œ:••”•••••—••¯••µ••Õ•ï‚A–•Æxyz{–=€Å–B…c…c–y…c–€…c–€Ó€Ó–‘€Ó–Ä(–Û(–Þ(–á€Ó—DE—G€Ó—\€Ó—q€Ó—|€Ó—¹€Ó—Ì€Ó—Í€Ó—æ€Ó—ó‚A˜ Dx¬˜ €Ó˜€Ó˜<€Ó˜L(˜i(˜|€Ó˜‰DE˜€Ó˜²$˜½˜í˜ï˜í˜í˜ô˜õ˜ö˜í˜÷˜õ™˜õ™˜õ™™'™*™'™'™-™'™0™'™9™'™E™'™M€ƒ™]DE™^(™`(™a(™d€ƒDE™nDE™r™t™w™t™y™t™‚™t™ƒDE™†™t™‰‰{™t™©™ª™©™¬˜õ™·™²˜õ™¹˜õ™½˜õ™Â˜õ™Å™Ð™Õ“a™Õ™Ù™Õ(š (š (š š((š(š8™©šQ™©šTš­$š´$šµ$$š¸$š¹$Œ‘$šº$š»$š¼$š½$š¾$š¿$šÀ$šÁ$šÂ$šÃ$šÊ$šÌ$šâ$››6$›4›A›B›G›I$›K€€›t€›‡DŠŠ›§™ÙDE‚A!!,DEEDEP!R!V!c!f!n!t!|!š!žDE©!¦!°˜õºDE¾!°½!ÁÊËÈÌÈÏÏÔÏÔ×ÏÔÙ’¥’¥ó’¥ô’¥õ’¥ø’¥û’¥ž"˜õ˜õž5˜õžC˜õžD˜õžE˜õžF˜õžG˜õžH˜õžI˜õžJ˜õžK˜õžL˜õžM˜õžO˜õžP˜õžR˜õžSDEž_DEžˆ˜õžÚ˜õžÝ˜õŸ˜õŸ$Ÿ3˜õŸAŸÁ€Å€ÅŸ×€ÅŸâ€ÅŸç€ÅŸí€ÅŸï€ÅŸð€ÅŸñ€ÅŸû€ÅŸü€ÅŸý€ÅŸþ€Å €Å €Å €Å €Å €Å €Å €Å €Å #€Å 7€Å q€Å r€Å s€Å …€Å ‡€Å ‰€Å›‡€Å £€Å Ê€Å ñ€Å ü€Å ÿ€Å¡€Å í€Å ï€Å¡<€Å¡®€Å¡µ¡º€Å¡Ã€Å¡Ñ€Å¡Ô€Å¡Ö€Å¡á€Å¡Æ€Å¡û€Å¢ €Å¢€Å¢€Å¢€Å¢€Å¢€Å¢€Å¢"€Å¢SD¢`¢eD¢`DE¢hDE¢jDE¢sDE¢tDŠŠŠ¢vDE¢xD¢`¢yDx¢‹xy¢‘“EDx¢“xy¢‘ˆaDx¢¨Dx¢·¢¼Dx¢·Dx¢·¢¾Dx¢·¢ÂDx¢·¢ÈDx¢·¢ËDx¢·¢ÍDx¢·¢×Dx¢·¢ÜDx¢·¢àDx¢·¢äDx¢·¢îDx¢·¢ðDx¢·¢ô•I•J¢ù¢øDx¬Dx¬£Dx¬£!Dx¬£(Dx¬£)‚A‚B£5Dx¬£=Dx¬‹rDx¬£MDx¬•Dx¬•£}Dx¬jDx¬£Dx¬£’Dx¬£“Dx¬¡WDx¬• Dx¬™GDx¬£›Dx¬£¡£²Dx¬£¸Dx¬”ëDx¬£ÍDx¬£ÒDx¬£×£ÚŽY£ÜDx¬£×z£ëDx‹tDxDx£ö£øDx£öDx£ö£üDx£ö¤Dx£ö¤Dx£ö¤Dx£ö¤Dx£ö¤!Dx£ö¤&Dx£ö¤)Dx£ö¤,Dx£ö¤/Dx£ö¤3Dx£ö¤6Dx£ö¤;DE¥IDE¥¤DE¥§DE¥ªDx£ö¥ÄDx¥êDx¥ê¥ïDE¥ñDx¥ê¥óDE¥÷Dx¥ê¯Dx¥ê°Dx¥êDx¦¦Dx¦¦Dx¦¦!Dx¦¦#Dx¦¦%Dx¦¦'Dx¦¦)Dx¦¦+Dx¦¦-Dx¦¦/Dx¦¦1Dx¦|xy¦Dx¦Dx¦¦‹DE¦–DE¦—DE¦˜Dx¦¦šD¦›¦¦™©¦§¦¨™©¦§¦©™©¦§¦®™©¦±™©¦´™©¦§¦·™©¦»›A¦¿¦À™©¦Ë™©¦§¦Ì™©¦§¦Ó™©¦Ô™©¦×™©¦§¦Ø™©¦§¦Ü™©¦§¦Þ™©¦§¦ç™©¦ñ™©¦ù™©¦§¦ú™©¦ý™©¦§¦þ™©§™©¦§§™©§ ™©¦§§ ™©¦§§™©¦§‹¢D¦›™ÙD¦›§8DE§=DE§cDE§jDE§‹DE§ŽDE§‘§›€¦DE§£DE§¨DE§ÈDE§ÌDE§ÎDE§ÐDE§ÒD¦›•$D§ù§þD§ùŒ\D§ùD¨¨ D¨D¨¨DE»DE¨$DE¨)DE¨9DE¨@DE¨ADE¨KDE¨WDE¨oDE¨pDE¨sDE¨tDEDE¨vDE¨wDE¨xDE¨~DE¨DE¨€DE¨DE¨‚DE¨ƒDE¨„DE¨…DE¨†DE¨‹DE¨—DE¨™DE¨šDE¨›DE¨œDE¨DE¨£DE¨¤DE¨¥DE¨¦DE¨¨DE¨ÆDE© DE©&DE©DE©ŽDE©DE©ÆDE©ÉDE©ÎDE©Ð©ÒDE©ëDE©íDEªDE«‚A«EDE«DŠŠŠ¬DŠŠŠ¬ DŠŠŠ¬ DŠŠŠ¬ DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠ¬DŠŠŠDŠŠŠ¬"DŠŠŠ¬JDŠŠ¬X¬[DŠŠ¬XDŠŠ¬bDŠŠ›§D›Aʬs‚A¬ƒ¬‡¬ˆxyzެ¬xyzެ­xyzŽxyzެÑxyz{xy’Æ­xy’Æ­ xy’Æ­xy’Æxy’Æ­­Dxy’ÆCxy­Zxyxy­³xy­¹xy”Ø­Âxy”Øxy£Ú”cxy£Úxy­Ô•I•J­Ý‹'xy­Ô£Mxy®ž"xy®®0®3xy®®0xy®xy®Bxy®Rxy•xy¢‘®ƒxy¢‘®³xy¢‘‚A®Ïxy®ÕŽ-‹!«¤¸Œ®Õ‚õ  "#%&'()*+,-./258:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWYZ[^_`abcefghjklmopqrstvw€Š€‹€€Ž€€’€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¶€·€¸€¹€º€»€¼€½€¾€¿€À€Á€Â€Ä€Å€Æ€Ç€È€É€Ê€Ì€Í€Î€Ï€Ð€Ñ€Ò€Ó€Ô€Õ€Ö€×€Ø€Ù€Ú€Û€Ü€Ý€Þ€ß€à€á€â€ã€ä€å€æ€ç€è€é€ê€ì€î€ï€õ€ö€÷€ø€ú€û€ü€ý€þ€ÿ  !"$&'(*/12356789:;<=>@ABCDEFGHIJKMLOQRSTUVWXY[\]^_`abcdefghijklmnopqrstuvwx{|}~…†‡ˆŒ‘“”—š›œžŸ ¡¢£¤¥¦§©«¬¯²´µ¶·¹º»¼½¾¿ÀÁÇÊËÍÎÏÐÔÖ×ÙÚÛÜÝÞßáâãæçèêëìîïòóôõö÷øùúÿ‚‚‚‚‚‚ ‚ ‚ ‚ ‚ ‚‚‚‚‚‚‚‚‚‚‚‚‚‚)‚7‚9‚:‚=‚?‚A‚B‚C‚D‚E‚F‚K‚L‚M‚N‚O‚P‚Q‚R‚U‚V‚Y‚Z‚\‚]‚^‚_‚`‚a‚b‚c‚d‚f‚i‚j‚n‚o‚p‚q‚s‚v‚x‚y‚z‚{‚|‚}‚‚‚‚…‚†‚‡‚ˆ‚‰‚‹‚Œ‚‚Ž‚‚‚‘‚’‚“‚•‚–‚—‚™‚š‚›‚œ‚ž‚Ÿ‚¡‚¤‚¦‚§‚¨‚©‚ª‚¬‚¯‚°‚»‚¼‚¾‚¿‚ÂƂȂɂ̂͂΂ς؂ۂ܂݂ä‚å‚é‚ê‚ë‚ì‚î‚ï‚ù‚ú‚û‚ü‚ý‚þ‚ÿƒƒƒƒƒƒƒ ƒ ƒ ƒ ƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒ!ƒ"ƒ%ƒ&ƒ'ƒ(ƒ)ƒ*ƒ+ƒ,ƒ-ƒ.ƒ/ƒ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7ƒ8ƒ9ƒ:ƒ;ƒ<ƒ=ƒBƒCƒDƒEƒFƒGƒHƒIƒNƒPƒQƒRƒSƒTƒUƒVƒWƒXƒYƒZƒ[ƒ\ƒ^ƒaƒqƒvƒwƒyƒ|ƒ~ƒƒ€ƒƒ‚ƒƒƒ„ƒ…ƒ†ƒ‡ƒˆƒ‰ƒŠƒ‹ƒŒƒƒŽƒ‘ƒ”ƒ•ƒ–ƒ—ƒ˜ƒ™ƒšƒ›ƒœƒƒžƒŸƒ ƒ¡ƒ¢ƒ§ƒ¨ƒ©ƒ¬ƒ­ƒ®ƒ¯ƒ°ƒ±ƒ²ƒ³ƒ´ƒµƒ¶ƒ·ƒ¸ƒ¹ƒºƒ»ƒ¼ƒ½ƒ¾ƒ¿ƒÀƒÁƒÂƒÃƒÄƒÅƒÆƒÇƒÈƒÉƒÊƒËƒÌƒÍƒÎƒÏƒÐƒÑƒÒƒÓƒÔƒÕƒÖƒ×ƒØƒÚƒÛƒÝƒßƒàƒáƒâƒãƒäƒåƒæƒçƒèƒéƒëƒíƒîƒïƒðƒñƒòƒóƒôƒõƒöƒ÷ƒøƒùƒúƒûƒüƒýƒþƒÿ„„„„„„„„„„ „ „ „ „„„„„„„„„„„„„„„„„!„"„#„*„+„1„2„3„6„A„B„D„E„P„Q„Rÿ3‡Ã Â2…ì   >‚´  €¤    €¤          ¸‰ Öÿ° u‰ Öÿ°!)0‰ Öÿ°+    €¬     €¬     €¬    €¬    €¬      €¬    €¬     €¬      €¬   €¬   €¬     €¬    ":#ƒîƒî:     ÿ¤@  (.#ƒûƒû.     ÿ¤@  #„„ÿ´@* #„ „ ÿ¤@,!!#„#„#-!!„ ÿ¤@-!!/""$#„0„0$-"%"'„ ÿ¤@-"%"'0####„3„3# ÿ¤@12 ÿ´@412 ÿ´@671 2  ÿ¤@81 2!! ÿ¤@91 !288&ÿ¤@:1 200ÿ¤@;<1 2,, ÿ¤@=>1 2BBÿ¤@?@1$$2€‘€‘A1!!„ÿ¤@A1!!HI1' '2ggA1!!„ÿ¤@A1!!J K1* *"2TT'A1!!„ÿ¤@A1!!L!M1- -"2WW'A1!!„ÿ¤@A1!!N"O10 02iiA1!!„P100„ ÿ¤@A1!!P100'10!0&Q#R13 32mmA1!!„ S133„ T13"3%„     ÿ¤@A1!!S133T13"3%'13)3.U$V16 62qq A1!!„ S166„ T16"6%„W16(6+„       ÿ¤@A1!!S166T16"6%W16(6+'16/64X%Y19 92uuA1!!„S199„T19"9%„W19(9+„Z19.91„ ÿ¤@A1!!S199T19"9%W19(9+Z19.91'1959:[&\1< <2yyA1!!„P1<'<)„ÿ¤@A1!!P1<'<)]1<<^'_1? ?2{{"A1!!„P1?7?9„ ÿ¤@A1!!P1?7?9'1?=?B`(a1B B2A1!!„P1B B"„ ÿ¤@A1!!P1B B"'1B1B6c)d1E E2€†€†A1!!„P1E!E#„ ÿ¤@A1!!P1E!E#'1E.E3f*g1H H2€Œ€ŒA1!!„P1HH„ ÿ¤@A1!!P1HH'1H#H(h+i1L L2€€!A1!!„P1L&L(„ÿ¤@A1!!P1L&L(j,k1O O2€•€• A1!!„!P1OO„ !ÿ¤@A1!!P1OOl-m1S S2€š€š"A1!!„#P1SS„" #ÿ¤@A1!!P1SS'1SSn4op ! .qí$$.1.rp sÿ¤@/up sÿ¤@0wp s33 ÿ¤@tp o$$11}~*2©] "$1Áa1€€~99,~99,  €¤€‡~9-92€ˆ~9394€‰~9599€Š~9:9;€‹~9<9?€Œ~9@9C!2~[[~[[€¬" "3~[[~[[€¬"$A€Ž,5„€$"4~[[~[[€¬"€€"5~[[~[[€¬""6~[[~[[€¬" €"7~[[~[[ €¬" €€ "8~[[~[[ €¬"  "9~[[~[[ €¬"$%A€Ž,5„€% ":€“~^^~^^&€”€•P&  €¤€”€•P€‡~^^ €ˆ~^!^"€‰~^#^'€Š~^(^)€‹~^*^-€Œ~^.^1€–!;€—~tt ~tt   €¤€‡~t!t&€ˆ~t't(€‰~t)t-€Š~t.t/€‹~t0t3€˜~t4t=€Œ~t>tA€™!<€š~€—€—~€—€— €¤€ˆ~€— €—!€‰~€—"€—&€œ~€—(€—*€!=€ž~€È€È~€È€È€¤€ˆ~€È€È€‰~€È€È€œ~€È€È!!>€Ÿ~€Ö€Ö'~€Ö€Ö'€¤€ˆ~€Ö(€Ö)€£~€Ö*€Ö-€¤~€Ö.€Ö7!?€¥~€è€è+~€è€è+€¤€ˆ~€è,€è-€‰~€è.€è2€§~€è3€è4!@€¨~€û€û~€û€û   €¤€ˆ~€û€û€‰~€û€û€§~€û@€ûA€«~€ûB€ûD€¬!A€­~~   €¤€ˆ~€‰~€®~#€§~%&€«~')!B€¯~#~#  €¤€ˆ~$%€°~&-€±~.1€²~26!C€³~''~''   €¤€ˆ~' '!€‰~'"'&€®~'''1€§~'2'3€´!D~ƒŠƒŠ~ƒŠƒŠ!€¬, ,E~ƒŠƒŠ~ƒŠƒŠ!!€¬,!'A€Ž,5„€',F~ƒŠƒŠ~ƒŠƒŠ!€¬,€€,G~ƒŠƒŠ~ƒŠƒŠ!€¬,,H~ƒŠƒŠ~ƒŠƒŠ!€¬, €,I~ƒŠƒŠ~ƒŠƒŠ! €¬, €€ ,J~ƒŠƒŠ~ƒŠƒŠ! €¬,  ,K~ƒŠƒŠ~ƒŠƒŠ!! €¬,$!(A€Ž,5„€( ,L€¶~ƒ“ ƒ“ ~ƒ“ ƒ“ " €¤--M€¸~ƒ” ƒ”~ƒ” ƒ”"€¤--N8~ƒ• ƒ•~ƒ• ƒ•" €¤--O€¹~ƒ– ƒ–~ƒ– ƒ–"#€¤--P~ƒŸ ƒŸ"~ƒŸ ƒŸ"$€¬00Q~ƒŸ ƒŸ"~ƒŸ ƒŸ"$€¬0 0R~ƒŸ ƒŸ"~ƒŸ ƒŸ"$ €¬0  0S~ƒŸ ƒŸ"~ƒŸ ƒŸ"$ €¬0  0T~ƒŸ ƒŸ"~ƒŸ ƒŸ"$$ €¬00U€½~…Ï …Ï~…Ï …Ï)A~…Í…Í„1)€¤1A~…Í…Í1V€½~…Ô …Ô~…Ô …Ô%€¤22W€À~…Õ …Õ~…Õ …Õ%€¤22X€Á~…Ù …Ù~…Ù …Ù*A~…ׅׄ3*%€¤3A~…×…×3Y€À~…Ú …Ú~…Ú …Ú+A~…ׅׄ3+€¤3A~…×…×3Z€Ã~…å …å~…å …å,A~…ã…ã„4,&€¤4A~…ã…ã4[€Ç~…æ …æ~…æ …æ-A~…ã…ã„4-€¤4A~…ã…ã4\€È~…ô …ô~…ô …ô.A~…è…è„6.%€¤6A~…è…è6]€Ê~…õ …õ~…õ …õ/A~…è…è„6/1/€¤6A~…è…è6^€Ë~…ö …ö#~…ö …ö#0A~…è…è„60%€¤6A~…è…è6_€Ì~…÷ …÷!~…÷ …÷!1A~…è…è„6111€¤6A~…è…è6`€Í~…ø …ø~…ø …ø2A~…è…è„6232€¤6A~…è…è6a€Î~…ù …ù!~…ù …ù!3A~…è…è„63€¤6A~…è…è6b€Ï~…ú …ú!~…ú …ú!4A~…è…è„64€¤6A~…è…è6c€Ð~…û …û!~…û …û!5A~…è…è„65€¤6A~…è…è6d€Ñ~† †~† †6A~…ÿ…ÿ„76'€¤7A~…ÿ…ÿ7e€Õ~††~††7A~…ÿ…ÿ„77'€¤7A~…ÿ…ÿ€Ö~††7f€×~† †~† †8A~…ÿ…ÿ„78€¤7A~…ÿ…ÿ7g€Ø~† † ~† † 9A~…ÿ…ÿ„79€¤7A~…ÿ…ÿ7h€Ù~†! †!~†! †!:A~…ÿ…ÿ„7:€¤7A~…ÿ…ÿ7i€Ú~†" †"~†" †";A~…ÿ…ÿ„7;6;€¤7A~…ÿ…ÿ7j€Û~†# †#~†# †#A~…ÿ…ÿ„7>(€¤7A~…ÿ…ÿ7m€à~†' †' ~†' †' ?A~…ÿ…ÿ„7?4?€¤7A~…ÿ…ÿ7n€á~†( †('~†( †('@A~…ÿ…ÿ„7@4@€¤7A~…ÿ…ÿ7o€â~†) †)~†) †)AA~…ÿ…ÿ„7A €¤7A~…ÿ…ÿ7p€ã~†* †*~†* †*BA~…ÿ…ÿ„7B €¤7A~…ÿ…ÿ7q€ä~†+ †+%~†+ †+%CA~…ÿ…ÿ„7C €¤7A~…ÿ…ÿ7r€Ë~†- †-#~†- †-#DA~…ÿ…ÿ„7D%€¤7A~…ÿ…ÿ7s€Ì~†/ †/!~†/ †/!EA~…ÿ…ÿ„7E1E€¤7A~…ÿ…ÿ7t€å~†1 †1"~†1 †1"FA~…ÿ…ÿ„7F€¤7A~…ÿ…ÿ€ˆ~†1#†1$7u€æ~†4 †4~†4 †4GA~…ÿ…ÿ„7G€¤7A~…ÿ…ÿ7v€ç~†5 †5~†5 †5HA~…ÿ…ÿ„7H €¤7A~…ÿ…ÿ€‰~†5†5!€Š~†5"†5#7w€è~†6 †6~†6 †6IA~…ÿ…ÿ„7I€¤7A~…ÿ…ÿ7x€é~†7 †7~†7 †7JA~…ÿ…ÿ„7J€¤7A~…ÿ…ÿ7y€ê~†9 †9 ~†9 †9 KA~…ÿ…ÿ„7K €¤7A~…ÿ…ÿ7z€ë~†; †;~†; †;LA~…ÿ…ÿ„7L €¤7A~…ÿ…ÿ7{€ì~†? †?#~†? †?#MA~…ÿ…ÿ„7M €¤7A~…ÿ…ÿ7|€í~†B †B~†B †BNA~…ÿ…ÿ„7N ) €¤7A~…ÿ…ÿ€‰~†B†B€Š~†B†B €ï~†B!†B#7}€ð~†E †E~†E †EOA~…ÿ…ÿ„P€”€•P7O P €¤7A~…ÿ…ÿ€”€•P€‰~†E†E#€Š~†E$†E%€ñ~†E&†E)7~€ò~†H †H~†H †HQA~…ÿ…ÿ„R€”€•P7QR ) €¤7A~…ÿ…ÿ€”€•P€ó~†H†H€‰~†H†H €Š~†H!†H"€ï~†H#†H%7€ô~†M †M!~†M †M!SA~…ÿ…ÿ„7S%€¤7A~…ÿ…ÿ7€€€õ~†N †N&~†N †N&TA~…ÿ…ÿ„7T€¤7A~…ÿ…ÿ7€€ö~†O †O&~†O †O&UA~…ÿ…ÿ„7U€¤7A~…ÿ…ÿ7€‚€÷~†P †P&~†P †P&VA~…ÿ…ÿ„7V€¤7A~…ÿ…ÿ7€ƒ€ø~†R†R~†R†R '%€¤€‰~†R†R€Š~†R†R€ù~†R†R €ú~†R+†R0!€„€û~†X†X~†X†XW€”~†c7†c8 *  ' )'(1W4W  7W€¤€”~†c7†c8 €ý~†Y†Y€þ~†Z†Z€ÿ~†[†[€Š~†\†\€ï~†]†] €ù~†^†^ €ú~†_†_ ~†`†` ~†a†a~†b†b~†c†c~†d†d~†e†e!€…~†Í†Í~†Í†Í%€¤~†Í†Í !€†~†Ñ†Ñ~†Ñ†Ñ)€¤€ï~†Ñ†Ñ!€‡ ~†Ý†Ý2~†Ý†Ý2* +,€¤€ý~†Ý4†Ý> ~†ÝK†Ý[~†Ý\†Ý`~†Ýb†Ýg!€ˆ~‡‡~‡‡ €¤€ˆ~‡ ‡!€‰~‡"‡&€Š~‡'‡(€‹~‡)‡,€Œ~‡-‡0!€‰~‡#‡#(~‡#‡#(*)& -.''€¤€ý~‡#)‡#3€ï~‡#?‡#A~‡#B‡#L~‡#S‡#X~‡#Y‡#v~‡#w‡#€!€Š~‡2‡2*~‡2‡2*X€”€•PY€”€•P*)& -XY(€¤€”€•P€”€•P€ý~‡2+‡25€ï~‡2A‡2C~‡2D‡2N~‡2U‡2Z~‡2[‡2x~‡2y‡2{~‡2|‡2€‡!€‹~‡?‡?~‡?‡? €¤~‡?‡? !€Œ!~‡G‡G~‡G‡G '€¤€ˆ~‡G‡G €‰~‡G!‡G%€Š~‡G&‡G'~‡G)‡G0€ù~‡G1‡G6"!€#~‡^‡^~‡^‡^Z€”€•P'/ ZZ€¤€”€•P€ˆ~‡^‡^€‰~‡^‡^#€ù~‡^%‡^*%~‡^5‡^>€Š~‡^?‡^@~‡^A‡^H]~‡^I‡^J&!€Ž'~‡‡1~‡‡1 01€¤€‰~‡3‡7€Š~‡J‡K+~‡S‡X!€,~‡Ÿ‡Ÿ~‡Ÿ‡Ÿ12 /  '2€¤ .~‡Ÿ‡Ÿ€ˆ~‡Ÿ‡Ÿ€‰~‡Ÿ‡Ÿ %~‡Ÿ!‡Ÿ*€Š~‡Ÿ+‡Ÿ,/~‡Ÿ-‡Ÿ3€ù~‡Ÿ4‡Ÿ90~‡Ÿ:‡ŸE€ú~‡ŸF‡ŸK~‡ŸL‡ŸS1~‡ŸT‡ŸX2!€3~‡ô‡ô~‡ô‡ô 3' €¤ 5~‡ô‡ô&€ˆ~‡ô9‡ô:€‰~‡ô<‡ô@6~‡ôB‡ôL7~‡ôN‡ô\8~‡ôg‡ôp]~‡ôr‡ôs9~‡ôu‡ôx€Š~‡ôz‡ô{:!€‘;~ˆˆ"~ˆˆ"*) €¤€ˆ~ˆ#ˆ$€‰~ˆ%ˆ)€ý~ˆ*ˆ4€ï~ˆ5ˆ7<~ˆ8ˆC€Š~ˆDˆE=~ˆFˆS6~ˆTˆ^! €~[[ €€~[[>>~[[%!€!€!€!€!€!€ !€ !€ $ } [[’’ ?~0 0! $} [[’’+@~0%0/4B~020KC~0N0T5E~0X0m F~0q0v G~1 1 $} [[’’+@~1%1/4B~121K C~1N1Q E~1T1WF~1[1} H~2 2 $} [[’’+@~2%2/6B~222;6C~2>2GE~2K2d J~3 3 $}[[’’+@~3%3/,B~3237,C~3:3?E~3C3\K~4 4$}[[’’+@~4%4/7B~424;7C~4>4GE~4K4dM~5 5$}[[’’+@~5%5/B~5257 C~5:5?N~99O}’ [h’¨€’~< <~< <+8 9‚´K€ˆ~<<€‰~<<~<<R~< <)S~e~ˆHˆQK€—f~² ²~² ²9:,, ‚¼KW~²²g~²/²8h~²A²IK€˜i~ú ú~ú ú\€”€•P9\>>>    ‚¼K€”€•PW~úúk~úú!l~ú#ú*m~ú3ú9K€™n~‚ ‚~‚ ‚94:   ‚¼KX~‚‚W~‚!‚%l~‚5‚<m~‚C‚IK€šo~‚< ‚<~‚< ‚<9$:?? ‚¼Kk~‚<‚<W~‚<‚`:AA ‚¼K€”€•P€”€•P€”€•P€”€•P€ó~‚Œ‚Œ ~‚Œ!‚Œ&‚~‚Œ'‚Œ,k~‚Œ-‚Œ0W~‚Œ1‚Œ5ƒ~‚Œ7‚ŒA„~‚ŒT‚Œ]K€Ÿ…~‚™ ‚™#~‚™ ‚™#9+$:AA ‚¼K€ó~‚™$‚™&‚~‚™'‚™,k~‚™-‚™0W~‚™1‚™5ƒ~‚™7‚™A„~‚™T‚™]K€ †~‚¦ ‚¦~‚¦ ‚¦a€”€•Pb€”€•P$c€”€•P9a+>bc11 ‚¼K€”€•P€”€•P€”€•P€ó~‚¦‚¦ ~‚¦!‚¦%k~‚¦&‚¦)`~‚¦*‚¦/‡~‚¦0‚¦Aˆ~‚¦B‚¦RK€¡‰~‚¬ ‚¬~‚¬ ‚¬d€”€•Pe€”€•Pf€”€•Pg€”€•P$9 def>g:AA ‚¼K€”€•P€”€•P€”€•P€”€•P Š~‚¬‚¬%€ó~‚¬&‚¬(~‚¬)‚¬.‚~‚¬/‚¬4k~‚¬5‚¬8W~‚¬9‚¬=ƒ~‚¬?‚¬I„~‚¬\‚¬eK€¢‹~‚¸ ‚¸~‚¸ ‚¸9$:BB ‚¼Kk~‚¸‚¸W~‚¸‚¸"q~‚¸#‚¸/r~‚¸0‚¸;K€£~ƒ ƒ~ƒ ƒ9$:CC ‚¼Kk~ƒƒW~ƒ ƒ$~ƒ%ƒ*~ƒ+ƒ0‘~ƒ1ƒ?’~ƒ@ƒMK€¤“~ƒ ƒ*~ƒ ƒ*9 :4; ‚¼K€Š~ƒ+ƒ,W~ƒ-ƒ1X~ƒ3ƒ=Y~ƒUƒ`K€¥”~ƒZ ƒZ"~ƒZ ƒZ"9:DE ‚¼KW~ƒZ#ƒZ'X~ƒZ(ƒZ2—~ƒZ3ƒZ<K€¦˜~ƒf ƒf1~ƒf ƒf1+4; €¤~ƒf2ƒf6X~ƒf8ƒfBY~ƒfZƒfe™X€§š~ƒƒ%~ƒƒ%+4; €¤~ƒ&ƒ*X~ƒ,ƒ6Y~ƒMƒXXQ~< <€ˆ~<<}NQ+~<<}NQ S~ß~„Ê?„ÊIà]€»á~…J…J8~…J…J8*+, €¤€ý~…J:…JD~…JP…JT~…JU…JZ ~…Ja…Jq]iA~…Í…Í„€¾~…Í…Í¡~…Î…Î ¢~…Î…Î  £~…Î#…Î'i¥~…Î*…Î,1iââ~…΅΀½!€¾€½jA~…Í…Í„1jã}kk¼¼€¿~…Ò…Ò¡~…Ó…Ó ¢~…Ó!…Ó%J£~…Ó;…ÓJ ¥~…ÓM…ÓQ¦~…Óc…Óp§~…Ós…Óx%€¿€¿~…Ó…Ó€½!€¿€½%€À!€¿€À%å}kk¼¼kA~…ׅׄ€Â~…×…×&¡~…Ø…Ø'%¢~…Ø*…Ø31k£~…Ø6…ØC3kææ~…؅؀Á!€Â€ÁlA~…ׅׄ3l%€À!€Â€ÀmA~…ׅׄ3m}nn¼¼ç~…Ü…Ü(¡~…Ý…Ý$'¢~…Ý'…Ý/£~…Ý2…Ý:Kèè~…Ý…ÝLê~…Þ…Þ*Këë~…Þ…ÞMê~…ß!…ß.Kíí~…ß…ß}nn¼¼nA~…á…á„€Ý~…á…á&¡~…á4…á9K¢~…á<…áT1n£~…áW…ád9nîî~…á…á0}oo¼¼oA~…ã…ã„€Ä~…ã…ã&¡~…ä…ä1o¢~…ä …ä-4oïï~…ä…ä€Ã!€Ä€ÃpA~…ã…ã„4p&€Ç!€Ä€ÇqA~…ã…ã„4q}rr¼¼rA~…è…è„€É~…è…è%¡~…ë…ë1r¢~…í…í%£~…ï…ï1r¥~…ñ…ñ3r¦~…ó…ó"6rðð~…é…é€È!€É€ÈsA~…è…è„6s%€Ê!€É€ÊtA~…è…è„6t1t€Ë!€É€ËuA~…è…è„6u%€Ì!€É€ÌvA~…è…è„6v1v€Í!€É€ÍwA~…è…è„6w3w€Î!€É€ÎxA~…è…è„6x€Ï!€É€ÏyA~…è…è„6y€Ð!€É€ÐzA~…è…è„6z} {{¼¼ {A~…ÿ…ÿ„€Ò~…ÿ…ÿ  '¡~††¢~††£~††¥~††6{¦~† † !§~†† 9{¨~††#(ñ~††4{ò~††4{ó~††%ô~††%õ~††7{öö~††€Ñ!€Ò€Ñ|A~…ÿ…ÿ„7|'€Õ!€Ò€Õ}A~…ÿ…ÿ„7}'€×!€Ò€×~A~…ÿ…ÿ„7~€Ø!€Ò€ØA~…ÿ…ÿ„7€Ù!€Ò€Ù€€A~…ÿ…ÿ„7€€€Ú!€Ò€Ú€A~…ÿ…ÿ„7€6€€Û!€Ò€Û€‚A~…ÿ…ÿ„7€‚€Ü!€Ò€Ü€ƒA~…ÿ…ÿ„7€ƒ9€ƒ€Þ!€Ò€Þ€„A~…ÿ…ÿ„7€„(€à!€Ò€à€…A~…ÿ…ÿ„7€…4€…€á!€Ò€á€†A~…ÿ…ÿ„7€†4€†€â!€Ò€â€‡A~…ÿ…ÿ„7€‡ €ã!€Ò€ã€ˆA~…ÿ…ÿ„7€ˆ €ä!€Ò€ä€‰A~…ÿ…ÿ„7€‰ €Ë!€Ò€Ë€ŠA~…ÿ…ÿ„7€Š%€Ì!€Ò€Ì€‹A~…ÿ…ÿ„7€‹1€‹€å!€Ò€å€ŒA~…ÿ…ÿ„7€Œ€æ!€Ò€æ€A~…ÿ…ÿ„7€€ç!€Ò€ç€ŽA~…ÿ…ÿ„7€Ž €è!€Ò€è€A~…ÿ…ÿ„7€€é!€Ò€é€A~…ÿ…ÿ„7€€ê!€Ò€ê€‘A~…ÿ…ÿ„7€‘ €ë!€Ò€ë€’A~…ÿ…ÿ„7€’ €ì!€Ò€ì€“A~…ÿ…ÿ„7€“ €í!€Ò€í€”A~…ÿ…ÿ„7€” ) €ð!€Ò€ð€•A~…ÿ…ÿ„€–€”€•P7€• €– €ò!€Ò€ò€—A~…ÿ…ÿ„€˜€”€•P7€—€˜ ) €ô!€Ò€ô€™A~…ÿ…ÿ„7€™%€õ!€Ò€õ€šA~…ÿ…ÿ„7€š€ö!€Ò€ö€›A~…ÿ…ÿ„7€›€÷!€Ò€÷€œA~…ÿ…ÿ„7€œ}!!¼¼!÷~ˆ)ˆ)!ø}""¼Á€¼ù~ˆ+ˆ+ ~ˆ+ˆ+  N€¤€ˆ~ˆ+!ˆ+"€‰~ˆ+#ˆ+'€Š~ˆ+(ˆ+)û~ˆ++ˆ+3}÷d€½ü~ˆTˆT~ˆTˆT NN€¤€‰~ˆTˆT€Š~ˆTˆTý~ˆT ˆT)þd€¾ÿ~ˆ‚ˆ‚1~ˆ‚ˆ‚112  OP/ 2 QR€¤.~ˆ‚2ˆ‚7 ‚~ˆ‚9ˆ‚@‚~ˆƒ9ˆƒ@‚~ˆ„9ˆ„B€ˆ~ˆ…9ˆ…:€‰~ˆ…;ˆ…?‚~ˆ…@ˆ…C/~ˆ…Dˆ…J‚~ˆ…Kˆ…V€Š~ˆ…Wˆ…X‚ ~ˆ†9ˆ†=d€¿‚ ~‰…‰…7~‰…‰…712  / 20O R€¤.~‰…8‰…= €ˆ~‰…?‰…@€‰~‰…B‰…F‚~‰…H‰…K/~‰…M‰…S‚~‰…U‰…`‚ ~‰…b‰…d~‰…€‚‰…€‰‚~‰…€‹‰…€’€Š~‰…€”‰…€•d€À‚ ~‰¢‰¢3~‰¢‰¢312  0/ 2O R€¤.~‰¢4‰¢9 €ˆ~‰¢;‰¢<€‰~‰¢>‰¢B‚ ~‰¢D‰¢F~‰¢d‰¢k‚~‰¢m‰¢p/~‰¢r‰¢x‚~‰¢z‰¢€…‚~‰¢€‡‰¢€Ž€Š~‰¢€‰¢€‘d"31  "i3 i3 7i378i38 9i39:i3:<i3< >i3>S‚##ÁÁ#‚‚*5#‚5$RÁD€Á‚‚% %‚T+ÿ¤@kk€Â‚‚& &‚TUÿ¤@kk€Ã‚‚) )‚º±º± V Tÿ¤@n€Ä‚‚* *‚ºœºœ TV Tÿ¤@‚‚*U*^n€Å‚‚+ +*‚µµ!W T;Tÿ¤@n€Æ‚‚, ,‚ª5ª5W  TXTÿ¤@n€Ç‚ ‚6 6‚º¾º¾Yÿ¤@n€È‚"‚7 7‚ºÃºÃYYYÿ¤@n€É‚#‚9 9!‚»=»=ZV [WT;\uY]Tÿ¤@n€Ê‚)‚@ @ ‚»’»’ZV [WT^uTT;ÿ¤@n€Ë‚JJ.‚JJ.$€¬xx€Ì‚JJ.‚JJ.$€¬x x€Í‚JJ.‚JJ.$ €¬x  x€Î‚PP)‚PP)$€¬yy€Ï‚PP)‚PP)$€¬y y€Ð‚PP)‚PP)$ €¬y  y€Ñ‚WW ‚WW $€¬zz€Ò‚WW ‚WW $€¬z z€Ó‚WW ‚WW $ €¬z  z€Ô‚ZZ2‚ZZ2$€¬{{€Õ‚ZZ2‚ZZ2$€¬{ {€Ö‚ZZ2‚ZZ2$ €¬{  {€×‚ff$‚ff$$€¬||€Ø‚ff$‚ff$$€¬| |€Ù‚ff$‚ff$$ €¬|  |€Ú‚gg&‚gg&$€¬}}€Û‚gg&‚gg&$€¬} }€Ü‚gg&‚gg&$ €¬}  }€Ý‚hh!‚hh!$€¬~~€Þ‚hh!‚hh!$€¬~ ~€ß‚hh!‚hh!$ €¬~  ~€à‚ii6‚ii6$€¬€á‚ii6‚ii6$€¬ €â‚ii6‚ii6$ €¬  €ã‚jj9‚jj9$€¬€€€€€ä‚jj9‚jj9$€¬€€ €€€å‚jj9‚jj9$ €¬€€  €€€æ‚kk)‚kk)$€¬€€€ç‚kk)‚kk)$€¬€ €€è‚kk)‚kk)$ €¬€  €€é‚ll7‚ll7$€¬€‚€‚€ê‚ll7‚ll7$€¬€‚ €‚€ë‚ll7‚ll7$ €¬€‚  €‚€ì‚mm*‚mm*$€¬€ƒ€ƒ€í‚mm*‚mm*$€¬€ƒ €ƒ€î‚mm*‚mm*$ €¬€ƒ  €ƒ€ï‚nn2‚nn2$€¬€„€„€ð‚nn2‚nn2$€¬€„ €„€ñ‚nn2‚nn2$ €¬€„  €„€ò‚oo2‚oo2$€¬€…€…€ó‚oo2‚oo2$€¬€… €…€ô‚oo2‚oo2$ €¬€…  €…€õ‚pp2‚pp2$€¬€†€†€ö‚pp2‚pp2$€¬€† €†€÷‚pp2‚pp2$ €¬€†  €†€ø‚qq2‚qq2$€¬€‡€‡€ù‚qq2‚qq2$€¬€‡ €‡€ú‚qq2‚qq2$ €¬€‡  €‡€û‚ss6‚ss6$€¬€ˆ€ˆ€ü‚ss6‚ss6$€¬€ˆ €ˆ€ý‚ss6‚ss6$ €¬€ˆ  €ˆ€þ‚tt*‚tt*$€¬€‰€‰€ÿ‚tt*‚tt*$€¬€‰ €‰‚tt*‚tt*$ €¬€‰  €‰‚=‚v v‚ƒ9ƒ9 _`ÿ¤@n‚@‚xx‚xx€Œa =  ÿ¤@n‚D‚yy‚€…€…= ÿ¤@n‚E‚zz-‚ŠgŠg-12 ÿ¤@€ˆ‚z0z1‚F‚zAzE‚G‚zPzY‚H‚zjzv€Š‚z€ƒz€„n.$‚‚$$ $€Ž€‚Ib‚n‚‚T+‚n‚‚TU‚%%%‚!‚..%<‚J‚//<‚K‚00<‚L‚11‚&&&‚%‚33&‚'''‚+‚JJ.'n‚+$n‚+$n‚+$  $‚((@‚J2J8 B‚J;J@(‚M‚KK#($‚))+@‚K'K1B‚K4K9 C‚KE‚MAMF F‚MIMN+‚P‚NN/+$‚,,+@‚N3N=1B‚N@NF C‚NINN,‚Q‚OO,,$‚--+@‚O0O:1B‚O=OC1C‚OFOL E‚OOOT-‚,‚PP)-n‚,$n‚,$n‚,$  $‚.. @‚P-P2.‚R‚QQ .$‚//+@‚Q$Q.1B‚Q1Q< C‚Q?QD/‚S‚RR/$‚00+@‚R#R-#B‚R0R8C‚R;R> E‚RARF0‚T‚SS*0$‚11+@‚S.S8B‚S;S>C‚SASD E‚SGSL1‚U‚TT-1$‚22+@‚T1T;B‚T>TAC‚TDTG E‚TJTO2‚V‚UU+2$‚33+@‚U/U9cB‚UE‚\A\F F‚\I\N:‚]‚]]":$‚;;+@‚]&]0cB‚]3]? C‚]B]G;‚^‚^^ ;$‚<<+@‚^$^.1B‚^1^7 C‚^:^?<‚_‚__<$‚==+@‚_"_,1B‚_/_5 C‚_8_==‚`‚``)=$‚>>+@‚`-`7B‚`:`?C‚`B`G E‚`J`O>‚a‚aa/>$‚??+@‚a3a=B‚a@aEC‚aHaM E‚aPaU?‚b‚bb.?$‚@@+@‚b2b<B‚b?bDC‚bGbL E‚bObT@‚c‚cc-@$‚AA+@‚c1c;B‚c>cCC‚cFcK E‚cNcSA‚d‚dd.A$‚BB+@‚d2d<B‚d?dD C‚dGdLB‚e‚ee'B$‚CC+@‚e+e5B‚e8e= C‚e@eEC‚/‚ff$Cn‚/$n‚/$n‚/$  $‚DD @‚f(f-D‚0‚gg&Dn‚0$n‚0$n‚0$  $‚EE @‚g*g/E‚1‚hh!En‚1$n‚1$n‚1$  $‚FF @‚h%h) B‚h,h1F‚2‚ii6Fn‚2$n‚2$n‚2$  $‚GG @‚i:i?G‚3‚jj9Gn‚3$n‚3$n‚3$  $‚HH @‚j=jBH‚4‚kk)Hn‚4$n‚4$n‚4$  $‚II @‚k-k2I‚5‚ll7In‚5$n‚5$n‚5$  $‚JJ @‚l;l@J‚6‚mm*Jn‚6$n‚6$n‚6$  $‚KK @‚m.m3K‚7‚nn2Kn‚7$n‚7$n‚7$  $‚LL @‚n6n;L‚8‚oo2Ln‚8$n‚8$n‚8$  $‚MM @‚o6o;M‚9‚pp2Mn‚9$n‚9$n‚9$  $‚NN @‚p6p;N‚:‚qq2Nn‚:$n‚:$n‚:$  $‚OO @‚q6q;O‚f‚rr0O$‚PP@‚r4r=+B‚r@rJC‚rMrS'E‚rVr^'F‚rari ¯‚rlrqP‚;‚ss6Pn‚;$n‚;$n‚;$  $‚QQ@‚s:s@ B‚sCsHQ‚<‚tt*Qn‚<$n‚<$n‚<$  $‚RR @‚t.t3R‚g‚h * -R‚iBSS‚j‚h‚k…9…9V]]ÿ¤@€‘S ‚l*1S‚m‘ÒTsë§‚‚l(( ‚l(( d€¬€’ €’‚l(( ‚l(( dd€¬€’d d€’‚l(( ‚l(( d€¬€’€’ ‚l(( ‚l(( d€¬€’€’ ‚l(( ‚l(( d€¬€’ €’ ‚l(( ‚l(( d €¬€’  €’ ‚o‚l**‚pƒlƒld ÿ¤@€“ ‚q‚l++ ‚pƒoƒo  ÿ¤@€“‚r‚l,,‚pƒuƒuee ÿ¤@€“‚t‚l--‚p‚˜‚˜dÿ¤@€“‚u‚l33 ‚pƒ¨ƒ¨ ÿ¤@€“‚v‚l44 ‚pƒ©ƒ©ÿ¤@€“‚w‚l55‚pƒ«ƒ«ÿ¤@€“‚x‚l66 ‚pƒ¬ƒ¬ÿ¤@€“‚y‚l77 ‚pƒ­ƒ­ ÿ¤@€“‚z‚l88‚pƒ®ƒ®ÿ¤@€“‚{‚l99‚pƒ¶ƒ¶  ÿ¤@€“‚|‚l::‚pƒ·ƒ·  ÿ¤@€“‚}‚l;;‚pƒ¸ƒ¸ÿ¤@€“‚~‚lAA'‚pƒ¾ƒ¾'V&fgÿ¤@€“‚‚lGG ‚pƒÕƒÕÿ¤@€“‚‚‚lII‚p‡©‡©hiÿ¤@€“‚lPP‚pƒõƒõj kÿ´@€š€š‚‡‚lQ Q‚pƒø ƒøklÿ¤@€š€š‚‰‚lR R‚pƒý ƒýkmnÿ¤@€š€š‚Œ‚lS S‚pƒÿ ƒÿklÿ¤@€š€š ‚‚lT T‚p„ „kn ÿ¤@€š€š!‚Ž‚lZZ‚p„„ nnnÿ¤@€“"‚‚l[[‚p„„jmm ÿ¤@€“#‚‚l\\ ‚p„ „ jm ÿ¤@€“$‚‘‚l]]‚p›› ÿ¤@€“%‚’‚l^^ ‚p› ›  ÿ¤@€“&‚“‚lee‚p„„  ÿ¤@‚”€“'‚•‚lff‚p„„ 1ÿ¤@€“(‚–‚lii ‚p„„   ÿ¤@‚—€“)‚˜‚ljj‚p„„  ÿ¤@€“*‚™‚lkk‚p„„  ÿ¤@€“+‚š‚lll!‚p––!  oÿ¤@€“,‚œ‚lrr‚p„„  ÿ¤@€“-‚‚lss‚p„„    ÿ¤@€“.‚ž‚ltt ‚p„„   ÿ¤@€“/‚Ÿ‚luu‚p„ „  ÿ¤@€“0‚ ‚lvv ‚p„#„#  pp ÿ¤@€“1‚¢‚lww‚p„!„! ÿ¤@€“2‚£‚lxx ‚p„&„&   ÿ¤@€“3‚¤‚lyy‚p„)„)  ÿ¤@€“4‚¥‚lzz‚p„,„,  ÿ¤@€“5‚¦‚l{{‚p„/„/    ÿ¤@€“6‚§‚l}} ‚p„²„² qr ÿ¤@€“7‚ª‚l~~ ‚p„µ„µ s t ÿ¤@€“8‚­‚l ‚p„¸„¸     uvÿ¤@ €“9‚°‚l€€€€‚p„»„» uwÿ¤@€“:‚²‚l€ˆ€ˆ ‚p„>„> j oÿ¤@€“;‚³‚l€‰€‰ ‚p„H„H  oÿ¤@€“<‚´‚l€Š€Š‚p„I„I oÿ¤@€“=‚µ‚l€‹€‹‚p„J„J hÿ¤@€“>‚¶‚l€Œ€Œ ‚p„K„K j  ÿ¤@€“?‚·‚l€€‚p„;„; j  oÿ¤@€“@‚¸‚l€’€’‚p„@„@ oÿ¤@€“A‚¹‚l€“€“‚p„C„C Ohÿ¤@€“B‚º‚l€”€”‚p„L„L  ÿ¤@€“C‚»‚l€—€—‚p„O„O  ÿ¤@€“D‚¼‚l€˜€˜‚p„N„N oÿ¤@€“E‚½‚l€™€™‚p„T„Tixhÿ¤@€“F‚¿‚l€š€š‚p„[„[ hÿ¤@€“G‚À‚l€¦€¦‚p„m„m yÿ¤@€“H‚‚l€§€§‚p„‚„‚y ÿ¤@€“I‚Âl€­€­ ‚p„ЄР ÿ¤@€“J‚Ä‚l€®€® ‚p„‹„‹  ÿ¤@€“K‚Å‚l€¯€¯ ‚p‚‚ ÿ¤@€“L‚Æ‚l€µ€µ‚p„„zO ÿ¤@€“M‚È‚l€¶€¶ ‚p„‘„‘ #O ÿ¤@€“N‚É‚l€·€· ‚p„„ {O ÿ¤@€“O‚Ë‚l€¸€¸‚p„„ ÿ¤@€“P‚Ì‚l€¹€¹ ‚p—A—A  ÿ¤@€“Q‚Í‚l€º€º‚p—@—@ ÿ¤@€“R‚΂l€Á€Á‚p„’„’ ÿ¤@€“S‚Ï‚l€Â€Â‚p„”„”c ÿ¤@€“T‚Ђl€Ã€Ã!‚p„•„•!c ÿ¤@€“U‚Ñ‚l€Ä€Ä‚p„˜„˜c ÿ¤@€“V‚Ò‚l€Å€Å‚p„™„™c ÿ¤@€“W‚Ó‚l€Æ€Æ‚p„—„—c ÿ¤@€“X‚Ô‚l€Ç€Ç‚p„›„›c ÿ¤@€“Y‚Õ‚l€È€È‚p„„# ÿ¤@€“Z‚Ö‚l€É€É‚p„ž„žz ÿ¤@€“[‚ׂl€Ê€Ê‚p„¢„¢z ÿ¤@€“\‚Ø‚l€Ë€Ë‚p„§„§z ÿ¤@€“]‚Ù‚l€Ì€Ì‚p„«„«# ÿ¤@€“^‚Ú‚l€Í€Í‚p„©„©z ÿ¤@€“_‚Û‚l€Î€Î‚p„¬„¬# ÿ¤@€“`‚Ü‚l€Ô€Ô ‚p‚,‚, ÿ¤@€“a‚Ý‚l€Õ€Õ‚p‚-‚-ÿ¤@€“b‚Þ‚l€Ö€Ö‚p‚<‚<€-‚l€Ö+€Ö-„€#ÿ¤@-‚l€Ö+€Ö-€“c‚ß‚l€×€×‚p‚H‚Hÿ¤@€“d‚à‚l€Ø€Ø‚pyyO #O ÿ¤@€“e‚á‚l€Ù€Ù‚p–– |ÿ¤@€“f‚l€â €â‚l€â €â$€¬€¬€¬g‚l€â €â‚l€â €â$€¬€¬ €¬h‚l€â €â‚l€â €â$ €¬€¬  €¬i‚l€ã€ã ‚l€ã€ã /€¬A Aj‚l€ã€ã ‚l€ã€ã //€¬A/ /Ak‚l€ã€ã ‚l€ã€ã /€¬AAl‚l€ã€ã ‚l€ã€ã /€¬AAm‚l€ã€ã ‚l€ã€ã /€¬A An‚l€ã€ã ‚l€ã€ã / €¬A  Ao‚ä‚l€ä€ä‚p”­”­  /1 ÿ¤@€“p‚å‚l€í €í‚pC C€žA‚l€ì €ì„€­€®€ž€¯€žÿ¤@€®A‚l€ì €ì€®q‚é‚l€î €î‚pDD€ŸA‚l€ì €ì„€­€®€Ÿ €Ÿÿ¤@€®A‚l€ì €ì€®r‚ê‚l€ï €ï‚pE E€ A‚l€ì €ì„€­€®€  € ÿ¤@€®A‚l€ì €ì€®s‚ë‚l€ð €ð‚pF F€¡A‚l€ì €ì„€­€®€¡  ÿ¤@€®A‚l€ì €ì€®t‚ì‚l€ñ €ñ‚pG G€¢A‚l€ì €ì„€­€®€¢ €¢€®€¢ÿ¤@€®A‚l€ì €ì€®u‚í‚l€ò €ò‚pH H€£A‚l€ì €ì„€­€®€£ €®€£ÿ¤@€®A‚l€ì €ì€®v‚î‚l€ó €ó‚pJ J€¤A‚l€ì €ì„€­€®€¤ ÿ¤@€®A‚l€ì €ì€®w‚ï‚l€ô€ô‚pII€¥A‚l€ì €ì„€®€¥ÿ¤@€®A‚l€ì €ì€®x‚ð‚l€õ€õ‚pKK€¦A‚l€ì €ì„ €¦€®€¦ÿ¤@€®A‚l€ì €ì€®y‚ñ‚l€ú €ú‚p„̄̀§A‚l€ù €ù„€°€§€§ÿ¤@€°A‚l€ù €ù€°z‚ê‚l€û €û‚p„̈́̀¨A‚l€ù €ù„€°€¨ €¨ÿ¤@€°A‚l€ù €ù€°{‚ì‚l€ü €ü‚p„΄΀©A‚l€ù €ù„€°€© €©ÿ¤@€°A‚l€ù €ù€°|‚ó‚l€ý€ý‚p„τπªA‚l€ù €ù„€°€ªÿ¤@€°A‚l€ù €ù€°}‚ô‚l ‚p„Ó „Ó€«A‚l„€­€±€« €«ÿ¤@€±A‚l€±~‚ì‚l ‚p„Ô „Ô€¬A‚l„€­€±€¬ €¬€±€¬ÿ¤@€±A‚l€±‚í‚l ‚p„Õ „Õ€­A‚l„€­€±€­ €±€­ÿ¤@€±A‚l€±€‚å‚l ‚p„Ö „Ö€®A‚l„€­€±€®€¯€®ÿ¤@€±A‚l€±‚ï‚l‚p„ׄ׀¯A‚l„€±€¯ÿ¤@€±A‚l€±‚‚é‚l ‚p..€°A‚l  „€²€°€°ÿ¤@€²A‚l  €²ƒ‚÷‚l ‚p//€±A‚l  „€²€± ÿ¤@€²A‚l  €²„‚ì‚l ‚p00€²A‚l  „€²€²€²€²€²ÿ¤@€²A‚l  €²…‚ï‚l‚p11€³A‚l  „€²€³ÿ¤@€²A‚l  €²†‚é‚l ‚p55€´A‚l„€³€´#€´ÿ¤@€³A‚l€³‡‚ê‚l ‚p6 6€µA‚l„€³€µ#€µÿ¤@€³A‚l€³ˆ‚÷‚l ‚p7 7€¶A‚l„€³€¶# ÿ¤@€³A‚l€³‰‚ì‚l ‚p8 8€·A‚l„€³€·#€·€³€·ÿ¤@€³A‚l€³Š‚í‚l ‚p9 9€¸A‚l„€³€¸#€³€¸ÿ¤@€³A‚l€³‹‚î‚l ‚p: :€¹A‚l„€³€¹ ÿ¤@€³A‚l€³Œ‚ï‚l‚p<<€ºA‚l„€³€ºÿ¤@€³A‚l€³‚ð‚l‚p==€»A‚l„#€»€³€»ÿ¤@€³A‚l€³Ž‚ô‚l ‚p„Û „Û€¼A‚l„€­€´€¼#€¼ÿ¤@€´A‚l€´‚ì‚l! !‚p„Ü „Ü€½A‚l„€­€´€½#€½€´€½ÿ¤@€´A‚l€´‚ï‚l""‚p„݄݀¾A‚l„€´€¾ÿ¤@€´A‚l€´‘‚ú‚l)) ‚pƒ”ƒ” €µ ÿ¤@€“’‚ü‚l**‚pƒ•ƒ•€µ,ÿ¤@€““‚ý‚l++‚pƒ–ƒ–€µcÿ¤@€“”‚þ‚l,,‚p†|†|€µÿ¤@€“•‚ÿ‚l22‚pww## ÿ¤@€“–ƒ‚l33 ‚pxx 11 ÿ¤@€“—‚ï‚lDD‚pffFÿ¤@YY˜ƒ‚lFF‚pll##FFÿ¤@€“™ƒ‚lGG‚pPP  FFÿ¤@€“šƒ‚lJJ‚p€“€“Gÿ¤@€“›ƒ‚lKK‚pqq#Gÿ¤@€“œƒ‚lLL‚pXXGÿ¤@€“ƒ‚lNN ‚pee Gÿ¤@€“žƒ‚lOO ‚pff Gÿ¤@€“Ÿƒ‚lPP‚phhG}}ÿ¤@€“ ƒ ‚lQQ ‚pgg G~~ÿ¤@€“¡ƒ ‚lWW‚p€›€›ÿ¤@€“¢ƒ ‚lXX‚pˆGˆG#ÿ¤@€“£ƒ‚lYY‚pˆKˆK#ÿ¤@€“¤ƒ‚lZZ‚pllGÿ¤@€“¥ƒ‚l``‚p‚^‚^#ÿ¤@€“¦ƒ‚laa'‚p‚l‚l'#ÿ¤@€“§ƒ‚lbb#‚p~~##eÿ¤@€“¨ƒ‚lee‚p‚o‚o ÿ¤@ƒ€“©ƒ‚lff‚p‚~‚~ÿ¤@€“ªƒ‚lgg‚p‚“‚“ÿ¤@€“«ƒ‚lii‚p‚‚ÿ¤@€“¬ƒ‚lpp‚p‚ž‚ž#,ÿ¤@ƒ€“­ƒ‚lqq‚p… … #7ÿ¤@€“®ƒ‚lrr‚p……#ÿ¤@€“¯ƒ‚lyy‚p……ÿ¤@€“°ƒ‚lzz ‚p‚¦‚¦ ÿ¤@€“±ƒ‚l{{‚p‚§‚§ÿ¤@€“²ƒ‚l||‚p‚¨‚¨ÿ¤@€“³ƒ ‚l}}‚p‚©‚©ÿ¤@€“´ƒ!‚l~~‚p‚ª‚ªeÿ¤@€“µƒ"‚l‚p…%…%ÿ¤@€“¶ƒ#‚l ‚p‚«‚«  ÿ¤@€“·ƒ$‚l‚‚‚p‚¬‚¬ ÿ¤@€“¸ƒ%‚lƒƒ ‚p‚­‚­  ÿ¤@€“¹ƒ&‚l„„‚p‚»‚» ÿ¤@€“ºƒ'‚l…… ‚p‚®‚®  ÿ¤@€“»ƒ(‚l††‚p‚¯‚¯ ÿ¤@€“¼ƒ)‚l‡‡‚p‚°‚° ÿ¤@€“½ƒ*‚lˆˆ ‚p‚±‚±  ÿ¤@€“¾ƒ+‚l‰‰ ‚p‚²‚²  ÿ¤@€“¿ƒ,‚lŠŠ‚p‚³‚³ ÿ¤@€“Àƒ-‚l‹‹‚p‚´‚´ ÿ¤@€“Áƒ.‚l ‚p‚Á‚Á #ÿ¤@€“ƒ/‚l‚p‚‚Âzÿ¤@€“Ã0‚l‚p‚¿‚¿ ÿ¤@€“ă1‚l’’ ‚p‚Ã‚à  ÿ¤@€“Ń2‚l““ ‚p‚Ä‚Ä #ÿ¤@€“ƃ3‚l””‚p‚Å‚Å#ÿ¤@€“ǃ4‚l••‚p‚É‚É,ÿ¤@€“ȃ5‚l––‚p‚Æ‚Æ#ÿ¤@€“Ƀ6‚l——‚p‚È‚Èÿ¤@€“ʃ7‚l˜˜‚p‚Þ‚ÞGÿ¤@€“˃8‚l››‚p‚Ì‚Ì#ÿ¤@ƒ9€“̃:‚lžž‚p‚ä‚äÿ¤@€“̓;‚lŸŸ‚p‚å‚åÿ¤@€“΃<‚l  ‚p…)…)ÿ¤@€“σ=‚l¡¡‚p…E…Eÿ¤@€“Ѓ>‚l££‚p…0…0ÿ¤@€“у?‚l¥¥‚p…M…Mÿ¤@€“Òƒ@‚l¬¬‚p… … zÿ¤@€“ÓƒA‚l®®‚p……Gzÿ¤@€“ÔƒB‚l°°!‚p……!G#ÿ¤@€“ÕƒC‚l²²‚p……G7ÿ¤@€“ÖƒD‚l³³‚p……cÿ¤@€“׃E‚l´´‚p……,7ÿ¤@€“؃F‚l¿¿‚p…a…aÿ¤@€“ÙƒG‚lÀÀ‚p…T…T €€ÿ¤@€“ÚƒJ‚lÁÁ‚p…j…j €€ÿ¤@€“ÛƒK‚l‚p…p…p  ÿ¤@€“܃L‚lÃÃ'‚p…v…v'  ÿ¤@€“݃M‚lÄÄ‚p‡Ê‡Ê €€ÿ¤@€“ÞƒN‚lÅÅ‚pˆˆÿ¤@€“߃O‚lÇÇ4‚p„c„c4ÿ¤@€“àƒP‚lÍÍ ‚p…<…< €¿A‚lÍ2Í4„€¿ÿ¤@A‚lÍ2Í4€“áƒQ‚lÓÓ‚p†€†€€ÿ¤@€“âƒS‚lÔÔ‚p††€€€ÿ¤@€“ãƒT‚lÖÖ‚p†v†v€‚ÿ¤@€“äƒV‚l×ׂp†w†w€‚€‚€‚ÿ¤@€“åƒW‚lÙÙ‚p††††€ƒÿ¤@€“æƒY‚lÚÚ‚p†Œ†Œ€ƒ€ƒ€ƒÿ¤@€“çƒZ‚lÜÜ‚p†d†d€„ÿ¤@€“èƒ\‚lÝÝ‚p†e†e€„€„€„ÿ¤@€“éƒ]‚láá‚p†±†±€…ÿ¤@€“êƒ_‚lââ‚p†§†§€…ÿ¤@€“ëƒ`‚lãã#‚p†»†»#€…ÿ¤@€“ìƒa‚lää‚p†Ï†Ï€…ÿ¤@€“íƒb‚låå‚p†æ†æ€…ÿ¤@€“îƒc‚lææ‚p†Ú†Ú€…ÿ¤@€“ïƒd‚lçç‚p††€…ÿ¤@€“ðƒe‚lèè‚p†Å†Å€…ÿ¤@€“ñƒf‚lêê‚p‡N‡N€…€ƒ€ƒÿ¤@€“òƒg‚lëë‚p‡>‡>€…€ƒ€ƒÿ¤@€“óƒh‚lìì‚p‡Y‡Y€…€ƒ€ƒÿ¤@€“ôƒi‚lîî‚p‡R‡R€…€ƒÿ¤@€“õƒj‚lïï‚p‡V‡V€…€ƒÿ¤@€“öƒk‚lðð ‚p‡W‡W €… €ƒÿ¤@€“÷ƒl‚lóó‚p‡¤‡¤ ÿ¤@€“øƒm‚lôô‚p‡¥‡¥ ÿ¤@€“ùƒn‚lõõ-‚p‡¦‡¦-ÿ¤@€“úƒo‚løø‚pææ ÿ¤@€“û‚ï‚l‚‚‚p‚÷‚÷:ÿ¤@LLüƒp‚l‚ ‚‚p‚ü‚ü::ÿ¤@LLýƒq‚l‚‚‚p‚ÿ‚ÿG:ÿ¤@LLþƒr‚l‚‚!‚pƒƒ!:ÿ¤@LLÿƒs‚l‚‚‚pƒƒd:~~ ÿ¤@€“‚ƒt‚l‚ ‚ ‚pƒpƒp:~~ ÿ¤@€“‚ƒu‚l‚ ‚ ‚pƒƒd:}} ÿ¤@€“‚ƒv‚l‚ ‚ ‚pƒqƒq:}} ÿ¤@€“‚ƒw‚l‚ ‚ ‚pƒrƒr: ÿ¤@€“‚ƒx‚l‚ ‚ ‚pƒBƒBd: ÿ¤@€“‚ƒy‚l‚‚‚pƒnƒn: ÿ¤@€“‚ƒz‚l‚‚‚pƒ ƒ d: ÿ¤@€“‚ƒ{‚l‚‚‚pƒsƒs: ÿ¤@€“‚ƒ|‚l‚‚‚pƒ>ƒ>:## ÿ¤@€“‚ ƒ}‚l‚‚‚p••:   ÿ¤@€“‚ ƒ~‚l‚‚‚pƒwƒw ÿ¤@€“‚ ƒ‚l‚‚‚pƒƒÿ¤@€“‚ ƒ€‚l‚!‚!‚p××eeÿ¤@€“‚ ƒ‚l‚"‚"*‚pµµ*eÿ¤@€“‚ƒ‚‚l‚#‚#*‚pÀÀ* e#ÿ¤@€“‚ƒƒ‚l‚$‚$‚pääeeÿ¤@€“‚ƒ„‚l‚%‚%‚p££eÿ¤@€“‚ƒ…‚l‚&‚&‚p’’ #eÿ¤@€“‚ƒ†‚l‚,‚,‚p‡û‡û1€€ÿ¤@€“‚ƒ‡‚l‚-‚-‚p‡ö‡ö1€€ÿ¤@€“‚ƒˆ‚l‚.‚.*‚pbb*1€€ÿ¤@€“‚ƒ‰‚l‚/‚/‚p‡ä‡äI €€ÿ¤@€“‚ƒŠ‚l‚1‚1‚pˆˆ Gÿ¤@€“‚ƒ‹‚l‚2‚2‚pˆˆ1Gÿ¤@€“‚ƒŒ‚l‚4‚4‚pˆ"ˆ" ÿ¤@€“‚ƒ‚l‚5‚5‚pˆ3ˆ3 €†ÿ¤@€“‚ƒ‚l‚6‚6‚pˆˆ1€€ÿ¤@€“‚ƒ‚l‚8‚8‚p›P›P12       ÿ¤@€“‚ƒ‘‚l‚c ‚c‚p‰4 ‰4++ÿ¤@==‚ƒ’‚l‚d‚d‚p‰:‰:+ÿ¤@==‚ƒ“‚l‚f ‚f‚p‰Y‰Y +€‡+ÿ¤@==‚ƒ•‚l‚g ‚g‚p‰S‰S++ÿ¤@==‚ ƒ–‚l‚h ‚h#‚p‰V‰V(+4+ÿ¤@==‚!ƒ—‚l‚l‚l‚p‰‰4ÿ¤@ƒ˜€“‚"ƒ™‚l‚m‚m#‚p‰‰#4ÿ¤@€“‚#ƒš‚l‚n‚n‚p‰ˆ‰ˆ1ÿ¤@€“‚$ƒ›‚l‚o‚o‚p‰‚‰‚#ÿ¤@€“‚%ƒœ‚l‚p‚p‚p‰ƒ‰ƒ#ÿ¤@€“‚&ƒ‚l‚q‚q!‚p‰…‰…!zÿ¤@€“‚'ƒž‚l‚r‚r!‚p‰†‰†!cÿ¤@€“‚(ƒŸ‚l‚t‚t"‚p™ç™ç"#ÿ¤@€“‚)ƒ ‚l‚w‚w"‚p‰“‰“"#ÿ¤@ƒ¡€“‚*ƒ¢‚l‚y‚y‚p‰¡‰¡+ÿ¤@€“‚+ƒ£‚l‚{‚{‚pˆTˆT€ˆÿ¤@€“‚,ƒ¥‚l‚|‚|‚pˆYˆYÿ¤@€“‚-ƒ¦‚l‚‹‚‹‚p‰­‰­,ÿ¤@€“‚.ƒ§‚l‚Œ‚Œ‚pËË, ÿ¤@€“‚/ƒ¨‚l‚’‚’‚pŽŒŽŒ€‰ÿ¤@€“‚0ƒª‚l‚“‚“‚pޕޕ€‰€‰€‰ÿ¤@€“‚1ƒ«‚l‚•‚•‚pûû€…€Ãl€‰€‰ÿ¤@€“‚2ƒ­‚l‚–‚–‚p€…O€‰€‰ÿ¤@€“‚3ƒ®‚l‚—‚—‚p€…€Šn€‰€‰ÿ¤@€“‚4ƒ°‚l‚˜‚˜‚p""€…n€‰€‰ÿ¤@€“‚5ƒ±‚l‚›‚›‚p€…€‹€‰ÿ¤@ƒ³€“‚6ƒ´‚l‚ž‚ž‚p€…€‰ÿ¤@ƒµ€“‚7ƒ¶‚l‚¡‚¡‚p€…o€‰ÿ¤@ƒ·€“‚8ƒ¸‚l‚£‚£‚pŽwŽw€ƒ ÿ¤@€“‚9ƒ¹‚l‚¤‚¤‚pŽfŽf€‰ ÿ¤@€“‚:8ƒº‚l‚« ‚«‚pƒì ƒì ÿ¤A)€“‚;ƒ»‚l‚±‚± ‚p“r“rÿ¤@€“‚<ƒ¼‚l‚·‚·‚p@@ ÿ¤@€“‚=ƒ½‚l‚¸‚¸‚pGG<<ÿ¤@€“‚>ƒ¾‚l‚¹‚¹‚pii ÿ¤@€“‚?ƒ¿‚l‚À‚À‚p““  ÿ¤@€“‚@‚l‚‚‚l‚‚€Œ€¬€Æ €Æ‚A‚l‚‚‚l‚‚€Œ€Œ€¬€Æ€Œ €Œ€Æ‚B‚l‚‚‚l‚‚€Œ€¬€Æ€Æ‚C‚l‚‚‚l‚‚€Œ€¬€Æ€Æ‚D‚l‚‚‚l‚‚€Œ€¬€Æ €Æ‚E‚l‚‚‚l‚‚€Œ €¬€Æ  €Æ‚FƒÁ‚l‚͂͂p€‹€‹€##ÿ¤@€“‚GƒÃ‚l‚΂΂p€€€zzÿ¤@€“‚HƒÄ‚l‚ςςp€‘€‘€ccÿ¤@€“‚IƒÅ‚l‚ЂЂp33F11ÿ¤@€“‚JƒÆ‚l‚Ñ‚Ñ ‚p‘+‘+ €ŒFÿ¤@€“‚KƒÇ‚l‚Ò‚Ò‚pååF==ÿ¤@€“‚LƒÈ‚l‚Ó‚Ó‚póóFÿ¤@€“‚MƒÉ‚l‚Ô‚Ô‚p’ì’쀌;;ÿ¤@€“‚NƒÊ‚l‚Õ‚Õ ‚p’í’í €Œÿ¤@€“‚OƒË‚l‚Ö‚Ö‚p’î’]]ÿ¤@€“‚PƒÌ‚l‚ׂׂpjj€Ž€Žÿ¤@€“‚QƒÎ‚l‚؂؂piiG€Ž€Žÿ¤@€“‚RƒÏ‚l‚Ù‚Ù ‚p’ð’ð Gÿ¤@€“‚S‚ï‚l‚ä‚ä‚p@@8ÿ¤@JJ‚T‚l‚æ‚æ‚l‚æ‚æ€€¬€É €É‚U‚l‚æ‚æ‚l‚æ‚æ€€€¬€É€ €€É‚V‚l‚æ‚æ‚l‚æ‚æ€€¬€É€É‚W‚l‚æ‚æ‚l‚æ‚æ€€¬€É€É‚X‚l‚æ‚æ‚l‚æ‚æ€€¬€É €É‚Y‚l‚æ‚æ‚l‚æ‚æ€ €¬€É  €É‚ZƒÑ‚l‚í‚í<‚p½½<;;8€ÿ¤@€“‚[ƒÒ‚l‚î‚î1‚põõ1€‹;8€ÿ¤@€“‚\ƒÓ‚l‚ï‚ï'‚pŽ/Ž/';€ÿ¤@€“‚]ƒÔ‚l‚ð‚ð‚pSS8Fÿ¤@€“‚^ƒÕ‚l‚ò‚ò(‚p//(&f€‹€‹ÿ¤@€“‚_ƒÖ‚l‚ó‚ó(‚p++(&f;;ÿ¤@€“‚`ƒ×‚l‚ô‚ô‚p((&f;Eÿ¤@€“‚aƒØ‚l‚ö‚ö‚p44];ÿ¤@€“‚bƒÙ‚lƒƒ‚p„å„åV€Dÿ¤@€“‚cƒÛ‚lƒƒ‚p„ì„ìVF 1ÿ¤@€“‚dƒÜ‚lƒƒ‚pœKœKVEFÿ¤@€“‚eƒÝ‚lƒƒ ‚pœœ FEEÿ¤@€“‚fƒÞ‚lƒƒ‚pŽHŽHF€, ÿ¤@ƒß€“‚gƒà‚lƒƒ‚pŽIŽIF€, ÿ¤@€“‚hƒá‚lƒ ƒ ‚pŽJŽJF€  ÿ¤@€“‚iƒâ‚lƒ ƒ ‚pŽKŽKF€c ÿ¤@€“‚jƒã‚lƒƒ‚p’÷’÷ ÿ¤@€“‚kƒä‚lƒƒ ‚p“¦“¦ O ÿ¤@€“‚lƒå‚lƒƒ ‚p“Ý“Ý O ÿ¤@€“‚mƒæ‚lƒƒ‚p“Þ“Þ ÿ¤@€“‚nƒç‚lƒƒ ‚p„À„À  1ÿ¤@ƒè€“‚oƒé‚lƒƒ ‚p„Á„Á  1ÿ¤@ƒê€“‚pƒë‚lƒƒ ‚p„„  1ÿ¤@ƒì€“‚qƒí‚lƒ!ƒ! ‚p„Ã„à  1ÿ¤@ƒî€“‚rƒï‚lƒ(ƒ(‚p”ú”úc ÿ¤@€“‚sƒð‚lƒ)ƒ)‚p”þ”þc ÿ¤@€“‚tƒñ‚lƒ/ƒ/‚p“å“å nÿ¤@€“‚uƒò‚lƒ5ƒ5‚p”i”ij  nlÿ¤@€“‚vƒó‚lƒ7ƒ7‚pƒóƒój n€Ãl ÿ¤@€“‚wƒô‚lƒ=ƒ=‚p••  ÿ¤@€“‚xƒõ‚lƒGƒG‚p—Ý—Ý  ÿ¤@€“‚yƒö‚lƒHƒH‚p—È—È  ÿ¤@€“‚zƒ÷‚lƒNƒN ‚p˜!˜! O ÿ¤@€“‚{ƒø‚lƒPƒP‚p•F•F€ˆ€ˆ€ˆÿ¤@€“‚|ƒù‚lƒ}ƒ}‚p•]•]€Àƒú‚lƒ}ƒ}#„€Ë€Àÿ¤@ƒú‚lƒ}ƒ}#€“‚}ƒü‚lƒ~ƒ~‚p•á•á€Áƒú‚lƒ~ƒ~#„€Ë€Á€Á]€Áÿ¤@ƒú‚lƒ~ƒ~#€“‚~ƒý‚lƒƒ ‚p•à•à €Âƒú‚lƒƒ „€Ë€Â€Â€Âÿ¤@ƒú‚lƒƒ €“‚ƒþ‚lƒ‰ƒ‰‚p‚‚ÿ¤@€“‚€ƒÿ‚lƒŠƒŠ‚p“j“jÿ¤@€“‚„‚lƒ‹ƒ‹‚pŠŠ ÿ¤@€“‚‚„‚lƒŒƒŒ‚pŠŠÿ¤@€“‚ƒ„‚lƒƒ‚pŠ Š ÿ¤@€“‚„„‚lƒƒ‚pŠŠ ÿ¤@€“‚…„‚lƒƒ‚pŠ Š ÿ¤@€“‚†„‚lƒ‘ƒ‘‚pŠŠÿ¤@€“‚‡„‚lƒƒ‚p–– ÿ¤@€“‚ˆ„‚lƒžƒž‚p––ÿ¤@€“‚‰„‚lƒŸƒŸ‚p– – ÿ¤@€“‚Š„ ‚lƒ ƒ ‚p– – ÿ¤@€“‚‹„ ‚lƒ¡ƒ¡‚p– – ÿ¤@€“‚Œ„ ‚lƒ§ƒ§ ‚p‰ÿ‰ÿ ÿ¤@€“‚„ ‚lƒ¨ƒ¨‚pŠŠÿ¤@€“‚Ž„ ‚lƒµƒµ‚p…­…­,€‘ÿ¤@€“‚„‚lƒ¶ƒ¶‚p…º…º€‘ÿ¤@€“‚„‚lƒ¸ƒ¸ ‚p…Ÿ…Ÿ  ÿ¤@€“‚‘„‚lƒ¹ƒ¹ ‚p…š…š  ÿ¤@€“‚’„‚lƒºƒº‚p…›…› ÿ¤@€“‚“„‚lƒ»ƒ»‚p…Ž…Žÿ¤@€“‚”„‚lƒ½ƒ½ ‚p‚‚  ÿ¤@€“‚•„‚lƒ¾ƒ¾‚p…}…}# ÿ¤@€“‚–„‚lƒ¿ƒ¿‚p…ƒ…ƒ#ÿ¤@€“‚—„‚lƒÁƒÁ ‚p…œ…œ  ÿ¤@€“‚˜„‚lƒÂƒÂ ‚p……  ÿ¤@€“‚™„‚lƒÃƒÃ ‚p…ž…ž  ÿ¤@€“‚š„‚lƒÆƒÆ‚p…Ž…Žÿ¤@„€“‚›„‚lƒÈƒÈ‚p…Ø…Øÿ¤@„€“‚œ„‚lƒÊƒÊ‚p†2†2# ÿ¤@€“‚„‚lƒÌƒÌ‚p…å…å ÿ¤@€“‚ž„‚lƒÍƒÍ‚p…î…î ÿ¤@€“‚Ÿ„ ‚lƒÎƒÎ ‚p…þ…þ  ÿ¤@€“‚ „!‚lƒÏƒÏ‚p›(›( ÿ¤@€“‚¡„"‚lƒÐƒÐ‚p›<›< ÿ¤@€“‚¢„#‚lƒÑƒÑ‚pssÿ¤@€“‚£„$‚lƒÒƒÒ‚p››ÿ¤@€“‚¤„%‚lƒÓƒÓ‚p†† ÿ¤@€“‚¥„&‚lƒÔƒÔ‚p†† ÿ¤@€“‚¦„'‚lƒÕƒÕ ‚p…ö…ö  ÿ¤@€“‚§„(‚lƒÖƒÖ ‚p†4†4  ÿ¤@€“‚¨„)‚lƒÛƒÛ‚p‰ø‰ø€’ÿ¤@„+€“‚©„,‚lƒÝƒÝ‚p‚Ç‚Ç#ÿ¤@€“‚ª„-‚lƒÞƒÞ‚p‚Ô‚Ôÿ¤@€“‚«„.‚lƒßƒß‚p‚Ù‚Ùÿ¤@€“‚¬„/‚lƒåƒå"‚pš‰š‰", ÿ¤@€“‚­„0‚lƒæƒæ'‚pš~š~', ÿ¤@€“‚®„1‚lƒçƒç&‚pšš&, ÿ¤@€“‚¯„2‚lƒèƒè‚p››# @< ÿ¤@€“‚°„3‚lƒéƒé‚p›@›@  ÿ¤@€“‚±„4‚lƒêƒê$‚p›I›I$1 ÿ¤@€“‚²„5‚lƒëƒë‚p› › < ÿ¤@€“‚³„6‚lƒíƒí‚p››< ÿ¤@€“‚´„7‚lƒïƒï‚pš™š™ ÿ¤@€“‚µ„8‚lƒðƒð‚pš š  ÿ¤@€“‚¶„9‚lƒñƒñ‚pš¤š¤ ÿ¤@€“‚·„:‚lƒòƒò‚pš”š” ÿ¤@€“‚¸„;‚lƒôƒô‚pš©š© ÿ¤@€“‚¹„<‚lƒõƒõ‚pš¬š¬ ÿ¤@€“‚º„=‚lƒ÷ƒ÷‚p†G†G, ÿ¤@€“‚»„>‚lƒùƒù‚p“3“3z ÿ¤@€“‚¼„?‚lƒúƒú0‚p“=“=0# ÿ¤@€“‚½„@‚lƒûƒû‚p“B“B# ÿ¤@€“‚¾„A‚lƒüƒü‚p“J“Jz ÿ¤@€“‚¿„B‚lƒýƒý‚p“N“N# ÿ¤@€“‚À„C‚lƒÿƒÿ‚p“R“R,7 ÿ¤@€“‚Á„D‚l„„‚p“U“U,7ÿ¤@€“‚„E‚l„„‚p†>†>€Ž ÿ¤@€“‚ÄF‚l„„‚p†9†9€Žÿ¤@€“‚Ä„G‚l„ „ ‚p†A†Apÿ¤@€“‚Å„H‚l„„ ‚p–ˆ–ˆ  ÿ¤@€“‚Æ„I‚l„„‚p–‰–‰ ÿ¤@€“‚Ç„J‚l„„‚p–Š–Š ÿ¤@€“‚È„K‚l„„‚p—— ÿ¤@€“‚É„L‚l„„‚p—— ÿ¤@€“‚Ê„M‚l„„‚p––cÿ¤@€“‚Ë„N‚l„„‚p‰ñ‰ñ ÿ¤@€“‚Ì„O‚l„„‚p‰ö‰öÿ¤@€“‚Í„P‚l„„‚p‰ý‰ýÿ¤@€“‚΄Q‚l„„ ‚p–Ô–Ô ÿ¤@€“‚Ï„R‚l„„‚p–Õ–Õÿ¤@€“‚ЄS‚l„„ ‚pŠŠ ÿ¤@€“‚Ñ„T‚l„„‚pŠŠÿ¤@€“‚Ò„U‚l„„‚pŠ6Š6zÿ¤@€“‚Ó„V‚l„ „ ‚pŠ7Š7zÿ¤@€“‚Ô„W‚l„"„" ‚p–Œ–Œ  ÿ¤@€“‚Õ„X‚l„#„# ‚p–– ÿ¤@€“‚Ö„Y‚l„)„)‚p––€“ ÿ¤@€“‚ׄ[‚l„*„*‚p–– ÿ¤@€“‚Ø„\‚l„+„+‚p––€“ Oÿ¤@€“‚Ù„]‚l„,„,‚p–s–s€”#cO ÿ¤@€“‚Ú„_‚l„-„- ‚p–š–š  ÿ¤@€“‚Û„`‚l„.„. ‚p–›–›  ÿ¤@€“‚Ü„a‚l„/„/ ‚p–œ–œ  ÿ¤@€“‚Ý„b‚l„0„0 ‚p—2—2  ÿ¤@€“‚Þ„c‚l„1„1‚p›› ÿ¤@€“‚ß„d‚l„2„2‚p›› ÿ¤@€“‚à„e‚l„3„3‚pšçšç  ÿ¤@€“‚á„f‚l„4„4 ‚p—9—9  ÿ¤@€“‚â„g‚l„5„5 ‚p––  ÿ¤@€“‚ã„h‚l„7„7 ‚p„¾„¾  ÿ¤@€“‚ä„i‚l„9„9 ‚p—=—=  ÿ¤@€“‚å„j‚l„;„; ‚p•ó•ó  ÿ¤@€“‚æ„k‚l„<„< ‚p•ô•ô   ÿ¤@€“‚ç„l‚l„=„= ‚p•õ•õ  €•ÿ¤@€“‚è„n‚l„>„> ‚p•ö•ö  €–ÿ¤@€“‚é„p‚l„?„? ‚p•÷•÷  ÿ¤@€“‚ê„q‚l„@„@ ‚p•ø•ø  ÿ¤@€“‚ë„r‚l„A„A ‚p•ù•ù  ÿ¤@€“‚ì„s‚l„B„B ‚p•ú•ú  €—ÿ¤@€“‚í„u‚l„C„C ‚p•û•û  ÿ¤@€“‚î„v‚l„D„D ‚p•ü•ü  ÿ¤@€“‚ï„w‚l„E„E ‚p•ý•ý  ÿ¤@€“‚ð„x‚l„F„F ‚p•þ•þ  ÿ¤@€“‚ñ„y‚l„G„G‚p•ÿ•ÿ ÿ¤@€“‚ò„z‚l„H„H ‚p–– €—ÿ¤@€“‚ó„{‚l„N„N‚p“]“]ÿ¤@€“‚ô„|‚l„O„O‚p“^“^ÿ¤@€“‚õ„}‚l„P„P ‚p–Ÿ–Ÿ €˜€™ÿ¤@€“‚ö„€‚l„Q„Q‚p– – €˜€šÿ¤@€“‚÷„‚‚l„R„R‚p“k“kÿ¤@€“‚ø„ƒ‚l„X„X‚p–Å–Å ÿ¤@€“‚ù„„‚l„Z„Z‚p–ª–ª ÿ¤@€“‚ú„…‚l„[„[‚p–§–§ ÿ¤@€“‚û„†‚l„\„\&‚p–¨–¨& ÿ¤@€“‚ü„‡‚l„]„]'‚p–©–©' ÿ¤@€“‚ý„ˆ‚l„_„_‚p–«–« ÿ¤@€“‚þ„‰‚l„`„`‚pšÝšÝ ÿ¤@€“‚ÿ„Š‚l„b„b‚p–±–± ÿ¤@€“ƒ„‹‚l„c„c ‚p–²–²  ÿ¤@€“ƒ„Œ‚l„e„e‚p–¬–¬ ÿ¤@€“ƒ„‚l„f„f‚pš×š× ÿ¤@€“ƒ„Ž‚l„h„h‚p–­–­ ÿ¤@€“ƒ„‚l„i„i‚p–®–® ÿ¤@€“ƒ„‚l„k„k‚p–³–³ ÿ¤@€“ƒ„‘‚l„l„l‚p–¸–¸ ÿ¤@€“ƒ„’‚l„m„m‚p–¿–¿ ÿ¤@€“ƒ„“‚l„n„n‚p–À–À ÿ¤@€“ƒ „”‚l„o„o‚p–Á–Á ÿ¤@€“ƒ „•‚l„p„p‚p–– ÿ¤@€“ƒ „–‚l„q„q‚p–Æ–Æ ÿ¤@€“ƒ „—‚l„s„s,‚p–¹–¹, ÿ¤@€“ƒ „˜‚l„t„t ‚p–»–»  ÿ¤@€“ƒ„™‚l„u„u‚p–º–º ÿ¤@€“ƒ„š‚l„v„v*‚p–¼–¼* ÿ¤@€“ƒ„›‚l„w„w&‚p–½–½& ÿ¤@€“ƒ„œ‚l„y„y‚p–ÿ–ÿ ÿ¤@€“ƒ„‚l„z„z‚p—— ÿ¤@€“ƒ„ž‚l„{„{‚p—— ÿ¤@€“ƒ„Ÿ‚l„|„|‚p–×–× ÿ¤@€“ƒ„ ‚l„}„}‚p–Û–Û ÿ¤@€“ƒ„¡‚l„~„~‚p–á–á ÿ¤@€“ƒ„¢‚l„„‚p–ä–ä ÿ¤@€“ƒ„£‚l„€„€‚p–ê–ê ÿ¤@€“ƒ„¤‚l„„‚p–ç–ç ÿ¤@€“ƒ„¥‚l„‚„‚‚p–í–í ÿ¤@€“ƒ„¦‚l„ƒ„ƒ‚p–ð–ð ÿ¤@€“ƒ„§‚l„„„„‚p–ó–ó ÿ¤@€“ƒ„¨‚l„…„…‚p–ö–ö ÿ¤@€“ƒ„©‚l„†„†‚p–ù–ù ÿ¤@€“ƒ„ª‚l„‡„‡‚p–ü–ü ÿ¤@€“ƒ „«‚l„ˆ„ˆ‚p—-—- ÿ¤@€“ƒ!„¬‚l„‰„‰‚p—.—. ÿ¤@€“ƒ"„­‚l„‹„‹‚p— —  ÿ¤@€“ƒ#„®‚l„Œ„Œ‚p—— ÿ¤@€“ƒ$„¯‚l„„‚p— —  ÿ¤@€“ƒ%„°‚l„„ ‚pƒÚƒÚ €›n€Šÿ¤@€“ƒ&„²‚l„‘„‘%‚p——% ÿ¤@€“ƒ'„³‚l„“„“$‚p–µ–µ$ ÿ¤@€“ƒ(„´‚l„”„”‚p–¶–¶ ÿ¤@€“ƒ)„µ‚l„›„› ‚p——  ÿ¤@€“ƒ*„¶‚l„œ„œ ‚p——  ÿ¤@€“ƒ+„·‚l„„ ‚p—&—&  ÿ¤@€“ƒ,„¸‚l„ž„ž ‚p—'—'  ÿ¤@€“ƒ-„¹‚l„¤„¤‚p‰¿‰¿€œ€ ÿ¤@€“ƒ.„¼‚l„¥„¥‚p‰Á‰Á€œ€€ž€Ÿÿ¤@€“ƒ/„¿‚l„¦„¦‚p‰ç‰ç€ € ÿ¤@€“ƒ0„Á‚l„¨„¨‚p‰Ê‰Ê€ = ÿ¤@€“ƒ1„‚l„©„©‚p‰Ë‰Ë€ < ÿ¤@€“ƒ2„Âl„ª„ª‚p‰Í‰Í€ <=ÿ¤@€“ƒ3„Ä‚l„«„«‚p‰×‰×€ < ÿ¤@€“ƒ4„Å‚l„¬„¬ ‚p‰â‰â € <ÿ¤@€“ƒ5„Æ‚l„­„­‚p‰Ý‰Ý€ <€—ÿ¤@€“ƒ6„Ç‚l„±„±%‚p—l—l%€¡ÿ¤@„É€“ƒ7„Ê‚l„³„³‚p—Œ—Œ€¡ ÿ¤@€“ƒ8„Ë‚l„´„´ ‚p‰Å‰Å € ÿ¤@€“ƒ9„Ì‚l„µ„µ‚p——€¡ÿ¤@€“ƒ:„Í‚l„¶„¶!‚p—œ—œ!€¡ÿ¤@€“ƒ;„΂l„·„·&‚p—¨—¨&€¢€¡ ÿ¤@€“ƒ<„Ђl„º„º‚p—V—V€¡ÿ¤@€“ƒ=„Ñ‚l„»„»&‚p—W—W&€¡ÿ¤@€“ƒ>„Ò‚l„¼„¼3‚p—X—X3€¡ÿ¤@€“ƒ?„Ó‚l„½„½#‚p—Z—Z#€¡ÿ¤@€“ƒ@„Ô‚l„¾„¾‚p—_—_€¡ÿ¤@€“ƒA„Õ‚l„¿„¿‚p——€¢€¡ÿ¤@€“ƒB„Ö‚l„À„À‚p—²—²€¡ÿ¤@€“ƒC„ׂl„Æ„Æ ‚p… …   ÿ¤@€“ƒD„Ø‚l„DŽǂp‰ï‰ïÿ¤@€“ƒE„Ù‚l„Ʉɂp…”…”# ÿ¤@€“ƒF„Ú‚l„ʄʂp…¡…¡ ÿ¤@€“ƒG„Û‚l„ЄЂpƒÜƒÜ ÿ¤@€“ƒH„Ü‚l„фтpƒÝƒÝOÿ¤@€“ƒI„Ý‚l„Ò„Ò ‚p––  Oÿ¤@€“ƒJ„Þ‚l„Ó„Ó‚p–$–$ Oÿ¤@€“ƒK„ß‚l„Ô„Ô‚p“`“`ÿ¤@€“ƒL„à‚l„Õ„Õ‚p“f“f ÿ¤@€“ƒM„á‚l„Ö„Ö‚p–&–&  ÿ¤@€“ƒN„â‚l„ׂׄp“i“iÿ¤@€“ƒO„ã‚l„݄݂p˜3˜3 12ÿ¤@€“ƒP„ä‚l„Þ„Þ‚p™¢™¢ €£ÿ¤@€“ƒQ„æ‚l„߄߂p™Û™Û€£ÿ¤@€“ƒR„ç‚l„à„à!‚p˜~˜~!OOÿ¤@€“ƒS„è‚l„á„á.‚p™}™}.ÿ¤@€“ƒT„é‚l„ç„ç‚pš,š,fÿ¤@€“ƒU„ê‚l„é„é‚pš(š(ÿ¤@€“ƒV„ë‚l„ê„ê‚pš4š4 ÿ¤@€“ƒW„ì‚l„ë„ë‚pš\š\ÿ¤@€“ƒX„í‚l„ì„ì‚pšbšbÿ¤@€“ƒY„î‚l„í„í‚pšgšg,ÿ¤@€“ƒZ„ï‚l„î„î‚pšhšhÿ¤@€“ƒ[„ð‚l„ï„ï‚pšjšjDÿ¤@€“ƒ\„ñ‚l„ö„ö‚p°°!€¤ÿ¤@€“ƒ]„ó‚l„÷„÷‚p··€¤ ÿ¤@€“ƒ^„ô‚l„ý„ý‚pœ·œ·s   ÿ¤@€“ƒ_€Ç„õ‚l… …‚p›r ›r€¥ÿ¤A€à€“ƒ`„÷‚l……‚p›i›i1€¦ÿ¤@€“ƒa„ú‚l……‚p›‹›‹ zÿ¤@€“ƒb„û„ü‚l… … ‚p› ›€¦ÿ¤A€á€“ƒc„ý„þ‚l… … ‚p› ›€¦ ÿ¤A€á€“ƒd„ÿ…‚l… … ‚p›’›’€¦ ÿ¤A€á€“ƒe……‚l… …‚p›–›–€¦ ÿ¤A€á€“ƒf…‚l……‚p›¨›¨€§ÿ¤@€“ƒg…‚l……‚pœBœB€§]]ÿ¤@€“ƒh…‚l……%‚pœœœœ%  ÿ¤@€“ƒi……‚l… … ‚pœ¢œ¢€ ÿ¤A€Ê€“ƒj… … ‚l…! …!‚pœ§œ§€ ÿ¤A€Ê€“ƒk…… ‚l…$ …$‚pœ´œ´D ÿ¤AV€“ƒl… … ‚l…% …%‚pœµœµD ÿ¤AV€“ƒm… ‚l…'…'‚pŠVŠVÿ¤@€“ƒn…‚l…(…(‚pŠSŠSÿ¤@€“ƒo…‚l…)…)‚pŠzŠzÿ¤@€“ƒp…‚l…*…*‚pЄЄÿ¤@€“ƒq…‚l…,…,‚pQQÿ¤@€“ƒr…‚l…-…-‚pII ÿ¤@€“ƒs…‚l….….!‚pœ¾œ¾! ÿ¤@€“ƒt…‚l…0…0‚p‰Ï‰Ï€¨€©ÿ¤@€“ƒu…‚l…1…1‚p‰Ò‰Ò€©€—ÿ¤@€“ƒv…‚l…2…2‚p‰Ó‰Ó€©€ªÿ¤@€“ƒw…‚l…3…3‚p‰Ô‰Ô€© ÿ¤@€“ƒx…‚l…4…4‚p‰Õ‰Õ€©ÿ¤@€“ƒy…‚l…5…5‚pšš€—ÿ¤@€“ƒz…‚l…:…:"‚pšÂšÂ"ÿ¤@…€“ƒ{…‚l…;…;!‚pšÐšÐ!ÿ¤@€“ƒ|… ‚l…<…<$‚pšÑšÑ$ÿ¤@€“ƒ}…!‚l…>…>‚pËËÿ¤@€“ƒ~…"‚l…?…?"‚p–È–È" `ÿ¤@€“ƒ…#‚l…A…A‚p†X†X  ÿ¤@€“ƒ€…$‚l…B…B‚p†]†]1 ÿ¤@€“ƒ…%‚l…D…D‚pŽŽj nlm ÿ¤@€“ƒ‚…&‚l…E…E‚pބބj nlm ÿ¤@€“ƒƒ…'‚l…G…G‚p˜^˜^ÿ¤@…(‚l…G$…G)…)‚l…G4…G9€“ƒ„…*‚l…I…I‚pÕÕÿ¤@€“T‚n‚l(( Td…+…+‚l((d…,…,‚l(('d…-…-‚l(*(3€“‚nd€“‚ndd€“‚nd€“‚nd€“‚nd€“‚nd  d UUÃÃ……U‚†‚lOOU€“‚†j k‚‡€“‚†‚‡kl‚‰€“‚†‚‰kmn‚Œ€“‚†‚Œkl‚€“‚†‚kn  VVÃÃ……V‚Á‚l€¤€¤V¡‚l€¤ €¤&¢‚l€¤*€¤/y‚Á‚Á‚l€¤€¤…. WWÃÃ……W‚ã‚l€â €âW€“‚ã$€“‚ã$€“‚ã$  $ XXÃÃ……@‚l€â"€â( B‚l€â+€â0X$‚l€ã€ã X/…/…/‚l€ã€ã /…0…0‚l€ã#€ã2/…1…1‚l€ã5€ãA€“$/€“$//€“$/€“$/€“$/€“$/  / YYÃÃ……Y€ÃA‚l€ì €ì„‚ç‚l€ì€ì Y€æ€…2€«€ç€…3€¬€è€…4€­ ‚倓‚ç‚å€ÄA‚l€ì €ì„€­€®€Ä€¯€Ä‚逓‚ç‚é€ÅA‚l€ì €ì„€­€®€Å €Å‚ꀓ‚ç‚ê€ÆA‚l€ì €ì„€­€®€Æ €Æ‚뀓‚ç‚ë€ÇA‚l€ì €ì„€­€®€Ç  ‚쀓‚ç‚ì€ÈA‚l€ì €ì„€­€®€È €È€®€È‚퀓‚ç‚í€ÉA‚l€ì €ì„€­€®€É €®€É‚‚ç‚î€ÊA‚l€ì €ì„€­€®€Ê ‚‚ç‚ï€ËA‚l€ì €ì„€®€Ë‚ð€“‚ç‚ð€ÌA‚l€ì €ì„ €Ì€®€Ì€®…6 ZZÍÍ……Z€ÍA‚l€ù €ù„‚ò‚l€ù€ù Z€Ž€‚Ib€ç€…3€¬€è€…4€­‚ñ€“‚ò‚ñ€ÎA‚l€ù €ù„€°€Î€Î‚ꀓ‚ò‚ê€ÏA‚l€ù €ù„€°€Ï €Ï‚쀓‚ò‚ì€ÐA‚l€ù €ù„€°€Ð €Ð‚󀓂ò‚ó€ÑA‚l€ù €ù„€°€Ñ…7 [[ÒÒ……[€ÒA‚l„‚õ‚l[€æ€…2€«€ç€…3€¬€è€…4€­‚ô€“‚õ‚ô€ÓA‚l„€­€±€Ó €Ó‚쀓‚õ‚ì€ÔA‚l„€­€±€Ô €Ô€±€Ô‚퀓‚õ‚í€ÕA‚l„€­€±€Õ €±€Õ‚倓‚õ‚å€ÖA‚l„€­€±€Ö€¯€Ö‚‚õ‚ï€×A‚l„€±€×€®…8 \\ØØ……\€ØA‚l  „‚ö‚l  \€Ž€‚Ib‚逓‚ö‚é€ÙA‚l  „€²€Ù€Ù‚÷€“‚ö‚÷€ÚA‚l  „€²€Ú ‚쀓‚ö‚ì€ÛA‚l  „€²€Û€Û€²€Û‚‚ö‚ï€ÜA‚l  „€²€Ü…9 ]]ÝÝ……]€ÝA‚l„‚ø‚l]€ç€…3€¬€è€…4€­€Ž€‚Ib‚逓‚ø‚é€ÞA‚l„€³€Þ#€Þ‚ꀓ‚ø‚ê€ßA‚l„€³€ß#€ß‚÷€“‚ø‚÷€àA‚l„€³€à# ‚쀓‚ø‚ì€áA‚l„€³€á#€á€³€á‚퀓‚ø‚í€âA‚l„€³€â#€³€â‚‚ø‚î€ãA‚l„€³€ã ‚‚ø‚ï€äA‚l„€³€ä‚ð€“‚ø‚ð€åA‚l„#€å€³€å…: ^^ææ……^€æA‚l„‚ù‚l^€æ€…2€«€ç€…3€¬€è€…4€­‚ô€“‚ù‚ô€çA‚l„€­€´€ç#€ç‚쀓‚ù‚ì€èA‚l„€­€´€è#€è€´€è‚‚ù‚ï€éA‚l„€´€é€®…; __êê……_¤‚l99_ ``êê……`ƒÂ‚l;;`€³# aaêê……a…<‚l<< a€®1 bbêê……b›‚l?? b€ç€…3€¬€è€…4€­G…=‚l@@ €¯…>‚lAA€…?‚lBB‚›‚ïF ccêê……cƒŽ‚l¼¼c ddêê……dƒI‚l½½d€† eeêê……eƒ^‚lßße ffêê……fU‚lÿÿf€ç€…3€¬€è€…4€­€²…@‚l‚‚€…A‚l‚‚‚U‚ï:ƒp€“Uƒp::ƒq€“UƒqG:ƒr€“Uƒr: ggêê……g…B‚l‚>‚>g} hhêê……h…C‚l‚A‚Ah…D Oiiêê…ƒ……E‚l‚B‚B‚pˆrˆr ÿ¤@€ëƒ†…F‚l‚C‚C‚pˆgˆgGGÿ¤@€ëƒ‡…G‚l‚D‚D‚pˆwˆw ÿ¤@€ëƒˆ…H‚l‚E‚E‚pˆÊˆÊG€°ÿ¤@€ëƒ‰…I‚l‚F‚F‚pˆËˆËG€°ÿ¤@€ëƒŠ…J‚l‚G‚G‚pˆÌˆÌG€°ÿ¤@€ëƒ‹…K‚l‚H‚H‚pˆÍˆÍ€†G€†€°ÿ¤@€ëƒŒ…L‚l‚I‚I‚pˆÏˆÏ€€G€€€°ÿ¤@€ëi ‚l‚L‚Li€ç€…3€¬€è€…4€­ …M‚l‚M‚M(€í…P‚l‚N‚N…Q‚l‚O‚O …R‚l‚P‚P …S‚l‚Q‚Q…T‚l‚R‚R …U‚l‚S‚S …V‚l‚T‚T …W‚l‚U‚U$ …X‚l‚V‚V …Y‚l‚W‚W …Z‚l‚X‚X …[‚l‚Y‚Y …\‚l‚Z‚Z …]‚l‚[‚[ …^‚l‚\‚\ …_‚l‚]‚]$ …`‚l‚^‚^% …a‚l‚_‚_!€ˆ‚l‚`‚`€‡…b‚l‚a‚a €±…e‚l‚b‚bƒ‘€“ ƒ‘++ƒ’€“ ƒ’+ƒ“€“ ƒ“+€‡+ƒ•€“ ƒ•++ƒ–€“ ƒ–+4+ jjêêj…f‚l‚‚j…g 1klêꃅh‚l‚„‚„‚pˆöˆö€²ÿ¤@€ðƒŽ…j‚l‚…‚…‚p‰‰ €°€²ÿ¤@€ðk…i‚l‚€ ‚€k€ñ…l‚l‚ ‚€ò…n‚l‚‚ ‚‚€°…o‚l‚ƒ ‚ƒ …fllêêlƒÀ‚l‚‚Âl€Œ…p…p‚l‚ÂÀŒ…q…q‚l‚Ä‚Ä0€Œ…r…r‚l‚˂ˀ“ƒÀ€Œ€“ƒÀ€Œ€Œ€“ƒÀ€Œ€“ƒÀ€Œ€“ƒÀ€Œ€“ƒÀ€Œ  €Œ mmêêmP‚l‚à‚àm11…s‚l‚á‚á##…t‚l‚â‚â‚P‚ï8 nnêênƒÐ‚l‚æ‚æn€ñ,…u‚l‚ç‚ç€ñ,…v‚l‚è‚è€ñ …w‚l‚é‚é €ñc…x‚l‚ê‚ê€ñz…y‚l‚ë‚뀓ƒÐ€€“ƒÐ€€€“ƒÐ€€“ƒÐ€€“ƒÐ€€“ƒÐ€  € ooêêo…z‚lƒUƒUo…{ ppê꧃…|‚lƒWƒW‚pŠ’Š’€ó ÿ¤@€ôƒ…~‚lƒXƒX‚pÿ¤@€ôƒ‘…‚lƒYƒY‚pÿ¤@€ôƒ’…€‚lƒ[ƒ[‚p‹g‹g1€±ÿ¤@€ôƒ“…‚lƒ\ƒ\‚p‹§‹§z€±ÿ¤@€ôƒ”…‚‚lƒ]ƒ]‚p‹ ‹  €±ÿ¤@€ôƒ•…ƒ‚lƒ^ƒ^ ‚pЙЙ €±ÿ¤@€ôƒ–…„‚lƒ_ƒ_ ‚p‹x‹x  €±ÿ¤@€ôƒ—……‚lƒ`ƒ`‚p‹T‹T€±ÿ¤@€ôƒ˜…†‚lƒaƒa‚p~€±ÿ¤@€ôƒ™…‡‚lƒbƒb‚p‹C‹C€±ÿ¤@€ôƒš…ˆ‚lƒcƒc‚p€±ÿ¤@€ôƒ›…‰‚lƒdƒd ‚p‹M‹M €±ÿ¤@€ôƒœ…Š‚lƒeƒe‚p‹‹€Ž€±ÿ¤@€ôƒ…‹‚lƒfƒf‚pŒðŒð;€±ÿ¤@€ôƒž…Œ‚lƒgƒg‚pŒôŒôE€±ÿ¤@€ôƒŸ…‚lƒhƒh‚p‹‚‹‚ €±ÿ¤@€ôƒ …Ž‚lƒiƒi‚pŒ3Œ3o€±ÿ¤@€ôƒ¡…‚lƒjƒj ‚pŒ6Œ6 €±ÿ¤@€ôƒ¢…‚lƒkƒk‚p‹Ð ‹Ð,€±ÿ¤@€ôƒ£…‘‚lƒlƒl‚pŒüŒün€±ÿ¤@€ôƒ¤…’‚lƒmƒm‚pŒßŒß]€±ÿ¤@€ôƒ¥…“‚lƒnƒn‚pŒÖŒÖ€³€±ÿ¤@€ôƒ¦…•‚lƒoƒo‚p‹¨‹¨c€±ÿ¤@€ôp€êƒú‚lƒuƒu„ƒû‚lƒuƒup€ê€ê€ê€ê…–‚lƒvƒv€ê  €ê…—‚lƒwƒw€êo€ê…˜‚lƒxƒx€êh€ê…™‚lƒyƒy€ên€ê…š‚lƒzƒz€ê€ê€êl€ê…›‚lƒ{ƒ{€ê€ê€êp€ê…œ‚lƒ|ƒ| qqëë§§q„‚lƒ®ƒ®q¡‚lƒ¯ƒ¯#€´¢‚lƒ¯&ƒ¯/€‘…ž…ž‚lƒ¯ƒ¯€‘…Ÿ…Ÿ‚lƒ°ƒ°3€µê‚lƒ²!ƒ²2€‘…¡…¡‚lƒ²ƒ² rrëë§§r…‚l……r€ç€…3€¬€è€…4€­…¢‚l………£‚l…… …¤‚l…… ssëë§§s€……¥ * .s…¦ºÑtëë0§!ƒpƒ§…§…¥00 …¥00 €¶€¤€ùƒ¨…©…¥55 …¥55 €¶€¤…ª€ùƒ©…«…¥99 …¥99 Z€¤…¬€ùƒª…­…¥==…¥==€·€¤…¯€ùƒ«…¥EE…¥EE€¸€¬€û €ûƒ¬…¥EE…¥EE€¸€¸€¬€û€¸€ëA€Ž,5„€€ë€ûƒ­…¥EE…¥EE€¸€¬€û€€€ûƒ®…¥EE…¥EE€¸€¬€û€ûƒ¯…¥EE…¥EE€¸€¬€û €€ûƒ°…¥EE…¥EE€¸ €¬€û €€ €ûƒ±…¥EE…¥EE€¸ €¬€û  €ûƒ²…¥EE…¥EE€¸€¸ €¬€û$€¸€ìA€Ž,5„€€ì €ûƒ³…±…¥PP…¥PP€¸ €¤…²…¥PP…³€ùƒ´…¥TT…¥TT€¹€¬€ü €üƒµ…¥TT…¥TT€¹€¹€¬€ü€¹€íA€Ž,5„€€í€üƒ¶…¥TT…¥TT€¹€¬€ü€€€üƒ·…¥TT…¥TT€¹€¬€ü€üƒ¸…¥TT…¥TT€¹€¬€ü €€üƒ¹…¥TT…¥TT€¹ €¬€ü €€ €üƒº…¥TT…¥TT€¹ €¬€ü  €üƒ»…¥TT…¥TT€¹€¹ €¬€ü$€¹€îA€Ž,5„€€î €üƒ¼…¥ZZ…¥ZZ€º€¬€ý €ýƒ½…¥ZZ…¥ZZ€º€º€¬€ý€º€ïA€Ž,5„€€ï€ýƒ¾…¥ZZ…¥ZZ€º€¬€ý€€€ýƒ¿…¥ZZ…¥ZZ€º€¬€ý€ýƒÀ…¥ZZ…¥ZZ€º€¬€ý €€ýƒÁ…¥ZZ…¥ZZ€º €¬€ý €€ €ýƒÂ…¥ZZ…¥ZZ€º €¬€ý  €ýƒÃ…¥ZZ…¥ZZ€º€º €¬€ý$€º€ðA€Ž,5„€€ð €ýƒÄ…¥``…¥``€»€¬€þ €þƒÅ…¥``…¥``€»€»€¬€þ€»€ñA€Ž,5„€€ñ€þƒÆ…¥``…¥``€»€¬€þ€€€þƒÇ…¥``…¥``€»€¬€þ€þƒÈ…¥``…¥``€»€¬€þ €€þƒÉ…¥``…¥``€» €¬€þ €€ €þƒÊ…¥``…¥``€» €¬€þ  €þƒË…¥``…¥``€»€» €¬€þ$€»€òA€Ž,5„€€ò €þƒÌ…¥ff…¥ff€’€¬€Í €ÍƒÍ…¥ff…¥ff€’€’€¬€Í€’€óA€Ž,5„€€ó€ÍƒÎ…¥ff…¥ff€’€¬€Í€€€ÍƒÏ…¥ff…¥ff€’€¬€Í€ÍƒÐ…¥ff…¥ff€’€¬€Í €€ÍƒÑ…¥ff…¥ff€’ €¬€Í €€ €ÍƒÒ…¥ff…¥ff€’ €¬€Í  €ÍƒÓ…¥ff…¥ff€’€’ €¬€Í$€’€ôA€Ž,5„€€ô €ÍƒÔ…¥vv …¥vv €­€¼€¬€ÿ €ÿƒÕ…¥vv …¥vv €­€¼€¼€¬€ÿ€¼€õA€Ž,5„€€õ€ÿƒÖ…¥vv …¥vv €­€¼€¬€ÿ€€€ÿƒ×…¥vv …¥vv €­€¼€¬€ÿ€ÿƒØ…¥vv …¥vv €­€¼€¬€ÿ €€ÿƒÙ…¥vv …¥vv €­€¼ €¬€ÿ €€ €ÿƒÚ…¥vv …¥vv €¶€¼‚´€ÿ…¸…¥vv€ÿƒÛ…¥xx…¥xx €¹€’ €¸€º      €¼€´€ÿ …¹…¥x x…º…¥xx…»…¥x!x*…¼…¥x,x6%…¥x8xA…½…¥xCxZ…¾…¥x\xm…¿…¥xox€‡…À…¥x€‰x€‘…Á…¥x€“x€ …Â…¥x€¢x€µ€ÿƒÜ…Ã…¥€¦ €¦…¥€¦ €¦€­€¼€’€¤€ÿ€ÿƒÝ…Ä…¥€° €° …¥€° €° €­€¼ €¤€ÿ€ÿƒÞ…Å…¥€² €²#…¥€² €²#€­€¼ €¼€¤€ÿ…»…¥€²$€²-€ÿƒß…Æ…¥€¹ €¹…¥€¹ €¹€­€¼€¸€¤€ÿ€ÿƒà…Ç…¥€Á €Á…¥€Á €Á€­€¼€º€¤€ÿ€ÿƒá…È…¥€È €È$…¥€È €È$€­€¼ €¤€ÿ€ÿƒâ…É…¥€Ï €Ï'…¥€Ï €Ï'€­€¼€¼€¤€ÿ€ÿƒã…Ê…¥€Ò €Ò…¥€Ò €Ò€­€¼ €¤€ÿ€ÿƒä…Ë…¥€Ó €Ó%…¥€Ó €Ó%€­€¼ €¤€ÿ€ÿƒå…Ì…¥€Ô €Ô…¥€Ô €Ô€­€¼ €¤€ÿ€ÿƒæ…Í…¥€Ö €Ö…¥€Ö €Ö€­€¼€¹€¤€ÿ€ÿƒç…Î…¥€Ü €Ü …¥€Ü €Ü €­€¼€¹€¼€¤€ÿ…¹…¥€Ü!€Ü+€ÿƒè…Ï…¥€å €å%…¥€å €å%€­€¼ €¤€ÿ€ÿƒé…Ð…¥€ç €ç(…¥€ç €ç(€­€¼€¼€¤€ÿ€ÿƒê…Ñ…¥€é €é-…¥€é €é-€­€¼ €¤€ÿ€ÿƒë…Ò…¥€ê €ê…¥€ê €ê€­€¼ €¤€ÿ€ÿƒì…Ó…¥€ì €ì!…¥€ì €ì!€­€¼€¼€¤€ÿ€ÿƒí…Ô…¥€î €î3…¥€î €î3€­€¼ €¤€ÿ€ÿƒî…Õ…¥€ð €ð6…¥€ð €ð6€­€¼€¼€¤€ÿ€ÿƒï…Ö…¥€ò €ò …¥€ò €ò €­€¼ €¤€ÿ€ÿƒð…×…¥€ô €ô…¥€ô €ô€­€¼€¶€¤€ÿ…Ø€ÿƒñ…¥vv …¥vv €­€¼ €¬€ÿ  €ÿƒò…¥vv …¥vv €­€¼€¼ €¬€ÿ$€¼€öA€Ž,5„€€ö €ÿƒó…¥€ü€ü…¥€ü€üC€¬U Uƒô…¥€ü€ü…¥€ü€üCC€¬UC€÷A€Ž,5„€€÷Uƒõ…¥€ü€ü…¥€ü€üC€¬U€€Uƒö…¥€ü€ü…¥€ü€üC€¬UUƒ÷…¥€ü€ü…¥€ü€üC€¬U €Uƒø…¥€ü€ü…¥€ü€üC €¬U €€ Uƒù…Ù…¥€ÿ €ÿ…¥€ÿ €ÿC€¤UUƒú…Ú…¥…¥C€´U…ÚUƒû…¥€ü€ü…¥€ü€üC €¬U  Uƒü…¥€ü€ü…¥€ü€üCC €¬U$C€øA€Ž,5„€€ø Uƒý…¥  …¥  €½€¬ ƒþ…¥  …¥  €½€½€¬€½€ùA€Ž,5„€€ùƒÿ…¥  …¥  €½€¬€€„…¥  …¥  €½€¬„…¥  …¥  €½€¬ €„…¥  …¥  €½ €¬ €€ „…Ü…¥ …¥ €½ €¤„…Ý…¥ …¥ €½ €¤„…Þ…¥ $…¥ $€½ €¤„…¥  …¥  €½ €¬  „…¥  …¥  €½€½ €¬$€½€úA€Ž,5„€€ú „…¥…¥€­€¾€¬ „ …¥…¥€­€¾€¾€¬€¾€ûA€Ž,5„€€û„ …¥…¥€­€¾€¬€€„ …¥…¥€­€¾€¬„ …¥…¥€­€¾€¬ €„ …¥…¥€­€¾ €¬ €€ „…¥…¥€—€¾‚´…¸…¥„…¥  …¥  C€½  €ˆ€»  €¾€´…à…¥ …á…¥  !…â…¥ 1 <…»…¥ C L…ã…¥ S \…ä…¥ m w…å…¥ €‰ €š…æ…¥ €¢ €µ„…ç…¥8 8…¥8 8€­€¾ €¤…è„…Ä…¥: : …¥: : €­€¾ €¤…é„…ê…¥< <…¥< <€­€¾€ˆ€¤…ë„…ì…¥D D…¥D D€­€¾€½€¤…í„…î…¥N N…¥N N€­€¾C€¤…ï„…ð…¥V V$…¥V V$€­€¾ €¤…ñ„…ò…¥Y Y…¥Y Y€­€¾€»€¤…ó„…ô…¥_ _"…¥_ _"€­€¾ €¤…õ„…×…¥d d…¥d d€­€¾€—€¤…ö„…¥…¥€­€¾ €¬  „…¥…¥€­€¾€¾ €¬$€¾€üA€Ž,5„€€ü „…¥hh…¥hh€­€¿€¬ „…¥hh…¥hh€­€¿€¿€¬€¿€ýA€Ž,5„€€ý„…¥hh…¥hh€­€¿€¬€€„…¥hh…¥hh€­€¿€¬„…¥hh…¥hh€­€¿€¬ €„ …¥hh…¥hh€­€¿ €¬ €€ „!…¥hh…¥hh€¶€¿‚´…¸…¥hh„"…¥jj…¥jj    €¿€´…ø…¥j j…ù…¥jj/…ú…¥j1jM…û…¥jOje„#…ü…¥p p …¥p p €­€¿ €¤„$…ý…¥q q…¥q q€­€¿ €¤„%…þ…¥u u0…¥u u0€­€¿ €¤„&…ÿ…¥z z*…¥z z*€­€¿ €¤„'†…¥}}9…¥}}9€¶€¤†„(…×…¥€ €…¥€ €€­€¿€¶€¤†„)…¥hh…¥hh€­€¿ €¬  „*…¥hh…¥hh€­€¿€¿ €¬$€¿€þA€Ž,5„€€þ „+†…¥ŠŠ…¥ŠŠ€¤€ù„,†…¥#…¥#€ÿ€”…¥01€”€•P€ÿ€À€¤€”…¥01€”€•P†…¥$&†…¥(.€Ö…¥89€ù„-† …¥““…¥““€”€•P€¤€”€•P†…¥““€Ö…¥““† €ù„.…¥šš…¥šš€Á€¬ „/…¥šš…¥šš€Á€Á€¬€ÁA€Ž,5„€„0…¥šš…¥šš€Á€¬€€„1…¥šš…¥šš€Á€¬„2…¥šš…¥šš€Á€¬ €„3…¥šš…¥šš€Á €¬ €€ „4…¥šš…¥šš€Á €¬  „5…¥šš…¥šš€Á€Á €¬$€ÁA€Ž,5„€ „6…¥¤¤…¥¤¤f€¬€• €•„7…¥¤¤…¥¤¤ff€¬€•fA€Ž,5„€€•„8…¥¤¤…¥¤¤f€¬€•€€€•„9…¥¤¤…¥¤¤f€¬€•€•„:…¥¤¤…¥¤¤f€¬€• €€•„;…¥¤¤…¥¤¤f €¬€• €€ €•„<† …¥¦ ¦…¥¦ ¦f€¤€•€•„=† …¥§ §…¥§ §f€Á€¤€•€•„>…¥¤¤…¥¤¤f €¬€•  €•„?…¥¤¤…¥¤¤ff €¬€•$fA€Ž,5„€ €•„@…¥¬¬…¥¬¬€Â€¬ „A…¥¬¬…¥¬¬€Â€Â€¬€ÂA€Ž,5„€„B…¥¬¬…¥¬¬€Â€¬€€„C…¥¬¬…¥¬¬€Â€¬„D…¥¬¬…¥¬¬€Â€¬ €„E…¥¬¬…¥¬¬€Â €¬ €€ „F†…¥® ®…¥® ®€Â€¤„G…¥¬¬…¥¬¬€Â €¬  „H…¥¬¬…¥¬¬€Â€Â €¬$€ÂA€Ž,5„€ „I†…¥´´…¥´´€¤†…¥´´€ù„J†…¥¹¹…¥¹¹f€¤€ù„K†…¥»»…¥»»f€¤€ù„L†…¥¼¼…¥¼¼&f€Â€¤À…¥¼¼†…¥¼$¼)€ù„M†…¥½½…¥½½ff€¤€ù„N†…¥ÀÀ…¥ÀÀf€Áf€¤†…¥À'À(†…¥À)À0€ù„O†…¥ÃÃ$…¥ÃÃ$€”…¥Ã2ÃS„€Ã €¤€”…¥Ã2ÃS†…¥Ã&Ã'€ù„P…¥†e†e…¥†e†e€‡€¬€À €À„Q…¥†e†e…¥†e†e€‡€‡€¬€À€‡ A€Ž,5„€ €À„R…¥†e†e…¥†e†e€‡€¬€À€€€À„S…¥†e†e…¥†e†e€‡€¬€À€À„T…¥†e†e…¥†e†e€‡€¬€À €€À„U…¥†e†e…¥†e†e€‡ €¬€À €€ €À„V…¥‡Q‡Q…¥‡Q‡Q€Ä€¬ „W…¥‡Q‡Q…¥‡Q‡Q€Ä€Ä€¬€Ä A€Ž,5„€ „X…¥‡Q‡Q…¥‡Q‡Q€Ä€¬€€„Y…¥‡Q‡Q…¥‡Q‡Q€Ä€¬„Z…¥‡Q‡Q…¥‡Q‡Q€Ä€¬ €„[…¥‡Q‡Q…¥‡Q‡Q€Ä €¬ €€ „\…¥‰‰…¥‰‰€Å€¬  „]…¥‰‰…¥‰‰€Å€¬  € „^…¥‰‰…¥‰‰€Å €¬  €€  „_…¥ŒHŒH …¥ŒHŒH `€¬€‹ €‹„`…¥ŒHŒH …¥ŒHŒH ``€¬€‹` A€Ž,5„€ €‹„a…¥ŒHŒH …¥ŒHŒH `€¬€‹€€€‹„b…¥ŒHŒH …¥ŒHŒH `€¬€‹€‹„c…¥ŒHŒH …¥ŒHŒH `€¬€‹ €€‹„d…¥ŒHŒH …¥ŒHŒH ` €¬€‹ €€ €‹„e…¥ŽŽ…¥ŽŽ€”€¬€Ï €Ï„f…¥ŽŽ…¥ŽŽ€”€”€¬€Ï€” A€Ž,5„€ €Ï„g…¥ŽŽ…¥ŽŽ€”€¬€Ï€€€Ï„h…¥ŽŽ…¥ŽŽ€”€¬€Ï€Ï„i…¥ŽŽ…¥ŽŽ€”€¬€Ï €€Ï„j…¥ŽŽ…¥ŽŽ€” €¬€Ï €€ €Ï„k…¥››…¥››r€¬€¡ €¡„l…¥››…¥››rr€¬€¡r A€Ž,5„€ €¡„m…¥››…¥››r€¬€¡€€€¡„n…¥››…¥››r€¬€¡€¡„o…¥››…¥››r€¬€¡ €€¡„p…¥››…¥››r €¬€¡ €€ €¡„q…¥  …¥  t€¬€£ €£„r…¥  …¥  tt€¬€£tA€Ž,5„€€£„s…¥  …¥  t€¬€£€€€£„t…¥  …¥  t€¬€£€£„u…¥  …¥  t€¬€£ €€£„v…¥  …¥  t €¬€£ €€ €£„w…¥©©…¥©©€Æ€¬   „x…¥©©…¥©©€Æ€Æ€¬ €ÆA€Ž,5„€ „y…¥©©…¥©©€Æ€¬ €€ „z…¥©©…¥©©€Æ€¬  „{…¥©©…¥©©€Æ€¬  € „|…¥©©…¥©©€Æ €¬  €€  „}…¥´´…¥´´€Ç€¬   „~…¥´´…¥´´€Ç€Ç€¬ €ÇA€Ž,5„€ „…¥´´…¥´´€Ç€¬ €€ „€…¥´´…¥´´€Ç€¬  „…¥´´…¥´´€Ç€¬  € „‚…¥´´…¥´´€Ç €¬  €€  „ƒ…¥Ž$Ž$…¥Ž$Ž$€ƒ€¬€¼ €¼„„…¥Ž$Ž$…¥Ž$Ž$€ƒ€ƒ€¬€¼€ƒA€Ž,5„€€¼„……¥Ž$Ž$…¥Ž$Ž$€ƒ€¬€¼€€€¼„†…¥Ž$Ž$…¥Ž$Ž$€ƒ€¬€¼€¼„‡…¥Ž$Ž$…¥Ž$Ž$€ƒ€¬€¼ €€¼„ˆ…¥Ž$Ž$…¥Ž$Ž$€ƒ €¬€¼ €€ €¼„‰…¥Ž5Ž5 …¥Ž5Ž5 €‰€¬€Â €Â„Š…¥Ž5Ž5 …¥Ž5Ž5 €‰€‰€¬€Â€‰A€Ž,5„€€Â„‹…¥Ž5Ž5 …¥Ž5Ž5 €‰€¬€Â€€€Â„Œ…¥Ž5Ž5 …¥Ž5Ž5 €‰€¬€Â€Â„…¥Ž5Ž5 …¥Ž5Ž5 €‰€¬€Â €€Â„Ž…¥Ž5Ž5 …¥Ž5Ž5 €‰ €¬€Â €€ €Â„…¥ŽVŽV…¥ŽVŽV€È€¬   „…¥ŽVŽV…¥ŽVŽV€È€È€¬ €ÈA€Ž,5„€ „‘…¥ŽVŽV…¥ŽVŽV€È€¬ €€ „’…¥ŽVŽV…¥ŽVŽV€È€¬  „“…¥ŽVŽV…¥ŽVŽV€È€¬  € „”…¥ŽVŽV…¥ŽVŽV€È €¬  €€  „•€¸…¥Ö Ö…¥Ö Ö€€¤€Ê†"€Ê„–†#…¥Ø Ø…¥Ø Ø€€¤€Ê†$€Ê„—†%…¥Ú Ú…¥Ú Ú€€¤€Ê†&€Ê„˜†'…¥Ü Ü?…¥Ü Ü?€€¤€Ê†(€Ê„™†)…¥ß ß,…¥ß ß,€€¤€Ê†*€Ê„š†+…¥á á…¥á ဠ €¤€Ê†,…¥áá0†-…¥á2áF€Ê„›8…¥ú ú…¥ú ú€ €¤€Ê†.€Ê„œ†/…¥‚ ‚…¥‚ ‚€a€¤€Ê†0€Ê„†1…¥‚ ‚ …¥‚ ‚ €<€¤€Ê†2€Ê„ž†3…¥‚ ‚…¥‚ ‚€g€¤€Ê†4€Ê„Ÿ†5…¥‚ ‚…¥‚ ‚€€¤€Ê†6€Ê„ †7…¥‚ ‚…¥‚ ‚€€¤€Ê†8…¥‚‚†9€Ê„¡†:…¥‚! ‚!"…¥‚! ‚!"€;€¤€Ê†;€Ê„¢†<…¥‚$ ‚$…¥‚$ ‚$€€É€¤€Ê†>€Ê„£†?…¥‚' ‚'…¥‚' ‚'€C€¤€Ê†@€Ê„¤†A…¥‚* ‚*…¥‚* ‚*€&€¤€Ê†B€Ê„¥†C…¥‚- ‚-…¥‚- ‚-€B€¤€Ê†D€Ê„¦†E…¥‚0 ‚0…¥‚0 ‚0€?€¤€Ê†F€Ê„§†G…¥‚3 ‚3…¥‚3 ‚3€ €¤€Ê†H€Ê„¨†I…¥‚6‚6$…¥‚6‚6$€Á€¤€Ê†…¥‚6%‚6'†J…¥‚6(‚6)†K€Ê„©†L…¥‚< ‚<+…¥‚< ‚<+€€¤€Ê†M€Ê„ª€ …¥‚B ‚B…¥‚B ‚B€ €¤€Ê€Š…¥‚B‚B†N€Ê„«†O…¥‚E ‚E…¥‚E ‚E€€¤€Ê†P€Ê„¬†Q…¥‚H ‚H…¥‚H ‚H€€¤€Ê†R€Ê„­†S…¥‚K ‚K…¥‚K ‚K€ €¤€Ê†T€Ê„®†U…¥‚N ‚N"…¥‚N ‚N"€€‡€¤€Ê†V€Ê„¯†W…¥‚Q ‚Q…¥‚Q ‚Q€€È€¤€Ê†Z€Ê„°†[…¥‚T ‚T…¥‚T ‚T€€Â€¤€Ê†\€Ê„±†]…¥‚W ‚W…¥‚W ‚W€€‡€¤€Ê†^€Ê„²…ý…¥‚Z ‚Z…¥‚Z ‚Z€ €¤€Ê†_€Ê„³…ü…¥‚] ‚] …¥‚] ‚] € €¤€Ê†`€Ê„´†a…¥‚` ‚`…¥‚` ‚`€ €¤€Ê†b€Ê„µ†c…¥‚c ‚c…¥‚c ‚c€ €¤€Ê†d€Ê„¶†e…¥‚g ‚g…¥‚g ‚g€ €¤€Ê†f€Ê„·†g…¥‚n ‚n …¥‚n ‚n € €¤€Ê†h€Ê„¸†i…¥‚t ‚t"…¥‚t ‚t"€ €¤€Ê†j€Ê„¹†k…¥‚z ‚z%…¥‚z ‚z%€ €¤€Ê†l€Ê„º†m…¥‚ ‚…¥‚ ‚€ €¤€Ê†n€Ê„»†o…¥‚ˆ ‚ˆ…¥‚ˆ ‚ˆ€f€¤€Ê†p€Ê„¼†q…¥‚‹ ‚‹…¥‚‹ ‚‹€f€¤€Ê†r€Ê„½†s…¥‚’ ‚’…¥‚’ ‚’€A€¤€Ê†t€Ê„¾†u…¥‚ž ‚ž…¥‚ž ‚ž€7€¤€Ê†v€Ê„¿†w…¥‚¢ ‚¢…¥‚¢ ‚¢€7€¤€Ê†x€Ê„À†y…¥‚¨ ‚¨$…¥‚¨ ‚¨$€7€¤€Ê†z€Ê„Á†{…¥‚¬ ‚¬…¥‚¬ ‚¬€7€¤€Ê†|€Ê„†}…¥‚° ‚°%…¥‚° ‚°%€7€¤€Ê†~€Ê„Æ…¥‚³ ‚³…¥‚³ ‚³€7€¤€Ê†…¥‚³‚³†€€Ê„Ć…¥‚¶ ‚¶…¥‚¶ ‚¶€7€¤€Ê†…¥‚¶‚¶†‚€Ê„ņƒ…¥‚¹ ‚¹…¥‚¹ ‚¹€ €¤€Ê†„€Ê„Ɔ……¥‚¼ ‚¼…¥‚¼ ‚¼€€Ê€¤€Ê†‡€Ê„džˆ…¥‚ ‚Â…¥‚ ‚€6€¤€Ê†‰€Ê„ȆŠ…¥‚È ‚È…¥‚È ‚È€6€¤€Ê†‹€Ê„ɆŒ…¥‚Ë ‚Ë…¥‚Ë ‚Ë€6€¤€Ê†…¥‚Ë ‚Ë!†€Ê„ʆŽ…¥‚Ó‚Ó…¥‚Ó‚Ó€€¤€Ê†€Ê„ˆ…¥‚Õ‚Õ…¥‚Õ‚Õ€”€•P€Ë€€¤€Ê€”€•P†’…¥‚Õ‚Õ†“…¥‚Õ‚Õ"†”€Ê„̆•…¥‚Þ ‚Þ…¥‚Þ ‚Þ€€Ë€¤€Ê†–…¥‚Þ‚Þ†—€Ê„͆˜…¥‚à ‚à…¥‚à ‚à€ €¤€Ê†™€Ê„Î…Ú…¥‚â‚â…¥‚â‚ ´€Ê…ڀʄφš…¥‚å ‚å&…¥‚å ‚å&€€Ì€¤€Ê†œ€Ê„І…¥‚ë ‚ë…¥‚ë ‚ë€ €¤€Ê†ž€Ê„цŸ…¥‚ï ‚ï…¥‚ï ‚ï€€´€´€¤€Ê† €Ê„Ò†¡…¥‚ò ‚ò…¥‚ò ‚ò€€´€¤€Ê†¢€Ê„Ó†£…¥‚õ ‚õ…¥‚õ ‚õ€ €¤€Ê†¤€Ê„Ô†¥…¥‚ø ‚ø%…¥‚ø ‚ø%€ €¤€Ê†¦€Ê„Õ†§…¥‚ü ‚ü…¥‚ü ‚ü€ €¤€Ê†¨€Ê„Ö†©…¥ƒ ƒ#…¥ƒ ƒ#€ €¤€Ê†ª€Ê„׆«…¥ƒ ƒ…¥ƒ ƒ€ €¤€Ê†¬€Ê„؆­…¥ƒ ƒ#…¥ƒ ƒ#€ €¤€Ê†®€Ê„Ù†¯…¥ƒ ƒ "…¥ƒ ƒ "€ €¤€Ê†°€Ê„Ú†±…¥ƒ ƒ …¥ƒ ƒ € €¤€Ê†²€Ê„Û†³…¥ƒ ƒ…¥ƒ ƒ€ €¤€Ê†´€Ê„܆µ…¥ƒ ƒ…¥ƒ ƒ€ €¤€Ê†¶€Ê„݆·…¥ƒ ƒ…¥ƒ ƒ€ €¤€Ê†¸€Ê„Þ†¹…¥ƒ! ƒ!&…¥ƒ! ƒ!&€ €¤€Ê†º€Ê„߆»…¥ƒ( ƒ("…¥ƒ( ƒ("€ €¤€Ê†¼€Ê„à†½…¥ƒ/ ƒ/ …¥ƒ/ ƒ/ € €¤€Ê†¾€Ê„ᆿ…¥ƒ9 ƒ9-…¥ƒ9 ƒ9-€  €¤€Ê†À€Ê„â†Á…¥ƒ= ƒ=1…¥ƒ= ƒ=1€€¤€Ê†Â€Ê„ã†Ã…¥ƒB ƒB'…¥ƒB ƒB'€1€¤€Ê†Ä€Ê„ä†Å…¥ƒI ƒI'…¥ƒI ƒI'€\1€¤€Ê†Æ€Ê„å†Ç…¥ƒM ƒM5…¥ƒM ƒM5€111€¤€Ê†È€Ê„æ†É…¥ƒO ƒO1…¥ƒO ƒO1€1€¤€Ê†Ê€Ê„ç†Ë…¥ƒQ ƒQ%…¥ƒQ ƒQ%€11€¤€Ê†Ì€Ê„è†Í…¥ƒS ƒS)…¥ƒS ƒS)€11€¤€Ê†Î€Ê„é†Ï…¥ƒU ƒU…¥ƒU ƒU€1€¤€Ê†Ð€Ê„ê†Ñ…¥ƒe ƒe#…¥ƒe ƒe#€€È€¤€Ê†Ò€Ê„ë†Ó…¥ƒš ƒš/…¥ƒš ƒš/€€œ€¤€Ê†Ô€Ê„ì…þ…¥ƒ¡ ƒ¡0…¥ƒ¡ ƒ¡0€ €¤€Ê†Õ€Ê„í…ÿ…¥ƒ¤ ƒ¤*…¥ƒ¤ ƒ¤*€ €¤€Ê†Ö€Ê„î†×…¥ƒ§ ƒ§…¥ƒ§ ƒ§€<€¤€Ê†Ø…¥ƒ§ƒ§†Ù€Ê„ï†Ú…¥„.„.…¥„.„.€É11€¤ €Ö…¥„.)„.* „ð†Û…¥„/„/…¥„/„/€É1€¤ €Ö…¥„/)„/* „ñ†Ü…¥„0„0…¥„0„0€É11€¤ €Ö…¥„0)„0* „ò†Ý…¥„1„1%…¥„1„1%€É111€¤ €Ö…¥„1)„1* „ó†Þ…¥„2„2(…¥„2„2(€É €¤ †ß…¥„2)„2* „ô‚󅥄4„4…¥„4„4€É€¤  „õ†à…¥„’„’…¥„’„’€µ €¤€÷€÷„ö†á…¥„“„“ …¥„“„“ €µ €¤€÷€Š…¥„“"„“#†â…¥„“$„“)€÷„÷†ã…¥„¦ „¦…¥„¦ „¦€Í €¤„ø†å…¥„¾ „¾…¥„¾ „¾A7€¤S†…¥„¾„¾S„ù†æ…¥„ „Â…¥„ „ÂA7€¤S†…¥„„ÂS„ú†w…¥„à „Ã…¥„à „ÃA7€¤SS„û†{…¥„Ä „Ä…¥„Ä „ÄA7€¤SS„ü†}…¥„Å „Å%…¥„Å „Å%A7€¤SS„ý†ç…¥„Ï „Ï …¥„Ï „Ï €Î6€¤†…¥„Ï!„Ï"„þ†Š…¥„Ó „Ó…¥„Ó „Ó€Î6€¤„ÿ†Š…¥„Ý „Ý…¥„Ý „Ý€Ê6€¤…8…¥„õ„õ…¥„õ„õ6 €¤HH…†%…¥„ö„ö…¥„ö„ö6€¤HH…†é…¥„÷„÷…¥„÷„÷67€¤HH…†ê…¥„ø„ø…¥„ø„ø67€¤HH…†…¥„ù„ù…¥„ù„ù67€¤H†…¥„ù„ùH…†ë…¥„ú„ú…¥„ú„ú6 €¤HH…†]…¥… ……¥… …7€‡€¤II…†ì…¥… ……¥… …7<€¤II…†í…¥… ……¥… …7<€¤II… 8…¥… ……¥… …7 €¤II… †A…¥… ……¥… …7&€¤II… €Ç…¥… … …¥… … 7€¤II… …Ä…¥…! …! …¥…! …! 7 €¤II… †î…¥…" …"…¥…" …"7 €¤II…†ï…¥…# …#…¥…# …#7 €¤II…†ð…¥…$ …$…¥…$ …$7 €¤II…†ñ…¥…% …%…¥…% …%7€¤II…†3…¥…& …&…¥…& …&7g€¤II…†5…¥…( …(…¥…( …(7€¤II…†7…¥…) …)…¥…) …)7€¤I€Ö…¥…)…)I…†ò…¥…+ …+…¥…+ …+7`€¤II…†ó…¥…1 …1…¥…1 …17 €¤II……¥…C…C…¥…C…C€Á €;‚´M…à…¥…C…C†õ…¥…C7…C;†ö…¥…CM…CUM…†÷…¥…Z…Z'…¥…Z…Z';€Á€¤M†øM…†ù…¥…]…]#…¥…]…]#; €¤M†úM…†û…¥…c…c…¥…c…c;€€¤M†üM…†ý…¥…f…f0…¥…f…f0;E€¤M†þ…¥…f1…f6†ÿM…‡…¥…m…m'…¥…m…m';€€¤M‡…¥…m(…m.‡M…‡…¥…v…v…¥…v…v;,;€¤M…¥…v…v!‡M…‡…¥…z…z…¥…z…z; ;€¤M‡…¥…z…z‡M…‡…¥…~…~1…¥…~…~1;€ó€¥€¤M‡ M…‡ …¥……!…¥……!;€€¤M‡ M… ‡ …¥…„…„&…¥…„…„&;€€¤M‡M…!‡…¥…‡…‡/…¥…‡…‡/;€€¤M‡M…"‡…¥…Š…Š-…¥…Š…Š-;€€¤M‡M…#‡…¥…….…¥…….; €À,€¤M€Š…¥…/…0‡M…$‡…¥…•…•$…¥…•…•$;,€¤M‡M…%‡…¥…š…š$…¥…š…š$;,€¤MM…&‡…¥… … =…¥… … =;€€¤M‡M…'‡…¥…¬…¬1…¥…¬…¬1;€€¤M‡M…(‡…¥…²…²6…¥…²…²6;€Ä €¤M‡ M…)‡!…¥…¼…¼…¥…¼…¼;V€Ï €¤M‡#…¥…¼…¼ ‡$…¥…¼*…¼-‡%M…*‡&…¥…Ä…Ä&…¥…Ä…Ä&; €¤M‡'M…+‡(…¥…Ð…Ð8…¥…Ð…Ð8; €¤M‡)M…,‡*…¥…Ù…Ù5…¥…Ù…Ù5;,€¤M‡+M…-‡,…¥…ß…ß5…¥…ß…ß5;E€¤M‡-M….‡.…¥…î…î*…¥…î…î*€Á€ ;€¤‡0…¥…î+…î0‡1…¥…î1…î7†õ…¥…î8…î<…/‡2…¥…ï…ï/…¥…ï…ï/€Á;€¤‡0…¥…ï0…ï5…0‡3…¥…ó…ó&…¥…ó…ó&€ÐNN  B€¤‡5…¥…ó'…ó<‡6…¥…ó=…ó?‡7…¥…óV…óh‡8…¥…ói…ó{€Š…¥…ó|…ó}…1‡9…¥††"…¥††"€ÐNN  €‡f€€¤‡5…¥†#†8‡6…¥†:†<‡7…¥†T†f‡8…¥†h†z€Š…¥†|†}€‡:€Ñ‡;…¥†€€†€†€‡:€Ñ†…¥†€‰†€Ž…2‡<…¥†M†M&…¥†M†M&f€‡&g<;€€¤†…¥†M'†M,‡;…¥†M-†M3À…¥†M5†M7‡=…¥†M?†MB†Ø…¥†MC†MJ‡>…¥†MK†MP…3€Ç…¥†š †š…¥†š †š€¤%%…48…¥†› †›…¥†› †› €¤%%…5†A…¥†œ †œ…¥†œ †œ&€¤%%…6†/…¥†ž †ž…¥†ž †ža€¤%‡?%…7‡@…¥†  † …¥†  † €¤%‡A%…8‡B…¥†¢ †¢…¥†¢ †¢}€¤%‡C%…9…Ä…¥†¤ †¤ …¥†¤ †¤  €¤%‡D%…:…ì…¥†§ †§…¥†§ †§€½€¤%‡E%…;…ò…¥†© †©…¥†© †©€»€¤%‡F%…<…ô…¥†« †«"…¥†« †«" €¤%‡G%…=…ð…¥†­ †­$…¥†­ †­$ €¤%‡H%…>…ê…¥†¯ †¯…¥†¯ †¯€ˆ€¤%‡I%…?…ç…¥†± †±…¥†± †± €¤%‡J%…@…î…¥†³ †³…¥†³ †³C€¤%‡K%…A†m…¥†µ †µ…¥†µ †µ €¤%‡L%…B†1…¥†· †·…¥†· †·<€¤%‡M%…C†%…¥†¹ †¹…¥†¹ †¹€¤%‡N%…D‡O…¥†¼ †¼…¥†¼ †¼}€¤%‡P…¥†¼†¼ ‡Q%…E†Ž…¥†Á†Á…¥†Á†Á€¤%‡R%…F†…¥†Ç†Ç…¥†Ç†Ç€Ò€¤%†“…¥†Ç†Ç‡T%…G†•…¥†Í †Í…¥†Í †Í€Ò€¤%†–…¥†Í†Í‡U%…H†˜…¥†Ð †Ð…¥†Ð †Ð €¤%‡V%…I‡W…¥†Ó †Ó…¥†Ó †Ó €¤%‡X%…J‡Y…¥†Ù †Ù…¥†Ù †Ù&€¤%À…¥†Ù†Ù‡Z%…K‡[…¥†Ü †Ü…¥†Ü †Ü€½€¤%†ß…¥†Ü†Ü‡\%…L‡]…¥†Þ †Þ!…¥†Þ †Þ! €¤%†ß…¥†Þ"†Þ#‡^%…M‡_…¥†à †à…¥†à †à€ˆ€¤%†ß…¥†à†à‡`%…N‡a…¥†â †â…¥†â †â€»€¤%†ß…¥†â†â‡b%…O‡c…¥†ä †ä!…¥†ä †ä! €¤%†ß…¥†ä"†ä#‡d%…P‡e…¥†æ †æ#…¥†æ †æ# €¤%†ß…¥†æ$†æ%‡f%…Q…Ú…¥†è†è…¥†è†è€´%…Ú%…R‡g…¥‡" ‡"…¥‡" ‡"~€¤€·‡h€·…S‡i…¥‡$ ‡$…¥‡$ ‡$~€¤€·‡j€·…T‡@…¥‡' ‡'…¥‡' ‡'~€Ó€¤€·‡l€·…U‡m…¥‡( ‡(…¥‡( ‡(~€Ó€¤€·†8…¥‡(‡(‡n€·…V…¥‡]‡]…¥‡]‡]€Ä€Ï‚´‡o…¥‡]‡] ‡p…¥‡]9‡]G…W‡q…¥‡_ ‡_…¥‡_ ‡_€Ï€Ä€¤‡r…X‡s…¥‡a ‡a…¥‡a ‡a€Ï€¤‡t…Y8…¥‡i ‡i…¥‡i ‡i  €¤+‡u+…Z†/…¥‡k ‡k…¥‡k ‡k a€¤+‡v+…[€½…¥‡q ‡q…¥‡q ‡q €¤+‡w+…\†]…¥‡t ‡t…¥‡t ‡t €‡€¤+‡x+…]‡y…¥‡x ‡x…¥‡x ‡x  €¤+‡z+…^†ò…¥‡{ ‡{…¥‡{ ‡{ `€¤+‡{+…_‡|…¥‡Œ ‡Œ…¥‡Œ ‡Œ €¤+‡}+…`†A…¥‡Ž ‡Ž…¥‡Ž ‡Ž &€¤++…a‡~…¥‡˜ ‡˜!…¥‡˜ ‡˜!  €¤+‡+…b‡€…¥‡œ ‡œ…¥‡œ ‡œ €Ä€¤+‡+…c‡‚…¥‡¤ ‡¤…¥‡¤ ‡¤ €Ï€¤+‡ƒ+…d…È…¥‡ª ‡ª$…¥‡ª ‡ª$  €¤+‡„+…e…Ê…¥‡­ ‡­…¥‡­ ‡­  €¤+‡…+…f‡†…¥‡° ‡° …¥‡° ‡°  €¤+‡‡+…g‡ˆ…¥‡¶ ‡¶…¥‡¶ ‡¶ @€¤+‡‰+…h‡Š…¥‡¼ ‡¼…¥‡¼ ‡¼  €¤+‡‹+…i‡Œ…¥‡¿ ‡¿…¥‡¿ ‡¿  €¤+‡+…j‡Ž…¥‡Â ‡Â…¥‡Â ‡Â  €¤+‡+…k‡…¥‡Å ‡Å!…¥‡Å ‡Å!  €¤+‡‘+…l‡’…¥‡Ë ‡Ë…¥‡Ë ‡Ë  €¤+‡“+…m‡”…¥‡Î ‡Î…¥‡Î ‡Î  €¤+‡•+…n‡–…¥‡Ô ‡Ô…¥‡Ô ‡Ô  €¤+‡—+…o‡˜…¥‡Ú ‡Ú%…¥‡Ú ‡Ú%  €¤+‡™+…p†î…¥‡à ‡à…¥‡à ‡à  €¤+‡š+…q…Ï…¥‡ã ‡ã%…¥‡ã ‡ã%  €¤+‡›+…r…Ò…¥‡æ ‡æ…¥‡æ ‡æ  €¤+‡œ+…s…Ô…¥‡é ‡é3…¥‡é ‡é3  €¤+‡+…t…Ñ…¥‡í ‡í-…¥‡í ‡í-  €¤+‡ž+…u‡Ÿ…¥‡ð ‡ð'…¥‡ð ‡ð'  €¤+‡ +…v‡¡…¥‡ó ‡ó#…¥‡ó ‡ó#  €¤+‡¢+…w…Í…¥‡ö ‡ö…¥‡ö ‡ö €¹€¤+‡£+…x…Ã…¥‡ù ‡ù…¥‡ù ‡ù €’€¤+‡¤+…y…Ì…¥‡ü ‡ü…¥‡ü ‡ü  €¤++…z…Æ…¥‡ÿ ‡ÿ…¥‡ÿ ‡ÿ €¸€¤+‡¥+…{‡¦…¥ˆ ˆ…¥ˆ ˆ  €¤+‡§+…|…Ä…¥ˆ ˆ …¥ˆ ˆ   €¤+‡¨+…}†1…¥ˆ ˆ …¥ˆ ˆ  <€¤+‡©+…~†3…¥ˆ ˆ …¥ˆ ˆ  g€¤+‡ª+…†5…¥ˆ ˆ…¥ˆ ˆ €¤+‡«+…€†7…¥ˆ ˆ…¥ˆ ˆ €¤+†8…¥ˆˆ‡¬+…‡­…¥ˆ ˆ…¥ˆ ˆ €£€¤+‡®+…‚‡¯…¥ˆ ˆ…¥ˆ ˆ D€¤+‡°+…ƒ‡±…¥ˆ ˆ !…¥ˆ ˆ ! #€¤+‡²+…„‡³…¥ˆ& ˆ&…¥ˆ& ˆ& €¤+‡´+……‡µ…¥ˆ. ˆ.…¥ˆ. ˆ. €£€¤+‡¶+…††[…¥ˆ> ˆ>…¥ˆ> ˆ> €Å€¤+‡·+…‡‡¸…¥ˆH ˆH…¥ˆH ˆH  €¤+‡¹+…ˆ‡º…¥ˆN ˆN…¥ˆN ˆN €¤+‡»+…‰‡¼…¥ˆT ˆT…¥ˆT ˆT €¤+‡½+…Ї¾…¥ˆZ ˆZ…¥ˆZ ˆZ €¤+‡¿+…‹€¸…¥ˆc ˆc…¥ˆc ˆc €¤+‡À+…Œ†#…¥ˆp ˆp…¥ˆp ˆp €¤+‡Á+…‡Â…¥ˆ‹ ˆ‹…¥ˆ‹ ˆ‹ €¤+‡Ã+…އÄ…¥ˆ” ˆ”…¥ˆ” ˆ” €¤+‡Å+…†%…¥ˆ£ ˆ£…¥ˆ£ ˆ£ €¤+‡Æ+…‡Ç…¥ˆ¦ ˆ¦…¥ˆ¦ ˆ¦ €¹€¤+†ß…¥ˆ¦ˆ¦+…‘‡È…¥ˆ§ ˆ§'…¥ˆ§ ˆ§' €¤++…’‡É…¥ˆ¨ ˆ¨(…¥ˆ¨ ˆ¨( €¤++…“‡Ê…¥ˆ© ˆ©!…¥ˆ© ˆ©! €¤++…”‡Ë…¥ˆª ˆª6…¥ˆª ˆª6 €¤++…•‡Ì…¥ˆ« ˆ«…¥ˆ« ˆ« €¤+‡Í…¥ˆ«ˆ« +…–‡Î…¥ˆ¬ ˆ¬…¥ˆ¬ ˆ¬ €¤+€«…¥ˆ¬ˆ¬+…—‡Ï…¥ˆ­ ˆ­…¥ˆ­ ˆ­  €¤+€Š…¥ˆ­ˆ­+…˜†Ž…¥ˆ°ˆ°…¥ˆ°ˆ° €¤+‡Ð+…™†…¥ˆ³ˆ³…¥ˆ³ˆ³€Ô €¤+†“…¥ˆ³ˆ³‡Ò+…š†•…¥ˆ¶ ˆ¶…¥ˆ¶ ˆ¶ €Ô€¤+†–…¥ˆ¶ˆ¶‡Ó+…›†˜…¥ˆ¹ ˆ¹…¥ˆ¹ ˆ¹  €¤+‡Ô+…œ…Ú…¥ˆ»ˆ»…¥ˆ»ˆ» €´+…Ú+…‡Õ…¥‰ ‰…¥‰ ‰€ÕV€¤!!…ž‡×…¥‰ ‰…¥‰ ‰€Õ€¤!!…Ÿ‡Ø…¥‰ ‰…¥‰ ‰€Õ€¤!!… …Ú…¥‰‰…¥‰‰€Õ€´!…Ú!…¡‡Ù…¥‰‰$…¥‰‰$V€€€¤"‡#…¥‰%‰(‡Û…¥‰4‰8‡Ü…¥‰C‰D‡…¥‰J‰P‡Ý"…¢‡Þ…¥‰+‰+3…¥‰+‰+3V€€€¤"‡#…¥‰+4‰+7‡Û…¥‰+C‰+G‡Ü…¥‰+R‰+S‡…¥‰+Y‰+_‡ß"…£‡à…¥‰…‰……¥‰…‰…€Ö€€¤"‡á"…¤‡Õ…¥‰™‰™…¥‰™‰™€ÖV€¤"‡â"…¥‡ã…¥‰ž‰ž…¥‰ž‰ž€Ö€¤"‡ä"…¦†%…¥‰¢‰¢…¥‰¢‰¢€Ö€¤""…§‡å…¥‰¦‰¦%…¥‰¦‰¦%€Ö€¤"‡æ"…¨‡ç…¥‰«‰«&…¥‰«‰«&€Ö€¤"‡è"…©‡×…¥‰°‰°…¥‰°‰°€Ö€¤"‡é"…ª‡ê…¥‰³‰³…¥‰³‰³€Ö€€¤"‡ë"…«‡ì…¥‰»‰»*…¥‰»‰»*€Ö;€¤"‡í"…¬†:…¥‰¿‰¿'…¥‰¿‰¿'€Ö;€¤"‡î"…­…Ú…¥‰Â‰Â…¥‰Â‰Â€Ö€´"…Ú"…®‡ï…¥‰Ì ‰Ì…¥‰Ì ‰ÌD €¤VV…¯‡ð…¥‰Í ‰Í…¥‰Í ‰ÍD €¤VV…°‡ñ…¥‰Î ‰Î…¥‰Î ‰ÎD#€€¤VV…±‡ó…¥‰Ï ‰Ï…¥‰Ï ‰ÏD#€€¤VV…²‡ô…¥‰Ñ‰Ñ…¥‰Ñ‰ÑD€¤V€…•V…³‡ê…¥‰Û‰Û…¥‰Û‰ÛD€€¤VV…´‡à…¥‰æ‰æ…¥‰æ‰æD#€€¤VV…µ‡õ…¥‰ò‰ò…¥‰ò‰òD €¤V‡öV…¶…Ú…¥‰ô‰ô…¥‰ô‰ôD€´V…ÚV…·†Ñ…¥‰û ‰û#…¥‰û ‰û#D€È€¤V‡÷V…¸†Ó…¥‰ý ‰ý/…¥‰ý ‰ý/D€œ€¤V‡øV…¹€¸…¥‰ÿ ‰ÿ…¥‰ÿ ‰ÿD€¤V‡ùV…º†#…¥Š Š…¥Š ŠD€¤V‡úV…»†%…¥Š Š…¥Š ŠD€¤V‡ûV…¼†'…¥Š Š?…¥Š Š?D€¤V‡üV…½†)…¥Š Š,…¥Š Š,D€¤V‡ýV…¾8…¥Š Š …¥Š Š D €¤V‡þV…¿†/…¥Š Š …¥Š Š Da€¤V‡ÿV…À†1…¥Š Š…¥Š ŠD<€¤VˆV…Á†3…¥Š Š…¥Š ŠDg€¤VˆV…†5…¥Š Š…¥Š ŠD€¤VˆV…Æ:…¥Š Š"…¥Š Š"D;€¤VˆV…ĆL…¥Š Š+…¥Š Š+D€¤VˆV…ņ<…¥Š Š …¥Š Š D€É€¤VˆV…Ɔ?…¥Š" Š"…¥Š" Š"DC€¤VˆV…džA…¥Š$ Š$…¥Š$ Š$D&€¤VˆV…ȆC…¥Š& Š&…¥Š& Š&DB€¤VˆV…ɆE…¥Š( Š(…¥Š( Š(D?€¤Vˆ V…ʆG…¥Š* Š*…¥Š* Š*D €¤Vˆ V…Ë€ …¥Š/ Š/…¥Š/ Š/D €¤V€Š…¥Š/Š/ˆ V…̆O…¥Š1 Š1…¥Š1 Š1D€¤Vˆ V…͆Q…¥Š3 Š3…¥Š3 Š3D€¤Vˆ V…ΆS…¥Š4 Š4…¥Š4 Š4D €¤VV…φU…¥Š6 Š6"…¥Š6 Š6"D€‡€¤VˆV…ІW…¥Š8 Š8…¥Š8 Š8D€È€¤VˆV…ц[…¥Š: Š:…¥Š: Š:D€Â€¤VˆV…Ò†]…¥Š< Š<…¥Š< Š<D€‡€¤VˆV…Ó…ý…¥Š> Š>…¥Š> Š>D €¤VˆV…Ô…ü…¥Š@ Š@ …¥Š@ Š@ D €¤VˆV…Õ†a…¥ŠB ŠB…¥ŠB ŠBD €¤VˆV…Ö†c…¥ŠD ŠD…¥ŠD ŠDD €¤VˆV…׆o…¥ŠE ŠE…¥ŠE ŠEDf€¤VV…؆e…¥ŠH ŠH…¥ŠH ŠHD €¤VˆV…Ù†g…¥ŠJ ŠJ …¥ŠJ ŠJ D €¤VˆV…Ú†i…¥ŠL ŠL"…¥ŠL ŠL"D €¤VˆV…Û†k…¥ŠN ŠN%…¥ŠN ŠN%D €¤VˆV…܆q…¥ŠQ ŠQ…¥ŠQ ŠQDf€¤VˆV…݆s…¥ŠT ŠT…¥ŠT ŠTDA€¤VˆV…Þ†u…¥ŠW ŠW…¥ŠW ŠWD7€¤VˆV…߆w…¥ŠZ ŠZ…¥ŠZ ŠZD7€¤VˆV…à†{…¥Š] Š]…¥Š] Š]D7€¤VˆV…á†}…¥Š` Š`%…¥Š` Š`%D7€¤VˆV…â†y…¥Šd Šd$…¥Šd Šd$D7€¤Vˆ V…ㆅ¥Šf Šf…¥Šf ŠfD7€¤V†…¥ŠfŠfˆ!V…䆅¥Šh Šh…¥Šh ŠhD7€¤V†…¥ŠhŠhˆ"V…内…¥Šj Šj…¥Šj ŠjD€Ê€¤Vˆ#V…憈…¥Šl Šl…¥Šl ŠlD6€¤Vˆ$V…熊…¥Šn Šn…¥Šn ŠnD6€¤Vˆ%V…膌…¥Šp Šp…¥Šp ŠpD6€¤V†…¥Šp Šp!ˆ&V…醚…¥Šr Šr&…¥Šr Šr&D€Ì€¤Vˆ'V…ꆿ…¥Št Št-…¥Št Št-D  €¤Vˆ(V…ë†Á…¥Šv Šv1…¥Šv Šv1D€¤Vˆ)V…ì†Ã…¥Šy Šy'…¥Šy Šy'D1€¤Vˆ*V…í†Å…¥Š| Š|'…¥Š| Š|'D\1€¤Vˆ+V……¥Š~ Š~ …¥Š~ Š~ D €¤Vˆ,V……¥Š Š…¥Š ŠD €¤Vˆ-V…ð†©…¥Š„ Š„#…¥Š„ Š„#D €¤Vˆ.V…ñ†m…¥Š† І…¥Š† ІD €¤Vˆ/V…ò†Ç…¥Š‰ Љ5…¥Š‰ Љ5D111€¤Vˆ0V…ó†É…¥Š‹ Š‹1…¥Š‹ Š‹1D1€¤Vˆ1V…ô†Ë…¥Š Š%…¥Š Š%D11€¤Vˆ2V…õ†Í…¥Š Š)…¥Š Š)D11€¤Vˆ3V…ö†…¥Š’ Š’…¥Š’ Š’D €¤Vˆ4V…÷†Ÿ…¥Š• Š•…¥Š• Š•D€´€´€¤Vˆ5V…ø†¡…¥Š— Š—…¥Š— Š—D€´€¤Vˆ6V…ù†ƒ…¥Š™ Š™…¥Š™ Š™D €¤Vˆ7V…ú†£…¥Š› Š›…¥Š› Š›D €¤Vˆ8V…û†¥…¥Š Š%…¥Š Š%D €¤Vˆ9V…ü†«…¥Š  Š …¥Š  Š D €¤Vˆ:V…ý†­…¥Š£ Š£#…¥Š£ Š£#D €¤Vˆ;V…þ†¯…¥Š¥ Š¥"…¥Š¥ Š¥"D €¤Vˆ<V…ÿ†±…¥Š§ Ч…¥Š§ ЧD €¤Vˆ=V††µ…¥Š© Š©…¥Š© Š©D €¤Vˆ>V††·…¥Š« Š«…¥Š« Š«D €¤Vˆ?V††¹…¥Š® Š®&…¥Š® Š®&D €¤Vˆ@V††»…¥Š± б"…¥Š± б"D €¤VˆAV†…þ…¥Š³ г0…¥Š³ г0D €¤VˆBV†…ÿ…¥Šµ е*…¥Šµ е*D €¤VˆCV†‡ï…¥ŠÅ ŠÅ…¥ŠÅ ŠÅ1 €¤CC†‡ð…¥ŠÆ ŠÆ…¥ŠÆ ŠÆ1 €¤CC†‡ñ…¥ŠÇ ŠÇ…¥ŠÇ ŠÇ1# €¤CC† ‡ó…¥ŠÈ ŠÈ…¥ŠÈ ŠÈ1# €¤CC† ‡ê…¥ŠÊŠÊ…¥ŠÊŠÊ1 €¤CC† ‡à…¥ŠØŠØ…¥ŠØŠØ1 €¤CC† €½…¥Šæ Šæ…¥Šæ Šæ1€¤CC† ‡º…¥Šç Šç…¥Šç Šç1€¤CC†‡¼…¥Šè Šè…¥Šè Šè1€¤CC†‡¾…¥Šé Šé…¥Šé Šé1€¤CC†€¸…¥Šê Šê…¥Šê Šê1€¤CC††%…¥Šë Šë…¥Šë Šë1€¤CC†‡Ä…¥Šì Šì…¥Šì Šì1€¤CC†8…¥Ší Ší…¥Ší Ší1 €¤CC††]…¥Šï Šï…¥Šï Šï1€‡€¤CC†‡­…¥Šð Šð…¥Šð Šð1€£€¤CC†‡µ…¥Šñ Šñ…¥Šñ Šñ1€£€¤CC†‡y…¥Šò Šò…¥Šò Šò1 €¤CC††ò…¥Šó Šó…¥Šó Šó1`€¤CC††A…¥Šô Šô…¥Šô Šô1&€¤CC†‡Â…¥Šõ Šõ…¥Šõ Šõ1€¤CC††/…¥Šö Šö…¥Šö Šö1a€¤CC†‡~…¥Š÷ Š÷!…¥Š÷ Š÷!1 €¤CC†‡¸…¥Šø Šø…¥Šø Šø1 €¤CC††#…¥Šù Šù…¥Šù Šù1€¤CC††[…¥Šû Šû…¥Šû Šû1€Å€¤CC† ‡†…¥Šü Šü …¥Šü Šü 1€¤CC†!‡”…¥Šý Šý…¥Šý Šý1 €¤CC†"‡˜…¥Šþ Šþ%…¥Šþ Šþ%1 €¤CC†#‡ˆ…¥Šÿ Šÿ…¥Šÿ Šÿ1@€¤CC†$‡Š…¥‹ ‹…¥‹ ‹1 €¤CC†%‡Ž…¥‹ ‹…¥‹ ‹1 €¤CC†&‡’…¥‹ ‹…¥‹ ‹1 €¤CC†'†î…¥‹ ‹…¥‹ ‹1 €¤CC†(…Ñ…¥‹ ‹-…¥‹ ‹-1 €¤CC†)…Ï…¥‹ ‹%…¥‹ ‹%1 €¤CC†*…È…¥‹ ‹$…¥‹ ‹$1 €¤CC†+…Ê…¥‹ ‹…¥‹ ‹1 €¤CC†,‡¡…¥‹ ‹ #…¥‹ ‹ #1 €¤CC†-‡Ÿ…¥‹ ‹ '…¥‹ ‹ '1 €¤CC†.…Í…¥‹ ‹ …¥‹ ‹ 1€¹€¤CC†/…Ã…¥‹ ‹ …¥‹ ‹ 1€’€¤CC†0…Ì…¥‹ ‹ …¥‹ ‹ 1 €¤CC†1‡|…¥‹ ‹…¥‹ ‹1€¤CC†2…Æ…¥‹ ‹…¥‹ ‹1€¸€¤CC†3‡¦…¥‹ ‹…¥‹ ‹1 €¤CC†4…Ä…¥‹ ‹ …¥‹ ‹ 1 €¤CC†5†1…¥‹ ‹…¥‹ ‹1<€¤CC†6†3…¥‹ ‹…¥‹ ‹1g€¤CC†7†5…¥‹ ‹…¥‹ ‹1€¤CC†8‡¯…¥‹ ‹…¥‹ ‹1D€¤CC†9‡±…¥‹ ‹!…¥‹ ‹!1#€¤CC†:‡³…¥‹ ‹…¥‹ ‹1€¤CC†;…Ú…¥‹‹…¥‹‹1€´C…ÚC†<ˆD…¥‹ ‹…¥‹ ‹z#€¤€©€©†=ˆE…¥‹ ‹ …¥‹ ‹ z€¤€©€©†>ˆF…¥‹! ‹!…¥‹! ‹!z€€¤€©€©†?ˆD…¥‹% ‹%…¥‹% ‹%c#€¤€€†@ˆG…¥‹& ‹&…¥‹& ‹&c€¤€€†AˆF…¥‹' ‹'…¥‹' ‹'c€€¤€€†B…Ú…¥‹U‹U…¥‹U‹U€´ …Ú †C‡ê…¥‹Ã‹Ã…¥‹Ã‹ÃV€×€¤mm†DˆI…¥‹È‹È$…¥‹È‹È$V €¤mm†EˆJ…¥‹Ë‹Ë…¥‹Ë‹ËV€¤mˆK…¥‹Ë‹Ë,ˆLm†FˆM…¥‹Ò ‹Ò…¥‹Ò ‹ÒV €¤mˆNm†GˆO…¥‹Ó ‹Ó…¥‹Ó ‹ÓV €¤m†8…¥‹Ó‹ÓˆPm†H‡×…¥‹Ô‹Ô…¥‹Ô‹ÔV€¤mm†I† …¥‹Ö‹Ö…¥‹Ö‹ÖV€¤mˆQm†J†/…¥‹Ø‹Ø…¥‹Ø‹ØVa€¤mˆRm†KˆS…¥‹Ú‹Ú…¥‹Ú‹ÚV€¤mˆTm†LˆU…¥‹Ý‹Ý"…¥‹Ý‹Ý"V €¤mˆVm†MˆW…¥‹à‹à!…¥‹à‹à!VN€¤m€«…¥‹à"‹à$ˆXm†NˆY…¥‹ä‹ä…¥‹ä‹äV€¤mˆZm†Oˆ[…¥‹ç‹ç"…¥‹ç‹ç"V€¤mˆ\m†Pˆ]…¥‹ê‹ê…¥‹ê‹êV €¤mˆ^m†Q‚å…¥‹î‹î…¥‹î‹îV€€¤mˆ_m†Rˆ`…¥‹ñ‹ñ…¥‹ñ‹ñV%D€¤mˆbm†Sˆc…¥‹ô‹ô'…¥‹ô‹ô'V€€¤mˆdm†Tˆe…¥‹÷‹÷.…¥‹÷‹÷.V€€¤mˆfm†U‚󅥋ú‹ú…¥‹ú‹ú€Ø€×V€¤m†…¥‹ú‹ú€Ö…¥‹ú‹úˆhm†Vˆi…¥ŒŒ…¥ŒŒ€ØV€¤m†…¥Œ Œ"ˆjm†Wˆk…¥Œ Œ…¥Œ ŒVV€¤mˆl…¥ŒŒˆmm†Xˆn…¥Œ Œ…¥Œ ŒV€¤mˆom†Yˆp…¥ŒŒ…¥ŒŒVD€¤mˆq…¥ŒŒ ˆr…¥Œ*Œ.ˆsm†Zˆt…¥ŒŒ&…¥ŒŒ&V €¤m€‹…¥Œ'Œ*€Œ…¥Œ2Œ5ˆum†[…Ú…¥Œ Œ …¥Œ Œ V€´m…Úm†\ˆv…¥Œ€ Œ€…¥Œ€ Œ€€Š€›€¤€Ä€Ä†]ˆw…¥Œ Œ…¥Œ Œ€Šn€¤€Ä€Ä†^ˆx…¥Œ« Œ«…¥Œ« Œ«o €¤€ž€ž†_ˆy…¥Œ¬ Œ¬…¥Œ¬ Œ¬o€¤€ž€ž†`ˆz…¥Œ­ Œ­…¥Œ­ Œ­oj€¤€ž€ž†aˆ{…¥Œ´ Œ´!…¥Œ´ Œ´!€¥€¦€¤€à€à†bˆ|…¥Œµ Œµ…¥Œµ Œµ€¥1€¤€à€à†cˆ}…¥Œ¶ Œ¶…¥Œ¶ Œ¶€¥€¤€à€à†dˆ~…¥Œ½ Œ½…¥Œ½ Œ½€¤**†eˆ…¥Œ¾ Œ¾…¥Œ¾ Œ¾€¤**†fˆ€…¥Œ¿ Œ¿…¥Œ¿ Œ¿€¤**†gˆ…¥ŒÀ ŒÀ…¥ŒÀ ŒÀ €¤**†hˆ‚…¥ŒÁ ŒÁ…¥ŒÁ ŒÁ€¤**†iˆƒ…¥ŒÂ ŒÂ…¥ŒÂ ŒÂC€¤**†jˆ„…¥ŒÃ ŒÃ…¥ŒÃ ŒÃ€¤**†k†A…¥Ô Ô…¥Ô Ôp&€¤€Ÿ€Ÿ†l€Ç…¥ÛÛ…¥ÛÛ€Ž€¤€È€È†mˆ……¥ÜÜ…¥Ü܀ހ¤€È€È†nˆ†…¥ÝÝ…¥ÝÝ€Ž€¤€È€È†oˆ‡…¥ÞÞ…¥ÞÞ€Ž€¤€È€È†pˆˆ…¥ßß…¥ßß€Ž€Ù€¤€È€È†qˆŠ…¥àà…¥àà€Ž€¤€È€È†r€½…¥ç ç…¥ç ç€Ù€¤''†s€½…¥ð ð…¥ð ð€Ú;€¤(ˆŒ(†t…¥†e†e…¥†e†e€‡ €¬€À  €À†u…¥†e†e…¥†e†e€‡€‡ €¬€À$€‡A€Ž,5„€ €À†v…¥‡Q‡Q…¥‡Q‡Q€Ä €¬  †w…¥‡Q‡Q…¥‡Q‡Q€Ä€Ä €¬$€ÄA€Ž,5„€ †x…¥‰‰…¥‰‰€Å €¬    †y…¥‰‰…¥‰‰€Å€Å €¬ $€ÅA€Ž,5„€  †z…¥ŒHŒH …¥ŒHŒH ` €¬€‹  €‹†{…¥ŒHŒH …¥ŒHŒH `` €¬€‹$`A€Ž,5„€ €‹†|…¥ŽŽ…¥ŽŽ€” €¬€Ï  €Ï†}…¥ŽŽ…¥ŽŽ€”€” €¬€Ï$€”A€Ž,5„€ €Ï†~…¥››…¥››r €¬€¡  €¡†…¥››…¥››rr €¬€¡$rA€Ž,5„€ €¡†€…¥  …¥  t €¬€£  €£†…¥  …¥  tt €¬€£$tA€Ž,5„€ €£†‚…¥©©…¥©©€Æ €¬    †ƒ…¥©©…¥©©€Æ€Æ €¬ $€ÆA€Ž,5„€  †„…¥´´…¥´´€Ç €¬    †……¥´´…¥´´€Ç€Ç €¬ $€ÇA€Ž,5„€  ††…¥Ž$Ž$…¥Ž$Ž$€ƒ €¬€¼  €¼†‡…¥Ž$Ž$…¥Ž$Ž$€ƒ€ƒ €¬€¼$€ƒA€Ž,5„€ €¼†ˆ…¥Ž5Ž5 …¥Ž5Ž5 €‰ €¬€Â  €Â†‰…¥Ž5Ž5 …¥Ž5Ž5 €‰€‰ €¬€Â$€‰A€Ž,5„€ €Â†Š…¥ŽVŽV…¥ŽVŽV€È €¬    †‹…¥ŽVŽV…¥ŽVŽV€È€È €¬ $€È A€Ž,5„€   †Œˆ…¥Ž„Ž„ …¥Ž„Ž„  €¤†8…¥Ž„Ž„€ù†ˆŽ…¥Ž…Ž……¥Ž…Ž… €¤†8…¥Ž…Ž…€ù†Žˆ…¥Ž†ކ …¥Ž†ކ  €¤†8…¥Ž†ކ€ù†ˆ…¥Ž‡އ…¥Ž‡އ €¤†8…¥Ž‡އ€ù†ˆ‘…¥ŽŽŽŽ…¥ŽŽŽŽ€Ú€Ú]]€¤]…¥ŽŽŽŽ€ù†‘ˆ’…¥ŽŽ…¥ŽŽ!€”€•P"€”€•P!€Ú"€Ú!]"]€¤€”€•P€”€•P]…¥ŽŽˆ“…¥ŽŽ€ù†’ˆ”…¥ŽŽ…¥ŽŽ#€”€•P$€”€•P#€Ú€Ú$#]]$€¤€”€•P€”€•P]…¥ŽŽˆ“…¥ŽŽ€ù†“ˆ•…¥Ž‘Ž‘…¥Ž‘Ž‘%€”€•P&€”€•P%€Ú&%]&€¤€”€•P€”€•P]…¥Ž‘Ž‘ˆ“…¥Ž‘Ž‘€ù†”ˆ–…¥Ž—Ž— …¥Ž—Ž—  €¤ˆ—…¥Ž—Ž—ˆ˜…¥Ž—Ž—€ù†•ˆ™…¥ŽšŽš…¥ŽšŽš €¤ˆš…¥ŽšŽšˆ›…¥ŽšŽš ˆœ€ù†–ˆ…¥ŽžŽž …¥ŽžŽž    €¤ˆ—…¥Žž Žžˆ˜…¥ŽžŽžˆž€ù†—ˆŸ…¥Ž¡Ž¡ …¥Ž¡Ž¡ VV €¤ˆ …¥Ž¡ Ž¡ˆ¡…¥Ž¡Ž¡ˆ¢€ù†˜ˆ£…¥Ž©Ž©…¥Ž©Ž©1 €¤ˆ¤…¥Ž©Ž©ˆ¥€ù†™ˆ¦…¥Ž² ޲…¥Ž² ޲z6€¤€©€©†š†1…¥Ž· Ž·…¥Ž· Ž·z<€¤€©€©†›8…¥Ž¸ ޏ…¥Ž¸ ޏz €¤€©€©†œˆ§…¥Ž¹ ޹…¥Ž¹ ޹z€¤€©€©††w…¥ŽÀ ŽÀ…¥ŽÀ ŽÀz7€¤€©€©†ž‡i…¥ŽÁ ŽÁ…¥ŽÁ ŽÁz€¤€©€©†Ÿ†å…¥ŽÂ ŽÂ…¥ŽÂ ŽÂz7€¤€©†…¥ŽÂŽÂ€©† ˆ¨…¥ŽÅ ŽÅ…¥ŽÅ ŽÅc7€¤€€†¡†ì…¥ŽÊ ŽÊ…¥ŽÊ ŽÊc<€¤€€†¢8…¥ŽË ŽË…¥ŽË ŽËc €¤€€†£ˆ§…¥ŽÍ ŽÍ…¥ŽÍ ŽÍc€¤€€†¤ˆ©…¥ŽÙŽÙ…¥ŽÙŽÙ#c€¤ˆª…¥ŽÙŽÙ]…¥ŽÙŽÙ€ù†¥ˆ«…¥ŽÚŽÚ…¥ŽÚŽÚ#z€¤ˆª…¥ŽÚŽÚˆ¬…¥ŽÚŽÚ€ù†¦ˆ­…¥ŽÝŽÝ …¥ŽÝŽÝ #€D€¤€Ö…¥ŽÝŽÝ€ù†§ˆ®…¥ŽÞŽÞ…¥ŽÞŽÞ€ÖD€¤€Ö…¥ŽÞŽÞ€ù†¨ˆ¯…¥ŽßŽß…¥ŽßŽß#€€ÖD€¤€Ö…¥ŽßŽßˆ°…¥ŽßŽß"€ù†©ˆ±…¥ŽàŽà…¥ŽàŽàD)#€€Ö€¤€Ö…¥Žà Žà!€ù†ªˆ³…¥ŽêŽê…¥ŽêŽê#€D€¤€Ö…¥ŽêŽê€ù†«ˆ´…¥ŽëŽë…¥ŽëŽëV€Ö€¤‡#…¥ŽëŽëˆµ…¥ŽëŽë€ù†¬ˆ¶…¥ŽìŽì…¥ŽìŽì€Ö€Ö€¤ˆ·…¥ŽìŽì%À…¥Žì9Žì;€ù†­ˆ¸…¥ŽíŽí…¥ŽíŽí€ÖD€¤ˆ·…¥ŽíŽíÀ…¥ŽíŽí €ù†®ˆ¹…¥ŽîŽî!…¥ŽîŽî!#€€ÖD€¤€Ö…¥Žî"Žî#ˆ·…¥Žî$Žî*À…¥Žî+Žî-€ù†¯ˆº…¥ŽðŽð…¥ŽðŽð#6z€¤ˆª…¥ŽðŽðˆ»…¥Žð Žð"€ù†°ˆ¼…¥ŽñŽñ…¥ŽñŽñ#7c€¤ˆª…¥ŽñŽñˆ½…¥Žñ Žñ"€ù†±ˆ¾…¥ŽõŽõ$…¥ŽõŽõ$Dz€¤VV†²ˆ¿…¥ŽöŽö,…¥ŽöŽö,Dc€¤VV†³ˆÀ…¥Ž÷Ž÷"…¥Ž÷Ž÷"Dc€¤VV†´ˆÁ…¥ŽùŽù!…¥ŽùŽù!D€#€¤V€Ö…¥Žù#Žù$V†µˆÂ…¥ŽþŽþ%…¥ŽþŽþ%D€&c€¤V…¥Žþ&Žþ+ˆ½…¥Žþ-Žþ/V†¶ˆÃ…¥…¥4€6z€¤ˆÄ…¥ …¥7<ˆ»…¥=?ˆÅ€ù†·ˆÆ…¥ …¥ # 1€¤€Ö…¥€ù†¸ˆÇ…¥…¥€Õ1€¤€Ö…¥€ù†¹ˆÈ…¥…¥# €Õ1€¤€Ö…¥ˆ°…¥"€ù†ºˆÉ…¥…¥1)# €Õ€¤€Ö…¥ !€ù†»ˆÊ…¥  …¥  €Ö€Ï1€¤ˆµ…¥  À…¥  €ù†¼ˆË…¥…¥# €Ö€Ï1€¤€Ö…¥ !ˆµ…¥"$À…¥%'€ù†½ˆÌ…¥…¥1V€¤‚F…¥€ù†¾ˆÍ…¥…¥DV€¤ˆÎ…¥€ù†¿ˆÏ…¥ …¥ €¤€œ…¥€ù†ÀˆÐ…¥## …¥## €¤€œ…¥##€ù†ÁˆÑ…¥$$…¥$$€¤€£…¥$$€ù†ÂˆÒ…¥**…¥** e€¤ˆÓ…¥**(ˆÔ…¥***+€ù†ÃˆÕ…¥::…¥:: ee€¤ˆÓ…¥::$ˆÖ…¥:%:(€ù†Äˆ×…¥??…¥?? €¤ˆÓ…¥??%€«…¥?&?(€ù†ÅˆØ…¥WW…¥WW€¤€«…¥WW€ù†ÆˆÙ…¥XX…¥XXee€¤ˆÖ…¥XX€ù†ÇˆÚ…¥__…¥__ 1€¤†8…¥__€ù†ÈˆÛ…¥``…¥``ED€¤†8…¥``€ù†ÉˆÜ…¥aa…¥aa€D€¤†8…¥aa€ù†ÊˆÝ…¥cc…¥ccV€D€¤‡#…¥cc"€Ö…¥c$c%€ù†ËˆÞ…¥ee…¥eeD 1€¤ˆß…¥ee†8…¥e&e'€ù†Ìˆà…¥mm…¥mmV€Â€Ö€¤ˆá…¥mm$ˆâ€ù†Íˆã…¥pp…¥ppV€Â€Ö€¤ˆá…¥ppˆä€ù†Îˆå…¥vv…¥vv 1 €¤ˆæ…¥vv'€Ö…¥v)v*€ù†Ïˆç…¥{{…¥{{ # €¤ˆæ…¥{{*€Ö…¥{,{-€ù†Ðˆè…¥††…¥†† D €¤ˆæ…¥††*€Ö…¥†,†-€ù†Ñˆé…¥‹‹…¥‹‹ €¤ˆê…¥‹‹ˆë…¥‹‹!€ù†Òˆì…¥’’…¥’’€Ö€Ö €¤€ù†Óˆí…¥šš…¥šš€Ö€Ö €¤ˆî€ù†Ôˆï…¥ …¥ €Â€Â €¤€ù†Õˆð…¥ŸŸ…¥ŸŸ€Ö€Â €¤ˆñ…¥ŸŸ€ù†Öˆò…¥¨¨…¥¨¨VDD €¤ˆó…¥¨¨ˆô…¥¨¨$ˆõ…¥¨1¨6€ù†×ˆö…¥½½…¥½½V11 €¤ˆó…¥½½ˆ÷…¥½½ ˆø…¥½!½&€ù†Øˆù…¥××…¥×× VDD €¤ˆæ…¥××"ˆó…¥×#×+€Ö…¥×-×.ˆú…¥×=×>ˆû€ù†Ùˆü…¥èè…¥èè Vzz €¤ˆæ…¥èè%ˆó…¥è&è.ˆý€ù†Úˆþ…¥òò…¥òò V11 €¤ˆæ…¥òòˆó…¥ò ò(€Ö…¥ò*ò+ˆú…¥ò7ò8ˆÿ€ù†Û‰…¥…¥€‡€¤€ù†Ü‰…¥…¥f€¤€ù†Ý‰…¥  #…¥  #Ef€¤€Š…¥ % &€ù†Þ‰…¥…¥ff €¤€ù†ß‰…¥…¥ff €¤‰…¥‰…¥'€ù†à‰…¥…¥€‡f €¤†…¥#€ù†á‰…¥…¥€‡ €¤€ù†â‰ …¥…¥€‡ €¤€ù†ã‰ …¥  …¥  €‡€‡ €¤€ù†ä‰ …¥$$…¥$$ff€‡€‡€¤‰ …¥$$‰ …¥$$%‰€ù†å‰…¥((…¥((Vf€¤‡#…¥((€ù†æ‰…¥))…¥))€‡€¤€ù†ç‰…¥**…¥**f€‡€¤‰…¥**€ù†è‰…¥++…¥++€‡€¤€ù†é‰…¥,,…¥,,€‡€‡€‡€¤€ù†ê‰…¥22…¥22'€”€•P'€¤€”€•P€ù†ë‰…¥44…¥446€Î€¤‰…¥44€ù†ì‰…¥88…¥887A€¤‰…¥88€ù†í‰…¥==…¥==6€Ê€¤‰…¥==€ù†î‰…¥AA…¥AA6B€¤‰…¥AA€ù†ï‰…¥CC …¥CC C€½€Û €»<  €¤…à…¥CC‰…¥CC…â…¥C7CB…ä…¥CCCM†Ø…¥CNCU‰…¥CVC[‰…¥C\Cc€ù†ð‰ …¥NN…¥NN €¤†…¥NN€Š…¥NN€ù†ñ‰!…¥PP…¥PP&7<g€‡6€¤À…¥PP†…¥PP‰"…¥PP‰#…¥PP†Ø…¥PP&‰$…¥P'P0‡;…¥P1P7€ù†ò‡.…¥ZZ…¥ZZ€Á€ ;€¤‡0…¥ZZ"‡1…¥Z#Z)†õ…¥Z*Z.€ù†ó‡2…¥]]!…¥]]!€Á;€¤‡0…¥]"]'€ù†ô‰%…¥__ …¥__ f&€‡?<g€€¤†…¥_ _À…¥__‡;…¥__"‰&…¥_#_'†Ø…¥_(_/‰'…¥_0_3€ù†õ‰(…¥vv…¥vv `&  <<g€‡ 7€¤ ‰)…¥vv‰*…¥vvÀ…¥vv€«…¥v v"%…¥v#v,‰+…¥v-v7‰,…¥v8v@‰-…¥vAvI‰$…¥vJvS‡;…¥vTvZ‰.…¥v[va€ù†ö‰/…¥…… …¥……  f €‡€‡C+ g   ;€€¤ †…¥……†…¥……€Š…¥……‡;…¥……"‰1…¥…$….…à…¥…0…4†…¥…6…<‰$…¥…>…G…ø…¥…I…Z…ú…¥…\…x…û…¥…z…€‰2…¥…€’…€–€ù†÷‰3…¥žž…¥žžf + €´€´;€€¤ˆq…¥žž†…¥žž€Š…¥žž€£…¥žž ‰4…¥ž"ž(‰5…¥ž5ž8‰6…¥ž:ž>‰2…¥žJžN€ù†ø…¥¨ ¨…¥¨ ¨$€¬,,†ù…¥¨ ¨…¥¨ ¨$€¬, ,†ú…¥¨ ¨…¥¨ ¨$ €¬,  ,†û…¥¨ ¨…¥¨ ¨$ €¬,  ,†ü…¥¨ ¨…¥¨ ¨$$ €¬,,†ý…¥© ©…¥© ©$€¬--†þ…¥© ©…¥© ©$€¬- -†ÿ…¥© ©…¥© ©$ €¬-  -‡…¥© ©…¥© ©$ €¬-  -‡…¥© ©…¥© ©$$ €¬--‡…¥ª ª…¥ª ª$€¬..‡…¥ª ª…¥ª ª$€¬. .‡…¥ª ª…¥ª ª$ €¬.  .‡…¥ª ª…¥ª ª$ €¬.  .‡…¥ª ª…¥ª ª$$ €¬..‡‡<…¥¬¬…¥¬¬f€‡&g<;€€¤†…¥¬¬‡;…¥¬¬%À…¥¬'¬)‡=…¥¬1¬4†Ø…¥¬5¬<‡>…¥¬=¬B€ù‡‰:…¥®® …¥®®  €º €‡€¹@€’<€¸g      `€£ €¤‰;…¥® ®€Š…¥®® ‰<…¥®'®3€«…¥®4®6%…¥®7®@…»…¥®A®J‰=…¥®K®P‡;…¥®Q®W…¹…¥®X®b‰>…¥®c®n…º…¥®o®y†Ø…¥®z®€…¼…¥®€‚®€Œ‰'…¥®€®€…½…¥®€‘®€¨…¾…¥®€©®€º…¿…¥®€»®€Ó…À…¥®€Ô®€Ü…Á…¥®€Ý®€ê…Â…¥®€ë®€þ‰*…¥®€ÿ®‰?…¥®®€ù‡ ‰@…¥ÆÆ…¥ÆÆ ;€€¤†…¥ÆÆ€Š…¥ÆÆ†…¥ÆÆ‰A…¥ÆÆ €ù‡ ‰B…¥ÒÒ…¥ÒҀˀË,€€¤]…¥ÒÒ‰C…¥ÒÒ‰D€ù‡ ‰E…¥ÞÞ …¥ÞÞ ;;,€€¤]…¥Þ!Þ"‰C…¥Þ#Þ'‰F€ù‡ ‰G…¥ää…¥ää€Ô€Ô  €¤]…¥ää‰C…¥ää‰H€ù‡ ‰I…¥íí…¥íí,€€¤‰C…¥íí#€ù‡‰J…¥îî…¥îî,€€¤‰C…¥îî€ù‡‰K…¥ó ó…¥ó ó(€”€•P)€”€•P*€”€•P ()%*(%*(%*)€¤€”€•P€”€•P€”€•P]…¥óó‰L…¥óó‰M…¥óó‰N€…€ù‡‰O…¥÷ ÷…¥÷ ÷+€”…¥÷/÷0,€”€•P-€”…¥÷-÷. +,-+-+-,€¤€”…¥÷/÷0€”€•P€”…¥÷-÷.]…¥÷÷‰L…¥÷ ÷"‰M…¥÷4÷6€…€ù‡‰P…¥þþ-…¥þþ- ;;;€¤‡Û…¥þ.þ2€Š…¥þ3þ4‰Q…¥þ6þ:‰R…¥þTþX‰S€…€ù‡‰T…¥‘ ‘…¥‘ ‘€€€¤‡Û…¥‘‘"‰U…¥‘#‘$€…€ù‡‰V…¥‘ ‘…¥‘ ‘€€€€¤‡Û…¥‘‘‰W…¥‘!‘(‰X…¥‘2‘9€…€ù‡‰Y…¥‘$‘$$…¥‘$‘$$ ;;€¤‡Û…¥‘$%‘$)€Š…¥‘$*‘$+‰U…¥‘$,‘$-€ù‡‰Z…¥‘-‘-&…¥‘-‘-&€¤€ù‡‰[…¥‘.‘.#…¥‘.‘.#€¤€ùwt‰\…¥.. t€¶‰]€…uu..u‚C…¥11 u€¶€…vv..v.A…¥??„‚è…¥?? v%a.€…ww//w…°…¥EEw/€‰^€Ü€¸‰_‰_…¥GG‰`€¸‰a‰a…¥II ‰b€¸‰c‰c…¥KK‰d€¸‰e‰e…¥MM ‰f€ù…°€¸€ù…°€¸€¸€ù…°€¸€ù…°€¸€ù…°€¸€ù…°€¸ €ù…°€¸ €ù…°€¸€¸ $€¸ €¸€…xx//x…´…¥TTx ê…¥VV€¹‰g‰g…¥VV‰h€¹‰i‰i…¥XX‰j€ù…´€¹€ù…´€¹€¹€ù…´€¹€ù…´€¹€ù…´€¹€ù…´€¹ €ù…´€¹ €ù…´€¹€¹ $€¹ €¹‰k€…yy//y…µ…¥ZZy€º‰l‰l…¥[[€º‰m‰m…¥\\ €ù…µ€º€ù…µ€º€º€ù…µ€º€ù…µ€º€ù…µ€º€ù…µ€º €ù…µ€º €ù…µ€º€º $€º €º€…zz//z…¶…¥``z/€‰^€Ü€»‰n‰n…¥bb‰o€»‰p‰p…¥dd ‰q€ù…¶€»€ù…¶€»€»€ù…¶€»€ù…¶€»€ù…¶€»€ù…¶€» €ù…¶€» €ù…¶€»€» $€» €»‰r€…{{//{„*…¥ff{€’‰s‰s…¥ii‰t€’‰u‰u…¥kk ‰v€’‰w‰w…¥mm‰x€’‰y‰y…¥oo‰z€ù„*€’€ù„*€’€’€ù„*€’€ù„*€’€ù„*€’€ù„*€’ €ù„*€’ €ù„*€’€’ $€’ €’€…||//|…·…¥vv |€æ€…2€«€¶…¸…¥vv€……·€ù…·€­€¼€ù…·€­€¼€¼€ù…·€­€¼€ù…·€­€¼€ù…·€­€¼€ù…·€­€¼ €ù…·€­€¼ €ù…·€­€¼€¼ €ù…·€¶€¼€ù…·  €¹€’ €¸€º      €¼…Àù…·…À­€¼€’…Ä€ù…·…Ä€­€¼ …Å€ù…·…Å€­€¼ €¼…Æ€ù…·…Æ€­€¼€¸…Ç€ù…·…Ç€­€¼€º…È€ù…·…È€­€¼ …É€ù…·…É€­€¼€¼…Ê€ù…·…Ê€­€¼ …Ë€ù…·…Ë€­€¼ …Ì€ù…·…Ì€­€¼ …Í€ù…·…Í€­€¼€¹…΀ù…·…΀­€¼€¹€¼…Ï€ù…·…Ï€­€¼ …Ѐù…·…Ѐ­€¼€¼…Ñ€ù…·…Ñ€­€¼ …Ò€ù…·…Ò€­€¼ …Ó€ù…·…Ó€­€¼€¼…Ô€ù…·…Ô€­€¼ …Õ€ù…·…Õ€­€¼€¼…Ö€ù…·…Ö€­€¼ …×€ù…·…×€­€¼€¶$€¼ €¼€®€…}}//}Ž…¥€ü€ü}/€‰^€ÜC‰{‰{…¥€ý€ý C‰|‰|…¥€þ€þ €ùŽC€ùŽCC€ùŽC€ùŽC€ùŽC€ùŽC €ùŽC €ùŽCC …Ù€ùŽ…ÙC…Ú€ùŽ…ÚC$C C€…~~//~…Û…¥  ~/€‰^€Ü€½‰}‰}…¥  ‰~€½‰‰…¥‰€€½‰‰…¥‰‚€½‰ƒ‰ƒ…¥‰„€½‰…‰……¥ ‰†€ù…Û€½€ù…Û€½€½€ù…Û€½€ù…Û€½€ù…Û€½€ù…Û€½ €ù…Û€½ €ù…Û€½€½ …Ü€ù…Û…Ü€½ …Ý€ù…Û…Ý€½ …Þ€ù…Û…Þ€½ $€½ €½‰‡€…//…ß…¥€æ€…2€«€—…¸…¥€……߀ù…߀­€¾€ù…߀­€¾€¾€ù…߀­€¾€ù…߀­€¾€ù…߀­€¾€ù…߀­€¾ €ù…߀­€¾ €ù…߀­€¾€¾ €ù…߀—€¾€ù…ßC€½  €ˆ€»  €¾…ç€ù…߅瀭€¾ …Ä€ù…ß…Ä€­€¾ …ê€ù…߅ꀭ€¾€ˆ…ì€ù…߅쀭€¾€½…î€ù…߅€¾C…ð€ù…ß…ð€­€¾ …ò€ù…ß…ò€­€¾€»…ô€ù…ß…ô€­€¾ …×€ù…ß…×€­€¾€—$€¾ €¾€®‰ˆ€…€€//€€…÷…¥hh€€€æ€…2€«€¶…¸…¥hh€……÷€ù…÷€­€¿€ù…÷€­€¿€¿€ù…÷€­€¿€ù…÷€­€¿€ù…÷€­€¿€ù…÷€­€¿ €ù…÷€­€¿ €ù…÷€­€¿€¿ €ù…÷€¶€¿€ù…÷    €¿…ü€ù…÷…ü€­€¿ …ý€ù…÷…ý€­€¿ …þ€ù…÷…þ€­€¿ …ÿ€ù…÷…ÿ€­€¿ †€ù…÷†€¶…×€ù…÷…×€­€¿€¶$€¿ €¿€®‰‰€…//€‰Š…¥Œ Œ€$€…‚‚//@…¥ŒŒB…¥ŒOŒ_&C…¥ŒcŒhE…¥ŒkŒv€‚‰‹…¥ "€‚$€…ƒƒ//@…¥'OB…¥SYC…¥\bE…¥ek€ƒ† …¥šš€ƒ€Á‰Œ‰Œ…¥œœ‰€Á‰Ž‰Ž…¥žž‰€Á‰‰…¥  ‰‘€ù† €Á€ù† €Á€Á€ù† €Á€ù† €Á€ù† €Á€ù† €Á €ù† €Á €ù† €Á€Á $€Á €Á€…„„//€„‚…¥¤¤€„¡…¥¥¥€Á¢…¥¥¥Df‰’‰’…¥¥¥€ù‚f€ù‚ff€ù‚f€ù‚f€ù‚f€ù‚f €ù‚f €ù‚ff † €ù‚† f† €ù‚† f€Á$f f‰“€………//€…†…¥¬¬€…ê…¥­­€Â‰”‰”…¥­­ €ù†€Â€ù†€Â€Â€ù†€Â€ù†€Â€ù†€Â€ù†€Â €ù†€Â €ù†€Â€Â †€ù††€Â$€Â €Â‰•€…††//€†ƒÚ…¥ÓÓ €†/€‰^€Ü€Ë‰–…¥ÔÔZ€¸€ùƒÚ€¸€†#€ùƒÚ†#€†%€ùƒÚ†%€†'€ùƒÚ†'€†)€ùƒÚ†)€†+€ùƒÚ†+€  8€ùƒÚ8€ †/€ùƒÚ†/€a†1€ùƒÚ†1€<†3€ùƒÚ†3€g†5€ùƒÚ†5€†7€ùƒÚ†7€†:€ùƒÚ†:€;†<€ùƒÚ†<€€É†?€ùƒÚ†?€C†A€ùƒÚ†A€&†C€ùƒÚ†C€B†E€ùƒÚ†E€?†G€ùƒÚ†G€ †I€ùƒÚ†I€Á†L€ùƒÚ†L€€ €ùƒÚ€ € †O€ùƒÚ†O€†Q€ùƒÚ†Q€†S€ùƒÚ†S€ †U€ùƒÚ†U€€‡†W€ùƒÚ†W€€È†[€ùƒÚ†[€€Â†]€ùƒÚ†]€€‡…ý€ùƒÚ…ý€ …ü€ùƒÚ…ü€ †a€ùƒÚ†a€ †c€ùƒÚ†c€ †e€ùƒÚ†e€ †g€ùƒÚ†g€ †i€ùƒÚ†i€ †k€ùƒÚ†k€ †m€ùƒÚ†m€ †o€ùƒÚ†o€f†q€ùƒÚ†q€f†s€ùƒÚ†s€A†u€ùƒÚ†u€7†w€ùƒÚ†w€7†y€ùƒÚ†y€7†{€ùƒÚ†{€7†}€ùƒÚ†}€7†€ùƒÚ†€7†€ùƒÚ†€7†ƒ€ùƒÚ†ƒ€ †…€ùƒÚ†…€€Ê†ˆ€ùƒÚ†ˆ€6†Š€ùƒÚ†Š€6†Œ€ùƒÚ†Œ€6†Ž€ùƒÚ†Ž€†€ùƒÚ†/€”€•P/€Ë€†•€ùƒÚ†•€€Ë†˜€ùƒÚ†˜€ …Ú€ùƒÚ…Ú€†š€ùƒÚ†š€€Ì†€ùƒÚ†€ †Ÿ€ùƒÚ†Ÿ€€´€´†¡€ùƒÚ†¡€€´†£€ùƒÚ†£€ †¥€ùƒÚ†¥€ †§€ùƒÚ†§€ †©€ùƒÚ†©€ †«€ùƒÚ†«€ †­€ùƒÚ†­€ †¯€ùƒÚ†¯€ †±€ùƒÚ†±€ †³€ùƒÚ†³€ †µ€ùƒÚ†µ€ †·€ùƒÚ†·€ †¹€ùƒÚ†¹€ †»€ùƒÚ†»€ †½€ùƒÚ†½€ †¿€ùƒÚ†¿€  †Á€ùƒÚ†Á€†Ã€ùƒÚ†Ã€1†Å€ùƒÚ†Å€\1†Ç€ùƒÚ†Ç€111†É€ùƒÚ†É€1†Ë€ùƒÚ†Ë€11†Í€ùƒÚ†Í€11†Ï€ùƒÚ†Ï€1†Ñ€ùƒÚ†Ñ€€È†Ó€ùƒÚ†Ó€€œ…þ€ùƒÚ…þ€ …ÿ€ùƒÚ…ÿ€ †×€ùƒÚ†×€<€…‡‡00€‡†‘…¥ƒ­ƒ­€‡€ç€…3€¬€è€…4€­/€‰^€Ü+ ‰—…¥ƒ°ƒ°‰˜C‰™…¥ƒ³ƒ³€¿‰š…¥ƒµƒµa‰›…¥ƒ¸ƒ¸‰œ‰…¥ƒ»ƒ»‰ž‰Ÿ…¥ƒ¿ƒ¿"‰  ‰¡…¥ƒÂƒÂ‰¢€‡‰£…¥ƒÅƒÅ%‰¤<‰¥…¥ƒÊƒÊ‰¦B‰§…¥ƒÏƒÏ‰¨‰©…¥ƒÔƒÔ!‰ª€É‰«…¥ƒÙƒÙ ‰¬?‰­…¥ƒÞƒÞ‰®;‰¯…¥ƒäƒä#‰°g‰±…¥ƒçƒç‰²‰³…¥ƒêƒê‰´€Â‰µ…¥ƒîƒî‰¶€‡‰·…¥ƒñƒñ‰¸f‰¹…¥ƒôƒô‰º€È‰»…¥ƒ÷ƒ÷‰¼€…ˆˆ00€ˆ„å…¥ƒúƒú €ˆDê…¥ƒûƒû€£‰½‰½…¥ƒûƒû €£‰¾‰¾…¥ƒüƒü€…‰‰00€‰†=…¥„„€‰€ç€…3€¬€è€…4€­/€‰^€Ü 11‰¿…¥„„‰À1‰Á…¥„ „ !‰Â11‰Ã…¥„„‰Ä111‰Å…¥„„)‰Æ ‰Ç…¥„„(‰È0 1‰Ê…¥„„‰Ë\1‰Ì…¥„„‰Í  ‰Î…¥„"„"‰Ï‰Ð…¥„%„%‰Ñ ‰Ò…¥„(„(‰Ó ‰Ô…¥„+„+‰Õ†Ú€ù†=†Ú€É11†Û€ù†=†Û€É1†Ü€ù†=†Ü€É11†Ý€ù†=†Ý€É111†Þ€ù†=†Þ€É ‚ó€ù†=‚ó€É€…ŠŠ00€ŠŒ…¥„C„C€Š€ç€…3€¬€è€…4€­ €Ìê…¥„F„F-B‰Ö‰Ö…¥„F„F‰×Aê…¥„I„I+B‰Ø‰Ø…¥„I„I‰Ù€Êê…¥„L„L*B‰Ú‰Ú…¥„L„L‰Û¡…¥„Q„Q&€´¢…¥„Q)„Q7€´£…¥„Q:„QCB‰Ü‰Ü…¥„Q„Q‰Ý|ê…¥„T„T"B‰Þ‰Þ…¥„T„T‰ßê…¥„W„W!B‰à‰à…¥„W„W‰á€µê…¥„]%„]6B‰â‰â…¥„]„]!‰ã€Ð¡…¥„b*„bO¢…¥„bR„bmB‰ä‰ä…¥„b„b&‰åB‰æ‰æ…¥„m„m ‰ç‰è€…‹‹00€‹… …¥„t„t€‹/€‰^€Ü€è€…4€­€ç€…3€¬ €Ð‡4…¥„v„v‰éNú…¥„z„z‰ê+ ‰ë…¥„}„}‰ì ‰í…¥„„ ‰î ‰ï…¥„„ ‰ð ‰ñ…¥„ƒ„ƒ‰ò ‰ó…¥„…„…‰ô ‰õ…¥„‡„‡ ‰ö‰÷…¥„ЄЉø ‰ù…¥„„‰ú ‰û…¥„Ž„Ž  ‰ü…¥„„‰ý†à€ù… †à€µ †á€ù… †á€µ ‰þ€…ŒŒ00€Œ†ä…¥„š„š€Œ€Í‰ÿ‰ÿ…¥„œ„œŠ€ÍŠŠ…¥„ž„žŠ€ÍŠŠ…¥„ „ Š€Žê…¥„¢„¢€ÍŠŠ…¥„¢„¢Š€ÍŠŠ…¥„¤„¤Š†ã€ù†ä†ã€Í €…00€†›…¥„­„­€€ç€…3€¬€è€…4€­€ÍŠ …¥„¯„¯Š 1Š …¥„±„±Š AŠ …¥„³„³Š€…ŽŽ00€Ž€…¥„·„·€Ž€ç€…3€¬€è€…4€­7Š…¥„¹„¹Š7Š…¥„¼„¼Š†å€ù€†åA7†æ€ù€†æA7†w€ù€†wA7†{€ù€†{A7†}€ù€†}A7€…00€†è…¥„Ʉɀ€ç€…3€¬€è€…4€­6Š…¥„˄ˊ6Š…¥„̈́͊†ç€ù†è†ç€Î6†Š€ù†è†Š€Î6€…00€††…¥„ׄ׀€ç€…3€¬€è€…4€­€ÎŠ…¥„لي€ÝŠ…¥„Û„ÛŠ†Š€ù†††Š€Ê6€…‘‘00€‘I…¥„â„â €‘€ç€…3€¬€è€…4€­2€Š€ÞŠ Š AŠ!…¥„ä„äŠ"Š#…¥„æ„æŠ$Š%…¥„è„èŠ&g‚€…¥„ê„ê Š'Š(…¥„ì„ìŠ)&Š*…¥„î„îŠ+€‡ƒ”…¥„ð„ðŠ,<^…¥„ó„óŠ-8€ùI86 †%€ùI†%6†é€ùI†é67†ê€ùI†ê67†€ùI†67†ë€ùI†ë6 €…’’00€’L…¥…… €’€ç€…3€¬€è€…4€­  Š.…¥……Š/gŠ0…¥……Š1Š2…¥……Š3Š4…¥……Š5 Š6…¥… … Š7 Š8…¥… … Š9 Š:…¥……Š;`Š<…¥……Š=€‡Š>…¥……Š?<Š@…¥……ŠA<ŠB…¥……ŠC&ŠD…¥……ŠE†]€ùL†]7€‡†ì€ùL†ì7<†í€ùL†í7<8€ùL87 †A€ùL†A7&€Ç€ùL€Ç7…Ä€ùL…Ä7 †î€ùL†î7 †ï€ùL†ï7 †ð€ùL†ð7 †ñ€ùL†ñ7†3€ùL†37g†5€ùL†57†7€ùL†77†ò€ùL†ò7`†ó€ùL†ó7 ŠF€…““00€“p…¥…7…7€“#ê…¥…9…9 ?ŠGŠG…¥…9…9ŠH€œê…¥…;…;?ŠIŠI…¥…;…;ŠJAê…¥…=…="?ŠKŠK…¥…=…=ŠL?ŠMŠM…¥…?…?ŠN€…””00€”V…¥…C…C€”€Ž€‚Ib  †õ…¥…C7…C;€…V€Á…à…¥…C…C€…V€ŠO…¥…F…FŠP€…V€ó€¥ŠQ…¥…O …O#€…V€óEŠR…¥…P …P%€…V€ó,ŠS…¥…Q …Q$€…V€ó€À,ŠT…¥…R …R,€…V€ó,ŠU…¥…S …S"€…V€ó,ŠV…¥…T …T"€…V€ó€ŠW…¥…U …U'€…V€ó€Ä ŠX…¥…V …V3€…V€ó ŠY…¥…W …W#€…V€ùV€Á €;†÷€ùV†÷;€Á†ù€ùV†ù; †û€ùV†û;€†ý€ùV†ý;E‡€ùV‡;€‡€ùV‡;,;‡€ùV‡; ;‡€ùV‡;€ó€¥‡ €ùV‡ ;€‡ €ùV‡ ;€‡€ùV‡;€‡€ùV‡;€‡€ùV‡; €À,‡€ùV‡;,‡€ùV‡;,‡€ùV‡;€‡€ùV‡;€‡€ùV‡;€Ä ‡!€ùV‡!;V€Ï ‡&€ùV‡&; ‡(€ùV‡(; ‡*€ùV‡*;,‡,€ùV‡,;E€…••00€•–…¥…ç…瀕€€…––00€– …¥…è…è €–€€…——00€—‡/…¥…ì…ì €—‡.€ù‡/‡.€Á€ ;‡2€ù‡/‡2€Á;‡3€ù‡/‡3€ÐNN  B‡9€ù‡/‡9€ÐNN  €‡f€‡<€ù‡/‡<f€‡&g<;€ŠZ€…˜˜00€˜ƒ”…¥†e†e€˜fê…¥†g†g%€‡Š[Š[…¥†g†g Š\€ùƒ”€‡€ùƒ”€‡€‡€ùƒ”€‡€ùƒ”€‡€ùƒ”€‡€ùƒ”€‡ €ùƒ”€‡ €ùƒ”€‡€‡ $€‡ €‡€…™™00€™‡S…¥†x†x €™€ç€…3€¬€è€…4€­&Š]…¥†z†zŠ^Š_…¥†}†}Š`€¾Ša…¥††aŠb…¥†‚†‚ŠcgŠd…¥†…†…Še<Šf…¥†ˆ†ˆŠgŠh…¥†‹†‹Ši}Šj…¥†Ž†ŽŠkŠl€…šš00€š€›…¥†–†– €š€ç€…3€¬€è€…4€­2€Š€ÞŠmŠm€Ò‰–…¥†—†—Šn…¥†™†™Šo€Ç€ù€›€Ç8€ù€›8 †A€ù€›†A&†/€ù€›†/a‡@€ù€›‡@‡B€ù€›‡B}…Ä€ù€›…Ä …ì€ù€›…쀽…ò€ù€›…ò€»…ô€ù€›…ô …ð€ù€›…ð …ê€ù€›…ꀈ…ç€ù€›…ç …î€ù€›…îC†m€ù€›†m †1€ù€›†1<†%€ù€›†%‡O€ù€›‡O}†Ž€ù€›†Ž†€ù€›†€Ò†•€ù€›†•€Ò†˜€ù€›†˜ ‡W€ù€›‡W ‡Y€ù€›‡Y&‡[€ù€›‡[€½‡]€ù€›‡] ‡_€ù€›‡_€ˆ‡a€ù€›‡a€»‡c€ù€›‡c ‡e€ù€›‡e …Ú€ù€›…ÚŠp€…››00€›ƒ …¥†ì†ì€›€ç€…3€¬€è€…4€­/€‰^€Ü ¡…¥†î †î% ¢…¥†î(†î-}ŠqŠq…¥†î†îŠr¡…¥†ñ †ñ#¢…¥†ñ&†ñ+ £…¥†ñ.†ñ3}ŠsŠs…¥†ñ†ñŠt ê…¥†ô$†ô)}ŠuŠu…¥†ô†ôŠv~¡…¥†÷†÷- ¢…¥†÷0†÷5}ŠwŠw…¥†÷†÷Šx ê…¥†ü!†ü&}ŠyŠy…¥†ü†üŠz ê…¥†ÿ$†ÿ)}Š{Š{…¥†ÿ†ÿŠ|¡…¥‡$‡* ¢…¥‡-‡2}Š}Š}…¥‡‡Š~ ê…¥‡$‡)}ŠŠ…¥‡‡ Š€¡…¥‡$‡) ¢…¥‡,‡1}‰õ‰õ…¥‡‡ Š ê…¥‡ *‡ /}ЂЂ…¥‡ ‡ Šƒ ê…¥‡)‡.}ЄЄ…¥‡‡Š…¡…¥‡$‡)¢…¥‡,‡1 £…¥‡4‡9}‰ù‰ù…¥‡‡І ê…¥‡%‡*}ЇЇ…¥‡‡Šˆ€…œœ00€œƒ …¥‡‡€œ€ç€…3€¬€è€…4€­¡…¥‡‡¢…¥‡‡I£…¥‡"‡-¥…¥‡0‡6¦…¥‡9‡E€ó€Ó§…¥‡H‡e~ЉЉ…¥‡‡ ŠŠ‡g€ùƒ ‡g~‡i€ùƒ ‡i~‡@€ùƒ ‡@~€Ó‡m€ùƒ ‡m~€ÓŠ‹€…00€‡k…¥‡-‡-€€ç€…3€¬€è€…4€­¡…¥‡4‡41¢…¥‡4‡4!£…¥‡4$‡4,€ÓŠŒŠŒ…¥‡4‡4Š¡…¥‡<‡< c¢…¥‡<#‡‹>…¥ŒŒ ‹?¡…¥Œ•Œ•¢…¥Œ•Œ•€›‹@‹@…¥Œ•Œ• ‹A¡…¥Œ Œ ¢…¥Œ "Œ (1£…¥Œ +Œ E¥…¥Œ HŒ K€¦¦…¥Œ NŒ _€›‹B‹B…¥Œ Œ ‹C€…¿¿00€¿‚ˆ…¥Œ¤Œ¤€¿i¡…¥Œ¥Œ¥¢…¥Œ¥Œ¥ m£…¥Œ¥#Œ¥=l‹D‹D…¥Œ¥Œ¥ ‹E€…ÀÀ00€À‚ƒ…¥Œ§Œ§ €À?o€…ÁÁ00€Á‚›…¥Œ©Œ© €Á ¡…¥ŒªŒª¢…¥ŒªŒªj£…¥ŒªŒª7o‹G‹G…¥ŒªŒª ˆx€ù‚›ˆxo ˆy€ù‚›ˆyoˆz€ù‚›ˆzoj€…ÂÂ00€Â„ö…¥Œ±Œ±€Â€¦¡…¥Œ²Œ²$1¢…¥Œ²'Œ²-£…¥Œ²0Œ²3€¥‹H‹H…¥Œ²Œ²ˆ{€ù„öˆ{€¥€¦ˆ|€ù„öˆ|€¥1ˆ}€ù„öˆ}€¥€…ÃÃ00€Ã€©…¥ŒºŒº€Ã€ê¡…¥Œ¼Œ¼(¢…¥Œ¼+Œ¼@£…¥Œ¼CŒ¼N€©€©…¥Œ¼Œ¼‹Jˆ~€ù€©ˆ~ˆ€ù€©ˆˆ€€ù€©ˆ€ˆ€ù€©ˆ ˆ‚€ù€©ˆ‚ˆƒ€ù€©ˆƒCˆ„€ù€©ˆ„‹K€…ÄÄ00€ÄƒH…¥ŒÓŒÓ€Ä/€‰^€Ü<^…¥ŒÖŒÖ&‹L…¥ŒØŒØ‹M€…ÅÅ00€Å‹I…¥ŒÞŒÞ€Å&¡…¥ŒÞ%ŒÞ*C¢…¥ŒÞ-ŒÞ6€ê‹I‹I…¥ŒÞŒÞ!‹N€…ÆÆ00€Æ€ …¥ŒàŒà €Æ€…ÇÇ00€Ç‚…¥ŒâŒâ €Ç€…ÈÈ00€È‚¾…¥ŒãŒã €È?€…ÉÉ00€É‹O…¥ŒäŒä€É €…ÊÊ00€Ê‚„…¥ŒåŒå €Ê? €…ËË00€Ë€¦…¥ŒêŒê€Ë/€‰^€Ü`¡…¥ŒìŒì ¢…¥ŒìŒì£…¥ŒìŒì$‚?‚?…¥ŒìŒì ‹P1¡…¥Œð Œð2¢…¥ŒðŒð  £…¥Œð#Œð(€ª€ª…¥ŒðŒð ‹Q¡…¥ŒóŒó¢…¥ŒóŒó€Ç£…¥Œó"Œó2€“¥…¥Œó5ŒóL ¦…¥ŒóOŒóT‹R‹R…¥ŒóŒó‹S€ë¡…¥ŒúŒú ¢…¥ŒúŒú# £…¥Œú&Œú0 ¥…¥Œú3Œú;¦…¥Œú>ŒúB §…¥ŒúEŒúJ¨…¥ŒúMŒúR‹T‹T…¥ŒúŒú ‹U€ë¡…¥ŒþŒþ¢…¥ŒþŒþ!£…¥Œþ$Œþ( ¥…¥Œþ+Œþ0¦…¥Œþ3Œþ8‹V‹V…¥ŒþŒþ‹W¡…¥ ¢…¥£…¥$O¥…¥', ¦…¥/4‹X‹X…¥ ‹Yh¡…¥¢…¥ £…¥"'€ì¥…¥*7‹[‹[…¥ ‹\o¡…¥ ¢…¥   £…¥  #€ì¥…¥ & 3‹]‹]…¥  ‹^€ë¡…¥ &¢…¥ % £…¥ *¥…¥ $p¦…¥ 2p§…¥ A ¨…¥ %‹_‹_…¥ j¡…¥* ¢…¥-2n£…¥5A€Ãl¥…¥D\ ¦…¥_d§…¥gl‹`‹`…¥ ‹a€¤¡…¥##3¢…¥#6#:£…¥#=#A ¥…¥#D#I„ò„ò…¥##‹b€í¡…¥' '¢…¥''O£…¥''" ¥…¥'%'*‹d‹d…¥''‹e¡…¥,,€óO€î¢…¥,,< £…¥,?,C ¥…¥,F,K¦…¥,N,S‹h‹h…¥,, ¡…¥11¢…¥11 £…¥1"1'‹i‹i…¥11‹j€óê…¥77†•†•…¥77 ‹k‹l€…ÌÌ00€Ì‹c…¥;;€Ì€ç€…3€¬€è€…4€­/€‰^€Üzê…¥==€íII…¥==‹m#ê…¥??€í‹n‹n…¥??‹o€í‹p‹p…¥AA ‹q€í‹r‹r…¥CC ‹s€•ê…¥EE€í‹t‹t…¥EE ‹u€–ê…¥GG€í‹v‹v…¥GG ‹wq¡…¥II,r¢…¥I/IE€í‹x‹x…¥II ‹ys¡…¥K K(t¢…¥K+K7€í‹z‹z…¥KK ‹{u¡…¥MM)v¢…¥M,MD€í‹|‹|…¥MM‹}u¡…¥OO+w¢…¥O.OI€í‹~‹~…¥OO‹€”¡…¥UU$#¢…¥U'U/€í‹€‹€…¥UU ‹cê…¥XX!€í‹‚‹‚…¥XX‹ƒcê…¥ZZ!€í‹„‹„…¥ZZ‹…cê…¥\\%€í‹†‹†…¥\\‹‡#ê…¥^^!€í‹ˆ‹ˆ…¥^^‹‰zê…¥aa$€í‹Š‹Š…¥aa‹‹z¡…¥cc'¢…¥c*c-€í‹Œ‹Œ…¥cc‹z¡…¥ee(¢…¥e+e.€í‹Ž‹Ž…¥ee‹#¡…¥gg¢…¥g g#€í‹‹…¥gg‹‘#¡…¥ii¢…¥i i#€í‹’‹’…¥ii‹“ê…¥kk€í‹”‹”…¥kk‹•{¡…¥mm¢…¥mm$€í‹–‹–…¥mm ‹—€í‹˜‹˜…¥oo‹™€ímm…¥qq ‹š€í‹›‹›…¥ss ‹œ€í‹‹…¥uu ‹ž€ïê…¥ww€í‹ ‹ …¥ww ‹¡€ïê…¥yy€í‹¢‹¢…¥yy ‹£~ê…¥||&€í‹¤‹¤…¥||‹¥€Æ¡…¥!1¢…¥$*€í‹¦‹¦…¥‹§  ¡…¥ŠŠ ¢…¥ŠŠ £…¥ŠŠ" ¥…¥Š%Š)2¦…¥Š,Š6 §…¥Š9Š= ¨…¥Š@ŠD€ßñ…¥ŠGŠRò…¥ŠUŠ]󅥊`Šhô…¥ŠkŠq€í‹¨‹¨…¥ŠŠ ‹©€…ÍÍ00€Í„^…¥ŽŽ€Í€”‹ª‹ª…¥‘‘‹«€”‹¬‹¬…¥““ ‹­€ù„^€”€ù„^€”€”€ù„^€”€ù„^€”€ù„^€”€ù„^€” €ù„^€” €ù„^€”€” $€” €”‹®€…ÎÎ00€Î‹¯…¥˜˜€Î‹°€…ÏÏ00€Ï‚©…¥››€Ïr‹±‹±…¥œœr‹²‹²…¥+€ù‚©r€ù‚©rr€ù‚©r€ù‚©r€ù‚©r€ù‚©r €ù‚©r €ù‚©rr $r r‹³€…ÐÐ00€Ð‚¬…¥  €Ðt‹´‹´…¥¢¢‹µt‹¶‹¶…¥¤¤‹·t‹¸‹¸…¥¦¦‹¹€ù‚¬t€ù‚¬tt€ù‚¬t€ù‚¬t€ù‚¬t€ù‚¬t €ù‚¬t €ù‚¬tt $t t‹º€…ÑÑ00€Ñ†…¥©©€Ñ€Æ‹»‹»…¥««‹¼€Æ‹½‹½…¥­­‹¾€Æ‹¿‹¿…¥¯¯ ‹À€Æ‹Á‹Á…¥±±‹Â€ù†€Æ€ù†€Æ€Æ€ù†€Æ€ù†€Æ€ù†€Æ€ù†€Æ €ù†€Æ €ù†€Æ€Æ $€Æ €Æ‹Ã€…ÒÒ00€Ò† …¥´´€Ò€Ç‹Ä‹Ä…¥¶¶‹Å€Ç‹Æ‹Æ…¥¸¸‹Ç€ù† €Ç€ù† €Ç€Ç€ù† €Ç€ù† €Ç€ù† €Ç€ù† €Ç €ù† €Ç €ù† €Ç€Ç $€Ç €Ç‹È€…ÓÓ00€Ó-…¥»»€Óê…¥À!À&2‹É‹É…¥ÀÀ‹Ê2‹Ë‹Ë…¥Â‹Ì2‹Í‹Í…¥ÄÄ‹Î2‹Ï‹Ï…¥ÆÆ‹Ð2‹Ñ‹Ñ…¥ÈȋҋӀ…ÔÔ00€Ô„ò…¥ËË€Ô¡…¥ÌÌ ¢…¥Ì#Ì(€¤‹Ô‹Ô…¥ÌÌê…¥ÍÍ€¤‹Õ‹Õ…¥Í͋ր…ÕÕ00€Õ‚¡…¥ÒÒ€Õ€Ž¡…¥ÓÓ<¢…¥Ó"Ó)£…¥Ó,Ó2 ¥…¥Ó5ÓB¦…¥ÓEÓI §…¥ÓLÓQp‹×‹×…¥ÓÓ†A€ù‚¡†Ap&‹Ø€…ÖÖ00€ÖƒÍ…¥ÙÙ €Ö¡…¥ÚÚ¢…¥ÚÚ £…¥Ú#Ú)¥…¥Ú,Ú2€Ù¦…¥Ú5ÚH§…¥ÚKÚW€Ž‹Ù‹Ù…¥ÚڀǀùƒÍ€Ç€Žˆ…€ùƒÍˆ…€Žˆ†€ùƒÍˆ†€Žˆ‡€ùƒÍˆ‡€Žˆˆ€ùƒÍˆˆ€Ž€ÙˆŠ€ùƒÍˆŠ€Ž‹Ú€…××00€×ˆ‰…¥åå €×¡…¥ææ"¢…¥æ%æ* £…¥æ-æ1 ¥…¥æ=æA ¦…¥æNæR<§…¥ædæk€Ù‹Û‹Û…¥ææ€½€ùˆ‰€½€Ù‹Ü€…ØØ00€Øˆ‹…¥êê €Ø;¡…¥í 퀋¢…¥î î  £…¥ï ï€Úˆ‹ˆ‹…¥ëë"€½€ùˆ‹€½€Ú;‹Ý€…ÙÙ00€Ùƒ²…¥óó€Ù€Úê…¥õõ0€‹‹Þ‹Þ…¥õõ‹ß€‹ê…¥÷÷.€‹‹à‹à…¥÷÷ ‹áo¡…¥ùù ¢…¥ùù#€‹‹â‹â…¥ùù‹ã¡…¥ûû ¢…¥ûû€‹‹ä‹ä…¥ûû ‹å,¡…¥ýýh¢…¥ý!ý)€ð£…¥ý,ýI ¥…¥ýLýQ€‹‹ç‹ç…¥ýý‹è‹é€…ÚÚ00€Ú‹æ…¥ŽŽ€ÚE¡…¥Ž Ž€‹¢…¥Ž Ž€ð‹æ‹æ…¥ŽŽ‹ê€…ÛÛ00€Û‚(…¥Ž Ž €Û€ñ¡…¥Ž !Ž 4€ò¢…¥Ž 7Ž H€Ú£…¥Ž KŽ g ¥…¥Ž jŽ n ¦…¥Ž qŽ u]‹í‹í…¥Ž Ž ‹î€…ÜÜ00€Ü…”…¥ŽŽ€Ü]ê…¥Ž!Ž3€³‹ï‹ï…¥ŽŽ‹ð€…ÝÝ00€Ýƒ[…¥ŽŽ€Ý€ñ ‹ñ€…ÞÞ00€ÞƒR…¥ŽŽ€Þ€ñ‹ò€…ßß00€ßƒU…¥ŽŽ€ß€ñ,‹ó€…àà00€à‹ô…¥ŽŽ€à€ñc‹õ€…áá00€á‹ö…¥Ž!Ž!€á€ñz‹÷€…ââ00€âƒX…¥Ž$Ž$€â€‚ƒU…¥Ž'Ž'‹ø€„‹ù…¥Ž*Ž*‹ú€ƒR…¥Ž.Ž.‹û€ùƒX€ƒ€ùƒX€ƒ€ƒ€ùƒX€ƒ€ùƒX€ƒ€ùƒX€ƒ€ùƒX€ƒ €ùƒX€ƒ €ùƒX€ƒ€ƒ $€ƒ €ƒ‹ü€…ãã00€ã‹Z…¥Ž2Ž2€ã€‰‹ý€…ää00€äƒ©…¥Ž5Ž5 €ä€„ƒ[…¥Ž8Ž8‹þ ‹ÿ…¥Ž<Ž<Œ Œ…¥Ž@Ž@Œ€‚Œ…¥ŽDŽDŒ€ó‹ô…¥ŽHŽHŒ€ô‹ö…¥ŽLŽLŒ€ƒƒX…¥ŽOŽOŒ€ùƒ©€‰€ùƒ©€‰€‰€ùƒ©€‰€ùƒ©€‰€ùƒ©€‰€ùƒ©€‰ €ùƒ©€‰ €ùƒ©€‰€‰ $€‰ €‰Œ€…åå00€å†!…¥ŽVŽV€å/€‰^€Ü€œ¡…¥Ž^ Ž^€õ¢…¥Ž_ Ž_|£…¥Ž` Ž`€ÈŒ Œ …¥Ž]Ž]Œ |ê…¥ŽjŽj€ÈŒ Œ …¥ŽjŽjŒ €ù†!€È€ù†!€È€È€ù†!€È€ù†!€È€ù†!€È€ù†!€È €ù†!€È €ù†!€È€È $€È €ÈŒ€…ææ00€æŒ…¥ŽsŽs€æL€Œ€ö€÷€ö€öŒ€…çç00! ‡Œ…¥ŽtŽt…¥ŽtŽt€¤N‡Œ…¥ŽuŽu…¥ŽuŽu€¤N‡Œ…¥ŽvŽv…¥ŽvŽv€¤N‡Œ…¥ŽwŽw…¥ŽwŽw€¤N‡Œ…¥ŽxŽx…¥ŽxŽx€¤N‡Œ…¥ŽyŽy…¥ŽyŽy€¤N‡Œ…¥Ž{Ž{…¥Ž{Ž{€ê€¤€£…¥Ž{Ž{N‡Œ…¥Ž|Ž|…¥Ž|Ž| €¤†8…¥Ž|Ž|N‡Œ…¥Ž}Ž}…¥Ž}Ž} €¤Œ…¥Ž}Ž}N‡ Œ…¥Ž~Ž~…¥Ž~Ž~ €¤N€çŒ…¥Ž¯ ޝ$€ç$€…èè00!!@…¥Ž¯)ޝH#B…¥Ž¯LޝTC…¥Ž¯Wޝ]€è‰7…¥¨ ¨€è€ù‰7$€ù‰7$€ù‰7$ €ù‰7$ €ù‰7$$  $€…éé00!!@…¥¨¨B…¥¨ ¨& C…¥¨)¨.€é‰8…¥© ©€é€ù‰8$€ù‰8$€ù‰8$ €ù‰8$ €ù‰8$$  $€…êê00!!@…¥©©B…¥© ©&C…¥©)©/ E…¥©2©7F…¥©:©@¯…¥©C©I Œ…¥©L©Q€ê‰9…¥ª ª€ê€ù‰9$€ù‰9$€ù‰9$ €ù‰9$ €ù‰9$$  $€…ëë00!!@…¥ªª# B…¥ª&ª+€ë0A1!!„G1!!€ë€ç€…3€¬€è€…4€­O€Œ €ø@iG@1A1!!„IiGI2A1!!„2KiGK3A1!!„3MiGM4A1!!„4OiGO5A1!!„6P100„556 6RiGR7A1!!„8S133„9T13"3%„7789 89ViGV:A1!!„;S166„A1!!„?S199„@T19"9%„AW19(9+„BZ19.91„>>?@AB ?@AB\iG\CA1!!„DP1<'<)„CCDD_iG_EA1!!„FP1?7?9„EEF FaiGaGA1!!„HP1B B"„GGH HdiGdIA1!!„JP1E!E#„IIJ JgiGgKA1!!„LP1HH„KKL LiiGiMA1!!„NP1L&L(„MMNNkiGkOA1!!„PP1OO„OPmiGmQA1!!„RP1SS„Q RŒ!ììSS!!€ìŒ"1WW€ì/€‰^€ÜŒ#VííSW!%‡!Œ$1Y Y2€ž €žSA1Y5Y7„Sÿ¤@A1Y5Y7Œ%P‡"Œ&1\\ 2€¡€¡ TA1\,\.„ TT ÿ¤@A1\,\.Œ'P‡#Œ(1__2€£€£UA1_<_>„ UU ÿ¤@A1_<_>Œ)P‡$Œ*1aa2€¦€¦VA1a5a7„ Vÿ¤@A1a5a7Œ+P€íŒ,Œ-$6€í‹î,W%{‡%Œ-Œ-€ù€¬Q Q‡&Œ-Œ-€ù€ù€¬Q€ù €ùQ‡'Œ-Œ-€ù€¬QQ‡(Œ-Œ-€ù€¬QQ‡)Œ-Œ-€ù€¬Q Q‡*Œ-Œ-€ù €¬Q  Q‡+€ÇŒ-) )Œ/ €úÿ¤@RR‡,Œ1Œ-* *Œ/ €ú€ûÿ¤@RR‡-Œ---)Œ---)€ü€¬T T‡.Œ---)Œ---)€ü€ü€¬T€ü €üT‡/Œ---)Œ---)€ü€¬TT‡0Œ---)Œ---)€ü€¬TT‡1Œ---)Œ---)€ü€¬T T‡2Œ---)Œ---)€ü €¬T  T‡3Œ4Œ-F FŒ/†x†x€ý ÿ¤@UŒ6U‡4Œ7Œ-H HŒ/†z†z$€ý ÿ¤@UU‡5Œ8Œ-K KŒ/†}†}€ý€þ€ÿ Zÿ¤@UŒ>Œ-K,K?Œ?Œ-KZKbŒ@Œ-KnKvŒAŒ-K€€K€…ŒBŒ-K€™K€¹ŒCU‡6ŒDŒ-M MŒ/†‡†‡€ý€ÿÿ¤@UŒ?Œ-M,M4Œ@Œ-M@MHŒAŒ-MRMWŒGŒ-M`MhŒHU‡7ŒIŒ-O OŒ/†’†’€ý€ÿÿ¤@UŒ?Œ-O,O4Œ@Œ-O@OHŒAŒ-OROWŒJU‡8ŒKŒ-Q QŒ/†˜†˜€ý€ÿ€úÿ¤@UŒ?Œ-Q,Q4Œ@Œ-Q@QHŒAŒ-QRQWŒLU‡9ŒMŒ-S S!Œ/†ž†ž&€ý€ÿ ÿ¤@UŒ?Œ-S,S4Œ@Œ-S@SHŒAŒ-SRSWŒGŒ-S`ShŒOŒ-SoS|ŒPU‡:ŒQŒ-V V Œ/†¤†¤%€ýÿ¤@UŒSU‡;Œ-^^ Œ-^^ €¬``‡<Œ-^^ Œ-^^ €¬` `‡=Œ-^^ Œ-^^  €¬`  `‡>Œ-€”€”#Œ-€”€”#€¬aa‡?Œ-€”€”#Œ-€”€”#€¬a a‡@Œ-€”€”#Œ-€”€”# €¬a  a‡A‚óŒ-€€Œ/ˆ ˆ   ÿ¤@cŒXc‡BŒYŒ-€¡ €¡Œ/ˆˆ ÿ¤@cŒZŒ-€¡€¡!Œ[Œ-€¡-€¡3Œ\Œ-€¡>€¡EŒ]c‡CŒ^Œ-€¥ €¥Œ/ˆˆ €þÿ¤@cŒZŒ-€¥€¥"Œ[Œ-€¥-€¥3Œ\Œ-€¥>€¥EŒ_c‡DŒ`Œ-€¬ €¬Œ/ˆHˆH €þ ÿ¤@cŒbŒ-€¬€¬#ŒZŒ-€¬8€¬@ŒcŒ-€¬K€¬VŒ[Œ-€¬^€¬dŒ\Œ-€¬o€¬vŒdŒ-€¬€‡€¬€—ŒeŒ-€¬€¬€¬€¼Œfc‡EŒgŒ-€° €°(Œ/ˆXˆX+  ÿ¤@cŒZŒ-€°+€°3Œ[Œ-€°?€°EŒiŒ-€°Q€°`Œjc‡FŒgŒ-€³ €³(Œ/ˆ[ˆ[+  ÿ¤@cŒZŒ-€³+€³3Œ[Œ-€³?€³EŒiŒ-€³Q€³`ŒkŒ-€³u€³Œlc‡GŒmŒ-€¸ €¸Œ/ˆˆ ÿ¤@cŒ\Œ-€¸€¸"Œnc‡HŒoŒ-€º €ºŒ/ˆˆ! €þÿ¤@cŒpŒ-€º!€º%Œ\Œ-€º,€º3Œqc‡IŒrŒ-€Â €Â.Œ/ˆ#ˆ#1 €þ€ýÿ¤@cŒZŒ-€Â1€Â9Œ\Œ-€ÂD€ÂKŒsc‡JŒtŒ-€Æ €ÆŒ/ˆ,ˆ, ÿ¤@cŒuc‡KŒvŒ-€Ê €Ê"Œ/ˆ?ˆ?% ÿ¤@cŒ\Œ-€Ê$€Ê+Œwc‡LŒxŒ-€Í €Í!Œ/ˆ_ˆ_$ ÿ¤@cŒ\Œ-€Í#€Í*Œyc‡MŒzŒ-€Ð €Ð Œ/ˆaˆa# ÿ¤@cŒ{c‡NŒ|Œ-€Ó €Ó#Œ/ˆfˆf& ÿ¤@cŒ}c‡OŒ~Œ-€Ö€Ö5Œ/ˆhˆh5ÿ¤@cŒc‡PŒ€Œ-€Ù€Ù9Œ/ˆiˆi9ÿ¤@cŒc‡QŒ‚Œ-€Ü €ÜKŒ/ˆ3ˆ3N ÿ¤@cŒƒc‡RŒ„Œ-€ß €ßŒ/ˆCˆC" ÿ¤@cŒ\Œ-€ß!€ß(Œ…c‡SŒ†  Œ†   €¬f f‡TŒ†  Œ†    €¬f   f‡UŒ†  Œ†   €¬ff‡VŒ†  Œ†   €¬ff‡WŒ†  Œ†   €¬f f‡XŒ†  Œ†    €¬f  f‡YŒ†(("Œ†(("€¬g g‡ZŒ†(("Œ†(("€¬g g‡[Œ†(("Œ†(("€¬gg‡\Œ†(("Œ†(("€¬gg‡]Œ†(("Œ†(("€¬g g‡^Œ†(("Œ†((" €¬g  g‡_Œ†44Œ†44€¬] ]‡`Œ†44Œ†44€¬] ]‡aŒ†44Œ†44€¬]]‡bŒ†44Œ†44€¬]]‡cŒ†44Œ†44€¬] ]‡dŒ†44Œ†44 €¬]  ]‡e€ÇŒ†; ;Œ‰„À„Àÿ¤@hh‡fŒ‹Œ†< <Œ‰„Á„Áÿ¤@hh‡gŒŒŒ†= =Œ‰„ì„ìÿ¤@hh‡hŒŒ†B BŒ‰„ò„òÿ¤@[[‡i‚óŒ†EE!Œ‰„þ„þ* + ÿ¤@[€ýŒ†E$E.€ŠŒ†E#D ŒÍŒÍŒ†##yŒ‡ yŒ‡  yŒ‡ yŒ‡ yŒ‡ yŒ‡    ŒÎŒ,ïïWW  €ïŒ¤Œ”!€ï€ç€…3€¬€è€…4€­ ŒÏŒ” ŒÐŒ”  ŒÑŒ”  Œ¢Œ”""Œ,ððWW  €ðŒÒŒ”TT$€ðŒÓŒ,bññWW ¥‡ ŒÔŒ”VVŒ•€þÿ¤@z‡¡ŒÕŒ”WW1Œ•‚&‚&1  ÿ¤@z‡¢Œ×Œ”XXŒ•’’ÿ¤@z‡£ŒØŒ”YY)Œ•íí)ÿ¤@z‡¤ŒÙŒ”ZZŒ•‚€‚€€þÿ¤@z€ñŒ9Œ”&&$€ñ€Ž€‚IbŒ“yŒ9Œ“€þŒ—yŒ9Œ—€þˆSyŒ9ˆS€þŒyŒ9Œ€þŒ yŒ9Œ €þ€ÿŒ¢yŒ9Œ¢€þyŒ9€þŒ,òòWW¥¥€òŒÚŒ-[[,€òŒÛŒ,óóWW¥¥€óŒ5Œ-DD$€ó€Ž€‚IbŒ4yŒ5Œ4€ý Œ7yŒ5Œ7€ý Œ8yŒ5Œ8€ý€þ€ÿ ZŒDyŒ5ŒD€ý€ÿŒIyŒ5ŒI€ý€ÿŒKyŒ5ŒK€ý€ÿ€úŒMyŒ5ŒM€ý€ÿ ŒQyŒ5ŒQ€ýŒÜŒ,ôôWW¥¥€ôŒUŒ-€”€”#€ô€è€…4€­ŒÝŒÝŒ-€•€•ŒÞŒÞŒ-€–€– €ýêŒ-€—€—,ŒßŒßŒ-€—€—yŒUyŒUyŒU  ŒàŒ,õõWW¥¥€õŒáŒºBB €õ ŒâŒºCJ!ŒãŒºCC !ŒäŒºDD!ŒYŒºEE!ŒåŒºFF!€ðŒæŒºGG!ŒçŒºHH! ŒèŒºII!@ŒéŒºJJ"Œ,ööWW¥¥€öŒ¹Œ±..!€ö€ç€…3€¬€è€…4€­ŒŠŒ±//ŒëŒ±00 ŒìŒ,÷÷WW¥¥€÷Œ»ŒºZZ$€÷ŒíŒº\\ŒîŒïŒº^^ŒðŒñŒº__#ŒóŒº``!ŒáŒºbbŒôŒõŒºdd ŒöŒ÷ŒºffŒøŒùŒºhhŒúyŒ»yŒ»yŒ»yŒ»yŒ»yŒ»  ŒûŒ,øøWW¥¥€øŒRŒº22"€ø ŒâŒº3=ŒüŒº33 zŒº44 ŒýŒº55 ŒþŒº66 ŒÿŒº77jŒº88 Œº99Œº::Œº;; Œº<<  Œº=="Œ,ùùWW¥¥€ùŒòŒºLL!€ù ŒâŒºMW#ŒüŒºMM #zŒºNN #ŒýŒºOO #ŒÿŒºPP#jŒºQQ #ŒºRR #ŒºSS#ŒºTT#ŒºUU# ŒºVV# ŒþŒºWW "Œ,úúWW¥¥€ú Œ†JJ€ú Œ,:ûûWW¥¦‡¥ Œ†KK"Œ‰cc"$ÿ¤@€€û Œº€€€ûŒ,BüüWW¦§‡¦Œº€‚€‚Œ½dd%#!ÿ¤@‚€üŒÅŒº{{#€ü€Ž€‚IbyŒÅŒÈyŒÅŒÈŒÉyŒÅŒÉŒ,ýýWW§§€ýŒ”]]€ýŒ,iþþWW§©‡§Œ”^^Œ•00 ÿ¤@ƒ‡¨Œ”__'Œ•55'ÿ¤@ƒ€þŒ”55€þŒ,gÿÿWW©«‡©Œ”77Œ•'' ÿ¤@„‡ªŒ”99Œ•++ ÿ¤@„€ÿŒ¦Œ”DD€ÿ ¡Œ”EE&¢Œ”EE,Œ”EEꌔFFŒ”FF&ꌔG G††Œ”GG yŒ¦yŒ¦yŒ¦  Œ,WW«« !"Œ,ÑW[«´ ‡«#!$€Ù€Ù'(ÿ¤@†&!$'†‡¬(!"$€Ú€Ú$'ÿ¤@†)†‡­*!$€Û€Û'ÿ¤@†+†‡®Œ|!'$€ë€ë)'ÿ¤@†,†‡¯-!$€á€á')ÿ¤@†/!0†‡°1!$€ç€ç')ÿ¤@†/!2†‡±3!!!$€ð€ðWA!!$!&„'WWÿ¤@†A!!$!&4†‡²5!$$$€õ€õXA!$%$'„'XZXÿ¤@†A!$%$'6†‡³ !''$'ÿ¤@7‰%!  8Œ, YY´´.! 9Œ, YY´´ ! €Ž€‚Ib#‰ #'((‰ ('*‰ *'Œ|‰ Œ|'-‰ -')1‰ 1')3‰ 3YA!!$!&„'YY5‰ 5ZA!$%$'„'ZZZ:Œ, [[´´&Œº00€ÿ€ÿ;Œ,[[´´„øŒ-€ê€ê<Œ,Ì[[´¸‡´=Œ-€ë€ë!Œ/ˆlˆl! ÿ¤@Їµ>Œ-€ì€ì%Œ/ˆmˆm% ÿ¤@Ї¶?Œ-€í€íŒ/ˆnˆnÿ¤@Ї·@Œ-€ï€ï%Œ/ˆoˆo%ÿ¤@ŠŒ:Œº--AŒ,[[¸¸Œ.Œ-‹LŒ- BŒ-!CŒ- DŒ-yŒ.€ùyŒ.€ù€ùyŒ.€ùyŒ.€ùyŒ.€ùyŒ.€ù  €ùŒ,[[¸¸ŒVŒ-€ƒ€ƒ3êŒ-€ƒZ€ƒh ŒVŒVŒ-€ƒ6€ƒUEŒ,  [[¸¸ FŒ©  0 GŒ,H  [[¸¹‡¸Œ—Œ©!!1Œª(ÿ¤@‹ Œ˜Œ©* €Ž€‚IbŒ¨yŒ˜Œ¨Œ«yŒ˜Œ«Œ¬yŒ˜Œ¬Œ­yŒ˜Œ­Œ®yŒ˜Œ®Œ¯yŒ˜Œ¯ Œ°yŒ˜Œ°Œ,  [[¹¹ ŒžŒ±66 €Ž€‚IbŒ¸yŒžŒ¸HŒ,  [[¹¹ IŒ±:: JŒ,l  [[¹»‡¹KŒ±;;*Œ³aa!*ÿ¤@‡ºMŒ±<<Œ³ ÿ¤@ Œ;Œ-??$ Œ,[[»»ŒEŒ->>Œ,[[»»Œ0Œ-((#€Ž€‚Ib€ÇyŒ0€Ç€úŒ1yŒ0Œ1€ú€ûŒ,[[»»Œ2Œ-€ç€…3€¬€è€…4€­DŒ-  ‰{Œ-!! €ùNŒ-"" OŒ-$$PŒ,[[»»Œ¾Œºrr!€Ž€‚IbŒ¼yŒ¾Œ¼ŒÂyŒ¾ŒÂŒÄyŒ¾ŒÄQŒ,[[»»Œ¿Œº€¶RŒ,[[»»SŒ†OO$TŒ,W[[»Ä ‡»UŒ†PPŒ‰kk ÿ¤@އ¼VŒ†QQ/Œ‰€ü€ü/'+ÿ¤@އ½XŒ†RRŒ‰„N„N * +ÿ¤@އ¾YŒ†SSŒ‰„S„S* +ÿ¤@އ¿ZŒ†TTŒ‰‚H‚Hÿ¤@އÀ[Œ†UU"Œ‰‚L‚L"ÿ¤@އÁŒIŒ†VVŒ‰ƒ© ƒ©ÿ¤@އÂ\Œ†WWŒ‰€± €±  ÿ¤@އÃ]Œ†XXŒ‰€â€â ÿ¤@Ž^_$`Œ,Ã[[Äü8‡Ä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_**_**€¤‡Þ{_++_++€¤‡ß|_,,_,,€¤‡à}_--_--€¤‡á~_.._..€¤‡â_//_//€¤‡ã€_11_11€¤‡ä_22_22€¤‡å‚_33_33€¤‡æƒ_44_44€¤‡ç„_55_55€¤‡è…_66_66€¤‡é†_77_77€¤‡ê‡_99_99€¤‡ëˆ_::_::€¤‡ì‰_;;_;;€¤‡íŠ_<<_<<€¤‡î‹_==_==€¤‡ïŒ_>>_>>€¤‡ð_@@_@@€¤‡ñŽ_AA_AA€¤‡ò_BB_BB€¤‡ó_CC_CC€¤‡ô‘_DD_DD€¤‡õ’_EE_EE€¤‡ö“_GG_GG€¤‡÷”_HH_HH€¤‡ø•_II _II €¤‡ù–_JJ"_JJ"€¤‡ú—_KK_KK€¤‡û˜_LL_LL€¤ŒaŒ-€€$€è€…4€­€ç€…3€¬ êŒ-€€% ŒaŒaŒ-€€™Œ,[[üüŒWŒ-€›€›&€Ž€‚Ib‘€š ,  ‚óyŒW‚ó  ŒYyŒWŒY Œ^yŒWŒ^ €þŒ`yŒWŒ` €þ ŒgyŒWŒg  ŒgyŒWŒg  ŒmyŒWŒm ŒoyŒWŒo €þŒryŒWŒr €þ€ýŒtyŒWŒt ŒvyŒWŒv ŒxyŒWŒx ŒzyŒWŒz Œ|yŒWŒ| Œ~yŒWŒ~Œ€yŒWŒ€Œ‚yŒWŒ‚ Œ„yŒWŒ„ Œ,[[üüŒ¥Œ”?? ››Œ”@@ œœŒ”AAŒ”BB yŒ¥yŒ¥yŒ¥yŒ¥yŒ¥yŒ¥  Œ,[[üüžŒº€„€„ŸŒ,6[[üý‡ü Œº€…€… Œ½€Ç€Ç ÿ¤@’ŒNŒ-88"€ç€…3€¬€è€…4€­€üêŒ-::+¡¡Œ-::¢€ÿ¡Œ-<< ¢Œ-<#<)££Œ-<<¤Œ,[[ýýŒ3Œ---)/€‰^€Ü€üŒ-// €ü¥¥Œ-11êŒ-33€üúúŒ-33êŒ-55€ü¦¦Œ-55yŒ3€üyŒ3€ü€üyŒ3€üyŒ3€üyŒ3€üyŒ3€ü  €üŒ,[[ýý§Œ-€†€†(ŒâŒ-€‡€‹-¨Œ-€‡€‡-©Œ-€ˆ€ˆ-ªŒ-€‰€‰-«Œ-€Š€Š -¬Œ-€‹€‹ "­Œ,[[ýýŒ=Œ†AA"€Ž€‚IbŒyŒ=Œ‚óyŒ=‚ó* + Œ‘yŒ=Œ‘‚ïyŒ=‚ïŒ,[[ýýŒ²Œ±! ®®Œ±¯¯Œ±°°Œ± ±±Œ±²²Œ±³³Œ±´´Œ±µµŒ±¶¶Œ±yŒ²yŒ²yŒ²yŒ²yŒ²yŒ²  Œ,[[ýýŒ´Œ±""€Ž€‚Ib€ÇyŒ´€ÇŒµyŒ´ŒµŒŒyŒ´ŒŒ…îyŒ´…î8yŒ´8Œ¶yŒ´Œ¶Œ·yŒ´Œ· ·Œ,[[ýýŒŠŒ†::€Ž€‚Ib€ÇyŒŠ€ÇŒ‹yŒŠŒ‹ŒŒyŒŠŒŒŒ,  [[ýý ¸Œ-||# ¹Œ,6!![[ýþ‡ýºŒ-Œ/†Ê†Ê.ÿ¤@¼•!ŒFŒ†44!ꌆ66(ŒFŒFŒ†66½yŒFyŒFyŒFyŒFyŒFyŒF  ¾Œ,""[[þþ"ŒˆŒ†((""¿¿Œ†))¡Œ†+#+) ¢Œ†+,+6ŒˆŒˆŒ†++À ꌆ--BÁÁŒ†--Âꌆ/(/.ÃÃŒ†//$ÄyŒˆyŒˆyŒˆyŒˆyŒˆyŒˆ  ÅŒ,##[[þþ#Œ”==#Œ,$$[[þþ$Œ§Œ”II$ÆÆŒ”KK ¡Œ”MM#&¢Œ”M&M4ÇÇŒ”MM ꌔOO"ÈÈŒ”OOÉÉŒ”PPyŒ§yŒ§yŒ§  Œ,%%[[þþ%ÊŒ-rr#%ËŒ,»&&[[þ‡þÌŒ-uu)Œ/†®†®)ÿ¤@Í–‡ÿÎŒ-ww'Œ/†±†±'ÿ¤@ŒZŒ-w*w2ÏŒ-w>wKЖˆÑŒ-yy%Œ/†Â†Â% ÿ¤@Ò–&ŒÃŒº&ŒâŒº(ÓŒº ÔŒºjŒº ŒþŒº ÕŒºÖŒº׌º   ØŒº!! ÙŒº"" ÚŒº## ÛŒº$$ ÜŒº%%ÝŒº&& ÞŒº(("Œ,''[['ŒTŒ-^^ 'ߌ-aaàŒ-bbáŒ-cc âŒ-hh&ã äŒ-jjå æŒ-llç/èŒ-mmyŒTyŒTyŒT  éŒ,(([[(êë(ìŒ,›),[ˆíë)ë)   €¤‰Lë+-†ë56˜ˆîë((&ë((&   €¤‰Lë(((*†ë(2(3˜ˆïë??ë??[Aë88„™[01[1[1[ÿ´@™Aë88ó™ˆôëAA ëAA \Aë88„™\2 \ÿ´@™Aë88ö™ˆ÷ëDD%ëDD%]Aë88„™]1]21 ]ÿ´@™Aë88ø™ˆùëGG ëGG ^Aë88„™^3^3^ÿ´@™Aë88û™ˆüëJJëJJ_Aë88„™_4_4_ÿ´@™Aë88þ™ˆÿëMM!ëMM!`Aë88„™`5`5`ÿ´@™Aë88Ž™ˆ ŽëPP*ëPP*aAë88„™a6728 aÿ´@™Aë88™ˆ ŽëSS0ëSS0bAë88„™b2bÿ´@™Aë88™ˆ ŽëVV!ëVV!cAë88„™c019cÿ´@™Aë88™ˆ ë8 8ë8 8dAë88„™d‚´™Aë88™ˆ ôëBB$ëBB$eAë88„™e2 e€´™ô™efAë88„2 fAë88Ž ëB%B(Ž ëB)B+™ˆ÷ëEE)ëEE)gAë88„™g1g21 g€´™÷™ghAë88„1h21 hAë88Ž ëE*E9Ž ëE;E>‚ ëE@EDŽ ëEFEH™ˆùëHH$ëHH$iAë88„™i3i3i€´™ù™ijAë88„3j3jAë88Ž ëH%H4Ž ëH6H:™ˆüëKK!ëKK!kAë88„™k4k4k€´™ü™klAë88„4l4lAë88Ž ëK"K1ŠÈëK3K:™ˆÿëNN%ëNN%mAë88„™m5m5m€´™ÿ™mnAë88„5n5nAë88Ž ëN&N5Ž ëN7N9™ˆŽëQQ.ëQQ.oAë88„™o6728 o€´™Ž™opAë88„6728 pAë88ŽëQ/Q=ŽëQ?QLŽëQNQVŽëQXQ`ŽëQbQh™ˆŽëTT4ëTT4qAë88„™q2q€´™Ž™qrAë88„2rAë88ŽëT5T=™ˆŽëWW%ëWW%sAë88„™s019s€´™Ž™stAë88„019tAë88ŽëW'W,ŽëW.W6ŽëW8WD™ˆŽëYY ëYY u€”€•Pv€”€•Pw€”€•Puvuwvw€¤€”€•P€”€•P€”€•PŽëY Y'ëYYŽëYY˜ˆŽë\\ ë\\ x€”€•Py€”€•Pz€”€•P xy  zz€¤€”€•P€”€•P€”€•PŒÖë\ \Žë\\Žë\\Žë\\'Žë\0\9Žë\@\K˜ˆŽ뀎€Ž뀎€Ž{A뀎G€ŽI„™{{€¤A뀎G€ŽIŒ™ë€Ž€ŽŒšë€Ž €Ž#Ž ë€Ž%€Ž.Ž!뀎0€Ž7Ž"˜)Ž#ë, ,)/€‰^€Ü1êë--:€¦€¦ë- -3êë..!:Ž$Ž$ë. .*êë//3:––ë/ /;êë00!:Ž&Ž&ë0 0<êë11%:Ž(Ž(ë1 15êë22':Ž)Ž)ë2 24êë33:‚›‚›ë3 3Ž*Œ,ê**||*ñë5 5*:Œ,ê++||+|Aë88„ðë8 8+§€Ž+= ˜ðï}Aë88„™}01}1}1}˜ðô~Aë88„™~2 ~˜ð÷Aë88„™121 ˜ðù€Aë88„™€3€3€˜ðüAë88„™44˜ðÿ‚Aë88„™‚5‚5‚˜ðŽƒAë88„™ƒ6728 ƒ˜ðŽ„Aë88„™„2„˜ðŽ…Aë88„™…019…ï˜ðï}Aë88„™}01}1}1}ô˜ðô~Aë88„™~2 ~÷˜ð÷Aë88„™121 ù˜ðù€Aë88„™€3€3€ü˜ðüAë88„™44ÿ˜ðÿ‚Aë88„™‚5‚5‚Ž˜ðŽƒAë88„™ƒ6728 ƒŽ˜ðŽ„Aë88„™„2„Ž˜ðŽ…Aë88„™…019…˜ð†Aë88„™†ô˜ðô‡Aë88„™‡2 ‡÷˜ð÷ˆAë88„™ˆ1ˆ21 ˆù˜ðù‰Aë88„™‰3‰3‰ü˜ðüŠAë88„™Š4Š4Šÿ˜ðÿ‹Aë88„™‹5‹5‹Ž˜ðŽŒAë88„™Œ6728 ŒŽ˜ðŽAë88„™2Ž˜ðŽŽAë88„™Ž019ŽŒ,ê,,,  ,/€‰^€ÜŽ,Ž,  Œ‘Œ‘  iiiiii  ---Ž-Ž.-Ž/e..ˆŽ0Ž. Ž1 ÿ¤@¨ˆŽ2Ž. Ž1 ÿ¤@¨.&Ž3 0 5.Ž4S/4K.ˆŽ5Ž3Ž6€“€“>ÿ¤@ªˆŽ8Ž3Ž6€”€”>ÿ¤@ªˆŽ9Ž3 Ž62 2€­ ÿ¤@{{ˆŽ:Ž3 Ž63 3€­ ÿ¤@{{ˆŽ;Ž3 Ž65 5€­ €—ÿ¤@{{ˆŽ<Ž3!!Ž677€— ÿ¤@{{ˆ Ž=Ž3##Ž666€—ÿ¤@{Ž>{ˆ!Ž?Ž3&& Ž6€–€–  ÿ¤@Œ™Ž3& &Ž@Ž3&&ŽAªˆ"ŽBŽ3(( Ž6€¼€¼ €µ ÿ¤@ªˆ#ŽCŽ3, ,Ž6€¥ €¥€­ ÿ¤@ˆ$ŽDŽ3- -Ž6€¦ €¦€­ ÿ¤@ˆ%ŽEŽ3. .Ž6€§ €§€­ ÿ¤@ˆ&ŽFŽ3/ /Ž6€¨ €¨€­ ÿ¤@ˆ'ŽGŽ30 0Ž6€ª €ª€­  ÿ¤@ˆ(ŽHŽ31 1Ž6€« €«€­  ÿ¤@ˆ)ŽIŽ32 2Ž6€­ €­€­  ÿ¤@ˆ*ŽJŽ33 3Ž6€® €®€­  ÿ¤@ˆ+ŽKŽ34 4Ž6€¬ €¬€­ ÿ¤@ˆ,ˆSŽ35 5Ž6€¯ €¯€­ ÿ¤@ˆ-ŽLŽ39 9Ž6€© €©€­  ÿ¤@ŽMˆ.ŽNŽ3: :Ž6€° €°€­  ÿ¤@ˆ/ŽOŽ3; ;Ž6€² €²€­ ÿ¤@ˆ0ŽPŽ3<<Ž6€›€› ÿ¤@ˆ1ŽQŽ3??Ž6€¸€¸>   ÿ¤@ŽRªˆ2ŽSŽ3BB Ž6€·€·    ÿ¤@ŽTªˆ3ŽUŽ3DDŽ6€ç€ç  ÿ¤@ªˆ4ŽVŽ3GGŽ6€¾€¾€µ ÿ¤@ŽWªˆ5ŽXŽ3II Ž6€À€À ? ÿ¤@ªˆ6Ž[Ž3JJŽ6€Á€Á? ÿ¤@ªˆ7Ž\Ž3KKŽ6€Â€Â5 ÿ¤@ªˆ8Ž]Ž3LLŽ6€Ã€Ã5 ÿ¤@ªˆ9Ž^Ž3NN Ž6€È€È    ÿ¤@ªˆ:Ž_Ž3OO Ž6€Å€Å    ÿ¤@ªˆ;Ž`Ž3PP Ž6€Æ€Æ    ÿ¤@ªˆ<ŽaŽ3QQ Ž6€Ç€Ç    ÿ¤@ªˆ=ŽbŽ3SSŽ6€Ë€Ë   ÿ¤@ªˆ>ŽcŽ3TTŽ6€Õ€Õ   ÿ¤@ªˆ?ŽdŽ3UUŽ6€Ú€Ú   ÿ¤@ªˆ@ŽeŽ3VVŽ6€Þ€Þ   ÿ¤@ªˆAŽfŽ3XX Ž6€á€á  ÿ¤@ªˆBŽgŽ3YYŽ6€â€â ÿ¤@ªˆCŽhŽ3ZZ Ž6€ã€ã  ÿ¤@ªˆDŽiŽ3[[Ž6€ä€ä ÿ¤@ªˆEŽjŽ3\\Ž6€å€å ÿ¤@ªˆFŽkŽ3__Ž6€ñ€ñ ÿ¤@ªˆGŽlŽ3``Ž6€ò€ò ÿ¤@ª/Ž7Ž3/€—&00HH0ŒÖŽ30€æ€…2€«¬€Žm@€è€…4€­Ž9ªŒÖŽ9€­ Ž:ªŒÖŽ:€­ Ž;ªŒÖŽ;€­ €—Ž<ªŒÖŽ<€— Ž=ªŒÖŽ=€—€®&11HH1'Ž3++ 1€æ€…2€«¬€Žm@€è€…4€­ŽCª'ŽC€­ ŽDª'ŽD€­ ŽEª'ŽE€­ ŽFª'ŽF€­ ŽGª'ŽG€­  ŽHª'ŽH€­  ŽIª'ŽI€­  ŽJª'ŽJ€­  ŽKª'ŽK€­ ˆSª'ˆS€­ ŽLª'ŽL€­  ŽNª'ŽN€­  ŽOª'ŽO€­ ŽPª'ŽP €®&22HH2ŽnŽ3bb 2Žo&33HJˆHŽpŽ3ddŽ6€÷€÷ ÿ¤@Œ™Ž3ddŽ@Ž3dd#­ˆIŽqŽ3ee Ž6€ø€ø  ÿ¤@­3&Ž3hh 3Žr&@44JKˆJŽqŽ3ii Ž6€ü€ü  ÿ¤@®4ŽsŽt*=4ŽuU59K[ˆK‚ïŽtŽvPPAÿ¤@¯¯ˆLŽxŽt Žv[[AAÿ¤@¯¯ˆMŽt Žt $€¬°°ˆNŽt Žt $€¬° °ˆOŽt Žt $ €¬°  °ˆPŽt )Žt )$€¬±±ˆQŽt )Žt )$€¬± ±ˆRŽt )Žt )$ €¬±  ±ˆSŽtŽtB€¬² ²ˆTŽtŽtBB€¬²B B²ˆUŽtŽtB€¬²²ˆVŽtŽtB€¬²²ˆWŽtŽtB€¬² ²ˆXŽtŽtB €¬²  ²ˆYŽ|Žt""ŽvƒsƒsVBA€îÿ¤@³ˆZŽ}Žt##ŽvƒŒƒŒVA Cÿ¤@³5ŽwŽt5€Ž€‚Ib‚ﳎw‚ïAŽx³ŽwŽxAAŽs66[[6ŽyŽt 6³Žy$³Žy$³Žy$  $Žs77[[$@Žt"7ŽzŽt )7³Žz$³Žz$³Žz$  $Žs88[[@Žt-3 BŽt6A8Ž{Žt8/€‰^€ÜB‰p‰pŽt  B‰n‰nŽt!!³Ž{B³Ž{BB³Ž{B³Ž{B³Ž{B³Ž{B  BŽs99[[9‹fŽ*:9Ž€G :F[³Xˆ[ŽŽD€¬µ µˆ\ŽŽDD€¬µD Dµˆ]ŽŽD€¬µµˆ^ŽŽD€¬µµˆ_ŽŽD€¬µ µˆ`ŽŽD €¬µ  µˆaŽŽE€¬¶ ¶ˆbŽŽEE€¬¶E E¶ˆcŽŽE€¬¶¶ˆdŽŽE€¬¶¶ˆeŽŽE€¬¶ ¶ˆfŽŽE €¬¶  ¶ˆgŽƒŽ Ž„-- Fÿ¤@¸ˆh‚uŽ Ž„.. FFFÿ¤@¸ˆi„Ž  Ž„// FFÿ¤@¸ˆjކŽ!!Ž„00EFFÿ¤@¸ˆkŽ'' Ž'' G€¬¹¹ˆlŽ'' Ž'' G€¬¹ ¹ˆmŽ'' Ž'' G €¬¹  ¹ˆnŽ++Ž++H€¬ººˆoŽ++Ž++H€¬º ºˆpŽ++Ž++H €¬º  ºˆqŽ22Ž22I€¬» »ˆrŽ22Ž22II€¬»I I»ˆsŽ22Ž22I€¬»»ˆtŽ22Ž22I€¬»»ˆuŽ22Ž22I€¬» »ˆvŽ22Ž22I €¬»  »ˆwŽ77Ž77C€¬´´ˆxŽ77Ž77C€¬´ ´ˆyŽ77Ž77C €¬´  ´ˆzŽŠŽ@@ Ž„€ƒ€ƒ €îÿ¤@¸ˆ{Ž‹ŽAA Ž„€¤€¤ F€îÿ¤@¸ˆ|ŽŒŽBB Ž„€„€„ F€îÿ¤@¸ˆ}ŽŽCC Ž„€…€… €î€î€îÿ¤@¸ˆ~‚žŽDD Ž„€†€† J€î€îÿ¤@¸ˆŽŽEE Ž„€‡€‡ €î€îÿ¤@¸ˆ€‚ŽFF Ž„€‰€‰ €î€î€î€îÿ¤@¸ˆŽŽGGŽ„€Š€ŠE F€î€îÿ¤@¸ˆ‚Ž‘ŽHH Ž„€’€’ J€î€î€îÿ¤@¸ˆƒ‚¶ŽII Ž„€Œ€Œ J€î€î€îÿ¤@¸ˆ„Ž’ŽJJ Ž„€–€– EF€î€îÿ¤@¸ˆ…Ž“ŽKK Ž„€—€— KF€î€îÿ¤@¸ˆ†Ž•ŽLL Ž„€˜€˜ KF€î€îÿ¤@¸ˆ‡Ž–ŽMM Ž„€™€™ EF€î€îÿ¤@¸ˆˆŽ—ŽNNŽ„€š€šEF€î€îÿ¤@¸ˆ‰Ž˜ŽOOŽ„€›€›EF€î€îÿ¤@¸ˆŠŽ™ŽPP Ž„€‹€‹ F€î€îÿ¤@¸ˆ‹ŽšŽQQŽ„€œ€œF€î€îÿ¤@¸ˆŒŽ›ŽRR Ž„€ž€ž F€î€îÿ¤@¸ˆŽœŽSSŽ„€¥€¥F€î€îÿ¤@¸ˆŽŽŽTTŽ„€Ÿ€ŸF€î€îÿ¤@¸ˆŽžŽUUŽ„€¡€¡€î€î€îÿ¤@¸ˆŽŸŽVV Ž„€¢€¢ €î€î€îÿ¤@¸ˆ‘„rŽWW Ž„€€ €îÿ¤@¸ˆ’„bŽXX Ž„€Ž€Ž F€îÿ¤@¸ˆ“Ž ŽYYŽ„€£€£F€îÿ¤@¸ˆ”„kŽZZ Ž„€§€§  F€îÿ¤@¸ˆ•„jŽ[[ Ž„€¨€¨ F€îÿ¤@¸ˆ–Ž¡Ž\\ Ž„€©€© LF€îÿ¤@¸ˆ—Ž£Ž]] Ž„€ª€ª MF€îÿ¤@¸ˆ˜Ž¥Ž^^ Ž„€«€« F€îÿ¤@¸ˆ™Ž¦Ž__ Ž„€¬€¬ €äF€îÿ¤@¸ˆš„lŽ`` Ž„€­€­ €•F€îÿ¤@¸ˆ›Ž§Žaa Ž„€®€® €ªF€îÿ¤@¸ˆœ„nŽbb Ž„€¯€¯ €–F€îÿ¤@¸ˆ„sŽcc Ž„€°€° €—F€îÿ¤@¸ˆžŽ¨Ždd Ž„€±€± €åF€îÿ¤@¸ˆŸŽ©Žee Ž„€²€² €¶F€îÿ¤@¸ˆ ŽªŽff Ž„€³€³ €æF€îÿ¤@¸ˆ¡Ž«ŽggŽ„€ € €î€îÿ¤@¸ˆ¢„YŽhhŽ„€µ€µ€î€î€îÿ¤@¸ˆ£Ž¬Žii Ž„€¶€¶ €î€î€î€îÿ¤@¸ˆ¤Ž­ŽjjŽ„€·€·€î€î€îÿ¤@¸ˆ¥‚°ŽkkŽ„€¸€¸€î€î€îÿ¤@¸ˆ¦‚­Žll Ž„€¹€¹ €îJ€îJ€î€îÿ¤@¸ˆ§Ž®ŽmmŽ„€º€ºF€î€îÿ¤@¸ˆ¨Ž¯Žnn Ž„€»€» NF€î€îÿ¤@¸ˆ©Ž±Žoo Ž„€¼€¼ NF€î€îÿ¤@¸ˆªŽ²ŽppŽ„€½€½OF€î€îÿ¤@¸ˆ«Ž´ŽqqŽ„€¾€¾OF€î€îÿ¤@¸ˆ¬ŽµŽrrŽ„€¿€¿GF€î€îÿ¤@¸ˆ­Ž¶ŽssŽ„€À€ÀHF€î€îÿ¤@¸ˆ®Ž·ŽttŽ„€Á€Á€î€î€îÿ¤@¸ˆ¯Ž¸Žuu Ž„§§ €î€•ÿ¤@¸ˆ°Ž¹ŽxxŽ„··C€î€•ÿ¤@¸ˆ±ŽºŽyy&Ž„€È€È&ÿ¤@¸ˆ²Ž»Žzz Ž„€Ê€Ê F Jÿ¤@¸ :Ž…Ž :‹f;;³³;ŽŽ;޼ޏŽD¸ŽDD¸ŽD¸ŽD¸ŽD¸ŽD  D‹f<<³³<Ž‚Ž<޽Ž޾Ž'1¸Ž‚E¸Ž‚EE¸Ž‚E¸Ž‚E¸Ž‚E¸Ž‚E  E‹f==³³=‹gŽ## =‹f>>³³>ŽŽŽ%% >‹f??³³?އŽ'' ?EŽ¿Ž((FŽÀŽ))¸އG¸އG¸އG  ‹f@@³³@ŽˆŽ++@EŽÁŽ,,ŽÂŽ--FŽÃŽ..FŽÄŽ//ŽÅŽ00¸ŽˆH¸ŽˆH¸ŽˆH  ‹fAA³³AމŽ22AEŽ$Ž33 ‹LŽ44  ŽÆŽ55¸މI¸މII¸މI¸މI¸މI¸މI  I‹fBB³³BŽ~Ž77BIêŽ88"CŽÇŽÇŽ88HêŽ99CŒ2Œ2Ž99 GêŽ::CŽÈŽÈŽ:: ¸Ž~C¸Ž~C¸Ž~C  ‹fCC³³C޳Ž<<CE‹fDD³³DŽ”Ž==DE‹fEE³³EްŽ>>EEFF‹fFF³³F„øŽÉ*6FŽÊGJ“³þKˆ³ŽËŽÉ!!ŽÉ!!€¤ŽÌˆ´ŽÍŽÉ""ŽÉ""€¤ˆµŽÎŽÉ## ŽÉ## €¤ˆ¶ŽÏŽÉ$$ŽÉ$$€¤ˆ·ŽÐŽÉ&&ŽÉ&&€¤„øˆ¸ŽÑŽÉ``$ŽÉ``$€¤„øˆ¹ŽÒŽÉ{{ŽÉ{{€Œ€¤„øˆºŽÓŽÉ€€ŽÉ€€ €¤†ŽÉ€€ˆ»ŽÔŽÉ€…€…ŽÉ€…€…€¤ˆ¼ŽÕŽÉ€•€•ŽÉ€•€• €¤†ŽÉ€•€•ˆ½ŽÖŽÉ€—€—ŽÉ€—€—€¤ˆ¾Ž×ŽÉ€¶€¶ŽÉ€¶€¶€¤ˆ¿ŽØŽÉ€·€·ŽÉ€·€·€¤ˆÀŽÙŽÉ€¸€¸ŽÉ€¸€¸€¤ˆÁŽÚŽÉ€¹€¹ŽÉ€¹€¹€¤ˆŽÛŽÉ€º€ºŽÉ€º€º€¤ˆÎÜŽÉ€»€»$ŽÉ€»€»$€¤ˆĎÝŽÉ€¿€¿"ŽÉ€¿€¿" €¤ˆ¬ŽÉ€¿#€¿$ŽÞˆÅ=ŽÉ€Ë€Ë!ŽÉ€Ë€Ë! €¤ˆ¬ŽÉ€Ë"€Ë#ŽßˆÆ>ŽÉ€Û€Û%ŽÉ€Û€Û% €¤ˆ¬ŽÉ€Û&€Û'ŽàˆǎáŽÉ€Þ€Þ ŽÉ€Þ€Þ  €¤ŽâŽÉ€Þ!€Þ"ˆȎãŽÉ€ã€ã+ŽÉ€ã€ã+ €¤ŽâŽÉ€ã,€ã-ˆɎäŽÉ€è€èŽÉ€è€è €¤ŽâŽÉ€è€èˆʎåŽÉ€î€îŽÉ€î€î €¤ŽâŽÉ€î€îˆˎæŽÉ€ñ€ñŽÉ€ñ€ñ €¤ŽâŽÉ€ñ€ñˆ̎çŽÉ ?ŽÉ ?À¤ŽéŽÉ A Gˆ͎êŽÉ'ŽÉ'€¤„øˆΎëŽÉ+ŽÉ+€¤„øˆώìŽÉŽÉ €¤†ŽÉ!#ˆЎíŽÉŽÉ€¤†ŽÉ ˆюîŽÉ3ŽÉ3€¤‹ŽÉ59ˆҎïŽÉ#ŽÉ#€¤ŽðŽÉ%.ŽñŽÉ7=ˆӎòŽÉ'')ŽÉ'')€¤„øˆԎóŽÉ((ŽÉ(( €¤†ŽÉ((ˆÕŽÉ1 1ŽÉ1 1€À€¬ ˆÖŽÉ1 1ŽÉ1 1€À€À€¬€ÀA€Ž,5„€ˆ×ŽÉ1 1ŽÉ1 1€À€¬€€ˆØŽÉ1 1ŽÉ1 1€À€¬ˆÙŽÉ1 1ŽÉ1 1€À€¬ €ˆÚŽÉ1 1ŽÉ1 1€À €¬ €€ ˆÛŽÉ1 1ŽÉ1 1€À €¬  ˆÜŽÉ1 1ŽÉ1 1€À€À €¬$€ÀA€Ž,5„€ ˆÝŽôŽÉ22ŽÉ22€À€¤†ŽÉ22ˆގõŽÉ::ŽÉ::€¤†ŽÉ: :!ˆߎöŽÉHHŽÉHH€¤ŽâŽÉHHˆ¬ŽÉH)H*„øˆàŽ÷ŽÉQQŽÉQQ€¤ŽâŽÉQQŽøˆáŽùŽÉ__ŽÉ__€¤ŽâŽÉ__ˆâŽúŽÉggŽÉgg€¤†ŽÉggˆãŽûŽÉkkŽÉkk€¤ŽâŽÉkkˆäŽüŽÉqq$ŽÉqq$€¤ŽýŽÉq&q*ŽþŽÉq4q=„øˆåŽÿŽÉ„„-ŽÉ„„-€¤ŽýŽÉ„/„3ŽþŽÉ„=„FŽÉ„N„S„øˆæŽÉ‹‹ŽÉ‹‹€¤ˆçŽÉŽÉ€¤ˆèŽÉ0ŽÉ0€¤ˆéŽÉ‘‘ŽÉ‘‘ €¤†ŽÉ‘‘ˆêŽÉ¡ ¡ŽÉ¡ ¡€¦€¬€á €áˆëŽÉ¡ ¡ŽÉ¡ ¡€¦€¦€¬€á€¦‘A€Ž,5„€‘€áˆìŽÉ¡ ¡ŽÉ¡ ¡€¦€¬€á€€€áˆíŽÉ¡ ¡ŽÉ¡ ¡€¦€¬€á€áˆîŽÉ¡ ¡ŽÉ¡ ¡€¦€¬€á €€áˆïŽÉ¡ ¡ŽÉ¡ ¡€¦ €¬€á €€ €áˆð„ýŽÉ££ŽÉ££€¦ €¤€á€áˆñŽÉ¤¤ŽÉ¤¤€¦€¤€á€áˆòŽÉ¡ ¡ŽÉ¡ ¡€¦ €¬€á  €áˆóŽÉ¡ ¡ŽÉ¡ ¡€¦€¦ €¬€á$€¦’A€Ž,5„€’ €áˆôŽÉ¦¦"ŽÉ¦¦"€¦€¤†ŽÉ¦#¦%ˆõŽÉµµ%ŽÉµµ%€¤†ŽÉµ'µ)†8ŽÉµ1µ2„øˆöŽÉ¸¸*ŽÉ¸¸*€¤ ŽÉ¸,¸7„øˆ÷ŽÉÃÃ%ŽÉÃÃ%$€¬ÄĈøŽÉÃÃ%ŽÉÃÃ%$€¬Ä ĈùŽÉÃÃ%ŽÉÃÃ%$ €¬Ä  ĈúŽÉÃÃ%ŽÉÃÃ%$ €¬Ä  ĈûŽÉÃÃ%ŽÉÃÃ%$$ €¬ÄĈü ŽÉÅÅ ŽÉÅÅ €¤ ŽÉÅ"Å1ˆý ŽÉÔÔŽÉÔÔ€¤ ŽÉÔ Ô/ŽÉÔ0Ô>ÂG†ŽÉ1 1G¡ŽÉ1*10¢ŽÉ1114€À††ŽÉ11&†€À†€À€À†€À†€À†€À†€À †€À †€À€À $€À €À„øHH““þþH„ùŽÉ¡ ¡H ¡ŽÉ¢¢¢ŽÉ¢¢&€¦ŽÉ¢ ¢Â„ù€¦Â„ù€¦€¦Â„ù€¦Â„ù€¦Â„ù€¦Â„ù€¦ „ù€¦ „ù€¦€¦ „ý„ù„ý€¦ „ù€¦$€¦ €¦„øII““þþI ŽÉÃÃ%I $ $ $  $  $$  $„øJJ““þþ@ŽÉÃ)Ã/J*EJ‘KK““þ ˆþ€ó ÿ¤@ňÿ…®…®  *fV+€Ú<  ÿ¤@ ÅK * 0KöLQ“´ ( (‰ˆk 3 3“'„Æ“€ØV“ÿ¤@Æ'Ɖ! !8 8”'„Æ”€ØV”ÿ¤@Æ'Ɖ' '€³€³ Pÿ¤@ȉ ( (€´€´  Pÿ¤@ȉ!) )€×€× Pÿ¤@ȉ"* *‚^‚^ Pÿ¤@ȉ#+ +ÌÌ •A++„ɕɀí•ÿ¤@A++ȉ%,,€ê €ê–&,,"„—',0,3„É–É—É–—ÿ„@&,,"',0,3ȉ(--€ë €ë˜&--"„™'-0-3„š)-A-D„ɘəɚɘ™šÿ„@&--"'-0-3)-A-Dȉ *..€ì €ì›&.."„œ'.0.3„).A.D„ž+.R.U„ɛɜÉɞɛœžÿ„@&.."'.0.3).A.D+.R.Uȉ ,/ /­­ ŸA//„ÉŸÉŸÿ¤@A//ȉ -0 0„º„º  A00„É É ÿ¤@A00ȉ .1 1ˆ=ˆ= É`ÿ¤@ȉ /2 2……É1ÿ¤@ȉ03 3„Ö„Ö É#ÿ¤@ȉ14 4„Û„Û Ézÿ¤@ȉ25 5‰ ‰ Éÿ¤@ȉ36 6„ó„óÉÿ¤@ȉ47 7$‰«‰«ÉEÿ¤@ȉ58 8‰¬‰¬ÉQÿ¤@ȉ699‚­‚­¡A9N9P„VÉ¡¡€•ÿ¤@A9N9P79;9@ȉ8@ @€ý€ý Rÿ¤@ȉ:A A R ÿ¤@ȉ;B B Rÿ¤@ȉ<C C‚W‚W Rÿ¤@ȉ=D D‚(‚( ¢ADD„̢̀í¢ÿ¤@ADDȉ?EE: :£'EE"„¤)E2E5„̣̤̣¤ÿ„@'EE")E2E5ȉ@FF; ;¥'FF"„¦)F2F5„§+FFFI„̧̥̦̥¦§ÿ„@'FF")F2F5+FFFIȉAGG= =¨'GG"„©)G2G5„ª+GFGI„«BGZG]„̨̨̩̪̫©ª«ÿ„@'GG")G2G5+GFGIBGZG]ȉCH Høø ¬AHH„̬̬ÿ¤@AHHȉDI I„À„À ­AII„Ì­Ì­ÿ¤@AIIȉEJ JˆSˆS Ì`ÿ¤@ȉ FK K…… Ì1ÿ¤@ȉ!GL L„ã„ã Ì#ÿ¤@ȉ"HM M„ê„ê Ìzÿ¤@ȉ#IN N‰‰ Ìÿ¤@ȉ$JO O… … Ìÿ¤@ȉ%KP P&‰°‰°REÿ¤@ȉ&LQ Q‰²‰²RQÿ¤@ȉ'MR R(‚è‚è®ARhRj„SÌ®€•Æ®ÿ¤@ARhRjOR5R@PRORWÈL¯'„L€ç€…3€¬€è€…4€­¯ QVRSˆkȈk°'„ư€ØV°È±'„Ʊ€ØV±MM²²( ( M$$MNN²²( ( N²A& &„$&& N²POO³³( ( O9==OPP³³( ( P³A??„>??PR³QQ´´( ( QTU * 4QVRX´´( 6 ‰(UUT€¬Î Ή)UUTT€¬ÎT TΉ*UUT€¬ÎΉ+UUT€¬ÎΉ,UUT€¬Î Ή-UUT €¬Î  Ή.8U2 2X==U ÿ¤@Ïω/ZU; ;X„à„à+   T Vnlÿ¤@ \щ0UQQ"UQQ"$€¬ÒÒ‰1UQQ"UQQ"$€¬Ò Ò‰2UQQ"UQQ"$ €¬Ò  Ò‰3URR#URR#$€¬ÓÓ‰4URR#URR#$€¬Ó Ó‰5URR#URR#$ €¬Ó  ÓRWURT__U#T``UTaaU TbbU TccUÑWTÑWTTÑWTÑWTÑWTÑWT  TdTSS´´6 6 SYU## S€ç€…3€¬€è€…4€­`¡U$$ ¢U$$!UeeU$$ êU%%UffU%%U¡U&&W¢U&&- £U&0&5UhhU&& U¡U''! ¢U'$')UiiU''U¡U((! ¢U($()UjjU((1€¦¡U))jU¢U)n)u £U)x)}UkkU))z¡U**$¢U*'*/U£U*2*> ¥U*A*FUllU**#¡U++ U¢U+#+/ £U+2+7UmmU++U¡U,,!¢U,$,. £U,1,6UnnU,,U¡U--!¢U-$-) £U-,-1UooU--#¡U..¢U..&U£U.).5 ¥U.8.=UppU..¡U//¢U// £U/"/'UqqU// êU00UrrU00¡U11¢U11"W£U1%1= ¥U1@1EUssU118ÑY8U tTTT´´6 6 TgU44T ¡U55y¢U55WuuU55 TUU´´6 6 U[U77UU¡U88¢U88&l£U8)8; ¥U8>8CVvvU88 TVV´´6 6 V]UQQ"VÑ]$Ñ]$Ñ]$  $TWW´´6 6  @UQ&Q* BUQ-QC CUQFQKW^URR#WÑ^$Ñ^$Ñ^$  $TXX´´6 6  @UR'R,Xw*0Xx/aY]´Â6 u ?‰6yz$$z$$´€”€•P´€¤€”€•PŽâz$$Õ‰7{z''z''11€¤€§z''Õ‰8|z((z((XX€¤€§z((Õ‰9~z**z** 11€¤€Šz**z**Õ‰:€z55z55µ€”€•P¶€”€•P·€”€•Pµ¶µ¶··µ¶·€¤€”€•P€”€•P€”€•Pz55‚z55%Õ‰;ƒz<<z<< 9 €¤€Šz<<Õ‰<„z==z==¸€”€•P¸¸ €¤€”€•P…z==Õ‰=†z??z??¹€”€•P¹ 1 4€¤€”€•P‡z??ˆz??‚ z??#€Šz?$?%Õ‰>‰zGGzGG13€¤€§zGGÕ‰?ŠzKKzKKYXX€¤ŒzKK†zKKÕ‰@zPPzPPº€”zP:P;غ€¤€”zP:P;Õ‰AzSSzSS €¤€ŠzSSÕ‰B‘zUUzUU   €¤ˆÔzUU†zU U!Õ‰C’zYYzYY»€”€•P »€¤€”€•P€ŠzYYÕ‰D“z^^z^^Z€¤•z^^Õ‰E–zttztt  Y[\<€¤™ztt'šzt(t7Œzt8t=‡zt>tAÕ‰F›z~~z~~ \11€¤œz~~€²z~N~RÕ‰Gz€ƒ€ƒz€ƒ€ƒ \Y[ 3€¤œz€ƒ€ƒŒz€ƒ\€ƒa‡z€ƒb€ƒežz€ƒf€ƒlÕ‰HŸz€Š€Š z€Š€Š  X&€¤€Šz€Š €Š †z€Š€ŠÕ‰I z€€!z€€!¼€”€•P ¼¼¼€¤€”€•P€Šz€"€#¡z€$€&¢z€'€)Õ‰J£z€”€”z€”€”]^€¤¦z€”€”§z€”&€”-Õ‰K¨z€—€—z€—€—½€”€•P½  ½ €¤€”€•P©z€—€—.€Šz€—/€—0ªz€—1€—<Õ‰L«z€š€šz€š€šY €¤Œz€š€šÕ‰M¬z€€z€€X €¤­z€€Õ‰N®ll ®ll _€¬Þ Þ‰O®ll ®ll __€¬Þ_¾A€Ž,5„€¾Þ‰P®ll ®ll _€¬Þ€€Þ‰Q®ll ®ll _€¬ÞÞ‰R®ll ®ll _€¬Þ €Þ‰S®ll ®ll _ €¬Þ €€ Þ‰T®ll ®ll _ €¬Þ  Þ‰U®ll ®ll __ €¬Þ$_¿A€Ž,5„€¿ Þ‰V®‚0‚0®‚0‚0`€¬ß ߉W®‚0‚0®‚0‚0``€¬ß`ÀA€Ž,5„€À߉X®‚0‚0®‚0‚0`€¬ß€€߉Y®‚0‚0®‚0‚0`€¬ß߉Z®‚0‚0®‚0‚0`€¬ß €߉[®‚0‚0®‚0‚0` €¬ß €€ ߉\®‚0‚0®‚0‚0` €¬ß  ߉]®‚0‚0®‚0‚0`` €¬ß$`ÁA€Ž,5„€Á ߉^±®ƒkƒk®ƒkƒk%€¤•®ƒkƒkÕ‰_²®„/„/®„/„/_€¤³®„/„/Õ‰`´®„ö„ö®„ö„ö`€¤µ®„ö„ö!¶Õ‰a·®ˆüˆü®ˆüˆü€¤Õ‰b¸®ˆýˆý®ˆýˆý€¤Õ‰c¹®‰‰®‰‰%€¤•®‰‰Õ‰dº®‰Ä‰Ä®‰Ä‰Ä%€¤•®‰Ä‰ÄÕ‰e»®Š†І®Š†І€–€¤Õ‰f¼®Š‡Ї%®Š‡Ї%€–€¤Õ‰g½®ŠˆŠˆ(®ŠˆŠˆ(€–€¤Õ‰h¾®Š‰Љ*®Š‰Љ*€–€¤Õ‰i¿®ŠŠŠŠ®ŠŠŠŠ€¤Õ‰jÀ®Š‹Š‹®Š‹Š‹€–€¤Õ‰kÁ®ŠŒŠŒ!®ŠŒŠŒ!€–€¤Õ‰lÂ®ŠŠ!®ŠŠ!€–€¤Õ‰mÃ®ŠŽŠŽ(®ŠŽŠŽ(€–€¤Õ‰nÄ®ŠŠ®ŠŠ€–€¤Õ‰oÅ®ŠŠ®ŠŠ]€¤Õ‰pÆ®½c½c ®½c½c à%€¤Õ‰qÈ®½w½w ®½w½w %€¤É®½w ½wÊ®½w½wË®½w½w"Õ‰rÌ®½x½x®½x½x%a€¤É®½x½xÊ®½x½xÕ‰sή½z½z®½z½z%b€¤É®½z½zÊ®½z½z#Õ‰tЮ½|½|®½|½|%c€¤É®½|½|Ê®½|½|ÕY˜zrrY ¡zr(r- ¢zr0r4 £zr7r;Y[Y4¥zr?r€ƒ ¦zr€‡r€Œ\ÒÒzrr$ZZÂÂu u Z®€ª€ª Z€À Zꮀ«€«@%ÓÓ®€«€«  Zꮀ¬€¬B%ÔÔ®€¬€¬  Zꮀ­€­C%ÕÕ®€­€­Zꮀ®€®/%ÖÖ®€®€® Zꮀ¯€¯2%××®€¯€¯Zꮀ°€°1%ØØ®€°€° Zꮀ±€±2%ÙÙ®€±€±Zꮀ²€²4%ÚÚ®€²€²Zꮀ³€³4%ÛÛ®€³€³Zꮀ´€´3%ÜÜ®€´€´Zꮀµ €µ+%ÝÝ®€µ€µꮀ¶€¶%ÞÞ®€¶€¶%ꮀ·€·%ßß®€·€· %à஀¸€¸%áᮀ¹€¹ %â⮀º€º%ã㮀»€»%ä䮀¼€¼%å宀½€½ %ææ®€¾€¾%ç简¿€¿ %è讀À€À%é鮀Á€Á %êꮀ€Â%ë뮀Àà %ì쮀Ä€Ä %íí®€Å€Å %îÆ€Æ %ïﮀÇ€Ç %ðð®€È€ÈꮀÉ€É%ññ®€É€É  ê®€Ê €Ê%òò®€Ê€Ê%óó®€Ë€Ë%ôô®€Ì€Ì%õõ®€Í€Í%öö®€Î€Î%÷÷®€Ï€Ï%øø®€Ð€Ð%ùù®€Ñ€Ñ%úú®€Ò€Ò %ûû®€Ó€Ó%üü®€Ô€Ô %ýý®€Õ€Õ %þþ®€Ö€Ö %ÿÿ®€×€× %®€Ø€Ø %®€Ù€Ù %®€Ú€Ú %®€Û€Û %®€Ü€Ü %®€Ý€Ý %®€Þ€Þ%®€ß€ß %®€à€à% ®€á€á % ®€â€â% ®€ã€ã% ®€ä€ä % ®€å€å %®€æ€æ%®€ç€ç%®€è€è %®€é€é %®€ê€ê%®€ë€ë%®€ì€ì%®€í€í%®€î€î%®€ï€ï %®€ð€ð %®€ñ€ñ %®€ò€ò%®€ó€ó%®€ô€ô %®€õ€õ %®€ö€ö%®€÷€÷% ®€ø€ø %!!®€ù€ù%""®€ú€ú%##®€û€û%$$®€ü€ü%%%®€ý€ý%&&®€þ€þ %''®€ÿ€ÿ%((® %))®%**®%++®%,,® %--® %..® %//® %00®%11®  %22®  %33®  %44®  %55®  %66®%77®%88®%99®%::®%;;®%<<®%==®%>>®%??®%@@® %AA® %BB® %CC® %DD®%EE® %FF® %GG® %HH®  %II®!!%JJ®"" %KK®## %LL®$$%MM®%%%NN®&& %OO®''%PP®((%QQ®)) %RR®** %SS®++ %TT®,,%UU®--%VV®.. %WW®// %XX®00%YY®11 %ZZ®22%[[®33%\\®44 %]]®55%^^®66%__®77%``®88 %aa®99 %bb®:: %cc®;; %dd®<<%ee®== %ff®>> %gg®?? %hh®@@ %ii®AA%jj®BB ê®CC%kk®CC  ê®DD%ll®DD  ê®EE %mm®EEê®FF%nn®FFê®GG%oo®GG  ê®H H%pp®HH ê®II%qq®II  ê®J J%rr®JJ ê®KK%ss®KK  ê®LL%tt®LLê®MM%uu®MM €éê®NN%vv®NN ê®O O%ww®OO€èê®PP%xx®PP €çê®QQ%yy®QQ €¶ê®RR%zz®RR €æê®SS%{{®SS€æê®TT%||®TT €åê®UU%}}®UU €–ê®VV%~~®VV €•ê®WW%®WW €¶ ê®XX%€€®XX €— ê®YY%®YY €— ê®ZZ"%‚‚®ZZ€ª ê®[[%ƒƒ®[[ €ä ê®\ \%„„®\\ê®]]"%……®]]ê®^^!%††®^^ê®__%‡‡®__ê®``%ˆˆ®``ê®aa$%‰‰®aaê®bb%ŠŠ®bb ê®cc%‹‹®ccê®dd%ŒŒ®ddê®ee%®eeê®ff!%ŽŽ®ffê®gg%®gg ê®hh%®hhê®ii%‘‘®ii €•ê®jj%’’®jj [[ÂÂu u [¯®ll [€Â_““®mm_””®nn_••®oo_––®pp_——®qq_˜˜®rr_™™®ss_šš®tt_››®uu_œœ®vv_®ww_žž®xx_ŸŸ®yy_  ®zz_¡¡®{{_¢¢®||!_££®}}_¤¤®~~_¥¥®_¦¦®€€_§§®_¨¨®‚‚_©©®ƒƒ_ªª®„„_««®……_¬¬®††_­­®‡‡_®®®ˆˆ_¯¯®‰‰_°°®ŠŠ_±±®‹‹_²²®ŒŒ_³³®!_´´®ŽŽ%_µµ®%_¶¶®_··®‘‘_¸¸®’’_¹¹®““_ºº®””_»»®••_¼¼®––_½½®——_¾¾®˜˜_¿¿®™™_ÀÀ®šš_ÁÁ®››_®œœ_Ãî_ÄÄ®žž_ÅÅ®ŸŸ_ÆÆ®  _ÇÇ®¡¡_ÈÈ®¢¢_ÉÉ®££_ÊÊ®¤¤_ËË®¥¥_ÌÌ®¦¦_ÍÍ®§§_Îή¨¨_ÏÏ®©©_ÐЮªª_ÑÑ®««_ÒÒ®¬¬_ÓÓ®­­_ÔÔ®®®_ÕÕ®¯¯_ÖÖ®°°_××®±±_ØØ®²²_ÙÙ®³³_ÚÚ®´´_ÛÛ®µµ_ÜÜ®¶¶_ÝÝ®··_ÞÞ®¸¸_ßß®¹¹_à஺º_áá®»»_â⮼¼_ã㮽½_ä䮾¾_å宿¿_ææ®ÀÀ_çç®ÁÁ_èè®ÂÂ_éé®ÃÃ_êê®ÄÄ_ëë®ÅÅ_ìì®ÆÆ_íí®ÇÇ_îî®ÈÈ_ïï®ÉÉ_ðð®ÊÊ_ññ®ËË_òò®ÌÌ_óó®ÍÍ_ôô®ÎÎ_õõ®ÏÏ_öö®ÐÐ_÷÷®ÑÑ_øø®ÒÒ_ùù®ÓÓ_úú®ÔÔ_ûû®ÕÕ_üü®ÖÖ_ýý®××_þþ®ØØ_ÿÿ®ÙÙ_‘‘®ÚÚ_‘‘®ÛÛ_‘‘®ÜÜ_‘‘®ÝÝ_‘‘®ÞÞ_‘‘®ßß_‘‘®àà_‘‘®áá_‘‘®ââ_‘ ‘ ®ãã_‘ ‘ ®ää_‘ ‘ ®åå_‘ ‘ ®ææ_‘ ‘ ®çç_‘‘®èè_‘‘®éé_‘‘®êê_‘‘®ëë_‘‘®ìì_‘‘®íí_‘‘®îî_‘‘®ïï_‘‘®ðð_‘‘®ññ_‘‘®òò_‘‘®óó_‘‘®ôô_‘‘®õõ_‘‘®öö_‘‘®÷÷_‘‘®øø_‘‘®ùù_‘ ‘ ®úú_‘!‘!®ûû_‘"‘"®üü_‘#‘#®ýý_‘$‘$®þþ_‘%‘%®ÿÿ_‘&‘&®‚‚_‘'‘'®‚‚_‘(‘(®‚‚_‘)‘)®‚‚_‘*‘*®‚‚_‘+‘+®‚‚_‘,‘,®‚‚_‘-‘-®‚‚_‘.‘.®‚‚_‘/‘/®‚ ‚ _‘0‘0®‚ ‚ _‘1‘1®‚ ‚ _‘2‘2®‚ ‚ _‘3‘3®‚ ‚ _‘4‘4®‚‚_‘5‘5®‚‚_‘6‘6®‚‚_‘7‘7®‚‚_‘8‘8®‚‚_‘9‘9®‚‚_‘:‘:®‚‚_‘;‘;®‚‚_‘<‘<®‚‚_‘=‘=®‚‚_‘>‘>®‚‚_‘?‘?®‚‚_‘@‘@®‚‚_‘A‘A®‚‚_‘B‘B®‚‚_‘C‘C®‚‚_‘D‘D®‚‚_‘E‘E®‚‚_‘F‘F®‚ ‚ _‘G‘G®‚!‚!_‘H‘H®‚"‚"_‘I‘I®‚#‚#!_‘J‘J®‚$‚$_‘K‘K®‚%‚%_‘L‘L®‚&‚&_‘M‘M®‚'‚'_‘N‘N®‚(‚(_‘O‘O®‚)‚)_‘P‘P®‚*‚*_‘Q‘Q®‚+‚+_‘R‘R®‚,‚,_‘S‘S®‚-‚-_‘T‘T®‚.‚.Õ¯_Õ¯__Õ¯_Õ¯_Õ¯_Õ¯_ Õ¯_ Õ¯__ $_ _\\ÂÂu u \°®‚0‚0\8`‘U‘U®‚1‚1!`‘V‘V®‚2‚2&`‘W‘W®‚3‚3`‘X‘X®‚4‚4`‘Y‘Y®‚5‚5`‘Z‘Z®‚6‚6#`‘[‘[®‚7‚7`‘\‘\®‚8‚8`‘]‘]®‚9‚9#`‘^‘^®‚:‚:(`‘_‘_®‚;‚;$`‘`‘`®‚<‚<`‘a‘a®‚=‚=`‘b‘b®‚>‚>`‘c‘c®‚?‚? `‘d‘d®‚@‚@`‘e‘e®‚A‚A`‘f‘f®‚B‚B `‘g‘g®‚C‚C#`‘h‘h®‚D‚D`‘i‘i®‚E‚E `‘j‘j®‚F‚F#`‘k‘k®‚G‚G`‘l‘l®‚H‚H`‘m‘m®‚I‚I`‘n‘n®‚J‚J+`‘o‘o®‚K‚K&`‘p‘p®‚L‚L`‘q‘q®‚M‚M3`‘r‘r®‚N‚N,`‘s‘s®‚O‚O`‘t‘t®‚P‚P`‘u‘u®‚Q‚Q#`‘v‘v®‚R‚R`‘w‘w®‚S‚S$`‘x‘x®‚T‚T"`‘y‘y®‚U‚U$`‘z‘z®‚V‚V`‘{‘{®‚W‚W#`‘|‘|®‚X‚X`‘}‘}®‚Y‚Y`‘~‘~®‚Z‚Z`‘‘®‚[‚[`‘€‘€®‚\‚\`‘‘®‚]‚]`‘‚‘‚®‚^‚^`‘ƒ‘ƒ®‚_‚_#`‘„‘„®‚`‚``‘…‘…®‚a‚a`‘†‘†®‚b‚b`‘‡‘‡®‚c‚c`‘ˆ‘ˆ®‚d‚d`‘‰‘‰®‚e‚e`‘БЮ‚f‚f`‘‹‘‹®‚g‚g`‘Œ‘Œ®‚h‚h+`‘‘®‚i‚i`‘ޑޮ‚j‚j`‘‘®‚k‚k(`‘‘®‚l‚l`‘‘‘‘®‚m‚m`‘’‘’®‚n‚n#`‘“‘“®‚o‚o+`‘”‘”®‚p‚p`‘•‘•®‚q‚q`‘–‘–®‚r‚r`‘—‘—®‚s‚s`‘˜‘˜®‚t‚t`‘™‘™®‚u‚u`‘š‘š®‚v‚v`‘›‘›®‚w‚w+`‘œ‘œ®‚x‚x`‘‘®‚y‚y`‘ž‘ž®‚z‚z(`‘Ÿ‘Ÿ®‚{‚{#`‘ ‘ ®‚|‚|+`‘¡‘¡®‚}‚}*`‘¢‘¢®‚~‚~`‘£‘£®‚‚!`‘¤‘¤®‚€‚€`‘¥‘¥®‚‚`‘¦‘¦®‚‚‚‚`‘§‘§®‚ƒ‚ƒ`‘¨‘¨®‚„‚„$`‘©‘©®‚…‚…`‘ª‘ª®‚†‚†`‘«‘«®‚‡‚‡ `‘¬‘¬®‚ˆ‚ˆ#`‘­‘­®‚‰‚‰`‘®‘®®‚Š‚Š`‘¯‘¯®‚‹‚‹`‘°‘°®‚Œ‚Œ`‘±‘±®‚‚`‘²‘²®‚Ž‚Ž`‘³‘³®‚‚`‘´‘´®‚‚'`‘µ‘µ®‚‘‚‘)`‘¶‘¶®‚’‚’(`‘·‘·®‚“‚“`‘¸‘¸®‚”‚”'`‘¹‘¹®‚•‚• `‘º‘º®‚–‚–%`‘»‘»®‚—‚—&`‘¼‘¼®‚˜‚˜`‘½‘½®‚™‚™$`‘¾‘¾®‚š‚š`‘¿‘¿®‚›‚›!`‘À‘À®‚œ‚œ`‘Á‘Á®‚‚`‘‘®‚ž‚ž'`‘Ñ‚Ÿ#`‘đĮ‚ ‚ '`‘őŮ‚¡‚¡(`‘ƑƮ‚¢‚¢!`‘ǑǮ‚£‚£`‘ȑȮ‚¤‚¤`‘ɑɮ‚¥‚¥`‘ʑʮ‚¦‚¦`‘ˑˮ‚§‚§`‘̮̑‚¨‚¨ `‘͑ͮ‚©‚©`‘Αή‚ª‚ª`‘ϑϮ‚«‚«&`‘БЮ‚¬‚¬ `‘ёѮ‚­‚­`‘Ò‘Ò®‚®‚®`‘Ó‘Ó®‚¯‚¯`‘Ô‘Ô®‚°‚°`‘Õ‘Õ®‚±‚±`‘Ö‘Ö®‚²‚²`‘ב׮‚³‚³!`‘ؑخ‚´‚´`‘ّٮ‚µ‚µ`‘Ú‘Ú®‚¶‚¶`‘Û‘Û®‚·‚·`‘ܑܮ‚¸‚¸`‘ݑݮ‚¹‚¹`‘Þ‘Þ®‚º‚º"`‘ߑ߮‚»‚» `‘à‘ஂ¼‚¼`‘á‘ᮂ½‚½-`‘â‘⮂¾‚¾`‘ã‘㮂¿‚¿`‘ä‘䮂À‚À`‘å‘宂Á‚Á`‘æ‘æ®‚‚Â`‘ç‘箂ÂÃ`‘è‘讂Ä‚Ä`‘é‘鮂Å‚Å`‘ê‘ꮂÆ‚Æ`‘ë‘뮂Ç‚Ç`‘ì‘쮂È‚È3`‘í‘í®‚É‚É.`‘î‘Ê‚Ê%`‘ï‘ﮂË‚Ë `‘ð‘ð®‚Ì‚Ì*`‘ñ‘ñ®‚Í‚Í)`‘ò‘ò®‚΂Î`‘ó‘ó®‚Ï‚Ï`‘ô‘ô®‚ЂÐ`‘õ‘õ®‚Ñ‚Ñ`‘ö‘ö®‚Ò‚Ò$`‘÷‘÷®‚Ó‚Ó`‘ø‘ø®‚Ô‚Ô `‘ù‘ù®‚Õ‚Õ"`‘ú‘ú®‚Ö‚Ö!`‘û‘û®‚ׂ×`‘ü‘ü®‚Ø‚Ø`‘ý‘ý®‚Ù‚Ù`‘þ‘þ®‚Ú‚Ú`‘ÿ‘ÿ®‚Û‚Û`’’®‚Ü‚Ü'`’’®‚Ý‚Ý&`’’®‚Þ‚Þ#`’’®‚ß‚ß&`’’®‚à‚à"`’’®‚á‚á!`’’®‚â‚â`’’®‚ã‚ã`’’®‚ä‚ä `’ ’ ®‚å‚å`’ ’ ®‚æ‚æ`’ ’ ®‚ç‚ç`’ ’ ®‚è‚è`’ ’ ®‚é‚é`’’®‚ê‚ê`’’®‚ë‚ë `’’®‚ì‚ì`’’®‚í‚í`’’®‚î‚î`’’®‚ï‚ï`’’®‚ð‚ð`’’®‚ñ‚ñ`’’®‚ò‚ò`’’®‚ó‚ó`’’®‚ô‚ô`’’®‚õ‚õ`’’®‚ö‚ö`’’®‚÷‚÷`’’®‚ø‚ø%`’’®‚ù‚ù`’’®‚ú‚ú!`’’®‚û‚û`’ ’ ®‚ü‚ü`’!’!®‚ý‚ý`’"’"®‚þ‚þ`’#’#®‚ÿ‚ÿ`’$’$®ƒƒ'`’%’%®ƒƒ*`’&’&®ƒƒ`’'’'®ƒƒ`’(’(®ƒƒ`’)’)®ƒƒ `’*’*®ƒƒ`’+’+®ƒƒ;`’,’,®ƒƒ`’-’-®ƒ ƒ `’.’.®ƒ ƒ `’/’/®ƒ ƒ !`’0’0®ƒ ƒ %`’1’1®ƒ ƒ '`’2’2®ƒƒ+`’3’3®ƒƒ`’4’4®ƒƒ`’5’5®ƒƒ`’6’6®ƒƒ`’7’7®ƒƒ`’8’8®ƒƒ`’9’9®ƒƒ`’:’:®ƒƒ`’;’;®ƒƒ!`’<’<®ƒƒ`’=’=®ƒƒ`’>’>®ƒƒ#`’?’?®ƒƒ`’@’@®ƒƒ`’A’A®ƒƒ`’B’B®ƒƒ`’C’C®ƒƒ%`’D’D®ƒ ƒ (`’E’E®ƒ!ƒ!2`’F’F®ƒ"ƒ"`’G’G®ƒ#ƒ#`’H’H®ƒ$ƒ$"`’I’I®ƒ%ƒ%`’J’J®ƒ&ƒ&`’K’K®ƒ'ƒ'`’L’L®ƒ(ƒ(%`’M’M®ƒ)ƒ)`’N’N®ƒ*ƒ*`’O’O®ƒ+ƒ+`’P’P®ƒ,ƒ,`’Q’Q®ƒ-ƒ-`’R’R®ƒ.ƒ.$`’S’S®ƒ/ƒ/!`’T’T®ƒ0ƒ0`’U’U®ƒ1ƒ1(`’V’V®ƒ2ƒ2*`’W’W®ƒ3ƒ3`’X’X®ƒ4ƒ4%`’Y’Y®ƒ5ƒ5`’Z’Z®ƒ6ƒ6`’[’[®ƒ7ƒ7)`’\’\®ƒ8ƒ8`’]’]®ƒ9ƒ9`’^’^®ƒ:ƒ:`’_’_®ƒ;ƒ;`’`’`®ƒ<ƒ<`’a’a®ƒ=ƒ=`’b’b®ƒ>ƒ>`’c’c®ƒ?ƒ?&`’d’d®ƒ@ƒ@`’e’e®ƒAƒA`’f’f®ƒBƒB`’g’g®ƒCƒC`’h’h®ƒDƒD`’i’i®ƒEƒE`’j’j®ƒFƒF`’k’k®ƒGƒG`’l’l®ƒHƒH`’m’m®ƒIƒI`’n’n®ƒJƒJ`’o’o®ƒKƒK"`’p’p®ƒLƒL#`’q’q®ƒMƒM'`’r’r®ƒNƒN`’s’s®ƒOƒO`’t’t®ƒPƒP`’u’u®ƒQƒQ`’v’v®ƒRƒR`’w’w®ƒSƒS#`’x’x®ƒTƒT`’y’y®ƒUƒU`’z’z®ƒVƒV`’{’{®ƒWƒW`’|’|®ƒXƒX`’}’}®ƒYƒY`’~’~®ƒZƒZ`’’®ƒ[ƒ[`’€’€®ƒ\ƒ\`’’®ƒ]ƒ]`’‚’‚®ƒ^ƒ^`’ƒ’ƒ®ƒ_ƒ_`’„’„®ƒ`ƒ`%`’…’…®ƒaƒa'`’†’†®ƒbƒb`’‡’‡®ƒcƒc`’ˆ’ˆ®ƒdƒd`’‰’‰®ƒeƒe`’Š’Š®ƒfƒf`’‹’‹®ƒgƒg;`’Œ’Œ®ƒhƒh)Õ°`Õ°``Õ°`Õ°`Õ°`Õ°` Õ°` Õ°`` $` `]]ÂÂu u ]’’Ž * 1]’O^^ÂÊu { ‰u’’Ž ’‘ ÂA’Ž„ÂäÂÿ¤@A’Žå‰v’“’Ž’‘ÃA’Ž$&„$äÃÿ¤@A’Ž$&å‰w’”’Ž ’‘ ÄA’Ž!#„ÅP’ŽAC„äÄÄäÅäÅÿ¤@A’Ž!#P’ŽACå‰x’•’Ž ’‘ÆA’Ž "„ÇP’Ž.0„䯯ÇäÇÿ¤@A’Ž "P’Ž.0å‰y’–’Ž’‘$$ÈA’Ž#%„äÈÈÿ¤@A’Ž#%å‰z’—’Ž ’‘(( ÉA’Ž+-„äÉäÉäÉÿ¤@A’Ž+-å^’˜’™*-^’šë_cÊÊ{ Ž ‰{’™’™d€¬æ æ‰|’™’™dd€¬æd dæ‰}’™’™d€¬ææ‰~’™’™d€¬ææ‰’™’™d€¬æ 所’™’™d €¬æ  扒œ’™% %’( (d ÿ¤@æ扂’ž’™& &’) )d ÿ¤@æ扃’Ÿ’™''’dÿ¤@æ扄‚ï’™11’__eÿ¤@ç牅’¡’™4 4’ûû Vfeeÿ¤@’£鉆’¤’™7 7’ŒXŒX dVge  ]e]fÿ¤@ ’§’™7€©7€¾’¨’™7€Ç7€Ó’©鉇’ª’™: :’€²€²f€±ÿ¤@’«鉈’¬’™==’ŒŒfPÿ¤@’­鉉’®’™@@’„”„”Fffÿ¤@’¯鉊’°’™AA%’„6„6%ffÿ¤@鉋’±’™BB’‡‡ffÿ¤@鉌’²’™CC’…… ÿ¤@鉒³’™F F’ŒŒRfÿ¤@é_’›’™_  ’´’™ ’µ’™ ’¶’™ ’·’™’¸’™’¹’™’º’™ ’»’™ ’¼’™   ’½’™!! ’¾’™"" ’¿’™##é’›dé’›ddé’›dé’›dé’›dé’›d ’œé’›’œd ’žé’›’žd ’Ÿé’›’Ÿd d’˜``ÊÊŽ Ž `’À’™**`’Á’˜aaÊÊŽ Ž a’¢’™++a€íh’˜bbÊÊŽ Ž b’ ’™00b€Ž€‚Ib‚ïé’ ‚ïe’˜ccÊÊŽ Ž c’Â’Ã*3c’Ä»9dlÊÌŽ   ‰Ž’Å’Äe„e’Äe„e+i€¤’Äe„e퉒Ç’Äf„f’Äf„f+}i€¤’Äf„f퉒È’Äg„g ’Äg„g +5€¤’Äg „g³’Äg„g€Ö’Äg„g퉑’É’Äh„h’Äh„h+5€¤’Äh„h†’Äh„h³’Äh„h€Ö’Äh„h퉒’Ê’Äi„i’Äi„i+5#€¤’Äi„i³’Äi„i€Ö’Äi„i퉓’Ë’Äj„j’Äj„j`i€¤€ˆ’Äj„j€«’Äj„jˆ¬’Äj„j퉔’Ì’Äk„k&’Äk„k&+€†i€¤’Äk'„k+’͒Äk,„k4’ΒÄk5„k8퉕’Ï’Æ×†× ’Æ×†× +i€¤’Æ×†×‚ ’Æ×†×퉖’Ð’ÆÞ†Þ’ÆÞ†Þ+5 €¤’ÆÞ†Þ³’ÆÞ†Þ€Ö’ÆÞ†Þ퉗’Ñ’Æß†ß’Æß†ß+ €¤’Æß†ß€Ö’Æß†ß퉘’Ò’Æá†á’Æá†á+5 €¤’Æá†á#³’Æá$†á&†8’Æá'†á(’Ó퉙’Ô’Æâ†â’Æâ†â+5 €¤’Æâ†â³’Æ⠆â"†8’Æâ#†â$퉚’Õ’Æã†ã ’Æã†ã + €¤’Æã!†ã%†8’Æã&†ã'퉛’Ö’Ææ†æ#’Ææ†æ# +5'€¤€‰’Ææ$†æ(€Š’Ææ)†æ*’Ææ+†æ/’גÆæ0†æ3¶’Ææ4†æ5’Ø퉜’Ù’Æé†é’Æé†é +'€¤€‰’Æé†é€Š’Æé†é’Æé†é ¶’Æé!†é"’Ú퉒Û’Æì†ì’Æì†ì+j€¤’Æì†ì’ݒÆì†ì$’Þ퉞’ß’Æî†î’Æî†î+5€œ€¤’Æî†î ³’Æî!†î#€Ö’Æî$†î%퉟’à’Æï†ï’Æï†ï+5€€¤’Æï†ï ³’Æï!†ï#€Ö’Æï$†ï%퉠’á’Æð†ð’Æð†ð+}€¤’Æð†ð!€Ö’Æð"†ð#퉡’â’Æñ†ñ’Æñ†ñ+*) 5,€¤’Æñ†ñ €ý’Æñ!†ñ+€ï’Æñ,†ñ.€Š’Æñ/†ñ0³’Æñ=†ñ?€Ö’Æñ@†ñA퉢’ã’Æò†ò’Æò†ò+}€¤’Æò†ò 퉣’ä’Æó†ó’Æó†ó+€¤’Æó†ó €Ö’Æó!†ó"퉤’å’Æô†ô’Æô†ô+€¤’Æô†ô €Ö’Æô!†ô"퉥’æ’Æõ†õ’Æõ†õ+7€¤’Æõ†õ €Ö’Æõ!†õ"퉦’ç’Æö†ö’Æö†ö+6€¤’Æö†ö €Ö’Æö!†ö"퉧’è’Æ÷†÷’Æ÷†÷+€€¤’Æ÷†÷ €Ö’Æ÷!†÷"퉨’é’Æù†ù!’Æù†ù! +*) €Úi€¤’ê’Æù"†ù,’Æù-†ù1€ý’Æù2†ù<€ï’Æù=†ù?€Š’Æù@†ùA‚ ’ÆùB†ùF퉩’ë’Æú†ú’Æú†ú+ i€¤’Æú†ú†8’Æú†ú퉪’ì’Æû†û’Æû†û+ii€¤’Æû†û’í’Æû†û#퉫’î’LJ’LJ+€¤’LJ!’ï’Ç"‡$’ð’Ç%‡'’ñ퉬’ò’Ç'‡'’Ç'‡'+  €¤’Ç'‡'"’ó’Ç'#‡'%’ô’Ç'&‡'(퉭’õ’Ç3‡3’Ç3‡3+€¤’Ç3‡3€«’Ç3‡3íd’ö’Ã..d’Â’Â÷k’ø’šeeÊÌ® ¹  ‰®’ù’Ã//’Ã// ii€¤€Ö’Ã//’ú’Ã//’Âð‰¯’û’Ã00’Ã00ii€¤€Ö’Ã00’Âð‰°’ü’Ã11’Ã11ii€¤€Ö’Ã11’Âð‰±’ý’Ã22’Ã22ii€¤€Ö’Ã22’Âð‰²’þ’Ã44’Ã44ii€¤‰U’Ã44’Âð‰³’ÿ’Ã55’Ã55i€¤“’Ã55’Âð‰´“’Ã77’Ã77€±€±€¤“’Ã77’Âð‰µ“’Ã==A’Ã==A  €¤€ˆ’Ã=B=C€‰’Ã=D=H€Š’Ã=I=J€«’Ã=K=M’Âð‰¶“’ÃAA’ÃAAii€¤…T’ÃAA"“’ÃA$A,’Âð‰·“’ÃGG’ÃGG€¤†’ÃGG“’Âð‰¸“’ÃKK’ÃKKÊ€”€•PË€”€•PÊiÊiËÊË€¤€”€•P€”€•P“ ’ÃKK&“ ’ÃK'K5“ ’ÃK6K;’Âðe“ ’ÃQQe’’“ ’˜ ffÌ̹ Ú !‰¹“’ÃUU’ÃUU€œ€¤“’ÃUU!’Âñ‰º“’ÃXX’ÃXX+i€¤’ÃXX ‡Û’ÃX!X%’Âñ‰»“’Ãtt’Ãtt+€œi€¤’Ãtt“’Ãtt!’Âñ‰¼“’Ãzz"’Ãzz"€¤†’Ãz#z$“’“ ’Âñ‰½“’À€’À€l €¤€§’À!€"’“ ’Âñ‰¾“’À…€…"’À…€…"mi€¤’“ ’Âñ‰¿“’Àˆ€ˆ-’Àˆ€ˆ-ni€¤“’Àˆ/€ˆ1’“ ’Âñ‰À“’À‹€‹’À‹€‹€±€±€¤“’À‹€‹’“ ’Âñ‰Á“’À’€’’À’€’€±€±€¤“’À’€’%“’À’0€’<’“ ’Âñ‰Â“’À› €›’À› €›+€±|€±€¤’À›€›“’À›-€›9“ ’À›I€›L’Âñ‰Ã“!’À¨€¨(’À¨€¨(+€±o€±€¤’À¨)€¨-“’À¨.€¨:“#’À¨;€¨?“$’À¨A€¨I“%’“ ’Âñ‰Ä“&’Àº€º!’Àº€º!+€±pi€¤’Àº"€º&“’Àº'€º3†’Àº5€º6“(’“ ’Âñ‰Å“)’ÀÉ€É"’ÀÉ€É"+€±q|i€¤’ÀÉ#€É'“’ÀÉ(€É4“#’ÀÉ5€É9“+’ÀÉ;€ÉE“,’ÀÉU€É\“-’“ ’Âñ‰Æ“.’Àâ€â!’Àâ€â!+iri€¤’Àâ"€â&“’Àâ'€â3“’Àâ4€â=€Š’Àâ?€â@“0’“ ’Âñ‰Ç“1’Àî€î ’Àî€î +€±si€¤’Àî"€î&“’Àî5€îA]’ÀîQ€îR’“ ’Âñ‰È“3’Àõ€õ ’Àõ€õ +€±li€¤’Àõ!€õ%“’Àõ'€õ3€§’Àõ5€õ6’“ ’Âñ‰É“4’Àÿ€ÿ#’Àÿ€ÿ#+€±ti€¤’Àÿ$€ÿ(“’Àÿ)€ÿ5†’Àÿ7€ÿ8’“ ’Âñ‰Ê“6’Ã!!’Ã!!_i€¤€Ö’Ã!!’Âñ‰Ë“7’ÃCC’ÃCC_i€¤†’ÃCC“8’ÃC C&’Âñ‰Ì“9’ÃFF’ÃFFsi€¤]’ÃF!F"’“ ’Âñ‰Í“:’ÃII"’ÃII"t €¤†’ÃI'I(’“ ’Âñ‰Î“;’ÃPP ’ÃPP r €¤€Š’ÃP'P(’“ ’Âñ‰Ï“<’ÃSS’ÃSS€´l €¤“=’ÃS S'€§’ÃS)S*’“ ’Âñ‰Ð“>’ÃZZ"’ÃZZ"€´t €¤“=’ÃZ#Z*€Š’ÃZ,Z-’“ ’Âñ‰Ñ“?’Ãjj’Ãjjr €¤€Š’Ãj'j(’“ ’Âñ‰Ò“@’Ãmm ’Ãmm r €¤€Š’Ãm%m&’“ ’Âñ‰Ó“A’Ãpp’Ãpps €¤]’Ãp'p(’“ ’Âñ‰Ô“B’Ãss!’Ãss!€´ €¤ˆ¬’Ãs)s*’“ ’Âñ‰Õ“C’Ãyy’Ãyys €¤]’Ãy!y"’“ ’Âñ‰Ö“D’Ãzz’Ãzzû€¤’“ ’Âñ‰×“F’Ã{{’Ã{{€± €¤†’Ã{!{"’“ ’Âñ‰Ø“G’Ã~ ~’Ã~ ~+€´€±€¤’Ã~~!“=’Ã~0~7’Âñ‰Ù“H’Ãðð’Ãðð+€´i€¤’Ãð ð$“=’Ãð3ð:’Âñf“I’Ãýýf’’“J’ÂbggÌÌÚ ù ‰Ú’Ë’Ãÿÿ’Ãÿÿ`i€¤€ˆ’Ãÿÿ€«’Ãÿÿˆ¬’Ãÿÿ’Âü‰Û“K’‚’‚+€‡ii€¤’‚!“L’Â.‚;“M’Â<‚A’Âü‰Ü“N’Â0‚0’Â0‚0+#i€¤’Â0‚0ˆª’Â0+‚00“O’Âü‰Ý“P’ÂG‚G’ÂG‚GIi€¤“Q’ÂG‚G"“R’Âü‰Þ“S’Â^‚^#’Â^‚^#+i€¤’Â^$‚^(“T’Â^)‚^,“U’“I’Âü‰ß“V’‚ ’‚ +€©i€¤’Â!‚%1’Â&‚*“W’“I’Âü‰à“X’Â…‚…’Â…‚…+=i€¤’Â…‚…!“Y’“I’Âü‰á“Z’›‚›’›‚›+C=ii€¤’›‚›…à’›‚›Œ’› ‚›%“[’›&‚›+“\’Âü‰â“]’°‚°"’°‚°"+C=ii€¤’°#‚°'…à’°(‚°,Œ’°-‚°2“[’°3‚°8’“I’Âü‰ã“^’µ‚µ’µ‚µ+i€¤’µ‚µ#“_’µ%‚µ*’“I’Âü‰ä“`’ÂÄ‚Ä&’ÂÄ‚Ä&+€²i€¤’ÂÄ'‚Ä+“a’ÂÄ-‚Ä0“_’ÂÄX‚Ä]“b’“I’Âü‰å“c’ÂÓ‚Ó!’ÂÓ‚Ó!+€²}i€¤’ÂÓ"‚Ó&“a’ÂÓ'‚Ó*“d’ÂÓ+‚Ó.“e’Âü‰æ“f’Âí‚í(’Âí‚í(+€²}i€¤’Âí)‚í-“a’Âí.‚í1€œ’Âí3‚í5“g’Âí6‚í9“h’“I’Âü‰ç“i’Ã$ƒ$#’Ã$ƒ$#+€²~i€¤’Ã$$ƒ$(“a’Ã$)ƒ$,’“I’Âü‰è“j’Ã6ƒ6’Ã6ƒ6+ei€¤’Ã6ƒ6"ˆÖ’Ã6#ƒ6&“k’“I’Âü‰é“l’ÃFƒF,’ÃFƒF,+€²i i€¤’ÃF-ƒF1“a’ÃF2ƒF5“m’ÃF6ƒF9“n’ÃF:ƒF>“o’ÃF?ƒFE1’ÃFFƒFJ“p’“I’Âü‰ê“q’ÃSƒS!’ÃSƒS!+€²i€¤’ÃS"ƒS&“a’ÃS'ƒS*“n’ÃS+ƒS/“ ’ÃS0ƒS3“r’Âü‰ë“s’Ã|ƒ|*’Ã|ƒ|*+€²ii€¤’Ã|+ƒ|/“a’Ã|0ƒ|3“n’Ã|4ƒ|8“t’Ã|9ƒ|<“u’Ã|=ƒ|A“v’“I’Âü‰ì“w’Àƒ€"’Àƒ€"+€²i€¤’À#ƒ€'“a’À(ƒ€+“ ’À,ƒ€/“x’“I’Âü‰í“y’Ã’Ã+i€¤’Ó ’Ã’Âü‰î“z’ǃ‡’ǃ‡+€²}i€¤’ǃ‡“a’ǃ‡’͒ǃ‡'‰#’Ç(ƒ‡+“d’Ç,ƒ‡/“{’Âü‰ï“|’ꃪ’ꃪ+i i€¤’ꃪ“}’ꃪ!“o’ê"ƒª(†’ê*ƒª0“~’Âü‰ð’Ç’úƒº’úƒº+}i€¤’úƒº"’Âü‰ñ’ì’ÿƒ¿’ÿƒ¿+ii€¤’ÿƒ¿"’í’ÿ#ƒ¿'’Âü‰ò“’ÃăÄ+’ÃăÄ++€°i€¤’ÃÄ,ƒÄ0’͒ÃÄ1ƒÄ9’ΒÃÄ:ƒÄ=“d’ÃÄ>ƒÄA’Âü‰ó’Ì’ÃȃÈ*’ÃȃÈ*+€†i€¤’ÃÈ+ƒÈ/’͒ÃÈ0ƒÈ8’ΒÃÈ9ƒÈ<’Âü‰ô“€’Ã̃Ì&’Ã̃Ì&+€€i€¤’ÃÌ'ƒÌ+’͒ÃÌ,ƒÌ4“’ÃÌ5ƒÌ:“‚’ÃÌ;ƒÌI’Âü‰õ“ƒ’ÃÔƒÔ$’ÃÔƒÔ$+i€¤’ÃÔ%ƒÔ)“„’ÃÔ*ƒÔ<“…’ÃÔ>ƒÔH’͒ÃÔQƒÔY“’ÃÔZƒÔ_’“I’Âü‰ö“†’Ããƒã’Ããƒã+1i€¤’Ããƒã†8’Ããƒã’͒Ã㠃ã(“’Ãã)ƒã.’Âü‰÷’Å’Ãêƒê’Ãêƒê+i€¤’Ãêƒê“„’Ãêƒê1†’Ãê2ƒê4“…’Ãê5ƒê?’͒Ãê@ƒêH“’ÃêIƒêN’Âü‰ø“‡’Ãóƒó’Ãóƒó+i€¤’Ãóƒó“ ’Ãóƒó!’Âüg“ˆ’Ãûƒû$g’’“‰’ÂXhhÌÌù ü ‰ù“Š’Ãýƒý’Ãýƒý+ i€¤’Ãýƒý!†8’Ãý#ƒý$’“ˆ’Âý‰ú“‹’Ä2„2"’Ä2„2"+ €°i€¤’Ä2#„2'€£’Ä2*„2-†8’Ä2.„2/’ΒÄ24„27“d’Ä28„2;’“ˆ’Âý‰û’ë’ÄN„N’ÄN„N+ i€¤’ÄN„N†8’ÄN!„N"’Âýh“Œ’Äp„ph“’ÂõiiÌÌü  ‰ü“Ž’Äu„u’Äu„u+5j€¤’Äu „u$³’Äu%„u'“þ‰ý“’ÄŽ„Ž1’ÄŽ„Ž1 +5'€¤€‰’ÄŽ2„Ž6€Š’ÄŽ7„Ž8’ÄŽ9„Ž=³’ÄŽ>„Ž@€ù’ÄŽB„ŽG€ú’ÄŽR„ŽW“‘’“Œþ‰þ“’’ħ„§1’ħ„§1 +5'€¤€‰’ħ2„§6€Š’ħ7„§8’ħ9„§=³’ħ>„§@€ù’ħB„§G€ú’ħR„§W““’“Œþ‰ÿ“”’Ĺ„¹’Ĺ„¹ 'u'€¤€‰’Ĺ„¹ €Š’Ĺ3„¹4€ù’Ĺ6„¹;…²’ĹH„¹PþŠ’Ö’ÄÓ„Ó'’ÄÓ„Ó' +5'€¤€‰’ÄÓ(„Ó,€Š’ÄÓ-„Ó.’ÄÓ/„Ó3³’ÄÓ4„Ó6€ù’ÄÓ7„Ó<“–þŠ“—’Ää„ä!’Ää„ä! +'i€¤€‰’Ää"„ä&€Š’Ää'„ä(’Ää)„ä-€ù’Ää/„ä4“˜þi“™’Äë„ë%i’’“š’ÂZjjÌÌ  Š“›’Äî„î’Äî„î+ i€¤’Äî„î"†8’Äî$„î%’Â‚Š“œ’Äù„ù’Äù„ù+ i€¤’Äù„ù#Œ’Äù$„ù&’Â‚Š“’Äü„ü’Äü„ü+i€¤’Äü „ü$“ž’Äü%„ü+’Â‚Š“Ÿ’Äÿ„ÿ’Äÿ„ÿ+i6i€¤’Äÿ„ÿ“ ’Äÿ„ÿ%“¡’Äÿ&„ÿ+’Â‚Š“¢’Ã……’Ã……+6i€¤’Ã……“£’Ã……%’Â‚Š“¤’Ã… … ’Ã… …  +7i€¤“¥’Ã… … !’Ã… "… &“¦’Ã… )… ,’Â‚Š“§’Ã……’Ã……B €¤‰&’Ã……“¨’Â‚Š “©’Ã…#…#!’Ã…#…#!+ Li€¤’Ã…#"…#&€‰’Ã…#'…#+€Š’Ã…#,…#-€§’Ã…#/…#0’“™’Â‚Š “ª’Ã…)…)’Ã…)…)+ 3i€¤’Ã…) …)$€‰’Ã…)%…))€Š’Ã…)*…)+€§’Ã…)-…).’“™’Â‚Š “«’Ã…/…/’Ã…/…/+ (i€¤’Ã…/…/#€‰’Ã…/$…/(€Š’Ã…/)…/*†’Ã…/,…/-’“™’Â‚Š “¬’Ã…>…>’Ã…>…>+*) ii€¤’Ã…>…>!€ý’Ã…>/…>9€ï’Ã…>F…>H€Š’Ã…>I…>J“­’Ã…>K…>P“®’Ã…>Q…>U€«’Ã…>V…>X“¯’Â‚Š “°’Ã…§…§’Ã…§…§+*)  i,i€¤’Ã…§…§€ý’Ã…§'…§1€ï’Ã…§>…§@€Š’Ã…§A…§B“±’Ã…§C…§M“²’Ã…§N…§W’Ã…§Y…§^’Â‚Š“³’ÆE†E’ÆE†E+€i€¤’ÆE†E“´’ÆE†E!’Â‚Š“µ’ÆX†X’ÆX†X+*) ,i€¤’ÆX†X€ý’ÆX†X(€ï’ÆX)†X+€Š’ÆX,†X-‡1’ÆX0†X6’‚j“¶’Æd†d"j’’“·’ÂkkÌÌ  Š’é’Æh†h%’Æh†h% +*) €Úi€¤’ê’Æh&†h0’Æh1†h5€ý’Æh6†h@€ï’ÆhA†hC€Š’ÆhD†hE‚ ’ÆhF†hJ“¸’‚k“¹’Ƴ†³k’’“º’Â<llÌÌ  Š’Ï’Æ· †·’Æ· †·+i€¤’Æ·†·‚ ’Æ·†·“»’Â‚Š“¼’ƹ†¹’ƹ†¹+ i€¤’ƹ†¹"“½’ƹ#†¹+‚ ’ƹ,†¹0’“¹’Â‚Š“¾’ÆÕ†Õ’ÆÕ†Õ+Oi€¤’ÆÕ†Õ“¿’Ã†Õ †Õ"’“¹’‚l‚“À*1l“Á^<mÌÌ { gŠ“À$$“Â00* vÿ´@‚€ˆ“À$ $ €‰“À$$€ý“À$)$3“Ä“À$A$W‚ГœÀ% %“ÂAAv*ÿ¤@‚‚Š“Æ“À& &“Â@@vÿ¤@‚‚Š“Ç“À' ' “Â??vÿ¤@‚‚Šƒ’“Àaa“€õ€õUÿ¤@l€ˆ“ÀaalŠ‚“Àb b“ÂU+ÿ¤@llŠ“È“Àc c“Â#Uÿ¤@llŠ“Àee“Àeew€¬‚ ‚Š“Àee“Àeeww€¬‚w w‚Š“Àee“Àeew€¬‚‚Š“Àee“Àeew€¬‚‚Š“Àee“Àeew€¬‚ ‚Š “Àee“Àeew €¬‚  ‚Š!“Àjj “Àjj x€¬‚ ‚Š"“Àjj “Àjj xx€¬‚x x‚Š#“Àjj “Àjj x€¬‚‚Š$“Àjj “Àjj x€¬‚‚Š%“Àjj “Àjj x€¬‚ ‚Š&“Àjj “Àjj x €¬‚  ‚Š'“Ë“Àl l“Âÿ¤@‚Š(“Ì“Àn n(“ÂXXU1Uÿ¤@‚Š)“Í“Ào o!“Â\\UUÿ¤@‚Š*“ΓÀq q“ÂppU1Uÿ¤@‚Š+“Ï“Àr r0“Âss'€¦U Uÿ¤@‚Š,“ГÀs s"“Âøøx   U#Uÿ¤@‚Š-“Ñ“Àt t'“‚‚xU#Uÿ¤@‚Š.“Ò“Àu u%“‚‚&U4Uÿ¤@‚Š/“Ó“Àv v.“‚$‚$)  )U4Uÿ¤@‚Š0“Ô“Àw w“‚[‚[  )U4Uÿ¤@‚Š1“Õ“Àx x5“‚W‚W,) U4Uÿ¤@‚Š2“Àzz“Àzzy€¬‚ ‚Š3“Àzz“Àzzyy€¬‚y y‚Š4“Àzz“Àzzy€¬‚‚Š5“Àzz“Àzzy€¬‚‚Š6“Àzz“Àzzy€¬‚ ‚Š7“Àzz“Àzzy €¬‚  ‚Š8“דÀ~ ~'“‚c‚cyUUÿ¤@‚Š9“Ø“À '“ƒƒwU#ÿ¤@‚Š:“À€€“À€€z€¬‚ ‚Š;“À€€“À€€zz€¬‚z z‚Š<“À€€“À€€z€¬‚‚Š=“À€€“À€€z€¬‚‚Š>“À€€“À€€z€¬‚ ‚Š?“À€€“À€€z €¬‚  ‚Š@“Ú“À€‰€‰“‚ЂÐ{ÿ¤@‚ “Ü‚ ŠA“Ý“À€‹€‹“‚Ñ‚Ñ2{ÿ¤@‚ “Þ‚ ŠB“ß“À€€“‚à‚à|ÿ¤@‚ ‚ ŠC“á“À€‘€‘!“‚á‚á#{|ÿ¤@‚ ‚ ŠD“â“À€œ €œ“ƒ» ƒ»} U)ÿ´@‚ ‚ ŠE“ä“À€ €“ƒ¼ ƒ¼} +U) ÿ´@‚ ‚ ŠF“å“À€ž €ž!“ƒ½ ƒ½!} ~+U) ÿ´@‚ ‚ ŠG“À€ € “À€ € W€¬ooŠH“À€ € “À€ € W€¬o oŠI“À€ € “À€ € W €¬o  oŠJ“ç“À€¢€¢“ƒÁƒÁWÿ¤@ooŠK“è“À€£€£“ƒÂƒÂ}Wÿ¤@ooŠL“é“À€¥ €¥(“ƒÄƒÄ}W$ÿ¤@‚ŠM“ê“À€¦ €¦>“ƒÉƒÉ5W$ÿ¤@‚ŠN“ë“À€§ €§“ƒÏƒÏW U)ÿ¤@‚ŠO“ì“À€¨ €¨#“ƒÔƒÔW U~+)ÿ¤@‚ŠP“í“À€© €© “ƒÙƒÙW U+)ÿ¤@‚ŠQ“î“À€« €«&“„â„â*€´)€ (ÿ¤@‚ŠR“ñ“À€¬ €¬&“Â……*€´)€ 'ÿ¤@‚ŠS“À€®€®$“À€®€®$$€¬‚‚ŠT“À€®€®$“À€®€®$$€¬‚ ‚ŠU“À€®€®$“À€®€®$$ €¬‚  ‚ŠV“À€¯€¯/“À€¯€¯/$€¬‚‚ŠW“À€¯€¯/“À€¯€¯/$€¬‚ ‚ŠX“À€¯€¯/“À€¯€¯/$ €¬‚  ‚ŠY“ô“À€±€±“‡ä‡äv cÿ¤@‚ŠZ“À€³€³“À€³€³€¬‚ ‚Š[“À€³€³“À€³€³€¬‚ ‚Š\“À€³€³“À€³€³€¬‚‚Š]“À€³€³“À€³€³€¬‚‚Š^“À€³€³“À€³€³€¬‚ ‚Š_“À€³€³“À€³€³ €¬‚  ‚Š`“À€»€»“À€»€»‚€¬‚ ‚Ša“À€»€»“À€»€»‚‚€¬‚‚ ‚‚Šb“À€»€»“À€»€»‚€¬‚‚Šc“À€»€»“À€»€»‚€¬‚‚Šd“À€»€»“À€»€»‚€¬‚ ‚Še“À€»€»“À€»€»‚ €¬‚  ‚Šf“À€Â€Â)“À€Â€Â)ƒ€¬‚ ‚Šg“À€Â€Â)“À€Â€Â)ƒƒ€¬‚ƒ ƒ‚Šh“À€Â€Â)“À€Â€Â)ƒ€¬‚‚Ši“À€Â€Â)“À€Â€Â)ƒ€¬‚‚Šj“À€Â€Â)“À€Â€Â)ƒ€¬‚ ‚Šk“À€Â€Â)“À€Â€Â)ƒ €¬‚  ‚Šl“ø“À€Æ €Æ1“„u„u,wU)&ä4;ÿ¤@‚Šm“ù“À€Ç €Ç%“„»„»v+ )äÿ¤@‚Šn“ú“À€È €È#“Â…˜…˜WvU )&€|&ÿ¤@ ‚Šo“û“À€É €É$“†ñ†ñWv‚  )U|&ÿ¤@ ‚Šp“ü“À€Ê €Ê+“‡%‡%"WvU|) 4&#ÿ¤@‚Šq“ý“À€Ë €Ë!“‡‡‡‡Wv~wU)&{ƒä#ÿ¤@ ‚Šr“þ“À€Ì €Ì“‡½‡½vU)&&cÿ¤@‚Šs“ÿ“À€Í €Í!“†|†|Wv )U|&&ÿ¤@‚Št”“À€Î €Î7“Š´Š´2vU ) ÿ¤@‚Šu”“À€Ï €Ï-“ˆËˆË$v ) ÿ¤@‚Šv”“À€Ý €Ý2“ˆ8ˆ8)Wv )U|& &„ÿ¤@‚Šw”“À€Þ €Þ3“ˆUˆU*Wv )U&€  &„ÿ¤@ ‚Šx”“À€à€à“ˆˆˆˆ ÿ¤@‚Šy”“À€á€á“ŠoŠovU'  ) ÿ¤@‚Šz”“À€â€â“ˆÐˆÐvU'  ) ÿ¤@‚m“ÓÀ##m‚“Ã* v“Å‚“ÓÅv*“Æ‚“ÓÆv“Ç‚“ÓÇv”‚nnÌÌ{ { nê“À.. n€ç€…3€¬€è€…4€­/€‰^€Ü1ê“À00” ” “À00 …ê“À11II“À11 €¦¡“À22,¢“À2/24£“À272: ¥“À2>2C” ” “À22€¥ê“À33-‹B‹B“À33#ê“À44” ” “À44 Mê“À55LL“À55 &ê“À99” ” “À99 Lê“À::””“À:: 3ê“À; ;””“À;; ¡“À<<(¢“À<<&””“À<< ¡“À=='¢“À==)””“À==¡“À>>'¢“À>>'””“À>> ê“À??””“À??ê“À@@””“À@@¡“ÀA A¢“ÀAA ŠŠ“ÀAA ¡“ÀEE¢“ÀE!E6'£“ÀE:EI””“ÀEE”¡“ÀFF1¢“ÀFF$””“ÀFFê“ÀGG””“ÀGG 4ê“ÀHH8””“ÀHH&ê“ÀJJ””“ÀJJ”&¡“ÀLL¢“ÀLL””“ÀLL ”&¡“ÀMM¢“ÀMM””“ÀMM #ê“ÀNN$””“ÀNN‚ooÌÌ{ { o“ï“ÀQQo€Ž€‚Ib‚ppÌÌ{ { p‚“ÀTTp€ç€…3€¬€è€…4€­ +” “ÀUU”!“ÀVV”"“ÀWW\4”#“ÀXX\4”$“ÀYY(\c”%“ÀZZ#”&“À[[#”'“À\\'€À#”(“À]]#€À#”)“À^^1€´”*“À__”+“À`` ƒ’‚‚ƒ’U‚‚‚‚U+“È‚‚“ÈU‚qqÌÌ{ { q“É“Àeeqw”,”,“Àffw”-”-“Àgg‚“Éw‚“Éww‚“Éw‚“Éw‚“Éw‚“Éw  w‚rrÌÌ{ { r“Ê“Àjj r/€‰^€Üx‰p‰p“Àjjx‰n‰n“Àjj‚“Êx‚“Êxx‚“Êx‚“Êx‚“Êx‚“Êx  x‚ssÌÌ{ { s“Ö“Àzzsy”.”.“À{{y”/”/“À||‚“Öy‚“Öyy‚“Öy‚“Öy‚“Öy‚“Öy  y‚ttÌÌ{ { t“Ù“À€€tz”0”0“À€‚€‚z”1”1“À€ƒ€ƒ‚“Ùz‚“Ùzz‚“Ùz‚“Ùz‚“Ùz‚“Ùz  z‚uuÌÌ{ { u“Û“À€‡€‡%u€Ž€‚Ib€ç€…3€¬€è€…4€­“Ú‚“Û“Ú{“Ý‚“Û“Ý2{‚vvÌÌ{ { v“à“À€Ž€Žv€ç€…3€¬€è€…4€­z¡“À€€4{¢“À€7€W|“à“à“À€€“ß‚“à“ß|“á‚“à“á{|‚wwÌÌ{ { w“æ“À€”€”w/€‰^€ÜŒâ“À€•€™~‚›“À€•€• ~”2“À€–€– ~”3“À€—€—~”4“À€˜€˜~Y“À€™€™ "‚xxÌÌ{ { x“ã“À€›€›x‚“ã“â} U)‚“ã“ä} +U) ‚“ã“å } ~+U) “â‚“ã“â} U)“ä‚“ã“ä} +U) “å‚“ã“å } ~+U) ‚yyÌÌ{ { y‚“À€ € y}”5“À€¡€¡‚‚W‚‚W‚‚W “ç‚‚“çW“è‚‚“è}W ‚zzÌÌ{ { z“ò“À€®€®$z‚“ò$‚“ò$‚“ò$  $‚{{ÌÌ{ {  @“À€®(€®-{“ó“À€¯€¯/{‚“ó$‚“ó$‚“ó$  $‚||ÌÌ{ {  @“À€¯3€¯8|“õ“À€³€³|LL“À€´€´ YY“À€µ€µ €¦€¦“À€¶€¶‰{‰{“À€·€·ŽÈŽÈ“À€¸€¸‚“õ‚“õ‚“õ‚“õ‚“õ‚“õ  ‚}}ÌÌ{ { }“ö“À€»€»}‚”6”6“À€¼€¼‚”7”7“À€½€½ ‚“ö‚‚“ö‚‚‚“ö‚‚“ö‚‚“ö‚‚“ö‚  ‚‚~~ÌÌ{ { ~“÷“À€Â€Â)~/€‰^€Üƒ‰p‰p“À€Ã€Ã ƒ‰n‰n“À€Ä€Ä‚“÷ƒ‚“÷ƒƒ‚“÷ƒ‚“÷ƒ‚“÷ƒ‚“÷ƒ  ƒ”8‚ÌÌ{ { ”9“À€Ñ€Ñê“À€Ñ?€ÑK†”9”9“À€Ñ!€Ñ:‚€€ÌÌ{ { €”“À€Ô€Ô€/€‰^€Ü„”:”:“À€Ö€Ö¡“À€Ø€Ø#†¢“À€Ø'€Ø@„”;”;“À€Ø€Ø¡“À€Û,€Û0¢“À€Û4€Û@†£“À€ÛD€Û]„”<”<“À€Û€Û(‚ÌÌ{ { ”=  ”>h‚‰ÌÖ{ ¯ 4Š{$€¬‚‚Š|$€¬‚ ‚Š}$ €¬‚  ‚Š~$ €¬‚  ‚Š$$ €¬‚‚Š€  ‡€¬‚ ‚Š  ‡‡€¬‚‡ÌA€Ž,5„€Ì‚Š‚  ‡€¬‚€€‚Šƒ  ‡€¬‚‚Š„  ‡€¬‚ €‚Š…  ‡ €¬‚ €€ ‚І  ‡ €¬‚  ‚Ї  ‡‡ €¬‚$‡ÍA€Ž,5„€Í ‚Šˆ  ˆ€¬‚ ‚Љ  ˆˆ€¬‚ˆÎA€Ž,5„€Î‚ŠŠ  ˆ€¬‚€€‚Š‹  ˆ€¬‚‚ŠŒ  ˆ€¬‚ €‚Š  ˆ €¬‚ €€ ‚ŠŽ  ˆ €¬‚  ‚Š  ˆˆ €¬‚$ˆÏA€Ž,5„€Ï ‚Š& && &‰€¬‚ ‚Š‘& && &‰‰€¬‚‰ÐA€Ž,5„€Ð‚Š’& && &‰€¬‚€€‚Š“& && &‰€¬‚‚Š”& && &‰€¬‚ €‚Š•& && &‰ €¬‚ €€ ‚Š–…Ú..#..#‰€´‚…Ú‚Š—& && &‰ €¬‚  ‚Š˜& && &‰‰ €¬‚$‰ÑA€Ž,5„€Ñ ‚Š™0 00 0Š€¬‚ ‚Šš0 00 0ŠŠ€¬‚ŠÒA€Ž,5„€Ò‚Š›0 00 0Š€¬‚€€‚Šœ0 00 0Š€¬‚‚Š0 00 0Š€¬‚ €‚Šž0 00 0Š €¬‚ €€ ‚ŠŸ0 00 0Š €¬‚  ‚Š 0 00 0ŠŠ €¬‚$ŠÓA€Ž,5„€Ó ‚Š¡”C::7::7€¤‚Š¢”DCC!CC!€¤”EC"C&‚Š£”FJJ(JJ( €¤”GKK'”HLL/”IMM”J‚Ф”Kbbbb‡€¤”Lbb'”M‚Š¥p pp p‹€¬‚ ‚Цp pp p‹‹€¬‚‹ÔA€Ž,5„€Ô‚Чp pp p‹€¬‚€€‚Ѝp pp p‹€¬‚‚Š©p pp p‹€¬‚ €‚Šªp pp p‹ €¬‚ €€ ‚Š«p pp p‹ €¬‚  ‚Ьp pp p‹‹ €¬‚$‹ÕA€Ž,5„€Õ ‚Š­”Ouuuuˆ ŒŒŠ€¤‡5vv)”Qww”Gxx*”Ryy.”Szz/”T{{#”U||<”V}}'”W~~&”X)”Y€€€€)”Z€€-”[€‚€‚$”I€ƒ€ƒ”\€„€„”]€…€…‚Š®‡ôˆŒŒŠ€¤‡5  %”Q!!”G""&”R##*”S$$+”T%%”U&&8”V''#”W(("”X))%”Y**%”Z++)”I,,”\--”]..‚‚”?‚‚”?$‚”?$‚”?$ ‚”?$ ‚”?$$  $”=ƒƒÖÖ¯ ¯ ƒ”@ ƒ‡”^”^ ‡”_”_ ‡”`”` "‡”a”a ‡”b”b ꇔc”c ‡ ‚”@‡‚”@‡‡‚”@‡‚”@‡‚”@‡‚”@‡ ‚”@‡ ‚”@‡‡ $‡ ‡”=„„ÖÖ¯ ¯ „‡4 „ˆ”d”d!0ˆ”e”e3>ˆ”f”fAO‚‡4ˆ‚‡4ˆˆ‚‡4ˆ‚‡4ˆ‚‡4ˆ‚‡4ˆ ‚‡4ˆ ‚‡4ˆˆ $ˆ ˆ”=……ÖÖ¯ ¯ …”A& &…”g' '‡”L( (”h) )”i* *”j+ +”k, ,‚”A‰‚”A‰‰‚”A‰‚”A‰‚”A‰‚”A‰ ‚”A‰ ‚”A‰‰ …Ú‚”A…Ú‰$‰ ‰”=††ÖÖ¯ ¯ †”B0 0†€Ã‰”l11€Ã”m22 €Ã”n33€Ã”o44€Ã”p55€Ã”q66€Ã”r77!‚”BŠ‚”BŠŠ‚”BŠ‚”BŠ‚”BŠ‚”BŠ ‚”BŠ ‚”BŠŠ $Š Š”=‡‡ÖÖ¯ ¯ ‡”Pn n ‡”=ˆˆÖÖ¯ ¯ ˆ”Np pˆêq!q'‹”s”sq q¡rr%¢r(r.‹”t”tr r¡s!s'¢s*s0‹”u”us s‚”N‹‚”N‹‹‚”N‹‚”N‹‚”N‹‚”N‹ ‚”N‹ ‚”N‹‹ $‹ ‹”=‰‰ÖÖ¯ ¯ ‰”v”w * 2‰”x_Š‹ÖÖ¯ ¶ Н”y”w$$”w$$€¤€ˆ”w$$”z”w$$‚ ”w$$‚а”{”wCC”wCC]]€¤€ˆ”wCC”|”wCC”}‚б”~”wLL”wLL  €¤€ˆ”wLL€Š”wLL””wLL€§”wLL‚┈”wOO”wOO €¤€ˆ”wOO€Š”wOO€§”wOO‚г””wSS”wSS O€¤€ˆ”wSS€‰”wSS"€Š”wS#S$ŽÂ”wS%S-€«”wS.S01”wS1S5‚Š´”‚”wjj”wjj  €¤†8”wjj€§”wjj‚е”ƒ”wvv”wvv 1111 €¤€ˆ”wvv€‰”wvv”„”wvv#”…‚Š”†”w^^Š111%€ï”‡”waa ”ˆ”‰”wcc ”Š ”‹”wee”Œ1””whh”Ž”v‹‹ÖÖ¶ ¶ ‹†X”*-‹”2RŒ¦Öȶ , 8ж”‘” ”  €¤”’‚ Š·”“” ”  €¤‚ Џ””” ” €ó €¤‚ й”•” ” €ó €¤‚ Šº”–” ”  €¤”—”‚ Š»”˜”%% ”%% $€¤€Ö”% %‚ м”™”""”""Ö€”€•P×€”€•PØ€”€•PÙ€”€•PÚ€”€•PÖרÙÖ×ÚØÚÙ€¤€”€•P€”€•P€”€•P€”€•P€”€•P]”""Žâ”""€Ö”""ˆú”""‚ н”š”##”##Û€”€•PÜ€”€•PÝ€”€•PÞ€”€•P߀”€•PÛÜÝÞÛßÜßÝÞ€¤€”€•P€”€•P€”€•P€”€•P€”€•P]”##Žâ”##€Ö”##ˆú”##‚ о”›”$$”$$à€”€•Pန€•Pàáàဤ€”€•P€”€•P-”$ $ †ß”$ $ ‚ Š¿”œ”&&”&&—€•P〔€•P䀔€•Pâãä․€”€•P€”€•P€”€•P€Ö”& & ””& & ”ž”&&‚ ŠÀ”Ÿ”''”''倔€•P怔€•P瀔€•Påæç怤€”€•P€”€•P€”€•P” ”' ' ˆú”' ' ”ž”''‚ ŠÁ”¡”((”((耔€•P途€•Pꀔ€•Pèéêꀤ€”€•P€”€•P€”€•P” ”( ( ””( (ˆ“”((‚ ŠÂ”¢”** ”** 뀔€•P쀔€•P퀔€•Pëìëíì퀤€”€•P€”€•P€”€•P]”* * ¡”**¢”**‚ ŠÃ”£”++ ”++ €•P€•Pð€”€•Pîïðîð€”€•P€”€•P€”€•P]”+ + ¡”++¢”++‚ ŠÄ”¤”,, ”,, ñ€”€•Pò€”€•P󀔀•Pô€”€•Pñòñóôòóô€¤€”€•P€”€•P€”€•P€”€•P]”, , ¡”,,¢”,,”¥”,,‚ ŠÅ”¦”-- ”-- õ€”€•Pö€”€•P÷€”€•Pø€”€•Põö÷õø÷öø€¤€”€•P€”€•P€”€•P€”€•P]”- - ¡”--¢”--”¥”--‚ ŠÆ”§”.. ”.. ù€”€•Pú€”€•Pû€”€•Pü€”€•Pùúûüùûüú€¤€”€•P€”€•P€”€•P€”€•P]”. . ¡”..¢”..”¥”..‚ ŠÇ”¨”// ”// ý€”€•Pþ€”€•Pÿ€”€•P‚€”€•P‚€”€•Pýþÿ‚ý‚ÿ‚þ‚€¤€”€•P€”€•P€”€•P€”€•P€”€•P]”/ / ¡”//¢”//”¥”//”©”//‚ ŠÈ”ª”00 ”00 ‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚‚‚‚‚‚‚‚‚‚€¤€”€•P€”€•P€”€•P€”€•P€”€•P]”0 0 ¡”00¢”00”¥”00”©”00‚ ŠÉ”«”11 ”11 ‚€”€•P‚€”€•P‚ €”€•P‚ €”€•P‚ €”€•P‚ €”€•P‚‚‚ ‚ ‚ ‚ ‚‚ ‚ ‚ ‚ ‚€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P]”1 1 ¡”11¢”11”¥”11”©”11”¬”11‚ ŠÊ”­”22 ”22 ‚ €”€•P‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚ ‚‚‚‚‚‚‚ ‚‚‚‚‚‚€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P]”2 2 ¡”22¢”22”¥”22”©”22”¬”22”®”22 ‚ ŠË”¯”33 ”33 ‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚‚‚‚‚‚‚‚‚‚€¤€”€•P€”€•P€”€•P€”€•P€”€•P”°”33”±”33”²”33¡”33¢”3 3"‚ ŠÌ”³”44 ”44 ‚€”€•P‚€”€•P‚€”€•P‚€”€•P‚‚‚‚‚‚‚€¤€”€•P€”€•P€”€•P€”€•P”°”4 4”²”44¡”44”´”44‚ ŠÍ”µ”55”55‚€”€•P‚€”€•P‚€”€•P‚ €”€•P‚!€”€•P‚"€”€•P‚#€”€•P‚‚‚‚‚ ‚!‚!‚"‚#‚‚‚ ‚"‚#€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P”°”55”±”55”¶”55”²”55¡”55!¢”5"5$”¥”5%5'‚ ŠÎ”·”66 ”66 ‚$€”€•P‚%€”€•P‚&€”€•P‚'€”€•P‚$‚%‚&‚'‚$‚&‚%‚'€¤€”€•P€”€•P€”€•P€”€•P”°”6 6”±”66¡”66¢”66‚ ŠÏ”¸”77 ”77 ‚(€”€•P‚)€”€•P‚*€”€•P‚+€”€•P‚,€”€•P‚-€”€•P‚(‚)‚*‚+‚,‚-‚(‚*‚,‚)‚+‚-€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P”°”77”±”77”¶”77¡”77¢”77”¥”7 7"‚ ŠÐ”¹”88 ”88 ‚.€”€•P‚/€”€•P‚0€”€•P‚1€”€•P‚2€”€•P‚.‚/‚0‚1‚.‚2‚/‚0‚2‚1€¤€”€•P€”€•P€”€•P€”€•P€”€•P]”8 8ˆ“”88¡”88¢”88‚ ŠÑ”º”^^ ”^^ ‚3€”€•P‚4€”€•P ‚3‚4‚3‚3 €¤€”€•P€”€•P]”^ ^ €Ö”^^ˆú”^^‚ ŠÒ”»”ee”ee5€¤]”e e ‚ ŠÓ”¼”jj”jj‚5€”€•P?5‚5‚5€¤€”€•P³”j j ]”jj€Ö”jj‚ ŠÔ”½”pp)”pp)‚6€”€•P?5‚6‚6€¤€”€•P³”p+p-]”p;p<€Ö”p=p>‚ ŠÕ”{{”{{‚7‰–”{{Ž‚8Š*”{{Ž‚!‚7‚8€¬‚! ‰–”{{Š*”{{‚!ŠÖ”{{”{{‚9‰–”{{Ž‚:Š*”{{Ž‚!‚9‚:‚!‚9‚:€¬‚!‚!‚9‚:‚;A€Ž,5„€‚;‰–”{{Š*”{{‚!Š×”{{”{{‚<‰–”{{Ž‚=Š*”{{Ž‚!‚<‚=€¬‚!€€‰–”{{Š*”{{‚!ŠØ”{{”{{‚>‰–”{{Ž‚?Š*”{{Ž‚!‚>‚?€¬‚!‰–”{{Š*”{{‚!ŠÙ”{{”{{‚@‰–”{{Ž‚AŠ*”{{Ž‚!‚@‚A€¬‚! €‰–”{{Š*”{{‚!ŠÚ”{{”{{‚B‰–”{{Ž‚CŠ*”{{Ž‚!‚B‚C €¬‚! €€ ‰–”{{Š*”{{‚!ŠÛ”{{”{{‚D‰–”{{Ž‚EŠ*”{{Ž‚!‚D‚E €¬‚!  ‰–”{{Š*”{{‚!ŠÜ”{{”{{‚F‰–”{{Ž‚GŠ*”{{Ž‚!‚F‚G‚!‚F‚G €¬‚!$‚!‚F‚G‚HA€Ž,5„€‚H ‰–”{{Š*”{{‚!ŠÝ”}} ”}} ‚I‰–”} }„‚JŠ*”}}„ ‚I‚J‚I‚I‚I‚"‚I‚J‚´‚"‰–”} }Š*”}}”À”~ ~”Á” ””€ €‚"ŠÞ”Ô‰ ‰”‰ ‰‚K‰–”} }„‚LŠ*”}}„ ‚"‚K‚L‚L‚K€¤‚"‰–”} }Š*”}}”Ä”‰‰‚"Šß”Å”‹ ‹”‹ ‹‚M‰–”} }„‚NŠ*”}}„ ‚"‚M‚N‚M€¤‚"‰–”} }Š*”}}]”‹‹‚"Šà”Æ”ÏÏ”ÏÏ‚OA”Ï.Ï0„‚O€¤A”Ï.Ï0‚ Šá”Ç”ÐДÐЂP€”€•P‚P‚P€¤€”€•P€Ö”ÐЂ Šâ”×× ”×× ‚QA”× × Ž‚Q€¬ A”× × Šã”×× ”×× ‚RA”× × Ž‚R‚R€¬‚R‚SA€Ž,5„€‚SA”× × Šä”×× ”×× ‚TA”× × Ž‚T€¬€€A”× × Šå”×× ”×× ‚UA”× × Ž‚U€¬A”× × Šæ”×× ”×× ‚VA”× × Ž‚V€¬ €A”× × Šç”×× ”×× ‚WA”× × Ž‚W €¬ €€ A”× × Šè”×× ”×× ‚XA”× × Ž‚X €¬  A”× × Šé”×× ”×× ‚YA”× × Ž‚Y‚Y €¬$‚Y‚ZA€Ž,5„€‚Z A”× × Šê”È”ØØ ”ØØ ‚[€”€•P‚[€¤€”€•P‚ Šë”É”Ú Ú”Ú Ú‚\€”€•P‚\‚\‚\€„€”€•P”Ê”Úڔ˔ÚÚ‚ Šì”Ì”ã ã”ã ã‚]€”€•P€ó‚]‚]‚]€„€”€•P”Ê”ãã]”ãã‚ Ší”Í”ÿÿ)”ÿÿ)‚^€”€•P‚^‚^€¤€”€•PŽâ”ÿ*ÿ+]”ÿ,ÿ-‚ Œ”Δ++ Œ”φXÓ__î ö Šî”Д,, ”,, €¤†”, , ‚#Šï”Ñ”-- ”-- €¤†”- - ‚#Šð”Ò”.. ”.. €¤†”. . ‚#Šñ”Ó”// ”// €¤†”/ / ‚#Šò”Ô”1 1”1 1€¤†”11‚#Šó”Õ”2 2”2 2€¶€¤†”22‚#Šô”Ö”33”33€—€¤€Š”33†”33‚#Šõ”×”44”44€—€¶€¤€Š”44†”44‚#”Ø”;;”Ù†XÁŽŽ__ö ù Šö”Ú”<<”<<€¤”Û”<<†”<<‚$Š÷”Ü”EE ”EE  €¤Žñ”E!E'ŒZ”E(E0‚$Šø”Ý”HH ”HH  €¤”Þ”HH‚$Ž‹”NN ޔ߆X0__ù ú Šù”à”OO ”OO €µ €¤‚%‹!”QQ ”á†X0__ú û Šú”à”RR ”RR €µ€¤‚&‹$”TT ”â†X1‘‘__û ü Šû”à”UU ”UU €µ€¶€¤‚'‘”ã”WW ‘”ä†X’’’_aü ý Šü”à”XX ”XX ‚_&”X#X&„‚`'”X=X@„€µ‚_€µ‚`€µ‚_‚`€¤&”X#X&'”X=X@”å”XX”æ”X)X1‚(’”ç”__ ’€ñ†X““aaý ý “”è”aa“L€Œ€ö€÷€ö€ö”é†X>””aaý þ Šý”ê”bb”bb€¤‰U”bb‚*””ë”ee”L€Œ€ö€÷€ö€ö”ì†X¼••acþ Šþ”í”ff”ff‚a€”€•P%‚a€ñ€¤€”€•P€Š”ff‚+Šÿ”î”gg”gg‚b€”€•P%‚b€¤€”€•P€Š”gg‚+•”˜€˜ •”ð†X—––cf  ‹”ñ”€œ€œ”€œ€œ‚cA”€œ€œ„‚c‚c€¤A”€œ€œ”ò”€œ€œ“T”€œ€œ”ó‚,‹”ô”€¢€¢”€¢€¢‚d€”€•P‚d€¤€”€•P“T”€¢€¢”ò”€¢€¢#”õ‚,‹”ö”€ª€ª#”€ª€ª#‚eA”€ª)€ª+„‚e€¤A”€ª)€ª+”÷”€ª%€ª(”ò”€ª/€ª6”ø‚,‹”ù”€±€±$”€±€±$€¤Žâ”€±&€±'”ò”€±0€±7”ú‚,–‚fA”€º €º„”û”€º€º –€ò‚f†X——gg  —”ü”€»€» —”ý†XS˜˜gr  ‹M”€¼€¼ ”€¼€¼ ‚g€”€•P€ò‚g€¤€”€•P‚-‹”þ”€¾€¾ ”€¾€¾ ‚hA”€¾€¾„‚h‚.‚h€ò‚h€¤A”€¾€¾†J”€¾ €¾ †8”€¾€¾•”€¾€¾‚-‹”ÿ”€¿€¿ ”€¿€¿ ‚iA”€¿€¿„‚.‚i‚i€¤A”€¿€¿†J”€¿ €¿•”€¿€¿‚-‹•”€À€À”€À€À‚jA”€À€À„‚.‚j‚j€¤A”€À€À†J”€À€À•”€À€À‚-‹•”€Á€Á”€Á€Á‚kA”€Á€Á„‚.‚k€ò‚k€¤A”€Á€Á†J”€Á€Á•”€Á€Á‚-‹ •”€Â€Â ”€Â€Â ‚lA”€Â€Â„‚.‚l €¤A”€Â€Â†J”€Â€Â•”€Â€Â‚-‹ •”€Ã€Ã ”€Ã€Ã ‚mA”€Ã€Ã„‚m‚.‚m€¤A”€Ã€Ã]”€Ã€Ã•”€Ã€Ã‚-‹ •”€Ä€Ä ”€Ä€Ä ‚nA”€Ä€Ä„‚o€”€•P‚n‚o‚.‚n€ò‚o€¤A”€Ä€Ä€”€•P]”€Ä€Ä•”€Ä€Ä‚-‹ •”€Å€Å ”€Å€Å ‚pA”€Å€Å„‚q€”€•P‚p‚q‚q‚.‚p‚q‚q€¤A”€Å€Å€”€•P]”€Å€Å•”€Å€Åˆ“”€Å"€Å#‚-˜•”€Ì€Ì˜•†Xh™™rw  ‹ ”ÿ”€Ñ €Ñ”€Ñ €Ñ‚r€”€•P‚s€”€•P‚t€”€•P‚r‚s ‚r‚s‚t‚t€¤€”€•P€”€•P€”€•P]”€Ñ€Ñ€Ö”€Ñ€Ñ‰U”€Ñ€Ñ•‚/‹• ”€Ù €Ù”€Ù €Ù‚u‡$”€Ù€Ù„‚v• ”€Ù?€ÙE„‚u‚u ‚u‚u‚v €¤‡$”€Ù€Ù• ”€Ù?€ÙE]”€Ù€Ù€Ö”€Ù.€Ù/‰U”€Ù7€Ù8• ‚/™• ”€â€â™• †XКšw   ‹•”€ä €ä”€ä €ä‚w€”€•P‚x€”€•P‚w‚x ‚w‚x €¤€”€•P€”€•P]”€ä€ä€Ö”€ä€ä‰U”€ä€ä‚0‹•”€ê€ê”€ê€ê‚y€”€•P‚y‚y ‚y‚y‚y€¤€”€•P]”€ê€ê€Ö”€ê€ê‰U”€ê€ê‚0‹•”€ë€ë”€ë€ë‚z€”€•P‚z‚z ‚z‚z‚z€¤€”€•P]”€ë€ë•”€ë€ë•”€ë€ë ‚0‹•”€ò€ò ”€ò€ò ‚{€”€•P‚|€”€•P‚{‚| ‚|‚{€¤€”€•P€”€•P•”€ò!€ò#€Ö”€ò$€ò%‰U”€ò&€ò'†”€ò(€ò)†X• ‚0‹•”€÷€÷”€÷€÷‚}€”€•P‚~€”€•P‚}‚~ ‚~‚}€¤€”€•P€”€•P•”€÷€÷€Ö”€÷€÷‰U”€÷€÷‚0‹•”€ù €ù”€ù €ù‚€”€•P‚€€”€•P‚‚€ ‚‚€‚€€¤€”€•P€”€•P]”€ù€ù€Ö”€ù€ù‰U”€ù€ù‚0‹•”€ÿ €ÿ”€ÿ €ÿ‚€”€•P‚‚€”€•P‚‚‚ ‚‚‚‚€¤€”€•P€”€•P]”€ÿ€ÿ•”€ÿ€ÿ•”€ÿ€ÿ‚0‹•””‚ƒ€”€•P‚„€”€•P‚ƒ‚„ ‚ƒ‚„ €¤€”€•P€”€•P]”•”•”‚0‹•””‚…€”€•P‚†€”€•P‚…‚† ‚…‚† €¤€”€•P€”€•P]”•”•”‚0‹•””‚‡€”€•P‚ˆ€”€•P‚‡‚ˆ ‚‡‚ˆ €¤€”€•P€”€•P]”•”•”‚0‹•”  ”  ‚‰€”€•P‚‰‚‰ ‚‰‚‰‚‰€¤€”€•P]”  •”  •”  ‚0‹•” ” ‚Š€”€•P‚‹€”€•P‚Š‚‹ ‚‹‚ЂЀ¤€”€•P€”€•P]”•”•”‚0‹•””‚Œ€”€•P‚Œ‚Œ ‚Œ‚Œ€¤€”€•P]”‰U”‚0š•”š•†X¤››  ‹•””‚€”€•P‚Ž€”€•P‚‚Ž ‚?‚ނހ¤€”€•P€”€•P]”€Ö”‰U”‚1›•”:: ›• †Xœœ’  ‹•!”;;”;;‚€”€•P€µ‚‚‚€¤€”€•P•"”;;“¿”;;‚2‹•#”??”??‚A”??„‚‘€”€•P ‚‚‘‚‚‘‚€¤A”??€”€•P]”??“¿”??‚2œ•$”EE œ•%†X9’– ! ‹•&”FF ”FF ‚’€”€•P‚“€”€•P‚’€ò‚’‚“‚“€¤€”€•P€”€•P†J”FFˆµ”FF‚3‹ •'”HH”HH‚”€”€•P‚•€”€•P‚”‚•‚•€ò‚”‚•€ò‚”‚•€¤€”€•P€”€•P‡$”HH]”HHˆµ”HH‚3•(”QQ •)†Xðžž–˜! # ‹!”ê”RR”RR‚–€”€•P€µ‚–‚–€ñ‚–€¤€”€•P”à”RR“¿”RR‚4‹"•*”U U”U U‚—€”€•P€ñ‚—€ñ‚—€ñ‚—€ñ‚—€¤€”€•P]”UU‚4ž‚˜‰–”{{Ž‚™Š*”{{Ž”¾”{{ž‚™”Ä”{{%‚˜•+”{,{4‚!‚˜‚™•,”{E{S‚ ”¾‚š‰–”{{Ž‚›Š*”{{Ž‚!‚š‚›‚ ”¾‚œ‰–”{{Ž‚Š*”{{Ž‚!‚œ‚‚!‚œ‚‚ ”¾‚ž‰–”{{Ž‚ŸŠ*”{{Ž‚!‚ž‚Ÿ‚ ”¾‚ ‰–”{{Ž‚¡Š*”{{Ž‚!‚ ‚¡‚ ”¾‚¢‰–”{{Ž‚£Š*”{{Ž‚!‚¢‚£‚ ”¾‚¤‰–”{{Ž‚¥Š*”{{Ž‚!‚¤‚¥ ‚ ”¾‚¦‰–”{{Ž‚§Š*”{{Ž‚!‚¦‚§ ‚ ”¾‚¨‰–”{{Ž‚©Š*”{{Ž‚!‚¨‚©‚!‚¨‚© $‚!‚˜‚™ ‚!‚˜‚™†XŸŸªª# # Ÿ‚ª‰–”} }„‚«Š*”}}„ ”¿”}} Ÿ‚ª‚«”À”~ ~†X”¿%‚«‚!‚ª‚«•-”„„ †X”¿‚!‚ª‚«•.”…… †X”¿‚ ”¿‚¬‰–”} }„‚­Š*”}}„ ‚¬‚­‚¬‚¬‚¬‚"‚¬‚­” ”¿”®‰–”} }„‚¯Š*”}}„ ‚"‚®‚¯‚¯‚®”Å‚ ”¿”Å‚°‰–”} }„‚±Š*”}}„ ‚"‚°‚±‚°†X  ²²# #  ‚²A”Î΄‡ò”ÎΠ‚²†X¡¡³³# # ¡‚³A”× × Ž†Y”×× ¡#‚³•/”××#‚ †Y‚´A”× × Ž‚´‚ †Y‚µA”× × Ž‚µ‚µ‚ †Y‚¶A”× × Ž‚¶‚ †Y‚·A”× × Ž‚·‚ †Y‚¸A”× × Ž‚¸‚ †Y‚¹A”× × Ž‚¹ ‚ †Y‚ºA”× × Ž‚º ‚ †Y‚»A”× × Ž‚»‚» $‚³ ‚³†X¢¢¼¼# # ¢•0”‚‚¢•1†XÊ£¥¼È# ( ‹#•2”‚!‚!”‚!‚!‚¼A”‚‚„‚5‚¼Z‚¼€¤‚5A”‚‚•4”‚!‚! ‚5‹$”‚* ‚*”‚* ‚*‚½A”‚*‚*„‚6‚½‚´‚6A”‚*‚*‚6‹%•6”‚5‚5”‚5‚5‚¾A”‚*‚*„‚6‚¾‚5‚¾€¤‚6A”‚*‚*•4”‚5!‚5$‚6‹&•7”‚Q‚Q-”‚Q‚Q-‚¿A”‚*‚*„‚6‚¿Z‚5‚¿€¤‚6A”‚*‚*•8†X•0•5‚6‹'•9”‚d‚d”‚d‚d‚ÀA”‚*‚*„‚6‚ÀZ‚À€¤‚6A”‚*‚*•:‚6£‚ÁA”‚‚„•3”‚ ‚£€ç€…3€¬€è€…4€­‚Áꔂ‚‚5‚Á•;•;”‚ ‚$ꔂ‚!‚5‚Á•<•<”‚ ‚Žê”‚‚7‚5‚Á•>•>”‚ ‚•2‚8•3•2‚ÂA”‚‚„‚5‚ÂZ‚•?†X•0¤¤ÃÃ( ( ¤‚ÃA”‚*‚*„•5”‚* ‚*¤€Ž€‚Ib‚5‚Õ@”‚+‚+†X•0•5‚5‚ÕC”‚-‚-†X•0•5•D”‚/ ‚/†X•0•5‚8•5‚ÄA”‚*‚*„‚6‚Ä•6‚8•5•6‚ÅA”‚*‚*„‚6‚Å‚5‚Å•7‚8•5•7‚ÆA”‚*‚*„‚6‚ÆZ‚5‚Æ•9‚8•5•9‚ÇA”‚*‚*„‚6‚ÇZ‚Ç•E†X•0¥¥ÈÈ( ( ¥•F”‚n‚n'¥•G†XL¦¦ÈÈ( , ‹(•H”‚s‚s)”‚s‚s)€´‚;•L·z\V4à‰•M•L·z\V4à‰•N•O•O‚<‹)•P”‚v‚v*”‚v‚v*‘ €´‚;•L·z\V4à‰•M•L·z\V4à‰•N•O•O•Q”‚w‚w•R”‚x‚x%•S”‚y‚y •T”‚z‚z&‚<‹*•U”‚}‚}&”‚}‚}&‘€´‚;•L·z\V4à‰•M•L·z\V4à‰•N•O•O‚<‹+•V”‚‚)”‚‚)€¤‚>•L·z\V4à‰•Z•L·z\V4à‰•[’’•]   ‚<¦•^•_*1¦•`§­ÈÑ, T #‹,•a•_ •b''ÿ¤@‚@‹-•_•b,,  “ÿ´@‚A•d•_ •e•_‚A‹.•f•_ •b1 1“ ÿ¤@‚A‚A‹/•g•_! !•b/ /“ ÿ¤@‚A‚A‹0•h•_" "•b0 0“ ÿ¤@‚A‚A‹1•i•_# #•b2 2!“ ÿ¤@‚A‚A‹2•_''•b77”ÿ´@‚B‚B‹3•_)) •_)) •€¬‚C‚C‹4•_)) •_)) •€¬‚C ‚C‹5•_)) •_)) • €¬‚C  ‚C‹6•l•_00•bXXÿ¤@‚@‹7•m•_11 •bHH ‚È-•_11„‚È“”–—•ÿ¤@-•_11‚@‹8•o•_22•bPP‚É-•_2?2A„‚É‚Éÿ¤@-•_2?2A‚@‹9•p•_4 4"•b\\‚Ê-•_4_4a„‚Ê‚Êÿ¤@-•_4_4a‚@‹:•q•_5 5"•bdd‚Ë-•_5%5'„‚̆ߕ_5+5-„‚˂̀•%ÿ¤@-•_5%5'†ß•_5+5-‚@‹;•r•_6 6•bff‚Í-•_6#6%„‚Άߕ_6)6+„‚ψ¬•_696;„‚͂΀•‚Ϙ‚͂΂Ïÿ¤@-•_6#6%†ß•_6)6+ˆ¬•_696;‚@‹<•t•_7 7•bhh˜ÿ¤@‚@‹=•u•_8 8•bnn˜ÿ¤@‚@‹>•v•_9 9•boo˜ÿ¤@‚@‹?•w•_: : •bvv˜€•ÿ¤@‚@‹@•x•_; ; •b{{˜ ÿ¤@‚@‹A•y•_< <•b€‚€‚ ‚Ð-•_<(<*„‚Ðÿ¤@-•_<(<*‚@‹B•z•_= =•b€…€… ÿ¤@‚@‹C•{•_> >•b€‰€‰ €—ÿ¤@‚@‹D•|•_? ?•b€€ €—ÿ¤@‚@‹E•}•_@ @•b€“€“€–ÿ¤@‚@‹F•~•_A A•b€—€—€–ÿ¤@‚@‹G••_B B•b€›€›€–€–ÿ¤@‚@‹H•€•_C C•b€¥€¥ ÿ¤@‚@‹I•_EE"•_EE"$€¬‚G‚G‹J•_EE"•_EE"$€¬‚G ‚G‹K•_EE"•_EE"$ €¬‚G  ‚G‹L•_FF%•_FF%$€¬‚H‚H‹M•_FF%•_FF%$€¬‚H ‚H‹N•_FF%•_FF%$ €¬‚H  ‚H§•c•_§€Ž€‚Ib‚@•c  “•f‚@•c•f“ •g‚@•c•g“ •h‚@•c•h“ •i‚@•c•i“ •^¨¨ÑÑO O ¨•j•_&&¨€Ž€‚Ib‚@•j”•^©©ÑÑO O ©•k•_)) ©•ƒ•_** –•„•_++”•…•_,,“•†•_--—•‡•_..‚@•k•‚@•k•‚@•k•  •^ªªÑÑO O ª••_EE"ª‚@•$‚@•$‚@•$  $•^««ÑÑO O @•_E&E, B•_E/E:«•‚•_FF%«‚@•‚$‚@•‚$‚@•‚$  $•^¬¬ÑÑO O @•_F)F/ B•_F2F=¬•ˆ•_HH¬•‰•^­­ÑÑO T ‹O•Š•_II)•b;; •%ÿ¤@‚I‹P•‹•_JJ •b66•%ÿ¤@‚I‹Q•Œ•_KK(•bXXÿ¤@‚I‹R••_LL-•b44$ ÿô@‚I‹S•Ž•_MM•b((ÿ¤@‚I­••*3­•‘J.®µÑÛT ´ `‹T”‘• •  €¤‚J‹UŽk•!!•!!™€¤†•!!‚J‹VŽX•"" •"" ?™€¤³•""†•""‚J‹W•’•''•''™€¤†•''•“‚J‹X•zz•zzš€¬‚L ‚L‹Y•zz•zzšš€¬‚Lš‚ÑA€Ž,5„€‚Ñ‚L‹Z•zz•zzš€¬‚L€€‚L‹[•zz•zzš€¬‚L‚L‹\•zz•zzš€¬‚L €‚L‹]•zz•zz𠀬‚L €€ ‚L‹^•{{•{{›€¬‚M ‚M‹_•{{•{{››€¬‚M›‚ÒA€Ž,5„€‚Ò‚M‹`•{{•{{›€¬‚M€€‚M‹a•{{•{{›€¬‚M‚M‹b•{{•{{›€¬‚M €‚M‹c•{{•{{› €¬‚M €€ ‚M‹d•–•O O•O Oœ™€¤‚N‚N‹e•˜•X X•X Xœ€¤‚N‚N‹f…Ú•ZZ•ZZœ€´‚N…Ú‚N‹g•zz•zz𠀬‚L  ‚L‹h•zz•zzšš €¬‚L$š‚ÓA€Ž,5„€‚Ó ‚L‹i•{{•{{› €¬‚M  ‚M‹j•{{•{{›› €¬‚M$›‚ÔA€Ž,5„€‚Ô ‚M‹k•™•~~ •~~ % €¤•~ ~‚J‹l•𕀡€¡•€¡€¡% €¤•€¡€¡‚J‹m•›•€¦€¦•€¦€¦%€¤•€¦€¦‚J‹n•œ•€Å€Å•€Å€Å% €¤•€Å€Å"•‚J‹o•ž•€Ù€Ù•€Ù€Ù% €¤•€Ù€Ù#•Ÿ‚J‹p• •€ä€ä•€ä€ä% €¤•€ä€ä$‚J‹q•¡•€ë€ë•€ë€ë% €¤•€ë€ë‚J‹r•¢•€÷€÷•€÷€÷% €¤•€÷€÷$‚J‹s•£••% €¤•$‚J‹t•¤•  •  % €¤•  ‚J‹u•¥•''•''% €¤•''"‚J‹v•¦•22•22% €¤•2 2%‚J‹w•§•==•==% €¤•==‚J‹x•¨•GG(•GG(% €¤•G)G.‚J‹y•©•UU$•UU$% €¤•U%U*‚J‹z•ª•ll%•ll%% €¤•l&l+‚J‹{•«•ww•ww% €¤•ww‚J‹|•¬•xx•xx% €¤•xx"‚J‹}•­•zz•zz% €¤•zz‚J‹~•®•ˆˆ•ˆˆ%% €¤’ˆ’𕈈‚J‹•™™•™™€­€¬‚O ‚O‹€•™™•™™€­€¬‚O‚ÕA€Ž,5„€‚Õ‚O‹•™™•™™€­€¬‚O€€‚O‹‚•™™•™™€­€¬‚O‚O‹ƒ•™™•™™€­€¬‚O €‚O‹„•™™•™™€­ €¬‚O €€ ‚O‹…•™™•™™™™ ‚´‚O•°•™™•±•šš•²•››‚O‹†•–•œ œ•œ œ€­™€¤‚O‚O‹‡•³• • €­™€¤‚O‚O‹ˆ•´•ž ž•ž ž€­ €¤‚O‚O‹‰•™™•™™€­ €¬‚O  ‚O‹Š•™™•™™€­ €¬‚O$‚ÖA€Ž,5„€‚Ö ‚O‹‹•¦¦•¦¦%™™ž€´‚P•¦ ¦•¶•¦¦•·•¦¦!‚P‹Œ•–•© ©•© ©ž™€¤‚P•¸‚P‹•³•« «•« «ž™€¤‚P•¹‚P‹Ž•º•® ®•® ®ž%ž€¤‚P•»•®®•¼‚P‹•½•µ µ•µ µž%ž€¤‚P•»•µ µ#•¾•µ%µ.•¿•µ0µ:•À‚P‹•Á•• %%€¤••‚J‹‘•õõ•õõ“ %Ÿ‚´‚Q•†•õõ%•Ä•õ9õGÉ•õIõNÊ•õPõV‚Q‹’•Å•ˆ´ˆ´•ˆ´ˆ´Ÿ€¤‚Q‚Q‹“•Æ•ˆµˆµ•ˆµˆµ‚×€”€•PŸ‚×%€¤‚Q€”€•P‚Q‹”•Ç•‚‚)•‚‚)Ÿ™™‚¼‚Q•È•‚+‚<•É•‚=‚L‚Q‹••Ê•‚‚•‚‚Ÿ‚¼‚Q‚Q‹–•Ë•‚‚•‚‚Ÿ‚¼‚Q†•‚‚‚Q‹—•Ì•‚‚•‚‚Ÿž™‚¼‚Q•Í•‚‚$‚Q‹˜•Ε‚+‚+.•‚+‚+.Ÿž‚¼‚Q‚Q‹™•Ï•‚?‚?•‚?‚?Ÿž‚¼‚Q•Í•‚?‚?‚Q‹š•Е‚@‚@•‚@‚@Ÿž‚¼‚Q•Í•‚@‚@'‚Q‹›•Ñ•‚B‚B•‚B‚BŸž‚¼‚Q‚Q‹œ•Ò•‚W‚W•‚W‚WŸž‚¼‚Q‚Q‹•e•‚`‚` •‚`‚` Ÿž‚¼‚QŽâ•‚`‚`•Ó•‚`‚`‚Q‹ž•Ô•‚h‚h•‚h‚hŸœ ‚¼‚Q•Õ•‚h‚h‚Q‹Ÿ•Ö•‚y‚y•‚y‚yŸžœ‚¼‚Q•Í•‚y‚y•ו‚y‚y"‚Q‹ •Ø•ƒ-ƒ-•ƒ-ƒ-Ÿ‚¼‚Q‚Q‹¡•Ù•ƒ4ƒ4•ƒ4ƒ4Ÿžœ‚¼‚Q†•ƒ4ƒ4•Ú•ƒ4ƒ4‚Q‹¢•Û•ƒ:ƒ:•ƒ:ƒ:Ÿž‚¼‚Q‚Q‹£•Ü•ƒ?ƒ?•ƒ?ƒ?Ÿ%‚¼‚Q‚Q‹¤•Ý•ƒFƒF•ƒFƒFŸžž ‚¼‚Q•Þ•ƒFƒF •ß•ƒF+ƒF8‚Q‹¥•à•ƒKƒK)•ƒKƒK)Ÿž%‚¼‚Q•Í•ƒK+ƒK3‚Q‹¦•ᕃSƒS•ƒSƒSŸž ‚¼‚Q•╃SƒS)‚Q‹§•㕃WƒW•ƒWƒWŸ ž ‚¼‚Q•䕃WƒW&•Í•ƒW(ƒW0‚Q‹¨•啃ԃԕƒÔƒÔŸ%%‚¼‚Q•敃ÔƒÔ%•»•ƒÔ3ƒÔ6‚Q‹©•ç•ƒà ƒà•ƒà ƒàŸ %‚¼‚Q•蕃àƒà&‚Q‹ª•镈GˆG)•ˆGˆG)Ÿž ‚¼‚Q•Í•ˆG*ˆG2‚Q‹«•ꕈ£ˆ£•ˆ£ˆ£Ÿ š‚¼‚Q•땈£ˆ£&•안£'ˆ£2‚Q‹¬•핈¤ˆ¤•ˆ¤ˆ¤Ÿž š‚¼‚Q†•ˆ¤ˆ¤•땈¤&ˆ¤3•안¤4ˆ¤?‚Q‹­•ª ˆª•ˆª ˆªŸ%‚¼‚Q‚Q‹®•ˆÂˆÂ•ˆÂˆÂ“ % ‚´‚R•†•ˆÂˆÂ!•Ä•ˆÂ5ˆÂCÉ•ˆÂEˆÂJÊ•ˆÂLˆÂR‚R‹¯•Å•ˆ×ˆ×•ˆ×ˆ× €¤‚R‚R‹°•Æ•ˆØˆØ•ˆØˆØ‚Ø€”€•P ‚Ø%€¤‚R€”€•P‚R‹±•Ï•ˆÈˆÈ•ˆÈˆÈ %‚¼‚R•»•ˆÈˆÈ‚R‹²•ð•ˆÊˆÊ•ˆÊˆÊ %‚¼‚R‚R‹³•ñ•ˆÑˆÑ•ˆÑˆÑ %%‚¼‚R•ò•ˆÑˆÑ)•ó•ˆÑ*ˆÑ0‚R®•—•)) ® ¡•,,™¢•,,$œ•ô•ô•,,™ê•--œ•õ•õ•-- ™ê•..œ•ö•ö•.. ™ê•//œ•÷•÷•// ™ê•00œ•ø•ø•00™ê•11œ•ù•ù•11™ê•22#œ•ú•ú•22™ê•33œ•û•û•33™ê•44œ•ü•ü•44 ™ê•55œ•ý•ý•55™ê•66œ•þ•þ•66™¡•77 ¢•7 7$œ•ÿ•ÿ•77™ê•88œ––•88™ê•99œ––•99™ê•::œ––•:: ™ê•;;#œ––•;;™ê•<<œ––•<<™¡•>>#%¢•>'>,œ––•>>™¡•?? %¢•?$?)œ––•??™ê•@@ œ––•@@™ê•AA œ––•AA™¡•FF  ¢•F$F(œ– – •FF™ê•GG#œ– – •GG™ê•HHœ– – •HH%¡•II™¢•I"I*œ– – •II›¡•KK%™¢•K(K0š£•K3K>œ– – •KK ¡•MM™¢•M!M)œ––•MM•–‚J•—•–œ™•˜‚J•—•˜œ…Ú‚J•—…Úœ•¯¯ÙÙ´ ´ ¯•”•zz¯š•”•”•zzš––•z z-š––•z0zC‚J•”š‚J•”šš‚J•”š‚J•”š‚J•”š‚J•”š ‚J•”š ‚J•”šš $š š•°°ÙÙ´ ´ °•••{{°›––•{{%›––•{({:‚J••›‚J••››‚J••›‚J••›‚J••›‚J••› ‚J••› ‚J••›› $› ›•±±ÙÙ´ ´ ±•¯•™™±€æ€…2€«™•°•™™••¯™•±•šš••¯ •²•››••¯‚J•¯€­‚J•¯€­‚J•¯€­‚J•¯€­‚J•¯€­‚J•¯€­ ‚J•¯€­ ‚J•¯€­ ‚J•¯™™ •–‚J•¯•–€­™•³‚J•¯•³€­™•´‚J•¯•´€­ $ €®–•²²ÙÙ´ ´ ²•µ•¢¢ ²O€Œ €ø%Ó•££ •¯•¤¤™™–•¥¥‚J•µ%™™ž•–‚J•µ•–ž™•³‚J•µ•³ž™•º‚J•µ•ºž%ž•½‚J•µ•½ž%ž–•³³ÙÙ´ ´ ³•Õõõ³ “•†•õõ%••Ã%É•õIõN••ÃÊ•õPõV••à •Ä•õ9õG••Ö•‚)‚) ••à –•‚*‚*••ÂSž–•‚<‚<••Ö•‚=‚=/••à –•‚S‚S••Ü–•‚T‚T••à –•‚U‚U ••ÂJ•Ó %Ÿ•Å‚J•ÕÅŸ•Æ‚J•ÕÆ‚Ù€”€•PŸ‚Ù%•´´ÚÚ´ ´ ´•ˆ´Ÿ–•ˆÃˆÃ ••ï‚S%–•ˆÇˆÇ••ï‚J•ï“ % •Å‚J•ï•Å •Æ‚J•ï•Æ‚Ú€”€•P ‚Ú%•µµÛÛ´ ´ µ•Æ–*/µ– x¶¶Ûà´ æ 2‹´–!–(( –(( €¤Ê–( (‚T‹µ–"–** –** €¤Žâ–**†–**€Š–**‚T‹¶–#–++–++€¤Ê–++†–++€Š–++‚T‹·–$–,,–,,€¤Ê–,,†–,,‚T‹¸–%–--–--€¤Ê–--†–--‚T‹¹–&–//–//‚Û€”€•P•‚Û‚Û€¤€”€•P1–/ / Ê–//–'–/0/4‚T‹º–(–<< –<< €­€¤Žâ–<<†–<<‰U–<(<)‚T‹»–)–AA –AA  €¤ˆ¬–A A ‚T‹¼–*–II –II  €¤Žâ–I I †–II‰U–II‚T‹½–+–KK –KK €­€¤Žâ–K K†–KK‰U–K'K(‚T‹¾–,–TT–TT‚Ü€”€•P‚Ü€¤€”€•P‚T‹¿–-–VV–VV€æ€¤Žâ–VV†–V!V"‰U–V#V$‚T‹À–.–ZZ–ZZ€æ€¤Žâ–ZZ†–Z Z!‰U–Z"Z#‚T‹Á–/–^^–^^€¤Žâ–^^‚T‹Â–0–ii–ii•€¤1–iiÊ–i i&†–i'i(‚T‹Ã–1–pp–pp€¤Ê–pp‚T‹Ä–2–vv–vv%€¤Ê–vv‚T‹Å–3–yy–yy‚Ý€”€•P•˜‚Ý €•% €¤€”€•P1–yyÊ–yy‚T‹Æ–4–€€–€€5€¤Ê–€€”¼–€€‚T‹Ç–5–€’€’–€’€’5€¤”¼–€’€’Žâ–€’>€’?‚T‹È–6–€™€™–€™€™‚Þ€”€•P• ‚Þ‚Þ€¤€”€•P1–€™€™Ê–€™€™€Š–€™!€™"•»–€™.€™1‚T‹É–7–€€–€€€¤–8–€€!‚T‹Ê–9–:€¦€¦ –:€¦€¦ €Ã€–€¤‚T‹Ë–;–:†7†7 –:†7†7 €–€¤‚T‹Ì–<–:†8†8–:†8†8¡€¤‚T‹Í–>–:†9†9–:†9†9‚߀”€•P‚߀¤€”€•P‚T‹Î–:†;†; –:†;†; • %€¤1–:†; †;–?–:†;†;Ê–:†;†;‚T‹Ï–@–:†=†= –:†=†=  • %€¤†–:†=†=€Š–:†=†=1–:†=†=–?–:†=†=Ê–:†=†=#‚T‹Ð–A–:†?†? –:†?†? ¢• %€¤”z–:†? †?1–:†?†?–?–:†?†?Ê–:†?†?"‚T‹Ñ.–:†A†A –:†A†A ˜  €•% • %€¤–?–:†A†AÊ–:†A†A‚T‹Ò–C–:†C†C–:†C†C˜  €•% • %€¤–?–:†C†CÊ–:†C†C%‚T‹Ó–D–:†E†E–:†E†E˜  €•% • %€¤–?–:†E†E Ê–:†E"†E(‚T‹Ô–E–:†G†G–:†G†G5 • %€¤–?–:†G†G Ê–:†G"†G(‚T‹Õ’ÿ–:†I†I –:†I†I  • %€¤–?–:†I†IÊ–:†I†I‚T‹Ö–F–:†K†K–:†K†K • %€¤†–:†K†K€Š–:†K†K1–:†K†K–?–:†K†K!Ê–:†K#†K)‚T‹×–G–:†M†M–:†M†M • %€¤†–:†M†M€Š–:†M†M1–:†M †M$–?–:†M%†M)Ê–:†M+†M1‚T‹Ø–H–:†O†O–:†O†O • %€¤†–:†O†O €Š–:†O!†O"1–:†O#†O'–?–:†O(†O,Ê–:†O.†O4‚T‹Ù–I–:†Q†Q –:†Q†Q  • %€¤€Š–:†Q †Q 1–:†Q †Q–?–:†Q†QÊ–:†Q†Q‚T‹Ú–J–:†S†S–:†S†S• %€¤1–:†S†S–?–:†S†S–K–:†S†S'Ê–:†S(†S.‚T‹Û–L–:‰h‰h–:‰h‰h • %€¤†–:‰h‰h€Š–:‰h‰h1–:‰h‰h–?–:‰h‰h"–K–:‰h#‰h/Ê–:‰h0‰h6‚T‹Ü–M–:‰±‰±–:‰±‰±¢• %€¤”z–:‰±‰±1–:‰±‰±–?–:‰±‰±!–K–:‰±"‰±.Ê–:‰±/‰±5‚T‹Ý–N–:‰Ì‰Ì–:‰Ì‰Ì˜  €•% • %€¤–?–:‰Ì‰Ì–K–:‰Ì‰Ì)Ê–:‰Ì*‰Ì0‚T‹Þ–O–:Š5Š5–:Š5Š5˜  €•% • %€¤–?–:Š5 Š5$–K–:Š5%Š51Ê–:Š52Š58‚T‹ß–P–:ŠxŠx–:ŠxŠx˜  €•% • %€¤–?–:Šx#Šx'–K–:Šx(Šx4Ê–:Šx5Šx;‚T‹à–Q–:Š­Š­–:Š­Š­5 • %€¤–?–:Š­#Š­'–K–:Š­(Š­4Ê–:Š­5Š­;‚T‹á–R–:ŠÏŠÏ–:ŠÏŠÏ • %€¤–?–:ŠÏŠÏ–K–:ŠÏŠÏ*Ê–:ŠÏ+ŠÏ1‚T‹â–S–:‹‹–:‹‹ • %€¤†–:‹‹€Š–:‹‹1–:‹‹#–?–:‹$‹(–K–:‹)‹5Ê–:‹6‹<‚T‹ã–T–:‹<‹<"–:‹<‹<" • %€¤†–:‹<#‹<$€Š–:‹<%‹<&1–:‹<'‹<+–?–:‹<,‹<0–K–:‹<1‹<=Ê–:‹<>‹> iÿ¤@‚W‹ë–_–W –Z?? iÿ¤@‚W‹ì–`–W–ZRRiiiÿ¤@‚W‹í–a–W–ZSSiiiÿ¤@‚W‹î–b–W–ZTTiiiÿ¤@‚W‹ï–c–W  –ZUUiiiÿ¤@‚W‹ð–d–W!! –ZVV iiiÿ¤@‚W‹ñ–e–W"" –ZWW iiiÿ¤@‚W‹ò–f–W##–ZXXiiiÿ¤@‚W‹ó–g–W$$ –ZYYiiiÿ¤@‚W‹ô–h–W%% –ZZZ iiiÿ¤@‚W‹õ–i–W''–Zeeiiÿ¤@‚W‹ö–j–W((–Zggiiÿ¤@‚W‹÷–k–W)) –Zff iiÿ¤@‚W‹ø–l–W** –Zhh iiiÿ¤@‚W‹ù–m–W,, –Zjj iiÿ¤@‚W‹ú–n–W-- –Zkk iiÿ¤@‚W‹û–o–W.. –ZAA iiiÿ¤@‚W‹ü–p–W//–Zlliiÿ¤@‚W‹ý–q–W11 –Zqq ‚à-–W11„‚ài‚àiÿ¤@-–W11‚W‹þ–r–W22 –Zuu ‚á-–W22„‚ái‚áiÿ¤@-–W22‚W‹ÿ–s–W44 –ZII iiÿ¤@‚WŒ–t–W66 –Z€¤€¤ iiÿ¤@‚WŒ–u–W88 –Zjj iÿ¤@‚WŒ–v–W99–Zkk?iÿ¤@‚WŒ–w–W:: –Zll 5iÿ¤@‚WŒ–x–W> >–Z€ï €ï‚â-–W==„‚ã†ß–W= = „‚X‚â‚ã‚ãÿ´@‚X-–W==†ß–W= = ‚XŒ–z–W? ?–Z€ð €ð‚ä-–W==„‚å†ß–W= = „‚X‚ä‚å‚å‚åÿ´@‚X-–W==†ß–W= = ‚XŒ–{–W@ @–Z€ñ €ñ‚æ-–W==„‚ç†ß–W= = „‚X‚æ‚ç‚ç‚çÿ´@‚X-–W==†ß–W= = ‚XŒ–|–WA A–Z€ò €ò‚è-–W==„‚é†ß–W= = „‚X‚è‚é‚é ‚éÿ´@‚X-–W==†ß–W= = ‚XŒ–}–WB B–Z€ó €ó‚ê-–W==„‚ë†ß–W= = „‚X‚ê‚ë‚ë‚êÿ´@‚X-–W==†ß–W= = ‚XŒ –~–WEE –Z€õ€õ ‚ì†ß–WEE„‚í-–WEE„‚X‚ì‚íi‚ìÿ¤@†ß–WEE-–WEE‚WŒ ––WHH –Z.. ‚Xÿ¤@‚WŒ –WII –WII £€¬‚Y ‚YŒ –WII –WII ££€¬‚Y£ £‚YŒ –WII –WII £€¬‚Y‚YŒ–WII –WII £€¬‚Y‚YŒ–WII –WII £€¬‚Y ‚YŒ–WII –WII £ €¬‚Y  ‚YŒ–WJJ –WJJ ¤€¬‚Z ‚ZŒ–WJJ –WJJ ¤¤€¬‚Z¤ ¤‚ZŒ–WJJ –WJJ ¤€¬‚Z‚ZŒ–WJJ –WJJ ¤€¬‚Z‚ZŒ–WJJ –WJJ ¤€¬‚Z ‚ZŒ–WJJ –WJJ ¤ €¬‚Z  ‚ZŒ–‚–WKK –Z:: ?‚X¤£ÿ¤@‚WŒ–ƒ–WLL –ZCC 5‚X¤£ÿ¤@‚WŒ–„–WOO –ZLL ‚î-–WOO„‚ï†ß–WOO„‚X‚î‚ï‚X‚î‚ïÿ¤@-–WOO†ß–WOO‚WŒ–…–WPP –Z[[ ‚ð-–WPP„‚ñ†ß–WPP„‚X‚ð‚ñ‚X‚ð‚ñÿ¤@-–WPP†ß–WPP‚W·…d–W ·i…c¸¸òò  ¸‚ò-–W==„‚ó†ß–W= = „–y–W= =¸‚W–y–x‚ô-–W==„‚õ†ß–W= = „‚X‚ô‚õ‚õ‚W–y–z‚ö-–W==„‚÷†ß–W= = „‚X‚ö‚÷‚÷‚÷‚W–y–{‚ø-–W==„‚ù†ß–W= = „‚X‚ø‚ù‚ù‚ù‚W–y–|‚ú-–W==„‚û†ß–W= = „‚X‚ú‚û‚û ‚û‚W–y–}‚ü-–W==„‚ý†ß–W= = „‚X‚ü‚ý‚ý‚ü–x‚W–y–x‚ô-–W==„‚õ†ß–W= = „‚X‚ô‚õ‚õ–z‚W–y–z‚ö-–W==„‚÷†ß–W= = „‚X‚ö‚÷‚÷‚÷–{‚W–y–{‚ø-–W==„‚ù†ß–W= = „‚X‚ø‚ù‚ù‚ù–|‚W–y–|‚ú-–W==„‚û†ß–W= = „‚X‚ú‚û‚û ‚û–}‚W–y–}‚ü-–W==„‚ý†ß–W= = „‚X‚ü‚ý‚ý‚ü…c¹¹þþ  ¹–€–WII ¹£–€–€–WII‚W–€£‚W–€££‚W–€£‚W–€£‚W–€£‚W–€£  £…cººþþ  º––WJJ º¤–––WJJ‚W–¤‚W–¤¤‚W–¤‚W–¤‚W–¤‚W–¤  ¤…c»»þþ  »€Ó–†*/»–‡À¼Ùþ& “ FŒ–ˆ–†..–†.. |€¤‰4–†..€‰–†..€Š–†..–‰–†..'–Š–†.(.,–‹‚[Œ–Œ–†66–†66 €¤€ˆ–†66“ –†66‚[Œ––†99–†99 €¤€ˆ–†99€‰–†99€Š–†99“ –†9 9#‚[Œ–Ž–†]]%–†]]%€¤€ˆ–†]&]'€«–†](]*‚[Œ––†aa$–†aa$ €¤€ˆ–†a%a&€‰–†a'a+€Š–†a,a-“ –†a.a1–‚[Œ –†€‰€‰!–†€‰€‰!¥€¬‚\ ‚\Œ!–†€‰€‰!–†€‰€‰!¥¥€¬‚\¥‚þA€Ž,5„€‚þ‚\Œ"–†€‰€‰!–†€‰€‰!¥€¬‚\€€‚\Œ#–†€‰€‰!–†€‰€‰!¥€¬‚\‚\Œ$–†€‰€‰!–†€‰€‰!¥€¬‚\ €‚\Œ%–†€‰€‰!–†€‰€‰!¥ €¬‚\ €€ ‚\Œ&–†€‰€‰!–†€‰€‰!¥ €¬‚\  ‚\Œ'–†€‰€‰!–†€‰€‰!¥¥ €¬‚\$¥‚ÿA€Ž,5„€‚ÿ ‚\Œ(–’–†€ €"–†€ €"ƒ€”€•P ¥ƒƒ ƒƒ€¤€”€•P–“–†€#€3–”–†€4€FŽ!–†€G€N€ˆ–†€O€P€‰–†€Q€U€Š–†€V€W“ –†€X€[”²–†€\€_–•€Ó‚[Œ)–––†€Ñ€Ñ–†€Ñ€Ñƒ€”€•Pƒƒ ¥ƒƒ€¤€”€•P]–†€Ñ€Ñ €ˆ–†€Ñ!€Ñ"€‰–†€Ñ#€Ñ'€Š–†€Ñ(€Ñ)–”–†€Ñ*€Ñ<“ –†€Ñ=€Ñ@”²–†€ÑA€ÑD–—‚[Œ*–˜–†€Ô€Ô–†€Ô€Ôƒ€”€•Pƒƒ ¥ƒƒ€¤€”€•P]–†€Ô€Ô€ˆ–†€Ô €Ô!€‰–†€Ô"€Ô&€Š–†€Ô'€Ô(–”–†€Ô)€Ô;“ –†€Ô<€Ô?”²–†€Ô@€ÔC–™‚[Œ+–š–†€×€× –†€×€×  ¥€¤]–†€×!€×"€ˆ–†€×#€×$€‰–†€×%€×)€Š–†€×*€×+–”–†€×,€×>“ –†€×?€×B–›‚[Œ,–œ–†€Ú€Ú!–†€Ú€Ú!  ¥ €¤]–†€Ú"€Ú#€ˆ–†€Ú$€Ú%€‰–†€Ú&€Ú*€Š–†€Ú+€Ú,–”–†€Ú-€Ú?“ –†€Ú@€ÚC–‚[Œ-–ž–†€Þ€Þ–†€Þ€Þ  €¤]–†€Þ €Þ!€ˆ–†€Þ"€Þ#€‰–†€Þ$€Þ(€Š–†€Þ)€Þ*“ –†€Þ+€Þ.–Ÿ‚[Œ.– –†€ç€ç–†€ç€ç ¥€¤€ˆ–†€ç€ç€‰–†€ç€ç€Š–†€ç€ç –”–†€ç!€ç3€«–†€ç4€ç6–¡‚[Œ/–¢–†€ë€ë–†€ë€ë ¥€¤€ˆ–†€ë€ë€‰–†€ë€ë€Š–†€ë€ë –”–†€ë!€ë3€«–†€ë4€ë6–£‚[Œ0–¤–†€ï€ï–†€ï€ï €¤€ˆ–†€ï€ï€‹–†€ï€ï€Œ–†€ï€ï–¥‚[Œ1–¦–†€ô€ô–†€ô€ô# €¤€ˆ–†€ô€ôˆª–†€ô€ô€Œ–†€ô€ô–§‚[Œ2–¨–†€ú€ú!–†€ú€ú!  €¤€ˆ–†€ú"€ú#€‰–†€ú$€ú(€Š–†€ú)€ú*–©–†€ú+€ú;–ª–†€ú<€úI–«‚[Œ3–¬–†€þ€þ#–†€þ€þ# # €¤€ˆ–†€þ$€þ%€‰–†€þ&€þ*€Š–†€þ+€þ,–©–†€þ-€þ=–­–†€þ>€þL–®‚[Œ4–¯–†–† |€¤€‰–†€Š–† !‰4–†"(Ë–†).€ú–†/4–Š–†59–°‚[Œ5–±–†  –†   |€¤€‰–† ! %€Š–† & '€«–† ( *‰4–† + 1Ë–† 2 7€ú–† 8 =–²‚[Œ6–³–†–† G}€¤€Š–†–´–†$–µ–†&,–¶‚[Œ7–·–†77–†77 G€¤€Š–†77–¸–†77+Ë–†757:–¹–†7I7P€£–†7[7^–º‚[Œ8–»–†KK–†KK1 €¤‚F–†KK–¼‚[Œ9–½–†U U-–†U U-1 €¤‚F–†U/U3–¾€Ó‚[Œ:–¿–†[[–†[[1 €¤‚F–†[[!–À‚[Œ;–Á––†a a"–†a a"1 ¤C€ˆ–†a#a$–Â[Œ<ˆD–†m m–†m m¦#€¤‚]‚]Œ=–Å–†n n–†n n¦€œ€¤‚]‚]Œ>–Æ–†o o–†o o¦€¤‚]‚]Œ?–Ç–†p p–†p p¦€´€¤‚]‚]Œ@–È–†q q–†q q¦€¤‚]‚]ŒA† –†r r–†r r¦€¤‚]‚]ŒB€Ç–†s s–†s s¦€¤‚]‚]ŒC†ã–†t t–†t t¦ €¤‚]‚]ŒD–É–†u u–†u u¦G¦€¤‚]–Ê–†uu‚]ŒE–Ë–†y y–†y y¦ €¤‚]€Š–†yy‚]ŒF–Ì–†{{–†{{¦€¤‚]€ˆ–†{{€«–†{{‚]ŒG–Í–†ŠŠ–†ŠŠ+€¤€«–†ŠŠ!–Ζ†Š"Š)‚[ŒH–Ï–†ŒŒ–†ŒŒ1+€¤€ˆ–†ŒŒ‚F–†Œ Œ$‚[ŒI–Ж†ŽŽ–†ŽŽG++€¤–Ê–†ŽŽ‚[ŒJ–Ñ–†–†G++€¤–Ê–†–Ò–†)‚[ŒK–Ó–†¢ ¢–†¢ ¢J €¤__ŒL–Ô–†ªª –†ªª  pJ€¤€ˆ–†ª!ª"€‰–†ª#ª'€Š–†ª(ª)–Õ–†ª*ª1–Ö–†ª2ª<–×–†ª>ªE–Ø‚[ŒM–Ù–†ÀÀ–†ÀÀ _€¤€Š–†ÀÀ†8–†À À!‚[ŒN–Ú–†ÞÞ&–†ÞÞ& §J€¤€ˆ–†Þ'Þ(€‰–†Þ)Þ-€Š–†Þ.Þ/–Ü–†Þ1Þ:‚[ŒO–Ý–†ôô#–†ôô#ƒA–†ô3ô5„¨ ƒƒR0€¤A–†ô3ô5€Š–†ô$ô%‚ –†ô'ô)–ß–†ôOôRk–†ôoôr‚[ŒP–à–†úú*–†úú*© 0€¤–â–†ú,ú.€Š–†úNúO‚[ŒQ–ã–†‚ ‚ –†‚ ‚ 1€¤€ˆ–†‚ ‚ “ –†‚ ‚ !‚F–†‚ "‚ &–ä‚[ŒR–å–†‚& ‚&–†‚& ‚&u¦€¤ÿ–æÿŒS–Ç–†‚) ‚)–†‚) ‚)ur€¤ÿ–çÿŒT–è–†‚, ‚, –†‚, ‚, u€œ€¤ÿ–éÿŒU–Å–†‚/ ‚/–†‚/ ‚/u€œ€¤ÿ–êÿŒV–ë–†‚2 ‚2–†‚2 ‚2u€¤ÿ–ìÿŒW–í–†‚5 ‚5$–†‚5 ‚5$u €¤ÿ–îÿŒX–ï–†‚9 ‚9–†‚9 ‚9u€œ€¤ÿ–ðÿŒY–ñ–†‚? ‚?–†‚? ‚?u€¤ÿ–òÿŒZ–󖆂F ‚F–†‚F ‚Fu€¤ÿ–ôÿŒ[–õ–†‚J ‚J–†‚J ‚Jup€¤ÿ–öÿŒ\–÷–†‚O ‚O–†‚O ‚Ou€¤ÿ–øÿŒ]–ù–†‚R ‚R–†‚R ‚Ru€¤ÿ–úÿŒ^‡”–†‚U ‚U–†‚U ‚Uu €¤ÿ–ûÿŒ_‡––†‚X ‚X–†‚X ‚Xu €¤ÿ–üÿŒ`–ý–†‚[ ‚[%–†‚[ ‚[%u €¤ÿ–þÿŒa–ÿ–†‚b ‚b–†‚b ‚bu €¤ÿ—ÿŒb—–†‚e ‚e–†‚e ‚eu €¤ÿ—ÿŒc—–†‚h ‚h–†‚h ‚hu €¤ÿ—ÿŒd†ï–†‚n ‚n–†‚n ‚nu €¤ÿ—ÿŒe—–†‚s ‚s–†‚s ‚su €¤ÿ—ÿŒf—–†‚y ‚y–†‚y ‚yu €¤ÿ— ÿŒg— –†‚| ‚|–†‚| ‚|u €¤ÿ€‰–†‚|‚|€Š–†‚| ‚|!€ú–†‚|"‚|'— ÿŒh— –†‚€ ‚€–†‚€ ‚€u €¤ÿ€‰–†‚€‚€ €Š–†‚€!‚€"€ú–†‚€#‚€(— ÿŒi—–†‚… ‚…"–†‚… ‚…"u +€¤ÿ€‰–†‚…#‚…'€Š–†‚…(‚…)€ú–†‚…*‚…/—ÿŒj—–†‚‰ ‚‰–†‚‰ ‚‰u€¤ÿ—ÿŒk—–†‚Œ‚Œ–†‚Œ‚Œu€ß€¤ÿ—ÿŒl—–†‚’‚’–†‚’‚’u €¤ÿ€ˆ–†‚’‚’—ÿŒm—–†‚™ ‚™–†‚™ ‚™u €¤ÿ€‰–†‚™‚™ €Š–†‚™"‚™#€ú–†‚™%‚™*—ÿŒn—–†‚£‚£$–†‚£‚£$u €¤ÿ€‰–†‚£&‚£*€Š–†‚£,‚£-€ú–†‚£/‚£4—ÿŒo—–†‚§‚§"–†‚§‚§"u €¤ÿ€‰–†‚§$‚§(€Š–†‚§*‚§+€ú–†‚§-‚§2—ÿŒp—–†‚Ó ‚Ó–†‚Ó ‚Ó'€¤8—8Œq—–†‚Þ ‚Þ–†‚Þ ‚Þ'ª€¤8—8Œr€¸–†‚ñ ‚ñ–†‚ñ ‚ñ'€¤8— 8Œs†%–†‚û ‚û–†‚û ‚û'€¤8—!8Œt—"–†ƒ ƒ –†ƒ ƒ ' €¤8—#8Œu…Ú–†ƒ ƒ –†ƒ ƒ '€´8…Ú8Œv–ñ–†ƒ ƒ–†ƒ ƒ'€¤8—$8Œw—%–†ƒ ƒ–†ƒ ƒ'€¤8—&8Œx—'–†ƒ" ƒ"–†ƒ" ƒ"'€¤8—(8Œy—)–†ƒ0 ƒ0–†ƒ0 ƒ0'€¤8—*8Œz†3–†ƒ3 ƒ3–†ƒ3 ƒ3'g€¤8—+8Œ{—,–†ƒ> ƒ>–†ƒ> ƒ>'1€¤8—-8Œ|—.–†ƒC ƒC–†ƒC ƒC'€¤88Œ}—/–†ƒL ƒL–†ƒL ƒL' €¤88Œ~—–†ƒO ƒO–†ƒO ƒO' €¤8—08Œ–ù–†ƒY ƒY–†ƒY ƒY'€¤88Œ€—1–†ƒe ƒe$–†ƒe ƒe$' €¤88Œ–ÿ–†ƒn ƒn–†ƒn ƒn' €¤88Œ‚‡”–†ƒw ƒw–†ƒw ƒw' €¤88Œƒ‡––†ƒ‚ ƒ‚–†ƒ‚ ƒ‚' €¤88Œ„‡¸–†ƒ‹ƒ‹–†ƒ‹ƒ‹' €¤88Œ…—–†ƒ˜ ƒ˜–†ƒ˜ ƒ˜' €¤88Œ†—–†ƒ¨ƒ¨–†ƒ¨ƒ¨' €¤88Œ‡—–†ƒ³ ƒ³–†ƒ³ ƒ³' €¤88Œˆ—2–†ƒ¿ ƒ¿%–†ƒ¿ ƒ¿%' €¤88Œ‰…Ê–†ƒÈ ƒÈ–†ƒÈ ƒÈ' €¤88ŒŠ—3–†ƒÑ ƒÑ"–†ƒÑ ƒÑ"' €¤88Œ‹†ë–†ƒÙ ƒÙ–†ƒÙ ƒÙ' €¤88ŒŒ—4–†ƒÛ ƒÛ–†ƒÛ ƒÛ' €¤88Œ—–†ƒï ƒï–†ƒï ƒïL€¤a—5aŒŽ–Å–†ƒ÷ ƒ÷–†ƒ÷ ƒ÷L€œ€¤a—6aŒ—7–†ƒÿ ƒÿ–†ƒÿ ƒÿL€¤a—8aŒ–Æ–†„ „–†„ „L€¤a—9aŒ‘ˆG–†„ „ –†„ „ L€¤a—:aŒ’—;–†„ „–†„ „L €¤a—<aŒ“†ã–†„ „–†„ „L €¤a—=aŒ”†ï–†„$ „$–†„$ „$L €¤a—>aŒ•—?–†„, „,–†„, „,L €¤a—@aŒ–†ò–†„4 „4–†„4 „4L_€¤a—AaŒ——B–†„@ „@–†„@ „@L|€¤a—CaŒ˜—D–†„H „H–†„H „HL €¤a€‰–†„H„H€Š–†„H„H—EaŒ™—F–†„P „P–†„P „PL«€¤a—HaŒš…Ú–†„Q„Q–†„Q„QL€´a…ÚaŒ›–Æ–†„^ „^–†„^ „^M€¤b—IbŒœ—J–†„a „a–†„a „aMc€¤b—KbŒˆ¨–†„d „d–†„d „dM7€¤b—LbŒž†ï–†„g „g–†„g „gM €¤b—MbŒŸ†ò–†„j „j–†„j „jM`€¤b—NbŒ ˆD–†„m „m–†„m „mM#€¤b—ObŒ¡ˆF–†„p „p–†„p „pM€€¤b—PbŒ¢€Ç–†„s „s–†„s „sM€¤b—QbŒ£—R–†„v „v–†„v „vM€¤b—SbŒ¤—–†„y „y–†„y „yM€¤b—TbŒ¥…Ú–†„z„z–†„z„zM€´b…ÚbŒ¦–Æ–†„‡ „‡–†„‡ „‡…€¤‚—U‚Œ§—V–†„Š „Š–†„Š „Š…z€¤‚—W‚Œ¨ˆ¦–†„ „–†„ „…6€¤‚—X‚Œ©ˆD–†„ „–†„ „…#€¤‚—Y‚ŒªˆF–†„“ „“–†„“ „“…€€¤‚—Z‚Œ«€Ç–†„– „––†„– „–…€¤‚—[‚Œ¬…Ú–†„—„—–†„—„—…€´‚…Ú‚Œ­–å–†„¤ „¤–†„¤ „¤¬¦€¤‚c—]‚cŒ®–Ç–†„§ „§–†„§ „§¬t€¤‚c—^‚cŒ¯‡Â–†„ª „ª–†„ª „ª¬€¤‚c—_‚cŒ°—`–†„­ „­–†„­ „­¬u€¤‚c—a‚cŒ±—b–†„³ „³–†„³ „³¬u€¤‚c—c‚cŒ²—d–†„¹ „¹–†„¹ „¹¬ €¤‚c—e‚cŒ³—f–†„¼ „¼–†„¼ „¼¬ €¤‚c—g‚cŒ´†ï–†„¿ „¿–†„¿ „¿¬ €¤‚c—h‚cŒµ–ÿ–†„Á „Á–†„Á „Á¬ €¤‚c‚cŒ¶—–†„Å „Å–†„Å „Ŭ €¤‚c‚cŒ·—–†„É „É"–†„É „É"¬ +€¤‚c€‰–†„É#„É'€Š–†„É(„É)‚cŒ¸— –†„Í „Í–†„Í „ͬ €¤‚c€‰–†„Í„Í€Š–†„Í „Í!‚cŒ¹—i–†„Ñ „Ñ–†„Ñ „Ѭ €¤‚c€‰–†„Ñ„Ñ"€Š–†„Ñ#„Ñ$‚cŒº…Ú–†„Õ„Õ–†„Õ„Õ¬€´‚c…Ú‚cŒ»—"–†„æ „æ –†„æ „æ ( €¤::Œ¼‡Â–†„ï „ï–†„ï „ï(€¤::Œ½—d–†„ù „ù–†„ù „ù( €¤::Œ¾—f–†… …–†… …( €¤::Œ¿—–†… … –†… … (€¤::ŒÀ—j–†… …–†… …( €¤:—k:ŒÁ—–†…# …#–†…# …#( €¤::ŒÂ‡¸–†…2 …2–†…2 …2( €¤:—l:ŒÃ†ï–†…B …B–†…B …B( €¤::ŒÄ—2–†…M …M%–†…M …M%( €¤::ŒÅ—m–†…W …W–†…W …W( €¤::ŒÆ—3–†…k …k"–†…k …k"( €¤::ŒÇ—n–†…u …u–†…u …u((€¤::ŒÈ—o–†…{ …{–†…{ …{((€¤::ŒÉ†3–†…€ …€–†…€ …€(g€¤::ŒÊ—%–†…‹ …‹–†…‹ …‹(€¤::ŒË†ã–†…“ …“–†…“ …“( €¤::ŒÌ—,–†…• …•–†…• …•(1€¤::ŒÍ—–†…œ …œ"–†…œ …œ"( +€¤:€‰–†…œ#…œ'€Š–†…œ(…œ):ŒÎ—i–†…­ …­–†…­ …­( €¤:€‰–†…­…­"€Š–†…­#…­$:ŒÏ—p–†…¾ …¾–†…¾ …¾( j€¤:€‰–†…¾…¾€Š–†…¾ …¾!:ŒÐ— –†… …–†… …Â( €¤:€‰–†…Â…Â€Š–†… …Â!:ŒÑ—`–†…Å …Å–†…Å …Å('€¤::ŒÒ—b–†…Ñ …Ñ–†…Ñ …Ñ('€¤::ŒÓ–Ç–†…ç …ç–†…ç …ç­l€¤‚d—r‚dŒÔ–å–†…ê …ê–†…ê …ê­¦€¤‚d—s‚dŒÕ—t–†…í …í–†…í …í­u€¤‚d—u‚dŒÖ—v–†…ò …ò–†…ò …ò­u€¤‚d—w‚dŒ×—x–†…÷ …÷–†…÷ …÷­€œ€¤‚d—y‚dŒØ€Ç–†…ú …ú–†…ú …ú­€¤‚d—z‚dŒÙ†ï–†…ý …ý–†…ý …ý­ €¤‚d—{‚dŒÚ…Ú–†…þ…þ–†…þ…þ­€´‚d…Ú‚dŒÛ–†† † –†† † $€¬‚e‚eŒÜ–†† † –†† † $€¬‚e ‚eŒÝ–†† † –†† † $ €¬‚e  ‚eŒÞ–†† † –†† † $ €¬‚e  ‚eŒß–†† † –†† † $$ €¬‚e‚eŒà—}–†† † &–†† † & €¤€ˆ–†† '† (€«–†† )† +—~€Ó‚[Œá—–†††–†††> $€¤†–†††€Š–†††—€‚[Œâ—–†††#–†††#> €¤€ˆ–††$†%€‰–††&†*†–††+†-€Š–††.†/€«–††0†2—‚‚[Œã—–††) †)–††) †)3€¤EEŒä—"–††1 †1 –††1 †1 3 €¤EEŒå†3–††9 †9–††9 †93g€¤EEŒæ—ƒ–††B †B–††B †B3€¤EEŒç†ï–††J †J–††J †J3 €¤EEŒè—%–††T †T–††T †T3€¤EEŒé†ã–††\ †\–††\ †\3 €¤EEŒê—„–††^ †^–††^ †^3'€¤EEŒë—…–††h †h–††h †h3'€¤EEŒì—,–††s †s–††s †s31€¤EEŒí—†–††x †x–††x †x3 €¤E€‰–††x†x!€Š–††x"†x#EŒî‚󖆆ІЖ††Š†Š ¦€œªr'€¤ÿ€‰–††Š†Š€Š–††Š †Š!—‡–††Š#†Š(—ˆ–††Š5†Š<—‰–††ŠO†ŠY—Š–††Š[†Š]—‹ÿŒï—Œ–††™†™$–††™†™$ƒ€”€•Pƒ'' €¤€”€•P€ó–††™%†™'—–††™(†™*—Ž–††™+†™-—‚[Œð—–††¥†¥$–††¥†¥$(( €¤—–††¥%†¥'—Ž–††¥(†¥*—‘‚[Œñ—’–††´†´$–††´†´$33 €¤—–††´%†´'—Ž–††´(†´*—“‚[Œò—”–††À†À–††À†À'€¤‚ –††À†À—•‚[Œó—––††Ë†Ë–††Ë†Ë(€¤‚ –††Ë†Ë——‚[Œô—˜–††×†×–††×†×3€¤‚ –††×†×—™‚[Œõ—𖆆à†à–††à†à G''€¤€‰–††à†à€Š–††à†à–Ê–††à†à—›–††à†à!—œ‚[Œö—–††ñ†ñ–††ñ†ñ€¤—ž–††ñ†ñ—Ÿ–††ñ†ñË–††ñ†ñ$€ú–††ñ%†ñ*— ‚[Œ÷—¡–††õ†õ+–††õ†õ+ 0€¤€‰–††õ,†õ0€Š–††õ1†õ2‚ –††õ4†õ6—¢‚[Œø—£–†‡‡$–†‡‡$ 1€Ž€Ž€¤€ˆ–†‡%‡&€Š–†‡'‡(—¤–†‡)‡7—¥–†‡8‡?—¦‚[Œù—§–†‡ ‡ –†‡ ‡ €Ù€¤€«–†‡ ‡ –Ζ†‡ ‡ —¨‚[Œú—©–†‡‡ –†‡‡ €Ù€Ž€¤†–†‡‡“ –†‡‡—ª–†‡‡—Ÿ–†‡‡—«–†‡ ‡&“–†‡'‡,—¬‚[Œû—–†‡‡$–†‡‡$' €¤8€‰–†‡&‡*€Š–†‡,‡-€ú–†‡/‡4—­8Œü—–†‡"‡""–†‡"‡""' €¤8€‰–†‡"#‡"'€Š–†‡")‡"*€ú–†‡",‡"1—®8Œý— –†‡&‡&–†‡&‡&' €¤8€‰–†‡&‡&#€Š–†‡&%‡&&€ú–†‡&(‡&-—¯8Œþ—–†‡:‡:–†‡:‡:' €¤8€‰–†‡:!‡:%€Š–†‡:'‡:(€ú–†‡:*‡:/—°8Œÿ—±–†‡H‡H –†‡H‡H '   J€¤8€‰–†‡H!‡H%€Š–†‡H'‡H(—²8—³–†‡o‡o–†‡o‡o' €Ž€¤8€‰–†‡o‡o €Š–†‡o"‡o#—´8—p–†‡®‡®–†‡®‡®' j€¤8€‰–†‡®‡®#€Š–†‡®%‡®&€ú–†‡®(‡®-—µ8—¶–†‡Ô‡Ô/–†‡Ô‡Ô/' €¤8€Š–†‡Ô0‡Ô1—·8—¸–†‡ï‡ï–†‡ï‡ï '®€¤€ˆ–†‡ï‡ï€‰–†‡ï‡ï€Š–†‡ï‡ï€ù–†‡ï ‡ï%—º‚[—»–†ˆˆ%–†ˆˆ%d  '' €¤—¼–†ˆ&ˆ1—½–†ˆ2ˆ=€ˆ–†ˆ>ˆ?€‰–†ˆ@ˆD€Š–†ˆEˆF€ù–†ˆHˆM—¾–†ˆYˆ_—¿‚[—À–†ˆ ˆ %–†ˆ ˆ %d (( €¤—¼–†ˆ &ˆ 1€ˆ–†ˆ 2ˆ 3€‰–†ˆ 4ˆ 8€Š–†ˆ 9ˆ :—Á–†ˆ <ˆ A—–†ˆ Mˆ S—Â[—Ä–†ˆˆ–†ˆˆd  '' €¤—¼–†ˆˆ*—½–†ˆ+ˆ6€ˆ–†ˆ7ˆ8€‰–†ˆ9ˆ=€Š–†ˆ>ˆ?€ù–†ˆ@ˆE—¾–†ˆFˆL—Å‚[—Æ–†ˆˆ–†ˆˆd (( €¤—¼–†ˆˆ*€ˆ–†ˆ+ˆ,€‰–†ˆ-ˆ1€Š–†ˆ2ˆ3—Á–†ˆ5ˆ:—–†ˆFˆL—Ç‚[—È–†ˆ?ˆ?#–†ˆ?ˆ?#)€¤;€ï–†ˆ?$ˆ?&; —É–†ˆEˆE–†ˆEˆE)) €¤;€ˆ–†ˆEˆE —Ê–†ˆE,ˆE/—Ë–†ˆE@ˆEC; –†‰" ‰"–†‰" ‰"$€¬‚g‚g –†‰" ‰"–†‰" ‰"$€¬‚g ‚g –†‰" ‰"–†‰" ‰"$ €¬‚g  ‚g –†‰" ‰"–†‰" ‰"$ €¬‚g  ‚g–†‰" ‰"–†‰" ‰"$$ €¬‚g‚g–†‰# ‰#–†‰# ‰#$€¬‚h‚h–†‰# ‰#–†‰# ‰#$€¬‚h ‚h–†‰# ‰#–†‰# ‰#$ €¬‚h  ‚h–†‰# ‰#–†‰# ‰#$ €¬‚h  ‚h–†‰# ‰#–†‰# ‰#$$ €¬‚h‚h—Ζ†ŠMŠM–†ŠMŠM  u2 O€¤ €ˆ–†ŠMŠM€‰–†ŠMŠM€Š–†ŠMŠM /–†ŠM!ŠM'€ù–†ŠM)ŠM.0–†ŠM;ŠMF€ú–†ŠMGŠML—Ï–†ŠMMŠMS1–†ŠMTŠMX—Ђ[—Ñ–†ŠeŠe–†ŠeŠe €¤€ˆ–†ŠeŠe€Š–†ŠeŠe—Ò‚[—Ó–†ŠqŠq–†ŠqŠq 1O€¤€ˆ–†ŠqŠq€Š–†ŠqŠq‚F–†ŠqŠq"—Ô–†Šq,Šq0—Õ–†Šq1Šq81–†Šq:Šq>—Ö‚[—×–†ŠˆŠˆ–†ŠˆŠˆ 12O€¤€ˆ–†ŠˆŠˆ€Š–†ŠˆŠˆ“ –†ŠˆŠˆ"‚F–†Šˆ#Šˆ'0–†Šˆ0Šˆ;€ú–†Šˆ<ŠˆA1–†ŠˆBŠˆF—Ø‚[—Ù–†Š•Š•–†Š•Š• 'O€¤€‰–†Š•Š•€Š–†Š•Š•€ù–†Š•Š•!€ú–†Š•"Š•'1–†Š•(Š•,—Ú‚[—Û–†Š³г–†Š³гƒ€”€•P@1ƒ#ƒ€¤€”€•P€ˆ–†Š³г—Ü–†Š³ г)]–†Š³*г+ˆª–†Š³-г2—Ý‚[—Þ–†ŠÇŠÇ–†ŠÇŠÇ €¤—Ü–†ŠÇŠÇ†–†ŠÇŠÇ—ß‚[—à–†ŠÊŠÊ–†ŠÊŠÊƒ€”€•Pªƒ1'€¤€”€•P€ˆ–†ŠÊŠÊ—Ü–†ŠÊŠÊ"“ –†ŠÊ#ŠÊ&—á–†ŠÊ'ŠÊ*—â–†ŠÊ+ŠÊ4‚F–†ŠÊ6ŠÊ:—ã‚[—ä–†ŠÒŠÒ(–†ŠÒŠÒ() '€¤—Ü–†ŠÒ*ŠÒ3€ï–†ŠÒ4ŠÒ6€ˆ–†ŠÒ8ŠÒ9€‰–†ŠÒ:ŠÒ>€Š–†ŠÒ?ŠÒ@“ –†ŠÒAŠÒD—å‚[–†ŠíŠí–†ŠíŠí )¯‚´‚i€ˆ–†ŠíŠí€‰–†ŠíŠí€Š–†ŠíŠí“ –†Ší Ší#—Ü–†Ší$Ší-€ï–†Ší.Ší0‚i—ç–†‹ ‹–†‹ ‹¯@1€¤‚i—è–†‹‹‚F–†‹‹"‚i‚–†‹ ‹–†‹ ‹¯(€¤‚i‚i ”þ–†Š÷Š÷ –†Š÷Š÷ ¯(‚¼‚i—Á–†Š÷ Š÷‚i!—é–†‹‹(–†‹‹() (€¤—Ü–†‹*‹3€ï–†‹4‹6€ˆ–†‹8‹9€‰–†‹:‹>€Š–†‹?‹@“ –†‹A‹D—ê‚["–†‹N‹N–†‹N‹N*‚´<€ˆ–†‹N‹N€‰–†‹N‹N!<#“Ç–†‹ÿ ‹ÿ–†‹ÿ ‹ÿ*€¤<<$“Æ–†Œ Œ–†Œ Œ*€¤<<%—ë–†Œ Œ,–†Œ Œ,*)¥ '€¤<—Ü–†Œ.Œ7€ï–†Œ8Œ:–”–†Œ;ŒM€Š–†ŒNŒO“ –†ŒPŒS—ì<&—í–†Œ Œ.–†Œ Œ.*)¥ (€¤<—Ü–†Œ0Œ9€ï–†Œ:Œ<–”–†Œ=ŒO€Š–†ŒPŒQ“ –†ŒRŒU<'—î–†Œ Œ 5–†Œ Œ 5*) M€¤<—Ü–†Œ 7Œ @€ï–†Œ AŒ C€Š–†Œ DŒ E“ –†Œ FŒ I<(—ï–†Œ Œ"–†Œ Œ"*) L€¤<—Ü–†Œ$Œ-€ï–†Œ.Œ0€Š–†Œ1Œ2“ –†Œ3Œ6<)—𖆌 Œ –†Œ Œ *) 3€¤<—Ü–†Œ"Œ+€ï–†Œ,Œ.€Š–†Œ/Œ0“ –†Œ1Œ4<*—ñ–†Œ Œ.–†Œ Œ.* M€¤<†–†Œ0Œ2€Š–†Œ:Œ;“ –†Œ<Œ?<+—ò–†Œ Œ#–†Œ Œ#*) °€¤<†–†Œ%Œ'€ï–†Œ(Œ*€Š–†Œ+Œ,“ –†Œ-Œ0<,—ô–†Œ Œ#–†Œ Œ#*¥ €¤<–”–†Œ%Œ7€Š–†Œ8Œ9“ –†Œ:Œ=<-—õ–†Œ Œ $–†Œ Œ $*¥ €¤<–”–†Œ &Œ 8€Š–†Œ 9Œ :“ –†Œ ;Œ ><.—ö–†‹P‹P+–†‹P‹P+*) L‚¼<—Ü–†‹P-‹P6€ï–†‹P7‹P9€Š–†‹P;‹P<“ –†‹P=‹P@</—÷–†‹h‹h)–†‹h‹h)*) 3‚¼<—Ü–†‹h+‹h4€ï–†‹h5‹h7€Š–†‹h9‹h:“ –†‹h;‹h><0—ø–†‹ƒ‹ƒ–†‹ƒ‹ƒ*#7M‚¼<€ˆ–†‹ƒ‹ƒ“ –†‹ƒ‹ƒˆª–†‹ƒ‹ƒ#—ù–†‹ƒ$‹ƒ)<1—ú–†‹‡‹‡4–†‹‡‹‡4ƒ€”€•Pƒ€”€•P*ƒƒM‚¼<€”€•P€”€•P—Ü–†‹‡6‹‡?€ñ–†‹‡@‹‡CŽ –†‹‡E‹‡G“ –†‹‡H‹‡K<2—û–†‹™‹™*–†‹™‹™**)¥ '‚¼<…²–†‹™-‹™L€Š–†‹™N‹™O“ –†‹™P‹™S<3—ü–†‹‹,–†‹‹,*)¥ (‚¼<—ý–†‹/‹N€Š–†‹P‹Q“ –†‹R‹U<4—þ–†‹ ‹  –†‹ ‹  *) L‚¼<—ÿ–†‹ #‹ /€Š–†‹ 1‹ 2“ –†‹ 3‹ 6<5˜–†‹£‹£–†‹£‹£*) 3‚¼<˜–†‹£!‹£-€Š–†‹£/‹£0“ –†‹£1‹£4<6˜–†‹¦‹¦(–†‹¦‹¦(ƒ €”€•P*ƒ  M‚¼<€”€•P˜–†‹¦+‹¦7€Š–†‹¦9‹¦:“ –†‹¦;‹¦><7˜–†‹©‹©&–†‹©‹©&*¥ ‚¼<–”–†‹©(‹©:€Š–†‹©;‹©<“ –†‹©=‹©@<8˜–†‹¬‹¬'–†‹¬‹¬'*¥ ‚¼<–”–†‹¬)‹¬;€Š–†‹¬<‹¬=“ –†‹¬>‹¬A<9˜–†‹°‹°*–†‹°‹°**) °‚¼<˜–†‹°-‹°2€Š–†‹°4‹°5“ –†‹°6‹°9<:˜–†‹Ê‹Ê–†‹Ê‹Êƒ €”–†‹ÊR‹ÊSƒ €”–†‹Ë‹Ë *ƒ  ƒ ‚kƒ ‚lƒ  ƒ ‚¼<€”–†‹ÊR‹ÊS€”–†‹Ë‹Ë €ˆ–†‹Ê‹Ê]–†‹Ê‹Ê˜ –†‹Ê‹Ê"<;˜ –†‹å‹å–†‹å‹åƒ €”€•P *‚k)ƒ ‚¼<€”€•P<<˜ –†Œ* Œ*$–†Œ* Œ*$ '€¤€ˆ–†Œ*%Œ*&€‰–†Œ*'Œ*+€Š–†Œ*,Œ*-“ –†Œ*.Œ*1˜€Ó‚[=˜–†Œ1Œ1&–†Œ1Œ1&* '€¤€ý–†Œ1(Œ12€Š–†Œ1?Œ1@€«–†Œ1AŒ1C˜‚[>–†ŒKŒK–†ŒKŒK€€¬‚ ‚?–†ŒKŒK–†ŒKŒK€€€¬‚€ƒ A€Ž,5„€ƒ ‚@–†ŒKŒK–†ŒKŒK€€¬‚€€‚A–†ŒKŒK–†ŒKŒK€€¬‚‚B–†ŒKŒK–†ŒKŒK€€¬‚ €‚C–†ŒKŒK–†ŒKŒK€ €¬‚ €€ ‚D–†ŒKŒK–†ŒKŒK€ €¬‚  ‚E–†ŒKŒK–†ŒKŒK€€ €¬‚$€ƒA€Ž,5„€ƒ ‚F–†ŒV ŒV–†ŒV ŒVƒ-–†ŒVŒV„ƒ\ƒ‚mƒ‚´‚m-–†ŒVŒV˜–†ŒVŒV&˜–†ŒV6ŒVA€Ó‚mGŒ–†ŒW ŒW–†ŒW ŒWƒ-–†ŒVŒV„‚mƒƒ€¤‚m-–†ŒVŒV€Ó‚mH˜–†ŒX ŒX–†ŒX ŒXƒ-–†ŒVŒV„‚mƒƒ€¤‚m-–†ŒVŒV†–†ŒXŒX€Ó‚mI˜–†ŒY ŒY–†ŒY ŒYƒ-–†ŒVŒV„‚mƒƒƒ‚mƒ€¤‚m-–†ŒVŒVŒŽ–†ŒYŒY˜–†ŒYŒY€Ó‚mJ˜–†Œ\ Œ\–†Œ\ Œ\ƒ€”€•Pƒ€”–†Œ\DŒ\Eƒƒ ƒƒ‚mƒƒ€¤€”€•P€”–†Œ\DŒ\E˜–†Œ\Œ\!˜–†Œ\"Œ\%˜–†Œ\&Œ\0˜–†Œ\2Œ\7€Ó‚[K˜–†Œl Œl–†Œl Œlƒ€”€•P‚mƒ€¤€”€•P˜€Ó‚[L˜–†Œn Œn9–†Œn Œn9ƒ€”€•Pƒƒƒ ƒƒ€¤€”€•P˜–†Œn:Œn=˜–†Œn>ŒnF˜–†ŒnGŒnP€Ó‚[M˜–†Œx Œx9–†Œx Œx9ƒ€”–†Œy?Œy@ƒƒƒ ƒƒ€¤€”–†Œy?Œy@˜–†Œx:Œx=˜–†Œx>ŒxF˜–†ŒxGŒxP€Ó‚[N˜–†Œƒ ŒƒG–†Œƒ ŒƒGƒ€”€•Pƒƒƒ ƒƒ€¤€”€•P˜–†ŒƒHŒƒK˜ –†ŒƒLŒƒU˜–†ŒƒVŒƒ_€Ó‚[O˜!–†Œ† Œ†–†Œ† Œ†ƒ-–†Œ†-Œ†/„€ƒ ƒ ƒ ƒ ƒƒ ƒƒƒ€¤-–†Œ†-Œ†/˜"–†Œ†Œ†$˜#–†Œ†&Œ†,˜$–†Œ†6Œ†?˜%–†Œ†@Œ†R˜&–†Œ†SŒ†Z˜'–†Œ†[Œ†d˜–†Œ†eŒ†hŒŽ–†Œ†uŒ†z€Ó‚[P˜(–†ŒÄ ŒÄ&–†ŒÄ ŒÄ&€ ''€¤˜"–†ŒÄ'ŒÄ/€ˆ–†ŒÄ0ŒÄ1€‰–†ŒÄ2ŒÄ6€Š–†ŒÄ7ŒÄ8˜)–†ŒÄ9ŒÄ?˜*€Ó‚[Q˜+–†ŒÇ ŒÇ&–†ŒÇ ŒÇ&€ ((€¤˜"–†ŒÇ'ŒÇ/€ˆ–†ŒÇ0ŒÇ1€‰–†ŒÇ2ŒÇ6€Š–†ŒÇ7ŒÇ8˜,–†ŒÇ9ŒÇ>€Ó‚[R˜-–†ŒÊŒÊ–†ŒÊŒÊ ''€¤€ˆ–†ŒÊŒÊ€‰–†ŒÊŒÊ#€Š–†ŒÊ$ŒÊ%˜)–†ŒÊ'ŒÊ-‚[S˜.–†ŒÕŒÕ–†ŒÕŒÕ ((€¤€ˆ–†ŒÕŒÕ€‰–†ŒÕŒÕ#€Š–†ŒÕ$ŒÕ%˜/–†ŒÕ&ŒÕ,‚[T˜0–†ŒÚŒÚ"–†ŒÚŒÚ"*)¥€ '€¤€ý–†ŒÚ$ŒÚ.—Ü–†ŒÚ<ŒÚE€ï–†ŒÚFŒÚH–”–†ŒÚIŒÚ[˜"–†ŒÚ]ŒÚe€Š–†ŒÚfŒÚg“ –†ŒÚhŒÚk‚[U˜1–†ŒÞŒÞ"–†ŒÞŒÞ"*)¥€ (€¤€ý–†ŒÞ$ŒÞ.—Ü–†ŒÞ<ŒÞE€ï–†ŒÞFŒÞH–”–†ŒÞIŒÞ[˜"–†ŒÞ]ŒÞe€Š–†ŒÞfŒÞg“ –†ŒÞhŒÞk‚[V˜2–†ŒâŒâ –†ŒâŒâ *) M€¤€ý–†Œâ"Œâ,—Ü–†Œâ:ŒâC€ï–†ŒâDŒâF€Š–†ŒâHŒâI“ –†ŒâJŒâM‚[W˜3–†ŒåŒå–†ŒåŒå*)¥€ '€¤€ý–†Œå Œå*—Ü–†Œå,Œå5€ï–†Œå6Œå8–”–†Œå9ŒåK˜"–†ŒåNŒåV€Š–†ŒåWŒåX“ –†ŒåYŒå\‚[X˜4–†ŒèŒè–†ŒèŒè*)¥€ (€¤€ý–†Œè Œè*—Ü–†Œè,Œè5€ï–†Œè6Œè8–”–†Œè9ŒèK˜"–†ŒèNŒèV€Š–†ŒèWŒèX“ –†ŒèYŒè\‚[Y˜5–†ŒìŒì#–†ŒìŒì#*)€ °€¤€ý–†Œì%Œì/†–†Œì=Œì?€ï–†Œì@ŒìB˜"–†ŒìDŒìL€Š–†ŒìMŒìN“ –†ŒìOŒìR˜6‚[Z˜7–†ŒúŒú–†ŒúŒú* )'€¤€ý–†ŒúŒú'€Š–†Œú(Œú)€ï–†Œú*Œú,†–†Œú-Œú/€«–†Œú0Œú2˜8‚[[˜9–†ŒÿŒÿ–†ŒÿŒÿ* )(€¤€ý–†ŒÿŒÿ€Š–†ŒÿŒÿ €ï–†Œÿ!Œÿ#†–†Œÿ$Œÿ&€«–†Œÿ'Œÿ)˜:‚[\˜;–†  –†  * )±€¤€ý–† ! +˜=–† 8 =€Š–† > ?€ï–† @ B˜>‚[]˜?–†%%–†%%* )€¤€ý–†% %*€Š–†%7%8€ï–†%9%;˜@–†%<%A˜A‚[^˜B–†<<–†<<* )3 €¤€ý–†<<#€Š–†<0<1€ï–†<2<4˜C–†<6<;˜D‚[_˜E–†CC–†CC* )3€¤€ý–†CC"€Š–†C/C0€ï–†C1C3˜C–†C5C:˜F‚[`˜G–†LL–†LL* )3€¤€ý–†LL"€Š–†L/L0€ï–†L1L3˜C–†L5L:˜H‚[¼–‘–†€‰€‰!¼/€‰^€Ü¥‰p‰p–†€‰$€‰'¥‰n‰n–†€‰*€‰,‚[–‘¥‚[–‘¥¥‚[–‘¥‚[–‘¥‚[–‘¥‚[–‘¥ ‚[–‘¥ ‚[–‘¥¥ $¥ ¥˜I€Ó½½a a ½–Ä–†ii½€è€…4€­€ç€…3€¬#¡–†kk€œ¢–†kk(£–†k+k3€´¥–†k6k?¦–Ä–Ä–†kk˜J ˆD‚[–ĈD¦#–Å‚[–ĖŦ€œ–Æ‚[–ĖƦ–Ç‚[–ĖǦ€´–È‚[–ĖȦ† ‚[–Ć ¦€Ç‚[–ĀǦ†ã‚[–Ć㦠–É‚[–ĖɦG¦–Ë‚[–Ė˦ –Ì‚[–Ė̦˜K€Ó¾¾a a ¾W–†ˆˆ¾€è€…4€­€ç€…3€¬¡–†ˆ,ˆ9¢–†ˆ<ˆA+WW–†ˆˆ(€Ó¿¿a a ¿˜L–†““¿_ê–†”” ²˜M˜M–†””²˜N˜N–†••²˜O˜O–†––²˜P˜P–†——²˜Q˜Q–†˜˜¡–†™™²¢–†™™5²˜R˜R–†™™˜S€ÓÀÀa a Àä–†››ÀJ˜T˜T–†˜UJ˜V˜V–†ŸŸ˜W²ê–†¡¡.J˜X˜X–†¡¡˜Y–Ó‚[ä–ÓJ €ÓÁÁa a Á’Ü–†¥¥Á€è€…4€­€ç€…3€¬ ¡–†§§ ¢–†§§J£–†§§.¥–†§1§>¦–†§A§Fj’Ü’Ü–†§§ €ÓÂÂa a “•–†‚‚€者4€­€ç€…3€¬¦¡–†‚‚€œ¢–†‚!‚1r£–†‚4‚?¥–†‚B‚Hu“•“•–†‚‚˜Z#¡–†‚"‚"€Í¢–†‚"!‚"2€œ£–†‚"5‚"Er¥–†‚"H‚"Su˜[˜[–†‚"‚"˜\–å‚[“•–åu¦–Ç‚[“•–Çur–è‚[“•–èu€œ–Å‚[“•–Åu€œ–ë‚[“•–ëu–í‚[“•–íu –ï‚[“•–ïu€œ–ñ‚[“•–ñu–ó‚[“•–óu–õ‚[“•–õup–÷‚[“•–÷u–ù‚[“•–ùu‡”‚[“•‡”u ‡–‚[“•‡–u –ý‚[“•–ýu –ÿ‚[“•–ÿu —‚[“•—u —‚[“•—u †ï‚[“•†ïu —‚[“•—u —‚[“•—u — ‚[“•— u — ‚[“•— u —‚[“•—u +—‚[“•—u—‚[“•—u€ß—‚[“•—u —‚[“•—u —‚[“•—u —‚[“•—u ‚ó‚[“•‚ó ¦€œªr'˜]€ÓÃÃa a ×–†‚±‚±Ã€æ˜^€ÓÄÄa a Ä€Ô–†‚¾‚¾ Ā者4€­€ç€…3€¬¡–†‚‚¢–†‚‚Â!1£–†‚Â$‚Â*ª¥–†‚Â.‚ÂL'˜_˜_–†‚‚ ˜`¡–†‚Ç‚Çu¢–†‚Ç‚Ç&ª£–†‚Ç)‚ÇG'˜a˜a–†‚Ç‚Ç ˜b¡–†‚Ê‚Ê$¢–†‚Ê'‚Ê,'˜c˜c–†‚ʂʘd¡–†‚΂Î0¢–†‚Î"‚Î=£–†‚Î@‚ÎP ¥–†‚ÎS‚ÎX'˜e˜e–†‚΂Θf%—‚[€Ô—'—‚[€Ô—'ª€¸‚[€Ô€¸'†%‚[€Ô†%'—"‚[€Ô—"' …Ú‚[€Ô…Ú'–ñ‚[€Ô–ñ'—%‚[€Ô—%'—'‚[€Ô—''—)‚[€Ô—)'†3‚[€Ô†3'g—,‚[€Ô—,'1—.‚[€Ô—.'—/‚[€Ô—/' —‚[€Ô—' –ù‚[€Ô–ù'—1‚[€Ô—1' –ÿ‚[€Ô–ÿ' ‡”‚[€Ô‡”' ‡–‚[€Ô‡–' ‡¸‚[€Ô‡¸' —‚[€Ô—' —‚[€Ô—' —‚[€Ô—' —2‚[€Ô—2' …Ê‚[€Ô…Ê' —3‚[€Ô—3' †ë‚[€Ô†ë' —4‚[€Ô—4' —‚[€Ô—' —‚[€Ô—' — ‚[€Ô— ' —‚[€Ô—' —±‚[€Ô—±'   J—³‚[€Ô—³' €Ž—p‚[€Ô—p' j—¶‚[€Ô—¶' ˜g€ÓÅÅa a Åé–†ƒæƒæÅ€è€…4€­€ç€…3€¬¦¡–†ƒèƒès¢–†ƒè"ƒè,Léé–†ƒèƒè˜h¡–†ƒëƒë ³¢–†ƒë#ƒë=£–†ƒë@ƒëP ¥–†ƒëSƒëXL˜j˜j–†ƒëƒë˜k—‚[é—L–Å‚[é–ÅL€œ—7‚[é—7L–Æ‚[é–ÆLˆG‚[éˆGL—;‚[é—;L †ã‚[é†ãL †ï‚[é†ïL —?‚[é—?L †ò‚[é†òL_—B‚[é—BL|—D‚[é—DL —F‚[é—FL«…Ú‚[é…ÚL˜l€ÓÆÆa a Æì–†„Z„Zƀ者4€­€ç€…3€¬¡–†„[„[c¢–†„["„[3Mìì–†„[„[ –Æ‚[ì–ÆM—J‚[ì—JMcˆ¨‚[숨M7†ï‚[ì†ïM †ò‚[ì†òM`ˆD‚[ìˆDM#ˆF‚[ìˆFM€€Ç‚[ì€ÇM—R‚[ì—RM—‚[ì—M…Ú‚[ì…ÚM˜m€ÓÇÇa a Ç” –†„ƒ„ƒÇ€è€…4€­€ç€…3€¬¡–†„„„„z¢–†„„"„„3…” ” –†„„„„–Æ‚[” –Æ…—V‚[” —V…zˆ¦‚[” ˆ¦…6ˆD‚[” ˆD…#ˆF‚[” ˆF…€€Ç‚[” €Ç……Ú‚[” …Ú…˜n€ÓÈÈa a È—\–†„ „ È€è€…4€­€ç€…3€¬¦¡–†„¡„¡t¢–†„¡!„¡.¬—\—\–†„¡„¡–å‚[—\–嬦–Ç‚[—\–Ǭt‡Â‚[—\‡Â¬—`‚[—\—`¬u—b‚[—\—b¬u—d‚[—\—d¬ —f‚[—\—f¬ †ï‚[—\†ï¬ –ÿ‚[—\–ÿ¬ —‚[—\—¬ —‚[—\—¬ +— ‚[—\— ¬ —i‚[—\—i¬ …Ú‚[—\…Ú¬˜o€ÓÉÉa a ɀߖ†„Ü„Ü É€è€…4€­€ç€…3€¬¡–†„Þ„Þ¢–†„Þ„Þ!1£–†„Þ$„Þ11¥–†„Þ4„ÞA(˜p˜p–†„Þ„Þ ˜q¡–†„à„ଢ–†„à„à&(˜r˜r–†„à„à ˜s¡–†„ã„ã©¢–†„ã"„ã?£–†„ãB„ãR ¥–†„ãU„ãZ(˜t˜t–†„ã„ã˜u—"‚[€ß—"( ‡Â‚[€ß‡Â(—d‚[€ß—d( —f‚[€ß—f( —‚[€ß—(—j‚[€ß—j( —‚[€ß—( ‡¸‚[€ß‡¸( †ï‚[€ß†ï( —2‚[€ß—2( —m‚[€ß—m( —3‚[€ß—3( —n‚[€ß—n((—o‚[€ß—o((†3‚[€ß†3(g—%‚[€ß—%(†ã‚[€ß†ã( —,‚[€ß—,(1—‚[€ß—( +—i‚[€ß—i( —p‚[€ß—p( j— ‚[€ß— ( —`‚[€ß—`('—b‚[€ß—b('˜v€ÓÊÊa a Ê—q–†…ã…ãʀ者4€­€ç€…3€¬¦¡–†…ä…äl¢–†…ä"…ä,­—q—q–†…ä…ä–Ç‚[—q–Ç­l–å‚[—q–å­¦—t‚[—q—t­u—v‚[—q—v­u—x‚[—q—x­€œ€Ç‚[—q€Ç­†ï‚[—q†ï­ …Ú‚[—q…Ú­˜w€ÓËËa a Ë—|–†† † Ë‚[—|$‚[—|$‚[—|$ ‚[—|$ ‚[—|$$  $€ÓÌÌa a  @–††$†)Ì4–†††Ì€è€…4€­€ç€…3€¬¡–††!†!(¢–††!†!%1£–††!(†!.1¥–††!1†!73˜x˜x–††!†! ˜y¡–††#†#­¢–††#†#(3˜z˜z–††#†# ˜{¡–††&†& ¢–††&#†&3´£–††&6†&P ¥–††&S†&X3˜}˜}–††&†&˜~ —‚[4—3—"‚[4—"3 †3‚[4†33g—ƒ‚[4—ƒ3†ï‚[4†ï3 —%‚[4—%3†ã‚[4†ã3 —„‚[4—„3'—…‚[4—…3'—,‚[4—,31—†‚[4—†3 ˜€ÓÍÍa a Í—¹–†‡ë‡ëÍ¡–†‡ë#‡ë2¢–†‡ë5‡ëA£–†‡ëD‡ëJG¥–†‡ëM‡ëV®—¹—¹–†‡ë‡ë˜€€ÓÎÎa a ΀ˆ+ˆ+΀瀅3€¬€è€…4€­f¡–†ˆ0ˆ0,#¢–†ˆ0/ˆ0>)˜˜–†ˆ0ˆ0˜‚)˜ƒ˜ƒ–†ˆ1ˆ1)˜„˜„–†ˆ8ˆ8"˜…)˜†˜†–†ˆ;ˆ;˜‡—È‚[€î—È)—É‚[€î—É)) ˜ˆ€ÓÏÏa a Ϙ‰–†ˆMˆMÏ˜Š€Ór ÐÐa ~ a€í–†ˆOˆO–†ˆOˆO)€‡ €¤€ï–†ˆOˆO˜‹–†ˆOˆO‚rb˜Œ–†ˆWˆW#–†ˆWˆW# #)µ €¤€ˆ–†ˆW$ˆW%€‰–†ˆW&ˆW*€Š–†ˆW+ˆW,˜Ž–†ˆW.ˆW?€ï–†ˆWLˆWN‡;–†ˆWOˆWU€Ó˜‰‚rc˜–†ˆmˆm%–†ˆmˆm%)€´ €¤€ï–†ˆm&ˆm(‰6–†ˆm*ˆm.€Ó˜‰‚rd˜–†ˆuˆu-–†ˆuˆu-)# €¤€ï–†ˆu.ˆu0˜Ž–†ˆu2ˆuC€Ó˜‰‚re˜‘–†ˆ}ˆ}&–†ˆ}ˆ}&)¦ €¤€ï–†ˆ}'ˆ})€Ó˜‰‚rf˜’–†ˆ€ˆ€$–†ˆ€ˆ€$ )¦µ €¤€ˆ–†ˆ€%ˆ€&€‰–†ˆ€'ˆ€+€Š–†ˆ€,ˆ€-€ï–†ˆ€.ˆ€0—‡–†ˆ€1ˆ€6‡;–†ˆ€7ˆ€=€Ó˜‰‚rg˜“–†ˆƒˆƒ–†ˆƒˆƒ)# €¤€ï–†ˆƒˆƒˆª–†ˆƒˆƒ$‚rh˜”–†ˆŒˆŒ–†ˆŒˆŒ )# €¤€Š–†ˆŒˆŒ€ï–†ˆŒˆŒ!ˆª–†ˆŒ"ˆŒ'‚ri˜•–†ˆ’ˆ’–†ˆ’ˆ’)# €¤€ï–†ˆ’ˆ’ ˆª–†ˆ’!ˆ’&‚rj˜––†ˆ–ˆ– –†ˆ–ˆ–  )# €¤€Š–†ˆ–!ˆ–"€ï–†ˆ–#ˆ–%ˆª–†ˆ–&ˆ–+‚rk˜—–†ˆ ˆ–†ˆ ˆ) €¤€ˆ–†ˆˆ€ï–†ˆˆ!€«–†ˆ"ˆ$‚rl˜˜–†ˆ¢ˆ¢"–†ˆ¢ˆ¢" )µ €¤€ˆ–†ˆ¢#ˆ¢$€‰–†ˆ¢%ˆ¢)€Š–†ˆ¢*ˆ¢+€ï–†ˆ¢,ˆ¢.€«–†ˆ¢/ˆ¢1‡;–†ˆ¢2ˆ¢8‚rm˜™–†ˆªˆª–†ˆªˆª) €¤€ˆ–†ˆªˆª€ï–†ˆªˆª!Ë–†ˆª"ˆª'‚rn˜š–†ˆ¯ˆ¯–†ˆ¯ˆ¯    µ€¤˜›–†ˆ¯ˆ¯˜œ–†ˆ¯ˆ¯%˜–†ˆ¯&ˆ¯8˜ž–†ˆ¯9ˆ¯L‚ro˜Ÿ–†ˆ¶ˆ¶–†ˆ¶ˆ¶ )L €¤€ˆ–†ˆ¶ ˆ¶!€‰–†ˆ¶"ˆ¶&€Š–†ˆ¶'ˆ¶(€ï–†ˆ¶)ˆ¶+€Ö–†ˆ¶,ˆ¶-‚rp˜ –†ˆ¿ˆ¿–†ˆ¿ˆ¿ )­ €¤€ˆ–†ˆ¿ ˆ¿!€‰–†ˆ¿"ˆ¿&€Š–†ˆ¿'ˆ¿(€ï–†ˆ¿)ˆ¿+‚rq˜¡–†ˆÃˆÃ–†ˆÃˆÃ )u €¤€ˆ–†ˆÃˆÃ €‰–†ˆÃ!ˆÃ%€Š–†ˆÃ&ˆÃ'€ï–†ˆÃ(ˆÃ*…²–†ˆÃ-ˆÃ5‚rr˜¢–†ˆÈˆÈ–†ˆÈˆÈ )¬ €¤€ˆ–†ˆÈˆÈ €‰–†ˆÈ!ˆÈ%€Š–†ˆÈ&ˆÈ'€ï–†ˆÈ(ˆÈ*‚rs˜£–†ˆÔˆÔ–†ˆÔˆÔ)1 €¤€ï–†ˆÔˆÔ‚F–†ˆÔˆÔ ‚rt˜¤–†ˆ×ˆ×–†ˆ×ˆ× )1€¤€Š–†ˆ×ˆ×€ï–†ˆ×ˆ× ‚F–†ˆ×"ˆ×&‚ru˜¥–†ˆÛˆÛ–†ˆÛˆÛ)z €¤€ï–†ˆÛˆÛ ˜¦–†ˆÛ"ˆÛ'‚rv˜§–†ˆßˆß –†ˆßˆß  )z €¤€Š–†ˆß!ˆß"€ï–†ˆß#ˆß%˜¦–†ˆß'ˆß,‚rw˜¨–†ˆæˆæ–†ˆæˆæ)c €¤€ï–†ˆæˆæ ˜©–†ˆæ"ˆæ'‚rx˜ª–†ˆêˆê –†ˆêˆê  )c €¤€Š–†ˆê!ˆê"€ï–†ˆê#ˆê%˜©–†ˆê'ˆê,‚ry˜«–†ˆñˆñ$–†ˆñˆñ$ )M€¤€Š–†ˆñ%ˆñ&€ï–†ˆñ'ˆñ)˜¬–†ˆñ+ˆñ1‚rz˜­–†ˆôˆô"–†ˆôˆô" )L€¤€ˆ–†ˆô#ˆô$€‰–†ˆô%ˆô)€Š–†ˆô*ˆô+€ï–†ˆô,ˆô.˜®–†ˆô/ˆô4‚r{˜¯–†ˆøˆø–†ˆøˆø )' €¤€‰–†ˆøˆø!€Š–†ˆø"ˆø#€ï–†ˆø$ˆø&…²–†ˆø)ˆø1‚r|˜°–†‰‰–†‰‰ )( €¤€ˆ–†‰‰€‰–†‰‰#€Š–†‰$‰%€ï–†‰&‰(…²–†‰+‰3‚r}˜±–†‰‰–†‰‰)M €¤€ï–†‰‰ ˜©–†‰"‰'‚rЗ̖†‰" ‰"Ђ[—Ì$‚[—Ì$‚[—Ì$ ‚[—Ì$ ‚[—Ì$$  $€ÓÑÑ~ ~ @–†‰"‰"# B–†‰"&‰"+Ñ—Í–†‰# ‰#Ñ‚[—Í$‚[—Í$‚[—Í$ ‚[—Í$ ‚[—Í$$  $€ÓÒÒ~ ~ @–†‰#‰#! B–†‰#$‰#)Ò˜²–†‰'‰'Ò˜³€Ó× ÓÓ!~ “ ~˜´–†‰*‰* –†‰*‰* ƒ€”€•P € #€ž€Ÿƒ=ƒƒƒ€¤€”€•P€ˆ–†‰*!‰*"€Š–†‰*#‰*$ˆª–†‰*E‰*J”°–†‰*U‰*W”±–†‰*X‰*Z”¶–†‰*[‰*]‚t˜µ–†‰=‰=–†‰=‰=ƒ€”€•P '€ƒ<ƒ€Ãƒƒ€¤€”€•P€Š–†‰=‰= €ù–†‰=!‰=&”°–†‰='‰=)”±–†‰=*‰=,”¶–†‰=-‰=/‚t€˜¶–†‰G‰G –†‰G‰G ƒ€”€•P € '€ž€Ÿƒ=ƒƒƒ€¤€”€•P€ˆ–†‰G!‰G"€Š–†‰G#‰G$€ù–†‰GI‰GN”°–†‰GO‰GQ”±–†‰GR‰GT”¶–†‰GU‰GW‚t˜·–†‰V‰V&–†‰V‰V& € '€¤€ˆ–†‰V'‰V(€Š–†‰V)‰V*˜¸–†‰V+‰V5€ù–†‰V6‰V;˜¹‚t‚˜º–†‰]‰]&–†‰]‰]& € #€¤€ˆ–†‰]'‰](€Š–†‰])‰]*˜¸–†‰]+‰]5ˆª–†‰]6‰];˜»‚tƒ˜¼–†‰e‰e!–†‰e‰e!€ ‚u€¤€ˆ–†‰e"‰e#˜¾–†‰e$‰e*€Š–†‰e+‰e,˜¿€Ó˜²‚t„˜À–†‰w‰w–†‰w‰w= ‚u€¤€ˆ–†‰w‰w†Ø–†‰w ‰w'€Š–†‰w(‰w)˜Á‚t…˜Â–†‰¦‰¦'–†‰¦‰¦' €Ã‚u€¤€ˆ–†‰¦(‰¦)€Š–†‰¦*‰¦+˜Ã–†‰¦-‰¦8€Ó˜²‚t†˜Ä–†‰¸‰¸"–†‰¸‰¸"ƒ€”€•P€ƒ €¤€”€•P€ˆ–†‰¸#‰¸$˜¾–†‰¸%‰¸+Ž –†‰¸,‰¸.˜Å‚t‡˜Æ–†‰¿‰¿&–†‰¿‰¿&ƒ€”€•P=ƒ €¤€”€•P€ˆ–†‰¿'‰¿(†Ø–†‰¿)‰¿0Ž –†‰¿1‰¿3˜Ç‚tˆ˜È–†‰Ï‰Ï(–†‰Ï‰Ï(€Ã  €¤˜Ã–†‰Ï*‰Ï5€Š–†‰Ïb‰Ïc˜É‚t‰˜Ê–†‰Ó‰Ó–†‰Ó‰Ó( ‚u€¤—Á–†‰Ó ‰Ó%€Š–†‰Ó&‰Ó'‚tŠ˜Ë–†‰à‰à–†‰à‰àL €¤€ˆ–†‰à‰à ˜®–†‰à"‰à'€Š–†‰à5‰à6‚t‹˜Ì–†‰é‰é–†‰é‰éƒ€”€•P ƒ'‚u€¤€”€•P€ˆ–†‰é ‰é!€Š–†‰é"‰é#˜Í–†‰é$‰é-€ù–†‰é.‰é3‚tŒ˜Î–†‰ý‰ý–†‰ý‰ý ' €¤€ˆ–†‰ý‰ý€Š–†‰ý‰ý“ –†‰ý‰ý €ù–†‰ý!‰ý&‚t˜Ï–†Š%Š%–†Š%Š%ƒ €”€•Pƒ ( €¤€”€•P€Š–†Š%Š%—Á–†Š%Š% ‚tŽ˜Ð–†Š0Š0–†Š0Š0# ‚u€¤€ˆ–†Š0Š0€Ö–†Š0!Š0"€Š–†Š0-Š0.‚t˜Ñ–†Š6Š6 –†Š6Š6 z ‚u€¤€ˆ–†Š6!Š6"€Ö–†Š6$Š6%€Š–†Š64Š65‚t˜Ò–†Š:Š: –†Š:Š: c ‚u€¤€ˆ–†Š:!Š:"€Ö–†Š:$Š:%€Š–†Š:4Š:5‚t‘˜Ó–†Š>Š>–†Š>Š>1 ‚u€¤€ˆ–†Š>Š>€Ö–†Š>Š>€Š–†Š>(Š>)‚t’˜Ô–†ŠAŠA$–†ŠAŠA$M ‚u€¤€ˆ–†ŠA%ŠA&€Ö–†ŠA(ŠA)€Š–†ŠA9ŠA:‚tÓ—æ–†ŠíŠíÓ“ –†Ší Ší#€Ó—æ—Ü–†Ší$Ší-€Ó—æ €Š–†ŠíŠí€Ó—怈–†ŠíŠí€Ó—怉–†ŠíŠí€Ó—æ)€ï–†Ší.Ší0€Ó—怌((˜,–†ŠöŠö €Ó—æ‚[—æ )¯—ç‚[—æ—ç¯@1‚‚[—悯(˜Õ€ÓÔÔ!!“ “ ԗ󖆋B‹BÔ'ê–†‹C‹C&°˜Ö˜Ö–†‹C‹C(ê–†‹D‹D(°˜×˜×–†‹D‹DMê–†‹E‹E$°˜Ø˜Ø–†‹E‹E3ê–†‹F‹F!°˜Ù˜Ù–†‹F‹FLê–†‹G‹G%°˜Ú˜Ú–†‹G‹G˜Û€ÓÕÕ!!“ “ Õ€ü–†‹N‹NÕ ˜Ü–†‹N‹N€Ó€ü˜Ý–†‹N‹N!€Ó€ü‚l)¥ '˜Þ–†‹õ‹õ€Ó€ü‚l)¥ (˜ß–†‹ö‹ö€Ó€ü‚l) M˜à–†‹÷‹÷!€Ó€ü‚l) L˜á–†‹ø‹ø€Ó€ü‚l) 3˜â–†‹ù‹ù€Ó€ü‚l) °˜ã–†‹ú‹ú€Ó€ü‚l¥ ˜ä–†‹ü‹ü €Ó€ü‚l¥ ˜å–†‹ý‹ý!€Ó€ü ‚[€ü*“Ç‚[€ü“Ç*“Æ‚[€ü“Æ*—ë‚[€ü—ë*)¥ '—í‚[€ü—í*)¥ (—î‚[€ü—î*) M—ï‚[€ü—ï*) L—ð‚[€ü—ð*) 3—ñ‚[€ü—ñ* M—ò‚[€ü—ò*) °—ô‚[€ü—ô*¥ —õ‚[€ü—õ*¥ ˜æ€ÓÖÖ!!“ “ ֓𖆌KŒKÖ€˜ç˜ç–†ŒNŒN˜è€˜é˜é–†ŒPŒP˜ê‚[“ð€‚[“ð€€‚[“ð€‚[“ð€‚[“ð€‚[“ð€ ‚[“ð€ ‚[“ð€€ $€ €€Ó××!!“ “ ׃!-–†ŒVŒV„˜–†ŒV ŒV×€Ó€Ó\ƒ!˜–†ŒV6ŒVA€Ó˜ƒ!˜–†ŒVŒV&€Ó˜‚[˜ƒ"-–†ŒVŒV„ƒ"\ƒ"‚mƒ"Œ‚[˜Œƒ#-–†ŒVŒV„‚mƒ#ƒ#˜‚[˜˜ƒ$-–†ŒVŒV„‚mƒ$ƒ$˜‚[˜˜ƒ%-–†ŒVŒV„‚mƒ%ƒ%ƒ%‚mƒ%˜ë€ÓØØ&&“ “ ؘ<–†  ؀瀅3€¬€è€…4€­'¡–† < D¢–† G Q£–† T Y¥–† \ a±˜<˜<–† 8˜ì€ÓÙÙ&&“ “ Ù˜íff&Ù˜îÚÝ&&“ ° “iiii¶€¬‚v ‚v”iiii¶¶€¬‚v¶ ¶‚v•iiii¶€¬‚v‚v–iiii¶€¬‚v‚v—iiii¶€¬‚v ‚v˜iiii¶ €¬‚v  ‚v™˜ðoo)#„v„v+¶ÿ¤@˜ñ‚wš˜òqq(#„w„w*ÿ¤@˜ó‚w›tttt·€¬‚x ‚xœtttt··€¬‚x· ·‚xtttt·€¬‚x‚xžtttt·€¬‚x‚xŸtttt·€¬‚x ‚x tttt· €¬‚x  ‚x¡~~ #„ë „ë ¸Z” — ¹ÿ´@‚z ˜ø~ ~˜ù~(~8˜ú~D~P˜û~\~g˜ü ˜ýXc˜þt€‚•‡€€ €€˜ÿ€€(€€B‚z¢™€… €… #†*†*'¹$ÿ¤@‚z™‚z£™€ˆ €ˆ#†5†5¹ ÿ¤@‚z™‚z¤™€‹ €‹#†7†7¹¸ÿ¤@‚z™‚z¥™€ € #†8†8%¹4ÿ¤@‚z™‚z¦™€“ €“$#†9†9)¹4ÿ¤@‚z™ ‚z§™ €– €–#†:†:¹·ÿ¤@‚z™ ‚z¨™ €™ €™&#†<†<+¹ ÿ¤@‚z™ ‚z©™€œ €œ#†F†F¹ ÿ¤@‚z™‚zª™€  € 0#†N†N5¹º»¸   ÿ¤@‚z™‚z«™€¤ €¤#†Y†Y¹ºY€³T»¸ÿ¤@‚z™‚z¬™€§ €§#†`†`#¹ÿ¤@‚z™‚z­Œm€¬ €¬#†k†k¹ÿ¤@‚z™‚z®™€® €®"#†r†r)¹ ÿ¤@‚z™‚z¯™€±€±<#††>¼  ¹ ÿ¤@‚z™€±?€±S˜ý€±i€±t™€±€ƒ€±€’˜ù€±€¡€±€±™€±€»€±€Ó™ €±€Û€±€û‚zÚ˜ïiiÚêjj¶™!™!j jêkk"¶™"™"k k¶™#™#l l‚w˜ï¶‚w˜ï¶¶‚w˜ï¶‚w˜ï¶‚w˜ï¶‚w˜ï¶  ¶™$˜íÛÛ&&° ° Û˜ôttÛ”Øvv ™%xx ™&zz"‚w˜ô·‚w˜ô··‚w˜ô·‚w˜ô·‚w˜ô·‚w˜ô·  ·˜íÜÜ&&° ° ܘ÷}}Ü‚w˜÷  ¸Z” — ¹™‚w˜÷™¹$™‚w˜÷™¹ ™‚w˜÷™¹¸™‚w˜÷™¹4™‚w˜÷™¹4™ ‚w˜÷™ ¹·™ ‚w˜÷™ ¹ ™‚w˜÷™¹ ™‚w˜÷™¹º»¸   ™‚w˜÷™¹ºY€³T»¸™‚w˜÷™¹Œm‚w˜÷Œm¹™‚w˜÷™¹ ™‚w˜÷™¼  ¹ ˜íÝÝ&&° ° Ý™'&& Ý™(Ô Þä&=°   °™)11#ƒƒƒ&A1%1'„‚~ƒ&ÿ¤@A1%1'™+‚±™,55#ƒxƒxƒ'A5%5'„‚€ƒ'ÿ¤@A5%5'™.‚²™/PP #ƒ=ƒ= ½½ÿ¤@™1‚³™RR #ƒƒ ½½ÿ¤@™2‚´™3TT#ƒ@ƒ@ƒ(ATT„½ƒ( ÿ¤@ATT™4‚µ™5VV#ƒQƒQƒ)AVV„½ƒ)ÿ¤@AVV™6‚¶™7XX#ƒWƒWƒ*AXX„½ƒ* ÿ¤@AXX™8‚·]] #ƒÈ ƒÈ¾ÿ´@‚‚‚‚¸™:__!#ƒËƒË$ƒ+A_@_B„¾‚~ƒ+ÿ¤@‚‚A_@_B‹_$_(™;_2_8™<‚‚¹™=aa!#ƒÏƒÏ$ƒ,Aa@aB„¾‚€ƒ,ÿ¤@‚‚Aa@aB‹a$a(™;a2a8™>‚‚º™?cc$#ƒÓƒÓ'¾½ÿ¤@‚‚™@c'c3™AcUca™B‚‚Þƒ-A((„™*(( Þ™'ßß..» » ߃.A**„™-** ß™C™'àà//» » à™0--à™D™'áá//» » á™E9 9á™F™'ââ/3» ½ »™G; ; #ƒ‡ ƒ‡ƒ/™H;;„ƒ0™I;!;#„ƒ/ƒ0‚~ƒ/‚~ƒ0ÿ¤@™H;;™I;!;#™J‚ƒ¼™K= =#ƒ ƒƒ1™H=!=#„ƒ2™I='=)„ƒ1ƒ2‚~ƒ1‚€ƒ2ÿ¤@™H=!=#™I='=)™L‚ƒâ™MA Aâ™N™'aãã3;½  ½™GC C #ƒ™ ƒ™ƒ3™HCC„ƒ4™IC!C#„ƒ3ƒ4‚€ƒ3‚€ƒ4ÿ¤@™HCC™IC!C#™O‚„¾‚CF F#ƒ» ƒ»ƒ5™HFF„ƒ5 ‚€ƒ5‚€ƒ5ÿ¤@™HFF™P‚„¿™QI I#ƒ¥ ƒ¥ƒ6™RI I"„ƒ7™HI&I(„ƒ6ƒ7uƒ6‚~ƒ6‚€ƒ7‚€ƒ6ÿ¤@™RI I"™HI&I(™S‚„À™TK K#ƒ° ƒ°ƒ8™HK#K%„ƒ9™IK+K-„ƒ8ƒ9‚€ƒ8‚~ƒ9ÿ¤@™HK#K%™IK+K-™U‚„Á™VM M#ƒÄ ƒÄƒ:™HM%M'„‚€ƒ:‚~ƒ:ÿ¤@™HM%M'™W‚„ã™9\\ã‚™9¾™:‚™9™:ƒ;A_@_B„¾‚~ƒ;™=‚™9™=ƒß ô ß™µ™³!!™¶‚G‚GÏÿ¤@‚˜à™¸™³$$™¶‚¿‚¿ÏÐÿ¤@‚˜á™º™³%%™¶‚Õ‚ÕÏÐÿ¤@‚˜â™»™³&&!™¶‚ЂÐ!ÏÐÿ¤@‚˜ã™¼™³))™¶TTÏÑÿ¤@‚˜ä™¾™³**™¶WWÏÑÿ¤@‚˜å™¿™³++™¶€ƒ€ƒÏÑÿ¤@‚˜æ™À™³,,™¶€«€«Ïÿ¤@‚˜ç™Á™³..™¶ƒÑƒÑÒÿ¤@‚˜è™Ã™³22™¶ƒOƒO»eÿ¤@‚˜é™Ä™³33"™¶ƒFƒF"eÓeÿ¤@‚˜ê™Æ™³44™¶ƒUƒU ¸g eV€³€³feÿ¤@ ‚˜ë™Ç™³66™¶ƒ§ƒ§¸»gVÇÿ¤@‚˜ì™È™³88™¶ƒ­ƒ­ Æ  ¸Y€³ ÇÉÿ¤@ ‚˜í™É™³<<™¶ƒÈƒÈ»ÿ¤@‚˜î™Ê™³??™¶ƒ×ƒ×ÿ¤@‚˜ï™Ë™³@ @!™¶7 7! ÿô@‚˜ð™Ì™³AA™¶ƒÙƒÙƒ=-™³A(A*„ ƒ=ƒ=ÿ¤@-™³A(A*‚˜ñ™Í™³BB™¶ƒƒ¸ÿ¤@‚˜ò™Î™³CC™¶‚z‚zÏ ûÿ¤@‚˜ó™Ï™³DD™¶‚…‚…ûÿ¤@‚˜î™Ð™Ñ*1î™ÒVïï>>ô õ ô™Ó™Ñ™Ô== ÿ¤@‚ï™Õ™Ö*6ï™×Öðò>Cõ (õ™Ö™ÖÔ€¬‚ž ‚žö™Ö™ÖÔÔ€¬‚žÔƒ>A€Ž,5„€ƒ>‚ž÷™Ö™ÖÔ€¬‚ž€€‚žø™Ö™ÖÔ€¬‚ž‚žù™Ö™ÖÔ€¬‚ž €‚žú™Ö™ÖÔ €¬‚ž €€ ‚žû™Ö™ÖÔ €¬‚ž  ‚žü™Ö™ÖÔÔ €¬‚ž$Ôƒ?A€Ž,5„€ƒ? ‚žý™Ø™Ö## ™Ö## ƒ@€”€•PÕƒ@€¤€”€•P™Ù™Ö# #™Ú™Ö##€«™Ö##‚ þ™Û™Ö((™Ö((ƒA€”€•PÕƒA€¤€”€•P™Ù™Ö((“a™Ö((™Ü™Ö((‚ ÿ™Ý™Ö//™Ö//ÕÔ€¤™Ù™Ö//“a™Ö//"‚ ™Ö/(/,‚ Ž™Þ™Öii™ÖiiÕÔ p€¤™Ù™Öii“a™Öii™ß™Öii"‰U™Öi#i$‚ Ž™à™Öjj ™Öjj ÕÔ p€¤™Ù™Öjj“a™Öjj™á™Öjj"‚ Ž™â™Önn™ÖnnÕÔ p€¤™Ù™Önn“a™Önn™ß™Önn$‰U™Ön%n&‚ Ž™ã™Öoo™ÖooÕÔ p€¤™Ù™Öoo“a™Öoo™ß™Öoo#€«™Öo%o'Ø™Öo(o1‚ Ž™ä™Öss ™Öss ÕÔ€íO €¤™Ù™Ös s“a™Öss/™Öss™Ü™Öss1™Öss"Ž ™Ös#s%‚ Ž™å™Ö€†€†™Ö€†€†ÕÔ€¤™Ù™Ö€†€†“a™Ö€†€†€®™Ö€†€†"€§™Ö€†#€†$™æ™Ö€†%€†(‚ Ž™ç™Ö€”€” ™Ö€”€” ÕÔO€¤™Ù™Ö€”€”“a™Ö€”€” ™è™Ö€”!€”&‚ Ž™é™Ö€•€•™Ö€•€•ÕÔ?€¤™Ù™Ö€•€•“a™Ö€•€• ™è™Ö€•!€•&‚ Ž™ê™Ö€–€–™Ö€–€–ÕÔ €Ãl€¤™Ù™Ö€–€–“a™Ö€–€–€Š™Ö€–€–€«™Ö€–€–™ë™Ö€–€–$‚ Ž ™ì™Ö€˜€˜ ™Ö€˜€˜ ÕÔ l€¤™Ù™Ö€˜€˜“a™Ö€˜€˜Ž ™Ö€˜€˜Ž ™Ö€˜€˜‚ Ž ™í™Ö€š€š ™Ö€š€š ÕÔn€¤™Ù™Ö€š €š“a™Ö€š€š€Ö™Ö€š€š‚ Ž ™î™Ö€ €  ™Ö€ €  ÕÔ€Šn €¤™Ù™Ö€ € “a™Ö€ € €§™Ö€ € ™ï™Ö€ € –'™Ö€  € $Ž ™Ö€ %€ '‚ Ž ™ð™Ö€¥€¥™Ö€¥€¥ÕÔ€›€¤™Ù™Ö€¥€¥“a™Ö€¥€¥¶™Ö€¥€¥‚ Ž ™ñ™Ö€°€° ™Ö€°€° ÕÔ=€¤™Ù™Ö€°€°“a™Ö€°€°‚ Ž™ò™Ö€´€´™Ö€´€´ÕÔ=€¤™Ù™Ö€´€´“a™Ö€´€´†Ø™Ö€´€´‚ Ž™ó™Ö€¶€¶™Ö€¶€¶ÕÔ€¤™Ù™Ö€¶€¶“a™Ö€¶€¶‚ Ž™ô™Ö€º€º™Ö€º€ºÕÔ€¤™Ù™Ö€º€º“a™Ö€º€º–Ιրº€º$‚ Ž™õ™Ö€½€½ ™Ö€½€½ ÕÔ €¤™Ù™Ö€½ €½“a™Ö€½€½†8™Ö€½€½‚ Ž™ö™Ö€Â€Â ™Ö€Â€Â ÕÔo€¤™Ù™Ö€Â €Â“a™Ö€Â€Â™÷™Ö€Â€Â‚ Ž™ø™Ö€Ç€Ç ™Ö€Ç€Ç ÕÔh€¤™Ù™Ö€Ç €Ç“a™Ö€Ç€Ç“¿™Ö€Ç€Ç‚ Ž™ù™Ö€Í€Í™Ö€Í€ÍƒB€”€•PÕÔƒB7€¤€”€•P™Ù™Ö€Í€Í“a™Ö€Í€Í™ú™Ö€Í€Í%™û™Ö€Í'€Í-‚ Ž™ü™Ö€Ñ€Ñ ™Ö€Ñ€Ñ ÕÔ,€¤™Ù™Ö€Ñ €Ñ“a™Ö€Ñ€Ñ™Ö€Ñ€Ñ‚ Ž™ý™Ö€Ú€Ú ™Ö€Ú€Ú ÕÔ,€¤™Ù™Ö€Ú€Ú“a™Ö€Ú€Ú‡1™Ö€Ú€Ú‚ Ž™þ™Ö€à€à ™Ö€à€à ÕÔ€Ú€¤™Ù™Ö€à!€à%“a™Ö€à&€à)€Ö™Ö€à*€à+‚ Ž™ÿ™Ö€ä€ä™Ö€ä€äÕÔ€‹€¤™Ù™Ö€ä€ä!“a™Ö€ä"€ä%€Ö™Ö€ä&€ä'‚ Žš™Ö€æ€æ™Ö€æ€æÕÔ€‹€¤™Ù™Ö€æ€æ “a™Ö€æ!€æ$€Ö™Ö€æ%€æ&‚ Žš™Ö€ð€ð™Ö€ð€ðÕÔ€ð€¤™Ù™Ö€ð€ð"“a™Ö€ð#€ð&“¿™Ö€ð'€ð)‚ Žš™Ö€ñ€ñ™Ö€ñ€ñÕÔ€ð€¤™Ù™Ö€ñ€ñ!“a™Ö€ñ"€ñ%‚ Žš™Ö€ó€ó™Ö€ó€ó+€‹=€¤€ˆ™Ö€ó€ó€‰™Ö€ó €ó$™Ö€ó%€ó)š™Ö€ó+€ó/š™Ö€ó1€ó=‚ ð“a™ÖðÔšš™Ö ‚ “aÔ‚ “aÔÔ‚ “aÔ‚ “aÔ‚ “aÔ‚ “aÔ ‚ “aÔ ‚ “aÔÔ $Ô Ô™ÕññCCñ™Ù™Ö ñ€ˆ™Ö€‰™Ö +™Ö  š™Ö!!™ÕòòCCò(šòš ¶MóCCÑ€´Žš9 9 š9 9 Ö€¬‚¡ ‚¡Žš9 9 š9 9 ÖÖ€¬‚¡Ö Ö‚¡Žš9 9 š9 9 Ö€¬‚¡‚¡Ž š9 9 š9 9 Ö€¬‚¡‚¡Ž!š9 9 š9 9 Ö€¬‚¡ ‚¡Ž"š9 9 š9 9 Ö €¬‚¡  ‚¡Ž#š<<$š<<$$€¬‚¢‚¢Ž$š<<$š<<$$€¬‚¢ ‚¢Ž%š<<$š<<$$ €¬‚¢  ‚¢Ž&š??+š??+$€¬‚£‚£Ž'š??+š??+$€¬‚£ ‚£Ž(š??+š??+$ €¬‚£  ‚£Ž)šB BšB B€Ð€¬ Ž*šB BšB B€Ð€Ð€¬€Ð €ÐŽ+šB BšB B€Ð€¬Ž,šB BšB B€Ð€¬Ž-šB BšB B€Ð€¬ Ž.šB BšB B€Ð €¬  Ž/š šSS"šJJ"  €Ð   ×  ÿ¤@ ššT T7ššU U!ššY Y#ššZ Z'šš[ [ ™šš^ ^šš_ _%šš` `(š‚¥Ž0ššdd!š¶¶! ÿ¤@š‚¥Ž1ššff"šÌÌ"‚kÌÿ¤@‚¥Ž2šs sšs sØ€¬‚¦‚¦Ž3šs sšs sØ€¬‚¦ ‚¦Ž4šs sšs sØ €¬‚¦  ‚¦Ž5ššvvšáá#ØÌ€œÿ¤@‚¦‚¦Ž6ššwwšçç"ØÌÿ¤@‚¦‚¦Ž7‚ïšxxšßߨÿ¤@‚¦‚¦Ž8‚óšyyšàà€ŒÌ€œ€ŒÌØÿ¤@‚¦‚¦Ž9šš{{šïï"ØØÿ¤@‚¦š‚¦Ž:š š€¸€¸=š‚Y‚Y=€Ã ÿ´@š!š€¸@€¸HŽ;š"š€¹€¹/š‚W‚W/€Ãÿ´@š!š€¹2€¹:Ž<š#š€º€º$š‚X‚X$€Ãÿ´@š!š€º'€º/Ž=š$š€»€»,š‚Z‚Z,€Ãÿ´@š!š€».€»6š%š€»G€»QŽ>š&š€†€†!š‚‚$N ÿ¤@ccŽ?†mš€‡€‡š‚‚N ÿ¤@ccŽ@š'š€ˆ€ˆš‚‚N ÿ¤@ccŽAš(š€‰€‰š‚‚Nÿ¤@ccŽBš)š€Š€Šš‚‚Nÿ¤@ccŽCš*š€‹€‹š‚‚N ÿ¤@ccŽDš+š€Œ€Œš‚‚NNÿ¤@ccŽEš,š€€š‚‚NÁÿ¤@ccŽFš-š€Ž€Žš‚)‚)NNÿ¤@ccŽGš.š€€š‚%‚%NNÿ¤@ccŽHš/š€€š‚#‚# NNÿ¤@ccŽIš0š€‘€‘ š‚"‚"#NNÿ¤@ccŽJŒKš€’€’š‚‚NRÿ¤@ccŽKš1š€“€“š‚ ‚ N³ÿ¤@ccŽLš2š€”€”š‚!‚!N³ÿ¤@ccŽMš3š€•€•š‚‚N©ÿ¤@ccŽNš4š€–€–š‚‚N©ÿ¤@ccŽOš5š€—€—š‚‚N´ÿ¤@ccŽPš6š€˜€˜š‚‚N´ÿ¤@ccŽQš7š€™€™š‚‚!NÙÿ¤@ccŽRš9š€š€š"š‚*‚*%N§ÿ¤@ccŽSš:š€›€›'š‚'‚'*NNÿ¤@ccŽTš;š€œ€œš‚0‚0N ÿ¤@ccŽUš<š€€!š‚1‚1$N ÿ¤@ccŽV†ãš€ž€žš‚2‚2N ÿ¤@ccŽWš=š€Ÿ€Ÿš‚3‚3N ÿ¤@ccŽXš>š€ € š‚4‚4N ÿ¤@ccŽYš?š€¡€¡š‚7‚7N ÿ¤@ccŽZš@š€¢€¢š‚:‚:N ÿ¤@ccŽ[šAš€£€£š‚8‚8N ÿ¤@ccŽ\šBš€¤€¤š‚9‚9N ÿ¤@ccŽ]šCš€¥€¥š‚5‚5N ÿ¤@ccŽ^šDš€¦€¦š‚6‚6 N ÿ¤@ccŽ_šEš€§€§'š‚<‚<*Nÿ¤@ccŽ`šFš€¨€¨š‚,‚, NNÿ¤@ccŽašGš€©€©"š‚-‚-%NNÿ¤@ccŽbšHš€ª€ªš‚;‚;Nÿ¤@ccŽcšIš€«€«š‚=‚=NÌÿ¤@ccŽdšJš€¬€¬$š‚?‚?'NNÿ¤@ccŽešKš€­€­š‚J‚JNÿ¤@ccŽfšLš€®€®%š‚I‚I%ÌNÿ¤@ccŽgšš€¯€¯š‚N‚N!N€œÿ¤@ccŽhšš€°€°š‚O‚O Nÿ¤@ccŽišMš€±€±"š‚Q‚Q"NØNÿ¤@ccŽjšNš€²€²š‚P‚PNØÿ¤@ccŽkšOš€´€´#š‚R‚R#NN ÿ¤@ccŽlšPš€¿€¿š‚´‚´ÁÚÿ¤@‚‡‚‡Žmš)š€À€Àš‚¶‚¶Áÿ¤@‚‡‚‡ŽnšRš€Á€Á(š‚·‚·+Á€•ÿ¤@‚‡‚‡ŽošSš€Â€Âš‚¹‚¹ÁÛÿ¤@‚‡‚‡Žp€Çš€Æ€Æš‚‰‚‰¨ÿ¤@‚_‚_ŽqšUš€Ç€Çš‚‹‚‹¨Nÿ¤@‚_‚_ŽršVš€Í€Íš‚Á‚Á!0 ÿ¤@BBŽs†ïš€Î€Îš‚‚Â0 ÿ¤@BBŽtšWš€Ï€Ïš‚ÂÃ0 ÿ¤@BBŽušXš€Ð€Ð"š‚Å‚Å%0 ÿ¤@BBŽvšYš€Ñ€Ñ!š‚Ä‚Ä$0 ÿ¤@BBŽw–ÿš€Ò€Òš‚Æ‚Æ0 ÿ¤@BBŽx—š€Ó€Óš‚Ç‚Ç0 ÿ¤@BBŽyšCš€Ô€Ôš‚È‚È0 ÿ¤@BBŽz—š€Õ€Õš‚É‚É0 ÿ¤@BBŽ{šZš€Ö€Öš‚Ê‚Ê0 ÿ¤@BBŽ|‡”š€×€×š‚Ë‚Ë0 ÿ¤@BBŽ}š[š€Ø€Øš‚Ì‚Ì0§ÿ¤@BBŽ~šGš€Ù€Ù"š‚Í‚Í%0Nÿ¤@BBŽš\š€Ú€Ú(š‚Ï‚Ï(0ÿ¤@BBŽ€šOš€Û€Û#š‚Ñ‚Ñ#00 ÿ¤@BBއiš€à€àš‚í‚íRNÿ¤@hhŽ‚š]š€á€áš‚ñ‚ñRÿ¤@hhŽƒ€Çš€å€åš‚™‚™§ÿ¤@‚^‚^Ž„š^š€æ€æš‚£‚£§Nÿ¤@‚^‚^Ž…š_š€ç€çš‚ž‚ž§ ÿ¤@‚^‚^ކš`š€è€èš‚š‚š§ ÿ¤@‚^‚^އ–Óš€é€éš‚ ‚ § ÿ¤@‚^‚^Žˆšaš€ê€êš‚¡‚¡!§ÿ¤@‚^‚^މ—;š€ð€ðš‚قٳ ÿ¤@‚p‚pŽŠ†ïš€ñ€ñš‚Ú‚Ú³ ÿ¤@‚p‚pŽ‹—?š€ò€òš‚Û‚Û³ ÿ¤@‚p‚pŽŒšbš€ó€óš‚܂ܳ ÿ¤@‚p‚pŽšcš€ô€ô"š‚Ý‚Ý%³ÿ¤@‚p‚pŽŽ—Rš€õ€õš‚߂߳Nÿ¤@‚p‚pŽšCš€ö€öš‚á‚á³ ÿ¤@‚p‚pŽšWš€÷€÷š‚â‚â³ ÿ¤@‚p‚pŽ‘šXš€ø€ø"š‚å‚å%³ ÿ¤@‚p‚pŽ’šYš€ù€ù!š‚ä‚ä$³ ÿ¤@‚p‚pŽ“šdš€ú€úš‚ã‚ã³ ÿ¤@‚p‚pŽ”šeš€ÿ€ÿš‚ø‚ø©Rÿ¤@‚`‚`Ž•šfšš‚ù‚ù©Rÿ¤@‚`‚`Ž–šgš!š‚ü‚ü$©§ÿ¤@‚`‚`Ž—šhšš‚ú‚ú© ÿ¤@‚`‚`Ž˜šišš‚û‚û© ÿ¤@‚`‚`Ž™šjšš‚þ‚þ©Nÿ¤@‚`‚`Žšš\š(šƒƒ(©ÿ¤@‚`‚`Ž›šOš#šƒƒ#©© ÿ¤@‚`‚`Žœ—„š  šƒ ƒ ´Rÿ¤@‚q‚qŽ—…š  šƒ ƒ !´Rÿ¤@‚q‚qŽžškš  šƒƒ"´Nÿ¤@‚q‚qŽŸš\š(šƒƒ(´ÿ¤@‚q‚qŽ šOš#šƒƒ#´´ ÿ¤@‚q‚qŽ¡€½ššƒ%ƒ%QNÿ¤@ggŽ¢šlš)šƒ(ƒ(,Qÿ¤@gšmgŽ£€½ššƒ0ƒ0PNÿ¤@ffޤ€Çššƒ1ƒ1Pÿ¤@ffŽ¥†îššƒ2ƒ2P ÿ¤@ffަšnš  šƒ6ƒ6NPÿ¤@ffާš!!šƒ8ƒ8P ÿ´@ffލš""šƒ9ƒ9Pÿ´@ffŽ©šoš% %!šƒo ƒo!QNQÿ¤@‚¥Žªšpš) )"šƒ< ƒ<"QÙQÿ¤@‚¥Ž«šqš+ +"šƒB ƒB"QQQÿ¤@‚¥Ž¬šrš, ,$šƒH ƒH$QNPQÿ¤@‚¥Ž­šsš- -,šƒš ƒš,QPQQQÿ¤@‚¥Ž®štš/ /#šƒt ƒt#QQQÿ¤@‚¥Ž¯šuš0 0 šƒƒ ƒƒ QQPQPQÿ¤@‚¥Ž°švš1 1#šƒ~ ƒ~#QQQÿ¤@‚¥Ž±šwš2 2šƒy ƒyQPQÿ¤@‚¥Ž²šxš3 3šƒN ƒNQQRQÿ¤@‚¥Ž³šyš4 4!šƒ[ ƒ[!QNÿ¤@‚¥Ž´šzš5 5 šƒV ƒV QNÿ¤@‚¥Žµš{š6 6!šƒe ƒe!QQÿ¤@‚¥Ž¶š|š7 7!šƒj ƒj!QQÿ¤@‚¥Ž·š}š8 8šƒ` ƒ`QQNÿ¤@‚¥Ž¸š~š9 9!šƒ ƒ!QQNÿ¤@‚¥Ž¹šš: :šƒ” ƒ”QPQQÿ¤@‚¥Žºš€š; ;šƒ£ ƒ£QPQÿ¤@‚¥Ž»šš< <#šƒ« ƒ«#QQQQÿ¤@‚¥Ž¼š‚š= =šƒ° ƒ°QPÿ¤@‚¥Ž½šƒš??šƒµƒµ0PQÿ¤@‚¥Ž¾š„šBB4šƒàƒà4 Nÿ¤@š…šBWBcš†šBqB}š‡‚¥Ž¿šˆšGGš„™„™N Nÿ¤@š‰šGG2šŠšGKG_š‹šGvG€€šŒ‚¥ŽÀššJJš„~„~€Ð Nÿ¤@šŽšJeJmš‚¥ŽÁššMMš„ÄÀРNÿ¤@ šMZMi'šMtMyš‘‚¥ŽÂš’šPP!š……! ÿ¤@š“‚¥ŽÃš”šTT#š……#N ÿ¤@'šT>TCš•‚¥ŽÄš–šYY"š…0…0"N €œÿ¤@'šY=YBš—‚¥ŽÅš˜š\\*š…&…&*N €œÿ¤@'š\E\J𙂥ޯš` `š` `À¬‚‰ ‚‰ŽÇš` `š` `ÃÀ¬‚‰Ã ‰ŽÈš` `š` `À¬‚‰‚‰ŽÉš` `š` `À¬‚‰‚‰ŽÊš` `š` `À¬‚‰ ‚‰ŽËš` `š` `à €¬‚‰  ‚‰ŽÌšc c)šc c)€¬‚ˆ‚ˆŽÍšc c)šc c)€¬‚ˆ ‚ˆŽÎšc c)šc c) €¬‚ˆ  ‚ˆŽÏšššiiš…;…;Âÿ¤@‚ˆš›‚ˆŽÐšœškk&š…@…@&N  ÿ¤@‚¥óš š9 9 óêš9>9DÖš š š9#9:‚¥š Ö‚¥š ÖÖ‚¥š Ö‚¥š Ö‚¥š Ö‚¥š Ö  Ö(ôôCCÑÑôš š<<$ô‚¥š $‚¥š $‚¥š $  $š(õõCCÑÑ @š<(<-$Bš<0<3õš š??+õ‚¥š $‚¥š $‚¥š $  $šž(ööCCÑÑ$@š?/?2ö‡4šB BöšŸšEEš š¡šGGš¢ š£šIIš¤š¥šLLš¦š§šOOš¨‚¥‡4€Ð‚¥‡4€Ð€Ð‚¥‡4€Ð‚¥‡4€Ð‚¥‡4€Ð‚¥‡4€Ð  €Ðš©(÷÷CCÑÑ÷ššs s÷Øšªšªšt t€ŒÌ€œ¡šuu6€ŒÌ¢šu9uZØš«š«šu u‚¥šØ‚¥šØ‚¥šØ š‚¥ššØÌ€œš‚¥ššØÌ‚ï‚¥š‚ïØ‚ó‚¥š‚ó€ŒÌ€œ€ŒÌØš‚¥ššØØ š¬(øøCCÑÑøúš€„€„ø‚ª€š­Ü€Ž€‚IbO€Œ €ø.š&‚¥úš&N †m‚¥ú†mN š'‚¥úš'N š(‚¥úš(Nš)‚¥úš)Nš*‚¥úš*N š+‚¥úš+NNš,‚¥úš,NÁš-‚¥úš-NNš.‚¥úš.NNš/‚¥úš/NNš0‚¥úš0NNŒK‚¥úŒKNRš1‚¥úš1N³š2‚¥úš2N³š3‚¥úš3N©š4‚¥úš4N©š5‚¥úš5N´š6‚¥úš6N´š7‚¥úš7NÙš9‚¥úš9N§š:‚¥úš:NNš;‚¥úš;N š<‚¥úš<N †ã‚¥ú†ãN š=‚¥úš=N š>‚¥úš>N š?‚¥úš?N š@‚¥úš@N šA‚¥úšAN šB‚¥úšBN šC‚¥úšCN šD‚¥úšDN šE‚¥úšENšF‚¥úšFNNšG‚¥úšGNNšH‚¥úšHNšI‚¥úšINÌšJ‚¥úšJNNšK‚¥úšKNšL‚¥úšLÌNš‚¥úšN€œš‚¥úšNšM‚¥úšMNØNšN‚¥úšNNØšO‚¥úšONN €Ã¨(ùùCCÑÑù†š€·€·(ù‚ª€š­Ü‚¥†š €Ã ‚¥†š"€Ã‚¥†š#€Ã‚¥†š$€Ãš ‚¥†š €Ã š"‚¥†š"€Ãš#‚¥†š#€Ãš$‚¥†š$€Ã(úúCCÑÑú™`š€¾€¾ú‚ª€š­Ü€Ž€‚IbO€Œ €øšP‚¥™`šPÁÚš)‚¥™`š)ÁšR‚¥™`šRÁ€•šS‚¥™`šSÁÛ(ûûCCÑÑû–Þš€Å€Åû‚ª€š­Ü§€Ž+=€Ç‚¥–ހǨšU‚¥–ÞšU¨N€Ã(üüCCÑÑü)š€Ë€Ëü‚ª€š­Ü§€Ž+=šV‚¥)šV0 †ï‚¥)†ï0 šW‚¥)šW0 šX‚¥)šX0 šY‚¥)šY0 –ÿ‚¥)–ÿ0 —‚¥)—0 šC‚¥)šC0 —‚¥)—0 šZ‚¥)šZ0 ‡”‚¥)‡”0 š[‚¥)š[0§šG‚¥)šG0Nš\‚¥)š\0šO‚¥)šO00 ¨(ýýCCÑÑý‚š€Þ€Þý‚ª€š­Ü€Ž€‚IbO€Œ €ø‡i‚¥‚‡iRNš]‚¥‚š]R0(þþCCÑÑþ–Ûš€ä€äþ‚ª€š­Ü€Ž€‚IbO€Œ €ø€Ç‚¥–ۀǧš^‚¥–Ûš^§Nš_‚¥–Ûš_§ š`‚¥–Ûš`§ –Ó‚¥–Û–Ó§ ša‚¥–Ûša§€Ã(ÿÿCCÑÑÿ˜iš€î€îÿ‚ª€š­ÜO€Œ €ø€Ž€‚Ib —;‚¥˜i—;³ †ï‚¥˜i†ï³ —?‚¥˜i—?³ šb‚¥˜išb³ šc‚¥˜išc³—R‚¥˜i—R³NšC‚¥˜išC³ šW‚¥˜išW³ šX‚¥˜išX³ šY‚¥˜išY³ šd‚¥˜išd³ ¨(CCÑÑ‚– ý€ý‚‚ª€š­ÜO€Œ €ø€Ž€‚Ibše‚¥–áše©Ršf‚¥–ášf©Ršg‚¥–ášg©§šh‚¥–ášh© ši‚¥–áši© šj‚¥–ášj©Nš\‚¥–áš\©šO‚¥–ášO©© ¨(CCÑÑ‚˜|š  ‚‚ª€š­ÜO€Œ €ø€Ž€‚Ib—„‚¥˜|—„´R—…‚¥˜|—…´Ršk‚¥˜|šk´Nš\‚¥˜|š\´šO‚¥˜|šO´´ ¨(CCÑÑ‚š8š‚‚ª€š­ÜO€Œ €ø€Ž€‚Ib0(CCÑÑ‚‚š ‚/€‰^€ÜO€Œ €ø€Ž€‚Ib‚ª€š­Ü€½‚¥‚€½QNšl‚¥‚šlQ(CCÑÑ‚‚š ‚/€‰^€ÜO€Œ €ø€Ž€‚Ib‚ª€š­Ü€½‚¥‚€½PN€Ç‚¥‚€ÇP†î‚¥‚†îP šn‚¥‚šnNP‚¥‚P ‚¥‚P(CCÑÑ‚™dš` `‚€œ¡š`I`R€œ¢š`g`pãš`s`€Ùd™dš`!`6‚¥™dÂ¥™dÃÂ¥™dÂ¥™dÂ¥™dÂ¥™dà  Ú®(CCÑÑ‚™ašc c)‚€Œ€œ€œš¯šf fš°‚¥™a‚¥™a‚¥™aÂ šš‚¥™aššÂ š±(CCÑÑ‚)‚€Ž€‚Ibi)*i)* ,i),ƒC-!!„ ƒCƒCƒC/i)/ƒD-"%"'„ ƒDƒDƒD0i)0 $EEÑÑ‚$š²*5‚š³þT "EpÑ€©ŽÑš² š² $€¬‚«‚«ŽÒš² š² $€¬‚« ‚«ŽÓš² š² $ €¬‚«  ‚«ŽÔš² š² $ €¬‚«  ‚«ŽÕš² š² $$ €¬‚«‚«ŽÖš²& &š²& &$€¬‚¬‚¬Ž×š²& &š²& &$€¬‚¬ ‚¬ŽØš²& &š²& &$ €¬‚¬  ‚¬ŽÙš¶š²''š²''Ý€´‚¬š¶S‚¬ŽÚš²& &š²& &$ €¬‚¬  ‚¬ŽÛš²& &š²& &$$ €¬‚¬‚¬ŽÜš·š²,,š²,,$$€¤kš²,,!‚­ŽÝš²4 4š²4 4$€¬‚®‚®ŽÞš²4 4š²4 4$€¬‚® ‚®Žßš²4 4š²4 4$ €¬‚®  ‚®Žàš²4 4š²4 4$ €¬‚®  ‚®Žáš²4 4š²4 4$$ €¬‚®‚®Žâš²8 8š²8 8$€¬‚¯‚¯Žãš²8 8š²8 8$€¬‚¯ ‚¯Žäš²8 8š²8 8$ €¬‚¯  ‚¯Žåš¶š²99š²99Þ€´‚¯š¶S‚¯Žæš²8 8š²8 8$ €¬‚¯  ‚¯Žçš²8 8š²8 8$$ €¬‚¯‚¯Žèš²= =š²= =$€¬‚°‚°Žéš²= =š²= =$€¬‚° ‚°Žêš²= =š²= =$ €¬‚°  ‚°Žëš¶š²>>š²>>߀´‚°š¶S‚°Žìš²= =š²= =$ €¬‚°  ‚°Žíš²= =š²= =$$ €¬‚°‚°Žîš²B Bš²B B$€¬‚±‚±Žïš²B Bš²B B$€¬‚± ‚±Žðš²B Bš²B B$ €¬‚±  ‚±Žñš²B Bš²B B$ €¬‚±  ‚±Žòš²B Bš²B B$$ €¬‚±‚±Žóš²C Cš²C C$€¬‚²‚²Žôš²C Cš²C C$€¬‚² ‚²Žõš²C Cš²C C$ €¬‚²  ‚²Žöš²C Cš²C C$ €¬‚²  ‚²Ž÷š²C Cš²C C$$ €¬‚²‚²Žøš²D Dš²D D$€¬‚³‚³Žùš²D Dš²D D$€¬‚³ ‚³Žúš²D Dš²D D$ €¬‚³  ‚³Žûš²D Dš²D D$ €¬‚³  ‚³Žüš²D Dš²D D$$ €¬‚³‚³Žýš²E Eš²E E$€¬‚´‚´Žþš²E Eš²E E$€¬‚´ ‚´Žÿš²E Eš²E E$ €¬‚´  ‚´š²E Eš²E E$ €¬‚´  ‚´š²E Eš²E E$$ €¬‚´‚´š²F Fš²F F$€¬‚µ‚µš²F Fš²F F$€¬‚µ ‚µš²F Fš²F F$ €¬‚µ  ‚µš²F Fš²F F$ €¬‚µ  ‚µš²F Fš²F F$$ €¬‚µ‚µš²G G"š²G G"$€¬‚¶‚¶š²G G"š²G G"$€¬‚¶ ‚¶ š²G G"š²G G"$ €¬‚¶  ‚¶ š²G G"š²G G"$ €¬‚¶  ‚¶ š²G G"š²G G"$$ €¬‚¶‚¶ š²J J$š²J J$$€¬‚·‚· š²J J$š²J J$$€¬‚· ‚·š²J J$š²J J$$ €¬‚·  ‚·š²J J$š²J J$$ €¬‚·  ‚·š²J J$š²J J$$$ €¬‚·‚·š²K K"š²K K"$€¬‚¸‚¸š²K K"š²K K"$€¬‚¸ ‚¸š²K K"š²K K"$ €¬‚¸  ‚¸š²K K"š²K K"$ €¬‚¸  ‚¸š²K K"š²K K"$$ €¬‚¸‚¸š²L L(š²L L($€¬‚¹‚¹š²L L(š²L L($€¬‚¹ ‚¹š²L L(š²L L($ €¬‚¹  ‚¹š²L L(š²L L($ €¬‚¹  ‚¹š²L L(š²L L($$ €¬‚¹‚¹š²M M!š²M M!$€¬‚º‚ºš²M M!š²M M!$€¬‚º ‚ºš²M M!š²M M!$ €¬‚º  ‚ºš²M M!š²M M!$ €¬‚º  ‚ºš²M M!š²M M!$$ €¬‚º‚º šÄš²P P%š²P P%ƒE€”€•PƒEƒEƒE€„€”€•P–'š²P&P*]š²P+P,‚­!šÅš²W W.š²W W.ƒF€”€•PƒFƒFƒFƒF€„€”€•PšÆš²W/W4šÇš²W5W:]š²W;W<‚­"šÈš²__š²__ $$€¤€Šš²__€»š²__‚­#šÉš²o oš²o oƒGAš²oo„àƒGÿ´@‚»Aš²oo‚»$šËš²qqš²qqà€¤‚­%š²~~š²~~ာ‚¼ ‚¼&š²~~š²~~áာ‚¼áƒHA€Ž,5„€ƒH‚¼'š²~~š²~~ာ‚¼€€‚¼(š²~~š²~~ာ‚¼‚¼)š²~~š²~~ာ‚¼ €‚¼*š²~~š²~~á €¬‚¼ €€ ‚¼+š²~~š²~~á €¬‚¼  ‚¼,š²~~š²~~áá €¬‚¼$áƒIA€Ž,5„€ƒI ‚¼-š²€¢€¢š²€¢€¢ €¬.š²€¢€¢š²€¢€¢ €¬ €/š²€¢€¢š²€¢€¢  €¬ €€ 0‚ó𲀤€¤𲀤€¤$á €¤€»š²€¤€¤šÍ𲀤!€¤&šÎ1šÏš²€ª€ªš²€ª€ª €¤2šÐš²€°€°š²€°€° €¤šÑ3šÒš²€¿€¿(š²€¿€¿( €¤šÓš²€¿)€¿4šÔ4šÕš²€Ù€Ùš²€Ù€Ù  €¤šÖ5š²€¢€¢š²€¢€¢  €¬  6š²€¢€¢š²€¢€¢   €¬$ ƒJA€Ž,5„€ƒJ 7š×š²€ê €êš²€ê €ê—ÿ´@‚E‚E8šØš²€ì €ìš²€ì €ì— ÿ´@‚E‚E9šÙš²€í €íš²€í €í— ÿ´@‚E‚E:š²€é€éš²€é€é—‚´‚EšÚš²€é€é!‚E;šÛš²€î€îš²€î€î— €¤‚Ekš²€î€î‚E<šÜš²€ð€ðš²€ð€ð— €¤‚Ekš²€ð€ð‚E=šÏš²€ò€òš²€ò€ò—€¤‚E‚E>šÝš²€ô€ôš²€ô€ô—€¤‚­?šÞš²€ý€ýš²€ý€ý—€¤‚­@šßš²$š²$€ó—€¤šà‚­Ašáš²%š²%ဤ‚½‚½Bšãš²š²ဤ‚½‚½Cšäš²š²á€¤‚½†8𲂽Dšåš²š²—€¤‚½‚½Ešæš²š²—€¤‚½†8𲂽Fšçš²ee#š²ee#á$€¤šÍš²e%e*šè‚­Gšéš²ll#š²ll#ƒK€”š²lLlX„——ƒK$€¤€”š²lLlXšêš²l$l:šë‚­Hšìš²{{š²{{ဤšÍš²{ {%‚­Išíš²|| š²|| —€¤•‡š²|!|,‚­Jšîš²}}'š²}}'—€¤šïš²}(}1‚­Kšðš²€€ š²€€ $€¤€»š²€ €‚­Lšñš² š² $€¤€»š² ‚­Mšò𲂂 𲂂 ƒL€”€•P$ƒL€¤€”€•P€»š²‚ ‚‚­Nšó𲄄𲄄ƒM€”€•P ƒM€¤€”€•P†š²„„‚­Ošô𲆆 𲆆  €¤šõ𲆆‚­Pšö𲇇 𲇇  €¤šõ𲇠‡‚­Qš÷š²ˆˆš²ˆˆ$ €¤€»š²ˆˆ€Šš²ˆˆ‚­Ršøš²‰‰š²‰‰$ €¤€»š²‰‰€Šš²‰‰ ‚­Sšùš²ŠŠš²ŠŠ$€¤€»š²ŠŠ‚­Tšúš² š² ƒN€”€•PƒNƒN€¤€”€•P]š² ‚­Ušûš²š² €¤Žâš²€Šš²‚­Všü𲓠“%𲓠“% €ô‚­Wšý𲔔𲔔 €¤€Šš²””‚­Xšþ𲕕𲕕 €¤€Šš²••‚­Yšÿš²––š²–– €¤€Šš²––‚­Z›š²——š²——> €¤Žâš²——€Šš²——‚­[›š²™™š²™™ƒO€”€•PƒOƒO€¤€”€•P]š²™™‚­\›š²¦¦'𲦦'ƒP€”€•P ƒPƒP€¤€”€•P›š²¦(¦,]š²¦-¦.‚­]›š²´´š²´´ƒQ€”€•P$ƒQ€¤€”€•P›š²´´‚­^›š²¹¹š²¹¹ƒR€”€•P‚uƒRƒR€¤€”€•P•4š²¹¹‚­_›š²¾¾š²¾¾‚u€¤•4š²¾¾‚­`›š²ÀÀ š²ÀÀ ƒS€”€•P$‚uƒS€¤€”€•Pkš²À À‚­a› š²ÁÁ š²ÁÁ $‚u€¤kš²Á Á ‚­b› š²Â š²Â ‚u€¤‚­c› š²Ãà š²Ãà ƒT€”€•PƒT‚uƒT€¤€”€•P€Öš²Ã à ‚­d› š²ÄÄš²ÄăU€”€•P‚uƒU$€¤€”€•P•4š²Ä Ä#‚­e–aš²ÇÇš²ÇǃV€”€•PƒW€”€•P‚uƒVƒV‚uƒW‚uƒW€¤€”€•P€”€•P•4š²Ç Ç ]š²Ç Ç› ‚­f›š²ÓÓš²ÓÓƒX€”€•PƒX‚uƒX‚u€¤€”€•P]š²ÓÓ“¿š²ÓÓ›‚­g›š²ÔÔš²ÔÔ ‚u‚u€¤›š²ÔÔ€²š²ÔÔ‚­h›š²ÕÕš²ÕÕƒY€”€•PƒZ€”€•PƒY‚uƒZƒY‚uƒZ€¤€”€•P€”€•P]š²Õ Õ “¿š²Õ Õ ‚­iš²×ך²××â‚´‚¾‚¾j›𲨠Ø𲨠؃[€”€•Pƒ\€”€•Pâ‚uƒ[ƒ[‚uƒ\‚uƒ\€¤‚¾€”€•P€”€•P•4𲨨†J𲨨‚¾k‹š²Ù Ùš²Ù Ùƒ]€”€•Pâƒ]‚uƒ]€¤‚¾€”€•P•4š²ÙÙ‚¾l›š²Ú Úš²Ú Úƒ^€”€•Pâƒ^ƒ^€¤‚¾€”€•P•4š²ÚÚ‚¾m‹zš²Û Ûš²Û Ûƒ_€”€•Pâƒ_ƒ_‚u‚u€¤‚¾€”€•P›š²ÛÛ†Jš²ÛÛ‚¾n‹xš²Ü Üš²Ü Üâ ‚u‚u€¤‚¾›š²Ü܆Jš²ÜÜ‚¾o‹0š²Ý Ýš²Ý Ýâ‚u€¤‚¾‚¾p›š²ßßš²ßß․‚­q›š²ââ š²ââ ƒ`€”€•Pƒ`‚uƒ`‚u€¤€”€•P]š²â â “¿š²â⛂­r›š²ååš²ååƒa€”€•Pƒa‚uƒa‚u€¤€”€•P]š²åå“¿š²å囂­s›š²êêš²êêƒb€”€•Pƒc€”€•Pƒbƒc‚uƒbƒc‚u€¤€”€•P€”€•P]š²êê“¿š²êꛚ²êꛂ­t›š²ððš²ððƒd€”€•P‚uƒd$‚uƒd‚uƒd€¤€”€•P]š²ð 𠀈š²ð ð ‚­u› š²õõš²õõ‚u ‚u€¤€‡š²õõ€²š²õõ‚­v›!š²ööš²ööƒe€”€•Pƒe‚u ƒe‚u €¤€”€•P]š²öö‰Uš²öö‚­w›"š²ûû-š²ûû->€¤‚­x›#š²ýýš²ýý€¤Œ’š²ýý"‚­y›$𲂂𲂂€¤Žý𲂂›%‚­‚ š´š² ‚ ‚­š´$‚­š´$‚­š´$ ‚­š´$ ‚­š´$$  $›&$  ffzz$@š² Bš² %‚ šµš²& &‚ ‚­šµ$‚­šµ$‚­šµ$ ‚­šµ$ ‚­šµ$$ š¶‚­šµš¶Ý $›'$  ffzz$@š²&&%‚ š¸š²4 4‚ ‚­š¸$‚­š¸$‚­š¸$ ‚­š¸$ ‚­š¸$$  $›($  ffzz‚ š¹š²8 8‚ ‚­š¹$‚­š¹$‚­š¹$ ‚­š¹$ ‚­š¹$$ š¶‚­š¹š¶Þ $$  ffzz@š²88( Bš²8,81‚ Œ‘š²= =‚ ‚­Œ‘$‚­Œ‘$‚­Œ‘$ ‚­Œ‘$ ‚­Œ‘$$ š¶‚­Œ‘š¶ß $$ffzz@š²==  Bš²=$=)‚šºš²B B‚‚­šº$‚­šº$‚­šº$ ‚­šº$ ‚­šº$$  $$ffzz@š²BB! Bš²B$B)‚š»š²C C‚‚­š»$‚­š»$‚­š»$ ‚­š»$ ‚­š»$$  $$ffzz@š²C!C'Bš²C*C- Cš²C0C5‚š¼š²D D‚‚­š¼$‚­š¼$‚­š¼$ ‚­š¼$ ‚­š¼$$  $$ffzz @š²DD!‚š½š²E E‚‚­š½$‚­š½$‚­š½$ ‚­š½$ ‚­š½$$  $$ffzz@š²EE Bš²E!E&‚š¾š²F F‚‚­š¾$‚­š¾$‚­š¾$ ‚­š¾$ ‚­š¾$$  $$ffzz@š²FF  Bš²F#F(‚š¿š²G G"‚‚­š¿$‚­š¿$‚­š¿$ ‚­š¿$ ‚­š¿$$  $$ffzz @š²G&G+‚šÀš²J J$‚‚­šÀ$‚­šÀ$‚­šÀ$ ‚­šÀ$ ‚­šÀ$$  $$ffzz@š²J9J?‚šÁš²K K"‚‚­šÁ$‚­šÁ$‚­šÁ$ ‚­šÁ$ ‚­šÁ$$  $$ffzz@š²K7K= Bš²K@KE‚šÂš²L L(‚‚­šÂ$‚­šÂ$‚­šÂ$ ‚­šÂ$ ‚­šÂ$$  $$ffzz@š²L=LCBš²LOLU‚šÃš²M M!‚‚­šÃ$‚­šÃ$‚­šÃ$ ‚­šÃ$ ‚­šÃ$$  $$ffzz@š²M6M<Bš²MHMN Cš²MQMV‚šÊš²nn ‚‚­šÊšÉƒfAš²oo„àƒfšÉ‚­šÊšÉƒfAš²oo„àƒf$ggzz‚šÌš²~~‚ á›)›)š²á›*›*š²€€€€ á›+›+š²€€á›,›,š²€€á™™š²€€$á›-›-𲀂€‚ á›.›.š²€ƒ€ƒá›/›/š²€ƒ€ƒá›0›0š²€ƒ€ƒ"á›1›1š²€ƒ&€ƒ,á›2›2𲀄€„‚­šÌá‚­šÌáá‚­šÌá‚­šÌá‚­šÌá‚­šÌá ‚­šÌá ‚­šÌáá $á á›3$ggzz‚›4𲀇€‡‚›5$Uggz† z›)𲀉€‰𲀉€‰€¤‚¿€›6ã‚À{›*𲀋€‹𲀋€‹€¤‚¿€›6ã‚À›7|›+𲀀𲀀€¤‚¿€›6ã‚À›8}›,š²€€ š²€€ €¤‚¿€›6ã‚À›9~™𲀑€‘𲀑€‘€¤‚¿€›6ã‚À›:›-𲀓€“𲀓€“€¤‚¿€›6ã‚À›;€›.𲀕€•𲀕€•€¤‚¿€›6ã‚À›<›/š²€—€—š²€—€—€¤‚¿€›6ã‚À›=‚›0š²€™€™ š²€™€™ €¤‚¿€›6ã‚À›>ƒ›1š²€›€›š²€›€›€¤‚¿€›6ã‚À™;„›2𲀀𲀀€¤‚¿€›6ã‚À›?…xš²€Ÿ€Ÿš²€Ÿ€Ÿ€¤‚¿€›6ã‚À›@‚%š²€¢€¢‚‚Á•L·z\V4à‰›C•L·z\V4à‰•N›D›D$‚ š²€¢€¢á›Eš²€¢$€¢)‚­% ‚­% ‚­%  ‚­%  ‚­%   ‚ó‚­%‚ó$á šÏ‚­%šÏ šÐ‚­%šÐ šÒ‚­%šÒ šÕ‚­%šÕ  $  $gg††‚$š²€é€é‚§€Ž+=‚Á•L·z\V4à‰›C•L·z\V4à‰•N›D›D‚­$š×—‚­$𨗠‚­$šÙ— šÚš²€é€é!$$š×‚­$š×—𨂭$𨗠šÙ‚­$šÙ— ‚­$—šÛ‚­$šÛ— šÜ‚­$šÜ— šÏ‚­$šÏ—$gg††‚šâš²  !‚á›Fš²  )‚•L·z\V4à‰›H‚À›Iä$šâ—•‡š²*‚•L·z\V4à‰›H‚À›Iä$šâšá‚­šâšáášã‚­šâšãášä‚­šâšäášå‚­šâšå—šæ‚­šâšæ—›J$gg††‚›Kš²‚÷k›L$gj† †›Mš²$$š²$$ƒg€”€•Pƒg€¤€”€•P€»š²$$‚ć›Nš²//š²//$€¤€»š²//‚Ĉ›O›Pš²>>š²>>—$¤‚E€»š²>>‚ĉŽ,›Qš²??š²??—$¤‚E€»š²??‚ÄŠŒ‘›Rš²@@š²@@ƒh€”€•P—$ƒh¤‚E€”€•P€»š²@@‚Ä‹%›Sš²AAš²AAƒi€”€•P— ƒi¤‚E€”€•P›Tš²A A"‚ÄŒ›U›Vš²DDš²DD—$ ¤‚E€»š²D D#€Šš²D*D+‚Ä›W›Xš²UU'š²UU'—$ ¤‚E€»š²U)U,€Šš²U3U4‚ÄŽ›Y›Zš²aa%š²aa%—$¤‚E€»š²a'a*‚Ä‚ƒjAš²®®„˜½š²®®‚€ç€…3€¬€è€…4€­$¡š²¯"¯*ƒj¢š²¯-¯/‚uƒj›[›[𲝝$¡š²°%°-$¢š²°0°3‚uƒj›\›\š²°°$  kk‚ ›]š²²²‚ ‚u$!!kk‚!›š²×ׂ!‚­›â›‚­››ƒk€”€•Pƒl€”€•Pâ‚uƒkƒk‚uƒl‚uƒl‹‚­›‹ƒm€”€•Pâƒm‚uƒm›‚­››ƒn€”€•Pâƒnƒn‹z‚­›‹zƒo€”€•Pâƒoƒo‚u‚u‹x‚­›‹xâ ‚u‚u‹0‚­›‹0â‚u$""pp‚"!‚"Šë›^›_ ›`›a›b šÐi! i!  i! i! i! i!  "i!"     (i!(       ##pp‚#€›c * -‚#›dÓ7$(ppÉ›e›c! !;›c! !;€¤‚Å›f›c" "›c" " €¤€‚Å‘›g›c$$›c$$€¤‚Å’›h›c%%›c%%€¤‚Å“›i›c& &›c& &€¤€‚Å”›j›c' '›c' '€¤€‚Å•›k›c( (›c( (€¤€‚Å–›l›c) )›c) )€¤€‚Å—›m›c* *›c* *€¤€‚Ř›n›c,, ›c,, €¤‚Å™›o›c-- ›c-- €¤‚Åš›p›c. .›c. .€¤€‚Å››q›c/ /›c/ /€¤€‚Åœ›r›c0 0›c0 0€¤€‚Å›s›c44›c44å1€¤‚Åž›u›cb b›cb b#€¤ˆª›cbb €‚ÅŸ›v›cdd›cddVD€¤‡#›cdd‡Û›cdd †›cd!d"‚Å ›w›cff›cffVD€¤‡#›cf f#†›cf$f%‚Å¡›x›cgg›cggVD€¤‡#›cg g#†›cg$g%‚Å¢›y›chh›chhVD€¤‡#›ch h#†›ch$h%‚Å£›z›cii›ciiVD€¤‡#›ci i#†›ci$i%‚Ť›{›cjj›cjjVD€¤‡#›cj j#†›cj$j%‚Å¥›|›ckk›ckkVD€¤‡#›ck k#†›ck$k%‚Ŧ›}›cll›cllVD€¤‡#›cl l#†›cl$l%‚ŧˆD›cqq›cqq€ #€¤€Û€Û¨—x›crr›crr€ €œ€¤€Û€Û©…Ú›c‚(‚(›c‚(‚(€´…Úª›~›c‚/‚/›c‚/‚/  V€˜V    V€¤ ˆæ›c‚/‚/››c‚/ ‚/&›€›c‚/'‚/*ˆó›c‚/+‚/3››c‚/4‚/S›‚›c‚/T‚/c›ƒ›c‚0‚0#›„›c‚0$‚0<™š›c‚0=‚0J›…›c‚0K‚0U‚Å«›†›c…” …”›c…” …”€ €¤€ˆ›c…”…”†›c…”…” ‚Å‚$›t›c2 2‚$€Ö¡›c212B¢›c2E2K £›c2N2R¥›c2U2Z€Ï¦›c2]2nå›t›t›c22-€%%pp¬¬‚%›‡›c;;‚%÷k›ˆ€Ï&&pp¬É¬›‰›c==›c==€¤‚Ç­›Š›c>> ›c>> €¤‚Ç®›‹›c??›c??€¤‚ǯ›Œ›c@@›c@@€¤‚ǰ››cAA›cAA€¤‚DZ›Ž›cBB›cBB€¤‚Dz››cCC›cCC€¤‚dz››cDD›cDD€¤‚Ç´›‘›cEE›cEE€¤‚ǵ›’›cFF"›cFF"€¤‚Ƕ›“›cGG›cGG€¤‚Ç·›”›cII›cII€¤‚Ǹ›•›cKK›cKK€¤‚ǹ›–›cLL›cLL€¤‚Ǻ›—›cMM›cMM€¤‚Ç»›˜›cNN›cNN€¤‚Ǽ›™›cOO›cOO€¤‚ǽ›š›cPP›cPP€¤‚Ǿ›››cQQ›cQQ€¤‚Ç¿›œ›cRR›cRR€¤‚ÇÀ››cSS›cSS€¤‚ÇÁ›ž›cTT›cTT€¤‚Ç›Ÿ›cUU›cUU€¤‚ÇÛ ›cVV"›cVV"€¤‚ÇÄ›¡›cXX›cXX€¤‚ÇÅ›¢›cYY›cYY€¤‚ÇÆ›£›cZZ›cZZ€¤‚ÇÇ›¤›c[[›c[[€¤‚ÇÈ›¥›c\\›c\\€¤‚Ç‚&„À›co o‚&€œ¡›cpp#¢›cp p(€ ›¦›¦›cppˆD‚Å„ÀˆD€ #—x‚Å„À—x€ €œ€''ppÉÉ‚'€‚›cy y‚'€ç€…3€¬€è€…4€­€€˜›€›czz 曨›c}} ˆæ›c ›‚›c€€€€››c€€%Vˆó›c€‚€‚V››c€ƒ€ƒ  ›ƒ›c€„€„ ›„›c€…€…#›©›c€†€†#›ª›c€‡€‡#›«›c€ˆ€ˆ#›¬›c€‰€‰#›­›c€Š€Š#›®›c€‹€‹#›¯›c€Œ€Œ#›°›c€€#›±›c€Ž€Ž#›²›c€€#›³›c€€#›´›c€‘€‘#›µ›c€’€’zz ›¶›c€—€—11 ƒ›c€˜€˜#›·›c€š€š#›¸›c€›€›#›¹›c€œ€œ#›º›c€€#›»›c€Ÿ€Ÿ#›¼›c€ € #›½›c€¡€¡#›¾›c€¢€¢#›¿›c€£€£#›À›c€¤€¤#›Á›c€¥€¥#›Â›c€¦€¦#›Ã›c€§€§#›Ä›c€¨€¨#›Å›c€©€©#›Æ›c€ª€ª#›Ç›c€«€«#›È›c€¬€¬#›É›c€­€­#›Ê›c€®€®#›Ë›c€¯€¯#›Ì›c€°€°#›Í›c€±€± #›Î›c€²€²#›Ï›c€³€³#›Ð›c€´€´#›Ñ›c€µ€µ#›Ò›c€¶€¶#›Ó›c€·€·#›Ô›c€¸€¸#›Õ›c€¹€¹#›Ö›c€º€º#›×›c€»€»#›Ø›c€¼€¼#›Ù›c€½€½#›Ú›c€¾€¾#›Û›c€¿€¿#›Ü›c€À€À #›Ý›c€Á€Á#›Þ›c€Â€Â#›ß›c€Ã€Ã#›à›c€Ä€Ä#›á›c€Å€Å#›â›c€Æ€Æ#›ã›c€Ç€Ç#›ä›c€È€È#›å›c€É€É#›æ›c€Ê€Ê#›ç›c€Ë€Ë#›è›c€Ì€Ì#›é›c€Í€Í#›ê›c€Î€Î#›ë›c€Ï€Ï#›ì›c€Ð€Ð#›í›c€Ò€Ò#›î›c€Ó€Ó#›ï›c€Ô€Ô#›ð›c€Õ€Õ#›ñ›c€Ö€Ö#›ò›c€×€×#›ó›c€Ø€Ø%#›ô›c€Ù€Ù$#›õ›c€Ú€Ú+›ö›c€Û€Û ›÷›c€Ü€Ü›ø›c€Ý€Ý›ù›c€Þ€Þ›ú›c€ß€ß›û›c€à€à›ü›c€á€á›ý›c€â€â›þ›c€ã€ã›ÿ›c€ä€äœ›c€å€å œ›c€æ€æ œ›c€ç€çœ›c€è€è œ›c€é€é œ›c€ê€ê œ›c€ë€ë œ›c€ì€ìœ›c€í€íœ ›c€î€îœ ›c€ï€ïœ ›c€ð€ðœ ›c€ñ€ñœ ›c€ò€òœ›c€ó€óœ›c€ô€ô"œ›c€õ€õœ›c€ö€öœ›c€÷€÷œ›c€ø€øœ›c€ù€ù#œ›c€ú€ú!#œ›c€û€û#œ›c€ü€ü#œ›c€ý€ý#œ›c€þ€þ#œ›c€ÿ€ÿ#œ›c#œ›c#œ›c#œ›c#œ›c#œ ›c#œ!›c#œ"›c#œ#›c#œ$›c  #œ%›c  #œ&›c  (œ'›c  "œ(›c  $#œ)›c%œ*›c#œ+›c&#œ,›c#œ-›c#œ.›c#œ/›c!œ0›cœ1›c!œ2›c œ3›cœ4›c#œ5›c(#œ6›c0#œ7›c8#œ8›c1#œ9›c#œ:›c(#œ;›c  '#œ<›c!!€ œ=›c""%€ œ>›c##)€ œ?›c$$$€ œ@›c%% € œA›c&&'€ œB›c''&€ œC›c((€ œD›c))€ œE›c**"€ œF›c++#€ œG›c,,&€ œH›c--"€ œI›c..%€ œJ›c// € œK›c00€ œL›c11!€ œM›c22€ œN›c33€ œO›c44€ œP›c55€ œQ›c66"€ œR›c77!€ œS›c88#€ œT›c99#€ œU›c::€ œV›c;;#€ œW›c<<%€ œX›c=='€ œY›c>>!€ œZ›c?? #œ[›c@@,#œ\›cAA2#œ]›cBB2#œ^›cCC*#œ_›cDD2#œ`›cEE€ œa›cGG,€ œb›cHH € œc›cII)€ œd›cJJ%€ œe›cKK"€ œf›cLL"€ œg›cMM€ œh›cNN!€ œi›cOO&€ œj›cPP3€ œk›cQQ"€ œl›cRR€ œm›cSS€ œn›cTT€ œo›cUU)€ œp›cVV€ œq›cWW/€ œr›cXX/€ œs›cYY(€ œt›c[[€ œu›c\\&€ œv›c]] € œw›c^^"€ œx›c__ € œy›c``&€ œz›caa$€ œ{›cbb+€ œ|›ccc-€ œ}›cdd'€ œ~›cee(€ œ›cff*€ œ€›cgg€ œ›chh#€ œ‚›cii(€ œƒ›cjj€ œ„›ckk!€ œ…›cll)€ œ†›cnn€ œ‡›coo&€ œˆ›cpp*zœ‰›csszœŠ›ctt1œ‹›cvv1œŒ›cww1œ›cxx1œŽ›cyy1œ›czz1œ›c{{ 1œ‘›c||1œ’›c$1œ“›c€€%1œ”›c'1œ•›c‚‚#1œ–›cƒƒ)1œ—›c„„1œ˜›c……#1œ™›c††#1œš›cˆˆ1œ››c‰‰1œœ›cŠŠ#1œ›c‹‹,1œž›cŒŒ#1œŸ›c1œ ›cŽŽ1œ¡›c'1œ¢›c 1œ£›c‘‘*1œ¤›c““1œ¥›c””1œ¦›c••1œ§›c––1œ¨›c——1œ©›c˜˜1œª›c™™1œ«›cšš1œ¬›c›› 1œ­›cœœ1œ®›c 1œ¯›cžž1œ°›cŸŸ圱›c¡¡圲›c¢¢1œ³›c££圴›c¤¤1œµ›c¥¥圶›c¦¦1œ·›c§§1œ¸›c¨¨圹›c©©1œº›cªª1œ»›c««圼›c¬¬圽›c±±)圾›c²²$圿›c³³'åœÀ›c´´#åœÁ›c··1œÂ›c¹¹1œÃ›cºº1œÄ›c»»1œÅ›c¼¼1œÆ›c½½1œÇ›c¾¾1œÈ›c¿¿1œÉ›cÀÀ1œÊ›cÁÁ1œË›cÂÂ#œÌ›cÃÃ1œÍ›cÄÄ$1œÎ›cÅÅ$1œÏ›cÆÆ$1œÐ›cÇÇ$1œÑ›cÈÈ&1œÒ›cÉÉ&1œÓ›cÊÊ&1œÔ›cËË&1œÕ›cÌÌ'1œÖ›cÍÍ'1œ×›cÎÎ'1œØ›cÏÏ'1œÙ›cÐÐ'åœÚ›cÒÒåœÛ›cÓÓ1œÜ›cÔÔ1œÝ›cÕÕ1œÞ›cÖÖ1œß›c××åœà›cØØåœá›cÙÙ+åœâ›cÚÚ,åœã›cÛÛåœä›cÜÜåœå›cÝÝåœæ›cÞÞåœç›càà1œè›cââ1œé›cãã1œê›cåå1œë›cææ1œì›cçç1œí›cèè1œî›cééåœï›cêêåœð›cëë1œñ›cììåœò›cíí1œó›cîîåœô›cïï1œõ›cððåœö›cññ1œ÷›còòåœø›cóó1œù›côôåœú›cõõ1œû›cööåœü›c÷÷åœý›cøøåœþ›cùù1œÿ›cúúå›cûû1›cüüå›cýý1›cþþå›cÿÿå›c‚‚å›c‚‚å›c‚‚å›c‚‚å ›c‚‚å ›c‚‚å ›c‚‚å ›c‚ ‚ å ›c‚ ‚ å›c‚ ‚ å›c‚ ‚ å›c‚ ‚ å›c‚‚å›c‚‚å›c‚‚å›c‚‚1›c‚‚1›c‚‚1›c‚‚1›c‚‚#›c‚‚#›c‚‚ç›c‚‚ ™š›c‚ ‚ ‚Ê1›c‚"‚"‚Ê4 ›c‚%‚%…Ú‚Å€‚…Ú€((ppÉÉ‚(!*0‚("))7p–É.É#NN&NN&Ïà—€¤$N(N1%NCNI&‚ËÊ'ooooÏà—€¤$oo!%o3o9‚ËË™ss ss  ¸»—ZTàºY€³T€¤ ˜øss(ss!)s"s+•‡s,s7˜úsDsP˜ûsQs\*s]sc+sdsj%slsr‚ËÌàè‚´‚Ì% &‚ÌÍšÙ€ƒ€ƒ€ƒ€ƒè €´‚ÌšÙ— €§€ƒ€ƒ‚ÌΚ×€†€†€†€†è€´‚Ìš×—‚ÌϚ؀‡€‡€‡€‡è €´‚ؗ̚ €§€‡€‡‚ÌÐ-€ˆ €ˆ,€ˆ €ˆ,è—€¤‚Ì•‡€ˆ-€ˆ8‚ÌÑ-€ €,€ €,èÏ€¤‚Ì$€-€6‚ÌÒ.€“ €“€“ €“耤‚Ì‚ÌÓ/€–€–€–€–Ï”€¤$€–€–$0€–5€–K˜ü€–L€–^1‚ËÔ2€¼€¼€¼€¼—à€¤•‡€¼€¼%€¼+€¼1‚ËÕ3€Ã€Ã€Ã€Ã ÏÏ àÏ— »»V€³Y¸—€¤ š€Ã €ÃM4€Ä €Ä$5€Å €Å86€Æ €Æ57€Ç €Ç08€È €È69€É €É5:€Ê €Ê1%€Ë €Ë&;€Ì €Ì1‚ËÖ<€€+€€+à€¤š€,€Y4,05‚,‚D6ƒ,ƒA%„,„2‚Ë×=  *  *+€¤) + 4‚ËØ>‚1‚1‚1‚1€¤‚ËÙ5‚5‚5‚5‚5€¤‚ËÚ?‚8‚8 ‚8‚8 €¤@‚8 ‚8A‚8‚8‚ËÛB‚=‚=‚=‚=¸ €¤˜ø‚=‚="‚ËÜCD‚C ‚C‚C ‚C逕¤‚ÍF‚ËÝG‚H‚H‚H‚H¸FVà€¡逤˜ø‚H‚H )‚H*‚H3H‚H4‚HCI‚HD‚HP@‚HQ‚HX%‚HY‚H_‚ËÞJ‚e‚e‚e‚e¸ €¤˜ø‚e‚e%‚ËßK‚i‚i‚i‚iƒp€”€•Pf¸FVƒp逤€”€•P)‚i‚i$˜ø‚i%‚i-@‚i.‚i5H‚i6‚iE†“‚iF‚iJ‚ËàLƒbƒbƒbƒbû€¤‚ËáMƒtƒtƒtƒtû€¤‚ËâNƒ}ƒ}"ƒ}ƒ}"û€¤‚ËãOƒ€ƒ€ƒ€ƒ€ꀤ)ƒ€ƒ€&‚ËäQƒƒ"ƒƒ"ꀤ)ƒ#ƒ,‚Ëå†\†\†\†\뀬‚Ï ‚Ïæ†\†\†\†\ë뀬‚ÏëƒqA€Ž,5„€ƒq‚Ïç†\†\†\†\뀬‚Ï€€‚Ïè†\†\†\†\뀬‚Ï‚Ïé†\†\†\†\뀬‚Ï €‚Ïê†\†\†\†\ë €¬‚Ï €€ ‚Ïë†\†\†\†\ë €¬‚Ï  ‚Ïì†\†\†\†\ëë €¬‚Ï$ëƒrA€Ž,5„€ƒr ‚ÏíS†–†– †–†– ¸Y뀤˜ø†–"†–*)†–7†–@T†–A†–I‚ËîU†Ì†Ì †Ì†Ì  àÏ—‚и»»—V€³Y€¢ëà€¤4†Ì †ÌW†Ì†Ì#%†Ì$†Ì*;†Ì2†ÌC‚ËïX‡(‡( ‡(‡( ƒs€”€•P—ƒt€”€•Pƒu€”€•Pƒv€”€•Pƒw€”€•Pƒx€”€•P‚и»»ƒsV€³ƒtƒuƒvƒwƒxà‚и»ƒsV€³ƒtƒuƒv€¡ééƒwƒxà€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P‚ËðY‡b ‡b‡b ‡b»€ô‚ËñZ‡c ‡c"‡c ‡c"¸€˜—Së€ô‚Ëò[‡d‡d ‡d‡d ƒy€”€•P—ƒz€”€•Pƒ{€”€•Péƒ|€”€•Péƒ}€”€•Pƒ~€”€•P‚и»ƒyV€³Yƒz€¡ƒ{ƒ|€¢ƒ}à‚Ð ¸ƒySƒ~S€˜ƒzSƒ}à€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P‚Ëó\‡‘‡‘ ‡‘‡‘ ƒ€”€•P—ƒ€€”€•Pƒ€”€•Pƒ‚€”€•Pƒƒ€”€•P‚Ð ¸ƒƒ€€˜ƒƒ‚Sƒƒà‚Ð ¸ƒƒ€€˜Sƒƒ‚ƒƒà€¤€”€•P€”€•P€”€•P€”€•P€”€•P‚Ëô]‡ž‡ž ‡ž‡ž ƒ„€”€•Pƒ…€”€•Pƒ†€”€•Pƒ‡€”€•Pƒˆ€”€•Pƒ‰€”€•PƒŠ€”€•P‚Ð ƒ„—ƒ…ƒ†ƒ‡ƒˆƒ…ƒ†ƒ‰ƒŠà‚Ѓ„—ƒˆƒ‡ƒ†ƒ‰ƒŠà€¤€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P€”€•P‚Ëõ^‡§‡§ ‡§‡§ ƒ‹€”€•Pà‚и—€˜S냋€¤€”€•P‚Ëö_‡¼‡¼‡¼‡¼ àÏ—€¤4‡¼‡¼W‡¼‡¼*%‡¼+‡¼1;‡¼9‡¼J‚Ë ‚),‚)à% &!,0  `€€!,€óa€‚€‚!,‚Ë,àèšÙ‚Ë,šÙè š×‚Ë,š×èšØ‚Ë,šØè -‚Ë,-è—-‚Ë,-èÏ.‚Ë,.è—b!**ŒŒ÷÷‚*c®®‚*d!g++ŒŒ÷ø÷e°°°°¸*€³€¤)°°%˜ø°'°/€ý°:°D™°F°S‚Ñ‚+fÄÄ‚+g!,,ŒŒøüøhÆÆÆÆg€¤iÆÆ‚ÒùjËËËËg €¤iËË‚ÒúkÑÑÑÑV€¤)ÑÑ$IÑ%Ñ1‚ÒûlööööV€¤˜úöö!Iö"ö.mö8ö?‚Ò‚,n‚†‚† ‚,o!»--ŒŒüü”Ђˆ‚ˆ ‚ˆ‚ˆ €•€¤†‚ˆ ‚ˆ ‚Óý”Ñ‚‰‚‰ ‚‰‚‰ €•€¤†‚‰ ‚‰ ‚Óþ”Ò‚Š‚Š ‚ЂР€•€¤†‚Š ‚Š ‚Óÿ”Ó‚‹‚‹ ‚‹‚‹ €•€¤†‚‹ ‚‹ ‚Óp‚‚ ‚‚ €—€•€¤‡Ü‚ ‚‚Óq‚Ž‚Ž ‚Ž‚Ž €—€•€¤‡Ü‚Ž ‚Ž‚Ór‚‘‚‘‚‘‚‘€•€•€¤s‚‘‚‘†8‚‘!‚‘"‚Ó‚-t‚˜‚˜‚-u!³..ŒŒv‚›‚›‚›‚›€—€—€—€—€•€•€¤w‚›‚›x‚›‚›%y‚›&‚›/z‚›0‚›7†“‚›8‚›<‚Ô{‚§‚§‚§‚§€•€¤‚Ô‚.|‚¬‚¬‚.}!‚//Œ‘ ~‚¯‚¯‚¯‚¯€•€•€¤†“‚¯‚¯‚Õ‚³‚³‚³‚³€—€•€•€• €•€¤€‚³‚³ ‚³"‚³'‚‚³)‚³1ƒ‚³B‚³J„‚³U‚³]‚Õš‚À‚À‚À‚À€¢€•€¤‚Õj‚łłłŀ•€¤.‚łŕ ‚Å‚Å‚Õ …‚ʂʂʂʀ•€¤†‚ʂʇ‚Ê‚Ê$‚Õ ˆ‚Õ‚Õ‚Õ‚ÕƒŒ€”‚Õ%‚ÕJ„ƒƒ€”‚Õ3‚ÕH„ƒŒ€•€¤€”‚Õ%‚ÕJ€”‚Õ3‚ÕH‰‚Õ‚Õ#‚Õ Š‚Þ‚Þ‚Þ‚ÞƒŽ€”‚Þ‚Þ-„€—€—ƒŽ€•€¤€”‚Þ‚Þ-‹‚Þ‚Þ‚Õ Œ‚é‚é‚é‚逢€¢€—€—€—€—€—€¶€•€¤‚é‚é$Ž‚ê‚ê'‚ë‚ë(‚ì‚ì$‘‚ì%‚ì-’‚í‚í#“‚í$‚í1”‚î‚î#‚Õ •ƒ*ƒ*ƒ*ƒ*ƒ€”€•P€¢€¢€—€—€—€—€—€¶ƒ€—€—€•€¤€”€•P–ƒ*ƒ*%—ƒ*&ƒ*4˜ƒ*5ƒ*@‚Õ™ƒ4ƒ4 ƒ4ƒ4 ƒ€”€•P€¢€¢€—€—€—€—€—€¶ƒ€—€—€•€¤€”€•P‚Õ‚/šƒ;ƒ;‚/›!U00‘‘œƒ=ƒ=ƒ=ƒ=€• €•€¤†“ƒ=ƒ=!ƒ=#ƒ=,‚Ö‚0žƒEƒE‚0Ÿ!r11‘‘ ƒHƒHƒHƒH<€¤)ƒHƒH(¡ƒH)ƒH/†ØƒH0ƒH7¢‚×£ƒMƒMƒMƒM<€—€¤)ƒMƒM%¡ƒM&ƒM,†ØƒM-ƒM4‚פƒRƒRƒRƒR< €¤)ƒRƒR&¡ƒR'ƒR-†ØƒR.ƒR5‚×¥ƒXƒXƒXƒX<€¢€¤)ƒX ƒX)¡ƒX*ƒX0†ØƒX1ƒX8‚ׂ1¦ƒšƒš‚1§!22‘“¨ƒ›ƒ›ƒ›ƒ›ƒ‘€”€•Pƒ’€”€•Pé ¸ƒ‘Y€¡ƒ’éÉ€¢ìS€¤€”€•P€”€•P ˜øƒœ ƒœ)ƒœƒœ(ªƒ ƒ˜úƒƒ!@ƒ"ƒ)Tƒ*ƒ2«ƒž(ƒž8¬ƒŸ ƒŸ­ƒŸƒŸ.®ƒŸ/ƒŸ>¯ƒŸ?ƒŸG‚Ù‚2°„–„–‚2±!™34“•²„—„—„—„— €¤‚Ú³„™„™„™„™¸€˜SVSS€¤˜ø„™„™%´„™'„™0µ„™2„™?¶„™A„™S‚Ú·……D……D¸€˜SS€¤˜ø…F…N´…Y…bµ…n…{‚Ú¸…>…>.…>…>.¸»SVS€¤˜ø…>0…>8(…>C…>Lµ…>W…>d‚Ú¹…—…—&…—…—&ƒ“€”…—l…—m»íƒ“VSƒ“€¤€”…—l…—m(…—(…—1»…—=…—X‚Ú¼…©…©…©…©ƒ”€”€•P¸»€˜Sƒ”S€¤€”€•P˜ø…©…©(…©'…©0´…©<…©E‚Ú‚3½…5 …5 ‚3€ç€…3€¬€è€…4€­‹…6 …6S†“…7 …7V‡#…8 …8 î¿…9 …9ï”Â…:…: À…;…;!°44••‚4R†\†\‚4 ¡†\2†\6¢†\F†\S£†\e†\rëRR†\†\‚ËRë‚ËRëë‚ËRë‚ËRë‚ËRë‚ËRë ‚ËRë ‚ËRëë $ë ë!55••‚5Á†^†^‚5Â!í66••Æ_†_†_†_¸€˜—Sëà€¤˜ø†_†_´†_"†_+Ć_,†_8@†_E†_Lª†_M†_Tµ†_U†_bņ_c†_n%†_{†_€‚ÞÆ†‹†‹†‹†‹¸€¤˜ø†‹†‹ @†‹*†‹1‚Þ‚6ƒ•-†Ê †Ê „V†Ê†Ê ‚6€ç€…3€¬€è€…4€­ƒ•ê†Ê†Ê‚Ѓ•ÇdžʆÊ!77––‚7ÈŽ.  %‚7Éì89–œ Ž. Ž1f fƒ–AŽ.  „‚߃–‚àƒ–ÿ´@‚àAŽ.  ‚àÍŽ.  Ž1ggƒ—AŽ.  „‚àƒ—ƒ—ÿ¤@‚àAŽ.  ‚àÎŽ. !Ž1j j!ƒ˜AŽ.AC„‚߃˜‚àƒ˜ÿ¤@AŽ.AC‚á‚8ƒ™AŽ.  „ÌŽ. ‚8‚á̃šAŽ.  „‚߃š‚àƒšÍ‚áÌ̓›AŽ.  „‚àƒ›ƒ›È99œœ  ‚9ÏÐ*1‚9Ñ :=œœ ) ÒÐÓƒ´ƒ´V]]ÿ¤@‚â‚:ÔЂ:ÕÏŽ;=œœ!)!ÖÐÓ€¸€¸€ñ ÿ¤@‚ã"Ð# #Ð# #ð€¬‚ä ‚ä#Ð# #Ð# #ðð€¬‚äð ð‚ä$Ð# #Ð# #ð€¬‚ä‚ä%Ð# #Ð# #ð€¬‚ä‚ä&Ð# #Ð# #ð€¬‚ä ‚ä'Ð# #Ð# #𠀬‚ä  ‚ä(ØÐ11Óee]ðÿ¤@‚ã‚;ÙÐ ‚;ÏÔ<<œœ))‚<×Ð# #‚<€ò ñÚÐ% % Û€ò ÜÐ' 'Ý€ñ ÞÐ) )߀ò  iàÐ+ +á€ñ âÐ- -ã äÐ/ /å‚ã×ð‚ã×ðð‚ã×ð‚ã×ð‚ã×ð‚ã×ð  ðæÏÔ==œœ))‚=’¥ç * :‚=èÌ>Rœ)U,)éçêOOC €½€ˆ€»ÿ¤@‚æ*ëç  êYYÿ¤@‚æ+ìç!!êZZÿ¤@‚æ,íç""ê[[eÿ¤@‚æ-îç##ê]]ƒœ-ç##„ƒœÿ¤@-ç##‚æ.ïç%%êdd €½Gÿ¤@‚æ/ðç&&êjj Gÿ¤@‚æ0ñç''êmm ÿ¤@‚æ1òç((êtt 'ÿ¤@‚æ2ç/ /ç/ /$€¬‚ç‚ç3ç/ /ç/ /$€¬‚ç ‚ç4ç/ /ç/ /$ €¬‚ç  ‚ç5ç0 0,ç0 0,$€¬‚è‚è6ç0 0,ç0 0,$€¬‚è ‚è7ç0 0,ç0 0,$ €¬‚è  ‚è8†ç@@ꀠ€ *gòÿ¤@‚é‚é9öçDDê  ÿ¤@‚æ:÷çFFꀲ€²ò +óÿ¤@‚æ;ùçNN ê‚Y‚Y  }ÿ¤@‚æ<úçOOê‚z‚zó ô‚uÿ¤@‚æ=üçPP ê‚ñ‚ñ ó ô‚uÿ¤@‚æ>ýçQQ)ê…n…n)óô‚uÿ¤@‚æ?þçRRêˆIˆIóô )7 7‚uÿ¤@ €‡çRaRf‚æ@ÿçSSê‰c‰có)7‚u ÿ¤@‚æAžçTT,ꉇ‰‡,óôÿ¤@‚æBžçVVêŠDŠD+ò ÿ¤@‚æCžçXXê……ó ô}‚uÿ¤@‚æDžçYYꉞ‰ž+ò ÿ¤@‚æEžçZZ#ꉯ‰¯#+ò  ÿ¤@‚æFžç[[ꉷ‰·+ò ôÿ¤@‚æGžç\\(ꉲ‰²(+ò  ÿ¤@‚æHžç]]ꉻ‰»+ò ô~ÿ¤@‚æIžç^^ê‰À‰À+ò ôÿ¤@‚æJž ç__"ê‰Å‰Å"+ò ôÿ¤@‚æKž ç`` ê‰Ê‰Ê +ò ôÿ¤@‚æLž çaa#ê‰Ï‰Ï#+ò ôÿ¤@‚æMž çbbê‰Ô‰Ô+ò ôÿ¤@‚æNž çccê‰Ù‰Ù+ò ôÿ¤@‚æOžçddê‰Þ‰Þ+ò ôÿ¤@‚æPžçeeê‰ã‰ã+ò ôÿ¤@‚æQžçffê‰è‰è+ò ôÿ¤@‚æRžçhh0ê‰í‰í0g ~‚uÿ¤@‚æSžçjjêŠ9Š9ò+ÿ¤@‚æTžçllêŠQŠQ ' ÿ¤@‚æ‚>žç* **‚>$’¥??UU+@ç*;*EBç*H*RCç*U*_ Eç*b*g Fç*j*o‚?žç+ +'‚?$’¥@@UU+@ç+;+EBç+H+MCç+P+U Eç+X+] Fç+`+e‚@žç, ,4‚@$’¥AAUU+@ç,;,EBç,H,MCç,P,U Eç,X,] Fç,`,e‚Ažç- -7‚A$’¥BBUU+@ç-;-EBç-H-MCç-P-U Eç-X-] Fç-`-e‚Bžç. .+‚B$’¥CCUU+@ç.;.EBç.H.M}Cç.P._ Eç.b.g Fç.j.o‚Cóç/ /‚C‚æó$‚æó$‚æó$  $’¥DDUU@ç/;/A Bç/D/I Cç/L/Q‚Dôç0 0,‚D‚æô$‚æô$‚æô$  $’¥EEUU@ç0;0H Bç0K0P$Cç0S0V‚Ežç1 1"‚E$’¥FFUU@ç1;1D+Bç1G1QCç1T1YEç1\1a$Fç1d1g ¯ç1j1o‚Fžç2 2%‚F$’¥GGUU@ç2;2D+Bç2G2QCç2T2YEç2\2a$Fç2d2g ¯ç2j2o‚Gžç3 3/‚G$’¥HHUU@ç3;3D+Bç3G3QCç3T3YEç3\3a$Fç3d3g ¯ç3j3o‚Hžç4 4#‚H$’¥IIUU+@ç4;4E$Bç4H4K Cç4N4S‚Ižç5 5&‚I$’¥JJUU+@ç5;5EBç5H5MCç5P5U Eç5X5]‚Jžç6 6‚J$’¥KKUU+@ç6;6EBç6H6N$Cç6Q6T Eç6W6\‚Kžç7 7‚K$’¥LLUU+@ç7;7E$Bç7H7PCç7o7u Eç7x7}‚Lž ç9 9‚L$’¥MMUU+@ç9;9EBç9H9U Cç9X9]Eç9`9eFç9h9m ¯ç9p9u‚M’¦ç<< ‚M12 ž!’¥NNUU‚Nõç??‚N€Ž€‚Ib†‚æõ†*gò’¥OOUU‚OøçBB‚O’¥PPUU‚Pž"çHH ‚P€óêçHH-õž"ž"çH H’¥QQUU‚QûçJJ‚Qôž#ž#çKK õêçLLôž$ž$çLL ’¥RRUU‚R˜õž%*/‚Rž&vŽSrŸUlUž'ž%44ž(TTÿ¤@ž)‚íVž*ž%77ž(VVÿ¤@ž+‚íWž,ž%::ž(XXÿ¤@ž-‚íXž.ž%<< ž(‹‹  ÿ¤@‚íYž/ž%?? ž(ZZ ÿ¤@ž0‚íZž1ž%EEž(‹‹ €ñÿ¤@‚í[ž2ž%GGž(‹*‹*&ÿ¤@‚í\ž3ž%IIž(‹–‹–%— ÿ¤@ž4ž%IxI€‡‚í]ž%QQž%QQö€¬‚î ‚î^ž%QQž%QQöö€¬‚îö ö‚î_ž%QQž%QQö€¬‚î‚î`ž%QQž%QQö€¬‚î‚îaž%QQž%QQö€¬‚î ‚îbž%QQž%QQö €¬‚î  ‚îcž6ž%XXž(ss  ÿ¤@‚ídž7ž%YYž(––   ÿ¤@‚íež8ž%ZZž(…D…D5  ÿ¤@‚ífž9ž%[[ž(…S…Sÿ¤@ŒZž%[[”Wž%[*[<‚ígž:ž%\\ž(…h…h  ö 5 ÿ¤@”Wž%\\-ž;ž%\7\Dž<ž%\M\Zž=ž%\c\mšñž%\}\€„‚íhž>ž%]]ž(…­…­5 ÿ¤@“ož%]"](ž?ž%]3]C‚íiž%eež%eeÑ€¬‚š ‚šjž%eež%eeÑÑ€¬‚šÑ Ñ‚škž%eež%eeÑ€¬‚š‚šlž%eež%eeÑ€¬‚š‚šmž%eež%eeÑ€¬‚š ‚šnž%eež%eeÑ €¬‚š  ‚šož@ž%ž(“´“´Ðÿ¤@‚ípžAž%€€€€ž(“Ö“ÖÐÿ¤@‚íqžBž%€€ž(“z“z÷ ÐÐÿ¤@‚írž%€ƒ €ƒž%€ƒ €ƒ$€¬‚ð‚ðsž%€ƒ €ƒž%€ƒ €ƒ$€¬‚ð ‚ðtž%€ƒ €ƒž%€ƒ €ƒ$ €¬‚ð  ‚ðuž%€„ €„ž%€„ €„$€¬‚ñ‚ñvž%€„ €„ž%€„ €„$€¬‚ñ ‚ñwž%€„ €„ž%€„ €„$ €¬‚ñ  ‚ñxž%€… €…)ž%€… €…)$€¬‚ò‚òyž%€… €…)ž%€… €…)$€¬‚ò ‚òzž%€… €…)ž%€… €…)$ €¬‚ò  ‚ò{ž%€† €†/ž%€† €†/$€¬‚ó‚ó|ž%€† €†/ž%€† €†/$€¬‚ó ‚ó}ž%€† €†/ž%€† €†/$ €¬‚ó  ‚ó~ž%€‡ €‡7ž%€‡ €‡7$€¬‚ô‚ôž%€‡ €‡7ž%€‡ €‡7$€¬‚ô ‚ô€ž%€‡ €‡7ž%€‡ €‡7$ €¬‚ô  ‚ôž%€ˆ €ˆ2ž%€ˆ €ˆ2$€¬‚õ‚õ‚ž%€ˆ €ˆ2ž%€ˆ €ˆ2$€¬‚õ ‚õƒž%€ˆ €ˆ2ž%€ˆ €ˆ2$ €¬‚õ  ‚õ„ž%€‰ €‰#ž%€‰ €‰#$€¬‚ö‚ö…ž%€‰ €‰#ž%€‰ €‰#$€¬‚ö ‚ö†ž%€‰ €‰#ž%€‰ €‰#$ €¬‚ö  ‚ö‡ž%€Š €Š#ž%€Š €Š#$€¬‚÷‚÷ˆž%€Š €Š#ž%€Š €Š#$€¬‚÷ ‚÷‰ž%€Š €Š#ž%€Š €Š#$ €¬‚÷  ‚÷Šž%€‹ €‹*ž%€‹ €‹*$€¬‚ø‚ø‹ž%€‹ €‹*ž%€‹ €‹*$€¬‚ø ‚øŒž%€‹ €‹*ž%€‹ €‹*$ €¬‚ø  ‚øž%€€ž%€€ø€¬‚ù‚ùŽž%€€ž%€€ø€¬‚ù ‚ùž%€€ž%€€ø €¬‚ù  ‚ù8ž%€ €ž(† †ø ÿ¤@‚ù‚ù‘žNž%€ €ž(†‘ †‘øÿ¤@‚ù‚ù’ž%€’€’ž%€’€’ù€¬‚ú‚ú“ž%€’€’ž%€’€’ù€¬‚ú ‚ú”ž%€’€’ž%€’€’ù €¬‚ú  ‚ú•ž%€¢€¢ ž%€¢€¢ ú€¬‚û‚û–ž%€¢€¢ ž%€¢€¢ ú€¬‚û ‚û—ž%€¢€¢ ž%€¢€¢ ú €¬‚û  ‚û˜ž%€¨€¨ž%€¨€¨Ò€¬‚› ‚›™ž%€¨€¨ž%€¨€¨ÒÒ€¬‚›Ò Ò‚›šž%€¨€¨ž%€¨€¨Ò€¬‚›‚››ž%€¨€¨ž%€¨€¨Ò€¬‚›‚›œž%€¨€¨ž%€¨€¨Ò€¬‚› ‚›ž%€¨€¨ž%€¨€¨Ò €¬‚›  ‚›žžQž%€­ €­ž(†s †sÒ ÿ¤@‚›‚›Ÿž%€¯€¯!ž%€¯€¯!û€¬‚ü ‚ü ž%€¯€¯!ž%€¯€¯!ûû€¬‚üû û‚ü¡ž%€¯€¯!ž%€¯€¯!û€¬‚ü‚ü¢ž%€¯€¯!ž%€¯€¯!û€¬‚ü‚ü£ž%€¯€¯!ž%€¯€¯!û€¬‚ü ‚ü¤ž%€¯€¯!ž%€¯€¯!û €¬‚ü  ‚ü¥ž%€³€³ž%€³€³ü€¬‚ý ‚ý¦ž%€³€³ž%€³€³üü€¬‚ýü ü‚ý§ž%€³€³ž%€³€³ü€¬‚ý‚ý¨ž%€³€³ž%€³€³ü€¬‚ý‚ý©ž%€³€³ž%€³€³ü€¬‚ý ‚ýªž%€³€³ž%€³€³ü €¬‚ý  ‚ý«žTž%€· €·ž(†{ †{ü€¢ÿ¤@‚ý‚ý¬žUž%€¸ €¸ž(† †üÿ¤@‚ý‚ý­ž%€»€»ž%€»€»Ï€¬‚—‚—®ž%€»€»ž%€»€»Ï€¬‚— ‚—¯ž%€»€»ž%€»€»Ï €¬‚—  ‚—°ššž%66ž(‡/‡/   Ïÿ¤@‚—5ž%666:ž%6A6R”Wž%6[6m™šž%6x6€…žVž%6€Ž6€¥‚—±žWž%7 7ž(‡¾‡¾ Ïÿ¤@‚—‚—²žXž%8 8ž(‡è‡è#Ï ÿ¤@‚—‚—³žYž%9 9ž(‡ñ‡ñ"Ï ÿ¤@‚—‚—´žZž%: :ž(‡ú‡ú#Ï ÿ¤@‚—‚—µž[ž%; ;&ž(ˆˆ0Ï ÿ¤@‚—‚—¶ž\ž%< <)ž(ˆˆ3Ï ÿ¤@‚—‚—·ž]ž%= =ž(ˆˆ(Ïÿ¤@‚—‚—¸ž^ž%??.ž(ˆ"ˆ".ýÿ¤@‚—‚—¹ž`ž%F Fž(ˆü ˆü!¸ÿ¤@‚y‚yºžaž%G G*ž(ˆý ˆý,¸ ÿ¤@‚y‚y»žbž%H Hž(ˆþ ˆþ¸ ÿ¤@‚y‚y¼žcž%I Iž(ˆÿ ˆÿ¸€—ÿ¤@‚y‚y½ždž%J Jž(‰ ‰¸ÿ¤@‚y‚y¾žež%K Kž(‰ ‰!¸ ÿ¤@‚y‚y¿žfž%L L4ž(‰ ‰6¸ ÿ¤@‚y‚yÀžgž%M Mž(‰ ‰¸ÿ¤@‚y‚yÁžhž%N Nž(‰ ‰¸ ÿ¤@‚y‚yžiž%O Ož(‰ ‰¸ÿ¤@‚y‚yÞjž%P Pž(‰ ‰¸ ÿ¤@‚y‚yÄžkž%Q Q ž(‰ ‰"¸ ÿ¤@‚y‚yÅžlž%R Rž(‰ ‰¸ÿ¤@‚y‚yÆžmž%S Sž(‰ ‰ ¸ÿ¤@‚y‚yÇžnž%T Tž(‰ ‰ ¸ ÿ¤@‚y‚yÈžož%U Už(‰ ‰ ¸ ÿ¤@‚y‚yÉžpž%V V&ž(‰ ‰ (¸ ÿ¤@‚y‚yÊžqž%X Xž(‰ ‰¸ ÿ¤@‚yžr‚yËžsž%Y Y(ž(‰ ‰*¸ÿ¤@‚y‚yÌžtž%Z Zž(‰ ‰¸ÿ¤@‚y‚yÍžuž%[ [ž(‰ ‰¸ ÿ¤@‚y‚yΞvž%] ]ž(‰ ‰¸øÿ¤@‚y‚yÏžwž%^ ^ž(‰ ‰¸ ÿ¤@‚y‚yОxž%_ _ž(‰ ‰¸ÿ¤@‚y‚yÑžyž%` `ž(‰ ‰¸ÿ¤@‚y‚yÒžzž%a až(‰ ‰¸ ÿ¤@‚y‚yÓž{ž%b bž(‰ ‰¸ÿ¤@‚y‚yÔž|ž%c cž(‰ ‰¸ÿ¤@‚y‚yÕž}ž%d dž(‰ ‰¸ÿ¤@‚y‚yÖž~ž%e ež(‰ ‰ ¸ÿ¤@‚y‚yמž%f fž(‰ ‰¸ÿ¤@‚y‚yØž€ž%g gž(‰ ‰ ¸ ÿ¤@‚y‚yÙžž%h hž(‰! ‰!¸ ÿ¤@‚y‚yÚž‚ž%i i#ž(‰" ‰"%¸ ÿ¤@‚y‚yÛžƒž%j jž(‰# ‰#¸ÿ¤@‚y‚yÜž„ž%k k*ž(‰$ ‰$,¸ÿ¤@‚y‚yÝž…ž%l l*ž(‰% ‰%,¸ÿ¤@‚y‚yÞž†ž%m m.ž(‰& ‰&0¸ÿ¤@‚y‚yßž‡ž%n nž(‰' ‰'¸þÿ¤@‚y‚yàž‰ž%o ož(‰( ‰(¸ ÿ¤@‚y‚yដž%p pž(‰) ‰)¸ ÿ¤@‚y‚yâž‹ž%q qž(‰* ‰*¸Òÿ¤@‚y‚y㞌ž%r rž(‰+ ‰+¸ ÿ¤@‚y‚yäžž%s s%ž(‰, ‰,'¸ ÿ¤@‚y‚y垎ž%t tž(‰- ‰-¸ ÿ¤@‚y‚yæžž%u už(‰. ‰.¸ÿ¤@‚y‚yçžž%v vž(‰/ ‰/¸ ÿ¤@‚y‚yèž‘ž%w wž(‰0 ‰0¸ ÿ¤@‚y‚yéž’ž%x x"ž(‰1 ‰1$¸ ÿ¤@‚y‚yêž“ž%y yž(‰2 ‰2¸ÿ¤@‚y‚yëž”ž%z zž(‰3 ‰3¸ ÿ¤@‚y‚yìž•ž%{ {ž(‰5 ‰5¸ ÿ¤@‚y‚yíž–ž%| | ž(‰6 ‰6"¸ ÿ¤@‚y‚yîž—ž%} }ž(‰7 ‰7¸ ÿ¤@‚y‚yž%~ ~ž(‰8 ‰8¸ ÿ¤@‚y‚y𞙞% ž(‰9 ‰9¸ÿ¤@‚y‚yñžšž%€ €ž(‰: ‰:¸ÿ¤@‚y‚yòž›ž% ž(‰; ‰;¸ ÿ¤@‚y‚y󞜞%‚ ‚ž(‰< ‰ ‰>¸ÿ¤@‚y‚yöžŸž%… …ž(‰? ‰?¸ ÿ¤@‚y‚y÷ž ž%† †ž(‰@ ‰@¸üÿ¤@‚y‚yøž¡ž%‡ ‡ž(‰A ‰A¸ÿ¤@‚y‚yùž¢ž%ˆ ˆž(‰B ‰B¸ ÿ¤@‚y‚yúž£ž%‰ ‰ž(‰C ‰C!¸ÿ¤@‚y‚yûž¤ž%Š Šž(‰D ‰D¸ ÿ¤@‚y‚yüž¥ž%‹ ‹(ž(‰E ‰E*¸ ÿ¤@‚y‚yýž¦ž%Œ Œ"ž(‰F ‰F$¸ ÿ¤@‚y‚yþž§ž% ž(‰G ‰G!¸ ÿ¤@‚y‚yÿž¨ž%Ž Žž(‰H ‰H¸ ÿ¤@‚y‚y‘ž©ž% *ž(‰I ‰I,¸ ÿ¤@‚y‚y‘žªž% ž(‰J ‰J"¸ ÿ¤@‚y‚y‘ž«ž%‘ ‘&ž(‰K ‰K(¸ÿ¤@‚y‚y‘ž¬ž%’ ’ž(‰L ‰L¸ÿ¤@‚y‚y‘ž­ž%“ “ž(‰M ‰M¸ÿ¤@‚y‚y‘ž®ž%” ”ž(‰N ‰N!¸ ÿ¤@‚y‚y‘ž¯ž%• •ž(‰O ‰O¸ÿ¤@‚y‚y‘ž°ž%– –ž(‰P ‰P¸ ÿ¤@‚y‚y‘ž±ž%— —ž(‰Q ‰Q¸öÿ¤@‚y‚y‘ ž²ž%˜ ˜ ž(‰R ‰R"¸ ÿ¤@‚y‚y‘ ž³ž%™ ™ž(‰S ‰S¸ ÿ¤@‚y‚y‘ ž´ž%š šž(‰T ‰T¸ ÿ¤@‚y‚y‘ žµž%œ œž(‰U ‰U¸ÿ¤@‚y‚y‘ ž¶ž% ž(‰V ‰V¸€—ÿ¤@‚y‚y‘ž·ž%¢ ¢ž(‰[ ‰[¸ ÿ¤@‚y‚y‘ž¸ž%£ £ž(‰\ ‰\¸ ÿ¤@‚y‚y‘ž¹ž%¤ ¤ž(‰] ‰]¸ ÿ¤@‚y‚y‘žºž%¥ ¥ž(‰^ ‰^¸ ÿ¤@‚y‚y‘ž»ž%¦ ¦ž(‰_ ‰_¸ ÿ¤@‚y‚y‘ž¼ž%§ §ž(‰` ‰`¸dÿ¤@‚y‚y‘ž½ž%¨ ¨ž(‰a ‰a¸ ÿ¤@‚y‚y‘ž¾ž%© ©ž(‰b ‰b¸ÿ¤@‚y‚y‘ž¿ž%ª ªž(‰c ‰c¸ ÿ¤@‚y‚y‘žÀž%« «#ž(‰d ‰d%¸ÿ¤@‚y‚y‘žÁž%¬ ¬ž(‰e ‰e¸ ÿ¤@‚y‚y‘žÂž%­ ­ž(‰f ‰f¸ ÿ¤@‚y‚y‘žÃž%® ®ž(‰g ‰g!¸ ÿ¤@‚y‚y‘žÄž%¯ ¯$ž(‰h ‰h&¸ ÿ¤@‚y‚y‘žÅž%± ±$ž(‰j ‰j&¸ ÿ¤@‚y‚y‘žÆž%³ ³ž(‰l ‰l¸ ÿ¤@‚y‚y‘žÇž%´ ´#ž(‰m ‰m%¸ ÿ¤@‚y‚y‘žÈž%µ µž(‰n ‰n¸ ÿ¤@‚y‚y‘ žÉž%¶ ¶ž(‰o ‰o¸ ÿ¤@‚y‚y‘!žÊž%¹ ¹ž(‰p ‰p¸ ÿ¤@‚yžË‚y‘"žÌž%º º"ž(‰q ‰q$¸ ÿ¤@‚y‚y‘#žÍž%½ ½*ž(‰š‰š3¸ ÿ¤@‚y‚y‘$žÎž%¾ ¾ž(‰~‰~¸ÿ¤@‚y‚y‘%žÏž%Á Á$ž(‰ ‰ -¸ ÿ¤@‚yžÐ‚y‘&žÑž%à Ã&ž(‰y‰y/¸ ÿ¤@‚y˜ýž%Ã)Ã4‚y‘'žÒž%Æ Æž(Š Š %¸ ÿ¤@‚yžÓ‚y‘(žÔž%È Èž(‰Ê‰Ê$¸ÿ¤@‚yžÕ‚y‘)‚óž%ÉÉž(‰r‰rÏ ¸ÿ¤@‚yžÖž%É-É5‚y‘*ž×ž%Ë Ë ž(ˆù ˆù"¸×ÿ¤@‚y‚y‘+žØž%Ì Ìž(ˆú ˆú ¸ ÿ¤@‚y‚y‘,žÙž%ë ë!ž(Œ Œ /ÿùÿ¤@ƒƒ‘-žÛž%íí1ž(ŒBŒB1¸ùùúÿ¤@ƒƒ‘.žÜž%îî+ž(ŒoŒo+¸ùúÿÿ¤@ƒƒ‘/˜Mž%óóž(ŒáŒá¸‚ÿ¤@ƒƒ‘0žÞž%ôô'ž(ŒâŒâ'Ï‚ÿ¤@ƒƒ‘1žßž%ú úž(  »»ÿ¤@‚|‚|‘2žàž%û ûž(»íÿ¤@‚|‚|‘3žáž%ü ü ž(??*»Óÿ¤@‚|‚|‘4žâž%ý ýž(II'»Vÿ¤@‚|‚|‘5žãž%ÿ ÿž(EE)»Vÿ¤@‚|žä‚|‘6žåž%‚ ‚ž(:: » íÿ¤@‚|‚|‘7žæž%‚ ‚ž(**#»  íÿ¤@‚|žçž%‚-‚7‚|‘8žèž%‚ ‚!ž(gg+» À€áÿ¤@‚|‚|‘9žéž%‚ ‚%ž(¹¹/»Ãÿ¤@‚|‚|‘:žêž%‚ ‚ž(Ž Ž !»ÿ¤@‚|‚|‘;žëž%‚ ‚ &ž(áá0»øû‚uùÿ¤@‚|žì‚|‘<žíž%‚ ‚ #ž(  -»øûùÿ¤@‚|žî‚|‘=žïž%‚ ‚;ž(ÐÐE»Àÿ¤@‚|žð‚|‘>žñž%‚ ‚1ž(ÇÇ;»Ûÿ¤@‚|˜úž%‚4‚@žò‚|‘?žóž%‚ ‚-ž(vv7»úÿ¤@‚|žô‚|‘@žõž%‚ ‚$ž(޾޾.» ÿ¤@‚|‚|‘Ažöž%‚‚)ž()‚ùù»ÿ¤@‚|‚|‘Bž÷ž%‚‚,ž(€€,‚»ùú»ÿ¤@‚|‚|‘Cžøž%‚‚ ž( ‚»ÿ¤@‚|‚|‘Džùž%‚‚ž(ŒyŒyé ÿ¤@‚í‘Ežúž%‚ ‚ ž(ŒzŒzé ÿ¤@‚í‘Fžûž%‚!‚!"ž(Œ}Œ}"é ÿ¤@‚í‘Gžüž%‚%‚%ž(ŒšŒš¸FVéÿ¤@‚í‘Hžýž%‚&‚&ž(Œ²Œ²Vféÿ¤@‚í‘Ižþž%‚)‚)ž(ˆdˆdSÿ¤@‚í‘Jžÿž%‚+‚+ž(…À…Àÿ¤@‚í‘KŸž%‚1‚1ž(¥¥»T TíÓÿ¤@‚í‘LŸž%‚7‚7 ž(³³ ƒAž%‚8‚8„ƒ ƒƒ ƒƒ σƒÿ¤@Až%‚8‚8‚í‘MŸž%‚=‚=ž(ŠÑŠÑ€òÿ¤@‚í‘NŸž%‚>‚>*ž(ŠõŠõ* €ò——ÿ¤@Ÿž%‚>-‚>6‚í‘OŸž%‚@‚@ž(‘$‘$¸¸ÿ¤@‚í‘PŸž%‚A‚A(ž(‘-‘-(¸¸ÿ¤@‚í‘QŸž%‚B‚B$ž(‘6‘6$¸ùúÿ¤@‚í‘RŸž%‚H‚H0ž(…Î…Î0ÿ¤@‚í‘SŸ ž%‚M‚Mž(‹ð‹ð¸” — ÿ¤@ž4ž%‚MW‚Mf‚í‘TŸ ž%‚S‚Sž(’<’< ¸»Tÿ¤@‚í‘UŸ ž%‚W ‚Wž(’n ’nºZÿ¤@‚{‚{‘V‡Õž%‚X ‚Xž(’q ’qºVÿ¤@‚{‚{‘WŸ ž%‚Y ‚Yž(’o ’o ºTÿ¤@‚{‚{‘XŸ ž%‚Z ‚Z,ž(’s ’s.ºTºÿ¤@‚{‚{‘YŸž%‚[ ‚[ž(’p ’pºTÿ¤@‚{‚{‘ZŸž%‚]‚]ž(’x’x ¸»ZTºÿ¤@‚í‘[Ÿž%‚`‚`ž(’¹’¹ ¸»XWºuTY]ºÿ¤@‚í‘\Ÿž%‚d‚d!ž(“:“:!ƒžAž%‚e‚e„TYƒžºTYƒžºÿ¤@Až%‚e‚e‚í‘]Ÿž%‚h‚h!ž(“O“O!]ºº€³ÿ¤@‚í‘^Ÿž%‚l‚lž(“\“\ ¸»XººY€³Tÿ¤@‚í‘_Ÿž%‚p‚p+ž(“I“I+ ¸»XWºuTY]ºÿ¤@‚í‘`Ÿž%‚t‚tž(“ã“ãÐÿ¤@‚í‘aŸž%‚u‚už(йй  ÿ¤@‚í‘bŸž%‚v‚vž(нн   ÿ¤@‚í‘cŸž%‚x‚x1ž(†.†.1×ÿ¤@‚í‘dž%‚}‚}ž%‚}‚}‚€¬ƒ ƒ‘ež%‚}‚}ž%‚}‚}‚‚€¬ƒ‚ ‚ƒ‘fž%‚}‚}ž%‚}‚}‚€¬ƒƒ‘gž%‚}‚}ž%‚}‚}‚€¬ƒƒ‘hž%‚}‚}ž%‚}‚}‚€¬ƒ ƒ‘iž%‚}‚}ž%‚}‚}‚ €¬ƒ  ƒ‘jŸž%‚‘‚‘,ž(’(’(,‚”¼ÿ¤@‚}ŒZž%‚‘/‚‘7Œ[ž%‚‘C‚‘IŸž%‚‘U‚‘d˜üž%‚‘s‚‘€…‚}‘kŸž%‚’‚’-ž(’.’.-¸ ‚ ”¼ÿ¤@‚}˜øž%‚’0‚’8Ÿž%‚’\‚’kŸž%‚’z‚’€—˜üž%‚’€¡‚’€³‚}‚Sž5ž%QQ‚SöŸŸž%RRöŸŸž%SSöŸ Ÿ ž%TTöŸ!Ÿ!ž%UU‚íž5ö‚íž5öö‚íž5ö‚íž5ö‚íž5ö‚íž5ö  ö˜õTTŸŸll‚T™½ž%ee‚TÑŸ"Ÿ"ž%ffÑŸ#Ÿ#ž%gg ‚홽т홽ÑÑ‚í™½Ñ‚í™½Ñ‚í™½Ñ‚í™½Ñ  јõUUŸŸll‚UŸ$ž%kk‚U€ó êž%ll‚Ÿ%Ÿ%ž%llMêž%mm#‚Ÿ&Ÿ&ž%mmêž%nn‚Ÿ'Ÿ'ž%nnÑêž%oo+‚™½™½ž%ooêž%pp#‚Ÿ(Ÿ(ž%ppÑêž%qq9‚Ÿ)Ÿ)ž%qqêž%rr#‚Ÿ*Ÿ*ž%rr€ó êž%ss‚Ÿ+Ÿ+ž%ssêž%tt%‚Ÿ,Ÿ,ž%ttêž%uu)‚Ÿ-Ÿ-ž%uuÑêž%v!v?‚Ÿ.Ÿ.ž%vvêž%ww!‚Ÿ/Ÿ/ž%wwÐêž%xx5‚Ÿ0Ÿ0ž%xx ¡ž%yy+¢ž%y0yJ‚Ÿ1Ÿ1ž%yyŸ2˜õVVŸŸll‚VžCž%zz‚V¡ž%||¢ž%||%‚£ž%|(|2ƒ$¥ž%|5|@¦ž%|C|P÷žCžCž%||˜õWWŸŸll‚W™¹ž%}}‚W¡ž%}-}3÷¢ž%}6}IП4Ÿ4ž%}}(÷êž%}^}qП5Ÿ5ž%}L}ZŸ6˜õXXŸŸll‚XžDž%€ƒ €ƒ‚X‚ížD$‚ížD$‚ížD$  $˜õYYŸŸll@ž%€ƒ2€ƒ8 Bž%€ƒ;€ƒ@‚YžEž%€„ €„‚Y‚ížE$‚ížE$‚ížE$  $˜õZZŸŸll@ž%€„.€„4Bž%€„]€„c Cž%€„f€„k‚ZžFž%€… €…)‚Z‚ížF$‚ížF$‚ížF$  $˜õ[[ŸŸll@ž%€…-€…3 Bž%€…6€…;‚[žGž%€† €†/‚[‚ížG$‚ížG$‚ížG$  $˜õ\\ŸŸll@ž%€†3€†9 Bž%€†<€†A‚\žHž%€‡ €‡7‚\‚ížH$‚ížH$‚ížH$  $˜õ]]ŸŸll@ž%€‡;€‡ABž%€‡D€‡J Cž%€‡M€‡R‚]žIž%€ˆ €ˆ2‚]‚ížI$‚ížI$‚ížI$  $˜õ^^ŸŸll@ž%€ˆ6€ˆ< Bž%€ˆ?€ˆD‚^žJž%€‰ €‰#‚^‚ížJ$‚ížJ$‚ížJ$  $˜õ__ŸŸll@ž%€‰'€‰- Bž%€‰0€‰5‚_žKž%€Š €Š#‚_‚ížK$‚ížK$‚ížK$  $˜õ``ŸŸll$@ž%€Š4€Š<$Bž%€ŠJ€ŠR Cž%€ŠU€ŠZ‚`žLž%€‹ €‹*‚`‚ížL$‚ížL$‚ížL$  $˜õaaŸŸll @ž%€‹.€‹3‚ažMž%€€‚a ¡ž%€Ž€Ž ¢ž%€Ž#€Ž)øžMžMž%€Ž€Ž‚ížMø‚ížMø‚ížMø 8‚ížM8ø žN‚ížMžNø ˜õbbŸŸll‚bžOž%€’€’‚bøŸ7ž%€”€”Ÿ8Ÿ9ž%€–€–Ÿ:‡”Lž%€˜€˜Ÿ;”hž%€š€šŸ<”jž%€œ€œ Ÿ= Ÿ>ž%€ž€ž Ÿ?€óÀŸ@ž%€ € ‚ížOù‚ížOù‚ížOù  ˜õccŸŸll‚cžPž%€¢€¢ ‚c¡ž%€¢B€¢Hø¢ž%€¢K€¢aúžPžPž%€¢#€¢>‚ížPú‚ížPú‚ížPú  ˜õddŸŸll‚dŸAž%€¥€¥‚d¡ž%€¥@€¥Fø¢ž%€¥I€¥_£ž%€¥b€¥}‚ŸAŸAž%€¥"€¥<˜õeeŸŸll‚e™Âž%€¨€¨‚eÒŸBŸBž%€©€© ÒŸCŸCž%€ª€ªÒŸDŸDž%€«€« ÒŽ$Ž$ž%€¬€¬ ‚í™ÂÒ‚í™ÂÒÒ‚í™ÂÒ‚í™ÂÒ‚í™ÂÒ‚í™ÂÒ žQ‚í™ÂžQÒ  Ò˜õffŸŸll‚fžRž%€¯€¯!‚fûŸEŸEž%€°€°ûŸFŸFž%€±€±‚ížRû‚ížRûû‚ížRû‚ížRû‚ížRû‚ížRû  û˜õggŸŸll‚gžSž%€³€³‚gêž%€´€´üŸGŸGž%€´€´êž%€µ€µüŸHŸHž%€µ€µüŸIŸIž%€¶€¶‚ížSü‚ížSüü‚ížSü‚ížSü‚ížSü‚ížSü žT‚ížSžTü€¢žU‚ížSžUü ü˜õhhŸŸll‚h™·ž%€»€»‚hoŸJž%€¼€¼" ŸKž%€½€½- ŸLž%€¾€¾€—ŸMž%€¿€¿”Wž%€À€À  ŸNž%€Á€Á" ŸOž%€Â€Â75ž%€Ã€Ã ˆæž%€Ä€ÄŸPž%€Å€Å ŸQž%€Æ€Æ ŸRž%€Ç€Ç#ŸSž%€È€ÈŸTž%€É€É ŸUž%€Ê€Ê ŸVž%€Ë€Ëˆ‡5ž%€Ì€Ì# ŸWž%€Í€Í) ŸXž%€Î€Î3 ŸYž%€Ð€ÐŸZŸ[ž%€Ñ€Ñ+ Ÿ\ž%€Ó€ÓŸ]øŸ^ž%€Õ€ÕúŸ_ž%€Ö€Ö' :ž%€×€×Ÿ`ž%€Ø€Ø Ÿaž%€Ù€ÙŸbž%€Ú€ÚŸcž%€Û€Û Ÿdž%€Ü€ÜŸež%€Ý€ÝŸfž%€Þ€ÞŸgž%€ß€ßŸhž%€à€à!Ÿiž%€á€á  ›‚ž%€â€â Ÿjž%€ã€ã Ÿkž%€ä€ä&š¡ž%€å€åŸlž%€æ€æ-Ÿmž%€ç€ç-Ÿnž%€è€è1þŸož%€é€é Ÿpž%€ê€ê Ÿqž%€ë€ëÒ‹ž%€ì€ì Ÿrž%€í€í ™˜ž%€î€î( Ÿsž%€ï€ïŸtž%€ð€ð Ÿuž%€ñ€ñ Ÿvž%€ò€ò Ÿwž%€ó€ó%Ÿxž%€ô€ô Ÿyž%€õ€õ Ÿzž%€ö€ö Ÿ{ž%€÷€÷# Ÿ|ž%€ø€ø Ÿ}ž%€ù€ùŸ~ž%€ú€ú Ÿž%€û€û Ÿ€ž%€ü€ü ™‘ž%€ý€ý"Ÿž%€þ€þŸ‚ž%€ÿ€ÿ Ÿƒž%ü”iž%®ž% Ÿ„ž%Ÿ…ž%" Ÿ†ž% Ÿ‡ž%+ Ÿˆž%% Ÿ‰ž%" ŸŠž%   Ÿ‹ž%  - ŸŒž%  #Ÿž%  )ŸŽž%  Ÿž% Ÿž%"Ÿ‘ž% ž;ž%öž=ž% šž%# Ÿ’ž% Ÿ“ž%Ÿ”ž% 2ž%€—Ÿ•ž% Ÿ–ž% Ÿ—ž% Ÿ˜ž% Ÿ™ž%   Ÿšž%!! Ÿ›ž%""dŸœž%## Ÿž%$$Ÿžž%%%ŸŸž%&&& Ÿ ž%'' Ÿ¡ž%(( Ÿ¢ž%))" Ÿ£ž%**' Ÿ¤ž%,,' Ÿ¥ž%.. ›„ž%//& ™žž%00 Ÿ¦ž%11 ™šž%44Ÿ§ žVž%55‚í™·Ï‚í™·Ï‚í™·Ï šš‚í™·šš   ÏžW‚í™·žWÏžX‚í™·žXÏ žY‚í™·žYÏ žZ‚í™·žZÏ ž[‚í™·ž[Ï ž\‚í™·ž\Ï ž]‚í™·ž]Ïž^‚í™·ž^ý ˜õiiŸŸll‚i˜öž%EE ‚i€Ž€‚Ibsž`‚í˜öž`¸ža‚í˜öža¸ žb‚í˜öžb¸ žc‚í˜öžc¸€—žd‚í˜öžd¸že‚í˜öže¸ žf‚í˜öžf¸ žg‚í˜öžg¸žh‚í˜öžh¸ ži‚í˜öži¸žj‚í˜öžj¸ žk‚í˜öžk¸ žl‚í˜öžl¸žm‚í˜öžm¸žn‚í˜öžn¸ žo‚í˜öžo¸ žp‚í˜öžp¸ žq‚í˜öžq¸ žs‚í˜öžs¸žt‚í˜öžt¸žu‚í˜öžu¸ žv‚í˜öžv¸øžw‚í˜öžw¸ žx‚í˜öžx¸žy‚í˜öžy¸žz‚í˜öžz¸ ž{‚í˜öž{¸ž|‚í˜öž|¸ž}‚í˜öž}¸ž~‚í˜öž~¸ž‚í˜öž¸ž€‚í˜öž€¸ ž‚í˜öž¸ ž‚‚í˜öž‚¸ žƒ‚í˜öžƒ¸ž„‚í˜öž„¸ž…‚í˜öž…¸ž†‚í˜öž†¸ž‡‚í˜öž‡¸þž‰‚í˜öž‰¸ žŠ‚í˜öžŠ¸ ž‹‚í˜öž‹¸ÒžŒ‚í˜öžŒ¸ ž‚í˜öž¸ žŽ‚í˜öžŽ¸ ž‚í˜öž¸ž‚í˜öž¸ ž‘‚í˜öž‘¸ ž’‚í˜öž’¸ ž“‚í˜öž“¸ž”‚í˜öž”¸ ž•‚í˜öž•¸ ž–‚í˜öž–¸ ž—‚í˜öž—¸ ž˜‚í˜öž˜¸ ž™‚í˜öž™¸žš‚í˜öžš¸ž›‚í˜öž›¸ žœ‚í˜öžœ¸ ž‚í˜öž¸žž‚í˜öžž¸žŸ‚í˜öžŸ¸ ž ‚í˜öž ¸üž¡‚í˜öž¡¸ž¢‚í˜öž¢¸ ž£‚í˜öž£¸ž¤‚í˜öž¤¸ ž¥‚í˜öž¥¸ ž¦‚í˜öž¦¸ ž§‚í˜öž§¸ ž¨‚í˜öž¨¸ ž©‚í˜öž©¸ žª‚í˜öžª¸ ž«‚í˜öž«¸ž¬‚í˜öž¬¸ž­‚í˜öž­¸ž®‚í˜öž®¸ ž¯‚í˜öž¯¸ž°‚í˜öž°¸ ž±‚í˜öž±¸öž²‚í˜öž²¸ ž³‚í˜öž³¸ ž´‚í˜öž´¸ žµ‚í˜öžµ¸ž¶‚í˜öž¶¸€—ž·‚í˜öž·¸ ž¸‚í˜öž¸¸ ž¹‚í˜öž¹¸ žº‚í˜öžº¸ ž»‚í˜öž»¸ ž¼‚í˜öž¼¸dž½‚í˜öž½¸ ž¾‚í˜öž¾¸ž¿‚í˜öž¿¸ žÀ‚í˜öžÀ¸žÁ‚í˜öžÁ¸ žÂ‚í˜öžÂ¸ žÃ‚í˜öžÃ¸ žÄ‚í˜öžÄ¸ žÅ‚í˜öžÅ¸ žÆ‚í˜öžÆ¸ žÇ‚í˜öžÇ¸ žÈ‚í˜öžÈ¸ žÉ‚í˜öžÉ¸ žÊ‚í˜öžÊ¸ žÌ‚í˜öžÌ¸ žÍ‚í˜öžÍ¸ žÎ‚í˜öžÎ¸žÏ‚í˜öžÏ¸ žÑ‚í˜öžÑ¸ žÒ‚í˜öžÒ¸ žÔ‚í˜öžÔ¸‚ó‚í˜ö‚óÏ ¸ž×‚í˜öž×¸מØ‚í˜öžØ¸ ˜õjjŸŸll‚jºž%ÒÒ‚jŠëž%ÓÓSŸ¨ž%ÔÔÛŸ©ž%ÖÖ Šõž%×ןªž%ØØ$ÀŸ«ž%ÚÚFž%ÛÛ˜õkkŸŸll‚k™Åž%ÝÝ‚kFž%ÞÞVŸ¬ž%ßߟ­ž%àà Ÿ®ž%áá* Šõž%ã㟯ž%ää€íƒfŸ°ž%ææ˜õllŸŸll‚lžÚž%êê‚l€Ž€‚IbžÙ‚ížÚžÙÿùžÛ‚ížÚžÛ¸ùùúžÜ‚ížÚžÜ¸ùúÿ˜õmmŸŸll‚mžÝž%òò‚m€Ž€‚Ib˜M‚ížÝ˜M¸‚žÞ‚ížÝžÞÏ‚˜õnnŸŸll‚n™ž%÷÷‚n€Ž€‚Ibžß‚홞߻»žà‚홞à»ížá‚홞á»Óžâ‚홞â»Vžã‚홞ã»Vžå‚í™žå» ížæ‚í™žæ»  ížè‚í™žè» À€ážé‚홞é»Þê‚홞껞ë‚í™žë»øû‚uùží‚í™ží»øûùžï‚홞ï»Àžñ‚홞ñ»Ûžó‚홞ó»úžõ‚홞õ» žö‚홞ö‚ùù»ž÷‚홞÷‚»ùú»žø‚홞ø‚»$˜õooŸŸll‚o™ž%‚V‚V ‚o€Ž€‚IbŸ ‚홟 ºZ‡Õ‚홇պVŸ ‚홟 ºTŸ ‚홟 ºTºŸ‚홟ºT˜õppŸŸll‚pŸž%‚}‚}‚p‚Ÿ±Ÿ±ž%‚~‚~‚Ÿ²Ÿ²ž%‚‚‚Ÿ³Ÿ³ž%‚€‚€ ‚ퟂ‚ퟂ‚‚ퟂ‚ퟂ‚ퟂ‚ퟂ  ‚˜õqqŸŸll‚q™ž%‚‚‚‚‚q Ÿ´ž%‚„‚„ŸµùŸ¶ž%‚†‚†Ÿ·úèž%‚ˆ‚ˆŸ¸Ÿ¹ž%‚Š‚ŠŸº Ÿ»ž%‚Œ‚ŒŸ¼ Ÿ½ž%‚Ž‚ŽŸ¾ Ÿ¿ž%‚‚ŸÀŸ‚홟‚”¼Ÿ‚홟¸ ‚ ”¼˜õrrŸŸll‚rŸÁŸÂ*1‚rŸÃssŸŸly ‘lŸÄŸÂŸÅ‚¤‚¤ ,ÿ¤@ƒ‘mŸÆŸÂ.ŸÅƒƒ., ÿ¤@ƒ‘nŸÇŸÂ-ŸÅƒ)ƒ)-, ÿ¤@ƒ‘oŸÈŸÂ+ŸÅƒ7ƒ7+, ÿ¤@ƒ‘pŸÉŸÂ"ŸÅƒ`ƒ`"#  ÿ¤@ƒ‘qŸÊŸÂ.ŸÅƒiƒi.# ÿ¤@ƒ‘rŸËŸÂ  !ŸÅƒpƒp!#  ÿ¤@ƒ‘sŸÌŸÂ!!/ŸÅƒzƒz/#   ÿ¤@ƒ‘tŸÍŸÂ##&ŸÅƒƒƒƒ&,oÿ¤@ƒ‘uŸÎŸÂ$$2ŸÅƒ¤ƒ¤2,oÿ¤@ƒ‘vŸÏŸÂ%%%ŸÅƒíƒí%,oÿ¤@ƒ‘wŸÐŸÂ&&3ŸÅƒ¾ƒ¾3,oÿ¤@ƒ‘xŸÑŸÂ**ŸÅ„„! ÿ¤@ŸÒƒ‚s€ÅŸÓ * -‚sŸÔªtÙŸÀy´‘yŸÕŸÓ  ŸÓ  €¤ŸÖƒ‘zŸÓ55ŸÓ55‚‚´ƒƒ‘{ŸØŸÓB BŸÓB B‚ €¤ƒŒÖŸÓBBƒ‘|ŸÙŸÓF FŸÓF F‚ €¤ƒŒ™ŸÓFFŒÖŸÓF F#ƒ‘}ŸÚŸÓJ JŸÓJ J‚ €¤ƒŸÛŸÓJJ%ƒ‘~ŸÜŸÓ88ŸÓ88‚  ‚¼ƒŸÝŸÓ88ŸÞŸÓ88ƒ‘ŸßŸÓ?? ŸÓ?? ‚‚¼ƒƒ‘€ŸÓ^^ ŸÓ^^ g€¬€– €–‘ŸÓ^^ ŸÓ^^ gg€¬€–gƒŸA€Ž,5„€ƒŸ€–‘‚ŸÓ^^ ŸÓ^^ g€¬€–€€€–‘ƒŸÓ^^ ŸÓ^^ g€¬€–€–‘„ŸÓ^^ ŸÓ^^ g€¬€– €€–‘…ŸÓ^^ ŸÓ^^ g €¬€– €€ €–‘†‚ïŸÓ``ŸÓ``g€¤€–€–‘‡ŸàŸÓaaŸÓaaggg€¤€–€–‘ˆŸáŸÓbbŸÓbbgg€¤€–€–‘‰ŸÓxxŸÓxx‚‚´ƒ ƒ ‘Š‚ïŸÓzzŸÓzzg€¤ƒ ƒ ‘‹ŸãŸÓxxŸÓxx‚´ƒ €ÅŸâƒ ‘ŒŸÓ^^ ŸÓ^^ g €¬€–  €–‘ŸÓ^^ ŸÓ^^ gg €¬€–$gƒ A€Ž,5„€ƒ  €–‘ŽŸÓ||ŸÓ||^€¬ÝÝ‘ŸÓ||ŸÓ||^€¬Ý €Ý‘ŸÓ||ŸÓ||^ €¬Ý €€ Ý‘‘ŸäŸÓ€ €ŸÓ€ €^g€¤ÝÝ‘’ŸåŸÓ€Š€Š%ŸÓ€Š€Š%‚ ^€¤ÝŸæŸÓ€Š&€Š/ŸÛŸÓ€Š@€ŠLÝ‘“‚ïŸÓ€Ž€ŽŸÓ€Ž€Ž^€¤ÝÝ‘”ŸàŸÓ€€ŸÓ€€^^^€¤Ý-ŸÓ€€†ßŸÓ€€Ý‘•ŸÓ||ŸÓ||^ €¬Ý  Ý‘–ŸÓ||ŸÓ||^^ €¬Ý$^ƒ¡A€Ž,5„€ƒ¡ Ý‘—ŸÓ€‘€‘ŸÓ€‘€‘‚€¬ƒ  ƒ ‘˜ŸÓ€‘€‘ŸÓ€‘€‘‚‚€¬ƒ ‚ƒ¢A€Ž,5„€ƒ¢ƒ ‘™ŸÓ€‘€‘ŸÓ€‘€‘‚€¬ƒ €€ƒ ‘šŸÓ€‘€‘ŸÓ€‘€‘‚€¬ƒ ƒ ‘›ŸÓ€‘€‘ŸÓ€‘€‘‚€¬ƒ  €ƒ ‘œŸÓ€‘€‘ŸÓ€‘€‘‚ €¬ƒ  €€ ƒ ‘ŸÓ€‘€‘ŸÓ€‘€‘‚ €¬ƒ   ƒ ‘žŸÓ€‘€‘ŸÓ€‘€‘‚‚ €¬ƒ $‚ƒ£A€Ž,5„€ƒ£ ƒ ‘ŸŸÓ€ž€ž ŸÓ€ž€ž  &‚´5ŽýŸÓ€ž €ž'ŸÓ€ž€ž5‘ ŸèŸÓ€Ÿ€ŸŸÓ€Ÿ€Ÿ&€¤55‘¡ŸéŸÓ€ € ŸÓ€ € & €¤55‘¢…ÚŸÓ€¡€¡ŸÓ€¡€¡&€´5…Ú5‘£8ŸÓ€¬€¬ŸÓ€¬€¬9 €¤££‘¤ŸêŸÓ€³€³ŸÓ€³€³9X€¤££‘¥ŸëŸÓ€´€´.ŸÓ€´€´.9 €¤££‘¦ŸìŸÓ€µ€µ)ŸÓ€µ€µ)9 €¤££‘§ŸÓ€Á€ÁŸÓ€Á€Á€ˆ€¬€Á €Á‘¨ŸÓ€Á€ÁŸÓ€Á€Á€ˆ€ˆ€¬€Á€ˆƒ¤A€Ž,5„€ƒ¤€Á‘©ŸÓ€Á€ÁŸÓ€Á€Á€ˆ€¬€Á€€€Á‘ªŸÓ€Á€ÁŸÓ€Á€Á€ˆ€¬€Á€Á‘«ŸÓ€Á€ÁŸÓ€Á€Á€ˆ€¬€Á €€Á‘¬ŸÓ€Á€ÁŸÓ€Á€Á€ˆ €¬€Á €€ €Á‘­ŸÓ€Á€ÁŸÓ€Á€Á€ˆ €¬€Á  €Á‘®ŸÓ€Á€ÁŸÓ€Á€Á€ˆ€ˆ €¬€Á$€ˆƒ¥A€Ž,5„€ƒ¥ €Á‘¯8ŸÓ€È€ÈŸÓ€È€È€Û €¤**‘°&ŸÓ ŸÓ ‚  €¤ƒ –'ŸÓƒ ‘±ŸÓŸÓ[€¬Ú Ú‘²ŸÓŸÓ[[€¬Ú[ƒ¦A€Ž,5„€ƒ¦Ú‘³ŸÓŸÓ[€¬Ú€€Ú‘´ŸÓŸÓ[€¬ÚÚ‘µŸÓŸÓ[€¬Ú €Ú‘¶ŸÓŸÓ[ €¬Ú €€ Ú‘·ŸÓŸÓ[ €¬Ú  Ú‘¸ŸÓŸÓ[[ €¬Ú$[ƒ§A€Ž,5„€ƒ§ Ú‘¹ŸÓ##ŸÓ##m€¬€œ €œ‘ºŸÓ##ŸÓ##mm€¬€œmƒ¨A€Ž,5„€ƒ¨€œ‘»ŸÓ##ŸÓ##m€¬€œ€€€œ‘¼ŸÓ##ŸÓ##m€¬€œ€œ‘½ŸÓ##ŸÓ##m€¬€œ €€œ‘¾ŸÓ##ŸÓ##m €¬€œ €€ €œ‘¿ŸÓ##ŸÓ##m €¬€œ  €œ‘ÀŸÓ##ŸÓ##mm €¬€œ$mƒ©A€Ž,5„€ƒ© €œ‘ÁŸÓ''ŸÓ''€“€¬€Î €Î‘ŸÓ''ŸÓ''€“€“€¬€Î€“ƒªA€Ž,5„€ƒª€Î‘ßÓ''ŸÓ''€“€¬€Î€€€Î‘ÄŸÓ''ŸÓ''€“€¬€Î€Î‘ÅŸÓ''ŸÓ''€“€¬€Î €€Î‘ÆŸÓ''ŸÓ''€“ €¬€Î €€ €Î‘ÇŸÓ''ŸÓ''€“ €¬€Î  €Î‘ÈŸÓ''ŸÓ''€“€“ €¬€Î$€“ƒ«A€Ž,5„€ƒ« €Î‘ÉŸÓ..ŸÓ..u€¬€¤€¤‘ÊŸÓ..ŸÓ..u€¬€¤ €€¤‘ËŸÓ..ŸÓ..u €¬€¤ €€ €¤‘ÌŸÓ..ŸÓ..u €¬€¤  €¤‘ÍŸÓ..ŸÓ..uu €¬€¤$uƒ¬A€Ž,5„€ƒ¬ €¤‘ΟÓ44ŸÓ44v€¬€¥€¥‘ÏŸÓ44ŸÓ44v€¬€¥ €€¥‘ПÓ44ŸÓ44v €¬€¥ €€ €¥‘ÑŸÓ44ŸÓ44v €¬€¥  €¥‘ÒŸÓ44ŸÓ44vv €¬€¥$vƒ­A€Ž,5„€ƒ­ €¥‘ÓŸÓ88 ŸÓ88 w€¬€¦€¦‘ÔŸÓ88 ŸÓ88 w€¬€¦ €€¦‘ÕŸÓ88 ŸÓ88 w €¬€¦ €€ €¦‘ÖŸÓ88 ŸÓ88 w €¬€¦  €¦‘ןÓ88 ŸÓ88 ww €¬€¦$wƒ®A€Ž,5„€ƒ® €¦‘ØŸÓ<< ŸÓ<< s€¬€¢€¢‘ÙŸÓ<< ŸÓ<< s€¬€¢ €€¢‘ÚŸÓ<< ŸÓ<< s €¬€¢ €€ €¢‘ÛŸÓ<< ŸÓ<< s €¬€¢  €¢‘ÜŸÓ<< ŸÓ<< ss €¬€¢$sƒ¯A€Ž,5„€ƒ¯ €¢‘ÝŸÓ@@"ŸÓ@@"q€¬€ € ‘ÞŸÓ@@"ŸÓ@@"q€¬€  €€ ‘ߟÓ@@"ŸÓ@@"q €¬€  €€ € ‘àŸÓ@@"ŸÓ@@"q €¬€   € ‘áŸÓ@@"ŸÓ@@"qq €¬€ $qƒ°A€Ž,5„€ƒ° € ‘âŸÓDD ŸÓDD j€¬€™€™‘ãŸÓDD ŸÓDD j€¬€™ €€™‘äŸÓDD ŸÓDD j €¬€™ €€ €™‘åŸîŸÓX XŸÓX Xjjj€¤€™ˆúŸÓXX€™‘æŸÓDD ŸÓDD j €¬€™  €™‘çŸÓDD ŸÓDD jj €¬€™$jƒ±A€Ž,5„€ƒ± €™‘èŸÓ__ŸÓ__‚€¬ƒ  ƒ ‘éŸÓ__ŸÓ__‚‚€¬ƒ ‚ƒ²A€Ž,5„€ƒ²ƒ ‘êŸÓ__ŸÓ__‚€¬ƒ €€ƒ ‘ëŸÓ__ŸÓ__‚€¬ƒ ƒ ‘ìŸÓ__ŸÓ__‚€¬ƒ  €ƒ ‘íŸÓ__ŸÓ__‚ €¬ƒ  €€ ƒ ‘îŸÓ__ŸÓ__‚ €¬ƒ   ƒ ‘ïŸÓ__ŸÓ__‚‚ €¬ƒ $‚ƒ³A€Ž,5„€ƒ³ ƒ ‘ðŸÓooŸÓoo‚ €¬ƒ  ƒ ‘ñŸÓooŸÓoo‚ ‚ €¬ƒ ‚ ƒ´A€Ž,5„€ƒ´ƒ ‘òŸÓooŸÓoo‚ €¬ƒ €€ƒ ‘óŸÓooŸÓoo‚ €¬ƒ ƒ ‘ôŸÓooŸÓoo‚ €¬ƒ  €ƒ ‘õŸÓooŸÓoo‚  €¬ƒ  €€ ƒ ‘öŸÓooŸÓoo‚  €¬ƒ   ƒ ‘÷ŸÓooŸÓoo‚ ‚  €¬ƒ $‚ ƒµA€Ž,5„€ƒµ ƒ ‘øŸÓ„„ŸÓ„„I€¬^^‘ùŸÓ„„ŸÓ„„I€¬^ €^‘úŸÓ„„ŸÓ„„I €¬^ €€ ^‘ûŸÓ„„ŸÓ„„‚ €¬ƒƒ‘üŸÓ„„ŸÓ„„‚ €¬ƒ €ƒ‘ýŸÓ„„ŸÓ„„‚  €¬ƒ €€ ƒ‘þ8ŸÓÅ ÅŸÓÅ Å2 €¤œŸòœ‘ÿ8ŸÓ‚¸ ‚¸ŸÓ‚¸ ‚¸1 €¤›Ÿó›’ŸìŸÓ‚ô ‚ô!ŸÓ‚ô ‚ô!1 €¤›Ÿô›’ŸõŸÓƒ0 ƒ0 ŸÓƒ0 ƒ0 1 €¤›Ÿö›’8ŸÓƒ¿ ƒ¿ŸÓƒ¿ ƒ¿X €¤ÖÖ’Ÿ÷ŸÓƒÐƒÐ"ŸÓƒÐƒÐ"5 €¤ŸŸ’8ŸÓƒÖƒÖŸÓƒÖƒÖ5 €¤ŸŸ’ŸøŸÓ„ „"ŸÓ„ „"4 €¤žž’ŸùŸÓ„ „!ŸÓ„ „!4 €¤žž’ŸúŸÓ„ „ŸÓ„ „4 €¤žž’8ŸÓ„U„UŸÓ„U„U‚  €¤ƒƒ’ 8ŸÓ„f„fŸÓ„f„f‚  €¤ƒƒ’ 8ŸÓ„q„qŸÓ„q„q‚  €¤ƒƒ’ 8ŸÓ„‰„‰ŸÓ„‰„‰‚ €¤ƒƒ’ 8ŸÓ„¨„¨ŸÓ„¨„¨6 €¤  ’ ŸÿŸÓ„¼ „¼ŸÓ„¼ „¼‚ €¤ƒƒ’ ŸÓ„½ „½ŸÓ„½ „½‚.€¤ƒƒ’ ŸÓ„¾ „¾ŸÓ„¾ „¾‚2€¤ƒƒ’ˆ~ŸÓ„Æ „ÆŸÓ„Æ „Æ.‚€¤@@’8ŸÓ„؄؟ӄ؄؂ €¤ƒƒ’8ŸÓ„å„åŸÓ„å„å‚ €¤ƒƒ’8ŸÓ„î„îŸÓ„î„î; €¤¥¥’8ŸÓ… … ŸÓ… … < €¤¦¦’8ŸÓ…& …&ŸÓ…& …&3 €¤’8ŸÓ…F …FŸÓ…F …F‚ €¤ƒƒ’8ŸÓ…X…XŸÓ…X…X* €¤ŒŒ’ŸÓ„„ŸÓ„„I €¬^  ^’ŸÓ„„ŸÓ„„II €¬^$Iƒ¶A€Ž,5„€ƒ¶ ^’ŸÓ„„ŸÓ„„‚  €¬ƒ  ƒ’ŸÓ„„ŸÓ„„‚ ‚  €¬ƒ$‚ ƒ·A€Ž,5„€ƒ· ƒ’ ŸÓ…‚…‚ ŸÓ…‚…‚  &€¤ŽâŸÓ…‚ …‚ ˆÔŸÓ…‚ …‚ƒ’ ŸÓ…ƒ…ƒ ŸÓ…ƒ…ƒ &€¤ÀŸÓ…ƒ…ƒƒ’  ŸÓ…„…„ ŸÓ…„…„ &€¤­ŸÓ…„…„ƒ’  ŸÓ…………ŸÓ…………&€¤­ŸÓ…………ƒ’   ŸÓ…†…†ŸÓ…†…†€¤‡ÛŸÓ…†…†ƒ’!  ŸÓ…‡…‡ŸÓ…‡…‡€¤‡ÛŸÓ…‡…‡ƒ’"  ŸÓ…ˆ…ˆ ŸÓ…ˆ…ˆ &€¤­ŸÓ…ˆ…ˆƒ’# ŸÓ…Š…ŠŸÓ…Š…Š& €¤­ŸÓ…Š…Šƒ’$ŸÓ…‘…‘ŸÓ…‘…‘€ò€¬HH’%ŸÓ…‘…‘ŸÓ…‘…‘€ò€¬H €H’&ŸÓ…‘…‘ŸÓ…‘…‘€ò €¬H €€ H’'ŸÓ…‘…‘ŸÓ…‘…‘€ò €¬H  H’(ŸÓ…‘…‘ŸÓ…‘…‘€ò€ò €¬H$€òƒ¸A€Ž,5„€ƒ¸ H’)žNŸÓ…  … ŸÓ…  … €ñ€¤GG’*†AŸÓ…¡ …¡ŸÓ…¡ …¡€ñ&€¤GG’+8ŸÓ…¢ …¢ŸÓ…¢ …¢€ñ €¤GG’,8ŸÓ…±…±ŸÓ…±…± €¤jj’-ŸÓ……ŸӅ…‚‚´ƒƒ’.†ŸÓ…Æ…ÆŸÓ…Æ…Æ‚€¤ƒƒ’/ ŸÓ…Ç…ÇŸÓ…Ç…Ç‚€¤ƒƒ’0 ŸÓ…Î…Î ŸÓ…Î…Î  &€¤€ŠŸÓ…Î …Î ŽâŸÓ…΅΃’1 ŸÓ…Ï…ÏŸÓ…Ï…Ï &€¤€ŠŸÓ…υφŸÓ…υσ’2 ŸÓ…ЅПӅЅР1€¤€ŠŸÓ…ЅІŸÓ…ЅЃ’3 ŸÓ…Ñ…ÑŸÓ…Ñ…Ñ 1€¤€ŠŸÓ…хч۟ӅхцŸÓ…ху’4 ŸÓ…Õ…ÕŸÓ…Õ…Õ &€ó‚1€¤€ŠŸÓ…Õ…ÕÀŸÓ…Õ…Õ ŸÓ…Õ…Õ"ƒ’5 ŸÓ…Ú…ÚŸÓ…Ú…Ú &‚€¤ ŸÓ…Ú…ÚÀŸÓ…Ú…Úƒ’6 ŸÓ…Û…ÛŸÓ…Û…Û&‚€¤ÀŸÓ…Û…Ûƒ’7 ŸÓ…Þ…ÞŸÓ…Þ…Þ1 9€ó‚ €¤ ŸÓ…Þ…Þ ƒ’8 ŸÓ…ä…äŸÓ…ä…ä1&€¤ ŸÓ…ä…䃒9  ŸÓ…ë…ëŸÓ…ë…ë1 €¤€§ŸÓ…ë …ë! !ƒ’: "ŸÓ…þ…þŸÓ…þ…þ2‚€¤€«ŸÓ…þ…þƒ’; $ŸÓ††ŸÓ††[&X€¤‡ŸÓ††ÀŸÓ††ƒ’< %ŸÓ††ŸÓ††&X€¤ÀŸÓ††ƒ’= &ŸÓ††ŸÓ††9[ X€¤…ŸÓ††‡ŸÓ††€ŠŸÓ†† ƒ’> 'ŸÓ††!ŸÓ††!XX€¤€ÖŸÓ†#†$ (ƒ’? )ŸÓ† † ŸÓ† † X€¤€ÖŸÓ† †  *ƒ’@ +ŸÓ††ŸÓ††11€¤†ŸÓ††ƒ’A ,ŸÓ††ŸÓ††11   €¤€§ŸÓ††ƒ’B -ŸÓ††ŸÓ††XX€¤†ŸÓ††ƒ’C .ŸÓ†!†!ŸÓ†!†!‚X‚11€¤ /ŸÓ†!†!+†ŸÓ†!B†!C 0ƒ’D 1ŸÓ†I†I ŸÓ†I†I ƒ¹€”€•Pƒ¹ƒ¹ƒ¹ƒ¹€¤€”€•P 2ŸÓ†I†I€ÖŸÓ†I†Iƒ’E 3ŸÓ†J†JŸÓ†J†Jƒº€”€•Pƒºƒºƒºƒºƒºƒº€¤€”€•P 4ŸÓ†J†J 5ŸÓ†J†J!ƒ’F 6ŸÓ†K†KŸÓ†K†K‚X‚11€¤ /ŸÓ†K†K+†ŸÓ†K,†K-ƒ’G 8ŸÓ†g†gŸÓ†g†g‚ X1‚1€¤ /ŸÓ†g†g) 9ŸÓ†g*†g2 :ŸÓ†g3†g6 ;ŸÓ†g8†g;ƒ’H <ŸÓ†k †kŸÓ†k †kX €¤ :ŸÓ†k†k€Åƒ’I =ŸÓ†u†uŸÓ†u†u‚  X1‚1€¤ /ŸÓ†u†u1 >ŸÓ†u2†u8 9ŸÓ†u9†uA ?ŸÓ†uB†uF ;ŸÓ†uG†uJ @ƒ’J AŸÓ††!ŸÓ††! €Ã{€¤ŽâŸÓ†"†#€ŠŸÓ†$†% Bƒ’K CŸÓ†ž†žŸÓ†ž†ž |€¤ŽâŸÓ†ž†ž€ŠŸÓ†ž†ž Dƒ’L EŸÓ†«†«ŸÓ†«†«€¤ƒ’M FŸÓ†¬†¬ŸÓ†¬†¬€¤ƒ’N GŸÓ†­†­ŸÓ†­†­ 1€¤ HŸÓ†­†­ IŸÓ†­†­ƒ’O JŸÓ†¯†¯ŸÓ†¯†¯ 111€¤ HŸÓ†¯†¯‰UŸÓ†¯†¯ IŸÓ†¯†¯#ˆÔŸÓ†¯%†¯&ƒ’P KŸÓ†³†³ŸÓ†³†³ 111€¤€ŠŸÓ†³†³ IŸÓ†³†³—ŸÓ†³†³—ŽŸÓ†³†³ƒ’Q LŸÓ†´†´ŸÓ†´†´ 1111€¤€ŠŸÓ†´†´ IŸÓ†´†´—ŸÓ†´†´—ŽŸÓ†´†´ MŸÓ†´†´ ƒ’R NŸÓ†µ†µŸÓ†µ†µ 11111€¤€ŠŸÓ†µ†µ IŸÓ†µ†µ—ŸÓ†µ†µ—ŽŸÓ†µ†µ MŸÓ†µ†µ  OŸÓ†µ!†µ#ƒ’S PŸÓ†¶†¶ŸÓ†¶†¶ 111111€¤€ŠŸÓ†¶†¶ IŸÓ†¶†¶—ŸÓ†¶†¶—ŽŸÓ†¶†¶ MŸÓ†¶†¶  OŸÓ†¶!†¶# QŸÓ†¶$†¶&ƒ’T RŸÓ†·†·ŸÓ†·†·  11€¤ HŸÓ†·†·€ŠŸÓ†·†· IŸÓ†·†·€ÖŸÓ†·†·ƒ’U SŸÓ†¸†¸ŸÓ†¸†¸ &€¤€ŠŸÓ†¸†¸†ŸÓ†¸†¸ƒ’V TŸÓ†º†º ŸÓ†º†º 11 1€¤]ŸÓ†º†º—ŸÓ†º†º€ŠŸÓ†º†ºƒ’W UŸÓ†»†» ŸÓ†»†» 111 1€¤]ŸÓ†»†»—ŸÓ†»†»—ŽŸÓ†»†»€ŠŸÓ†»†»ƒ’X VŸÓ†¼†¼ ŸÓ†¼†¼ 1111 1€¤]ŸÓ†¼†¼—ŸÓ†¼†¼—ŽŸÓ†¼†¼ MŸÓ†¼†¼€ŠŸÓ†¼†¼ƒ’Y WŸÓ†½†½ ŸÓ†½†½ 11111 1€¤]ŸÓ†½†½—ŸÓ†½†½—ŽŸÓ†½†½ MŸÓ†½†½ OŸÓ†½†½€ŠŸÓ†½†½ƒ’Z XŸÓ†¾†¾ ŸÓ†¾†¾ 111111 1€¤]ŸÓ†¾†¾—ŸÓ†¾†¾—ŽŸÓ†¾†¾ MŸÓ†¾†¾ OŸÓ†¾†¾ QŸÓ†¾†¾€ŠŸÓ†¾†¾ ƒ’[ YŸÓ†¿†¿ŸÓ†¿†¿ 1111€¤€ŠŸÓ†¿†¿-ŸÓ†¿†¿†ßŸÓ†¿†¿ˆ¬ŸÓ†¿†¿ƒ’\ ZŸÓ†À†ÀŸÓ†À†À  111€¤€ŠŸÓ†À†À [ŸÓ†À†À-ŸÓ†À†À†ßŸÓ†À†À ƒ’] \ŸÓ†Á†ÁŸÓ†Á†Á 1111€¤€ŠŸÓ†Á†Á-ŸÓ†Á†Á†ßŸÓ†Á†Áˆ¬ŸÓ†Á†Áƒ’^ ]ŸÓ†Ã†ÃŸÓ†Ã†Ã  1111€¤€ŠŸÓ†Ã†Ã [ŸÓ†Ã†Ã!”÷ŸÓ†Ã"†Ã%€ÖŸÓ†Ã'†Ã(ˆúŸÓ†Ã)†Ã*ƒ’_ ^ŸÓ†Æ†ÆŸÓ†Æ†Æ  111111€¤€ŠŸÓ†Æ†Æ [ŸÓ†Æ†Æ"”÷ŸÓ†Æ#†Æ&—ŸÓ†Æ(†Æ*ˆêŸÓ†Æ+†Æ-—ŽŸÓ†Æ0†Æ2ˆëŸÓ†Æ3†Æ5ƒ’` _ŸÓ†É†ÉŸÓ†É†É  11111111€¤€ŠŸÓ†É†É [ŸÓ†É†É"”÷ŸÓ†É#†É&—ŸÓ†É(†É*ˆêŸÓ†É+†É-—ŽŸÓ†É0†É2ˆëŸÓ†É3†É5 MŸÓ†É8†É: `ŸÓ†É;†É=ƒ’a aŸÓ†Ì†ÌŸÓ†Ì†Ì  1111111111€¤€ŠŸÓ†Ì†Ì [ŸÓ†Ì†Ì"”÷ŸÓ†Ì#†Ì&—ŸÓ†Ì(†Ì*ˆêŸÓ†Ì+†Ì-—ŽŸÓ†Ì0†Ì2ˆëŸÓ†Ì3†Ì5 MŸÓ†Ì8†Ì: `ŸÓ†Ì;†Ì= OŸÓ†Ì@†ÌB bŸÓ†ÌC†ÌEƒ’b cŸÓ†Ï†ÏŸÓ†Ï†Ï  111€¤ dŸÓ†Ï†Ï eŸÓ†Ï†Ï-ŸÓ†Ï†Ï †ßŸÓ†Ï!†Ï"ƒ’c fŸÓ†Õ†Õ ŸÓ†Õ†Õ  1€¤€ŠŸÓ†Õ†Õƒ’d gŸÓ†Ö†ÖŸÓ†Ö†Ö X€¤€ŠŸÓ†Ö†Öƒ’e hŸÓ†×†×ŸÓ†×†× 11€¤€ŠŸÓ†×†×€§ŸÓ†×†×ƒ’f iŸÓ†Ù†ÙŸÓ†Ù†Ù111€¤‰UŸÓ†Ù†ÙˆÔŸÓ†Ù†Ùƒ’g jŸÓ†é†éŸÓ†é†é  1&1€¤ eŸÓ†é†é€ŠŸÓ†é†é‰UŸÓ†é†éˆÔŸÓ†é†éƒ’h kŸÓ†ô†ôŸÓ†ô†ô  11€¤ eŸÓ†ô†ô€ŠŸÓ†ô†ô‰UŸÓ†ô†ô ƒ’i lŸÓ†ÿ†ÿŸÓ†ÿ†ÿ‚  X11€¤ /ŸÓ†ÿ†ÿ, 9ŸÓ†ÿ-†ÿ5 >ŸÓ†ÿ6†ÿ<“ŸÓ†ÿ=†ÿ?€§ŸÓ†ÿ@†ÿAƒ’j mŸÓ‡‡ ŸÓ‡‡  1€¤ nŸÓ‡ ‡'ŸÓ‡‡ƒ’k oŸÓ‡‡4ŸÓ‡‡41 €¤››’l pŸÓ‡´‡´ŸÓ‡´‡´‚11 ‚1‚€¤ tŸÓ‡´‡´'ÄŸÓ‡´(‡´/ uŸÓ‡´0‡´4 vŸÓ‡´5‡´<ƒ’m wŸÓ‡¼‡¼ŸÓ‡¼‡¼^X [   j‚1 ‚1YI4€¤iŸÓ‡¼‡¼ xŸÓ‡¼‡¼ ‡ŸÓ‡¼#‡¼& yŸÓ‡¼'‡¼/%ŸÓ‡¼0‡¼9 zŸÓ‡¼:‡¼? {ŸÓ‡¼@‡¼F vŸÓ‡¼G‡¼N |ŸÓ‡¼O‡¼Z uŸÓ‡¼[‡¼_ tŸÓ‡¼`‡¼sŒŸÓ‡¼t‡¼y }ŸÓ‡¼z‡¼€ˆƒ’n ~ŸÓ‡Á‡ÁŸÓ‡Á‡Á‚ I€¤†JŸÓ‡Á‡Áƒ’o ŸÓ‡Â‡ÂŸÓ‡Â‡ÂI€¤ƒ’p €ŸÓ‡Ã‡ÃŸÓ‡Ã‡ÃI€¤ƒ’q ŸÓ‡Ä‡ÄŸÓ‡Ä‡Ä‚ I€¤†JŸÓ‡Ä‡Äƒ’r ‚ŸÓ‡Å‡ÅŸÓ‡Å‡Å‚ I€¤†JŸÓ‡Å‡Åƒ’s ƒŸÓ‡Æ‡ÆŸÓ‡Æ‡Æ‚ I€¤†JŸÓ‡Æ‡Æƒ’t „ŸÓ‡È‡ÈŸÓ‡È‡È‚€¤ƒ’u †ŸÓ‡É‡ÉŸÓ‡É‡É‚€¤ƒ’vŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚€¬ƒ! ƒ!’wŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚‚€¬ƒ!‚ƒ»A€Ž,5„€ƒ»ƒ!’xŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚€¬ƒ!€€ƒ!’yŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚€¬ƒ!ƒ!’zŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚€¬ƒ! €ƒ!’{ŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚ €¬ƒ! €€ ƒ!’|ŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚ €¬ƒ!  ƒ!’}ŸÓ‡Ï‡ÏŸÓ‡Ï‡Ï‚‚ €¬ƒ!$‚ƒ¼A€Ž,5„€ƒ¼ ƒ!’~ŸÓ‡Ö‡ÖŸÓ‡Ö‡Ö¢€¬‚V‚V’ŸÓ‡Ö‡ÖŸÓ‡Ö‡Ö¢€¬‚V €‚V’€ŸÓ‡Ö‡ÖŸÓ‡Ö‡Ö¢ €¬‚V €€ ‚V’ ˆŸÓ‡Ù ‡ÙŸÓ‡Ù ‡Ù¢‚€¤‚V‚V’‚ŸÓ‡Ö‡ÖŸÓ‡Ö‡Ö¢ €¬‚V  ‚V’ƒŸÓ‡Ö‡ÖŸÓ‡Ö‡Ö¢¢ €¬‚V$¢ƒ½A€Ž,5„€ƒ½ ‚V’„ ˆŸÓ‡ò ‡òŸÓ‡ò ‡òZ‚€¤ÙÙ’… ŠŸÓˆˆŸÓˆˆ™ €¤†ŸÓˆˆ ‹ƒ’† ŒŸÓˆˆŸÓˆˆ™™ €¤ŸÝŸÓˆˆŸÞŸÓˆˆ  ƒ’‡ Ž ŸÓˆˆŸÓˆˆƒ¾‹-ŸÓˆˆ„ƒ¾ ¤‹-ŸÓˆˆƒ’ˆ ŸÓˆˆŸÓˆˆ] €¤¦ŸÓˆ ˆ ‘ƒ’‰ ’ŸÓˆ ˆ ŸÓˆ ˆ ] €¤¦ŸÓˆ ˆ ‡ÜŸÓˆ #ˆ $ “ŸÓˆ %ˆ & ”ƒ’Š ;ŸÓˆ&ˆ&ŸÓˆ&ˆ&] €¤¦ŸÓˆ&ˆ&‡ÜŸÓˆ&ˆ& •ƒ’‹ – —ŸÓˆ) ˆ)#ŸÓˆ) ˆ)#]‚¤Üƒ’Œ ˜ ™ŸÓˆ0 ˆ0%ŸÓˆ0 ˆ0%]¤Üƒ’ŸÓˆOˆOŸÓˆOˆOZ‚´rr’Ž šŸÓˆS ˆS'ŸÓˆS ˆS'Z €¤r‹ŸÓˆS)ˆS-€ŠŸÓˆS.ˆS/r’ ŸÓˆZ ˆZŸÓˆZ ˆZZ€¤rr’ŸÓˆaˆaŸÓˆaˆa€·‚´€ú€ú’‘ ›ŸÓˆf ˆf+ŸÓˆf ˆf+€· €¶€¤€ú‹ŸÓˆf-ˆf1€ŠŸÓˆf2ˆf3 œŸÓˆf:ˆf>€ú’’ ŸÓˆq ˆqŸÓˆq ˆq€·€¤€ú€ú’“ ŸÓˆwˆwŸÓˆwˆw1 €¤ žŸÓˆwˆw$ƒe‚t›‡ŸÓ##‚t/€‰^€Ü Ÿ€Åªuu¿¿”˜’”  ŸÓ$$ ŸÓ$$ €¤ƒ#’• ¡ŸÓ%%ŸÓ%%€¤ƒ#’–ŸÓ&& ŸÓ&& €¤ƒ#’— ¢ŸÓ''ŸÓ''€¤ƒ#‚u £ŸÓ++‚u/€‰^€Ü ¤€ÅFvv¿¿˜™’˜ ¥ŸÓ-- ŸÓ-- €¤‚¿€›6ãƒ$ ¦‚vŸ×ŸÓ55‚v0  §ŸÓ66€ÅŸ×0  ¨ŸÓ77€ÅŸ×€í  ©ŸÓ99€ÅŸ×€í  ªŸÓ<<€ÅŸ×ƒŸ×‚ŸØƒŸ×ŸØ‚ ŸÙƒŸ×ŸÙ‚ ŸÚƒŸ×ŸÚ‚  «€Åww¿¿™™‚w‚€ŸÓ^^ ‚wêŸÓ__g‚€‚€ŸÓ__ ƒ‚€gƒ‚€ggƒ‚€gƒ‚€gƒ‚€gƒ‚€g ƒ‚€g ƒ‚€gg ‚€‚ïgŸàƒ‚€ŸàgggŸáƒ‚€Ÿágg$g g€Åxx¿¿™™‚xŸâŸÓxx‚xgMŸÓyy€ÅŸâ ¬ŸÓxx€ÅƒŸâ‚‚â‚ïgŸãƒŸâŸã€Åyy¿¿™™‚y¥ŸÓ||‚y^¡ŸÓ}}^¢ŸÓ}!}*^ ­ ­ŸÓ}} ¡ŸÓ~~‚¢ŸÓ~~(^¥¥ŸÓ~~^ ® ®ŸÓƒ¥^ƒ¥^ƒ¥^ ƒ¥^ ƒ¥^^ Ÿäƒ¥Ÿä^gŸåƒ¥Ÿå‚ ^‚‚ï^Ÿàƒ¥Ÿà^^^$^ €Åzz¿¿™™‚zŸçŸÓ€‘€‘‚z‚ ¯ ¯ŸÓ€’€’‚ ° °ŸÓ€“€“=ƒŸç‚ƒŸç‚‚ƒŸç‚ƒŸç‚ƒŸç‚ƒŸç‚ ƒŸç‚ ƒŸç‚‚ $‚ ‚€Å{{¿¿™™‚{€ÆŸÓ€ž€ž ‚{‚Á•L·z\V4à‰›C•L·z\V4à‰•N ± ±€Ž€‚Ib€ç€…3€¬€è€…4€­ŽýŸÓ€ž €ž€Å€Æ 'ŸÓ€ž€ž€Å€Æƒ€Æ &Ÿèƒ€ÆŸè&Ÿéƒ€ÆŸé& …Úƒ€Æ…Ú&€Å||¿¿™™‚|‚ŸÓ€£€£‚|&€Å}}¿¿™™‚}ŽŸÓ€¤€¤‚}X¡ŸÓ€«€«$ ¢ŸÓ€«'€«19ŽŽŸÓ€«€« ²8ƒŽ89 ŸêƒŽŸê9XŸëƒŽŸë9 ŸìƒŽŸì9 €Å~~¿¿™™‚~ƒ¤ŸÓ€Á€Á‚~€ˆ ³ ³ŸÓ€Â€Â€ˆ ´ ´ŸÓ€Ã€Ãƒƒ¤€ˆƒƒ¤€ˆ€ˆƒƒ¤€ˆƒƒ¤€ˆƒƒ¤€ˆƒƒ¤€ˆ ƒƒ¤€ˆ ƒƒ¤€ˆ€ˆ $€ˆ €ˆ€Å¿¿™™‚‰ŸÓ€Æ€Æ ‚€ç€…3€¬€è€…4€­&¡ŸÓ€Ç€Ç€ˆ¢ŸÓ€Ç€Ç% £ŸÓ€Ç9€Ç=€Û€›€›ŸÓ€Ç€Ç 8ƒ‰8€Û €Å€€¿¿™™‚€ŸíŸÓ€Ô€Ô ‚€€ç€…3€¬€è€…4€­/€‰^€Ü‚‹/‹/ŸÓ€Ö€Ö  µ êŸÓ€Ø€Ø‚‹‹ŸÓ€Ø€Ø  ¶€äêŸÓ€Ú€Ú‚‹‹ŸÓ€Ú€Ú  ·€•êŸÓ€Ü€Ü‚‹‹ŸÓ€Ü€Ü  ¸€ªêŸÓ€Þ€Þ‚‹‹ŸÓ€Þ€Þ  ¹€–êŸÓ€à€à‚‹ ‹ ŸÓ€à€à  º€—êŸÓ€â€â‚‹!‹!ŸÓ€â€â  »€åêŸÓ€ä€ä‚‹#‹#ŸÓ€ä€ä  ¼€¶êŸÓ€æ€æ‚‹$‹$ŸÓ€æ€æ  ½€æêŸÓ€è€è‚‹&‹&ŸÓ€è€è  ¾€¶êŸÓ€ê€ê‚‹'‹'ŸÓ€ê€ê  ¿€æêŸÓ€ì€ì‚‹(‹(ŸÓ€ì€ì  À€çêŸÓ€î€î‚‹*‹*ŸÓ€î€î  Á€èêŸÓ€ð€ð‚‹,‹,ŸÓ€ð€ð  ÂêŸÓ€ò€ò‚‹-‹-ŸÓ€ò€ò  Ã€éêŸÓ€ô€ô‚‹.‹.ŸÓ€ô€ô  ÄêŸÓ€ø€ø"‚ Å ÅŸÓ€ø€ø  Æ¡ŸÓ€ú€ú ¢ŸÓ€ú€ú‚jjŸÓ€ú€ú  Ç€•¡ŸÓ€ÿ€ÿ ¢ŸÓ€ÿ€ÿ‚‹t‹tŸÓ€ÿ€ÿ  È€–êŸÓ‚‹v‹vŸÓ  É‚¡ŸÓ‚¢ŸÓ&‚‰|‰|ŸÓ  Ë&ƒŸí&‚   Ì€Å¿¿™™‚ ÊŸÓ‚€ç€…3€¬€è€…4€­/€‰^€ÜX¡ŸÓ ¢ŸÓ ‚ Í ÍŸÓ ‚¡ŸÓ‚¢ŸÓ( £ŸÓ+0‚ Î ÎŸÓ ‚¡ŸÓ  ¢ŸÓ$‚ Ï ÏŸÓ ‚¡ŸÓ‚¢ŸÓ' £ŸÓ*/‚ Ð ÐŸÓ ‚¡ŸÓ¢ŸÓ £ŸÓ"'‚ Ñ ÑŸÓ ‚ Ò ÒŸÓ  êŸÓ‚‰…‰…ŸÓ €Û¡ŸÓ  ¢ŸÓ‚ Ó ÓŸÓ  Ô€Å‚‚¿¿™™‚‚—ŸÓ‚‚/€‰^€Ü[ Õ ÕŸÓ [xxŸÓ[ Ö ÖŸÓ  ƒ—[ƒ—[[ƒ—[ƒ—[ƒ—[ƒ—[ ƒ—[ ƒ—[[ $[ [€Åƒƒ¿¿™™‚ƒ‚ŠŸÓ##‚ƒm × ×ŸÓ$$m Ø ØŸÓ%%#ƒ‚Šmƒ‚Šmmƒ‚Šmƒ‚Šmƒ‚Šmƒ‚Šm ƒ‚Šm ƒ‚Šmm $m m€Å„„¿¿™™‚„„ZŸÓ''‚„€“ Ù ÙŸÓ((€“ Ú ÚŸÓ**-€“ Û ÛŸÓ,,-ƒ„Z€“ƒ„Z€“€“ƒ„Z€“ƒ„Z€“ƒ„Z€“ƒ„Z€“ ƒ„Z€“ ƒ„Z€“€“ $€“ €“€Å……¿¿™™‚…‚®ŸÓ..‚… êŸÓ//!u Ü ÜŸÓ//u Ý ÝŸÓ11u Þ ÞŸÓ22ƒ‚®uƒ‚®uƒ‚®u ƒ‚®u ƒ‚®uu $u €Å††¿¿™™‚†‚¯ŸÓ44‚† êŸÓ55"v ß ßŸÓ55v à àŸÓ66ƒ‚¯vƒ‚¯vƒ‚¯v ƒ‚¯v ƒ‚¯vv $v €Å‡‡¿¿™™‚‡‚±ŸÓ88 ‚‡ êŸÓ9 9%w á áŸÓ99w â âŸÓ::ƒ‚±wƒ‚±wƒ‚±w ƒ‚±w ƒ‚±ww $w €Åˆˆ¿¿™™‚ˆ‚«ŸÓ<< ‚ˆ êŸÓ= =%s ã ãŸÓ==s ä äŸÓ>>ƒ‚«sƒ‚«sƒ‚«s ƒ‚«s ƒ‚«ss $s €Å‰‰¿¿™™‚‰‚¨ŸÓ@@"‚‰ êŸÓA"A'q å åŸÓAAq æ æŸÓBB ƒ‚¨qƒ‚¨qƒ‚¨q ƒ‚¨q ƒ‚¨qq $q €ÅŠŠ¿¿™™‚Š‚…ŸÓDD ‚Š êŸÓE E%j ç çŸÓEEj è èŸÓGG j é éŸÓII!j ê êŸÓOO$j ë ëŸÓUU'ƒ‚…jƒ‚…jƒ‚…j ƒ‚…j ƒ‚…jj Ÿîƒ‚…Ÿîjjj$j €Å‹‹¿¿™™‚‹ŸïŸÓ__‚‹ êŸÓ``‚ŸïŸïŸÓ``ƒŸï‚ƒŸï‚‚ƒŸï‚ƒŸï‚ƒŸï‚ƒŸï‚ ƒŸï‚ ƒŸï‚‚ $‚ ‚ ì€ÅŒŒ¿¿™™‚Œ íŸÓcc‚Œ   î€Å¿¿™™‚ ïŸÓee‚9  ð€ÅŽŽ¿¿™™‚Ž ñŸÓgg‚ŽŒâŸÓkl‚  òŸÓkk  ó‚  ôŸÓll"€Å¿¿™™‚ŸðŸÓoo‚‚  õ õŸÓqq ö‚  ÷ ÷ŸÓss ø‚  ù ùŸÓuu úƒŸð‚ ƒŸð‚ ‚ ƒŸð‚ ƒŸð‚ ƒŸð‚ ƒŸð‚  ƒŸð‚  ƒŸð‚ ‚  $‚  ‚  û€Å¿¿™™‚ üŸÓzz‚€ç€…3€¬€è€…4€­Y¡ŸÓ{{ €Û¢ŸÓ{#{+‚! ý ýŸÓ{{ þ€Å‘‘¿¿™™‚‘ ÿŸÓ‚‘€ç€…3€¬€è€…4€­ €Û¡ŸÓƒƒ' ¢ŸÓƒ*ƒ/‚"¡¡ŸÓƒƒ¡€Û¡ŸÓ…#…+ ¢ŸÓ….…3‚"¡¡ŸÓ……¡€Û¡ŸÓ‡‡' ¢ŸÓ‡*‡/‚"¡¡ŸÓ‡‡¡€Û¡ŸÓ‰ ‰( ¢ŸÓ‰+‰0‚"¡¡ŸÓ‰‰¡€Û¡ŸÓ‹ ‹( ¢ŸÓ‹+‹0‚"¡¡ŸÓ‹‹¡ €Û¡ŸÓ' ¢ŸÓ*/‚"¡ ¡ ŸÓ¡ €Û¡ŸÓ"*2¢ŸÓ-4 £ŸÓ7<‚"¡ ¡ ŸÓ¡ €Û¡ŸÓ‘!‘)2¢ŸÓ‘-‘4 £ŸÓ‘7‘<‚"¡¡ŸÓ‘‘¡€Û¡ŸÓ“"“/‚#¢ŸÓ“2“> £ŸÓ“A“F‚"¡¡ŸÓ““¡€Û¡ŸÓ••"2¢ŸÓ•%•1 £ŸÓ•4•9‚"¡¡ŸÓ••¡€Û¡ŸÓ——&2¢ŸÓ—)—5 £ŸÓ—8—=‚"¡¡ŸÓ——¡¡€Å’’¿¿™™‚’õŸÓœœ ‚’€ç€…3€¬€è€…4€­/€‰^€Ü9êŸÓžž$2‚‚ŸÓžž¡2¡ŸÓ¤ ¤ ¢ŸÓ¤¤#2£ŸÓ¤&¤2 ¥ŸÓ¤5¤? ¦ŸÓ¤B¤N §ŸÓ¤Q¤U ¨ŸÓ¤X¤]2‹X‹XŸÓ¤¤ ¡2¡ŸÓ©©9¢ŸÓ© ©1 £ŸÓ©4©@2¥ŸÓ©C©O ¦ŸÓ©R©\ §ŸÓ©_©k ¨ŸÓ©n©s2¡¡ŸÓ©©¡ 2¡ŸÓ¬¬" ¢ŸÓ¬%¬*2‹p‹pŸÓ¬¬ ¡¡ŸÓ®®2¢ŸÓ®® £ŸÓ® ®%2‹r‹rŸÓ®® ¡2¡ŸÓ°°2¢ŸÓ°° £ŸÓ°"°'2¡¡ŸÓ°° ¡€Û¡ŸÓ² ² ¢ŸÓ²²2 Ó ÓŸÓ²² ¡  êŸÓ´´2‰…‰…ŸÓ´´ ¡!2¡ŸÓ¶¶&‚"¢ŸÓ¶)¶? £ŸÓ¶B¶G2¡"¡"ŸÓ¶¶¡#2¡ŸÓ¸¸ ¢ŸÓ¸"¸'2¡$¡$ŸÓ¸¸¡%2¡ŸÓºº2¢ŸÓº!º( £ŸÓº+º02¡&¡&ŸÓºº¡'2¡ŸÓ¼¼¢ŸÓ¼ ¼# £ŸÓ¼&¼+2ƒ€ƒ€ŸÓ¼¼¡(‚¡ŸÓ¿¿  ¢ŸÓ¿#¿(2¡)¡)ŸÓ¿¿¡*1¡ŸÓÁÁ# ¢ŸÓÁ&Á+2¡+¡+ŸÓÁÁ¡,2¡ŸÓÃÃ$2¢ŸÓÃ'Ã. £ŸÓÃ1Ã62¡-¡-ŸÓÃá.8ƒõ82 ¡/€Å““¿¿™™‚“òŸÓÐÐ ‚“€ç€…3€¬€è€…4€­/€‰^€Ü91¡ŸÓØØ ¢ŸÓØØ £ŸÓØ!Ø- ¥ŸÓØ0Ø51¡0¡0ŸÓØØ ¡11¡ŸÓÝÝ ¢ŸÓÝÝ1£ŸÓÝ Ý' ¥ŸÓÝ*Ý. ¦ŸÓÝ1Ý61‹h‹hŸÓÝÝ ¡2‚¡ŸÓàà ¢ŸÓàà1‚?‚?ŸÓàà ¡31¡ŸÓãã2¢ŸÓãã! £ŸÓã$ã)1¡4¡4ŸÓãã ¡51¡ŸÓææ ¢ŸÓææ) £ŸÓæ,æ11‹p‹pŸÓææ ¡6 ¡ŸÓéé1¢ŸÓéé) £ŸÓé,é11¡7¡7ŸÓéé¡821 ‚$ ¡ŸÓððR1‚$¢ŸÓðUðv‚%1‚$£ŸÓðyð€º ¥ŸÓð€½ð€Â1¡9¡9ŸÓðð ¡: ¡ŸÓô ô2¢ŸÓôô1£ŸÓôô% ¥ŸÓô(ô-1††ŸÓôô ¡;2¡ŸÓùù1&¢ŸÓùù:4£ŸÓù=ùL‚&¥ŸÓùOùd ¦ŸÓùgùl §ŸÓùoùt1¡=¡=ŸÓùù ¡>q¡ŸÓüü,1¢ŸÓü/ü61£ŸÓü9ü@ ¥ŸÓüCüH1‹x‹xŸÓüü ¡?s¡ŸÓÿ ÿ(&¢ŸÓÿ+ÿ01£ŸÓÿ3ÿ: ¥ŸÓÿ=ÿA1¦ŸÓÿDÿK1§ŸÓÿNÿU ¨ŸÓÿXÿ]1‹z‹zŸÓÿÿ ¡@s¡ŸÓ‚‚,‚¢ŸÓ‚/‚: £ŸÓ‚=‚AX¥ŸÓ‚D‚J1¦ŸÓ‚M‚T1§ŸÓ‚W‚^ ¨ŸÓ‚a‚f1¡A¡AŸÓ‚‚ ¡B ¡ŸÓ‚‚"1¢ŸÓ‚%‚, £ŸÓ‚/‚41¡C¡CŸÓ‚‚¡D ¡ŸÓ‚ ‚ €ó ¢ŸÓ‚ ‚ !1£ŸÓ‚ $‚ + ¥ŸÓ‚ .‚ 31¡E¡EŸÓ‚ ‚ ¡F ¡ŸÓ‚‚ ¢ŸÓ‚‚‚£ŸÓ‚‚,1¥ŸÓ‚/‚6 ¦ŸÓ‚9‚>1‹T‹TŸÓ‚‚ ¡G ¡ŸÓ‚‚ ¢ŸÓ‚‚!5£ŸÓ‚$‚7j¥ŸÓ‚:‚U ¦ŸÓ‚X‚]1¡H¡HŸÓ‚‚¡Ij¡ŸÓ‚‚+1¢ŸÓ‚.‚55£ŸÓ‚8‚K ¥ŸÓ‚N‚R ¦ŸÓ‚U‚Z1‹`‹`ŸÓ‚‚ ¡J1¡ŸÓ‚ ‚ ¢ŸÓ‚‚1¡K¡KŸÓ‚‚¡L1¡ŸÓ‚‚ ¢ŸÓ‚‚1¡M¡MŸÓ‚‚ ¡N‚ ¡ŸÓ‚& ‚& ¢ŸÓ‚&‚&"1£ŸÓ‚&%‚&,1¥ŸÓ‚&/‚&6 ¦ŸÓ‚&9‚&>1‹X‹XŸÓ‚&‚& ¡O1¡ŸÓ‚,‚, ¢ŸÓ‚,‚, 2£ŸÓ‚,#‚,/ ¥ŸÓ‚,2‚,< ¦ŸÓ‚,?‚,K §ŸÓ‚,N‚,S ¨ŸÓ‚,V‚,[1¡P¡PŸÓ‚,‚, ¡Q ¡ŸÓ‚4‚4 ¢ŸÓ‚4‚44£ŸÓ‚4 ‚4/1¥ŸÓ‚42‚49 ¦ŸÓ‚4<‚4A1¡R¡RŸÓ‚4‚4¡S1¡ŸÓ‚7‚7 ¢ŸÓ‚7‚7 5£ŸÓ‚7#‚76 ¥ŸÓ‚79‚7> ¦ŸÓ‚7A‚7Fu§ŸÓ‚7I‚7`v¨ŸÓ‚7c‚7{1¡T¡TŸÓ‚7‚7 ¡U1¡ŸÓ‚:‚:1¢ŸÓ‚:‚:% £ŸÓ‚:(‚:-u¥ŸÓ‚:0‚:Gw¦ŸÓ‚:J‚:e1‹~‹~ŸÓ‚:‚:¡V1¡ŸÓ‚=‚= ¢ŸÓ‚=‚=1¡W¡WŸÓ‚=‚= ¡X€“¡ŸÓ‚C‚C+ ¢ŸÓ‚C.‚C21£ŸÓ‚C5‚C<1¥ŸÓ‚C?‚CF ¦ŸÓ‚CI‚CN1‹R‹RŸÓ‚C‚C¡Y1¡ŸÓ‚I‚I1¢ŸÓ‚I‚I%1£ŸÓ‚I(‚I6j¥ŸÓ‚I9‚IT ¦ŸÓ‚IW‚I[ §ŸÓ‚I^‚Ic ¨ŸÓ‚If‚Ik1¡Z¡ZŸÓ‚I‚I¡[&êŸÓ‚M‚M1€Æ€ÆŸÓ‚M‚M ¡\ ¡ŸÓ‚S‚S9¢ŸÓ‚S‚S+€ó‚£ŸÓ‚S.‚SV ¥ŸÓ‚SY‚S^1‚‚ŸÓ‚S‚S¡]9¡ŸÓ‚V‚V'1¢ŸÓ‚V*‚V1 £ŸÓ‚V4‚V91¡^¡^ŸÓ‚V‚V¡_1¡ŸÓ‚[‚[ ¢ŸÓ‚[‚[9£ŸÓ‚["‚[3 ¥ŸÓ‚[6‚[;1¡`¡`ŸÓ‚[‚[ ¡a1¡ŸÓ‚^‚^9¢ŸÓ‚^‚^+1£ŸÓ‚^.‚^5 ¥ŸÓ‚^8‚^=1¡b¡bŸÓ‚^‚^ ¡c1¡ŸÓ‚a‚a1¢ŸÓ‚a!‚a- £ŸÓ‚a0‚a5 ¥ŸÓ‚a8‚a=1¡d¡dŸÓ‚a‚a¡e1¡ŸÓ‚f‚f1¢ŸÓ‚f!‚f-1£ŸÓ‚f0‚f7 ¥ŸÓ‚f:‚f? ¦ŸÓ‚fB‚fG §ŸÓ‚fJ‚fO1¡f¡fŸÓ‚f‚f¡g9¡ŸÓ‚i!‚i21¢ŸÓ‚i5‚i<1£ŸÓ‚i?‚iF ¥ŸÓ‚iI‚iN1¡h¡hŸÓ‚i‚i¡i1¡ŸÓ‚l$‚l+9¢ŸÓ‚l.‚l?1£ŸÓ‚lB‚lI1¥ŸÓ‚lL‚lS ¦ŸÓ‚lV‚l[1¡j¡jŸÓ‚l‚l ¡k1¡ŸÓ‚o‚o2¢ŸÓ‚o‚o$ £ŸÓ‚o'‚o,1¡l¡lŸÓ‚o‚o¡m1¡ŸÓ‚r‚r2¢ŸÓ‚r‚r" £ŸÓ‚r%‚r*1¡n¡nŸÓ‚r‚r ¡o1¡ŸÓ‚u‚u2¢ŸÓ‚u‚u$ £ŸÓ‚u'‚u,1¡p¡pŸÓ‚u‚u¡q1¡ŸÓ‚x‚x  ¢ŸÓ‚x#‚x(1¡r¡rŸÓ‚x‚x¡s1¡ŸÓ‚{‚{" ¢ŸÓ‚{%‚{*1¡t¡tŸÓ‚{‚{¡u êŸÓ‚~‚~1¡v¡vŸÓ‚~‚~ ¡w ¡ŸÓ‚‚1¢ŸÓ‚‚" £ŸÓ‚%‚* ¥ŸÓ‚-‚21¡x¡xŸÓ‚‚¡y€Û¡ŸÓ‚„‚„ ‚#¢ŸÓ‚„#‚„/1£ŸÓ‚„2‚„9 ¥ŸÓ‚„<‚„A1‹¤‹¤ŸÓ‚„‚„¡z1¡ŸÓ‚ˆ‚ˆ ¢ŸÓ‚ˆ‚ˆ1£ŸÓ‚ˆ"‚ˆ) ¥ŸÓ‚ˆ,‚ˆ11¡{¡{ŸÓ‚ˆ‚ˆ ¡| êŸÓ‚Œ‚Œ1¡}¡}ŸÓ‚Œ‚Œ¡~  ¡ŸÓ‚‘‚‘%1¢ŸÓ‚‘)‚‘0 £ŸÓ‚‘3‚‘81¡¡ŸÓ‚‘‚‘¡€  ¡ŸÓ‚–‚–(1¢ŸÓ‚–,‚–3 £ŸÓ‚–6‚–;1¡¡ŸÓ‚–‚–¡‚j¡ŸÓ‚‚4 ¢ŸÓ‚7‚; £ŸÓ‚>‚BX¥ŸÓ‚E‚K1¦ŸÓ‚N‚U1§ŸÓ‚X‚_ ¨ŸÓ‚b‚g1¡ƒ¡ƒŸÓ‚‚¡„1¡ŸÓ‚¡‚¡ ¢ŸÓ‚¡‚¡$1¡…¡…ŸÓ‚¡‚¡ ¡†€Ã{¡ŸÓ‚¤‚¤,2¢ŸÓ‚¤0‚¤<1£ŸÓ‚¤?‚¤K2¥ŸÓ‚¤N‚¤Z ¦ŸÓ‚¤]‚¤b1¡‡¡‡ŸÓ‚¤‚¤¡ˆ‚¡ŸÓ‚§'‚§K1¢ŸÓ‚§N‚§U1£ŸÓ‚§X‚§_ ¥ŸÓ‚§b‚§g1¡‰¡‰ŸÓ‚§‚§#¡Š1¡ŸÓ‚ª&‚ª-X¢ŸÓ‚ª0‚ª9£ŸÓ‚ª<‚ª? ¥ŸÓ‚ªB‚ªG1¡‹¡‹ŸÓ‚ª‚ª"¡Œ1¡ŸÓ‚­&‚­-X¢ŸÓ‚­0‚­9£ŸÓ‚­<‚­?1¥ŸÓ‚­B‚­I ¦ŸÓ‚­L‚­Q1¡¡ŸÓ‚­‚­"¡Ž¡ŸÓ‚°,‚°2 ¢ŸÓ‚°5‚°:1¡¡ŸÓ‚°‚°¡1¡ŸÓ‚³‚³  ¢ŸÓ‚³#‚³(1¡‘¡‘ŸÓ‚³‚³¡’1¡ŸÓ‚¶3‚¶: ¢ŸÓ‚¶=‚¶B1¡“¡“ŸÓ‚¶‚¶.¡”8ƒò81 ŸìƒòŸì1 ŸõƒòŸõ1  oƒò o1 €Å””¿¿™™‚” ŸÓƒtƒt‚”€ç€…3€¬€è€…4€­/€‰^€Ü&¡ŸÓƒƒ ƒƒ€ó‚¢ŸÓƒƒƒƒ= £ŸÓƒƒ@ƒƒD ¥ŸÓƒƒGƒƒK ¦ŸÓƒƒOƒƒS §ŸÓƒƒVƒƒ[‚Š*Š*ŸÓƒƒƒƒ¡•‚¡ŸÓƒ…ƒ…2¢ŸÓƒ…ƒ…& £ŸÓƒ…)ƒ….‚¡4¡4ŸÓƒ…ƒ… ‚¡ŸÓƒ†ƒ†Y¢ŸÓƒ† ƒ†- £ŸÓƒ†0ƒ†5‚__ŸÓƒ†ƒ† €Å••¿¿™™‚• ŸÓƒ‰ƒ‰!‚•&êŸÓƒ‹ƒ‹‚¡–¡–ŸÓƒ‹ƒ‹¡—&êŸÓƒƒ‚¡˜¡˜ŸÓƒƒ ¡™€Å––¿¿™™‚– qŸÓƒ‘ƒ‘#‚–€ç€…3€¬€è€…4€­€Û¡ŸÓƒ’#ƒ’+2¢ŸÓƒ’/ƒ’6 £ŸÓƒ’9ƒ’>‚¡š¡šŸÓƒ’ƒ’€Û¡ŸÓƒ“ƒ“# ¢ŸÓƒ“&ƒ“+‚¡›¡›ŸÓƒ“ƒ“€Å——¿¿™™‚— 7ŸÓƒ›ƒ›‚—€ç€…3€¬€è€…4€­/€‰^€Ü‚¡ŸÓƒœƒœ% ¢ŸÓƒœ(ƒœ-‚¡œ¡œŸÓƒœƒœ‚¡ŸÓƒƒ2¢ŸÓƒ ƒ' £ŸÓƒ*ƒ/‚¡4¡4ŸÓƒƒ ¡€Å˜˜¿¿™™‚˜}ŸÓƒ¡ƒ¡ ‚˜€ç€…3€¬€è€…4€­/€‰^€Ü‚¡ŸÓƒ¢ƒ¢ ¢ŸÓƒ¢ƒ¢X‚?‚?ŸÓƒ¢ƒ¢  êŸÓƒ£ƒ£X¡ž¡žŸÓƒ£ƒ£ X¡ŸÓƒ¤ƒ¤&¢ŸÓƒ¤ƒ¤ £ŸÓƒ¤"ƒ¤&[¥ŸÓƒ¤Hƒ¤X ¦ŸÓƒ¤[ƒ¤`X Í ÍŸÓƒ¤ƒ¤ X¡ŸÓƒ¥ƒ¥2¢ŸÓƒ¥ƒ¥  £ŸÓƒ¥#ƒ¥(X¡4¡4ŸÓƒ¥ƒ¥ X¡ŸÓƒ¦ƒ¦Y¢ŸÓƒ¦ƒ¦' £ŸÓƒ¦*ƒ¦/X__ŸÓƒ¦ƒ¦ X¡ŸÓƒ§ ƒ§X¢ŸÓƒ§ƒ§ £ŸÓƒ§ƒ§$X¡Ÿ¡ŸŸÓƒ§ƒ§X¡ŸÓƒ¨ƒ¨ ¢ŸÓƒ¨ƒ¨"X¡ ¡ ŸÓƒ¨ƒ¨ 9¡ŸÓƒ©ƒ©$&¢ŸÓƒ©Pƒ©\‚£ŸÓƒ©_ƒ©vX¥ŸÓƒ©€²ƒ©€½[¦ŸÓƒ©€Áƒ©€Ñ §ŸÓƒ©€Ôƒ©€ÙX‚‚ŸÓƒ©ƒ©X¡ŸÓƒªƒª ¢ŸÓƒªƒª#X‹p‹pŸÓƒªƒª X¡ŸÓƒ«ƒ« ¢ŸÓƒ«ƒ«X¡0¡0ŸÓƒ«ƒ«  ¡ŸÓƒ¬ƒ¬X¢ŸÓƒ¬ƒ¬( £ŸÓƒ¬+ƒ¬0X¡7¡7ŸÓƒ¬ƒ¬X&X¡ŸÓƒ­ƒ­3 ¢ŸÓƒ­6ƒ­;X¡9¡9ŸÓƒ­ƒ­  êŸÓƒ¯ƒ¯X¡v¡vŸÓƒ¯ƒ¯ ¡¡&¡ŸÓƒ±ƒ± ¢ŸÓƒ±ƒ±"X¡¢¡¢ŸÓƒ±ƒ±¡£2¡ŸÓƒ³ƒ³ ¢ŸÓƒ³ƒ³X‹@‹@ŸÓƒ³ƒ³ ¡¤1¡ŸÓƒµƒµ ¢ŸÓƒµƒµ"X¡¥¡¥ŸÓƒµƒµ¡¦¡ŸÓƒ¸ƒ¸!¢ŸÓƒ¸$ƒ¸( £ŸÓƒ¸+ƒ¸0X¡§¡§ŸÓƒ¸ƒ¸¡¨&¡ŸÓƒºƒº&¢ŸÓƒº!ƒº&&£ŸÓƒºRƒº^[¥ŸÓƒºaƒºq ¦ŸÓƒºtƒºyX¡©¡©ŸÓƒºƒº¡ªX¡ŸÓƒ½ƒ½ ¢ŸÓƒ½!ƒ½&X¡‘¡‘ŸÓƒ½ƒ½¡«8ƒ}8X €Å™™¿¿™™‚™¡<ŸÓƒÉƒÉ‚™€ç€…3€¬€è€…4€­2¡ŸÓƒÊƒÊ4¢ŸÓƒÊ!ƒÊ0 £ŸÓƒÊ3ƒÊ8‚&¡¬¡¬ŸÓƒÊƒÊ€Åšš¿¿™™‚šŽŸÓƒÎƒÎ‚š€ç€…3€¬€è€…4€­X¡ŸÓƒÏƒÏ1¢ŸÓƒÏƒÏ'1£ŸÓƒÏ+ƒÏ2 ¥ŸÓƒÏ5ƒÏ:m¦ŸÓƒÏ=ƒÏW5¡­¡­ŸÓƒÏƒÏ Ÿ÷ƒŽŸ÷5 8ƒŽ85 €Å››¿¿™™‚›‹ŸÓƒÝƒÝ‚›‚'€Åœœ¿¿™™‚œ¡®ŸÓƒáƒá‚œ€ç€…3€¬€è€…4€­/€‰^€Ü9¡¯ŸÓƒâƒâ1¡°ŸÓƒãƒã &¡±ŸÓƒåƒå ¡² ¡³ŸÓƒçƒç¡´ &ŸÓƒèƒè €Å¿¿™™‚¡µŸÓƒìƒì‚€ç€…3€¬€è€…4€­I¡ŸÓƒíƒí&.¢ŸÓƒí)ƒí3&£ŸÓƒí6ƒíB‚(¡µ¡µŸÓƒíƒí€Åžž¿¿™™‚žýŸÓƒñƒñ‚ž€ç€…3€¬€è€…4€­ [¡ŸÓƒóƒó‚ ¢ŸÓƒôƒô £ŸÓƒõƒõ  ¥ŸÓƒöƒö Y¦ŸÓƒ÷ƒ÷^§ŸÓƒøƒø‚(¨ŸÓƒùƒùXñŸÓƒúƒú‚òŸÓƒûƒû#1óŸÓƒüƒü ôŸÓƒýƒý jõŸÓƒþƒþ#4‚›‚›ŸÓƒòƒò ŸøƒýŸø4 ŸùƒýŸù4 ŸúƒýŸú4 €ÅŸŸ¿¿™™‚Ÿ sŸÓ„ „ ‚Ÿ€ç€…3€¬€è€…4€­2¡ŸÓ„ „ % ¢ŸÓ„ („ -Y£ŸÓ„ 0„ =‚ s sŸÓ„ „ €Å  ¿¿™™‚ ¾ŸÓ„„‚ €è€…4€­ ¡¶ŸÓ„„ ¡·ŸÓ„„ ¡¸ŸÓ„„ ¡¹ŸÓ„„ ‚ ŸñŸÓ„„ƒ¾Iƒ¾Iƒ¾I ƒ¾I ƒ¾II $I €Å¡¡¿¿™™‚¡ŸñŸÓ„„‚¡ƒ/€¡º‚)€è€…4€­/€‰^€Ü‚ ¡»¡»ŸÓ„„‚ ŸÓ„„‚ ¡¼¡¼ŸÓ„„ ‚ ¡½¡½ŸÓ„„‚ ¡¾¡¾ŸÓ„„‚ ¡¿¡¿ŸÓ„ „ ¡ÀƒŸñ‚ ƒŸñ‚ ƒŸñ‚  ƒŸñ‚  ƒŸñ‚ ‚  $‚  ¡Á€Å¢¢¿¿™™‚¢¡ŸÓ„&„&‚¢€ç€…3€¬€è€…4€­/€‰^€Ü‚¡ŸÓ„'„'I¢ŸÓ„'„'( £ŸÓ„'+„'0‚#¡¼¡¼ŸÓ„'„' 2¡ŸÓ„(„( ¢ŸÓ„(„(#‚#œœŸÓ„(„(2¡ŸÓ„)„) ¢ŸÓ„)„) ‚#ÇÇŸÓ„)„) ‚¡ŸÓ„*„* ¢ŸÓ„*„*#‚#¡Â¡ÂŸÓ„*„*‚*¡ŸÓ„+„+# ¢ŸÓ„+&„++‚#¡Ä¡ÄŸÓ„+„+¡Å€Å££¿¿™™‚£¡ÆŸÓ„-„-‚£‚#€Å¤¤¿¿™™‚¤ŽŸÓ„1„1‚¤€ç€…3€¬€è€…4€­ 7¡Ç¡ÇŸÓ„2„27¡È¡ÈŸÓ„3„37¡É¡ÉŸÓ„4„47¡Ê¡ÊŸÓ„5„57¡Ë¡ËŸÓ„6„67¡Ì¡ÌŸÓ„7„77¡Í¡ÍŸÓ„8„87¡Î¡ÎŸÓ„9„97†=†=ŸÓ„:„:7¡Ï¡ÏŸÓ„;„;2¡ŸÓ„<„<.¢ŸÓ„ ¦ŸÓ„eA„eF‚ ¡ß¡ßŸÓ„e„e¡à8ƒŸü8‚  €Å¨¨¿¿™™‚¨¡ÑŸÓ„j„j‚¨‚ €Å©©¿¿™™‚©ŸýŸÓ„n„n‚©€ç€…3€¬€è€…4€­Y¡ŸÓ„p„p &¢ŸÓ„p#„p(‚.£ŸÓ„p+„p;^¥ŸÓ„p>„pG[¦ŸÓ„pJ„pZ §ŸÓ„p]„pb‚ IIŸÓ„p„p¡â8ƒŸý8‚  €Åªª¿¿™™‚ª¡áŸÓ„y„y‚ª€ç€…3€¬€è€…4€­‚êŸÓ„{„{&‚.¡ã¡ãŸÓ„{„{¡ä2.êŸÓ„}„}0‚.¡å¡åŸÓ„}„}¡æ¡ç€Å««¿¿™™‚«ŸþŸÓ„„„„‚«€ç€…3€¬€è€…4€­/€‰^€Ü7¡ŸÓ„†„†$‚/¢ŸÓ„†'„†4 £ŸÓ„†7„†<‚¡è¡èŸÓ„†„†¡é‚ ¡ŸÓ„ˆ„ˆ% ¢ŸÓ„ˆ(„ˆ-‚¡ê¡êŸÓ„ˆ„ˆ ¡ë8ƒŸþ8‚ ¡ì€Å¬¬¿¿™™‚¬¡ÃŸÓ„‘„‘‚¬€ç€…3€¬€è€…4€­6¡ŸÓ„“„“%‚¢ŸÓ„“(„“:‚/£ŸÓ„“=„“J ¥ŸÓ„“M„“R‚*¡í¡íŸÓ„“„“¡î¡ï€Å­­¿¿™™‚­¡ÖŸÓ„•„• ‚­‚€Å®®¿¿™™‚® #ŸÓ„š„š ‚®€ç€…3€¬€è€…4€­Y¡ŸÓ„›„› ¢ŸÓ„›-„›1&£ŸÓ„›4„›@2¥ŸÓ„›C„›J ¦ŸÓ„›M„›Q^§ŸÓ„›T„›][¨ŸÓ„›`„›p ñŸÓ„›s„›x‚¡ð¡ðŸÓ„›„› ¡ñ€Å¯¯¿¿™™‚¯ŽŸÓ„¦„¦‚¯€ç€…3€¬€è€…4€­Y¡ŸÓ„§„§$‚!¢ŸÓ„§'„§8‚"£ŸÓ„§;„§QX¥ŸÓ„§T„§]^¦ŸÓ„§`„§i §ŸÓ„§€„§€…[¨ŸÓ„§€ˆ„§€˜ ñŸÓ„§€›„§€ 6¡ò¡òŸÓ„§„§8ƒŽ86 ¡ó€Å°°¿¿™™‚° ŸÓ„®„® ‚°€ç€…3€¬€è€…4€­ Y¡ŸÓ„°„°&¢ŸÓ„±„± ‚£ŸÓ„²„²2¥ŸÓ„³„³.¦ŸÓ„´„´ §ŸÓ„µ„µ  ¨ŸÓ„¶„¶ ^ñŸÓ„·„·[òŸÓ„¸„¸1óŸÓ„¹„¹ ôŸÓ„º„º ‚¡ô¡ôŸÓ„¯„¯ Ÿÿƒ Ÿÿ‚  ƒ  ‚. ƒ  ‚2€Å±±¿¿™™‚±ŸÓ„ı€ç€…3€¬€è€…4€­‚¡ŸÓ„Å„Å(‚¢ŸÓ„Å+„Å5.ŸÓ„ńšõˆ~ƒˆ~.‚¡ö€Å²²¿¿™™‚² ŸÓ„˄˂²€ç€…3€¬€è€…4€­Y¡ŸÓ„Ì„Ì! ¢ŸÓ„Ì2„Ì6&£ŸÓ„Ì:„ÌF‚  ŸÓ„̡̄÷€Å³³¿¿™™‚³ …ŸÓ„фт³€ç€…3€¬€è€…4€­‚!¡ŸÓ„Ò„Ò+ ¢ŸÓ„Ò.„Ò2‚"£ŸÓ„Ò5„ÒK‚ … …ŸÓ„Ò„Ò¡ø€Å´´¿¿™™‚´ ŸÓ„Ö„Ö‚´€ç€…3€¬€è€…4€­Y¡ŸÓ„ׄ×(‚ ¢ŸÓ„×+„×7X£ŸÓ„×:„×J^¥ŸÓ„×M„×V[¦ŸÓ„×Y„×i §ŸÓ„×l„×q‚¡ù¡ùŸÓ„ׄ×8ƒ 8‚ ¡ú€Åµµ¿¿™™‚µ¡ûŸÓ„݄݂µ€ç€…3€¬€è€…4€­‚¡ŸÓ„Þ„Þ'8¢ŸÓ„Þ*„Þ8 £ŸÓ„Þ;„Þ@‚0¡ü¡üŸÓ„Þ„Þ¡ý€Å¶¶¿¿™™‚¶ ŸÓ„â„â‚¶€ç€…3€¬€è€…4€­7¡ŸÓ„ã„ã%8¢ŸÓ„ã(„ã6 £ŸÓ„ã9„ã>‚¡è¡èŸÓ„ã„ã‚ ¡ŸÓ„ä„ä% ¢ŸÓ„ä(„ä-‚¡ê¡êŸÓ„ä„ä 8ƒ 8‚ €Å··¿¿™™‚·Ž%ŸÓ„ì„ì‚·€ç€…3€¬€è€…4€­6¡ŸÓ„í„í"‚¢ŸÓ„í%„í48£ŸÓ„í7„íE ¥ŸÓ„íH„íM;Ž&Ž&ŸÓ„í„í8ƒŽ%8; €Å¸¸¿¿™™‚¸Ž'ŸÓ„ô„ô‚¸€ç€…3€¬€è€…4€­/€‰^€Ü X¡ŸÓ„õ„õ ¢ŸÓ„õ„õ<¡þ¡þŸÓ„õ„õ 4¡ŸÓ„ö„ö ¢ŸÓ„ö„ö"<¡¼¡¼ŸÓ„ö„ö [¡ŸÓ„ø„ø&Y¢ŸÓ„ø)„ø6‚£ŸÓ„ø9„øJ&¥ŸÓ„øM„øY ¦ŸÓ„ø\„øa<¡ÿ¡ÿŸÓ„ø„ø¢2¡ŸÓ„ú„ú 1¢ŸÓ„ú#„ú*&£ŸÓ„ú-„ú9 ¥ŸÓ„ú<„úA<¢¢ŸÓ„ú„ú¢4¡ŸÓ„þ„þ$ ¢ŸÓ„þ'„þ+ £ŸÓ„þ.„þ2 ¥ŸÓ„þ5„þ:<¢¢ŸÓ„þ„þ¢‚¡ŸÓ„ÿ„ÿI¢ŸÓ„ÿ"„ÿ- £ŸÓ„ÿ0„ÿ5<¢¢ŸÓ„ÿ„ÿ2¡ŸÓ……8¢ŸÓ……2 £ŸÓ…6…;<œœŸÓ……2¡ŸÓ……&¢ŸÓ……( £ŸÓ…+…0<ÇÇŸÓ…… ‚¡ŸÓ…… ¢ŸÓ……#<¡Â¡ÂŸÓ……;¡ŸÓ……[¢ŸÓ…"…2 £ŸÓ…5…:<¡Ä¡ÄŸÓ……¢ Y¡ŸÓ……# ¢ŸÓ…&…*&£ŸÓ…-…22¥ŸÓ…5…C‚ ¦ŸÓ…F…P‚ I§ŸÓ…T…m^¨ŸÓ…q…z[ñŸÓ…}…€1òŸÓ…€…€— óŸÓ…€š…€¦ ôŸÓ…€©…€®<¢¢ŸÓ……¢8ƒŽ'8< €Å¹¹¿¿™™‚¹ŽŸÓ……‚¹<€Åºº¿¿™™‚ºúŸÓ……‚º€ç€…3€¬€è€…4€­/€‰^€Ü &¡ŸÓ……X¢ŸÓ……' £ŸÓ…*…/3¢ ¢ ŸÓ……6¡ŸÓ……&‚1¢ŸÓ…)…7 £ŸÓ…:…> ¥ŸÓ…A…F3¢ ¢ ŸÓ…… ¡ŸÓ… …4¢ŸÓ……# £ŸÓ…&…+3‹]‹]ŸÓ…… j¡ŸÓ……+1¢ŸÓ….…5 £ŸÓ…8…=3¢ ¢ ŸÓ…… ;¡ŸÓ… …  ¢ŸÓ… "… '3ŠŠŸÓ… … ‚0¡ŸÓ…!…!# ¢ŸÓ…!&…!+3‚ ‚ ŸÓ…!…!9¡ŸÓ…"…" ¢ŸÓ…""…"'3¡þ¡þŸÓ…"…" Y¡ŸÓ…#…#! ¢ŸÓ…#$…#)3¢ ¢ ŸÓ…#…#‚2¡ŸÓ…$…$* ¢ŸÓ…$-…$23¢¢ŸÓ…$…$*êŸÓ…%…%/3¢¢ŸÓ…%…%8ƒú83 €Å»»¿¿™™‚»¢ ŸÓ…3…3‚»3€Å¼¼¿¿™™‚¼¢ŸÓ…7…7‚¼€ç€…3€¬€è€…4€­‚¡ŸÓ…8…8&‚/¢ŸÓ…8)…86 £ŸÓ…89…8>‚3¢¢ŸÓ…8…8€Å½½¿¿™™‚½ ŸÓ…<…<‚½€ç€…3€¬€è€…4€­/€‰^€Ü&¡ŸÓ…=…= X¢ŸÓ…=#…=, £ŸÓ…=/…=4‚¢ ¢ ŸÓ…=…=6¡ŸÓ…>…>+‚4¢ŸÓ…>.…>? £ŸÓ…>B…>G‚¢ ¢ ŸÓ…>…>‚¡ŸÓ…?…?$ ¢ŸÓ…?'…?,‚€ª€ªŸÓ…?…? ‚*¡ŸÓ…@…@. ¢ŸÓ…@1…@6‚ŠŠŸÓ…@…@ ‚3¡ŸÓ…A…A* ¢ŸÓ…A-…A2‚‚ ‚ ŸÓ…A…AX¡ŸÓ…B…B$ ¢ŸÓ…B'…B,‚¡þ¡þŸÓ…B…B ‚2¡ŸÓ…C…C. ¢ŸÓ…C1…C6‚¢¢ŸÓ…C…C‚5êŸÓ…D…D2‚¢¢ŸÓ…D…D8ƒ 8‚ €Å¾¾¿¿™™‚¾¢ŸÓ…Q…Q‚¾‚€Å¿¿¿¿™™‚¿LŸÓ…V…V‚¿€ç€…3€¬€è€…4€­X¡ŸÓ…W…W' ¢ŸÓ…W8…W<‚1£ŸÓ…W?…WM^¥ŸÓ…WP…WYY¦ŸÓ…W\…Wi[§ŸÓ…Wl…W| ¨ŸÓ…W…W€„*LLŸÓ…W…W8ƒL8* ¢€ÅÀÀ¿¿™™‚À¢ŸÓ…^…^‚À€ç€…3€¬€è€…4€­X¡ŸÓ…_!…_* ¢ŸÓ…_;…_?‚4£ŸÓ…_B…_S^¥ŸÓ…_V…__Y¦ŸÓ…_b…_o[§ŸÓ…_r…_€‚ ¨ŸÓ…_€……_€Š‚5¢¢ŸÓ…_…_€ÅÁÁ¿¿™™‚Á¢ŸÓ…b…b‚Á€ç€…3€¬€è€…4€­¡ŸÓ…c…c#¢ŸÓ…c&…c1 £ŸÓ…c4…c9‚2¢¢ŸÓ…c…c€Å¿¿™™‚¢ŸÓ…f…f‚€瀅3€¬€è€…4€­/€‰^€Ü‚1¡ŸÓ…g…g" ¢ŸÓ…g%…g*‚6¢¢ŸÓ…g…g*êŸÓ…h…h)‚6¢¢ŸÓ…h…hX¡ŸÓ…i…i$ ¢ŸÓ…i'…i+‚1£ŸÓ…i.…i<^¥ŸÓ…i?…iHY¦ŸÓ…iK…iX §ŸÓ…i[…i`‚6¢¢ŸÓ…i…i€ÅÃÿ¿™™‚âŸÓ…l…l‚À瀅3€¬€è€…4€­/€‰^€Ü‚4¡ŸÓ…m…m% ¢ŸÓ…m(…m-‚7¢¢ŸÓ…m…m‚5êŸÓ…n…n,‚7¢¢ŸÓ…n…nX¡ŸÓ…o…o$ ¢ŸÓ…o'…o+‚4£ŸÓ…o.…o?^¥ŸÓ…oB…oKY¦ŸÓ…oN…o[ §ŸÓ…o^…oc‚7¢¢ŸÓ…o…o€ÅÄÄ¿¿™™‚ÄÑŸÓ…r…r‚Ā瀅3€¬€è€…4€­3¡ŸÓ…s…s" ¢ŸÓ…s%…s*c¢¢ŸÓ…s…s ‚2¡ŸÓ…t…t# ¢ŸÓ…t&…t+c¢¢ŸÓ…t…t €ÅÅÅ¿¿™™‚ÅÏŸÓ…w…w‚ŀ瀅3€¬€è€…4€­‚2¡ŸÓ…x…x0‚6¢ŸÓ…x3…xNbÏÏŸÓ…x…x€ÅÆÆ¿¿™™‚ÆÍŸÓ…{…{‚ƀ瀅3€¬€è€…4€­‚2¡ŸÓ…|…|/‚7¢ŸÓ…|2…|LaÍÍŸÓ…|…|€ÅÇÇ¿¿™™‚Ç‹ìŸÓ…‘…‘‚Ç/€‰^€Ü ¡ŸÓ…’…’¢ŸÓ…’…’€ò¢¢ŸÓ…’…’ƒ‹ì€òƒ‹ì€òƒ‹ì€ò ƒ‹ì€ò ƒ‹ì€ò€ò $€ò €ÅÈÈ¿¿™™‚È‹ëŸÓ…ž…ž‚Ȁ瀅3€¬€è€…4€­&êŸÓ…Ÿ…Ÿ"€ñ‹ë‹ëŸÓ…Ÿ…ŸžNƒ‹ëžN€ñ†Aƒ‹ë†A€ñ&8ƒ‹ë8€ñ ¢€ÅÉÉ¿¿™™‚É‚&ŸÓ…¥…¥‚ɀ瀅3€¬€è€…4€­¡ŸÓ…¦…¦# ¢ŸÓ…¦5…¦9€ñ£ŸÓ…¦<…¦O€ò¥ŸÓ…¦R…¦c‚2¦ŸÓ…¦f…¦~*§ŸÓ…¦€…¦€š ¨ŸÓ…¦€…¦€¡\‚&‚&ŸÓ…¦…¦€ÅÊÊ¿¿™™‚Ê‚*ŸÓ…©…©‚ʀ瀅3€¬€è€…4€­¡ŸÓ…ª…ª"€ñ¢ŸÓ…ª%…ª8€ò£ŸÓ…ª;…ªL‚2¥ŸÓ…ªO…ªg‚5¦ŸÓ…ªj…ª€†^‚*‚*ŸÓ…ª…ª€ÅËË¿¿™™‚ËŒ–ŸÓ…­…­‚ˀ瀅3€¬€è€…4€­/€‰^€Ü\êŸÓ…®…®%¢¢ŸÓ…®…®^êŸÓ…¯…¯#¢¢ŸÓ…¯…¯ 8ƒŒ–8 €ÅÌÌ¿¿™™‚Ì ŸÓ……‚̟ӅÅÀŠ¢ ŸÓ…ąĀŠƒ ‚†ƒ †‚ ƒ  ‚€ÅÍÍ¿¿™™‚Í rŸÓ‡‡‚Í2‚¡ŸÓ‡'‡; ¢ŸÓ‡?‡D‚ r rŸÓ‡‡"¢!€ÅÎο¿™™‚΢"ŸÓ‡'‡'‚΢#€ÅœÏÏ¿À™°’™ŒŸÓ‡)‡)ŸÓ‡)‡)‚€¤¢$ƒ>’šŒŸÓ‡,‡,ŸÓ‡,‡,‚€¤¢%ƒ>’›ŒŸÓ‡/‡/ŸÓ‡/‡/‚€¤¢&ƒ>’œŒŸÓ‡2‡2ŸÓ‡2‡2‚€¤¢'ƒ>’ŒŸÓ‡5‡5ŸÓ‡5‡5‚€¤¢(ƒ>’žŒŸÓ‡8‡8ŸÓ‡8‡8. €¤¢)ƒ>’Ÿ¢*ŸÓ‡<‡<ŸÓ‡<‡<‚ €¤¢+ƒ>’ ¢,ŸÓ‡@‡@ŸÓ‡@‡@. €¤¢-ƒ>’¡¢.ŸÓ‡D‡D2ŸÓ‡D‡D2..€¤¢/ƒ>’¢¢0ŸÓ‡H‡HŸÓ‡H‡H..€¤¢1ƒ>’£¢2ŸÓ‡L‡LŸÓ‡L‡L..€¤¢3ƒ>’¤¢4ŸÓ‡U‡UŸÓ‡U‡U.€¤¢5ƒ>’¥¢6ŸÓ‡X‡XŸÓ‡X‡X‚Y€¤¢7ƒ>’¦¢8ŸÓ‡[ ‡[(ŸÓ‡[ ‡[(Y‚‚€¤†ØŸÓ‡[)‡[0†ŸÓ‡[1‡[2¢9ƒ>’§¢:ŸÓ‡c ‡c)ŸÓ‡c ‡c)‚‚€¤€ÖŸÓ‡c*‡c+¢;ƒ>’¨¢<ŸÓ‡i‡iŸÓ‡i‡iX‚€¤†ŸÓ‡i‡i ¢=ƒ>’©¢>ŸÓ‡o‡o$ŸÓ‡o‡o$‚‚€¤¢?ŸÓ‡o%‡o1¢@ƒ>’ª¢AŸÓ‡w‡wŸÓ‡w‡wƒ¿€”€•P‚ ƒ¿ƒ¿€¤€”€•P“QŸÓ‡w‡w!¢?ŸÓ‡w"‡w.¢Bƒ>’«¢CŸÓ‡‡ŸÓ‡‡1‚€¤ |ŸÓ‡‡#¢Dƒ>’¬¢EŸÓ‡‡‡‡ŸÓ‡‡‡‡‚‚€¤ vŸÓ‡‡‡‡#ƒ>’­¢FŸÓ‡Œ‡ŒŸÓ‡Œ‡Œ.€¤€Å¢"ƒ>’®¢GŸÓ‡Ž‡ŽŸÓ‡Ž‡Ž‚(€¤ƒ>’¯¢HŸÓ‡“‡“ŸÓ‡“‡“IX‚1‚(€¤ }ŸÓ‡“‡“' :ŸÓ‡“)‡“, vŸÓ‡“.‡“5 |ŸÓ‡“7‡“B¢Iƒ>‚Ï ‡ŸÓ‡Ï‡Ï‚Ï‚¢J¢JŸÓ‡Ï‡Ï#‚¢K¢KŸÓ‡Ï&‡Ï/ƒ ‡‚ƒ ‡‚‚ƒ ‡‚ƒ ‡‚ƒ ‡‚ƒ ‡‚ ƒ ‡‚ ƒ ‡‚‚ $‚ ‚€ÅÐÐÀÀ°°‚Р‰ŸÓ‡Ð‡Ð‚Ђ €ÅÑÑÀÀ°°‚Ñ•nŸÓ‡Ñ‡Ñ‚Ñ€ó‚€ÅÒÒÀÀ°°‚Ò–BŸÓ‡Ö‡Ö‚Ò‚êŸÓ‡×‡×%¢ÓÓŸÓ‡×‡× ‚¡ŸÓ‡Ø‡Ø$¢ŸÓ‡Ø'‡Ø* £ŸÓ‡Ø-‡Ø2¢¢L¢LŸÓ‡Ø‡Ø ƒ–B¢ƒ–B¢ƒ–B¢ ƒ–B¢ ƒ–B¢¢  ˆƒ–B ˆ¢‚$¢ ¢M€ÅÓÓÀÀ°°‚Ó”ŸÓ‡ä‡ä ‚Ó/€‰^€Ü€è€…4€­€ç€…3€¬ ‚êŸÓ‡å‡å0ZÓÓŸÓ‡å‡å ‚¡ŸÓ‡æ‡æ0¢ŸÓ‡æ3‡æ6 £ŸÓ‡æ9‡æ>ZÔÔŸÓ‡æ‡æ‚¡ŸÓ‡ç‡ç0 ¢ŸÓ‡ç3‡ç8ZjjŸÓ‡ç‡ç ‚¡ŸÓ‡è‡è0 ¢ŸÓ‡è3‡è8ZØØŸÓ‡è‡è‚¡ŸÓ‡é‡é1 ¢ŸÓ‡é4‡é9ZÜÜŸÓ‡é‡é‚¡ŸÓ‡ê‡ê0¢ŸÓ‡ê3‡ê6 £ŸÓ‡ê9‡ê>ZŒþŒþŸÓ‡ê‡ê ‚¡ŸÓ‡ë‡ë1¢ŸÓ‡ë4‡ë7 £ŸÓ‡ë:‡ë?ZÙÙŸÓ‡ë‡ë‚¡ŸÓ‡ì‡ì2¢ŸÓ‡ì5‡ì8 £ŸÓ‡ì;‡ì@ZÕÕŸÓ‡ì‡ì‚¡ŸÓ‡í#‡í9¢ŸÓ‡í<‡í? £ŸÓ‡íB‡íGZÖÖŸÓ‡í‡í‚¡ŸÓ‡î&‡î<¢ŸÓ‡î?‡îB £ŸÓ‡îE‡îJZÝÝŸÓ‡î‡î ‚¡ŸÓ‡ï‡ï1 ¢ŸÓ‡ï4‡ï9Z¢N¢NŸÓ‡ï‡ï ¢êŸÓ‡ð‡ð3Z›_›_ŸÓ‡ð‡ð  ˆƒ” ˆZ‚¢O€ÅÔÔÀÀ°°‚Ô¢PŸÓˆˆ ‚ÔZ€ÅÕÕÀÀ°°‚Õ¢QŸÓˆ ˆ ‚Հ瀅3€¬€è€…4€­$¢R€ÅÖÖÀÀ°°@ŸÓˆ ˆ  BŸÓˆ :ˆ ?‚Ö¢SŸÓˆ5ˆ5‚Ö¢T€Å#××ÀÀ°´’°¢UŸÓˆ7ˆ7ŸÓˆ7ˆ7€¤€Å¢Sƒ?’±¢VŸÓˆ9ˆ9ŸÓˆ9ˆ9€¤ÊŸÓˆ9ˆ9ƒ?’²¢WŸÓˆ=ˆ=ŸÓˆ=ˆ= €¤ÊŸÓˆ=ˆ=Œ@ŸÓˆ='ˆ=/ŒÖŸÓˆ=1ˆ=4¢Xƒ?’³¢YŸÓˆEˆEŸÓˆEˆE ^€¤ÊŸÓˆE ˆE&¢ZŸÓˆE/ˆE:¢[ƒ?‚ׂ$ŸÓˆOˆO‚×€Œ¢\ŸÓˆQˆQ€Å‚$ƒ‚$Z šƒ‚$ šZ  ƒ‚$ Z¢]€ÅØØÀÀ´´‚Ø…®ŸÓˆaˆa‚Ø€Œ€¶ŒAŸÓˆcˆc €Å…®€Œ¢\ŸÓˆdˆd€Å…®ƒ…®€· ›ƒ…® ›€· €¶ ƒ…® €·¢^€ÅÙÙÀÀ´´‚ÙD¢_*4‚Ù!ªÚÖÀÿ´° ‚Ú¢`¢a5;‚Ú¢bDÛÝÀÁ´Ã’´¢c¢a¢d€þ€þƒ@€œ€œÿ¤@¢fƒA’µ¢g¢a  ¢dyyƒ@r‚8‚8ÿ¤@ƒA’¶¢i¢a""¢d}}ƒ@€´‚9‚9ÿ¤@¢kƒA’·¢l¢a$$¢d€´€´‚9‚9ÿ¤@ƒA’¸¢m¢a''¢d‚‚ƒ@‚9SSÿ¤@¢nƒA’¹¢o¢a**%¢d‚‚%€˜ƒ@€œSSÿ¤@¢pƒA’º¢q¢a,,&¢d‚‚&€˜ƒ@SSÿ¤@ƒA’»¢r¢a..¢dŽŽƒ@‚:‚;‚;ÿ¤@ƒA’¼¢u¢a//¢d°°ƒ@‚:‚<‚<ÿ¤@ƒA’½¢w¢a00¢d‚‚{{‚=‚=ÿ¤@ƒA’¾¢a44¢d€‚€‚{‚>ÿ´@ƒHƒH’¿¢a55¢d€ƒ€ƒ‚=‚>ÿ´@ƒHƒH’À¢z¢a77¢d‚‚€ï€ï{‚>‚=‚=ÿ¤@ƒA’Á¢{¢a::"¢d!!"ÿ¤@ƒA’¢|¢a;;#¢d$$#ÿ¤@ƒA‚ÛƒÀA¢a„¢e¢a ‚ÛƒÀƒÀD¢`ÜÜÁÁÃÂܢy¢a33‚܀怅2€«€è€…4€­€ç€…3€¬ƒA¢y{‚>ƒA¢y‚=‚>€®D¢`ÝÝÁÁÃÂÝx¢}5=‚ÝDÞ<ÁÅÃӒ¢~( (¢VV˜€•ÿ¤@‚F‚F’Ä¢€¢~) )¢XX˜ÿ¤@‚F‚F’Å¢¢~* *¢``˜ÿ¤@‚F‚F’Æ¢‚¢~+ +¢^^˜€•ÿ¤@‚F‚F’Ç¢ƒ¢~, ,¢vv˜€•ÿ¤@‚F‚F’È¢„¢~- -¢pp˜€—ÿ¤@‚F‚F’É¢…¢~. .¢€ˆ€ˆ˜€¶ÿ¤@‚F‚F’Ê¢†¢~/ /¢jj˜€—ÿ¤@‚FŒÖ¢~//• ¢~/$/)‚F’Ë¢‡¢~0 0¢}} ˜€—ÿ¤@‚F‚F’Ì¢ˆ¢~1 1¢€„€„˜ ÿ¤@‚F‚F’Í¢‰¢~2 2¢€†€†˜€–ÿ¤@‚F‚F’΀À¢~3 3¢€Œ€Œ˜ÿ¤@‚F‚F’Ï‚ó¢~44¢€Ž€Ž˜ÿ¤@‚F‚F’ТŠ¢~9 9¢1 1‚?€•ÿ¤@ƒIƒI’Ñ¢Œ¢~: :¢> >‚?€•ÿ¤@ƒIƒI’Ò¢¢~; ;¢6 6‚?ÿ¤@ƒIƒI’Ó€À¢~< <¢D D‚?ÿ¤@ƒIƒI’Ô¢Ž¢~==¢::€•‚?ÿ¤@ƒI“­¢~='=,¢¢~=3=9ƒI ‚ÞƒÁA¢  „…k¢  ‚ÞƒJƒÁ¢’DxßßÂÂÕÕ‚ߢ“¢‚ßL€Œ€ö€÷€ö€ö¢”DxºààÂØÕê’ÕM¢ ¢• ƒÂA¢ „€µƒÂ€ñƒÂÿ¤@A¢ ƒK’Ö¢–¢¢•ƒÃA¢„€ñƒÃ ÿ¤@A¢ƒK’ו¢¢•ƒÄA¢„ƒÄ€ñƒÄ ÿ¤@A¢ƒK’Ø¢—¢¢•,,ƒÅA¢„€ñƒÅƒÅ ÿ¤@A¢ƒK’Ù”þ¢ ¢• ƒÆA¢„ƒÆ€ñƒÆ€ñƒÆÿ¤@A¢ƒK’Ú¢˜¢¢•ƒÇA¢„ƒÇ€ñƒÇ€ñƒÇÿ¤@A¢ƒK’Û¢™¢¢•ƒÈA¢!„?ƒÈ€ñƒÈ€ñƒÈÿ¤@A¢!ƒK’ܢ𢢕ƒÉA¢ „€µƒÉƒÉ€ñƒÉÿ¤@A¢ ƒK’Ý•¢¢•ƒÊA¢„ƒÊ€ñƒÊ€ñƒÊÿ¤@A¢ƒK’Þ¢ ¢•!! ƒËA¢„€ñƒËÿ¤@A¢ƒK’ߢ›¢ ¢•(( ƒÌA¢„€ñƒÌ€ñƒÌ€ñƒÌÿ¤@A¢ƒK’࢜¢ ¢•)) ƒÍA¢„€ñƒÍ€ñƒÍ€ñƒÍÿ¤@A¢ƒK’ᢢ ¢•** ƒÎA¢„€ñƒÎ€ñƒÎ€ñƒÎÿ¤@A¢ƒK’⢞¢ ¢•$$ ƒÏA¢„€ñƒÏ€ñƒÏ ÿ¤@A¢ƒK’㢟¢  ¢•##ƒÐA¢  „€ñƒÐ€ñƒÐ ÿ¤@A¢  ƒK’䢠¢!!¢•  ƒÑA¢!!!„ƒÑ €ñƒÑ ÿ¤@A¢!!!¢¡¢!!ƒK’墢¢""¢•""ƒÒA¢""!„ƒÒ €ñƒÒ ÿ¤@A¢""!¢¡¢""ƒK’梣¢##¢•&&ƒÓA¢##!„ƒÓ €ñƒÓ€ñƒÓÿ¤@A¢##!¢¡¢##ƒK’ç•¢%% ¢• ƒÔA¢%%„ƒÕƒú¢%%!„ƒÔƒÕƒÕ€ñƒÔƒÕƒÕÿ¤@A¢%%ƒú¢%%!ƒK’è•¢&& ¢• ƒÖA¢&&„ƒÖ€ñƒÖÿ¤@A¢&&ƒK’颤¢((¢•%%ƒ×A¢((„€ñƒ×ƒ×ÿ¤@A¢((ƒK‚àƒØ¢¥¢¦  „ƒÙA¢¦  „…m¢¦  ‚àƒLƒØƒÙ¢§DxááÚÚêê‚ᢨ¢¦‚áL€Œ€ö€÷€ö€ö¢©DxŠ ââÚê’êM¢¦ ¢ª ƒÚ¢¥¢¦!„ƒÛA¢¦02„€µƒÚ€òƒÚƒÛÿ¤@¢¥¢¦!A¢¦02ƒM’뢖¢¦¢ª""ƒÜ¢¥¢¦„ƒÝA¢¦„€òƒÜƒÝ ÿ¤@¢¥¢¦A¢¦ƒM’ì”þ¢¦ ¢ª ƒÞ¢¥¢¦„ƒßA¢¦„ƒÞƒß€òƒÞƒß€òƒÞƒßÿ¤@¢¥¢¦A¢¦ƒM’í•¢¦¢ªƒà¢¥¢¦„ƒáA¢¦%'„ƒà€òƒàƒá€òƒàƒáÿ¤@¢¥¢¦A¢¦%'ƒM’î•¢¦ ¢ª ƒâ¢¥¢¦„ƒãA¢¦%'„ƒâ€òƒâƒã ÿ¤@¢¥¢¦A¢¦%'ƒM’¢¦¢ª33ƒä¢¥¢¦„ƒåA¢¦ "„€òƒäƒåƒä ÿ¤@¢¥¢¦A¢¦ "ƒM’𕢦¢ªƒæ¢¥¢¦„ƒçA¢¦%'„ƒæ€òƒæƒçƒçÿ¤@¢¥¢¦A¢¦%'ƒM’ñ”ÿ¢¦ ¢ª ƒè¢¥¢¦„ƒéA¢¦%'„ƒè€òƒèƒéƒéÿ¤@¢¥¢¦A¢¦%'ƒM’ò•¢¦ ¢ª ƒêA¢¦„ƒëP¢¦"$„ƒì¢¥¢¦.2„ƒêƒë€òƒìƒê€òƒìƒëÿ¤@A¢¦P¢¦"$¢¥¢¦.2¢«¢¦ƒM’󢬢¦ ¢ª ƒí¢¥¢¦„ƒîA¢¦„ƒïP¢¦"$„ƒíƒîƒï€òƒíƒî€òƒíƒïÿ¤@¢¥¢¦A¢¦P¢¦"$ƒM’ô•¢¦ ¢ª ƒð¢¥¢¦„ƒñA¢¦„ƒòP¢¦"$„ƒðƒñƒòƒò€òƒðƒñƒòƒòÿ¤@¢¥¢¦A¢¦P¢¦"$ƒM’õ¢­¢¦ ¢ª$$ ƒóƒú¢¦„ƒô¢¥¢¦"„ƒõA¢¦&(„ƒöP¢¦57„ƒóƒôƒõƒóƒöƒó€òƒôƒõƒó€òƒôƒöÿ¤@ƒú¢¦¢¥¢¦"A¢¦&(P¢¦57ƒM’ö•¢¦ ¢ª ƒ÷A¢¦„ƒøP¢¦!#„ƒ÷ƒø€òƒ÷ƒøÿ¤@A¢¦P¢¦!#¢®¢¦ƒM’÷¢¯¢¦  ¢ª  ƒù¢¥¢¦  „ƒúA¢¦ . 0„ƒûP¢¦ 4 6„ƒùƒùƒùƒúƒûƒû€òƒùƒúƒûƒûÿ¤@¢¥¢¦  A¢¦ . 0P¢¦ 4 6ƒM’ø¢°¢¦"" ¢ª ƒü¢¥¢¦""„ƒýA¢¦""„ƒüƒý €òƒüƒýƒüƒýÿ¤@¢¥¢¦""A¢¦""ƒM’ù¢¢¢¦##¢ªƒþ¢¥¢¦##„ƒÿA¢¦##„ƒþƒÿ €òƒþƒÿ ÿ¤@¢¥¢¦##A¢¦##ƒM’ú¢ ¢¦$$¢ª„¢¥¢¦$$„„A¢¦$$„„„ €ò„„ ÿ¤@¢¥¢¦$$A¢¦$$ƒM’û¢±¢¦&&¢ª((„¢¥¢¦&&„„A¢¦&&„„P¢¦&"&$„„„„€ò„„„ÿ¤@¢¥¢¦&&A¢¦&&P¢¦&"&$ƒM’ü¢²¢¦''¢ª**„¢¥¢¦''„„A¢¦''„„P¢¦'"'$„„„„€ò„„„ÿ¤@¢¥¢¦''A¢¦''P¢¦'"'$ƒM’ý¢³¢¦))¢ª„¢¥¢¦))„„ A¢¦))„€ò„„ „„ ÿ¤@¢¥¢¦))A¢¦))ƒM’þ”ꢦ**¢ª--„ ¢¥¢¦**!„„ A¢¦*.*0„€µ„ „ „ €ò„ „ ÿ¤@¢¥¢¦**!A¢¦*.*0ƒM’ÿ¢´¢¦++¢ª..„ ¢¥¢¦++#„„ A¢¦+8+:„€µ„ ?„ „ €ò„ „ ÿ¤@¢¥¢¦++#A¢¦+8+:ƒM“¢µ¢¦-- ¢ª00 „¢¥¢¦--„„A¢¦--„€ò„„„ÿ¤@¢¥¢¦--A¢¦--ƒM“¢¶¢¦..¢ª11„¢¥¢¦..„„A¢¦..„€ò„„„ÿ¤@¢¥¢¦..A¢¦..ƒM‚⢷¢¸>E‚⢹Dxaãñ?=“¢º¢¸¢»„ž„ž‚@ÿ¤@ƒO“¢½¢¸¢»„ „ ‚Aÿ¤@ƒO“¢¿¢¸¢»€—ÿ¤@ƒO“¢À¢¸**¢»66ÿ¤@¢ÁƒO“¢¸00¢¸00‚B€¬ƒQ ƒQ“¢¸00¢¸00‚B‚B€¬ƒQ‚B ‚BƒQ“¢¸00¢¸00‚B€¬ƒQƒQ“ ¢¸00¢¸00‚B€¬ƒQƒQ“ ¢¸00¢¸00‚B€¬ƒQ ƒQ“ ¢¸00¢¸00‚B €¬ƒQ  ƒQ“ ¢Ã¢¸22¢»‚W‚W€•€—‚B€•ÿ¤@¢Ä¢¸22*¢Å¢¸2;2>¢Æ¢¸2V2bƒO“ ¢Ç¢¸33¢»ƒƒ€—€•€•ÿ¤@ƒO“¢¸;;¢¸;;‚C€¬ƒRƒR“¢¸;;¢¸;;‚C€¬ƒR ƒR“¢¸;;¢¸;;‚C €¬ƒR  ƒR“¢É¢¸CC¢»„‰„‰‚@ÿ¤@ƒO“¢º¢¸DD¢»„ž„ž‚@ÿ¤@ƒO“¢Ê¢¸EE¢»„ „ ‚@€—‚Dÿ¤@ƒO“¢Ì¢¸FF*¢»„£„£*‚@‚E‚Dÿ¤@ƒO“¢Î¢¸GG¢»„¦„¦‚@€Ã‚Eÿ¤@ƒO“¢Ï¢¸HH¢»„ª„ª‚@€•€•€•‚Eÿ¤@ƒO“¢Ð¢¸JJ¢»„­„­‚Eÿ¤@ƒO“¢Ñ¢¸KK¢»„°„°‚E€•ÿ¤@ƒO“¢Ò¢¸LL¢»„´„´‚E€•ÿ¤@ƒO“¢Ó¢¸MM ¢»„¸„¸ ‚E€•ÿ¤@ƒO“¢Ô¢¸NN¢»„¼„¼‚Eÿ¤@ƒO“¢Õ¢¸PP¢»„¿„¿‚D€—ÿ¤@ƒO“¢Ö¢¸QQ¢»„ÄÂD‚Fÿ¤@ƒO“¢Ø¢¸RR¢»„ƄƂD€Ã‚Cÿ¤@ƒO“¢Ù¢¸TT¢»„لقF€Ã‚Fÿ¤@ƒO“ ¢Ú¢¸UU¢»„݄݂Fÿ¤@ƒO“!¢Û¢¸VV¢»„à„à‚F€Ã‚Gÿ¤@ƒO“"¢Ý¢¸XX¢»„ä„ä‚Gÿ¤@ƒO“#¢Þ¢¸YY¢»„ç„ç‚G€•ÿ¤@ƒO“$¢ß¢¸ZZ#¢»„ë„ë#‚G€—€—ÿ¤@ƒO“%¢¸cc¢¸cc‚H€¬ƒW ƒW“&¢¸cc¢¸cc‚H‚H€¬ƒW‚H ‚HƒW“'¢¸cc¢¸cc‚H€¬ƒWƒW“(¢¸cc¢¸cc‚H€¬ƒWƒW“)¢¸cc¢¸cc‚H€¬ƒW ƒW“*¢¸cc¢¸cc‚H €¬ƒW  ƒW“+¢½¢¸jj¢»„ „ ‚Aÿ¤@ƒO“,¢á¢¸nn ¢»„(„( ‚Aÿ¤@ƒO“-¢â¢¸oo¢»„C„C‚A€—ÿ¤@ƒO“.¢ã¢¸pp¢»„F„F‚A‚Iÿ¤@ƒO“/¢å¢¸qq¢»„P„P‚A€—ÿ¤@ƒO“0¢æ¢¸rr¢»„S„S‚Aÿ¤@ƒO“1¢ç¢¸ss¢»„V„V‚Aÿ¤@ƒO“2¢è¢¸tt¢»„[„[‚Aÿ¤@ƒO“3¢é¢¸uu¢»„^„^‚A€•€—ÿ¤@ƒO“4¢ê¢¸vv¢»„a„a‚A‚I‚Iÿ¤@ƒO“5¢ë¢¸ww¢»„d„d‚A‚I€Ãÿ¤@ƒO“6¢ì¢¸xx¢»„l„l‚A‚Hÿ¤@ƒO“7¢í¢¸€‚€‚¢»…_…_‚Jÿ¤@ƒO“8¢ï¢¸€ƒ€ƒ¢»…b…b‚Kÿ¤@ƒO“9¢ñ¢¸€„€„ ¢»…|…| ‚K‚Jÿ¤@ƒO“:¢ò¢¸€…€…%¢»…Ž…Ž%‚Jÿ¤@ƒO“;¢ó¢¸€†€†¢»…œ…œ‚Lÿ¤@ƒO“<¢õ¢¸€‡€‡¢»…£…£‚Jÿ¤@ƒO“=¢ö¢¸€ˆ€ˆ¢»…¬…¬‚Kÿ¤@ƒO“>¢÷¢¸€‰€‰"¢»…»…»"‚Lÿ¤@ƒO‚㢼¢¸‚ãDx¢·ää??‚䢾¢¸‚äDx¢·åå??‚墸¢¸&& ‚å‚MDx¢·ææ??‚æ¢Â¢¸00‚æ‚B¢ú¢ú¢¸00‚B¢û¢û¢¸00ƒO¢Â‚BƒO¢Â‚B‚BƒO¢Â‚BƒO¢Â‚BƒO¢Â‚BƒO¢Â‚B  ‚B¢üDx¢·çç??‚ç¢Í¢¸66‚ç¢ýDx¢·èè??‚è¢Ë¢¸77‚èDx¢·éé??‚é¢Ü¢¸88‚éDx¢·êê??‚ê¢×¢¸99‚êDx¢·ëë??‚ë¢È¢¸;;‚ë¢þ¢¸<<‚E¢ÿ¢¸==£¢¸>>£¢¸??£¢¸@@£¢¸AAƒO¢È‚CƒO¢È‚CƒO¢È‚C  Dx¢·ìì??‚ì¢ä¢¸aa‚ìDx¢·íí??‚í¢à¢¸cc‚퀗£¢¸dd€—£¢¸ee€—£¢¸ff€—£¢¸gg €•£¢¸hh ƒO¢à‚HƒO¢à‚H‚HƒO¢à‚HƒO¢à‚HƒO¢à‚HƒO¢à‚H  ‚HDx¢·îî??‚î¢ô¢¸~~‚îDx¢·ïï??‚ï¢ð¢¸ ‚Dx¢·ðð??‚ð¢î¢¸€€€€ ‚ð€•Dx¢·ññ??‚ñ¬£ DK‚ñ£ Dxð–ò³?5K“?£ £  £  €—€—€—€¤€Ö£   †£ ƒ]“@£ £  £  „€”€•P„„€¤€”€•P†8£   ƒ]“A£ £  £  „€”€•P„ €¤€”€•P€Ö£   ƒ]“B££  £  „€”€•P„ €¤€”€•P€Ö£   ƒ]“C££  £  „€”€•P„ €¤€”€•P€Ö£ ƒ]“D££ !! £ !! „€”€•P„ €¤€”€•P€Ö£ ! ! ƒ]“E££ "" £ "" „A£ ""„„ €¤A£ ""€Ö£ " " ƒ]“F££ ## £ ## „A£ ##„„ €¤A£ ##€Ö£ ##ƒ]“G££ $$ £ $$ „€”€•P„„€¤€”€•P•Ó£ $ $€Ö£ $$ƒ]“H££ %%£ %%„€”€•P„„ €¤€”€•P€Ö£ % % ˆú£ % % ƒ]“I££ ++ £ ++ „€”€•P„€”€•P„€”€•P„€”€•P„„„„„„„„€¤€”€•P€”€•P€”€•P€”€•P†£ + + ]£ + +ˆ“£ ++€Ö£ ++ƒ]“J££ -- £ -- „€”€•P„€¤€”€•Pƒ]“K££ óó £ óó „ €”€•P€ó„ „ €¤€”€•PˆÔ£ ó ó £ƒ]“L£ øø£ øø„!££ øøŒä„!€¬ä££ øøä“M£ øø£ øø„"££ øøŒä„"€¬ä €££ øøä“N£ øø£ øø„#££ øøŒä„# €¬ä €€ ££ øøä“O£ øø£ øø„$££ øøŒä„$ €¬ä  ££ øøä“P£ øø£ øø„%££ øøŒä„%ä„% €¬ä$ä„%„&A€Ž,5„€„& ££ øøä“Q£ ‚¨‚¨£ ‚¨‚¨‚N‚´ƒ^ƒ^“R›£ ‚© ‚©£ ‚© ‚©„'€”€•P„(€”€•P‚Nu„'„'u„(u„(€¤ƒ^€”€•P€”€•P€§£ ‚©‚©†J£ ‚©‚©ƒ^“S‹£ ‚ª ‚ª£ ‚ª ‚ª„)€”€•P‚N„)u„)€¤ƒ^€”€•P†8£ ‚ª‚ªƒ^“T›£ ‚« ‚«£ ‚« ‚«„*€”€•P‚N„*„*€¤ƒ^€”€•P†8£ ‚«‚«ƒ^“UŸî£ ‚¬ ‚¬£ ‚¬ ‚¬„+€”€•P‚Nuu„+u„+€¤ƒ^€”€•P££ ‚¬‚¬££ ‚¬‚¬ƒ^“V¡T£ ‚­ ‚­£ ‚­ ‚­„,€”€•P‚Nu„,Su„,u„,€¤ƒ^€”€•P€§£ ‚­‚­££ ‚­‚­ƒ^“W‹~£ ‚® ‚®£ ‚® ‚®„-€”€•P‚Nu„-u„-€¤ƒ^€”€•P€§£ ‚®‚®££ ‚®‚®&ƒ^“X££ ‚¯ ‚¯£ ‚¯ ‚¯„.€”€•P‚Nu„.u„.€¤ƒ^€”€•P]£ ‚¯‚¯ƒ^“Y‹0£ ‚° ‚°£ ‚° ‚°‚Nu€¤ƒ^ƒ^“Z£ £ ‚³‚³£ ‚³‚³‚N€¤ƒ]“[£ ‚Á‚Á£ ‚Á‚Á„/A£ ‚Á‚Á„ ƒ_„/‚´ƒ_A£ ‚Á‚Áƒ_“\£"£ ‚͂ͣ ‚͂̈́0A£ ‚Á‚Á„ ƒ_„0„0€¤ƒ_A£ ‚Á‚Á“£ ‚͂̓_“]£#£ ‚Ăģ ‚ĂĄ1A£ ‚Á‚Á„ ƒ_„1„1‚¼ƒ_A£ ‚Á‚Á“£ ‚Ăă_“^£ ‚Ó‚Ó£ ‚Ó‚Ó„2A£ ‚Ó‚Ó„„3P£ ‚Ó‚Ó„„2„3‚k„2„2 ‚l„2„3‚´‚lA£ ‚Ó‚ÓP£ ‚Ó‚Ó£$£ ‚Ó‚Ó$£%£ ‚Ó0‚Ó;€‡:€Ñ£&£ ‚ÓU‚Ó_‚l“_£'£ ‚Ö ‚Ö£ ‚Ö ‚Ö„4A£ ‚Ó‚Ó„„5P£ ‚Ó‚Ó„‚l„4„5„4„5€¤‚lA£ ‚Ó‚ÓP£ ‚Ó‚Ó€Ö£ ‚Ö‚Ö‚l“`£ ‚ç ‚ç£ ‚ç ‚ç$€¬ƒ`ƒ`“a£ ‚ç ‚ç£ ‚ç ‚ç$€¬ƒ` ƒ`“b£ ‚ç ‚ç£ ‚ç ‚ç$ €¬ƒ`  ƒ`“c£ ‚ç ‚ç£ ‚ç ‚ç$ €¬ƒ`  ƒ`“d£ ‚ç ‚ç£ ‚ç ‚ç$$ €¬ƒ`ƒ`“e£ ‚é‚é£ ‚é‚é$‚O‚´ƒa€»£ ‚é‚éƒa“f£*£ ‚ë ‚ë£ ‚ë ‚ë‚O$€¤ƒaƒa“g£+£ ‚ì‚ì£ ‚ì‚ì‚O€¤ƒaƒa“hŸã£ ‚é‚é£ ‚é‚é‚´ƒaDx¬£)ƒa“i‚ó£ ‚ú‚ú£ ‚ú‚ú„6A£ ‚ò‚ò„„7•Ú£ ‚ò‚ò„„7„6$$+„6„7€¤+A£ ‚ò‚ò•Ú£ ‚ò‚ò]£ ‚ú‚úš·£ ‚ú)‚ú>+“j£,£ ‚þ‚þ£ ‚þ‚þ„8A£ ‚ò‚ò„„9•Ú£ ‚ò‚ò„„8+„8„9€¤+A£ ‚ò‚ò•Ú£ ‚ò‚ò€Ö£ ‚þ‚þ+“k£-£ ƒ ƒ£ ƒ ƒ„:A£ ‚ò‚ò„„;•Ú£ ‚ò‚ò„+„:„; €¤+A£ ‚ò‚ò•Ú£ ‚ò‚ò+“l£.£ ƒ ƒ£ ƒ ƒ„A£ ‚ò‚ò„„?•Ú£ ‚ò‚ò„+„>„?„?„>€¤+A£ ‚ò‚ò•Ú£ ‚ò‚ò•Ú£ ƒƒ+“n£0£ ƒ ƒ £ ƒ ƒ „@A£ ‚ò‚ò„„A•Ú£ ‚ò‚ò„+„@„A„A„@€¤+A£ ‚ò‚ò•Ú£ ‚ò‚ò•Ú£ ƒ!ƒ%+“o£ „]„]£ „]„]„B¢¥£ „]„]„ „C” £ „]„]„)„B„C„B„C„C%„B„C€Œ„B„C„B„C‚´¢¥£ „]„]” £ „]„]£1£ „_„_£2£ „b„b£3£ „d„d“p‚ï£ „„„„£ „„„„„D¢¥£ „]„]„ „E” £ „]„]„„D„E€¤¢¥£ „]„]” £ „]„]“q£4£ „† „†£ „† „†„F¢¥£ „]„]„ „G” £ „]„]„„F„G„F€­„G €¤¢¥£ „]„]” £ „]„]‡$£ „†„†•4£ „†„†!“r‚÷£ „– „–£ „– „–„H¢¥£ „]„]„ „I” £ „]„]„„H„I„H €¤¢¥£ „]„]” £ „]„]‡$£ „–„–“s‚é£ „› „›£ „› „›„J¢¥£ „]„]„ „K” £ „]„]„„J„K„J„K€¤¢¥£ „]„]” £ „]„]‡$£ „›„›“t‚ê£ „¡ „¡£ „¡ „¡„L¢¥£ „]„]„ „M” £ „]„]„„L„M„L„M€¤¢¥£ „]„]” £ „]„]‡$£ „¡„¡“u‚ñ£ „¦ „¦£ „¦ „¦„N¢¥£ „]„]„ „O” £ „]„]„„N„Oƒb„N„O€¤¢¥£ „]„]” £ „]„]“v£6£ „¨ „¨£ „¨ „¨„P¢¥£ „]„]„ „Q” £ „]„]„„P„Q„P„Q€¤¢¥£ „]„]” £ „]„]“w‚ì£ „« „«£ „« „«„R¢¥£ „]„]„ „S” £ „]„]„„R„S„R„S„R„S€¤¢¥£ „]„]” £ „]„]‡$£ „«„«• £ „«„«“x£7£ „¸ „¸$£ „¸ „¸$„T¢¥£ „]„]„ „U” £ „]„]„„T„U„T„U„T„U€¤¢¥£ „]„]” £ „]„]£8£ „¸&„¸)“y£9£ „Á „Á,£ „Á „Á,„V¢¥£ „]„]„ „W” £ „]„]„„V„W„V„W„W„V„W€¤¢¥£ „]„]” £ „]„]‡$£ „Á.„Á1]£ „Á3„Á4£:“z£;£ „Ç „Ç£ „Ç „Ç„X¢¥£ „]„]„ „Y” £ „]„]„„X„Y„X„Y€¤¢¥£ „]„]” £ „]„]“{£<£ „h„h'£ „h„h'„Z¢¥£ „]„]„ „[” £ „]„]„„Z„[ €Œ„Z„[‚¼¢¥£ „]„]” £ „]„]•&£ „h(„h-“|Ÿã£ „]„]£ „]„]„\¢¥£ „]„]„ „]” £ „]„]„‚´¢¥£ „]„]” £ „]„]Dx¬‡“}£ „ЄУ „ЄЄ^¢¥£ „ЄЄ „_” £ „ЄР„„^„_%„^„_€Œ„^„_„^„_‚´¢¥£ „ЄД £ „ЄР£1£ „фѣ2£ „Ò„Ò£3£ „Ó„Ó“~‚ï£ „÷„÷£ „÷„÷„`¢¥£ „ЄЄ „a” £ „ЄР„„`„a€¤¢¥£ „ЄД £ „ЄР“£4£ „ù „ù£ „ù „ù„b¢¥£ „ЄЄ „c” £ „ЄР„„b„c„b€­„c €¤¢¥£ „ЄД £ „ЄР‡$£ „ù„ù•4£ „ù„ù!“€‚÷£ … …£ … …„d¢¥£ „ЄЄ „e” £ „ЄР„„d„e„d €¤¢¥£ „ЄД £ „ЄР‡$£ ……“‚é£ … …£ … …„f¢¥£ „ЄЄ „g” £ „ЄР„„f„g„f„g€¤¢¥£ „ЄД £ „ЄР‡$£ ……“‚‚ê£ … …£ … …„h¢¥£ „ЄЄ „i” £ „ЄР„„h„i„h„i€¤¢¥£ „ЄД £ „ЄР‡$£ ……“ƒ‚ñ£ …# …#£ …# …#„j¢¥£ „ЄЄ „k” £ „ЄР„„j„k„k€¤¢¥£ „ЄД £ „ЄР“„£6£ …% …%£ …% …%„l¢¥£ „ЄЄ „m” £ „ЄР„„l„m„l„m€¤¢¥£ „ЄД £ „ЄР“…‚ì£ …' …'£ …' …'„n¢¥£ „ЄЄ „o” £ „ЄР„„n„o„n„o„n„o€¤¢¥£ „ЄД £ „ЄР‡$£ …'…'• £ …'…'“†£7£ …5 …5$£ …5 …5$„p¢¥£ „ЄЄ „q” £ „ЄР„„p„q„p„q„p„q€¤¢¥£ „ЄД £ „ЄР£8£ …5&…5)“‡£;£ …; …;£ …; …;„r¢¥£ „ЄЄ „s” £ „ЄР„„r„s„r„s€¤¢¥£ „ЄД £ „ЄР“ˆ£<£ „ׄ×'£ „ׄ×'„t¢¥£ „ЄЄ „u” £ „ЄР„„t„u €Œ„t„u‚¼¢¥£ „ЄД £ „ЄР•&£ „×(„×-“‰Ÿã£ „ЄУ „ЄЄv¢¥£ „ЄЄ „w” £ „ЄР„‚´¢¥£ „ЄД £ „ЄРDx¬‡‚ò£=£ // ‚ò£>Dx¬góóx}ГУ?£ 00£ 00„xA£ 00„„yP£ 00„ „x„y€µ„x€¤A£ 00P£ 00†£ 00ƒc“‹£@£ 33£ 33„zA£ 44„„{P£ 3&3(„„z„{€µ„{€µ„z€¤A£ 44P£ 3&3(†£ 33£A£ 33ƒc“Œ£B£ 66£ 66„|P£ 6'6)„€µ„|„|„|€¤P£ 6'6)£A£ 66€Ö£ 6,6-ˆú£ 6.6/ƒc‚ó‹r£ << ‚ó£CDx¬ ôô}Š•“£D£ >> £ >> „}€”€•P„}„}„}„}€¤€”€•P]£ > > £ >>ƒd“Ž£E£ KK£ KK„~A£ KK„„~„~ €Ã„~€Ã„~ €¤A£ KK]£ KK£F£ KK£G£ K#K'ƒd“£H£ RR£ RR„€”€•P„€€”€•P„„€ „„€ €¤€”€•P€”€•P†£ RR•£ RR •£ R!R#ƒd“£I£ VV£ VV„€”€•P„‚€”€•P„ƒ€”€•P„„‚„ƒ„„„‚„ƒ„€¤€”€•P€”€•P€”€•P]£ VVŽâ£ VV‰U£ VVƒd“‘¢­£ cc £ cc „„€”€•P„…€”€•P„†€”€•P„„„…„„„†„„„…„„„†€¤€”€•P€”€•P€”€•P]£ c cŽâ£ cc‰U£ ccƒd“’”࣠mm £ mm „‡A£ m#m%„€µ„‡€µ€Ã„‡€¤A£ m#m%£J£ mmƒd““£K£ yy£ yy„ˆ€”€•P„ˆ „ˆ €¤€”€•P†£ yy‰U£ yyƒd“”£L£ €„€„£ €„€„„‰€”£ €„&€„'„‰„‰ €¤€”£ €„&€„'”÷£ €„!€„$†£ €„+€„,ƒd‚ô£M£ €˜€˜ ‚ô£NDx¬‹õõŠ“•™“•£I£ €™€™£ €™€™„Š€”€•P„‹€”€•P„Œ€”€•P„Š„‹„Œ„ЄЄ‹„Œ„Š€¤€”€•P€”€•P€”€•P]£ €™€™Žâ£ €™€™£O£ €™€™ƒe“–’—£ €ž€ž£ €ž€ž„€”€•P„„„€¤€”€•P£O£ €ž€ž–'£ €ž€žƒe“—¢­£ €¤€¤ £ €¤€¤ „Ž€”€•P„€”€•P„€”€•P„Ž„„Ž„„Ž„„Ž„€¤€”€•P€”€•P€”€•P]£ €¤ €¤ˆ“£ €¤€¤‰U£ €¤€¤ƒe“˜•£ €ª€ª £ €ª€ª „‘€”€•P„’€”€•P„‘„’„‘„‘„’„‘€¤€”€•P€”€•P]£ €ª €ªˆ“£ €ª€ª€Ö£ €ª€ªƒe‚õ•£ €°€° ‚õ£PDx¬âö÷“á™É/“™£Q£ €²€²£ €²€²„“A£ €²$€²&„€µ„“„“„“€¤A£ €²$€²&ˆ¬£ €²€²¢¤£ €²)€²1ƒf“š£R£ €´€´£ €´€´„”€”€•P„”„”„”€¤€”€•P†£ €´€´‰U£ €´€´ƒf“›£S£ €¸€¸£ €¸€¸„•€”€•P„• „• €¤€”€•P]£ €¸€¸“¿£ €¸€¸ƒf“œ£H£ €¼€¼£ €¼€¼„–€”€•P„—€”€•P„–„— „–„— €¤€”€•P€”€•P†£ €¼€¼•£ €¼€¼ •£ €¼!€¼#ƒf“£T£ €À €À£ €À €À„˜€”€•P„˜ „˜„˜€¤€”€•P†£ €À€À]£ €À€À‰U£ €À€Àƒf“ž£U£ €Å€Å £ €Å€Å „™€”€•P„™„™„™€¤€”€•P†£ €Å €Å‰U£ €Å€Åƒf“Ÿ£V£ €Î€Î £ €Î€Î „š€”€•P„š„š€¤€”€•P†£ €Î €Î‰U£ €Î€Îƒf“ £W£ €× €×£ €× €×„›€”€•P„›„›€¤€”€•P†£ €×€×‰U£ €×€×ƒf“¡£X£ €Ý€Ý£ €Ý€Ý„œ€”€•P„€”€•P„ž€”€•P„œ)„„ž„œ„„ž€¤€”€•P€”€•P€”€•P£Y£ €Ý€Ý‰U£ €Ý€Ýƒf“¢£D£ €è€è £ €è€è „ŸA£ €è€è„„Ÿ„Ÿ„Ÿ„Ÿ€¤A£ €è€è]£ €è€è £ €è€èƒf“££Z£ €õ€õ£ €õ€õ„ €”€•P„ „ „ €¤€”€•P‰U£ €õ€õƒf“¤£[£ €ÿ€ÿ£ €ÿ€ÿ„¡€”€•P„¡ „¡„¡„¡€¤€”€•P]£ €ÿ€ÿ £ €ÿ€ÿƒf“¥£\£  £  „¢€”€•P„¢„¢„¢€¤€”€•P‰U£  ƒf“¦£]£  £  „£€”€•P„¤€”€•P„¥€”€•P„¦€”€•P„£„¤„¥„¦„£„¤„¥„¦€¤€”€•P€”€•P€”€•P€”€•P•£  •£ £^£ £_£ ƒf“§£`£ £ „§€”€•P„¨€”€•P„©€”€•P„ª€”€•P„§„¨„©„ª„§„¨„©„ª€¤€”€•P€”€•P€”€•P€”€•P‰U£ ƒf“¨£a£  £  „«€”€•P„¬€”€•P„­€”€•P„«„¬„­„«„¬„­€¤€”€•P€”€•P€”€•P]£ •£ •£ £^£ ƒf“©£b£ £ „®€”€•P„® „®„®„®€¤€”€•P†£ ‰U£ ƒf“ª”࣠%% £ %% „¯A£ %#%%„€µ„¯€µ„¯€¤A£ %#%%£J£ %%ƒf“«£c£ 2 2£ 2 2„°€”€•P„°„°€¤€”€•P‰U£ 22ƒf“¬£d£ 66£ 66„±€”€•P„±„±€¤€”€•P€Ö£ 66†£ 66ƒf“­'£ 99 £ 99 €¤†£ 99€Š£ 99ƒf“®£e£ ;;£ ;;„²€”€•P„²€¤€”€•Pƒf“¯£f£ = =£ = =„³€”€•P „´€”€•P„³„³„´„´€¤€”€•P€”€•P€Ö£ ==‰U£ ==ƒf“°£g£ B B£ B B„µ€”€•P „¶€”€•P„µ„µ„¶ €¤€”€•P€”€•P€Ö£ BB‰U£ BBƒf“±•£ G G£ G G„·€”€•P „·„· €¤€”€•P€Ö£ GG‰U£ GGƒf“²£h£ I I£ I I„¸€”€•P„¸„¸ €¤€”€•P€Ö£ II‰U£ IIƒf“³•£ NN £ NN „¹€”€•P „¹„¹ €¤€”€•P€Ö£ N N ‰U£ NNƒf“´£I£ QQ£ QQ„º€”€•P„»€”€•P„¼€”€•P„º„»„¼„º„º„»„¼„º€¤€”€•P€”€•P€”€•P]£ QQŽâ£ QQ‰U£ QQƒf“µ£i£ a a£ a a„½€”€•P„¾€”€•P„¿€”€•P„½„¾„¿„¾„½„¾„¿„¾€¤€”€•P€”€•P€”€•P]£ aa‰U£ aaŽâ£ aaƒf“¶£j£ ii£ ii„À€”€•P„À„À„À„À€¤€”€•P†£ ii]£ ii“¿£ iiƒf“·£k£ p p£ p p„Á€”€•P„Á „Á„Á€¤€”€•P†£ pp‰U£ ppƒf“¸£ rr £ rr „€”€•P„ „€¤€”€•P£l£ rr“¿£ rrƒf“¹£m£ tt£ tt„À”€•P„ÄÄÀ¤€”€•P†£ tt€Ö£ tt”²£ t t#Dx¬•ƒf“º£n£ uu£ uu„Ä€”€•P„ĄĀ¤€”€•P†£ uu€Ö£ uuƒf“»£o£ xx£ xx„Å€”€•P„Æ€”€•P„ńƄńƄńƀ¤€”€•P€”€•P£p£ xx£q£ xx…²£ x"x*ƒf“¼£r£ }}£ }}„Ç€”€•P„È€”€•P„É€”€•P„DŽȄɄDŽDŽȄɄǀ¤€”€•P€”€•P€”€•P]£ }}Žâ£ }}‰U£ }}ƒf“½¢š£ £ „Ê€”€•P„ʄʀ¤€”€•P€Ö£ ƒf“¾£s£ „„£ „„„Ë€”€•P„Ì€”€•P„Í€”€•P„˄̄˄̈́˄̄̈́˄̀¤€”€•P€”€•P€”€•P]£ „„ˆ“£ „„‰U£ „„”²£ „ „#Dx¬•ƒf“¿¢­£ ŒŒ £ ŒŒ „΀”€•P„Ï€”€•P„Ѐ”€•P„΄τ΄Є΄τ΄Ѐ¤€”€•P€”€•P€”€•P]£ Œ Œˆ“£ ŒŒ‰U£ ŒŒƒf“À£t£ ŽŽ£ ŽŽ„Ñ€”€•P„Ò€”€•P„Ó€”€•P„ф҄ӄф҄Ӏ¤€”€•P€”€•P€”€•P]£ ŽŽ“¿£ ŽŽ›£ ŽŽƒf“Á£u£ £ „Ô€”€•P„Ô„Ô€¤€”€•P]£ £v£ ƒf“£w£ ‘‘£ ‘‘„Õ€”€•P„Ö€”€•P„Õ„Ö„Õ„Ö€¤€”€•P€”€•P]£ ‘‘£v£ ‘‘ƒf“ãx£ ’’£ ’’„×€”€•P„Ø€”€•P„ׄ؄ׄ؀¤€”€•P€”€•P]£ ’’£v£ ’’ƒf“Ä£y£ ““£ ““„Ù€”€•P„Ú€”€•P„Û€”€•P„لڄۄللڄۄـ¤€”€•P€”€•P€”€•P]£ ““£v£ ““ƒf“Å£z£ ””£ ””„Ü€”€•P„Ü „Ü €¤€”€•P]£ ””£v£ ””ƒf“Æ£{£ ••£ ••„Ý€”€•P„Þ€”€•P„݄ބ݄ހ¤€”€•P€”€•P]£ ••£v£ ••ƒf“Ç£|£ ––£ ––„߀”€•P„ß „ß €¤€”€•P]£ ––£v£ ––ƒf‚ö£}£ 3 3‚ö£~Dx¬•m÷÷àáÈɓȣ£ 4 4£ 4 4„à€”€•P„à)„à„à€¤€”€•P‰U£ 44 ƒg‚÷j£ ˜˜ ‚÷£€Dx¬ãøøáâÉÛ“É£e£ ™™£ ™™„န€•P„ဤ€”€•Pƒh“Ê££ ›› £ ›› €¤†£ ››ˆ¬£ ››ƒh“˖ߣ  £  €¤“£ ‡Ü£ ƒh“Ì£‚£ ŸŸ £ ŸŸ €¤Žâ£ Ÿ Ÿ“­£ ŸŸ£ƒ£ Ÿ$Ÿ'ƒh“Í£„£ ¡¡ £ ¡¡ €¤Žâ£ ¡¡ˆ¬£ ¡¡ƒh“Σ…£ ¥¥£ ¥¥€¤Žâ£ ¥¥ˆ¬£ ¥¥ƒh“Ï•£ ©©£ ©© €¤Žâ£ ©©ˆ¬£ ©©ƒh“Д࣠¬¬ £ ¬¬ €µ€¤ƒh“Ñ£†£ ®®£ ®®€¤Žâ£ ®®ƒh“Ò£‡£ ±±£ ±±€¤Žâ£ ±±ƒh“Ó£ˆ£ ´´£ ´´ €¤Žâ£ ´´ƒh“Ô£‰£ ··£ ··€¤Žâ£ ··ƒh“գУ »»£ »»€¤Žâ£ »»ƒh“Ö£‹£ ÀÀ£ ÀÀ€¤Žâ£ ÀÀ•£ À"À#ƒh“×£Œ£ ÆÆ£ ÆÆ€¤Žâ£ ÆÆ•£ Æ"Æ#ƒh“Ø££ ÌÌ£ ÌÌ €¤Žâ£ ÌÌ•£ Ì̃h“Ù£Ž£ ÍÍ£ ÍÍ€¤Žâ£ ÍÍ•£ Í̓h“Ú££ ÏÏ£ ÏÏ€¤Žâ£ ÏÏ•£ Ïσh‚ø££ ÑÑ‚ø£‘Dx¬‹ùùâäÛÜ“Û”ê£ ÓÓ£ ÓÓ„—£ Ô=Ô> „〔£ Ô?Ô@„â„「„â„〄€”£ Ô=Ô>€”£ Ô?Ô@‰U£ ÓÓƒi‚ù„äA£ Ú Ú„£’£ ÚÚ ‚ù€Œ„äDx¬úúååÜÜ‚ú£“£ ÜÜ‚úL€Œ€ö€÷€ö€ö£”Dx¬ÑûûåêÜà“Ü£•£ ÝÝ£ ÝÝ„åA£ Ý%Ý'„ ƒj„値A£ Ý%Ý'†£ Ý݃k“Ý”þ£ ÞÞ £ ÞÞ „æA£ ÞÞ„ƒj„æ„æ€¤A£ ÞÞ•£ Þ Þ€Ö£ ÞÞƒk“Þ•£ ßß £ ßß „çA£ ßß„„耔€•P„ç„è„èƒj„ç„è„耤A£ ß߀”€•P]£ ß ß•£ ßß”²£ ßß"ƒk“ß”ê£ à࣠àà„éA£ áá„ „éƒj„逤A£ áá‰U£ ààƒk‚û¡W£ åå ‚û£–Dx¬aüüêëàá“à•&£ ææ £ ææ „êA£ ææ„„ê„ꀤA£ ææ€Ö£ ææƒl‚ü• £ ëë‚ü£—Dx¬sýýëìáâ“á•£ ìì£ ìì„뀔€•P „ë„ë„뀤€”€•P€§£ ìì‰U£ ììƒm‚ý™G£ õõ ‚ý£˜Dx¬“þþìîâã“⣙£ öö£ öö„쀔€•P „퀔€•P„ì%„ì„í„퀤€”€•P€”€•P†J£ öö•£ ööƒn‚þ„ øøŒ’’£ øø‚þ„îê£ ùùä„£š£ ùù Sê£ úú#ä„î‚ ‚ £ úúƒ]’’„ øøŒä„ïƒ]’’„𣣠øøŒä„ðƒ]’’„ñ££ øøŒä„ñ ƒ]’’„ò££ øøŒä„ò ƒ]’’„ó££ øøŒä„óä„ó $ä„î Dx¬ÿÿôôãã‚ÿ£›£ ‚+‚+‚ÿ£œDx¬Vôÿãé“㣣 ‚,‚,£ ‚,‚,„ô€”€•P„ô„ô€¤€”€•P“¿£ ‚,‚,ƒo“䢱£ ‚-‚-£ ‚-‚-„õ€”€•P„ö€”€•P„õ„ö„õ„ö€¤€”€•P€”€•P]£ ‚-‚-“¿£ ‚-‚-ƒo“å”࣠‚.‚. £ ‚.‚. „÷€”€•P€µ„÷€µ„÷€¤€”€•P£J£ ‚.‚.ƒo“æ£D£ ‚/‚/ £ ‚/‚/ „ø€”£ ‚/‚/„ø„ø?„ø„ø€¤€”£ ‚/‚/]£ ‚/ ‚/€Ö£ ‚/‚/ƒo“ç£I£ ‚0‚0£ ‚0‚0„ù€”€•P„ú€”£ ‚0"‚0#„û€”€•P„ù„ú„û„ù„ù?„ú„û„ù€¤€”€•P€”£ ‚0"‚0#€”€•P]£ ‚0‚0”²£ ‚0‚0€Ö£ ‚0‚0ƒo“袭£ ‚1‚1 £ ‚1‚1 „ü€”€•P„ý€”£ ‚1‚1 „þ€”€•P„ü„ý„ü„þ„ü?„ý„ü„þ€¤€”€•P€”£ ‚1‚1 €”€•P]£ ‚1 ‚1”²£ ‚1‚1€Ö£ ‚1‚1ƒoƒ„ÿA£ ‚J‚J„‚'£ ‚J‚Jƒ„ÿê£ ‚K‚Ku„ÿ£ž£ž£ ‚K‚K u„ÿê£ ‚L‚L+u„ÿ£Ÿ£Ÿ£ ‚L‚L£ Dx¬é郣¡£ ‚O‚OƒL€Œ€ö€÷€ö€ö£¢Dx¬— éó “飣£ ‚P ‚P£ ‚P ‚P…€”€•Pu…u€¤€”€•P€§£ ‚P‚Pƒp“꣤£ ‚U ‚U£ ‚U ‚U…€”€•P u……€¤€”€•PŸß£ ‚U‚U€§£ ‚U‚Uƒp“ë•&£ ‚]‚] £ ‚]‚] …€”€•Pu……€¤€”€•P€§£ ‚]‚]ƒp“죥£ ‚v‚v2£ ‚v‚v2…€”€•P€¶u…u…u…u…€¤€”€•P£¦£ ‚v3‚vJ£§£ ‚vK‚vQ€§£ ‚vR‚vS£¨ƒp“í™÷£ ‚‰ ‚‰£ ‚‰ ‚‰…€”€•P…€”€•P…u…u…u…€¤€”€•P€”€•P†J£ ‚‰‚‰€§£ ‚‰‚‰ƒp“î•£ ‚Ž‚Ž £ ‚Ž‚Ž …€”€•P…€”€•P……u………u…€¤€”€•P€”€•P]£ ‚Ž ‚Ž”²£ ‚ނޛ£ ‚Ž‚Žƒp“£ ‚‘ ‚‘£ ‚‘ ‚‘…€”€•Pu…uä…€¤€”€•P€§£ ‚‘‚‘ƒp“𣪣 ‚›‚› £ ‚›‚› … €”€•Pu… u… €¤€”€•P]£ ‚›‚›ƒp“ñ£«£ ‚‚£ ‚‚… €”€•Pu… u… €¤€”€•P€§£ ‚‚££ ‚‚!ƒp“ò£¬£ ‚¤‚¤£ ‚¤‚¤… €”€•Pu… Su… u… €¤€”€•P€§£ ‚¤‚¤££ ‚¤‚¤ƒpƒ££ ‚¨‚¨ƒ ƒ]£‚N›ƒ]£›… €”€•P… €”€•P‚Nu… … u… u… ‹ƒ]£‹…€”€•P‚N…u…›ƒ]£›…€”€•P‚N……Ÿîƒ]£Ÿî…€”€•P‚Nuu…u…¡Tƒ]£¡T…€”€•P‚Nu…Su…u…‹~ƒ]£‹~…€”€•P‚Nu…u…£ƒ]££…€”€•P‚Nu…u…‹0ƒ]£‹0‚NuDx¬óóƒ…A£ ‚Á‚Á„ £!£ ‚Á‚Áƒ€Œ…£­£ ‚‚ÂDx¬£!£®£ ‚ÂÃDx¬£!ƒ]£!…A£ ‚Á‚Á„ ƒ_…£"ƒ]£!£"…A£ ‚Á‚Á„ ƒ_……Dx¬óóƒ…A£ ‚Ó‚Ó„…P£ ‚Ó‚Ó„˜ £ ‚Ó‚Óƒ……£$£ ‚Ó‚Ó$Dx¬˜ … £&£ ‚ÓU‚Ó_Dx¬˜ €Œ……£¯£ ‚Õ‚Õ Dx¬˜ ƒ]˜ …A£ ‚Ó‚Ó„…P£ ‚Ó‚Ó„……‚k…… ‚l……£'ƒ]˜ £'…A£ ‚Ó‚Ó„…P£ ‚Ó‚Ó„‚l…………Dx¬óóƒ£(£ ‚ç ‚çƒƒ]£($ƒ]£($ƒ]£($ ƒ]£($ ƒ]£($$  $Dx¬óóƒ£)£ ‚é‚éƒ$€»£ ‚é‚éDx¬£)‚O£°£ ‚ê‚êDx¬£)£±£ ‚é‚éDx¬ƒ]£)$‚O£*ƒ]£)£*‚O$£+ƒ]£)£+‚OŸãƒ]£)ŸãDx¬óóƒ…A£ ‚ò‚ò„…•Ú£ ‚ò‚ò„‰0£ ‚ò‚òƒƒq€£² ‚P  €ç€…3€¬€è€…4€­…• £ ‚ô‚ô£³£´£ ‚÷‚÷£µ$$š·£ ‚ù‚ù£¶‚óƒ]‰0‚ó…A£ ‚ò‚ò„… •Ú£ ‚ò‚ò„… …$$+…… £,ƒ]‰0£,…!A£ ‚ò‚ò„…"•Ú£ ‚ò‚ò„…!+…!…"£-ƒ]‰0£-…#A£ ‚ò‚ò„…$•Ú£ ‚ò‚ò„+…#…$ £.ƒ]‰0£.…%A£ ‚ò‚ò„…&•Ú£ ‚ò‚ò„+…%…& £/ƒ]‰0£/…'A£ ‚ò‚ò„…(•Ú£ ‚ò‚ò„+…'…(…(…'£0ƒ]‰0£0…)A£ ‚ò‚ò„…*•Ú£ ‚ò‚ò„+…)…*…*…)£·Dx¬++ó󃣸£ ƒ(ƒ( ƒ£¹Dx¬  +-óô“󣺣 ƒ)ƒ)£ ƒ)ƒ)…+€”£ ƒ*ƒ*  …,€”£ ƒ,2ƒ,3…+…,…+…,€¤€”£ ƒ*ƒ* €”£ ƒ,2ƒ,3]£ ƒ)ƒ)ƒrƒ …-A£ ƒ6 ƒ6„‡ £ ƒ6ƒ6 ƒ %…-Dx¬  ..ôôƒ ….A£ ƒ7ƒ7„­£ ƒ7ƒ7ƒ ….Dx¬  //ôôƒ …/A£ ƒ8ƒ8„ …0P£ ƒ8ƒ8„‡£ ƒ8ƒ8 ƒ %…/…0Dx¬  11ôôƒ ”ë£ ƒ;ƒ;ƒ L€Œ€ö€÷€ö€ö£»Dx¬  1eô“ôM£ ƒ=ƒ= £ ƒ=ƒ= …1€”€•P …2€”€•P%…1…2€¤€”€•P€”€•Pƒs“õ'£ ƒ>ƒ> £ ƒ>ƒ> …3€”€•P …4€”€•P%…3…4…4€¤€”€•P€”€•P€Š£ ƒ>ƒ>ƒs“ö£¼£ ƒ?ƒ?£ ƒ?ƒ?…5A£ ƒ?ƒ? „…6€”€•P…5…6…6…5…6…6€¤A£ ƒ?ƒ? €”€•P]£ ƒ?ƒ?€Š£ ƒ?ƒ?ˆ“£ ƒ?#ƒ?$ƒs“÷¢ £ ƒ@ƒ@£ ƒ@ƒ@…7€”€•P …8€”€•P…7…8 %…7…8 €¤€”€•P€”€•P]£ ƒ@ƒ@€Š£ ƒ@ƒ@ƒs“ø¢¢£ ƒAƒA£ ƒAƒA…9€”€•P …:€”€•P…9…: %…9…: €¤€”€•P€”€•P]£ ƒAƒA€Š£ ƒAƒAƒs“ù£½£ ƒBƒB£ ƒBƒB…;€”€•P…<€”€•P …;…<…;%…<…;€¤€”€•P€”€•P]£ ƒBƒB‰U£ ƒBƒBƒs“ú”ê£ ƒCƒC£ ƒCƒC…=A£ ƒCƒC„…=…=€¤A£ ƒCƒC‰U£ ƒCƒCƒs“û¢´£ ƒDƒD£ ƒDƒD…>A£ ƒD-ƒD/„?…>…>€¤A£ ƒD-ƒD/‰U£ ƒDƒDƒs“ü¢³£ ƒEƒE£ ƒEƒE…?A£ ƒEƒE„…?…?€¤A£ ƒEƒE‰U£ ƒEƒEƒs“ý£¾£ ƒFƒF £ ƒFƒF …@A£ ƒFƒF„…@%…@%…@€¤A£ ƒFƒF‰L£ ƒFƒF‰M£ ƒF!ƒF#ƒs“þ£¿£ ƒIƒI£ ƒIƒI…A€”€•P…B€”€•P…C€”€•P …A…B…A%…C…B%…C…A%…C…A€¤€”€•P€”€•P€”€•P£À£ ƒIƒI‰L£ ƒIƒI‰M£ ƒIƒI ƒs“ÿ¢›£ ƒMƒM £ ƒMƒM …D€”£ ƒM"ƒM#…E€”€•P…D…E…D%…E€¤€”£ ƒM"ƒM#€”€•P£Á£ ƒMƒM£Â£ ƒMƒMƒs”£Ã£ ƒTƒT£ ƒTƒT…F€”€•P …G€”€•P…H€”€•P…I€”€•P…F…G…H…F…I…G…H…H%…F…I%…F…G…H…H€¤€”€•P€”€•P€”€•P€”€•P£Ä£ ƒTƒT]£ ƒTƒT‰L£ ƒTƒT‰M£ ƒTƒT”²£ ƒTƒT!ƒs”£Å£ ƒWƒW£ ƒWƒW…J€”€•P …K€”€•P…L€”€•P…J…K …L…K %…J…L%…J…K €¤€”€•P€”€•P€”€•P£Ä£ ƒWƒW†£ ƒWƒW‰L£ ƒWƒW‰M£ ƒWƒWƒs”£I£ ƒYƒY£ ƒYƒY…M€”€•P…NA£ ƒY ƒY"„…O€”€•P…M…N…O…M…M…N%…O…M€¤€”€•PA£ ƒY ƒY"€”€•P]£ ƒYƒYŽâ£ ƒYƒY‰U£ ƒYƒYƒs”£Æ£ ƒ\ƒ\£ ƒ\ƒ\…PA£ ƒ\$ƒ\&„…Q€”€•P…P…Q…Q…P…Q…Q€¤A£ ƒ\$ƒ\&€”€•P]£ ƒ\ƒ\‰U£ ƒ\ƒ\”²£ ƒ\)ƒ\,ƒs”£Ç£ ƒ^ƒ^£ ƒ^ƒ^…RA£ ƒ^"ƒ^$„…R …R%…R€¤A£ ƒ^"ƒ^$]£ ƒ^ƒ^‰U£ ƒ^ƒ^ƒs”£È£ ƒ`ƒ`£ ƒ`ƒ`…SA£ ƒ` ƒ`"„…T€”€•P…S…T…S%…T€¤A£ ƒ` ƒ`"€”€•P]£ ƒ`ƒ`‰U£ ƒ`ƒ`ƒs”•£ ƒbƒb £ ƒbƒb …UA£ ƒbƒb„…V€”€•P…U…V…U%…V€¤A£ ƒbƒb€”€•P]£ ƒb ƒb ‰U£ ƒbƒbƒs”•£ ƒdƒd £ ƒdƒd …WA£ ƒdƒd„…W…W€¤A£ ƒdƒd]£ ƒd ƒd‰U£ ƒdƒdƒs”£É£ ƒfƒf £ ƒfƒf …XA£ ƒfƒf„…X…X€¤A£ ƒfƒf]£ ƒfƒf‰U£ ƒfƒfƒs” ¢¬£ ƒhƒh £ ƒhƒh …YA£ ƒhƒh„…Z€”€•P…Y…Z…Y%…Z€¤A£ ƒhƒh€”€•P]£ ƒh ƒh‰U£ ƒhƒhƒs” £Ê£ ƒjƒj£ ƒjƒj…[A£ ƒj!ƒj#„…[ …[%…[%…[€¤A£ ƒj!ƒj#]£ ƒjƒj‰U£ ƒjƒjƒs” •£ ƒlƒl £ ƒlƒl …\A£ ƒlƒl„…\ €¤A£ ƒlƒl†8£ ƒl ƒl €Š£ ƒlƒlƒs” ”ÿ£ ƒnƒn £ ƒnƒn …]A£ ƒnƒn„…]…]€¤A£ ƒnƒn†8£ ƒn ƒn€Š£ ƒnƒnƒs” •£ ƒpƒp£ ƒpƒp…^A£ ƒpƒp „…^…^€¤A£ ƒpƒp †8£ ƒpƒp€Š£ ƒpƒpƒs””þ£ ƒrƒr £ ƒrƒr …_A£ ƒrƒr„…_…_%…_€¤A£ ƒrƒr†8£ ƒr ƒr €Ö£ ƒrƒr€Š£ ƒrƒrƒs”¢–£ ƒtƒt£ ƒtƒt…`A£ ƒtƒt„…` €¤A£ ƒtƒt€Š£ ƒtƒtƒs”£Ë£ ƒvƒv£ ƒvƒv…a€”€•P…b€”€•P …a %…b…a €¤€”€•P€”€•P†£ ƒvƒv€Š£ ƒvƒvƒs”£Ì£ ƒxƒx£ ƒxƒx…c€”€•P…d€”€•P …c %…d…c…c€¤€”€•P€”€•P†£ ƒxƒx€Š£ ƒxƒxƒsƒ £Í£ ƒƒƒ L€Œ€ö€÷€ö€ö£ÎDx¬weq ”£Ë£ ƒ€ƒ€£ ƒ€ƒ€…eA£ ƒ€)ƒ€+„…e \…e €¤A£ ƒ€)ƒ€+]£ ƒ€ƒ€€Š£ ƒ€ƒ€ƒt””ÿ£ ƒƒ £ ƒƒ …fA£ ƒ ƒ"„\…f…f€¤A£ ƒ ƒ"†8£ ƒ ƒ€Š£ ƒƒƒt””þ£ ƒ‚ƒ‚ £ ƒ‚ƒ‚ …gA£ ƒ‚!ƒ‚#„…g\…g%…g€¤A£ ƒ‚!ƒ‚#†8£ ƒ‚ ƒ‚ €Ö£ ƒ‚ƒ‚€Š£ ƒ‚ƒ‚ƒt”'£ ƒƒƒƒ £ ƒƒƒƒ …hA£ ƒƒƒƒ!„\…h…h€¤A£ ƒƒƒƒ!€Š£ ƒƒƒƒƒt”£Ï£ ƒ„ƒ„ £ ƒ„ƒ„ …iA£ ƒ„2ƒ„4„\…i…i€¤A£ ƒ„2ƒ„4€Š£ ƒ„"ƒ„#ƒt”£Ð£ ƒ†ƒ†£ ƒ†ƒ†…jA£ ƒ†'ƒ†)„…k€”€•P…j…k\…j…k€¤A£ ƒ†'ƒ†)€”€•P]£ ƒ†ƒ†€Š£ ƒ†ƒ†ƒt”•£ ƒ‡ƒ‡ £ ƒ‡ƒ‡ …lA£ ƒ‡ƒ‡!„…m€”€•P…l…m\…l%…m€¤A£ ƒ‡ƒ‡!€”€•P]£ ƒ‡ ƒ‡ €Š£ ƒ‡ƒ‡ƒt”M£ ƒˆƒˆ £ ƒˆƒˆ …nA£ ƒˆƒˆ„\…n€¤A£ ƒˆƒˆƒt”£Ñ£ ƒ‰ƒ‰£ ƒ‰ƒ‰…oA£ ƒ‰#ƒ‰%„…o…o\…o€¤A£ ƒ‰#ƒ‰%]£ ƒ‰ƒ‰“¿£ ƒ‰ƒ‰ƒt””ê£ ƒŠƒŠ£ ƒŠƒŠ…pA£ ƒŠƒŠ „…p\…p€¤A£ ƒŠƒŠ “¿£ ƒŠƒŠƒtƒ£Ò£ ƒƒƒL€Œ€ö€÷€ö€ö£ÓDx¬\q}"”£Ë£ ƒŽƒŽ£ ƒŽƒŽ…q€”£ ƒŽ'ƒŽ(…r€”£ ƒŽ%ƒŽ& …q …r…q €¤€”£ ƒŽ'ƒŽ(€”£ ƒŽ%ƒŽ&]£ ƒŽƒŽ€Š£ ƒŽƒŽƒu””ÿ£ ƒƒ £ ƒƒ …s€”£ ƒƒ …t€”£ ƒƒ…s…s…t…t€¤€”£ ƒƒ€”£ ƒƒ†8£ ƒ ƒ€Š£ ƒƒƒu””þ£ ƒƒ £ ƒƒ …u€”£ ƒƒ …v€”£ ƒƒ …u…v…u…v%…u…v€¤€”£ ƒƒ€”£ ƒƒ †8£ ƒ ƒ €Ö£ ƒƒ€Š£ ƒƒƒu”'£ ƒ‘ƒ‘ £ ƒ‘ƒ‘ …w€”£ ƒ‘ƒ‘ …x€”£ ƒ‘ƒ‘…w…x…x€¤€”£ ƒ‘ƒ‘€”£ ƒ‘ƒ‘€Š£ ƒ‘ƒ‘ƒu” M£ ƒ“ƒ“ £ ƒ“ƒ“ …y€”£ ƒ“ƒ“ …z€”£ ƒ“ƒ“…y…z€¤€”£ ƒ“ƒ“€”£ ƒ“ƒ“ƒu”!£Ñ£ ƒ”ƒ”£ ƒ”ƒ”…{€”£ ƒ”!ƒ”"…|€”£ ƒ”ƒ”  …{…|…{…|…{€¤€”£ ƒ”!ƒ”"€”£ ƒ”ƒ” ]£ ƒ”ƒ”“¿£ ƒ”ƒ”ƒuƒ…}¢¥£ „]„]„ …~” £ „]„]„‡£ „]„]ƒ…}…~M£ „e„eDx¬‡)…}…~…}…~…~%…}…~€Œ…}…~•¶£ „f„fDx¬‡£Ô£ „]„]Dx¬ ƒ]‡…¢¥£ „]„]„ …€” £ „]„]„)……€……€…€%……€€Œ……€……€‚ïƒ]‡‚ï…¢¥£ „]„]„ …‚” £ „]„]„……‚£4ƒ]‡£4…ƒ¢¥£ „]„]„ …„” £ „]„]„…ƒ…„…ƒ€­…„ ‚÷ƒ]‡‚÷……¢¥£ „]„]„ …†” £ „]„]„………†…… ‚éƒ]‡‚é…‡¢¥£ „]„]„ …ˆ” £ „]„]„…‡…ˆ…‡…ˆ‚êƒ]‡‚ê…‰¢¥£ „]„]„ …Š” £ „]„]„…‰…Š…‰…Š‚ñƒ]‡‚ñ…‹¢¥£ „]„]„ …Œ” £ „]„]„…‹…Œƒb…‹…Œ£6ƒ]‡£6…¢¥£ „]„]„ …Ž” £ „]„]„……Ž……Ž‚ìƒ]‡‚ì…¢¥£ „]„]„ …” £ „]„]„………………£7ƒ]‡£7…‘¢¥£ „]„]„ …’” £ „]„]„…‘…’…‘…’…‘…’£9ƒ]‡£9…“¢¥£ „]„]„ …”” £ „]„]„…“…”…“…”…”…“…”£;ƒ]‡£;…•¢¥£ „]„]„ …–” £ „]„]„…•…–…•…–Ÿãƒ]‡Ÿã…—¢¥£ „]„]„ …˜” £ „]„]„£ÕDx¬™™""ƒ…™¢¥£ „ЄЄ …š” £ „ЄР„‡£ „ЄЃ…™…šM£ „Ô„ÔDx¬‡…™…š%…™…š€Œ…™…š•¶£ „Õ„ÕDx¬‡£Ö£ „ЄÐDx¬ ƒ]‡…›¢¥£ „ЄЄ …œ” £ „ЄР„…›…œ%…›…œ€Œ…›…œ…›…œ‚ïƒ]‡‚ï…¢¥£ „ЄЄ …ž” £ „ЄР„……ž£4ƒ]‡£4…Ÿ¢¥£ „ЄЄ … ” £ „ЄР„…Ÿ… …Ÿ€­…  ‚÷ƒ]‡‚÷…¡¢¥£ „ЄЄ …¢” £ „ЄР„…¡…¢…¡ ‚éƒ]‡‚é…£¢¥£ „ЄЄ …¤” £ „ЄР„…£…¤…£…¤‚êƒ]‡‚ê…¥¢¥£ „ЄЄ …¦” £ „ЄР„…¥…¦…¥…¦‚ñƒ]‡‚ñ…§¢¥£ „ЄЄ …¨” £ „ЄР„…§…¨…¨£6ƒ]‡£6…©¢¥£ „ЄЄ …ª” £ „ЄР„…©…ª…©…ª‚ìƒ]‡‚ì…«¢¥£ „ЄЄ …¬” £ „ЄР„…«…¬…«…¬…«…¬£7ƒ]‡£7…­¢¥£ „ЄЄ …®” £ „ЄР„…­…®…­…®…­…®£;ƒ]‡£;…¯¢¥£ „ЄЄ …°” £ „ЄР„…¯…°…¯…°Ÿãƒ]‡Ÿã…±¢¥£ „ЄЄ …²” £ „ЄР„Dx¬³³""ƒ£×£ …i…i ƒï€’÷k£ØDx¬ ³³"5”"£Ù£ …n…n!£ …n…n!‚Q€•ÿ´@ƒvŒÇ£ …n#…n+ƒv”#£Û£ …v…v#£ …v…v#‚Q‚Rÿ´@ƒvŒÇ£ …v%…v-ƒv”$£Ý£ …w…w%£ …w…w%‚Q‚Rÿ´@ƒvŒÇ£ …w'…w/ƒv”%£Þ£ …x…x £ …x…x ‚Qÿ´@ƒvŒÇ£ …x"…x*ƒv”&£ß£ …|…| £ …|…| ‚Qÿ´@ƒvŒÇ£ …|"…|*£àƒv”'£á£ …}…}!£ …}…}!‚Q ÿ´@ƒv‡Û£ …}#…}'ƒv”(£â£ ……"£ ……"‚Q ÿ´@ƒvŒZ£ …$…,ƒv”)£ã£ …€…€ £ …€…€ ‚Qÿ´@ƒvƒv”*£ä£ ……%£ ……%‚Q ÿ´@ƒvŒÇ£ …'…/ƒv”+£å£ …‚…‚£ …‚…‚‚Q ÿ´@ƒvŒÇ£ …‚…‚%ƒv”,£æ£ …ƒ…ƒ£ …ƒ…ƒ‚Qÿ´@ƒvŒÇ£ …ƒ…ƒ%ƒv”-£ç£ …„…„!£ …„…„!‚QÛÿ´@ƒvŒÇ£ …„#…„+ƒv”.£è£ …………£ …………‚QÚÛÿ´@ƒv˜ú£ …………+ƒv”/£ …m …m£ …m …m‚Q‚´ƒvƒv”0£Ù£ …o…o%£ …o…o%‚Q€•€´ƒv£Ù‚QŒÇ€•ŒÇ£ …o'…o/ƒv”1£ç£ …š…š%£ …š…š%‚QÛ€´ƒv£ç‚QŒÇیǣ …š&…š.ƒv”2£è£ …›…›!£ …›…›!‚QÚÛ€´ƒv£è‚Q˜úÚÛ˜ú£ …›"…›.ƒv”3£Ú£ …Æ…Æ£ …Æ…Æ‚Q€ôƒx”4£é£ê£ …Þ…Þ%£ …Þ…Þ%‚S¤ƒy†£ …Þ&…Þ'ƒxƒ£Ú£ …m …mƒ§€Ž+= ƒx£Ú£Ù‚Q€•ƒx£Ú£Û‚Q‚Rƒx£Ú£Ý‚Q‚Rƒx£Ú£Þ‚Qƒx£Ú£ß‚Qƒx£Ú£á‚Q ƒx£Ú£â‚Q ƒx£Ú£ã‚Qƒx£Ú£ä‚Q ƒx£Ú£å‚Q ƒx£Ú£æ‚Qƒx£Ú£ç‚QÛƒx£Ú£è‚QÚÛ£Ùƒx£Ú£Ù‚Q€•£Ûƒx£Ú£Û‚Q‚R£Ýƒx£Ú£Ý‚Q‚R£Þƒx£Ú£Þ‚Q£ßƒx£Ú£ß‚Q£áƒx£Ú£á‚Q £âƒx£Ú£â‚Q £ãƒx£Ú£ã‚Q£äƒx£Ú£ä‚Q £åƒx£Ú£å‚Q £æƒx£Ú£æ‚Q£çƒx£Ú£ç‚QÛ£èƒx£Ú£è‚QÚÛƒx£Ú‚Q£Ùƒx£Ú£Ù‚Q€•£çƒx£Ú£ç‚QÛ£èƒx£Ú£è‚QÚÛDx¬£×³³55ƒ‹t¢~ƒ£ìDxq³³5;”5–ߢ~ ¢ €•ÿ¤@£íƒz”6£î¢~¢  €•ÿ¤@ƒz”7£ï¢~¢%%€•ÿ¤@£ðƒz”8£ñ¢~ ¢## €•€•ÿ¤@£òƒz”9£ó¢~!!%¢**%€•ÿ¤@ƒz”:£ô¢~"""¢''"€•ÿ¤@ƒzƒ¢‹¢~88ƒ€Ž€‚Ib¢Šƒ{¢‹¢Š‚?€•¢Œƒ{¢‹¢Œ‚?€•¢ƒ{¢‹¢‚?€Àƒ{¢‹€À‚?¢Žƒ{¢‹¢Ž€•‚?Dx³³;;ƒ•s¢~''ƒ€Ž€‚Ib ‚ƒ{•s‚˜€•¢€ƒ{•s¢€˜¢ƒ{•s¢˜¢‚ƒ{•s¢‚˜€•¢ƒƒ{•s¢ƒ˜€•¢„ƒ{•s¢„˜€—¢…ƒ{•s¢…˜€¶¢†ƒ{•s¢†˜€—¢‡ƒ{•s¢‡˜€—¢ˆƒ{•s¢ˆ˜ ¢‰ƒ{•s¢‰˜€–€Àƒ{•s€À˜‚óƒ{•s‚ó˜£õDx³³;;ƒ£ö¢}>Mƒ£÷DxxŽ&³³;ƒ‚”;¢}  ¢}  €­‚T€¬ƒ| ƒ|”<¢}  ¢}  €­‚T‚T€¬ƒ|‚T ‚Tƒ|”=¢}  ¢}  €­‚T€¬ƒ|ƒ|”>¢}  ¢}  €­‚T€¬ƒ|ƒ|”?¢}  ¢}  €­‚T€¬ƒ| ƒ|”@¢}  ¢}  €­‚T €¬ƒ|  ƒ|”Aˆ§¢} £ù €­‚Tÿ¤@ƒ|ƒ|”B£ú¢}£ù‚Tÿ¤@ƒ|ƒ|”C£û¢}AA£ùRR‚Tÿ¤@ƒ}”D¢}DD¢}DD€­‚U€¬ƒ~ ƒ~”E¢}DD¢}DD€­‚U‚U€¬ƒ~‚U ‚Uƒ~”F¢}DD¢}DD€­‚U€¬ƒ~ƒ~”G¢}DD¢}DD€­‚U€¬ƒ~ƒ~”H¢}DD¢}DD€­‚U€¬ƒ~ ƒ~”I¢}DD¢}DD€­‚U €¬ƒ~  ƒ~”J£ý¢}DD!£ùc,c/€­‚U€—ÿ¤@ƒ~ƒ~”K£þ¢}EE£ùdd‚Uÿ¤@ƒ}”L£ÿ¢}FF£ùee‚Uÿ¤@ƒ}”M¤¢}GG£ùff‚Uÿ¤@ƒ}”N¢}JJ¢}JJ€­‚V€¬ƒ ƒ”O¢}JJ¢}JJ€­‚V‚V€¬ƒ‚V ‚Vƒ”P¢}JJ¢}JJ€­‚V€¬ƒƒ”Q¢}JJ¢}JJ€­‚V€¬ƒƒ”R¢}JJ¢}JJ€­‚V€¬ƒ ƒ”S¢}JJ¢}JJ€­‚V €¬ƒ  ƒ”T£ý¢}JJ £ùo+o.€­‚V€—ÿ¤@ƒƒ”U¤¢}KK£ùpp‚Vÿ¤@ƒ}”V¤¢}LL£ùqq‚Vÿ¤@ƒ}”W¤¢}MM£ùrr‚Vÿ¤@ƒ}”X¢}PP¢}PP€­‚W€¬ƒ€ ƒ€”Y¢}PP¢}PP€­‚W‚W€¬ƒ€‚W ‚Wƒ€”Z¢}PP¢}PP€­‚W€¬ƒ€ƒ€”[¢}PP¢}PP€­‚W€¬ƒ€ƒ€”\¢}PP¢}PP€­‚W€¬ƒ€ ƒ€”]¢}PP¢}PP€­‚W €¬ƒ€  ƒ€”^£ý¢}P$P'£ù|2|5€­‚W€—ÿ¤@ƒ€ƒ€”_¤¢}QQ£ù}}‚Wÿ¤@ƒ}”`¤¢}RR£ù~~‚Wÿ¤@ƒ}”a¤¢}SS£ù‚Wÿ¤@ƒ}”b¤ ¢}TT£ù€€€€‚Wÿ¤@ƒ}”c¤ ¢}UU£ù€€‚Wÿ¤@ƒ}”d¤ ¢}VV£ù€‚€‚‚Wÿ¤@ƒ}”e¤ ¢}WW£ù€ƒ€ƒ‚Wÿ¤@ƒ}”f¤ ¢}XX£ù€„€„‚Wÿ¤@ƒ}”g¤¢}YY£ù€…€…‚Wÿ¤@ƒ}”h¤¢}ZZ£ù€†€†‚Wÿ¤@ƒ}”i¤¢}[[£ù€€‚Wÿ¤@ƒ}”j¤¢}\\ £ù€‡€‡ ‚Wÿ¤@ƒ}”k¤¢}]]£ù€ˆ€ˆ‚Wÿ¤@ƒ}”l¤¢}^^£ù€‰€‰‚Wÿ¤@ƒ}”m¤¢}__£ù€Š€Š‚Wÿ¤@ƒ}”n¤¢}``£ù€‹€‹‚Wÿ¤@ƒ}”o¤¢}aa£ù€Œ€Œ‚Wÿ¤@ƒ}”p¤¢}bb £ù€€ ‚Wÿ¤@ƒ}”q¤¢}cc£ù€Ž€Ž‚Wÿ¤@ƒ}”r¤¢}dd£ù€€‚Wÿ¤@ƒ}”s¢}gg¢}gg€­‚X€¬ƒ ƒ”t¢}gg¢}gg€­‚X‚X€¬ƒ‚X ‚Xƒ”u¢}gg¢}gg€­‚X€¬ƒƒ”v¢}gg¢}gg€­‚X€¬ƒƒ”w¢}gg¢}gg€­‚X€¬ƒ ƒ”x¢}gg¢}gg€­‚X €¬ƒ  ƒ”y£ý¢}g!g$£ù€¯/€¯2€­‚X€—ÿ¤@ƒƒ”z¤¢}hh£ù€°€°‚Xÿ¤@ƒ}”{¤¢}ii£ù€±€±‚Xÿ¤@ƒ}”|¢}mm¢}mm€­‚Y€¬ƒ‚ ƒ‚”}¢}mm¢}mm€­‚Y‚Y€¬ƒ‚‚Y ‚Yƒ‚”~¢}mm¢}mm€­‚Y€¬ƒ‚ƒ‚”¢}mm¢}mm€­‚Y€¬ƒ‚ƒ‚”€¢}mm¢}mm€­‚Y€¬ƒ‚ ƒ‚”¢}mm¢}mm€­‚Y €¬ƒ‚  ƒ‚”‚£ý¢}m!m$£ù€º/€º2€­‚Y€—ÿ¤@ƒ‚ƒ‚”ƒ¤¢}nn£ù€»€»‚Yÿ¤@ƒ}”„¤¢}oo£ù€¼€¼‚Yÿ¤@ƒ}”…¤ ¢}pp£ù€½€½‚Yÿ¤@ƒ}”†¢}tt¢}tt€­‚Z€¬ƒƒ ƒƒ”‡¢}tt¢}tt€­‚Z‚Z€¬ƒƒ‚Z ‚Zƒƒ”ˆ¢}tt¢}tt€­‚Z€¬ƒƒƒƒ”‰¢}tt¢}tt€­‚Z€¬ƒƒƒƒ”Š¢}tt¢}tt€­‚Z€¬ƒƒ ƒƒ”‹¢}tt¢}tt€­‚Z €¬ƒƒ  ƒƒ”Œ£ý¢}t!t$£ù€Ç/€Ç2€­‚Z€—ÿ¤@ƒƒƒƒ”¤"¢}uu£ù€È€È‚Zÿ¤@ƒ}”ޤ#¢}vv£ù€É€É‚Zÿ¤@ƒ}”¤$¢}ww£ù€Ê€Ê‚Zÿ¤@ƒ}”¤%¢}xx£ù€Ë€Ë‚Zÿ¤@ƒ}”‘¢}||¢}||€­‚[€¬ƒ„ ƒ„”’¢}||¢}||€­‚[‚[€¬ƒ„‚[ ‚[ƒ„”“¢}||¢}||€­‚[€¬ƒ„ƒ„””¢}||¢}||€­‚[€¬ƒ„ƒ„”•¢}||¢}||€­‚[€¬ƒ„ ƒ„”–¢}||¢}||€­‚[ €¬ƒ„  ƒ„”—£ý¢}||!£ù€Ö,€Ö/€­‚[€—ÿ¤@ƒ„ƒ„”˜¤'¢}}} £ù€×€× ‚[ÿ¤@ƒ}”™¤(¢}~~£ù€Ø€Ø‚[ÿ¤@ƒ}”š¢}€‚€‚¢}€‚€‚€­‚\€¬ƒ… ƒ…”›¢}€‚€‚¢}€‚€‚€­‚\‚\€¬ƒ…‚\ ‚\ƒ…”œ¢}€‚€‚¢}€‚€‚€­‚\€¬ƒ…ƒ…”¢}€‚€‚¢}€‚€‚€­‚\€¬ƒ…ƒ…”ž¢}€‚€‚¢}€‚€‚€­‚\€¬ƒ… ƒ…”Ÿ¢}€‚€‚¢}€‚€‚€­‚\ €¬ƒ…  ƒ…” £ý¢}€‚ €‚#£ù€á.€á1€­‚\€—ÿ¤@ƒ…ƒ…”¡¤*¢}€ƒ€ƒ£ù€â€â‚\ÿ¤@ƒ}”¢¤+¢}€„€„£ù€ã€ã‚\ÿ¤@ƒ}”£¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚]€¬ƒ† ƒ†”¤¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚]‚]€¬ƒ†‚] ‚]ƒ†”¥¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚]€¬ƒ†ƒ†”¦¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚]€¬ƒ†ƒ†”§¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚]€¬ƒ† ƒ†”¨¢}€ˆ€ˆ¢}€ˆ€ˆ€­‚] €¬ƒ†  ƒ†”©£ý¢}€ˆ!€ˆ$£ù€î/€î2€­‚]€—ÿ¤@ƒ†ƒ†”ª¤-¢}€‰€‰£ù€ï€ï‚]ÿ¤@ƒ}”«¤.¢}€Š€Š£ù€ð€ð‚]ÿ¤@ƒ}”¬¢}€Ž€Ž¢}€Ž€Ž€­‚^€¬ƒ‡ ƒ‡”­¢}€Ž€Ž¢}€Ž€Ž€­‚^‚^€¬ƒ‡‚^ ‚^ƒ‡”®¢}€Ž€Ž¢}€Ž€Ž€­‚^€¬ƒ‡ƒ‡”¯¢}€Ž€Ž¢}€Ž€Ž€­‚^€¬ƒ‡ƒ‡”°¢}€Ž€Ž¢}€Ž€Ž€­‚^€¬ƒ‡ ƒ‡”±¢}€Ž€Ž¢}€Ž€Ž€­‚^ €¬ƒ‡  ƒ‡”²£ý¢}€Ž €Ž#£ù€ù.€ù1€­‚^€—ÿ¤@ƒ‡ƒ‡”³¤0¢}€€ £ù€ú€ú ‚^ÿ¤@ƒ}”´¤1¢}€€£ù€û€û‚^ÿ¤@ƒ}”µ¤2¢}€‘€‘£ù€ü€ü‚^ÿ¤@ƒ}”¶¢}€”€”¢}€”€”€­‚_€¬ƒˆ ƒˆ”·¢}€”€”¢}€”€”€­‚_‚_€¬ƒˆ‚_ ‚_ƒˆ”¸¢}€”€”¢}€”€”€­‚_€¬ƒˆƒˆ”¹¢}€”€”¢}€”€”€­‚_€¬ƒˆƒˆ”º¢}€”€”¢}€”€”€­‚_€¬ƒˆ ƒˆ”»¢}€”€”¢}€”€”€­‚_ €¬ƒˆ  ƒˆ”¼£ý¢}€”%€”(£ù36€­‚_€—ÿ¤@ƒˆƒˆ”½¤4¢}€•€•£ù‚_ÿ¤@ƒ}”¾¤5¢}€–€–£ù‚_ÿ¤@ƒ}”¿¢}€™€™¢}€™€™€­‚`€¬ƒ‰ ƒ‰”À¢}€™€™¢}€™€™€­‚`‚`€¬ƒ‰‚` ‚`ƒ‰”Á¢}€™€™¢}€™€™€­‚`€¬ƒ‰ƒ‰”¢}€™€™¢}€™€™€­‚`€¬ƒ‰ƒ‰”â}€™€™¢}€™€™€­‚`€¬ƒ‰ ƒ‰”Ä¢}€™€™¢}€™€™€­‚` €¬ƒ‰  ƒ‰”Å£ý¢}€™!€™$£ù/2€­‚`€—ÿ¤@ƒ‰ƒ‰”Ƥ7¢}€š€š £ù ‚`ÿ¤@ƒ}”Ǥ8¢}€›€›£ù‚`ÿ¤@ƒ}”Ȥ9¢}€œ€œ£ù‚`ÿ¤@ƒ}”ɤ:¢}€€£ù‚`ÿ¤@ƒ}”Ê¢}€ € ¢}€ € €­‚a€¬ƒŠ ƒŠ”Ë¢}€ € ¢}€ € €­‚a‚a€¬ƒŠ‚a ‚aƒŠ”Ì¢}€ € ¢}€ € €­‚a€¬ƒŠƒŠ”Í¢}€ € ¢}€ € €­‚a€¬ƒŠƒŠ”΢}€ € ¢}€ € €­‚a€¬ƒŠ ƒŠ”Ï¢}€ € ¢}€ € €­‚a €¬ƒŠ  ƒŠ”Уý¢}€ !€ $£ù / 2€­‚a€—ÿ¤@ƒŠƒŠ”Ѥ<¢}€¡€¡£ù!!‚aÿ¤@ƒ}”Ò¤=¢}€¢€¢£ù""‚aÿ¤@ƒ}”Ó¤>¢}€¤€¤£ùgg€—‚Uÿ¤@ƒ}”Ô¤?¢}€¥€¥£ùtt€—‚Vÿ¤@ƒ}”Õ¤@¢}€¦€¦£ù€”€”€—‚Wÿ¤@ƒ}”Ö¤A¢}€§€§£ù€³€³€—‚Xÿ¤@ƒ}”פB¢}€¨€¨£ù€¿€¿€—‚Yÿ¤@ƒ}”ؤC¢}€©€©£ù€Í€Í€—‚Zÿ¤@ƒ}”Ù¤D¢}€ª€ª£ù€Ú€Ú€—‚[ÿ¤@ƒ}”Ú¤E¢}€«€«£ù€æ€æ€—‚\ÿ¤@ƒ}”Û¤F¢}€¬€¬£ù€ò€ò€—‚]ÿ¤@ƒ}”ܤG¢}€­€­£ù€þ€þ€—‚^ÿ¤@ƒ}”ݤH¢}€®€®£ù  €—‚_ÿ¤@ƒ}”Þ¤I¢}€¯€¯£ù€—‚`ÿ¤@ƒ}”ߤJ¢}€°€°£ù$$€—‚aÿ¤@ƒ}”à¤K¢}€²€² £ù** €•ÿ¤@ƒ}”á¤L¢}€³€³ £ù++ €•ÿ¤@ƒ}”â¤M¢}€´€´£ù,,€•ÿ¤@ƒ}”ã¤N¢}€µ€µ £ù-- €•ÿ¤@ƒ}”ä¤O¢}€¶€¶ £ù.. €•ÿ¤@ƒ}”å¤P¢}€·€· £ù// €•ÿ¤@ƒ}”æ¤Q¢}€¸€¸ £ù00 €•ÿ¤@ƒ}”ç¤R¢}€¹€¹ £ù11 €•ÿ¤@ƒ}”è¤S¢}€º€º £ù22 €•ÿ¤@ƒ}”é¤T¢}€»€» £ù33 €•ÿ¤@ƒ}”ê¤U¢}€¼€¼ £ù44 €•ÿ¤@ƒ}”ë¤V¢}€½€½ £ù55 €•ÿ¤@ƒ}”ì¤W¢}€¾€¾ £ù66 €•ÿ¤@ƒ}”í¤X¢}€¿€¿ £ù77 €•ÿ¤@ƒ}”î¤Y¢}€À€À £ù88 €•ÿ¤@ƒ}”ï¤Z¢}€Á€Á £ù99 €•ÿ¤@ƒ}”ð¤[¢}€Â€Â £ù:: €•ÿ¤@ƒ}”ñ¤\¢}€Ã€Ã£ù;;€•ÿ¤@ƒ}”ò¤]¢}€Ä€Ä £ù<< €•ÿ¤@ƒ}”ó¤^¢}€Å€Å £ù== €•ÿ¤@ƒ}”ô¤_¢}€Æ€Æ £ù>> €•ÿ¤@ƒ}”õ¤`¢}€Ç€Ç £ù?? €•ÿ¤@ƒ}”ö¤a¢}€È€È£ù@@€•ÿ¤@ƒ}”÷¤b¢}€É€É£ùAA€•ÿ¤@ƒ}”ø¤c¢}€Ê€Ê£ùBB€•ÿ¤@ƒ}”ù¤d¢}€Ë€Ë £ùCC €•ÿ¤@ƒ}”ú¤e¢}€Ì€Ì £ùDD €•ÿ¤@ƒ}”û¤f¢}€Í€Í£ùEE€•ÿ¤@ƒ}”ü¤g¢}€Î€Î £ùFF €•ÿ¤@ƒ}”ý¤h¢}€Ï€Ï£ùGG€•ÿ¤@ƒ}”þ¤i¢}€Ð€Ð£ùHH€•ÿ¤@ƒ}”ÿ¤j¢}€Ñ€Ñ£ùJJ€•ÿ¤@ƒ}•¤k¢}€Ò€Ò £ùKK €•ÿ¤@ƒ}•¤l¢}€Ó€Ó £ùNN ÿ¤@ƒ}•¤m¢}€Ô€Ô £ùOO ÿ¤@ƒ}•¤n¢}€Õ€Õ £ùPP ÿ¤@ƒ}•¤o¢}€Ö€Ö £ùQQ ÿ¤@ƒ}•¤p¢}€×€× £ùRR ÿ¤@ƒ}•¤q¢}€Ø€Ø £ùSS ÿ¤@ƒ}•¤r¢}€Ù€Ù £ùTT ÿ¤@ƒ}•¤s¢}€Ú€Ú £ùUU ÿ¤@ƒ}• ¤t¢}€Û€Û £ùVV ÿ¤@ƒ}• ¤u¢}€Ü€Ü £ùWW ÿ¤@ƒ}• ¤v¢}€Ý€Ý £ùXX ÿ¤@ƒ}• ¤w¢}€Þ€Þ £ùYY ÿ¤@ƒ}• ¤x¢}€ß€ß £ùZZ ÿ¤@ƒ}•¤y¢}€à€à £ù[[ ÿ¤@ƒ}•¤z¢}€á€á £ù\\ ÿ¤@ƒ}•¤{¢}€â€â£ù]]ÿ¤@ƒ}•¤|¢}€ã€ã £ù^^ ÿ¤@ƒ}•¤}¢}€ä€ä £ù__ ÿ¤@ƒ}•¤~¢}€å€å£ù``ÿ¤@ƒ}•¤¢}€æ€æ £ùaa ÿ¤@ƒ}•¤€¢}€ç€ç £ùbb ÿ¤@ƒ}•¤¢}€è€è£ùccÿ¤@ƒ}•¤‚¢}€é€é£ùddÿ¤@ƒ}•¤ƒ¢}€ê€ê£ùeeÿ¤@ƒ}•¤„¢}€ë€ë£ùffÿ¤@ƒ}•¤…¢}€ì€ì£ùggÿ¤@ƒ}•¤†¢}€í€í£ùhhÿ¤@ƒ}•¤‡¢}€î€î£ùiiÿ¤@ƒ}•¤ˆ¢}€ï€ï£ùjjÿ¤@ƒ}•¤‰¢}€ð€ð£ùkkÿ¤@ƒ}•¤Š¢}€ñ€ñ£ùllÿ¤@ƒ}• ¤‹¢}€ò€ò£ùmmÿ¤@ƒ}•!¤Œ¢}€ó€ó £ùnn ÿ¤@ƒ}•"¤¢}€ô€ô £ùoo ÿ¤@ƒ}•#¤Ž¢}€õ€õ £ùpp ÿ¤@ƒ}•$¤¢}€ö€ö £ùqq ÿ¤@ƒ}•%¤¢}€÷€÷ £ùrr ÿ¤@ƒ}•&¤‘¢}€ø€ø £ùss ÿ¤@ƒ}•'¤’¢}€ù€ù £ùtt ÿ¤@ƒ}•(¤“¢}€ú€ú £ùuu ÿ¤@ƒ}•)¤”¢}€û€û £ùvv ÿ¤@ƒ}•*¤•¢}€ü€ü £ùww ÿ¤@ƒ}•+¤–¢}€ý€ý £ùxx ÿ¤@ƒ}•,¤—¢}€þ€þ£ùyyÿ¤@ƒ}•-¤˜¢}€ÿ€ÿ£ùzzÿ¤@ƒ}•.¤™¢} £ù{{ ÿ¤@ƒ}•/¤š¢} £ù|| ÿ¤@ƒ}•0¤›¢} £ù}} ÿ¤@ƒ}•1¤œ¢} £ù~~ ÿ¤@ƒ}•2¤¢} £ù ÿ¤@ƒ}•3¤ž¢}£ù€€ÿ¤@ƒ}•4¤Ÿ¢}£ùÿ¤@ƒ}•5¤ ¢}£ù‚‚ÿ¤@ƒ}•6¤¡¢}£ùƒƒÿ¤@ƒ}•7¤¢¢}  £ù„„ÿ¤@ƒ}•8¤£¢}  £ù……ÿ¤@ƒ}•9¤¤¢}  £ù†† ÿ¤@ƒ}•:¤¥¢}  £ù‡‡ ÿ¤@ƒ}•;¤¦¢}  £ùˆˆ ÿ¤@ƒ}•<¤§¢} £ù‰‰ ÿ¤@ƒ}•=¤¨¢} £ùŠŠ ÿ¤@ƒ}•>¤©¢} £ù‹‹ ÿ¤@ƒ}•?¤ª¢} £ùŒŒ ÿ¤@ƒ}•@¤«¢} £ù ÿ¤@ƒ}•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¤Å¢},, £ù§§ ÿ¤@ƒ}•[¤Æ¢}-- £ù¨¨ ÿ¤@ƒ}•\¤Ç¢}.. £ù©© ÿ¤@ƒ}•]¤È¢}// £ùªª ÿ¤@ƒ}•^¤É¢}00 £ù«« ÿ¤@ƒ}•_¤Ê¢}11 £ù¬¬ ÿ¤@ƒ}•`¤Ë¢}22£ù­­ÿ¤@ƒ}•a¤Ì¢}33 £ù®® ÿ¤@ƒ}•b¤Í¢}44 £ù¯¯ ÿ¤@ƒ}•c¤Î¢}55 £ù°° ÿ¤@ƒ}•d¤Ï¢}66 £ù±± ÿ¤@ƒ}•e¤Ð¢}77 £ù²² ÿ¤@ƒ}•f¤Ñ¢}88 £ù³³ ÿ¤@ƒ}•g¤Ò¢}99 £ù´´ ÿ¤@ƒ}•h¤Ó¢}:: £ùµµ ÿ¤@ƒ}•i¤Ô¢};; £ù¶¶ ÿ¤@ƒ}•j¤Õ¢}<< £ù·· ÿ¤@ƒ}•k¤Ö¢}== £ù¸¸ ÿ¤@ƒ}•l¤×¢}>> £ù¹¹ ÿ¤@ƒ}•m¤Ø¢}?? £ùºº ÿ¤@ƒ}•n¤Ù¢}@@ £ù»» ÿ¤@ƒ}•o¤Ú¢}AA£ù¼¼ÿ¤@ƒ}•p¤Û¢}BB £ù½½ ÿ¤@ƒ}•q¤Ü¢}CC £ù¾¾ ÿ¤@ƒ}•r¤Ý¢}DD £ù¿¿ ÿ¤@ƒ}•s¤Þ¢}EE £ùÀÀ ÿ¤@ƒ}•t¤ß¢}FF£ùÁÁÿ¤@ƒ}•u¤à¢}GG £ù ÿ¤@ƒ}•v¤á¢}HH£ùÃÃÿ¤@ƒ}•w¤â¢}II £ùÄÄ ÿ¤@ƒ}•x¤ã¢}JJ £ùÅÅ ÿ¤@ƒ}•y¤ä¢}KK £ùÆÆ ÿ¤@ƒ}•z¤å¢}LL £ùÇÇ ÿ¤@ƒ}•{¤æ¢}MM £ùÈÈ ÿ¤@ƒ}•|¤ç¢}NN £ùÉÉ ÿ¤@ƒ}•}¤è¢}OO £ùÊÊ ÿ¤@ƒ}•~¤é¢}PP £ùËË ÿ¤@ƒ}•¤ê¢}QQ £ùÌÌ ÿ¤@ƒ}•€¤ë¢}RR£ùÍÍÿ¤@ƒ}•¤ì¢}SS£ùÎÎÿ¤@ƒ}•‚¤í¢}TT£ùÏÏÿ¤@ƒ}•ƒ¤î¢}UU£ùÐÐÿ¤@ƒ}•„¤ï¢}VV£ùÑÑÿ¤@ƒ}•…¤ð¢}WW£ùÒÒÿ¤@ƒ}•†¤ñ¢}XX£ùÓÓÿ¤@ƒ}•‡¤ò¢}YY£ùÔÔÿ¤@ƒ}•ˆ¤ó¢}ZZ£ùÕÕÿ¤@ƒ}•‰¤ô¢}[[£ùÖÖÿ¤@ƒ}•Фõ¢}\\ £ù×× ÿ¤@ƒ}•‹¤ö¢}]] £ùØØ ÿ¤@ƒ}•Œ¤÷¢}^^ £ùÙÙ ÿ¤@ƒ}•¤ø¢}__ £ùÚÚ ÿ¤@ƒ}•ޤù¢}``£ùÛÛÿ¤@ƒ}•¤ú¢}aa£ùÜÜÿ¤@ƒ}•¤û¢}bb£ùÝÝÿ¤@ƒ}•‘¤ü¢}cc£ùÞÞÿ¤@ƒ}•’¤ý¢}dd£ùßßÿ¤@ƒ}•“¤þ¢}ee£ùààÿ¤@ƒ}•”¤ÿ¢}ff£ùááÿ¤@ƒ}••¥¢}gg£ùââÿ¤@ƒ}•–¥¢}hh£ùããÿ¤@ƒ}•—¥¢}ii£ùääÿ¤@ƒ}•˜¥¢}jj£ùååÿ¤@ƒ}•™¥¢}kk£ùææÿ¤@ƒ}•š¥¢}ll£ùççÿ¤@ƒ}•›¥¢}mm£ùèèÿ¤@ƒ}•œ¥¢}nn£ùééÿ¤@ƒ}•¥¢}oo£ùêêÿ¤@ƒ}•ž¥ ¢}pp£ùëëÿ¤@ƒ}•Ÿ¥ ¢}qq£ùììÿ¤@ƒ}• ¥ ¢}rr£ùííÿ¤@ƒ}•¡¥ ¢}ss£ùîîÿ¤@ƒ}•¢¥ ¢}tt£ùïïÿ¤@ƒ}•£¥¢}uu£ùððÿ¤@ƒ}•¤¥¢}vv£ùññÿ¤@ƒ}•¥¥¢}ww£ùòòÿ¤@ƒ}•¦¥¢}xx£ùóóÿ¤@ƒ}•§¥¢}yy£ùôôÿ¤@ƒ}•¨¥¢}zz£ùõõÿ¤@ƒ}•©¥¢}{{£ùööÿ¤@ƒ}•ª¥¢}||£ù÷÷ÿ¤@ƒ}•«¥¢}}}£ùøøÿ¤@ƒ}•¬¥¢}~~ £ùùù ÿ¤@ƒ}•­¥¢} £ùúú ÿ¤@ƒ}•®¥¢}€€ £ùûû ÿ¤@ƒ}•¯¥¢} £ùüü ÿ¤@ƒ}•°¥¢}‚‚£ùýýÿ¤@ƒ}•±¥¢}ƒƒ£ùþþÿ¤@ƒ}•²¥¢}„„ £ùÿÿ ÿ¤@ƒ}•³¥¢}……£ù‚‚ÿ¤@ƒ}•´¥¢}†† £ù‚‚ ÿ¤@ƒ}•µ¥ ¢}‡‡£ù‚‚ÿ¤@ƒ}•¶¥!¢}ˆˆ £ù‚‚ ÿ¤@ƒ}•·¥"¢}‰‰£ù‚‚ÿ¤@ƒ}•¸¥#¢}ŠŠ£ù‚‚ÿ¤@ƒ}•¹¥$¢}‹‹ £ù‚‚ ÿ¤@ƒ}•º¥%¢}ŒŒ £ù‚‚ ÿ¤@ƒ}•»¥&¢} £ù‚‚ ÿ¤@ƒ}•¼¥'¢}ŽŽ £ù‚ ‚ ÿ¤@ƒ}•½¥(¢} £ù‚ ‚ ÿ¤@ƒ}•¾¥)¢} £ù‚ ‚ ÿ¤@ƒ}•¿¥*¢}‘‘ £ù‚ ‚ ÿ¤@ƒ}•À¥+¢}’’ £ù‚ ‚ ÿ¤@ƒ}•Á¥,¢}““ £ù‚‚ ÿ¤@ƒ}•Â¥-¢}”” £ù‚‚ ÿ¤@ƒ}•Ã¥.¢}•• £ù‚‚ ÿ¤@ƒ}•Ä¥/¢}––£ù‚‚ÿ¤@ƒ}•Å¥0¢}—— £ù‚‚ ÿ¤@ƒ}•Æ¥1¢}˜˜ £ù‚‚ ÿ¤@ƒ}•Ç¥2¢}™™ £ù‚‚ ÿ¤@ƒ}•È¥3¢}šš £ù‚‚ ÿ¤@ƒ}•É¥4¢}›› £ù‚‚ ÿ¤@ƒ}•Ê¥5¢}œœ £ù‚‚ ÿ¤@ƒ}•Ë¥6¢}£ù‚‚ÿ¤@ƒ}•Ì¥7¢}žž£ù‚‚ÿ¤@ƒ}•Í¥8¢}ŸŸ£ù‚‚ÿ¤@ƒ}•Î¥9¢}  £ù‚‚ÿ¤@ƒ}•Ï¥:¢}¡¡£ù‚‚ÿ¤@ƒ}•Ð¥;¢}¢¢£ù‚‚ÿ¤@ƒ}•Ñ¥<¢}££ £ù‚‚ ÿ¤@ƒ}•Ò¥=¢}¤¤ £ù‚‚ ÿ¤@ƒ}•Ó¥>¢}¥¥ £ù‚ ‚ ÿ¤@ƒ}•Ô¥?¢}¦¦ £ù‚!‚! ÿ¤@ƒ}•Õ¥@¢}§§ £ù‚"‚" ÿ¤@ƒ}•Ö¥A¢}¨¨ £ù‚#‚# ÿ¤@ƒ}•×¥B¢}©©£ù‚$‚$ÿ¤@ƒ}•Ø¥C¢}ªª£ù‚&‚&ÿ¤@ƒ}•Ù¥D¢}««£ù‚'‚'ÿ¤@ƒ}•Ú¥E¢}¬¬£ù‚(‚(ÿ¤@ƒ}•Û¥F¢}­­£ù‚+‚+€í{ÿ¤@ƒ}•Ü¥G¢}®®£ù‚ ‚ { ÿ¤@ƒ}•Ý¥H¢}¯¯£ùƒƒ€í€Œ‚bÿ¤@ƒ}•Þ¥J¢}°°£ùƒƒ€í€Œ‚bÿ¤@ƒ}•ߥK¢}±± £ùƒ%ƒ% €•ÿ¤@ƒ}•à¥L¢}²²£ùƒ&ƒ&€•ÿ¤@ƒ}•á¥M¢}³³ £ùƒ'ƒ' €•ÿ¤@ƒ}•â¥N¢}´´ £ùƒ(ƒ( €•ÿ¤@ƒ}•ã¥O¢}µµ £ùƒ)ƒ) €•ÿ¤@ƒ}•ä¥P¢}¶¶ £ùƒ*ƒ* €•ÿ¤@ƒ}•å¥Q¢}·· £ùƒ+ƒ+ €•ÿ¤@ƒ}•æ¥R¢}¸¸ £ùƒ,ƒ, €•ÿ¤@ƒ}•ç¥S¢}¹¹ £ùƒ-ƒ- €•ÿ¤@ƒ}•è¥T¢}ºº £ùƒ.ƒ. €•ÿ¤@ƒ}•é¥U¢}»» £ùƒ/ƒ/ €•ÿ¤@ƒ}•ê¥V¢}¼¼ £ùƒ0ƒ0 €•ÿ¤@ƒ}•ë¥W¢}½½£ùƒ1ƒ1€•ÿ¤@ƒ}•ì¥X¢}¾¾£ùƒ2ƒ2€•ÿ¤@ƒ}•í¥Y¢}¿¿£ùƒ3ƒ3€•ÿ¤@ƒ}•î¥Z¢}ÀÀ £ùƒ4ƒ4 €•ÿ¤@ƒ}•ï¥[¢}ÁÁ£ùƒ5ƒ5€•ÿ¤@ƒ}•ð¥\¢} £ùƒ6ƒ6 €•ÿ¤@ƒ}•ñ¥]¢}Ãà £ùƒ7ƒ7 €•ÿ¤@ƒ}•ò¥^¢}ÄÄ £ùƒ8ƒ8 €•ÿ¤@ƒ}•ó¥_¢}ÅÅ £ùƒ9ƒ9 €•ÿ¤@ƒ}•ô¥`¢}ÆÆ £ùƒ:ƒ: €•ÿ¤@ƒ}•õ¥a¢}ÇÇ£ùƒ;ƒ;€•ÿ¤@ƒ}•ö¥b¢}ÈÈ£ùƒ<ƒ<€•ÿ¤@ƒ}•÷¥c¢}ÉÉ£ùƒ=ƒ=€•ÿ¤@ƒ}•ø¥d¢}ÊÊ£ùƒ>ƒ>€•ÿ¤@ƒ}•ù¥e¢}ËË £ùƒ?ƒ? €•ÿ¤@ƒ}•ú¥f¢}ÌÌ £ùƒ@ƒ@ €•ÿ¤@ƒ}•û¥g¢}ÍÍ£ùƒAƒA€•ÿ¤@ƒ}•ü¥h¢}ÎΣùƒBƒB€•ÿ¤@ƒ}•ý¥i¢}ÏÏ £ùƒCƒC €•ÿ¤@ƒ}•þ¥j¢}ÐÐ £ùƒDƒD €•ÿ¤@ƒ}•ÿ¥k¢}ÑÑ£ùƒEƒE€•ÿ¤@ƒ}–¥l¢}ÒÒ£ùƒFƒF€•ÿ¤@ƒ}–¥m¢}ÓÓ£ùƒGƒG€•ÿ¤@ƒ}–¥n¢}ÔÔ £ùƒHƒH €•ÿ¤@ƒ}–¥o¢}ÕÕ£ùƒIƒI€•ÿ¤@ƒ}–¥p¢}ÖÖ £ùƒJƒJ €•ÿ¤@ƒ}–¥q¢}×× £ùƒKƒK €•ÿ¤@ƒ}–¥r¢}ØØ £ùƒLƒL €•ÿ¤@ƒ}–¥s¢}ÙÙ£ùƒMƒM€•ÿ¤@ƒ}–¥t¢}ÚÚ£ùƒNƒN€•ÿ¤@ƒ}– ¥u¢}ÛÛ £ùƒOƒO €•ÿ¤@ƒ}– ¥v¢}ÜÜ £ùƒPƒP €•ÿ¤@ƒ}– ¥w¢}ÝÝ £ùƒTƒT €—ÿ¤@ƒ}– ¥x¢}ÞÞ £ùƒUƒU €—ÿ¤@ƒ}– ¥y¢}ßß £ùƒVƒV €—ÿ¤@ƒ}–¥z¢}àà £ùƒWƒW €—ÿ¤@ƒ}–¥{¢}áá £ùƒXƒX €—ÿ¤@ƒ}–¥|¢}ââ £ùƒYƒY €—ÿ¤@ƒ}–¥}¢}ãã £ùƒZƒZ €—ÿ¤@ƒ}–¥~¢}ää £ùƒ[ƒ[ €—ÿ¤@ƒ}–¥¢}åå £ùƒ\ƒ\ €—ÿ¤@ƒ}–¥€¢}ææ£ùƒ]ƒ]€—ÿ¤@ƒ}–¥¢}çç £ùƒ^ƒ^ €—ÿ¤@ƒ}–¥‚¢}èè £ùƒ_ƒ_ €—ÿ¤@ƒ}–¥ƒ¢}éé£ùƒ`ƒ`€—ÿ¤@ƒ}–¥„¢}êê£ùƒaƒa€—ÿ¤@ƒ}–¥…¢}ëë£ùƒbƒb€—ÿ¤@ƒ}–¥†¢}ìì £ùƒcƒc €—ÿ¤@ƒ}–¥‡¢}íí £ùƒdƒd €—ÿ¤@ƒ}–¥ˆ¢}îî £ùƒeƒe €—ÿ¤@ƒ}–¥‰¢}ïï £ùƒfƒf €—ÿ¤@ƒ}–¥Š¢}ðð £ùƒgƒg €—ÿ¤@ƒ}–¥‹¢}ññ £ùƒhƒh €—ÿ¤@ƒ}– ¥Œ¢}òò £ùƒiƒi €—ÿ¤@ƒ}–!¥¢}óó £ùƒjƒj €—ÿ¤@ƒ}–"¥Ž¢}ôô £ùƒkƒk €—ÿ¤@ƒ}–#¥¢}õõ£ùƒlƒl€—ÿ¤@ƒ}–$¥¢}öö £ùƒmƒm €—ÿ¤@ƒ}–%¥‘¢}÷÷£ùƒnƒn€—ÿ¤@ƒ}–&¥’¢}øø £ùƒoƒo €—ÿ¤@ƒ}–'¥“¢}ùù£ùƒpƒp€—ÿ¤@ƒ}–(¥”¢}úú £ùƒqƒq €—ÿ¤@ƒ}–)¥•¢}ûû £ùƒrƒr €—ÿ¤@ƒ}–*¥–¢}üü £ùƒsƒs €—ÿ¤@ƒ}–+¥—¢}ýý£ùƒtƒt€—ÿ¤@ƒ}–,¥˜¢}þþ £ùƒuƒu €—ÿ¤@ƒ}–-¥™¢}ÿÿ £ùƒvƒv €—ÿ¤@ƒ}–.¥š¢}‚‚£ùƒwƒw€—ÿ¤@ƒ}–/¥›¢}‚‚£ùƒxƒx€—ÿ¤@ƒ}–0¥œ¢}‚‚£ùƒyƒy€—ÿ¤@ƒ}–1¥¢}‚‚£ùƒzƒz€—ÿ¤@ƒ}–2¥ž¢}‚‚ £ùƒ{ƒ{ €—ÿ¤@ƒ}–3¥Ÿ¢}‚‚ £ùƒ|ƒ| €—ÿ¤@ƒ}–4¥ ¢}‚‚ £ùƒ}ƒ} €—ÿ¤@ƒ}–5¥¡¢}‚‚ £ùƒ~ƒ~ €—ÿ¤@ƒ}–6¥¢¢}‚‚ £ùƒƒ €—ÿ¤@ƒ}–7¥£¢}‚ ‚ £ùƒ‚ƒ‚€í€•‚cÿ¤@ƒ}–8¥¥¢}‚ ‚ £ùƒ£ƒ£€í‚c€•ÿ¤@ƒ}–9¥¦¢}‚ ‚ £ùƒ¥ƒ¥€í‚d€—ÿ¤@ƒ}–:¥¨¢}‚ ‚ £ùƒÐƒÐ€í€—‚dÿ¤@ƒ}–;¥©¢}‚ ‚ £ùƒÒƒÒ€í‚eÿ¤@ƒ}–<¥«¢}‚‚£ùƒçƒç€í‚eÿ¤@ƒ}–=¥¬¢}‚‚£ùƒéƒé€•ÿ¤@ƒ}–>¥­¢}‚‚£ùƒêƒê€•ÿ¤@ƒ}–?¥®¢}‚‚£ùƒëƒë€•ÿ¤@ƒ}–@¥¯¢}‚‚£ùƒìƒì€•ÿ¤@ƒ}–A¥°¢}‚‚£ùƒíƒí€•ÿ¤@ƒ}–B¥±¢}‚‚£ùƒðƒð€•ÿ¤@ƒ}–C¥²¢}‚‚ £ùƒñƒñ €•ÿ¤@ƒ}–D¥³¢}‚‚ £ùƒòƒò €•ÿ¤@ƒ}–E¥´¢}‚‚&£ùƒôƒô&ÿ¤@ƒ}–F¥µ¢}‚‚#£ùƒõƒõ#ÿ¤@ƒ}–G¥¶¢}‚‚$£ùƒöƒö$ÿ¤@ƒ}–H¥·¢}‚‚"£ùƒ÷ƒ÷"ÿ¤@ƒ}–I¥¸¢}‚‚$£ùƒùƒù$€•ÿ¤@ƒ}–J¥¹¢}‚‚#£ùƒúƒú#€•ÿ¤@ƒ}–K¥º¢}‚‚$£ùƒûƒû$€•ÿ¤@ƒ}–L¥»¢}‚‚!£ùƒüƒü!€•ÿ¤@ƒ}–M¥¼¢}‚ ‚ "£ùƒýƒý"€•ÿ¤@ƒ}–N¥½¢}‚"‚"!£ùƒþƒþ!€•ÿ¤@ƒ}–O¥¾¢}‚#‚#%£ùƒÿƒÿ%€•ÿ¤@ƒ}–P¥¿¢}‚$‚$'£ù„„'€•ÿ¤@ƒ}–Q¥À¢}‚%‚%$£ù„„$€•ÿ¤@ƒ}–R¥Á¢}‚'‚'$£ù„„$€•ÿ¤@ƒ}–S¥Â¢}‚(‚(-£ù„„-€•ÿ¤@ƒ}–T¥Ã¢}‚)‚)#£ù„„#€•ÿ¤@ƒ}ƒ£ø¢}  ƒ€æ€…2€«ƒ}£ø€­‚Tƒ}£ø€­‚T‚Tƒ}£ø€­‚Tƒ}£ø€­‚Tƒ}£ø€­‚Tƒ}£ø€­‚T ˆ§ƒ}£øˆ§€­‚T£úƒ}£ø£ú‚T ‚T€®Dx£ö³³UUƒ¥Ä¢}ƒ¥ÅDx£öë³³Uƒ.–UŽ$¢}£ù‚Tÿ¤@ƒ–V¥Æ¢}£ù‚Tÿ¤@ƒ–W¥Ç¢}£ù‚Tÿ¤@ƒ–X¥È¢}£ù‚Tÿ¤@ƒ–Y¡ð¢} £ù  ‚Tÿ¤@ƒ–Z¥É¢}£ù!!‚Tÿ¤@ƒ–[Œ2¢}£ù""‚Tÿ¤@ƒ–\¥Ê¢}£ù##‚Tÿ¤@ƒ–]Œ.¢} £ù$$ ‚Tÿ¤@ƒ–^¡¬¢}£ù%%‚Tÿ¤@ƒ–_¥Ë¢}£ù&&‚Tÿ¤@ƒ–`˜M¢}£ù''‚Tÿ¤@ƒ–a¥Ì¢}£ù((‚Tÿ¤@ƒ–b¥Í¢}£ù))‚Tÿ¤@ƒ–c¥Î¢}  £ù**‚Tÿ¤@ƒ–d¥Ï¢}!!£ù++‚Tÿ¤@ƒ–e¥Ð¢}""£ù,,‚Tÿ¤@ƒ–f¥Ñ¢}##£ù--‚Tÿ¤@ƒ–g¥Ò¢}$$£ù..‚Tÿ¤@ƒ–h¥Ó¢}%%£ù//‚Tÿ¤@ƒ–i”¢}&& £ù00 ‚Tÿ¤@ƒ–j¥Ô¢}''£ù11‚Tÿ¤@ƒ–k¥Õ¢}((£ù22‚Tÿ¤@ƒ–l”¢}))£ù33‚Tÿ¤@ƒ–m¥Ö¢}**£ù44‚Tÿ¤@ƒ–n¥×¢}++£ù55‚Tÿ¤@ƒ–o¥Ø¢},,£ù66‚Tÿ¤@ƒ–p¥Ù¢}--£ù77‚Tÿ¤@ƒ–q¥Ú¢}..£ù88‚Tÿ¤@ƒ–r¥Û¢}//£ù99‚Tÿ¤@ƒ–s¥Ü¢}00£ù::‚Tÿ¤@ƒ–t¥Ý¢}11£ù;;‚Tÿ¤@ƒ–ušT¢}22£ù<<‚Tÿ¤@ƒ–v¥Þ¢}33£ù==‚Tÿ¤@ƒ–w¥ß¢}44£ù>>‚Tÿ¤@ƒ–x¥à¢}55£ù??‚Tÿ¤@ƒ–y¥á¢}66£ù@@‚Tÿ¤@ƒ–z¥â¢}77£ùAA‚Tÿ¤@ƒ–{¥ã¢}88 £ùBB ‚Tÿ¤@ƒ–|¥ä¢}99£ùCC‚Tÿ¤@ƒ–}¥å¢}::£ùDD‚Tÿ¤@ƒ–~Œë¢};;£ùEE‚Tÿ¤@ƒ–¥æ¢}<<£ùFF‚Tÿ¤@ƒ–€¥ç¢}==£ùHH‚Tÿ¤@ƒ–¥è¢}>>£ùGG‚Tÿ¤@ƒ–‚¥é¢}??£ùJJ‚Tÿ¤@ƒƒ£ü¢}DDƒ€æ€…2€«ƒ}£ü€­‚Uƒ}£ü€­‚U‚Uƒ}£ü€­‚Uƒ}£ü€­‚Uƒ}£ü€­‚Uƒ}£ü€­‚U £ýƒ}£ü£ý€­‚U€— ‚U€®Dx£ö³³ƒƒƒ¤¢}JJƒ€æ€…2€«ƒ}¤€­‚Vƒ}¤€­‚V‚Vƒ}¤€­‚Vƒ}¤€­‚Vƒ}¤€­‚Vƒ}¤€­‚V £ýƒ}¤£ý€­‚V€— ‚V€®Dx£ö³³ƒƒƒ¤¢}PPƒ€æ€…2€«ƒ}¤€­‚Wƒ}¤€­‚W‚Wƒ}¤€­‚Wƒ}¤€­‚Wƒ}¤€­‚Wƒ}¤€­‚W £ýƒ}¤£ý€­‚W€— ‚W€®Dx£ö³³ƒƒƒ¤¢}ggƒ€æ€…2€«ƒ}¤€­‚Xƒ}¤€­‚X‚Xƒ}¤€­‚Xƒ}¤€­‚Xƒ}¤€­‚Xƒ}¤€­‚X £ýƒ}¤£ý€­‚X€— ‚X€®Dx£ö³³ƒƒƒ¤¢}mmƒ€æ€…2€«ƒ}¤€­‚Yƒ}¤€­‚Y‚Yƒ}¤€­‚Yƒ}¤€­‚Yƒ}¤€­‚Yƒ}¤€­‚Y £ýƒ}¤£ý€­‚Y€— ‚Y€®Dx£ö³³ƒƒƒ¤!¢}ttƒ€æ€…2€«ƒ}¤!€­‚Zƒ}¤!€­‚Z‚Zƒ}¤!€­‚Zƒ}¤!€­‚Zƒ}¤!€­‚Zƒ}¤!€­‚Z £ýƒ}¤!£ý€­‚Z€— ‚Z€®Dx£ö³³ƒƒƒ¤&¢}||ƒ€æ€…2€«ƒ}¤&€­‚[ƒ}¤&€­‚[‚[ƒ}¤&€­‚[ƒ}¤&€­‚[ƒ}¤&€­‚[ƒ}¤&€­‚[ £ýƒ}¤&£ý€­‚[€— ‚[€®Dx£ö  ³³ƒƒƒ ¤)¢}€‚€‚ƒ €æ€…2€«ƒ}¤)€­‚\ƒ}¤)€­‚\‚\ƒ}¤)€­‚\ƒ}¤)€­‚\ƒ}¤)€­‚\ƒ}¤)€­‚\ £ýƒ}¤)£ý€­‚\€— ‚\€®Dx£ö!!³³ƒƒƒ!¤,¢}€ˆ€ˆƒ!€æ€…2€«ƒ}¤,€­‚]ƒ}¤,€­‚]‚]ƒ}¤,€­‚]ƒ}¤,€­‚]ƒ}¤,€­‚]ƒ}¤,€­‚] £ýƒ}¤,£ý€­‚]€— ‚]€®Dx£ö""³³ƒƒƒ"¤/¢}€Ž€Žƒ"€æ€…2€«ƒ}¤/€­‚^ƒ}¤/€­‚^‚^ƒ}¤/€­‚^ƒ}¤/€­‚^ƒ}¤/€­‚^ƒ}¤/€­‚^ £ýƒ}¤/£ý€­‚^€— ‚^€®Dx£ö##³³ƒƒƒ#¤3¢}€”€”ƒ#€æ€…2€«ƒ}¤3€­‚_ƒ}¤3€­‚_‚_ƒ}¤3€­‚_ƒ}¤3€­‚_ƒ}¤3€­‚_ƒ}¤3€­‚_ £ýƒ}¤3£ý€­‚_€— ‚_€®Dx£ö$$³³ƒƒƒ$¤6¢}€™€™ƒ$€æ€…2€«ƒ}¤6€­‚`ƒ}¤6€­‚`‚`ƒ}¤6€­‚`ƒ}¤6€­‚`ƒ}¤6€­‚`ƒ}¤6€­‚` £ýƒ}¤6£ý€­‚`€— ‚`€®Dx£ö%%³³ƒƒƒ%¤;¢}€ € ƒ%€æ€…2€«ƒ}¤;€­‚aƒ}¤;€­‚a‚aƒ}¤;€­‚aƒ}¤;€­‚aƒ}¤;€­‚aƒ}¤;€­‚a £ýƒ}¤;£ý€­‚a€— ‚a€®Dx£ö&&³³ƒƒƒ&¥ê¥ë>Iƒ&¥ìDx,'',³Áƒº7–ƒ¥í¥î ¥î …³€”€•P…³€¤€”€•PŽâ¥îƒ–„¥î!! ¥î!! ‚f€¬ƒ‘ ƒ‘–…¥î!! ¥î!! ‚f‚f€¬ƒ‘‚f…´A€Ž,5„€…´ƒ‘–†¥î!! ¥î!! ‚f€¬ƒ‘€€ƒ‘–‡¥î!! ¥î!! ‚f€¬ƒ‘ƒ‘–ˆ¥î!! ¥î!! ‚f€¬ƒ‘ €ƒ‘–‰¥î!! ¥î!! ‚f €¬ƒ‘ €€ ƒ‘–Š¥î!! ¥î!! ‚f €¬ƒ‘  ƒ‘–‹¥î!! ¥î!! ‚f‚f €¬ƒ‘$‚f…µA€Ž,5„€…µ ƒ‘–Œ¥ð¥î##¥î##‚f|ƒ’|€¤1¥î##ƒ–¥ò¥î22¥î22…¶€”€•P…¶ƒ“…¶€¤€”€•P€Ö¥î22ƒ–Ž¥ô¥î33¥î33…·€”€•Pƒ“…·n…·€¤€”€•P€Ö¥î393:ƒ–¥õ¥î44¥î44…¸€”€•P…¹€”€•Pƒ“…¸…¸ƒ“…¹ƒ“…¹€¤€”€•P€”€•P€ˆ¥î4=4>ƒ–¥ö¥î77 ¥î77 …º€”€•P‚gƒ“…º…º€¤€”€•P¥ø¥î7!7' ¥î7(7+ƒ–‘¥ù¥î<ƒ“…À¦¦¥î00Dx¥ê))ÁÁººƒ)¥üQQ ƒ)A‚jûû¥üRR‚j¦¦¥üSS ‚j¦¦¥üTT ‚j¦¦¥üUU ‚j¦¦¥üVV ‚j¦¦¥üWW ‚j¥üXX ‚j||¥üYY ‚j}}¥üZZ ‚j~~¥ü[[ ‚j¦¦¥ü\\‚j‘‘¥ü]] ‚j22¥ü^^‚j¦ ¦ ¥ü__ ‚j//¥ü`` ‚j ¥üaa ‚j¦ ¦ ¥übb‚j¦ ¦ ¥ücc ‚j¦ ¦ ¥üdd ‚j¦ ¦ ¥üee ‚j..¥üff ‚jpp¥ügg‚j¥ühh ‚j„„¥üii‚j€€¥üjj ‚j¥ükk ‚jƒƒ¥üll ‚j¦¦¥ümm‚jBB¥ünn ‚jqq¥üoo ‚j¦¦¥üpp ‚j¦¦¥üqq ‚j¦¦¥ürr ‚j¦¦¥üss ‚jÝÝ¥ütt‚j¦¦¥üuu ‚j¥üvv‚j¥üww ‚j¦¦¥üxx ‚j33¥üyy ‚j¥üzz ‚jww¥ü{{‚j’’¥ü|| ‚j¦¦¥ü}}‚j¦¦¥ü~~‚j++¥üê¥ü€€€€‚j¦¦¥ü€€€€ê¥ü€€‚j¦¦¥ü€€ê¥ü€‚€‚‚j¦¦¥ü€‚€‚ê¥ü€ƒ€ƒ‚j¦¦¥ü€ƒ€ƒ ê¥ü€„€„‚j¦¦¥ü€„€„‚kê¥ü€…€…&‚j¦¦¥ü€…€…‚lê¥ü€†€†#‚j¦ ¦ ¥ü€†€†‚mê¥ü€‡€‡‚j¦"¦"¥ü€‡€‡‚nê¥ü€ˆ€ˆ‚j¦$¦$¥ü€ˆ€ˆ ‚oê¥ü€‰€‰ ‚j¦&¦&¥ü€‰€‰‚pê¥ü€Š€Š‚j¦(¦(¥ü€Š€Š‚qê¥ü€‹€‹$‚j¦*¦*¥ü€‹€‹‚rê¥ü€Œ€Œ‚j¦,¦,¥ü€Œ€Œ ‚sê¥ü€€‚j¦.¦.¥ü€€ ‚tê¥ü€Ž€Ž%‚j¦0¦0¥ü€Ž€Ž‚uê¥ü€€‚j¦2¦2¥ü€€ €èê¥ü€€‚j¦3¦3¥ü€€€—ê¥ü€‘€‘‚j¦4¦4¥ü€‘€‘€¶ê¥ü€’€’‚j¦5¦5¥ü€’€’ Dx¥ê**ÁÁººƒ*¯¥ü€”€” ƒ*C‚h»»¥ü€•€•‚h¦6¦6¥ü€–€–‚h¦7¦7¥ü€—€—‚h¦8¦8¥ü€˜€˜‚h¦9¦9¥ü€™€™‚h¦:¦:¥ü€š€š‚h‘?‘?¥ü€›€›‚h‘<‘<¥ü€œ€œ‚h‘=‘=¥ü€€‚h‘>‘>¥ü€ž€ž‚h¦;¦;¥ü€Ÿ€Ÿ‚h‘Q‘Q¥ü€ € ‚hòò¥ü€¡€¡‚h¦<¦<¥ü€¢€¢‚hïï¥ü€£€£‚hÌÌ¥ü€¤€¤‚h¦=¦=¥ü€¥€¥‚h¦>¦>¥ü€¦€¦‚h¦?¦?¥ü€§€§‚h¦@¦@¥ü€¨€¨‚hîî¥ü€©€©‚h‘0‘0¥ü€ª€ª‚hÙÙ¥ü€«€«‚h‘D‘D¥ü€¬€¬‚h‘@‘@¥ü€­€­‚h‘A‘A¥ü€®€®‚h‘C‘C¥ü€¯€¯‚h¦A¦A¥ü€°€°‚h‘‘¥ü€±€±‚h‘1‘1¥ü€²€²‚h¦B¦B¥ü€³€³‚h¦C¦C¥ü€´€´‚h¦D¦D¥ü€µ€µ‚h¦E¦E¥ü€¶€¶‚h¥ü€·€·‚h¦F¦F¥ü€¸€¸‚hßߥü€¹€¹‚hÅÅ¥ü€º€º‚h¦G¦G¥ü€»€»‚hóó¥ü€¼€¼‚hÂÂ¥ü€½€½‚h‘7‘7¥ü€¾€¾‚h‘R‘R¥ü€¿€¿‚h¦H¦H¥ü€À€À‚h¦I¦I¥ü€Á€Á‚hëë¥ü€Â€Â‚h¦J¦J¥ü€Ã€Ã‚h¦K¦K¥ü€Ä€Ä‚h¦L¦L¥ü€Å€Å‚h¦M¦M¥ü€Æ€Æ‚h¦N¦N¥ü€Ç€Ç‚h¦O¦O¥ü€È€È‚h¦P¦P¥ü€É€É‚h¦Q¦Q¥ü€Ê€Ê‚h¦R¦R¥ü€Ë€Ë‚h¦S¦S¥ü€Ì€Ì‚h¦T¦T¥ü€Í€Í‚h¦U¦U¥ü€Î€Î‚h¦V¦V¥ü€Ï€Ï‚h¦W¦W¥ü€Ð€Ð‚h¦X¦X¥ü€Ñ€Ñ‚h¦Y¦Y¥ü€Ò€Ò‚h¦Z¦Z¥ü€Ó€Ó‚h¦[¦[¥ü€Ô€Ô‚h¦\¦\¥ü€Õ€Õ‚h‘S‘S¥ü€Ö€Ö‚h‘T‘T¥ü€×€×ƒ¯‚hƒ¯‚h‚hƒ¯‚hƒ¯‚hƒ¯‚hƒ¯‚h ƒ¯‚h ƒ¯‚h‚h $‚h ‚hDx¥ê++ÁÁººƒ+°¥ü€Ù€Ùƒ+ ‚i¦]¦]¥ü€Ú€Ú‚i¦^¦^¥ü€Û€Û‚i¦_¦_¥ü€Ü€Ü‚i¦`¦`¥ü€Ý€Ý‚i¦a¦a¥ü€Þ€Þ‚i¦b¦b¥ü€ß€ß‚i¦c¦c¥ü€à€à‚i¦d¦d¥ü€á€á(‚i¦e¦e¥ü€â€â‚i¦f¦f¥ü€ã€ã‚i¦g¦g¥ü€ä€ä‚i¦h¦h¥ü€å€å‚i¦i¦i¥ü€æ€æ‚i¦j¦j¥ü€ç€ç‚i¦k¦k¥ü€è€è‚i¦l¦l¥ü€é€é‚i¦m¦m¥ü€ê€ê‚i¦n¦n¥ü€ë€ë‚i¦o¦o¥ü€ì€ì‚i¦p¦p¥ü€í€í‚i¦q¦q¥ü€î€î‚i¦r¦r¥ü€ï€ï‚i’J’J¥ü€ð€ð‚i¦s¦s¥ü€ñ€ñ‚i¦t¦t¥ü€ò€ò‚i¦u¦u¥ü€ó€ó‚i¦v¦v¥ü€ô€ô‚i¦w¦w¥ü€õ€õ‚i¦x¦x¥ü€ö€ö‚i¦y¦y¥ü€÷€÷‚i¦z¦z¥ü€ø€ø‚i¦{¦{¥ü€ù€ùƒ°‚iƒ°‚i‚iƒ°‚iƒ°‚iƒ°‚iƒ°‚i ƒ°‚i ƒ°‚i‚i $‚i ‚iDx¥ê,,ÁÁººƒ,¦|¦}>Hƒ,¦~Dx--ÁÃºÇ –º–!¦} ¦} >€¤ʦ} ƒ£–»–2¦}  ¦}  …Á€”€•P…Á€¤€”€•Pʦ}  ƒ£–¼¦¦}(( ¦}(( €í‚j€¤ƒ£–½¦€¦}KK¦}KK€íƒ¤‚j€¤ƒ£–¾¦‚¦}]]¦}]]‚j€¤Žâ¦}]]ƒ£–¿¦ƒ¦}__¦}__€¤…²¦}_ _ƒ£–À¦„¦}ff¦}ff‚j€¤Žâ¦}ffƒ£–Á–9¦…ii ¦…ii €Ã€–€¤ƒ£––;¦…~~ ¦…~~ €–€¤ƒ£–Ö<¦…¦…¡€¤ƒ£–Ä–>¦…€€¦…€€…€”€•P…€¤€”€•Pƒ£–Ŧ…‚‚ ¦…‚‚ ‚j€¤ʦ…‚ ‚ƒ£–Æ–J¦…„„¦…„„‚j€¤–K¦…„„ʦ…„„%ƒ£ƒ-¦¦†>Lƒ-¦‡DxÉ.<ÃÅÇÓ –Ǧˆ¦†¦‰€ó€˜ÿ¤@ƒ¥–ȦЦ†11¦‰€Ë€Ëƒ¦‚pÿ¤@ƒ¥–ɦŒ¦†22¦‰€ë€ëƒ¦‚sÿ¤@ƒ¥–ʦ¦†33¦‰€î€îƒ¦‚uÿ¤@ƒ¥–˦ަ†44¦‰€ò€òƒ¦‚tÿ¤@ƒ¥–̦¦†55¦‰€õ€õƒ¦‚rÿ¤@ƒ¥–ͦ¦†66¦‰€ù€ùƒ¦‚qÿ¤@ƒ¥–Φ‘¦†77¦‰€ü€üƒ¦‚oÿ¤@ƒ¥–Ϧ’¦†88¦‰€ÿ€ÿƒ¦‚nÿ¤@ƒ¥–Ц“¦†99¦‰ƒ¦‚mÿ¤@ƒ¥–Ѧ”¦†::¦‰ƒ¦‚lÿ¤@ƒ¥–Ò¦•¦†;;¦‰ƒ¦‚kÿ¤@ƒ¥ƒ.¦'¦†!!ƒ.{Dx¦//ÃÃÓÓƒ/¦1¦†""ƒ/€—{Dx¦00ÃÃÓÓƒ0¦/¦†##ƒ0€—€—{Dx¦11ÃÃÓÓƒ1¦-¦†$$ƒ1€¶{Dx¦22ÃÃÓÓƒ2¦+¦†%%ƒ2‚v{Dx¦33ÃÃÓÓƒ3¦)¦†&&ƒ3€™‚w{Dx¦44ÃÃÓÓƒ4¦!¦†''ƒ4|{Dx¦55ÃÃÓÓƒ5¦¦†((ƒ5|{Dx¦66ÃÃÓÓƒ6¦¦†))ƒ6|{Dx¦77ÃÃÓÓƒ7¦%¦†**ƒ7{Dx¦88ÃÃÓÓƒ8¦#¦†++ƒ8‚x{Dx¦99ÃÃÓÓƒ9¦™¦†,,ƒ9€ï€ï{Dx¦::ÃÃÓÓƒ:…ÃA¦†..„¦š¦†..ƒ:…ÃDx¦;;ÄÄÓÓƒ;…ÄA¦†//„¦‹¦†//ƒ;€íƒª…ÄDx¦<<ÅÅÓÓƒ<¦›¦œ5Dƒ<¦DJG=@Å×Ó†€²–Ó¦ž¦œ&&¦œ&&€µ€ï€¤ƒ«–Ô¦Ÿ¦œ..¦œ..…Å€”€•P…Æ€”€•P…Ç€”€•P…Å…Æ…Ç…Å…Æ…Ç€¤€”€•P€”€•P€”€•P¦ ¦œ.. ¦¡¦œ.".'¦¢¦œ.)..ƒ«–Õ¦£¦œ77¦œ77 €¤ƒ«–Ö¦¤¦¥¦œ: :(¦œ: :(‚yÚ‚z‚{¤ƒ¬¦ª¦œ:):0…¸¦œ:1:6¦«¦œ:7:=ƒ«–צ¬¦­¦œJJ)¦œJJ)‚{ ‚|¤ƒ®-¦œJ*J+†ß¦œJ,J-ˆ¬¦œJ.J/ƒ«–ئ¯¦°¦œTT(¦œTT(‚{‚}€•¤ƒ®¦¡¦œT)T.¦¢¦œT/T4ƒ«–Ù¦²¦³¦œZZ%¦œZZ%‚{‚~¤ƒ®¦µ¦œZ&Z)¦¶¦œZ+Z.Œ¦œZ0Z5ƒ«–Ú¦¯¦°¦œ__(¦œ__(‚{‚¤ƒ®¦¸¦œ_)_,ƒ«–Û¦¹¦º¦œee$¦œee$‚|Ì‚€ÌÌΤƒ¯¦¼¦œe%e(†¦œe)e+…¸¦œe,e1‰#¦œe2e5‰"¦œe6e9ƒ«–ܦ½¦¾¦œii$¦œii$‚|...‚¤ƒ¯”Þ¦œi%i)¦Á¦œi*i.¦Â¦œi/i5¦Ã¦œi6i=ƒ«–ݦĦŦœnn¦œnn‚|  ̤ƒ¯¦Æ¦œnn*¦Ç¦œn+n0¦È¦œn1n6ƒ«–ަɦʦœrr ¦œrr ‚|‚‚‚ƒ¤ƒ¯‹¦œr!r%Œ¦œr&r+ƒ«–ߦͦΦœww,¦œww,‚|‚R‚~¤ƒ¯‹¦œw-w1¦Ï¦œw2w8Œ¦œw9w>ƒ«–য¦Ð¦œ(¦œ(‚|‚}€•¤ƒ¯¦¡¦œ).¦¢¦œ/4ƒ«–á¦Ñ¦Ò¦œ€…€…-¦œ€…€…-‚„‚…¤ƒ·Œ¦œ€….€…3ƒ«–â¦Õ¦Ö¦œ€‰€‰&¦œ€‰€‰&‚„‚†‚‡¤ƒ·†¦œ€‰'€‰(¦Ù¦œ€‰)€‰-†¦œ€‰.€‰0ƒ«–ã¦Ú¦Û¦œ€€%¦œ€€%‚„‚ˆ¤ƒ·ƒ«–ä¦Ñ¦Ý¦œ€“€“-¦œ€“€“-‚‰‚…¤ƒ¼Œ¦œ€“.€“3ƒ«–å¦ß¦à¦œ€—€—$¦œ€—€—$‚‰Ì¤ƒ¼¦á¦œ€—%€—'ƒ«–æ¦â¦ã¦œ€›€›$¦œ€›€›$‚‰Ì¤ƒ¼“¦œ€›%€›'ƒ«–ç¦Õ¦ä¦œ€Ÿ€Ÿ&¦œ€Ÿ€Ÿ&‚‰‚†‚‡¤ƒ¼†¦œ€Ÿ'€Ÿ(¦Ù¦œ€Ÿ)€Ÿ-†¦œ€Ÿ.€Ÿ0ƒ«–è¦å¦æ¦œ€£€£.¦œ€£€£.‚‰‚Фƒ¼¦è¦œ€£/€£2ƒ«–é¦Ú¦é¦œ€§€§%¦œ€§€§%‚‰‚ˆ¤ƒ¼ƒ«–ꦯ¦ê¦œ€¬€¬)¦œ€¬€¬)‚‰‚}€•¤ƒ¼¦¡¦œ€¬*€¬/¦¢¦œ€¬0€¬5ƒ«–ë¦ë¦ì¦œ€´€´ ¦œ€´€´ ‚ƒ̤ƒ¶ƒ«–ì¦í¦î¦œ€¸€¸&¦œ€¸€¸&‚ƒ‚‚‚ƒ¤ƒ¶‹¦œ€¸'€¸+Œ¦œ€¸,€¸1ƒ«–í¦ï¦ð¦œ€½€½"¦œ€½€½"‚ƒ‚‹‚€‚‰¤ƒ¶‹¦œ€½#€½'Œ¦œ€½(€½-¦ò¦œ€½.€½3ƒ«–î¦å¦ó¦œ€Â€Â-¦œ€Â€Â-‚ƒ‚Фƒ¶¦è¦œ€Â.€Â1ƒ«–ï¦ô¦õ¦œ€Æ€Æ'¦œ€Æ€Æ'‚ƒ‚‹‚€Ì‚„¤ƒ¶Œ¦œ€Æ(€Æ-¦ò¦œ€Æ.€Æ3¦ö¦œ€Æ4€Æ9ƒ«–ð¦÷¦ø¦œ€Ë€Ë!¦œ€Ë€Ë!‚ƒÌ‚Œ‚¤ƒ¶†¦œ€Ë"€Ë$€«¦œ€Ë%€Ë'Œ¦œ€Ë4€Ë9ƒ«–ñ¦û¦ü¦œ€Ï€Ï$¦œ€Ï€Ï$‚ƒ‚ŽÌÌ‚¤ƒ¶†¦œ€Ï%€Ï'Œ¦œ€Ï(€Ï-€«¦œ€Ï.€Ï01¦œ€Ï1€Ï5ƒ«–ò¦ÿ§¦œ€Ó€Ó!¦œ€Ó€Ó!‚ƒ‚Ì‚‘¤ƒ¶†¦œ€Ó"€Ó$Œ¦œ€Ó%€Ó*€«¦œ€Ó+€Ó-ƒ«–󧧦œ€×€×¦œ€×€×‚ƒÌ¤ƒ¶€«¦œ€× €×"ƒ«–ô§§¦œ€Û€Û0¦œ€Û€Û0‚ƒÌ¤ƒ¶€«¦œ€Û1€Û3ƒ«–õ§§¦œ€ß€ß"¦œ€ß€ß"‚ƒ‚’¤ƒ¶†¦œ€ß#€ß%…¸¦œ€ß&€ß+1¦œ€ß,€ß0ƒ«–ö¦¯§ ¦œ€ç€ç(¦œ€ç€ç(‚ƒ‚}€•¤ƒ¶¦¡¦œ€ç)€ç.¦¢¦œ€ç/€ç4ƒ«–÷§ § ¦œ€í€í¦œ€í€í‚“¤ƒÆƒ«–ø§§¦œ€ð€ð!¦œ€ð€ð!‚ˆÌ ‚”¤ƒ»€«¦œ€ð"€ð$§¦œ€ð1€ð9ƒ«–ù§§¦œ€ô€ô¦œ€ô€ô‚ˆ‚•¤ƒ»§¦œ€ô€ô"ƒ«–ú§§¦œ€ø€ø&¦œ€ø€ø&…È€”€•P ‚‚ˆ…Ȥƒ»€”€•P§¦œ€ø'€ø-•¦œ€ø/€ø1§¦œ€ø3€ø5•¦œ€ø7€ø9§¦œ€ø;€ø=ƒ«–û§§¦œ€ü€ü(¦œ€ü€ü(‚ˆ‚•¤ƒ»ƒ«–ü§§¦œ&¦œ&‚ˆ¤ƒ»ƒ«–ý§§¦œ&¦œ&‚ˆ¤ƒ»ƒ«–þ§ §!¦œ$¦œ$‚ˆÌ¤ƒ»€«¦œ%'ƒ«–ÿ§"§#¦œ  +¦œ  +‚ˆ¤ƒ»ƒ«—§$§%¦œ$¦œ$‚ˆ¤ƒ»ƒ«—§&§'¦œ ¦œ ‚ˆ‚•¤ƒ»ƒ«—§(§)¦œ ¦œ ‚ˆ‚“¤ƒ»/¦œƒ«—§(§)¦œ ¦œ ‚ˆ‚“‚•¤ƒ»/¦œ†8¦œ#$ƒ«—§(§)¦œ ¦œ ‚ˆ‚“€ª¤ƒ»/¦œ†8¦œ#$ƒ«—§(§)¦œ" "¦œ" "‚ˆ‚“€—¤ƒ»/¦œ""†8¦œ"#"$ƒ«—§(§)¦œ% %¦œ% %‚ˆ‚“Τƒ»/¦œ%%†8¦œ%#%$ƒ«—§(§)¦œ( (¦œ( (‚ˆ‚“¤ƒ»/¦œ((†8¦œ(#($ƒ«—§(§)¦œ+ +¦œ+ +‚ˆ‚“̤ƒ»/¦œ++†8¦œ+#+$ƒ«— §(§)¦œ. .¦œ. .‚ˆ‚“ͤƒ»/¦œ..†8¦œ.#.$ƒ«— §(§)¦œ1 1¦œ1 1‚ˆ‚“‚}¤ƒ»/¦œ11†8¦œ1#1$ƒ«— §*¦œ: :¦œ: :…É€”€•P €— …É…É€„€”€•P†ß¦œ::€Ö¦œ::ƒ«— §+¦œ??¦œ??ÌÌ €¤Žâ¦œ??•¦œ??ƒ«— §,¦œ@@¦œ@@…Ê€”€•PÌ…Ë€”€•PÌ…Ê…Ë €¤€”€•P€”€•P§-¦œ@@§.¦œ@@ƒ«—§/¦œBB¦œBBÌÌ€¤§0¦œBB#ƒ«—§1¦œDD¦œDDÎÌ€¤§2¦œD!D&ƒ«—§3¦œGG¦œGGÌÌ€¤€«¦œGGƒ«—§4¦œNN¦œNNÀÚ€¤§5¦œNNƒ«—§6¦œjj¦œjj‚–€œÌ€¤™Ù¦œjj“¦œjj!§7ƒ«—¦œ˜˜ ¦œ˜˜ ‚—€¬ƒÊƒÊ—¦œ˜˜ ¦œ˜˜ ‚—€¬ƒÊ €ƒÊ—¦œ˜˜ ¦œ˜˜ ‚— €¬ƒÊ €€ ƒÊ—¦œ˜˜ ¦œ˜˜ ‚— €¬ƒÊ  ƒÊ—¦œ˜˜ ¦œ˜˜ ‚—‚— €¬ƒÊ$‚—…ÌA€Ž,5„€…Ì ƒÊ—§9¦œ££¦œ££€µ€œ€¤ƒ«—§:¦œ¤¤¦œ¤¤€µ€ß€¤ƒ«—§;¦œ¥¥¦œ¥¥€µ«€¤ƒ«—§<¦œ¦¦¦œ¦¦€µ‚˜€¤ƒ«—§>¦œ¨¨ ¦œ¨¨ ‚—€¤ƒ«—§?¦œ³³¦œ³³‚—€œÌ‚ƒ€´‚—€¤§8¦œ³³“¦œ³³§0¦œ³+³/§@¦œ³0³4“=¦œ³5³<ƒ«—§A¦œ¸¸¦œ¸¸‚—€œ‚—€¤§8¦œ¸¸!“¦œ¸#¸'ƒ«—§B¦œÔÔ¦œÔÔ‚–‚— €œÌ€¤™Ù¦œÔÔ§8¦œÔÔ§C¦œÔÔ'“¦œÔ)Ô-ƒ«— §D¦œÚÚ¦œÚÚ‚—€ß‚„‚—€¤§8¦œÚÚ§E¦œÚÚ§F¦œÚ,Ú1ƒ«—!§G¦œÝݦœÝÝ‚—€ß‚„€¤§8¦œÝݧE¦œÝ݃«—"§H¦œàজàà‚—€ß‚‰‚—€¤§8¦œàà§E¦œàà §I¦œà.à3ƒ«—#§J¦œã㦜ãã‚—€ß‚‰€¤§8¦œãã§E¦œãル—$§K¦œææ¦œææ‚—«‚‚—€¤§8¦œææ§L¦œææ§M¦œææ%ƒ«—%§N¦œé馜éé‚—«‚€¤§8¦œéé§L¦œé郫—&§O¦œì즜ìì‚—‚˜‚‚—€¤§8¦œìì§P¦œìì§Q¦œì.ì3ƒ«—'§R¦œï列ïï‚—‚˜‚€¤§8¦œïï§P¦œï—(§S¦œòò¦œòò‚—€œ‚ƒ€¤§8¦œòò“¦œòòƒ«—)§T¦œöö¦œöö‚—€œ€´€¤§8¦œöö“¦œööƒ«—*§U¦œúú¦œúú‚—‚”‚—€¤§8¦œúú§V¦œúúƒ«—+§W¦œüü¦œüü‚—‚”€¤§8¦œüü‡Ü¦œüüƒ«—,§X¦œþþ¦œþþ‚—€ï‚•‚—€¤§8¦œþþ‹¦œþþ§¦œþþƒ«—-§Y¦œ‚‚¦œ‚‚‚—€ï‚•€¤§8¦œ‚‚‹¦œ‚‚ƒ«—.§Z¦œ‚‚¦œ‚‚‚—Ì‚—€¤§8¦œ‚‚§[¦œ‚‚ƒ«—/§\¦œ‚‚¦œ‚‚‚—‚—€¤§8¦œ‚‚ƒ«—0§]¦œ‚‚¦œ‚‚‚—€–Ì€¤§8¦œ‚‚§^¦œ‚‚ƒ«—1§_¦œ‚‚¦œ‚‚‚—€œ €¤§8¦œ‚‚“¦œ‚‚ƒ«—2§`¦œ‚‚¦œ‚‚‚—‚ƒ‚—€¤§8¦œ‚‚ƒ«—3§a¦œ‚‚¦œ‚‚‚—‚—‚ƒ€¤§8¦œ‚‚ƒ«—4§b¦œ‚‚¦œ‚‚‚™‚€€¤ƒ«—5§d¦œ‚*‚*¦œ‚*‚*‚–‚— ‚gÌ€¤™Ù¦œ‚*‚*§8¦œ‚*‚*§C¦œ‚* ‚*-§e¦œ‚*/‚*4ƒ«—6§f¦œ‚2‚2¦œ‚2‚2‚–‚— |Ì€¤™Ù¦œ‚2‚2§8¦œ‚2‚2§C¦œ‚2‚2(“ ¦œ‚2)‚2,ƒ«—7§g¦œ‚\‚\ ¦œ‚\‚\ ‚–‚—|Ì€¤™Ù¦œ‚\ ‚\§8¦œ‚\‚\“ ¦œ‚\‚\§hƒ«—8§i¦œ‚^‚^ ¦œ‚^‚^ ‚–‚—‚šƒ’Ì€¤™Ù¦œ‚^‚^§8¦œ‚^‚^§[¦œ‚^‚^ƒ«—9§k¦œ‚`‚`¦œ‚`‚`‚–‚—‚šÌ€¤™Ù¦œ‚`‚`§8¦œ‚`‚`§[¦œ‚`!‚`%ƒ«—:§l¦œ‚c‚c¦œ‚c‚c‚–‚—|Ì€¤™Ù¦œ‚c‚c§8¦œ‚c‚c“ ¦œ‚c‚c"§mƒ«—;§n¦œ‚j‚j¦œ‚j‚j_€¤€Ö¦œ‚j‚jƒ«—<§o¦œ‚Ÿ‚Ÿ¦œ‚Ÿ‚ŸÌ€¤ƒ«—=§p¦œ‚¨‚¨¦œ‚¨‚¨Ì €¤“ ¦œ‚¨‚¨ƒ«—>§q¦œ‚¯‚¯¦œ‚¯‚¯…Í€”€•P…Í̫̀¤€”€•P§r¦œ‚¯‚¯ §s¦œ‚¯"‚¯)§L¦œ‚¯1‚¯5ƒ«—?§t¦œ‚³‚³¦œ‚³‚³ÌÍÍ€¤§u¦œ‚³‚³&§v¦œ‚³.‚³7ƒ«—@§w¦œ‚·‚·¦œ‚·‚·‚–‚—€šÍ€¤™Ù¦œ‚·‚·§8¦œ‚·‚·—ù¦œ‚·‚·"ƒ«—A§x¦œ‚Ì‚Ì"¦œ‚Ì‚Ì"‚–‚—Ì€ß΀¤™Ù¦œ‚Ì#‚Ì'§8¦œ‚Ì(‚Ì-§s¦œ‚Ì.‚Ì5§E¦œ‚Ì7‚Ì;ƒ«—B§y¦œ‚ð‚𦜂ð‚ð‚–‚—Ì€ß΀¤™Ù¦œ‚ð‚ð§8¦œ‚ð ‚ð%§s¦œ‚ð&‚ð-§E¦œ‚ð/‚ð3ƒ«—C§z¦œƒ ƒ ¦œƒ ƒ ÌÎ΀¤§u¦œƒ ƒ '§{¦œƒ /ƒ 7ƒ«—D§|¦œƒƒ¦œƒƒ‚–‚—Ì€ß΀¤™Ù¦œƒƒ§8¦œƒƒ§u¦œƒƒ&§E¦œƒ.ƒ2ƒ«—E§}¦œƒ%ƒ%¦œƒ%ƒ%‚–‚—€™΀¤™Ù¦œƒ%ƒ%§8¦œƒ%ƒ%‹¦œƒ%ƒ%$ƒ«—F§~¦œƒ5ƒ5¦œƒ5ƒ5‚–‚—̀߂}€¤™Ù¦œƒ5 ƒ5$§8¦œƒ5%ƒ5*§s¦œƒ5,ƒ53§E¦œƒ5;ƒ5?ƒ«—G§¦œƒ<ƒ<"¦œƒ<ƒ<"Ì‚}‚}€¤§u¦œƒ<$ƒ<,§€¦œƒ<4ƒ<<ƒ«—H§¦œƒCƒC¦œƒCƒC‚–‚—€™‚}€¤™Ù¦œƒCƒC§8¦œƒCƒC"‹¦œƒC$ƒC)ƒ«—I§‚¦œƒWƒW¦œƒWƒW‚—‚ˆ€ï€¤§8¦œƒWƒW§ƒ¦œƒWƒW§„¦œƒW+ƒW0ƒ«—J§…¦œƒ\ƒ\¦œƒ\ƒ\‚ˆ‚—€ï‚—€¤§ƒ¦œƒ\ƒ\§8¦œƒ\"ƒ\'§„¦œƒ\)ƒ\.ƒ«—K§†¦œƒfƒf¦œƒfƒf‚—‚ˆ‚b€ï€¤§8¦œƒfƒf§ƒ¦œƒfƒf§‡¦œƒf-ƒf1§ˆ¦œƒf2ƒf6§‰ƒ«—L§Š¦œƒwƒw¦œƒwƒw‚ˆ‚›€¤§ƒ¦œƒwƒw…²¦œƒw*ƒw2§Œƒ«—M§¦œƒ|ƒ|¦œƒ|ƒ|‚ˆ‚œ€¤§ƒ¦œƒ|ƒ|…²¦œƒ|'ƒ|/§ƒ«—N§¦œƒƒƒƒ¦œƒƒƒƒ‚ˆ‚€¤§ƒ¦œƒƒƒƒ§’¦œƒƒ$ƒƒ(§“¦œƒƒ)ƒƒ4§”ƒ«—O§•¦œƒˆƒˆ¦œƒˆƒˆ…΀”€•P‚–‚—‚ˆ€™…΀¤€”€•P™Ù¦œƒˆƒˆ§8¦œƒˆƒˆ§ƒ¦œƒˆ ƒˆ#‹¦œƒˆ1ƒˆ6§–¦œƒˆ7ƒˆ>ƒ«—P§—¦œƒƒ¦œƒƒ‚ˆ€¤§ƒ¦œƒƒƒ«—Q§˜¦œƒ—ƒ—¦œƒ—ƒ—‚–‚—‚ˆ‚“‚€™‚š€¤™Ù¦œƒ—ƒ—§8¦œƒ—ƒ—§ƒ¦œƒ—ƒ—!§™¦œƒ—/ƒ—5§’¦œƒ—6ƒ—:‹¦œƒ—<ƒ—A§–¦œƒ—Pƒ—Wƒ«—R§š¦œƒ­ƒ­¦œƒ­ƒ­‚žÌ΀¤§œ¦œƒ­ƒ­ €«¦œƒ­"ƒ­$ƒ«—S§¦œƒ´ƒ´¦œƒ´ƒ´Ì΀¤†¦œƒ´ƒ´€«¦œƒ´ƒ´ƒ«—T§ž¦œƒ»ƒ»¦œƒ»ƒ»Ì΀¤†¦œƒ»ƒ»€«¦œƒ»ƒ»ƒ«—U§Ÿ¦œƒÇƒÇ¦œƒÇƒÇ‚–‚|‚—‚ˆ{€¤™Ù¦œƒÇƒÇ§ ¦œƒÇƒÇ§8¦œƒÇ.ƒÇ3§ƒ¦œƒÇ5ƒÇ8§¡¦œƒÇFƒÇKƒ«—V§¢¦œ„ó„󦜄ó„ó‚–‚|‚—‚ˆ‚Ÿ€¤™Ù¦œ„ó„ó§ ¦œ„ó„ó§8¦œ„ó„ó#§ƒ¦œ„ó%„ó(§¤¦œ„ó6„ó<ƒ«—W§¥¦œ„÷„÷ ¦œ„÷„÷ ‚–‚|‚—‚ˆ‚=€¤™Ù¦œ„÷ „÷§ ¦œ„÷„÷§8¦œ„÷„÷§ƒ¦œ„÷„÷!§¦¦œ„÷/„÷3ƒ«—X§§¦œ…4…4 ¦œ…4…4 ‚–‚—‚ˆ‚ ‚”€¤™Ù¦œ…4…4§8¦œ…4…4§ƒ¦œ…4…4§©¦œ…4.…43ƒ«—Y§ª¦œ…8…8¦œ…8…8‚–‚|‚—‚ˆ‚:€¤™Ù¦œ…8…8§ ¦œ…8…8§8¦œ…8…8$§ƒ¦œ…8&…8)§«¦œ…87…8>ƒ«—Z§¬¦œ…F…F¦œ…F…F…Ï€”€•P‚ˆ…Ѐ”€•P‚–‚|‚—…υЂ;€¤€”€•P€”€•P™Ù¦œ…F…F§ ¦œ…F…F§8¦œ…F…F"§ƒ¦œ…F#…F&§­¦œ…F'…F,§®¦œ…F.…F3ƒ«—[§¯¦œ…R…R¦œ…R…R‚–‚—€¡‚}€•€¤™Ù¦œ…R…R§8¦œ…R…R§°¦œ…R…R#ƒ«—\§±¦œ…k…k¦œ…k…k…Ñ€”€•P‚–‚—‚}€•…Ñ€¡…Ñ€¤€”€•P™Ù¦œ…k…k§8¦œ…k…k”þ¦œ…k…k!§°¦œ…k"…k'ƒ«—]§²¦œ…l…l¦œ…l…l‚–‚—‚}€•€€¤™Ù¦œ…l…l§8¦œ…l…l”þ¦œ…l…l"˜¾¦œ…l$…l*ƒ«—^§³¦œ…r…r¦œ…r…r…Ò€”€•P…Ó€”€•P…Ò…Ón€¤€”€•P€”€•P§r¦œ…r…r§´¦œ…r…r6¦è¦œ…r8…r;ƒ«—_§µ¦œ…z…z¦œ…z…z‚–‚—€ÃÌn€¤™Ù¦œ…z…z§8¦œ…z…z#§¶¦œ…z%…z,¦è¦œ…z<…z?ƒ«—`§·¦œ…œ…œ¦œ…œ…œ‚–‚—‚†‚‡p€¤™Ù¦œ…œ…œ§8¦œ…œ…œ§¸¦œ…œ…œ-‡Ü¦œ…œh…œi§¹¦œ…œj…œoƒ«—a§º¦œ…®…®¦œ…®…®r‚‹€¤š¦œ…®…®ƒ«—b§»¦œ…̦̅œ…Ì…Ìr‚…€¤š¦œ…̅̃«—c§¼¦œ…܅ܦœ…Ü…Ü‚–€œ‚ƒ‚—r‚—€¤™Ù¦œ…Ü…Ü“¦œ…Ü…Ü"§@¦œ…Ü$…Ü(§8¦œ…Ü6…Ü;š¦œ…Ü=…ÜAƒ«—d§½¦œ†6†6¦œ†6†6‚–€œ‚|‚ƒ‚—r€¤™Ù¦œ†6†6“¦œ†6†6"§ ¦œ†6#†6'§@¦œ†6)†6-§8¦œ†6;†6@š¦œ†6B†6Fƒ«—e§¾¦œ†b†b¦œ†b†b‚–€œ‚ƒ‚—s‚—€¤™Ù¦œ†b†b“¦œ†b†b§@¦œ†b†b#§8¦œ†b1†b6§¿¦œ†b8†b<ƒ«—f§À¦œ†‰†‰¦œ†‰†‰‚–€œ‚ƒ‚—s€¤™Ù¦œ†‰†‰“¦œ†‰†‰§Á¦œ†‰†‰$§8¦œ†‰2†‰7§¿¦œ†‰9†‰=ƒ«—g§Â¦œ†’†’¦œ†’†’‚–€œ‚ƒ‚—t‚—€¤™Ù¦œ†’†’“¦œ†’†’ §@¦œ†’"†’&§8¦œ†’4†’9§Ã¦œ†’;†’?ƒ«—h§Ä¦œ† † ¦œ† † ‚–€œ‚ƒ‚—t€¤™Ù¦œ† † “¦œ† †  §Á¦œ† "† '§8¦œ† 5† :§Ã¦œ† <† @ƒ«—i§Å¦œ†ª†ª¦œ†ª†ª‚–‚ƒ‚—l€¤™Ù¦œ†ª†ª§@¦œ†ª†ª§8¦œ†ª,†ª1§Æ¦œ†ª3†ª;ƒ«—j§Ç¦œ†º†º¦œ†º†º…Ô€”€•P‚–…Ô‚ƒ‚—‚¡‚—€¤€”€•P™Ù¦œ†º†º§É¦œ†º†º$§@¦œ†º&†º*§8¦œ†º8†º=§Ê¦œ†º?†ºDƒ«—k§Ë¦œ†Æ†Æ¦œ†Æ†Æ‚¢‚‚€¤€Ö¦œ†Æ†Æ ƒ«—l§Í¦œ†Ð†Ð¦œ†Ð†Ð‚£‚‚€¤€Ö¦œ†Ð†Ðƒ«—m§Ï¦œ†Þ†Þ ¦œ†Þ†Þ ‚¤‚‚€¤€Ö¦œ†Þ!†Þ"ƒ«—n§Ñ¦œ†å†å¦œ†å†å‚–‚—‚¥‚‚‚}€•€¤™Ù¦œ†å†å#§8¦œ†å$†å)€Ö¦œ†å*†å+ƒ«—o§Ó¦œ†ú†ú¦œ†ú†ú‚–‚—‚|‚‚‚ƒ€´€´‚—€¤™Ù¦œ†ú†ú§8¦œ†ú†ú$§ ¦œ†ú&†ú*§Ô¦œ†ú:†úI§Õ¦œ†úJ†úQ‰6¦œ†úS†úWƒ«—p§Ö¦œ‡ ‡ ¦œ‡ ‡ ‚–‚—‚|‚ƒ€´€´‚—€¤™Ù¦œ‡ ‡ §8¦œ‡ ‡ § ¦œ‡ ‡ $§@¦œ‡ &‡ *§Õ¦œ‡ :‡ A‰6¦œ‡ B‡ Fƒ«—q§×¦œ‡'‡'¦œ‡'‡'‚–€´‚—€´€¤™Ù¦œ‡'‡'§Õ¦œ‡' ‡''§8¦œ‡'(‡'-‰6¦œ‡'/‡'3ƒ«—r§Ø¦œ‡9‡9¦œ‡9‡9‚–€´‚—€´‚—€¤™Ù¦œ‡9‡9§Õ¦œ‡9‡9&§8¦œ‡9'‡9,‰6¦œ‡9.‡92ƒ«—s§Ù¦œ‡M‡M¦œ‡M‡M‚–€´‚|‚—€´‚—€¤™Ù¦œ‡M‡M§Õ¦œ‡M‡M&§ ¦œ‡M'‡M+§8¦œ‡M,‡M1‰6¦œ‡M3‡M7ƒ«—t§Ú¦œ‡r‡r¦œ‡r‡r€œ€œ€¤“¦œ‡r‡rƒ«—u§Û¦œ‡w‡w¦œ‡w‡w |€œ€œ€¤§Ü¦œ‡w‡w(“ ¦œ‡w)‡w,”²¦œ‡w-‡w0ƒ«—v§Ý¦œ‡‡ ¦œ‡‡  €¤ƒ«—w§Þ¦œ‡ƒ‡ƒ¦œ‡ƒ‡ƒ€Œ€œ€Œ€œ ‚—€œ€¤À¦œ‡ƒ‡ƒ§ß¦œ‡ƒ.‡ƒ5§8¦œ‡ƒI‡ƒN“¦œ‡ƒO‡ƒSƒ«—x§à¦œ‡Ò‡Ò¦œ‡Ò‡Ò€Œ€œ€Œ€œ €´‚—€´€¤À¦œ‡Ò‡Ò"§ß¦œ‡Ò#‡Ò*§Õ¦œ‡Ò,‡Ò3§8¦œ‡Ò4‡Ò9‰6¦œ‡Ò;‡Ò?ƒ«—y§á¦œ‡à‡à¦œ‡à‡à‚–‚|‚—€´‚—€¤™Ù¦œ‡à‡à§ ¦œ‡à‡à#§8¦œ‡à3‡à8‰6¦œ‡à:‡à>ƒ«—z§â¦œ‡ã‡ã¦œ‡ã‡ã‚–‚—€´€¤™Ù¦œ‡ã#‡ã'§8¦œ‡ã(‡ã-‰6¦œ‡ã.‡ã2ƒ«—{§ã¦œ‡ä‡ä¦œ‡ä‡ä‚–‚—€´‚—€¤™Ù¦œ‡ä#‡ä'§8¦œ‡ä(‡ä-‰6¦œ‡ä.‡ä2ƒ«—|§ä¦œ‡å‡å¦œ‡å‡å‚–‚|‚—€´‚—€¤™Ù¦œ‡å‡å§ ¦œ‡å‡å"§8¦œ‡å#‡å(‰6¦œ‡å)‡å-ƒ«—}§å¦œ‡æ‡æ¦œ‡æ‡æ€Œ€œ€Œ€œ ‚—€´€¤§8¦œ‡æ#‡æ(‰6¦œ‡æ)‡æ-ƒ«—~§æ¦œ‡ì‡ì¦œ‡ì‡ì‚–‚—‚{‚|S‚—€¤™Ù¦œ‡ì‡ì§8¦œ‡ì‡ì"§ç¦œ‡ì$‡ì(§ ¦œ‡ì=‡ìA€Š¦œ‡ìT‡ìUƒ«—§è¦œˆ ˆ ¦œˆ ˆ   ‚{‚|€¤˜ú¦œˆ ˆ ,›<¦œˆ .ˆ 6§é¦œˆ 8ˆ Aƒ«—€§ê¦œˆ'ˆ'¦œˆ'ˆ'€˜‚—‚{‚|S À)Û‚—$€¤›€¦œˆ'ˆ'§8¦œˆ'ˆ'"§ç¦œˆ'$ˆ'(§ ¦œˆ'<ˆ'@†þ¦œˆ'Rˆ'W§é¦œˆ'jˆ's§ë¦œˆ'|ˆ'€‡ƒ«—™®¦œˆTˆT¦œˆTˆT‚—€œÌ€¤§8¦œˆTˆT“¦œˆTˆTƒ«—‚™¯¦œˆUˆU¦œˆUˆU‚–‚—|Ì€¤™Ù¦œˆUˆU§8¦œˆUˆU“ ¦œˆUˆU"ƒ«—ƒ™«¦œˆXˆX¦œˆXˆX‚—«Í€¤§8¦œˆXˆX§L¦œˆXˆXƒ«—„™­¦œˆYˆY¦œˆYˆY‚—€ß΀¤§8¦œˆYˆY§E¦œˆYˆYƒ«ƒ=•$¦œ<< ƒ=§ìD¦›œ>>Õ×…†—…•&¦œ== ¦œ== …Õ€”€•P…Ö€”€•P…Õ€ò…Õ…Ö…Ö€¤€”€•P€”€•P€Ö¦œ==€Š¦œ==“¦œ==ƒÙƒ>™Ù¦œ^^ ƒ>€˜›€¦œ__  §í¦œ``À)ۧ릜aa§îD¦›??×׆†ƒ?§8¦œ˜˜ ƒ?‘€š ,   €ò€œÌ‚ƒ€´̧列™™€ò€ß‚„§ð¦œšš€ò€ß‚‰§ñ¦œ››€ò«‚§ò¦œœœ€ò‚˜‚§ó¦œ‚”§ô¦œžž€ò€ï‚•§õ¦œŸŸ̧ö¦œ  ‚ƒ§÷¦œ¡¡ƒ«§8‚—ƒ«§8‚—ƒ«§8‚— ƒ«§8‚— ƒ«§8‚—‚— $‚— §øD¦›@@×׆†ƒ@§ù§ú5Cƒ@§ûDÜAC×׆ —†§ü§ú §ý‚ ‚‚¦€•ÿ¤@ƒÚƒÚ—‡§ÿ§ú#§ý‚‚#‚¦ÿ¤@ƒÚƒÚ—ˆ¨§ú§ý‚ ‚ €•‚¦ÿ¤@ƒÚƒÚ—‰¨§ú!§ý‚ ‚ !‚¦ÿ¤@ƒÚƒÚ—Ѝ§ú"§ý‚‚"‚¦ÿ¤@ƒÚƒÚ—‹§ú §ú ‚§€¬ƒÛƒÛ—Œ§ú §ú ‚§€¬ƒÛ ƒÛ—§ú §ú ‚§ €¬ƒÛ  ƒÛ—ލ§ú&&§ý’’‚§S ÿ¤@ŒZ§ú'' Œ\§ú(( ¨§ú)) Ÿ¦§ú**¨ƒÜƒA§þ§úƒA€Ž€‚Ib§üƒÜ§þ§ü‚¦€•§ÿƒÜ§þ§ÿ‚¦¨ƒÜ§þ¨€•‚¦¨ƒÜ§þ¨‚¦¨ƒÜ§þ¨‚¦D§ùBB×׃BŒ\§ú ƒB•L§ú ª§ú ‚¦Ÿ§ú  ¨§ú  ! Ÿ§ú!! Ÿ¡§ú""  Ÿs§ú##ƒÜŒ\‚§ƒÜŒ\‚§ƒÜŒ\‚§  D§ùCC×׃C¨¨%5%CƒC¨ DDF××–—¨ ¨33 ¨ ïï ‚¨ÿ¤@ƒÞ—¨ ¨; ;¨ „ „‚©Sÿ¤@ƒßƒß—‘¨¨< <¨ „ „‚©Àÿ¤@ƒßƒß—’¨¨>>¨ ýý‚¨‚©ÿ¤@ƒÞ—“¨¨??¨ íí‚©ÿ¤@ƒÞ—”¨¨DD*¨ *‚¨‚©ÿ¤@¨ƒÞ—•¨¨GG¨ 00€•‚¨‚©ÿ¤@¨¨G!G7¨¨GBGRŒ\¨G^Ge¨ƒÞƒD¨ ¨..ƒD¨¨// €˜´¨00 :¨11D¨EE××––ƒE¨¨::ƒE€Ž€‚Ib¨ ƒÞ¨¨ ‚©S¨ƒÞ¨¨‚©ÀD¨FF××––ƒF¨¨5BƒF¨DGG××––ƒGE¨57ƒG¨Dó–H¿×û–`‚»—–¨PP¨PPþ€¬‚ÿ ‚ÿ——¨PP¨PPþþ€¬‚ÿþ þ‚ÿ—˜¨PP¨PPþ€¬‚ÿ‚ÿ—™¨PP¨PPþ€¬‚ÿ‚ÿ—š¨PP¨PPþ€¬‚ÿ ‚ÿ—›¨PP¨PPþ €¬‚ÿ  ‚ÿ—œ‚ó¨YY¨ƒQƒQ‚ª‚ª‚ªçÿ¤@‚Ɇ¨YY#¦Â¨Y3Y9¨¨YIYU”Þ¨YeYi‚É—¨ ¨Z Z¨ƒV ƒV炪ÿ¤@‚ɂɗž¨!¨[ [¨ƒW ƒW炪ÿ¤@‚ɂɗŸ¨"¨\ \¨ƒX ƒX炪ÿ¤@‚ɂɗ ¨#¨] ]¨ƒY ƒYçÿ¤@‚ɂɗ¡‚ó¨bb¨ƒaƒaç‚«ÿ¤@ƒá¨%¨bb#Œ™¨b8b<Ž@¨bDbJ¨&¨bRbY¨'¨b`biƒá—¢¨(¨c c¨ƒg ƒg‚«çÿ¤@ƒáƒá—£Ž9¨d d¨ƒh ƒh‚«ÿ¤@ƒáƒá—¤Ž:¨e e¨ƒi ƒi‚«ÿ¤@ƒáƒá—¥ŽE¨f f¨ƒj ƒj‚«ÿ¤@ƒáƒá—¦ŽF¨g g¨ƒk ƒk‚«ÿ¤@ƒáƒá—§¨vv¨vv‚¬€¬ƒâ ƒâ—¨¨vv¨vv‚¬‚¬€¬ƒâ‚¬ ‚¬ƒâ—©¨vv¨vv‚¬€¬ƒâƒâ—ª¨vv¨vv‚¬€¬ƒâƒâ—«¨vv¨vv‚¬€¬ƒâ ƒâ—¬¨vv¨vv‚¬ €¬ƒâ  ƒâ—­¨*¨y y¨§ §‚¬ ÿ¤@ƒâƒâ—®¨+¨z z¨¨ ¨‚¬ ÿ¤@ƒâƒâ—¯¨,¨{ {¨© ©‚¬€•ÿ¤@ƒâƒâ—°¨-¨| |¨ª ª‚¬€•ÿ¤@ƒâƒâ—±‚󨀂€‚¨ÌÌ€•‚¬ €¢Àÿ¤@‚†‹¨€‚€‚¨.¨€‚*€‚.¨/¨€‚@€‚I¨0¨€‚^€‚j”i¨€‚s€‚z¨1¨€‚€“€‚€™‚†—²¨2¨€ƒ€ƒ"¨ÕÕ"ÚÀÿ¤@‚†‚†—³€Ç¨€„ €„¨Á ÁÀÿ¤@‚†‚†—´ˆY¨€† €†¨ããÀÿ¤@‚†¨3‚†—µ¨4¨€‡ €‡¨ ÂÀ€•ÿ¤@‚†‚†—¶§ü¨€ˆ €ˆ¨à ÃÀ‚¬ÿ¤@‚†‚†—·¨5¨€Š €Š¨Ä ÄÀ ÿ¤@‚†¨6‚†—¸¨7¨€‹ €‹¨Å ÅÀ€¢ÿ¤@‚†‚†—¹¨8¨€Œ €Œ¨Æ ÆÀÿ¤@‚†‚†—º‚󨀑€‘¨‚‚ €•‚­ÿ¤@ƒã‹¨€‘€‘¨:¨€‘*€‘5¨.¨€‘>€‘Bƒã—»€Ç¨€’ €’¨‚ ‚‚­ÿ¤@ƒãƒã—¼¨;¨€“ €“¨‚ ‚‚­ ÿ¤@ƒãƒã—½¨4¨€” €”¨‚ ‚‚­€•ÿ¤@ƒãƒã—¾¨€Õ€Õ¨€Õ€Õ€¬ —¿¨€Õ€Õ¨€Õ€Õ€¬ —À¨€Õ€Õ¨€Õ€Õ€¬—Á¨€Õ€Õ¨€Õ€Õ€¬—¨€Õ€Õ¨€Õ€Õ€¬ —è€Õ€Õ¨€Õ€Õ €¬  —ćï¨€Ü €Ü¨‚ ‚ ÿ¤@—Ũ<¨€Ý €Ý¨‚ ‚ ÿ¤@—ƨ=¨€Þ €Þ¨‚ ‚ ÿ¤@—Ǩ>¨€ß €ß¨‚ ‚ ‚­ÿ¤@—Ȩ?¨€à €à¨‚! ‚!Àÿ¤@—ɈY¨€á €á¨‚#‚#ÿ¤@—ʨ€í€í¨€í€í‚®€¬ƒä ƒä—˨€í€í¨€í€í‚®‚®€¬ƒä‚® ‚®ƒä—̨€í€í¨€í€í‚®€¬ƒäƒä—ͨ€í€í¨€í€í‚®€¬ƒäƒä—Ψ€í€í¨€í€í‚®€¬ƒä ƒä—Ϩ€í€í¨€í€í‚® €¬ƒä  ƒä—Ш€ö€ö¨€ö€ö‚¯€¬ƒå ƒå—Ѩ€ö€ö¨€ö€ö‚¯‚¯€¬ƒå‚¯ ‚¯ƒå—Ò¨€ö€ö¨€ö€ö‚¯€¬ƒåƒå—Ó¨€ö€ö¨€ö€ö‚¯€¬ƒåƒå—Ô¨€ö€ö¨€ö€ö‚¯€¬ƒå ƒå—Õ¨€ö€ö¨€ö€ö‚¯ €¬ƒå  ƒå—Ö¨€ÿ€ÿ¨€ÿ€ÿ‚™€¬ƒÌ ƒÌ—ר€ÿ€ÿ¨€ÿ€ÿ‚™‚™€¬ƒÌ‚™ ‚™ƒÌ—ب€ÿ€ÿ¨€ÿ€ÿ‚™€¬ƒÌƒÌ—Ù¨€ÿ€ÿ¨€ÿ€ÿ‚™€¬ƒÌƒÌ—Ú¨€ÿ€ÿ¨€ÿ€ÿ‚™€¬ƒÌ ƒÌ—Û¨€ÿ€ÿ¨€ÿ€ÿ‚™ €¬ƒÌ  ƒÌ—Ü—¨ ¨‚T ‚T‚™ ÿ¤@ƒÌƒÌ—ݨB¨ ¨‚U ‚U‚™ ÿ¤@ƒÌƒÌ—Þ†ï¨ ¨‚V ‚V‚™ ÿ¤@ƒÌƒÌ—ߨC¨ ¨‚R ‚R‚™‚¯ÿ¤@ƒÌƒÌ—à¨D¨ ¨‚S ‚S‚™‚®ÿ¤@ƒÌƒÌ—á¨E¨¨‚X‚X‚™ÿ¤@ƒÌƒÌ—â¨F¨¨‚Y‚Y‚™ÿ¤@ƒÌƒÌ—㨨m€¬ó ó—䨨mm€¬óm mó—娨m€¬ó󗿍¨m€¬óó—稨m€¬ó ó—訨m €¬ó  ó—é¨G¨ ¨‚6 ‚6mÿ¤@óó—ê¨H¨#¨‚7‚7#mÿ¤@ó¨Ió—ë¨J¨¨‚8‚8mÿ¤@óó—ì¨ ¨ €õ€¬K K—í¨ ¨ €õ€õ€¬K€õ €õK—î¨ ¨ €õ€¬KK—ï¨ ¨ €õ€¬KK—𨠨 €õ€¬K K—ñ¨ ¨ €õ €¬K  K—ò¨¨‚°€¬ƒæ ƒæ—󨨂°‚°€¬ƒæ‚° ‚°ƒæ—ô¨¨‚°€¬ƒæƒæ—õ¨¨‚°€¬ƒæƒæ—ö¨¨‚°€¬ƒæ ƒæ—÷¨¨‚° €¬ƒæ  ƒæ—ø‚ó¨%%¨‚p‚p€œÿ¤@€×7¨%% ¨L¨%/%8‹¨%H%L¨M€×—ù¨N¨( (¨‚x ‚x€œÿ¤@€×¨O€×—ú¨P¨* *¨‚y ‚y€œÿ¤@€×¨Q€×—û€Ç¨, ,¨‚z ‚z€œÿ¤@€×¨R€×—üš)¨. .¨‚›‚›€œÿ¤@€×¨S€×—ý¨T¨0 0¨‚‚"€œÿ¤@€×¨U€×—þˆY¨1 1¨‚§‚§€œÿ¤@€×€×—ÿ¨V¨3 3+¨‚¤‚¤0€œÿ¤@€×€×˜¨PP ¨PP |€¬€« €«˜¨PP ¨PP ||€¬€«| |€«˜¨PP ¨PP |€¬€«€«˜¨PP ¨PP |€¬€«€«˜¨PP ¨PP |€¬€« €«˜¨PP ¨PP | €¬€«  €«˜¨ss¨sso€¬õ õ˜¨ss¨ssoo€¬õo oõ˜¨ss¨sso€¬õõ˜ ¨ss¨sso€¬õõ˜ ¨ss¨sso€¬õ õ˜ ¨ss¨sso €¬õ  õ˜ ‚ó¨BB¨‚»‚»€œ‚±‚gÿ¤@ƒ”¨X¨BB"¨Y¨B/B<ƒ”˜ —x¨E E¨‚¶ ‚¶‚g€œÿ¤@ƒ”¨Zƒ”˜¨[¨G G¨‚º ‚º‚g‚±ÿ¤@ƒ”¨\ƒ”˜¨N¨H H¨‚· ‚·‚gÿ¤@ƒ”ƒ”˜¨P¨I I¨‚¸ ‚¸‚gÿ¤@ƒ”ƒ”˜€Ç¨J J¨‚¹ ‚¹‚gÿ¤@ƒ”ƒ”˜š)¨K K¨‚Ç ‚Ç‚gÿ¤@ƒ”ƒ”˜¨]¨i i¨‡- ‡-|‚gÿ¤@€«¨^€«˜¨_¨j j¨‡1 ‡1|€õÿ¤@€«€«˜—x¨k k¨‡6 ‡6|€œÿ¤@€«€«˜¨`¨l l¨‡: ‡:| ÿ¤@€«€«˜¨[¨m m¨‡> ‡>|‚±ÿ¤@€«€«˜¨a¨n n¨‡B ‡B| ÿ¤@€«€«˜¨T¨o o¨‚Õ ‚Õ|ÿ¤@€«€«˜¨V¨p p+¨‚ë ‚ë-|ÿ¤@€«€«˜‚󨜜¨ƒƒ€œ‚™‚š|€ßÿ¤@3¨b¨œœ,¨c¨œ:œE‹¨œWœ[¨d¨œfœr¨e¨œzœ€‚¨f¨œ€Žœ€˜3˜¨g¨ ¨ƒ ƒ€ß€œÿ¤@33˜¨h¨ž ž¨ƒ ƒ€ß‚™ÿ¤@33˜€Ç¨Ÿ Ÿ¨ƒ ƒ€ßÿ¤@33˜–ù¨   ¨ƒ ƒ€ßÿ¤@33˜ ¨i¨¡ ¡¨ƒ ƒ€ßÿ¤@33˜!¨j¨¢ ¢¨ƒ ƒ€ß‚šÿ¤@33˜"‡i¨£ £¨ƒ ƒ€ß|ÿ¤@33˜#¨k¨¤ ¤¨ƒ ƒ€ßoÿ¤@33˜$¨ªª¨ªª«€¬‚b ‚b˜%¨ªª¨ªª««€¬‚b« «‚b˜&¨ªª¨ªª«€¬‚b‚b˜'¨ªª¨ªª«€¬‚b‚b˜(¨ªª¨ªª«€¬‚b ‚b˜)¨ªª¨ªª« €¬‚b  ‚b˜*‚󨾾¨ƒ,ƒ,|€ß‚±€™ÿ¤@€Ô€Ô˜+¨l¨¿ ¿¨ƒ- ƒ-€™€ßÿ¤@€Ô€Ô˜,—¨À À¨ƒ. ƒ.€™|ÿ¤@€Ô€Ô˜-¨[¨Á Á¨ƒ/ ƒ/€™‚±ÿ¤@€Ô€Ô˜.¨h¨ Â¨ƒ1 ƒ1€™‚™ÿ¤@€Ô€Ô˜/–ù¨à èƒ2 ƒ2€™ÿ¤@€Ô€Ô˜0€Ç¨Ä Ĩƒ0 ƒ0€™ÿ¤@€Ô€Ô˜1¨m¨Å Ũƒ3 ƒ3€™‚šÿ¤@€Ô€Ô˜2ˆŠ¨Æ ƨƒ4 ƒ4€™|ÿ¤@€Ô€Ô˜3¨Į̀ÌÌ€š€¬€Õ €Õ˜4¨Į̀ÌÌ€š€š€¬€Õ€š €š€Õ˜5¨Į̀ÌÌ€š€¬€Õ€Õ˜6¨Į̀ÌÌ€š€¬€Õ€Õ˜7¨Į̀ÌÌ€š€¬€Õ €Õ˜8¨Į̀ÌÌ€š €¬€Õ  €Õ˜9¨g¨Ï Ϩƒ= ƒ=€š€œÿ¤@€Õ€Õ˜:€Ç¨Ð Шƒ< ƒ<€šÿ¤@€Õ€Õ˜;†ñ¨Ñ Ѩƒ; ƒ;€š|ÿ¤@€Õ€Õ˜<¨n¨Ò Ò¨‹ ‹€š|ÿ¤@€Õ€Õ˜=¨ÚÚ¨ÚÚ‚²€¬ƒè ƒè˜>¨ÚÚ¨ÚÚ‚²‚²€¬ƒè‚² ‚²ƒè˜?¨ÚÚ¨ÚÚ‚²€¬ƒèƒè˜@¨ÚÚ¨ÚÚ‚²€¬ƒèƒè˜A¨ÚÚ¨ÚÚ‚²€¬ƒè ƒè˜B¨ÚÚ¨ÚÚ‚² €¬ƒè  ƒè˜C¨ëë ¨ëë ‚x€¬ƒ© ƒ©˜D¨ëë ¨ëë ‚x‚x€¬ƒ©‚x ‚xƒ©˜E¨ëë ¨ëë ‚x€¬ƒ©ƒ©˜F¨ëë ¨ëë ‚x€¬ƒ©ƒ©˜G¨ëë ¨ëë ‚x€¬ƒ© ƒ©˜H¨ëë ¨ëë ‚x €¬ƒ©  ƒ©˜I¨ññ ¨ññ ‚v€¬ƒ§ ƒ§˜J¨ññ ¨ññ ‚v‚v€¬ƒ§‚v ‚vƒ§˜K¨ññ ¨ññ ‚v€¬ƒ§ƒ§˜L¨ññ ¨ññ ‚v€¬ƒ§ƒ§˜M¨ññ ¨ññ ‚v€¬ƒ§ ƒ§˜N¨ññ ¨ññ ‚v €¬ƒ§  ƒ§˜O¨÷÷¨÷÷‚€¬ƒÐ ƒÐ˜P¨÷÷¨÷÷‚‚€¬ƒÐ‚ ‚ƒÐ˜Q¨÷÷¨÷÷‚€¬ƒÐƒÐ˜R¨÷÷¨÷÷‚€¬ƒÐƒÐ˜S¨÷÷¨÷÷‚€¬ƒÐ ƒÐ˜T¨÷÷¨÷÷‚ €¬ƒÐ  ƒÐ˜U¨ûû¨ûû‚œ€¬ƒÏ ƒÏ˜V¨ûû¨ûû‚œ‚œ€¬ƒÏ‚œ ‚œƒÏ˜W¨ûû¨ûû‚œ€¬ƒÏƒÏ˜X¨ûû¨ûû‚œ€¬ƒÏƒÏ˜Y¨ûû¨ûû‚œ€¬ƒÏ ƒÏ˜Z¨ûû¨ûû‚œ €¬ƒÏ  ƒÏ˜[¨‚‚¨‚‚‚›€¬ƒÎ ƒÎ˜\¨‚‚¨‚‚‚›‚›€¬ƒÎ‚› ‚›ƒÎ˜]¨‚‚¨‚‚‚›€¬ƒÎƒÎ˜^¨‚‚¨‚‚‚›€¬ƒÎƒÎ˜_¨‚‚¨‚‚‚›€¬ƒÎ ƒÎ˜`¨‚‚¨‚‚‚› €¬ƒÎ  ƒÎ˜a¨‚‚¨‚‚‚³€¬ƒé ƒé˜b¨‚‚¨‚‚‚³‚³€¬ƒé‚³ ‚³ƒé˜c¨‚‚¨‚‚‚³€¬ƒéƒé˜d¨‚‚¨‚‚‚³€¬ƒéƒé˜e¨‚‚¨‚‚‚³€¬ƒé ƒé˜f¨‚‚¨‚‚‚³ €¬ƒé  ƒé˜g¨‚ ‚ ¨‚ ‚ ‚b€¬ƒ‹ ƒ‹˜h¨‚ ‚ ¨‚ ‚ ‚b‚b€¬ƒ‹‚b ‚bƒ‹˜i¨‚ ‚ ¨‚ ‚ ‚b€¬ƒ‹ƒ‹˜j¨‚ ‚ ¨‚ ‚ ‚b€¬ƒ‹ƒ‹˜k¨‚ ‚ ¨‚ ‚ ‚b€¬ƒ‹ ƒ‹˜l¨‚ ‚ ¨‚ ‚ ‚b €¬ƒ‹  ƒ‹˜m¨‚"‚" ¨‚"‚" {€¬€ª€ª˜n¨‚"‚" ¨‚"‚" {€¬€ª €ª˜o¨‚"‚" ¨‚"‚" { €¬€ª  €ª˜p¨q¨‚´‚´#¨„`„`#…רr¨‚´9‚´C„ƒê…ׂׅ´‚´ ‚´…×ÿ¤@¨r¨‚´9‚´Cƒì˜q¨‚Ƃƨ‚ƂƂŸ€¬ƒÒƒÒ˜r¨‚Ƃƨ‚ƂƂŸ€¬ƒÒ ƒÒ˜s¨‚Ƃƨ‚ƂƂŸ €¬ƒÒ  ƒÒ˜t¨u¨‚É ‚ɨ„‚ „‚‚Ÿ€ïÿ¤@ƒÒƒÒ˜u¨‚ςϨ‚ςςµ€¬ƒí ƒí˜v¨‚ςϨ‚ςςµ‚µ€¬ƒí‚µ ‚µƒí˜w¨‚ςϨ‚ςςµ€¬ƒíƒí˜x¨‚ςϨ‚ςςµ€¬ƒíƒí˜y¨‚ςϨ‚ςςµ€¬ƒí ƒí˜z¨‚ςϨ‚ςςµ €¬ƒí  ƒí˜{¨ƒDƒD ¨ƒDƒD ‚=€¬ƒGƒG˜|¨ƒDƒD ¨ƒDƒD ‚=€¬ƒG ƒG˜}¨ƒDƒD ¨ƒDƒD ‚= €¬ƒG  ƒG˜~¨ƒSƒS¨ƒSƒS‚¶€¬ƒîƒî˜¨ƒSƒS¨ƒSƒS‚¶€¬ƒî ƒî˜€¨ƒSƒS¨ƒSƒS‚¶ €¬ƒî  ƒî˜¨ƒXƒX¨ƒXƒX‚·€¬ƒïƒï˜‚¨ƒXƒX¨ƒXƒX‚·€¬ƒï ƒï˜ƒ¨ƒXƒX¨ƒXƒX‚· €¬ƒï  ƒï˜„¨y¨ƒ\ƒ\¨ˆNˆN‚=€ïÿ¤@ƒì˜…¨z¨ƒ]ƒ]¨ˆ®ˆ®‚=€ïÿ¤@ƒì˜†¨ƒbƒb¨ƒbƒb_€¬€Š €Š˜‡¨ƒbƒb¨ƒbƒb__€¬€Š_ _€Š˜ˆ¨ƒbƒb¨ƒbƒb_€¬€Š€Š˜‰¨ƒbƒb¨ƒbƒb_€¬€Š€Š˜Š¨ƒbƒb¨ƒbƒb_€¬€Š €Š˜‹¨ƒbƒb¨ƒbƒb_ €¬€Š  €Š˜Œ¨ƒsƒs¨ƒsƒs‚d€¬ƒ ƒ˜¨ƒsƒs¨ƒsƒs‚d‚d€¬ƒ‚d ‚dƒ˜Ž¨ƒsƒs¨ƒsƒs‚d€¬ƒƒ˜¨ƒsƒs¨ƒsƒs‚d€¬ƒƒ˜¨ƒsƒs¨ƒsƒs‚d€¬ƒ ƒ˜‘¨ƒsƒs¨ƒsƒs‚d €¬ƒ  ƒ˜’¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c€¬ƒŒ ƒŒ˜“¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c‚c€¬ƒŒ‚c ‚cƒŒ˜”¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c€¬ƒŒƒŒ˜•¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c€¬ƒŒƒŒ˜–¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c€¬ƒŒ ƒŒ˜—¨ƒ¥ƒ¥¨ƒ¥ƒ¥‚c €¬ƒŒ  ƒŒ˜˜¨ƒãƒã¨ƒãƒãµ€¬‚s ‚s˜™¨ƒãƒã¨ƒãƒãµµ€¬‚sµ µ‚s˜š¨ƒãƒã¨ƒãƒãµ€¬‚s‚s˜›¨ƒãƒã¨ƒãƒãµ€¬‚s‚s˜œ¨ƒãƒã¨ƒãƒãµ€¬‚s ‚s˜¨ƒãƒã¨ƒãƒãµ €¬‚s  ‚s˜ž¨ƒíƒí¨ƒíƒí€ž€¬€Ù €Ù˜Ÿ¨ƒíƒí¨ƒíƒí€ž€ž€¬€Ù€ž €ž€Ù˜ ¨ƒíƒí¨ƒíƒí€ž€¬€Ù€Ù˜¡¨ƒíƒí¨ƒíƒí€ž€¬€Ù€Ù˜¢¨ƒíƒí¨ƒíƒí€ž€¬€Ù €Ù˜£¨ƒíƒí¨ƒíƒí€ž €¬€Ù  €Ù˜¤¨„„¨„„€¡€¬€Ü €Ü˜¥¨„„¨„„€¡€¡€¬€Ü€¡ €¡€Ü˜¦¨„„¨„„€¡€¬€Ü€Ü˜§¨„„¨„„€¡€¬€Ü€Ü˜¨¨„„¨„„€¡€¬€Ü €Ü˜©¨„„¨„„€¡ €¬€Ü  €Ü˜ª¨{¨„ „¨ƒ‘ ƒ‘€€¡ÿ¤@€Ø€Ø˜«¨|¨„!„!¨…¡…¡q‚šÿ¤@ƒì˜¬¨}¨„"„"¨…¢…¢p|ÿ¤@ƒì˜­¨„/„/¨„/„/‚e€¬ƒŽ ƒŽ˜®¨„/„/¨„/„/‚e‚e€¬ƒŽ‚e ‚eƒŽ˜¯¨„/„/¨„/„/‚e€¬ƒŽƒŽ˜°¨„/„/¨„/„/‚e€¬ƒŽƒŽ˜±¨„/„/¨„/„/‚e€¬ƒŽ ƒŽ˜²¨„/„/¨„/„/‚e €¬ƒŽ  ƒŽ˜³¨„C„C¨„C„CÊ€¬‚‘ ‚‘˜´¨„C„C¨„C„CÊÊ€¬‚‘Ê Ê‚‘˜µ¨„C„C¨„C„CÊ€¬‚‘‚‘˜¶¨„C„C¨„C„CÊ€¬‚‘‚‘˜·¨„C„C¨„C„CÊ€¬‚‘ ‚‘˜¸¨„C„C¨„C„CÊ €¬‚‘  ‚‘˜¹¨{¨„J „J¨…> …>ìÊÿ¤@‚Ø‚ؘº¨„N„N¨„N„N‚¸€¬ƒð ƒð˜»¨„N„N¨„N„N‚¸‚¸€¬ƒð‚¸ ‚¸ƒð˜¼¨„N„N¨„N„N‚¸€¬ƒðƒð˜½¨„N„N¨„N„N‚¸€¬ƒðƒð˜¾¨„N„N¨„N„N‚¸€¬ƒð ƒð˜¿¨„N„N¨„N„N‚¸ €¬ƒð  ƒð˜À¨„W„W¨„W„W‚¹€¬ƒñ ƒñ˜Á¨„W„W¨„W„W‚¹‚¹€¬ƒñ‚¹ ‚¹ƒñ˜Â¨„W„W¨„W„W‚¹€¬ƒñƒñ˜Ã¨„W„W¨„W„W‚¹€¬ƒñƒñ˜Ä¨„W„W¨„W„W‚¹€¬ƒñ ƒñ˜Å¨„W„W¨„W„W‚¹ €¬ƒñ  ƒñ˜Æ¨„^„^¨„^„^‚º€¬ƒò ƒò˜Ç¨„^„^¨„^„^‚º‚º€¬ƒò‚º ‚ºƒò˜È¨„^„^¨„^„^‚º€¬ƒòƒò˜É¨„^„^¨„^„^‚º€¬ƒòƒò˜Ê¨„^„^¨„^„^‚º€¬ƒò ƒò˜Ë¨„^„^¨„^„^‚º €¬ƒò  ƒò˜Ì¨„d„d!¨„d„d!‚»€¬ƒó ƒó˜Í¨„d„d!¨„d„d!‚»‚»€¬ƒó‚» ‚»ƒó˜Î¨„d„d!¨„d„d!‚»€¬ƒóƒó˜Ï¨„d„d!¨„d„d!‚»€¬ƒóƒó˜Ð¨„d„d!¨„d„d!‚»€¬ƒó ƒó˜Ñ¨„d„d!¨„d„d!‚» €¬ƒó  ƒó˜Ò¨„{„{¨„{„{‚¼€¬ƒô ƒô˜Ó¨„{„{¨„{„{‚¼‚¼€¬ƒô‚¼ ‚¼ƒô˜Ô¨„{„{¨„{„{‚¼€¬ƒôƒô˜Õ¨„{„{¨„{„{‚¼€¬ƒôƒô˜Ö¨„{„{¨„{„{‚¼€¬ƒô ƒô˜×¨„{„{¨„{„{‚¼ €¬ƒô  ƒô˜Ø¨l¨„} „}¨…} …}‚¼€ßÿ¤@ƒôƒô˜Ù—¨„~ „~¨…~ …~‚¼|ÿ¤@ƒôƒô˜Ú¨„„¨„„‚½€¬ƒõ ƒõ˜Û¨„„¨„„‚½‚½€¬ƒõ‚½ ‚½ƒõ˜Ü¨„„¨„„‚½€¬ƒõƒõ˜Ý¨„„¨„„‚½€¬ƒõƒõ˜Þ¨„„¨„„‚½€¬ƒõ ƒõ˜ß¨„„¨„„‚½ €¬ƒõ  ƒõ˜à¨„ˆ„ˆ¨„ˆ„ˆ‚¾€¬ƒö ƒö˜á¨„ˆ„ˆ¨„ˆ„ˆ‚¾‚¾€¬ƒö‚¾ ‚¾ƒö˜â¨„ˆ„ˆ¨„ˆ„ˆ‚¾€¬ƒöƒö˜ã¨„ˆ„ˆ¨„ˆ„ˆ‚¾€¬ƒöƒö˜ä¨„ˆ„ˆ¨„ˆ„ˆ‚¾€¬ƒö ƒö˜å¨„ˆ„ˆ¨„ˆ„ˆ‚¾ €¬ƒö  ƒö˜æ¨„™„™¨„™„™‚¿€¬ƒ÷ ƒ÷˜ç¨„™„™¨„™„™‚¿‚¿€¬ƒ÷‚¿ ‚¿ƒ÷˜è¨„™„™¨„™„™‚¿€¬ƒ÷ƒ÷˜é¨„™„™¨„™„™‚¿€¬ƒ÷ƒ÷˜ê¨„™„™¨„™„™‚¿€¬ƒ÷ ƒ÷˜ë¨„™„™¨„™„™‚¿ €¬ƒ÷  ƒ÷˜ì‚娄´ „´¨…– …–‚;‚Àÿ¤@ƒEƒE˜í¨‡¨„Ü „ܨ…Ñ …Ñr‚šÿ¤@øø˜î¨ˆ¨„Ý „ݨ…× …×r ÿ¤@øø˜ï¨‰¨„Þ „Þ¨…Ó…Ór‚=ÿ¤@øø˜ð¨Š¨„ß „ߨ…Ø …Ør‚Áÿ¤@øø˜ñ¨Œ¨„à „à¨…Ý …Ýr€—ÿ¤@øø˜ò†ó¨„á „á¨…Þ …Þr ÿ¤@øø˜ó¨¨„ä „ä¨…à …àr ÿ¤@ø¨Žø˜ô‡”¨„æ „æ¨…á …ár ÿ¤@ø¨ø˜õ†ï¨„è „è¨…â …âr ÿ¤@ø¨ø˜ö¨‘¨„ê „ê¨…ã …ã!r ÿ¤@ø¨’ø˜÷–ÿ¨„ì „ì¨…ä …är ÿ¤@ø¨“ø˜ø—¨„î „î¨…æ …ær ÿ¤@øø˜ù—¨„ï „ï¨…ç …çr ÿ¤@øø˜ú¨”¨„ð „ð"¨…è …è$r ÿ¤@øø˜û—¨„ñ „ñ¨…é …ér ÿ¤@øø˜ü¨•¨„ò „ò¨…Ú …Úr‚:ÿ¤@øø˜ý¨k¨„ó „ó¨…ë…ëroÿ¤@øø˜þ¨{¨„ý „ý¨…û …û‚8rÿ¤@ƒBƒB˜ÿ¨–¨„þ „þ¨…ý …ý‚8rÿ¤@ƒBƒB™¨{¨… …¨†A †A‚Âsÿ¤@ƒúƒú™¨˜¨… …¨†B †B‚Âsÿ¤@ƒúƒú™¨{¨…* …*¨† †‚Ãlÿ¤@ƒûƒû™¨˜¨…+ …+¨† †‚Ãlÿ¤@ƒûƒû™¨{¨…? …?¨†* †*‚Ätÿ¤@ƒüƒü™¨˜¨…@ …@¨†+ †+‚Ätÿ¤@ƒüƒü™¨…G…G¨…G…G‚¡€¬ƒÔ ƒÔ™¨…G…G¨…G…G‚¡‚¡€¬ƒÔ‚¡ ‚¡ƒÔ™¨…G…G¨…G…G‚¡€¬ƒÔƒÔ™ ¨…G…G¨…G…G‚¡€¬ƒÔƒÔ™ ¨…G…G¨…G…G‚¡€¬ƒÔ ƒÔ™ ¨…G…G¨…G…G‚¡ €¬ƒÔ  ƒÔ™ ¨{¨…M …M¨†K †K‚Å‚¡ÿ¤@ƒýƒý™ ¨…Q…Q¨…Q…Q‚¥€¬ƒØ ƒØ™¨…Q…Q¨…Q…Q‚¥‚¥€¬ƒØ‚¥ ‚¥ƒØ™¨…Q…Q¨…Q…Q‚¥€¬ƒØƒØ™¨…Q…Q¨…Q…Q‚¥€¬ƒØƒØ™¨…Q…Q¨…Q…Q‚¥€¬ƒØ ƒØ™¨…Q…Q¨…Q…Q‚¥ €¬ƒØ  ƒØ™¨…V…V¨…V…V‚Æ€¬ƒþ ƒþ™¨…V…V¨…V…V‚Ƃƀ¬ƒþ‚Æ ‚ƃþ™¨…V…V¨…V…V‚Æ€¬ƒþƒþ™¨…V…V¨…V…V‚Æ€¬ƒþƒþ™¨…V…V¨…V…V‚Æ€¬ƒþ ƒþ™¨…V…V¨…V…V‚Æ €¬ƒþ  ƒþ™¨…\…\¨…\…\‚Ç€¬ƒÿ ƒÿ™¨…\…\¨…\…\‚ǂǀ¬ƒÿ‚Ç ‚ǃÿ™¨…\…\¨…\…\‚Ç€¬ƒÿƒÿ™¨…\…\¨…\…\‚Ç€¬ƒÿƒÿ™¨…\…\¨…\…\‚Ç€¬ƒÿ ƒÿ™¨…\…\¨…\…\‚Ç €¬ƒÿ  ƒÿ™¨…b…b¨…b…b‚¤€¬ƒ× ƒ×™ ¨…b…b¨…b…b‚¤‚¤€¬ƒ×‚¤ ‚¤ƒ×™!¨…b…b¨…b…b‚¤€¬ƒ×ƒ×™"¨…b…b¨…b…b‚¤€¬ƒ×ƒ×™#¨…b…b¨…b…b‚¤€¬ƒ× ƒ×™$¨…b…b¨…b…b‚¤ €¬ƒ×  ƒ×™%¨…i…i¨…i…i‚£€¬ƒÖ ƒÖ™&¨…i…i¨…i…i‚£‚£€¬ƒÖ‚£ ‚£ƒÖ™'¨…i…i¨…i…i‚£€¬ƒÖƒÖ™(¨…i…i¨…i…i‚£€¬ƒÖƒÖ™)¨…i…i¨…i…i‚£€¬ƒÖ ƒÖ™*¨…i…i¨…i…i‚£ €¬ƒÖ  ƒÖ™+¨…~…~¨…~…~‚¢€¬ƒÕƒÕ™,¨…~…~¨…~…~‚¢€¬ƒÕ ƒÕ™-¨…~…~¨…~…~‚¢ €¬ƒÕ  ƒÕ™.¨{¨…‘ …‘¨†¥ †¥‚9€´ÿ¤@ƒCƒC™/¨ž¨…” …”¨†§ †§!‚9€€í€´ÿ¤@ƒC¨ŸƒC™0¨–¨…š …š¨†© †©‚9€´ÿ¤@ƒC¨ ƒC™1šA¨…½ …½¨†‘ †‘€´ ÿ¤@€ö€ö™2š@¨…¾ …¾¨†’ †’€´ ÿ¤@€ö€ö™3š?¨…¿ …¿¨†“ †“€´ ÿ¤@€ö€ö™4¨¡¨…À …À¨†” †”€´ ÿ¤@€ö€ö™5¨¢¨…Á …Á¨†–†–€´ ÿ¤@€ö€ö™6¨{¨…Æ …ƨ†» †»‚È‚Éÿ¤@„„™7¨{¨…÷ …÷¨†È †ÈÅêÿ¤@‚Œ‚Œ™8¨…ú…ú¨…ú…úý€¬‚þ ‚þ™9¨…ú…ú¨…ú…úýý€¬‚þý ý‚þ™:¨…ú…ú¨…ú…úý€¬‚þ‚þ™;¨…ú…ú¨…ú…úý€¬‚þ‚þ™<¨…ú…ú¨…ú…úý€¬‚þ ‚þ™=¨…ú…ú¨…ú…úý €¬‚þ  ‚þ™>¨{¨† †¨†Ý †Ý‚Êéÿ¤@„„™?¨††¨††‚Ë€¬„ „™@¨††¨††‚˂ˀ¬„‚Ë ‚Ë„™A¨††¨††‚Ë€¬„„™B¨††¨††‚Ë€¬„„™C¨††¨††‚Ë€¬„ „™D¨††¨††‚Ë €¬„  „™E¨§¨†V †V¨‡ ‡S‚Ìÿ¤@ÍÍ™F¨©¨†W †W¨‡ ‡S ÿ¤@ÍÍ™G¨ª¨†]†]¨“h“h€´€ßrÿ¤@¨«ƒì™H¨¬¨†j†j¨TTÿ¤@ƒì™I¨­¨†l†l¨aaÿ¤@ƒì™J¨®¨†s†s¨iiÿ¤@¨¯ƒì™K¨°¨†u†u.¨xx.ÿ¤@ƒì™L¨±¨†y†y¨€›€›ÿ¤@¨²ƒì™M¨³¨†|†|¨‡š‡šÿ¤@ƒì™N¨´¨†}†} ¨‡ž‡ž  ÿ¤@ƒì™O¨µ¨††¨““ÿ¤@ƒì™P¨¶¨†Ü†Ü¨‰â‰â €˜ÿ¤@¨·ƒì™Q¨¸¨†â†â(¨,,(€˜‚9€´ÿ¤@¨¹ƒì™R¨º¨†è†è¨‘Ò‘Ò€˜€¡€ž€Ÿÿ¤@¨»ƒì™S¨¼¨†ð†ð¨‡z‡zÀÿ¤@¨½ƒì™T¨¾¨†ñ†ñ¨‡}‡}‚­ÿ¤@ƒì™U¨¿¨†ó†ó¨ƒƒ‚±ÿ¤@ƒì™V¨À¨†ô†ô¨ˆâˆâ€–|ÿ¤@ƒì™W¨Á¨†÷†÷¨‡L‡L€œÿ¤@¨Âƒì™X¨Ã¨†ø†ø ¨‡M‡M €œÿ¤@ƒì™Y¨Ä¨†ù†ù¨‡V‡V€œ€œÿ¤@ƒì™Z¨Å¨†ü†ü¨ƒƒ‚Í‚±ÿ¤@ƒì™[¨Ç¨†þ†þ¨‡T‡T€œ‚gÿ¤@¨Èƒì™\¨É¨†ÿ†ÿ¨‡R‡R€œ‚Í‚gÿ¤@ƒì™]¨Ê¨‡‡¨‡Q‡Q€œ‚±‚gÿ¤@ƒì™^¨Ë¨‡‡ ¨‡Y‡Y €õ‚g|ÿ¤@¨Ìƒì™_ކ¨‡‡¨‡\‡\€õ€œ‚Í|ÿ¤@ƒì™`¨Í¨‡‡¨‡`‡`€œ‚Í|ÿ¤@ƒì™a¨Î¨‡‡¨‡a‡a€œ‚±|ÿ¤@ƒì™b¨Ï¨‡‡¨‡_‡_€œ‚Í|ÿ¤@ƒì™c¨Ð¨‡‡¨‡d‡d€œ|ÿ¤@ƒì™d¨Ñ¨‡ ‡ ¨‡c‡c€œ|ÿ¤@ƒì™e¨Ò¨‡ ‡ ¨‰G‰G |m|ÿ¤@ƒì™f¨Ó¨‡ ‡ ¨‰H‰H||ÿ¤@ƒì™g¨Ô¨‡ ‡ ¨‰I‰I | ÿ¤@ƒì™h¨Õ¨‡ ‡ ¨‰J‰J|m|ÿ¤@ƒì™i¨Ö¨‡‡¨ƒ ƒ ‚g|ÿ¤@ƒì™j¨×¨‡‡ ¨ƒƒ |‚šÿ¤@ƒì™k¨Ø¨‡‡¨‡¡‡¡€œ‚™‚š|€ßÿ¤@¨Ùƒì™l¨Ú¨‡‡¨‡©‡©€œ‚™||€ßÿ¤@ƒì™m¨Û¨‡‡¨‡²‡²€ß€õ‚͂̀™ÿ¤@ƒì™n¨Ü¨‡‡!¨‡«‡«!€ß|‚±€™ÿ¤@ƒì™o¨Ý¨‡‡¨‡°‡°€ß|‚Í€™ÿ¤@ƒì™p¨Þ¨‡‡¨‡º‡º|‚™||‚Í€™ÿ¤@ƒì™q¨ß¨‡‡¨‡·‡·|‚™‚š|‚±€™ÿ¤@ƒì™r¨à¨‡‡¨‡½‡½|‚™||€™ÿ¤@¨áƒì™s¨â¨‡‡¨‡À‡À|||‚Í€™ÿ¤@¨ãƒì™t¨ä¨‡"‡"&¨‡Ã‡Ã&|||€™ÿ¤@¨åƒì™u¨æ¨‡%‡%¨‡Æ‡Æ|||‚Í€™ÿ¤@¨çƒì™v¨è¨‡(‡($¨‡É‡É$|||€™ÿ¤@¨éƒì™w¨ê¨‡+‡+¨‡Ï‡Ï||€™ÿ¤@¨ëƒì™x¨ì¨‡.‡.¨‡Ù‡Ù€œ|«ÿ¤@¨íƒì™y¨î¨‡/‡/¨‡Û‡Û«|€šÿ¤@ƒì™z¨ï¨‡0‡0¨‡Ý‡Ý||€šÿ¤@ƒì™{¨ð¨‡2‡2¨ƒƒ‚™‚š|oÿ¤@ƒì™|¨ñ¨‡3‡3¨ƒƒ‚™||oÿ¤@ƒì™}¨ò¨‡8‡8¨ˆùˆù€œÄ|ÿ¤@¨óƒì™~¨ô¨‡:‡:¨ˆñˆñ‚šnÿ¤@ƒì™¨õ¨‡;‡;¨ˆðˆð|nÿ¤@ƒì™€¨ö¨‡<‡<¨ˆóˆón‚±ÿ¤@ƒì™¨÷¨‡=‡=¨ˆöˆön‚Íÿ¤@ƒì™‚¨ø¨‡>‡>¨ˆåˆåÄÿ¤@ƒì™ƒ¨ù¨‡@‡@¨ÛÛ€˜€™€ž€Ÿ€¡ÿ¤@¨úƒì™„¨û¨‡G‡G¨ë뀘€œ|€ž€Ÿ€¡ÿ¤@ƒì™…¨ü¨‡N‡N¨‘8‘8€˜‚e€œ|€žÊÿ¤@ƒì™†¨ý¨‡Q‡Q¨ˆ]ˆ]‚=‚=ÿ¤@¨þƒì™‡¨ÿ¨‡R‡R¨ˆ¬ˆ¬€ïÿ¤@ƒì™ˆ©¨‡S‡S¨‡ì‡ì€ïÿ¤@ƒì™‰©¨‡W‡W¨ˆÇˆÇ{‚=ÿ¤@©ƒì™Š©¨‡[‡[¨ˆ½ˆ½€ï{{‚=ÿ¤@©ƒì™‹©¨‡\‡\¨ˆÄˆÄ€ï{€ï‚=ÿ¤@ƒì™Œ©¨‡_‡_¨ˆºˆº€ï{‚=ÿ¤@©ƒì™©¨‡b‡b¨ˆŠˆŠ‚Ÿ‚=ÿ¤@© ƒì™Ž© ¨‡c‡c¨ˆˆ€ï‚=‚=ÿ¤@ƒì™¨‡g‡g¨ŒœŒœ‚Îÿ´@„© ¨‡g ‡g„™© ¨‡h ‡h¨ŒžŒž‚΂ €–ÿ¤@„„™‘‚¨‡i ‡i¨Œ£Œ£‚΂ ÿ¤@„„™’©¨‡l‡l¨‰Æ‰Æ€™{ÿ¤@©ƒì™“©¨‡m‡m¨‰Ç‰Ç€™{ÿ¤@ƒì™”©¨‡n‡n¨‰È‰È|€™{ÿ¤@ƒì™•©¨‡o‡o¨‰É‰É€™{ÿ¤@ƒì™–©¨‡p‡p¨‹¹‹¹||{ÿ¤@ƒì™—©¨‡q‡q¨‹¾‹¾€š{ÿ¤@ƒì™˜©¨‡r‡r¨‹¿‹¿€š{ÿ¤@ƒì™™©¨‡s‡s¨‹À‹À€š{ÿ¤@ƒì™š©¨‡t‡t¨‹Á‹Á€š{ÿ¤@ƒì™›©¨‡u‡u¨‹Â‹Â€š{ÿ¤@ƒì™œ©¨‡v‡v¨‹Ã‹Ã|{ÿ¤@ƒì™©¨‡w‡w¨‹Ä‹Ä|{ÿ¤@ƒì™ž©¨‡x‡x¨‰Ü‰Ü€—{ÿ¤@ƒì™Ÿ©¨‡y‡y ¨‰Ó‰Ó {ÿ¤@ƒì™ ©¨‡z‡z ¨‰Ö‰Ö €–{ÿ¤@ƒì™¡©¨‡{‡{ ¨‰Ù‰Ù €–{ÿ¤@ƒì™¢©¨‡|‡| ¨‰Ò‰Ò €–{ÿ¤@ƒì™£© ¨‡~‡~¨‡å‡å‚ ‚ÿ¤@ƒì™¤©!¨‡‚‡‚ ¨‹k‹k |pÿ¤@©"ƒì™¥©#¨‡ƒ‡ƒ¨‹u‹u|pÿ¤@ƒì™¦©$¨‡„‡„¨‹t‹t|pÿ¤@ƒì™§©%¨‡…‡…¨‹w‹w|‚Ïÿ¤@ƒì™¨©'¨‡†‡† ¨‹|‹| |‚ ÿ¤@ƒì™©©(¨‡‡‡‡¨„Ÿ„Ÿ‚ ‚Áÿ¤@ƒì™ª©)¨‡ˆ‡ˆ¨„ž„ž‚Áÿ¤@ƒì™«©*¨‡‹‡‹¨‡(‡(nÿ¤@©+ƒì™¬©,¨‡Ž‡Ž¨‹Š‹Š ‚Á‚=‚«‚:ÿ¤@©-¨‡Ž‡Ž©.ƒì™­©/¨‡‡¨‹’‹’ ‚Á‚=‚«‚Àÿ¤@ƒì™®©0¨‡‘‡‘ ¨‹›‹› µp‚Àrÿ¤@ƒì™¯©1¨‡’‡’¨‹ë‹ë‚Àrÿ¤@ƒì™°©2¨‡“‡“¨‹Æ‹Æ‚«|rÿ¤@ƒì™±©3¨‡”‡”¨‹Î‹Înµp‚Ï‚Àrÿ¤@ƒì™²©4¨‡•‡•¨‹è‹èµp‚Ï‚Àrÿ¤@ƒì™³©5¨‡–‡–¨Œ Œ µnp‚Ï‚Àrÿ¤@ƒì™´©6¨‡—‡—¨Œ0Œ0µnp‚Ï‚Àrÿ¤@ƒì™µ©7¨‡˜‡˜¨Œ-Œ-µp‚Ï‚Àrÿ¤@ƒì™¶©8¨‡™‡™ ¨ŒJŒJ µp‚Ï‚Àrÿ¤@ƒì™·©9¨‡‡¨Œ”Œ”|_µsÿ¤@©:ƒì™¸©;¨‡ž‡ž¨Œ•Œ•|_€•µsÿ¤@ƒì™¹©<¨‡Ÿ‡Ÿ¨Œ–Œ–|_€•µsÿ¤@ƒì™º©=¨‡¢‡¢¨ŒóŒó ‚£n||‚8‚‚9‚ĂÀ‚Ç€´ÿ¤@ ©>ƒì™»©?¨‡£‡£¨''€˜ ‚£‚8‚‚9‚ĂÀ‚Ç€´ÿ¤@ ƒì™¼©@¨‡¤‡¤!¨**!€˜‚8‚€´ÿ¤@ƒì™½©A¨‡¬‡¬¨  €˜€—€–€´ÿ¤@©B¨‡¬2‡¬6©C¨‡¬?‡¬C©Dƒì™¾©E¨‡³‡³¨Œ^Œ^{‚=‚=ÿ¤@©Fƒì™¿©G¨‡´‡´¨ŒcŒc{rrÿ¤@ƒì™À©H¨‡¹‡¹¨ŒŒ{‚«€´€´ÿ¤@©Iƒì™Á©J¨‡¼‡¼¨ŒðŒð‚«{||µrÿ¤@©Kƒì™Â©L¨‡½‡½¨ŒíŒí‚«‚g||µrÿ¤@ƒì™Ã©M¨‡¾‡¾'¨ŒáŒá'‚«‚g||µrÿ¤@ƒì™Ä©N¨‡À‡À¨ˆˆ€˜p‚Ïrÿ¤@ƒì™Å©O¨‡Ä‡Ä¨››€˜| €™ÿ¤@©Pƒì™Æ©Q¨‡Ç‡Ç¨‡œ‡œ|ÿ¤@©Rƒì™Ç©S¨‡Ê‡Ê¨‡â‡â€¡€ÿ¤@©Tƒì™È©U¨‡Ë‡Ë¨‡ã‡ã€¡€ÿ¤@ƒì™É©V¨‡Ì‡Ì¨‡à‡à€ÿ¤@ƒì™Ê©W¨‡Î‡Î¨ˆÚˆÚÊìÿ¤@ƒì™Ë©X¨‡Ï‡Ï¨ˆÛˆÛ€íÊìÿ¤@ƒì™Ì©Y¨‡Ð‡Ð¨ˆÙˆÙìÿ¤@ƒì™Í©Z¨‡Ò‡Ò¨…ž…ž‚À‚;ÿ¤@ƒì™Î©[¨‡Ó‡Ó¨…Ÿ…Ÿ€í‚À‚;ÿ¤@ƒì™Ï©\¨‡Õ‡Õ¨Œ«Œ«l‚Ãÿ¤@ƒì™Ð©]¨‡Ö‡Ö¨ŒªŒª€íl‚Ãÿ¤@ƒì™Ñ©^¨‡×‡×¨Œ¬Œ¬‚Ãÿ¤@ƒì™Ò©_¨‡Ù‡Ù¨Œ¯Œ¯t‚Äÿ¤@ƒì™Ó©`¨‡Ú‡Ú¨Œ®Œ®€ít‚Äÿ¤@ƒì™Ô©a¨‡Û‡Û¨Œ°Œ°‚Äÿ¤@ƒì™Õ©b¨‡Ý‡Ý¨‰0‰0r‚8ÿ¤@ƒì™Ö©c¨‡Þ‡Þ¨‰1‰1€ír‚8ÿ¤@ƒì™×©d¨‡ß‡ß¨‰.‰.r‚8‚8ÿ¤@ƒì™Ø©e¨‡à‡à¨‰2‰2‚8ÿ¤@ƒì™Ù©f¨‡â‡â¨Œ§Œ§s‚Âÿ¤@ƒì™Ú©g¨‡ã‡ã¨Œ¦Œ¦€ís‚Âÿ¤@ƒì™Û©h¨‡ä‡ä¨Œ¨Œ¨‚Âÿ¤@ƒì™Ü©i¨‡æ‡æ¨ŒÇŒÇ‚¡‚Åÿ¤@ƒì™Ý©j¨‡ç‡ç¨ŒÈŒÈ€í‚¡‚Åÿ¤@ƒì™Þ©k¨‡è‡è¨ŒÉŒÉ‚Åÿ¤@ƒì™ß©l¨‡ê‡ê¨‰‰€´‚9ÿ¤@ƒì™à©m¨‡ë‡ë¨‰ ‰ ‚9ÿ¤@ƒì™á©n¨‡õ‡õ¨‰‰€í€€í€´‚9ÿ¤@©oƒì™â©p¨‡ö‡ö¨‰‰€´‚9‚9ÿ¤@ƒì™ã©q¨‡ø‡ø¨Œ¹Œ¹‚É‚Èÿ¤@ƒì™ä©r¨‡ù‡ù¨Œ¼Œ¼€í‚É‚Èÿ¤@ƒì™å©s¨‡û‡û¨Œ³Œ³êÅÿ¤@ƒì™æ©t¨‡ü‡ü¨Œ´Œ´€íêÅÿ¤@ƒì™ç©u¨‡þ‡þ¨Œ¿Œ¿é‚Êÿ¤@ƒì™è©v¨‡ÿ‡ÿ¨ŒÀŒÀ€íé‚Êÿ¤@ƒì™é©w¨ˆˆ¨22  ‚9€—ÅSÿ¤@ ˜ú¨ˆˆ"©x¨ˆ-ˆ7©y¨ˆBˆEŸ`¨ˆNˆ^Ÿa¨ˆpˆ€€©zƒì™ê©{¨ˆ ˆ ¨ˆÿˆÿ€´€´€œÿ¤@©|ƒì™ë©}¨ˆ ˆ ¨Œ|Œ|€´€´r€ßÿ¤@ƒì™ì©~¨ˆ ˆ ¨Œ}Œ}€´€´s«ÿ¤@ƒì™í©¨ˆˆ¨ŒwŒw€œr€ßÿ¤@ƒì™î©€¨ˆˆ¨ŒzŒz€œs«ÿ¤@ƒì™ï©¨ˆˆ¨‚ÌÀÿ¤@ƒì™ð©‚¨ˆˆ¨“{“{S‚­ÿ¤@ƒì™ñ©ƒ¨ˆ*ˆ*¨‹ ‹ ÿ¤@©„ƒì™ò©…¨ˆ-ˆ-¨‹‹‚g‚gÿ¤@©†ƒì™ó©‡¨ˆ0ˆ0¨‹"‹"||ÿ¤@©ˆƒì™ô©‰¨ˆ3ˆ3¨‹:‹:€ß€ßÿ¤@©Šƒì™õ©‹¨ˆ6ˆ6¨‹B‹B««ÿ¤@©Œƒì™ö¨ˆ>ˆ>¨ˆ>ˆ>‚Ѐ¬„ „™÷¨ˆ>ˆ>¨ˆ>ˆ>‚ЂЀ¬„‚Ð ‚Є™ø¨ˆ>ˆ>¨ˆ>ˆ>‚Ѐ¬„„™ù¨ˆ>ˆ>¨ˆ>ˆ>‚Ѐ¬„„™ú¨ˆ>ˆ>¨ˆ>ˆ>‚Ѐ¬„ „™û¨ˆ>ˆ>¨ˆ>ˆ>‚Ð €¬„  „™ü¨ˆDˆD¨ˆDˆD‚Ñ€¬„  „ ™ý¨ˆDˆD¨ˆDˆD‚т𬄠‚Ñ ‚Ñ„ ™þ¨ˆDˆD¨ˆDˆD‚Ñ€¬„ „ ™ÿ¨ˆDˆD¨ˆDˆD‚Ñ€¬„ „ š¨ˆDˆD¨ˆDˆD‚Ñ€¬„  „ š¨ˆDˆD¨ˆDˆD‚Ñ €¬„   „ š¨ˆHˆH¨ˆHˆH‚Ò€¬„  „ š¨ˆHˆH¨ˆHˆH‚Ò‚Ò€¬„ ‚Ò ‚Ò„ š¨ˆHˆH¨ˆHˆH‚Ò€¬„ „ š¨ˆHˆH¨ˆHˆH‚Ò€¬„ „ š¨ˆHˆH¨ˆHˆH‚Ò€¬„  „ š¨ˆHˆH¨ˆHˆH‚Ò €¬„   „ š©¨ˆfˆf¨ŽÝŽÝ€ï{‚т҂=ÿ¤@©‘ƒìš ©’¨ˆsˆs¨‹N‹N‚±||ÿ¤@©“ƒìš ©”¨ˆvˆv¨‹e‹e‚±||ÿ¤@©•ƒìš ©–¨ˆ}ˆ}¨ŠÇŠÇ‚¬ÿ¤@©—ƒìš ©˜¨ˆˆ¨ŠÉŠÉÿ¤@©™ƒìš ©š¨ˆˆ¨ŠËŠË€˜ÿ¤@©›ƒìš©œ¨ˆ…ˆ…¨ŠÍŠÍ€˜€™ÿ¤@©ƒìš©ž¨ˆ‡ˆ‡¨ŠÐŠÐ€˜{ÿ¤@ƒìš©Ÿ¨ˆŠˆŠ¨‘‘€˜  €¡ÿ¤@© ƒì𩡍ˆ‹ˆ‹¨’D’D€˜    €¡ÿ¤@ƒì𩢍ˆˆ ¨‘‘ €˜€¡ÿ¤@ƒì𩣍ˆŽˆŽ"¨‘‘"€˜€¡ÿ¤@ƒì𩤍ˆˆ"¨‘‘"€˜€¡ÿ¤@ƒì𩥍ˆˆ¨‘ ‘ €˜€¡ÿ¤@ƒì𩦍ˆ‘ˆ‘¨‘ ‘ €˜€¡ÿ¤@ƒì𩧍ˆ’ˆ’ ¨‘ ‘ €˜|€¡ÿ¤@ƒì𩍍ˆ“ˆ“%¨‘‘%€˜€¡ÿ¤@ƒì𩩍ˆ•ˆ•¨‘'‘'€˜rrÿ¤@ƒìš©ª¨ˆ–ˆ–¨‘(‘(€˜ttÿ¤@ƒì𩫍ˆ—ˆ—¨‘)‘)€˜ssÿ¤@ƒì𩬍ˆ™ˆ™¨‘,‘,€˜ttÿ¤@ƒìš©­¨ˆšˆš¨‘-‘-€˜ssÿ¤@ƒì𩮍ˆˆ¨ŠæŠæ€˜| ÿ¤@©¯ƒìš©°¨ˆžˆž¨ŠçŠç€˜| ÿ¤@ƒìš ©±¨ˆŸˆŸ¨ŠìŠì€˜| ÿ¤@ƒìš!©²¨ˆ ˆ ¨ŠíŠí€˜| ÿ¤@ƒìš"©³¨ˆ¡ˆ¡¨ŠîŠî€˜| ÿ¤@ƒìš#©´¨ˆ¢ˆ¢¨ŠïŠï€˜| ÿ¤@ƒìš$©µ¨ˆ£ˆ£¨ŠðŠð€˜| ÿ¤@ƒìš%©¶¨ˆ¤ˆ¤¨ŠñŠñ€˜| ÿ¤@ƒìš&©·¨ˆ¥ˆ¥¨ŠòŠò€˜| ÿ¤@ƒìš'©¸¨ˆ¦ˆ¦¨ŠóŠó€˜| ÿ¤@ƒìš(©¹¨ˆ§ˆ§¨ŠôŠô€˜| ÿ¤@ƒìš)©º¨ˆ¨ˆ¨¨ŠõŠõ€˜| ÿ¤@ƒìš*©»¨ˆ©ˆ©¨ŠöŠö€˜| ÿ¤@ƒìš+©¼¨ˆªˆª¨Š÷Š÷€˜| ÿ¤@ƒìš,©½¨ˆ«ˆ«¨ŠéŠé€˜| ÿ¤@ƒìš-©¾¨ˆ¬ˆ¬¨ŠùŠù€˜| ÿ¤@ƒìš.©¿¨ˆ­ˆ­¨ŠøŠø€˜| ÿ¤@ƒìš/©À¨ˆ°ˆ°¨22€•€•ÿ¤@©Áƒìš0©Â¨ˆ³ˆ³¨“:“:€¢ÿ¤@©Ãƒìš1©Ä¨ˆ´ˆ´¨ii€¢ÿ¤@ƒìš2©Å¨ˆµˆµ¨“\“\€¢€¢ÿ¤@ƒìš3¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó€¬„  „ š4¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó‚Ó€¬„ ‚Ó ‚Ó„ š5¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó€¬„ „ š6¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó€¬„ „ š7¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó€¬„  „ š8¨ˆ¸ˆ¸¨ˆ¸ˆ¸‚Ó €¬„   „ š9©Ç¨ˆ¼ˆ¼¨££‚Ó|ÿ¤@ƒìš:©È¨ˆ¾ˆ¾¨¥¥‚‚Óÿ¤@ƒìš;‚ó¨ˆÈˆÈ¨““€œ‚Ôÿ¤@„ „ š<¨g¨ˆÉ ˆÉ¨“‘ “‘‚Ô€œÿ¤@„ „ š=€Ç¨ˆÊ ˆÊ¨“’ “’‚Ôÿ¤@„ „ š>‚ó¨ˆÎˆÎ¨“–“–€œ‚˜ÿ¤@ƒËƒËš?¨g¨ˆÏ ˆÏ¨“— “—‚˜€œÿ¤@ƒËƒËš@€Ç¨ˆÐ ˆÐ¨“˜ “˜‚˜ÿ¤@ƒËƒËšA©Ê¨ˆÓˆÓ¨!! ÿ¤@ƒìšB¨ˆÕˆÕ¨ˆÕˆÕ‚Ü ‚ÜšC¨ˆÕˆÕ¨ˆÕˆÕî‚Üî î‚ÜšD¨ˆÕˆÕ¨ˆÕˆÕ‚܂ܚE¨ˆÕˆÕ¨ˆÕˆÕ‚܂ܚF¨ˆÕˆÕ¨ˆÕˆÕ‚Ü ‚ÜšG¨ˆÕˆÕ¨ˆÕˆÕî €¬‚Ü  ‚ÜšH©Ë¨ˆÚˆÚ¨“0“0Sîÿ¤@©ÌƒìšI©Í¨ˆÛˆÛ¨’\’\îÿ¤@ƒìšJ¨ˆàˆà¨ˆàˆà…بr¨ˆàˆà&„„ …Ø€¬„  ¨r¨ˆàˆà&„ šK¨ˆàˆà¨ˆàˆà…Ù¨r¨ˆàˆà&„„ …Ù„ …Ù€¬„ „ …Ù „ …Ù¨r¨ˆàˆà&„ šL¨ˆàˆà¨ˆàˆà…Ú¨r¨ˆàˆà&„„ …Ú€¬„ ¨r¨ˆàˆà&„ šM¨ˆàˆà¨ˆàˆà…Û¨r¨ˆàˆà&„„ …Û€¬„ ¨r¨ˆàˆà&„ šN¨ˆàˆà¨ˆàˆà…ܨr¨ˆàˆà&„„ …Ü€¬„  ¨r¨ˆàˆà&„ šO¨ˆàˆà¨ˆàˆà…ݨr¨ˆàˆà&„„ …Ý €¬„   ¨r¨ˆàˆà&„ šP©Ï¨ˆâˆâ ¨‡l‡l …Þ¨r¨ˆâ9ˆâC„„ …Þ…Þ‚Õ‚Õ ‚Õ…Þÿ¤@¨r¨ˆâ9ˆâCƒìwƒH…ßA¨ „¥ñ¨ ƒH…ß©ÑDEIIààQQƒI»¨MM ƒI€•DEJJààQQƒJžˆ¨PPƒJƒ/€¡º‚)„€©Ò‚Öþ¢ú¢ú¨QQ þ©Ó©Ó¨RR þ©Ô©Ô¨SS ƒìžˆþƒìžˆþþƒìžˆþƒìžˆþƒìžˆþƒìžˆþ  þDEKKààQQƒK¨XXƒK€Ž€‚Ib‚óƒì‚󂪂ª‚ªç¨ ƒì¨ 炪¨!ƒì¨!炪¨"ƒì¨"炪¨#ƒì¨#ç©ÕDELLààQQƒL¨$¨aaƒL€Ž€‚Ib‚óƒì¨$‚óç‚«¨(ƒì¨$¨(‚«çŽ9ƒì¨$Ž9‚«Ž:ƒì¨$Ž:‚«ŽEƒì¨$ŽE‚«ŽFƒì¨$ŽF‚«DEMMààQQƒM©Ö¨llƒM€Ž€‚Ib©×DENNààQQƒN©Ð¨ppƒN©ØDEOOààQQƒO¨t¨ssƒO©ÙDEPPààQQƒP¨)¨vvƒPƒ/€¡º‚)„€©Ò‚Ö€•ê¨ww‚¬¨)¨)¨ww€•ê¨xx‚¬©Ú©Ú¨xxƒì¨)‚¬ƒì¨)‚¬‚¬ƒì¨)‚¬ƒì¨)‚¬ƒì¨)‚¬ƒì¨)‚¬ ¨*ƒì¨)¨*‚¬ ¨+ƒì¨)¨+‚¬ ¨,ƒì¨)¨,‚¬€•¨-ƒì¨)¨-‚¬€• ‚¬DEQQààQQƒQ„Ϩ~~ƒQ€–€–€–€–DERRààQQƒR™^¨€€ƒR€Ž€‚Ib ‚óƒì™^‚󀕂¬ €¢À¨2ƒì™^¨2ÚÀ€Çƒì™^€ÇÀˆYƒì™^ˆYÀ¨4ƒì™^¨4À€•§üƒì™^§üÀ‚¬¨5ƒì™^¨5À ¨7ƒì™^¨7À€¢¨8ƒì™^¨8ÀDESSààQQƒS¨9¨€€ƒS€Ž€‚Ib‚óƒì¨9‚ó €•‚­€Çƒì¨9€Ç‚­¨;ƒì¨9¨;‚­ ¨4ƒì¨9¨4‚­€•DETTààQQƒTF¨€Õ€ÕƒTƒ/€¡º‚)„€©Ò‚Ö/€‰^€Ü©Û©Û¨€×€× ©Ü‚­ê¨€Ù€ÙŽ$Ž$¨€Ù€Ù ©ÝÀꨀۀۚTšT¨€Û€Û©ÞƒìFƒìFƒìFƒìFƒìFƒìF ‡ïƒìF‡ï ¨<ƒìF¨< ¨=ƒìF¨= ¨>ƒìF¨>‚­¨?ƒìF¨?ÀˆYƒìFˆY DEUUààQQƒU¨@¨€í€íƒUƒ/€¡º‚)„€©Ò‚Ö/€‰^€Ü‚®ŒüŒü¨€î€î ‚®©ß©ß¨€ï€ï ‚®©à©à¨€ð€ð ‚®©á©á¨€ñ€ñ‚®©â©â¨€ò€ò‚®©ã©ã¨€ó€ó ƒì¨@‚®ƒì¨@‚®‚®ƒì¨@‚®ƒì¨@‚®ƒì¨@‚®ƒì¨@‚®  ‚®DEVVààQQƒV¨A¨€ö€öƒVƒ/€¡º‚)„€©Ò‚Ö/€‰^€Ü‚¯©ä©ä¨€ø€ø©å‚¯©æ©æ¨€ú€ú©ç‚¯©è©è¨€ü€ü ©éƒì¨A‚¯ƒì¨A‚¯‚¯ƒì¨A‚¯ƒì¨A‚¯ƒì¨A‚¯ƒì¨A‚¯  ‚¯DEWWààQQƒW§c¨€ÿ€ÿƒWƒ/€¡º‚)„€©Ò‚Ö‚¯¡¨"‚®¢¨%4‚™©ê©ê¨ƒì§c‚™ƒì§c‚™‚™ƒì§c‚™ƒì§c‚™ƒì§c‚™ƒì§c‚™ —ƒì§c—‚™ ¨Bƒì§c¨B‚™ †ïƒì§c†ï‚™ ¨Cƒì§c¨C‚™‚¯¨Dƒì§c¨D‚™‚®¨Eƒì§c¨E‚™¨Fƒì§c¨F‚™ ‚™DEXXààQQƒX©ë¨  ƒX€—©ìDEYYààQQƒY©í¨  ƒY‚ׂ×DEZZààQQƒZ“¨ƒZƒ/€¡º‚)„€©Ò‚Ö‚Øê¨(m““¨ƒì“mƒì“mmƒì“mƒì“mƒì“mƒì“m ¨Gƒì“¨Gm¨Hƒì“¨Hm¨Jƒì“¨Jm mDE[[ààQQƒ[Œ ¨ ƒ[ƒ/€¡º‚)„€©Ò‚Ö€õ©î©î¨€õ©ï©ï¨ ƒìŒ €õƒìŒ €õ€õƒìŒ €õƒìŒ €õƒìŒ €õƒìŒ €õ  €õDE\\ààQQƒ\¨K¨ƒ\‚°©ð©ð¨‚°©ñ©ñ¨‚°©ò©ò¨ƒì¨K‚°ƒì¨K‚°‚°ƒì¨K‚°ƒì¨K‚°ƒì¨K‚°ƒì¨K‚°  ‚°DE]]ààQQƒ]„º¨##ƒ]€Ž€‚Ib‚óƒì„º‚󀜨Nƒì„º¨N€œ¨Pƒì„º¨P€œ€Çƒì„º€Ç€œš)ƒì„ºš)€œ¨Tƒì„º¨T€œˆYƒì„ºˆY€œ¨Vƒì„º¨V€œ©óDE^^ààQQƒ^¥÷¨AAƒ^€Ž€‚Ib‚óƒì¥÷‚󀜂±‚g—xƒì¥÷—x‚g€œ¨[ƒì¥÷¨[‚g‚±¨Nƒì¥÷¨N‚g¨Pƒì¥÷¨P‚g€Çƒì¥÷€Ç‚gš)ƒì¥÷š)‚g©ôDE__ààQQƒ_‚â¨PP ƒ_/€‰^€Üƒ/€¡º‚)„€©Ò‚Ö |©õ©õ¨RR ©öm¡¨TT|¢¨TT$|‹r‹r¨TT ©÷‚gê¨VV|” ” ¨VV ©ø‚gê¨XX|©ù©ù¨XX ©ú|ê¨Z Z|©û©û¨ZZ ©ü|ê¨\\|©ý©ý¨\\ ©þoê¨^^+|©ÿ©ÿ¨^^ª€–ê¨``|””¨`` ª ¡¨d d€œ¢¨f f|£¨h h|ªª¨bbªƒì‚â|ƒì‚â||ƒì‚â|ƒì‚â|ƒì‚â|ƒì‚â| ¨]ƒì‚â¨]|‚g¨_ƒì‚â¨_|€õ—xƒì‚â—x|€œ¨`ƒì‚â¨`| ¨[ƒì‚â¨[|‚±¨aƒì‚â¨a| ¨Tƒì‚â¨T|¨Vƒì‚â¨V| |DE``ààQQƒ`“"¨ssƒ`ƒ/€¡º‚)„€©Ò‚Ö‚™ª¨tt‚šª¨uu|Š#¨vvƒì“"oƒì“"ooƒì“"oƒì“"oƒì“"oƒì“"o  oDEaaààQQƒa¨W¨{{ƒaƒ’|ªDEbbààQQƒb§j¨|| ƒbƒ’|DEccààQQƒcª¨€€ ƒcL€Œ€ö€÷€ö€öªDE/ddàóQ`šQ•¨¨tt…àA¨„…áP¨„…à…გ…àƒ’…áÿ„@A¨P¨„šR¢¬¨‚‚¨uu…âA¨‚‚ „…ãP¨‚$‚&„…â…ヒ…⃒…ãÿ„@A¨‚‚ P¨‚$‚&„šS¢–¨ƒƒ¨vv…äA¨ƒ ƒ"„ƒ’…ä ÿ„@A¨ƒ ƒ"„šT¢³¨„„¨||…åA¨„„!„ƒ’…å…åÿ„@A¨„„!„šU”ꨅ…¨}}…æA¨……„…惒…æÿ„@A¨……„šV£H¨††"¨~~"…çA¨†&†(„…èP¨†,†.„…ç…è ƒ’…烒…è ÿ„@A¨†&†(P¨†,†.„šW ¨‡‡¨…éA¨‡%‡'„…郒…éÿ„@A¨‡%‡'„šXM¨ˆˆ¨€€…êA¨ˆˆ„ƒ’…êÿ„DA¨ˆˆ„šY£¨‰‰¨ww…ëA¨‰ ‰"„ƒ’…ë…ëÿ„@A¨‰ ‰"„šZª ¨ŠŠ¨xx…ìA¨ŠŠ„…샒…ìÿ„@A¨ŠŠ„š[ª ¨‹‹¨{{…íA¨‹‹„ƒ’…í…íÿ„@A¨‹‹„š\•¨ŒŒ¨yy…îA¨ŒŒ„……îÿ„@A¨ŒŒ„š]£É¨¨zz…ïA¨!„……ïÿ„@A¨!„š^£¼¨ŽŽ¨…ðA¨ŽŽ„…ñƒú¨Ž!Ž'„…ð…ñ…ñƒ’…ð…ñ…ñÿ„@A¨ŽŽƒú¨Ž!Ž'„š_¢¢¨¨‚‚…òA¨„…ò ƒ’…ò ÿ„@A¨„ƒdЍ››ƒd€Ž€‚Ib ‚óƒìŠ‚ó€œ‚™‚š|€ß¨gƒìЍg€ß€œ¨hƒìЍh€ß‚™€ÇƒìŠ€Ç€ß–ùƒìŠ–ù€ß¨iƒìЍi€ß¨jƒìЍj€ß‚š‡iƒìЇi€ß|¨kƒìЍk€ßoª DEeeóó``ƒe—G¨ªªƒeƒ/€¡º‚)„€©Ò‚Ö€œª ¨««‹L¨¬¬ |‰{¨­­ ƒì—G«ƒì—G««ƒì—G«ƒì—G«ƒì—G«ƒì—G«  «ª DEffóó``ƒf„¨½½ƒf€Ž€‚Ib ‚óƒì„‚ó|€ß‚±€™¨lƒì„¨l€™€ß—ƒì„—€™|¨[ƒì„¨[€™‚±¨hƒì„¨h€™‚™–ùƒì„–ù€™€Çƒì„€Ç€™¨mƒì„¨m€™‚šˆŠƒì„ˆŠ€™|ªDEggóó``ƒg„¨Ì̃gƒ/€¡º‚)„€©Ò‚Ö«ª¨ÍÍ|ª¨Î΃섀šƒì„€š€šƒì„€šƒì„€šƒì„€šƒì„€š ¨gƒì„¨g€š€œ€Çƒì„€Ç€š†ñƒì„†ñ€š|¨nƒì„¨n€š| €šªDEhhóó``ƒh‹Ÿ¨×׃hªDEiióó``ƒi¨o¨ÚÚƒiƒ/€¡º‚)„€©Ò‚Ö‚²ªª¨ÛÛ ‚²ªª¨ÜÜ ‚²ªª¨ÝÝ ‚²ªª¨ÞÞ ‚²ªª¨ßß ‚²ªª¨àà ‚²ªª¨áá ‚²ªª¨ââ ‚²ªª¨ãã ‚²ªª¨ää ‚²ªª¨åå ‚²ªª¨ææ ‚²ªª¨çç ‚²ª ª ¨èè ƒì¨o‚²ƒì¨o‚²‚²ƒì¨o‚²ƒì¨o‚²ƒì¨o‚²ƒì¨o‚²  ‚²DEjjóó``ƒj¦˜¨ëë ƒjƒ/€¡º‚)„€©Ò‚Ö/€‰^€Ü|ê¨ìì‚x‚â‚â¨ìì €™ê¨íí‚xª!ª!¨í퀚ê¨îî‚x””¨îî ƒì¦˜‚xƒì¦˜‚x‚xƒì¦˜‚xƒì¦˜‚xƒì¦˜‚xƒì¦˜‚x  ‚xDEkkóó``ƒk¦–¨ññ ƒkƒ/€¡º‚)„€©Ò‚Ö/€‰^€Ü€—ê¨ò ò‚vª"ª"¨òò€¶ê¨ó ó‚vª#ª#¨óó€çê¨ô ô‚vª$ª$¨ôô€èê¨õ õ‚vª%ª%¨õõƒì¦–‚vƒì¦–‚v‚vƒì¦–‚vƒì¦–‚vƒì¦–‚vƒì¦–‚v  ‚vDEllóó``ƒl§‘¨÷÷ƒl‚ª&ª&¨øø‚ª'ª'¨ùùƒì§‘‚ƒì§‘‚‚ƒì§‘‚ƒì§‘‚ƒì§‘‚ƒì§‘‚  ‚DEmmóó``ƒm§Ž¨ûûƒm‚œª(ª(¨üü ‚œª)ª)¨ýý‚œª*ª*¨þþ‚œª+ª+¨ÿÿƒì§Ž‚œƒì§Ž‚œ‚œƒì§Ž‚œƒì§Ž‚œƒì§Ž‚œƒì§Ž‚œ  ‚œDEnnóó``ƒn§‹¨‚‚ƒn‚›ª,ª,¨‚‚‚›ª-ª-¨‚‚ƒì§‹‚›ƒì§‹‚›‚›ƒì§‹‚›ƒì§‹‚›ƒì§‹‚›ƒì§‹‚›  ‚›DEooóó``ƒo¨p¨‚‚ƒo‚³ª.ª.¨‚‚‚³ª/ª/¨‚‚ƒì¨p‚³ƒì¨p‚³‚³ƒì¨p‚³ƒì¨p‚³ƒì¨p‚³ƒì¨p‚³  ‚³DEppóó``ƒp¦—¨‚ ‚ ƒp‚šDEqqóó``ƒq¥I¨‚ ‚ ƒqƒ/€¡º‚)„€©Ò‚Ö ‚bª0ª0¨‚ ‚ ‚bª1ª1¨‚‚ ‚bª2ª2¨‚‚‚bª3ª3¨‚‚ ‚bª4ª4¨‚‚‚bª5ª5¨‚‚ ‚bª6ª6¨‚‚‚bª7ª7¨‚‚ ‚bª8ª8¨‚‚‚bª9ª9¨‚‚‚bª:ª:¨‚‚‚bª;ª;¨‚‚ƒì¥I‚bƒì¥I‚b‚bƒì¥I‚bƒì¥I‚bƒì¥I‚bƒì¥I‚b  ‚bDErróó``ƒr‚ʨ‚"‚" ƒrƒ/€¡º‚)€è€…4€­a{ª<ª<¨‚$‚$ {ª=ª=¨‚%‚%{ª>ª>¨‚&‚&{ª?ª?¨‚'‚' {ª@ª@¨‚(‚( {ªAªA¨‚)‚){ªBªB¨‚*‚* {ªCªC¨‚+‚+ {ªDªD¨‚,‚,{ªEªE¨‚-‚- {ªFªF¨‚.‚.‚²ê¨‚/‚/!{ªGªG¨‚/‚/ ‚²ê¨‚0‚0!{ªHªH¨‚0‚0‚²ê¨‚1‚1${ªIªI¨‚1‚1{ªJªJ¨‚2‚2 {ªKªK¨‚3‚3{ªLªL¨‚4‚4{ªMªM¨‚5‚5 {ªNªN¨‚6‚6{ªOªO¨‚7‚7 {ªPªP¨‚8‚8 {ªQªQ¨‚9‚9{ªRªR¨‚:‚: {ªSªS¨‚;‚;{ªTªT¨‚<‚<{ªUªU¨‚=‚= {ªVªV¨‚>‚> {ªWªW¨‚?‚? {ªXªX¨‚@‚@ {ªYªY¨‚A‚A{ªZªZ¨‚B‚B {ª[ª[¨‚C‚C {ª\ª\¨‚D‚D{ª]ª]¨‚E‚E ‚²¡¨‚F‚F!‚v¢¨‚F$‚F+{ª^ª^¨‚F‚F €–ꨂG‚G{ª_ª_¨‚G‚G €–ꨂH‚H{ª`ª`¨‚H‚H‚œ¡¨‚I‚I ‚›¢¨‚I#‚I/‚²£¨‚I2‚I={ªaªa¨‚I‚I €–ꨂJ‚J{ªbªb¨‚J‚J €–ꨂK‚K{ªcªc¨‚K‚K€–ꨂL‚L{ªdªd¨‚L‚L ‚œ¡¨‚M‚M!‚›¢¨‚M$‚M0‚²£¨‚M3‚M>{ªeªe¨‚M‚M €–ꨂN‚N{ªfªf¨‚N‚N €ïꨂQ‚Q{ªgªg¨‚Q‚Q €™ê¨‚R‚R{ªhªh¨‚R‚R ‚b¡¨‚S‚S"€ï¢¨‚S%‚S0€ï£¨‚S3‚S>{ªiªi¨‚S‚S €ï€ïꨂT‚T4{ªjªj¨‚T‚T{ªkªk¨‚U‚U ‚¡¨‚X‚X€™¢¨‚X!‚X-‚w£¨‚X0‚X9{ªlªl¨‚X‚X ‚¡¨‚Y‚Y€™¢¨‚Y!‚Y-‚w£¨‚Y0‚Y9{ªmªm¨‚Y‚Y‚¡¨‚Z‚Z$|¢¨‚Z'‚Z-€™£¨‚Z0‚Z<‚w¥¨‚Z?‚ZH{ªnªn¨‚Z‚Z‚¡¨‚[‚[o¢¨‚[!‚[3‚w£¨‚[6‚[?{ªoªo¨‚[‚[ €™ê¨‚\‚\ {ªpªp¨‚\‚\ €™¡¨‚]‚] ‚w¢¨‚]$‚]-{ªqªq¨‚]‚]{ªrªr¨‚`‚` {ªsªs¨‚a‚a{ªtªt¨‚b‚b€ïꨂc‚c!{ªuªu¨‚c‚c {ªvªv¨‚d‚d‚›¡¨‚g‚g#€š¢¨‚g&‚g1{ªwªw¨‚g‚g‚œ¡¨‚h‚h"‚›¢¨‚h%‚h1€š£¨‚h4‚h?{ªxªx¨‚h‚h €šê¨‚i‚i"{ªyªy¨‚i‚i€šê¨‚j‚j"{ªzªz¨‚j‚j‚›¡¨‚k‚k#€š¢¨‚k(‚k3{ª{ª{¨‚k‚k‚œ¡¨‚l‚l"‚›¢¨‚l%‚l1€š£¨‚l4‚l?{ª|ª|¨‚l‚l ꨂm‚m{ª}ª}¨‚m‚m |ꨂn‚n{ª~ª~¨‚n‚n|ꨂo‚o{ªª¨‚o‚o‚xꨂp‚p{ª€ª€¨‚p‚p€™ê¨‚q‚q#{ªª¨‚q‚q|ꨂt‚t{ª‚ª‚¨‚t‚t |ꨂu‚u{ªƒªƒ¨‚u‚u‚œ¡¨‚v‚v"‚›¢¨‚v%‚v1|£¨‚v4‚v:{ª„ª„¨‚v‚v ‚œ¡¨‚w‚w"‚›¢¨‚w%‚w1|£¨‚w4‚w:{ª…ª…¨‚w‚w |ꨂx‚x{ª†ª†¨‚x‚x |ꨂy‚y{ª‡ª‡¨‚y‚y |ꨂz‚z{ªˆªˆ¨‚z‚z|ꨂ{‚{{ª‰ª‰¨‚{‚{‚²ê¨‚ˆ‚ˆ"{ªŠªŠ¨‚ˆ‚ˆ‚²ê¨‚‰‚‰"{ª‹ª‹¨‚‰‚‰‚³¡¨‚Š‚Š! ¢¨‚Š$‚Š(m£¨‚Š+‚Š7|¥¨‚Š:‚Š@{ªŒªŒ¨‚Š‚Šm¡¨‚‹‚‹#|¢¨‚‹&‚‹,{ªª¨‚‹‚‹m¡¨‚Œ‚Œ#|¢¨‚Œ&‚Œ,{ªŽªŽ¨‚Œ‚Œm¡¨‚‚#|¢¨‚&‚,{ªª¨‚‚{ªª¨‚Ž‚Ž |ꨂ”‚”{ª‘ª‘¨‚”‚”{ª’ª’¨‚•‚•|ꨂ–‚–{ª“ª“¨‚–‚–{ª”ª”¨‚‚ ‚«ê¨‚ž‚ž"{ª•ª•¨‚ž‚ž{ª–ª–¨‚¡‚¡{ª—ª—¨‚¤‚¤‚œ¡¨‚¥‚¥‚›¢¨‚¥‚¥+{ª˜ª˜¨‚¥‚¥ ‚œ¡¨‚¦‚¦‚›¢¨‚¦"‚¦.{ª™ª™¨‚¦‚¦|ꨂ©‚©{ªšªš¨‚©‚©€—¡¨‚ª‚ª"€—¢¨‚ª%‚ª*{ª›ª›¨‚ª‚ª‚´ê¨‚«‚«%{ªœªœ¨‚«‚« ƒì‚Ê{ƒì‚Ê{ƒì‚Ê{  ªDEssóó``ƒs…ó¨r¨‚®‚®#„¨s¨‚®‚®ƒs…ó€ïªž¨‚¯‚¯…ó€ïªŸ¨‚°‚°…ó ª ¨‚±‚±€ï€ï…ó…󪡨‚²‚²DEttôô``ƒt§£¨‚Ƃƃt€ï‹¢¨‚Ç‚Ç {ª¢¨‚Ȃȃ짣‚Ÿƒì§£‚Ÿƒì§£‚Ÿ ¨uƒì§£¨u‚Ÿ€ï ª£DEuuôô``ƒu¨v¨‚ςσuª¤¨‚ЂЪ¥¨‚туì¨v‚µƒì¨v‚µ‚µƒì¨v‚µƒì¨v‚µƒì¨v‚µƒì¨v‚µ  ‚µª¦DEvvôô``ƒv¢x¨ƒDƒD ƒv‚Ÿê¨ƒEƒE"‚=§£§£¨ƒEƒE‚µ¡¨ƒFƒF'‚=¢¨ƒF*ƒF5‚=ª§ª§¨ƒFƒF€ï¡¨ƒGƒG'‚=¢¨ƒG*ƒG0‚=ª¨ª¨¨ƒGƒG‚=¡¨ƒHƒH‚¶¢¨ƒHƒH+‚=ª©ª©¨ƒHƒHƒì¢x‚=ƒì¢x‚=ƒì¢x‚=  ªªDEwwôô``ƒw¨w¨ƒSƒSƒw‚=ꨃTƒT‚¶ª«ª«¨ƒTƒT‚=ꨃUƒU‚¶ª¬ª¬¨ƒUƒU‚·‚=ꨃVƒV7‚¶ª­ª­¨ƒVƒVƒì¨w‚¶ƒì¨w‚¶ƒì¨w‚¶  ª®DExxôô``ƒx¨x¨ƒXƒXƒx|ꨃYƒY‚·ª¯ª¯¨ƒYƒY‚=ꨃZƒZ‚·ª°ª°¨ƒZƒZƒì¨x‚·ƒì¨x‚·ƒì¨x‚·  DEyyôô``ƒy‚>¨ƒbƒbƒy/€‰^€Üƒ/€¡º‚)„€©Ò‚Öꨃcƒc_jj¨ƒcƒc  ꨃdƒd_‹‹¨ƒdƒd €–ꨃeƒe_‹-‹-¨ƒeƒe €äꨃfƒf_ª±ª±¨ƒfƒf €ªê¨ƒgƒg_‹‹¨ƒgƒg €—ꨃhƒh_‹!‹!¨ƒhƒh €¶ê¨ƒiƒi_‹$‹$¨ƒiƒi €•ꨃjƒj_ª²ª²¨ƒjƒj €–ꨃkƒk_‹ ‹ ¨ƒkƒk €åꨃlƒl_‹#‹#¨ƒlƒl €æê¨ƒmƒm_‹&‹&¨ƒmƒm €çꨃnƒn_‹*‹*¨ƒnƒn €èꨃoƒo_‹,‹,¨ƒoƒo _¡v¡v¨ƒpƒp ƒì‚>_ƒì‚>__ƒì‚>_ƒì‚>_ƒì‚>_ƒì‚>_  _ª³DEzzôô``ƒz¥§¨ƒsƒsƒz/€‰^€Ü,‚dƒ’ƒ’¨ƒtƒt ‚d¡v¡v¨ƒuƒu ‚dª´ª´¨ƒvƒv ‚dªµªµ¨ƒwƒw‚d‹.‹.¨ƒxƒx ‚dª¶ª¶¨ƒyƒy ‚dª·ª·¨ƒzƒz ‚dª¸ª¸¨ƒ{ƒ{ ‚dª¹ª¹¨ƒ|ƒ| ‚dªºªº¨ƒ}ƒ}‚dª»ª»¨ƒ~ƒ~‚dª¼ª¼¨ƒƒ‚dŒ‘Œ‘¨ƒ€ƒ€ ‚dª½ª½¨ƒƒ ‚dª¾ª¾¨ƒ‚ƒ‚ ‚dª¿ª¿¨ƒƒƒƒ‚d¡9¡9¨ƒ„ƒ„ ‚dªÀªÀ¨ƒ…ƒ…‚dªÁªÁ¨ƒ†ƒ† ‚d£Ü£Ü¨ƒ‡ƒ‡ ‚dªÂªÂ¨ƒˆƒˆ ‚dªÃªÃ¨ƒ‰ƒ‰‚dªÄªÄ¨ƒŠƒŠ‚dªÅªÅ¨ƒ‹ƒ‹‚dªÆªÆ¨ƒŒƒŒ‚dªÇªÇ¨ƒƒ ‚d©õ©õ¨ƒŽƒŽ ‚d‹‹¨ƒƒ ‚dª±ª±¨ƒƒ ‚d‹‹¨ƒ‘ƒ‘ ‚d‹!‹!¨ƒ’ƒ’ ‚d‹$‹$¨ƒ“ƒ“ ‚d‹*‹*¨ƒ”ƒ” ‚d‹,‹,¨ƒ•ƒ• ‚dª²ª²¨ƒ–ƒ– ‚d‹ ‹ ¨ƒ—ƒ— ‚d‹#‹#¨ƒ˜ƒ˜ ‚d‹&‹&¨ƒ™ƒ™ ‚dªÈªÈ¨ƒšƒš ‚dꨃ›ƒ›‚d‹r‹r¨ƒ›ƒ› ‚dꨃœƒœ‚d™M™M¨ƒœƒœ ‚dꨃƒ‚d©ý©ý¨ƒƒ ‚dªÉªÉ¨ƒžƒž ‚dªÊªÊ¨ƒŸƒŸ ƒì¥§‚dƒì¥§‚d‚dƒì¥§‚dƒì¥§‚dƒì¥§‚dƒì¥§‚d  ‚dDE{{ôô``ƒ{¥¤¨ƒ¥ƒ¥ƒ{/€‰^€Üƒ/€¡º‚)„€©Ò‚Ö%‚cƒ’ƒ’¨ƒ¦ƒ¦ ‚ª¡¨ƒ§ƒ§¢¨ƒ§ƒ§£¨ƒ§ ƒ§&€•¥¨ƒ§)ƒ§/‚cªËªË¨ƒ§ƒ§ €—ꨃ¨ƒ¨‚cªÌªÌ¨ƒ¨ƒ¨€—ꨃ©ƒ©‚cªÍªÍ¨ƒ©ƒ©‚cªµªµ¨ƒªƒª‚cª¸ª¸¨ƒ«ƒ« ‚cª¹ª¹¨ƒ¬ƒ¬ ‚cªÎªÎ¨ƒ­ƒ­ ‚cªÏªÏ¨ƒ®ƒ®‚cªÐªÐ¨ƒ¯ƒ¯ ‚cªÑªÑ¨ƒ°ƒ°‚cªÒªÒ¨ƒ±ƒ± ‚c©õ©õ¨ƒ²ƒ² ‚c‹‹¨ƒ³ƒ³ ‚cª±ª±¨ƒ´ƒ´ ‚c‹‹¨ƒµƒµ ‚c‹!‹!¨ƒ¶ƒ¶ ‚c‹$‹$¨ƒ·ƒ· ‚c‹*‹*¨ƒ¸ƒ¸ ‚c‹,‹,¨ƒ¹ƒ¹ ‚c‹‹¨ƒºƒº ‚c‹ ‹ ¨ƒ»ƒ» ‚c‹#‹#¨ƒ¼ƒ¼ ‚c‹&‹&¨ƒ½ƒ½ ‚c¡¨ƒ¾ƒ¾"€—€—¢¨ƒ¾%ƒ¾B‚c‹r‹r¨ƒ¾ƒ¾ ‚cªÉªÉ¨ƒ¿ƒ¿ ‚cªÊªÊ¨ƒÀƒÀ ‚cŒ2Œ2¨ƒÁƒÁ ‚cªÓªÓ¨ƒÂƒÂ ‚cª·ª·¨ƒÃƒÃ ‚cªºªº¨ƒÄƒÄ‚cª»ª»¨ƒÅƒÅ‚cœœ¨ƒÆƒÆ‚cŒ‘Œ‘¨ƒÇƒÇ ‚d¡¨ƒÈƒÈ"¢¨ƒÈ%ƒÈ2‚cª¼ª¼¨ƒÈƒÈ‚cªÔªÔ¨ƒÉƒÉ‚cªÕªÕ¨ƒÊƒÊƒì¥¤‚cƒì¥¤‚c‚cƒì¥¤‚cƒì¥¤‚cƒì¥¤‚cƒì¥¤‚c  ‚cªÖDE||ôô``ƒ|§¨¨ƒÏƒÏ ƒ|€è€…4€­€ç€…3€¬|‰{¨ƒÐƒÐ  ª×¨ƒÑƒÑªØDE}}ôô``ƒ}¨‹¨ƒÔƒÔ ƒ}ƒ’‚ DE~~ôô``ƒ~¢s¨ƒØƒØƒ~€è€…4€­€ç€…3€¬ ªÙ¨ƒÙƒÙ€—ªÚ¨ƒÛƒÛªÛ ªÜ¨ƒÜƒÜ‚ÁªÝ¨ƒÝƒÝ ‚=ªÞ¨ƒÞƒÞ ‚«ªß¨ƒßƒßªàDEôô``ƒ˜¨ƒãƒãƒ/€‰^€ÜµšTšT¨ƒäƒäµªáªá¨ƒåƒåµªâªâ¨ƒæƒæµªãªã¨ƒçƒçµªäªä¨ƒèƒè µ Ö Ö¨ƒéƒé µ Õ Õ¨ƒêƒê ƒì˜µƒì˜µµƒì˜µƒì˜µƒì˜µƒì˜µ  µªåDE€€ôô``ƒ€„½¨ƒíƒíƒ€/€‰^€Üꨃðƒð€žjj¨ƒðƒð ªæ ꨃñƒñ€ž‹‹¨ƒñƒñ ꨃòƒò€ž‹-‹-¨ƒòƒò €äꨃóƒó€ž‹‹¨ƒóƒó €ªê¨ƒôƒô€ž‹‹¨ƒôƒô €—ꨃõƒõ€ž‹!‹!¨ƒõƒõ €¶ê¨ƒöƒö€ž‹$‹$¨ƒöƒö €•ꨃ÷ƒ÷€ž‹‹¨ƒ÷ƒ÷ €–ꨃøƒø€ž‹ ‹ ¨ƒøƒø €åꨃùƒù€ž‹#‹#¨ƒùƒù €æê¨ƒúƒú€ž‹&‹&¨ƒúƒú €çꨃûƒû€ž‹*‹*¨ƒûƒû €èꨃüƒü€ž‹,‹,¨ƒüƒü €ž¡v¡v¨ƒýƒý |ꨃþƒþ€ž‰{‰{¨ƒþƒþ €œê¨ƒÿƒÿ!€ž¥Æ¥Æ¨ƒÿƒÿ |¡¨„„€ž¢¨„„)€ž‹r‹r¨„„ ƒì„½€žƒì„½€ž€žƒì„½€žƒì„½€žƒì„½€žƒì„½€ž  €žDEôô``ƒ„¾¨„„ƒ| €žªçDE‚‚ôô``ƒ‚„Ȩ„„ƒ‚€™Œ2¨„„ €•‰–¨„ „ ƒì„È€¡ƒì„È€¡€¡ƒì„È€¡ƒì„È€¡ƒì„È€¡ƒì„È€¡  €¡ªèDEƒƒôô``ƒƒ„»¨„„ƒƒ€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì„»¨{€€¡DE„„ôô``ƒ„“'¨„„ƒ„‹L¨„„ |‰{¨„„ _Œü¨„„ ‚cªé¨„„ ªê ªë¨„„  ªì¨„„  ªí¨„„€ªî¨„„ªïDE……ôô``ƒ…“*¨„„ƒ…ƒ’pDE††ôô``ƒ†©&¨„%„% ƒ†‚cªé¨„&„& |‰{¨„'„' €ªî¨„(„(ªðDE‡‡ôô``ƒ‡¥ª¨„/„/ƒ‡/€‰^€Ü‚eªñªñ¨„0„0 ‚eªòªò¨„1„1 ‚e¡M¡M¨„2„2 ‚eªóªó¨„3„3 ‚eªôªô¨„4„4‚eªõªõ¨„5„5‚eªöªö¨„6„6‚eª÷ª÷¨„7„7 ‚eªøªø¨„8„8 ‚eªùªù¨„9„9‚eªúªú¨„:„:‚eªûªû¨„;„;‚eªüªü¨„<„<‚eªýªý¨„=„=‚eªþªþ¨„>„>‚eªÿªÿ¨„?„?‚e««¨„@„@‚e««¨„A„Aƒì¥ª‚eƒì¥ª‚e‚eƒì¥ª‚eƒì¥ª‚eƒì¥ª‚eƒì¥ª‚e  ‚e«DEˆˆôô``ƒˆ™†¨„C„Cƒˆ‚e¡¨„D„D'€•¢¨„D*„D0Ê««¨„D„Dƒì™†Êƒì™†ÊÊƒì™†Êƒì™†Êƒì™†Êƒì™†Ê  ÊDE‰‰ôô``ƒ‰©¨„I„Iƒ‰€è€…4€­€ç€…3€¬€Ž€‚Ib¨{ƒì©¨{ìÊ«DEŠŠôô``ƒŠ¨~¨„N„NƒŠ/€‰^€Ü‚¸ŒãŒã¨„O„O ‚¸««¨„P„P ‚¸««¨„Q„Q ‚¸««¨„R„R‚¸««¨„S„S‚¸« « ¨„T„T ƒì¨~‚¸ƒì¨~‚¸‚¸ƒì¨~‚¸ƒì¨~‚¸ƒì¨~‚¸ƒì¨~‚¸  ‚¸« DE‹‹ôô``ƒ‹¨¨„W„Wƒ‹/€‰^€Ü‚¹ŒãŒã¨„X„X ‚¹« « ¨„Y„Y ‚¹« « ¨„Z„Z ‚¹« « ¨„[„[ ƒì¨‚¹ƒì¨‚¹‚¹ƒì¨‚¹ƒì¨‚¹ƒì¨‚¹ƒì¨‚¹  ‚¹DEŒŒôô``ƒŒ¨€¨„^„^ƒŒ/€‰^€Ü‚º««¨„_„_‚º««¨„`„` ‚º««¨„a„aƒì¨€‚ºƒì¨€‚º‚ºƒì¨€‚ºƒì¨€‚ºƒì¨€‚ºƒì¨€‚º  ‚ºDEôô``ƒ¨¨„d„d!ƒ/€‰^€Ü‚»««¨„e„e‚»««¨„f„f ‚»««¨„g„gƒì¨‚»ƒì¨‚»‚»ƒì¨‚»ƒì¨‚»ƒì¨‚»ƒì¨‚»  ‚»DEŽŽôô``ƒŽ«¨„j„jƒŽ€è€…4€­€ç€…3€¬‚­«¨„k„k ‹L¨„l„l ‚¸ª¨„m„m‚¹«¨„n„n «¨„o„o «¨„p„p‚»«¨„q„q‚º«¨„r„rDEôô``ƒ¨‚¨„{„{ƒ€ß¡¨„|„|"|¢¨„|%„|+‚¼««¨„|„|ƒì¨‚‚¼ƒì¨‚‚¼‚¼ƒì¨‚‚¼ƒì¨‚‚¼ƒì¨‚‚¼ƒì¨‚‚¼ ¨lƒì¨‚¨l‚¼€ß—ƒì¨‚—‚¼| ‚¼«DEôô``ƒ¨ƒ¨„„ƒ ¡¹¨„‚„‚  «¨„ƒ„ƒ «¨„„„„ «¨„…„…ƒì¨ƒ‚½ƒì¨ƒ‚½‚½ƒì¨ƒ‚½ƒì¨ƒ‚½ƒì¨ƒ‚½ƒì¨ƒ‚½  ‚½DE‘‘ôô``ƒ‘¨„¨„ˆ„ˆƒ‘/€‰^€Ü‚¾©è©è¨„‰„‰ ‚¾««¨„ЄР‚¾ŽÈŽÈ¨„‹„‹ ‚¾««¨„Œ„Œ‚½ê¨„„$‚¾««¨„„ ƒì¨„‚¾ƒì¨„‚¾‚¾ƒì¨„‚¾ƒì¨„‚¾ƒì¨„‚¾ƒì¨„‚¾  ‚¾DE’’ôô``ƒ’¨†¨„‘„‘ƒ’/€‰^€Ü‚:ꨄ’ „’‚ÀEE¨„’„’‚Ùꨄ“„“‚À« « ¨„“„“ ‚À«!«!¨„”„”‚À«"«"¨„•„• DE““ôô``ƒ“¨…¨„™„™ƒ“/€‰^€Ü‚¿EE¨„š„š‚¿«"«"¨„›„› ‚¿•I•I¨„œ„œ ƒì¨…‚¿ƒì¨…‚¿‚¿ƒì¨…‚¿ƒì¨…‚¿ƒì¨…‚¿ƒì¨…‚¿  ‚¿DE””ôô``ƒ”™n¨„ „ ƒ”‹L¨„¡„¡ ‚š«#¨„£„£«$‚°«%¨„¥„¥«& «'¨„§„§ «(€ªî¨„¨„¨ «)¨„ª„ª'«* «+¨„¬„¬%«,«-DE••ôô``ƒ•“¨„¯„¯ƒ•ÄDE––ôô``ƒ–¢t¨„³„³ƒ–€è€…4€­€ç€…3€¬€Ž€‚Ib‚åƒì¢t‚å‚;‚ÀDE——ôô``ƒ—“/¨„¾„¾ƒ—€è€…4€­€ç€…3€¬‹L¨„¿„¿ ‚¾«.¨„À„À ‚™ª¨„Á„ÁqN¨„„‚ϋ¨„Ã„à µ«/¨„Ä„Ä ‚;«0¨„ńŠ‚¿«1¨„Æ„Æ «2¨„Ç„Ç «3¨„È„È «4¨„É„Éì«5¨„Ê„Ê «6¨„̫̄7 «8¨„Í„Í «9¨„΄Π«:¨„Ï„Ï «;¨„ЄР«<¨„Ò„Ò«= «>¨„Ó„Ó «?¨„Ô„Ô «@¨„Ö„Ö«A «B¨„ׄ×n«C¨„لـªî¨„Ú„Ú¨‡ƒì“/¨‡r‚š¨ˆƒì“/¨ˆr ¨‰ƒì“/¨‰r‚=¨Šƒì“/¨Šr‚Á¨Œƒì“/¨Œr€—†óƒì“/†ór ¨ƒì“/¨r ‡”ƒì“/‡”r †ïƒì“/†ïr ¨‘ƒì“/¨‘r –ÿƒì“/–ÿr —ƒì“/—r —ƒì“/—r ¨”ƒì“/¨”r —ƒì“/—r ¨•ƒì“/¨•r‚:¨kƒì“/¨kro«DDE˜˜ôô``ƒ˜¢h¨„û„ûƒ˜€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¢h¨{‚8r¨–ƒì¢h¨–‚8r„r«FDE™™ôô``ƒ™“2¨……ƒ™€è€…4€­€ç€…3€¬ ‹L¨…… |‰{¨……  «G¨……µ«/¨…… €•‰–¨…… _«H¨……€—«I¨… … «J «;¨… … ‚cªé¨… …  «K¨… …  «L¨…… «M¨……€ªî¨……«NDEššôô``ƒš¨—¨……ƒš€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨—¨{‚Âs¨˜ƒì¨—¨˜‚Âs«ODE››ôô``ƒ›“¨……ƒ›€è€…4€­€ç€…3€¬ |‰{¨…… ‹L¨……  «P¨…… «;¨… … €ß«Q¨…!…!€ß«R¨…"…"€ß«S¨…#…#€ß«T¨…$…$€ªî¨…%…%«UDEœœôô``ƒœ¨™¨…)…)ƒœ€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨™¨{‚Ãl¨˜ƒì¨™¨˜‚Ãl«VDEôô``ƒ“5¨…/…/ƒ€è€…4€­€ç€…3€¬ ‹L¨…0…0  «P¨…1…1 «;¨…2…2€ß«W¨…3…3€ß€Õ¨…4…4‚¯ª¨…5…5|‰{¨…6…6 _«X¨…7…7 ‚šÇ¨…8…8 €ªî¨…9…9«YDEžžôô``ƒž¨š¨…>…>ƒž€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨š¨{‚Ät¨˜ƒì¨š¨˜‚Ät«ZDEŸŸôô``ƒŸ§È¨…G…GƒŸ‚¼«[¨…H…H€™«\¨…I…Iƒì§È‚¡ƒì§È‚¡‚¡ƒì§È‚¡ƒì§È‚¡ƒì§È‚¡ƒì§È‚¡  ‚¡«]DE  ôô``ƒ ¨›¨…L…Lƒ €ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨›¨{‚Å‚¡DE¡¡ôô``ƒ¡§Ò¨…Q…Qƒ¡/€‰^€Ü‚¥« « ¨…R…R ‚Æê¨…S…S'‚¥‹R‹R¨…S…S‚Æê¨…T…T%‚¥«^«^¨…T…Tƒì§Ò‚¥ƒì§Ò‚¥‚¥ƒì§Ò‚¥ƒì§Ò‚¥ƒì§Ò‚¥ƒì§Ò‚¥  ‚¥«_DE¢¢ôô``ƒ¢¨œ¨…V…Vƒ¢€—«`¨…W…W €–«a¨…X…X ƒì¨œ‚ƃ쨜‚Ƃƃ쨜‚ƃ쨜‚ƃ쨜‚ƃ쨜‚Æ  ‚ÆDE££ôô``ƒ£¨¨…\…\ƒ£/€‰^€Ü‚Ç«b«b¨…]…]‚Ç«c«c¨…^…^ ƒì¨‚Çƒì¨‚Ç‚Çƒì¨‚Çƒì¨‚Çƒì¨‚Çƒì¨‚Ç  ‚Ç«dDE¤¤ôô``ƒ¤§Ð¨…b…bƒ¤/€‰^€Ü‚¤« « ¨…c…c ‚¤« « ¨…d…d ‚¤« « ¨…e…e ƒì§Ð‚¤ƒì§Ð‚¤‚¤ƒì§Ð‚¤ƒì§Ð‚¤ƒì§Ð‚¤ƒì§Ð‚¤  ‚¤«eDE¥¥ôô``ƒ¥§Î¨…i…iƒ¥/€‰^€Ü‚£ Õ Õ¨…j…j ‚£ Ö Ö¨…k…k µê¨…l…l‚£ŒëŒë¨…l…l ƒì§Î‚£ƒì§Î‚£‚£ƒì§Î‚£ƒì§Î‚£ƒì§Î‚£ƒì§Î‚£  ‚£«fDE¦¦ôô``ƒ¦§Ì¨…~…~ƒ¦/€‰^€Ü‚¢››¨…… ‚¢…5…5¨…€…€‚¢œœ¨……‚¢ŒêŒê¨…‚…‚ ‚¢«g«g¨…ƒ…ƒ‚Õꨅ………#‚¢«h«h¨………… ƒì§Ì‚¢ƒì§Ì‚¢ƒì§Ì‚¢  «iDE§§ôô``ƒ§¢j¨……ƒ§€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¢j¨{‚9€´¨žƒì¢j¨ž‚9€€í€´¨–ƒì¢j¨–‚9€´„€´«jDE¨¨ôô``ƒ¨…¨…£…£ ƒ¨€è€…4€­€ç€…3€¬‚¢«k¨…¤…¤ ‹L¨…¥…¥ n«C¨…¦…¦‚£«/¨…§…§  «¨…¨…¨ ‰ï¨…©…© «l¨…ª…ª «m¨…¬…¬«n‚¥…c¨…­…­  «;¨…®…®‚¤£ë¨…¯…¯‚9«o¨…°…°‚š«p¨…±…±|«q¨…²…² ‚8«r¨…³…³ ì«5¨…´…´ «6¨…¶…¶«s‚«t¨…·…· ‚Å«u¨…¸…¸‚Ç«v¨…¹…¹‚ëw¨…º…º ‚Ä«x¨…»…»€ªî¨…¼…¼šAƒì…šA€´ š@ƒì…š@€´ š?ƒì…š?€´ ¨¡ƒì…¨¡€´ ¨¢ƒì…¨¢€´ «yDE©©ôô``ƒ©¨£¨…ŅŃ©€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨£¨{‚È‚ÉDEªªôô``ƒª¨¤¨…ã…リ‹L¨…ä…ä µ«/¨…å…å ‚ÈŒë¨…æ…æ €ªî¨…ç…ç«zDE««ôô``ƒ«P¨…ë…냫€è€…4€­€ç€…3€¬«{¨…ì…ì‹L¨…î…î «| «}¨…ï…ï‚£«/¨…ð…ð ‚Ȍ먅ñ…ñ €ªî¨…ò…ò«~DE¬¬ôô``ƒ¬™r¨…ö…ö!ƒ¬€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì™r¨{ÅêDE­­ôô``ƒ­ž_¨…ú…úƒ­/€‰^€Üý Õ Õ¨…û…û ý Ö Ö¨…ü…ü ƒìž_ýƒìž_ýýƒìž_ýƒìž_ýƒìž_ýƒìž_ý  ýDE®®ôô``ƒ®«¨…ÿ…ÿƒ®/€‰^€Ü€•ꨆ†‚Ú©Û©Û¨†† ‚­¡¨††€—¢¨††!‚Ú¥ã¥ã¨†† Àꨆ†‚ÚšTšT¨††DE¯¯ôô``ƒ¯E¨††ƒ¯‹L¨† † ‚Ú«€¨† † ý«/¨† † €ªî¨† † «DE°°ôô``ƒ°¨¥¨††ƒ°€ç€…3€¬€è€…4€­€Ž€‚Ib¨{ƒì¨¥¨{‚Êé«‚DE±±ôô``ƒ±¨¦¨††ƒ±/€‰^€Ü‚Ë«ƒ«ƒ¨††‚ˬ¬¨†† ‚Ë«„«„¨††‚Ë«…«…¨††‚Ë«†«†¨††ƒì¨¦‚˃쨦‚˂˃쨦‚˃쨦‚˃쨦‚˃쨦‚Ë  ‚ËDE²²ôô``ƒ²¨¨¨††ƒ² ‹L¨†† €—«‡¨†%†%«ˆì«5¨†&†&€•¨)¨†,†,«‰€¢š¨†-†- «Š¨†.†. €ªî¨†/†/‚Ë«‹¨†0†0 «Œ¨†1†1 «¨†2†2 «Ž¨†3†3Å«¨†6†6«‚­«‘¨†8†8«’«“DE³³ôô``ƒ³N¨†@†@ƒ³‚Ì«”¨†A†A€ªî¨†B†B‹L¨†C†C ‚9«•¨†D†D«–¨†E†E «—¨†F†F€—«˜¨†G†G «™¨†H†H  «š¨†I†Iþ«›¨†J†J€—«œ¨†K†K «¨†L†L  «ž¨†M†M «Ÿ¨†N†N €—« ¨†O†O€—«¡¨†P†P€—«¢¨†Q†Q«£¨†R†R‚Ê«¤¨†S†S€í€•«¥¨†U†U«¦¨§ƒìN¨§S‚̨©ƒìN¨©S «§DE´´ôô``ƒ´„~¨†Ž†Žƒ´€ç€…3€¬€è€…4€­K«¨¨††ŸJ¨†† Ÿ¦¨†‘†‘€œ«©¨†’†’‚g«ª¨†“†“|««¨†”†”€œ«¬¨†•†•|«­¨†–†–|«®¨†—†—|«¯¨†˜†˜|«°¨†™†™|«±¨†š†š€œ«²¨†›†›|«³¨†œ†œ|«´¨††|«µ¨†ž†ž|«¶¨†Ÿ†Ÿ|«·¨† † |«¸¨†¡†¡‚g«¹¨†¢†¢|«º¨†£†£|«»¨†¤†¤|«¼¨†¥†¥‚g«½¨†¦†¦‚g«¾¨†§†§‚g«¿¨†¨†¨‚g«À¨†©†©‚g«Á¨†ª†ª‚g«Â¨†«†«‚g«Ã¨†¬†¬‚g«Ä¨†­†­‚g«Å¨†®†®‚g«Æ¨†¯†¯‚g«Ç¨†°†°‚g«È¨†±†±‚g«É¨†²†²‚g«Ê¨†³†³|«Ë¨†´†´|«Ì¨†µ†µ|«Í¨†¶†¶|«Î¨†·†·|«Ï¨†¸†¸|«Ð¨†¹†¹|«Ñ¨†º†º|«Ò¨†»†»|«Ó¨†¼†¼|«Ô¨†½†½|«Õ¨†¾†¾|«Ö¨†¿†¿|«×¨†À†À|«Ø¨†Á†Á|«Ù¨†Â†Â|«Ú¨†Ã†Ã|«Û¨†Ä†Ä|«Ü¨†Å†Å|«Ý¨†Æ†Æ|«Þ¨†Ç†Ç|«ß¨†È†È|«à¨†É†É|«á¨†Ê†Ê|«â¨†Ë†Ë|«ã¨†Ì†Ì|«ä¨†Í†Í|«å¨†Î†Î|«æ¨†Ï†Ï|«ç¨†Ð†Ð|«è¨†Ñ†Ñ|«é¨†Ò†Ò|«ê¨†Ó†Ó€œ«ë¨†Ô†Ô&‚g«ì¨†Õ†Õ|«í¨†Ö†Ö€¡«î¨†×†×#€¡«ï¨†Ø†Ø2€¡«ð¨†Ù†Ù-«ñDEµµôô``ƒµ¨Æ¨†û†ûƒµ|DE¶¶ôô``ƒ¶© ¨‡f‡fƒ¶ƒì© ‚Ω ƒì© © ‚΂ €–‚ƒì© ‚‚΂ «òDE··ôô``ƒ·©¨ˆ>ˆ>ƒ·/€‰^€Ü€ï€ïꨈ?ˆ?+‚Ыó«ó¨ˆ?ˆ? €ï€ïꨈ@ˆ@*‚Ыô«ô¨ˆ@ˆ@ €ï€ï¡¨ˆAˆA/€ï€ï¢¨ˆA4ˆAM‚Ыõ«õ¨ˆAˆA|¡¨ˆBˆB€ï€ï¢¨ˆBˆB6‚Ыö«ö¨ˆBˆBƒì©‚Ѓ쩂ЂЃ쩂Ѓ쩂Ѓ쩂Ѓ쩂Р ‚ÐDE¸¸ôô``ƒ¸©Ž¨ˆDˆDƒ¸€ï€ï«÷¨ˆEˆE‚Ыø¨ˆFˆFƒì©Ž‚у쩎‚ту쩎‚у쩎‚у쩎‚у쩎‚Ñ  ‚ÑDE¹¹ôô``ƒ¹©¨ˆHˆHƒ¹€ï€ï«ù¨ˆIˆI‚µ«ú¨ˆJˆJƒì©‚Òƒì©‚Ò‚Òƒì©‚Òƒì©‚Òƒì©‚Òƒì©‚Ò  ‚ÒDEººôô``ƒº©Æ¨ˆ¸ˆ¸ƒº_«û¨ˆ¹ˆ¹|«ü¨ˆºˆºƒì©Æ‚Óƒì©Æ‚Ó‚Óƒì©Æ‚Óƒì©Æ‚Óƒì©Æ‚Óƒì©Æ‚Ó  ‚Ó«ýDE»»ôô``ƒ»©É¨ˆÇˆÇƒ»€Ž€‚Ib‚óƒì©É‚󀜂Ԩgƒì©É¨g‚Ô€œ€Çƒì©É€Ç‚ÔDE¼¼ôô``ƒ¼§=¨ˆÍˆÍƒ¼€Ž€‚Ib‚óƒì§=‚󀜂˜¨gƒì§=¨g‚˜€œ€Çƒì§=€Ç‚˜DE½½ôô``ƒ½¾¨ˆÕˆÕƒ½À«þ¨ˆÖˆÖ‚­«ÿ¨ˆ×ˆ×ƒì¾îƒì¾îîƒì¾îƒì¾îƒì¾îƒì¾î  îDE¾¾ôô``ƒ¾…ô¨r¨ˆàˆà&„©Î¨ˆàˆàƒ¾„ …ô¬¬¨ˆà*ˆà>ƒì©Î…õ¨r¨ˆàˆà&„„ …õƒì©Î…ö¨r¨ˆàˆà&„„ …ö„ …öƒì©Î…÷¨r¨ˆàˆà&„„ …÷ƒì©Î…ø¨r¨ˆàˆà&„„ …øƒì©Î…ù¨r¨ˆàˆà&„„ …ùƒì©Î…ú¨r¨ˆàˆà&„„ …ú  „ …ôDE¿¿ûû``ƒ¿Š¢_5?ƒ¿D+ÀÕûý`¬ƒÀŠ¢_@CƒÀDо*ÁÕûý`¬ƒÁЬDIƒÁ¬DŠŠŸ"ÂÐûû`™9š`¬¬!!s‚Ûÿ´@„„ša€½¬ ¬$ $‚Û|ÿ¤@„„šb€Ç¬ ¬% %‚Ûÿ¤@„„šc¬¬ ¬& &‚Ûÿ¤@„¬„šd¬¬ ¬# #‚Ûsÿ¤@„„še¬¬' '¬. .‚Ü‚Ûÿ¤@„„šf¬ ¬( (¬/ /‚Ü‚Ûÿ¤@„„šg€Ç¬) )¬0 0‚Üÿ¤@„„šh†ë¬* *¬1 1‚Ü ÿ¤@„„ši¬ ¬+ +¬2 2‚Ü|ÿ¤@„„šj¬..¬..‚Ý€¬„ „šk¬..¬..‚݂݀¬„‚Ý ‚Ý„šl¬..¬..‚Ý€¬„„šm¬..¬..‚Ý€¬„„šn¬..¬..‚Ý€¬„ „šo¬..¬..‚Ý €¬„  „šp—¬9 9¬? ?‚Þ|ÿ¤@„„šq¨[¬: :¬A A‚Þ‚±ÿ¤@„„šr¬¬; ;¬E E‚Þ‚Üÿ¤@„„šs¬¬< <¬B B‚Þ‚Üÿ¤@„„št—x¬= =¬@ @‚Þ€œÿ¤@„„šu¬¬> >¬C C‚Þ ÿ¤@„„šv¬¬? ?¬D D‚Þ‚Ýÿ¤@„„šw¬¬@ @¬F F‚Þ‚Üÿ¤@„„šx¬ ¬A A¬G G‚Þ‚Ûÿ¤@„„šy¬LL¬LL‚߀¬„ „šz¬LL¬LL‚߂߀¬„‚ß ‚ß„š{¬LL¬LL‚߀¬„„š|¬LL¬LL‚߀¬„„š}¬LL¬LL‚߀¬„ „š~¬LL¬LL‚ß €¬„  „š—x¬W W¬r r‚à€œÿ¤@„„š€¬¬X X¬s s‚à|ÿ¤@„„š¬¬Y Y¬t t‚à‚áÿ¤@„„š‚¬¬Z Z¬v v‚à‚âÿ¤@„„šƒ¨[¬[ [¬w w‚à‚±ÿ¤@„„š„‚ó¬\\¬xx‚Ⴑ‚àÿ¤@„„š…¬¬] ]¬{{‚à€™ÿ¤@„„š†¬aa¬aa‚〬„ „š‡¬aa¬aa‚ã‚〬„‚㠂ㄚˆ¬aa¬aa‚〬„„š‰¬aa¬aa‚〬„„šŠ¬aa¬aa‚〬„ „š‹¬aa¬aa‚ã €¬„  „šŒ¬¬tt¬€§€§‚ä‚´ÿ¤@„ š¬¬uu¬€§€§ ‚´ ÿ¤@„ šŽ¬¬vv¬€§!€§0‚´‚äÿ¤@„ 𬠬xx¬€®€®‚ä{ÿ¤@„ š¬!¬€—€—¬€Æ€Æ‚å‚Õÿ¤@„ š‘¬#¬€˜€˜¬€Æ€Æ,‚Õ ÿ¤@„ š’¬$¬€™€™¬€Æ-€ÆB‚Õ‚åÿ¤@„ š“¬%¬€›€›¬€É€É‚å‚¢ÿ¤@„ š”¬&¬€¡€¡¬TT‚±‚ã‚ãÿ¤@„ š•¬'¬€¢€¢¬€Ï€Ï‚ã|‚ãÿ¤@„ š–¬(¬€¤€¤¬€Ñ€Ñn‚á‚àÿ¤@„ š—¬)¬€¬€¬¬€Ó€Ó‚Þ|ÿ¤@„ š˜¬*¬€®€®¬gg |‚ßÿ¤@„ ƒÂ¬¬ƒÂ€Ž€‚Ib„ ¬s‚Û€½„ ¬€½‚Û|€Ç„ ¬€Ç‚Û¬„ ¬¬‚Û¬„ ¬¬‚ÛsDŠŠŠÃÃûû™™ƒÃ¬ ¬""ƒÃ¬+¬## ‚Û¬,¬$$€¬-¬%%¬„ ¬ ¬‚܂۬ „ ¬ ¬ ‚܂ۀDŽ ¬ €Ç‚Ü†ë„ ¬ †ë‚Ü ¬ „ ¬ ¬ ‚Ü|DŠŠŠÄÄûû™™ƒÄ¬ ¬..ƒÄ‚ݬ.¬.¬//‚ݬ/¬/¬00‚ݬ0¬0¬11‚ݬ1¬1¬22„ ¬ ‚Ý„ ¬ ‚݂݄ ¬ ‚Ý„ ¬ ‚Ý„ ¬ ‚Ý„ ¬ ‚Ý  ‚ÝDŠŠŠÅÅûû™™ƒÅЬ44ƒÅ€œ¡¬55‚Ü¢¬5!56 £¬595=‚Ý¥¬5X5j€ÝŠŠ¬55DŠŠŠÆÆûû™™ƒÆ¬ ¬77ƒÆ€Ý¡¬88!‚±¢¬8$81‚Þ¬ ¬ ¬88 —„ ¬ —‚Þ|¨[„ ¬ ¨[‚Þ‚±¬„ ¬ ¬‚Þ‚ܬ„ ¬ ¬‚Þ‚Ü—x„ ¬ —x‚Þ€œ¬„ ¬ ¬‚Þ ¬„ ¬ ¬‚Þ‚ݬ„ ¬ ¬‚Þ‚ܬ „ ¬ ¬ ‚Þ‚ÛDŠŠŠÇÇûû™™ƒÇ¬¬GGƒÇÄ¡¬HH-‚⢬H0HA‚â¬2¬2¬HHp¡¬II#‚⢬I&I7‚â¬3¬3¬II|ê¬JJ‚â¬4¬4¬JJDŠŠŠÈÈûû™™ƒÈ¬¬LLƒÈ¬5¬MM  ¬6¬NN|¬7¬OO „ ¬‚ß„ ¬‚߂߄ ¬‚ß„ ¬‚ß„ ¬‚ß„ ¬‚ß  ‚ßDŠŠŠÉÉûû™™ƒÉ¬¬QQƒÉ€œ¡¬RR ‚⢬R#R4‚ߣ¬R7RJ‚ᬬ¬RRDŠŠŠÊÊûû™™ƒÊ¬¬TTƒÊ‚ᡬUU%‚±¢¬U(U5|£¬U8U>‚ବ¬UU—x„ ¬—x‚à€œ¬„ ¬¬‚à|¬„ ¬¬‚à‚ᬄ ¬¬‚à‚â¨[„ ¬¨[‚à‚±‚ó„ ¬‚ó‚Ⴑ‚଄ ¬¬‚à€™DŠŠŠËËûû™™ƒË¬¬aaƒË|¡¬bb‚㢬bb+‚ã¬8¬8¬bb|¡¬cc‚㢬cc)‚ã¬9¬9¬cc|ê¬dd‚ã¬:¬:¬dd„ ¬‚ã„ ¬‚ã‚ã„ ¬‚ã„ ¬‚ã„ ¬‚ã„ ¬‚ã  ‚ã¬;DŠŠŠÌÌûû™™ƒÌ¬¬ii ƒÌ  ¡¬j'j+‚Þ¢¬j.j:£¬j=j@¥¬jCjF‚ä¬<¬<¬jj ¡¬k'k+‚Þ¢¬k.k:£¬k=k@‚ä¬=¬=¬kk ¡¬l)l-‚Þ¢¬l0l<£¬l?lB€ï¥¬lElP€ï¦¬lSl^‚ä¬>¬>¬ll ¡¬mm‚Þ¢¬mm(£¬m+m.‚ä¬?¬?¬mm‚Þ¡¬nn¢¬n"n%£¬n(n+‚ä¬@¬@¬nn ¡¬o)o-‚Þ¢¬o0o<€ï£¬o?oW€ï¥¬oZoe‚ä¬A¬A¬oo ¡¬p*p.‚Þ¢¬p1p=‚ä¬B¬B¬pp‚Þ¡¬qq ¢¬q#q&‚ä¬C¬C¬qq‚¡¬rr‚㢬r"r0‚ä¬D¬D¬rr¬EDŠŠŠÍÍûû™™ƒÍ¢v¬~~ƒÍ‚â¬F¬‚߬G¬€€€€€í‚:¬H¬€€ ‚«¬I¬€‚€‚DŠŠŠÎÎûû™™ƒÎ¬J¬€„€„ƒÎµ¬K¬€†€†¬Lµ¬M¬€ˆ€ˆ¬N‚ݬO¬€Š€Š¬P ¬Q¬€‹€‹€¡¬R¬€Œ€Œ‚ܬS¬€€ ¬T¬€Ž€Ž‚«¬U¬€€¬VDŠŠŠÏÏûû™™ƒÏ¬"¬€“€“ƒÏ‚<꬀”€”‚å¬W¬W¬€”€” ‚æê¬€•€•‚å¡Ò¡Ò¬€•€• DŠŠŠÐÐûû™™ƒÐ¬X¬Y D OƒÐ¬ZDŠŠÐÑÒûý™¥ š™¬Y¬Y‚瀬„# „#šš¬Y¬Y‚ç‚瀬„#‚ç…ûA€Ž,5„€…û„#š›¬Y¬Y‚瀬„#€€„#šœ¬Y¬Y‚瀬„#„#š¬Y¬Y‚瀬„# €„#šž¬Y¬Y‚ç €¬„# €€ „#šŸ¬Y¬Y‚ç €¬„#  „#š ¬Y¬Y‚ç‚ç €¬„#$‚ç…üA€Ž,5„€…ü „#š¡¬\¬Y¬Y€ó €¤„$š¢¬]¬Y¬Y€óÀ€¤„$š£¬^¬Y¬Y€¤¬_„$š¤¬`¬Y00¬Y00€¤„$ƒÑ¬[¬YƒÑ‚ç¬a¬a¬Y„$¬[‚ç„$¬[‚ç‚ç„$¬[‚ç„$¬[‚ç„$¬[‚ç„$¬[‚ç „$¬[‚ç „$¬[‚ç‚ç $‚ç ‚çDŠŠ¬XÒÒýý¥¥ƒÒ¬b¢_DRƒÒ¬cDŠŠyÓÓýý¥§š¥¬d¢_  ¬e„ЄЀ˜SSÿ¤@„%š¦¬f¢_  ¬e€Ú€Ú‚Þ|ÿ¤@„%ƒÓ›§¬gDQƒÓ¬hDŠŠÔÕýý§¬š§¬d¬g  ¬i‚¸‚¸€˜SSÿ¤@„&š¨¬j¬g¬i€’€’æ|||ÿ¤@„&š©¬k¬g¬i€€æ|ÿ¤@„&šª¬l¬g ¬i€‹€‹ €˜æÿ¤@„&š«¬m¬g¬i€ € æ‚â|ÿ¤@„&ƒÔ™Ù¬g  ƒÔDŠŠ›§ÕÕýý¬¬ƒÕ›A¬n5@ƒÕ¬oD ÖÖýÿ¬°š¬¬p¬n  ¬q##?ÿ¤@„'š­¬r¬n ¬q  …ý-¬n&(„„(…ý…ýÿ¤@-¬n&(„'š®¬t¬n ¬q …þ-¬n%'„„(…þ…þÿ¤@-¬n%'„'š¯¬u¬n ¬q ÿ¤@„'ƒÖx¬v ƒÖ@Û×ÿƒ° ƒ×y¬vƒ×xúÚØÿƒ°  š°¬w¬w…ÿA¬w„?…ÿ…ÿ…ÿ‚´A¬w¬x¬w+¬y¬w;L¬z¬wXiš±‚ï¬w%%¬w%%†A¬w„†€¤A¬wš²¬w&&¬w&&†A¬w„?††€´A¬w“¿¬w& & š³¬{¬w( (¬w( (†A¬w„††€¤A¬wš´¬|¬w**#¬w**#†A¬w„††€¤A¬wšµ¬}¬w++"¬w++"†A¬w„††€¤A¬wš¶¬~¬w. .¬w. .†A¬w„†††€¤A¬wˆú¬w..¬𷬀¬w/ /¬w/ /†A¬w„†††€¤A¬w›¬w//š¸¬¬‚¬w33¬w33†A¬w„†„)†€´¬„††A¬„P„„)†A¬w¬…𹬬†¬w55¬w55† A¬w„† ‚耴¬‚é‚èA¬wšº¬‰¬w""¬w""† A¬w„† † ‚¼A¬wš»Ÿã¬w¬w† A¬w„‚´A¬wxy†ô ƒØz¬Š  !ƒØxy Ùä 8¼ïƒÙެР" )ƒÙxyzŠÚà !¼Õ𼬋¬Š ¬Œ ]™™ÿ¤@Ü£„¬Š¬Üš½¬Ž¬Š ¬Œ ]™ÿ¤@ܬܚ¾¬¬Š ¬Œ ]™ÿ¤@ܬ‘Üš¿¬’¬Š ¬Œ  ]™ÿ¤@ܬ“ÜšÀ¬”¬Š ¬Œ ]™ÿ¤@ܬ•ÜšÁ¬–¬Š ¬Œ! !]™™ÿ¤@ܬ—ܚ¬˜¬Š! !¬Œ ]ÿ¤@ܬ™ܚ욬Š# #¬Œ" "† †ß¬Š##„]† ÿ¤@܆߬Š##¬›ܚĕŬŠ% %¬Œ ]ÿ¤@ܬœܚŬ¬Š, ,¬Œ22† •»¬Š* *$„؆ ÿ¤@Ø•»¬Š* *$¬žؚƬŸ¬Š. .¬Œ55†•»¬Š* *$„؆]ÿ¤@Ø•»¬Š* *$¬ ؚǬ¡¬Š0 0¬Œ33†•»¬Š* *$„؆ÿ¤@Ø•»¬Š* *$¬¢ؚȬ£¬Š2 2!¬Œ66#†•»¬Š* *$„؆ÿ¤@Ø•»¬Š* *$¬¤ؚɬ¥¬Š4 4¬Œ44†•»¬Š* *$„؆†ÿ¤@Ø•»¬Š* *$¬¦ؚʬ§¬Š6 6¬Œ77†•»¬Š* *$„؆ÿ¤@Ø•»¬Š* *$¬¨ؚ˚¶¬Š8 8¬Œ88†•»¬Š* *$„؆ÿ¤@Ø•»¬Š* *$¬©ؚ̬ª¬Š` `¬Œññ†•»¬Š<<„à††ÿ¤@à•»¬Š<<ɬŠ``ʬŠ`:`@ˬŠ`S`]¬«àšÍ¬Šcc¬Šcc$€¬„,„,šÎ¬Šcc¬Šcc$€¬„, „,šÏ¬Šcc¬Šcc$ €¬„,  „,šÐ¬Šee(¬Šee($€¬„-„-šÑ¬Šee(¬Šee($€¬„- „-šÒ¬Šee(¬Šee($ €¬„-  „-ƒÚ¤¬ŠƒÚ€Ž€‚Ib ¬‹„.¤¬‹]™™¬Ž„.¤¬Ž]™¬„.¤¬]™¬’„.¤¬’]™¬”„.¤¬”]™¬–„.¤¬–]™™¬˜„.¤¬˜]¬š„.¤¬š††ß¬Š##„]†•Å„.¤•Å]xyzŽÛÛÓÓƒÛ†•»¬Š* *$„¬Š**ƒÛ€Ž€‚Ib¬„.¬†•»¬Š* *$„؆¬Ÿ„.¬Ÿ†•»¬Š* *$„؆]¬¡„.¬¡†•»¬Š* *$„؆¬£„.¬£†•»¬Š* *$„؆¬¥„.¬¥†•»¬Š* *$„؆†¬§„.¬§†•»¬Š* *$„؆š¶„.𶆕»¬Š* *$„؆¬®xyzŽÜÜÓӃ܆•»¬Š<<„ǬŠ<<ƒÜ€Ã]¬¯¬Š>>¬°¬±¬Š@@¬²†±¬ŠBB¬³†¬´¬ŠDD¬µ€–¬¶¬ŠFF¬·€–¬¸¬ŠHH¬¹€–¬º¬ŠJJ¬»€–¬¼¬ŠLL¬½€–¬¾¬ŠNN ¬¿€–¬À¬ŠPP¬Á€–¬Â¬ŠRR"¬Ã€–¬Ä¬ŠTT$¬Å€–¬Æ¬ŠVV"¬Ç؆¬È¬ŠXX¬É¬Ê¬ŠZZ¬Ë¬Ì¬Š\\¬Í¬ª„.Ǭª†•»¬Š<<„à††¬ÎxyzŽÝÝ  ÓӃݬ¬¬ŠccƒÝ„.¬¬$„.¬¬$„.¬¬$  $¬ÏxyzŽÞÞ  ÓÓ@¬Šcc ƒÞ¬­¬Šee(ƒÞ„.¬­$„.¬­$„.¬­$  $¬ÐxyzŽßß  ÓӃ߬ѬŠmmƒß¬ÒxyzŽàà !ÓÕšÓ¬Šoo¬Œöö† •»¬Šo,o0„؆ ÿ¤@•»¬Šo,o0¬Ó„/šÔ¬Ô¬Šqq¬Œõõÿ¤@¬Õ„/ƒà{¬Ö"(ƒàxyzð áä!8ÕïšÕŽK¬Ö ¬×##™ÿ¤@‚K¬Ø‚KšÖŽ9¬Ö ¬×$$™ÿ¤@‚K¬Ù‚Kš×¬Ú¬Ö ¬×%%™ÿ¤@‚K¬Û‚KšØ¬Ü¬Ö" "¬×&&™ÿ¤@‚K¬Ý‚KšÙ¬Þ¬Ö$ $%¬×((*™ÿ¤@‚K¬ß‚KšÚŽ:¬Ö& &¬×))™ÿ¤@‚K¬à‚KšÛ¬á¬Ö( (¬×**™™ÿ¤@‚K‚KšÜ¬â¬Ö+ +¬×//™™ÿ¤@‚K†¬Ö++¬ã‚KšÝ¬ä¬Ö- -¬×00 ™™ÿ¤@‚K¬å¬Ö--¬æ‚KšÞ¬ç¬Ö/ /¬×11!™™ÿ¤@‚K‚Kšß¬è¬Ö2 2¬×33%™™ÿ¤@‚K¬é¬Ö2!2(Œ™¬Ö2/23¬ê‚Kšà‚ï¬Ö55¬×88™ÿ¤@‚K¬ë‚Kšá¬ì¬Ö77¬×??™ÿ¤@‚K¬é¬Ö77&‚Kšâ•–¬Ö= =¬×pp†!‹-¬Ö;;#„†!™ÿ¤@‹-¬Ö;;#¬íšã¬î¬Ö= =¬×qq†"‹-¬Ö;;#„†"™ÿ¤@‹-¬Ö;;#¬ïšä•³¬Ö? ?¬×tt†#‹-¬Ö;;#„†#™ÿ¤@‹-¬Ö;;#¬ðšå¬ñ¬Ö? ?¬×uu†$‹-¬Ö;;#„†$™ÿ¤@‹-¬Ö;;#¬òšæ¬ó¬ÖA A¬×ww†%‹-¬Ö;;#„†%†%ÿ¤@‹-¬Ö;;#¬ôšç¬õ¬ÖDD¬×€€"†&‹-¬Ö;;#„ÿ¤@‹-¬Ö;;#¬öšè¬÷¬ÖG G¬×yy&†'‹-¬Ö;;#„†'‚Êÿ¤@‹-¬Ö;;#¬øšé¬ù¬ÖJ J¬×€…€…†(‹-¬Ö;;#„†( ÿ¤@‹-¬Ö;;#¬úšê¬û¬ÖJ J¬×€†€††)‹-¬Ö;;#„†) ÿ¤@‹-¬Ö;;#¬üšë¬ý¬ÖMM¬×€¥€¥†*‹-¬Ö;;#„ÿ¤@‹-¬Ö;;#¬þšì¬ÿ¬ÖOO¬×€”€”"†+‹-¬Ö;;#„†+†+ÿ¤@‹-¬Ö;;#­ší‚ó¬ÖTT¬×  €–€–¡ÿ¤@‚U‚Ušî¬ª¬ÖV V¬×¡ÿ¤@‚U­¬ÖVV#­‚UƒáŒ:¬Öƒá€Ž€‚Ib ŽK„0Œ:ŽK™Ž9„0Œ:Ž9™¬Ú„0Œ:¬Ú™¬Ü„0Œ:¬Ü™¬Þ„0Œ:¬Þ™Ž:„0Œ:Ž:™¬á„0Œ:¬á™™¬â„0Œ:¬â™™¬ä„0Œ:¬ä™™¬ç„0Œ:¬ç™™¬è„0Œ:¬è™™‚ï„0Œ:‚ì„0Œ:¬ì™­xyz{ââ,,ïïƒâ†,‹-¬Ö;;#„|¬Ö;;ƒâ€Ž€‚Ib •–„0|•–†-‹-¬Ö;;#„†-™¬î„0|¬î†.‹-¬Ö;;#„†.™•³„0|•³†/‹-¬Ö;;#„†/™¬ñ„0|¬ñ†0‹-¬Ö;;#„†0™¬ó„0|¬ó†1‹-¬Ö;;#„†1†1¬õ„0|¬õ†2‹-¬Ö;;#„¬÷„0|¬÷†3‹-¬Ö;;#„†3‚ʬù„0|¬ù†4‹-¬Ö;;#„†4 ¬û„0|¬û†5‹-¬Ö;;#„†5 ¬ý„0|¬ý†6‹-¬Ö;;#„¬ÿ„0|¬ÿ†7‹-¬Ö;;#„†7†7­xyz{ãã88ïïƒã–=¬ÖSSƒã€Ž€‚Ib‚ó„0–=‚ó€–€–¡¬ª„0–=¬ª¡­xyz{ää88ïïƒä’Æ­!!-ƒäxysåë8Aïšï­==­==‚ꀬ„1„1šð­==­==‚ꀬ„1 „1šñ­==­==‚ê €¬„1  „1šò­­\\­ kk‚ëiÿ´@„2­ „2šó­ ­``­ ll‚ëÿ´@„2­ „2šô­­cc­ mm‚ëÿ´@„2­„2šõ“ß­€î€î­ €ñ€ñ‚ìÿ¤@„3„3ƒå­­==ƒåƒ/€¡º‚)€è€…4€­‚ê­­­A Aê­BB‚ê­­­B Bê­CC‚ê­­­C C„4­‚ê„4­‚ê„4­‚ê  ­xy’Æææ88ööƒæ…c­IIƒæ€ç€…3€¬€è€…4€­ ¡­MM¢­MM £­MM i­­­MM  ¡­NNi¢­NN £­NN#i¥­N&N, ¦­N/N3‚ê§­N6N;i½½­NN ¡­OO¢­OO.i£­O1O7i­­­OO ­xy’Æçç88ööƒç­ ­VVƒç„4­ ­‚ëi„4­ ­ ‚ë„4­ ­‚ë­„4­ ­‚ëi­ „4­ ­ ‚ë­„4­ ­‚ëxy’Æèè88ööƒè­­t tƒè­xy’Æàéé8<öšö–Y­w w­ €Ž €Žiÿ¤@­„5š÷–[­y y­ € €i ÿ¤@…d­yy­„5šø­­~ ~­ €ˆ €ˆiÿ¤@• ­~~­„5šù–\­€ €­ €Š €Šiÿ¤@Žý­€€­„5šú–]­€ƒ €ƒ­ €‹ €‹iÿ¤@Žý­€ƒ€ƒ­„5šû–^­€… €…­ €Œ €Œiÿ¤@Žý­€…€…­ „5šü–_­€‡ €‡­ € €iÿ¤@Žý­€‡€‡­!„5šý–`­€Š€Š­ €¤ €¤iiiÿ¤@­"­€Š€Š ­#­€Š+€Š2­$„5šþ–a­€Œ€Œ­ €¥ €¥iiiÿ¤@­"­€Œ€Œ ­#­€Œ+€Œ2­%„5šÿ–b­€Ž€Ž­ €¦ €¦iiiÿ¤@­"­€Ž€Ž ­#­€Ž+€Ž2­&„5›–c­€€­ €§ €§iiiÿ¤@­"­€€ ­#­€+€2­'„5›–f­€’€’­ €¨ €¨iiiÿ¤@­"­€’€’ ­#­€’+€’2­(„5›–g­€”€”­ €© €©iiiÿ¤@­"­€”€” ­#­€”+€”2­)„5›–h­€–€–­ €ª €ªiiiÿ¤@­"­€–€– ­#­€–+€–2­*„5›–i­€™ €™­ €´ €´iiÿ¤@­+­€™€™ ­,„5›–j­€œ €œ­ €¶ €¶iiÿ¤@­+­€œ€œ ­-„5›–k­€Ÿ €Ÿ­ €µ €µiiÿ¤@­+­€Ÿ€Ÿ ­.„5›–l­€¢ €¢­ €· €·iiiÿ¤@­"­€¢€¢ ­+­€¢+€¢2­/„5›–m­€¥ €¥­ €¸ €¸iiÿ¤@…c­€¥€¥­0„5› ­1­€§ €§­ €Å €Åiiÿ¤@…d­€§€§%­2„5› ’ý­€© €©­ €Ç €Çiiÿ¤@…d­€©€©­3„5› –n­€« €«­ €¹ €¹iiÿ¤@­+­€«€« ­4„5› –o­€­ €­­ €— €—iiiÿ¤@­"­€­€­ ­#­€­+€­2­5„5› –p­€¯ €¯­ €º €ºiiÿ¤@­+­€¯€¯ ­6„5›–q­€² €²­ €¿ €¿†8A­€²#€²%„†8i†8iÿ¤@A­€²#€²%­7­€²€²!• ­€²4€²9­8„5›–r­€´ €´­ €Ã €Ã†9A­€´#€´%„†9i†9iÿ¤@A­€´#€´%­7­€´€´!• ­€´4€´9­9„5›­:­€· €·­ €Ÿ €Ÿiiÿ¤@Žý­€·€·­;­€·&€·*…d­€·E€·K­<„5›­=­€¼ €¼­ €× €×†:A­€¼ €¼"„†;ƒú­€¼9€¼?„†:i†;†:†;†;iÿ¤@A­€¼ €¼"ƒú­€¼9€¼?­7­€¼€¼­>­€¼1€¼7•¶­€¼\€¼a­€¼l€¼q­?„5ƒé­­€Ü €Üƒé€ç€…3€¬€è€…4€­ ­@­€Ý €Ý ­A­€Þ €Þ‚ëi­B­€â €â­C­€ã €ã‚í­E­€æ €æ‚’§ ­€ç €ç­F­€è €è­G­€é €é­H­€ê €ê­I­€ë €ë ­J­€ì €ì ­K­€í €í“ß„4­“ß‚ì­Lxy’Æêê<<ƒêC­€ø €øƒê­Mxy’Æ"ëë<A›­N­ ­ „† „††A­=?„‚ì†>iÿ¤@A­=?Œ\­%• ­7<„7›­T­ ­ „q „q‚ìiiÿ¤@Œ\­%…d­7=„7›­U­ ­ „x „x‚ì?iÿ¤@Œ\­%­Q­7=…d­LR„7›­V­ ­ „„ „„†?A­=?„‚ì†?ÿ¤@A­=?Œ\­%• ­7<„7›­W­ ­ „| „|‚ìiÿ¤@Œ\­%…d­7=­X„7›­Y­ ­ „ „†@A­?A„‚ì†@iÿ¤@A­?AŒ\­ '• ­9>„7ƒë­Z­[ƒëL€Œ€ö€÷€ö€ö­\xyhììAO5›¢­[­]†AA­[„0†Aÿ¤@A­[­^„8›–ß­[ ­] †BA­[„0†B†Bÿ¤@A­[­_„8›­`­[  ­] †CA­[  „0†C†Cÿ¤@A­[  ­a„8›£•­[##­]†DA­[##„†D0†Dÿ¤@A­[##­b„8› ­[&& ­] †EA­[&&„†E0†Eÿ¤@A­[&&­c„8›­d­[))­]&&†FA­[))„0†F0†F0†Fÿ¤@A­[))­e„8› ­f­[,,­]%%†GA­[,,„0†G0†Gÿ¤@A­[,,­g„8›!£‚­[00 ­](( †HA­[00„0†H0†Hÿ¤@A­[00­h„8›"­i­[33 ­]55 †IA­[33„0†I0†Iÿ¤@A­[33­j„8›#­k­[66 ­].. †JA­[66„0†J†Jÿ¤@A­[66­l„8›$£ñ­[99 ­] †KA­[99„0†K0†Kÿ¤@A­[99­m„8›%¢³­[<<­]77†LA­[<<„0†L†Lÿ¤@A­[<<­n„8›&”ê­[??­]==†MA­[??„†M0†Mÿ¤@A­[??­o„8›'•­[DD ­]€µ€µ †NA­[DD„†OP­[DD„†N†O†N†N0†O†Nÿ¤@A­[DDP­[DD­p„8›(£¼­[II­]€®€®†PA­[II„†QP­[II„†P†Q†Q0†P†Q†Qÿ¤@A­[IIP­[II­q„8›)•­[LL ­]FF †RA­[LL„†R0†Rÿ¤@A­[LL­r„8›*•­[PP ­]JJ †SA­[PP„†TP­[PP„†S†T0†S0†Tÿ¤@A­[PPP­[PP­s„8›+­t­[UU ­]€€€€ †UA­[UU„†VP­[UU„†U†V0†U0†Vÿ¤@A­[UUP­[UU­u„8›,­v­[ZZ ­]€‡€‡ †WA­[ZZ„†XP­[ZZ„†Yˆ¬­[ZZ„†W†X†Y0†W0†X0†Yÿ¤@A­[ZZP­[ZZˆ¬­[ZZ­w„8›-£É­[^^ ­]YY †ZA­[^^„†Z0†Zÿ¤@A­[^^­x„8›.¢¬­[cc ­]QQ †[A­[cc„†\P­[cc„†[†\0†[0†\ÿ¤@A­[ccP­[cc­y„8›/¢¢­[hh­]^^†]A­[hh„†] 0†] ÿ¤@A­[hh­z„8›0¢ ­[mm­]cc†^A­[mm„†^ 0†^ ÿ¤@A­[mm­{„8›1¢£­[qq­]€˜€˜†_A­[qq„†_ 0†_0†_ÿ¤@A­[qq­|„8›2£Ê­[vv­]€Ÿ€Ÿ†`A­[vv„†` 0†`0†`0†`ÿ¤@A­[vv­}„8›3¢±­[{{­]€€†aA­[{{„†bP­[{{„†a†b0†a0†bÿ¤@A­[{{P­[{{­~„8›4”ÿ­[ ­]jj †cA­[„†c 0†c†cÿ¤@A­[­„8›5•­[€ƒ€ƒ­]yy†dA­[€ƒ€ƒ„†d 0†d†dÿ¤@A­[€ƒ€ƒ­€„8›6­­[€‡€‡­]qq†eA­[€‡€‡„†fP­[€‡€‡„†e†f0†e†fÿ¤@A­[€‡€‡P­[€‡€‡­‚„8›7­ƒ­[€Š€Š ­]€§€§ †gA­[€Š€Š„0†g0†gÿ¤@A­[€Š€Š­„„8›8­…­[€€ ­]€À€À †hA­[€€„†h†h0†hÿ¤@A­[€€­†„8›9­‡­[€€­]€Á€Á†iA­[€€„†j¢¥­[€=€A„ †i†j0†iÿ¤@A­[€€¢¥­[€=€A­ˆ„8›:£­[€“€“­]€¼€¼†kA­[€“€“ „0†k†kÿ¤@A­[€“€“ ­‰„8›;ª ­[€•€•­]€½€½†lA­[€•€•„†l0†lÿ¤@A­[€•€•­Š„8›<­‹­[€—€— ­]€¾€¾ †mA­[€—€—„0†m†mÿ¤@A­[€—€—­Œ„8›=­­[€›€›­]€Ä€Ä†nA­[€›€›„†oP­[€›€›„†n†o 0†n0†o ÿ¤@A­[€›€›P­[€›€›­Ž„8›>•­[€ € ­]€Ê€Ê†pA­[€ € „†p 0†pÿ¤@A­[€ € ­„8›?­­[€¥€¥­]€Î€Î†qA­[€¥€¥„†q 0†qÿ¤@A­[€¥€¥­‘„8›@­’­[€ª€ª­]€Þ€Þ†rA­[€ª€ª„†r†r†r0†r†rÿ¤@A­[€ª€ª­“„8›A­”­[€¯€¯­]€ã€ã†sA­[€¯€¯„†s†s†s0†s†sÿ¤@A­[€¯€¯­•„8›B­–­[€¶€¶ ­]€è€è †t•¶­[€¶€¶„†u”Ñ­[€¶€¶„†v”Ò­[€¶!€¶$„†t†u†v†t†t0†u0†v†tÿ¤@•¶­[€¶€¶”Ñ­[€¶€¶”Ò­[€¶!€¶$­—„8›C­˜­[€¼€¼­]€ñ€ñ†w¡­[€¼€¼„†x¢­[€¼€¼„†yP­[€¼#€¼%„†w†x†y†y0†w0†x†y†yÿ¤@¡­[€¼€¼¢­[€¼€¼P­[€¼#€¼%­™„8›D£E­[€À€À­]€ú€ú†zA­[€À€À„†{P­[€À€À„†z†{ 0†z0†{ ÿ¤@A­[€À€ÀP­[€À€À­š„8›E¢–­[€Ã€Ã­]†|A­[€Ã€Ã „0†| ÿ¤@A­[€Ã€Ã ­›„8›F­œ­[€È€È­]†}A­[€È€È„†~P­[€È€È!„†}†~0†}0†~ÿ¤@A­[€È€ÈP­[€È€È!­„8›G­ž­[€Î€Î ­]  †A­[€Î€Î„†€P­[€Î€Î „†ˆ¬­[€Î$€Î&„††€†0†0†€0†ÿ¤@A­[€Î€ÎP­[€Î€Î ˆ¬­[€Î$€Î&­Ÿ„8›H­ ­[€Ñ€Ñ ­]!! †‚P­[€Ñ€Ñ„†ƒA­[€Ñ€Ñ„†‚†ƒ†‚†‚0†ƒ0†‚ÿ¤@P­[€Ñ€ÑA­[€Ñ€Ñ­¡„8›I­¢­[€Ô€Ô­]%%†„A­[€Ô€Ô„†…ˆ¬­[€Ô€Ô„†„†…†…0†„†…0†…ÿ¤@A­[€Ô€Ôˆ¬­[€Ô€Ô­£„8›J¢š­[€×€×­]))††A­[€×€×„††0††ÿ¤@A­[€×€×­¤„8›K­¥­[€Û€Û­]..†‡A­[€Û€Û„†‡ 0†‡ÿ¤@A­[€Û€Û­¦„8›L­§­[€ß€ß­]22†ˆA­[€ß €ß"„†ˆ 0†ˆÿ¤@A­[€ß €ß"­¨„8›M­©­[€ã€ã ­]66 †‰A­[€ã€ã„†ŠP­[€ã-€ã/„0†‰0†Š0†‰†Šÿ¤@A­[€ã€ãP­[€ã-€ã/­ª„8›N­«­[€æ€æ ­];; †‹A­[€æ€æ„†ŒP­[€æ!€æ#„0†‹†Œ0†‹0†Œÿ¤@A­[€æ€æP­[€æ!€æ#­¬„8ƒì†A¬w„†ô¬wƒì ­­¬w xy†ô†­®¬wxy†ô†­¯¬wxy†ô­°¬wxy†ô†M¬w$$xy†ô­±¬wxy „9†ô†ŽA¬w„?†Ž†Ž†Ž‚ï„9†ô‚ï†A¬w„†„9†ô†A¬w„?††¬{„9†ô¬{†‘A¬w„†‘†‘¬|„9†ô¬|†’A¬w„†’†’¬}„9†ô¬}†“A¬w„†“†“¬~„9†ô¬~†”A¬w„†”†”†”¬€„9†ô¬€†•A¬w„†•†•†•Ÿã„9†ôŸã†–A¬w„‚鄆­²xyíí——OOƒí­³¬w88ƒíL€Œ€ö€÷€ö€ö­´xy¸îî—§O]›OM¬w99 ¬w99 †—A¬w99„†—ÿ¤DA¬w99„:›P­µ¬w:: ¬w:: †˜€”¬w::†˜†˜€¤€”¬w::€Ö¬w::„:›Q•¬w; ;¬w; ;†™€”¬w; ;!†™†™€¤€”¬w; ;!]¬w;;€Ö¬w;;„:›R•¬w< <¬w< <†š€”¬w<< †›€”€•P†š†›†š†›€¤€”¬w<< €”€•P]¬w<<€Ö¬w<<„:›S¢¢¬w= =¬w= =†œ€”¬w="=#†œ †œ €¤€”¬w="=#]¬w==€Ö¬w==„:›T¢£¬w> >¬w> >†€”¬w>">#† ††€¤€”¬w>">#]¬w>>€Ö¬w>>„:›U£¼¬w? ?¬w? ?†ž€”¬w?$?%†Ÿ€”€•P†ž†Ÿ†Ÿ†ž†Ÿ†Ÿ€¤€”¬w?$?%€”€•P]¬w??€Ö¬w??”²¬w?(?+„:›V¢ ¬w@@¬w@@† €”¬w@@†  †  €¤€”¬w@@]¬w@@€Ö¬w@@„:›W”ê¬wAA¬wAA†¡€”¬wAA†¡†¡€¤€”¬wAA€Ö¬wAA„:›X¢³¬wBB¬wBB†¢€”¬wBB†¢†¢€¤€”¬wBB€Ö¬wBB„:›Y•¬wCC¬wCC†£€”¬wCC †£ †£†£€¤€”¬wCC ]¬wCC€Ö¬wCC„:›Z­¶¬wDD ¬wDD †¤€”€•P†¤†¤€¤€”€•P€Ö¬wD D „:›[­·¬wEE¬wEE†¥€”¬wEE †¥†¥†¥€¤€”¬wEE €Ö¬wEEˆú¬wE#E$„:›\­d¬wFF¬wFF†¦€”¬wF.F/†¦†¦†¦€¤€”¬wF.F/€Ö¬wFF›¬wF!F#„:ƒî†§A­¸€Î€Î„‹F­¸€Î€Îƒî†§xyï﨨]]ƒï­¹­¸€Ñ€ÑƒïL€Œ€ö€÷€ö€ö­ºxyðð¨×]~!›]M­¸€Ò€Ò ­¸€Ò€Ò †¨A­¸€Ò€Ò„†¨ÿ¤DA­¸€Ò€Ò„;›^­»­¸€Ó€Ó­¸€Ó€Ó†©A­¸€Ó€Ó„†©?†©?†©†©€¤A­¸€Ó€Ó]­¸€Ó€Ó€Ö­¸€Ó)€Ó*„;›_¢¢­¸€Ô€Ô­¸€Ô€Ô†ª€”­¸€Ô€Ô†ª ?†ª €¤€”­¸€Ô€Ô]­¸€Ô€Ô€Ö­¸€Ô€Ô„;›`¢£­¸€Õ€Õ­¸€Õ€Õ†«€”­¸€Õ€Õ†« ?†«†«€¤€”­¸€Õ€Õ]­¸€Õ€Õ€Ö­¸€Õ€Õ„;›a•­¸€Ö€Ö ­¸€Ö€Ö †¬€”€•P†­€”­¸€Ö€Ö †¬†­†¬†¬?†­†¬€¤€”€•P€”­¸€Ö€Ö ]­¸€Ö €Ö”²­¸€Ö€Ö€Ö­¸€Ö€Ö„;›b­–­¸€×€× ­¸€×€× †®€”€•P†¯€”­¸€× €×!†°€”­¸€×0€×1†®†¯†°†®†®?†¯?†°†®€¤€”€•P€”­¸€× €×!€”­¸€×0€×1]­¸€×€×”²­¸€×€×€Ö­¸€×€×ˆú­¸€×%€×&„;›c£¼­¸€Ø€Ø­¸€Ø€Ø†±€”­¸€Ø€Ø †²€”€•P†±†²†²?†±†²†²€¤€”­¸€Ø€Ø €”€•P]­¸€Ø€Ø€Ö­¸€Ø€Ø”²­¸€Ø#€Ø&„;›d­˜­¸€Ù€Ù­¸€Ù€Ù†³€”­¸€Ù €Ù!†´€”­¸€Ù0€Ù1†µ€”€•P†³†´†µ†µ?†³?†´†µ†µ€¤€”­¸€Ù €Ù!€”­¸€Ù0€Ù1€”€•P]­¸€Ù€Ù€Ö­¸€Ù€Ùˆú­¸€Ù%€Ù&”²­¸€Ù4€Ù7„;›e­v­¸€Ú€Ú ­¸€Ú€Ú †¶€”­¸€Ú€Ú†·€”­¸€Ú+€Ú,†¸€”€•P†¶†·†¸?†¶?†·†¸€¤€”­¸€Ú€Ú€”­¸€Ú+€Ú,€”€•P]­¸€Ú €Ú€Ö­¸€Ú€Úˆú­¸€Ú €Ú!„;›f¢ ­¸€Û€Û­¸€Û€Û†¹€”­¸€Û€Û†¹ ?†¹ €¤€”­¸€Û€Û]­¸€Û€Û€Ö­¸€Û€Û„;›g£E­¸€Ü€Ü­¸€Ü€Ü†º€”­¸€Ü€Ü †»€”­¸€Ü0€Ü1†º†» ?†º?†» €¤€”­¸€Ü€Ü €”­¸€Ü0€Ü1]­¸€Ü€Ü—­¸€Ü€Ü—Ž­¸€Ü$€Ü&„;›h­t­¸€Ý€Ý ­¸€Ý€Ý †¼€”­¸€Ý€Ý†½€”­¸€Ý.€Ý/†¼†½?†¼?†½€¤€”­¸€Ý€Ý€”­¸€Ý.€Ý/]­¸€Ý€Ý—­¸€Ý€Ý—Ž­¸€Ý"€Ý$„;›i£Ê­¸€Þ€Þ­¸€Þ€Þ†¾€”­¸€Þ €Þ!†¾ ?†¾†¾†¾€¤€”­¸€Þ €Þ!]­¸€Þ€Þ€Ö­¸€Þ€Þ„;›j­¼­¸€ß€ß­¸€ß€ß?€¤€Ö­¸€ß€ß„;›k­½­¸€à€à­¸€à€à†¿A­¸€à€à!„†¿?†¿€¤A­¸€à€à!]­¸€à€à€Ö­¸€à+€à,„;›l­«­¸€á€á ­¸€á€á †À€”€•P†Á€”€•P?†À†Á†À†Á€¤€”€•P€”€•P€Ö­¸€á€á„;›m­¾­¸€â€â­¸€â€â†Â€”­¸€â5€â6?†Â?†Â €¤€”­¸€â5€â6€Ö­¸€â€âˆú­¸€â*€â+„;›n•­¸€ã€ã­¸€ã€ã†Ã€”­¸€ã€ã†Ã ?†Ã†Ã€¤€”­¸€ã€ã]­¸€ã€ã€Ö­¸€ã€ã„;›o­f­¸€ä€ä­¸€ä€ä†Ä€”€•P?†Ä†Ä€¤€”€•P€Ö­¸€ä€ä„;›p¢–­¸€å€å­¸€å€å†Å€”­¸€å€å?†Å €¤€”­¸€å€å€Ö­¸€å€å„;›q­¶­¸€æ€æ ­¸€æ€æ †Æ€”€•P†Æ†Æ€¤€”€•P€Ö­¸€æ €æ „;›r­¿­¸€ç€ç ­¸€ç€ç †Ç€”€•P †È€”€•P?†Ç†È%†Ç†È€¤€”€•P€”€•P€Ö­¸€ç€ç„;›s¢­¸€è€è­¸€è€è†É€”­¸€è€è?†É€¤€”­¸€è€è€Ö­¸€è€è„;›t•­¸€é€é ­¸€é€é †Ê€”­¸€é€é†Ë€”€•P†Ê†Ë?†Ê†Ë€¤€”­¸€é€é€”€•P]­¸€é €é €Ö­¸€é€é„;›u¢¬­¸€ê€ê ­¸€ê€ê †Ì€”­¸€ê€ê†Í€”€•P†Ì†Í?†Ì†Í€¤€”­¸€ê€ê€”€•P]­¸€ê €ê€Ö­¸€ê€ê„;›v•­¸€ë€ë ­¸€ë€ë †Î€”­¸€ë€ë†Î?†Î€¤€”­¸€ë€ë]­¸€ë €ë€Ö­¸€ë€ë„;›w£É­¸€ì€ì ­¸€ì€ì †Ï€”­¸€ì€ì†Ï?†Ï€¤€”­¸€ì€ì]­¸€ì€ì€Ö­¸€ì€ì„;›x¢³­¸€í€í­¸€í€í†Ð€”­¸€í€í?†Ð?†Ð€¤€”­¸€í€í€Ö­¸€í€í„;›y­µ­¸€î€î ­¸€î€î †Ñ€”­¸€î€î†Ñ†Ñ€¤€”­¸€î€î€Ö­¸€î€î„;›z­d­¸€ï€ï­¸€ï€ï†ÒA­¸€ï€ï„?†Ò?†Ò†Ò€¤A­¸€ï€ï•­¸€ï€ï•­¸€ï#€ï%„;›{”ê­¸€ð€ð­¸€ð€ð†Ó€”€•P†Ó†Ó€¤€”€•P‰U­¸€ð€ð„;›| ­¸€ñ€ñ ­¸€ñ€ñ †Ô€”€•P†Ô†Ô€¤€”€•P†­¸€ñ €ñ]­¸€ñ€ñ„;›}­©­¸€ò€ò ­¸€ò€ò †Õ€”­¸€ò€ò†Ö€”­¸€ò(€ò)?†Õ?†Ö†Õ†Ö€¤€”­¸€ò€ò€”­¸€ò(€ò)€Ö­¸€ò €òˆú­¸€ò€ò„;ƒð”Ø­À#+ƒð­Áxyîñò××~‡ ›~­À ­À $€¬„<„<›­À ­À $€¬„< „<›€­À ­À $ €¬„<  „<›­Ã­À­Ä ÿ¤@­Å„=›‚­Æ­À  ­Ä##ÿ¤@­Ç„=›ƒ­È­À­Ä**ÿ¤@­É„=›„­Ê­À­Ä ÿ¤@­Ë„=›…­Ì­À­Ä22ÿ¤@­Í„=›†­Î­À­Ä66ÿ¤@­Ï„=ƒñ­Â­À ƒñ„=­Â$„=­Â$„=­Â$  $xy”Øòò×ׇ‡@­À!'B­À*.ƒò£Ú­Ð  'ƒòxyóô×ׇ‰›‡­Ñ­Ð&­Ò&&$ ÿ¤@„>‡Û­Ð)-„>›ˆ­Ó­Ð!­Ò)) ÿ¤@„>‡Û­Ð$(„>ƒó”c­ÐƒóO€Œ €ø­Ñ„?”c­Ñ ­Ó„?”c­Ó xy£Úôô×׉‰ƒô­Ô­Õ  !ƒô­Öxy®õö×׉¡›‰­×­Õ­Õ€¤­Ø„@›Š­Ù­Õ*­Õ*€¤„@›‹­Ú­Õ%%#­Õ%%#€¤„@›Œ­Û­Õ--­Õ--€å€­€å€´‚;•L·z\V4à‰•M•L·z\V4à‰•N­Ü­Ü­Ý‚î‚î‚î­Þ   ­ß­Õ-(--­à­Õ-6-?­á­Õ-H-R­â­Õ-X-c­ã­Õ-o-y„@›­ä­Õ00"­Õ00"€å€­€å‚€å€´‚;•L·z\V4à‰•M•L·z\V4à‰•N­Ü­Ü­Ý‚î‚î‚î­Þ   ­ß­Õ0+00­å­Õ090E­æ­Õ0N0Y­ç­Õ0d0k­è­Õ0t0{­é­Õ0€ƒ0€Œ„@›Ž­ê­Õ33­Õ33€å€´‚;•L·z\V4à‰•M•L·z\V4à‰•N­Ü­Ü­ß­Õ3&3+„@›­ë­Õ@@­Õ@@€¤„@›­ì­ÕAA­ÕAA€¤„@›‘­í­ÕBB­ÕBB€¤„@›’­î­ÕCC­ÕCC€¤„@›“­ï­ÕDD­ÕDD€¤„@›”­ð­ÕEE­ÕEE€¤„@›•­ñ­ÕFF­ÕFF€å€¤„@›–­ò­ÕHH.­ÕHH.€¤­ó­ÕH/H5„@›—­ô­Õcc-­Õcc-€¤­ó­Õc.c4„@›˜­õ­Õ€ˆ€ˆ­Õ€ˆ€ˆ €¤„@›™­ö­Õ€Š€Š­Õ€Š€Š€¤­ó­Õ€Š€Š„@›š­÷­Õ€¦€¦!­Õ€¦€¦!€¤„@››­ø­Õ€­€­­Õ€­€­€¤­ù­Õ€­€­+„@›œ­ú­Õ€Ä€Ä!­Õ€Ä€Ä!€¤­û­Õ€Ä"€Ä%­ü„@›­ý­Õ€Î€Î%­Õ€Î€Î%€¤„@›ž­þ­Õ€Ý€Ý(­Õ€Ý€Ý(€¤„@›Ÿ­ÿ­Õ??!­Õ??! €¤„@ƒõ£M­Õ5 5ƒõ®xy­Ô>öö×× ¡› ®­Õ7 7­Õ7 7€¤Žâ­Õ77®„Cƒö®¬v"ƒöxyé ÷ú×á¡·›¡¬v¬v‚ð‚´„Dxy®ž"„D›¢®¬v''¬v''€¤„D®„D›£®¬v''¬v''€¤„D• ¬v))®„D›¤®¬v,,¬v,,?€¤„D® „D›¥® ¬v,,¬v,,?€¤„D• ¬v..® „D›¦® ¬v11¬v11 €¤„D® ¬v11(®„D›§®¬v66+¬v66+€¤„D®xy®ž"„D›¨®¬v;;%¬v;;% €¤„D“­¬v;&;+®xy®ž"„D›©®¬v@@&¬v@@&€¤„D®xy®ž"„D›ª®¬vCC$¬vCC$€¤„D•Ó¬vC%C(®xy®ž"„D›«®¬vKK+¬vKK+€¤„D®¬vK,K6®xy®ž"„D›¬®¬vTT"¬vTT"†×€”€•P†Ø€”€•P†Ù€”€•P†×†Ø†Ù$€¤„D€”€•P€”€•P€”€•P® ¬vT#T/®¬vT0T<®¬vT=TL®¬vTMTW®xy®ž"„D›­®¬v€€¬v€€$€¤„D® ¬v€€#®¬v€+€7®¬v€?€N®„D›®® ¬v€ƒ€ƒ#¬v€ƒ€ƒ#$€¤„D® ¬v€ƒ$€ƒ0®¬v€ƒ8€ƒD®¬v€ƒL€ƒV®¬v€ƒ^€ƒm®!„D›¯®"¬v€…€…¬v€…€…€¤„D® ¬v€…€…(®#¬v€…1€…<®$„D›°®%¬v€€¬v€€€¤„D® ¬v€€$®#¬v€-€8®&„D›±®'¬v€™€™$¬v€™€™$†Ú€”€•P†Û€”€•P†Ú†Û€¤„D€”€•P€”€•P® ¬v€™%€™1®(¬v€™2€™:®)xy®ž"„D›²®*¬v€¢€¢¬v€¢€¢€¤„D® ¬v€¢€¢%®+„D›³®,¬v€¥€¥¬v€¥€¥€¤„D® ¬v€¥€¥(®-„D›´®.¬v€¨€¨¬v€¨€¨€¤„D® ¬v€¨€¨#®/„D›µŸã¬v¬v‚´„Dxy®ž"„Dƒ÷®0¬v  ƒ÷®1xy®³øùÜܶ·›¶®2¬v¬v‚ñ €´‚;•L·z\V4à‰•M•L·z\V4à‰•N®4®4®5   ®6¬v„Fƒø®3¬v ƒøŒâ¬v "‚ñÿÿÿÿÿŒü¬v ‚ñ ¯¬v ‚ñŒ‘¬v ‚ñ ®7¬v ‚ñ0Ž,¬v ‚ñ@®8¬v "xy®®0ùùÜÜ··ƒùž"¬vƒù§€Ž+=€Ž€‚Ib®9¬vxy®ž"$®:¬vxy®ž"?®;¬v!!xy®ž"®<¬vxy®®=¬v"A"G‚•L·z\V4à‰›H‚À›Iäxy®ž"®¬v#A#K‚•L·z\V4à‰›H‚À›Iäxy®ž"„Gž"‚ð®„Gž"®®„Gž"®®„Gž"®?® „Gž"® ?® „Gž"®  ®„Gž"®®„Gž"® ®„Gž"®®„Gž"®®„Gž"®®„Gž"®†Ü€”€•P†Ý€”€•P†Þ€”€•P†Ü†Ý†Þ$®„Gž"®$® „Gž"® $®"„Gž"®"®%„Gž"®%®'„Gž"®'†ß€”€•P†à€”€•P†ß†à®*„Gž"®*®,„Gž"®,®.„Gž"®.Ÿã„Gž"Ÿãxy®úúáá··ƒú®>(ƒúxyžXûჷ  ›·®>®?†á®@®> „†â®A®>!(„†á†á †â„H†á†âÿ´@„H®@®> ®A®>!(®C®> ®D®>€‡:€Ñ®E®>  €‡:€Ñ®F®>  „H›¸®G®> ®?kk†ã®@®> „†ä®A®>!(„„H†ã†ä†ã†ã†äÿ¤@„H®@®> ®A®>!(‡$®> ®H„H›¹®I®> ®?pp†å®@®> „†æ®A®>!(„„H†å†æ†å†å†æÿ¤@„H®@®> ®A®>!(‡$®>®J„H›º®K®> ®?uu†ç®@®> „†è®A®>!(„„H†ç†è†ç†èÿ¤@„H®@®> ®A®>!(‡$®>®L„H›»®M®> ®?||†é®@®> „†ê®A®>!(„„H†é†ê†é†êÿ¤@„H®@®> ®A®>!(®N„H›¼‚í®> ®?€‚€‚†ë®@®> „†ì®A®>!(„„H†ë†ì†ëÿ¤@„H®@®> ®A®>!(‡$®>®O„H›½®P®> ®?€Ž€Ž†í®@®> „†î®A®>!(„„H†í†îÿ¤@„H®@®> ®A®>!(®Q„H›¾®>""®?€”€”†ï®@®>!!„†ð®A®>!!&„ †ï†ð†ï†ï †ï†ð †ï†ï †ï†ï†ð„I†ï†ðÿ´@„I®@®>!!®A®>!!& ®C®>" "£$®>##®D®>$$€‡:€Ñ®S®>%%€‡:€Ñ®T®>&&$€‡:€Ñ®U®>''"€‡:€Ñ®V®>((!€‡:€Ñ®W®>))€‡:€Ñ®F®>**„I›¿®P®>- -®?€Å€Å†ñ®@®>!!„†ò®A®>!!&„„I†ñ†òÿ¤@„I®@®>!!®A®>!!&®X„I›À®Y®>/ /®?€®€®†ó®@®>!!„†ô®A®>!!&„„I†ó†ô†ó†ôÿ¤@„I®@®>!!®A®>!!&‡$®>//®Z„I›Á®[®>1 1®?€§€§†õ®@®>!!„†ö®A®>!!&„„I†õ†ö†õ†öÿ¤@„I®@®>!!®A®>!!&‡$®>11®\„I›Â‚í®>3 3®?€Â€Â†÷®@®>!!„†ø®A®>!!&„„I†÷†ø†÷ÿ¤@„I®@®>!!®A®>!!&‡$®>33®]„I›Ã®^®>5 5®?€¿€¿†ù®@®>!!„†ú®A®>!!&„„I†ù†ú†ù†úÿ¤@„I®@®>!!®A®>!!&‡$®>55• ®>5&5+®_„I›Ä®`®>7 7®?€¼€¼†û®@®>!!„†ü®A®>!!&„„I†û†ü†û†üÿ¤@„I®@®>!!®A®>!!&®a„I›Å®b®><<®?€Ì€Ì†ý®@®><^<,<3„†ý†þ†ý†þÿ¤@„J®@®><^<,<3‰U®>>>#®?€å€å#†ÿA®>>>>@„†ÿ†ÿÿ¤@„JA®>>>>@®e„J›Ç®f®g‡¢¥®f„‡” ®f &„‚k‡ƒ¤‡‡ÿ´@ƒ¤¢¥®f” ®f &€®f ®hƒ¤›È®f®g‡¢¥®f„‡” ®f &„‚k‡ƒ¤‡‡ÿ´@ƒ¤¢¥®f” ®f &©B®f €®f®iƒ¤›É®f®g‡¢¥®f„‡” ®f &„‡‡‚k‡ƒ¤‡‡ÿ´@ƒ¤¢¥®f” ®f &®j®f €®f'/®kƒ¤›Ê®l®f" "®g2 2‡¢¥®f„‡” ®f &„ƒ¤‡‡ƒ¤‡‡ÿ¤@ƒ¤¢¥®f” ®f &®mƒ¤›Ë‚ì®f% %®g% %‡¢¥®f„‡ ” ®f &„ƒ¤‡‡ ‡‡ ÿ¤@ƒ¤¢¥®f” ®f &®nƒ¤›Ì®P®f( (®g, ,‡ ¢¥®f„‡ ” ®f &„ƒ¤‡ ‡ ÿ¤@ƒ¤¢¥®f” ®f &®oƒ¤›Í‚÷®f+ +®g] ]‡ ¢¥®f„‡ ” ®f &„ƒ¤‡ ‡ ‡  ÿ¤@ƒ¤¢¥®f” ®f &®pƒ¤›Î‚í®f. .®g_ _‡¢¥®f„‡” ®f &„ƒ¤‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®qƒ¤›Ï®r®f1 1®gu u‡¢¥®f„‡” ®f &„ƒ¤‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®sƒ¤›Ð‚é®f5 5®g; ;‡¢¥®f„‡” ®f &„ƒ¤‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®tƒ¤›Ñ®u®f5 5®g? ?‡¢¥®f„‡” ®f &„ƒ¤‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®vƒ¤›Ò‚ê®f8 8®gx x‡¢¥®f„‡” ®f &„ƒ¤‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®wƒ¤›Ó®x®f; ;®gB B‡¢¥®f„‡” ®f &„ƒ¤‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &®yƒ¤›Ô®z®f? ?®gG G‡¢¥®f„‡” ®f &„‡ƒú®f?(?.„ƒ¤‡‡‡‡‡‡‡‡ÿ¤@ƒ¤¢¥®f” ®f &ƒú®f?(?.®{ƒ¤›Õ®|®fB B®g} }‡¢¥®f„‡” ®f &„ƒ¤‡‡ÿ¤@ƒ¤¢¥®f” ®f &®}ƒ¤›Ö®~®fE E®gR R‡¢¥®f„‡ ” ®f &„ƒ¤‡‡ ‡‡ ÿ¤@ƒ¤¢¥®f” ®f &®ƒ¤ƒû¢‘®€)/ƒûxyV:ü!=× 5›×‚쮀®‚X‚X‡!A®€„‡"®‚®€%„€µ‡!„K‡!‡"‡!„K‡!‡"ÿ¤@„KA®€®‚®€%®„„K›Ø‚í®€!!®‚Y‚Y‡#A®€„‡$®‚®€%„€µ‡#„K‡#‡$‡#„K‡#‡$ÿ¤@„KA®€®‚®€%®…„K›Ù®|®€$$®‚Z‚Z‡%A®€„‡&®‚®€%„€µ‡%„K‡%‡&ÿ¤@„KA®€®‚®€%®†„K›Ú®‡®€''®‚[‚[‡'A®€„‡(®‚®€%„€µ‡'„K‡'‡(‡' ÿ¤@„KA®€®‚®€%®ˆ„K›Û‚**®‚b‚b‡)A®€„‡*®‚®€%„€µ‡)„K‡)‡* ÿ¤@„KA®€®‚®€%®‰„K›Ü®~®€--®‚\‚\‡+A®€„‡,®‚®€%„€µ‡+„K‡+‡,‡+ÿ¤@„KA®€®‚®€%®Š„K›Ý®z®€00®‚]‚]‡-A®€„‡.®‚®€%„€µ‡-‡/ƒú®€0 0&„„K‡-‡.‡-‡/‡/‡/‡/ÿ¤@„KA®€®‚®€%ƒú®€0 0&®‹„K›Þ®Œ®€44®‚d‚d‡0A®€„‡1®‚®€%„€µ‡0„K‡0‡1‡0 „K‡0‡1„K‡0‡1ÿ¤@„KA®€®‚®€%¢¡®€44#®„K›ß®Ž®€88®‚k‚k‡2A®€„‡3®‚®€%„€µ‡2„K‡2‡3‡2 „K‡2‡3ÿ¤@„KA®€®‚®€%¢¡®€88 ®„K›à®®€==®‚p‚p‡4A®€„‡5®‚®€%„€µ‡4„K‡4‡5‡4  ÿ¤@„KA®€®‚®€%¢¡®€== ®‘„K›á®’®€BB®‚r‚r‡6A®€„‡7®‚®€%„€µ‡6„K‡6‡7‡6  ÿ¤@„KA®€®‚®€%¢¡®€BB ®“„K›â‚ó®€EE®‚ʂʇ8A®€„‡9®‚®€%„€µ‡8‡9‡8„K‡8‡9ÿ¤@„KA®€®‚®€%®”„K›ãƒ’®€HH®‚T‚T‡:A®€„‡;®‚®€%„€µ‡:‡;„K‡:‡;ÿ¤@„KA®€®‚®€%®•„K›ä®–®€KK®‚ǂLJA®€„‡?®‚®€%„€µ‡>„K‡>‡?„K‡>‡? ÿ¤@„KA®€®‚®€%®™„K›æ®š®€QQ®‚“‚“‡@A®€„‡A®‚®€%„€µ‡@„K‡@‡A„K‡@‡Aÿ¤@„KA®€®‚®€%-®€Q Q!†ß®€Q9Q:®›„K›ç®œ®€TT®‚t‚t‡BA®€„‡C®‚®€%„€µ‡B„K‡B‡C„K‡B‡C„K‡B‡Cÿ¤@„KA®€®‚®€%®„K›è®ž®€WW®‚v‚v‡DA®€„‡E®‚®€%„€µ‡D„K‡D‡E„K‡D‡E„K‡D‡Eÿ¤@„KA®€®‚®€%®Ÿ„K›é® ®€ZZ"®‚x‚x"‡FA®€„‡G®‚®€%„€µ‡F„K‡F‡G„K‡F‡G„K‡F‡Gÿ¤@„KA®€®‚®€%®¡„K›ê¡Ò®€]]®‚€‚€‡HA®€„‡I®‚®€%„€µ‡H„K‡H‡I„K‡H‡I„K‡H‡Iÿ¤@„KA®€®‚®€%®¢„K›ë®£®€`` ®‚ˆ‚ˆ ‡JA®€„‡K®‚®€%„€µ‡J„K‡J‡K„K‡J‡K„K‡J‡Kÿ¤@„KA®€®‚®€%®¤„K›ì®¥®€cc®‚–‚–‡LA®€„‡M®‚®€%„€µ‡L„K‡L‡M‡Lÿ¤@„KA®€®‚®€%®¦„K›í®§®€ff®‚˜‚˜‡NA®€„‡O®‚®€%„€µ‡N„K‡N‡O‡Nÿ¤@„KA®€®‚®€%®¨„K›î®©®€ii®‚š‚š‡PA®€„‡Q®‚®€%„€µ‡P„K‡P‡Q‡Pÿ¤@„KA®€®‚®€%®ª„K›ï®«®€ll®‚œ‚œ‡RA®€„‡S®‚®€%„€µ‡R„K‡R‡S„K‡R‡S ÿ¤@„KA®€®‚®€%®¬„K›ð®­®€oo®‚ž‚ž‡TA®€„‡U®‚®€%„€µ‡T„K‡T‡U„K‡T‡U ÿ¤@„KA®€®‚®€%®®„K›ñ®¯®€rr®‚ ‚ ‡VA®€„‡W®‚®€%„€µ‡V„K‡V‡W‡Vÿ¤@„KA®€®‚®€%®°„K›ò®±®€uu®‚¢‚¢‡XA®€„‡Y®‚®€%„€µ‡X„K‡X‡Y€Ã‡Xÿ¤@„KA®€®‚®€%®²„K›ó®€||®‚¤‚¤‡ZA®€„‡[®‚®€%„€µ‡Z„K‡Z‡[ ÿ´@„KA®€®‚®€%„K›ô‚쮀€Ž€Ž®„f„f‡\¢¥®€€Œ€Œ„‡]” ®€€Œ€Œ!„‡^®‚®€€Œ"€Œ.„€µ‡\„L‡\‡]‡^‡\‡]„L‡\‡]‡^ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®´„L›õ‚€‘€‘®„g„g‡_¢¥®€€Œ€Œ„‡`” ®€€Œ€Œ!„‡a®‚®€€Œ"€Œ.„€µ‡_„L‡_‡`‡a ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®µ„L›öƒ’®€€—€—®„e„e‡b¢¥®€€Œ€Œ„‡c” ®€€Œ€Œ!„‡d®‚®€€Œ"€Œ.„€µ‡b‡d„L‡b‡c‡dÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®¶„L›÷®·®€€™€™®„„‡e¢¥®€€Œ€Œ„‡f” ®€€Œ€Œ!„‡g®‚®€€Œ"€Œ.„€µ‡e‡g‡e‡f„L‡e‡f‡gÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.„L›ø‚󮀀€®„‚„‚‡h¢¥®€€Œ€Œ„‡i” ®€€Œ€Œ!„‡j®‚®€€Œ"€Œ.„€µ‡h‡j‡h‡i„L‡h‡i‡jÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®¸„L›ù‚÷®€€ € ®„y„y‡k¢¥®€€Œ€Œ„‡l” ®€€Œ€Œ!„‡m®‚®€€Œ"€Œ.„€µ‡k„L‡k‡l‡m‡k ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®¹„L›ú®|®€€£€£®„x„x‡n¢¥®€€Œ€Œ„‡o” ®€€Œ€Œ!„‡p®‚®€€Œ"€Œ.„€µ‡n„L‡n‡o‡pÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®º„L›û‚鮀€§€§®„h„h‡q¢¥®€€Œ€Œ„‡r” ®€€Œ€Œ!„‡s®‚®€€Œ"€Œ.„€µ‡q„L‡q‡r‡s‡q‡rÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®»„L›ü®¼®€€ª€ª®„i„i‡t¢¥®€€Œ€Œ„‡u” ®€€Œ€Œ!„‡v®‚®€€Œ"€Œ.„€µ‡t‡wA®€€ª)€ª+„„L‡t‡u‡v‡t‡u‡w‡wÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.A®€€ª)€ª+®½„L›ý®’®€€®€®®„l„l‡x¢¥®€€Œ€Œ„‡y” ®€€Œ€Œ!„‡z®‚®€€Œ"€Œ.„€µ‡x„L‡x‡y‡z‡x‡y  ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®¾„L›þ®®€€²€²®„j„j‡{¢¥®€€Œ€Œ„‡|” ®€€Œ€Œ!„‡}®‚®€€Œ"€Œ.„€µ‡{„L‡{‡|‡}‡{‡|  ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®¿„L›ÿ®Ž®€€µ€µ®„k„k‡~¢¥®€€Œ€Œ„‡” ®€€Œ€Œ!„‡€®‚®€€Œ"€Œ.„€µ‡~„L‡~‡‡€‡~‡ „L‡~‡‡€ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®À„Lœ®z®€€¸€¸®„m„m‡¢¥®€€Œ€Œ„‡‚” ®€€Œ€Œ!„‡ƒ®‚®€€Œ"€Œ.„€µ‡‡„ƒú®€€¸/€¸5„„L‡‡‚‡ƒ‡‡‚‡„‡„‡„‡„ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.ƒú®€€¸/€¸5­>®€€¸€¸®Á„Lœ®Â®€€½€½®„n„n‡…¢¥®€€Œ€Œ„‡†” ®€€Œ€Œ!„‡‡®‚®€€Œ"€Œ.„€µ‡…‡ˆƒú®€€½?€½E„„L‡…‡†‡‡‡…‡…‡…‡†‡ˆ‡ˆ‡ˆ‡ˆÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.ƒú®€€½?€½E®Ã„Lœ®Ä®€€À€À®„o„o‡‰¢¥®€€Œ€Œ„‡Š” ®€€Œ€Œ!„‡‹®‚®€€Œ"€Œ.„€µ‡‰‡Œƒú®€€À.€À4„‡A®€€À8€À:„„L‡‰‡Š‡‹‡‰‡Š‡Œ‡‡Œ‡Œ„L‡‰‡‡‹‡Œÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.ƒú®€€À.€À4A®€€À8€À:®Å„Lœ®~®€€Ã€Ã®„r„r‡Ž¢¥®€€Œ€Œ„‡” ®€€Œ€Œ!„‡®‚®€€Œ"€Œ.„€µ‡Ž„L‡Ž‡‡‡Ž‡ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.¢®®€€Ã€Ã®Æ„Lœ™G®€€È€È®„t„t‡‘¢¥®€€Œ€Œ„‡’” ®€€Œ€Œ!„‡“®‚®€€Œ"€Œ.„€µ‡‘‡”A®€€È/€È1„„L‡‘‡’‡“‡‘‡’‡”„L‡‘‡”‡“ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.A®€€È/€È1¢«®€€È€È®Ç„Lœ®È®€€Ì€Ì®„s„s‡•¢¥®€€Œ€Œ„‡–” ®€€Œ€Œ!„‡—®‚®€€Œ"€Œ.„€µ‡•‡˜A®€€Ì,€Ì.„„L‡•‡–‡—‡–‡˜„L‡•‡˜‡—ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.A®€€Ì,€Ì.¢«®€€Ì€Ì ®É„Lœ®Œ®€€Ð€Ð®„u„u‡™¢¥®€€Œ€Œ„‡š” ®€€Œ€Œ!„‡›®‚®€€Œ"€Œ.„€µ‡™„L‡™‡š‡›‡™‡š „L‡™‡š‡›„L‡™‡š‡›ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®Ê„Lœ‚í®€€Ó€Ó®„z„z‡œ¢¥®€€Œ€Œ„‡” ®€€Œ€Œ!„‡ž®‚®€€Œ"€Œ.„€µ‡œ„L‡œ‡‡ž‡œ„L‡œ‡‡žÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®Ë„Lœ‚ꮀ€×€×®„{„{‡Ÿ¢¥®€€Œ€Œ„‡ ” ®€€Œ€Œ!„‡¡®‚®€€Œ"€Œ.„€µ‡Ÿ„L‡Ÿ‡ ‡¡‡Ÿ‡ ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®Ì„Lœ ®¯®€€Ú€Ú®„|„|‡¢¢¥®€€Œ€Œ„‡£” ®€€Œ€Œ!„‡¤®‚®€€Œ"€Œ.„€µ‡¢„L‡¢‡£‡¤‡¢‡£ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®Í„Lœ ®±®€€Ý€Ý®„}„}‡¥¢¥®€€Œ€Œ„‡¦” ®€€Œ€Œ!„‡§®‚®€€Œ"€Œ.„€µ‡¥„L‡¥‡¦‡§€Ã‡¥‡¦ÿ¤@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.®Î„Lœ ®€€ã€ã®„‹„‹‡¨¢¥®€€Œ€Œ„‡©” ®€€Œ€Œ!„‡ª®‚®€€Œ"€Œ.„€µ‡¨„L‡¨‡©‡ª ÿ´@„L¢¥®€€Œ€Œ” ®€€Œ€Œ!®‚®€€Œ"€Œ.„Lƒü‡«A®€„‡¬®‚®€%„€µ‡«®ƒ®€ƒü€Ž€‚Ib‚ì„M®ƒ‚쇭A®€„‡®®‚®€%„€µ‡­„K‡­‡®‡­„K‡­‡®‚í„M®ƒ‚퇯A®€„‡°®‚®€%„€µ‡¯„K‡¯‡°‡¯„K‡¯‡°®|„M®ƒ®|‡±A®€„‡²®‚®€%„€µ‡±„K‡±‡²®‡„M®ƒ®‡‡³A®€„‡´®‚®€%„€µ‡³„K‡³‡´‡³ ‚î„M®ƒ‚A®€„‡¶®‚®€%„€µ‡µ„K‡µ‡¶ ®~„M®ƒ®~‡·A®€„‡¸®‚®€%„€µ‡·„K‡·‡¸‡·®z„M®ƒ®z‡¹A®€„‡º®‚®€%„€µ‡¹‡»ƒú®€0 0&„„K‡¹‡º‡¹‡»‡»‡»‡»®Œ„M®ƒ®Œ‡¼A®€„‡½®‚®€%„€µ‡¼„K‡¼‡½‡¼ „K‡¼‡½„K‡¼‡½®Ž„M®ƒ®Ž‡¾A®€„‡¿®‚®€%„€µ‡¾„K‡¾‡¿‡¾ „K‡¾‡¿®„M®ƒ®‡ÀA®€„‡Á®‚®€%„€µ‡À„K‡À‡Á‡À  ®’„M®ƒ®’‡ÂA®€„‡Ã®‚®€%„€µ‡Â„K‡Â‡Ã‡Â  ‚ó„M®ƒ‚ó‡ÄA®€„‡Å®‚®€%„€µ‡Ä‡Å‡Ä„K‡Ä‡Åƒ’„M®ƒƒ’‡ÆA®€„‡Ç®‚®€%„€µ‡Æ‡Ç„K‡Æ‡Ç®–„M®ƒ®–‡ÈA®€„‡É®‚®€%„€µ‡È‡É‡È„K‡È‡É®˜„M®ƒ®˜‡ÊA®€„‡Ë®‚®€%„€µ‡Ê„K‡Ê‡Ë„K‡Ê‡Ë ®š„M®ƒ®š‡ÌA®€„‡Í®‚®€%„€µ‡Ì„K‡Ì‡Í„K‡Ì‡Í®œ„M®ƒ®œ‡ÎA®€„‡Ï®‚®€%„€µ‡Î„K‡Î‡Ï„K‡Î‡Ï„K‡Î‡Ï®ž„M®ƒ®ž‡ÐA®€„‡Ñ®‚®€%„€µ‡Ð„K‡Ð‡Ñ„K‡Ð‡Ñ„K‡Ð‡Ñ® „M®ƒ® ‡ÒA®€„‡Ó®‚®€%„€µ‡Ò„K‡Ò‡Ó„K‡Ò‡Ó„K‡Ò‡Ó¡Ò„M®ƒ¡Ò‡ÔA®€„‡Õ®‚®€%„€µ‡Ô„K‡Ô‡Õ„K‡Ô‡Õ„K‡Ô‡Õ®£„M®ƒ®£‡ÖA®€„‡×®‚®€%„€µ‡Ö„K‡Ö‡×„K‡Ö‡×„K‡Ö‡×®¥„M®ƒ®¥‡ØA®€„‡Ù®‚®€%„€µ‡Ø„K‡Ø‡Ù‡Ø®§„M®ƒ®§‡ÚA®€„‡Û®‚®€%„€µ‡Ú„K‡Ú‡Û‡Ú®©„M®ƒ®©‡ÜA®€„‡Ý®‚®€%„€µ‡Ü„K‡Ü‡Ý‡Ü®«„M®ƒ®«‡ÞA®€„‡ß®‚®€%„€µ‡Þ„K‡Þ‡ß„K‡Þ‡ß ®­„M®ƒ®­‡àA®€„‡á®‚®€%„€µ‡à„K‡à‡á„K‡à‡á ®¯„M®ƒ®¯‡âA®€„‡ã®‚®€%„€µ‡â„K‡â‡ã‡â®±„M®ƒ®±‡äA®€„‡å®‚®€%„€µ‡ä„K‡ä‡å€Ã‡ä„M®ƒ‡æA®€„‡ç®‚®€%„€µ‡æ„K‡æ‡ç ‚鄇«„N‡«®Ðxy¢‘ýýèè  ƒý‡èA®€~~„“E®€~~ƒý„K‡è€µ‡èxy¢‘þþéé  ƒþ‡é¢¥®€€Œ€Œ„‡ê” ®€€Œ€Œ!„‡ë®‚®€€Œ"€Œ.„€µ‡é®³®€€Œ€Œƒþ€Ž€‚Ib‚ì„M®³‚ì‡ì¢¥®€€Œ€Œ„‡í” ®€€Œ€Œ!„‡î®‚®€€Œ"€Œ.„€µ‡ì„L‡ì‡í‡î‡ì‡í„L‡ì‡í‡î‚î„M®³‚î‡ï¢¥®€€Œ€Œ„‡ð” ®€€Œ€Œ!„‡ñ®‚®€€Œ"€Œ.„€µ‡ï„L‡ï‡ð‡ñ ƒ’„M®³ƒ’‡ò¢¥®€€Œ€Œ„‡ó” ®€€Œ€Œ!„‡ô®‚®€€Œ"€Œ.„€µ‡ò‡ô„L‡ò‡ó‡ô®·„M®³®·‡õ¢¥®€€Œ€Œ„‡ö” ®€€Œ€Œ!„‡÷®‚®€€Œ"€Œ.„€µ‡õ‡÷‡õ‡ö„L‡õ‡ö‡÷‚ó„M®³‚ó‡ø¢¥®€€Œ€Œ„‡ù” ®€€Œ€Œ!„‡ú®‚®€€Œ"€Œ.„€µ‡ø‡ú‡ø‡ù„L‡ø‡ù‡ú‚÷„M®³‚÷‡û¢¥®€€Œ€Œ„‡ü” ®€€Œ€Œ!„‡ý®‚®€€Œ"€Œ.„€µ‡û„L‡û‡ü‡ý‡û ®|„M®³®|‡þ¢¥®€€Œ€Œ„‡ÿ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µ‡þ„L‡þ‡ÿˆ‚é„M®³‚鈢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆ„Lˆˆˆˆˆ®¼„M®³®¼ˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆˆA®€€ª)€ª+„„Lˆˆˆˆˆˆˆ®’„M®³®’ˆ¢¥®€€Œ€Œ„ˆ ” ®€€Œ€Œ!„ˆ ®‚®€€Œ"€Œ.„€µˆ„Lˆˆ ˆ ˆˆ   ®„M®³®ˆ ¢¥®€€Œ€Œ„ˆ ” ®€€Œ€Œ!„ˆ ®‚®€€Œ"€Œ.„€µˆ „Lˆ ˆ ˆ ˆ ˆ   ®Ž„M®³®Žˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆ„Lˆˆˆˆˆ „Lˆˆˆ®z„M®³®zˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆˆƒú®€€¸/€¸5„„Lˆˆˆˆˆˆˆˆˆ®Â„M®³®Âˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆˆƒú®€€½?€½E„„Lˆˆˆˆˆˆˆˆˆˆˆ®Ä„M®³®Äˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ®‚®€€Œ"€Œ.„€µˆˆƒú®€€À.€À4„ˆA®€€À8€À:„„Lˆˆˆˆˆˆˆˆˆ„Lˆˆˆˆ®~„M®³®~ˆ¢¥®€€Œ€Œ„ˆ” ®€€Œ€Œ!„ˆ ®‚®€€Œ"€Œ.„€µˆ„Lˆˆˆ ˆˆ™G„M®³™Gˆ!¢¥®€€Œ€Œ„ˆ"” ®€€Œ€Œ!„ˆ#®‚®€€Œ"€Œ.„€µˆ!ˆ$A®€€È/€È1„„Lˆ!ˆ"ˆ#ˆ!ˆ"ˆ$„Lˆ!ˆ$ˆ#®È„M®³®Èˆ%¢¥®€€Œ€Œ„ˆ&” ®€€Œ€Œ!„ˆ'®‚®€€Œ"€Œ.„€µˆ%ˆ(A®€€Ì,€Ì.„„Lˆ%ˆ&ˆ'ˆ&ˆ(„Lˆ%ˆ(ˆ'®Œ„M®³®Œˆ)¢¥®€€Œ€Œ„ˆ*” ®€€Œ€Œ!„ˆ+®‚®€€Œ"€Œ.„€µˆ)„Lˆ)ˆ*ˆ+ˆ)ˆ* „Lˆ)ˆ*ˆ+„Lˆ)ˆ*ˆ+‚í„M®³‚íˆ,¢¥®€€Œ€Œ„ˆ-” ®€€Œ€Œ!„ˆ.®‚®€€Œ"€Œ.„€µˆ,„Lˆ,ˆ-ˆ.ˆ,„Lˆ,ˆ-ˆ.‚ê„M®³‚êˆ/¢¥®€€Œ€Œ„ˆ0” ®€€Œ€Œ!„ˆ1®‚®€€Œ"€Œ.„€µˆ/„Lˆ/ˆ0ˆ1ˆ/ˆ0®¯„M®³®¯ˆ2¢¥®€€Œ€Œ„ˆ3” ®€€Œ€Œ!„ˆ4®‚®€€Œ"€Œ.„€µˆ2„Lˆ2ˆ3ˆ4ˆ2ˆ3®±„M®³®±ˆ5¢¥®€€Œ€Œ„ˆ6” ®€€Œ€Œ!„ˆ7®‚®€€Œ"€Œ.„€µˆ5„Lˆ5ˆ6ˆ7€Ãˆ5ˆ6„M®³ˆ8¢¥®€€Œ€Œ„ˆ9” ®€€Œ€Œ!„ˆ:®‚®€€Œ"€Œ.„€µˆ8„Lˆ8ˆ9ˆ: ‚鄇é‡ê®Ñxy¢‘ÿÿ;;  ƒÿˆ;¢¥®€€å€å„ˆ<” ®€€å€å!„ˆa®€€å€åƒÿ„Lˆ;ˆ<€µˆ;xy¢‘==  „ˆ=®@®>!!„ˆ>®A®>!!&„®R®>!!„„O®R ˆ?®@®>!!„ˆ@®A®>!!&„ ˆ?ˆ@ˆ?ˆ? ˆ?ˆ@ ˆ?ˆ? ˆ?ˆ?ˆ@„Iˆ?ˆ@®P„O®R®PˆA®@®>!!„ˆB®A®>!!&„„IˆAˆB®Y„O®R®YˆC®@®>!!„ˆD®A®>!!&„„IˆCˆDˆCˆD®[„O®R®[ˆE®@®>!!„ˆF®A®>!!&„„IˆEˆFˆEˆF‚í„O®R‚íˆG®@®>!!„ˆH®A®>!!&„„IˆGˆHˆG®^„O®R®^ˆI®@®>!!„ˆJ®A®>!!&„„IˆIˆJˆIˆJ®`„O®R®`ˆK®@®>!!„ˆL®A®>!!&„„IˆKˆLˆKˆL®ÒxyMM  „•®>::„€Ž€‚Ib®b„O•®bˆM®@®><^<,<3„ˆMˆNˆMˆN®d„O•®dˆOA®>>>>@„ˆOˆOxyPP  „ˆP¢¥®f„ˆQ” ®f &„¦®f„€Ž€‚Ib„O¦ˆR¢¥®f„ˆS” ®f &„‚kˆRƒ¤ˆRˆS„O¦ˆT¢¥®f„ˆU” ®f &„‚kˆTƒ¤ˆTˆU„O¦ˆV¢¥®f„ˆW” ®f &„ˆVˆW‚kˆVƒ¤ˆVˆW®l„O¦®lˆX¢¥®f„ˆY” ®f &„ƒ¤ˆXˆYƒ¤ˆXˆY‚ì„O¦‚ìˆZ¢¥®f„ˆ[” ®f &„ƒ¤ˆZˆ[ˆZˆ[®P„O¦®Pˆ\¢¥®f„ˆ]” ®f &„ƒ¤ˆ\ˆ]‚÷„O¦‚÷ˆ^¢¥®f„ˆ_” ®f &„ƒ¤ˆ^ˆ_ˆ^ ‚í„O¦‚íˆ`¢¥®f„ˆa” ®f &„ƒ¤ˆ`ˆaˆ`®r„O¦®rˆb¢¥®f„ˆc” ®f &„ƒ¤ˆbˆcˆbˆc‚é„O¦‚éˆd¢¥®f„ˆe” ®f &„ƒ¤ˆdˆeˆdˆe®u„O¦®uˆf¢¥®f„ˆg” ®f &„ƒ¤ˆfˆgˆfˆg‚ê„O¦‚êˆh¢¥®f„ˆi” ®f &„ƒ¤ˆhˆiˆhˆi®x„O¦®xˆj¢¥®f„ˆk” ®f &„ƒ¤ˆjˆkˆjˆk®z„O¦®zˆl¢¥®f„ˆm” ®f &„ˆnƒú®f?(?.„ƒ¤ˆlˆmˆlˆmˆnˆnˆnˆn®|„O¦®|ˆo¢¥®f„ˆp” ®f &„ƒ¤ˆoˆp®~„O¦®~ˆq¢¥®f„ˆr” ®f &„ƒ¤ˆqˆrˆqˆr‚鄈PˆQ„NˆPˆQ‚ʈPˆQ®Óxyss  „ˆs®@®> „ˆt®A®>!(„®B®>„„O®Bˆu®@®> „ˆv®A®>!(„ˆuˆu ˆv„Hˆuˆv®G„O®B®Gˆw®@®> „ˆx®A®>!(„„Hˆwˆxˆwˆwˆx®I„O®B®Iˆy®@®> „ˆz®A®>!(„„Hˆyˆzˆyˆyˆz®K„O®B®Kˆ{®@®> „ˆ|®A®>!(„„Hˆ{ˆ|ˆ{ˆ|®M„O®B®Mˆ}®@®> „ˆ~®A®>!(„„Hˆ}ˆ~ˆ}ˆ~‚í„O®B‚툮@®> „ˆ€®A®>!(„„Hˆˆ€ˆ®P„O®B®Pˆ®@®> „ˆ‚®A®>!(„„Hˆˆ‚®Ôxyƒƒ  „®Õ€Ž „ŠËƒ… ì „àœ €Ž€Ž‚ò‚´„P®ÕŽ-„Pœ ®Ö€Žcc%€Žcc% €¤„P®×„Pœ®Ø€Žcc%€Žcc% €¤„P†ß€Žd/d0®Ù„Pœ®Ú€Žii(€Žii(>€¤„P®Û€Ži)i+®Ü„Pœ®Ý€Žll0€Žll0>€¤„P®Û€Žl1l3®Þ„Pœ®ß€Žoo7€Žoo7>€¤„P®Û€Žo8o:®à„Pœ®á€Žrr>€Žrr>>€¤„P®Û€Žr?rA®â„Pœ®ã€Žuu1€Žuu1>€¤„P®Û€Žu2u4®ä„Pœ®å€Žxx9€Žxx9>€¤„P®Û€Žx:x<®æ„Pœ®ç€Ž{{;€Ž{{;>€¤„P®Û€Ž{<{>®è„Pœ®é€Ž~~#€Ž~~#>€¤„P®Û€Ž~$~&®ê„Pœ®ë€Ž€€5€Ž€€5>€¤„P®Û€Ž€6€8®ì„Pœ®í€Ž€„€„*€Ž€„€„*>€¤„P®Û€Ž€„+€„-®î„Pœ®ï€Ž€‡€‡,€Ž€‡€‡,>€¤„P®Û€Ž€‡-€‡/®ð„Pœ®ñ€Ž€Š€Š3€Ž€Š€Š3>€¤„P®Û€Ž€Š4€Š6®ò„Pœ®ó€Ž€€)€Ž€€)>‚󀤄P®Û€Ž€*€,¡€Ž€>€@®ô„Pœ®õ€Ž€€+€Ž€€+>€¤„P®Û€Ž€,€.®ö„Pœ®÷€Ž€“€“+€Ž€“€“+>€¤„P®Û€Ž€“,€“.®ø„Pœ®ù€Ž€–€–)€Ž€–€–)>€¤„P®Û€Ž€–*€–,®ú„Pœ®û€Ž€™€™"€Ž€™€™">€¤„P®Û€Ž€™#€™%®ü„Pœ ®ý€Ž€œ€œ*€Ž€œ€œ*>>€¤„P®Û€Ž€œ+€œ-¡€Ž€œ?€œA®þ„Pœ!®ÿ€Ž€Ÿ€Ÿ(€Ž€Ÿ€Ÿ(€¤„P¯„Pœ"¯€Ž€¢€¢.€Ž€¢€¢.€¤„P¯„Pœ#¯€Ž€¥€¥'€Ž€¥€¥'€¤„P¯„Pœ$¯€Ž€¨€¨-€Ž€¨€¨->€¤„P®Û€Ž€¨.€¨0¯„Pœ%¯€Ž€«€«.€Ž€«€«.>€¤„P®Û€Ž€«/€«1¯„Pœ&¯ €Ž€®€®&€Ž€®€®&>€¤„P®Û€Ž€®'€®)¯ „Pœ'¯ €Ž€±€±*€Ž€±€±*>€¤„P®Û€Ž€±+€±-¯ „Pœ(¯ €Ž€´€´%€Ž€´€´%>€¤„P®Û€Ž€´&€´(¯„Pœ)¯€Ž€·€·3€Ž€·€·3>€¤„P®Û€Ž€·4€·6¯„Pœ*¯€Ž€º€º#€Ž€º€º#>€¤„P®Û€Ž€º$€º&¯„Pœ+¯€Ž€½€½:€Ž€½€½:€¤„P¯„Pœ,¯€Ž€À€À<€Ž€À€À<>€¤„P®Û€Ž€À=€À?¯„Pœ-¯€Ž€Ã€Ã)€Ž€Ã€Ã)>€¤„P®Û€Ž€Ã*€Ã,¯„Pœ.¯€Ž€Æ€Æ4€Ž€Æ€Æ4>€¤„P®Û€Ž€Æ5€Æ7¯„Pœ/¯€Ž€É€É/€Ž€É€É/€¤„P¯„Pœ0¯€Ž€Ì€Ì9€Ž€Ì€Ì9>>€¤„P®Û€Ž€Ì:€Ì<¡€Ž€ÌN€ÌP¯„Pœ1¯€Ž€Ï€Ï9€Ž€Ï€Ï9€¤„P¯ „Pœ2¯!€Ž€Ò€Ò.€Ž€Ò€Ò.€¤„P¯"„Pœ3¯#€Ž€Õ€Õ(€Ž€Õ€Õ(>€¤„P®Û€Ž€Õ)€Õ+¯$„Pœ4¯%€Ž€Ø€Ø.€Ž€Ø€Ø.>€¤„P®Û€Ž€Ø/€Ø1¯&„Pœ5¯'€Ž€Û€Û-€Ž€Û€Û->€¤„P®Û€Ž€Û.€Û0¯(„Pœ6¯)€Ž€Þ€Þ1€Ž€Þ€Þ1>€¤„P®Û€Ž€Þ2€Þ4¯*„Pœ7¯+€Ž€á€á.€Ž€á€á.>€¤„P®Û€Ž€á/€á1¯,„Pœ8¯-€Ž€ä€ä<€Ž€ä€ä<>>€¤„P®Û€Ž€ä=€ä?¡€Ž€äQ€äS¯.„Pœ9¯/€Ž€ç€ç-€Ž€ç€ç->>€¤„P®Û€Ž€ç.€ç0¡€Ž€çB€çD¯0„Pœ:¯1€Ž€ê€ê4€Ž€ê€ê4>€¤„P®Û€Ž€ê5€ê7¯2„Pœ;¯3€Ž€í€í,€Ž€í€í,€¤„P¯4„Pœ<¯5€Ž€ð€ð,€Ž€ð€ð,€¤„P¯6„Pœ=¯7€Ž€ó€ó/€Ž€ó€ó/€¤„P¯8„Pœ>¯9€Ž€ö€ö/€Ž€ö€ö/€¤„P¯:„Pœ?¯;€Ž€ù€ù4€Ž€ù€ù4€¤„P¯<„Pœ@¯=€Ž€ü€ü0€Ž€ü€ü0>€¤„P®Û€Ž€ü1€ü3¯>„PœA¯?€Ž€ÿ€ÿ7€Ž€ÿ€ÿ7>€¤„P®Û€Ž€ÿ8€ÿ:¯@„PœB¯A€Ž1€Ž1>€¤„P®Û€Ž24¯B„PœC¯C€Ž5€Ž5>€¤„P®Û€Ž68¯D„PœD¯E€Ž$€Ž$>€¤„P®Û€Ž%'¯F„PœE¯G€Ž  &€Ž  &>€¤„P®Û€Ž ' )¯H„PœF¯I€Ž)€Ž)>€¤„P®Û€Ž*,¯J„PœG¯K€Ž3€Ž3€¤„P¯L„PœH¯M€Ž3€Ž3>>€¤„P®Û€Ž46¡€ŽHJ¯N„PœI¯O€Ž-€Ž->€¤„P®Û€Ž.0¯P„PœJ¯Q€Ž7€Ž7>€¤„P®Û€Ž8:¯R„PœK¯S€Ž>€Ž>>€¤„P®Û€Ž?A¯T„PœL¯U€Ž  6€Ž  6>€¤„P®Û€Ž 7 9¯V„PœM¯W€Ž##7€Ž##7>>€¤„P®Û€Ž#8#:¡€Ž#L#N¯X„PœN¯Y€Ž&&B€Ž&&B>>€¤„P®Û€Ž&C&E¡€Ž&W&Y¯Z„PœO¯[€Ž)),€Ž)),€¤„P¯\„PœP¯]€Ž,,0€Ž,,0€¤„P¯^„PœQ¯_€Ž//2€Ž//2€¤„P¯`„PœR¯a€Ž222€Ž222€¤„P¯b„PœS¯c€Ž55%€Ž55%€¤„P¯d„PœT¯e€Ž880€Ž880€¤„P¯f„PœU¯g€Ž;;/€Ž;;/€¤„P¯h„PœV¯i€Ž>>(€Ž>>(€¤„P¯j„PœW¯k€ŽAAB€ŽAAB€¤„P¯l„PœX¯m€ŽDDE€ŽDDE>€¤„P®Û€ŽDFDH¯n„PœY¯o€ŽGGF€ŽGGF>>€¤„P®Û€ŽGGGI¡€ŽG[G]¯p„PœZ¯q€ŽJJ9€ŽJJ9€¤„P¯r„Pœ[¯s€ŽMMC€ŽMMC€¤„P¯t„Pœ\¯u€ŽPPE€ŽPPE€¤„P¯v„Pœ]¯w€ŽSS2€ŽSS2€¤„P¯x„Pœ^¯y€ŽVV5€ŽVV5€¤„P¯z„Pœ_¯{€ŽYY,€ŽYY,€¤„P¯|„Pœ`¯}€Ž\\=€Ž\\=>>>€¤„P®Û€Ž\>\@¡€Ž\R\T¢€Ž\f\h¯~„Pœa¯€Ž__8€Ž__8>>>€¤„P®Û€Ž_9_;¡€Ž_M_O¢€Ž_a_c¯€„Pœb¯€Žbb@€Žbb@>>>€¤„P®Û€ŽbAbC¡€ŽbUbW¢€Žbibk¯‚„Pœc¯ƒ€Žee?€Žee?>>>€¤„P®Û€Že@eB¡€ŽeTeV¢€Žehej¯„„Pœd¯…€Žhh>€Žhh>>>>€¤„P®Û€Žh?hA¡€ŽhShU¢€Žhghi¯†„Pœe¯‡€Žkk>€Žkk>>>>€¤„P®Û€Žk?kA¡€ŽkSkU¢€Žkgki¯ˆ„Pœf¯‰€ŽnnH€ŽnnH>>>€¤„P®Û€ŽnInK¡€Žn]n_¢€Žnqns¯Š„Pœg¯‹€Žqq>€Žqq>>>>€¤„P®Û€Žq?qA¡€ŽqSqU¢€Žqgqi¯Œ„Pœh¯€ŽttB€ŽttB>>>€¤„P®Û€ŽtCtE¡€ŽtWtY¢€Žtktm¯Ž„Pœi¯€Žww8€Žww8>>>€¤„P®Û€Žw9w;¡€ŽwMwO¢€Žwawc¯„Pœj¯‘€Žzz=€Žzz=>>>€¤„P®Û€Žz>z@¡€ŽzRzT¢€Žzfzh¯’„Pœk¯“€Ž}}=€Ž}}=>>>€¤„P®Û€Ž}>}@¡€Ž}R}T¢€Ž}f}h¯”„Pœl¯•€Ž€€D€Ž€€D>>>>>€¤„P®Û€Ž€E€G¡€Ž€Y€[¢€Ž€m€o”¥€Ž€€€€ƒ”©€Ž€€•€€—¯–„Pœm¯—€ŽƒƒO€ŽƒƒO>>>€¤„P®Û€ŽƒPƒR¡€Žƒdƒf¢€Žƒxƒz¯˜„Pœn¯™€Ž††:€Ž††:>>>>>>>€¤„P®Û€Ž†;†=¡€Ž†O†Q¢€Ž†c†e”¥€Ž†w†y”©€Ž†€‹†€”¬€Ž†€Ÿ†€¡”®€Ž†€³†€µ¯š„Pœo¯›€Ž‰‰>€Ž‰‰>>>>€¤„P®Û€Ž‰?‰A¡€Ž‰S‰U¢€Ž‰g‰i¯œ„Pœp¯€ŽŒŒ:€ŽŒŒ:>>>€¤„P®Û€ŽŒ;Œ=¡€ŽŒOŒQ¢€ŽŒcŒe¯ž„Pœq¯Ÿ€Ž;€Ž;>>>€¤„P®Û€Ž<>¡€ŽPR¢€Ždf¯ „Pœr¯¡€Ž’’<€Ž’’<>>>€¤„P®Û€Ž’=’?¡€Ž’Q’S¢€Ž’e’g¯¢„Pœs¯£€Ž••9€Ž••9>>>€¤„P®Û€Ž•:•<¡€Ž•N•P¢€Ž•b•d¯¤„Pœt¯¥€Ž˜˜<€Ž˜˜<>>>€¤„P®Û€Ž˜=˜?¡€Ž˜Q˜S¢€Ž˜e˜g¯¦„Pœu¯§€Ž››=€Ž››=>>>€¤„P®Û€Ž›>›@¡€Ž›R›T¢€Ž›f›h¯¨„Pœv¯©€Žžž>€Žžž>>>>€¤„P®Û€Žž?žA¡€ŽžSžU¢€Žžgži¯ª„Pœw¯«€Ž¡¡>€Ž¡¡>>>>€¤„P®Û€Ž¡?¡A¡€Ž¡S¡U¢€Ž¡g¡i¯¬„Pœx¯­€Ž¤¤A€Ž¤¤A>€¤„P®Û€Ž¤B¤D¯®„Pœy¯¯€Ž§§K€Ž§§K>€¤„P®Û€Ž§L§N¯°„Pœz¯±€ŽªªI€ŽªªI>€¤„P®Û€ŽªJªL¯²„Pœ{¯³€Ž­­F€Ž­­F>>€¤„P®Û€Ž­G­I¡€Ž­[­]¯´„Pœ|¯µ€Ž°°L€Ž°°L>€¤„P®Û€Ž°M°O¯¶„Pœ}¯·€Ž³³M€Ž³³M>€¤„P®Û€Ž³N³P¯¸„Pœ~¯¹€Ž¶¶G€Ž¶¶G>€¤„P®Û€Ž¶H¶J¯º„Pœ¯»€Ž¹¹H€Ž¹¹H>€¤„P®Û€Ž¹I¹K¯¼„Pœ€¯½€Ž¼¼J€Ž¼¼J>€¤„P®Û€Ž¼K¼M¯¾„Pœ¯¿€Ž¿¿O€Ž¿¿O>€¤„P®Û€Ž¿P¿R¯À„Pœ‚¯Á€ŽÂÂN€ŽÂÂN>€¤„P®Û€ŽÂOÂQ¯Â„Pœƒ¯Ã€ŽÅÅI€ŽÅÅI>€¤„P®Û€ŽÅJÅL¯Ä„Pœ„¯Å€ŽÈÈQ€ŽÈÈQ>€¤„P®Û€ŽÈRÈT¯Æ„Pœ…¯Ç€ŽËËC€ŽËËC>>€¤„P®Û€ŽËDËF¡€ŽËXËZ¯È„Pœ†¯É€ŽÎÎT€ŽÎÎT>>>€¤„P®Û€ŽÎUÎW¡€ŽÎiÎk¢€ŽÎ}ίʄPœ‡¯Ë€ŽÑÑT€ŽÑÑT>>>€¤„P®Û€ŽÑUÑW¡€ŽÑiÑk¢€ŽÑ}ѯ̄Pœˆ¯Í€ŽÔÔG€ŽÔÔG>€¤„P®Û€ŽÔHÔJ¯Î„Pœ‰¯Ï€Ž××V€Ž××V>€¤„P®Û€Ž×W×Y¯Ð„PœŠ¯Ñ€ŽÚÚB€ŽÚÚB>€¤„P®Û€ŽÚCÚE¯Ò„Pœ‹¯Ó€ŽÝÝI€ŽÝÝI>€¤„P®Û€ŽÝJÝL¯Ô„PœŒ¯Õ€Žàà>€Žàà>>€¤„P®Û€Žà?àA¯Ö„Pœ¯×€ŽããK€ŽããK>€¤„P®Û€ŽãLãN¯Ø„PœŽ¯Ù€ŽææE€ŽææE>>€¤„P®Û€ŽæFæH¡€ŽæZæ\¯Ú„Pœ¯Û€ŽééF€ŽééF>€¤„P®Û€ŽéGéI¯Ü„Pœ¯Ý€ŽììR€ŽììR>>€¤„P®Û€ŽìSìU¡€Žìgìi¯Þ„Pœ‘¯ß€ŽïïL€ŽïïL>>€¤„P®Û€ŽïMïO¡€Žïaïc¯à„Pœ’¯á€ŽòòQ€ŽòòQ>>€¤„P®Û€ŽòRòT¡€Žòfòh¯â„Pœ“¯ã€ŽõõP€ŽõõP>>€¤„P®Û€ŽõQõS¡€Žõeõg¯ä„Pœ”¯å€ŽøøM€ŽøøM>>>€¤„P®Û€ŽøNøP¡€Žøbød¢€Žøvøx¯æ„Pœ•¯ç€ŽûûI€ŽûûI>>>€¤„P®Û€ŽûJûL¡€Žû^û`¢€Žûrût¯è„Pœ–¯é€ŽþþM€ŽþþM>€¤„P®Û€ŽþNþP¯ê„Pœ—¯ë€Ž‚‚H€Ž‚‚H>€¤„P®Û€Ž‚I‚K¯ì„Pœ˜¯í€Ž‚‚9€Ž‚‚9>>€¤„P®Û€Ž‚:‚<¡€Ž‚N‚P¯î„Pœ™¯ï€Ž‚‚>€Ž‚‚>>>€¤„P®Û€Ž‚?‚A¡€Ž‚S‚U¯ð„Pœš¯ñ€Ž‚ ‚ A€Ž‚ ‚ A>>€¤„P®Û€Ž‚ B‚ D¡€Ž‚ V‚ X¯ò„Pœ›¯ó€Ž‚ ‚ B€Ž‚ ‚ B>>€¤„P®Û€Ž‚ C‚ E¡€Ž‚ W‚ Y¯ô„Pœœ¯õ€Ž‚‚.€Ž‚‚.>>€¤„P®Û€Ž‚/‚1¡€Ž‚C‚E¯ö„Pœ¯÷€Ž‚‚8€Ž‚‚8>>€¤„P®Û€Ž‚9‚;¡€Ž‚M‚O¯ø„Pœž¯ù€Ž‚‚0€Ž‚‚0>>€¤„P®Û€Ž‚1‚3¡€Ž‚E‚G¯ú„PœŸ¯û€Ž‚‚1€Ž‚‚1>>€¤„P®Û€Ž‚2‚4¡€Ž‚F‚H¯ü„Pœ ¯ý€Ž‚‚1€Ž‚‚1>>€¤„P®Û€Ž‚2‚4¡€Ž‚F‚H¯þ„Pœ¡¯ÿ€Ž‚‚.€Ž‚‚.>>€¤„P®Û€Ž‚/‚1¡€Ž‚C‚E°„Pœ¢°€Ž‚"‚"A€Ž‚"‚"A>>€¤„P®Û€Ž‚"B‚"D¡€Ž‚"V‚"X°„Pœ£°€Ž‚%‚%B€Ž‚%‚%B>€¤„P®Û€Ž‚%C‚%E°„Pœ¤°€Ž‚(‚(6€Ž‚(‚(6€¤„P°„Pœ¥°€Ž‚+‚+4€Ž‚+‚+4€¤„P°„Pœ¦° €Ž‚.‚.8€Ž‚.‚.8€¤„P° „Pœ§° €Ž‚1‚1$€Ž‚1‚1$€¤„P° „Pœ¨° €Ž‚4‚4=€Ž‚4‚4=€¤„P°„Pœ©°€Ž‚7‚7I€Ž‚7‚7I€¤„P°„Pœª°€Ž‚:‚:=€Ž‚:‚:=>>€¤„P®Û€Ž‚:>‚:@¡€Ž‚:R‚:T°„Pœ«°€Ž‚=‚=C€Ž‚=‚=C>>€¤„P®Û€Ž‚=D‚=F¡€Ž‚=X‚=Z°„Pœ¬°€Ž‚@‚@K€Ž‚@‚@K>€¤„P®Û€Ž‚@L‚@N°„Pœ­°€Ž‚C‚CL€Ž‚C‚CL>€¤„P®Û€Ž‚CM‚CO°„Pœ®°€Ž‚F‚FC€Ž‚F‚FC>€¤„P®Û€Ž‚FD‚FF°„Pœ¯°€Ž‚I‚I;€Ž‚I‚I;>€¤„P®Û€Ž‚I<‚I>°„Pœ°°€Ž‚L‚L6€Ž‚L‚L6>€¤„P®Û€Ž‚L7‚L9°„Pœ±°€Ž‚O‚O=€Ž‚O‚O=>>€¤„P®Û€Ž‚O>‚O@¡€Ž‚OR‚OT° „Pœ²°!€Ž‚R‚RG€Ž‚R‚RG>>€¤„P®Û€Ž‚RH‚RJ¡€Ž‚R\‚R^°"„Pœ³°#€Ž‚U‚UI€Ž‚U‚UI>>€¤„P®Û€Ž‚UJ‚UL¡€Ž‚U^‚U`°$„Pœ´°%€Ž‚X‚X<€Ž‚X‚X<>>€¤„P®Û€Ž‚X=‚X?¡€Ž‚XQ‚XS°&„Pœµ°'€Ž‚[‚[G€Ž‚[‚[G>>€¤„P®Û€Ž‚[H‚[J¡€Ž‚[\‚[^°(„Pœ¶°)€Ž‚^‚^@€Ž‚^‚^@>>>€¤„P®Û€Ž‚^A‚^C¡€Ž‚^U‚^W¢€Ž‚^i‚^k°*„Pœ·°+€Ž‚a‚a@€Ž‚a‚a@>>>€¤„P®Û€Ž‚aA‚aC¡€Ž‚aU‚aW¢€Ž‚ai‚ak°,„Pœ¸°-€Ž‚d‚d=€Ž‚d‚d=>>€¤„P®Û€Ž‚d>‚d@¡€Ž‚dR‚dT°.„Pœ¹°/€Ž‚g‚gC€Ž‚g‚gC€¤„P°0„Pœº°1€Ž‚j‚j/€Ž‚j‚j/€¤„P°2„Pœ»°3€Ž‚m‚m(€Ž‚m‚m(>>€¤„P®Û€Ž‚m)‚m+¡€Ž‚m=‚m?°4„Pœ¼°5€Ž‚p‚p,€Ž‚p‚p,>€¤„P®Û€Ž‚p-‚p/°6„Pœ½°7€Ž‚s‚s+€Ž‚s‚s+>€¤„P®Û€Ž‚s,‚s.°8„Pœ¾°9€Ž‚v‚v&€Ž‚v‚v&>€¤„P®Û€Ž‚v'‚v)°:„Pœ¿°;€Ž‚y‚y9€Ž‚y‚y9>>>€¤„P®Û€Ž‚y:‚y<¡€Ž‚yN‚yP¢€Ž‚yb‚yd°<„PœÀ°=€Ž‚|‚|*€Ž‚|‚|*€¤„P°>„PœÁ°?€Ž‚‚2€Ž‚‚2>€¤„P®Û€Ž‚3‚5°@„PœÂ°A€Ž‚‚‚‚@€Ž‚‚‚‚@€¤„P°B„PœÃ°C€Ž‚…‚…-€Ž‚…‚…->€¤„P®Û€Ž‚….‚…0°D„PœÄ°E€Ž‚ˆ‚ˆ;€Ž‚ˆ‚ˆ;>€¤„P®Û€Ž‚ˆ<‚ˆ>°F„PœÅ°G€Ž‚‹‚‹A€Ž‚‹‚‹A>>€¤„P®Û€Ž‚‹B‚‹D¡€Ž‚‹V‚‹X°H„PœÆ°I€Ž‚Ž‚ŽF€Ž‚Ž‚ŽF>>€¤„P®Û€Ž‚ŽG‚ŽI¡€Ž‚Ž[‚Ž]°J„PœÇ°K€Ž‚‘‚‘H€Ž‚‘‚‘H>>€¤„P®Û€Ž‚‘I‚‘K¡€Ž‚‘]‚‘_°L„PœÈ°M€Ž‚”‚”-€Ž‚”‚”->>>€¤„P®Û€Ž‚”.‚”0¡€Ž‚”B‚”D¢€Ž‚”V‚”X°N„PœÉ°O€Ž‚—‚—)€Ž‚—‚—)€¤„P°P„PœÊ°Q€Ž‚š‚š-€Ž‚š‚š-€¤„P°R„PœË°S€Ž‚‚.€Ž‚‚.€¤„P°T„PœÌ°U€Ž‚ ‚ 4€Ž‚ ‚ 4€¤„P°V„PœÍ°W€Ž‚£‚£(€Ž‚£‚£(€¤„P°X„PœÎ°Y€Ž‚¦‚¦!€Ž‚¦‚¦!€¤„P°Z„PœÏ°[€Ž‚©‚©0€Ž‚©‚©0€¤„P°\„PœÐ°]€Ž‚¬‚¬2€Ž‚¬‚¬2€¤„P°^„PœÑ°_€Ž‚¯‚¯4€Ž‚¯‚¯4€¤„P°`„PœÒ°a€Ž‚²‚²4€Ž‚²‚²4€¤„P°b„PœÓ°c€Ž‚µ‚µ1€Ž‚µ‚µ1€¤„P°d„PœÔ°e€Ž‚¸‚¸+€Ž‚¸‚¸+€¤„P°f„PœÕ°g€Ž‚»‚»+€Ž‚»‚»+€¤„P°h„PœÖ°i€Ž‚¾‚¾,€Ž‚¾‚¾,€¤„P°j„Pœ×°k€Ž‚Á‚Á)€Ž‚Á‚Á)€¤„P°l„PœØ°m€Ž‚Ä‚Ä'€Ž‚Ä‚Ä'€¤„P°n„PœÙ°o€Ž‚Ç‚Ç4€Ž‚Ç‚Ç4€¤„P°p„PœÚ°q€Ž‚Ê‚Ê5€Ž‚Ê‚Ê5€¤„P°r„PœÛ°s€Ž‚Í‚Í+€Ž‚Í‚Í+€¤„P°t„PœÜ°u€Ž‚ЂÐ!€Ž‚ЂÐ!>€¤„P®Û€Ž‚Ð"‚Ð$°v„PœÝ°w€Ž‚Ó‚Ó0€Ž‚Ó‚Ó0€¤„P°x„PœÞ°y€Ž‚Ö‚Ö+€Ž‚Ö‚Ö+€¤„P°z„Pœß°{€Ž‚Ù‚Ù!€Ž‚Ù‚Ù!€¤„P°|„Pœà°}€Ž‚܂܀ނ܂܀¤„P°~„Pœá°€Ž‚ß‚ß+€Ž‚ß‚ß+>€¤„P®Û€Ž‚ß,‚ß.°€„Pœâ°€Ž‚â‚â-€Ž‚â‚â-€¤„P°‚„Pœã°ƒ€Ž‚å‚å1€Ž‚å‚å1>€¤„P®Û€Ž‚å2‚å4°„„Pœä°…€Ž‚è‚è'€Ž‚è‚è'€¤„P°†„Pœå°‡€Ž‚ë‚ë#€Ž‚ë‚ë#€¤„P°ˆ„Pœæ°‰€Ž‚î‚î#€Ž‚î‚î#€¤„P°Š„Pœç°‹€Ž‚ñ‚ñ-€Ž‚ñ‚ñ->>€¤„P®Û€Ž‚ñ.‚ñ0¡€Ž‚ñB‚ñD°Œ„Pœè°€Ž‚ô‚ô.€Ž‚ô‚ô.>€¤„P®Û€Ž‚ô/‚ô1°Ž„Pœé°€Ž‚÷‚÷'€Ž‚÷‚÷'€¤„P°„Pœê°‘€Ž‚ú‚ú&€Ž‚ú‚ú&€¤„P°’„Pœë°“€Ž‚ý‚ý*€Ž‚ý‚ý*€¤„P°”„Pœì°•€Žƒƒ*€Žƒƒ*>€¤„P®Û€Žƒ+ƒ-°–„Pœí°—€Žƒƒ,€Žƒƒ,>€¤„P®Û€Žƒ-ƒ/°˜„Pœî°™€Žƒƒ)€Žƒƒ)€¤„P°š„Pœï°›€Žƒ ƒ -€Žƒ ƒ ->€¤„P®Û€Žƒ .ƒ 0°œ„Pœð°€Žƒ ƒ /€Žƒ ƒ />>€¤„P®Û€Žƒ 0ƒ 2¡€Žƒ Dƒ F°ž„Pœñ°Ÿ€Žƒƒ+€Žƒƒ+€¤„P° „Pœò°¡€Žƒƒ$€Žƒƒ$€¤„P°¢„Pœó°£€Žƒƒ/€Žƒƒ/€¤„P°¤„Pœô°¥€Žƒƒ-€Žƒƒ-€¤„P°¦„Pœõ°§€Žƒƒ)€Žƒƒ)€¤„P°¨„Pœö°©€Žƒƒ*€Žƒƒ*€¤„P°ª„Pœ÷°«€Žƒ!ƒ!(€Žƒ!ƒ!(€¤„P°¬„Pœø°­€Žƒ$ƒ$'€Žƒ$ƒ$'>€¤„P®Û€Žƒ$(ƒ$*°®„Pœù°¯€Žƒ'ƒ'-€Žƒ'ƒ'-€¤„P°°„Pœú°±€Žƒ*ƒ*5€Žƒ*ƒ*5€¤„P°²„Pœû°³€Žƒ-ƒ-+€Žƒ-ƒ-+>€¤„P®Û€Žƒ-,ƒ-.°´„Pœü°µ€Žƒ0ƒ04€Žƒ0ƒ04>€¤„P®Û€Žƒ05ƒ07°¶„Pœý°·€Žƒ3ƒ3.€Žƒ3ƒ3.>€¤„P®Û€Žƒ3/ƒ31°¸„Pœþ°¹€Žƒ6ƒ67€Žƒ6ƒ67€¤„P°º„Pœÿ°»€Žƒ9ƒ9*€Žƒ9ƒ9*€¤„P°¼„P°½€Žƒ<ƒ<&€Žƒ<ƒ<&€¤„P°¾„P°¿€Žƒ?ƒ?'€Žƒ?ƒ?'€¤„P°À„P°Á€ŽƒBƒB+€ŽƒBƒB+>€¤„P®Û€ŽƒB,ƒB.°Â„P°Ã€ŽƒEƒE+€ŽƒEƒE+>>>€¤„P®Û€ŽƒE,ƒE.¡€ŽƒE@ƒEB¢€ŽƒETƒEV°Ä„P°Å€ŽƒHƒH&€ŽƒHƒH&€¤„P°Æ„P°Ç€ŽƒKƒK+€ŽƒKƒK+€¤„P°È„P°É€ŽƒNƒN$€ŽƒNƒN$€¤„P°Ê„P°Ë€ŽƒQƒQ*€ŽƒQƒQ*€¤„P°Ì„P°Í€ŽƒTƒT1€ŽƒTƒT1€¤„P°Î„P °Ï€ŽƒWƒW+€ŽƒWƒW+>€¤„P®Û€ŽƒW,ƒW.°Ð„P °Ñ€ŽƒZƒZ3€ŽƒZƒZ3>€¤„P®Û€ŽƒZ4ƒZ6°Ò„P °Ó€Žƒ]ƒ],€Žƒ]ƒ],>€¤„P®Û€Žƒ]-ƒ]/°Ô„P °Õ€Žƒ`ƒ`(€Žƒ`ƒ`(€¤„P°Ö„P °×€Žƒcƒc$€Žƒcƒc$>€¤„P®Û€Žƒc%ƒc'°Ø„P°Ù€Žƒfƒf.€Žƒfƒf.>€¤„P®Û€Žƒf/ƒf1°Ú„P°Û€Žƒiƒi+€Žƒiƒi+>€¤„P®Û€Žƒi,ƒi.°Ü„P°Ý€Žƒlƒl4€Žƒlƒl4€¤„P°Þ„P°ß€Žƒoƒo&€Žƒoƒo&>€¤„P®Û€Žƒo'ƒo)°à„P°á€Žƒrƒr0€Žƒrƒr0>€¤„P®Û€Žƒr1ƒr3°â„P°ã€Žƒuƒu1€Žƒuƒu1>€¤„P®Û€Žƒu2ƒu4°ä„P°å€Žƒxƒx;€Žƒxƒx;>€¤„P®Û€Žƒx<ƒx>°æ„P°ç€Žƒ{ƒ{;€Žƒ{ƒ{;>>€¤„P®Û€Žƒ{<ƒ{>¡€Žƒ{Pƒ{R°è„P°é€Žƒ~ƒ~>€Žƒ~ƒ~>€¤„P°ê„P°ë€Žƒƒ(€Žƒƒ(€¤„P°ì„P°í€Žƒ„ƒ„*€Žƒ„ƒ„*>€¤„P®Û€Žƒ„+ƒ„-°î„P°ï€Žƒ‡ƒ‡7€Žƒ‡ƒ‡7€¤„P°ð„P°ñ€ŽƒŠƒŠ;€ŽƒŠƒŠ;€¤„P°ò„P°ó€Žƒƒ3€Žƒƒ3€¤„P°ô„P°õ€Žƒƒ4€Žƒƒ4€¤„P°ö„P°÷€Žƒ“ƒ“9€Žƒ“ƒ“9€¤„P°ø„P°ù€Žƒ–ƒ–3€Žƒ–ƒ–3€¤„P°ú„P°û€Žƒ™ƒ™=€Žƒ™ƒ™=€¤„P°ü„P °ý€Žƒœƒœ5€Žƒœƒœ5€¤„P°þ„P!°ÿ€ŽƒŸƒŸ2€ŽƒŸƒŸ2€¤„P±„P"±€Žƒ¢ƒ¢6€Žƒ¢ƒ¢6€¤„P±„P#±€Žƒ¥ƒ¥0€Žƒ¥ƒ¥0€¤„P±„P$±€Žƒ¨ƒ¨4€Žƒ¨ƒ¨4€¤„P±„P%±€Žƒ«ƒ«7€Žƒ«ƒ«7€¤„P±„P&± €Žƒ®ƒ®;€Žƒ®ƒ®;€¤„P± „P'± €Žƒ±ƒ±?€Žƒ±ƒ±?€¤„P± „P(± €Žƒ´ƒ´3€Žƒ´ƒ´3€¤„P±„P)±€Žƒ·ƒ·5€Žƒ·ƒ·5>€¤„P®Û€Žƒ·6ƒ·8±„P*±€Žƒºƒº#€Žƒºƒº#€¤„P±„P+±€Žƒ½ƒ½)€Žƒ½ƒ½)€¤„P±„P,±€ŽƒÀƒÀ%€ŽƒÀƒÀ%€¤„P±„P-±€ŽƒÃƒÃ)€ŽƒÃƒÃ)‚ó‚󀤄P®Û€ŽƒÃ*ƒÃ,¡€ŽƒÃ=ƒÃ?±„P.±€ŽƒÆƒÆ:€ŽƒÆƒÆ:>€¤„P®Û€ŽƒÆ;ƒÆ=±„P/±€ŽƒÉƒÉ7€ŽƒÉƒÉ7>€¤„P®Û€ŽƒÉ8ƒÉ:±„P0±€ŽƒÌƒÌ-€ŽƒÌƒÌ->>€¤„P®Û€ŽƒÌ.ƒÌ0¡€ŽƒÌBƒÌD±„P1±€ŽƒÏƒÏ.€ŽƒÏƒÏ.>>€¤„P®Û€ŽƒÏ/ƒÏ1¡€ŽƒÏCƒÏE± „P2±!€ŽƒÒƒÒ5€ŽƒÒƒÒ5>>€¤„P®Û€ŽƒÒ6ƒÒ8¡€ŽƒÒJƒÒL±"„P3±#€ŽƒÕƒÕ6€ŽƒÕƒÕ6>>€¤„P®Û€ŽƒÕ7ƒÕ9¡€ŽƒÕKƒÕM±$„P4±%€ŽƒØƒØ0€ŽƒØƒØ0>>€¤„P®Û€ŽƒØ1ƒØ3¡€ŽƒØEƒØG±&„P5±'€ŽƒÛƒÛ*€ŽƒÛƒÛ*>>>€¤„P®Û€ŽƒÛ+ƒÛ-¡€ŽƒÛ?ƒÛA¢€ŽƒÛSƒÛU±(„P6±)€ŽƒÞƒÞ-€ŽƒÞƒÞ->>>€¤„P®Û€ŽƒÞ.ƒÞ0¡€ŽƒÞBƒÞD¢€ŽƒÞVƒÞX±*„P7±+€Žƒáƒá0€Žƒáƒá0€¤„P±,„P8±-€Žƒäƒä'€Žƒäƒä'>€¤„P®Û€Žƒä(ƒä*±.„P9±/€Žƒçƒç/€Žƒçƒç/>€¤„P®Û€Žƒç0ƒç2±0„P:±1€Žƒêƒê1€Žƒêƒê1>€¤„P®Û€Žƒê2ƒê4±2„P;±3€Žƒíƒí1€Žƒíƒí1>€¤„P®Û€Žƒí2ƒí4±4„P<±5€Žƒðƒð1€Žƒðƒð1>€¤„P®Û€Žƒð2ƒð4±6„P=±7€Žƒóƒó/€Žƒóƒó/>€¤„P®Û€Žƒó0ƒó2±8„P>±9€Žƒöƒö/€Žƒöƒö/>€¤„P®Û€Žƒö0ƒö2±:„P?±;€Žƒùƒù/€Žƒùƒù/>€¤„P®Û€Žƒù0ƒù2±<„P@±=€Žƒüƒü%€Žƒüƒü%>€¤„P®Û€Žƒü&ƒü(±>„PA±?€Žƒÿƒÿ2€Žƒÿƒÿ2>€¤„P®Û€Žƒÿ3ƒÿ5±@„PB±A€Ž„„)€Ž„„)>€¤„P®Û€Ž„*„,±B„PC±C€Ž„„1€Ž„„1€¤„P±D„PD±E€Ž„„6€Ž„„6>€¤„P®Û€Ž„7„9±F„PE±G€Ž„ „ 9€Ž„ „ 9>€¤„P®Û€Ž„ :„ <±H„PF±I€Ž„„4€Ž„„4>>€¤„P®Û€Ž„5„7¡€Ž„I„K±J„PG±K€Ž„„>€Ž„„>>€¤„P®Û€Ž„?„A±L„PH±M€Ž„„7€Ž„„7>€¤„P®Û€Ž„8„:±N„PI±O€Ž„„D€Ž„„D>€¤„P®Û€Ž„E„G±P„PJ±Q€Ž„„3€Ž„„3€¤„P±R„PK±S€Ž„„4€Ž„„4€¤„P±T„PL±U€Ž„ „ %€Ž„ „ %>€¤„P®Û€Ž„ &„ (±V„PM±W€Ž„#„#'€Ž„#„#'>€¤„P®Û€Ž„#(„#*±X„PN±Y€Ž„&„&*€Ž„&„&*€¤„P±Z„PO±[€Ž„)„)+€Ž„)„)+€¤„P±\„PP±]€Ž„,„,'€Ž„,„,'€¤„P±^„PQ±_€Ž„/„/)€Ž„/„/)>>€¤„P®Û€Ž„/*„/,¡€Ž„/>„/@±`„PR±a€Ž„2„2*€Ž„2„2*>>€¤„P®Û€Ž„2+„2-¡€Ž„2?„2A±b„PS±c€Ž„5„5,€Ž„5„5,>€¤„P®Û€Ž„5-„5/±d„PT±e€Ž„8„8/€Ž„8„8/>€¤„P®Û€Ž„80„82±f„PU±g€Ž„;„;7€Ž„;„;7>>>€¤„P®Û€Ž„;8„;:¡€Ž„;L„;N¢€Ž„;`„;b±h„PV±i€Ž„>„>'€Ž„>„>'>€¤„P®Û€Ž„>(„>*±j„PW±k€Ž„A„A+€Ž„A„A+>‚ó>€¤„P®Û€Ž„A,„A.¡€Ž„A@„AB¢€Ž„AS„AU±l„PX±m€Ž„D„D,€Ž„D„D,>‚ó>€¤„P®Û€Ž„D-„D/¡€Ž„DA„DC¢€Ž„DT„DV±n„PY±o€Ž„G„G,€Ž„G„G,>‚ó>>€¤„P®Û€Ž„G-„G/¡€Ž„GA„GC¢€Ž„GT„GV”¥€Ž„Gh„Gj±p„PZ±q€Ž„J„J,€Ž„J„J,>‚ó>>€¤„P®Û€Ž„J-„J/¡€Ž„JA„JC¢€Ž„JT„JV”¥€Ž„Jh„Jj±r„P[±s€Ž„M„M5€Ž„M„M5>‚ó‚ó‚ó>€¤„P®Û€Ž„M6„M8¡€Ž„MJ„ML¢€Ž„M]„M_”¥€Ž„Mp„Mr”©€Ž„M€ƒ„M€…±t„P\±u€Ž„P„P0€Ž„P„P0>‚ó‚ó>€¤„P®Û€Ž„P1„P3¡€Ž„PE„PG¢€Ž„PX„PZ”¥€Ž„Pk„Pm±v„P]±w€Ž„S„S4€Ž„S„S4>‚ó‚ó>€¤„P®Û€Ž„S5„S7¡€Ž„SI„SK¢€Ž„S\„S^”¥€Ž„So„Sq±x„P^±y€Ž„V„V'€Ž„V„V'>‚ó>‚󀤄P®Û€Ž„V(„V*¡€Ž„V<„V>¢€Ž„VO„VQ”¥€Ž„Vc„Ve±z„P_±{€Ž„Y„Y1€Ž„Y„Y1>>‚󀤄P®Û€Ž„Y2„Y4¡€Ž„YF„YH¢€Ž„YZ„Y\±|„P`±}€Ž„\„\/€Ž„\„\/>‚ó‚󀤄P®Û€Ž„\0„\2¡€Ž„\D„\F¢€Ž„\W„\Y±~„Pa±€Ž„_„_/€Ž„_„_/>>‚󀤄P®Û€Ž„_0„_2¡€Ž„_D„_F¢€Ž„_X„_Z±€„Pb±€Ž„b„b0€Ž„b„b0>>‚ó‚󀤄P®Û€Ž„b1„b3¡€Ž„bE„bG¢€Ž„bY„b[”¥€Ž„bl„bn±‚„Pc±ƒ€Ž„e„e0€Ž„e„e0>>‚ó>€¤„P®Û€Ž„e1„e3¡€Ž„eE„eG¢€Ž„eY„e[”¥€Ž„el„en±„„Pd±…€Ž„h„h"€Ž„h„h">€¤„P®Û€Ž„h#„h%±†„Pe±‡€Ž„k„k$€Ž„k„k$>€¤„P®Û€Ž„k%„k'±ˆ„Pf±‰€Ž„n„n&€Ž„n„n&>€¤„P®Û€Ž„n'„n)±Š„Pg±‹€Ž„q„q€Ž„q„q>€¤„P®Û€Ž„q„q!±Œ„Ph±€Ž„t„t)€Ž„t„t)€¤„P±Ž„Pi±€Ž„w„w8€Ž„w„w8€¤„P±„Pj±‘€Ž„z„z!€Ž„z„z!€¤„P±’„Pk±“€Ž„}„}!€Ž„}„}!€¤„P±”„Pl±•€Ž„€„€)€Ž„€„€)€¤„P±–„Pm±—€Ž„ƒ„ƒ"€Ž„ƒ„ƒ"€¤„P±˜„Pn±™€Ž„†„†*€Ž„†„†*€¤„P±š„Po±›€Ž„‰„‰2€Ž„‰„‰2€¤„P±œ„Pp±€Ž„Œ„Œ"€Ž„Œ„Œ"€¤„P±ž„Pq±Ÿ€Ž„„$€Ž„„$€¤„P± „Pr±¡€Ž„’„’&€Ž„’„’&€¤„P±¢„Ps±£€Ž„•„•'€Ž„•„•'€¤„P±¤„Pt±¥€Ž„˜„˜C€Ž„˜„˜C€¤„P±¦„Pu±§€Ž„›„›1€Ž„›„›1€¤„P±¨„Pv±©€Ž„ž„ž<€Ž„ž„ž<€¤„P±ª„Pw±«€Ž„¡„¡4€Ž„¡„¡4€¤„P±¬„Px±­€Ž„¤„¤)€Ž„¤„¤)€¤„P±®„Py±¯€Ž„§„§)€Ž„§„§)€¤„P±°„Pz±±€Ž„ª„ª5€Ž„ª„ª5€¤„P±²„P{±³€Ž„­„­/€Ž„­„­/€¤„P±´„P|±µ€Ž„°„°G€Ž„°„°G€¤„P±¶„P}±·€Ž„³„³.€Ž„³„³.€¤„P±¸„P~±¹€Ž„¶„¶8€Ž„¶„¶8€¤„P±º„P±»€Ž„¹„¹:€Ž„¹„¹:€¤„P±¼„P€±½€Ž„¼„¼G€Ž„¼„¼G€¤„P±¾„P±¿€Ž„¿„¿G€Ž„¿„¿G€¤„P±À„P‚±Á€Ž„„Â.€Ž„„Â.€¤„P±Â„Pƒ±Ã€Ž„Å„Å,€Ž„Å„Å,€¤„P±Ä„P„±Å€Ž„È„È0€Ž„È„È0€¤„P±Æ„P…±Ç€Ž„Ë„Ë/€Ž„Ë„Ë/€¤„P±È„P†±É€Ž„΄Î1€Ž„΄Î1€¤„P±Ê„P‡±Ë€Ž„Ñ„ÑI€Ž„Ñ„ÑI€¤„P±Ì„Pˆ±Í€Ž„Ô„Ô!€Ž„Ô„Ô!€¤„P±Î„P‰±Ï€Ž„ׄ×8€Ž„ׄ×8€¤„P±Ð„PбÑ€Ž„Ú„Ú5€Ž„Ú„Ú5€¤„P±Ò„P‹±Ó€Ž„Ý„Ý)€Ž„Ý„Ý)€¤„P±Ô„PŒ±Õ€Ž„à„à#€Ž„à„à#€¤„P±Ö„P±×€Ž„ã„ã&€Ž„ã„ã&€¤„P±Ø„PޱÙ€Ž„æ„æ4€Ž„æ„æ4€¤„P±Ú„P±Û€Ž„é„é$€Ž„é„é$€¤„P±Ü„P±Ý€Ž„ì„ì.€Ž„ì„ì.€¤„P±Þ„P‘±ß€Ž„ï„ï)€Ž„ï„ï)€¤„P±à„P’±á€Ž„ò„ò-€Ž„ò„ò-€¤„P±â„P“±ã€Ž„õ„õ6€Ž„õ„õ6€¤„P±ä„P”±å€Ž„ø„ø6€Ž„ø„ø6€¤„P±æ„P•±ç€Ž„û„û€Ž„û„û€¤„P±è„P–±é€Ž„þ„þA€Ž„þ„þA€¤„P±ê„P—±ë€Ž……9€Ž……9€¤„P±ì„P˜±í€Ž……0€Ž……0€¤„P±î„P™±ï€Ž……0€Ž……0€¤„P±ð„Pš±ñ€Ž… … =€Ž… … =€¤„P±ò„P›±ó€Ž… … +€Ž… … +€¤„P±ô„Pœ±õ€Ž……G€Ž……G€¤„P±ö„P±÷€Ž……?€Ž……?€¤„P±ø„Pž±ù€Ž……0€Ž……0€¤„P±ú„PŸ±û€Ž……D€Ž……D€¤„P±ü„P ±ý€Ž……*€Ž……*>€¤„P®Û€Ž…+…-±þ„P¡±ÿ€Ž……@€Ž……@€¤„P²„P¢²€Ž…"…"@€Ž…"…"@€¤„P²„P£²€Ž…%…%5€Ž…%…%5€¤„P²„P¤²€Ž…(…(B€Ž…(…(B€¤„P²„P¥²€Ž…+…+-€Ž…+…+-€¤„P²„P¦² €Ž….….$€Ž….….$€¤„P² „P§² €Ž…1…1>€Ž…1…1>€¤„P² „P¨² €Ž…4…4(€Ž…4…4(€¤„P²„P©²€Ž…7…7=€Ž…7…7=€¤„P²„Pª²€Ž…:…:/€Ž…:…:/>€¤„P®Û€Ž…:0…:2²„P«²€Ž…=…="€Ž…=…="€¤„P²„P¬²€Ž…@…@0€Ž…@…@0€¤„P²„P­²€Ž…C…C(€Ž…C…C(€¤„P²„P®²€Ž…F…F'€Ž…F…F'€¤„P²„P¯²€Ž…I…I'€Ž…I…I'€¤„P²„P°²€Ž…L…L:€Ž…L…L:€¤„P²„P±²€Ž…O…O&€Ž…O…O&€¤„P² „P²²!€Ž…R…R2€Ž…R…R2€¤„P²"„P³²#€Ž…U…U&€Ž…U…U&€¤„P²$„P´²%€Ž…X…X%€Ž…X…X%>€¤„P®Û€Ž…X&…X(²&„Pµ²'€Ž…[…[€Ž…[…[>€¤„P®Û€Ž…[ …["²(„P¶²)€Ž…^…^)€Ž…^…^)€¤„P²*„P·²+€Ž…a…a$€Ž…a…a$€¤„P²,„P¸²-€Ž…d…d"€Ž…d…d"€¤„P².„P¹²/€Ž…g…g9€Ž…g…g9€¤„P²0„Pº²1€Ž…j…j)€Ž…j…j)€¤„P²2„P»²3€Ž…m…m.€Ž…m…m.€¤„P²4„P¼²5€Ž…p…p-€Ž…p…p-€¤„P²6„P½²7€Ž…s…s<€Ž…s…s<€¤„P²8„P¾²9€Ž…v…v*€Ž…v…v*€¤„P²:„P¿²;€Ž…y…y8€Ž…y…y8€¤„P²<„PÀ²=€Ž…|…|>€Ž…|…|>€¤„P²>„PÁ²?€Ž……-€Ž……-€¤„P²@„P²A€Ž…‚…‚-€Ž…‚…‚->€¤„P®Û€Ž…‚.…‚0²B„PòC€Ž…………=€Ž…………=€¤„P²D„PIJE€Ž…ˆ…ˆ2€Ž…ˆ…ˆ2€¤„P²F„PŲG€Ž…‹…‹5€Ž…‹…‹5€¤„P²H„PƲI€Ž…Ž…Ž2€Ž…Ž…Ž2€¤„P²J„PDzK€Ž…‘…‘<€Ž…‘…‘<€¤„P²L„PȲM€Ž…”…”'€Ž…”…”'>€¤„P®Û€Ž…”(…”*²N„PɲO€Ž…—…—1€Ž…—…—1€¤„P²P„PʲQ€Ž…š…š)€Ž…š…š)€¤„P²R„P˲S€Ž……8€Ž……8€¤„P²T„P̲U€Ž… … &€Ž… … &€¤„P²V„PͲW€Ž…£…£1€Ž…£…£1€¤„P²X„PβY€Ž…¦…¦0€Ž…¦…¦0€¤„P²Z„Pϲ[€Ž…©…©.€Ž…©…©.€¤„P²\„Pв]€Ž…¬…¬,€Ž…¬…¬,€¤„P²^„PѲ_€Ž…¯…¯)€Ž…¯…¯)€¤„P²`„PÒ²a€Ž…²…²/€Ž…²…²/€¤„P²b„PÓ²c€Ž…µ…µ7€Ž…µ…µ7€¤„P²d„PÔ²e€Ž…¸…¸0€Ž…¸…¸0€¤„P²f„PÕ²g€Ž…»…»:€Ž…»…»:€¤„P²h„PÖ²i€Ž…¾…¾0€Ž…¾…¾0€¤„P²j„Pײk€Ž…Á…Á7€Ž…Á…Á7€¤„P²l„Pزm€Ž…Ä…Ä1€Ž…Ä…Ä1€¤„P²n„PÙ²o€Ž…Ç…Ç:€Ž…Ç…Ç:>>€¤„P®Û€Ž…Ç;…Ç=¡€Ž…ÇO…ÇQ²p„PÚ²q€Ž…Ê…Ê0€Ž…Ê…Ê0>>€¤„P®Û€Ž…Ê1…Ê3¡€Ž…ÊE…ÊG²r„PÛ²s€Ž…Í…Í%€Ž…Í…Í%>>€¤„P®Û€Ž…Í&…Í(¡€Ž…Í:…Í<²t„Pܲu€Ž…Ð…Ð/€Ž…Ð…Ð/>€¤„P®Û€Ž…Ð0…Ð2²v„Pݲw€Ž…Ó…Ó7€Ž…Ó…Ó7>€¤„P®Û€Ž…Ó8…Ó:²x„PÞ²y€Ž…Ö…Ö5€Ž…Ö…Ö5>€¤„P®Û€Ž…Ö6…Ö8²z„Pß²{€Ž…Ù…Ù-€Ž…Ù…Ù->€¤„P®Û€Ž…Ù.…Ù0²|„Pà²}€Ž…Ü…Ü2€Ž…Ü…Ü2>€¤„P®Û€Ž…Ü3…Ü5²~„Pá²€Ž…ß…ß1€Ž…ß…ß1>€¤„P®Û€Ž…ß2…ß4²€„Pâ²€Ž…â…â3€Ž…â…â3>€¤„P®Û€Ž…â4…â6²‚„P㲃€Ž…å…å:€Ž…å…å:>€¤„P®Û€Ž…å;…å=²„„Pä²…€Ž…è…è=€Ž…è…è=>€¤„P®Û€Ž…è>…è@²†„P岇€Ž…ë…ë0€Ž…ë…ë0€¤„P²ˆ„P沉€Ž…î…î1€Ž…î…î1€¤„P²Š„P粋€Ž…ñ…ñ=€Ž…ñ…ñ=€¤„P²Œ„Pè²€Ž…ô…ô/€Ž…ô…ô/€¤„P²Ž„P鲀ޅ÷…÷2€Ž…÷…÷2>>€¤„P®Û€Ž…÷3…÷5¡€Ž…÷G…÷I²„P겑€Ž…ú…ú>€Ž…ú…ú>€¤„P²’„P벓€Ž…ý…ý6€Ž…ý…ý6>€¤„P®Û€Ž…ý7…ý9²”„P첕€Ž††3€Ž††3>€¤„P®Û€Ž†4†6²–„Pí²—€Ž††6€Ž††6€¤„P²˜„Pî²™€Ž††0€Ž††0€¤„P²š„Pï²›€Ž† † A€Ž† † A€¤„P²œ„P𲀎† † 8€Ž† † 8€¤„P²ž„Pñ²Ÿ€Ž††-€Ž††->€¤„P®Û€Ž†.†0² „Pò²¡€Ž†† €Ž†† €¤„P²¢„P󲣀ކ†8€Ž††8>€¤„P®Û€Ž†9†;²¤„Pô²¥€Ž††:€Ž††:€¤„P²¦„Põ²§€Ž††7€Ž††7€¤„P²¨„Pö²©€Ž††0€Ž††0€¤„P²ª„P÷²«€Ž†!†!2€Ž†!†!2€¤„P²¬„Pø²­€Ž†$†$5€Ž†$†$5€¤„P²®„Pù²¯€Ž†'†'5€Ž†'†'5€¤„P²°„Pú²±€Ž†*†*1€Ž†*†*1€¤„P²²„Pû²³€Ž†-†-3€Ž†-†-3€¤„P²´„Pü²µ€Ž†0†03€Ž†0†03€¤„P²¶„Pý²·€Ž†3†3*€Ž†3†3*€¤„P²¸„Pþ²¹€Ž†6†62€Ž†6†62€¤„P²º„Pÿ²»€Ž†9†9&€Ž†9†9&€¤„P²¼„Pž²½€Ž†<†€¤„P®Û€Ž†?:†?<²À„Pž²Á€Ž†B†B5€Ž†B†B5>€¤„P®Û€Ž†B6†B8²Â„Pž²Ã€Ž†E†E.€Ž†E†E.‚ó‚󀤄P®Û€Ž†E/†E1¡€Ž†EB†ED²Ä„Pž²Å€Ž†H†H0€Ž†H†H0€¤„P²Æ„Pž²Ç€Ž†K†K+€Ž†K†K+€¤„P²È„Pž²É€Ž†N†N3€Ž†N†N3€¤„P²Ê„Pž²Ë€Ž†Q†Q#€Ž†Q†Q#€¤„P²Ì„Pž²Í€Ž†T†T/€Ž†T†T/€¤„P²Î„Pž ²Ï€Ž†W†W2€Ž†W†W2‚󀤄P®Û€Ž†W3†W5²Ð„Pž ²Ñ€Ž†Z†Z*€Ž†Z†Z*>€¤„P®Û€Ž†Z+†Z-²Ò„Pž ²Ó€Ž†]†]1€Ž†]†]1€¤„P²Ô„Pž ²Õ€Ž†`†`2€Ž†`†`2€¤„P²Ö„Pž ²×€Ž†c†c7€Ž†c†c7€¤„P²Ø„Pž²Ù€Ž†f†f%€Ž†f†f%€¤„P²Ú„Pž²Û€Ž†i†i/€Ž†i†i/€¤„P²Ü„Pž²Ý€Ž†l†l)€Ž†l†l)€¤„P²Þ„Pž²ß€Ž†o†o(€Ž†o†o(€¤„P²à„Pž²á€Ž†r†r'€Ž†r†r'€¤„P²â„Pž²ã€Ž†u†u:€Ž†u†u:€¤„P²ä„Pž²å€Ž†x†x)€Ž†x†x)€¤„P²æ„Pž²ç€Ž†{†{0€Ž†{†{0€¤„P²è„Pž²é€Ž†~†~0€Ž†~†~0€¤„P²ê„Pž²ë€Ž††/€Ž††/€¤„P²ì„Pž²í€Ž†„†„:€Ž†„†„:€¤„P²î„Pž²ï€Ž†‡†‡(€Ž†‡†‡(>€¤„P®Û€Ž†‡)†‡+²ð„Pž²ñ€Ž†Š†Š(€Ž†Š†Š(€¤„P²ò„Pž²ó€Ž††4€Ž††4>€¤„P®Û€Ž†5†7²ô„Pž²õ€Ž††9€Ž††9€¤„P²ö„Pž²÷€Ž†“†“1€Ž†“†“1€¤„P²ø„Pž²ù€Ž†–†–9€Ž†–†–9€¤„P²ú„Pž²û€Ž†™†™5€Ž†™†™5€¤„P²ü„Pž ²ý€Ž†œ†œ)€Ž†œ†œ)€¤„P²þ„Pž!²ÿ€Ž†Ÿ†Ÿ+€Ž†Ÿ†Ÿ+€¤„P³„Pž"³€Ž†¢†¢-€Ž†¢†¢-€¤„P³„Pž#³€Ž†¥†¥)€Ž†¥†¥)>€¤„P®Û€Ž†¥*†¥,³„Pž$³€Ž†¨†¨<€Ž†¨†¨<€¤„P³„Pž%³€Ž†«†«,€Ž†«†«,€¤„P³„Pž&³ €Ž†®†®5€Ž†®†®5€¤„P³ „Pž'³ €Ž†±†±5€Ž†±†±5€¤„P³ „Pž(³ €Ž†´†´6€Ž†´†´6€¤„P³„Pž)³€Ž†·†·1€Ž†·†·1€¤„P³„Pž*³€Ž†º†º0€Ž†º†º0€¤„P³„Pž+³€Ž†½†½3€Ž†½†½3‚󀤄P®Û€Ž†½4†½6³„Pž,³€Ž†À†À$€Ž†À†À$>€¤„P®Û€Ž†À%†À'³„Pž-³€Ž†Ã†Ã8€Ž†Ã†Ã8€¤„P³„Pž.³€Ž†Æ†Æ1€Ž†Æ†Æ1€¤„P³„Pž/³€Ž†É†É"€Ž†É†É"€¤„P³„Pž0³€Ž†Ì†Ì'€Ž†Ì†Ì'€¤„P³„Pž1³€Ž†Ï†Ï"€Ž†Ï†Ï"€¤„P³ „Pž2³!€Ž†Ò†Ò.€Ž†Ò†Ò.€¤„P³"„Pž3³#€Ž†Õ†Õ+€Ž†Õ†Õ+‚ó‚󀤄P®Û€Ž†Õ,†Õ.¡€Ž†Õ?†ÕA³$„Pž4³%€Ž†Ø†Ø!€Ž†Ø†Ø!€¤„P³&„Pž5³'€Ž†Û†Û.€Ž†Û†Û.€¤„P³(„Pž6³)€Ž†Þ†Þ5€Ž†Þ†Þ5€¤„P³*„Pž7³+€Ž†á†á;€Ž†á†á;€¤„P³,„Pž8³-€Ž†ä†ä7€Ž†ä†ä7€¤„P³.„Pž9³/€Ž†ç†ç7€Ž†ç†ç7€¤„P³0„Pž:³1€Ž†ê†ê-€Ž†ê†ê->€¤„P®Û€Ž†ê.†ê0³2„Pž;³3€Ž†í†í&€Ž†í†í&€¤„P³4„Pž<³5€Ž†ð†ð;€Ž†ð†ð;€¤„P³6„Pž=³7€Ž†ó†ó<€Ž†ó†ó<€¤„P³8„Pž>³9€Ž†ö†ö(€Ž†ö†ö(€¤„P³:„Pž?³;€Ž†ù†ù%€Ž†ù†ù%€¤„P³<„Pž@³=€Ž†ü†ü8€Ž†ü†ü8€¤„P³>„PžA³?€Ž†ÿ†ÿ;€Ž†ÿ†ÿ;€¤„P³@„PžB³A€Ž‡‡;€Ž‡‡;€¤„P³B„PžC³C€Ž‡‡:€Ž‡‡:€¤„P³D„PžD³E€Ž‡‡,€Ž‡‡,€¤„P³F„PžE³G€Ž‡ ‡ F€Ž‡ ‡ F€¤„P³H„PžF³I€Ž‡‡1€Ž‡‡1€¤„P³J„PžG³K€Ž‡‡I€Ž‡‡I€¤„P³L„PžH³M€Ž‡‡0€Ž‡‡0€¤„P³N„PžI³O€Ž‡‡%€Ž‡‡%>€¤„P®Û€Ž‡&‡(³P„PžJ³Q€Ž‡‡6€Ž‡‡6€¤„P³R„PžK³S€Ž‡‡2€Ž‡‡2€¤„P³T„PžL³U€Ž‡ ‡ 4€Ž‡ ‡ 4€¤„P³V„PžM³W€Ž‡#‡#/€Ž‡#‡#/€¤„P³X„PžN³Y€Ž‡&‡&:€Ž‡&‡&:>€¤„P®Û€Ž‡&;‡&=³Z„PžO³[€Ž‡)‡)+€Ž‡)‡)+>€¤„P®Û€Ž‡),‡).³\„PžP³]€Ž‡,‡,"€Ž‡,‡,">>€¤„P®Û€Ž‡,#‡,%¡€Ž‡,7‡,9³^„PžQ³_€Ž‡/‡/+€Ž‡/‡/+>>€¤„P®Û€Ž‡/,‡/.¡€Ž‡/@‡/B³`„PžR³a€Ž‡2‡2/€Ž‡2‡2/€¤„P³b„PžS³c€Ž‡5‡5E€Ž‡5‡5E€¤„P³d„PžT³e€Ž‡8‡82€Ž‡8‡82>€¤„P®Û€Ž‡83‡85³f„PžU³g€Ž‡;‡;)€Ž‡;‡;)>‚󀤄P®Û€Ž‡;*‡;,¡€Ž‡;>‡;@³h„PžV³i€Ž‡>‡>4€Ž‡>‡>4>‚󀤄P®Û€Ž‡>5‡>7¡€Ž‡>I‡>K³j„PžW³k€Ž‡A‡A,€Ž‡A‡A,€¤„P³l„PžX³m€Ž‡D‡D9€Ž‡D‡D9€¤„P³n„PžY³o€Ž‡G‡G.€Ž‡G‡G.€¤„P³p„PžZ³q€Ž‡J‡J5€Ž‡J‡J5€¤„P³r„Pž[³s€Ž‡M‡M-€Ž‡M‡M-€¤„P³t„Pž\³u€Ž‡P‡PF€Ž‡P‡PF€¤„P³v„Pž]³w€Ž‡S‡S?€Ž‡S‡S?€¤„P³x„Pž^³y€Ž‡V‡VH€Ž‡V‡VH€¤„P³z„Pž_³{€Ž‡Y‡Y@€Ž‡Y‡Y@€¤„P³|„Pž`³}€Ž‡\‡\)€Ž‡\‡\)€¤„P³~„Pža³€Ž‡_‡_>€Ž‡_‡_>€¤„P³€„Pžb³€Ž‡b‡b0€Ž‡b‡b0€¤„P³‚„Pžc³ƒ€Ž‡e‡e0€Ž‡e‡e0€¤„P³„„Pžd³…€Ž‡h‡h/€Ž‡h‡h/€¤„P³†„Pže³‡€Ž‡k‡k0€Ž‡k‡k0>€¤„P®Û€Ž‡k1‡k3³ˆ„Pžf³‰€Ž‡n‡n-€Ž‡n‡n-€¤„P³Š„Pžg³‹€Ž‡q‡q5€Ž‡q‡q5€¤„P³Œ„Pžh³€Ž‡t‡t5€Ž‡t‡t5€¤„P³Ž„Pži³€Ž‡w‡w^€Ž‡w‡w^€¤„P³„Pžj³‘€Ž‡z‡z&€Ž‡z‡z&€¤„P³’„Pžk³“€Ž‡}‡}7€Ž‡}‡}7€¤„P³”„Pžl³•€Ž‡€‡€(€Ž‡€‡€(€¤„P³–„Pžm³—€Ž‡ƒ‡ƒ?€Ž‡ƒ‡ƒ?€¤„P³˜„Pžn³™€Ž‡†‡†<€Ž‡†‡†<€¤„P³š„Pžo³›€Ž‡‰‡‰5€Ž‡‰‡‰5€¤„P³œ„Pžp³€Ž‡Œ‡Œ.€Ž‡Œ‡Œ.€¤„P³ž„Pžq³Ÿ€Ž‡‡2€Ž‡‡2€¤„P³ „Pžr³¡€Ž‡’‡’2€Ž‡’‡’2€¤„P³¢„Pžs³£€Ž‡•‡•%€Ž‡•‡•%€¤„P³¤„Pžt³¥€Ž‡˜‡˜(€Ž‡˜‡˜(€¤„P³¦„Pžu³§€Ž‡›‡›2€Ž‡›‡›2€¤„P³¨„Pžv³©€Ž‡ž‡ž5€Ž‡ž‡ž5€¤„P³ª„Pžw³«€Ž‡¡‡¡B€Ž‡¡‡¡B>€¤„P®Û€Ž‡¡C‡¡E³¬„Pžx³­€Ž‡¤‡¤-€Ž‡¤‡¤-€¤„P³®„Pžy³¯€Ž‡§‡§(€Ž‡§‡§(€¤„P³°„Pžz³±€Ž‡ª‡ª'€Ž‡ª‡ª'>€¤„P®Û€Ž‡ª(‡ª*³²„Pž{³³€Ž‡­‡­)€Ž‡­‡­)>€¤„P®Û€Ž‡­*‡­,³´„Pž|³µ€Ž‡°‡°*€Ž‡°‡°*€¤„P³¶„Pž}³·€Ž‡³‡³$€Ž‡³‡³$>€¤„P®Û€Ž‡³%‡³'³¸„Pž~³¹€Ž‡¶‡¶(€Ž‡¶‡¶(>€¤„P®Û€Ž‡¶)‡¶+³º„Pž³»€Ž‡¹‡¹8€Ž‡¹‡¹8€¤„P³¼„Pž€³½€Ž‡¼‡¼I€Ž‡¼‡¼I€¤„P³¾„Pž³¿€Ž‡¿‡¿!€Ž‡¿‡¿!>€¤„P®Û€Ž‡¿"‡¿$³À„Pž‚³Á€Ž‡Â‡Â$€Ž‡Â‡Â$>€¤„P®Û€Ž‡Â%‡Â'³Â„Pžƒ³Ã€Ž‡Å‡Å,€Ž‡Å‡Å,>€¤„P®Û€Ž‡Å-‡Å/³Ä„Pž„³Å€Ž‡È‡È7€Ž‡È‡È7€¤„P³Æ„Pž…³Ç€Ž‡Ë‡Ë3€Ž‡Ë‡Ë3€¤„P³È„Pž†³É€Ž‡Î‡ÎF€Ž‡Î‡ÎF€¤„P³Ê„Pž‡³Ë€Ž‡Ñ‡Ñ/€Ž‡Ñ‡Ñ/€¤„P³Ì„Pžˆ³Í€Ž‡Ô‡Ô>€Ž‡Ô‡Ô>€¤„P³Î„Pž‰³Ï€Ž‡×‡×3€Ž‡×‡×3€¤„P³Ð„PžŠ³Ñ€Ž‡Ú‡Ú,€Ž‡Ú‡Ú,€¤„P³Ò„Pž‹³Ó€Ž‡Ý‡Ý2€Ž‡Ý‡Ý2€¤„P³Ô„PžŒ³Õ€Ž‡à‡à:€Ž‡à‡à:€¤„P³Ö„Pž³×€Ž‡ã‡ã4€Ž‡ã‡ã4€¤„P³Ø„PžŽ³Ù€Ž‡æ‡æ7€Ž‡æ‡æ7€¤„P³Ú„Pž³Û€Ž‡é‡é,€Ž‡é‡é,€¤„P³Ü„Pž³Ý€Ž‡ì‡ì?€Ž‡ì‡ì?€¤„P³Þ„Pž‘³ß€Ž‡ï‡ï/€Ž‡ï‡ï/€¤„P³à„Pž’³á€Ž‡ò‡ò<€Ž‡ò‡ò<€¤„P³â„Pž“³ã€Ž‡õ‡õ'€Ž‡õ‡õ'€¤„P³ä„Pž”³å€Ž‡ø‡ø,€Ž‡ø‡ø,€¤„P³æ„Pž•³ç€Ž‡û‡û/€Ž‡û‡û/€¤„P³è„Pž–³é€Ž‡þ‡þ*€Ž‡þ‡þ*€¤„P³ê„Pž—³ë€Žˆˆ)€Žˆˆ)€¤„P³ì„Pž˜³í€Žˆˆ6€Žˆˆ6€¤„P³î„Pž™³ï€Žˆˆ-€Žˆˆ-€¤„P³ð„Pžš³ñ€Žˆ ˆ &€Žˆ ˆ &€¤„P³ò„Pž›³ó€Žˆ ˆ 9€Žˆ ˆ 9€¤„P³ô„Pžœ³õ€Žˆˆ/€Žˆˆ/€¤„P³ö„Pž³÷€Žˆˆ>€Žˆˆ>€¤„P³ø„Pžž³ù€Žˆˆ9€Žˆˆ9€¤„P³ú„PžŸ³û€ŽˆˆB€ŽˆˆB€¤„P³ü„Pž ³ý€Žˆˆ(€Žˆˆ(€¤„P³þ„Pž¡³ÿ€Žˆˆ6€Žˆˆ6€¤„P´„Pž¢´€Žˆ"ˆ"6€Žˆ"ˆ"6€¤„P´„Pž£´€Žˆ%ˆ%3€Žˆ%ˆ%3€¤„P´„Pž¤´€Žˆ(ˆ(8€Žˆ(ˆ(8€¤„P´„Pž¥´€Žˆ+ˆ+>€Žˆ+ˆ+>€¤„P´„Pž¦´ €Žˆ.ˆ.(€Žˆ.ˆ.(€¤„P´ „Pž§´ €Žˆ1ˆ1.€Žˆ1ˆ1.€¤„P´ „Pž¨´ €Žˆ4ˆ4%€Žˆ4ˆ4%€¤„P´„Pž©´€Žˆ7ˆ78€Žˆ7ˆ78€¤„P´„Pžª´€Žˆ:ˆ:.€Žˆ:ˆ:.€¤„P´„Pž«´€Žˆ=ˆ=,€Žˆ=ˆ=,€¤„P´„Pž¬´€Žˆ@ˆ@)€Žˆ@ˆ@)€¤„P´„Pž­´€ŽˆCˆC6€ŽˆCˆC6€¤„P´„Pž®´€ŽˆFˆF$€ŽˆFˆF$€¤„P´„Pž¯´€ŽˆIˆI.€ŽˆIˆI.€¤„P´„Pž°´€ŽˆLˆL3€ŽˆLˆL3>€¤„P®Û€ŽˆL4ˆL6´„Pž±´€ŽˆOˆO*€ŽˆOˆO*€¤„P´ „Pž²´!€ŽˆRˆR;€ŽˆRˆR;€¤„P´"„Pž³´#€ŽˆUˆU2€ŽˆUˆU2€¤„P´$„Pž´´%€ŽˆXˆX0€ŽˆXˆX0>€¤„P®Û€ŽˆX1ˆX3´&„Pžµ´'€Žˆ[ˆ[:€Žˆ[ˆ[:>€¤„P®Û€Žˆ[;ˆ[=´(„Pž¶´)€Žˆ^ˆ^8€Žˆ^ˆ^8€¤„P´*„Pž·´+€Žˆaˆa8€Žˆaˆa8€¤„P´,„Pž¸´-€Žˆdˆd5€Žˆdˆd5€¤„P´.„Pž¹´/€Žˆgˆg5€Žˆgˆg5€¤„P´0„Pžº´1€ŽˆjˆjA€ŽˆjˆjA€¤„P´2„Pž»´3€Žˆmˆm?€Žˆmˆm?€¤„P´4„Pž¼´5€Žˆpˆp2€Žˆpˆp2€¤„P´6„Pž½´7€ŽˆsˆsH€ŽˆsˆsH€¤„P´8„Pž¾´9€Žˆvˆv.€Žˆvˆv.€¤„P´:„Pž¿´;€Žˆyˆy<€Žˆyˆy<€¤„P´<„PžÀ´=€Žˆ|ˆ|2€Žˆ|ˆ|2€¤„P´>„PžÁ´?€Žˆˆ9€Žˆˆ9€¤„P´@„PžÂ´A€Žˆ‚ˆ‚<€Žˆ‚ˆ‚<€¤„P´B„PžÃ´C€Žˆ…ˆ…<€Žˆ…ˆ…<€¤„P´D„PžÄ´E€Žˆˆˆˆ/€Žˆˆˆˆ/€¤„P´F„PžÅ´G€Žˆ‹ˆ‹7€Žˆ‹ˆ‹7€¤„P´H„PžÆ´I€ŽˆŽˆŽ:€ŽˆŽˆŽ:€¤„P´J„PžÇ´K€Žˆ‘ˆ‘%€Žˆ‘ˆ‘%€¤„P´L„PžÈ´M€Žˆ”ˆ”7€Žˆ”ˆ”7€¤„P´N„PžÉ´O€Žˆ—ˆ—9€Žˆ—ˆ—9€¤„P´P„PžÊ´Q€Žˆšˆš7€Žˆšˆš7€¤„P´R„PžË´S€Žˆˆ-€Žˆˆ-€¤„P´T„PžÌ´U€Žˆ ˆ +€Žˆ ˆ +>€¤„P®Û€Žˆ ,ˆ .´V„PžÍ´W€Žˆ£ˆ£,€Žˆ£ˆ£,€¤„P´X„PžÎ´Y€Žˆ¦ˆ¦'€Žˆ¦ˆ¦'€¤„P´Z„PžÏ´[€Žˆ©ˆ©&€Žˆ©ˆ©&€¤„P´\„PžÐ´]€Žˆ¬ˆ¬1€Žˆ¬ˆ¬1>€¤„P®Û€Žˆ¬2ˆ¬4´^„PžÑ´_€Žˆ¯ˆ¯6€Žˆ¯ˆ¯6>€¤„P®Û€Žˆ¯7ˆ¯9´`„PžÒ´a€Žˆ²ˆ²4€Žˆ²ˆ²4€¤„P´b„PžÓ´c€Žˆµˆµ6€Žˆµˆµ6€¤„P´d„PžÔ´e€Žˆ¸ˆ¸1€Žˆ¸ˆ¸1€¤„P´f„PžÕ´g€Žˆ»ˆ»;€Žˆ»ˆ»;€¤„P´h„PžÖ´i€Žˆ¾ˆ¾2€Žˆ¾ˆ¾2€¤„P´j„Pž×´k€ŽˆÁˆÁ3€ŽˆÁˆÁ3€¤„P´l„PžØ´m€ŽˆÄˆÄK€ŽˆÄˆÄK€¤„P´n„PžÙ´o€ŽˆÇˆÇJ€ŽˆÇˆÇJ€¤„P´p„PžÚ´q€ŽˆÊˆÊ:€ŽˆÊˆÊ:>€¤„P®Û€ŽˆÊ;ˆÊ=´r„PžÛ´s€ŽˆÍˆÍC€ŽˆÍˆÍC€¤„P´t„PžÜ´u€ŽˆÐˆÐ>€ŽˆÐˆÐ>€¤„P´v„PžÝ´w€ŽˆÓˆÓ+€ŽˆÓˆÓ+€¤„P´x„PžÞ´y€ŽˆÖˆÖ<€ŽˆÖˆÖ<€¤„P´z„Pžß´{€ŽˆÙˆÙH€ŽˆÙˆÙH€¤„P´|„Pžà´}€ŽˆÜˆÜ?€ŽˆÜˆÜ?€¤„P´~„Pžá´€Žˆßˆß@€Žˆßˆß@€¤„P´€„Pžâ´€Žˆâˆâ1€Žˆâˆâ1€¤„P´‚„Pžã´ƒ€Žˆåˆå)€Žˆåˆå)€¤„P´„„Pžä´…€Žˆèˆè €Žˆèˆè €¤„P´†„Pžå´‡€Žˆëˆë<€Žˆëˆë<>€¤„P®Û€Žˆë=ˆë?´ˆ„Pžæ´‰€Žˆîˆî2€Žˆîˆî2>€¤„P®Û€Žˆî3ˆî5´Š„Pžç´‹€ŽˆñˆñQ€ŽˆñˆñQ€¤„P´Œ„Pžè´€ŽˆôˆôC€ŽˆôˆôC€¤„P´Ž„Pžé´€Žˆ÷ˆ÷G€Žˆ÷ˆ÷G€¤„P´„Pžê´‘€ŽˆúˆúD€ŽˆúˆúD€¤„P´’„Pžë´“€ŽˆýˆýU€ŽˆýˆýU€¤„P´”„Pžì´•€Ž‰‰"€Ž‰‰"€¤„P´–„Pží´—€Ž‰‰%€Ž‰‰%€¤„P´˜„Pžî´™€Ž‰‰(€Ž‰‰(€¤„P´š„Pžï´›€Ž‰ ‰ ?€Ž‰ ‰ ?€¤„P´œ„Pžð´€Ž‰ ‰ =€Ž‰ ‰ =€¤„P´ž„Pžñ´Ÿ€Ž‰‰>€Ž‰‰>€¤„P´ „Pžò´¡€Ž‰‰*€Ž‰‰*€¤„P´¢„Pžó´£€Ž‰‰B€Ž‰‰B€¤„P´¤„Pžô´¥€Ž‰‰N€Ž‰‰N€¤„P´¦„Pžõ´§€Ž‰‰?€Ž‰‰?€¤„P´¨„Pžö´©€Ž‰‰X€Ž‰‰X€¤„P´ª„Pž÷´«€Ž‰!‰!B€Ž‰!‰!B€¤„P´¬„Pžø´­€Ž‰$‰$6€Ž‰$‰$6€¤„P´®„Pžù´¯€Ž‰'‰'2€Ž‰'‰'2€¤„P´°„Pžú´±€Ž‰*‰*9€Ž‰*‰*9€¤„P´²„Pžû´³€Ž‰-‰-.€Ž‰-‰-.€¤„P´´„Pžü´µ€Ž‰0‰0E€Ž‰0‰0E€¤„P´¶„Pžý´·€Ž‰3‰3=€Ž‰3‰3=€¤„P´¸„Pžþ´¹€Ž‰6‰6*€Ž‰6‰6*€¤„P´º„Pžÿ´»€Ž‰9‰9.€Ž‰9‰9.€¤„P´¼„PŸ´½€Ž‰<‰<4€Ž‰<‰<4€¤„P´¾„PŸ´¿€Ž‰?‰?.€Ž‰?‰?.€¤„P´À„PŸ´Á€Ž‰B‰B0€Ž‰B‰B0€¤„P´Â„PŸ´Ã€Ž‰E‰E,€Ž‰E‰E,€¤„P´Ä„PŸ´Å€Ž‰H‰HA€Ž‰H‰HA€¤„P´Æ„PŸ´Ç€Ž‰K‰K2€Ž‰K‰K2€¤„P´È„PŸ´É€Ž‰N‰N/€Ž‰N‰N/€¤„P´Ê„PŸ´Ë€Ž‰Q‰Q2€Ž‰Q‰Q2€¤„P´Ì„PŸ´Í€Ž‰T‰T;€Ž‰T‰T;€¤„P´Î„PŸ ´Ï€Ž‰W‰W0€Ž‰W‰W0€¤„P´Ð„PŸ ´Ñ€Ž‰Z‰Z0€Ž‰Z‰Z0€¤„P´Ò„PŸ ´Ó€Ž‰]‰],€Ž‰]‰],€¤„P´Ô„PŸ ´Õ€Ž‰`‰`4€Ž‰`‰`4€¤„P´Ö„PŸ ´×€Ž‰c‰c*€Ž‰c‰c*€¤„P´Ø„PŸ´Ù€Ž‰f‰f<€Ž‰f‰f<€¤„P´Ú„PŸ´Û€Ž‰i‰i1€Ž‰i‰i1€¤„P´Ü„PŸ´Ý€Ž‰l‰lJ€Ž‰l‰lJ€¤„P´Þ„PŸ´ß€Ž‰o‰oH€Ž‰o‰oH>€¤„P®Û€Ž‰oI‰oK´à„PŸ´á€Ž‰r‰rM€Ž‰r‰rM€¤„P´â„PŸ´ã€Ž‰u‰u]€Ž‰u‰u]€¤„P´ä„PŸ´å€Ž‰x‰x6€Ž‰x‰x6€¤„P´æ„PŸ´ç€Ž‰{‰{D€Ž‰{‰{D€¤„P´è„PŸ´é€Ž‰~‰~@€Ž‰~‰~@€¤„P´ê„PŸ´ë€Ž‰‰<€Ž‰‰<€¤„P´ì„PŸ´í€Ž‰„‰„2€Ž‰„‰„2>€¤„P®Û€Ž‰„3‰„5´î„PŸ´ï€Ž‰‡‰‡(€Ž‰‡‰‡(>>>€¤„P®Û€Ž‰‡)‰‡+¡€Ž‰‡=‰‡?¢€Ž‰‡Q‰‡S´ð„PŸ´ñ€Ž‰Š‰Š*€Ž‰Š‰Š*>>>€¤„P®Û€Ž‰Š+‰Š-¡€Ž‰Š?‰ŠA¢€Ž‰ŠS‰ŠU´ò„PŸ´ó€Ž‰‰/€Ž‰‰/>>€¤„P®Û€Ž‰0‰2¡€Ž‰D‰F´ô„PŸ´õ€Ž‰‰"€Ž‰‰">€¤„P®Û€Ž‰#‰%´ö„PŸ´÷€Ž‰“‰“!€Ž‰“‰“!>€¤„P®Û€Ž‰“"‰“$´ø„PŸ´ù€Ž‰–‰–2€Ž‰–‰–2€¤„P´ú„PŸ´û€Ž‰™‰™1€Ž‰™‰™1>€¤„P®Û€Ž‰™2‰™4´ü„PŸ ´ý€Ž‰œ‰œ2€Ž‰œ‰œ2€¤„P´þ„PŸ!´ÿ€Ž‰Ÿ‰Ÿ/€Ž‰Ÿ‰Ÿ/>€¤„P®Û€Ž‰Ÿ0‰Ÿ2µ„PŸ"µ€Ž‰¢‰¢=€Ž‰¢‰¢=€¤„Pµ„PŸ#µ€Ž‰¥‰¥:€Ž‰¥‰¥:€¤„Pµ„PŸ$µ€Ž‰¨‰¨9€Ž‰¨‰¨9€¤„Pµ„PŸ%µ€Ž‰«‰«5€Ž‰«‰«5€¤„Pµ„PŸ&µ €Ž‰®‰®F€Ž‰®‰®F€¤„Pµ „PŸ'µ €Ž‰±‰±7€Ž‰±‰±7€¤„Pµ „PŸ(µ €Ž‰´‰´,€Ž‰´‰´,€¤„Pµ„PŸ)µ€Ž‰·‰·+€Ž‰·‰·+>€¤„P®Û€Ž‰·,‰·.µ„PŸ*µ€Ž‰º‰º6€Ž‰º‰º6€¤„Pµ„PŸ+µ€Ž‰½‰½-€Ž‰½‰½-€¤„Pµ„PŸ,µ€Ž‰À‰À#€Ž‰À‰À#€¤„Pµ„PŸ-µ€Ž‰Ã‰Ã3€Ž‰Ã‰Ã3€¤„Pµ„PŸ.µ€Ž‰Æ‰Æ.€Ž‰Æ‰Æ.€¤„Pµ„PŸ/µ€Ž‰É‰É9€Ž‰É‰É9€¤„Pµ„PŸ0µ€Ž‰Ì‰Ì:€Ž‰Ì‰Ì:€¤„Pµ„PŸ1µ€Ž‰Ï‰ÏA€Ž‰Ï‰ÏA€¤„Pµ „PŸ2µ!€Ž‰Ò‰Ò>€Ž‰Ò‰Ò>€¤„Pµ"„PŸ3µ#€Ž‰Õ‰Õ)€Ž‰Õ‰Õ)‚ó>€¤„P®Û€Ž‰Õ*‰Õ,¡€Ž‰Õ=‰Õ?µ$„PŸ4µ%€Ž‰Ø‰Ø€Ž‰Ø‰Ø€¤„Pµ&„PŸ5µ'€Ž‰Û‰Û&€Ž‰Û‰Û&€¤„Pµ(„PŸ6µ)€Ž‰Þ‰Þ"€Ž‰Þ‰Þ"€¤„Pµ*„PŸ7µ+€Ž‰á‰á"€Ž‰á‰á"€¤„Pµ,„PŸ8µ-€Ž‰ä‰ä"€Ž‰ä‰ä"€¤„Pµ.„PŸ9µ/€Ž‰ç‰ç!€Ž‰ç‰ç!€¤„Pµ0„PŸ:µ1€Ž‰ê‰ê€Ž‰ê‰ê€¤„Pµ2„PŸ;µ3€Ž‰í‰í€Ž‰í‰í€¤„Pµ4„PŸ<µ5€Ž‰ð‰ð#€Ž‰ð‰ð#€¤„Pµ6„PŸ=µ7€Ž‰ó‰ó(€Ž‰ó‰ó(€¤„Pµ8„PŸ>µ9€Ž‰ö‰ö€Ž‰ö‰ö€¤„Pµ:„PŸ?µ;€Ž‰ù‰ù€Ž‰ù‰ù€¤„Pµ<„PŸ@µ=€Ž‰ü‰ü!€Ž‰ü‰ü!€¤„Pµ>„PŸAµ?€Ž‰ÿ‰ÿ€Ž‰ÿ‰ÿ€¤„Pµ@„PŸBµA€ŽŠŠ€ŽŠŠ€¤„PµB„PŸCµC€ŽŠŠ€ŽŠŠ€¤„PµD„PŸDµE€ŽŠŠ#€ŽŠŠ#€¤„PµF„PŸEµG€ŽŠ Š %€ŽŠ Š %€¤„PµH„PŸFµI€ŽŠŠ€ŽŠŠ€¤„PµJ„PŸGµK€ŽŠŠ"€ŽŠŠ"€¤„PµL„PŸHµM€ŽŠŠ€ŽŠŠ€¤„PµN„PŸIµO€ŽŠŠ€ŽŠŠ€¤„PµP„PŸJµQ€ŽŠŠ€ŽŠŠ€¤„PµR„PŸKµS€ŽŠŠ€ŽŠŠ€¤„PµT„PŸLµU€ŽŠ Š #€ŽŠ Š #€¤„PµV„PŸMµW€ŽŠ#Š##€ŽŠ#Š##€¤„PµX„PŸNµY€ŽŠ&Š&!€ŽŠ&Š&!€¤„PµZ„PŸOµ[€ŽŠ)Š)€ŽŠ)Š)€¤„Pµ\„PŸPµ]€ŽŠ,Š,€ŽŠ,Š,€¤„Pµ^„PŸQµ_€ŽŠ/Š/€ŽŠ/Š/€¤„Pµ`„PŸRµa€ŽŠ2Š2€ŽŠ2Š2€¤„Pµb„PŸSµc€ŽŠ5Š5€ŽŠ5Š5€¤„Pµd„PŸTµe€ŽŠ8Š8%€ŽŠ8Š8%€¤„Pµf„PŸUµg€ŽŠ;Š;€ŽŠ;Š;€¤„Pµh„PŸVµi€ŽŠ>Š>€ŽŠ>Š>€¤„Pµj„PŸWµk€ŽŠAŠA€ŽŠAŠA€¤„Pµl„PŸXµm€ŽŠDŠD €ŽŠDŠD €¤„Pµn„PŸYµo€ŽŠGŠG€ŽŠGŠG€¤„Pµp„PŸZµq€ŽŠJŠJ€ŽŠJŠJ€¤„Pµr„PŸ[µs€ŽŠMŠM!€ŽŠMŠM!€¤„Pµt„PŸ\µu€ŽŠPŠP!€ŽŠPŠP!€¤„Pµv„PŸ]µw€ŽŠSŠS €ŽŠSŠS €¤„Pµx„PŸ^µy€ŽŠVŠV €ŽŠVŠV €¤„Pµz„PŸ_µ{€ŽŠYŠY€ŽŠYŠY€¤„Pµ|„PŸ`µ}€ŽŠ\Š\€ŽŠ\Š\€¤„Pµ~„PŸaµ€ŽŠ_Š_&€ŽŠ_Š_&€¤„Pµ€„PŸbµ€ŽŠbŠb(€ŽŠbŠb(>€¤„P®Û€ŽŠb)Šb+µ‚„PŸcµƒ€ŽŠeŠe+€ŽŠeŠe+>€¤„P®Û€ŽŠe,Še.µ„„PŸdµ…€ŽŠhŠh)€ŽŠhŠh)‚󀤄P®Û€ŽŠh*Šh,µ†„PŸeµ‡€ŽŠkŠk!€ŽŠkŠk!>€¤„P®Û€ŽŠk"Šk$µˆ„PŸfµ‰€ŽŠnŠn*€ŽŠnŠn*€¤„PµŠ„PŸgµ‹€ŽŠqŠq(€ŽŠqŠq(€¤„PµŒ„PŸhµ€ŽŠtŠt+€ŽŠtŠt+€¤„PµŽ„PŸiµ€ŽŠwŠw*€ŽŠwŠw*€¤„Pµ„PŸjµ‘€ŽŠzŠz)€ŽŠzŠz)€¤„Pµ’„PŸkµ“€ŽŠ}Š}'€ŽŠ}Š}'€¤„Pµ”„PŸlµ•€ŽŠ€Š€(€ŽŠ€Š€(€¤„Pµ–„PŸmµ—€ŽŠƒŠƒ$€ŽŠƒŠƒ$€¤„Pµ˜„PŸnµ™€ŽŠ†І(€ŽŠ†І(€¤„Pµš„PŸoµ›€ŽŠ‰Љ,€ŽŠ‰Љ,€¤„Pµœ„PŸpµ€ŽŠŒŠŒ4€ŽŠŒŠŒ4>€¤„P®Û€ŽŠŒ5ŠŒ7µž„PŸqµŸ€ŽŠŠ%€ŽŠŠ%>€¤„P®Û€ŽŠ&Š(µ „PŸrµ¡€ŽŠ’Š’+€ŽŠ’Š’+>€¤„P®Û€ŽŠ’,Š’.µ¢„PŸsµ£€ŽŠ•Š•'€ŽŠ•Š•'>€¤„P®Û€ŽŠ•(Š•*µ¤„PŸtµ¥€ŽŠ˜Š˜6€ŽŠ˜Š˜6>>€¤„P®Û€ŽŠ˜7Š˜9¡€ŽŠ˜KŠ˜Mµ¦„PŸuµ§€ŽŠ›Š›!€ŽŠ›Š›!>€¤„P®Û€ŽŠ›"Š›$µ¨„PŸvµ©€ŽŠžŠž#€ŽŠžŠž#€¤„Pµª„PŸwµ«€ŽŠ¡Š¡&€ŽŠ¡Š¡&€¤„Pµ¬„PŸxµ­€ŽŠ¤Ф&€ŽŠ¤Ф&€¤„Pµ®„PŸyµ¯€ŽŠ§Ч-€ŽŠ§Ч->€¤„P®Û€ŽŠ§.Ч0µ°„PŸzµ±€ŽŠªŠª"€ŽŠªŠª"€¤„Pµ²„PŸ{µ³€ŽŠ­Š­€ŽŠ­Š­€¤„Pµ´„PŸ|µµ€ŽŠ°а"€ŽŠ°а"€¤„Pµ¶„PŸ}µ·€ŽŠ³г$€ŽŠ³г$€¤„Pµ¸„PŸ~µ¹€ŽŠ¶ж(€ŽŠ¶ж(‚󀤄P®Û€ŽŠ¶)ж+µº„PŸµ»€ŽŠ¹й#€ŽŠ¹й#€¤„Pµ¼„PŸ€µ½€ŽŠ¼м-€ŽŠ¼м-€¤„Pµ¾„PŸµ¿€ŽŠ¿Š¿*€ŽŠ¿Š¿*€¤„PµÀ„PŸ‚µÁ€ŽŠÂŠÂ€ŽŠÂŠÂ€¤„PµÂ„PŸƒµÃ€ŽŠÅŠÅ€ŽŠÅŠÅ€¤„PµÄ„PŸ„µÅ€ŽŠÈŠÈ"€ŽŠÈŠÈ"€¤„PµÆ„PŸ…µÇ€ŽŠËŠË)€ŽŠËŠË)€¤„PµÈ„PŸ†µÉ€ŽŠÎŠÎ"€ŽŠÎŠÎ"€¤„PµÊ„PŸ‡µË€ŽŠÑŠÑ)€ŽŠÑŠÑ)€¤„PµÌ„PŸˆµÍ€ŽŠÔŠÔ#€ŽŠÔŠÔ#€¤„PµÎ„PŸ‰µÏ€ŽŠ×Š× €ŽŠ×Š× €¤„PµÐ„PŸŠµÑ€ŽŠÚŠÚ+€ŽŠÚŠÚ+€¤„PµÒ„PŸ‹µÓ€ŽŠÝŠÝ#€ŽŠÝŠÝ#>€¤„P®Û€ŽŠÝ$ŠÝ&µÔ„PŸŒµÕ€ŽŠàŠà"€ŽŠàŠà">€¤„P®Û€ŽŠà#Šà%µÖ„PŸµ×€ŽŠãŠã+€ŽŠãŠã+€¤„PµØ„PŸŽµÙ€ŽŠæŠæ'€ŽŠæŠæ'€¤„PµÚ„PŸµÛ€ŽŠéŠé=€ŽŠéŠé=€¤„PµÜ„PŸµÝ€ŽŠìŠì?€ŽŠìŠì?€¤„PµÞ„PŸ‘µß€ŽŠïŠï0€ŽŠïŠï0€¤„Pµà„PŸ’µá€ŽŠòŠò'€ŽŠòŠò'€¤„Pµâ„PŸ“µã€ŽŠõŠõ)€ŽŠõŠõ)>€¤„P®Û€ŽŠõ*Šõ,µä„PŸ”µå€ŽŠøŠø9€ŽŠøŠø9€¤„Pµæ„PŸ•µç€ŽŠûŠû)€ŽŠûŠû)>>>€¤„P®Û€ŽŠû*Šû,¡€ŽŠû>Šû@¢€ŽŠûRŠûTµè„PŸ–µé€ŽŠþŠþ%€ŽŠþŠþ%>€¤„P®Û€ŽŠþ&Šþ(µê„PŸ—µë€Ž‹‹,€Ž‹‹,>€¤„P®Û€Ž‹-‹/µì„PŸ˜µí€Ž‹‹&€Ž‹‹&>€¤„P®Û€Ž‹'‹)µî„PŸ™µï€Ž‹‹*€Ž‹‹*>€¤„P®Û€Ž‹+‹-µð„PŸšµñ€Ž‹ ‹ &€Ž‹ ‹ &>€¤„P®Û€Ž‹ '‹ )µò„PŸ›µó€Ž‹ ‹ 3€Ž‹ ‹ 3>€¤„P®Û€Ž‹ 4‹ 6µô„PŸœµõ€Ž‹‹'€Ž‹‹'€¤„Pµö„PŸµ÷€Ž‹‹&€Ž‹‹&€¤„Pµø„PŸžµù€Ž‹‹.€Ž‹‹.€¤„Pµú„PŸŸµû€Ž‹‹<€Ž‹‹<€¤„Pµü„PŸ µý€Ž‹‹$€Ž‹‹$€¤„Pµþ„PŸ¡µÿ€Ž‹‹9€Ž‹‹9€¤„P¶„PŸ¢¶€Ž‹"‹"=€Ž‹"‹"=€¤„P¶„PŸ£¶€Ž‹%‹%*€Ž‹%‹%*>€¤„P®Û€Ž‹%+‹%-¶„PŸ¤¶€Ž‹(‹(%€Ž‹(‹(%>€¤„P®Û€Ž‹(&‹((¶„PŸ¥¶€Ž‹+‹+<€Ž‹+‹+<€¤„P¶„PŸ¦¶ €Ž‹.‹.,€Ž‹.‹.,>>€¤„P®Û€Ž‹.-‹./¡€Ž‹.A‹.C¶ „PŸ§¶ €Ž‹1‹1<€Ž‹1‹1<>>€¤„P®Û€Ž‹1=‹1?¡€Ž‹1Q‹1S¶ „PŸ¨¶ €Ž‹4‹4=€Ž‹4‹4=€¤„P¶„PŸ©¶€Ž‹7‹75€Ž‹7‹75>>>€¤„P®Û€Ž‹76‹78¡€Ž‹7J‹7L¢€Ž‹7^‹7`¶„PŸª¶€Ž‹:‹:6€Ž‹:‹:6>€¤„P®Û€Ž‹:7‹:9¶„PŸ«¶€Ž‹=‹=3€Ž‹=‹=3>€¤„P®Û€Ž‹=4‹=6¶„PŸ¬¶€Ž‹@‹@?€Ž‹@‹@?>€¤„P®Û€Ž‹@@‹@B¶„PŸ­¶€Ž‹C‹C9€Ž‹C‹C9>€¤„P®Û€Ž‹C:‹C<¶„PŸ®¶€Ž‹F‹F8€Ž‹F‹F8€¤„P¶„PŸ¯¶€Ž‹I‹I7€Ž‹I‹I7€¤„P¶„PŸ°¶€Ž‹L‹L(€Ž‹L‹L(>€¤„P®Û€Ž‹L)‹L+¶„PŸ±¶€Ž‹O‹O&€Ž‹O‹O&>€¤„P®Û€Ž‹O'‹O)¶ „PŸ²¶!€Ž‹R‹R0€Ž‹R‹R0€¤„P¶"„PŸ³¶#€Ž‹U‹U=€Ž‹U‹U=>€¤„P®Û€Ž‹U>‹U@¶$„PŸ´¶%€Ž‹X‹X?€Ž‹X‹X?€¤„P¶&„PŸµ¶'€Ž‹[‹[)€Ž‹[‹[)€¤„P¶(„PŸ¶¶)€Ž‹^‹^J€Ž‹^‹^J>>€¤„P®Û€Ž‹^K‹^M¡€Ž‹^_‹^a¶*„PŸ·¶+€Ž‹a‹aC€Ž‹a‹aC>>€¤„P®Û€Ž‹aD‹aF¡€Ž‹aX‹aZ¶,„PŸ¸¶-€Ž‹d‹d-€Ž‹d‹d-€¤„P¶.„PŸ¹¶/€Ž‹g‹g-€Ž‹g‹g-€¤„P¶0„PŸº¶1€Ž‹j‹j)€Ž‹j‹j)€¤„P¶2„PŸ»¶3€Ž‹m‹m/€Ž‹m‹m/>>€¤„P®Û€Ž‹m0‹m2¡€Ž‹mD‹mF¶4„PŸ¼¶5€Ž‹p‹p%€Ž‹p‹p%€¤„P¶6„PŸ½¶7€Ž‹s‹s%€Ž‹s‹s%>€¤„P®Û€Ž‹s&‹s(¶8„PŸ¾¶9€Ž‹v‹v2€Ž‹v‹v2>€¤„P®Û€Ž‹v3‹v5¶:„PŸ¿¶;€Ž‹y‹y)€Ž‹y‹y)>€¤„P®Û€Ž‹y*‹y,¶<„PŸÀ¶=€Ž‹|‹|(€Ž‹|‹|(€¤„P¶>„PŸÁ¶?€Ž‹‹2€Ž‹‹2>€¤„P®Û€Ž‹3‹5¶@„PŸÂ¶A€Ž‹‚‹‚#€Ž‹‚‹‚#>€¤„P®Û€Ž‹‚$‹‚&¶B„PŸÃ¶C€Ž‹…‹…*€Ž‹…‹…*€¤„P¶D„PŸÄ¶E€Ž‹ˆ‹ˆ+€Ž‹ˆ‹ˆ+>€¤„P®Û€Ž‹ˆ,‹ˆ.¶F„PŸÅ¶G€Ž‹‹‹‹*€Ž‹‹‹‹*€¤„P¶H„PŸÆ¶I€Ž‹Ž‹Ž-€Ž‹Ž‹Ž-€¤„P¶J„PŸÇ¶K€Ž‹‘‹‘,€Ž‹‘‹‘,€¤„P¶L„PŸÈ¶M€Ž‹”‹”,€Ž‹”‹”,€¤„P¶N„PŸÉ¶O€Ž‹—‹—.€Ž‹—‹—.€¤„P¶P„PŸÊ¶Q€Ž‹š‹š.€Ž‹š‹š.€¤„P¶R„PŸË¶S€Ž‹‹0€Ž‹‹0€¤„P¶T„PŸÌ¶U€Ž‹ ‹ .€Ž‹ ‹ .€¤„P¶V„PŸÍ¶W€Ž‹£‹£0€Ž‹£‹£0€¤„P¶X„PŸÎ¶Y€Ž‹¦‹¦(€Ž‹¦‹¦(€¤„P¶Z„PŸÏ¶[€Ž‹©‹©*€Ž‹©‹©*€¤„P¶\„PŸÐ¶]€Ž‹¬‹¬!€Ž‹¬‹¬!€¤„P¶^„PŸÑ¶_€Ž‹¯‹¯"€Ž‹¯‹¯"€¤„P¶`„PŸÒ¶a€Ž‹²‹²,€Ž‹²‹²,€¤„P¶b„PŸÓ¶c€Ž‹µ‹µ*€Ž‹µ‹µ*€¤„P¶d„PŸÔ¶e€Ž‹¸‹¸'€Ž‹¸‹¸'€¤„P¶f„PŸÕ¶g€Ž‹»‹»'€Ž‹»‹»'€¤„P¶h„PŸÖ¶i€Ž‹¾‹¾4€Ž‹¾‹¾4€¤„P¶j„PŸ×¶k€Ž‹Á‹Á"€Ž‹Á‹Á"€¤„P¶l„PŸØ¶m€Ž‹Ä‹Ä#€Ž‹Ä‹Ä#€¤„P¶n„PŸÙ¶o€Ž‹Ç‹Ç&€Ž‹Ç‹Ç&>€¤„P®Û€Ž‹Ç'‹Ç)¶p„PŸÚ¶q€Ž‹Ê‹Ê&€Ž‹Ê‹Ê&€¤„P¶r„PŸÛ¶s€Ž‹Í‹Í)€Ž‹Í‹Í)€¤„P¶t„PŸÜ¶u€Ž‹Ð‹Ð-€Ž‹Ð‹Ð-€¤„P¶v„PŸÝ¶w€Ž‹Ó‹Ó(€Ž‹Ó‹Ó(€¤„P¶x„PŸÞ¶y€Ž‹Ö‹Ö+€Ž‹Ö‹Ö+€¤„P¶z„PŸß¶{€Ž‹Ù‹Ù)€Ž‹Ù‹Ù)€¤„P¶|„PŸà¶}€Ž‹Ü‹Ü(€Ž‹Ü‹Ü(€¤„P¶~„PŸá¶€Ž‹ß‹ß)€Ž‹ß‹ß)€¤„P¶€„PŸâ¶€Ž‹â‹â.€Ž‹â‹â.€¤„P¶‚„PŸã¶ƒ€Ž‹å‹å9€Ž‹å‹å9>€¤„P®Û€Ž‹å:‹å<¶„„PŸä¶…€Ž‹è‹è=€Ž‹è‹è=>‚󀤄P®Û€Ž‹è>‹è@¡€Ž‹èR‹èT¶†„PŸå¶‡€Ž‹ë‹ë>€Ž‹ë‹ë>>€¤„P®Û€Ž‹ë?‹ëA¶ˆ„PŸæ¶‰€Ž‹î‹î.€Ž‹î‹î.€¤„P¶Š„PŸç¶‹€Ž‹ñ‹ñ5€Ž‹ñ‹ñ5>>€¤„P®Û€Ž‹ñ6‹ñ8¡€Ž‹ñJ‹ñL¶Œ„PŸè¶€Ž‹ô‹ô5€Ž‹ô‹ô5>>€¤„P®Û€Ž‹ô6‹ô8¡€Ž‹ôJ‹ôL¶Ž„PŸé¶€Ž‹÷‹÷'€Ž‹÷‹÷'>>>€¤„P®Û€Ž‹÷(‹÷*¡€Ž‹÷<‹÷>¢€Ž‹÷P‹÷R¶„PŸê¶‘€Ž‹ú‹ú'€Ž‹ú‹ú'>>>€¤„P®Û€Ž‹ú(‹ú*¡€Ž‹ú<‹ú>¢€Ž‹úP‹úR¶’„PŸë¶“€Ž‹ý‹ý%€Ž‹ý‹ý%>>>€¤„P®Û€Ž‹ý&‹ý(¡€Ž‹ý:‹ý<¢€Ž‹ýN‹ýP¶”„PŸì¶•€ŽŒŒ%€ŽŒŒ%>>>€¤„P®Û€ŽŒ&Œ(¡€ŽŒ:Œ<¢€ŽŒNŒP¶–„PŸí¶—€ŽŒŒ3€ŽŒŒ3>>€¤„P®Û€ŽŒ4Œ6¡€ŽŒHŒJ¶˜„PŸî¶™€ŽŒŒ3€ŽŒŒ3>>€¤„P®Û€ŽŒ4Œ6¡€ŽŒHŒJ¶š„PŸï¶›€ŽŒ Œ G€ŽŒ Œ G€¤„P¶œ„PŸð¶€ŽŒ Œ €ŽŒ Œ >€¤„P®Û€ŽŒ !Œ #¶ž„PŸñ¶Ÿ€ŽŒŒ'€ŽŒŒ'>€¤„P®Û€ŽŒ(Œ*¶ „PŸò¶¡€ŽŒŒ-€ŽŒŒ-€¤„P¶¢„PŸó¶£€ŽŒŒ.€ŽŒŒ.€¤„P¶¤„PŸô¶¥€ŽŒŒ%€ŽŒŒ%€¤„P¶¦„PŸõ¶§€ŽŒŒ?€ŽŒŒ?€¤„P¶¨„PŸö¶©€ŽŒŒC€ŽŒŒC€¤„P¶ª„PŸ÷¶«€ŽŒ!Œ!'€ŽŒ!Œ!'€¤„P¶¬„PŸø¶­€ŽŒ$Œ$'€ŽŒ$Œ$'€¤„P¶®„PŸù¶¯€ŽŒ'Œ'#€ŽŒ'Œ'#€¤„P¶°„PŸú¶±€ŽŒ*Œ*-€ŽŒ*Œ*->>€¤„P®Û€ŽŒ*.Œ*0¡€ŽŒ*BŒ*D¶²„PŸû¶³€ŽŒ-Œ-1€ŽŒ-Œ-1>>€¤„P®Û€ŽŒ-2Œ-4¡€ŽŒ-FŒ-H¶´„PŸü¶µ€ŽŒ0Œ05€ŽŒ0Œ05>>>€¤„P®Û€ŽŒ06Œ08¡€ŽŒ0JŒ0L¢€ŽŒ0^Œ0`¶¶„PŸý¶·€ŽŒ3Œ3)€ŽŒ3Œ3)>>>€¤„P®Û€ŽŒ3*Œ3,¡€ŽŒ3>Œ3@¢€ŽŒ3RŒ3T¶¸„PŸþ¶¹€ŽŒ6Œ69€ŽŒ6Œ69>>>€¤„P®Û€ŽŒ6:Œ6<¡€ŽŒ6NŒ6P¢€ŽŒ6bŒ6d¶º„PŸÿ¶»€ŽŒ9Œ9-€ŽŒ9Œ9-€¤„P¶¼„P ¶½€ŽŒ<Œ<*€ŽŒ<Œ<*>€¤„P®Û€ŽŒ<+Œ<-¶¾„P ¶¿€ŽŒ?Œ?'€ŽŒ?Œ?'>€¤„P®Û€ŽŒ?(Œ?*¶À„P ¶Á€ŽŒBŒBF€ŽŒBŒBF€¤„P¶Â„P ¶Ã€ŽŒEŒE$€ŽŒEŒE$>€¤„P®Û€ŽŒE%ŒE'¶Ä„P ¶Å€ŽŒHŒH0€ŽŒHŒH0>€¤„P®Û€ŽŒH1ŒH3¶Æ„P ¶Ç€ŽŒKŒK9€ŽŒKŒK9€¤„P¶È„P ¶É€ŽŒNŒN!€ŽŒNŒN!>€¤„P®Û€ŽŒN"ŒN$¶Ê„P ¶Ë€ŽŒQŒQA€ŽŒQŒQA>>€¤„P®Û€ŽŒQBŒQD¡€ŽŒQVŒQX¶Ì„P ¶Í€ŽŒTŒT:€ŽŒTŒT:€¤„P¶Î„P  ¶Ï€ŽŒWŒW+€ŽŒWŒW+€¤„P¶Ð„P  ¶Ñ€ŽŒZŒZ5€ŽŒZŒZ5€¤„P¶Ò„P  ¶Ó€ŽŒ]Œ]0€ŽŒ]Œ]0€¤„P¶Ô„P  ¶Õ€ŽŒ`Œ`#€ŽŒ`Œ`#€¤„P¶Ö„P  ¶×€ŽŒcŒc6€ŽŒcŒc6>€¤„P®Û€ŽŒc7Œc9¶Ø„P ¶Ù€ŽŒfŒf2€ŽŒfŒf2>€¤„P®Û€ŽŒf3Œf5¶Ú„P ¶Û€ŽŒiŒi5€ŽŒiŒi5€¤„P¶Ü„P ¶Ý€ŽŒlŒl<€ŽŒlŒl<€¤„P¶Þ„P ¶ß€ŽŒoŒo-€ŽŒoŒo-€¤„P¶à„P ¶á€ŽŒrŒr7€ŽŒrŒr7€¤„P¶â„P ¶ã€ŽŒuŒu:€ŽŒuŒu:€¤„P¶ä„P ¶å€ŽŒxŒx)€ŽŒxŒx)>€¤„P®Û€ŽŒx*Œx,¶æ„P ¶ç€ŽŒ{Œ{)€ŽŒ{Œ{)€¤„P¶è„P ¶é€ŽŒ~Œ~;€ŽŒ~Œ~;>>€¤„P®Û€ŽŒ~<Œ~>¡€ŽŒ~PŒ~R¶ê„P ¶ë€ŽŒŒ8€ŽŒŒ8€¤„P¶ì„P ¶í€ŽŒ„Œ„'€ŽŒ„Œ„'€¤„P¶î„P ¶ï€ŽŒ‡Œ‡9€ŽŒ‡Œ‡9>€¤„P®Û€ŽŒ‡:Œ‡<¶ð„P ¶ñ€ŽŒŠŒŠ*€ŽŒŠŒŠ*€¤„P¶ò„P ¶ó€ŽŒŒ2€ŽŒŒ2€¤„P¶ô„P ¶õ€ŽŒŒ6€ŽŒŒ6>€¤„P®Û€ŽŒ7Œ9¶ö„P ¶÷€ŽŒ“Œ“2€ŽŒ“Œ“2€¤„P¶ø„P ¶ù€ŽŒ–Œ–2€ŽŒ–Œ–2>>€¤„P®Û€ŽŒ–3Œ–5¡€ŽŒ–GŒ–I¶ú„P ¶û€ŽŒ™Œ™)€ŽŒ™Œ™)€¤„P¶ü„P  ¶ý€ŽŒœŒœ1€ŽŒœŒœ1€¤„P¶þ„P !¶ÿ€ŽŒŸŒŸ.€ŽŒŸŒŸ.>€¤„P®Û€ŽŒŸ/ŒŸ1·„P "·€ŽŒ¢Œ¢,€ŽŒ¢Œ¢,€¤„P·„P #·€ŽŒ¥Œ¥5€ŽŒ¥Œ¥5€¤„P·„P $·€ŽŒ¨Œ¨)€ŽŒ¨Œ¨)>€¤„P®Û€ŽŒ¨*Œ¨,·„P %·€ŽŒ«Œ«%€ŽŒ«Œ«%€¤„P·„P &· €ŽŒ®Œ®(€ŽŒ®Œ®(€¤„P· „P '· €ŽŒ±Œ±T€ŽŒ±Œ±T€¤„P· „P (· €ŽŒ´Œ´0€ŽŒ´Œ´0€¤„P·„P )·€ŽŒ·Œ·"€ŽŒ·Œ·"€¤„P·„P *·€ŽŒºŒº$€ŽŒºŒº$€¤„P·„P +·€ŽŒ½Œ½*€ŽŒ½Œ½*€¤„P·„P ,·€ŽŒÀŒÀ'€ŽŒÀŒÀ'>€¤„P®Û€ŽŒÀ(ŒÀ*·„P -·€ŽŒÃŒÃ)€ŽŒÃŒÃ)€¤„P·„P .·€ŽŒÆŒÆ3€ŽŒÆŒÆ3>€¤„P®Û€ŽŒÆ4ŒÆ6·„P /·€ŽŒÉŒÉ4€ŽŒÉŒÉ4€¤„P·„P 0·€ŽŒÌŒÌ'€ŽŒÌŒÌ'€¤„P·„P 1·€ŽŒÏŒÏ,€ŽŒÏŒÏ,€¤„P· „P 2·!€ŽŒÒŒÒ-€ŽŒÒŒÒ->€¤„P®Û€ŽŒÒ.ŒÒ0·"„P 3·#€ŽŒÕŒÕ;€ŽŒÕŒÕ;>€¤„P®Û€ŽŒÕ<ŒÕ>·$„P 4·%€ŽŒØŒØ4€ŽŒØŒØ4>€¤„P®Û€ŽŒØ5ŒØ7·&„P 5·'€ŽŒÛŒÛ,€ŽŒÛŒÛ,>€¤„P®Û€ŽŒÛ-ŒÛ/·(„P 6·)€ŽŒÞŒÞ)€ŽŒÞŒÞ)>>€¤„P®Û€ŽŒÞ*ŒÞ,¡€ŽŒÞ>ŒÞ@·*„P 7·+€ŽŒáŒá4€ŽŒáŒá4€¤„P·,„P 8·-€ŽŒäŒä2€ŽŒäŒä2€¤„P·.„P 9·/€ŽŒçŒç%€ŽŒçŒç%€¤„P·0„P :·1€ŽŒêŒê#€ŽŒêŒê#€¤„P·2„P ;·3€ŽŒíŒí#€ŽŒíŒí#€¤„P·4„P <·5€ŽŒðŒð+€ŽŒðŒð+>€¤„P®Û€ŽŒð,Œð.·6„P =·7€ŽŒóŒó"€ŽŒóŒó"€¤„P·8„P >·9€ŽŒöŒö€ŽŒöŒö>€¤„P®Û€ŽŒö Œö"·:„P ?·;€ŽŒùŒù-€ŽŒùŒù->€¤„P®Û€ŽŒù.Œù0·<„P @·=€ŽŒüŒü4€ŽŒüŒü4>>€¤„P®Û€ŽŒü5Œü7¡€ŽŒüIŒüK·>„P A·?€ŽŒÿŒÿ)€ŽŒÿŒÿ)>€¤„P®Û€ŽŒÿ*Œÿ,·@„P B·A€Ž€Ž>€¤„P®Û€Ž!·B„P C·C€Ž+€Ž+>>€¤„P®Û€Ž,.¡€Ž@B·D„P D·E€ŽD€ŽD>>>€¤„P®Û€ŽEG¡€ŽY[¢€Žmo·F„P E·G€Ž  4€Ž  4>>€¤„P®Û€Ž 5 7¡€Ž I K·H„P F·I€Ž2€Ž2>>€¤„P®Û€Ž35¡€ŽGI·J„P G·K€Ž,€Ž,>€¤„P®Û€Ž-/·L„P H·M€Ž$€Ž$>€¤„P®Û€Ž%'·N„P I·O€Ž$€Ž$>€¤„P®Û€Ž%'·P„P J·Q€Ž)€Ž)>>€¤„P®Û€Ž*,¡€Ž>@·R„P K·S€Ž)€Ž)>>€¤„P®Û€Ž*,¡€Ž>@·T„P L·U€Ž  1€Ž  1>>€¤„P®Û€Ž 2 4¡€Ž F H·V„P M·W€Ž##1€Ž##1>>€¤„P®Û€Ž#2#4¡€Ž#F#H·X„P N·Y€Ž&&2€Ž&&2>>€¤„P®Û€Ž&3&5¡€Ž&G&I·Z„P O·[€Ž))2€Ž))2>>€¤„P®Û€Ž)3)5¡€Ž)G)I·\„P P·]€Ž,,A€Ž,,A€¤„P·^„P Q·_€Ž//=€Ž//=>>>€¤„P®Û€Ž/>/@¡€Ž/R/T¢€Ž/f/h·`„P R·a€Ž22+€Ž22+>€¤„P®Û€Ž2,2.·b„P S·c€Ž551€Ž551>€¤„P®Û€Ž5254·d„P T·e€Ž881€Ž881>>€¤„P®Û€Ž8284¡€Ž8F8H·f„P U·g€Ž;;€Ž;;>>€¤„P®Û€Ž;;!¡€Ž;3;5·h„P V·i€Ž>>!€Ž>>!>>€¤„P®Û€Ž>">$¡€Ž>6>8·j„P W·k€ŽAA4€ŽAA4>>>€¤„P®Û€ŽA5A7¡€ŽAIAK¢€ŽA]A_·l„P X·m€ŽDD7€ŽDD7€¤„P·n„P Y·o€ŽGG!€ŽGG!>>€¤„P®Û€ŽG"G$¡€ŽG6G8·p„P Z·q€ŽJJ0€ŽJJ0>>€¤„P®Û€ŽJ1J3¡€ŽJEJG·r„P [·s€ŽMM+€ŽMM+>>‚ó>€¤„P®Û€ŽM,M.¡€ŽM@MB¢€ŽMTMV”¥€ŽMgMi·t„P \·u€ŽPP0€ŽPP0>>€¤„P®Û€ŽP1P3¡€ŽPEPG·v„P ]·w€ŽSS<€ŽSS<>€¤„P®Û€ŽS=S?·x„P ^·y€ŽVV1€ŽVV1>>€¤„P®Û€ŽV2V4¡€ŽVFVH·z„P _·{€ŽYY8€ŽYY8>>€¤„P®Û€ŽY9Y;¡€ŽYMYO·|„P `·}€Ž\\?€Ž\\?>>>>€¤„P®Û€Ž\@\B¡€Ž\T\V¢€Ž\h\j”¥€Ž\|\~·~„P a·€Ž__R€Ž__R€¤„P·€„P b·€Žbb)€Žbb)>€¤„P®Û€Žb*b,·‚„P c·ƒ€Žee6€Žee6€¤„P·„„P d·…€Žhh-€Žhh->>€¤„P®Û€Žh.h0¡€ŽhBhD·†„P e·‡€Žkk1€Žkk1€¤„P·ˆ„P f·‰€Žnn0€Žnn0€¤„P·Š„P g·‹€Žqq(€Žqq(>€¤„P®Û€Žq)q+·Œ„P h·€Žtt4€Žtt4>€¤„P®Û€Žt5t7·Ž„P i·€Žww*€Žww*>€¤„P®Û€Žw+w-·„P j·‘€Žzz3€Žzz3>>>€¤„P®Û€Žz4z6¡€ŽzHzJ¢€Žz\z^·’„P k·“€Ž}}!€Ž}}!>>€¤„P®Û€Ž}"}$¡€Ž}6}8·”„P l·•€Ž€€"€Ž€€">>€¤„P®Û€Ž€#€%¡€Ž€7€9·–„P m·—€Žƒƒ"€Žƒƒ">>€¤„P®Û€Žƒ#ƒ%¡€Žƒ7ƒ9·˜„P n·™€Ž††/€Ž††/€¤„P·š„P o·›€Ž‰‰3€Ž‰‰3>>€¤„P®Û€Ž‰4‰6¡€Ž‰H‰J·œ„P p·€ŽŒŒ)€ŽŒŒ)€¤„P·ž„P q·Ÿ€Ž?€Ž?>>€¤„P®Û€Ž@B¡€ŽTV· „P r·¡€Ž’’,€Ž’’,‚ó‚󀤄P®Û€Ž’-’/¡€Ž’@’B·¢„P s·£€Ž••.€Ž••.>€¤„P®Û€Ž•/•1·¤„P t·¥€Ž˜˜,€Ž˜˜,>>>>€¤„P®Û€Ž˜-˜/¡€Ž˜A˜C¢€Ž˜U˜W”¥€Ž˜i˜k·¦„P u·§€Ž››1€Ž››1>>€¤„P®Û€Ž›2›4¡€Ž›F›H·¨„P v·©€Žžž3€Žžž3>€¤„P®Û€Žž4ž6·ª„P w·«€Ž¡¡/€Ž¡¡/>>€¤„P®Û€Ž¡0¡2¡€Ž¡D¡F·¬„P x·­€Ž¤¤,€Ž¤¤,>€¤„P®Û€Ž¤-¤/·®„P y·¯€Ž§§*€Ž§§*>€¤„P®Û€Ž§+§-·°„P z·±€Žªª(€Žªª(€¤„P·²„P {·³€Ž­­1€Ž­­1>>>>€¤„P®Û€Ž­2­4¡€Ž­F­H¢€Ž­Z­\”¥€Ž­n­p·´„P |·µ€Ž°°-€Ž°°->€¤„P®Û€Ž°.°0·¶„P }··€Ž³³2€Ž³³2>€¤„P®Û€Ž³3³5·¸„P ~·¹€Ž¶¶3€Ž¶¶3>€¤„P®Û€Ž¶4¶6·º„P ·»€Ž¹¹T€Ž¹¹T€¤„P·¼„P €·½€Ž¼¼3€Ž¼¼3€¤„P·¾„P ·¿€Ž¿¿5€Ž¿¿5>€¤„P®Û€Ž¿6¿8·À„P ‚·Á€ŽÂÂ=€ŽÂÂ=€¤„P·Â„P ƒ·Ã€ŽÅÅ:€ŽÅÅ:€¤„P·Ä„P „·Å€ŽÈÈ=€ŽÈÈ=€¤„P·Æ„P …·Ç€ŽËËG€ŽËËG€¤„P·È„P †·É€ŽÎÎ8€ŽÎÎ8>€¤„P®Û€ŽÎ9Î;·Ê„P ‡·Ë€ŽÑÑ4€ŽÑÑ4>€¤„P®Û€ŽÑ5Ñ7·Ì„P ˆ·Í€ŽÔÔ3€ŽÔÔ3>€¤„P®Û€ŽÔ4Ô6·Î„P ‰·Ï€Ž××4€Ž××4>>€¤„P®Û€Ž×5×7¡€Ž×I×K·Ð„P Š·Ñ€ŽÚÚ-€ŽÚÚ->>>€¤„P®Û€ŽÚ.Ú0¡€ŽÚBÚD¢€ŽÚVÚX·Ò„P ‹·Ó€ŽÝÝ2€ŽÝÝ2>>>€¤„P®Û€ŽÝ3Ý5¡€ŽÝGÝI¢€ŽÝ[Ý]·Ô„P Œ·Õ€Žàà,€Žàà,>€¤„P®Û€Žà-à/·Ö„P ·×€Žãã2€Žãã2>>€¤„P®Û€Žã3ã5¡€ŽãGãI·Ø„P Ž·Ù€Žææ+€Žææ+>>€¤„P®Û€Žæ,æ.¡€Žæ@æB·Ú„P ·Û€Žéé.€Žéé.>>€¤„P®Û€Žé/é1¡€ŽéCéE·Ü„P ·Ý€Žìì7€Žìì7>‚ó‚󀤄P®Û€Žì8ì:¡€ŽìLìN¢€Žì_ìa·Þ„P ‘·ß€Žïï2€Žïï2€¤„P·à„P ’·á€Žòò,€Žòò,€¤„P·â„P “·ã€Žõõ)€Žõõ)€¤„P·ä„P ”·å€Žøø.€Žøø.€¤„P·æ„P •·ç€Žûû,€Žûû,€¤„P·è„P –·é€Žþþ.€Žþþ.€¤„P·ê„P —·ë€ŽŽŽ,€ŽŽŽ,€¤„P·ì„P ˜·í€ŽŽŽ-€ŽŽŽ-€¤„P·î„P ™·ï€ŽŽŽ-€ŽŽŽ-€¤„P·ð„P š·ñ€ŽŽ Ž -€ŽŽ Ž -€¤„P·ò„P ›·ó€ŽŽ Ž 0€ŽŽ Ž 0€¤„P·ô„P œ·õ€ŽŽŽ1€ŽŽŽ1€¤„P·ö„P ·÷€ŽŽŽ6€ŽŽŽ6€¤„P·ø„P ž·ù€ŽŽŽ7€ŽŽŽ7€¤„P·ú„P Ÿ·û€ŽŽŽ6€ŽŽŽ6€¤„P·ü„P  ·ý€ŽŽŽ3€ŽŽŽ3€¤„P·þ„P ¡·ÿ€ŽŽŽ3€ŽŽŽ3€¤„P¸„P ¢¸€ŽŽ"Ž",€ŽŽ"Ž",€¤„P¸„P £¸€ŽŽ%Ž%"€ŽŽ%Ž%"€¤„P¸„P ¤¸€ŽŽ(Ž(&€ŽŽ(Ž(&€¤„P¸„P ¥¸€ŽŽ+Ž+&€ŽŽ+Ž+&€¤„P¸„P ¦¸ €ŽŽ.Ž."€ŽŽ.Ž."€¤„P¸ „P §¸ €ŽŽ1Ž1%€ŽŽ1Ž1%€¤„P¸ „P ¨¸ €ŽŽ4Ž4#€ŽŽ4Ž4#€¤„P¸„P ©¸€ŽŽ7Ž7)€ŽŽ7Ž7)>€¤„P®Û€ŽŽ7*Ž7,¸„P ª¸€ŽŽ:Ž:#€ŽŽ:Ž:#€¤„P¸„P «¸€ŽŽ=Ž=4€ŽŽ=Ž=4>‚ó‚󀤄P®Û€ŽŽ=5Ž=7¡€ŽŽ=IŽ=K¢€ŽŽ=\Ž=^¸„P ¬¸€ŽŽ@Ž@,€ŽŽ@Ž@,>>€¤„P®Û€ŽŽ@-Ž@/¡€ŽŽ@AŽ@C¸„P ­¸€ŽŽCŽC,€ŽŽCŽC,>€¤„P®Û€ŽŽC-ŽC/¸„P ®¸€ŽŽFŽF2€ŽŽFŽF2>>€¤„P®Û€ŽŽF3ŽF5¡€ŽŽFGŽFI¸„P ¯¸€ŽŽIŽI(€ŽŽIŽI(€¤„P¸„P °¸€ŽŽLŽL,€ŽŽLŽL,>€¤„P®Û€ŽŽL-ŽL/¸„P ±¸€ŽŽOŽO*€ŽŽOŽO*>€¤„P®Û€ŽŽO+ŽO-¸ „P ²¸!€ŽŽRŽR:€ŽŽRŽR:€¤„P¸"„P ³¸#€ŽŽUŽUD€ŽŽUŽUD€¤„P¸$„P ´¸%€ŽŽXŽX9€ŽŽXŽX9€¤„P¸&„P µ¸'€ŽŽ[Ž[C€ŽŽ[Ž[C€¤„P¸(„P ¶¸)€ŽŽ^Ž^%€ŽŽ^Ž^%>€¤„P®Û€ŽŽ^&Ž^(¸*„P ·¸+€ŽŽaŽa+€ŽŽaŽa+>€¤„P®Û€ŽŽa,Ža.¸,„P ¸¸-€ŽŽdŽd%€ŽŽdŽd%€¤„P¸.„P ¹¸/€ŽŽgŽg+€ŽŽgŽg+€¤„P¸0„P º¸1€ŽŽjŽj"€ŽŽjŽj"€¤„P¸2„P »¸3€ŽŽmŽm'€ŽŽmŽm'€¤„P¸4„P ¼¸5€ŽŽpŽp,€ŽŽpŽp,€¤„P¸6„P ½¸7€ŽŽsŽs-€ŽŽsŽs-€¤„P¸8„P ¾¸9€ŽŽvŽv/€ŽŽvŽv/€¤„P¸:„P ¿¸;€ŽŽyŽy-€ŽŽyŽy-€¤„P¸<„P À¸=€ŽŽ|Ž|0€ŽŽ|Ž|0€¤„P¸>„P Á¸?€ŽŽŽ.€ŽŽŽ.€¤„P¸@„P Â¸A€ŽŽ‚Ž‚+€ŽŽ‚Ž‚+‚ó‚ó‚󀤄P®Û€ŽŽ‚,Ž‚.¡€ŽŽ‚?Ž‚A¢€ŽŽ‚RŽ‚T¸B„P Ã¸C€ŽŽ…Ž…2€ŽŽ…Ž…2>€¤„P®Û€ŽŽ…3Ž…5¸D„P Ä¸E€ŽŽˆŽˆ'€ŽŽˆŽˆ'€¤„P¸F„P Å¸G€ŽŽ‹Ž‹,€ŽŽ‹Ž‹,€¤„P¸H„P Æ¸I€ŽŽŽŽŽ.€ŽŽŽŽŽ.>>€¤„P®Û€ŽŽŽ/ŽŽ1¡€ŽŽŽCŽŽE¸J„P Ç¸K€ŽŽ‘Ž‘3€ŽŽ‘Ž‘3€¤„P¸L„P È¸M€ŽŽ”Ž”6€ŽŽ”Ž”6€¤„P¸N„P É¸O€ŽŽ—Ž—!€ŽŽ—Ž—!€¤„P¸P„P Ê¸Q€ŽŽšŽš*€ŽŽšŽš*€¤„P¸R„P Ë¸S€ŽŽŽ*€ŽŽŽ*‚󀤄P®Û€ŽŽ+Ž-¸T„P Ì¸U€ŽŽ Ž €ŽŽ Ž €¤„P¸V„P Í¸W€ŽŽ£Ž£*€ŽŽ£Ž£*>€¤„P®Û€ŽŽ£+Ž£-¸X„P Î¸Y€ŽŽ¦ަ5€ŽŽ¦ަ5€¤„P¸Z„P Ï¸[€ŽŽ©Ž©/€ŽŽ©Ž©/€¤„P¸\„P Ð¸]€ŽŽ¬ެ+€ŽŽ¬ެ+€¤„P¸^„P Ñ¸_€ŽŽ¯ޝ-€ŽŽ¯ޝ->>€¤„P®Û€ŽŽ¯.ޝ0¡€ŽŽ¯BޝD¸`„P Ò¸a€ŽŽ²޲(€ŽŽ²޲(€¤„P¸b„P Ó¸c€ŽŽµ޵$€ŽŽµ޵$€¤„P¸d„P Ô¸e€ŽŽ¸ޏ(€ŽŽ¸ޏ(€¤„P¸f„P Õ¸g€ŽŽ»Ž»2€ŽŽ»Ž»2€¤„P¸h„P Ö¸i€ŽŽ¾޾.€ŽŽ¾޾.€¤„P¸j„P ×¸k€ŽŽÁŽÁ?€ŽŽÁŽÁ?>‚󀤄P®Û€ŽŽÁ@ŽÁB¡€ŽŽÁTŽÁV¸l„P Ø¸m€ŽŽÄŽÄ0€ŽŽÄŽÄ0>€¤„P®Û€ŽŽÄ1ŽÄ3¸n„P Ù¸o€ŽŽÇŽÇ&€ŽŽÇŽÇ&>>€¤„P®Û€ŽŽÇ'ŽÇ)¡€ŽŽÇ;ŽÇ=¸p„P Ú¸q€ŽŽÊŽÊ<€ŽŽÊŽÊ<€¤„P¸r„P Û¸s€ŽŽÍŽÍ3€ŽŽÍŽÍ3€¤„P¸t„P Ü¸u€ŽŽÐŽÐ0€ŽŽÐŽÐ0€¤„P¸v„P Ý¸w€ŽŽÓŽÓ;€ŽŽÓŽÓ;€¤„P¸x„P Þ¸y€ŽŽÖŽÖ8€ŽŽÖŽÖ8>>>€¤„P®Û€ŽŽÖ9ŽÖ;¡€ŽŽÖMŽÖO¢€ŽŽÖaŽÖc¸z„P ß¸{€ŽŽÙŽÙ?€ŽŽÙŽÙ?>€¤„P®Û€ŽŽÙ@ŽÙB¸|„P à¸}€ŽŽÜŽÜ&€ŽŽÜŽÜ&€¤„P¸~„P áŽ0€Ž€Ž‚¼„P‹€Ž„P â¸€Ž€ŽÌ‚¼„P‰"€Ž #¸€€Ž59„P ã¸€Ž  €Ž  Ì ‚¼„P€«€Ž  „P ä¸‚€Ž!!€Ž!!Ì ‚¼„P€‹€Ž!!"„P åƒ€Ž$$€Ž$$ÌÌÌ‚¼„P€«€Ž$$ „P æ¸ƒ€Ž,,(€Ž,,(ÌÌ‚¼„P€«€Ž,*,,¸€€Ž,;,?„P ç¸„€Ž22€Ž22ÌÌ‚¼„P¸…€Ž22‡Ü€Ž2%2&1€Ž2'2+€«€Ž2,2.¸†€Ž2022„P è¸‡€Ž<< €Ž<< ‚¼„PŽâ€Ž<"<#„P é¸ˆ€Ž??"€Ž??"ˆƒA€Ž?W?Y„‚߈ƒˆƒ‚¼„PA€Ž?W?Y¸‰€Ž?$?1¸…€Ž?=?@„P ê¸Š€ŽZZ€ŽZZˆ„A€ŽZMZO„‚߈„ˆ„‚¼„PA€ŽZMZO¸‹€ŽZZ'¸…€ŽZ3Z6„P ëŸã€Ž€Ž‚´„P®ÕŽ-„P„Ž-€Ž„€í‚ô¸€Ž®ÕŽ-Ì¸Ž€Ž®ÕŽ- ¸€ŽXX*®ÕŽ-¸€Ž®Õ„Ö„SŽ-‚ò®Ö„SŽ-®Ö ®Ø„SŽ-®Ø ®Ú„SŽ-®Ú>®Ý„SŽ-®Ý>®ß„SŽ-®ß>®á„SŽ-®á>®ã„SŽ-®ã>®å„SŽ-®å>®ç„SŽ-®ç>®é„SŽ-®é>®ë„SŽ-®ë>®í„SŽ-®í>®ï„SŽ-®ï>®ñ„SŽ-®ñ>®ó„SŽ-®ó>‚ó®õ„SŽ-®õ>®÷„SŽ-®÷>®ù„SŽ-®ù>®û„SŽ-®û>®ý„SŽ-®ý>>®ÿ„SŽ-®ÿ¯„SŽ-¯¯„SŽ-¯¯„SŽ-¯>¯„SŽ-¯>¯ „SŽ-¯ >¯ „SŽ-¯ >¯ „SŽ-¯ >¯„SŽ-¯>¯„SŽ-¯>¯„SŽ-¯¯„SŽ-¯>¯„SŽ-¯>¯„SŽ-¯>¯„SŽ-¯¯„SŽ-¯>>¯„SŽ-¯¯!„SŽ-¯!¯#„SŽ-¯#>¯%„SŽ-¯%>¯'„SŽ-¯'>¯)„SŽ-¯)>¯+„SŽ-¯+>¯-„SŽ-¯->>¯/„SŽ-¯/>>¯1„SŽ-¯1>¯3„SŽ-¯3¯5„SŽ-¯5¯7„SŽ-¯7¯9„SŽ-¯9¯;„SŽ-¯;¯=„SŽ-¯=>¯?„SŽ-¯?>¯A„SŽ-¯A>¯C„SŽ-¯C>¯E„SŽ-¯E>¯G„SŽ-¯G>¯I„SŽ-¯I>¯K„SŽ-¯K¯M„SŽ-¯M>>¯O„SŽ-¯O>¯Q„SŽ-¯Q>¯S„SŽ-¯S>¯U„SŽ-¯U>¯W„SŽ-¯W>>¯Y„SŽ-¯Y>>¯[„SŽ-¯[¯]„SŽ-¯]¯_„SŽ-¯_¯a„SŽ-¯a¯c„SŽ-¯c¯e„SŽ-¯e¯g„SŽ-¯g¯i„SŽ-¯i¯k„SŽ-¯k¯m„SŽ-¯m>¯o„SŽ-¯o>>¯q„SŽ-¯q¯s„SŽ-¯s¯u„SŽ-¯u¯w„SŽ-¯w¯y„SŽ-¯y¯{„SŽ-¯{¯}„SŽ-¯}>>>¯„SŽ-¯>>>¯„SŽ-¯>>>¯ƒ„SŽ-¯ƒ>>>¯…„SŽ-¯…>>>¯‡„SŽ-¯‡>>>¯‰„SŽ-¯‰>>>¯‹„SŽ-¯‹>>>¯„SŽ-¯>>>¯„SŽ-¯>>>¯‘„SŽ-¯‘>>>¯“„SŽ-¯“>>>¯•„SŽ-¯•>>>>>¯—„SŽ-¯—>>>¯™„SŽ-¯™>>>>>>>¯›„SŽ-¯›>>>¯„SŽ-¯>>>¯Ÿ„SŽ-¯Ÿ>>>¯¡„SŽ-¯¡>>>¯£„SŽ-¯£>>>¯¥„SŽ-¯¥>>>¯§„SŽ-¯§>>>¯©„SŽ-¯©>>>¯«„SŽ-¯«>>>¯­„SŽ-¯­>¯¯„SŽ-¯¯>¯±„SŽ-¯±>¯³„SŽ-¯³>>¯µ„SŽ-¯µ>¯·„SŽ-¯·>¯¹„SŽ-¯¹>¯»„SŽ-¯»>¯½„SŽ-¯½>¯¿„SŽ-¯¿>¯Á„SŽ-¯Á>¯Ã„SŽ-¯Ã>¯Å„SŽ-¯Å>¯Ç„SŽ-¯Ç>>¯É„SŽ-¯É>>>¯Ë„SŽ-¯Ë>>>¯Í„SŽ-¯Í>¯Ï„SŽ-¯Ï>¯Ñ„SŽ-¯Ñ>¯Ó„SŽ-¯Ó>¯Õ„SŽ-¯Õ>¯×„SŽ-¯×>¯Ù„SŽ-¯Ù>>¯Û„SŽ-¯Û>¯Ý„SŽ-¯Ý>>¯ß„SŽ-¯ß>>¯á„SŽ-¯á>>¯ã„SŽ-¯ã>>¯å„SŽ-¯å>>>¯ç„SŽ-¯ç>>>¯é„SŽ-¯é>¯ë„SŽ-¯ë>¯í„SŽ-¯í>>¯ï„SŽ-¯ï>>¯ñ„SŽ-¯ñ>>¯ó„SŽ-¯ó>>¯õ„SŽ-¯õ>>¯÷„SŽ-¯÷>>¯ù„SŽ-¯ù>>¯û„SŽ-¯û>>¯ý„SŽ-¯ý>>¯ÿ„SŽ-¯ÿ>>°„SŽ-°>>°„SŽ-°>°„SŽ-°°„SŽ-°° „SŽ-° ° „SŽ-° ° „SŽ-° °„SŽ-°°„SŽ-°>>°„SŽ-°>>°„SŽ-°>°„SŽ-°>°„SŽ-°>°„SŽ-°>°„SŽ-°>°„SŽ-°>>°!„SŽ-°!>>°#„SŽ-°#>>°%„SŽ-°%>>°'„SŽ-°'>>°)„SŽ-°)>>>°+„SŽ-°+>>>°-„SŽ-°->>°/„SŽ-°/°1„SŽ-°1°3„SŽ-°3>>°5„SŽ-°5>°7„SŽ-°7>°9„SŽ-°9>°;„SŽ-°;>>>°=„SŽ-°=°?„SŽ-°?>°A„SŽ-°A°C„SŽ-°C>°E„SŽ-°E>°G„SŽ-°G>>°I„SŽ-°I>>°K„SŽ-°K>>°M„SŽ-°M>>>°O„SŽ-°O°Q„SŽ-°Q°S„SŽ-°S°U„SŽ-°U°W„SŽ-°W°Y„SŽ-°Y°[„SŽ-°[°]„SŽ-°]°_„SŽ-°_°a„SŽ-°a°c„SŽ-°c°e„SŽ-°e°g„SŽ-°g°i„SŽ-°i°k„SŽ-°k°m„SŽ-°m°o„SŽ-°o°q„SŽ-°q°s„SŽ-°s°u„SŽ-°u>°w„SŽ-°w°y„SŽ-°y°{„SŽ-°{°}„SŽ-°}°„SŽ-°>°„SŽ-°°ƒ„SŽ-°ƒ>°…„SŽ-°…°‡„SŽ-°‡°‰„SŽ-°‰°‹„SŽ-°‹>>°„SŽ-°>°„SŽ-°°‘„SŽ-°‘°“„SŽ-°“°•„SŽ-°•>°—„SŽ-°—>°™„SŽ-°™°›„SŽ-°›>°„SŽ-°>>°Ÿ„SŽ-°Ÿ°¡„SŽ-°¡°£„SŽ-°£°¥„SŽ-°¥°§„SŽ-°§°©„SŽ-°©°«„SŽ-°«°­„SŽ-°­>°¯„SŽ-°¯°±„SŽ-°±°³„SŽ-°³>°µ„SŽ-°µ>°·„SŽ-°·>°¹„SŽ-°¹°»„SŽ-°»°½„SŽ-°½°¿„SŽ-°¿°Á„SŽ-°Á>°Ã„SŽ-°Ã>>>°Å„SŽ-°Å°Ç„SŽ-°Ç°É„SŽ-°É°Ë„SŽ-°Ë°Í„SŽ-°Í°Ï„SŽ-°Ï>°Ñ„SŽ-°Ñ>°Ó„SŽ-°Ó>°Õ„SŽ-°Õ°×„SŽ-°×>°Ù„SŽ-°Ù>°Û„SŽ-°Û>°Ý„SŽ-°Ý°ß„SŽ-°ß>°á„SŽ-°á>°ã„SŽ-°ã>°å„SŽ-°å>°ç„SŽ-°ç>>°é„SŽ-°é°ë„SŽ-°ë°í„SŽ-°í>°ï„SŽ-°ï°ñ„SŽ-°ñ°ó„SŽ-°ó°õ„SŽ-°õ°÷„SŽ-°÷°ù„SŽ-°ù°û„SŽ-°û°ý„SŽ-°ý°ÿ„SŽ-°ÿ±„SŽ-±±„SŽ-±±„SŽ-±±„SŽ-±± „SŽ-± ± „SŽ-± ± „SŽ-± ±„SŽ-±>±„SŽ-±±„SŽ-±±„SŽ-±±„SŽ-±‚ó‚ó±„SŽ-±>±„SŽ-±>±„SŽ-±>>±„SŽ-±>>±!„SŽ-±!>>±#„SŽ-±#>>±%„SŽ-±%>>±'„SŽ-±'>>>±)„SŽ-±)>>>±+„SŽ-±+±-„SŽ-±->±/„SŽ-±/>±1„SŽ-±1>±3„SŽ-±3>±5„SŽ-±5>±7„SŽ-±7>±9„SŽ-±9>±;„SŽ-±;>±=„SŽ-±=>±?„SŽ-±?>±A„SŽ-±A>±C„SŽ-±C±E„SŽ-±E>±G„SŽ-±G>±I„SŽ-±I>>±K„SŽ-±K>±M„SŽ-±M>±O„SŽ-±O>±Q„SŽ-±Q±S„SŽ-±S±U„SŽ-±U>±W„SŽ-±W>±Y„SŽ-±Y±[„SŽ-±[±]„SŽ-±]±_„SŽ-±_>>±a„SŽ-±a>>±c„SŽ-±c>±e„SŽ-±e>±g„SŽ-±g>>>±i„SŽ-±i>±k„SŽ-±k>‚ó>±m„SŽ-±m>‚ó>±o„SŽ-±o>‚ó>>±q„SŽ-±q>‚ó>>±s„SŽ-±s>‚ó‚ó‚ó>±u„SŽ-±u>‚ó‚ó>±w„SŽ-±w>‚ó‚ó>±y„SŽ-±y>‚ó>‚ó±{„SŽ-±{>>‚ó±}„SŽ-±}>‚ó‚ó±„SŽ-±>>‚ó±„SŽ-±>>‚ó‚󱃄SŽ-±ƒ>>‚ó>±…„SŽ-±…>±‡„SŽ-±‡>±‰„SŽ-±‰>±‹„SŽ-±‹>±„SŽ-±±„SŽ-±±‘„SŽ-±‘±“„SŽ-±“±•„SŽ-±•±—„SŽ-±—±™„SŽ-±™±›„SŽ-±›±„SŽ-±±Ÿ„SŽ-±Ÿ±¡„SŽ-±¡±£„SŽ-±£±¥„SŽ-±¥±§„SŽ-±§±©„SŽ-±©±«„SŽ-±«±­„SŽ-±­±¯„SŽ-±¯±±„SŽ-±±±³„SŽ-±³±µ„SŽ-±µ±·„SŽ-±·±¹„SŽ-±¹±»„SŽ-±»±½„SŽ-±½±¿„SŽ-±¿±Á„SŽ-±Á±Ã„SŽ-±Ã±Å„SŽ-±Å±Ç„SŽ-±Ç±É„SŽ-±É±Ë„SŽ-±Ë±Í„SŽ-±Í±Ï„SŽ-±Ï±Ñ„SŽ-±Ñ±Ó„SŽ-±Ó±Õ„SŽ-±Õ±×„SŽ-±×±Ù„SŽ-±Ù±Û„SŽ-±Û±Ý„SŽ-±Ý±ß„SŽ-±ß±á„SŽ-±á±ã„SŽ-±ã±å„SŽ-±å±ç„SŽ-±ç±é„SŽ-±é±ë„SŽ-±ë±í„SŽ-±í±ï„SŽ-±ï±ñ„SŽ-±ñ±ó„SŽ-±ó±õ„SŽ-±õ±÷„SŽ-±÷±ù„SŽ-±ù±û„SŽ-±û±ý„SŽ-±ý>±ÿ„SŽ-±ÿ²„SŽ-²²„SŽ-²²„SŽ-²²„SŽ-²² „SŽ-² ² „SŽ-² ² „SŽ-² ²„SŽ-²²„SŽ-²>²„SŽ-²²„SŽ-²²„SŽ-²²„SŽ-²²„SŽ-²²„SŽ-²²„SŽ-²²!„SŽ-²!²#„SŽ-²#²%„SŽ-²%>²'„SŽ-²'>²)„SŽ-²)²+„SŽ-²+²-„SŽ-²-²/„SŽ-²/²1„SŽ-²1²3„SŽ-²3²5„SŽ-²5²7„SŽ-²7²9„SŽ-²9²;„SŽ-²;²=„SŽ-²=²?„SŽ-²?²A„SŽ-²A>²C„SŽ-²C²E„SŽ-²E²G„SŽ-²G²I„SŽ-²I²K„SŽ-²K²M„SŽ-²M>²O„SŽ-²O²Q„SŽ-²Q²S„SŽ-²S²U„SŽ-²U²W„SŽ-²W²Y„SŽ-²Y²[„SŽ-²[²]„SŽ-²]²_„SŽ-²_²a„SŽ-²a²c„SŽ-²c²e„SŽ-²e²g„SŽ-²g²i„SŽ-²i²k„SŽ-²k²m„SŽ-²m²o„SŽ-²o>>²q„SŽ-²q>>²s„SŽ-²s>>²u„SŽ-²u>²w„SŽ-²w>²y„SŽ-²y>²{„SŽ-²{>²}„SŽ-²}>²„SŽ-²>²„SŽ-²>²ƒ„SŽ-²ƒ>²…„SŽ-²…>²‡„SŽ-²‡²‰„SŽ-²‰²‹„SŽ-²‹²„SŽ-²²„SŽ-²>>²‘„SŽ-²‘²“„SŽ-²“>²•„SŽ-²•>²—„SŽ-²—²™„SŽ-²™²›„SŽ-²›²„SŽ-²²Ÿ„SŽ-²Ÿ>²¡„SŽ-²¡²£„SŽ-²£>²¥„SŽ-²¥²§„SŽ-²§²©„SŽ-²©²«„SŽ-²«²­„SŽ-²­²¯„SŽ-²¯²±„SŽ-²±²³„SŽ-²³²µ„SŽ-²µ²·„SŽ-²·²¹„SŽ-²¹²»„SŽ-²»²½„SŽ-²½²¿„SŽ-²¿>²Á„SŽ-²Á>²Ã„SŽ-²Ã‚ó‚ó²Å„SŽ-²Å²Ç„SŽ-²Ç²É„SŽ-²É²Ë„SŽ-²Ë²Í„SŽ-²Í²Ï„SŽ-²Ï‚ó²Ñ„SŽ-²Ñ>²Ó„SŽ-²Ó²Õ„SŽ-²Õ²×„SŽ-²×²Ù„SŽ-²Ù²Û„SŽ-²Û²Ý„SŽ-²Ý²ß„SŽ-²ß²á„SŽ-²á²ã„SŽ-²ã²å„SŽ-²å²ç„SŽ-²ç²é„SŽ-²é²ë„SŽ-²ë²í„SŽ-²í²ï„SŽ-²ï>²ñ„SŽ-²ñ²ó„SŽ-²ó>²õ„SŽ-²õ²÷„SŽ-²÷²ù„SŽ-²ù²û„SŽ-²û²ý„SŽ-²ý²ÿ„SŽ-²ÿ³„SŽ-³³„SŽ-³>³„SŽ-³³„SŽ-³³ „SŽ-³ ³ „SŽ-³ ³ „SŽ-³ ³„SŽ-³³„SŽ-³³„SŽ-³‚ó³„SŽ-³>³„SŽ-³³„SŽ-³³„SŽ-³³„SŽ-³³„SŽ-³³!„SŽ-³!³#„SŽ-³#‚ó‚ó³%„SŽ-³%³'„SŽ-³'³)„SŽ-³)³+„SŽ-³+³-„SŽ-³-³/„SŽ-³/³1„SŽ-³1>³3„SŽ-³3³5„SŽ-³5³7„SŽ-³7³9„SŽ-³9³;„SŽ-³;³=„SŽ-³=³?„SŽ-³?³A„SŽ-³A³C„SŽ-³C³E„SŽ-³E³G„SŽ-³G³I„SŽ-³I³K„SŽ-³K³M„SŽ-³M³O„SŽ-³O>³Q„SŽ-³Q³S„SŽ-³S³U„SŽ-³U³W„SŽ-³W³Y„SŽ-³Y>³[„SŽ-³[>³]„SŽ-³]>>³_„SŽ-³_>>³a„SŽ-³a³c„SŽ-³c³e„SŽ-³e>³g„SŽ-³g>‚ó³i„SŽ-³i>‚ó³k„SŽ-³k³m„SŽ-³m³o„SŽ-³o³q„SŽ-³q³s„SŽ-³s³u„SŽ-³u³w„SŽ-³w³y„SŽ-³y³{„SŽ-³{³}„SŽ-³}³„SŽ-³³„SŽ-³³ƒ„SŽ-³ƒ³…„SŽ-³…³‡„SŽ-³‡>³‰„SŽ-³‰³‹„SŽ-³‹³„SŽ-³³„SŽ-³³‘„SŽ-³‘³“„SŽ-³“³•„SŽ-³•³—„SŽ-³—³™„SŽ-³™³›„SŽ-³›³„SŽ-³³Ÿ„SŽ-³Ÿ³¡„SŽ-³¡³£„SŽ-³£³¥„SŽ-³¥³§„SŽ-³§³©„SŽ-³©³«„SŽ-³«>³­„SŽ-³­³¯„SŽ-³¯³±„SŽ-³±>³³„SŽ-³³>³µ„SŽ-³µ³·„SŽ-³·>³¹„SŽ-³¹>³»„SŽ-³»³½„SŽ-³½³¿„SŽ-³¿>³Á„SŽ-³Á>³Ã„SŽ-³Ã>³Å„SŽ-³Å³Ç„SŽ-³Ç³É„SŽ-³É³Ë„SŽ-³Ë³Í„SŽ-³Í³Ï„SŽ-³Ï³Ñ„SŽ-³Ñ³Ó„SŽ-³Ó³Õ„SŽ-³Õ³×„SŽ-³×³Ù„SŽ-³Ù³Û„SŽ-³Û³Ý„SŽ-³Ý³ß„SŽ-³ß³á„SŽ-³á³ã„SŽ-³ã³å„SŽ-³å³ç„SŽ-³ç³é„SŽ-³é³ë„SŽ-³ë³í„SŽ-³í³ï„SŽ-³ï³ñ„SŽ-³ñ³ó„SŽ-³ó³õ„SŽ-³õ³÷„SŽ-³÷³ù„SŽ-³ù³û„SŽ-³û³ý„SŽ-³ý³ÿ„SŽ-³ÿ´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´´ „SŽ-´ ´ „SŽ-´ ´ „SŽ-´ ´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´´„SŽ-´>´„SŽ-´´!„SŽ-´!´#„SŽ-´#´%„SŽ-´%>´'„SŽ-´'>´)„SŽ-´)´+„SŽ-´+´-„SŽ-´-´/„SŽ-´/´1„SŽ-´1´3„SŽ-´3´5„SŽ-´5´7„SŽ-´7´9„SŽ-´9´;„SŽ-´;´=„SŽ-´=´?„SŽ-´?´A„SŽ-´A´C„SŽ-´C´E„SŽ-´E´G„SŽ-´G´I„SŽ-´I´K„SŽ-´K´M„SŽ-´M´O„SŽ-´O´Q„SŽ-´Q´S„SŽ-´S´U„SŽ-´U>´W„SŽ-´W´Y„SŽ-´Y´[„SŽ-´[´]„SŽ-´]>´_„SŽ-´_>´a„SŽ-´a´c„SŽ-´c´e„SŽ-´e´g„SŽ-´g´i„SŽ-´i´k„SŽ-´k´m„SŽ-´m´o„SŽ-´o´q„SŽ-´q>´s„SŽ-´s´u„SŽ-´u´w„SŽ-´w´y„SŽ-´y´{„SŽ-´{´}„SŽ-´}´„SŽ-´´„SŽ-´´ƒ„SŽ-´ƒ´…„SŽ-´…´‡„SŽ-´‡>´‰„SŽ-´‰>´‹„SŽ-´‹´„SŽ-´´„SŽ-´´‘„SŽ-´‘´“„SŽ-´“´•„SŽ-´•´—„SŽ-´—´™„SŽ-´™´›„SŽ-´›´„SŽ-´´Ÿ„SŽ-´Ÿ´¡„SŽ-´¡´£„SŽ-´£´¥„SŽ-´¥´§„SŽ-´§´©„SŽ-´©´«„SŽ-´«´­„SŽ-´­´¯„SŽ-´¯´±„SŽ-´±´³„SŽ-´³´µ„SŽ-´µ´·„SŽ-´·´¹„SŽ-´¹´»„SŽ-´»´½„SŽ-´½´¿„SŽ-´¿´Á„SŽ-´Á´Ã„SŽ-´Ã´Å„SŽ-´Å´Ç„SŽ-´Ç´É„SŽ-´É´Ë„SŽ-´Ë´Í„SŽ-´Í´Ï„SŽ-´Ï´Ñ„SŽ-´Ñ´Ó„SŽ-´Ó´Õ„SŽ-´Õ´×„SŽ-´×´Ù„SŽ-´Ù´Û„SŽ-´Û´Ý„SŽ-´Ý´ß„SŽ-´ß>´á„SŽ-´á´ã„SŽ-´ã´å„SŽ-´å´ç„SŽ-´ç´é„SŽ-´é´ë„SŽ-´ë´í„SŽ-´í>´ï„SŽ-´ï>>>´ñ„SŽ-´ñ>>>´ó„SŽ-´ó>>´õ„SŽ-´õ>´÷„SŽ-´÷>´ù„SŽ-´ù´û„SŽ-´û>´ý„SŽ-´ý´ÿ„SŽ-´ÿ>µ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ „SŽ-µ µ „SŽ-µ µ „SŽ-µ µ„SŽ-µ>µ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ„SŽ-µµ!„SŽ-µ!µ#„SŽ-µ#‚ó>µ%„SŽ-µ%µ'„SŽ-µ'µ)„SŽ-µ)µ+„SŽ-µ+µ-„SŽ-µ-µ/„SŽ-µ/µ1„SŽ-µ1µ3„SŽ-µ3µ5„SŽ-µ5µ7„SŽ-µ7µ9„SŽ-µ9µ;„SŽ-µ;µ=„SŽ-µ=µ?„SŽ-µ?µA„SŽ-µAµC„SŽ-µCµE„SŽ-µEµG„SŽ-µGµI„SŽ-µIµK„SŽ-µKµM„SŽ-µMµO„SŽ-µOµQ„SŽ-µQµS„SŽ-µSµU„SŽ-µUµW„SŽ-µWµY„SŽ-µYµ[„SŽ-µ[µ]„SŽ-µ]µ_„SŽ-µ_µa„SŽ-µaµc„SŽ-µcµe„SŽ-µeµg„SŽ-µgµi„SŽ-µiµk„SŽ-µkµm„SŽ-µmµo„SŽ-µoµq„SŽ-µqµs„SŽ-µsµu„SŽ-µuµw„SŽ-µwµy„SŽ-µyµ{„SŽ-µ{µ}„SŽ-µ}µ„SŽ-µµ„SŽ-µ>µƒ„SŽ-µƒ>µ…„SŽ-µ…‚󵇄SŽ-µ‡>µ‰„SŽ-µ‰µ‹„SŽ-µ‹µ„SŽ-µµ„SŽ-µµ‘„SŽ-µ‘µ“„SŽ-µ“µ•„SŽ-µ•µ—„SŽ-µ—µ™„SŽ-µ™µ›„SŽ-µ›µ„SŽ-µ>µŸ„SŽ-µŸ>µ¡„SŽ-µ¡>µ£„SŽ-µ£>µ¥„SŽ-µ¥>>µ§„SŽ-µ§>µ©„SŽ-µ©µ«„SŽ-µ«µ­„SŽ-µ­µ¯„SŽ-µ¯>µ±„SŽ-µ±µ³„SŽ-µ³µµ„SŽ-µµµ·„SŽ-µ·µ¹„SŽ-µ¹‚󵻄SŽ-µ»µ½„SŽ-µ½µ¿„SŽ-µ¿µÁ„SŽ-µÁµÃ„SŽ-µÃµÅ„SŽ-µÅµÇ„SŽ-µÇµÉ„SŽ-µÉµË„SŽ-µËµÍ„SŽ-µÍµÏ„SŽ-µÏµÑ„SŽ-µÑµÓ„SŽ-µÓ>µÕ„SŽ-µÕ>µ×„SŽ-µ×µÙ„SŽ-µÙµÛ„SŽ-µÛµÝ„SŽ-µÝµß„SŽ-µßµá„SŽ-µáµã„SŽ-µã>µå„SŽ-µåµç„SŽ-µç>>>µé„SŽ-µé>µë„SŽ-µë>µí„SŽ-µí>µï„SŽ-µï>µñ„SŽ-µñ>µó„SŽ-µó>µõ„SŽ-µõµ÷„SŽ-µ÷µù„SŽ-µùµû„SŽ-µûµý„SŽ-µýµÿ„SŽ-µÿ¶„SŽ-¶¶„SŽ-¶>¶„SŽ-¶>¶„SŽ-¶¶ „SŽ-¶ >>¶ „SŽ-¶ >>¶ „SŽ-¶ ¶„SŽ-¶>>>¶„SŽ-¶>¶„SŽ-¶>¶„SŽ-¶>¶„SŽ-¶>¶„SŽ-¶¶„SŽ-¶¶„SŽ-¶>¶„SŽ-¶>¶!„SŽ-¶!¶#„SŽ-¶#>¶%„SŽ-¶%¶'„SŽ-¶'¶)„SŽ-¶)>>¶+„SŽ-¶+>>¶-„SŽ-¶-¶/„SŽ-¶/¶1„SŽ-¶1¶3„SŽ-¶3>>¶5„SŽ-¶5¶7„SŽ-¶7>¶9„SŽ-¶9>¶;„SŽ-¶;>¶=„SŽ-¶=¶?„SŽ-¶?>¶A„SŽ-¶A>¶C„SŽ-¶C¶E„SŽ-¶E>¶G„SŽ-¶G¶I„SŽ-¶I¶K„SŽ-¶K¶M„SŽ-¶M¶O„SŽ-¶O¶Q„SŽ-¶Q¶S„SŽ-¶S¶U„SŽ-¶U¶W„SŽ-¶W¶Y„SŽ-¶Y¶[„SŽ-¶[¶]„SŽ-¶]¶_„SŽ-¶_¶a„SŽ-¶a¶c„SŽ-¶c¶e„SŽ-¶e¶g„SŽ-¶g¶i„SŽ-¶i¶k„SŽ-¶k¶m„SŽ-¶m¶o„SŽ-¶o>¶q„SŽ-¶q¶s„SŽ-¶s¶u„SŽ-¶u¶w„SŽ-¶w¶y„SŽ-¶y¶{„SŽ-¶{¶}„SŽ-¶}¶„SŽ-¶¶„SŽ-¶¶ƒ„SŽ-¶ƒ>¶…„SŽ-¶…>‚󶇄SŽ-¶‡>¶‰„SŽ-¶‰¶‹„SŽ-¶‹>>¶„SŽ-¶>>¶„SŽ-¶>>>¶‘„SŽ-¶‘>>>¶“„SŽ-¶“>>>¶•„SŽ-¶•>>>¶—„SŽ-¶—>>¶™„SŽ-¶™>>¶›„SŽ-¶›¶„SŽ-¶>¶Ÿ„SŽ-¶Ÿ>¶¡„SŽ-¶¡¶£„SŽ-¶£¶¥„SŽ-¶¥¶§„SŽ-¶§¶©„SŽ-¶©¶«„SŽ-¶«¶­„SŽ-¶­¶¯„SŽ-¶¯¶±„SŽ-¶±>>¶³„SŽ-¶³>>¶µ„SŽ-¶µ>>>¶·„SŽ-¶·>>>¶¹„SŽ-¶¹>>>¶»„SŽ-¶»¶½„SŽ-¶½>¶¿„SŽ-¶¿>¶Á„SŽ-¶Á¶Ã„SŽ-¶Ã>¶Å„SŽ-¶Å>¶Ç„SŽ-¶Ç¶É„SŽ-¶É>¶Ë„SŽ-¶Ë>>¶Í„SŽ-¶Í¶Ï„SŽ-¶Ï¶Ñ„SŽ-¶Ñ¶Ó„SŽ-¶Ó¶Õ„SŽ-¶Õ¶×„SŽ-¶×>¶Ù„SŽ-¶Ù>¶Û„SŽ-¶Û¶Ý„SŽ-¶Ý¶ß„SŽ-¶ß¶á„SŽ-¶á¶ã„SŽ-¶ã¶å„SŽ-¶å>¶ç„SŽ-¶ç¶é„SŽ-¶é>>¶ë„SŽ-¶ë¶í„SŽ-¶í¶ï„SŽ-¶ï>¶ñ„SŽ-¶ñ¶ó„SŽ-¶ó¶õ„SŽ-¶õ>¶÷„SŽ-¶÷¶ù„SŽ-¶ù>>¶û„SŽ-¶û¶ý„SŽ-¶ý¶ÿ„SŽ-¶ÿ>·„SŽ-··„SŽ-··„SŽ-·>·„SŽ-·· „SŽ-· · „SŽ-· · „SŽ-· ·„SŽ-··„SŽ-··„SŽ-··„SŽ-·>·„SŽ-··„SŽ-·>·„SŽ-··„SŽ-··„SŽ-··!„SŽ-·!>·#„SŽ-·#>·%„SŽ-·%>·'„SŽ-·'>·)„SŽ-·)>>·+„SŽ-·+·-„SŽ-·-·/„SŽ-·/·1„SŽ-·1·3„SŽ-·3·5„SŽ-·5>·7„SŽ-·7·9„SŽ-·9>·;„SŽ-·;>·=„SŽ-·=>>·?„SŽ-·?>·A„SŽ-·A>·C„SŽ-·C>>·E„SŽ-·E>>>·G„SŽ-·G>>·I„SŽ-·I>>·K„SŽ-·K>·M„SŽ-·M>·O„SŽ-·O>·Q„SŽ-·Q>>·S„SŽ-·S>>·U„SŽ-·U>>·W„SŽ-·W>>·Y„SŽ-·Y>>·[„SŽ-·[>>·]„SŽ-·]·_„SŽ-·_>>>·a„SŽ-·a>·c„SŽ-·c>·e„SŽ-·e>>·g„SŽ-·g>>·i„SŽ-·i>>·k„SŽ-·k>>>·m„SŽ-·m·o„SŽ-·o>>·q„SŽ-·q>>·s„SŽ-·s>>‚ó>·u„SŽ-·u>>·w„SŽ-·w>·y„SŽ-·y>>·{„SŽ-·{>>·}„SŽ-·}>>>>·„SŽ-··„SŽ-·>·ƒ„SŽ-·ƒ·…„SŽ-·…>>·‡„SŽ-·‡·‰„SŽ-·‰·‹„SŽ-·‹>·„SŽ-·>·„SŽ-·>·‘„SŽ-·‘>>>·“„SŽ-·“>>·•„SŽ-·•>>·—„SŽ-·—>>·™„SŽ-·™·›„SŽ-·›>>·„SŽ-··Ÿ„SŽ-·Ÿ>>·¡„SŽ-·¡‚ó‚󷣄SŽ-·£>·¥„SŽ-·¥>>>>·§„SŽ-·§>>·©„SŽ-·©>·«„SŽ-·«>>·­„SŽ-·­>·¯„SŽ-·¯>·±„SŽ-·±·³„SŽ-·³>>>>·µ„SŽ-·µ>··„SŽ-··>·¹„SŽ-·¹>·»„SŽ-·»·½„SŽ-·½·¿„SŽ-·¿>·Á„SŽ-·Á·Ã„SŽ-·Ã·Å„SŽ-·Å·Ç„SŽ-·Ç·É„SŽ-·É>·Ë„SŽ-·Ë>·Í„SŽ-·Í>·Ï„SŽ-·Ï>>·Ñ„SŽ-·Ñ>>>·Ó„SŽ-·Ó>>>·Õ„SŽ-·Õ>·×„SŽ-·×>>·Ù„SŽ-·Ù>>·Û„SŽ-·Û>>·Ý„SŽ-·Ý>‚ó‚ó·ß„SŽ-·ß·á„SŽ-·á·ã„SŽ-·ã·å„SŽ-·å·ç„SŽ-·ç·é„SŽ-·é·ë„SŽ-·ë·í„SŽ-·í·ï„SŽ-·ï·ñ„SŽ-·ñ·ó„SŽ-·ó·õ„SŽ-·õ·÷„SŽ-·÷·ù„SŽ-·ù·û„SŽ-·û·ý„SŽ-·ý·ÿ„SŽ-·ÿ¸„SŽ-¸¸„SŽ-¸¸„SŽ-¸¸„SŽ-¸¸ „SŽ-¸ ¸ „SŽ-¸ ¸ „SŽ-¸ ¸„SŽ-¸>¸„SŽ-¸¸„SŽ-¸>‚ó‚ó¸„SŽ-¸>>¸„SŽ-¸>¸„SŽ-¸>>¸„SŽ-¸¸„SŽ-¸>¸„SŽ-¸>¸!„SŽ-¸!¸#„SŽ-¸#¸%„SŽ-¸%¸'„SŽ-¸'¸)„SŽ-¸)>¸+„SŽ-¸+>¸-„SŽ-¸-¸/„SŽ-¸/¸1„SŽ-¸1¸3„SŽ-¸3¸5„SŽ-¸5¸7„SŽ-¸7¸9„SŽ-¸9¸;„SŽ-¸;¸=„SŽ-¸=¸?„SŽ-¸?¸A„SŽ-¸A‚ó‚ó‚ó¸C„SŽ-¸C>¸E„SŽ-¸E¸G„SŽ-¸G¸I„SŽ-¸I>>¸K„SŽ-¸K¸M„SŽ-¸M¸O„SŽ-¸O¸Q„SŽ-¸Q¸S„SŽ-¸S‚ó¸U„SŽ-¸U¸W„SŽ-¸W>¸Y„SŽ-¸Y¸[„SŽ-¸[¸]„SŽ-¸]¸_„SŽ-¸_>>¸a„SŽ-¸a¸c„SŽ-¸c¸e„SŽ-¸e¸g„SŽ-¸g¸i„SŽ-¸i¸k„SŽ-¸k>‚ó¸m„SŽ-¸m>¸o„SŽ-¸o>>¸q„SŽ-¸q¸s„SŽ-¸s¸u„SŽ-¸u¸w„SŽ-¸w¸y„SŽ-¸y>>>¸{„SŽ-¸{>¸}„SŽ-¸}Ÿã„SŽ-Ÿã®Õ……ì ì ¸‘q´FSharp.Compiler FSharp.CoremscorlibF€­‚ÍFSCompInternal Utilities CollectionsTagged MapTreeModule SetTreeModuleDebug TraceInteropFSharpEnvironmentOption FileSystemFilenameFlatListModuleQueueListModuleResizeArrayModuleStructuredFormatDisplay LayoutOps ReflectUtilsTypeValueTextLexingPosition get_FileIndex MicrosoftFSharpCoreunitintget_Lineget_OriginalLineget_AbsoluteOffsetget_StartOfLineAbsoluteOffset get_Column get_NextLine EndOfToken ShiftColumnByget_ColumnMinusOneApplyLineDirective get_Empty FirstLine LexBuffer`1 get_StartPosChari/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../utils/prim-lexing.fsi set_StartPos get_EndPos set_EndPos get_Lexeme[]`1get_BufferLocalStoreSystemGeneric IDictionary`2stringobj LexemeStringcharget_IsPastEndOfStreamboolset_IsPastEndOfStream FromFunction FromCharsGenericImplFragmentsParsingImplementation ParseHelpersCompilerSeverity CompareTothis IComparer GetHashCodeIEqualityComparerunitArg FSharp.Core(Microsoft.FSharp.Core.LanguagePrimitivesget_GenericEqualityComparermscorlib$System.Collections.IEqualityComparerEquals ErrorInfo ErrorScope.ctorget_ErrorsAndWarningslist`1Protectah/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../vs/IncrementalBuild.fsiRangerangeProtectWithDefaultProtectAndDiscard AbstractIL Diagnostics ExtensionsILX EraseIlxFuncsEraseIlxUnions IlxSettingsTypesIL CodeLabels ILListModuleSHA1 ILAsciiWriterILBinaryReader MemoryMappingILBinaryWriterCodebufFileSystemUtilitesRowElementTags SequencePointILRuntimeWriterZmapAsciiConstants AsciiLexer AsciiParserBinaryConstants TableNamesBytesLibraryop_GreaterGreaterGreaterAmpxint32nuint32notlazyunknownvControlLazyExtensionsLazy`1CreateFromValueTX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fsiisSomeoption`1Option`1NoneisNoneisNilList`1op_NilnonNilisNullb/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/illib.fs isNonNullnonNullop_EqualsEqualsEqualsyLanguagePrimitives HashComparePhysicalEqualityIntrinsicW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fsfoldOnbcdpfznotFoundunitVar0 ExceptionKeyNotFoundException/System.Collections.Generic.KeyNotFoundExceptiongetHoleResultOrException`1TResultthatEventuallyBuilderBind? Eventually`1ghekEventuallyModulebindReturnDone ReturnFromCombineTryWithhandlertryWith TryFinally compensation tryFinallyDelaydelayZero eventuallyUniqueStampGenerator`1EncodeMemoizationTable`2UIEqualityComparer`1ApplyUndefinedExceptionexncompLazyWithContextFailure get_Exception get_UndefinedLazyWithContext`2CreatectxtNotLazy Operatorsid get_IsDelayed get_IsForcedunitVar1funcOrExceptionForceUnsynchronizedForce LayeredMap`2KeyChoice`2KeyValuePair`2Map`2 Dictionary`2 TryGetValuebyref`1 ContainsKeyget_ItemTryFind get_ValuesValueCollection get_Elementsseq`1AddAddAndMarkAsCollapsibleLinearTryModifyThenLaterFlattenMarkAsCollapsibleLayeredMultiMap`2Arraymapqforall2lengthsEqAndForall2mapFoldfmaporder existsOnefindFirstIndexWhereTrue DictionaryofListldict'System.Collections.Generic.Dictionary`2 System.Int32.System.Collections.Generic.IEqualityComparer`1 ListModulelengthR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/list.fsi System.Objectstartupselfbyte System.StringGenericHashIntrinsicsbyteint16int64uint16uint64floatfloat32 nativeint unativeintSystem.BooleandecimalSystem.Decimal op_EqualityGenericEqualityIntrinsiciterbox forceWhileforce*repeatedlyProgressUntilDoneOrTimeShareOverfoldcatchFlatListtoArrayxschooseeltOrder IComparer`1List HashsetModulecreateaddLazy System.Lazy`1 get_Value sortWithOrderelementssortWithOrder toFunction splitAfterexistsifindichoptakedrop splitChoose frontAndBack tryRemove headAndTailzip4unzip4iter3 takeUntillast replicate ArrayModuletoListS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array.fsim SeqModuleseqOperatorIntrinsics RangeInt32 indexNotFoundAAn index satisfying the predicate was not found in the collectionassocmemAssoccontainsmemqmem mapfoldBackmapNthuntilcountrepeat mapHeadTail collectFold singleton op_ColonColoncollect2ysconcatmap2T1T2 iterSquaredxsscollectSquaredcollect mapSquaredmapmapfoldSquared forallSquaredforall mapiSquared existsSquared FrontAndBack|NonEmpty|Empty|ListSetinsertMap tryFindMultiMultiMapModule existsInRangefindempty MapModuleQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/map.fsi MultiMap`2initBy NameMapModulefoldBack NameMap`1Stateexists ofKeyedList ofFlatListlayerm1m2 layerAdditiveunionsubfold2suball2 foldBackRange filterRange mapFilteriterimapi partition containsKeytryFindP/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/map.fsEqualityConditionalOnAttribute ComparisonConditionalOnAttributeisEmptytryFindInRangeNameMultiMapModulerangeReversingEachBucket chooseRangeNameMultiMap`1 otherwiseoptdfltSomeorderByorderOnpxOrder&System.Collections.Generic.IComparer`1CompareShimReadAllBytesShimAssemblyLoadFrom ReflectionAssembly AssemblyLoad AssemblyNameEncodingGetEncodingShimSystem.Text.Encoding GetEncodingString6An index for the character was not found in the stringmake System.Chargetstri get_Charssubsstartlen SubstringindexrindexIndexOf StringModule lowercaseToLowerInvariant uppercaseToUpperInvariantisUpper capitalize uncapitalize tryDropPrefix tryDropSuffix hasPrefixt dropPrefix dropSuffixTablesmemoizeSupport ZmapModule ZsetModuleMorphsAstCustomOperations FSharpLibLexbufLocalXmlDocStoreSynInfoAugmentBuildScriptPreprocessClosureConstraintSolverDetupleGlobalUsageAnalysisDiagnosticMessageDriverAttributeHelpersBinaryGenerationUtilities FileWriterInterfaceFileWriterMainModuleBuilderManifestResourceFormat ResFileFormat StaticLinkerVersionResourceFormat XmlDocWriterEnv ErrorLoggerBuildPhaseSubcategoryErrorLoggerExtensionsExtensionTyping FindUnsolvedFormatsFscopts AttributesIlxgenCGImportIncrementalBuildScalarTimeVectorIncrementalFSharpBuildInfosAccessibilityLogicAttributeCheckingLayoutLexer LexfilterLexhelpKeywordsLib AsyncUtilBitsBoolCheck FlatListSetInt32Int64IntMap ListAssoc NameSetModulePair UnmanagedProcessExecutionOptionsZsetLowertopMSBuildResolverNameres NicePrintInferredSigPrintingInfoMemberPrinting PrintDataPrintILPrintTastMemberOrVals PrintTypesPrintUtilitiesTastDefinitionPrintingOptOutcomeParser PatcompilePicklePostTypecheckSemanticChecks PrettyNamingQuotationPickler SimplePickleQuotationTranslatorpos get_Encodingget_EncodingSizeDecodefileIndexOfFilefileOfFileIndexmkPosget_Zero get_StartLineget_StartColumn get_EndLine get_EndColumnget_IsSynthetic get_Startget_Endget_StartRange get_EndRange get_FileName MakeSynthetic ToShortStringmkRangemkFileIndexRangeposOrder rangeOrder outputPos outputRange boutputPos boutputRangeposGtposEqposGeqp1p2posLt unionRangesrangeContainsRangerangeContainsPosrangeBeforePosrangeNpos0range0 rangeStartup rangeCmdArgstrimRangeToLine stringOfPos stringOfRangePosfromVStoVSSRSourceCodeServicesTokenInformation LineTokenizer ScanTokenLexStateColorStateOfLexState ColorStateLexStateOfColorStateSourceTokenizerCreateLineTokenizerCreateBufferTokenizer XmlCommentDataTipElement DataTipText Declarationget_Nameget_DescriptionText get_GlyphDeclarationSet get_ItemsParamMethodOverloads get_MethodsMethodFindDeclFailureReason CheckOptionsTypeCheckResults get_Errorsget_HasFullTypeCheckInfoGetDeclarationsUntypedParseInfoNamesWithResidueAsync`1GetDataTipTextNames GetF1Keyword GetMethodsGetDeclarationLocationFindDeclResultGetExtraColorizationsTokenColorKindTypeCheckAnswerInteractiveCheckerNotifyFileTypeCheckStateIsDirty MatchBraces UntypedParse GetSlotsCountUntypedParseForSlot#TryGetRecentTypeCheckResultsForFile InvalidateAll@ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransientsInvalidateConfigurationNotifyProjectCleanedTypeCheckSourceIsResultObsoleteGetCheckOptionsFromScriptRootDateTimeicfilenamesourceloadedTimestampStartBackgroundCompileStopBackgroundCompileWaitForBackgroundCompile'get_GlobalForegroundParseCountStatistic+get_GlobalForegroundTypeCheckCountStatistic AstTraversalCompilerEnvironmentDebuggerEnvironmentEnvMiscEnvMisc2FlagsItemDescriptionIconsItemDescriptionsImplLexerStateEncodingNavigationImpl NoteworthyParamInfoLocationsImplParamsReactor SourceFileSourceFileImpl TestExpose TestHooksTokenClassificationsUntypedParseInfoImplTaintedTastValReprInfoModuleTastops DebugPrint PrettyTypes SimplifyTypesTlrPass1_DetermineTLRAndAritiesPass2_DetermineReqdItemsPass4_RewriteAssembly TypeCheckerAddAugmentationDeclarationsAttributeTargetsBindingNormalizationEstablishTypeDefinitionCoresEventDeclarationNormalizationGeneralizationHelpersIncrClassCheckingTcExceptionDeclarationsTcRecdUnionAndEnumDeclarationsTcTypeDeclarationsTyconBindingCheckingTyconConstraintInferenceTyprelnsDispatchSlotCheckingProvidedMethodCallsSignatureConformance UnicodeLexingFunctionAsLexbuf bufferFillerLexbufUnicodeFileAsLexbufViz€…+356789;=EEF5J5LETEUXE\]E`|€€…€†5€‡€Œ€€‘€š€›5€§56€¨E`|€«E`|€®E`|€±E`|€¶E`|€Æ56€ÊE`|€È€ÍE`|€ÏE`|€Ò€Ö€à56€á€â56€ãE`|€Þ€å56€ã€ê€ìE`|€ñE`|€òE`|€û   E`| 56%E`|&E`|'E`|*E`|0BF€ÖHE`|&kE`|mE`|oE`|quE`|wE`|yE`|{‘E`|”E`|—E`| E`|¡E`|¡ 5¤¥5¤§5¨E`|¬5¬¼E`|ÊE\E\‚$E\‚RE\\E‚VE‚V‚WE‚V‚XE‚V‚ZE‚V‚\E‚V‚^E‚V‚aE‚V‚bE‚V‚cE‚V‚dE‚V‚hE‚V‚jE‚V‚kE‚V‚mE‚V‚nE‚V‚oE‚V‚pE‚V‚tE‚VE‚V‚uE‚V\€…‚vE‚V‚xE‚V‚|E‚V‚~E‚V‚E‚V‚E‚V‚€E‚V‚Œ5‚ŽE‚ÇE‚Ç‚ÊD %&56789:;<=>?RTYZ[\^bfghijklmnopqrstuvwxy{|}~€€€€‚€„ÿO‹3‹F­Ñ ² _@! !    @F Ê  !"#$%&'()*+,-.;;#„+/-.;;#„+0-.;;#„+1-.;;#„+2-.;;#„+4-.;;#„+:-.;;#„+<-.;;#„+>-.;;#„+? -.;;#„  +@ -.;;#„A B@ C D ç„ F­È„ F­E©„ F­ FG FGH,I9,I FG FG FK  FKH,IM,I FK   N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O  FS  TG   TG H ,I9,I TG       TG  TK   TK H ,IM,I TK     N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O   TS   UV  UW   UY Z[!!„     U^ Z["%"'„     U_ /`üW E„ a b c~ d e f g h_ i j k l m! n o~ p q r s t! u 2U E„ v w x y! z { |ùS E„E}~ $I €€ $I             €‚ Z€ƒP €„ $I€‡€ˆ€‰€ŠŒgŒg„€‰€ŠŒgŒg„     Z€ƒP€‹Z€ƒP ~$I  €ŽZ€ƒP€Z€ƒP ~$I  €ŽZ€ƒP€Z€ƒP ~$I  €’Z€ƒP€“Z€ƒP~$I €’Z€ƒP€”€‰€•""„~$I €‰€•""„€–€‰€•##„~$I €‰€•##„€—€˜Z€ƒP~$I€™$I€œ€‰€ƒw-ƒw/„Z€ƒP€ž Z€ƒP!€Ÿ€ƒP"€ €ƒP#€¡€ƒP€¢ !$I€£"!#$I€¤"$I~ $I"!# !# #" #"!#" # !"!#" #$Z€ƒP%€Ÿ€ƒP&€ €ƒP'€¡€ƒP$%&%'&$'€¥(Z€ƒP€¦,I (Q·z\V4à‰€©V(()Z€ƒP)€ª€«K*€¬€•øøŒ* €«K+€¬€•øøŒ+,€¬€•øøŒH,,IM,I€«K*€¬€•øøŒ* -€¬€•øøŒ- , N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O ,.€¬€•øøŒ.€«S/€¬€•øøŒ/ €«S0€¬€•øøŒ00€«S1€¬€•øøŒ1 2€¬€•øøŒH2,I9,I€­2,I 22 €«S0€¬€•øøŒ003€¬€•øøŒ33224€¬€•øøŒ4€®V€®€¯5€°€ƒP6€°€ƒP 55 6 67€²€ƒP8€³€ƒP~&I€´ 7$I€µ7 8$I!€·9Z€ƒP:€Ÿ€ƒP9 : 9 :78 8 77 8 8 77 8 8;€²€ƒP<€³€ƒP ;; < <€®€¸=€°€ƒP= =>€£€ƒP ~&I!€„>$I €¹>! >> >> >?€£€ƒP? ?€®€º@€°€ƒP@@A€´€ƒP"~&I#€„A$I#AAAAAB€´€ƒPBB€®€»C€°€ƒP  C C€®€¼D€°€ƒP D D DE€ €ƒP$~&I%€´ E$I&€½ E$I!€¾FZ€ƒP F F FE%& E E E E E E EG€ €ƒP G G G€®€¿H€°€ƒP H HI€Ÿ€ƒP'~&I(€´ I$I)€À$I!€ÁJZ€ƒP J JI() I I I I IK€Ÿ€ƒP K K€®€ÂL€°€ƒP L LMZ€ƒP*~&I+€£ M$I!€ÃNZ€ƒP N NM+ M M M M MOZ€ƒP O O€®€Ä €Å€ÆVP€‰€•‚Á‚Á„ "P€Æ€ÇQ€‰€•‚Á‚Á„ "QQ€ÈVR€‰€•‚Ó‚Ó„S€É€•‚Ó‚Ó„RS#RR$RS€È€ËT€‰€•‚Ó‚Ó„U€É€•‚Ó‚Ó„$TUTU€ÌK ,H,I-€Î ,I  4,    €ÌK .H,I/M,I0€Î ,I N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O  4.  €ÌS €ÌS€ÌS€ÏV€Ï€Ð€Ï€Ñ€Ò€ÓV€‰€•‚ò‚ò„W€Ô€•‚ò‚ò„WV'VW€Ò€ÕX€‰€•‚ò‚ò„Y€Ô€•‚ò‚ò„X'XYZ€‰€•‚ò‚ò„[€Ô€•‚ò‚ò„1~Z$I'Z[1(€×\€‰€ŠˆMˆM„\\'Z[Z'Z[]€‰€•‚ò‚ò„^€Ô€•‚ò‚ò„]']^€Ò€Ø_€‰€•‚ò‚ò„`€Ô€•‚ò‚ò„'_`€Ò€Ùa€‰€•‚ò‚ò„b€Ô€•‚ò‚ò„'abc€‰€•‚ò‚ò„d€Ô€•‚ò‚ò„2~'cd&I3€Ú,I '€Ûcd2'cde€‰€•‚ò‚ò„f€Ô€•‚ò‚ò„'ef€Ò€Üg€‰€•‚ò‚ò„h€Ô€•‚ò‚ò„'ghhg€Ò€Ýi€‰€•‚ò‚ò„j€Ô€•‚ò‚ò„'ijji€ÞVk€ß€•„]„]„ l€•„]„]„)*klkll+kl,kl-kl€Þ)m€ß€•„]„]„ n€•„]„]„-mn€Þ€äo€ß€•„]„]„ p€•„]„]„-opo.p€Þ€æq€ß€•„]„]„ r€•„]„]„-qrq€Þ€çs€ß€•„]„]„ t€•„]„]„-stst€Þ€èu€ß€•„]„]„ v€•„]„]„-uvuv€Þ€éw€ß€•„]„]„ x€•„]„]„-wx/wx€Þ€ëy€ß€•„]„]„ z€•„]„]„-yz0*yz€Þ€í{€ß€•„]„]„ |€•„]„]„-{|{|-{|€Þ€î}€ß€•„]„]„ ~€•„]„]„-}~*}~-}~€Þ€ï€ß€•„]„]„ €€€•„]„]„-€€€€€€-€€€Þ€ð€€ß€•„]„]„ €‚€•„]„]„-€€‚-€€‚€ñV€ƒ€ß€•„ЄЄ €„€•„ЄР„*€ƒ€„+€ƒ€„,€ƒ€„1€ƒ€„€ñ)€…€ß€•„ЄЄ €†€•„ЄР„1€…€†€ñ€ä€‡€ß€•„ЄЄ €ˆ€•„ЄР„1€‡€ˆ€‡.€ˆ€ñ€æ€‰€ß€•„ЄЄ €Š€•„ЄР„1€‰€Š€‰€ñ€ç€‹€ß€•„ЄЄ €Œ€•„ЄР„1€‹€Œ€‹€Œ€ñ€è€€ß€•„ЄЄ €Ž€•„ЄР„1€€Ž€€Ž€ñ€é€€ß€•„ЄЄ €€•„ЄР„1€€0€€ñ€ë€‘€ß€•„ЄЄ €’€•„ЄР„1€‘€’0*€‘€’€ñ€í€“€ß€•„ЄЄ €”€•„ЄР„1€“€”€“€”1€“€”€ñ€î€•€ß€•„ЄЄ €–€•„ЄР„1€•€–*€•€–1€•€–€ñ€ð€—€ß€•„ЄЄ €˜€•„ЄР„1€—€˜1€—€˜€òZ™™442€ó2€ô2€õ2€ö2€÷2€ø2€ù2€ú€û.™£4=3€ü!€™Z€•Ô=Ô> €š€Ÿ€•Ô?Ô@4€ý€™€š$I5€þ,€™€š$IQ·z\V4à‰€ÿVQ·z\V4à‰Q·z\V4à‰€™€š,€™€š4€›€‰  „€›€™€š4 #€™Q·z\V4à‰VK#€™€œ€‰P„9€œ6#€™.I7~€™,I €™ 7 €™ 7 €™  7 €™ 7 €™ 7 €™  7 Q·z\V4à‰ KQ·z\V4à‰Q·z\V4à‰ 7 €€‰€ƒP€€™7S#€™€ž€‰P„~€ž€™€ž8#€™.I9~€™,I:€™€™,I €™ 29: €™ 29: €™ 29: €™ 29: €™  29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™ 29: €™Q·z\V4à‰ SQ·z\V4à‰ Q·z\V4à‰ Q·z\V4à‰ 9 : €™Q·z\V4à‰Q·z\V4à‰Q·z\V4à‰Q·z\V4à‰ 9 :€Ÿ€‰€†c2†c4„€Ÿ€Ÿ€™9:4€ €‰€í€í„€ € €™€š;€µ€™$I<€„€š$IQ·z\V4à‰€ÿ€í€™€š5;<45,€™€š€™€š,€™€š€¡Z€•Ô=Ô> €¢€Ÿ€•Ô?Ô@€¡€¢,€¡€¢€¶p££== !!!!!€·!!!€Ã!€Á!€¾ ££¯=A@!€£Z€ƒP="€£$I4!€¤€‰ÿÿ„€¤€¤€£=€£€£€£€¥Z€ƒP€¥€¥@#€¦Z€ƒP€§€Ÿ€ƒP>€£€¦€§$I?"€¦$I4#€¨€‰@@„€©€É@#@%„€¨€©€¨€©€¦€§>?€§€¦€§€¦€§€¦€§€ªZ€ƒP€«€Ÿ€ƒP€ª€«€ª€«@€ø€¬Z€ƒP@$A€¬$IB€ø€­€‰€•%#%%„A€­A€­€¬@A€¬A€¬A€¬€®Z€ƒPA€®A€®@€ó@€ö@€÷'.¯¯AAC(C)CC€ü*¢¯±ABD€¯€‰€•ææ„A~€¯$IQ·z\V4à‰+,€¯€¯A€¯€¯€¯€°€‰€•ææ„€°€°&ÿ±ðBY-B-€±€‰€•€²$€²&„B€ A€±$IC.€±$I4/€²€‰Ï Ï"„€²€²€²€²€±E1€³€É€•6'6)„A€³€³€³€±BC€±€±€±A€±€±€±€´€‰€•€²$€²&„A€´€´€´B2B3B€õB4B5B6B7B8B€óB9B:B;B<B=B>B?B€øB@BA€µZ€ƒPD~$IE€€€µ$IFC€¶€‰D‚9‚9„€¶€¶€µF(€·€‰DW'W)„€·€·€µDE€µ€µ€µ€µ€µ€¸Z€ƒP€¸€¸B]F€€$IGE$IGC€¹€ŸP„0€¹€¹(G€ºZP„0€º0€ºHI0FGBJ €»Z€ƒPH€¦,I €»Q·z\V4à‰€©VQ·z\V4à‰ K€»€»€¼Z€ƒP€¼BLBMBNBOBP€½Z€ƒP I~€½$IJ€ý€½$IBN€¾Z€ƒP €¾€¾€½IJ€½€½€½€¿Z€ƒP €¿€¿B€öBQBRBSBTBUBVBWBX€ÀZ€ƒPK~€À$IY€ÀK€’€À€À€À€À€ÁZ€ƒP€Á€ÁB€÷BZ€ÂZ€ƒP€Ã€Ÿ€ƒP€Ä€ €ƒPL€£€Â€Ã€Ä$IM"€Â$IN[€Ã$I4\€Å€‰MM „0€Å€Å€Ä0€Ä€Ä4]€Æ^„€Ç_"%„€È€É)+„€Æ€Ç€È€Æ€Ç€È€Â€Ã€ÄLMN€Ä€Ã€Ä€Â€Ã€Ä€Â€Ã€Ä€Â€Ã€Ä€ÉZ€ƒP€Ê€Ÿ€ƒP€Ë€ €ƒP€É€Ê€Ë€É€Ê€ËB`€ÌZ€ƒPO€£€Ì$IPa€Ì$I4€Í€‰€í€í„€Í€Í€Ì4€Î€‰€í€í„€Î€Î€ÌOP€Ì€Ì€Ì€ÏZ€ƒP€Ï€ÏBb€ÐZ€ƒP€Ñ€Ÿ€ƒPQ€£€Ð€Ñ$IRa€Ð$I4c€Ò€‰GG „€Ó€ÉG$G&„€Ò€Ó€Ò€Ó€Ð€Ñ4c€Ô€‰GG „€Õ€ÉG$G&„€Ô€Õ€Ô€Õ€Ð€ÑQR€Ñ€Ð€Ñ€Ð€Ñ€Ð€Ñ€ÖZ€ƒP€×€Ÿ€ƒP€Ö€×€Ö€×Bd€ØZ€ƒP€Ù€Ÿ€ƒPS€£€Ø€Ù$ITa€Ø$I4e€Ú€‰„€Û€É "„€Ú€Û€Ú€Û€Ø€Ù4e€Ü€‰„€Ý€É "„€Ü€Ý€Ü€Ý€Ø€ÙST€Ù€Ø€Ù€Ø€Ù€Ø€Ù€ÞZ€ƒP€ß€Ÿ€ƒP€Þ€ß€Þ€ßBf€àZ€ƒP€á€Ÿ€ƒP€â€ €ƒPU€£€à€á€â€à$IVa€à$IB€ö€ãZ€ƒP€ä€Ÿ€ƒP€å€ €ƒP€ã€ä€å€ã€ã€ä€å€ã€à€á€âB€ö€æZ€ƒP€ç€Ÿ€ƒP€è€ €ƒP€æ€ç€è€æ€æ€ç€è€æ€à€á€âUV€á€â€à€à€á€â€à€à€á€â€à€à€á€â€à€éZ€ƒP€ê€Ÿ€ƒP€ë€ €ƒP€é€ê€ë€é€é€ê€ë€éBg€ìZ€ƒPW€£€ì$IXa€ì$I4h€í€‰€Ã€Ã!„€í€í€ì4h€î€‰€Ã€Ã!„€î€î€ìWX€ì€ì€ì€ïZ€ƒP€ï€ïBiBjk ððYYIlm ððYYJno ððYYKpqêðöYYLrLsL)L]Lt€ðZ€•ƒ“ƒ“ €ñ€Ÿ€•ƒ“ƒ“Mt€ò€ßv€‡€‡„ €ó€‰v€‡€‡„+€ò€ó€ð€ñN€ð€ñ€ôZ€•ƒ“ƒ“ €õ€Ÿ€•ƒ“ƒ“N€ô€õLxy‡ ö3YnOt€öZ€ƒP €÷€Ÿ€ƒPMt€ø€ßv€‡€‡„ €ù€‰v€‡€‡„+€ø€ù€ö€÷+€ö€÷€úZ€ƒP €û€Ÿ€ƒP+€ú€ûO]Oz€ü€‰€•ƒ?ƒ? „€ýZ€ƒPY€£€ü€ý€ý$IZEP€ü$I[€¤€ý$IMz€þ€ßv€¦€¦„ €ÿ€‰v€¦€¦„|v€¦€¦#„€þ€ÿ+€þ€ÿ€ü€ýYZ[€ý€ý€ýP€ü€ý€ý€ü€ý€ýP€ü€ý€ý€‰€•ƒ?ƒ? „Z€ƒPPOhO}O~O€ü€‰€•ƒCƒC„\€ý$IM€ü€ßv[["„ €‰v[%['„+\PP€‰€•ƒCƒC„POOC€‰€•ƒEƒE„]€ýP$IMC€ßvuu"„ €‰vu#u%„+  ]P €‰€•ƒEƒE„P  O€ €‰€•ƒFƒF„^P $I_‚+ $IMz €ßv€¦€¦„ €‰v€¦€¦„|v€¦€¦#„  +   + M)€ßvUU„ €‰vU#U%„++ ^_+ + + P + + €‰€•ƒFƒF„P++OƒO„O…O†O€öO‡OˆO‰OeOOŠ€‰€•ƒfƒf„`€£$Ia€ýP$IM€ßv€´€´„ €‰v€´"€´$„+`aPP€‰€•ƒfƒf„PO‹€‰€•ƒhƒh„Z€ƒPb€£$Ic€ýP$IMe€ßv€Ô€Ô„ €‰v€Ô"€Ô$„€Év€Ô(€Ô*„++bc+P+P+€‰€•ƒhƒh„Z€ƒPP+OŒOP€‰€•ƒlƒl„d€„$IeEP$IM€ßv€Û€Û!„ €‰v€Û4€Û6„+dePP €‰€•ƒlƒl„P Os!€‰€•ƒnƒn„f€„$IgEP!$IMs"€ßv€€„ #€‰v€-€/„"+"##!fg!P!!P!!$€‰€•ƒnƒn„P$$OŽ%€‰€•ƒpƒp „h€„$IiEP%$IMŽ&€ßv€ó€ó„ '€‰v€ó0€ó2„&+&''%hi%P%%P%%(€‰€•ƒpƒp „P((O))€‰€•ƒrƒr„j€„$Ik~)$IlEP)$IQ€â€í*€ßv&*Œ +v\bŽ+*+*++*+,€ß©&©*RSVŒ -©\©bRSVTS‘V Ž+,-,-+,-)l)jk+)P)+))P)+))P)+).€‰€•ƒrƒr„.P.+.O’/€‰€•ƒtƒt„mEP/$IM’0€ßv€‚€‚#„ 1€‰v€‚$€‚&„+01/mP/2€‰€•ƒtƒt„P2OrO“”u3?np UrUsU)U]U•U–Ue3€‰€•ƒ‡ƒ‡!„4Z€ƒPn€£34$IoEV3$IOe5€‰€•ƒbƒb„6Z€ƒP56P5+6344e7€‰„8€É "„787834no+4V3+434V3+49€‰€•ƒ‡ƒ‡!„:Z€ƒP9:V9+:Ut;€‰€•ƒˆƒˆ„Mt<€ßv€‡€‡„ =€‰v€‡€‡„+<=;V;>€‰€•ƒˆƒˆ„V>UxU€ü ä?AprW€öW˜ ?Z€ƒPp™?$Iqš?$I p›?q›?›?p???????@Z€ƒP@@@W€÷W0!ACruEœEE1A€É€•6'6)„ržAA$Is~A$It€™A$IQ·z\V4à‰Ÿ Q·z\V4à‰ArstAAAAAAAB€É€•6'6)„ABBB¡õCCuvX V!X ¢!X £!"X ¦!#"X X¨©$u€€$IQ·z\V4à‰ª«Q·z\V4à‰Q·z\V4à‰ª$u$$¬CEv„]J CZ€ƒPv€¦,I CQ·z\V4à‰€©VQ·z\V4à‰ ­CCDZ€ƒPD]®w€€$Ix€ $IQ·z\V4à‰ VQ·z\V4à‰¯Q·z\V4à‰%xw]°y±$Iz²$IQ·z\V4à‰ ³Q·z\V4à‰Q·z\V4à‰¯yz]´{µ$I|¶$I}·$IQ·z\V4à‰ ¸Q·z\V4à‰Q·z\V4à‰Q·z\V4à‰ {|}]¹]º]N~µ$I€ $I 2 2Q·z\V4à‰ »Q·z\V4à‰¯Q·z\V4à‰Q·z\V4à‰Q·z\V4à‰~_~ÿÿÿÿÿ]€ø]½€€µ$IQ·z\V4à‰ ¾Q·z\V4à‰ €€]¿€µ$IQ·z\V4à‰ ÀQ·z\V4à‰ €]Á]Â]Ã]Ä]Å]Æ€‚µ$I€ƒÇ$I ]Ä€‚€ƒ€Ž]È]ÉÊ EE„„`ËÌEE„„ÍEE„„ÎEE„„ÏEE„„ЂEE„„ÑEE„„ÒEE„„ÓEE„„ÔEE„„ÕEE„„Ö"EE„„×EE„„ØEE„„Ù"EE„„ÚEE„„ÛEE„„ÜBEE„„ ÝEE„„ÞEE„„ßEE„„àEE„„áEE„„âEE„„ãEE„„äEE„„åEE„„æEE„„ç"EE„„ÒEE„„èBEE„„éEE„„êEE„„ëEE„„ìEE„„íEE„„î"EE„„ïEE„„ð"EE„„ñEE„„òEE„„óbEE„„ôEE„„õEE„„öEE„„÷EE„„øBEE„„ùEE„„úEE„„ûEE„„üEE„„ýEE„„þ"EE„„ÿEE„„‚@EE„„‚EE„„‚EE„„‚EE„„‚EE„„ EE„„‚EE„„‚EE„„‚EE„„‚EE„„&EE„„‚ EE„„mEE„„yEE„„‚ EE„„‚ EE„„‚ EE„„uEE„„‚ EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚EE„„‚ EE„„‚!"EE„„‚"EE„„‚#EE„„\»EE„Œ.a‚$.&a‚$#.&a‚$‚%.& a‚$‚& €„€¦,I a‚$‚' &a‚(a‚)a‚*a]‚+ a]‚,. a]‚-. a]‚.. a]‚/. a]‚0. a]‚1. &a]‚2. &a]. a]‚3.  a]‚4.  a]‚5. a]‚6.  a]‚7. a‚8a‚9a‚:a‚;a‚<a‚=a‚>a‚?a‚@a‚Aa‚B €…‚C&$I€†‚D&$I a‚A&&€…€†a‚@&&€…€†&&&a‚E€‡‚C&$I€ˆ‚D&$Ia‚@&&€ˆ€‡&&&a‚Fa‚Ga‚Ha‚I€‰ $I€Š€¢&$Ia‚B&&€Ša]‚2. &. &€‰& &a‚Ja‚Ka‚La‚Ma‚Na‚Oa‚Pa‚Q‚REE‹‹c‚Sc‚T\èEE‹Œd‚T€‹E $I    c‚T&  a]‚1. &. &€‹c‚T&  a]‚2. &. &€‹         ‚UEEŒŒ‚V EEŒ¬Pe‚WG''e‚WG'€ŒH',I€9,Ie‚WG''''€Œ'€'e‚WG'e‚WK' e‚WK'€ŽH',I€M,Ie‚WK' ' €Ž N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O 'e‚WS' e‚X‚Y()')e‚X‚[)*e‚X‚]*)e‚^V+e‚^‚_+(e‚^‚`+(e‚aG,,e‚aG,€H,,I€‘9,Ie‚aG,,,,€,€‘,e‚aG,e‚aK, e‚aK,€’H,,I€“M,Ie‚aK, , €’ N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O ,e‚aS, e‚bG--e‚bG-€”H-,I€•9,Ie‚bG----€”-€•-e‚bG-e‚bK- e‚bK-€–H-,I€—M,Ie‚bK- - €– N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O -e‚bS- e‚cG..e‚cG.€˜H.,I€™9,Ie‚cG....€˜.€™.e‚cG.e‚cK. e‚cK.€šH.,I€›M,Ie‚cK. . €š N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O .e‚cS. e‚d‚e/e‚d‚f/.e‚d‚g/e‚h‚i0/e‚jG11e‚jG1€œH1,I€9,Ie‚jG1111€œ1€1e‚jG1e‚jK1 e‚jK1€žH1,I€ŸM,Ie‚jK1 1 €ž N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O 1e‚jS1 e‚k‚e2e‚k‚l23e‚nG44e‚nG4€ H4,I€¡9,Ie‚nG4444€ 4€¡4e‚nG4e‚nK4 e‚nK4€¢H4,I€£M,Ie‚nK4 4 €¢ N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O 4e‚nS4 e‚oK5 e‚oK5€¤H5,I€¥M,Ie‚oK5 5 €¤ N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O 5e‚oS5 e‚p‚q6 e‚p‚r6e‚p‚s6789:z0e‚p‚w68;.e‚p‚y68;e‚p‚z68;2e‚p‚{68;<e‚p‚}6:=e‚K> e‚K>€¦H>,I€§M,Ie‚K> > €¦ N°?_Õ :OPQ·z\V4à‰RN°?_Õ :O >e‚S> e‚€€Ó?@e‚€‚‚@5::e‚€‚ƒ@57e‚€‚„@5e‚€‚…@57e‚€‚†@576e‚€‚‡@e‚€‚ˆ@e‚€‚‰@5e‚€‚Š@5e‚€‚‹@75A>e‚€‚@B5€¨‚@&I€©‚$I€ª‚‘$I€«‚’B$Ie‚€‚@B5@B5€¨B€©€ª€«5B5@B5e‚€‚@B5e‚€‚“@5e‚€‚”@e‚€‚•@e‚€‚–e‚€‚—‚˜EE¬¬‚™EE¬¬‚šEE¬¬‚›EE¬¬‚œEE¬¬‚EE¬¬‚žEE¬¬‚ŸEE¬¬‚ EE¬¬‚¡EE¬¬‚¢EE¬¬‚£EE¬¬‚EE¬¬‚ EE¬¬‚¤EE¬¬‚¥EE¬¬‚¦EE¬¬‚§EE¬¬‚¨EE¬¬‚©EE¬¬‚ªEE¬¬‚«EE¬¬‚¬"EE¬¬‚­EE¬¬‚®bEE¬¬‚¯EE¬¬‚°EE¬¬‚±EE¬¬‚²EE¬¬‚³EE¬¬‚´EE¬¬‚µEE¬¬uEE¬¬‚¶‚EE¬¬ ‚·EE¬¬‚¸EE¬¬‚¹EE¬¬‚ºEE¬¬‚»EE¬¬‚¼EE¬¬‚½EE¬¬‚¾EE¬¬‚¿EE¬¬‚ÀEE¬¬‚ÁEE¬¬‚ÂEE¬¬‚ÃbEE¬¬‚ÄEE¬¬‚ÅEE¬¬‚ÆEE¬¬‚ǵEF¬­€ƒ‚È€¬‚É$I+? -.;;#„  E-.;;#„EE€¬CC€ƒ‚Ë‚ÌFF­­)Microsoft.FSharp.Core.Operators+UncheckedNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a DefaultOf System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangeZ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../ilxgen.fs€¸  ››(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)))))))))$%))&))))))))))))))))))$) )))))))))))))#""""""""")))))))!!!!!!!!!!!!!!!!!!!!!!!!!!))))!)!!!!!!!!!!!!!!!!!!!!!!!!!!)))))!!!!!)))"!))))))()))))))))))))'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6666666666ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿ6ÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿ6666666ÿÿ66ÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4444444444ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ444444ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ444444ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ22222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ11ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ11ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ33333333ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ33333333ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5555555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5555555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6666666666ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿ6ÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿ6666666ÿÿ66ÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCCCCCCCCC>?CC@CCCCCCCCCCCCCCCCCC>C:CCCCCCCCCCCCC=<<<<<<<<<CCCCCCC;;;;;;;;;;;;;;;;;;;;;;;;;;CCCC;C;;;;;;;;;;;;;;;;;;;;;;;;;;CCCCC;;;;;CCC<;CCCCCCBCCCCCCCCCCCCCAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿPPPPPPPÿÿPPÿÿÿÿÿÿÿÿÿÿPÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFFFFFFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFFFFFFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFFFFFFFFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNNNNNNNNNNÿÿÿÿÿÿÿÿÿÿÿÿÿÿNNNNNNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNNNNNNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLLLLLLLLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMMMMMMMMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMMMMMMMMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿPPPPPPPÿÿPPÿÿÿÿÿÿÿÿÿÿPÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]]]]]]]WY]]Z]]]]]]]]]]]]]]]]]]W]X]]]]]]]]]]]]]VUUUUUUUUU]]]]]]]TTTTTTTTTTTTTTTTTTTTTTTTTT]S]]T]TTTTTTTTTTTTTTTTTTTTTTTTTT]]]]]TTTTT]]]UT]]]]]]\]]]]]]]]]]]]][ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnnnnnnnnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿmmÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿmÿÿmpmÿÿoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjjjjjjjjjjjjjjjjjÿÿÿÿÿÿÿÿjÿÿjjjjjjjjjjjjjjjjjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿjjjjjjjÿÿjjÿÿÿÿÿÿÿÿÿÿjÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhhhhhhhhhhÿÿÿÿÿÿÿÿÿÿÿÿÿÿhhhhhhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhhhhhhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿffffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿggggggggÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿggggggggÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjjjjjjjjjjjjjjjjjÿÿÿÿÿÿÿÿjÿÿjjjjjjjjjjjjjjjjjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿjjjjjjjÿÿjjÿÿÿÿÿÿÿÿÿÿjÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}}}}}}}}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyyyyyyyyyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿyyyyyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyyyyyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvvvvvvvvvvÿÿÿÿÿÿÿÿÿÿÿÿÿÿvvvvvvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvvvvvvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{{{{{{{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{{{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{{{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆˆˆˆˆˆˆ‡„ˆˆ…ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‡ˆˆˆˆˆ€ƒ‹†ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆŠ––––––––ÿÿÿÿÿÿ––ÿÿ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––—–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒÿÿÿÿŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒÿÿŒŒŒŒÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒÿÿÿÿŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒÿÿŒŒŒŒÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒÿÿÿÿŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒÿÿŒŒŒŒÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒÿÿÿÿŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒÿÿŒŒŒŒÿÿÿÿÿÿÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿ––ÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿÿÿÿÿÿ–ÿÿ–ÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžš› Ÿœÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¤ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿ¢¢¢¢¢¢¢¢¢¤ÿÿ¢¢ÿÿ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°°°°°°°­¨°°©°°°°°°°°°°°°°°°°°°­°§°°°°°°°°°°°°°¬«««««««««°°°°°°°ªªªªªªªªªªªªªªªªªªªªªªªªªª°°°°ª°ªªªªªªªªªªªªªªªªªªªªªªªªªª°°°°°ªªªªª°°°«ª°°°°°°¯°°°°°°°°°°°°°®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿ¼ÿÿ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼ÿÿ¼¼ÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²²²²²²²²²²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²²²²²²²²²²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²²²²²²²²²²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿººººººººººÿÿÿÿÿÿÿÿÿÿÿÿÿÿººººººÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿººººººÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸¸¸¸¸¸¸¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ··ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ··ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¹¹¹¹¹¹¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¹¹¹¹¹¹¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿ¼ÿÿ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ÿÿÿÿÿÿÿÿÿÿ¼¼¼¼¼¼¼ÿÿ¼¼ÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÊÊÊÊÊÊÊÊÇÂÊÊÃÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÇÊÁÊÊÊÊÊÊÊÊÊÊÊÊÊÆÅÅÅÅÅÅÅÅÅÊÊÊÊÊÊÊÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÊÊÊÊÄÊÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÊÊÊÊÊÄÄÄÄÄÊÊÊÅÄÊÊÊÊÊÊÉÊÊÊÊÊÊÊÊÊÊÊÊÊÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÖÿÿÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÿÿÖÖÿÿÿÿÿÿÿÿÿÿÖÿÿÿÿÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÌÌÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔÔÔÔÔÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒÒÒÒÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓÓÓÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓÓÓÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕÕÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÖÿÿÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÿÿÿÿÿÿÿÿÿÿÖÖÖÖÖÖÖÿÿÖÖÿÿÿÿÿÿÿÿÿÿÖÿÿÿÿÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåååååååååâÝååÞååååååååååååååååååâåÜåååååååååååååáàààààààààåååååååßßßßßßßßßßßßßßßßßßßßßßßßßßåÛååßåßßßßßßßßßßßßßßßßßßßßßßßßßßåååååßßßßßåååàßååååååäåååååååååååååãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÿÿÿÿõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÿÿÿÿÿÿÿÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷÷÷÷÷÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿöÿÿÿÿÿÿÿÿööÿÿÿÿÿÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÿÿÿÿÿÿöÿÿöùöÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññññññññññÿÿÿÿÿÿÿÿÿÿÿÿÿÿññññññññññññññññññññññññññÿÿÿÿÿÿÿÿñÿÿññññññññññññññññññññññññññÿÿÿÿÿÿÿÿÿÿñññññññÿÿññÿÿÿÿÿÿÿÿÿÿñÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííííííííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññññññññññÿÿÿÿÿÿÿÿÿÿÿÿÿÿññññññññññññññññññññññññññÿÿÿÿÿÿÿÿñÿÿññññññññññññññññññññññññññÿÿÿÿÿÿÿÿÿÿñññññññÿÿññÿÿÿÿÿÿÿÿÿÿñÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,ÿÿ,,ÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿ,,,,,,,,,,ÿÿ,,ÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2222222222ÿÿ22ÿÿ222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222ÿÿ2222222222ÿÿ22ÿÿ222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ55555555555555555555555555ÿÿÿÿÿÿÿÿ5ÿÿ55555555555555555555555555ÿÿÿÿÿÿÿÿÿÿ55555ÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ79999999999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ99999999999999999999999999ÿÿÿÿÿÿÿÿ9ÿÿ99999999999999999999999999ÿÿÿÿÿÿÿÿÿÿ9999999ÿÿ99ÿÿÿÿÿÿÿÿÿÿ9ÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ55555555555555555555555555ÿÿÿÿÿÿÿÿ5ÿÿ55555555555555555555555555ÿÿÿÿÿÿÿÿÿÿ55555ÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ79999999999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ99999999999999999999999999ÿÿÿÿÿÿÿÿ9ÿÿ99999999999999999999999999ÿÿÿÿÿÿÿÿÿÿ9999999ÿÿ99ÿÿÿÿÿÿÿÿÿÿ9ÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;;;;;;;;;;ÿÿ;;ÿÿ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÿ;;;;;;;;;;ÿÿ;;ÿÿ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÿÿÿÿÿÿÿMÿÿÿÿÿÿÿÿ>?ÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿAÿÿÿÿÿÿÿÿBÿÿDÿÿÿÿ*CÿÿÿÿÿÿÿÿEÿÿDÿÿÿÿ*CÿÿFFFFFFFFFFÿÿFFÿÿFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFÿÿFFFFFFFFFFÿÿFFÿÿFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFÿÿÿÿÿÿÿÿHÿÿJÿÿÿÿ0IÿÿÿÿÿÿÿÿKÿÿJÿÿÿÿ0IÿÿLLLLLLLLLLÿÿLLÿÿLLLLLLLLLLLLLLLLLL2LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLÿÿLLLLLLLLLLÿÿLLÿÿLLLLLLLLLLLLLLLLLL2LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLÿÿNÿÿÿÿ4ÿÿPÿÿÿÿ6OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÿRÿÿÿÿ8SQSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSÿÿPÿÿÿÿ6OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÿÿÿÿÿÿÿTÿÿRÿÿÿÿ8QÿÿRÿÿÿÿ8SQSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSÿÿUUUUUUUUUUÿÿUUÿÿUUUUUUUUUUUUUUUUUU;UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿUUUUUUUUUUÿÿUUÿÿUUUUUUUUUUUUUUUUUU;UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿ‚‚‚‚‚‚‚‚‚eg‚‚h‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚d€ajb|l_`no~pqsf^]]]]]]]]]tvkwurcWWWWXYWWWWWWWWWWWWWWWWWWWWx‚yWiWWWZWWWWWWWWWWWWW[WWWWWW\Wzm{}‚WWWWW‚‚‚]W‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§º§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ·ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§µ§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§¯§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§ª§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿsÿÿppppppppppÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{x{z{z{{uyz{{zz{{v{{{{zÿÿÿÿÿÿÿÿ{ÿÿ{{{{x{{{{{{tyw{{{{r{q{{{o{ÿÿÿÿÿÿÿÿÿÿ{{{{{{{ÿÿp{ÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿsÿÿppppppppppÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{š{{x{z{z{{uyz™{zz{{v{{˜{zÿÿÿÿÿÿÿÿ{ÿÿ{š{{x{{{{{{tyw™{{{r{q{{˜o{ÿÿÿÿÿÿÿÿÿÿ{{{{{{{ÿÿp{ÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQQQQQQQQÿÿÿÿÿÿQQÿÿQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ5ÿÿÂÃÇÿÿÿÿÿÿÀÄÿÿÄÁÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÁÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡/ÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡0‡1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿŠŠÿÿŠŠ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝÝÝÝÝÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáÿÿÿÿÿÿàÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿ¿¿Ùÿÿÿÿÿÿ¿¿ÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿ¾¾¾ÿÿÿÿÿÿ¾¾ÿÿ¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾¾¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿؾÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿÓŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆˆˆÿÿÿÿÿÿˆˆÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆˆÖˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿ™› ÿÿÿÿÿÿ˜œÿÿœš›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžžžÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿ™› ÿÿ¤ÿÿ˜œÿÿœ—›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžžžšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’ÿÿÿÿ•“”ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿЉŠÿÿÿÿÿÿŠŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ………ÿÿÿÿÿÿ……ÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ……………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆˆˆÿÿÿÿÿÿˆˆÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ………ÿÿÿÿÿÿ……ÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…„………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ†††ÿÿÿÿÿÿ††ÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†††††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ………ÿÿÿÿÿÿ……ÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ……………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ†††ÿÿÿÿÿÿ††ÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†††††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆˆˆÿÿÿÿÿÿˆˆÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿŠŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿŠŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿ™› ÿÿÿÿÿÿ˜œÿÿœš›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžžžšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿÓŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÿÿÿÿÂÃÇÿÿÿÿÿÿÀÄÿÿÄÁÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÁÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿ™› ÿÿÿÿÿÿ˜œÿÿœš›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžžžšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿŠŠŠÿÿÿÿÿÿŠŠÿÿŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠŠŠŠŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆˆˆÿÿÿÿÿÿˆˆÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ………ÿÿÿÿÿÿ……ÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…„………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿ¿¿¿ÿÿÿÿÿÿ¿¿ÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿ¾¾¾ÿÿÿÿÿÿ¾¾ÿÿ¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾¾¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ………ÿÿÿÿÿÿ……ÿÿ………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ……………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©ÿÿªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿ¾¾¾ÿÿÿÿÿÿ¾¾ÿÿ¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾¾¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿ¿¿¿ÿÿÿÿÿÿ¿¿ÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÐÐÐÿÿÿÿÿÿÑÐÿÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÐÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÿÿÿÿÂÃÇÿÿÿÿÿÿÀÄÿÿÄÁÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÁÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÿÿÿÿÂÃÇÿÿÿÿÿÿÀÄÿÿÄÁÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈÈÈÁÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÿÿÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÐÐÐÿÿÿÿÿÿÐÐÿÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÐÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÏÏÏÿÿÿÿÿÿÏÏÿÿÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÏÏÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÎÎÎÿÿÿÿÿÿÎÎÿÿÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÎÎÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ†††ÿÿÿÿÿÿ††ÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†Í†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÌÌÌÿÿÿÿÿÿÌÌÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿËËËÿÿÿÿÿÿËËÿÿËËËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿËËËËËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ†††ÿÿÿÿÿÿ††ÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†††††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿËËËÿÿÿÿÿÿËËÿÿËËËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿËËËËËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÌÌÌÿÿÿÿÿÿÌÌÿÿÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÌÌÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÿÿÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿ†††ÿÿÿÿÿÿ††ÿÿ†††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†††††ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÎÎÎÿÿÿÿÿÿÎÎÿÿÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÎÎÎÎÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÏÏÏÿÿÿÿÿÿÏÏÿÿÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÏÏÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÿÿÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÐÐÐÿÿÿÿÿÿÐÐÿÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÐÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÿÿÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÿÿÒÒÒÿÿÿÿÿÿÒÒÿÿÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÒÒÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÿÿÒÒÒÿÿÿÿÿÿÒÒÿÿÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÒÒÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÿÿÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÔÔÔÿÿÿÿÿÿÔÔÿÿÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÔÔÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÔÔÔÿÿÿÿÿÿÔÔÿÿÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÔÔÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿÿÿÿ™› ÿÿÿÿÿÿ˜œÿÿœš›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžžžšÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡ÿÿ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆˆˆÿÿÿÿÿÿˆˆÿÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿ¾¾¾ÿÿÿÿÿÿ¾¾ÿÿ¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾¾¾¾¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾ÿÿ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿ¿¿¿ÿÿÿÿÿÿ¿¿ÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝÝÝÝÝÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâÿÿãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêêêêêêêêÿÿêêÿÿêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêÿÿêêêêêêêêêêÿÿêêÿÿêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððÿÿððÿÿððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿððððððððððÿÿððÿÿððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôôôôôôôôôôôôôôôôôôôôôôôôÿÿÿÿÿÿÿÿôÿÿôôôôôôôôôôôôôôôôôôôôôôôôôôÿÿÿÿÿÿÿÿÿÿôôôôôÿÿÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿöøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿøÿÿøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿøøøøøøøÿÿøøÿÿÿÿÿÿÿÿÿÿøÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôôôôôôôôôôôôôôôôôôôôôôôôÿÿÿÿÿÿÿÿôÿÿôôôôôôôôôôôôôôôôôôôôôôôôôôÿÿÿÿÿÿÿÿÿÿôôôôôÿÿÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿöøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿøÿÿøøøøøøøøøøøøøøøøøøøøøøøøøøÿÿÿÿÿÿÿÿÿÿøøøøøøøÿÿøøÿÿÿÿÿÿÿÿÿÿøÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúúúúúúúúÿÿúúÿÿúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúÿÿúúúúúúúúúúÿÿúúÿÿúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝÝÝÝÝÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÝÝÝÝÝÝÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ         ÿÿÿÿ  ÿÿ                                                                                                                                               ÿÿÿÿÿÿÿÿÿÿÿÿ         ÿÿÿÿ  ÿÿ                                                                                  !                                                             ÿÿ         ÿÿÿÿ  ÿÿ                                                                                                                                               ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿÿÿ%%%ÿÿÿÿÿÿ%%ÿÿ%%$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿ%%%%%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿ'''ÿÿÿÿÿÿ''ÿÿ''&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿ'''''ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿÿÿ%%%ÿÿÿÿÿÿ%%ÿÿ%%%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿ%%%%%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿ(((ÿÿÿÿÿÿ((ÿÿ(((ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿ(((((ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿ'''ÿÿÿÿÿÿ''ÿÿ'''ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿ'''''ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿ(((ÿÿÿÿÿÿ((ÿÿ(((ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿ(((((ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡4‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡2‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡3‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿ‡‡‡ÿÿÿÿÿÿ‡‡ÿÿ‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡‡‡‡‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSSSSSSSSSSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVÿÿÿÿÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿQQÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿQÿÿÿÿÿÿQÿÿQTQÿÿUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiiiiiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿccccccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``````ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWWWWWWWWWWÿÿÿÿÿÿÿÿÿÿÿÿÿÿWWWWWWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWWWWWWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXXXXXXXXXXÿÿÿÿÿÿÿÿÿÿÿÿÿÿXXXXXXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXXXXXXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYYYYYYYYYYÿÿÿÿÿÿÿÿÿÿÿÿÿÿYYYYYYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYYYYYYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZZZZZZZZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿZZZZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZZZZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[[[[[[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]]]]]]]]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]]]]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]]]]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^^^^^^^^^^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^^^^^^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^^^^^^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaaaaaaaaaaÿÿÿÿÿÿÿÿÿÿÿÿÿÿaaaaaaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaaaaaaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿddddddddddÿÿÿÿÿÿÿÿÿÿÿÿÿÿddddddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿddddddÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeeeeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………Š…—…—……”„—……——……•…………—ÿÿÿÿÿÿÿÿ…ÿÿ…………Š………………“„–…………’…‘…………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|||||||||||†||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||Ž||||Œ|||||‹|ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{x€{{{{{{y{{{{{{{{{{{{{ÿÿÿÿÿÿÿÿ{ÿÿ{{{{x€{{{{{{y{{{{{{{{{{{{{ÿÿÿÿÿÿÿÿÿÿ{{{{{{{ÿÿˆ{ÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|||||||||||†||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ~ÿÿ~ÿÿÿÿ}}}}}}}}}}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ}|ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿ…ÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿƒ…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{{€{{{{{{y{{{{{{{{{{{{{ÿÿÿÿÿÿÿÿ{ÿÿ{{{{{€{{{{{{y{{{{{{{{{{{{{ÿÿÿÿÿÿÿÿÿÿ{{{{{{{ÿÿ{ÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿ…ÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿƒ…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿ…ÿÿ……………‚………………„…………………………………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿƒ…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰‰‰‰‰‰‰‰‰‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………Š‚………………„…………………………………ÿÿÿÿÿÿÿÿ…ÿÿ…………Š‚………………„…………………………………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ‰…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰‰‰‰‰‰‰‰‰‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………Š‚………………„…………………………………ÿÿÿÿÿÿÿÿ…ÿÿ…………Š‚………………„…………………………………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ‰…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ~ÿÿ~ÿÿÿÿ}}}}}}}}}}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ}|ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………Š…—…—……”„—……——……•…………—ÿÿÿÿÿÿÿÿ…ÿÿ…………Š………………“„–…………’…‘…………ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ…ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|||||||||||†||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||Ž||||Œ|||||‹|ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|||||||||||†||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¥¥¥¥¥¥¥¥¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¥¥¥¥¥||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ¥¥¥¥¥¥||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ££££££££||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ››||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……………………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………………………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ……………………………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……………………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………………………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ……………………………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ|||||¢||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|||||¡||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿ|ÿÿ||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿ|||||||ÿÿ||ÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¤¤¤¤¤¤¤……ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………………………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ……………………………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¤¤¤¤¤¤¤……ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…………………………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ……………………………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦¦¦¦¦¦¦¦¦¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦¦¦¦¦¦…………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ¦¦¦¦¦¦……………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦¦¦¦¦¦¦¦¦¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦¦¦¦¦¦…………… ……………………•……………ÿÿÿÿÿÿÿÿ…ÿÿ¦¦¦¦¦¦……………Ÿ…–…………ž…‘………œ…ÿÿÿÿÿÿÿÿÿÿ…………………ÿÿ……ÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§«§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§¬§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§­§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§°§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§±§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§²§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§³§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§»§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§¼§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§½§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿ©ÿÿÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿ¾ÿÿÿÿ§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿ§ÿÿ§§§§§§§§§§§§§§§§§§§§§§§§§§ÿÿÿÿÿÿÿÿÿÿ§§§§§§§ÿÿ§§ÿÿÿÿÿÿÿÿÿÿ§ÿÿÿÿ§ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ?@+aj/0h4vf;X<_ABCdEHIYSUV[^`beijnvvwknkjichWZkRk]NJKPQOGhkÿÿhijknlmnÿÿÿÿoÿÿooÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoÿÿoÿÿoÿÿÿÿÿÿÿÿmlhkkhijkkkkkkkkjihggggFD>\=7T8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtÿÿtttÿÿsÿÿsssÿÿuÿÿrÿÿÿÿrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqpÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ543231210ÿÿÿÿÿÿÿÿ/.9j:ML-ÿÿ,)ÿÿÿÿ(%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ!ÿÿÿÿÿÿÿÿ" ÿÿÿÿ  ÿÿ       ÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿ x$$$$; BxF KxO Y \ ^xjxnxpxuxŠ Žx˜x½ Á ùÿÿ "üJühü~ü³ü¶ü¸üÕüÙüÞüýü,ü2ü6ü8üAüaüƒü†üˆü‹ü“ü™ü ü«ü®ü·ü¾üÁü×üÚüûüü  :ü=übüeühütüxü|ü‡ü”üžü¤üÒüÕüÙüãüéüüüü#ü$ü%ü&ü(ü*ü,ü.ü1ü3ü5ü=ü@üLüaüdüfügüiüjükülüsüuüwü|üƒüˆüŠüüü ü£ü¦ü¬ü°ü´ü¶ü»ü½ü¿üÁüÃüÅüÎüÐüØüßüåüçüéüêüíüïüðüóüöüùüûüü%ü'ü)ü+ü-ü0ü1ü2ü3ü4ü5ü6ü7ü8ü9ü:ü;ü<ü=ü>ü?ü@üAüBüCüYü\ü^ücüjüoüpütüvüzü|ü€üƒü…ü‡üˆüŠü‹üüŽüü‘ü“ü”ü–ü—ü™üšüüžü£ü¥ü§ü¨ü«ü²ü³ü¶ü·üÄüÍüÔüÜüßüâüåüæüñüøüùüÿüüüüü!ü.ü/ü1ü3ü7ü8ü9:<üBüEüGüIüKüOüTümü†üüü’ü”üŸü¡ü¨ü«ü®ü±ü³üµü¹ü¼üÀüÃüÆüÈüÊüÍüÏüÒüåüæüîüïüôüõüüüüüü,ü.ü9üÿÿ ÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ"„EFJKh„z„£¤ÿÿ6:8:=A?Aÿÿ%ÿÿ6789ÿÿ6888ÿÿ+ÿÿ=>?@ÿÿ=???ÿÿ6;<ÿÿ=BCÿÿH;HFGÿÿN;NFNOP½¾Á ÿÿV;VFVOVYZ\]Š»½VÁVÿÿMBMKLÿÿeBeKe^_˜™ ÿÿfBfKf^fjkpquvŽ’˜f ÿÿlBlKl^ljlnoplulŽl˜l ÿÿnBnKn^njnnnpnunŽn˜nÿÿwBwKw^wjwnwpwuwŽw˜wÿÿ¥¦ÿÿ…†ÿÿ…–ŽÿÿÿÿIL ÿÿX;XFXOXYX\XŠX½XÁX ÿÿ¡;¡F¡O¡Y¡\¡Š¡½¡Á¡ÿÿ´µ45ÿÿ¥§PÿÿDI!!!!y;DBIF¢KgO¢Y¢\¢^gjgnypgug€CŠ¢Žg˜g¬­½¢Á¢èCëCîúñ*ó))) )))>CFCIMJúRúT‘Vdhjntw‚ƒ±CÎíÑÔ)åíëí‚## #&#+#D)K)T^W^\^‚Ž›Î¡Î­È²»·»¹»ËÎ)yî{Îrÿÿ懇‡‡‡;ÄB‡FÄK‡OÄYÄ\Ä^‡j‡n‡p‡u‡€ÄŠÄއ˜‡Ä¬Ä³³½ÄÁÄÅÆèÄëÄîÄñÄóÄý³ÄÄ ÄÄÄ2³>ÄA³FÄIÄJÄRÄTÄVÄa³dÄhÄjÄnÄtÄwĂĠ³±ÄÎÄÑÄÔÄåÄëÄÄÄÄ Ä&Ä+ÄDÄKÄTÄWÄ\Äe³ÄŽÄ›Ä¡Ä­IJÄ·ĹÄËÄ      =f@fLfafffgfifjfkflfsfufÎf\f^fcfjfÄyÄ{ÄŸf¡f¨³«³®³±³rÿÿÅÅÅÅÅÅÅ;ÅBÅFÅKÅOÅYÅ\Å^ÅjÅnÅpÅuŀŊŎŘÅŬųŽÅÁÅÅÅèÅëÅîÅñÅóÅýÅÅÅ ÅÅÅ2Å>ÅAÅFÅIÅJÅRÅTÅVÅaÅdÅhÅjÅnÅtÅwłŠűÅÎÅÑÅÔÅåÅëÅÅÅÅ Å&Å+ÅDÅKÅTÅWÅ\ÅeÅŎśšŭŲÅ·ŹÅËÅ Å Å Å=Å@ÅLÅaÅfÅgÅiÅjÅkÅlÅsÅuÅÎÅ\Å^ÅcÅjÅÅyÅ{ÅŸÅ¡ŨūŮűÅÿÿÇÈÿÿÇÑÒÓÿÿÇ×Ò×ÿÿE¨£¨ÿÿèéëìÿÿèêëê>?ÿÿîïÿÿîøñòÿÿîûñûÿÿîÿñÿÿÿ  ÔÕÿÿñóô Ôÿÿñó Ôÿÿ+,’–“–ÿÿ+-,-ÿÿ34¡¢¿Àÿÿ !"# ÿÿñó ÔDEKLÿÿ€Ièíëí>íFI±Iÿÿ‚GHÿÿ€FG±²ÿÿJKRSÿÿJ\R\TUÿÿJ_R_T_ÿÿJcRcTcÿÿždeÑÒ ÿÿrTkVWdrhujknotuwxÑr ÿÿsTsVsdshsjsnstswsÑsÿÿŠÿÿyz{|ÿÿy{€ÿÿ–—ïðõöÿÿ’œ“œ ÿÿvTvVvdvhvjvnvtvwvÑvÿÿ§’¥“¥ÿÿ–©ïòÿÿ¼½'ÿÿƒ'ˆ'«GÒ'''#'$'%'&'(G*G,G1G3G5G='@'L'a'f'g'i'j'k'l's'u'Î'é'ï'\'^'c'j'G’GŸ'¡' ÿÿ12¯°./C´µº»^_„…®¯=ÿÿ!Í1ÉDÍIÍgÍyͯ͢É)Í*Í.ÉCÉM̓LjÇ͑ͫǴɺÉúÍ^É„ÉÉ®ÉÒÇÇÇ#Ç$Ç%Ç&Ç(Ç*Ç,Ç1Ç3Ç5Ç=Ç@ÇLÇaÇfÇgÇiÇjÇkÇlÇsÇuÇÎÇéÇïÇ\Ç^ÇcÇjÇÇ’ÇŸÇ¡Ç ÿÿ!"DEIJghyz¢£)+*,MN’‘“úûÿÿš›ÿÿWXYZ\]‰Šÿÿíðôõö÷øù‹Œÿÿ’¤“¤ÿÿPQ¬­ÿÿPÞ¬ÞÿÿØÙÛÜÿÿØáÛá wÿÿÎÏy~ÿÿÎéåæëìyéÿÿÎêåêëêyêÿÿíïîïÿÿîúñúJ^R^T^ÿÿ,“ûbzxz”zÿÿÿÿîñJdRdTd ÿÿ+6,6’™“™s†u†€†‚†„†ÿÿCDÿÿÿÿ&+ÿÿ"! !&"+"ÿÿÿÿ+,ÿÿ±/0/ž/'0ÿÿ±²01žŸÿÿ'(ÿÿDE',-ÿÿ12¥3§4ÿÿ1756¥7§7ÿÿGHÿÿ,“ûÿÿ,T“TûTVW[\ÿÿTUWX\]ÿÿT[W[\[ÿÿ_`ÿÿ,V“VûVÿÿ,Y“YûYÿÿbcxy”•ÿÿ€ÿÿ~~ÿÿ:;<=‚ƒÿÿ"ƒJƒhƒzƒÿÿE©£©ÿÿ"ŽEŽJŽhŽzŽ£Žÿÿ"‰E‹J‰h‰z‰£‹ÿÿ‘ÿÿ‘’ÿÿ‰‰‰‰‰‰B‰K‰^‰j‰n‰p‰u‰Ž‰˜‰oÿÿ"|J|h|z{~Ÿ¶Ÿ¸Ÿ§†Ÿ‹Ÿ’§“§®Ÿ¾ŸžŸ¤ŸÕŸÙŸãŸwŸ|ŸˆŸŠŸŸŸ Ÿ£Ÿ¦Ÿ¬Ÿ°Ÿ´Ÿ¶Ÿ»Ÿ½Ÿ¿ŸÁŸÃŸÅŸÐŸØŸßŸåŸçŸêŸíŸðŸóŸöŸùŸûŸŸ+Ÿ-Ÿ0Ÿ1Ÿ2Ÿ3Ÿ4Ÿ5Ÿ6Ÿ7Ÿ8Ÿ9Ÿ:Ÿ;Ÿ<Ÿ=Ÿ>Ÿ?Ÿ@ŸAŸBŸCŸYŸoŸpŸtŸvŸzŸ|Ÿ€ŸƒŸ…ŸÄŸÍŸÔŸÜŸßŸâŸåŸæŸñŸøŸùŸÿŸŸŸŸŸ!Ÿ.Ÿ/Ÿ1Ÿ3Ÿ7Ÿ8ŸOŸTŸmŸŸ”Ÿÿÿ"Jhz¨’¨“¨oÿÿ"~J~h~z}~¶£¸£©†‹’©“©®¾ž¤ÕÙãw|ˆŠ £¦¬°´¶£»£½£¿£Á£Ã£ÅÐØßå£ç£êíðóöùû+£-£0£1£2£3£4£5£6£7£8£9£:£;£<£=£>£?£@£A£B£C£Yo£pt£vz£|€£ƒ£…£ÄÍÔܣߣâ£å£æ£ñøùÿ!.£/£13£7£8£O£T£m£”nÿÿ"©J©h©~©¶©¸©ª†©‹©’ª“ª®©¾©ž©¤©Õ©Ù©ã©w©|©ˆ©Š©©© ©£©¦©¬©°©´©¶©»©½©¿©Á©Ã©Å©Ð©Ø©ß©å©ç©ê©í©ð©ó©ö©ù©û©©+©-©0©1©2©3©4©5©6©7©8©9©:©;©<©=©>©?©@©A©B©C©Y©o©p©t©v©z©|©€©ƒ©…©Ä©Í©Ô©Ü©ß©â©å©æ©ñ©ø©ù©ÿ©©©©©!©.©/©1©3©7©8©O©T©m©©”©ÿÿ•’”“”ÿÿ¢£¥¦ñòüýoÿÿ"Jhz~¶¸†‹’“®¾ž¤ÕÙãw|ˆŠ £¦¬°´¶»½¿ÁÃÅÐØßåçêíðóöùû+-0123456789:;<=>?@ABCYoptvz|€ƒ…ÄÍÔÜßâåæñøùÿ!./1378OTm”ÿÿ²³ÿÿ²µÿÿ²¶·¸¹ºÿÿ»¼È¿ÿÿ­®ÿÿ›œ¡¢yz{|ÿÿÉÊÌÍÿÿ›É¡ÉËÌyÉ{ÉÿÿîÏÎÏÿÿÕÖÿÿÕÝÙÚÿÿÞßÿÿßàÿÿáâÿÿáçåæ÷ÿÿ"þJþhþ~þ³¶þ¸þÕþÙþÞþý,268Aaƒþ†þˆþ‹þ“™ «þ®þ·¾þÁ×Úþû :=behþtþx|‡”žþ¤þÒþÕþÙþãþéþþ#þ$þ%þ&þ(þ*þ,þ.1þ3þ5þ=þ@þLþaþdfþgþiþjþkþlþsþuþwþ|þƒˆþŠþþþ þ£þ¦þ¬þ°þ´þ¶þ»þ½þ¿þÁþÃþÅþÎþÐþØþßþåþçþéþêþíþïþðþóþöþùþûþþ%')+þ-þ0þ1þ2þ3þ4þ5þ6þ7þ8þ9þ:þ;þ<þ=þ>þ?þ@þAþBþCþYþ\þ^þcþjþoþpþtþvþzþ|þ€þƒþ…þ‡þˆþŠþ‹þþŽþþ‘þ“þ”þ–þ—þ™šþžþ£þ¥þ§þ¨þ«þ²þ³þ¶þ·þÄþÍþÔþÜþßþâþåþæþñþøþùþÿþþþþþ!þ.þ/þ1þ3þ7þ8þ<þBEGIKþOþTþmþ†þþ’þ”þŸþ¡þ¨«®±³µ¹¼ÀÃÆÈÊÍÏÒåæîïôõþ,.9²ÿÿ"èJèhè~è¶è¸èÕèÙèÞèƒH†èˆH‹è«H®è¾èÚèhitužè¤èÒHÕèÙèãèHH#H$H%H&H(H*H,H1H3H5H=H@HLHaHfHgHiHjHkHlHsHuHwè|èˆèŠèèè è£è¦è¬è°è´è¶è»è½è¿èÁèÃèÅèÎHÐèØèßèåèçèéHêèíèïHðèóèöèùèûèè+è-è0è1è2è3è4è5è6è7è8è9è:è;è<è=è>è?è@èAèBèCèYè\H^HcHjHoèpètèvèzè|è€èƒè…è‡èˆèŠè‹èèŽèè‘è“è”è–è—èèžè£è¥è§è¨è«è²è³è¶è·èÄèÍèÔèÜèßèâèåèæèñèøèùèÿèèèèè!è.è/è1è3è7è8è<èKèOèTèmèHè’H”èŸH¡Hèÿÿƒ„ˆ‰ÒÓÿÿ   ÿÿ    ÿÿOP ÿÿƒˆÒ#$%&éï ÿÿƒ ˆ Ò   # $ % & é ï  ÿÿƒ!ˆ!Ò!!!#!$!%!&!é!ï!ÿÿƒ"ˆ"Ò"""#"$"%"&"=h@hLhahfhghihjhkhlhshuhÎhé"ï"\h^hchjhŸh¡hÿÿ()*+,-123456Ž’“'ÿÿƒ0ˆ0«¬Ò000#0$0%0&0(1*1,1113151=0@0L0a0f0g0i0j0k0l0s0u0Î0é0ï0\0^0c0j01’1Ÿ0¡0ÿÿLMÿÿ=\@\LSaTfUgViWjXkYlZs[u\Î]\^^^c^j^Ÿ^¡^ÿÿ=b@bLbabfbgbibjbkblbsbubÎb\b^bcbjbŸb¡bÿÿ=c@cLcacfcgcicjckclcscucÎc\c^cccjcŸc¡cÿÿ:;ÿÿ:mpqÿÿ:npnÿÿ=>@Auvÿÿ~¤†‡‹Œ®¯¾¿žŸ¤¥ã䤣¤¦§´µÅÆÐÑØÙßàêëíîðñóôùúûüÿÿ¿ÀÁÂ-.OPTUmnÿÿ°±pq12”•0ÿÿ~{†{‹{®{¾{ž{¤{ÕÞÙÞã{wx|}Ž{ ¡£{¦{¬­°€´{Å{Ð{Ø{ß{ê{í{ð{ó{ö÷ù{û{€YZp€vw|}ÍÒÔÕñòøúùú1€{”€5ÿÿ~‚†‚‹‚®‚¾‚ž‚¤‚Õ‚Ù‚ã‚w‚|‚ˆ‰Š‹‚‚ ‚£‚¦‚¬‚°‚´‚łЂ؂߂ê‚í‚ð‚ó‚ö‚ù‚û‚‚Y‚p‚v‚|‚Ä,͂Ԃñ‚ø‚ù‚ÿ,‚‚‚‚!,1‚‚”‚TÿÿPS_b‡ˆ‘’”™›ÇßÉß   X[egklop×ßæèþÿ ¢¬¥¬ÔØÚÜ  LRMO]äxz­¯±³¶º·¹ÃÌÄËÆÈÎßÏßÐßÑß×ÞØÝÙÛñ¬ü¬‚_awy}ƒß…߸̻ÌÄÉÅÇÔÙÕ×òôøþùþúüÿ Ù!&"$.03ßlßmß”š•—1'ß,7.ß35_ßkÿÿ"#Jihi~…¶·¸¹†…‹…®…¾…ž…¤…Õ…Ù…ã…w…|…ˆ…Š……… …£…¦…¬…°…´…¶·»¼½¾¿ÁÃÄÅ…Ð…Ø…ß…åæçèê…í…ð…ó…ö…ù…û……+-0123456 7 8 9 : ;<=>?@ABCY…op…tv…z|…€ƒ…ćͅԆÜßâåæñ…ø…ù…ÿ‡…………!‡.!/"1…3 7#8$OTm…”…ÿÿÀÁÿÿ­®±²ÿÿ\]^_Ÿ ¡¢ÿÿ\h^hchjhŸh¡hÿÿ\b^bcdjkŸb¡bÿÿ^gÿÿhiÿÿ·¸ÿÿ·rrÿÿrskÿÿ"/J/h/~/¶/¸/†/‹/®/¾/ž/¤/Õ/Ù/ã/w/|/ˆ/Š/// /£/¦/¬/°/´/¶/»/½/¿/Á/Ã/Å/Ð/Ø/ß/å/ç/ê/í/ð/ó/ö/ù/û//+/-/0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/Y/o/p/t/v/z/|/€/ƒ/…/Ä/Í/Ô/Ü/ß/â/å/æ/ñ/ø/ù/ÿ/////!/.///1/3/7/8/O/T/m//”/yÿÿ",J,h,~,¶,¸,†,‹,®,¾,ž,¤,Õ,Ù,ã,w,|,ˆ,Š,,, ,£,¦,¬,°,´,¶,»,½,¿,Á,Ã,Å,Ð,Ø,ß,å,ç,ê,í,ð,ó,ö,ù,û,,+,-,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,Y,o,p,t,v,z,|,€,ƒ,…,‡‰ˆ‰ŠŒ‹ŒŽ’‘’“•”•–˜—˜£¤¥¦Ä,Í,Ô,Ü,ß,â,å,æ,ñ,ø,ù,ÿ,,,,,!,.,/,1,3,7,8,O,T,m,,”,yÿÿ"§J§h§~§¶§¸§†§‹§®§¾§ž§¤§Õ§Ù§ã§w§|§ˆ§Š§§§ §£§¦§¬§°§´§¶§»§½§¿§Á§Ã§Å§Ð§Ø§ß§å§ç§ê§í§ð§ó§ö§ù§û§§+§-§0§1§2§3§4§5§6§7§8§9§:§;§<§=§>§?§@§A§B§C§Y§o§p§t§v§z§|§€§ƒ§…§‡§ˆ§Š§‹§§Ž§§‘§“§”§–§—§£§¥§Ä§Í§Ô§Ü§ß§â§å§æ§ñ§ø§ù§ÿ§§§§§!¨.§/§1§3§7§8§O§T§m§§”§ÿÿ§©¨©<?‚ÿÿ"ªJªhª~ª¶ª¸ª†ª‹ª®ª¾ªžª¤ªÕªÙªãªwª|ªˆªŠªªª ª£ª¦ª¬ª°ª´ª¶ª»ª½ª¿ªÁªÃªÅªÐªØªßªåªçªêªíªðªóªöªùªûªª+ª-ª0ª1ª2ª3ª4ª5ª6ª7ª8ª9ª:ª;ª<ª=ª>ª?ª@ªAªBªCªYªoªpªtªvªzª|ª€ªƒª…ª‡ªˆªŠª‹ªªŽªª‘ª“ª”ª–ª—ª£ª¥ª§­¨­«¬²®³¯¶°·°ÄªÍªÔªÜªßªâªåªæªñªøªùªÿªªªªª!ª.ª/ª1ª3ª7ª8ª<­OªTªmªª”ª±ÿÿ¸¹»¼ÿÿÔÚÜÝßàâã‰ÿÿ"ÊJÊhÊ~ʶʸÊÕ@Ù@Þ@†Ê‹Ê®Ê¾ÊÚ۞ʤÊÕÊÙÊãÊwÊ|ʈʊÊÊʠʣʦʬʰʴʶʻʽʿÊÁÊÃÊÅÊÐÊØÊßÊåÊçÊêÊíÊðÊóÊöÊùÊûÊÊ+Ê-Ê0Ê1Ê2Ê3Ê4Ê5Ê6Ê7Ê8Ê9Ê:Ê;Ê<Ê=Ê>Ê?Ê@ÊAÊBÊCÊYÊoÊpÊtÊvÊzÊ|ʀʃʅʇʈʊʋÊÊŽÊʑʓʔʖʗʟž £Ê¥Ê§Ê¨Ê«Ê²Ê³Ê¶Ê·ÊÄÊÍÊÔÊÜÊßÊâÊåÊæÊñÊøÊùÊÿÊÊÊÊÊ!Ê.Ê/Ê1Ê3Ê7Ê8Ê<ÊK@OÊTÊmÊÊ”Êʉÿÿ"ðJðhð~ð¶ð¸ðÕðÙðÞð†ð‹ð®ð¾ðÚðžð¤ðÕðÙðãðwð|ðˆðŠððð ð£ð¦ð¬ð°ð´ð¶ð»ð½ð¿ðÁðÃðÅðÐðØðßðåðçðêðíðððóðöðùðûðð+ð-ð0ð1ð2ð3ð4ð5ð6ð7ð8ð9ð:ð;ð<ð=ð>ð?ð@ðAðBðCðYðoðpðtðvðzð|ð€ðƒð…ð‡ðˆðŠð‹ððŽðð‘ð“ð”ð–ð—ððžð£ð¥ð§ð¨ð«ð²ð³ð¶ð·ðÄðÍðÔðÜðßðâðåðæðñðøðùðÿððððð!ð.ð/ð1ð3ð7ð8ð<ðKðOðTðmðð”ðð°ÿÿ"îJîhî~î¶î¸îÕîÙîÞîƒ7†îˆ7‹î«7®î¾îÚîžî¤îÒ7ÕîÙîãî77#7$7%7&7(7*7,7173757=7@7L7a7f7g7i7j7k7l7s7u7wî|îˆîŠîîî î£î¦î¬î°î´î¶î»î½î¿îÁîÃîÅîÎ7ÐîØîßîåîçîé7êîíîï7ðîóîöîùîûîî+î-î0î1î2î3î4î5î6î7î8î9î:î;î<î=î>î?î@îAîBîCîYî\7^7c7j7oîpîtîvîzî|î€îƒî…î‡îˆîŠî‹îîŽîî‘î“î”î–î—îîžî£î¥î§î¨î«î²î³î¶î·îÄîÍîÔîÜîßîâîåîæîñîøîùîÿîîîîî!î.î/î1î3î7î8î<îKîOîTîmî7î’7”îŸ7¡7î‰ÿÿ"ïJïhï~ï¶ï¸ïÕïÙïÞï†ï‹ï®ï¾ïÚïžï¤ïÕïÙïãïwï|ïˆïŠïïï ï£ï¦ï¬ï°ï´ï¶ï»ï½ï¿ïÁïÃïÅïÐïØïßïåïçïêïíïðïóïöïùïûïï+ï-ï0ï1ï2ï3ï4ï5ï6ï7ï8ï9ï:ï;ï<ï=ï>ï?ï@ïAïBïCïYïoïpïtïvïzï|ï€ïƒï…ï‡ïˆïŠï‹ïïŽïï‘ï“ï”ï–ï—ïïžï£ï¥ï§ï¨ï«ï²ï³ï¶ï·ïÄïÍïÔïÜïßïâïåïæïñïøïùïÿïïïïï!ï.ï/ï1ï3ï7ï8ï<ïKïOïTïmïï”ïï‰ÿÿ"éJéhé~é¶é¸éÕéÙéÞé†é‹é®é¾éÚéžé¤éÕéÙéãéwé|éˆéŠééé é£é¦é¬é°é´é¶é»é½é¿éÁéÃéÅéÐéØéßéåéçéêéíéðéóéöéùéûéé+é-é0é1é2é3é4é5é6é7é8é9é:é;é<é=é>é?é@éAéBéCéYéoépétévézé|é€éƒé…é‡éˆéŠé‹ééŽéé‘é“é”é–é—ééžé£é¥é§é¨é«é²é³é¶é·éÄéÍéÔéÜéßéâéåéæéñéøéùéÿééééé!é.é/é1é3é7é8é<éKéOéTéméé”ééÿÿ   ÿÿÿÿ‰ÿÿ"êJêhê~ê¶ê¸êÕêÙêÞê†ê‹ê®ê¾êÚêžê¤êÕêÙêãêwê|êˆêŠêêê ê£ê¦ê¬ê°ê´ê¶ê»ê½ê¿êÁêÃêÅêÐêØêßêåêçêêêíêðêóêöêùêûêê+ê-ê0ê1ê2ê3ê4ê5ê6ê7ê8ê9ê:ê;ê<ê=ê>ê?ê@êAêBêCêYêoêpêtêvêzê|ê€êƒê…ê‡êˆêŠê‹êêŽêê‘ê“ê”ê–ê—êêžê£ê¥ê§ê¨ê«ê²ê³ê¶ê·êÄêÍêÔêÜêßêâêåêæêñêøêùêÿêêêêê!ê.ê/ê1ê3ê7ê8ê<êKêOêTêmêê”êêÿÿ!"ÿÿÄÅÿÿÿÄ+ÿ+!*ÿÿÄ-ÿ-!-34ÿÿþÿÿÿÎÏÿÿÎ×ÿÿÿÿ;<ÿÿÕÖÙÚÞßKLÿÿ:;ÿÿ<=ÿÿ!(ÿÿMNQRVWZ[\]`aÿÿMdQdVdZd\c`dÿÿXl\ldlÿÿLMPQUVYZ_`ÿÿXY\_dkÿÿ!)ÿÿ!qÿÿ‡ˆÿÿqr‡xÿÿuvÿÿst€‚ƒ„…ÿÿs‚u€€‚‚‚„‚ÿÿ#8kÿÿ"«J«h«~«¶«¸«†«‹«®«¾«ž«¤«Õ«Ù«ã«w«|«ˆ«Š««« «£«¦«¬«°«´«¶«»«½«¿«Á«Ã«Å«Ð«Ø«ß«å«ç«ê«í«ð«ó«ö«ù«û««+«-«0«1«2«3«4«5«6«7«8«9«:«;«<«=«>«?«@«A«B«C«Y«o«p«t«v«z«|«€«ƒ«…«Ä«Í«Ô«Ü«ß«â«å«æ«ñ«ø«ù«ÿ«««««!«.«/«1«3«7«8«O«T«m««”«kÿÿ"ªJªhª~ª¶ª¸ª†ª‹ª®ª¾ªžª¤ªÕªÙªãªwª|ªˆªŠªªª ª£ª¦ª¬ª°ª´ª¶ª»ª½ª¿ªÁªÃªÅªÐªØªßªåªçªêªíªðªóªöªùªûªª+ª-ª0ª1ª2ª3ª4ª5ª6ª7ª8ª9ª:ª;ª<ª=ª>ª?ª@ªAªBªCªYªoªpªtªvªzª|ª€ªƒª…ªÄªÍªÔªÜªßªâªåªæªñªøªùªÿªªªªª!ª.ª/ª1ª3ª7ª8ªOªTªmªª”ªÿÿdeƒ„ÿÿ³´23AB ¡¨©ÿÿ„…‰ŠÓÔ ÿÿ³¦ýþ2¦A¦ab ¦ef¨¦«¬ ÿÿ³ªýª2ªAªaª ªeª¨ª«ªÿÿ®¯±² ÿÿ³­ý­2­A­a­ ­e­¨­«­®°±° ÿÿ,“·¸ÁÂû:;=>‡ˆéê¤d¤ƒ¤%&'()*BCEFGÃÄåæîðïñôöõ÷88,8.89: ÿÿ,“·ÂÁÂûÂÂ:Â=‡ÂéÂÂdƒÂ%Â'Â)ÂBÂEÂGÂÃÂåÂæÂîÂïÂôÂõÂÂÂÂ,Â.Â9ÂÿÿÆÇÈÉÊËÍÎÏÐÿÿ|}ÒÓVÿÿ³ÙýÙ,Ù2Ù6Ù7Ø8Ù9ØAÙaٓٙٚؠٷÙÁÙ×ÙûÙÙ Ù:Ù=ÙbÙeÙxÙ{Ø|Ù‡Ù”ÙéÙÙ.ÙdÙƒÙ%Ù'Ù)Ù™ÙšÙBÙEÙGÙIنهب٫ٮٱٳٴصٶعٺػؼٽØÀÙÁØÃÙÅØÆÙÈÙÊÙÌØÍÙÏÙÑØÒÙÜØåÙæÙéØêØîÙïÙôÙõÙÙÙÙÙ,Ù.Ù9ÙVÿÿ³ý,267ã89ãAa“™šã ·Á×û :=bex{ã|‡”é.dƒ%')™šBEGI†‡ã¨«®±³´ãµ¶ã¹ºã»ã¼½ãÀÁãÃÅãÆÈÊÌãÍÏÑãÒÜäåæéëêìîïôõ,.9Bÿÿ³»ý»,Å2»6789A»a»“ř𠻷ÅÁÅ×ÜûÅÅ:Å=Åb{e»x{|чŔ{éÅÅdŃÅ%Å'Å)řܚÜBÅEÅGÅI܆‡¨»«»®»±»³´µ¶¹º¼½ÀÁÃÅÆÌÈÌÊÌÍÌÏÌÒÑåÅæÅîÅïÅôÅõÅÅÅÅ,Å.Å9Åÿÿ7Ý9ÝšÝ{݇ݴݶݺݻݽÝÁÝÅÝÌÝÑÝÜÞßáàâÿÿçGçåèæçÿÿ/Bÿÿ³íýí,í2í6í8íAíaí“í™í í·íÁí×íûíí:í=íbíeíxí|í‡í”íéíídíƒí%í'í)í™íšíBíEíGíIí†í¨í«í®í±í³íµí¹í¼íÀíÃíÆíÈíÊíÍíÏíÒíåíæíîíïíôíõíííí,í.í9íÿÿר™›šœIJÿÿ×™šIEÿÿ³ ý , 2 6 8 A a “ ™   · Á ×û   : = b e x | ‡ ” é  ./d ƒ % ' ) ™šB E G I† ¨ « ® ± ³ µ ¹ ¼ À Ã Æ È Ê Í Ï Ò å æ î ï ô õ    , . 9 ÿÿAPNOÙ#%&ÿÿA)N)´µÙ)%)*+ÿÿGåæ,3.;ÿÿ,-./ÿÿ,<.<ÿÿÿÿÿ=GDGMGSGTGUGÿÿ=MDMMMSMTMUMÿÿ=ODOMNSOTOUOÿÿ=>DESPTQURgÿÿ³ÖýÖ,Ö2Ö6Ö7Õ8Ö9ÕAÖaÖ“Ö™ÖšÕ Ö·ÖÁÖ××ûÖÖ Õ#$1<5<89:Ö=ÖGSQRbÖeÖxÖ{Õ|Ö‡Ö”ÖáèåèéÖÖ.ÕdÖƒÖ%Ö'Ö)֙ך×BÖEÖGÖI׆ևե<§<¨Ö«Ö®Ö±Ö³Ö´ÕµÖ¶Õ¹ÖºÕ»Õ¼Ö½ÕÀÖÁÕÃÖÅÕÆÖÈÖÊÖÌÕÍÖÏÖÑÕÒÖÜÕåÖæÖéÕêÕîÖïÖôÖõÖÖÖÕÖ,Ö.Ö9Ö=CDCMCSCTCUCkÿÿ³XýX,X2X6X7X8X9XAXaX“X™XšX X·XÁX×XûXX XX#X1X5X8X:X=XGXQXbXeXxX{X|X‡X”XáXåXéXX.XdXƒX%X'X)X™XšX BXEXGXIX†X‡X¥X§X¨X«X®X±X³X´XµX¶X¹XºX»X¼X½XÀXÁXÃXÅXÆXÈXÊXÌXÍXÏXÑXÒXÜXåXæXéXêXîXïXôXõXXXXX,X.X9X=XDXMXSXTXUX?ÿÿ"2^4^Jh~…^Š^¥^ª^°³^¶¸ÇäÒä×^Û^ý^ "',r/2^6^7^8^9^A^a^ƒ†ˆ‹“r™^š^ ^«®µ¶·^»¼¾Á^ÄÇ×^ßàâãûr^ ^^^:^=^_b^e^x^{^|^…†‡^“”^–^˜^ž¤¯°»^¼½È^ÒÕÙãé^^   #$%&(*,.^135:^=@DFEFL_`ad^fgijklp^suw|ƒ^ˆŠ £¦¬°´¶»½¿ÁÃÅÎÐØßåçéêíïðóöùû%^'^)^+-0123456789:;<=>?@ABCY\^cjoptvz|€ƒ…‡ˆŠ‹Ž‘“”–—™^š^£¥§¨«²³¶·¸»½¾ÄÍÔÜßâåæñøùÿ!./1378<B^E^G^I^OTX^\^d^m†^‡^’”Ÿ¡¨^«^®^±^³^´^µ^¶^·¸¹^º^»^¼^½^¾¿À^Á^Ã^Å^Æ^È^Ê^Ì^Í^Ï^Ñ^Ò^Ü^å^æ^é^ê^î^ï^ô^õ^^^^^$^,^.^9^=^D^M^S^T^U^VWY[Z[_`‘rÿÿ2345…—Š‹¥ª«³ÔÇÔÒÔרÛÜýÔ,ü2Ô6Ô7Ô8Ô9ÔAÔaÔ“ü™ÔšÔ Ô·ÔÁÔ×ÔûüÔ Ô:Ô=ÔbÔeÔxÔ{Ô|Ô‡Ô”Ô–—˜™»¾È¾éÔÔ.Ô:rdÔprƒÔ%Ô'Ô)Ô™ÔšÔBÔEÔGÔIÔXi\idi†Ô‡Ô¨Ô«Ô®Ô±Ô³Ô´ÔµÔ¶Ô¹ÔºÔ»Ô¼Ô½ÔÀÔÁÔÃÔÅÔÆÔÈÔÊÔÌÔÍÔÏÔÑÔÒÔÜÔåÔæÔéÔêÔîÔïÔôÔõÔÔÔÔÔ$%,Ô.Ô9Ô=BDBMBSBTBUB·ÿÿ"ŽJŽhŽ~Ž°Ž¶Ž¸Ž Ž"Ž'Ž/Žƒ†Žˆ‹ŽŽ«®Ž¾ŽÄÇ_ŽžŽ¤ŽÒÕŽÙŽãŽ#$%&(*,135=@LafgijklsuwŽ|ŽˆŽŠŽŽŽ Ž£Ž¦Ž¬Ž°Ž´Ž¶Ž»Ž½Ž¿ŽÁŽÃŽÅŽÎЎ؎ߎåŽçŽéêŽíŽïðŽóŽöŽùŽûŽŽ+Ž-Ž0Ž1Ž2Ž3Ž4Ž5Ž6Ž7Ž8Ž9Ž:Ž;Ž<Ž=Ž>Ž?Ž@ŽAŽBŽCŽYŽ\^cjoŽpŽtŽvŽzŽ|Ž€ŽƒŽ…Ž‡ŽˆŽŠŽ‹ŽŽŽŽŽ‘Ž“Ž”Ž–Ž—Ž£Ž¥Ž§Ž¨Ž«Ž²Ž³Ž¶Ž·Ž¸Ž»Ž½Ž¾ŽÄŽÍŽÔŽÜŽßŽâŽåŽæŽñŽøŽùŽÿŽŽŽŽŽ!Ž.Ž/Ž1Ž3Ž7Ž8Ž<ŽOŽTŽmŽŽ’”ŽŸ¡Ž‘ÿÿlcLcÍcccbcÿÿiŒŠ‹ÿÿlhLhÍhhhbhÿÿ"”J”h”~”°”¶”¸” ”"”'”/”†”‹””®”¾”_”ž”¤”Õ”Ù”ã”w”|”ˆ”Š””” ”£”¦”¬”°”´”¶”»”½”¿”Á”ÔŔДؔߔå”ç”ê”í”ð”ó”ö”ù”û””+”-”0”1”2”3”4”5”6”7”8”9”:”;”<”=”>”?”@”A”B”C”Y”o”p”t”v”z”|”€”ƒ”…”‡”ˆ”Š”‹””Ž””‘”“”””–”—”£”¥”§”¨”«”²”³”¶”·”¸Ë»Ë½”¾”Ĕ͔Ԕܔߔâ”唿”ñ”ø”ù”ÿ”””””!”.”/”1”3”7”8”<”O”T”m”””””*ÿÿƒÆˆÆ«ÆÄÅÇÈÒÆÆÆ#Æ$Æ%Æ&Æ(Æ*Æ,Æ1Æ3Æ5Æ=Æ@ÆLÆaÆfÆgÆiÆjÆkÆlÆsÆuÆÎÆéÆïÆ\Æ^ÆcÆjÆÆ’ƟơƑ’‹ÿÿ"ÃJÃhÃ~ð±¶Ã¸Ã &"&'(/0†Ã‹Ãž®Ã¾Ã_kžÃ¤ÃÕÃÙÃãÃwÃ|ÈÊÃÃàãæìðôöûýÿÃÁÃÃÃÅÃÐÃØÃßÃåÃçÃêÃíÃðÃóÃöÃùÃûÃÃ+Ã-Ã0Ã1Ã2Ã3Ã4Ã5Ã6Ã7Ã8Ã9Ã:Ã;Ã<Ã=Ã>Ã?Ã@ÃAÃBÃCÃYÃoÃpÃtÃvÃzÃ|ÀÃÅÇÈÊËÃÃŽÃÑÓÔÖ×ãåçèëòóö÷ý¿¾¿ÄÃÍÃÔÃÜÃßÃâÃåÃæÃñÃøÃùÃÿÃÃÃÃÃ!Ã.Ã/Ã1Ã3Ã7Ã8Ã<ÃOÃTÃmÃÔÃÃÿÿ)˜/˜T˜W˜Xž[˜c˜i˜n˜r˜s˜t˜˜˜žž ÿÿ)\/uT\W\[\cuijnprusutu˜™ÿÿœœœœœÿÿœÿÿÿÿXYžŸ ÿÿÈÒ­v­ê­~\unp…ˆ†ˆ‡ˆÿÿžŸÏÐÒÓÕÖÿÿ~ˆ‰ ÿÿ—˜¢£¥¦§¨©ª¯°ðñòóö÷ÿÿ:;ABÿÿQR`aÊËÍÎòóUVYw`acdfgijrsuvÏþìíòóøùqurs‰ŠÿÿÈÉvwêë~\tnoÿÿš› ¡ÿÿ ÿÿ­®-.y‚{‚€‚–ˆœîÑïˆõˆÎÑÿÿ®¯:„<„³´¹º‚„ÑÒÿÿ•ßÄÅÏÐר ÿÿ’͓ԔܖãÆÇÉÊÑÒÙÚàáÿÿ…˜Ž˜ÿÿн¥ÁÿÿF¥¤¥ÿÿ => ÿÿÔÕØÙÝÞNOØÚ°±¼À¿À›œžJKÿÿ±*0*ž*%'* ÿÿ"€EèJ€h€z€£èÇâÒâ>±:A¿ÁÀÁ ÿÿ"1E1J1h1z1£1ÇàÒàÄÆÅÆÿÿ  ;<%!'"#ÉÊ%ÿÿEFHILMmnpq³´  MNPQ› œ Z[ÎÏÒÓ  CDGHçéèê!"EFcdefijlmÍÎÿÿPQTU_`cds•‹Œ’“¹º»¼¿ÀÜÝõöXYkmoqæçÚÛxy}~Žwx}~ÑÒÿÿ  ÿÿÇÐÉÏ×Ý]6ÎâÏÖÐÕÑÓƒ„…†35lpmo'(.2_a#(.38:<CHJMPRUX[^bisw}‡’­¯±´µ·ÁËÎÐ!”  !$(1:?BFIU\_cfjnrvŒŽ‘•™œ§«®°Øã!.05;>ADGKNSX[ahjpz|~‚ˆŠŒ‘•—›Ÿ¤¦ª°´¸º¾ÂÆÉÌÐÕØßæèêújrâQUZÊÌÎÒÕ×Üßåèêíïñóöî¡¥©¬®ºÆÒñú" $ 8 L ` b e h l „ ‹ ‘  ø M ¹ » ¾ Ã Ê Ñ Ó Õ Ø Û Ý I à = A Ä Ç Ì V à ‘¥©­¯9;>BGIKMQSXZ\^elpvz|~€ƒ…Š’þjntx‚Œ›¼Ýãæ=”×éîñ49>„‰™œ ¢©°·½%‘ÑDü ›ÆRansxy|‡Œ™œ±¹¼½ÉÑÖàãæéìøþ E`b     KLMNOPKLMNOP/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm47H…†  …†!""#$#%%%&''()(***+cdefh+cdefh+cd+, -?@ACKLMNOP -?@AKLMNOP-P-./012010012472347686867779:;9:99:;H;<= ?@ACKLMNOP ?@AKLMNOP1?@A !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm?@?BCDEFGDEGEHHYH^HHIJKLMNOPKLMNOPKKëìLLíîïðMNNNOPPPQoQRSlmS…†ST…†UVWXYUVUVWXWXYZ[…†\]^\]\]^```abcdefhcdefhcdcdcdefgg…†hhhhhhhhhhjk/j !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmk/k !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmkllmmmmnnnoqrrstuvsuxsusstéttuvwxÎxy…†yyz{z…†zz{{…†{{{||}}~„~€€‚ƒ„ƒƒ„…Ž………………††‡ˆ‰‰‰Š‹Œ‹Œ‹ŒŽŽŽ‘‘‘’“’“’“”•———˜©ª˜Ñ×Ú˜™š›œžž  ¡¢¡¢¡¢£¤¤¤¥¦§¨©ª« ¥¦§¨©ª«¥¦§¨©ª« ¥¦§¨©ª«¥¥¥¥¥¥¥¥¥¦¦678§§678¨¨©©ªª«««¬¬¬­­­¯°±²°°±²²²²²²²³´½¾³´³´³´³´³³´µµ¶·¸¸¸¹º»¼º»º»¼Ã¼½¾½¾½¾¿À¿À¿ÀÁÂÃÃÅÅÅÆÆÇÈÇÈÇÈÉÊÊÊËËËËËËÌÍÌÍÌÍÌÌÍÎÏÏ ÐÑÒÓÔÕÖרÙÚÐÑÒÓÔÕÖרÙÚ ÐÑÒÓÔÕÖרÙÚÐÑÒÓÔÕÖרÙÚÐÑÒØÒÒÓÓ678ÓÔÔÔÔÔÔÔÔÕÖÖ×רØÙÙÙÙÙÙÚÚÛÛÛÛÛÛÜÜÜÜÜÜÜÜÞÞßßßàááãäåæçéééëëëíííïðñïðïðððñòôôõ÷ø÷øùúùúùúûüýüýüþÿþÿrþÿþþÿÿ2…†9UV\          R ‘  …†…†!«$$%%%%%&''''()*+,./0(()*+,./0)*/0*+,,,--1-----../112334445B678779:;<9:;<9:;<9:::;;;<<<=>?‡ˆŠ‹>>???@ACD„@ADADADBCCEFG678FFHIHÎHIJJKKKKKLLMMNOOOOOPQQQSS…†TT…†UUUVWWXXXXYYYZ[\]^_````````adbeddeefgfgijkgh…†ijkmiiijkllnlmnooppprrstuvtuvtuvtuvtutuvwxwxwxyzz{{}}~}}~~€€€‚ƒ„…†‡ˆ‰Š‹ŒŽŽ¶‘’“”””•¡¢£¨ª–——˜™˜š›˜˜™››œžŸ œžœžŸéŸ ¡¢¢£¨ª¡¢££¨ª¡¢£§¨ª¡¢£¨¨ª¡¢£¨©ª¡¢£¨ªª¡¢£¨ª¡¢£¨ª¡¡¢£¤§¥©¦§¨©ª«¬­®¼¬­®¬­­®®¯¯^_°±²³´±²²³³µ¶¶···¸¸¸¹¹¹º»»œ»¼½¾¿ÀÁÂÃćˆŠ‹ÁÂÁÂÃéˆÃˆÄÅÇÈËÍÐÒÇÈÈËÍÐÒÇÈËÌÍÐÒÇÈËÍÍÐÒÇÈËÍÏÐÒÇÈËÍÐÐÒÇÈËÍÐÑÒÇÈËÍÐÒÒÇÈËÍÐÒÖÇÈËÍÐÒØÙ ÇÈËÍÐÒÓÔÕÖ×ÇÈËÍÐÒWÇÇÈÉÏÊÑËËÌÍÎÏÐÑÒÓÔÕÔÕÎÕÖ…†ÖØÙÎÙÚÛÚÛÚÛÜÝÝÝ/Þ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmßàßáâáá3ãäåæç !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm5ãäåæç !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmš›6ãäåæç !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmÏÐÑãäãææççççèíîïðééé ééééŠé”é­é±é¶é¶ˆéÅêëìëìëìíîïðíîïðïðñòóôõôõôõö÷øö÷øö÷øøùúû0ùú !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmùúûü/ü !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmýþ/ý !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmÿÿ2 !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm                     / !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !""%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,--./0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-../0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./00123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01223456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01234456789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01234556789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01234566789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLlm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL]lm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLalm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLelm0 !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLhilm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLjlm/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmm0 !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmš›/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmš/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmœ2 !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmÏÐÑÓ0 !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmÏÐ/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlmÐ/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm×/ !"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLlm×  !!"#M##$jk%9&:';(<)=*>+?,@-A.B/C0D1E2F3G4H5I6J7K8L9:;<=>?@ABCDEFGHIJKLNOOOPPQRQRQRSTUTUVWXYZ[\XYZ[YZYZ[\]__``abcbcbcbcefgfgfgfghihijkklmlnn–noo’opp•pqq¢qrrrssžstuvtuvûüýþtutuûüýþtutuüýttüýuvwwxxyzyzãçèéz{~€‚…||~€‚…}~€‚…~~€‚…~€‚…~€‚…~€‚…Y~€€Œ‚‚ƒƒƒ„„œ„……†‡ˆ‰Š‹ˆ‰ˆ‰Š‹Œ‘‡ˆŠ‹‘‘’“”•–—˜™’“’“”•–—˜™–—˜™—˜™—˜™˜™˜™™™š›œžŸ ¡¢£¤¥¦§¨©ª§¨§¨©©ª«¬­®«¬­®¥«¬«¬­®¯°±²¯°¯°±² ³´µ¶·¸¹º»³´µ¶·¸¹º»À‡ˆŠ‹ ³´µ¶·¸¹º»‡ˆŠ‹³´µ´µ¶¶ˆ·¸¹º»¼¼¼¼¼¼½¾¿¿ÂÀÁÀÁÁÃÄÅÆÇÃÄÃÄÅÆÇÈÉÊËÍÎÏÐÑÐÑÒÒÓÔÕÔÕÖ××ØØØØÙØØÙÜÞÞÞÞàáàá9UV\áâââââòâãããòãäåæåæææòæçççòçèéèèééòééêêòìïíîîïð…†ñòôõö÷øôõöôöøùúùùùúúüÿ678                !"#!#678!!678""""678$&678$$678%%%%678'('')+,678))**++-./678--..01678002…†33;3;M4545]`44678HIJ66H77I77I88J9KUV\9UV\99K99K99K:;;M;;M<NT<T<<N<<N=>?@=>?@>?@?@@AAAABCBCcdBCBCEFGOPQ^_EFG^_FGFGPQFFPGGQGGQLRR^_STUV\UVUVjklUVWXYZ[\\]^_^_…†_``abbcdefghicdecdecdcdefgmfghijklklkmnpqp|}pqqr…†stt|}tuvwvwvwwxyzz{||}|}}|}~|}~€‚ƒ„…†…†‡ˆŠ‹‡‡ˆˆ‰Š‹¨Š‹¨Š‹‹‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¤¥¥¦§§¨©ª«­®¬­®­®¯°±²³´´µ¶·¸¸»»½¿¾À¿ÀÁÂÃÄÅÆÈÊÌÎÐÔÖØÙÚÛÜÝÞßàáâãäæèèüèéêëëýëìíîîïðññòóôôõö÷øùúûüýþÿ !#%'*,/1468:<>@BEGOW‡‰ŒŽ’–˜›Ÿ¡¤¦¨ª®°´·¹¼¾ÀÂÄÇÉÌÎÐÒÔÛâæèêö "%(*,.0479;=@BDFQ[’”–› ¢¤§ª¬®°²¹ÀÂÆÈÎÐÒÔÖØÚÜÞáãåéíïóùüþ   "$&,258:<>@BFHJLNPRTVXZ]¿ÁÃÅÇÉËÍÏÑÓÕØÚßãæèêíïñóõ÷úü  !#&(*,.0357:<>@DFHJLNPRTVXZ\^`dgikmoruwy|ƒ†‰‹‘“•—› ¢¤¦¨ª­¯±³¶¹»½ÀÂÄÌÙáîðòôöøúüþ  "$&(*,13579;=?ACEJMPSVXZ\^`bdfhjlpsuwz|‚„†‰ŒŽ’”–˜šœž ¢¥¨ª¬¯±³µ·¹»½¿ÂÅÈÊÌÎÑÓßðü !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}ƒ…‡‰‹‘“•—›ž ¢¤¦¨ª¬®°³µ·º½¿ÁÃÆÉËÐÖÚÜÞàâäæèêìîôúÿ   "$'*,.0246:?AEGIKNPSWY\^`bdfhjlnprtvxz}‚…ˆŠŒŽ’”–Ÿ¡£«­±³µ·¹»½ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàãåèêìñöûýÿ    "(*-03579;ACEHKMOQSUWY[]_acegikmoqtvxz~€„†ˆŠŒŽ’”–˜šœž ¢¤¦¨ª¬®°²´¶¸º½ÀÂÄÆÈËÑÓ×ÜÞàâäæèëíðòôöøúüþ !#%'*,.13579;>@BDFHJLNPRTVXZ\^acegilnpwy{}€„†ˆŠŒŽ”—™› ¢¤«²¹ÀÇÎÕÝßáãåèëíïñóõûÿ           " $ & ( * , . 0 2 4 6 8 : < ? A C E G I K T W Y [ _ b d l t | „ Œ ” œ ¤ ¬ µ Ã Ë Í Ï Ñ Ô × Ù Û Ý ß á ã å ç é ë î ð ó õ ù û ý        D G I L N P „ º ñ ô ö ø ú ü þ         " % ( , / 1 4 7 9 ; @ B D G I K M O Q T W Y [ _ c e g i k o   ¢ ¤ ¦ ¨ Ø Û     N R U W Y [ ] _ a c s z  ‚ „ † ˆ Š Œ ’ — š œ ž   ¢ ¤ ¦ ¨ ª ¬ ® ± ³ ã å       ! $ ' * - 0 2 4 6 8 : < > @ B D F H J L | ¬ Ü <lœÌü,\Œ¼ìL|¬Ü <lœÌý-]޾î!R‚²âäæèêìîðóõ÷ûþ  "%(+.1479;=?ACEGIKMOQSUWY[]_acegiknqsuwz|~€‚ˆ’”–˜šœž ¢¤§ª­¯±³¶¹¼¾ÀÃÅÇÊÌÏÑÓÖØÚÝßáäæèëíïòôöùûÿ !#%')+.57>@GNU\cjlnprtwy{}ƒ†ˆŠŒŽ•˜šœž ¢¤¦­¯±³µ·¹ÂÅÇÉËÍÒÔØÜÞáäæèêìïñóõ÷ùûýÿ  "%')+-2579;=GVdfikmortvxz|~€‚„†ˆŠŒŽ‘”–˜š £¥§©«­¯±³µ·¹½¿ÁÃÅÉËÍÏÑÓÕ×ÙÜÞàâäæèêìïñ÷ùûýÿ  !$&)+-/2468;>ACEIKMSWY[]`bdfhjlnqsuwy{}ƒ…‡‰‹’”–˜š £¥§®´¹¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÛÝàâäæéëíðòô÷ùûÿ $&(*/246=?ACEGIPRTVX^`bfhkorwy{‚„‡‰ŒŽ‘“–œ¡£¦¨«­°²´·¹¼ÀÃÅÈÊÍÒÔØÚÝßáãåçéíòõ÷ù !#')+/28:<>@BDFHJLOTVXZ\^`hlpsuwy}ƒ…‰ŒŽ’•™›Ÿ£¥§«­±´¶¸º¼¿ÁÃÇËÏÑÓÕ×ÙÛÝàâäæèëíïôöøúüþ   "$&(*,.02468:<?ACEGIKMOQUWZ\^`bdfikmortvx{~€‚„†ˆŠŒŽ’”–˜šœž ¢¤¦¨ª¬®°²´¶¸º½¿ÁÃÅÈÊÌÎÐÒÔÖØÚÜÞàâäæèêìîðòôöøú5@O#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@À)ÀR>@^p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@À/Àp@ CHÇSW d˜À@@@€¼ @@½ ¾ @@ @ @ @ @@€ ›CSš@€ ›CSš@€ ›CSš@p@ CHÇW d˜@p@ CHÇW d˜@p@ CHÇW d˜@@p@#p@$p@%p@&p@'p@)p@*p@+p@HÇd˜kp@wp@‡p@“p@Ÿp@@è@)Ë*Ê+ÌJ€’¡û¤ï #¿$Â%Ä&Ç'­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°kÃq»r¿s¬u™wxìyÎz{Ÿ|¶€öƒ½„Á†ñ‡ž£¥‘ë“È—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý@=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C@€ &À'@€ (@4@ *—C–S•@€ ,À-@€ .@€ 0—C–S•@â@)Ë*Ê+Ì€,]¼\@L_€,]¼\ @L_!@”4"@$@”4#@ËCE«5@O#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@ÀW%@&@”4'@)@”4(@ËCE«R>@^p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@Àr*@è@)Ë*Ê+Ì€#¿$Â%Ä&ÇkÃl¬w“È5@O#p@$p@%p@&p@)p@*p@+p@EºHÇM¹W dªkp@lp@wp@“p@ÀW+@,@è@)Ë*Ê+ÌÀmJ€’¡û¤ï #¿$Â%Ä&Ç'­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°kÃq»r¿s¬u™wxìyÎz{Ÿ|¶€öƒ½„Á†ñ‡ž£¥‘ë“È—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýS>@^p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@E…Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@Àr-@.@/@5@#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@ÀT€ žÔÑÓÀ‘ÍC¬0@1@4@ÔÑÓ—C–S•2@3@4@—C–S•¼C—C–S•8@#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@À[6@€—C–S•p@HÇW dªÀ[7@Q>@p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@Àc€ žÔÑÓÀ‘ÍC¬9@:@€ÔÑÓ—C–S•;@<@=@è@)Ë*Ê+ÌÀmJ€’¡û¤ï #¿$Â%Ä&Ç'­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°kÃq»r¿s¬u™wxìyÎz{Ÿ|¶€öƒ½„Á†ñ‡ž£¥‘ë“È—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýA@—=@>9C–E7N>O'P)Q%R+S•X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CQ@@p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@Àr?@B@C@F@—p@#p@$p@%p@&p@'p@)p@*p@+p@C–HÇS•W d˜kp@wp@‡p@“p@Ÿp@ÀrD@QG@p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@ÀrE@€—C–S•€ÔÑÓ—C–S•€—C–S•Œœp@HÇW d˜ÀrH@I@J@è@)Ë*Ê+Ì € #¿$Â%Ä&Ç'­kÃw‡ž“ÈŸšK@K@} L@CL@w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œé å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ¥M@p@HÇ®@FN@O@€E…€Ž,]6µ†¶¼\P@o@ žÀ‘Q@R@p@,]7·HÇW dª†¸¼\À[€ÔÑÓL_S@T@L_p@6µHÇW d˜†¶Às€ žÔÑÓÀ‘U@V@€ žÔÑÓÀ‘W@X@Y@Z@[@L_Q>@p@p@p@p@p@p@#p@$p@%p@&p@'p@)p@*p@+p@,p@=p@Fp@Gp@HÇIp@Jp@Up@W Xp@Yp@[p@ap@cp@d˜ip@jp@kp@qp@rp@sp@up@wp@xp@yp@zp@{p@|p@€p@ƒp@„p@†p@‡p@p@p@‘p@“p@—p@˜p@›p@œp@Ÿp@ p@¡p@¢p@£p@¤p@¥p@¦p@§p@¨p@©p@ªp@«p@¬p@­p@®p@°p@±p@³p@´p@·p@¼p@½p@¾p@¿p@Àt€ žŒšÀ‘\@]@^@p@Ä@Ä@nHÇŒÄ@Àt€¤¥Œ¦`@a@b@è@)Ë*Ê+Ì€#¿$Â%Ä&ÇkÃl¬w“È€EºM¹€Š,]7·†¸¼\c@d@e@f@€,]¼\g@L_p@HÇÕCm¯×Ct°â@)Ë*Ê+Ì€[bcg¼\ A ¾çC€M³€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýi@E¶h@C€¸’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýj@=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ÔÑÓ=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»Ck@€ÔÑÓl@5@#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@ÀW€Œ¿€ÔÑÓm@5@#p@$p@%p@&p@)p@*p@+p@HÇW dªkp@lp@wp@“p@ÀW€ŒÃn@o@q@HÇr@€ žÞ#À$Â%Å&Ç,];Ü]ÝkÓȠæ¼\ÀÌÏC S¡€ žÞ#Ú%Û5Ê;Ü]ÝÀ‘ÍC¬s@éA5ÍÍC¬t@u@v@w@ ÎC#¿$Â%Ä&Ç,]kÓȠæ¼\x@åC!½"¼L_ÛBGÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýy@€Û,]¼\åC!½"¼L_ÛBGÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýz@€,]¼\€ÔÑÓL_åC!½"¼ÛBGÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ý{@€Má|@€Mã}@„CMå~@€Mç@p@HÇ€@‚@ëp@HÇ@î@EîVÔp@ñ/6HÇn† •üƒ@„@ p@ –@–@–@–@/6HÇn† •üÀ–@ÍC¬p@–@–@–@HÇV–@î@VÔ€ÔÑÓî@VÔ…@î@VÔ†@‡@ˆ@€vý€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý‰@Š@p@ –@HÇŒ–@À€ žŒÀ‘‹@Œ@€Œ@p@ –@–@–@–@HÇÀ–@€ žÔÑÓÀ‘Ž@@p@ –@HÇŒ–@À–@€ žŒ À‘@‘@p@ –@–@–@–@HÇÀ–@€ žÔÑÓÀ‘’@“@”@•@ÏC S¡ p@ –@–@–@–@–@–@HÇV–@Œ–@À–@—@€#¿$Â.kÃl< €¤ #¿$Â'­.kÃl³‡žŸš˜@™@š@›@œ@@.ž@€[bcg¼\ @€[bcg¼\€$À%¡@¢@£@`'€[bcg¼\¤@è@)Ë*Ê+Ìè@)Ë*Ê+Ì € -.01248l:nu@*€ ,]-.012488ZBóIWZV[i l:npu@x‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÕCm¯â@)Ë*Ê+Ì€[bcg¼\ A ¾çC€M2€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýŸ@"V i@E¶¥@€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý¦@"ß,]FøZV¹Y¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý§@"ß,]FøZV¹Y¼\×Ct°¨@×Ct°©@p@HǪ@€MA€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý«@â@)Ë*Ê+Ì#AT1¬@p@HÇ®@F­@(p@ ¯@ ¯@¯@¯@¯@¯@¯@¯@¯@¯@#¯@$¯@%¯@&¯@'¯@-¯@.¯@0¯@1¯@2¯@4¯@C¯@EJHÇS¯@VW¯@d¯@k¯@l¯@n¯@u¯@w¯@¯@‡¯@Œ¯@“¯@”¯@Ÿ¯@À¯@p@T/6HÇn•`°@±@è@)Ë*Ê+ÌåC!½"¼€[ ó@‚߀ERp@T/6HÇn•`²@ p@ Ä@Ä@Ä@Ä@j/6HÇn•`ÀtÍC¬p@ Ä@Ä@Ä@Ä@HÇVÄ@Àtì@VÑ€ žÔÑÓÀ‘ì@Vѳ@´@ì@Vѵ@¶@·@€va€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý¸@¹@p@ Ä@nHÇŒÄ@Àh€ žŒfÀ‘º@»@p@ Ä@HÇŒiÀt¼@p@ Ä@Ä@Ä@Ä@HÇÀt€ žÔÑÓÀ‘½@¾@p@ Ä@Ä@Ä@Ä@HÇÀt€ žÔÑÓÀ‘¿@À@Á@Â@ p@ Ä@Ä@Ä@Ä@Ä@Ä@HÇVÄ@ŒÄ@ÀtÃ@ÏC S¡ p@ Ä@Ä@Ä@Ä@Ä@Ä@HÇVÄ@ŒÄ@ÀtÅ@ÕCm¯Æ@ÕCm¯€}À~Ç@È@É@€ÕCm¯Ê@p@HÇ#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýCM¨€E†C€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýË@#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýCM¨€{E‹VyC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÌ@Í@Î@.Ï@è@)Ë*Ê+Ìè@)Ë*Ê+Ì€ ¤ '­-.0Ž124×l³nu«‡žŸš/€ ¤ '­,]-.0Ž124×8ZBóIWZV[i l³npu«x‡ž‘Ÿš¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÐ@Ñ@ÕCl¹m¯ÉCªÒ@€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýê@"ß,]FøVÎZV¹Y¼\Ó@ÕCm¯€[bcg¼\ A ¾çC€M €,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýŸ@"V ÉCªÔ@Õ@ÉCªÖ@ÉCª×@ÉCªØ@"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýó@‚߀E®C€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÉCªÙ@p@HÇÚ@×Ct°â@)Ë*Ê+Ì€¼\€M·€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÛ@×Ct°â@)Ë*Ê+Ì€¼\Ý@MÁ€E¾C€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýŸ@"V Ü@€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÞ@€LÄ€[bcg¼\ß@à@€[bcg¼\á@ã@ä@å@æ@ç@p@åHÇ€¤¥Œ¦é@p@Ä@Ä@nHÇŒÄ@Àt€¤¥Œ¦ë@p@–@–@HÇŒ–@€¤¥Œ¦í@$€ žÞ#Ú%Û,];ÜBòWZV[å]Ýi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýÀ‘ö@!½"¼GåCIåC[åCiåCxåC‚â†åC‘åC˜åC¢åC£åC¤åC¥åC¦åC§åC¨åC©åCªåC«åC¬åC­åC®åC°åC±åC½åC¾åC¿åCï@€GÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýö@‚âð@ñ@ò@€¼\ô@õ@€—ä¼\÷@ø@p@HÇ€ žÔÑÓÀ‘ù@ú@û@ÏC S¡p@ ý@ ý@ý@ý@ý@ý@ý@ý@:ý@;ý@<ý@HÇný@Œý@ü@€.ø1ùÀõÕC.ø1ùm¯ÀõÕCl¹m¯ÀôÉCªþ@ÉCªÿ@AÕCm¯ÉCªAAAè@)Ë*Ê+Ì €,]8ZBóIWZV[i px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý2CL_˜ý€¾þ€ žÀ‘AAAA€,]BóW ZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ!€\Ð]Í^ÏAp@HÇÀ € ž:Ì;É<ËÀ‘ A A€:Ì;É<Ë A€,]BWZV[i px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý‘AW» A AAAAA€,]ZV[¹Y¼\A ¾L_çC€,]¼\AL_AAp@HÇ€\Ð]Í^Ï`A#AT1`A` p@HÇp@HÇ)AA€ZV¹YA€&p@HÇ€ž(AA€+p@HÇTAžA#AT1€ž.AA!A «A«A«A«A#«A%«A8«A9«A:«A;«A<«A@«AE«AM«AN«AS«AT«AV«AX«A\«A]«A^«A`«Aa«A}«A‚«AÀ«A€28ZV[G¹Y$A5C5C5€28ZV[G¹Y%A&A€ZV¹Y€M:€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý'A€M?O=€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý(A€6@[D‘C•N¼A)A0A *6B,*A+Ap@HÇ€\Ð]Í^Ï,A€ZV¹Y€\Ð]Í^ÏeQ€MJ€[Kp@HÇ€\Ð]Í^Ï-A€ *,.A/A€ZV¹Y1A2Ap@HÇ3A€8Zp@HÇ4A5A¬8ÍC6A8A8Zp@HÇ7Aâ@)Ë*Ê+Ì€[lcg¼\ÍC¬EhMevb9A€,]BóIWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýÍC¬:A€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýÍC¬;A€¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýÍC¬vEzFoJ~NmR‚XY€_ye{…Ž˜‡›„|ž}²ƒ³w´tµs¶u·n¸r¹qºp»oÀe€\Ð]Í^Ï>A€9p€\Ð]Í^Ï?A„C¬8ÍCEtvx@A€¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýÍC¬-AA DA DADADADADADADADADA#DA$DA%DA&DA'DA)DA*DA+DA-DA.DA0DA1DA2DA4DACDAHDASDAVDAWDA\DA]DA^DAdDAkDAlDAnDAuDAwDADA‡DAŒDA“DA”DAŸDAÀDABA€,]BóIWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýCAEAGA"ß,]FøZV_|¹Y¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýFAÏC S¡p@ ÎC:ÎC;ÎC<ÎCHÇÀÎCHAIA×Ct°JAâ@)Ë*Ê+Ì€¼\€M‡€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýKAì@VÑLAî@VÔMANAp@HÇâ@)Ë*Ê+Ì€¼\RAE–OAPAv”€,]BóIWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýQA€,]¼\SAL_€,]¼\TAL_ÑCf®p@HÇÀÐUAVAC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýWAÑCf®p@HÇÀЀ ž«À‘XAC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ ž«À‘YAZA[A\A]A^A_Ap@HÇâ@)Ë*Ê+Ì€¼\åC!½"¼€[²p@HÇ\cA]cA^cA€\Ð]Í^Ï`AaA`·bA`¹p@HÇdAp@HÇeA€(Å,]¼\fA!½"¼FåCXÄ_ü\gAhAL_mA!½"¼FåCXÄ_ÀFÁ€9ÂiAjAkA€_ÇnA_ÇlA€(Æ,]¼\qAËoAp@HÇÀÐqAËpAÕCm¯rAsA×Ct°#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýCM¨€ žEÕÀ‘D€Ù’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ×tAuAvAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ žÔÑÓÀ‘wAxAyA|AzATá{A€ZV¹Y€EãåC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý}A€ZV¹Y~AA€6ëMé€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý€AA‚AƒA„A…A†A‡AˆA‰AŠA‹AŒAAŽAŽA8AA‘A’A“A ÿ€=”A•A8NX&`$‚–A€¼\—A™AMšAM` €,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý˜A€HÇJ¼\€HÇJ¼\›A€ žHÇJ\Ð]Í^ϼ\À€ ž\Ð]Í^ÏÀ‘œAAžAéA\Ð]Í^ÏŸA A¢ANX&`$£AN§ANX&¨ANX&©ANªAN€8EêNX&`$‚€8EðNX&`$‚€¼\¡A#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý¤A`#¥A¦A#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý"A ¼A¼A¼A¼A ¾#¼A%¼A8¼A9¼A:¼A;¼A<¼A@¼AE¼AM¼AN¼AS¼AT¼AV¼AX¼A\¼A]¼A^¼A`¼Aa¼A}¼A‚¼AçCÀ¼A$€!*",)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý¬A"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý­A"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý®A€,]BWZV[i px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý¯AL$°A$´A!5"3)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý±A"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý²A"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý³AµA€¤9¶A€,]¼\€:Ì;É<Ë·A$×A)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý€9?¸A$×A)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý€@B¹AºA€¼\œC¼\»A¼A½A¾A¿AÀA>ÆA ž)Ë*Ê+Ì,Ã8Š=x>vBCEzF=G@HÇI:JEQ.R‚XY€[L_ycge{iJxI…Ž‘K˜ù›„|ž}¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì²ƒ³w´tµs¶u·n¸r¹qºp»o¼\½ ¾ ¿ýÀP€ ž\Ð]Í^ÏÀ‘ÁAÂAéA\Ð]Í^ÏÃA ˆCˆCÄAÅA8aMdNgXl`j‚_ÈAMdNgXl`jÌAMdNgXlÍAMdNgÏAMdNgXlÐAMdNgXlÑAMdNgÒAMdNgÖA8aMdNgXl`j‚_ÏC 8aMdNgS¡Xl`j‚_€ žÞ#Ú%Û8a;ÜE7MdNgXl]Ý`j}3‚_À–^B8aMdNgToXl`j‚_€¼\ÇA$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÉA`iÊAXk€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýËA$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÎA$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÓAÏC S¡ÔAÎC,]¼\ÕA€EsL_$€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýØA$×A)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÙAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ žÔÑÓÀ‘ÚAÛAÜAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ÔÑÓÝAÞA=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CàAßAâAMƒ€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýáAåA Œ=@>9E7N>O'P)Q%R+S¡X4Y5_A`…e3gŠ~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CåA Œ=@>9E7N>O'P)Q%R+S¡X4Y5_A`…e3gŠ~0åŽ1›=:ž;´?µ6¶B¸2¹<º8»CåA Œ=@>9E7N>O'P)Q%R+S¡X4Y5_A`…e3gŠ~0.Ž1›=:ž;´?µ6¶B¸2¹<º8»CBäA’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýãAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýæA€B€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ÔÑÓçAEèA¦w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ¥éAéA´ˆ³éA´ˆ³éA´ˆ³éA²‡±éA´ˆ³éA9ÈéA9ØéA™ýéA@éA\Ð]Í^ÏéA\Ð]Í^ÏéA:Ì;É<ËêA€} C€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ¢ëAìAE€¦w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ¥íAîAD€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ¨ïAðAñAòAóAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ ž^V\À‘ôAõAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ ž^V\´À‘öA÷AC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýøAD€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘€ žu=@>9E7N>O'P)Q%R+X4Y5_A`…e3gt~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CÀ‘ùAúAûAB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýüA:þA’¡û¤ï '­,ÂFÄGÿI!J½UÃ[cgiíj°q»r¿s¬xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜øœé å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³·¶¼\½ ¾ ¿ýýAC€|’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÿA;B|’¡û¤ï '­,ÂFÄGÿI!J½UÃ[cgiíj°q»r¿s¬xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜øœé å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³·¶¼\½ ¾ ¿ýBD€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ’€ ž²=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0‡±Ž1›=:ž;´?µ6¶B¸2¹<º8»CÀ‘D€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀÉ€ ž´ˆ³À‘BB€´ˆ³BBBB+€ žÞ#Ú%Û)Ë*Ê+Ì,Ã;ÜBCF=G@HÇI:JDQ.[L]ÝcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀ• ÍC žÞ¬²#Ú%Û;Ü]݇±À‘J€ žÞw’¡û¤ï #Ú%Û'­,Â;Ü=‡FÄGÿI!J½UÃX“Y–[]Ýacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ“ € žÞ´#Ú%Û;Ü]݈³À‘B B B B B€ ž²‡±À‘E€ žw’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ”€ ž´ˆ³À‘ BBBBBC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€´ˆ³BBBBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€}ìÍC¬C€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB#€)Ë*Ê+Ì,ÃBCF=G@I:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ ž«À‘ÍC¬D€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀõBBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€}øÍC¬C€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýBC€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ ž«À‘B€a1BB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB"B=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C%B=@>9E7N>O'P)Q%X4Y5_A›=:ž;´?µ6¶B¸2¹<º8»C&B=@>9E7N>O'P)Q%X4Y5_A›=:ž;´?µ6¶B¸2¹<º8»C 'B=@N>Q%_A›=´?¶B¹<»C(B=@>9E7N>O'P)Q%X4Y5_A›=:ž;´?µ6¶B¸2¹<º8»C)B=@>9E7N>O'P)Q%_A›=:ž;´?µ6¶B¸2¹<º8»C*B=@>9E7N>O'P)Q%_A›=:ž;´?µ6¶B¸2¹<º8»C +B=@N>Q%_A›=´?¶B¹<»C ,B=@N>Q%_A›=´?¶B¹<»C -B=@N>Q%_A›=´?¶B¹<»C .B=@N>Q%_A›=´?¶B¹<»C /B=@N>Q%_A›=´?¶B¹<»C 0B=@N>Q%_A›=´?¶B¹<»C 1B=@N>Q%_A›=´?¶B¹<»C2B»C3B=@N>Q%_A›=´?¶B»C4B_A›=¶B»C5B_A›=¶B»C6B»C7B»C8B»C]B=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CaB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CeB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C€ žu=@>9E7N>O'P)Q%R+X4Y5_A`…e3gt~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CÀ‘jB=@>9E7N>O'P)Q%X4Y5_Ae3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CmB=@>9E7N>O'P)Q%X4Y5_Ae3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C€=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0åŽ1›=:ž;´?µ6¶B¸2¹<º8»CšB=@>9E7N>O'P)Q%R+X4Y5_Ae3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CœB=@>9E7N>O'P)Q%R+X4Y5_Ae3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»CÓB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0.Ž1›=:ž;´?µ6¶B¸2¹<º8»CÏB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0/Ž1›=:ž;´?µ6¶B¸2¹<º8»CÐB=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C€=@>9E7N>O'P)Q%R+X4Y5_A`…e3h‹~0‰ŒŽ1›=:ž;´?µ6¶B¸2¹<º8»C×B=@>9E7N>O'P)Q%R+X4Y5_A`…e3~0Ž1›=:ž;´?µ6¶B¸2¹<º8»C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýB€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý B€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý!BB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýMBD-C€|’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý#B$B`ƒC€D’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€E’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€F’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€G’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€H’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€I’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€J’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€K’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€L’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€M’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€N’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€O’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€P’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€Q’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€R’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€S’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€T’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€U’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€V’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýC€W’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBNBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€\Ð]Í^ÏOB&€)Ë*Ê+Ì,Ã8cBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀfPB&€)Ë*Ê+Ì,Ã8cBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀf€ ž`À‘QBRBSB%€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀeTBUBVBWB€apÀnXB8jÀm%€)Ë*Ê+Ì,ÃBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀlYBZB[B\BB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý_BdB{Šz‹€`BB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€vB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ žÔÑÓÀ‘bBcBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€|B€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€ žÔÑÓÀ‘fBgBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýhBiBI€ žÞ’¡û¤ï #Ú%Û'­,Â;Ü=‡FÄGÿI!J½UÃX“Y–[]Ýacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘kBI€ žÞ’¡û¤ï #Ú%Û'­,Â;Ü=‡FÄGÿI!J½UÃX“Y–[]Ýacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘lB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*–C,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýnB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*’C,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýoB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*•C,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýpB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*¢C,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýqB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*C,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýrB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý*žC,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýsB€,]BòWZV[åi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýÀ¢€,]BòWZV[åi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýÀ¢åC!½"¼!ûB þBþBþB!½"¼GåCIåCVþB[åCiåCnþBxåC†åC‘åC˜åC¢åC£åC¤åC¥åC¦åC§åC¨åC©åCªåC«åC¬åC­åC®åC°åC±åC½åC¾åC¿åC€GÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýÀ¡€GÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýÀ¡tBtB ýBýBVýBnýB‚âuBvB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýwB*€,Â=‡FÄGÿI!J½X“Y–[cgiíu™xì†ñ£¥‘ë—º˜ø›¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýxB"yB,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³«·¶¼\½ ¾ ¿ý%yB\,ÂEOFÄGÿI!J½VX[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³«·¶¼\½ ¾ ¿ýzB{B ´!³"²JÀL¸!€,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ý|B ´!³"²JÀL¸}B ´!³"²JÀL¸~B ´!³B ´B ´!³"²JÀL¸YC ´!³"²JÀL¸!€,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ý!€,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ý€,€B!€,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ý!ŒC,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ýŽB žFÔ[Ícg¼\À‘‚B€L»ŽB žFÔ[Ícg¼\À‘ƒB€[bcg¼\œC[bcg¼\„B€[Y¼X…B†B‡BDÌB ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ—€ ž9ÆÀ‘ˆB‰BŠB‹BŒBBBU€’¡û¤ï '­,Â8Š=ˆ>vEzFÄGÿI!J¾NÎR‚UÃX”Y—[_yacge{iíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ…Ž£¥‘ë—º˜ù›‘œé|ž}Ÿš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì²ƒ³Ž´‹µs¶u··¸r¹qºp»o¼\½ ¾ ¿ýÀe€\Ð]Í^Ï€LЀ®ÑB€\Ð]Í^Ï‘BF€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[_çacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ棥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ˜€ ž9ÖÀ‘’B“B”B•B€9Û`Ü–BD€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[_çacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ棥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€9Þ`ß—BD€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[_çacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ棥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€9á`â˜BD€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[_çacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ棥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€9ä™BB›B’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýBžBŸB B¡B¢B£B¤B¥B¦BD€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñŒ÷£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀõ€ žŒóÀ‘§B¨B€Œö©BªBD€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ™E€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø™ˆ›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ™€ ž™ûÀ‘«B¬B­B®BDÌB ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀš€ ž@À‘¯B°B±B²BM€ ž’¡û¤ï #%'­,Â;=‡FÄGÿI!J½UÃW9X“Y–[\Ð]Í^Ïacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¹Y¼\½ ¾ ¿ýÀ›]€ ž’¡û¤ï #%'­,Â8Š;=ˆ>vEzFÄGÿI!J¾R‚UÃW9X”Y—[\Ð]Í^Ï_yacge{iíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ…Ž£¥‘ë—º˜ù›‘œé|ž}Ÿš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì²ƒ³Ž´‹µs¶u··¸r¹Zºp»o¼\½ ¾ ¿ýÀœ]€ ž’¡û¤ï #%'­,Â8Š;=ˆ>vEzFÄGÿI!J¾R‚UÃW9X”Y—[\Ð]Í^Ï_yacge{iíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ…Ž£¥‘ë—º˜ù›‘œé|ž}Ÿš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì²ƒ³Ž´‹µs¶u··¸r¹Zºp»o¼\½ ¾ ¿ýÀœ³B € žØ#Õ%Ö;×\Ð]Í^ÏÀ‘´BµB¶B¶B·B¸B¹BºB»B€M€[p@HÇ€\Ð]Í^ÏB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý¼B½B¾B¿B¿B\ÂB]ÂB^ÂBeÂB€\Ð]Í^ÏeÀB€¹YÁBI€ ž’¡û¤ï '­,Â4I:Ì;É<Ë=‡BSFÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬ušxìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ€ ž:Ì;É<ËÀ‘ÃBÄBÅBÆBÇBÈBÉBÊBËBÍBÎBD€ ž’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘B€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÑBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÒBI€ žÞ’¡û¤ï #Ú%Û'­,Â;Ü=‡FÄGÿI!J½UÃX“Y–[]Ýacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘ÔBÕBÖBB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýB€’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ý€½ ¾ ÝB#¿$ÂkÃÚB#ßB,ÂFÄGÿI!J½ME[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³«·¶¼\½ ¾ ¿ý€W»ØBÙBÜB€[B€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý€\Ð]Í^ÏÞB€,]BóWZV[Gi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýàB"€,]BóWZV[æ\Ð]Í^Ïi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ!áB€,]BòWZV[åi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýåC!½"¼ÛBGÿI![iíxì†ñ‘ë˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì½ ¾ ¿ýóBëBeSfâBC€|’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýóBëBeSfãBäBETCåB|’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýóBëBeSfæB€,]Bj¼\óBëBeSfçBëBe,]BjSf¼\€^èBóBëBeSf€béBêBêB,]Bj¼\ìBShíBgîBïBðBL_ñBòB÷B žÞ#Ú%Û;ÜEm]ÝÀ‘JõB žÞ|’¡û¤ï #Ú%Û'­,Â;Ü=‡FÄGÿI!J½UÃX“Y–[]Ýacgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘ôBöBøBÍC¬{VyÍC¬C nÀ„ùB€ núBüBÿBp@åHÇÀÐCp@HÇÀЀ}CÇC§¨Œ©CC nÀ„CC nÀ„CC nÀ„C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýC{"ß,]FøVyZV¹Y¼\ÇC§¨Œ©ÍC¬C C C"€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ý€aD€w’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘ C C#€)Ë*Ê+Ì,ÃBCF=G@I:JD[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀ€a”À›E€ ž˜’¡û¤ï '­,Â=‡FÄGÿI!J½UÃX“Y–[acgiíj°q»r¿s¬u™xìyÎz{Ÿ|¶€öƒ½„Á†ñ£¥‘ë—º˜ø›œéŸš å¡ç¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì³´Š·¶¼\½ ¾ ¿ýÀ‘€ ž–À‘ CC€™CC€œC€žC&€)Ë*Ê+Ì,Ã8cBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀfC&€)Ë*Ê+Ì,Ã8cBCF=G@HÇI:JDQ.[LcgiJxI‘K˜ø¢û£ú¤ù¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¼\½ ¾ ¿ýÀf€£CCT¥€28ZV[G¹YCT§€28ZV[G¹Y€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýCCa«€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýCC_®€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýC C_±€,]BóHÇJ¾WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýC€,]BóJ·WZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý#C"ß,]FøMµZV¹Y¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý!C"ß,]FøZV¹Y¼\€¼\€M¹€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý"C"ß,]FøZV¹Y¼\&C"ß,]FøM¼ZV¹Y¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý$C"ß,]FøZV¹Y¼\€¼\€MÀ€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý%C"ß,]FøZV¹Y¼\(CaÀ,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý'C,C"ß,]FøZV_ƶʹY¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý)C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý*C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý+C/C"ß,]FøZV_ͶϹY¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý-C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý.C1C"ß,]FøZV_Ò¹Y¼\€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ý0C2CL_3C3COî3COï5C¹Ú5C *L',¹Ú€®Û4C€"à,]FøZV¹Y¼\6C>6C HC HCHCHCHCHCHCHCHCHCHC!HC'HC)HC*HC+HC-HC.HC0HC1HC2HC4HC:HC;HC<HCGHCHHCIHCSHCVHC[HCiHClHCnHCuHCxHC‚HC†HC‡HCŒHC‘HC˜HCŸHC¢HC£HC¤HC¥HC¦HC§HC¨HC©HCªHC«HC¬HC­HC®HC°HC±HC½HC¾HC¿HCÀHC€Fø€Fø7C>7C IC ICICICICICICICICICIC!IC'IC)IC*IC+IC-IC.IC0IC1IC2IC4IC:IC;IC<ICGICHICIICSICVIC[ICiIClICnICuICxIC‚IC†IC‡ICŒIC‘IC˜ICŸIC¢IC£IC¤IC¥IC¦IC§IC¨IC©ICªIC«IC¬IC­IC®IC°IC±IC½IC¾IC¿ICÀIC8C>8C JC JCJCJCJCJCJCJCJCJCJC!JC'JC)JC*JC+JC-JC.JC0JC1JC2JC4JC:JC;JC<JCGJCHJCIJCSJCVJC[JCiJClJCnJCuJCxJC‚JC†JC‡JCŒJC‘JC˜JCŸJC¢JC£JC¤JC¥JC¦JC§JC¨JC©JCªJC«JC¬JC­JC®JC°JC±JC½JC¾JC¿JCÀJC€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ!€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ!€\Ð]Í^Ï€\Ð]Í^Ï€,]ZV¹Y¼\€,]ZV¹Y¼\9C>9C KC KCKCKCKCKCKCKCKCKCKC!KC'KC)KC*KC+KC-KC.KC0KC1KC2KC4KC:KC;KC<KCGKCHKCIKCSKCVKC[KCiKClKCnKCuKCxKC‚KC†KC‡KCŒKC‘KC˜KCŸKC¢KC£KC¤KC¥KC¦KC§KC¨KC©KCªKC«KC¬KC­KC®KC°KC±KC½KC¾KC¿KCÀKC:C€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý;C>;C MC MCMCMCMCMCMCMCMCMCMC!MC'MC)MC*MC+MC-MC.MC0MC1MC2MC4MC:MC;MC<MCGMCHMCIMCSMCVMC[MCiMClMCnMCuMCxMC‚MC†MC‡MCŒMC‘MC˜MCŸMC¢MC£MC¤MC¥MC¦MC§MC¨MC©MCªMC«MC¬MC­MC®MC°MC±MC½MC¾MC¿MCÀMCTCOõTCOô€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ý€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýC€9ý`þ?C€9ÿ@C€`€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýDCAC`€ ž`ž0À‘oC,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýBCCC@EC OC OCOCOCOCOCOCOCOCOCOC!OC'OC)OC*OC+OC-OC.OC0OC1OC2OC4OC:OC;OC<OCGOCHOCIOCL$SOCVOC[OCiOClOCnOCuOCxOC‚OC†OC‡OCŒOC‘OC˜OCŸOC¢OC£OC¤OC¥OC¦OC§OC¨OC©OCªOC«OC¬OC­OC®OC°OC±OC¹ ½OC¾OC¿OCÀOCECL$¹ €=® €=® FC>FC PC PCPCPCPCPCPCPCPCPCPC!PC'PC)PC*PC+PC-PC.PC0PC1PC2PC4PC:PC;PC<PCGPCHPCIPCSPCVPC[PCiPClPCnPCuPCxPC‚PC†PC‡PCŒPC‘PC˜PCŸPC¢PC£PC¤PC¥PC¦PC§PC¨PC©PCªPC«PC¬PC­PC®PC°PC±PC½PC¾PC¿PCÀPC€®€®GC>GC QC QCQCQCQCQCQCQCQCQCQC!QC'QC)QC*QC+QC-QC.QC0QC1QC2QC4QC:QC;QC<QCGQCHQCIQCSQCVQC[QCiQClQCnQCuQCxQC‚QC†QC‡QCŒQC‘QC˜QCŸQC¢QC£QC¤QC¥QC¦QC§QC¨QC©QCªQC«QC¬QC­QC®QC°QC±QC½QC¾QC¿QCÀQCLC€,]BWZV[i px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¹Y¼\½ ¾ ¿ýRCL$SCTC€,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ!€ ž\Ð]Í^ÏÀ‘jC žE9\Ð]Í^ÏÀ‘UCVCWCXC!€,ÂFÄGÿI!J½[cgiíxì†ñ‘ë—º˜ø¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì·¶¼\½ ¾ ¿ýZC[C€\Ð]Í^Ï\C]C€,]¼\^C *L_,_C€ žÞ#Ú%Û;Ü]ÝÀ‘`CaC€,bC!oC ž,]BóWZV[æi px‘ž6¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ‘€`.%oC žÞ#Ú%Û,];ÜBóWZV[æ]Ýi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýÀ‘DCcCdCeCmC žž4À‘fCgChCiCjCE9lC,]BóWZV[æi px‘¢û£ú¤ø¥÷¦ö§ô¨õ©óªñ«ï¬í­ò®ð°î±ì¶È¹Y¼\½ ¾ ¿ýkCmCnC€,]B@ZV[D®L¶U¹Y¼\€_Sž?¶TpC€žAqCrCL_sC€,]ZV[D®L¶U¹Y¼\€\Ð]Í^Ï_S¶TtCuC¹H€=J®IvC€®KwCxCyC,]ZV[D®L¹Y¼\zC{C|C}C~C€,]ZV[D®L¶U¹Y¼\€,]ZV[D®L¶U¹Y¼\€,]ZV[D®L¶U¹Y¼\€¼\C€C€¼\C¼\C‚CƒC„C€ žÞ#Ú%Û;Ü]ݼ\À‘…C†C€8Š=x>vEzJ~R‚XY€_ye{…Ž˜‡›„|ž}²ƒ³w´tµs¶u·n¸r¹qºp»oÀe€\Ð]Í^χC€\Ð]Í^ψC‰C€8i€Bk\Ð]Í^ϼ‰ŠC€8l€\Ð]Í^Ï‹CŒCCŽCCC‘C’C“C”C•C–C—C˜C™CšC›CœCCžCŸC C¡C¢C£C†¤C€™ˆ¥C¦C€¼‰§C¨C©CªC«CL‘¬C€[bcg¼\À“­C®C¯C°C±C²C³C—C–S•´CµC¶C·C›Sš¸C¼C—C–S•»C½CS¢¾C£¿CÀCÁCÂCÃCÄCÅCÆCÈCÊCÌCÎCÐCÔCÖCØCÙCÚCÛCÜCÝCÞCßCàCáCâCãCäCæC€#¿$ÂkÃüC#¿$ÂkÃèCéCêC€%Ä&Ç“ÈýC%Ä&Ç“ÈëCìCíC€:Ì;É<ËîCïCðC€\Ð]Í^ÏñCòCóC€ÔÑÓôCõCöC÷CøCùCúCûCüCýCþCÿCDDefnopqrtuxyz{|}~„…Š‹‘—˜žŸ¥¦·¸¼!"%&()./2356;<@CEHJLMOPRcdfgijl¿ÀÄÍàáâç2†‡ˆ‰™Ÿ¡¢£ª«¬°´ÄÅÉÎÏ!')*+2345:…¢ôõö÷ `aelqvwxy}‰ŠŒÑÒÔÖרÚàáäåæïôõ÷þ  dhijkrvwxy}†‰‘’“–˜šœž¢¦©«ËÍÎ,oŒ‘’¢¤¨©¹»¼½¿ÀÏÒÛÝÞàâãäåæðñõ458=@[\^_abdeghjkmops{|}ŠŒ’”˜š›žŸ ¢ÂÃÄÊÎÏÐÒÓÚàáâèìíîõûüýþÿ  !"#$&'+,03457;<@DOz|€„‡‰©¬®¯ÍÔòùûüþÿ   $ % ) + , . 0 1 Z a b c g j l n p w x „ † Ž – ˜ ™ š œ ž Ÿ ¡ Á Â Ã É Í Î Ï Ô Õ Ü â ã ä ë ñ ò ó ô õ              ! E G I Ž ² ´ ¸ ü ý þ    I J K N P Q o w x z ~ ƒ £ ¦ ¨ © ª ¬ ­ ¯ ° ² ³ Ö Ø Ú  ! # $ & * , . M N P T V X Z ž ¡ ¢ Á Â Ä È É Ê Î Ï Ð Ñ Ò Ó Ô × Û Ü ã ç è î ò ó  6 7 R T U V W Y Z [ ^ _ ` b h i j k n } ~ ‚ ‡ ‹ Ž ‘ ’ ” – — ˜ ™ ¾ Á Ã Æ Ç È É Ê ê î ï ò ø ù ú þ ÿ  !"#$%+/24568=>ACEHIJMNPRTUVX\^`ab~ƒ…‡‰Ž“•´µ¸×ØÞßãäåçëìïôöøúþÿ   "'(GIJjlm€‚ƒ„¢¦§©­®³´ÇÉ÷ø!?@CJKLNOSUWvwyz|}~€„†ˆ‰‹ª«®°³µ·º»¼  OSTUVWXYZ\`beglpqsuwxz{†‡‰‘“”•–˜š›Ÿ¡¢¥§¨ª«¬®ÒÔØ cijklmopsvº»¾¿ÀÃâãäåæçèéêëìíîïðñóôõö÷ùûü *+/34=CDEFJKLPRUXZ\cjlm‘µ·¸¹Ý%IgŒ°±ÔÕóõö?@cdeghkop•—˜½¿ÀÁÃÅÆÇÈÉÊË !&*-158;BK[cef‹®¯ÔùúDiŽ’“–—š¿Àåæ)/012uyz”–—™¸¹×öXYœŸâæç-.147:=?ACEIMQRT˜™šàáâ'()*+,otuv¹¿ÀÁKijkl¯°ëì01mn³Ñ !"#$P[¦°±²³´µº  NQRSTU˜²õ 3 w y { ¿ À ä (!,!.!s!t!u!¸!º!¼!""E"I"J"L"M""‘"«"À"Õ"ß"ô"##$#.#8#B#L#V#`#b#k#p#u#w#y#{#•#¯#É#ç#ÿ#$2$K$d$$š$´$Ð$ê$ % %)%*%I%J%%%Ó%Ô%Ö%&^&¢&æ&*'n'²'ö':(~(Â()J)Ž)Ò)*Z*ž*â*&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+~+‚+ƒ+ª+«+Ò+Ö+×+Ø+Ù+ÿ+,,,,, ,/,0,1,2,3,v,¹,º,¾,¿,--G-M-N-O-’-”-×-Ý-Þ-ß-".#.$.n.o.¹.º.å.//2A2C2I2O2q2“2•2–2¸2Ú2á2â2ä2ë2ì2ð2ô2õ2ø2ù2ú2û2@3D3E3F3G3H3I3J3K3¡3¥3§3©3ª3®3¯3ö3ú3û3ü3ý3þ344G4J4K44“4”4Ù4Û4Ü45b5c5d5e5f5g5h5i5j5k5l5±5µ5¶5·5¹5º5»56F6J6K6L6M6N6“6—6˜6™6š6›6é6G7¥7¦7°7±7²7³7´7µ7¶7·7¸7¹7»7½7¿7Ã7888 8 888888b8h8i8j8k8l8m8n8o8p8q8r8s8¸8û8ü8?9@9Š9‹9Œ99Ð9::::?:A:B:C:D:F:e:i:j:‰:Š:­:®:Ì:Ï:ê:ë:î:ï:3;4;7;8;:;~;;‚;ƒ;‡;ˆ;‹;Œ;’;”;•;–;™;›;œ;;¡;£;¥;¦;§;©;ª;«;´;ÿ;<<<<< < <<<<<<<<<<"<#<'<(<,<-<1<2>>4>5>T>\>z>>ƒ>…>£>ª>²>Ð>×>Ù>Û>ù>??!?"?+?I?J?h?i?‡?ˆ?‘?¯?°?Î?Ï?×?õ?ö?ø?ù?û?ý?ÿ?@@@@@N@P@R@S@’@“@Ò@ò@AAAA$A%AdAeA„A£A¤AãAåAçAB%B&BeBhBiBlBmBpBqBsBtBvB•B–B˜BB¼B½B¾BÿBCCC CHCJCLCMCŒCC«C­C®C¯CÏCÕCÜCÝCÞCßCàCDDDD D D DDDDDDDDADCDiDjDkDlDmDqDrDsDtDuDwD–D—D˜D™D¢D¦D§D©DªD¬D­DµD»D¼D¾DÁDÂDÄDÅDÆDÍDÎDÏDÐDÑDÒDÚDâDêDìDíDîDðDòDóDôDõDöDÿDEEE!E"E&E'E(E*E0E1E3E7E8E9E:E;EE?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEQERETEUEVEXEYEZE[E\E^E_EdEeEfEgEhEiEjEnEoEpEqEtEuEyEzE|E~EE€EE‚EƒE„E…E†E‡EˆE‰EŠE‹EŒEEŽEEE‘E’E“E”E•E–E—E˜E™EšE›EŸE£E¤E¥E¦EªE®E¯E°E±EµE¶E·E¸E¼E½E¾E¿EÃEÄEÅEÆEÇEÈEÉEÊEËEÌEÍEÎEÏEÐE      !!!!!!!!""#######$$$%&'''''''()))***++,,----..///000012233445556666777788899:;;;;<<<====>>???????@AABBBBCCCDDDEEEEFFGGGHHHIJJJKKLMMNNOOOOOOOOOOOPQRRSSSTTUUUVVWWXXYYZZZ[[\]]^^___``aaaabbcccccdddefffgghhhiijjklmmmnooppqqrrssssssssssttuuuvwwxxxxyyyzzz{{|||}}~€‚ƒ„„……†‡‡ˆ‰Š‹‹‹‹ŒŒŽŽŽ‘‘‘‘‘’’“””••–––———˜™™š››œœžžŸ    ¡¡¢¢¢¢¢££££££¤¤¥¥¦¦¦¦¦¦§§§§¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨©©ªªªªªªªª««¬¬­®®¯°°°±±±²²³³´´µµµµµµ¶¶···································································································¸¸¹¹¹ºººº»¼¼¼¼¼½½¾¿ÀÀÀÁÁÁÁÁÁÂÂÂÂÃÃÃÃÃÃÃÃÃÃÃÃÄÄÅÅÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÇÇÇÇÇÇÇÇÇÇÇÇÇÈÈÈÈÉÉÉÉÉÉÉÉÉÊÊÊÊËËËËÌÌÌÌÍÍÍÍÍÍÍÍÍÎÎÎÏÏÐÐÑÑÑÑÑÒÒÒÓÓÔÔÕÕÕÖ×××רÙÚÚÛÛÜÜÝÝÝÞÞÞÞÞÞÞÞßßààààááââãããããäääåååææçççèéééêëëììììììììííîîïïððññòòóóôôôôôôõõöööö÷÷÷øøùùúúûûûûûûûüüüüýþþþÿÿÿ                   !!""##$$%%&&''(())**++,,--.///0011122233344455566666777777ÿÿÀÿÿÀÿÿÀ@@@ÿÿÿÿÿÿ@@ @ @ @ @@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿÿÿÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿ"@ÿÿ#@ÿÿÿÿ%@ÿÿ'@ÿÿ(@ÿÿÿÿ*@ÿÿÿÿÿÿ+@,@ÿÿÿÿÿÿ-@.@/@ÿÿÿÿÿÿ0@1@ÿÿ2@3@ÿÿÿÿÿÿ6@ÿÿÿÿ7@ÿÿÿÿÿÿ9@:@ÿÿ;@<@=@ÿÿÿÿÿÿÿÿ?@B@C@ÿÿD@ÿÿE@ÿÿÿÿÿÿÿÿH@I@J@ÿÿÿÿK@ÿÿL@ÿÿM@ÿÿÿÿN@O@ÿÿÿÿP@ÿÿQ@R@ÿÿÿÿS@ÿÿÿÿÿÿU@V@ÿÿW@X@Y@Z@ÿÿÿÿÿÿ\@]@^@ÿÿÿÿ`@a@b@ÿÿÿÿÿÿÿÿc@d@e@f@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿh@ÿÿÿÿÿÿÿÿk@ÿÿl@ÿÿÿÿÿÿm@ÿÿÿÿn@o@ÿÿr@ÿÿÿÿÿÿÿÿs@ÿÿÿÿt@u@v@w@ÿÿx@ÿÿÿÿy@ÿÿÿÿÿÿz@ÿÿÿÿÿÿÿÿ{@ÿÿ|@ÿÿ}@ÿÿ~@ÿÿ@ÿÿ€@ÿÿÿÿ@ÿÿÿÿƒ@„@ÿÿÿÿÿÿÿÿÿÿÿÿ…@ÿÿ†@‡@ˆ@ÿÿÿÿ‰@Š@ÿÿÿÿ‹@Œ@ÿÿ@ÿÿÿÿŽ@@ÿÿÿÿ@‘@ÿÿÿÿ’@“@”@•@ÿÿÿÿ—@ÿÿÿÿ˜@™@š@›@œ@ÿÿž@ÿÿ @ÿÿÿÿ¡@¢@ÿÿÿÿ¤@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥@ÿÿÿÿÿÿÿÿÿÿ¨@ÿÿ©@ÿÿª@ÿÿÿÿ«@ÿÿÿÿ¬@ÿÿÿÿ­@ÿÿÿÿ°@±@ÿÿÿÿÿÿÿÿÿÿÿÿ²@ÿÿÿÿÿÿÿÿÿÿÿÿ³@´@ÿÿµ@¶@·@ÿÿÿÿ¸@¹@ÿÿÿÿº@»@ÿÿ¼@ÿÿÿÿ½@¾@ÿÿÿÿ¿@À@Á@Â@ÿÿÃ@ÿÿÿÿÅ@ÿÿÆ@ÿÿÿÿÇ@È@ÿÿÿÿÊ@ÿÿÿÿÿÿÿÿÿÿË@ÿÿÿÿÿÿÿÿÌ@Í@ÿÿÏ@ÿÿÿÿÿÿÿÿÐ@Ñ@ÿÿÿÿÒ@ÿÿÿÿÓ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔ@Õ@ÿÿÖ@ÿÿ×@ÿÿØ@ÿÿÿÿÿÿÿÿÿÿÙ@ÿÿÚ@ÿÿÿÿÿÿÿÿÿÿÛ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜ@ÿÿÞ@ÿÿÿÿß@à@ÿÿá@ã@ä@å@æ@ç@ÿÿÿÿé@ÿÿÿÿë@ÿÿÿÿí@ÿÿÿÿï@ÿÿÿÿð@ñ@ò@ÿÿô@õ@ÿÿ÷@ø@ÿÿÿÿù@ú@û@ÿÿÿÿü@ÿÿÿÿÿÿÿÿþ@ÿÿÿ@AÿÿÿÿAAAÿÿÿÿÿÿÿÿÿÿAAAAÿÿÿÿAÿÿÿÿ A Aÿÿ Aÿÿÿÿ A AAAAAÿÿÿÿÿÿÿÿAAÿÿÿÿAÿÿÿÿÿÿÿÿAAÿÿAÿÿÿÿÿÿAAÿÿÿÿÿÿÿÿAAÿÿÿÿÿÿÿÿÿÿÿÿ%A&Aÿÿÿÿÿÿ'Aÿÿÿÿ(Aÿÿ)Aÿÿ*A+Aÿÿÿÿ,Aÿÿÿÿÿÿÿÿÿÿÿÿ-Aÿÿ.A/Aÿÿ1A2Aÿÿ3Aÿÿÿÿ4Aÿÿ6Aÿÿÿÿ7Aÿÿÿÿÿÿ9Aÿÿÿÿ:Aÿÿÿÿ;AÿÿÿÿAÿÿÿÿ?Aÿÿ@AÿÿÿÿÿÿBAÿÿCAEAÿÿÿÿFAÿÿÿÿHAIAÿÿJAÿÿÿÿÿÿÿÿKAÿÿLAÿÿMANAÿÿÿÿÿÿÿÿOAÿÿÿÿQAÿÿÿÿÿÿÿÿÿÿÿÿUAVAÿÿWAÿÿÿÿÿÿXAÿÿÿÿYAZA[A\A]A^A_Aÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`AÿÿÿÿÿÿdAÿÿeAÿÿÿÿgAÿÿÿÿÿÿÿÿiAjAkAÿÿÿÿlAÿÿÿÿoAÿÿÿÿpAÿÿrAsAÿÿÿÿÿÿÿÿÿÿtAuAvAÿÿÿÿwAxAyAÿÿÿÿ{Aÿÿÿÿÿÿ}Aÿÿ~AAÿÿÿÿ€AA‚AƒA„A…A†A‡AˆA‰AŠA‹AŒAAŽAÿÿAA‘A’Aÿÿÿÿ”Aÿÿ–Aÿÿ—Aÿÿÿÿÿÿ˜Aÿÿÿÿ›AÿÿÿÿœAAžAÿÿŸA Aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡Aÿÿÿÿÿÿÿÿ¦Aÿÿÿÿÿÿÿÿÿÿÿÿ¬Aÿÿ­Aÿÿ®Aÿÿÿÿ°Aÿÿ±Aÿÿ²Aÿÿ³AµAÿÿ¶Aÿÿÿÿ·Aÿÿÿÿ¸Aÿÿÿÿ¹AºAÿÿÿÿ»A¼A½A¾A¿AÀAÿÿÿÿÁAÂAÿÿÿÿÄAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇAÿÿÿÿÿÿÿÿËAÿÿÿÿÎAÿÿÿÿÿÿÿÿÓAÿÿÔAÿÿÕAÿÿÿÿØAÿÿÙAÿÿÿÿÚAÛAÜAÿÿÿÿÝAÿÿÿÿßAÿÿÿÿáAÿÿÿÿÿÿÿÿãAÿÿæAÿÿÿÿÿÿçAÿÿéAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêAÿÿÿÿëAìAÿÿíAîAÿÿïAðAñAòAóAÿÿÿÿôAõAÿÿÿÿöA÷AÿÿøAÿÿÿÿùAúAûAÿÿÿÿÿÿÿÿÿÿÿAÿÿBÿÿÿÿÿÿÿÿBBÿÿBBBBÿÿÿÿÿÿÿÿB B B B Bÿÿÿÿÿÿ BBBBBÿÿÿÿBBBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBÿÿÿÿÿÿÿÿÿÿBBÿÿÿÿÿÿÿÿBÿÿÿÿBÿÿBÿÿBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBÿÿ Bÿÿ!Bÿÿÿÿÿÿ#Bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9B:B;BB?B@BABBBCBDBEBFBGBHBIBJBKBLBNBÿÿÿÿOBÿÿPBÿÿÿÿQBRBSBÿÿTBUBVBWBÿÿÿÿÿÿYBZB[B\Bÿÿÿÿ_Bÿÿ`BÿÿÿÿÿÿÿÿbBcBÿÿÿÿÿÿÿÿfBgBÿÿhBiBÿÿkBÿÿlBÿÿÿÿnBÿÿÿÿoBÿÿÿÿpBÿÿÿÿqBÿÿÿÿrBÿÿÿÿsBÿÿÿÿÿÿÿÿÿÿÿÿtBÿÿuBvBÿÿwBÿÿxBÿÿÿÿzBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€Bÿÿÿÿÿÿ‚BÿÿÿÿƒBÿÿÿÿ„Bÿÿ…B†B‡BÿÿÿÿˆB‰BŠB‹BŒBBBÿÿÿÿÿÿÿÿBÿÿ‘Bÿÿÿÿ’B“B”B•Bÿÿ–Bÿÿÿÿ—Bÿÿÿÿ˜Bÿÿÿÿ™BÿÿÿÿBžBŸB B¡B¢B£B¤B¥B¦Bÿÿÿÿ§B¨Bÿÿ©BªBÿÿÿÿÿÿ«B¬B­B®Bÿÿÿÿ¯B°B±B²Bÿÿÿÿÿÿ³Bÿÿ´BµB¶Bÿÿ·B¸B¹BºB»Bÿÿÿÿÿÿÿÿÿÿ¼B½B¾B¿BÿÿÿÿÀBÿÿÁBÿÿÿÿÃBÄBÅBÆBÇBÈBÉBÊBËBÍBÎBÿÿÿÿÑBÿÿÒBÿÿÔBÕBÖBÿÿÿÿÿÿÿÿÿÿÿÿÿÿØBÙBÜBÿÿÿÿÿÿÞBÿÿàBÿÿáBÿÿÿÿÿÿÿÿÿÿâBÿÿÿÿÿÿãBÿÿÿÿÿÿÿÿæBÿÿÿÿÿÿçBÿÿÿÿèBÿÿÿÿÿÿéBêBÿÿÿÿÿÿîBïBÿÿñBòBÿÿÿÿôBöBøBÿÿÿÿÿÿùBÿÿúBüBÿBÿÿCÿÿÿÿCÿÿCÿÿCÿÿCÿÿCÿÿÿÿÿÿÿÿC C Cÿÿÿÿÿÿ C Cÿÿÿÿÿÿÿÿ CCÿÿCCÿÿCÿÿCÿÿCÿÿÿÿCÿÿÿÿÿÿÿÿÿÿCÿÿÿÿCÿÿÿÿCÿÿÿÿCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'Cÿÿÿÿ)Cÿÿ*Cÿÿ+Cÿÿÿÿ-Cÿÿ.Cÿÿÿÿ0Cÿÿ3Cÿÿÿÿÿÿÿÿÿÿ4Cÿÿ6Cÿÿÿÿÿÿ7Cÿÿ8Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9Cÿÿ:Cÿÿÿÿ;CÿÿÿÿÿÿÿÿÿÿCÿÿ?Cÿÿ@CÿÿÿÿÿÿÿÿÿÿÿÿBCCCÿÿÿÿÿÿÿÿFCÿÿÿÿÿÿGCÿÿLCÿÿÿÿSCTCÿÿÿÿÿÿUCVCWCXCÿÿZC[Cÿÿ\C]Cÿÿÿÿ_Cÿÿ`CaCÿÿbCÿÿÿÿÿÿÿÿcCdCeCÿÿfCgChCiCÿÿÿÿkCmCnCÿÿÿÿpCÿÿqCÿÿsCÿÿÿÿtCÿÿÿÿvCÿÿwCxCÿÿzC{CÿÿÿÿÿÿÿÿÿÿÿÿÿÿC€CÿÿÿÿC‚CƒC„Cÿÿ…C†Cÿÿÿÿ‡CÿÿˆC‰CÿÿÿÿŠCÿÿÿÿ‹CŒCCŽCCC‘C’C“C”C•C–C—C˜C™CšC›CœCCžCŸC C¡C¢Cÿÿ¤Cÿÿ¥C¦Cÿÿ§C¨C©CªCÿÿ¬Cÿÿ­C®C¯C°C±C²Cÿÿ´CµC¶Cÿÿ¸Cÿÿ»Cÿÿÿÿ¿CÀCÁCÂCÃCÄCÅCÆCÈCÊCÌCÎCÐCÔCÖCØCÙCÚCÛCÜCÝCÞCßCàCáCâCãCäCæCÿÿÿÿèCéCêCÿÿÿÿëCìCíCÿÿîCïCðCÿÿñCòCóCÿÿôCõCöC÷CøCùCúCûCüCýCþCÿCDD°?_Õ :.+$&[]/\*"`;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a GetArray2D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs€à(  ƒ¶*ƒ¶h;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a GetArray3D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs€ì(  ƒ·*ƒ·j;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a GetArray4D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs€ø(  ƒ¸*ƒ¸l;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a SetArray2D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs€ì(  ƒ½*ƒ½j;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a SetArray3D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs€ø(  ƒ¾*ƒ¾l;Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctionsNFSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a SetArray4D System.Int32System.Tuple`2 System.StringSystem.Tuple`5 DebugRangef/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler/../../absil/ilreflect.fs(  ƒ¿*ƒ¿nBSJB#Strings#GUID#BlobMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $.text `.rsrc@@.reloc@B_CorDllMain_CorExeMainmscoree.dll#Strings!!!!!!!!! !! !!!!!!!!!!!!!!!!!! !!!!  ! ! ! !!!!!!€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„„„„„„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzÿÿyyyyyyyyyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{|{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{|{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzÿÿyyyyyyyyyyÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{|{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{|{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#ffffff####################ÿÿÿÿÿÿÿÿ##ffffff####################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#fffffr####################ÿÿÿÿÿÿÿÿ##ffffff####################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#ffffff####################ÿÿÿÿÿÿÿÿ##fffqff####################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#ffffff####################ÿÿÿÿÿÿÿÿ##ffffnf#######op###########ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#ffffff####################ÿÿÿÿÿÿÿÿ##ffffhfj####k#li###########ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿffffffffffÿÿÿÿÿÿÿÿÿÿÿÿ#ffffff####################ÿÿÿÿÿÿÿÿ##ffffff##g#################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^^^^^^^^^^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ#########U###########VT#####ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ######S#####################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ######################R#####ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ#####D######################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ######@#####################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ###############=############ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ###############-############ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ##########ÿÿÿÿÿÿÿÿÿÿÿÿ###########################ÿÿÿÿÿÿÿÿ############################ÿÿÿÿÿÿÿÿÿÿ€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#Ÿ# #¡#¢#£#¤#¥#¦#§#¨#©#ª#«#¬#­#®#¯#°#±#²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&&&&&&&&&&&&&&&&&&&&&&&&&&&ÿÿÿÿÿÿÿÿ&&&&&&&&&&&&&&&&&&&&&&&&&&&&ÿÿÿÿÿÿÿÿÿÿ€&&‚&ƒ&„&…&†&‡&ˆ&‰&Š&‹&Œ&&Ž&&&‘&’&“&”&•&–&—&˜&™&š&›&œ&&ž&Ÿ& &¡&¢&£&¤&¥&¦&§&¨&©&ª&«&¬&­&®&¯&°&±&²&³&´&µ&¶&·&¸&¹&º&»&¼&½&¾&¿&À&Á&Â&Ã&Ä&Å&Æ&Ç&È&É&Ê&Ë&Ì&Í&Î&Ï&Ð&Ñ&Ò&Ó&Ô&Õ&Ö&×&Ø&Ù&Ú&Û&Ü&Ý&Þ&ß&à&á&â&ã&ä&å&æ&ç&è&é&ê&ë&ì&í&î&ï&ð&ñ&ò&ó&ô&õ&ö&÷&ø&ù&ú&û&ü&ý&þ&ÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿ''''''''''ÿÿÿÿÿÿÿÿÿÿÿÿ'''''''''''''''''''''''''''ÿÿÿÿÿÿÿÿ''''''''''''''''''''''''''''ÿÿÿÿÿÿÿÿÿÿ€''‚'ƒ'„'…'†'‡'ˆ'‰'Š'‹'Œ''Ž'''‘'’'“'”'•'–'—'˜'™'š'›'œ''ž'Ÿ' '¡'¢'£'¤'¥'¦'§'¨'©'ª'«'¬'­'®'¯'°'±'²'³'´'µ'¶'·'¸'¹'º'»'¼'½'¾'¿'À'Á'Â'Ã'Ä'Å'Æ'Ç'È'É'Ê'Ë'Ì'Í'Î'Ï'Ð'Ñ'Ò'Ó'Ô'Õ'Ö'×'Ø'Ù'Ú'Û'Ü'Ý'Þ'ß'à'á'â'ã'ä'å'æ'ç'è'é'ê'ë'ì'í'î'ï'ð'ñ'ò'ó'ô'õ'ö'÷'ø'ù'ú'û'ü'ý'þ'ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)(ÿÿ))))))))))ÿÿÿÿÿÿÿÿÿÿÿÿ)))))))))))))))))))))))))))ÿÿÿÿÿÿÿÿ))))))))))))))))))))))))))))ÿÿÿÿÿÿÿÿÿÿ€))‚)ƒ)„)…)†)‡)ˆ)‰)Š)‹)Œ))Ž)))‘)’)“)”)•)–)—)˜)™)š)›)œ))ž)Ÿ) )¡)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±)²)³)´)µ)¶)·)¸)¹)º)»)¼)½)¾)¿)À)Á)Â)Ã)Ä)Å)Æ)Ç)È)É)Ê)Ë)Ì)Í)Î)Ï)Ð)Ñ)Ò)Ó)Ô)Õ)Ö)×)Ø)Ù)Ú)Û)Ü)Ý)Þ)ß)à)á)â)ã)ä)å)æ)ç)è)é)ê)ë)ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ****************************ÿÿÿÿÿÿÿÿ****************************ÿÿÿÿÿÿÿÿÿÿ€**‚*ƒ*„*…*†*‡*ˆ*‰*Š*‹*Œ**Ž***‘*’*“*”*•*–*—*˜*™*š*›*œ**ž*Ÿ* *¡*¢*£*¤*¥*¦*§*¨*©*ª*«*¬*­*®*¯*°*±*²*³*´*µ*¶*·*¸*¹*º*»*¼*½*¾*¿*À*Á*Â*Ã*Ä*Å*Æ*Ç*È*É*Ê*Ë*Ì*Í*Î*Ï*Ð*Ñ*Ò*Ó*Ô*Õ*Ö*×*Ø*Ù*Ú*Û*Ü*Ý*Þ*ß*à*á*â*ã*ä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ñ*ò*ó*ô*õ*ö*÷*ø*ù*ú*û*ü*ý*þ*ÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)(ÿÿ))))))))))ÿÿÿÿÿÿÿÿÿÿÿÿ)))))))))))))))))))))))))))ÿÿÿÿÿÿÿÿ))))))))))))))))))))))))))))ÿÿÿÿÿÿÿÿÿÿ€))‚)ƒ)„)…)†)‡)ˆ)‰)Š)‹)Œ))Ž)))‘)’)“)”)•)–)—)˜)™)š)›)œ))ž)Ÿ) )¡)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±)²)³)´)µ)¶)·)¸)¹)º)»)¼)½)¾)¿)À)Á)Â)Ã)Ä)Å)Æ)Ç)È)É)Ê)Ë)Ì)Í)Î)Ï)Ð)Ñ)Ò)Ó)Ô)Õ)Ö)×)Ø)Ù)Ú)Û)Ü)Ý)Þ)ß)à)á)â)ã)ä)å)æ)ç)è)é)ê)ë)ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿ++++++++++ÿÿÿÿÿÿÿÿÿÿÿÿ+++++++++++++++++++++++++++ÿÿÿÿÿÿÿÿ++++++++++++++++++++++++++++ÿÿÿÿÿÿÿÿÿÿ€++‚+ƒ+„+…+†+‡+ˆ+‰+Š+‹+Œ++Ž+++‘+’+“+”+•+–+—+˜+™+š+›+œ++ž+Ÿ+ +¡+¢+£+¤+¥+¦+§+¨+©+ª+«+¬+­+®+¯+°+±+²+³+´+µ+¶+·+¸+¹+º+»+¼+½+¾+¿+À+Á+Â+Ã+Ä+Å+Æ+Ç+È+É+Ê+Ë+Ì+Í+Î+Ï+Ð+Ñ+Ò+Ó+Ô+Õ+Ö+×+Ø+Ù+Ú+Û+Ü+Ý+Þ+ß+à+á+â+ã+ä+å+æ+ç+è+é+ê+ë+ì+í+î+ï+ð+ñ+ò+ó+ô+õ+ö+÷+ø+ù+ú+û+ü+ý+þ+ÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,(ÿÿ,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿÿÿÿÿÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿ€,,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,(ÿÿ,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿÿÿÿÿÿÿ,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÿÿÿÿÿÿÿÿÿÿ€,,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$.$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$/$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$0$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$1$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$2$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$3ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4ÿÿ4444444444ÿÿÿÿÿÿÿÿÿÿ&&55555555555555555555555555ÿÿÿÿÿÿÿÿ&&55555555555555555555555555ÿÿÿÿÿÿÿÿÿÿ€&&‚&ƒ&„&…&†&‡&ˆ&‰&Š&‹&Œ&&Ž&&&‘&’&“&”&•&–&—&˜&™&š&›&œ&&ž&Ÿ& &¡&¢&£&¤&¥&¦&§&¨&©&ª&«&¬&­&®&¯&°&±&²&³&´&µ&¶&·&¸&¹&º&»&¼&½&¾&¿&À&Á&Â&Ã&Ä&Å&Æ&Ç&È&É&Ê&Ë&Ì&Í&Î&Ï&Ð&Ñ&Ò&Ó&Ô&Õ&Ö&×&Ø&Ù&Ú&Û&Ü&Ý&Þ&ß&à&á&â&ã&ä&å&æ&ç&è&é&ê&ë&ì&í&î&ï&ð&ñ&ò&ó&ô&õ&ö&÷&ø&ù&ú&û&ü&ý&þ&ÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿ6666666666ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'6ÿÿ7777777777ÿÿÿÿÿÿÿÿÿÿÿÿ'77777777777777777777777777ÿÿÿÿÿÿÿÿ''77777777777777777777777777ÿÿÿÿÿÿÿÿÿÿ€''‚'ƒ'„'…'†'‡'ˆ'‰'Š'‹'Œ''Ž'''‘'’'“'”'•'–'—'˜'™'š'›'œ''ž'Ÿ' '¡'¢'£'¤'¥'¦'§'¨'©'ª'«'¬'­'®'¯'°'±'²'³'´'µ'¶'·'¸'¹'º'»'¼'½'¾'¿'À'Á'Â'Ã'Ä'Å'Æ'Ç'È'É'Ê'Ë'Ì'Í'Î'Ï'Ð'Ñ'Ò'Ó'Ô'Õ'Ö'×'Ø'Ù'Ú'Û'Ü'Ý'Þ'ß'à'á'â'ã'ä'å'æ'ç'è'é'ê'ë'ì'í'î'ï'ð'ñ'ò'ó'ô'õ'ö'÷'ø'ù'ú'û'ü'ý'þ'ÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿ6666666666ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿÿÿ66666666666666666666666666ÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)8ÿÿ9999999999ÿÿÿÿÿÿÿÿÿÿÿÿ)99999999999999999999999999ÿÿÿÿÿÿÿÿ))99999999999999999999999999ÿÿÿÿÿÿÿÿÿÿ€))‚)ƒ)„)…)†)‡)ˆ)‰)Š)‹)Œ))Ž)))‘)’)“)”)•)–)—)˜)™)š)›)œ))ž)Ÿ) )¡)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±)²)³)´)µ)¶)·)¸)¹)º)»)¼)½)¾)¿)À)Á)Â)Ã)Ä)Å)Æ)Ç)È)É)Ê)Ë)Ì)Í)Î)Ï)Ð)Ñ)Ò)Ó)Ô)Õ)Ö)×)Ø)Ù)Ú)Û)Ü)Ý)Þ)ß)à)á)â)ã)ä)å)æ)ç)è)é)ê)ë)ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿ6666666666ÿÿÿÿÿÿÿÿÿÿ**::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿ**::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿÿÿ€**‚*ƒ*„*…*†*‡*ˆ*‰*Š*‹*Œ**Ž***‘*’*“*”*•*–*—*˜*™*š*›*œ**ž*Ÿ* *¡*¢*£*¤*¥*¦*§*¨*©*ª*«*¬*­*®*¯*°*±*²*³*´*µ*¶*·*¸*¹*º*»*¼*½*¾*¿*À*Á*Â*Ã*Ä*Å*Æ*Ç*È*É*Ê*Ë*Ì*Í*Î*Ï*Ð*Ñ*Ò*Ó*Ô*Õ*Ö*×*Ø*Ù*Ú*Û*Ü*Ý*Þ*ß*à*á*â*ã*ä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ñ*ò*ó*ô*õ*ö*÷*ø*ù*ú*û*ü*ý*þ*ÿ*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)8ÿÿ9999999999ÿÿÿÿÿÿÿÿÿÿÿÿ)99999999999999999999999999ÿÿÿÿÿÿÿÿ))99999999999999999999999999ÿÿÿÿÿÿÿÿÿÿ€))‚)ƒ)„)…)†)‡)ˆ)‰)Š)‹)Œ))Ž)))‘)’)“)”)•)–)—)˜)™)š)›)œ))ž)Ÿ) )¡)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±)²)³)´)µ)¶)·)¸)¹)º)»)¼)½)¾)¿)À)Á)Â)Ã)Ä)Å)Æ)Ç)È)É)Ê)Ë)Ì)Í)Î)Ï)Ð)Ñ)Ò)Ó)Ô)Õ)Ö)×)Ø)Ù)Ú)Û)Ü)Ý)Þ)ß)à)á)â)ã)ä)å)æ)ç)è)é)ê)ë)ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+6ÿÿ;;;;;;;;;;ÿÿÿÿÿÿÿÿÿÿÿÿ+;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÿÿÿÿÿÿÿ++;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÿÿÿÿÿÿÿÿÿ€++‚+ƒ+„+…+†+‡+ˆ+‰+Š+‹+Œ++Ž+++‘+’+“+”+•+–+—+˜+™+š+›+œ++ž+Ÿ+ +¡+¢+£+¤+¥+¦+§+¨+©+ª+«+¬+­+®+¯+°+±+²+³+´+µ+¶+·+¸+¹+º+»+¼+½+¾+¿+À+Á+Â+Ã+Ä+Å+Æ+Ç+È+É+Ê+Ë+Ì+Í+Î+Ï+Ð+Ñ+Ò+Ó+Ô+Õ+Ö+×+Ø+Ù+Ú+Û+Ü+Ý+Þ+ß+à+á+â+ã+ä+å+æ+ç+è+é+ê+ë+ì+í+î+ï+ð+ñ+ò+ó+ô+õ+ö+÷+ø+ù+ú+û+ü+ý+þ+ÿ+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,8ÿÿ<<<<<<<<<<ÿÿÿÿÿÿÿÿÿÿÿÿ,<<<<<<<<<<<<<<<<<<<<<<<<<<ÿÿÿÿÿÿÿÿ,,<<<<<<<<<<<<<<<<<<<<<<<<<<ÿÿÿÿÿÿÿÿÿÿ€,,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,8ÿÿ<<<<<<<<<<ÿÿÿÿÿÿÿÿÿÿÿÿ,<<<<<<<<<<<<<<<<<<<<<<<<<<ÿÿÿÿÿÿÿÿ,,<<<<<<<<<<<<<<<<<<<<<<<<<<ÿÿÿÿÿÿÿÿÿÿ€,,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$>$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$?$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$2$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$A$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$B$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$C$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$2$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$E$$$H$$$G$$F$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$P$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$N$$$$$$$$$M$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$L$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$I$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$J$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$K$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$3ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$2$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$2$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$O$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$2$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$2$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$Q$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$2$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$2$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$2$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$2$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$2$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$W$$$Y$$$X$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$]$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$\$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$Z$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$[$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$2$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$2$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$2$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿ__________ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿ__________ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿdÿÿÿÿccccccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbbbbbbbbbbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbbbbbbbbbbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeeeeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿccccccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeeeeeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$2$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$2$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$m$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$2$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$2$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$2$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$2$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$2$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$2$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$2$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$2$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$s$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$t$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$u$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$v$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿ$wwwwww$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$wwwwww$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿxxxxxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿ$xxxxxx$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$xxxxxx$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$%ÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿ€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$Ü$Ý$Þ$ß$à$á$â$ã$ä$å$æ$ç$è$é$ê$ë$ì$í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿbbbbbbbbbbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿdÿÿÿÿccccccccccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzÿÿ€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzÿÿ€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚‚‚‚‚‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿ…………………………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿ…………………………ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿÿˆÿÿ‰ÿÿŠÿÿ‹ÿÿŒÿÿÿÿŽÿÿÿÿÿÿ‘ÿÿ’ÿÿ“ÿÿ”ÿÿ•ÿÿ–ÿÿ—ÿÿ˜ÿÿ™ÿÿšÿÿ›ÿÿœÿÿÿÿžÿÿŸÿÿ ÿÿ¡ÿÿ¢ÿÿ£ÿÿ¤ÿÿ¥ÿÿ¦ÿÿ§ÿÿ¨ÿÿ©ÿÿªÿÿ«ÿÿ¬ÿÿ­ÿÿ®ÿÿ¯ÿÿ°ÿÿ±ÿÿ²ÿÿ³ÿÿ´ÿÿµÿÿ¶ÿÿ·ÿÿ¸ÿÿ¹ÿÿºÿÿ»ÿÿ¼ÿÿ½ÿÿ¾ÿÿ¿ÿÿÀÿÿÁÿÿÂÿÿÃÿÿÄÿÿÅÿÿÆÿÿÇÿÿÈÿÿÉÿÿÊÿÿËÿÿÌÿÿÍÿÿÎÿÿÏÿÿÐÿÿÑÿÿÒÿÿÓÿÿÔÿÿÕÿÿÖÿÿ×ÿÿØÿÿÙÿÿÚÿÿÛÿÿÜÿÿÝÿÿÞÿÿßÿÿàÿÿáÿÿâÿÿãÿÿäÿÿåÿÿæÿÿçÿÿèÿÿéÿÿêÿÿëÿÿìÿÿíÿÿîÿÿïÿÿðÿÿñÿÿòÿÿóÿÿôÿÿõÿÿöÿÿ÷ÿÿøÿÿùÿÿúÿÿûÿÿüÿÿýÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿ*ÿÿ+ÿÿ,-.ÿÿ/0ÿÿ 5!5$5&5(58494:5=5P5S5U5ˆ5Œ5 ÿÿ A!A$A&A(AP?S?U?ˆAŒA ÿÿ <!<$<&<(<:;=>P<S<U<ˆ<Œ<ÿÿPQSTUVÿÿ B!B$B&B(BˆBŒBÿÿ !"$%&'()ˆ‹Œÿÿ ÿÿKGHIJ ÿÿ C/!C$C&C(C-/DEˆCŒCÿÿ9YWYÿÿ9vWvwxÿÿ 22!2$2&2(2/1678292:2=2P2S2U2ˆ2Œ2 ÿÿ#$9yWytuwyz{|}ÿÿ„…ÿÿÿÿ?@ÿÿ‡?‡ÿÿˆ‰ ,7DHPXZ^knr„“•˜›4567  4567               4567 "#  45  !##$$%&'4567((4567())**+-./011222334545N56789:;<=>?@ABCDABCDEFGHIJKIJJKLLMNNPQRQRQSTSUVWXYZZZZ\]]_]^__#%')+-/13579;=?ADFHJLNPRTVXZ\^`cegioqsuwz~€‚„ˆŠŒŽ’”–˜š ¢¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÍÏÒÔÖØÚÜÞàâäæèêïñóõ÷ùûýÿ   !#%')+-/13579<>@B @3&4#5!6(89:;<=À€^URfknm l NOo`cbaed(P)]+_,tÀ€ \W"-[@€"@@$6 @3&4#5!6(89:;<=@€^URfknm l NOo`cbaed(P)]+_,t€^URfknm l N \OoD9`cbaed(P)]+_,t-[.031~€&€.031~[@ˆ€@^URfknm l NOo`cbaed(P)]+_,t€ @ @€@€ @€@€€@€ @€@ @€ƒ>‚@@@,@MG!I%L@€^URfknm l NOoD8`cbaed(P)]+_,t.031~@€@€€^URfknm l NOoD8`cbaed(P)]+_,t.031~@€^URfknm l NOoD8`cbaed(P)]+_,t.031~@€^URfknm l NOoD8`cbaed(P)]+_,t.031~@@@'-@€^URfknm l NOo`cbaed(P)]+_,t@@ \W-[.1~@@@@€:$6"@ =$6€.1~@€.031~O@X.031~?|@€€.031~ @!@€.031~#@[@ˆ$@%@&@'@ \W-[€^URfknm l NOo`cbaed(P)]+_,t€ \FW-[(@,@M%L)@,@M%L*@+@-@.@/@0@€8.031~1@€(S€8.031~2@€8.031~3@O@X?|@€4@€Z'w5@6@7@8@9@:@;@<@=@>@?@@@€gjihA@B@C@D@E@F@G@H@€q spI@€rJ@K@€@€L@M@O@?|@€N@P@#zR@@€Q@T@@€S@U@V@W@X@Y@€„€@€†Z@\@€^URfknm l NOoD8`cbaed(P)]+_,t.031~€Š'Œ]@^@€^URfknm l NOoD8`cbaed(P)]+_,t.031~_@ "#()+,.9:Pmosuw‘“”–˜™›œ ¡¢§¨ÃÄÆáâýþ45;<=>?BEHIMTXYZ^_abcdh~ƒ„‡ˆ‹ŒŽ‘–—™žŸ¤¥©ª­®¯°±²³´µ¶·¸¹¾¿ÀÁÂÃÄÅÆÊËÍÎÏÑÒÓÖ×ÙÛÜÞßàáâãäæèêëì   '  ÿÿÀÿÿÀÿÿ@ÿÿ@ÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @ @ÿÿ @ÿÿÿÿ @ÿÿ @ÿÿ@@ÿÿ@ÿÿ@ÿÿÿÿ@ÿÿ@ÿÿ@@ÿÿ@ÿÿ@ÿÿ@@@@ÿÿÿÿÿÿ@ÿÿÿÿÿÿ @!@ÿÿ#@ÿÿ$@%@&@ÿÿÿÿÿÿ(@ÿÿ)@ÿÿ*@+@-@.@/@0@ÿÿ1@ÿÿÿÿ2@ÿÿ3@ÿÿ4@ÿÿ5@6@7@8@9@:@;@<@=@>@?@@@ÿÿA@B@C@D@E@F@G@H@ÿÿI@ÿÿJ@K@ÿÿL@M@ÿÿN@ÿÿÿÿQ@ÿÿS@U@V@W@X@Y@ÿÿÿÿÿÿZ@\@ÿÿÿÿ]@^@ÿÿ_@Þ­¾ïÊþúÎQPUPPÿŠj±¬j± žj±_CorDllMainmscoree.dllÿ% @`± À:fsharp-3.0.34/lib/bootstrap/4.0/FSharp.Core.optdata0000664000175000017500000126014412260314606020614 0ustar chrischris FSharp.CoremscorlibSystemSystem.Numerics System.Core‰„›…r MicrosoftFSharp CollectionsList`1 CompareToTX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fsiCoreintobjW/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/prim-types.fsthisSystem IComparer GetHashCodeIEqualityComparerunitunitArg(Microsoft.FSharp.Core.LanguagePrimitivesget_GenericEqualityComparermscorlib$System.Collections.IEqualityComparerEqualsbool get_Lengthget_Headget_Taillist`1 get_IsEmptylunitVar1op_Nilget_Item get_EmptyunitVar0Consheadtail op_ColonColonMap`2.ctorKeyQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/map.fsiValueseq`1Add get_Count ContainsKeyRemoveTryFindoption`1Set`1Q/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/set.fsiContainsop_Subtraction op_Additionget_MinimumElementget_MaximumElement IsSubsetOf IsSupersetOfIsProperSubsetOfIsProperSupersetOf Array2DModulelength1S/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array2.fsarray[,]`1length2base1 System.Array GetLowerBound System.Int32base2getnmsetx zeroCreatezeroCreateBased createBased initBasedcreateinitunknownfiteriterimapmapicopyrebaseblit Array3DModuleS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array3.fs[,,]`1length3n1n2n3 Array4DModule[,,,]`1length4n4 ArrayModulelengthR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/array.fs[]`1count OperatorsraiseexnArgumentExceptionSystem.ArgumentException System.StringLanguagePrimitives ErrorStringsInputMustBeNonNegativeStringstringarrarray`1unitVarint32iisEmptyemptyconcatcollectappendtoListofListArgumentNullExceptionSystem.ArgumentNullExceptionlenUresiter2map2mapi2iteri2existsexists2forallforall2picktryPickchoosefilter partitionfindtryFindzipzip3unzipunzip3revfoldfoldBack foldBack2fold2scanscanBackreduce reduceBacksortInPlaceWith sortInPlaceBy sortInPlacesortWithsortBysorttoSeqofSeq findIndex tryFindIndexpermutesumget_Zeroaccfloatfloat`1float32 float32`1int64uint64uint32 nativeint unativeintint16uint16sbytebytedecimalSystem.DecimalSystem.Boolean System.ByteDecimalGenericZeroDynamicycharConcatCheckedAdditionDynamicT1T2sumByminInputArrayEmptyStringcurr op_LessThan HashCompareGenericLessThanIntrinsicminByaccvcurrvmaxop_GreaterThanGenericGreaterThanIntrinsicmaxByaverage DivideByIntsourceeGeneric IEnumerator`1(System.Collections.Generic.IEnumerable`1 GetEnumerator(System.Collections.Generic.IEnumerator`1System.Collections.IEnumeratorMoveNext get_CurrentInputSequenceEmptyStringDivideSystem.Convert ToDecimalDivideByIntDynamicobjectToDispose IDisposableSystem.IDisposableDispose averageBysubvfillParallelComparisonIdentity StructuralX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/collections.fsFastGenericComparer IComparer`1 FromFunction Generator HashIdentityIEqualityComparer`1 System.ObjectstartupselfGenericHashIntrinsic op_EqualityGenericEqualityIntrinsicLimitedStructural Reference FromFunctionshasheqOptimizedClosures FSharpFunc`3AdaptInvoke IEnumerator ListModuleQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/list.fslistofArraytoArraylist1list2 op_Appendnth replicatemap3 SeqModuleQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/seq.fsifirst MapModuleaddP/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/map.fskEqualityConditionalOnAttribute ComparisonConditionalOnAttributeremove containsKeyfindKey tryFindKey MapTreeModulePrivateListHelpersdelayunfold initInfinitewhere IEnumerable`1casttake compareWithP/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/seq.fs singletontruncatepairwisewindowedcachereadonlygroupBydistinct distinctBycountBy takeWhileskip skipWhilelast exactlyOne SetModulecontainsP/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/set.fssunions1s2 unionMany intersect intersectManyc differenceisSubset isSupersetisProperSubsetisProperSuperset minElement maxElement SetTreeModuleControlDelegateEvent`1DelegateS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/event.fsiTrigger get_PublishIDelegateEvent`1Event`2ArgsIEvent`2Event`1IEvent`1 AsyncBuilderZeroAsync`1DelayU/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/control.fsiReturn ReturnFromT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/control.fsbBindUsingWhileForCombine TryFinallyTryWithAsyncget_CancellationToken ThreadingCancellationTokenFromContinuationsOperationCanceledExceptionget_DefaultCancellationTokenCancelDefaultTokenCatchChoice`2RunSynchronouslyStart StartAsTaskTasksTaskCreationOptionsTask`1StartChildAsTaskStartWithContinuationsStartImmediateSleepAwaitWaitHandle WaitHandleAwaitIAsyncResult IAsyncResult FromBeginEnd AsyncCallbackArg1Arg2Arg3 AsBeginEndArg AwaitEventDelIgnoreSwitchToNewThreadSwitchToThreadPool StartChildSwitchToContextSynchronizationContextOnCancel TryCancelled AwaitTaskAsyncReplyChannel`1ReplyMailboxProcessor`1Msgget_CurrentQueueLengthget_DefaultTimeoutset_DefaultTimeout get_Error Exception add_Error Handler`1 remove_ErrorPostTryPostAndReply PostAndReplyPostAndTryAsyncReplyPostAndAsyncReplyReceive TryReceiveScanTryScaninitialcancellationTokenmbAsBeginEndHelpersAsyncBuilderImpl AsyncHelpers AsyncImplCancellationTokenOpsCommonExtensionsStream AsyncReadIO AsyncWrite IObservable`1 Subscribe EventModulewmergesplitLazyExtensionsLazy`1CreateCreateFromValueForce System.Lazy`1 get_ValueObservableModule subscribe WebExtensions WebRequestAsyncGetResponseNet WebResponse WebClientAsyncDownloadStringUriSealedAttributeAbstractClassAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeCLIMutableAttributeAutoSerializableAttributeDefaultValueAttribute get_CheckEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeget_CompiledNameStructAttributeMeasureAttribute%MeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttribute#FSharpInterfaceDataVersionAttribute get_Major get_Minor get_ReleaseCompilationMappingAttributeSourceConstructFlagsget_SourceConstructFlagsget_SequenceNumberget_VariantNumberCompilationSourceNameAttributeget_SourceName"CompilationRepresentationAttributeCompilationRepresentationFlags get_FlagsExperimentalAttribute get_Message"CompilationArgumentCountsAttribute get_CountsCustomOperationAttributeget_Nameget_AllowIntoPatternset_AllowIntoPattern get_IsLikeZip set_IsLikeZipget_IsLikeJoinset_IsLikeJoinget_IsLikeGroupJoinset_IsLikeGroupJoinget_JoinConditionWordset_JoinConditionWordget_MaintainsVariableSpaceset_MaintainsVariableSpace#get_MaintainsVariableSpaceUsingBind#set_MaintainsVariableSpaceUsingBindProjectionParameterAttribute StructuredFormatDisplayAttributeCompilerMessageAttributeget_MessageNumber get_IsError set_IsError get_IsHidden set_IsHiddenUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttribute&RequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributeget_PathChoice`3T3Choice`4T4Choice`5T5Choice`6T6Choice`7T7MatchFailureExceptionFSharpTypeFunc FSharpFunc`2 op_Implicit Converter`2 FromConverter ToConverter InvokeFastVWXY FuncConvert ToFSharpFuncAction`1FuncFromTupledRef`1contents set_ValueOption`1 get_IsNoneNone get_IsSomeSomeget_NonePrintfFormat`4PrinterT/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/printf.fsiStateResidueResultPrintfFormat`5TupleBasicInlinedOperationsCompilerServicesGeneratedSequenceBase`1TypeProviderAttributeTypeProviderAssemblyAttributeget_AssemblyNameTypeProviderXmlDocAttributeget_CommentText'TypeProviderDefinitionLocationAttribute get_FilePath set_FilePathget_Lineset_Line get_Column set_Column&TypeProviderEditorHideMethodsAttributeTypeProviderConfigget_ResolutionFolderset_ResolutionFolderget_RuntimeAssemblyset_RuntimeAssemblyget_ReferencedAssembliesset_ReferencedAssembliesget_TemporaryFolderset_TemporaryFolderget_IsInvalidationSupportedset_IsInvalidationSupportedget_IsHostedExecutionset_IsHostedExecution get_SystemRuntimeAssemblyVersionVersion set_SystemRuntimeAssemblyVersionSystemRuntimeContainsTypeRuntimeHelpersEnumerateFromFunctionsEnumerateUsingEnumerateWhileEnumerateThenFinally CreateEventExtraTopLevelOperatorsdictarray2Dsprintffp PrintfModuleStringFormat`1 failwithfStringFormat`2fprintfos TextWriterTextWriterFormat`1fprintfnprintfeprintfprintfneprintfnasyncsingle op_Explicit System.SingleParse!System.Globalization.NumberStylesSystem.IFormatProvider Globalization NumberStylesIFormatProvider CultureInfo System.Globalization.CultureInfoget_InvariantCulturedouble System.DoubleToDoubleuint8 ParseUInt32int8 ParseInt32 op_Spliceop_SpliceUntyped|Lazy|c/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/fslib-extra-pervasives.fsqueryGenericEqualityGenericEqualityERGenericEqualityERIntrinsicGenericEqualityWithComparercomp$GenericEqualityWithComparerIntrinsicGenericComparisonCompareOrdinalCompareGenericComparisonIntrinsicGenericComparisonWithComparer&GenericComparisonWithComparerIntrinsicGenericLessThanGenericGreaterThanGenericLessOrEqualop_LessThanOrEqualGenericLessOrEqualIntrinsicGenericGreaterOrEqualop_GreaterThanOrEqualGenericGreaterOrEqualIntrinsicGenericMinimum System.MathMinGenericMaximumMaxPhysicalEqualityPhysicalEqualityIntrinsic PhysicalHashPhysicalHashIntrinsicGenericComparerGenericEqualityComparerGenericEqualityERComparer GenericHashGenericLimitedHashlimitLimitedGenericHashIntrinsicGenericHashWithComparer GenericHashWithComparerIntrinsicFastGenericEqualityComparer"FastLimitedGenericEqualityComparer EnumOfValueEnumu EnumToValueFloatWithMeasureMeasureFloat32WithMeasureDecimalWithMeasure decimal`1Int32WithMeasureint`1Int16WithMeasureint16`1SByteWithMeasuresbyte`1Int64WithMeasureint64`1 ParseInt64 ParseUInt64GenericOneDynamic GenericZero GenericOneget_OneAdditionDynamicMultiplyDynamicCheckedMultiplyDynamicAddressOpNotFirstClassStringNoNegateMinValueString.System.Runtime.CompilerServices.RuntimeHelpersFastHashTuple2comparer tupledArgx1x2h1FastHashTuple3x3FastHashTuple4x4FastHashTuple5x5FastEqualsTuple2y1y2FastEqualsTuple3y3FastEqualsTuple4y4FastEqualsTuple5y5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5IntrinsicFunctions UnboxGeneric UnboxFastTypeTestGeneric TypeTestFastFailInitFailStaticInit CheckThis MakeDecimallomedhi isNegativescale GetString get_Chars System.CharCreateInstanceSystem.ActivatorGetArraySetArray GetArray2D SetArray2D GetArray3D SetArray3D GetArray4D SetArray4DIntrinsicOperatorsop_Amp op_BooleanAndor op_BooleanOr op_AddressOfbyref`1op_IntegerAddressOf nativeptr`1NumericLiteralsNumericLiteralIFromInt64DynamicFromZeroS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/math/z.fsNumerics BigIntegerSystem.NumericsSystem.Numerics.BigIntegeraFromOne FromInt32 FromInt64 System.Int64FromStringDynamic FromStringsequnboxboxFailuremessageSystem.Exception |Failure|_|not op_Inequalitycomparefailwith invalidArgargmsgnullArg invalidOpInvalidOperationException System.InvalidOperationExceptionrethrowObjectreraisefstsndignore_arg1refop_ColonEqualsop_Dereference op_PipeRight op_PipeRight2 op_PipeRight3 op_PipeLeft op_PipeLeft2 op_PipeLeft3op_ComposeRightgop_ComposeLeftop_Concatenate defaultArgop_UnaryNegation op_Multiply op_Division op_Modulus op_UnaryPlus op_LeftShift op_RightShift op_BitwiseAnd op_BitwiseOrop_ExclusiveOr op_LogicalNotincrdecrexitenum |KeyValue|kvpKeyValuePair`2)System.Collections.Generic.KeyValuePair`2get_Keyinfinitynan infinityfnanf System.Int16 System.SByte System.UInt64 System.UInt32 System.UInt16 matchValuetypeTestResult IFormattableSystem.IFormattableToString copyOfStructlockLocklockobj lockTakenSystem.Threading.MonitorEnterExitusingtypeof System.TypeGetTypeFromHandleSystem.RuntimeTypeHandleTypeRuntimeTypeHandle typedefoftyget_IsGenericTypeGetGenericTypeDefinitionsizeof limitedHashidstdinSystem.Consoleget_InSystem.IO.TextReader TextReaderstdoutget_OutSystem.IO.TextWriterstderrop_RangeOperatorIntrinsics RangeInt32 RangeDouble RangeSingle RangeInt64 RangeUInt64 RangeUInt32 RangeIntPtr RangeUIntPtr RangeInt16 RangeUInt16 RangeSByte RangeByte RangeChar RangeGeneric op_RangeStepStepstepRangeStepGenericabsAbsOverflowExceptionSystem.OverflowException AbsDynamicacosAcos AcosDynamicasinAsin AsinDynamicatanAtan AtanDynamicatan2Atan2 Atan2DynamicceilCeilingCeilingDynamicexpExp ExpDynamicfloorFloor FloorDynamicTruncateTruncateDynamicroundRound RoundDynamicsignget_SignSign SignDynamiclogLog LogDynamiclog10Log10 Log10DynamicsqrtSqrt SqrtDynamiccosCos CosDynamiccoshCosh CoshDynamicsinSin SinDynamicsinhSinh SinhDynamictanTan TanDynamictanhTanh TanhDynamicop_ExponentiationPow PowDynamicpownPowInt32PowInt64PowInt16PowSByte PowIntPtr PowUInt32 PowUInt64 PowUInt16PowByte PowUIntPtr PowDouble PowSingle PowDecimal PowGeneric AttributesChecked GetArraySlicestartfinish unionCasedst SetArraySlicesrcGetArraySlice2DSetArraySlice2DGetArraySlice3DSetArraySlice3DGetArraySlice4DSetArraySlice4DGetStringSlicestr Substring Unchecked defaultofequals FSharpFunc`4 FSharpFunc`5 FSharpFunc`6 OptionModuleisSomeoptionisNonebind PrintfImplksprintfkprintffmtS/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/printf.fskbprintfkfprintfbprintfSR StringModulesepstringsJoin TupleUtilsData UnitSystemsSI UnitNames UnitSymbolsLinq QuerySource`2S/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Query.fsiQ get_Source QueryBuilderQ2__R/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Query.fsYield YieldFromQuote QuotationsExpr`1qSource IQueryable`1 IEnumerableSelectWhereLast LastOrDefault ExactlyOneExactlyOneOrDefaultCountDistinctExistsAllHeadNthSkip SkipWhileTake TakeWhileFind HeadOrDefaultMinByMaxBy MinByNullable ValueType Nullable`1 MaxByNullable SumByNullableSystem.Nullable`1 get_HasValueAverageByNullableselector AverageBy System.CoreSystem.Linq.EnumerableAverageSumByGroupBy IGrouping`2SortBySortByDescendingThenByThenByDescendingSortByNullableSortByNullableDescendingThenByNullableThenByNullableDescending GroupValByOuterInner GroupJoin LeftOuterJoinRun IQueryableHelpersNullableModuleQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/Linq.fsNullableOperatorsop_QmarkGreaterEqualsop_QmarkGreaterop_QmarkLessEquals op_QmarkLessop_QmarkEqualsop_QmarkLessGreaterop_GreaterEqualsQmarkop_GreaterQmarkop_LessEqualsQmark op_LessQmarkop_EqualsQmarkop_LessGreaterQmarkop_QmarkGreaterEqualsQmarkop_QmarkGreaterQmarkop_QmarkLessEqualsQmarkop_QmarkLessQmarkop_QmarkEqualsQmarkop_QmarkLessGreaterQmark op_QmarkPlus op_PlusQmarkop_QmarkPlusQmark op_QmarkMinus op_MinusQmarkop_QmarkMinusQmarkop_QmarkMultiplyop_MultiplyQmarkop_QmarkMultiplyQmarkop_QmarkPercentop_PercentQmarkop_QmarkPercentQmarkop_QmarkDivideop_DivideQmarkop_QmarkDivideQmark QueryModuleQueryRunExtensions HighPriority LowPriorityAnonymousObject`1 get_Item1Y/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/MutableTuple.fsAnonymousObject`2 get_Item2AnonymousObject`3 get_Item3AnonymousObject`4 get_Item4AnonymousObject`5 get_Item5AnonymousObject`6 get_Item6AnonymousObject`7 get_Item7AnonymousObject`8T8 get_Item8 Grouping`2K\/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/QueryExtensions.fsAdaptersLeafExpressionConverterMemberInitializationHelper_xNotSupportedExceptionSystem.NotSupportedException+This function should not be called directlyNewAnonymousObjectHelper"ImplicitExpressionConversionHelper Expressions Expression`1 SubstHelperQuotationToExpressionQuotationToLambdaExpressionEvaluateQuotationMath NativeInteropNativePtrModule ofNativeIntV/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/nativeptr.fs toNativeIntpreadwrite stackalloc PrimitivesBasicsArrayListStableSortImplementationVar get_IsMutableget_TypeGlobalExprget_CustomAttributesget_RawX/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Core/quotations.fsi Substitute GetFreeVars AddressOf AddressSet Application ApplicationsCall Reflection MethodInfoCoerce IfThenElseForIntegerRangeLoopFieldGet FieldInfoFieldSetLambdaLet LetRecursive NewObjectConstructorInfo DefaultValueNewTuple NewRecordNewArray NewDelegate NewUnionCase UnionCaseInfo PropertyGet PropertyInfo PropertySet SequentialTupleGetTypeTest UnionCaseTestVarSet WhileLoopTryGetReflectedDefinition MethodBaseCast DeserializeRegisterReflectedDefinitionsAssembly GlobalVarDerivedPatternsModule|Bool|_| |String|_| |Single|_| |Double|_||Char|_| |SByte|_||Byte|_| |Int16|_| |UInt16|_| |Int32|_| |UInt32|_| |Int64|_| |UInt64|_||Unit|_| |Lambdas|_||Applications|_| |AndAlso|_| |OrElse|_||SpecificCall|_|!|MethodWithReflectedDefinition|_|minfo)|PropertyGetterWithReflectedDefinition|_|pinfoSystem.Reflection.PropertyInfo GetGetMethodSystem.Reflection.MethodInfo)|PropertySetterWithReflectedDefinition|_| GetSetMethodExprShapeModuleRebuildShapeCombination'|ShapeVar|ShapeLambda|ShapeCombination|PatternsModule|Var|_||Application|_| |Lambda|_| |Quote|_||IfThenElse|_| |NewTuple|_||DefaultValue|_| |NewRecord|_||NewUnionCase|_||UnionCaseTest|_| |TupleGet|_| |Coerce|_| |TypeTest|_| |NewArray|_||AddressSet|_||TryFinally|_| |TryWith|_| |VarSet|_| |Value|_| |AddressOf|_||Sequential|_||ForIntegerRangeLoop|_| |WhileLoop|_||PropertyGet|_||PropertySet|_| |FieldGet|_| |FieldSet|_| |NewObject|_||Call|_||Let|_||NewDelegate|_||LetRecursive|_|SimpleUnpickleget_DeclaringType GetFieldsGetCustomAttributesGetCustomAttributesDataIList`1CustomAttributeDataget_Tag FSharpTypeIsTupleIsRecord BindingFlagsIsUnion IsFunctionIsModuleMakeFunctionType MakeTupleTypeGetTupleElementsGetFunctionElementsGetRecordFields GetUnionCasesIsExceptionRepresentationGetExceptionFields FSharpValue MakeRecordGetRecordFieldPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfo MakeFunction MakeTupleGetTupleFields GetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfo MakeUnionPreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfo MemberInfoPreComputeUnionReaderImplTextStructuredPrintfImplDisplay LayoutOps ReflectUtils€ú   -(34?C^`efilnp qtuwy{ €„€³€´€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À €Ät€Çt€Ñ €Þ€ß €ìi€ó€ô €Þ€ø€û €Þ€ü    €Þ+?R TRSRXRYR[R\R]R^R` pq sw p{| p{} pƒ … ‡ p”R˜Rš  R¢Rµ ¸¶ ºR¼RÀ ÁRÇRÉ ÌÊ ÌÍ ÌÎ ÐÑÒÓÔÕÖרÙÛÜÝÞßàáâãäæçèéêëìñðõø÷úüþ‚‚‚‚‚‚‚‚‚‚‚‚ ‚"‚$‚&‚)‚* ‚, ‚6‚8‚;‚A‚G‚J‚J‚K‚J‚L‚J‚M‚J‚O‚J‚Q‚J‚X‚J‚Y ‚g‚J‚j‚p‚u‚v‚u‚u‚x ¸‚{‚u‚| ‚‰‚Š ‚‹ ‚‰‚ŒRÁ‚˂͂ςтÓt‚ùtƒƒƒƒƒ ƒ"ƒ# ƒ= ƒ@ €Þƒe ƒs ƒƒ ƒ„ ¸ƒnƒ– ƒ«nƒún„ „„„„„„)„)„*„)„.„5„6 „)„9 „: „P „Q „)„^ „)„m„)„o„)„q„)„”„•„)„”„–„)‚j„)‚j„—„)‚j„š„)‚j„œ„)‚j„ž„)‚j„ „)‚j„¢„)‚j„¤„)‚j„¦„)‚j„©  „)‚j„­ „° „)„µ„¶„¼„½„5„5„Ê„5„Î „Ù„Ú „Ù„ß „Ù„å„Ù„ì „Ù„î „Ù„÷ „Ù„û„5„ý„5…„5…„Ù €Þ…C „Ù…D „Ù…I „Ù…j}!"#$%&'()*+-0;=AHJKMOPQRUX_`abcdefghijklmnopqrstuvwxyz{|}~€€€€‚€ƒ€„€…€†€‡€ˆ€‰€Š€‹€Œ€€Ž€”€ž€Ÿ€ €¡€¢€£€¤€ª€¬€­€®€º€»€¼€¾€¿€À€Á€Ã€Í€Ð€Ñ€Ô€ã€å€é€ê€ë€ì€í€î€ï€ð€ñ€÷€ø€ùÿÚ ¾  ›`  ›A  › ~tŠ%†Ø†ØŽ†Ø†ØŽ Œ«Œ«Ž ,  , †Ø†ØŽ Œ«Œ«Ž Œ«Œ«Ž†Ø†ØŽ†Ø†ØŽ†Ø†ØŽ Œ«Œ«Ž , , †Ø†ØŽ  Œ«Œ«Ž  ·z\V4à‰  Œ«Œ«Ž  †Ø†ØŽ  †Ø†ØŽ  †Ø†ØŽ  †Ø†ØŽ†Ø†ØŽ Œ«Œ«Ž& ,   Œ«Œ«Ž!†Ø†ØŽ"†Ø†ØŽ Œ«Œ«Ž#,   Œ«Œ«Ž$†Ø†ØŽ Œ«Œ«Ž%$ &$ ' Œ«Œ«Ž()*+&*Œ ,+\bŽ  (.*+&*Œ ,+\bŽ  (*+&*Œ ,+\bŽ (!*+&*Œ ,+\bŽ   (/!*+&*Œ ",+\bŽ !"(0#*+&*Œ $,+\bŽ #$#(1%*+&*Œ &,+\bŽ %&% %&(2'*+&*Œ (,+\bŽ '(' (()*+&*Œ *,+\bŽ )*4.+5&(Œ  ++ +41,5&(Œ  ,, ,4/-5&(Œ  -46.5&(Œ  ..4/5&(Œ  /4705&(Œ  0 0 04815&(Œ  1 1 14925&(Œ  224:35&(Œ  334;45&(Œ  4 44<55&(Œ  5 54=65&(Œ  6 64>75&(Œ  7 7485&(Œ  84)95&(Œ  9 9?A:L  @:A&&„ B:$  > :;A&&„; D<A((„ B<$  > <=A((„= E>A**„ B>$ ·z\V4à‰FG·z\V4à‰H·z\V4à‰H >?A**„? I@A,,„ B@$ ·z\V4à‰FG·z\V4à‰H·z\V4à‰H @AA,,„A JBA..„ BB$ K$ L$  ;BB BBBBBCA..„CC MDA00„BD$ K$ L$ ND$  <DDDDDDEA00„EE O P Q R SFAZZ„K$ L$ NF$  QGAI%I'„GGFFFFFFFFHAZZ„HH TIUPK$ L$ VI$  RJAR5R7„JJIIIIIIIIKUPKK W X Y Z [ \ ]^gLV& @L_  „BL$  >LM_  „MDN_##„BN$  >NO_##„OaP_&&„BP$  >PQ_&&„QJ R_))„BR$ b$ c$  d$  ;RR RRRRRRS_))„SSM T_,,„!BT$ "b$ #c$ $d$ %NT$  <T!"#$%TTTTTTU_,,„UUOSTWYXZeVb&5 @V_||„&BV$  >&VW_||„WDX_„'BX$  >'XY_„YaZ_€‚€‚„(BZ$  >(Z[_€‚€‚„[g\_€…€…„)B\$  >)\]_€…€…„]OSTJ ^_€¥€¥„*B^$ +b$ ,c$ -d$ .h$  ;^^*+,-.^^^^^^^__€¥€¥„__M `_€¨€¨„/B`$ 0b$ 1c$ 2d$ 3h$ 4N`$  <`/01234```````a_€¨€¨„aaiJb³5œDjbk))5Bb$  (5bck))cTdUP6m$ 7Vd$   56oe ª,ª.„e·z\V4à‰r)·z\V4à‰s·z\V4à‰svm8xd,  'dd69z, :z,   6;|,  <d8;7d;8dddddfUPffOS}~gkBB„gghkBB„h]€€€[€‚€ƒWik€“"€“$„€†$  (=?z, @z,   >A|$ <i ;ii=Aiiikk€“"€“$„kkY$lk€š€š„m€‡k€š!€š#„BVlm$ CBl$   &lCon ª,ª.„n ·z\V4à‰€…)·z\V4à‰s BD€†$  (CE€ˆm$  'mmDFz, Gz,   DH|$  <mEHBlm ;llCHEmlmlmlmok€š€š„p€‡k€š!€š#„opop€‰€Š€‹X€ŒZ€€Ž€€€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°)qk‚:!‚:"„q€±qqqqq8qqqqIBq$   &qIor ª,ª.„r ·z\V4à‰€…)·z\V4à‰s BJ€²qt q  q  q   q  q q q  q  q q q q q·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    qqq€±q,€Ås ‰G ‰G"„sqKz, Lz,  (IM|$ JNNq, JO€Æq,  ;qqIM q q  , NO q q   NO q q   NO q q  , NO qq -NO qq -NO qq ,NO qq -NO qq  , NO qq  -NO qq  -NO qq  , NO qq  -NO qq q·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s N O qq q·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á N O qqqq8qqqNO,€Ét€Ê ‰Ö#‰Ö%„u€Ë ‰Ö&‰Ö(„v€‡ ‰Ö)‰Ö+„tuvqqqNOJqqqwk‚:!‚:"„w€±wwwww8wwwwww€Ì*xk‚B‚B„y€‡k‚B$‚B%„y€±yyyyy8yyyyPVxy$ QBx$   &xQoz ª,ª.„z ·z\V4à‰€…)·z\V4à‰s BR€²yt y  y  y   y  y y y  y  y y y y y·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    yyy€±y,€Å{ ‰G ‰G"„{ySz, Tz,  (QU|$ RVNy, RW€Æy, Pxy ;xxQU y y  , VW y y   VW y y   VW y y  , VW yy -VW yy -VW yy ,VW yy -VW yy  , VW yy  -VW yy  -VW yy  , VW yy  -VW yy y·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s V W yy y·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á V W yyyy8yyyVW,€É|€Ê ‰Ö#‰Ö%„}€Ë ‰Ö&‰Ö(„~€‡ ‰Ö)‰Ö+„|}~yyyVWRyxyxyxyk‚B‚B„€€€‡k‚B$‚B%„€€€±€€€€€€€€€€8€€€€€€€€€€€€€Í7€k‚J‚J XB€$   &€Xo€‚ ª,ª.„€‚ ·z\V4à‰€…)·z\V4à‰s B  2 (Xo€ƒ ª,ª.„€ƒ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBY€²€t  ;€€XZz, [z,  (X\|$ ]€Ï€$  ;€€X\ ^€Æ€, Y € 5]^ € 5]^ € 5]^ € 5]^ €  5]^ €  5]^ € 6]^ € 6]^ € 6]^ € 6]^ € 6]^ € 5]^ €  5]^ €  5]^ € 5]^ €·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ] ^.€Ò€„ „Ê,„Ê.„€„€„€]^Y]Y€€€€…k‚J‚J €…€…€Ó?€†k‚U"‚U#€‡€‡UP _V€†€‡$ `B€†$   &€†`o€ˆ ª,ª.„€ˆ ·z\V4à‰€…)·z\V4à‰s B  2 (`o€‰ ª,ª.„€‰·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBa€Ô€†t  ;€†€†`b€²€‡t _€†€‡acz, dz,  (`e|$ f€Õ€†$  ;€†€†`eg€Ï€‡$ _€†€‡f h€Æ€‡, b €‡ 5gh €‡ 5gh €‡ 5gh €‡ 5gh €‡  5gh €‡  5gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 5gh €‡  5gh €‡  5gh €‡ 5gh €‡·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â g h.€Ò€Š „Ê,„Ê.„€Š€Š€‡ghbgafa€†€†€†€†€‡€†€†€‹k‚U"‚U#€Œ€‡UP €‹€Œ€‹€‹€Ö7€k‚c‚c iB€$   &€io€Ž ª,ª.„€Ž ·z\V4à‰€…)·z\V4à‰s B  2 (io€ ª,ª.„€·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBj€²€t  ;€€ikz, lz,  (im|$ n€Ï€$  ;€€im o€Æ€, j € 3no € 3no € 3no € 3no €  3no €  3no € 3no € 4no € 4no € 4no € 4no € 4no €  3no €  3no € 3no €·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â n o.€Ø€ „Ñ/„Ñ1„€€€nojnj€€€€‘k‚c‚c €‘€‘€Ù?€’k‚n"‚n#€“€‡UP pV€’€“$ qB€’$   &€’qo€” ª,ª.„€” ·z\V4à‰€…)·z\V4à‰s B  2 (qo€• ª,ª.„€•·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBr€Ô€’t  ;€’€’qs€²€“t p€’€“rtz, uz,  (qv|$ w€Õ€’$  ;€’€’qvx€Ï€“$ p€’€“w y€Æ€“, s €“ 3xy €“ 3xy €“ 3xy €“ 3xy €“  3xy €“  3xy €“ 3xy €“ 4xy €“ 4xy €“ 4xy €“ 4xy €“ 4xy €“  3xy €“  3xy €“ 3xy €“·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â x y.€Ø€– „Ñ/„Ñ1„€–€–€“xysxrwr€’€’€’€’€“€’€’€—k‚n"‚n#€˜€‡UP €—€˜€—€—€ÚO€™k‚|'‚|(€™8€™€™€™€™€Û€™€™€™€±€™zB€™$   &€™zo€š ª,ª.„€š ·z\V4à‰€…)·z\V4à‰s B{€Ü €™,  €™€™z  & €™{o€› ª,ª.„€› ·z\V4à‰€…)·z\V4à‰s €Ü|€Ý/€™, ·z\V4à‰€à€á·z\V4à‰€â€™/€™{€™}z, ~€²€™| €™  €™  €™   €™  €™ €™ €™  €™  €™ €™ €™ €™ €™·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €™€™€™€±€™,€Å€œ ‰G ‰G"„€œ€™m| €€z, ·z\V4à‰€ã€ä·z\V4à‰€Â|€z, ~€‚N€™, ~€ƒ€Æ€™, ·z\V4à‰€â€å€™€™| €™ €™  , €‚€ƒ €™ €™   €‚€ƒ €™ €™   €‚€ƒ €™ €™  , €‚€ƒ €™€™ -€‚€ƒ €™€™ -€‚€ƒ €™€™ ,€‚€ƒ €™€™ -€‚€ƒ €™€™  , €‚€ƒ €™€™  -€‚€ƒ €™€™  -€‚€ƒ €™€™  , €‚€ƒ €™€™  -€‚€ƒ €™€™ €™·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €‚ €ƒ €™€™ €™·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €‚ €ƒ €™€™€™€™8€™€™€™€‚€ƒ,€É€€Ê ‰Ö#‰Ö%„€ž€Ë ‰Ö&‰Ö(„€Ÿ€‡ ‰Ö)‰Ö+„€€ž€Ÿ€™€™€™€‚€ƒ    2o€  ª,ª.„€ ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€„N€™, ~€…K,  €™   €„   €… €™   €„   €… €™·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €„·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á€… €™€™€™€Û€™€™€„€…,€ê€¡ ‰‚‰‚!„€¡€¡€™€„€…€™€†z, €‡€ë,  /€™| €‡·z\V4à‰€í€î€‡€™€™€™€¢k‚|'‚|(€¢8€¢€¢€¢€¢€Û€¢€¢€¢€±€¢€¢€¢€ïQ€£k‚&‚'€¤€‡UP€¤8€¤€¤€¤€¤€Û€¤€¤€¤€±€¤€ˆV€£€¤$ €‰B€£$   &€£€‰o€¥ ª,ª.„€¥ ·z\V4à‰€…)·z\V4à‰s B€Š€Ü €£,  €£€£€‰  & €£€Šo€¦ ª,ª.„€¦ ·z\V4à‰€…)·z\V4à‰s €Ü€‹€Ý/€£, ·z\V4à‰€à€á·z\V4à‰€â€£/€£€Š€¤€Œz, €€²€¤| €¤  €¤  €¤   €¤  €¤ €¤ €¤  €¤  €¤ €¤ €¤ €¤ €¤·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €¤€¤€¤€±€¤,€Å€§ ‰G ‰G"„€§€¤€Žm| €z, ·z\V4à‰€ã€ä·z\V4à‰€Â€‹€z, €€‘N€¤, €€’€Æ€¤, €ˆ€£€¤·z\V4à‰€â€å€£€£€‹ €¤ €¤  , €‘€’ €¤ €¤   €‘€’ €¤ €¤   €‘€’ €¤ €¤  , €‘€’ €¤€¤ -€‘€’ €¤€¤ -€‘€’ €¤€¤ ,€‘€’ €¤€¤ -€‘€’ €¤€¤  , €‘€’ €¤€¤  -€‘€’ €¤€¤  -€‘€’ €¤€¤  , €‘€’ €¤€¤  -€‘€’ €¤€¤ €¤·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €‘ €’ €¤€¤ €¤·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €‘ €’ €¤€¤€¤€¤8€¤€¤€¤€‘€’,€É€¨€Ê ‰Ö#‰Ö%„€©€Ë ‰Ö&‰Ö(„€ª€‡ ‰Ö)‰Ö+„€¨€©€ª€¤€¤€¤€‘€’€Ž  €Ž  2€Žo€« ª,ª.„€«·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€“N€¤, €€”K, €Ž €¤   €“   €” €¤   €“   €” €¤·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €“·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á€” €¤€¤€¤€Û€¤€¤€“€”,€ê€¬ ‰‚‰‚!„€¬€¬€¤€“€”€¤€•z, €–€ë,  /€£€‹ €–·z\V4à‰€í€î€–€¤€£€¤€£€¤€£€¤€­k‚&‚'€®€‡UP€®8€®€®€®€®€Û€®€®€®€±€®€­€®€­€®€ðJ€¯k‚“‚“€—B€¯$ €˜K$  ;€¯€¯€—€˜€¯€¯€¯€¯€°k‚“‚“€°€°M€±k‚—‚—€™B€±$ €šK$ €›€ñ€±$  <€±€™€š€›€±€±€±€±€²k‚—‚—€²€²€ò€óU³³œœ1€“1€€1Y1Z1W1X1T1€•€ôw³¶œœ2€õ€³€ö33„ ,€÷€´ƒV ƒV"„ 3€´€³3€³€µ€ö33„ 3€µ2€ù€ú¶¶œœ€ûí¶Ìœ©4€õ €¶€ö „ 5€¶·z\V4à‰€ý)5€¶€·€þP„ €·€œ€ÿ5€¶. €N€¶, €¶ € €¶ € €¶  € €¶ € €¶ € €¶  € ·z\V4à‰s·z\V4à‰H·z\V4à‰s€.€¸UP€¸€¶€5€¶€¹€þP„N€¹€Æ€¹€ž€ÿ5€¶. €ŸN€¶, € €Æ€¶, €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶  2€Ÿ€  €¶  2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶  2€Ÿ€  €¶  2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â €Ÿ €  €¶·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â €Ÿ € .€º †c2†c4„€º€º€¶€Ÿ€ 5€¶€»€ö „ 5€»444€¼€ö)=)?„€¡€¼$ €¢€¼€¼$ €£6€¼€¼$ 7 €½€Ê†$†$„€¾€Ë†$†$„€¿€‡†$ †$"„€½€¾€¿6€½€¾€¿€À€Ê†$†$„€Á€Ë†$†$„€Â€‡†$ †$"„€À€Á€Â6€À€Á€Â€¼€¼€¢ 5€¼·z\V4à‰€ý)5€¼€Ã€þP„ €Ã€¤€ÿ5€¼& €¥N€¼$ €¡€¼€¥5€¼€Ä€þP„N€Ä€Æ€Ä€¦€ÿ5€¼& €§N€¼$ €¨€Æ€¼$ 7 €Å€Ê†$†$„€Æ€Ë†$†$„€Ç€‡†$ †$"„6€Å€Æ€Ç€Å€Æ€Ç€È€Ê†$†$„€É€Ë†$†$„€Ê€‡†$ †$"„6€È€É€Ê€È€É€Ê€¼€¼€£€¼€¼€§€¨5€¼€¼€¼5€¼€¼€¼€¼5€¼€Ë€ö)=)?„€Ë€Ë€Ë5€Ë ÌÌ©© 8OÌ©>8j€Ì„€©€Ì$  †Ø†ØŽ €Í†Ø†ØŽ€Í€Ì€©€Ì€Î„€Î8€œ88Y8Z8W888~€Ï55„ €Ï€Ï€Ð55„€Ð8%8&8}€ÑUP€ª€Ñ$ €ª €Ñ€Ñ€ÒUP€Ò8€€ÓUP€«€Ó$ €¬€Ó$ €Ôˆmˆm„€Ô€Ô€Ô€Ó€«€¬€Ó€Ó€Ó€Ó€Ó€Ó€ÕUP€Õ€Õ€Õ88€“8X8T88€‰8€Œ88€‹8€Š8€8€£8€¡8€ 8€ž8€¤8€¢8€Ÿ8€8€8€8€Ž8€–8€—8€’8€‘8€”8€•8€š8€›8€˜8€™8€¨8€©8€ª8€¬€ÖUP€­€Ü €Ö$ 9€‚€×ƒhƒh!„ €×€×€Ö€­€Ö €Ö€Ö€ØUP €Ø€Ø8€«€ÙUP€®€Ù$  €Ù€Ù€® €Ù€Ù €Ù€ÚUP€Ú €Ú8€­8€®8€°(€Ûx+x,€Û8€Û€Û€Û€Û€±€Û€¯€Û$ €°€Ü €Û,  €Û€Û€¯€±€Ý/€Û, ·z\V4à‰€à€á·z\V4à‰€â€Û/€Û€°€Û€²z, €³€²€Û| €Û  €Û  €Û   €Û  €Û €Û €Û  €Û  €Û €Û €Û €Û €Û·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €Û€Û€Û€±€Û,€Å€Ü ‰G ‰G"„€Ü€Û€´z, ·z\V4à‰€ã€ä·z\V4à‰€Â€±€µz, €³€¶N€Û, €³€·€Æ€Û, ·z\V4à‰€â€å€Û€Û€± €Û €Û  , €¶€· €Û €Û   €¶€· €Û €Û   €¶€· €Û €Û  , €¶€· €Û€Û -€¶€· €Û€Û -€¶€· €Û€Û ,€¶€· €Û€Û -€¶€· €Û€Û  , €¶€· €Û€Û  -€¶€· €Û€Û  -€¶€· €Û€Û  , €¶€· €Û€Û  -€¶€· €Û€Û €Û·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €¶ €· €Û€Û €Û·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €¶ €· €Û€Û€Û€Û8€Û€Û€Û€¶€·,€É€Ý€Ê ‰Ö#‰Ö%„€Þ€Ë ‰Ö&‰Ö(„€ß€‡ ‰Ö)‰Ö+„€Ý€Þ€ß€Û€Û€Û€¶€·€³€Û€¸z, €¹€ë,  /€Û€± €¹·z\V4à‰€í€î€¹€Û€Û€Û€àx+x,€à8€à€à€à€à€±€à€à€à8€Ì*€á{*{+€â€‡UP€â8€â€â€â€â€±€â€ºV€á€â$ €»€á$ €¼€Ü €á,  €á€á€»€½€Ý/€á, ·z\V4à‰€à€á·z\V4à‰€â€á/€á€¼€â€¾z, €¿€²€â| €â  €â  €â   €â  €â €â €â  €â  €â €â €â €â €â·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €â€â€â€±€â,€Å€ã ‰G ‰G"„€ã€â€Àz, ·z\V4à‰€ã€ä·z\V4à‰€Â€½€Áz, €¿€ÂN€â, €¿€Ã€Æ€â, €º€á€â·z\V4à‰€â€å€á€á€½ €â €â  , €Â€Ã €â €â   €Â€Ã €â €â   €Â€Ã €â €â  , €Â€Ã €â€â -€Â€Ã €â€â -€Â€Ã €â€â ,€Â€Ã €â€â -€Â€Ã €â€â  , €Â€Ã €â€â  -€Â€Ã €â€â  -€Â€Ã €â€â  , €Â€Ã €â€â  -€Â€Ã €â€â €â·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €Â €Ã €â€â €â·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €Â €Ã €â€â€â€â8€â€â€â€Â€Ã,€É€ä€Ê ‰Ö#‰Ö%„€å€Ë ‰Ö&‰Ö(„€æ€‡ ‰Ö)‰Ö+„€ä€å€æ€â€â€â€Â€Ã€¿€â€Äz, €Å€ë,  /€á€½ €Å·z\V4à‰€í€î€Å€â€á€â€á€â€á€â€ç{*{+€è€‡UP€è8€è€è€è€è€±€è€ç€è€ç€è8€ÖC€é~+~, €Æ€é$ €Ç€Ü €é,  €é€é€Æ  & €é€Ço€ê ª,ª.„€ê ·z\V4à‰€…)·z\V4à‰s €Ü€È€Ý/€é, ·z\V4à‰€à€á·z\V4à‰€â€é/€é€Ç€é€Éz,   2·z\V4à‰€ã€ä·z\V4à‰€Â€Èo€ë ª,ª.„€ë·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€Ê€²€é| ·z\V4à‰€â€å€é€é€È€Ëz, ·z\V4à‰€ã€ä·z\V4à‰€Â€È€Ìz, €Í€Ï€é, ·z\V4à‰€â€å€é€é€È €Î€Æ€é, €Ê €é 3€Í€Î €é 3€Í€Î €é 3€Í€Î €é 3€Í€Î €é  3€Í€Î €é  3€Í€Î €é 3€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é  3€Í€Î €é  3€Í€Î €é 3€Í€Î €é·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â €Í €Î.€Ø€ì „Ñ/„Ñ1„€ì€ì€é€Í€Î€Ê€Í€Ê€é€Ïz, €Ð€ë,  /€é€È €Ð·z\V4à‰€í€î€Ð€é€é€é€í~+~, €í€í8€ÙN€î&'€ï€‡UP €ÑV€î€ï$ €Ò€î$ €Ó€Ü €î,  €î€î€Ò  & €î€Óo€ð ª,ª.„€ð ·z\V4à‰€…)·z\V4à‰s €Ü€Ô€Ý/€î, ·z\V4à‰€à€á·z\V4à‰€â€î/€î€Ó€î€Õz,   2·z\V4à‰€ã€ä·z\V4à‰€Â€Ôo€ñ ª,ª.„€ñ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€Ö€î, ·z\V4à‰€â€å€î€î€Ô€×€²€ï| €Ñ€î€ï€Ö€Ø€Ô€î| €Ö€Ùz, ·z\V4à‰€ã€ä·z\V4à‰€Â€Ô€Úz, €Û€Õ€î, ·z\V4à‰€â€å€î€î€Ô€Ü€Ï€ï, €Ñ€î€ï€Û €Ý€Æ€ï, €× €ï 3€Ü€Ý €ï 3€Ü€Ý €ï 3€Ü€Ý €ï 3€Ü€Ý €ï  3€Ü€Ý €ï  3€Ü€Ý €ï 3€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï  3€Ü€Ý €ï  3€Ü€Ý €ï 3€Ü€Ý €ï·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â €Ü €Ý.€Ø€ò „Ñ/„Ñ1„€ò€ò€ï€Ü€Ý€×€Ü€Ø€Û€Ø€î€Þz, €ß€ë,  /€î€Ô €ß·z\V4à‰€í€î€ß€î€î€î€î€ï€î€î€ó&'€ô€‡UP €ó€ô€ó€ó8€ÍC€õ„+„, €à€õ$ €á€Ü €õ,  €õ€õ€à  & €õ€áo€ö ª,ª.„€ö ·z\V4à‰€…)·z\V4à‰s €Ü€â€Ý/€õ, ·z\V4à‰€à€á·z\V4à‰€â€õ/€õ€á€õ€ãz,   2·z\V4à‰€ã€ä·z\V4à‰€Â€âo€÷ ª,ª.„€÷·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€ä€²€õ| ·z\V4à‰€â€å€õ€õ€â€åz, ·z\V4à‰€ã€ä·z\V4à‰€Â€â€æz, €ç€Ï€õ, ·z\V4à‰€â€å€õ€õ€â €è€Æ€õ, €ä €õ 5€ç€è €õ 5€ç€è €õ 5€ç€è €õ 5€ç€è €õ  5€ç€è €õ  5€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 5€ç€è €õ  5€ç€è €õ  5€ç€è €õ 5€ç€è €õ·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â €ç €è.€Ò€ø „Ê,„Ê.„€ø€ø€õ€ç€è€ä€ç€ä€õ€éz, €ê€ë,  /€õ€â €ê·z\V4à‰€í€î€ê€õ€õ€õ€ù„+„, €ù€ù8€ÓN€ú‡&‡'€û€‡UP €ëV€ú€û$ €ì€ú$ €í€Ü €ú,  €ú€ú€ì  & €ú€ío€ü ª,ª.„€ü ·z\V4à‰€…)·z\V4à‰s €Ü€î€Ý/€ú, ·z\V4à‰€à€á·z\V4à‰€â€ú/€ú€í€ú€ïz,   2·z\V4à‰€ã€ä·z\V4à‰€Â€îo€ý ª,ª.„€ý·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü€ð€ú, ·z\V4à‰€â€å€ú€ú€î€ñ€²€û| €ë€ú€û€ð€ò€Ô€ú| €ð€óz, ·z\V4à‰€ã€ä·z\V4à‰€Â€î€ôz, €õ€Õ€ú, ·z\V4à‰€â€å€ú€ú€î€ö€Ï€û, €ë€ú€û€õ €÷€Æ€û, €ñ €û 5€ö€÷ €û 5€ö€÷ €û 5€ö€÷ €û 5€ö€÷ €û  5€ö€÷ €û  5€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 5€ö€÷ €û  5€ö€÷ €û  5€ö€÷ €û 5€ö€÷ €û·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â €ö €÷.€Ò€þ „Ê,„Ê.„€þ€þ€û€ö€÷€ñ€ö€ò€õ€ò€ú€øz, €ù€ë,  /€ú€î €ù·z\V4à‰€í€î€ù€ú€ú€ú€ú€û€ú€ú€ÿ‡&‡'€‡UP €ÿ€ÿ€ÿ8€ÚEŠ+Š,8€Û€±€ú$ €û€Ü ,  €ú  & €ûo ª,ª.„ ·z\V4à‰€…)·z\V4à‰s €Ü€ü€Ý/, ·z\V4à‰€à€á·z\V4à‰€â/€û€ýz, €þ€²|                    ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €±,€Å ‰G ‰G"„€ÿm| z, ·z\V4à‰€ã€ä·z\V4à‰€Â€üz, €þN, €þ€Æ, ·z\V4à‰€â€å€ü    ,               ,   -  -  ,  -   ,    -   -   ,    -  ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s    ·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á   8,€É€Ê ‰Ö#‰Ö%„€Ë ‰Ö&‰Ö(„€‡ ‰Ö)‰Ö+„€ÿ  €ÿ  2€ÿo ª,ª.„·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€ÜN, €þK, €ÿ               ·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á €Û,€ê ‰‚‰‚!„z, €ë,  /€ü ·z\V4à‰€í€î Š+Š, 8    €Û   €±   8€ïG *+ €‡UP 8    €Û   €± V  $   $  €Ü  ,       &   o  ª,ª.„  ·z\V4à‰€…)·z\V4à‰s €Ü €Ý/ , ·z\V4à‰€à€á·z\V4à‰€â /    z,  €² |                                 ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã       €± ,€Å  ‰G ‰G"„  m| z, ·z\V4à‰€ã€ä·z\V4à‰€Â z,  N ,  €Æ ,   ·z\V4à‰€â€å        ,                     ,     -    -    ,    -     ,      -     -     ,      -     ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s       ·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á       8   ,€É€Ê ‰Ö#‰Ö%„€Ë ‰Ö&‰Ö(„€‡ ‰Ö)‰Ö+„       2o ª,ª.„·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€ÜN ,  K,                   ·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á    €Û  ,€ê ‰‚‰‚!„  z, €ë,  /  ·z\V4à‰€í€î       *+€‡UP8€Û€±8€€8€¯“!:}:*‚ ‚  ‚ ‚ $ €ñ$ L $ (.*+&*Œ ,+\bŽ  *©&©*;<)Œ ,©\©b;<)=< )Ž         *‚ ‚  ‚ ‚   :€–:€—:!*‚©‚© ‚©‚©$ L $ (1%*+&*Œ &,+\bŽ %&% %&*©&©*;<)Œ ,©\©b;<)=< )Ž       *‚©‚© ‚©‚©    :":W:€’:€‘:€:€”:€•:€:Y:€:€ž:€«:#:$:€ƒ:€¬::€‚::~%!!&!!ÉL!`D9'9(9~9)9T9W99X9€9€9€‰9€”9*!UPV!$ €Ü !$ 9€”"UP" ">"!>! !>!! !>!#UP# #>#9Y9Z9€Š9€“9€˜9€™9,9€’9€‘9€—9€–9-9}99j9€9€£9€9€€9.9€ƒ$/„E„E„€Ü$$  $$ $$ $%/„E„E„% %9€‚999091929€¡9€­9€®9394959697989€©9€ª999€°/&/…I'…I(„&€±&&&&&8&&&&€Ü &$  €Ý/&$ ·z\V4à‰€à€á·z\V4à‰€â&/&&!z, "€²&t &  &  &   &  & & &  &  & & & & &·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    &&&€±&,€Å' ‰G ‰G"„'&#z, ·z\V4à‰€ã€ä·z\V4à‰€Â $z, "%N&, "&€Æ&, ·z\V4à‰€â€å&& & &  , %& & &   %& & &   %& & &  , %& && -%& && -%& && ,%& && -%& &&  , %& &&  -%& &&  -%& &&  , %& &&  -%& && &·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s % & && &·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á % & &&&&8&&&%&,€É(€Ê ‰Ö#‰Ö%„)€Ë ‰Ö&‰Ö(„*€‡ ‰Ö)‰Ö+„()*&&&%&"&'z, (€ë,  /& (·z\V4à‰€í€î(& &&+/…I'…I(„+€±+++++8++++ ++9€Ì0,/…Q…Q „-€‡/…Q%…Q&„-€±-----8----)V,-$ *€Ü ,$ +€Ý/,$ ·z\V4à‰€à€á·z\V4à‰€â,/,*-,z, -€²-t -  -  -   -  - - -  -  - - - - -·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ---€±-,€Å. ‰G ‰G"„.-.z, ·z\V4à‰€ã€ä·z\V4à‰€Â+/z, -0N-, -1€Æ-, ),-·z\V4à‰€â€å,,+ - -  , 01 - -   01 - -   01 - -  , 01 -- -01 -- -01 -- ,01 -- -01 --  , 01 --  -01 --  -01 --  , 01 --  -01 -- -·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s 0 1 -- -·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á 0 1 ----8---01,€É/€Ê ‰Ö#‰Ö%„0€Ë ‰Ö&‰Ö(„1€‡ ‰Ö)‰Ö+„/01---01--2z, 3€ë,  /,+ 3·z\V4à‰€í€î3- ,-,- ,-2/…Q…Q „3€‡/…Q%…Q&„3€±333338333323 239€ÚP4/…Y+…Y,„4€±44444844444€Û444€Ü 4$   & 44o5 ª,ª.„5 ·z\V4à‰€…)·z\V4à‰s €Ü5€Ý/4$ ·z\V4à‰€à€á·z\V4à‰€â4/4446z, 7€²4t 4  4  4   4  4 4 4  4  4 4 4 4 4·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    444€±4,€Å6 ‰G ‰G"„648mt 9z, ·z\V4à‰€ã€ä·z\V4à‰€Â5:z, 7;N4, 7<€Æ4, ·z\V4à‰€â€å445 4 4  , ;< 4 4   ;< 4 4   ;< 4 4  , ;< 44 -;< 44 -;< 44 ,;< 44 -;< 44  , ;< 44  -;< 44  -;< 44  , ;< 44  -;< 44 4·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ; < 44 4·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ; < 44448444;<,€É7€Ê ‰Ö#‰Ö%„8€Ë ‰Ö&‰Ö(„9€‡ ‰Ö)‰Ö+„789444;<8  8  28o: ª,ª.„:·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü=N4, 7>K, 8 4   =   > 4   =   > 4·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á =·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á> 444€Û44=>,€ê; ‰‚‰‚!„;;4=>4?z, @€ë,  /45 @·z\V4à‰€í€î@4 44</…Y+…Y,„<€±<<<<<8<<<<<€Û<< <<9€ïQ=/…f"…f$„>€‡/…f)…f*„>€±>>>>>8>>>>>€Û>>AV=>$ B€Ü =$   & =Bo? ª,ª.„? ·z\V4à‰€…)·z\V4à‰s €ÜC€Ý/=$ ·z\V4à‰€à€á·z\V4à‰€â=/=B>Dz, E€²>t >  >  >   >  > > >  >  > > > > >·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    >>>€±>,€Å@ ‰G ‰G"„@>Fmt Gz, ·z\V4à‰€ã€ä·z\V4à‰€ÂCHz, EIN>, EJ€Æ>, A=>·z\V4à‰€â€å==C > >  , IJ > >   IJ > >   IJ > >  , IJ >> -IJ >> -IJ >> ,IJ >> -IJ >>  , IJ >>  -IJ >>  -IJ >>  , IJ >>  -IJ >> >·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s I J >> >·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á I J >>>>8>>>IJ,€ÉA€Ê ‰Ö#‰Ö%„B€Ë ‰Ö&‰Ö(„C€‡ ‰Ö)‰Ö+„ABC>>>IJF  F  2FoD ª,ª.„D·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€ÜKN>, ELK, F >   K   L >   K   L >·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á K·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€ÁL >>>€Û>>KL,€êE ‰‚‰‚!„EE>KL>Mz, N€ë,  /=C N·z\V4à‰€í€îN> =>=> =>F/…f"…f$„G€‡/…f)…f*„G€±GGGGG8GGGGG€ÛGGFG FG9€ÍDH/…s$…s% O€Ü H$   & HOoI ª,ª.„I ·z\V4à‰€…)·z\V4à‰s €ÜP€Ý/H$ ·z\V4à‰€à€á·z\V4à‰€âH/HOHQz,   2·z\V4à‰€ã€ä·z\V4à‰€ÂPoJ ª,ª.„J·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€ÜR€²Ht ·z\V4à‰€â€åHHPSz, ·z\V4à‰€ã€ä·z\V4à‰€ÂPTz, U€ÏH$ ·z\V4à‰€â€åHHP V€ÆH, R H 5UV H 5UV H 5UV H 5UV H  5UV H  5UV H 6UV H 6UV H 6UV H 6UV H 6UV H 5UV H  5UV H  5UV H 5UV H·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â U V.€ÒK „Ê,„Ê.„KKHUVRURHWz, X€ë,  /HP X·z\V4à‰€í€îXH HHL/…s$…s%  LL9€ÓNM/…€…€ „N€‡/…€$…€&„ YVMN$ Z€Ü M$   & MZoO ª,ª.„O ·z\V4à‰€…)·z\V4à‰s €Ü[€Ý/M$ ·z\V4à‰€à€á·z\V4à‰€âM/MZM\z,   2·z\V4à‰€ã€ä·z\V4à‰€Â[oP ª,ª.„P·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Ü]M$ ·z\V4à‰€â€åMM[^€²Nt YMN]_€ÔMt ]`z, ·z\V4à‰€ã€ä·z\V4à‰€Â[az, b€ÕM$ ·z\V4à‰€â€åMM[c€ÏN$ YMNb d€ÆN, ^ N 5cd N 5cd N 5cd N 5cd N  5cd N  5cd N 6cd N 6cd N 6cd N 6cd N 6cd N 5cd N  5cd N  5cd N 5cd N·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â c d.€ÒQ „Ê,„Ê.„QQNcd^c_b_Mez, f€ë,  /M[ f·z\V4à‰€í€îfM MMMN MMR/…€…€ „S€‡/…€$…€&„ RS RR9€ÖDT/…¢$…¢% g€Ü T$   & TgoU ª,ª.„U ·z\V4à‰€…)·z\V4à‰s €Üh€Ý/T$ ·z\V4à‰€à€á·z\V4à‰€âT/TgTiz,   2·z\V4à‰€ã€ä·z\V4à‰€ÂhoV ª,ª.„V·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€Üj€²Tt ·z\V4à‰€â€åTThkz, ·z\V4à‰€ã€ä·z\V4à‰€Âhlz, m€ÏT$ ·z\V4à‰€â€åTTh n€ÆT, j T 3mn T 3mn T 3mn T 3mn T  3mn T  3mn T 3mn T 4mn T 4mn T 4mn T 4mn T 4mn T  3mn T  3mn T 3mn T·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â m n.€ØW „Ñ/„Ñ1„WWTmnjmjToz, p€ë,  /Th p·z\V4à‰€í€îpT TTX/…¢$…¢%  XX9€ÙNY/…¯…¯ „Z€‡/…¯$…¯&„ qVYZ$ r€Ü Y$   & Yro[ ª,ª.„[ ·z\V4à‰€…)·z\V4à‰s €Üs€Ý/Y$ ·z\V4à‰€à€á·z\V4à‰€âY/YrYtz,   2·z\V4à‰€ã€ä·z\V4à‰€Âso\ ª,ª.„\·z\V4à‰r)·z\V4à‰s·z\V4à‰s€æ€ÜuY$ ·z\V4à‰€â€åYYsv€²Zt qYZuw€ÔYt uxz, ·z\V4à‰€ã€ä·z\V4à‰€Âsyz, z€ÕY$ ·z\V4à‰€â€åYYs{€ÏZ$ qYZz |€ÆZ, v Z 3{| Z 3{| Z 3{| Z 3{| Z  3{| Z  3{| Z 3{| Z 4{| Z 4{| Z 4{| Z 4{| Z 4{| Z  3{| Z  3{| Z 3{| Z·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â { |.€Ø] „Ñ/„Ñ1„]]Z{|v{wzwY}z, ~€ë,  /Ys ~·z\V4à‰€í€î~Y YYYZ YY^/…¯…¯ „_€‡/…¯$…¯&„ ^_ ^^9:9;9<9€9€Ž9%9=9>?`tŠ ?}?@?`Aƒƒ„ N`$ €B `$ 4.+5&(Œ  ++ +aA‚ &‚ (;<)Œ  aa a`€ ` ` `` ` `bAƒƒ„ b b b?0?!cAƒƒ „ Nc$ ‚B c$ 41,5&(Œ  ,, ,dA‚ &‚ (;<)Œ  dd dc‚ c c cc c ceAƒƒ „ e e e?CfAƒ ƒ „ ƒD f$ „E f$ 4815&(Œ  1 1 1gA‚ &‚ (;<)Œ  g g gf f fƒ„ f f f f f fhAƒ ƒ „  h h h?F?G?H?W?~?€?€?€”?€•?€?€ž?Y?m?€ƒiAƒQƒQ  …i$ 4)95&(Œ  9 9jA‚ &‚ (;<)Œ  j ji ii… ii ikAƒQƒQ  k k??€‚??€«lAƒ]ƒ]„ †B l$  l l† l l lmAƒ]ƒ]„  m m?€¬nAƒ`ƒ` ‡I n$ 4)95&(Œ  9 9oA‚ &‚ (;<)Œ  o on‡ n n npAƒ`ƒ`  p p?JqAƒd ƒd"„ ˆD q$ ‰E q$ 4705&(Œ  0 0 0rA‚ &‚ (;<)Œ  r r rq q qˆ‰ q q q q q qsAƒd ƒd"„  s s s?K?L?M?N?O?PQttŠŠR‡tÕŠ—D@S)tTU „Bt@SVuTU „Bu@SWvTU „BvCv@Y)wTU%%„ xxZU%%„Dwx@YVyTU%%„ zzZU%%„Dyzz@YW{TU%%„ ||ZU%%„D{|E{|@\)}U33„F}@\V~U33„F~~@\WU33„FG@^_I@^a€b‚W0‚W2„I€I€@^cb‚H‚H „I@^d‚b‚P.‚P0„I‚I‚ƒeƒl$ƒl%Šf& ‹NIƒ$ ‹IƒIƒIƒIƒIƒ„eƒl$ƒl%I„I„@^g…b‚r(‚r*„†€‡b‚rC‚rE„I……I†I†@^h‡b‚eO‚eQ„ˆ€‡b‚e8‚e:„‡‡IˆIˆ@^iII@^j‰b‚!‚#„ ‰‰II@^kŠb‚1G‚1I„IIŠIŠ@^l‹b‚.‚0„I‹I‹@^mŒb‚Ž+‚Ž-„IŒIŒIŒ@noI@nrb6567„I@nt@nu@nvŽb€Å0€Å2„IŽILŽ@nxb€¨;€¨=„I  @nyI @nzb€¹6€¹8„I   N@n~‘b€¼;€¼=„I‘  IN‘@n€ó’b8:„ I’I’@n“býý „I““ @n€I @nI@n‚! I@n„" I@n†”b~€‰~€‹„#""” I”@n†•ˆb“)“.„–b“€“€Ÿ„••#""– I–@n†—ˆb©*©/„˜‰b©7©<„™b©€³©€µ„—˜—˜#""™ I™@n†šˆbÀ*À/„›‰bÀ7À<„œŠbÀDÀI„bÀ€ÈÀ€Ê„š›œš›œ#"" I@n‹žŒbä0ä4„Ÿbä>ä@„žIŸž#""Ÿ"@n ŽbHkHo„ ¡¡bH{H}„E ¡ I¡@n¢bð2ð4„I¢I@nI@n‘I@n’£b57„I£ II£@n“$I@n•I@n–¤b€Î7€Î9„I¤I¤@n—¥ba,a.„N¥I¥@˜™¦™b‚è‚è!„S¦¦@š)§›b‚ú‚ú„T§I T§@šœ¨›b‚ú‚ú„T¨@š©›b‚ú‚ú„T©@šžª›b‚ú‚ú„Tª@šŸ«›b‚ú‚ú„T«G%@𡬛b‚ú‚ú„T¬V%@𣭛b‚ú‚ú„T­V%@šy®›b‚ú‚ú„T®@𤝛b‚ú‚ú„T¯¯@𥰛b‚ú‚ú„±™bƒ1Aƒ1G„T°S±°  ±@𦲛b‚ú‚ú„³™bƒ>ƒD„T²S³² ³@š§´›b‚ú‚ú„µ™bƒ9Fƒ9L„T´Sµ´ I µ@š¨¶›b‚ú‚ú„·™bƒ)Cƒ)I„T¶S·¶ I·@𩏛b‚ú‚ú„T¸ I¸@šª¹›b‚ú‚ú„T¹ I ¹@š«º›b‚ú‚ú„»bƒe.ƒe0„Tºº I» I»@𬼛b‚ú‚ú„½bƒr1ƒr3„T¼¼ I½ I ½@šy¾›b‚ú‚ú„T¾I T¾¿›eˆÞˆÞ„Œ­T¿I$ ® $ ޝT¿$ @š)§›b‚ú‚ú„T§I T§À›eˆÞˆÞ„TÀI TÀ¿T¿I Œ@šy®›b‚ú‚ú„T®Á›eˆÞˆÞ„TÁ¿ŽŽT¿T¿I T¿›eˆÞˆÞ„TÂI T °ÃñÃòÃóÃôÃõÖÃÅW¶·&  IW¶·&IW¶¹&  IWº.Ãb‚»‚»„YÃÃWº»Äb‚»‚»„YÄļ”ÅÊ‘ ZYZ€”Z€•Z€“Z€¡ZÅe‰p'‰p)„ÆŽe‰p‰p&„ ÅVÅ$ ½EÆÅ$ Wº.Ãb‚»‚»„YÃÃÇe‡™‡™„YÇÇÅEÆÅÅEÆÅÈe‰p'‰p)„ÉŽe‰p‰p&„ ÈÈEÉÈZ2Z¾Z¿À:ÊÏ‘“[ÁÂÊŒgŒg„Ê\Ê[ÁÃËŒgŒg„Ë\Ë[ÁÄÌŒgŒg„\ÌÌÍ –A–A„‘N\Í& ’, ·z\V4à‰ÅÆÍÍ‘ÍÍ\ÍÍÎ –A–A„\ÎÎÇLÏÕ“— ]Y]€“]€”]€•]€¡]Ïe‰æ"‰æ$„“VÏ$ ”½YÏ$ Wº.Ãb‚»‚»„YÃÃÐe‡™‡™„YÐÐÏ”“YÏÏYÏÑe‰æ"‰æ$„ÑYÑ]ÈÒe‰é‰é„•VÒ$ –½YÒ$ Wº»Äb‚»‚»„YÄÄÓe‡™‡™„YÓÓÒ–•YÒÒYÒÔe‰é‰é„ÔYÔ]2]¾]¿É4ÕÕ——^ÊË'I(^ÎÏ)*IËÕž—߀¤<Ñ)+<ÑÆ+<Ñ)+<Ò),<)< )<Ó)-<Ô).<Õ)/<ÕÆ/<Ö)0<×)1<Ø)2<ØÆ2<Ù)3<ÙÚ3<Ù)3<Û)4<Ü)5<Ý)6<Þ)7<ß)8<à)9<á):<â);<ã)<<ä)=<äå=<æ)><ç)?<è)@<é)A<ê)B<ë)C<ì)D<ìíD<ìîD<ìïD<ð)EF<ðòFE<ðóF<ðôF<ð)EF<ð)EF<õ)G<õöG<÷)HI<÷ùIH<ú)J<úûJ<ü)K<üýK><þ)L<þÿL<þ‚L<þ‚L<þ‚L<þ‚L<þ‚L<þ‚L<þ‚L<þ‚L<þ‚L<þ‚ L<þ‚ L<þ‚ L<þ‚ L<þ‚ L<‚)M<‚)N<‚ÆN<‚)O<‚ûO<‚‚O<‚‚O<‚‚O<‚‚O<‚‚O<‚)P<‚)Q<‚)R<‚)S<‚)T<‚)U<‚)V<‚‚V<‚)V<wՀʅM…MŽÖ€Ë…M…MŽLÕÖLÕÖ<w׀ʅM…MŽØ€Ë…M…MŽL×ØÙ€Ê ‹v‹vŽÚ€Ë ‹v‹vŽ— LÙÚ, ˜ , <wՀʅM…MŽÖ€Ë…M…MŽLÕÖLÕÖÛ€Ê ‹v‹vŽÜ€Ë ‹v‹vŽLÛÜLÛÜÙÚ—LÙÚ˜LÙÚÝ€Ê ‹v‹vŽÞ€Ë ‹v‹vŽLÝÞ<w߀Ê…M…MŽà€Ë…M…MŽLßà<wá€Ê…M…MŽâ€Ë…M…MŽLáâ<wã€Ê…M…MŽä€Ë…M…MŽLãäå€Ê ‹v‹vŽæ€Ë ‹v‹vŽ™ Låæ, š, <wá€Ê…M…MŽâ€Ë…M…MŽLáâç€Ê ‹v‹vŽè€Ë ‹v‹vŽLçèåæ™ ·z\V4à‰Låæé€Ê ‹v‹vŽê€Ë ‹v‹vŽLéê<wë€Ê…M…MŽì€Ë…M…MŽLëì<‚í€Ê…V…VŽî€Ë…V…VŽï‚…V…VŽ€íîï€íîï<‚ð€Ê…V…VŽñ€Ë…V…VŽò‚…V…VŽ€ðñòó€Ê ‹|‹|Žô€Ë ‹|‹|Žõ‚ ‹|‹|Ž› €óôõ, œ , <‚í€Ê…V…VŽî€Ë…V…VŽï‚…V…VŽ€íîï€íîïö€Ê ‹|‹|Ž÷€Ë ‹|‹|Žø‚ ‹|‹|Ž€ö÷ø€ö÷øóôõ›€óôõœ€óôõù€Ê ‹|‹|Žú€Ë ‹|‹|Žû‚ ‹|‹|Ž€ùúû<‚ü€Ê…V…VŽý€Ë…V…VŽþ‚…V…VŽ€üýþ<‚ÿ€Ê…V…VŽ‚€Ë…V…VŽ‚‚…V…VŽ€ÿ‚‚<‚‚€Ê…V…VŽ‚€Ë…V…VŽ‚‚…V…VŽ€‚‚‚‚€Ê ‹|‹|Ž‚€Ë ‹|‹|Ž‚‚ ‹|‹|Ž €‚‚‚, ž, <‚ÿ€Ê…V…VŽ‚€Ë…V…VŽ‚‚…V…VŽ€ÿ‚‚‚€Ê ‹|‹|Ž‚ €Ë ‹|‹|Ž‚ ‚ ‹|‹|Ž€‚‚ ‚ ‚‚‚ ·z\V4à‰€‚‚‚‚ €Ê ‹|‹|Ž‚ €Ë ‹|‹|Ž‚ ‚ ‹|‹|Ž€‚ ‚ ‚ <‚‚€Ê…V…VŽ‚€Ë…V…VŽ‚‚…V…VŽ€‚‚‚<‚ ‚€Ê…a…aŽ‚€Ë…a…aŽ‚‚…a…aŽ‚‚!…a…aŽ€‚‚‚‚€‚‚‚‚<‚ ‚€Ê…a…aŽ‚€Ë…a…aŽ‚‚…a…aŽ‚‚!…a…aŽ€‚‚‚‚‚€Ê ‹ƒ‹ƒŽ‚€Ë ‹ƒ‹ƒŽ‚‚ ‹ƒ‹ƒŽ‚‚! ‹ƒ‹ƒŽŸ €‚‚‚‚,   , <‚ ‚€Ê…a…aŽ‚€Ë…a…aŽ‚‚…a…aŽ‚‚!…a…aŽ€‚‚‚‚€‚‚‚‚‚€Ê ‹ƒ‹ƒŽ‚€Ë ‹ƒ‹ƒŽ‚‚ ‹ƒ‹ƒŽ‚ ‚! ‹ƒ‹ƒŽ€‚‚‚‚ €‚‚‚‚ ‚‚‚‚Ÿ€‚‚‚‚ €‚‚‚‚‚!€Ê ‹ƒ‹ƒŽ‚"€Ë ‹ƒ‹ƒŽ‚#‚ ‹ƒ‹ƒŽ‚$‚! ‹ƒ‹ƒŽ€‚!‚"‚#‚$<‚ ‚%€Ê…a…aŽ‚&€Ë…a…aŽ‚'‚…a…aŽ‚(‚!…a…aŽ€‚%‚&‚'‚(<‚ ‚)€Ê…a…aŽ‚*€Ë…a…aŽ‚+‚…a…aŽ‚,‚!…a…aŽ€‚)‚*‚+‚,<‚ ‚-€Ê…a…aŽ‚.€Ë…a…aŽ‚/‚…a…aŽ‚0‚!…a…aŽ€‚-‚.‚/‚0‚1€Ê ‹ƒ‹ƒŽ‚2€Ë ‹ƒ‹ƒŽ‚3‚ ‹ƒ‹ƒŽ‚4‚! ‹ƒ‹ƒŽ¡ €‚1‚2‚3‚4, ¢, <‚ ‚)€Ê…a…aŽ‚*€Ë…a…aŽ‚+‚…a…aŽ‚,‚!…a…aŽ€‚)‚*‚+‚,‚5€Ê ‹ƒ‹ƒŽ‚6€Ë ‹ƒ‹ƒŽ‚7‚ ‹ƒ‹ƒŽ‚8‚! ‹ƒ‹ƒŽ€‚5‚6‚7‚8‚1‚2‚3‚4¡ ·z\V4à‰€‚1‚2‚3‚4‚9€Ê ‹ƒ‹ƒŽ‚:€Ë ‹ƒ‹ƒŽ‚;‚ ‹ƒ‹ƒŽ‚<‚! ‹ƒ‹ƒŽ€‚9‚:‚;‚<<‚ ‚=€Ê…a…aŽ‚>€Ë…a…aŽ‚?‚…a…aŽ‚@‚!…a…aŽ€‚=‚>‚?‚@<‚"‚A€Ê…n…nŽ‚B€Ë…n…nŽ‚C‚…n…nŽ‚D‚!…n…nŽ‚E‚#…n …n#Ž€‘‚A‚B‚C‚D‚E€‘‚A‚B‚C‚D‚E<‚"‚F€Ê…n…nŽ‚G€Ë…n…nŽ‚H‚…n…nŽ‚I‚!…n…nŽ‚J‚#…n …n#Ž€‘‚F‚G‚H‚I‚J‚K€Ê ‹‹‹‹Ž‚L€Ë ‹‹‹‹Ž‚M‚ ‹‹‹‹Ž‚N‚! ‹‹‹‹Ž‚O‚# ‹‹ ‹‹#Ž£ €‘‚K‚L‚M‚N‚O, ¤ , <‚"‚A€Ê…n…nŽ‚B€Ë…n…nŽ‚C‚…n…nŽ‚D‚!…n…nŽ‚E‚#…n …n#Ž€‘‚A‚B‚C‚D‚E€‘‚A‚B‚C‚D‚E‚P€Ê ‹‹‹‹Ž‚Q€Ë ‹‹‹‹Ž‚R‚ ‹‹‹‹Ž‚S‚! ‹‹‹‹Ž‚T‚# ‹‹ ‹‹#Ž€‘‚P‚Q‚R‚S‚T€‘‚P‚Q‚R‚S‚T‚K‚L‚M‚N‚O£€‘‚K‚L‚M‚N‚O¤€‘‚K‚L‚M‚N‚O‚U€Ê ‹‹‹‹Ž‚V€Ë ‹‹‹‹Ž‚W‚ ‹‹‹‹Ž‚X‚! ‹‹‹‹Ž‚Y‚# ‹‹ ‹‹#Ž€‘‚U‚V‚W‚X‚Y<‚"‚Z€Ê…n…nŽ‚[€Ë…n…nŽ‚\‚…n…nŽ‚]‚!…n…nŽ‚^‚#…n …n#Ž€‘‚Z‚[‚\‚]‚^<‚"‚_€Ê…n…nŽ‚`€Ë…n…nŽ‚a‚…n…nŽ‚b‚!…n…nŽ‚c‚#…n …n#Ž€‘‚_‚`‚a‚b‚c<‚"‚d€Ê…n…nŽ‚e€Ë…n…nŽ‚f‚…n…nŽ‚g‚!…n…nŽ‚h‚#…n …n#Ž€‘‚d‚e‚f‚g‚h‚i€Ê ‹‹‹‹Ž‚j€Ë ‹‹‹‹Ž‚k‚ ‹‹‹‹Ž‚l‚! ‹‹‹‹Ž‚m‚# ‹‹ ‹‹#Ž¥ €‘‚i‚j‚k‚l‚m, ¦, <‚"‚_€Ê…n…nŽ‚`€Ë…n…nŽ‚a‚…n…nŽ‚b‚!…n…nŽ‚c‚#…n …n#Ž€‘‚_‚`‚a‚b‚c‚n€Ê ‹‹‹‹Ž‚o€Ë ‹‹‹‹Ž‚p‚ ‹‹‹‹Ž‚q‚! ‹‹‹‹Ž‚r‚# ‹‹ ‹‹#Ž€‘‚n‚o‚p‚q‚r‚i‚j‚k‚l‚m¥ ·z\V4à‰€‘‚i‚j‚k‚l‚m‚s€Ê ‹‹‹‹Ž‚t€Ë ‹‹‹‹Ž‚u‚ ‹‹‹‹Ž‚v‚! ‹‹‹‹Ž‚w‚# ‹‹ ‹‹#Ž€‘‚s‚t‚u‚v‚w<‚"‚x€Ê…n…nŽ‚y€Ë…n…nŽ‚z‚…n…nŽ‚{‚!…n…nŽ‚|‚#…n …n#Ž€‘‚x‚y‚z‚{‚|<‚$‚}€Ê…}…}Ž‚~€Ë…}…}Ž‚‚…}…}Ž‚€‚!…}…}Ž‚‚#…} …}#Ž‚‚‚%…}$…}'Ž€’‚}‚~‚‚€‚‚‚€’‚}‚~‚‚€‚‚‚<‚$‚ƒ€Ê…}…}Ž‚„€Ë…}…}Ž‚…‚…}…}Ž‚†‚!…}…}Ž‚‡‚#…} …}#Ž‚ˆ‚%…}$…}'Ž€’‚ƒ‚„‚…‚†‚‡‚ˆ‚‰€Ê ‹”‹”Ž‚Š€Ë ‹”‹”Ž‚‹‚ ‹”‹”Ž‚Œ‚! ‹”‹”Ž‚‚# ‹” ‹”#ނނ% ‹”$‹”'ާ €’‚‰‚Š‚‹‚Œ‚‚Ž, ¨ , <‚$‚}€Ê…}…}Ž‚~€Ë…}…}Ž‚‚…}…}Ž‚€‚!…}…}Ž‚‚#…} …}#Ž‚‚‚%…}$…}'Ž€’‚}‚~‚‚€‚‚‚€’‚}‚~‚‚€‚‚‚‚€Ê ‹”‹”Ž‚€Ë ‹”‹”Ž‚‘‚ ‹”‹”Ž‚’‚! ‹”‹”Ž‚“‚# ‹” ‹”#Ž‚”‚% ‹”$‹”'Ž€’‚‚‚‘‚’‚“‚”€’‚‚‚‘‚’‚“‚”‚‰‚Š‚‹‚Œ‚‚ާ€’‚‰‚Š‚‹‚Œ‚‚ލ€’‚‰‚Š‚‹‚Œ‚‚Ž‚•€Ê ‹”‹”Ž‚–€Ë ‹”‹”Ž‚—‚ ‹”‹”Ž‚˜‚! ‹”‹”Ž‚™‚# ‹” ‹”#Ž‚š‚% ‹”$‹”'Ž€’‚•‚–‚—‚˜‚™‚š<‚$‚›€Ê…}…}Ž‚œ€Ë…}…}Ž‚‚…}…}Ž‚ž‚!…}…}Ž‚Ÿ‚#…} …}#Ž‚ ‚%…}$…}'Ž€’‚›‚œ‚‚ž‚Ÿ‚ <‚$‚¡€Ê…}…}Ž‚¢€Ë…}…}Ž‚£‚…}…}Ž‚¤‚!…}…}Ž‚¥‚#…} …}#Ž‚¦‚%…}$…}'Ž€’‚¡‚¢‚£‚¤‚¥‚¦<‚$‚§€Ê…}…}Ž‚¨€Ë…}…}Ž‚©‚…}…}Ž‚ª‚!…}…}Ž‚«‚#…} …}#Ž‚¬‚%…}$…}'Ž€’‚§‚¨‚©‚ª‚«‚¬‚­€Ê ‹”‹”Ž‚®€Ë ‹”‹”Ž‚¯‚ ‹”‹”Ž‚°‚! ‹”‹”Ž‚±‚# ‹” ‹”#Ž‚²‚% ‹”$‹”'Ž© €’‚­‚®‚¯‚°‚±‚², ª, <‚$‚¡€Ê…}…}Ž‚¢€Ë…}…}Ž‚£‚…}…}Ž‚¤‚!…}…}Ž‚¥‚#…} …}#Ž‚¦‚%…}$…}'Ž€’‚¡‚¢‚£‚¤‚¥‚¦‚³€Ê ‹”‹”Ž‚´€Ë ‹”‹”Ž‚µ‚ ‹”‹”Ž‚¶‚! ‹”‹”Ž‚·‚# ‹” ‹”#Ž‚¸‚% ‹”$‹”'Ž€’‚³‚´‚µ‚¶‚·‚¸‚­‚®‚¯‚°‚±‚²© ·z\V4à‰€’‚­‚®‚¯‚°‚±‚²‚¹€Ê ‹”‹”Ž‚º€Ë ‹”‹”Ž‚»‚ ‹”‹”Ž‚¼‚! ‹”‹”Ž‚½‚# ‹” ‹”#Ž‚¾‚% ‹”$‹”'Ž€’‚¹‚º‚»‚¼‚½‚¾<‚$‚¿€Ê…}…}Ž‚À€Ë…}…}Ž‚Á‚…}…}Ž‚Â‚!…}…}Ž‚Ã‚#…} …}#ނĂ%…}$…}'Ž€’‚¿‚À‚Á‚‚ÂÄ<‚&‚Å€Ê…Ž…ŽŽ‚Æ€Ë…Ž…ŽŽ‚Ç‚…Ž…ŽŽ‚È‚!…Ž…Žނɂ#…Ž …Ž#Ž‚Ê‚%…Ž$…Ž'Ž‚Ë‚'…Ž(…Ž+Ž€“‚łƂǂȂɂʂˀ“‚łƂǂȂɂʂË<‚&‚Ì€Ê…Ž…ŽŽ‚Í€Ë…Ž…ŽŽ‚΂…Ž…ŽŽ‚Ï‚!…Ž…ŽŽ‚Ђ#…Ž …Ž#Ž‚Ñ‚%…Ž$…Ž'Ž‚Ò‚'…Ž(…Ž+Ž€“‚Ì‚Í‚Î‚Ï‚Ð‚Ñ‚Ò‚Ó€Ê ‹ž‹žŽ‚Ô€Ë ‹ž‹žނՂ ‹ž‹žނւ! ‹ž‹žނׂ# ‹ž ‹ž#Ž‚Ø‚% ‹ž$‹ž'Ž‚Ù‚' ‹ž(‹ž+Ž« €“‚ӂԂՂւׂ؂Ù, ¬ , <‚&‚Å€Ê…Ž…ŽŽ‚Æ€Ë…Ž…ŽŽ‚Ç‚…Ž…ŽŽ‚È‚!…Ž…Žނɂ#…Ž …Ž#Ž‚Ê‚%…Ž$…Ž'Ž‚Ë‚'…Ž(…Ž+Ž€“‚łƂǂȂɂʂˀ“‚Å‚Æ‚Ç‚È‚É‚Ê‚Ë‚Ú€Ê ‹ž‹žŽ‚Û€Ë ‹ž‹žނ܂ ‹ž‹žŽ‚Ý‚! ‹ž‹žŽ‚Þ‚# ‹ž ‹ž#ނ߂% ‹ž$‹ž'Ž‚à‚' ‹ž(‹ž+Ž€“‚Ú‚Û‚Ü‚Ý‚Þ‚ß‚à€“‚ڂۂ܂݂ނ߂à‚ӂԂՂւׂ؂٫€“‚ӂԂՂւׂ؂٬€“‚ӂԂՂւׂ؂قá€Ê ‹ž‹žŽ‚â€Ë ‹ž‹žŽ‚ã‚ ‹ž‹žŽ‚ä‚! ‹ž‹žŽ‚å‚# ‹ž ‹ž#Ž‚æ‚% ‹ž$‹ž'Ž‚ç‚' ‹ž(‹ž+Ž€“‚á‚â‚ã‚ä‚傿‚ç<‚&‚è€Ê…Ž…ŽŽ‚é€Ë…Ž…ŽŽ‚ê‚…Ž…ŽŽ‚ë‚!…Ž…ŽŽ‚ì‚#…Ž …Ž#Ž‚í‚%…Ž$…Ž'Ž‚î‚'…Ž(…Ž+Ž€“‚è‚é‚ê‚ë‚ì‚í‚î<‚&‚ï€Ê…Ž…ŽŽ‚ð€Ë…Ž…ŽŽ‚ñ‚…Ž…ŽŽ‚ò‚!…Ž…ŽŽ‚ó‚#…Ž …Ž#Ž‚ô‚%…Ž$…Ž'Ž‚õ‚'…Ž(…Ž+Ž€“‚ï‚ð‚ñ‚ò‚ó‚ô‚õ<‚&‚ö€Ê…Ž…ŽŽ‚÷€Ë…Ž…ŽŽ‚ø‚…Ž…ŽŽ‚ù‚!…Ž…ŽŽ‚ú‚#…Ž …Ž#Ž‚û‚%…Ž$…Ž'Ž‚ü‚'…Ž(…Ž+Ž€“‚ö‚÷‚ø‚ù‚ú‚û‚ü‚ý€Ê ‹ž‹žŽ‚þ€Ë ‹ž‹žŽ‚ÿ‚ ‹ž‹žŽƒ‚! ‹ž‹žŽƒ‚# ‹ž ‹ž#Žƒ‚% ‹ž$‹ž'Žƒ‚' ‹ž(‹ž+Ž­ €“‚ý‚þ‚ÿƒƒƒƒ, ®, <‚&‚ï€Ê…Ž…ŽŽ‚ð€Ë…Ž…ŽŽ‚ñ‚…Ž…ŽŽ‚ò‚!…Ž…ŽŽ‚ó‚#…Ž …Ž#Ž‚ô‚%…Ž$…Ž'Ž‚õ‚'…Ž(…Ž+Ž€“‚ï‚ð‚ñ‚ò‚ó‚ô‚õƒ€Ê ‹ž‹žŽƒ€Ë ‹ž‹žŽƒ‚ ‹ž‹žŽƒ‚! ‹ž‹žŽƒ‚# ‹ž ‹ž#Žƒ ‚% ‹ž$‹ž'Žƒ ‚' ‹ž(‹ž+Ž€“ƒƒƒƒƒƒ ƒ ‚ý‚þ‚ÿƒƒƒƒ­ ·z\V4à‰€“‚ý‚þ‚ÿƒƒƒƒƒ €Ê ‹ž‹žŽƒ €Ë ‹ž‹žŽƒ ‚ ‹ž‹žŽƒ‚! ‹ž‹žŽƒ‚# ‹ž ‹ž#Žƒ‚% ‹ž$‹ž'Žƒ‚' ‹ž(‹ž+Ž€“ƒ ƒ ƒ ƒƒƒƒ<‚&ƒ€Ê…Ž…ŽŽƒ€Ë…Ž…ŽŽƒ‚…Ž…ŽŽƒ‚!…Ž…ŽŽƒ‚#…Ž …Ž#Žƒ‚%…Ž$…Ž'Žƒ‚'…Ž(…Ž+Ž€“ƒƒƒƒƒƒƒ<‚(<‚(¯ , °, <‚(¯ ·z\V4à‰<‚(<‚))W<‚*)ƒ…¸…¸„ƒ€‡…¸…¸„€•ƒƒ<‚*‚+ƒ…¸…¸„ƒ€‡…¸…¸„€–ƒƒƒƒ<‚*‚+ƒ…¸…¸„ƒ€‡…¸…¸„ƒƒ€–ƒƒ<‚*‚-ƒ…¸…¸„ƒ €‡…¸…¸„€–ƒƒ ƒƒ <‚*‚.ƒ!…¸…¸„ƒ"€‡…¸…¸„ƒ!ƒ"€–ƒ!ƒ"<‚*‚/ƒ#…¸…¸„ƒ$€‡…¸…¸„ƒ%‚0…ò>…ò@„€•ƒ#ƒ$ƒ%ƒ#ƒ$ƒ%<‚*‚/ƒ&…¸…¸„ƒ'€‡…¸…¸„ƒ(‚0…ë>…ë@„ƒ)‚1…ëD…ëF„€•ƒ&ƒ'ƒ(ƒ)ƒ&ƒ'ƒ(ƒ)<‚*‚/ƒ*…¸…¸„ƒ+€‡…¸…¸„ƒ,‚0…ã>…ã@„ƒ-‚1…ãD…ãF„ƒ.‚2…ãJ…ãL„€•ƒ*ƒ+ƒ,ƒ-ƒ.ƒ*ƒ+ƒ,ƒ-ƒ.<‚*‚/ƒ/…¸…¸„ƒ0€‡…¸…¸„ƒ1‚0…Ú>…Ú@„ƒ2‚1…ÚD…ÚF„ƒ3‚2…ÚJ…ÚL„ƒ4‚3…ÚP…ÚR„€•ƒ/ƒ0ƒ1ƒ2ƒ3ƒ4ƒ/ƒ0ƒ1ƒ2ƒ3ƒ4<‚4‚5ƒ5†:†<„€—ƒ5ƒ5<‚4‚5ƒ6†@†B„ƒ7€‡†C†E„€–ƒ6ƒ7ƒ6ƒ7<‚4‚7ƒ8€Ê† -† 0„ƒ9€Ë† 3† 6„ƒ:€‡† :† <„ƒ8ƒ9ƒ:ƒ8ƒ9ƒ:<‚4‚7ƒ;€Ê†-†0„ƒ<€Ë†3†6„ƒ=‚†9†<„ƒ>€‡†@†B„ƒ;ƒ<ƒ=ƒ>ƒ;ƒ<ƒ=ƒ><‚4‚7ƒ?€Ê†-†0„ƒ@€Ë†3†6„ƒA‚†9†<„ƒB‚!†?†B„ƒC€‡†F†H„ƒ?ƒ@ƒAƒBƒCƒ?ƒ@ƒAƒBƒC<‚4‚7ƒD€Ê†-†0„ƒE€Ë†3†6„ƒF‚†9†<„ƒG‚!†?†B„ƒH‚#†E†H„ƒI€‡†L†N„ƒDƒEƒFƒGƒHƒIƒDƒEƒFƒGƒHƒI<‚8ƒJ†† ††Ž€˜ƒJ€˜ƒJ<‚8ƒK†† ††Ž€˜ƒKƒL ŒR ŒRޱ €˜ƒL, ² , <‚8ƒJ†† ††Ž€˜ƒJ€˜ƒJƒM ŒR ŒRŽ€˜ƒM€˜ƒMƒL±€˜ƒL²€˜ƒLƒN ŒR ŒRŽ€˜ƒN<‚8ƒO†† ††Ž€˜ƒO<‚8ƒP†† ††Ž€˜ƒP<‚8ƒQ†† ††Ž€˜ƒQƒR ŒR ŒR޳ €˜ƒR, ´, <‚8ƒP†† ††Ž€˜ƒPƒS ŒR ŒRŽ€˜ƒSƒR³ ·z\V4à‰€˜ƒRƒT ŒR ŒRŽ€˜ƒT<‚8ƒU†† ††Ž€˜ƒU<‚8ƃV†† ††Ž€˜ƒVƒVƒW ŒR ŒR޵N€˜ƒW& ¶, €˜‚9ƒWµƒWƒW€˜ƒWƒWƒX ŒR ŒRŽ€˜ƒXƒX<‚8‚:ƒY†† ††Ž€˜ƒYƒYƒZ ŒR ŒRŽ·N€˜ƒZ& ¸€ñƒZ$ €˜‚9ƒZ·¸ƒZ€˜ƒZƒZƒ[ ŒR ŒRŽ€˜ƒ[ƒ[<‚;ƒ\†¢†¢Ž€™ƒ\€™ƒ\<‚;ƒ]†¢†¢Ž€™ƒ]ƒ^ ŒlŒl޹ €™ƒ^, º , <‚;ƒ\†¢†¢Ž€™ƒ\€™ƒ\ƒ_ ŒlŒlŽ€™ƒ_€™ƒ_ƒ^¹€™ƒ^º€™ƒ^ƒ` ŒlŒlŽ€™ƒ`<‚;ƒa†¢†¢Ž€™ƒa<‚;ƒb†¢†¢Ž€™ƒb<‚;ƒc†¢†¢Ž€™ƒcƒd ŒlŒlŽ» €™ƒd, ¼, <‚;ƒb†¢†¢Ž€™ƒbƒe ŒlŒlŽ€™ƒeƒd» ·z\V4à‰€™ƒdƒf ŒlŒlŽ€™ƒf<‚;ƒg†¢†¢Ž€™ƒg<‚;ƃh†¢†¢Ž€™ƒhƒh<‚;‚<ƒi†¢†¢Ž€™ƒiƒj ŒlŒl޽N€™ƒj& ¾, ½€™‚=ƒj€™ƒjƒk ŒlŒlŽ€™ƒk<‚;‚>ƒl†¢†¢Ž€™ƒlƒm ŒlŒlŽ¿N€™ƒm& À, ¿€™‚?ƒm€™ƒmƒn ŒlŒlŽ€™ƒn<‚;‚@ƒo†¢†¢Ž ƒoƒp ŒlŒlŽÁ#, €™‚=ƒp ƒp ƒpƒq ŒlŒlŽ ƒq<‚;‚?ƒr†¢†¢Žƒr ƒrƒs ŒlŒlŽÂNƒs$ €™‚?ƒs ƒsƒs ƒsƒt ŒlŒlŽƒt ƒt<‚A)ƒu‚B‚C„ƒv‚D‚C!„ƒw‚E‚C"*„ƒx‚F‚C+2„€šƒuƒvƒwƒx<‚Aƃy‚B‚C„ƒz‚D‚C!„ƒ{‚E‚C"*„ƒ|‚F‚C+2„€šƒyƒzƒ{ƒ|<‚G)ƒ}‚B‚C((„ƒ~‚D‚C((!„ƒ‚E‚C("(*„ƒ€‚F‚C(+(2„ƒ‚H‚C(3(9„€›ƒ}ƒ~ƒƒ€ƒ ‚I‚‚ÃÂJ ‚ƒÃÀœ‚K)ƒ‚„„!„€ƒ‚€œ‚L)X€œ‚M)Y€œ‚M)Y€œ‚M‚NY€œ‚O)Z€œ‚O‚PZ€œ‚Q)[€œ‚Q‚R[€œ‚Q‚S[€œ‚Q‚T[€œ‚Q‚U[€œ‚Q‚V[€œ‚Q‚W[€œ‚X)\€œ‚Y)]€œ‚Y‚Z]€œ‚Y‚[]€œ‚Y‚\]€œ‚Y‚]]€œ‚Y‚^]€œ‚Y‚_]€œ‚Y‚`]€œ‚Y‚a]€œ‚Y‚b]€œ‚Y‚c]€œ‚Y‚d]€œ‚Y‚e]€œ‚Y‚f]^€œ‚Y‚h]^€œ‚Y‚i]‚j>ƒƒÃÀ¥‚k€¥‚l€¥‚m€¥‚n€¥‚o‚pIƒ«ÃÕ€¦MƒƒUP à ƒƒ$ ?€¬ƒ„5R R"„  ƒ„ ƒ„ƒƒÃ ƒƒ ƒƒ ƒƒƒ…UP  ƒ… ƒ…€¦‚q€¦‚r€¦‚sƒ†UPÄ‚t€§ƒ†$ €¨‚sƒ‡‚C€Ü6€Ü8„€§ƒ‡ƒ‡ƒ†Äƒ†€§ƒ†ƒ†ƒˆUP€§ƒˆƒˆ€¦‚wƒ‰UPƒŠ‚FUPÅ‚t€©ƒ‰ƒŠ$ €¨‚wƒ‹‚C')„ƒŒ‚F‚C*1„€©ƒ‹ƒŒƒ‹ƒ‰ƒŠÅƒ‰€©ƒ‰ƒŠƒ‰ƒUPƒŽ‚FUP€©ƒƒŽƒ€¦‚yƒUPÆ‚z_$ Ç‚t€«ƒ$ €¨‚yƒ‚C€´C€´E„_€«ƒƒƒÆÇƒ€«ƒƒ_€«ƒƒƒ‘UP_€«ƒ‘ƒ‘€¦‚}ƒ’UPÈ‚z_$ É‚t€«ƒ’$ €¨‚}ƒ“‚C€»D€»F„_€«ƒ“ƒ“ƒ’ÈɃ’€«ƒ’ƒ’_€«ƒ’ƒ’ƒ”UP_€«ƒ”ƒ”€¦‚~ƒ•UPÊ‚t€«ƒ•$ €¨‚~ƒ–‚C€Ï:€Ï<„€«ƒ–ƒ–ƒ•ʃ•€«ƒ•ƒ•ƒ—UP€«ƒ—ƒ—€¦‚ƒ˜UPË‚t€«ƒ˜$ €¨‚ƒ™‚C€Ã:€Ã<„€«ƒ™ƒ™ƒ˜Ëƒ˜€«ƒ˜ƒ˜ƒšUP€«ƒšƒš€¦‚€ƒ›UPÌ‚t€«ƒ›$ €¨‚€ƒœ‚C€Õ:€Õ<„€«ƒœƒœƒ›Ìƒ›€«ƒ›ƒ›ƒUP€«ƒƒ€¦‚ƒžUPÍ‚t€«ƒž$ €¨‚ƒŸ‚C€É:€É<„€«ƒŸƒŸƒžÍƒž€«ƒžƒžƒ UP€«ƒ ƒ €¦‚‚€¦‚ƒƒ¡UPƒ¡‚„ƒ¡ ÎNƒ¡$ ƒ¡·z\V4à‰‚…‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚…  ΀§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b ƒ¡    Î ƒ¡    Î ƒ¡    Î ƒ¡    Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   Î ƒ¡   ΃¡‚„ƒ¡ Î ƒ¡ ƒ¢UPƒ¢‚„ƒ¢ ƒ¢ €¦‚ƒ£UPƒ£‚„ƒ£ ÏNƒ£$ ƒ£·z\V4à‰‚‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚  Ï€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b ƒ£    Ï ƒ£    Ï ƒ£    Ï ƒ£    Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£   Ï ƒ£·z\V4à‰€è‚‘·z\V4à‰€Á·z\V4à‰‚  󣂄ƒ£ Ï ƒ£ ƒ¤UPƒ¤‚„ƒ¤ ƒ¤ €¦‚’ƒ¥UPƒ¥‚„ƒ¥ÐNƒ¥$ ƒ¥ÑB,  Ð ,‚“Ñ ƒ¥  Ð ƒ¥  Ð ƒ¥  Ð ƒ¥  Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ð ƒ¥ Ѓ¥‚„ƒ¥Ðƒ¥ƒ¦UPƒ¦‚„ƒ¦ƒ¦€¦‚”ƒ§UPƒ§‚„ƒ§ÒNƒ§$ ƒ§ÓB,  Ò ,‚•Ó ƒ§  Ò ƒ§  Ò ƒ§  Ò ƒ§  Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Ò ƒ§ Òƒ§‚„ƒ§Òƒ§ƒ¨UPƒ¨‚„ƒ¨ƒ¨€¦‚–€¦‚—€¦‚˜ƒ©‚™€È€ÈÔN€¯ƒ©$ ·z\V4à‰Åƃ©ƒ©Ôƒ©€¯ƒ©ƒ©ƒª‚™€È€È€¯ƒªƒª€¦‚št4«¾Õ¼-,‚›ƒ«UPÕNƒ«$ րƃ«$ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ«  2ÕÖ ƒ«  2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ«  2ÕÖ ƒ«  2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ« 2ÕÖ ƒ«·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â Õ Ö ƒ«·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â Õ Ö.ƒ¬ †c2†c4„ƒ¬ƒ¬ƒ«ÕÖƒ«ƒ«ƒ«ƒ­UPƒ­ƒ­,‚œƒ®UP×Nƒ®$ ؀ƃ®$ ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ®  2ר ƒ®  2ר ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ® 2ר ƒ®  2 2×× 2 2ØØ 2ר ƒ®  2 2×× 2 2ØØ 2ר ƒ® 2ר ƒ®·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â × Ø ƒ®·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â × Ø.‚ƒ¯ †f4†f6„ƒ¯ƒ¯ƒ®×؃®ƒ®ƒ®ƒ°UPƒ°ƒ°,‚žƒ±UPÙ‚Ÿ$ ÚNƒ±$ ۀƃ±$ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ±  2ÚÛ ƒ±  2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ±  2ÚÛ ƒ±  2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ± 2ÚÛ ƒ±·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â Ú Û ƒ±·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â Ú Û.‚ ƒ² †il†in„ƒ²ƒ²ƒ±ÙÚÛƒ±ƒ±ƒ±ƒ±ƒ±ƒ³UPƒ³ƒ³,‚¡ƒ´UPÜNƒ´$ ݀ƃ´$ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  5ÜÝÿÿÿÿÿ 3ÜÝ ƒ´  6ÜÝÿÿÿÿÿ 4ÜÝ ƒ´·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H Ü Ý ƒ´·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H Ü Ý.‚¤ƒµ „À+„À-„ƒµƒµƒ´Ü݃´ƒ´ƒ´ƒ¶UPƒ¶ƒ¶,‚¥ƒ·UPÞ‚Ÿ$ ßNƒ·$ à€Æƒ·$ ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  5ßàÿÿÿÿÿ 3ßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ·  5ßàÿÿÿÿÿ  3ßà  2ßà.‚¦ƒ¸ „›7„›9„ƒ¸ƒ¸ƒ·Þßà ƒ·  5ßàÿÿÿÿÿ  3ßà  2ßà.‚¦ƒ¹ „›7„›9„ƒ¹ƒ¹ƒ·Þßà ƒ·  6ßàÿÿÿÿÿ 4ßà ƒ··z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ß à ƒ··z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ß à.‚¦ƒº „›7„›9„ƒºƒºƒ·Þßàƒ·ƒ·ƒ·ƒ·ƒ·ƒ»UPƒ»ƒ»,‚§ƒ¼UPáNƒ¼$ â€Æƒ¼$ ƒ¼ 5áâ ƒ¼ 5áâ ƒ¼ 5áâ ƒ¼ 5áâ ƒ¼  5áâ ƒ¼  5áâ ƒ¼ 6áâ ƒ¼ 6áâ ƒ¼ 6áâ ƒ¼ 6áâ ƒ¼ 6áâ ƒ¼ 5áâ ƒ¼  5áâ ƒ¼  5áâ ƒ¼ 5áâ ƒ¼·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â á â.€Òƒ½ „Ê,„Ê.„ƒ½ƒ½ƒ¼á⃼ƒ¼ƒ¼ƒ¾UPƒ¾ƒ¾,‚¨ƒ¿UPãNƒ¿$ 䀯ƒ¿$ ƒ¿ 3ãä ƒ¿ 3ãä ƒ¿ 3ãä ƒ¿ 3ãä ƒ¿  3ãä ƒ¿  3ãä ƒ¿ 3ãä ƒ¿ 4ãä ƒ¿ 4ãä ƒ¿ 4ãä ƒ¿ 4ãä ƒ¿ 4ãä ƒ¿  3ãä ƒ¿  3ãä ƒ¿ 3ãä ƒ¿·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ã ä.€ØƒÀ „Ñ/„Ñ1„ƒÀƒÀƒ¿ã䃿ƒ¿ƒ¿ƒÁUPƒÁƒÁ,‚©ƒÂUPåNƒÂ$ æ€ÆƒÂ$ ƒÂ 2 3åæ ƒÂ 2 3åæ ƒÂ 2 3åæ ƒÂ 2 3åæ ƒÂ  2 3åæ ƒÂ  2 3åæ ƒÂ 2 3åæ ƒÂ 2 4åæ ƒÂ 2 4åæ ƒÂ 2 4åæ ƒÂ 2 4åæ ƒÂ 2 4åæ ƒÂ  2 4åæ ƒÂ  2 4åæ ƒÂ 2 3åæ ƒÂ·z\V4à‰€Á‚ª·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â å æ.‚«ƒÃ „à/„à1„ƒÃƒÃƒÂåæƒÂƒÂƒÂƒÄUPƒÄƒÄ,‚¬ƒÅUPçNƒÅ$ è€ÆƒÅ$ ƒÅ 2 5çè ƒÅ 2 5çè ƒÅ 2 5çè ƒÅ 2 5çè ƒÅ  2 5çè ƒÅ  2 5çè ƒÅ 2 5çè ƒÅ 2 6çè ƒÅ 2 6çè ƒÅ 2 6çè ƒÅ 2 6çè ƒÅ 2 6çè ƒÅ  2 6çè ƒÅ  2 6çè ƒÅ 2 5çè ƒÅ·z\V4à‰€Á‚­·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ç è.‚®ƒÆ „Ø2„Ø4„ƒÆƒÆƒÅçèƒÅƒÅƒÅƒÇUPƒÇƒÇ,‚¯ ƒÈ ‡ç4‡ç6„éNƒÈ$ ê€ÆƒÈ$ ƒÈ ·z\V4à‰‚°‚±·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   é  ê ƒÈ ·z\V4à‰‚°‚±·z\V4à‰‚…·z\V4à‰‚…·z\V4à‰‚…   é  ê ƒÈ 5éê ƒÈ 5éê ƒÈ 5éê ƒÈ 5éê ƒÈ  5éê ƒÈ  5éê ƒÈ 6éê ƒÈ 6éê ƒÈ 6éê ƒÈ 6éê ƒÈ 6éê ƒÈ 5éê ƒÈ  5éê ƒÈ  5éê ƒÈ 5éê ƒÈ·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â é ê.€ÒƒÉ „Ê,„Ê.„ƒÉƒÉƒÈéêéêƒÈƒÈƒÈƒÈƒÈƒÈƒÈƒÊ ‡ç4‡ç6„ƒÊƒÊƒÊ,‚² ƒË ‡ì4‡ì6„ëNƒË$ ì€ÆƒË$ ƒË ·z\V4à‰‚°‚³·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   ë  ì ƒË ·z\V4à‰‚°‚³·z\V4à‰‚…·z\V4à‰‚…·z\V4à‰‚…   ë  ì ƒË 5ëì ƒË 5ëì ƒË 5ëì ƒË 5ëì ƒË  5ëì ƒË  5ëì ƒË 6ëì ƒË 6ëì ƒË 6ëì ƒË 6ëì ƒË 6ëì ƒË 5ëì ƒË  5ëì ƒË  5ëì ƒË 5ëì ƒË·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ë ì.€ÒƒÌ „Ê,„Ê.„ƒÌƒÌƒËëììëƒËƒËƒËƒËƒËƒËƒËƒÍ ‡ì4‡ì6„ƒÍƒÍƒÍ,‚´ƒÎUPíNƒÎ$ î€ÆƒÎ$ .‚µƒÏ ƒw-ƒw/„ƒÏƒÏƒÎíîƒÎƒÎƒÎƒÐUPƒÐƒÐ,‚¶ƒÑUPïNƒÑ$ .‚·ƒÒ ƒ}*ƒ},„ƒÒƒÑïƒÑƒÓUPƒÓ,‚¸,‚¹,‚º,‚»ƒÔUPðNƒÔ$ ƒÔ ð ƒÔ ð ƒÔ  ð ƒÔ ð ƒÔ ð ƒÔ  ð ·z\V4à‰s·z\V4à‰H·z\V4à‰sð.ƒÕUPƒÕƒÔðƒÔƒÖUPƒÖ,‚¼ƒ×UPñ‚½$ òNƒ×$ ƒ× ò ƒ× ò ƒ×  ò ƒ× ò ƒ× ò ƒ×  ò ·z\V4à‰s·z\V4à‰H·z\V4à‰sò.‚¾ƒØUPƒØƒ×ñòƒ×ƒ×ƒÙUPƒÙ,‚¿ƒÚUPó‚Ÿ$ ôNƒÚ$ ƒÚ ô ƒÚ ô ƒÚ  ô ƒÚ ô ƒÚ ô ƒÚ  ô ·z\V4à‰s·z\V4à‰H·z\V4à‰sô.‚ÀƒÛ ‡j1‡j3„ƒÛƒÚóôƒÚƒÚƒÜUPƒÜ,‚ÁƒÝ ˆ3/ˆ31„ 5ƒÝ·z\V4à‰€ý)5ƒÝƒÞ€þP„ ƒÞõ€ÿ5ƒÝ. öNƒÝ, ƒÝ ö ƒÝ ö ƒÝ  ö ƒÝ ö ƒÝ ö ƒÝ  ö ·z\V4à‰s·z\V4à‰H·z\V4à‰sö.ƒßUPƒßƒÝö5ƒÝƒà€þP„Nƒà€Æƒà÷€ÿ5ƒÝ. øNƒÝ, ù€ÆƒÝ, ƒÝ 2øù ƒÝ 2øù ƒÝ 2øù ƒÝ 2øù ƒÝ  2øù ƒÝ  2øù ƒÝ 2øù ƒÝ 2øù ƒÝ 2øù ƒÝ 2øù ƒÝ  2øù ƒÝ  2øù ƒÝ 2øù ƒÝ 2øù ƒÝ 2øù ƒÝ·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ø ù ƒÝ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ø ù.ƒá †c2†c4„ƒáƒáƒÝøù5ƒÝƒâ ˆ3/ˆ31„5ƒâ,‚ƒ㠈46ˆ48„ú‚½$ 5ƒã·z\V4à‰€ý)5ƒãƒä€þP„ ƒäû€ÿ5ƒã. üNƒã, ƒã ü ƒã ü ƒã  ü ƒã ü ƒã ü ƒã  ü ·z\V4à‰s·z\V4à‰H·z\V4à‰sü.‚¾ƒåUPƒåƒãúü5ƒãƒæ€þP„Nƒæ€Æƒæý€ÿ5ƒã. þNƒã, ÿ€Æƒã, ƒã 2þÿ ƒã 2þÿ ƒã 2þÿ ƒã 2þÿ ƒã  2þÿ ƒã  2þÿ ƒã 2þÿ ƒã 2þÿ ƒã 2þÿ ƒã 2þÿ ƒã  2þÿ ƒã  2þÿ ƒã 2þÿ ƒã 2þÿ ƒã 2þÿ ƒã·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â þ ÿ ƒã·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â þ ÿ.ƒç †c2†c4„ƒçƒçƒãþÿ5ƒã5ƒãƒè ˆ46ˆ48„5ƒè,€÷,‚Ãƒé ˆŽ$ˆŽ&„ƒê‚Ä ˆŽ*ˆŽ,„ƒé‚‚Ńé$ ƒêƒê ƒê‚ =ƒêƒê &ƒé‚ƒêƒéƒêƒë ˆŽ$ˆŽ&„ƒì‚Ä ˆŽ*ˆŽ,„ƒëƒëƒì,‚ƃí‚Ä ˆ’$ˆ’&„ƒîƒî ˆ’*ˆ’,„‚€Ýƒí$ ƒíƒí ƒî‚ =ƒîƒî &ƒí‚ƒîƒíƒîƒï‚Ä ˆ’$ˆ’&„ƒðƒð ˆ’*ˆ’,„ƒïƒð,‚ǃñ‚È ˆ™8ˆ™@‚V $  ƒñ‚ƒñ ƒñƒò‚È ˆ™8ˆ™@ ƒò,‚Ƀó‚È ˆš>ˆšF‚V $   ƒó‚ ƒó  ƒóƒô‚È ˆš>ˆšF  ƒô,‚ʃõ‚È ˆ›>ˆ›F‚V$  €°ƒõ‚€°ƒõ€°ƒõƒö‚È ˆ›>ˆ›F€°ƒö,‚̃÷‚È ˆœ4ˆœ<‚V$  €±ƒ÷‚€±ƒ÷€±ƒ÷ƒø‚È ˆœ4ˆœ<€±ƒø,‚΃ù‚È ˆ8ˆ@‚V$  €²ƒù‚€²ƒù€²ƒùƒú‚È ˆ8ˆ@€²ƒú,‚Ѓû‚È ˆž8ˆž@‚V$  €³ƒû‚€³ƒû€³ƒûƒü‚È ˆž8ˆž@€³ƒü,‚Òƒý‚È ˆŸ8ˆŸ@‚V $  €´ƒý‚€´ƒý €´ƒýƒþ‚È ˆŸ8ˆŸ@ €´ƒþ,‚“,‚•,‚Ô,‚Õ,€Å,‚Ö,‚׃ÿ ‰J!‰J"„ƒÿ€±ƒÿ ƒÿ  ƒÿ  ƒÿ   ƒÿ  ƒÿ ƒÿ ƒÿ  ƒÿ  ƒÿ ƒÿ ƒÿ ƒÿ ƒÿ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ƒÿƒÿƒÿ€±ƒÿ,€Å„ ‰G ‰G"„„ƒÿƒÿ„ ‰J!‰J"„„€±„„,‚Ø„ ‰^ ‰^!„„‚Ù„ „  „ ÿð? „ ÿ€?  „  „ „ „  „  „ „ „  „ „ „·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    „„„‚Ù„,‚Ö„ ‰H‰H!„„„„„ ‰^ ‰^!„„‚Ù„„,€ê,€Û„ ‰„!‰„"„„€Û„„‚ N„$ ‚ K$ „   ‚    ‚ „   ‚    ‚ „·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ‚ ·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á‚ „„„€Û„„‚ ‚ ,€ê„ ‰‚‰‚!„„„„‚ ‚ „„„„„ ‰„!‰„"„„€Û„„„„,‚Ú,€É,‚Û,‚Üu8  ‚݂ހæ€Îv€ÑHº¤ †.‚µ.‚·„ ƒ}*ƒ},„‚ N„$ ·z\V4à‰‚ß·z\V4à‰€ý·z\V4à‰H &„‚ „„  ƒ}*ƒ},„„ .‚¦.‚¤.€Ò.€Ø.‚®.‚«..‚.‚ ..‚¾.‚À.‚à„ €ÊUP„ €ËUP‚ ‚á$ ‚ ‚â„ „ , ‚‚ã„ $  „ „ ‚ ‚‚ä„ $  „ „ ‚ ‚‚å, „  ‚ „  ‚ „   ‚ „  ‚ „  ‚ „   ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„  ‡j1‡j3„„ „ ‚ ‚    ‚ ‚ „  ‚ „  ‚ „   ‚ „  ‚ „  ‚ „   ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„  ‡j1‡j3„„ „ ‚ ‚„ „ „ „ „€ÊUP„€ËUP„„.‚æ„€ÊUP„€ËUP„‚UP‚‚á$ ‚‚â„„„, ‚‚ã„$  „„„‚‚‚ä„$  „„„‚‚‚ç„$  „„„‚‚‚å, ‚‚å, „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚„„„„„„„€ÊUP„€ËUP„‚UP„„„.‚è#„€ÊUP„€ËUP„‚UP„‚!UP‚‚á$ ‚‚â„„„„, ‚‚ã„$  „„„„‚‚‚ä„$  „„„„‚‚‚ç„$  „„„„‚‚‚é„$  „„„„‚‚‚å, ‚‚å, „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚    ‚ ‚‚ ‚å, „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„ ‡j1‡j3„„„‚‚    ‚  ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚À„  ‡j1‡j3„„ „‚‚„„„„„„„„„!€ÊUP„"€ËUP„#‚UP„$‚!UP„!„"„#„$.‚ê-„%€ÊUP„&€ËUP„'‚UP„(‚!UP„)‚#UP‚!‚á$ ‚"‚â„%„&„'„(„), ‚#‚ã„%$  „%„&„'„(„)‚"‚$‚ä„&$  „%„&„'„(„)‚"‚%‚ç„'$  „%„&„'„(„)‚"‚&‚é„($  „%„&„'„(„)‚"‚'‚ë„)$  „%„&„'„(„)‚"‚(‚å, ‚)‚å, ‚*‚å, „% ‚# „% ‚# „%  ‚# „% ‚# „% ‚# „%  ‚# ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚#.‚À„* ‡j1‡j3„„*„%‚!‚#    ‚* ‚* „& ‚$ „& ‚$ „&  ‚$ „& ‚$ „& ‚$ „&  ‚$ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚$.‚À„+ ‡j1‡j3„„+„&‚!‚$    ‚) ‚)‚+‚å, „' ‚% „' ‚% „'  ‚% „' ‚% „' ‚% „'  ‚% ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚%.‚À„, ‡j1‡j3„„,„'‚!‚%    ‚+ ‚+ „( ‚& „( ‚& „(  ‚& „( ‚& „( ‚& „(  ‚& ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚&.‚À„- ‡j1‡j3„„-„(‚!‚&    ‚( ‚( „) ‚' „) ‚' „)  ‚' „) ‚' „) ‚' „)  ‚' ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚'.‚À„. ‡j1‡j3„„.„)‚!‚'„%„&„'„(„)„%„&„'„(„)„/€ÊUP„0€ËUP„1‚UP„2‚!UP„3‚#UP„/„0„1„2„3.‚ì„4€ÊUP„5€ËUP‚,‚á$ ‚-‚â„4„5, ‚.‚â„4„5, ‚/‚ã„4$  „4„5‚-‚0‚ä„5$  „4„5‚-‚1‚í„4$  „4„5‚.‚2‚î„5$  „4„5‚. „4 2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4  2‚/‚1 „4  2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4  2‚/‚1 „4  2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4 2‚/‚1 „4·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚/ ‚1 „4·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚/ ‚1.‚ „6 †il†in„„6„6„4‚,‚/‚1 „5 2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5  2‚0‚2 „5  2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5  2‚0‚2 „5  2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5 2‚0‚2 „5·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚0 ‚2 „5·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚0 ‚2.‚ „7 †il†in„„7„7„5‚,‚0‚2„4„5„4„5„4„5„4„5„4„5„8€ÊUP„9€ËUP„8„9„8„9.‚ï,„:€ÊUP„;€ËUP„<‚UP‚3‚á$ ‚4‚â„:„;„<, ‚5‚â„:„;„<, ‚6‚ã„:$  „:„;„<‚4‚7‚ä„;$  „:„;„<‚4‚8‚ç„<$  „:„;„<‚4‚9‚í„:$  „:„;„<‚5‚:‚î„;$  „:„;„<‚5‚;‚ð„<$  „:„;„<‚5 „: 2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „:  2‚6‚9 „:  2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „:  2‚6‚9 „:  2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „: 2‚6‚9 „:·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚6 ‚9 „:·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚6 ‚9.‚ „= †il†in„„=„=„:‚3‚6‚9 „; 2‚7‚: „; 2‚7‚: „; 2‚7‚: „; 2‚7‚: „;  2‚7‚: „;  2‚7‚: „; 2‚7‚: „; 2‚7‚: „; 2‚7‚: „; 2‚7‚: „;  2‚7‚: „;  2‚7‚: „; 2‚7‚: „; 2‚7‚: „; 2‚7‚: „;·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚7 ‚: „;·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚7 ‚:.‚ „> †il†in„„>„>„;‚3‚7‚: „< 2‚8‚; „< 2‚8‚; „< 2‚8‚; „< 2‚8‚; „<  2‚8‚; „<  2‚8‚; „< 2‚8‚; „< 2‚8‚; „< 2‚8‚; „< 2‚8‚; „<  2‚8‚; „<  2‚8‚; „< 2‚8‚; „< 2‚8‚; „< 2‚8‚; „<·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚8 ‚; „<·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚8 ‚;.‚ „? †il†in„„?„?„<‚3‚8‚;„:„;„<„:„;„<„:„;„<„:„;„<„:„;„<„@€ÊUP„A€ËUP„B‚UP„@„A„B„@„A„B.‚ñ<„C€ÊUP„D€ËUP„E‚UP„F‚!UP‚<‚á$ ‚=‚â„C„D„E„F, ‚>‚â„C„D„E„F, ‚?‚ã„C$  „C„D„E„F‚=‚@‚ä„D$  „C„D„E„F‚=‚A‚ç„E$  „C„D„E„F‚=‚B‚é„F$  „C„D„E„F‚=‚C‚í„C$  „C„D„E„F‚>‚D‚î„D$  „C„D„E„F‚>‚E‚ð„E$  „C„D„E„F‚>‚F‚ò„F$  „C„D„E„F‚> „C 2‚?‚C „C 2‚?‚C „C 2‚?‚C „C 2‚?‚C „C  2‚?‚C „C  2‚?‚C „C 2‚?‚C „C 2‚?‚C „C 2‚?‚C „C 2‚?‚C „C  2‚?‚C „C  2‚?‚C „C 2‚?‚C „C 2‚?‚C „C 2‚?‚C „C·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚? ‚C „C·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚? ‚C.‚ „G †il†in„„G„G„C‚<‚?‚C „D 2‚@‚D „D 2‚@‚D „D 2‚@‚D „D 2‚@‚D „D  2‚@‚D „D  2‚@‚D „D 2‚@‚D „D 2‚@‚D „D 2‚@‚D „D 2‚@‚D „D  2‚@‚D „D  2‚@‚D „D 2‚@‚D „D 2‚@‚D „D 2‚@‚D „D·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚@ ‚D „D·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚@ ‚D.‚ „H †il†in„„H„H„D‚<‚@‚D „E 2‚A‚E „E 2‚A‚E „E 2‚A‚E „E 2‚A‚E „E  2‚A‚E „E  2‚A‚E „E 2‚A‚E „E 2‚A‚E „E 2‚A‚E „E 2‚A‚E „E  2‚A‚E „E  2‚A‚E „E 2‚A‚E „E 2‚A‚E „E 2‚A‚E „E·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚A ‚E „E·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚A ‚E.‚ „I †il†in„„I„I„E‚<‚A‚E „F 2‚B‚F „F 2‚B‚F „F 2‚B‚F „F 2‚B‚F „F  2‚B‚F „F  2‚B‚F „F 2‚B‚F „F 2‚B‚F „F 2‚B‚F „F 2‚B‚F „F  2‚B‚F „F  2‚B‚F „F 2‚B‚F „F 2‚B‚F „F 2‚B‚F „F·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚B ‚F „F·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚B ‚F.‚ „J †il†in„„J„J„F‚<‚B‚F„C„D„E„F„C„D„E„F„C„D„E„F„C„D„E„F„C„D„E„F„K€ÊUP„L€ËUP„M‚UP„N‚!UP„K„L„M„N„K„L„M„N.‚óL„O€ÊUP„P€ËUP„Q‚UP„R‚!UP„S‚#UP‚G‚á$ ‚H‚â„O„P„Q„R„S, ‚I‚â„O„P„Q„R„S, ‚J‚ã„O$  „O„P„Q„R„S‚H‚K‚ä„P$  „O„P„Q„R„S‚H‚L‚ç„Q$  „O„P„Q„R„S‚H‚M‚é„R$  „O„P„Q„R„S‚H‚N‚ë„S$  „O„P„Q„R„S‚H‚O‚í„O$  „O„P„Q„R„S‚I‚P‚î„P$  „O„P„Q„R„S‚I‚Q‚ð„Q$  „O„P„Q„R„S‚I‚R‚ò„R$  „O„P„Q„R„S‚I‚S‚ô„S$  „O„P„Q„R„S‚I „O 2‚J‚O „O 2‚J‚O „O 2‚J‚O „O 2‚J‚O „O  2‚J‚O „O  2‚J‚O „O 2‚J‚O „O 2‚J‚O „O 2‚J‚O „O 2‚J‚O „O  2‚J‚O „O  2‚J‚O „O 2‚J‚O „O 2‚J‚O „O 2‚J‚O „O·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚J ‚O „O·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚J ‚O.‚ „T †il†in„„T„T„O‚G‚J‚O „P 2‚K‚P „P 2‚K‚P „P 2‚K‚P „P 2‚K‚P „P  2‚K‚P „P  2‚K‚P „P 2‚K‚P „P 2‚K‚P „P 2‚K‚P „P 2‚K‚P „P  2‚K‚P „P  2‚K‚P „P 2‚K‚P „P 2‚K‚P „P 2‚K‚P „P·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚K ‚P „P·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚K ‚P.‚ „U †il†in„„U„U„P‚G‚K‚P „Q 2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q  2‚L‚Q „Q  2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q  2‚L‚Q „Q  2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q 2‚L‚Q „Q·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚L ‚Q „Q·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚L ‚Q.‚ „V †il†in„„V„V„Q‚G‚L‚Q „R 2‚M‚R „R 2‚M‚R „R 2‚M‚R „R 2‚M‚R „R  2‚M‚R „R  2‚M‚R „R 2‚M‚R „R 2‚M‚R „R 2‚M‚R „R 2‚M‚R „R  2‚M‚R „R  2‚M‚R „R 2‚M‚R „R 2‚M‚R „R 2‚M‚R „R·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚M ‚R „R·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚M ‚R.‚ „W †il†in„„W„W„R‚G‚M‚R „S 2‚N‚S „S 2‚N‚S „S 2‚N‚S „S 2‚N‚S „S  2‚N‚S „S  2‚N‚S „S 2‚N‚S „S 2‚N‚S „S 2‚N‚S „S 2‚N‚S „S  2‚N‚S „S  2‚N‚S „S 2‚N‚S „S 2‚N‚S „S 2‚N‚S „S·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚N ‚S „S·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚N ‚S.‚ „X †il†in„„X„X„S‚G‚N‚S„O„P„Q„R„S„O„P„Q„R„S„O„P„Q„R„S„O„P„Q„R„S„O„P„Q„R„S„Y€ÊUP„Z€ËUP„[‚UP„\‚!UP„]‚#UP„Y„Z„[„\„]„Y„Z„[„\„].‚õ"„^€ÊUP„_€ËUP‚T‚á$ ‚U‚â„^„_, ‚V‚â„^„_, ‚W‚ã„^$  „^„_‚U‚X‚ä„_$  „^„_‚U‚Y‚í„^$  „^„_‚V‚Z‚î„_$  „^„_‚V‚[K$ „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  5‚W‚Yÿÿÿÿÿ 3‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^  5‚W‚Yÿÿÿÿÿ  3‚W‚Y  2‚W‚Y.‚¦„` „›7„›9„„`„`„^‚T‚W‚Y „^  5‚W‚Yÿÿÿÿÿ  3‚W‚Y  2‚W‚Y.‚¦„a „›7„›9„„a„a„^‚T‚W‚Y „^  6‚W‚Yÿÿÿÿÿ 4‚W‚Y „^·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚W ‚Y „^·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚W ‚Y.‚¦„b „›7„›9„„b„b„^‚T‚W‚Y  2 2‚[‚[ „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  5‚X‚Zÿÿÿÿÿ 3‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_  5‚X‚Zÿÿÿÿÿ  3‚X‚Z  2‚X‚Z.‚¦„c „›7„›9„„c„c„_‚T‚X‚Z „_  5‚X‚Zÿÿÿÿÿ  3‚X‚Z  2‚X‚Z.‚¦„d „›7„›9„„d„d„_‚T‚X‚Z „_  6‚X‚Zÿÿÿÿÿ 4‚X‚Z „_·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚X ‚Z „_·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚X ‚Z.‚¦„e „›7„›9„„e„e„_‚T‚X‚Z„^„_„^„_„^„_„^„_„^„_„f€ÊUP„g€ËUP„f„g„f„g.‚ö8„h€ÊUP„i€ËUP„j‚UP‚\‚á$ ‚]‚â„h„i„j, ‚^‚â„h„i„j, ‚_‚ã„h$  „h„i„j‚]‚`‚ä„i$  „h„i„j‚]‚a‚ç„j$  „h„i„j‚]‚b‚í„h$  „h„i„j‚^‚c‚î„i$  „h„i„j‚^‚d‚ð„j$  „h„i„j‚^‚eK$ „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  5‚_‚bÿÿÿÿÿ 3‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h  5‚_‚bÿÿÿÿÿ  3‚_‚b  2‚_‚b.‚¦„k „›7„›9„„k„k„h‚\‚_‚b „h  5‚_‚bÿÿÿÿÿ  3‚_‚b  2‚_‚b.‚¦„l „›7„›9„„l„l„h‚\‚_‚b „h  6‚_‚bÿÿÿÿÿ 4‚_‚b „h·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚_ ‚b „h·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚_ ‚b.‚¦„m „›7„›9„„m„m„h‚\‚_‚b  2 2‚e‚e‚fK$ „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  5‚`‚cÿÿÿÿÿ 3‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i  5‚`‚cÿÿÿÿÿ  3‚`‚c  2‚`‚c.‚¦„n „›7„›9„„n„n„i‚\‚`‚c „i  5‚`‚cÿÿÿÿÿ  3‚`‚c  2‚`‚c.‚¦„o „›7„›9„„o„o„i‚\‚`‚c „i  6‚`‚cÿÿÿÿÿ 4‚`‚c „i·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚` ‚c „i·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚` ‚c.‚¦„p „›7„›9„„p„p„i‚\‚`‚c  2 2‚f‚f „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  5‚a‚dÿÿÿÿÿ 3‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j  5‚a‚dÿÿÿÿÿ  3‚a‚d  2‚a‚d.‚¦„q „›7„›9„„q„q„j‚\‚a‚d „j  5‚a‚dÿÿÿÿÿ  3‚a‚d  2‚a‚d.‚¦„r „›7„›9„„r„r„j‚\‚a‚d „j  6‚a‚dÿÿÿÿÿ 4‚a‚d „j·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚a ‚d „j·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚a ‚d.‚¦„s „›7„›9„„s„s„j‚\‚a‚d„h„i„j„h„i„j„h„i„j„h„i„j„h„i„j„t€ÊUP„u€ËUP„v‚UP„t„u„v„t„u„v.‚÷N„w€ÊUP„x€ËUP„y‚UP„z‚!UP‚g‚á$ ‚h‚â„w„x„y„z, ‚i‚â„w„x„y„z, ‚j‚ã„w$  „w„x„y„z‚h‚k‚ä„x$  „w„x„y„z‚h‚l‚ç„y$  „w„x„y„z‚h‚m‚é„z$  „w„x„y„z‚h‚n‚í„w$  „w„x„y„z‚i‚o‚î„x$  „w„x„y„z‚i‚p‚ð„y$  „w„x„y„z‚i‚q‚ò„z$  „w„x„y„z‚i‚rK$ „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  5‚j‚nÿÿÿÿÿ 3‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w  5‚j‚nÿÿÿÿÿ  3‚j‚n  2‚j‚n.‚¦„{ „›7„›9„„{„{„w‚g‚j‚n „w  5‚j‚nÿÿÿÿÿ  3‚j‚n  2‚j‚n.‚¦„| „›7„›9„„|„|„w‚g‚j‚n „w  6‚j‚nÿÿÿÿÿ 4‚j‚n „w·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚j ‚n „w·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚j ‚n.‚¦„} „›7„›9„„}„}„w‚g‚j‚n  2 2‚r‚r‚sK$ „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  5‚k‚oÿÿÿÿÿ 3‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x  5‚k‚oÿÿÿÿÿ  3‚k‚o  2‚k‚o.‚¦„~ „›7„›9„„~„~„x‚g‚k‚o „x  5‚k‚oÿÿÿÿÿ  3‚k‚o  2‚k‚o.‚¦„ „›7„›9„„„„x‚g‚k‚o „x  6‚k‚oÿÿÿÿÿ 4‚k‚o „x·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚k ‚o „x·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚k ‚o.‚¦„€ „›7„›9„„€„€„x‚g‚k‚o  2 2‚s‚s‚tK$ „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  5‚l‚pÿÿÿÿÿ 3‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y  5‚l‚pÿÿÿÿÿ  3‚l‚p  2‚l‚p.‚¦„ „›7„›9„„„„y‚g‚l‚p „y  5‚l‚pÿÿÿÿÿ  3‚l‚p  2‚l‚p.‚¦„‚ „›7„›9„„‚„‚„y‚g‚l‚p „y  6‚l‚pÿÿÿÿÿ 4‚l‚p „y·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚l ‚p „y·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚l ‚p.‚¦„ƒ „›7„›9„„ƒ„ƒ„y‚g‚l‚p  2 2‚t‚t „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  5‚m‚qÿÿÿÿÿ 3‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z  5‚m‚qÿÿÿÿÿ  3‚m‚q  2‚m‚q.‚¦„„ „›7„›9„„„„„„z‚g‚m‚q „z  5‚m‚qÿÿÿÿÿ  3‚m‚q  2‚m‚q.‚¦„… „›7„›9„„…„…„z‚g‚m‚q „z  6‚m‚qÿÿÿÿÿ 4‚m‚q „z·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚m ‚q „z·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚m ‚q.‚¦„† „›7„›9„„†„†„z‚g‚m‚q„w„x„y„z„w„x„y„z„w„x„y„z„w„x„y„z„w„x„y„z„‡€ÊUP„ˆ€ËUP„‰‚UP„Š‚!UP„‡„ˆ„‰„Š„‡„ˆ„‰„Š.‚ød„‹€ÊUP„Œ€ËUP„‚UP„Ž‚!UP„‚#UP‚u‚á$ ‚v‚â„‹„Œ„„Ž„, ‚w‚â„‹„Œ„„Ž„, ‚x‚ã„‹$  „‹„Œ„„Ž„‚v‚y‚䄌$  „‹„Œ„„Ž„‚v‚z‚ç„$  „‹„Œ„„Ž„‚v‚{‚鄎$  „‹„Œ„„Ž„‚v‚|‚ë„$  „‹„Œ„„Ž„‚v‚}‚í„‹$  „‹„Œ„„Ž„‚w‚~‚$  „‹„Œ„„Ž„‚w‚‚ð„$  „‹„Œ„„Ž„‚w‚€‚ò„Ž$  „‹„Œ„„Ž„‚w‚‚ô„$  „‹„Œ„„Ž„‚w‚‚K$ „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  5‚x‚}ÿÿÿÿÿ 3‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹  5‚x‚}ÿÿÿÿÿ  3‚x‚}  2‚x‚}.‚¦„ „›7„›9„„„„‹‚u‚x‚} „‹  5‚x‚}ÿÿÿÿÿ  3‚x‚}  2‚x‚}.‚¦„‘ „›7„›9„„‘„‘„‹‚u‚x‚} „‹  6‚x‚}ÿÿÿÿÿ 4‚x‚} „‹·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚x ‚} „‹·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚x ‚}.‚¦„’ „›7„›9„„’„’„‹‚u‚x‚}  2 2‚‚‚‚‚ƒK$ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ 3‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ  3‚y‚~  2‚y‚~.‚¦„“ „›7„›9„„“„“„Œ‚u‚y‚~ „Œ  5‚y‚~ÿÿÿÿÿ  3‚y‚~  2‚y‚~.‚¦„” „›7„›9„„”„”„Œ‚u‚y‚~ „Œ  6‚y‚~ÿÿÿÿÿ 4‚y‚~ „Œ·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚y ‚~ „Œ·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚y ‚~.‚¦„• „›7„›9„„•„•„Œ‚u‚y‚~  2 2‚ƒ‚ƒ‚„K$ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  5‚z‚ÿÿÿÿÿ 3‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „  5‚z‚ÿÿÿÿÿ  3‚z‚  2‚z‚.‚¦„– „›7„›9„„–„–„‚u‚z‚ „  5‚z‚ÿÿÿÿÿ  3‚z‚  2‚z‚.‚¦„— „›7„›9„„—„—„‚u‚z‚ „  6‚z‚ÿÿÿÿÿ 4‚z‚ „·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚z ‚ „·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚z ‚.‚¦„˜ „›7„›9„„˜„˜„‚u‚z‚  2 2‚„‚„‚…K$ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ 3‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ  3‚{‚€  2‚{‚€.‚¦„™ „›7„›9„„™„™„Ž‚u‚{‚€ „Ž  5‚{‚€ÿÿÿÿÿ  3‚{‚€  2‚{‚€.‚¦„š „›7„›9„„š„š„Ž‚u‚{‚€ „Ž  6‚{‚€ÿÿÿÿÿ 4‚{‚€ „Ž·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚{ ‚€ „Ž·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚{ ‚€.‚¦„› „›7„›9„„›„›„Ž‚u‚{‚€  2 2‚…‚… „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  5‚|‚ÿÿÿÿÿ 3‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „  5‚|‚ÿÿÿÿÿ  3‚|‚  2‚|‚.‚¦„œ „›7„›9„„œ„œ„‚u‚|‚ „  5‚|‚ÿÿÿÿÿ  3‚|‚  2‚|‚.‚¦„ „›7„›9„„„„‚u‚|‚ „  6‚|‚ÿÿÿÿÿ 4‚|‚ „·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚| ‚ „·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚| ‚.‚¦„ž „›7„›9„„ž„ž„‚u‚|‚„‹„Œ„„Ž„„‹„Œ„„Ž„„‹„Œ„„Ž„„‹„Œ„„Ž„„‹„Œ„„Ž„„Ÿ€ÊUP„ €ËUP„¡‚UP„¢‚!UP„£‚#UP„Ÿ„ „¡„¢„£„Ÿ„ „¡„¢„£‚ùÑ ¤º†°€µ‚ú€µ‚û„¤ ‚é!‚é#„‚†N$  =„¤„¤‚†„¤„¤„¥ ‚é!‚é#„„¥€µ‚ü€µ‚ý„¦ ‚õ$‚õ&„‚‡N$  4 „¦‚‡„§ ‚õ$‚õ&„€µ€î€µ‚þ€µ‚ÿ€µƒ€µƒ‚ˆƒ$ ‚‰ƒ$ ‚Šƒ$ ‚‹ƒ$ ‚Œƒ$ ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã‚ˆ‚‰‚Š‚‹‚Œ€µƒ‚B$ ‚ŽK$ ·z\V4à‰sƒ·z\V4à‰H·z\V4à‰ƒ ‚‚Ž€µƒ „¨ ƒ &ƒ („‚#, ·z\V4à‰ƒ ƒ „¨„¨„¨„¨„© ƒ &ƒ („„©€µƒ „ª ƒ&ƒ(„‚x„ª$ ‚‘K$  ;„ª„ª‚‚‘„ª„ª„ª„ª„« ƒ&ƒ(„„«„«€µƒ „¬ ƒ&ƒ(„‚’x„¬$ ‚“K$ ‚”N„¬$  <„¬‚’‚“‚”„¬„¬„¬„¬„­ ƒ&ƒ(„„­„­€µƒ„® ƒ(ƒ*„‚•x„®$ ‚–b$ ‚—c$  ;„®„®‚•‚–‚—„®„®„®„®„®„¯ ƒ(ƒ*„„¯„¯€µƒ„° ƒ(ƒ*„‚˜x„°$ ‚™b$ ‚šc$ ‚›N„°$  <„°‚˜‚™‚š‚›„°„°„°„°„°„± ƒ(ƒ*„„±„±€µƒ„² ƒ3(ƒ3*„‚œx„²$ ‚b$ ‚žc$ ‚Ÿd$  ;„²„²‚œ‚‚ž‚Ÿ„²„²„²„²„²„²„³ ƒ3(ƒ3*„„³„³€µƒ„´ ƒ4(ƒ4*„‚ x„´$ ‚¡b$ ‚¢c$ ‚£d$ ‚¤N„´$  <„´‚ ‚¡‚¢‚£‚¤„´„´„´„´„´„´„µ ƒ4(ƒ4*„„µ„µ€µƒ„¶ ƒN(ƒN*„‚¥x„¶$ ‚¦b$ ‚§c$ ‚¨d$ ‚©h$  ;„¶„¶‚¥‚¦‚§‚¨‚©„¶„¶„¶„¶„¶„¶„¶„· ƒN(ƒN*„„·„·€µƒ„¸ ƒO(ƒO*„‚ªx„¸$ ‚«b$ ‚¬c$ ‚­d$ ‚®h$ ‚¯N„¸$  <„¸‚ª‚«‚¬‚­‚®‚¯„¸„¸„¸„¸„¸„¸„¸„¹ ƒO(ƒO*„„¹„¹ƒ|º¾°¼€¶ƒ‚°N$ ‚±€Æ$ ‚°‚±€¶ƒ‚²N$ ‚³€Æ$ ‚²‚³€¶ƒ‚´N$ ‚µ€Æ$ ‚´‚µ€¶ƒ‚¶N$ ‚·€Æ$ ‚¶‚·€¶ƒ„º ‚œ"‚œ$„‚¸N„º$ ‚¹€Ý$ ·z\V4à‰r)·z\V4à‰s‚Ý €·„º%‚¹€·„º„º€·„º„» ‚œ"‚œ$„„»€·„»€¶ƒ„¼ ‚¢"‚¢$„ ‚ºN„¼$ ‚»€Ý$ ·z\V4à‰r)·z\V4à‰s‚Ý €¸„¼%‚»€¸„¼„¼€¸„¼„½ ‚¢"‚¢$„ „½€¸„½ƒ¾Ê¼Àƒõ¾Ê¼À€¹ƒ€¹ƒ „¾ƒ!AA „‚¼#, „¾cƒ$·z\V4à‰ƒ%€±ƒ$·z\V4à‰ƒ%c€µ‚ú„¿ƒ&€þP„„¿„¾€¹ƒ  „¾„¾„Àƒ!AA „„À€¹ƒ'„Áƒ!EE„‚½#, „Ácƒ$·z\V4à‰ƒ%‚Ùƒ$·z\V4à‰ƒ%c€µ‚ú„ƒ&€þP„„„Á€¹ƒ  „Á„Á„Ã!EE„„À¹ƒ(„ă!I%I'„‚¾| $ „Äcƒ$·z\V4à‰ƒ%)·z\V4à‰Hc‚¾€µ‚ú„Ń&€þP„„ń¹ƒ   ‚¾„Ä „Ąƃ!I%I'„ „Æ€¹ƒ)„ǃ!M%M'„‚¿| $ „Çcƒ$·z\V4à‰ƒ%)·z\V4à‰ƒ*c‚¿€µ‚ú„ȃ&€þP„„Ȅǀ¹ƒ ‚¿„Ç „DŽɃ!M%M'„ „É€¹ƒ+€¹ƒ,nªIÊ]ÀÓpƒ-ƒ.„ÊUP‚ÀN$ €µ‚ú„Ë ‚á‚ᄄ˄ʂÀ„ʄʄÌUP„̃/„Í §§„‚ÁN„Í$  &„Í‚Á„̈́Π§§„„Îo„Ï ª,ª.„‚€Ý$  „ς„ττРª,ª.„„Ѓ0‚Ã1$ ·z\V4à‰ƒ2)·z\V4à‰s%‚Ã%%ƒ3ƒ4‚Äf$  2‚ĀЄÑUP‚ÅN„Ñ$ ‚ƀƄÑ$ „Ñ 5‚Å‚Æ „Ñ 5‚Å‚Æ „Ñ 5‚Å‚Æ „Ñ 5‚Å‚Æ „Ñ  5‚Å‚Æ „Ñ  5‚Å‚Æ „Ñ 6‚Å‚Æ „Ñ 6‚Å‚Æ „Ñ 6‚Å‚Æ „Ñ 6‚Å‚Æ „Ñ 6‚Å‚Æ „Ñ 5‚Å‚Æ „Ñ  5‚Å‚Æ „Ñ  5‚Å‚Æ „Ñ 5‚Å‚Æ „Ñ·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Å ‚Æ.€Ò„Ò „Ê,„Ê.„„҄҄тłƄфффÓUP„ӄӀׄÔUP‚ÇN„Ô$ ‚ȀƄÔ$ „Ô 3‚Ç‚È „Ô 3‚Ç‚È „Ô 3‚Ç‚È „Ô 3‚Ç‚È „Ô  3‚Ç‚È „Ô  3‚Ç‚È „Ô 3‚Ç‚È „Ô 4‚Ç‚È „Ô 4‚Ç‚È „Ô 4‚Ç‚È „Ô 4‚Ç‚È „Ô 4‚Ç‚È „Ô  3‚Ç‚È „Ô  3‚Ç‚È „Ô 3‚Ç‚È „Ô·z\V4à‰€Á€×·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Ç ‚È.€Ø„Õ „Ñ/„Ñ1„„ՄՄԂǂȄԄԄԄÖUP„Ö„Ö‚­„×UP‚ÉN„×$ ‚ʀƄ×$ „× 2 5‚É‚Ê „× 2 5‚É‚Ê „× 2 5‚É‚Ê „× 2 5‚É‚Ê „×  2 5‚É‚Ê „×  2 5‚É‚Ê „× 2 5‚É‚Ê „× 2 6‚É‚Ê „× 2 6‚É‚Ê „× 2 6‚É‚Ê „× 2 6‚É‚Ê „× 2 6‚É‚Ê „×  2 6‚É‚Ê „×  2 6‚É‚Ê „× 2 5‚É‚Ê „×·z\V4à‰€Á‚­·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚É ‚Ê.‚®„Ø „Ø2„Ø4„„؄؄ׂɂʄׄׄׄÙUP„لقª„ÚUP‚ËN„Ú$ ‚̀ƄÚ$ „Ú 2 3‚Ë‚Ì „Ú 2 3‚Ë‚Ì „Ú 2 3‚Ë‚Ì „Ú 2 3‚Ë‚Ì „Ú  2 3‚Ë‚Ì „Ú  2 3‚Ë‚Ì „Ú 2 3‚Ë‚Ì „Ú 2 4‚Ë‚Ì „Ú 2 4‚Ë‚Ì „Ú 2 4‚Ë‚Ì „Ú 2 4‚Ë‚Ì „Ú 2 4‚Ë‚Ì „Ú  2 4‚Ë‚Ì „Ú  2 4‚Ë‚Ì „Ú 2 3‚Ë‚Ì „Ú·z\V4à‰€Á‚ª·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Ë ‚Ì.‚«„Û „à/„à1„„ۄۄڂ˂̄ڄڄڄÜUP„܄܄ÝUP‚ÍN„Ý$ ‚΀Æ„Ý$ „Ý 2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý  2‚͂Π„Ý  2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý  2‚͂Π„Ý  2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý 2‚͂Π„Ý·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚Í ‚Î „Ý·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Í ‚Î.„Þ †c2†c4„„ބބ݂͂΄݄݄݄ßUP„߄߃5„àUP‚ÏN„à$ ‚ЀÆ„à$  2 „à 2‚ςР„à 2‚ςР„à 2‚ςР„à 2‚ςР„à  2‚ςР„à  2‚ςР„à 2‚ςР„à 2‚ςР„à 2‚ςР„à 2‚ςР„à  2‚ςР„à  2‚ςР„à 2‚ςР„à 2‚ςР„à 2‚ςР„à·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚Ï ‚Ð „à·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Ï ‚Ð.„á †c2†c4„„á„á„à‚ςЄà„à„à„âUP„â„âƒ6„ã ½½ „‚ÑN„ã$ ‚ҀƄã$ „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  5‚Ñ‚Òÿÿÿÿÿ 3‚Ñ‚Ò „ã  6‚Ñ‚Òÿÿÿÿÿ 4‚Ñ‚Ò „ã·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚Ñ ‚Ò „ã·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ‚Ñ ‚Ò.‚¤„ä „À+„À-„„ä„ä„ã‚т҄ã„ã„ã„å ½½ „„å„å€Ö„æUP‚ÓN„æ$ ‚ԀƄæ$ „æ ·z\V4à‰‚°‚³·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   ‚Ó  ‚Ô „æ ·z\V4à‰‚°‚³·z\V4à‰‚…·z\V4à‰‚…·z\V4à‰‚…   ‚Ó  ‚Ô „æ 5‚Ó‚Ô „æ 5‚Ó‚Ô „æ 5‚Ó‚Ô „æ 5‚Ó‚Ô „æ  5‚Ó‚Ô „æ  5‚Ó‚Ô „æ 6‚Ó‚Ô „æ 6‚Ó‚Ô „æ 6‚Ó‚Ô „æ 6‚Ó‚Ô „æ 6‚Ó‚Ô „æ 5‚Ó‚Ô „æ  5‚Ó‚Ô „æ  5‚Ó‚Ô „æ 5‚Ó‚Ô „æ·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Ó ‚Ô.€Ò„ç „Ê,„Ê.„„ç„ç„æ‚Ó‚Ô‚Ô‚Ó„æ„æ„æ„æ„æ„æ„æ„èUP„è„è„è€Í„éUP‚ÕN„é$ ‚րƄé$ „é ·z\V4à‰‚°‚±·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   ‚Õ  ‚Ö „é ·z\V4à‰‚°‚±·z\V4à‰‚…·z\V4à‰‚…·z\V4à‰‚…   ‚Õ  ‚Ö „é 5‚Õ‚Ö „é 5‚Õ‚Ö „é 5‚Õ‚Ö „é 5‚Õ‚Ö „é  5‚Õ‚Ö „é  5‚Õ‚Ö „é 6‚Õ‚Ö „é 6‚Õ‚Ö „é 6‚Õ‚Ö „é 6‚Õ‚Ö „é 6‚Õ‚Ö „é 5‚Õ‚Ö „é  5‚Õ‚Ö „é  5‚Õ‚Ö „é 5‚Õ‚Ö „é·z\V4à‰€Á€Ð·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ‚Õ ‚Ö.€Ò„ê „Ê,„Ê.„„ê„ê„é‚Õ‚Ö‚Õ‚Ö„é„é„é„é„é„é„é„ëUP„ë„ë„ëƒ7„ìUP‚׃1$ o„í ª,ª.„„í„ì·z\V4à‰ƒ2)·z\V4à‰s%‚ׄì„ì„îUP„îƒ8„ïUP‚؃9$ ‚Ùƒ:$ o„ð ª,ª.„„ð„ï·z\V4à‰r)·z\V4à‰s·z\V4à‰s‚ق؄ï„ï„ï„ñUP„ñƒ;„òUP‚Úƒ9$ o„ó ª,ª.„„ó„ò ·z\V4à‰€…)·z\V4à‰s ‚Ú„ò„ò„ôUP„ôƒ<„õUP‚Ûƒ1$ o„ö ª,ª.„„ö„õd·z\V4à‰ƒ>)·z\V4à‰sd‚Û„õ„õ„÷UP„÷ƒ?„øUP‚Ü#, €µ‚ú„ù ‚á‚á„„ù„ø 9e„ø„ø„úUP„úƒA„ûUP‚Ý#, €µ‚ú„ü ‚á‚á„„ü„û 9e„û„û„ýUP„ýƒB„þ€ÊUP„ÿ€ËUP‚Þ‚â„þ„ÿ,  „þ„ÿ‚Þ„þ„þ„ÿ„þ…€ÊUP…€ËUP………ƒC…€ÊUP…€ËUP‚߂ⅅ,  ……‚ß……………€ÊUP…€ËUP………ƒD…UP‚àƒE…, ……UP…ƒF…UP‚áN…$ €˜…‚ဘ……€˜…… UP… €˜… ƒG… UP‚âN€˜… $ ‚ã€Æ… $ €˜‚9… ‚â‚ã… €˜… … … UP€˜… … ƒH… UP‚äN€˜… $ €˜‚9… ‚ä… €˜… … … UP€˜… … ƒI…€ÊUP…€‡UP‚åN…$ ‚æV……$ ‚æ……‚å………………………€ÊUP…€‡UP…………ƒJ…€ÊUP…€ËUP…€‡UP‚ç‚ã…$ ‚è‚ä…$ ‚éV………$ ‚é………‚ç‚è………………………………€ÊUP…€ËUP…€‡UP………………ƒK…€ÊUP…€ËUP…‚UP…€‡UP‚ê‚ã…$ ‚ë‚ä…$ ‚ì‚ç…$ ‚íV…………$ ‚í…………‚ê‚ë‚ì………………………………………€ÊUP…€ËUP…‚UP…€‡UP……………………ƒL… UP…!€‡UP‚îV… …!$ ‚ïN… $ ‚î… …!‚ï…!… …!… …!… …!…"UP…#€‡UP…"…#…"…#ƒM…$€ÊUP…%€ËUP…&€‡UP‚ðV…$…%…&$ ‚ñ‚ã…$$ ‚ò‚ä…%$ ‚ð…$…%…&‚ñ‚ò…&…$…%…&…$…%…&…$…%…&…'€ÊUP…(€ËUP…)€‡UP…'…(…)…'…(…)ƒN…*€ÊUP…+€ËUP…,‚UP…-€‡UP‚óV…*…+…,…-$ ‚ô‚ã…*$ ‚õ‚ä…+$ ‚ö‚ç…,$ ‚ó…*…+…,…-‚ô‚õ‚ö…-…*…+…,…-…*…+…,…-…*…+…,…-….€ÊUP…/€ËUP…0‚UP…1€‡UP….…/…0…1….…/…0…1ƒO …2€ÊUP…3€ËUP…4‚UP‚÷V…2…3$ ‚øƒP…3…4$ ‚ùN…2$ ‚ø…3…4‚÷…2…3‚ù…4…2…4…3…4…2…4…2…3…3…4…2…4…5€ÊUP…6€ËUP…7‚UP…5…6…6…7…5…7ƒQ …8€ËUP…9‚UP…:€ÊUP‚úV…8…9$ ‚ûƒP…:…8$ ‚üN…:$ ‚ú…8…9‚û…:…8‚ü…9…:…9…:…8…:…9…8…9…:…8…:…9…;€ËUP…<‚UP…=€ÊUP…;…<…=…;…=…<ƒR‚ýN$ ‚þ€Æ$ ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s‚ý‚þƒS …>UP‚ÿN …>$ ƒ€Æ…>$ ‚ÿ€™‚?…>ƒ€™‚?…>€™‚?…>‚ÿ…>…>…>…> …>…>…>…?UP …?…?…?ƒT…@ ŽŽ„…@ƒT…@…@ƒN…@$ …@   ƒ …@   ƒ …@   ƒ …@   ƒ …@ ƒ …@ ƒ …@ ƒ …@ …@·z\V4à‰€ÁƒT·z\V4à‰€Á·z\V4à‰€Á ƒ…@ƒT…@…@ƒ…@…@…@…A ŽŽ„…AƒT…A…A…A…A8…B€Ê ŽŽ„…B…C8…B…C…D…C€Ë Ž$Ž%„…B…C8…B…C…D…D‚ Ž*Ž+„ƒN…B$ ƒ€Æ…C$ …C …B   ƒƒ …C …B   ƒƒ …C …B   ƒƒ …C …B   ƒƒ …C…B ƒƒ …C…B ƒƒ …C…B ƒƒ …C…B ƒƒ …C…B   ƒƒ …C…B  ƒƒ …C…B  ƒƒ …C…B   ƒƒ …C…B  ƒƒ …C…B …B·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒ ƒ …C…B …D·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ …B…B…B…C8…B…C…Dƒƒ,‚Ú…E€Ê ‰¯‰¯„…F€Ë ‰¯‰¯!„…G€‡ ‰¯"‰¯$„…E…F…G…B…C…Dƒƒ…D…C…D…B…C…D…H€Ê ŽŽ„…H…I8…H…I…J…I€Ë Ž$Ž%„…H…I8…H…I…J…J‚ Ž*Ž+„…H…I…J7…K€Ê Ž4Ž4„…K…L7…K…L…M…L€Ë Ž4$Ž4%„…K…L7…K…L…M…M‚ Ž4*Ž4+„ƒN…K$ ƒ€Æ…L$ …L …K   ƒƒ …L …K   ƒƒ …L …K   ƒƒ …L …K   ƒƒ …L…K ƒƒ …L…K ƒƒ …L…K ƒƒ …L…K ƒƒ …L…K   ƒƒ …L…K  ƒƒ …L…K   ƒƒ …L…K  ƒƒ …L…K …M·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ…K…L7…K…L…Mƒƒ…M…L…M…K…L…M…N€Ê Ž4Ž4„…N…O7…N…O…P…O€Ë Ž4$Ž4%„…N…O7…N…O…P…P‚ Ž4*Ž4+„…N…O…PƒU…Q€Ê ŽEŽE„…Q…RƒU…Q…R…S…R€Ë ŽE&ŽE'„…Q…RƒU…Q…R…S…S‚ ŽE,ŽE-„ƒN…Q$ ƒ€Æ…R$ …R …Q   ƒƒ …R …Q   ƒƒ …R …Q   ƒƒ …R …Q   ƒƒ …R…Q ƒƒ …R…Q ƒƒ …R…Q ƒƒ …R…Q ƒƒ …R…Q   ƒƒ …R…Q  ƒƒ …R…Q   ƒƒ …R…Q  ƒƒ …R…Q …S·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ …Q…Q…Q…RƒU…Q…R…Sƒƒ,‚Û…T€Ê ‰ü‰ü„…U€Ë ‰ü‰ü!„…V€‡ ‰ü"‰ü$„…T…U…V…Q…R…Sƒƒ…S…R…S…Q…R…S…W€Ê ŽEŽE„…W…XƒU…W…X…Y…X€Ë ŽE&ŽE'„…W…XƒU…W…X…Y…Y‚ ŽE,ŽE-„…W…X…YƒV…Z€Ê ŽZŽZ„…Z…[ƒV…Z…[…\…[€Ë ŽZ&ŽZ'„…Z…[ƒV…Z…[…\…\‚ ŽZ,ŽZ-„ƒN…Z$ ƒ €Æ…[$ …[ …Z   ƒƒ …[ …Z   ƒƒ …[ …Z   ƒƒ …[ …Z   ƒƒ …[…Z  ƒƒ …[…Z  ƒƒ …[…Z ƒƒ …[…Z  ƒƒ …[…Z   ƒƒ …[…Z   ƒƒ …[…Z   ƒƒ …[…Z   ƒƒ …[…Z …\·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ …Z…[ƒV…Z…[…\ƒƒ …\…[…\…Z…[…\…]€Ê ŽZŽZ„…]…^ƒV…]…^…_…^€Ë ŽZ&ŽZ'„…]…^ƒV…]…^…_…_‚ ŽZ,ŽZ-„…]…^…_ƒW…`€Ê ŽkŽk„…`…aƒW…`…a…b…a€Ë Žk&Žk'„…`…aƒW…`…a…b…b‚ Žk,Žk-„ƒ N…`$ ƒ €Æ…a$ …a …`    ƒ ƒ …a …`    ƒ ƒ …a …`    ƒ ƒ …a …`    ƒ ƒ …a…`  ƒ ƒ …a…`  ƒ ƒ …a…`  ƒ ƒ …a…`  ƒ ƒ …a…`    ƒ ƒ …a…`   ƒ ƒ …a…`    ƒ ƒ …a…`   ƒ ƒ …a…` …b·z\V4à‰€ÁƒW·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ  ƒ …`…aƒW…`…a…bƒ ƒ …b…a…b…`…a…b…c€Ê ŽkŽk„…c…dƒW…c…d…e…d€Ë Žk&Žk'„…c…dƒW…c…d…e…e‚ Žk,Žk-„…c…d…eƒX…f Ž|Ž|„…fƒX…f…fƒ N…f$ …f ƒ …f ƒ …f ƒ …f ƒ …fƒ …fƒ …fƒ …fƒ …fƒ …fƒ …fƒ …fƒ …fƒ …fƒX…f…fƒ …f…f…f…g Ž|Ž|„…gƒX…g…g…g…gƒY…h ŽŽ„…hƒY…h…hƒ N…h$ ƒK$ …h  ƒ   ƒ …h ƒ   ƒ …h   ƒ   ƒ? …h ƒ   ƒ? …h ƒ ƒ …h ƒ ƒ …h   ƒ   ƒ …h  ƒ   ƒ …h   ƒ   ƒ …h  ƒ   ƒ…hƒY…h…hƒ ƒ…h…h…h…h…i ŽŽ„…iƒY…i…i…i…iƒZ…j ŽŽ„…jƒZ…j…jƒN…j$ ƒK$ …j   ƒ  ƒ …j ƒ  ƒ …j   ƒ  ƒ? …j ƒ  ƒ? …j ƒƒ …j ƒƒ …j   ƒ  ƒ …j  ƒ  ƒ …j   ƒ  ƒ …j  ƒ  ƒ…jƒZ…j…jƒƒ…j…j…j…j…k ŽŽ„…kƒZ…k…k…k…kƒ[…l ޫޫ„…lƒ[…l…l…lƒN…l$ ƒ€Æ…l$ …l    ƒƒ …l    ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ …l  ƒƒ…lƒ[…l…l…lƒƒ…l…l…l…l…l…l…m ޫޫ„…mƒ[…m…m…m…m…m…mƒ\…n ޹޹„…nƒ\…n…n…nƒN…n$ ƒ€Æ…n$ …n    ƒƒ …n    ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ …n  ƒƒ…nƒ\…n…n…nƒƒ…n…n…n…n…n…n…o ޹޹„…oƒ\…o…o…o…o…o…oƒ]…p ŽÇŽÇ„…pƒ]…p…p…pƒN…p$ ƒ€Æ…p$ …p   ƒƒ …p   ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ …p ƒƒ…pƒ]…p…p…pƒƒ…p…p…p…p…p…p…q ŽÇŽÇ„…qƒ]…q…q…q…q…q…qƒ^…r ŽÕŽÕ„…rƒ^…r…rƒN…r$ …r   ƒ …r   ƒ …r ƒ …r ƒ …r ƒ …r ƒ …r   ƒ …r  ƒ …r   ƒ …r  ƒ…rƒ^…r…rƒ…r…r…r…s ŽÕŽÕ„…sƒ^…s…s…s…sƒ_ƒN€˜$ €˜‚9ƒ  €˜‚9ƒ€˜ƒ`ƒN€˜$ €˜‚9ƒ  €˜‚9ƒ€˜ƒa€¿…t „…t‚„…tƒN…t$ …tƒB,  ƒ ,‚“ƒ …t  ƒ …t  ƒ …t  ƒ …t  ƒ …t ƒ …t ƒ …t ƒ …t ƒ …t ƒ …t ƒ …t ƒ …t ƒ …t ƒ…t‚„…tƒ…t…u „…u‚„…u…u€¾…v ##„…v‚„…vƒN…v$ …vƒB,  ƒ ,‚•ƒ …v  ƒ …v  ƒ …v  ƒ …v  ƒ …v ƒ …v ƒ …v ƒ …v ƒ …v ƒ …v ƒ …v ƒ …v ƒ …v ƒ…v‚„…vƒ…v…w ##„…w‚„…w…w€½…x 66 „…x‚„…xƒN…x$ …xƒB,  ƒ ,‚“ƒ …x  ƒ …x  ƒ …x  ƒ …x  ƒ …x ƒ …x ƒ …x ƒ …x ƒ …x ƒ …x ƒ …x ƒ …x ƒ …x ƒ…x‚„…xƒ…x…y 66 „…y‚„…y…y€¼…z II„…z‚„…zƒ N…z$ …zƒ!B,  ƒ  ,‚•ƒ! …z  ƒ …z  ƒ …z  ƒ …z  ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z ƒ …z‚„…zƒ …z…{ II„…{‚„…{…{€¹…| \\ „…|‚„…|ƒ"N…|$ …|,‚“ ƒ" …|  ƒ" …|  ƒ" …|  ƒ" …| ƒ" …|  ƒ" …| ƒ" …| ƒ" …| ƒ" …| ƒ" …| ƒ" …| ƒ" …| ƒ" …| ƒ"…|‚„…|ƒ"…|…} \\ „…}‚„…}…}{…~ ww„…~‚„…~ ƒ#N…~$ …~,‚• ƒ# …~   ƒ# …~   ƒ# …~   ƒ# …~  ƒ# …~   ƒ# …~  ƒ# …~  ƒ# …~  ƒ# …~  ƒ# …~  ƒ# …~  ƒ# …~  ƒ# …~  ƒ#…~‚„…~ ƒ# …~ … ww„…‚„… … …€UP…€‚„…€ ƒ$N…€$ …€,‚• ƒ$ …€   ƒ$ …€   ƒ$ …€   ƒ$ …€  ƒ$ …€   ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$ …€  ƒ$…€‚„…€ ƒ$ …€ …UP…‚„… … ƒb…‚€‡ ““„ ƒ%N $ …‚…‚ …‚ƒ% =…‚…‚ & ƒ%…‚ …‚…ƒ€‡ ““„  …ƒƒc…„* –/–1„……, –2–4„ƒ&ƒd€½…„……$ …„……·z\V4à‰ƒfƒg…„………„ƒ&·z\V4à‰ƒfÆ…„…………ƒ&…„……€½…„………„………†* –/–1„…‡, –2–4„€½…†…‡…†…‡ƒh ÿð ƒi ÿøÿ ƒj ÿ€ ƒk ÿÀÿ €¸…ˆ §§ „…ˆ‚„…ˆƒ'N…ˆ$ …ˆ,‚Õ ƒ' …ˆ  ƒ' …ˆ  ƒ' …ˆ  ƒ' …ˆ  ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ' …ˆ ƒ'…ˆ‚„…ˆƒ'…ˆ…‰ §§ „…‰‚„…‰…‰€·…Š ÁÁ„…Š‚„…Š ƒ(N…Š$ …Š,‚Ô  ƒ( …Š   ƒ( …Š   ƒ( …Š   ƒ( …Š   ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ( …Š  ƒ(…Š‚„…Š ƒ( …Š …‹ ÁÁ„…‹‚„…‹ …‹ €µ…Œ Ø Ø!„…Œ‚„…Œ ƒ)N…Œ$ …Œ·z\V4à‰‚…‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚…  ƒ)€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b …Œ    ƒ) …Œ    ƒ) …Œ    ƒ) …Œ    ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ) …Œ   ƒ)…Œ‚„…Œ ƒ) …Œ … Ø Ø!„…‚„… … €³…Ž ìì„…Ž‚„…Ž ƒ*N…Ž$ …Ž·z\V4à‰‚‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚  ƒ*€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b …Ž    ƒ* …Ž    ƒ* …Ž    ƒ* …Ž    ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž   ƒ* …Ž·z\V4à‰€è‚‘·z\V4à‰€Á·z\V4à‰‚  ƒ*…Ž‚„…Ž ƒ* …Ž … ìì„…‚„… … €À…  !„…‚„…ƒ+N…$ …·z\V4à‰€Á‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰€Á ƒ+€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b … ·z\V4à‰€è€é·z\V4à‰‚·z\V4à‰€Á  ƒ+ … ·z\V4à‰€è€é·z\V4à‰‚…·z\V4à‰€Á  ƒ+ … ·z\V4à‰€è€é·z\V4à‰ƒ*·z\V4à‰€Á  ƒ+ … ·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á  ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒl·z\V4à‰€Á ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒ*·z\V4à‰€Á   ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒm·z\V4à‰€Á ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒn·z\V4à‰€Á ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒo·z\V4à‰€Á ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒp·z\V4à‰€Á ƒ+ …·z\V4à‰€è€é·z\V4à‰ƒn·z\V4à‰€Á  ƒ+ …·z\V4à‰€è€é·z\V4à‰€Ã·z\V4à‰€Á ƒ+ … ƒ+…‚„…ƒ+……‘  !„…‘‚„…‘…‘€»…’ #$„…’‚„…’ƒ,N…’$ …’ƒ-B,  ƒ,  ,‚Ô ƒ- …’   ƒ, …’   ƒ, …’   ƒ, …’   ƒ, …’  ƒ, …’ ƒ, …’  ƒ, …’  ƒ, …’  ƒ, …’  ƒ, …’  ƒ, …’ ƒ, …’  ƒ,…’‚„…’ƒ,…’…“ #$„…“‚„…“…“€º…” 2"2#„…”‚„…”ƒ.N…”$ …”ƒ/B,  ƒ.  ,‚Ô ƒ/ …”   ƒ. …”   ƒ. …”   ƒ. …”   ƒ. …”  ƒ. …”  ƒ. …”  ƒ. …”  ƒ. …”  ƒ. …”  ƒ. …”  ƒ. …” ƒ. …”  ƒ.…”‚„…”ƒ.…”…• 2"2#„…•‚„…•…•w…– JJ „ƒ0N…–$ …–ƒ1ƒq,  &…–ƒ0 ƒ1ƒ2ƒrf,  ffƒ1ƒ2ƒ1ƒ2 ƒ3Vf, ·z\V4à‰ƒtƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ3ab·z\V4à‰‚‚Ž·z\V4à‰‚bƒ4 , ·z\V4à‰€ýƒu·z\V4à‰sƒ4 …– ƒ5ƒv l   ƒ0·z\V4à‰‚ƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ5ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …– ƒ6ƒv l   ƒ0·z\V4à‰‚…ƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ6ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …– ƒ7ƒv l   ƒ0·z\V4à‰ƒ*ƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ7ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …– ƒ8ƒv l   ƒ0·z\V4à‰Hƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ8ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ9ƒvl  ƒ0·z\V4à‰ƒlƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ9ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ:ƒvl  ƒ0·z\V4à‰€ýƒu·z\V4à‰sƒ: …–ƒ;ƒvl  ƒ0·z\V4à‰ƒmƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ;ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ<ƒvl  ƒ0·z\V4à‰ƒnƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ<ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ=ƒvl  ƒ0·z\V4à‰ƒoƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ=ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ>ƒvl  ƒ0·z\V4à‰ƒlƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ>ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚b …–ƒ?ƒvl  ƒ0·z\V4à‰€ýƒu·z\V4à‰sƒ? …–ƒ@ƒvl  ƒ0·z\V4à‰€Ãƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒ@ƒPab·z\V4à‰‚‚Ž·z\V4à‰‚bƒAƒq,  &…–ƒ0 ƒAƒBƒrf,  ffƒAƒBƒAƒB ƒCVf, ·z\V4à‰ƒtƒu·z\V4à‰s·z\V4à‰‚ˆ·z\V4à‰sƒCab·z\V4à‰‚‚Ž·z\V4à‰‚bƒD , ·z\V4à‰€ýƒu·z\V4à‰sƒD…–…— JJ „…—€Ç…˜ ^^„…˜‚„…˜ƒEN…˜$ …˜·z\V4à‰ƒ ‚†·z\V4à‰s·z\V4à‰ƒ  ƒE …˜  ƒE …˜  ƒE …˜  ƒE …˜  ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE …˜ ƒE…˜‚„…˜ƒE…˜…™ ^^„…™‚„…™…™ƒw…šƒx ž#ž%„…›UPƒFƒy…š$ ƒGV…›$ ƒHƒzt …›ƒIz, ·z\V4à‰ƒ{ƒ|·z\V4à‰€ý·z\V4à‰€Â…šƒFƒHƒG…›…›ƒJz, ƒH·z\V4à‰ƒ{ƒ}·z\V4à‰€ý…šƒF…›…›…›…š…›…›…œƒx ž#ž%„…UP…œ……ƒ~ƒ…ž °°„·z\V4à‰ƒ€ƒ·z\V4à‰ƒ‚·z\V4à‰ƒ€g +h…žg…Ÿ °°„gƒ… …  ¶¶„ƒKƒ†g, ·z\V4à‰ƒ€ƒ·z\V4à‰ƒ‚·z\V4à‰ƒ€g +h…  ·z\V4à‰ƒ€ƒ‡·z\V4à‰€ÂƒK·z\V4à‰ƒ€ƒˆ·z\V4à‰ƒ€gƒKƒKgg…¡ ¶¶„gƒ‰ …¢ ºº„ :…¢…£ ºº„…¤ ¾¾„ƒLN…¤$ …¤ ƒL …¤ ƒL …¤  ƒL …¤ ƒL …¤ ƒL …¤  ƒL ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒL.…¥UP…¥…¤ƒL…¤…¦ ¾¾„…¦ƒŠ…§ Á0Á2„ƒM‚½$ ƒNN…§$ …§ ƒN …§ ƒN …§  ƒN …§ ƒN …§ ƒN …§  ƒN ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒN.‚¾…¨UP…¨…§ƒMƒN…§…§…© Á0Á2„…©ƒ‹…ªUPƒON…ª$ ƒO…ª…ª…ª…«UP…«…«ƒŒ…¬ ËË„·z\V4à‰ƒƒŽ·z\V4à‰ƒii…­ ËË„iƒ‘…® Î΄·z\V4à‰ƒƒ’·z\V4à‰ƒ“__…¯ Î΄_ƒ”…° ÑÑ„·z\V4à‰ƒŸ·z\V4à‰ƒ“__…± ÑÑ„_ƒ•…² ••„…²‚Ù…²…²…²8…²…²…²ƒPK…²$ ƒQL…²$ …² €Âƒ—  ƒP ƒQ …² €Âƒ˜       ƒP ÿð?   ƒQ …² €Âƒ™       ƒP ÿ€?   ƒQ …² €Âƒš       ƒP   ƒQ …²€Âƒ›  ƒP ƒQ …²€Âƒœ  ƒP ƒQ …²€Âƒ  ƒP  ƒQ …²€Âƒž  ƒP  ƒQ …²€ÂƒŸ  ƒP ƒQ …²€Âƒ   ƒP ƒQ …²€Âƒ¡  ƒP ƒQ …²€Âƒ¢  ƒP ƒQ …²€Âƒ£> ƒP ƒQ€Âƒ¤…³ ’é1’é3„…³…³…³…³…³…³ …³…² …²  …² ÿð? …² ÿ€?  …²  …² …² …²  …²  …² …² …²  …² …² …²·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    …²…²…²‚Ù…²,‚Ö…´ ‰H‰H!„…´…²ƒRN…², ƒS€Æ…², …² …²  , ƒRƒS …² …²   ƒRƒS …² …²   ƒRƒS …² …²  , ƒRƒS …²…² -ƒRƒS …²…² -ƒRƒS …²…² ,ƒRƒS …²…² -ƒRƒS …²…²  , ƒRƒS …²…²  -ƒRƒS …²…²  -ƒRƒS …²…²  , ƒRƒS …²…²  -ƒRƒS …²…² …²·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒR ƒS …²…² …²·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒR ƒS …²…²…²…²8…²…²…²ƒRƒS,€É…µ€Ê ‰Ö#‰Ö%„…¶€Ë ‰Ö&‰Ö(„…·€‡ ‰Ö)‰Ö+„…µ…¶…·…²…²…²ƒRƒS…²…²…²ƒPƒQ …²…² …²…²…² …²…¸ ••„…¸‚Ù…¸…¸…¸8…¸…¸…¸…¸…¸ …¸ƒ¥…¹ •• „…¹…º8…¹…º…¹…ºƒ¦ •)•*„…º€±…º…¹…º8…¹…º…¹ƒTK…¹$ ƒUƒ§…º$ ƒVL…¹$ …¹ €Âƒ—  ƒT ƒU ƒV …¹ €Âƒ˜       ƒT  ƒU  ƒV …¹ €Âƒ™       ƒT  ƒU  ƒV …¹ €Âƒš       ƒT  ƒU  ƒV …¹€Âƒ›  ƒT ƒU ƒV …¹€Âƒœ  ƒT ƒU ƒV …¹€Âƒ  ƒT ƒU ƒV …¹€Âƒž  ƒT ƒU ƒV …¹€ÂƒŸ  ƒT ƒU ƒV …¹€Âƒ   ƒT ƒU ƒV …¹€Âƒ¡  ƒT ƒU ƒV …¹€Âƒ¢  ƒT ƒU ƒV€Âƒ¨…»ƒ¦UP…¼ ’ê;’ê=„…»…¼…»…¼…¼…»…¼ …¼…º…¹ …º  …º  …º   …º  …º …º …º  …º  …º …º …º …º …º·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    …º…º…º€±…º,€Å…½ ‰G ‰G"„…½…ºƒWN…¹, ƒX€Æ…º, …º …¹  , ƒWƒX …º …¹   ƒWƒX …º …¹   ƒWƒX …º …¹  , ƒWƒX …º…¹ -ƒWƒX …º…¹ -ƒWƒX …º…¹ ,ƒWƒX …º…¹ -ƒWƒX …º…¹  , ƒWƒX …º…¹  -ƒWƒX …º…¹  -ƒWƒX …º…¹  , ƒWƒX …º…¹  -ƒWƒX …º…¹ …¹·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒW ƒX …º…¹ …¹·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒW ƒX …¹…¹…¹…º8…¹…º…¹ƒWƒX,€É…¾€Ê ‰Ö#‰Ö%„…¿€Ë ‰Ö&‰Ö(„…À€‡ ‰Ö)‰Ö+„…¾…¿…À…¹…º…¹ƒWƒX…¹…º…¹ƒTƒUƒV …¹…¹ …¹…º…¹ …¹…¹…º…¹ …¹…Á •• „…Á…Â8…Á…Â…Á…ƒ¦ •)•*„…€±…Â…Á…Â8…Á…Â…Á…Á…Â…Á …Áƒ©…à •!•!„…ê…ÅÃYN…Ã$ …Ã…à …Ã ·z\V4à‰‚°ƒª·z\V4à‰H·z\V4à‰H  ƒY …à ·z\V4à‰‚°ƒª·z\V4à‰‚·z\V4à‰‚   ƒY …à ·z\V4à‰‚°ƒª·z\V4à‰‚…·z\V4à‰‚…   ƒY …à ·z\V4à‰‚°ƒª·z\V4à‰ƒ*·z\V4à‰ƒ*   ƒY …ÃZN,  ƒY  2 5ƒZ ƒZƒ[€ˆ,  ƒZ  5ƒ[ o…Ä ª,ª.„…Äj·z\V4à‰ƒ¬)·z\V4à‰sj‚Þƒ[ …÷z\V4à‰‚°ƒª·z\V4à‰ƒl·z\V4à‰ƒl ƒY …÷z\V4à‰‚°ƒª·z\V4à‰ƒm·z\V4à‰ƒm ƒY …÷z\V4à‰‚°ƒª·z\V4à‰€Á·z\V4à‰€Á ƒY…ê…ÅÃY€Âƒ­…Å ”å>”å?…ŅŅÃY…Ã…Ã…Ã…Æ •!•!„…ƃª…ƅƅƅƃ®…Ç •'•'„…ǃ¯…Džǃ\N…Ç$ …Ç…Ç …Ç ·z\V4à‰‚°ƒ¯·z\V4à‰‚·z\V4à‰‚   ƒ\ …Ç    ·z\V4à‰‚°ƒ¯·z\V4à‰‚·z\V4à‰‚      ƒ\…ǃ¯…Džǃ\€Âƒ°…È ”æ?”æ@…ȅȅǃ\…Ç…Ç…Ç…É •'•'„…Ƀ¯…ɅɅɅɃ±…Ê •-•-„…ʃ²…ʅʃ]N…Ê$ …Ê…Ê …Ê ·z\V4à‰‚°ƒ²·z\V4à‰‚·z\V4à‰‚   ƒ] …Ê    ·z\V4à‰‚°ƒ²·z\V4à‰‚·z\V4à‰‚      ƒ]…ʃ²…ʅʃ]€Âƒ³…Ë ”ç?”ç@…˅˅ʃ]…Ê…Ê…Ê…Ì •-•-„…̃²…̅̅̅̃´…Í •3•3„…̓µ…̓ͅ^N…Í$ …Í…Í …Í ·z\V4à‰‚°ƒµ·z\V4à‰‚·z\V4à‰‚   ƒ^ …Í    ·z\V4à‰‚°ƒµ·z\V4à‰‚·z\V4à‰‚      ƒ^…̓µ…̓ͅ^€Âƒ¶…Î ”è?”è@…΅΅̓^…Í…Í…Í…Ï •3•3„…σµ…υυυσ·…Ð€Ê •9•9„…Ѓ¸…Ð…Ð…Ñ…Ñ€Ë •9+•9-„ƒ_N…Ð$ ƒ`€Æ…Ð$ …Ð…Ð …Ð ·z\V4à‰‚°ƒ¸·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   ƒ_  ƒ` …Ð    ·z\V4à‰‚°ƒ¸·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚      ƒ_     ƒ`…Ѓ¸…ЅЅу_ƒ`€Âƒ¹…Ò€Ê ”é@”éA…Ó€Ë ”éB”éC…҅҅ӅЅу_ƒ`…Ñ…Ð…Ñ…Ð…Ð…Ñ…Ô€Ê •9•9„…Ôƒ¸…Ô…Ô…Õ…Õ€Ë •9+•9-„…Ô…Ô…Õƒº…Ö •?•?„…Öƒ»…Ö…ÖƒaN…Ö$ …Ö…Ö …Ö ·z\V4à‰‚°ƒ»·z\V4à‰‚·z\V4à‰‚   ƒa …Ö    ·z\V4à‰‚°ƒ»·z\V4à‰‚·z\V4à‰‚      ƒa…Öƒ»…Ö…Öƒa€Âƒ¼…× ”êB”êC…×…×…Öƒa…Ö…Ö…Ö…Ø •?•?„…؃»…؅؅؅؃½…Ù •E•E„…Ùƒ¾…مكbN…Ù$ …Ù…Ù …Ù ·z\V4à‰‚°ƒ¾·z\V4à‰‚·z\V4à‰‚   ƒb …Ù    ·z\V4à‰‚°ƒ¾·z\V4à‰‚·z\V4à‰‚      ƒb…Ùƒ¾…مكb€Âƒ¿…Ú ”ë>”ë?…Ú…Ú…Ùƒb…Ù…Ù…Ù…Û •E•E„…Ûƒ¾…Û…Û…Û…ÛƒÀ…Ü •K•K„…܃Á…܅܃cN…Ü$ …Ü…Ü …Ü ·z\V4à‰‚°ƒÁ·z\V4à‰‚·z\V4à‰‚   ƒc …Ü    ·z\V4à‰‚°ƒÁ·z\V4à‰‚·z\V4à‰‚      ƒc…܃Á…܅܃c€ÂƒÂ…Ý ”ì@”ìA…݅݅܃c…Ü…Ü…Ü…Þ •K•K„…ÞƒÁ…Þ…Þ…Þ…Þ1…ß •Q!•Q"„…߃Å߅߃dN…ß$ …ß…ß …ß ·z\V4à‰‚°ƒÃ·z\V4à‰‚·z\V4à‰‚   ƒd …ß    ·z\V4à‰‚°ƒÃ·z\V4à‰‚·z\V4à‰‚      ƒd…߃Å߅߃d€ÂƒÄ…à ”íC”íD…à…à…߃d…ß…ß…ß…á •Q!•Q"„…áƒÃ…á…á…á…áƒÅ…â •W•W„…âƒÆ…â…âƒeN…â$ …â…â …â ·z\V4à‰‚°ƒÆ·z\V4à‰‚·z\V4à‰‚   ƒe …â    ·z\V4à‰‚°ƒÆ·z\V4à‰‚·z\V4à‰‚      ƒe…âƒÆ…â…âƒe€ÂƒÇ…ã ”î@”îA…ã…ã…âƒe…â…â…â…ä •W•W„…äƒÆ…ä…ä…ä…äƒÈ…å •]•]„…åƒÉ…åƒfN…å$ …å…å …å ·z\V4à‰‚°ƒÊ·z\V4à‰H·z\V4à‰H  ƒf …å ·z\V4à‰‚°ƒÊ·z\V4à‰ƒ*·z\V4à‰H  ƒf …å  5 ƒf ÿÿÿÿÿ  3 ƒf  …å·z\V4à‰‚°ƒÊ·z\V4à‰ƒl·z\V4à‰H ƒf …å·z\V4à‰‚°ƒÊ·z\V4à‰ƒm·z\V4à‰H ƒf …å ·z\V4à‰‚°ƒÊ·z\V4à‰‚·z\V4à‰H  ƒf …å ·z\V4à‰‚°ƒÊ·z\V4à‰‚·z\V4à‰H     ƒf …å·z\V4à‰‚°ƒÊ·z\V4à‰€Á·z\V4à‰H ƒf…åƒÉ…åƒf€ÂƒË…æ ”ï?”ï@…æ…åƒf…å…ç •]•]„…çƒÉ…ç…çƒÌ…è •c•c„…èƒÍ…è…èƒgN…è$ …è…è …è ·z\V4à‰‚°ƒÍ·z\V4à‰‚·z\V4à‰‚   ƒg …è    ·z\V4à‰‚°ƒÍ·z\V4à‰‚·z\V4à‰‚      ƒg…èƒÍ…è…èƒg€ÂƒÎ…é ”ð>”ð?…é…é…èƒg…è…è…è…ê •c•c„…êƒÍ…ê…ê…ê…êƒÏ…ë •i•i„…ëƒÐ…ë…ëƒhN…ë$ …ë…ë …ë ·z\V4à‰‚°ƒÐ·z\V4à‰‚·z\V4à‰‚   ƒh …ë    ·z\V4à‰‚°ƒÐ·z\V4à‰‚·z\V4à‰‚      ƒh…ëƒÐ…ë…ëƒh€ÂƒÑ…ì ”ñ@”ñA…ì…ì…ëƒh…ë…ë…ë…í •i•i„…íƒÐ…í…í…í…íƒÒ…î •o•o„…îƒÓ…î…ï… •o#•o$„ƒiN…î$ …î…î …î ·z\V4à‰‚°ƒÓ·z\V4à‰‚·z\V4à‰‚   ƒi …î    ·z\V4à‰‚°ƒÓ·z\V4à‰‚·z\V4à‰‚      ƒi…îƒÓ…î…ïƒi€ÂƒÔ…ð€Ê ”ò?”ò@…ñ€Ë ”òA”òB…ð…ñ…î…ïƒi…ï…î…ï…ò •o•o„…òƒÓ…ò…ó…ó€‡ •o#•o$„…ò…óƒÕ…ô •u•u„…ôƒÖ…ô…ôƒjN…ô$ …ô…ô …ô ·z\V4à‰‚°ƒÖ·z\V4à‰‚·z\V4à‰‚   ƒj …ô    ·z\V4à‰‚°ƒÖ·z\V4à‰‚·z\V4à‰‚      ƒj…ôƒÖ…ô…ôƒj€Âƒ×…õ ”ó>”ó?…õ…õ…ôƒj…ô…ô…ô…ö •u•u„…öƒÖ…ö…ö…ö…öƒØ…÷ •{•{„…÷ƒÙ…÷…÷ƒkN…÷$ …÷…÷ …÷ ·z\V4à‰‚°ƒÙ·z\V4à‰‚·z\V4à‰‚   ƒk …÷    ·z\V4à‰‚°ƒÙ·z\V4à‰‚·z\V4à‰‚      ƒk…÷ƒÙ…÷…÷ƒk€ÂƒÚ…ø ”ô?”ô@…ø…ø…÷ƒk…÷…÷…÷…ù •{•{„…ùƒÙ…ù…ù…ù…ùƒÛ…ú ••„…úƒÜ…ú…úƒlN…ú$ …ú…ú …ú ·z\V4à‰‚°ƒÜ·z\V4à‰‚·z\V4à‰‚   ƒl …ú    ·z\V4à‰‚°ƒÜ·z\V4à‰‚·z\V4à‰‚      ƒl…úƒÜ…ú…úƒl€ÂƒÝ…û ”õ>”õ?…û…û…úƒl…ú…ú…ú…ü ••„…üƒÜ…ü…ü…ü…üƒÞ…ý •‡•‡„…ýƒß…ý…ýƒmN…ý$ …ý…ý …ý ·z\V4à‰‚°ƒß·z\V4à‰‚·z\V4à‰‚   ƒm …ý    ·z\V4à‰‚°ƒß·z\V4à‰‚·z\V4à‰‚      ƒm…ýƒß…ý…ýƒm€Âƒà…þ ”ö?”ö@…þ…þ…ýƒm…ý…ý…ý…ÿ •‡•‡„…ÿƒß…ÿ…ÿ…ÿ…ÿƒá† ••„†ƒâ††ƒnN†$ †† † ·z\V4à‰‚°ƒâ·z\V4à‰‚·z\V4à‰‚   ƒn †    ·z\V4à‰‚°ƒâ·z\V4à‰‚·z\V4à‰‚      ƒn†ƒâ††ƒn€Âƒã† ”÷>”÷?†††ƒn†††† ••„†ƒâ††††ƒä† •“•“„†ƒå††ƒoN†$ †† † ·z\V4à‰‚°ƒå·z\V4à‰‚·z\V4à‰‚   ƒo †    ·z\V4à‰‚°ƒå·z\V4à‰‚·z\V4à‰‚      ƒo†ƒå††ƒo€Âƒæ† ”ø?”ø@†††ƒo†††† •“•“„†ƒå††††ƒç† •— •—!„†ƒè††††€‡ •—(•—)„ƒpN†$ ƒq€Æ†$ †† † ·z\V4à‰‚°ƒè·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚   ƒp  ƒq †    ·z\V4à‰‚°ƒè·z\V4à‰‚·z\V4à‰‚·z\V4à‰‚      ƒp     ƒq†ƒè†††ƒpƒq€Âƒé† ”ù>”ù?† €‡ ”ù@”ùA†† †††ƒpƒq†††††††  •— •—!„† ƒè† † † † €‡ •—(•—)„† † † ƒê†  •¢•¢„† † ƒV† † † † ‚Ù† † ƒU† † † † ƒV† † † ƒrN† $ ƒsK$ †  ƒtN $   ƒr  2ƒt  2 5ƒs 5ƒs   ƒs  2 5ƒs€Âƒë ƒtƒs  €Âƒë ƒtƒs †  ƒuN $   ƒr  2ƒu  2 5ƒs 5ƒs?     ƒs?  2 5ƒs€Âƒì  ƒuƒs   €Âƒì  ƒuƒs  † ƒvN$  ƒr  2ƒv 2 5ƒs 5ƒs     ƒs  2 5ƒs€Âƒíƒvƒsƒw€Æ, €Âƒíƒvƒs   ƒw † ƒxN$  ƒr  2ƒx 2 5ƒs 5ƒs     ƒs  2 5ƒs€Âƒîƒxƒsƒy€Æ, €Âƒîƒxƒs   ƒy † ƒzN$  ƒr  2ƒz  2 5ƒs 5ƒs  ƒs  2 5ƒs€Âƒïƒzƒs  €Âƒïƒzƒs † ƒ{N$  ƒr  2ƒ{ 2 5ƒs 2 3ƒs   ƒs  2 5ƒs€Âƒðƒ{ƒs  €Âƒðƒ{ƒs † ƒ|N$  ƒr  2ƒ| 2 5ƒs 2 3ƒs?   ƒs?  2 5ƒs€Âƒñƒ|ƒs  €Âƒñƒ|ƒs † ƒ}N$  ƒr  2ƒ} 2 5ƒs 2 3ƒs    ƒs  2 5ƒs€Âƒòƒ}ƒsƒ~€Æ, €Âƒòƒ}ƒs   ƒ~ † ƒN$  ƒr  2ƒ 2 5ƒs 2 3ƒs    ƒs  2 5ƒs€Âƒóƒƒsƒ€€Æ, €Âƒóƒƒs   ƒ€ † ƒN$  ƒr  2ƒ  2 5ƒs 2 3ƒs  ƒs  2 5ƒs€Âƒôƒƒs   €Âƒôƒƒs †  ƒ‚N $   ƒr  2 5ƒs€Âƒõ ƒ‚ƒs   ÿð?€Âƒõ ƒ‚ƒs †  ƒƒN $   ƒr  2 5ƒs€Âƒö  ƒƒƒs   ÿ€? €Âƒö  ƒƒƒs  † ƒ„N$  ƒr  2 5ƒs€Âƒ÷€°ƒ„ƒs·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €Âƒ÷€°ƒ„ƒs€°  2ƒsÿ€ƒ…N† , ƒ†K,   ƒsƒ‡€ñ† , €Âƒø†  “)&“)(„† † † † † † † † † † † †  †   †  ÿð? †  ÿ€?  †   †  †  †   †   †  †  †   †  †  † ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    † † † ‚Ù† ,‚Ö† ‰H‰H!„†† ƒˆN† , ƒ‰€Æ† , † †   . ƒˆƒ‰ † †   . ƒˆƒ‰ †  †   . ƒˆƒ‰ †  †   . ƒˆƒ‰ † †  .ƒˆƒ‰ † †   /ƒˆƒ‰ † †   /ƒˆƒ‰ † †  /ƒˆƒ‰ † †  /ƒˆƒ‰ † †  /ƒˆƒ‰ †  †    ƒˆƒ‰ †  †    ƒˆƒ‰ † †  † ·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒˆ ƒ‰ † † † † ƒU† † † ƒˆƒ‰,‚܆€Ê Š!#Š!%„†€Ë Š!&Š!(„†€‡ Š!)Š!+„†††† † † ƒˆƒ‰† † † ƒrƒ†  5ƒ†ƒŠN† , †   †  ÿð? †  ÿ€?  †   †  †  †   †   †  †  †   †  †  † ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    † † † ‚Ù† ,‚Ö† ‰H‰H!„††  †  †    ƒŠƒ‡ †  †    ƒŠƒ‡ †  †    ƒŠƒ‡ †  †    ƒŠƒ‡ † †   ƒŠƒ‡ † †   ƒŠƒ‡ † †  ƒŠƒ‡ † †   ƒŠƒ‡ † †    ƒŠƒ‡ † †    ƒŠƒ‡ † †    ƒŠƒ‡ † †    ƒŠƒ‡ † †  † ·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒŠ ƒ‡† † ƒV† † † ƒŠƒ‡ƒ‡† †  †    ƒ…ƒr †  †    ƒ…ƒr †  †    ƒ…ƒr †  †    ƒ…ƒr † †   ƒ…ƒr † †   ƒ…ƒr † †  ƒ…ƒr † †   ƒ…ƒr † †    ƒ…ƒr † †    ƒ…ƒr † †    ƒ…ƒr † †    ƒ…ƒr † †  † ·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ… ƒr† † ƒV† † † ƒ…ƒrƒ‹€ñ† , €Âƒø† “)&“)(„††††††† † † † † †  †   †  ÿð? †  ÿ€?  †   †  †  †   †   †  †  †   †  †  † ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    † † † ‚Ù† ,‚Ö† ‰H‰H!„†† ƒŒN† , ƒ€Æ† , † †   . ƒŒƒ † †   . ƒŒƒ †  †   . ƒŒƒ †  †   . ƒŒƒ † †  .ƒŒƒ † †   /ƒŒƒ † †   /ƒŒƒ † †  /ƒŒƒ † †  /ƒŒƒ † †  /ƒŒƒ †  †    ƒŒƒ †  †    ƒŒƒ † †  † ·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒŒ ƒ † † † † ƒU† † † ƒŒƒ,‚܆€Ê Š!#Š!%„†€Ë Š!&Š!(„†€‡ Š!)Š!+„†††† † † ƒŒƒ† † † ƒrƒs  5ƒsƒŽN† , †   †  ÿð? †  ÿ€?  †   †  †  †   †   †  †  †   †  †  † ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    † † † ‚Ù† ,‚Ö† ‰H‰H!„††  †  †    ƒŽƒ‹ †  †    ƒŽƒ‹ †  †    ƒŽƒ‹ †  †    ƒŽƒ‹ † †   ƒŽƒ‹ † †   ƒŽƒ‹ † †  ƒŽƒ‹ † †   ƒŽƒ‹ † †    ƒŽƒ‹ † †    ƒŽƒ‹ † †    ƒŽƒ‹ † †    ƒŽƒ‹ † †  † ·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒŽ ƒ‹† † ƒV† † † ƒŽƒ‹ƒ‹† † † † † † † •¢•¢„††ƒV††††‚Ù††ƒU††††ƒV†††††ƒùƒú'L¨€Ä8†€Ê è è!„††8††††€Ë è(è)„††8††††‚ è.è/„ƒN†$ ƒ€Æ†$ † †  , ƒƒ † †   ƒƒ † †   ƒƒ † †  , ƒƒ †† -ƒƒ †† -ƒƒ †† ,ƒƒ †† -ƒƒ ††  , ƒƒ ††  -ƒƒ ††  -ƒƒ ††  , ƒƒ ††  -ƒƒ †† †·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒ ƒ †† †·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ ††††8†††ƒƒ,€É†€Ê ‰Ö#‰Ö%„†€Ë ‰Ö&‰Ö(„†€‡ ‰Ö)‰Ö+„††††††ƒƒ††††††† €Ê è è!„† †!8† †!†"†!€Ë è(è)„† †!8† †!†"†"‚ è.è/„† †!†"€Ä7†#€Ê ÿ ÿ!„†#†$7†#†$†%†$€Ë ÿ(ÿ)„†#†$7†#†$†%†%‚ ÿ.ÿ/„ƒ‘N†#$ ƒ’€Æ†$$ †$ †#  0 ƒ‘ƒ’ †$ †#   ƒ‘ƒ’ †$ †#   ƒ‘ƒ’ †$ †#  0 ƒ‘ƒ’ †$†# 1ƒ‘ƒ’ †$†# 1ƒ‘ƒ’ †$†# 0ƒ‘ƒ’ †$†# 1ƒ‘ƒ’ †$†#  0 ƒ‘ƒ’ †$†#  1ƒ‘ƒ’ †$†#  0 ƒ‘ƒ’ †$†#  1ƒ‘ƒ’ †$†# †%·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ‘ ƒ’†#†$7†#†$†%ƒ‘ƒ’†%†$†%†#†$†%†&€Ê ÿ ÿ!„†&†'7†&†'†(†'€Ë ÿ(ÿ)„†&†'7†&†'†(†(‚ ÿ.ÿ/„†&†'†(€ÄƒT†) ‘!‘"„†)ƒT†)†)ƒ“N†)$ †)  0 ƒ“ †)   ƒ“ †)   ƒ“ †)  0  ƒ“ †) 0ƒ“ †) 0 ƒ“ †) 0ƒ“ †) †)·z\V4à‰€ÁƒT·z\V4à‰€Á·z\V4à‰€Á ƒ“†)ƒT†)†)ƒ“†)†)†)†* ‘!‘"„†*ƒT†*†*†*†*€ÄƒU†+€Ê ‘"‘#„†+†,ƒU†+†,†-†,€Ë ‘*‘+„†+†,ƒU†+†,†-†-‚ ‘0‘1„ƒ”N†+$ ƒ•€Æ†,$ †,†+  . ƒ”ƒ• †,†+  . ƒ”ƒ• †, †+  . ƒ”ƒ• †, †+  . ƒ”ƒ• †,†+ .ƒ”ƒ• †,†+  /ƒ”ƒ• †,†+  /ƒ”ƒ• †,†+ /ƒ”ƒ• †,†+ /ƒ”ƒ• †,†+ /ƒ”ƒ• †, †+   ƒ”ƒ• †, †+   ƒ”ƒ• †,†+ †-·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ” ƒ• †+†+†+†,ƒU†+†,†-ƒ”ƒ•,‚܆.€Ê Š!#Š!%„†/€Ë Š!&Š!(„†0€‡ Š!)Š!+„†.†/†0†+†,†-ƒ”ƒ•†-†,†-†+†,†-†1€Ê ‘"‘#„†1†2ƒU†1†2†3†2€Ë ‘*‘+„†1†2ƒU†1†2†3†3‚ ‘0‘1„†1†2†3€Ä€¿†4 ‘1!‘1"„†4‚„†4ƒ–N†4$ †4ƒ—B,  ƒ– ,‚“ƒ— †4  ƒ– †4  ƒ– †4  ƒ– †4  ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ– †4 ƒ–†4‚„†4ƒ–†4†5 ‘1!‘1"„†5‚„†5†5€Ä€¾†6 ‘D"‘D#„†6‚„†6ƒ˜N†6$ †6ƒ™B,  ƒ˜ ,‚•ƒ™ †6  ƒ˜ †6  ƒ˜ †6  ƒ˜ †6  ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜ †6 ƒ˜†6‚„†6ƒ˜†6†7 ‘D"‘D#„†7‚„†7†7€Ä€½†8 ‘W#‘W$„†8‚„†8ƒšN†8$ †8ƒ›B,  ƒš ,‚“ƒ› †8  ƒš †8  ƒš †8  ƒš †8  ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš †8 ƒš†8‚„†8ƒš†8†9 ‘W#‘W$„†9‚„†9†9€Ä€Ç†: ‘j!‘j"„†:‚„†:ƒœN†:$ †:·z\V4à‰ƒ ‚†·z\V4à‰s·z\V4à‰ƒ  ƒœ †:  ƒœ †:  ƒœ †:  ƒœ †:  ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ †: ƒœ†:‚„†:ƒœ†:†; ‘j!‘j"„†;‚„†;†;€Ä€¼†< ‘"‘#„†<‚„†<ƒN†<$ †<ƒžB,  ƒ ,‚•ƒž †<  ƒ †<  ƒ †<  ƒ †<  ƒ †< ƒ †< ƒ †< ƒ †< ƒ †< ƒ †< ƒ †< ƒ †< ƒ †< ƒ†<‚„†<ƒ†<†= ‘"‘#„†=‚„†=†=€Ä€¹†> ‘”#‘”$„†>‚„†>ƒŸN†>$ †>,‚“ ƒŸ †>  ƒŸ †>  ƒŸ †>  ƒŸ †>  ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ †> ƒŸ†>‚„†>ƒŸ†>†? ‘”#‘”$„†?‚„†?†?€Ä{†@ ‘§"‘§#„†@‚„†@ ƒ N†@$ †@,‚• ƒ  †@   ƒ  †@   ƒ  †@   ƒ  †@   ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ  †@  ƒ †@‚„†@ ƒ  †@ †A ‘§"‘§#„†A‚„†A †A €Ä†BUP†B‚„†B ƒ¡N†B$ †B,‚• ƒ¡ †B   ƒ¡ †B   ƒ¡ †B   ƒ¡ †B   ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡ †B  ƒ¡†B‚„†B ƒ¡ †B †CUP†C‚„†C †C €Ä€¸†D ‘¾#‘¾$„†D‚„†Dƒ¢N†D$ †D,‚Õ ƒ¢ †D  ƒ¢ †D  ƒ¢ †D  ƒ¢ †D  ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢ †D ƒ¢†D‚„†Dƒ¢†D†E ‘¾#‘¾$„†E‚„†E†E€Ä€·†F ‘Ñ"‘Ñ#„†F‚„†F ƒ£N†F$ †F,‚Ô  ƒ£ †F   ƒ£ †F   ƒ£ †F   ƒ£ †F   ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£ †F  ƒ£†F‚„†F ƒ£ †F †G ‘Ñ"‘Ñ#„†G‚„†G †G €Ä€»†H ‘ä'‘ä(„†H‚„†Hƒ¤N†H$ †Hƒ¥B,  ƒ¤  ,‚Ô ƒ¥ †H   ƒ¤ †H   ƒ¤ †H   ƒ¤ †H   ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤ †H  ƒ¤†H‚„†Hƒ¤†H†I ‘ä'‘ä(„†I‚„†I†I€Ä€º†J ‘÷&‘÷'„†J‚„†Jƒ¦N†J$ †Jƒ§B,  ƒ¦  ,‚Ô ƒ§ †J   ƒ¦ †J   ƒ¦ †J   ƒ¦ †J   ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦ †J  ƒ¦†J‚„†Jƒ¦†J†K ‘÷&‘÷'„†K‚„†K†Kƒ–b LP¨Í;€Âƒ—€Âƒš€Âƒ›€Âƒœ€Âƒ€Âƒž€ÂƒŸ€Âƒ €Âƒ¡€Âƒ¢€Âƒ˜€Âƒ™€Âƒ¤€Âƒ¨€Âƒ£€Âƒó€Âƒî€Âƒí€Âƒò€Âƒë€Âƒð€Âƒì€Âƒñ€Âƒï€Âƒô€Âƒö€Âƒõ€Âƒ÷€Âƒø€Âƒû8†L “-+“-,ƒ¨x†L$ ƒ©ƒü $ ƒªƒý $ ƒ«ƒü$ ƒ©€™‚?ƒ¬ƒþ€™‚?, €™‚?ƒ©ƒ­K$ €™‚?ƒ¬ƒ­ƒ®ƒý$ ƒª€™‚?   (ƒ¨ƒ¯ƒþ€™‚?, €™‚?ƒªƒ°K$ €™‚?ƒ¯ƒ°ƒ±€†,     ƒ®ƒ«ƒ²ƒÿ†L,  '†L†Lƒ±ƒ³z, ƒ´z,  ƒ±ƒµ|,  <†Lƒ²ƒµ ;†L†Lƒ¨ ƒ«ƒµƒ²†L †L  †L†L  †L†M “-+“-,†M  †M€Â„5†N “2B“2Cƒ¶ƒÿ†N$ ƒ·ƒü $ ƒ¸ƒý $ ƒ¹„†N$ ƒºƒü$ ƒ·€™‚?ƒ»ƒþ€™‚?, €™‚?ƒ·ƒ¼K$ €™‚?ƒ»ƒ¼ƒ½ƒý$ ƒ¸€™‚?   (ƒ¶ƒ¾ƒþ€™‚?, €™‚?ƒ¸ƒ¿K$ €™‚?ƒ¾ƒ¿ƒÀ€†,     ƒ½ƒºƒÁz, ƒÂz,  ƒÀƒÃ|,  <†Nƒ¶ ƒºƒÃ ;†N†Nƒ¹ƒÃ†N †N  †N†N  †N†O “2B“2C†O  †O€Â„€Â„€Â„€Â„€Â„€Â„€Â„&ƒÄ„ $ ƒÅƒü $ ƒÆƒý $ ƒÇƒü$ ƒÅ€™‚?ƒÈƒþ€™‚?, €™‚?ƒÅƒÉK$ €™‚?ƒÈƒÉƒÊƒý$ ƒÆ€™‚?  ·z\V4à‰s·z\V4à‰HƒÄƒËƒþ€™‚?, €™‚?ƒÆƒÌK$ €™‚?ƒËƒÌ·z\V4à‰s„ ·z\V4à‰H·z\V4à‰H·z\V4à‰sƒÄƒÇ    ƒÊƒÇ     €Âƒ­€Âƒ°€Âƒ³€Âƒ¶€Âƒ¹€Âƒ¼€Âƒ¿€ÂƒÂ€ÂƒÄ€ÂƒÇ€ÂƒË€ÂƒÎ€ÂƒÑ€ÂƒÔ€Âƒ×€ÂƒÚ€ÂƒÝ€Âƒà€Âƒã€Âƒæ€Âƒé„ Õ P]ÍӀŃ.†P ØØ„ƒÍ€ñ$  =†P†PƒÍ†P†P†Q ØØ„†Q€Å„  †R Û!Û#„ †R†R†R†S Û!Û#„†S€Åƒ6†TUPƒÎN†T$ ƒÏ€Æ†T$ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  5ƒÎƒÏÿÿÿÿÿ 3ƒÎƒÏ †T  6ƒÎƒÏÿÿÿÿÿ 4ƒÎƒÏ †T·z\V4à‰s‚¢·z\V4à‰s·z\V4à‰s·z\V4à‰H ƒÎ ƒÏ †T·z\V4à‰€Á‚£·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰H ƒÎ ƒÏ.‚¤†U „À+„À-„†U†U†TƒÎƒÏ†T†T†T†VUP†V†V€Å„ †WUPƒÐN†W$ ƒÑ€Æ†W$ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W  2ƒÐƒÑ †W  2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W  2ƒÐƒÑ †W  2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W 2ƒÐƒÑ †W·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ƒÐ ƒÑ †W·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Â ƒÐ ƒÑ.†X †c2†c4„†X†X†WƒÐƒÑ†W†W†W†YUP†Y†Y€Å†ZUPƒÒN†Z$ †Z ƒÒ †Z ƒÒ †Z  ƒÒ †Z ƒÒ †Z ƒÒ †Z  ƒÒ ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒÒ.†[UP†[†ZƒÒ†Z†\UP†\À]~ÓÓ7 )†]€Ê†$†$„†^€Ë†$†$„†_€‡†$ †$"„6†]†^†_7 €½€Ê†$†$„€¾€Ë†$†$„€¿€‡†$ †$"„€½€¾€¿6€½€¾€¿7„)†`€Ê†9†9„†a€Ë†9†9„†b‚†9 †9#„†c€‡†9$†9&„€Æ†`†a†b†c7„ †d€Ê†9†9„†e€Ë†9†9„†f‚†9 †9#„†g€‡†9$†9&„†d†e†f†g€Æ†d†e†f†g7„)†h€Ê†P†P„†i€Ë†P†P„†j‚†P †P#„†k‚!†P$†P'„†l€‡†P(†P*„€Ç†h†i†j†k†l7„ †m€Ê†P†P„†n€Ë†P†P„†o‚†P †P#„†p‚!†P$†P'„†q€‡†P(†P*„†m†n†o†p†q€Ç†m†n†o†p†q7„)†r€Ê†h†h„†s€Ë†h†h„†t‚†h †h#„†u‚!†h$†h'„†v‚#†h(†h+„†w€‡†h,†h.„€È†r†s†t†u†v†w7„ †x€Ê†h†h„†y€Ë†h†h„†z‚†h †h#„†{‚!†h$†h'„†|‚#†h(†h+„†}€‡†h,†h.„†x†y†z†{†|†}€È†x†y†z†{†|†}„~„ÓÖ €ÉJ€É„†~UPƒÓ„ †~$ ƒÓ€™‚?†~ †~†UP †€É„†€UPƒÔ„ †€$ ƒÔ€™‚?†€ †€†UP †€Ém†‚UPƒÕ„ †‚$ ƒÕ€™‚?†‚ †‚†ƒUP †ƒ€É€€É€ž€É€€É€€ÉW€ÉY€É„€É€É€‚„„„ÖÖ‚u\„ÖÝ €¨„€¨„†„‚FUP†…UPƒÖV†„$ ƒ×„€©†…†„$ €¨„††‚F„‚I ‚I"„†‡„‚I7‚I9„††€©†‡†††‡†„†…ƒÖƒ×†…€©†…†„†…†„€©†…†„†…†ˆ‚FUP†‰UP†ˆ€©†‰†ˆ†‰€¨„€¨„€¨‚s€¨‚w†ŠUP†‹‚FUPƒØ„€©†Š†‹$ €¨„†Œ‚F„‚I ‚I"„†„‚I7‚I9„†Œ€©††Œ††‹†Šƒ7†Žˆ3)ˆ3+„†Ž†‹ƒØ†Š€©†Š†‹†Š†UP†‚FUP€©†††€¨„€¨‚y€¨‚}€¨‚~†‘UPƒÙ„€š†‘_$ €¨‚y†’UP_€š†’_†’†‘·z\V4à‰ƒƒ’·z\V4à‰ƒ“_ƒÙ†‘€š†‘_†‘†“UP€š†“_†“€¨‚†”UPƒÚ„€š†”_$ €¨‚y†•UP_€š†•_†•†”·z\V4à‰ƒŸ·z\V4à‰ƒ“_ƒÚ†”€š†”_†”†–UP€š†–_†–€¨‚€†—UPƒÛ„€š†—_$ €¨‚}†˜UP_€š†˜_†˜†—·z\V4à‰ƒƒ’·z\V4à‰ƒ“_ƒÛ†—€š†—_†—†™UP€š†™_†™€¨‚†šUPƒÜ„€š†š_$ €¨‚}†›UP_€š†›_†›†š·z\V4à‰ƒŸ·z\V4à‰ƒ“_ƒÜ†š€š†š_†š†œUP€š†œ_†œ„ÝÝ„…žÝß €ÊƒÝ„ $ ƒÞ„! $ ·z\V4à‰s„"·z\V4à‰s·z\V4à‰s·z\V4à‰sƒÝ9†ƒ^ ƒ^"„ ††ƒÞ  €ÊW€ÊX€ÊY€ÊZ€Ê€€€ÊT€Ê€Ê€€Ê€€Êj„#žžßß„$‚žžßß„%bžžßß„&Bžžßß„'žžßß„(žžßß„)Wúž ߉3€Ë„*)†ž„+„†Ÿ„,„+„ †ž€Ì†ž†Ÿ€Ë„*„-† „+„†¡„,„+„€Ì† †¡ † €Ë„.)k€Ë„.j†¢„+7.70„†£„,„+7173„†¤‚F„+7O7V„†¥„/„+7W7Z„k€Ì†¢†£†¢€Ì†¤†¥€Ì†¤†£€Ë„._†¦„+†É€Ì†Él†Ê„1B*B,„ƒé„0k& ƒê€Ü>†Ê$ €Ë„*)†ž„+„†Ÿ„,„+„ †ž€Ì†ž†Ÿ†Ë„1&&„†Ì„,„1&&„ †Ë€Ì†Ë†Ì†Êlƒê€Ì†Êl>†Ê€Ì†Êlk>†Ê€Ì†Êl†Í„1B*B,„k>†Í€Ì†Íl€Ë„.6†Î„+X-X/„†Ï„,„+X0X2„k€Ì†Î†Ï†Î€Ë„.„;†Ð„+{+{-„†Ñ„,„+{.{0„†Ò‚F„+{^{e„k€Ì†Ð†Ñ†Ð†Ò€Ì†Ò†Ñ€Ë„.„<†Ó„+€€*€€,„†Ô„,„+€€-€€/„k€Ì†Ó†Ô†Ó€Ì†Ó†Ô€Ë„.„=†Õ„+b)b+„†Ö„,„+b,b.„k€Ì†Õ†Ö†Õ€Ë„.„>†×„+g2g4„†Ø„,„+g5g7„k€Ì†×†Ø†×€Ë„.„?†Ù„+l/l1„†Ú„,„+l2l4„k€Ì†Ù†Ú†Ù€Ë„.„@†Û„+q8q:„†Ü„,„+q;q=„k€Ì†Û†Ü†Û€Ë„.„A†Ý„+]*],„†Þ„,„+]-]/„k€Ì†Ý†Þ€Ë„.„B†ß„+€öN€öP„ †à„,„+€ö/€ö1„k€Ì†ß†à€Ì†ß†à€Ë„.„C†á„+€û*€û,„†â„,„+€û-€û/„k€Ì†á†â†á€Ë„.„D†ã„+')„†ä„,„+*,„k€Ì†ã†ä†ã€Ë„.„E†å„+ ( *„†æ„,„+ + -„k€Ì†å†æ†å€Ë„.„F†ç„+')„†è„,„+*,„k€Ì†ç†è†ç€Ë„.„G†é„+)+„†ê„,„+,.„k€Ì†é†ê€Ì†é†ê€Ë„.„H†ë„+-/„†ì„,„+02„k€Ì†ë†ì†ë€Ì†ë†ì€Ë„.„I†í„+'('*„†î„,„+'+'-„k€Ì†í†î€Ì†í†î€Ë„.„J†ï„+,-,/„†ð„,„+,0,2„k€Ì†ï†ð†ï€Ì†ï†ð€Ë„.„K†ñ„+(*„†ò„,„++-„k€Ì†ñ†ò†ñ†ñ€Ë„.„L†ó„+v2v4„†ô„,„+v5v7„k€Ì†ó†ô†ó€Ë„.„M†õ„+€…*€…,„†ö„,„+€…-€…/„†÷,„+€…w€…}„ k€Ì†õ†ö†õ†÷†÷€Ë„.„N†ø„+€Š*€Š,„†ù„,„+€Š-€Š/„†ú,„+€Šw€Š}„ k€Ì†ø†ù†ø†ú†ú€Ë„.„O†û„+€Ô2€Ô4„†ü„,„+€Ô5€Ô7„†ý,„+€Õ.€Õ4„ mk€Ì†û†ü†û€Ò†ý€Ò†ý€Ë„.„R†þ„+€Ü2€Ü4„†ÿ„,„+€Ü5€Ü7„‡,„+€Ü€“€Ü€™„ mk€Ì†þ†ÿ†þ€Ò‡€Ò‡€Ë„.„S‡„+€Ë9€Ë;„‡„,„+€Ë<€Ë>„‡,„+€Ì/€Ì4„‡8‡‡‡‡€±‡mk€Ì‡‡‡€Ò‡€Ò‡G‡„1e#e%„‡„,„1e'e)„‡,„1e,e1„m‡8‡‡‡‡€±‡ƒë„0k& ƒì€Ü€Ì‡‡$ ƒíV‡€Ò‡$ ƒî€Ü ‡$ €Ë„*„-† „+„†¡„,„+„€Ì† †¡ † ‡„1&&„‡„,„1&&„€Ì‡‡ ‡‡‡ƒì  & ‡ƒîo‡  ª,ª.„‡  ·z\V4à‰€…)·z\V4à‰s €Üƒï€Ý/‡$ ·z\V4à‰€à€á·z\V4à‰€â‡/‡ƒî€Ò‡ƒðz, ƒñ€²‡t ‡  ‡  ‡   ‡  ‡ ‡ ‡  ‡  ‡ ‡ ‡ ‡ ‡·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ‡‡‡€±‡,€Å‡  ‰G ‰G"„‡ ‡ƒòz, ·z\V4à‰€ã€ä·z\V4à‰€Âƒïƒóz, ƒô€ñ€Ò‡$ ƒí‡€Ò‡·z\V4à‰€â€å‡‡ƒï ·z\V4à‰„T„U·z\V4à‰€Â‡ƒôƒñƒõN‡, ƒñƒö€Æ‡, ·z\V4à‰„TƇ‡ƒô ‡ ‡  , ƒõƒö ‡ ‡   ƒõƒö ‡ ‡   ƒõƒö ‡ ‡  , ƒõƒö ‡‡ -ƒõƒö ‡‡ -ƒõƒö ‡‡ ,ƒõƒö ‡‡ -ƒõƒö ‡‡  , ƒõƒö ‡‡  -ƒõƒö ‡‡  -ƒõƒö ‡‡  , ƒõƒö ‡‡  -ƒõƒö ‡‡ ‡·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒõ ƒö ‡‡ ‡·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒõ ƒö ‡‡‡‡8‡‡‡ƒõƒö,€É‡ €Ê ‰Ö#‰Ö%„‡ €Ë ‰Ö&‰Ö(„‡ €‡ ‰Ö)‰Ö+„‡ ‡ ‡ ‡‡‡ƒõƒö·z\V4à‰„T)‡€Ò‡ƒñ€Ò‡ƒ÷z, ƒø€ë,  /‡ƒï ƒø·z\V4à‰€í€îƒø€Ò‡€Ì‡‡‡€Ò‡€Ò‡k€Ì‡‡‡€Ò‡€Ò‡‡„1e#e%„‡„,„1e'e)„‡,„1e,e1„m‡8‡‡‡‡€±‡k€Ì‡‡‡€Ò‡€Ò‡€Ë„.„V‡„+€â?€âA„‡„,„+€âB€âD„‡,„+€ã€ã$„‡8‡‡‡‡€Û‡‡‡€±‡ mk€Ì‡‡‡€Ò‡€Ò‡Y‡„1w(w*„‡„,„1w,w.„‡,„1w1w6„m‡8‡‡‡‡€Û‡‡‡€±‡ ƒù„0k& ƒú€Ü€Ì‡‡$ ƒû„W‡€Ò‡$ ƒü€Ü ‡$ €Ë„*„-† „+„†¡„,„+„€Ì† †¡ † ‡„1&&„‡„,„1&&„€Ì‡‡ ‡‡‡ƒú  & ‡ƒüo‡ ª,ª.„‡ ·z\V4à‰€…)·z\V4à‰s €Üƒý€Ý/‡$ ·z\V4à‰€à€á·z\V4à‰€â‡/‡ƒü€Ò‡ƒþz, ƒÿ€²‡t ‡  ‡  ‡   ‡  ‡ ‡ ‡  ‡  ‡ ‡ ‡ ‡ ‡·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ‡‡‡€±‡,€Å‡ ‰G ‰G"„‡‡„mt „z, ·z\V4à‰€ã€ä·z\V4à‰€Âƒý„z, „€ñ€Ò‡$ ƒû‡€Ò‡·z\V4à‰€â€å‡‡ƒý ·z\V4à‰„T„U·z\V4à‰€Â‡„ƒÿ„N‡, ƒÿ„€Æ‡, ·z\V4à‰„TƇ‡„ ‡ ‡  , „„ ‡ ‡   „„ ‡ ‡   „„ ‡ ‡  , „„ ‡‡ -„„ ‡‡ -„„ ‡‡ ,„„ ‡‡ -„„ ‡‡  , „„ ‡‡  -„„ ‡‡  -„„ ‡‡  , „„ ‡‡  -„„ ‡‡ ‡·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „ „ ‡‡ ‡·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „ „ ‡‡‡‡8‡‡‡„„,€É‡€Ê ‰Ö#‰Ö%„‡€Ë ‰Ö&‰Ö(„‡€‡ ‰Ö)‰Ö+„‡‡‡‡‡‡„„„  „  2„€Ò‡·z\V4à‰„T)‡€Ò‡„N‡, ƒÿ„K, „ ‡   „   „ ‡   „   „ ‡·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á„ ‡‡‡€Û‡‡„„,€ê‡ ‰‚‰‚!„‡‡‡„„€Ò‡€Ò‡„z, „ €ë,  /‡ƒý „ ·z\V4à‰€í€î„ €Ò‡€Ì‡‡‡€Ò‡€Ò‡k€Ì‡‡‡€Ò‡€Ò‡‡„1w(w*„‡ „,„1w,w.„‡!,„1w1w6„m‡!8‡!‡!‡!‡!€Û‡!‡!‡!€±‡! k€Ì‡‡ ‡€Ò‡!€Ò‡!€Ë„.„X‡"„+€ì7€ì9„‡#„,„+€ì:€ì<„‡$,„+€í,€í1„‡$8‡$‡$‡$‡$€Û‡$‡$‡$€±‡$ k€Ì‡"‡#‡"‡$‡$\‡%„1€ €"„‡&„,„1€$€&„‡',„1€)€.„‡'8‡'‡'‡'‡'€Û‡'‡'‡'€±‡' „ „0k& „ €Ü€Ì‡%‡&$ „ „W‡%‡'$ „ €Ü ‡%$ €Ë„*„-† „+„†¡„,„+„€Ì† †¡ † ‡(„1&&„‡)„,„1&&„€Ì‡(‡) ‡(‡%‡&„   & ‡%„ o‡* ª,ª.„‡* ·z\V4à‰€…)·z\V4à‰s €Ü„€Ý/‡%$ ·z\V4à‰€à€á·z\V4à‰€â‡%/‡%„ ‡'„z, „€²‡'t ‡'  ‡'  ‡'   ‡'  ‡' ‡' ‡'  ‡'  ‡' ‡' ‡' ‡' ‡'·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ‡'‡'‡'€±‡',€Å‡+ ‰G ‰G"„‡+‡'„mt „z, ·z\V4à‰€ã€ä·z\V4à‰€Â„„z, „„N‡', „„€Æ‡', „ ‡%‡'·z\V4à‰€â€å‡%‡%„ ‡' ‡'  , „„ ‡' ‡'   „„ ‡' ‡'   „„ ‡' ‡'  , „„ ‡'‡' -„„ ‡'‡' -„„ ‡'‡' ,„„ ‡'‡' -„„ ‡'‡'  , „„ ‡'‡'  -„„ ‡'‡'  -„„ ‡'‡'  , „„ ‡'‡'  -„„ ‡'‡' ‡'·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „ „ ‡'‡' ‡'·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „ „ ‡'‡'‡'‡'8‡'‡'‡'„„,€É‡,€Ê ‰Ö#‰Ö%„‡-€Ë ‰Ö&‰Ö(„‡.€‡ ‰Ö)‰Ö+„‡,‡-‡.‡'‡'‡'„„„  „  2„„ƒ1, o‡/ ª,ª.„‡/ d·z\V4à‰ƒ>)·z\V4à‰sd„  €Ü„Y·z\V4à‰„Z„[·z\V4à‰€à·z\V4à‰H·z\V4à‰‚ >„N‡', „„K, „ ‡'   „   „ ‡'   „   „ ‡'·z\V4à‰€Á€ç·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á„ ‡'‡'‡'€Û‡'‡'„„,€ê‡0 ‰‚‰‚!„‡0‡0‡'„„‡'„z, „€ë,  /‡%„ „·z\V4à‰€í€î„‡'€Ì‡%‡&‡%‡'‡'k€Ì‡%‡&‡%‡'‡'‡1„1€ €"„‡2„,„1€$€&„‡3,„1€)€.„‡38‡3‡3‡3‡3€Û‡3‡3‡3€±‡3 k€Ì‡1‡2‡1‡3‡3€Ë„.„\‡4„+35„‡5„,„+68„‡6,„+ , 1„‡68‡6‡6‡6‡6€±‡6k€Ì‡4‡5‡4‡6‡6*‡7„1€Ÿ€Ÿ„‡8„,„1€Ÿ €Ÿ"„‡9,„1€Ÿ%€Ÿ*„‡98‡9‡9‡9‡9€±‡9„„0k& „€Ü€Ì‡7‡8$ „V‡7‡9$ „€Ü ‡7, €Ë„*„-† „+„†¡„,„+„€Ì† †¡ † ‡:„1&&„‡;„,„1&&„€Ì‡:‡; ‡:‡7‡8„„€Ý/‡7, ·z\V4à‰€à€á·z\V4à‰€â‡7/‡7„‡9„ z, „!€²‡9| ‡9  ‡9  ‡9   ‡9  ‡9 ‡9 ‡9  ‡9  ‡9 ‡9 ‡9 ‡9 ‡9·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ‡9‡9‡9€±‡9,€Å‡< ‰G ‰G"„‡<‡9„"z, ·z\V4à‰€ã€ä·z\V4à‰€Â„„#z, „!„$N‡9, „!„%€Æ‡9, „‡7‡9·z\V4à‰€â€å‡7‡7„ ‡9 ‡9  , „$„% ‡9 ‡9   „$„% ‡9 ‡9   „$„% ‡9 ‡9  , „$„% ‡9‡9 -„$„% ‡9‡9 -„$„% ‡9‡9 ,„$„% ‡9‡9 -„$„% ‡9‡9  , „$„% ‡9‡9  -„$„% ‡9‡9  -„$„% ‡9‡9  , „$„% ‡9‡9  -„$„% ‡9‡9 ‡9·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „$ „% ‡9‡9 ‡9·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „$ „% ‡9‡9‡9‡98‡9‡9‡9„$„%,€É‡=€Ê ‰Ö#‰Ö%„‡>€Ë ‰Ö&‰Ö(„‡?€‡ ‰Ö)‰Ö+„‡=‡>‡?‡9‡9‡9„$„%„!‡9„&z, „'€ë,  /‡7„ „'·z\V4à‰€í€î„'‡9€Ì‡7‡8‡7‡9‡9k€Ì‡7‡8‡7‡9‡9‡@„1€Ÿ€Ÿ„‡A„,„1€Ÿ €Ÿ"„‡B,„1€Ÿ%€Ÿ*„‡B8‡B‡B‡B‡B€±‡Bk€Ì‡@‡A‡@‡B‡B€Ë„.„]‡C„+€,€.„‡D„,„+€/€1„‡E*„+€€€€¡„ k€Ì‡C‡D‡C‡E€Ì€Ó‡E‡C‡D€Ë„.„_‡F„+€”+€”-„‡G„,„+€”.€”0„‡H*„+€”€€€”€„„ k€Ì‡F‡G‡F‡H€Ì‡F‡G€Ë„.„`‡I„+€™5€™7„‡J„,„+€™8€™:„‡K*„+€™€Š€™€Ž„ k€Ì‡I‡J‡I‡K€Ì‡I‡J€Ë„.„a‡L„+€Ÿ+€Ÿ-„‡M„,„+€Ÿ.€Ÿ0„‡N*„+€Ÿ€€€Ÿ€„„ k€Ì‡L‡M‡L‡N€Ì‡L‡M€Ë„.„b‡O„+€¥5€¥7„‡P„,„+€¥8€¥:„‡Q*„+€¥€Š€¥€Ž„ k€Ì‡O‡P‡O‡Q€Ì‡O‡P€Ë„.„c‡R„+1315„‡S„,„+1618„‡T*„+1€’1€–„ mk€Ì‡R‡S‡R€Ò‡T€Ì‡R‡S€Ë„.„d‡U„+6=6?„‡V„,„+6@6B„‡W*„+6€œ6€ „ mk€Ì‡U‡V‡U€Ò‡W€Ì‡U‡V€Ë„.„e‡X„+<3<5„‡Y„,„+<6<8„‡Z*„+<€’<€–„ mk€Ì‡X‡Y‡X€Ò‡Z€Ì‡X‡Y€Ë„.„f‡[„+B=B?„‡\„,„+B@BB„‡]*„+B€œB€ „ mk€Ì‡[‡\‡[€Ò‡]€Ì‡[‡\€Ë„.„g‡^„+€ª€ª„‡_*„+€ª€ª!„ ‡`,„+€ª"€ª(„‡a„,„+€ª)€ª+„k€Ì‡^‡a‡^‡`‡^‡_€Ì€Ó‡_‡`‡a€Ë„.„"‡b„h„+€°.€°4„‡c„,„+€°5€°7„‡d„i„+€°S€°Y„‡e*„+€°|€°€€„‡f‚F„+€°€Ì€°€Ó„k€Ì‡b‡c€Ì‡d‡c‡b‡e‡d‡e‡b‡d‡f€Ì‡f‡c€Ë„.„j‡g„h„+€¶3€¶9„‡h„,„+€¶:€¶<„‡i„i„+€¶X€¶^„‡j*„+€¶€€¶€…„‡k‚F„+€¶€Ö€¶€Ý„k€Ì‡g‡h€Ì‡i‡h‡g‡j‡i‡j‡g ‡i‡k€Ì‡k‡h€Ë„.„k‡l„h„+€½7€½=„‡m„,„+€½>€½@„‡n„i„+€½\€½b„‡o*„+€½€…€½€‰„‡p‚F„+€½€Ú€½€á„k€Ì‡l‡m€Ì‡n‡m‡l‡o‡n‡o‡l ‡n‡p€Ì‡p‡m€Ë„.„l‡q„+P1P3„k€Î€Ì‡qn€Ï‡q„nrr((„oû8r’(N€Õ€¿ ‡r„pU&U'„m‡r‚„‡r„(N€Ò‡r$ ·z\V4à‰„T„U·z\V4à‰€Â‡r„(·z\V4à‰„T)€Ò„)N‡r, ·z\V4à‰„TƇr‡r„( ‡r„*B,  „) ,‚“„* ‡r  „) ‡r  „) ‡r  „) ‡r  „) ‡r „) ‡r „) ‡r „) ‡r „) ‡r „) ‡r „) ‡r „) ‡r „) ‡r „)‡r‚„‡r„)€Ò€Ò€Ò€Ò‡r€Ò‡s„pU&U'„m‡s‚„‡s€Ò‡s€Ò€Õ€¾ ‡t„pX'X(„m‡t‚„‡t„+N€Ò‡t$ ·z\V4à‰„T„U·z\V4à‰€Â‡t„+·z\V4à‰„T)€Ò„,N‡t, ·z\V4à‰„TƇt‡t„+ ‡t„-B,  „, ,‚•„- ‡t  „, ‡t  „, ‡t  „, ‡t  „, ‡t „, ‡t „, ‡t „, ‡t „, ‡t „, ‡t „, ‡t „, ‡t „, ‡t „,‡t‚„‡t„,€Ò€Ò€Ò€Ò‡t€Ò‡u„pX'X(„m‡u‚„‡u€Ò‡u€Ò€Õ€¼ ‡v„p['[(„m‡v‚„‡v„.N€Ò‡v$ ·z\V4à‰„T„U·z\V4à‰€Â‡v„.·z\V4à‰„T)€Ò„/N‡v, ·z\V4à‰„TƇv‡v„. ‡v„0B,  „/ ,‚•„0 ‡v  „/ ‡v  „/ ‡v  „/ ‡v  „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/ ‡v „/‡v‚„‡v„/€Ò€Ò€Ò€Ò‡v€Ò‡w„p['[(„m‡w‚„‡w€Ò‡w€Ò€Õ€½ ‡x„p^(^)„m‡x‚„‡x„1N€Ò‡x$ ·z\V4à‰„T„U·z\V4à‰€Â‡x„1·z\V4à‰„T)€Ò„2N‡x, ·z\V4à‰„TƇx‡x„1 ‡x„3B,  „2 ,‚“„3 ‡x  „2 ‡x  „2 ‡x  „2 ‡x  „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2 ‡x „2‡x‚„‡x„2€Ò€Ò€Ò€Ò‡x€Ò‡y„p^(^)„m‡y‚„‡y€Ò‡y€Ò€Õ ‡z„pa%a&„m‡z‚„‡z„4N€Ò‡z$ ·z\V4à‰„T„U·z\V4à‰€Â‡z„4·z\V4à‰„T)€Ò„5N‡z, ·z\V4à‰„TƇz‡z„4 ‡z,‚• „5 ‡z   „5 ‡z   „5 ‡z   „5 ‡z  „5 ‡z   „5 ‡z  „5 ‡z  „5 ‡z  „5 ‡z  „5 ‡z  „5 ‡z  „5 ‡z  „5 ‡z  „5‡z‚„‡z „5€Ò€Ò€Ò€Ò‡z€Ò‡{„pa%a&„m‡{‚„‡{€Ò‡{€Ò€Õƒb ‡|€‡UPm „6N€Ò $ ·z\V4à‰„T„U·z\V4à‰€Â „6·z\V4à‰„T)‡|€Ò‡|„7N , ·z\V4à‰„TÆ  „6 ‡|‡| ‡|„7 =‡|‡| & „7€Ò‡|€Ò‡|€Ò‡|€Ò €Ò‡|‡}€‡UPm €Ò €Ò‡}€Õ{ ‡~„pg%g&m‡~‚„‡~ „8N€Ò‡~$ ·z\V4à‰„T„U·z\V4à‰€Â‡~„8·z\V4à‰„T) €Ò „9N‡~, ·z\V4à‰„TƇ~‡~„8 ‡~,‚• „9 ‡~   „9 ‡~   „9 ‡~   „9 ‡~  „9 ‡~   „9 ‡~  „9 ‡~  „9 ‡~  „9 ‡~  „9 ‡~  „9 ‡~  „9 ‡~  „9 ‡~  „9‡~‚„‡~ „9€Ò €Ò €Ò €Ò‡~€Ò ‡„pg%g&m‡‚„‡ €Ò‡€Ò €Õ€¹ ‡€„pj&j'm‡€‚„‡€„:N€Ò‡€$ ·z\V4à‰„T„U·z\V4à‰€Â‡€„:·z\V4à‰„T)€Ò„;N‡€, ·z\V4à‰„TƇ€‡€„: ‡€,‚“ „; ‡€  „; ‡€  „; ‡€  „; ‡€ „; ‡€  „; ‡€ „; ‡€ „; ‡€ „; ‡€ „; ‡€ „; ‡€ „; ‡€ „; ‡€ „;‡€‚„‡€„;€Ò€Ò€Ò€Ò‡€€Ò‡„pj&j'm‡‚„‡€Ò‡€Ò€Õ€· ‡‚„pm%m&m‡‚‚„‡‚ „N€Ò‡„$ ·z\V4à‰„T„U·z\V4à‰€Â‡„„>·z\V4à‰„T)€Ò„?N‡„, ·z\V4à‰„TƇ„‡„„> ‡„,‚Õ „? ‡„  „? ‡„  „? ‡„  „? ‡„  „? ‡„ „? ‡„ „? ‡„ „? ‡„ „? ‡„ „? ‡„ „? ‡„ „? ‡„ „? ‡„ „?‡„‚„‡„„?€Ò€Ò€Ò€Ò‡„€Ò‡…„pp&p'm‡…‚„‡…€Ò‡…€Ò€Õ€µ ‡†„ps's(m‡†‚„‡† „@N€Ò‡†$ ·z\V4à‰„T„U·z\V4à‰€Â‡†„@·z\V4à‰„T) €Ò „AN‡†, ·z\V4à‰„TƇ†‡†„@ ‡†·z\V4à‰‚…‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚…  „A€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b ‡†    „A ‡†    „A ‡†    „A ‡†    „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A ‡†   „A‡†‚„‡† „A€Ò €Ò €Ò €Ò‡†€Ò ‡‡„ps's(m‡‡‚„‡‡ €Ò‡‡€Ò €Õ€³ ‡ˆ„pv%v&m‡ˆ‚„‡ˆ „BN€Ò‡ˆ$ ·z\V4à‰„T„U·z\V4à‰€Â‡ˆ„B·z\V4à‰„T) €Ò „CN‡ˆ, ·z\V4à‰„TƇˆ‡ˆ„B ‡ˆ·z\V4à‰‚‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰‚  „C€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b ‡ˆ    „C ‡ˆ    „C ‡ˆ    „C ‡ˆ    „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ   „C ‡ˆ·z\V4à‰€è‚‘·z\V4à‰€Á·z\V4à‰‚  „C‡ˆ‚„‡ˆ „C€Ò €Ò €Ò €Ò‡ˆ€Ò ‡‰„pv%v&m‡‰‚„‡‰ €Ò‡‰€Ò €Õ€º ‡Š„py)y*m‡Š‚„‡Š„DN€Ò‡Š$ ·z\V4à‰„T„U·z\V4à‰€Â‡Š„D·z\V4à‰„T)€Ò„EN‡Š, ·z\V4à‰„TÆ‡Š‡Š„D ‡Š„FB,  „E  ,‚Ô „F ‡Š   „E ‡Š   „E ‡Š   „E ‡Š   „E ‡Š  „E ‡Š  „E ‡Š  „E ‡Š  „E ‡Š  „E ‡Š  „E ‡Š  „E ‡Š „E ‡Š  „E‡Š‚„‡Š„E€Ò€Ò€Ò€Ò‡Š€Ò‡‹„py)y*m‡‹‚„‡‹€Ò‡‹€Ò€Õ€» ‡Œ„p|*|+m‡Œ‚„‡Œ„GN€Ò‡Œ$ ·z\V4à‰„T„U·z\V4à‰€Â‡Œ„G·z\V4à‰„T)€Ò„HN‡Œ, ·z\V4à‰„TƇŒ‡Œ„G ‡Œ„IB,  „H  ,‚Ô „I ‡Œ   „H ‡Œ   „H ‡Œ   „H ‡Œ   „H ‡Œ  „H ‡Œ „H ‡Œ  „H ‡Œ  „H ‡Œ  „H ‡Œ  „H ‡Œ  „H ‡Œ „H ‡Œ  „H‡Œ‚„‡Œ„H€Ò€Ò€Ò€Ò‡Œ€Ò‡„p|*|+m‡‚„‡€Ò‡€Ò€Õ€À ‡Ž„p'(m‡Ž‚„‡Ž„JN€Ò‡Ž$ ·z\V4à‰„T„U·z\V4à‰€Â‡Ž„J·z\V4à‰„T)€Ò„KN‡Ž, ·z\V4à‰„TÆ‡Ž‡Ž„J ‡Ž·z\V4à‰€Á‚†·z\V4à‰s·z\V4à‰‚‡·z\V4à‰‚ˆ·z\V4à‰€Á „K€§`ab·z\V4à‰‚‚Ž·z\V4à‰‚b ‡Ž ·z\V4à‰€è€é·z\V4à‰‚·z\V4à‰€Á  „K ‡Ž ·z\V4à‰€è€é·z\V4à‰‚…·z\V4à‰€Á  „K ‡Ž ·z\V4à‰€è€é·z\V4à‰ƒ*·z\V4à‰€Á  „K ‡Ž ·z\V4à‰€è€é·z\V4à‰H·z\V4à‰€Á  „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒl·z\V4à‰€Á „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒ*·z\V4à‰€Á   „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒm·z\V4à‰€Á „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒn·z\V4à‰€Á „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒo·z\V4à‰€Á „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒp·z\V4à‰€Á „K ‡Ž·z\V4à‰€è€é·z\V4à‰ƒn·z\V4à‰€Á  „K ‡Ž·z\V4à‰€è€é·z\V4à‰€Ã·z\V4à‰€Á „K ‡Ž „K‡Ž‚„‡Ž„K€Ò€Ò€Ò€Ò‡Ž€Ò‡„p'(m‡‚„‡€Ò‡€Ò€Õ€Ç ‡„p€‚$€‚%m‡‚„‡„LN€Ò‡$ ·z\V4à‰„T„U·z\V4à‰€Â‡„L·z\V4à‰„T)€Ò„MN‡, ·z\V4à‰„TƇ‡„L ‡·z\V4à‰ƒ ‚†·z\V4à‰s·z\V4à‰ƒ  „M ‡  „M ‡  „M ‡  „M ‡  „M ‡ „M ‡ „M ‡ „M ‡ „M ‡ „M ‡ „M ‡ „M ‡ „M ‡ „M‡‚„‡„M€Ò€Ò€Ò€Ò‡€Ò‡‘„p€‚$€‚%m‡‘‚„‡‘€Ò‡‘€Ò„qFY’N†!€Ö„r€Ö„s€Ö„t€Ö„u€Ö„v€Ö„w‡’„p„m „NN€Ò‡’$ „O€Æ‡’$  2€Ö„v‡“„p„m €Ò‡“‡“‡’„N„O‡’€Ò‡’‡’‡”„p„m €Ò‡”‡”€Ö„x€Ö„y€Ö„z€Ö„{€Ö„|€Ö„}‡•„p++„m „PN‡•$ „Q€Æ€Ò‡•$  2€Ö„|‡–„p))„m ‡–€Ò‡–‡•„P„Q€Ò‡•‡•€Ò‡•‡—„p++„m ‡—€Ò‡—€Ö„~€Ö„€Ö„€€Ö„€Ö„‚€Ö„ƒ‡˜„p77„m „RN€Ò‡˜$ „S€Æ€Ò‡˜$  2€Ö„‚‡™„p55„m €Ò‡™€Ò‡™‡˜„R„S€Ò‡˜€Ò‡˜€Ò‡˜‡š„p77„m €Ò‡š€Ò‡š€Ö„„‡›€Ê„p;";#m‡›‡œ8‡›‡œ‡‡‡œ‡œ€ËUP‡›‡œ8‡›‡œ‡‡‡‚UPm‡›‡œ„TN€Ò‡›$ „U€Æ‡œ$ ·z\V4à‰„T„U·z\V4à‰€Â‡›„T·z\V4à‰„T)‡€Ò‡„VN‡›, ·z\V4à‰„TƇ›‡›„T ‡œ ‡›   „V„U ‡œ ‡›   „V„U ‡œ ‡›   „V„U ‡œ ‡›   „V„U ‡œ‡› „V„U ‡œ‡› „V„U ‡œ‡› „V„U ‡œ‡› „V„U ‡œ‡›   „V„U ‡œ‡›  „V„U ‡œ‡›  „V„U ‡œ‡›   „V„U ‡œ‡›  „V„U ‡œ‡› ‡›·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „V „U ‡œ‡› ‡·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „V „U ‡›‡›‡›‡œ8‡›‡œ‡„V„U,‚Ú‡ž€Ê ‰¯‰¯„‡Ÿ€Ë ‰¯‰¯!„‡ €‡ ‰¯"‰¯$„‡ž‡Ÿ‡ ‡›‡œ‡„V„U€Ò‡€Ò‡€Ò‡‡œ€Ò‡€Ò‡›‡œ€Ò‡‡¡€Ê„p;";#m‡¡‡¢8‡¡‡¢‡£‡£‡¢‡¢€ËUP‡¡‡¢8‡¡‡¢‡£‡£‡£‚UPm‡¡‡¢€Ò‡¡‡¢€Ò‡£€Ö„…‡¤€ÊUP‡¤‡¥8‡¤‡¥‡¦‡¦‡¥‡¥€Ë„p<#<$m‡¤‡¥8‡¤‡¥‡¦‡¦‡¦‚UPm‡¤‡¥„WN‡¤$ „X€Æ€Ò‡¥$ ·z\V4à‰„T„U·z\V4à‰€Â‡¥„X·z\V4à‰„T)‡¦€Ò‡¦„Y€Æ‡¥, ·z\V4à‰„TƇ¥‡¥„X ‡¥ ‡¤   „W„Y ‡¥ ‡¤   „W„Y ‡¥ ‡¤   „W„Y ‡¥ ‡¤   „W„Y ‡¥‡¤ „W„Y ‡¥‡¤ „W„Y ‡¥‡¤ „W„Y ‡¥‡¤ „W„Y ‡¥‡¤   „W„Y ‡¥‡¤  „W„Y ‡¥‡¤  „W„Y ‡¥‡¤   „W„Y ‡¥‡¤  „W„Y ‡¥‡¤ ‡¤·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „W „Y ‡¥‡¤ ‡¦·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „W „Y ‡¤‡¤‡¤‡¥8‡¤‡¥‡¦„W„Y,‚Ú‡§€Ê ‰¯‰¯„‡¨€Ë ‰¯‰¯!„‡©€‡ ‰¯"‰¯$„‡§‡¨‡©‡¤‡¥‡¦„W„Y€Ò‡¦€Ò‡¦€Ò‡¦€Ò‡¥€Ò‡¦‡¤€Ò‡¥€Ò‡¦‡ª€ÊUP‡ª‡«8‡ª‡«‡¬‡¬‡«‡«€Ë„p<#<$m‡ª‡«8‡ª‡«‡¬‡¬‡¬‚UPm‡ª‡«‡ª€Ò‡«€Ò‡¬€Ö„†‡­€Ê„p=#=$m‡­‡®8‡­‡®‡¯‡¯‡®‡®€Ë„p=4=5m‡­‡®8‡­‡®‡¯‡¯‡¯‚UPm‡­‡®„ZN€Ò‡­$ „[€Æ€Ò‡®$ ·z\V4à‰„T„U·z\V4à‰€Â‡­„Z·z\V4à‰„T„U·z\V4à‰€Â‡®„[·z\V4à‰„T)‡¯€Ò‡¯„\N‡­, ·z\V4à‰„TƇ­‡­„Z„]€Æ‡®, ·z\V4à‰„TƇ®‡®„[ ‡® ‡­   „\„] ‡® ‡­   „\„] ‡® ‡­   „\„] ‡® ‡­   „\„] ‡®‡­ „\„] ‡®‡­ „\„] ‡®‡­ „\„] ‡®‡­ „\„] ‡®‡­   „\„] ‡®‡­  „\„] ‡®‡­  „\„] ‡®‡­   „\„] ‡®‡­  „\„] ‡®‡­ ‡­·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s „\ „] ‡®‡­ ‡¯·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „\ „] ‡­‡­‡­‡®8‡­‡®‡¯„\„],‚Ú‡°€Ê ‰¯‰¯„‡±€Ë ‰¯‰¯!„‡²€‡ ‰¯"‰¯$„‡°‡±‡²‡­‡®‡¯„\„]€Ò‡¯€Ò‡¯€Ò‡¯€Ò‡®€Ò‡¯€Ò‡­€Ò‡®€Ò‡¯‡³€Ê„p=#=$m‡³‡´8‡³‡´‡µ‡µ‡´‡´€Ë„p=4=5m‡³‡´8‡³‡´‡µ‡µ‡µ‚UPm‡³‡´€Ò‡³€Ò‡´€Ò‡µ€Ö„‡‡¶€Ê„p?"?#m‡¶‡·7‡¶‡·‡¸‡¸‡·‡·€ËUP‡¶‡·7‡¶‡·‡¸‡¸‡¸‚UPm‡¶‡·„^N€Ò‡¶$ „_€Æ‡·$ ·z\V4à‰„T„U·z\V4à‰€Â‡¶„^·z\V4à‰„T)‡¸€Ò‡¸„`N‡¶, ·z\V4à‰„TƇ¶‡¶„^ ‡· ‡¶   „`„_ ‡· ‡¶   „`„_ ‡· ‡¶   „`„_ ‡· ‡¶   „`„_ ‡·‡¶ „`„_ ‡·‡¶ „`„_ ‡·‡¶ „`„_ ‡·‡¶ „`„_ ‡·‡¶   „`„_ ‡·‡¶  „`„_ ‡·‡¶   „`„_ ‡·‡¶  „`„_ ‡·‡¶ ‡¸·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „` „_‡¶‡·7‡¶‡·‡¸„`„_€Ò‡¸€Ò‡¸€Ò‡¸‡·€Ò‡¸€Ò‡¶‡·€Ò‡¸‡¹€Ê„p?"?#m‡¹‡º7‡¹‡º‡»‡»‡º‡º€ËUP‡¹‡º7‡¹‡º‡»‡»‡»‚UPm‡¹‡º€Ò‡¹‡º€Ò‡»€Ö„ˆ‡¼€ÊUP‡¼‡½7‡¼‡½‡¾‡¾‡½‡½€Ë„p@#@$m‡¼‡½7‡¼‡½‡¾‡¾‡¾‚UPm‡¼‡½„aN‡¼$ „b€Æ€Ò‡½$ ·z\V4à‰„T„U·z\V4à‰€Â‡½„b·z\V4à‰„T)‡¾€Ò‡¾„c€Æ‡½, ·z\V4à‰„TƇ½‡½„b ‡½ ‡¼   „a„c ‡½ ‡¼   „a„c ‡½ ‡¼   „a„c ‡½ ‡¼   „a„c ‡½‡¼ „a„c ‡½‡¼ „a„c ‡½‡¼ „a„c ‡½‡¼ „a„c ‡½‡¼   „a„c ‡½‡¼  „a„c ‡½‡¼   „a„c ‡½‡¼  „a„c ‡½‡¼ ‡¾·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „a „c‡¼‡½7‡¼‡½‡¾„a„c€Ò‡¾€Ò‡¾€Ò‡¾€Ò‡½€Ò‡¾‡¼€Ò‡½€Ò‡¾‡¿€ÊUP‡¿‡À7‡¿‡À‡Á‡Á‡À‡À€Ë„p@#@$m‡¿‡À7‡¿‡À‡Á‡Á‡Á‚UPm‡¿‡À‡¿€Ò‡À€Ò‡Á€Ö„‰‡Â€Ê„pA#A$m‡Â‡Ã7‡Â‡Ã‡Ä‡Ä‡Ã‡Ã€Ë„pA4A5m‡Â‡Ã7‡Â‡Ã‡Ä‡Ä‡Ä‚UPm‡Â‡Ã„dN€Ò‡Â$ „e€Æ€Ò‡Ã$ ·z\V4à‰„T„U·z\V4à‰€Â‡Â„d·z\V4à‰„T„U·z\V4à‰€Â‡Ã„e·z\V4à‰„T)‡Ä€Ò‡Ä„fN‡Â, ·z\V4à‰„TƇ‡„d„g€Æ‡Ã, ·z\V4à‰„TƇÇÄe ‡Ã ‡Â   „f„g ‡Ã ‡Â   „f„g ‡Ã ‡Â   „f„g ‡Ã ‡Â   „f„g ‡Ã‡Â „f„g ‡Ã‡Â „f„g ‡Ã‡Â „f„g ‡Ã‡Â „f„g ‡Ã‡Â   „f„g ‡Ã‡Â  „f„g ‡Ã‡Â   „f„g ‡Ã‡Â  „f„g ‡Ã‡Â ‡Ä·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „f „g‡Â‡Ã7‡Â‡Ã‡Ä„f„g€Ò‡Ä€Ò‡Ä€Ò‡Ä€Ò‡Ã€Ò‡Ä€Ò‡Â€Ò‡Ã€Ò‡Ä‡Å€Ê„pA#A$m‡Å‡Æ7‡Å‡Æ‡Ç‡Ç‡Æ‡Æ€Ë„pA4A5m‡Å‡Æ7‡Å‡Æ‡Ç‡Ç‡Ç‚UPm‡Å‡Æ€Ò‡Å€Ò‡Æ€Ò‡Ç€Ö„Š‡È€Ê„pC%C&m‡È‡ÉƒU‡È‡É‡Ê‡Ê‡É‡É€ËUP‡È‡ÉƒU‡È‡É‡Ê‡Ê‡Ê‚UPm‡È‡É„hN€Ò‡È$ „i€Æ‡É$ ·z\V4à‰„T„U·z\V4à‰€Â‡È„h·z\V4à‰„T)‡Ê€Ò‡Ê„jN‡È, ·z\V4à‰„TƇȇȄh ‡É ‡È   „j„i ‡É ‡È   „j„i ‡É ‡È   „j„i ‡É ‡È   „j„i ‡É‡È „j„i ‡É‡È „j„i ‡É‡È „j„i ‡É‡È „j„i ‡É‡È   „j„i ‡É‡È  „j„i ‡É‡È   „j„i ‡É‡È  „j„i ‡É‡È ‡Ê·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „j „i ‡È‡È‡È‡ÉƒU‡È‡É‡Ê„j„i,‚Û‡Ë€Ê ‰ü‰ü„‡Ì€Ë ‰ü‰ü!„‡Í€‡ ‰ü"‰ü$„‡Ë‡Ì‡Í‡È‡É‡Ê„j„i€Ò‡Ê€Ò‡Ê€Ò‡Ê‡É€Ò‡Ê€Ò‡È‡É€Ò‡Ê‡Î€Ê„pC%C&m‡Î‡ÏƒU‡Î‡Ï‡Ð‡Ð‡Ï‡Ï€ËUP‡Î‡ÏƒU‡Î‡Ï‡Ð‡Ð‡Ð‚UPm‡Î‡Ï€Ò‡Î‡Ï€Ò‡Ð€Ö„‹‡Ñ€ÊUP‡Ñ‡ÒƒU‡Ñ‡Ò‡Ó‡Ó‡Ò‡Ò€Ë„pD&D'm‡Ñ‡ÒƒU‡Ñ‡Ò‡Ó‡Ó‡Ó‚UPm‡Ñ‡Ò„kN‡Ñ$ „l€Æ€Ò‡Ò$ ·z\V4à‰„T„U·z\V4à‰€Â‡Ò„l·z\V4à‰„T)‡Ó€Ò‡Ó„m€Æ‡Ò, ·z\V4à‰„TƇ҇҄l ‡Ò ‡Ñ   „k„m ‡Ò ‡Ñ   „k„m ‡Ò ‡Ñ   „k„m ‡Ò ‡Ñ   „k„m ‡Ò‡Ñ „k„m ‡Ò‡Ñ „k„m ‡Ò‡Ñ „k„m ‡Ò‡Ñ „k„m ‡Ò‡Ñ   „k„m ‡Ò‡Ñ  „k„m ‡Ò‡Ñ   „k„m ‡Ò‡Ñ  „k„m ‡Ò‡Ñ ‡Ó·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „k „m ‡Ñ‡Ñ‡Ñ‡ÒƒU‡Ñ‡Ò‡Ó„k„m,‚Û‡Ô€Ê ‰ü‰ü„‡Õ€Ë ‰ü‰ü!„‡Ö€‡ ‰ü"‰ü$„‡Ô‡Õ‡Ö‡Ñ‡Ò‡Ó„k„m€Ò‡Ó€Ò‡Ó€Ò‡Ó€Ò‡Ò€Ò‡Ó‡Ñ€Ò‡Ò€Ò‡Ó‡×€ÊUP‡×‡ØƒU‡×‡Ø‡Ù‡Ù‡Ø‡Ø€Ë„pD&D'm‡×‡ØƒU‡×‡Ø‡Ù‡Ù‡Ù‚UPm‡×‡Ø‡×€Ò‡Ø€Ò‡Ù€Ö„Œ‡Ú€Ê„pE%E&m‡Ú‡ÛƒU‡Ú‡Û‡Ü‡Ü‡Û‡Û€Ë„pE6E7m‡Ú‡ÛƒU‡Ú‡Û‡Ü‡Ü‡Ü‚UPm‡Ú‡Û„nN€Ò‡Ú$ „o€Æ€Ò‡Û$ ·z\V4à‰„T„U·z\V4à‰€Â‡Ú„n·z\V4à‰„T„U·z\V4à‰€Â‡Û„o·z\V4à‰„T)‡Ü€Ò‡Ü„pN‡Ú, ·z\V4à‰„TƇڇڄn„q€Æ‡Û, ·z\V4à‰„TƇۇۄo ‡Û ‡Ú   „p„q ‡Û ‡Ú   „p„q ‡Û ‡Ú   „p„q ‡Û ‡Ú   „p„q ‡Û‡Ú „p„q ‡Û‡Ú „p„q ‡Û‡Ú „p„q ‡Û‡Ú „p„q ‡Û‡Ú   „p„q ‡Û‡Ú  „p„q ‡Û‡Ú   „p„q ‡Û‡Ú  „p„q ‡Û‡Ú ‡Ü·z\V4à‰€ÁƒU·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „p „q ‡Ú‡Ú‡Ú‡ÛƒU‡Ú‡Û‡Ü„p„q,‚Û‡Ý€Ê ‰ü‰ü„‡Þ€Ë ‰ü‰ü!„‡ß€‡ ‰ü"‰ü$„‡Ý‡Þ‡ß‡Ú‡Û‡Ü„p„q€Ò‡Ü€Ò‡Ü€Ò‡Ü€Ò‡Û€Ò‡Ü€Ò‡Ú€Ò‡Û€Ò‡Ü‡à€Ê„pE%E&m‡à‡áƒU‡à‡á‡â‡â‡á‡á€Ë„pE6E7m‡à‡áƒU‡à‡á‡â‡â‡â‚UPm‡à‡á€Ò‡à€Ò‡á€Ò‡â€Ö„‡ã€Ê„pG%G&m‡ã‡äƒW‡ã‡ä‡å‡å‡ä‡ä€ËUP‡ã‡äƒW‡ã‡ä‡å‡å‡å‚UPm‡ã‡ä„rN€Ò‡ã$ „s€Æ‡ä$ ·z\V4à‰„T„U·z\V4à‰€Â‡ã„r·z\V4à‰„T)‡å€Ò‡å„tN‡ã, ·z\V4à‰„TƇã‡ã„r ‡ä ‡ã    „t„s ‡ä ‡ã    „t„s ‡ä ‡ã    „t„s ‡ä ‡ã    „t„s ‡ä‡ã  „t„s ‡ä‡ã  „t„s ‡ä‡ã  „t„s ‡ä‡ã  „t„s ‡ä‡ã    „t„s ‡ä‡ã   „t„s ‡ä‡ã    „t„s ‡ä‡ã   „t„s ‡ä‡ã ‡å·z\V4à‰€ÁƒW·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „t „s‡ã‡äƒW‡ã‡ä‡å„t„s€Ò‡å€Ò‡å€Ò‡å‡ä€Ò‡å€Ò‡ã‡ä€Ò‡å‡æ€Ê„pG%G&m‡æ‡çƒW‡æ‡ç‡è‡è‡ç‡ç€ËUP‡æ‡çƒW‡æ‡ç‡è‡è‡è‚UPm‡æ‡ç€Ò‡æ‡ç€Ò‡è€Ö„އé€ÊUP‡é‡êƒW‡é‡ê‡ë‡ë‡ê‡ê€Ë„pH&H'm‡é‡êƒW‡é‡ê‡ë‡ë‡ë‚UPm‡é‡ê„uN‡é$ „v€Æ€Ò‡ê$ ·z\V4à‰„T„U·z\V4à‰€Â‡ê„v·z\V4à‰„T)‡ë€Ò‡ë„w€Æ‡ê, ·z\V4à‰„TƇê‡ê„v ‡ê ‡é    „u„w ‡ê ‡é    „u„w ‡ê ‡é    „u„w ‡ê ‡é    „u„w ‡ê‡é  „u„w ‡ê‡é  „u„w ‡ê‡é  „u„w ‡ê‡é  „u„w ‡ê‡é    „u„w ‡ê‡é   „u„w ‡ê‡é    „u„w ‡ê‡é   „u„w ‡ê‡é ‡ë·z\V4à‰€ÁƒW·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „u „w‡é‡êƒW‡é‡ê‡ë„u„w€Ò‡ë€Ò‡ë€Ò‡ë€Ò‡ê€Ò‡ë‡é€Ò‡ê€Ò‡ë‡ì€ÊUP‡ì‡íƒW‡ì‡í‡î‡î‡í‡í€Ë„pH&H'm‡ì‡íƒW‡ì‡í‡î‡î‡î‚UPm‡ì‡í‡ì€Ò‡í€Ò‡î€Ö„‡ï€Ê„pI%I&m‡ï‡ðƒW‡ï‡ð‡ñ‡ñ‡ð‡ð€Ë„pI6I7m‡ï‡ðƒW‡ï‡ð‡ñ‡ñ‡ñ‚UPm‡ï‡ð„xN€Ò‡ï$ „y€Æ€Ò‡ð$ ·z\V4à‰„T„U·z\V4à‰€Â‡ï„x·z\V4à‰„T„U·z\V4à‰€Â‡ð„y·z\V4à‰„T)‡ñ€Ò‡ñ„zN‡ï, ·z\V4à‰„TƇï‡ï„x„{€Æ‡ð, ·z\V4à‰„TƇð‡ð„y ‡ð ‡ï    „z„{ ‡ð ‡ï    „z„{ ‡ð ‡ï    „z„{ ‡ð ‡ï    „z„{ ‡ð‡ï  „z„{ ‡ð‡ï  „z„{ ‡ð‡ï  „z„{ ‡ð‡ï  „z„{ ‡ð‡ï    „z„{ ‡ð‡ï   „z„{ ‡ð‡ï    „z„{ ‡ð‡ï   „z„{ ‡ð‡ï ‡ñ·z\V4à‰€ÁƒW·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „z „{‡ï‡ðƒW‡ï‡ð‡ñ„z„{€Ò‡ñ€Ò‡ñ€Ò‡ñ€Ò‡ð€Ò‡ñ€Ò‡ï€Ò‡ð€Ò‡ñ‡ò€Ê„pI%I&m‡ò‡óƒW‡ò‡ó‡ô‡ô‡ó‡ó€Ë„pI6I7m‡ò‡óƒW‡ò‡ó‡ô‡ô‡ô‚UPm‡ò‡ó€Ò‡ò€Ò‡ó€Ò‡ô€Ö„‡õ€Ê„pK%K&m‡õ‡öƒV‡õ‡ö‡÷‡÷‡ö‡ö€ËUP‡õ‡öƒV‡õ‡ö‡÷‡÷‡÷‚UPm‡õ‡ö„|N€Ò‡õ$ „}€Æ‡ö$ ·z\V4à‰„T„U·z\V4à‰€Â‡õ„|·z\V4à‰„T)‡÷€Ò‡÷„~N‡õ, ·z\V4à‰„TƇõ‡õ„| ‡ö ‡õ   „~„} ‡ö ‡õ   „~„} ‡ö ‡õ   „~„} ‡ö ‡õ   „~„} ‡ö‡õ  „~„} ‡ö‡õ  „~„} ‡ö‡õ „~„} ‡ö‡õ  „~„} ‡ö‡õ   „~„} ‡ö‡õ   „~„} ‡ö‡õ   „~„} ‡ö‡õ   „~„} ‡ö‡õ ‡÷·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „~ „}‡õ‡öƒV‡õ‡ö‡÷„~„}€Ò‡÷€Ò‡÷€Ò‡÷‡ö€Ò‡÷€Ò‡õ‡ö€Ò‡÷‡ø€Ê„pK%K&m‡ø‡ùƒV‡ø‡ù‡ú‡ú‡ù‡ù€ËUP‡ø‡ùƒV‡ø‡ù‡ú‡ú‡ú‚UPm‡ø‡ù€Ò‡ø‡ù€Ò‡ú€Ö„‘‡û€ÊUP‡û‡üƒV‡û‡ü‡ý‡ý‡ü‡ü€Ë„pL&L'm‡û‡üƒV‡û‡ü‡ý‡ý‡ý‚UPm‡û‡ü„N‡û$ „€€Æ€Ò‡ü$ ·z\V4à‰„T„U·z\V4à‰€Â‡ü„€·z\V4à‰„T)‡ý€Ò‡ý„€Æ‡ü, ·z\V4à‰„TƇü‡ü„€ ‡ü ‡û   „„ ‡ü ‡û   „„ ‡ü ‡û   „„ ‡ü ‡û   „„ ‡ü‡û  „„ ‡ü‡û  „„ ‡ü‡û „„ ‡ü‡û  „„ ‡ü‡û   „„ ‡ü‡û   „„ ‡ü‡û   „„ ‡ü‡û   „„ ‡ü‡û ‡ý·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „ „‡û‡üƒV‡û‡ü‡ý„„€Ò‡ý€Ò‡ý€Ò‡ý€Ò‡ü€Ò‡ý‡û€Ò‡ü€Ò‡ý‡þ€ÊUP‡þ‡ÿƒV‡þ‡ÿˆˆ‡ÿ‡ÿ€Ë„pL&L'm‡þ‡ÿƒV‡þ‡ÿˆˆˆ‚UPm‡þ‡ÿ‡þ€Ò‡ÿ€Òˆ€Ö„’ˆ€Ê„pM%M&mˆˆƒVˆˆˆˆˆˆ€Ë„pM6M7mˆˆƒVˆˆˆˆˆ‚UPmˆˆ„‚N€Òˆ$ „ƒ€Æ€Òˆ$ ·z\V4à‰„T„U·z\V4à‰€Âˆ„‚·z\V4à‰„T„U·z\V4à‰€Âˆ„ƒ·z\V4à‰„T)ˆ€Òˆ„„Nˆ, ·z\V4à‰„Tƈˆ„‚„…€Æˆ, ·z\V4à‰„Tƈˆ„ƒ ˆ ˆ   „„„… ˆ ˆ   „„„… ˆ ˆ   „„„… ˆ ˆ   „„„… ˆˆ  „„„… ˆˆ  „„„… ˆˆ „„„… ˆˆ  „„„… ˆˆ   „„„… ˆˆ   „„„… ˆˆ   „„„… ˆˆ   „„„… ˆˆ ˆ·z\V4à‰€ÁƒV·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á „„ „…ˆˆƒVˆˆˆ„„„…€Òˆ€Òˆ€Òˆ€Òˆ€Òˆ€Òˆ€Òˆ€Òˆˆ€Ê„pM%M&mˆˆƒVˆˆˆˆˆˆ€Ë„pM6M7mˆˆƒVˆˆˆˆˆ‚UPmˆˆ€Òˆ€Òˆ€Òˆ„“††„”­ ††„•=††€×„.„lˆ„+z\z^„k€Î€Ìˆl ˆ„–2 ††€Ø„.„lˆ„+r:r<„k€Îˆˆ‚j;  †‰0€Ù„—„˜ˆ €Ê„™  „€Úˆ ˆ €Ù„—)ˆ €Ê„™  „ˆ €Úˆ €Ù„š„˜ˆ €Ê„™''„ˆ €Ë„™''„€Ûˆ ˆ ˆ €Ù„š„›ˆ €Ê„™''„ˆ€Ë„™''„€Ûˆ ˆˆ€Ù„š)ˆ€Ê„™''„ˆ€Ë„™''„ˆˆ€Ûˆˆ€Ù„œ„˜ˆ€Ê„™11„ˆ€Ë„™11„ˆ‚„™11"„€Üˆˆˆˆ€Ù„œ„›ˆ€Ê„™11„ˆ€Ë„™11„ˆ‚„™11"„€Üˆˆˆˆ€Ù„œ„ˆ€Ê„™11„ˆ€Ë„™11„ˆ‚„™11"„€Üˆˆˆˆ€Ù„œ)ˆ€Ê„™11„ˆ€Ë„™11„ˆ‚„™11"„ˆˆˆ€Üˆˆˆ€Ù„ž„˜ˆ€Ê„™??„ˆ€Ë„™??„ˆ‚„™??"„ˆ ‚!„™?$?'„€Ýˆˆˆˆ ˆ€Ù„ž„›ˆ!€Ê„™??„ˆ"€Ë„™??„ˆ#‚„™??"„ˆ$‚!„™?$?'„€Ýˆ!ˆ"ˆ#ˆ$ˆ"€Ù„ž„ˆ%€Ê„™??„ˆ&€Ë„™??„ˆ'‚„™??"„ˆ(‚!„™?$?'„€Ýˆ%ˆ&ˆ'ˆ(ˆ'€Ù„ž„Ÿˆ)€Ê„™??„ˆ*€Ë„™??„ˆ+‚„™??"„ˆ,‚!„™?$?'„€Ýˆ)ˆ*ˆ+ˆ,ˆ,€Ù„ž)ˆ-€Ê„™??„ˆ.€Ë„™??„ˆ/‚„™??"„ˆ0‚!„™?$?'„ˆ-ˆ.ˆ/ˆ0€Ýˆ-ˆ.ˆ/ˆ0€Ù„ „˜ˆ1€Ê„™QQ„ˆ2€Ë„™QQ„ˆ3‚„™QQ"„ˆ4‚!„™Q$Q'„ˆ5‚#„™Q)Q,„€Þˆ1ˆ2ˆ3ˆ4ˆ5ˆ1€Ù„ „›ˆ6€Ê„™QQ„ˆ7€Ë„™QQ„ˆ8‚„™QQ"„ˆ9‚!„™Q$Q'„ˆ:‚#„™Q)Q,„€Þˆ6ˆ7ˆ8ˆ9ˆ:ˆ7€Ù„ „ˆ;€Ê„™QQ„ˆ<€Ë„™QQ„ˆ=‚„™QQ"„ˆ>‚!„™Q$Q'„ˆ?‚#„™Q)Q,„€Þˆ;ˆ<ˆ=ˆ>ˆ?ˆ=€Ù„ „Ÿˆ@€Ê„™QQ„ˆA€Ë„™QQ„ˆB‚„™QQ"„ˆC‚!„™Q$Q'„ˆD‚#„™Q)Q,„€Þˆ@ˆAˆBˆCˆDˆC€Ù„ „¡ˆE€Ê„™QQ„ˆF€Ë„™QQ„ˆG‚„™QQ"„ˆH‚!„™Q$Q'„ˆI‚#„™Q)Q,„€ÞˆEˆFˆGˆHˆIˆI€Ù„ )ˆJ€Ê„™QQ„ˆK€Ë„™QQ„ˆL‚„™QQ"„ˆM‚!„™Q$Q'„ˆN‚#„™Q)Q,„ˆJˆKˆLˆMˆN€ÞˆJˆKˆLˆMˆN€Ù„¢„˜ˆO€Ê„™ee„ˆP€Ë„™ee„ˆQ‚„™ee"„ˆR‚!„™e$e'„ˆS‚#„™e)e,„ˆT‚%„™e.e1„€ßˆOˆPˆQˆRˆSˆTˆO€Ù„¢„›ˆU€Ê„™ee„ˆV€Ë„™ee„ˆW‚„™ee"„ˆX‚!„™e$e'„ˆY‚#„™e)e,„ˆZ‚%„™e.e1„€ßˆUˆVˆWˆXˆYˆZˆV€Ù„¢„ˆ[€Ê„™ee„ˆ\€Ë„™ee„ˆ]‚„™ee"„ˆ^‚!„™e$e'„ˆ_‚#„™e)e,„ˆ`‚%„™e.e1„€ßˆ[ˆ\ˆ]ˆ^ˆ_ˆ`ˆ]€Ù„¢„Ÿˆa€Ê„™ee„ˆb€Ë„™ee„ˆc‚„™ee"„ˆd‚!„™e$e'„ˆe‚#„™e)e,„ˆf‚%„™e.e1„€ßˆaˆbˆcˆdˆeˆfˆd€Ù„¢„¡ˆg€Ê„™ee„ˆh€Ë„™ee„ˆi‚„™ee"„ˆj‚!„™e$e'„ˆk‚#„™e)e,„ˆl‚%„™e.e1„€ßˆgˆhˆiˆjˆkˆlˆk€Ù„¢„£ˆm€Ê„™ee„ˆn€Ë„™ee„ˆo‚„™ee"„ˆp‚!„™e$e'„ˆq‚#„™e)e,„ˆr‚%„™e.e1„€ßˆmˆnˆoˆpˆqˆrˆr€Ù„¢)ˆs€Ê„™ee„ˆt€Ë„™ee„ˆu‚„™ee"„ˆv‚!„™e$e'„ˆw‚#„™e)e,„ˆx‚%„™e.e1„ˆsˆtˆuˆvˆwˆx€ßˆsˆtˆuˆvˆwˆx€Ù„¤„˜ˆy€Ê„™||„ˆz€Ë„™||„ˆ{‚„™||"„ˆ|‚!„™|$|'„ˆ}‚#„™|)|,„ˆ~‚%„™|.|1„ˆ‚'„™|3|6„€àˆyˆzˆ{ˆ|ˆ}ˆ~ˆˆy€Ù„¤„›ˆ€€Ê„™||„ˆ€Ë„™||„ˆ‚‚„™||"„ˆƒ‚!„™|$|'„ˆ„‚#„™|)|,„ˆ…‚%„™|.|1„ˆ†‚'„™|3|6„€àˆ€ˆˆ‚ˆƒˆ„ˆ…ˆ†ˆ€Ù„¤„ˆ‡€Ê„™||„ˆˆ€Ë„™||„ˆ‰‚„™||"„ˆŠ‚!„™|$|'„ˆ‹‚#„™|)|,„ˆŒ‚%„™|.|1„ˆ‚'„™|3|6„€àˆ‡ˆˆˆ‰ˆŠˆ‹ˆŒˆˆ‰€Ù„¤„ŸˆŽ€Ê„™||„ˆ€Ë„™||„ˆ‚„™||"„ˆ‘‚!„™|$|'„ˆ’‚#„™|)|,„ˆ“‚%„™|.|1„ˆ”‚'„™|3|6„€àˆŽˆˆˆ‘ˆ’ˆ“ˆ”ˆ‘€Ù„¤„¡ˆ•€Ê„™||„ˆ–€Ë„™||„ˆ—‚„™||"„ˆ˜‚!„™|$|'„ˆ™‚#„™|)|,„ˆš‚%„™|.|1„ˆ›‚'„™|3|6„€àˆ•ˆ–ˆ—ˆ˜ˆ™ˆšˆ›ˆ™€Ù„¤„£ˆœ€Ê„™||„ˆ€Ë„™||„ˆž‚„™||"„ˆŸ‚!„™|$|'„ˆ ‚#„™|)|,„ˆ¡‚%„™|.|1„ˆ¢‚'„™|3|6„€àˆœˆˆžˆŸˆ ˆ¡ˆ¢ˆ¡€Ù„¤„¥ˆ£€Ê„™||„ˆ¤€Ë„™||„ˆ¥‚„™||"„ˆ¦‚!„™|$|'„ˆ§‚#„™|)|,„ˆ¨‚%„™|.|1„ˆ©‚'„™|3|6„€àˆ£ˆ¤ˆ¥ˆ¦ˆ§ˆ¨ˆ©ˆ©€Ù„¤)ˆª€Ê„™||„ˆ«€Ë„™||„ˆ¬‚„™||"„ˆ­‚!„™|$|'„ˆ®‚#„™|)|,„ˆ¯‚%„™|.|1„ˆ°‚'„™|3|6„ˆªˆ«ˆ¬ˆ­ˆ®ˆ¯ˆ°€àˆªˆ«ˆ¬ˆ­ˆ®ˆ¯ˆ°€Ù„¦„˜ˆ±€Ê„™€•€•„ˆ²€Ë„™€•€•„ˆ³‚„™€•€•"„ˆ´‚!„™€•$€•'„ˆµ‚#„™€•)€•,„ˆ¶‚%„™€•.€•1„ˆ·‚'„™€•3€•6„ˆ¸„§„™€•8€•;„€áˆ±ˆ²ˆ³ˆ´ˆµˆ¶ˆ·ˆ¸ˆ±€Ù„¦„›ˆ¹€Ê„™€•€•„ˆº€Ë„™€•€•„ˆ»‚„™€•€•"„ˆ¼‚!„™€•$€•'„ˆ½‚#„™€•)€•,„ˆ¾‚%„™€•.€•1„ˆ¿‚'„™€•3€•6„ˆÀ„§„™€•8€•;„€áˆ¹ˆºˆ»ˆ¼ˆ½ˆ¾ˆ¿ˆÀˆº€Ù„¦„ˆÁ€Ê„™€•€•„ˆÂ€Ë„™€•€•„ˆÃ‚„™€•€•"„ˆÄ‚!„™€•$€•'„ˆÅ‚#„™€•)€•,„ˆÆ‚%„™€•.€•1„ˆÇ‚'„™€•3€•6„ˆÈ„§„™€•8€•;„€áˆÁˆÂˆÃˆÄˆÅˆÆˆÇˆÈˆÃ€Ù„¦„ŸˆÉ€Ê„™€•€•„ˆÊ€Ë„™€•€•„ˆË‚„™€•€•"„ˆÌ‚!„™€•$€•'„ˆÍ‚#„™€•)€•,„ˆÎ‚%„™€•.€•1„ˆÏ‚'„™€•3€•6„ˆÐ„§„™€•8€•;„€áˆÉˆÊˆËˆÌˆÍˆÎˆÏˆÐˆÌ€Ù„¦„¡ˆÑ€Ê„™€•€•„ˆÒ€Ë„™€•€•„ˆÓ‚„™€•€•"„ˆÔ‚!„™€•$€•'„ˆÕ‚#„™€•)€•,„ˆÖ‚%„™€•.€•1„ˆ×‚'„™€•3€•6„ˆØ„§„™€•8€•;„€áˆÑˆÒˆÓˆÔˆÕˆÖˆ×ˆØˆÕ€Ù„¦„£ˆÙ€Ê„™€•€•„ˆÚ€Ë„™€•€•„ˆÛ‚„™€•€•"„ˆÜ‚!„™€•$€•'„ˆÝ‚#„™€•)€•,„ˆÞ‚%„™€•.€•1„ˆß‚'„™€•3€•6„ˆà„§„™€•8€•;„€áˆÙˆÚˆÛˆÜˆÝˆÞˆßˆàˆÞ€Ù„¦„¥ˆá€Ê„™€•€•„ˆâ€Ë„™€•€•„ˆã‚„™€•€•"„ˆä‚!„™€•$€•'„ˆå‚#„™€•)€•,„ˆæ‚%„™€•.€•1„ˆç‚'„™€•3€•6„ˆè„§„™€•8€•;„€áˆáˆâˆãˆäˆåˆæˆçˆèˆç€Ù„¦„¨ˆé€Ê„™€•€•„ˆê€Ë„™€•€•„ˆë‚„™€•€•"„ˆì‚!„™€•$€•'„ˆí‚#„™€•)€•,„ˆî‚%„™€•.€•1„ˆï‚'„™€•3€•6„ˆð„§„™€•8€•;„€áˆéˆêˆëˆìˆíˆîˆïˆðˆð€Ù„¦)ˆñ€Ê„™€•€•„ˆò€Ë„™€•€•„ˆó‚„™€•€•"„ˆô‚!„™€•$€•'„ˆõ‚#„™€•)€•,„ˆö‚%„™€•.€•1„ˆ÷‚'„™€•3€•6„ˆø„§„™€•8€•;„ˆñˆòˆóˆôˆõˆöˆ÷ˆø€áˆñˆòˆóˆôˆõˆöˆ÷ˆø€Ù„©)ˆù„ª„«„ˆú„«„ˆù ˆú€âˆùˆú€Ù„©ƒgˆû„ª„«„ˆü„«„€âˆûˆüˆû€Ù„©€áˆý„ª„«„ˆþ„«„€âˆýˆþo€Ù„©€áˆÿ„ª„«„‰„«„€âˆÿ‰/‰„¬  ††„­}  †‰€ä„®‰„p€'€)„„†„¯‰$  ‰%p·z\V4à‰„±)·z\V4à‰sp„²‰‰‰‰„p€'€)„‰‰€ä„³‰„p€¡%€¡'„„‡„¯‰$  ‰%p·z\V4à‰„±)·z\V4à‰sp„²‰‰‰‰„p€¡%€¡'„‰‰€ä„´‰„p€¥/€¥1„„ˆ„¯‰$  €æ‰%p·z\V4à‰„±)·z\V4à‰sp„²€æ‰‰€æ‰‰„p€¥/€¥1„‰€æ‰€ä„·€ä„¸€ä„¹€ä„º„»  ‰‰„¼¸  ‰˜„½˜  ‰˜€ç„¾‰„¿ D F„ „‰N$  €¸‰„‰€¸‰€¸‰‰„¿ D F„ €¸‰€ç„À‰ „¿$)$+„ „ŠN€¸‰ $  „Š€¸‰ ‰ „¿$)$+„ €¸‰ €ç‰ „¿("($„ „‹N€¸‰ $ „ŒK$ „N,   „‹   „Œ :‰ „ŽN, „ €¸‰ „Ž€¸‰ €¸‰ €¸‰ €¸‰ ‰ „¿("($„ €¸‰ €¸‰ €çJ ‰ „¿,",$„ „„Á€¸‰ $ „K$  ‰ ‰  €¸‰   „   „ :‰ ‰ ‰ €¸‰ ‰ ‰„¿,",$„ €¸‰‰€çM ‰„¿0"0$„ „‘„Á€¸‰$ „’K$ „“N‰$  %‰ €¸‰  „‘   „’ :‰„“‰‰€¸‰‰‰„¿0"0$„ €¸‰‰€ç„‰„¿4#4%„ „”„Á€¸‰$  ‰‰„”‰€¸‰‰‰„¿4#4%„ €¸‰‰€ç„É„¿8$8&„ „•„Á€¸‰$ „–N‰$  %‰„•„–‰€¸‰‰‰„¿8$8&„ €¸‰‰€ç„ĉ„¿<2<4„ „—m$  8€¸‰  „— :‰€¸‰€¸‰‰„¿<2<4„ €¸‰„Å‚  ˜˜„Æb  ˜˜„Ç  ˜˜„È"  ˜˜„É  ˜˜„5ß   ˜›8€è„Ê)g q€è„Êÿq€è„Ê„Ëq€è„Ê„Ìqg€è„Ê„Ígq€è„΄Ïrr€è„Îr€è„΃ur€è„6„Љ„Ñr r „€Î‰r€è„΄Òrq rr€è„΄Ór q€è„΄Ìrg€è„΄Ôrr€è„΄Õrrr€è„΄Örrr€è„΄×rrr€è„΄Øsrr€è„΄Ørsrr€è„΄Ûrgr€è„΄Ürrrr€è„΄Ýqrrrr€è„΄Þtr€è„΄Þrtr€è„΄àtrr€è„΄àrtrr€è„΄áqrr€è„΄âqrrr€è„΄ãqrrr€è„΄äurr€è„΄ægr€è„΄çrr€è„΄ègrr€è„΄égrr€è„΄êgqrr€è„΄ëvrr€è„΄írw rr€è„΄íw rr€è„΄ïrwr rr€è„΄ïwr rr€è„΄4rr€è„΄ðrrr€è„Îmrqrqrr€è„Îlrrr€è„΄ñrr€è„΄òrgr€è„΄órvr€è„Î,‰„Ñ* *"„‰r€è„Î,gr€è„΄Êqr€è„΄ôqrr€è„΄õrrr€è„΄öx r€è„΄ø‰„ÑE-E/„r€Î‰€è„΄ùggrr€è„΄úy€è„΄ü‰„Ñff„€Î‰„ýÛ  ˜›€ò„þ€ò„ÿ€ò…€ò…€ò…€ò…€ò…€ò…€ò…€ò…€ò…€ò… €ò… €ò… €ò… €ò… €ò…€ò…€ò…€ò…„˜…x$ €è„΄öx rx r„˜ rx r€ò…„™…w$ €è„΄öx rx rxs·z\V4à‰……·z\V4à‰€Â·z\V4à‰…s„™ rw r€ò…„š…w$ €è„΄öx rx rxs·z\V4à‰……·z\V4à‰€Â·z\V4à‰…s„š rw r…  ››€ó…€ó…„n  ››…¢  ›› €ô…€ô…€ô… €ô…!€ô…"€ô…#€ô…$€ô…%€ô…&€ô…'€ô…(€ô…)€ô…*€ô…+€ô…,€ô…-€ô….€ô…/€ô…0€ô…1€ô…2€ô…3€ô…4€ô…5€ô…6€ô…7€ô…8€ô…9€ô…:€ô…;€ô…<€ô…=…>  ››„Ù®  ››+€õ„ìÿv€õ„ì…?vg€õ„ì…@vw€õ„ì…Av€õ„ì…Avg€õ„ì…Bv€öz€õ„ì…Ev€õ…F…Gg€õ…F…Hg {€õ…F…Jg {€õ…F…Kg€õ…F…Lg€õ…F…Mggg€õ…F…Ngg€õ…F…Ogg€õ…F…Pggg€õ…F…Qg {w€õ…F…Rg {v€õ…F…Sg {€õ…F…Tg {w€õ…U…Vg {€õ…U…Ww€õ…U…Q {€õ…U…Xw€õ…U…Yg {€õ…U…Zg {€õ…U…[g {u€õ…U…\g€õ…U…]g€õ…U…^€õ…U…_€õ…U…`g€õ…U…agw g€õ…U…bg€õ…U…cgu g€õ…U…dv {€õ…U…ev {€õ…U…fv {s€õ…U…gg {v€õ…U…hg {€õ…U…ig {|€õ…U…kv {€õ…U…T {…l  ››…mÁ  ››…n¡  ››…o  ››…p  ››…qA  ››ƒƒ  ››,  ›› "  ››ƒ"  ››fsharp-3.0.34/lib/bootstrap/4.0/FSharp.Compiler.Interactive.Settings.dll0000775000175000017500000005300012260314606024661 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELEjPà! Pþm €@ À@–me  n  H.text”O P `.rsrc€R@@.reloc  T@BÒmHÔ&ü" PJF#ÐI€0bo &s }s }s }( s }s }s }s }*0{(  (1*0P{s ( ( ( {o { o {( (+þ(+*¦{( ,{( {o **–{o {o {þo *No - ( +î*0%¤( *v%¤%¤( *0Šo &s¥}} } ($ } rp} (% ¥ } N}d}d} '}}}(& }*"{ *&} *"{ *&} *"{*&}*"{*&}*"{*&}*"{*&}*"{ *&} *"{*&}*"{*&}*"{ *&} *"{*&}*"{ *&} *¶Ð(' s( s) (* {(+ }*"{*V{o}*¶Ð(' s, s- (. {(+ }*~*~*~*0% Ð(' Œ ()s0 (1 *F()(2 (3 *F()(2 (4 *~*&s3*0qs7{{(+E4+Ós9{(8 (+{o +§{( {( *0@s €Ð,(' €Œ,€(*(+s0 s: €*V(; }}*R{{o *:(< }*B{þo= *:(> }*0 {(0 s5*:(? }*0/{{ o@ (A Þ t-  Þ(B *  :(C }D *N{D oE Œ*:(F }G *V{G (+þoH *:(I }J *V{J (+þoK *BSJB v4.0.30319l #~t ( #Stringsœ #US¨#GUID¸D#BlobW¢ ú3-!@(K3¯¨¨ öà 4 Uà Kà‡u¤u½uÔuïu(cDw¨ ಟGÆ òà à Ià rU †à à ,àgêþ nà ™àÖ¨ eàt¨|¨/ ¨c N \ ¨ Ï àd Ÿ Ÿ¨ Ÿ Ø Uû ¨ ¨Ÿ¡ å¿ð¿! ¿ ¿)€*)„¿)“¿/€Ïœ0 ×3 + 5 C7 L9 Z; • = ¤!?€"¼"A#v-v8vCz‹•––›¹¢;²;ȽÍÁÓÄÖÉáÉìÉøÉ ; ;! Ì3\ Ô3– è3ç —3ï œ¢ É« Ø^S e« Ø« ؄߇ ‡ $ÆÕQÆÙUÆâcP ocÀ Á¼Qä ÁLU@!Áˆcl!ÁÏc”!ƒ 0¨!ƒ?IÌ!ƒRVì!oc„"†„ $"†œ œ"†¶ (¨"†É .´"†Ü 5À"†ë 9Ì"†ú 5 Ø"† 9 ä"† 5 ð"†( 9 ü"†8 5 #†F 9 #†T Q #†n ý ,#†ˆ Q 8#†› ý D#†® QP#† ý\#ƒÖ Qh#ƒê ýt#ƒþ >€#ƒ fŒ#†" ˜#†6 ”¤#†| ÿÔ#† à#† ø#†» E($÷ }0$ 8$ “@$ ¾t$, “ˆ$A œ$T Ϥ$Å ÷°$ë G0% O|%oW”%FÙ_¬%on¼%FÙ€Ð%o†à%FÙ– &o†!&FÙÓ"`&oè#p&FÙü$„&o­%”&FÙ&¬&o'¼&FÙ<(„^f´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ‡ « ‡ « « ^« ò « ^f  «  « „„« ‡ « ‡ «  9o÷AoIoQoYoaoioqoýyoýo‰oB™og oc)oýD¥©LoÂToÂ\oÂ\¯ÂdoèDñôL¯ÂTöÁ Ñ?\ö!ÉcÙúQá+éoc!7>!JOño^‘cùoý!; ó)o øl¥©J |o­„oÇŒn ñlñô”oœoÇŒ­ 79oc¤oǬ¯Â¬ö¤" Ť7 AoØQoc´Í LöYã *¬o ococ Ùyoc$oc,Ùy¼# ´T¯Â,ocÄ„ßÌÙy4oc܇ äÙy<ocì‡ $ôÙy. þ..B.#.+].3’.;¦.C.K.S.S.[HCcmcccmƒ{6ƒcm£cQãcQcQ ó6@ó6` d`ó6Écjécj cj)cj¡«ßÁ«ßá«ß«ß!«ß!ó6!³6A«ßAó6A³6a«ßaó6a³6«ßó6³6¡«ß¡ó6¡³6Á«ßÁó6Á³6ó6ØÜv&;E—œ·eŒ‹¢©¿³uÇyæñüƒ(ƒ7ƒGƒW‡¯‘´ß Zç sï yP Ê        "!$#'&)*+!/#E  #1?GN²ÈÒáþš¦¸Ï(Ÿ©®éðù -4€U&¶ *Øc    à ††à àKàQàYà13!o&s=3FSharp.Compiler.Interactive.Settings.dllFSharpSignatureData.FSharp.Compiler.Interactive.SettingsFSharpOptimizationData.FSharp.Compiler.Interactive.SettingsSystemObjectmscorlibMicrosoft.FSharp.Compiler.InteractiveIEventLoopSimpleEventLoopIDisposableInteractiveSessionAttributes.$Microsoft.FSharp.Compiler.InteractiveRuntimeHelpersSettings$Fsiauxrun@47-1Microsoft.FSharp.CoreFSharpFunc`2FSharp.CoreSystem.ThreadingWaitHandlerun@47-3AutoResetEventrun@47-2run@49-4UnitMicrosoft-FSharp-Compiler-Interactive-IEventLoop-Invoke@58AddPrinter@115AddPrintTransformer@122.$Assemblyinfo.FSharp.Compiler.Interactive.SettingsdllFSharp.Compiler.Interactive.SettingsFSharpInterfaceDataVersionAttribute.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.CompilerServicesInternalsVisibleToAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeAutoOpenAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesRunInvokeTScheduleRestartCompilationMappingAttributeSourceConstructFlagsrunSignalexitSignaldoneSignalqueueFSharpRef`1Microsoft.FSharp.CollectionsFSharpList`1resultFSharpOption`1runningrestartget_Emptyset_contentsMicrosoft-FSharp-Compiler-Interactive-IEventLoop-RunConsget_contentsOptionModuleGetValueIntrinsicFunctionsLanguagePrimitivesUnboxGenericMicrosoft-FSharp-Compiler-Interactive-IEventLoop-InvokefaMicrosoft-FSharp-Compiler-Interactive-IEventLoop-ScheduleRestartCloseSystem-IDisposable-DisposeEventWaitHandleSetThreadSleepsetSignalsignalCompilerGeneratedAttributeWaitAllwaitSignalWaitAnywaitSignal2signal1signal2CompilationArgumentCountsAttributeDisposeAutoSerializableAttributeFloatingPointFormatFormatProviderIFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowDeclarationValuesShowPropertiesShowIEnumerableShowIDictionaryAddedPrintersFSharpChoice`2Tuple`2TypeCommandLineArgsEventLoopevLoopshowIDictionaryshowDeclarationValuesargsfpfmtfpprintWidthprintDepthprintLengthprintSizeshowIEnumerableshowPropertiesaddedPrintersEnvironmentGetCommandLineArgsSystem.GlobalizationCultureInfoget_InvariantCultureget_FloatingPointFormatset_FloatingPointFormatvget_FormatProviderset_FormatProviderget_PrintWidthset_PrintWidthget_PrintDepthset_PrintDepthget_PrintLengthset_PrintLengthget_PrintSizeset_PrintSizeget_ShowDeclarationValuesset_ShowDeclarationValuesget_ShowPropertiesset_ShowPropertiesget_ShowIEnumerableset_ShowIEnumerableget_ShowIDictionaryset_ShowIDictionaryget_AddedPrintersset_AddedPrintersget_CommandLineArgsset_CommandLineArgsGetTypeFromHandleRuntimeTypeHandleNewChoice1Of2AddPrinterprinterget_EventLoopset_EventLoopxNewChoice2Of2AddPrintTransformerSealedAttributesavedItx_0@144x_1@144get_savedItget_x_0@144get_x_1@144SaveItget_Item2GetSavedItget_Item1GetSavedItTypefsiget_fsifsi@132DebuggerBrowsableAttributeDebuggerBrowsableStatesavedIt@144init@DebuggerNonUserCodeAttributeclo0@47InvokeFastListModuleIteraterun@46unitVar0Int32.cctorclo1arg10arg00ExceptionSomeg10EjPІ§EƒEjP·z\V4à‰°?_Õ :           € $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî  -(FSharp.Compiler.Interactive.Settings.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#UOfsi, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee 3.Microsoft.FSharp.Compiler.Interactive.Settings I  0   QUY  U]U Y YUY   U]U  8  YY  ]      ((€(('(Y€…€‰€ €‰€ ((€&Y€…€‰€ €‰€ €•%Y€…€‰€ €‰€   € €  ' Y€…€‰€ €‰€ ( Y€…€‰€ €‰€   €€™<  €‰€  !€…€‰€ €‰€  €… 0   @  €‰€  €… 0 U€‰€ €U€‰€€€ €‰€ U€‰€€  €¥U€‰€        Y                ]€µ] ]U]]€µ    8   <    @  ÑiýÌeC’p˜ÇG´Qr tõO+•ŽøŽ™ý£‹9êC6)ÓRR_Içòé¶ Vk2¶)ÊèŒñ%·YþYÆðUMóÜÀ¤ë¶Òmä*3*±”"ß§·¥1ºleTW‰ev)¬Ò ç„ Õ½{î[”fpì|!Q&…šÚøªÓ$FSharp.Compiler.Interactive.Settings FSharp.Coremscorlib  `$FSharp.Compiler.Interactive.Settingsq/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings/../fsiattrs.fs MicrosoftFSharpCompiler InteractiveRunp/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings/../fsiaux.fsio/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings/../fsiaux.fs IEventLoopCoreunitbool6M:Microsoft.FSharp.Compiler.Interactive.IEventLoop.RunInvokeT~M:Microsoft.FSharp.Compiler.Interactive.IEventLoop.Invoke``1(Microsoft.FSharp.Core.FSharpFunc{Microsoft.FSharp.Core.Unit,``0})ScheduleRestartBM:Microsoft.FSharp.Compiler.Interactive.IEventLoop.ScheduleRestartget_FloatingPointFormatInteractiveSessionstringNP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.FloatingPointFormatset_FloatingPointFormat]P:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.FloatingPointFormat(System.String)get_FormatProviderSystemIFormatProviderIP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.FormatProviderset_FormatProvideraP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.FormatProvider(System.IFormatProvider)get_PrintWidthintEP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintWidthset_PrintWidthSP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintWidth(System.Int32)get_PrintDepthEP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintDepthset_PrintDepthSP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintDepth(System.Int32)get_PrintLengthFP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintLengthset_PrintLengthTP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintLength(System.Int32) get_PrintSizeDP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintSize set_PrintSizeRP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.PrintSize(System.Int32)get_ShowPropertiesIP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowPropertiesset_ShowPropertiesYP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowProperties(System.Boolean)get_ShowIEnumerableJP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowIEnumerableset_ShowIEnumerableZP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowIEnumerable(System.Boolean)get_ShowDeclarationValuesPP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowDeclarationValuesset_ShowDeclarationValues`P:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.ShowDeclarationValues(System.Boolean) AddPrinter}M:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.AddPrinter``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.String})AddPrintTransformerobj€†M:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.AddPrintTransformer``1(Microsoft.FSharp.Core.FSharpFunc{``0,System.Object})get_AddedPrinters Collectionslist`1Choice`2Typeget_CommandLineArgs[]`1JP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.CommandLineArgsset_CommandLineArgs[P:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.CommandLineArgs(System.String[]) get_EventLoopDP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.EventLoop set_EventLoopvP:Microsoft.FSharp.Compiler.Interactive.InteractiveSession.EventLoop(Microsoft.FSharp.Compiler.Interactive.IEventLoop)Settings0T:Microsoft.FSharp.Compiler.Interactive.Settingsfsi4P:Microsoft.FSharp.Compiler.Interactive.Settings.fsiRuntimeHelpers6T:Microsoft.FSharp.Compiler.Interactive.RuntimeHelpersSaveIt GetSavedItGetSavedItTypeSealedAttribute.ctor:T:Microsoft.FSharp.Compiler.Interactive.InteractiveSession2T:Microsoft.FSharp.Compiler.Interactive.IEventLoop Attributes2T:Microsoft.FSharp.Compiler.Interactive.Attributesb/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings PT ]     ! @CD EF HPT Y   Œ× ”     S          Ë    ! ,„      ÿ´@     !„ÿ´@  !   ÿ´@  a)a,ÿ¤@  a;a>ÿ¤@  b$b'ÿ¤@  b3b6ÿ¤@   c!c$ÿ¤@"#  c8c;ÿ¤@$ %  d!d$ÿ¤@& '  d8d;ÿ¤@( )  e"e%ÿ¤@* +  e:e=ÿ¤@, -  f f#ÿ¤@./  f6f9ÿ¤@01  h%h(ÿ¤@23  h@hCÿ¤@45" " i%i(ÿ¤@67" " iAiDÿ¤@89$ $ g+g.ÿ¤@:;$ $ gMgPÿ¤@<=& & rr&&„ÿ¤@&&>?( ( yy#(!(#„ÿ¤@(!(#AB**! k#k& ÿ¤@G3 3 o o ÿ¤@IJ3 3 p p ÿ¤@KL6 6 v vÿ¤@MN6 6 w wÿ¤@OP::Q)R== €„€„ ÿ¤@S T@@U VAA €‘€‘AA„ÿ¤@AA WBB €’€’ÿ¤@ XCC €“€“ÿ¤@ YZ   ##%%''))++--//1133557799;;==&&„??(!(#„BB GG JJ LLNN[      !„     !„ \   ] - 7 ^  _j$FSharp.Compiler.Interactive.Settings FSharp.Coremscorlib. MicrosoftFSharpCompiler InteractiveInteractiveSessionget_FloatingPointFormatCoreunitstringset_FloatingPointFormatget_FormatProviderSystemIFormatProviderset_FormatProviderget_PrintWidthintset_PrintWidthget_PrintDepthset_PrintDepthget_PrintLengthset_PrintLength get_PrintSize set_PrintSizeget_ShowDeclarationValuesboolset_ShowDeclarationValuesget_ShowPropertiesset_ShowPropertiesget_ShowIEnumerableset_ShowIEnumerableget_CommandLineArgs[]`1set_CommandLineArgs AddPrinterTp/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Compiler.Interactive.Settings/../fsiaux.fsi get_EventLoop IEventLoop set_EventLoopAddPrintTransformerobj AttributesRuntimeHelpersSaveItSettingsfsi  %(*, ‚ÿãÄ¥†g    !"#&&„$&'"#(!(#„)*  +,  -¾màm Òm_CorDllMainmscoree.dllÿ% @` >fsharp-3.0.34/lib/bootstrap/4.0/fsc.exe0000775000175000017500000007000012260314606016432 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL>jPà jÞ‡  @ à@z‡aÀ ä‡  H.textðh j `.rsrc l@@.reloc Àn@B¶‡H,6@ ´vÆ4v€0{o {o *05 { ( ( Þ t  Þ s þo *  0 €*~*&( ( ( - ( +&%rp¤&(+(  Þt  ( (  Þ Þu, o &Ü&Ü*)!JLd*o &**¶o &s }o( o( *0- {  ( ( Þ, ( &Ü&Ü* &s *b}}o# &*0A{{  ( {{( Þ, ( &Ü&Ü&* /($ *0s (+,rp(& (' +s(+9¦s(+ s(+-JrKps) (* (+(, (- o. &rKps) (* (+(/ o. &+Ð(0 o1 o2 (%-s(3 (4 *(5 *s(+,(#*s(3 (4 *(6 *rrQp(7 ,*r_p(7 *(6 *rrop(7 ,*rƒp(7 *(6 *~rop(7 -rƒp(7 þ**(6 *rr™p(7 ,*r©p(7 *(8 *>(3 þ(9 *(6 *rr»p(7 ,*rËp(7 *(8 *>(3 þ(9 *0®(: (; , rÝps< (* (+o= &+-*(: (; ,rCps> (* (+&+o (: (; ,r¯ps> (* (+&+(? Þt 2(@ Y( Þ*3_’0 9$ (A (: (; , rûpsB (* (+oC &+o Þ (* (+&+ è(@ +°*rp*0‘*(: (; ,&rps\ (* ( +s] o^ &+{sCo + (: (; ,:r}ps` (* ( + (H (I sa ob &+*rþ~ / ([ +€*0],(c ¥E od 3?#ð?(e of #@(g oh #ð?(e oi +ŒE*0 m2(: (: (; ,+ rÅp(j (k (: (; ,róps> (* (+&+s þ~ / ([ +~sl ¥J(m þ~ / ([ +~(n ( 9¼r9p(o rÖpop (q or þ~ / ([ +~(s rp %Œ&¤(t ou r6p % €ŒT¤(t ou  Þ t  Þ&+o*¨ªR 0cÐ(0 rjpþ~ / ([ +~(v rxp(v þ~ / ([ +~(v (w þ( +*0)6(: (: (; ,+ rÅp(j (k (y (: (; ,r|ps> (* (+&+($ (: (; ,r¬ps> (* (+&+ o(: (; ,r¯ps> (* (+&+ (? ÝXt (: (; ,rps> (* (+&+( 9»r’p(z , s{ +Sþ~ / ([ +~,,Ð(0 o1 o2 (| r¤p(s s{ + rÐps{ (}  (~ s   o€  räp(v o  o‚   oƒ  +.s   o€  r»po  o‚  oƒ  s„   o…    o†   o‡  (Þ -*(*AZd¾X6€*~*&*(ˆ ***o &*s‰ z:(8 } *B{ þ(9 *:(‹ } *B{ þo. *:(Œ } *08{ o s-*:(Ž } *0F{ o -( !€ þ+,(‘ (’ þo“ *(’ þo“ *:(Ž }*0d&(” (’ (: (; ,$röps> (* (+&(’ o“ + (’ o“ (’ {s1o+þo+*’(Ž }}}}*0{&{{{sa o— (’ (: (; ,$rps> (* (+&(’ o“ + (’ o“ (’ {s3o+þo+*’(Ž }}}}*0 p&(’ (: (; ,$r:ps> (* (+&(’ o“ + (’ o“ (’ {{{{s5o+þo+*²(Ž }}}}}*0 <={(˜ s) s+ { (4 (: (; ,'r\psB (* (+{oC &+ Þ\t (: (; ,7r¼ps™ (* (+s/{oD (+&+( (›  Þ {o(’ (: (; ,-rEpsœ  (*  (+o &(’ o“ + (’ o“ (’ {{s7o+þo+*`b\V(ž }}*0 ‚?(Ÿ (  (¡ (’ (: (; ,*rYpsB (* (+oC &(’ o“ + (’ o“ (’ {{s9o+þo+*V(Ž }}*®(’ {o¢ {{s;þo+*V(Ž } }!*0 .(’ s'(’ { {!s=o+þo¤ *:(¥ }"*j(’ {"s?þo+*V(¦ }#}$*R{#{$s§ *:(¨ }%*B{%þo= *:(© }&*0A{&oª sE*F}'o &*6{'(P *:(« }(*>{(o¬ *:(« })*>{)o¬ *0B(­ o® E+€€ þ~ / ([ +~, r»p(z +rÑp þ~ / ([ +~,rÓp+råp(z ( ,rïp+r p r# p(v (v r# p(v (v €€ ( ,r' p+rC p€€ €€ *BSJB v4.0.30319ll#~Ø<#Strings%X #USl.#GUID|.Œ#BlobW¢ ú3^%*OO®/B'!LEº° ëÕK\;a\a¿E ÝÕì G.E •.¯E ·ÕÆE ò.TE ñÕ-Jcz•ήê®þ®s.X=|®—E¡EÙ7m\“L“E ·šÊ\£Û Õ Õ 1Õ~m«ÆÝ1E @Õ oÕ †Õ¯ñê E1 EP Å\ Ó Õì m X ¥ Î m m ’ Õ ü Û . Û 9 E¼ — ß Ç  ý ' ý G Ç   r 7m ;· Ò °ô ß "/6EME~—ErïE Õ 0.E1E<€v\ † ™%©  …Å  Ì     #  m x … §! Ò '%â ) ó +  -  / " 1 U3 a5 l7 w9 ‚; Ó= Þ ? é""A  &#C *%E /.&G%I'I `2(K |2)M€v˜*O€éÅ+PVÌÑ+ 5 µA µL Y _ —µÿ ¼ Ç# Ò Ò Ò VÉ \—V½Ò VÉ \—V½kÒ VÉ  µükÒ kÒ kÒ k µü¼'Ç’À»ðÐðЗP m÷x Æ‰Ì ÷Ýt!ã€!ƒL÷„!ã´!ƒ‘7"ƒ¡G "] ("Æú~ ˆ"Æ$‰ "÷Ý ¤#ã ¬#F ž Ì#ãÔ#F žô#ãü#F ž$ã$$F žD$ãL$F ¬\$ãd$F ž„$ãŒ$F ¬œ$ù Yh%ö n D(ãt(ƒ´ ãÔ(Ƹ KÜ(ÆÊ ® |)ÆÒ ãœ)Æ Ë *<¬”+n ,Hç X.k¬h.ãp.F ò t.ã€.áø ˆ. ˜.F ¬ ¬. !¼.F  "Ð.2 #à.F M $/Y %/F ’ &h/Y 'x/F ’ (è/á )0F ’ -˜0á .À0F ’ 2<1A3l1F ’ 8Ä2¾9Ü2F 2;l3¾<„3F ’ >°3¾?È3F ’ A4ºB4F ÀC04êDH4F ñF`40Gp4F ;H„4AI”4F \J¸4hKÌ4áÕãLÜ4nLì4F tMü4nN 5F tO5k¬PqsÌÑ×süÑÌÑüqqqq¼ q¼   ü  #  ü^ü# µ¼ ¼ÁÇÌÒ# Ò# ÒV\V# ÒV\V# kÒV ü# kÒ§kÒ# kÒ# kÒ üV¼ÁÇÌÀðúðú)!I™£¡»©»±»¹»Á»É»ÑŽá®l_Ýlgãùã ©6t½B|ZlÂdäš1ò :¨)q¬9ðAÐÁ1áÇ‘ïãQãYã ãlã ] di† iŒqMã㉃9OÉ VØ `Ý9hã„» ~©“ ±Ô,¹ô0$ 5¹ ,Á <ÁC EÑY K1f OÙ| TŒˆ k ã1’ ˜ãÙ™ £!Æ Þ”ß kœ»T 5¤»¬½Béó (¬ˆ k´»¼ 5 - K¹6 AG Áù Ä^ kÄh ,Ì»Ôr i|^ k|h ,|} tˆ k ‡ † › d 5Œ½Bñã° Œ š Ú ’!á žAãÜg Æ !¥ ¬ä»ìŒ ô 5ܽ ¢ ü»ÄŒ  5A Ë ) Ï 9B Õ )K Ü 9` Õ )l Ü )ƒ Ü !æ ”ð dA»Y7  aX Ñ`  Ñe  q¨ $ y K× * ‰0 Á6 1F* ©Wm !au Á£,Á¸0 Œ Ï0 h , ^ k±ã±à»±í»±ûŸ ±Ÿ ¹ã¹"¤ ¹g « ¹0Ÿ ãÉãQŒø $ã,ã, 54ãÜØ÷Ñò~ ÁŒ(Ùƒ áC‰ ÑH(áP á× ³ edÁ{Ø»$r i1Ç,»4 5<ã<} <^ k<h ,Ü­XáµfẤDãLã<ZTã\ã\ 5dãú~Ázé$€ c . ª.À.Í.#À.+è.3.;1.C•.K´@c A TAc A CÓê`Ë cÓûƒÓû£ÓÃÓêc a Tac a  Tc  ÃÓêãÓû#Ó€c #Ó¡ T¡c ¡ Á TÁc Á  Tc  ! T!c ! A TAc A ½ç)1j“—Ñdh˜¡µ¸¿p³ÇÏ-ei~’¡»¿ÍÐÔ¯æ ë û  / 8 Æ ã é î ó ø ý G † ‹ “ ¯ C ÿ # ›IÉ 'R†FóT!”1#,4<JW«ãëùÌ;Môeçî !Ùú1a¤ T „ ” Î  ˜ *»ëó5å€íS øQÇ E ˜!      !"#U³+½K½Q½W"WWWïWQ—Wt ¿¹ W ñ| +-WÛ5WG‚fsc.exeFSharpSignatureData.fscFSharpOptimizationData.fscSystemObjectmscorlibMicrosoft.FSharp.CompilerCommandLineMainTypeInThisAssemblyOutputCollectorclo@37System.IOTextWriterDrivermain@279Microsoft.FSharp.CoreFSharpFunc`2FSharp.Coremain@282-1argv@283main@285-2createErrorLogger@295-1TcConfigBuilderBuildFSharp.CompilerErrorLoggermain@299-3createErrorLogger@305-2FSharpResidentCompilerFSharpCompilationServerMarshalByRefObject-ctor@80-2Unitexiter@87ExitercreateErrorLogger@88exitCode@93-1exitCode@93-ctor@105-9Microsoft.FSharp.ControlFSharpAsync`1-ctor@101-8-ctor@99-7-ctor@98-6-ctor@83-5-ctor@82-4Tuple`3FSharpAsyncReplyChannel`1Tuple`2FSharpOption`1ConsoleColor-ctor@81-3-ctor@80-1-ctor@78FSharpMailboxProcessor`1res@119TryCompileUsingServer@252-1TryCompileUsingServer@252holder@255IDisposableTryCompileUsingServer@265-2TryCompileUsingServer@265-3.$Microsoft.FSharp.Compiler.$Assemblyinfo.fscexefscFSharpInterfaceDataVersionAttribute.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.CompilerServicesInternalsVisibleToAttributeDependencyAttributeLoadHintSystem.DiagnosticsDebuggableAttributeDebuggingModesSystem.Collections.GenericList`1ToArrayClearf@1xunitVar0CompilerGeneratedAttributeExceptionConsoleget_ForegroundColorSomeAddf@1-1thisisOutcBuildPhaseget_ParameterPushThreadBuildPhaseUntilUnwindMicrosoft.FSharp.Compiler.AbstractILILget_runningOnMonoUnmanagedProcessExecutionOptionsLibEnableHeapTerminationOnCorruptionStringMicrosoft.FSharp.CollectionsArrayModuleAppendRangeget_range0rangeerrorRecoveryDisposemainargvEntryPointAttributeCompilationMappingAttributeSourceConstructFlagsDummyget_DummyoutputSetOutSetErrorSystem.ThreadingMonitorEnterExitGetTextAndClearoutWriterDebuggerBrowsableAttributeDebuggerBrowsableStateDebuggerNonUserCodeAttributeWritevalueSystem.TextEncodingget_UTF8get_EncodingConsoleKeyInfoPrintfFormat`4ExistsWriteLineReadKeyFilterPrintfFormat`5get_OutPrintfModulePrintFormatLineToTextWriterInternal.UtilitiesFSharpEnvironmentget_DotNetBuildStringFSCompSRbuildProductNameInvokeoptsCopyrightTypeGetTypeFromHandleRuntimeTypeHandleget_AssemblyAssemblyget_Locationget_QuitProcessExitermainCompileget_ValueEqualsErrorLoggerThatQuitsAfterMaxErrorstcConfigBget_progressFSharpRef`1get_contentsThreadSleeptryAcccesServer@221clientnRemainingStringBuilderToStringfscRemotingErrorget_rangeStartupErrorget_Item1get_Item2InvokeFastget_Item3set_ForegroundColorget_ErrorErrorStyleget_DefaultErrorsget_CompilePhasedErrorCreateOutputErrorOrWarningTryCompileUsingServer$cont@243pwdclientOptunitVaronWindowschannelNameserverNameserverExistsagentinit@57StartCancellationTokenIntrinsicFunctionsLanguagePrimitivesFailStaticInitRunPingPostAndReplyCompileFinalizeSystem.Runtime.Remoting.LifetimeILeaseInitializeLifetimeServiceget_CurrentStateLeaseStateTimeSpanFromDaysset_InitialLeaseTimeFromMinutesset_SponsorshipTimeoutset_RenewOnCallTimeSystem.Runtime.Remoting.Channels.IpcIpcChannelSystem.Runtime.RemotingObjRefconditionset_contentsSystem.Runtime.Remoting.ChannelsIChannelChannelServicesRegisterChannelRemotingServicesMarshalLoadGetTypeShimMicrosoft.FSharp.Compiler.AbstractIL.InternalLibraryget_FileSystemFileSystemGetTempPathShimPathCombineSystem.GlobalizationCultureInfoget_InvariantCultureInvokeMemberBindingFlagsBinderInt32RunServerConcatActivatorGetObjectUnboxGenericConnectToServerProcessStartInfoProcessEnvironmentget_CurrentDirectoryGetEnvironmentVariableGetDirectoryNameset_FileNameset_Argumentsset_CreateNoWindowset_UseShellExecuteset_StartInfoset_EnableRaisingEventsTryCompileUsingServerfscServerExe.cctorStopProcessingMicrosoft-FSharp-Compiler-ErrorLogger-Exiter-Exitaexiterclo2arg20clo1arg10inboxget_CurrentQueueLengthGCGetTotalMemoryExtraTopLevelOperatorsget_DefaultAsyncBuilderFSharpAsyncBuilderZeroCollectDelayreplyexitCodeReplyoutputCollectorset_CurrentDirectorystopProcessingRecovery_arg1ReceiveBindWhileoriginalConsoleColorSystem-IDisposable-DisposeobjectArgarg00init@get_OSVersionOperatingSystemget_PlatformPlatformIDfsc.exe9Press any key to continue...%s /pause--pause/resident--resident/nologo--nologo/server--servereclient: trying to access server, nRemaining = '%d'kclient: attempting to connect to existing service (2)Kclient: connected to existing serviceEclient: calling client.Compile(%A)!server error: %seclient: returned from client.Compile(%A), res = %dEserver: startup thread sleeping... pingcserver: got compilation request, (pwd, argv) = %AGserver: got response, response = %A-FSHARP_SERVER_PROGRESSEserver: initializing server object€›Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed7569Mono.Unix.UnixFileSystemInfo%GetFileSystemEntry3set_FileAccessPermissions ipc:////client: creating clientkclient: attempting to connect to existing service (1)yclient: error while creating client, starting client insteadFSC_MONO+..\..\..\bin\mono.exemono-sgen /server'considering exit...collecting...!sending reply..._server: finished compilation request, argv = %A€‡server: finished compilation request with errors, argv = %A, e = %souput: %Aaserver agent: got compilation request, argv = %AUSERDOMAINUSERNAME USERFSCChannelMonoFSCChannel_FSCServerMonoFSCSever>jPZu‚ݧEƒ>jP·z\V4à‰°?_Õ : õ6€J ë”[  % %   %  %-%' 1591=A-%+ E1591=A-%7 591=A1591=A %   % %€ $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî   fsc.exeMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#[UUnittests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293 mFSharp.Compiler u1=Ay1=A  1=A1=A%y1=A=A€A=A = 1=A  y1=A=A€ %I€‰I€‰  €¥ €€¥ I€I €±(   y1=A1=A 1=A   €½ %y1=A% €Å €Å€É€Í % %%=   €É €Ñ % %%  €Í %%  % €á€å €é )) = '€É€Í % %%=  ) €Í % %%=<€Í% %%€ñ€ñ€Ñ % %%  %€Ñ% %%% %=<+€Í % %%=<€Í% %%€ =<<<€Í % %%91=A  %€Í  % %%A 1=A €ù€Ñ % %%  % %9 9€¥91=A €Ñ  % %%9   %    A €€‰€ù€½=<<€Í % %%=91=A91=A€€Í % %%1=A  %€Í  % %%IIA=A1=A=A%=A €ù==<%"E1591=A!E1591=AE E-%= €Í% %%€Í 9% %% 91=A%$€Í 91=A% %%€Ñ 9% %%9  9%9   9%0 5= 91=A5€Ñ 91=A% %%91=A  91=A% 91=A%u€Í 9% %%91=A 91=A%€Í 91=A% %%1=A 91=A    !%€é€á)%!€é €á=E IME% €Í% %%<!%%€é€á€€á <<Y9]9  Y 7=<€Í% %%<=<€Y9Y]]< = %0) ) %  % %  %   %  %  %$ E1591=A q -% -%%0- %-0--%-591=AH E1591=A591=A1=A591=A? E1591=A591=A€Í  % %%€Í 1=A% %%€Ñ  % %%9   % +€Ñ 1=A% %%1=A  1=A% 1=A%t ) €Í % %%€  %€Í  % %%1=A€Í 1=A% %%& E1591=A1591=A.591=A€Í % %%% -%1591=A -=0-- -! 1591=A% -% %-% ) -%E1591=A 5 1591=A591=A %  % %   %  %  % A   %u y­<ÓÛœIâvããóïrÚß{§;qîÜE'|fõŸæG<¨âlg¡€šeOÍL˜„L­´ªl½ïÀTc?Dðp…Žß˜ÍkÁàxV’Ô;ivaõûNŽaQ‚;@³½«Ð Ü=)|—Èé¦~½Nטõ£UH4Bù¤° FSharp.Corefscmscorlib AfscO/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/Fsc/../fscmain.fs MicrosoftFSharpCompilerCommandLineMain+T:Microsoft.FSharp.Compiler.CommandLineMain.ctorCoreunitTypeInThisAssembly get_DummyintOutputCollectorGetTextAndClear[]`1booloption`1System ConsoleColorchar outWriterIO TextWriterisOutmainstringEntryPointAttributeargv CollectionsGenericList`1output;T:Microsoft.FSharp.Compiler.CommandLineMain.OutputCollectorFSharpResidentCompilerBT:Microsoft.FSharp.Compiler.CommandLineMain.FSharpResidentCompilerPingFSharpCompilationServerCompileRunpwdFinalizeObjectInitializeLifetimeServiceobjMarshalByRefObject RunServerConnectToServerTryCompileUsingServer fscServerExe.cctor onWindows channelName serverName serverExistsControlMailboxProcessor`1AsyncReplyChannel`1agentinit@57ZT:Microsoft.FSharp.Compiler.CommandLineMain.FSharpResidentCompiler.FSharpCompilationServerDriver2T:Microsoft.FSharp.Compiler.CommandLineMain.DriverA/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/Fsc  ##&>           #&+ -.#898:> ŠB I     Å  !)€  *95  ‚´ %*%*€¤""""‚´- -- -€¤$$$$‚¼$$::::€¤   : :        ""!##  "#00$Õ  %rrrr ÿ´@'ssss ÿ´@9 9 9 9  ‚´ (mmmm €¤ %tttt €´%  'uuuu €´' )uuuu# *{{{{ €´*  ,€€€€,€€€€,  €´,  /€ˆ€ˆ€ˆ€ˆ€¤0€¨€¨-€¨€¨- €¤#&1€¬€¬+€¬€¬+€¤2€¬,€¬8€¬9€¬=39 9 9 9 ‚´#&&9 9 &% &' 4<<#&5GG#&6HH#&7II'#&;N N#&<9 9 # %&% '&' & (&( %&% '&' *&* ,&,  /&/0&0 1&13&3 =#  >  ?<   €¤ @* MicrosoftFSharpCompilerCommandLineMainDriverFSharpResidentCompiler€Ø¼~_@¢‡Ä‡ ¶‡_CorExeMainmscoree.dllÿ% @€ à7fsharp-3.0.34/lib/bootstrap/4.0/FSharp.Core.dll0000775000175000017500000421673012260314606017743 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELíPà! Øõ 6T @Ð@Àô[ˆàØ=  $õ  H.text,Ö Ø `.rsrcˆÚ@@.reloc Þ@BüôH@iäE ¤¯E$¯€*o &**J, (+-****Fo &}*"{*&o**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &*Fo &}*"{*Fo &}*"{*&o**o &**o &**o &**o &**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &**o &**o &**o &**o &*~o &}}}*"{*"{*"{*~o &}}}*"{*"{*"{*.o+*.o+*Fo &} *"{ *Fo &}!*"{!*Fo &}"*"{"*Fo &}#*J{#o ¥K*0Fo &}$}%}&}'}(})}*rp}+*"{$*"{&*&}&*"{%*&}%*"{'*&}'*"{(*&}(*"{+*&}+*"{)*&})*"{**&}***o &*Fo &},*"{,*šo &}.}-}/}0*"{.*"{-*"{/*&}/*"{0*&}0**oS**o &**o &**o &**o &**o &**o &*Fo &}1*"{1*6rpoZ*( *s **u¤þ*s **u¥þ*0 u¥,+*0» þ9§þ9œ  u¥,+   u¥,+ 3ru¤,3t¤ t¤ (9{!  {! þ(+*t¥t¥(9{"  {"    þ(+*Y**þ,**B¥þo# *0¾ ¥ þ9ž¥þ9Ž  u¥,+   u¥,+ 3du¤,-t¤ t¤ {! {! þ(+*t¥t¥{"  {"    þ(+*Y**¥þ,**0o þ,f u¤,-t¤  ¹y7ž{! Œ¦(•bcXXX *t¥  ¹y7ž {" Œ§(•bcXXX **6(:o$ *0­ þ9›u 9Œ  u¥,+   u¥,+ 3du¤,-t¤ t¤ {! {! þ(+*t¥t¥{"  {"    þ(+***þþ*0¥ þ9“þ9ˆ  u¥,+   u¥,+ 3`u¤,*t¤ t¤ {!  {! þ(+*t¥t¥{" {"   þ(+***þþ*0u , þo% **:(& }! *{! *:(& }" *{" *:( }( *2{( {! *:( }) *2{) {" *( *s* **uªþ*s+ **u«þ*s, **u¬þ*0 u¬,+ u«,+*0#þ9þ9u¬,+ u«,+ u¬,+ u«,+ @¿uª-u«-<u¬-jtª tª (9{-  {- þ(+*t«t«(9{.  {.    þ(+*t¬ t¬ (9 {/   {/  þ(+*Y**þ,**B¥þo0 *0¥ þ9þ¥þ9îu¬,+ u«,+ u¬,+ u«,+ @©uª-u«-6u¬-\tª tª {- {- þ(+*t«t«{.  {.    þ(+*t¬ t¬  {/   {/  þ(+*Y**¥þ,**0¹þ9­ uª-u«-6u¬-\tª  ¹y7ž{- Œ¦(•bcXXX *t«  ¹y7ž {. Œ§(•bcXXX *t¬ ¹y7ž{/ Œ­(•bcXXX **6(:o1 *0 þ9ûu 9ìu¬,+ u«,+ u¬,+ u«,+ @©uª-u«-6u¬-\tª tª {- {- þ(+*t«t«{.  {.    þ(+*t¬ t¬  {/   {/  þ( +***þþ*0þ9òþ9çu¬,+ u«,+ u¬,+ u«,+ @¤uª-u«-3u¬-Xtª tª {-  {- þ(+*t«t«{. {.   þ(+*t¬ t¬  {/   {/    þ( +***þþ*0u , þo2 **:(3 }- *{- *:(3 }. *{. *:(3 }/ *{/ *:( }4 *2{4 {- *:( }5 *2{5 {. *:( }6 *2{6 {/ *:( }7 *s8 **(9 þ*s: **(9 þ*s; **(9 þ*s< **(9 þ*{7 *0+þ9þ9 {7 {7 @ó(9 E3j¡t± t± (9{=  {= þ(+*t²t²(9{>  {>    þ(+*t³ t³ (9 {?   {?  þ(+*t´t´(9{@ {@ þ( +*Y**þ,**B¥ þoA *0¥  þ9þ¥ þ9î{7 {7 @Õ(9 E-\‹t± t± {= {= þ(+*t²t²{>  {>    þ(+*t³ t³  {?   {?  þ(+*t´t´{@ {@ þ( +*Y**¥ þ,**0çþ9Û (9 E-\t±  ¹y7ž{= Œ¦(•bcXXX *t²  ¹y7ž {> Œ§(•bcXXX *t³ ¹y7ž{? Œ­(•bcXXX *t´ ¹y7ž{@ Œµ(•bcXXX **6(:oB *0 þ9ûu  9ì{7 {7 @Õ(9 E-\‹t± t± {= {= þ(+*t²t²{>  {>    þ(+*t³ t³  {?   {?  þ( +*t´t´{@ {@ þ( +***þþ*0 þ9ñþ9æ{7 {7 @Ï(9 E*X†t± t± {=  {= þ(+*t²t²{> {>   þ(+*t³ t³  {?   {?    þ( +*t´t´{@ {@ þ( +***þþ*0!u  , þoC **>(D }= *{= *>(D }> *{> *>(D }? *{? *>(D }@ *{@ *:( }E *2{E {= *:( }F *2{F {> *:( }G *2{G {? *:( }H *2{H {@ *:( }I *sJ **(K þ*sL **(K þ*sM **(K þ*sN **(K þ*sO **(K þ*{I *’þ,þ, þ(+**þ,**B¥ þoP *0*#¥  þ, þ(+*¥ þ,**0*þ9 (K E-\¾tº  ¹y7ž{Q Œ¦(•bcXXX *t»  ¹y7ž {R Œ§(•bcXXX *t¼ ¹y7ž{S Œ­(•bcXXX *t½ ¹y7ž{T Œµ(•bcXXX *t¾  ¹y7ž {U   Œ¿(•bcXXX **6(:oV *nþ, þ(+*þþ*05+þ9#þ9{I {I @(K E*X†´tº tº {Q  {Q þ(+*t»t»{R {R   þ(+*t¼ t¼  {S   {S    þ( +*t½t½{T {T þ( +*t¾t¾{U {U þ(+***þþ*0#u  , þoW **>(X }Q *{Q *>(X }R *{R *>(X }S *{S *>(X }T *{T *>(X }U *{U *:( }Y *2{Y {Q *:( }Z *2{Z {R *:( }[ *2{[ {S *:( }\ *2{\ {T *:( }] *2{] {U *:( }^ *s_ **(` þ*sa **(` þ*sb **(` þ*sc **(` þ*sd **(` þ*se **(` þ*{^ *0:,þ,)þ,!{^ {^ 3 þ(+*Y**þ,**B¥þof *06.¥ þ,¥þ, þ(+**¥þ,**Jþ, (+**6(:og *0'.þ,u , þ(+**þþ*Šþ,þ, þ(+**þþ*0.u , þoh **>(i }j *{j *>(i }k *{k *>(i }l *{l *>(i }m *{m *>(i }n *{n *>(i }o *{o *:( }p *2{p {j *:( }q *2{q {k *:( }r *2{r {l *:( }s *2{s {m *:( }t *2{t {n *:( }u *2{u {o *:( }v *sw **(x þ*sy **(x þ*sz **(x þ*s{ **(x þ*s| **(x þ*s} **(x þ*s~ **(x þ*{v *0:,þ,)þ,!{v {v 3 þ(+*Y**þ,**B¥þo *0L0¥ þ,/¥þ,"{v {v 3 þ(+*Y**¥þ,**Jþ, (+**6(:o€ *0;0þ,,u , {v {v 3 þ(+***þþ*06,þ,'þ,{v {v 3 þ(+***þþ*01u , þo **>(‚ }ƒ *{ƒ *>(‚ }„ *{„ *>(‚ }… *{… *>(‚ }† *{† *>(‚ }‡ *{‡ *>(‚ }ˆ *{ˆ *>(‚ }‰ *{‰ *:( }Š *2{Š {ƒ *:( }‹ *2{‹ {„ *:( }Œ *2{Œ {… *:( } *2{ {† *:( }Ž *2{Ž {‡ *:( } *2{ {ˆ *:( } *2{ {‰ *r(‘ }‡}ˆ}‰*(‘ *0 (’ *{‡*{ˆ*{‰*0j3þ,a ¹y7žts(@bcXXX ¹y7žts(?bcXXX ¹y7žts(> , (“ +bcXXX **6(:oA*0w5þ,hu  ,\(+-*ts(>ts(>(” ,3ts(?ts(?3ts(@ts(@þ****þþ*b(rp(• þo– *0sþ,dþ,\(+-*ts(>ts(>(” ,3ts(?ts(?3ts(@ts(@þ****þþ*05u  ,oE***o &**o &*"s— *Ns˜ þ™ sš *"s› *Nsœ þ sš *0(7uä ,  þož *oŸ þo  *0G:uç , þo¡ *uè , o¢ þo£ *o¤ þ(+*0q>uë , þo¦ *uì , o§ þo¨ *uî,o© þ(+*o« þ(+*0ŸCuð , þo­ *uñ , o® þo¯ *uó,o° þ( +*uô,o² þ(!+*o´ þ("+*"s¶ *"s· *"s¸ *"s¹ *"sº *"s» *{¼ *"}¼ *:( }¼ *08Dþ,'þ,(9 {¼ {¼ þ(+**þ,**B¥üþo½ *0CF¥ü þ,&¥üþ,{¼ {¼ þ(+**¥üþ,**0/Gþ,& ¹y7ž{¼ Œ¦(•bcXXX **6(:o¾ *04Fþ,%uü ,{¼ {¼ þ(+**þþ*"{¼ *&(¿ *0/Hþ, þ,{¼ {¼ þ(+**þþ*0Iuü , þoÀ **( * *s *:( }à *{à *0 K ,+*0gLþ,Vþ,N,+ ,+ 3.,)  (9{à  {à þ(+**Y**þ,**B¥ýþoÄ *0rM¥ý þ,U¥ýþ,H,+ ,+ 3(,#  {à {à þ(+**Y**¥ýþ,**0:Nþ,1 - *  ¹y7ž{à Œ¦(•bcXXX **6(:oÅ *0fMþ,W(#+-*¥ý ,+ ,+ 3(,#  {à {à þ(+***þþ*þ*þ*†r-poÆ ($+r9p(Ç (Ç *0ZOþ,Kþ,C,+ ,+ 3%,   {à  {à þ(+****þþ*j(#+-*¥ýþoÈ *.sÉ €Ê *( *~Ê **{Ë þ*"sÌ **{Ë þ*V( }Í }Ë *{Í *{Ë **{Ë þ*0 Qþ9Œþ9{Ë þ {Ë þ 3e{Ë ,[  (9{Í  {Í (+/*1*(9{Ë  {Ë   oÎ **Y**þ,**:¥þoÏ *0©R¥þ þ9‰¥þþ9y{Ë þ {Ë þ 3]{Ë ,S  {Í {Í (+/*1* {Ë {Ë   8nÿÿÿ*Y**¥þþ,**0ZSþ,Q {Ë - *  ¹y7ž{Ë oÐ bcXXX ¹y7ž{Í Œ¦(•bcXXX **6(:oÐ *0‡Tþ9uuþ ,i{Ë þ {Ë þ 3O{Ë ,E  {Í {Í (+,! {Ë {Ë 8Šÿÿÿ****þþ*0nUþ,_þ,W{Ë þ {Ë þ 3={Ë ,3  {Í  {Í (+,{Ë {Ë +£****þþ*0Vuþ ,oÑ **&(%+*0CW(%+  è1r=p*\%rYp¤\%þboÒ ¤\(Ó *ª{Ë -(rmp(• o– sÔ z{Í *ª{Ë -(rmp(• o– sÔ z{Ë *&(&+*0±X{Ë 9  {Ë {Ë 9[{Ë {Ë {Ë 9ó{Ë {Ë {Ë -p{Í {Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í {Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ rŸpoÖ þoÒ *{Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í sÕ r‘poÖ ($+oÖ r›poÖ þoÒ *r¯p*6s× ¥*Js× ¥¥*fo &}Û 2}Ü *0)Z{Û o'+ ¦  {Û ((+*0,\{Þ ," {Þ {Ü 1*X+Ö*bo &}ß }à *0w`{à , {ß +  oá YE**oÙ u0 ,oâ - }ß +sã }ß }à 8‰ÿÿÿ*þoä *6oä ¥*‚{à ,{ß þoå *þoå *‚{à ,{ß þoæ *þoæ *–{à ,{ß oå +oå Œ¦*"oç *0 bsè zbo &}î }ï *>{î oð &*>{î oð &*>{ï þoÙ *R{ï ¥ þoØ *( * *"sñ *2sò *0d u,+ u,+*V(ó }ô }õ *{ô *{õ *²(ó }ö }÷ }ø }ù }ú *{ö *{÷ *{ø *{ù *{ú *:( }û *2{û {ô *2{û {õ *:( }ü *2{ü {ö *2{ü {÷ *2{ü {ø *2{ü {ù *2{ü {ú *~o &}ý }þ }ÿ *0f()+ s € *0yk{þ (*+ Œ ,+ rµps zŽi   Y23£ ( ( s ¤ XX3Í }ÿ *0…l()+}ý {ÿ Œ ,+ rµps zŽi   Y2# £ (++¤ XX3Ý {ý (,+}þ }ÿ *~ *0f()+ (-+s *~ *0f()+ (-+o *"{ý *"{þ *‚{ý {ý {þ (.+s *.{þ þ*R{ý {þ (/+*B{þ þ(0+*B{þ þ(1+*‚{ý {ý {þ (2+s *B{þ þ(3+*Z( {þ þ(4+*b{ý {þ (5+*B{þ þ(6+*f{ý {þ (7+s  *f{ý {þ (8+s  *0Bn{ý {þ (9+ (  (  {ý s {ý s s  *:{þ (:+*R{ý {þ (;+*~{ý {ý {þ (<+s *R{ý {þ (=+*6{þ (>+*6{þ (*+*0f()+ (?+s *0s ¥ o  oê ,`o ( ( s ( ( b(@+X wX b(A+X wX +˜ Þu  ,  oé &Ü&Ü&( *l{0vuu ,j ¥ o  ¥ o  (B+Þu, oé &Ü&Ü Þu, oé &Ü&Ü **&:@Y"o *0ýw¥ (C+(D+ { 9Ù { ( ( s { { 9|{ { ( ( s { { 9ü{ { ( ( s { { -d  sÕ rÁpoÖ  (E+oÖ r•poÖ  (E+oÖ r•poÖ (E+oÖ r›poÖ þoÒ *  sÕ rÁpoÖ  (E+oÖ r•poÖ  (E+oÖ r•poÖ (E+oÖ rŸpoÖ þoÒ *sÕ rÁpoÖ (E+oÖ r•poÖ (E+oÖ r›poÖ þoÒ *sÕ rÁpoÖ (E+oÖ r›poÖ þoÒ *rÍp*6{þ (F+*J{þ (F+¥*R{ý {þ (/+*n(rÛp(• o– s z^s (G+(H+¥"*^s (I+(J+¥*n(rÛp(• o– s zR{ý {þ (;+*Æ{ý {þ (;+,{ý {þ (/+§**n(rÛp(• o– s zn(rÛp(• o– s zn(rÛp(• o– s zn(rÛp(• o– s z0Lx( {ý {þ (;+,-( {ý {þ (/+ ( þ(K+**F{þ þ(L+**:{þ (:+*0Fyu , s ¥ ¥ (M+*(rp(• o– rps zFo &}* *0(zs+ {* è¥ (C+(N+(O+*{ª*{«*V( }ª}«*( * **s, *s- *0| u,+ u,+*’(. }/ }0 }1 }2 *{/ *{0 *{1 *{2 *:(. }3 *{3 *:( }4 *2{4 {/ *2{4 {0 *2{4 {1 *2{4 {2 *:( }5 *2{5 {3 *~o &}6 }7 }8 *0f()+ s9 €: *N{7 (P+}8 *®()+}6 {6 {8 (Q+}7 }8 *"{6 *"{7 *~: *~{6 {6 {7 (R+s9 *~{6 {6 {7 (S+s9 *:{7 (T+*R{6 {7 (U+*B{7 þ(V+*Zs; {7 þ(W+*.{7 þ*0R~{7 -s< *{6 {7 (X+ (= (> {6 s9 {6 s9 s< *ª{7 -*{6 {6 {7 (Y+s9 *0!€(Z+ s? {7 ([+s@ *B{7 þ(\+*B{7 þ(]+*0<{7 -*{7 -*{6 {6 {7 {7 (^+s9 *â{7 -*{7 -*{6 {6 {7 {7 (_+s9 *0={7 -*{7 -*{6 {6 {7 {7 (`+s9 *JsA ~: (a+*6sB (b+*r{6 {7 {7 (c+þ*f{6 {7 {7 (c+*6{7 (d+*6{7 (d+*6{7 (e+*n{6 {7 {7 þ(f+*n{6 {7 {7 þ(f+*n{6 {7 {7 þ(g+*n{6 {7 {7 þ(g+*6{7 (h+*6{7 (P+*0\‚ ¥oÙ oê ,oí b (@+X wX +Ù Þu, oé &Ü&Ü&( *+:"oC *0v„u ,j ¥oÙ ¥oÙ (i+Þu, oé &Ü&Ü Þu, oé &Ü&Ü **&:@Y6~: oD *0f()+ (j+o9 *"sE *0f()+ (Q+s9 *0Ë…¥(k+(l+ {Ë 9§ {Ë {Ë 9`{Ë {Ë {Ë 9ö{Ë {Ë {Ë -q {Í {Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ * {Í {Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ rŸpoÖ þoÒ *{Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í sÕ r%poÖ ($+oÖ r›poÖ þoÒ *r1p*z{6 {7 (m+{7 (c+*2r?ps z2r?ps z2r?ps zR{6 {7 (U+*F{7 þ(n+**:{7 (T+*6{7 (o+*J{7 (o+¥*Fo &}M *0†{M è¥(k+(H+*~o &}»}¼}½*0J‰{½ , {N {¼þoO *{»0(³ (P }½{¼þoO *"{»*V{»{¼0(¹*BoRþoQ *FoRþoR *>oRþoS *"{¼*Š{»oT rep(Ç oH(Ç *R{»oU {¼X*03‹u“ ,& {»{»(p+,{¼{¼þ***V{»{¼0(¾*‚Œ,+ rips zþ(Ò*0/, {V + Œ,+ rips z(ã*08Œ,+ rips z0(ê , {V + (´*ÆŒ,+ rips z0(êÐt(W þ(™*zŒ,+ rips z(á*0PŒ,+ rqps zŒ,+ rps z(œ%¤%¤þoX *0OŒ',+ r‹ps zs$(q+,!(r—p(• o– r‹ps zþ(Õ*RrÅp(í(Ö*–Œ,+ rÙps z0(ê(à*0&, {V + róp(ì(ä*0J‘, {V + Œ,+ r ps z(ê (Às&(±(r+*0/, {V + Œ,+ rps z(è*07, {V + Œ,+ rps z(ë(ä**oY &*6sZ ŒV*0., {V + róp(ì(çþo[ *0k’Œ,+ r9ps zŒ,+ rCps zo\ 0(ã-!(rQp(• o– rCps zþo] *0i“Œ,+ rCps z, {V + o\ (ã-!(rQp(• o– rCps z(åþo^ *zŒ,+ r9ps zs**0&, {V + róp(ì(å*0&, {V + róp(ì(ç*0&, {V + róp(ì(æ*0á–Œ,+ rÙps zÐt(W (™-.o_ (rqp(• o– (` rÙps zŒñ,+ r“ps z(à (a (b Ð*(W oc , od +%¤% ¤oX (e (s+þof *ÊŒ+,+ r±ps zrÅp(í(Üþo[ *0i—Œ,+ rÍps zo\ (Ò-3o\ o_ (rÙp(• o– (` rÍps z(Ûþo^ *0³™Œ,+ rÍps zo\ (Ò-3o\ o_ (rÙp(• o– (` rÍps z(Ûo^ /+  Žiþþ,/rõpo\ o_ þboÒ (› rps z £*RrÅp(í(Û*VrÅp(í(ß*RrÅp(í(Ü*RrÅp(í(Ý*0BŒ“,+ r+ps z, {V + {»{¼(¿þo[ *0:Œ“,+ r+ps z, {V + {»{¼(¿*0:Œ“,+ r+ps z, {V + {»{¼(¾*0lš, {V + (" Œ,+ r ps z(ê (À(»og  (ºo^  sGsh *0?‘, {V + Œ,+ r ps z(ê (À(»*0?‘, {V + Œ,+ r ps z(ê (À(¼*0<‘Œ“,+ r+ps z, {V + {» {¼(º*0F‘Œ,+ r?ps z, {V + o\ (ë(åþo^ *Fo &}i *0œ{i , oj **"sk *Fo &}l *ÆÐ¦(W (S,Ц(W (o+sƒ€m *B{l þon *ú{l ~m %Œ0¤%Œ1¤o[ (t+þon *0L{l ~m %Œ0¤%Œ1¤%Œ2¤o[ (t+þon *0Z{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤o[ (t+þon *0h{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤%Œ4¤o[ (t+þon *0v{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤%Œ4¤%Œ5¤o[ (t+þon *0o &þ¦}o *0M£Ц(W rGp6op oq Œ7,+ rµps z ŽiY2$ £/or ¤XX3Ü ŽiYYX Y 2!  X£¤ X  X3ßss (t (u Ži3Ð9(W (v ¥9+€w Ð:(W 6ox  s… ¥;(u+(v+oy , oz +€{ *0a¤{o Œ¦,R~w ,~w {o o| *%¤Œ§(k(w+ {o Œ¦¥roj **6s} ¥*Fo &}~ *0¦{~ , o **6s€ ¥*.s€Å*( *~Å**užþ*sž**uŸþ*s **u þ*0¨ u ,+ uŸ,+*0i«þ,`  už- uŸ- u -$ *tŸ  ¹y7ž{ÉbcXXX *t   ¹y7ž{ÊbcXXX **6(:o˜*0¸¬þ9¦uœ 9—u ,+ uŸ,+ u ,+ uŸ,+ 3W  uŸ-  u -!*tŸ tŸ {É{Éþ*t t {Ê{Êþ***þþ*0²­þ9 þ9•u ,+ uŸ,+ u ,+ uŸ,+ 3UuŸ- u -*tŸ tŸ {É {Éþ*t t {Ê{Êþ***þþ*0¨uœ ,o›**(*:(}É*{É*:(}Ê*{Ê*:( }Ë*:( }Ì*2{Ì{É*:( }Í*2{Í{Ê*( *&s¯**u¦þ*:s³**u§þ*&sº**u¨þ*0¯ u¨,+ u§,+*r(§}Ñ}Ò}Ó*{Ñ*{Ò*{Ó*Ò(§}Ô}Õ}Ö}×}Ø}Ù*{Ô*{Õ*{Ö*{×*{Ø*{Ù*r(§}Ú}Û}Ü*{Ú*{Û*{Ü*:( }Ý*2{Ý{Ñ*2{Ý{Ò*2{Ý{Ó*:( }Þ*2{Þ{Ô*2{Þ{Õ*2{Þ{Ö*2{Þ{×*2{Þ{Ø*2{Þ{Ù*:( }ß*2{ß{Ú*2{ß{Û*2{ß{Ü*{à*{á*{â*{ã*{ä*{å*{æ*{ç*{è*{é*0T( }à}á}â}ã}ä}å}æ}ç }è }é*0 *rUpsq( ¥sPdd 'sÚ*Fo &}‚ *"{‚ *.oƒ &*0p±o &}ì}ë~í}ï, {„ +}ð~î  (… ~í!X€í Þ, († &Ü&Ü&*> ^"{ì*"{ð*"{ë*"{ï*0Y³Œ\,+ r]ps zŒ,+ rips z~î  (… (”  Þ, († &Ü&Ü*5H"{ì*"(U *0´u° ,  (‡ **0ð¶u° 9á (‡ ,*oàoà(ˆ ,*oâo‰ oâo‰ /+þ , *oâoŠ o‹ oâoŠ o‹ /+þ,*oâoŒ o oâoŒ o (ˆ ,*oãoã/*þ**6€Q~Q&*:( }ñ*"sù**(óþ*sü**(óþ*"sþ**(óþ*"s**(óþ*{ñ*Jþ, (• **6(:oô*0;¸þ,,u± , {ñ {ñ 3 þ(– ***þþ*jþ, þ(¢ *þþ*0¹u± , þo÷**Z(ê}ö}÷*{ö*{÷*>(ê}ø*{ø*Z(ê}ù}ú*{ù*{ú*Z(ê}û}ü*{û*{ü*:( }ý*2{ý{ö*2{ý{÷*:( }þ*2{þ{ø*:( }ÿ*2{ÿ{ù*2{ÿ{ú*:( }*2{{û*2{{ü*0¤s€s€s€s€s€s€s€s€ s€ s€ s€ s€  s€!s€*:( }*~**(Yþ*~**(Yþ*~**(Yþ*~**(Yþ*~**(Yþ*s_**(Yþ*sa**(Yþ*sc**(Yþ*se**(Yþ*"sg*.(Y þ*sj*.(Y þ*sl*.(Y þ*sn*.(Y þ*sp*.(Y þ*sr*.(Yþ*st*.(Yþ*sv*.(Yþ*sx*.(Yþ*sz*.(Yþ*s|*.(Yþ*s~*.(Yþ*s€*.(Yþ*s‚*.(Yþ*s„*.(Yþ*~*.(Yþ*~*.(Yþ*~ *.(Yþ*~ *.(Yþ*~ *.(Yþ*s†*.(Yþ*~ *.(Yþ*~ *.(Yþ*~*.(Y þ*~*.(Y!þ*"sˆ*.(Y"þ*s‹*.(Y#þ*{*Jþ, (— **6(:oZ*0;»þ,,u» , { { 3 þ(˜ ***þþ*06,þ,'þ,{ { 3 þ(£ ***þþ*0¼u» , þo]**>(}4*{4*>(}5*{5*>(}6*{6*>(}7*{7*^ (}8}9*{8*{9*B (}:*{:*B (};*{;*B (}<*{<*B (}=*{=*B(}>*{>*B(}?*{?*B(}@*{@*B(}A*{A*B(}B*{B*B(}C*{C*B(}D*{D*B(}E*{E*B(}F*{F*B(}G*{G*B(}H*{H*^"(}I}J*{I*{J*B#(}K*{K*:( }L*2{L{4*:( }M*2{M{5*:( }N*2{N{6*:( }O*2{O{7*:( }P*2{P{8*2{P{9*:( }Q*2{Q{:*:( }R*2{R{;*:( }S*2{S{<*:( }T*2{T{=*:( }U*2{U{>*:( }V*2{V{?*:( }W*2{W{@*:( }X*2{X{A*:( }Y*2{Y{B*:( }Z*2{Z{C*:( }[*2{[{D*:( }\*2{\{E*:( }]*2{]{F*:( }^*2{^{G*:( }_*2{_{H*:( }`*2{`{I*2{`{J*:( }a*2{a{K*bo &}b}c*"{b*"{c*0,¾ué ,  {b {b  (:þoö**>{bþoU *&oÁ*N(ÛoÂ(j*0üãs¥  s§  rgp(2 s©  s« {b(ó@ªt³{ö(YE$¨×(ó@ªt³{ö(YE$á³Y¶åœ ¨ ¡ ÿ · Í õE ‡ A p ,ä »Œ[]Š* (óEC^ºt³{ö(YE$Qj"s¯ rqpsŽ (x+{bþo *{÷  (y+ r«p(2 (H(L(?*{ötÏ {÷{ ,“{÷  { { :yÿÿÿ {G  {‘   ( oq Ži(¡  o’ ,p{“ (” {“ (•  (š (– (— (z+oÂ(– (— ({+({+ rÁp(2 (H(L(?* (š  oÂ(– (— (—  rÁp(2 (H(L(?*{÷  (y+ rÙp(2 (H(L(?*t´{øoà(2*tµ{ù{ú oà(2 oÂ(– (— (—  råp(2 (H(L(?*róp(2*{÷{ 9ýÿÿ{÷  { { 9ôüÿÿ { {‘ {b(ó@Ðüÿÿtµ{ { :¶üÿÿ{ù {‘  {úoà(2 oÂoÂ(– (— (— (—  r÷p(2 (H(L(?*{öt½{4 {÷  (š  (y+(—  rÿp(2 (H(L(?*{öt¾{5{÷ (œ  (y+(—  rp(2 (H(L(?*{öt¿{6{÷  (y+(œ (– (— ({+ r-p(2 (H(L(?*{÷  (y+ rIp(2 (H(L(?*{ötÁ{÷{ 9üúÿÿ{÷  { { :âúÿÿ{9 {‘   oÂ(– (— r[ps˜ (|+oO (2(– (— ({+ rap(2 (H(L(?*{ötÑ{÷{ :Wúÿÿ{Ir[ps™ (}+oš (2(– (—  rsp(2 (H(L(?*{ötË{÷{ 9ìùÿÿ{÷  {‘  {C {  (™ ( (y+(H(Q(– (— (— (—  rp(2 (H(L(?*{ötÌ  {D{÷ (  (y+(H(Q(– (— (— (—  rp(2 (H(L(?*{ötÂ!{÷{ 9àøÿÿ{÷ !{:" {‘   {  (™ "(Ÿ (y+(H(Q(– (— (— (—  r‰p(2 (H(L(?*{ötÃ##{;"{÷ "(Ÿ  (y+(H(Q(– (— (— (—  r‰p(2 (H(L(?*{ötÄ${÷{ 9Ô÷ÿÿ{÷ ${<" {‘   {  (™ "(Ÿ (y+(H(Q(– (— (— (—  r¡p(2 (H(L(?*{ötÅ%%{="{÷ "(Ÿ  (y+(H(Q(– (— (— (—  r¡p(2 (H(L(?*{ötÆ&{÷{ 9Èöÿÿ{÷  { { :®öÿÿ {‘  &{>' (™ '(  (– (— (—  r¹p(2 (H(L(?*{ötÇ({÷{ :@öÿÿ({?''(  (– (— (—  r¹p(2 (H(L(?*{ötÈ){÷{ 9âõÿÿ{÷  { { 9Èõÿÿ { { { :®õÿÿ{‘   {‘ ){@'(™ '(   oÂ(– (— (— (—  rËp(2 (H(L(?*{ötÉ*{÷{ 9*õÿÿ{÷  { { :õÿÿ {‘  *{A''(   oÂ(– (— (— (—  rËp(2 (H(L(?*{ötÍ+{÷{ 9œôÿÿ{÷  { { :‚ôÿÿ+{E  {‘   o (š (– (— (—  rÝp(2 (H(L(?*{ötÊ,,{B-{÷ -(ž (– (—  (y+({+ rëp(2 (H(L(?*{ötÒ..{K {÷  (š (– (—  (y+({+ rÿp(2 (H(L(?*{ötÎ//{F {÷  (š (– (—  (y+({+ rp(2 (H(L(?*{ötÐ00{H {÷  (š (– (—  (y+({+ r+p(2 (H(L(?*{÷  (y+ r=p(2 (H(L(?*{÷{ 9òÿÿ{÷  {‘ {b(ó@[òÿÿt´1 { { 9Aòÿÿ { { { :'òÿÿ1{ø{‘  oà(2 oÂ(– (— (—  rQp(2 (H(L(?*{÷  (y+ r_p(2 (H(L(?*{÷{ 9”ñÿÿ{÷  { { 9zñÿÿ { { { 9`ñÿÿ{ 22{‘ {b(ó@<ñÿÿtµ2{ { :"ñÿÿ{ù{ú {‘  {‘ 3oà(23oÂo oÂ(– (— (— (— (—  rup(2 (H(L(?*{÷  (y+ rp(2 (H(L(?*{÷  (y+ r±p(2 (H(L(?*{÷{ 94ðÿÿ{÷  { { 9ðÿÿ { {‘ (› 449üïÿÿ{ { 9ëïÿÿ{ 22{‘ (› 559Íïÿÿ2{ { :¼ïÿÿ5{› (œ 4{› (œ 65{› (  4{› (  {‘ 33oÂ6oà(2oÂoà(2 oÂ(– (— (— (— (— (—  rÇp(2 (H(L(?*{÷  (y+ r×p(2 (H(L(?*{÷  (y+ rïp(2 (H(L(?*{÷{ 9éíÿÿ{÷  {‘ (~+9Éíÿÿ{“ (• {b(ó@©íÿÿt³{ö(Y@Žíÿÿ{÷{ 9}íÿÿ{÷ { { :cíÿÿ{“ (” { 2{‘   (z+2(y+(+(H(Q oÂ(– (— (—  rp(2 (H(L(?*:(€+(e *^(€+(€+(c ¥K**þ(+*6(E( *:(I( *&( *:s± (‚+*~Œ$,+ rps z(* *‚Œ$,+ rps z() *’Œ,+ r5ps z(;( **( *.(+ *zŒ3,+ rCps z(! *~Œ3,+ rCps z( *~Œ3,+ rCps z(" *‚Œ3,+ rCps z(# *&( **(. *&(0 *~Œp,+ rWps z($ *ŽŒ,+ rwps z(W( *"( *~Œ,+ róps z( *~Œ,+ r•ps z( *ªŒ,+ r­ps zs³ (ƒ+(- *&( *03äŒ,+ rÇps z(ž , {Ÿ +(& *02äŒ,+ rÇps z(ž , {Ÿ +(% *04äŒ,+ rÇps z(ž , {Ÿ +(( *0ä(ž , {Ÿ +(' *"( *:(C( *6( *:(O( *>(+( *’Œ,+ r5ps z(K( *&( *0 åŒ0 Ð0(W (U( *’Œ,+ rwps z(U( *"( *N(G( ( *&(, *zŒ0,+ rÙps z(l *"(„+*ÞŒ,+ rïps zŒM,+ r ps z(m *ŠŒ1,+ rps zþ(i *ÊŒ\,+ r]ps zÐ0(W (ä( („+*2o»&**®o &¦}  }¡ }¢ }£ *0hH{¢ - r+ps¤ z{  {¡ £¦ {  {¡ þ¦¤¦{¡ X{  Ži]}¡ {¢ Y}¢ *0ˆ,{¢ {  Ži3>{  Žij!ÈZ!d[i {  ŽiX /+o¥ +{  {£ ¤¦{£ X{  Ži]}£ {¢ X}¢ *"{¢ *0¬æ(…+ {¢ 1q{¡ {£ /{  {¡ {¢ (¦ +H{  {¡ {  Ži{¡ Y(¦ {  {  Ži{¡ Y{£ (¦ +}  }¡ {¢ 3+{¢ }£ *²o &s§ }h{ho¨ (© }i*6{io¨ *6{hoª *j{io« {hþo« *j{io« {hþo« *.sÿ€j*( *~j*&*~m*€m*bo &}k}l*~m*0<è ~m,+( (¥  Þ, (&Ü&Ü&(* $‚{lX}l{l ,þþ*¢{k-}l(­ }k*r;ps¤ z *6€â~â&*0kês® o &(¯ }ns· þ¸ s° }os¹ þº s± }ps» þ¼ s² }q}r*þþ{r/(r­p(• o– sÔ z{oŒ”o³ (*0Lþ{r/(r­p(• o– sÔ z{pŒ”(´ - rÁps¤ z(*0Lìþ{r/(r­p(• o– sÔ z{qsµ o¶ Œ”o· (*þþ{r/(r­p(• o– sÔ zs}n{no*ºþ{r/(r­p(• o– sÔ z{n* *6€â~â&*{s*{t*{u*{v*’( }s}t}u}v*{¸ *{¹ *V( }¸ }¹ *sº *:( }» *{» *&**o &*(D *&(†+*"(‡+**&(ˆ+*&(‰+*&(F *&(Š+*&(‹+*&(Œ+*&(+*Fo &}¼ *>{¼ o½ &*(C *(D *6s¾ (¿ *F(4 {À o¨ *0"î(4 {À oª (4 s§ (Á *6s (à *0€ó,L {Ä (Å þ,{Ä sÆ +<,  {Ä sÆ +(rÿp s;z(4 {À o¨ sÆ (Ç (È (Ž+*0)ô(4 {À o¨ , {Ä + (Ñ *0)ô(4 {À o¨ , {Ä + (+*>sÉ (+*6sÊ (Ë *0.ô(4 {À o¨ , {Ä + (‘+*fsã så sç (’+*6sñ (“+*0-W, {Ì + - só (”+*sý (•+*>sÿ (”+*6sÍ (¿ *:sÎ (†+*0>õ,' {Ì YEsÏ (†+*(–+*sÐ (†+*BsÑ (†+*BsÒ (—+*JsÓ (˜+*RsÔ (™+*b(š+sÕ sÖ s× *>sØ (›+*6sÙ (œ+*(ö *(÷ *>sÚ (+*:sM (ž+*:sY (Ÿ+*&( +*6sÛ (¡+*òo &}Ü }Ý }Þ }ß s§ }à sá }â *0)ø{â oã {Ü ,¥þoä **0xü{â (å oæ - r¢ps¤ z {ç uq-ur-&{ç ts{è *{ç tq{é z{ç tr{ê z"{ß *¦{ß -}ß {à o« {â oë **6{à o¨ *6{à oª *0þ{â {ì þ-}Þ **0þ{â {ì þ*"{Þ *6{â oí *"{Ý *&oî *0Go &}ó sô }õ {õ }ö }÷ }ø sù (ú }û *‚{ó ,+ sü }ó {ó *0={ö  (… oý oþ {õ {¢ X Þ, († &Ü&Ü* ",0={õ {¢ -*{õ oÿ o -oý o +Å*0-{ö  (… o¢+ Þ, († &Ü&Ü* 0A{ó ,4oþ 2*o o - X+Êo **†{õ {¢ -*{õ oÿ ( *0,{ö  (… o Þ, († &Ü&Ü* 0-{ó , oþ -*o o ( **01{ö  (… (£+ Þ, († &Ü&Ü&* 0     s (¤+*Bs (†+*0   s  (¥+*0   s  (¦+*0({ø (§+þ,{ø ¥þoé **‚{ø ,+ s  }ø {ø *0"/{û *o  (å (;*Fo &}  *>{  o½ &*0Yo &} (4 {À o¨ , {Ä +} s } } } s } *6{ o *"{ *&} *V{ o þo *V{ o þo *0J{ ,(rºp(• o– sÔ z} s (ž+ { ( (4*>{ o *0h{ , {Ì + s s s o  { o (å o! Þu, oé &Ü&Ü *0M0.o¨+ ,{# *(røp(• o– s$ z0c{ , {Ì + s s% s o  { o YEs& (¤+*s' (¤+*0l{ , {Ì + YE(å o©+ s) (†+*s  s* s o  { o o+ *0"W{ { , {Ì +o, *0"W{ { , {Ì +o- *0#W{ { , {Ì +oª+*0#W{ { , {Ì +o«+*0s0 o1 *R{ ¥þoé *{2 *"{2 *Fo &}2 *{3 *{4 *"{3 *"{4 *bo &}3 }4 *{5 *{6 *{7 *"{5 *"{6 *"{7 *~o &}5 }6 }7 *{8 *{9 *{: *{; *"{8 *"{9 *"{: *"{; *žo &}8 }9 }: }; *{< *{= *{> *{? *{@ *"{< *"{= *"{> *"{? *"{@ *¾o &}< }= }> }? }@ *{A *{B *{C *{D *{E *{F *"{A *"{B *"{C *"{D *"{E *"{F *Þo &}A }B }C }D }E }F *{G *{H *{I *{J *{K *{L *{M *"{G *"{H *"{I *"{J *"{K *"{L *"{M *þo &}G }H }I }J }K }L }M *{N *{O *{P *{Q *{R *{S *{T *{U *"{N *"{O *"{P *"{Q *"{R *"{S *"{T *"{U *0Go &}N }O }P }Q }R }S }T }U *bo &}V }W *"{V *J{W oX ¥*>{W þoX *Fo &}Z *"{Z **o &*bs[ {\ (¬+s] *2(­+s^ *6(®+s^ ***6¥šs^ *"s_ *:{\ (¯+*N{\ (°+s] *Ž{\ sa þb sc (±+s^ *6{\ (²+*6{\ (³+*6{\ (´+*6{\ (µ+*6{\ (¶+*J{\ (·+s^ *z{\ sk þl sc (¸+*z{\ sn þo sc (¹+*6{\ (º+*:{\ (»+*N{\ (¼+s^ *Ž{\ st þu sc (½+s^ *N{\ (¾+s^ *Ž{\ sx þy sc (¿+s^ *z{\ s{ þ| sc (À+*6{\ (Á+*z{\ s þ€ s (Â+*z{\ sƒ þ„ s (Ã+*z{\ s† þ‡ sˆ (Ä+*z{\ s‰ þŠ sˆ (Å+*0 o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,3o oŽ ( , ( (È+ +È+Å s‘ Þu, oé &Ü&Ü*+Ju0º!o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,:o oŽ ( , ( (È+ +X+¾- þ« Þ1 (É+s‘ Þu  ,  oé &Ü&Ü*+tŸ0¶"o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,$ o o’ (È+ X+Ô-#s:rB pb¥K(“ (Ê+&+ (É+ Þu, oé &Ü&Ü*+p›0Z#o‹ oŒ (Ç+ oê , o o’ (È+ +Ú Þu, oé &Ü&Ü*0?Ž{\ s• þ– s (Ë+s˜ *¢{\ s™ þš s (Ì+¥šs^ *¢{\ sœ þ s (Í+¥šs^ *¶{\ (Î+sŸ þ  s (Ï+¥šs^ *¶{\ (Î+s¢ þ£ s (Ð+¥šs^ *¢{\ s¥ þ¦ sˆ (Ñ+¥šs^ *¢{\ s§ þ¨ sˆ (Ò+¥šs^ *¶{\ (Î+s© þª sˆ (Ó+¥šs^ *¶{\ (Î+s« þ¬ sˆ (Ô+¥šs^ *Ò{­ s® þ¯ s° s± þ² s (Õ+s´ *0M{\ {µ s¶ þ· s¸ s¹ þº s» s¼ þ½ s¾ (Ö+sÀ *0M{\ {µ sÁ þ s¸ sà þÄ s» sÅ þÆ sÇ (×+sÀ *0M{\ {µ sÉ þÊ s¸ sË þÌ s» sÍ þÎ sÇ (×+sÀ *:(Œ¥0*0 $(Š (’ (b(Ø+{Ï *:(Œ¥Ë*:(Œ¥Ë**o &**o &*Fo &}µ*&o *"{µ*Fo &}¶*"{¶*~o &}·}¸}¹*"{·*&}·*"{¸*&}¸*"{¹*&}¹**o &*0Bo &}½}¾}¿}À}Á}Â}Ã}Ä*"{¾*&}¾*"{¿*&}¿*"{À*&}À*"{Á*&}Á*"{Â*&}Â*"{Ã*&}Ã*"{Ä*&}Ä*B{½þoÐ *"sÑ *0},(Ò sÓ oÔ oê ,)oÕ (Ö  (× sØ oÙ +Ï Þu, oé &Ü&Ü&¥Ñ¥ÒsÚ *5H0.uÔ , *(Ù+*0S1(r—p(• o– £0 Œ0,+ rP ps z£0Œ0¥Õ(Ú+ Ži  (Û+ Y2 £1(Û XX3àY?¸(r—p(• o– £0 Œ0,+ rP ps z£0Œ0¥Õ(Ú+Ži .!(rZ p(• o– rŽ ps z Y 2"  £1(Û  X  X3ÞXX@Hÿÿÿ*072Œš,+ rP ps z(Ü+ Ži -(Û+*(Ý+*"(Þ+*"(ß+*&(à+*&(á+*6(Ü (à+*6(Ý (à+*6(Ü (á+*6(Ý (á+*~Ó*2r˜ psè z2r˜ psè z2r˜ psè z2r˜ psè z04(rþ p(• o– sÔ z04(rþ p(• o– sÔ z"oÞ *~Ô*(ß *&(à *(ß *&(à *F}á o &*n(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s zV{á sâ þoã *0U7 {á oä oê ,oå X(à ¤¦X +Ú Þu, oé &Ü&Ü&**9*>{á þoæ *zsç {á ¥Û(â+þoÙ *Žsè {á ¥Û(â+¥ þoØ *(é *03: (ê (ë sì (í (î (à s *(é *03: (ê (ë sì (í (î (à s *b}ï }ð o &*V{ï sâ þoñ *n(r, p(• o– s z0<{ï oò só *>{ï þoô *n(r, p(• o– s zV{ï sâ þoõ *0,=sâ {ï oõ ,{ï oñ §**n(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s z0?> ( ( s ( ( {ð sâ sö þo÷ *0†@ {ð oø oê ,Ooù (ê (ë sì (í (î X(à s ¤ X +© Þu, oé &Ü&Ü&*[j*>{ð þoú *zsû {ð ¥ä(ã+þo  *Žsü {ð ¥ä(ã+¥ þoØ *^s€ÓsÖ€Ô*&oä+*:(Œ¥0*0Aoý ,(þ **0C(ð s*0C(ð s*0C(ð s‘*0ÚH(ü  9Á{ÿ ( (æ  9ª{ ( (Ü  9“{ { (  (å+,þ+,j{ÿ ( {ÿ ( { { ( {ÿ ( X(u s ( (  (  s  *(  s  *0NJ(Þ  ,A{› (œ {› ( (u (  (  s  ( **Bs þ(æ+*0wL(v ,<{ ( { ( { ( ( ( +º{ -*(ç+(è+¥õ(é+(ê+s ( *J( ( (x*0A( ¥$ s—*0A( ¥$ s™*~o ,o (ë+þoz **0A( ¥$ s›*0A( ¥$ s*~1*¾(%oŤoz (ž ( (Ê*~2*~3*~4*~5*~6*~7*2Ð(W *~8*~9*~:*~;*~<*~=*zoc ,od (Œþ(p+**zoc ,od (Šþ(p+**º%¤%¤( ( ( (Û*0!O({ s  (~ s! s" *¦(z(}s# (z(}s# s$ *0\,,(% (& (ž ( ( s' þo( *(% (& (ž ( ( s' þo( *0BP(b ,+(% (& Œ() (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s1 s2 s3 *~>*~?*~@*~A*~B*~C*0‡Uoâ oÅ ( ,7(€ (% (& (&  (ž ( ( s' þo( *(% (& (& (ž ( ( s' þo( *0‘W,I((` (% (& (& Œ"() (* (* s+ þo, *((b (% (& (& () (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s4 s5 s6 *~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*0wXoâ (‡( ,1(€ (% (& (ž ( ( s' þo( *(% (& (ž ( ( s' þo( *0‰W,E(‡((` (% (& Œ"() (* (* s+ þo, *(‡((b (% (& () (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s7 s8 s9 *~P*~Q*~R*~S*~T*~U*~V*~W*~X*0(r^ p(• o– sÔ z0*YÐb(W (p+,.(% (&  (ž ( ( s' þo( *Б(W (p+,-(% (&  (ž ( ( s' þo( *Ð (W Ð(W oc , od +%¤%¤oX o: £p (ž ( (Ö (Ó(% (& (& (& (ž ( ( s; þo< *0 ¸Zoâ oÅ ,o= £+ (  9« (€Ð’(W (p+,+bГ(W (p+,+LÐ7(W (p+,+5Ðb(W (p+,+Б(W (p+, +(ì+(% (& (ž ( ( s' þo( *Ð’(W (p+,+(% (&  (ž ( ( s' þo( *Г(W (p+,,(% (&  (ž ( ( s' þo( *Ð7(W (p+,,(% (&  (ž ( ( s' þo( *    þ(¸*0Ç] Ð’(W (p+, (> 8s Г(W (p+, (> +W Ð7(W (p+, (> +; Ðb(W (p+, (> + Б(W (p+, (> + :ßÐ (W Ð(W oc , od + %¤%¤oX o: £p %¤o? Þ"t u”, o@ zþ (Ó(b  (% (& (& (& () (* (* sA þoB *  {C    ((b (% (& () (* (* s+ þo, *ì"0ê^ 9À ((` Ð’(W (p+,+fГ(W (p+,+OÐ7(W (p+,+7Ðb(W (p+,+Б(W (p+,+(í+ (% (& Œ"() (* (* s+ þo, *    þ(º*0œ`(’ (- (. (/ (. (- (0 (/ (0 (’(- (. (/ (. (- (0 (/ (0  (’  (- (.   (/ (.   (- (0   (/ (0  (’(- (. (/ (. (- (0 (/ (0  (’(- (. (/ (. (- (0 (/ (0  (î+(D (E   sF   sG sH *~Y*~Z*~[*~\*~]*~^*~_*~`*~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*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*~Œ*~*~Ž*~*~*0N,%(% (& (ž ( s' þo( *(% (& (ž ( s' þo( *0Ha(I (J (K ,+(% (& Œ0() (* s+ þo, *0gd(’ (- (. (/ (. (- (0 (/ (0  s³sL oï+¥ sM sN *~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*~²*~³*~´*~µ*~¶*&sO *~·*~¸*~¹*~º*~»*~¼*~½*~¾*0e(} (} sÉ*0e(} (} sË*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*~Ð*~Ñ*0§isP sQ (ð+ :„(­  u-;u-ft{S (T t{S (U  (ñ+(« *t{V (œ t{V ( (ò+(Ó**{W *0 k (ò+*0Dl(ü  ,8{ÿ ( {ÿ ( {ÿ ( sÛoÃ(X **0öm(ü  9ç{ÿ ( {ÿ ( (Þ  ,8‚(Ü ,8o(æ ,@{ ( (Ü ,){ oàr¾ p(” , { +#oàrÒ p(” ,oâoY +,9{ÿ ( {ÿ ( {ÿ ( sçoÃ(X **0 t(ô  ,Q{Z ([ -D{Z (\ (q ,0{] (í ,!{Z (^ { -{W (X *(ù 9š{_ (` :‰{_ (a (í,r{W (¿ ,`{b (c {b (d {_ (e sã(ó+¥õ(é+¥$(ô+  såoÃ(X *(?*0Áw(À  9¬{f (g (¿  9•{b (c {f (h oi oj 3sÝ (õ++,\{b (c {b (d {f (h sß (ö+¥õ(é+¥$(ô+sáoÃ(X *(@*6sé(÷+*~Ò*~Ó*~Ô*~Õ*~Ö*~×*~Ø*~Ù*~Ú*~Û*~Ü*~Ý*~Þ*~ß*~à*~á*~â*~ã*~ä*~å*~æ*~ç*~è*~é*~ê*~ë*~ì*~í*~î*~ï*~ð*~ñ*~ò*~ó*~ô*~õ*~ö*~÷*~ø*~ù*~ú*~û*~ü*~ý*~þ*~ÿ*~*~*~*0•{(ñ  9w{k (l (î  ,R{m (n ,(Ioo ,(p **(I{k (q oo ,+Û(Ioo ,Ô+Ê(Ioo ,Ã+¹(Ioo ,²+¨0 O‚(³E!I.t™ {. së(ø+(Ø*tš {/ {0 sí(ø+(Ù*tœ{4oÅ(oÅo= £ ,!(ˆ% ¤oX (Ì+rì p sß(ê(u ( sr os   oÅ ,(  st þou * *t›  {1  {2  {3oÅo= £ Ð0(W oc , od +% ¤% ¤oX Ð1(W oc , od +% ¤% ¤oX rì p sß(ê(uoÅrð pov (Ý(sr os (ž ( ( o: £p(Ö(Ì**0Uƒ(³3 s *oâ( oàsß (ê(u sïoà  (“s *0ü„(Doo 9‰{w (x :{w (y { 9¢ {w (y { { 9{ {‘ (ß  9„{ { - {W (X *(Eoo 9Õ{w (x :G{w (y { 9´{w (y { { 9{ {‘ (ß 9Œ{ { -{W 8cÿÿÿ(Coo   ,] {w (x ,O {w (y { ,< {w (y   {‘ (ß   , { { - {W 8õþÿÿ*(Coo   ,í {w (x ,ß {w (y { ,Ì {w (y   {‘ (ß   ,¬ { { -ž {W 8…þÿÿ(Coo   9|ÿÿÿ {w (x 9kÿÿÿ {w (y { 9Uÿÿÿ {w (y {‘ (ß 92ÿÿÿ{ { :!ÿÿÿ{W 8þÿÿ(Coo   9ÿþÿÿ {w (x 9îþÿÿ {w (y { 9Øþÿÿ {w (y {‘ (ß 9µþÿÿ{ { :¤þÿÿ{W 8‹ýÿÿ(Coo   9‚þÿÿ {w (x 9qþÿÿ {w (y { 9[þÿÿ {w (y {‘ (ß 98þÿÿ{ { :'þÿÿ{W 8ýÿÿ(Coo   9þÿÿ {w (x 9ôýÿÿ {w (y { 9Þýÿÿ {w (y {‘ (ß 9»ýÿÿ{ { :ªýÿÿ{W 8‘üÿÿ(Eoo 9ñ{w (x :c{w (y { 9Ð{w (y { { 94{ {‘ (ß 9™{ { -{W 8ýûÿÿ(Coo   9ôüÿÿ {w (x 9ãüÿÿ {w (y { 9Íüÿÿ {w (y   {‘ (ß   9ªüÿÿ { { :™üÿÿ {W 8€ûÿÿ(Coo   9wüÿÿ {w (x 9füÿÿ {w (y { 9Püÿÿ {w (y   {‘ (ß   9-üÿÿ { { :üÿÿ {W 8ûÿÿ(Coo   9úûÿÿ {w (x 9éûÿÿ {w (y { 9Óûÿÿ {w (y {‘ (ß 9°ûÿÿ{ { :Ÿûÿÿ{W 8†úÿÿ(Coo   9}ûÿÿ {w (x 9lûÿÿ {w (y { 9Vûÿÿ {w (y {‘ (ß 93ûÿÿ{ { :"ûÿÿ{W 8 úÿÿ(Coo   9ûÿÿ {w (x 9ïúÿÿ {w (y { 9Ùúÿÿ {w (y {‘ (ß 9¶úÿÿ{ { :¥úÿÿ{W 8Œùÿÿ(Coo   9ƒúÿÿ {w (x 9rúÿÿ {w (y { 9\úÿÿ {w (y {‘ (ß 99úÿÿ{ { :(úÿÿ{W 8ùÿÿ(Eoo 9Ü{w (x :T{w (y { 9Ç{w (y { { 90{ {‘ (ß  9˜{ { - {W 8øÿÿ(Coo   9xùÿÿ {w (x 9gùÿÿ {w (y { 9Qùÿÿ {w (y {‘ (ß 9.ùÿÿ{ { :ùÿÿ{W 8øÿÿ(Coo   9ûøÿÿ {w (x 9êøÿÿ {w (y { 9Ôøÿÿ {w (y {‘ (ß 9±øÿÿ{ { : øÿÿ{W 8‡÷ÿÿ(Coo   9~øÿÿ {w (x 9møÿÿ {w (y { 9Wøÿÿ {w (y {‘ (ß  96øÿÿ{ { :%øÿÿ {W 8 ÷ÿÿ(Coo   9øÿÿ {w (x 9ó÷ÿÿ {w (y { 9Ý÷ÿÿ {w (y {‘ (ß  9¾÷ÿÿ{ { :®÷ÿÿ {W 8–öÿÿ(Coo   9÷ÿÿ {w (x 9|÷ÿÿ {w (y { 9f÷ÿÿ {w (y {‘ (ß  9G÷ÿÿ{ { :7÷ÿÿ {W 8öÿÿ(Coo   9÷ÿÿ {w (x 9÷ÿÿ {w (y { 9ïöÿÿ {w (y {‘ (ß  9Ðöÿÿ{ { :Àöÿÿ {W 8¨õÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8õÿÿ(Coo   9öÿÿ {w (x 9öÿÿ {w (y { 9íõÿÿ {w (y {‘ (ß 9Êõÿÿ{ { :¹õÿÿ{W 8 ôÿÿ(Coo   9—õÿÿ {w (x 9†õÿÿ {w (y { 9põÿÿ {w (y {‘ (ß 9Mõÿÿ{ { :<õÿÿ{W 8#ôÿÿ(Coo   9õÿÿ {w (x 9 õÿÿ {w (y { 9óôÿÿ {w (y {‘ (ß  9Ôôÿÿ{ { :Äôÿÿ {W 8¬óÿÿ(Coo   9£ôÿÿ {w (x 9’ôÿÿ {w (y { 9|ôÿÿ {w (y {‘ (ß  9]ôÿÿ{ { :Môÿÿ {W 85óÿÿ(Coo   9,ôÿÿ {w (x 9ôÿÿ {w (y { 9ôÿÿ {w (y {‘ (ß  9æóÿÿ{ { :Öóÿÿ {W 8¾òÿÿ(Coo   9µóÿÿ {w (x 9¤óÿÿ {w (y { 9Žóÿÿ {w (y {‘ (ß  9oóÿÿ{ { :_óÿÿ {W 8Gòÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8¼ñÿÿ(Coo   9³òÿÿ {w (x 9¢òÿÿ {w (y { 9Œòÿÿ {w (y {‘ (ß 9iòÿÿ{ { :Xòÿÿ{W 8?ñÿÿ(Coo   96òÿÿ {w (x 9%òÿÿ {w (y { 9òÿÿ {w (y {‘ (ß 9ìñÿÿ{ { :Ûñÿÿ{W 8Âðÿÿ(Coo   9¹ñÿÿ {w (x 9¨ñÿÿ {w (y { 9’ñÿÿ {w (y {‘ (ß  9sñÿÿ{ { :cñÿÿ {W 8Kðÿÿ(Coo   9Bñÿÿ {w (x 91ñÿÿ {w (y { 9ñÿÿ {w (y {‘ (ß  9üðÿÿ{ { :ìðÿÿ {W 8Ôïÿÿ(Coo   9Ëðÿÿ {w (x 9ºðÿÿ {w (y { 9¤ðÿÿ {w (y {‘ (ß  9…ðÿÿ{ { :uðÿÿ {W 8]ïÿÿ(Coo   9Tðÿÿ {w (x 9Cðÿÿ {w (y { 9-ðÿÿ {w (y {‘ (ß  9ðÿÿ{ { :þïÿÿ {W 8æîÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8[îÿÿ(Coo   9Rïÿÿ {w (x 9Aïÿÿ {w (y { 9+ïÿÿ {w (y {‘ (ß 9ïÿÿ{ { :÷îÿÿ{W 8Þíÿÿ(Coo   9Õîÿÿ {w (x 9Äîÿÿ {w (y { 9®îÿÿ {w (y {‘ (ß 9‹îÿÿ{ { :zîÿÿ{W 8aíÿÿ(Coo   9Xîÿÿ {w (x 9Gîÿÿ {w (y { 91îÿÿ {w (y {‘ (ß  9îÿÿ{ { :îÿÿ {W 8êìÿÿ(Coo   9áíÿÿ {w (x 9Ðíÿÿ {w (y { 9ºíÿÿ {w (y {‘ (ß  9›íÿÿ{ { :‹íÿÿ {W 8sìÿÿ(Coo   9jíÿÿ {w (x 9Yíÿÿ {w (y { 9Cíÿÿ {w (y {‘ (ß  9$íÿÿ{ { :íÿÿ {W 8üëÿÿ(Coo   9óìÿÿ {w (x 9âìÿÿ {w (y { 9Ììÿÿ {w (y {‘ (ß  9­ìÿÿ{ { :ìÿÿ {W 8…ëÿÿ0D…(Eoo 9»{w (x :4{w (y { 9¨{w (y { { 9{ {‘ (ß  9Ž{ { - {W (X *(Coo ,]{w (x ,O{w (y { ,<{w (y {‘ (ß ,{ { -{W 8‰ÿÿÿ*(Coo ,í{w (x ,ß{w (y { ,Ì{w (y {‘ (ß ,¬{ { -ž{W 8ÿÿÿ(Coo 9|ÿÿÿ{w (x 9kÿÿÿ{w (y { 9Uÿÿÿ{w (y {‘ (ß  96ÿÿÿ{ { :&ÿÿÿ {W 8¢þÿÿ(Coo 9ÿÿÿ{w (x 9ôþÿÿ{w (y { 9Þþÿÿ{w (y {‘ (ß  9¿þÿÿ{ { :¯þÿÿ {W 8+þÿÿ(Coo 9Žþÿÿ{w (x 9}þÿÿ{w (y { 9gþÿÿ{w (y {‘ (ß  9Hþÿÿ{ { :8þÿÿ {W 8´ýÿÿ(Coo 9þÿÿ{w (x 9þÿÿ{w (y { 9ðýÿÿ{w (y {‘ (ß  9Ñýÿÿ{ { :Áýÿÿ {W 8=ýÿÿ0x‰u]-u\-t^{+*t]{**t\ {' {( {) {&{%((y sr þos *0 Å’(Goz ,z{{ (| (B(v (œ ( s(”(} (~ (’Ð (W o þ (ùs€ *(>  ,( {W 8Aÿÿÿ(A  ,( {W 8 ÿÿÿ(Zo   9r {‚ (ƒ (Þ   9 {‚ („  {› ( (B(v (œ ( (Ð (W o þ(y s… o† (ô8Pþÿÿ(à   ,7 {‡ (ˆ (t,  {‡ (‰  {‡ (Š  8Jÿÿÿ(B(v (œ ( ((‹ (Œ (u\,7t\{){({'(ys +)(yrø psß(ês (Ž ( ( oÅoc ,1od Ð>(W oc , od +(p++,+.oâ(ˆ%¤oX (Ì(Ð (W o þ(y s‘ o’ (ôs€ *(à   9iþÿÿ {‡ (ˆ (t9Oþÿÿ {‡ (‰  {‡ (Š  8yýÿÿ0” („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (   (v  (œ   ( s(”(~ (} (’(6Ð (W o þ oâoâoÅoÅ   sœ s ož (ôs€ *0'• („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (  (•   (v  (œ  ( s(”(~ (} (’(9Ð (W o þ oâoâoÅoÅ  sœ s ož (ôs€ *01– soà   („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (    (v  (œ  ( s(”(~ (} (’(9Ð (W o þoâoâoÅoÅ  sœ s ož (ôs€ *0öš(þ  ,(,%(rü p(• o– r0 p(` s z(á  ,',$(rü p(• o– rR p(` s z(ä  ,L,I{Ÿ (  rn p oH(Ç rŠ p(Ç (rü p(• o– (` s z,)oÒ (rü p(• o– (` s z(ö(±s€ *0õž(á  ,(,%(r” p(• o– rR p(` s z(ö  ,J,G{¡ (¢ rÐ poT (Ç rä p(Ç (r” p(• o– (` s z(ÿ ,',$(rü p(• o– rð p(` s z(ã ,',$(rü p(• o– r p(` s z(~*0ï (ô  ,7,4{Z (\ oÒ (r2 p(• o– (` s z(ø  ,B,? {£ (¤ rd poÒ (Ç (r” p(• o– (` s z(é ,M,J{¥ (¦ rn poT (Ç rä p(Ç (r” p(• o– (` s z(*0 ¦(ç  ,${§ (¨ {§ (© +Ò(Foo 9Y {w (ª {« 9D {w (ª {« {« 9&{« {« {« 9 {« {« {« 9ò{« {« {« :Ø {w (y { 9à {w (y { { 9¥{   {‘ (Þ   9‡ { { -y{¬ {‘  {› (œ   {› (  {¬  ((‹ (Œ      (z*(Zo 9{‚ (­ {« 9ê{‚ (­ {« {« 9Ë{« {« {« :±{‚ (ƒ (Þ 9—{¬ {‚ („ {› (œ  {› (    (†(® (¯ (° (± (Ð (W o þs… o† (ôs€ *(`o 9,{‚ (­ {« 9{‚ (­ {« {« 9÷{«   {« {« 9Ý {« !!{« {« :Ã{‚ (ƒ (Þ ""9© {¬ {‚ („ "{› (œ  "{› (    (…##(² #(³ #(´ s(”$$(} $(~ (’%Ð (W o þ%(ùs€ *(Hoo &&,E&{w (y { ,2&{w (y ''{ { -'{‘ 8½ûÿÿ(Goz ((9è({{ (µ {« 9Ò({{ (µ )){« {« 9³){« **{« {« :™*{¬ ({{ (| ){¬  (’   (ž ( (Ú(ˆ% ¤oX (ÌÐ (W o -( st ou +(ô(±s€ *(à ++9Ã+{‡ (‰ +{‡ (Š  +{‡ (ˆ (B(t,,,U(‚$$(} $(~ % %%oÅ ((o¶ st ou (Í(ôs€ *,(r‚ p(• o– s z(ô(±s€ *(Lo --9-{‚ (­ {« 9-{‚ (­ ..{« {« 9å.{« //{« {« 9Ë/{« 00{« {« :±-{‚ (ƒ (Þ 119—1{› (œ  -{‚ („ /{¬ 1{› (    (†(° (® (¯ (± (Ð (W o þs… o† (ôs€ *(Mo 2292{‚ (­ {« 92{‚ (­ 33{« {« 9å3{« 44{« {« 9Ë4{« 55{« {« :±2{‚ (ƒ (Þ 669—6{› (œ  2{‚ („ 4{¬ 6{› (    (†(° (® (¯ (± ( Ð (W o þs… o† (ôs€ *(No 7797{‚ (­ {« 97{‚ (­ 88{« {« 9å8{« 99{« {« 9Ë9{« ::{« {« :±7{‚ (ƒ (Þ ;;9—;{› (œ  7{‚ („ 9{¬ ;{› (    (†(° (® (¯ (± (!Ð (W o þs… o† (ôs€ *(Oo <<9<{‚ (­ {« 9<{‚ (­ =={« {« 9å={« >>{« {« 9Ë>{« ??{« {« :±<{‚ (ƒ (Þ @@9—@{› (œ  <{‚ („ >{¬ @{› (    (†(° (® (¯ (± ("Ð (W o þs… o† (ôs€ *(Po AA9A{‚ (­ {« 9A{‚ (­ BB{« {« 9åB{« CC{« {« 9ËC{« DD{« {« :±A{‚ (ƒ (Þ EE9—E{› (œ  A{‚ („ C{¬ E{› (    (†(° (® (¯ (± (#Ð (W o þs… o† (ôs€ *(Qo FF9F{‚ (­ {« 9F{‚ (­ GG{« {« 9åG{« HH{« {« 9ËH{« II{« {« :±F{‚ (ƒ (Þ JJ9—J{› (œ  F{‚ („ H{¬ J{› (    (†(° (® (¯ (± ($Ð (W o þs… o† (ôs€ *(Ro KK9K{‚ (­ {« 9K{‚ (­ LL{« {« 9åL{« MM{« {« 9ËM{« NN{« {« :±K{‚ (ƒ (Þ OO9—O{› (œ  K{‚ („ M{¬ O{› (    (†(° (® (¯ (± (%Ð (W o þs… o† (ôs€ *(So PP9P{‚ (­ {« 9P{‚ (­ QQ{« {« 9åQ{« RR{« {« 9ËR{« SS{« {« :±P{‚ (ƒ (Þ TT9—T{› (œ  P{‚ („ R{¬ T{› (    (†(° (® (¯ (± (&Ð (W o þs… o† (ôs€ *(coz UU9ÀU{{ (µ {« 9ªU{{ (µ VV{« {« 9‹V{« WW{« {« -tV{¬ U{{ (| W{¬  (‚$$(} $(~  (- Ð (W o þ( s· o¸ (ôs€ *(ho XX9ØX{‚ (­ {« 9ÂX{‚ (­ YY{« {« 9£Y{« ZZ{« {« :‰Y{¬ X{‚ („ Z{¬  X{‚ (ƒ  (‚$$(} $(~ () Ð (W o þ( (Bs¹ oº (ôs€ *(do [[9Ø[{‚ (­ {« 9Â[{‚ (­ \\{« {« 9£\{« ]]{« {« :‰\{¬ [{‚ („ ]{¬  [{‚ (ƒ  (‚$$(} $(~ (* Ð (W o þ( (Bs¹ oº (ôs€ *(io ^^9^{‚ (­ {« 9ê^{‚ (­ __{« {« 9Ë_{« ``{« {« :±^{‚ (ƒ (Þ aa9—a{› (œ  ^{‚ („ `{¬ a{› (    (†(° (® (¯ (± (+Ð (W o þs… o† (ôs€ *(eo bb9b{‚ (­ {« 9êb{‚ (­ cc{« {« 9Ëc{« dd{« {« :±b{‚ (ƒ (Þ ee9—e{› (œ  b{‚ („ d{¬ e{› (    (†(° (® (¯ (± (,Ð (W o þs… o† (ôs€ *(To ff9Sf{‚ (­ {« 9=f{‚ (­ gg{« {« 9g{« hh{« {« 9h{« ii{« {« :êf{‚ (ƒ (Þ jj9Ðh{¬ j{› (œ  f{‚ („ j{› (  (‚$$(} $(~   (B(vkk(œ k( (³3(±+ oÅ oâ(­(0Ð (W o þs… o† (ôs€ *(Uo» ll9l{¼ (½ {« 9øl{¼ (½ mm{« {« 9Ùm{« nn{« {« 9¿n{« oo{« {« 9¥o{« pp{« {« :‹l{¼ (¾ (Þ qq9ql{¼ (¿ (Þ rr9Wp{¬ r{› (œ  q{› (œ l{¼ (À r{› (  q{› ( (‚$$(} $(~   (B(vkk(œ sk( %(B(vtt(œ ut( vsv(”ww(} w(~ xx(’y(³3(±+ oÅoÅ(­z(3Ð (W o þuoâ%oÅyoÅs%uys sÁ o (ôzs€ *(joo {{9S{{w (ª {« 9={{w (ª ||{« {« 9|{« }}{« {« 9}{« ~~{« {« 9ê~{« {« {« 9Ð{« €€{« {« :¶{{w (y { 9 {{w (y { { 9{ ‚‚{ { 9g‚{ ƒƒ{‘ (Þ „„9Iƒ{ { 98ƒ{ ……{‘ (Þ ††9…{ { 9 …{ ‡‡{‘ (yˆˆ9ëˆ{“ (” { 9Õˆ{“ (” ‰‰{ { 9¶‰{ ŠŠ{ { :œ‡{ { :‹}{¬ {‘ ‰{à  „{› (œ „{› (  ‚{‘ Š{à s†{› (œ u†{› ( ˆ{“ (• %  su%({*(koo ‹‹9S‹{w (ª {« 9=‹{w (ª ŒŒ{« {« 9Œ{« {« {« 9{« ŽŽ{« {« 9êŽ{« {« {« 9Ð{« {« {« :¶‹{w (y { 9 ‹{w (y ‘‘{ { 9‘{ ’’{ { 9g’{ ““{‘ (Þ ””9I“{ { 98“{ ••{‘ (Þ ––9•{ { 9 •{ ——{‘ (y˜˜9ë˜{“ (” { 9Õ˜{“ (” ™™{ { 9¶™{ šš{ { :œ—{ { :‹{¬ ‘{‘ ™{à  ”{› (œ ”{› (  ’{‘ š{à s–{› (œ u–{› ( ˜{“ (• %  su%(|*(loo ››9^›{w (ª {« 9H›{w (ª œœ{« {« 9)œ{« {« {« 9{« žž{« {« 9õž{« ŸŸ{« {« 9ÛŸ{«   {« {« :Á›{w (y { 9«›{w (y ¡¡{ { 9Œ¡{ ¢¢{ { 9r¢{ ££{‘ (Þ ¤¤9T£{ { 9C£{ ¥¥{‘ (Þ ¦¦9%¥{ { 9¥{ §§{‘ (y¨¨9ö¨{“ (” { 9à¨{“ (” ©©{ { 9Á©{ ªª{ { :§§{ { :–{¬ ¡{‘ ©{à  ¤{› (œ ¤{› (  ž{¬  ¢{‘ ª{à s¦{› (œ u¦{› ( ¨{“ (• %   su%(}*(>««,«{W 8Ààÿÿ(A¬¬,¬{W 8žàÿÿ(Joz ­­,­{{ (| (ö(±s€ *(Koz ®®,®{{ (| (ö(±s€ *(ù ¯¯,;,8¯{_ (a °°oÒ ±(r® p(• o– ±(` s z(€*0%§( (Œ (‹ (ysÄ *0¨¨(x 9{W (‚ (~ (}  oÅo= £(Š%¤oX  oÅoÅ , oÅo þ+, (Ì+ (•sÄ *(±sÄ *0 Ì©(‚ (} (~ (‚ (~  (} (B(v(œ ( (B(v  (œ   (  s(”  (~   (’s (”(~  (’sÆ sÇ *0:ª( (‹ (Œ (B(v  (œ ( sÈ *08«(… (É (² (³ (´ (y sÊ *0Ú¬(‚ (} (~ (³3*oÅ oÅo= £rØ psß(ê(v(œ ( (sr os  (Ž,! o= £Ð (W o þ+,+ (,( st þou * *0#­(† (¯ (° (± s *0á®(Vo 9þ{‚ (­ {« 9é{‚ (­ {« {« 9Í{« {« {« 9¶{« {« {« :Ÿ{‚ (ƒ (Þ 9†{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  ( Ð (W o þ   s… þo† *(Wo   9  {‚ (­ {« 9ô {‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡ {‚ (ƒ (Þ 9‡{› ( {› (œ  {‚ („ {¬ (ˆ  (Ž   (   (  (£Ð (W o þ   s… þo† *(Xo 9 {‚ (­ {« 9ô{‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡{‚ (ƒ (Þ 9‡{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  (¦Ð (W o þ   s… þo† *(Yo 9 {‚ (­ {« 9ô{‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡{‚ (ƒ (Þ 9‡{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  (©Ð (W o þ   s… þo† *(qoz 9{{ (µ {« 9‡{{ (µ {« {« ,k{« {« {« -T{¬ {{ (| {¬ (‡( Ð (W o þs· þo¸ *(roz   9 {{ (µ {« 9‡ {{ (µ !!{« {« ,k!{« ""{« {« -T!{¬  {{ (| "{¬ (‡(ùÐ (W o þs· þo¸ *(\oz ##9#{{ (µ {« 9‡#{{ (µ $${« {« ,k${« %%{« {« -T${¬ #{{ (| %{¬ (‡(ÿÐ (W o þs· þo¸ *([oz &&9&{{ (µ {« 9‡&{{ (µ ''{« {« ,k'{« (({« {« -T'{¬ &{{ (| ({¬ (‡(üÐ (W o þs· þo¸ *(]oz ))9){{ (µ {« 9‡){{ (µ **{« {« ,k*{« ++{« {« -T*{¬ ){{ (| +{¬ (‡(Ð (W o þs· þo¸ *(^oz ,,9,{{ (µ {« 9‡,{{ (µ --{« {« ,k-{« ..{« {« -T-{¬ ,{{ (| .{¬ (‡(Ð (W o þs· þo¸ *(_oz //9/{{ (µ {« 9‡/{{ (µ 00{« {« ,k0{« 11{« {« -T0{¬ /{{ (| 1{¬ (‡(Ð (W o þs· þo¸ *(mo 2292{‚ (­ {« 92{‚ (­ 33{« {« 9å3{« 44{« {« 9Ë4{« 55{« {« :±2{‚ (ƒ (Þ 669—6{› ( 6{› (œ 2{‚ („ 2{‚ (Ë  4{¬ (ˆ  (Ž   (   ( 7(É Ð (W o þ7  sÌ þoÍ *(oo 8898{‚ (­ {« 98{‚ (­ 99{« {« 9å9{« ::{« {« 9Ë:{« ;;{« {« :±8{‚ (ƒ (Þ <<9—<{› ( <{› (œ 8{‚ („ 8{‚ (Ë  :{¬ (ˆ  (Ž   (   ( 7(× Ð (W o þ7  sÌ þoÍ *(no ==9={‚ (­ {« 9={‚ (­ >>{« {« 9å>{« ??{« {« 9Ë?{« @@{« {« :±={‚ (ƒ (Þ AA9—A{› ( A{› (œ ={‚ („ ={‚ (Ë  ?{¬ (ˆ  (Ž   (   ( 7(å Ð (W o þ7  sÌ þoÍ *(po BB9B{‚ (­ {« 9B{‚ (­ CC{« {« 9åC{« DD{« {« 9ËD{« EE{« {« :±B{‚ (ƒ (Þ FF9—F{› ( F{› (œ B{‚ („ B{‚ (Ë  D{¬ (ˆ  (Ž   (   ( 7(ó Ð (W o þ7  sÌ þoÍ *(ao GG9ðG{‚ (­ {« 9ÚG{‚ (­ HH{« {« 9»H{« II{« {« :¡G{‚ (ƒ (Þ JJ9‡J{› (œ G{‚ („ I{¬ J{› ( (ˆ  (   (   (Ž  (¯Ð (W o þ   s… þo† *(bo KK9ðK{‚ (­ {« 9ÚK{‚ (­ LL{« {« 9»L{« MM{« {« :¡K{‚ (ƒ (Þ NN9‡N{› (œ K{‚ („ M{¬ N{› ( (ˆ  (   (   (Ž  (²Ð (W o þ   s… þo† *(so OO9ðO{‚ (­ {« 9ÚO{‚ (­ PP{« {« 9»P{« QQ{« {« :¡O{‚ (ƒ (Þ RR9‡R{› (œ O{‚ („ Q{¬ R{› ( (ˆ  (   (   (Ž  (µÐ (W o þ   s… þo† *(fo SS9µS{‚ (­ {« 9ŸS{‚ (­ TT{« {« 9€T{« UU{« {« -iS{‚ (ƒ T{¬ S{‚ („ U{¬ (‡ (—Ð (W o þ (Bs¹ þoº *(go VV9µV{‚ (­ {« 9ŸV{‚ (­ WW{« {« 9€W{« XX{« {« -iV{‚ (ƒ W{¬ V{‚ („ X{¬ (‡ (šÐ (W o þ (Bs¹ þoº *(>YY,Y{W 8Híÿÿ(AZZ,Z{W 8'íÿÿ(‡*6s (÷+*0$¯(‡ (Š (b Þt  þ* 0 °(Vo 9û{‚ (­ {« 9æ{‚ (­ {« {« 9Ê{« {« {« 9³{« {« {« :œ{‚ (ƒ (Þ 9ƒ{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (¡ Ð (W o þ   (BsÎ þoÏ *(Wo   9  {‚ (­ {« 9ó {‚ (­   {« {« 9Ô {« {« {« 9º{« {« {« :  {‚ (ƒ (Þ 9†{› ( {› (œ  {¬  {‚ („ {¬  {¬  (‹ (¤ Ð (W o þ   (BsÎ þoÏ *(Xo 9 {‚ (­ {« 9 {‚ (­ {« {« 9ë{« {« {« 9Ñ{« {« {« :·{‚ (ƒ (Þ 9{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (§ Ð (W o þ  (% ¤oX (BsÎ þoÏ *(Yo 9 {‚ (­ {« 9 {‚ (­ {« {« 9ë{« {« {« 9Ñ{« {« {« :·{‚ (ƒ (Þ 9{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (ª Ð (W o þ  (% ¤oX (BsÎ þoÏ *(qoz 9{{ (µ {« 9‡{{ (µ {« {« ,k{« {« {« -T{¬ {{ (| {¬  (‹ (  Ð (W o þ sÐ þoÑ *(roz 9{{ (µ {« 9‡{{ (µ {« {« ,k{«   {« {« -T{¬ {{ (|  {¬  (‹ (ú Ð (W o þ sÐ þoÑ *(\oz !!9!{{ (µ {« 9‡!{{ (µ ""{« {« ,k"{« ##{« {« -T"{¬ !{{ (| #{¬  (‹ ( Ð (W o þ sÐ þoÑ *([oz $$9${{ (µ {« 9‡${{ (µ %%{« {« ,k%{« &&{« {« -T%{¬ ${{ (| &{¬  (‹ (ý Ð (W o þ sÐ þoÑ *(]oz ''9'{{ (µ {« 9‡'{{ (µ (({« {« ,k({« )){« {« -T({¬ '{{ (| ){¬  (‹ ( Ð (W o þ sÐ þoÑ *(^oz **9*{{ (µ {« 9‡*{{ (µ ++{« {« ,k+{« ,,{« {« -T+{¬ *{{ (| ,{¬  (‹ ( Ð (W o þ sÐ þoÑ *(_oz --9-{{ (µ {« 9‡-{{ (µ ..{« {« ,k.{« //{« {« -T.{¬ -{{ (| /{¬  (‹ (  Ð (W o þ sÐ þoÑ *(mo 0090{‚ (­ {« 90{‚ (­ 11{« {« 9é1{« 22{« {« 9Ï2{« 33{« {« :µ0{‚ (ƒ (Þ 449›4{› ( 4{› (œ 1{¬ 0{‚ („ 3{¬  0{‚ (Ë 52{¬  (‹ (Ê5 Ð (W o þ   (BsÆ sÒ þoÓ *(oo 66956{‚ (­ {« 96{‚ (­ 77{« {« 97{« 88{« {« 9æ8{« 99{« {« :Ì6{‚ (ƒ (Þ ::9²:{› ( :{› (œ 7{¬ 6{‚ („ 9{¬  6{‚ (Ë 58{¬  (‹ (Ø5 Ð (W o þ  (% ¤oX (BsÆ sÒ þoÓ *(no ;;9;{‚ (­ {« 9;{‚ (­ <<{« {« 9é<{« =={« {« 9Ï={« >>{« {« :µ;{‚ (ƒ (Þ ??9›?{› ( ?{› (œ <{¬ ;{‚ („ >{¬  ;{‚ (Ë 5={¬  (‹ (æ5 Ð (W o þ   (BsÆ sÒ þoÓ *(po @@95@{‚ (­ {« 9@{‚ (­ AA{« {« 9A{« BB{« {« 9æB{« CC{« {« :Ì@{‚ (ƒ (Þ DD9²D{› ( D{› (œ A{¬ @{‚ („ C{¬  @{‚ (Ë 5B{¬  (‹ (ô5 Ð (W o þ  (% ¤oX (BsÆ sÒ þoÓ *(ao EE9ßE{‚ (­ {« 9ÉE{‚ (­ FF{« {« 9ªF{« GG{« {« :E{‚ (ƒ (Þ HH,yH{› (œ F{¬ E{‚ („ G{¬  H{› ( (‹ (° Ð (W o þ (BsÔ þoÕ *(bo II9ßI{‚ (­ {« 9ÉI{‚ (­ JJ{« {« 9ªJ{« KK{« {« :I{‚ (ƒ (Þ LL,yL{› (œ J{¬ I{‚ („ K{¬  L{› ( (‹ (³ Ð (W o þ (BsÔ þoÕ *(so MM9ßM{‚ (­ {« 9ÉM{‚ (­ NN{« {« 9ªN{« OO{« {« :M{‚ (ƒ (Þ PP,yP{› (œ N{¬ M{‚ („ O{¬  P{› ( (‹ (¶ Ð (W o þ (BsÔ þoÕ *(fo QQ9µQ{‚ (­ {« 9ŸQ{‚ (­ RR{« {« 9€R{« SS{« {« -iQ{‚ (ƒ R{¬ Q{‚ („ S{¬  (‹ (˜ Ð (W o þ (BsÖ þo× *(go TT9µT{‚ (­ {« 9ŸT{‚ (­ UU{« {« 9€U{« VV{« {« -iT{‚ (ƒ U{¬ T{‚ („ V{¬  (‹ (› Ð (W o þ (BsÖ þo× *(>WW,W{W 8íÿÿ(AXX,X{W 8ôìÿÿ(‹*:(Ø }Ö*0ƒ±{Öoo ,q{w (x ,d{w (x {w (y { ,F{w (y { { --{w (ª {W {‘  sÙ (Ú **:(Û }×*0©²{×oo 9”{w (x 9„{w (x {w (y { ,f{w (y { { ,M{ { { -9{w (ª {W  {‘ {‘ sÜ (Ý **:(Þ }Ø*0 ͳ{Øoo 9¸{w (x 9¨{w (x {w (y { 9‡{w (y { { ,n{ { { ,Z { { { -D{w (ª {W {‘  {‘ {‘   sß (à **V(á }â }ã *z{â {ã Œ¦¥é(Ô*(ä *0´(å (æ sç *:(è }Û*0n¶(é (ê {Ûo ,{Û(ë+oz +{Û (ù+oë Þ"t u”, o@ zþ *9J":(ì }Ü*0w·(í (î (ï {Üo ,{Ü(ë+oz +{Ü (ù+oë Þ"t u”, o@ zþ*@R":(ð }Ý*0"¸(ñ (ò {Ý(|(Ê*:(ó }Þ*0*¹(ô (õ (ö {Þ(|(Ë*:(÷ }ø *01º(ù (ú (û {ø Œ¦sA þoB *:(ü }ý *06»(þ (ÿ ( {ý Œ¦¥és; þo< *V( } } *0 S¼( ( ( ( { { Œ¦¥Œ§¥é Œ­¥éþ(“*V( }  }  *0 N¼( ( ( ( {  {  Œ¦¥Œ§ Œ­¥éþ(”*V(  }  }  *0 I½( ( ( ( {  {  Œ¦¥é Œ§¥éþ(œ*V( } } *0 €¾( ( ( ( ( ( ( { { Œ¦¥Œ§¥ Œ­Œµ¥Œ¿¥éþ(*V(  } } *0 I½( ( ( ( { { Œ¦¥é Œ§¥éþ(«*V( } }  *0 X¿(! (" (# ($ (% { {  Œ¦¥Œ§ Œ­¥éþ(¬*0d(& }' }( }) }* }+ }, }- }.  }/  }0  }1  }2 *0™À(3 (4 (5 (6 (7 {' {( {) {* {+ {, {- {. {/ {0 {1 {2 Œ¦¥éŒ§¥é Œ­¥éþ(¹*0\(8 }9 }: }; }< }= }> }? }@  }A  }B  }C *0ÊÂ(D (E (F (G (H (I (J (K (L {9 {: {; {< {= {> {? {@ {A {B {C Œ¦Œ§¥ Œ­¥ŒµŒ¿¥Œv¥éþ(»*V(H}}*b{{sM Œx*r(N }O }P }Q *0 9Ä{Q (R (S (T { {sU þ(ú+*V(V }W }X *0 AÅ(Y (Z ([ {W {X Œ¦¥Œ§¥éþ(õ*V(\ }] }^ *0 <Å(Y (Z ([ {] {^ Œ¦¥s_ þ(û+*(` *0 Æ(a (b (c (d (e (Ü ,*{  (å+,þ+, { * oâoÅ(ƒ%¤%¤oX ( ( (Û ,@ (€ ((% (& (&  (ž ( ( s' þo( *((% (& (&  (ž ( ( s' þo( *(f *0 |Ç(g (h (i (j ,.((% (&  (ž ( ( s' þo( *((% (&  (ž ( ( s' þo( *(k *07È(l (m ((% (& (ž ( s' þo( *(n *Ž((% (& (ž s' þo( *(o *0 yÉ(p (q (r (s (t (u (v  oâoâ(ˆ%¤oX  (ƒ%¤% ¤oX ( ( (Û (…%¤%¤%¤oX ( ( ( (Û ,V (€  (€ ((% (& (& (&   (ž ( ( ( s' þo( *((% (& (& (&   (ž ( ( ( s' þo( *(w *0 ÚÊ(x (y (z ({ oâÐ(W (ƒ%¤%¤oX ( ( (Û,=(€(oâ(% (& (ž ( ( s' þo( *(oâ(% (& (ž ( ( s' þo( *V(| }} }~ *0 ÞË(x (y (z ({ oâ oÅ(ƒ%¤%¤oX ( ( (Û,A(€{} (% (& (& (ž ( ( s' þo *{~ (% (& (& (ž ( ( s' þo *V(w }}*0 ËÌ(x (y (z ({ oâ(ƒ%¤%(‡¤oX ( ( (Û,:(€{(% (& (ž ( ( s' þo( *{(% (& (ž ( ( s' þo( *V(f }}*0 ~Ç(g (h (i (j ,/{(% (&  (ž ( ( s' þo( *{(% (&  (ž ( ( s' þo( *(€ *0iÍ( (‚ (ƒ ,((.(% (& (ž ( s' þo( *(/(% (& (ž ( s' þo( *(w *0 ÜË(x (y (z ({ oâ oÅ(ƒ%¤%¤oX ( ( (Û,@(€(1(% (& (& (ž ( ( s' þo( *(2(% (& (& (ž ( ( s' þo( *(„ *0 TÎ(… († (‡ (ˆ (‰ (Š (‹ (Œ (œ (Œ ( (ƒ%¤%¤oX ( ( (Û (ƒ%¤% ¤oX ( ( (Û ,U (€  (€ (4 (% (& (& (&   (ž ( ( ( s' þo( *(5 (% (& (& (&   (ž ( ( ( s' þo( *( *0 Ï(Ž ( ( (‘ (’ (“ (” (• (– (• (— (• (˜  (• (™  (• (š  (• (›  (• (œ  (ƒ%¤% ¤oX ( ( (Û(ƒ%¤% ¤oX  ( (  (Û(…%¤%¤%¤oX   ( ( (  (Û,s(€(€(€(7 (% (& (& (& (& (ž ( ( ( ( ( s' þo( *(8 (% (& (& (& (& (ž ( ( ( ( ( s' þo( *( *0 (Ð(Ž ( ( (‘ (’ (“ (” (• (– (• (— (• (˜  (• (™  (• (š  (• (›  (• (œ  (ƒ%¤% ¤oX ( ( (Û(ƒ%¤% ¤oX  ( (  (Û(ˆ%¤oX (…%¤%¤%¤oX   ( ( (  (Û,s(€(€(€(: (% (& (& (& (& (ž ( ( ( ( ( s' þo( *(; (% (& (& (& (& (ž ( ( ( ( ( s' þo( *:(á } *:{ (ü+*:(ž }Ÿ *b{Ÿ Œ¦¥é(ü+*V(  }}*v{(å+, {(X **(¡ *Bo¢ o£ þ*(¤ *&(ý+*:(  }*:{o¥ *(¦ *0{Ñ{ ,\ { { -{à  s (  (  *(á  , {Ÿ (ý+*(ž ( (ý+*(á  ,ä {Ÿ +Í:(  }*:{o¥ *V(  }}*v{(å+, {(X **(§ *0!Ò(A ,{W o¨ (X **:(© }*R{(Š(u*:(© }*R{(Š(u*V(  } }!*v{ (å+, {!(X **( *2sú**u\þ*s**u]þ*s**u^þ*0Ó u^,+ u],+*0KÔu^,+ (Ü  ,${ (å+,þ+, { *(ò*²(ñ}%}&}'}(})*{%*{&*{'*{(*{)*:(ñ}**{**:(ñ}+*{+*:( },*2{,{%*2{,{&*2{,{'*2{,{(*2{,{)*:( }-*2{-{**:( }.*2{.{+*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*V(  }/}0*0K{0(å+,:( {/(% (& {0(ê(ž ( s' o( (X **(ª *"(ƒ*(ª *6(±sÄ *(ª *6(±sÄ *(§ *0'Ò(w ,{W (‰o¨ (X **00Öu„ , *(rä p(• o– rB ps z0s Ðå( ¥$€1Ð…(W €3(‚oc , (‚od +(‚€2І(W €5(„oc , („od +(„€4Ї(W €7(†oc , (†od +(†€6Ð>(W €9(‰oc , (‰od +(‰€8Ј(W €;(‹oc , (‹od +(‹€:Ð(W €=(oc , (od +(€<Ы Ð` (þ+€>(–(¬ €?(–(­ €@Ю Ðr (þ+€A(™(¬ €B(™(­ €CЯ Ђ (ÿ+€D(Ÿ(° €E(Ÿ(± €Fв Ð… (ÿ+€G(¢(° €H(¢(± €IЯ Ђ (ÿ+€J(¥(° €K(¥(± €Lв Ð… (ÿ+€M(¨(° €N(¨(± €Oг Ðm (+€P(®(´ €Q(®(µ €Rж Ðp (+€S(±(´ €T(±(µ €Uз Ð} (+€V(´(´ €W(´(µ €Xи €Zй €[к €\л €]м €^н €_о €`п €aÐÀ €bÐÁ €cÐ÷€d(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(+€Y(½( €e(½(à €fÐÄ €hÐÅ €iÐÆ €jÐÇ €kÐÈ €lÐÉ €mÐÊ €nÐË €oÐÌ €pÐÍ €qÐö€r(Ì(Í(Î(Ï(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(+€g(Ë( €s(Ë(à €tÐÎ €vÐÏ €wÐÐ €xÐÑ €yÐÒ €zÐÓ €{ÐÔ €|ÐÕ €}ÐÖ €~Ð× €Ðø€€(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(+€u(Ù( €(Ù(à €‚ÐØ €„ÐÙ €…ÐÚ €†ÐÛ €‡ÐÜ €ˆÐÝ €‰ÐÞ €ŠÐß €‹Ðà €ŒÐá €Ðõ€Ž(è(é(ê(ë(ì(í(î(ï(ð(ñ(ò(+€ƒ(ç( €(ç(à €Ðâ Ðq (+€‘(ø(ã €’(ø(ä €“Ðå Ð~ (+€”(û(ã €•(û(ä €–Ðæ Ðe (+€—(þ(ã €˜(þ(ä €™Ðç Ðf (+€š((ã €›((ä €œÐè Ðg (+€((ã €ž((ä €ŸÐé Ðh (+€ ((ã €¡((ä €¢Ðê Ði (+€£( (ã €¤( (ä €¥Ðë (}€¦Ðì (}€¨Ðí (}€©s»€§Ðî (}€«Ðï (}€¬s½€ªÐð (}€®s¿€­Ðñ (}€°sÁ€¯Ðò (}€²Ðó (}€³sÀ±Ðô (}€µÐd (}€¶sÅ€´Ðõ (}Л (}(+€·Ðö (}О (}(+€¸Ð÷ (}С (}(+€¹Ðø (}Ф (}(+€º(€»( €¼(!€½("€¾Ðù Ðs ((€¿Ðú Ðw ((€ÀÐû Ðv ('€ÁÐü Ðz ('€ÂÐý (}€ÄÐj (}€ÅsÍ€ÃÐþ (}€ÇЗ (}€ÈsÏ€ÆÐÿ (}€Êг (}€ËsÑ€ÉÐ (}€Íп (}€ÎsÓ€ÌÐ (}€ÐÐÈ (}€ÑsÕ€ÏÐ(W rü po o (ð€ÒÐ(W oŒ r po rn po o (ð€ÓÐ(W oŒ rŽ po rú po o (ð€ÔÐ×(ð€ÕÐÙ(r€ÖÐÚ(ð€×ÐØ(ð€ØÐÜ(r€ÙÐÝ(r€ÚÐú(s€ÛÐû(s€ÜÐü(s€ÝÐý(s€ÞÐþ(s€ßÐÿ(s€àÐ(s€áÐ(s€âÐù(s€ãÐ(t€äÐñ(s€åÐò(s€æÐó(s€çÐô(s€èÐà(s€éÐð(r€êÐá(r€ëÐâ(r€ìÐã(r€íÐä(r€îÐß(s€ïÐç(s€ðÐè(s€ñÐæ(r€òÐí(s€óÐî(s€ôÐÞ(s€õÐê(s€öÐë(s€÷Ðì(s€øÐ(ð€ùÐ(ð€úÐ(ð€ûÐ÷(s€üÐø(s€ýÐö(s€þÐõ(s€ÿÐå(r€Ðé(r€Ðï(s€*:( } *N{ o { *:}  ( *B{  þo  *:}  ( *B{  þo  *:}  ( *B{  þo  *:}  ( *B{  þo  *:} ( *B{ þo  *:} ( *B{ þo  *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *( *6sÔ (+*:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:}  ( *B{  þo *:}! ( *B{! þo *:}" ( *B{" þo *:}# ( *B{# þo *:}$ ( *F{$ þ(+*:}& ( *B{& þo *:}' ( *B{' þo *:}( ( *F{( þ(+*:}* ( *B{* þo *:}+ ( *B{+ þo *:}, ( *Z{, (+þ(+*0Øs–s- s. *~@*~A*~B*09Ù(ñ  ,'{k (q {k (l ( +Ï( *6(ž (h*0SÛ{Þ 9ˆ {/ Œ0¥é(õ  ,m{0 (1 ,`{0 (1 {W (Ü  ,E{Þ  { (å+,/{Þ  { {/ (2 8mÿÿÿ{Þ ,b{/ Œ0¥é(î ,C{Þ {m (n (+,&{Þ {m (n  8ÿÿÿ{Þ ,L{/ Œ0¥é(Ü   ,-{Þ {Þ - { (å+, { (3 **0Ü (ž ( +*0ŒÝ(ü  9}{ÿ ( (ø  ,i{£ (4 { -W{ÿ ( (i {ÿ ( {ÿ (  (k,{Ÿ  s5 (6 ***~C*~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*~P*~Q*~R*~S*~T*~U*~V*~W*~X*~Y*~Z*~[*0dÞ(ø  ,X{£ (¤ o7 oc ,(„od o8 +,%{£ (¤ {£ (4  s9 (: **0@ß(~o£ Y£ s¡( +( +oX o: £p (Ö*0 ƒà{ 9s { { 9\{ { { 9@{ { { 9${ { { 9 { { { 9ê{ { { 9Ë{ { { 9¦{ {‘ {‘  {‘  {‘  {‘  {‘  {‘ {‘ {      ( (ˆ(ž ( ( ( ( ( ( ( ( (‡*(‡*+ó+î+é+ä+ß+Ú+Õ0‹âr$p/+X Œb ,/u™ , ( ¥so; +oÒ +rp(Ç ov (Ý/*Yo= £8uÿÿÿ>oÅ(‰*0gäod  (‚o< s= (> ,$(? o= ( +o@ (ë+þoX *s£r.psA ( +þoB *0Äæ(ô  9µ{Z ([ 9¥{Z ([ {W (ã  9‡{Z (^ { -u{¥ (¦ {Z (\ {¥ (C  0(D (\s¥(+,){Ì   o£ / oE (X ****0 )è(³E˜ÐFt™ {. {F 9g {F {F 9U{F {F {F 9> {F {F {F 9%{F {F {F 9 {F {F {F 9ñ{F {F {F 9×{F {F {F 9½{F   {G  {G  {G  {G  {G {G  {G {G  {F sÊ    (H (©(I (H (H (H (H (H (H (H (H sÌþ(‹*sÎsÐþ(‹*tš{0 sÔ( +( +(©(Y8þÿÿt›{3 o= £o= £Ð0(W oc , od +%¤% (¤þoX *tœ{4 od Ј(W oc , od +(p+o= £% (¤,,Ј(W oc , od +þoX *Ð>(W oc , od +þoX **~\*~]*~^*~_*0ê(ŽoJ ,*(­    u-N u:wt{S (T t{S (U { -+KsØ (ñ+(« +7t{V (œ t{V ( (’(Ó+ (l,w{K (L {K (M {K (N (f%oâ¤oz sÚ (ž ( (+(+(ž ( (Ê*(†,U{£ (¤  {£ (4 (g% o7 ¤oz  (Ö(ž ( (Ê**0çë(­    u-? u-kt{S (T t{S (U sÜ (ñ+(« +7t{V (œ t{V ( (“(Ó+ (æ ,6{ ( (á ,{ ( {Ÿ oE *(Œ  ,  {W **0Åí(á  ,<{Ÿ sÞ(+(+ (O (P (ˆ (©sÄ *(ã ,i(e{¥ (¦ oQ ,Q{¥ (¦ {¥ (C sà(+(+ (O (P (ˆ («sÄ *þoR *^(³3(±*(¯**o &**þ(+*.þ(p+*V(U }V }W *0Mîþ§ {W Œ¦¥oX ,*{V o {W Œ¦¥oY *(Z **þo[ *(\ *†(T,s›(\(+þ**(] **þoÅ*:(^ }%*^sŸ{%¥¿(+*(_ *"s¤ z:(Z }&*B{&þ(+*2s¨€(*:( }'*s´**(³þ*"s¶**(³þ*&s¹**(³þ*s½**(³þ*~(**(³þ*{'*>(¨}.*{.*Z(¨}/}0*{/*{0*v(¨}1}2}3*{1*{2*{3*>(¨}4*{4*:( }5*2{5{.*:( }6*2{6{/*2{6{0*:( }7*2{7{1*2{7{2*2{7{3*:( }8*2{8{4*(` *.þ(*V(a }9}:*R{9{:(+*(` *.þ(*V(a };}<*R{<{;(+*(b **þoc *:(^ }=*vsÒ{=(\¥À(+*(d *0Nï(ù  ,A{_ (a {_ (` {_ (e o ,(‘o þ(+***(á *"(’*(e *&(â*(á *"(“*:(ª }>*B{>þ(”*:(ª }?*B{?þ(”*0Çðs(+€@Ðã( ¥$€AÐä( ¥$€B)%ÐÁ(W €D(noc , (nod +(nÐÂ(W €E(ooc , (ood +(osf ¤)%ÐÃ(W €F(poc , (pod +(pÐÄ(W €G(qoc , (qod +(qsf ¤)%ÐÅ(W €H(roc , (rod +(rÐÆ(W €I(soc , (sod +(ssf ¤)%ÐÇ(W €J(toc , (tod +(tÐÈ(W €K(uoc , (uod +(usf ¤)%ÐÉ(W €L(voc , (vod +(vÐÊ(W €M(woc , (wod +(wsf ¤)%ÐË(W €N(xoc , (xod +(xÐÌ(W €O(yoc , (yod +(ysf ¤)%ÐÍ(W €P(zoc , (zod +(zÐÎ(W €Q({oc , ({od +({sf ¤)%ÐÏ(W €R(|oc , (|od +(|ÐÐ(W €S(}oc , (}od +(}sf ¤)€C(m€U(ŒÑ,+ rµps z(Ži€V(€€W (€Y 2%((£)(a ¤X X3Û(€Tsg €Y +&(m£) (ƒ(b (a oh X (mŽi2Ð(ƒ€Xsg €[ +&(m£) (…(a (b oh X (mŽi2Ð(…€ZÐä€](( ¥$€^(o €_sÖ€\*2rXps z2rXps z2rXps z0*6*–oi ,+oj ,+ok þ*î(è,1oc ,oc ,od od þo **þo **0?ñÐt(W (é-r°prips zo= ££sf *~r*0 ó(+(+ sgoÃ(+*0*~s*~t*0-ô( ¥$ o , o + si*~u*~v*~w*~x*~y*~z*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*~Œ*~*~Ž*~*~*~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*~²*~³*~´*~µ*~¶*~·*~¸*~¹*~º*~»*~¼*~½*~¾*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*~Ð*~Ñ*~Ò*~Ó*~Ô*~Õ*~Ö*~×*~Ø*0Rö(ñ  ,<{k (q (U (l (m {k (l  ( sn *(ž sn *0s÷(Qoo ,b{w (x -U{w (y { ,C{w (y {‘ (U { { -(m (l  so (p **0€ø(Roo ,o{w (x -b{w (y { ,P{w (y {‘ (ø  ,5{ { -({£ (¤ {£ (4  s9 (: **0uù(ø  ,i{£ (4 { ,W{£ (4 { { ->{£ (¤ o7 Ð…(W (é,{£ (¤ {‘ (X **0Yü(n (q ,9(q (r {s (t {s (u  (v +¶(r (v *0 !(p (w 9ÿ(w {x (y oq ŽiY Y(å {Ì YX"  Y   2!  X£"¤" X   X3ß "%ŽiYYX"    Y  2"X£"¤"X X3Þ    (Z¤"(+(z *(y (z *0 ‹@(Ü  ,R{ {a(+ Þ8t  u,$rpoà(Ç r4p(Ç sÔ zþ*(Á ,2{k (q {k (l ([([({ *(   ,2 {k (q  {k (l ([([(| *(î   ,& {m (n   {m (}    (~ *(Eoo   9=? {w (ª {« 9÷> {w (ª {« {« :¨> {w (y { 9b> {w (y { { -a{‘ {¬  ([  oY -oÅoY þ+, oÅoÅ +,*([ ( *(ç ,!{§ (¨ {§ (©  8„ÿÿÿ(è ,,{§ (¨ {§ (©  ([ (€ *(Foo 9€{w (ª {« ,m{w (ª {« {« -Q{w (y { ,>{w (y { { -"{‘ {¬  ([ (€ *(ö ,-{¡ ( {¡ (¢ (](‚ *(æ ,5{ ( { ( ([ oÅ(Y*(ô 9²{Z (\ {Z ([ {Z (^ þ,o7 (U+,o7 oƒ (U+,o7 („ +{ -(](v *(^(]oý (… *(ù 9u0{_ (` {_ (a  {_ (e (V!!,^!{† (‡ "!{† (ˆ "sm( +(!+#([ uœ$$,$%%#(‰ *rŒps z(W&&,T&{£ (¤ '&{£ (4 ""(^'o7 oŠ ('¥Ú(sq("+(#+(‹ *(oo ))9^){w (ª {« 9H){w (ª **{« {« 9)*{« ++{« {« 9+{« ,,{« {« :õ){w (y { 9ß){w (y ""{ { 9À"{ --{ { :¦,{¬  +{¬ .*{¬ //Ð\(W (p+,.Ð\(W (p++, Ð\(W (p++,H-{‘ "{‘ ,{¬  +{¬ .*{¬ /([([(ë(Œ *(ñoo 009-0{w (y { 9ñ,0{w (y 11{ { 9X,1{ 22{ { -$2{‘ 1{‘ ss(\*(òoo 33,]3{w (y { ,J3{w (y 44{ { ,.4{ 55{ { -5{‘ 4{‘ 8€ÿÿÿ(÷oo 66,j6{w (y { ,W6{w (y 77{ { ,;7{ 88{ { -$8{‘ 7{‘ su(\*(óoo 99,j9{w (y { ,W9{w (y ::{ { ,;:{ ;;{ { -$;{‘ :{‘ sw(\*(ôoo <<,j<{w (y { ,W<{w (y =={ { ,;={ >>{ { -$>{‘ ={‘ sy(\*(õoo ??,j?{w (y { ,W?{w (y @@{ { ,;@{ AA{ { -$A{‘ @{‘ s{(\*(öoo BB,jB{w (y { ,WB{w (y CC{ { ,;C{ DD{ { -$D{‘ C{‘ s}(\*(oo EE,FE{w (y { ,3E{w (y FF{ { -F{‘ ([( *(øoo GG,jG{w (y { ,WG{w (y HH{ { ,;H{ II{ { -$I{‘ H{‘ s(\*(ùoo JJ,jJ{w (y { ,WJ{w (y KK{ { ,;K{ LL{ { -$L{‘ K{‘ s(\*(úoo MM,jM{w (y { ,WM{w (y NN{ { ,;N{ OO{ { -$O{‘ N{‘ sƒ(\*(ûoo PP,jP{w (y { ,WP{w (y QQ{ { ,;Q{ RR{ { -$R{‘ Q{‘ s…(\*(üoo SS,jS{w (y { ,WS{w (y TT{ { ,;T{ UU{ { -$U{‘ T{‘ s‡(\*(ýoo VV,jV{w (y { ,WV{w (y WW{ { ,;W{ XX{ { -$X{‘ W{‘ s‰(\*(oo YY,jY{w (y { ,WY{w (y ZZ{ { ,;Z{ [[{ { -$[{‘ Z{‘ s‹(\*(oo \\,j\{w (y { ,W\{w (y ]]{ { ,;]{ ^^{ { -$^{‘ ]{‘ s(\*(oo __,j_{w (y { ,W_{w (y ``{ { ,;`{ aa{ { -$a{‘ `{‘ s(\*(oo bb,jb{w (y { ,Wb{w (y cc{ { ,;c{ dd{ { -$d{‘ c{‘ s‘(\*(oo ee,je{w (y { ,We{w (y ff{ { ,;f{ gg{ { -$g{‘ f{‘ s“(\*( oo hh,jh{w (y { ,Wh{w (y ii{ { ,;i{ jj{ { -$j{‘ i{‘ s•(\*(þoo kk,jk{w (y { ,Wk{w (y ll{ { ,;l{ mm{ { -$m{‘ l{‘ s—(\*(ÿoo nn,jn{w (y { ,Wn{w (y oo{ { ,;o{ pp{ { -$p{‘ o{‘ s™(\*(oo qq,jq{w (y { ,Wq{w (y rr{ { ,;r{ ss{ { -$s{‘ r{‘ s›(\*(oo tt,jt{w (y { ,Wt{w (y uu{ { ,;u{ vv{ { -$v{‘ u{‘ s(\*(oo ww,jw{w (y { ,Ww{w (y xx{ { ,;x{ yy{ { -$y{‘ x{‘ sŸ(\*(oo zz,jz{w (y { ,Wz{w (y {{{ { ,;{{ ||{ { -$|{‘ {{‘ s¡(\*( oo }}9D}{w (y { 9.}{w (y ~~{‘ (· 9 ~{ { 9ú~{ €€{‘ (· 9Ü€{ { 9Ë€{ ‚‚{‘ (· ƒƒ9­‚{ { 9œ‚{ „„{‘ (® ……9~„{ { ,p„{ ††{‘ (´ ‡‡,U†{ { -G‡{Ž ˆ{Ì {Ì ‰…{„ Šƒ{Ì ‹‰‹Šˆs Œ7( *(oo ŒŒ,FŒ{w (y { ,3Œ{w (y { { -{‘ ([(‘ *(oo ŽŽ,nŽ{w (y { ,[Ž{w (y { { ,?{ { { -({‘ {‘ ([([(’ *(oo ‘‘,n‘{w (y { ,[‘{w (y ’’{ { ,?’{ ““{ { -(“{‘ ’{‘ ([([(“ *(oo ””,n”{w (y { ,[”{w (y ••{ { ,?•{ ––{ { -(–{‘ •{‘ ([([(” *(oo ——,n—{w (y { ,[—{w (y ˜˜{ { ,?˜{ ™™{ { -(™{‘ ˜{‘ ([([(• *( oo šš,nš{w (y { ,[š{w (y ››{ { ,?›{ œœ{ { -(œ{‘ ›{‘ ([([(– *(!oo ,n{w (y { ,[{w (y žž{ { ,?ž{ ŸŸ{ { -(Ÿ{‘ ž{‘ ([([(— *("oo   ,n {w (y { ,[ {w (y ¡¡{ { ,?¡{ ¢¢{ { -(¢{‘ ¡{‘ ([([(˜ *(#oo ££,n£{w (y { ,[£{w (y ¤¤{ { ,?¤{ ¥¥{ { -(¥{‘ ¤{‘ ([([(™ *($oo ¦¦,n¦{w (y { ,[¦{w (y §§{ { ,?§{ ¨¨{ { -(¨{‘ §{‘ ([([(š *(%oo ©©,n©{w (y { ,[©{w (y ªª{ { ,?ª{ ««{ { -(«{‘ ª{‘ ([([(› *(&oo ¬¬,F¬{w (y { ,3¬{w (y ­­{ { -­{‘ ([( *('oo ®®,F®{w (y { ,3®{w (y ¯¯{ { -¯{‘ ([(œ *((oo °°,n°{w (y { ,[°{w (y ±±{ { ,?±{ ²²{ { -(²{‘ ±{‘ ([([( *()oo ³³,n³{w (y { ,[³{w (y ´´{ { ,?´{ µµ{ { -(µ{‘ ´{‘ ([([(ž *(*oo ¶¶,n¶{w (y { ,[¶{w (y ··{ { ,?·{ ¸¸{ { -(¸{‘ ·{‘ ([([(Ÿ *( oo ¹¹,j¹{w (y { ,W¹{w (y ºº{ { ,;º{ »»{ { -$»{‘ º{‘ s£(\*( oo ¼¼,j¼{w (y { ,W¼{w (y ½½{ { ,;½{ ¾¾{ { -$¾{‘ ½{‘ s¥(\*( oo ¿¿,j¿{w (y { ,W¿{w (y ÀÀ{ { ,;À{ ÁÁ{ { -$Á{‘ À{‘ s§(\*(oo ÂÂ,jÂ{w (y { ,WÂ{w (y ÃÃ{ { ,;Ã{ ÄÄ{ { -$Ä{‘ Ã{‘ s©(\*(oo ÅÅ,jÅ{w (y { ,WÅ{w (y ÆÆ{ { ,;Æ{ ÇÇ{ { -$Ç{‘ Æ{‘ s«(\*(oo ÈÈ,jÈ{w (y { ,WÈ{w (y ÉÉ{ { ,;É{ ÊÊ{ { -$Ê{‘ É{‘ s­(\*(oo ËË,jË{w (y { ,WË{w (y ÌÌ{ { ,;Ì{ ÍÍ{ { -$Í{‘ Ì{‘ s¯(\*(oo ÎÎ,jÎ{w (y { ,WÎ{w (y ÏÏ{ { ,;Ï{ ÐÐ{ { -$Ð{‘ Ï{‘ s±(\*(oo ÑÑ,jÑ{w (y { ,WÑ{w (y ÒÒ{ { ,;Ò{ ÓÓ{ { -$Ó{‘ Ò{‘ s³(\*(oo ÔÔ,jÔ{w (y { ,WÔ{w (y ÕÕ{ { ,;Õ{ ÖÖ{ { -$Ö{‘ Õ{‘ sµ(\*(oo ××,j×{w (y { ,W×{w (y ØØ{ { ,;Ø{ ÙÙ{ { -$Ù{‘ Ø{‘ s·(\*(oo ÚÚ,jÚ{w (y { ,WÚ{w (y ÛÛ{ { ,;Û{ ÜÜ{ { -$Ü{‘ Û{‘ s¹(\*(oo ÝÝ,jÝ{w (y { ,WÝ{w (y ÞÞ{ { ,;Þ{ ßß{ { -$ß{‘ Þ{‘ s»(\*(oo àà,jà{w (y { ,Wà{w (y áá{ { ,;á{ ââ{ { -$â{‘ á{‘ s½(\*(oo ãã,jã{w (y { ,Wã{w (y ää{ { ,;ä{ åå{ { -$å{‘ ä{‘ s¿(\*(8oo ææ,Pæ{w (y { ,=æ{w (y çç{ { -!ç{‘ ([ÐÜ(W (  *(9oo èè,Pè{w (y { ,=è{w (y éé{ { -!é{‘ ([ÐÝ(W (  *(:oo êê,Pê{w (y { ,=ê{w (y ëë{ { -!ë{‘ ([ÐÞ(W (  *(;oo ìì,Pì{w (y { ,=ì{w (y íí{ { -!í{‘ ([Ðß(W (  *(<oo îî,Pî{w (y { ,=î{w (y ïï{ { -!ï{‘ ([Ðà(W (  *(=oo ðð,Pð{w (y { ,=ð{w (y ññ{ { -!ñ{‘ ([Ðá(W (  *(>oo òò,Pò{w (y { ,=ò{w (y óó{ { -!ó{‘ ([Ð…(W (  *(?oo ôô,Pô{w (y { ,=ô{w (y õõ{ { -!õ{‘ ([Ð…(W (  *(@oo öö,Pö{w (y { ,=ö{w (y ÷÷{ { -!÷{‘ ([Ðâ(W (  *(Aoo øø,Pø{w (y { ,=ø{w (y ùù{ { -!ù{‘ ([Ðã(W (  *(Boo úú,Pú{w (y { ,=ú{w (y ûû{ { -!û{‘ ([Ðä(W (  *(Coo üü,Pü{w (y { ,=ü{w (y ýý{ { -!ý{‘ ([Ðå(W (  *(Doo þþ,Pþ{w (y { ,=þ{w (y ÿÿ{ { -!ÿ{‘ ([Ðæ(W (  *(+oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([У(W (  *(,oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð7(W (  *(-oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð’(W (  *(.oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Г(W (  *(/oo þþ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ф(W (  *(0oo þ þ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ð¥(W (  *(1oo þ þ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ðb(W (  *(2oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ðb(W (  *(3oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Б(W (  *(4oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ц(W (  *(5oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ч(W (  *(6oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ш(W (  *(7oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Щ(W (  *(Goo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([У(W (¡ *(Hoo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ф(W (¡ *(Ioo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð¥(W (¡ *(Joo þ þ ,Zþ {w (y { ,Eþ {w (y þ!þ !{ { -#þ !{‘ ([Ðb(W (¡ *(Koo þ"þ ",Zþ "{w (y { ,Eþ "{w (y þ#þ #{ { -#þ #{‘ ([Б(W (¡ *(Loo þ$þ $,Zþ ${w (y { ,Eþ ${w (y þ%þ %{ { -#þ %{‘ ([Ц(W (¡ *(Moo þ&þ &,Zþ &{w (y { ,Eþ &{w (y þ'þ '{ { -#þ '{‘ ([Ч(W (¡ *(Noo þ(þ (,Zþ ({w (y { ,Eþ ({w (y þ)þ ){ { -#þ ){‘ ([Ш(W (¡ *(Ooo þ*þ *,Zþ *{w (y { ,Eþ *{w (y þ+þ +{ { -#þ +{‘ ([Щ(W (¡ *(Soo þ,þ ,9ýþ ,{w (ª {« 9åþ ,{w (ª þ-þ -{« {« 9Àþ -{« þ.þ .{« {« 9 þ .{« þ/þ /{« {« :€þ ,{w (y { ,kþ ,{w (y þ0þ 0{ { ,Iþ 0{ þ1þ 1{ { -,þ 1{‘ þ 0{‘ ([([(¢ *(Poo þ2þ 29…þ 2{w (ª {« ,pþ 2{w (ª þ3þ 3{« {« -Nþ 2{w (y { ,9þ 2{w (y þ4þ 4{ { -þ 4{‘ 8íÌÿÿ(^(] (… *(òoo 339=Ôÿÿ3{w (y { 9'Ôÿÿ3{w (y 22{ { 9Ôÿÿ2{ 44{ { :îÓÿÿ4{‘ 2{‘ 8WÓÿÿ(òoo 339ÃÓÿÿ3{w (y { 9­Óÿÿ3{w (y 11{ { 9ŽÓÿÿ1{ 22{ { :tÓÿÿ2{‘ 1{‘ 8ÝÒÿÿ(òoo 339IÓÿÿ3{w (y { 93Óÿÿ3{w (y 11{ { 9Óÿÿ1{ 22{ { :úÒÿÿ2{‘ 1{‘ 8cÒÿÿ(Ý þ5þ 59Ýþ 5{k (l (Ý þ6þ 69½þ 6{k (l (Ý þ7þ 79þ 7{k (l (Ý þ8þ 89}þ 8{k (l þ 5{k (q þ 6{k (q þ9þ 7{k (q þ:þ 8{k (q þ;oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>/(êþ?þ ?(a þ@þ ?(b þAþ @(êþBþ B(a þCþ B(b þD.þ >(XþEsÁþ Eo£ ($+%þ A¤%þ D¤%þ C¤oz  þ ;þ :þ 9(ž ( ( ( ( ( (^ (… *(Ý þFþ F9pþ F{k (l (Ý þGþ G9Pþ G{k (l (Ý þHþ H90þ H{k (l þ F{k (q þ G{k (q þ9þ H{k (q þ:oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>/(êþ?þ ?(a þ@þ ?(b þA.þ >(XþCsÃþ Co£ ($+%þ A¤%þ @¤oz  þ :þ 9(ž ( ( ( ( (^ (… *(Ý þIþ I9þ I{k (l (Ý þJþ J9ãþ J{k (l þ I{k (q þ J{k (q þ9oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>.þ >(Xþ@sÅþ @o£ ($+%/¤oz  þ 9(ž ( ( ( (^ (… *(Ý þKþ K,bþ K{k (l þ K{k (q ([ ([þLoÅrGpo   "%þ L¤"(… *(ã þMþ M,@þ M{¥ (¦  þ M{¥ (C  0(D (h''(^(z *(é þNþ N,0þ N{¥ (¦  þ N{¥ (C  (^(¤ *(â ,{x   (¥ *(ä þOþ O,Iþ O{Ÿ (  þPþ O{Ÿ (¦ þ P0(D (s (^ (… *(å þQþ Q9Âþ Q{§ (¨ þPþ Q{§ (© þ PoI0(D (vþR([ þ Ru,þSþ S(v +;þ Ru$  ,! þTþ T"%¤"(… + ròps¤ zþLþ Lþ PoNŒb( (ª *(ø &&,Z&{£ (¤ '&{£ (4 (X,{W ([oÅ(  *'(^(z *(þ þUþ U9ƒþ U{« (¬ þVþ U{« (­  þ U{« (® sÇþ V(%+þWsËþ Vþ W{a(&+sdþXþ X([  þ W¥ë(¯ *(á þYþ Y,7þ Y{Ÿ sÍ('+(ë+(Y (^ (Z*(à þZþ Z,Rþ Z{‡ (‰ þ Z{‡ (Š þ Z{‡ (ˆ þ9([([þ 9([(° *(ß 9Ÿ{W oÄþ[(T%oŤoz "%( ¤"%а(W þ [sÑ((+()+(¤ ¤"%Ð(W þ [sÕ((+()+(¤ ¤"(± *(ü þ\þ \9Úþ \{ÿ ( þ \{ÿ ( þ \{ÿ ( (_þ]þ ] {ao² sdþXþ X([ ([þL%oâ¤%oŤ(   %%þ ]¤%(³ þ^þ ^ rGp6op "%þ L¤"(… *(Þ þ_þ _9éþ _{› (œ þ _{› ( (_þ]þ ] {ao² sdþX%oâ¤%oŤþ`þ X([ Ðí(W ..oc , .od +.þ `oX   %%þ ]¤%(³ þLÐv(W rpþ `"%þ L¤"(´ *r.psµ (*+o¶ s z(ç 99Âÿÿ{§ (¨ {§ (©  8œÁÿÿ(ç 9 Âÿÿ{§ (¨ {§ (©  8lÁÿÿ(ç 9ÙÁÿÿ{§ (¨ {§ (©  8<Áÿÿ(ç 9©Áÿÿ{§ (¨ {§ (©  8 Áÿÿ"80±([ ([ ,?Ð…(W oc , od + %o· ¤oX (  + ,?Ð…(W oc , od + %o· ¤oX (  +s¸ þo¹ *0/-* {W ([ , {x ( **Ns×(++(,+*Noâoà(º *J(-+sd([*0 (-+sd([¥ñ*0Ì(î  ,{m (n *oÅ %Ð(W ¤%¤( rópÐ(W sß( ( (Û (-+sd ([¥«o» %Œ¤oj Þ"t u”, o@ zþ*Ѝ"{a*:( }a*:(¼ }b*N{boâ(é*:(  }c*fse{co½ (.+*r(¾ }d}e}f*0¦ï(ù  9—{_ (a {do‰ o‰ 38{e, o ,{fo (+++{d(++,<{_ (` {_ (a {_ (e o¿ ( + sÀ (Á **:( }g*0r(õ  ,]{0 (à {0 (Ä {0 (Å (ž  (:oÆ þ, rýps z{g([(Ç *r€ps zV(È }h}i*v{hsk{i¥¿(/+*(É **:(Ê }j*^so{j¥À(0+*(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (– *(Ë *0(Ì (Í (– *(Ë *0(Ì (Í (– *(Ó *†oT rÜp(” , oq Žiþ**(Ó *†oT rÜp(” , oq Žiþ**(Ó *†oT rÜp(” , oq Žiþ**(Ô *"(_*V(Õ }k}l*R{k{lo² *(Ö *0 ^ sÉ*(] **þoÅ*(× *"( *:(Ø }m*JsÏ{m(1+*:(× }n*Š{n{aoÙ Ð(W (  *V(Ø }o}p*b{osÓ{p(1+*:(Ú }q*:{q([*08(Û ,$(Ü ,¥¦+ r˜ psè zsÝ *þã*08(Û ,$(Ü ,¥¤+ r˜ psè zsÞ *þà*08(Û ,$(Ü ,¥¥+ r˜ psè zsß *þá*08(Û ,$(Ü ,¥§+ r˜ psè zsà *þä*08(Û ,$(Ü ,¥b+ r˜ psè zsá *þ…*0-!(â ,(ã Œb¥0sä *þó*08(Û ,$(Ü ,¥b+ r˜ psè zsá *þ…*08#(Û ,$(Ü ,¥¨+ r˜ psè zså *þå*08%(Û ,$(Ü ,¥‘+ r˜ psè zsæ *þâ*08'(Û ,$(Ü ,¥©+ r˜ psè zsç *þæ*08)(Û ,$(Ü ,¥“+ r˜ psè zsè *þß*08+(Û ,$(Ü ,¥’+ r˜ psè zsé *þÞ*08-(Û ,$(Ü ,¥®+ r˜ psè zsê *þô*08/(Û ,$(Ü ,¥¯+ r˜ psè zsë *þõ*081(Û ,$(Ü ,¥7+ r˜ psè zsì *þÝ*083(Û ,$(Ü ,¥£+ r˜ psè zsí *þÜ*04(Û ,(Ü (2+**04(Û ,(Ü (3+**04(Û ,(Ü (4+**04(Û ,(Ü (5+**04(Û ,(Ü þ(6+**2(7+þ*04(Û ,(Ü (2+**04(Û ,(Ü (3+**04(Û ,(Ü (4+**04(Û ,(Ü (5+**04(Û ,(Ü þ(6+**2(8+þ*025(Û , (Û +,(Ü (Ü (2+**025(Û , (Û +,(Ü (Ü (3+**025(Û , (Û +,(Ü (Ü (4+**025(Û , (Û +,(Ü (Ü (5+**0P5(Û - (Û þ+,*(Û , (Û +,(Ü (Ü þ(6+**2(9+þ*0)6(Û ,(Ü (:+s‘ *þ«*0)7(î ,(ï (:+s‘ *þ«*0?8(Û , (î +,(Ü (ï (:+s‘ *þ«*086(Û ,$(Ü ,¥2+ ròpsè zs‘ *þ«*087(î ,$(ï ,¥2+ ròpsè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ ròpsè zs‘ *þ«*0)6(Û ,(Ü (;+s‘ *þ«*0)7(î ,(ï (;+s‘ *þ«*0?8(Û , (î +,(Ü (ï (;+s‘ *þ«*086(Û ,$(Ü ,¥2+ r^psè zs‘ *þ«*087(î ,$(ï ,¥2+ r^psè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ r^psè zs‘ *þ«*086(Û ,$(Ü ,¥2+ rÂpsè zs‘ *þ«*087(î ,$(ï ,¥2+ rÂpsè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ rÂpsè zs‘ *þ«*08Ðð ( ¥$€rÐ…(W €t(ïoc , (ïod +(ïo: £p€sÐ,(ð€uÐ!(ð€vÐ(ð€wÐ(ð€xÐ(ð€yÐ (ð€zÐ"(ð€{Ðí(ð€|Ðî(ð€}Ðê(ð€~Ðé(ð€Ðì(ð€€Ðë(ð€Ðù(ð€‚Ðú(ð€ƒÐö(ð€„Ðõ(ð€…Ðø(ð€†Ð÷(ð€‡Ðó(ð€ˆÐô(ð€‰Ðð(ð€ŠÐï(ð€‹Ðò(ð€ŒÐñ(ð€ÐÆ(ð€ŽÐû(ð€Ðý(ð€Ðü(ð€‘Ðþ(ð€’Ð (ð€“Ðÿ(ð€”Ð (ð€•Ð (ð€–Ð (ð€—Ð (ð€˜Ð (ð€™Ð (ð€šÐ (ð€›Ð (ð€œÐ (ð€Ð(ð€žÐ<(ð€ŸÐ=(ð€ Ð@(ð€¡Ð>(ð€¢Ð?(ð€£ÐA(ð€¤ÐC(ð€¥ÐD(ð€¦ÐE(ð€§ÐF(ð€¨ÐG(ð€©ÐH(ð€ªÐà(ð€«ÐÞ(ð€¬Ðß(ð€­Ðá(ð€®Ðb(ð€¯Ð^(ð€°Ð](ð€±Ð\(ð€²ÐN(ð€³ÐP(ð€´ÐR(ð€µÐS(ð€¶Ð[(ð€·ÐM(ð€¸ÐO(ð€¹ÐQ(ð€ºÐZ(ð€»Ðè(ð€¼Ðç(ð€½Ðä(ð€¾Ðã(ð€¿ÐÚ(ð€ÀÐÛ(ð€ÁÐß(ð€ÂÐÝ(ð€ÃÐá(ð€ÄÐÙ(ð€ÅÐÜ(ð€ÆÐà(ð€ÇÐâ(ð€Èо(ð€ÉÐÀ(ð€ÊÐå(ð€ËÐã(ð€ÌÐæ(ð€ÍÐè(ð€ÎÐë(ð€ÏÐâ(ð€ÐÐä(ð€ÑÐç(ð€ÒÐê(ð€ÓÐå(ð€ÔÐã(ð€ÕÐä(ð€ÖÐÉ(ð€×Ðì( ¥$€Ø*&sñ *0, {# þoò **&só *:sô (<+*j(=+sõ (=+sö **s÷ *0 9(>+ *.þ(>+*"sø *&sù *~sú (?+sû (@+sü *Fo &}ý *R{ý - þoþ **n{ý -}ý þoÿ **j{ý -}ý þo **b} } o &*0f={ o ( Þt  ( Þ u,t { { þo  *t{ {  þo  *B{ þo  *>{ þo  *b}  } o &*‚{ {  s ¥þo *b} } o &*0fA{ o ( Þt  ( Þ u ,t  { { þo  *t { { þ(A+*B{ þo  *>{ þo  *b} } o &*‚{ { s ¥þo *:( } *b{ o  ,( **:( } *F{ o  þ*~}  }! }" o &*0†B{" {# {  (B+( Þt  ( Þ u,t{! { þo  *t{  {" (% {! þo  * "B{! þo  *>{! þo  *~}& }' }( o &*0-I{' s) {( {& s* ¥þo *b}+ }, o &*0AC{, {- , {à {+ s. o/ +{, ( (0 *B{+ þo1 *>{+ þo2 *F}3 o &*0"Es4 {3 s5 ¥oþo *ž}7 }8 }9 }: o &*z{8 {; -{7 þon **ª{8 {; -{8 (< {7 þo **0U{8 {; -F{9 (< {9 {; ,{: {; +,{8 (< {7 þo ***ž}= }> }? }@ o &*z{> {; -{= þon **ª{> {; -{> (< {= þo **0U{> {; -F{@ (< {? {; ,{@ {; +,{> (< {= þo ***b}ö}÷o &*j{öoé {÷þoé *b}A }B o &*0 JGsC sC sC {A sD o {B sE o  sA *:(F }G *0+J{G oH u!,t! {I (J **:(F }K *0+M{K oL u%,t% {M (J **0PsN sO (>+ oP *0RsQ sR (>+ oS *00SsQ sQ sT (>+ oS oS sU *0PsN sV (>+ oP *0&VsW sQ sX (C+ oS *0 9(>+ *0%YsY sZ s[ (C+ o\ *0,ZsN s] (C+ s^ (C+ oP *00\sN s_ s` (>+ oP oa sb *V(c }d }e *n{e {d o of *V(c }g }h *‚{g o  ,{h oi **r(c }j }k }l *¶{j o  ,{k oi *{l oi *V(c }m }n *0)^{m o , {n {o of **r(c }p }q }r *06î{q {# {p (B+ {q (% {r of *V(c }s }t *0CC{t {- , {à {s s. ou +{t ( (0 *:(c }v *B{v oi *:(c }w *B{w oi *r(c }x }y }z *0L`{x oH uB,tB {z {{ o| *t! {y {I of *Šs} s~ s ( (D+*>s€ (E+*0?b/ sw ( *s‚ (:sy s{ s} ( (’+oƒ *V(c }„ }… *0!c{„ {… oH († o‡ *:(ˆ }‰ *0c{‰ (Š o‹ *:(Œ } *0c{ (Ž o‹ *( *"( *(‘ *"(’ *(“ *"(F+*r(” }• }– }— *0G{— {• s˜ (G+{— {– s™ (H+{— oš s› (I+*V(œ } }ž *0$esŸ (C { {ž s  (J+*(¡ *(*:(¢ }*0c{o£ *(ˆ **(Œ **:s‹ (K+*0gs¡ (L+ s© (M+*:(¤ }*0@iu³ ,4o¥ 3{{; +, o¦ s§ (¨ (N+*z:(© }*0j(ª (« {þo¬ *:(­ }*B{þo® *V(¢ }}*j{(< {o¯ *V(° }}*Î{sƒ {s… {{s‡ (± (O+*:(° } *0&ksC s { s‰ (K+(P+*:(² }!*>{!o³ *:(² }"*>{"o´ *:}#( *B{#(Q+&*(¶ *Ns‘ þ’ s· *Ò}$}%}&}'}(})( *0œ5{(o¸ (+9„{$s {$s s“ (R+{)o¹ oº o» ,{'s¼ o½ &*o¾ (S+þ,{&o¾ o¿ &*{%oÀ oÁ &**Ò( }*}+},}-}.}/*0 6{*{+{,{-{.{/s• þ– s· *:(² }0*>{0o³ *:(² }1*>{1o´ *:}2( *B{2(Q+&*(¶ *Ns þž s· *V(à }3}4*0 ‹r(Ä (Å (Æ s {3 s— (T+t#}/o¹ {3s™ {3s› sŸ (R+oÇ {3{4 oÈ *:(¢ }5*:{5oÉ *:(Ê }6*"{6*:(Ê }7*N{7s¥ (U+*V(Ë }8}9*Š{8s£ (K{9s§ (V+*09s, {Ì + Ži , {Ì + s± s³ (W+*>s½ (X+*09s, {Ì + Ži , {Ì + s¿ sÁ (Y+*&(;*0 9(>+ *BsÌ þoÍ *:(Î }:*0 9u(Ï (Ð (Ñ (Ò (Ó {: þoÔ *:(Õ };*B{;þoÖ *V(× }<}=*V{={Ø {<þ*:(Ù }>*0N{>{>{Ø X(Ú -,,¥+(r(p(• o– sÛ z&(D *(D *’(Ü }?}@}A}B*0 J{?{A{B{Ø (å {@{B{Ø Y(å (« {Bs· (Z+*:(Ý }C*6{C([+*V(Ý }D}E*0 Pw{E(\+ sÞ {Esµ {D{Es¹ (ž+(F s» (X+(]+*:(Î }F*0 9u(Ï (Ð (Ñ (Ò (Ó {F þoß *:(à }G*>{Goá *F}â o &*>{â o½ &* * *0FyŒ1sã sä så sæ {ç o¨  (‘+oè ¥*0Qzub ,& {é , rTpsê zoë oì *(rlp(• o– rŠps z0:{ub , {ç oª *(r’p(• o– rŠps z:(c }í *V{í (î oï *:(ˆ }ð *V{ð (ñ oï *:(Œ }ò *V{ò (ó oï *0 ‚, sù {io¨ (ô sõ +sõ (ö (÷ sø sù sú sû (^+oü ,@{ý  -+"   {þ {io« {ho«  (_+Þo þ, oÿ {hoª +oü  þ, oÿ {io« {ho« +s zu  ,  oé &Ü&Ü*BÁ0csÛ sÝ sß (`+ *0cs sã så (a+ *0„ }Ro -( **0_‰, { + s sç  s þ s (  o   s  (ž+(Ñ *:(  }  *R{  (î oã *:( } *R{ (ñ oã *:( } *R{ (ó oã *( *(*( *z( *(*:(  } *R{ o½ &(*:( }P*R{Po¿ &(*:( }Q*R{Qo½ &(*Fo &}R*6þ{Rþ*&}R*V} } ( *v{ þ{R- { o **’( } } } } *0-Š{ { { (b+{ o (D *’( } } }  }! *0-Š{ {  {! (b+{ o" (D *²(Ü }# }$ }% }& }' *0 *{# {$ {% {& {' s( (c+*²(Ü }) }* }+ }, }- *0 M{* {+ {, {- s. {) {* {+ {, {- s/ (ž+(d+*~á*6s (e+*2s (e+*2s (e+*V, o *o *0IŽ(0 ,={1 {v s2 {ss s {vss3 **6s4 (f+*6s5 (¿ *0:{6 , r¶psê z{7 ,*{8 þs9 }7 *0*‘{6 - }6 {7 ,o: }7 ***0J’o; ,(< *{6 ,(< *(= }8 {7 , o> +{? (g+*¦{8 -s@ {? (A }? *{8 *:( }g*V{g{B þoC *:(¡ }h*0 “{D {v{hs o *:( }i*V{i{B þoC *(¡ *0“{D {vs o*:( }j*V{j{B þoC *(¡ *0“{D {vs o *V( }E }F *j{E {¸ {F þoG *r(  }H }I }J *~{J {I {H sK o *V( }p}q*j{p{t{qþoL *r( }r}s}t*~{t{r{ss o *V( }u}v*j{u{u{vþoM *r( }w}x}y*~{y{w{xs o *:(N }O *V{O (h+þoP *:(N }Q *V{Q (h+þoP *Fo &}|*J||(R þ*Vo &s }}*0$•{} ||(R þ, oð &**0Jo &}S (0 }T {T ,(U +}V {S {¹ {v}W *0“—sX (0 {T ,E{T (Y ,{V (U oZ +, {W o*{T {W (ø *,'{T (Y ,{V (U oZ +,Å+¶{W o*j{T {W s[ (ø *V( }\ }] *~{\ {S {¸ {] þoG *V( }^ }_ *~{^ {S {¸ {_ þoG *Öo &}` (a }b }c }d s }e *0-˜{e  (… (i+ Þ, († &Ü&Ü* 00™{e  (… (j+ Þ, († &Ü&Ü&* 0K{` - rÌps¤ z{à *0œ{e  (… (k+ Þ, († &Ü&Ü {f ,C {f {f - {g , oh *oi *sj (l+(*(* .{` þ*6sk (l *0B{` -5om {` -", {Ì +  on ,{` ****&oo *:(p }q *0c{q oi *:(N }r *0tž{r {` -9{r {e  (… {r (m+ Þ, († &Ü&Ü + {r {` -(* {¸ {à þoG *5~Þ*0=¡ u‘- u’-t“{s *t‘ {t zt’ {u z0¢, {ý (_+*s z~ß*0 £s  sv o*0 £s  sw o *0R¤{1 |s(x ,{1 {us¼ þoM *oy Þt  {1 {toL Þ*+ 66sz (¿ *6s{ (¿ *6s| (¿ *:s} (~ *:s (~ *:s€ (¿ *:s (¿ *:s‚ (¿ *2s— (ƒ *~à*Rs„ (n+(o+*zo… ,s› (p+*(D *NoŒ s† (q+*:s‡ (r+*( *sˆ **usþ*s‰ **uqþ*sŠ **urþ*0¥ ur,+ uq,+*:(‹ }è *{è *:(‹ }é *{é *:(‹ }ê *{ê *:( }Œ *2{Œ {è *:( } *2{ {é *:( }Ž *2{Ž {ê *( *0§(s+ ( ( o *Ò( }‘ }’ }“ }” }• }– *0 <{• {» {’ {‘ {“ {” {– ss— þoP *Ò( }˜ }™ }š }› }œ } *0 <{œ {» {™ {˜ {š {› { ss— þoP *:(N }ž *B{ž þ(t+*:(N }Ÿ *0‚«{Ÿ uq-) ur-F{Ÿ ts {¸ {è þoG *{Ÿ tq {¹ {t{é þoL *{Ÿ tr {¹ {u{ê þoM *V( }  }¡ *V{¡ {  þoG *:(N }¢ *0u­{¹ |s(x ,{¹ {us¼ þoM *{v {¸ oo,o{¢ s£ o(*{¢ þoG *V(  }¤ }¥ *0t°{¥ {¦ {t   {¤ o§  Þ!t u ,   Þþ &, þoL *{¨ {¥ þo© *'!V( }ª }« *j{ª {» {« þoP *V(N }¬ }­ *0‰²{¹ |s(x ,{¹ {us¼ þoM *{­ s® {¹ s¯ {¦ {vo o,{¬ s° o(*{¬ {¨ þo© *V( }­}®*V{­{®þoL *V( }± }² *j{² {» {± þoP *V(N }³ }´ *0ö´{¹ |s(x ,{¹ {us¼ þoM *{¹ {v {¹ {t   {³ {´ oµ Þ"t u ,  Þþ& ,2oo,osq o(*þoL *oo,os¶ o(*{» þoP *G^"V( }³}´*V{³{´þoL *V( }· }¸ *j{· {¸ {¸ þoG *r(  }¹ }º }» *0Öµ{º {¹ {t   {¹ oð  Þ!t u ,   Þþ &,<{» oo,{» osw o(*þoL *{» oo,#{» o{º s¼ o(*{º {¸ þoG *'!V( }º}»*V{º{»þoL *V( }½ }¾ *~{½ {¹ {t{¾ þoL *r( }¿ }À }Á *0Ûµ{À {¹ {t   {¿ oð  Þ!t u ,   Þþ &,<{Á oo,{Á os} o(*þoL *{Á oo,#{Á o{À s o(*{À {¹ {tþoL *'!V( }à }Ä *~{à {¹ {u{Ä þoM *V( }Å }Æ *~{Å {¹ {u{Æ þoM *r( }Ç }È }É *0Ö¶  {Ç oð  Þt  u ,   Þþ&,N{É oo,#{É o{È sÊ o(*{È {¹ {uþoM *{É oo,#{É o{È sË o(*{È {¹ {uþoM *V(N }Ì }Í *0 —¸{¹ |s(x ,{¹ {us¼ þoM *{¹ {v {Ì sÎ {Ì sÏ {Ì sÐ {Í {» {¹ {s {vss— þoP *V( }Ñ }Ò *0"¹{Ñ (u+ {» {Ò þoP *V(N }Ó }Ô *0 uº{¹ |s(x ,{¹ {us¼ þoM *{Ó sÕ {Ô {» {¸ {¹ {s{u{vss— þoP *V( }Î}Ï*j{Î{u{ÏþoM *V( }Ð}Ñ*j{Ð{u{ÑþoM *V( }Ò}Ó*0Æ»{Ó{v   {Òo½  Þ!t u ,   Þþ &,?oo,o{Ós o(*{Ó{uþoM *oo,o{Ós‘ o(*{Ó{uþoM *"!V(N }Ö }× *0 K¼{¹ {Ö s“  {× {» {¸ {s{t{vss— þoP *(Ø *0“{Ù {Ú {sþoÛ *:(¢ }Ü *0{Ü þ¦oé *V(Ü }×}Ø*N{×{Ø(F *:(× }Ý *>{Ý þoê *V(Ü }Þ }ß *j{Þ {ß oí þoà *:(á }â *~sã {â sä (ž+(F *:(å }æ *"{æ *01¾oC ( {k , {ç }k+Ð*>sè *0sÀ-h{é ,O {ê uÏ, {ê tÏ{ë sÑ o*{ê tÐ{ì  sÓ o*sí o*(*â{Ø Y(Ú {Ø -{io« {ho« +{Ø *0Oä0 (… (¨ Þ, († &Ü&Ü (v+*10[{Ø Y(Ú {é -(î (ï +{Ø -{io« {ho« + {hoª {Ø *0Gà (… (ª Þ, († &Ü&Ü (v+*)04Æ," {ð oð Þ t   Þ&*sñ þo *  "sò *0BÆ," {ð oð Þ t   Þ&*oÞ oó sô þo *  0c{vsõ o *00È {ö {÷ -{ø {vsù (ú }û **0_Ë{ö oü {û ,0 {ý (þ {ý (ÿ }û  sc o *{ , o> **Fs (w+*>s (w+*>s (¤+*>s (†+*îs§ s €Þs] þ^ s² €ß(x+€às€á*:}ã( *0%Ì(y+ {ã{ (z+o(*:}ä( *0%Ì(y+ {ä{ (z+o(*:}å( *0%Ì(y+ {å{ (z+o(*V( } } *V{ { þoG *V( }  }  *V{  {  þoG *V( }  }  *V{  {  þoG *Ò(c }  } } } } } *0ÀÍ{ ||(R ,(röp(• o– sÔ z(U { oZ ,{ {; +,{ { s (­ ( *~m,&(0 {  {v{ s (ø  *{  {v{ s o *:(N } *0 Ï{¹ {¹ |s(x ,{¹ {us¼ þoM *sC s (U s {  {¸ ({+ {t(|+ {u(}+s o ÞJt ||(R ,(röp(• o– sÔ z{toL Þ&(< {   ,   {ç þoC *(*MH•J:(  } *V{ ( þo *:( } *V{ (  þo *:(! }" *0 cÑ{# {s {v {$ s% {$ s& {u{" {» ss— þoP *V(' }( }) *f{( {) (~+(+*V(* }+ }, *v(C {+ {, s- (€+*V( }ú}û*j{ú{u{ûþoM *V( }ü}ý*j{ü{t{ýþoL *V( }. }/ *j{. {0 {/ þo1 *0D(  }2 }3 }4 }5 }6 }7 }8 }9 *0 8{3 {2 {4 {5 {6 {7 {8 {9 (+*ò( }: }; }< }= }> }? }@ *0 7{; {: {< {= {> {? {@ (A (‚+*ò( }B }C }D }E }F }G }H *0 7{C {B {D {E {F {G {H (I (‚+*ò(J }K }L }M }N }O }P }Q *0¨c{P {io¨ {K {L {M {N {O {P {Q sR {K {L {M {N {O {P {Q sS {K {L {M {N {O {P {Q sT (ƒ+ *:(U }V *0 Ô(„+ {W {V (…+ Ži-{0 ¦þo1 *ŽisÞ sX Ži(…+{ssù{v sY (†+(*:(U }Z *0†×{Z (…+s[ Þ%t  {W {toL (\ s[ Þ (] (^ -- Ži-{0 ¦þo1 *{Z s_ þ(‡+*{` *%(¢ **(ˆ *z(Œ **:( }*R{s¼ þoM *’} }!}"}#( *0SÙ{#||(R -={!{a , {b oc +{ {v{"sé o **:( }$*B{$þoC *²}%}&}'}(})( *0^Ù{(||(R -H|)( {&{a , {b oc +{%{v{'sí o **:(¡ }**0 ÅÛ{D sd {B {u s |s së þì se (f sï þð sg {*sh (i (j Þ%t ||(R - ÞÞ&,{tþoL *(*J5%:(k }+*R{+on (ˆ+*:(Ü },*0c{,{us¼ oM (D *r}-}.}/( *0SÞ{/||(R -={.{l , {m on +{-sõ (ž+(4**V( }0}1*b{0{1þþoo *²}2}3}4}5}6( *0Kc{4||(R -5{3(p |5( {2{v{6sù o **V(q }7}8*0 £á{r ss s  s÷ þø se |s (f {ø {7sû þü st {8(u (v (p (Þ!t ||(R -þ(Þ*@?!V(k }9}:*²{9oñ ,(ˆ+*{9oð {:(;*:(N }w *0‚â{¹ {w uq-*ur-A{w ts {¸ {è þoG *{w tq {t{é þoL *{w tr {u {ê þoM *(x *"(‰+*:(å }y *^{y oz s{ (Š+*:(¢ }| *>{| oë *(} *6(‹+(Œ+*V(} }~ } *0F,{ o€ ( (‹+(Œ+*{~ oª { oí (;s‚ (+*r(å }ƒ }„ }… *0U{„ {ì þ,{„ o€ (Ž+(Œ+*{„ oí {… (;{ƒ {„ s† (+*r(å }‡ }ˆ }‰ *¾{ˆ sŠ {‡ {ˆ {‰ s‹ (¦+(+*:(å }Œ *Ò{Œ {ì þ,{Œ o€ (Ž+(Œ+*(‹+(Œ+*:(¢ } *0ãs¼ (ó { oã *r}Ž } } ( *r{Ž { { þ(+*:(¢ }K*:|K( *²}‘ }’ }“ }” }• ( *0näoñ -d{’ -{” {• s o + |• ( {‘ o– (î Þt  (ñ Þ {“ oã **8Mr(— }˜ }™ }š *0 ‘ç sá s  {š s› þœ se (f {™ {š  s þž sŸ {˜ s  o¡ oñ ,( {™ o– (Œ+*(‘+*r(å }¢ }£ }¤ *Ž(C {¢ {£ {¤ s¥ (’+*V(© }¦ }§ *0*j(ª (« {§ {¦ s¨ þo© *r(© }ª }« }¬ *0 0j(ª (« {¬ {ª {« s­ þo® *’(© }¯ }° }± }² *0 6j(ª (« {² {¯ {° {± s³ þo´ *:(µ }¶ *0*è(· (¸ (¹ {¶ oº (“+*(» *"(”+*(à **(•+*:(¢ }¼ *0c{¼ s¼ (ó oã *²}½ }¾ }¿ }À }Á ( *0 ({½ {¾ {¿ {À {Á þ(–+*Ò( }à }Ä }Å }Æ }Ç }È *0 =|Å {à {Ä {Æ {Ç {È sÉ þÊ se (f *:(¢ }m*0„{moË ( *²(c }Ì }Í }Î }Ï }Ð *0Fã{Ì {Ð oÑ oÒ {Î {Ï s1 o (î {Í oã *²(Ó }Ô }Õ }Ö }× }Ø *0 *{Ô {Õ {Ö {× {Ø sÙ sÚ *:(Û }Ü *šÐ¦(W {Ü oÝ rGp(Þ (t+*V(— }ß }à *0 §ð sá s  {ß {à sá (—+{ß sâ (˜+sã (™+t#}Ø t'}ä oË  oå  oÑ  {ß  oæ (‘+*V(å }ç }è *v(C {ç {è sé (’+*( *(D *:}}( *0î{}{À ,oª **r(  }ê }ë }ì *®{ë (Á |ì ( {ê (î oã *r( }í }î }ï *®{î (Á |ï ( {í (ñ oã *r( }ð }ñ }ò *®{ñ (Á |ò ( {ð (ó oã *r(ó }ô }õ }ö *0 |ò s§ s s? þ@ se (f o¨ {ö  s÷ {ö  sø {ö  sù {ô (ƒ+{ö {õ (š+(›+*V(ú }û }ü *0$þsá (C {û {ü sý (œ+*(Ü *"(x+*:(Ü }Œ*–{Œ, {Œ(õ *(÷ sK (p+*r(þ }}Ž}*0Hó{Ž||(R -{oË ( +{oð Þ t   Þ*;< :}( *>{oÿ &*V( }‘}’*’|‘{’sQ þR se (f *~}“}”}•o &*Â|“(x -!{”||(R - |•( ***:( }–*0Mõ s  {–sO  sS  (—+tÝ}oË sU (+*:( }—*^(C {—sW (ž+*r( } } } *0o{ o ,{ {us¼ þoM *{ o ,{ {t{ o þoL *{ {¸ { o þoG *V} } ( *V{ { (Ÿ+*:(N } *0-÷{¹ { s þ s o (*:(q } *0nø{r { {÷ , rFps¤ z{ {ö  (… { ( + Þ, († &Ü&Ü ,(*{ø þoo *.G:( }Ÿ*B{Ÿþoo *( *6( (¡+*’( } } } } *0ûu6,?{ {  (… { }  Þ, († &Ü&Ü&(¡+*t8 { ,{ { { { (¢+*,¥ý+ rªps¤ z(¡+*/’( } } } } *0 oý{ { o£+ ,  { { oª s (¤+*{ {! { (¥+{ { { { s" (¦+*( *6( (¡+*V(# }$ }% *Î,{$ {% (§+*,¥ý+ rps¤ z(¡+*V( }& }' *0Kþ{& {' o£+ , { s( (¤+*{& {! {& {' s) (¨+*( *6( (¡+*r(* }+ }, }- *01î(. (© {+ {, {- o¨ (f (¢+*r( }/ }0 }1 *0kþ{/ {0 o©+ -{1 /{/ {0 (§+*, { s3 (¤+*(C {/ {0 {1 s4 (ª+*(5 *0=K, {à (Œ+*,¥¦+(r`p(• o– s$ z(Œ+*r(å }6 }7 }8 *Ž{6 {7 {8 o«+s: (¬+*V(# }; }< *z,{; {< (­+*(¡+*V( }= }> *0?K{= o? -({= {> o@ {= {> sA (¨+*(¡+*V( }B }C *0*K{B oD -{B {C (­+*(¡+*V(} }E }F *0B,{E {F (®+*,¥¦+(rˆp(• o– s$ z(Œ+*V(å }G }H *0Fÿ{G o? , {à (Œ+*{G {H o@ {G {H sI (+*V(å }J }K *01ÿ{J oD , {à (Œ+*{J {K (®+*:( }L *f{L { oM (D *(Ü *"(x+*:(Ü }N *Š{N { {N oO s‰ (p+*:(Ü }P *Ž{P sQ {P sR (ž+(d+*:(c }S *0c{S oT *:(c }U *0c{U oT *:(# }V *‚,{V oW ( +(¡+*V(X }Y }Z *01{Z om {Y (å (;{Z s[ (¨+*V( }\ }] *z{] {\ {] s^ (¯+*( *6( (¡+*:( }_ *^{_ o` sa (¤+*(5 *0,K, {à (Œ+*(r¶p(• o– s$ z:(å }b *J{b sc (¬+*:(c }d *0c{d oT *2r psè z2r~psè z2ròpsè z2rdpsè z2rÖpsè z2rHpsè z2r¼psè z2r2psè z0~ (°+ (e (f (YE$ÛZ ” ¥ ÿ  5 } ˜ ë - T (Y 3JtÅ(±+,6{g (l {={g (m (' 8g (YE$füD™~Û(C‹7qùê¿`X_(YE$M(rœp(• o– sÔ   z{ ,Ú{ { -É{‘ ( 8ä tÑ { -£ {I  {J   (U( 8® tÆ { 9Ïþÿÿ{ { :»þÿÿ{‘  {>( 8f tÇ{ :‡þÿÿ{?(! 8= tÈ{ 9^þÿÿ{ { 9Jþÿÿ{ { { :0þÿÿ{‘ {‘ {@(# 8ÐtÉ{ 9ñýÿÿ{ { :Ýýÿÿ{‘ {A(" 8ˆtÊ{B($ 8mtÒ{K  (W( 8NtÌ{D(* 83tË{ 9Týÿÿ{‘ {C{ () 8ñtÍ{ 9ýÿÿ{ { :þüÿÿ{E {‘  (;( 8¤tÎ{F  ( 8‰tÏ{ 9ªüÿÿ{ { :–üÿÿ{G {‘  (- 8A{ 9jüÿÿ{ { 9Vüÿÿ{ { { :<üÿÿ{‘ {‘ (C( 8âtÐ{ 9üÿÿ{ { :ïûÿÿ{H {‘  (K( 8•{ 9¾ûÿÿ{ { :ªûÿÿ{‘ (E( 8[{ 9„ûÿÿ{‘ {b(ó@fûÿÿt´{ { 9Lûÿÿ{ { { :2ûÿÿ{ø{‘ (G( ( 8Ó{ 9üúÿÿ{ { 9èúÿÿ{ { { :Îúÿÿ{‘ {‘ (I( 8t{ 9úÿÿ{ { 9‰úÿÿ{ { { 9oúÿÿ{ {‘ {b(ó@Kúÿÿtµ{ { :1úÿÿ{ù{ú{‘ {‘ (+ 8Æ{ 9ïùÿÿ{ { 9Ûùÿÿ{ { { :Áùÿÿ{‘ {‘ (, 8l{ 9•ùÿÿ{ { 9ùÿÿ{ { { :gùÿÿ{‘ {‘ (O( 8 { 96ùÿÿ{ { 9"ùÿÿ{ {‘ (Þ   9ùÿÿ{ { 9óøÿÿ{ {‘ (Þ !!9Õøÿÿ{ { :Äøÿÿ!{› (œ  {› (œ "!{› (  {› ( {‘ "( 8:{ 9t÷ÿÿ{ { 9`÷ÿÿ{ { { :F÷ÿÿ{‘ {‘ ( 8à{ 9÷ÿÿ{ { 9÷ÿÿ{ { { 9ìöÿÿ{ { { :Òöÿÿ{‘ {‘ {‘ ( 8a{ 9›öÿÿ{ { :‡öÿÿ{‘ (( 8'(( 8{ 9Pöÿÿ{ { 9<öÿÿ{ { { :"öÿÿ{‘ {‘ ( 8¼t½{4  ( 8¡t¾{5##( 8†t¿${ 9¸õÿÿ{ { :¤õÿÿ${6#{‘ #( 8>tÀ{7  ( 8#tÁ%{ 9Uõÿÿ{ { :Aõÿÿ%{8 %{9&{‘  &( 8ÐtÂ'{ 9õÿÿ'{:{‘ { (& 8ŽtÃ({ :Àôÿÿ({;(% +gtÄ){ 9™ôÿÿ{ (±+9ôÿÿ{g (l ){<{‘ {g (m ((  {bs»*0º{b (óE8ut´ {ø(h *tµ {ù {ú s (i *t³{ö{÷{csj ŒUsk (l *(rÂp(• o–   râps z"(¬ *0-(ï  , {m (²+-*{m ¥ (n *0%(ï  ,{m u\ ,  (o **0-(ï  , {m (³+-*{m ¥“ (p *0- (ï  , {m (´+-*{m ¥’ (q *0- (ï  , {m (µ+-*{m ¥£ (r *0-(ï  , {m (¶+-*{m ¥¤ (s *0-(ï  , {m (·+-*{m ¥¦ (t *0-(ï  , {m (¸+-*{m ¥¥ (u *0-(ï  , {m (¹+-*{m ¥§ (v *0-(ï  , {m (º+-*{m ¥b (å *0-(ï  , {m (»+-*{m ¥¨ (w *0-(ï  , {m (¼+-*{m ¥‘ (x *0-(ï  , {m (½+-*{m ¥© (y *0M(Ø  ,A{z (Y"32{z tÑ {JÐ(W (p+,{J (p **0Æ(ü  9­{ÿ ( (æ  9–{ ( (Ü  9{ { (  (å+,þ+,V{ÿ ( {ÿ ( { { ( X(¼  (” ( (• s *( s *0‚{b (ó3otµ {ù {ú  (¼ (” { -!(• ( ( s ( *(” (• s ( **0z(Ý  ,n{k (q {k (l (»  ,(ž so (p *(á ,{Ÿ so (p *(ž ( so (p **6sÇ (¾+*6sÉ (¿+*0N (à  ,{‡ (ˆ (®  ,{„ ,*{‡ (‰ {‡ (Š s{ (| *0N (à  ,B{‡ (‰ (®  ,.{„ ,&{‡ (ˆ {‡ (Š s{ (| **0®!sË (¾+ 9{b (d (ù  ,/{_ (a o , o + sÍ *(ù ,{_ (a +Â(rìp(• o– rps z(ù  ,Ó{_ (a 8„ÿÿÿ"(í*:oý (í*:o} (í*(~ *"(½ *( *"(¾ *(~ *"(½ *r(¾ }Î}Ï}Ð*0¦ï(ù  9—{_ (a {Îo‰ o‰ 38{Ï, o ,{Ðo (+++{Î(++,<{_ (` {_ (a {_ (e o¿ ( + sÀ (Á **0O"{Þ ,E {Þ {Þ -{/ (À+s€ ( *{Þ {/ (2 +³*6(‚ (Á+*~I*~J*~K*2ÐÅ(W *2Ð(W *Z(Ô (p+,(Õ **02#(Ö  (Ö  (Ñ %¤%¤þoX *05${b (ó3#t³ {÷{ -{ö (ƒ **0X%{b (ó3Ft³ {÷{ ,2{÷ { { -{‘ {ö s„ (… **0x&{b (ó3ft³ {÷{ ,R{÷ { { ,>{ { { -* {‘ {‘ {ös† (‡ **0œ'{b (ó@‡t³ {÷{ ,s{÷ { { ,_{ { { ,K { { { -5{‘  {‘ {‘ {ösˆ (‰ **0&({b (ó3t´ {ø(Š **0E*(Ú  ,9{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **05+{b (ó3#tµ {ú {ù s ( **0X,{b (ó3Ft³ {ö(Y30{÷{ ,#{÷ { { -{‘ (X **0R.(Û  ,F{ (‘ (Y33{ (’ { (“ { (” s• (– **06/{b (ó3$t³ {ö(Y3{÷ (— **0P0{b (ó3>t³ {ö(Y#3({ötÒ {÷{ -{K („ **0Q1{b (ó3?t³ {ö(Y3*{öt½ {4 {÷ s˜ (™ **0Q2{b (ó3?t³ {ö(Y3*{öt¾ {5 {÷ sš (› **0Q4(Ù  ,E{œ ( (Y32{œ ( t¿ {6 {œ (ž sŸ (  **0R5(Ù  ,F{œ ( (Y 32{œ ( tÁ {9 {œ (ž s¡ (¢ **0R6(Ù  ,F{œ ( (Y32{œ ( tÍ {E {œ (ž s£ (¤ **0R7(Ù  ,F{œ ( (Y32{œ ( tÐ {H {œ (ž s£ (¤ **0R8{b (ó3@t³ {ö(Y3*{ötÎ {F {÷ s˜ (™ **0}9{b (ó3kt³ {ö(Y3U{÷{ ,H{÷ { { ,4{ { { - {‘ {‘ s{ (| **0}9{b (ó3kt³ {ö(Y3U{÷{ ,H{÷ { { ,4{ { { - {‘ {‘ s{ (| **0þ:{b (ó@ét³ {ö(Y@Ð{÷{ 9À{÷ { { 9©{ {‘ (Þ 9Ž { { 9~ { {‘ (Þ ,d{ { -V{› (œ {› (œ {› (  {› (  {‘     s¥ (¦ **0¤;{b (ó@t³ {ö(Y@v{÷{ ,i{÷ {‘ {b (ó3M t´{ { ,8{ { { -"{ø{‘ s ( **0R<{b (ó3@t³ {ö(Y"3*{ötÑ {I {J s§ (¨ **0A={b (ó3/t³ {ö(Y"3{ötÑ{I (© **04>(Ù  ,({œ ( (Y3{œ (ž (X **0F*(Ú  ,:{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **0x?(Û  ,l{ (‘ (Y 3X{ (’ (Þ  ,D{› (œ {› ( { (“ { (”  sª (« **0F*(Ú  ,:{‹ (Œ (Y!3&{‹ ( {‹ (Ž s{ (| **08@{b (ó@§t³ {ö(YE$-*{ötà {; {÷ s¬ (­ *{ötÂ{÷{ ,¹{÷{: {‘ { (X s¬ (­ *0&A{b (ó3ft³ {ö(Y 3P{ötÅ {÷(±+ ,5 {g (l {= {g (m s® (¯ *{b(ó@™t³{ö(Y @}{ötÄ {÷{ ,a{÷{ (±+  ,F {g (l  {<{‘   {g (m   (X  s® (¯ **0>B{b (ó@§t³ {ö(YE$0*{ötÇ {÷{ -ä{?  s° (± *{ötÆ{÷{ ,¶{÷{ { - {‘ {> (X s° (± *0„C{b (ó@§t³ {ö(YE$P*{ötÉ {÷{ ,ä{÷ { { -Ð {‘ {As² (³ *{ötÈ{÷{ ,–{÷ { { 9ÿÿÿ { { { :fÿÿÿ{‘  {‘ {@(X s² (³ *0RD{b (ó3@t³ {ö(Y3*{ötÊ {B {÷ s9 (: **08E{b (ó@§t³ {ö(YE$-*{ötÌ {D {÷ s´ (µ *{ötË{÷{ ,¹{÷{‘ {C { (X s´ (µ *0E*(Ú  ,9{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **03>(Ù  ,'{œ ( (Y3{œ (ž (X **0UF(ú  ,I{k (q (Þ  ,5{› (œ {k (l {› (  s¶ (· **0rG0( s ( *(Þ  ,PY{› ( (ý  ,9{“ (” {› (œ {“ (•  ( s ( **0“H(Ù  9„{œ ( (Y3p{œ ( tÏ {G {œ (ž ( oq Ži (ý ,,{“ (” {“ (• s¸ (¹ ***0 I(û  9‘ss {W (~+ 9z{“ (• {b (ó3`t³ {ö(Y3K {÷{ ,> {÷{“ (” { {‘ (ý+s  (º **0DK0(D (\ su (Â+ ,{» *r@po_ (› rhps z0DN0(D (] sw (Ã+ ,{¼ *r|po_ (› r ps z0FOoJ /+ Žiþþ,!(r¼p(• o– rps z£*0FP(+ o= þ, Žiþ+,£*(rœp(• o– sÔ z0QŒ0¥é{b (óEK?t´ {øoâ*tµ {ù {ú oâ(+þ(× *t¶{û*t³{ö{÷(YE$‡é"N->TšpëæÛñ !,7Oj…ï4–D99)уä9_{ ,:{ { ,({   { { -{‘ ( *r¢ps¤ zŒ0¥é(ü   , {ÿ ( þ(+*r¢ps¤ z{ ,³{ { ,¡{   { { 9‡ÿÿÿ {   { { :mÿÿÿ {‘ þ(+*Œ0¥é(ÿ   , {½ (  þ(+*r¢ps¤ zràps¤ zt½{4  *t¾{5oI*Ð(W *tÑ{J  *tÁ{8 {9 (Z£*tÀ{7  *tÃ{;þoc *tÂ{:þoc *Ð(W *Ð(W *tÆ{>þo¾ *tÇ{?þo¾ *Ð(W *Ð(W *tÊ{Bþo7 *tË{Co¿ (Ö *tÌ{Do¿ (Ö *tÍ{E  *{ 9¡ýÿÿ{ { 9Œýÿÿ{   { { :rýÿÿ {‘ þ(+*Ð(W *tÎ{F  þoÀ *tÏ{G  *tÒ{K  *Ð(W *{ 9ýÿÿ{ { :îüÿÿ{‘ (+ (Ò % ¤þoX *{ 9´üÿÿ{ { 9Ÿüÿÿ{   { { :…üÿÿ{‘ þ(+*{ 9füÿÿ{ { 9Qüÿÿ{   { { 97üÿÿ {   { { :üÿÿ{‘ þ(+*Ð(W *(rp(• o– sÔ z0¹(ë (ž s»*0¹(ž (ë (ž s»*0¹(ž ( (ë (ž s»*0%¹(ž ( ( (ë (ž s»*0+¹(ž ( ( ( (ë (ž s»*0&(p+-Œ0(Á r:ps z*0&oÅ -Œ0(Á r:ps z*0AŽio£ .!(rTp(• o– rxps zsy (Ä+(Å+*¦(U,oƒ (U+, oƒ +Ù*0=’o7 (  (+oÅ -!(r‚p(• o– rps z*0®R(+ oc , od + (Ñ r°p(r´p(• o– (Æ+(+ o= þ, Žiþ+,( £r°p(rÞp(• o– (Æ+*(rp(• o– r°ps z0/S(+ oâr8p(r@p(• o– (Æ+*0¹(í (ž s»*0#¹(A(ž ( (ë (ž s»*žo ,Œ0(à +Œ0(U*0¹(ï (ž s»*r(M( ( ( *Z( (( *Z( (( *0WT(Z( + o£ oÄ .!(rnp(• o– rxps zs{ (Ç+(!( *0nV(È+ Œu,+ rµps zŽi  Y2# £é(+¤XX3Ý (Y (!( *0rW(+r–p(r¨p(• o– (Æ+(Z /+ Žiþþ,!(rÔp(• o– rps z(#( *0[O0(D (\ o£ Ži.!(rp(• o– rxps zs} (É+(Ê+(( *0dO(Ë+,sÅ zoJ o£ Ži.!(r:p(• o– rxps zs (É+(Ê+(( *0I(Ë+,sÅ zoI(+rhp(rŠp(• o– (Æ+(( *0i(+(+r´p(r¾p(• o– (Æ+Ð(W (+r´p(ròp(• o– (Æ+(( *ns (Ì+(=( *0O(Í+,sÅ zoÆ ,!(rp(• o– rLps z( (-( *0F(Í+,sÅ zoÆ , (/( *(rXp(• o– rLps z0r(Í+,sÅ z(+o¾ rŽp(ršp(• o– (Æ+oÆ , (3( *(rXp(• o– rLps z0{(Í+,sÅ z(+o¾ rŽp(ršp(• o– (Æ+oÆ ,!(rp(• o– rLps z( (1( *®(Î+,sÅ zoq ( (5( *0„(+,sÅ zoÇ -!(r¼p(• o– rÜps zoÈ ( oý oÉ , ('( *(rXp(• o– rÜps z0’(+,sÅ zoÇ -!(r¼p(• o– rÜps zoÈ ( oý oÉ ,!(rp(• o– rÜps z( (%( ( *0”(+,sÅ zo[ -!(rèp(• o– rÜps zoÈ ( o} oÉ ,(+(ž ( (+( *(rXp(• o– rÜps z0¢(+,sÅ zo[ -!(rèp(• o– rÜps zoÈ ( o} oÉ ,!(rp(• o– rÜps z( ()(ž ( (+( ( *0b(+,sÅ zoq ( oÉ ,!(rp(• o– rps z( (7( ( *0T(+,sÅ zoq ( oÉ , (9( *(rXp(• o– rps z0¢Ðb(W (+rp(r*p(• o– (Æ+Ðb(W (+rdp(r*p(• o– (Æ+Ðb(W oârzp(r‚p(• o– (Æ+(Q( ( *0lÐ(W (+rÎp(rÚp(• o– (Æ+Ð(W (+r p(r p(• o– (Æ+(S( *0TX(  oq sƒ o¿ (Ï+ (+r2 p(r8 p(• o– (Æ+(?( *0( (  (( *0RY{ ,, { { -{‘ ( *( ( *Ð(W (U( ( *0K[s… (Ð+(Ñ+ (Ê (Ë ((( (  s‡  (ƒ+( *rp p*zoÄ oÄ 3 s‰ (Ò+**Bs‹ þoÌ *foc , þo= **Roc , o= Ži**0…^>ox (Ó+ (4  s (Ô+ {Í , {Í {Í - {Î *s“ (Õ+,{] *(rš p(• o– sÔ z0î`(p+,!(r p(• o– rê ps z:°oc , o= + s• (Ö+(ë+ (×+ >oÏ , (þ Þ Þt uÆ,Þþ,({]  o¿ o , {] *(6 *(6 *h#‹0)a:oÐ ,*rú poÒ (›sÔ z0)b:op ,*r"!poÒ (›sÔ zj{« -*(ë+þoX *Bs— þoÌ *0 vc(:  (Ø+ (Ù+ Œ0¥(Ö  >(ë+oÑ (rJ!p(• o– (` Œ,*rv!psÒ z0Dd(:  >oÓ (rˆ!p(• o– (` Œ3,*r®!psÒ z0Je(4 (Ú+ 6(ë+oÔ (r¾!p(• o– Œp,*rð!psÒ z0Mf(:  (Ø+ 6(ë+oÔ (r¾!p(• o– Œp,*rð!p sÒ z0\hEF{Þ - rö!ps¤ z {Þ {/ Y(Û+  (Õ (2 (Ö s× *(‚ s× *0//!(r6"p(• o– rps z(Û+*ro¿ Ži-*(ë+þoz *0ol(Ø (Ù (Ú (Û (Ü o= Ži(Ü+(Ý (Þ (:   (7   þ(B *ÆoÇ ,oý þoÉ *o[ ,o} þoÉ **0€m{« ,U {« {« ,F{« {« {« -2{¬ {¬ (Ñ % ¤%¤þoX *(rd"p(• o– rxps z0Wn{« ,. {« {« -{¬ 3 þoÀ *þoß *(rˆ"p(• o– rª"ps z0Hoo ,*s™ oà (Ý+ -r²"po (› rê"ps z{x *~L*0jq{D(Þ+ rp(” ,(H *rep(” ,{E*(á ,*oÒ (rø"p(• o– (` sÔ z0r{D(Þ+ (I  (G *0Ls{Cop YE r$#ps¤ zs› *(J  s *(w  sŸ *:sâ (ß+*0lx{Cop E r@#ps¤ z(w  s£ *s¥  s§  (K oã sä (å (æ s© *0ys« (ç (à+ s­ *V{Þ -*rP#ps¤ z0,z{Þ , {Þ {Þ - {/ *rP#ps¤ zž{é{êoè {êX{ës² *N(á+s³ s² *0ƒ{Cop E Sc}—§Ërº#ps¤ zsµ  s·  (] (N oé sê (ë (ì (í  s» *(U s½ *(T (S s¿ *(M (w   sÁ *(S sà *(S sÅ (î (â+sÉ *(M sË *0-„{D(Þ+ (M  {Cop þ sÍ *0W(w  sÏ *0’(J  {D(Þ+ sÑ *0’(J  {D(Þ+ sÓ *0†(W  (w  sÕ *0=’(J  {D(Þ+ {Cop 3 (8 ('*(9 (9*09‡s×  sÙ  (J oã (M {D(Þ+(w sï *–(J {D(Þ+(M (N sð *0gŠ{Cop E Þ#rÈ#ps¤ z(Y  (YE$ r¢ps¤ ztÌ {D*tà {; þoý *(Z (Ø (Ü (Ù (Û (Ú   (7 *(J (N sñ   (ò  (ó (> *0)Ž{Cop  E lr‚ˆ˜¨¸ÈØÞ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMsÛ râ#psô (ã+ oõ sÝ *sß *sá *sã *(Z  (Ø  (Ü  (Ù  (Û  (Ú så *sç *sé *së *sí *(V   sï *(J {D(Þ+sñ *só *sõ *s÷ *sù *([   (ö  (÷  (ø  (ù   sû *(J {D(Þ+sý *sÿ *s *s *s *s *s *{Cop þ  s *{D(Þ+s *(w (ú (û   s *(x (ü (ý s *(w ÑiÑs *(w gs *{Cop Òs *(w hs *(w Ñs *(w s *(w s *(x s! *(x s# *s% *([   (ö  (÷  (ø  (ù   s' *(J (N sñ (ò (ó   s) *s+ *(Y s- *s/ *(J s1 *(V   s3 *(W s5 *(X   s7 *(W s9 *s; *(w s= *~M*~N*0oŒ sC  sE *"sG *0#‘{b (óE9{*tµ {ù {ú  (b (ï{cs»*t³{ö{÷sI (ñ+(ë{cs»*t¶  {û  {ü  /+  Žiþþ, r$$ps¤ z £é (+   (p+-,(rT$p(• o–   (þ   r:ps z *0œ’{b (óEL*t³ sK {÷(ä+*t´ {ø (å+,+ (å+,* oÿ *tµ{ù {ú oÿ 8dÿÿÿ0 WŽi sM *0¢•{b (óEA¥~t³ {ö {÷ sS  (ñ+(ë{cs»*t´{øo   ,C   {W  (€+(€+ (c   (æ+  o , * o sO z*tµ{ù{ú oÿ  (e (ï{c  s»ÝŒt u~,vt~(R (å+,[oàoâsß(í(ž s»sU  (e (ï{c  s»Þþþ**á0Œ0 G–o i (\+ sÞ {Ø /%{Ø {Ø {Ø Yo X(Ú +Ò*~O*~P*0/˜(a o sl (ç+(g s þo *05š(h o -st (è++ (h o s *0 ¤Œ0,+ rÙps zo7 oŒ o o o‰ (Z  (h (… (h o s Þ, (h († &Ü&Ü (  ( , ( 8¹uÊ,( +Psn sp   o  Þ t   uf  , \ Þþ   (é+(ê+(ë+(h (… (j Þ, (h († &Ü&Ü( ( , ( + -*{ {?o7 (5 u$,o , o¿ Ži++XŽi.>rd$poT þboÒ ŽiþboÒ (œrŒ$ps z(d (á+s² o (X *(>'e½ Ç 0ƒ¥Œ0,+ rÙps zu$ ,4 o7 (4 o , o¿ +(ì+ (k *up , o7 (4  (k *(k *0(§(ë+(R  (` (í+ (È+(b *0BÐ0(W (+râp(rš$p(• o– (Æ+{b{cs *†o &}Ñ}ÒX}Ó*0>W{Ò{Ó2 rÄ$ps¤ z{Ñ{Ò£¦i {ÒX}Ò*0¦¨{ÒX{Ó1 rà$ps¤ z{Ñ {Ò(å {ÒXY(å {Ì  {Ì YX¦ Y 2"  X£¦¤¦ X  X3Þ {ÒX}Ò*0)( {Ñ{Òo {ÒX}Ò*( *"(Þ *:(Z }Ô*NoT {Ô(” *:( }Õ*NoH{Õ(” *( *0 .or (+rxp(r(%p(• o– (î+*( *0 )(+rxp(rJ%p(• o– (Æ+*( *0 .oc (+r^%p(rh%p(• o– (Æ+*( *0 .oc (+rœ%p(r¤%p(• o– (Æ+*:( }Ö*0 .{Ö(+rÖ%p(rè%p(• o– (Æ+*( *Bor þ(× *( *0©(œ ( ( *( *0©(œ ( ( *(! *.þo *:(" }×*:{×£*:(Ó }Ø*NoT {Ø(” *:(# }Ù*B{Ùþ(×+*($ **þor *’(Ó }Ú}Û}Ü}Ý*0šªo , o¿ + Ži{Ú.*{Ý(ì+ s {Û(Ö+ {Ü(×+ s‘ oq (Ä+(ï+o¿ oÄ oÄ .* (& (& (2 *:(# }Þ*B{Þþ(×+*:(" }ß*:{ßo% *:(\ }à*No_ {à(” *(& **þ(E *:(& }á*B{áþ(: *:(& }â*B{âþ(F *:(' }( *B{( þo *:() }ä*B{äþo* *(+ *"(M *:(, }å*N{å(ç (à+*V() }æ}ç*n{æ{ç(ð+þo- *(+ *"(M *:(. }è*:{è(ð+*{é*{ê*{ë*r( }é}ê}ë*:(" }ì*:{ì£*(/ *"(S *:(0 }í*N{í(î (â+*:(1 }î*B{îþo *r(2 }ï}ð}ñ*0B«{ð{ëo3 {ïo4 s¹ {ñ(ñ+(ë (ž s»*:(2 }ò*0¹{òo5 (í (ž s»*V(2 }ó}ô*03¬{óo5 {ô(Q o (ï (ž s»*V(2 }õ}ö*0*¹{õ{ëo6 {ö(ñ (ž s»*:(2 }÷*N{÷o ( *(/ *"(S *:(1 }ø*B{øþo *V(2 }ù}ú*0:­{ùo {b {csÇ {ú(ñ+(+ s»*:(2 }û*Šr&p{û{ëo6 (ä( *r(7 }ü}ý}þ*¦{ü{ý{ëo6 {þ(n sß*:(7 }ÿ*N{é{ÿo8 *V(9 }}*f{(: {( *V(: }}*f{(: {( *V(9 }}*f{o; {( *(+ *"(M *:(, }*N{(ç (à+*(< *"s¤ z:(= }*B{þo4 *(= *6(ò+(;*(= *:(ó+(C*(= *:(ó+(Q*²(= }} } } } *0 C®{{ { { { sï (C  oÉ ,(9*(7*(= *6(ò+(=*(= *6(ò+(?*(= *:(ó+(S*(= *:(ó+(*:(= } *N{ o> ()*V(= }}*0*¯{{(=  oÆ ,(/*(-*(= *:(ó+(*(= *:(ó+(*(= *:(ò+(U*(= *6(ò+(W*’(= }}}}*0 6°{{{{(ô+ (D ,(+*()*V(= }}*0*¯{{(=  oÆ ,(3*(1*(= *:(ó+(E*(= *:(ó+(I*(= *6(ò+(K*(= *:(ó+(O*(= *:(ó+(M*(= *:(ó+(G*:(= }*0S(ò+ {(õ+*:(= }*0S(ò+ {(ö+*:(= }*0S(ò+ {(÷+*:(= }*0S(ò+ {(ø+*:(= }*0S(ò+ {(ù+*:(= }*0S(ò+ {(ú+*:(= }*0S(ò+ {(û+*:(= }*0S(ò+ {(ü+*:(= }*0S(ò+ {(ý+*:(= }*0S(ò+ {(þ+*:(= } *0S(ò+ { (ÿ+*:(= }!*0S(ò+ {!(+*:(= }"*0S(ò+ {"(+*(= *f(ó+Ð(W (+*’(= }#}$}%}&*0 6°{#{${%{&(ô+ (D ,('*(%*V(= }'}(*f{'{((? (5*(= *:(ó+(*:(= })*07±{)(Y3!{)tÌ {D (B (9*{)*(= *:(ó+(*:(= }**N{*(: (*:(= }+*N{+o> (%*:(= },*N{,o; (*:(= }-*N{-o> (%*:(= }.*N{.o; (*(= *6(ò+(!*:(= }/*N(ò+{/(#*(? *N(\ (S s@ *(A *J(^ (B (+*(/ *"(S *V(C }0}1*R{0{1(+*:(D }2*N{2(_ (+*:(á }3*:{3(b *:(E }4*>{4(c *V(" }5}6*034{6/ {5£*(r&p(• o– sÔ z:(‘ }7*(‘ *0 (’ *{7*V(á }8}9*R{8{9(e *r(  }:};}<*ª{;(å+, {<(X *{:þo **o &*00²(F (G (;(+ bX, (“ +a*05³(F (G (F (G (:(+, (” **"s[ *V( }=}>*{=*{>*&*0C´þ,: &  ¹y7ž{>bcXXX ¹y7ž{=(+bcXXX **6(:o_ *0Fµþ,7u‚ ,+&  {={=( +,{>{>þ***þþ*bo o o‰ (Z *0A¶þ,2þ,*&  {={=( +,{>{>þ***þþ*0·u‚ ,oc **sf *:( }?*{?*&**o &*6(;o_ *:(:oa *(L *0`¹(M (N o o o‰ (Z   (h (… (h (e oO Þ , (h († &Ü&Ü*("J:(P }@*0+º{@{@oQ (f  (a o sR *:(S }A*®rp poT ,(g {As oU þ**(L *07»(M (N (h o o o‰ (Z (e oV *:(W }B*04¼(X (Y sr (ç+(g {Bs o *0A½{Cop  {Cop  {Cop  {Cop  b`b` b`*06W{Cop  0* ¿0_b{Cop `*(v *0"¾(w j!ÿÿÿÿ_ (w j  b`*0Í¿(w  /+ Žiþþ9¥r>&pŒb ,/u™ , ( ¥so; +oÒ +rp(Ç rt&p(Ç ŽiŒb ,/u™ , ( ¥so; +oÒ +rp(Ç s¤ z£0*0‘À{Cop  EQXr–&pŒb ,/u™ , ( ¥so; +oÒ +rp(Ç s¤ z(À+*oZ (2 8oÿÿÿ0vÆŽiso \s  s€  s‚  o[ {C(w oq s\ (] (^ Žiso ( +s þoZ *{C*{D*{E*r( }C}D}E*(_ *N{C(w or *:(` }F*N{F(a ( +*0QÈob -{c -*( +sd (e * {f (g (h {f (i +¯0Ê (j (+*0LÌok -{c -*sl (m * {n (Ö {n (× (h +´0Î (j (+*Fso þ(+*>sp (+*:*>*6*0*¢Ðr(W oq ,rGp6op ,***0;(Ž -!(rÂ&p(• o– r2 ps zrGp6þop *:(r }s *Z{s s þot *:(u }v *Z{v s þow *07´ ~îsx oy ,*sß ~îsx oz *0Ï (óEAg¨t³  ¹y7ž{÷o{ bcXXX ¹y7ž{öoZbcXXX *t´  ¹y7ž{ø(+bcXXX *tµ  ¹y7ž {ú(+bcXXX ¹y7ž {ù(+bcXXX *t¶ ¹y7ž{übcXXX ¹y7ž{û(+bcXXX *0þÐ(óECj©t³ t³ {ö {ö  o\,{÷{÷oÆ **t´t´{ø{øþ(+*tµtµ {ù {ù(+,{ú {úþ(+**t¶ t¶  {û {û(+, {ü {üþ**0Ò (YE$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *t½  ¹y7ž{4(+bcXXX *t¾  ¹y7ž{5(+bcXXX *t¿  ¹y7ž {6(+bcXXX *tÀ ¹y7ž{7(+bcXXX *tÁ ¹y7ž{9bcXXX ¹y7ž{8(+bcXXX *t ¹y7ž{:(+bcXXX *tà ¹y7ž{;(+bcXXX *tÄ ¹y7ž{<(+bcXXX *tÅ  ¹y7ž {=(+bcXXX *tÆ  ¹y7ž {>(+bcXXX *tÇ  ¹y7ž {?(+bcXXX *tÈ  ¹y7ž {@(+bcXXX *tÉ  ¹y7ž {A(+bcXXX *tÊ ¹y7ž{B(+bcXXX *tË ¹y7ž{C(+bcXXX *tÌ ¹y7ž{D(+bcXXX *tÍ ¹y7ž{E(+bcXXX *tÎ ¹y7ž{F(+bcXXX *tÏ ¹y7ž{G(+bcXXX * * * * * *tÐ ¹y7ž{H(+bcXXX * * * *! *tÑ" ¹y7ž{J(+bcXXX ¹y7ž{I(+bcXXX *tÒ# ¹y7ž{K(+bcXXX *0Ó(YE$%Ho–ÏöDk’¹à.U|£ÊñW*t½ t½ {4{4þ(+*t¾ t¾ {5 {5þ(+*t¿t¿{6{6þ(+*tÀtÀ{7{7þ(+*tÁtÁ {8 {8(+,{9 {9þ**t t  {: {:þ(+*tà tà  {; {;þ(+*tÄtÄ{<{<þ(+*tÅtÅ{={=þ(+*tÆtÆ{>{>þ( +*tÇtÇ{?{?þ( +*tÈtÈ{@{@þ( +*tÉtÉ{A{Aþ( +*tÊtÊ{B{Bþ(!+*tËtË{C{Cþ("+*tÌtÌ{D{Dþ("+*tÍ tÍ! {E!{Eþ(+*tÎ"tÎ#"{F#{Fþ(+*tÏ$tÏ%${G%{Gþ(+*tÐ&tÐ'&{H'{Hþ(+*tÑ(tÑ)({I){I(#+,({J){Jþ(+**tÒ*tÒ+*{K+{Kþ(+*0.ÔoÂ(– (— rä&p(2(H(L(?*n, o_ +oT (2*05+{b (ó3#tµ {ú {ù s ( **®,r[ps| ($+o} (2*oH(2*®,r[ps~ (%+o (2*oT (2*Â,r[ps€ (&+o (2*o7 oT (2*®,r[ps‚ ('+oƒ (2*oT (2*®,r[ps„ ((+o… (2*oT (2*"s­ *0Õþ9{ñ {ñ @í(óE7]št³ t³ {ö {öo],{÷ {÷þ()+**t´t´{ø{øþ(*+*tµtµ{ù{ù(*+,{ú{úþ(++**t¶t¶ {û {û(,+,{ü {üþ****0Ó(YE$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*t½ t½ {4{4þ(,+*t¾ t¾ {5 {5þ(-+*t¿t¿{6{6þ(-+*tÀtÀ{7{7þ(,+*tÁtÁ {8 {8(,+,{9 {9þ**t t  {: {:þ(.+*tà tà  {; {;þ(.+*tÄtÄ{<{<þ(.+*tÅtÅ{={=þ(.+*tÆtÆ{>{>þ(/+*tÇtÇ{?{?þ(/+*tÈtÈ{@{@þ(/+*tÉtÉ{A{Aþ(/+*tÊtÊ{B{Bþ(0+*tËtË{C{Cþ(1+*tÌtÌ{D{Dþ(1+*tÍ tÍ! {E!{Eþ(,+*tÎ"tÎ#"{F#{Fþ(,+*tÏ$tÏ%${G%{Gþ(,+*tÐ&tÐ'&{H'{Hþ(,+*tÑ(tÑ)({I){I(2+,({J){Jþ(,+**tÒ*tÒ+*{K+{Kþ(,+*0µ!€í s† €îÐñ(W od €Iб(W €K(Ó oc , (Ó od +(Ó €JÐb(W oŒ €Ls? €MsA €N sW s‡ €O si sˆ €P*:(‰ }R*B{RþoÂ*(Š *vrî&p(3(?(?(L*(‹ *6oà(2*( *"(› *:(~ }S*0G{S0( s ( *(›  ,Z{SY(¡ {› ( o’ ,9{“ (” {› (œ {“ (•  ( s ( **(Œ *"s¤ z( *0Ö(ˆ (‡ (/ *( *0©(œ ( ( *:sŽ (3+*&(4+*Bs (5+*BsÏ (6+*BsÑ (7+*6sÓ (8+*6s (9+*:s× (:+*:sÙ (;+*>sÛ (;+*6(Ü (à+*6(Ý (à+*6(Ü (á+*6(Ý (á+*:(‘ }T*0Ø{ToÖ *:(’ }U*0Ø{Uo“ *V(Û }” }• *j{” {• oÒ þo– *:(— }˜ *0 &ØsÕ sà sÅ {˜ s™ sš *(¢ **r(› }œ } }ž *z{ sË {ž {œ sŸ *:(’ }\*0Ø{\o“ *:(’ }]*>{]o  *(¡ **(¢ *"s¤ z(¢ **(¢ **:(¢ }^*:{^o£ *0ûÚ,{`,++ X {_- {aþ+,7,1 {Ì  Y2 o¤ &XX3é++,${`,{¥ o¤ &+ + -o¤ &{_- {a+,E,? {Ì  Y2%{a,0+ o¤ &XX3Û++*0<W / 0(¦ X+x3a+A(¦  YX (§ þo¨ *0,Û,( {Ì  Y  2 o¤ & X X3í**0,Û,( {Ì  Y  20o¤ & X X3í**>, (ß **0íÜXYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (Ý X  !6"\i(<+&^\+Ñ{_(á *0œÝXYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(Ý X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(<+&][8vÿÿÿ{_(á * *v££(Xþ(i*~®*–oi ,+oj ,+ok þ*®(ç , oc +,od (æ þo **0AÞ(è , o= s© *oƒ ,+Û(rò&p(• o– sÔ z *0 :ào\ (é  (ª rGp %¤( þo« *0'á(é  (¬ £ s þ(å *0Eâ(é  (¬ £ (é  (¬ £sþ(å *0)á(é  (¬ £ sþ(å *F00 9þþ**0öäo­ 2(r'p(• o– s® zo¯  YE#YEt+YEJ-YE&0YE*( X8wÿÿÿ( X8`ÿÿÿ+(r ( X8Cÿÿÿ(rP'p(• o– s® z (r ( X8 ÿÿÿ0Aä2(r’'p(• o– s® zo¯ (ï , X+Á*0bä2(r’'p(• o– s® zo¯ (ï ,X(ñ s° **YEs° *Xs° *0Jæo¯ .YE s± *X(ò  (² (³ s° (´ s± *0lä2(rÐ'p(• o– s® zo¯ (ï , X+Á*YE(ó sµ *X(ó sµ *~¯*0é(ô  (¶ (· (¸ (· (¹ (· (º  3+F, (» +: Y(å {Ì YXo¼ (õ ¥s(½ (å (» 9z{¾ (³ {¾ (² , (» +T X(å Y(å {Ì  {Ì     YXo¼ (õ ¥s(½ (å (» +s¿ *~°*09}{_-3, {a+,o­ (à +o­ (ß +(Ì{_,/, {a+,o­ (à *o­ (ß **(ß *0üê %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þ£oÒ (r(p(• o– (` s® zsþ(ì *sþ(ì *þ(î *sþ(ì *sþ(ì *þ(í *sþ(ì *sþ(ì *s!þ(ì *X  o¯ LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(r:(p(• o– rr(p(` s® z s#þ(ì * s%þ(ì * s'þ(ì * s)þ(ì *s+þ(ì *s-þ(ì *s/þ(ì *s1þ(ì *Xþ(=+*05ì,! {Á -s3þ(ì *þ(ù *0 ‚ïs  o­ (ð  (ö  (  (à  (Ä o¯ ,%{Á -s5þ(ì *þ(ú *0Ôñ(¶+:Á(¸+:®(º+:›(>+:ˆ(¼+:v(·+-b(¹+-P(»+->(½+-/(?+-(rv(p(• o– s® z¥¯ n*¥©*¥¨ n*¥§ n*¥¦n*¥‘*¥®j*¥bj*¥¥j*¥¤j*0Œó(¶+:g(¸+-L(º+-4(¼+-(>+-+T¥® Œ¯+D¥‘ Œ©+4¥b Œ¨+$¥¥ÑŒ§+¥¤ÒŒ¦ (ü *0 ‚ö(´+:^(³+:¨(@+-(r¼(p(• o– s® z¥7 (Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(Æ s (Ç sÈ 8[¥“(Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(É "€þ,+ "€eþ,+(Ê þ"þþsÈ 8±¥’(Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(Ë #ðþ,+#ðeþ,+(Ì þ#þþsÈ (Í  (Î  (Ï  {`  ,"  ,{¥ (Å  (Ç +    (ø XsÐ *0«÷X o¯ LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(r:(p(• o– rr(p(` s® z(ý (â XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rè(p(` s® z(ý (â  XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rî(p(` s® z(ý (â  XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rô(p(` s® z(ý (â  XsÐ *0 Õù{` 9„ {¥ +YEk{¥ rú(p Œ£,4u™,( ¥so; +oÒ +rp(Ç rZ)p(Ç s¤ z0+ (Û ,Q  {à {á {â {ã {Ì  {å {æ {ç {è {ésÚ+  {a,H {à {á {â {ã {å {æ {ç {è {ésÚ+  ,R  {à {á {â {ã {ä {å {æ {Ì  {è {ésÚ+  ,  (A++r^)p(ÌXsÐ *0 í ûs  o­ (ð  (ö  (  (à  (Ä o¯ 9‡  {Á -S{Ñ ,,  {Ò   {Ñ   ¥b(å  sÓ +R(rl)p(• o– s®   z {Á {Ì  (å  sÓ +   sÓ (Ô (Õ  9‡  {Á -S {Ñ ,,   {Ò   {Ñ  ¥b(å sÓ +R(r”)p(• o– s®   z {Á {Ì   (å  sÓ +    sÓ (Ô (Õ  %YE"AYEßEYET{¢LYE|£OYE!UYEßXYEªaYEØI™Þ<`iYEElYEKnYE&sYEj§éxYE(r(p(• o– s®   z {Ñ ,Ù {Ò  {Ñ  (ý (â XsÐ * {Ñ ,› {Ò  {Ñ  ¥\(ø XsÐ * {Ñ 9[ÿÿÿ {Ò  {Ñ  (B+oÖ o× &XsÐ * {Ñ 9ÿÿÿ {Ò {Ñ  8;ÿÿÿ {Ñ 9òþÿÿ {Ò  {Ñ Xo¯ XYEndYEiYEqoYEDuYE6xYE((r:(p(• o– rÄ)p(` s®   z (ý (â XsÐ * (ü (ã XsÐ * {Ñ 9þÿÿ {Ò {Ñ  8(þÿÿ {Ñ 9ßýÿÿ {Ò  {Ñ Xo¯ XYEndYEiYEqoYEDuYE6xYE((r:(p(• o– rp(` s®   z (ý (â XsÐ * (ü (ã XsÐ * {Ñ 9óüÿÿ {Ò  {Ñ  (·+-: (¹+-1 (»+-( (½+- (?+- (ü (ã + (ý (â XsÐ * {Ñ 9nüÿÿ {Ñ {Ñ 9Yüÿÿ{Ñ {Ò  {Ò {Ñ Œ1(ë  (ë (C+o× &XsÐ * {Ñ 9ýûÿÿ {Ò  {Ñ  ¥,rÈ)p+rÒ)p(ø XsÐ * {Ñ 9­ûÿÿ {Ò  {Ñ  ¥£(Å (ø XsÐ * {Ñ 9hûÿÿ {Ò {Ñ  8pþÿÿ {Ñ 9Aûÿÿ {Ò  {Ñ  (þ * {Ñ 9 ûÿÿ {Ò {Ñ  +Ç {Ñ 9æúÿÿ {Ò {Ñ  +£ {Ñ 9Âúÿÿ {Ò {Ñ  8äúÿÿ {Ñ 9›úÿÿ {Ò  {Ñ  (ÿ * {Ñ 9gúÿÿ {Ò  {Ñ  ,  oÒ +r^)p(ø XsÐ * {Ñ 9úÿÿ {Ò {Ñ  86üÿÿ {Ñ 9óùÿÿ {Ò  {Ñ  ¥7rÞ)p(õ ¥s(Æ {`,1s (Ç ,{¥ (Å (Ç +(ø XsÐ * {Ñ 9Tùÿÿ {Ò {Ñ  8þÿÿ {Ñ 9-ùÿÿ {Ò {Ñ  8çýÿÿ {Ñ 9ùÿÿ {Ò {Ñ  8Àýÿÿ {Ñ 9ßøÿÿ {Ò  {Ñ  (* o¤ &XsÐ *0 ýý2+o¯ %3 Xþþ+,oØ Œ2*(Ù ,Co¯ o¤ &Xo¯ o¤ &X8~ÿÿÿo¯ %YE+o¤ &X8=ÿÿÿX(D+ (Ú (Û 8ÿÿÿ0 HoÜ (Ý (Þ (ß (à     (E+*0 ¡sá 2+o¯ %3 Xþþ+,(F+(G+*(Ù ,X+Ÿo¯ %YEX8pÿÿÿXþ(û *0S{â râ)p(” ,sã ŒÎ(H+*o­   () Ð3(W (I+(H+*{_*{`*{a*"}_*"}`*"}a*r( }_}`}a*V(ä }b}c*Z{b{cþ(J+*²(ä }d}e}f}g}h*0 4{f{h{d(* (* {g{eXþ(=+*²(ä }i}j}k}l}m*0 -{l{i{j{k{msþ(å *’(ä }n}o}p}q*0 ){p{n(* {q{oXþ(=+*r(æ }r}s}t*0 ${r{t(* {sXþ(=+*r(æ }u}v}w*0 ${u{w(* {vXþ(=+*r(æ }x}y}z*0 ${x{z(* {yXþ(=+*r(æ }{}|}}*0 ${{{}(* {|Xþ(=+*r(æ }~}}€*0 ${~{€(* {Xþ(=+*r(æ }}‚}ƒ*0 ${{ƒ(* {‚Xþ(=+*r(æ }„}…}†*0 ${„{†(* {…Xþ(=+*r(æ }‡}ˆ}‰*0 ${‡{ˆ(* {‰Xþ(=+*r(æ }Š}‹}Œ*0 ${Š{‹(* {ŒXþ(=+*r(æ }}Ž}*0 ${{Ž(* {Xþ(=+*r(æ }}‘}’*0 ${{‘(* {’Xþ(=+*r(æ }“}”}•*0 ${“{•(* {”Xþ(=+*r(æ }–}—}˜*0 ${–{˜(* {—Xþ(=+*r(æ }™}š}›*0 ${™{›(* {šXþ(=+*r(æ }œ}}ž*0 ${œ{ž(* {Xþ(=+*²(æ }Ÿ} }¡}¢}£*0 .{Ÿ{ {¡{¢{£(* þ(ù *Ò(æ }¤}¥}¦}§}¨}©*0 4{¤{¦{§{¨{©{¥(* þ(ú *:(¢ }ç *0 5{ç oè (é (ê (÷ (ø þoë *r(ì }í }î }ï *0 {í {î {ï þ(K+*¾Ðñ(W od €®( €¯s €°*0< rè)poÏ o7 Ð(W (p+ Þ t   Þ*/0 0" oð (ñ Þt  (ò Þ* *>/£b**0 {´ {³ {² Ži3\ X/(ärú)ps zbY2 (?¤bXX3à+ ¤bX (n*0W{´ {³ {² - r*ps¤ zY£bþ 3Y+Y(n só *0M{´ {³ {² 3*£b £be¤bX(n sô (õ *0XX0 Xsö *(B ,, {÷ (ø {÷ (ù Y+µXsö *0 ø!!u¦-q!u§:Àt¨ {Ú {Ü {Û (D(ú (û (ü (ý (¬sö 8Zt¦  {Ò  {Ó  {Ñ  oš   (¨ o­    (C8ÿt§{× {Õ{Ø {Ù{Ö {Ô ,+""u :"uŸ:6(D(ú (û  (ü (ý X (D(ü (ú (û (ý   (‘(ª XXsö 8t {Ê(D(ú  (û (ü (ý  YX (D(ü (ú (û (ý   (•(ªXsö 8btŸ{É(D(ú  (û (ü (ý XY X>°(@ (D(ü (ú (û (ý (A(þ (ÿ  ,*   (•(ªXsö 8€   (“(ªXXsö +V (D(ü (ú (û (ý   (“(ªXXsö (ý (ü (ú (û sö *0.0*   (L+(n (D(ü *Z( o­ Xs *‚ s r.*p( ( s *0›  u¦:× u§:é  u§- u¨:‹r2*p ;s;zt§ {× {Õ {Ö (H ,+( ( r»*p(F( ( ( 8@ÿÿÿt¨{Ü8ÿÿÿt¦{Òoš (F*t§ {Ùu 9ÿþÿÿ{Ùt {ä9çþÿÿ{× {Õ {Ê (H( (  X(M+( (  X8eþÿÿ02  (a (H ( (N+( +(Ó *0 s o£ o *0 `  u§-2 u¨:üt¦{Ò oš o o­ X*t§ {Ùu ,[{Ùt  {×{Õ {Ê(O+X(P+X8Qÿÿÿ{×{Õ{Ö(O+,+r»*po r»*po­ X8ëþÿÿt¨  {Ú  {Ü {Û  (Q+&(O+ (Q+&*0"   (O+&*0W${ ,D { { ,5{ { { -!{ (Ö { (Ö s *r¿*ps¤ z0o(,j(R+ ( 3Mt {&rÕ*p(” ,{' (S+( *{&rß*p(” ,{'{ -*rë*ps¤ z*~;*~<*0B*st (T+(N r3+p(¨r7+p(¨(‘(0(‘(0*0B,sv (U+(N r3+p(¨r7+p(¨(‘(0(‘(0*0@r‘p(¨r;+p(¨(Kr›p(¨(‘(0(‘(0*0@r?+p(¨r;+p(¨(KrE+p(¨(‘(0(‘(0*Òr‘p(¨(Nr›p(¨(‘(0(‘(0*0Âs'YE©"YEYE~\YEk( ,Uid[ ] i [ ] i ] rK+pþboÒ (Ç þboÒ (Ç þboÒ (Ç *þ£oÒ *rO+p*rU+p*:jÿÿÿr[+p*9Qÿÿÿra+p*òo­ / ( þ+,o¯ "þþ+, X+Ç*0<-o­ 3(N+ ( +(Ó *Xo¯ (V( +Ä0.  rg+p(Ç rg+p(Ç *j{Ø 1{Ø Y(Ú **"s *0 %(z(R+Œ(^*0 !(R+Œ(^*0 •40+{Ø þþ,rk+p(¨ Ýf 9 o ,rk+p(¨ ÝC o  o\ oc ,,od Ðâ(W oc , od + (p++, oÒ (¨( 8] o\ Ð((W oR ,þ, Žiþ+,8$£(V+oK(” ,+o­ þþ,8çr3+po r7+po /+þ,+ Xþþ,8Ÿ0rp+#Y(å   {Ì   YXo¼  Xo­ 2rp+0X(å   {Ì  o­ Y    YXo¼  X(å  Y(å  {Ì  {Ì     YXo¼  s†(W+uä9tä{ u\,(¨+Y(](Z (¨ (¨(‘(0(‘(0( Þ t Þ+>tå{ rs+po¦ (Ç r½+p(Ç (¨( -Y (e+{  o  ÞIY (e Þ/t (ZrÁ+po¦ (Ç (¨ Þ*A4XmÅ cd/0®7sˆ { 9‘ { { -{ (Ö s þ(X+* rÑ+p(¨s (Y+s (Z+rî&p(¨(Kr9p(¨(‘(0(‘(0* +œÞ,/rÑ+p(¨r9p(¨(‘(0(‘(0**>sž**s **s *"s *0 Bs˜ sš ( E¦é( E”o^r2*p ws;zt {'{ -{& (Z (¨*{'{& (Z (¨([+(“(0þþo þo! *t{({)(ZoT { -  (¨* (¨([+(“(0þþo þo! *tþ{$(ZrÕ+poT (Ç r½+p(Ç  (¨(~3(6**t{*9ío\ u\ ,  (Z (Y  (¨*uT  9¬   o"   YE6µrá+p þboÒ (Ç   (¨(– (— (T* o#  o$  sœ(\+(]+{æ(^+-+.rí+pþboÒ (Ç   (¨(— (T* o%  o%  o$  o$  s s¢(]+{æ(_+-þ+,+Yrí+pþboÒ (Ç   (¨rý+pþboÒ (Ç   (¨(— (— (U*o\ oc ,eod Ðî(W oc , od +(p+,+3od Ðï(W oc , od +(p++9Ûo\ od Ðî(W oc , od +(p+,r ,p+r,p ¥ oØ  (`+s²(a+{æ [X(b+ (¨(S(“(0þþo o! Þu,oé &Ü&Ü*u 9Þ{é,s´o\ o& (q+þ+9ŽoØ (\+s¶(a+{æ[X(b+r,p(¨(S(“(0þþo o! Þu,oé &Ü&Ü*r%,p(¨(~3(6**(|(:o,o\ (<+,(6*(Z(¨{è,g o'   [  s¸((  Ži-+  þþ,* sº (É+(c+(R(“(0**(Z(O*(Z(P*tý{#!þþrî&p(¨(\+!(d+(K(`*tÿ{%(e+(f+(Q*t  (+- o\ (Ô+9Éøÿÿ{'{& rÕ*p(” ,[(S+""() "(* ##(\(\+(g+(h+{æY(i+(— (S*(Zr¯p(¨*¢bmdÑ0 GD (j+s+ {çsÞ   {å(k+Œ0(^*0ÂE9¶(´+:2(³+:J(@+:(½+:ï(¼+:Ä(º+:£(»+:x(¸+:M(¹+:"(¶+:÷(·+:Ì(>+:¡(?+:w(²+-[(µ+-0oÒ Þ#t  r1,po¦ (Ç r½+p(Ç Þ*¥£ rZ)p(V(Ç rZ)p(Ç *¥,rÈ)p*rÒ)p*¥¯ þ¯oÒ r],p(Ç *¥®þ®oÒ rp(Ç *¥¦{â(, rc,p(Ç *¥¤{â(- ri,p(Ç *¥§{â(. rm,p(Ç *¥¥{â(/ rs,p(Ç *¥¨  {â(0 rw,p(Ç *¥b  {â(1 *¥‘  {â(2 r{,p(Ç *¥©  {â(3 rô(p(Ç *¥7  r,p{â(Æ rƒ,p(Ç *¥“(Ê , r‡,p8µ(4 , r,p8¡(5 , r£,p8{ào­ 2{ào¯ gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(6   {â(1 rµ,p(Ç +{à{â(É r°p(Ç *¥’{à{â(Ë (Ì ,r‡,p*(7 ,r,p*(8 ,r£,p*{ào¯ g3sÆ(Ô+, rµ,p(Ç **r»,p*¦ °#z{ä-*{äsÈ(E*r{ásÊ(h(l+*VsÌ(h(I*0F(Û (z(m+(i*0F(Û (z(m+(j*V(z(m+(j*&so*r( }²}³}´*{²*{³*{´*&*(9 *0 RG(: (; (¨ rÅ,p(¨(‘(0r;+p(¨(‘(0(“(0*(< *0 iH(= (> (¨ rÅ,p(¨(‘(0, { + rÉ,p(¨r;+p(¨(‘(0(‘(0*^sy€ºsy€»*:( }¹*~º**(~þ*~»**(~þ*{¹*0Wþ, (~3 * **6(:o*0.Iþ,uÇ ,{¹ {¹ þ**þþ*0*,þ,þ,{¹ {¹ þ**þþ*0JuÇ ,o‚**:( }? *N{? {Ø þþ*V(@ }¿}À*0 1{¿o\ {À 4{¿( þo« *²(A }Á}Â}Ã}Ä}Å*0 *{Á{Â{Ã{Ä{Åþ(\*:(B }C *V{C Œ¦þoD *:(E }F *0L{F oG sH *:(I }J *0N{J oK sL *:(B }M *V{M Œ¦þoD *:(E }N *0L{N oG sO *:(I }P *0N{P oK sQ *:(R }S *V{S ( þoT *²(A }Í}Î}Ï}Ð}Ñ*0 *{Í{Î{Ï{Ð{Ñþ(\*²(U }Ò}Ó}Ô}Õ}Ö*0 '{Ò{Ó{Ô{Õ{Ö(`*r(V }×}Ø}Ù*Ê{Ù{ØX3*{×oW ŒXsX (Y *Ò(V }Ú}Û}Ü}Ý}Þ}ß*0W{ß{Ý{ÛX2+{Þ{ÜXþþ,*{Ú{ßoZ ŒXsX (Y *0L([ }à}á}â}ã}ä}å}æ}ç }è*0 ^{ã{â(\+{ä{å{æ{ç{è(a{á(]+{è{à{æ(^+(S*V(\ }é}ê*Š{ê{éX2*Xs] (^ *:(_ }ë*B{ëþoD *:(` }ì*0L{ìoG s¤*:(a }í*0N{íoK s¦*:(B }b *V{b Œ¦þoD *:(E }c *0L{c oG sd *:(I }e *0N{e oK sf *r(B }g }h }i *0 O{i r ,p(” ,Œ¦,++, þ¦o\ oc +,: þ¦o\ od Ð(W oc , od +(p++,s{g s¨{h  þ¦o\ rð pov Œ¦o]  þ¦o\ rspov Œ¦o] sj þ(n+*{g sk {h þ(o+*:(l }ô*ž{ôoê ,{ôoì sm (n **(\ *Jo_ rÍ,p(” *:(l }õ*ž{õoê ,{õoì sm (n ***o &*v¥oT ¥oT (ˆ *ò(p }ö}÷}ø}ù}ú}û}ü*0{PoT {ö{÷{ø{ù{ú{üoT {ûo\  4{û( o« (\( Þ t   Þsq *ai :(B }r *V{r Œ¦þoD *:(E }s *0L{s oG st *:(I }u *0N{u oK sv *r(w }x }y }z *0 ;Q( ( {x (Z{y s{ {z (p+s| *:(} }~ *N{~ Œ¦(N*( *F(€ ,*-þ*:( }*:{(g*:( }*:{(g*:( }*:{(g*–oi ,+oj ,+ok þ*î(Î,1oc ,oc ,od od þo **þo **~7*~8*~9*~:*0NR(U,C(] Ži12Ðý(W oc , od +£“oIþ(Ï***2sÖ€*:( }*sä**(ãþ*"sæ**(ãþ*sé**(ãþ*së**(ãþ*~**(ãþ*sí**(ãþ*{*>(Ö}*{*Z(Ö}}*{*{*>(Ö}*{*>(Ö}*{*>(Ö}*{*:( }*2{{*:( }*2{{*2{{*:( }*2{{*:( }*2{{*:( }*2{{*2sû€*:( }*s **( þ*s **( þ*s**( þ*"s**( þ*"s**( þ*~**( þ*s**( þ*{*>(û}#*{#*>(û}$*{$*>(û}%*{%*Z(û}&}'*{&*{'*Z(û}(})*{(*{)*>(û}**{**:( }+*2{+{#*:( },*2{,{$*:( }-*2{-{%*:( }.*2{.{&*2{.{'*:( }/*2{/{(*2{/{)*:( }0*2{0{**0ØT(D (^,4(D (_ (D (x s,(q+ (r+(*(D (T9}(D (\ Œ,+ rµps zŽi   Y25£oT o] s‚ ¤XX3Ë(r+(*(*0œV9o\ (S,(k(s+(ü*(V,(þ*(D (U,F(D (t (ƒ („ oJs*(q+ oH(r+(*('*(*0_åŒ0 ,((*Ð0(W Ð^(W (Ï,rgp(… (*Ð(W (Ï,(*(*(† *:oT s‚ *(† *:oT s‚ *0<W u§-u¨-t¦{Ñ*t§{Ô*t¨ {Ü+Ä0<W u§-u¨-t¦{Ó*t§{Ø*t¨ {Ü+Ħ(.(/,+(.(/(ª**(¨**(¨**(¨**(¨**(¨*~2*0CXu¦,9t¦ {Ñ,*{Ó,"{Ò u\ , rp(” ***>(•(0*~3*~4*~5*~6**(¬*‚(7,*(7,*þ(t+*:(‘(0*>(“(0*>(“(0*>(“(0*Bs^þ(>*Bs`þ(>*Bsbþ(>*08Y{ˆ ,. {ˆ {‰ o! (“(0+Ê*0@[{ˆ ,2 {ˆ {ˆ - {‰ *{ˆ {‰  (F*(6*6sd(G*6sf(G*6sh(G*:sj(G*¾rÑ+p(¨r9p(¨(‘(0(‘(0*frî&p(¨(K(L*0B\{ˆ ,4 {ˆ {ˆ - {‰ *{ˆ {‰ sl(u+*(6*09],) {# rä&p(¨oŠ (“(0*rgp(¨*0Fr‘p(¨r;+p(¨(v+(Kr›p(¨(‘(0(‘(0*¾r‘p(¨r›p(¨(‘(0(‘(0*¾r3+p(¨r7+p(¨(‘(0(‘(0*0‚^o‹ ,rk+p(¨(– (— *oŒ ,N {n (Ö {n (× 0rk+p(¨(– (— * oŠ Y(w+(— *(– *0b   (w+*Bs (x+*(Š *>(“(0*(Š *>(“(0*(Š *>(“(0*(Š *>(“(0*(Š *>(•(0*(Š *>(•(0*(Š *>(•(0*(Ž *frî&p(¨(‘(0*(Ž *fr;+p(¨(‘(0*(Ž **:(Ž }1*N{1(‘(0*(Š *.þ(C*( **0Ärp(¨€2sV€3sX€4sZ€5s\€6ÐX(W €8(Ñoc , (Ñod +(Ñ€7Ðñ(W €:(Óoc , (Óod +(Ó€9r»,p(¨€;rû,p(¨€<*( **~>*~?*0.P (so ,*s‘ ŒÏ (so’ *0.c (s(… (u Þ, (s(† &Ü&Ü*V!(v(C+*V!(v(C+*:j(v(C+*6(v(C+*0¥e (to“ ,*(” - o­ þ+,o¯ 0þ+,o¯ xþ+,,o­ Y YXo¼ ( ¥s(• +( ¥s(• ŒÏ (to– *0.c (t(… ({ Þ, (t(† &Ü&Ü*"(|*6(|(C+*Zs— €>s˜ €?*F}™ o &*¢{™ {™ {i Œ¦¥r(š }i *¢{™ {™ {i Œ¦¥r(› }i *(ž **:(Ó }B*ªoT rGp(” ,oq Ži{BŽiXþ**b}Ÿ }  o &*j{Ÿ (y+{  þo *F}¡ o &*r-p*Þ{¡ {¡ {o Œ¦¥rŒ¦¥r(š (t+}o *Þ{¡ {¡ {o Œ¦¥rŒ¦¥r(› (t+}o *08gs¢ Ц(W ~{ (£ (t+ (y+oœ s¤ *:}¥ ( *B{¥ þon *b}¦ }§ o &*j{¦ (z+{§ þo¨ *F}© o &*r-p*Ž{© {© {~ (š ¥>}~ *Ž{© {© {~ (› ¥>}~ *0(¦sª þ« s¬ (z+o­ s® **–oi ,+oj ,+ok þ*î(˜,1oc ,oc ,od od þo **þo **~a*~b*~c*~d* * * **0ShŒ,+ rµps zŽi   Y  2%  £\ `oÐ ¤ X X3Û*0"° `oÐ , sî(¯ **0tj,þ, Žiþ+,*þ, Žiþ+,,£ ({+ o,o-o.s° (± *(r%-p(• o– sÔ z0l(¤ ,{² *r]-ps¤ z~e*~f*0Cr o³ oê 9 o´ oµ o7 o_ (¦(” 9á o¶ o· YE1fs° 8 o¸ (¹ ¥s° 8}o¸ (¹ ¥o¸ (¹ ¥bs° +Ho¸ (¹ ¥o¸ (¹ ¥bo¸ (¹ ¥bs° (± 8îþÿÿ8èþÿÿ Þu, oé &Ü&Ü&*A &:, (¨**0l(© ,{² *r]-ps¤ z0AsoŒ (|+- oº +, oS (©*Ð!(W oR (¤*0Fso7 oŒ (|+- oº +, oS (©*Ð!(W oR (¤*0Fso7 oŒ (|+- oº +, oS (ª*Ð!(W oR (¥*0!t(¬ , {² (» _þ**0 t(« , {² (» (¼ **0ÀuoT Ð$(W (™-Ð^(W (™þ+9xo­ 1o¼ rŸ-p(” +,o­ Y YXo¼ +@o­ 1o¼ r©-p(” +,o­ Y YXo¼ ++ s½ (¾ *0Áyr±-po¿ 9˜sð sò `oÀ (}+  (~+ Œ',+ rµps zŽi%Y2:£3oÁ ¥boT s½ ¤%XX3Æ*sô`ox (+*0Ez(± sö(€+ Ži3*o¿ ,o ,o= þoX ***0L|Ð^(W (™,sø*Ð$(W (™,sú*(± ¥((+ sü*0^Ð^(W (™,+Ð$(W (™,*(¯ ,& {à _3 _.  _þþ****0 S(´,*oƒ ,+â*0  (µ*0 S(´,*oƒ ,+â*0  (·*0ùÐ^(W (™,AE r»-ps¤ z\(¢*\%rsp¤\(¢*Ð$(W (™,ME r»-ps¤ z\(¢*\%ré-p¤\%ró-p¤\(¢*(² ,3sþ ss `o' (‚+(‚+ (ƒ+**0‚(¹ s*0U…Ð^(W (™,s*(± Ži0s*rý-p(£ -s * {Ä s *0*°rý-p `oÐ ,*r.p`þop *0‚(¹ Žiþ*0”†(³oO (½,rŸ-p(Ç +9Ð$(W (™,+Ð^(W (™,+ r©-p(Ç `op ,*(r.p(• o– (` sÔ z0A(¾ s*0‰.Œ,+ r ps z(´-h `(´,.o_ (rS.p(• o– (` r ps zo_ (ru.p(• o– (` r ps z*~g*~h*~i*~j*~k*~l*~m*~n*~o*~p*~q*~r*~s*~t*~u*~v*~w*0Š(Â(™,+ (Ä(™,+ (Æ(™,+ (È(™,+ (Ê(™,+ (Ì(™,+ (Î(™,*(Ðþ(™***0O‡Ži YEÄÒàîü ?š  +  X£¤ X X2æ ŽiY YXY2!X£¤XX3ß (Õ(Ð%¤(ì+þoX *(r‘.p(• o–   rª"ps z(ÂþoX *(ÄþoX *(ÆþoX *(ÈþoX *(ÊþoX *(ÌþoX *(ÎþoX *0Žˆ(Ò-.o_ (rÙp(• o– (` rips zo= Ži3G+X£¤XX2à £ (Ö(ì+**6s(„+*0­ŠoŠ (× `Œ,+ rµps zŽi  Y2# £oc ¤XX3Ý oÔ ,+-o_  (rµ.p(• o–  (` s®   z*0‹(Ø s*0MŒŒ,+ rµps zŽi   Y  2  £o] ¤ X X3á*0AŽo=  o' (× s Ži/*£ (Ûs*00o= (Ù Ži/*£ (Ü  s*02‘o= (Ø Ži/sÅ *£(„ sÅ *0:Ži2*rõpo_ þboÒ (› rps z£*0}’/*rõpo_ þboÒ (› rps z o' (× /(ÞsÆ *o= (Þ£YsÇ (È sÆ *0]“Ðt(W (™-.o_ (rqp(• o– (` rips zo= ££sf *0”(¯ , {à _þ**0&SÐt(W (™,*oƒ ,+Ü*0E(¯ ,8 {à _3 _.  _þþ++, (Òþ***0)•s s `o' (‚+ (ƒ+*0‚(ä s*0©Š(ä `Œ,+ rµps zŽi  Y2# £oc ¤XX3Ý oÔ ,+-o_  (r/p(• o–  (` s®   z*0‹(æ s *03(¯ ,& {à _3 _.  _þþ****0&SÐt(W (™,*oƒ ,+Ü*Ö(è, þoƒ *(¶,(¸*(â,(é**0s.(è-h `(è,.o_ (rO/p(• o– (` rps zo_ (ry/p(• o– (` rps z*0}.Œ,+s z(ã-` `(ã,*o_ (rŸ/p(• o– (` s zo_ (rÃ/p(• o– (` s z*0F.Œ,+s z(Ò-*o_ (rÙp(• o– (` s z*V(ä }J}K*0 {K {J`þoÉ *(Ê *0&,oÁ ¥b oÁ ¥b /*þ*(Ë *RoÆ , þoÌ **:(Í }L*0?–(¬ ,2 {² (Î {² (» _3{L(°***:(Ï }M*0!3(Ð (Ñ {M3(o **(Ò *0<E"((rá/p(• o– r÷/ps zrgp*rä&p*(Ò *0<E"((rá/p(• o– r÷/ps zrß*p*rÕ*p*:(Ò }N*:{NoÓ *(Ô *0(— (­(Î  (­(Î /*þ*:(Z }O*0˜ (­(Õ {Oþ*(Z *"(®*V(Ö }P}Q*0 dŒ{QŒ,+ rµps z{QŽi   Y  2, {Q £{PoÉ ¤ X X3Ô*(× *",**(× **V(× }R}S*0 JA{Rr.p{S`%{R¤oÏ %¤oë ¥b*:(× }T*N{ToØ ¥b*V(ž }U}V*0 {V {U`þoÙ *(Ú **þoT *V(ž }W}X*0 {X {W`þoÛ *:(Ö }Y*:{Y(Ú*V(Ö }Z}[*0 N™{Z(Ú {[£o^   +  X£¤ X X2æ(w+*V(ž }\}]*0 žš{]ŽiY YX  Y2 X£¤XX3à o[ {\  + X£¤X X2æ %¤(w+þo[ *(Ô *0(— (­(Î  (­(Î /*þ*(Z *"(®*:(Ö }^*0 \Œ{^Œ,+ rµps z{^Ži   Y  2$ {^ £o] ¤ X X3Ü*V(ž }_}`*0 {` {_`þoÛ *01,*,o\ *(rÿ/p(• o– rps z0DÐX(W €b(›oc , (›od +(›€aÐñ(W €d(oc , (od +(€cÐ!(W o_ €eÐ!(W oŒ oÜ oÝ €f€gÐÁ(W €i(Ãoc , (Ãod +(ÀhÐÃ(W €k(Åoc , (Åod +(Å€jÐÅ(W €m(Çoc , (Çod +(Ç€lÐÇ(W €o(Éoc , (Éod +(É€nÐÉ(W €q(Ëoc , (Ëod +(Ë€pÐË(W €s(Íoc , (Íod +(Í€rÐÍ(W €u(Ïoc , (Ïod +(Ï€tÐÏ(W €w(Ñoc , (Ñod +(Ñ€v*(\ *",**:(Þ }y*:{ysG*:(U }ß *b{ß Œ¦oØ (…+*:(ä }{*F{{þo] *.{à þ*R{á {à (†+*&oâ *6~ã oâ *&oä *&(å *"(æ *&(ç *"(è *B{à þ(‡+*~ã *B{à þ(ˆ+*B{à þ(‰+*&oé *&oê *F{à þ(Š+*F{à þ(‹+*&oŒ+*:{à (+*6¥šsÑ *"(ì *6{à (Ž+*6{à (+*"¥š*"sÑ *&(í *n{á {à {à þ(+*n{á {à {à þ(+*n{á {à {à þ(‘+*n{á {à {à þ(‘+*6{à (’+*6{à (“+*07 u*-',(t+ {î {ï X(++ÏX**0#ž u*- u+-**t+{ð **04s- -(ñ *(”+ (”+ /+ X(ò *0rŸ(”+ (”+ X>¥u+9t+ {î {ï {ó (”+X1Su+,?t+{î {ï {ó  (•+  (•+(•+*r%0ps¤ z(•+ (•+*r%0ps¤ zX>£u+9t+ {î {ï {ó  (”+X1R u+,? t+{î {ï {ó  (•+ (•+(•+*r%0ps¤ z (•+(•+*r%0ps¤ z(•+*0¥¡u*-Y9‹t+ {î {ï {ó  oô /(–+ (—+*-* (–+(—+*t*{õ  oô / (ò *-*(ò *(ñ *00¢  u*- u+-R (–+*t*   ," u*-$ {õ (–+(–+* (–+*{õ +Út+   u*-  u+-$ +Ìt*  {õ (–+(–+*t+{î {ï  {î  {ï {ó {ó {ð  {ð   X /(˜+(—+* X /(˜+(—+*(•+*0¤  u*:® 9åt+ {î {ï {ó  oô /5(™+(ö (÷ (ø  (˜+sù *- sù *(™+(ö (÷ (ø  (˜+sù *t*  {õ  oô / sù *- sù *sù *sù *0†¦u*-u+- r90ps¤ zt* {õ sú *t+ {î {ï {ó  - sú * (š+(û (ü (•+sú *0µ§u*- u+-!*t* {õ oô -**t+ {î  {ï  {ó oô /(›+(—+*---*-*(š+(ü (û (•+*(›+(—+*0v¡u*-L,dt+ {î {ï {ó  oô / +¹-*+¨t*{õ  oô þ**0]¨u*-9,Lt+ {î {ï {ó (‡+ o× &+»t*{õ o× &**0 a¨u*-:,Ot+ {î {ï {ó  (‹+(œ++ºt*{õ þ(œ+**0e¬u0->,St1 {ý {þ {ÿ (+ (ž++¶t0{ þ(ž+**0h¨u*-A,Vt+ {î {ï {ó  o , (ˆ++,+µ*t*{õ þo **0h¨u*-A,Vt+ {î {ï {ó  o ,+(‰+,*+³t*{õ þo **Fs þ(ˆ+*Šs (ˆ+,s þ(‰+**0 ƒ­u*-Q,qt+ {î {ï {ó  o ,  (–++(Ÿ++£t*{õ  o ,  (–+***0 _¨u*-:,Mt+ {î {ï {ó  (›+( ++ºt*{õ (›+**0T®9u*:t+ 9Êu*:Ât+ {î {ï {î {ï {ó {ó {ð {ð   1:(™+  (ö   (÷   (¡+ (¡+(˜+*(™+  (ö   (÷    (¡+ (¡+(˜+* *t*   {õ (–+* *t* ,u*-  {õ (–+* +¬ {õ  +å0…­u*-R,st+ {î {ï {ó (¢+ (†+,  (–+++¢t*{õ  (†+,  (–+***ªo ,(–+s *(–+s *0 ™°s u*-h,~t+ {î {ï {ó (£+ ( ( (¤+( ( 8ƒÿÿÿt*{õ (¤+**05± u*-,&t+ {ï {ó +Ùt*{õ **0H²u*-',6t+ {ï {ó (¥+(= *t* {õ (= **05± u*-,&t+ {î {ó +Ùt*{õ **0H²u*-',6t+ {î {ó (¦+(= *t* {õ (= **03³(§+ -!(r‡0p(• o– rs,ps z{# *03³(¨+ -!(r‡0p(• o– rs,ps z{# *0„µ{ ,v { u*-u+-{ +Ï*{ t+ { {î {ï {ó (ñ ( ( ( 8‚ÿÿÿ( *b( ( (©+s *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z0Q¶{ ,B{ { -(ª+* { u*,{ t*{õ *r1ps¤ z(«+*0t·{ ,Q{ { -* { u*,&{ (©+( { { þþ*r•1ps¤ z( { { þþ*0¹(¬+s s *0 iº{ 9R { 9C {   u*:Ñ u+: { u*-#u+-W{ {  +’{ t*{ {õ (ñ ( ( 8Uÿÿÿ{ t+{ {î {ï {ó (ò ( ( 8ÿÿÿ{ t*{ u*-<u+:~{ {õ (ñ ( ( 8§þÿÿ{ t* { { {õ  {õ   oô   , * 8Yþÿÿ{ t+{ï -a{ { {õ {î {ó  {ï  oô   , * ( ( 8âýÿÿ{ {î {ï {ó  8•þÿÿ{ t+{ï :f{ u*-Su+:«{ {î {ï {ó (ò ( ( 8>ýÿÿ{ t*{ { {î {ó {õ   oô   , * ( ( 8Úüÿÿ{ t+  {ï -a{ { {î {ó  {î  {ó   oô   , * ( ( 8cüÿÿ{  {î  {ï  {ó  8ýÿÿ{ u*-0u+-I{ {î {ï {ó  8˜þÿÿ{ t*{ {õ  8düÿÿ{ t+ {  {î  {ï  {ó  8üÿÿ*{ ,**¶--**-*( ( ( ( (­+*0Y¨u*-5,Gt+ {î {ï {ó  (®+(2 +¿t*{õ (2 **6(‚ (®+*0»sÞ s þ(‡+*0¼(+ (¯+ (°+*Šoê ,o (–++à*0+½oŒ (±+ Þu , oé &Ü&Ü* >s (²+*V( } } *R{ { (U+*V( } } *R{ { (U+*V( } } *^{ { (U+þ*{ *{ *"} *"} *V( } } *b} } o &*J{ { (³+*^{ { (³+Œ¦*J{ { (´+*b{ { (µ+( * *V(c }! }" *Ê{! {" {Ø ¤¦{" {" {Ø X(Ú *:(# }$ *>{$ (R+*0>¾oê oê 3)-*o o  (6+, +Æ**:(% }& *F{& þ(¶+*V(' }( }) *j{) {( o (·+*(* *&(+ *(* *&(, *.{- þ**o. *R{/ {- (¸+*R{/ {- (¹+*&o0 *R{/ {- (º+*B{- þ(»+*B{- þ(¼+*0À{- (¼+ ,{1 *s2 zB{- þ(½+*&o3 *&o4 *B{- þ(¾+*f{/ {- (¿+s5 *Z(6 {- þ(À+*Z(7 {- þ(Á+*Js8 ¥M(Â+*Ns9 (Ã+(Ä+*Ns: (Ã+(Å+*"(; *"(< *0€(Z+ (Æ+s= *6{- (Ç+*6{- (È+*~> *(? *V( ( s *:(@ }A *0'Q( ( {A (É+,( **:(@ }B *0'Q( ( {B (É+,( **0>à uR- uS-*X*tS {C {D X(Ê++Â0#Ä uR- uS-**tS{E *06s- - (F *(Ë+ (Ë+ /+ X(G *0 §Å(Ë+ (Ë+ X>¾uS9¨tS {H {C {D {I (Ë+X1auS,MtS{H {C  {D  {I   (Ì+   (Ì+(Ì+*r%0ps¤ z(Ì+ (Ì+*r%0ps¤ zX>¾uS9¨tS {H {C {D {I (Ë+X1auS,MtS{H {C  {D  {I    (Ì+  (Ì+(Ì+*r%0ps¤ z (Ì+(Ì+*r%0ps¤ z(Ì+*0 ÑÇuR-uS-E(F *tR {J oô / (G *-(F *(G *tS {H  {C  {D  {I {E oô /(Í+(Î+*- (G *(Í+(Î+*0ŸÈuR-uS-0s2 ztR {K {J oô -*s2 ztS{H {C {D {I oô /8uÿÿÿ -*8aÿÿÿ0¡ÈuR- uS--*tR {K {J oô -(L **tS{H {C {D {I oô /8xÿÿÿ -(L *8_ÿÿÿ¾(Ï+,(Í+sM *(Í+sM *0 ®ÊsM   uR-  uS-!*tR {J {K (Ð+*tS {H {C {D {I (Ñ+ (N (O (Ð+(N (O 8Rÿÿÿf(Ï+, (Í+**0 ËuR- uS-*tR {J {K (Ò+*tS {H {C {D {I (Ó+ (Ò+8ÿÿÿ0£Í  uR- uS-&r90ps¤ ztR {J {K sP *tS {H {C {D {I -  sP *(Ô+(Q (R (S  (Ì+sP *0ÈÎuR- uS-!*tR {J oô -**tS {H  {C  {D  {I oô /(Õ+(Î+*-4-*-*(Ô+(S (Q (R (Ì+*(Õ+(Î+*0~ÏuR- uS-*tR {J oô þ*tS {C {D {I oô / +–-* 8‚ÿÿÿ0rÐuR- uS-*tR {J {K (Ö+&*tS {H {C {D {I (»+(Ö+& +Ž0‡ÑuR- uS-*tR {J {K þ(×+*tS {H {C {D {I (¼+-(×+-  8ÿÿÿ**0€ÐuR- uS-*tR {J {K þ(Ï+*tS {H {C {D {I (½+,+ (Ï+,* 8€ÿÿÿ0€ÐuR- uS-*tR {J {K þ(Ï+*tS {H {C {D {I (¾+, (Ï++,  8‚ÿÿÿ*0ŠÖuX- uY-$*tX {T {U o£ (V *tY {W {X {Y {Z {[ (Ø+o£  (Ø+(\ *0ŽØuR- uS-'*tR {K {J (+(] *tS {H {C  {D  {I {E (¿+(+(¿+(^ *0ÙuR- uS-$*tR {K {J þo_ *tS {H {C  {D  {I (Á+o_ 8ÿÿÿ0Ýu\- u]-$*t\ {` {a þob *t] {c {d  {e  {f (Ù+ob 8ÿÿÿ0Þ  uR-  uS-P*tR {K {J oô oô  0 þþ+, þ(Ú+**tS{H {C {D {I oô oô  /(Û++ 0 þþ+, (Ú++ / 8þþÿÿ *0%ß   oô 3*þ(Û+*0{ÐuR- uS-"*tR {J {K sg (h *tS {H {C {D {I sg (Ü+(h 8…ÿÿÿ6(i (Ü+*6(Ç+(Ý+*>sj (Þ+*03àoê ,(oÕ (Ö (× (Í++Ï*05á  +&£Ð (Ö (×  (Í+ X Ži2Ô*0[ãu` ,  (Æ+*uÜ ,   (ß+*oÔ (à+Þu, oé &Ü&Ü*1 >0»sÞ sk þ(»+*0‘å{l 9€ {m uR-uS-{l +Ì*{m tS {H {l {C {D {I  (F (n (n (n 8uÿÿÿ(o *b(o (n (á+sp *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z0bæ{q ,S{r {l -(â+* {m uR,${m tR {K {J  ss *r2ps¤ z(ã+*0tç{q ,Q{r {l -* {m uR,&{l (á+(t {r {l þþ*r˜2ps¤ z(u {r {l þþ*0é(ä+sv sw *:(x }y *0Q( ( {y (.+*V(z }{ }| *â{{ {| {Ø s ¤ {| {| {Ø X(Ú *{} *{~ *"}} *"}~ *V( }} }~ *b} }€ o &*J{€ { (å+*^{€ { (å+Œ *J{€ { (æ+*b{€ { (ç+(‚ * *0)ë (ƒ („ sg (× (Ö sg *0ƒìoê oê 3n-*o… (ƒ o… (ƒ (6+,,o… („ o… („ (è++,8ÿÿÿ**(† *&( *:(‡ }ˆ *^s‰ {ˆ ¥ (é+*(Š *&( *:(‡ }‹ *^sŒ {‹ ¥p(ê+*:( }Ž *0?í{Ž {ý ( ( o ,*( ( þ(ë+*( *~( Œ¦( Œ§sü**(% **(% **(% **(% *0£/!(r6"p(• o– r3ps z/!(r6"p(• o– r!3ps z/!(r6"p(• o– r'3ps z/!(r6"p(• o– r-3ps zs‘ *0ï(ì+  Ú 2jÚ 2TÚ29Ú2(’ XX3ãXX3ÇX X3¬X X3–*0 “ï(ì+  Ú ?yÚ 2`Ú2EÚ2)(í+(’ XX3×XX3»X X3 X X@‡ÿÿÿ*6(” *>(’ **(% **(% **(% *.(• *6(– *0|/!(r6"p(• o– r3ps z/!(r6"p(• o– r!3ps z/!(r6"p(• o– r'3ps zs— *0añ(î+  Ú 2KÚ 25Ú2(– XX3æX X3ËX X3µ*0 kñ(î+  Ú 2UÚ 2?Ú2$(ï+(– XX3ÜX X3ÁX X3«*0—òŒr,+ rµps z(% (% (% Ú 2XÚ2=Ú2!(• o× &XX3ßXX3ÃX X3¨*0 ¯ôŒr,+ rµps z(% (% (% (ð+ Ú2dÚ2H Ú 2,   (• o£ (™  X  X3ÔXX3¸XX3œ *0 òŒr,+ rµps z(% (% (% Ú 2^Ú2CÚ2'(• (ñ+&XX3ÙXX3½X X3¢*0µôŒr,+ rµps z(% (% (% (ð+ Ú2jÚ2N Ú 22    (• (ò+(™  X  X3ÎXX3²XX3– *Ži*0Iõ/(ärú)ps (Æ+&+0  Y 2oš ¤0X X3è*0./!(r6"p(• o– rú)ps z0*0Lö/!(r6"p(• o– rú)ps z0  Ú  2 ¤0 X X3î*zŒÔ,+ rµps zŽiþ*"0*0ŒÔ,+ rB ps zŒÔ,+ r5ps z/!(r6"p(• o– r33ps z/!(r6"p(• o– rú)ps z/!(r6"p(• o– rK3ps zXŽi1!(rá/p(• o– rú)ps zXŽi1!(rá/p(• o– rú)ps z(¦ *‚Ži2*X£ÔŽiX+à002Ži/(£Ô Ži (¦ XX+Ñ*0÷(ó+0 (ô+*06ùŒu,+ rc3ps zuv ,  (õ+*(ö+(õ+*0QûŒÔ,+ rµps zŽi w  Y  2  £0o› ¤w X X3â(÷+*0TüŒÔ,+ rq3ps zŒÔ,+ r3ps zŽi Ži X0 (¦ (¦ *ŽŒÔ,+ rµps zo ¥Ô*zŒÔ,+ rµps z(ø+*zŒ,+ r3ps z(ù+*0DsŒÔ,+rµps (Æ+&Ži  Y 2£0o× &X X3è*0RýŒÔ,+rµps (Æ+&Ži 1  Y  2  £0o£ ¤1 X X3â*0‘ÿŒÔ,+ rq3ps zŒw,+ r3ps z(œ Ži Ži.!(rZ p(• o– r3ps zY 2$£0£1o &X X3Ü*0£ŒÔ,+ rq3ps zŒw,+ r3ps z(ž Ži Ži.!(rZ p(• o– r3ps z2 Y2, £0£1oŸ ¤2XX3Ô *0 ¥ŒÔ,+ rq3ps zŒw,+ r3ps z(  Ži Ži.!(rZ p(• o– r3ps z2 Y2. £0£1o¡ ¤2XX3Ò *0FŒÔ,+ rµps z(¢ Ži  Y  2  £0o£ & X X3ç*0“ŒÔ,+ rq3ps zŒw,+ r3ps z(¤ Ži Ži.!(rZ p(• o– r3ps zY 2&£0£1o¥ &X X3Ú*0\ ŒÔ,+ rµps z(¦ Ži 1 Y 2%£0o§ ¤1X X3Û*¢/!£0o ,*X+Û*0+ ŒÔ,+ rµps zŽi    (ú+*Ú/.£0£1o¨ ,*X+Í*0vŒÔ,+ rq3ps zŒw,+ r3ps z(© Ži Ži.!(rZ p(• o– r3ps z (û+*¢2*£0o ,X+Û*0+ ŒÔ,+ rµps zŽi    (ü+*Ú2*£0£1o¨ ,X+Í*0vŒÔ,+ rq3ps zŒw,+ r3ps z(© Ži Ži.!(rZ p(• o– r3ps z (ý+*0FŽi2(r—3p(• o– sª z£0o« ,{¬ *X+º0$ŒÔ,+ rµps z  (þ+*0)Ži2*£0o« - X+Ù*0$ŒÔ,+ rµps z  (ÿ+*0UŒÔ,+ rµps zs­  +'£0o« ,  {¬ o® +X Ži2Óo¯ *0NŒÔ,+ rµps zs°  + £0 o , o± +X Ži2Úo² *0fŒÔ,+ rµps zs° s°  +'£0  o ,  o± + o± X Ži2Óo² o² s³ *0EŽi2(r—3p(• o– sª z£0o ,£0*X+»0$ŒÔ,+ rµps z  (+*ÊŽi2*£0o , £0(= *X+Î0$ŒÔ,+ rµps z  (+*0 ŒÔ,+ rq3ps zŒw,+ r3ps zŽi Ži.!(rZ p(• o– r3ps zÐ Y 22£0£1sg ¤ÐX X3Î*0êŒÔ,+ rq3ps zŒw,+ r3ps zŒ„,+ rÃ3ps zŽi Ži.!(rZ p(• o– r3ps zŽi.!(rZ p(• o– rÃ3ps z… Y 2>£0£1£2s´ ¤…X X3Â*0zŒ`,+ rµps zŽi 0 1 Y 2=£Ð(Ö (× ¤0¤1X X3Ãsµ *0˜Œ‡,+ rµps zŽi 0 1 2 Y2Q£…(¶ (· (¸   ¤0¤1 ¤2XX3¯ s¹ *0JŒÔ,+ rµps zŽi 0  Y  2 YY £0¤0 X X3ä*0O!ŒÔ,+ rµps z(º  Ži Y 2£0o» X X3ã*0O#ŒÔ,+ rµps z(¼  Ži Y 0£0o½ Y Y3ã*0˜%ŒÔ,+ rq3ps zŒw,+ r3ps z(7  Ži Ži.!(rZ p(• o– r3ps zY0&£0£1o_ YY3Ú*0˜'ŒÔ,+ rq3ps zŒw,+ r3ps z(6  Ži Ži.!(rZ p(• o– r3ps zY2&£0£1o¾ XX3Ú*0D(ŒÔ,+ rµps z(¼     0 £0o½ Y Y3ç*0b)ŒÔ,+ rµps z(¼  XY(+  0(£0o½ Y¤1Y Y3Ø*0d+Œw,+ rµps z(¿  XY(+  2*£1oÀ YX¤0X X3Ö*0(WŒÔ,+ rµps zŽi Y(+*0(WŒÔ,+ rµps zŽi Y(+*0h-ŒÔ,+ rµps zŽi -(ãrµps z(Á £0 Y 2£0o X X3ã*0 CWŒÔ,+ rµps zŽi -(ãrµps zYY£0(+*0j.ŒÔ,+ rµps zŽi /*39£0£0(+ 1£0 £0¤0¤0**(+( +*‚ŒÔ,+ rµps z( +*~ŒÔ,+ rµps z( +*0(÷ŒÔ,+ rµps z( + ( +*0(÷ŒÔ,+ rµps z( + (+*0'÷ŒÔ,+ rµps z( + (+*zŒÔ,+ rµps z(+*zŒš,+ rB ps z(Ù+*0@2(r—3p(• o– sª z£0o ,*X+À0+ ŒÔ,+ rµps zŽi    (+*¶2*£0o ,(å *X+Ó0+ ŒÔ,+ rµps zŽi    (+*~ŒÔ,+ rµps z(+*0E/ŒÔ,+rµps (Æ+&(+  + £0  (+ X Ži2ä*0K0ŒÔ,+rµps (Æ+&(+  + £0o£  (+ X Ži2Þ*0l/ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0  +£0   (5+, +X Ži2Ý*0ƒ1ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0 o£  +,£0  o£ (+, +X Ži2Î*0l/ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0  +£0   (3+, +X Ži2Ý*0ƒ1ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0 o£  +,£0  o£ (+, +X Ži2Î*0Á2ŒÔ,+rµps (Æ+&¥š Œš,+rB ps (Æ+&oŒ (+ oê , o (+ X+Ú-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*G_¦0Ç3ŒÔ,+rµps (Æ+&¥š Œš,+rB ps (Æ+&oŒ (+ oê ,$ o o£ (+ X+Ô-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*Ge¬0ºöŒÔ,+ rµps z/!(r6"p(• o– rÑ3ps z/!(r6"p(• o– rú)ps zXŽi1!(rá/p(• o– rú)ps z0  Y  2  X£0¤0 X X3æ*&£0**¤0*0‚4ŒÔ,+ r5ps z/!(r6"p(• o– rK3ps z/!(r6"p(• o– rú)ps z XY 2¤0X X3î*0É7ŒÔ,+ rµps zŽi Y  1  sÅ þÆ sÇ (È 2"£, X+XX3Þ1  23 £,  £1¤1X+ X  X3Í*0D8ŒÔ,+ rµps zŽi w sÉ þÊ sÇ (È (÷+*0?9ŒÔ,+ rµps zŽi 1 sË þÌ sÇ (È *0F:ŒÔ,+ rµps z(¦ Ži 1 sÍ þÎ sÇ (È *04;ŒÔ,+ rµps zŽisÏ þÐ sÇ (È *0;<ŒÔ,+ rµps z(¢ ŽisÑ þÒ sÇ (È *0$=0 sÓ þÔ sÇ (È *0ì>ŒÔ,+ rµps zŽi Y  sÕ þÖ sÇ (È 2"£, X+XX3Þ0Y0    2J £, £0¤0X+ £0¤0X X   X3¶s³ *’}× }Ø }Ù }Ú ( *0A?{× {Ø £¦o ,$ {o {Ù ¤{Ú ¤§**r}Û }Ü }Ý ( *0 %{Ý {Û {Ü £¦oÞ ¤š*r}ß }à }á ( *0 %{á {ß {à £¦o ¤§*r}â }ã }ä ( *0 &{ä {ã {â £¦oå ¤§*V}æ }ç ( *j{æ {ç £¦o½ &*V}è }é ( *n{é {è £¦oê &*V}ë }ì ( *j{ì {ë oí ¤¦*r}î }ï }ð ( *0 %{ð {î {ï £¦o  ¤*"oñ *"(À+*"(+*&(+*&(+**(+*"(ø+*"(ù+*(‚ *01{Þ -"(rmp(• o– r3ps z{/ *01{Þ -"(rmp(• o– r3ps z{Þ *.{Þ þ*&( +*0Y@{Þ ,0 {Þ þþ,{Þ {/ -*Y+È(rç3p(• o– rps z0TA{Þ ,E {Þ {/ o« , {¬ (h +¾+³( +*:(j (!+**("+*&(#+*j0*Y(2 +æ04/!(r6"p(• o– rú)ps z(‚ ($+*0uC{Þ ,d {c ,7 {c {Þ {ò {/ o & +·(r 4p(• o– r;4ps z{c -Õ*0D(œ  (%+*0{C{Þ ,j {c ,= {c {Þ {ò {/ o¥ &X +±(r 4p(• o– r;4ps z{c -Õ*0E(¤  (&+*0¸H{Þ 9• {c ,h {ó ,^ {ó {c {Þ {ô {ò {/ oõ    (ö 8ƒÿÿÿ(r 4p(• o–   rG4ps z{c -Õ{ó -Í('+*V(÷ (ø ((+*0ŽI{Þ ,v {c ,I {c {Þ {ò {/ o¡ X (ù +¥(r 4p(• o– r;4ps z{c -Õ()+*V(  (ú (*+**(++*0-J{Þ ,# {Þ {/ o» +Õ*0K{Þ -*(º  (,+*0?L{Þ , {/ {Þ (-+*(rmp(• o– r3ps z0=M{Þ ,. {Þ {/ o»   (h +Ê( +*0K(º  (j (h (.+*0xC{Þ ,f {c ,9 {c {Þ {ò {/ o¾ +µ(r 4p(• o– r;4ps z{c -Õ*0N(6  (/+*0'O   0£0o½ Y Y3ç*0 6P(¼ {Þ 9! {Þ {Þ 9û{Þ {Þ {Þ 9À{Þ {Þ {Þ ,x {Þ {Þ {Þ -E{/  {/ {/ {/ o½ o½ o½ þo½ *(ù+  Ži   Y(0+* {/ {/ {/ o½ o½ þo½ *{/ {/ o½ þo½ *{/ þo½ **0 QQ{Þ -"(rmp(• o– r3ps z(Á (ù+ Ži  Y Y£0(1+*0;R (j (h    0! £0o½ (h Y Y3ß*0eS{Þ ,Q {Þ {Þ -!{/ (œ+(j (h (h *(¼ (ù+ Ži Y(2+*(j (h *0{T(ù+ (3+ Ži Ži  .#(r 4p(• o– r;4ps zY0(£0£1o_ YY3Ø*0çU(7 {Þ 9¹ {Þ {Þ 9\{Þ {Þ {Þ 9Ï{Þ {Þ {Þ :®{c 9¢{c {c 9{c {c {c ,v{c {c {c -_{ò {ò {ò  {/  {/  {/      o_ o_ o_ þo_ *(4+*{c ,í{c {c ,Û{c {c {c -Ä{ò {ò {/  {/    o_ o_ þo_ *{c 9tÿÿÿ{c {c :_ÿÿÿ{ò {/   o_ þo_ *{c :*ÿÿÿþo_ *0 sC{Þ ,a {c ,4 {c {Þ {ò {/  þ(5+*(r 4p(• o– r;4ps z{c -Õ*0yC{Þ ,g {c ,9 {c {Þ {ò {/ o¨ ,  +·*(r 4p(• o– r;4ps z{c -Ô*†{Þ - {c -*(© (6+*&(7+*&(8+*0yC{Þ ,g {c ,9 {c {Þ {ò {/ o¨ ,* +µ(r 4p(• o– r;4ps z{c -Ô*†{Þ - {c -*(© (9+*0FJ{Þ ,$ {Þ {/ o ,*+Ô(r—3p(• o– sª z03J{Þ ,) {Þ {/ o ,(= *+Ï*00V{Þ ,& {Þ {/ o« -+Ô **0MV{Þ ,+ {Þ {/ o« , {¬ *+Í(r—3p(• o– sª z&(:+*&(;+*"(<+*"(=+*&(>+**(?+*&(@+*00W{Þ , {Þ {Þ -*(ù+ (A+(ø+*0/W{Þ , {Þ {Þ -*(ù+ (B+(ø+*"(C+*"¥š*0KJ{Þ ,) {Þ {/ o ,*X+Ï(r—3p(• o– sª z0 X (D+*08J{Þ ,. {Þ {/ o ,(å *X+Ê*0 X (E+*0TY¥š oŒ (+ oê , o (+ +à Þu, oé &Ü&Ü**90ZZ¥š oŒ (+ oê , o o£ (+ +Ú Þu, oé &Ü&Ü*0?0™Y¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (3+, +Ü+Ù Þu, oé &Ü&Ü*+S~0¶[¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o  o£  oê ,/o o£ (+, +Ì+É Þu  ,  oé &Ü&Ü*+p›0™Y¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (5+, +Ü+Ù Þu, oé &Ü&Ü*+S~0¶[¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o  o£  oê ,/o o£ (+, +Ì+É Þu  ,  oé &Ü&Ü*+p›0¥2¥š Œš,+rB ps (Æ+&oŒ (+ oê , o (+ X+Ú-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*+_Š0«3¥š Œš,+rB ps (Æ+&oŒ (+ oê ,$ o o£ (+ X+Ô-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*+e.þ(F+*N(ù+(+(ø+*:(G+(û *0=4(” ,rp+  o­ Ú 2o¯ o¤ &X X3è*0>4(” ,rp+  o­ Ú 2o¯ (H+&X X3ç*08\(” ,rp+ o­ sý sØ(ÌþoÒ *08\(” ,rp+ o­ sý sÚ(ÍþoÒ *08\(” ,rp+ o­ sý sÜ(ÌþoÒ *0Z]/!(r6"p(• o– rú)ps zsý  Ú  2 oO oÖ  X X3çþoÒ *0m]/!(r6"p(• o– rú)ps z(” ,rp+ o­ sý  Ú  2oÖ  X X3íþoÒ *ªo­ 2*o¯ oþ , Ö+Ù*0"_(” ,rp+   (Ó*ªo­ /o¯ oþ ,*Ö+Ù*0"_(” ,rp+   (Õ*j(” ,rp+o­ *V(’ }®}¯*0Ø{¯{®oÿ o“ *V( }°}±*0Ø{±{°(I+o“ *V(’ }²}³*0Ø{³{²o oÖ *6s (J+*:s (K+*"(L+*&(M+*2( ¥š*6s (J+*04/!(r6"p(• o– rú)ps zs (J+*0S`Œš,+ rB ps zoŒ oê ,o o× &+è Þu , oé &Ü&Ü&*:0@aŒš,+ rB ps zoŒ (N+ Þu , oé &Ü&Ü* (0ZbŒš,+ rB ps zoŒ  oê ,o (O+&X +ã Þu , oé &Ü&Ü&*#A0\cŒš,+ rB ps zoŒ  - oê +,o o +à Þu , oé &Ü&Ü*&D0\cŒš,+ rB ps zoŒ  , oê +,o o +à Þu , oé &Ü&Ü*&D0£eŒš,+ rS4ps zŒÕ,+ rc4ps zoŒ o oê , oê +,o o (Ö+&+Õ Þu, oé &Ü&Ü Þu, oé &Ü&Ü&*;/j4S‡:s (K+*>s (P+*’Œš,+ rB ps zs (Q+*&(R+*’Œš,+ rB ps zs (S+*’Œš,+ rB ps zs (S+*,+ rS4ps zŒÕ,+ rc4ps zs (T+*’Œš,+ rB ps zs (S+*ꌚ,+ rS4ps zŒÕ,+ rc4ps zs (U+*0VŒš,+ rS4ps zŒÕ,+ rc4ps zŒ·,+ rs4ps zs (V+(W+*ŽŒ ,+ rB ps zs (J+*0cfŒš,+ rB ps zoŒ  þþ, oê +,o o« +Ù Þu , oé &Ü&Ü*-K0CŒš,+ rB ps z(X+ ,{¬ *(r—3p(• o– sª z0sgŒš,+ rB ps zoŒ  þþ, oê +,o  o , (= +Ï+Ì Þu, oé &Ü&Ü*:X0CŒš,+ rB ps z(Y+ ,{# *(r—3p(• o– sª z0 [hŒš,+ rB ps z/!(r6"p(• o– rú)ps z-(­+*þ0s *0ŽjŒš,+ rB ps zuÔ ,  Žiþ*u ,  {Þ þ*u»,o þ*oŒ oê þÞu, oé &Ü&Ü*cqzŒš,+ rƒ4ps z(Z+*0”kŒš,+ rB ps zuÔ , Ži*u ,  oñ *u»,þo *oŒ oê , X+îÞu  ,  oé &Ü&Ü*\w0UlŒš,+ rB ps zoŒ  oê ,o ([+ +ç Þu , oé &Ü&Ü*=0smŒš,+ rB ps zoŒ oê -(ârB ps zo oê ,o (\+ +ç Þu , oé &Ü&Ü*=[6s (K+*ꌚ,+ rS4ps zŒš,+ rc4ps zs (]+*:(^+(_+*0]noê oê 3+ ,+ ,*-+þ,*o o (+ , *+£0ˆpŒš,+ rS4ps zŒš,+ rc4ps zoŒ oŒ (`+ Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;P49m"¥š*0‰qŒš,+ rB ps zu , *uÔ ,  (ø+*oŒ (‚ oê ,o (2 +ä(À+ Þu, oé &Ü&Ü*@-mŽŒÔ,+ rB ps zs (J+*0‘rŒš,+ rB ps zuÔ , o ¥Ô*u ,  (ù+*oŒ s° oê ,o o± +æo² Þu, oé &Ü&Ü*J+u6s (J+*0+4Œš,+ rB ps zþ0s *0+4Œš,+ rB ps zþ0s *0 ,sŒš,+ rB ps zþ1s *0@oê ,o o ,*X+Ú(r—3p(• o– sª z0HtŒš,+ rB ps zoŒ   (a+ Þu, oé &Ü&Ü*-¶oê ,"o o ,(å *X+Õ*0HuŒš,+ rB ps zoŒ   (b+ Þu, oé &Ü&Ü*-J{Ø X]£0*0 KŒš,+ rB ps z0!(r6"p(• o– r“4ps zs *0pwo 2e{ ,+oŒ (! (" (# { o$ -* {% oê ,o þo± *oé (" (# **0Io /o& Xs' (( *(c+o /o& Xs' (( **0>yo) { ,$ {* ,{* {% ¥oé +(# *0H{Œš,+ rB ps zs° s+ s, (d+ s- s. ¥š*ŽŒš,+ rB ps zs/ (J+*:s0 (e+*0 <}Œš,+ rB ps zþ0þÌþ0s1 *0 =Œš,+ rB ps zþ0þÏþ0s2 *’Œš,+ rB ps zs3 (L+*ŽŒš,+ rB ps zs4 (L+*’Œš,+ rB ps zs5 (f+*0K€oŒ (+ oê , o  (+ +â Þu, oé &Ü&Ü*(00QoŒ (+ oê , o o£  (+ +Ü Þu, oé &Ü&Ü*.60™‚Œš,+rB ps (Æ+&oŒ (+  oê ,o (+ X +Ü -(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*$Z~0ŸƒŒš,+rB ps (Æ+&oŒ (+  oê ,"o o£ (+ X +Ö -(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*$`„0€Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (5+, +ß+Ü Þu, oé &Ü&Ü*$Pt0¬„Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o o£ oê ,-o o£  (+,  +Î+Ë Þu, oé &Ü&Ü*$m‘0€Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (3+, +ß+Ü Þu, oé &Ü&Ü*$Pt0¬„Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o o£ oê ,-o o£  (+,  +Î+Ë Þu, oé &Ü&Ü*$m‘0+4Œš,+ rB ps zþ0s6 *0 ,4Œš,+ rB ps zþ0s7 *0 ,4Œš,+ rB ps zþ0s8 *0°…Œš,+ rS4ps zŒÕ,+ rc4ps zoŒ o , oê +, oê +,o o (Ï++Ë Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;=x4a•0°…Œš,+ rS4ps zŒÕ,+ rc4ps zoŒ o - oê +, oê +,o o (Ï++Ë Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;=x4a•0WaŒš,+ rB ps zoŒ oê , o Þ&(ârB ps zu , oé &Ü&Ü*!?0kmŒš,+ rB ps zoŒ oê ,o oê , o +î Þ&(ârB ps zu , oé &Ü&Ü*5S0…†Œš,+ rB ps zoŒ oê ,4o oê ,!(r©4p(• o– rB ps z Þ)(ârB ps zu, oé &Ü&Ü*Lj:(9 }: *V{: o; þoÙ *V(9 }< }= *N{< {= (g+*:(9 }> *:{> (h+*V(9 }? }@ *j{? Y(å {@ (h+*V(9 }A }B *j{A {B oX þoC *r(9 }D }E }F *–{D {E oX {F oG þ(i+*:(I }J *:{J (j+*:(K }L *:{L (k+*:(K }M *:{M (l+*:(N }O *>{O (m+*:(K }P *:{P (n+*(Q *&s *(R *0‡(S (T sU *:(9 }V *J{V oØ (o+*ò}W }X }Y }Z }[ }\ }] (^ *0 ;ˆ{\ YE +8ã8Ã8°8ò{X oÙ }Y }\ {W Y(™o_ }[ }\ {[ oê ,q{[ o` }Z {Y oê -+(rÓ4p(• o– sÔ ,¥+z&+}\ {Y oí }] *}Z 8‚ÿÿÿ}\ {[ (p+}[ }\ {Y (q+}Y }\ þ¦}] *0­‰ {\ YE+8ˆ{\ E ++5++++)}\ {[ (p+}\ {Y (q+}\ þ¦}]  Þ t   Þ&8^ÿÿÿþ,z*t ê{\ E +++ +++****"{] *0 {W {X þ¦sa *:(9 }b *v{b oc Œ§¥@(r+*:(d }e *J{e oÙ (s+*V(d }f }g *0&Œ{f oÙ (s+ {g sh (i *:(9 }j *J{j sk ¥*:(9 }l *J{l sm ¥*Ò}n }o }p }q }r }s (^ *0å{r YE +8Š88¦sÞ }p {o oÙ }q }r {p {Ø {n /{q oê +,5{p {p {Ø X(Ú }r {q oí }s *+¦}r {q (q+}q }p }r þ¦}s *0’‰ {r YE+8m{r E + ++++}r {q (q+}r þ¦}s  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{r E + + +++***"{s *0 {n {o þ¦st *Ò}u }v }w }x }y }z ({ *0{y YE +8»8‡8Ð{u oÙ }v }y {v oê 9†{v oí s) }w {v oê ,Y{v oí }x }y {w {¼ {x s. }z *{w {x (¿ þ¦}x +š}w +}y {v (q+}v }y }z *0 {y YE+8h{y E + +!+ +++}y {v (q+}y }z  Þ t    Þ&8~ÿÿÿþ,z*Tp Ò{y E + ++ +++***"{z *0 {u þ¦s| *ò}} }~ } }€ } }‚ }ƒ (^ *0{‚ YE ++=8¥8œ8Á{~ s) }€ }‚ {€ {¼ }ƒ *{ oX } }‚ { oê ,I{€ {} {€ {¼ { o„ (t+(¿ }‚ {€ {¼ }ƒ *+ª}‚ { (u+} }€ }‚ þ¦}ƒ *0œ‰ {‚ YE+8w{‚ E ++$+ +++}‚ { (u++}‚ þ¦}ƒ  Þ t   Þ&8oÿÿÿþ,z*c ê{‚ E +++ +++****"{ƒ *0 %{} {~ { þ¦s… *0D}† }‡ }ˆ }‰ }Š }‹ }Œ } (Ž *0 §{Œ YE +8F88p{† ¦}ˆ {† YsÞ }‰ sÞ }Š {‡ oÙ }‹ }Œ {‹ oê 9â{ˆ {Š {Ø {‹ oí ¤¦{Š {Š {Ø X{† ](Ú {‰ {Ø -v}Œ {† /(ärú)ps z{† ¦  {† Y  2) {† {ˆ {Š (v+¤¦ X X3×} *8-ÿÿÿ{‰ {‰ {Ø Y(Ú 8ÿÿÿ}Œ {‹ (q+}‹ }Š }‰ }ˆ }Œ } *0‡ {Œ YE++e{Œ E + ++++}Œ {‹ (q+}Œ }  Þ t    Þ&8„ÿÿÿþ,z*Qj Æ{Œ E + + +++***"{ *0 {† {‡ s *r( }‘ }’ }“ *0 B‘ {“ (… {‘ {’ {“ (w+ Þ,{“ († &Ü&Ü*),V(¢ }” }• *0=’ {• (… {” {• (x+ Þ,{• († &Ü&Ü*$':(9 }– *>{– þoÙ *V(c }— }˜ *0_•{— o s™  {˜ oš s› (œ ( , o *sü {˜  ož o *(Ÿ *>(  o¡ *(¢ *0'–(£ {¤ (  ¥(y+s¥ *V(¦ }§ }¨ *0F˜(© sª {§ s« {¨ (z+s¬ ¥({+s­ ¥(|+*ò}® }¯ }° }± }² }³ }´ (^ *0#™{³ YE +8È8š8ä(µ s¶ }¯ {® oÙ }² }³ {² oê 9„{² oí }° {° sâ }± {¯ {± o· -*{¯ {± o¸ }³ {° }´ *+þØ}± þ¦}° 8lÿÿÿ}³ {² (q+}² }¯ }³ þ¦}´ *0’‰ {³ YE+8m{³ E + ++++}³ {² (q+}³ þ¦}´  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{³ E + + +++***"{´ *0 +š{® þ¦þØþ¦s¹ *0D}º }» }¼ }½ }¾ }¿ }À }Á (^ *0.›{À YE +8Ó8¥8ï(© s }¼ {» oÙ }¿ }À {¿ oê 9{¿ oí }½ {º {½ o s™ }¾ {¼ {¾ oà -*{¼ {¾ oÄ }À {½ }Á *+þü}¾ þ¦}½ 8aÿÿÿ}À {¿ (q+}¿ }¼ }À þ¦}Á *0’‰ {À YE+8m{À E + ++++}À {¿ (q+}À þ¦}Á  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{À E + + +++***"{Á *0 1œ{º {» þ¦þüþ¦sÅ *V(‡ }Æ }Ç *0!æ{Ç (H+ {Æ (}+¥*:(‡ }È *0æ{È (H+ (~+¥*V(c }É }Ê *0E{É o s™  {Ê oË ,{Ê XoÌ *{Ê oÌ *(Í *0=(Î {Ï (Ð sÑ *V(Ò }Ó }Ô *05Ÿ(µ sÕ {Ó sÖ {Ô (+s× ¥(€+*Ò}Ø }Ù }Ú }Û }Ü }Ý (^ *0ð{Ü YE +8œ8Œ8±{Ù oÙ }Ú }Ü þ¦s) }Û {Ú oê ,/{Û {Ú oí (¿ {Ø {Û {¼ o  +,}Ü {Û {¼ }Ý *+£}Û }Ü {Ú (q+}Ú }Ü þ¦}Ý *0’‰ {Ü YE+8m{Ü E + ++++}Ü {Ú (q+}Ü þ¦}Ý  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{Ü E + + +++***"{Ý *0 {Ø {Ù þ¦sÞ *ò}ß }à }á }â }ã }ä }å (^ *0Fˆ{ä YE +8î8¤8ß8ý{à oÙ }á }ä {ß (™o_ }ã }ä {ã oê ,T{ã o` }â {á oê -+(rÓ4p(• o– sÔ ,¥+z&+}â +Ÿ}ä {ã (p+}ã {á oê ,}ä {á oí }å *+Ö}ä {á (q+}á }ä þ¦}å *0¯‰ {ä YE+8Š{ä E ++7+ + ++++}ä {ã (p+}ä {á (q+}ä þ¦}å  Þ t   Þ&8\ÿÿÿþ,z*v’ ê{ä E +++ +++****"{å *0 {ß {à þ¦sæ *ò}ç }è }é }ê }ë }ì }í (^ *0){ì YE +8Õ8µ8ê{è oÙ }é }ì þ¦s) }ê sC }ë {é oê ,v{ê {é oí (¿ {ë {; ,+{ç {ê {¼ o  þ,,{ë (< }ì {ê {¼ }í *8ƒÿÿÿ8}ÿÿÿ}ë }ê }ì {é (q+}é }ì þ¦}í *0’‰ {ì YE+8m{ì E + ++++}ì {é (q+}ì þ¦}í  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{ì E + + +++***"{í *0 {ç {è þ¦sî *"sï *>sð (K+*Rsñ sò (+*03¡{ó ,* {ó {ô oð Þ («&Ü &** $ 0f£{õ oê ,O{õ o Œ1 u« ,+Í{ö oé  þ1oŒ }ö þ(‚+*o÷ *0-¥{ö oê ,{ö o }ø * þ(ƒ+*fsù sú sû ¥·*6sü (K+*0,§{; - („+&+{ý ,{þ *(…+*J{; -(< **0%©sC sÿ s (†+(‡+*Ns s ¥š*>s ¥'*&}Ï *"{Ï *0«s s **o &**þ(@+*.þ(ˆ+*F} o &*Z{ {Ï þo *v{ {Ï {Ï þo *F}  o &*B{  þo  *N{  o  ¥*.s  € *( *~ *&*2s ¥*Fs ¥¥*r(9 } } } *f{ { { (‰+*V(F } } *Ž{ o  ,{ o (J **(c *0¬Œ¦ u ,  oé **bo &} } *0X®{ o; oÙ u° , { oÍ Þ%{ (Š+ Þt { oð &þ*?@J¥oÙ ¥*þo &oX } s ¥} } } ( } *0¯} { ,{ oé  Þ } &Ü Þ] ÞY{ ,{ oé  Þ } &Ü Þ- Þ){ (‹+(« Þ( } &Ü&Ü&Ü&*@! >N bx5,a),4Y0*Š{ - („+&+{ ,(Œ+*{ *R{ ( } *"o *6o Œ¦*0*±{ - } +{ ,* þ(+*n(r÷4p(• o– s zJ{ -o  **:(¢ }! *0&{! Œ¦,{! þ¦oé **V(‡ }" }# *v{# {" o$ Œ­¥*:(9 }% *J{% s& ¥*ž}' }( }) }* o &*R{) {* (Ž+*f{) {* (Ž+Œ*0\²{) (±{' o… Þt  {* (+ þ,{* {( (, (+ *{* (+ *n(r÷4p(• o– s z *’(. }/ }0 }1 }2 *~{/ {0 {1 {2 s3 *:(‡ }4 *"{4 *:(5 }6 *>{6 on *b}7 }8 o &*R{7 {8 o½ &*~}9 }: }; o &*r-p*>{9 o½ &*>{: o½ &*0-{; s< o= {9 o½ &{: s> *0³o? , {ð oð &**0>¶o@ oA  uA-uB-tC {B (C **(+*0 ¸uE ,  {D *sE ¥©*0 ºuF ,  {F *sG ¥?*.sH €I *( *~I **uGþ*sJ **uHþ*sK **uIþ*0¼ uI,+ uH,+*(L *:(L }M *{M *:(L }N *{N *:( }O *:( }P *2{P {M *:( }Q *2{Q {N *bo &}R }S *"{R *"{S *0/¾uî , {R sT +à sU ¥@*"sV *>{R þoW *V(d }Y }Z *z{Z {S o[ {Y (i *:(\ }] *0bÀ{] {R (+  uH- uI-{] {S o[ (^ **tI {N {] {S (i (^ *~o &}_ }` }a *"{_ *0.Á{` -(r5p(• o– sÔ z{à *J¥oí Œ¦*0}Ã{a -s{_ (+ uH-uI-,}` }a *tH {M ( }` *tI {N }_ ¥þoê **n(r÷4p(• o– s zb{a -{_ þ(‘+**Fo &}b *"{b *"sc *0Ä{b sd (± *:(\ }e *¾{e {b oê ,{e {b oí (f *(g *:(¢ }h *:{h oé *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z"si *0goê -!(rÓ4p(• o– rps z/!(r6"p(• o– rps z- þo *Y+™:sj ¥®*0»sÞ sk ¥®*>sl ¥W*0,Å{; - („+&+{m ,{# *(’+*0ÆsC sZ sn *ò{; - (< +oê ,o o ,*+Æ*0ksC so *0ÇsW sp ¥®*0W{Ø 3 („+&+{Ø þ3 (“+&+{q Œ×,+sr (”+(s {q oÞ *0JÉ, {Ì /{Ì st ¥©*-ý+{Ì sÞ su  sv *0{m , (w **0&Å (… (•+ Þ, († &Ü&Ü*0,Å{; - („+&+{m ,{# *(’+*J{; -(< **0!Ê(–+(—+ Þ (w &Ü&* 0,ÌsC sZ oð (= sx sy *&sz *F}{ o &*J{{ oì (t+*J{{ oì ¥*>{{ þoê *n(r÷4p(• o– s z0Í{{ u ,  þoé **Fo &}| *0Š{| - („+&+(Œ+*0Š{| - („+&+(˜+*Z{| - }| +*n(r÷4p(• o– s z *ŠsG€\sG€]sG€^*:( }[*~\**(Nþ*~]**(Nþ*~^**(Nþ*{[*Vo &(H}} *Þ{} (NE („+&+ (“+&+{~ *"o *6o Œ¦*¦(J}} |~ o€ ,*(L}} *n(r÷4p(• o– s z*þo *b}‚ }ƒ o„ &*º{ƒ oê ,{‚ {ƒ o„ o… ¦**>{ƒ þoé *~}† }‡ }ˆ o„ &*0Q{ˆ {ˆ {Ø X(Ú {‡ oê ,){† {ˆ {Ø {‡ o„ (™+¦**>{‡ þoé *~}Š }‹ }Œ o„ &*0OÎ{‹ oê {Œ oê ,+,){Š {‹ o„ {Œ o (š+¦**0#Ê{‹ oé  Þ{Œ oé &Ü&*ž} } }‘ }’ o &*R{‘ {’ (›+*f{‘ {’ (›+Œ¦*0€{‘ {; -{‘ (< +{’ (0 {’ {- þ,{ oê +,${’ { { o„ o“ (0 +¹{’ {- þ*n(r÷4p(• o– s z>{ þoé *~}” }• }– o &*0(Š{– {; - („+&+{• þoí *0+Š{– {; - („+&+{• oí Œ¦*0/Ð{” {• {– {” {• {– (œ+*n(r÷4p(• o– s z>{• þoé *b}— }˜ o„ &*0LÒ{— {˜ {# o™ ,/ {š ( {š (  ¦{˜ (% ** *V(Û }› }œ *j{› {œ {Ø þoí *ž} }ž }Ÿ }  o &*j{ {Ÿ {  (+*~{ {Ÿ {  (+Œ¦*0¦Ó{Ÿ {Ø þ3*{Ÿ {Ø 3{Ÿ (Ú {  (¡ *{Ÿ {Ø ÿÿÿ3(rS5p(• o– sÔ z{Ÿ {Ø {ž 3*{Ÿ {Ø X {Ÿ (Ú {  (¡ *n(r÷4p(• o– s z *¾}¢ }£ }¤ }¥ }¦ o &*R{¤ {¥ (ž+*f{¤ {¥ (ž+Œ¦*0‹Ô{¤ (6{¦ {§ ,l {o {¢ o“ Þ"t {£ {¥ {¦ (Ÿ+þ ,{¥ (0 *{£ {¥ {¦ (Ÿ+**'8"n(r÷4p(• o– s zj{£ {¦ ( +þ(¡+*šo &}¨ }© {¨ Ži}ª *Ú{© 2&{© {ª 2(Œ+*{¨ {© £¦*(¢+*"o« *º{© {ª 2*{© X}© {© {ª þ*6o« Œ¦*n(r÷4p(• o– s z *bo &}¬ }­ *"{¬ *6{¬ Œ¦*R{­ ,*}­ *n(r÷4p(• o– s z *b}® }¯ o &*>{¯ þoí *R{¯ ¥þoì *>{¯ þoê *n(r÷4p(• o– s z0#Ê{¯ oé  Þ{® oð &Ü&*b}° }± o^ &*"{± *0Õq {± oê ,**0$Ê{± oé  Þ{° oæ &Ü&**>{± þoí *(Z+*0×(² s³ *F}´ o &*F{´ þoµ *s¶ *"s· *s¸ *0Ù(¹ sº **o &**þ(@+*.þ(ˆ+*F}» o &*B{» þ(£+*.þ(ˆ+**o &*6Œ¦(¼ *&(¤+*b}½ }¾ o &*B{½ þo¿ *F{¾ þoÀ *0,,{# *(r‰5p(• o– r¯5ps zþ*&þþ*",**0, {# þ([+**0, {# þ(œ+**0, {# þo **0, {# þo **0, {# o× &**0], {# o£ (L **0, {# þo« **0!, 0%{# ¤0*0*0, {# (‚ (2 *(‚ **(% **(% *&o$ *&o$ **(Á *.( *0U/!(r6"p(• o– rps z/!(r6"p(• o– r½5ps zsà *0{-þ+,+Ð0(W b%¤b%¤b(Ä ¥€*Ð0(W b%¤b%¤bb%¤b%¤b(Å ¥€*0IÛ(¥+  ÖÚ 20ÖÚ 2( X X3èX X3Ð*0QÛ(¥+  ÖÚ 28ÖÚ 2 (¦+( X X3àX X3È*2(§+*2(¨+*0‡ÜŒ€,+ rµps z(% (% o$ o$ ÖÚ2=  ÖÚ2(Á o× &XX3áXX3Ã*0‹ÜŒ€,+ rµps z(% (% o$ o$ ÖÚ2A  ÖÚ2#(Á (©+&XX3ÝXX3¿*0BŒ€,+ rµps zo$ o$ (% (% sÇ (ª+*0BŒ€,+ rµps zo$ o$ (% (% sÈ (ª+*0AŒ€,+ rµps zo$ o$ (% (% sÉ (¨+*0 G,Œ€,+ rµps zo$ o$ (% (% sÊ (¨+*0 ÝŒ€,+ rB ps zŒ€,+ r5ps zo$ /!(rá/p(• o– rÁ5ps zo$ /!(rá/p(• o– rÛ5ps zo$ /!(rá/p(• o– rõ5ps zo$ /!(rá/p(• o– r6ps zÖ(% o$ Ö1!(rá/p(• o– r)6ps zÖ(% o$ Ö1!(rá/p(• o– r76ps zÖ(% o$ Ö1!(rá/p(• o– r)6ps zÖ(% o$ Ö1!(rá/p(• o– r76ps z Ú 2@Ú 2)ÖÖÖÖ(Á ( X X3×X X3À*V(Ë }Ì }Í *r{Ì {Í (Î þo… *V(Ë }Ï }Ð *0 {Ï {Ð (Î þ(«+*:(Ë }Ñ *>{Ñ (Ò *r(Ë }Ó }Ô }Õ *v{Ó {Ô Ö{Õ Ö(Ò *"0*0Iõ/(ärú)ps (Æ+&+0  Y 2oš ¤0X X3è*0µÞŽi0 Ži¦  +ZoÖ /+ Žiþþ,#(rE6p(• o– re6ps z £0¤0 ¤¦X Ži2  +2£¦.#(rE6p(• o– re6ps zX Ži2È*0Bߎi /*Ži1  +£0o£ ¤1X Ži2â(¬+(­+*0WŽi /*(®+( +*0äáŽib  + ¤bX Ži2î(¬+ (¯+o ¥Ô (°+ Ži<“£1/ 3+£1oØ þ+, X+Í Y 2$  £b£0¤0 X  X3ÜY2Y(±++ 8eÿÿÿ*0>ߎi /*Ži1  +£0o£ ¤1X Ži2â(²+*0,WŽi /*(®+,o ¥Ô(³+*(´+*0*J{Þ ,! {Þ {/ o× &+×*0Eâ{c ,1 {c {ò oÖ (2  }Þ +Ç(‚ }Þ *0^ã{Þ ,P {Þ {Þ -{/ o£ (j (h *{Þ {/ o£ (h (µ+ *(j *0Kâ{c ,7 {c {ò oÛ (2  }Þ X+Á(‚ }Þ *0kä{Þ ,] {Þ {Þ -{/ (¶+(j (h *{Þ {/ (¦ o§ (h  (·+*(j *0“å{c ,w {ó ,J {ó {c {ô {ò oÜ (2 }Þ  +¤(r 4p(• o– rw6ps z{ó -Õ(‚ }Þ *0Žæ{Þ ,x {c ,K {c {Þ {ò {/ (ž oŸ (ù  (¸+*(r 4p(• o– rw6ps z{c -Õ(ú *0.J{Þ ,# {Þ {/ o ,+×**0.J{Þ ,# {Þ {/ o ,*+Õ*0)J{Þ , {Þ {/ (2 +Ù*0Rç{Þ ,H {Þ {Þ ,7{Þ {Þ {/ {/  (‚ (2 (2 (¹+***09è{Þ ,( {Þ {/ (2  }Þ +Ð}Þ *0<J{Þ ,( {Þ {/ oÝ (º++Ð(j }c *0Oé{Þ ,A {Þ {Þ -{/ þoÝ *þ1 (h (»+oÞ *(j *0Oè{Þ ,? {Þ {/ o ,(2  }Þ +Ä+¹}Þ *0gè{Þ ,] {Þ {Þ -{Þ {/ o ,**{Þ {/ o ,(2 (¼+ *+›*00J{Þ ,' {Þ {/ o£ &X+Ñ*0ê(¢  (½+*02ì{ß ," {ß {à (¾++Ö}Þ *0^í{ß ,P {à {Þ ,5{à {ß {Þ {/ (2  (¿+*{ß +¨(‚ *0Xîu , *oŒ (‚ oê ,o (2 +è (À+ Þu, oé &Ü&Ü*'=0eï(À+ {ß ,O {ß {ß ,7{ß {ß {ß -{à {à  ( +*(Á+*{à *(‚ *06ð/%oš (2 }Þ X+Ö(‚ }Þ *09ð/(ärú)ps z-(‚ *oš (2 (Â+*0cè{Þ ,L {Þ {/ (2 o , }Þ +Á }Þ  +¬}Þ }Þ *0Qè{Þ ,@ {Þ {/ (2 o , }Þ +Ä (Ã+ *}Þ *0Qè{Þ ,@ {Þ {/ (2 o , (Ã+ * }Þ +¸}Þ *0„è{Þ ,t {Þ {Þ -({Þ {/ o ,s× *s× *{Þ {/ (2 o , (Ä+s× * (Å+ s× *s× *0pñ{ ,Q { { (Ö { (× (2 (h }Þ }c +§(‚ }Þ (j }c *0añ{ ,I { { (Ö { (× (2 (h (Æ+sá *(‚ (j sá *0¡ó{â ,w {â {ã (¶ {ã (· {ã (¸ (2  (h (ù }Þ }c }ó 8ÿÿÿ(‚ }Þ (j }c (ú }ó *0ó{â ,d {â {ã (¶ {ã (· {ã (¸ (2  (h (ù (Ç+sä *(‚ (j (ú sä *0ô{Þ ,s {c ,F {c {Þ {ò {/ sg (h }  +¨(r 4p(• o– rw6ps z{c -Õ(i } *0‚ô{Þ ,l {c ,? {c {Þ {ò {/ sg (h  (È+*(r 4p(• o– rw6ps z{c -Õ(i *0¿õ{Þ 9˜ {c ,k {ó ,a {ó {c {Þ {ô {ò {/ s´ (å   }â   8€ÿÿÿ(r 4p(• o–   r6ps z{c -Õ{ó -Í(æ }â *0­õ{Þ 9Œ {c ,_ {ó ,U {ó {c {Þ {ô {ò {/ s´ (å    (É+ *(r 4p(• o–   r6ps z{c -Õ{ó -Í(æ *0/J{Þ ,& {Þ {/ ¤0X+Ò*0öoñ 0  (Ê+*0/÷Ži (‚ Y   0 £0(2 Y Y3è*&(Ë+*0)J{Þ , {Þ {/ (2 +Ù*0vø{Þ ,j {Þ ,V {/ {/ {Þ {Þ  (+1(2 +­ (2 +˜ (Ì+* +ôÂ(+1(‚ (2 (2 *(‚ (2 (2 *0¼/þ+,;(+1(‚ (2 (2 (2 *(‚ (2 (2 (2 *151(‚ (2 (2 (2 *(‚ (2 (2 (2 *1(‚ (2 (2 (2 *(‚ (2 (2 (2 *0 k,(+ (+ 1þ+,;(+1(‚ (2 (2 (2 *(‚ (2 (2 (2 *(Í+*0ð{Þ , {Þ {Þ þ**0Ëù<ž{ç {Þ 9 {Þ {Þ ,r{Þ {/ {/ {Þ 3(è  (Î+*{Þ ,*{/ {Þ (è  (Ï+*r‡6ps¤ zr‡6ps¤ zc  (Ð+ Y(Ð+(‚ (Ñ+*0 û(Ò+,*sé oñ (Ð+*fsê þë sì sí *6sî (”+*.oï þ*"oï *"oÞ *"oÞ *"oÞ *:}ð ( *B{ð þoë *:(Û }ñ *"{ñ **"(C+*"Œ0*z"s¤ *šoò Ð (W o , o¦ (o **þ*&(5+*&(3+*&(2+*&(4+*.þ(6+*2(6+þ*.þ(Ó+*:(5+,**:(5+,**"s¤ z:s (Ô+*6s (Ô+*6sÔ (Ô+*2r“6psè z2rñ6psè z"(× *"(Ö * *"sW *&(ô *"{õ *.þo£ *2þ(+*6þ(!+*.þo£ *2þ(+*6þ(!+*&sö *&s÷ *&(Ç *6,{# **2rO7psè z.þ(:+*2ròpsè z.þ(;+*2rÂpsè z2r^psè z2r¿7psè z2r'8psè z2r8psè z2rù8psè z2rc9psè z2rË9psè z2r7:psè z0Dü{Þ ,: {Þ {/ {Þ -*(‚ (2 (Õ+}Þ **B{Ø X(Ú *B{Ø Y(Ú *J(ø r¡:ps¤ z2rí:psè z2rI;psè z2r§;psè z2r<psè z2re<psè z2rÅ<psè z2r˜ psè z6Œb¥0*V(ƒ („ sg *.#ð*.#øÿ*"€*"Àÿ*2r#=psè z2rƒ=psè z2rá=psè z2rA>psè z2r¡>psè z2r?psè z2re?psè z0<ýŒ0 ,+u™ , ( ¥sþo; * þoÒ *rp*2rÅ?psè z02þ Œ0(… où Þ,Œ0(† &Ü&Ü*0,ÿo£ ÞŒ0, þ0oé &Ü&Ü* 2Ð0(W *2r!@ps¤ z0SÐ0(W oc , þod **"þ0**þ(Ö+*.þ(×+**(ú *(Ü *(Ý *N(Ø+sû (Ù+*R(+sü (Ú+**þ(Û+**þ(Ü+**þ(Ý+**þ(Þ+*.þ(ß+**þ(à+**þ(á+**þ(â+**þ(ã+**þ(ä+**þ(å+**þ(æ+**þ(ç+**þ(è+**þ(é+**þ(ê+**þ(ë+**þ(ì+**þ(í+**þ(î+*.þ(ï+*0l/ €39X (Ø+sý (ð+ /(Ø+ rÂpsè z rÂpsè z(Ø+sþ (ð+ /(Ø+ rÂpsè z*V(U }ÿ } *n{ {ÿ o þo *V( } } *n{ { o$ þo *( *.þ(ñ+*(u *.þ(ò+*( *.þ(ó+*( *.þ(ó+*n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z.#àÁ*.#ÀÿÿÿßA*¾#àÁ5#ÀÿÿÿßAþþ+, ( þ**09Î3 s  ¥é*þ ,þ+þþ s¥é*06s -!(r@p(• o– r±@ps zs*0IÎ3 s  ¥§*þ ,!þ+ !þþ s#¥§*06s! -!(r@p(• o– r±@ps zs)*0IÎ3 s  ¥©*þ ,!þ+ !þþ s.¥©*06s, -!(r@p(• o– r±@ps zs4*09Î3 s  ¥«*þ ,þ+þþ s9¥«*06s7 -!(r@p(• o– r±@ps zs?*0KÎ3 s  ¥­*þ ,!Óþ+!Óþþ sD¥­*0@ sB !Ó3!(r@p(• o– r±@ps zsJ*0KÎ3 s ¥¯*þ ,!àþ+!àþþ sO¥¯*0@ sM !à3!(r@p(• o– r±@ps zsU*09Î3 s ¥±*þ ,þ+þþ sZ¥±*06 sX -!(r@p(• o– r±@ps zs`*09Î3 s ¥³*þ ,þ+þþ se¥³*06sc -!(r@p(• o– r±@ps zsk*09Î3 s ¥µ*þ ,þ+þþ sp¥µ*06sn -!(r@p(• o– r±@ps zsv*09Î3 s ¥·*þ ,þ+þþ s{¥·*06sy -!(r@p(• o– r±@ps zs*0:Y[l (—,6i 3lZXs ¥¹*þ þþ  s„¥¹*#þ,#(r@p(• o– r±@ps z.#(r»@p(• o– rps z.#(rÝ@p(• o– r±@ps z.#(rý@p(• o– r½5ps zþ, s ¥¹*þ ,#þ+ #þþ  sŠ¥¹**s*0.Y[l (—,6i 3kZXs ¥»*þ þþ  s’¥»*"þ,#(r@p(• o– r±@ps z.#(r»@p(• o– rps z.#(rÝ@p(• o– r±@ps z.#(rý@p(• o– r½5ps zþ, s ¥»*þ , "þ+ "þþ  s˜¥»**s*0.Š(6+, s ¥©*(5+ s ¥©*.s *0KÎ(è+, s ¥®*(+ , (5++(3+þ s ¥®*08(6+,!(r@p(• o– r±@ps zs *0%Š3 s ¥Ã*þ s²¥Ã*0  s¸*0SE$.[(¶ Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0  (¶*0SE$.[(¸ س ]-*س***س*س س*س س*0  (¸*0SE$.[(º ص ]-*ص***ص*ص ص*ص ص*0  (º*0SE$.[(¼ Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0  (¼*0J,E!'[(¾ Ø ]-*Ø***Ø*ØØ*Ø Ø*0 W (¾*0JE!'[(À Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0  (À*0R¾E#%)/[(Â Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0  (Â*0R!E#%)/[(Ä Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 " (Ä*0S#E$&*0[(Æ Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 $ (Æ*0S%E$&*0[(È Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0 & (È*0N'E!%+[(Ê Z ]-*Z*"€?**Z*ZZ*Z Z*0 ( (Ê*0R)E#%)/[(Ì Z ]-*Z*#ð?**Z*ZZ*Z Z*0 * (Ì*0g+E"$&.<[(Î ( ]-*( ***( *( ( *( ( *0, s   (Î*0w5E')+6H[(ô+ (\+ ]-*þ(\+***þ(\+*(\+þ(\+*(\+ þ(\+*0.   þ(ô+*0k/,  {Ì + ,  {Ì +ŽiY YX 0 Y2!X£0¤0XX3ß*0`0,  {Ì + ,  {Ì +ŽiY YX  Y2 X£0¤0XX3à*0d½, {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y YX YX(õ+*0g½, {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y YX YX(ö+*0 ™1, {Ì + , {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y, {Ì + (% Y YXYXYX(÷+*0 œ1, {Ì + , {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y, {Ì + (% Y YXYXYX(ø+*0 ÎÜ, {Ì + , {Ì + , {Ì + , {Ì + , {Ì + (% Y, {Ì + (% Y, {Ì + (% Y, {Ì + (% Y YXYXYX YX(ù+*0 ÑÜ, {Ì + , {Ì + , {Ì + , {Ì + , {Ì + (% Y, {Ì + (% Y, {Ì + (% Y, {Ì + (% Y YXYXYX YX (ú+*0;2,  {Ì + ,  {Ì + o­ Y YXo¼ *0)3Ð0(W %¤o s *0<4Ð0(W Ð1(W %¤%¤o s *>~  þo! *>~" þo! *>~# þo! *>~$ þo! *B~% þ(û+*>~& þo! *>~' þo! *>~( þo! *>~) þo! *>~* þo! *>~+ þo, *>~- þo! *>~. þo! *>~/ þo£ *>~0 þo! *>~1 þo! *>~2 þo! *>~3 þo! *>~4 þo! *>~5 þo! *B~6 þ(ž+*Fo &}7 *.þo8 *:o8 Œ¦*0C{7 E*o9 , }7 *}7 *o: ,*}7 *F}7 þo; * *¦{7 E (ü+*(ý+*þo< **o= &*** *0 þ¦*Fo= &}> *** *"{> *’o? &}@ }A {@ }B *:{@ }B *B{B þoC *0nH{B {B oD oE ,*oF ,*oE ,{A oE +, }B *{A oF , }B **’o= &}G }H {G }I *:{G }I *"{I *0H{I {I oJ oK ,*oL ,{H oL +, }I *{H oK , }I *{H oL ,*oK -**(M *X*î}§}¨}©}ª}«{§{©oN &*"{«*N{ª,þ*þ*þ**{¨X**ž}¬}­}®}¯o &*0 {¬{­{®{¯(˜*0 %{¬{­{®{¯(˜¥*(O *X*î}°}±}²}³}´{°{²oP &*"{´*N{³,þ*þ*þ**{±X**ž}µ}¶}·}¸o &*0 {µ{¶{·{¸(š*0 %{µ{¶{·{¸(š¥*(R *X*î}¹}º}»}¼}½{¹{»oS &*"{½*N{¼,þ*þ*þ**{ºX**ž}¾}¿}À}Áo &*0 {¾{¿{À{Á(œ*0 %{¾{¿{À{Á(œ¥*(U *X*î}Â}Ã}Ä}Å}Æ{Â{ÄoV &*"{Æ*N{Å,þ*þ*þ**{ÃX**ž}Ç}È}É}Êo &*0 {Ç{È{É{Ê(ž*0 %{Ç{È{É{Ê(ž¥*(X *X*î}Ë}Ì}Í}Î}Ï{Ë{ÍoY &*"{Ï*N{Î,þ*þ*þ**{ÌX**ž}Ð}Ñ}Ò}Óo &*0 {Ð{Ñ{Ò{Ó( *0 %{Ð{Ñ{Ò{Ó( ¥*([ *X*î}Ô}Õ}Ö}×}Ø{Ô{Öo\ &*"{Ø*N{×,þ*þ*þ**{ÕX**ž}Ù}Ú}Û}Üo &*0 {Ù{Ú{Û{Ü(¢*0 %{Ù{Ú{Û{Ü(¢¥*(^ *Xh*î}Ý}Þ}ß}à}á{Ý{ßo_ &*"{á*N{à,þ*þ*þ*.{ÞXh**ž}â}ã}ä}åo &*0 {â{ã{ä{å(¤*0 %{â{ã{ä{å(¤¥*(a *XÑ*î}æ}ç}è}é}ê{æ{èob &*"{ê*N{é,þ*þ*þ*.{çXÑ**ž}ë}ì}í}îo &*0 {ë{ì{í{î(¦*0 %{ë{ì{í{î(¦¥*(d *Xg*î}ï}ð}ñ}ò}ó{ï{ñoe &*"{ó*N{ò,þ*þ*þ*.{ðXg**ž}ô}õ}ö}÷o &*0 {ô{õ{ö{÷(¨*0 %{ô{õ{ö{÷(¨¥*(g *XÒ*î}ø}ù}ú}û}ü{ø{úoh &*"{ü*N{û,þ*þ*þ*.{ùXÒ**ž}ý}þ}ÿ} o &*0 {ý{þ{ÿ{ (ª*0 %{ý{þ{ÿ{ (ª¥*Ú} } } } } { oj &*"{ *N{ ,þ*þ*þ*X*J{ l{ ZX*î} } } } } { { ok &*"{ *N{ ,þ*þ*þ**{ X*~} } } o &*j{ { { (¬*~{ { { (¬¥*Ú} } } } } { om &*"{ *N{ ,þ*þ*þ*X*J{ k{ ZX*î} } } } } { { on &*"{ *N{ ,þ*þ*þ**{ X*~} } } o &*j{ { { (®*~{ { { (®¥*î}p }q }r }s }t {r {s ou &*"{t *&(þ+*.þ(ˆ+*Z{q {p þ(ÿ+**ž}w }x }y }z o &*0 {w {x {y {z (+*0 %{w {x {y {z (+¥*0C}{ }| }} }~ } }€ {| {~ ou &*"{€ *f{ ,(þ+*(+*.þ(ˆ+*Z{{ {} þ(t+**¾} }‚ }ƒ }„ }… o &*0 &{ {‚ {ƒ {„ {… (+*0 +{ {‚ {ƒ {„ {… (+¥*Î}/ }0 }1 }2 {/ {0 o† &*"{2 *þ*þ*0 {1  XÑ**~}3 }4 }5 o &*j{3 {4 {5 (´*~{3 {4 {5 (´¥*:(U }ˆ *0 &{ˆ %Œ¦¤oë ¥§*:(‰ }Š *0 3{Š %Œ¦¤%Œ§¤oë ¥­**o &*0]6Ц(W Ф(W o ,sÂ¥r s‹ 8!Ð¥(W o ,sÆ¥r sŒ 8øÐb(W o ,sÊ¥r s 8ÏБ(W o ,sÎ¥r sŽ 8¦Ю(W o ,sÒ¥r s 8}Ð’(W o ,sÖ¥r s +WГ(W o ,sÚ¥r s‘ +1Ð7(W o ,sÞ¥r s’ + rAp(+€“ *~“ *(” *"(• *:(– }— *B{— þo˜ *(™ *"(š *:(– }› *B{› þo˜ *(œ *"( *:(– } *B{ þo˜ *(ž *"(Ÿ *:(– }  *B{  þo˜ *(¡ *0.$!Ó2*e !Ó/ (ás¢ z*:(– }£ *B{£ þo˜ *(¤ *"(¥ *:(– }¦ *B{¦ þo˜ *(§ *"(¨ *:(– }© *B{© þo˜ *(ª *"(« *:(– }¬ *B{¬ þo˜ **o &*0j6Ц(W Ð’(W o ,så¥r s­ +1Г(W o ,sé¥r s® + r#Ap(+€¯ *~¯ *(¤ *"(° *:(– }± *B{± þo˜ *(§ **l(° k*:(– }² *B{² þo˜ **o &*0j6Ц(W Ð’(W o ,sð¥r s³ +1Г(W o ,sô¥r s´ + r-Ap(+€µ *~µ *(¤ *"(¶ *:(– }· *B{· þo˜ *(§ **l(¶ k*:(– }¸ *B{¸ þo˜ **o &*0j6Ц(W Ð’(W o ,sû¥r s¹ +1Г(W o ,sÿ¥r sº + r7Ap(+€» *~» *(¤ *"(¼ *:(– }½ *B{½ þo˜ *(§ **l(¼ k*:(– }¾ *B{¾ þo˜ **o &*0j8Ц(W Ð’(W o ,s¥{ s¿ +1Г(W o ,s ¥{ sÀ + rAAp(+€Á *~Á *( *&(à *:(U }Ä *B{Ä þo *:(Å }Æ *0:{Æ oÇ sÈ *(É *2ll(à k*:(U }Ê *B{Ê þo *:(Å }Ë *0:{Ë oÇ sÌ **o &*0j6Ц(W Ð’(W o ,s¥r sÍ +1Г(W o ,s¥r sÎ + rMAp(+€Ï *~Ï *(¤ *"(Ð *:(– }Ñ *B{Ñ þo˜ *(§ **l(Ð k*:(– }Ò *B{Ò þo˜ **o &*0j6Ц(W Ð’(W o ,s ¥r sÓ +1Г(W o ,s$¥r sÔ + r]Ap(+€Õ *~Õ *(¤ *"(Ö *:(– }× *B{× þo˜ *(§ **l(Ö k*:(– }Ø *B{Ø þo˜ **o &*0j6Ц(W Ð’(W o ,s+¥r sÙ +1Г(W o ,s/¥r sÚ + reAp(+€Û *~Û *(¤ *"( *:(– }Ü *B{Ü þo˜ *(§ **l( k*:(– }Ý *B{Ý þo˜ **o &*0j6Ц(W Ð’(W o ,s6¥r sÞ +1Г(W o ,s:¥r sß + rqAp(+€à *~à *(¤ *"(á *:(– }â *B{â þo˜ *(§ **l(á k*:(– }ã *B{ã þo˜ **o &*0j6Ц(W Ð’(W o ,sA¥r sä +1Г(W o ,sE¥r så + rƒAp(+€æ *~æ *(¤ *"(ç *:(– }è *B{è þo˜ *(§ **l(ç k*:(– }é *B{é þo˜ **o &*0]<Ц(W Ð’(W o ,sL¥~ sê 8!Г(W o ,sP¥~ së 8øЮ(W o ,sT¥~ sì 8ÏÐ7(W o ,sX¥~ sí 8¦Ð¥(W o ,s\¥~ sî 8}Ðb(W o ,s`¥~ sï +WБ(W o ,sd¥~ sð +1Ф(W o ,sh¥~ sñ + rAp(+€ò *~ò *(ó *"(ô *:(õ }ö *B{ö þo¿ *(÷ *&l(ô *:(õ }ø *B{ø þo¿ *(ù *†!Ó/*!Ó1**:(õ }ú *B{ú þo¿ *(û *"(ü *:(õ }ý *B{ý þo¿ *(þ *"(ÿ *:(õ } *B{ þo¿ *(œ *"( *:(õ } *B{ þo¿ *( *"( *:(õ } *B{ þo¿ *( *"( *:(õ } *B{ þo¿ **o &*0j6Ц(W Ð’(W o ,so¥r s  +1Г(W o ,ss¥r s  + r™Ap(+€  *~  *(¤ *"(  *:(– }  *B{  þo˜ *(§ **l(  k*:(– } *B{ þo˜ **o &*0j6Ц(W Ð’(W o ,sz¥r s +1Г(W o ,s~¥r s + r¡Ap(+€ *~ *(¤ *"( *:(– } *B{ þo˜ *(§ **l( k*:(– } *B{ þo˜ **o &*0j=Ц(W Ð’(W o ,s…¥V s +1Г(W o ,s‰¥V s + r­Ap(+€ *~ *(¤ *"( *:(U } *B{ þo *(§ **l( k*:(U } *B{ þo **o &*0j6Ц(W Ð’(W o ,s¥r s +1Г(W o ,s”¥r s + r·Ap(+€ *~ *(¤ *"( *:(– } *B{ þo˜ *(§ **l( k*:(– }  *B{  þo˜ **o &*0j6Ц(W Ð’(W o ,s›¥r s! +1Г(W o ,sŸ¥r s" + r¿Ap(+€# *~# *(¤ *"($ *:(– }% *B{% þo˜ *(§ **l($ k*:(– }& *B{& þo˜ **o &*0j6Ц(W Ð’(W o ,s¦¥r s' +1Г(W o ,sª¥r s( + rÉAp(+€) *~) *(¤ *"(* *:(– }+ *B{+ þo˜ *(§ **l(* k*:(– }, *B{, þo˜ **o &*0j6Ц(W Ð’(W o ,s±¥r s- +1Г(W o ,sµ¥r s. + rÑAp(+€/ *~/ *(¤ *"(0 *:(– }1 *B{1 þo˜ *(§ **l(0 k*:(– }2 *B{2 þo˜ **o &*0j6Ц(W Ð’(W o ,s¼¥r s3 +1Г(W o ,sÀ¥r s4 + rÛAp(+€5 *~5 *(¤ *"(6 *:(– }7 *B{7 þo˜ *(§ **l(6 k*:(– }8 *B{8 þo˜ **o &*0j6Ц(W Ð’(W o ,sÇ¥r s9 +1Г(W o ,sË¥r s: + rãAp(+€; *~; *(¤ *"(< *:(– }= *B{= þo˜ *(§ **l(< k*:(– }> *B{> þo˜ **o &*0j?Ц(W Ð’(W o ,sÒ¥… s? +1Г(W o ,sØ¥… s@ + ríAp(+€A *~A *( *&(B *:( }C *B{C þo… *:(D }E *0A{E oF sG *(É *2ll(B k*:( }H *B{H þo… *:(D }I *0A{I oF sJ *.þ(+*2ròpsè z2rO7psè z2rõApsè z2rí:psè z2rI;psè z2r§;psè z2rÅ?psè z2r<psè z2re<psè z2rÅ<psè z2r[Bpsè z2r#=psè z2rƒ=psè z2r?psè z2re?psè z"¥0*0 4þ0*.þ(Ó+*.þ(6+**þ(Ö+*n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z06è{Þ ,, {Þ {/ (‚ (2  }Þ +Ì*0ð{Þ , X{Þ +æ*0jJ{Þ ,C {Þ {/ /(r6"p(• o– rps z-*Y+µ(rç3p(• o– rps z’o &}K {K }L }M *0+V{M ,{L {Ë ,{Í *( +*( +*"oN *0UB{M ,3{L {Ë ," {Ë }L {L {Ë þþ**}M {L {Ë þþ*6oN Œ¦*V}M {K }L * **oO &*&sP *0DŒ† up , *sQ *V(U }R }S *Z{R {S þoT *F}U o‰ &*Z{U oV þo$ **oW &*&sX *02GŒ‡ uˆ , *u9 , sY *sZ *V(‰ }[ }\ *^{[ {\ þo] *F}^ o_ &*^{^ o` þoa *F}b o_ &*^{b oc þ( +**od &*0JKŒ‰ uŠ , *u? , se *uA, sf *sg *&sh *F}i oj &*f{i ok þol *F}m oj &*f{m on þ( +*F}p oj &*f{p oq þ( +*V(_ }s }t *0 {s {t þou **ov &*&sw *0bPŒ‹ uŒ , *uI , sx *uK, sy *uM, sz *s{ *V(j }| }} *0 {| {} þo~ *F} o€ &*0 { o þo‚ *F}ƒ o€ &*n{ƒ o„ þ(+*F}† o€ &*n{† o‡ þ(+*F}‰ o€ &*0 {‰ oŠ þ(+*0<ýŒ0 ,+u™ , ( ¥sþo; * þoÒ *r»,p*.þ(6+*.þ(+*2þ(+*.þ(Ó+*2þ(+*&(5+*&(3+*&(4+*&(2+*>(5+,**>(5+,**&(+*"(+*~Í *~Î *~Ï **þ(Ö+*.þ(×+*.þ(+*sŒ *"s *~Ð *~Ñ *~Ò *~Ó *~Ô *~Õ *~Ö *~× *~Ø *~Ù *~Ú *~Û *~Ü *~Ý *~Þ *0ÉÐb(W o ,*Б(W o ,*Ч(W o ,*Ш(W o ,*Щ(W o ,*Ð’(W o ,*Г(W o ,*Ð7(W o ,*Ð\(W o ,(BŒŽ¥-*sŽ *0õШ(W o ,(JŒ–¥-*Щ(W o ,(KŒ—¥-*Я(W o ,(LŒ˜¥-*Ð’(W o ,(MŒ™¥-*Г(W o ,(NŒš¥-*Ð7(W o ,(OŒ›¥-*Ð\(W o ,(BŒŽ¥-*s *0÷У(W o ,(AŒ¥-*Ф(W o ,(CŒ¥-*Ð¥(W o ,(DŒ¥-*Ðb(W o ,(EŒ‘¥-*Б(W o ,(FŒ’¥-*Ю(W o ,(GŒ“¥-*Ч(W o ,(IŒ•¥-*(+*~ *~‘ *6Œ0¥1*6Œ0¥1********0!(’ x3+oþ,*bþ*ªX2o¯ 0þ+,Xo¯ (^**07qb(_,$qbXo¯ (’ qbXb*d*ÖqbX2qbo¯ -þ+,qbXb**0EqbX2qbo¯ -þ+,qbXb!ÿÿÿÿÿÿÿÿ*!*0 i/bX!Zo¯ 02 7þþ+,(“ 0(“ Y+(rµBp(• o– s” zX+™*0Q  !(c*0 i/bX!Zo¯ 0YE&(rµBp(• o– s” z!+ !X+™*0Q  !(e*0ÅR(‡ , rs,ps zo• o­  (` 2(rµBp(• o– s” z bYE\ oYEA xYEo– ( ¥s(— *o– ( ¥s(— *(d(˜ *(f(˜ *0æS(‡ , rs,ps zo• o­  (a (`2(rµBp(• o– s” z( (™ bYEaoYECxYE( ¥s(š * o– ( ¥s(› (˜ Z* (d(˜ Z* (f(˜ Z*0×T(‡ , rs,ps zo• o­  (b (`2(rµBp(• o– s” z( (™ bYEWoYE>xYE( ¥s(œ * o– ( ¥s(œ Z* (dZ* (fZ*0»R(‡ , rs,ps zo• o­  (` 2(rµBp(• o– s” z bYEW oYEA xYEo– ( ¥s(› *o– ( ¥s(› *(d*(f*01°Ц(W o , Œ¦¥0*Ч(W o , Œ§¥0*Ш(W o , Œ¨¥0*Щ(W o ,!Œ©¥0*Я(W o ,!àŒ¯¥0*Ð7(W o ,s Œ7¥0*Ð’(W o ,#Œ’¥0*Г(W o ,"Œ“¥0*rÕBpov o] ¥0*01°Ч(W o , Œ§¥0*У(W o , Œ£¥0*Ш(W o , Œ¨¥0*Щ(W o ,!Œ©¥0*Я(W o ,!àŒ¯¥0*Ð7(W o ,s Œ7¥0*Ð’(W o ,#ð?Œ’¥0*Г(W o ,"€?Œ“¥0*rßBpov o] ¥0*~ *~ž *(+*(Ø+*B~Ÿ þ(+*.þ(+*0ÄVrçBp%¤%¤o o ,+"rçBp%¤%¤o ,9,-,¥[+(rÿBp(• o– s z s¡ * s¢ *, +ò,¥[+(r%Cp(• o– s z s£ *0Ц(W o ,s׌_¥[*Ч(W o ,sÙŒ`¥[*Ш(W o ,sÛŒa¥[*Щ(W o ,sÝŒb¥[*Я(W o ,sߌc¥[*Ð’(W o ,sáŒd¥[*Г(W o ,sãŒe¥[*Ð\(W o ,såŒf¥[*(+*B~¤ þ(+*0ÄVrçBp%¤%¤o o ,+"rçBp%¤%¤o ,9,-,¥[+(rÿBp(• o– s z s¥ * s¦ *, +ò,¥[+(r%Cp(• o– s z s§ *0Ч(W o ,sŒ`¥[*У(W o ,sŒk¥[*Ш(W o ,sŒa¥[*Щ(W o ,sŒb¥[*Я(W o ,sŒc¥[*Ð’(W o ,s Œd¥[*Г(W o ,s Œe¥[*Ð\(W o ,sŒf¥[*(+*B~¨ þ(+*0ÄVrGCp%¤%¤o o ,+"rGCp%¤%¤o ,9,-,¥[+(r_Cp(• o– s z s© * sª *, +ò,¥[+(r‡Cp(• o– s z s« *0Ц(W o ,s'Œ_¥[*Ч(W o ,s)Œ`¥[*Ш(W o ,s+Œa¥[*Щ(W o ,s-Œb¥[*Я(W o ,s/Œc¥[*Ð’(W o ,s1Œd¥[*Г(W o ,s3Œe¥[*Ð\(W o ,s5Œf¥[*(+*B~¬ þ(+*0ÄVrGCp%¤%¤o o ,+"rGCp%¤%¤o ,9,-,¥[+(r_Cp(• o– s z s­ * s® *, +ò,¥[+(r‡Cp(• o– s z s¯ *0Ц(W o ,sNŒ_¥[*Ч(W o ,sPŒ`¥[*Ш(W o ,sRŒa¥[*Щ(W o ,sTŒb¥[*Я(W o ,sVŒc¥[*Ð’(W o ,sXŒd¥[*Г(W o ,sZŒe¥[*Ð\(W o ,s\Œf¥[*(+*B~° þ(+**o &**þ(@+*.þ(ˆ+*F}± o &*B{± þ(£+*.þ(ˆ+**o &*24*þ**o &*&(ˆ **o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*:þ,*þ**o &*:þ,*þ**o &*&(À **o &*0ûSЦ(W Ю(W o ,(GŒ“¥C8„Я(W o ,(LŒ˜¥C+`Ц(W o ,+JУ(W o ,+4Ф(W o ,+Ð¥(W o ,+(+€Â Ц(W Ц(W o ,(HŒ”¥C+(+€Ã *~à *~ **o &*.þ(+**o &*.þ(+**o &*0ÓSЦ(W Ф(W o ,Œ¤¥¦8Ð¥(W o ,Œ¥¥¦8zÐb(W o ,Œb¥¦+ZБ(W o ,!Œ‘¥¦+2Ю(W o ,!ÓŒ®¥¦+ ( +€Ä *~Ä **o &*0öSЦ(W Ф(W o ,Œ¤¥¦8ÀÐ¥(W o ,Œ¥¥¦8Ðb(W o ,Œb¥¦8zБ(W o ,!Œ‘¥¦+RЮ(W o ,!ÓŒ®¥¦+)Ц(W o ,Œ¦¥¦+ (!+€Å *~Å **o &*0éXЦ(W Ð7(W o ,s´Œy¥¡8¯Ð’(W o ,s¶Œz¥¡8ˆГ(W o ,s¸Œ{¥¡+dr«Cp%¤%Ðb(W ¤o , sÆ +-,¥¡+(rÃCp(• o– s z sÇ €È *~È *(É *:(Ê (Ë *(Ì *l[*(Í *k[*:(Î }Ï *0 3{Ï %Œ¦¤%Œb¤oë ¥¦*:(Ð }Ñ *B{Ñ þoí *:(Ò }Ó *0Z{Ó oÔ sÕ **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sÍŒ€¥†8¨Ð¥(W o ,sÏŒ¥†8Ðb(W o ,sÑŒ‚¥†+]Б(W o ,sÓŒƒ¥†+9Ю(W o ,sÕŒ„¥†+("++ (#+€Ö *~Ö *:(U }× *B{× þo *:(O }Ø *0]{Ø oV sÙ *:(‰ }Ú *0 3{Ú %Œ¦¤%Œ§¤oë ¥­*:(U }Û *B{Û þo *:(O }Ü *0]{Ü oV sÝ *(d *Xg*(^ *Xh*(M *X*(O *X*(X *X*(g *XÒ*(a *XÑ*(U *X*(R *X*([ *X*( *X*(É *X*(Þ *&(Ç **o &*09[Ц(W Ч(W Э(W o , o +9íФ(W o ,sôŒ€¥†8ÏÐ¥(W o ,söŒ¥†8¨Ðb(W o ,søŒ‚¥†8Б(W o ,súŒƒ¥†+]Ю(W o ,süŒ„¥†+9Ц(W o ,sþŒ_¥†+($++ (%+€ß *~ß *:(U }à *B{à þo *:(O }á *0]{á oV sâ *:(‰ }ã *0 3{ã %Œ¦¤%Œ§¤oë ¥­*:(U }ä *B{ä þo *:(O }å *0]{å oV sæ *(d *Ö³*(^ *Öµ*(M *Ö*(O *Ö*(X *Ö*(g *׆*(a *ׇ*(ç *ׇ*(U *×*(R *×*([ *×*( *X*(É *X*(Þ *&(Ç **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sŒ€¥†8¨Ð¥(W o ,sŒ¥†8Ðb(W o ,s!Œ‚¥†+]Б(W o ,s#Œƒ¥†+9Ю(W o ,s%Œ„¥†+(&++ ('+€è *~è *:(U }é *B{é þo *:(O }ê *0]{ê oV së *:(‰ }ì *0 3{ì %Œ¦¤%Œ§¤oë ¥­*:(U }í *B{í þo *:(O }î *0]{î oV sï *(d *Zg*(^ *Zh*(M *Z*(O *Z*(X *Z*(g *ZÒ*(a *ZÑ*(U *Z*(R *Z*([ *Z*( *Z*(É *Z*(Þ *&(Ç **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sDŒ€¥†8¨Ð¥(W o ,sFŒ¥†8Ðb(W o ,sHŒ‚¥†+]Б(W o ,sJŒƒ¥†+9Ю(W o ,sLŒ„¥†+((++ ()+€ð *~ð *:(U }ñ *B{ñ þo *:(O }ò *0]{ò oV só *:(‰ }ô *0 3{ô %Œ¦¤%Œ§¤oë ¥­*:(U }õ *B{õ þo *:(O }ö *0]{ö oV s÷ *(d *س*(^ *ص*(M *Ø*(O *Ø*(X *Ø*(g *Ù†*(a *Ù‡*(U *Ù*(R *Ù*([ *Ù*( *Z*(É *Z*(Þ *&(Ç *BŒ0Œ0þ*6Œ0(¼ *0-o\ oÒ (rëCp(• o– (` s® z~Æ *0Ë^u+ 9uu+ ,   (l*uM,?uM,(m*uT,  (k*(*+*uT,í +ÝuM,(uM, +¡uT,¹ +©uT,§ 8”ÿÿÿ0Í_(´+-U(³+-8¬(³+-+肋 ¥“ (Ê ,+(Ê , {½ +,(az8f(´+-'(³+-+¡(³+-8”ÿÿÿ¥“¥“ +£¥’ ¥’ (Ì ,+(Ì , {½ +,(azþo *0ib9\9Tu\ 9ßu\ ,   (ˆ *uT,þ(b*u,¥2þoø *u,  þ(c*(>+:·(?+-au,$  ¥2oø   /* 1**u  ,   o   /* 1**(*+*(?+-'u,  8’ÿÿÿu  ,Ð  +°¥¯ ¥¯ 4* þ*(>+:(?+--u,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(?+--u,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥¯¥¯ 8gÿÿÿ¥®¥®/*þ*uT, 83þÿÿu, 8<þÿÿu,  8Hþÿÿ(>+:(?+--u,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(?+--u,  8þÿÿu  9Wþÿÿ  84þÿÿ¥¯¥¯ 8þÿÿ(>+:(?+--u,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(?+--u,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥¯¥¯ 8õýÿÿ¥®¥®8‰þÿÿ*,**0 NW2*Xoù Xoù (d ,*!X+²0 dW 2*X Xoú X Xoú (d ,* !X +œ0 ~d      2* !(f  , * !X 8‚ÿÿÿ0ce2*oû oû /+þ ,*o$ o$ /+þ , *X+0 }W2*X¤‘Y3oü oü (d+X(j ,*!X8ƒÿÿÿ0 2W2*o$ j!oû (i*0 go" 3 o" þ+9uoý oý /+þ ,*o$ j o$ j /+ þ,*    !(e*o" 3 o" þ+9ãoû oû /+þ ,*oû oû  /+ þ,*o$ j o$ j o$ j o$ j   /+  þ  , *  /+  þ,*          !(g*o" o"   /+ þ ,*o"  (h,*‘(j*0R1Ži Ži /+þ ,*  /* £ £(d,  +Ù X +Ò*0ahŽi Ži /+þ ,*  /9 £¦ £¦/+þ,  +Ê X +Ã*~Ç *~È *ZŒ0Œ0þoo *V(o¥2þ(+*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*0DiŽi Ži þ -*  /% £¦ £¦þ- +Þ X +×*0DiŽi Ži þ -*  /% £b £bþ- +Þ X +×*ž, þþ+, þþ+,*þ*0HiŽi Ži þ -*  /) £“ £“(x- +Ú X +Ó*ž, þþ+, þþ+,*þ*0HiŽi Ži þ -*  /) £’ £’(z- +Ú X +Ó*0DiŽi Ži þ -*  /% ££ ££þ- +Þ X +×*0DiŽi Ži þ -*  /% £‘ £‘þ- +Þ X +×*0Tmu+ 9¿u+ ,   (‡*uM9çuM,(v*u¥9öu¥  ,     (w*u¦  9ûu¦  ,  (}*u§9ûu§,(|*u¨9ƒu¨,(y*u©,Eu©,({*uT,(†*þoZ *uT,ê+Øu©,(u©, +šuT,µ+£uT,£8Žÿÿÿu¨,ou¨, 8!ÿÿÿu©,1u©, 8'ÿÿÿuT9?ÿÿÿ8*ÿÿÿuT9'ÿÿÿ8ÿÿÿu©,1u©, 8ÑþÿÿuT9éþÿÿ8ÔþÿÿuT9Ñþÿÿ8¼þÿÿu§9ëu§, 8þÿÿu¨,ou¨, 8&þÿÿu©,1u©, 8,þÿÿuT9Dþÿÿ8/þÿÿuT9,þÿÿ8þÿÿu©,1u©, 8ÖýÿÿuT9îýÿÿ8ÙýÿÿuT9Öýÿÿ8Áýÿÿu¨,ou¨, 8Týÿÿu©,1u©, 8ZýÿÿuT9rýÿÿ8]ýÿÿuT9Zýÿÿ8Eýÿÿu©,1u©, 8ýÿÿuT9ýÿÿ8ýÿÿuT9ýÿÿ8ïüÿÿu¦  9æu¦  ,   8#üÿÿu§9ëu§, 8(üÿÿu¨,ou¨, 80üÿÿu©,1u©, 86üÿÿuT9Nüÿÿ89üÿÿuT96üÿÿ8!üÿÿu©,1u©, 8àûÿÿuT9øûÿÿ8ãûÿÿuT9àûÿÿ8Ëûÿÿu¨,ou¨, 8^ûÿÿu©,1u©, 8dûÿÿuT9|ûÿÿ8gûÿÿuT9dûÿÿ8Oûÿÿu©,1u©, 8ûÿÿuT9&ûÿÿ8ûÿÿuT9ûÿÿ8ùúÿÿu§9ëu§, 8[úÿÿu¨,ou¨, 8cúÿÿu©,1u©, 8iúÿÿuT9úÿÿ8lúÿÿuT9iúÿÿ8Túÿÿu©,1u©, 8úÿÿuT9+úÿÿ8úÿÿuT9úÿÿ8þùÿÿu¨,ou¨, 8‘ùÿÿu©,1u©, 8—ùÿÿuT9¯ùÿÿ8šùÿÿuT9—ùÿÿ8‚ùÿÿu©,1u©, 8AùÿÿuT9Yùÿÿ8DùÿÿuT9Aùÿÿ8,ùÿÿu¥9Üu¥  ,    82øÿÿu¦  9æu¦  ,   87øÿÿu§9ëu§, 8<øÿÿu¨,ou¨, 8Døÿÿu©,1u©, 8JøÿÿuT9bøÿÿ8MøÿÿuT9Jøÿÿ85øÿÿu©,1u©, 8ô÷ÿÿuT9 øÿÿ8÷÷ÿÿuT9ô÷ÿÿ8ß÷ÿÿu¨,ou¨, 8r÷ÿÿu©,1u©, 8x÷ÿÿuT9÷ÿÿ8{÷ÿÿuT9x÷ÿÿ8c÷ÿÿu©,1u©, 8"÷ÿÿuT9:÷ÿÿ8%÷ÿÿuT9"÷ÿÿ8 ÷ÿÿu§9ëu§, 8oöÿÿu¨,ou¨, 8wöÿÿu©,1u©, 8}öÿÿuT9•öÿÿ8€öÿÿuT9}öÿÿ8höÿÿu©,1u©, 8'öÿÿuT9?öÿÿ8*öÿÿuT9'öÿÿ8öÿÿu¨,ou¨, 8¥õÿÿu©,1u©, 8«õÿÿuT9Ãõÿÿ8®õÿÿuT9«õÿÿ8–õÿÿu©,1u©, 8UõÿÿuT9mõÿÿ8XõÿÿuT9Uõÿÿ8@õÿÿu¦  9æu¦  ,   8tôÿÿu§9ëu§, 8yôÿÿu¨,ou¨, 8ôÿÿu©,1u©, 8‡ôÿÿuT9Ÿôÿÿ8ŠôÿÿuT9‡ôÿÿ8rôÿÿu©,1u©, 81ôÿÿuT9Iôÿÿ84ôÿÿuT91ôÿÿ8ôÿÿu¨,ou¨, 8¯óÿÿu©,1u©, 8µóÿÿuT9Íóÿÿ8¸óÿÿuT9µóÿÿ8 óÿÿu©,1u©, 8_óÿÿuT9wóÿÿ8bóÿÿuT9_óÿÿ8Jóÿÿu§9ëu§, 8¬òÿÿu¨,ou¨, 8´òÿÿu©,1u©, 8ºòÿÿuT9Òòÿÿ8½òÿÿuT9ºòÿÿ8¥òÿÿu©,1u©, 8dòÿÿuT9|òÿÿ8gòÿÿuT9dòÿÿ8Oòÿÿu¨,ou¨, 8âñÿÿu©,1u©, 8èñÿÿuT9òÿÿ8ëñÿÿuT9èñÿÿ8Óñÿÿu©,1u©, 8’ñÿÿuT9ªñÿÿ8•ñÿÿuT9’ñÿÿ8}ñÿÿuM9ÈuM, 8Uðÿÿu¥9Üu¥  ,    8Zðÿÿu¦  9æu¦  ,   8_ðÿÿu§9ëu§, 8dðÿÿu¨,ou¨, 8lðÿÿu©,1u©, 8rðÿÿuT9Šðÿÿ8uðÿÿuT9rðÿÿ8]ðÿÿu©,1u©, 8ðÿÿuT94ðÿÿ8ðÿÿuT9ðÿÿ8ðÿÿu¨,ou¨, 8šïÿÿu©,1u©, 8 ïÿÿuT9¸ïÿÿ8£ïÿÿuT9 ïÿÿ8‹ïÿÿu©,1u©, 8JïÿÿuT9bïÿÿ8MïÿÿuT9Jïÿÿ85ïÿÿu§9ëu§, 8—îÿÿu¨,ou¨, 8Ÿîÿÿu©,1u©, 8¥îÿÿuT9½îÿÿ8¨îÿÿuT9¥îÿÿ8îÿÿu©,1u©, 8OîÿÿuT9gîÿÿ8RîÿÿuT9Oîÿÿ8:îÿÿu¨,ou¨, 8Ííÿÿu©,1u©, 8ÓíÿÿuT9ëíÿÿ8ÖíÿÿuT9Óíÿÿ8¾íÿÿu©,1u©, 8}íÿÿuT9•íÿÿ8€íÿÿuT9}íÿÿ8híÿÿu¦  9æu¦  ,   8œìÿÿu§9ëu§, 8¡ìÿÿu¨,ou¨, 8©ìÿÿu©,1u©, 8¯ìÿÿuT9Çìÿÿ8²ìÿÿuT9¯ìÿÿ8šìÿÿu©,1u©, 8YìÿÿuT9qìÿÿ8\ìÿÿuT9Yìÿÿ8Dìÿÿu¨,ou¨, 8×ëÿÿu©,1u©, 8ÝëÿÿuT9õëÿÿ8àëÿÿuT9Ýëÿÿ8Èëÿÿu©,1u©, 8‡ëÿÿuT9Ÿëÿÿ8ŠëÿÿuT9‡ëÿÿ8rëÿÿu§9ëu§, 8Ôêÿÿu¨,ou¨, 8Üêÿÿu©,1u©, 8âêÿÿuT9úêÿÿ8åêÿÿuT9âêÿÿ8Íêÿÿu©,1u©, 8ŒêÿÿuT9¤êÿÿ8êÿÿuT9Œêÿÿ8wêÿÿu¨,ou¨, 8 êÿÿu©,1u©, 8êÿÿuT9(êÿÿ8êÿÿuT9êÿÿ8ûéÿÿu©,1u©, 8ºéÿÿuT9Òéÿÿ8½éÿÿuT9ºéÿÿ8¥éÿÿu¥9Üu¥  ,    8«èÿÿu¦  9æu¦  ,   8°èÿÿu§9ëu§, 8µèÿÿu¨,ou¨, 8½èÿÿu©,1u©, 8ÃèÿÿuT9Ûèÿÿ8ÆèÿÿuT9Ãèÿÿ8®èÿÿu©,1u©, 8mèÿÿuT9…èÿÿ8pèÿÿuT9mèÿÿ8Xèÿÿu¨,ou¨, 8ëçÿÿu©,1u©, 8ñçÿÿuT9 èÿÿ8ôçÿÿuT9ñçÿÿ8Üçÿÿu©,1u©, 8›çÿÿuT9³çÿÿ8žçÿÿuT9›çÿÿ8†çÿÿu§9ëu§, 8èæÿÿu¨,ou¨, 8ðæÿÿu©,1u©, 8öæÿÿuT9çÿÿ8ùæÿÿuT9öæÿÿ8áæÿÿu©,1u©, 8 æÿÿuT9¸æÿÿ8£æÿÿuT9 æÿÿ8‹æÿÿu¨,ou¨, 8æÿÿu©,1u©, 8$æÿÿuT9<æÿÿ8'æÿÿuT9$æÿÿ8æÿÿu©,1u©, 8ÎåÿÿuT9æåÿÿ8ÑåÿÿuT9Îåÿÿ8¹åÿÿu¦  9æu¦  ,   8íäÿÿu§9ëu§, 8òäÿÿu¨,ou¨, 8úäÿÿu©,1u©, 8åÿÿuT9åÿÿ8åÿÿuT9åÿÿ8ëäÿÿu©,1u©, 8ªäÿÿuT9Âäÿÿ8­äÿÿuT9ªäÿÿ8•äÿÿu¨,ou¨, 8(äÿÿu©,1u©, 8.äÿÿuT9Fäÿÿ81äÿÿuT9.äÿÿ8äÿÿu©,1u©, 8ØãÿÿuT9ðãÿÿ8ÛãÿÿuT9Øãÿÿ8Ããÿÿu§9ëu§, 8%ãÿÿu¨,ou¨, 8-ãÿÿu©,1u©, 83ãÿÿuT9Kãÿÿ86ãÿÿuT93ãÿÿ8ãÿÿu©,1u©, 8ÝâÿÿuT9õâÿÿ8àâÿÿuT9Ýâÿÿ8Èâÿÿu¨,ou¨, 8[âÿÿu©,1u©, 8aâÿÿuT9yâÿÿ8dâÿÿuT9aâÿÿ8Lâÿÿu©,1u©, 8 âÿÿuT9#âÿÿ8âÿÿuT9 âÿÿ8öáÿÿ0îo9á9Ùu\ 9u\ ,   (” *uT,þ(~*u,þoÿ *(´+-X(³+- þoZ *(³+-+쥓¥“ ,   þþ+, þþ+,* þ*(´+-)(³+-+ž(³+-8‘ÿÿÿ¥“¥“ +£¥’ ¥’ ,   þþ+,   þþ+,*  þ*uT, 8óþÿÿu, 8ýþÿÿ(´+-/(³+-8ÿÿÿ(³+-8÷þÿÿ¥“¥“ 8ÿÿÿ(´+-/(³+-8Íþÿÿ(³+-8Àþÿÿ¥“¥“ 8Ïþÿÿ¥’¥’  8'ÿÿÿ*,**0 R2*Xoù Xoù (,(!X+±*0h 2* X Xoú  X Xoú (,4  !X  +›*0‚q        2*  !(,7  !X  8ÿÿÿ*0@2*oû oû 3o$ o$ þ+,X+Ã*0 ‚ 2*X¤‘Y3oü oü (+X(…,3!X  8€ÿÿÿ*0 5W2*o$ j!oû („*0 —ro" 3 o" þ+,Woý oý 3Co$ j o$ j  3+   !(€***o" 3 o" þ+9®oû oû @•oû oû  @|o$ jo$ j o$ j o$ j  3   þ+,?        !(‚****o" o" 3Lo" (ƒ,,‘(…***0IiŽi Ži þ -*  /* £ £(- +Ù X +Ò*~É *~Ê *j(ˆŒ0Œ0þo *j(‰Œ0Œ0þo *ZŒ0Œ0þo **~Ë *~Ì *0DsŽi Y 1 + 2' boW o X w ZX Y +Õ*0>sŽi Y 1 + 2! b£¦X w ZX Y +Û*0>sŽi Y 1 + 2! b£bX w ZX Y +Û*0?sŽi Y 1 + 2" b£‘iX w ZX Y +Ú*0‚1o" YEo% bo% X ¦X*o$ o# XY X1X + 2) boW o X wZX Y +Ó *0t9•uT ,g u+ ,   (*uM, (‘*u¥, (’*u¦,   (“*(”*u  ,   þo *þoU **f(¥8Œ0þ(•*js¯¥8Œ0þ(•*BŒ0þ(•*0%u(× (Ö (+ bX(++a*0=v(¸ (· (¶ (+bX(++a b X(,+a*0Xw( ( ( ( (+bX(++abX(,+bX (-+aa*0ry( ( (  (  (  (+bX(++abX(,+bX (-+aabX(.+a*04z(× (Ö (× (Ö (+,  þ(/+**0U{(¸ (· (¶ (¸ (· (¶  (+, (/++, þ(0+**0v|( ( ( ( ( ( ( ( (+, (/++, (0++,  þ(1+**0—}( ( (  (  (  ( ( (  (  (   (+, (/++, (0++,  (1++,  þ(2+**09~(× (Ö (× (Ö (+,* þ(3+*0\(¸ (· (¶ (¸ (· (¶  (+,*(3+,*þ(4+*0€( ( ( ( ( ( ( ( (+,*(3+  , *(4+  , * þ(5+*0¢( ( (  (  (  ( ( (  (  (   (+  , *(3+  , *(4+  , * (5+  , * þ(6+*Fo &}½ *"{½ *2þ(d*2þ(d**o &*6þ(*n(rDp(• o– sÔ z*o &*6þ(*n(rDp(• o– sÔ zFo &}¾ *Ž|¿ {¾ (R -*{¾ s¯*J¥8þ(*¦{¿ Y}¿ {¿ 1¥8þ(•***o &*J¥8þ(*B¥8þ(•**o &*J¥8þ(*B¥8þ(•******šþ,+ ~  þþ,¥0*s  z"¥0*~u0þ,*þ,*~  þ*.u0þ*04Œ0, þ0oé **n(r­p(• o– sÔ zn(r7Dp(• o– sÔ z–Œ0,*(r­p(• o– sÔ z6s *&o¯ *(7+*&£0**¤0**(Á *.( *0 r‚/+ /+ sà Y 2AY2&XX(Á ( XX3ÚX X3¿*0@½ Y 24 Y  2X X (Á ( X X3áX X3Ì*.(• *6(– *0 ¨ƒ/+ /+ /+ s— Y2dY2H Y 2,  XX X(• (–  X  X3ÔXX3¸XX3œ *0 d1 Y 2W Y  2BY2)X XX (• (– XX3× X X3¾X X3©*6(” *>(’ *0 ã„/+ /+ /+ /+  s‘ Y?‹Y2l Y   2P Y   24  XX X X(” (’  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 ŽÜ Y ?~ Y  2fY2MY20X XXX  (” (’ XX3ÐXX3³ X X3šX X@‚ÿÿÿ**o &*0ņЦ(W oY ,8£Ð!(W oR Ži-8…Ð(W o ,8lÐr(W oÅ ,+VÐ (W oR Ži1+<Ð#(W oR Ži-+!£ ¥#o4_-+€ *~ *",**",**",**",**2rWDpsè z2r¿Dpsè z~Á *~ *~à *~Ä *~Å *0HŒ{ { @.( E3j¡Øt¯ t¯ (9{  { þ(+*t°t°(9{  {    þ(3+*t± t± (9 {   {  þ(4+*t²t²(9{ { þ(5+*t³t³(9{ { þ(6+*Y*00¥®þ9{ { @( E+Z‰¸t¯ t¯ {  { þ(+*t°t°{ {   þ(3+*t± t±  {   {    þ(4+*t²t²{ { þ(5+*t³t³{ { þ(6+*Y**0/u® 9{ { @( E-\‹ºt¯ t¯ { { þ(+*t°t°{  {    þ(/+*t± t±  {   {  þ(0+*t²t²{ { þ(1+*t³t³{ { þ(2+***0\—( E/d™Îtµ tµ (9 { {  þ(+*t¶t¶(9 { { þ(3+*t· t· (9  {   {    þ(4+*t¸ t¸(9  { { þ(5+*t¹t¹(9 { { þ(6+*tºtº(9 { { þ(8+*0S˜{ { @9( E+Z‰¸çtµ tµ {  { þ(+*t¶t¶{ {   þ(3+*t· t·  {   {    þ(4+*t¸t¸{ { þ(5+*t¹t¹{ { þ(6+*tºtº{ { þ(8+*Y*0F™ ( E-\¾ïtµ  ¹y7ž{ Œ0(•bcXXX *t¶  ¹y7ž { Œ1(•bcXXX *t· ¹y7ž{ Œ2(•bcXXX *t¸ ¹y7ž{ Œ3(•bcXXX *t¹  ¹y7ž {   Œ4(•bcXXX *tº  ¹y7ž {   Œ5(•bcXXX *0Q˜{ { @9( E+Z‰¸çtµ tµ {  { þ(+*t¶t¶{ {   þ(/+*t· t·  {   {    þ(0+*t¸t¸{ { þ(1+*t¹t¹{ { þ(2+*tºtº{ { þ(9+**0K˜{ { @3( E*X†´âtµ tµ {  { þ(+*t¶t¶{ {   þ(:+*t· t·  {   {    þ(;+*t¸t¸{ { þ(<+*t¹t¹{ { þ(=+*tºtº{ { þ(>+**0•¢( E/d™Î8t¼ t¼ (9 {  {   þ(+*t½t½(9 {! {! þ(3+*t¾ t¾ (9  {"   {"    þ(4+*t¿ t¿(9  {# {# þ(5+*tÀtÀ(9 {$ {$ þ(6+*tÁtÁ(9 {% {% þ(8+*tÂtÂ(9 {& {& þ(?+*0i£( E'V…´ãt¼ t¼ {  {   þ(+*t½t½{! {! þ(3+*t¾t¾ {"   {"    þ(4+*t¿ t¿  {#  {# þ(5+*tÀtÀ{$ {$ þ(6+*tÁtÁ{% {% þ(8+*tÂtÂ{& {& þ(?+*0{¤ ( E-\¾ï t¼  ¹y7ž{  Œ0(•bcXXX *t½  ¹y7ž {! Œ1(•bcXXX *t¾ ¹y7ž{" Œ2(•bcXXX *t¿ ¹y7ž{# Œ3(•bcXXX *tÀ  ¹y7ž {$   Œ4(•bcXXX *tÁ  ¹y7ž {%   Œ5(•bcXXX *t  ¹y7ž {& ŒÃ(•bcXXX *0i£( E'V…´ãt¼ t¼ {  {   þ(+*t½t½{! {! þ(/+*t¾t¾ {"   {"    þ(0+*t¿ t¿  {#  {# þ(1+*tÀtÀ{$ {$ þ(2+*tÁtÁ{% {% þ(9+*tÂtÂ{& {& þ(@+*0b£( E&T‚°Þ t¼ t¼ {  {   þ(+*t½t½{! {! þ(:+*t¾t¾ {"   {"    þ(;+*t¿ t¿  {#  {# þ(<+*tÀtÀ{$ {$ þ(=+*tÁtÁ{% {% þ(>+*tÂtÂ{& {& þ(A+*07J{Þ ,. {Þ {/ /¤0X+Ë**0–(r5Ep(• o– €Á (rcEp(• o– €Â (r…Ep(• o– €Ã (r«Ep(• o– €Ä (r6"p(• o– €Å s‘ €Æ s¥€Ç s¥€È s©€É s¬€Ê s³€Ë s¶€Ì (o¥2€Í (¥8€Î (Ž¥8€Ï s…€Ð s‡€Ñ s‰€Ò s‹€Ó s€Ô s€Õ s‘€Ö s“€× s•€Ø s—€Ù s™€Ú s›€Û s€Ü sŸ€Ý s¡€Þ *:(U }' *B{' þo( *:}) ( *B{) þo *:(U }* *B{* þo( *:}+ ( *B{+ þo *:(c }, *>{, o- *:(U }. *B{. þo( *:(‰ }/ *Z{/ s þo0 *:(_ }1 *^{1 sU þo2 *:(j }3 *0 {3 s4 þo5 *:(€ }6 *0 {6 s7 þo8 *~ê *rp*r÷4p*rç3p*r 4p*rmp*r³0p*r‡0p*rß0p*rÇEp*rïEp*r!Fp*rÓ4p*r6"p*rS5p*r…Ep*r©4p*rÛp*rp*rá/p*rZ p*r«Ep*rIFp*rlp*r’p*rwFp*r`p*rˆp*rºp*røp*r¶p*r—Fp*rE6p*r(p*r5Ep*rëCp*rDp*rµBp*rÃCp*r%Cp*rÿBp*r‡Cp*r_Cp*r±Fp*r@p*r»@p*rÝ@p*rý@p*r­p*r7Dp*rcEp*rÂ&p*r‘.p*rÙp*rqp*rõp*rÿ/p*rS.p*ru.p*rO/p*ry/p*rŸ/p*rÃ/p*r—p*rQp*r—3p*rþ p*rò&p*r'p*rP'p*r’'p*rÐ'p*r:(p*r(p*rv(p*rl)p*r”)p*r¼(p*r%-p*r.p*r5p*r, p*r‰5p*r@p*r|p*r¼p*rd"p*rˆ"p*rìp*rÂp*r´p*r(%p*rÞp*r@p*rJ%p*r¨p*rh%p*r¤%p*rŠp*r¾p*ròp*rè%p*ršp*r*p*r‚p*rÚp*r p*r8 p*rT$p*rš$p*rTp*rÉFp*r‚p*rp*rnp*rÔp*rp*r:p*rp*rXp*rèp*r¼p*r p*rJ!p*rˆ!p*r¾!p*r²"p*rd$p*rœp*rp*rš p*rú p*r"!p*rø"p*r&p*röp*r/p*rµ.p*rä p*r^ p*r‚ p*rü p*r” p*r® p*r2 p*R((• þo– *b((• o– (` *f((• o– (þ *j((• o– (Á *0¥rçFp(9 s: €ê *BSJB v4.0.30319l$ñ#~ñ£#Strings¬”øF#US¤Û#GUID´Û0j#BlobW¶ ‰ú3ÜTë õ:š"¤Gÿ!Ñpy AÅ2+]+~+²+%+E2Z+h2Ë +B 2i N º +Ø +) 25 N O +­ N » N Ê N ~+ ”ˆÌ+Ô+ï+ +O+++#+ÌN  ú"â"3# x#â" ƒ#â"0( Y(â"a)+ñ*+i+X+÷+ì+,+œ,ì+ÿ,ì+655!9X+@> E øE nM2¼Q *YN ïY+þ]N Sd+{t2Sv3vmv3vvv3v°v‘vÄv+êvÚvwÚvwÚv.w Ew bw €w ™w ²w Íw æw x :x)x\x)x~x ™x ²x3vãxÐx?÷x'z+Fz+^z+Þ^+»~3vÖ~Ðxó~ÐxÐx£Ðxt„W„†„W„„+Þ„É„ÿ„)x2…+¢…+†Ðx$‡+;‡+y‡m‡ˆ ç‰+D‹+h‹W„Ž‹W„}Œ+‘+¹‘N Á‘ é‘ &’+å“ 4”+Ï•+˜+­šN ÍšX+¿y ;yX+‚©+HªX+†ªX+êX+åªX+«X+1«X+g­59®X+˜±X+N³+  ´ˆ ­´ˆô+œµ+ $¶ˆå¶+ Š·ˆ}+»+ß½Õ½¾+y+œÁ+¨Î+³Ò+Ó+í´+†Ó óñˆ ýñâ" 4òˆ#ôôÅö+Yy+ 0 â" T â"t N ¡ â" » â" Ò â" ô â" â"Ë+Ð+Ö+Ü+á+è+ï+ â" 6â" Qâ" ˆâ":+J+ýì+ì+&+;ì+Sì+ùãj Õ½ð Õ½!+6!5f!5}!+"X+Á"X+û"X+P'X+k'X+}'X+®'X+y+1(5,+3 &3 -3 b5+Û6Ä6ü6+Š7m‡9+Ã+0y y¼LÉ„¡O ¶· £\5ÕV5ÔY3vOh+Éi+kk+7lÕ½Vr+»w+Þ‚+"!XB!iB !ƒB !¢B!¼B!ÓB !òB !B !-B !DB !aB!sB!‡B!¡B!·B!ËB!æB!B! B!4B!LB!fB!|B!™B!¯B!!¿B"!ÐB#!öB$! B%!B&!)B'!MB+!iB 1!ˆB!3!«B"5!ÁB#7!äB$9!ýB,I!B,J!;B-L!TB1T!jB1U!‡B1V!¡B1W!½B1X!äB1Y!B1Z B2]‚~2k$ƒ4k$Ž5m™6o³7q ÍB8s‚~8ƒ$Ü;ƒ$ç<…$ò=‡ý>‰?‹1@ KBA‚~B¡$Z&F¡$e&G£$p&H¥${&I§†J© K«ºL­ÔM¯ îBN±‚~OÅ$ý2TÅ$2UÇ$2VÉ$2WË$)2XÍ4YÏNZÑh[Ó‚\Õœ]× ¶B^Ù‚~_ï$Å>eï$Ð>fñ$Û>gó$æ>hõ$ñ>i÷$ü>jùkû!lý;mÿUnoo‰p £Bq‚~r$²Jy$½Jz!$ÈJ{#$ÓJ|%$ÞJ}'$éJ~)$ôJ+ÿ€- /3 ‚1M ƒ3g „5 …7› †9 µ B%‡; Õ BŠG ä BŠI!ñ BŠS!ý BŠY  B‹f‚~Œw 5  Žw‚~‘‘ w  “‘¡   ‡ •”¡ ± ‡ •–!È ‡ 5•–  ê •š!C  —¨ [  ™­…~™²$e vœ²$l vžµt £»Š ¤¾!¡  ¥Ä!Ø  ©ø!ç  ªú   ¬ý…~¬$ †¯$ †³ ´ 0 µ!F  ¶!R  ºE!} a »G!‹ a ¾S – a ޾`!¨ a ¾b ´ ‡ ¾y Ê ‡ ¿|!Ù ‡ 5Á„ è ‡ Áˆ ö ‡ ÄŒ€ /  Å…~Æ$5 pÉ$B pÉž$L pÊ S Ë¢o Ì£ˆ Í¥€ ž  Χ…~ί$¥ ѯ$ª Ô³$¯ Úº´ ݾÈ ÞÂÜ ßÉ  ð  àÍ!ý  àÐ  BêÜ B–ëÞ!E)ë߀ O)ñê…~òù$TÄöù$]Äøü$eÄùþ$pÄûyý‘þ¨ÿ   Ú)…~_$èì4_$ôì5a$ì6c$ì7e$ì8g$)ì:j$;ì;l$Kì<n$]ì=p$mì>r$€ì?t$‘ì@v$¤ìAx$µìBz$ÁìC|$ÖìD~$éìE€$òìF‚$ýìG„$ ìH†$ìIˆ$ìK‹-LHMfN‘…O“ŸP•¹Q˜ÚRšùSœTž9U [V¢{W¤X¦½Y¨ØZªü[¬\®6]°P^²m_´‡`¶ža¹ ¼)b» Ç)¤dò Ô‡ dô ܇ hù ì‡ jþ ú‡ k ‡ n ‡ s%‡ w 3‡ y!A‡ z T‡ z+!^‡ {-j‡ {N‹‡ [!•‡ ‡l¯‡ ˆn íÈŽ€ ÿȃ È‘ˆ #È” 5Ș˜ GÈ£ YÈ£° kȪ¿ }ȲÐ!¬´Ô ЬµÖ ݵ  ݵ  ݵ  "ݵ  )ݵ  0ݵ  5ݵ !=ê µ !Nê µ !_ê µ  jê µ  €ê µ  žê ¶ ºê · âê º! ê º $ê ½¡ 7ê Å)¡ Jê Å-€pXÅ4€}XË4€Ÿ…Ð4³BÐ4 ʪÐJ àªÐL%öÐN  ®ÑX "®ÑZ%8Ñ\€L…Ón€d…Öo‘hÖožhÖp€ª¬Öq ¶²Ö Ù¶× ÷ºØ‘ ¾Ù“ 3ÂÛ• WÆÛ— sÊÜ™ ‘ÎÝ› ­ÒÞ ËÖߟ åÚà¡ Þᣠ#â㥠Gæå§ bêç© ‡æé« ©îë­ Íòí¯ óöù± +г 6úµ Bþ · Y ¹!r » » Ž ½ ¿ ±Á Éà ÜÅ êÇ É " Ë 5"Í FÏ V&Ñ i*Ó v*Õ ˆ¾× “.Ù ž2Û ·6Ý Î:ß Ö2á ï>ã ù2å 2ç +Bé ;Fë WFí u2 ï… Ÿ"ñ…~"ú$°h%ú$·h*$½h+Ä,Ú- ï.  J/ J/ %J/ 7J/ IJ/ [2/ uJ1 ‡J1 œJ1 ³B1 €Ï¬1"€×…1# ÞN$%å&%î(%ø*%ÿ,% .% 0%% 2%. 4%7 6%H8 YR:%g<%u>%‚@%—B%¢D%·F%ÊH%çJ%úL%N%&P%7R%@T%KV%VX%dZ%t\%„ ^%–!`%ª"b€¾È#d%Ç#– àZ#™ ë^%› * b% H f%Ÿ R j%¡ Z n&£ o ^&¥ ” '§…~)´$ª \.´$´ \/¶$¿ \1¹$Ì \4½Ô 5¿í 6Á!7Ä#!8È :!r9Ê ]!v9Ì ‚!r;Î §!v;Ð Ì!z=Ò Ø!j=Ô â!~>Ö "¾>Ø  "‚>Ú "¾>Ü #"J>Þ ;"J?à€U"…@â€f"…aãt"Èaã!Œ"ac ”"†be ¦"2cg ¶"Šdi Ó"Žgk #’hm #–jo >#šjq Z#žks ”#žku ²#žkw Ð#žky î#žk{  $žk} *$žk H$žk f$žkƒ …$žk… ¤$žk‡ Ã$žk‰ â$žk‹ %žk  %žk ?%žk‘ ^%žk“ }%žk• œ%žk— »%žk™ Ú%žk› ù%žk &žkŸ 7&žk¡ V&žk£ u&žk¥ ”&žk§ ³&žk© Ò&žk« ñ&žk­ 'žk¯ /'žk± N'žk³ m'žkµ Œ'žk· «'žk¹ Ê'žk» é'žk½ (žk¿ '(¢kÁ ;(¢kà F(¢kÅ Q(¦kÇ m(ªkÉ w(®mË (fmÍ ‰(²mÏ ¨(¶mÑ Ç(²nÓ æ(¶oÕ )ºq×)¬rÙ()¬ré€:)…r @)‡ Ú … Q)Ú %m)ÂÛ %x)Ý! %ƒ)Âß# %‘)á'  Ÿ)Êã)  ­)Îä+ %¾)Âå- %Ê)è1 %Ö)Âë3 %æ)í7 %ö)î9 %þ)ò= %*öA %*øC   *ÖúE  -*ÖûG :*‡ üI  F*ÚüR  Q*ÚþT  _*ÚV  p*ÚX  ~*ÚZ  Š*Ú\  š*Ú ^  ¥*Ú `  ²*Ú b €½*‡ d  Ê*Úg  ×*Þi  ä*âk   +æm  +êo  2+îq  E+òs  {+öu  Œ+úw  ™+þy  ¨+Þ{  ·+â} Æ+‡   Ô+  ,ƒ  ), …  A,þ‡  Y,‰  q, ‹  ‡,!  À," %Õ,#‘  ê,$“ % -$•  5-*—  J-0™  _-1› %t-2  Š-3Ÿ  Ÿ-3¡  ²-þ5£  Í-"6¥  è-"7§  .&8© .‡ :«  -.*:±  <..;³  M.2<µ  c.6>·  y.:?¹  .>C»  ¥.>D½  ¹.*F¿  É.BGÁ %Û.Hà €ö.‡ IÇ  /ÚIÊ  /ÞJÌ  !/âKÎ €./‡ LÐ  C/FLÕ  Y/JM×  q/NNÙ  ‰/ROÛ  ”/JOÝ  ¡/NOß  ®/FOá  Ê/JPã  è/NQå  0Rç %0Sê  0VUì  (0ZYî  10:]ð  :0:bò €A0‡ gô  K0Rg  Z0úh  g0Ri  0új  •0Rj  ®0úk  Å0Rk  Þ0Fm  õ0Rp  1Jr  '1Ru  @1Nw  Y1^z  z1^{ 1| £1} ¨1~  ¹1R‚#  Ä1R„% à1†'  í1b‹0  2^Œ2 €2‡ 4 … '2I …~Q $02fQ $32f‘S $92f’U B2“W T2”Y i2•[ %2–]  µ2R–_  Ä2Rœa  Ó2^¢c  ê2^£e  ô2R¤g  3^¦i  3F§k  3R©m  #3^«o  -3R­q  93R¯s  E3^±u  O3R³w  Z3Rµy  e3F·{  n3Rº}  z3R¼  †3J¾  3RÁƒ  œ3RÃ…  ¨3NŇ  ²3^ȉ  Â3JÊ‹  Î3^Ì  Û3RÎ  ç3RБ  ó3NÒ“  ÿ3^Ô•  4jÖ—  +4þÖ™  64:×›  A42Ù  L4:ÚŸ  W4nÜ¡  `4rÝ£ €p4…Þ¥ %y4ã· %ƒ4ä¹ %4å»  ›4Ræ½  §4Rè¿  ³4RêÁ  ¿4Úìà  Ë4^òÅ  â4FóÇ  ï4JôÉ  ü4võË  5zöÍ  =5~øÏ  S5RúÑ  e5RüÓ  w5RþÕ  ‰5F×  ™5JÙ  ©5NÛ  ¹5‚Ý  É5†ß  Ù5†á  ç5þã  û5Þå  6âç  '6Ré %;6 ë  M6R$í %Z6%ï  g6ú*ñ  r6Š+ó  ‡6:,õ %œ6-÷  ¯6R0ù %Æ62û  Ý6Ž7ý  ô6Š9ÿ   7^;  7’<  77r<  P7þ=  q7–>  ’7–>  ³7r@  Ô7rC  ó7rF  8þG %$8H  88þK %H8L  V8šQ  j8rT  |8W  8Y!  ¤8\#  ¸8ž`%  Ë8¢a'  Û8Ba)  í8þa+ %ý8b-  9¦g/  ?9þm1  Q9Ún3  c9ªs5  u9®x7  ‡9šy9  ™9r{;  ©9Z}= %µ9}?  À9F~A  Ò9JC  ä9N„E  ö9²‡G  :¶ŠI  ::ŒK  /::ŒM  D:ºO %Q:Q  a:¦‘S %q:“U  :¾–W  ‘:—Y  Ÿ:R˜[ %³:›]  Ä:^_  Ó:Žža  à:RŸc  ê:Æ e  ö:Ê g  ;Τi  ;ƨk  #;Ò¨m  8;Ϊo  M;Ƭq  \;Ö¬s  k;ίu  x;Ú²w  „;r²y  ;Òµ{  «;η}  Æ;ι  Ö;–»  ñ;r½ƒ   <r¿…  <VÁ‡  "<:‰  +<:‹  4<:à  ;<ÚÄ  D<ÚÅ‘  O<ÒÆ“  k<ÞÇ•  ‡<ÎÉ—  ¡<ÆË™  ½<ÎË›  Ù<ÚÌ  ò<rÌŸ   =ÚÍ¡ 3==Σ €C=…Ϋ N=)Ϋ ^=)ή  t=âÎÇ  ˆ=æÎÉ  ¡=âÎË  º=ŠÎÍ Õ=)ÑÏ  ä=Ño  ï=êÔs  >^Ôu  >îÕw  2>òÖy  N>öÖ{  e>úÖ}  u>úÖ  ˆ>þÖ  —>׃  ¡>×…  ®> ׇ  ½>׉  Ì>׋  Û>¢Ø  é>Ù  ó>Ú‘  ?¢Ú“   ?Þ•  ?ß—  !?bà™  3?á›  F?á  [?⟠ p?"ã¡  z?&ä£  ‡?*å¥  –?.å§  ¥?&æ©  ´?*è«  Â?2è­ !Ò?é¯  Ý?ì³  ì?6íµ  ø?:í·  @>î¹  @Bï»  "@Bò½  0@Bó¿  >@BõÁ  L@B÷à  Z@6øÅ  e@>øÇ  s@BùÉ  @BûË  @FüÍ  Ÿ@FÿÏ  ­@JÑ  ¾@NÓ  Ó@JÕ  é@*×  ÿ@.Ù  ARÛ  (AVÝ  ;AVß  NAVá  aAVã  tAVå  ‡AV ç  šAV é  ­AV ë  ÀAV í  ÓAV ï  çAVñ  ûAVó  BVõ  #BV÷  7BVù  KBVû  _BVý  sBVÿ  ‡BV  ›BV  ¯BV  ÃBV  ×BV  ëBV  ÿBV  CV  'CV  ;CV  OCV  cCV  wCV  ‹CV  ŸCV  ³CV   ÇCV!!  ÛCV"#  ïCV#%  DV#'  DV')  +DV)+  ?DV)-  SDV*/  gDV*1  {DV+3  DV,5  £DV-7  ·DV.9  ËDV/;  ßDV/=  óDZ0?  E^0A  5E60C  GEb0E  [Ef2G  wE¾3I  Ej4K  ¢E5M  ´E%7O  ºE¾8S  ÉE2:U %ßE=W  F=Z  F?e %;F@i  YFz@l  {F~@n  F‚Ap  ¥FzBr  ±F†Bt …»FCv !ÊFC|  ÕFŠF€  åFŽF‚ €Ï)G„  ÷F’G  G–H’ €G…I”  GšR¥  &GžS§  0G¢S©  9GêS«  JGâS­  ]G¦T¯  kGªT±  }G T³ ŽGBTµ  ›G®Tà  ¹G²UÅ  ×G®VÇ  õG¶XÉ  HþYË  *HºYÍ  AH²\Ï  dH²]Ñ  „H¾^Ó  ¢HÂ^Õ  ÂHþ^×  áHþ^Ù  ýHþ^Û €IB_Ý !(I_ 3IÆb  QIÆd qIÆi IÆn °IÊr ÆIÊu ÜIÊx òIÊ{ JÊ~ JÊ 4JÊ„! JJʇ# `JÊŠ% vJÊ' JÊ) ¤JÊ“+ »JÊ–- ÒJÊ™/ éJÊœ1 KÊŸ3 Kʤ5 'Kª7 3KΫ9€AK…®;€IK ²< QK²n XKÒµt bKÖµv!nK µx yK¹x…~¼„ ‚Kξ„ ’KÞ¿† šKâÁˆ ¥KæÆŠ ¼KêÇŒ ÓKîÈŽ êKæÉ LêÊ’ LîË” /LòÌ– FLâ͘ QLöÒš bLúל nLúÚž }Lþà  †Lé¢ “Lë¤ «L ì¦ ÃLí¨ ÛLæîª óLêï¬  Mîð® #Mæñ° ;Mô² FMbõ´ SMõ¶%aMö¸ xMöº …Mæý¼ ‘Mêþ¾ MîÿÀ ©M µMÄ ÃM"Æ ÖM&È éM&Ê üM&Ì€N Î NÕ…~ ä$(N¼ä$2N¼æ$?N¼é$JN¼ë$RN¼í]NïvNñ’Nô¬NöÃNø ÝNú…~ $çNì# $òNì$ $Oì%$Oì&$$Oì($3Oì*?O+YO,}O-˜O.¸O/"ÖO0%…ñO1' ÷O*1* P*1,…Ô1.€ P 1. Pž1V  Pž1X *Pž1Z 4Pž1\ >Pž1^ JPž1` [Pž1b qP.1d €P.1f ŽP.1h P.1j ªPž2l ¹PÎ2n€ÅP…2p ÎP2>qÞPB>s‚îP>s€þP…>€Q…A€€Q…A€% QA€ Q6Bƒ (Q¢B…%/QC‡%AQE‰%SQFŽ%[QG%mQI’€Qa J— „QÆJî ¡QFLð ÆQJLò ãQNLô RRMö  RVNø &RVNú ARVNü \RZOþ wR^O ”R^P ±R^P ÎRbR äRbR üRbR  SbT  ,S6U HSfW aS6W rS^Y S^Z ’S6\ ªSZ^ ÅS^^ âS^^ öS6_ €T…a" Tby$ *Tjy& V––õ vVž—÷ —V¢˜ù¥V ˜û³V ˜€ÁV…˜ÉV ˜‚ÕV˜d%ÞV˜l%ëVœn%ùVŸp%W¢r%W¥t% W§v%3W©x%DW«z€RW…®|YW ®|€dW…®ËjWB®Ë wW²®Ø €W¦°Ú W²²Ü€›W…´Þ£W ´Þ ­Wª´. ¾Wªµ0 ÎWª·2 åWª¸4 ôWªº6 ÿWª¼8  X®¿: X²À<  X²Á> 1X¶Â@ :X²ÃB EXºÄD MX¾ÄF VXªÄH%_XÂÅJ hXªÌP {XÆÍR ‰XÆÎT •XªÐV ¢XªÑX%±XÂÒZ%¿XÊØ`%ÍXÂÞf%×XÎål åXÒír ñXþðt þXªòv  YÚóx YÖõz 1YÚõ| @YÞõ~%MYÂ÷€%[YÂþ† kY–Œ wY–Ž YÚ  Yâ ’ ŸYæ ”%¬Y –%»Yœ%ÅY¢ÔYê !¨ !ãYÕ!µ%ùY"¸%Z"»%Z#¾ "Z$Á 4Zª%Ç AZÖ(É \ZÚ*Ë¥ yZ*Í!ŒZ*Î! Z,Ñ ³Zþ2Ú ÆZ–3Ü ÛZª5Þ%ëZ6à [ö:æ [–>è .[ú?ê%4[@ì%F[Bî€V[ Eó… `[E÷…~F$g[þI$m[þI$s[þJx[K[L¢[M¥ ¶[N  Â[N  Ñ[ÆP Ú[R!\S =\V _\W! ¢\þX#€)  Y%%æ\Y:!î\Z@ ][F…~_O… ]bO%#] dX%+] f[%4] i^%=]la%H]pg%S] sm ^]®up%o]wr%x]{x!Ž]€~! ]ƒ…%¬]…‹€Å]…‡‘%Ê]‡‘Û] ‰—%î]‰™ ^ Š›%^ŠŸ%%^Š¢%:^‹¥%G^‹¨€X^…«e^B«€r^…¸z^ ¸ ˆ^Ë ^Í Ÿ^‘Ï ¨^’Ñ€³^…•Ó€Þ^»^•Ó€ä^»^•Û…é^•€_…•  _‡ • %_• $_®–9_B— C_Z—‡ X_™‰ l_›‹ z_–› Œ_› œ_›‘‚®_›“!Á_ ›ò… Æ_Ÿò î\ ý Ü_ … ò_"¡… `¤ 6`&§%F`*§%X`¬ j`2°!%z`6°#%Œ`µ) ž`>¹,%¯`B¹.%Â`¾4 Õ`JÂ7%æ`NÂ9%ù`Ç?  aVËB%aZËD%0aÐJ CabÔM%UafÔO%iaÙU }anÝX%arÝZ%Ÿaâ` ±azæc%Âa~æe%Õaëk èa†ïn%øaŠïp% bôv b’øy%+b–ø{% Ö dÊ> Ø &dâ? Ú 5dÊ? Ü Ddæ@ Þ [dÊ@ à jdA â dÞB å dÊB ç ŸdâC é ®dÊC ë ½dD í ÔdÞE ð ãdÊE ò òdâF ô eÊF ö eG ø 'eÞH û 6eÊH ý EeâI ÿ TeÊI  ceJ  {eêK  ŠeZK  ™eîL  ¨eòM  ·eZM  ÆeîN  ÕeO  ïeÞP  þeÊP   fâQ  fÊQ  +fR  AfÞS  PfÊS " `fâT $ pfÊT & €fU ( ˜fÞV + ¨fÊV - ¸fâW / ÈfÊW 1 ØfX 3 ófÞY 6 gÊY 8 gâZ : #gÊZ < 3g[ > KgÞ\ A [gÊ\ C kgâ] E {gÊ] G ‹g^ I ¢gö_ L ²gú_ N Âgþ` P Ògú` R âga T ògúa V hb X húb Z "h c \ 2húc ^ BhÒd ` Rhúd b bhe d rhúe f ‚hf h ’húf j ¢hg l ¸hÞh o ÈhÊh q Øhâi s èhÊi u øhj w iÞk z  iÊk | 0iâl ~ @iÊl € Pim ‚ giÞn … wiZn ‡ ‡iâo ‰ —iZo ‹ §ip  ½iÞq  ÍiÊq ’ Ýiâr ” íiÊr – ýis ˜ jÞt › $jÊt  4jâu Ÿ DjÊu ¡ Tjv £ jjÞw ¦ zjÊw ¨ Šjâx ª šjÊx ¬ ªjy ® ÁjÞz ± ÑjÊz ³ ájâ{ µ ñjÊ{ · k| ¹ kÞ} ¼ 'kÊ} ¾ 7kâ~ À GkÊ~  Wk Ä nkÞ€ Ç ~kÊ€ É Žkâ Ë žkÊ Í ®k‚ Ï Äkêƒ Ò Ôkƒ Ô äk„ Ö ôkò… Ø l… Ú l† Ü‚$l‡ Þ‚,l‡ î…6l‡ ó€Al ‡ ó Tl‡ øelBŠ ÿ‚ wlŠ ÿ „lZŠ %lÂŒ ‚ ›l  ¨l %¶l" %Ãl" ‚ Ðl&‘ %Ýl*‘ %êl*’ %÷l*“  m"” ‚ m.–  m*– !%-m2˜ #%:m2™ %%Gm2š '%Tm2› )amBœ +%tmœ %•mœ ‚%½m …%Ïm ‡%ãm ‰%öm ‹% n %n %/n ‘%Cn “%Un •%in —%}n ™%‘n ›%¦n %¹n Ÿ%În ¡ ãn £%þnŸ §% oŸ © oŸ « 6o  ® So¡ ± xor¢ ´ †ov¢ ¶ ”oz¢ ¸ ¢o~¢ º °o‚£ ¼ ¾o†¤ ¾ Ìo¥ À çoZ¦ à òo§ Å ýo¨ Ç pZ© É pª Ë p†« Í ,pn« Ï :p&« Ñ Ip2« Ó XpV« Õ gp’« × vpz« Ù …pJ« Û ”p>« Ý £pb« ß ²pê« á Ápò« ã ÐpŠ« å ßp« ç qZ¬ ê  q­ ì q® î "qZ¯ ð .q° ò :q†± ô Iqn± ö Xq&± ø gq2± ú vqV± ü …q’± þ ”qz±  £qޱ  ²qJ±  Áq>±  Ðqb±  ßqê±  îqò±  ýqб   r±  'rZ²  3r³  ?r´  KrZµ  Wr¶  cr†·  rrn·  r&· ! r2· # ŸrV· % ®r’· ' ½rz· ) ÌrJ· + Ûr>· - êrb· / ùrê· 1 sò· 3 sŠ· 5 &s· 7 HsZ¸ : Ts¹ < `sº > lsZ» @ xs¼ B „s†½ D “sn½ F ¢s&½ H ±s2½ J ÀsV½ L Ïs’½ N Þsz½ P ísJ½ R üs>½ T  tb½ V tê½ X )tò½ Z 8tн \‚Gt½ ^ St½ ¥%ct¾ ©%t¾ ¬ §t¾ ¯ ºtÀ ³ ÌtÀ ¶‚ÜtÀ ¹ ïtÀ ׂútÁ Ú‚ uÁ à€uBÁ å€%uBÁ 倕yRV€Ü?V€ç?V€ò?#MN#M]#M@"•y"•y&"•y3"#y€?V€Z?V€e?V€p?V€{?#MN#M]#M@"#M*&•yî%•yý%•y &•y&#y€?V€ý?V€?V€?V€?V€)?#MN#M]#M@"#M*&#MY+•y+•y+•y&+•y7+•yH+#y€?V€Å?V€Ð?V€Û?V€æ?V€ñ?V€ü?#MN#M]#M@"#M*&#MY+#M™1•yæ1•y 2•yZ2•y”2•yÎ2•y3#y€?V€²?V€½?V€È?V€Ó?V€Þ?V€é?V€ô?#MN#M]#M@"#M*&#MY+#M™1#MÍ6•y7•yZ7•yš7•yÚ7•y8•yZ8•yš80„l7„?>„?×…N#6zNV€¬y?V€5†?³†N¸†'B3½†'BV€g†?V€è†?ˆ'Bˆ?܈€D爊EŠ”DIŠìDV€WŠ?V€e ?V€l ?#wŠN#}Š]#wŠN#}Š]#ŽŠ”E#”Š”E#šŠ?•y¢F•yÄFƒ ‹Gƒ‹”E!‹ G0‹G}GëýLðýLV€ ?V€ ?V€ ?#wŠN#}ŠM#ŽŠM#”Š?#MN•yfN•y‚NƒYGƒfM!‹ÿC0‹¨N}¨NU‘³QY‘?]‘·QÅ•Uú•]U–fUÅ•N"–þU*– VÅ•W3Ü–vWV€­–?V€B ?V€L ?#M?#M?•yÐX•yŽW•y“WV€¥ ?V€ª ?V€¯ ?#wŠŠ#}ŠýL#ŽŠŠ#wŠŠ#}ŠY#ŽŠŠ#”ŠY#šŠŠ#v—vW#wŠl#}ŠˆS>«$q,ˆ7«$z,ß‹í>x«5qð"9ˆ7EŠq,ß‹í>ÍŒ]x«5qð"9ˆ7*ŒNÀ$ìDˆ7„«Nqx«5qð"9ˆ7¹•9À$ìDˆ7„«Nqˆ7X%Qzˆ7X%QzÀ$ìDˆ7„«NqÀ$ìDÆÌq,Ù$S@ˆ7Ù$S@ÆÌq,﫲q¹•Qz﫲q¹•QzÀ$/﫲qÀ$/ÆÌq,ŽN#%A&%ö}­‹œD&%CA­‹œD&%CA<%q,3]%ŸA3€%¬p3´%ö}3¾%g–2¿?8¿±p8¿±p8¿±pZ©¦qÍŒNZ©¦qÍŒNZ©¦qÍŒN﫲qÞ%&$ö%9G #òp#‰7Z©¦qß‹vG¹ÐBH¹ÐBHÆÌq,;¬q,{­ýH;¬q,{­ýH﫲qX%Qz﫲q¹•9ˆQI&ÿCˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«Nq$?ˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆJˆJ?'Aq﫲qJ'K?'Aq#‰7ˆ±¯7﫲qJ'Kˆ±¯7#‰7V' 4c'?D®A}﫲q﫲qy'L#‰7ˆ±…E'Š﫲qy'L#‰7V' 4ˆ±…ED®A}O®?u®MO®t¼ˆVz™®z™®z¾®p™®z¾®p™®zO®t¾®p™®zO®t™®z™®zê® D™®zx&çMV' 4à®Nê® D™®zx&çMV' 4Ô®rNà®Nê® DÔ®rNà®Nê® Dy…NÔ®ÅNy…N~…]Ô®ýNy…N~…]……@"Ô®=O;¬…O™®z$¯ìOê® D™®÷Ox&çMž&P$¯ìOê® Dr«0q™®÷Ox&çMž&PV'—P$¯¶P™®zx&çMV'—Pž&ÁP$¯¶P™®zx&çMV'—Pž&ÁPty%Q$¯¶Pê® D$¯¶Pê® Dý'ŸA™®zý'ŸAb! 4™®zý'ŸAb! 4™®zý'ŸAb! 4;¬q,O®t™®z;¬q,O®tv¯Ú5¸…ìD#‰7V'—PUˆ&Sù¨0qUˆ&Sù¨0q#‰7V' 4¸…ìD¸…ìDæ7﫲q´&`5æ7﫲q¯¯`58¿|¸……EÍŒ5Tß‹>Tà&ö}í&pÍŒ5Tß‹>Tà&ö}í&pÍŒ5Tß‹>TÍŒ5Tß‹>TÍŒ5Tß‹>TA­?ÍŒ5Tß‹>TA­?ÍŒ5Tß‹>TA­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒòÍŒòÍŒò™®8™®8™®8A­?™®8A­?™®8™®8[(±V™®8*+ VŠ„ V,¨31k7?o7?Ó.lî.l9ϳQ§2)Vù2l§2)Vü2?3)p 3pÁ7)VÁ7)VÜÍôÇ^4lÄ2³QFˆ?NÍŒ?ß‹@rHˆYr*Œ)p¦4)pä7J€ê7?ð7ï|ˆ’)Vß‹t~Hˆ/t*Œ@tˆVtÍŒhtHˆht*ŒutHˆpÉ7?Hˆut~Hˆut8VtHˆp%8l48pC8Š$?%8³Q48l%8³Q48l%8÷u48?ß‹@rR8/tr8³Qv8)pz8p~8l‚8?ÍŒäw¢8³Q¦8lHˆ³Q*Œl–p–@t¢8³Q¦8lÍŒŠÍŒlÍŒˆYÍŒ¼YÍŒðYÍŒ"ZÍŒ+ÍŒyZÍŒ¬ZÍŒ?ÍŒ [ÍŒù[ÍŒm[Hˆ³Q*Œl–p–@tHˆ³Q*Œ@tÍŒ]ÍŒ³QÍŒäwÍŒ÷uÍŒäwÍŒ÷uÍŒ?ç5~q/9tç5~qˆl6èzÜÍ)VFˆ?0„F\6èz86^„86^„K9F\N9Ç]#wŠå„#}Š?#Mut£6~q£6~q£6~qí9E‡ñ9Aû9~qߋӆÄ:ŠÄ:IŠ3W;³Q3d;³Q3@+³Q3p;~q3óD}Š3E™Š3ßEºŠ3;FÊŠ2¿?"¥ŠFˆ?3=^3=^ß‹ƒ3=^ß‹ƒß‹ð¿<]Æ<û3=^7=U7=Uì@Šù@x AŠ8“@š 3³QˆQÝ$?Î>’˜sA³QxAýLˆQÝ$?Î>’˜‚A)VsA³QˆQÝ$?Î>’˜‡A³QÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÑ<lÎ>’˜$?À=ðYˆQÝÑ<lˆQÝÎ>’˜ð?ä“$?À=ðYµ@Ž›µ@bœÑ<ls7?3ŒA³Q3—A­œ3¬A2”2¿?#wŠ?#}Š?#ŽŠQ¤y?S€ E ¨S€ºE ¨S€ÉE ¨#y€?3F²¥3"F²¥V€ÖE?V€èE?¨s1ÍŒýLmÌlØC²¥ÿ‘SR³B½•©~즨s1R8j¨#眨ˆD@£R8j¨#眨ˆD@£¹Ð\©ØC²¥ÿ‘SR³B½•©~즨s1ØC²¥ÿ‘SR³B½•©~즨s1 t¥Fˆ?lD? t¥fD?iD?lD?oD?ÍŒ?³B½•¨s1áC?ˆD@£ t¥fD?iD?lD?oD?fD?lD?R8j¨#眨ˆD@£R8j¨#眨ˆD@£ˆD@£áC?DlFª¥Fª¥ØC²¥ÿ‘SR³B½•©~즨s1tyýL¸F?R8j¨#眨ˆD@£¨s1ˆD@£áC?ÿ‘SR³B½•³B½•³B½•#y€?3pG¬«V€(N?V€2N?V€?N?V€JN?V€OG?V€RN?#MôÇ#wгQ#}гQ#Mð¬#M–­#M³Q•yž®•yª®•y¶®•y®•yή#y€?3®Há V€çN?V€òN?V€O?V€O?V€$O?V€ŠH?V€3O?#MQÝ#M³Q#Më #wŠl#}Šë #wгQ#}Šë #MýL•y ²•y²•y$²•yæ •yo¥•y>²ÍŒY3 LY3P¬j3 P¬j3*P¬j34P¬j3L³Q3ÎF³Q3#L³Q3ØF³Q3.LY38LY2¿?3øLQ¶3MZ¶2¿?ÍŒc¶œ3)V –¥!¸ÔNÍŒ˜¶ú•]U –õ#¸ÔWÍŒ‰)ÿ‘SRð"ÒbU‘³QY‘?~U¹Y‘?ÿ‘SR£löU‘³Qÿ‘SRŠU–ºÿ‘SR‘U Vÿ‘SR–Uf£lö£lö›U¦»£UfUªUfU£löÿ‘SR–Uf3±U³Q3…M³Q3»U³Q3ŒM³Q3ÃUl3ÎUl3ÞUT3ðU³Q3ÿM³Q3ûU³Q3N³Q3V³Q3N³Q3V³Q3/N³Q3V³Q3?N³Q3'V³Q3ON³Q32V³Q3_N³Q3=V³Q3oN³Q2¿?ó’³Q8“–º—„Òb6‹G*ŒM6‹G*ŒM6‹GHˆM›X²Ç’XŠO6M$tÊ ÿC±Òs16‹Gß‹ÖÊß‹*ñ6‹ûÊß‹üÎß‹üÎ6‹G G±Òs1›XÚ’XŠO6”E$—ÛO6GO6yÜg½Gß‹Í!‡¨ÿC¶\!ì&íß‹±í‡¨ÿC¼ˆ½íß‹*ñ‡¨ÿC¼ˆí‡¨ÿCß‹æí¼ˆíß‹Žs‡¨ÿC‡¨ÿCß‹îß‹.ÿCдðð‡¨ÿC¿\!ìß‹‹ùEŠ^ß‹ªùEŠ^ß‹ÔùEŠ^ß‹Ñß‹óÍŒ]ß‹.î6ˆ?ß‹.îß‹#­‹ß‹RS^mpß‹ððß‹*ñß‹Öß‹òß‹Í!·¥®¥6ˆ?·¥”D –œDð"?*_e /_?¢XNß‹ŸQm”De”Dm”D·¥ÿCÍŒNFˆ?·¥”D$s1­‹œD/_?¢XN·¥”D­‹œD2_`@±ÒN/_?¢XE ß‹V#ŒN·¥7_`@­‹‹ /_?¢XNÀ^?·¥”D ÿCŽs1$s1 –œD/_?¢XÿC·¥”Dã^Üzê^ã ã^Üzê^ã ·¥”D<_*ñA_F <_*ñW_”D·¥”DA_á }NÓ‹h”*_œD/_?¢XN<_*ñ·¥”DA_ }NÓ‹… *_œD/_?¢XN<_*ñ·¥”D·¥”D<_*ñA_o <_š!·¥ÆÌðð·¥”D –œD[_`@/_?¢XN6ˆ?·¥”D –œDð"?*_e /_?¢XNÆÌðð·¥”D –œD[_`@b_&$/_?¢XN6zNŽ`ýß‹;3¨`\t_ŸQz_š"‚_uÀXðð¢X*ñÔ`Ñ„§ìD¶_‹ À_œDᲊÚ`Šã`Qã_NX¨NX¨]Yaþ_^¹ÐA*Œ”Dá²&$&`)¹ÐA*Œ”Dá²&$&`)Ya”DŽ]UiWŽs¸ÔN>WŽsiWŽs _®3Õa;V€´!?V€m[?V€s[?#MN#MÅ •yg•yƒ•yŸ¹ÐÅ Z©Î Z©Î ¹ÐÍŒ¢aÅ &`÷@Ú`Š –œD¹Ð ØbœD –ª¥ᲊ#y€?3¹cF3ÌcF3ÞcFV€wc?V€c?V€¥c?½¯F&`Nß‹š! –‹ ß‹b –‹ $s1ß‹†W0‹ ]0˜ß‹š" –‹ á²&$&`‹#ß‹ðð –œDá²&$ß‹ó½¯ì"ß‹.îg‡s1ß‹.îTd?g‡s1¢XUz_š"‚_uá²&$&`‹#½¯ ÿC&`?s7?}Nᲊß‹ìD –œD_d€Dð"œD6‹7¿d?ídóòdýß‹š!‡¨È"ß‹ó"‡¨È"‡¨#‡¨#lD?oD?ß‹ð6zNß‹L2¹ÐW2ß‹‚2¹Ðþ¤y?S€wc®<S€Ùq®<S€¥c®<úq®<}NFˆNg½NŒNFˆNg½NŒNFˆ?l?g½?>rŠArŠFˆ?l?g½?>Wâ2Fˆù[lù[g½ù[>rŠArŠFˆù[lù[g½ù[>W–3Fˆm[lm[g½m[>rŠArŠFˆm[lm[g½m[>Wè3Fˆ [l [g½ [>rŠArŠFˆ [l [g½ [>W:4FˆÛ”lÛ”g½Û”>rŠArŠFˆÛ”lÛ”g½Û”>WŒ4FˆÁ”lÁ”g½Á”>rŠArŠFˆÁ”lÁ”g½Á”>WÞ4FˆyZlyZg½yZ>rŠArŠFˆyZlyZg½yZ>W05Fˆ¬Zl¬Zg½¬Z>rŠArŠFˆ¬Zl¬Zg½¬Z>W‚5Fˆ"Zl"Zg½"Z>rŠArŠFˆ"Zl"Zg½"Z>WÔ5Fˆ+l+g½+>rŠArŠFˆ+l+g½+>W&6Fˆ¼Yl¼YJr?>rŠArŠFˆ¼Yl¼Yg½¼Y>rŠArŠFˆ¼Yl¼Yg½¼YFˆˆYlˆYJr?>rŠArŠFˆˆYlˆYg½ˆY>rŠArŠFˆˆYlˆYg½ˆYZnN>Wa?FˆNg½NArŠZnN>Wa?FˆNg½N>WV#FˆNl]g½N>rŠArŠwn]>WV#FˆNl]g½NFˆðYg½ðY™nðYArŠFˆðYg½ðY™nðYy Vy V¼ˆâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆ<R8*ñ#ç<R8*ñ#ç<¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆó#çó#çó#çó#çó#çó#çó#çó#çó¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆ*ñ#ç*ñ#ç*ñ¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆV#R8š!#çV#R8š!#çV#O6'B&`'Bᲊß‹ôD]ø@"ß‹òß‹F]ø*&ß‹^Eß‹IFß‹sFß‹‰Fß‹QHß‹xH]øY+ß‹ƒK]ø™1ß‹Iß‹ Iß‹=Iß‹ÐK¿d?ÀvGß‹G¼ˆN¼ˆN¼ˆCNð" VR8.î#çCN8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çòÉ€ŠG?J?—„?3«…l3Ì…l3ç…l3†l3†l3?†93P†óT3`†óT3w†¬V3†¬V3©†ê[3†ï[3Ù†I3V3 ‡¬V3½mô[3Ïmü[3ãm\3öm \3 n\3n\3/n$\3Cn,\3Un4\3in<\3}nD\3‘nL\3¦nT\3¹n\\3Înd\2¿?ß‹Ýhß‹*ñß‹Ýhß‹*ñß‹èhß‹Ýhß‹ iß‹8iß‹kiß‹±i3ø¢j2¿?P gvÔ\ Æay#` Æmy,t Áxy1x gvÃŒ † #†¶{D#gv,#†Ð{o8#gvUL#†ð{_`#gv´#†á|oÀ#†ê|Ì#†ÿ|ÃØ#†}ä#†$}Ãð#†2}ü#†A}Ã$†P}$†d}à $†x}o,$†Ž}8$†¤}D$†¿}ÃP$†Ú}\$†þ}Ãh$gvÔt$gvˆ$†ì/æmy,?0gvÛ@ 0†š» A(0gvA80†š !B@0gvÛ!BP0†š¼$CX0gv%Ch0†š» Dx0gv,%Dˆ0†š !E˜0gvG%E¨0†š¼$F¸0gvV%FÈ0~€i%GÐ0†Œ€HÜ0€‰%Hä0†«€Ið0¼€©%Iø0†Ê€J1Û€Ï%J 1†é€K1†‚#K 1æšy³&KX2æšy1Ll2æšy M˜3æay2 OŒ4æay#Pœ4æmy9 P¸5æmy(RÈ6æmy,Sì6gvÛTü6†š» U7gvU7†š !V7gvÛ!V,7†š¼$W47gvÉ%WD7†š5)XL7gvŒ)X\7†š» Yl7gv«)Y|7†š !ZŒ7gvÊ)Zœ7†š¼$[¬7gvé)[¼7†š5)\Ì7gvV%\Ü7> *]ä7†L^ð7].*^ø7†k_8|R*_ 8†Š`8›v*` 8†©a,8º *a48†Èb@8†‚#bH8æšyÎ*bp8æšy1c„8æšy d¼8æay2 fä9æay#gô9æmy9 g:æmyn,iT;æmy,jx;gvÛkˆ;†š» l;gvl ;†š !m¨;gvÛ!m¸;†š¼$nÀ;gvÉ%nÐ;†š5)oØ;gvš*oè;†š»-pð;gv.p<†š» q<gv7.q <†š !r0<gvZ.r@<†š¼$sP<gv}.s`<†š5)tp<gv .t€<†š»-u<gvV%u <*‚Å.v¨<†8‚w´<I‚í.w¼<†W‚xÈ<h‚/xÐ<†v‚yÜ<‡‚=/yä<†•‚zð<¦‚e/zø<†´‚{=Å‚“/{ =†Ó‚|=†‚#| =æšyÊ/|h=æšy1}|=æšy ~À=æay2 €Ô=æay#ä=æmy9 >æmy0ƒ<>æmy,„`>gvÛ…p>†š» †x>gv†ˆ>†š !‡>gvÛ!‡ >†š¼$ˆ¨>gvÉ%ˆ¸>†š5)‰À>gvš*‰Ð>†š»-ŠØ>gv/Šè>†š1‹ð>gv 2‹?†š» Œ?gvE2Œ ?†š !0?gv2@?†š¼$ŽP?gv¹2Ž`?†š5)p?gvó2€?†š»-?gv-3 ?†š1‘°?gvV%‘À?BƒV3’È?†Pƒ“Ô?aƒ‚3“Ü?†oƒ”è?€ƒ®3”ð?†Žƒ•ü?ŸƒÚ3•@†­ƒ–@¾ƒ4–@†Ìƒ—$@݃24—,@†ëƒ˜8@üƒd4˜@@† „™L@†‚#™T@æšyš4™œ@æšy1š°@æšy ›Aæay2 Aæay#ž,Aæmy9 žtAæmyÞ4 ¸Aæmy,¡ÜAgvÛ¢ìA†š» £ôAgv£B†š !¤ BgvÛ!¤B†š¼$¥$BgvÉ%¥4B†š5)¦…l9»¬E>…¨9¼ÀET…l9½ÌEb…¨9¾àEn…':¿Fn…ø:ÂhFn…Y<ÆèFn…q>Ë”G«…¹>Ñ G«…×>Ò¬G¿… ?Ó¸G¿…R?ÔÄG¿…¥?ÕÐG¿…@ÖÜG†á…» ×äG†î…Û×ðGgvÛØHæšyU@ÙDHæšy1ÚXHæšy Û¨Hæay2 ÝäHæay#ÞôHæmy9 Þ4I†J7ZnŒJJ7@Zƒ†Œ#8üZÆmy,8œ[Æay#9¨[Æ^†o9´]Áއ¤K9Ä]Á҇C9Ø]Á ›ŒN99ð]Á ÏŒ4E: ^Á ÊK<$^Á 3ñK<<^Ág4E<X^Á–J>p^ÁËúK?¤^ÁŽJAÀ^Á2ŽLBÜ^Á_ŽÔCø^ÁŽŽLC_Á¾ŽLDl_ÁðŽ$LE€_Á &G„_Á ^#G”_Áxy1Gè_gv½KHü_ƒ<ˆòLI0`ƒ÷[I8`ƒÿ[I@`gv‡IX`gvÔK``7MKd`^MKp`*MOx`:† MP `gvIMPÈ`ƒ¸Š» TÐ`ƒÂŠ×MTØ`ƒÞŠ×MTà`ƒèŠ#Tè`gvÛTø`ƒš» UagvwNUa†¸Š» V a†ÂŠ×MV0a†ÞŠ×MV@a†èŠ#VPagv“NV`a†š» Wpagv¹NWaˆ8BY´aƒZ‹«GYÈaƒ‹«GZôaƒ¹‹H[bƒÆ‹×M[ bÒ†ËN[b†Ï‹ÕN[4b†PŒÕN\Tb†:Œ#]db†£J]|bƒŒáN^bƒü‹O_¨b†܆a´bƒ0ŒˆOacƒè‹¥Ob@cƒ,ŒPcpcƒá‹Pd„cƒï‹Pe˜co2Pfàcˆ2Phd”2Pjhd¡cPl|d”cPmŒd¬ŠPn¬dµœPpÈdƒ½» rØd†È» rèd†Û» rød†î®Pre†‘®Ps0e†‘®PtLe† ‘®Puheƒ_ŒfBvxeƒfŒDvˆeƒ†Œ#vfÆay#v fÆmy,v¬f3‘÷Pw¼fgvQxàf¦‹ Qyìf=‘QzgÆ^†o{èhÁxy1{iÁ2ŽÛ|iÁ_ŽÔ}(iÁŽŽJ}8iÁ¾ŽJ~PiÁðŽXLdiÁ &hiÁ ^#xiÁއ~CˆiÁ҇Cœigv™Q°iƒ<ˆD‚ÜigvÅQ‚üi†á|o„Tj†c‘R„`j†u‘ R„xj†‘R„Œj†‘"R„ j†¡‘)R…°j†‚#…¼jÆ^†o…àjÆay#…øjÆmy,…8kƒÕ‘GR†Pká‘MR†tkö‘gR‡°k ’gR‰ôk8’MR‹(lC’MRŒHl\’R¤lz’žRmŽ’¦Rm©’®R‘@mÊ’»R’tmå’ßR”Ìmý’gR–n%“»R˜LngvÔšXnÆ&…Sšhn=“S›¤n`“-SžoÊ’=S ”ov“KS¢´o’“WS£èo©“lS¥pÅ“S§PpM”ÞS©@qi”îS«tq”ýS­ìq–”T®¬r¤”T°Ärº”#T±ÜrÖ”;T³ôrñ”HT´ s•[Tµ\s$•lT¸¤s?•‚Tºìs^•ªT¼dtm•ÁT¿°t†•ÕTÁüt£•åTÃDu%“=SŘugvÔǬu†æ•UÇÐu†î•8UÈÜugvxUÈðuˆ8BÉ$vƒ&…RDÉ8vƒ&…‰UËxvƒ&…–UÎÐvƒ&…¥UÒ8wƒ&…¶U׬wƒ&…ÉU݃gv¢9äÃ&…ÛUæÃ•ˆäUæÃ²ˆeDè0xgvÔéXxˆ8Bé´y†æ•ÈVé$z†î•æVë4zgvÔëHz†æ•Ûëlz†î•LWì|zˆ8BìˆzgvÔìzð–{Wì˜zƒ—ì¤z—Wì¬zƒ—í¸z/—WíÀzƒ9—îÌzƒ‚#îôzæay2 îl{æay#ï|{æmy9 ï@|æmyÜWñ}æmy,ò$}gvÔó,}gvV%ó<}ƒš#ôD}gvV%ôT}ƒš#õ\}gvÕXõl}gvÜXö|}†š#÷Œ}gvãX÷œ}†š#ø¬}gvÔø´}[—êXøÀ}ƒc—ûÌ}n—óXûÜ}ƒ|—è}‡—Yô}ƒ—~ƒ‚#(~gvGYH~ƒ¸ŠP~ƒÂŠ[X~ƒÞŠ`~gvÇY˜~ƒ¸Š  ~ƒÂŠ×Y ¨~ƒÞŠ °~ƒèŠ×Y ¸~ƒòŠ À~ƒ —ÝY È~gvIZ è~ƒ¸Šoð~ƒÂŠ\Zø~ƒÞŠ×YgvºZ†¸Š †ÂŠ[0†ÞŠ@gvÆZP†¸Š`†ÂŠ×Yp†ÞŠ€†èŠ×Y†òŠ † —ÝY°gvÒZÀ†¸ŠoІŠ\Zà†ÞŠ×Yƽ—ÙZÆ Ç—#Æ Ö—#ðƒ™oøƒ+™“[€ƒB™´[€ƒU™º[€ƒf™#€ƒu™# €ƒ„™#(€ƒ”™#0€ƒ¢™8€ƒµ™@€gvÀ[ €_šï[Ø€gv쀆Ð…†ÂŠ#>à…ˆ8B>†gvV%> †П¡^?¨†ƒÚŸ?´†柡^?¼†ƒ÷Ÿ?Ȇ  ¡^?Іƒ ?܆& ¡^?䆃7 ?ð†J ¡^?ø†ƒT ?‡` §^? ‡ƒo @‡ ¯^@ ‡ƒ“ A,‡¨ ¯^A4‡ƒ» B@‡Ñ §^BH‡ƒß CT‡ð Ò^C`‡ƒþ El‡¡è^Et‡ƒ$¡F€‡<¡è^Fˆ‡ƒO¡G”‡e¡è^Gœ‡ƒz¡H¨‡’¡è^H°‡ƒ¥¡I¼‡»¡$_IćƒÑ¡JЇê¡$_J؇ƒþ¡K䇢$_K쇃+¢Lø‡D¢$_LˆƒX¢M ˆo¢a_Mˆƒ~¢N ˆ¢w_N(ˆƒ¨¢O4ˆâw_O<ˆƒÙ¢PHˆò¢§^PPˆƒþ¢Q\ˆ £§^Qdˆƒ£Rpˆ,£§^Rxˆƒ=£S„ˆQ£¡^SŒˆƒ]£S˜ˆk£¡^S ˆƒ|£S¬ˆ£¡^S´ˆƒŸ£SÀˆ±£¡^SȈƒ¾£SԈͣ¡^S܈ƒÞ£Sèˆñ£§^Sðˆƒÿ£Tüˆ¤¡^T‰ƒ¤T‰.¤¡^T‰ƒ?¤T$‰R¤¡^T,‰ƒl¤T8‰ˆ¤¡^T@‰ƒ˜¤TL‰ª¤C`TX‰ƒµ¤Vd‰ä§^Vl‰ƒÕ¤Wx‰ƒ‚#W€‰æay2 W”‰æay#X¤‰æmy9 Xì‰æmyn`Z0Šæmy,[TŠgvÀ \dŠƒšR]lŠgv>a]|ŠƒšEa^„Šgv>a^”ŠƒšEa_œŠgvÀ _¬ŠƒšR`´ŠgvÅQ`ÌŠƒ¸ŠRbÔŠƒÂŠ#bÜŠgvÖbbðŠƒšÜbcøŠgvÖbc ‹ƒšÜbd‹gvÖbd(‹ƒšÜbe0‹gvÖbeD‹ƒšÜbfL‹gvldf`‹ƒšsdgh‹gvldg|‹ƒšsdh„‹gvldh˜‹ƒšsdi ‹gvldi´‹ƒšsdj¼‹gvfjЋƒšfkØ‹gvvfk싃šGRlô‹gvvflŒƒšGRmŒgvÀ m$ŒƒšRn,ŒgvÀ n@ŒƒšRoHŒgvÀ o\ŒƒšRpdŒgvÀ pxŒƒšRq€Œgv½hq˜Œƒ¸Š[s ŒƒÂŠRs¨ŒgvÀ s¼ŒƒšRtÄŒgvmitÔŒ†šRuäŒgvyiuôŒ†šEavgv…iv†šEaw$gv‘iw4†šRxDgvixT†¸ŠRyd†ÂŠ#ytgv©iy„†šÜbz”gvµiz¤†šÜb{´gvÁi{ĆšÜb|ÔgvÍi|䆚Üb}ôgvÙi}ކšsd~Žgvåi~$ކšsd4ŽgvñiDކšsd€TŽgvýi€dކšsdtŽgv j„ކšf‚”Žgvj‚¤Ž†šGRƒ´Žgv!jƒÄކšGR„ÔŽgv-j„䎆šR…ôŽgv9j…†šR†gvEj†$†šR‡4gvQj‡D†šRˆTgv]jˆd†¸Š[‰t†ÂŠR‰„gvij‰”†šRФgvvjŠÀƒÆ‹…jŒ̆¥(]ŒØÆmy,ŒÆay# Æ^†o,†^†šj@ƒ½—.mŽH¤†'¥;mX¤†?¥Ymp¤†øšR|¤K¥imŒ¤\¥rm‘œ¤g¥rm“¨¤‰¥Œm•¸¤ ¥¢m—ؤ ¥³m™ü¤°¥Çmœ$¥¾¥Òmž0¥á¥ám¡<¥¦óm¥\¥¦üm¦|¥(¦n¨œ¥(¦nªÀ¥1¦#n­Ì¥B¦/n¯Ø¥Z¦>n²ä¥p¦Vn´¦Цgn¶(¦¦¦on·4¦¯¦}n¸T¦¹¦}nºt¦Φ–n¼ ¦ò¦©n¿¬¦ÿ¦ÓnÁì¦ÿ¦ënÄ,§ §oÆl§ §oʘ§,§imͤ§8§rmδ§I§3oÐħy§rmÕÔ§‘§Ho×ä§š§ÇmÙ ¨£§RoÛ¨ñOdoÝD¨ñOmoÞl¨±§voàx¨¾§#nጨŧrm㘨ϧo帨ô§oæĨù§žoçü¨2¨·oë ©q¨ÁoîT©gvvjïd©†¨Ö]ñh©gvÔñ”©ƒ’¨» ñªƒ¦¨Ûñœªƒ:Œ#ò¨ªƒš¨V%ò`«gv'pó«ƒרpô «ƒü¨Ôô°«ƒ"ŠÔôÌ«Áy‰Ôô諈8Bôô«gvÔôü«©9pô¬ƒ‚#ô ¬˜©Ppô¬´©Tpô¬gvÔõ8¬ЩPpõ@¬ƒì©gpõ˜¬ƒªö¼¬ƒª‡pö謪•p÷쬈8Bøü¬gvÔøt­ƒüª×pø´­ƒ#«gpú ®ƒO«gpûd®ƒ[«gpü¤®ƒc« qýÔ®ª•pýØ®ˆ8Bþ讃¼«pþð®ƒÆ«Sqþø®ƒЫ`qþ¯ƒÚ«nqþ¯gvtqþ0¯ƒþ«¿q8¯ƒ¬Ìq@¯gvÒqX¯¬!r`¯gvrp¯ƒš:rx¯ƒ‚#€¯gvÔŒ¯†¬_r”¯†¬pr ¯†)¬‰r¬¯†0¬–r°¯†G¬¯r ¼¯†S¬Ïr ȯ†Y¬êr Ô¯†_¬sெl¬"s쯆y§;sø¯†I§Vs°gváN°ƒ&…RD(°´¬²s0°ʬ½s8°Ö¬tH°è¬=t\°­8BŒ°­ktœ°0­åt(±I« u`±[­u!˜±­eu$¨±ÕV¤u&¸±­­»u'ô±® u,²®ëu. ²)®v/\²c®v1l²y®=v3|²…®gv4Œ²¤®°v5زÇ®w8ì²Ç®Rw;³Ç®¬w?³Ç®xD,³ ¯—xJH³¯üxKX³/¯-yMh³6¯½sNp³H¯½sNx³[¯dyNˆ³f¯ˆyP˜³‚¯œyQ¨³˜¯¯yR´³¥¯ÞyTijgv)zU´ƒö¯2vW<´ƒ°» XÀ´ƒ(°XÌ´ƒ‰ÔXø´ƒרpXµƒ5°ÔXµƒA°ÔXDµÁ X°XdµÁ |°XpµÁ ¹°ÌzX€µÁ á°[XŒµÁy‰ÔX˜µgvÔX쵃¸±<{X¶ƒ±#Xl¶ƒÙ±v{X¸¶ƒì±v{Y·ƒ²´{ZT·ƒ ²Î{\x·ƒ&²Î{\À·ƒ:²Î{\ü·ƒüªÛ\L¸ƒO²|]p¸ƒW²»|_„¸ƒ\²}a¤¸ƒg²$}bĸÁy‰Ôcø¸ƒo²;}c¹ƒ{²R}cL¹gváNd`¹†²Ûep¹gv¿}fع†±#h蹆ô²#hô¹†³V%hº†³ë}iº†$³ë}j0º†I«Ôkˆº†üªÛk˜º†1³n~l»†_³Ÿ~nX»†l³ë~pÈ»†‘³ar@¼†g²€tp¼†\²u ¼†W²¥vм†O²Éx½I«€z ½Áy‰Ô|8½ƒ²³» |@½†¸Š» |L½gvÛ|`½ƒ²³» }h½ƒó !}p½†¸Š» }|½†Š !}ˆ½gv4E}¤½ƒ²³» ¬½ƒó !´½ƒÔ³¼$¼½†¸Š» Ƚ†Š !Ô½†Þм$à½gvx¾ƒ²³» ‚¾ƒó !‚¾ƒÔ³¼$‚¾ƒå³5)‚ ¾†¸Š» ‚,¾†Š !‚8¾†Þм$‚D¾†èŠ5)‚P¾gvt€‚x¾ƒ²³» †€¾ƒó !†ˆ¾ƒÔ³¼$†¾ƒå³5)†˜¾ƒö³»-† ¾†¸Š» †¬¾†Š !†¸¾†Þм$†ľ†èŠ5)†о†òŠ»-†ܾgv€† ¿ƒ²³» ‹¿ƒó !‹¿ƒÔ³¼$‹$¿ƒå³5)‹,¿ƒö³»-‹4¿ƒ´1‹<¿†¸Š» ‹H¿†Š !‹T¿†Þм$‹`¿†èŠ5)‹l¿†òŠ»-‹x¿† —1‹„¿gv°€‹¼¿ƒ²³» ‘Ä¿ƒó !‘Ì¿ƒÔ³¼$‘Ô¿ƒå³5)‘Ü¿ƒö³»-‘促´1‘쿃$´Ñ6‘ô¿†¸Š» ‘À†Š !‘ À†Þм$‘À†èŠ5)‘$À†òŠ»-‘0À† —1‘<À†.´Ñ6‘HÀgvÔ€‘ˆÀƒ²³» ˜Àƒó !˜˜ÀƒÔ³¼$˜ Àƒå³5)˜¨Àƒö³»-˜°Àƒ´1˜¸Àƒ$´Ñ6˜ÀÀƒK´˜ÈÀ†¸Š» ˜ÔÀ†Š !˜àÀ†Þм$˜ìÀ†èŠ5)˜øÀ†òŠ»-˜Á† —1˜Á†.´Ñ6˜Á†U´˜(Ágv ˜|Ágv0 ˜ÁÁ b´» ¢¤ÁÁ҇C¢¸ÁÁއ<¢ÈÁgvQ¢ÜÁ†„´X£èÁgvÔ£ôÁ†_¬¢£†¬È¥ †m[Õ¥0†”´ä¦4†,§ú§8†½‚¨H†½1‚©T†£Q‚ªd†°v‚¬x†ʴꂮœÂ†Ú´Mƒ°¬Â†ß´Mƒ±¼Â†ô´Mƒ²̆µMƒ³܆‹­ƒ´ì†#µäµÆá‹-„¶ Æ0µ-„¸@Æ©†MƒºPÆDµw„»`ÆHµ¡„½tÆMµê‚¿˜Ã†Wµ¡„Á¬Ã†\µê‚ÃÐÆfµÎ…ÅðÆ|†MƒÇĆ~µ+†È Ć–µ+†Ê@Ƨµ¦†Ì`Ƶµ¦†Î€Ä†Ðµ¦†Ð,ņ޵¦†ÒƆøµ+†ÔØÆ†¶+†ÖPdž¶TˆØtdž9¶¾ˆÚ Ç†R¶¾ˆÜÌdžc¶¾ˆÞüdžj¶¾ˆà,Ȇ{¶ŠâXÈ†Š¶Šä„Ȇ£¶Šæ´È†²¶ŠèäȆ˶ã‹êɆì¶ÑŒíxɆ9·ÍòÔɆC·Í÷0ʃQ·¨Žü@ʃa·ÊŽýlʃv·êŽþ|ʆ•·êŽÿŒÊgvÔ˜ÊgvÔ¤Êgv¸ÊgvÔÄʆзoÐÊgväʆù·oðÊgvÔˆ3¸oˆ@¸(ˆM¸#4ˆV¸V%@ˆ_¸#Lˆj¸V%XËgvÔdËgvJ´Ë†ιoÀˆã¹̈ø¹oØË† ºäˆ ºUðˆ9ºZüˆRºo ̆fº ̆zº  ̆–ºÃ ,̆²º 8̆Ⱥà D̆Þº` P̆ÿºf \̆ »m Æ Q»oÆc»rÆw»yÆ€»Æ¨»rƶ»…Æß»ŽÆ¼™ÆC¼¦ÆR¼¦Æd¼­p̽Ž|Ì!½ã‘Í@½’<ÍN½d’œÎs½}’àΆ½œ’ìΡ½º’øÎ½½Û’Ïõ½Û’!Ï!¾“# Ï7¾“$0ÏJ¾“%@ÏZ¾“&PÏq¾[“'Xω¾a“'hÏ’¾t“(xÏ›¾‡“)ˆÏ¢¾™“*˜Ïª¾µ“+ÄÏƾѓ,ðÏÞ¾ø“-üÏð¾”.ÐgvÔ. ÐF&…”.ÐgvÔ/ ÐF&…”/,Ðgv@”0@Ðá2ŽÛ1\Ðá_ŽÔ2xÐᎎJ2”ÐᾎJ3¬ÐáðŽXL4 Ñá&6$Ñá^#64Ñáއ~C6TÑá҇C6xÑgvÔ6€ÑF&…(•6ÀÑgvÔ7ÈÑF&…(•7Ògvv‘8$ÒᛌN9:<ÒáÏŒ4E;XÒáÊK=xÒá3ñK=ˆÒág4E=¤Òá–J?¼ÒáËúK@ôÒáŽJBÓá2ŽLC,Óá_ŽÔDHÓᎎLDdÓᾎLE°ÓáðŽ$LFTÔá&HXÔá^#HhÔáއ¤KHˆÔá҇CH¬Ôˆ8BHÄÔa·q–HÐÔQ·•–JàÔbÌšLÕrÌušM Õ„Ì™šN<Õ–ÌÀšOXÕ¨Ìä›P@ÖÍÌŽœSœÖçÌÉœT°Ö͈V4×;YH×OÍáZh×rÍþ[ˆ×»Íž\¨×ãÍ,ž^È×ûÍMž_è×Îqž`ð×FÎim` ØgÎwža(ØnÎwža0Ø|Îwža8Ø„Îwža@Ø’ÎwžaHØšÎwžaPذÎwža`Ø»ÎwžahØÒÎwžapØàÎwžaxØöÎwža€ØÏwžaˆØÏwžaØ)ÏMRa°Ø<ÏMRbÐØWÏ|žcÙ}ψŸg0Ù•Ïq h\٪ϡjÄÙÌÏh¡pÚÛÏΣvtÚùϤx|ÚÐ-¤x„ÚÐE¤xŒÚ0Фx”ÚGÐ-¤xœÚYÐE¤x¤ÚkÐf¤x8Û‚и¤~ØÛ¢ÐC¥‡8Ü»Ð}¥‰@ÜÒв¥‰HÜàÐË¥‰PÜîÐ}¥‰XÜѲ¥‰`ÜÑË¥‰hÜ!Ñ}¥‰pÜ8Ѳ¥‰xÜNÑË¥‰€ÜdÑ}¥‰ˆÜ{Ѳ¥‰Ü‘ÑË¥‰˜Ü§Ñf¤‰Ý²Ññ¥´Ý½Ñp¦–ÞÛѦ¦˜ÞòѲ¥˜$ÞþÑצ˜,Þ Ò¦¦˜4Þ!Ò²¥˜<Þ-Òצ˜DÞ9Ò¦¦˜LÞPÒ²¥˜TÞbÒצ˜\ÞtÒˆÞÉÒ,§™Àß Óȧ¤„á³ÓÄ©µhãøÓ„ªÃ`ä4Ô8³ÖæºÔ–³âæÑÔÕ³âæãÔÕ³â æõÔÕ³â(æÕÕ³â0æÕÕ³â8æ*ÕÕ³â@æ<ÕÕ³âHæNÕÕ³âPæaÕÕ³âXærÕÕ³â`æƒÕÕ³âhæŽÕÛ³âpæ Õ÷³âxæ²Õ–³â€æÊÕÕ³âˆæÞÕÕ³âæòÕÕ³â˜æÖÕ³â æÖÕ³â¨æ-ÖÕ³â°æAÖÕ³â¸æUÖÕ³âÀæjÖÕ³âÈæ}ÖÕ³âÐæÖÕ³âØæÖÛ³âàæ·Ö÷³âèæÑÖ–³âðæéÖÕ³âøæýÖÕ³âç×Õ³âç&×Õ³âç9×Õ³âçL×Õ³â ç`×Õ³â(çt×Õ³â0ç‰×Õ³â8çœ×Õ³â@ç¯×Õ³âHç¼×Û³âPçÊ×÷³âXçØ×–³â`çð×Õ³âhçØÕ³âpçØÕ³âxç-ØÕ³â€ç@ØÕ³âˆçSØÕ³âçgØÕ³â˜ç{ØÕ³â çØÕ³â¨ç£ØÕ³â°ç¶ØÕ³â¸çÃØÛ³âÀçÙØ÷³âÈçïØ´â$èúØm´çxèÙòµêìè"Ù ¶ìôè:ÙG¶ìüèHÙ\¶ìéVÙ ¶ì énÙG¶ìé…Ù\¶ìéœÙ ¶ì$é´ÙG¶ì,éÁÙ\¶ì4éÎÙ ¶ì<éæÙG¶ìDéüÙ\¶ìLéÚ ¶ìTé*ÚG¶ì\é9Ú\¶ìdéHÚ ¶ìlé`ÚG¶ìtéxÚ\¶ì|éÚ ¶ì„é¨ÚG¶ìŒé¶Ú\¶ì”éÄÚm¶ìœéÛÚ‹¶ì¤éêÚm¶ì¬éõÚm¶ì´éÛ-¤ì¼éÛm¶ìÄéÛm¶ìÌé+Û§¶ìÔé?Ûm¶ìÜéIÛ»¶ìäéaÛm¶ììémÛȶìôé€Ûm¶ìüéÛm¶ìêšÛ²¥ì ê¨Ûm¶ìêµÛm¶ìêÂÛ)·ì(êÖÛ²¥î0êæÛ²¥î8êܲ¥î@êܲ¥îHê(ܲ¥îPê@ܲ¥îXêbܲ¥î`êyܲ¥îhêšÜ¯·îŒê¶Üηð°êÅÜ-¤ò¸êÒÜ-¤òÀêßܲ¥òÈêñܲ¥òÐêÝG¶òØêÝm¶òàê!Ým¶òèê.ݲ¥òðê>Ým¶òøêKÝm¶òëXÝì·òëkÝm¶òëxÝm¶òë†Ý¸ò ë“Ým¶ò(ë Ým¶ò0ë®Ý¸ò8ëÀÝm¶ò@ëÍÝm¶òHëÛݸ¹òüëæÝ¸¹ôìòÝBºödìÞº÷hí5Þºù€îQÞBºûPïdÞimü`ïpÞ‚½ýhï•Þ‚½ýpï¶Þ‚½ýxïÜÞ‚½ý€ïøÞ­½ýˆïß‚½ýï8ß‚½ý˜ïUß­½ý ï~ß­½ý¨ï¨ßνý°ï»ßνý¸ïØßνýÀïëßνýÈïàνýÐï#àνýØïHàνýàïcàνýèïˆàνýðïœàò½ýøï³àνýðÅàνýð×àνýðñàνýð áνý ðá­½ý(ð7á­½ý0ðHá­½ý8ðbá­½ý@ðyá­½ýHð™áνýPð¬áνýXð¿áνý`ðÒá­½ýhðçáνýpðøáνýxðâνý€ð#âνýˆð3âνýðDâνý˜ðZ₽ý ðk₽ý¨ð₽ý°ð›âνý¸ð±âνýÀðÃâνýÈðáâνýÐðûâ­½ýØð ã­½ýàðãνýèð/ãð¾ýŒñPã•¿þèót㯿LôÃãBºT ÖãBº¤ ðãMÁ( ädÃümä…Ä(7å…Ä\gå”Å&œ‘åcÆ3 ³åcÆ6¤ÊåcÆ9 áåwÐ<¼7ìå³Ð?ð7æéÐB¤8#æYÑC|93æ½ÑJÄ9IæÒN:hæXÒRð:æwÒT ;¬æXÒWNÂæimY NÙæÖÖZ`NçÖÖ\€agv¤Û^aF&…Ü_ bgv¤Û`0bF&…wÜaèbgv¤ÛbøbF&…ìÜcÔcgvÝdìcF&…Ýf dgvÔgdF&…:Ýg8dgvvfhHdF&…uÝiÔdgvvfjädF&…§ÝkxegvvflˆeF&…ÏÝm¸egvvfnÈeF&…ýÝofgvΞpfF&…GÞqPfgvòžr`fF&…Þs¤fgvU¢t¼fF&…ÍÞvggv›¢w4gF&…êÞyggvU¢z¨gF&…ß|hgv›¢}hF&…aߤhgvU¢€¼hF&…ß‚igv›¢ƒ,iF&…©ß…igv ¬†jF&…ãß’¨jgvd­“kF&…?àžèkgv›¢ŸlF…I9¡lgvcà¡€“gv‹9?“ƒ&…N9@¤“gvaA´“ƒ&…yBÌ“:ôóDì“BôóEô“aôqžEü“„ôqžE”¥ô<óEL”½ôRóG\”Ôô&ôH¼•êôMôKØ•ÿôçôMp–õõNx–%õwžN€–3õwžNˆ–AõwžN–OõwžN˜–]õwžN –kõwžN¨–yõwžN°–‡õwžN¸–•õwžNÀ–£õwžNÈ–±õwžNЖ¿õwžNØ–ÍõwžNà–ÛõwžNè–éõwžNð–÷õwžNø–öõN—öõN—'öõN—3öõN—AöõN —XöõN(—böõN0—yöõN8—…öTõN¨—œöonOô—²öonP„™ÒöùõQšèöHoT,šûöRöV š ÷BºXp›-÷‚÷Y¨žL÷Œ÷[°žl÷Õ³[¸ž|÷qž[ÀžŠ÷qž[Èž–÷im[d ¢÷im\X¡¸÷Aù],¢Ñ÷cù_D¢gvÔ`P¢áÝ÷lù`\¢áørùah¢gváòc€¢F&…N9eÜ¢gvÔfä¢F&…®ùfð¢gvÔgø¢F&… Âg£gvÔh$£F&…´ùh0£gv¼ùi@£F&…ØùjX£gvÔk`£F&…kl£gvÖbl|£F&…®ùm£ˆ8Bn £gvV%n°£¹øéùo¸£ƒÆøpÄ£Öø÷ùpУƒäørÜ£õøúr裃ùuô£ùcùuü£ƒ#ùv¤1ùúv¤ƒ<ùv¤ƒ‚#v$¤gv%úv4¤ƒš1úw<¤gvžúwT¤ƒ¸ŠRy\¤ƒÂŠ1úyd¤gvûy„¤ƒ¸ŠR|Œ¤ƒÂŠR|”¤ƒÞŠ û|œ¤gv‹û|¬¤ƒš û}´¤gvòû}Ĥ†š1ú~Ô¤gvùû~䤆¸ŠRô¤†ÂŠ1ú¥gvü¥†¸ŠR€$¥†ÂŠR€4¥†ÞŠ û€D¥gvü€T¥†š ûd¥gvÔl¥F&…üx¥gvüƒ¥F&…?ü…¨¥gvÔ†°¥F&…ü†¼¥gvPüˆÔ¥F&…?üŠì¥gvÔ‹ô¥F&…mü‹¦gvÀ Œ¦F&…Øù0¦gvÔŽ8¦F&…´üŽ”¦gvÔœ¦F&…ݨ¦gvÔ°¦F&…»ü¼¦gvÔ’ĦF&…Ý’ЦgvÛü“à¦F&…2æ”ô¦gvÛü•§F&…2æ–§ˆ8B—ì«=êý—ü«[êý˜ ¬tòý™¬—ÿýš$¬¨ÿýš,¬çMRšT¬óþ›¬ ®Rܬqžžä¬+1þž­7ÿý¡­CEþ¡ ­[wž¡(­iUþ¡d­Š‚½¢l­£‚½¢t­³‚½¢|­Ä‚½¢„­×‚½¢Œ­å‚½¢”­õ‚½¢œ­‚½¢¤­‚½¢¬­3‚½¢´­L‚½¢¼­g‚½¢Ä­}‚½¢Ì­•‚½¢Ô­µ‚½¢Ü­Ô‚½¢ä­õ‚½¢ì­‚½¢ô­6‚½¢ü­V‚½¢®n‚½¢ ®…‚½¢®ž‚½¢®¹‚½¢$®Ï‚½¢,®ç‚½¢4®ü‚½¢<®‚½¢D®0‚½¢L®F‚½¢T®]‚½¢\®|‚½¢d®“‚½¢l®­‚½¢t®Ï‚½¢|®é‚½¢„®‚½¢Œ®!‚½¢”®9‚½¢œ®Q‚½¢¤®q‚½¢¬®‰‚½¢´®–‚½¢¼®£‚½¢Ä®±‚½¢Ì®Á‚½¢Ô®Ð‚½¢Ü®â‚½¢ä®ò‚½¢ì®‚½¢ô®‚½¢ü®-‚½¢¯@‚½¢ ¯T‚½¢¯h‚½¢¯{‚½¢$¯‚½¢,¯¦‚½¢4¯¿‚½¢<¯Ñ‚½¢D¯æ‚½¢L¯ù‚½¢T¯ ‚½¢\¯! ‚½¢d¯4 ‚½¢l¯G ‚½¢t¯X ‚½¢|¯k ‚½¢„¯} ‚½¢Œ¯‘ ‚½¢”¯¥ ‚½¢œ¯¹ ‚½¢¤¯Ó ‚½¢¬¯ð ‚½¢´¯ ‚½¢¼¯( ‚½¢įC ‚½¢̯^ ‚½¢Ô¯y ‚½¢ܯ’ ‚½¢ä¯­ ‚½¢ì¯Ç ‚½¢ô¯ã ‚½¢ü¯ÿ ‚½¢° ‚½¢ °0 ‚½¢°H ‚½¢°a ‚½¢$°{ ‚½¢,°• ‚½¢4°¯ ‚½¢<°É ‚½¢D°â ‚½¢L°ý ‚½¢T° ‚½¢\°3 ‚½¢d°_ ‚½¢l°ƒ ‚½¢t°¥ ‚½¢|°º qž¢„°Î Óþ¢ä°Ü Rÿ£d±ö Tõ¤ð± Bº¥t²A V¦ܲb é© ´g¹«´ô‡á­tõÍ?³°õè`¶Äõ{¸Øõ„¹ìõ)›ºöMÛ»üöƒný¼÷gv ¼÷gvw]½$÷F&…¾8÷gv!¿H÷F&…ÊãÀd÷gv8Á„÷F&…CÄ8øgviÅHøF&…²ÆÈøgv»ÇàøF&…ÓÉùgvÔÊùF&…ßÊ ùgvçËùF&…öÌ4ùgvÔÍ<ùF&… Í`ùgvÔÎhùF&… ÎŒùgvÔÏ”ùF&… ϸùgvÔÐÀùF&… ÐäùgvÔÑìùF&… ÑúgvÔÒúF&… Ò<úgvÔÓDúF&… ÓhúgvÔÔpúF&… Ô”úgvÔÕœúF&… ÕÀúgvÔÖÈúF&… ÖìúgvÔ×ôúF&… ×ûgvÔØ ûF&… ØDûgvÔÙLûF&… ÙpûgvÔÚxûF&… ÚœûgvÔÛ¤ûF&… ÛÈûgvÔÜÐûF&… ÜôûgvÔÝüûF&… Ý ügvÔÞ(üF&… ÞLügvÔßTüF&… ßxügvÔà€üF&… à¤ügvÔá¬üF&… áÐügvÔâØüF&… âüügvÔãýF&… ã(ýgvÔä0ýF&… äTýgvÔå\ýF&… å€ýgvÔæˆýF&… æ¬ýgvÔç´ýF&… çØýgvÔèàýF&… èþgvÔé þF&… é0þgvÔê8þF&… ê\þgvÔëdþF&… ëˆþgvÔìþF&… ì´þgvÔí¼þF&… íàþgvÔîèþF&… î ÿgvÔïÿF&… ï8ÿgvÔð@ÿF&… ðdÿgvÔñlÿF&… ñÿgvÔò˜ÿF&… ò¼ÿgvÔóÄÿF&… óèÿgvÔôðÿF&…ôgvÔõF&…õ@gvÔöHF&…ölgvÔ÷tF&…"÷€gv+ø˜F&…5ú°gvÔû¸F&…NûÐgvÔýØF&…´ùýägvÔþìF&…rþøgv{ÿF&…†gvi,F&…rPgv’hF&…†„gvi”F&… ¤›¾Ä袾ò ,ú! pP ´ € ø® 4€x ç¼)1FD‰¾vˆ’¾§ÌAÝRT\O˜f‚Üm¢ƒ¢,“¢T¦¢|³¢ ¨Â¢"¸Ö°$àì°&ü°(0°*X°,„+°.”?Å0ÔZÅ2oÅ4T‡Å6”™Å8ð­Å: Æä<8 Ó >p à.@¼ òäB  DD .F  !äHØ 2 J C.L\ YäN  i Pä y.R@ ŽäT„  VÈ ¬.X$ ˆ8BZh,ŒjZt-”\˜4É^¤è‹`´0Œ?bÐW²–dÜÏ‹ÇgôLäiV k _V luÈ nÆžÛpÆ32ý qÆ©Ôr8gvÔrLÁ³ÛrdÁÍý s€ÁèÔtœgv!t¸ÆžÛv<Æ32ý wPÆ©Ôx`gvWx|áÁ!z gvç!{¼ÆžÛ}@Æ32ý ~TÆ©Ôdgv±€áÁ!¤gv½‚‚´F&…Æ"ƒÐgv½‚„àF&…J…ôgvÿ"†ÆžÛ‰¸Æ32ý ŠÌƩԋÜgvz‹üáÁ!Ž8gv¡#TÆžÛ‘¤Æ32ý ’¸Æ©Ô“Ègv “Üá$” gv6$•4á³Û™TáÍý š€áèÔ›ägv6$› á³ÛŸ,áÍý  XáèÔ¡¼gvb$¡Øáy‰Ô£ôgvF £áÁ!¥hgvƒ ¦xF&…"J§°gv£ ¨ÀF&…"J©ø,Œª%ª$è‹&¬P0Œ‘&®Œ4é&°¸W²v'²ìÏ‹£'µV>(·8_Š(¸pu*)º¬gv%¼ÄF&…‚)¾àgvç%¿øF&…‚)Ágv:&Â<F&…‚)ÅlgvÐ&Æ„F&…‚)ȼgv8'ÉÜF&…‚)Ì gvú'Í8F&…‚)ψgvAWИF&…‚)ѬgvAWÒ¼F&…‚)ÓÐgvË(ÔðF&…‚)×H ž³*Øl «+Ü| A­R+ÞÈ gva*àà F&…‚)â!gv’*ã !F&…,äD!gv’*åT!F&…",æx!gvÔç€!F&…*,çŒ!gvÔè”!F&…8,è !gvÔé¨!F&…R,é´!gv,êÔ!F&…ü,í("gvï*î@"F&…?-ðp"gvÔñx"F&…R-ñ€"gv_-ò"F&…j-ó°"gvÔô¸"F&…,ô¼"gvÔõÄ"F&…",õÈ"ìy-öØ"¸-ö#gvà-ø#F&… .ù\#gv.úl#F&…?.û˜#gv.ü¨#F&…L.ý¼#gvT.þÔ#F&…j-ð#gvT.$F&…p.<$gv.L$F&…p.€$gv‹.$F&…™. $gv‹.°$F&…™. À$gv³. Ð$ƒ&…Ñ. ä$gvÔ ì$F&…Ù. %gv/8%ƒ&…Ñ.à%gv/&F&…e/\&gv‹.l&F&…™.|&gv‹.Œ&F&…™. œ&gv³.!¬&ƒ&…Ñ."À&gvÔ$È&F&…Ù.$Ü&gvr/%ô&F&…ï/'Œ'gv‹.(œ'F&…j-)¬'gv0*¼'F&…0+È'gv0,Ø'F&…0-ì'gv.0.(F&…;00((` T01p(† •05€(• ¬07È(  v;Ô(¸ ×0=ì(È 1?)gv,1A)F&…\1BX)gv,1Ch)F&…m1D|)gv{1E”)F&…1G¬)gv“1H¼)F&…1I*gv¨1J@*F&…¾1N˜*gvÊ1O¨*F&…Õ1P¸*gvá1QÐ*F&…Õ1S,+gv,1T<+F&…\1U„+gv,1V”+F&…ø1W¤+gváNX¸+á³ÛYÈ+áÍý ZÌ+áèÔ[Ð+Ô®a2[$,இ2^„,ꮡ2_Ì,gv 2`Ü,F&…‚)aô,gv 2b-F&…,c-gv 2d,-F&…",eD-0­³3f€.I«É3i¨.­­ß3kÔ.J!4pü.[­Î4th/gvWvwx/F&…ó4x/gvWvy /F&…5z¸/gvWv{È/F&…5|à/gvÔ}è/F&…5}ð/gvÔ~ø/F&…5~ü/gvÔ0F&…5 0gváN€0F&…ó440gv,5‚D0F&…5ƒ\0gv95„l0F&…5…„0gvÔ†˜0ƒ¨!†¨0ƒ´!Ô†´0gve4†Ì0ƒ&…Ôˆì0gvq5ˆ1F&…5ŒP1gvq5x1F&…¡5‘´1gvŽ4’ä1F&…¾1—2gvŽ4˜L2F&…¾1¨2ì![“ž°2ö!ˆyžÀ2ÿ!½sŸÐ2"½sŸà2$"Ä5Ÿø20"6¢P3C",6£`3`",6¤p3™"\6¥¸3£"r6§ð3Ü"¬6©H4æ"Ú6¬t4gvþ6¯„4F&…5°œ4gv7±¬4F&…R-²Ø4gvþ6³è4F&…5´5gvÔµ5F&…R-µ05gvþ6¶@5F&…5·X5gvÔ¸`5F&…R-¸ˆ5gv/7¹ 5F&…5»¼5gvõ5¼Ü5F&…ó4¿ü5gvD7À6F&…5Â06gvM7ÃP6F&…5Æp6gvZ7Lj6F&…5ɤ6gvM7ÊÄ6F&…5Íä6gvrÎô6F&…l7Ï 7gvrÐ7F&…l7Ñ47gvÔÒH7ƒÕšÒ\7gvÔÒt7ƒ#”7Ò¤7gvÏ6Óü7ƒ9#ó4Ôœ8ƒK#ó4Õ¸8gvÃ7ÖÐ8F&…5Øð8gvÃ7Ù9F&…5Û(9gvÔÜ`9ƒ«°Ìzܬ9ƒ‰ÔÜø9ƒ#» Ü$:ƒç¯1zÜÀ:ƒ­"ÞÌ:ƒ³=ÞÜ:ƒ°_zÞ,;Áy‰Ôß8;gvÛßH;F&…„8àd;gv5~át;F&…l7â<Ã#Ç8ã <æ#9ãX<í#39ä|<$E9å„<;$‰9å¬<F$‰9êÔ<m$ö9ïD=„$,6ñT=—$=vòd=$+:ót=¥$c:ô„=®$¡:ö”=´$Ø:ø¤=Ð$;ú´=ç$Q;üÄ=ö$²sþÔ= %½sþÜ=%~;þô=%™; >+%×; (>0%þ; 8>gvÔ @>Â+ H>ƒO% T>Èä+ \>ƒr~ h>Ñ, p>ƒ;! |>ƒ‚# ¤>gvÛ ´>ƒš» ¼>gvý  Ì>ƒšI© Ô>gv< ä>ƒšÊ< ì>gv1= ü>†š» ?gvM= ?†šI© ,?gvi= " \AF&…5$ tAgvÛ% „AF&…l7& Bgvf>' BF&…ó4) °BgvÛ>* ÈBF&…5, äBgvB:- üBF&…l7/ ”Cgv&?0 ¬CF&…52 ÄCgv>?3 ÜCF&…55 øCgv:6 DF&…l78 $Egv&?9 ˆEgv¡?? ¨EF&…ó4B œFgv&?C ´FF&…5E ÌFgvÙ?F äFF&…5H Ggv¡?I $GF&…5L Hgvö?M 4HF&…5O THgvö?P lHF&…5R ŒHgv¡?S ¬HF&…5V  IgvÄ:W ¸IF&…l7Y \Jgvk@Z tJF&…5\ ¤Jgvû:] ¼JF&…l7_ @KgvZ7` XKF&…5b tKgvZ7c ŒKF&…5e ¨Kgv­@f ÀKF&…5h ¤Lgv<;i ¼LF&…l7k MgvÔl MF&…þ@l DMgvÛm TMF&…j-n xMgvAo MF&…¾1q ¤Mgv9Ar ´MF&…1s ÄMgv[At ÜMF&…¾1v øMgvº;w NF&…{Ax (NgvQty 8NF&…“Az DNÈ%ÔA{ „NÔ%B} ”N&áBƒ O0&C‰ PO:&gCŒ ¼OM&ŸC• $PW&ÌCš ˆPj&AD¢ ØP}&‚D¦ äPŽ&¶D§ DQ¢&E­ hQÂ&nE° ¤QÌ&ÐE´ RÖ&F· $Rø&zF» 4R '®F¾ DR$'ÐFÁ TRˆ8BÄ RgvåFÄ  Rƒ&…þpÅ ÔRgvåFÆ äRƒ&…þpÇ SgvåFÈ (Sƒ&…þpÉ \SgvGÊ tSF&…5Ì ŒSgvGÍ ¤SF&…5Ï ¼SgvGÐ ÔSF&…5Ò ìSgvíAÓ $TF&…‚)Ù ðTgvÏsÚ UF&…l7Û ,Vgv]HÜ ¬‰—)ÄZ? 艥)îZ@ $в)![A `ŠÀ)R[B œŠÍ)…[C ØŠÛ)ð¾D 4‹ç)&\E Œ*¾H ˜Œ*RÿI +*ª\J 0:*Ú\K @N*0]L œ]*0]M øk*Â]N ´Ž‘*oO À޶*-^P ÐŽý*-^Q àŽgvÔR èŽF&…˜^R ôŽgvÔS üŽF&…²^S gvÔT F&…˜^T gv8U <F&…CX ð×+h_Y Læ+Œ_[ \÷+wž\ d,wž\ l,wž\ t!,wž\ „,,wž\ ”7,©_\ ¬B,R] ìJ,Ã__ 0‘T,`` ”‘^,[`a ’h,Ç`b À’r,ë`c ô’},0]d H“,Yae Œ“ž,Bºf ð“«,Ùag P”½,bh ””Í,Ibi ð”á,‚bj P•ò,Åbk °•-!cl –-fcm p–+-¥cn Ж9-¥co 0—I-‚bp —Y-0]q ˜k-0]r ¨˜}-ßds ´™Œ-Yat dšš-Reu Äš§-}ev ›·-Bºw T›È-0]x ¨›Ú-1fy ,œõ-0]z €œ. f{ Ä.+g| øž,.g} D <.h~ Ô¡L.Tõ 4¢].~h€ x£i.0] Ì£t.Bº‚ ¤‚.Øhƒ p¤.1i„ ð¤š.†i† ¥­.j‡ <¦Á.ijˆ Œ¦Ý. jРܦü.°jŒ 0§/ÄjŽ „§Q/Hk ­X/Pk D­a/ak’ l­g/jk“ ˜­m/vk• Ì­s/…k˜ ®y/Ÿkœ 8®¬/Ÿk  l®½/ºk¤ ¼®Ò/©_¦ è®Þ/Êk§ 4¯ð/ák© ð¯0ðk« ,° 0vo­ L°0im® |°/0l¯ ¤°@0#n± ȰM03o³ è°c0rm¸ ±y0rmº ±›0}n¼ |±®0on¾ ø±¹0@l¿ x²Ä0}n à²Ð0©nÄ P³ß0TlÆ ¨³ï0ÒmÈ ´ü0}nË <´1ümÍ ˜´-1ómÏ ì´>1nÐ lµO1nÒ ôµb1VnÕ ¶1ll× °¶¥1|lÙ P··1lÜ ð·Ç1¢lß  ¸Ù1³mã ¹î1¢mæ p¹2ámè º!2rmì ˜º-2Ìlî øº;2/nð $»A2çló „»U2>nõ Ü»b2Mm÷ 介2Xm÷ ¼œ2zmù ¼°2¦Rû 4¼Ç2’mü L¼Þ2ëmý à¼?3ëm ì½P3ij $¾c3ƒn \¾v3Œn x¾Ûöšn Œ¾‚3èn ¿®3.o `¿Ï3_o ¸¿ß3‹o Àè3úo |Àú3úo ¸Àÿ3ž ØÀ4âp" TÁ%4q$ ˆÁ346q% Â?4Uq& xÂQ4oq( ÌÂi4xq* ÔÂ{4•q* LÇ4¥q+ xÓ4³q, Ðá4ßq- àé4s/ Xı4bs0 €Äº4|s1 ˜ÄÅ4”s2 ÐÄÐ4«s3 øÄ×4¾s5 Åá4˜u6 Æè4½u7 \Æò4½u8 xÆû4Îu9 ¤Æ5âu: ÐÆ5Îu; ôÆ(5v< @Ç55Zv= ˆÇF5¶v> °ÇU5Äw? $Éx5£y@ \Í„5¸yA dÍž5ÕyA l͹5zA ÍÐ5'zB œÍõ5ƒzC ÌÎ6¼zE tÏ6ÚzH Ï'6[{I PÑE6{L ¤ÑQ6˜{M ¬Ñi6©{M ´Ñ†6·oM ðѬ6V|P 4Ò"7ó}T tÔ47oV ÕR7žoW 8Õf7o[ ˆÕgv7~\ ¬Õƒw7#_ øÕƒ€7Y~_ ¬Öƒœ7m~` äÖgvÔa ìÖF&…r~a øÖgvb ×F&…®ùc ×gvd ,×F&…‡~e @×gvÔf H×F&…Ž~f „×gvÔh Œ×F&…™~h Ä×gvÔj Ì×F&…£~j ØgvÔl ØF&…£~l LØgvÀ n \ØF&…­~o ˜ØgvÔp  ØF&…µ~p ´ØgvÔr ¼ØF&…È~r äØgvÔs ìØF&…×~s ÙgvÔt ÙF&…rùt $Ùgvç~v 4ÙF&…Bqw DÙgvx TÙF&…y hÙgvç~z xÙF&…î~{ ŒÙgvÔ| ”ÙF&…|  Ùgv } ÈÙF&… pÚgvç~‚ €ÚF&…î~ƒ ”ÚgvP„ ¤ÚF&…Bq… ´Úgv† ÄÚF&… ‡ ØÚgvÔˆ àÚF&…[ˆ ìÚgvÀ ‰ üÚF&…[Š ÛgvV%‹ ÛF&…[Œ 4ÛgvÛ DÛF&…qŽ XÛgvV% hÛF&… |ÛgvÔ‘ „ÛF&…Œ‘ Ûgv¡’  ÛF&…¼“ ´ÛgvÖ” ÌÛF&…– èÛgvÔ— ðÛF&…Œ— üÛgv €˜ ÜF&…!€™ ܃ú7U€š $܃8#š ,܃ 8a€š 4Ügvl€š TÜgvç~ dÜF&…Bqž tÜgvÔŸ |ÜF&…‚€Ÿ ˆÜgv“€  ˜ÜF&…ª€¡ ¬ÜgvÀ€¢ ¼ÜF&…Ç€£ ÐÜgvØ€¤ ðÜF&…-§ @Ýgv6¨ PÝF&…-© |ÝgvEª ”ÝF&…-¬ ÔÝgvh­ ìÝF&…-¯ $Þgv|° 4ÞF&…-± HÞgvÔ² PÞF&…‚€² \ÞgvÀ€³ lÞF&…Ç€´ €Þgv‹µ ˜ÞF&…-· àÞgv»¸ ðÞF&…-¹ ßgvκ 4ßF&…ã½ `ßgvV%¾ pßF&…ã¿ „ßgvìÀ œßF&…ó ¸ßgvìà ÐßF&…ÿÅ ìßgv ‚Æ àF&…óÈ àgvÔÉ (àF&…ŒÉ 4àgv¡Ê DàF&…¼Ë XàgvÔÌ `àF&… ‚Ì làgv3‚Í |àF&…F‚Î àgvÔÏ ˜àF&…F‚Ï ¨àgvÔÐ °àF&…F‚Ð ÀàgvÔÑ ÈàF&…F‚Ñ ØàgvS‚Ò áF&…F‚× XágvÔØ `áF&…F‚Ø págvÔÙ xáF&…F‚Ù ˆágvÔÚ áF&…F‚Ú  ágvÔÛ ¨áF&…F‚Û ¸ágv¯‚Ü ÈáF&…F‚Ý ÜágvìÞ ôáF&…F‚à ,âgvÔá 4âF&…F‚á DâgvÔâ LâF&…F‚â \âgvÔã dâF&…F‚ã tâgvÔä |âF&…F‚ä ŒâgvÇ‚å ´âF&…F‚é øâgvìê ãF&…F‚ì HãgvÔí PãF&…F‚í `ãgvÔî hãF&…F‚î xãgvÔï €ãF&…F‚ï ãgvÔð ˜ãF&…F‚ð ¨ãgvÔñ °ãF&…F‚ñ ÀãgvÔò ÈãF&…F‚ò ØãgvÃó èãF&…F‚ô ägvõ äF&…F‚ö @ägvö‚÷ PäF&…F‚ø tägvû‚ù „äF&…F‚ú ¨ägvƒû ¸äF&…F‚ü Üägvƒý ìäF&…F‚þ ågv ƒÿ åF&…F‚ Dågvƒ TåF&…F‚ xågvƒ ˆåF&…F‚ ¬ågvV% ¼åF&…F‚ àågvƒ ðåF&…F‚ ægvƒ $æF&…F‚ Hægv#ƒ XæF&…F‚ |ægvÔ „æF&…F‚  ægvÇ‚ ÈæF&…F‚ çgv(ƒ $çF&…F‚ @çgvÔ HçF&…F‚ XçgvBƒ hçF&…F‚ ¬çgvÔ ´çF&…F‚ ÄçgvÀ  ÔçF&…F‚ èçgv¯‚ øçF&…F‚ ègvRƒ èF&…F‚ 0ègv¯‚ @èF&…F‚! TègvRƒ" dèF&…F‚# xègvÔ$ €èF&…F‚$ ègvV%%  èF&…F‚& ´ègvÔ' ¼èF&…xƒ' ÐègvÔ( ØèF&…¨ƒ( ìègvÔ) ôèF&…‚€) égvŃ* éF&…߃, 0égvïƒ- @éF&…„. Tégv,„/ déF&…Ý0 tégv4„1 „éF&…@„2 ”égvV„4 ¬éF&…Bq6 ìégvw]7 üégvÔ8 êgv98 ꃤ„~]: $êgvp„: <êF&…Ý< TêgvŒ„= têF&…Êã@  êgvÔA ¬êáÝ÷´„A èêáøË„B ,ëT9ê„D 8ëgvô„F P냸Šù|H XëƒÂŠ#H `냂#H hëæay2 H ¸ëæay#I Èëæmy9 I ì[9…K 8ìæmy'…L ˆìæmy,M ¬ìb9B…N ´ìgv|O Ä샚S…P Ì샂#P ÔìgvÔP àìáÝ÷a…P ðìáøh…Q ígvÔS íF&…Ž…S „ígvïƒT ”íF&…Î…U ÌígvïƒV ÜíF&…mW îgvÔX îF&…Ž…X TîgvïƒY dîF&…"†Z ¤î¡9J†[ ôî®9J†\ 8ï¶9V†] hï¾9k†^ DðÉ9‘†` äðÔ9$‡c hñƒ :J‡f pñƒ:Uf xñƒ:…\f €ñgvP‡f  ñgvÔi ¨ñF&…\‡i ¼ñgvc‡j ÌñF&…w‡k àñ|:ˆl @òˆ:fˆo \òš:‰q ´ò¨:d‰t Ðòº:­‰v äòÇ:ï‰y ôòÑ:ÿý| üòè:ÿý| ó¨ÿý| ó ;ÿý| ó6;MR| @óE; Š} ˆógvš‰~ ˜óF&…@Š °ógvÕ‰ ÀóF&…tŠ‚ Øó~; ô‡; ‹‡ ,õž;G‹Š 8ö°;œ‹Ž ÔúÇ;0Œ‘ üþÙ;JŒ• 8ÿã;TŒ— Tÿï;Ya™ ˜ÿþ;‰Œš Äÿ <¿Œœ ðÿ<õŒž $%<  P0<S¢ |;<]¤ ˆL<¥¥ ¤^<±¨ ´ˆ8B« xgvë ˆF&…Ϭ œgvÔ­ ¤F&…Ø­ ÄgvÔ¯ ÌF&…ä¯ ÜgvÔ° äF&…r~° ðgvV%± F&…˜^² gvÔ³ ˜F&…í³ ¤gvÔ´ ¬F&…Ž´ ÐgvÔµ ØF&…×~µ üv<5޶ œ<5ޏ ¬<–Žº ,Õ<ÆŽ¾ @ü<þŽÁ Tv<œ’Ä d¡½º’Å t=:Æ „½½Û’È ”õ½Û’Ê ¤!¾“Ì ´7¾“Í ÄJ¾“Î ÔZ¾“Ï ägvcÐ ôF&…pÑ  gvcÒ F&…}Ó < gv•Ô T F&…dQÖ p gvŽ× € F&…ÌØ ´ gvÔÙ ¼ F&…j-Ù À gvtŽÚ à F&…0Ý gvcÞ  F&…}ß , gvZà < F&…}á L gvÔâ T F&…aâ X gvÔã ` F&…fã l gvÔä t F&…j-ä x gvÔå € F&…j-å „ gvZæ ” F&…j-ç ¤ =šè ¬ ´=Äí ô Ô=àð , à=àó d ì=óö t  >‘ú p >4‘ÿ ">ÿý 8>K‘@÷+wžHçMRpH>MRœW>k‘ìa>ÿý ô†>¡‘ <š>¸‘ p´>ë‘ ÄÑ>ë‘üî>’?'’ ?0’d ?>’Ô/?{’,I?©’"¤e?,9%¬Š?a“%È¡?‚“(б?ˆ“(lÄ?¼“-tØ?ÿ“3¸ú?š”:H@Ö”?(@ç”@À:@Y•APM@“•J b@ð•Rì!|@ —Zè+›@a—`ô,­@^˜hH-À@™lø-Ì@Þ™rX.ƒAt`.ƒ#A!šth.ƒ6Atp.ƒCAÃt|.ƒSA*šuˆ.ƒfAÃv”.gv4šw´.gvPšzÌ.F&…mš|ä.gvrš}/F&…mš‚T/gv™šƒ„/F&…mšˆÀ/gvš‰è/F&…mš 0gv蚎@0F&… ›‘p0gvèš“0F&… ›–À0gv蚘à0F&… ››1gvèš01F&… › `1gv蚢€1F&… ›¥°1gvèš§Ð1F&… ›ª2gv蚬 2F&… ›¯P2gv›±p2F&… ›´ 2gv›¶À2F&… ›¹ð2gv›»3F&… ›¾@3gv›À`3F&… ›Ã3gvèšÅ°3F&… ›Èà3gvèšÊ4F&… ›Í04gvèšÏP4F&… ›Ò€4gvèšÔ 4F&… ›×Ð4gv7›Ù5F&… ›Þ<5gv]›àt5F&… ›æ´5gv|™èÄ5F&…fé6gv¹˜ê(6F&… œíT6ˆ8Bð„6ÒAMRðÜ6ïAîœñ7øAõò$7Bò47BõÐ7'B7÷480Beø8;B²ùô8hB_žþø<~B”ž4=‡BžL=žBÞž p=ªB4Ÿ ?ÀB{ŸX?ÆBŒŸ€?ÙBÔŸì@ñBQ AöBÈ "tAC)¡#ðAC;¡%øA!C;¡%B.Cw¡%PBICÏ¡& BYCç¡'ìBjCç¡(8CuCç¡)pC‹Cõ¡*@DCL—,€D©C¢.ÈD±?¢1ðD²C¢2 EÁC-¢4EÏC?¢5LEïC?¢=|ED£ETI.D¤OJCDH¤VHJYDh¤]XJrD©¤cdJ’Dü¤fpJžDC¥i|JàD£j¬RþD§tSpBO§xàV)EW§zW7Ec§| WHEp§8WaE€§dWsEЧƒŒWE‘§„¤W–E£§‡°Wgv­§ŠÐWƒ¸Š#ØWƒÂŠ#àWƒÞе§èWƒ‚#ðWgvÔøWF&…ͧXXgvÔŽ`XF&…ø§ŽØXˆ8BðXgvV%Y>F¨YƒJFYXF¨YƒpF(Yƒ‚#0Yæay2 XYæay#‘hYæmy9 ‘¤Yæmy$¨“ÜYæmy,”Zgv“1•ZF&…J–$Zgv9¨—ªÚ@_gvm£ÛP_F&…RªÜt_gv}¨Ý„_F&…”¨Þœ_gv·¨ß¬_F&…ê¨àÐ_gvm£áà_F&….©â`gvŒ¤ã$`F&…”¨æ@agv®ªçPaF&…ɪèxagvÔé€aF&… Âé”agv®ªê¤aF&…ɪëÌagvÔìØaá“FÚªìøagvàªî8bF&… «õÐbgv}¨öàbF&…”¨÷øbgv·¨øcF&…ê¨ù,cgvm£úpkF&…Ó²>€kgvÔ@ˆkF&…Ó²@˜k)Jþ²Bàk2Jþ²C(l¶¢¨tÒLE¶¤ôtÛLE¶¥uíLJ¶¦uˆ8B§(ugv-U§RȺëŒPR׺íÄfRâºïäyR÷ºò„‚—R»õ¤‚¯R»ø<ƒ¾R»úDƒÐRwžúLƒÛRwžúTƒèRwžú\ƒóRwžúdƒSwžúlƒ SwžútƒSwžú|ƒ#Swžú„ƒ0SwžúŒƒ;Swžú”ƒHSwžúœƒSSwžú¤ƒ`Swžú¬ƒkSwžú´ƒxSwžú¼ƒƒSwžúăSMRú\„œSõû`„©Sõûd„»SžRûÀ…ÇS¦Rü\†ØSM»ýl†íSt»þ(‡T…»H‡T»¤‡TTô‡.T;T0ˆBTHTpˆZT컸ˆdT#T D‰wT®R °‰‹TMR ؉˜TMR ЦTº`гT/¼˜ŠÊT:¼´ŠÚTt»l‹õT…»Œ‹ UºÌ‹U©_Œ$U3º8Œ6U»¸ŒCUJ¼ D[UT¼#˜gv[¼%°F&…mš'ÜgvÔ(äF&…t¼(ŽgvÔ* ŽF&…~¼*8ŽgvÀ +HŽF&…¥¼,”ŽgvV%-¤ŽF&…¶¼.ÔŽgvÔ/ÜŽF&…m~/$gvÔ0,F&…m~0tgvż1„F&…m~2”gvÔ3œF&…à¼3ÐgvV%5àF&…®ù6gvÔ7 F&…®ù7gvî¼80F&…ø¼: gvÔ;¨F&…1;´gvÔ<¼F&…1<Àgvþ¼=ØF&…1?0‘gvúR@@‘F&…1AT‘gv½Bl‘F&…UD˜‘gvÔE ‘F&…½E¬‘gv½FÄ‘F&…UHð‘gvçI’F&…ø¼J’gv0½K(’F&…ø¼M„’gvI½Nœ’F&…UPH“gvÔQP“F&…à¼Q„“gvÔSŒ“F&…®ùS˜“gvçT¨“F&…ø¼U”gv½V(”F&…UXT”HVo½Y””ˆ8B[ä–gvÔ[ì–F&… Â[ø–gvÀ \—F&…}½]—gvúR_(—F&…N9`D—gvÖbaT—F&…mšbh—m†Š½ct—££½dŒ—Ï‹±½f˜—3‘Žh¨—PŒ±½i´—¡í½kÀ—kV¾mÌ—uVí½nØ—V¾pä—ŒX¾qø—g†w¾s˜s˜ዾu(˜è‹­¾w4˜0ŒÇ¾y@˜ü‹ì¾{T˜V¿~h˜,ŒB¿t˜‹]¿ƒ„˜–Vi¿„”˜V‡¿… ˜_Œ¢¿†°˜fŒÀ¿‡À˜¥VÛ¿ˆ̘«Vމؘ±Ví½Šä˜¼VÀŒ™ÅVÀŽ™ÐVÀ8™ßVÀ’T™ðVmÀ”d™ûVmÀ•t™WÔÀ–¸™WëÀ˜è™ Wõ™ì™Ä:ÿÀ™,š.WÿÀœ¬›>WÁŸ`œBWùÁ¢œJW¦¬žVWé@ŸiWÁª pW]툠tWšÃ°ô yW¯Ã²d¡‚W#ĵء‡WKĸL¢ŽWKĺÀ¢•WgļԢœWgÄ¿ø¢¤WÀĈ£®WèÄÆô£¶WèÄÉT¥¼WxÅÌè¥ÌW²ÅЦáWrÆÕ¼¦úW½ÆÚ§ XíÆÜT§X½ÆÝ˜§0XíÆßì§BX Çà,¨QX Çál¨`XkÇâü¨lX Çã©wX¶ä4©‚X¶äP©¢XÝÇä°©ÀX!Èå0ªÉXvÈæTª×X ÉçÌ®åX1Éêü®óXKÉíd¯ÿXdÉït¯Y”Éð˜¯Y«ÉóÀ¯Y¹Éôä¯+YêÉ÷,°1Y!Êù<°gv¹NûT°F&…Jýl°gv¹Nþ„°F&…Jœ°gv¹N´°F&…J̰ƒ9YeÊÔ°ƒCYܰƒªXêÇè°ƒ´XÃô°gvÇ ±gvPÈ(±áD‰» <±á”‰[ T±á¿‰ h±áý‰Ô „±áy‰Ô ˆ±gv~É  ±F&…‚) Ô±gv Ê ä±F&…§Êô±OYÃÊ@²gvøNP²F&…òÊd²gvÏO|²F&…˘²gvÔ ²F&…!ˬ²gvÔ´²F&…!ËÀ²m†CË̲Ï‹QËزfµkË"ð²WŒ|Ë$³PŒŸË&³DŒ·Ë(,³ŒØË*@³׋öË,T³[YGÌ.€³á‹uÌ0”³è‹’Ì2 ³0Œ·Ì4¬³ï‹uÌ6À³,ŒóÌ8ܳü‹0Í:ô³VfÍ= ´¥V¸Í@ ´`YûÍA4´hY0ÎCH´–VcÎET´«V}ÎF`´V–ÎG„´_Œ¬ÎH”´fŒÆÎI¤´g†ÜÎJ¬´gvÔJ´´F&…éÎJÌ´gvÛÍKÜ´F&…ÏLµgvÛÍM µF&…ÏNTµwY„ÏO µWŸÏQеÄ:·ÏR¶.W·ÏVÈ·>W^ÐZ¨¸Y´Ð^T¹„YÔÐaºÌWÑd4ºáWùÑjðºŒYDÒo »¤W±Òtœ»VW[ÓxL¼iW¿Óy ½pWÔ|¬½tW\Ô,¾”YÆÔÀ¾ŽWïÔƒL¿‡WïÔ…Ø¿œY”Õ‡pÀ YÖ‰ ÁyWbÖ‹œÁ‚WùÖŽ,Â¥YXב@ôYX×—tÃÀY™×üÃÿXÀן ÄYå× ÄnŒØ¡,ÄYIØ£lÄ1Y‹Ø¦°Ä+YÙ¨(ÅY@ÙªLÅ`X¾Ù­ìÅlXûÙ®ÆwX¶¯$Æ‚X¶¯@Æ¢XaÚ¯°ÆÀXµÚ°0ÇÉXÛ±TÇgv ʲdÇF&…;Û³Çgv-Ùµ¨ÇF&…bÛ·äǃ9Y†Û¹ìǃCY¹ôǃªXvڹȃ´Xú ÈgvèÙ»$ÈgvìÚ½@ÈáD‰ÀÛ¿TÈᔉ[¿lÈΈ¿€Èáý‰Ô¿œÈáy‰Ô¿ ÈÌYèÛ¿ØÈÔYÜÀhÉgvÔÃpÉF&…=ÜÃ|Égv½KÄŒÉF&…aÜŤÉgvÔÆ¬ÉF&…lÜÆ¸ÉgvÝKÇÈÉF&…aÜÈàÉgv½KÉðÉF&…ºÜÊ<ÊgvÔÌDÊF&…ÎÜÌdÊêYÜÜÍpÊòYÜÜÎ|ÊúYÜÜψÊZÜÜÐ”Ê Z2ÝÑD˦‹ÝÕÔË5Z¦ÝÚtÌLZåÝ߄̪ùÝä”ÌêYÞê ÌòYÞë¬ÌúYÞì¸ÌLZ.ÞíÄ̪IÞñÔÌ Z\Þö\ͦ‹‰ÞùÌÍ5Z¡ÞýDÎŒÑÞèÎ,Œß¤ÏlZBßPÐ{Z~ßÑ•†¹ß Ñ5ZÞß tÑ Zîß °Ñ¦‹ÿß Òm† à(Òg†à4Ò¬àDÓžZ0àhÓ´Z;à¤ÓÃZOàÌÓW†~àÔ×Z·àpÔ‡‡àà ÐÔ®¨ùà"ôÔ_Œ á#Õ–Vá$4ÕŒ)á%„Õ,ŒCá'äÕíZŸá)„ÖöZøá,4×ûZPâ/è×lZ¥â2<Ø[êâ4ÜØ{ZAã7DÙ[Zã9pÙ዆ã=¨Ù#[¡ã?àÙ4[äãDdÚ<[ZãGÚãKÈÚH[¡ãMÛT[äãR„Û\[:äUØÛ[YväXÜh[äZ@Ü׋ªä]pÜ4ðä_ÔÜè‹&åa0Ý0ŒWåc¤Ýt[påeøÝfµåh(Þ€[¡åj\ÞWŒ¸åmŒÞŒ[âåo8ß[2æq0àœ[wæt¸à¢[Þæu\á©[ùàv´áü‹DçwâV‹çzlâ±[Ëç}ã»[$è´ãÁ[fè…äÒ[˜èŠtäé[äèääW²é”åõ[é—Låþ[téšÀå\téœæ\É鞈æ*\õé ¬æ8\ê¢ÌæD\2ê£ç9¶Yê¥4çÛDùà§hç¥V‚ꨈç«V’©¨çM\êªôçV\¡ê®,è`\Àê°\èi\×ê´”èv\þê¶´è ò/ë¸é¶Të¹`ézµ/ë»Øé~µ}ë¼hê’µ/ë¾àê–µ}ë¿pëðµ/ëÁPìøµTëÂ4í‡\ÛëÄüíLZðëÇîªúëÉîž\ ì̤î4ðäÐ|ï×Z·àÒÌï,ŒCáÔð{ZAãÖlðŒ)áØ¬ðlZ¥âÚôð5ZÞßÜ$ñ0ŒWåÞògv4ìàDòƒ&…V%ä”ògvìå´òƒ&…V%èèògv«ìéóƒ&…V%ì<ógvÒìí\óƒ&…V%ðógvíñ¨óƒ&…V%óÄógv íôÜóƒ&…V%öøógvIí÷ôƒ&…V%ù,ôgviíúLôƒ&…V%ý€ô•†HîþŒô©[Tîÿ˜ôW†fî¤ô,Œ|î°ô{Z—î¼ôŒ¸îÈôV áÔôfŒáàôg†Íî èô©†”s (õ®†Tî hõm†âî tõ‡‡îî €õLZïèõÌ\LïHö4sïXölZ“ïdö5Z®ïpöà\ÂïŒöí\×ïÌö÷\!ðP÷íZXð!p÷]{ð$ø÷[¶ð(ø]@ñ+àø]ñ0øø!]æñ4”ùûZò9¬ùöZBò<¸ù*]~ò?ôùü‹±òB úþ[ÛòElú6] óG¸úW²3óKäúB]WóNhû»[—óRˆûN]ËóV¼ûVô[ý\Ûò^`ý`]Yô`¨ýõ[‘ôeþr]Åôh¤þ‡].õl˜±[oõu©]œõy T[¹õ|Äï‹ÛõÐá‹ÛõÜ´]œõƒd4[¹õ†ˆfµïõ‰ÜWŒö‹׋8öX[YXö´è‹sö‘À0Œö“Ìœ[²ö•Ø¢[Õö–äŒ[÷—ð[ ÷™üD\H÷œ9¶v÷žDÛDTî €«V‘÷¡Œ¥V¢÷¢˜¿]³÷£ðV\Ó÷¦Ë]ç÷¨Li\ø«d ò”s­Ô¶Lø®L’µ”s°–µø±Øzµ”s³~µø´d ðµ”s¶( øµLø·ð ×Z—ø¹ü v\·ø» W†×ø½ Œáø¿l lZöøÁ¸ ,ŒùÃü {ZùÅ@ ×Z.ùÇ„ 5ZFùÉì í\RùËh ç]XùÍ” ï‹zùÐÄ ò]XùÒð á‹zùÕ •††ù×<gv”ùØTF&…}Ú|gv¹ùÛ”F&…ÍùݼgvÝùßÔF&…}áüý] úâ  ^Gú㬠úå(^Gúæ4g†ÏîèD1^¤úèT5ZÝú锌ýúëLZûí`lZ9ûïØá‹`ûñPï‹`ûóÈíZ—ûõ”D^Ýûø¤K^6üú´è‹püýÜÊ´püÿè,Œü{ZÓü8öZþüt4@ýœŒ[wý Ø[½ý <ô§ïý`׋þà[Y=þ0WŒrþÀfµ‹þWµÇþxm†ÿ$W†(ÿD•†¢ƒôü‹tÿhþ[¡ÿ øs^Ôÿ"‡‡¨î#D×Z %T^+'À‰^Œ+p–V¢÷.|_Œ‘÷/$V‚ê0HfŒ’1ø3‘ 2•^Çþ3@V†5xW²×6°ž^ù9üV\'<`«^:>i\rAô¸^ŠCË^ÇG`Ô^FIÜö^ƒM4ÿ^óR€_ƃUÔ_ƃVø¶W #µÆƒYP _ãZœ 9¶ã\Ä ÛDƃ^è "_E_! òAƒax!¶–bè!ðµAƒd "øµ–e\#zµAƒg$~µîhÐ$’µAƒj|%–µîkD&\µpüm|&HµÇþo´&Mµpüqì&T[¡sÄ'4[¡vœ(©†Aƒy)Ú´Aƒz˜)ô´Aƒ{<*gvûù|L*F&…è}d*gv-ú~|*F&…è€*gv˜ú *F&…è‚°*gvÐúƒÈ*F&…è…ä*gvÂû†ü*F&…èˆ+gv ü‰8+F&…èŒ`+gv½‚p+F&…®Ž€+gv‹9+F&…Ç +gvÀü‘°+F&…Ç’À+gviŒ“Ð+F&…ý”à+gv.ý–ð+F&…Ç—,gvÔ˜,F&… ˜,gvÔš,F&…F š@,gvéýœP,F&…èd,gv§þž¤,F‰‰D¥ì-F‰Ô¦¸.F‰¦ô.F%‰» ¦/Fðˆ~C¦,/gvÇÿ¦F‰ÔéÐ>F‰é?F%‰» é?Fðˆ~CéH?gv¥é˜?F‰‰DñÔ@F‰Ôò„AF‰ò¸AF%‰» òÄAFðˆ~CòBgväòBF&…aÜôLBgvQõ\BF&…aÜö„Bgvˆ ÷œBF&…‚)ùðBgvÔúøBF&…Ð ú$Cgv(û¬Ä_ÆIdQ®ô_Æ"ŠÔ®`gvt®$`ÆIdQ±„`Æ"ŠÔ±”`gv¾±´`ÆIdQ´aÆ"ŠÔ´PagvG´xaáD‰» ¸aᔉ[¸¬aΈ¸8báý‰Ô¸Tbáy‰Ô¸dbgvǸ„báD‰» »¸bᔉ[»ðbΈ»,cáý‰Ô»Hcáy‰Ô»Xcgv»tcÆIdQ½ÌcÆ"ŠÔ½Ðcgv_½ècF&…dQ¿dgv±À,dáD‰» ÄHdᔉ[ÄhdΈÄeáý‰ÔÄ8eáy‰ÔÄ 'lêý@Blù0ALl 1A Wl 1A(dl21A<tlJ1CT‚ŒêýF`ŒlêýGl‘lêýHx–lêýI„›l1J¡lêýLœ©lêýM¨­lêýN´•^êýOÀ³lêýP̹lä/QؾlêýRäÂlêýSðÈlÝ1TüÍlêýU‘ÑlêýV‘ÖlêýW ‘ÚlêýX,‘ßlêýY8‘ãlêýZD‘èl(2[P‘úlx/]È‘gvê-_à‘F&…N9aü‘gv+.b’F&…£2d0’gvÔe8’F&…³2eD’gvÔgL’F&…tŠgX’gvÔi`’F&…³2il’gvÔkt’F&…³2k€’wX¶mœ’‚X¶m¸’mû/mÄ’!mû/mÐ’-m•m“:mÈ2nH“Cm3sŒ“Sm|3vä“^m¶3{(”imÎ3~€”tm4ƒÄ”€m 4† •‹mZ4‹P•—mr4ލ•¢m¬4“ô•®mÄ4–L–¹mþ4›˜–Æm5žà–ÑmP5£$—Ümh5¦l—çm¢5«°—ómº5®ø—þmô5³<˜ n 6¶„˜nF6»Șnf6¾š*ns6š6n‹6ÅX›Bn˜6Éd›NnÎ6Ì ›^n7Ѭ›kn`7Õœ|nª7ÛHœnÙ7à|œ¥nê7䔜¯nù7æôœ¹nù7è Án8êlÍn8ì„Ön8îäân8ðüën&8ò\ž÷n&8ôtžo08öÌž o08øäžo;8ú<Ÿ"o;8üTŸ,oE8þ´Ÿ8oE8ÌŸAoT8, MoT8D Woc8¤ coc8¼ mor8 ¡yor8 4¡„o8¡‘o8¨¡›o8¢¨o8 ¢²o¯8”¢¿oÈ8¼¢ÊoÒ8@£Ûo9`£ïoB9#Ø£ýof9&D¤ p}9*´¤9p©9/(¥Ipß95Ð¥hp>:<x¦xpy:DT§—pî:M4¨§pt;W|¨¶p¡;Z´¨ÇpÅ;[ü¨Ùpêý\ ©äpêý]©ðpêý^,©üpêý_<©q1`P©qêýb`©$qêýcp©/qêýd€©·´²Æ0>·¼²Æ2r>·ȲÆ7r>·̲gv >·ô²áއ>» ³á҇C»T³gvÔ»\³F&…'>»d³gv->½ ³Æÿq¬³Æ+r6>ÂÀ³Æ06>ÂȳÆ2r<>ÂÔ³Æ7r<>ÂسgvA>´áއU>Æ,´á҇CÆ`´gvÔÆh´F&…]>Æp´gvc>Ȭ´Æÿq͸´Æ+rl>ÍÌ´Æ0l>ÍÔ´Æ2rr>Íà´Æ7rr>Íä´gvw>Í µáއ‹>Ñ8µá҇CÑlµgvÔÑtµF&…“>Ñ|µgv™>Ó¸µÆÿqØĵÆ+r¢>ØصÆ0¢>ØàµÆ2r¨>ØìµÆ7r¨>Øðµgv­>ضáއÁ>ÜD¶á҇CÜx¶gvÔÜ€¶F&…É>܈¶gvÏ>ÞĶÆÿqãжÆ+rØ>ãä¶Æ0Ø>ãì¶Æ2rÞ>ãø¶Æ7rÞ>ãü¶gvã>ã$·áއ÷>çP·á҇Cç„·gvÿ>ç¼·ÆÿqìÈ·Æ+r÷<ìÜ·Æ0÷<ìä·Æ2rÑ¥ìì·Æ7r?ì¸gv ?ì<¸ÆÿqñH¸Æ+r?ñ\¸Æ0?ñd¸Æ2r?ñp¸gv!?ñ¸áއ(?ô¬¸á҇Cô̸gv0?ô¹Æÿqù¹Æ+r÷<ù$¹Æ0÷<ù,¹Æ2rÑ¥ù4¹Æ7r9?ùH¹gv>?ù„¹Æÿqþ¹Æ+rG?þ¤¹Æ0G?þ¬¹Æ2rM?þ¸¹gvR?þعáއY?ô¹á҇Cºgv³6PºÆÿq\ºÆ+rzùhºÆ0zùtºÆ2rÇ<ŒºÆ7rÇ<ºgvø6¸ºáއ~C äºá҇C »gvD7 h»Æÿqt»Æ+rzù»Æ0zùœ»Æ2rÇ<´»Æ7rÇ<¸»gvŽ7è»áއ~C¼á҇CT¼gv—?ˆ¼Æÿq”¼Æ+rŸ?œ¼Æ0Ÿ?¤¼Æ2r¥?À¼Æ7r¥?ļgvª?ä¼áއ±?½á҇C ½gvvf0½F&…N9d½gvvft½F&…ê9´½gvÔ!À½ˆ8B!,¿- E@!4¿gvÔ!<¿F&…¨>!H¿gvã?"X¿F&…Ç<#l¿gvÔ$t¿F&…<>$€¿gvã?%¿F&…Ç<&¤¿gvÔ'¬¿F&…Ñ¥'¸¿gvã?(È¿F&…Ç<)Ü¿gvÔ*ä¿F&….=*ð¿gvã?+ÀF&…Ç<,ÀgvÔ-ÀF&…Ð=-XÀgvã?.hÀF&…Ç</|ÀgvÔ0„ÀF&…?0Àgvã?1 ÀF&…Ç<2´ÀgvÔ3¼ÀF&…M?3ÈÀgvã?4ØÀF&…Ç<5ìÀgvÔ6ôÀF&…n@6Ágvã?7ÁF&…Ç<8$ÁgvÔ90Áˆ8B9¨Á- E@9°ÁgvÔ9¸ÁF&…?9ÄÁgvã?:ÔÁF&…Ç<;èÁgvÔ<ðÁF&…M?<üÁgvã?= ÂF&…Ç<> ÂgvÔ?,ˆ8B?¤Â- E@?¬ÂgvÔ?´ÂF&…??ÀÂgvã?@ÐÂF&…Ç<AäÂgvÔBìÂF&…M?BøÂgvã?CÃF&…Ç<DÃgvÔE(È8BE Ã- E@E¨ÃgvÔE°ÃF&…?E¼Ãgvã?FÌÃF&…Ç<GàÃgvÔHèÃF&…M?HôÃgvã?IÄF&…Ç<JÄgvÔK$Ĉ8BKœÄ- "AK¤ÄgvÔK¬ÄF&…;AK¸Ägv‹9MÈÄF&…N9NÜÄgvÜ@OìÄF&…WAPÅgvÔQÅF&…eAQ(Ågv‹9S8ÅF&…N9TLÅgvÜ@U\ÅF&…WAV€ÅgvÔWŒÅˆ8BWÆ- E@W ÆgvÔWÆF&…?W Ægvã?X0ÆF&…Ç<YDÆgvÔZLÆF&…M?ZXÆgvã?[hÆF&…Ç<\|ÆgvÔ]ˆÆˆ8B]Ç- E@]ÇgvÔ]ÇF&…?]Çgvã?^,ÇF&…Ç<_@ÇgvÔ`HÇF&…M?`TÇgvã?adÇF&…Ç<bxÇgvÔc„Lj8BcüÇ- E@cÈgvÔc ÈF&…?cÈgvã?d(ÈF&…Ç<e<ÈgvÔfDÈF&…M?fPÈgvã?g`ÈF&…Ç<htÈgvÔi€Èˆ8BiøÈ- E@iÉgvÔiÉF&…?iÉgvã?j$ÉF&…Ç<k8ÉgvÔl@ÉF&…M?lLÉgvã?m\ÉF&…Ç<npÉgvÔo|Ɉ8BoôÉ- E@oüÉgvÔoÊF&…?oÊgvã?p ÊF&…Ç<q4ÊgvÔr<ÊF&…M?rHÊgvã?sXÊF&…Ç<tlÊgvÔuxʈ8BuäË- _BuìËgvÔuôËF&…oBuÌgvBvÌF&…‚ùw$ÌgvÔx,ÌF&…tBx8ÌgvByHÌF&…‚ùz\ÌgvÔ{dÌF&…yB{ˆÌgvB|˜ÌF&…‚ù}¬ÌgvÔ~´ÌF&……B~ÀÌgvBÐÌF&…‚ù€äÌgvÔìÌF&…‘BøÌgvB‚ÍF&…‚ùƒÍgvÔ„$ÍF&…Ñ¥„0ÍgvB…@ÍF&…‚ù†TÍgvÔ‡\ÍF&…›B‡hÍgvBˆxÍF&…‚ù‰ŒÍgvÔŠ”ÍF&…¥BŠ ÍgvB‹°ÍF&…‚ùŒÄÍgvÔÐ͈8BHÎ- E@PÎgvÔXÎF&…?dÎgvã?ŽtÎF&…Ç<ˆÎgvÔÎF&…M?œÎgvã?‘¬ÎF&…Ç<’ÀÎgvÔ“ÌΈ8B“DÏ- E@“LÏgvÔ“TÏF&…?“`Ïgvã?”pÏF&…Ç<•„ÏgvÔ–ŒÏF&…M?–˜Ïgvã?—¨ÏF&…Ç<˜¼ÏgvÔ™Èψ8B™@Ð- C™HÐgvÔ™PÐF&…?™\Ðgv‹9šlÐF&…N9›€ÐgvÔœˆÐF&…M?œ”Ðgv‹9¤ÐF&…N9ž¸ÐgvÔŸÄЈ8BŸ<Ñ- E@ŸDÑgvÔŸLÑF&…?ŸXÑgvã? hÑF&…Ç<¡|ÑgvÔ¢„ÑF&…M?¢Ñgvã?£ ÑF&…Ç<¤´ÑgvÔ¥Àш8B¥8Ò- E@¥@ÒgvÔ¥HÒF&…?¥TÒgvã?¦dÒF&…Ç<§xÒgvÔ¨€ÒF&…M?¨ŒÒgvã?©œÒF&…Ç<ª°ÒgvÔ«¼Òˆ8B«4Ó- E@«<ÓgvÔ«DÓF&…?«PÓgvã?¬`ÓF&…Ç<­tÓgvÔ®|ÓF&…M?®ˆÓgvã?¯˜ÓF&…Ç<°¬ÓgvÔ±¸Óˆ8B±0Ô- E@±8ÔgvÔ±@ÔF&…?±LÔgvã?²\ÔF&…Ç<³pÔgvÔ´xÔF&…M?´„Ôgvã?µ”ÔF&…Ç<¶¨ÔgvÔ·´Ôˆ8B·,Õ- E@·4ÕgvÔ·<ÕF&…?·HÕgvã?¸XÕF&…Ç<¹lÕgvÔºtÕF&…M?º€Õgvã?»ÕF&…Ç<¼¤ÕgvÔ½°Õˆ8B½(Ö- E@½0ÖgvÔ½8ÖF&…?½DÖgvã?¾TÖF&…Ç<¿hÖgvÔÀpÖF&…M?À|Ögvã?ÁŒÖF&…Ç< ÖgvÔìֈ8BÃ$×- DÃ,×gvÔÃ4×F&…;AÃ@×gv%DÅP×F&…£2Æd×gvËCÇt×F&…>DȘ×gvÔÉ ×F&…eAɰ×gv%DËÀ×F&…£2ÌÔ×gvËCÍä×F&…>DÎØˆn/ÏØon/Ñ$سjêýÓ4ØÄjn/ÔDØ›¾‡“ÖTØ¢¾™“×dØÏ/ØtØf?0Ù„ØúÖ/Ú”Ø Ý/Û¤Øä/Ü´Ø ä/ÝÄØ10ÞÔØ) 0ßäØR0àôØA!0áÙit+âÙlr¶ã(Ùµâ+ã4ÙmyÙ+å@Ùlä/çLÙwX¶èhÙ‚X¶è„ÙKfîîèÈÙvrqDêðÙâbïìhÚgvsCîÚƒñ`» ïÈÚÁ D‰» ïÔÚÁ¿‰ï8ÛÁ ”‰[ïHÛÁý‰Ôï`ÛÁy‰ÔïÆ&…ê9ïdÛgvÔñpÛÆ&…³Dñ|Ûö‹oáò¨Ûgv¢DóÀÛF&…N9õØÛgviŒöìÛÆ&…ê9÷Æ&…r:÷ÜgvÔúÜÆ&…:EúÜö‹™Hû\Ügv'EütÜF&…ê9þŒÜgv“E ÜÆ&…r:¸Ügv·EÌÜÆ&…r:Æ&…m;äÜgvÔðÜö‹ÖGHÝÆ&…+HTÝgvÉFhÝÆ&…m; „Ýgv G ˜ÝÆ&…m; ´Ýgv8G ÈÝÆ&…m; äÝgvH üÝF&…r: Æ&…= ÞgvÔ,ÞÆ&…ÒH8Þö‹JK¨Þgv»HÀÞF&…m;èÞgvˆIüÞÆ&…=$ßgvÐI8߯&…=Tßgv"Jh߯&…= „ßgvXJ ˜ßÆ&…=!ÀßsЧ!à¤sÙ+"à´sÙ+$ àÆs•L&0àâsâ+)<àôs¡L+LàtÙ+.Xà"tÙ+0dà5tÙ+2pàHtÙ+4|à^tø+6Œàmtø+8œà|tÙ+:¨àtä/<´àšt­L=¼à®t³L=ÄàÊt³L=Ìàètä/=Øàôtã0>äàu¹L@ðàu^Bøà;upBá^uÓLC áouÜLCá‚uåLCá”uîLC$á¦u÷LC,á¸uMC4áÊu MC<áÝuMCDáîuMCLáv$MCTáv-MC\á'v6MCdá;v?MCláMvHMCtáavQMC|áuvdMCTâ†vdMEXã™vdMG\ä¬vØIdäËvØIläèvÝ1I|äúvÝ1JŒäw¼2Käw`@L”ä*we@M˜ä=wƒJNœäNwV@O ä_wQ@P¤äpw[@Q¨ä’w’RØä˜wˆMSåŸwMVHå§w—MY€å±wŸM\ÔåËw¬M_LæÖw¹Mcpæçw¬Mfèæôw¹Mj ç x×Mmàçx†ùnÔè*xNo¸é5xNp€êAx!NqÀëXx!Nsíkx¶uí~x¶uíx¶uíœx¶u í§xx/u4íºxx/w@íÆx'OyîÓx'O|8ïæxn/Lïöx'Oðy'O„Dñyn/‡Xñ+y'O‰(ò7y'OŒPóJyn/dóZy'O‘4ôfy'O”\õyyn/—põgvÔ™|õáÝ÷‚ù™ˆõáøzùš”õgvV%œ¨õáÝ÷‚ù¼õáøzùžÈõgvÔ Ôõá~dcP äõgvÔ¢ðõá~diP¢üõgvÔ¤öá~doP¤ögvÔ¦$öá~duP¦4ögvÔ¨@öá~dè<¨PögvÔª\öá~d{PªlögvÔ¬xöá~dP¬ˆögvÔ®”öá~d‡P®¤ögvÔ°°öá~dP°ÀögvÔ²Ìöá~d“P²ÜögvÔ´èöá~d™P´øögvÔ¶÷á~dŸP¶÷gvÔ¸ ÷á~d¥P¸0÷gvÔº<÷á~d«PºL÷gvÔ¼X÷á~d»P¼d÷gvÔ¾p÷ˆ8B¾xøÚôþgvÔÜüþF&…'>ÜÿgvÔÞ ÿF&…è<ÞÿgvÔàÿF&…=à$ÿgvÔâ,ÿF&…»=â4ÿgvÔä<ÿF&…É>äDÿgvÔæLÿF&…]>æTÿgvÔè\ÿF&……=èdÿgvÔêlÿF&…O=êtÿgvÔì|ÿF&…ñ=ì„ÿgvÔîŒÿF&…;Aî”ÿgvÔðœÿF&…eAð¤ÿgvÔò¬ÿF&…­Rò¸ÿgvÔôÄÿˆ8Bô ÖyBRôgv‹9ô$F&…N9õ8gviŒöHF&…³D÷lgvvfø|F&…ê9ù¼gv‹9ûÌF&…N9üàgviŒýðF&…³DþgvÔÿF&…“>ÿ$gvÔ,F&…'>4gvÔ<F&…è<DgvÔLF&…=TgvÔ\F&…»=dgvÔ lF&…É> tgvÔ |F&…]> „gvÔ ŒF&… S ”gvÔœF&……=¤gvÔ¬F&…O=´gvÔ¼F&…ñ=ÄgvÔÌF&…;AÔgvÔÜF&…eAägvÔìF&…­RøgvÔˆ8B$ÖyBR,gv‹9<F&…N9PgviŒ`F&…³D„gvvf”F&…ê9 Ôgv‹9"äF&…N9#øgviŒ$F&…³D%,gvÔ&4F&…“>&<gvÔ(DF&…'>(LgvÔ*TF&…è<*\gvÔ,dF&…=,lgvÔ.tF&…»=.|gvÔ0„F&…É>0ŒgvÔ2”F&…]>2œgvÔ4¤F&……=4¬gvÔ6´F&…O=6¼gvÔ8ÄF&…ñ=8ÌgvÔ:ÔF&…;A:ÜgvÔ<äF&…eA<ìgvÔ>ôF&…­R>gvÔ@ ˆ8B@,ÖyBR@4gv‹9@DF&…N9AXgviŒBhF&…³DCŒgvvfDœF&…ê9EÜgv‹9GìF&…N9HgviŒIF&…³DJ4gvÔK<F&…“>KDgvÔMLF&…'>MTgvÔO\F&…è<OdgvÔQlF&…=QtgvÔS|F&…»=S„gvÔUŒF&…É>U”gvÔWœF&…]>W¤gvÔY¬F&……=Y´gvÔ[¼F&…O=[ÄgvÔ]ÌF&…ñ=]ÔgvÔ_ÜF&…;A_ägvÔaìF&…eAaôgvÔcüF&…­Rc hzÙ+e ‚zä/g, ˜zt+hh ®zTTip ¿zrTiH áz‡Tn$ ûzºTsœ {ÈTvø&{ßT}hT{ßT‡ôt{U‘dˆ{+U•ð¡{?Už0½{}U¤Dã{ŠU§¤ | Uª$|¨U¬3|¨U¬$I|¡L¬<p|â+¯T‹|Ù+±¤¤|Ù+³ôÀ|Ù+µDß|Ù+·”û|·U¹ä}¿U»4.}ÇU½\<}ÎUÀ°W}×UÃØ`}ÞUÆ,{}çUÉ|”}ïUËÌ®}SVÍ,7Ï}{VÓ(9â}…V׈9ï}—Vßü9ý}—VêŒ: ~ÄVõØ:~ÐVùh;)~åV¬;6~W P=N~-W¨=f~³L°=}~³L¸=–~Ù+Ô=¯~Ù+ð=Ê~•L>ï~õ>?W>EW >2SWp>F\W¼>[bW?qhWT?‡nWä?›•W @¯ä/"¬@Äã0#È@à¹L%Ü@€¥W'A€ÀW)\A€ìW+ÀA.€(X-@B=€IX/€BN€pX2äB_€ŸX5hCp€ÖX8 D€Y;TD“€/Y>¼D¥€aYAHE·€œYDøEgvÃG FƒÕ€HFÆá€ÚªH(FÁ“FÚªJ8FgvÔLDFáê€9WLTFá1NpFgvÔO|Fáê€9WOŒFá1Q¨FgvV%R¼FƒTÀYSàFÁê€9WSôFÁ1U GgvÔV,GÁê€9WV@GÁ1XTGgvÔY`GÁê€9WYtGÁ1[ˆG‚õ\ŒG=‚õ\Ge‚õ\”GŒ‚õ\˜G°‚õ\œGõ‚t+\ÄGƒt+]ÐG ƒÎY^ðGƒÎY_üG"Ší,`$H)ƒ8Ba@H2ƒ8Ba\HAƒêýa„HKƒÔYb”H…ßYg H>”¶i¨Hxƒðëi´HƒúëkÀHŠƒX nÌH•ƒp qØH ƒöYuXI½ƒZz¤Iσ.Þ€°IÚƒIÞ„ÀI僇«^ÀP\‡¤_ȼQm‡¢aÌ$Sƒ‡µbÏ„T™‡WcÓØU¯‡rcÖ8W‡žcÚXÕ‡0fÝ4Z뇇gà¬[ˆRhä4]ˆohç¬^,ˆŸhë`?ˆÌhî``ˆ8Bòbgv_9òbF&…N9ó(bgv‹9ô8bƒ&…N9õLbgv_9ö\bF&…N9÷pbgv‹9ø€bƒ&…N9ù”bgv®>ú¤bF&…‚)û´bgv_9üÄbF&…N9ýØbgvù>þèbF&…ê9ÿcgv=?cF&…r:(cgvŽ?8cF&…m;`cgvì? pcF&…= ˜cq”j c”Mm¨c˜”Mm°c®”Mm¸cÔMmÀcà”MmÈcö”MmÐc•MmØc*•MmàcI•Mmèca•Mmðc~•Mmøc–•Mmd¬•MmdÇ•Mmdæ•Mmdý•Mm d–Mm(d-–Mm0d?–Mm8dN–Mm@dl–MmHd~–MmPd™–MmXd¬–Mm`d–MmhdÖ–Mmpdî–Mmxd —Mm€d,—MmˆdU—Mmdƒ—Mm˜d”—Mm d¨—Mm¨d—Mm°dÝ—Mm¸dõ—MmÀd ˜MmÈd˜MmÐd7˜MmØdL˜Mmàdc˜Mmèdy˜Mmðd‘˜Mmød¡˜Mme¶˜Mme˘MmeߘMmeò˜Mm e™Mm(e™Mm0e)™Mm8e>™Mm@eT™MmHef™MmPe{™MmXe”™Mm`e«™MmheÀ™MmpeÒ™Mmxeë™Mm€ešMmˆešMme+šMm˜eFšMm eZšMm¨emšMm°eˆšMm¸ežšMmÀe¿šMmÈeäšMmÐe›MmØe'›MmàeG›Mmèed›Mmðe‹›Mmøe£›Mmf¿›Mmf×›Mmf÷›MmfœMm f;œMm(fXœMm0foœMm8f‡œMm@fœMmHf³œMmPfÉœMmXfÞœMm`fúœMmhfMmpf'Mmxf<Mm€f\MmˆfwMmf…Mm˜fŸMm f½Mm¨fÚMm°fóMm¸fžMmÀf(žMmÈf:žMmÐfOžMmØfpžMmàfšžMmèf²žMmðfÉžMmøféžMmgõžMmgŸMmg$ŸMmg7ŸMm gRŸMm(ggŸMm0gŸMm8gšŸMm@g¸ŸMmHgÓŸMmPgñŸMmXg Mm`g$ Mmhg8 MmpgP Mmxgj Mm€g Mmˆgž Mmg¾ Mm˜gÖ Mm gí Mm¨g¡Mm°g¡Mm¸g4¡MmÀgL¡MmÈgf¡MmÐg‚¡MmØg®¡MmàgÙ¡Mmèg¢Mmðg¢MmøgG¢Mmha¢Mmh¢Mmh¡¢Mmhº¢Mm h…¢8h×¢–ATh⢠jphí¢jŒhˆ8Bty•y6z6z6zuz’zÒzÌzÄz#{{8{#{#{8{{°{È{ã{|}}}}}}}6zÈ{A~}}È{A~©~MMtytytyŠŠtyŠtytyMMtytyMMMtytytyŠŠtyŠtytyMMMtytytyy€MMMMtytytyŠŠtyŠtytyMMMMtytytytyy€MMMMMtytytyŠŠtyŠtytyMMMMMtytytytytyy€MMMMMMtytytyŠŠtyŠtytyMMMMMMtytytytytytyy€MMMMMMMtytytyŠŠtyŠtytyMMMMMMMtytytytytytytyE„K„Q„—„œ„ŠtyŠtyty-…J…-…J…-…-…y…~…-…y…~………-…y…~………Œ…-…y…~………Œ…“…¸…J…-…-…-…-…6zÎ…tytytyŠŠtyŠ}tyty6z6ztytytyŠŠtyŠtyty³†¸†³†¸†tytytyŠŠtyŠtytyg‡ˆˆFˆUˆUˆ{ˆ‚ˆ‰ˆˆ‰ˆˆ¡ˆªˆ¼ˆ¼ˆIŠEŠwŠ}ŠwŠ}ŠŽŠ”ŠšŠwŠ}ŠwŠ}ŠŽŠ”ŠšŠtyty6‹?‹œ„œ„­‹°‹Ó‹6zӋߋߋߋߋߋŒŒŒß‹Œß‹ß‹ß‹ß‹Ó‹Ó‹Ó‹ˆ–ŒÍŒÍŒ}”}””Ž”ÍŒÍŒÍŒ $ty}Ó‹6zwŠ}ŠŽŠ”ŠMwŠ}ŠŽŠ”ŠMtyty6‹?‹œ„œ„6z6z6z͌ߋŒß‹ß‹ß‹ß‹ß‹~ƒ~ƒHˆ*Œ§§Hˆ*ŒHˆ*Œùùùù–ŒÍŒ°‹°‹ –ŒÍŒÍŒÍŒ $}U‘Y‘“‘tyU‘U‘ÿ‘U‘ÿ‘U‘U‘m’t’ˆ’Ÿ’½’Ú’ÿ‘ó’ÿ‘“ÿ‘“ÿ‘8“Ú’H“ÿ‘o“—„o“ÿ‘—„Ú’ÿ‘Ú’ÿ‘Ú’ÿ‘½’Z”s”Ÿ’””g‡Ÿ’Ÿ’g‡Ÿ’Ÿ’•ˆÿ‘•ÿ‘•ÿ‘6zó’ÿ‘ó’ÿ‘ó’ÿ‘•ÿ‘¹•ÿ‘ˆú•–ˆ–Hˆ*Œ–Hˆ*Œ––Hˆ*Œ–––Hˆ*Œ–– ––Hˆ*Œ–– –ß‹{ˆ‚ˆ¡ˆªˆ¼ˆ‰ˆˆ©–MMŠtyŠtytyMMtytytywŠ}ŠŽŠwŠ}ŠŽŠ”ŠšŠv—wŠ}ŠŽŠwŠ}ŠŽŠwŠ}ŠŽŠ”ŠšŠv—wŠ}ŠŽŠtytytyəݙð™ÿ‘ÿ™ šš!š +š :š6z6z|U‘àš|U‘tytyy€wŠ}ŠMwŠ}ŠwŠ}ŠŠtyŠtytywŠ}ŠMwŠ}ŠwŠ}Štytytytyy€MMMMwŠ}ŠMMMMMMMMMMMMMMMwŠ}ŠMŠtyŠtytyMMMMwŠ}ŠMMMMMMMMMMMMMMMwŠ}ŠMtytytytytytytytytytytytytytytytytytytytytytyû¤¥ty¥"¥2¥U¥U¥6zs¥€¥s¥–¥¥¥–¥ty¥¥–¥·¥U¥É¥Ï¥Ø¥õ¥¦¦¦¦ty¦¦6zty¦6z8¦¦F¦R¦¦g¦¦z¦–¥—¦°‹Ú’°‹¦°‹Ú¦ç¦¦•–¥ty §§ §§ty §6z§ §6z§2§C§¦Q§[§f§o§¦„§”g‡·¥U¥·¥•6z6z—¦µ§µ§6zÉ¥¦é§·¥¨¨ ¨,¨O¨X¨a¨|û¤¥M³¨ù¨6zú©¸…$ª«ß‹ß‹ß‹ú©$ªr«x«~«„«Z©ï«MM¬6z;¬;¬L¬X¨L¬É¥;¬c¬¦t¬¬;¬„§;¬ެß‹‰ˆHˆ¡ˆ;¬;¬A­I­;¬I­;¬{­I­;¬{­ ­;¬Ä­Ñ­ç­I­;¬I­®D®O®u®O®¼ˆ™®¾®™®O®Ô®à®ê®©–Ô®à®ê®y…~…Ô®à®ê®y…~………Ô®à®ê®;¬$¯ê®;¬;¬O®v¯‹¯;¬„§¯¯¡ˆ½¯}ߋߋߋFˆK²ß‹A­ß‹A­A­A­A­ˆ²6z¦I­}UˆUˆÈ{A³A­A³A­A³A­A³A­A­A­£³A­£³A­¦I­¬Š¬Š²Š¬Š²ŠÌЬвŠÌŠÒЬвŠÌŠÒШЬвŠÌŠÒŠØŠš—¬Š²ŠÌŠÒŠØŠš—´¬Š²ŠÌŠÒŠØŠš—´>´Ó‹H“·¥·¥¦6z;¬ž´·¥·¥·¥Ó‹·¥¸´·¥д·¥·¥·¥·¥·¥·¥·¥д·¥д·¥·¥g‡·¥6ˆ·¥д·¥6ˆ·¥д·¥д·¥·¥„µ·¥„µ·¥„µ·¥„µ·¥„µ·¥¸´·¥¸´·¥¸´·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥Ö¶¶ñ¶ý¶ ··Ö¶ñ¶ý¶ ··Ö¶ñ¶ý¶ ··Ö¶ž´ž´ž´ž´÷í·}}}¹}}}}}}}:»:»Ê»Ê»ô» ¼/¼ç¦O¨°‹2½I½_½g½i½½š½š½ê½š½ê½š½š½š½š½š½6z6z6z6z»¾»¾ê¾}}ú¾MMM‡¨ÿ¾$ª ¿––Ó‹Ó‹6zÓ‹6zÓ‹Ó‹6zÓ‹MMM‡¨ÿ¾8¿ž´8¿ž´mÌž´ž´ž´ÆÌFˆÈÌãÌÿÌ*ŒÍÍ –3ÍgÍgÍÓÍÜÍgÍgÍÍŒ9Ï9ÏnÏtÏ}¦“Ϥϧϳ϶ϹϾÏÈÏÓ‹ÕÏØÏ¹Ï¾ÏÈÏÓ‹¤Ï§Ï³Ï¶Ï¹ÏÈÏ}vÐÕÏØÏ¹Ï¾ÏÐÈϘÐ} EŠ¤Ï§Ï³Ï¶Ï¹ÏÈÏ}дÕÏØÏ¹Ï¾ÏÈÏ}EŠ¤Ï§Ï¨Ò×ÒàÒ¶Ï}ÈÏEŠéÒ¾Ï ìÒ üÒ i½+Ó6Ó@ÓJÓTÓ^ÓiÓtÓ ×Ò }Ó àÒ ¶Ï éÒ¹ÏÈÏ}EŠÁÓËÓÕÓàÓéÓØÏ}¾Ï ÈÏ ìÒ òÓ EŠ éÒi½ÔÁÓ ÔËÓÔÕÓ"ÔàÓ +Ô éÓ ØÏ éÒ ¹Ï¾ÏìÒÈÏòÓ}EŠ+ÓVÔ`ÔjÔuÔ~Ô‡Ô‘Ô ›Ô ¦Ô ¯Ô §Ï³Ï¶Ï¹Ï¾ÏÈÏÕÏØÏ٤ϧϤϧϤϧϤϧÏß‹ÆÌß‹ž´ÆÌÆÌi½ÆÌi½ÆÌž´$ªgãlãgãžã°ã – ––äuzä!ä2äAäLäVäuzä‚ä“ä¬ä½äÓäää ûä å "å i½uzä‚ä“ä¬ä½äÓäNå ûä å "å i½uzä‚ä“ä¬ä½ä~åÓä Nå ûä å "å i½uz¨åi½uz¨åi½uz¨åi½äuz¨åäuzÍŒ –uz‚äÓä¬ä½äûä åuz·¥žã°ãuz·¥žã°ãäƒæƒæžã°ã使ž´äìæäçç$ªç$ªç$ª} –ŒÙÓÍÙÓÍÙÓÍÙÓÍÙ#çÙ#çٳ϶ÏÙÕÏØÏٳ϶ÏÙÕÏØÏٳ϶ÏÙÕÏØÏÙ+Ó6Ó@ÓJÓTÓ^ÓiÓtÓ ×Ò }Ó àÒ ¶ÏÙÔÁÓ ÔËÓÔÕÓ"ÔàÓ +Ô éÓ ØÏÙÕÏØÏÕÏØÏ(çٳ϶ÏÙÕÏØÏÙÙÙÙ9ÏÙ٤ϧÏ٤ϧÏ٤ϧÏÙÙÙÙÙÙß‹ÆÌß‹6ç} –<ç?çˆBçHçNç6ç?ç©–Nç6ç} –<çRçÆÌlã$gãlã$gãžãWç}wŠ}ŠŽŠ”ŠšŠMMäÕçLäÛçêçwŠ}ŠŽŠ”ŠšŠMMtytyty – – – – –~åNå} –͌͌RçÆÌ·¥¦ÍŒüÒ©–ß‹©–ß‹©–ß‹©–ß‹©–ß‹©–vЩ–vЩ–vЩ–vЩ–È{¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–Ö¶©– ·©–·©–Yòy…~… ·©–·©–Yòy…~… ·©–·©–Yòy…~…ß‹Œ – –ãôŒÍŒãôúô – –ˆˆ$Ûöàö –$9ÏgãÈÌgã9ÏÈÌ –Ì÷ÈÌgãtyÍŒNøß‹–͌ߋ]øHˆˆi½È{_øÆÌy€MwŠ}ŠwŠ}ŠŽŠMMwŠ}ŠwŠ}ŠŽŠMtytytytygã9ÏIùBçHçgã9ÏQùIùHçß‹9Ïi½çÈÌHˆ*Œ –Ì÷ÈÌÌ÷ÈÌXXXU‘U‘ž´ÍŒNø‚$ª$ª$ª$ª9ÏK Fˆ9Ïn ƒ’¡¤§·Øßø} – – –_}ÍŒ–}y„çÆÌ™i½ÆÌ£i½ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙyyy}}6zê}ð©–óöi½óöi½ƒ6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6zÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøIù·¥ú•$ª:·¥д·¥д·¥B½¯·¥¡ˆ·¥¡ˆ·¥·¥em{·¥6z£6z –ß‹ú•6z£ß‹ú•ß‹ú•6z£ß‹ú•ߋ͌ߋ͌ߋú•½¯6z£ß‹Œú•ú•<6z£ú•ú•–EP6z£ú•–EP6z£[^adú•ß‹}ß‹}Iùgдgдg:gB½¯g¡ˆggsz{gߋ͌ߋ͌ߋ”͌ߋ͌ߋ½¯K²<˜ÍŒÍŒß‹”ÍŒ–$ªHˆß‹·º½I­–ß‹EŠ– ––Ýáá ¿·º–$ª·ºi½$ª–¨Ò ¿æ8¿*2$ªfÙf6çf2¨Òf2i½fi½8¿¬8¿¬¡ˆ‰ˆ –¡ˆ8¿Z©x«~«ÙUˆ‰ˆ –8¿Z©x«~«ÙUˆi½8¿¬8¿¬¡ˆ‰ˆ –¡ˆ8¿*Ù8¿L R  ¿R $ª8¿R i½q x  6ˆq 6ˆq x  6ˆD®O®ÍŒ¡ˆÍŒ¡ˆq Ùq 6ç6ˆ$i½$$ªq 6ˆx $i½x i½q 6ˆi½q Ùq 6çß‹6z£;¬¡ˆ½¯u®u®1!}1!}1!}r«;¬A­r«;¬r«HˆZ©x«~«Z!b!¯¯¨Òr«;¬{­™®EŠ™®¹•™®¹•¨Ò –$ªZ©ÍŒx«ÍŒ~«ÍŒ¹!Z!¹!Z!b!¯¯ ¿¹!Z!b!¯¯$ª;¬¹!Z!b!¯¯i½;¬¹!Z!b!¯¯i½««„«ß‹ˆß‹ß‹ÍŒ¨ÒÍŒ¨ÒÍŒEЍÒÍŒˆ¨Ò$ª¨Ò«$ª$ª¨Ò$ª$ª¨Ò$ªˆÍŒ¨Òˆð"„«ÍŒï«ÍŒ¨Òð"ï«„«ÍŒï«ÍŒ¨Òð"ï«„«ÍŒß‹ˆß‹ˆß‹ˆEŠEŠ8¿EЍÒ8¿EЍÒEŠŠ#A­EŠZ©ÍŒˆEŠEŠI­Z©x«~«ÆÌI­Z©x«~«ÆÌˆß‹ß‹EŠÍŒ«$ߋߋ͌À$ÆÌÙ$ÆÌÀ$ÆÌŽß‹#%&% –&%«$<%MMMMMMtytytytyI­Z©x«~«ÆÌ„«¨ÒI­Z©x«~«ÆÌ„«¨Òß‹ˆEŠˆÍŒZ©¨ÒÍŒ$ªß‹ˆHˆ«$ˆ¨Ò«$ß‹ˆx«ð"¨ÒˆEЍÒߋ͌ˆx«ð"¨Òˆ*Œ¨ÒÀ$ˆ„«*Œx«ð"¨Òˆ¹•¨ÒÀ$ˆ„«¹•ˆX%¨ÒˆX%¨ÒÀ$ˆ„«X%À$ÆÌˆÙ$ˆ¹•Ù$ÆÌˆï«¹•¨Ò﫹•¨ÒÀ$﫹•À$ÆÌæ$ªŽ¨Ò#%&%¨Ò­‹¨Ò&%­‹¨Ò&%­‹<%¨Ò8¿¸…ï«Þ%ö% ##Z©ï«ˆ&&„«&&6ˆ¾®¨Ò靖6ˆ&&¾®„«$ EŠ6ˆ&¾®¹•¨Ò靖6ˆ&&¾®„«¹•ê®™®x&L ;¬$¯ê®™®x&ž& ¿æï«´&8¿$ªï«¨ÒÍŒK²¨Ò͌ߋà&í&͌ߋ¨ÒÍŒA­¨ÒÍŒA­¨Ò8¿½¯8¿½¯8¿tyZ©ÍŒ¨ÒZ©ÍŒ¨ÒZ©ÍŒ¨Òï«Þ%ö% ##Z©ÍŒß‹$ª¹ÐÍŒ¹ÐÍŒÆÌ ¿;¬{­$ª;¬{­i½ï«X%¨Ò﫹•¨Òˆ&¨Òˆï«6ˆ&&¾®„«$EŠˆï«6ˆ&&¾®„«¹•ˆï«6ˆ&&¾®„«X%ˆï«6ˆ&&¾®„«$ÆÌˆˆˆˆÍŒ¹•$ª?'¨Òï«J'?'#tyˆ±¨Òï«J'ˆ±#V'½¯c'L D®¨Òï«i½ï«y'#tyˆ±'¨Òï«y'#V'ˆ±½¯¥'D®O®Þ'u®O®i½¼ˆä'$ª™®i½™®i½æ¾®™® ¿¾®™®O®i½¾®™®O®i½™®i½™®¨Òê®™®x&tyV'¨Òà®ê®™®x&V'ê'Ô®à®ê®í'Ô®à®ê®i½y…Ô®Ùy…~…Ô®Ùy…~………Ô®Ù;¬Ùu®u®™®¨Ò$¯ê®™®x&ž&ty$¯ê®r«™®x&ž&i½V'¨Ò$¯™®x&V'ž&ó'$¯™®x&V'ž&i½tyi½$¯ê®$ª$¯ê®i½$ªý'ty™®ý'b!EŠ™®ý'b!(™®ý'b!(;¬O®™®$ª;¬O®i½ ¿v¯i½¸…#V'í'Uˆtyù¨Uˆi½ù¨#V'¸…清i½æï«´&¨Òæï«ty¯¯æ8¿$ª¸…¨Ò ¿ÍŒß‹à&í&$ªÍŒß‹à&í&i½í'͌ߋæÍŒß‹i½I(͌ߋA­L ͌ߋA­i½O(͌ߋA­i½ÍŒA­Þ'ÍŒA­i½ÍŒA­i½ÍŒA­ä'ÍŒA­i½ÍŒA­i½ÍŒ ¿$ªÍŒi½ÍŒi½™®U(™®U(™®L A­™®í'A­™®i½æ™®i½I([(i½™®U(***g‡*g‡*g‡6z**6z6ˆ)–¥ÈÌê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ÆÌFˆÈÌãÌ –ê¾ê¾ê¾ê¾*é§ã*ã*ãÌ –ãÌ*+„çŒã+øHˆHˆ*Œ$ª$ª$ª$ªê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾$ªê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾$ª$ªê¾Fˆ –ê¾ê¾9ÏÓ.9Ïî.•g‡ß‹ –^/ˆ^/^/ÍŒ^/ÍŒNø^/ÍŒNøŒ†/“/| /†/“/| /Ç/ˆ9Ïç/tyß‹}} –}Hˆ}9ÏI0¦W0Z0]0<ç`0q0u0‹0“09ψˆ9ÏFˆÍŒ9ψ•ˆ•ÈÌ –]øß‹9ψty'1'1'16zty'16zm1ˆŸ1ˆtyŸ1ˆŸ1ˆ6ztyŸ1ˆ6ztyyˆyˆ} 22¦É¥¦9Ï –} –*Œß‹ˆ^2¦–2™2§29ÏÄ2Ä2ñ2ù2ü23 3ñ2ù2ü23 39Ïù29Ïù2Ä2ÜÍÜÍ$Ä2‹3”3œ3ÜÍÄ2¸3ÜÍÄ2œ3Ä2œ3ÜÍò3ö3Fˆã+44$ªÜÍŸ1ˆFˆM4^4e4„4„4„4¦4„4„4$ª$ª}ˆ’„4„4„4„4„4„4„4„4„4„4„4Æ5ç5ˆ$ª6Œ$ªÜÍ686$ªO6£6©6,¨£6Ó‹µ6¨Òé§ÜÍé§ç5ˆ’^7,¨ÈÌ,¨«²s7FˆFˆê¾Ó.yî.²7ÆÌHˆ¸7HˆyHˆyHˆ9ÏHˆÆÌ 3ÙÙO6]ø§2$ù2Óͧ29Ï»7ü23 3Á7ÓÍÁ79ÏÜÍÉ7^4HˆˆÄ2Í7FˆM4ߋ͌„4ß‹„4Hˆ*Œ„4¦4Ñ7Ö7Û7ˆ’Fˆ„4ß‹„4 –Hˆ*ŒˆÍŒHˆ*ŒHˆÉ7Hˆ„48Hˆ8Hˆ%848C8$%848ÜÍ%848ÜÍ%848ÜÍ„4ß‹„4È{R8W8]8d8k8r8v8z8~8‚8Ü͆88”8›8ÍŒÜÍ¢8¦8Üͪ8±8¸8¿8Hˆ*Œ––ÜÍ¢8¦8ÜÍÆ8Í8Ô8Û8â8é8ÍŒL ÍŒI(ÍŒO(ÍŒÞ'ÍŒä'ÍŒð8ÍŒ÷8ÍŒþ8ÍŒ9ÍŒ 9ÍŒ9ÍŒ9ÍŒ!9(9Hˆ*Œ––ÜÍHˆ*ŒÜÍ$ªÍŒÜÍ ¿ÍŒÜÍÍŒÜÍÍŒÜÍÍŒÜÍÍŒÜÍæÍŒí'„4„4„4ç5/919ç519ˆ=96ŒD9ÜÍFˆÉ7E„—„œ„686©–86K9N9}tyÍŒNøwŠ}ŠwŠ}ŠŠtyŠé§tytyMMtyÍŒNøÙ£6©6£6©6Ù£6Ù„4„4„4Å9„4ß‹Œ„4ç5/919á9ä9ç5„4ß‹„4ž´Í –ž´ƒž´ –Íž´ƒÄ:?ç¦Ä:¦?çU‘9ÏÄ:}ŒÄ:Œ}U‘|¨ÒŠ8¿i½8¿–ŒŠi½Š8¿i½8¿–ŒŠi½"¥ –"¥í;$ª"¥•"¥y"¥<"¥Ÿ1"¥'1Fˆ8¿tyi½8¿tyi½"¥ –p<s<}$ªFˆ –È{ÙÙŽ<š½Ž<š½ß‹¿<Æ<Ñ<Ž<ô<š½Ž<꽚½š½š½ô<š½ê½š½ê½š½š½š½š½š½3=O63=–ß‹3=¨Òß‹¨Ò¨Òß‹¿<Æ<¨Ò3=–7=–ÍŒÈ{$ª$ª7=$ªÆ<—„k7¤=ª=Æ<À=Î=Æ<¤=s7Æ<¤=s7Æ<ý=¤=s7Æ<À=¤=—„FˆÆ<À=¤=—„FˆM48“9Ï9Ïߋ͌9Ï8“ˆ9Ï$Î>ˆ9Ï$Î>–—„Ñ<$Ñ<s7$Ñ<s7$Ñ<s7$Ñ<s7$Ñ<s7$Æ<—„¤=O6¾?Ñ<Î>$À=ˆ9ÏÑ<Î>ð?$À=ˆ9ÏÑ<$ˆ9ÏÎ>FˆFˆÆ<—„$À=¤=ð?Fˆˆ i½Æ<Ñ<—„$¤=Fˆˆi½Æ<—„$¤=ð?w@ˆi½†@Æ<7=Ñ<$ˆÑ<s7Æ<†@7=¤@ˆ$µ@Ñ<s7ˆµ@Ñ<s7ˆ9Ï$µ@Ñ<6z6z6zý=Ô@ã@8“ 3ƒˆ$Î>sAxA}Aˆ$Î>‚AsAxAˆ$Î>‡AxAÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>$ˆ 3w@Î>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3w@Ñ<Î>$À=ˆ 3FˆÑ<ˆÎ>ð?$À= 3Fˆµ@O6µ@Ñ<s7ˆ9Ï$U‘ß‹ BB$ B$ª$ª$ªGBPBWBaBk7GBpBaBk7PBGBpBPB“B$™B“B ¿Fˆ³BpB¸B¼Bk7PB³BpBPBÔB$ªFˆäBpBÔBŒk7PBäBpBÔBPBCÿ‘ÍŒBCBCcCã+ã+–C–O6$O6$ŒO6¨Fˆ¨ØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨!DáCêC —„ ÍŒØCÿ‘³B©~¨áCCØCÿ‘³B©~¨*ŒRD fDiDlDoDÍŒˆDáCD¨ˆDáCÿ‘ØCÿ‘³B©~¨êDáCêC ùD ÍŒØCÿ‘³BÍŒ³Bty³Bˆ³BEEˆYEPBlE6z6zYEÿ‘6zwŠ}ŠŽŠwŠ}ŠŽŠÙÙy€ŠtyŠtyty¨$ªÍŒmÌ¨ÒØCÿ‘³B©~¨áCêCÍŒR8W8#çŠFˆD6çR8W8#çŠFˆD6ç¹ÐÍŒØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨*ŒRD FˆlDáC fDiDlDoDÍŒNø³B¨áCˆD fDiDlD oDÍŒfDlDÍŒR8W8#çŠFˆD6çR8W8#çŠFˆD6çˆDáCD}F¨Ò9ÏF¨ÒÍŒNøØCÿ‘³B©~¨ty¸FÆÌR8W8#çŠFˆD6稈DáCÙÿ‘ã+–³Bty³Bty³BtyU‘U‘y€MwŠ}ŠMMMMwŠ}ŠMMMtytytytytyy€MMMwŠ}ŠwŠ}ŠMMMMwŠ}ŠwŠ}ŠMtytytytytytyÿ‘tyâIi½ÿ‘tyÿ‘ÍŒmÌ}mÌ}$ª$ªˆŽCJ6z™B™B™B™BPB|J„J™B¼JPBß‹ˆŽ|J„J|J„J|J„J|J„J|J„J|J„J|J„J3K:K ¿3K$ªVKVKVK|JVKž VKVKüÒ6züÒ6zPBPBÇKÍKÕKFˆŒÇKÍKÕKŒîKüÒL½¯6ˆˆŽˆŽˆŽˆŽˆŽˆŽˆŽ:K:K:KÍŒ:KLNø$ªæ ¿$ªtL¨Ò6z6z6zO6¨ÒO6™B™BÍŒUˆUˆ$ªœ3|M –¸ÔÍŒUˆUˆú•ú•‰ˆˆ –¸ÔÍŒUˆUˆú•U‘U‘]‘ÿ‘U‘‹3ÿ‘888i½88U‘—„—„mÌU‘U‘yFˆi½U‘ÿ‘U‘Y‘ÿ‘U‘ÿ‘U‘ÿ‘ÿ‘U‘U‘ÿ‘ÿ‘U‘U‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘U‘ÿ‘U‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘ó’ÿ‘U‘M4U‘£U‘ÿ‘U‘ÿ‘£tyU‘U‘U‘U‘£g‡U‘g‡U‘U‘U‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘U‘ÿ‘“ÿ‘SUÚ’ÿ‘SUŸ’ÿ‘ð"tyjUmUß‹U‘yY‘ÙY‘Y‘~UY‘«$<%Y‘mÌmÌÿ‘£tyty•yU‘ÿ‘tyŠUtyÿ‘‘UˆÆÌÿ‘–Uˆ£ty£›Uty£UªUˆ«$<%mÌ£tyÿ‘–UˆU‘ty$ªó’$$ª8“ƒ—„ty_VcV_V6z_V6z6z_V~ƒ§~ƒ§¸…_Vд_Vд_Vд_Vд_VL½¯_VL_V½¯Iù_V_V°‹‡¨_V_V_V°‹~ƒ~ƒ~ƒ~ƒ~ƒ_V_VO6Œ]øˆ”Ž8W”;W6‹”]ø6‹8W”;W6‹PW]ø]ø6‹”]ø6‹”]øß‹]øß‹g½ÍŒß‹ÍŒg½ß‹g½ß‹g½6‹Hˆ*Œ6‹Hˆ*Œ6‹ß‹O6Œ6‹g½Œ6‹8W;W6‹*Œg½Œ6‹ß‹”×WÜW6‹ß‹O6îWôWO6FˆO6O6FˆO6O6O6 BO6$$O66‹p<s<6‹íXðXg½ŒO6O6 $O66‹Œ –6‹–6‹ˆ6‹*ŒÍŒ6‹*ŒÍŒ6‹HˆÍŒ6z6z Bá²O6$ ±ÒÍŒ6‹Œ”W0]0¨Òߋ͌Œß‹6‹Œ”íXðXíXðXêÓ‹6zêÓ‹êÓ‹êÓ‹êӋ긅ê:ê:êдêдêдêдêIùêL½¯êL꽯êдêдê°‹°‹°‹êêsYß‹Ùߋٌg½$ªˆ”}Ž8W”};W6‹”}g½6‹”g½6‹”g½6‹ß‹”}×WÜW6‹ß‹O6îWôW6‹ß‹”}Œ6‹ß‹O6Œg½6‹”g½6‹”g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ÍŒß‹ÍŒg½6‹ŒŒß‹g½ÍŒ6‹ŒŒß‹g½ÍŒg½Œg½g½6‹ˆ6‹Œ –6‹ 6‹–O6 $ BO6$$O66‹ŒÙ ±ÒÍŒNø6z6z Bá²O6$$ªW0]0¨ÒsYO6i½sYO6i½g½àYåYsY‡¨‡¨‡¨‡¨ZZ%Z-ZZZ%Z-Z«²ZZ%Z-Z@Z‡¨PZWZ^ZeZ‡¨PZWZ^ZeZ6z‡¨‡¨‡¨‡¨PZWZ^Z‡¨PZWZ^Z6zZZ%ZZZ%Z«²ZZ%Z@Z¸…‡¨Iù‡¨¸…‡¨Iù‡¨‡¨6ˆ@Z6ˆ6ˆ6z‡¨·¥†ZU¥’Z6ˆ¯Z$Œ¯Z$±Ò¿Z¯ZÐZIù‡¨ßZæZ‡¨‡¨úô¸…‡¨Iù‡¨¸…ßZæZIùßZæZIùßZæZ¸…‡¨¸…ßZæZIù‡¨ß‹‡¨s7$д‡¨ßZæZß‹/[$дßZæZß‹‡¨s7$д‡¨ßZæZß‹/[$дßZæZß‹‡¨$:‡¨ß‹‡¨$:‡¨:‡¨д‡¨д‡¨ß‹‡¨$д‡¨ß‹‡¨$д‡¨ßZæZßZæZ•[‡¨‡¨‡¨L½¯‡¨L‡¨½¯LßZæZ½¯L½¯ßZæZß‹‡¨¦Î[Œß‹‡¨¦Î[ß[ß‹ß[‡¨¦Î[L½¯‡¨L‡¨½¯\‡¨\‡¨6‹‡¨¸´‡¨‡¨6‹‡¨¸´‡¨‡¨‡¨·¥ß‹‡¨s7Fˆд‡¨ß‹‡¨s7Fˆд‡¨~\‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨“\6ˆ‡¨g‡‡¨g‡6zU¥’Z6ˆ6z:‡¨Iù‡¨Iù‡¨Iù‡¨¸…‡¨¸…‡¨6ˆ@Zд‡¨ß‹‡¨¶\&tyß‹‡¨¼ˆtyß‹‡¨¼ˆty‡¨ß‹¼ˆtyß‹‡¨ty‡¨ß‹tyß‹¼ˆtyд‡¨¿\tyúôúôÆ\IùúôIùúô¸…úô‡¨úôúôúôúôBçHçúôg‡ß‹ã+Œ:úô¸…úôÙ\@ZFˆÍŒŒ6ˆ«²ß‹BçH縅BçHçß‹FˆBçH縅BçHçß‹BçHç]ŒIùBçHç]Fˆß‹BçHçŒIùBçHçIùBçHçß‹O6ã+L½¯úô\úôß‹O6ã+ŒL½¯úôß‹ŒBçHçL½¯BçHçß‹ ¦Î[ŒLúô½¯\úôß‹ ¦Î[ß[Lúô½¯ß‹BçHçŒß‹BçH猚] ]¦][ i½LBçH罯ߋBçHçдBçHçдúôдúôß‹BçHçдBçHçдúôдúô:úô:úôдúôдúôúôúôBçHçBçHç]6‹úô¸´úôúô·¥úôß‹Fˆ$ªдúôß‹Fˆ$ªдúôúô¸´úôúô¸´úôúô¸´úôúô¸´úôIùúô~\úô×]Û]¸…ã]¸…ã]Iùã]Iùã]Iùã]6ˆ@Z6ˆã]ß‹ã]$дã]ß‹ã]$дã]ã]ß‹EŠ–ß‹EŠ$–ß‹EŠ–ß‹ß‹ÍŒ¬¬½¯@Z6ˆ@Z¸…·¥g‡·¥¸…·¥д·¥д·¥¸…emß‹­‹ß‹S^mд·¥д·¥Iù·¥Iù·¥Iùem:·¥ememW^·¥:·¥:·¥д·¥д·¥6ˆ·¥·¥_^·¥L½¯·¥\·¥ß‹emIù·¥ß‹W0]0¨Ò6‹em·¥·¥·¥·¥6z6ˆ·¥·¥L½¯·¥ÆÌ­‹$д·¥ÆÌ­‹$д·¥À^ $±ÒÀ^·¥·¥ã^ê^$·¥ã^ê^$¨Òã^ê^¨Ò·¥·¥¸´·¥·¥¸´·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥д·¥6ˆ·¥д·¥дemдem·¥·¥·¥ß‹¨Òߋ͌¨Òß‹¨Ò6ˆß‹¨Òß‹­‹¨Òß‹S^m¨Òß‹ –ß‹ –ß‹ –ß‹W0]0ß‹ –ÍŒNøÍŒÙ·¥¨Ò6ˆ·¥ –ð"*_/_¢XBß‹¨Òm¨Òem¨Ò·¥¨ÒÍŒ¨ÒFˆ·¥$­‹/_¢XB·¥­‹2_±Ò/_¢XBß‹Œ·¥7_­‹/_¢XBÀ^·¥ Ž$ –/_¢XB·¥ã^ê^$ã^ê^¨Ò·¥¨Ò<_A_}Q_Q_<_W_¨Ò·¥A_}Ó‹*_/_¢XB<_·¥A_}Ó‹*_/_¢XB<_·¥¨Ò·¥¨Ò<_A_}Q_<_·¥¨ÒÆÌ·¥ –[_/_¢XB6ˆ·¥ –ð"*_/_¢XBÆÌ·¥ –[_b_/_¢XBß‹t_z_‚_ _ÀX¢X°_ÍŒ¨ÒÍŒ¨ÒX¨·¥_^á²&`¨ÒᲨÒÉ¥·¥·¥„§g`r`€`6ztyÍŒNøŽ`tyÍŒNøß‹t_z_‚_¨ÒÀX¢X͌͌„§Ô`_^ß‹X¨¨ÒX¨Ya¨Ò_^¨Ò¹Ð*Œá²&`¹Ð*Œá²&`¨ÒYa¨ÒŽ$ªˆiW¸Ô>WiW _UˆUˆú•¹Ð¹Ð¹Ð –MMMMtytyty¹ÐZ©¹ÐZ©Z©¹Ð¨ÒÍŒ¨Ò¹Ð –¹Ð¨ÒØbi½ –g‡ –ß‹ –ß‹ –ß‹W0]0á²&`¨Òß‹ –ß‹ –ᲨÒß‹ –ߋ͌ߋg‡¢X¨Ò%cß‹Ž¨ÒŽá²&`¨ÒᲨ҂_&`½¯¨Òt_z_‚_ß‹ – –y€ß‹ –ß‹ –$ß‹W0]0ß‹ –á²&`ß‹ –á²ß‹½¯ß‹g‡¨Òß‹Tdg‡¢Xz_‚_á²&`½¯ }ß‹ –_dð"B6‹6‹ÍŒNø¿dÝdädtyÍŒNø¿dtyÍŒNøtyÍŒNøídòdtyÍŒNøÇFÇFÇFÇFL½¯ÇFLÇF½¯дÇFдÇF¸…ÇFIùÇFL¬ÇFÇFÇF‡¨‡¨‡¨‡¨‡¨PZWZ‡¨PZWZ6zZZeeZZeeZZ«²eeZZ@ZZZ6zZZ@Z¸…‡¨¸…‡¨Iù‡¨Iù‡¨‡¨‡¨·¥@eMeU¥ZegeZZß‹‡¨$±Òß‹‡¨$±Ò‡¨$±Ò‡¨lDoD$±Ò6ˆ6ˆß‹~\ ¸´‡¨‡¨‡¨ú¾¸´‡¨‡¨ß‹ÍŒ fߋ͌IùÍŒ fߋ͌$ߋ͌ fß‹8fW¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½¨Ò¦lNmFˆlg½¨Ò¦lNmZn>WFˆg½¨ÒZn>W¦Nmwn>WFˆlg½¨Òwn>W¦lNmFˆg½™n¨Ò¦NmÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒZnFˆÍŒFˆÍŒZn×oFˆZn×o6zæo·¥¦mlU¥¦ml·¥·¥p"p*p1pU¥p"p*p1p·¥·¥p"p*p1pYp`pU¥p"p*p1pYp`p·¥·¥p"p*p1pYp`pˆp pU¥p"p*p1pYp`pˆp p ·¥·¥¦mlù2ù2͌͌͌͌NøÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒNøÍŒ}Fˆg½Fˆg½ÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WFˆlJr>rArFˆlg½>rArFˆlg½FˆlJr>rArFˆlg½>rArFˆlg½Zn>WFˆg½ArZn>WFˆg½>WFˆlg½>rArwn>WFˆlg½Fˆg½™nArFˆg½™nyÍŒyÍŒNøÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒNøR8W8#çŠFÍŒNøR8W8#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒNøR8W8#çŠFÍŒNøR8W8#çŠFÍŒNøÍŒNø6zÍŒNø6z6z6z6z6z6z6z6z6z6z6z6z}ÍŒNøÍŒNøÍŒ fã+Œã+ˆFˆO6y…~…]ø-…ß‹]ø/9ß‹y…~………]ø-…ß‹]ø/9}ߋߋy…~………Œ…-…]øß‹ß‹ß‹ß‹]ø/9}y…~………Œ…“…]ø-…ß‹]ø/9}͌ߋߋߋߋ͌W0]0W0]0ŠW0]0W0]0ŠW0]0W0]0W0]0W0]0W0]0W0]0W0]0W0]0tyty¿dty6‹ty¿dð"i½ð"i½ð"i½6z*_ߋߋߋߋߋߋߋ–O6ÆÌˆO6ÆÌˆO6ÆÌˆO6ÆÌˆO6ˆFˆŒO6ÆÌˆO6ˆFˆŒO6ÆÌˆO6O6O6O6Txi½Txi½ÍŒNøÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøtyÍŒNø¿dtyÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒFˆÍŒFˆÍŒFˆð"ÍŒFˆR8W8#çŠFR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøê¾tyŠ×zw@Üzi½Š×zw@ÍŒi½Šw@×zŠÍŒNø{{ {$ŠÍŒNø2{8{?{F{M{ $ ±ÒŠÍŒNø`{2{8{?{F{ M{ $ÍŒNø‚{”ŠÍŒNø‚{”{”™{$ o7ŠÍŒNø‚{”{”ŠÍŒNøŠÍŒNøÍŒNøŠÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNø9}ÍŒNø9}ÍŒNø9}ÍŒNø9}ÍŒNøÍŒNøÍŒNø9}Ë}×zw@Üzi½9}Ë}w@×z9}Ë}ÍŒNø{{ {$9}Ë}ÍŒNø2{8{?{F{ M{ $ ±Ò9}Ë}ÍŒNø`{2{8{?{ F{ M{ $ÍŒNø‚{”9}Ë}ÍŒNø‚{”{”™{ $ o79}Ë}ÍŒNø‚{”{”9}Ë}ÍŒNø9}Ë}ÍŒNøÍŒNøÍŒNøŠÍŒNøË}͌͌͌͌Ë}ÍŒË}͌꾿d꾊ê¾6‹”6‹”6‹”6‹”6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMNɀ͌NøÍŒNøÍŒNøtyÍŒNøtyGÍŒNøÍŒÍŒNøÍŒÍŒNøÍŒ·¥·¥·¥·¥X¨ÍŒWƒ[ƒbƒgƒrƒ·¥g‡·¥g‡U¥g‡6z·¥PZWZU¥PZWZ6zÈÏ®ƒ³ƒ/[¸ƒ˃®ƒ³ƒ/[¸ƒÈÏ·¥PZWZ^ZU¥PZWZ^Z6zÈÏ®ƒ³ƒóƒ/[¸ƒøƒ˃®ƒ³ƒóƒ/[¸ƒøƒÈÏ·¥PZWZ^ZeZU¥PZWZ^ZeZ6zÈÏ®ƒ³ƒóƒ/„/[¸ƒøƒ 4„˃®ƒ³ƒóƒ/„/[¸ƒøƒ 4„ ÈÏW0]0W0]0W0]0W0]0tyty8¿tyi½Š8¿tyT‡i½8¿tyŠi½8¿tyi½Š8¿T‡i½Š8¿i½8¿–ŒŠi½8¿tyi½8¿tyi½Š8¿T‡i½Š8¿i½8¿–ŒŠi½8¿tyi½FˆIˆˆ$ß‹]øß‹ê¾ß‹]øß‹ê¾ß‹]øß‹]øß‹Hˆ*Œß‹Hˆ*Œ–ß‹Hˆ*Œ––ß‹Hˆ*Œ–– –||y…|y…~…|y…~……… 111 1 1!7777 7!???"? ?!I*II.I I!U6UU:U U!cBccFc c!swNwwRw w!xVxxZx x!z^zzbz z!z)zf~j~n€9€r€)€f)fAˆ ˆzˆ~ˆ)ˆ‚‘)‘f‘Š‘ œ’œ° ±š±»ž»ìAöAöQ÷AùA¢)¦Af)Š!z!‚!)!~Vï¾ñÆóÆ÷ÆùÒú¾û¾üAýÆ7¾`AàAn‚r‚„vÇÚÇãÉ"n%A&:&n&j(A)>)B)ÆP9PAPr`9`A`Ž©êªî«)«f¬)¬f±)±f²A²9²r²À¶9¶A¶òºA»:»n»jÆÉAÉ9ÉrÊÎ9ÎAÎrÏAÏ9ÏrÒAÒ9ÒrÖ9ÖAÖr×9×A×rÚ9ÚAÚrÛ9ÛAÛrÜAÜ9ÜrÝAÝ9ÝrÞ9ÞAÞrâäêåêæêçêA9r). ) :)F)R)^)j)v)‚ ) Ž#)#š&)&¦)))²+)+f-)-f/)/¾»A»9»rÐêÑêÒ6Ó:Ô>ÕBÖF×JØNÙRÚVÛZÜ^ÝbÞfßjànâã;É<á=á>á?á@áÉgv–Ùgv³ágvÃégvÃñgvÔùgvÝ gvgvgv!gv)gv1gv9gvAgvIgvQgvYgvagvÃigvqgvÔygv gvÔšy1‰gvÔ!gvÔ‘gv‘¡ê{[©gvÔ±gvÔ¹gvÁ$ gvÛ, gv$ MN, M]šy±ay2 my„ gvÔÉgvÀ D •y>L •yRT gvÛ\ gvd gvÛ!T MN\ M]d M@"4šyÀ"4ay2 4myû#4gvÔt •y"| •y&"„ •y3"Ly€?Œ gvÛL‚#” gvœ gvÛ!¤ gvÉ%Œ MN” M]œ M@"¤ M*&Lšy³&Lay2 Lmy(LgvV%´ •yî%¼ •yý%Ä •y &Ì •y&dy€?Ô gvÛd‚#Ü gvä gvÛ!ì gvÉ%ô gvš*dšyÎ*Ô MNÜ M]ä M@"ì M*&ô MY+day2 dmyn,dgvV%•y+ •y+•y&+•y7+$•yH+|y€?,gvÛ|‚#4gv<gvÛ!DgvÉ%Lgvš*Tgv/|šyÊ/|ay2 |my0|gvV%,MN4M]<M@"DM*&LMY+TM™1\•yæ1d•y 2l•yZ2t•y”2|•yÎ2„•y3”y€?ŒgvÛ”‚#”gvœgvÛ!¤gvÉ%¬gvš*´gv/¼gv^4”šyš4”ay2 ”myÞ4”gvV%ŒMN”M]œM@"¤M*&¬MY+´M™1¼MÍ6Ä•y7Ì•yZ7Ô•yš7Ü•yÚ7ä•y8ì•yZ8ô•yš8IgvÔIgv9áay#ámy!9éê„,9ñ…29ügv_9gv‹9&…N9 gv¢9gv_9gv‹9&…N9$&…ê9,&…N94&…N9<&…r:D&…ê9L&…N9T&…N94n…':\&…m;d&…r:l&…N9t&…ê9Ln…':|&…N94n…ø:„&…=Œ&…m;”&…N9œ&…r:ln…':¤&…ê9Ln…ø:¬&…N94n…Y<´gv®>¼gv_9Ägvù>Ìgv=?ÔgvŽ?Ügvì?ä×…NäšyU@äay2 äî…Ûämy„@ gvìgvÛì6zNìšy=Aìay2 씲S&…N9Ä&…N9dgv4ElÅ•U‘Ø•Utgv-U|ú•]U|–fU| –Û´Å•N¹5–:V?–DVyM–RÄgv4Eďл ÄŠ !‘_–eV´"–þU¹n–xVy–!—–V´*– VÌ&…ÛUägvÙVìÅ•Wô&…RDügvAWéJš,9,6zl,gv6zN©Õš\©Ûš\ ›j\á"›y\ 1›#¹C›\±1›#¹N›…\‰õ“o gv&…N9¸†'B³†NÄ&…N9$6zN,¸Š» ,Š !4Ò†t%ß‹C>t%ˆS>|%ù«²q„%&…N9Œ%Mõq”%&…N9œ%«$q,œ%ˆ7¤%«$z,¤%ß‹í>¬%gvf>|%gvÒq´%gvÛ>¼%ˆ7¼%EŠq,Ä%ß‹í>Ä%ÍŒ]Ì%&…N9¼%gv>?Ô%ˆ7Ô%*ŒNÜ%À$ìDÜ%ˆ7Ü%„«NqÔ%gv/7ä%ˆ7ä%¹•9ì%À$ìDì%ˆ7ì%„«Nqä%gvÙ?ô%ˆ7ô%X%Qzü%ˆ7ü%X%Qz&À$ìD&ˆ7&„«Nqô%gvö?ü%gvö? &À$ìD &ÆÌq,Ü%gv¡?ì%gv¡?&gv¡?&Ù$S@&ˆ7&Ù$S@&ÆÌq,&gvk@$&À$/$&ÆÌq,ÔgvÔ,&ù«²q,&ó«¦q4&&…N9<&ŽND&­‹œDL&&%CAL&­‹œD´&…N9ÜgvÔT&&%CAD&gv9AL&gv[AägvÔ\&<%q,|6zNd&gvíAl&×…Nt&6zN|&M]„&MNŒ&gv¬Bt&5†ë@l&î…ÛÄ"6zN”&gvWvœ&gvpD¤&]ˆÛ¬&gvWv´&gvòD¼&v±åzÄ&¨?Ì&ó«¦qÔ&gv4EÜ&5†ë@¼&ˆ±îzÄ&¦¨ÛÜ&6zNÔ&Š !Ô&¸Š» ¼&’±{ä&gvêEì&gv\Fô&gvâ|ü&gvâ|´gvÛ„×…N'Z©¦q'ÍŒN 'Z©¦q 'ÍŒN'Z©¦q'ÍŒN'﫲q'Þ%&$'ö%9G' #òp'#‰7'Z©¦q'gvG$'î…Û 'gvG'gvG,'ß‹vG$'gvÛ4'gvx<'&…N9$'×…ND'¹ÐBHL'?áT'&…N9\'¹ÐBHL'c ìgvÔd'ÆÌq,l'ù«²ql'ó«¦qD'gv]H\'gv]HôgvÔt';¬q,t'{­ýHügvÔ|';¬q,|'{­ýHt'gvFu„'ˆQI„'&ÿCŒ'ó«¦q”'&…N9œ'ˆQIœ'﫲qœ'6ˆs1œ'&Cœ'&ÿCœ'¾®Ú2œ'„«Nqœ'$?¤'ˆQI¤'﫲q¤'6ˆs1¤'&C¤'&ÿC¤'¾®Ú2¤'„«Nq¬'?á´'ˆQI´'﫲q´'6ˆs1´'&C´'&ÿC´'¾®Ú2´'„«Nq¬'c gvÔ¼'ˆQI¼'﫲q¼'6ˆs1¼'&C¼'&ÿC¼'¾®Ú2¼'„«Nqœ'gv€I¤'gv»I´'gv»I gvÔÄ'ˆJŒ'ù«²ql&gvÛ¼'gv»IÌ'ˆJÔ'gv4EÜ'5†ë@Ô'¸Š» Ô'Š !Ä'gvŒuÜ'6zNä'×…Nì'6zNù"ŠÔä'gvÛô'gv¢9A„!°Kgv¢9ùgv½Kì'5†ë@ä'î…ÛgvÔü'×…N(6zN ’'`L (&…N9ü'î…ÛgvÔÌ&ù«²qü'gvÛgv¢9éÂ'ÏL(5†ë@(¼ˆVz$gvÔ(™®z|³=$(gvÔ,(™®z,gvÔ4(¾®p4(™®z|#» „5†ë@<(gvÔD(¾®pD(™®zD(O®t4(gv™ML(¾®pL(™®zL(O®t,(gvWvD(gv†vT(™®z\(™®zd(ê® Dd(™®zd(x&çMl(à®Nl(ê® Dl(™®zl(x&çMl(V' 4D&…N94gvÔt(Ô®rNt(à®Nt(ê® Dd(gvôMd(&…þpl(gv/Nl(&…eDQgv¢9¼"gv4E &…N9|(Ô®rN|(à®N|(ê® Dt(gvØv„(y…N„(Ô®ÅNŒ(gvx”(&…N9œ(y…Nœ(~…]œ(Ô®ýN¤(gvt€¬(&…N9´(y…N´(~…]´(……@"´(Ô®=O¼(gv€Ä(&…N9<gvÔÌ(;¬…OÔ(¸Š» Ô(Š !Ô(ÞŠ¼$Ü(&…N9DgvÔä(™®zì($¯ìOì(ê® Dì(™®÷Oì(x&çMì(ž&PLgvÔô($¯ìOô(ê® Dô(r«0qô(™®÷Oô(x&çMô(ž&Pì(gvPì(&…þpü(T¬)à&ö}¬)í&p¼)±åz¼)ˆ±îzÄ)MNœgvÔÌ)ÍŒ5TÌ)ß‹>TÌ)à&ö}Ì)í&p¼)ì±v{Ô)6zNÜ)gvÔ¼)§± {¬)gvêE¤gvÔä)ÍŒ5Tä)ß‹>Tì)ÍŒ5Tì)ß‹>Tô)gvÔä)gv\F¬gvÔü)ÍŒ5Tü)ß‹>Tü)A­?A,†=t*ÍŒ5T*ß‹>T*A­?¼)²´{ *gvÔü)gv+|´gvÔ*ÍŒ5T*ß‹>T*A­?¼)O²|*gvÔ$*ÍŒ|$*A­?,*ÍŒ|,*A­?¤&²Î{¤{²R}$*gvâ|ÜÍŒ|ÜA­?¤:²Î{4*ÍŒ|4*A­?<*ÍŒ|<*A­?4*gvâ|äÍŒ|äA­?D*ÍŒòæ•ÛL*ÍŒòT*&…N9ÍŒòD*gv~L*gv~\*™®8l$ç¯1zd*™®8l*™®8l$#» ¼gvÔt*A­?t*™®8l*gv5~|*A­?|*™®8t*gvÉ~„*™®8l$³=Œ*gvÔ”*[(±Vœ*gvÔ¤*™®8¬*¸Š» ¬*Š !´*6zN¼*å£!¼*€¿!¬*gv4Eägv4E¼*#€á!Ä*6zN5†ë@Ì*5†ë@Ô*5†ë@Ü*5†ë@ä*5†ë@ì*5†ë@Ü5†ë@ô*5†ë@ü*5†ë@+5†ë@ +5†ë@+5†ë@+6zNTgv4EL5†ë@ùð*ý™ÄgvÔÌgvÔ$+gv4E,+5†ë@ Ò†oÌ+¸Š» Ì+Š !Ì+gv4EÔ+¸Š» Ô+ÞŠ¼$Ô+òŠ»-Ô+èŠ5)Ô+Š !Ü+Š !Ü+¸Š» ¹C/Bq‰w»y‰v4ƒqä+gvÛ\&…N9ì+gv4Eì+¸Š» ì+Š !ô+Ò†„‘Ü-Š !á‡#Ygváö>’ä-gv4Eì-gvxä-¸Š» ä-Š !ô-5†ë@ü-gv4Eü-¸Š» ü-Š !ì-Š !ì-¸Š» ì-ÞŠ¼$.5†ë@áz?ö’„?ü’ô-6zN .gvx.n…ø:.6zN .¸Š» .Š ! .ÞŠ¼$^†•¹^†àõ¹@•.gvx™^†àõ™4@•‘^†àõ‘4@•.¸Š» .ÞŠ¼$.Š !$.gv4E츆'B쳆N,.gv4E,.¸Š» ,.Š !4.&…N9<.&…N9D.&…N9‹@L—$.Š !$.¸Š» L.&…N9T.ÞŠ¼$T.Š !T.¸Š» T.èŠ5)\.gv¹˜d.6zll.gv|™ŒgvÔ|.n…':”gvÔ„.µ@Ž›Œ.&…N9”.ÞŠ¼$”.èŠ5)\&…N9œgvÔœ.µ@bœœ.Ñ<lœ.s7?¤.&…N9¬.?á¬.c ´.gv4E¼.gv4EÄ.5†ë@Ì.gvt€Ä.6zN¼.Š !¼.¸Š» Ì.ÞŠ¼$Ì.èŠ5)Ì.Š !Ì.¸Š» ´.Š !´.¸Š» ¬,è†SBÔ.gv4EágvØžÔ.¸Š» Ô.Š !a:=Ü.n…ø:ä.¸†'Bä.³†Nì.gv4Eô.5†ë@ü.¸†'BC’CL—/gv“1 /DŒJ /Ï‹4E/5†ë@áüC«¢áD«¢$/MN,/M]/6zN /PŒJ4/gvm£WŽsä9iWŽsä9 _®ì9gvxUô9&…N9Ü9gvŸü9^a÷ü9taE:&…N9:MÅ $:~a…,: –œD4:gvÙ4:¢aÅ ,:gv9A<:gvÔü Õa;D:gvÛL:gvÙü gvÔD:MNL:MÅ T:•yg\:•yƒd:•yŸt7¹ÐÅ t7Z©Î l:gv)t7gvît:gvb ^a÷ taEl:Z©Î l:¹ÐŒ &…N9 gvÔt:ÍŒü ~a…|:¢aÅ |:&`÷@|:Ú`Š„: –œDŒ:gvî”:gv9AŒ:¹Ð ü öa^ü âaL”:ØbœDœ:gv®ª¤:gv>¬:gvt´:gv¾Ä:×…NÌ:gvGÔ:gvÇÜ:gvä:×…Nì:gv_ä:î…Ûô:gvÔä:gvÛü:gv±Ä:î…ÛÄ:gvÛ;gvy ;gv; –ª¥d9ᲊ ½¯F &`N ñ`»  IdQ "ŠÔ;ß‹š!; –‹  gvÔ, &…N9$;ß‹b$; –‹ $;$s1,;n…':4;ß‹†4;W0‹ 4;]0˜<;9Š» œ9n…':D;ß‹š"D; –‹ D;á²&$D;&`‹#L;&…N9T;ß‹ððT; –œDT;á²&$\;ß‹ó\;½¯ì"d;&…N9l;6zNt;ß‹.ît;g‡s1|;ß‹.î|;Td?|;g‡s1|;¢XU„;î…ÛŒ;z_š"Œ;‚_uŒ;á²&$Œ;&`‹#Œ;½¯”;×…N„7 ÿC„7&`?„7s7?„7LZ» ”7}N”7ᲊœ;ß‹ìDœ; –œD_d€Dð"œD¤;ö‹oá¬;gv´;6‹7¼;&…ê9Ä;gvÔÌ;gvV%Ô;gvÔÜ;ö‹oáä;gv¢ì;¿d?©ayîô;ídóô;òdýô &…N9ü;&…ê9” ¡>”™ ¤ n…': gvD7 >gvŽ7>gvÛ¹Äjš8¹5–…;$>gvvf,>gvvf4>¼ˆâ;l4&…N9<>¼ˆâ;D>¼ˆâ;L>¼ˆâ;T>¼ˆ<\>¼ˆâ;d>¼ˆâ;l>¼ˆâ;t>¼ˆâ;|>¼ˆâ;„>¼ˆóŒ>&…N9”>¼ˆâ;œ>¼ˆâ;¤>¼ˆ*ñ¬>¼ˆâ;´>¼ˆâ;¼>¼ˆâ;Ä>¼ˆâ;Ì>¼ˆâ;Ô>¼ˆâ;Ü>¼ˆV#< úq®<< r³<< ÿq< r< rÔ< 9Š» < gvÔä>}ND gvÔì>FˆNì>g½Nì>ŒNì>7rN9ì>2rÇ<ì>+rzùì>0zùô>FˆNô>g½Nô>ŒNô>2rÇ<ô>0zùô>+rzùL gvÔT gvØ<d gvÔl gvØ<t ò‡~C| gvÔ„ gvØ<Œ ò‡~C” gvÔœ gvØ<¤ ò‡~C¬ gvÔ´ gvØ<¼ ò‡~CÄ gvÔÌ gvØ<Ô ò‡~CÜ gvÔä gvØ<ì ò‡~Cô gvÔü gvØ< ò‡~C gvÔ gvØ< ò‡~C$ gvÔ, gvØ<4 ò‡~C< gvØ<D gvØ<L ò‡~CT gvØ<\ gvØ<d ò‡~Cü>ZnNü>>Wa?ü>FˆNü>g½Nü>ArŠl gvØ<” n…':?ZnN?>Wa??FˆN?g½N ?>WV# ?FˆN ?l] ?g½N ?>rŠ ?ArŠ?wn]?>WV#?FˆN?l]?g½Nt gvØ<| ò‡~C?y V„ gvÔ$?y V,?gvã?4?gvã?n…':äBgviŒìBgvvfôBgviŒ”¶lE—„?tEy€?tE‚#|EMN„EM]ŒEM@"”EM*&œEMY+¤E‚#¬EMN´EM]¼EM@"ÄEM*&ÌEMY+ÔEM™1¤Ey€?ÜE‚#äEMNìEM]ôEM@"üEM*&FMY+ FM™1FMÍ6üß‹Ýh &…N9ß‹*ñß‹Ýhß‹*ñ$Fß‹èh,F&…Û4Fß‹Ýhz¿” >z#>z¿”)>zC>z¿”I>zc>z¿”i>z‰>z©>zÃ>z¿”É>zã>z¿”é>z?z¿” ?z#?z¿”)?zC?z¿”I?zc?z¿”i?zƒ?z¿”‰?z ?ãØ ?ëØ£?z¿”©?zÀ?‚ïÉ?zà?‚é?z@‚ñ!@š›Û@ÊØ@z @z @ãØ @ëØ)@z@@ãØ@@ëØI@z`@ãØ`@ëØi@z€@ãØ€@ëØ‰@z @ãØ @ëØ©@zÀ@ãØÀ@ëØÉ@zà@ãØà@ëØé@zAãØAëØAóÈAãØAëØ Az AãØ AëØ)Az@AãØ@AëØCAzIAz`AãØ`AëØiAz€AãØ€AëØ‰Az AãØ AëØ©AzÀAãØÀAëØÉAzàAãØàAëØéAz Bz)Bz@B3ØIBz`B;ØiBz‰Bz©BzÁBóÈÁBãØÁBëØÉBzáBóÈáBãØáBëØãBâØãBzéBz Cz)CzICziCz€CºAD‰Cz©CzÉCzéCzDz¿” Dz$D²Ø)DzCDz¿”IDziDz‰Dz¡DóÈ¡DãØ¡DëØ©DzÁDóÈÁDãØÁDëØÃDz¿”ÉDzáDóÈáDãØáDëØéDzEóÈEãØEëØ Ez!EóÈ!EãØ!EëØ)EzAEóÈAEãØAEëØIEzaEóÈaEãØaEëØiEzEóÈEãØEëØ‰Ez¡EóÈ¡EãØ¡EëØ£EâØ£Ez©EzÁEóÈÁEãØÁEëØÉEzáEóÈáEãØáEëØéEzFóÈFãØFëØ Fz!FóÈ)FzAFóÈIFzaFóÈiFzFóȉFz¡FóÈ©FzÁFóÈÉFzáFóÈãFz¿”éFzGóÈGz Gz!GóÈ)GzAGóÈIGzaGóÈiGzGóȃGz‰Gz¡GóÈ©GzÁGóÈÉGzáGóÈéGzHóÈ Hz!HóÈ)HzAHóÈIHzaHóÈiHzHóȉHz¡HóÈ©HzÁHóÈÃHz6ÉHzáHóÈãHz¿”éHzIóÈ Iz!IóÈ)IzAIóÈIIzaIóÈiIzIóȃIz‰Iz¡IóÈ©IzÁIóÈÉIzáIóÈéIzJóÈ Jz!JóÈ)Jz@JãØAJóÈIJzaJóÈiJzJóȉJz¡JóÈ©JzÁJóÈÉJzáJóÈéJzKóÈ Kz!KóÈ)KzAKóÈIKzaKóÈcK:ØcKŠÈcKz6iKzKóȃK:؃KŠÈƒKz6‰Kz¡KóÈ£K:Ø£KŠÈ£Kz6©KzÁKóÈÉKzáKóÈéKzLóÈL:ØLŠÈLz6 Lz!LóÈ)LzALóÈILzaLóÈcLziLzLóȃLÒØƒLêØƒLz¸E‰Lz¡LóÈ©LzÁLóÈÃL;(<ÉLzáLóÈãL;w<éLzMóÈM;Ð< Mz!MóÈ)MzAMóÈIMzaMóÈiMzMóȃMz¿”‰Mz¡MóÈ©MzÁMóÈÉMzáMóÈéMzNóÈ Nz!NóÈ)NzANóÈINzaNóÈiNzNóȉNz¡NóÈ©NzÁNóÈÉNzáNóÈéNzOóÈ Oz!OóÈ)OzAOóÈIOzaOóÈiOzOóȉOz¡OóÈ©OzÁOóÈÉOzáOóÈéOzPóÈ Pz!PóÈ)PzAPóÈIPzaPóÈiPzPóȉPz¡PóÈ©PzÁPóÈÉPzáPóÈéPzQóÈ Qz!QóÈ)QzAQóÈIQzaQóÈiQzQóȉQz¡QóÈ©QzÁQóÈÉQzáQóÈéQzRãØRëØRóÈ Rz R‚ï!RóÈ#Rz¿”)Rz@RãØ@RëØARóÈCRz¿”IRz`R‚aRóÈcRz¿”iRz€RãØ€RëØRóȉRz R‚ñ!¡RóÈ©RzÀRãØÀRëØÁRóÈÉRzàRãØàRëØáRóÈéRzSãØSóÈ Sz SãØ!SóÈ)Sz@SãØASóÈISz`SãØaSóÈiSz€SãØSóȉSz SãØ SëØ¡SóÈ©SzÀSãØÀSëØÁSóÈÉSzàSãØàSëØáSóÈéSzTãØTëØTóÈ Tz TãØ TëØ!TóÈ)Tz@TãØ@TëØATóÈITz`TãØ`TëØaTóÈiTz€TãØ€TëØTóȉTz TãØ TëØ¡TóÈ©TzÀTãØÀTëØÁTóÈÉTzàTãØàTëØáTóÈéTzU‚ïUóÈ Uz UãØ UëØ!UóÈ)Uz@U‚AUóÈIUz`UãØ`UëØaUóÈcUz¿”iUz€U‚ñ!UóȉUz UãØ UëØ¡UóÈ£Uz¿”©UzÀUãØÀUëØÁUóÈÉUzàUãØàUëØáUóÈéUzVãØVëØVóÈ Vz VãØ VëØ!VóÈ#Vz¿”)Vz@VãØ@VëØAVóÈIVãØIVëØIVóÈ`VãØ`VëØaVóÈcVz¿”iVãØiVëØiVóÈ€VãØ€VëØVóȉVãØ‰VëØ‰VóÈ VãØ VëØ¡VóÈ©VãØ©VëØ©VóÈÀVãØÀVëØÁVóÈÉVZª ÉVãØÉVëØàVãØàVëØáVóÈéVZ%YéVãØéVëØWãØWëØWóÈ WZ6Y WãØ WëØ WãØ WëØ!WóÈ)WZëä)WãØ)WëØ@WãØ@WëØAWóÈIWZüäIWãØIWëØ`WãØ`WëØaWóÈiWZ!iWãØiWëØ€WãØ€WëØWóȉWZ«$‰WãØ‰WëØ WãØ WëØ¡WóÈ©WZª ©WãØ©WëØÀWãØÀWëØÁWóÈÉWZ%YÉWãØÉWëØàWãØàWëØáWóÈéWZ6YéWãØéWëØXãØXëØXóÈXz¿” XZëä XãØ XëØ XãØ XëØ!XóÈ)XZüä)XãØ)XëØ@XãØ@XëØAXóÈCXz¿”IXZ!IXãØIXëØ`XãØ`XëØaXóÈdX²ØiXZ«$iXãØiXëØ€XãØ€XëØXóȉXz XãØ XëØ¡XóȤX²Ø©XzÀXãØÀXëØÁXóÈÉXzàXãØàXëØáXóÈéXzYãØYëØYóÈ Yz YãØ YëØ!YóÈ$Y²Ø)Yz@YãØ@YëØAYóÈIYz`YãØ`YëØaYóÈiYz€YãØ€YëØYóȃYz¿”„Y²Ø‰Yz¡YóÈ©YzÁYóÈÉYzáYóÈéYzZóÈ Zz!ZóÈ)ZzAZóÈIZzaZóÈiZzZóȉZz¡ZóÈ£Zz¿”©ZzÁZóÈÉZzáZóÈéZz[óÈ [z![óÈ)[zA[óÈI[za[óÈi[z[óȉ[z¡[óÈ©[zÁ[óÈÃ[z¿”É[zá[óÈé[z\óÈ\z¿” \z!\óÈ)\zA\óÈI\za\óÈi\z\óȃ\z¿”‰\ãØ‰\ëØ‰\óÈ¡\óÈ©\ãØ©\ëØ©\óÈÁ\óÈÉ\ãØÉ\ëØÉ\óÈá\óÈé\ãØé\ëØé\óÈ]óÈ ]ãØ ]ëØ ]óÈ!]óÈ)]ãØ)]ëØ)]óÈ@]ãØ@]ëØA]óÈI]ãØI]ëØI]óÈ`]‚ïa]óÈi]Zª i]ãØi]ëØ€]ãØ€]ëØ]óȉ]Z!‰]ãØ‰]ëØ ]‚¡]óÈ©]ZB©]ãØ©]ëØÀ]ãØÀ]ëØÁ]óÈÉ]Z«$É]ãØÉ]ëØà]‚ñ!á]óÈé]ZFé]ãØé]ëØ^ãØ^ëØ^óÈ ^Z F ^ãØ ^ëØ ^‚á%!^óÈ)^Z$))^ãØ)^ëØ@^ãØ@^ëØA^óÈI^Zª I^ãØI^ëØ`^ãØ`^ëØa^óÈi^Z!i^ãØi^ëØ€^ãØ^óȉ^ZB‰^ãØ‰^ëØ ^ãØ¡^óÈ©^Z«$©^ãØ©^ëØÀ^ãØÁ^óÈÉ^ZFÉ^ãØÉ^ëØà^ãØá^óÈé^Z Fé^ãØé^ëØ_ãØ_óÈ _Z$) _ãØ _ëØ _ãØ _ëØ!_óÈ@_ãØ@_ëØA_óÈ`_ãØ`_ëØa_óÈi_z€_ãØ€_ëØ_óÈ _ãØ _ëØ¡_óÈ©_zÀ_ãØÀ_ëØÁ_óÈÉ_zà_ãØà_ëØá_óÈé_z`ãØ`ëØ`óÈ `z `ãØ `ëØ!`óÈ)`z@`ãØ@`ëØA`óÈI`z``ãØ``ëØa`óÈa`ãØa`ëØi`z€`ãØ€`ëØ‰`z `ãØ `ëØ©`zÀ`ãØÀ`ëØÉ`zà`ãØà`ëØã`ÊØã`š›Ûã`zé`zaãØaëØ az aãØ aëØ#aš›Û#az)az@aãØ@aëØCaš›ÛCazIaz`aãØ`aëØiaz€aãØ€aëØ‰az aãØ aëØ©azÀaãØÀaëØÉazãaš›ÛãazéazbãØbëØbz6 bz b‚ï)bz@bãØ@bëØIbz`b‚ibz€bãØ€bëØ‰bz b‚ñ!©bzÀbãØÀbëØÉbzàb‚á%ébzcãØcëØ cz c‚´*)cz@cãØ@cëØIcz`c‚©/icz€cãØ€cëØ‰cz c‚|4¤c²Ø©czÀcãØÀcëØÄc²ØÉczàc‚¸^éczdãØdëØd²Ø dz d‚Å^)dz@dãØ@dëØDd²ØIdz`d‚Û^dd²Øidz€dãØ€dëØ‰dz d‚ð^¤d²Ø©dzÀdãØÀdëØÉdzàd‚ý^ádóÈádãØádëØédzeãØeëØeóÈeãØeëØ ez e‚ _)ez@eãØ@eëØIez`e‚_de²Øiez€eãØ€eëØ‰ez e‚-_¤e²Ø©ezÀeãØÀeëØÁeóÈÁeãØÁeëØÉezàe‚:_áeóÈáeãØáeëØãeÒØãeêØãez$MéezfãØfëØfóÈfãØfëØf²Ø fz f‚G_!fóÈ!fãØ!fëØ)fz@fãØ@fëØAfóÈAfãØAfëØDf²ØIfz`f‚T_afóÈafãØafëØifz€fãØ€fëØfóÈfãØfëØ‰fz f‚j_¡fóÈ¡fãØ¡fëØ©fzÀfãØÀfëØÁfóÈÁfãØÁfëØÉfzàf‚€_áfóÈáfãØáfëØéfzgãØgëØgóÈgãØgëØ gz g‚_!góÈ!gãØ!gëØ)gz@gãØ@gëØAgóÈAgãØAgëØDg²ØIgz`g‚š_igz€gãØ€gëØgóÈgãØgëØ‰gz g‚§_©gzÀgãØÀgëØÄg²ØÉgzàg‚´_égzhãØhëØhóÈ hz h‚Á_!hóÈ)hz@hãØ@hëØAhóÈIhz`h‚Î_ahóÈdh²Øihz€hãØ€hëØhóȉhz h‚Û_¡hóÈ©hzÀhãØÀhëØÁhóÈÉhzàh‚è_áhóÈéhziãØiëØióÈ iz i‚õ_!ióÈ$i²Ø)iz@iãØ@iëØAióÈIiz`i‚`aióÈiiz€iãØ€iëØióÈ„i²Ø‰iz i‚`¡ióÈ©izÀiãØÀiëØÁióÈÉizài‚`áióÈäi²ØéizjãØjëØjóÈ jz j‚)`!jóÈ)jz@jãØ@jëØAjóÈIjz`j‚6`ajóÈijz€jãØ€jëØjóȉjz j‚L`¡jóÈ©jzÀjãØÀjëØÁjóÈÉjzàj‚Y`ájóÈéjzkãØkëØkóÈ kz kãØ këØ!kóÈ)kz@kãØAkóÈIkz`kãØakóÈikz€kãØkóȉkz kãØ¡kóÈ©kzÀkãØÁkóÈÉkzàkãØàkëØákóÈékzlãØlëØlóÈlãØlëØ lz lãØ lëØ!lóÈ)lz@lãØ@lëØIlz`lãØ`lëØil‚Ú8€lãØ€lëØ lãØ lëØ©lzÀlãØÀlëØàlãØàlëØäl²ØmãØmëØ mz mãØ mëØ)mz@mãØ@mëØImz`mãØ`mëØimãØimëØimóÈ€mãØ€mëØmóÈmãØmëØ‰mãØ‰mëØ‰móÈ mãØ mëØ¤m²Ø©mãØ©mëØ©móÈÀmãØÀmëØÉmãØÉmëØÉmóÈàmãØàmëØäm²ØémZª émãØémëØnãØnëØ nZ! nãØ nëØ nãØ nëØ$n²Ø)nZ«$)nãØ)nëØ@nãØ@nëØAnóÈInZª InãØInëØ`nãØ`nëØanóÈdn²ØinZ!inãØinëØ€nãØ€nëØnóÈ„n²Ø‰nZ«$‰nãØ‰nëØ nãØ nëØ¡nóȤn²Ø©nzÀnãØÀnëØÁnóÈÉnzànãØànëØánóÈän²ØénzoãØoëØoóÈ oãØ oëØ!oóÈ$o²Ø@oãØ@oëØAoóÈ`oãØ`oëØaoóÈdo²Øioz€oãØ€oëØoóȉoz oãØ oëØ¡oóÈ©ozÀoãØÀoëØÁoóÈÃoz@9ÉozàoãØàoëØáoóÈéozpãØpëØpóÈ p‚Ú8 pãØ pëØ!póÈ#pz¿”)p‚ç8@pãØ@pëØApóÈCpÊØCpêØCpz¸EIp‚ô8`pãØ`pëØapóÈcpÒØcpêØcpz¸Eip‚Ú8€pãØ€pëØpóȃpz¿”‰pãØ‰pëØ‰póÈ pãØ pëØ¡póÈ©pZª ©pãØ©pëØÀpãØÀpëØÁpóÈÉpZ%YÉpãØÉpëØàpãØàpëØápóÈépãØépëØépóÈqãØqëØqóÈ qZª qãØ qëØ qãØ qëØ!qóÈ)q‚Ú8@qãØ@qëØAqóÈCqzIq‚ç8`qãØ`qëØaqóÈcqÒØcqêØcqz$Miq‚ô8€qãØ€qëØqóÈ qãØ qëØ¡qóÈÀqãØÀqëØÁqóÈÃqzàqãØàqëØáqóÈrãØrëØróÈ rãØ rëØ!róÈ)rz@rãØ@rëØAróÈ`rãØ`rëØaróÈirz€rãØ€rëØróȉrz rãØ rëØ¡róÈ©r‚Ú8ÀrãØÀrëØÁróÈÉr‚ç8àrãØàrëØáróÈér‚ô8sãØsëØsóÈ sãØ sëØ!sóÈ)sz@sãØ@sëØAsóÈCsš›ÛCszIsz`sãØ`sëØasóÈisãØisëØisóÈ€sãØ€sëØsóȉsZª ‰sãØ‰sëØ sãØ sëØ¡sóÈ©sZ%Y©sãØ©sëØÀsãØÀsëØÁsóÈÉsZ6YÉsãØÉsëØàsãØàsëØásóÈésãØésëØésóÈtãØtëØtóÈ tãØ tëØ tóÈ tãØ tëØ!tóÈ)tãØ)tëØ)tóÈ@tãØ@tëØAtóÈItãØItëØItóÈ`tãØ`tëØatóÈitãØitëØitóÈ€tãØ€tëØtóȉtz tãØ tëØ¡tóÈ©tzÀtãØÀtëØÁtóÈÉtzàtãØàtëØátóÈétzuãØuëØuóÈuz uãØ uëØ uóÈ uãØ uëØ!uóÈ#uÒØ#uêØ#uz$M)uãØ)uëØ)uóÈ@uãØ@uëØAuóÈIuãØIuëØIuóÈ`uãØ`uëØauóÈiuãØiuëØiuóÈ€uãØ€uëØuóȉuãØ‰uëØ‰uóÈ uãØ uëØ¡uóȤuJØ©uãØ©uëØ©uóÈÀuãØÀuëØÁuóÈÉuãØÉuëØÉuóÈàuãØàuëØáuóÈäuJØéuãØéuëØéuóÈvãØvëØvóÈ vZª vãØ vëØ vãØ vëØ!vóÈ)vZ!)vãØ)vëØ@vãØ@vëØAvóÈIvZBIvãØIvëØ`vãØ`vëØavóÈivZ«$ivãØivëØ€vãØ€vëØvóȉvZ$)‰vãØ‰vëØ vãØ vëØ¡vóÈ©vZˆ1©vãØ©vëØÀvãØÀvëØÁvóÈÉvZª ÉvãØÉvëØàvãØàvëØávóÈävJØévZ!évãØévëØwãØwëØwóÈ wZB wãØ wëØ wãØ wëØ!wóÈ$wJØ)wZ«$)wãØ)wëØ@wãØ@wëØAwóÈIwZ$)IwãØIwëØawóÈiwZˆ1iwãØiwëØwóȉwãØ‰wëØ‰wóÈ¡wóÈ©wãØ©wëØ©wóÈÁwóÈÉwãØÉwëØÉwóÈáwóÈéwãØéwëØéwóÈxóÈxJØ xãØ xëØ xóÈ!xóÈ)xãØ)xëØ)xóÈAxóÈCxzIxãØIxëØIxóÈaxóÈcxÒØcxêØcxz¸EixãØixëØixóÈxóÈ„xJ؉xãØ‰xëØ‰xóÈ¡xóÈ©xZª ©xãØ©xëØÁxóÈÃxz6ÄxJØÉxZ!ÉxãØÉxëØáxóÈãxÊØãxêØãxz¸EéxZ«$éxãØéxëØyóÈ yZ$) yãØ yëØ!yóÈ$yJØ)yZ^)yãØ)yëØAyóÈIyZª-IyãØIyëØayóÈdyJØiyZ#±iyãØiyëØyóȉyZ¼6‰yãØ‰yëØ¡yóȤyJØ©yZª ©yãØ©yëØÁyóÈÉyZ!ÉyãØÉyëØáyóÈäyJØéyZ«$éyãØéyëØzóÈ zZ$) zãØ zëØ!zóÈ$zJØ)zZ^)zãØ)zëØAzóÈIzZª-IzãØIzëØazóÈdzJØizZ#±izãØizëØzóȉzZ¼6‰zãØ‰zëØ¡zóȤzJØ©zzÁzóÈÉzzázóÈäzJØézz{óÈ {z!{óÈ!{ãØ!{ëØ${JØ){zI{zd{JØi{z¤{JØ©{zÉ{zä{JØé{z |z$|JØc|z¿”d|Jؤ|JØ©|zÉ|zä|JØé|z }z$}JØ)}zI}zd}JØi}z„}J؉}z©}zÃ}zÉ}zã}ÒØã}êØã}z¸Eé}z ~z#~;¬)~zC~;¬I~zc~;­i~zƒ~;á­‰~z£~;>®©~zÉ~zé~zãØcÒØcêØcz¸Ei‚Ú8‰‚ç8£;S¯©‚Ú8Ã;´¯É‚ç8àãØàëØã;J°€‚ï€;¼° €ãØ €ëØ#€;E±)€ãØ)€ëØ)€óÈC€;ª±I€ãØI€ëØI€óÈi€ãØi€ëØi€óȉ€ã؉€ë؉€óÈ©€ãØ©€ëØ©€óÈÉ€ãØÉ€ëØÉ€óÈé€ãØé€ëØé€óÈ Z! ãØ ëØ ãØ#z)Z«$)ãØ)ëØIZ!IãØIëØiZ«$iãØiëØ€ºADƒz£záóÈáãØáëØ ‚ãØ!‚óÈ!‚ãØ!‚ëØA‚óÈA‚ãØA‚ëØI‚ãØI‚ëØI‚óÈi‚ãØi‚ëØi‚óȉ‚ãØ‰‚ëØ‰‚óÈ©‚ãØ©‚ëØ©‚óÈÉ‚ãØÉ‚ëØÉ‚óÈé‚ãØé‚ëØé‚óÈ ƒãØ ƒëØ ƒóÈ)ƒú-+Iƒú;+`ƒ‚ïiƒúH+€ƒãØ€ƒë؉ƒú\+ ƒãØ ƒëØ£ƒâØ£ƒzÀƒãØÀƒëØÃzC„z¿”a„óÈa„ãØa„ëØ£„z¿”Äz¿”ã„z¿”…z¿”!…óÈ!…ãØ!…ëØ#…z¿”C…zá…óÈá…ãØá…ëØA†óÈA†ãØA†ëØ)ˆzIˆziˆz‰ˆz©ˆzɈzéˆz ‰z)‰zC‰š›ÛC‰ÊØC‰zI‰zc‰š›Ûc‰zi‰z‰‰z©‰zɉzã‰ÒØã‰êØã‰z$Mé‰zŠz¿” Šz)ŠzAŠbØIŠz‹š›Û‹ÊØ‹zƒ‹š›Ûƒ‹z‰‹z©‹zÉ‹zã‹ÒØã‹êØã‹z$Mé‹zŒz¿” ŒzIŒziŒzáŒóÈáŒãØáŒëØš›ÛÊØz!óÈ!ãØ!ëØ#š›Û#ÊØ#z@ãØAóÈAãØAëØIb‹[Iz`ãØcš›ÛcÊØczib‹[izƒz‰b‹[‰z£z¿”©b‹[©zÁóÈÁãØÁëØÃz¿”Éb‹[Ézãz¿”ézŽz¿”#Žz¿”@ŽzØAŽóÈAŽãØAŽëØCŽz¿”`ŽzØcŽz¿”ƒŽz¿”ÃŽš›ÛÃŽÊØÃŽzáŽóÈáŽãØáŽëØš›ÛÊØz£ÊØ£š›Û£zƒ‘z¿”’óÈ’ãØ’ëØ!’óÈ!’ãØ!’ëØA’óÈA’ãØA’ëØC’z¿”a’óÈa’ãØa’ëØc’z¿”’óÈ’ãØ’ëØƒ’z¿”¡’óÈ¡’ãØ¡’ëØ£’z¿”£“z¿”Óz¿”ƒ”z¿”¡”óÈ¡”ãØ¡”ëØ£”z¿”Ôz¿”ã”ÊØã”z• Ø•êØ•ÒØ•z6#•z¿”C•z¿”c•z¿”ƒ•ÒØƒ•êØƒ•z¸E¡•óÈ¡•ãØ¡•ëØÁ•óÈÁ•ãØÁ•ëØ–óÈ–ãØ–ëØ–z6#–:Ø#–z6C–:ØC–z6a–óÈa–ãØa–ëØ–óÈ–ãØ–ëØÖz¿”A—óÈA—ãØA—ëØC—z¿”a—óÈa—ãØa—ëØc—z¿”ƒ—z£—ÒØ£—êØ£—z¸Eã—;|˜;Ä#˜; £˜z6Øz6#™:Ø#™z6C™z6£™zÙz¿”ã™:Øã™z6šÒØšêØšz¸ECšBØCšz6cšz¿”ƒšz¿”£šz¿”Úz¿”ãšz¿”›z¿”C›z¿”c›z¿”ƒ›:؃›z6£›:Ø£›z6À›Êa‚Á›óÈÛz¿”à›Ê•‚á›óȜʃœóÈœz¿” œÊ\ƒ!œóÈ#œz@œÊfƒAœóÈAœãØAœëØCœz¿”`œÊyƒcœz€œÊ‰ƒƒœz¿” œÊ»ƒ£œz¿”ÀœÊփÜz¿”àœÊC„ãœz¿”ÊW„ Ê`„#š›Û#z@ʇ„`ʸ„cš›ÛcÊØcz€Êø„óÈãØëØ Ê5…¡óÈ¡ãØ¡ëØÀÊu…ÁóÈÁãØÁëØàÊå…áóÈáãØáëØžÊï…žóÈžãØžëØ žÊC†#žz@žÊX†Cžz`žÊȆažóÈažãØažëØcžz€žÊ冞óÈžãØžëØ žÊa‡£žâØ£žzÀžÊ›‡Ãžz¿”àžÊ臟ʈŸâØŸz ŸÊyˆ@ŸÊ݈AŸóÈAŸãØAŸëØ`ŸÊ!‰€ŸÊЉŸóÈŸãØŸëØ ŸÊΉÀŸÊ@ŠÁŸóÈÁŸãØÁŸëØàŸÊŒŠáŸóÈáŸãØáŸëØãŸz Ê⊠z6  Ê.‹# BØ# z6@ ÊŒC z6` Êc z6€ ÊŽƒ B؃ z6  ÊkŽ£ BØ£ z6ã z¿”¡z¿”C¡z¿”c¡z¿”£¡z¿”áz¿”¢z¿”#¢z¿”c¢z¿”ƒ¢z¿”âz¿”ã¢z¿”#£z¿”C£z¿”ƒ£z¿”££z¿”ã£z¿”¤z¿”C¤z¿”c¤z¿”ƒ¤z¿”£¤z¿”äz¿”ã¤z¿”¥z¿”#¥z¿”C¥z¿”c¥z¿”ƒ¥z¿”£¥z¿”Ã¥z¿”ã¥z¿” ¦zØ@¦zØC¦z6€¦ŠŸ ¦Šû‘à¦ãØ§Š’ §Š­’@§ŠÌ’`§ºAD`§Šò’€§ºAD€§Šÿ’ §Š'“À§Š3“à§Š@“¨ŠM“@¨Šh“`¨Š{“c¨z6€¨ŠŽ“ ¨Š “À¨Š“ਊÚ“á¨óÈá¨ãØá¨ëØ©Š”©z6£©z6Cªz6#«z6ëz6¬óÈ¬ãØ¬ëØ!¬óÈ!¬ãØ!¬ëØc¬z6Á¬óÈÁ¬ãØÁ¬ëØ­z6­óÈ­ãØ­ëØ¡­óÈ¡­ãØ¡­ëØ£­z6à­ºADà­ŠŒ–®ºAD®ŠŒ–!®óÈ!®ãØ!®ëØA®óÈA®ãØA®ëØC®z6Á®óÈÁ®ãØÁ®ëØ஺ADá®óÈá®ãØá®ëدóÈ¯ãØ¯ëØ€¯ºADc°z6à°ãØà°ëرz6£±z6á±óÈá±ãØá±ëØ@²ºADC²z6 ²ºADã²z6³óÈ³ãØ³ëØ!³óÈ!³ãØ!³ëØa³óÈa³ãØa³ë؃³z6À³ºADÁ³óÈÁ³ãØÁ³ëØ´óÈ´ãØ´ëØ!´óÈ!´ãØ!´ëØ#´z6´óÈ´ãØ´ëØ¡´óÈ¡´ãØ¡´ëØôz6µóÈµãØµëØ!µóÈ!µãØ!µëØAµóÈAµãØAµëØaµóÈaµãØaµëØcµz6 µºAD¶z6¡¶óÈ¡¶ãØ¡¶ëØÁ¶óÈÁ¶ãØÁ¶ëØá¶óÈá¶ãØá¶ëØã¶z·ãØ·óÈ·ãØ·ëØ·z#·z@·ãØC·za·óÈa·ãØa·ëØc·z6·óÈ·ãØ·ëØƒ·z¡·óÈ¡·ãØ¡·ëØ£·BØ£·z6Á·óÈÁ·ãØÁ·ëØã·z¿”¸Bظz6C¸z¿”c¸z¿”ƒ¸B؃¸z6£¸z¿”øz¿”ã¸z¿”#¹BØ#¹z6c¹z¿”ƒ¹z¿”£¹z¿”ùz¿”ã¹zºz¿”#ºz¿”Cºz¿”cºz¿”ƒºz¿”£ºz¿”úz¿”ãºz¿”»z¿”#»z¿”C»z¿”c»z¿”ƒ»z¿”£»z¿”ûz¿”ã»z¿”¼z¿”!¼óÈ!¼ãØ!¼ëØ#¼z6A¼óÈA¼ãØA¼ëØC¼z¿”c¼z¿”¼óÈ¼ãØ¼ëØƒ¼z6¡¼óÈ¡¼ãØ¡¼ëØ£¼z6üz6½óÈ½ãØ½ëØ½JØ!½óÈ3½JØA½óÈa½óÈs½JØ¡½óÈ¡½ãØ¡½ëØ£½z6³½JØÓ½JØྺAD¿óÈ¿ãØ¿ëØ¡¿óÈ¡¿ãØ¡¿ëØÁ¿óÈÁ¿ãØÁ¿ëØÀóÈÀãØÀëØÀz6!ÀóÈ!ÀãØ!ÀëØAÀóÈAÀãØAÀëØaÀóÈaÀãØaÀëØÀóÈÀãØÀëØ¡ÀóÈ¡ÀãØ¡ÀëØÁÀóÈÁÀãØÁÀëØáÀóÈáÀãØáÀëØÁóÈÁãØÁëØ!ÁóÈ!ÁãØ!ÁëØAÁóÈAÁãØAÁëØaÁóÈaÁãØaÁëØÁóÈÁãØÁëØ¡ÁóÈ¡ÁãØ¡ÁëØÁÁóÈÁÁãØÁÁëØáÁóÈáÁãØáÁëØÂóÈÂãØÂëØƒÂz6¡ÂóÈ¡ÂãØ¡ÂëØÁÂóÈÁÂãØÁÂëØáÂóÈáÂãØáÂëØÃóÈÃãØÃëØ!ÃóÈ!ÃãØ!ÃëØAÃóÈAÃãØAÃëØaÃóÈaÃãØaÃëØÃóÈÃãØÃëØ¡ÃóÈ¡ÃãØ¡ÃëØÀúADÁÃóÈÁÃãØÁÃëØáÃóÈáÃãØáÃëØÄóÈÄãØÄëØ!ÄóÈ!ÄãØ!ÄëØAÄóÈAÄãØAÄëØàĺADãÄz6źAD!ÅóÈ!ÅãØ!ÅëØAÅóÈAÅãØAÅëØaÅóÈaÅãØaÅëØÅóÈÅãØÅëØ¡ÅóÈ¡ÅãØ¡ÅëØÁÅóÈÁÅãØÁÅëØáÅóÈáÅãØáÅëØÆóÈÆãØÆëØ!ÆóÈ!ÆãØ!ÆëØCÇzcÇz6ƒÇz¿” ÇºAD¡ÇóÈ¡ÇãØ¡ÇëØ£Çz¿”ÁÇóÈÁÇãØÁÇëØÃÇz6àÇãØáÇóÈáÇãØáÇëØãÇz6ÈãØÈz6#ÈzAÈóÈAÈãØAÈëØCÈz6aÈóÈcÈzÈóȃÈz¡ÈóÈ£ÈzÁÈóÈÁÈãØÁÈëØÃÈz!ÉóÈ#Éz¿”AÉóÈaÉóÈcÉz¿”ÉóÈ¡ÉóÈÁÉóÈáÉóÈÊóÈ!ÊóÈ!ÊãØ!ÊëØCÊzáËóÈÌóÈ!ÌóÈAÎóÈAÎãØAÎëØaÎóÈaÎãØaÎëØ ÎºAD¡ÎóÈ¡ÎãØ¡ÎëØÀκÅ¿ÁÎóÈÁÎãØÁÎëØÏóÈÏãØÏëØ!ÏóÈ!ÏãØ!ÏëØ`ÏãØaÏóÈaÏãØaÏëØ€ÏãØÏóÈÏãØÏëØ ÏãØÀÏãØÁÏóÈÁÏãØÁÏëØàÏãØáÏóÈáÏãØáÏëØÐãØ к‹Ð!ÐóÈ!ÐãØ!ÐëØ@к‹ÐAÐóÈAÐãØAÐëØ€ÐºÑÐóÈÐãØÐëØ ÐºÚÑ¡ÐóÈ¡ÐãØ¡ÐëØÀкÚÑàкADáÐóÈáÐãØáÐëØóÐJØѺÅ¿ÑJØÑRØ ѺAD3ÑJØAÑóÈAÑãØAÑëØSÑJØSÑRØ`ѺADsÑJ؀ѺAD“ÑJØ“ÑRØ¡ÑóÈ¡ÑãØ¡ÑëØ³ÑJØÓÑJØÓÑRØóÑJØÒóÈÒãØÒëØÒJØÒRØ3ÒJØ3ÒRØSÒJØaÒóÈaÒãØaÒëØsÒJØÒóÈÒãØÒëØ“ÒJØ“ÒRØÁÒóÈÁÒãØÁÒëØáÒóÈáÒãØáÒëØ!ÓóÈ!ÓãØ!ÓëØAÓóÈAÓãØAÓëØÓóÈÓãØÓëØ¡ÓóÈ¡ÓãØ¡ÓëØáÓóÈáÓãØáÓëØÔóÈÔãØÔëØ!ÔóÈ!ÔãØ!ÔëØAÔóÈAÔãØAÔëØaÕóÈaÕãØaÕëØÕóÈÕãØÕëØ¡ÕóÈ¡ÕãØ¡ÕëØÁÕóÈáÕóÈÖóÈ!ÖóÈ!ÖãØ!ÖëØAÖóÈAÖãØAÖëØaÖóÈaÖãØaÖëØÖóÈÖãØÖëØ ÖãØ ÖëØÀÖãØÀÖëØ!×óÈ!×ãØ!×ëØA×óÈA×ãØA×ëØa×óÈa×ãØa×ëØÁ×óÈÁ×ãØÁ×ëØ!ØóÈ!ØãØ!ØëØAØóÈAØãØAØëØaØóÈaØãØaØëØØóÈØãØØëØ¡ØóÈ¡ØãØ¡ØëØÁØóÈÁØãØÁØëØáØóÈáØãØáØëØ!ÙóÈ!ÙãØ!ÙëØAÙóÈAÙãØAÙëØÙóÈÙãØÙëØ¡ÙóÈ¡ÙãØ¡ÙëØÁÙóÈÁÙãØÁÙëØáÙóÈáÙãØáÙëØÚóÈÚãØÚëØ!ÚóÈ!ÚãØ!ÚëØAÚóÈAÚãØAÚëØaÚóÈaÚãØaÚëØÚóÈÚãØÚëØ¡ÚóÈ¡ÚãØ¡ÚëØÁÚóÈÁÚãØÁÚëØAÛóÈAÛãØAÛëØaÛóÈaÛãØaÛëØÛóÈÛãØÛëØ¡ÛóÈ¡ÛãØ¡ÛëØÁÛóÈÁÛãØÁÛëØÜóÈÜãØÜëØ!ÜóÈ!ÜãØ!ÜëØaÝóÈaÝãØaÝëØÝóÈÝãØÝëØ¡ÝóÈ¡ÝãØ¡ÝëØÁÝóÈÁÝãØÁÝëØáÝóÈáÝãØáÝëØÞóÈÞãØÞëØ ÞãØ ÞëØ!ÞóÈ!ÞãØ!ÞëØ@Þ‚ïAÞóÈAÞãØAÞëØ`ÞãØ`ÞëØaÞóÈaÞãØaÞëØ€Þ‚ ÞãØ ÞëØÀÞ‚ñ!ÁÞóÈÁÞãØÁÞëØàÞãØàÞëØáÞóÈáÞãØáÞëØßãØßëØßóÈßãØßëØ!ßóÈ!ßãØ!ßëØ@ßãØ@ßëØAßóÈAßãØAßëØ`ßãØ`ßëØ€ßãØ€ßëØ ßãØ ßëØ¡ßóÈ¡ßãØ¡ßëØÀßãØÀßëØÁßóÈÁßãØÁßëØàßãØàßëØáßóÈáßãØáßëØàãØàëØàóÈàãØàëØ àãØ àëØ!àóÈ!àãØ!àëØ@àãØ@àëØAàóÈAàãØAàëØ`àãØ`àëØaàóÈaàãØaàëØ€àãØ€àëØ àãØ àëØÀàãØÀàëØààãØààëØáàóÈáàãØáàëØáãØáëØáóÈáãØáëØ áãØ áëØ@áãØ@áëØ`áãØ`áëØ€áãØ€áëØ áãØ áëØááóÈááãØááëØâóÈâãØâëØ!âóÈ!âãØ!âëØAâóÈAâãØAâëØaâóÈaâãØaâëØâóÈâãØâëØ¡âóÈ¡âãØ¡âëØÁâóÈÁâãØÁâëØáâóÈáâãØáâëØãóÈããØãëØ!ãóÈ!ããØ!ãëØAãóÈAããØAãëØaãóÈaããØaãëØaäóÈaäãØaäëØäóÈäãØäëØ¡äóÈ¡äãØ¡äëØÁäóÈÁäãØÁäëØáäóÈáäãØáäëØåóÈåãØåëØ!åóÈ!åãØ!åëØAåóÈAåãØAåëØaåóÈaåãØaåëØåóÈåãØåëØ¡åóÈ¡åãØ¡åëØÁåóÈÁåãØÁåëØáåóÈáåãØáåëØæóÈæãØæëØAæóÈaæóÈæóÈ¡æóÈÁæóÈáæóÈçóÈ!çóÈAçóÈaçóÈçóÈ¡çóÈ¡çãØ¡çëØÁçóÈáçóÈèóÈèãØèëØaéóÈaéãØaéëØ!ìóÈAìóÈaìóÈìóÈ¡ìóÈÁìóÈáìóÈíóÈ!íóÈAíóÈ`íºADaíóÈíóÈ¡íóÈÁíóÈáíóÈîóÈ!îóÈAîóÈaîóÈîóÈ¡îóÈÁîóÈáîóÈïóÈïãØïëØAðóÈaðóÈ`ñºAD ñºAD!òóÈAòóÈ€òºADõãØõëØ õ‚ï@õãØ@õëØ`õ‚€õãØ€õëØ õ‚ñ!ÀõãØÀõëØàõ‚á%öãØöëØ ö‚´*@öãØ@öëØ`öãØ`öëØ€öãØ€öëØ öãØ öëØÀöãØÀöëØàöãØàöëØ÷ãØ÷ëØ ÷ãØ ÷ëØ@÷ãØ@÷ëØ`÷ãØ`÷ëØ€÷ãØ€÷ëØ ÷ãØ ÷ëØÀ÷ãØÀ÷ëØà÷ãØà÷ëØøãØøëØ øãØ øëØ@øãØ@øëØ`øãØ`øëØ€øãØ€øëØ øãØ øëØÀøãØÀøëØàøãØàøëØùãØùëØùóÈùãØùëØ ùãØ ùëØ!ùóÈ!ùãØ!ùëØAùóÈAùãØAùëØaùóÈaùãØaùëØÁúóÈÁúãØÁúëØáúóÈáúãØáúëØûóÈûãØûëØ¡ûóÈ¡ûãØ¡ûëØaüóÈaüãØaüëØüóÈüãØüëØÀüãØÀüëØàüãØàüëØ ýºADaýóÈaýãØaýëØýóÈýãØýëØ ýãØ ýëØaÿóÈaÿãØaÿëØÿóÈÿãØÿëØ¡ÿóÈ¡ÿãØ¡ÿëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØ!óÈ!ãØ!ëØAóÈAãØAëØÁóÈÁãØÁëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØáóÈáãØáëØóÈãØëØóÈãØëØ!šÈd²Ø„²Ø$²ØD²Ø„²Ø¡óÈ¡ãØ¡ëØ! óÈ! ãØ! ëØA óÈA ãØA ëØa óÈa ãØa ëØ óÈ ãØ ëØ¡ óÈ¡ ãØ¡ ëØ óÈ ãØ ëØ` ºADa óÈa ãØa ëØ€ º óÈ ãØ ëØ  º‹Ð¡ óÈ¡ ãØ¡ ëØÀ ºADÁ óÈÁ ãØÁ ëØa šÈ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØóÈãØëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØáóÈáãØáëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØáóÈáãØáëØóÈãØëØ ŠÕ@Š`Š2€ŠaóÈãØëØ Š‘¡óÈ¡ãØ¡ëØÀŠ¿ÁóÈÁãØÁëØÄ²ØàŠÉáóÈáãØáëØŠøóÈãØëØ Š(!óÈ!ãØ!ëØ@ŠW`Ї€Š¸ Šî¡óÈ¡ãØ¡ëØÀŠ(ÁóÈÁãØÁëØàŠbáóÈáãØáëØŠ“óÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºAD€ºAD ºADÀºADÁóÈÁãØÁëØàºADáóÈáãØáëØºADóÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºADaóÈaãØaëØ€ºAD ºADÀºADàºADáóÈáãØáëØºADóÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºADaóÈaãØaëØ€ºADóÈãØëØ ºADÀºADàºAD ºAD óÈ ãØ ëØ ºAD! óÈ! ãØ! ëØ@ ºADA óÈA ãØA ëØ` ºADa óÈa ãØa ëØ€ ºAD óÈ ãØ ëØ  ºAD¡ óÈ¡ ãØ¡ ëØÀ ºADÁ óÈÁ ãØÁ ëØà ºADá óÈá ãØá ëØ!ºAD!óÈ!ãØ!ëØ !ºAD!!óÈ!!ãØ!!ëØA!óÈA!ãØA!ëØ`!ºAD`!Šƒ€!ãØ !ºAD !ŠçÀ!ºADÀ!ŠÁ!óÈÁ!ãØÁ!ëØà!ºADà!Šaá!óÈá!ãØá!ëØ"º‹Ð"Џ"óÈ"ãØ"ëØ "ºAD "ŠÛ!"óÈ!"ãØ!"ëØ@"ºAD@"ŠùA"óÈA"ãØA"ëØ`"Š0 a"óÈa"ãØa"ëØ€"ºAD€"Šl "óÈ"ãØ"ëØ "ºAD "Šò ¡"óÈ¡"ãØ¡"ëØÁ"óÈÁ"ãØÁ"ëØá"óÈá"ãØá"ëØa#óÈa#ãØa#ëØ#óÈ#ãØ#ëØ¡#óÈ¡#ãØ¡#ëØÁ#óÈÁ#ãØÁ#ëØá#óÈá#ãØá#ëØ$óÈ$ãØ$ëØ¡$óÈ¡$ãØ¡$ëØÁ$óÈÁ$ãØÁ$ëØá$óÈá$ãØá$ëØ%óÈ%ãØ%ëØ!%óÈ!%ãØ!%ëØá%óÈá%ãØá%ëØ&óÈ&ãØ&ëØ!&óÈ!&ãØ!&ëØA&óÈA&ãØA&ëØ¡&óÈ¡&ãØ¡&ëØ!'óÈ!'ãØ!'ëØA'óÈA'ãØA'ëØa'óÈa'ãØa'ëØ'óÈ'ãØ'ëØ¡'óÈ¡'ãØ¡'ëØÁ'óÈÁ'ãØÁ'ëØá'óÈá'ãØá'ëØ(óÈ(ãØ(ëØA(óÈA(ãØA(ëØa(óÈa(ãØa(ëØ¡(óÈ¡(ãØ¡(ëØÁ(óÈÁ(ãØÁ(ëØ)óÈ)ãØ)ëØ )ºAD )Šƒ!)óÈ!)ãØ!)ëØ@)ºAD@)Š`)ºAD`)Šaa)óÈa)ãØa)ëØ€)ºAD€)Šç)óÈ)ãØ)ëØ )º‹Ð )Џ¡)óÈ¡)ãØ¡)ëØÀ)ºADÀ)ŠÛÁ)óÈÁ)ãØÁ)ëØà)Š0 *ºAD*Šl *óÈ*ãØ*ëØ *ºAD *Šò !*óÈ!*ãØ!*ëØa*óÈa*ãØa*ëØ*óÈ*ãØ*ëØÁ*óÈÁ*ãØÁ*ëØá*óÈá*ãØá*ëØ!+óÈ!+ãØ!+ëØA+óÈA+ãØA+ëØ+óÈ+ãØ+ëØ¡+óÈ¡+ãØ¡+ëØá+óÈá+ãØá+ëØ,óÈ,ãØ,ëØ!,óÈ!,ãØ!,ëØA,óÈA,ãØA,ëØa,óÈa,ãØa,ëØ,óÈ,ãØ,ëØ ,ºAD¡,óÈ¡,ãØ¡,ëØÀ,ºADÁ,óÈÁ,ãØÁ,ëØ-óÈ-ãØ-ëØ!-óÈ!-ãØ!-ëØa-óÈa-ãØa-ëØ-óÈ-ãØ-ëØÁ-óÈÁ-ãØÁ-ëØá-óÈá-ãØá-ëØ!.óÈ!.ãØ!.ëØA.óÈA.ãØA.ëØ.óÈ.ãØ.ëØ¡.óÈ¡.ãØ¡.ëØá.óÈá.ãØá.ëØ/óÈ/ãØ/ëØA/óÈA/ãØA/ëØa/óÈa/ãØa/ëØ¡/óÈ¡/ãØ¡/ëØÁ/óÈÁ/ãØÁ/ëØà/ºÈ@à/Ї-0ºAD0ŠÇ-0óÈ0ãØ0ëØ!0óÈ!0ãØ!0ëØa0óÈa0ãØa0ëØ0óÈ0ãØ0ëØ¡0óÈ¡0ãØ¡0ëØÁ0óÈÁ0ãØÁ0ëØA4óÈA4ãØA4ëØa4óÈa4ãØa4ëØ4óÈ4ãØ4ëØÁ4óÈÁ4ãØÁ4ëØá4óÈá4ãØá4ëØ!5óÈ!5ãØ!5ëØA5óÈA5ãØA5ëØ`5ºn0`5Š0€5ºAD€5Š05óÈ5ãØ5ëØ 5ºn0 5ŠÇ0¡5óÈ¡5ãØ¡5ëØÀ5ºADà5ºADà5Šë0á5óÈá5ãØá5ëØ6ºAD6Š16óÈ6ãØ6ëØA6óÈA6ãØA6ëØa6óÈa6ãØa6ëØ¡6óÈ¡6ãØ¡6ëØÁ6óÈÁ6ãØÁ6ëØ7óÈ7ãØ7ëØ!7óÈ!7ãØ!7ëØa7óÈa7ãØa7ëØ7óÈ7ãØ7ëØá7ªØ!8b‹[!8óÈA8b‹[A8óÈa8b‹[a8óÈ8b‹[8óÈ¡8b‹[¡8óÈÁ8óÈá8óÈ9óÈ!9óÈA9óÈa9óÈ9óÈ¡9óÈÁ9óÈá9óÈ:óÈ!:óÈA:óÈa:óÈ:óÈ¡:óÈÁ:óÈá:óÈ;óÈ!;óÈA;óÈa;óÈ;óÈ¡;óÈÁ;óÈá;óÈá;ãØá;ëØA=óÈa=óÈa=ãØa=ëØ?º‹Ð€?ãØ ?ãØÀ?ãØà?ãØGº¹9 Gº¹9@GºADÀGºADàGºADHºAD HºAD@HºAD HºADÀHºADàHºADIºAD IãØ IëØ@I‚ï`IãØ`IëØ€I‚ IãØ IëØÀI‚ñ!àIãØàIëØJãØJëØ JãØ JëØ@JãØ@JëØ`JãØ`JëØ€JãØ€JëØ JãØ JëØÀJãØÀJëØàJãØàJëØKãØKëØ KãØ KëØ@KãØ@KëØ`KãØ`KëØ€KãØ€KëØUãØ@UãØVãØ VãØ`t¢Ø`tªØ`tŠÝV€t¢Ø€tªØ€tŠîV t¢Ø tªØ tºAD tŠÛÀt¢ØÀtªØÀtºADÀtŠWàt¢ØàtªØàtº‹ÐàtŠŸu¢ØuªØuŠ'W u¢Ø uªØ uºAD uŠ9W@u¢Ø@uªØ@uŠJW uŠúXÀuŠLYàuŠxYvЬY vŠàY@vŠZ`vŠFZ€vŠkZ vŠZÀvŠÐZàvŠúZwŠ-[ wŠ^[@wŠ‘[`wŠÄ[àwŠÉ\xŠù\ xŠE]@xŠV]`xŠð]€xŠ^ xŠ:^ÀxŠi^€zãØ€zëØ zãØ zëØàzºAD€{Šù` {Š5aÀ{Šnaà{Š’a|Šña |Š)b@|ŠVb`|Š›b€|Šßb |Š6cÀ|Šycà|йc}Šãc }Š d@}ŠºAD>Š¯ß >º‹Ð >Šâ@>ºAD@>Šç`>ºAD`>Šõå€>º‹Ð€>ŠJæ >ŠûýÀ>ºADÀ>ŠÌà>ºADà>ŠkÌ?ºAD?Š’Ë ?ºAD ?Šå…@?ºAD@?ŠØþ`?Š–½€?ŠŒà ?ŠÁßÀ?º‹ÐÀ?Š ¿à?ºADà?Šé @ºAD @Šíà@@ºAD@@ŠËà€@º‹Ð€@Ь @Š{¿À@Š´¿à@Š•¿AŠο AŠÒ½@AºAD@AŠN`AŠ0 €Aº‹Ð€AЏÀAºADÀAбêBºADBŠìê BãØ@BºAD@BŠÙ€BãØ BãØÀBйàBŠÌCºADCŠ) CŠ|@CºAD@CŠü`CºAD`CŠlê€CŠxê CºAD CŠcÀCŠ8ëàCºADàCŠˆDгë DºAD DŠè‡@DŠfë`DºAD`DŠC†€DŠë DºAD DŠX†ÀDºADÀDŠ-àDºADàDŠDEºADEŠ~ Eº‹Ð EŠ ä@Eº‹Ð@EŠþã`EŠ`„€EŠ\ƒ EŠyƒÀIãØÀIëØàIãØàIëØÀKãØÀKëØàKãØàKëØ€LãØ€LëØ LãØ LëØ@MãØ@MëØ`MãØ`MëØNãØNëØ NãØ NëØ€PãØ€PëØ PãØ PëØ@QãØ@QëØ`QãØ`QëØ@SãØ@SëØ`SãØ`SëØTãØTëØ TãØ TëØÀTãØÀTëØàTãØàTëØ Uº‹Ð@Uº‹ÐÀUºAD@VºAD`VºAD€Vº‹Ð@XãØ@XëØ`X‚ï€XãØ€XëØ_ãØ_ëØ _‚ï@_ãØ@_ëØ`_‚€_ãØ€_ëØ _‚ñ!À_ãØÀ_ëØà_ãØà_ëØ`ãØ`ëØ `ãØ `ëØ@`ãØ@`ëØ``ãØ``ëØ€`ãØ€`ëØ `ãØ `ëØÀ`ãØÀ`ëØà`ãØà`ëØaãØaëØ aãØ aëØeºAD eºAD@eºAD`eº‹Ð eºADàeºADfºAD@fºAD`fãØgº‹Ð gºADàhãØàhëØi‚ï iãØ iëØ@i‚`iãØ`iëØ€i‚ñ! iãØ iëØÀiãØÀiëØÀsºAD`uŠW€uŠ5 uŠAÀuŠ»ƒàuº‹ÐàuŠ ¿vº‹ÐvŠ4¿ vºAD vŠC„@vºAD@vŠ¡¾`vºAD`vŠm¾€vºAD€vŠƒ vºAD vŠûÀvŠοàvŠ´¿wŠëÜ wŠøÜ@wŠ2 `wŠ= €wº‹Ð€wŠW wºI wŠŸÀwºADÀwŠDÝàwºIàwе xº¹9xŠõ  xº¹9 xŠ$!@xº‹Ð@xŠ“Ý`xº‹Ð`xŠÒÝ€xºAD€xŠm¾ xºAD xŠkßÀxºADÀxŠƒàxºADàxНßyŠá yŠp"@yºŸ"@yŠ&à€zºAD zºADÀzºAD{ºAD {ºAD`{ºAD€{º‹Ð {ºADÀ{ºIà{ºAD|ºI |º‹Ð@|ºAD`|ºAD€|ºADÀ|ºADà|º‹Ð}ºAD }º‹Ð@}ºAD€}ºAD }º‹Ð ~ºI@~ºAD`~ºI€~º‹Ð ~º‹ÐÀ~ºADà~º‹Ð ºI`º‹Ð€ºAD ºIÀº‹Ð@€ºAD`€ºAD€€ºI €º‹ÐÀ€ãØà€ºI º‹Ð@ºAD`Šw*€Š˜* ºÈ@ Š¹*ÀºÈ@ÀŠÌ*àºÈ@àŠÞ*‚ºÈ@‚Šé* ‚ºÈ@ ‚Š+À‚Šk+à‚Š{+ƒŠ+ ƒŠž+`ƒŠº+€ƒŠÐ+ ƒºADÀƒºADàƒºAD„ºAD „ºAD@„ºAD`„ºAD`„Šë+€„ºAD€„Šë „ºAD „ŠfëÀ„Š,à„ºADà„Š,…Š(, …Š5,@…ªØ@…›wJ,@…Š¥,`…ªØ`…в,€…ŠÍ, …Šä,À…Šô,à…Š -†ºAD@†ºAD`†º¥ž€†º- †ºADÀ†ºÅ¿à†ºn0‡ºAD ‡ºAD@‡b`.@‡ºAD`‡ºAD`‡Š^/€‡ªØ ‡ºADÀ‡ªØÀ‡ºADà‡ºADˆªØˆºAD ˆªØ ˆºAD@ˆªØ`ˆªØ`ˆºAD€ˆªØ€ˆºAD ˆªØ ˆºADÀˆªØÀˆºADàˆªØàˆºAD‰ªØ ‰ºAD@‰Š¬/`‰Š¶/€‰ŠÅ/ ‰ªØ ‰ŠÕÀ‰ªØÀ‰Šà‰ªØà‰ŠaŠªØŠŠ2 ŠªØ ŠŠø@ŠªØ@ŠŠÉ`ŠŠ‘€ŠŠ¿ ŠŠë/ÀŠãØÀŠëØàŠãØàŠëØ‹ãØ‹ëØ ‹ãØ ‹ëØ@‹ªØ@‹ŠW`‹ªØ`‹Š(€‹ªØ€‹Š‡ ‹ªØ ‹Š¸À‹ªØÀ‹Šbà‹ªØà‹Š(ŒªØŒŠî ŒŠ30@ŒªØ@ŒŠ“`ŒºAD`ŒŠg0€ŒºAD€ŒŠx0 ŒÂØ ŒŠ‰0ÀŒŠ¥0àŒÂØàŒŠ¹0ÂØŠÍ0 ŠÙ0@ºAD`Šë0€Š1 Š1ÀŠ1àºADŽº‹Ð ŽŠZ1@ŽŠc1`ŽŠm1€ŽŠw1 ŽºAD ŽŠ‹1ÀŽŠ–1àŽŠ 1Š©1 ŠN@Š´1`Š¿1€ŠÉ1 ŠÒ1ÀŠå1àŠï1Šø1 Š2@Š 2`Š2€Š2 ºADÀºADÀŠB2 ’ãØ ’ëØÀ’ãØÀ’ëØ“ãØ “b 3 “º‹Ð@“ãØ`“b 3`“º‹Ð€“ãØ “b 3 “º‹ÐÀ“ãØà“b 3à“º‹Ð”ãØ ”b 3 ”º‹Ð@”ãØ`”b 3`”º‹Ð€”ãØ ”b 3 ”º‹ÐÀ”ãØà”b 3à”º‹Ð•ãØ •b 3 •º‹Ð@•ãØ`•b 3`•º‹Ð€•ãØ •b 3 •º‹ÐÀ•ãØà•b 3à•º‹Ð–ãØ –b 3 –ºI@–ãØ`–b 3`–º¹9€–ãØ –b 3 –ºADÀ–ãØà–b 3à–ºAD—ãØ —b 3 —ºAD@—ãØ`—b 3`—ºAD€—ãØ —b 3 —ºADÀ—ãØà—b 3à—ºAD˜ãØ ˜b 3 ˜ºAD@˜ãØ`˜b 3`˜ºAD€˜ãØ ˜b 3 ˜ºADÀ˜ãØà˜b 3à˜ºAD™ãØ ™b 3 ™ºAD@™ãØ`™b 3`™ºAD€™ãØ ™b 3 ™ºADÀ™ãØà™b 3à™ºADšãØ šb 3@šº‹Ð`šºI€šº¹9 šºÀšº:àšºŸ"›ºÁ: ›º7;@›º‹Ð ›b 3À›b 3à›b 3œb 3 œb 3 œºAD@œb 3`œb 3€œb 3 œb 3Àœb 3àœb 3b 3 b 3@b 3`b 3€b 3 b 3Àb 3àb 3žb 3 žb 3 žºAD€ŸãØà ºAD¡ºADࡺAD¢ºADÀÛºADàÛªØàÛºADÜªØ ÜªØ ÜºAD@ܪØ@ÜŠÕ`ܪØ`ÜŠ€ÜªØ€ÜŠa ÜªØ ÜŠ“ÀܪØÀÜŠ2àܪØàÜŠøÝªØÝŠÉ ÝªØ ÝŠ‘@ݪØ@ÝŠW`ݪØ`ÝŠ(€ÝªØ€ÝŠ( ÝªØ ÝŠîÀÝŠ{+àÝÂØàÝŠVDÞºADÞŠë+ ÞºAD ÞŠeD@ÞŠÙ0 ÞºADÀÞºADàÞºAD€åºAD åºADÀ庋ÐàåºAD溋РæºAD@æºAD`æºAD€æºAD æºADÀæºADàæºAD çºADÀçºADêãØ êãØ@êãØà뺋Ð캋Р캋Ð@캋Ѐ캋ÐÀ캋Ð`íãØ€íãØ íb 3Àíb 3 îbTN îºAD@îºAD€îãØ îbTN îºADàîãØïbTNïºAD@ïãØ`ïbTN`ïºAD ïãØÀïbTNÀïºADÀ bØSÀ ºADà bØS@ ãØ` ãØ€ ºÅ¿` º‹Ð€ º‹Ð  ºADbØSº‹Ð bØS ºAD@bØS@ºAD`bØS`ºAD€bØS€ºAD bØS ºADÀºADàºAD º‹Ð`º‹Ð€ºAD ºADÀãØàºÚÑÀºIàºI@bØS@ºAD`bØS`ºAD€bØS€º‹Ð ãØ ëØºAD€ºAD ºADÀbØSàbØSàºADbØSºAD bØS ºAD@bØS@ºAD`bØS`ºAD€bØS€ºAD bØS º‹ÐÀbØSÀº‹ÐàbØS຋ÐbØSº‹Ð bØS º‹Ð@bØS@º‹Ð`bØS`º‹Ð€bØS€º‹Ð ãØ ëØ@ãØ@ëØ`ãØ`ëØ€ãØ€ëØ ãØ ëØÀb 3àb 3b 3 b 3@b 3`b 3€b 3 b 3Àb 3Àº¹9àºADb 3 ºAD@º‹Ð`º‹Ð€ºI º¹9ÀºàºIº¹9 º:@ºŸ"`º¹9€º ºÁ:Àº7;@bïZ@ºAD`ºAD€b4[€ºAD€Šz[ ºADÀªØàªØ ãØÀãØàãØãØ ãØ@ãØ`ãØ€ãØ ãØÀãØàãØãØ ãØ !ãØ !ëØ@!ãØ@!ëØ`!ãØ`!ëØ€!ãØ€!ëØ !ãØ !ëØÀ!ãØÀ!ëØà!ãØà!ëØ"ãØ"ëØ "ãØ "ëØ@"ãØ@"ëØ`"ãØ`"ëØ€"ãØ€"ëØ "ãØ "ëØÀ"ãØÀ"ëØà"ãØà"ëØ#ãØ#ëØ #ãØ #ëØ@#ãØ@#ëØ`#ãØ`#ëØ€#ãØ€#ëØ #ãØ #ëØÀ#ãØÀ#ëØà#ãØà#ëØ$ãØ$ëØ $ãØ $ëØ@$ãØ@$ëØ`$ãØ`$ëØ€$ãØ€$ëØ $ãØ $ëØÀ$ãØÀ$ëØà$ãØà$ëØ%ãØ%ëØ %ãØ %ëØ@%ãØ@%ëØ`%ãØ`%ëØ€%ãØ€%ëØ %ãØ %ëØÀ%ãØÀ%ëØà%ãØà%ëØ&ãØ&ëØ &ãØ &ëØ@&ãØ@&ëØ`&ãØ`&ëØ€&ãØ€&ëØ &ãØ &ëØÀ&ãØÀ&ëØà&ãØà&ëØ'ãØ'ëØ 'ãØ 'ëØ@'ãØ@'ëØ`'ãØ`'ëØ€'ãØ€'ëØ 'ãØ 'ëØÀ'ãØÀ'ëØà'ãØà'ëØ(ãØ(ëØ (ãØ (ëØ@(ãØ@(ëØ`(ãØ`(ëØ€(ãØ€(ëØ (ãØ (ëØÀ(ãØÀ(ëØà(ãØà(ëØ)ãØ)ëØ )ãØ )ëØ@)ãØ@)ëØ`)ãØ`)ëØ€)ãØ€)ëØ )ãØ )ëØÀ)ãØÀ)ëØà)ãØà)ëØ*ãØ*ëØ *ãØ *ëØ@*ãØ@*ëØ`*ãØ`*ëØ€*ãØ€*ëØ *ãØ *ëØÀ*ãØÀ*ëØà*ãØà*ëØ+ãØ+ëØ +ãØ +ëØ@+ãØ@+ëØ`+ãØ`+ëØ€+ãØ€+ëØ +ãØ +ëØÀ+ãØÀ+ëØà+ãØà+ëØ,ãØ,ëØ ,ãØ ,ëØ@,ãØ@,ëØ`,ãØ`,ëØ€,ãØ€,ëØ ,ãØ ,ëØÀ,ãØÀ,ëØà,ãØà,ëØ-ãØ-ëØ -ãØ -ëØ@-ãØ@-ëØ`-ãØ`-ëØ€-ãØ€-ëØ -ãØ -ëØÀ-ãØÀ-ëØà-ãØà-ëØ.ãØ.ëØ .ãØ .ëØ@.ãØ@.ëØ`.ãØ`.ëØ€.ãØ€.ëØ .ãØ .ëØÀ.ãØÀ.ëØà.ãØà.ëØ/ãØ/ëØ /ãØ /ëØ@/ãØ@/ëØ`/ãØ`/ëØ€/ãØ€/ëØ /ãØ /ëØÀ/ãØÀ/ëØà/ãØà/ëØ0ãØ0ëØ 0ãØ 0ëØ@0ãØ@0ëØ`0ãØ`0ëØ€0ãØ€0ëØ 0ãØ 0ëØÀ0ãØÀ0ëØà0ãØà0ëØ1ãØ1ëØ 1ãØ 1ëØ@1ãØ@1ëØ`1ãØ`1ëØ€1ãØ€1ëØ 1ãØ 1ëØÀ1ãØÀ1ëØà1ãØà1ëØ2ãØ2ëØ 2ãØ 2ëØ@2ãØ@2ëØ`2ãØ`2ëØ€2ãØ€2ëØ 2ãØ 2ëØÀ2ãØÀ2ëØà2ãØà2ëØ3ãØ3ëØ'2?>INR]k¾ A þ! ""&"3"@"I"Ï"Q#‡#î%ý% &&*&3&Ä&Ó&a'¡'/(á*ò*++&+7+H+Y+`+¾+Å/ß/ò/±4Æ4õ4l99'9Ñ9:A:P:·:;,;B;Þ;…<˜<°<Í<©=K@`@i@w@}@@÷@AAHAtAœA'BpB¤BÑBÞB C,CRSRaR³QuRšR×R'S4S‘SýLÈSöSTTTUUVV V)V.V4V™VÂVW/WvWˆWŽW“W˜W¥WÂWYYü[ \F\K\p\ù[‹\Ù\Þ\í\]f`u`Ç]‹jŸj¬jÁjÎjk^ ]çj@jñjkƒ^hiti€i˜iXjjj¤iÒb°i¼iÈiÔigdàiìiøi(jjfdj4jLjw^klÈn^opYp^p±pÄpòpqpCt„t“t0qt¼tu§v4pz:zCzQzVz”zz½zåzF{R{j{{Üz¡{Ø{ê{ö{| |V|ú|{5}A}F}¹}ö}~~W~•~Ý~Gòûø†‡‡‡<‡t‡Í‡÷‡Áލ¸ÆÐÔØç˜‘’’$’)’K’v’ª“¯“[”h”‰”È”×”•+”z•ˆ•¤•»•ò• š šJšêšþš ››—›œNœáœRŒž¦žOŸd¡¡¡¢0¢ö¢Y¤¬¤±¤æ¥§¹§ ©'©a©~ª–« ®e´©´®´µv·L¸Y¸c¸U¹á¹º$ºPº­ºÊºÔºòº »»ì»{¼–¼%½¾*¾8¾’¾ý¾¿ ¿¿¿¿Z¿¡¿ÀºÀ(Á-Á2Á7ÁVÁnÁzÁ†Á¡ÁµÁ¾ÁÊÁ¨Â…ÃIJÄ#ÅÃÅÛÅêÅ%ÆvƌƩÆãÆ9Ç—ÇäÇôÇýÇÈ!ÈçÈ ÐÇÐùРÑïÑ+ÒdÒ¼ÒÊÖ ×ÐÛ,Ü–Ü2ÝQÝY݊ݽÝèÝ5Þ|ÞÃÞßPßœßÖß™1,à¨à¿àëà#á_á~ááàáJâtâ‰â¢âëâVã)ätäÈäÎäKæ\æÂò÷ò$ó`óÆóGô“ô0õnõxõÛõèõöDölövöËöçö˜÷±÷6ø¬øðø§ù‚üÑý þþ%þKþƒþ¤þ ÿlÿ¶ÿÛÿïÿ0br{«õú#+.?DNS\uÐ%•­¸|©¹ßç=Emuš£ÔÜ 3;ck”œÃÒý 8Bow¾Ø Â*!5!@!q!"" "]")#â#‹#$&$r$©$´$â$% %F%[%d%•%Î%ú%u&''Z'º'É'(u(®()¬)µ)*7*/+H+°+¶+)--¯-ê-.8.}.ï.ù./|//ˆ/»/N031Q1s1í12;2s22É2Ú2ß2é2÷23Y3 44)4.474<4­4‰5Ú5²qNq6N6S6l6¥67‰7Ž7¯7Ð7886è718o8™8Ò8Û8ü8$9ƒ9î9<t=­= =<=X=ñ=¦q0>5qz,®>S>?q,i?¸?@Aq+@‹@@¾@Ø@?p©AXB»BC3C=C DìD#DEdEîz…EEGlG9GöGBH­HQI*JDJ“J©JÑJNKoKKÇK:LDLgLLÇLÞL/MÚM\NçMM‹NÃOuQ—PQ‘QŸQÁPªQäQŸA¯RS&S]SØSÿST]TfT‘TÇTUxUVZWkW¸W¬X'Y6YaYˆY–Y¼YÊYðYþY"Z0ZUZyZ‡Z¬ZºZäZ [[H[m[{[¡[´[Ò[ã[?\h\]f]U_°_·_ì_9`š`â`aaJa~a¡a¸ab;blb®bõbcMc‹cÉcõcd‘deCese›eþe|fÖfdgØg/hYh®hýhLiÓiJj[jqjwjj©j¹jÌjÔkëkll*l9lÀl×løl#m˜m¢m¶mnEnrnznÕn%oQo{o®oÕop)p?p’p qHqbq~qŠqžq­qúq"r@rYrrKsˆsÇstt/t@tVthtutÙt©u÷uv$vævwJwÍwäwôw¥x÷y^Rz§zèzòz÷z„{·{ý{|P|Š|”|™|£|Æ|8Ë|Aï|J}~~&~?~¿~5 _ª~‚Á‚ñ‚Iƒ¬„À„… …….…r…w…É…ö…†C†Q†]†‚†°†¾†ÆÓ†Þ†ó†ƒ‡ç‡9ˆOˆ’ˆåˆ7‰M‰úŠ‹ŒiV‹¨‹?Œˆô^jx€Ô‘)‘c‘y‘•‘§‘Ì‘’ ’J’p’Å’Ý’ “²“ä“ñ“2”7”T”Á”̔۔ޔì”õ”-•‰•½••–b–5—R—‹—û­—˜’˜æ˜9™°™Ûð.œ¸œÁœàœQ -\x”ÊÍZÏ]Ï“ÏÚÏÐ(ÐÐkуÑtÒæÒ ÓyÓÞÓ(Ô„Ô ÕÕ"Õ-ÕVÕ³ÕÈÕ,Ö€Ö‹Ö–ÖÃÖ׋×:ØrبؽØXÙwÙ5ÚˆÚÃÚÛËÛÕÛ Ü²ÜTÝjÝlÞwÞÅÞèÞßÖßößIàZàsà˜à­àØà:áVááÅáÒáãáâ:â~â•â¼â×âã.ãlãvã¸ãÄãä0äRäbäÆä×äååCå‚åÎåþåæ_æ™æ¿æçç1ç_çxç¦çµçÿçèTèƒè¶èÏèHéaéÂé%ëJëoë˜ëÀëì!ì%ìcì–ì¾ìæìí1íXízížíï)ïôïýï?ð›ðßðèð ñÀñkò˜òÐòøòzóÄóãó8ôKôvôµôèôöi÷È÷ø3øbø ù:ùeùnùðúû+ûSûsû‚ûþWþÁþâþñþ8ÿeÿ’ÿ$M^½òÒ Sç'¸Ê‹6pŠ×pƒ«ÀÕÁ? ‚ Š Å Î  h µ ¾   8 … Ž Å  F ¶   E Q ° ð FQp¬¿Þéc–Ó ý”¤©Ößê`3<–Àä;rBŸm ƒ­q “Ð4a²9³ððÙú,x¤Ïãƒ¸Ê Ô _!|"7#T#\#‡#µ#ë#.$^$®$ä$%J%‘%¨%Ã%&M&w&¸&'}'ž'(n(ê(ô()Â)*+*/(0P0q0â2ñ2–3¥3è3÷3:4I4Œ4›4Þ4í405?5‚5‘5Ô5ã5&656^6æ7ô7ÿ78888!8,868A8K8O8Z8^8i8m8x8|8‡8‹8–8¦8¼8í8ÿ819X9Ö9h;™;»;â;7@< A*ñKAóRBCV#óCš!2D~DÁDÚDOE^EÒEbFsF‰FZGõHI I=IJ´MÐMúMNÄN OCNfQ.î¼Q9RþuRYT€T”T˜TœTóTøTUPUTU•U®U÷UûUÿUVbVfV¬V±V÷VKWxWWµWßWXX>XaXŒX¿XúXYKYYåY'ZuZÏZÜZn\\\¡\²\#]û]Ô^å^¾_Ñ_ä_÷_ ``0`·`ËaábÇcÜcñcdd0dEdZde]fºgù32ú »-  ! " # $%&()013!4"5#6$7%9):*;+<,=->.?/A4B5C6D7E8F9G:H;I<KBLCMDNEOFPGQHRISJTKULWSXTYUZV[W\X]Y^Z_[`\a]b^c_egfhgihjikjlkmlnmonpoqprqsrtsuwyx{z|Š€‹‚„Ž…†•‡—ˆœ‰¢Š£‹¥¦Žª«¯‘°’¸“¹—¼š½›¾œ¿ŸÄ Å¢Æ£Ç¤È¦Ì§Ï¨Õ©ØªÛ«á¬ä­æ®ñ°ò±ö³û´ýµþ¶·¸¹º» ½<¾=¿>À?Á@ÂBÃCÄDÅEÆFÇGÈHÉIÊJËKÌLÍMÎNÏOÐPÑQÒSÓTÔUÕVÖW×XØZÙ[Ú\Û]Ü^Ý_Þ`ßaàbácâdãeäfågæhçièkélêoëpìqírîtïvðwñ{ò}õö÷ƒù…ú‡û‰üý“þ›ÿ¥±¿ÏÐÑÒÕÜÝ&ßZ²\¶]»^¼_½`ÂaÃŽÄ—ä™ëšì›îœñòžóŸõ ø¯ù°cFdLe`fchdkfogphqirjsktu/€~ƒ‚„ƒ‡‹‰ŽŒ¨©•˜Ûǟî¤ï¨ñ°ò±ó³ô´õµö¶÷·ø¹ùºú»û¼ýÅþÆÿÇÈÊÌÍÎÏÐÒÔ ÕÚ*ÜKúOû_ý¨ÿ¬½ÀÁ Ã Ä Å ÆÉÊÐøÿ"%(*2,C-H.M/R0Y1^2c3h4m5r6ƒ7ˆ89’:—;œ<¡=¦>«?°@ÏAáSäUåVæWíXYZ'[:\AdBiDjRoñO†ñO†ñO†oz†…zh°zÛ¶zÛ¼zÛiøzÛ{Û…{hª{9À{hÜ{Iû{h|†|†|†&|†6|hH|†_|†ñOhÀ{h"~Û0~†8~†¤~h·~Û%†2†•¥ • !•¥ • !·~Û¾†Ë†Ø†•¥ • !•¦$•¥ • !•¦$·~ÛE€†R€†_€†l€†•¥ • !•¦$•)•¥ • !•¦$•)·~Ûý€† ††$†1†•¥ • !•¦$•)•¥-•¥ • !•¦$•)•¥-·~Û܆é†ö†‚†‚†‚†•¥ • !•¦$•)•¥-•ƒ1•¥ • !•¦$•)•¥-•ƒ1·~Û炆ô‚†ƒ†ƒ†ƒ†(ƒ†5ƒ†•¥ • !•¦$•)•¥-•ƒ1•·6•¥ • !•¦$•)•¥-•ƒ1•·6„h$„Û*„ÛÀ{hÎ…¥ ñO¥ ¬yº@ñO¥ †Ä@%†Ä@·~Ûg†üAm††u††|†¥ ІB•†Ûœ†h©†¥ ®†B•!BˆñCȆΈ¥ WŠE¬Š¥ ²Š !¬Š¥ ²Š !ÌŠFÒŠFØŠÛ¬Š¥ ²Š !¬Š¥ ²Š !ÌŠFÒŠFØŠÛg†æFüŠòFOFm††•üF‹Ûˆ·LÓ‹ùL6zùL -M¬Š¥ ²Š«MÌŠ«MÒŠÛ•¥ ¬Š¥ ²Š«MÌŠ«MÒŠÛ•¥ üŠòFO«Mg†žN‹Ûm††4¥ ;¥ J¥ ˆñCû{hG‘®Q·~Û½•ûT½•òU½•W·~Û­–pW¹–†Ç–†Ó–†•Û•Û•Û•Û·~ÛF—†M—†T—†¬Š†²ŠùLÌŠ†¬Š†²Š™YÌŠ†ÒŠ™YØŠ†š—°Y¬Šh²Š.ZÌŠ™Y¬Š†²ŠùLÌŠ†¬Š†²Š™YÌŠ†ÒŠ™YØŠ†š—°Y¬Šh²Š.ZÌŠ™Yª—Ûµ—Ûâ—hö—àZ ˜[é‘[(˜Û3˜Û>˜ÛJ˜ÛT˜†c˜†s˜h[ñOhû{h‹š†Ô®Q•šõ[·~Û[›†f›†p›†}›†¬Šó\²Šù\•q]¬Šq]²ŠÁ]¬Š®Q²ŠÛ¬Šó\²Šù\•q]¬Šq]²ŠÁ]¬Š®Q²ŠÛ·~Ûö››^ü›†œ›^œ† œ›^)œ†4œ›^Aœ†Pœ›^Vœ†^œ†lœ†}œ†œ†œœ†©œ†½œ†Ïœ†㜆õœ† ††2†E†S†j††І—†§›^¯†¹›^ƆÕ›^á†ï›^ø†ž›^ž†ž†,ž›^6ž†Bž›^Ož†^ž›^tž†Œž›^˜ž†¦ž†°ž†•®Q•8a•8a•®Q¬Š®Q²ŠÛ•¼b•¼b•¼b•¼b•Pd•Pd•Pd•Pd•ìe•_f•_f•®Q•®Q•®Q•®Q¬ŠùL²Š®Q•®Q•®Q•8a•8a•®Q¬Š®Q²ŠÛ•¼b•¼b•¼b•¼b•Pd•Pd•Pd•Pd•ìe•_f•_f•®Q•®Q•®Q•®Q¬ŠùL²Š®Q•®QOpjê¤ù\Ô®Q{¨Á]‹Û¼¨ p·~Û©.p*©Ä@B©Ä@úœpr« px«q~«q„«*qZ©“qï« q·~Û•ãqi+¡s›¬¬s´¯†¼¨ pR±ÒzX±ÛX±Ûœ²ÛwŠ¥ ¬Š¥ wŠ¥ }Š !¬Š¥ ²Š !wŠ¥ }Š !ŽŠ¦$¬Š¥ ²Š !ÌŠ¦$wŠ¥ }Š !ŽŠ¦$”Š)¬Š¥ ²Š !ÌŠ¦$ÒŠ)wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1´·6¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1´·6wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1´·68´æ€¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1´·6>´æ€½E¶·há·h ¸h¸Û¸Û¸h ¸h°¸-ŸhÕ¸†í¸†ÿ¸2C»hý¼`½ˆ=¿¥–j¿«–m¿«–w¿«–{¿«–…¿«–‰¿«–“¿«–š¿«–­¿«–·¿«–É¿«–Ó¿«–æ¿«–ð¿°–ÀÝ–Àõ–À°–.ÀÝ–<Àõ–JÀ —]À>—gÀW—qÀ —„À>—ŽÀW—˜À —«À>—½ÀW—ÏÀ —âÀ>—ôÀW—Ár—Á>—!Á£—)Ár—<Á>—DÁ£—LÁr—_Á>—mÁ£—{Áº—ŽÁù—°Áù—¾Áù—ÍÁù—ÚÁù—çÁù—õÁù—Âù—Âù—Âù—,Âù—3Âÿ—A˜Oº—cÂù—sÂù—ƒÂù—”Âù—£Âù—²Âù—ÂÂù—ÒÂù—ãÂù—òÂù—Ãù— Ãÿ— Ø6ú—JÃù—ZÃù—jÃù—{Ãù—ŠÃù—™Ãù—©Ãù—¹Ãù—ÊÃù—ÙÃù—èÃù—ñÃÿ—ûØĺ—Äù—)Äù—9Äù—JÄù—YÄù—hÄù—xÄù—ˆÄù—™Äù—¨Äù—·Äù—ÀÄÿ—ÒĘäÄ=˜øÄd˜Åy˜ Å=˜ Åd˜3Åy˜FÅ=˜ZÅd˜cÅy˜lÅ=˜€Åd˜’Åy˜¤Å=˜¸Åd˜ÃÅy˜ÎÅ=˜âÅd˜öÅy˜ Æ=˜Æd˜(Æy˜2ÆŠ˜Eƨ˜PÆŠ˜WÆŠ˜`ÆÝ–kÆŠ˜tÆŠ˜}ÆÄ˜ÆŠ˜“ÆØ˜§ÆŠ˜¯Æå˜¾ÆŠ˜ÇÆŠ˜ÐÆ>—ÚÆŠ˜ãÆŠ˜ìÆ>—øÆ>—Ç>—Ç>—.Ç>—BÇ>—`Ç>—sÇ>—ÇÝ–™ÇÝ–¢Ç>—°Ç>—¾Çd˜ËÇŠ˜ÔÇŠ˜ÝÇ>—éÇŠ˜òÇŠ˜ûÇ™ ÈŠ˜ÈŠ˜È/™&ÈŠ˜/ÈŠ˜9È/™GÈŠ˜PÈŠ˜ZÈf™{Èf™˜Èf™ºÈf™ÒÈ‘™ìÈf™ Éf™#É‘™HÉ‘™nɲ™}ɲ™–ɲ™¥É²™¾É²™Õɲ™öɲ™ ʲ™.ʲ™>ÊÖ™Qʲ™_ʲ™mʲ™ƒÊ²™™Ê²™§Ê‘™½Ê‘™ÊÊ‘™àÊ‘™óÊ‘™˲™˲™-˲™<Ë‘™M˲™Z˲™l˲™}˲™‰Ë²™–˲™¨Ëf™µËf™ÇËf™Ý˲™ï˲™ý˲™̲™-Ì‘™;Ì‘™H̲™·~Ûxç†ç†‰ç†¬Šß䲊†ÌŠåäÒŠq]ØŠÁ]•Á]•Á]¬Šß䲊†ÌŠåäÒŠq]ØŠÁ]•Á]•Á]iò‰ò„ò¥–£ò¥–Àò”òËò«–Õò«–ßò«–éò«–óò«–ýò«–ó«–ó«–ó«–%ó«–/ó«–9ó«–Có«–Mó«–Wó«–aó«–kó ò{ó”ò…ó¦òó ò—óªòªóªò°óªòÃóªòËó¶òçóù—óó¥–ýó¥–·~Ûhø†tø†ø†ø†šøãù¡ø†•ú¬Š®Q²Šú¬Š®Q²Š®QÌŠû•û•ú¬Š®Q²Šú¬Š®Q²Š®QÌŠû•ûÿ‘ÞýAúÞýVú¥–cúÞýkúäýú«–‰úf™žúf™ªúf™·úf™Æúf™Ðúf™Üúf™çúf™ûúf™ûf™#ûf™:ûf™Lûf™`ûf™|ûf™—ûf™´ûf™Óûf™íûf™ üf™üf™0üf™Eüf™\üf™nüf™‚üf™“üf™¥üf™¿üf™Ñüf™äüf™ÿüf™ýf™(ýf™Fýf™\ýf™pýf™Œýf™ ýf™´ýf™Ðýf™äýf™íýf™öýf™þf™ þf™þf™%þf™1þf™@þf™Pþf™`þf™oþf™þf™þf™žþf™¯þf™Áþf™Öþf™äþf™õþf™ÿf™ÿf™$ÿf™3ÿf™Bÿf™Oÿf™^ÿf™lÿf™|ÿf™Œÿf™œÿf™²ÿf™Ëÿf™âÿf™ûÿf™f™)f™@f™Uf™lf™‚f™šf™²f™Êf™Ûf™ïf™f™f™0f™Ff™\f™qf™ˆf™Ÿf™¶f™Þf™þf™f™-¥–_â–!†æ!`c#†s#ñ7ž#¬8“ª·8½#½8·~Û?%†0~†D%†•¥ •r<•Ä<•¥ •r<•Ä<1+«–8+«–@+«–J+«–Q+«–X+Ì^9Ð^}+Ö^“+ó^ª+_¾+&_Ñ73€Ö7ÛÛ7?€„q]·~Û¬Šß„²ŠÛ·~Û•4…á99‡ä9-ç5?‡0:ÞýC:ÞýAúÞý`:ÞýJ=Þý1+«–\=Þýp=l=rý=†Ô@šã@†¼A¦òÃA²œÉA²œ·~Û¬ŠÛ²ŠÛÌŠž§·~ÛÖE¨ÞE†èE¨üE†ÇF«–ÎF«–-…«–ØF«–·~ÛG†)G†8G†EG†OG¦«XG†cG†•¬¬Š®Q²Š®Q•ᬕ}­•®Q•¬¬Š®Q²Š®Q•ᬕ}­•®Q·~Û4H†AH†XH†fH†yH†ŠHÚ®”H† H†•7¯•®Q•°¬Šh²Š°¬Š®Q²Š°•ùL•7¯•®Q•°¬Šh²Š°¬Š®Q²Š°•ùL J²œJß²Jß²Jß²#Jß²ELµKL̵MÄ@ÇF«–…M«–-…«–ŒM«–•MÞý«MÞý¿MÞýÐMÞýâMÌ^÷Ì^êM ·øM«–ÿM«–N«–N«–N«–N«–(N«–/N«–8N«–?N«–HN«–ON«–XN«–_N«–hN«–oN«–xN¦òN¦òW¦ò BNÊᲆ BkÛᲆñO¥ üŠï·~Û˜`R·~Û´!1¿a†Æa†Îa†•¥ • •¥ • b»bÌV[ %bÝV[ ¾bÕ·~Ûwc@‚c†c@™c†¥c@®c†êh)+óh)+÷hD+iD+m)+ m)+áq†êq†òq¥ áq†êq†òq¥ áq†êq†òq¥ òq !êq†òq¥ êq†7rÏ?7rÏ?7rÏ?7rÏ?7r¿@7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7ríA7rÏ?7rÏ?7rÚB7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7r®CStL€rL˜rL²r L¿rLÎrLÜr'Lêr0Lør9LsBLsKL"sTL1s]L@sfLOsoL_sxLmsL}sŠLñOÅPyÅP7ráP7ráP7rûPQÔQQÔQQÔQQÔQßyÁSìyÆS÷yÆS zLzL1z¦òBzÌSVzÒSZ¦ò¦ò¥¦òȦòè¦òN¦ò—„Ì^´„Ì^Ë„Ì^ä„Ì^ú„Ì^OˆÿiYˆÌ^nˆÌ^€ˆÌ^‘ˆÌ^ªˆÌ^¼ˆÌ^ÒˆÌ^èˆÌ^‰Ì^‰Ì^0‰Ì^D‰Ì^V‰Ì^m‰Ì^ˆ‰Ì^›‰Ì^°‰Ì^ÉÌ^щÌ^܉Ì^ö‰Ì^ŠÌ^ŠÌ^*ŠÌ^<ŠÌ^LŠÌ^`ŠÌ^wŠÌ^–ŠÌ^»ŠÌ^åŠÌ^òŠÌ^‹Ì^‹Ì^/‹Ì^C‹Ì^U‹Ì^e‹Ì^y‹Ì^Š‹Ì^‹Ì^¯‹Ì^ËÌ^Ï‹Ì^à‹Ì^ñ‹Ì^ŒÌ^ŒÌ^ŒÌ^*ŒÌ^;ŒÌ^LŒÌ^^ŒÌ^lŒÌ^}ŒÌ^’ŒÌ^¥ŒÌ^¶ŒÌ^ÄŒÌ^ÙŒÌ^ìŒÌ^þŒÌ^ Ì^$Ì^4Ì^CÌ^ZÌ^lÌ^‰Ì^ªÌ^ÉÌ^åÌ^ŽÌ^ŽÌ^=ŽÌ^QŽÌ^iŽÌ^}ŽÌ^™ŽÌ^¹ŽÌ^ÕŽÌ^îŽÌ^Ì^Ì^'Ì^9Ì^KÌ^\Ì^tÌ^„Ì^™Ì^ªÌ^ÆÌ^ÝÌ^çÌ^ýÌ^Ì^0Ì^EÌ^_Ì^rÌ^€Ì^‘Ì^®Ì^ÔÌ^èÌ^ûÌ^‘Ì^‘Ì^4‘Ì^F‘Ì^U‘Ì^l‘Ì^}‘Ì^‘‘Ì^¨‘Ì^‘Ì^Ù‘Ì^ó‘Ì^’Ì^’Ì^.’Ì^B’Ì^X’Ì^k’Ì^„’Ì^ ’Ì^´’Ì^Ç’Ì^Ú’Ì^î’Ì^“Ì^“Ì^,“Ì^D“Ì^l“Ì^““Ì^¹“Ì^Å“Ì^õ“Ì^ ”Ì^%”Ì^C”Ì^X”Ì^rs12  ( )*,-.2468:!<#;#>%=%@'?'B)A)D+C+F-E-H/G/K1M3N5P7O7R9Q9[;b=_?aAlCnEpGrIzKuMwOyQ„S†UˆWŠYŒ[Ž]˜_‘a“c•e—g¢i¤k¦m¨oªq¬s®u°w¼y³{µ}·¹»ƒÆ…ȇʉÌ‹ÎÐÒ‘Ô“Ö•Ø—æ™Û›Ýߟá¡ã£å¥ð§ò©ô«ö­ø¯ú±ü³þµ·¹»½¿ Á à ÅÇÉËÍ Ï"Ñ$Ó&Õ(×*Ù,Û.Ý0ß2á4ã6å8ç:é>ë?í@ïDñZóYócõbõg÷jùrûsý€ÿyz|~ ‰ Š ‹Œ’ž®³´¶!·#¸%¹'º)¼+½-¿/À1Á3Â5Ã7È9Ì;Í=Ï?ÐAÛCùEúGûIþKMOQSU W Y [ ]_acegi*k+m,oFqHsIuNw{y‹{Ž}—‘’ƒ”…–‡Ÿ‰¡‹¤¦®‘©“«•­—°™±›²´Ÿµ¡¶£·¥¸§¹©»«¼­½¯¿±À³ÁµÃ·Ä¹Å»Æ½Ç¿ÈÁÊÃËÅÌÇÎÉÏËÐÍÑÏÒÑÓÓÔÕÕ×ÖÙ×ÛØÝÙßÛáÝãàåáçâéãëóíìïîñðóòõú÷ûùýûÿýÿ      Y!#%')+ -"/$1&3(5*7,9.;0=2?4A6C8E:G<I>K@MAOBQCSDUEWFYG[H]I_JaLcMeNgOiPkQmRoSqTsVuXw`yb{d}fhiƒk…m‡o‰q‹suw‘y“{•}—™›ƒ…Ÿ‡¡‰£Š¥Œ§Ž©«’­”¯–±—³™µ›·¹Ÿ»¡½£¿¥Á§Ã©Å«Ç­É¯Ë±Í³ÏµÑ·Ó¸Õº×¼Ù½ÛÅÝóß÷áúãåçééëíïñóõ÷ùûý-ÿ0QS\] o q p €ƒ„…†ˆ‰Š‹!Œ#%')‘+’-“/”1•3–5˜7™9š;›=œ?AžCŸE G¡I£K¤M¥O¦Q§S¨U©WªY«[¬]­_®a°c±e²g³i´kµm¶o·q¸s¹uºw»y¼{½}¿ÀÁƒÂ…ÇĉŋÆÇȑɓʕ˗̙͛ÎÕŸ¡£¥¥§§©©««­­¯¯!± ±#³"³%µ$µ'·&·)¹A»I½¿Á‚ÃńDžɆˇ͈ωъӋՌ×ٖۗݘߙášã›åŸç é¡ë¢í£ï¤ñ¥ó¦õ§÷¨ù©ûªý®ÿ¯°±²³ ´ µ ¶½¾¿ÀÁÂÃÄÅ!Æ#Ç%È'É)Ê+Ë-Ì/Í1Î3Ï5Ð7Ñ9Ò;Ó=Ô?ÕAÖC×EØGÙIÚKÛMÜOÝQÞSßUàWáYâ[ã]ä_åaæcçeègéiêkëmìoíqîsïuðwñyò{ó}ôøùƒú…û‡ü‰ý‹þÿ‘“•—™›Ÿ¡ £ ¥ § © «­¯±³µ·¹»½¿ÁÃÅÇÉËÍ Ï!Ñ"Ó#Õ$×%Ù&Û)Ý*ß+á,ã-å.ç/é0ë1í2ï3ñ4ó5õ6÷7ù8û9ý:ÿ;CDEF G H IJKLMNOPQR!S#T%U'V)W+X-Y/Z1[3\5]7^9_;`=a?bAcCdEeGfIgKhMiOjQkSlUmWnYo[p]q_rascøeógõi÷kûmüoýqþsÿuwy{} ƒ … ‡e‰f‹gmn‘o“p•q—r™s›tuŸv¡w£x¥y§z©{«|­}¯~±³€µ·‚¹ƒ»„½…¿ŽÁÃődzɪˬͮϰѱӲյ׷ٸۺݻ߼á¾ãÀåÂçÃéÅëÆíÇïÉñæóçõë÷íùîûïýñÿòóôõö ÷ ø ùúûüýþÿ!#%')+- / 1 3 5 79;=?ACEGIKMOQSUWY[ ]!_"a#c$e%g&i'k(m)o*q+s,u-w.y/{0}123ƒ4…5‡6‰7‹89:‘;“<•=—>™?›@AŸB¡C£D¥E§F©G«H­I¯J±K³LµM·N¹O»P½Q¿RÁSÃTÅcÇè Éô Ë, Í- Ï4 Ñ7 ÓD ÕP ×K ÙM ÛO ÝR ßT áV ãX åZ ç\ éÑ ëÒ íÓ ïÔ ñÕ ó1 õH ÷^ ù_ ûg ýh ÿ¯ ° ± R ^ \ ] h g | } ~ Š ‹ Œ  ä !æ #ê %õ '÷ ) ++ -- //>1O3P5s7p9q;r=~?zA{C|E}GÐIÑKÒMÓOãQØSÚUÜWÞYß[à]â_åaçcèeêgìiîkðmòoóqõs÷uùw yý{ÿ}ƒ…‡ ‰ ‹‘“•—™›Ÿ ¡!£#¥$§&©6«9­:¯;±<³sµt·—¹š»›½œ¿ÁžÃŸÅ Ç¡É¦Ë§ÍÁÏÂÑÃÓÄÕÅׯÙÇÛÈÝÉßÊáËãÌåÍçÎéÏëÐíÑïÓñÔóNõ‚÷€÷ƒùùäûâûåýãý¶ÿ·ÄÃÿù ú ü þ    !#N%H'I)J+K-L/M1V3W5X7Y9•;–=ò?óAõCþEÿGIKMO QSUWÁYä[ï]ú_ace*g5i@kKmnoyq„sušw¥y°{»}ÆÑ9ƒ:…;‡A‰B‹CDE‘F“G•H—I™J›KLŸM¡N£O¥¥§¦©­«°­³¯Â±é³µ9·a¹n»o½ˆ¿‰ÁÃŽÅǹɺ˻ͼϽÑÙÓàÕá×âÙãÛäÝß á ã å ç éëíïñóõ÷ùûýÿ         ! " # $ % & ' ( )! *# +% ,' -) .+ /- 0/ 11 23 35 47 59 6; 7= 8? 9A :C ;E <G =I >K ?M @O AQ BS CU DW EY F[ G] H_ Ia Jc Ke Lg Mi Nk Om Po Qq Rs Su Tw Uy V{ W} X Y Zƒ [… \‡ ]‰ ^‹ _ ` 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à {Å |Ç }É ~Ë Í €Ï Ñ ‚Ó ƒÕ „× …Ù †Û ‡Ý ˆß ‰á Šã ‹å Œç é Žë í ï ‘ñ ’ó “õ ”÷ •ù –û —ý ˜ÿ /z ±z³€HÓ€D±€B³€LÕ€N×€JÙ€FÛTÓX±V³ˆà7ˆØ9ˆâ;ˆî/ˆæ=ˆÚ?ˆèAˆÎ±ˆÌˆäCˆÞEˆÜGˆìIˆêKˆÐMˆÔOˆÖQˆÒS‘x‘z‘v/‘~‘‘€“‘ˆ±‘†³‘|•‘„—‘‚™°Ð/ìúÓö´Óö²ßö°áö®ãö¬å÷ÒÓùþÓ¦ ±¤ ±¢ ³ž   ¤ ‘¦ “¬ ³® ±¢ •ª —¨ ™!Ê 7! 9!Ì ;!Ð =!Ä ?!Ò A!Ø !Ú ±!È E!Î C!Æ G!Ö I!Ô K!º M!¾ O!À Q!¼ S0§ .© ï8 ï6 ï4ÝñD# óP# ÷d# ùpm úx úv útÝû€ û~ û|Ýü„Óýˆ# 7Œ 7Š 7ˆÝ`^Óà¬Ó²‘°“„Ö•„Ô—ãrß"9";%Ó("ÓP!ÓP!ÕP!×P !ÛP!Ù`Ø!Ó`Ô!Õ`Ö!×`Ð!`Ò!Ù©t% ©r%ªz%ªx%«~%³«€%±¬Œ%±¬Š%³± %±±ž%³²¨%š%²²%Ó²®%Õ²°%ײ¬%Ù²ª%Û¶Ê%Ó¶Æ%Õ¶È%×¶Â%[¶Ä%ÙºÚ%ÓÆ &±Æ"&¯É8&ÓÉ4&ÕÉ6&×É2&ÙÉ0&ÛÊ>&±Ê@&¯Î~&ÓÎz&ÕÎ|&×Îv&ÛÎx&ÙÏŠ&Óφ&Õψ&×Ï„&ÙÏ‚&ÛÒ®&ÓÒª&ÕÒ¬&×Ò¨&ÙÒ¦&ÛÖÌ&ÓÖÈ&ÕÖÊ&×ÖÄ&ÛÖÆ&Ùר&Ó×Ô&Õ×Ö&××Ð&Û×Ò&ÙÚî&ÓÚê&ÕÚì&×Úæ&ÛÚè&ÙÛú&ÓÛö&ÕÛø&×Ûò&ÛÛô&ÙÜ'ÓÜ'ÕÜ'×Ü'ÙÜ'ÛÝ'ÓÝ'ÕÝ'×Ý'ÙÝ 'ÛÞ 'ÓÞ'ÕÞ'×Þ'ÛÞ'Ùâ4'äB' ä@'åH' åF'æN' æL'çT' çR'ö)Óò)Õô)×ð)Ùî)Û>*¿@*± T*£ V*±j*©l*±€*¯‚*±–*µ˜*±¬*»®*±Â*ÁÄ*±Ø*ÇÚ*± î*Í ð*±#+Ó#+±& +Ù&"+±)<+ß)>+±+N+³+P+±-`+³-b+±/r+/t+±»ü-Ó»ö-Õ»ú-×»ø-Ù»ô-ÛÐ/ Ð/Ñ/ Ñ/Ò /e!Ó/g!Ô/i!Õ/k!Ö/m!× /o!Ø$/q!Ù(/s!Ú,/u!Û0/w!Ü4/y!Ý8/{!Þb1">d1"?h1"?j1"@n1"@p1" &0@P\n€Ž¢¶ÆÜò4HT`lx„—ž¦­·ÄÍÚâé÷ÿ $-<Wv˜½Éãû0Oi‡›­ÂÛð&6HXrˆš¥ÄÛñ+`k|“¸Øô"18BKT_mvƒ—¡«ºÄíù"5?KgŽš©µ½ÅÌÛäñ 0Acz ªºÊÕåð  ; I W k t } ‹ š © ³ ¾ É Õ à ï þ   % 6 I X o „ ˜ ¨ ¹ Ç Ö ê ø   % 0 ? I ^ r { ‹ š ® È Ü ï   1 N k ƒ › ¨ µ À Í ß ò ý   ( 7 H X p ¢ ¶ Ï ã ï û 0@[{Ž­ÆÓÛãý (LVeq}‰˜¤®ÆÏØÿ'/8@JZk‰’ «¾×èõ#2Ifz¦¹ÁÉØäù (5?Semx‰’¢¸ÄÚõ  @LYiw‡ž¯¹ÇÙë/7FT]pŠ®Æßòù"-5=LT\fp|„Œ•£¬´ºÃËÑÚâèñùÿ'-6>DMU[dlrz‡–œ¦®´ÀÈÒÚâêòú(19BJR\dlt…–®¼Ûë#*18?FMT[bipw~…Ž›¤­¸ÁÑÚÑü  i!€!—!³!Ï!N#% %;%[%{%›%»%^'~))¼)Û)ú)*B*f*Š*]+.'.J.m..³.Û./+/S/{/ù132m2§2á23B3n3š3Æ3ò34J4/7o7¯7ï7/8o8¯8U99˜9½9Ç9Þ9ó9:d:}::š:];z;;™;¸;ï<='=1=R=z=¦>Í>í>/?~?Ú?C@ã@0BkC÷C(D¤D÷D*ELE­FÏF"GfGpGyG²G‹H8II¤IK³KÓKêK2L¾LÈLAMyMoN‹N±NîN?OROÅOïOJPxP‘QÕQXR–RðR¡SªSëS“T U%UpUƒU†U“U¢U³UÆUVKVPV[VpV‚VÏVW'W9W \"kMkbkkk€kk¨kÄkàkðkQmºn›oïowp»p·qr™sÇsús4tIt\t¥t®t>u„u›uöu*vOv~vŸvÐv3w‡wåwUx]xexÐxy?yËyzzoz|z„zŒz{{-{4{[{!|±|Ú|}\}ƒ}©}±}Þ}ÿ}%~-~@~H~~¹~Á~Õ~5H€P€Z€f€€€ž€À€ï€&Na˜ ‚'‚µ‚É‚„O„ð„m…²…† †N†c†‹†Û†‡‡+‡²‡Å‡ˆDˆšˆ‰e‰Ä‰ЂШŠ$‹z‹„‹Ž‹˜‹Ó‹5Œ?ŒIŒSŒ]Œ}ŒÇŒAKU†KŽUŽ_ŽâŽú‘)‘6‘C‘L‘Z‘l‘ ’3’:’ð“”8”O”q”}”£”·”æ”ô”b•l•’•Εà•;–]–š/›B›P›^›g›p›‡›œ/œ²œ 1ƞꞟɟ ê ò K¡R¡I¢¢Í¢ø¤¥¥-¦7¦C¦ö¦§,©N©Ù«¬R­g®[´¿´É´Ù´ã´é¶„¸¯¸·¸Õ¸õ¸¹5¹L¹)»E»\»y»‘»«»Ý»¥¼¿¼Ô¼â¼Z¾j¾u¾‚¾Š¾)¿;¿E¿L¿Ö¿÷¿ÙÁðÁÂÂÂ8ÂMÂ\ÂoÂ}‹‘§ÃÈÃÐÃêÃÆƾÆÓÆOÇdÇtLjÇ?ÈNÈXÈiÈzȅȓȰÈÈÈÒ¢ÒàÖóÖ ××$×>×^×mׂ׎×Ý(ÝÞ!Þ^ÞfÞ«Þ·ÞÞÞùÞß-ß=ßwßßß»ßÇß÷ß à"à)à[à˜à­àµà×àáàá á'â/â²ãºãäTækérézéƒé©éêkê±ë&î¾ðÊðÛðúðñ ñññ"ñ5ñ?ñYñcñrñ“ññ§ñ±ñ»ñÅñÏñÙñãñíñ÷ñò ò'ò3ò=ò]òiòsò}òÍò×ò€óŸó¹óhô{ô&õöö:öÞöÛø“ùùÈùtü"ý(ý/ý6ý>ýFýOýXýbýlýwýƒýý›ý¨ý¹ýÇý”þèþøþýÿÄþ%,3:AHOV]š±à1IkÅ.±ËøMŒ§ó&.p > w — ·  !K!U!_!g!­!·!Ý!0"?"N"ª"´"¾"Ò"õ"!#h#r#™#¾#Ë#Ô#ý#.$S$Z$j$$¿$Ð$Ú$ %+%<%o%w%×%ß%2&T&Æ&&'.'×'å'ò'e(m(·(¿(í(p)z)’)š)¢)Æ)ß)ç)õ)ý)*%*/*U*ˆ*©*å*8+@+u++œ+Ë+Õ+ð+ ,ƒ,²,Å,Ø,-õ-&.a.Ç.N/W//ô0ü071†1ÿ122+232±2¹2Á233'343<3D3L3×3E4N4]4†4ë4û4 5$5P5X5i5™5­5¼5å5í5$6F6€6Ç6 7'7<7d7y7¡7»7à7û788a8ä8ì8ô8K9Ö9Þ9::#:8:[:ƒ:¼:ó:4;m;v;²;ö;)=E=a=›=Ñ=Ù=á=é=>(>\>>‡>–>ž>Ó>ý>??6?P?Z?‘?™?Ñ?æ?î?@ @#@c@•@Ð@é@ò@ A1ASAsA‹AåAiB~BŽB™B¤BDdD¦D®DêD&E.E6E=ENEàERF¦FÈFG)G1GOGWGŸG­GÎGUHrH|HŽH–HžHI+I[IcIlIxI³IíIøIJ"J‹J³JÈJXKfK©KILWLŒL'MbMjM~M‘M¬MºMÂMÊMÒMìM'NƒNµNØNàNëNOO)OTO`OoO•O¡O­OäOPQP­PÊPÿPQQ3QMQkQ³QÍQ×QARWRzR‚RŠRØR¤S²SºSÐSÝSSTpTyTT½TÕTâTAU[UeU“U¯U¹UßUéUýUV VV.V6V>VRVZVbVjVˆV¡V©V¿VÇVÏV“W£WŒX/YZYYÃY÷Y)Z€Z³Z[A[t[«[4_B_Ñ_Ü_`&`s`„`ddxd×eèe­gÀg·iSj‡j%lmjm­mÂoSppÇqir$s¡s‚tºt‹v/w xuxžzå{î{|G|ÿ|}~/~geƒƒ¬…w†æ†p‡’‡§‡¯‡½‡ЇÞ‡¡ˆ¶ˆĈ׈‰ˉ&Š0ŠZŠdŠ׊ߊ]ŒŒ“ŒµŒÉŒëŒÿŒ'I½ŽjŽ2¤¬»Y‘7’R’d’’’ê’“Ÿ“•!•1–N–X–B—¸—à—­˜b™p™§™dš·›å› œ‹œÌœÖœ$EN‡¶ž—Ÿ ž ý  ¡%¢¢•¢œ¢³¢¼¢e£ˆ£š£¯£„¤Ф4¥¿¥ì¥ô¥º§Û§1¨u¨Ѝ¯¨̨ú¨©D©L©T©h©r©£©ª©ªªlªtª|ª„ªŒª´ª¼ª«%«-«5«?«O«t«h²l²´m´v´kµêµ¶x¶жض·+·X·a·Þ·æ·ù·¸Ö¸ê¸ñ¸ø¸U¹˹м¬À´À÷ÀVÁ0ÂÅÂéÃñÃBÄ_ÄĉğÅ%LJÇ;ÈHÈvÉÊ6Ê>ÊFÊ]ʂʊʗʟÊèÊË9Ë5ÌéÌÍX͎͘ÍÑÍ&Î Ï)ÏIÏSÏ­ÏÌÐñÐùÒ8ÕBÕLÕ¾Õ¡Ö«ÖµÖû׳Ø#ÙhÙÞÙ,ÚÓÚâÚ1ÛXÛ|Û§Û±ÛüÛJ܄܎ܘÜÝÞóÞÍß`àhàžà¢àcá×á-âŠâÊâ#ã–ã!äÏäå8å ææTæ¥æ±æ%çlçÃèUé©é*ìNìwì¡ìÈìúìíAíaí”íÃíÍíØíÜíòíüíîî#î8î@îìðôðñîø¢ùëùóù#ú~úúÈú{û¸ûþûhü“ü¶üòü$ý^ý“ýšýáýŸþêþ½ÿçÿã,\œ›ô nv-[ƒÄÚ?“› <Nà 6@x„‹¦½çñ + 4 ] l t • Ÿ © ½ Þ  % - 5 = O “  ­ ú 0 > [ œ ¤ ¸ é  K U _ ‹ ð ø - 7 ] g ~ ¢ » È æ ÿ  fnv~®%aµõýOpåQYz° Jem€ŠœÀö ;CTf}…•ÆÐØïVemu}ÉÑDVjpŒ¨!Z˜Þæù4j²Þ =¿÷JW¡©oý1Xs} ¬¸ÂÑð Mck—ÇïúCKVh{šæ H ¢!Þ!2"Z"Ò"Ü" ##&#/#k#$R$%¶%j'Ž'(µ):*O*ƒ*+!+Þ-.F0*1@122:2b2n2x22™2Á2o3v3Á3È344e4l4·4¾4 55[5b5­5´5ÿ56Q6X6~6…6£6«6ð627:7„7Ì7Ó7;¯;Ú;í;õ;ý;<!<)<1<9<A<I<Q<Z<b<j<t<|<„<Œ<”<œ<¤<¿<Î<à<s?{?ƒ??¹?Ã?Û?ð?ø?@@@@ @/@w@@‡@@—@Ÿ@§@¯@·@Ò@ð@AAAkAuA}A…AA•AA¥A­AµA½AÅAÍAÕAÝAåAøA BBB$B,B4BCFCNCVC^CfCnCvC~C†CŽC–CžC¦CÁCßCéCDLD–DÎDE EErE…E©E#F1F?F¤F¹FáFûF(GHGH‰H™H©H_IvI¢I¾IïIJFJ–K¨KºKÃLËL\MsM{M+N3N;NÖNçNóNÿNAOOO]OkOyO‡O•O£O±O½OÉOÕOáOïOûOPPP+P7PCPOP[PÏPæPóP QQ-Q;QCQ^Q´QçQõQRRR-RUR_RkRRR—R£R³R¿RÉRÕRßRëRõRSSS'S3S=SISSS_SiSuSS‹S•S¡S«S·SVV V VVÒWXÆYÔZÃ\Ó\ã\ó\]]4`F`X`j`|`Ž` `^drd†dšd®dÂdÖdêd·gñhùhii(iKiYi€iiiÈiÚiéi'j€ã'v9 + y y+ h2 E2 º + a)+ y+ 0y y i+X+ !9X+ ;yX+ Sy+ #+ O+ Ì+ ï+ + Yy+ + +21314151618797:7;7<7=7>7@?A?B?C?D?E?F?G?H?JIKILIMINIOIPIQIRISITIVUWUXUYUZU[U\U]U^U_U`UaUbUdcecfcgchcicjckclcmcncocpcqcrcyx{zƒ‚„‚…‚†‚‡‚Œ‹‹Ž‹‹‹œžœŸœ œ¡œ¢œ£œ¥¤¦¤§¤¨¤©¤ª¤«¤²±³±´±µ±¶±·±¸±¹±º±¼»½»¾»¿»À»Á»Â»Ã»Ä»Å»Æ»Ç»È»É»Ê»Ë»Ì»Í»Î»Ï»Ð»Ñ»Ò»Ó»Ô»Õ»Ö»×»Ø»Ù»Ú»Û»Ü»Ý»Þ»ß»à»á»â»ã»ä»å»æ»ç»è» !'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&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&[Z\Z]Z^Z_Z`ZaZb&c&d&e&f&g&h&i&j&k&nmompmqmrmsmtmumvmwmxmymzm{m|m}m~mm€mm‚mƒm„m…m†m‡mˆm‰mŠm‹mŒmmŽŽ‘Ž’Ž“Ž”Ž•Ž–Ž—Ž˜—™—š—›—œ——ž—Ÿ— —¡Ž¢Ž£Ž¤Ž¥Ž¦Ž§Ž¨Ž©ŽªŽ«Ž¬Ž°¯±¯²¯³¯´¯µ¯¶¯·¯¸¯¹¯º¯»¯¼¯½¯¾¯¿¯À¯Á¯Â¯Ã¯Ä¯Å¯Æ¯Ç¯È¯É¯Ê¯Ë¯Ì¯Í¯Î¯Ï¯Ð¯Ñ¯Ò¯Ó¯Ô¯Õ¯Ö¯×¯Ø¯Ù¯Ú¯Û¯Ü¯Ý¯Þ¯ß¯à¯á¯â¯ã¯ä¯å¯æ¯ç¯è¯é¯ê¯ïîðîñîòîóîôîõîöî÷îøîùîúîûîüîýîþîÿî                 !"#$%&'()*+,.-/-0-1-2-3-4-5-6-7-98:8;8=<><?<@<A<B<C<D<E<F<G<H<I<J<K<MLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLdcedfdgdhdidjdkdlcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~cc€cc‚cƒc„c…c†c‡cˆc‰cŠc‹cŒccŽcc‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŠŒŠŠŽŽ’‘“‘”‘•‘–‘—‘˜‘™‘›šœššžšŸš š¡š¢š£š¤š¥š¦š§š©¨ª¨«¨¬¨­¨®¨¯¨°¨±¨²¨³¨´¨µ¨¶¨·¨¸¨¹¨º¨»¨¼¨½¨¾¨¿¨À¨ÃÂÄÂÅÂÆÂÇÂÈÇÉÂÊÂËÂÌÂÍÂÎÂÏÂÐÂÑÂÒÂÓÂÔÂÕÂÖÂ×ÂØÂÙÂÚÂÛÂÜÂÝÂÞÂßÂàÂáÂâÂãÂäÂåÂæÂçÂèÂéÂêÂëÂìÂíÂïîðïñïòïóïôïõïöï÷ïøïùïúïûîüûýûþûÿûûûûûûûûûû î     î             "!#!$!%!&!'!(!)!+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*FEGEHEIELKMKNKOKPKQKRKTSUSVSWSYXZX[X]\^\_\`\bacadaeafagalkmlnlolplqlrlsltlyxzx{x~}}€}}‚}ƒ}„}…}†}‡}ˆ}‰}Š}‹}Œ}}Ž}}}‘}’}“}”}•}–}—}˜}™}š}›}œ}}ž}Ÿ} }¡}¢}£}¤}¥}¦}¨§©§ª§«§¬§­§®§¯§°§±§²§³§´§µ§¶§·§¸§¹§º§»§½¼¾½¿½À½Á½Â½Ã½Ä½Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼ÎÍÏÍÐÍÑÐÒÍÓÍÔÍÕÍÖÍ×ÍØÍÙÍÚÍÛÍÜÍÝÍÞÍàßâáäãåãæãçãìëíëîëïëóòöõ÷õùøúøûøüøýøþøÿøÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ(ÿ)ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ1ÿ2ÿ3ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿ:ÿ;ÿ<ÿ=ÿ>ÿ?ÿ@ÿ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ÿ[ÿ\ÿ]ÿ^ÿ_ÿ`ÿ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ÿ{ÿ|ÿ}ÿ~ÿÿ€ÿÿ‚ÿƒÿ„ÿ…ÿ†ÿ‡ÿˆÿ‰ÿŠÿ‹ÿŒÿÿŽÿÿÿ‘ÿ’ÿ“ÿ”ÿ•ÿ–ÿ—ÿ˜ÿ™ÿšÿ›ÿœÿÿžÿŸÿ ÿ¡ÿ¢ÿ£ÿ¤ÿ¥ÿ¦ÿ§ÿ¨ÿ©ÿªÿ«ÿ¬ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ²ÿ³ÿ´ÿµÿ¶ÿ·ø¸ø¹ø»º½¼¾¼¿¼À¼Á¼Â¼Ã¼Ä¼Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼Í¼Î¼ÐÏÑÏÒÏÓÏÔÏÕÏÖÏ×ÏØÏÙÏÚÏÛÏÜÏÝÏÞÏßÏàÏáÏâÏãÏäÏåÏæÏçÏèÏéÏêÏëÏìÏíÏîÏïÏðÏñÏòÏóÏôÏõÏöÏ÷ÏøÏùÏúÏûÏüÏýÏþÏÿÏÏÏÏÏÏÏÏÏÏ Ï Ï Ï Ï ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ Ï!Ï"Ï#Ï$Ï%Ï&Ï'Ï(Ï)Ï*Ï+Ï,Ï-Ï.Ï/Ï0Ï1Ï2Ï3Ï4Ï5Ï6Ï7Ï8Ï9Ï:Ï;:<:=:>:?:@:AÏBACÏDÏHGIGJGKGLGMGNGOGPGQGbb’dd’ff’hh’jj’ll’nn’nB€pp’pB€rr’rB€tt’tB€vv’vB€xx’xB€zz’zB€||’|B€~~’~B€~ú€€€’€B€€ú€‚‚’‚B€‚ú€„„’„B€„ú€††’†B€†ú€ˆˆ’ˆB€ˆú€ŠŠ’ŠB€Šú€ŒŒ’ŒB€Œú€ŽŽ’ŽB€Žú€’B€ú€’’’’B€’ú€’Ù””’”B€”ú€”Ù––’–B€–ú€–Ù˜˜’˜B€˜ú€˜Ùšš’šB€šú€šÙœœ’œB€œú€œÙžž’žB€žú€žÙ  ’ B€ ú€ Ù¢¢’¢B€¢ú€¢Ù¤¤’¤B€¤ú€¤Ù¦¦’¦B€¦ú€¦Ù¨¨’¨B€¨ú€¨Ùªª’ªB€ªú€ªÙªä‚¬¬’¬B€¬ú€¬Ù¬ä‚®®’®B€®ú€®Ù®ä‚°°’°B€°ú€°Ù°ä‚²²’²B€²ú€²Ù²ä‚´´’´B€´ú€´Ù´ä‚¶¶’¶B€¶ú€¶Ù¶ä‚¸¸’¸B€¸ú€¸Ù¸ä‚ºº’ºB€ºú€ºÙºä‚¼¼’¼B€¼ú€¼Ù¼ä‚¾¾’¾B€¾ú€¾Ù¾ä‚ÀÀ’ÀB€Àú€ÀÙÀä‚ÂÂ’ÂB€Âú€ÂÙÂä‚ÄÄ’ÄB€Äú€ÄÙÄ䂯Æ’ÆB€Æú€ÆÙÆä‚Æ„ÈÈ’ÈB€Èú€ÈÙÈä‚È„ÊÊ’ÊB€Êú€ÊÙÊä‚Ê„ÌÌ’ÌB€Ìú€ÌÙÌä‚Ì„ÎÎ’ÎB€Îú€ÎÙÎä‚΄ÐÐ’ÐB€Ðú€ÐÙÐä‚ЄÒÒ’ÒB€Òú€ÒÙÒä‚Ò„ÔÔ’ÔB€Ôú€ÔÙÔä‚Ô„ÖÖ’ÖB€Öú€ÖÙÖä‚Ö„ØØ’ØB€Øú€ØÙØä‚Ø„ÚÚ’ÚB€Úú€ÚÙÚä‚Ú„ÜÜ’ÜB€Üú€ÜÙÜä‚Ü„ÞÞ’ÞB€Þú€ÞÙÞä‚Þ„àà’àB€àú€àÙàä‚à„ââ’âB€âú€âÙâä‚â„ää’äB€äú€äÙää‚ä„ê$…êš…î$…ð$…ò$…ô$…ö$…ø$…úkˆükˆüuˆþ$…$…$… Š¥Š Š¥Š Š¥Š  Š ¥Š  Š ¥Š Š¥Š Š¥Š Š¥Š$…$…$…$…$… $…"$…$$…**’.kˆ0uˆ2kˆ2uˆ4kˆ4uˆ6$…\kš\tš\{š\š…^kš^tš^{š^š…^„šÔ$…Ö$…â$…ä$…è$…ì$…ð•²òƒ²ôöö’øø’øB€úú’úB€úú€üü’üB€üú€üÙþþ’þB€þú€þÙþä‚’B€ú€Ùä‚„’B€ú€Ùä‚„_´‚´$…$…´™·£·­·8 Š: Š< Š> Š>¥Š@ Š@¥ŠB ŠB¥ŠTHˆVHˆ`Hˆb*ŒdHˆd*Œd–f–f –fß‹hHˆh*Œj–j–j –jß‹j¹ÐlHˆl*Œn–n–n –pHˆp*Œp–r–r –rß‹r¹Ðr¸Ôr$v –xHˆx*Œz–z–ŠHˆ$…šHˆœHˆŸƒ…¡ƒ…¡Š…£ƒ…£Š…£‘…¥ƒ…¥Š…¥‘…¥˜…§$…©$…©š…««’«š…­­’­B€­š…¯¯’¯B€¯ú€¯š…±±’±B€±ú€±Ù±š…Ü$…Üš…Ü‘´Þ$…à$…â$…ä$…æ$…è$…ê$…ꥊì$…쥊î$…ð$…ð¥Šô$…ô Šö$…ö Šø$…ø Šú$…ú Šü$…ü Šþ$…þ Š$… Š$… Š$… Š$… Š$…¥Š +·  Š 2·  Š+·2·š…+· Š2· Š+·2·š…+· Š2· Š+·2·š… Hˆ *Œ'Hˆ£Hˆ«Hˆ­Œ±*Œ³*ŒÞ$…à$…àš…âš…â$…ä$…äš…æš…æ$…è$…ê$…ì$…ìš…îš…î$…ð$…ò$…ô$…ö$…ú$…ü$…ü„üþ$…þþ„$…š…$…$…$…š… $… š… $…$…$…$…„–Hˆ*ŒHˆ*ŒHˆ*ŒHˆ*ŒHˆ*Œ Hˆ *Œ"Hˆ"*Œ$Hˆ$*Œ9HˆAš…n$…r$…t$…v$…zHˆ|Hˆ~Hˆ†$…ŽHˆHˆ’Hˆ”Hˆ–Hˆ¦Hˆ¨Hˆ²Hˆ´Hˆº$…¼$…¾$…À$…Â$…Ä$…È$…Ê$…Ì$…Î$…Ð$…Ò$…Ô$…Ö$…ÚHˆÜHˆÞHˆàHˆâHˆäHˆæHˆæ*ŒèHˆê*ŒêHˆî*Œð*ŒðHˆôHˆöHˆúHˆüHˆþHˆÿHˆÿ*ŒHˆHˆ*Œ–HˆHˆ*Œ––HˆHˆ*Œ–– –HˆHˆ*Œ–– –ß‹HˆHˆ$…HˆHˆHˆHˆ(Hˆ*Hˆ,Hˆ.Hˆ0$…2$…4$…6$…8$…:$…@$…B$…D$…F$…H$…J$…L$…l$…n$…p$…r$…t$…v$…x$…z$…|$…~$…€$…„$…†$…ˆ$…Š÷®Œ÷®Œý®Ž÷®Žý®Ž¯¯Hˆ$…’$…”$…–$…˜*¯˜$…š*¯š$…ž$…ž*¯ $… *¯¢*¯¢$…¤$…¤*¯¦$…¦*¯¨$…¬$…®$…°$…²$…´$…Æ$…È$…Ê$…̃²Ð$…Ò$…Òƒ²Ô$…Ôƒ²Ö$…Ø$…؃²Ú$…Úƒ²Ü$…Þ$…Þƒ²à$…àƒ²â$…ä$…䃲惲胲ꃲ샲ðƒ²òƒ²öƒ²øƒ²ú•²ü•²þ•²•²•²•²•²•² •² •²PHˆP*ŒHˆ*Œ Hˆ *Œ:š…<š…@Hˆ@*ŒHš…~–~*Œ~–€*Œ€–€–’*Œ˜–š–œ–ž– –¢–¤*Œ¤–¸–º–¼–¾–Ê –Ì –Î –ЖР–Ñ$…Ò–Ý$…ã$…4tšC$…DkˆE$…G$…I$…Iš…JkˆJuˆK$…Kš…LkˆLuˆN$…O$…P$…Q$…R$…S$…U$…_$…e$…g$…k$…m$…o$…q$…{$…}$…$…$…ƒ÷®ƒ$……÷®…ý®…$…‡÷®‡ý®‡¯‡$…‰¯‰$…‹*¯‹$…$…’“$…˜Hˆ™$…šHˆ›$…œHˆž$… Hˆ¢Hˆ¤Hˆ¨$…¨Hˆª$…ªš…¬$…®$…² Š²$…´ Š´$…¶ Š¶$…ºHˆº*Œ¼Hˆ¼*Œ½Hˆ¾ Š¾¥Š¿HˆÀHˆÀ*ŒÁHˆÄ ŠÄ¥ŠÆ ŠÆ¥ŠÈ ŠÈ¥ŠÊ¥ŠÊ ŠË$…Ì ŠÌ¥ŠÍ$…ΠŠÎ¥ŠÚ$…Úš…Ü$…Üš…Þ$…Þš…à$…àš…â$…ä$…æ$…è$…핲ñ•²ó•²ù$…û$…ü$…þ*ŒþHˆ $… $… *Œ Hˆ – Hˆ *Œ $… $… š… $… š…  ’ š… $… š…  ’  ’ B€ $… $… *Œ Hˆ $… $… $…" $…$ $…& $…( tš( $…* $…, $…. $…0 $…2 $…2  Š4 $…4  Š6 $…6  Š8 $…8  Š: $…< $…<  Š> $…>  Š@ $…B $…B  ŠD  ŠF  ŠF $…H $…J $…L $…P $…R $…T $…V š…X $…Z *ŒZ Hˆ\ $…\ š…^ $…b $…d $…d š…f $…h š…h $…h g^j $…j š…l $…n $…p $…r uˆt kˆt uˆv kˆv uˆz $…| $…~ $…€ $…‚ $…„ $…† $…ˆ $…Š $…Œ $…Ž $… $…’ $…” $…– $…˜ $…œ $…ž $…¤ $…¦ *Œ¦ Hˆ¨ *Œ¨ Hˆª –ª Hˆª *Œ¬ š…¬ $…® $…¯ $…¯ ´¯ š…¯ ‘´° *Œ° Hˆ± $…± ´² š…³ $…³ ´´ š…µ $…µ ´¶ š…¶ Hˆ· $…¸ $…¹ $…¹ ´º $…» $…¼ $…½ $…½ ´¿ $…¿ ´¿ š…À $…Á $…Á ´Ã $…à ´Ä $…Å $…Å ´Ç $…Ç ´È $…É $…É ´Ê $…Ë $…Ë ´Ì $…Í $…Í ´Î $…Ï $…Ï ´Ñ $…Ñ ´Ó $…Ó ´Õ $…Õ ´× $…× ´Ø š…Ø $…Ù $…Ù ´Ú š…Ú $…Û $…Û ´Ü $…Ý $…Ý ´Þ $…ß $…ß ´á $…á ´ã $…ã ´ã ¥Šå $…å ´å ¥Šç $…ç ´ç ¥Šé $…é ´é ¥Šë $…ë ´ë ¥Šì $…í $…í ´í ¥Šî $…ï $…ï ´ï ¥Šñ $…ñ ´ñ ¥Šò ò B€ò ’ó $…ó ´ó  Šô B€ô ô ’õ $…õ ´õ  Šö $…÷ $…÷ ´÷  Šø $…ø †lù $…ù ´ù  Šú $…û $…û ´û  Šü $…ý $…ý ´ý  Šÿ $…ÿ ´ÿ  Š $… ´  Š $… $… ´  Š $… $…  Š ¥Š ´ $… +· ´ 2·  Š š… tš $… +· ´ 2·  Š š… $… +· ´ 2·  Š š… $… $… $… $…T $…V $…X $…X †lZ $…Z †l` $…` š…b $…b š…b ƒ…d $…h $…i $…k  Šk ¥Šl $…m $…o q½o $…p $…q q½q $…s $…t $…u $…u š…w $…x $…y $…{ $…| $…} $… $…€ $… $…„ $…… $…† $…‡ $…‰ $…Š $…‹ $… $…Ž $… $… $…‘ $…” $…˜ $…š $…ž $…¢ $…¤ $…¤ š…¨ $…¨ š…ª $…ª š…® $…® š…° $…° š…² $…¶ $…º $…¼ $…À $…Ä $…Æ $…Ê $…Î $…Ð $…Ô $…Ø $…Ú $…Þ $…ß $…á $…â $…ä $…è $…ì $…ï Hˆð $…ô $…ø $…ü $… $… $… $… $… $… $… $… $… $… š… $… š…" $…" š…# Hˆ# *Œ$ $…( $…+ Hˆ+ *Œ+ –+ –+ –+ ß‹, $…. $…2 $…6 $…8 $…< $…= Hˆ= *Œ= –= –= –= ß‹= ¹Ð@ $…B $…F $…J $…L $…P $…T $…V $…Z $…[ Hˆ[ *Œ[ –[ –[ –^ $…` $…` š…d $…d š…f $…f š…j $…j š…l $…l š…o ±Òv $…y Hˆy *Œy –y –y –y ß‹y ¹Ðy ¸Ôy $z z ’z š…| ’| š…| ~ ~ ’~ š…€ € ’€ B€€ š…‚ ’‚ B€‚ š…‚ „ „ ’„ B€„ š…† † ’† B€† š…ˆ ˆ ’ˆ B€ˆ ú€ˆ š…Š Š ’Š B€Š ú€Š š…Œ Œ ’Œ B€Œ ú€Œ š…Ž Ž ’Ž B€Ž ú€Ž š… ’ B€ ú€ š… ’ ’ ’’ B€’ ú€’ Ù’ š…” ’” B€” ú€” Ù” š…” – – ’– B€– ú€– Ù– š…˜ ˜ ’˜ B€˜ ú€˜ Ù˜ š…š š ’š B€š ú€š Ùš š…œ œ ’œ B€œ ú€œ Ùœ š…  $…¢ $… $…Ä $…Æ $…È $…Ê $…Ì $…Ô $…Ö $…Ø $…Ú $…Ú š…Ú ƒ…Ü *ŒÜ –Þ HˆÞ *ŒÞ –à Hˆà *Œà –â *Œâ –ä Hˆä *Œä –í –ï Hˆï *Œï –ï – $… š… ƒ… *Œ – Hˆ *Œ – Hˆ *Œ – *Œ – Hˆ *Œ –( $…( š…( ƒ…* *Œ* –, Hˆ, *Œ, –. Hˆ. *Œ. –0 *Œ0 –2 Hˆ2 *Œ2 –= HˆN $…N š…N ƒ…P *ŒP –R HˆR *ŒR –T HˆT *ŒT –V *ŒV –X HˆX *ŒX –y Hˆ{ Hˆ„ $… $… š…’ $…’ š…” $…” š…– $…– š…˜ $…š $…š š…œ œ ’œ š…ž ž ’ž B€ž š…    ’  B€  ú€  š…¢ ¢ ’¢ B€¢ ú€¢ Ù¢ š…i –E$…ÉHˆÉ*ŒÕHˆÇ$…É$…Ë$…Ù$…Ã$…³$…µ$…·$…¹$…»$…½š…¿$…Á$…Ã$…Å$…Ç$…É$…Ë$…Í$…Ï$…Ñ$…Ó$…Õ$…×$…Ù$…Û$…Ý$…ß$…á$…ã$…å$…ç$…é$…ë$…í$…ï$…ñ$…ó$…õ$…÷÷’÷B€ùù’ùB€ûû’ûB€ýý’ýB€ÿÿ’ÿB€’B€’B€’B€’B€  ’ B€  ’ B€  ’ B€’B€’B€’B€$…š…š…$…š…$…$…!š…!$…#$…%$…'$…)$…+$…+„+“$…“š…“*¯•$…•*¯—$…—*¯™$…™š…™*¯›š…›$…›*¯$…*¯Ÿ*¯Ÿ$…¡¡$…¡‡£$…£„££*¯ÉHˆÉ*ŒÉ–ËHˆË*Œ_$…a$…$…Hˆ‘$…“$…¡Hˆ¥$…§Hˆ©HˆóHˆõHˆ÷Hˆù$…û$…ý$…ÿ$…kHˆmHˆqHˆsHˆuHˆwHˆyHˆ{Hˆ}Hˆ}*ŒHˆ*ŒHˆƒHˆ…Hˆ‹$…‹HˆHˆ‘HˆMHˆO$…S$…W$…Y$…[¯[$…[Hˆ]*¯]$…]Hˆ_$…aƒ²cƒ²eƒ²e$…gƒ²g$…iƒ²kƒ²G$…I$…K$…M$…O$…Q$…S$…U$…Ÿ*Œ¡Hˆ $…HˆHˆ'Hˆg$…w$…yHˆ*ŒƒHˆ™Hˆ™*ŒŸHˆ¡HˆÝ$…óHˆõHˆ÷Hˆ Hˆ *Œ Hˆ *Œ Hˆ *ŒHˆ*ŒHˆ*ŒHˆ*Œkš…k$…mš…m$…oHˆo*Œo–qš…q$…sš…s$…u$…w$…wš…y$…{$…}$…$…$…ƒ$……$…½Hˆ–*Œ*Œ––*Œ–– *Œ – – *Œ – – Hˆ{HˆHˆ•*Œ—Hˆ™Hˆ›Hˆ›*Œ·*Œ¿*Œ¿–Å–Ç–Ç –É–ÍHˆ×$…Ù$…Û$…SHˆŸ$…¡$…§Hˆ§Œ©Hˆ©Œ«$…«tšï$…ñ$…ó$…õ$…ý$…Y $…[ $…] $…_ $…a $…c $…e $…g $…i $…k $…m $…o $…q $…s $…u $…w $…w tšy $…y tš{ $…{ š…} $… $… $…ƒ $…… $…‡ $…‰ $…‹ $… $… $…‘ $…“ $…• $…— $…™ Hˆ› HˆŸ Hˆ¡ Hˆ£ $…¥ Hˆ§ $…© Hˆ« $…­ $…¯ Hˆ± Hˆ± *Œ³ Hˆ³ *Œµ Hˆ· Hˆ¹ Hˆ» Hˆ½ Hˆ¿ HˆÁ HˆÃ HˆÅ HˆÇ HˆÉ HˆË HˆÍ HˆÏ HˆÑ HˆÓ HˆÕ Hˆ× HˆÙ HˆÛ HˆÝ Hˆß Hˆá Hˆã $…å Hˆç *Œé Hˆë Hˆí Hˆï Hˆñ Hˆó Hˆ!$…1! Š1!$…3! Š3!$…5! Š5!$…7! Š7!$…9! Š9!$…;! Š;!$…=! Š=!$…?! Š?!$…?!š…A! ŠA!$…A!š…C! ŠC!$…E! ŠE!$…G! ŠG!$…I! ŠI!$…K! ŠK!$…K!š…M! ŠM!$…M!tšO! ŠO!$…O!tšQ! ŠQ!$…S! ŠS!$…U! ŠU!$…W! ŠW!$…Y! ŠY!$…[! Š[!$…]! Š]!$…_! Š_!$…a! Ša!$…o!Hˆo!*Œq!Hˆq!*Œs!Hˆs!*Œu!Hˆu!*Œw!¥Šw!Hˆy!¥Šy!Hˆ{!¥Š{!Hˆ}!¥Š}!Hˆ!¥Š!Hˆ!¥Š!Hˆƒ!¥Šƒ!Hˆ…!Hˆ…!*Œ‡!¥Š‡!Hˆ‰!¥Š‰!Hˆ‹!Hˆ‹!*Œ!Hˆ!*Œ!–!Hˆ!*Œ‘!Hˆ‘!*Œ“!Hˆ“!*Œ“!–•!Hˆ•!*Œ•!–—!Hˆ—!*Œ—!–™!Hˆ™!*Œ™!–›!¥Š›!–›!–!¥Š!Hˆ!*ŒŸ!–Ÿ!–¡!Hˆ¡!*Œ£!Hˆ£!*Œ¥!Hˆ¥!*Œ§!Hˆ§!*Œ©!Hˆ©!*Œ«! Š«!$…­!Hˆ­!*Œ¯!Hˆ¯!*Œ±!Hˆ±!*Œ³!Hˆµ!Hˆ·!Hˆ·!*Œ¹!Hˆ¹!*Œ»!Hˆ»!*ŒÛ! ŠÛ!¥ŠÝ! ŠÝ!¥Š÷!$…ù!$…û!$…ý!$…ÿ!$…"$…"$…"$…"$… "$… "$… "$…"$…"$…"$…"$…"$…"$…"$…"š…"$…"$…"š…!"$…#"$…%"$…'"$…)"$…+"$…-"$…/"$…1"$…3"$…5"$…7"$…7"š…9"$…;"$…="$…?"$…A"$…C"$…C"š…E"E"’G"G"’G"š…I"I"’I"š…K"$…M"M"’O"$…O"š…Q"$…S"$…U"U"’W"W"’Y"$…["$…]"]"’_"_"’a"$…a"š…c"$…c"š…e"$…e"š…g"$…g"š…i"$…i"š…k"$…m"$…o"$…q"$…s"$…u"$…w"w"’y"y"’y"B€{"{"’}"}"’}"B€"$…"$…"tšƒ"$…ƒ"tš…"…"’…"tš‡"‡"’‡"tš‰"Hˆ‰"*Œ‹"Hˆ‹"*Œ"Hˆ"*Œ"$…"tš‘"$…‘"tš“"$…•"$…—"$…™"$…™" Š›"$…"$…Ÿ"$…Ÿ" Š¡"$…£"$…¥"$…§"$…©"$…«"$…­"$…¯"$…±"$…³"$…³"š…µ"$…·"$…·"š…¹"$…»"$…»"š…½"$…¿"$…¿"š…Á"$…Ã"$…Å"$…Ç"$…É"$…É"š…Ë"$…Ë"š…Í"$…Í"š…Ï"$…Ï"š…Ñ"$…Ó"$…Õ"$…×"$…ù"$…û"$…ý"$…ÿ"$…ÿ"š…#$…#š…#$…#$…#$… #$… #$… #$…#$…#$…#$…#Hˆ#*Œ#$…#š…#$…#$…#Hˆ#$…!#!#’####’%#%#’'#'#’)#Hˆ)#*Œ)#–)#–+#+#’+#B€+#š…-#Hˆ-#*Œ-#–/#/#’/#š…1#1#’1#š…3#$…3#tš5#$…5#tš7#$…9#$…9#tš;#$…;#tš=#=#’=#tš?#?#’?#tšA#$…A#HˆC#$…C#tšE#$…G#$…G#tšI#$…I#tšK#HˆK#*ŒK#–M#M#’M#tšO#O#’O#tšQ#HˆQ#*ŒS#S#’U#$…W#$…Y#HˆY#*Œ[#[#’]#$…_#$…a#$…a#š…c#$…c#š…e#$…g#$…i#i#’k#k#’k#B€m#m#’o#o#’o#B€q#$…s#$…s# Šu#$…w#$…y#$…{#$…}#$…#$…#$…ƒ#$……#$……#š…‡#$…‰#$…‰#š…‹#$…#$…#š…#$…‘#$…‘#š…“#$…“#š…•#$…½#$…¿#Hˆ¿#*ŒÁ#$…Ã#tšÃ#$…Å#$…Ç#$…É#$…Ë#$…Í#$…Ï#$…Ñ#$…Ó#$…Õ#Õ#’×#Hˆ×#*ŒÙ#HˆÙ#*ŒÙ#–Û#$…Ý#$…ß#$…ß#š…á#$…á#š…ã#ã#’ã#š…å#$…å#š…ç#ç#’é#é#’é#B€ë#$…í#$…í#š…ï#$…ï#š…ñ#$…ó#$…õ#$…÷#$…ù#g^ù#$…û#$…ý#$…ý#tšÿ#$…$Hˆ$*Œ$$…$$…$g^$š…$$… $$… $$… $$…$$…$$…$$…$$…$$…$$…$tš$$…$$…$$…!$$…#$$…%$$…'$$…)$$…+$$…-$$…/$$…1$$…1$ Š3$$…5$$…5$ Š7$$…7$ Š9$$…;$$…;$ Š=$$…?$$…?$š…A$$…C$$…C$š…E$$…G$$…G$š…I$$…K$$…K$š…M$$…O$$…Q$$…S$S$’U$U$’W$$…Y$$…[$$…Q%š…S%HˆS%*ŒU%$…U%š…Y%$…Y%š…[%$…[%š…]%$…]%g^]%š…_%š…_%$…a%$…e%$…g%$…i%kˆi%uˆç%$…é%Hˆë%$…í%$…K&HˆM&HˆO&$…Q&$…S&HˆS&*ŒU&HˆU&*ŒW&HˆW&*ŒW&–Y&š…[&$…[&š…]&$…_&$…a&Hˆa&*Œc&š…e&š…g&Hˆi&Hˆk&š…o&š…o&Hˆq&Hˆq&š…s&$…/'$…1'$…7'$…9'$…;'$…='$…W'$…Y'$…['$…]'$…_'$…_'tša'$…a'tšc'$…e'$…g'$…i'$…i'š…k'$…k'š…m'$…o'$…q'$…s'$…u'$…w'$…y'$…{'$…}'$…'$…'$…ƒ'$……'$…‡'$…‰'$…‹'$…'$…'š…'$…'š…‘'$…“'$…•'$…§'$…©'$…«'$…­'$…­' Š¯'$…±'$…±' Š³'$…³' Šµ'$…·'$…¹'Hˆ¹'*Œ»'$…»'š…½'Hˆ½'*Œ¿'$…¿'š…Á'HˆÁ'*ŒÁ'–Ã'Ã'’Ã'š…Å'$…Ç'$…É'HˆË'$…Í'HˆÏ'$…Ï'š…Ñ'$…Ñ'š…Ó'HˆÕ'$…×'$…Ù'$…Û'HˆÝ'Hˆß'$…á'$…ã'Hˆå'$…ç'Hˆé'Hˆë'Hˆí'$…ï'Hˆï'*Œñ'ñ'’ó'Hˆó'*Œó'–õ'õ'’õ'B€÷'Hˆ÷'*Œù'ù'’û'Hˆû'*Œû'–ý'ý'’ý'B€ÿ'$…($…($…($…(Hˆ (Hˆ (Hˆ (Hˆ(Hˆ(Hˆ(Hˆ($…($…($…($…($…($…!($…#($…-($…/($…1($…3($…;($…=($…?($…A($…C($…E($…G($…I($…K($…M($…O($…Q($…S($…U($…W($…Y(Y(’[([(’]($…_($…a($…c($…e(e(š…g(g(’g(š…i(i(’i(B€i(š…k($…k(š…m(m(’m(š…o(o(’o(B€o(š…q(q(’q(B€s(’s(B€s(w($…y($…{({(’{(B€}(}(’}(B€((’(B€((’(B€ƒ(ƒ(’ƒ(B€…($…‡($…‰($…‹($…($…($…‘($…“($…™($…›($…($…Ÿ($…¡($…£($…¥($…§($…©(š…«( Š«(¥Šµ($…·($…¹($…»($…½($…¿($…Á($…Ã($…Å($…Ç(ãkÇ($…É($…É(š…Ë($…Í($…Í(š…Ï($…Ñ($…Ó($…Õ($…×($…Ù($…Û($…Ý($…ß($…á($…á(†lã($…å($…ç($…é($…ë(ë(’í($…ï($…ñ($…ó($…õ($…÷($…ù($…û($…ý($…ý(š…ÿ($…)$…)$…)$…)$… )$… )$… )š… )$…')Hˆ))Hˆa)$…c)$…e)†le)$…g)†lg)$…¡)$…£)$…¥)$…§)$…©)$…«)$…­)$…¯)$…±)$…³)$…·)$…·)š…¹)$…¹)š…¹)ƒ…»)$…½)$…¿)$…Á)$…Ã)Ã)’Å)$…Ç)$…É)$…Ë)$…Í)$…Ï)$…Ñ)$…Ó)$…Õ)Õ)’×)$…Ù)$…Û)$…Ý)$…ß)$…á)$…ã)$…ã)š…½-½-’½-B€¿-¿-’¿-B€Á-$…Ã-Ã-’Ã-B€Å-$…Ç-$…É-$…Ë-$…Í-$…Ï-$…Ñ-$…Ó-$…Õ-$…×-$…Ù-$…Û-$…Ý-$…ß-$…á-$…ã-$…å-$…ç-Hˆé-Hˆë-Hˆí-Hˆï-HˆW.$…Y.$…[.$…].$…_.$…a.$…c.$…e.$…g.$…i.$…k.$…m.$…o.$…q.$…y.$…{.$…}.$….$….$…¡.$…£.$…¥.$…§.$…©.$…«.$…«.ôv­.ôv­.$…×.$…Ù.$…Û.$…Ý.$…ß.$…á.$…ã.$…å.$…ç.Hˆç.*Œç.–é.$…é.š…é.ƒ…ë.ë.’ë.š…í.Hˆí.*Œí.–ï.$…ï.š…ï.ƒ…ñ.ñ.’ñ.š…ó.Hˆó.*Œó.–õ.$…õ.š…õ.ƒ…÷.÷.’÷.š…ù.Hˆù.*Œù.–û.$…û.š…û.ƒ…ý.ý.’ý.š…½0$…¿0$…Á0Hˆá0$…ã0$…å0$…ç0$…é0$…ë0$…1$…1$…1$…-1$…/1$…11$…3131’5151’51B€7171’71B€71ú€9191’91B€91ú€91Ù;1;1’=1=1’=1B€?1?1’?1B€?1ú€A1A1’A1B€A1ú€A1ÙC1C1’E1E1’E1B€G1G1’G1B€G1ú€I1I1’I1B€I1ú€I1Ù}1$…1$…1$…ƒ1$……1$…‹1$…‘1$…“1$…•1$…—1$…™1$…›1$…1$…Ÿ1$…¡1$…£1$…¥1$…§1$…©1$…«1$…­1$…½1$…¿1$…Ë1Ë1’Ë1B€Ë1ú€Ë1ÙÍ1Í1’Í1B€Í1ú€Í1ÙÏ1Ï1’Ï1B€Ï1ú€Ï1ÙÑ1Ñ1’Ñ1B€Ñ1ú€Ñ1ÙÑ1ä‚Ó1Ó1’Ó1B€Ó1ú€Ó1ÙÓ1ä‚Õ1Õ1’Õ1B€Õ1ú€Õ1ÙÕ1ä‚×1×1’×1B€×1ú€×1Ù×1ä‚Ù1Ù1’Ù1B€Ù1ú€Ù1ÙÙ1ä‚Û1Û1’Û1B€Û1ú€Û1ÙÛ1ä‚Û1„Ý1Ý1’Ý1B€Ý1ú€Ý1ÙÝ1ä‚Ý1„ß1ß1’ß1B€ß1ú€ß1Ùß1ä‚ß1„á1á1’á1B€á1ú€á1Ùá1ä‚á1„ã1ã1’ã1B€ã1ú€ã1Ùã1ä‚ã1„å1$…€1'à0aà0f1a1f1a1fà0D"1D"1D"à0.&1.&1.&Ê1Á*Ì1Á*Î1Á*1¹+Ð1¶/Ò1¶/Ô1¶/Ö1¶/Ø1¶/Ú1‰4Ü1‰4Þ1‰4à1‰4â1‰4€19K²:U³;Y×;cM=gs=k =€1AV.aì-aî-a»aä1a¦.a¢!_GÚ!_G¨!_Gª!_Gv!_Gx!_GŒ!4HŽ!_G‚!_G!_G–!4Hœ!4HŠ!_G’!/I”!4H~!_Gn!_Gˆ!_G†!_Gz!_G !_G¤!_G,1a,1fÜ!_G$K $KV.*Kº!_GÀ#a$aÀ#f$f1f¬!_G$KÞ#ÒL$àLì aò a¢ aª a˜ a¬ a® a² OÆ a¼ a¦.ÀO² ãO¶ a´ a¾ aÀ a aü#RPþ#€Pä aÐ aÒ a¸ aº aè a!að a$a $a|1€Pê aà a19RR"9RN"ËR|1¸S|1aÚ#ŠVZ$ŠV8"¾Vj"9Rn ›§n dª" Ò«ŽM=¥ʸº'C¹x ÀOÂ'À»X!nR#ð¼Â'½z cm¾' ¿>"¾Vì aì fx aø'n* ˜é< ýéZ \êx ˜ëî î< cm2(|ñK D"S D"× f1¾VÔcmÀ#9R$9R<"9Rj,ö¬"qö’(cmD#cmº'Âøð'Òø,19RZ"qöÞ#Ðù1qöÂ'5üÞ#{ü1ŠVÈýv"þZ!þÜÀO8"˜4!aÀ#±$±À#Ì$Ìp"ŠVº'ÃN#̺'ÐùÀ#˜$˜t_º'W>"˜`!ah'Ò«Þ#ÊÞ#îÞ#aè0ÀOæ0ÀOê0ÀOä0ÀO1ÀOÚÀOæÀOòÀOê.Ê‹ö.Ê‹ûÀO`ÀO¨ro‚fI f`²:p³;~+xF,ȼ,ÈÏ,|â,|-~q-^¥-~©-zþ-€þ-‚þ-k 'h%E/1`/(­/Š(0|(0†F0~Ž0†£0|¸1zÐ1$"é1Ð1rÀOjÀOr'pÀO¦a|µ5‚'v'vÀOÊ'›6òaøaúaüa¶''8þa~¨r€²:|yŠÌ;|ir|1‡=ta~„@NÀO~Fz'|1ñFŠ1þFLaL`/L§G¨azI|3IRaVaraò4J$:JJ":Jt4Jzvza|rMlaza|´Mja€aXa|a|½N޼Oa’a\IP(½Q(ÃQ(f~az:J|àRzXS|S^a`azAdŠT=:J|êTÊöT|üTfŠT|mUe:J|ÁUsa|ñUhajaŠV|1W cm€1v€1‹Y€1¿Y€1óY€1%Z€1é1€1|Z€1¯Z€1àZ€1 [€1=[€1p[ œ\~mÊ'ÀOžÀOt"qöt"j<"«k"#±k¥-"# l>"cm<"qö"#Ll1j¶'cm1`l1fl‚"¸l¶'Eð'nR#Qm<"ŠVÔ'ŠV^#ŠVº'nf9Rv¶nvÀOf¶n€ÀO‚9Rt"9Rò¥-º'Ñqô9s`!·sôËtjNx4#zZ 5mf 5m¶'Ð{¶'(|<"¥-Ô'¥-º'*}8"9R)cm¥-º'¸l˜üº' 9Rž9Rx9R&v&¥-&‹Y&¿Y&óY&%Z&é1&|Z&¯Z&àZ& [&=[&p[&'ôÐ{öËtööƒ01¦„1¦„01ü„1ü„1ü„>"¥-ô¥-Ê'²:¨r ¨rB#¨r4#è‰015m01cm019R15m1cm19R01j01qö01`l01fl01ŠV01¾V1j1qö1`l1fl1ŠV1¾VtsŒt©Œtߌtt=1}15m1cm19R1j1qö1`l1fl1ŠV1¾V +Žj¨r ‹Žn¼ŽnôŽj,jè‰pirrir¼'­“€1Ä”€1È”€1ú”Ú¾V|1B–|1ÀOè‰Ê‹Ê'¾VÊ‹|1M=ʋ˾V—œ&"àZŽàZÊ'¥-–ÀO”àZ ©ŸR¾Všø º'S¡º'¡¡|1¥¢z¾V3’£7¢£º'Ç£¾ø 7Ö¥¶àZ¨â¥¨ç¥Ä¾V¶'¨û¥º'¦º'&¦Æø º'-¦È¾V¶¾V¨>¦:'¾VRÀO˜'ÌÀO3“ª3Ÿª3G«F"S²<"_²<"¾V¢k4#ÿ³º'M´¦¨r¨¨r|1޶|1ñ¶|1R·1¦„j"`l–"`lh"Z¹b" ¹X!Ö¹j"qö–"qöž"G»|1f¬ ÀO® ÀO´ ÀO¶ ÀO² 艰 ¨rײ:˜ ÀOè ÀOì ÀO¸ ÀOº ÀOÐ ÀOÒ ÀOš ÀOž ÀO¢ ÀO  ÀO¤ ÀO¦ ÀO¨ ÀOª ÀOU²:² ¨rUÀO¼ ÀO¾ ÀOÀ ÀO ÀOÆ ÀOÄ ÀOÈ ÀOÌ ÀOÊ ÀOÎ ÀOÔ ÀOÚ ÀOØ ÀOÖ ÀOâ ÀOæ ÀO$"ÀOê ÀOî ÀO€"ÊÜ aÞ aÖ aK f¢ fx!¨rz!¨rˆ!¨rŠ!¨rŒ!Ê‹Ž!¨r!¨r”!Ê‹˜!'Í–!Ê‹Þ#¥ÍP!¨rî#îÍì#îͨ!¨r !¨r¢!¨rK vn!¨rp!¨rr!¨rv!¨rt!¨rUv|!¨r~!¨r€!¨r‚!¨r„!¨r†!¨rU'UzÔ’!Ê‹˜!Ê‹gך!Ê‹ž!¨r>"Ú×4#ؤ!¨r¦!¨r®!¨r´!!Ú²!!Ú°!¨r¶!_G¸!_G°!_G1²:Þ#TÜÞ#¥Üâ0fþ!ÀO'ŸÝ"ÀO1›Þ"²:':ß'vß."ÀO0"ÀO2"ÀO$mà2"²:(ÀO(ÀOP"ÀOT"¨rX"ÀO\"¨r`"¨rd"¨rn"ÀOr"ÀO&"²:&"ÀOŒ"艊"¨rˆ"û‡àZ0'ÀO‰ÀO¬'¨r®'ÀO:"ÀO–"ÀO˜"¨rš"ÀO$ÀO¦"ÀOª"ÀOª'ÀOÚ.ÀOð.ëÚ.²:ð.Aëä0²:æ0²:â.ÀOâ.²:à'ÀOº'¨r¾'¨r¶'ÀO’(ÀO#¨rØ'ÀOä'ÀO#ÀO #¨r$#¨rÊ'M=(#tñÊ'³;,#Ê‹Â'Ê‹2#¨r4#û8#¨r<#Ê‹@#¨r@#ûF#¨r(²:J#Ê‹L#Ê‹P#¨rÄ'ÀOÆ'ÀOX#¨rÔ'ÀOì'ÀOð'¨rô'Ê‹ø'¨rü'Ê‹(ÀO²'¨r´'ÀO $ÀOz#ÀO~#ÀOÐ'¨r$¥-ù'ùóYP%ÀOP%²:¼#ÀO¾#¨rP&ÀO'P%³;Ö#ûÚ#ÀOÖ#¨rØ#Ê‹â#hýæ#×;â#¦ýì#¨rð#ÀO^%¨r-²:‡ÀO$ÿÿÞ#¨rø#×;$ÀO$ÀO$ÀO&$ÀO¾#›Þ¼#÷¼#;`&ŠTd&a‘^&aR&_GT&_GV&—œZ&_GN&a„1z „1ê%aì%aK a„1¤ "$a($a*$a.$aÊ#aÊ#v Þ#• ²'_G´'aÊ#fÞ#0R%¨rZ%¨rX%¨rJ&'L&P%^%1ap&ŠTr&aÊ'ÊL&aZ%_G`%aæ%ÀOè%aæ%aL&ÀOL&'(ÀOf&ÀOh&²:f'²:L&¾VaaX&a\&ab&aj&an&_Gh&ff'fJ&a.1a¼0a~'ÀOÀO€'ÀO‚'ÀO1&y‚'²:1ŠT¨.²:¯è‰¨.ÀO¯e#¦.²:³›Þ°'¨r°'ûµ¯#¸'色:¼'è‰À''ÍÈ'ÀOÌ'²:Î'¨rÒ'ÀOÖ'ÀOÌ'ÀOÚ'ÀOÞ'm&Ü'ÀOâ'ÀOæ'ÀOè'ÀOê'ÀOî'¨rò'Ê‹ö'¨rú'Ê‹þ'ÀO(ÀO(ÀO (ÀO (ÀO(ÀO(ÀO(ÀO(ÀOâ0ÀO2(ÀOê-ÀO,1ÀO.1ÀOÜ.ÀOb)ÀOf)艺)ÀO¼)ÀO¾)ÀOÀ)ÀOÂ)¨rÄ)ÀOÆ)ÀOÈ)ÀOÊ)ÀOÌ)ÀOÎ)ÀOÐ)ÀOÒ)ÀOÔ)¨rÖ)ÀOØ)ÀOÚ)ÀOÜ)ÀOÞ)ÀOà)ÀOâ)¨r¢)ÀOð.ª2ð.¼,ü.ª2 )ÀOš1ÀOœ1ÀO¢1ÀO¤1ÀOª1ÀO¬1ÀO‡²:()a&)aä0aía`)aæ0ad)ŠT¶)(@¸)ú@¶)DB¶)_G¸)¼,ð.Ê‹è-aæ-a.&ß ¹+å qH !ÄK!ÉK!÷K1ÀO1ÀOà0ÀO¼0ÀO¾0ÀO01ÀO¢.ÀOA!ÀOæ.Ê‹ì.Ê‹ò.Ê‹ø.Ê‹ .a¤.aâ0aÖ.aØ.aè.—œæ.—œî.—œì.—œô.—œò.—œú.—œø.—œÀ0àZ01²:01³;01M=01X1²:1³;1M=1Xà0²:à0³;à0M=à0X"ÀOà0²`1²`1²:1³;1M=1X1²`à0þd1þd1þdUÉVÉuÉyÉ¤äŤÆ]ǤȤÉ]ˤ̤ͤÎ]Ï]Ñ]Ò¤Ó¤Ô¤Õ]פؤ٤ڤÜ]Ý]ß]à¤â]ã¤ä]è¤é¤ÕÕ%Õ'Õ)Õ+ÕE]ÔAÉÉ É É ÉÉÉjÉoÉqAsÉ’Éô#f$A&A'f)f.É0ɡդէիÕÏÕÒÕÕÕÙÕV V I¤]¤`]a¤b¤c]e¤l¤m¤n]o]q]r¤|¤}¤~]€¤Ž¤¤¤’]“]•]–¤ ] ¤ ]>¤?¤`]b¤hÕiÕjÕkÕlÕmÕnÕoÕpÕqÕrÕsÕtÕuÕvÕwÕxÕyÕzÕ{Õ|Õ}Õ~ÕÕ€ÕՂՃՄՅՆՇՈՉՊՌՎÕÕՑՒՓՕ՗՘ՙ՚՛՜՞ՠաբգդեէթժիլխծհղճմյնÕÉÉËÉÍÉÐÉÓÉÕÉÖÉØÉÚÉÞÉAÉ&¤,]¾ V Ä F#È Þ j  j A Þ V  É A AFSharp.Core.dllFSCore.resourcesSystemObjectmscorlibMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeCLIMutableAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeCustomOperationAttributeProjectionParameterAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributeFSharpChoice`2IEquatable`1System.CollectionsIStructuralEquatableIComparable`1IStructuralComparableTagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1IEnumerableSystem.Collections.GenericIEnumerable`1ListDebugView`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2IObservable`1FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1EventDelegee`1EventWrapper`2FSharpEvent`2FSharpEvent`1Microsoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1Queue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1Microsoft.FSharp.Linq.RuntimeHelpersAnonymousObject`1AnonymousObject`2AnonymousObject`3AnonymousObject`4AnonymousObject`5AnonymousObject`6AnonymousObject`7AnonymousObject`8Grouping`2System.LinqIGrouping`2System.CoreMicrosoft.FSharp.LinqQuerySource`2QueryBuilderMicrosoft.FSharp.Data.UnitSystems.SI.UnitNamesmetrekilogramsecondamperekelvinmolecandelaMeasureProduct`2MeasureInverse`1MeasureOneTypeProviderAttributeTypeProviderAssemblyAttributeTypeProviderXmlDocAttributeTypeProviderDefinitionLocationAttributeTypeProviderEditorHideMethodsAttributeTypeProviderTypeAttributesTypeProviderConfigIProvidedNamespaceITypeProviderMicrosoft.BuildSettingsBuildDetailsVersion$AssemblyAttributesExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45$Fslib-extra-pervasives$SIMicrosoft.FSharp.Linq.QueryRunExtensionsHighPriorityLowPriorityQueryModule|SpecificCall1|_|@227Tuple`3Type|SpecificCall2|_|@234Tuple`4|SpecificCall3|_|@241Tuple`5restoreTupleProjections@262-1restoreTupleProjections@262Tuple`2CallGenericStaticMethod@280CallGenericInstanceMethod@289MakeGenericStaticMethod@304MakeGenericInstanceMethod@308MakersCallersInstance@350MakersCallersInstance@350-1MakeOrCallContainsOrElementAt@367MakeOrCallContainsOrElementAt@367-1MakeOrCallMinByOrMaxBy@399MakeOrCallMinByOrMaxBy@399-1Tuple`7MakeOrCallAnyOrAllOrFirstFind@443MakeOrCallAnyOrAllOrFirstFind@443-1MakeOrCallAverageByOrSumByGeneric@550MakeOrCallAverageByOrSumByGeneric@550-1Tuple`8Tuple`1Call@616-5Call@616-5TMakeOrCallSimpleOp@618MakeOrCallSimpleOp@618-1CanEliminateMakeSelect@640MakeAppend@661MakeAsQueryable@669MakeEnumerableEmpty@674MakeSelectMany@684MakeWhere@701MakeOrderByOrThenBy@713GenMakeSkipWhileOrTakeWhile@752MakeSkipOrTake@765MakeDistinct@790MakeGroupBy@799MakeGroupValBy@813MakeJoin@843MakeGroupJoin@861walk@876-2walk@877-3|LetExprReduction|_|@890|MacroReduction|_|@898tab@899|MacroReduction|_|@900-1tab@909-1|MacroReduction|_|@910-2|MacroReduction|_|@929-3MacroExpand@937ConvMutableToImmutable@1014ConvMutableToImmutable@1016-1mutConsumingExprBeforeSimplification@1072TransInnerResultSelectOtherSourceSelect@DebugTypeProxyOther@DebugTypeProxySource@DebugTypeProxyTransFor@1162-1TransInner@1220TransInner@1309-1TransInner@1330-2TransInner@1342-3immutElementSelector@1350TransInner@1357-4TransJoinInputs@1451TransJoinInputs@1453-1EliminateNestedQueries@1604Helpers$QueryFor@60Where@70Exists@77All@78SkipWhile@83-1TakeWhile@85-1Find@86MinBy@90MaxBy@93MinByNullable@96MaxByNullable@99AverageBy@156GroupBy@168-4SortBy@171-1SortByDescending@174ThenBy@177ThenByDescending@180SortByNullable@183SortByNullableDescending@186ThenByNullable@189ThenByNullableDescending@192GroupValBy@195GroupValBy@195-1Join@202Join@202-1Join@202-2GroupJoin@205GroupJoin@205-1GroupJoin@205-2LeftOuterJoin@208LeftOuterJoin@208-1LeftOuterJoin@208-2Adaptersd@61IEqualityComparer`1memoize@62isPartiallyImmutableRecord@70-1System.ReflectionPropertyInfoisPartiallyImmutableRecord@68typ@154-1typ@154RewriteTupleType@192|RecordFieldGetSimplification|_|@198ConversionDescriptionTupleConvRecordConvGroupingConvSeqConvTupleConv@DebugTypeProxyRecordConv@DebugTypeProxyGroupingConv@DebugTypeProxySeqConv@DebugTypeProxyConvImmutableTypeToMutableType@223ConvImmutableTypeToMutableType@223-1ConvImmutableTypeToMutableType@225-2ConvImmutableTypeToMutableType@225-3types@228-1types@228IsNewAnonymousObjectHelperQ@249expr@261-1CleanupLeaf@271e@286ProduceMoreMutables@302ProduceMoreMutables@307-1$QueryExtensions$MutableTupleLeafExpressionConverterConvEnvSubstHelper@198-1SubstHelper@198|SpecificCallToMethod|_|@208bindings@462-1System.Linq.ExpressionsMemberBindingbindings@462ConvExprToLinqInContext@477-1MemberInfoConvExprToLinqInContext@477ConvExprToLinqInContext@485-2ExpressionBinaryExpressionConvExprToLinqInContext@486-3ConvExprToLinqInContext@487-4ConvExprToLinqInContext@488-5ConvExprToLinqInContext@489-6ConvExprToLinqInContext@490-7ConvExprToLinqInContext@493-8ConvExprToLinqInContext@494-9ConvExprToLinqInContext@495-10ConvExprToLinqInContext@496-11ConvExprToLinqInContext@497-12ConvExprToLinqInContext@498-13ConvExprToLinqInContext@500-14ConvExprToLinqInContext@501-15ConvExprToLinqInContext@502-16ConvExprToLinqInContext@503-17ConvExprToLinqInContext@504-18ConvExprToLinqInContext@505-19ConvExprToLinqInContext@507-20ConvExprToLinqInContext@508-21ConvExprToLinqInContext@509-22ConvExprToLinqInContext@510-23ConvExprToLinqInContext@511-24ConvExprToLinqInContext@512-25ConvExprToLinqInContext@538-26ConvExprToLinqInContext@539-27ConvExprToLinqInContext@540-28ConvExprToLinqInContext@542-29ConvExprToLinqInContext@543-30ConvExprToLinqInContext@544-31ConvExprToLinqInContext@546-32ConvExprToLinqInContext@547-33ConvExprToLinqInContext@548-34ConvExprToLinqInContext@550-35ConvExprToLinqInContext@551-36ConvExprToLinqInContext@552-37ConvExprToLinqInContext@554-38ConvExprToLinqInContext@555-39ConvExprToLinqInContext@556-40meth@620MethodInfometh@632-1meth@643-2vsP@695ParameterExpressionenv@696-1env@696tupTy@701ConvExprToLinqInContext@719-42ConvExprToLinqInContext@719-41ConvExprToLinqInContext@720-44ConvExprToLinqInContext@720-43ConvExprsToLinq@769NullableModuleNullableOperators$LinqObservableModuleBasicObserver`1IObserver`1Map@2484-7Map@2482-6Choose@2494-4Choose@2492-3Filter@2502-2Partition@2506-2Scan@2514-5Scan@2511-4Pairwise@2535-3Pairwise@2532-2h1@2553h2@2568Merge@2583-3Merge@2547-2Split@2590-1Split@2591-2EventModuleMap@2373-5Filter@2379-1Partition@2386-1Choose@2392-2Scan@2399-3Pairwise@2413-1Merge@2424Merge@2425-1Split@2432AsyncHelpersstart@2012-3start@2013-4start@2014-5OperationCanceledExceptionawaitEither@2017-2awaitEither@2018-3awaitEither@2020-4awaitEither@2010-1System.ThreadingCancellationTokenawaitEither@2008timeout@2024timeout@2028-1timeout@2029-2timeout@2029-3WebExtensionsAsyncGetResponse@1959-1System.NetWebResponseAsyncGetResponse@1962-3AsyncCallbackAsyncGetResponse@1963-4AsyncGetResponse@1964-5AsyncGetResponse@1962-2AsyncGetResponse@1958downloadAsync@1985-3DownloadStringCompletedEventHandlerdownloadAsync@1985-4downloadAsync@1985-6downloadAsync@1985-5DownloadStringCompletedEventArgsdownloadAsync@1983-2downloadAsync@1982-1downloadAsync@1992-7downloadAsync@1992-8downloadAsync@1992-10downloadAsync@1992-9downloadAsync@1980AsyncDownloadString@1997-1AsyncDownloadString@1997-3AsyncDownloadString@1997-2AsyncDownloadString@1997CommonExtensionsAsyncRead@1913AsyncRead@1913-1AsyncReadBytes@1919-1AsyncReadBytes@1921-3AsyncReadBytes@1920-2AsyncReadBytes@1924-4AsyncReadBytes@1917AsyncWrite@1930AsyncWrite@1930-1SubscribeToObservable@1943AsBeginEndHelperscont@1734-3econt@1735-4ccont@1736-6CancellationTokenOpsRunSynchronously@1165RunSynchronously@1166-1RunSynchronously@1167-2Start@1191Start@1192-1Start@1193-2StartWithContinuations@1198StartWithContinuations@1198-1StartWithContinuations@1198-2VolatileBarrierreg@1222a@1230-1a@1233-3a@1231-2a@1230AsyncImplswitchTo@886-1switchTo@885switchToNewThread@891-1switchToNewThread@890switchToThreadPool@895-1switchToThreadPool@894delimitSyncContext@931-1delimitSyncContext@931delimitSyncContext@933-3delimitSyncContext@933-2delimitSyncContext@934-5delimitSyncContext@934-4protectedPrimitiveWithResync@943unprotectedPrimitiveWithResync@948LatchOnceSuspendedAsync`1action@979ContinueWithPostOrQueue@997ResultCell`1RegisterResult@1087get_AwaitResult@1092AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxythreadStartCallbackForStartThreadWithTrampoline@673startAsync@687queueAsync@691protectedPrimitive@721reify@724resultA@739-1resultA@735args@753bindA@760-1bindA@747callA@773-1callA@773-2callA@769cont@791-1cont@791-2cont@791econt@794-1econt@794-2econt@794ccont@797-1ccont@797-2ccont@797tryFinallyA@784econt@807-3tryWithA@803ccont@818-4ccont@818-5ccont@818-3whenCancelledA@817getCancellationToken@822usingA@833whileA@841forA@849-1forA@850-2forA@847sequentialA@854$Control-ctor@467-ctor@476-1-ctor@485-2once@1266-2once@1269-3once@1271-4once@1264-1FromContinuations@1255Catch@1293-1Catch@1293-2Catch@1292StartChildAsTask@1315-1System.Threading.TasksTask`1StartChildAsTask@1314finishTask@1345-1finishTask@1344-2finishTask@1343-3Parallel@1380-3Parallel@1382-4Parallel@1384-5Parallel@1376-2Parallel@1328-1Parallel@1320StartImmediate@1412StartImmediate@1412-1StartImmediate@1412-2registration@1427-1registration@1422Sleep@1447-2Sleep@1432-1Sleep@1415AwaitWaitHandle@1461cancelHandler@1540-1cancelHandler@1533AwaitWaitHandle@1552-3AwaitWaitHandle@1548-2AwaitWaitHandle@1529-1AwaitIAsyncResult@1564ReifyResult@1572AwaitAndReifyResult@1582-1AwaitAndReifyResult@1581AsyncWaitAsyncWithTimeout@1616-1AsyncWaitAsyncWithTimeout@1614-4AsyncWaitAsyncWithTimeout@1607-3AsyncWaitAsyncWithTimeout@1603-2AsyncWaitAsyncWithTimeout@1602AsyncWaitAsyncWithTimeout@1597-5onCancel@1631-1registration@1639-2callback@1649-1callback@1641FromBeginEnd@1621-1FromBeginEnd@1620FromBeginEnd@1668-2FromBeginEnd@1672-3FromBeginEnd@1675-4beginAction@1772-1AsBeginEnd@1773AsBeginEnd@1773-1onCancel@1791-3AwaitEvent@1796-5AwaitEvent@1782-2CancellationTokenRegistrationAwaitEvent@1803-7AwaitEvent@1799-6AwaitEvent@1798-3AwaitEvent@1808-4AwaitEvent@1779-1AwaitEvent@1778Ignore@1824reg@1837-1StartChild@1845-2StartChild@1846-3StartChild@1847-4StartChild@1834-1StartChild@1832SwitchToContext@1861-1SwitchToContext@1858handler@1872OnCancel@1876-3OnCancel@1876-2OnCancel@1877-4OnCancel@1870-1OnCancel@1868continuation@1892-1AwaitTask@1899-1AwaitTask@1890-ctor@2054-3Post@2146scan@2179-2scan@2154-3scan@2150-1scanNoTimeout@2190-2scanNoTimeout@2184-3scanNoTimeout@2182-1TryScan@2203-1TryScan@2198-2TryScan@2194Scan@2209-2Scan@2208-1processFirstArrival@2220-2processFirstArrival@2216-1TryReceive@2224processFirstArrival@2235-5processFirstArrival@2231-4Receive@2239p@2287-1p@2288-3p@2288-2p@2287msg@2299msg@2314-1PostAndTryAsyncReply@2328-2PostAndTryAsyncReply@2327-1PostAndTryAsyncReply@2326PostAndTryAsyncReply@2322-4PostAndTryAsyncReply@2321-3PostAndAsyncReply@2343-1PostAndAsyncReply@2342msg@2337-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1731ApplicationsPattern@1733SpecificCallPattern@1751SpecificCallPattern@1757-1PatternsModuleByteStreamLetRecursivePattern@478getRecordProperty@488getUnionCaseInfo@494checkArgs@589ParameterInfomkNewTupleWithType@661mkNewRecord@678mkNewUnionCase@687mkNewArray@702dlfun@809mkLetRec@831mkLetRec@833-1typesEqual@842instFormal@844methInfos@856argTs@867haveArgTs@873select@864argTs@888-1inst@931mkNamedTycon@1101u_tyconstSpec@1125u_tyconstSpec@1126-1u_tyconstSpec@1127-2appL@1130u_dtype@1135u_dtype@1136-1u_dtype@1136-2u_dtype@1136-3u_dtypes@1139u_dtypes@1139-1BindingEnvenvClosed@1156u_Expr@1163u_Expr@1163-1u_Expr@1166-3u_Expr@1164-2u_Expr@1168-4u_Expr@1171-5u_Expr@1174-6u_Expr@1176-7attrs@1178u_Expr@1179-9u_Expr@1179-8u_Expr@1181-10u_VarDecl@1185u_VarRef@1188u_RecdField@1191u_UnionCaseInfo@1194u_UnionCaseField@1198u_MethodInfoData@1206u_MethodInfoData@1206-1u_constSpec@1289u_constSpec@1289-1u_constSpec@1267-2u_constSpec@1268-3u_constSpec@1269-4u_constSpec@1270-5u_constSpec@1271-6u_constSpec@1272-7u_constSpec@1273-8u_constSpec@1274-9u_constSpec@1275-10u_constSpec@1276-11u_constSpec@1277-12u_constSpec@1278-13u_constSpec@1279-14u_constSpec@1280-15u_constSpec@1281-16u_constSpec@1282-17u_constSpec@1283-18u_constSpec@1284-19u_constSpec@1285-20u_constSpec@1286-21u_constSpec@1287-22u_constSpec@1288-23u_constSpec@1251-24u_constSpec@1252-25u_constSpec@1253-26u_constSpec@1254-27u_constSpec@1255-28u_constSpec@1256-29u_constSpec@1257-30u_constSpec@1258-31u_constSpec@1259-32u_constSpec@1260-33u_constSpec@1261-34u_constSpec@1262-35u_constSpec@1263-36u_constSpec@1264-37u_constSpec@1265-38u_constSpec@1266-39u_constSpec@1236-40u_constSpec@1237-41u_constSpec@1242-42u_constSpec@1243-43u_constSpec@1244-44u_constSpec@1245-45u_constSpec@1246-46u_constSpec@1247-47u_constSpec@1248-48u_constSpec@1249-49u_ReflectedDefinition@1290MethodBaseu_ReflectedDefinitions@1291unpickleExpr@1293unpickleExpr@1293-1unpickleReflectedDefns@1295fillHolesInRawExpr@1307freeInExprAcc@1318mkTyparSubst@1333Clashsubstargs@1345substituteInExpr@1361decodedTopResources@1378AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1418registerReflectedDefinitions@1422qdataResources@1456qdataResources@1452-1data@1465-1data@1464SimpleUnpickleInputStatephase2data@1075phase2data@1075-1mkRLinear@51mkLLinear@52$Quotationsexpr@204pairL@207varL@214|Lambda|_|@216-1|NLambdas|_|@224-1GetLayout@273Applications@1528NewDelegate@1593PrintfModulePrintFormatToStringThen@574-1PrintFormatToStringThen@573-2PrintFormatToStringThen@575-3PrintFormatToStringThen@572kprintf_imperative@584-1kprintf_imperative@584PrintFormatToStringBuilderThen@589PrintFormatToTextWriterThen@592PrintFormatToStringThen@595-4PrintFormatToStringThenFail@598PrintFormatToStringBuilder@601PrintFormatToTextWriter@604PrintFormatLineToTextWriter@607PrintfImplPrintfInfobuildFunctionForOneArgPat@212buildFunctionForTwoArgPat@220-1buildFunctionForTwoArgPat@219buildFunctionForOneFunArgPat@226captureCoreArgs@312-1captureCoreArgs@329-2captureCoreArgs@314-3captureCoreArgs@313-4captureCoreArgs@331-5captureCoreArgs@330-6captureCoreArgs@327-7captureCoreArgs@321-8captureCoreArgs@323-9captureCoreArgs@322-10captureCoreArgs@324-11captureCoreArgs@332-12captureCoreArgs@315-13captureCoreArgs@328-14captureCoreArgs@333-15capturePrecisionArg@340-1capture1@344gprintf@514capture@540-1$PrintfDisplayBreaksitemL@667itemL@680-1PrecedenceShowModestopShort@788-1res@828objL@791-1recdAtomicTupleL@879-3recdAtomicTupleL@879-2recdAtomicTupleL@879-1recdAtomicTupleL@880-6recdAtomicTupleL@880-5recdAtomicTupleL@880-4recdAtomicTupleL@880-7objL@791-2bracketIfL@882-1project@956project2@965-1rowL@967project1@968possibleKeyValueL@986-4possibleKeyValueL@986-3possibleKeyValueL@986-2possibleKeyValueL@989-7possibleKeyValueL@989-6possibleKeyValueL@989-5possibleKeyValueL@982-1itemLs@992reprL@1002-1itemLs@1008-1reprL@1039-2IComparerreprL@1045-3itemL@895-6itemL@895-5itemL@895-4itemL@894-3project@903-2leafFormatter@1090squash_layout@1134output_layout@1138layout_to_string@1142ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@354pvals@360-1LayoutOpsjoin@146join1@147join2@148join3@149op_AtAt@160op_AtAtMinus@161op_AtAtMinusMinus@162commaListL@172semiListL@173spaceListL@174sepListL@175aboveListL@181unfoldL@207$Sformatget_Default@242NumericLiteralsNumericLiteralI$Z$N$Eventget_Publish@36-cctor@47-173mi@100get_Publish@144-2get_Publish@131-1h@171-1get_Publish@173-4get_Publish@161-3ImplgetInstancePropertyReader@71getUnionTypeTagNameMap@199FieldInfogetUnionTypeTagNameMap@198-1getUnionTypeTagNameMap@180-2tagField@204getUnionTagConverter@216getUnionTagConverter@217-1getUnionTagConverter@220-2fieldsPropsOfUnionCase@266fieldsPropsOfUnionCase@265-1fieldsPropsOfUnionCase@264-2getUnionCaseRecordReader@274getUnionTagReader@278getUnionTagReader@282-1getUnionTagReader@287-2getUnionTagReader@285-3getUnionCaseConstructor@320orderTupleProperties@408getTupleCtor@436reader@447-1getTupleReader@453getTupleConstructor@466fieldPropsOfRecordType@532fieldPropsOfRecordType@531-1getRecordReader@542getRecordConstructor@558$ReflectMakeTupleType@681GetUnionCases@704Invoke@720-4PreComputeRecordFieldReader@746SetModuleSetTreeModulesubset@270psubset@272psubset@272-1SetIterator`1mkIEnumerator@426-1copyToArray@485-1ofArray@504$SetFold@603Map@623-4Union@660Intersection@663MapModuleToSeq@714FindKey@717TryFindKey@720MapTreeModuleofList@321copyToArray@346MapIterator`2mkIEnumerator@394$MapSystem-Collections-Generic-IDictionary-2-get_Keys@587-1System-Collections-Generic-IDictionary-2-get_Keys@587System-Collections-Generic-IDictionary-2-get_Values@590-1System-Collections-Generic-IDictionary-2-get_Values@590System-IComparable-CompareTo@611get_Items@634Array4DModuleArray3DModule$Array3ArrayModuleParallelChoose@681-1Collect@708-1Map@716-3MapIndexed@726-3Iterate@733IterateIndexed@739Initialize@744-1Partition@755$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@835mkUnfoldSeq@836InitializeInfinite@848Initialize@853revamp@907revamp2@909Filter@914Map@922-1MapIndexed@927-1Map2@933Choose@938Zip@944Zip3@951Cast@956Take@997fromGenerator@1053Append@1061-1Append@1061OfArray@1106Singleton@1124Truncate@1130Pairwise@1139Scan@1150Windowed@1190result@1235cleanup@1249ReadOnly@1262GroupBy@1274-1GroupBy@1285-2List`1GroupBy@1289-3GroupBy@1269Distinct@1295DistinctBy@1306SortBy@1316Sort@1324CountBy@1336-1CountBy@1343-2CountBy@1332TakeWhile@1485Skip@1493SkipWhile@1503RuntimeHelpersStructBox`1ValueTypegcomparer@532get_Comparer@533mkSeq@543EmptyEnumerable`1Generate@557EnumerateFromFunctions@565EnumerateFromFunctions@566-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@696EnumerateUsing@697-1mkConcatSeq@700EnumerateWhile@713-1EnumerateWhile@712EnumerateThenFinally@729-1h@742CreateEvent@744-1CreateEvent@734GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@403Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@386EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@496-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@501cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@156filter@173unfold@190getCurrent@225-1upto@229generateWhileSome@265ArrayEnumerator`1Singleton`1EnumerateThenFinally@322$SeqMoveNextImpl@773ComparisonIdentityFromFunction@48IComparer`1HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@114MapIndexed@119Copy@124Rebase@131$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsCreate@5699CreateFromValue@5704Operatorsop_ComposeRight@3580op_ComposeLeft@3582op_Range@5367op_RangeStep@5383PowInteger@5529PowInteger@5529-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4819RangeInt32@4819-1RangeInt32@4819-2RangeInt64@4820RangeInt64@4820-1RangeInt64@4820-2RangeUInt64@4821RangeUInt64@4821-1RangeUInt64@4821-2RangeUInt32@4822RangeUInt32@4822-1RangeUInt32@4822-2RangeIntPtr@4823RangeIntPtr@4823-1RangeIntPtr@4823-2RangeUIntPtr@4824RangeUIntPtr@4824-1RangeUIntPtr@4824-2RangeInt16@4825RangeInt16@4825-1RangeInt16@4825-2RangeUInt16@4826RangeUInt16@4826-1RangeUInt16@4826-2RangeSByte@4827RangeSByte@4827-1RangeSByte@4827-2RangeByte@4828RangeByte@4828-1RangeByte@4828-2RangeDouble@4829RangeDouble@4829-1RangeDouble@4829-2RangeSingle@4830RangeSingle@4830-1RangeSingle@4830-2RangeGeneric@4831RangeGeneric@4831-1RangeStepGeneric@4832RangeStepGeneric@4832-1RangeChar@4834RangeChar@4834-1UnaryDynamicImpl@5130BinaryDynamicImpl@5136AbsDynamicImplTable`1-cctor@5142-61-cctor@5142-62-cctor@5143-63-cctor@5143-64-cctor@5144-65-cctor@5144-66-cctor@5145-67-cctor@5145-68-cctor@5146-69-cctor@5146-70-cctor@5147-71-cctor@5147-72-cctor@5148-73-cctor@5148-74-cctor@5149-75Decimal-cctor@5149-76AcosDynamicImplTable`1-cctor@5157-77-cctor@5157-78-cctor@5158-79-cctor@5158-80AsinDynamicImplTable`1-cctor@5166-81-cctor@5166-82-cctor@5167-83-cctor@5167-84AtanDynamicImplTable`1-cctor@5175-85-cctor@5175-86-cctor@5176-87-cctor@5176-88Atan2DynamicImplTable`2-cctor@5184-89-cctor@5184-91-cctor@5184-90-cctor@5185-92-cctor@5185-94-cctor@5185-93CeilingDynamicImplTable`1-cctor@5193-95-cctor@5193-96-cctor@5194-97-cctor@5194-98ExpDynamicImplTable`1-cctor@5202-99-cctor@5202-100-cctor@5203-101-cctor@5203-102FloorDynamicImplTable`1-cctor@5211-103-cctor@5211-104-cctor@5212-105-cctor@5212-106TruncateDynamicImplTable`1-cctor@5220-107-cctor@5220-108-cctor@5221-109-cctor@5221-110RoundDynamicImplTable`1-cctor@5229-111-cctor@5229-112-cctor@5230-113-cctor@5230-114SignDynamicImplTable`1-cctor@5238-115-cctor@5238-116-cctor@5239-117-cctor@5239-118-cctor@5240-119-cctor@5240-120-cctor@5241-121-cctor@5241-122-cctor@5242-123-cctor@5242-124-cctor@5243-125-cctor@5243-126-cctor@5244-127-cctor@5244-128-cctor@5245-129-cctor@5245-130LogDynamicImplTable`1-cctor@5253-131-cctor@5253-132-cctor@5254-133-cctor@5254-134Log10DynamicImplTable`1-cctor@5262-135-cctor@5262-136-cctor@5263-137-cctor@5263-138SqrtDynamicImplTable`2-cctor@5271-139-cctor@5271-140-cctor@5272-141-cctor@5272-142CosDynamicImplTable`1-cctor@5280-143-cctor@5280-144-cctor@5281-145-cctor@5281-146CoshDynamicImplTable`1-cctor@5289-147-cctor@5289-148-cctor@5290-149-cctor@5290-150SinDynamicImplTable`1-cctor@5298-151-cctor@5298-152-cctor@5299-153-cctor@5299-154SinhDynamicImplTable`1-cctor@5307-155-cctor@5307-156-cctor@5308-157-cctor@5308-158TanDynamicImplTable`1-cctor@5316-159-cctor@5316-160-cctor@5317-161-cctor@5317-162TanhDynamicImplTable`1-cctor@5325-163-cctor@5325-164-cctor@5326-165-cctor@5326-166PowDynamicImplTable`2-cctor@5334-167-cctor@5334-169-cctor@5334-168-cctor@5335-170-cctor@5335-172-cctor@5335-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@3000Adapt@3006FSharpFunc`4Invoke@3013-1Adapt@3021-1Adapt@3024-2FSharpFunc`5Adapt@3038-3Adapt@3043-4Adapt@3046-5Invoke@3048-2FSharpFunc`6Invoke@3054-3Adapt@3063-6Adapt@3068-7Adapt@3073-8Adapt@3076-9LanguagePrimitivesFastGenericEqualityComparer@2092FastLimitedGenericEqualityComparer@2093CharComparer@2099StringComparer@2100SByteComparer@2101Int16Comparer@2102Int32Comparer@2103Int64Comparer@2104IntPtrComparer@2105ByteComparer@2106UInt16Comparer@2107UInt32Comparer@2108UInt64Comparer@2109UIntPtrComparer@2110FloatComparer@2111Float32Comparer@2112DecimalComparer@2113FastGenericComparerTable`1-cctor@2150-cctor@2173-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2417-2-cctor@2418-3-cctor@2419-4-cctor@2423-5-cctor@2422-7-cctor@2422-6AdditionDynamicImplTable`3dyn@2451-2dyn@2451-1dyn@2450-3dyn@2449-5dyn@2449-4-cctor@2454-8-cctor@2455-9-cctor@2456-10-cctor@2457-11-cctor@2458-12-cctor@2459-13-cctor@2460-14-cctor@2461-15-cctor@2462-16-cctor@2463-17-cctor@2464-18-cctor@2465-19-cctor@2466-20CheckedAdditionDynamicImplTable`3dyn@2488-8dyn@2488-7dyn@2487-9dyn@2486-11dyn@2486-10-cctor@2491-21-cctor@2492-22-cctor@2493-23-cctor@2494-24-cctor@2495-25-cctor@2496-26-cctor@2497-27-cctor@2498-28-cctor@2499-29-cctor@2500-30-cctor@2501-31-cctor@2502-32-cctor@2503-33-cctor@2504-34MultiplyDynamicImplTable`3dyn@2528-14dyn@2528-13dyn@2527-15dyn@2526-17dyn@2526-16-cctor@2531-35-cctor@2532-36-cctor@2533-37-cctor@2534-38-cctor@2535-39-cctor@2536-40-cctor@2537-41-cctor@2538-42-cctor@2539-43-cctor@2540-44-cctor@2541-45-cctor@2542-46-cctor@2543-47CheckedMultiplyDynamicImplTable`3dyn@2565-20dyn@2565-19dyn@2564-21dyn@2563-23dyn@2563-22-cctor@2568-48-cctor@2569-49-cctor@2570-50-cctor@2571-51-cctor@2572-52-cctor@2573-53-cctor@2574-54-cctor@2575-55-cctor@2576-56-cctor@2577-57-cctor@2578-58-cctor@2579-59-cctor@2580-60HashCompareGenericComparerfsEqualityComparer@1619IEqualityComparerfsEqualityComparerER@1624CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3110op_Implicit@3112-1FromConverter@3114ToConverter@3115ToFSharpFunc@3125ToFSharpFunc@3128-1FuncFromTupled@3130FuncFromTupled@3131-1FuncFromTupled@3132-2FuncFromTupled@3133-3SR$Sr$Prim-types-preludeFSharp.CoreSystem.Runtime.CompilerServicesDependencyAttribute.ctorLoadHintDefaultDependencyAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeSystem.SecuritySecurityTransparentAttributeSecurityRulesAttributeSecurityRuleSetAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyDefaultAliasAttributeAssemblyCompanyAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeAssemblyInformationalVersionAttributeSystem.ResourcesSatelliteContractVersionAttributeNeutralResourcesLanguageAttributeAssemblyDelaySignAttributeAssemblyKeyFileAttributeRuntimeCompatibilityAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesAggregateExceptionLazy`1System.NumericsBigIntegerCancellationTokenSourceTupleTuple`6GetHashCodeEqualsobjSystem-IComparable-CompareTo_objCompareTovalue__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueget_ValueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageget_MessageCountscountsCloneget_CountsNameAllowIntoPatternIsLikeZipIsLikeJoinIsLikeGroupJoinJoinConditionWordMaintainsVariableSpaceMaintainsVariableSpaceUsingBindnameisBinaryallowIntoisJoinisGroupJoinmaintainsVarSpacemaintainsVarSpaceWithBindjoinOnWordget_Nameget_AllowIntoPatternset_AllowIntoPatternvget_IsLikeZipset_IsLikeZipget_IsLikeJoinset_IsLikeJoinget_IsLikeGroupJoinset_IsLikeGroupJoinget_JoinConditionWordset_JoinConditionWordget_MaintainsVariableSpaceset_MaintainsVariableSpaceget_MaintainsVariableSpaceUsingBindset_MaintainsVariableSpaceUsingBindMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorget_IsHiddenset_IsHiddenPathpathget_PathTagCompilerGeneratedAttributeDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsChoice1Of2IsChoice2Of2NewChoice1Of2itemget_IsChoice1Of2NewChoice2Of2get_IsChoice2Of2get_TagcompT1T2Itemget_ItemDebuggerTypeProxyAttributeIsChoice1Of3IsChoice2Of3IsChoice3Of3NewChoice1Of3get_IsChoice1Of3NewChoice2Of3get_IsChoice2Of3NewChoice3Of3get_IsChoice3Of3T3IsChoice1Of4IsChoice2Of4IsChoice3Of4IsChoice4Of4_tagNewChoice1Of4get_IsChoice1Of4NewChoice2Of4get_IsChoice2Of4NewChoice3Of4get_IsChoice3Of4NewChoice4Of4get_IsChoice4Of4T4IsChoice1Of5IsChoice2Of5IsChoice3Of5IsChoice4Of5IsChoice5Of5NewChoice1Of5get_IsChoice1Of5NewChoice2Of5get_IsChoice2Of5NewChoice3Of5get_IsChoice3Of5NewChoice4Of5get_IsChoice4Of5NewChoice5Of5get_IsChoice5Of5T5IsChoice1Of6IsChoice2Of6IsChoice3Of6IsChoice4Of6IsChoice5Of6IsChoice6Of6NewChoice1Of6get_IsChoice1Of6NewChoice2Of6get_IsChoice2Of6NewChoice3Of6get_IsChoice3Of6NewChoice4Of6get_IsChoice4Of6NewChoice5Of6get_IsChoice5Of6NewChoice6Of6get_IsChoice6Of6T6IsChoice1Of7IsChoice2Of7IsChoice3Of7IsChoice4Of7IsChoice5Of7IsChoice6Of7IsChoice7Of7NewChoice1Of7get_IsChoice1Of7NewChoice2Of7get_IsChoice2Of7NewChoice3Of7get_IsChoice3Of7NewChoice4Of7get_IsChoice4Of7NewChoice5Of7get_IsChoice5Of7NewChoice6Of7get_IsChoice6Of7NewChoice7Of7get_IsChoice7Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2System.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2StringSystem.GlobalizationCultureInfoget_CurrentUICultureResourceManagerGetStringSpecializeTInvokefuncConverter`2op_ImplicitconverterFromConverterToConverterInvokeFastarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValueDebuggerDisplayAttributeIsNoneIsSomeget_NoneSomeGetTagget_IsNoneget_IsSomeConcatToStringEmptyIsEmptyIsConsHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Empty.cctorget_Emptyget_IsEmptyConsget_IsConsget_HeadOrDefaultget_TailOrNullget_LengthInt32get_DebugDisplayInvalidOperationExceptionget_Headget_TailindexSystem.TextStringBuilderAppendSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeItemslListDebugViewMaxLengthcountget_ItemsnaAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetDisposeMoveNextResetget_CurrentrescleanupClearMapEmptyget_MapEmptyNewMapOneitem1item2NewMapNodeitem3item4item5TKeyTValueItem1Item2get_Item1get_Item2Item3Item4Item5get_Item3get_Item4get_Item5ComparerCountcomparer@422tree@426serializedDataemptycomparertreeArgumentNullExceptionOnSerializingOnSerializingAttributeOnDeserializedOnDeserializedAttributeCreateieelementsget_Comparerget_TreeAddkeyTryPickfExistsFilterForAllAdaptFoldaccFoldSectionlohizIterateMapRangebMapPartitionget_CountContainsKeyRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemxSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarriSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_Itemkey@value@get_keyget_valueSetEmptyget_SetEmptyNewSetNodeNewSetOneChooseMinimumElementMaximumElementcomparer@524tree@528op_Subtractionset1set2op_AdditionIntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayDeclaringTypetyptagnamesget_DeclaringTypeGetFieldsGetCustomAttributesattributeTypeGetCustomAttributesDataIList`1CustomAttributeDatagetMethInfoIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameFormatget_IsGenericTypeGetGenericTypeDefinitionActivatorCreateInstanceMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderexnPublishmulticastDelegateDynamicInvokeTriggerget_PublishobservermakeTupleOnNext_sendercdeinvokerinvokeInfoGetMethodGetParametersget_ParameterTypeCreateDelegateGetMethodsget_IsGenericMethodDefinitionMakeGenericMethodargUnbreakableIsUnbreakableIsBreakableIsBroken_unique_Unbreakableget_Unbreakableget_IsUnbreakableNewBreakableget_IsBreakableNewBrokenget_IsBrokenIsLeafIsNodeIsAttrNewLeafget_IsLeafNewNodeitem6get_IsNodeNewAttrget_IsAttrItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderIFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_InvariantCultureget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsDictionary`2stampisMutable@90MonitorEnterExitisMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_MetadataTokenget_Moduleget_AssemblyIsCombTermIsVarTermIsLambdaTermIsHoleTermNewCombTermget_IsCombTermNewVarTermget_IsVarTermNewLambdaTermget_IsLambdaTermNewHoleTermget_IsHoleTermAppOpIsAppOpIfThenElseOpIsIfThenElseOpLetRecOpIsLetRecOpLetRecCombOpIsLetRecCombOpLetOpIsLetOpIsNewRecordOpIsNewUnionCaseOpIsUnionCaseTestOpIsNewTupleOpIsTupleGetOpIsInstancePropGetOpIsStaticPropGetOpIsInstancePropSetOpIsStaticPropSetOpIsInstanceFieldGetOpIsStaticFieldGetOpIsInstanceFieldSetOpIsStaticFieldSetOpIsNewObjectOpIsInstanceMethodCallOpIsStaticMethodCallOpIsCoerceOpIsNewArrayOpIsNewDelegateOpQuoteOpIsQuoteOpSequentialOpIsSequentialOpAddressOfOpIsAddressOfOpVarSetOpIsVarSetOpAddressSetOpIsAddressSetOpIsTypeTestOpTryWithOpIsTryWithOpTryFinallyOpIsTryFinallyOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpWhileLoopOpIsWhileLoopOpIsValueOpIsDefaultValueOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpget_AppOpget_IsAppOpget_IfThenElseOpget_IsIfThenElseOpget_LetRecOpget_IsLetRecOpget_LetRecCombOpget_IsLetRecCombOpget_LetOpget_IsLetOpNewNewRecordOpget_IsNewRecordOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewTupleOpget_IsNewTupleOpNewTupleGetOpget_IsTupleGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewNewObjectOpget_IsNewObjectOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewCoerceOpget_IsCoerceOpNewNewArrayOpget_IsNewArrayOpNewNewDelegateOpget_IsNewDelegateOpget_QuoteOpget_IsQuoteOpget_SequentialOpget_IsSequentialOpget_AddressOfOpget_IsAddressOfOpget_VarSetOpget_IsVarSetOpget_AddressSetOpget_IsAddressSetOpNewTypeTestOpget_IsTypeTestOpget_TryWithOpget_IsTryWithOpget_TryFinallyOpget_IsTryFinallyOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_WhileLoopOpget_IsWhileLoopOpNewValueOpget_IsValueOpNewDefaultValueOpget_IsDefaultValueOpCustomAttributestermattribsget_CustomAttributesfulllongSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsargumentsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawarraysizeDequeueSetCapacityEnqueueCopycapacityTokenfailureCTSlinkedCTSget_TokenCreateLinkedTokenSourcectCancelFakeUnit_unique_FakeUnitget_FakeUnitthisThreadHasTrampolineThisThreadHasTrampolinecontbindCountthisThreadHasTrampoline@ThreadStaticAttributeget_thisThreadHasTrampolineset_thisThreadHasTrampolineget_ThisThreadHasTrampolineExecuteActionfirstActionIncrementBindCountSetunfake_arg1trampolinesendOrPostCallbackSendOrPostCallbackwaitCallbackForQueueWorkItemWithTrampolineWaitCallbackthreadStartCallbackForStartThreadWithTrampolineParameterizedThreadStartinit@457SynchronizationContextPostctxtThreadPoolQueueUserWorkItemQueueWorkItemThreadset_IsBackgroundStartStartThreadProtectget_TrampolinetokenecontcconttrampolineHoldertoken@econt@ccont@trampolineHolder@get_tokenget_econtget_ccontget_trampolineHolderauxcont@aux@get_contget_auxNewPZeroDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchget_CanBeCanceledRunSynchronouslytimeoutcancellationTokenStartAsTaskTaskCreationOptionstaskCreationOptionsStartChildAsTaskcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndTArgAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextsyncContextOnCancelinterruptionTryCancelledAwaitTasktaskIsClosedstatecompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@2262mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscanneritem1@get_item1item2@get_item2item3@get_item3item4@get_item4item5@get_item5item6@get_item6item7Item7item7@get_item7get_Item7item8Item8item8@get_item8get_Item8T8System-Linq-IGrouping`2-get_KeyKget_SourceQQ2YieldFromqIQueryable`1EnumerableprojectionFunc`2WherepredicateLastLastOrDefaultSingleExactlyOneSingleOrDefaultExactlyOneOrDefaultDistinctAnyAllFirstElementAtNthSkipSkipWhileTakeTakeWhileFindFirstOrDefaultMinMinByvalueSelectorMaxMaxByNullable`1MinByNullableMaxByNullableget_HasValueSumByNullableAverageByNullableAverageAverageBySumByGroupBykeySelectorOrderByIOrderedEnumerable`1SortByOrderByDescendingSortByDescendingThenByThenByDescendingSortByNullableSortByNullableDescendingThenByNullableThenByNullableDescendingGroupValByresultSelectorFunc`3JoinouterSourceinnerSourceouterKeySelectorinnerKeySelectorTOuterTInnerGroupJoinLeftOuterJoinRunQueryAsValueRunQueryAsEnumerableRunQueryAsQueryableIQueryableRunTMeasure1TMeasure2TMeasureAssemblyNameassemblyNameget_AssemblyNameCommentTextcommentTextget_CommentTextFilePathLineColumnfilePathlinecolumnget_FilePathset_FilePathget_Lineset_Lineget_Columnset_ColumnSuppressRelocateIsErasedResolutionFolderRuntimeAssemblyReferencedAssembliesTemporaryFolderIsInvalidationSupportedIsHostedExecutionSystemRuntimeAssemblyVersionsystemRuntimeContainsTyperesolutionFolderruntimeAssemblyreferencedAssembliestemporaryFolderisInvalidationSupporteduseResolutionFolderAtRuntimesystemRuntimeAssemblyVersionget_ResolutionFolderset_ResolutionFolderget_RuntimeAssemblyset_RuntimeAssemblyget_ReferencedAssembliesset_ReferencedAssembliesget_TemporaryFolderset_TemporaryFolderget_IsInvalidationSupportedset_IsInvalidationSupportedget_IsHostedExecutionset_IsHostedExecutionget_SystemRuntimeAssemblyVersionset_SystemRuntimeAssemblyVersionSystemRuntimeContainsTypetypeNameNamespaceNameget_NamespaceNameGetNestedNamespacesGetTypesResolveTypeNameEventHandlerInvalidateGetNamespacesGetStaticParameterstypeWithoutArgumentsApplyStaticArgumentstypePathWithArgumentsstaticArgumentsGetInvokerExpressionsyntheticMethodBaseadd_Invalidateremove_InvalidateGetGeneratedAssemblyContentsBuildMachinePrivateBuildOfficialBuildFxBranchSyncCounterValueBranchNameBranchNamePrefixProductBuildOfAssemblyOfFileDefaultAsyncBuilderqueryCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWriterSystem.IOTextWritertextWriterPrintFormatLineToTextWriterConsoleget_OutPrintFormatget_ErrorPrintFormatToErrorPrintFormatLinePrintFormatLineToErrorget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazyPatterninputget_querykeysarrayIndex_arg2DefaultAsyncBuilder@157query@197init@thisImplicitExpressionConversionHelperMethodInfoNTty@442-30FT1ty@442-31FT2ty@442-32boolTyIEnumerableTypeDefty@442-33IQueryableTypeDefty@442-34QuerySourceTypeDefty@442-35patternInput@369MakeContainsCallContainspatternInput@374-1MakeElementAtCallElementAtpatternInput@401-2MakeMinByCallMinBypatternInput@407-3MakeMaxByCallMaxBypatternInput@412-4MakeMinByNullableCallMinByNullablepatternInput@418-5MakeMaxByNullableCallMaxByNullablepatternInput@445-6MakeAnyCallAnypatternInput@450-7MakeAllCallAllpatternInput@455-8MakeFirstFindCallFirstFindpatternInput@552-9FQ_double@553RuntimeMethodHandleFQ_single@554FQ_decimal@555FQ_int32@556FQ_int64@557FE_double@558FE_single@559FE_decimal@560FE_int32@561FE_int64@562FE@563MakeAverageByCallAverageBypatternInput@566-10FQ_double@567-1FQ_single@568-1FQ_decimal@569-1FQ_int32@570-1FQ_int64@571-1FE_double@572-1FE_single@573-1FE_decimal@574-1FE_int32@575-1FE_int64@576-1FE@577-1MakeAverageByNullableCallAverageByNullablepatternInput@581-11FQ_double@582-2FQ_single@583-2FQ_decimal@584-2FQ_int32@585-2FQ_int64@586-2FE_double@587-2FE_single@588-2FE_decimal@589-2FE_int32@590-2FE_int64@591-2FE@592-2MakeSumByCallSumBypatternInput@595-12FQ_double@596-3FQ_single@597-3FQ_decimal@598-3FQ_int32@599-3FQ_int64@600-3FE_double@601-3FE_single@602-3FE_decimal@603-3FE_int32@604-3FE_int64@605-3FE@606-3MakeSumByNullableCallSumByNullablepatternInput@620-13MakeFirstCallFirstpatternInput@621-14MakeFirstOrDefaultCallFirstOrDefaultpatternInput@622-15MakeLastCallLastpatternInput@623-16MakeLastOrDefaultCallLastOrDefaultpatternInput@624-17MakeSingleCallSinglepatternInput@625-18MakeSingleOrDefaultCallSingleOrDefaultpatternInput@626-19MakeCountCallCountMakeDefaultIfEmptyMakeSelectFQ@638FE@639-4MakeAppendFQ@659-1FE@660-5MakeAsQueryableF@668MakeEnumerableEmptyF@673-1MakeSelectManyFQ@682-2FE@683-6MakeWhereFQ@699-3FE@700-7MakeOrderByMakeOrderByDescendingMakeThenByMakeThenByDescendingMakeOrderByNullableMakeOrderByNullableDescendingMakeThenByNullableMakeThenByNullableDescendingMakeSkipMakeTakeMakeSkipWhileMakeTakeWhileMakeDistinctFQ@788-4FE@789-8MakeGroupByFQ@797-5FE@798-9MakeGroupValByFQ@811-6FE@812-10MakeJoinFQ@841-7FE@842-11MakeGroupJoinFQ@859-8FE@860-12|CallQueryBuilderRunQueryable|_||CallQueryBuilderRunValue|_||CallQueryBuilderRunEnumerable|_||CallQueryBuilderFor|_||CallQueryBuilderYield|_||CallQueryBuilderYieldFrom|_||CallQueryBuilderZero|_||CallQueryBuilderSourceIQueryable|_||CallQueryBuilderSourceIEnumerable|_||CallSortBy|_||CallSortByDescending|_||CallThenBy|_||CallThenByDescending|_||CallSortByNullable|_||CallSortByNullableDescending|_||CallThenByNullable|_||CallThenByNullableDescending|_||CallGroupBy|_||CallGroupValBy|_||CallMinBy|_||CallMaxBy|_||CallMinByNullable|_||CallMaxByNullable|_||CallWhere|_||CallHeadOrDefault|_||CallLast|_||CallLastOrDefault|_||CallExactlyOne|_||CallExactlyOneOrDefault|_||CallSelect|_||CallExists|_||CallForAll|_||CallDistinct|_||CallTake|_||CallTakeWhile|_||CallContains|_||CallNth|_||CallSkip|_||CallSkipWhile|_||CallJoin|_||CallGroupJoin|_||CallLeftOuterJoin|_||CallAverageBy|_||CallSumBy|_||CallAverageByNullable|_||CallSumByNullable|_||CallCount|_||CallHead|_||CallFind|_|GetGetMethod|Getter|_|prop|SpecificCall1|_||SpecificCall2|_||SpecificCall3|_|stripSuccessiveProjLets@249-1pexpr|LambdaNoDetupling|_|lamrestoreTupleProjectionsprojsloop@265-41rvsrprojs|LambdasNoDetupling|_|inpExprGetMethodFromHandleCallGenericStaticMethodmethHandleCallGenericInstanceMethodget_IsGenericMethodGetGenericMethodDefinitionBindGenericStaticMethodmethInfotyargsMakeGenericStaticMethodMakeGenericInstanceMethodget_ImplicitExpressionConversionHelperMethodInfoMakeImplicitExpressionConversionget_NTget_ty@442-30get_FT1get_ty@442-31get_FT2get_ty@442-32Booleanget_boolTyget_IEnumerableTypeDefget_ty@442-33get_IQueryableTypeDefget_ty@442-34get_QuerySourceTypeDefget_ty@442-35IsQuerySourceTytyIsIQueryableTyGetFuncTypeFuncExprToDelegateExprsrcTytargetTyMakersCallersInstanceFMakersCallers2FQFEMake@356MQMEisIQsrcItemTysrcCall@363CQCEMakeOrCallContainsOrElementAtget_patternInput@369get_MakeContainsget_CallContainsget_patternInput@374-1get_MakeElementAtget_CallElementAtMake@381-1valSelectorCall@392-1_keyItemTykeyElemTyMakeOrCallMinByOrMaxBygget_patternInput@401-2get_MakeMinByget_CallMinByget_patternInput@407-3get_MakeMaxByget_CallMaxByget_patternInput@412-4get_MakeMinByNullableget_CallMinByNullableget_patternInput@418-5get_MakeMaxByNullableget_CallMaxByNullableMake@426-2Call@436-2MakeOrCallAnyOrAllOrFirstFindget_patternInput@445-6get_MakeAnyget_CallAnyget_patternInput@450-7get_MakeAllget_CallAllget_patternInput@455-8get_MakeFirstFindget_CallFirstFindfailDueToUnsupportedInputTypeInSumByOrAverageBy@469unitVar0jInt64GetConstructorsMake$cont@495me_int32me_int64qbresTyNoNullableselectorGetGenericArgumentsDoubleMake@471-3isNullablemq_doubleme_doublemq_singleme_singlemq_decimalme_decimalmq_int32mq_int64TargetInvocationExceptionget_InnerExceptionCall$cont@524ce_doublece_singlece_decimalce_int32ce_int64resTyCall@510-3cq_doublecq_singlecq_decimalcq_int32cq_int64MakeOrCallAverageByOrSumByGenericfq_doublefq_singlefq_decimalfq_int32fq_int64fe_doublefe_singlefe_decimalfe_int32fe_int64hget_patternInput@552-9get_FQ_double@553get_FQ_single@554get_FQ_decimal@555get_FQ_int32@556get_FQ_int64@557get_FE_double@558get_FE_single@559get_FE_decimal@560get_FE_int32@561get_FE_int64@562get_FE@563get_MakeAverageByget_CallAverageByget_patternInput@566-10get_FQ_double@567-1get_FQ_single@568-1get_FQ_decimal@569-1get_FQ_int32@570-1get_FQ_int64@571-1get_FE_double@572-1get_FE_single@573-1get_FE_decimal@574-1get_FE_int32@575-1get_FE_int64@576-1get_FE@577-1get_MakeAverageByNullableget_CallAverageByNullableget_patternInput@581-11get_FQ_double@582-2get_FQ_single@583-2get_FQ_decimal@584-2get_FQ_int32@585-2get_FQ_int64@586-2get_FE_double@587-2get_FE_single@588-2get_FE_decimal@589-2get_FE_int32@590-2get_FE_int64@591-2get_FE@592-2get_MakeSumByget_CallSumByget_patternInput@595-12get_FQ_double@596-3get_FQ_single@597-3get_FQ_decimal@598-3get_FQ_int32@599-3get_FQ_int64@600-3get_FE_double@601-3get_FE_single@602-3get_FE_decimal@603-3get_FE_int32@604-3get_FE_int64@605-3get_FE@606-3get_MakeSumByNullableget_CallSumByNullableMake@611-4Call@616-4tupledArgMakeOrCallSimpleOpget_patternInput@620-13get_MakeFirstget_CallFirstget_patternInput@621-14get_MakeFirstOrDefaultget_CallFirstOrDefaultget_patternInput@622-15get_MakeLastget_CallLastget_patternInput@623-16get_MakeLastOrDefaultget_CallLastOrDefaultget_patternInput@624-17get_MakeSingleget_CallSingleget_patternInput@625-18get_MakeSingleOrDefaultget_CallSingleOrDefaultget_patternInput@626-19get_MakeCountget_CallCountget_MakeDefaultIfEmptyget_MakeSelectget_FQ@638get_FE@639-4get_MakeAppendget_FQ@659-1get_FE@660-5get_MakeAsQueryableget_F@668get_MakeEnumerableEmptyget_F@673-1get_MakeSelectManyget_FQ@682-2get_FE@683-6get_MakeWhereget_FQ@699-3get_FE@700-7MakeOrderByOrThenByget_MakeOrderByget_MakeOrderByDescendingget_MakeThenByget_MakeThenByDescendingget_MakeOrderByNullableget_MakeOrderByNullableDescendingget_MakeThenByNullableget_MakeThenByNullableDescendingGenMakeSkipWhileOrTakeWhileMakeSkipOrTakeget_MakeSkipget_MakeTakeget_MakeSkipWhileget_MakeTakeWhileget_MakeDistinctget_FQ@788-4get_FE@789-8get_MakeGroupByget_FQ@797-5get_FE@798-9get_MakeGroupValByget_FQ@811-6get_FE@812-10get_MakeJoinget_FQ@841-7get_FE@842-11get_MakeGroupJoinget_FQ@859-8get_FE@860-12walk@876-1RewriteExpr|LetExprReduction|_|get_IsValueType|MacroReduction|_|$cont@897-1|MacroReduction|_|$cont@897|MacroReduction|_|MacroExpandget_|CallQueryBuilderRunQueryable|_|get_|CallQueryBuilderRunValue|_|get_|CallQueryBuilderRunEnumerable|_|get_|CallQueryBuilderFor|_|get_|CallQueryBuilderYield|_|get_|CallQueryBuilderYieldFrom|_|get_|CallQueryBuilderZero|_|get_|CallQueryBuilderSourceIQueryable|_|get_|CallQueryBuilderSourceIEnumerable|_|get_|CallSortBy|_|get_|CallSortByDescending|_|get_|CallThenBy|_|get_|CallThenByDescending|_|get_|CallSortByNullable|_|get_|CallSortByNullableDescending|_|get_|CallThenByNullable|_|get_|CallThenByNullableDescending|_|get_|CallGroupBy|_|get_|CallGroupValBy|_|get_|CallMinBy|_|get_|CallMaxBy|_|get_|CallMinByNullable|_|get_|CallMaxByNullable|_|get_|CallWhere|_|get_|CallHeadOrDefault|_|get_|CallLast|_|get_|CallLastOrDefault|_|get_|CallExactlyOne|_|get_|CallExactlyOneOrDefault|_|get_|CallSelect|_|get_|CallExists|_|get_|CallForAll|_|get_|CallDistinct|_|get_|CallTake|_|get_|CallTakeWhile|_|get_|CallContains|_|get_|CallNth|_|get_|CallSkip|_|get_|CallSkipWhile|_|get_|CallJoin|_|get_|CallGroupJoin|_|get_|CallLeftOuterJoin|_|get_|CallAverageBy|_|get_|CallSumBy|_|get_|CallAverageByNullable|_|get_|CallSumByNullable|_|get_|CallCount|_|get_|CallHead|_|get_|CallFind|_||ZeroOnElseBranch|_|GetPropertyConvMutableToImmutableconvmutExprConvertImmutableConsumerToMutableConsumerimmutConsumingVarimmutConsumingExpr|AnyNestedQuery|_||EnumerableNestedQuery|_|CommitTransInnerResultTransFor@1154canElimqTyimmutSelectorVarimmutResElemTysourceConvmutSourceimmutSelectorget_RestTransInner$cont@1325immutOuterSourceimmutOuterResultGroupVarimmutOuterKeyVarimmutOuterKeySelectorimmutInnerSourceimmutInnerResultKeyVarimmutInnerKeyVarimmutInnerKeySelectorimmutElementSelectorTransInner$cont@1336-1immutInnerResultGroupVarTransInner$cont@1350-2immutInnerSourceTyTransInner$cont@1134-5immutQueryTransInner$cont@1134-4TransInner$cont@1134-3TransInnerTransInnerAndCommitIsAssignableFromTransInnerNoCheckTransJoinInputsTransInnerApplicativeTransInnerApplicativeAndCommitTransInnerWithFinalConsumeimmutSourceTransNestedInnerWithConsumerTransNestedOuterquotEliminateNestedQueriesEvalNonNestedInnerqueryProducingSequenceEvalNonNestedOutertm|CallQ|_|clo1self2@YesNoarg00v2vslist1list2tabwalkimmutConsumingVarReplacementExprIsSelectIsOtherIsSourceNewSelectget_IsSelectNewOtherget_IsOtherNewSourceget_IsSourceisQTymutSelectorVarmutSelectorBodycheckThenBySourceImplicitExpressionConversionHelperMethodInfo@310NT@317FT1@318FT2@319IEnumerableTypeDef@325IQueryableTypeDef@326QuerySourceTypeDef@327MakeContains@369CallContains@369MakeElementAt@374CallElementAt@374MakeMinBy@401CallMinBy@401MakeMaxBy@407CallMaxBy@407MakeMinByNullable@412CallMinByNullable@412MakeMaxByNullable@418CallMaxByNullable@418MakeAny@445CallAny@445MakeAll@450CallAll@450MakeFirstFind@455CallFirstFind@455MakeAverageBy@552CallAverageBy@552MakeAverageByNullable@566CallAverageByNullable@566MakeSumBy@581CallSumBy@581MakeSumByNullable@595CallSumByNullable@595MakeFirst@620CallFirst@620MakeFirstOrDefault@621CallFirstOrDefault@621MakeLast@622CallLast@622MakeLastOrDefault@623CallLastOrDefault@623MakeSingle@624CallSingle@624MakeSingleOrDefault@625CallSingleOrDefault@625MakeCount@626CallCount@626MakeDefaultIfEmpty@628MakeSelect@637MakeAppend@658MakeAsQueryable@667MakeEnumerableEmpty@672MakeSelectMany@681MakeWhere@698MakeOrderBy@723MakeOrderByDescending@728MakeThenBy@733MakeThenByDescending@738MakeOrderByNullable@744MakeOrderByNullableDescending@745MakeThenByNullable@746MakeThenByNullableDescending@747MakeSkip@771MakeTake@775MakeSkipWhile@779MakeTakeWhile@783MakeDistinct@787MakeGroupBy@796MakeGroupValBy@810MakeJoin@840MakeGroupJoin@858|CallQueryBuilderRunQueryable|_|@944|CallQueryBuilderRunValue|_|@945|CallQueryBuilderRunEnumerable|_|@946|CallQueryBuilderFor|_|@947|CallQueryBuilderYield|_|@948|CallQueryBuilderYieldFrom|_|@949|CallQueryBuilderZero|_|@950|CallQueryBuilderSourceIQueryable|_|@951|CallQueryBuilderSourceIEnumerable|_|@952|CallSortBy|_|@954|CallSortByDescending|_|@955|CallThenBy|_|@956|CallThenByDescending|_|@957|CallSortByNullable|_|@959|CallSortByNullableDescending|_|@960|CallThenByNullable|_|@961|CallThenByNullableDescending|_|@962|CallGroupBy|_|@964|CallGroupValBy|_|@965|CallMinBy|_|@966|CallMaxBy|_|@967|CallMinByNullable|_|@968|CallMaxByNullable|_|@969|CallWhere|_|@970|CallHeadOrDefault|_|@971|CallLast|_|@972|CallLastOrDefault|_|@973|CallExactlyOne|_|@974|CallExactlyOneOrDefault|_|@975|CallSelect|_|@976|CallExists|_|@977|CallForAll|_|@978|CallDistinct|_|@979|CallTake|_|@980|CallTakeWhile|_|@981|CallContains|_|@982|CallNth|_|@983|CallSkip|_|@984|CallSkipWhile|_|@985|CallJoin|_|@989|CallGroupJoin|_|@990|CallLeftOuterJoin|_|@991|CallAverageBy|_|@992|CallSumBy|_|@993|CallAverageByNullable|_|@995|CallSumByNullable|_|@996|CallCount|_|@998|CallHead|_|@999|CallFind|_|@1000QueryableExpression`1SumDefaultIfEmptyAsQueryableSelectManyIOrderedQueryable`1get_MethodHandleelementSelectorisPartiallyImmutableRecordMemberInitializationHelperMethNewAnonymousObjectHelperMethtupleTypesty@442-14ty@442-15ty@442-16ty@442-17ty@442-18ty@442-19ty@442-20ty@442-21ty@442-22ty@442-23ty@442-24ty@442-25ty@442-26ty@442-27ty@442-28ty@442-29anonObjectTypesarray@146len@148res@149-1tupleToAnonTypeMapt@132anonToTupleTypeMapt@137-1IsNewAnonymousObjectHelperQmhandle@246minfo@247gmd@248System.Collections.ConcurrentConcurrentDictionary`2memoizeget_isPartiallyImmutableRecordget_MemberInitializationHelperMethget_NewAnonymousObjectHelperMethleftSequentialSeries@87|LeftSequentialSeries|propSetList@97varArg|PropSetList|_|list|ObjectConstruction|_|get_tupleTypesget_ty@442-14get_ty@442-15get_ty@442-16get_ty@442-17get_ty@442-18get_ty@442-19get_ty@442-20get_ty@442-21get_ty@442-22get_ty@442-23get_ty@442-24get_ty@442-25get_ty@442-26get_ty@442-27get_ty@442-28get_ty@442-29get_anonObjectTypesget_array@146get_len@148get_res@149-1get_tupleToAnonTypeMapget_t@132get_anonToTupleTypeMapget_t@137-1|NewAnonymousObject|_|OneNewAnonymousObjectNewAnonymousObjectIFormattablewalk@171instnewTypeAnonymousObjectGetRewriteTupleType|RecordFieldGetSimplification|_|ConvImmutableTypeToMutableTypeget_IsNewAnonymousObjectHelperQget_mhandle@246get_minfo@247get_gmd@248CleanupLeafSimplifyConsumingExprProduceMoreMutablestipfMakeSeqConvSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-Equalsyget_CanWritetpropInfoIsTupleConvIsRecordConvIsGroupingConvIsSeqConvNoConvIsNoConv_unique_NoConvNewTupleConvget_IsTupleConvNewRecordConvget_IsRecordConvNewGroupingConvget_IsGroupingConvNewSeqConvget_IsSeqConvget_NoConvget_IsNoConvmappingconvsget_PropertyTypeisPartiallyImmutableRecord@67MemberInitializationHelperMeth@72NewAnonymousObjectHelperMeth@77tupleTypes@121anonObjectTypes@130res@149tupleToAnonTypeMap@131anonToTupleTypeMap@136IsNewAnonymousObjectHelperQ@245instanceBindingFlagsStringConcatshowAllNullableConstructorty@442-13|GenericEqualityQ|_||EqualsQ|_||GreaterQ|_||GreaterEqQ|_||LessQ|_||LessEqQ|_||NotEqQ|_||NullableEqualsQ|_||NullableNotEqQ|_||NullableGreaterQ|_||NullableGreaterEqQ|_||NullableLessQ|_||NullableLessEqQ|_||NullableEqualsNullableQ|_||NullableNotEqNullableQ|_||NullableGreaterNullableQ|_||NullableGreaterEqNullableQ|_||NullableLessNullableQ|_||NullableLessEqNullableQ|_||EqualsNullableQ|_||NotEqNullableQ|_||GreaterNullableQ|_||GreaterEqNullableQ|_||LessNullableQ|_||LessEqNullableQ|_||MakeDecimalQ|_||NullablePlusQ|_||NullablePlusNullableQ|_||PlusNullableQ|_||NullableMinusQ|_||NullableMinusNullableQ|_||MinusNullableQ|_||NullableMultiplyQ|_||NullableMultiplyNullableQ|_||MultiplyNullableQ|_||NullableDivideQ|_||NullableDivideNullableQ|_||DivideNullableQ|_||NullableModuloQ|_||NullableModuloNullableQ|_||ModuloNullableQ|_||NotQ|_||NegQ|_||PlusQ|_||DivideQ|_||MinusQ|_||MultiplyQ|_||ModuloQ|_||ShiftLeftQ|_||ShiftRightQ|_||BitwiseAndQ|_||BitwiseOrQ|_||BitwiseXorQ|_||BitwiseNotQ|_||CheckedNeg|_||CheckedPlusQ|_||CheckedMinusQ|_||CheckedMultiplyQ|_||ConvCharQ|_||ConvDecimalQ|_||ConvFloatQ|_||ConvFloat32Q|_||ConvSByteQ|_||ConvInt16Q|_||ConvInt32Q|_||ConvIntQ|_||ConvInt64Q|_||ConvByteQ|_||ConvUInt16Q|_||ConvUInt32Q|_||ConvUInt64Q|_||ConvNullableCharQ|_||ConvNullableDecimalQ|_||ConvNullableFloatQ|_||ConvNullableFloat32Q|_||ConvNullableSByteQ|_||ConvNullableInt16Q|_||ConvNullableInt32Q|_||ConvNullableIntQ|_||ConvNullableInt64Q|_||ConvNullableByteQ|_||ConvNullableUInt16Q|_||ConvNullableUInt32Q|_||ConvNullableUInt64Q|_||UnboxGeneric|_||TypeTestGeneric|_||CheckedConvCharQ|_||CheckedConvSByteQ|_||CheckedConvInt16Q|_||CheckedConvInt32Q|_||CheckedConvInt64Q|_||CheckedConvByteQ|_||CheckedConvUInt16Q|_||CheckedConvUInt32Q|_||CheckedConvUInt64Q|_||ImplicitExpressionConversionHelperQ|_||MemberInitializationHelperQ|_||NewAnonymousObjectHelperQ|_||ArrayLookupQ|_|substHelperMethMemberInitializationHelper_xNewAnonymousObjectHelperImplicitExpressionConversionHelperget_bindingFlagsget_instanceBindingFlagsget_IsArrayget_IsByRefget_IsPointerisNamedTypeequivHeadTypesty1ty2getFunctionTypeget_StringConcatSubstHelperget_showAllget_NullableConstructorget_ty@442-13|SpecificCallToMethod|_|mhandleget_|GenericEqualityQ|_|get_|EqualsQ|_|get_|GreaterQ|_|get_|GreaterEqQ|_|get_|LessQ|_|get_|LessEqQ|_|get_|NotEqQ|_|get_|NullableEqualsQ|_|get_|NullableNotEqQ|_|get_|NullableGreaterQ|_|get_|NullableGreaterEqQ|_|get_|NullableLessQ|_|get_|NullableLessEqQ|_|get_|NullableEqualsNullableQ|_|get_|NullableNotEqNullableQ|_|get_|NullableGreaterNullableQ|_|get_|NullableGreaterEqNullableQ|_|get_|NullableLessNullableQ|_|get_|NullableLessEqNullableQ|_|get_|EqualsNullableQ|_|get_|NotEqNullableQ|_|get_|GreaterNullableQ|_|get_|GreaterEqNullableQ|_|get_|LessNullableQ|_|get_|LessEqNullableQ|_|get_|MakeDecimalQ|_|get_|NullablePlusQ|_|get_|NullablePlusNullableQ|_|get_|PlusNullableQ|_|get_|NullableMinusQ|_|get_|NullableMinusNullableQ|_|get_|MinusNullableQ|_|get_|NullableMultiplyQ|_|get_|NullableMultiplyNullableQ|_|get_|MultiplyNullableQ|_|get_|NullableDivideQ|_|get_|NullableDivideNullableQ|_|get_|DivideNullableQ|_|get_|NullableModuloQ|_|get_|NullableModuloNullableQ|_|get_|ModuloNullableQ|_|get_|NotQ|_|get_|NegQ|_|get_|PlusQ|_|get_|DivideQ|_|get_|MinusQ|_|get_|MultiplyQ|_|get_|ModuloQ|_|get_|ShiftLeftQ|_|get_|ShiftRightQ|_|get_|BitwiseAndQ|_|get_|BitwiseOrQ|_|get_|BitwiseXorQ|_|get_|BitwiseNotQ|_|get_|CheckedNeg|_|get_|CheckedPlusQ|_|get_|CheckedMinusQ|_|get_|CheckedMultiplyQ|_|get_|ConvCharQ|_|get_|ConvDecimalQ|_|get_|ConvFloatQ|_|get_|ConvFloat32Q|_|get_|ConvSByteQ|_|get_|ConvInt16Q|_|get_|ConvInt32Q|_|get_|ConvIntQ|_|get_|ConvInt64Q|_|get_|ConvByteQ|_|get_|ConvUInt16Q|_|get_|ConvUInt32Q|_|get_|ConvUInt64Q|_|get_|ConvNullableCharQ|_|get_|ConvNullableDecimalQ|_|get_|ConvNullableFloatQ|_|get_|ConvNullableFloat32Q|_|get_|ConvNullableSByteQ|_|get_|ConvNullableInt16Q|_|get_|ConvNullableInt32Q|_|get_|ConvNullableIntQ|_|get_|ConvNullableInt64Q|_|get_|ConvNullableByteQ|_|get_|ConvNullableUInt16Q|_|get_|ConvNullableUInt32Q|_|get_|ConvNullableUInt64Q|_|get_|UnboxGeneric|_|get_|TypeTestGeneric|_|get_|CheckedConvCharQ|_|get_|CheckedConvSByteQ|_|get_|CheckedConvInt16Q|_|get_|CheckedConvInt32Q|_|get_|CheckedConvInt64Q|_|get_|CheckedConvByteQ|_|get_|CheckedConvUInt16Q|_|get_|CheckedConvUInt32Q|_|get_|CheckedConvUInt64Q|_|get_|ImplicitExpressionConversionHelperQ|_|get_|MemberInitializationHelperQ|_|get_|NewAnonymousObjectHelperQ|_|get_|ArrayLookupQ|_|get_substHelperMeth|Sequentials||MemberInitializationQ|_||NewAnonymousObjectQ|_||NullableConstruction|_|PropertyMemberExpressionbuild@432argPNewNewExpressionbuild@703-1argsPKeyNotFoundExceptionAndAlsoOrElseConstantConstantExpressionTypeAsUnaryExpressionTypeIsTypeBinaryExpressionget_BaseTypeMethodCallExpressionMemberInitMemberInitExpressionGetPropertiesNotNegateDivideSubtractMultiplyModuloLeftShiftRightShiftAndOrExclusiveOrNegateCheckedAddCheckedSubtractCheckedMultiplyCheckedConvertCharSByteInt16ByteUInt16UInt32UInt64ConvertCheckedArrayIndexNewArrayInitNewArrayExpressionEqualLambdaExpressionConditionConditionalExpressionConvExprToLinqInContextenvinptransBinOpaddConvertLeftx1x2addConvertRightexprErasedConstructorConvObjArgobjOptcoerceToConvExprsToLinqesParameterConvVarToLinqQuotationToExpressionQuotationToLambdaExpressionCompileEvaluateQuotationvarEnvvarEnv@get_varEnvminfoisg1gmdMemberAssignmentpropInfospropsNotEqualGreaterThanGreaterThanOrEqualLessThanLessThanOrEqualtablevPfvfvsToInt16ToUInt16ToIntToEnumToInt32ToUInt32ToInt64ToUInt64IntPtrToIntPtrUIntPtrToUIntPtrToDecimalToCharop_QmarkGreaterEqualsop_QmarkGreaterop_QmarkLessEqualsop_QmarkLessop_QmarkEqualsop_QmarkLessGreaterop_GreaterEqualsQmarkop_GreaterQmarkop_LessEqualsQmarkop_LessQmarkop_EqualsQmarkop_LessGreaterQmarkop_QmarkGreaterEqualsQmarkop_QmarkGreaterQmarkop_QmarkLessEqualsQmarkop_QmarkLessQmarkop_QmarkEqualsQmarkop_QmarkLessGreaterQmarkop_QmarkPlusop_PlusQmarkop_QmarkPlusQmarkop_QmarkMinusop_MinusQmarkop_QmarkMinusQmarkop_QmarkMultiplyop_MultiplyQmarkop_QmarkMultiplyQmarkop_QmarkPercentop_PercentQmarkop_QmarkPercentQmarkop_QmarkDivideop_DivideQmarkop_QmarkDivideQmarkStringConcat@191NullableConstructor@202|GenericEqualityQ|_|@221|EqualsQ|_|@222|GreaterQ|_|@223|GreaterEqQ|_|@224|LessQ|_|@225|LessEqQ|_|@226|NotEqQ|_|@227|NullableEqualsQ|_|@229|NullableNotEqQ|_|@230|NullableGreaterQ|_|@231|NullableGreaterEqQ|_|@232|NullableLessQ|_|@233|NullableLessEqQ|_|@234|NullableEqualsNullableQ|_|@236|NullableNotEqNullableQ|_|@237|NullableGreaterNullableQ|_|@238|NullableGreaterEqNullableQ|_|@239|NullableLessNullableQ|_|@240|NullableLessEqNullableQ|_|@241|EqualsNullableQ|_|@243|NotEqNullableQ|_|@244|GreaterNullableQ|_|@245|GreaterEqNullableQ|_|@246|LessNullableQ|_|@247|LessEqNullableQ|_|@248|MakeDecimalQ|_|@250|NullablePlusQ|_|@253|NullablePlusNullableQ|_|@254|PlusNullableQ|_|@255|NullableMinusQ|_|@257|NullableMinusNullableQ|_|@258|MinusNullableQ|_|@259|NullableMultiplyQ|_|@261|NullableMultiplyNullableQ|_|@262|MultiplyNullableQ|_|@263|NullableDivideQ|_|@265|NullableDivideNullableQ|_|@266|DivideNullableQ|_|@267|NullableModuloQ|_|@269|NullableModuloNullableQ|_|@270|ModuloNullableQ|_|@271|NotQ|_|@273|NegQ|_|@274|PlusQ|_|@275|DivideQ|_|@276|MinusQ|_|@277|MultiplyQ|_|@278|ModuloQ|_|@279|ShiftLeftQ|_|@280|ShiftRightQ|_|@281|BitwiseAndQ|_|@282|BitwiseOrQ|_|@283|BitwiseXorQ|_|@284|BitwiseNotQ|_|@285|CheckedNeg|_|@286|CheckedPlusQ|_|@287|CheckedMinusQ|_|@288|CheckedMultiplyQ|_|@289|ConvCharQ|_|@291|ConvDecimalQ|_|@292|ConvFloatQ|_|@293|ConvFloat32Q|_|@294|ConvSByteQ|_|@295|ConvInt16Q|_|@296|ConvInt32Q|_|@297|ConvIntQ|_|@298|ConvInt64Q|_|@299|ConvByteQ|_|@300|ConvUInt16Q|_|@301|ConvUInt32Q|_|@302|ConvUInt64Q|_|@303|ConvNullableCharQ|_|@305|ConvNullableDecimalQ|_|@306|ConvNullableFloatQ|_|@307|ConvNullableFloat32Q|_|@308|ConvNullableSByteQ|_|@309|ConvNullableInt16Q|_|@310|ConvNullableInt32Q|_|@311|ConvNullableIntQ|_|@312|ConvNullableInt64Q|_|@313|ConvNullableByteQ|_|@314|ConvNullableUInt16Q|_|@315|ConvNullableUInt32Q|_|@316|ConvNullableUInt64Q|_|@317|UnboxGeneric|_|@323|TypeTestGeneric|_|@324|CheckedConvCharQ|_|@325|CheckedConvSByteQ|_|@326|CheckedConvInt16Q|_|@327|CheckedConvInt32Q|_|@328|CheckedConvInt64Q|_|@329|CheckedConvByteQ|_|@330|CheckedConvUInt16Q|_|@331|CheckedConvUInt32Q|_|@332|CheckedConvUInt64Q|_|@333|ImplicitExpressionConversionHelperQ|_|@334|MemberInitializationHelperQ|_|@335|NewAnonymousObjectHelperQ|_|@336|ArrayLookupQ|_|@337substHelperMeth@340succeed@2442choosercollectorSubscribePairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNexterrorCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedOnCompletedOnErrorwSystem-IObservable`1-SubscribelastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2start@2010-2awaitEithera1a2msecNewOkNewErrorNewCanceledocearg0_arg3AsyncGetResponseWebRequestAsyncDownloadStringWebClientUriaddresscanceledWebExceptionget_StatusWebExceptionStatusreqBeginGetResponseEndGetResponseAbortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg5downloadAsyncAsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteWaitHandle.AsyncWaitOneAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamExceptionBeginWriteEndWriteObjectDisposedExceptionaiarTaskget_IsCanceleddisposeReg@1224barrierregTaskCompletionSource`1ActionRegisterget_TaskProceedisStoppedget_ProceedStoptcsSetCanceledTrySetExceptionTrySetResultasyncget_asyncswitchToswitchToNewThreadswitchToThreadPoolpostOrQueuedelimitSyncContextprotectedPrimitiveWithResyncunprotectedPrimitiveWithResyncManualResetEventresEventf@4244-10f@4244-11get_ResultAvailableEventWaitHandlesavedContsf@4244-12f@4244-13matchValueInterlockedCompareExchangelatchDothreadget_CurrentThreadContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultreuseThreadWaitOnedefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutget_threadStartCallbackForStartThreadWithTrampolinestartAsyncqueueAsyncget_IsCancellationRequestedprotectedPrimitiveCoreprotectedPrimitivereifyresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsOkIsCanceledget_IsOkcexndefaultCancellationTokenSource@561threadStartCallbackForStartThreadWithTrampoline@672doneA@828async@877loop@419-40once@1263underCurrentThreadStackcontToTailCallfinishTask@1340firstExnresultsremainingf@4244-14recordSuccess@1352f@4244-15recordFailure@1362onCancel@1625oncebeginAction@1772onCancel@1783-2delcontinuation@1891completedTaskf@4244-16f@4244-17scan@2149timeoutAsynctimeoutCtsscanNoTimeout@2181processFirstArrival@2215processFirstArrival@2230-3savedCConttimerTimerregistrationdueTimeTimerCallbackrwhRegisteredWaitHandleUnregistertimeOuttimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg8_arg9ar_arg4eventArgsctsReferrget_IsFaultedget_ExceptionContinueWithTaskContinuationOptions_arg6_arg7replyasyncReplyOfNativeIntInlinedToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1838-39ShapePatternBoolPatternStringPatternSinglePatternDoublePatternCharPatternSBytePatternBytePatternInt16PatternUInt16PatternInt32PatternUInt32PatternInt64PatternUInt64PatternUnitPatternstripSuccessiveProjLets@1707|TupledLambda|_||TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1funTyCexprTyCty@442-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@319-37xs|FrontAndBack|_|get_funTyCget_exprTyCget_ty@442-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_||Comb1|_||Comb2|_||Comb3|_|VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRcheckTypesWeakSRcheckArgsparamInfosloop@600-38checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuoteget_IsEnumToObjectmkLiftedValueOpGmkLambdavarmkTryWithe1v1e2e3mkApplicationv_0v_1mkLetRawWithCheck_arg1_0_arg1_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsemkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetmkStaticPropSetmkInstancePropSetmkInstanceMethodCallmkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionBinderParameterModifierbindMethodHelperbindModulePropertybindModuleFunctionmkNamedTypebindProppropNameretTypeargTypesGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@965l_0l_1chopinstMethngmethmethTypeArgsbindMethpinfoIsStaticdecodeFunTydecodeArrayTytysmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsu_dtypeu_dtypes|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsunpickleExprlocalTypeunpickleReflectedDefnslocalAssemblyfillHolesInRawExprfreeInExprAccbvsmkTyparSubstsubstituteInExprtmsubstReadreadToEndsget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4244-9qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializesplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20_arg19_arg20_arg21p_0p_1p_2p_3p_4_arg22_arg23_arg24_arg25x_0x_1_arg26_arg27_arg28_arg29_arg30_arg31_arg32_arg33_arg34_arg35_arg10_arg11_arg12_arg13_arg14_arg15_arg16_arg17_arg18uphase2bytesarg10@arg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qOneOrMoreRLinearqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@324-1exprTyC@325mscorlib@1108f@4244-8GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@211typeL@212o|Lambda|_|@216ucaseL@218minfoL@219cinfoL@220cinfopinfoL@221finfoL@222|NLambdas|_|@223Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueisFunctionTypedestFunTyget_instanceInvokeFlagsInvokeMemberinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitget_CharsparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureSubstringParseparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@309capturePrecisionArg@337precisioncapture1unboxAsInt64unboxAsUInt64op_GreaterThanOrEqualIsNaNformatOne$cont@463formatOne$cont@430-1formatOne$cont@484-2xobjformatOneoutaIsSurrogatePairgo@523-3finalizerun@521initializecapture@540gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@176invariantCulture@267defaultInfo@288chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@555-7stacknextpushBreaksavingpopBreakforceBreakfitLeaf@501maxWidthlayouttextWidthbreaksfit@478leafFormattersquashToaddText@560rstrstextnewLine@563addL@570optsz_0z_1showLnewLine@606-1chanaddL@613-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@734-6conv@735countNodes@787stopShort@788objL@791showModedepthLimprecsameObjL@792IndexOfLastIndexOfobjWithReprL@794showMode@794recdAtomicTupleL@876bracketIfL@882basicLproject2@964n1n2b1b2possibleKeyValueL@981objLworditemL@893-2project@903-1get_RankGetLowerBoundGetLengthGetInterfacesSortreprL@885showMode@885-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowAllIsShowAllShowTopLevelBindingIsShowTopLevelBinding_unique_ShowAll_unique_ShowTopLevelBindingget_ShowAllget_IsShowAllget_ShowTopLevelBindingget_IsShowTopLevelBindingarg10itSystem-Collections-IComparer-ComparenDepthIsDigitoptionty@442-10ty@442-11get_optionget_ty@442-10get_funcget_ty@442-11isListTypeIsTupleTypeIsFunctionTypeIsRecordTypeIsSumTypeUnitTypeIsUnitTypeIsObjectType_unique_UnitTypeNewTupleTypeget_IsTupleTypeNewFunctionTypeget_IsFunctionTypeNewRecordTypeget_IsRecordTypeNewSumTypeget_IsSumTypeget_UnitTypeget_IsUnitTypeNewObjectTypeget_IsObjectTypeIsTupleValueIsFunctionClosureValueIsRecordValueIsConstructorValueIsExceptionValueUnitValueIsUnitValueIsObjectValue_unique_UnitValueNewTupleValueget_IsTupleValueNewFunctionClosureValueget_IsFunctionClosureValueNewRecordValueget_IsRecordValueNewConstructorValueget_IsConstructorValueNewExceptionValueget_IsExceptionValueget_UnitValueget_IsUnitValueNewObjectValueget_IsObjectValueGetValueInfoOfObject$cont@357reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@167taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLlistLsquareBracketLbraceLconsume@199itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@134option@280-1func@281-1nullL@659measureL@660tab64tabParseget_tab64get_tabParsef@4244-5x64FromInt64DynamicFromZeroFromOneFromInt32FromInt64IsNullOrEmptyNumberStylesf@4244-6getParseFromStringDynamicFromStringtab64@296tabParse@297Microsoft-FSharp-Control-IDelegateEvent`1-AddHandlerMicrosoft-FSharp-Control-IDelegateEvent`1-RemoveHandlermidebugty@442ty@442-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagscmaNameemptyObjArraytuple1ty@442-2tuple2ty@442-3tuple3ty@442-4tuple4ty@442-5tuple5ty@442-6tuple6ty@442-7tuple7ty@442-8tuple8ty@442-9maxTupletupleEncFieldget_debugget_ty@442get_ty@442-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeget_cmaNameget_assemblyNameCustomAttributeTypedArgumentget_Constructorget_ConstructorArgumentstryFindCompilationMappingAttributeFromData$cont@101tryFindCompilationMappingAttributeFromDatafindCompilationMappingAttributeFromDataget_ReflectionOnlytryFindCompilationMappingAttributeFromTypetryFindCompilationMappingAttributeFromMemberInfofindCompilationMappingAttributeFromMemberInfoisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@185GetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@238-1isConstructorReprget@242-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@442-2get_tuple2get_ty@442-3get_tuple3get_ty@442-4get_tuple4get_ty@442-5get_tuple5get_ty@442-6get_tuple6get_ty@442-7get_tuple7get_ty@442-8get_tuple8get_ty@442-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiesgetTupleConstructorMethodgetTupleCtorreader@447getTupleReadergetTupleConstructorgetTupleConstructorInfoget@481-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@587-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41cmaName@93assemblyName@94emptyObjArray@333tuple1@338tuple2@339tuple3@340tuple4@341tuple5@342tuple6@343tuple7@344tuple8@345ensureType@825GetNamesetelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtolerancecountAuxheightget_tolerancerebalancet1t2addbalancesplitpivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1minimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackscompares1s2loop@476-35toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayget_stackget_startedloop@708-36PickFindKeyTryFindKeykvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@294foldSectionloop@314-33f@146-4loop@566-34kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@220-25loop@230-26len1Exists2loop@237-27loop@247-28ForAll2loop@253-29loop@265-30loop@304-31loop@312-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceBySortInPlaceSortWithgo@541-1FindIndexgo@553-2TryFindIndexPermuteindexMapGetSubArraystartIndexFillParallelLoopResultisChosenisTruelistschooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24sepstringsstrcheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3sourcesTCollectionfromGeneratorgo@1073CompareWithTruncateloop@1161-16loop@1174-17f@555-1windowSizeWindowedoneStepTo@1219prefixenumeratorRf@4244-2f@4244-3CacheReadOnlyDistinctByCountByenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionscreateiter@632compsouterEnumcurrInnerEnumFinishtakeOuter@667currElementtakeInner@660EnumerateUsingmkConcatSeqgetCurr@705-1currstart@708-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@466GenerateFromEnumeratorIsStopIsYieldIsGoto_unique_Stopget_Stopget_IsStopNewYieldget_IsYieldget_IsGotoApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@155choosenext@178filterunfoldgetCurrent@221uptolastOptionf@4244readAndCleargetCurr@258start@261finish@264generateWhileSomeNotStartedIsNotStartedInProcessIsInProcessFinishedIsFinished_unique_NotStarted_unique_InProcess_unique_Finishedget_NotStartedget_IsNotStartedget_InProcessget_IsInProcessget_Finishedget_IsFinishedDoMoveNextfinalIndexactiveStructuralFromFunctionSystem-Collections-Generic-IComparer`1-CompareLimitedStructurallimitReferenceFromFunctionshasherequalityhasheqBase1Base2ZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@173-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@395-15sortWithcmprevAppendmergesort2sort3$cont@434cxycyzsort3trivialstableSortInnerlastableSortFunc`1creatorCreateFromValueget_IsValueCreatedLazy`1.get_IsDelayedLazy`1.get_IsForcedForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternop_LessThanop_GreaterThanop_LessThanOrEqualop_Equalityop_InequalityFailWithInvalidArgargumentNameNullArgInvalidOpRethrowObsoleteAttributeReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_UnaryNegationop_Multiplyop_Divisionop_Modulusop_UnaryPlusop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementEnvironmentexitcodeKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleLocklockObjectTLockTypeOfMethodHandleOf_callTypeDefOfSizeOfHashlimitedHashIdentityget_InTextReaderConsoleInConsoleOutConsoleErrorop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundSignLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4744RangeInt32stopgen@4744-1RangeInt64gen@4744-2RangeUInt64gen@4744-3RangeUInt32gen@4744-4RangeIntPtrgen@4744-5RangeUIntPtrgen@4744-6RangeInt16gen@4744-7RangeUInt16gen@4744-8RangeSBytegen@4744-9RangeBytegen@4813-10RangeDoublegen@4813-11RangeSinglegen@4721-12oneRangeGenericgen@4744-13zeroRangeStepGenericgen@4721-14tupledArg_0RangeCharloop@4841PowByteloop@4841-1PowSByteloop@4841-2PowInt16loop@4841-3PowUInt16loop@4841-4PowInt32loop@4841-5PowUInt32loop@4841-6PowInt64loop@4841-7PowUInt64loop@4841-8PowIntPtrloop@4841-9PowUIntPtrloop@4841-10PowSingleloop@4841-11PowDoubleloop@4841-12PowDecimalloop@4841-13mulPowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeStepResultupcanStarttupledArg_4OverflowExceptionPowDefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalCompareranyToStringShowingNullGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2120.cctor$cont@2153-2.cctor$cont@2153-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64FormatExceptionparse@2251parseOctalUInt64parse@2255-1parseBinaryUInt64TrimParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2330-3aty.cctor$cont@2354-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2445bty.cctor$cont@2459-5AdditionDynamicdyn@2482-6.cctor$cont@2497-6CheckedAdditionDynamicdyn@2522-12.cctor$cont@2536-7MultiplyDynamicdyn@2559-18.cctor$cont@2573-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@953yobjarr1GenericCompare$cont@965-1GenericComparecheck@1068lenxbasexbaseycheck1@1091lenx1basex0basex1basey0basey1check0@1090lenx0GetLongLengthprecheck@1105ndimscheckN@1115idxsbaseIdxcheck@1124-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1395erGenericEqualitySingleArrayfeq@1412GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1464iecGenericEqualityObjcheck@1554-2check1@1572-1check0@1571-1precheck@1579-1checkN@1587-1check@1594-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodesznodeCountFreshTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativescaleGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_TypeInfoop_Ampop_BooleanAndop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringAddressOpNotFirstClassString@635NoNegateMinValueString@636InputSequenceEmptyString@638InputArrayEmptyString@640InputMustBeNonNegativeString@642NaNException@935fsComparer@1167fsComparerNoThrow@1168fsEqualityComparer@1618fsEqualityComparerER@1623fsUnlimitedHasherER@1770fsUnlimitedHasher@1771GenericComparer@2030GenericEqualityComparer@2031GenericEqualityERComparer@2032CompareTo$cont@2948CompareTo$cont@2948-1objCastEquals$cont@2948CompareTo$cont@2957-2CompareTo$cont@2957-3GetHashCode$cont@2957Equals$cont@2957-1Equals$cont@2957-2CompareTo$cont@2967-4CompareTo$cont@2967-5GetHashCode$cont@2967-1Equals$cont@2967-3Equals$cont@2967-4copy@3264itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptyinputSequenceTooLongmapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesinvalidRecordTypeConstructorNotDefinedinvalidTupleTypeConstructorNotDefinedthenByErrorfailDueToUnsupportedInputTypeInSumByOrAverageByunsupportedIfThenElseunsupportedQueryConstructunsupportedQueryConstructKindunsupportedQueryCallunsupportedQueryPropertyget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_inputSequenceTooLongget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesget_invalidRecordTypeConstructorNotDefinedget_invalidTupleTypeConstructorNotDefinedget_thenByErrorget_failDueToUnsupportedInputTypeInSumByOrAverageByget_unsupportedIfThenElseget_unsupportedQueryConstructget_unsupportedQueryConstructKindget_unsupportedQueryCallget_unsupportedQueryPropertyGetString1GetString2GetString3resources@4GetExecutingAssembly)matchCasesIncomplete Some()Length > 1000Length = #inputListWasEmpty[; ]; ... ][] array map [ map []%mapCannotBeMutatednotComparableobj set [ set []%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementationtupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invokeg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecordNewUnionCaseUnionCaseTestNewTuple%ATupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblyDequeueqInternal error: attempting to install continuation twicecheckInit=failed to queue user work item€¡F:\dd\fsharp\projects\FSharp.Core\..\..\devdiv\src\fsharp\FSharp.Core\control.fsunreachable=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut source rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated_failDueToUnsupportedInputTypeInSumByOrAverageBytupledArgcopyOfStructvKeyx3unsupportedQueryConstruct!NewDelegate(...)NewTuple(...)NewUnionCase( ...);unsupportedQueryConstructKindFieldGet( ,...)#LetRecursive(...)NewRecord(...)1unsupportedQueryProperty new NewArray(+unsupportedIfThenElse)unsupportedQueryCall afterthenByErrorRuniMicrosoft.FSharp.Linq.QueryRunExtensions.LowPriorityRunQueryAsValuekMicrosoft.FSharp.Linq.QueryRunExtensions.HighPriority)RunQueryAsEnumerable Item)unreachable, ty = %AWThis function should not be called directlyecannot convert recursion except for function typesThe variable 'W' was not found in the translation context'eExpected Constructor call in member initialization!unreachable caseToFSharpFunc€ÃCould not convert the following F# Quotation to a LINQ Expression Tree -------- %A -------------  unit€Parameterized properties not supported in member initialization.[Expected PropertySet in member initializationInvokeFastkDynamic invocation of op_Subtraction is not supportedcDynamic invocation of op_Modulus is not supportedeDynamic invocation of op_Division is not supported+failedReadEnoughBytesAsyncResultmismatchIAREndiar#mismatchIARCancelResultCell)Unexpected no resultOcontrolContinuationInvokedMultipleTimescmultiple waiting reader continuations for mailboxqshould not happen - waitOneNoTimeout always returns trueCTimed out with infinite timeout??'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list-inputMustBeNonNegative#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of rangeQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray this/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '' <null>'printfExpectedWidth/printfExpectedPrecisionl true falseG%sToString count'popBreak: underflow €‡F:\dd\fsharp\projects\FSharp.Core\..\..\devdiv\src\utils\sformat.fs unpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=mapsetseq <seq>+<ToString exception: unuyyussuLgMnan-infinityinfinity.0 null=?-System.Linq.IQueryable()#<published event>7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypesKinvalidTupleTypeConstructorNotDefinedMinvalidRecordTypeConstructorNotDefined)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4sourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize)inputSequenceTooLong#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supportedmmay not call directly, should always be optimized away!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmpty'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedsyncContextNullcannotMutatekeyNotFoundQincorrectType FSCore#ÖPLÚô§Eƒ#ÖP·z\V4à‰ €Ä €Ä €Ä€Ü€Ü €Ü€ü€ü €ü$$$TTTŒŒŒ Ü Ü à à è è-1ô= ‚ EIM -I‚,E ÔÔ‚p ‚¸‚Ä‚ì-UÔ’ ÔI’ IÔƒ¤àYƒ¤è]ƒ¤!Ôƒ¤àaƒ¤è]ƒ¤ƒ¤$Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤ Ôƒ¤ƒ¤Ôi‚ÀÔƒ¤ƒ¤Ôiè]èÔYè]èÔiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤ÔYè]èÔYè]胤ƒ¤Ôaƒ¤ÔaÔa‚Àƒ¤Ôm‚ÀÔe‚ÀÔe‚Àƒ¤Ôq‚ÀuÔY]ÔYƒ¤ÔYÔe„øƒ¤‚Àƒ¤ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôaƒ¤‚Àƒ¤ÔY]ƒ¤ƒ¤&Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤4Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤Ô‚Ààƒ¤–ôè‚À胤$–ôè‚À胤èi‚Àƒ¤–ôè‚Àƒ¤èi‚Àƒ¤–ôÔƒ¤ƒ¤ƒ¤àƒ¤ –ô†\ƒ¤Ôƒ¤iƒ¤†\ Ô-ÔÔ y] ÔÔ}Ô] Ôƒ¤] Ô-]Ô] –ô†\]]Ôè]è] Ô}] Ôƒ¤–ôƒ¤ƒ¤ƒ¤ Ôƒ¤(Ôƒ¤àYàƒ¤è]胤 Ôƒ¤€Ô-€ Ô}€…Ô-€…Ôi€‰€‰€ Ô€‘ Ô‚À€•Ô‚ ‚À€‰‚ ‚À€‰&–ô‚À€•Ô‚ ‚À€‰‚ ‚À€‰ Ô‚À€‰Ô-€‰ Ôƒ¤€‰€™‡¼1ÔàÔ 1iÔà Ô Ô% Ô€Ô€ÄÔ€Ä!Ô‰€ÄƒÈ€ÄÔ€¡ƒÈ€ÄԃȀÄԃă´ ÔÔ%ƒÈ€¥Ôi€©Q ÔQ€¥ÔƒÈ€¥ Ô€­ÔÔÔ€±€­ Ô€­&ÔYÔÔ%Ô€ ÔAƒÈ ÔƒÈÔe€©QÔQÔ ÔƒÈÔƒÈÔƒÈ ÔQ Ôƒ´ Ô%ƒ´ Ô€ƒ´ Ôƒ´Ô%ƒÈÔƒÈԃă´Ô‰t‰ÔƒÄ€¡ƒ´Ô=ƒÈÔƒÈԃĀÄ%ƒ´Ô€¡ƒÈ€µÔƒÈ€µ–ôƒÈԃă´ ÔƒÈԃă´Ô‰ƒÈ ÔƒÈÔ€¡ƒÈÔY€©Q ÔQ Ô€¹ÔƒÐ ÔÔ€¡ƒÈƒÈԃȃÈÔÔ€¡ƒÈAÔƒÈAÔƒÈàԀăÈàÔƒÈàÔƒÈàÔ€¡ƒÈàÔàƒÈÔ‰€ƒÈàÔƒ¤àiè‚Àƒ¤Ôƒ¤àiƒ¤èƒ¤Ôƒ¤ài‚Àƒ¤ Ô‚L –ô€½ƒ¤ –ô]ƒ¤ –ô}ƒ¤ Ôƒ¤ –ô€½]]Ôi‚Àƒ¤Ôi‚Àƒ¤ƒ¤ –ô]]Ô]ÔÔÔ]]] Ô€½]Ôè]]ÔÔÔÔ]]ÔŽ,ÔÔ]]ÔŽ,èÔÔ]]ÔÔ]è]ÔŽ,ÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔÔŒ¼ƒ¤ƒ¤ ÔŒ¼ƒ¤ ÔŒ¼‚ÀÔè]}Ôè]‚LÔÔè]‚ìÔè]‚ìÔŽ,i€ÁÔŒ¼ƒ¤ÔŽ,èi€ÁÔŒ¼ƒ¤ÔÔŒ¼ƒ¤Ôèi€ÁÔŒ¼ƒ¤–ô‚D‚Àƒ¤‚D‚À yi€ÅŽyŽÔi€ÁÔŒ¼ƒ¤"Ôièi€ÁÔŒ¼ƒ¤Ô#Ôièi€ÁÔŒ¼ƒ¤ ÔŽ,ÔŽ,è –ô –ô Ôƒ¤‚–ô‚‚‚ Ô‚À‚ Ô‚Ôiƒ¤èƒ¤ƒ¤ÔÔ&ÔaÔÔÔ'ÔaÔÔÔÔÔÔ –ô]—è]Ôi‚‚Ôià‚‚Ô —‚ Ô‚ÔÔ‚ÔÔÔ‚Ôi‚ –ô‚‚Ôài Ô‚ÔàiÔi‚ÔÔi‚ÔÔÔi‚ÔàiÔ}ià‚Ôii‚ÔàiÔÔ–ô}i Ô‚‚—èiÔ øøü ôü –ô€Í€Í Ô€ÍÔ€‘àiÔiàÔ –ô}}ÔÔÔ}–ôi‚L–ô‚,‚, –ô–ô‚,‚,–ô‚D‚D‚DÔIiÔià–ô‚i‚ –ô =IÔI Ô-ÔI–ôIIÔI‚( –ô Ô=Ô==Ô==–ô===–ôi–ôiY‚Ô“ ‚i‚ÔàiÔI’ €Ñ#ÔI’ €Ñi-Ô-i-ÔI’ iÔ-iy y’  =-Ô=- –ô’ô“Ô’ô“H€Ù –ô Ô –ô””–ô”-–ô ” - –ô ” - –ô ” - –ô”-–ô”-–ô”-–ô”-–ô”-–ô”-” ” - ” ” - ””- –ôÔ ÔÔÔÔ ÔÔ Ô Ô€Ý€Ý–ô ÔÔ–ô Ô ÔÔ Ô Ô€ÝÔÔ ÔÔÔÔÔÔÔÔ —ÔÔÔÔ—%ÔÔÔÔÔ—$€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý –ô€Ý€Ý–ô  –ô  –ôÔÔÔ–ô–ô€ $€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“ €é FSharp.Core €é   Microsoft.FSharp@;Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsMicrosoft.FSharp.Core!Microsoft.FSharp.CollectionsMicrosoft.FSharp.Control94Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority:5Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority FSharp.Core.dllMicrosoft Corporation% Microsoft® Visual Studio® 20123.© Microsoft Corporation. All rights reserved. 4.3.0.0 4.3.50727.0 en-US*%F:\dd\tools\devdiv\FinalPublicKey.snkTWrapNonExceptionThrows A       (  MT AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleäT AllowMultiple( ÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple( T AllowMultiple(         ÿT AllowMultiple(  (-   -T AllowMultiple  ÀT AllowMultipleT AllowMultiple a €Ì  €Ä  €Ð  €Ä  €Ä €Ä €Ì€É €Ð  E €Ì€Ì€É€Ð€Ð€Ä€Ä €ÄK €Ä€Ì€Ì€Ð€Ð€Ä€Ä €É€Ì€Ð €á €áB €Ì€Ì€Ð€Ð€Ä€Ä €ÄFSharpChoice`2(  ]C>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy €Ô €Ì €Ø €Ð €ä€Ü €è€Ü €ì €Ü  €Ü €Ü €ä €è €ì v€ä€ä€É€è€è€ì€ì€Ü€Ü€Ü €Ü~€Ü€ä€ä€è€è€ì€ì€Ü€Ü€Ü5€ä€è€ì€Üs€ä€ä€è€è€ì€ì€Ü€Ü€Ü €ÜFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy €ð €ä €ô €è €ø €ì  €ü €ü  €ü  €ü   €É   €ü€ü€‰€ü  ?  |   €ü€üFSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy          ,$0$4$8$< $   $$$,048<X ,048< €®,,004488<< $FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxy@ ,D 0H 4L 8P <\T`TdThTlTp T   TTT TFSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxy\t \`x `d| dh€ hl„ lpˆ p”Œ˜ŒœŒ Œ¤Œ¨Œ¬ Œ   ŒŒŒ ŒŒFSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxy”° ”˜´ ˜œ¸ œ ¼  ¤À ¤¨Ä ¨¬È ¬     im% Ì%u u %0  ™  }Ô} ™$ Ô } }Ô ™( ™, –ô –ô ÔÔ Ô–ô–ôÔÔ—–ôÔ — –ôÔ ÔÔÔÔ @——–ôÔ–ôÔ"ÔÔÔ——Ô–ôÔÔ— —Ô Ô–ôÔÔ ÔÔÔÔ z———Ô—Ô–ôÔÔ–ôÔÔ+ÔÔÔÔ—$—Ô—ÔÔ!–ôÔÔÔ—$ —Ô Ô—ÔÔ  –ôÔÔÔ %ÔÔÔÔÔ €Æ—$—$—Ô—Ô—ÔÔ—ÔÔ–ôÔÔÔ–ôÔÔÔ4ÔÔÔÔÔ™0 Ô ™4Ô} ™8 Ôi"ÔÔÔi ™< ÔY+ÔÔÔÔY™@ Ôa4ÔÔÔÔÔa™D Ôe=ÔÔÔÔÔÔeÜ €É ÜÜ Ü Ü Ü FSharpRef`1 {contents} à àà àà à à' àà€Éàà à+ ààààà à à à$àààà àFSharpOption`1 Some({Value}) è (è(èè è èèè è( èè€Éèè è, èèèèè è+ èèèèèèè è è  ‘èèè–ì è = 9 Item FSharpList`11,Microsoft.FSharp.Collections.ListDebugView`1{DebugDisplay,nq}(ð 0è èèèè  Q€© QFSharpHandler`1‚ --=“€ ‚=#‚-=‚‚™™ Ô‚ Ô- ‚ ‚ ‚ ‚ ‚ ‚‚"‚‚‚ ‚ ‚ ‚!AiÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤!Ôqƒ¤]]]‚Àuƒ¤&iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôiè]胤ƒ¤Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤ Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤(Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤6Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤*Ôƒ¤àYàƒ¤è]胤 Ôƒ¤àYƒ¤è]ƒ¤#Ôƒ¤àaƒ¤è]ƒ¤ƒ¤&Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤ €‘à€‘€‘ à€‘})Ôƒ¤àYàƒ¤è]胤*Ôƒ¤àYàƒ¤è]胤#Ôƒ¤àYƒ¤è]ƒ¤‚=&Ôƒ¤àaƒ¤è]ƒ¤ƒ¤‚=)Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤‚=àY‚Àƒ¤ƒ¤àiƒ¤ à‚Àièi‚Àƒ¤ƒ¤àY‚Àƒ¤ƒ¤ Y‚Àƒ¤ƒ¤ àiƒ¤iƒ¤à‚Àièi‚Àƒ¤ƒ¤èi‚Àƒ¤L àY‚Àƒ¤ƒ¤àiƒ¤à‚À‚Àƒ¤‚Àƒ¤ièi‚Àƒ¤ƒ¤ièi‚Àƒ¤ƒ¤‚Àƒ¤èi‚Àƒ¤Y‚Àèi‚Àƒ¤ƒ¤àY‚Àèi‚Àƒ¤ƒ¤?ài‚Àƒ¤‚Àƒ¤ièi‚Àƒ¤ƒ¤èi‚Àƒ¤ƒ¤#àY‚Àèi‚Àƒ¤ƒ¤ƒ¤„¬ i‚Àƒ¤ƒ¤èi‚Àƒ¤àY‚Àèi‚Àƒ¤ƒ¤è‚Àèèi‚Àƒ¤ èi‚Àƒ¤-èi‚Àƒ¤ i‚Àƒ¤5àY‚Àèi‚Àƒ¤ƒ¤‚Àèi‚Àƒ¤ƒ¤5àiè‚Àƒ¤è‚Àèèi‚Àƒ¤ƒ¤àiè‚Àƒ¤ƒ¤€Á‚=Ôiè]è‚=ÔYè]è‚=€‘€‘è] Ôiè]胤ƒ¤‚=#ÔYƒ¤è]胤ƒ¤‚=€‘]ƒ¤]]‚Àƒ¤ÔYè]èÔYƒ¤è]胤ƒ¤„À ÔYè]è„Ä! ÔYƒ¤è]胤ƒ¤:iÔYè]èÔYè]胤ƒ¤8ÔYè]èÔYƒ¤è]胤ƒ¤@iÔYè]èÔYè]胤ƒ¤‚=6iÔiè]èÔiè]胤ƒ¤piiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤xiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤‚=‚=è]iè]胤Dƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤]ƒ¤ƒ¤èiè]è8Ôiè]èÔiè]è]ƒ¤qiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]è „È9 Ôiè]胤ƒ¤Ôiè]胤ƒ¤ „Ì1 Ôiè]èÔiè]è(iÔaƒ¤Ôa€ÖiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]è1iÔaƒ¤Ôa‚=‚=,iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤ ]]ƒ¤ƒ¤Eƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ƒ¤‚Àƒ¤€‰€‰? Ôiè]èÔiè]è]]]‚Àƒ¤ „ЄÔ0iÔa‚Àƒ¤Ôm‚À9iÔa‚Àƒ¤Ôm‚À‚=‚=4iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤ ]ƒ¤ƒ¤;Ôiè]èÔiè]è]‚Àƒ¤ „Ø „Ü,iÔa‚Àƒ¤Ôe‚À5iÔa‚Àƒ¤Ôe‚À‚=‚=0iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤Ôe]‚Àƒ¤„  ÁYƒ¤è]胤]Á]ƒ¤ƒ¤n ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤‚Àƒ¤ƒ¤ƒ¤]]ƒ¤ Ôiè]胤ƒ¤]]]ƒ¤ƒ¤?ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤ƒ¤ƒ¤‚Àƒ¤àÔiè]è‚QàÔiè]è %Yè]èb àÔiè]è]Á]%‚Q‚QàÔiè]èÔiè]耞Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è‚À]]]ƒ¤ Ôiè]耉Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è]]]‚Àƒ¤;iÔYè]èÔYƒ¤è]胤ƒ¤ ƒ¤:iÔYè]èÔYƒ¤è]胤ƒ¤ „à0 Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤„ä Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è8iÔe‚Àƒ¤Ôq‚Àu„–iiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiÔYè]èÔYƒ¤è]胤ƒ¤ÔYƒ¤è]胤ƒ¤ÔYè]è] iÔe‚Àƒ¤Ôq‚Àu‚=‚=‚=‚=‚=‚=‚=‚=‚=‚=‚=>iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤!Ôqƒ¤]]]‚Àuƒ¤Aƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤]ƒ¤ Y]];Ôiè]èÔiè]èY]ÐÔY] „ðÔY] „ô$iÔYƒ¤ÔY€èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èÐÔY]-iÔYƒ¤ÔY‚=‚=&iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôiè]胤ƒ¤Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤ Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤…7 Ôiè]胤Ôiè]胤LÔaƒ¤‚Àƒ¤Ôiè]胤Ôiè]胤8Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôaƒ¤‚Àƒ¤ƒ¤‚=‚=Ôa]ƒ¤ƒ¤ƒ¤‚=‚=(Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤6Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤ƒ¤ àƒ¤ €Ü‚Ài‚Àƒ¤i胤…4" ÔÔƒ¤Ôƒ¤àƒ¤…8ÔÔƒ¤ƒ¤ àƒ¤€è‚Ài‚Àƒ¤i胤€ä‚Ài‚Àƒ¤i胤€ì‚Ài‚Àƒ¤i胤 i胤 ƒ¤ƒ¤àƒ¤bÔƒ¤ƒ¤àƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤€Ü‚Ài‚Àƒ¤i胤(ƒ¤ÔÔƒ¤Ôƒ¤àƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤!ÔÔƒ¤Ôƒ¤àƒ¤àY‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤ àƒ¤ƒ¤L àY‚Àƒ¤ƒ¤‚Àƒ¤ài‚Àƒ¤à‚Ààiƒ¤à‚À‚Àƒ¤àƒ¤ƒ¤àYàƒ¤}胤 à€‘àYàƒ¤€‘胤àièè‚Àƒ¤èè‚À ‚ ‚Àƒ¤àYàƒ¤}胤Yàƒ¤}胤àYàƒ¤€‘胤Yàƒ¤€‘胤àièè‚Àƒ¤ièè‚Àƒ¤ è‚Àƒ¤èi‚Àƒ¤-i‚Àƒ¤€ àYàƒ¤}èƒ¤à€‘àƒ¤ƒ¤àYàƒ¤€‘èƒ¤àƒ¤àièè‚Àƒ¤èè‚À胤‚ ‚Àƒ¤àiƒ¤è胤è胤àiƒ¤è胤iƒ¤è胤 èè‚À è胤 è‚À胤! è‚À胤èi‚Àƒ¤\àiƒ¤è胤àièè‚Àƒ¤èè‚Àè胤ƒ¤‚ ‚Àƒ¤*Ôƒ¤àYàƒ¤è]胤 Ôƒ¤àYƒ¤è]ƒ¤#Ôƒ¤àaƒ¤è]ƒ¤ƒ¤&Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤àiƒ¤ƒ¤ ài]!àYàƒ¤è]胤àiƒ¤ƒ¤ iƒ¤ƒ¤ ài]i]à]àiƒ¤ƒ¤ài]àYàƒ¤è]胤àYàƒ¤è]胤 àƒ¤†d è†\†h†p†\†l †\ƒ¤e„øƒ¤‚Àƒ¤ i]ƒ¤U„ }:†dè†\†h]†p†\ƒ¤‚Àƒ¤ƒ¤]†l]]]]胤 ƒ¤†\ƒ¤ ]‚Àƒ¤ƒ¤i‚Àƒ¤†\‚Àƒ¤ àYàƒ¤è]胤Yàƒ¤è]胤€¥ àYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤àYàƒ¤è]èƒ¤èƒ¤àƒ¤màYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àYàƒ¤è]èƒ¤èƒ¤àƒ¤…p…h„ø…p…h‚Àƒ¤„ø…hƒ¤…hàYƒ¤è]ƒ¤ i‚Àƒ¤ iƒ¤†\àaƒ¤è]ƒ¤ƒ¤àYƒ¤ƒ¤ƒ¤à i…h†\Yƒ¤‚Àƒ¤àYƒ¤è]ƒ¤Yƒ¤è]ƒ¤ iƒ¤†\ ] i…h†\àaƒ¤è]ƒ¤ƒ¤aƒ¤è]ƒ¤ƒ¤aƒ¤‚Àƒ¤àYƒ¤ƒ¤ƒ¤ Yƒ¤ƒ¤ƒ¤ Yƒ¤‚Àƒ¤-m]ƒ¤‚Àƒ¤‚Àƒ¤€ºàYƒ¤è]ƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\†\ƒ¤ƒ¤àƒ¤àƒ¤àaƒ¤è]ƒ¤ƒ¤ài‚Àƒ¤àYƒ¤ƒ¤ƒ¤ài…h†\…h]Yƒ¤‚Àƒ¤…p‚À…h]]] i…h†\„ø]‚À]†\…hƒ¤!qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤ qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤uƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤,q]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤mqƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤, i…h†\]ƒ¤‚À‚Àƒ¤ƒ¤‚À‚Àƒ¤ƒ¤pqƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤pƒ¤qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤. i…h†\]ƒ¤‚À‚Àƒ¤]ƒ¤‚À‚Àƒ¤ƒ¤àY]è‚Àƒ¤à胤ài‚L胤ài‚L胤i‚L胤=àY]è‚Àƒ¤à胤ài‚L胤‚Li…h†\ƒ¤àiàƒ¤€Íàièi‚Àƒ¤ƒ¤ài]胤àiàƒ¤€Íiàƒ¤€ÍUà胤àiàƒ¤€Í€Íàièi‚Àƒ¤ƒ¤ài]胤àiÁ胤àiÁ胤iÁ胤ài]胤i]胤LàYàƒ¤}胤}àiÁ胤Áài]胤]àiƒ¤]è]aƒ¤†\‚Àƒ¤a…h†\‚Àƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤àiƒ¤] iƒ¤]aƒ¤†\‚Àƒ¤a…h†\‚Àƒ¤ Y]ƒ¤ a]ƒ¤ƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤eƒ¤è]ƒ¤ƒ¤ƒ¤q]]]ƒ¤‚Àƒ¤i‚Àƒ¤‡Ž€²àiƒ¤]ƒ¤]àYàƒ¤è]胤è]è]è]è]胤胤ài‚Àƒ¤‚Àƒ¤]i…h†\†\…h„ø]‚À]†\àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤aƒ¤†\‚Àƒ¤ƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤a…h†\‚Àƒ¤iƒ¤†\ƒ¤àYàƒ¤è]胤胤àYƒ¤è]ƒ¤è]è]àYƒ¤ƒ¤ƒ¤ààaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤i‚Àƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤è]è]è]è]ài‚Àƒ¤ài‚Àƒ¤‚Ài‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤ƒ¤†\àYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚ÀàYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚ÀàYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚Ààƒ¤àƒ¤àYƒ¤è]ƒ¤àYƒ¤è]ƒ¤àYàƒ¤€‘胤€‘i…h†\„øƒ¤i…h†\…h†\iƒ¤†\„øƒ¤!àƒ¤ƒ¤iƒ¤†\ƒ¤†\]]iƒ¤†\ƒ¤_iƒ¤†\†\ƒ¤iƒ¤†\ƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤ƒ¤iƒ¤†\ƒ¤5qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤i…h†\†\…hi‚Àƒ¤a…h†\‚Àƒ¤ƒ¤‚Àƒ¤a…h†\‚Àƒ¤†\…h‚Àƒ¤aƒ¤†\‚Àƒ¤ƒ¤‚Àƒ¤, iƒ¤†\†\ƒ¤]]‚Ài‚Àƒ¤‚Àƒ¤ƒ¤ ƒ¤„øƒ¤aƒ¤†\‚Àƒ¤Yƒ¤‚Àƒ¤ƒ¤‚Àƒ¤eƒ¤ƒ¤‚Àƒ¤Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤„ [àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤‚Àƒ¤]Yƒ¤‚Àƒ¤ƒ¤‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àƒ¤àƒ¤ ƒ¤ƒ¤% „øƒ¤m]]]‚Àƒ¤Ôm]]]‚Àƒ¤Y]ÔY]qƒ¤]]]‚Àuƒ¤Ôqƒ¤]]]‚Àuƒ¤e]‚Àƒ¤Ôe]‚Àƒ¤ a]ƒ¤Ôa]ƒ¤ƒùYàaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤‚À]ƒ¤]]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àƒ¤àƒ¤+ Ôƒ¤àYàƒ¤è]胤?àYàƒ¤è]èƒ¤àƒ¤èƒ¤è]ƒ¤ƒ¤ àYƒ¤è]ƒ¤ƒ¤JàYàƒ¤è]èƒ¤àƒ¤èƒ¤èƒ¤è]ƒ¤ƒ¤ƒ¤ àaƒ¤è]ƒ¤ƒ¤ƒ¤U àYàƒ¤è]èƒ¤àƒ¤èƒ¤èƒ¤èƒ¤è]ƒ¤ƒ¤ƒ¤ƒ¤! àeƒ¤è]ƒ¤ƒ¤ƒ¤ƒ¤„¨ ‚À ƒ¤ƒ¤ i‚À‚À Ôƒ¤ƒ¤i‚Àèè]耑%‚Q‚Q iè]èè]耑%‚Q‚Q Yè]èè]胤 ƒ¤iè]胤ƒ¤è]胤 ƒ¤Yƒ¤è]胤„ÀYè]èè]è Yè]è„ÄYè]胤è]胤 ƒ¤Yè]胤 „È a  ƒ¤a „Ì a „Ð a‚À ‚À ƒ¤a‚À„Ôm‚À‚À m‚À „Ø „Üe‚À ‚À e‚À „àe‚À ‚À ƒ¤e‚À„äq‚Àuu‚À q‚Àu„ì4 Ôiè]èÔiè]è„èÔY]„è„ì Y] ]„è Y] „ð Y ƒ¤Y „ô Y] Y$ „øƒ¤‚Àƒ¤à‚À‚À]]ƒ¤ƒ¤ ƒ¤e„øƒ¤‚Àƒ¤ ]ƒ¤ƒ¤ ƒ¤a]ƒ¤ƒ¤]ƒ¤ ƒ¤i]ƒ¤ ƒ¤]&]ƒ¤‚Àƒ¤‚Àƒ¤]]ƒ¤]ƒ¤ƒ¤ƒ¤ ƒ¤m]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤]]ƒ¤ ƒ¤aƒ¤‚Àƒ¤Ôiè]胤…Ôiè]胤ƒ¤‚Àƒ¤]]ƒ¤ƒ¤ aƒ¤‚Àƒ¤ƒ¤‚Àƒ¤]ƒ¤ƒ¤]ƒ¤ ƒ¤Y]ƒ¤$ ]]]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤# ƒ¤q]]]ƒ¤‚Àƒ¤i‚Àƒ¤8]]]]ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤1 ƒ¤q]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤:]]]]ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤]ƒ¤ƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤…4…8 ƒ¤ àƒ¤‚À è‚À胤! èi‚Àƒ¤è‚À胤 ‚ ‚Àƒ¤ ‚ ‚Àƒ¤-è‚À‚Àƒ¤à胤è‚À胤 èi‚Àƒ¤è‚Àƒ¤ àƒ¤ƒ¤ àƒ¤Ôƒ¤ƒ¤ƒ¤ ƒ¤ ƒ¤†\…h„ø…h‚Àƒ¤…hƒ¤…h„øà‚À‚À(„ø(…h „ø…h‚Àƒ¤ „ø …hMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Select@DebugTypeProxyLGMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Other@DebugTypeProxyMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Source@DebugTypeProxy …p…t …t…x …x iƒ¤†\ƒ¤ ]‚À‚‚‚‚‚-+iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤3iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤/iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤Ôe]‚Àƒ¤=iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤ Ôqƒ¤]]]‚Àuƒ¤%iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤'Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤5Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤Ôƒ¤àYƒ¤è]ƒ¤"Ôƒ¤àaƒ¤è]ƒ¤ƒ¤%Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤‚‚‚!‚  ‚  ]ƒ¤ƒ¤]ƒ¤*iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤ ‚ ‚ ‚Y‚ ƒ¤ƒ¤]]]ƒ¤2iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤‚ ‚Y‚ ƒ¤ƒ¤]ƒ¤.iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤‚ ‚Y‚ ‚ ‚Y‚  ‚ ‚Y‚ €Ý‚ ‚Y‚€Ý ‚ ‚Y‚ ‚ ‚Y‚  -‚  -‚ €Ý-‚€Ý -‚ -‚  ƒ¤ƒ¤ƒ¤ƒ¤]]]ƒ¤<iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤"‚ ‚ ‚Y‚‚ "‚ ‚ ‚Y‚‚ &‚€Ý‚ ‚Y‚‚€Ý"‚ ‚ ‚Y‚‚"‚ ‚ ‚Y‚‚ ‚ -‚‚ ‚ -‚‚ ‚€Ý-‚‚€Ý‚ -‚‚‚ -‚‚ ‚ ‚Y‚ ‚ ‚Y‚ -‚ -‚ "‚‚ ‚Y‚‚"‚ ‚ ‚Y‚‚ ‚-‚‚‚ -‚‚ ‚  ]ƒ¤]$iÔY]ƒ¤ƒ¤ÔY] ‚ ‚ ‚ ‚Y‚--‚‚ ‚ ----‚ - -3‚ ‚ ‚Y‚-‚Y‚!'--‚-‚!‚ ‚ ‚Y‚‚]‚ ‚Y‚‚]‚]‚Y‚‚ ‚ ‚ ‚ %‚ U‚ ‚Y‚3‚ U‚ ‚Y‚‚Y‚C‚ ‚ -‚Y‚‚Y‚‚Y‚!G‚ ‚ -‚Y‚‚Y‚‚Y‚!- €‘ ‚=Ô„  …¸Ô„  „  - Ô…¼…À…Ä…È…Ì…Ð Ô …Ô …ØÔ‚ …ÜÔ‚ …à Ô  Ô  …è …ì …ð …ô …ø …ü † † † †  † † †ÔÔ † †  †$ÔÔ- †( †, †0 †4 Ô] i]]] Ñ]] Ôƒ¤ ‚a] ‚a] †@ Ô‚a] ‚a]ÔÔ Ô]àiƒ¤ƒ¤ƒ¤ƒ¤èƒ¤èƒ¤ƒ¤ 胤ƒ¤àaàƒ¤}胤ƒ¤àaàƒ¤}胤ƒ¤aàƒ¤}胤ƒ¤ àè_ èàaàƒ¤}胤ƒ¤àƒ¤à‚Àè‚Àài]èà‚À àè‚Àèè‚Àà胤‚À胤Y‚Àƒ¤èƒ¤àY‚Àƒ¤èƒ¤SàY‚Àƒ¤ƒ¤àiÁ胤胤‚À胤ƒ¤à胤胤àY‚Àƒ¤èƒ¤ƒ¤ i]]] Ñ]] Ñ]]#àiÁ胤Á]胤àiÁ胤ƒ¤ ]]Áb胤胤胤胤胤胤胤胤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤èƒ¤‚e Í}‚e‚eƒ¤ ƒ¤ƒ¤]i]i]‚¼Ô]]]] ]Ô]] Ô]] ]i]]]]Ôè]è]} }T àYàƒ¤}èƒ¤àƒ¤ài]胤]}胤}ààÔ†\Ô]]è†\€™†dè†\è†\è†\è†\è†\è†\è†\è†\è†\†\†\†\†\†\†\†\†\è†\Ô†\Ô]]è†\†h]†l]]]†p ]†\] Ôƒ¤àY‚Àƒ¤èƒ¤€ƒ ƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤àY‚Àƒ¤èƒ¤€‘àiÁ胤Á€Ü‚Ài‚Àƒ¤i胤u ƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤àiƒ¤àèƒ¤àƒ¤€Ü‚Ài‚Àƒ¤i胤i胤è†\ ƒ¤iƒ¤†\ ƒ¤†\i胤è†\Pà胤胤i胤è†\è†\胤ài]胤]!iƒ¤†\Ôƒ¤iƒ¤†\ƒ¤†\†\ ] ]]   ‚a] †@ ‚a] } ]ƒ¤ 胤-ƒ¤ ƒ¤] -]†\ †\è†\†\]è†\ †\]]†\†\ (è†\ è†\ è†\a\Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+TupleConv@DebugTypeProxy ]è†\b]Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+RecordConv@DebugTypeProxy(†\ ]]†\ †\d_Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+GroupingConv@DebugTypeProxy †\_ZMicrosoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+SeqConv@DebugTypeProxy †d †h †l †p ]†\] Ô†\Ô]]è†\ †\]] è]è] è†\Ô†\Ô]] ]}-} }]1àYàƒ¤€‘胤€‘àƒ¤èƒ¤ ƒ¤ ƒ¤ƒ¤ƒ¤Ôƒ¤iƒ¤†\ Ôƒ¤iƒ¤†\ Ô] i]] Ñ]] Ôƒ¤ ]uƒèiƒìYƒða ƒô e ƒø ‚i ƒü m „qu „ i]] i]]¹Á ‚Y¹]]] ‚ ‚À ‚À ‚ ‚Àƒ¨ƒ¤‚ÀÁ €‘€‘-Ôƒ¤àYàƒ¤è]胤‚=i胤ƒ¤i胤ƒ¤.àiƒ¤ƒ¤i胤ƒ¤ƒ¤èƒ¤ƒ¤i胤ƒ¤ƒ¤iƒ¤èƒ¤àiƒ¤èƒ¤DàYàƒ¤è]胤胤i胤ƒ¤èƒ¤ƒ¤àiƒ¤èƒ¤ƒ¤IàYàƒ¤è]胤胤àiÁ胤Á胤$àiÁ胤胤Áƒ¤i}ài] ài]i}ài] ài]i] ‚m€‰}%i}ài]ài]}] €‰]€‰iÁà]à]€‰iÁà]à] €‰ ‚qÁ€‰=iÁà]à]]Áà€‰Á]€‰€‰€‰ €‰]€‰‚uàiƒ¤èƒ¤€‚qàààiƒ¤‚L€… 耕†À-‚À€• ‚À€‰ €€‰€‰‚y] ‚}€‰] ‚€‰] ‚m€‰€Í‚…€‰€‘€‰ € ‚‰‚q€-€‰ €…‚qÁ-€‰€…€€‰€‰€‘‚}€‰à ‚y‚‚€Ý‚ ‚ ‚‚‚ ‚‚‚ ‚  €‘ ‚©]€‰‚q]àiƒ¤‚L iƒ¤‚LàY]è‚Àƒ¤Y]è‚Àƒ¤ ‚À€• ‚À€•‚ ‚À€‰-€•‚­]€‰-€•‚±€‰€‰€‰ ‚…€‘€‰ ‚ ‚À€‰‚­]€‰€•}‚…]]€‰‚¼Ôƒ¤ƒ¤ Ôƒ¤ Ôƒ¤”Baà‚À‚À€‰%‚uàiƒ¤ƒ¤ƒ¤ƒ¤àiƒ¤ƒ¤ài]]àYàƒ¤è]胤è]胤àiƒ¤]àiƒ¤]àYàƒ¤è]胤è]胤àiàƒ¤€Íàƒ¤€Íàiƒ¤àYàƒ¤}胤}胤à]€‰àYàƒ¤€‘胤€‘àiƒ¤èƒ¤èƒ¤€‚q‚qàiÁ胤Á}àYàƒ¤è]胤è]è]è]胤]]àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤à胤à胤à胤à胤ààYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤è]è]è]胤胤àYàƒ¤è]胤è]胤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤ƒ¤ƒ¤ƒ¤i]]i]]]i]]]]i]]]]]àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤€‰ài]胤ài]胤ài‚L胤‚Làiƒ¤‚L€…}€‘àY]è‚Àƒ¤è‚À耕†Àà胤àYƒ¤ƒ¤ƒ¤-‚ÀàY‚Àƒ¤ƒ¤€•€‰ài‚Àƒ¤] €‰†Àƒ¤ i€‰€‰€‰€‰€‰]€‰"€‰†Àƒ¤ƒ¤Ôi€‰€‰€ àƒ¤ƒ¤€‰à]]€‰†Ààƒ¤à] ƒ¤€‰€‰†À胤€•]€•‚À€‰ƒ¤‚Yƒ¤‚Yƒ¨‚­ É" ài]]ƒ¤‚­É%‚Q‚Qƒ¤ (‚ ‚À€‰ ‚ ‚À€‰ ‚ ‚À€‰ ‚ ‚À€‰ ƒ¤ ‚ ‚À ‚ ‚À €‘€‘% àYàƒ¤è]胤ƒ¤ †À ‚µ€…€‰5àaàƒ¤}胤ƒ¤}ƒ¤èƒ¤èƒ¤ €ƒ¤ †À胤 ƒ¤€ -€ €…} } }€… -€…€‰€‰ €i€‰€‰ €‘ €•‚À ‚À€‰ ‚ ‚À€‰‚ ‚À€‰# Ô‚ ‚À€‰‚ ‚À€‰‚À€• €‰‚À -‚À -€‰ †À-‚À €‰ƒ¤‚‚ ‚‚‚ byte‚ ‚‚‚ sbyte‚ ‚‚‚ int16‚ ‚‚‚ uint16‚ ‚‚‚int‚ ‚‚‚ enum int32‚ ‚ ‚ ‚ uint32‚ ‚ ‚ ‚ int64‚ ‚ ‚ ‚ uint64‚ ‚ ‚ ‚ float32‚ ‚ ‚ ‚ float‚‚ ‚‚‚ nativeint‚‚ ‚‚‚ unativeint ‚€Ý ‚€Ý‚€Ý‚ decimal‚ ‚‚‚ char ‚ ‚‚‚ ‚‚‚‚ ‚‚‚ ‚‚‚‚ ‡Ä Ô11Ô1map€™€™à ‡Ì Ôà11Ôà1 choose‡Ð 1Ô1 filter‡Ôi11!i11Ô1 partition ‡Ü ÔÔ1!1ÔÔ1 scanAÔ1addAÔ1 subscribe‡ä 11i1 pairwise‡ô 11111 merge ‡ø Ô€Ä ‡ü Ô€Äi11)i11Ô€Ä1 split %€™ ‡À Ô€™ €Ä% €Ð% €Ì% €Ä% €Ð%€™ €Ì%(€Ä%€Ä%%€Ð%€Ì% Ô1 ‡Ä ‡À A€™Ôà ‡È Ôà€™€Äà%€Ðà%€Ìà%€Äà%€Ðà%€Ìà%<€Äà%€Äà%%€Ðà%€Ìà%Ôà ‡Ì ‡È‡Ð à‡ÔÔÔÜ ‡Ø! ÔÔ€™ÜÜ,€Ä%€Ä%%€Ð%€Ì%ÔÔ ‡Ü ‡Ø€™i Üà‡à €™iÜà Üài €™iàà1‡äÜà A€™iÜ‡è €™ÜÜÜ܇ì AA‡ôÜÜÜAAÔ€Ä ‡ø €Ä €ÌÔ€Ä €Ìà€Ä€ÌÔ€Ä ‡ü €Ä €ÐÔ€Ä €Ð€Ä€Ð‚l Ô‚l ˆ Ô‚l‚lÔA#øüÔø‚l‚lˆ Ô‚l‚lÔA"øüÔøˆ  Ô‚l‚l iøüøü‚l‚lÔA4iøüøüÔø ˆ Ôà‚l(øüÔàøÜ ÔÜ ˆ! ÔÔÜ‚lÜ‚lÔA,øüÔÔøÔø‚li Üà ‚li Üàˆ ‚liÜà&‚liÜàÔA&øüiiøˆˆ ‚lÔA#øüøø‚l‚l ˆ$! ԀĂl‚l iøüøü‚l‚lÔA<iøüøüÔ€Äø‚l ˆ‚l ‚lˆˆ  ˆààà ˆ‚liˆ ‚liˆˆ ‚l ˆ$ €Ð €Ð‚l€Ä€Ð€Ì ˆ,& ‰€‰€ÄÔ€Ä ˆ0 ‰€‰€Ä ˆ41‰€‰€Ä€¡ƒÈÔ€Ä ˆH ƒÈƒÈ €ÄƒÈ€ÄƒÈƒÈ‰€ƒÈ‰€ ‰€ ƒÈ€¡‰€‰€Ä ˆ,‰€Ä ‰‰€‰€Äƒ´‰€‰€Ä ˆ0‰€Ä ‰%‰€‰€Ä % ˆ4 ‰€ € €Ä €Ä €Ä ƒÈ€Ä‰€ÄƒÈƒÈ ˆD$ ƒÈƒÈ‰€‰€Ä ˆ8  ˆ<  ˆ@ ‰€Ä€Ä ƒÈ€Ä€¡ ˆH €¡€Ä‰€‰€Ä ƒÈ€Ä ƒ´ƒÄ ‰€  €¥ ƒÈ€¥‚ÁAsyncGetResponseƒÈ  ƒÈƒÈ‚Å‚ÉAsyncDownloadString Ü‚Í ‚щ€¥ €¥‚Í‚Í ƒÈ€¥%‚Á ‚Ái€© Q€©€© Qi€© €¥Q ‚ÁÜàÔ ƒÈ€¥Ü‚Å ‚Å €­ €­ÔÔ€± ÔÔ€± Ô€± €± €­ÔÔ€± Ô Ô% Ô€ ‚9€­* ‚ÅÔÔ%Ô€‚9€­ €­€±‚9€­ô€­ % €­‚É ‚Å‚É Ô€­€­YÔÔ%Ô€ €­ ‚É3ÔÔ%Ô€Ô€­‚9€­€­# YÔÔ%Ô€ ƒÈ ƒÈA A ‚ÅƒÈ ƒÈ ƒÈ‚Ùàà AsyncRead  ƒÈ‚Ù ƒÈ‚Ùàà AsyncWrite1ÔAddˆÜ1A1Ô Subscribe‚Ù ‚Ù e€© Q€© €© Qe€© QÜ ÜÜ  Ü ƒÈ ‚ÙÜ  ƒÈ   ƒÈ ‚Ù  Ü QˆÜƒØƒØˆä ƒØˆèˆì%ƒØÔÔ%Ô€QƒÈ€©ƒØƒØQƒØƒØQƒØˆäˆèˆìi€¡àƒ°ƒ° àƒ° ‰€‰ à‰‰àƒ°i€¡àƒ° ‰€‰ˆôˆøˆü à‰Y i€¡àƒ°ƒ°€¡àƒ°‰€‰ƒ´à‰à‰‰àƒ°A€¡ƒÈà €¡ƒÈ‰ *€¡ƒÈÔÔ%Ô€€¹€¹‰€¹€µý‚鉀µàý‚é ý‰ ‚é‰ €¹‚í €µ‰, ƒÈ‚鉀¹€µ ý‚鉀¹€µƒÈ€µ€¡ƒÈàýˆô ƒ´ˆø ƒ´%ˆü ƒ´€ ƒ´‰  Ô% Ô€‚鉂逵‰  ‚鉀¹€µ ƒÈ%‰$ ƒÈ‰( ‰,ƒ´ñƒ¼Ôƒ´ññƒÄ‰P ƒÄñƒ¼ ñƒÀƒ¼ƒÄƒÄ‰dƒÈԃă´‰h‚ñ‚ñ‚ñ‚‰€‚ñ ‰€ è‰t è‰t ‰t‚ñè‰t‰€‰t ƒÄà‰€ƒÄƒÄ ƒÄƒÄ ñƒÀƒÄ‰L ƒÄ‰P ƒÀ% ñƒÀƒ¼ ƒÀ€‰d ƒ´ƒÄ‰h‰l‰l Ô‰tù Ôƒ´‰x ‰tÔƒ´ñ‰|‰t (ƒÈ‰€ è‰t‚‰„ ‰t/è‰tè‰t‰tè‰t‰ˆ à‚à ‰t‰€àà ÜÝí ƒÈ Ü݉œ‰ ‰œ‰ ‰˜‰œ‰ €‰ ‰à‰à‰í‰´/ €¡Ôƒ´Ô%ƒ´Ô€ƒ´ƒÈƒ¼ƒ¼/ƒ´€¡Ôƒ´Ô%ƒ´Ô€ƒ´ƒÈ‰¸ÔƒÄƒ´ƒ´%ƒ´ƒÄԃă´‰¼‰À‰È ƒÈ ‰Ô ƒÈԃȃȃȃÈÔƒÈ ‰à ԃȃÈԃȊ ԃȃÈԃȊ Ô%ƒÈƒÈƒÈÔ%ƒÈƒÈŠ  Ô€ƒÈƒÈÔ€ƒÈƒÈ€¡Š(ƒÈԃȃÈԃȊ8 ÔƒÈ =ƒÈ-ԃȊ<ƒÈƒÈƒÈ € ‰IDMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Ok@DebugTypeProxy(%LGMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Error@DebugTypeProxy(€ €OJMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Canceled@DebugTypeProxy‰˜‰¤ ‰˜‰œ‰¨ ‰œ‰ ‰¬ ‰ iƒ¼Ôƒ´ iƒ¼Ôƒ´iƒ¼Ôƒ´#iƒ¼Ôƒ´ƒ¼Ôƒ´ƒ´‰´‰¸‰¼‰À‰˜‰œ‰ ‰‰Ä Ôƒ´‰ÈƒÀƒ¼Ôƒ´ÔƒÈƒÄ ‰Ì ԃȃăÄԃȃÈԃă´$Ô%ƒ´ƒÈ%%%%ƒÈ‰Ð ƒÈƒÄÔƒÈ ‰Ô ‰Ì‰Ð ƒÄƒ¸ Ô%ƒ´%‰Ü ƒÄƒÈ ‰àÔƒÈ' ƒ¼Ô%ƒ´ƒÈ%%%%ƒÈ‰è‰ì ԃă¼Ô%ƒ´%%%%‰ô ƒÄ%‰ø‰ü ƒÄ€ŠŠ%%%%Š'ƒ¼Ôƒ´Ô%ƒ´Ô€ƒ´ƒÀÔ%ƒÈŠ  Ô%ƒÈƒÄ % ƒÈŠÔ%ƒ´ƒÀ Ô€ƒÀƒ¼%%%%Š ƒÀÔ€ƒ´ƒÄ€¡ Ô€¡ƒ´ ƒ´ƒÄ€¡Š( Ô ÔƒÈŠ0 =ԃȊ4 ÔƒÈ=Š8 ƒÈ=Š< ƒÈ ÜÝ*àÔƒ´àÔƒ´Ôƒ´ƒ¸Ôƒ´Š\0 ƒÀÜÜàÔƒ´ù‰lÔƒ´9ÔƒÀÜÜàÔƒ´ù‰lÔƒ´à€Ä%€Üà€Ä%€à€Ä%€ €Ð%€ €Ì%€Š€ ƒÄ%à€Ä%€à€Ä%€€%,ƒ´ƒÀƒÄÜà€Ä%€ƒ¼Üƒ°Üà€Ä%€ ƒÄ)ƒ¼Üà€Ä%€ƒÄƒÀ7 ƒ´ƒÀƒÄÜÜà€Ä%€ƒ°ƒ¼,ÜÜà€Ä%€ƒ°€Ä%€>ƒ´ƒÀƒÄÜÜà€Ä%€ƒ°ƒ¼€Ä%€àÔŠüàÔÔ%"àÔ‰€‰‰p ‹  ÔƒÈ#ÔY€©QÔƒÈô‹,3øàÔ‰€‰‰p‚9‹Œ ƒÄƒÀ€µƒÄƒÀ€µƒÜƒÜƒ¬ƒÄiÔƒ´ƒ¼àiÔƒ´ƒ¼ ƒÜƒÜƒÄƒÀ Ôƒ´?àiÔƒ´ƒ¼àiÔƒ´ƒ¼ƒ¼Ôƒ´ƒ´‚ƒÜ ‹¨' ƒÜÔàƒÈƒÈÝ à3ƒÈàƒÜÔàƒÈƒÈÝ ‹´ ƒÜÔàƒÈ+ƒÈàƒÜÔàƒÈ‹ÐƒÈàƒÜ‹ÜƒÈƒÜ ܃¼ Ôƒ´ ƒ¼ Ôƒ´ŠP Ôƒ´ŠTŠXÜàÔƒ´Š\ÜàÔƒ´ ñƒ´(ÔYÔÔ%Ô€Š` € YÔÔ%Ô€'ÔYÔÔ%Ô€K ƒÀÜÜàÔƒ´ù‰l%ƒ´àÔƒ´àÔƒ´Ô€Ä%ƒ´Šd Ô€Ä%ƒ´ €Ä%Ô€Ä%ƒ´ŠhŠlƒÄ€Ä%;ƒÀ€¡ƒ¼Ôƒ´Ô€Ä%ƒ´Ô%ƒ´Ô€ƒ´ ƒ´ƒÄ€Ä% àýŠp €µ ƒÈ€µ€¡Št €¡€µ ƒÈ€µ ƒÄŠ€ƒÄ Ôƒ´Š„2 ƒÄƒÀÜÜà€Ä%€ƒ°ƒ¼Šˆ1 ƒÄƒÀÜÜà€Ä%€ƒ°ƒ¼ €Ä%€ŠŒŠ ƒÈ -ƒÈŠ” ƒÈ  ƒÈ8ƒÄƒÀƒÈÜÜà€Ä%€ƒ°ƒ¼ ƒ´ƒÄŠ˜iƒÈàƒ´ àƒ´iƒÈàƒ´àƒ´<iƒÈàƒ´iƒÈàƒ´%ƒÈàƒ´ Ô€ƒ´Üà‚ý! ƒÀÜà‚ýÔ€ƒ´‰l à‚ý Üà‚ýà‚ýà‚ýà‚ýƒ´# ƒÀÜà‚ýÔƒ´‰l€¹ €¹ ƒ3 ƒÀÜà‚ýÔƒ´Ô€ƒ´‰l€¹%% ‚ ƒÈ ƒÀÜàƒ ƒÀÜàƒ‰l àƒƒ Üàƒàƒ ‚àƒàƒƒ Ôƒ´ Ôƒ´" ƒÀÜàƒ‰l€¹Ôƒ´  ‚ƒ‚ƒ ,ƒÀÜàƒ‰l€¹Ôƒ´ƒ´% ƒ´ƒÄQ QàŠØ!ƒÀ‰˜‰œ‰ ‰ ƒÈ‰ŠàŠÜ ‰Šä ƒÈŠì ݉€‰Šè ŠðŠôŠøŠü ‰ƒ´‰p‹ àÔ‰€‰‰p €¹ ÔQ‹, ÔQàÔ‰€‰‰p€¹‰‰%ƒ´Ôi€©Q‹ €¡‰€‰‰p€¹€©Q ƒÈ€¡‹ €¡ÔY€©Q‹ Y€©ÔY€©QÔa€©Q ‹ a€©Ôa€©QÔe€©Q ‹e€©Ôe€©QÔƒÈ ‹  Y€©ÔƒÈ  €© QY€© Q‹, ø ‰€‰‚9 ‹00 øàÔ‰€‰‰p‚9  ‹43 øàÔ€¡‰€‰‰p‚9 €¹ ‚9€¹ ‚9€¹‚9€¹ ø‚9 ‹<* ø‰€‰‰p‚9€¹‚9‚9ô ‹@ ƒÐ ‚9ƒÐ ‹D ‚9ƒÐ ‚9ƒÐ É]  ‹H Ô€¹ÔƒÐ ‚9ƒÐ ԃР‹4 €¹ ƒÐ ‹D ‚9ƒÐ\ €¡‰€‰‰pÔ€¹‚9€¹ÔƒÐ‚9ƒÐÔ‚9€¹ƒÐ ‹L ÜÝ‹X ‰€‰ÜÝ€¹‹\‹`‹d ƒÈà‰€‰€¡ÝÜÝ€¹ƒ´ ƒÈƒÈ€¡‹h €¡ƒÈ ƒÈƒÈ Ô‰l‚9€¹ €¹%  Ô Ô €¡Ô €¡‰l€¹ A%€¡‰lÔÔ€¹‚9€¹€¹ ƒÈA€¡ €¡A ƒÈA‹Œ ƒ €µ‹ ƒÄƒÀ‹”‚å €µ ‚倵ƒƒÀ‚åƒÀƒ¬ Ôƒ´ ƒÈàƒÜÔàƒÈ ‹¤ƒ¬ €Ì€ÐƒÜ€Ì ƒ¬€Ì ƒÈà€Ä ‹¨ àƒÈ àƒÈ‹  à  €Äà!àƒÈàƒÈƒÈ ƒÈà ‹° ƒÈà ‹´‹¬ ààƒÈàƒÈ ‹¼ ƒÈà€¡ ‹À‹¸ €¡à ƒÈà ‹È‹Ä à‹Ì‹Ð‹Ø‹Üàà‹ä‹ìÔƒäƒÈ‹ô‹ø‹üŒ ƒÈà‰€Œ ‰€àŒ Œ ƒÈàŒŒŒ ofNativeInt toNativeIntget read write stackalloci‚ì胤ài胤ƒ¤ i‚ì胤i‚ì胤ài胤ƒ¤€Ã*i‚ì胤‚ì胤ƒ¤ƒài胤ƒ¤ƒ¤}胤ƒD]ƒ€Íƒƒ 胤ƒ¤ƒ$Á€‘ƒ,ƒ4ƒ<ƒ@‚ĂЂÀ胤‚Ôƒ¤ài‚Àƒ¤ài‚Àƒ¤‚À‚L‚üƒƒƒ ƒƒ¤èƒ¤€Ü‚Ài‚Àƒ¤i胤( ‚ĂЂԂÀƒ¤‚Ì‚ì胤胤$€Ü‚Ài‚Àƒ¤i胤ƒ¤,'|ShapeVar|ShapeLambda|ShapeCombination|àà à àƒ¤ |Bool|_|à à àƒ¤ |String|_|   à à à ƒ¤ |Single|_|   à à à ƒ¤ |Double|_| à à àƒ¤ |Char|_| à à àƒ¤ |SByte|_| à àƒ¤ |Byte|_| à à àƒ¤ |Int16|_| à à àƒ¤ |UInt16|_|  à àƒ¤ |Int32|_|   à à à ƒ¤ |UInt32|_|  à à à ƒ¤ |Int64|_|   à à à ƒ¤ |UInt64|_| à‚ìà‚ìà‚ìƒD] |Unit|_|iè‚Àƒ¤BàY‚Àƒ¤ƒ¤àiƒ¤à‚À‚Àƒ¤‚Àiè‚Àƒ¤iè‚Àƒ¤‚Àƒ¤(‚ĂԂÀƒ¤iè‚Àƒ¤ƒ¤è‚À3àiƒ¤ƒ¤ƒ¤ƒ¤àà胤胤 ƒ¤è‚Ààièè‚Àƒ¤ƒ¤ |Lambdas|_|àiƒ¤è胤ƒ¤|Applications|_| àYƒ¤ƒ¤ƒ¤àƒ¤ƒ¤àiƒ¤ƒ¤ƒ¤ |AndAlso|_| |OrElse|_|[àièè‚Àƒ¤àYàƒ¤€‘胤€‘€‘àYàƒ¤€‘胤-Ôƒ¤àYàƒ¤è]胤ƒ¤|SpecificCall|_|&!|MethodWithReflectedDefinition|_| àƒ¤}.)|PropertyGetterWithReflectedDefinition|_|.)|PropertySetterWithReflectedDefinition|_| àiè‚Àƒ¤ƒ¤ àiƒ¤èƒ¤ƒ¤€ÅÔŽ,i€ÁÔŒ¼ƒ¤!ÔŽ,èi€ÁÔŒ¼ƒ¤Ñi€Å ÑŽŽ ièàièèè#àièèèàièè]]]] ‚Ă̂ì à‚샤 i‚샤ài‚샤‚Ä‚Ì胤ƒ¤‚ìài‚샤ƒ¤ Y‚샤ƒ¤àY‚샤ƒ¤!‚Ä‚Ì胤胤ƒ¤ƒ¤‚ìàY‚샤ƒ¤ƒ¤a‚샤ƒ¤ƒ¤àa‚샤ƒ¤ƒ¤, ‚Ä‚Ì胤胤胤ƒ¤ƒ¤ƒ¤‚ìàa‚샤ƒ¤ƒ¤ƒ¤‚ĂРà‚Àƒ¤ |Var|_|àY‚샤ƒ¤àY‚샤ƒ¤ƒ¤ƒ¤|Application|_|‚Ăԃ¤‚Àài‚Àƒ¤ƒ¤ |Lambda|_|‚Ä‚Ì胤ƒ¤ |Quote|_|àa‚샤ƒ¤ƒ¤ àa‚샤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤àYƒ¤ƒ¤ƒ¤ƒ¤|IfThenElse|_|‚Ä‚Ì胤à胤ƒ¤ |NewTuple|_| ‚ẴH] à]ƒ¤|DefaultValue|_|‚Ă̂ô]胤ài]胤ƒ¤ |NewRecord|_|‚Ă̂ø‚L胤ài‚L胤ƒ¤|NewUnionCase|_|ài‚샤ài‚샤‚ü‚Lƒ¤àiƒ¤‚Lƒ¤|UnionCaseTest|_|ài‚샤ƒƒ¤àiƒ¤ƒ¤ |TupleGet|_|ài‚샤ƒ4]ƒ¤àiƒ¤]ƒ¤ |Coerce|_|ài‚샤ƒ@]ƒ¤ |TypeTest|_|‚Ẵ8]胤 |NewArray|_|‚Ä‚Ì胤胤ƒ¤ƒ¤|AddressSet|_||TryFinally|_|eƒ¤‚Àƒ¤‚Àƒ¤àeƒ¤‚Àƒ¤‚Àƒ¤M ‚Ä‚Ì胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤àeƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ |TryWith|_|$‚Ä‚Ì胤‚Ä‚Ð胤‚Àƒ¤ |VarSet|_|‚ẴD]ài]ƒ¤ |Value|_| ‚Ä‚Ì àƒ¤ |ValueObj|_|ài‚샤ƒ¤ |AddressOf|_||Sequential|_|a‚Àƒ¤ƒ¤ƒ¤àa‚Àƒ¤ƒ¤ƒ¤2àa‚샤ƒ¤ƒ¤ài‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤àa‚Àƒ¤ƒ¤ƒ¤ƒ¤|ForIntegerRangeLoop|_| |WhileLoop|_|#‚Ẵ }胤ƒƒ¤èƒ¤ àYàƒ¤}胤ƒ¤|PropertyGet|_|T ‚Ẵài胤ƒ¤ƒ¤}胤‚Ẵài胤ƒ¤ƒ¤èƒ¤#àaàƒ¤}胤ƒ¤ƒ¤|PropertySet|_|‚Ẵ€Íƒèƒ¤ƒ¤àiàƒ¤€Íƒ¤ |FieldGet|_|Yàƒ¤€Íƒ¤àYàƒ¤€Íƒ¤' ‚Ẵ$胤ƒ¤€Íƒ 胤ƒ¤àYàƒ¤€Íƒ¤ƒ¤ |FieldSet|_|‚Ẵ(Á胤 |NewObject|_|$‚Ẵ0€‘胤ƒ,ƒ¤èƒ¤!àYàƒ¤€‘胤ƒ¤ |Call|_|)àiƒ¤ƒ¤ài‚Àƒ¤‚Àƒ¤ƒ¤àY‚Àƒ¤ƒ¤ƒ¤ |Let|_|3ài‚Àƒ¤àiè‚Àƒ¤è‚À‚Àƒ¤àiè‚Àƒ¤ƒ¤9ài‚샤ƒ<]ƒ¤àiè‚Àƒ¤è‚Àƒ¤àY]è‚Àƒ¤ƒ¤|NewDelegate|_|àièi‚Àƒ¤ƒ¤?àƒ¤àiè‚Àƒ¤‚Ä‚Ì胤è‚À胤ƒ¤ àièi‚Àƒ¤ƒ¤ƒ¤|LetRecursive|_|à}à} }à}}]‚L à‚L ‚Là‚L‚Là‚L‚L]}}‚L ]]]ƒ¤{‚ĂЂԂÀƒ¤‚Ì‚ì胤胤胤àY‚Àƒ¤ƒ¤èƒ¤àièi‚Àƒ¤ƒ¤]‚Lƒ}€ÍÁ€‘]ƒ¤‚ì胤ƒ¤‚ì ƒ¤‚샤ƒ¤‚샤ƒ¤ƒ¤‚샤ƒ¤ƒ¤ ]] €½ €½ƒ¤€½èƒ¤ €…ƒ¤ ]]]] ƒ¤ƒ¤] ‚Àƒ¤] ‚ì] ]ƒ¤ è]ƒ¤ƒ¤]ƒ¤]] ƒ¤]ƒ¤ }ƒ¤ ƒ¤‚Lƒ¤ €Í Áƒ¤}胤ƒ¤ƒ¤}胤ƒ¤}胤ƒ¤ƒ¤ƒ¤}胤ƒ¤ €½] €‘€½] ƒ¤]ƒ¤èƒ¤ƒ¤]ƒ¤ƒ¤èƒ¤iè‚À胤iè‚À胤)iè‚À胤è‚À胤ƒ¤ ]]è]è]ÔÔ]]ÔÔ]] 耑 Ô€‘耑4耑]耑耑€‘Ô€‘à€‘,€‘]èÔÔ]]ÔÔ]]ƒ ÔÔ]]] €‘¹ƒ]ƒ!# ]]]à€‘à€‘€‘%ƒ }¹}€‘€‘] ]]è]è]ÔÔ] è] }¹ƒ]]ƒ!]è]]}2}]ÔÔ]ÔÔ]è]è] €Í¹]€Í€Í]è] Á¹ƒ]ƒ! è]ÁÁ]ÔÔ]è]]è]Á"Á]ÔÔ]è]è]ièèièè$èèièèièèèÔÔ]]èÔÔ]]iè]è]+e]èÔÔ]]ÔÔ]]iè]è]O ]ÔÔ]]èÔÔ]]iè]è]è]è]]€‘7€‘e]èÔÔ]]ÔÔ]]è]}è]è]]] ]è] ] è]] ]è] ]à]]€Å€Å€Å€Å €Å€ÅŽ,€Å]Ž,]Ôè]]Ž, Œ  ÔèèÔ'iÔè]]èÔÔ]]ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]Ôè]]&iÔè]]èÔÔ]]~iÔè]]èÔÔ]]ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]Ôè]]èÔÔ]]ÔÔ]]Ž,èÔÔ]] ÔÔ]]èÔÔ]]ÔÔ]è]Ž, è è è ‚ ‚À Œ¼Œ¼‚À ‚ÀŒ¼]8YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔŽ,ÔŒ¼ƒ¤Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ ÔŒ¼‚À ÔŒ¼ƒ¤7YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤èÔŒ¼ƒ¤ ÔŒ¼ƒ¤€½ YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔŽ,ÔŒ¼ƒ¤Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŒ¼‚ÀÔŒ¼ƒ¤ÔÔ]]ÔŒ¼ƒ¤Ž,ÔÔ]]ÔŒ¼‚ÀŽ,Ôè]}Ž,Ôè]‚LŽ,Ôè]‚LÔè]‚L‚ìŽ,5ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]0e]èÔÔ]]ÔÔ]]Ž,*a]ÔÔ]]ÔÔ]è]/a]ÔÔ]]ÔÔ]è]Ž,,e]èÔÔ]]ÔÔ]]i]ÔÔ]è]i]ÔÔ]è]y ‚ìƒ0ƒ }e]èÔÔ]]ÔÔ]]]èÔÔ]]ÔÔ]]i]ÔÔ]è]€ÁŽ,ÔÔè]‚ìÔè]}+a]ÔÔ]]ÔÔ]è]-‚¼ÔÔè]‚ìÔè]‚ì& Ôè]‚ìÔÔè]‚ìÔÔè]‚ì   €üÔÔè]‚ìÔè]‚ìe]èÔÔ]]ÔÔ]]]èÔÔ]]ÔÔ]]Ôè]}a]ÔÔ]]ÔÔ]è]ÔÔ]è]  i]ÔÔ]è]‚ìÔè]‚LÔè]‚ìŽ,ÔŽ,i€ÁÔŒ¼ƒ¤!ÔŽ,èi€ÁÔŒ¼ƒ¤€ÅÔŽ,ÔŒ¼ƒ¤ÔÔŒ¼ƒ¤]#Ôèi€ÁÔŒ¼ƒ¤€Å0‚ĂԂÀƒ¤‚Ä胤‚Ì‚ì胤‚Ø]] ƒ¤ƒ¤ƒ¤ ƒ¤‚D‚À‚D‚À‚Ă̂ЂÀ‚Ôƒ¤‚D‚À‚D‚À‚D‚Àƒ¤ Ô]] ‚D‚Àøc‚Ă̂ì胤胤‚Ä胤‚ЂÀàƒ¤àƒ¤ƒ¤‚D‚À‚D‚À‚Ôƒ¤%ø‚À‚Àƒ¤ ƒ¤‚D‚ÀÔ‚Ààƒ¤ƒ¤  Ü‚ÙÑi€Å ÑŽŽ èi€ÁÔŒ¼ƒ¤ i€ÁÔŒ¼ƒ¤i€ÅÑi€Åèi€ÁÔŒ¼ƒ¤Ž ÑŽŽ  ièi€ÁÔŒ¼ƒ¤iŽ Ž 3iŽ €ÅŽèièi€ÁÔŒ¼ƒ¤ àŽ Ž iŽ "èièi€ÁÔŒ¼ƒ¤ƒ)#Ôièi€ÁÔŒ¼ƒ¤ Ô] ƒ-àŽ !èièi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤€§àŽ €ÅŽiŽ iŽ Ž èièi€ÁÔŒ¼ƒ¤ƒ)ÔÔièi€ÁÔŒ¼ƒ¤%™iŽ Ž àŽ ÔŒ¼ƒ¤€‘€‘Ô]àƒ¤€Á]€‘€‘]ÁÁŒ¼ ÔŒ¼ƒ¤Œ¼ƒ¨  àà ƒ1   ài‚Àƒ¤ƒ¤ ‚L €½ƒ¤ ]ƒ¤ }ƒ¤ ƒ¤ ]€½]‚Àƒ¤ i‚Àƒ¤ ƒ¤i‚Àƒ¤ ] ]ÔÔ]] ]€½* èÔÔ]]ÔÔ]]]]]è]]è]] è] ]è] Œ  Ô ]Ô] ÔÔ]]Ž, ÔŽ,ÔÔ]] èÔÔ]]Ž,% Ôè]]èÔÔ]] Ô]] èÔÔ]] è]Ô] (‚ ‚À (Ô] ‚ ‚À ‚ ‚À Ô] ‚ ‚ÀÔ] ÔŒ¼ƒ¤Ž, ÔŽ,ÔŒ¼ƒ¤ èÔŒ¼ƒ¤Ž, Œ¼ ƒ¤ÔŒ¼ƒ¤6 Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ ÔŒ¼ƒ¤ƒ¤ è]‚Ä ƒ¤Œ¼ ÔŒ¼‚À ÔŒ¼‚ÀÔŒ¼ƒ¤‚À‚Ä ÔÔ]] ÔŒ¼ƒ¤ ÔŒ¼ƒ¤èÔŒ¼ƒ¤ƒ¤‚Ä胤 ÔÔ]] ÔÔ]] ‚ÀŒ¼ ] }è] ‚Lè] Ôè]‚L Ôè]‚ì Ôè]‚ì ‚ìè]* ]èÔÔ]]ÔÔ]]0e]èÔÔ]]ÔÔ]]€‘ Ôè]}€Í) ]ÔÔ]]ÔÔ]è]}                ]ÔÔ]è] ‚ìƒ0€‘ Ôè]‚Li€ÁÔŒ¼ƒ¤ i€ÁÔŒ¼ƒ¤Ž,èi€ÁÔŒ¼ƒ¤ èi€ÁÔŒ¼ƒ¤Ž, €ÅÔŽ,ÔŒ¼ƒ¤ ÔŒ¼ƒ¤ €Å èi€ÁÔŒ¼ƒ¤ èi€ÁÔŒ¼ƒ¤ ƒ¤ ‚D‚À ‚D‚À‚D‚Àƒ¤ ]Ô‚Ààƒ¤ ‚D‚ÀÔ‚Ààƒ¤ Ô‚Ààƒ¤‚Àƒ¤ €Å€Å i€Å €Å€Å i€Åi€Å(ƒ-ƒ- Žƒ- ƒ- ƒ-Ž ŽŽŽŽ€ÁŽŽ ŽŽ (ÔŒ¼ƒ¤Ž ÔŒ¼ƒ¤ ÔŒ¼ƒ¤ Ž ŽŽ€Á€ÁÔŒ¼ƒ¤Ž i€ÁÔŒ¼ƒ¤ ‚Ùièi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤ ƒ5€ÁÔŒ¼ƒ¤èi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤Ž,  Ž, ‚e‚e Ž, ÔŽ,‚e‚eèÔŽ,èŽ, ièŽ,ÔŽ,è ÔŽ,è iè0ièŽ,ÔŽ,èÔŽ,è€ÅÔŽ,(Œ@(€ÅŒ@ Œ@ Œ@€Å Ž, ÔŽ,è èŽ,àiÔàiè ièàiè àiiàiài2àièÔàièÔàiÔài+àièÔàiàiÔài ièàiè àiàiài2àièÔàièÔàiÔài+àièÔài Ž< ÔiÔiè Ž@ Ôi Ôi耑]Ôi Ž<Ôi Ôi Ž@Ôi ÔŽ,i€ÁÔŒ¼ƒ¤ ÔŽ,èi€ÁÔŒ¼ƒ¤Ñi€Å ÑŽŽ i]Ñi]‚À ‚À]‚Ì‚Ð‚Ô‚Ø €á‚Ä0 ‚̂̂ì‚ì胤胤‚ЂЂԂԂ؂؂ĂĀáE‚ô‚ø‚üƒƒƒƒ ƒƒƒƒƒ ƒ$ƒ(ƒ,ƒ0ƒ4ƒ8ƒ<ƒ@ƒDƒH €á‚쀆,‚ô‚ô‚ø‚ø‚ü‚üƒƒƒƒƒƒƒ ƒ ƒƒƒƒƒƒƒƒƒ ƒ ƒ$ƒ$ƒ(ƒ(ƒ,ƒ,ƒ0ƒ0ƒ4ƒ4ƒ8ƒ8ƒ<ƒ<ƒ@ƒ@ƒDƒDƒHƒH‚ì‚ì€á è‚ ‚ƒ¤‚]‚¼Ô‚L‚L Ô‚L Ô‚L ‚‚L‚¼Ô€‘€‘ Ô€‘ Ô€‘ ‚€‘‚¼ÔÁÁ ÔÁ ÔÁ ‚Á‚¼Ô}} Ô}‚}‚¼Ô€Í€Í Ô€Í Ô€Í ‚€ÍÔƒ¤àiè‚Àƒ¤ 胤 ‚Ì‚Ì‚Ð‚Ð‚Ô‚Ô‚Ø‚Ø ‚Ä‚Ä ‚ì‚샨 y ‚ƒ¤ ‚‚‚ ‚‚À ‚ ƒ¤èƒ¤ ƒ¤iƒ¤èƒ¤Žx Ô Ô‚¸ ksprintf kprintf Ž€ ÔÔ %ÔÔ‚¸ ‘Ô‘‚¸‘ kbprintf ‚1Ô‚1‚¸‚1 kfprintf Ž‘‚¸‘ bprintf‘ ‘‘  ‘  ÔŽt Ô‘ŽxaÔÔÔ# aÔÔÔ Ô Ô Ž€ aÔÔÔ$ aÔÔÔ‚1 ‚1  uޤààààÔޤàÔÔ àÔàÔà    Ôàޤ    Ôàޤ ]Ô i]]] i]]] i]] ¹ƒu i]]i]]]]]Ô]Ôi]]]]i]]]]%è]ÔèÔ]Ô­ ­ޤi iiYài ài iYàiiYàiiYàiiYài ài àà ÍYàààà@ iYàiàiààià YààààޤÔޤà Ôè]  ­'ÔèÔ]Ôè] àà àà2ÔèÔ]Ôààè]ޤYààààE ޤYàààààààààà&è]ÔèÔ]Ô   ­    Y€Ý €Ý €Ý€ÝY  iè+Y­€Ýà àà/ ièÔޤààè ­)ièÔޤàè‚´-¹àà‚e‚e‚´‚´à‚´‚´.ièÔޤààèiàèiàè Ô Ô Ô€§ޤYààààààààiàèààèè­àiàèèàèè€Ýàà)ièÔÔè iè Ôiè)ÔÔÔè!aÔÔÔ Ô'ÔaÔÔÔ aÔÔÔ\ aÔÔÔÔÔÔÔÔÔ3ÔaÔÔÔèÔèÔ]Ô , ÔaÔÔÔÔèÔ]Ô6ÔaÔÔÔè](ÔaÔÔÔ ‚¸ Žü* ÔaÔÔÔÔ-ÔaÔÔÔ9ÔaÔÔÔ‚¸(à à à àÔ]Ô Ô]Ô]Ô] & èÔèÔ]Ô]( èÔèÔ]Ô]]% èÔèÔ]Ô]# ÔèÔ]Ôè ]# ÔèÔ]Ôè% ÔèÔ]Ôè0 èÔèÔ]Ôàà(ÔaÔÔÔ Žü!aÔÔÔ'ÔaÔÔÔ aÔÔÔ3aÔÔÔÔÔ(ÔaÔÔÔ   è]u‚€‘% €Ä% Ô €Ä% €Ä%%€Ä%Ô    i   i  i  ài ài  ài  a ‚ài ài a ‚‚  a ‚ i w#a ‚‚ ‚èia ‚‚‚˜‚œ‚p‚ a ‚‚‚€‚|  i  ‚‚pa ‚Ô ‚Ô Ô ‚Ô‚ ièièè ièè iè0 ‚œ‚‚ièiè‚ ‚€‚‚"iè‚´Ôè‚#‚´Ôièèè‚´Ô‚ ‚1Ôèi $ ‚œ‚€‚‚‚ èi‚1ÔÔèiÔÔ‚1‚ÔÔèiÔ*ÔÔèiÔÔ‚1/ÔÔèiÔÔ‚1‚èi èii èièiièiì èi  ài èiìèiài¹‚Ôi‚‚ i‚‚Ôi‚‚‚‚èi‚Ôià‚‚ ià‚‚Ôià‚‚‚‚èià‚ ‚è‚è è Ü$ÔÜ ‚¹‚´ÑÜ à‚€  €Ä% €Ì% €Ð%Ñ‚9à‚ €  ƒ5€Ì%€Ð%S‚à‚]]€ àà€Ä%€Ì%à‚‚%€Ð%& ‚¹‚´ÑÜìÔÔÔ‚ Ô‚8 ÔÔÔ‚ Ô ‚D Ô‚ H Ô‚ i‚GÔÔÔ‚èièiè‚Ô‚*‚¹‚´ÑÜèi‚¹‚´ÑÜ‚ÔàiQ| ÔÔÔ‚&Ô‚ÔÔÔ‚  ! ÜÔÔÔ‚7Ôii‚ÜÔÔÔ‚¤ ¹Ôài¹ÔÔ‚‚QÔài Ô‚Ôài9)iÔÔ‚‚  Ô‚  ‚ ‚D  }¹ Q€É }ià‚ ‚ ii‚ €§$ÔÔÔ‚ÔÔ‚‚èi‚]QQÔàiè‚Ô‚Ôài]]9‚AA))}èiÑ%Ñܹ‚´ÑÜ‚¹‚´ Í %  €Ý ‚´ ‚‚´‚ ‚´‚1‚ ‚´‚‚´ ‚1 ‚´¹(    i‚ ‚‚ ‚i‚ ià‚à‚‚ ‚ià‚ $   ¹‚´ÑÜ ‚ Ô‚0 Ô‚ Ô‚ ‚ÔÔ‚4 ÔÔ‚ÔÔ‚ Ô‚ Ô‚8ÔÔÔ‚ÔÔ‚ ÔÔ‚<@D Ô‚ H Ô‚ ‚i ‚‚ Q i ài ài Q + ‚´ÜÔÔÔ‚Q ‚ i ài ài ‚i Ôi‚ ÔÔi‚ptx|I i‚ ‚] 9i ài ài  ¹‚´ÑÜà‚% ià‚}”˜œ  œ ‚ i‚ i‚i¤ ài  ‚´ ‚L]¼¼ ¼è] ¼]]¼èi]¼èièi]¼¼] (è] è]^YMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy ]]a\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(èi] èi] èi] èi]_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(èièi]èièi] èièi] èièi]\WMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+SumType@DebugTypeProxy_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxyÄ ÄÈ ÈÌ ÌÐ ÐÔ Ôì ìèì]ìèiìèiì]èiìì(è è è`[Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyjeMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy (èi èi èia\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy èifaMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy ]èid_Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxya\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyô ôø øü ü   i }i i}i}i} ì¹] i‚L]i‚L‚L}i ì¹ ì¹ i}Ô‚Ô‚‚‚ ‚‚‚‚‚‚p‚‚‚˜ ‚‚‚Ô‚Ô‚‚‚Ô‚Ô‚‚‚‚è‚è‚‚‚Ô‚‚‚è‚ Ô‚‚ è‚‚è‚Ô‚‚‚Ô‚‚è‚‚‚è‚‚‚ ‚‚è‚‚è‚ Ô‚ à‚Ô‚à ‚‚Ô‚èÔÔài àiài4è‚Ô‚ÔàiÔ Ô‚Ôài Ô(Ô‚ÔàiÔ4è‚Ô‚ÔàiÔh,è‚Ô‚Ôài ‚‚ ‚ èi Ñ  Ñ Ñ  ÑÑ    ƒ=Ñ ƒ=ƒA̓=Ñ Ñ‚\ ÉÉÉ ” 1 ô ‚h‚` É]€‘ ‚` A€™œ  1ü øü ü} }]¹ àÔàÔ]¹€„ €„Y  àY  €„àY àY àY  Y =µµ ±ƒE Y ƒE-µ=µ ±ƒEEƒE±ƒE0àY =µµ±ƒEY ƒEAàY ±µàY ±µY ±µ€ÅàY ]àY €… Y €…àY àY à à ]èi àiài]€‘€ÍÔ€ÍÔ€Íi ]¹ €Í¹€Í €‘i* ]€ÍÔ€ÍԀ̀Íi€Íi]¹ i i] ]]¹‚  -i ‚ iÔ]¹à à à  ]¹¹] ]¹] ]]¹Ô}Ô}]Ô}Ô}} }]¹}Ô]¹ àÔÔ(iàÔàÔÔÔ]¹ €…]¹ ]¹ €‘ €‘]¹Ô]¹]¹ ]]]]]]]] }}}ƒ }Á]ƒ]­ Á]¹ÁÔ]¹} Ô]}Ô]Ô]Ô]Ô]Á }]} }]]à à Ô}Ô}} }]¹Ô]¹ ]¹] ¹} ¹ƒu €Í€Í €ÍàY àY   ài€‘ ài ‚ ‚ €… }}€… ¹}  ]¹ ¹€‘ } ¹Á ¹ƒu }Ô  ÔÔÔ]] ƒI ‚Li ‚D isEmpty ‚D‚D‚D ‚D singleton remove‚D‚D‚D union‚D-‚D unionMany intersect intersectManyÔ‚D iter ‚D emptyÔ‚D forall‚DÔ‚D$i‚D‚DÔ‚DÔÔ‚D foldÔÔ‚D foldBack‚DÔ‚D ‚D‚Dè ofList ‚D ofArrayè‚D toList ‚D toArray-‚D toSeq ofSeq difference‚D‚D isSubset isSupersetisProperSubsetisProperSuperset ‚D minElement maxElement‚4‚,‚8‚4‚4‚,‚, ‚, ‚, ‚,‚,‚,‚,‚,2 ‚4‚,‚,‚4‚,‚,‚8€Ù (‚4‚,‚,‚8‚,‚,€Ù‚,N‚,‚8‚4‚4‚,‚,‚,‚,‚,‚,!‚,€Ù‚,‚,Y‚,‚,Y‚,‚,J ‚4‚,‚,Y‚,‚,‚,‚,‚8‚,&Y‚,‚,€Ù‚,i‚, i‚,;‚8‚4‚,‚,i‚,‚,‚,i‚,‚,5‚8‚4‚,‚,i‚,‚,€Ù‚,'‚4‚,‚,‚8‚,Ô‚,ÔÔ‚,‚4‚,‚8‚8‚4)‚4‚,‚,‚8‚,ÔÔ‚,ÔÔ‚,‘0€Ù‚,‚,‘4‘8.‚4‚,‚,‚,‚8‚,'‚,€ÙÔ‚,‚,‚,€Ù‚,‚,o‚4‚4‚,‚,‚,‚,Y‚,‚,‚,‚,‚8‚,‚,‚,&‚,€Ù‚,‚,‚,i‚,‚,4i‚,‚,€ÙÔ‚,‚,i‚,‚,] i‚,‚,‚4‚,‚,i‚,‚,i‚,‚,‚8‚,9i‚,‚,€ÙÔ‚,‚,‚,‚4‚,‚, ‚4‚,‚8‚,à‚, à ‚, è‚, è‚,8è‚,è‚,‚4‚,‚,‚,è‚,è‚,‘< è‚,‘<‚, è‚,è‚,è‚, ‘< è‚,&è‚,è‚,è‚, ‘< Ü‘< Ü‘<‘@ ‚,Ü‘<Ü‘<=‚,€„è‚,è‚,è‚,è‚,‚8‚4‚,‚,‚8‚4‚,‚,‚,‚,‚,#€Ùè‚,è‚,€Ù‚,‚,è‚,èè‚,‘D ÜÜ‚, ‚,‚,€Ù‚,==‚,A‚,€Ù-‘H €Ù ‚,‚,€Ù‘0‘4‘8(è‚,‘< è‚, Ü‘<‘@ Ü‘<‘D‘H ‚,‚,==ÔÔ ‘P €Ù ‘T ‚,‚, ‚D‚D‚D ‚  ‚ ‚ ‚ ‚ à‚  tryFind‚ ‚ ‚  containsKeyÔÔ‚ (àÔÔà‚  tryPickàà à#ÔÔà‚  pickÔÔ‚ $‚ ÔÔ‚ 1i‚ ‚ ÔÔ‚  ‚ %‚ ÔÔ‚  — 'ÔÔÔ‚  —'ÔÔÔ‚  ‘d -I Ii-i‚  ‘h ÔÔ iÔÔ‚  findKey ‘l"àÔÔ‚  tryFindKey‚ èi‚ -i‚ ièi‚ i‚  ‚  iIÔÔ ‘h ài ‘l ‚ ‚ ‚ ‚&‚‚‚‚‚ ‚ ‚ ‚"‚‚‚B ‚‚‚‚‚‚ ‚5 ‚‚‚‚‚ ‚€Ù‚4‚‚‚‚‚€Ù‚àà€Ù‚i‚‚Ei‚‚€ÙÔÔ‚‚i‚‚u i‚‚‚‚‚‚i‚‚i‚‚‚Ji‚‚€ÙÔÔ‚‚‚/‚€ÙÔÔ‚<‚‚‚‚‚‚4‚€ÙÔÔ‚‚Y‚Y‚O ‚‚‚‚Y‚‚‚Y‚‚E ‚‚‚‚Y‚‚‚€Ù‚2‚‚‚‚‚€Ù‚3‚‚‚‚‚ÔÔ‚ àA ‚‚‚‚àà‚(àÔÔà‚ÔÔ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚= ‚‚‚‚‚‚‚Ô‚ ‚ ‚= ‚‚‚‚‚‚%‚ÔÔ‚5‚‚‚‚‚—‚ ‚ ‚ ‚ ‚ ‚ —5‚‚‚‚‚—‚ 9 ‚‚‚‚‚2€ÙÔÔÔ‚ €Ù&èi‚èièi‚ ii‚ ‘t i‚ ‚€Ùèii(‚€Ù‚=i‚i‚€Ùi i iEiièièi=i‚A‚€Ù-i ‘x IÜ‚Iè‚è‚Fè‚è‚‚‚‚‚è‚è‚ ‘| è‚‘|‚è‚ II+è‚è‚‚I‘| è‚,è‚è‚è‚ ‘|Ü‘|Ü‘| ‘€ ‚Ü‘|Ü‘|=I‚ ‘t ‚‚i ‘x (è‚ ‘| è‚Ü‘| ‘€Ü‘| I IiIiI =II=I=I I ‘ˆ I - I ‚  ‘” ‘ -I I II ‚(I length1 length2 length3 length4   zeroCreate    create +ÔÔÔÔ init       #ÔÔÔ  Ô    Ô (ÔÔÔÔ iteri 0ÔÔÔÔ mapi lengthÔÔ   blit   -   - concat Ô Ô collect  append  copy è èÔÔ –ô –ô–ôÔÔ–ôÔÔ iter2 –ô –ô–ôÔÔ map2 — ——"ÔÔÔ mapi2 –ô –ô–ôÔÔ — —— ÔÔÔ iteri2 –ô –ô–ôÔÔÔ ÔÔÔ –ô–ô –ô–ô–ôÔÔ exists2 forall2àÔà àÔàÔàÔàÔààÔààÔà€Ñ€Ñ€ÑààÔà€Ñ€Ñ €ÑÔ i€Ñ€ÑiÔÔ ÔÔàÔàÔiizip Y YYY zip3 iiii unzip Y Y Y YYY unzip3rev –ô –ô–ôÔÔ –ô –ô–ôÔÔ——$ÔÔÔ foldBack2——$ÔÔÔ fold2–ôÔÔ–ôÔÔ –ô –ô–ôÔÔÔÔÔÔ scanBack –ô –ô–ôÔÔ reduce reduceBack Ô€ÙÔÔsortInPlaceWithÔ sortInPlaceBy sortInPlaceÔÔ sortWithÔ sortBy sort -ÔÔ findIndexàÔàÔ tryFindIndexÔ permute  sum  Ômin Ômax -=A average -=A sub    fillƒM ‘´ Ôà ƒM ƒM ‘¸ Ô ƒM ‘¼ Ô ƒM ‘À –ô–ôƒM‘Ä ÔƒM‘È –ô–ôƒM‘Ì ÔƒM‘Ð Ô ƒM ‘´àà Ô ‘¸ Ô ‘¼ –ô ‘À –ô‘Ä –ô‘È –ô ԑ̑Рèèèè-èèÔè èÔÔèÔè è tail èèèèèè è"èèàà&èÔàèèèÔàèÔÔèèÔèè è replicateè#èèèè–ôèè–ô–ô"ÔÔèè—èè——(ÔÔÔèèèè —è5 èèèèèè3è—èèèè 6èÔÔÔèèè map3%èèèè,è—èèè.èÔÔÔèè(èÔÔèèèè–ôè–ô–ôÔÔè èÔÔèèè%è–ôèè#èÔÔè"—èè——,ÔÔÔèè–ô5 –ôèèèèÔÔè–ô èè–ôè–ô#èÔÔè"—èèE —èèèèèè@ ÔÔÔèèèè,ÔÔÔèè–ôèè!ÔÔèèÔèÔèàÔèèèààÔàèÔàèèÔè$ièèÔè"ièèèi+YèèèèYèièè'èYèèè èÔÔè èèÔèè--èÔè ÔÔèàÔèàÔè-=A-=AÔè -=AÔèèÔèèèÔè - ÔÔÔÔ‘ ÔÔÔ Ô ‘‘ Ô ÔÔ Ô ÔÔ Ô‘ÔÔÔ ÔÔ‘ Ô Ô‘Ô‘ø Ô--Ô- ‘ü Ôài-Ôài delay unfold’° ’°’ Ô-Ô initInfinite’ Ô-Ô =AÔ- =A - =AÔÔ- =AÔ-====A ÔÔ-- ’ Ô==- -Ô==- ’ + Ô=Ô==--1-Ô=Ô==--’-Ô- where ’-Ô- ’ ÔÔ-ÔÔ- ’%-ÔÔ-- ’  Ôà-Ôà- ’$ i-i--- ’( iY#-Y---’, ) -) cast=ààAàÔà-Ôà-=ààAàÔ-Ô-’0 -==-- takeEE+ èèEE=A ---, èèEE=A=AÔÔ-=AÔÔ- ’4 Ô-Ô’< -- “-Ô-!ÔÔ==ÔÔ-==ÔÔ==AÔÔ-- compareWith%èè=èA’@ %èè=€ÑA’D -’H -Ü= truncate’L! -=Üi-i- ’P+ ÔÔ-Ü=!-ÔÔ-Ô==Ô=AÔ-àÔ==àÔ=AàÔ-Ü’T# -ÜÜ=-- windowed à=Üàà= à=àà=à=à=='-€ÑÜàà=i ài4ài-€ÑÜàà=àà=(àà=àà=="€ÑÜàà=Üàà=’X% -€ÑÜàà=’\ €ÑÜàà=‚-€ÑÜàà=-Ô cache’` readonly ’p Ô- i-"-i-Ô- groupBy’ ’t( -Ñ’ ’ = ’  distinct’ ’  ’x1 Ô-Ñ’ ’ = ’ -Ô- distinctBy ’|’€ ’Œ Ô- i-iÔ- countBy=A=AÔ-=A=A =AÔ-’! Ô-=Ü takeWhile’” skip’˜' Ô-=ÜÜ skipWhile==AÔÔ--=AÔ-‘ø =Ôài ‘ü’’Ô== ’Ô==Ô=Ô==- ’ -Ô== =’ == ’ ==ÔÔ ’ ’ === ’  ii Y Yi’,=’0= = %% ’4 Ô’8 “’<“Ô““““Ô““Ô“’@“p’D“t’H i’L -i%% i =i= ’P= =’T’T’T - =Üàà=’X àiài ài’\’`Ñ’ €Ñ ’d ÔÑ’ €Ñ’  i€Ñ’ Ñ’ €Ñ i€Ñ#’ i€Ñ€Ñ€ÑI’ €Ñ I’ €Ñ i- ’  i-I’ €Ñ ’p ’h-I’ €Ñ I’ €Ñ ’l I’ €Ñi-Ñ’ €Ñ -i-Ñ’ ’t Ñ’  ’  ’ Ñ’  ’x Ñ’  ’  ’  ’|’€Ñ’  ’„ ÔÑ’  Ñ’  ’  I’ i iI’  ’ŒÑ’  Ñ’  ’„’ˆ-I’  I’ iÑ’  -i’’”’˜’¬ Ô=-Ô= ’´# ÔÔàÔ)-ÔÔàÔ ’¸ ÔÔ’¼#-ÔÔÔèÔèÔ)èÔèÔÔèÔ’° ’È’°’È ’È ’È’Ì ’Ð Ô’Ä ÔÔ--Ô ’Ô - à-Üà- à- -à-!-ÜÜà- ÜÜà-’Ü' Ô-ÜÜà- -ÜÜà--Ô-’à’Ä--Ô ’ì+ ÔÔÔÔÔ ø4øÔÔÔÔÔ y’ y’¤’¨y ’  ’ ’ Ô=’¬ ’°’°’°“< Ô ’´ ’¸AA’Ä’À==’À’À% ’È Ô ’È ’È’Ì Ô ’Ð Ô ’ÔÜà-’ØÜà- à-%’Ü =-’à’ä  ’è ÔÔÔÔ ’ì’äÔÔÔ“ àÔàÔàÔ “’ô“ Ô’ôÔ’ô“’ü“’ô’ô“’ô“’ô’ô““(“(“$ ““(“(=““$“$“$“= ’ô’ô’ü ’ô“ ’ô“ ’ôGBMicrosoft.FSharp.Collections.Generator+Step`1+_Stop@DebugTypeProxyGBMicrosoft.FSharp.Collections.Generator+Step`1+Yield@DebugTypeProxy (“ “FAMicrosoft.FSharp.Collections.Generator+Step`1+Goto@DebugTypeProxy’ü“ ’ü““  “““ “(Ô’ô(àÔ(Ô“ “Ô“ Ô“““ Ô““““““  “’ô““’ô ’ô“$ à'’ô“““’ô(=“(“, “(“0=“(“8 =9 = “L Ô==Ô= “P ÔÔ=Ü=ÔÔ= “T ÔÔ===%=ÔÔ== Üà àÜÜà “X) Ôà=ÜÜàÜÜà=Ôà=Ô=Ü“\ Ô=Ü=Ô= “` ÔàiÜ Ü=Ôài Ü‚9“d ÔÜ!ÔÜÜ‚9 Ü‚9“<“h ÔÜÜ‚9àÜÜ‚9=àÔàÜààÜà'ÔÜàÜà Üà “l8 ÔàÔÜÜàÜà ÜÜàÜà)=ÔÔàÔ“x Ô==Ô=“8AA“@“@“@  “LÔÔ “PÔÔÔ= “T= “XÔà“\Ô=Ü “`àiÔài ài àiài“d Ü‚9“h Ü‚9 Üà “l Üà"àààà%“x- €Ù –ô –ô“ˆ –ô –ô€ÙÔÔ –ô“ˆ –ô“ y“” y“˜ –ô –ô“œ Ô–ô –ô yÔÔÔ“” Ô –ô“œ –ô à à isSome isNone àÔÔàÔÔàÔàÔààÔààÔàà bind àèà  base1 base2    Q] Q]zeroCreateBased  createBasedÔÔ initBasedÔÔ Ô!ÔÔÔ “° ÔÔ “´ ÔÔÔ(ÔÔÔ“¸ “¼  rebase(  “°  ÔÔÔ “´ “¸“¼ €Ù€Ù €Ù€Ù €Ù€Ù  èèèèÔèèèè –ôè–ôè#èè–ôè –ô*èèèèè$è–ôèè5 èèèè–ôèèèèèèèÔè ÔèèèèèèÔè–ôè–ô–ô èè èè!èèèèèèèèè1èèèèèèèèèèèè=èA è@èèèèèèèèèè èèÔ!èèÔè èèÔè.èièièèèèèiièèèYèY;èYèYèèè(èèèèYYèèè0èèèèèièièèB èèèèèèèY(èYèèèè  è"èèèè.èÔÔèèèèÔÔ#èÔÔèÔÔ Üè3 èèèèèè&èÔÔÜè ÜèÜè“Ø ÔƒY ƒY‚9Ô Create“Ü ‚9CreateFromValue ‚9 get_IsDelayed get_IsForced ForceSynchronizedForceUnsynchronizedForce“Ø“Ü InfinityNaN InfinitySingle NaNSingleseq unboxbox% raise% à% |Failure|_|not compare  failwith invalidArg nullArg invalidOp ZTThis function has been renamed to 'reraise'. Please adjust your code to reflect this rethrow reraise ifst isnd ignore Üref Ü ÜÔÔÔ"ÔÔÔÔÔÔ"ÔÔÔ “ä ÔÔÔÔÔ “è ÔÔÔÔÔ€í€×This construct is for ML compatibility. Consider using the '+' operator instead. This may require a type annotation to indicate it acts on strings. This message can be disabled using '--nowarn:62' or '#nowarn "62"'.>TIsHiddenà defaultArg  èèèè Ü incr decr exit  |KeyValue|    €Ý ‚e‚e string ÔÔ lock using] typeof‚=Ômethodhandleof typedefof sizeof hashidƒeƒe stdin‚1 stdout stderr“ì - “ð-abs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh “ô“ø pown Ô Ô “ä Ô Ô Ô “è Ô    ” =ÔÔÔÔÔÔ -aLThis function is for use by compiled F# code and should not be used directly´TIsHidden”  = = Ô Ô Ô Ô Ô Ô  - ”  = = Ô Ô Ô Ô Ô Ô  - ”  = = Ô Ô Ô Ô Ô Ô  - ” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -”  =   =  - ”  = =  - ” ”¨ ÔÔ!=ÔÔ”¬ ÔÔ-ÔÔ”  ”° ÔÔ#=ÔÔ ”´ ÔÔ!-ÔÔ” = = -              €Ý€Ý€Ý€Ý€Ý €Ý€Ý€Ý €Ý€Ý€Ý €Ý€ÝÔÔÔÔÔÔÔÔààà ààà+àààà,àààà9àààààà$:ààààààG àààààààà, H àààààààà0  ààà €‘] ”À]€‘ Ô ”Ä ]]€‘ÔÔ”È Ô• • •4 •HÔÔ•d•x•Œ• •´•ÈÔ– –  –4–H–\–p–„–˜–¬ –À” ””   ” ”    ÔÔ =          Ô Ô  =           Ô Ô  =           Ô Ô  =      ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =             =              = ÔÔ”¨”¬ ”° ”´     = ”À ”Ä Ô”Ð Ô”Ø”à”è”ð”ø•• ”È ]Ô Ô  €Ý€Ý €Ý€Ý••• •(•0• •<•D•4ÔÔ •T ÔÔ •`  •H]ÔÔÔÔ   •P Ô Ô  •\•l•t•d•€•ˆ•x•”•œ•Œ•¨•°• •¼•Ä•´ Ô•Ð Ô•Ø•à•è•ð•ø–– •È ]Ô Ô      €Ý €Ý     ––– –(–0–  Ô –< –D –4 ]Ô Ô–P–X–H–d–l–\–x–€–p–Œ–”–„– –¨–˜–´–¼–¬ÔÔ –Ì ÔÔ –Ø –À]ÔÔÔÔ –È Ô Ô Ô –Ô defaultof equals èèèè –ø –ô Ô –ô –ü–ô–ô –ô –ø –ô — — ÔÔ—–ôÔ–ôÔ — –ôÔ —  ÔÔÔA——–ôÔ–ôÔ— — — ÔÔÔÔ——Ô–ôÔÔ—Ô— —Ô–ôÔÔ— –ôÔÔ—! ÔÔÔÔ{———Ô—Ô–ôÔÔ–ôÔÔ/—ÔÔÔÔ—  — ÔÔÔ ÔÔÔÔÔ —— ——( —$" ÔÔÔÔ—$—Ô—ÔÔ!–ôÔÔÔ—Ô—, —Ô—ÔÔ—0 —ÔÔ –ôÔÔÔ—4# –ôÔÔÔ—8( ÔÔÔÔÔ€Ç —$—$—Ô—Ô—ÔÔ—ÔÔ–ôÔÔÔ–ôÔÔÔ8—$ÔÔÔÔÔ—$—(—$ Ô  &ÔÔÔÔÔ €É€á€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý €á €É€É€á €á—@—D€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý—ˆ€Ù]—Œ—„       ƒAÍ  u ƒAÍ  ƒAÍ  ƒAÍ    ]——”—˜ÔÔoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHiddenÔÔÔÔ —¼ —À —È€‘€‘ÔÔ€‘ÔÔ]] ÔÔ ÔÔ Ô Ô Ô Ô ÔÔ Ô Ô Ô Ô ÔÔ —´ ˜ ˜  ˜ ÔÔ ˜ ˜X ˜\ ˜d ˜P ˜¤ ˜¨ ˜° ˜œ—D                  €Ý€Ý €Ý€Ý €Ù—„ €Ù——”ÔÔÔ€ÝÔ€Ý Ô Ô Ô Ô —¨—° ÔÔ—˜]€‘ÔÔÔÔ€Ý €Ý€Ý     —¬ Ô ÔÔÔ ÔÔ ÔÔ ÔÔ Ô Ô ÔÔ —´]]]ÔÔ —¸ —¼ —¸ Ô —À —Ä —È —Ä  ˜ ˜ ˜ ˜ ˜  ˜ ˜ ˜  ˜P ˜T ˜X ˜T ˜\ ˜` ˜d ˜` ˜œ ˜  ˜¤ ˜  ˜¨ ˜¬ ˜° ˜¬%˜ì˜ü™{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden% QQ ˜ìQ ˜ì ! QQ!!  ! ˜ì  ˜ìQQ    ˜ìQQ ˜ì ˜ìQQ     QQ   ˜ìQQ  ˜ìQQ  (  ˜ìQQ   QQ ˜ìQQ ˜ì ˜ì             @            QQ€áQ QQ €á€áQQ  €áQQ €á €áQQ QQ €áQQ  €áQQ ' €áQQ  QQ €áQQ €á ˜ü™€á €áQ QQ  €á€ái €áY a €áae €áe €áii€áYY€áaa #€áee €Éii€ÉYY €Éaa#€Éee ˜ø™ €Ý     €Œ™ ]€ŒD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden˜ü™€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý,048<$,048<€±,,€É004488<<$$$€®,,004488<<(€É$$$€½$,,004488<<$€á\`dhlpT\`dhlp €é\\€É``ddhhllpp(TT€è\\``ddhhllpp+€ÉTTu \`dhlp€áT+TT€á(TT”˜œ ¤¨¬Œ”˜œ ¤¨¬ +””€É˜˜œœ  ¤¤¨¨¬¬,ŒŒ(””˜˜œœ  ¤¤¨¨¬¬/€ÉŒŒ€–”˜œ ¤¨¬€áŒ/ŒŒ€á,ŒŒè }™0 ™4Ôi ™8ÔiÔY ™<ÔYÔa™@ aÔaÔe™DeÔeyyy €Å“ µ‡B³ä5vÌ£–3ãHú§À|¢¯$§ñ-±)»Ü&D‘ttù›ÈQ±pœÜ@WàBk^ ó‰üßæw,G¿œS~TÁÖå#DõWs©¡`¹Ï¥â-fðÞ/<–Õ‹ä¤!î–¿’nf÷<Ú€¿z`$ð±×‹›Ä¹¤UÅ y EÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetŒPADPADP1Xó‚èŽw‡&1–‡ðÔS‰¸[lj 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—]ºO˜’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½é‡8lÅ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9áRéã(X—ä~Ë€è-$ê½CêYënêýÃÙê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú²‡û¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(ÉH+#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFoundÝNcontrolContinuationInvokedMultipleTimes! delegateExpectedp&dyInvDivByIntCoerceŠ dyInvOpAddCoerceÓ$dyInvOpAddOverload"dyInvOpMultCoerceg&dyInvOpMultOverload°endCannotBeNaNû4enumerationAlreadyFinished*enumerationNotStarted=4enumerationPastIntMaxValuej^failDueToUnsupportedInputTypeInSumByOrAverageBy­*failedReadEnoughBytesˆ,firstClassUsesOfSplice¶&genericCompareFail1é indexOutOfBoundsý"inputListWasEmpty7,inputMustBeNonNegativeR$inputSequenceEmptys(inputSequenceTooLong’LinvalidRecordTypeConstructorNotDefinedÆJinvalidTupleTypeConstructorNotDefined"invalidTupleTypesUkeyNotFound”keyNotFoundAltÎ0listsHadDifferentLengths0<0 +‚70  ¢€0!0 +Tÿ¯WBdìÈwE Š‚¾j—¥ ‚-0‚ 0‚ˆ  aÌ“f0  *†H†÷ 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 111010203225Z 130110203225Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚î[¾}$ã†àfÿHµ½ä´ 2ðr>}.‡×N¡±§C/÷ež1á21E®×Á$„!×.µ„~ú5ÓS×¶QOÎf¹ë· ý)\­¨‡öÊ"´Õ¿uõŠpc×ïŠéC$dZÓ‡}m;¬vÍW6}è¼V¬˜ð‰].dƯ& ^cñ=¿™ˆÃ0·Á `rÌÖ·¨5†›¡ æ“[ŽúTœÁó_BŸ?·'ƒ2‚óÙ‡Ô!²<¢¶O×$ªîõ³Ùúù9O§éò¯YRôÜA›/pcÝêÞªñm!S3»²OÅáS²AeGn7ö¼é›A‘k.[0ã‚0‚0U% 0 +0URó*·À‰Ã=Ô–X¹£Sn0Uÿ€0U#0€ËèÊÒ´XÉ7.3¹Lš 0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicCodSigPCA_08-31-2010.crt0  *†H†÷ ‚¥[6l­N›iãoŠ›iwÃldr(ˆÙ=Em,{Ô(/âYj 4·Šýê¹”ì1æjôuÓ§Ú^:žý© ½œQCoÿg”œáÏ|ð$°5̃]îÚÀo6IÀZ WösážóãL;>/ÌÒÍîO"p÷¦K›¸\ˆ6”l3¸©­Q ÐÂÜŽ"½Ãß‚×V¡÷Ýð¥ Wtlq›ÁðòÂp^§ÛmM7X™My@Ð4]Z%®gëNF°Œ)£¥3Ÿ#ÕøµF}àîc˜K>¨/°³Y¤¯ASŽ-*É:L.©1QVd¬šÌ¬—˜)Š—‡ê¶0‚º0‚¢  aŽB0  *†H†÷ 0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA0 120109222558Z 130409222558Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:F528-3777-8A761%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚–ìŽGMTÂ\•€×N =¿—CÃKã`g/M ØÑF/@Þ ¤PRˆ Cz-?îHnfÇ‘æÊnìy©j#›ÍbžÍj¤?ç£CÿbG¡´ºDúß@Á…T~è §,C#›R25ôþšVŸcw{0ž 3…rÊJÈÌ%ÍÛ].ǰŒñCHGµz åóïÁºô³ØÍ8û!ª= m…ÐÊç†À3ƒµ%ÄÌZœÄÃÚb%MS%aûàì÷GÆ€Eæ5S#6wʰݘ+9Àu5ÝL!=v0Ų°es)H'ØÂÒ°„G»xºÕtÞ×K÷SÞxÚ†÷aˆ&3´GÆ Tˆ+,u£‚ 0‚0U/èFÈhÓnO² ÐÞ‰NñGîHÁò0U#0€#4øÙRFp í@ûvû³+°Ã5³0TUM0K0I G E†Chttp://crl.microsoft.com/pki/crl/products/MicrosoftTimeStampPCA.crl0X+L0J0H+0†œvwñ%ÞGmÞI…¡ÚJKF!5¨u6L·³ªß·+Ù¾*jýß5Ì? ÇÝÏN”$c .$®_CDz\Ý7Û¤E³‘:W}ãGÆfÓÏœFVôL±à ªÕöÕ<¢àµÔø~Ukô‘ÍQ§•e0‚¼0‚¤  a3&10  *†H†÷ 0_10 ’&‰“ò,dcom10 ’&‰“ò,d microsoft1-0+U$Microsoft Root Certificate Authority0 100831221932Z 200831222932Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0‚"0  *†H†÷ ‚0‚ ‚²rY\0d¿š` B™vSl>ÖoÌËñêkþ—àß:tƒ·/ 2ìÿÞÂBN#ÕrÛ5W ‰Ê® Iôðh¬MK¥½yKq›GÚý%ßuˆÏªsD×Ûó½ò6¤É\Eܯ­=à(h—§¥rsVñ”äý5”r Öv_wEƒ…8Ðs[ºgR¥²i/Ú þ’t)âv/TÝ0YøÒbýËÉ_F1P¹'ä@0Ïr)("Ç7N= 2=Í¡8…\NV‚(*2·K×OcçÒ-bñE=ç¬öF¡žÑ[Œ&SèzªJòFÏ7<8ž´w\¥žËV<Á¬ _Ó£‚^0‚Z0Uÿ0ÿ0UËèÊÒ´XÉ7.3¹Lš 0 U†0 +‚70# +‚7ýÑ1NÓ&Š•á˜`;¨1o¦<¼Ø-0 +‚7  SubCA0U#0€¬‚`@V'—å%ü*á S•Yä¤0PUI0G0E C A†?http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl0T+H0F0D+0†8http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt0  *†H†÷ ‚Y9>&F¯ëo@±2µjë/n¨I÷ë_uíL;-×C­ þËé-1£#Ì|P˜€!]¬=/Lº¢¨Vœãp»¸´øyµIr÷>êAÊá iË¥œ -ú PÄVÍ-ãJÒ¼pç¨ ¢¥VชKWò•Bœñóïîã†4<¸VšðS#…*¤‚“â”òâNøŒ¡Ê襑NÈÒr•*qm›øðSÖgÌ"ÿ\Í¢Œ½'²ycVD¢QÍùé£XVÝ›ED/_ôÚ®Ô‚2nü¤•äëiç©¢,¾È+eŽ™Ûõ¢ú& e8”ñzJ»ÑáVèÐx–\É5_Ý“IŽ-¾­4Dî]Ý5[!Î˜Ç î…ŒOmN=|)HœrÑólÊÁìp£W’W}” HZ÷Ï£g t¥6í-/Èær7ôo±÷sõøÝãŠÂŽ8ÔåT¶…<°1ØÁã§ÔñP’c[×2[ØŒo¨n˜ß{EÒIµ°‹vš­Èµ*ç7@vñÉó¨y‘`F”“»~a F{MÊÃZ¤Ù¤t~™äað㟹ދ—ÕiuƲLµÆ wƒÙCeXHŠG‚ÚéjÀ‡sOùU}mW¹IŒ˜fFŒ²ÐsgØ#‚Pf«»ÐÌð$ ®A€Y»w{ãH|¨[{³¿2‘ødK½o;\‹|w@õ.ë PÐ\ä°›·ÞãÞŠÜK´OvN¡‚%Ã0‚ *†H†÷  1‚ 0‚0…0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA aŽB0 + ]0 *†H†÷  1  *†H†÷ 0 *†H†÷  1 120727022906Z0# *†H†÷  13j•©b)Ž“nt)ƒÛôàºlÈ0  *†H†÷ ‚t-¬dÝÚ4¿ƒb‹£d\%æƒV;)ðí8±•öù¢] ?«àhdݹ+n‹$)vÛá2%7± ·ˆ¢ÝÂËS\r)z$u6¸Ô¹;àæ?©BŽŽd–¯£g“®íã&iö=mЍ0'¥maNÌF•t¨q¿ÔôPOJUË+FeÞ­w.ŠYR·WC«ánH—c›vÖ ö«wpzDH]ÇX=Rt7ïI¤ˆ3·.´w(D¤ÐPèÀßêVø6‹=Ðzd3ñÓO½ÈƒjW#%Œw=HÊà4Œåš‹Ì9‹T9š0Ò`¶îc@ ã:;۵Ä8EÖ eê_5€O:¦0‚#  +‚71‚#0‚#Œ *†H†÷  ‚#}0‚#y10  `†He0\ +‚7 N0L0 +‚70  ¢€010  `†He Á!u»Û¶¢¤YL‰ñXm\žTŸjäsÙ“Þ…O\S ‚ ?0‚½0‚¥ 3âyú %XEê0  *†H†÷  0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20110 120707001432Z 131007001432Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚œQs·§/ΰ=X?,˹]::H÷lT~ܸ* m;YŽ%ÐN`tÛ´œ„UOÒ?†€;²ÔA‹°|ÕGÅKaIÚ a½D<äûØo`N3œí‰Q‚ßPÖÙ²>÷½€F—vŠÍ«r9¤q'âü²øÄñ´ÙŸ€òåCŠTý!cnøHzÊÜôP䶃"ŒGÁ*D>8ñ¶.¸±­ù0+„A£s»šp•)œ&ÍÎ9¿L/œ¶î*Z¬’ó6>âò)éP¢@Î2'å§c©£¥óÙû:Óœ³r£5Ex¼¾½€Ñ(kd‰óßtÁ„ÒEÖ@oÛ\-£‚,0‚(0U%0+ +‚7L0Ua??P’±.ÎòCqc\BF0U#0€HndåPÓ‚ª77"µm¨Êu•0TUM0K0I G E†Chttp://www.microsoft.com/pkiops/crl/MicCodSigPCA2011_2011-07-08.crl0a+U0S0Q+0†Ehttp://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt0 Uÿ00  *†H†÷  ‚‚ŸCk]²dR÷ÓæÅo‹ù…ÃPøÃãÃ(øtqëO'C…£Mõf†`a;ÝW¾ õ~/ž=¬E3]²¢vÑß`ï¡yN^ž|#áñ°qÓzA°"L„ÌŠWCÖ®›3=’f;”¯vþðd•bƒàWC;ÎGæÜuŒÒùÊj÷HíN2Ù LÂÇóf„¤È×÷>øôäŒÖ÷L¹Íò¹ÀÐêƒH9›2 ŽýÂxã¸[Ïð+0¾7w¢ùoÞÛÐ\CRú,•¬éGa÷s°Õär¸c3—Õ—ÿaðIî_–æ,µ5ïÏOå}k>YÚžðÍÖ°€HaŒ• ë€±FÖ5°i?ýã†r~˜Í#Céܶ z‡Õ¥Ý¿:£Ö‚úÑMxKí[¦ž 4„ðR¼NÀqÞ㑹sy ò64«,I¤`0 ‹˜&ýâd‚•±Œ]è‰O„ò¡/Yä;-®3XÅ·>þ2Ó³=±²¯’8~Ò€,õNV‘!5%Ã9ndSºœ­#„Ëôº†÷_ðÐR¿Œ”‡¼À!t%_(¶Ì'(8%˜9J6Ï|±’®#§©fìajá(I_ˆâ%]Ó!K>RĵW?$ðÑz[/Õ#ãp]QFw³øá¼¬‚_ÛÀ³½ÔUKç9¡é#I¼¸D|EäÁÃrzàrç$ß¿F™ÅïÂWÛƒìMI0§«Žßì[Ÿ¯üݰfâÁ—{íÖíKçI)§(¦§}g€æŠbx_²/„×Wœ\¿w((ñímÃ(,@7OÁá…D‰Ä LÅÔ¥C/t•÷nøx X,]`•š>O3„Ú°ˆÞžNô–°¼F l˜ÒàÖˆŒ £‚í0‚é0 +‚70UHndåPÓ‚ª77"µm¨Êu•0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€r-:1C¹Náê§Ç1Ñ#‰40ZUS0Q0O M K†Ihttp://crl.microsoft.com/pki/crl/products/MicRooCerAut2011_2011_03_22.crl0^+R0P0N+0†Bhttp://www.microsoft.com/pki/certs/MicRooCerAut2011_2011_03_22.crt0ŸU —0”0‘ +‚7.0ƒ0?+3http://www.microsoft.com/pkiops/docs/primarycps.htm0@+042 Legal_policy_statement. 0  *†H†÷  ‚gò†¥˜àTy.ÓØtg"› –ác’™B–}Òy Áe_.,>øÃrÑmƒþ¾?è Ê;¿G©£óiÛc¿"5¥—]e„}‹FPUØ ’|ÒKó.)›æ=¥Ôµw”9âédÉD=xz#ó}¦tƒôË&F*Š»¤© ›íhúh.• *?*kXIc inZ˜–äƒôÀóF+Þü;н5ïn%®å¯'íÐÝó¯™(—˜M= ò‰ÖÃ2âðÅ-Î[ž´I9 Æ ÂÆ­®å²ÙÛˆQEX82q'±ô'øÞ,: i˜²Y‰hno§·tÃ@¦*(>‚?Mf À³Mõáo}E§vå@*e£Ã]Rb†Ãc6—†ßÚóøò¡š'áÍ¥—Ðî]cAã[œ‡>wѱu¾aaµðÜÆ¾ßAÇ(îÞe/ì—ö¡\–ØÖ¡F½Yó—¥ KH™€Ð)ű›¥?Ew5ÆÒ¢¢Ÿzz"úH•«ûG#€õžø¿k·K—âëuxìê7™yKÿÖ³#huæ¯úü‹ë €êi;¯ü0íLŽßßumc‘=ÑVNO¿€W"¡x2!zïA ±?û¨Ì¤]Á¡ˆ›WqVNHEÀBÉ›v[ €HkýyŸÁ½mmjÉRs zPÍ1‚À0‚¼0•0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20113âyú %XEê0  `†He É0 *†H†÷  10 *†H†÷  1  +‚70 +‚7 10  +‚70/ *†H†÷  1" O·ì­‰,ø4 NsÜLÊNéòWõ¢òB³ê³>w0J +‚7 1<0:  €FSharp.Core.dll¡€http://microsoft.com0  *†H†÷ ‚ ›W´ôèzau·@$o} îÈo×+l'GzÛßã–ãBAÎÑ8½hj|$Qa·šÓ†6ÚŠu•R¯M®Í:õ Ø 2~Ï{ ¡’dºՙΣ‰ªjt¦^¤Žwž×û“Jè$(sáŒD;Ò ‰Sد¢Ù4È«[×¢ãÊÅè!$~p!8€®ŽÙÇ‹~Ë:ÍïÛIQW¹‹·q ØÑQ9‹£ƒñn™À&Ößû·f®žwGmÞH¡Ž³¤<á¡‚/0‚+ +‚71‚0‚ *†H†÷  ‚0‚10  `†He0‚= *†H†÷   ‚,‚(0‚$ +„Y 010  `†He }Ãç¨?ã1ESx)ëþZ­î‹éZ–íbUœZ§4ÁOó§³`20120727022909.763Z0€ô ¹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service ‚Ä0‚q0‚Y  a *0  *†H†÷  0ˆ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 100701213655Z 250701214655Z0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100‚"0  *†H†÷ ‚0‚ ‚© ¼wŠ: ìü—õúi”ktTÕ¥ ‚…ûí|hK,_ÅÃåaÂv·>f+[ðS'1A•Î Ž|a0Y±0Dñ`ˆ„TC ×M¸8³BÝ“¬Ös0W&‚£E ÐêõGÍ¿$`2X`FòXG†2„tag‘_T±Ï“L’ÁĦ]Ñan(Æù†€»ßaüFÁ'$gr!НKd‰Pb±]ýw=ðWu¬½ŠBM@QÑœ>gõfÀ–D~ïÐKýnåšÊ±¨òz* 1ðÚN‘¶ˆ5èx°é™Í<ç/Dº§ôÜd½¤Á “xÍü¼ÀÉD]^œO"M£‚æ0‚â0 +‚70UÕc:\Š1óC{|FÅ3hZ…mU0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€ÕöVËè¢\bhÑ=”[×ΚÄ0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicRooCerAut_2010-06-23.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0 U ÿ•0’0 +‚7.00=+1http://www.microsoft.com/PKI/docs/CPS/default.htm0@+042 Legal_Policy_Statement. 0  *†H†÷  ‚æˆQ âÆà˜?q=£¡!o³ë¦Ìõ1¾Ïâ©þúWm0³ÂÅfÉjßõçðx½Ç¨ž%ãù¼íkTW+Q‚Dû¹SŒÌô`ŠvÌ@@A›Ü\ÿ\ù^5˜$VKtïBȯ¿Æò7}Z?ò™yJ‘R¯8õ/yeÙ©µkäÇÎöÊzoK0D$"<Ïí¥–Y)¼¶ýápŸ2J'ýU¯/þ¶åŽ3»b_šÛW@éñΙfŒÿjbÝÅJ ‘&â9ìJqc{!mÜ£¢<ú}–jx¦mÒáœùü8Ø”ôÆ¥ –†¤½ž®Bƒ¸µ€›"8 µ%ådì÷ô¿~cY%z.9Wv¢qªŠ‰ºa§ËšØGš€ÅÐͧÐï}ƒðá;q ß]t˜"aÚ°Po½ñáßç1¤“:÷eGxèø¨H«÷Þr~akow©Ë§ ¬9»ìÆËØ‚´rÍô¸…€û‰*T9²[ÚÈ U™z‡s;æ˜-êà3.)õÀ/T'!÷ȬNÚ(¸±©Û–²§B¢ÉÏAMà†ù*š£f0Ó»t2Kßc{õ™Š/Ç!¯Yµ®ÜD<—PqסÒÅUãiÞWÁÑÞ0ÀýÌæMû ¿]Oé8/¼ÏX.ï  P5Úï 'Õ³~5ºÚ6ÛÓ_ÞtˆI0‚Ñ0‚¹  aõ 0  *†H†÷  0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100 120109213540Z 130409214540Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚¬ŠM±Kn!(ñÍÏ÷„Ó2QÜE;k+z!-@ÍˤQ˜É 4î•q¨ ó?MãñYhå¶.‹Õ½Ô *Er’ o¥HV´< ›EiøÞ#Q‰Š“ Ý‚w­‡ë‚_”‘îá†7M¨$qäp‡Ahu#’â‡;ÀLÞ˜€â¶ÛäÖ„]Ψ'¡ë´»›ôŠ3-Ýí‘nð4«Óþšbü^ІþÀGU’ƒ>Ø”š—Cu™cv2Þ Ïš~Ýx¾íÛº(§”vèvžnøú‚[³3’ ¹ÓÀä݃6Ì­±œEXlhVFÂs*Ú ÖÖÖ—_÷6>ð¦âÄÙ£‚0‚0Uþ¢†xöá›/zßšêÑ!ê~§0U#0€Õc:\Š1óC{|FÅ3hZ…mU0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicTimStaPCA_2010-07-01.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicTimStaPCA_2010-07-01.crt0 Uÿ00U% 0 +0  *†H†÷  ‚ŸzœVü$»”eØB5ß-†ÂÏYÈ!‡Q=gâÌïñÖ 5:L«?¦˜ém"[Ð;Ï–†Sͬö4.‰ùÿà9§!<áÖðo)íÐ Mr#ƒõÚø­»•œ* —#/º^ 4¶†r:½q€¿9jð‘ùý y,ŸFyˆ¿‹ N“´¡¯ôZ>,ð»ÇÙ§YtìÅŽ¡×d‘£™V/õ¯a§‡zÐÈ~MNdŒù/$¨2Ý)°Có·Ò›åˆ°G*ŒÖ)òµÍFtA^È Åø'¦Ô2l ß`¼‡l]3]ZÊ€vê4ÿiàûË®\c§ è·lä{¸¡‚v0‚^0㡹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service¢% 0 +›ðï7‰íIHKNŵ°æ“‡e0 Â0¿¤¼0¹1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher NTS ESN:B027-C6F8-1D881+0)U"Microsoft Time Source Master Clock0  *†H†÷ Ó¼_0"20120727002814Z20120728002814Z0t0: +„Y 1,0*0 Ó¼_0 0á0 Ó½°ž06 +„Y 1(0&0  +„Y   0ã`¡ 0¡ 0  *†H†÷ ‚šœWiƒ­cµnh’PL7I\FèÖÅD îØò(V-ˆX K bJ~h¬sã:q­+AŽÞõ‰€ž’tqã‡Ë>°xµPGªÜË–³s×j¿U!õ®o³:–•Zád€?N“ŒT/±º!ÆSHþ(>áóúÁ Åʾ?S¼š_ÌÚsÓ©wÍp—SU£f^YG#2 „UEx£ÑjT~[ÓlA_ß›A¿Xv‘;jXž˜˜–©ÓM”–¤-Ti¬.Î× ì§;×˼e¢kd3Üä&ðÇ(~ SŒxÞ)Ø9çÔ®i Á1âë®/l³¢H¸UÊ Žû-:sB1‚ã0‚ß0Š0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0  `†He ‚)0 *†H†÷  1  *†H†÷  0/ *†H†÷  1" ×䔚ÿ7¿±œ–©Ž·:F]Ûœ¬ÅöÃà'È9¢Øê¦0Ù *†H†÷   1É0Æ0Ã0¨›ðï7‰íIHKNŵ°æ“‡e000€¤~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0®×=¹Ã„¿„F¯ø”9Ú~™Wo0  *†H†÷  ‚oeÆ$ºÏz—^Žç—ý®ž§ü«¥HgÞ¡~:~›5ÏÜãšÛn‰Éç2‡µ*F¹Š?l_}K:ª¸íæ­¬·ß¼µãû—ÈRÓ"[`æœeÇ~(fàî3Çoo ÀK,Ù,VáVUÆÔÖÏu|”7šfsharp-3.0.34/lib/bootstrap/4.0/FSharp.Build.dll0000775000175000017500000014200012260314606020072 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL=‘Pà! ¾žÛ à@  @?Û\ ¤Û  H.textÔ¼ ¾ `.rsrcàÀ@@.reloc Â@B{ÛH D€O ”3GŒ“€*o &*rþ~ / ( +~*vþ~ / ( +€*0rps  r p(+*0 r p( *¶þ~/ ( +~o ( þo *v£ £ ( þ( *–o ,+o ,+o þ*þ(, o +,'o þ~/ ( +~þo **00( , o s *o ,+Ûr)ps z0' (  ( £  s”þ(*0i o %YEDdYE%fYEsYE rgps zs–þ( *Xþ(+*þr‘pr—po" r›pr¡po" r¥pr«po" r¯prµpo" *06o# o$   (% Ð (& (þ(+*0<þ~ / ( +~, þ(+*( (  (+*6€9~9&*Êo &s* }(+ }(+ }}*>{þ(+*>{þ(+*>{þo- *0r{o.  +R£, s* r¹po/ o0 o- ~1 (2 -o- {(3 }+X Ži2¨}*0F{o4 s* o5 o- ~1 (2 -{(3 }**0D{o6 s* o0 o- ~1 (2 -{(3 }**0I{o0 s* o0 o- ~1 (2 -(n{(+}**‚{o8 {(3 }*0†s9 o: &(; } } } } ,} }}}}}}}}}}}},}},},}}}} }! Ð(& o< o= (> (? Þ t$ Þ (Š -r¹p+ (@ }"}#}$}%}&}'}(})}*}+(+ },(+ }-}.*Ü!ý vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{#*zþ{./ (A +}#*vþ{./ (A +{"*zþ{./ (A +}"*vþ{./ (A +{$*zþ{./ (A +}$*vþ{./ (A +{%*zþ{./ (A +}%*vþ{./ (A +{*zþ{./ (A +}*vþ{./ (A +{ *zþ{./ (A +} *vþ{./ (A +{!*zþ{./ (A +}!*vþ{./ (A +{&*zþ{./ (A +}&*vþ{./ (A +{'*zþ{./ (A +}'*vþ{./ (A +{(*zþ{./ (A +}(*vþ{./ (A +{)*zþ{./ (A +})*vþ{./ (A +{**zþ{./ (A +}**vþ{./ (A +{+*zþ{./ (A +}+*rþ{./ (A +r»p*®þ{./ (A +{),(B *(C *®þ{./ (A +{),(B *(D *0Fþ{./ (A +{"r¹p(2 , (sE z{"oF (G *~þ{./ (A +þoH *‚þ{./ (A +(I *0 þ{./ (A +oJ Œ5 9æ{ Œ,+ rËpsK zŽi % Y2$£,o/ ¤%XX3Ü spþqsL oM r×p 4%Œ¤%{,(+Œ¤%{-(+Œ¤(O oP ¥9 Þ t$þ *(I *œg 0 ’þ{./ (A +s rçp{orïp{ o{ ,rpo+r p{ (2 ,+I{ oQ rp(2 ,+,r)p(2 ,r9p+rIp(2 ,rSp+o{,r]po+ryp{ o{   +  £,r—po/ o X Ži2Úr«p{or¹p{orÇp{o{,rÝpo+ rõpo{-r po+r'p{or5p{(o {{(orMp(2 ,2,&r[p(2 ,rcp+Yrp(2 ,+èr›p+Ar©p(2 ,r±p+,r¹p(2 ,rÁp+rÉp(2 ,rÙp+o{  +  £,répo/ o X Ži2Úrp{#o{  +  £,rpo/ o X Ži2Ú{,'{:%;¤:%,¤:oR +r'pr5por9p{(2 ,+b{oQ rMp(2 ,r]p+Ar[p(2 ,rmp+,rp(2 ,rup+rƒp(2 ,r‘p+o{,SrŸp{:% ¤:%;¤:%,¤:% ¤:% ¤:oR r5po+r³p{o{ ,rÃpo+{!,:{!rßp(S :% ¤:%;¤:%,¤:oR +%%rép¤%rïpr5por p{$or%p{%o{&,rGpo+{',r]po+r‘p{(o{),r¡po+r»porÓporíp{*o{+,rpo+ r7por¹p{o{(+},{rYpo{(+}-þo- *~þ{./ (A +þoT *Šþ{./ (A +þoI **oU &*0N ,+ r¹p(V r]poW ,r]poW þ+, r]p(S **0%(X rsp(Y ,*r{p(Y *0¼#(+  o$ <£/ ([ +,X +ç<}s\ /þ+,No "YE)- (] +,+Á o^ X +°þX +¢ o- (3 8\ÿÿÿ8Vÿÿÿ*N(2 ,*oQ *’}/}0}1}2( *~{/{0{1{2of*rƒp*r±p*~3* *~4** *~5***0.$rÁp(S (` ¥% Þ t$  Þ(Ž* 0ã((a ob oc 2 + ~d (y(e (|`(u-O(y (v-þ+,(yþþ+,Y[(f Þ5Þ0Þ+ ~d . (w+~g . (h &Ü&Ü Þ t$  Þ(Ž*5l¡+ÏÑ ~6*Z(,(*(€*0(i oj (k -(? **09 (l om (k ,*(n o= (> répo" (? *0N+(o rýpsp oq or , os ot ou (? Þ Þ t$ Þ*@A ~7*0,(v Þ t$  Þ* 0(-r-p(G (G (v Þ t$  Þ*  0G/,c (@ r»p(G (v Þ t$ Þ ,+"r5p(G (v Þ t$ Þ ,(@ (? *(t,Q(t(@ o$ 1o 3þþ+,rEpr›psw +"r›prEpsw +r›prEpsw (x (y (‚-X(‚-Irñp(z   (k ,+ (? -sŒ(†( +  -(ƒ* **** ! @ I 0*0rp(„ - (‰ Þ Þ t$  Þ* *(| *0¥1rKp(ˆ,rSp(ˆ+,r-p(G rSp(G (…+ -Sr[p(ˆ,rkp(ˆ+,r-p(G rkp(G (…+ -* (@ (? * (@ (? *J(k ,*(? *0²2Ð(& o< o~ o o- ,r¹p(2 , Þ(? Þ Þ t$  Þ€3s€ o €4 €s‚ €5(ƒ þ€6r{prãprùp(+ (3 (3 (3 €7*AD 0 ¾4s˜ 2+o %3 Xþþ+,)s\ sš( +o… o- Œ%*(† ,X8‚ÿÿÿo %YEX8SÿÿÿXþ( *ús’( +€€Ð(& o €€€ €*(ˆ *Frp(n s‰ *V(Š }:};*Z{:{;þ( +*r(Œ }<}=}>*0 ${>{=( {<Xþ(+*r(Ž }?}@}A*0 {?{@{Aþ(*²}B}C}D}E}F( *0±{EYE + +h+[8€{B( +¥o }D}E{Do‘ ,0{Do’ }C}E{C}F*}C+Ã}E{D(+}D}E}F*0‡6 {EYE++e{EE + ++++}E{D(+}E}F Þ t$   Þ&8„ÿÿÿþ,z*Qj Æ{EE + + +++***"{F*0 {Bsš*BSJB v4.0.30319lì#~Xø#StringsP;#USdC#GUIDtC #BlobW¢ ú3YFŸŠ“Z64Xyr ßÅ>(" ; µ ˺ø #ë r#F)‡`¬ èÖÖÖ5ÖPÖ‰iÄ¥Ørî_Br klÓ â 5 eiœ€¸€ê ›r°rèr^r¡ å    ÅQ )« ‘ < [ O Y ÖŸ•Òr†r ’Ŧ‘ °røÖÖ r#r.r¯•¿r: IO ¾îM=r§rÃrÕrâ¥rYr»¦ákLqLw•ˆL¥LµLâîýîwÖ„O «)е# Hµ‚oi ‘‰ «” Á”  ” /k€•z/n€·”/n€Âz/n%Ç/p€ïÜ3r 3Œ…J3Ž€Qz3€žh9€¢z9 « :’ Û:” â<– ?˜%SBš8lItPxd{ ¤©1 ©6 x{ Ò‡ Ò x Ò§ >· ÒÈ ÒÚ Òð Òø x x x Ò" Ò1 Ò9 ÒB xN >Y Ò8>g >o Òz Ò‡ x Ò® Ò· Òà ÒÌ ÒÚ xã xù Òx Òx*©<©N{¤TRÒ]ÒrÒ3ÃM3{3%/ 3;x3G©i{i{å 9t{` – ‘Ò Ò{` ÃC  V{YÃP Ð~\ ¡†| ¹Šœ ñÎÄ ‚à Vñ!Ñ0!38X!t8˜!ºgÔ!Ξ"í €"#ñÀ"}s#ÆsL#Þ‚\#Ð~#ƒd Æ #ƒv ư#ƈ =À#ƒµ Ó@$ƒ ”$ƒ Üä$ƒÛ Ü<%ƒP `%Ð~'†Ã=$'†ÓD'†ã=d'†ð„'†ý4 ¤'†H Ä'†=!ä'†-!(†;="$(†P"D(†g›#d(†{¢#„(†=$¤(†¥$Ä(†»=%ä(†Õ%)†ï=&$)†û&D)†4'd)†H'„)†'4(¤)†4H(Ä)†C4)ä)†QH)*†_=*$*†n*D*†}=+d*†+„*†£=,¤*†¯,Ä*†»=-ä*†È-+†Õ4.$+†åH.D+†õ›/d+†¢/„+†=0¤+†%0Ä+†7›1ä+†E¢1,†S›2$,†_¢2D,†k=3d,†z3„,†‰=4¤,†™4Ä,†©=5ä,†¶5-†Ã=6$-†Ù6D-†ï=7d-†7„-†=8¤-†.8Ä-†?49ä-†YH9.†s=:$.†ˆ:D.†4;d.†¹H;„.†Õ4<¤.†ïH<Ä.† ==ä.†=/†4>$/†*H>D/†9=?d/†N?„/†c4@¤/†uH@Ä/Ƈ=Aä/ưA0Æ·°A<0Æ=A0ƒ=A°0ƒB¼AÔ0Æ6¼D2ÆH=G¨7ƒd=GÈ7ƒˆ¼Gì7Ð~Jø7ÆœGJT8Æ$hOˆ8k PP9ñQd9ЩRŒ9ƒ¨²V¬9¨ÎW´9ÛÎW¼9éW€ "ñW€ oû\€ ³ bÄ9¿ cÌ9Ë cÔ9Ý cØ9ó cà9 cè9 cì92 cð9_& c<:& dH;C†eP;O& eh;•éf”;2& fÜ;½& gH<Ò¯ hP<ûi h„<âiÈ<>" k8>{A m€>œ†n„>Ð~nŒ>F¨` n@?º& oT?Þ‚p$@ûæ pð@Þ‚v0AÐ~v8AF¨ vLAÐ) wdAF¨[ y|AÐg zœAF¨† }ÌAÐ ìAF¨” ‚BШ …HBF«â ŠCF½~‹¬CFÃ4‹àCFÒü ‹ìCFä ‹Ñ`áå?ƒ??å ?5‘ Ô   ( /  ( 6 ( 6 ( 55Ñ5ee555ÑAA55555e5ee55555A5AAAAAAR]rR]rR]rÐÙæô 1ƒ5¤R]r¯06@KW0€™¡©0†††?Îhsh5‘ ?så9=9A‘ ?CVY¸qÐíyÐЉБЙСЩÐH±ÐH¹ÐY Ð~Ù’‚<ÐDàñAå9VêùÐ~§û ÄÐQ 4Q4Q%4QB4QT>QmCQ‡ILÐZQ£>!ÐLć)ï³TùÄ),\=)7AdBKQLWÙp_9®„AДQÐ~tBKY\ ¶ ˆ =Qµ ÓaÎ =QÛ Ü)ù Ò)mâtÿ èQ QÛ Q ÜiF QP |ÐeÐ~|eeQrkˆ=‰¤ñ„µw„àÙº‚q”ª°·°‘Ðì=‰ø¶=6¼¡—Ó±Ð”Ðæ Æ>YÎìñÖåQëü)=)())A¶H=Ð~œG)¶R‰ñ)m_ñÐ~ÑW{ùÐ~ÑWùd†Ð~ V ™8 ·> !ËA)Ý/ 1êD 1ùI 9Ý2 1O Acc Au=)‡i IÑn Qt y i|ñYÐYq‰ qŽ4aš y– =iôi ¤ÐZ¤Ä‡¤àñY6× Ð~‰Ði o ™·> ¡Ð~q’²)Ð… 9¢ ©Î­ ùÞ¿ Ñë{¹2õ Ð~9Ð Ð~´ùC $Ð~dÿ è,Ð~4Ð~¼aÁ ÉŽ4Ä—àÙ£Ò . ô. . .# .+;.3p.;„.;á.CM.KS.S_CK›cK›ƒK›£Óö£K›À‹öà£#à‹öãKm‹ö ‹ö#K·@‹öCKm`£#`‹ö€£€‹öƒKm ‹öÀ£#À‹öà‹öƒK·IK̉KÌéKÌIKÌaëp iKÌëp ¡ëp Áëp áëp ëp ‹öûö!ëp !‹ö!ûöáëp á‹öáûöëp ‹öûö!ëp !‹ö!ûöëp ‹öûö¡ëp ¡‹ö¡ûöÁëp Á‹öÁûö@‹ö@ûö`‹ö`ûö‹öûö@‹ö@ûö`‹ö`ûö ‹ö ûöÀ‹öÀûö ‹ö`‹ö`ûöÀ‹öÀûöà‹öàûöœ·ÒÕtbv‚Œ°é{kΤù DMTX‚ÃÆ>Ê %x3Z©v / 2 5 T  „ · ¾ Æ ø 1 N Š – È í ñ  ($h] )i )r - )‰ )š 1ª )¼ )Ò )Ú -æ -ï -ù ) ) ) )$ -0 1; )I 1S 1[ )f )r ){ ) )Ÿ )¬ - )Ó -ë - ) - )" -0 )9 8d 8µÀÇÀêÄÕÕÕ.Õ>ÙQÕaÝhhpáŽh  " ! $ # &%('*),+.-0/2143658!7!:#9#<%;%>'='@)?)B+A+D-C-F/E/H1G1J3I3L5K5N7M7P9O9R;Q;T=S=V?U?XAWAZCYC\E[E^G]G`I_IaKbMcOrQsStUxWyYz[{]|_}a~ce†g‹ib'.7E§ÙO¸2ET°]qÙÞùÏ y ; º Ë ë"íoï³€KŸ€ è _ / ‘ r0$ 9E  ŸŸ³CäOfQffY³o³³÷ó »  » Y» 'Ù FSharp.Build.dllFSBuild.resourcesFSharpSignatureData.FSharp.BuildFSharpOptimizationData.FSharp.BuildSystemObjectmscorlibFSBuildSRMicrosoft.FSharp.BuildFscCommandLineBuilderFscMicrosoft.Build.UtilitiesToolTaskMicrosoft.Build.Utilities.v4.0CreateFSharpManifestResourceNameMicrosoft.Build.TasksCreateCSharpManifestResourceNameMicrosoft.Build.Tasks.v4.0$CreateFSharpManifestResourceNameAttributes$FscbaseCallDelegate@360Internal.UtilitiesFSharpEnvironmentresult@274Microsoft.FSharp.CoreFSharpFunc`2FSharp.CoreFSharpOption`1Option$CompilerLocationUtils.$Assemblyinfo.FSharp.Builddll$FSBuild-cctor@17UnitSystem.ResourcesResourceManagerclo@48clo@55-1FSharpFunc`3OptimizedClosuresTypecapture@68-1FSharpFunc`4Microsoft.FSharp.CollectionsFSharpList`1capture@71-2Microsoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1FSharp.BuildFSharpInterfaceDataVersionAttribute.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.Runtime.CompilerServicesInternalsVisibleToAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesSwallowResourceTextresourcesLazy`1funTyCswallowResourceTextinit@14IntrinsicFunctionsLanguagePrimitivesFailStaticInitget_SwallowResourceTextset_SwallowResourceTextbPrintfFormat`5PrintfFormat`4toolpathUnknownRunStartupValidationget_ValueSystem.GlobalizationCultureInfoget_CurrentUICultureGetStringnameCompilerGeneratedAttributeMicrosoft.FSharp.ReflectionFSharpTypeMakeFunctionTypeFSharpValueMakeFunctionmkFunctionValuetysimplCompilationArgumentCountsAttributeget_IsArrayget_IsByRefget_IsPointerisNamedTypetyget_IsGenericTypeGetGenericTypeDefinitionEqualsisFunctionTypety1GetGenericArgumentsTuple`2get_BaseTypeExceptiondestFunTyget_Item2buildFunctionForOneArgPatStringget_CharsInvokeFastcapture1fmtiargsgoReplacepostProcessStringsget_Lengthget_EmptyGetTypeFromHandleRuntimeTypeHandleUnboxGenericcreateMessageStringmessageStringTPrintfModulePrintFormatToStringThenGetStringFuncmessageID.cctorCompilationMappingAttributeSourceConstructFlagsbuilderCommandLineBuildersrcsalreadyCalledWithFilenamesListModuleReverseCapturedArgumentsCapturedFilenamesToStringMicrosoft.Build.FrameworkITaskItemAppendFileNamesIfNotNullget_ItemSpecAppendSwitchUnquotedIfNotNullEmptyConsfilenamessepAppendSwitchIfNotNullswitchvaluesvalueOperatorsop_AppendAppendSwitchBaseAddressCodePageDebugSymbolsDebugTypeDisabledWarningsDefineConstantsDocumentationFileGenerateInterfaceFileKeyFileNoFrameworkOptimizeTailcallsOtherFlagsOutputAssemblyPdbFilePlatformPrefer32BitReferencesReferencePathResourcesSourcesTargetTypeVersionFileToolPathWin32ResourceFileWin32ManifestFileWarningLevelTreatWarningsAsErrorsWarningsAsErrorsVisualStudioStyleErrorsValidateTypeProvidersLCIDUtf8OutputSubsystemVersionHighEntropyVAToolNameStandardErrorEncodingSystem.TextEncodingStandardOutputEncodingbaseAddresscodePagedebugSymbolsdebugTypedefineConstantsdisabledWarningsdocumentationFilegenerateInterfaceFilekeyFilenoFrameworkoptimizetailcallsotherFlagsoutputAssemblypdbFileplatformprefer32bitreferencesreferencePathsourcestargetTypewarningLeveltreatWarningsAsErrorswarningsAsErrorstoolPathversionFilewin32reswin32manifestvserrorsvalidateTypeProvidersvslcidutf8outputsubsystemVersionhighEntropyVAcapturedArgumentscapturedFilenamesinit@108-1FSharpRef`1set_contentsget_AssemblyAssemblyget_LocationSystem.IOPathGetDirectoryNameSomeFailInitget_BaseAddressset_BaseAddressget_CodePageset_CodePageget_DebugSymbolsset_DebugSymbolsget_DebugTypeset_DebugTypeget_DisabledWarningsset_DisabledWarningsaget_DefineConstantsset_DefineConstantsget_DocumentationFileset_DocumentationFileget_GenerateInterfaceFileset_GenerateInterfaceFileget_KeyFileset_KeyFileget_NoFrameworkset_NoFrameworkget_Optimizeset_Optimizepget_Tailcallsset_Tailcallsget_OtherFlagsset_OtherFlagsget_OutputAssemblyset_OutputAssemblyget_PdbFileset_PdbFileget_Platformset_Platformget_Prefer32Bitset_Prefer32Bitget_Referencesset_Referencesget_ReferencePathset_ReferencePathget_Resourcesset_Resourcesget_Sourcesset_Sourcesget_TargetTypeset_TargetTypeget_VersionFileset_VersionFileget_ToolPathset_ToolPathget_Win32ResourceFileset_Win32ResourceFileget_Win32ManifestFileset_Win32ManifestFilemget_WarningLevelset_WarningLevelget_TreatWarningsAsErrorsset_TreatWarningsAsErrorsget_WarningsAsErrorsset_WarningsAsErrorsget_VisualStudioStyleErrorsset_VisualStudioStyleErrorsget_ValidateTypeProvidersset_ValidateTypeProvidersget_LCIDset_LCIDget_Utf8Outputset_Utf8Outputget_SubsystemVersionset_SubsystemVersionget_HighEntropyVAset_HighEntropyVAget_ToolNameget_UTF8get_StandardErrorEncodingget_StandardOutputEncodingInvalidOperationExceptionget_ToolExeCombineGenerateFullPathToToolInternalGenerateFullPathToToolExecuteToolBaseExecuteToolpathToToolresponseFileCommandscommandLineCommandsConverter`2Taskget_HostObjectITaskHostArgumentNullExceptionGetTypeToArrayget_InvariantCultureInvokeMemberBindingFlagsBinderInt32ToUpperInvariantCharSplitStringSplitOptionsConcatGenerateCommandLineCommandsInternalGenerateCommandLineCommandsInternalExecuteToolCreateManifestNameStreamEndsWithStringComparisonfileNamelinkFileNamerootNamespacedependentUponFileNamebinaryStreamGetExtensionIsSourceFilefilenameClassAttributeStringBuilderIsWhiteSpaceAppendParseCommandLineArgs@72commandLineToUpperInvariant@421fscInvokeinputDotNetBuildStringFSharpBinaryMetadataFormatRevisionFSharpCoreLibRunningVersionmaxPathmaxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZis32BitBackupInstallationProbePointsIsRunningOnNetFx45OrAboveget_DotNetBuildStringDebuggerNonUserCodeAttributeget_FSharpBinaryMetadataFormatRevisionget_FSharpCoreLibRunningVersionRegOpenKeyExW_hKey_lpSubKey_ulOptions_samDesired_phkResultAdvapi32.dllRegQueryValueExW_lpValueName_lpReserved_lpType_lpData_lpchDataRegCloseKeyget_maxPathget_maxDataLengthget_KEY_WOW64_DEFAULTget_KEY_WOW64_32KEYget_HKEY_LOCAL_MACHINEget_KEY_QUERY_VALUEget_REG_SZMicrosoft.Win32RegistryGetValueGetDefaultRegistryStringValueViaDotNetsubKeyEnvironmentget_OSVersionOperatingSystemget_VersionVersionget_MajorUIntPtrZeroMarshalAllocCoTaskMemPtrToStringUniIntPtrFreeCoTaskMemGet32BitRegistryStringValueViaPInvokeget_is32BittryRegKeyAppDomainget_CurrentDomainget_BaseDirectoryIsNullOrEmptytryCurrentDomainSystem.ConfigurationConfigurationSettingsget_AppSettingsSystem.Collections.SpecializedNameValueCollectionget_ItemGetExecutingAssemblytryAppConfigappConfigKeySystem.Text.RegularExpressionsRegexMatchFileReadAllTextGroupget_Successget_GroupsGroupCollectionCapturetryFsharpiScripturlget_BackupInstallationProbePointsExistssafeExistsfexists@277xget_Item1GetEnvironmentVariableTryPickBinFolderOfDefaultFSharpCompiler$cont@236probePointunitVarBinFolderOfDefaultFSharpCompilerget_IsRunningOnNetFx45OrAboveofStringFSharpCoreLibRunningVersion@37DebuggerBrowsableAttributeDebuggerBrowsableStatemaxDataLength@65HKEY_LOCAL_MACHINE@68is32Bit@136BackupInstallationProbePoints@206init@GetNameAssemblyNameUTF32EncodingGetMaxByteCountget_SizeSeqModuleSystem.Collections.GenericIEnumerable`1AppendFormatIsSurrogatePaircapture@68lenMicrosoft.FSharp.ControlLazyExtensionsCreatertyinpnenumIEnumerator`1pccurrentGetEnumeratorSystem.CollectionsIEnumeratorMoveNextget_CurrentDisposeGenerateNextnextCloseget_CheckCloseget_LastGeneratedGetFreshEnumerator,,,toolpathUnknown=destFunTy: not a function type)bad format specifier\n \t \r \""fsc.exe arrayCompile-o:--codepage:-g--debug: NONEPDBONLYpdbonly FULL full--noframework--baseaddress:--define: --doc: --sig:--keyfile:--optimize+--optimize---tailcalls- --pdb:--platform: ANYCPUEXE)anycpu32bitpreferred WINEXE anycpuX86x86X64x64ITANIUMItanium--resource:--versionfile:-r: --lib:,--target:LIBRARYlibraryexe winexe MODULE module--nowarn:--warn:--warnaserror 76 76--warnaserror:--win32res:!--win32manifest:--vserrors3--validate-type-providers--LCID:--utf8output--fullpaths--flaterrors'--subsystemversion:!--highentropyva+!--highentropyva- .resources.fs.ml-(private, test-signed)2.0.0.0'HKEY_LOCAL_MACHINE\{exepath}/mono.* (\/.*)\/fsi\.exebinFsc.exeUSoftware\Microsoft\FSharp\2.0\Runtime\v4.0USoftware\Microsoft\FSharp\3.0\Runtime\v4.0'FSHARP_COMPILER_BIN1fsharp-compiler-locationfscfsifsharpcfsharpig/Library/Frameworks/Mono.framework/Versions/Current/usr/local /usrFSBuild=‘PŒ§Eƒ=‘P·z\V4à‰°?_Õ : %) -1)5€ $€”$RSA1wÓ.=LøÎ¿rìo­ £¦9 SON»:¸G¦¶ci"JÏKÑ®ÅÎÄLðÈ’.µ».æ^Ãû›ª‡áA,–ÎAO˜¯3PŒ~$Úµ°hª€/f“ˆ7îüµÓñɪø!ZÄ.’ºšZWMhÐtdË/3‹;Oþ˜ïàiî  FSharp.Build.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F#[UUnittests, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069eee_SystematicUnitTests, PublicKey=002400000480000094000000060200000024000052534131000400000100010077d32e043d184cf8cebf177201ec6fad091581a3a639a0534f1c4ebb3ab847a6b6636990224a04cf4bd1aec51ecec44cf0c8922eb5bb2ee65ec3fb9baa87e141042c96ce414f98af33508c7e24dab5b068aa802f6693881537ee0efcb5d3f1c9aaf8215ac42e92ba9a5a02574d6890d07464cb2f338b043b1c4ffe98efe069ee  ae)  q u q que y y))) ) )  ) ) ) ) €)) )€))) €))) €))))))  1) !1)1)  u  11)€™ uu €¥€©1111 1€± €± 11 €±€© €©111(((€±(€¹€±€½€‘€½  €Á €½€‘ €± €±€¹ €¹ €Í €Õ€±€Í  1 €Ý€áy €±€Í€‘ €í  €±€± €ñ €õ€õ €ý €ý1€ý€ý1    1         €‘     €‘!) €Á-1 1 = 9-1€‘1€‘€‘€€1 ) €‘€€‘   I1 M  €‘1) Y  €ý1)€ý€ý1)e  €Á  ) ))) 1 11) )  1)a 1aY aa a Y €‘€‘  a(ïÈÐH·˜ mWzåóµÑgâè¦s羘Y â*ÙÅîþâ³:ÒÂîy÷ðn\C(𠏂À"èm:öi”|üM®µ7Á”=ê'@V~mù.–ׂ{7xt–*_ìU7ÐãS"žm ÍÀ³sB±Î‹Ú9˜*ÙäÓ#£ZÐ{Fn+ÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADPØ0 ßtoolpathUnknownJToolPath is unknown; specify the path to fsc.exe as the ToolPath property.e8 FSharp.Core FSharp.BuildmscorlibMicrosoft.Build.FrameworkMicrosoft.Build.Utilities.v4.0Microsoft.Build.Tasks.v4.0 y€Ý FSharp.Buildn/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fs Microsofto/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/CreateFSharpManifestResourceName.fsiFSharpBuild.ctorCoreunit CreateFSharpManifestResourceNameR/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/Fsc.fsiQ/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/Fsc.fsFscGenerateCommandLineCommandsSystemStringGenerateFullPathToTool get_ToolNameget_StandardErrorEncodingTextEncodingget_StandardOutputEncodingInternalGenerateFullPathToTool#InternalGenerateCommandLineCommandsInternalExecuteToolstringintget_BaseAddressset_BaseAddress get_CodePage set_CodePageget_DebugSymbolsboolset_DebugSymbols get_DebugType set_DebugTypeget_DefineConstants[]`1 Framework ITaskItemset_DefineConstantsget_DisabledWarningsset_DisabledWarningsget_DocumentationFileset_DocumentationFileget_GenerateInterfaceFileset_GenerateInterfaceFile get_KeyFile set_KeyFileget_NoFrameworkset_NoFramework get_Optimize set_Optimize get_Tailcalls set_Tailcallsget_OtherFlagsset_OtherFlagsget_OutputAssemblyset_OutputAssembly get_PdbFile set_PdbFile get_Platform set_Platformget_Prefer32Bitset_Prefer32Bitget_VersionFileset_VersionFileget_Referencesset_Referencesget_ReferencePathset_ReferencePath get_Resources set_Resources get_Sources set_Sourcesget_TargetTypeset_TargetType get_ToolPath set_ToolPathget_TreatWarningsAsErrorsset_TreatWarningsAsErrorsget_Utf8Outputset_Utf8Outputget_VisualStudioStyleErrorsset_VisualStudioStyleErrorsget_ValidateTypeProvidersset_ValidateTypeProvidersget_LCIDset_LCIDget_WarningLevelset_WarningLevelget_WarningsAsErrorsset_WarningsAsErrorsget_Win32ResourceFileset_Win32ResourceFileget_Win32ManifestFileset_Win32ManifestFileget_SubsystemVersionset_SubsystemVersionget_HighEntropyVAset_HighEntropyVA UtilitiesToolTaskClassAttributeTasks CreateCSharpManifestResourceNameInternalo/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/../../utils/CompilerLocationUtils.fsFSharpEnvironment&T:Internal.Utilities.FSharpEnvironmentDotNetBuildString8P:Internal.Utilities.FSharpEnvironment.DotNetBuildString"FSharpBinaryMetadataFormatRevisionFSharpCoreLibRunningVersionoption`1 RegOpenKeyExWUIntPtruint32byref`1RuntimeInteropServicesDllImportAttributemscorlib1System.Runtime.InteropServices.DllImportAttribute System.String Advapi32.dllCharSetBestFitMapping_hKey _lpSubKey _ulOptions _samDesired _phkResultRegQueryValueExWIntPtr _lpValueName _lpReserved_lpType_lpData _lpchData RegCloseKeymaxPath maxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZ&GetDefaultRegistryStringValueViaDotNetsubKey%Get32BitRegistryStringValueViaPInvokeis32Bit tryRegKeytryCurrentDomain tryAppConfig appConfigKeytryFsharpiScripturlFM:Internal.Utilities.FSharpEnvironment.tryFsharpiScript(System.String)BackupInstallationProbePoints Collectionslist`1 safeExistsf BinFolderOfDefaultFSharpCompiler probePointIsRunningOnNetFx45OrAboveOption-T:Internal.Utilities.FSharpEnvironment.OptionofStringsEM:Internal.Utilities.FSharpEnvironment.Option.ofString(System.String)FSBuild[/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build/.libs/FSBuild.fsSRget_SwallowResourceText P:FSBuild.SR.SwallowResourceTextset_SwallowResourceTextb0P:FSBuild.SR.SwallowResourceText(System.Boolean)toolpathUnknownM:FSBuild.SR.toolpathUnknownRunStartupValidation!M:FSBuild.SR.RunStartupValidation GetStringnamemkFunctionValueTypeobjtysimpl isNamedTypetyisFunctionTypety1 destFunTybuildFunctionForOneArgPatcapture1fmtiargsgopostProcessStringcreateMessageStringT PrintfModuleStringFormat`1 messageString GetStringFunc messageID.cctorControlLazy`1 ResourcesResourceManager resourcesfunTyCswallowResourceTextinit@14J/Users/tomaspetricek/Projects/GitHub/fsharp/fsharp/src/fsharp/FSharp.Build   kkfkfmkfm€¨€­€­€¯    !&'(fghijkfmsuvwxyzxy€‡€¡€¢kfm€¨€­€¯€¼€½€Î€Ï€Ô€Õ€Ö€×€­ §PÓ& y P>P ùPP %ÿ´@   ltlwÿ´@ 1 zz,ÿ´@ , VV'ÿ´@   SSÿ´@  + TT&ÿ´@  , UU'ÿ´@  ; ZZ6ÿ¤@ @ ‚ ‚ ;ÿ¤@  0 ‚ ‚ +ÿ¤@   €¨ €¨ÿ¤@   €© €©ÿ¤@   €¬ €¬ÿ¤@   €­ €­ÿ¤@   €° €°ÿ¤@"  €± €±ÿ¤@#  €´ €´ÿ¤@$  €µ €µÿ¤@% # €¼ €¼ÿ¤@) # €½ €½ÿ¤@* $ €¸ €¸ÿ¤@+ $ €¹ €¹ÿ¤@, % €À €Àÿ¤@- % €Á €Áÿ¤@. ) €Æ €Æÿ¤@/ ) €Ç €Çÿ¤@0  €Ï €Ïÿ¤@1  €Ð €Ðÿ¤@2  €Ó €Óÿ¤@3  €Ô €Ôÿ¤@4  €× €×ÿ¤@5  €Ø €Øÿ¤@ 6  €Û €Ûÿ¤@!7  €Ü €Üÿ¤@"8  €ß €ßÿ¤@#9  €à €àÿ¤@$: " €ã €ãÿ¤@%; " €ä €äÿ¤@&<  €è €èÿ¤@'=  €é €éÿ¤@(>  €ñ €ñÿ¤@)?  €ò €òÿ¤@*@   €õ €õÿ¤@+A   €ö €öÿ¤@,B !!  ÿ¤@-C !!  ÿ¤@.D "" €ù €ùÿ¤@/E "" €ú €úÿ¤@0F ##! €ý €ýÿ¤@1G ##! €þ €þÿ¤@2H $$  ÿ¤@3I $$  ÿ¤@4J %%  ÿ¤@5K %%  ÿ¤@6L &&  ÿ¤@7M &&  ÿ¤@8N ++ ÿ¤@9O ++ ! !ÿ¤@:P ,,) 3 3ÿ¤@;Q ,,) 4 4ÿ¤@T ..+ ; ;ÿ¤@?U ..+ < <ÿ¤@@V //) ? ?ÿ¤@AW //) @ @ÿ¤@BX 00 C Cÿ¤@CY 00 D Dÿ¤@DZ 11 / /ÿ¤@E[ 11 0 0ÿ¤@F\ 22$ 7 7ÿ¤@G] 22$ 8 8ÿ¤@H^ 33% % %ÿ¤@I_ 33% & &ÿ¤@J` 44% * *ÿ¤@Ka 44% + +ÿ¤@Lb 55$ K Kÿ¤@Mc 55$ L Lÿ¤@Nd 66! O Oÿ¤@Oe 66! P Pÿ¤@ O                             "  "#  #$  $%  %)  )*  *+  +,  ,-  -.  ./  /0  01  12  23  34  45  56  67  78  89  9:  :;  ;<  <=  =>  >?  ?@  @A  AB  BC  CD  DE  EF  FG  GH  HI  IJ  JK  KL  LM  MN  NO  OP  PQ  QR  RS  ST  TU  UV  VW  WX  XY  YZ  Z[  [\  \]  ]^  ^_  _`  `a  ab  bc  cd  de  e PP %  h    PPkl Ø Piflk• Piml  !nkfL PiPoll€¤pQql*l*€¤Rrl%%#l%%#€¤Stl--l--    €´{·z\V4à‰|{·z\V4à‰}~~€€€l-(--€‚l-6-?€ƒl-H-R€„l-X-c€…l-o-yT€†l00"l00"    €´{·z\V4à‰|{·z\V4à‰}~~€€€l0+00€ˆl090E€‰l0N0Y€Šl0d0k€‹l0t0{€Œl0€ƒ0€ŒU€l33l33  €´{·z\V4à‰|{·z\V4à‰}~~€l3&3+V€Žl@@l@@€¤W€lAAlAA€¤X€lBBlBB€¤Y€‘lCClCC€¤Z€’lDDlDD €¤[€“lEElEE€¤\€”lFFlFF €¤]€•lHH.lHH.€¤€–lH/H5^€—lcc-lcc-€¤€–lc.c4_€˜l€ˆ€ˆl€ˆ€ˆ€¤`€™l€Š€Šl€Š€Š€¤€–l€Š€Ša€šl€¦€¦!l€¦€¦!€¤b€›l€­€­l€­€­€¤€œl€­€­+c€l€Ä€Ä!l€Ä€Ä!€¤€žl€Ä"€Ä%€Ÿd€ l€Î€Î%l€Î€Î%€¤e€£l€Ö€Öl€Ö€Ö€¤€¤l€Ö€Öf€¥l€à€à(l€à€à(€¤€¦l€à)€à3g€§lFF!lFF!€¤ €¨l5 5 €©kfm9 hih€ªl7 7l7 7€¤€«l77€¬ €­€®  » iyi€®€®‚´€­€¯j€°€®cc%€®cc%€¤€±k€²€®cc%€®cc%€¤€³€®d/d0€´l€µ€®ii!€®ii!€¤€¶m€·€®ll&€®ll&€¤€¸n€¹€®€®‚¼€º€®o€»€®€®‚¼€¾€® #€¿€®59p€À€®  €®  ‚¼€Á€®  q€Â€®!!€®!!‚¼€Ã€®!!"r€Ä€®$$€®$$‚¼€Á€®$$ s€Å€®,,(€®,,(‚¼€Á€®,*,,€¿€®,;,?t€Æ€®22€®22‚¼€Ç€®22€È€®2%2&€É€®2'2+€Á€®2,2.€Ê€®2022u€Ë€®<< €®<< ‚¼€«€®<"<#v€Ì€®??"€®??"€Í€®?W?Y„‚¼€Í€®?W?Y€Ð€®?$?1€Ç€®?=?@w€Ñ€®ZZ€®ZZ€Í€®ZMZO„‚¼€Í€®ZMZO€Ò€®ZZ'€Ç€®Z3Z6x€Ó€®€®‚´€­€¯ €¯€® €Ø€®€­€¯€Ù€®€­€¯€Ú€®XX*€­€¯€Û€®€­€¯€°€¯€°€²€¯€²€µ€¯€µ€·€¯€·€Ó€¯€Ó€­ yy€Ü  FSharp.Build FSharp.CoreMicrosoft.Build.FrameworkmscorlibbFSBuildInternal UtilitiesFSharpEnvironmentOption MicrosoftFSharpBuildFsc.ctorCoreunitget_BaseAddressstringset_BaseAddress get_CodePage set_CodePageget_DebugSymbolsboolset_DebugSymbols get_DebugType set_DebugTypeget_DisabledWarningsset_DisabledWarningsget_DefineConstants[]`1 Framework ITaskItemset_DefineConstantsget_DocumentationFileset_DocumentationFileget_GenerateInterfaceFileset_GenerateInterfaceFile get_KeyFile set_KeyFileget_NoFrameworkset_NoFramework get_Optimize set_Optimize get_Tailcalls set_Tailcallsget_OtherFlagsset_OtherFlagsget_OutputAssemblyset_OutputAssembly get_PdbFile set_PdbFile get_Platform set_Platformget_Prefer32Bitset_Prefer32Bitget_Referencesset_Referencesget_ReferencePathset_ReferencePath get_Resources set_Resources get_Sources set_Sourcesget_TargetTypeset_TargetTypeget_VersionFileset_VersionFile get_ToolPath set_ToolPathget_Win32ResourceFileset_Win32ResourceFileget_Win32ManifestFileset_Win32ManifestFileget_WarningLevelset_WarningLevelget_TreatWarningsAsErrorsset_TreatWarningsAsErrorsget_WarningsAsErrorsset_WarningsAsErrorsget_VisualStudioStyleErrorsset_VisualStudioStyleErrorsget_ValidateTypeProvidersset_ValidateTypeProvidersget_LCIDset_LCIDget_Utf8Outputset_Utf8Outputget_SubsystemVersionset_SubsystemVersionget_HighEntropyVAset_HighEntropyVA get_ToolNameSystemStringget_StandardErrorEncodingTextEncodingget_StandardOutputEncodingGenerateFullPathToToolGenerateCommandLineCommands CreateFSharpManifestResourceName Attributes     XYX[\` ‡ê_@!0òM   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWZ]^_` agÛ‰Û {Û_CorDllMainmscoree.dllÿ% @Ð  ;fsharp-3.0.34/lib/bootstrap/signed/0000775000175000017500000000000012260314606016124 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/signed/3.0/0000775000175000017500000000000012260314606016424 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/signed/3.0/.NETPortable/0000775000175000017500000000000012260314606020621 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/signed/3.0/.NETPortable/FSharp.Core.dll0000775000175000017500000415673012260314606023413 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELï×Pà! ˜ž¶ À\ B @D¶WÀˆ Ø=à ¤¶  H.text¼— ˜ `.rsrcˆÀš@@.reloc àž@B€¶H€X( (qE¨p€*o &**J, (+-****Fo &}*"{*&o**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &*Fo &}*"{*Fo &}*"{*&o**o &**o &**o &**o &**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &**o &**o &**o &**o &*~o &}}}*"{*"{*"{*~o &}}}*"{*"{*"{*.o+*.o+*Fo &} *"{ *Fo &}!*"{!*Fo &}"*"{"*Fo &}#*J{#o ¥E*0Fo &}$}%}&}'}(})}*rp}+*"{$*"{&*&}&*"{%*&}%*"{'*&}'*"{(*&}(*"{+*&}+*"{)*&})*"{**&}***o &*Fo &},*"{,*šo &}.}-}/}0*"{.*"{-*"{/*&}/*"{0*&}0**oS**o &**o &**o &**o &**o &**o &*Fo &}1*"{1*6rpoZ*( *s **užþ*s **uŸþ*0 uŸ,+*0» þ9§þ9œ  uŸ,+   uŸ,+ 3ruž,3tž tž (ð{  { þ(+*tŸtŸ(ð{  {    þ(+*Y**þ,**B¥þo *0¾ ¥ þ9ž¥þ9Ž  uŸ,+   uŸ,+ 3duž,-tž tž { { þ(+*tŸtŸ{  {    þ(+*Y**¥þ,**0o þ,f už,-tž  ¹y7ž{ Œ (LbcXXX *tŸ  ¹y7ž { Œ¡(LbcXXX **6(ño *0­ þ9›u 9Œ  uŸ,+   uŸ,+ 3duž,-tž tž { { þ(+*tŸtŸ{  {    þ(+***þþ*0¥ þ9“þ9ˆ  uŸ,+   uŸ,+ 3`už,*tž tž {  { þ(+*tŸtŸ{ {   þ(+***þþ*0u , þo **:(! } *{ *:(! } *{ *:( }# *2{# { *:( }$ *2{$ { *( *s% **u¤þ*s& **u¥þ*s' **u¦þ*0 u¦,+ u¥,+*0#þ9þ9u¦,+ u¥,+ u¦,+ u¥,+ @¿u¤-u¥-<u¦-jt¤ t¤ (ð{(  {( þ(+*t¥t¥(ð{)  {)    þ(+*t¦ t¦ (ð {*   {*  þ(+*Y**þ,**B¥þo+ *0¥ þ9þ¥þ9îu¦,+ u¥,+ u¦,+ u¥,+ @©u¤-u¥-6u¦-\t¤ t¤ {( {( þ(+*t¥t¥{)  {)    þ(+*t¦ t¦  {*   {*  þ(+*Y**¥þ,**0¹þ9­ u¤-u¥-6u¦-\t¤  ¹y7ž{( Œ (LbcXXX *t¥  ¹y7ž {) Œ¡(LbcXXX *t¦ ¹y7ž{* Œ§(LbcXXX **6(ño, *0 þ9ûu 9ìu¦,+ u¥,+ u¦,+ u¥,+ @©u¤-u¥-6u¦-\t¤ t¤ {( {( þ(+*t¥t¥{)  {)    þ(+*t¦ t¦  {*   {*  þ( +***þþ*0þ9òþ9çu¦,+ u¥,+ u¦,+ u¥,+ @¤u¤-u¥-3u¦-Xt¤ t¤ {(  {( þ(+*t¥t¥{) {)   þ(+*t¦ t¦  {*   {*    þ( +***þþ*0u , þo- **:(. }( *{( *:(. }) *{) *:(. }* *{* *:( }/ *2{/ {( *:( }0 *2{0 {) *:( }1 *2{1 {* *:( }2 *s3 **(4 þ*s5 **(4 þ*s6 **(4 þ*s7 **(4 þ*{2 *0+þ9þ9 {2 {2 @ó(4 E3j¡t« t« (ð{8  {8 þ(+*t¬t¬(ð{9  {9    þ(+*t­ t­ (ð {:   {:  þ(+*t®t®(ð{; {; þ( +*Y**þ,**B¥ þo< *0¥  þ9þ¥ þ9î{2 {2 @Õ(4 E-\‹t« t« {8 {8 þ(+*t¬t¬{9  {9    þ(+*t­ t­  {:   {:  þ(+*t®t®{; {; þ( +*Y**¥ þ,**0çþ9Û (4 E-\t«  ¹y7ž{8 Œ (LbcXXX *t¬  ¹y7ž {9 Œ¡(LbcXXX *t­ ¹y7ž{: Œ§(LbcXXX *t® ¹y7ž{; Œ¯(LbcXXX **6(ño= *0 þ9ûu  9ì{2 {2 @Õ(4 E-\‹t« t« {8 {8 þ(+*t¬t¬{9  {9    þ(+*t­ t­  {:   {:  þ( +*t®t®{; {; þ( +***þþ*0 þ9ñþ9æ{2 {2 @Ï(4 E*X†t« t« {8  {8 þ(+*t¬t¬{9 {9   þ(+*t­ t­  {:   {:    þ( +*t®t®{; {; þ( +***þþ*0!u  , þo> **>(? }8 *{8 *>(? }9 *{9 *>(? }: *{: *>(? }; *{; *:( }@ *2{@ {8 *:( }A *2{A {9 *:( }B *2{B {: *:( }C *2{C {; *:( }D *sE **(F þ*sG **(F þ*sH **(F þ*sI **(F þ*sJ **(F þ*{D *’þ,þ, þ(+**þ,**B¥ þoK *0*#¥  þ, þ(+*¥ þ,**0*þ9 (F E-\¾t´  ¹y7ž{L Œ (LbcXXX *tµ  ¹y7ž {M Œ¡(LbcXXX *t¶ ¹y7ž{N Œ§(LbcXXX *t· ¹y7ž{O Œ¯(LbcXXX *t¸  ¹y7ž {P   Œ¹(LbcXXX **6(ñoQ *nþ, þ(+*þþ*05+þ9#þ9{D {D @(F E*X†´t´ t´ {L  {L þ(+*tµtµ{M {M   þ(+*t¶ t¶  {N   {N    þ( +*t·t·{O {O þ( +*t¸t¸{P {P þ(+***þþ*0#u  , þoR **>(S }L *{L *>(S }M *{M *>(S }N *{N *>(S }O *{O *>(S }P *{P *:( }T *2{T {L *:( }U *2{U {M *:( }V *2{V {N *:( }W *2{W {O *:( }X *2{X {P *:( }Y *sZ **([ þ*s\ **([ þ*s] **([ þ*s^ **([ þ*s_ **([ þ*s` **([ þ*{Y *0:,þ,)þ,!{Y {Y 3 þ(+*Y**þ,**B¥þoa *06.¥ þ,¥þ, þ(+**¥þ,**Jþ, (+**6(ñob *0'.þ,u , þ(+**þþ*Šþ,þ, þ(+**þþ*0.u , þoc **>(d }e *{e *>(d }f *{f *>(d }g *{g *>(d }h *{h *>(d }i *{i *>(d }j *{j *:( }k *2{k {e *:( }l *2{l {f *:( }m *2{m {g *:( }n *2{n {h *:( }o *2{o {i *:( }p *2{p {j *:( }q *sr **(s þ*st **(s þ*su **(s þ*sv **(s þ*sw **(s þ*sx **(s þ*sy **(s þ*{q *0:,þ,)þ,!{q {q 3 þ(+*Y**þ,**B¥þoz *0L0¥ þ,/¥þ,"{q {q 3 þ(+*Y**¥þ,**Jþ, (+**6(ño{ *0;0þ,,u , {q {q 3 þ(+***þþ*06,þ,'þ,{q {q 3 þ(+***þþ*01u , þo| **>(} }~ *{~ *>(} } *{ *>(} }€ *{€ *>(} } *{ *>(} }‚ *{‚ *>(} }ƒ *{ƒ *>(} }„ *{„ *:( }… *2{… {~ *:( }† *2{† { *:( }‡ *2{‡ {€ *:( }ˆ *2{ˆ { *:( }‰ *2{‰ {‚ *:( }Š *2{Š {ƒ *:( }‹ *2{‹ {„ *r(Œ }‡}ˆ}‰*(Œ *0 ( *{‡*{ˆ*{‰*0j3þ,a ¹y7žts(@bcXXX ¹y7žts(?bcXXX ¹y7žts(> , (Ž +bcXXX **6(ñoA*0w5þ,hu  ,\(+-*ts(>ts(>( ,3ts(?ts(?3ts(@ts(@þ****þþ*b(¶rp( þo‘ *0sþ,dþ,\(+-*ts(>ts(>( ,3ts(?ts(?3ts(@ts(@þ****þþ*05u  ,oE***o &**o &*0(7uÙ ,  þo’ *o“ þo” *0G:uÜ , þo• *uÝ , o– þo— *o˜ þ(+*0q>uà , þoš *uá , o› þoœ *uã,o þ(+*oŸ þ(+*0ŸCuå , þo¡ *uæ , o¢ þo£ *uè,o¤ þ( +*ué,o¦ þ(!+*o¨ þ("+*"sª *"s« *"s¬ *"s­ *"s® *{¯ *"}¯ *:( }¯ *08Dþ,'þ,(ð {¯ {¯ þ(+**þ,**B¥ðþo° *0CF¥ð þ,&¥ðþ,{¯ {¯ þ(+**¥ðþ,**0/Gþ,& ¹y7ž{¯ Œ (LbcXXX **6(ño± *04Fþ,%uð ,{¯ {¯ þ(+**þþ*"{¯ *&(² *0/Hþ, þ,{¯ {¯ þ(+**þþ*0Iuð , þo³ **( * *sµ *:( }¶ *{¶ *0 K ,+*0gLþ,Vþ,N,+ ,+ 3.,)  (ð{¶  {¶ þ(+**Y**þ,**B¥ñþo· *0rM¥ñ þ,U¥ñþ,H,+ ,+ 3(,#  {¶ {¶ þ(+**Y**¥ñþ,**0:Nþ,1 - *  ¹y7ž{¶ Œ (LbcXXX **6(ño¸ *0fMþ,W(#+-*¥ñ ,+ ,+ 3(,#  {¶ {¶ þ(+***þþ*þ*þ*†r-po¹ ($+r9p(º (º *0ZOþ,Kþ,C,+ ,+ 3%,   {¶  {¶ þ(+****þþ*j(#+-*¥ñþo» *.s¼ €½ *( *~½ **{¾ þ*"s¿ **{¾ þ*V( }À }¾ *{À *{¾ **{¾ þ*0 Qþ9Œþ9{¾ þ {¾ þ 3e{¾ ,[  (ð{À  {À (+/*1*(ð{¾  {¾   oÁ **Y**þ,**:¥òo *0©R¥ò þ9‰¥òþ9y{¾ þ {¾ þ 3]{¾ ,S  {À {À (+/*1* {¾ {¾   8nÿÿÿ*Y**¥òþ,**0ZSþ,Q {¾ - *  ¹y7ž{¾ oà bcXXX ¹y7ž{À Œ (LbcXXX **6(ñoà *0‡Tþ9uuò ,i{¾ þ {¾ þ 3O{¾ ,E  {À {À (+,! {¾ {¾ 8Šÿÿÿ****þþ*0nUþ,_þ,W{¾ þ {¾ þ 3={¾ ,3  {À  {À (+,{¾ {¾ +£****þþ*0Vuò ,oÄ **&(%+*0CW(%+  è1r=p*Q%rYp¤Q%þVoÅ ¤Q(Æ *ª{¾ -(¶rmp( o‘ sÇ z{À *ª{¾ -(¶rmp( o‘ sÇ z{¾ *&(&+*0±X{¾ 9  {¾ {¾ 9[{¾ {¾ {¾ 9ó{¾ {¾ {¾ -p{À {À {À sÈ r‘poÉ ($+oÉ r•poÉ ($+oÉ r•poÉ ($+oÉ r›poÉ þoÅ *{À {À {À sÈ r‘poÉ ($+oÉ r•poÉ ($+oÉ r•poÉ ($+oÉ rŸpoÉ þoÅ *{À {À sÈ r‘poÉ ($+oÉ r•poÉ ($+oÉ r›poÉ þoÅ *{À sÈ r‘poÉ ($+oÉ r›poÉ þoÅ *r¯p*6sÊ ¥*JsÊ ¥¥ *fo &}Î 2}Ï *0)Z{Î o'+    {Î ((+*0,\{Ñ ," {Ñ {Ï 1*X+Ö*bo &}Ò }Ó *0w`{Ó , {Ò +  oÔ YE**oÌ u* ,oÕ - }Ò +sÖ }Ò }Ó 8‰ÿÿÿ*þo× *6o× ¥ *‚{Ó ,{Ò þoØ *þoØ *‚{Ó ,{Ò þoÙ *þoÙ *–{Ó ,{Ò oØ +oØ Œ *"oÚ *0 bsÛ zbo &}á }â *>{á oã &*>{á oã &*>{â þoÌ *R{â ¥ þoË *( * *"sä *2så *0d uù,+ uø,+*V(æ }ç }è *{ç *{è *²(æ }é }ê }ë }ì }í *{é *{ê *{ë *{ì *{í *:( }î *2{î {ç *2{î {è *:( }ï *2{ï {é *2{ï {ê *2{ï {ë *2{ï {ì *2{ï {í *bo &}ð }ñ *0f()+ sò €ó *~ó *0f()+ (*+sò *~ó *0f()+ (*+oò *"{ð *"{ñ *‚{ð {ð {ñ (++sò *.{ñ þ*R{ð {ñ (,+*B{ñ þ(-+*B{ñ þ(.+*‚{ð {ð {ñ (/+sò *B{ñ þ(0+*Z(ô {ñ þ(1+*b{ð {ñ (2+*B{ñ þ(3+*f{ð {ñ (4+sõ *f{ð {ñ (5+sõ *0Bh{ð {ñ (6+ (ö (÷ {ð sò {ð sò sø *:{ñ (7+*R{ð {ñ (8+*~{ð {ð {ñ (9+sò *R{ð {ñ (:+*6{ñ (;+*6{ñ (<+*0f()+ (=+sò *0n ¥ où oÝ ,`oú (û (ü sý (þ (ÿ b(>+X wX b(?+X wX +˜ Þu  ,  oÜ &Ü&Ü&( *l{0vquü ,j ¥ où ¥ où (@+Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü **&:@Y"o *0ýs¥ (A+(B+ { 9Ù { (û (ü sý { { 9|{ { (û (ü sý { { 9ü{ { (û (ü sý { { -d  sÈ rµpoÉ  (C+oÉ r•poÉ  (C+oÉ r•poÉ (C+oÉ r›poÉ þoÅ *  sÈ rµpoÉ  (C+oÉ r•poÉ  (C+oÉ r•poÉ (C+oÉ rŸpoÉ þoÅ *sÈ rµpoÉ (C+oÉ r•poÉ (C+oÉ r›poÉ þoÅ *sÈ rµpoÉ (C+oÉ r›poÉ þoÅ *rÁp*6{ñ (D+*J{ñ (D+¥ *R{ð {ñ (,+*n(¶rÏp( o‘ s z^s (E+(F+¥"*^s (G+(H+¥*n(¶rÏp( o‘ s zR{ð {ñ (8+*Æ{ð {ñ (8+,{ð {ñ (,+¡**n(¶rÏp( o‘ s zn(¶rÏp( o‘ s zn(¶rÏp( o‘ s zn(¶rÏp( o‘ s z0Ht{ð (û {ñ (8+,+{ð (û {ñ (,+ (ü þ(I+**F{ñ þ(J+**:{ñ (7+*0Fuuü , s ¥ ¥ (K+*(¶rõp( o‘ rps z( * **s *s *0w u ,+ u,+*’( } } } } *{ *{ *{ *{ *:( } *{ *:( }  *2{  { *2{  { *2{  { *2{  { *:( }! *2{! { *bo &}" }# *0f()+ s$ €% *"{" *"{# *~% *~{" {" {# (L+s$ *~{" {" {# (M+s$ *:{# (N+*R{" {# (O+*B{# þ(P+*Zs& {# þ(Q+*.{# þ*0Ry{# -s' *{" {# (R+ (( () {" s$ {" s$ s' *ª{# -*{" {" {# (S+s$ *0!{(T+ s* {# (U+s+ *B{# þ(V+*B{# þ(W+*â{# -*{# -*{" {" {# {# (X+s$ *â{# -*{# -*{" {" {# {# (Y+s$ *æ{# -*{# -*{" {" {# {# (Z+s$ *Js, ~% ([+*6s- (\+*r{" {# {# (]+þ*f{" {# {# (]+*6{# (^+*6{# (^+*6{# (_+*n{" {# {# þ(`+*n{" {# {# þ(`+*n{" {# {# þ(a+*n{" {# {# þ(a+*6{# (b+*6{# (c+*0\| ¥oÌ oÝ ,oà b (>+X wX +Ù Þu, oÜ &Ü&Ü&( *+:"o. *0v~u  ,j ¥oÌ ¥oÌ (d+Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü **&:@Y6~% o/ *0f()+ (e+o$ *"s0 *0f()+ (f+s$ *0Ë¥(g+(h+ {¾ 9§ {¾ {¾ 9`{¾ {¾ {¾ 9ö{¾ {¾ {¾ -q {À {À {À sÈ rpoÉ ($+oÉ r•poÉ ($+oÉ r•poÉ ($+oÉ r›poÉ þoÅ * {À {À {À sÈ rpoÉ ($+oÉ r•poÉ ($+oÉ r•poÉ ($+oÉ rŸpoÉ þoÅ *{À {À sÈ rpoÉ ($+oÉ r•poÉ ($+oÉ r›poÉ þoÅ *{À sÈ rpoÉ ($+oÉ r›poÉ þoÅ *r%p*z{" {# (i+{# (]+*2r3ps z2r3ps z2r3ps zR{" {# (O+*F{# þ(j+**:{# (N+*6{# (k+*J{# (k+¥ *Fo &}8 *0€{8 è¥(g+(F+*~o &}¶}·}¸*0Jƒ{¸ , {9 {·þo: *{¶0(‚ (; }¸{·þo: *"{¶*V{¶{·0(ˆ*BoGþo< *FoGþo= *"{·*Š{¶o> rYp(º o>(º *R{¶o? {·X*03…u“ ,& {¶{¶(l+,{·{·þ***V{¶{·0(*zŒ,+ r]ps@ z(¡*0/‡, {A + Œ,+ r]ps@ z(²*08‰Œ,+ r]ps@ z0(¹ , {A + (ƒ*¾Œ,+ r]ps@ z0(¹Ðn(B (p*zŒ,+ r]ps@ z(°*0PŒ,+ reps@ zŒ,+ rsps@ z(s%¤%¤þoC *0OŠŒ,+ rps@ zsó(m+,!(¶r‹p( o‘ rps zþ(¤*Rr¹p(¼(¥*–Œ,+ rÍps@ z0(¹(¯*0&‡, {A + rçp(»(³*0J‹, {A + Œ,+ rýps@ z(¹ (sõ(€(n+*0/‡, {A + Œ,+ rps@ z(·*07‡, {A + Œ,+ rps@ z(º(³**oD &*6sE ŒV*0.‡, {A + rçp(»(¶þoF *0kŒŒ,+ r-ps@ zŒ,+ r7ps@ zoG 0(²-!(¶rEp( o‘ r7ps zþoH *0iŒ,+ r7ps@ z, {A + oG (²-!(¶rEp( o‘ r7ps z(´þoI *zŒ,+ r-ps@ zsù*0&‡, {A + rçp(»(´*0&‡, {A + rçp(»(¶*0&‡, {A + rçp(»(µ*0ÎŒ,+ rÍps@ zÐn(B (p-repoJ (H rÍps zŒë,+ r‡ps@ z(¯ (K (L Ð(B oM , oN +% ¤%¤oC (O (o+þoP *ÊŒ,+ r¥ps@ zr¹p(¼(«þoF *0XŒŒ,+ rÁps@ zoG (¡-"rÍpoG oJ (H rÁps z(ªþoI *0¢’Œ,+ rÁps@ zoG (¡-"rÍpoG oJ (H rÁps z(ªoI /+ Žiþþ,/répoG oJ þVoÅ (I rps z£*Rr¹p(¼(ª*Vr¹p(¼(®*Rr¹p(¼(«*Rr¹p(¼(¬*0B‡Œ“,+ rps@ z, {A + {¶{·(ŽþoF *0:‡Œ“,+ rps@ z, {A + {¶{·(Ž*0:‡Œ“,+ rps@ z, {A + {¶{·(*0l“, {A + (ñ Œ,+ rýps@ z(¹ ((ŠoQ  (‰oI  s=sR *0?‹, {A + Œ,+ rýps@ z(¹ ((Š*0?‹, {A + Œ,+ rýps@ z(¹ ((‹*0<‹Œ“,+ rps@ z, {A + {¶ {·(‰*0F‹Œ,+ r3ps@ z, {A + oG (º(´þoI *Fo &}S *0•{S , oT **"sU *Fo &}V *ÆÐ (B (H,Р(B (d+sZ€W *B{V þoX *ú{V ~W %Œ ¤%Œ!¤oF (p+þoX *0L{V ~W %Œ ¤%Œ!¤%Œ"¤oF (p+þoX *0Z{V ~W %Œ ¤%Œ!¤%Œ"¤%Œ#¤oF (p+þoX *0h{V ~W %Œ ¤%Œ!¤%Œ"¤%Œ#¤%Œ$¤oF (p+þoX *0v{V ~W %Œ ¤%Œ!¤%Œ"¤%Œ#¤%Œ$¤%Œ%¤oF (p+þoX *0–o &þ }Y *0MœР(B r;p6oZ o[ Œ',+ rIps@ z ŽiY2$ £+o\ ¤XX3Ü ŽiYYX Y 2!  X£¤ X  X3ßs] (^ (_ Ži3Ð)(B (` ¥)+€a Ð*(B 6ob  s\ ¥+(q+(r+oc , od +€e *0a{Y Œ ,R~a ,~a {Y of *%¤Œ¡(`(s+ {Y Œ ¥boT **6sg ¥ *Fo &}h *0Ÿ{h , oi **6sj ¥ *.s’€À*( *~À**užþ*s“**uŸþ*s•**u þ*0¡ u ,+ uŸ,+*0i¤þ,`  už- uŸ- u -$ *tŸ  ¹y7ž{ÄbcXXX *t   ¹y7ž{ÅbcXXX **6(ño*0¸¥þ9¦uœ 9—u ,+ uŸ,+ u ,+ uŸ,+ 3W  uŸ-  u -!*tŸ tŸ {Ä{Äþ*t t {Å{Åþ***þþ*0²¦þ9 þ9•u ,+ uŸ,+ u ,+ uŸ,+ 3UuŸ- u -*tŸ tŸ {Ä {Äþ*t t {Å{Åþ***þþ*0¡uœ ,o**(…*:(…}Ä*{Ä*:(…}Å*{Å*:( }Æ*:( }Ç*2{Ç{Ä*:( }È*2{È{Å*( *&s¤**u¦þ*:s¨**u§þ*&s¯**u¨þ*0¨ u¨,+ u§,+*r(œ}Ì}Í}Î*{Ì*{Í*{Î*Ò(œ}Ï}Ð}Ñ}Ò}Ó}Ô*{Ï*{Ð*{Ñ*{Ò*{Ó*{Ô*r(œ}Õ}Ö}×*{Õ*{Ö*{×*:( }Ø*2{Ø{Ì*2{Ø{Í*2{Ø{Î*:( }Ù*2{Ù{Ï*2{Ù{Ð*2{Ù{Ñ*2{Ù{Ò*2{Ù{Ó*2{Ù{Ô*:( }Ú*2{Ú{Õ*2{Ú{Ö*2{Ú{×*{Û*{Ü*{Ý*{Þ*{ß*{à*{á*{â*{ã*{ä*0T( }Û}Ü}Ý}Þ}ß}à}á}â }ã }ä*0 *rUpsG(k ¥cPdd 'sÏ*Fo &}l *"{l *.om &*0pªo &}ç}æ~è}ê, {n +}ë~é  (o ~è!X€è Þ, (p &Ü&Ü&*> ^"{ç*"{ë*"{æ*"{ê*0Y¬ŒQ,+ r]ps@ zŒ,+ r]ps@ z~é  (o (m  Þ, (p &Ü&Ü*5H"{ç*"(? *0­u° ,  (q **0{¯u° ,o (q ,*oÕoÕ(r ,*o×os ot o×os ot (r , *oØoØ/*þ**6€3~3&*:( }ì*"sî**(èþ*sñ**(èþ*"só**(èþ*"sö**(èþ*{ì*Jþ, (n **6(ñoé*0;±þ,,u± , {ì {ì 3 þ(o ***þþ*jþ, þ({ *þþ*0²u± , þoì**Z(ß}ñ}ò*{ñ*{ò*>(ß}ó*{ó*Z(ß}ô}õ*{ô*{õ*Z(ß}ö}÷*{ö*{÷*:( }ø*2{ø{ñ*2{ø{ò*:( }ù*2{ù{ó*:( }ú*2{ú{ô*2{ú{õ*:( }û*2{û{ö*2{û{÷*0¤s€ýs€þs€ÿs€s€s€s€s€s€s€s€s€ s€ !s€ *:( }ü*~ý**(Nþ*~þ**(Nþ*~ÿ**(Nþ*~**(Nþ*~**(Nþ*sT**(Nþ*sV**(Nþ*sX**(Nþ*sZ**(Nþ*"s\*.(N þ*s_*.(N þ*sa*.(N þ*sc*.(N þ*se*.(N þ*sg*.(Nþ*si*.(Nþ*sk*.(Nþ*sm*.(Nþ*so*.(Nþ*sq*.(Nþ*ss*.(Nþ*su*.(Nþ*sw*.(Nþ*sy*.(Nþ*~*.(Nþ*~*.(Nþ*~*.(Nþ*~*.(Nþ*~*.(Nþ*s{*.(Nþ*~*.(Nþ*~*.(Nþ*~ *.(N þ*~ *.(N!þ*"s}*.(N"þ*s€*.(N#þ*{ü*Jþ, (p **6(ñoO*0;´þ,,u» , {ü {ü 3 þ(q ***þþ*06,þ,'þ,{ü {ü 3 þ(| ***þþ*0µu» , þoR**>(}/*{/*>(}0*{0*>(}1*{1*>(}2*{2*^ (}3}4*{3*{4*B (}5*{5*B (}6*{6*B (}7*{7*B (}8*{8*B(}9*{9*B(}:*{:*B(};*{;*B(}<*{<*B(}=*{=*B(}>*{>*B(}?*{?*B(}@*{@*B(}A*{A*B(}B*{B*B(}C*{C*^"(}D}E*{D*{E*B#(}F*{F*:( }G*2{G{/*:( }H*2{H{0*:( }I*2{I{1*:( }J*2{J{2*:( }K*2{K{3*2{K{4*:( }L*2{L{5*:( }M*2{M{6*:( }N*2{N{7*:( }O*2{O{8*:( }P*2{P{9*:( }Q*2{Q{:*:( }R*2{R{;*:( }S*2{S{<*:( }T*2{T{=*:( }U*2{U{>*:( }V*2{V{?*:( }W*2{W{@*:( }X*2{X{A*:( }Y*2{Y{B*:( }Z*2{Z{C*:( }[*2{[{D*2{[{E*:( }\*2{\{F*bo &}]}^*"{]*"{^*0,·ué ,  {] {]  (ñþoë**>{]þo? *&o¶*N(Ðo·(@*0üÜs~  s€  rgp( s‚  s„ {](è@ªt³{ñ(NE$¨×(è@ªt³{ñ(NE$á³Y¶åœ ¨ ¡ ÿ · Í õE ‡ A p ,ä »Œ[]Š* (èEC^ºt³{ñ(NE$Qj"sˆ rqpsu (t+{]þov *{ò  (u+ r«p( (("(*{ñtÏ {ò{w ,“{ò  {w {w :yÿÿÿ {B  {x   (h o[ Ži(z  oy ,p{z ({ {z (|  (s (} (~ (v+o·(} (~ (w+(w+ rÁp( (("(* (s  o·(} (~ (~  rÁp( (("(*{ò  (u+ rÙp( (("(*t´{óoÕ(*tµ{ô{õ oÕ( o·(} (~ (~  råp( (("(*róp(*{ò{w 9ýÿÿ{ò  {w {w 9ôüÿÿ {w {x {](è@Ðüÿÿtµ{w {w :¶üÿÿ{ô {x  {õoÕ( o·o·(} (~ (~ (~  r÷p( (("(*{ñt½{/ {ò  (s  (u+(~  rÿp( (("(*{ñt¾{0{ò (u  (u+(~  rp( (("(*{ñt¿{1{ò  (u+(u (} (~ (w+ r-p( (("(*{ò  (u+ rIp( (("(*{ñtÁ{ò{w 9üúÿÿ{ò  {w {w :âúÿÿ{4 {x   o·(} (~ r[ps (x+o: ((} (~ (w+ rap( (("(*{ñtÑ{ò{w :Wúÿÿ{Dr[ps€ (y+o ((} (~  rsp( (("(*{ñtË{ò{w 9ìùÿÿ{ò  {x  {> {w  (r (v (u+(('(} (~ (~ (~  rp( (("(*{ñtÌ  {?{ò (v  (u+(('(} (~ (~ (~  rp( (("(*{ñtÂ!{ò{w 9àøÿÿ{ò !{5" {x   {w  (r "(x (u+(('(} (~ (~ (~  r‰p( (("(*{ñtÃ##{6"{ò "(x  (u+(('(} (~ (~ (~  r‰p( (("(*{ñtÄ${ò{w 9Ô÷ÿÿ{ò ${7" {x   {w  (r "(x (u+(('(} (~ (~ (~  r¡p( (("(*{ñtÅ%%{8"{ò "(x  (u+(('(} (~ (~ (~  r¡p( (("(*{ñtÆ&{ò{w 9Èöÿÿ{ò  {w {w :®öÿÿ {x  &{9' (r '(y (} (~ (~  r¹p( (("(*{ñtÇ({ò{w :@öÿÿ({:''(y (} (~ (~  r¹p( (("(*{ñtÈ){ò{w 9âõÿÿ{ò  {w {w 9Èõÿÿ {w {w {w :®õÿÿ{x   {x ){;'(r '(y  o·(} (~ (~ (~  rËp( (("(*{ñtÉ*{ò{w 9*õÿÿ{ò  {w {w :õÿÿ {x  *{<''(y  o·(} (~ (~ (~  rËp( (("(*{ñtÍ+{ò{w 9œôÿÿ{ò  {w {w :‚ôÿÿ+{@  {x   o· (s (} (~ (~  rÝp( (("(*{ñtÊ,,{=-{ò -(w (} (~  (u+(w+ rëp( (("(*{ñtÒ..{F {ò  (s (} (~  (u+(w+ rÿp( (("(*{ñtÎ//{A {ò  (s (} (~  (u+(w+ rp( (("(*{ñtÐ00{C {ò  (s (} (~  (u+(w+ r+p( (("(*{ò  (u+ r=p( (("(*{ò{w 9òÿÿ{ò  {x {](è@[òÿÿt´1 {w {w 9Aòÿÿ {w {w {w :'òÿÿ1{ó{x  oÕ( o·(} (~ (~  rQp( (("(*{ò  (u+ r_p( (("(*{ò{w 9”ñÿÿ{ò  {w {w 9zñÿÿ {w {w {w 9`ñÿÿ{w 22{x {](è@<ñÿÿtµ2{w {w :"ñÿÿ{ô{õ {x  {x 3oÕ(3o·o· o·(} (~ (~ (~ (~  rup( (("(*{ò  (u+ rp( (("(*{ò  (u+ r±p( (("(*{ò{w 94ðÿÿ{ò  {w {w 9ðÿÿ {w {x (t 449üïÿÿ{w {w 9ëïÿÿ{w 22{x (t 559Íïÿÿ2{w {w :¼ïÿÿ5{‚ (ƒ 4{‚ (ƒ 65{‚ („  4{‚ („  {x 33o·6oÕ(o·oÕ( o·(} (~ (~ (~ (~ (~  rÇp( (("(*{ò  (u+ r×p( (("(*{ò  (u+ rïp( (("(*{ò{w 9éíÿÿ{ò  {x (z+9Éíÿÿ{z (| {](è@©íÿÿt³{ñ(N@Žíÿÿ{ò{w 9}íÿÿ{ò {w {w :cíÿÿ{z ({ {w 2{x   (v+2(u+({+((' o·(} (~ (~  rp( (("(*:(|+(= *^(|+(|+(; ¥;**þ(}+*6(:(ß *:(>(à *&(î *:sŠ (~+*~Œ#,+ rps@ z( *‚Œ#,+ rps@ z( *’Œ,+ r5ps@ z(0(ß **(ö *.( *zŒ/,+ rCps@ z(ù *~Œ/,+ rCps@ z(ø *~Œ/,+ rCps@ z(ú *‚Œ/,+ rCps@ z(û *&(ì **( *&( *~Œ`,+ rWps@ z(ü *ŽŒ,+ rwps@ z(L(Þ *"(ñ *~Œ,+ rçps@ z(ó *~Œ,+ r•ps@ z(÷ *ªŒ,+ r­ps@ zsŒ (+( *&(ô *03ÝŒ,+ rÇps@ z(… , {† +(þ *02ÝŒ,+ rÇps@ z(… , {† +(ý *04ÝŒ,+ rÇps@ z(… , {† +( *0Ý(… , {† +(ÿ *"(ê *:(8(à *6(í *:(D(à *>(}+(ò *’Œ,+ r5ps@ z(@(ß *&(õ *0 ÞŒ  Ð (B (J(Þ *’Œ,+ rwps@ z(J(Þ *"(é *N(<(é (à *&( *zŒ,,+ rÙps@ z(D *"(€+*ÞŒ,+ rïps@ zŒ=,+ r ps@ z(E *ŠŒ-,+ rps@ zþ(A *ÊŒQ,+ r]ps@ zÐ (B (Ù(é (€+*2o°&**®o & }‡ }ˆ }‰ }Š *0hH{‰ - r+ps‹ z{‡ {ˆ £  {‡ {ˆ þ ¤ {ˆ X{‡ Ži]}ˆ {‰ Y}‰ *0ˆ,{‰ {‡ Ži3>{‡ Žij!ÈZ!d[i {‡ ŽiX /+oŒ +{‡ {Š ¤ {Š X{‡ Ži]}Š {‰ X}‰ *"{‰ *0¬ß(+ {‰ 1q{ˆ {Š /{‡ {ˆ {‰ ( +H{‡ {ˆ {‡ Ži{ˆ Y( {‡ {‡ Ži{ˆ Y{Š ( +}‡ }ˆ {‰ 3+{‰ }Š *²o &sŽ }c{co ( }d*6{do *6{co‘ *j{do’ {cþo’ *j{do’ {cþo’ *.sô€e*( *~e*&*~h*€h*bo &}f}g*~h*0<á ~h,+(ø (x  Þ, (ø&Ü&Ü&(õ* $‚{gX}g{g ,þþ*¢{f-}g(” }f*r;ps‹ z *6€Á~Á&*0Tãs• o &(– }is‹ þŒ s— }js þŽ s˜ }k}l*þþ{l/(¶r­p( o‘ sÇ z{jŒŽo™ (õ*0Lþ{l/(¶r­p( o‘ sÇ z{kŒŽ(š - rÁps‹ z(õ*¾þ{l/(¶r­p( o‘ sÇ zo*þþ{l/(¶r­p( o‘ sÇ zsù}i{ioû*ºþ{l/(¶r­p( o‘ sÇ z{i* *6€Á~Á&*{m*{n*{o*{p*’( }m}n}o}p*{› *{œ *V( }› }œ *s *:( }ž *{ž *&**o &*( *&(‚+*"(ƒ+**&(„+*&(…+*&( *&(†+*&(‡+*&(ˆ+*&(‰+*Fo &}Ÿ *>{Ÿ o  &*( *( *6s¡ (¢ *F( {£ o *0"å( {£ o‘ ( sŽ (¤ *6s¥ (¦ *0€ê,L {§ (¨ þ,{§ s© +<,  {§ s© +(rÿp s;z( {£ o s© (ª (« (Š+*0)ë( {£ o , {§ + (§ *0)ë( {£ o , {§ + (‹+*>s¬ (Œ+*6s­ (® *0.ë( {£ o , {§ + (+*fsµ s· s¹ (Ž+*6sà (+*0-W, {¯ + - sÅ (+*sÕ (‘+*>s× (+*6s° (¢ *:s± (‚+*0>ì,' {¯ YEs² (‚+*(’+*s³ (‚+*Bs´ (‚+*Bsµ (“+*Js¶ (”+*Rs· (•+*b(–+s¸ s¹ sº *>s» (—+*6s¼ (˜+*(Ì *(Í *>s½ (™+*:s% (š+*:s1 (›+*&(œ+*6s¾ (+*Fo &}u**"{u*v{u!s¿ þoÀ **òo &}Å }Æ }Ç }È sŽ }É sÊ }Ë *0)ï{Ë oÌ {Å ,¥þoÍ **0xó{Ë (Î oÏ - r´ps‹ z {Ð ua-ub-&{Ð tc{Ñ *{Ð ta{Ò z{Ð tb{Ó z"{È *¦{È -}È {É o’ {Ë oÔ **6{É o *6{É o‘ *0õ{Ë {Õ þ-}Ç **0õ{Ë {Õ þ*"{Ç *6{Ë oÖ *"{Æ *&o× *0Go &}Ø sÙ }Ú {Ú }Û }Ü }Ý sÞ (ß }à *‚{Ø ,+ sá }Ø {Ø *0=÷{Û  (o oâ oã {Ú {‰ X Þ, (p &Ü&Ü* ",0=ù{Ú {‰ -*{Ú oä oå -oâ oæ +Å*0-ú{Û  (o ož+ Þ, (p &Ü&Ü* 0Aü{Ø ,4oã 2*oè oå - X+Êoé **†{Ú {‰ -*{Ú oä (ê *0,ý{Û  (o oë Þ, (p &Ü&Ü* 0-þ{Ø , oã -*oè oé (ê **01ÿ{Û  (o (Ÿ+ Þ, (p &Ü&Ü&* 0    sì ( +*Bsí (‚+*0  sî (¡+*0  sï (¢+*0({Ý (£+þ,{Ý ¥þoÜ **‚{Ý ,+ sð }Ý {Ý *0"/{à *oñ (Î (0*Fo &}ò *>{ò o  &*0Yo &}ó ( {£ o , {§ +}ô sõ }ö }÷ }ø sù }ú *6{ö oû *"{÷ *&}÷ *V{ú oü þoý *V{ú oü þoþ *0J {ø ,(¶rÌp( o‘ sÇ z}ø sÿ (š+ {ô ( ()*>{ö o *0h {÷ , {¯ + s s s o {ö o (Î o Þu, oÜ &Ü&Ü *0M0. o¤+ ,{ *(¶r p( o‘ s  z0c{÷ , {¯ + s s  s o {ö o YEs  ( +*s  ( +*0l{÷ , {¯ + YE(Î o¥+ s (‚+*s  s s o {ö o o *0"W{ö {÷ , {¯ +o *0"W{ö {÷ , {¯ +o *0#W{ö {÷ , {¯ +o¦+*0#W{ö {÷ , {¯ +o§+*0s o *R{ö ¥þoÜ *{ *"{ *Fo &} *{ *{ *"{ *"{ *bo &} } *{ *{ *{ *"{ *"{ *"{ *~o &} } } *{ *{ *{ *{  *"{ *"{ *"{ *"{  *žo &} } } }  *{! *{" *{# *{$ *{% *"{! *"{" *"{# *"{$ *"{% *¾o &}! }" }# }$ }% *{& *{' *{( *{) *{* *{+ *"{& *"{' *"{( *"{) *"{* *"{+ *Þo &}& }' }( }) }* }+ *{, *{- *{. *{/ *{0 *{1 *{2 *"{, *"{- *"{. *"{/ *"{0 *"{1 *"{2 *þo &}, }- }. }/ }0 }1 }2 *{3 *{4 *{5 *{6 *{7 *{8 *{9 *{: *"{3 *"{4 *"{5 *"{6 *"{7 *"{8 *"{9 *"{: *0Go &}3 }4 }5 }6 }7 }8 }9 }: *bo &}; }< *"{; *J{< o= ¥ *>{< þo= *Fo &}? *"{? **o &*bs@ {A (¨+sB *2(©+sC *6(ª+sC ***6¥ŠsC *"sD *:{A («+*N{A (¬+sB *Ž{A sF þG sH (­+sC *6{A (®+*6{A (¯+*6{A (°+*6{A (±+*6{A (²+*J{A (³+sC *z{A sP þQ sH (´+*z{A sS þT sH (µ+*6{A (¶+*:{A (·+*N{A (¸+sC *Ž{A sY þZ sH (¹+sC *N{A (º+sC *Ž{A s] þ^ sH (»+sC *z{A s` þa sH (¼+*6{A (½+*z{A sd þe sf (¾+*z{A sh þi sf (¿+*z{A sk þl sm (À+*z{A sn þo sm (Á+*0op ŒŠ,+rT ps@ (Â+&oq (Ã+ oÝ ,3or os (t , (u (Ä+ +È+Å sv Þu, oÜ &Ü&Ü*+Ju0ºop ŒŠ,+rT ps@ (Â+&oq (Ã+ oÝ ,:or os (t , (u (Ä+ +X+¾- þ› Þ1 (Å+sv Þu  ,  oÜ &Ü&Ü*+tŸ0¶op ŒŠ,+rT ps@ (Â+&oq (Ã+ oÝ ,$ or ow (Ä+ X+Ô-#s/rT pV¥E(x (Æ+&+ (Å+ Þu, oÜ &Ü&Ü*+p›0Zop oq (Ã+ oÝ , or ow (Ä+ +Ú Þu, oÜ &Ü&Ü*0?Ž{A sz þ{ sf (Ç+s} *¢{A s~ þ sf (È+¥ŠsC *¢{A s þ‚ sf (É+¥ŠsC *¶{A (Ê+s„ þ… sf (Ë+¥ŠsC *¶{A (Ê+s‡ þˆ sf (Ì+¥ŠsC *¢{A sŠ þ‹ sm (Í+¥ŠsC *¢{A sŒ þ sm (Î+¥ŠsC *¶{A (Ê+sŽ þ sm (Ï+¥ŠsC *¶{A (Ê+s þ‘ sm (Ð+¥ŠsC *Ò{’ s“ þ” s• s– þ— sf (Ñ+s™ *0M{A {š s› þœ s sž þŸ s  s¡ þ¢ s£ (Ò+s¥ *0M{A {š s¦ þ§ s s¨ þ© s  sª þ« s¬ (Ó+s¥ *0M{A {š s® þ¯ s s° þ± s  s² þ³ s¬ (Ó+s¥ *:(¥ *0 ( (‡ (W(Ô+{´ *:(¥»*:(¥»**o &**o &*Fo &}°*&o*"{°*Fo &}±*"{±*~o &}²}³}´*"{²*&}²*"{³*&}³*"{´*&}´**o &*0Bo &}¸}¹}º}»}¼}½}¾}¿*"{¹*&}¹*"{º*&}º*"{»*&}»*"{¼*&}¼*"{½*&}½*"{¾*&}¾*"{¿*&}¿*B{¸þoµ *"s¶ *0}#(· s¸ o¹ oÝ ,)oº (»  (¼ s½ o¾ +Ï Þu, oÜ &Ü&Ü&¥Á¥Âs¿ *5H0%uÄ , *(Õ+*0S((¶r‹p( o‘ £  Œ ,+ rb ps z£ Œ ¥Å(Ö+ Ži  (×+ Y2 £!(À XX3àY?¸(¶r‹p( o‘ £  Œ ,+ rb ps z£ Œ ¥Å(Ö+Ži .!(¶rl p( o‘ r  ps z Y 2"  £!(À  X  X3ÞXX@Hÿÿÿ*07)ŒŠ,+ rb ps@ z(Ø+ Ži -(×+*(Ù+*"(Ú+*"(Û+*&(Ü+*&(Ý+*~Î*2rª psÛ z2rª psÛ z2rª psÛ z2rª psÛ z0+(¶r p( o‘ sÇ z0+(¶r p( o‘ sÇ z"oÁ *~Ï*( *&(à *( *&(à *F}Ä o &*n(¶r> p( o‘ s zn(¶r> p( o‘ s zn(¶r> p( o‘ s zV{Ä sÅ þoÆ *0U. {Ä oÇ oÝ ,oÈ X(à ¤ X +Ú Þu, oÜ &Ü&Ü&**9*>{Ä þoÉ *zsÊ {Ä ¥Ë(Þ+þoÌ *ŽsË {Ä ¥Ë(Þ+¥ þoË *(Ì *031 (Í (Î sÏ (Ð (Ñ (à sÒ *(Ì *031 (Í (Î sÏ (Ð (Ñ (à sÒ *b}Ó }Ô o &*V{Ó sÅ þoÕ *n(¶r> p( o‘ s z03{Ó oÖ s× *>{Ó þoØ *n(¶r> p( o‘ s zV{Ó sÅ þoÙ *0,4sÅ {Ó oÙ ,{Ó oÕ ¡**n(¶r> p( o‘ s zn(¶r> p( o‘ s zn(¶r> p( o‘ s zn(¶r> p( o‘ s z0?5 (û (ü sý (þ (ÿ {Ô sÅ sÚ þoÛ *0†7 {Ô oÜ oÝ ,OoÝ (Í (Î sÏ (Ð (Ñ X(à sÒ ¤X +© Þu, oÜ &Ü&Ü&*[j*>{Ô þoÞ *zsß {Ô ¥Ô(ß+þoù *Žsà {Ô ¥Ô(ß+¥ þoË *^s€ÎsЀÏ*&oà+*:(¥ *08oá ,(â **0:(å s‚*0:(å s„*0:(å s†*0Ú?(Ô  9Á{ã (ä (¾  9ª{å (æ (´  9“{ç {å (è  (á+,þ+,j{ã (é {ã (ê {ç {å (è {ã (ä X(k së (ì (í (î sï *(ð sï *0NA(¶  ,A{‚ (ƒ {‚ („ (k (ì  (î sñ (ò **Bsó þ(â+*0wC(l ,<{ô (õ {ô (ö {ô (÷ (ø (ù +º{ú -*(ã+(ä+¥å(å+(æ+sû (ü *J(ý (þ (n*08(ÿ ¥# sŒ*08(ÿ ¥# sŽ*~o ,o (ç+þod **08(ÿ ¥# s*08(ÿ ¥# s’*~,*¾(u%oº¤od (… ( (¿*~-*~.*~/*~0*~1*~2*2Ð}(B *~3*~4*~5*~6*~7*~8*zoM ,oN (‚þ(l+**zoM ,oN (€þ(l+**º%¤%¤( (ý (ø (Ð*0!F(q s (t s s *¦(p(ss (p(ss s *0\,,(  (  (… ( ( s  þo  *(  (  (… ( ( s  þo  *0BG(W ,+(  (  Œ(  ( ( s þo *0QK(ˆ ( ( ( ( ( ( ( ( s s s *~9*~:*~;*~<*~=*~>*0‡Lo× oº († ,7(v (  (  (   (… ( ( s  þo  *(  (  (  (… ( ( s  þo  *0‘N,I(†(U (  (  (  Œ!(  ( ( s þo *(†(W (  (  (  (  ( ( s þo *0QK(ˆ ( ( ( ( ( ( ( ( s s s *~?*~@*~A*~B*~C*~D*~E*~F*~G*~H*~I*~J*0wOo× (}(† ,1(v (  (  (… ( ( s  þo  *(  (  (… ( ( s  þo  *0‰N,E(}(†(U (  (  Œ!(  ( ( s þo *(}(†(W (  (  (  ( ( s þo *0QK(ˆ ( ( ( ( ( ( ( ( s s s *~K*~L*~M*~N*~O*~P*~Q*~R*~S*0Š(¶rp p( o‘ sÇ z0*PÐV(B (l+,.(  (   (… ( ( s  þo  *Ð~(B (l+,-(  (   (… ( ( s  þo  *Ð (B Ðø(B oM , oN +%¤%¤oC o £` (… ( (Ë (È(  (  (  (  (… ( ( s þo  *0 ¸Qo× oº ,o! £+ (†  9« (vÐ(B (l+,+bЀ(B (l+,+LÐ2(B (l+,+5ÐV(B (l+,+Ð~(B (l+, +(è+(  (  (… ( ( s  þo  *Ð(B (l+,+(  (   (… ( ( s  þo  *Ѐ(B (l+,,(  (   (… ( ( s  þo  *Ð2(B (l+,,(  (   (… ( ( s  þo  *    þ(®*0ÇT Ð(B (l+, (" 8s Ѐ(B (l+, (" +W Ð2(B (l+, (" +; ÐV(B (l+, (" + Ð~(B (l+, (" + :ßÐ (B Ðø(B oM , oN + %¤%¤oC o £` %¤o# Þ"t u, o$ zþ (È(W  (  (  (  (  (  ( ( s% þo& *  {'    (†(W (  (  (  ( ( s þo *ì"0êU 9À (†(U Ð(B (l+,+fЀ(B (l+,+OÐ2(B (l+,+7ÐV(B (l+,+Ð~(B (l+,+(é+ (  (  Œ!(  ( ( s þo *    þ(°*0œW(ˆ ( ( ( ( ( ( ( ( (ˆ( ( ( ( ( ( ( (  (ˆ  ( (   ( (   ( (   ( (  (ˆ( ( ( ( ( ( ( (  (ˆ( ( ( ( ( ( ( (  (ê+(( ()   s*   s+ s, *~T*~U*~V*~W*~X*~Y*~Z*~[*~\*~]*~^*~_*~`*~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*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*0N,%(  (  (… ( s  þo  *(  (  (… ( s  þo  *0HX(- (. (/ ,+(  (  Œ (  ( s þo *0g[(ˆ ( ( ( ( ( ( ( (  s¨s0 oë+¥ s1 s2 *~Œ*~*~Ž*~*~*~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*&s3 *~²*~³*~´*~µ*~¶*~·*~¸*~¹*0\(s (s s¾*0\(s (s sÀ*~º*~»*~¼*~½*~¾*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*0§`s4 s5 (ì+ :„(…  u -;u -ft {7 (8 t {7 (9  (í+(ƒ *t {: (ƒ t {: („ (î+(È**{; *0 b (î+*0Dc(Ô  ,8{ã (é {ã (ä {ã (ê sÐo¸(< **0öd(Ô  9ç{ã (é {ã (ä (¶  ,8‚(´ ,8o(¾ ,@{å (æ (´ ,){ç oÕrÐ p( , {ç +#oÕrä p( ,o×o= +,9{ã (é {ã (ä {ã (ê sÜo¸(< **0 k(Ì  ,Q{> (? -D{> (@ (g ,0{A (â ,!{> (B {w -{; (< *(Ñ 9š{C (D :‰{C (E (â,r{; (— ,`{F (G {F (H {C (I sØ(ï+¥å(å+¥(ð+  sÚo¸(< *(5*0Án(˜  9¬{J (K (—  9•{F (G {J (L oM oN 3sÒ (ñ++,\{F (G {F (H {J (L sÔ (ò+¥å(å+¥(ð+sÖo¸(< *(6*6sÞ(ó+*~Í*~Î*~Ï*~Ð*~Ñ*~Ò*~Ó*~Ô*~Õ*~Ö*~×*~Ø*~Ù*~Ú*~Û*~Ü*~Ý*~Þ*~ß*~à*~á*~â*~ã*~ä*~å*~æ*~ç*~è*~é*~ê*~ë*~ì*~í*~î*~ï*~ð*~ñ*~ò*~ó*~ô*~õ*~ö*~÷*~ø*~ù*~ú*~û*~ü*~ý*0•r(É  9w{O (P (Æ  ,R{Q (R ,(?oS ,(T **(?{O (U oS ,+Û(?oS ,Ô+Ê(?oS ,Ã+¹(?oS ,²+¨0 Oy(¨E!I.tš {) sà(ô+(Í*t› {* {+ sâ(ô+(Î*t{/oº(…oºo! £ ,!(~% ¤oC (Á+rþ p sÔ(ß(k ( sV oW   oº ,(   sX þoY * *tœ  {,  {-  {.oºo! £ Ð (B oM , oN +% ¤% ¤oC Ð!(B oM , oN +% ¤% ¤oC rþ p sÔ(ß(koºr poZ (Ò(sV oW (… ( ( o £`(Ë(Á**0Uz(¨3 së *o×(‚ oÕsÔ (ß(k säo¸  (ˆsë *0ü{(:oS 9‰{[ (\ :{[ (] {w 9¢ {[ (] {w {w 9{w {x (·  9„{w {w - {; (< *(;oS 9Õ{[ (\ :G{[ (] {w 9´{[ (] {w {w 9{w {x (· 9Œ{w {w -{; 8cÿÿÿ(9oS   ,] {[ (\ ,O {[ (] {w ,< {[ (]   {x (·   , {w {w - {; 8õþÿÿ*(9oS   ,í {[ (\ ,ß {[ (] {w ,Ì {[ (]   {x (·   ,¬ {w {w -ž {; 8…þÿÿ(9oS   9|ÿÿÿ {[ (\ 9kÿÿÿ {[ (] {w 9Uÿÿÿ {[ (] {x (· 92ÿÿÿ{w {w :!ÿÿÿ{; 8þÿÿ(9oS   9ÿþÿÿ {[ (\ 9îþÿÿ {[ (] {w 9Øþÿÿ {[ (] {x (· 9µþÿÿ{w {w :¤þÿÿ{; 8‹ýÿÿ(9oS   9‚þÿÿ {[ (\ 9qþÿÿ {[ (] {w 9[þÿÿ {[ (] {x (· 98þÿÿ{w {w :'þÿÿ{; 8ýÿÿ(9oS   9þÿÿ {[ (\ 9ôýÿÿ {[ (] {w 9Þýÿÿ {[ (] {x (· 9»ýÿÿ{w {w :ªýÿÿ{; 8‘üÿÿ(;oS 9ñ{[ (\ :c{[ (] {w 9Ð{[ (] {w {w 94{w {x (· 9™{w {w -{; 8ýûÿÿ(9oS   9ôüÿÿ {[ (\ 9ãüÿÿ {[ (] {w 9Íüÿÿ {[ (]   {x (·   9ªüÿÿ {w {w :™üÿÿ {; 8€ûÿÿ(9oS   9wüÿÿ {[ (\ 9füÿÿ {[ (] {w 9Püÿÿ {[ (]   {x (·   9-üÿÿ {w {w :üÿÿ {; 8ûÿÿ(9oS   9úûÿÿ {[ (\ 9éûÿÿ {[ (] {w 9Óûÿÿ {[ (] {x (· 9°ûÿÿ{w {w :Ÿûÿÿ{; 8†úÿÿ(9oS   9}ûÿÿ {[ (\ 9lûÿÿ {[ (] {w 9Vûÿÿ {[ (] {x (· 93ûÿÿ{w {w :"ûÿÿ{; 8 úÿÿ(9oS   9ûÿÿ {[ (\ 9ïúÿÿ {[ (] {w 9Ùúÿÿ {[ (] {x (· 9¶úÿÿ{w {w :¥úÿÿ{; 8Œùÿÿ(9oS   9ƒúÿÿ {[ (\ 9rúÿÿ {[ (] {w 9\úÿÿ {[ (] {x (· 99úÿÿ{w {w :(úÿÿ{; 8ùÿÿ(;oS 9Ü{[ (\ :T{[ (] {w 9Ç{[ (] {w {w 90{w {x (·  9˜{w {w - {; 8øÿÿ(9oS   9xùÿÿ {[ (\ 9gùÿÿ {[ (] {w 9Qùÿÿ {[ (] {x (· 9.ùÿÿ{w {w :ùÿÿ{; 8øÿÿ(9oS   9ûøÿÿ {[ (\ 9êøÿÿ {[ (] {w 9Ôøÿÿ {[ (] {x (· 9±øÿÿ{w {w : øÿÿ{; 8‡÷ÿÿ(9oS   9~øÿÿ {[ (\ 9møÿÿ {[ (] {w 9Wøÿÿ {[ (] {x (·  96øÿÿ{w {w :%øÿÿ {; 8 ÷ÿÿ(9oS   9øÿÿ {[ (\ 9ó÷ÿÿ {[ (] {w 9Ý÷ÿÿ {[ (] {x (·  9¾÷ÿÿ{w {w :®÷ÿÿ {; 8–öÿÿ(9oS   9÷ÿÿ {[ (\ 9|÷ÿÿ {[ (] {w 9f÷ÿÿ {[ (] {x (·  9G÷ÿÿ{w {w :7÷ÿÿ {; 8öÿÿ(9oS   9÷ÿÿ {[ (\ 9÷ÿÿ {[ (] {w 9ïöÿÿ {[ (] {x (·  9Ðöÿÿ{w {w :Àöÿÿ {; 8¨õÿÿ(;oS 9Ö{[ (\ :N{[ (] {w 9Á{[ (] {w {w 9-{w {x (·  9—{w {w - {; 8õÿÿ(9oS   9öÿÿ {[ (\ 9öÿÿ {[ (] {w 9íõÿÿ {[ (] {x (· 9Êõÿÿ{w {w :¹õÿÿ{; 8 ôÿÿ(9oS   9—õÿÿ {[ (\ 9†õÿÿ {[ (] {w 9põÿÿ {[ (] {x (· 9Mõÿÿ{w {w :<õÿÿ{; 8#ôÿÿ(9oS   9õÿÿ {[ (\ 9 õÿÿ {[ (] {w 9óôÿÿ {[ (] {x (·  9Ôôÿÿ{w {w :Äôÿÿ {; 8¬óÿÿ(9oS   9£ôÿÿ {[ (\ 9’ôÿÿ {[ (] {w 9|ôÿÿ {[ (] {x (·  9]ôÿÿ{w {w :Môÿÿ {; 85óÿÿ(9oS   9,ôÿÿ {[ (\ 9ôÿÿ {[ (] {w 9ôÿÿ {[ (] {x (·  9æóÿÿ{w {w :Öóÿÿ {; 8¾òÿÿ(9oS   9µóÿÿ {[ (\ 9¤óÿÿ {[ (] {w 9Žóÿÿ {[ (] {x (·  9oóÿÿ{w {w :_óÿÿ {; 8Gòÿÿ(;oS 9Ö{[ (\ :N{[ (] {w 9Á{[ (] {w {w 9-{w {x (·  9—{w {w - {; 8¼ñÿÿ(9oS   9³òÿÿ {[ (\ 9¢òÿÿ {[ (] {w 9Œòÿÿ {[ (] {x (· 9iòÿÿ{w {w :Xòÿÿ{; 8?ñÿÿ(9oS   96òÿÿ {[ (\ 9%òÿÿ {[ (] {w 9òÿÿ {[ (] {x (· 9ìñÿÿ{w {w :Ûñÿÿ{; 8Âðÿÿ(9oS   9¹ñÿÿ {[ (\ 9¨ñÿÿ {[ (] {w 9’ñÿÿ {[ (] {x (·  9sñÿÿ{w {w :cñÿÿ {; 8Kðÿÿ(9oS   9Bñÿÿ {[ (\ 91ñÿÿ {[ (] {w 9ñÿÿ {[ (] {x (·  9üðÿÿ{w {w :ìðÿÿ {; 8Ôïÿÿ(9oS   9Ëðÿÿ {[ (\ 9ºðÿÿ {[ (] {w 9¤ðÿÿ {[ (] {x (·  9…ðÿÿ{w {w :uðÿÿ {; 8]ïÿÿ(9oS   9Tðÿÿ {[ (\ 9Cðÿÿ {[ (] {w 9-ðÿÿ {[ (] {x (·  9ðÿÿ{w {w :þïÿÿ {; 8æîÿÿ(;oS 9Ö{[ (\ :N{[ (] {w 9Á{[ (] {w {w 9-{w {x (·  9—{w {w - {; 8[îÿÿ(9oS   9Rïÿÿ {[ (\ 9Aïÿÿ {[ (] {w 9+ïÿÿ {[ (] {x (· 9ïÿÿ{w {w :÷îÿÿ{; 8Þíÿÿ(9oS   9Õîÿÿ {[ (\ 9Äîÿÿ {[ (] {w 9®îÿÿ {[ (] {x (· 9‹îÿÿ{w {w :zîÿÿ{; 8aíÿÿ(9oS   9Xîÿÿ {[ (\ 9Gîÿÿ {[ (] {w 91îÿÿ {[ (] {x (·  9îÿÿ{w {w :îÿÿ {; 8êìÿÿ(9oS   9áíÿÿ {[ (\ 9Ðíÿÿ {[ (] {w 9ºíÿÿ {[ (] {x (·  9›íÿÿ{w {w :‹íÿÿ {; 8sìÿÿ(9oS   9jíÿÿ {[ (\ 9Yíÿÿ {[ (] {w 9Cíÿÿ {[ (] {x (·  9$íÿÿ{w {w :íÿÿ {; 8üëÿÿ(9oS   9óìÿÿ {[ (\ 9âìÿÿ {[ (] {w 9Ììÿÿ {[ (] {x (·  9­ìÿÿ{w {w :ìÿÿ {; 8…ëÿÿ0D|(;oS 9»{[ (\ :4{[ (] {w 9¨{[ (] {w {w 9{w {x (·  9Ž{w {w - {; (< *(9oS ,]{[ (\ ,O{[ (] {w ,<{[ (] {x (· ,{w {w -{; 8‰ÿÿÿ*(9oS ,í{[ (\ ,ß{[ (] {w ,Ì{[ (] {x (· ,¬{w {w -ž{; 8ÿÿÿ(9oS 9|ÿÿÿ{[ (\ 9kÿÿÿ{[ (] {w 9Uÿÿÿ{[ (] {x (·  96ÿÿÿ{w {w :&ÿÿÿ {; 8¢þÿÿ(9oS 9ÿÿÿ{[ (\ 9ôþÿÿ{[ (] {w 9Þþÿÿ{[ (] {x (·  9¿þÿÿ{w {w :¯þÿÿ {; 8+þÿÿ(9oS 9Žþÿÿ{[ (\ 9}þÿÿ{[ (] {w 9gþÿÿ{[ (] {x (·  9Hþÿÿ{w {w :8þÿÿ {; 8´ýÿÿ(9oS 9þÿÿ{[ (\ 9þÿÿ{[ (] {w 9ðýÿÿ{[ (] {x (·  9Ñýÿÿ{w {w :Áýÿÿ {; 8=ýÿÿ0x€u^-u]-t_{&*t^{%*t] {" {# {$ {!{ ((o sV þoW *0 ʼn(=o^ ,z{_ (` (8(l (ƒ („ s(‰(a (b (‡Ð (B oc þ (îsd *(4  ,( {; 8Aÿÿÿ(7  ,( {; 8 ÿÿÿ(Poe   9r {f (g (¶   9 {f (h  {‚ („ (8(l (ƒ („ (Ð (B oc þ(o si oj (é8Pþÿÿ(¸   ,7 {k (l (j,  {k (m  {k (n  8Jÿÿÿ(8(l (ƒ („ (v(o (p (‚u],7t]{${#{"(osq +)(or psÔ(ßsq (r (s (t oºoM ,1oN Ð.(B oM , oN +(l++,+.o×(~%¤oC (Á(Ð (B oc þ(o su ov (ésd *(¸   9iþÿÿ {k (l (j9Oþÿÿ {k (m  {k (n  8yýÿÿ0‹ (y (w (x (y (z ({ (| (} (~ (  (8(l  (ƒ   („   (l  (ƒ   („ s (‰(b (a (‡(,Ð (B oc þ o×o×oºoº   s€ s o‚ (ésd *0'Œ (y (w (x (y (z ({ (| (} (~ (  (8(l  (ƒ   („  (Š   (l  (ƒ  („ s (‰(b (a (‡(/Ð (B oc þ o×o×oºoº  s€ s o‚ (ésd *01 s o¸   (y (w (x (y (z ({ (| (} (~ (  (8(l  (ƒ   („    (l  (ƒ  („ s(‰(b (a (‡(/Ð (B oc þo×o×oºoº  s€ s o‚ (ésd *0Ö’(»  ,,r prB p(Hs z(Ö  ,,r pr` p(Hs z(¹  ,,r pr‚ p(Hs z(¼  ,;,8 {ƒ („ r prž po>(º rº p(º (Hs z,r poÅ (Hs z(ë(¦sd *0–(Ð  ,0,-{… († rÄ pr poÅ (º (Hs z(Á  ,9,6{‡ (ˆ rÄ pr p o> (º r p(º (Hs z(¹ ,,rÄ pr‚ p(Hs z(Î ,<,9{‰ (Š rÄ pr* po> (º r p(º (Hs z(× ,,r pr> p(Hs z(t*01 œ(¿  ,${‹ (Œ {‹ ( +Ò(<oS 9Y {[ (Ž { 9D {[ (Ž { { 9&{ { { 9 { { { 9ò{ { { :Ø {[ (] {w 9à {[ (] {w {w 9¥{w   {x (¶   9‡ {w {w -y{ {x  {‚ (ƒ   {‚ („  {  (v(o (p      (p*(Poe 9{f (‘ { 9ê{f (‘ { { 9Ë{ { { :±{f (g (¶ 9—{ {f (h {‚ (ƒ  {‚ („    ({(’ (“ (” (• (Ð (B oc þsi oj (ésd *(Voe 9,{f (‘ { 9{f (‘ { { 9÷{   { { 9Ý { !!{ { :Ã{f (g (¶ ""9© { {f (h "{‚ (ƒ  "{‚ („    (z##(– #(— #(˜ s(‰$$(a $(b (‡%Ð (B oc þ%(îsd *(>oS &&,E&{[ (] {w ,2&{[ (] ''{w {w -'{x 8½ûÿÿ(=o^ ((9è({_ (™ { 9Ò({_ (™ )){ { 9³){ **{ { :™*{ ({_ (` ){  (‡   (… ( (Ï(~% ¤oC (ÁÐ (B oc -(  sX oY +(é(¦sd *(¸ ++9Ã+{k (m +{k (n  +{k (l (8(j,,,U(w$$(a $(b % %%oº ( ( oš sX oY (Â(ésd *,(¶rb p( o‘ s z(é(¦sd *(Boe --9-{f (‘ { 9-{f (‘ ..{ { 9å.{ //{ { 9Ë/{ 00{ { :±-{f (g (¶ 119—1{‚ (ƒ  -{f (h /{ 1{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Coe 2292{f (‘ { 92{f (‘ 33{ { 9å3{ 44{ { 9Ë4{ 55{ { :±2{f (g (¶ 669—6{‚ (ƒ  2{f (h 4{ 6{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Doe 7797{f (‘ { 97{f (‘ 88{ { 9å8{ 99{ { 9Ë9{ ::{ { :±7{f (g (¶ ;;9—;{‚ (ƒ  7{f (h 9{ ;{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Eoe <<9<{f (‘ { 9<{f (‘ =={ { 9å={ >>{ { 9Ë>{ ??{ { :±<{f (g (¶ @@9—@{‚ (ƒ  <{f (h >{ @{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Foe AA9A{f (‘ { 9A{f (‘ BB{ { 9åB{ CC{ { 9ËC{ DD{ { :±A{f (g (¶ EE9—E{‚ (ƒ  A{f (h C{ E{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Goe FF9F{f (‘ { 9F{f (‘ GG{ { 9åG{ HH{ { 9ËH{ II{ { :±F{f (g (¶ JJ9—J{‚ (ƒ  F{f (h H{ J{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Hoe KK9K{f (‘ { 9K{f (‘ LL{ { 9åL{ MM{ { 9ËM{ NN{ { :±K{f (g (¶ OO9—O{‚ (ƒ  K{f (h M{ O{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Ioe PP9P{f (‘ { 9P{f (‘ QQ{ { 9åQ{ RR{ { 9ËR{ SS{ { :±P{f (g (¶ TT9—T{‚ (ƒ  P{f (h R{ T{‚ („    ({(” (’ (“ (• (Ð (B oc þsi oj (ésd *(Yo^ UU9ÀU{_ (™ { 9ªU{_ (™ VV{ { 9‹V{ WW{ { -tV{ U{_ (` W{  (w$$(a $(b  (# Ð (B oc þ(‚ s› oœ (ésd *(^oe XX9ØX{f (‘ { 9ÂX{f (‘ YY{ { 9£Y{ ZZ{ { :‰Y{ X{f (h Z{  X{f (g  (w$$(a $(b ( Ð (B oc þ(‚ (8s ož (ésd *(Zoe [[9Ø[{f (‘ { 9Â[{f (‘ \\{ { 9£\{ ]]{ { :‰\{ [{f (h ]{  [{f (g  (w$$(a $(b (  Ð (B oc þ(‚ (8s ož (ésd *(_oe ^^9^{f (‘ { 9ê^{f (‘ __{ { 9Ë_{ ``{ { :±^{f (g (¶ aa9—a{‚ (ƒ  ^{f (h `{ a{‚ („    ({(” (’ (“ (• (!Ð (B oc þsi oj (ésd *([oe bb9b{f (‘ { 9êb{f (‘ cc{ { 9Ëc{ dd{ { :±b{f (g (¶ ee9—e{‚ (ƒ  b{f (h d{ e{‚ („    ({(” (’ (“ (• ("Ð (B oc þsi oj (ésd *(Joe ff9Sf{f (‘ { 9=f{f (‘ gg{ { 9g{ hh{ { 9h{ ii{ { :êf{f (g (¶ jj9Ðh{ j{‚ (ƒ  f{f (h j{‚ („  (w$$(a $(b   (8(lkk(ƒ k(„ (¨3(¦+ oº o×(¢(&Ð (B oc þsi oj (ésd *(KoŸ ll9l{  (¡ { 9øl{  (¡ mm{ { 9Ùm{ nn{ { 9¿n{ oo{ { 9¥o{ pp{ { :‹l{  (¢ (¶ qq9ql{  (£ (¶ rr9Wp{ r{‚ (ƒ  q{‚ (ƒ l{  (¤ r{‚ („  q{‚ („ (w$$(a $(b   (8(lkk(ƒ sk(„ %(8(ltt(ƒ ut(„ vsv(‰ww(a w(b xx(‡y(¨3(¦+ oºoº(¢z()Ð (B oc þuo×%oºyoºs%uysë s¥ o¦ (ézsd *(`oS {{9S{{[ (Ž { 9={{[ (Ž ||{ { 9|{ }}{ { 9}{ ~~{ { 9ê~{ { { 9Ð{ €€{ { :¶{{[ (] {w 9 {{[ (] {w {w 9{w ‚‚{w {w 9g‚{w ƒƒ{x (¶ „„9Iƒ{w {w 98ƒ{w ……{x (¶ ††9…{w {w 9 …{w ‡‡{x (oˆˆ9ëˆ{z ({ {ú 9Õˆ{z ({ ‰‰{ú {ú 9¶‰{ú ŠŠ{ú {ú :œ‡{w {w :‹}{ {x ‰{§  „{‚ (ƒ „{‚ („  ‚{x Š{§ s†{‚ (ƒ u†{‚ („ ˆ{z (| %  su%(q*(aoS ‹‹9S‹{[ (Ž { 9=‹{[ (Ž ŒŒ{ { 9Œ{ { { 9{ ŽŽ{ { 9êŽ{ { { 9Ð{ { { :¶‹{[ (] {w 9 ‹{[ (] ‘‘{w {w 9‘{w ’’{w {w 9g’{w ““{x (¶ ””9I“{w {w 98“{w ••{x (¶ ––9•{w {w 9 •{w ——{x (o˜˜9ë˜{z ({ {ú 9Õ˜{z ({ ™™{ú {ú 9¶™{ú šš{ú {ú :œ—{w {w :‹{ ‘{x ™{§  ”{‚ (ƒ ”{‚ („  ’{x š{§ s–{‚ (ƒ u–{‚ („ ˜{z (| %  su%(r*(boS ››9^›{[ (Ž { 9H›{[ (Ž œœ{ { 9)œ{ { { 9{ žž{ { 9õž{ ŸŸ{ { 9ÛŸ{   { { :Á›{[ (] {w 9«›{[ (] ¡¡{w {w 9Œ¡{w ¢¢{w {w 9r¢{w ££{x (¶ ¤¤9T£{w {w 9C£{w ¥¥{x (¶ ¦¦9%¥{w {w 9¥{w §§{x (o¨¨9ö¨{z ({ {ú 9à¨{z ({ ©©{ú {ú 9Á©{ú ªª{ú {ú :§§{w {w :–{ ¡{x ©{§  ¤{‚ (ƒ ¤{‚ („  ž{  ¢{x ª{§ s¦{‚ (ƒ u¦{‚ („ ¨{z (| %   su%(s*(4««,«{; 8Ààÿÿ(7¬¬,¬{; 8žàÿÿ(@o^ ­­,­{_ (` (ë(¦sd *(Ao^ ®®,®{_ (` (ë(¦sd *(Ñ ¯¯,(,%¯{C (E °rŽ p°oÅ (Hs z(Ì ±±,(,%±{> (@ ²r¸ p²oÅ (Hs z(u*0%(v (p (o (os¨ *0¨ž(n 9{; (w (b (a  oºo! £(€%¤oC  oºo© , oºoc þ+, (Á+ (Šs¨ *(¦s¨ *0 ÌŸ(w (a (b (w (b  (a (8(l(ƒ („ (8(l  (ƒ   („  s(‰  (b   (‡s (‰(b  (‡sª s« *0: (v (o (p (8(l  (ƒ („ s¬ *08¡(z (­ (– (— (˜ (o s® *0Ú¢(w (a (b (¨3*oº oºo! £rê psÔ(ß(l(ƒ („ (sV oW  („,! o! £Ð (B oc þ+,+ (…,(  sX þoY * *0#£({ (“ (” (• sq *0á¤(Loe 9þ{f (‘ { 9é{f (‘ { { 9Í{ { { 9¶{ { { :Ÿ{f (g (¶ 9†{‚ („ {‚ (ƒ {f (h { (}  (r   (s   (t  (–Ð (B oc þ   si þoj *(Moe   9  {f (‘ { 9ô {f (‘ { { 9Õ{ { { 9»{ { { :¡ {f (g (¶ 9‡{‚ („ {‚ (ƒ  {f (h { (}  (r   (s   (t  (™Ð (B oc þ   si þoj *(Noe 9 {f (‘ { 9ô{f (‘ { { 9Õ{ { { 9»{ { { :¡{f (g (¶ 9‡{‚ („ {‚ (ƒ {f (h { (}  (r   (s   (t  (œÐ (B oc þ   si þoj *(Ooe 9 {f (‘ { 9ô{f (‘ { { 9Õ{ { { 9»{ { { :¡{f (g (¶ 9‡{‚ („ {‚ (ƒ {f (h { (}  (r   (s   (t  (ŸÐ (B oc þ   si þoj *(go^ 9{_ (™ { 9‡{_ (™ { { ,k{ { { -T{ {_ (` { (|(Ð (B oc þs› þoœ *(ho^   9 {_ (™ { 9‡ {_ (™ !!{ { ,k!{ ""{ { -T!{  {_ (` "{ (|(ïÐ (B oc þs› þoœ *(Ro^ ##9#{_ (™ { 9‡#{_ (™ $${ { ,k${ %%{ { -T${ #{_ (` %{ (|(õÐ (B oc þs› þoœ *(Qo^ &&9&{_ (™ { 9‡&{_ (™ ''{ { ,k'{ (({ { -T'{ &{_ (` ({ (|(òÐ (B oc þs› þoœ *(So^ ))9){_ (™ { 9‡){_ (™ **{ { ,k*{ ++{ { -T*{ ){_ (` +{ (|(øÐ (B oc þs› þoœ *(To^ ,,9,{_ (™ { 9‡,{_ (™ --{ { ,k-{ ..{ { -T-{ ,{_ (` .{ (|(ûÐ (B oc þs› þoœ *(Uo^ //9/{_ (™ { 9‡/{_ (™ 00{ { ,k0{ 11{ { -T0{ /{_ (` 1{ (|(þÐ (B oc þs› þoœ *(coe 2292{f (‘ { 92{f (‘ 33{ { 9å3{ 44{ { 9Ë4{ 55{ { :±2{f (g (¶ 669—6{‚ („ 6{‚ (ƒ 2{f (h 2{f (¯  4{ (}  (r   (s   (t 7(¿ Ð (B oc þ7  s° þo± *(eoe 8898{f (‘ { 98{f (‘ 99{ { 9å9{ ::{ { 9Ë:{ ;;{ { :±8{f (g (¶ <<9—<{‚ („ <{‚ (ƒ 8{f (h 8{f (¯  :{ (}  (r   (s   (t 7(Í Ð (B oc þ7  s° þo± *(doe ==9={f (‘ { 9={f (‘ >>{ { 9å>{ ??{ { 9Ë?{ @@{ { :±={f (g (¶ AA9—A{‚ („ A{‚ (ƒ ={f (h ={f (¯  ?{ (}  (r   (s   (t 7(Û Ð (B oc þ7  s° þo± *(foe BB9B{f (‘ { 9B{f (‘ CC{ { 9åC{ DD{ { 9ËD{ EE{ { :±B{f (g (¶ FF9—F{‚ („ F{‚ (ƒ B{f (h B{f (¯  D{ (}  (r   (s   (t 7(é Ð (B oc þ7  s° þo± *(Woe GG9ðG{f (‘ { 9ÚG{f (‘ HH{ { 9»H{ II{ { :¡G{f (g (¶ JJ9‡J{‚ (ƒ G{f (h I{ J{‚ („ (}  (s   (t   (r  (¥Ð (B oc þ   si þoj *(Xoe KK9ðK{f (‘ { 9ÚK{f (‘ LL{ { 9»L{ MM{ { :¡K{f (g (¶ NN9‡N{‚ (ƒ K{f (h M{ N{‚ („ (}  (s   (t   (r  (¨Ð (B oc þ   si þoj *(ioe OO9ðO{f (‘ { 9ÚO{f (‘ PP{ { 9»P{ QQ{ { :¡O{f (g (¶ RR9‡R{‚ (ƒ O{f (h Q{ R{‚ („ (}  (s   (t   (r  («Ð (B oc þ   si þoj *(\oe SS9µS{f (‘ { 9ŸS{f (‘ TT{ { 9€T{ UU{ { -iS{f (g T{ S{f (h U{ (| (Ð (B oc þ (8s þož *(]oe VV9µV{f (‘ { 9ŸV{f (‘ WW{ { 9€W{ XX{ { -iV{f (g W{ V{f (h X{ (| (Ð (B oc þ (8s þož *(4YY,Y{; 8Híÿÿ(7ZZ,Z{; 8'íÿÿ(|*6s(ó+*0$¥(| ( (W Þt  þ* 0 ¦(Loe 9û{f (‘ { 9æ{f (‘ { { 9Ê{ { { 9³{ { { :œ{f (g (¶ 9ƒ{‚ („ {‚ (ƒ { {f (h {  {  (€ (— Ð (B oc þ   (8s² þo³ *(Moe   9  {f (‘ { 9ó {f (‘   { { 9Ô { { { 9º{ { { :  {f (g (¶ 9†{‚ („ {‚ (ƒ  {  {f (h {  {  (€ (š Ð (B oc þ   (8s² þo³ *(Noe 9 {f (‘ { 9 {f (‘ { { 9ë{ { { 9Ñ{ { { :·{f (g (¶ 9{‚ („ {‚ (ƒ { {f (h {  {  (€ ( Ð (B oc þ  (w% ¤oC (8s² þo³ *(Ooe 9 {f (‘ { 9 {f (‘ { { 9ë{ { { 9Ñ{ { { :·{f (g (¶ 9{‚ („ {‚ (ƒ { {f (h {  {  (€ (  Ð (B oc þ  (w% ¤oC (8s² þo³ *(go^ 9{_ (™ { 9‡{_ (™ { { ,k{ { { -T{ {_ (` {  (€ ( Ð (B oc þ s´ þoµ *(ho^ 9{_ (™ { 9‡{_ (™ { { ,k{   { { -T{ {_ (`  {  (€ (ð Ð (B oc þ s´ þoµ *(Ro^ !!9!{_ (™ { 9‡!{_ (™ ""{ { ,k"{ ##{ { -T"{ !{_ (` #{  (€ (ö Ð (B oc þ s´ þoµ *(Qo^ $$9${_ (™ { 9‡${_ (™ %%{ { ,k%{ &&{ { -T%{ ${_ (` &{  (€ (ó Ð (B oc þ s´ þoµ *(So^ ''9'{_ (™ { 9‡'{_ (™ (({ { ,k({ )){ { -T({ '{_ (` ){  (€ (ù Ð (B oc þ s´ þoµ *(To^ **9*{_ (™ { 9‡*{_ (™ ++{ { ,k+{ ,,{ { -T+{ *{_ (` ,{  (€ (ü Ð (B oc þ s´ þoµ *(Uo^ --9-{_ (™ { 9‡-{_ (™ ..{ { ,k.{ //{ { -T.{ -{_ (` /{  (€ (ÿ Ð (B oc þ s´ þoµ *(coe 0090{f (‘ { 90{f (‘ 11{ { 9é1{ 22{ { 9Ï2{ 33{ { :µ0{f (g (¶ 449›4{‚ („ 4{‚ (ƒ 1{ 0{f (h 3{  0{f (¯ 52{  (€ (À5 Ð (B oc þ   (8sª s¶ þo· *(eoe 66956{f (‘ { 96{f (‘ 77{ { 97{ 88{ { 9æ8{ 99{ { :Ì6{f (g (¶ ::9²:{‚ („ :{‚ (ƒ 7{ 6{f (h 9{  6{f (¯ 58{  (€ (Î5 Ð (B oc þ  (w% ¤oC (8sª s¶ þo· *(doe ;;9;{f (‘ { 9;{f (‘ <<{ { 9é<{ =={ { 9Ï={ >>{ { :µ;{f (g (¶ ??9›?{‚ („ ?{‚ (ƒ <{ ;{f (h >{  ;{f (¯ 5={  (€ (Ü5 Ð (B oc þ   (8sª s¶ þo· *(foe @@95@{f (‘ { 9@{f (‘ AA{ { 9A{ BB{ { 9æB{ CC{ { :Ì@{f (g (¶ DD9²D{‚ („ D{‚ (ƒ A{ @{f (h C{  @{f (¯ 5B{  (€ (ê5 Ð (B oc þ  (w% ¤oC (8sª s¶ þo· *(Woe EE9ßE{f (‘ { 9ÉE{f (‘ FF{ { 9ªF{ GG{ { :E{f (g (¶ HH,yH{‚ (ƒ F{ E{f (h G{  H{‚ („ (€ (¦ Ð (B oc þ (8s¸ þo¹ *(Xoe II9ßI{f (‘ { 9ÉI{f (‘ JJ{ { 9ªJ{ KK{ { :I{f (g (¶ LL,yL{‚ (ƒ J{ I{f (h K{  L{‚ („ (€ (© Ð (B oc þ (8s¸ þo¹ *(ioe MM9ßM{f (‘ { 9ÉM{f (‘ NN{ { 9ªN{ OO{ { :M{f (g (¶ PP,yP{‚ (ƒ N{ M{f (h O{  P{‚ („ (€ (¬ Ð (B oc þ (8s¸ þo¹ *(\oe QQ9µQ{f (‘ { 9ŸQ{f (‘ RR{ { 9€R{ SS{ { -iQ{f (g R{ Q{f (h S{  (€ (Ž Ð (B oc þ (8sº þo» *(]oe TT9µT{f (‘ { 9ŸT{f (‘ UU{ { 9€U{ VV{ { -iT{f (g U{ T{f (h V{  (€ (‘ Ð (B oc þ (8sº þo» *(4WW,W{; 8íÿÿ(7XX,X{; 8ôìÿÿ(€*:(¼ }Ñ*0ƒ§{ÑoS ,q{[ (\ ,d{[ (\ {[ (] {w ,F{[ (] {w {w --{[ (Ž {; {x  s½ (¾ **:(¿ }Ò*0©¨{ÒoS 9”{[ (\ 9„{[ (\ {[ (] {w ,f{[ (] {w {w ,M{w {w {w -9{[ (Ž {;  {x {x sÀ (Á **:( }Ó*0 Í©{ÓoS 9¸{[ (\ 9¨{[ (\ {[ (] {w 9‡{[ (] {w {w ,n{w {w {w ,Z {w {w {w -D{[ (Ž {; {x  {x {x   sà (Ä **V(Å }Æ }Ç *z{Æ {Ç Œ ¥é(É*(È *0ª(É (Ê sË *:(Ì }Ö*0n¬(Í (Î {Öo ,{Ö(ç+od +{Ö (õ+oÏ Þ"t u, o$ zþ *9J":(Ð }×*0w­(Ñ (Ò (Ó {×o ,{×(ç+od +{× (õ+oÏ Þ"t u, o$ zþ*@R":(Ô }Ø*0"®(Õ (Ö {Ø(r(¿*:(× }Ù*0*¯(Ø (Ù (Ú {Ù(r(À*:(Û }Ü *01°(Ý (Þ (ß {Ü Œ s% þo& *:(à }á *06±(â (ã (ä {á Œ ¥és þo  *V(å }æ }ç *0 S²(è (é (ê (ë {æ {ç Œ ¥Œ¡¥é Œ§¥éþ(‰*V(ì }í }î *0 N²(è (é (ê (ë {í {î Œ ¥Œ¡ Œ§¥éþ(Š*V(ï }ð }ñ *0 I³(ò (ó (ô (õ {ð {ñ Œ ¥é Œ¡¥éþ(’*V(ö }÷ }ø *0 €´(ù (ú (û (ü (ý (þ (ÿ {÷ {ø Œ ¥Œ¡¥ Œ§Œ¯¥Œ¹¥éþ(“*V(ï } } *0 I³(ò (ó (ô (õ { { Œ ¥é Œ¡¥éþ(¡*V( } } *0 Xµ( ( ( ( (  { { Œ ¥Œ¡ Œ§¥éþ(¢*0d(  }  }  }  } } } } }  }  }  }  } *0™¶( ( ( ( ( {  {  {  { { { { { { { { { Œ ¥éŒ¡¥é Œ§¥éþ(¯*0\( } } } }  }! }" }# }$  }%  }&  }' *0ʸ(( () (* (+ (, (- (. (/ (0 { { { {  {! {" {# {$ {% {& {' Œ Œ¡¥ Œ§¥Œ¯Œ¹¥Œf¥éþ(±*V(H}ÿ}*b{ÿ{s1 Œh*r(2 }3 }4 }5 *0 9º{5 (6 (7 (8 {ÿ {s9 þ(ö+*V(: }; }< *0 A»(= (> (? {; {< Œ ¥Œ¡¥éþ(ë*V(@ }A }B *0 <»(= (> (? {A {B Œ ¥sC þ(÷+*(D *0 ¼(E (F (G (H (I (´ ,*{ç  (á+,þ+, {ç * o×oº(y%¤%¤oC (ý (ø (Ð ,@ (v ((  (  (   (… ( ( s  þo  *((  (  (   (… ( ( s  þo  *(J *0 |½(K (L (M (N ,.((  (   (… ( ( s  þo  *( (  (   (… ( ( s  þo  *(O *07¾(P (Q ( (  (  (… ( s  þo  *(R *Ž( (  (  (… s  þo  *(S *0 y¿(T (U (V (W (X (Y (Z  o×o×(~%¤oC  (y%¤% ¤oC (ý (ø (Ð ({%¤%¤%¤oC (ý (ø (ø (Ð ,V (v  (v ((  (  (  (    (… ( ( ( s  þo  *((  (  (  (    (… ( ( ( s  þo  *([ *0 ÚÀ(\ (] (^ (_ o×Ð}(B (y%¤%¤oC (ý (ø (Ð,=(v(o×(  (  (… ( ( s  þo  *(o×(  (  (… ( ( s  þo  *V(` }a }b *0 ÞÁ(\ (] (^ (_ o× oº(y%¤%¤oC (ý (ø (Ð,A(v{a (  (  (  (… ( ( s  þoc *{b (  (  (  (… ( ( s  þoc *V([ } }*0 ËÂ(\ (] (^ (_ o×(y%¤%(}¤oC (ý (ø (Ð,:(v{ (  (  (… ( ( s  þo  *{(  (  (… ( ( s  þo  *V(J }}*0 ~½(K (L (M (N ,/{(  (   (… ( ( s  þo  *{(  (   (… ( ( s  þo  *(d *0iÃ(e (f (g ,(($(  (  (… ( s  þo  *(%(  (  (… ( s  þo  *([ *0 ÜÁ(\ (] (^ (_ o× oº(y%¤%¤oC (ý (ø (Ð,@(v('(  (  (  (… ( ( s  þo  *(((  (  (  (… ( ( s  þo  *(h *0 TÄ(i (j (k (l (m (n (o (p (ƒ (p („ (y%¤%¤oC (ý (ø (Ð (y%¤% ¤oC (ý (ø (Ð ,U (v  (v (* (  (  (  (    (… ( ( ( s  þo  *(+ (  (  (  (    (… ( ( ( s  þo  *(q *0 Å(r (s (t (u (v (w (x (y (z (y ({ (y (|  (y (}  (y (~  (y (  (y (€  (y%¤% ¤oC (ý (ø (Ð(y%¤% ¤oC  (ý (ø  (Ð({%¤%¤%¤oC   (ý (ø (ø  (Ð,s(v(v(v(- (  (  (  (  (  (… ( ( ( ( ( s  þo  *(. (  (  (  (  (  (… ( ( ( ( ( s  þo  *(q *0 (Æ(r (s (t (u (v (w (x (y (z (y ({ (y (|  (y (}  (y (~  (y (  (y (€  (y%¤% ¤oC (ý (ø (Ð(y%¤% ¤oC  (ý (ø  (Ð(~%¤oC ({%¤%¤%¤oC   (ý (ø (ø  (Ð,s(v(v(v(0 (  (  (  (  (  (… ( ( ( ( ( s  þo  *(1 (  (  (  (  (  (… ( ( ( ( ( s  þo  *:(Å } *:{ (ø+*:(‚ }ƒ *b{ƒ Œ ¥é(ø+*V(„ }}*v{(á+, {(< **(… *Bo† o‡ þ*(ˆ *&(ù+*:(„ }*:{o‰ *(Š *0{Ç{ú ,\ {ú {ú -{§  së (ð (í *(¹  , {† (ù+*(… ( (ù+*(¹  ,ä {† +Í:(„ }*:{o‰ *V(„ }}*v{(á+, {(< **(‹ *0!È(7 ,{; oŒ (< **:( }*R{((k*:( }*R{((k*V(„ }}*v{(á+, {(< **( *2sï**u]þ*sõ**u^þ*s÷**u_þ*0É u_,+ u^,+*0KÊu_,+ (´  ,${ç (á+,þ+, {ç *(ç*²(æ} }!}"}#}$*{ *{!*{"*{#*{$*:(æ}%*{%*:(æ}&*{&*:( }'*2{'{ *2{'{!*2{'{"*2{'{#*2{'{$*:( }(*2{({%*:( })*2{){&*(Ž *"(x*(Ž *"(x*(Ž *"(x*(Ž *"(x*(Ž *"(x*V(„ }*}+*0K{+(á+,:({*(  (  {+(ß(… ( s  o  (< **(Ž *"(x*(Ž *6(¦s¨ *(Ž *6(¦s¨ *(‹ *0'È(m ,{; (~oŒ (< **00Ìut , *(¶rö p( o‘ rT ps z0s ÐÚ(ÿ ¥#€,Ðu(B €.(xoM , (xoN +(x€-Ðv(B €0(zoM , (zoN +(z€/Ðw(B €2(|oM , (|oN +(|€1Ð.(B €4(oM , (oN +(€3Ðx(B €6(oM , (oN +(€5Ðø(B €8(ƒoM , (ƒoN +(ƒ€7Ð ÐE (ú+€9(Œ( €:(Œ(‘ €;Ð’ ÐW (ú+€<(( €=((‘ €>Г Ðg (û+€?(•(” €@(•(• €AЖ Ðj (û+€B(˜(” €C(˜(• €DГ Ðg (û+€E(›(” €F(›(• €GЖ Ðj (û+€H(ž(” €I(ž(• €JЗ ÐR (ü+€K(¤(˜ €L(¤(™ €MК ÐU (ü+€N(§(˜ €O(§(™ €PЛ Ðb (ü+€Q(ª(˜ €R(ª(™ €SМ €UÐ €VО €WП €XР €YС €ZТ €[У €\Ф €]Ð¥ €^Ðñ€_(´(µ(¶(·(¸(¹(º(»(¼(½(¾(ý+€T(³(¦ €`(³(§ €aШ €cЩ €dЪ €eЫ €fЬ €gЭ €hЮ €iЯ €jа €kб €lÐð€m(Â(Ã(Ä(Å(Æ(Ç(È(É(Ê(Ë(Ì(ý+€b(Á(¦ €n(Á(§ €oв €qг €rд €sе €tж €uз €vи €wй €xк €yл €zÐò€{(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(×(Ø(Ù(Ú(ý+€p(Ï(¦ €|(Ï(§ €}м €н €€о €п €‚ÐÀ €ƒÐÁ €„Р€…Ðà €†ÐÄ €‡ÐÅ €ˆÐ(Þ(ß(à(á(â(ã(ä(å(æ(ç(è(ý+€~(Ý(¦ €Š(Ý(§ €‹ÐÆ ÐV (þ+€Œ(î(Ç €(î(È €ŽÐÉ Ðc (þ+€(ñ(Ç €(ñ(È €‘ÐÊ ÐJ (þ+€’(ô(Ç €“(ô(È €”ÐË ÐK (þ+€•(÷(Ç €–(÷(È €—ÐÌ ÐL (þ+€˜(ú(Ç €™(ú(È €šÐÍ ÐM (þ+€›(ý(Ç €œ(ý(È €ÐÎ ÐN (þ+€ž((Ç €Ÿ((È € ÐÏ (s€¡ÐÐ (s€£ÐÑ (s€¤s°€¢ÐÒ (s€¦ÐÓ (s€§s²€¥ÐÔ (s€©s´€¨ÐÕ (s€«s¶€ªÐÖ (s€­Ð× (s€®s¸€¬ÐØ (s€°ÐI (s€±sº€¯ÐÙ (sЀ (s(ÿ+€²ÐÚ (sЃ (s(ÿ+€³ÐÛ (sІ (s(ÿ+€´ÐÜ (sЉ (s(ÿ+€µ(€¶(€·(€¸(€¹ÐÝ ÐX (€ºÐÞ Ð\ (€»Ðß Ð[ (€¼Ðà Ð_ (€½Ðá (s€¿ÐO (s€Às€¾Ðâ (s€ÂÐ| (s€ÃsÄ€ÁÐã (s€ÅИ (s€ÆsÆ€ÄÐä (s€ÈФ (s€ÉsÈ€ÇÐå (s€ËЭ (s€ÌsÊ€ÊÐ(B r poæ oç (å€ÍÐ(B os r poè r€ poæ oç (å€ÎÐ(B os r  poè r poæ oç (å€ÏÐÑ(å€ÐÐÓ(h€ÑÐÔ(å€ÒÐÒ(å€ÓÐÖ(h€ÔÐ×(h€ÕÐô(i€ÖÐõ(i€×Ðö(i€ØÐ÷(i€ÙÐø(i€ÚÐù(i€ÛÐú(i€ÜÐû(i€ÝÐó(i€ÞÐü(j€ßÐë(i€àÐì(i€áÐí(i€âÐî(i€ãÐÚ(i€äÐê(h€åÐÛ(h€æÐÜ(h€çÐÝ(h€èÐÞ(h€éÐÙ(i€êÐá(i€ëÐâ(i€ìÐà(h€íÐç(i€îÐè(i€ïÐØ(i€ðÐä(i€ñÐå(i€òÐæ(i€óÐý(å€ôÐþ(å€õÐÿ(å€öÐñ(i€÷Ðò(i€øÐð(i€ùÐï(i€úÐß(h€ûÐã(h€üÐé(i€ý*:(é }ê *N{ê oë {ì *:}í ( *B{í þoî *:}ï ( *B{ï þoî *:}ð ( *B{ð þoî *:}ñ ( *B{ñ þoî *:}ò ( *B{ò þoî *:}ó ( *B{ó þoî *:}ô ( *B{ô þoõ *:}ö ( *B{ö þoõ *:}÷ ( *B{÷ þoø *:}ù ( *B{ù þoø *(ú *6sÇ (+*:}û ( *B{û þoõ *:}ü ( *B{ü þoõ *:}ý ( *B{ý þoõ *:}þ ( *B{þ þoõ *:}ÿ ( *B{ÿ þoõ *:} ( *B{ þoø *:} ( *B{ þoø *:} ( *B{ þoø *:} ( *B{ þoø *:} ( *B{ þoõ *:} ( *B{ þoõ *:} ( *B{ þoõ *:} ( *B{ þoõ *:} ( *F{ þ(+*:}  ( *B{  þoõ *:}  ( *B{  þoõ *:}  ( *F{  þ(+*:} ( *B{ þoõ *:} ( *B{ þoõ *:} ( *Z{ (+þ(+*0Îs‹s s *~;*~<*~=*09Ï(É  ,'{O (U {O (P ( +Ï( *6(… (]*0SÑ{Ñ 9ˆ { Œ ¥é(Í  ,m{ ( ,`{ ( {; (´  ,E{Ñ  {ç (á+,/{Ñ  {ç { ( 8mÿÿÿ{Ñ ,b{ Œ ¥é(Æ ,C{Ñ {Q (R (+,&{Ñ {Q (R  8ÿÿÿ{Ñ ,L{ Œ ¥é(´   ,-{Ñ {Ñ - {ç (á+, {ç ( **0Ò (… (+*0ŒÓ(Ô  9}{ã (ä (Ð  ,i{… ( {w -W{ã (ê (^ {ã (é {ã (ä  (`,{†  s ( ***~>*~?*~@*~A*~B*~C*~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*~P*~Q*~R*~S*~T*~U*~V*0dÔ(Ð  ,X{… († o oM ,(yoN o +,%{… († {… (  s ( **0@Õ(so‡ Y£ s–(+(+oC o £` (Ë*0 ƒÖ{w 9s {w {w 9\{w {w {w 9@{w {w {w 9${w {w {w 9 {w {w {w 9ê{w {w {w 9Ë{w {w {w 9¦{w {x {x  {x  {x  {x  {x  {x {x {w      ( (}(… ( ( ( ( ( ( ( ( (|*(|*+ó+î+é+ä+ß+Ú+Õ0‹Ør6p/+X ŒV ,/u… , (k ¥co +oÅ +rp(º oZ (Ò/*Yo! £8uÿÿÿ>oº(~*0gÚoN  (wo  s! (" ,$(# o! (+o$ (ç+þoC *s˜r@ps% ( +þo& *0ÄÜ(Ì  9µ{> (? 9¥{> (? {; (»  9‡{> (B {w -u{‡ (ˆ {> (@ {‡ ('  0(( (Qsš( +,){¯   o‡ / o) (< ****0 )Þ(¨E˜ÐFtš {) {* 9g {* {* 9U{* {* {* 9> {* {* {* 9%{* {* {* 9 {* {* {* 9ñ{* {* {* 9×{* {* {* 9½{*   {+  {+  {+  {+  {+ {+  {+ {+  {* s¿    (, (ž(- (, (, (, (, (, (, (, (, sÁþ(€*sÃsÅþ(€*t›{+ sÉ(+(+(ž(N8þÿÿtœ{. o! £o! £Ð (B oM , oN +%¤% (‚¤þoC *t{/ oN Ðx(B oM , oN +(l+o! £% (‚¤,,Ðx(B oM , oN +þoC *Ð.(B oM , oN +þoC **~W*~X*~Y*~Z*0à(ƒo. ,*(…    u -N u :wt {7 (8 t {7 (9 {w -+KsÍ (í+(ƒ +7t {: (ƒ t {: („ (‡(È+ (a,w{/ (0 {/ (1 {/ (2 ([%oפod sÏ (… ( ( +( +(… ( (¿*({,U{… (†  {… ( (\% o ¤od  (Ë(… ( (¿**0çá(…    u -? u -kt {7 (8 t {7 (9 sÑ (í+(ƒ +7t {: (ƒ t {: („ (ˆ(È+ (¾ ,6{å (æ (¹ ,{å (è {† o) *(  ,  {; **0Åã(¹  ,<{† sÓ( +(+ (3 (4 (} (žs¨ *(» ,i(Z{‡ (ˆ o5 ,Q{‡ (ˆ {‡ (' sÕ( +(+ (3 (4 (} ( s¨ *þo6 *^(¨3(¦*(¤**o &**þ(+*.þ(l+*V(9 }: }; *0näþ¡ {; (< {; Œ ¥o= , Þ7{: oõ {; Œ ¥o>  Þ{; (p &Ü*G](? **þo@ *(A *†(I,s(Q(+þ**(B **þoº*:(C } *^s”{ ¥¯(+*(D *"s‹ z:(? }!*B{!þ(+*2s€#*:( }"*s©**(¨þ*"s«**(¨þ*&s®**(¨þ*s²**(¨þ*~#**(¨þ*{"*>(})*{)*Z(}*}+*{**{+*v(},}-}.*{,*{-*{.*>(}/*{/*:( }0*2{0{)*:( }1*2{1{**2{1{+*:( }2*2{2{,*2{2{-*2{2{.*:( }3*2{3{/*(E *.þ(‚*V(F }4}5*R{4{5(+*(E *.þ(‚*V(F }6}7*R{7{6(+*(G **þoH *:(C }8*vsÇ{8(Q¥°(+*(I *0Nå(Ñ  ,A{C (E {C (D {C (I o ,(†o þ(+***(Å *"(‡*(J *&(×*(Å *"(ˆ*:(Ž }9*B{9þ(‰*:(Ž }:*B{:þ(‰*0Çæs’(+€;ÐØ(ÿ ¥#€<ÐÙ(ÿ ¥#€=%б(B €?(coM , (coN +(cв(B €@(doM , (doN +(dsK ¤%г(B €A(eoM , (eoN +(eд(B €B(foM , (foN +(fsK ¤%е(B €C(goM , (goN +(gж(B €D(hoM , (hoN +(hsK ¤%з(B €E(ioM , (ioN +(iи(B €F(joM , (joN +(jsK ¤%й(B €G(koM , (koN +(kк(B €H(loM , (loN +(lsK ¤%л(B €I(moM , (moN +(mм(B €J(noM , (noN +(nsK ¤%н(B €K(ooM , (ooN +(oо(B €L(poM , (poN +(psK ¤%п(B €M(qoM , (qoN +(qÐÀ(B €N(roM , (roN +(rsK ¤€>(b€P(tŒÁ,+ rIps@ z(tŽi€Q(u€R (uY 2%(v(t£(K ¤X X3Û(v€OsL €T +&(b£ (x(L (K oM X (bŽi2Ð(x€SsL €V +&(b£ (z(K (L oM X (bŽi2Ð(z€UÐÙ€X(„(ÿ ¥#€Y(…o €ZsË€W*2rjps z2rjps z2rjps z0*6*–oN ,+oO ,+oP þ*Þ(Ý,-oM ,oM ,oN oN oc **oc **0?çÐn(B (Þ-rÂpr]ps zo! ££sK *~k*0 é(+(+ s\o¸(+*0*~l*~m*0+ê(ÿ ¥# o , o + s^*~n*~o*~p*~q*~r*~s*~t*~u*~v*~w*~x*~y*~z*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*~Œ*~*~Ž*~*~*~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*~²*~³*~´*~µ*~¶*~·*~¸*~¹*~º*~»*~¼*~½*~¾*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*~Ð*~Ñ*0Rì(É  ,<{O (U (J (Q (R {O (P  ( sS *(… sS *0sí(FoS ,b{[ (\ -U{[ (] {w ,C{[ (] {x (J {w {w -(R (Q  sT (U **0€î(GoS ,o{[ (\ -b{[ (] {w ,P{[ (] {x (Ð  ,5{w {w -({… († {… (  s ( **0uï(Ð  ,i{… ( {w ,W{… ( {w {w ->{… († o Ðu(B (Þ,{… († {x (< **0Yò(c (V ,9(V (W {X (Y {X (Z  ([ +¶(W ([ *0 !ö(e (\ 9ÿ(\ {] (^ o[ ŽiY Y(Î {¯ YX!  Y   2!  X£!¤! X   X3ß !%ŽiYYX!    Y  2"X£!¤!X X3Þ    (O¤!(+(_ *(^ (_ *0 }@(´  ,R{ç {\(+ Þ8t  u‰,$r(poÕ(º rFp(º sÇ zþ*(™ ,2{O (U {O (P (P(P(` *(š   ,2 {O (U  {O (P (P(P(a *(Æ   ,& {Q (R   {Q (b    (c *(:oS   9/? {[ (Ž { 9é> {[ (Ž { { :š> {[ (] {w 9T> {[ (] {w {w -a{x {  (P  o= -oºo= þ+, oºo© +,*(P (d *(¿ ,!{‹ (Œ {‹ (  8„ÿÿÿ(À ,,{‹ (Œ {‹ (  (P (e *(;oS 9€{[ (Ž { ,m{[ (Ž { { -Q{[ (] {w ,>{[ (] {w {w -"{x {  (P (e *(Î ,-{‰ (f {‰ (Š (R(g *(¾ ,5{å (è {å (æ (P oº(N*(Ì 9²{> (@ {> (? {> (B þ,o (J+,o oh (J+,o (i +{w -(R([ *(S(Roá (j *(Ñ 9u0{C (D {C (E  {C (I (K!!,^!{k (l "!{k (m "sb(+(+#(P uˆ$$,$%%#(n *ržps z(L&&,T&{… († '&{… ( ""(S'o oo ('¥Ê(sf(+(+(p *(oS ))9^){[ (Ž { 9H){[ (Ž **{ { 9)*{ ++{ { 9+{ ,,{ { :õ){[ (] {w 9ß){[ (] ""{w {w 9À"{w --{w {w :¦,{  +{ .*{ //ÐQ(B (l+,.ÐQ(B (l++, ÐQ(B (l++,H-{x "{x ,{  +{ .*{ /(P(P(à(q *(æoS 009-0{[ (] {w 9ñ,0{[ (] 11{w {w 9X,1{w 22{w {w -$2{x 1{x sh(Q*(çoS 33,]3{[ (] {w ,J3{[ (] 44{w {w ,.4{w 55{w {w -5{x 4{x 8€ÿÿÿ(ìoS 66,j6{[ (] {w ,W6{[ (] 77{w {w ,;7{w 88{w {w -$8{x 7{x sj(Q*(èoS 99,j9{[ (] {w ,W9{[ (] ::{w {w ,;:{w ;;{w {w -$;{x :{x sl(Q*(éoS <<,j<{[ (] {w ,W<{[ (] =={w {w ,;={w >>{w {w -$>{x ={x sn(Q*(êoS ??,j?{[ (] {w ,W?{[ (] @@{w {w ,;@{w AA{w {w -$A{x @{x sp(Q*(ëoS BB,jB{[ (] {w ,WB{[ (] CC{w {w ,;C{w DD{w {w -$D{x C{x sr(Q*(oS EE,FE{[ (] {w ,3E{[ (] FF{w {w -F{x (P(r *(íoS GG,jG{[ (] {w ,WG{[ (] HH{w {w ,;H{w II{w {w -$I{x H{x st(Q*(îoS JJ,jJ{[ (] {w ,WJ{[ (] KK{w {w ,;K{w LL{w {w -$L{x K{x sv(Q*(ïoS MM,jM{[ (] {w ,WM{[ (] NN{w {w ,;N{w OO{w {w -$O{x N{x sx(Q*(ðoS PP,jP{[ (] {w ,WP{[ (] QQ{w {w ,;Q{w RR{w {w -$R{x Q{x sz(Q*(ñoS SS,jS{[ (] {w ,WS{[ (] TT{w {w ,;T{w UU{w {w -$U{x T{x s|(Q*(òoS VV,jV{[ (] {w ,WV{[ (] WW{w {w ,;W{w XX{w {w -$X{x W{x s~(Q*(ùoS YY,jY{[ (] {w ,WY{[ (] ZZ{w {w ,;Z{w [[{w {w -$[{x Z{x s€(Q*(úoS \\,j\{[ (] {w ,W\{[ (] ]]{w {w ,;]{w ^^{w {w -$^{x ]{x s‚(Q*(ûoS __,j_{[ (] {w ,W_{[ (] ``{w {w ,;`{w aa{w {w -$a{x `{x s„(Q*(üoS bb,jb{[ (] {w ,Wb{[ (] cc{w {w ,;c{w dd{w {w -$d{x c{x s†(Q*(ýoS ee,je{[ (] {w ,We{[ (] ff{w {w ,;f{w gg{w {w -$g{x f{x sˆ(Q*(þoS hh,jh{[ (] {w ,Wh{[ (] ii{w {w ,;i{w jj{w {w -$j{x i{x sŠ(Q*(óoS kk,jk{[ (] {w ,Wk{[ (] ll{w {w ,;l{w mm{w {w -$m{x l{x sŒ(Q*(ôoS nn,jn{[ (] {w ,Wn{[ (] oo{w {w ,;o{w pp{w {w -$p{x o{x sŽ(Q*(õoS qq,jq{[ (] {w ,Wq{[ (] rr{w {w ,;r{w ss{w {w -$s{x r{x s(Q*(öoS tt,jt{[ (] {w ,Wt{[ (] uu{w {w ,;u{w vv{w {w -$v{x u{x s’(Q*(÷oS ww,jw{[ (] {w ,Ww{[ (] xx{w {w ,;x{w yy{w {w -$y{x x{x s”(Q*(øoS zz,jz{[ (] {w ,Wz{[ (] {{{w {w ,;{{w ||{w {w -$|{x {{x s–(Q*(ÿoS }}9D}{[ (] {w 9.}{[ (] ~~{x ( 9 ~{w {w 9ú~{w €€{x ( 9Ü€{w {w 9Ë€{w ‚‚{x ( ƒƒ9­‚{w {w 9œ‚{w „„{x († ……9~„{w {w ,p„{w ††{x (Œ ‡‡,U†{w {w -G‡{s ˆ{¯ {¯ ‰…{n Šƒ{¯ ‹‰‹Šˆst Œ2(u *(oS ŒŒ,FŒ{[ (] {w ,3Œ{[ (] {w {w -{x (P(v *(oS ŽŽ,nŽ{[ (] {w ,[Ž{[ (] {w {w ,?{w {w {w -({x {x (P(P(w *(oS ‘‘,n‘{[ (] {w ,[‘{[ (] ’’{w {w ,?’{w ““{w {w -(“{x ’{x (P(P(x *(oS ””,n”{[ (] {w ,[”{[ (] ••{w {w ,?•{w ––{w {w -(–{x •{x (P(P(y *(oS ——,n—{[ (] {w ,[—{[ (] ˜˜{w {w ,?˜{w ™™{w {w -(™{x ˜{x (P(P(z *(oS šš,nš{[ (] {w ,[š{[ (] ››{w {w ,?›{w œœ{w {w -(œ{x ›{x (P(P({ *(oS ,n{[ (] {w ,[{[ (] žž{w {w ,?ž{w ŸŸ{w {w -(Ÿ{x ž{x (P(P(| *(oS   ,n {[ (] {w ,[ {[ (] ¡¡{w {w ,?¡{w ¢¢{w {w -(¢{x ¡{x (P(P(} *(oS ££,n£{[ (] {w ,[£{[ (] ¤¤{w {w ,?¤{w ¥¥{w {w -(¥{x ¤{x (P(P(~ *(oS ¦¦,n¦{[ (] {w ,[¦{[ (] §§{w {w ,?§{w ¨¨{w {w -(¨{x §{x (P(P( *(oS ©©,n©{[ (] {w ,[©{[ (] ªª{w {w ,?ª{w ««{w {w -(«{x ª{x (P(P(€ *(oS ¬¬,F¬{[ (] {w ,3¬{[ (] ­­{w {w -­{x (P(r *(oS ®®,F®{[ (] {w ,3®{[ (] ¯¯{w {w -¯{x (P( *(oS °°,n°{[ (] {w ,[°{[ (] ±±{w {w ,?±{w ²²{w {w -(²{x ±{x (P(P(‚ *(oS ³³,n³{[ (] {w ,[³{[ (] ´´{w {w ,?´{w µµ{w {w -(µ{x ´{x (P(P(ƒ *(oS ¶¶,n¶{[ (] {w ,[¶{[ (] ··{w {w ,?·{w ¸¸{w {w -(¸{x ·{x (P(P(„ *(oS ¹¹,j¹{[ (] {w ,W¹{[ (] ºº{w {w ,;º{w »»{w {w -$»{x º{x s˜(Q*(oS ¼¼,j¼{[ (] {w ,W¼{[ (] ½½{w {w ,;½{w ¾¾{w {w -$¾{x ½{x sš(Q*(oS ¿¿,j¿{[ (] {w ,W¿{[ (] ÀÀ{w {w ,;À{w ÁÁ{w {w -$Á{x À{x sœ(Q*(oS ÂÂ,jÂ{[ (] {w ,WÂ{[ (] ÃÃ{w {w ,;Ã{w ÄÄ{w {w -$Ä{x Ã{x sž(Q*(oS ÅÅ,jÅ{[ (] {w ,WÅ{[ (] ÆÆ{w {w ,;Æ{w ÇÇ{w {w -$Ç{x Æ{x s (Q*(oS ÈÈ,jÈ{[ (] {w ,WÈ{[ (] ÉÉ{w {w ,;É{w ÊÊ{w {w -$Ê{x É{x s¢(Q*(oS ËË,jË{[ (] {w ,WË{[ (] ÌÌ{w {w ,;Ì{w ÍÍ{w {w -$Í{x Ì{x s¤(Q*(oS ÎÎ,jÎ{[ (] {w ,WÎ{[ (] ÏÏ{w {w ,;Ï{w ÐÐ{w {w -$Ð{x Ï{x s¦(Q*(oS ÑÑ,jÑ{[ (] {w ,WÑ{[ (] ÒÒ{w {w ,;Ò{w ÓÓ{w {w -$Ó{x Ò{x s¨(Q*( oS ÔÔ,jÔ{[ (] {w ,WÔ{[ (] ÕÕ{w {w ,;Õ{w ÖÖ{w {w -$Ö{x Õ{x sª(Q*( oS ××,j×{[ (] {w ,W×{[ (] ØØ{w {w ,;Ø{w ÙÙ{w {w -$Ù{x Ø{x s¬(Q*( oS ÚÚ,jÚ{[ (] {w ,WÚ{[ (] ÛÛ{w {w ,;Û{w ÜÜ{w {w -$Ü{x Û{x s®(Q*( oS ÝÝ,jÝ{[ (] {w ,WÝ{[ (] ÞÞ{w {w ,;Þ{w ßß{w {w -$ß{x Þ{x s°(Q*(oS àà,jà{[ (] {w ,Wà{[ (] áá{w {w ,;á{w ââ{w {w -$â{x á{x s²(Q*( oS ãã,jã{[ (] {w ,Wã{[ (] ää{w {w ,;ä{w åå{w {w -$å{x ä{x s´(Q*(-oS ææ,Pæ{[ (] {w ,=æ{[ (] çç{w {w -!ç{x (PÐÌ(B (… *(.oS èè,Pè{[ (] {w ,=è{[ (] éé{w {w -!é{x (PÐÍ(B (… *(/oS êê,Pê{[ (] {w ,=ê{[ (] ëë{w {w -!ë{x (PÐÎ(B (… *(0oS ìì,Pì{[ (] {w ,=ì{[ (] íí{w {w -!í{x (PÐÏ(B (… *(1oS îî,Pî{[ (] {w ,=î{[ (] ïï{w {w -!ï{x (PÐÐ(B (… *(2oS ðð,Pð{[ (] {w ,=ð{[ (] ññ{w {w -!ñ{x (PÐÑ(B (… *(3oS òò,Pò{[ (] {w ,=ò{[ (] óó{w {w -!ó{x (PÐu(B (… *(4oS ôô,Pô{[ (] {w ,=ô{[ (] õõ{w {w -!õ{x (PÐu(B (… *(5oS öö,Pö{[ (] {w ,=ö{[ (] ÷÷{w {w -!÷{x (PÐÒ(B (… *(6oS øø,Pø{[ (] {w ,=ø{[ (] ùù{w {w -!ù{x (PÐÓ(B (… *(7oS úú,Pú{[ (] {w ,=ú{[ (] ûû{w {w -!û{x (PÐÔ(B (… *(8oS üü,Pü{[ (] {w ,=ü{[ (] ýý{w {w -!ý{x (PÐÕ(B (… *(9oS þþ,Pþ{[ (] {w ,=þ{[ (] ÿÿ{w {w -!ÿ{x (PÐÖ(B (… *( oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ(B (… *(!oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ2(B (… *("oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ(B (… *(#oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PЀ(B (… *($oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þ þ {w {w -#þ {x (PÐ(B (… *(%oS þ þ ,Zþ {[ (] {w ,Eþ {[ (] þ þ {w {w -#þ {x (PБ(B (… *(&oS þ þ ,Zþ {[ (] {w ,Eþ {[ (] þ þ {w {w -#þ {x (PÐV(B (… *('oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐV(B (… *((oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ~(B (… *()oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ’(B (… *(*oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PГ(B (… *(+oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PД(B (… *(,oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PЕ(B (… *(<oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ(B († *(=oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PÐ(B († *(>oS þþ ,Zþ {[ (] {w ,Eþ {[ (] þþ {w {w -#þ {x (PБ(B († *(?oS þ þ ,Zþ {[ (] {w ,Eþ {[ (] þ!þ !{w {w -#þ !{x (PÐV(B († *(@oS þ"þ ",Zþ "{[ (] {w ,Eþ "{[ (] þ#þ #{w {w -#þ #{x (PÐ~(B († *(AoS þ$þ $,Zþ ${[ (] {w ,Eþ ${[ (] þ%þ %{w {w -#þ %{x (PÐ’(B († *(BoS þ&þ &,Zþ &{[ (] {w ,Eþ &{[ (] þ'þ '{w {w -#þ '{x (PГ(B († *(CoS þ(þ (,Zþ ({[ (] {w ,Eþ ({[ (] þ)þ ){w {w -#þ ){x (PД(B († *(DoS þ*þ *,Zþ *{[ (] {w ,Eþ *{[ (] þ+þ +{w {w -#þ +{x (PЕ(B († *(HoS þ,þ ,9ýþ ,{[ (Ž { 9åþ ,{[ (Ž þ-þ -{ { 9Àþ -{ þ.þ .{ { 9 þ .{ þ/þ /{ { :€þ ,{[ (] {w ,kþ ,{[ (] þ0þ 0{w {w ,Iþ 0{w þ1þ 1{w {w -,þ 1{x þ 0{x (P(P(‡ *(EoS þ2þ 29…þ 2{[ (Ž { ,pþ 2{[ (Ž þ3þ 3{ { -Nþ 2{[ (] {w ,9þ 2{[ (] þ4þ 4{w {w -þ 4{x 8íÌÿÿ(S(R (j *(çoS 339=Ôÿÿ3{[ (] {w 9'Ôÿÿ3{[ (] 22{w {w 9Ôÿÿ2{w 44{w {w :îÓÿÿ4{x 2{x 8WÓÿÿ(çoS 339ÃÓÿÿ3{[ (] {w 9­Óÿÿ3{[ (] 11{w {w 9ŽÓÿÿ1{w 22{w {w :tÓÿÿ2{x 1{x 8ÝÒÿÿ(çoS 339IÓÿÿ3{[ (] {w 93Óÿÿ3{[ (] 11{w {w 9Óÿÿ1{w 22{w {w :úÒÿÿ2{x 1{x 8cÒÿÿ(µ þ5þ 59Ýþ 5{O (P (µ þ6þ 69½þ 6{O (P (µ þ7þ 79þ 7{O (P (µ þ8þ 89}þ 8{O (P þ 5{O (U þ 6{O (U þ9þ 7{O (U þ:þ 8{O (U þ;oº(ßþ<þ <(K  þ <(L . (ßþ=þ =(K /þ =(L þ>/(ßþ?þ ?(K þ@þ ?(L þAþ @(ßþBþ B(K þCþ B(L þD.þ >(MþEs¶þ Eoˆ ( +%þ A¤%þ D¤%þ C¤od  þ ;þ :þ 9(… ( ( ( ( ( (S (j *(µ þFþ F9pþ F{O (P (µ þGþ G9Pþ G{O (P (µ þHþ H90þ H{O (P þ F{O (U þ G{O (U þ9þ H{O (U þ:oº(ßþ<þ <(K  þ <(L . (ßþ=þ =(K /þ =(L þ>/(ßþ?þ ?(K þ@þ ?(L þA.þ >(MþCs¸þ Coˆ ( +%þ A¤%þ @¤od  þ :þ 9(… ( ( ( ( (S (j *(µ þIþ I9þ I{O (P (µ þJþ J9ãþ J{O (P þ I{O (U þ J{O (U þ9oº(ßþ<þ <(K  þ <(L . (ßþ=þ =(K /þ =(L þ>.þ >(Mþ@sºþ @oˆ ( +%/¤od  þ 9(… ( ( ( (S (j *(µ þKþ K,bþ K{O (P þ K{O (U (P (PþLoºr;poæ   !%þ L¤!(j *(» þMþ M,@þ M{‡ (ˆ  þ M{‡ ('  0(( (]''(S(_ *(Á þNþ N,0þ N{‡ (ˆ  þ N{‡ ('  (S(‰ *(º ,{]   (Š *(¼ þOþ O,Iþ O{ƒ („ þPþ O{ƒ (‹ þ P0(( (h (S (j *(½ þQþ Q9Âþ Q{Œ ( þPþ Q{Œ (Ž þ Po?0(( (kþR(P þ Ru,þSþ S([ +;þ Ru#  ,! þTþ T!%¤!(j + rps‹ zþLþ Lþ PoCŒV(u ( *(Ð &&,Z&{… († '&{… ( (M,{; (Poº(… *'(S(_ *(Ö þUþ U9ƒþ U{ (‘ þVþ U{ (’  þ U{ (“ s¼þ V(!+þWsÀþ Vþ W{\("+sYþXþ X(P  þ W¥Û(” *(¹ þYþ Y,7þ Y{† sÂ(#+(ç+(N (S (O*(¸ þZþ Z,Rþ Z{k (m þ Z{k (n þ Z{k (l þ9(P(Pþ 9(P(• *(· 9Ÿ{; o¹þ[(I%oº¤od !%(u ¤!%а(B þ [sÆ($+(%+(‰ ¤!%Ð(B þ [sÊ($+(%+(‰ ¤!(– *(Ô þ\þ \9Úþ \{ã (é þ \{ã (ä þ \{ã (ê (Tþ]þ ] {\o— sYþXþ X(P (PþL%oפ%oº¤(   $%þ ]¤$(˜ þ^þ ^ r;p6oZ !%þ L¤!(j *(¶ þ_þ _9Ûþ _{‚ (ƒ þ _{‚ („ (Tþ]þ ] {\o— sYþX%oפþ`þ X(P ÐÝ(B ..oM , .oN +.þ `oC   $%þ ]¤$(˜ þLÐv(B r&pþ `!%þ L¤!(™ *r@psš (&+o› s z(¿ 9GÂÿÿ{‹ (Œ {‹ (  8ªÁÿÿ(¿ 9Âÿÿ{‹ (Œ {‹ (  8zÁÿÿ(¿ 9çÁÿÿ{‹ (Œ {‹ (  8JÁÿÿ(¿ 9·Áÿÿ{‹ (Œ {‹ (  8Áÿÿ"80±(P (P ,?Ðu(B oM , oN + %oœ ¤oC (… + ,?Ðu(B oM , oN + %oœ ¤oC (… +s þož *0/-* {; (P , {] (d **NsÌ('+((+*No×oÕ(Ÿ *J()+sY(P*0 ()+sY(P¥á*0Ì (Æ  ,{Q (R *oº %Ð(B ¤%¤( rpÐ(B sÔ(ý (ø (Ð ()+sY (P¥—o  %Œ¤oT Þ"t u, o$ zþ*Ѝ"{\*:( }\*:(¡ }]*N{]o×(Þ*:(„ }^*fsZ{^o¢ (*+*:(£ }_*0a (Ñ  ,U{_{C (E (+,={C (D {C (E {C (I o¤ (+ s¥ (¦ **:(§ }`*0r (Í  ,]{ (¨ { (© { (ª (…  (ño« þ, rps z{`(P(¬ *r’ps zV(­ }a}b*v{as`{b¥¯(++*(® **:(¯ }c*^sd{c¥°(,+*(° *0 (± (² ( *(° *0 (± (² (³ *(° *0 (± (² (´ *(° *0 (± (² (µ *(° *0 (± (² (¶ *(° *0 (± (² (· *(° *0 (± (² ( *(° *0 (± (² (³ *(° *0 (± (² (´ *(° *0 (± (² (µ *(° *0 (± (² (¶ *(° *0 (± (² (· *(° *0 (± (² ( *(° *0 (± (² (³ *(° *0 (± (² (´ *(° *0 (± (² (µ *(° *0 (± (² (¶ *(° *0 (± (² (· *(° *0 (± (² ( *(° *0 (± (² (³ *(° *0 (± (² (´ *(° *0 (± (² (µ *(° *0 (± (² (¶ *(° *0 (± (² (· *(° *0 (± (² (w *(° *0 (± (² (w *(° *0 (± (² (w *(° *0 (± (² (y *(° *0 (± (² (y *(° *0 (± (² (y *(° *0 (± (² (z *(° *0 (± (² (z *(° *0 (± (² (z *(° *0 (± (² (x *(° *0 (± (² (x *(° *0 (± (² (x *(° *0 (± (² ({ *(° *0 (± (² ({ *(° *0 (± (² ({ *(¸ *†o> rîp( , o[ Žiþ**(¸ *†o> rîp( , o[ Žiþ**(¸ *†o> rîp( , o[ Žiþ**(¹ *"(T*V(º }d}e*R{d{eo— *(» *0 U s¾*(B **þoº*(¼ *"(u *:(½ }f*JsÄ{f(-+*:(¼ }g*Š{g{\o¾ Ð(B (… *V(½ }h}i*b{hsÈ{i(-+*:(¿ }j*:{j(P*08(À ,$(Á ,¥’+ rª psÛ zs *þÓ*08(À ,$(Á ,¥+ rª psÛ zsà *þÐ*08(À ,$(Á ,¥‘+ rª psÛ zsÄ *þÑ*08(À ,$(Á ,¥“+ rª psÛ zsÅ *þÔ*08(À ,$(Á ,¥V+ rª psÛ zsÆ *þu*0-(Ç ,(È ŒV¥ sÉ *þã*08(À ,$(Á ,¥V+ rª psÛ zsÆ *þu*08(À ,$(Á ,¥”+ rª psÛ zsÊ *þÕ*08(À ,$(Á ,¥~+ rª psÛ zsË *þÒ*08(À ,$(Á ,¥•+ rª psÛ zsÌ *þÖ*08 (À ,$(Á ,¥€+ rª psÛ zsÍ *þÏ*08"(À ,$(Á ,¥+ rª psÛ zsÎ *þÎ*08$(À ,$(Á ,¥š+ rª psÛ zsÏ *þä*08&(À ,$(Á ,¥›+ rª psÛ zsÐ *þå*08((À ,$(Á ,¥2+ rª psÛ zsÑ *þÍ*08*(À ,$(Á ,¥+ rª psÛ zsÒ *þÌ*0+(À ,(Á (.+**0+(À ,(Á (/+**0+(À ,(Á (0+**0+(À ,(Á (1+**0+(À ,(Á þ(2+**2(3+þ*0+(À ,(Á (.+**0+(À ,(Á (/+**0+(À ,(Á (0+**0+(À ,(Á (1+**0+(À ,(Á þ(2+**2(4+þ*02,(À , (À +,(Á (Á (.+**02,(À , (À +,(Á (Á (/+**02,(À , (À +,(Á (Á (0+**02,(À , (À +,(Á (Á (1+**0P,(À - (À þ+,*(À , (À +,(Á (Á þ(2+**2(5+þ*0)-(À ,(Á (6+sv *þ›*0).(Ó ,(Ô (6+sv *þ›*0?/(À , (Ó +,(Á (Ô (6+sv *þ›*08-(À ,$(Á ,¥"+ rpsÛ zsv *þ›*08.(Ó ,$(Ô ,¥"+ rpsÛ zsv *þ›*0N/(À , (Ó +,,(Á (Ô ,¥"+ rpsÛ zsv *þ›*0)-(À ,(Á (7+sv *þ›*0).(Ó ,(Ô (7+sv *þ›*0?/(À , (Ó +,(Á (Ô (7+sv *þ›*08-(À ,$(Á ,¥"+ rppsÛ zsv *þ›*08.(Ó ,$(Ô ,¥"+ rppsÛ zsv *þ›*0N/(À , (Ó +,,(Á (Ô ,¥"+ rppsÛ zsv *þ›*08-(À ,$(Á ,¥"+ rÔpsÛ zsv *þ›*08.(Ó ,$(Ô ,¥"+ rÔpsÛ zsv *þ›*0N/(À , (Ó +,,(Á (Ô ,¥"+ rÔpsÛ zsv *þ›*08ÐÕ (ÿ ¥#€kÐu(B €m(äoM , (äoN +(äo £`€lÐã(å€nÐÝ(å€oÐÚ(å€pÐÛ(å€qÐÙ(å€rÐÜ(å€sÐÞ(å€tÐâ(å€uÐã(å€vÐß(å€wÐÞ(å€xÐá(å€yÐà(å€zÐî(å€{Ðï(å€|Ðë(å€}Ðê(å€~Ðí(å€Ðì(倀Ðè(å€Ðé(倂Ðå(倃Ðä(倄Ðç(å€…Ðæ(倆Ð}(倇Ðð(倈Ðò(倉Ðñ(倊Ðó(個Ðõ(倌Ðô(å€Ðö(å€ŽÐø(å€Ð÷(å€Ðü(們Ðþ(倒Ðý(倓Ðù(倔Ðû(倕Ðú(å€–ÐØ(å€—Ðø(倘Ðù(候Ðü(倚Ðú(倛Ðû(倜Ðý(å€Ðÿ(倞Ð(借Ð(倠Ð(倡Ð(倢Ð(倣З(値Е(倥Ж(倦И(倧Ð(倨Ð(倩Ð(倪Ð(倫Р(倬Р(倭Р(倮Ð(倯Ð(倰Ð(倱Р(倲Р(倳Ð(倴ÐÝ(倵ÐÜ(倶ÐÙ(å€·ÐØ(倸ÐÏ(倹ÐÐ(债ÐÔ(倻ÐÒ(值ÐÖ(倽ÐÎ(倾ÐÑ(倿ÐÕ(å€ÀÐ×(å€ÁÐu(å€ÂÐw(å€ÃМ(å€ÄК(å€ÅÐ(倯П(å€ÇТ(å€ÈЙ(å€ÉЛ(å€ÊО(å€ËС(å€ÌÐÚ(å€ÍÐØ(å€ÎÐÙ(å€ÏЀ(å€ÐÐá(ÿ ¥#€Ñ*&sÖ *0 , { þo× **&sØ *:sÙ (8+*j(9+sÚ (9+sÛ **sÜ *0 0(:+ *.þ(:+*"sÝ *&sÞ *~sß (;+sà (<+sá *Fo &}â *R{â - þoã **n{â -}â þoä **j{â -}â þoå **b}è }é oê &*0f4{è oõ (ë Þt  (ì Þ uõ,tõ {é {í þoî *t÷{é {ï þoð *B{é þoî *>{é þoñ *b}ò }ó o &*‚{ó {ò sô ¥öþoõ *b}÷ }ø oê &*0f8{÷ où (ú Þt  (û Þ uü,tü {ø {ü þoî *tý{ø {ý þ(=+*B{ø þoî *>{ø þoñ *b}þ }ÿ o &*‚{ÿ {þ s ¥öþoõ *:( } *b{ oî ,(ê **:( } *F{ oî þ*~} } } oê &*0†9{ { { (>+(ë Þt  (ì Þ uõ,tõ{ {í þoî *t÷{ï { (  { þoð * "B{ þoî *>{ þoñ *~}  }  }  o &*0-I{  s {  {  s ¥öþoõ *b} } oê &*0B:{ { , {¶ { s o +{ (ê ( *B{ þo *>{ þo *F} o &*0"<s { s ¥oþoö *ž} } } } o &*z{ {  -{ þoX **ª{ {  -{ (! { þoç **0U{ {  -F{ (! { {  ,{ {  +,{ (! { þoæ ***ž}" }# }$ }% o &*z{# {  -{" þoX **ª{# {  -{# (! {" þoç **0U{# {  -F{% (! {$ {  ,{% {  +,{# (! {" þoæ ***b}ï}ðo &*j{ïoÜ {ðþoÜ *b}& }' o &*0 J>s( s( s( {& s) oö {' s* oö  s6 *:(+ }, *0+A{, o- u,t {. (/ **:(+ }0 *0+D{0 o1 u,t {2 (/ **0Gs3 s4 (:+ o5 *0Is6 s7 (:+ o8 *00Js6 s6 s9 (:+ o8 o8 s: *0Gs3 s; (:+ o5 *0&Ms< s6 s= (?+ o8 *0 0(:+ *0%Ps> s? s@ (?+ oA *0,Qs3 sB (?+ sC (?+ o5 *00Ss3 sD sE (:+ o5 oF sG *V(H }I }J *n{J {I oõ oK *V(H }L }M *‚{L oî ,{M oN **r(H }O }P }Q *¶{O oî ,{P oN *{Q oN *V(H }R }S *0)U{R où , {S {T oK **r(H }U }V }W *06t{V { {U (>+ {V (  {W oK *V(H }X }Y *0C:{Y { , {¶ {X s oZ +{Y (ê ( *:(H }[ *B{[ oN *:(H }\ *B{\ oN *r(H }] }^ }_ *0LW{] o- u2,t2 {_ {` oa *t {^ {. oK *Šsb sc sd ( (@+*>se (A+*0?Y/ sl (f *sg (/sn sp sr ( (Ž+oh *V(H }i }j *0!Z{i {j o- (k ol *:(m }n *0Z{n (o op *:(q }r *0Z{r (s op *(t *"(u *(v *"(w *(x *"(B+*r(y }z }{ }| *0G{| {z s} (C+{| {{ s~ (D+{| o s€ (E+*V( }‚ }ƒ *0$\s„ ( {‚ {ƒ s… (F+*(† *(õ*:(‡ }*0Z{oˆ *(m **(q **:s (G+*:(‰ }*0@^u ,4oŠ 3{{  +, o‹ sŒ ( (H+*z:(Ž }*0_( ( {þo‘ *:(’ }*B{þo“ *V(‡ }}*j{(! {o” *V(• }}*Î{sw {sy {{s{ (– (I+*:(• }*0&`s( su {s} (G+(J+*09a, {¯ + Ži , {¯ + s‡ s‰ (K+*>s“ (L+*09a, {¯ + Ži , {¯ + s• s— (M+*&(0*0 0(:+ *Bs— þo˜ *:(™ }*0 9c(š (› (œ ( (ž { þoŸ *:(  }*B{þo¡ *V(¢ }}*V{{£ {þ*:(¤ }*0N{{{£ X(¥ -,,¥+(¶r:p( o‘ s¦ z&( *( *’(§ }} }!}"*0 J{{!{"{£ (Î { {"{£ Y(Î ( {"s (N+*:(¨ }#*6{#(O+*V(¨ }$}%*0 Pe{%(P+ s© {%s‹ {${%s (š+( s‘ (L+(Q+*:(™ }&*0 9c(š (› (œ ( (ž {& þoª *:(« }'*>{'o¬ *F}­ o &*>{­ o  &* * *0FiŒ!s® s¯ s° s± {² o  (+o³ ¥*0QjuN ,& {´ , rfpsµ zo¶ o· *(¶r~p( o‘ rœps z0:kuN , {² o‘ *(¶r¤p( o‘ rœps z:(H }¸ *V{¸ (¹ oº *:(m }» *V{» (¼ oº *:(q }½ *V{½ (¾ oº *0 r, sî {do (¿ sÀ +sÀ (Á ( sà sÄ sÅ sÆ (R+oÇ ,@{È  -+"   {É {do’ {co’  (S+Þo þ, oÊ {co‘ +oÇ  þ, oÊ {do’ {co’ +sË zu  ,  oÜ &Ü&Ü*BÁ0Zs± s³ sµ (T+ *0ZsÌ s¹ s» (U+ *0t }2oÍ -(Î **0_y, {Ï + sÐ s½  sÑ þÒ sÓ (Ô oÕ  sÖ (š+(§ *:(× }Ø *R{Ø (¹ oÌ *:(Ù }Ú *R{Ú (¼ oÌ *:(Û }Ü *R{Ü (¾ oÌ *(Ý *(õ*(Ù *z(Û *(õ*:(× }Þ *R{Þ o  &(õ*:(Ù }0*R{0oß &(õ*:(Û }1*R{1oà &(õ*Fo &}2*6þ{2þ*&}2*V}á }â ( *v{â þ{2- {á oã **’(ä }å }æ }ç }è *0-z{æ {ç {è (V+{å oé ( *’(ê }ë }ì }í }î *0-z{ì {í {î (V+{ë oï ( *²(§ }ð }ñ }ò }ó }ô *0 *{ð {ñ {ò {ó {ô sõ (W+*²(§ }ö }÷ }ø }ù }ú *0 M{÷ {ø {ù {ú sû {ö {÷ {ø {ù {ú sü (š+(X+*~À*6sØ (Y+*2sÜ (Y+*2sà (Y+*V, o*o*0I~(ý ,={þ {p sÿ {msè sì {ps s **6s (Z+*6s (¢ *0:€{ , rÈpsµ z{ ,*{ þs } *00{ -&} { ,o ( } ***0J‚o  ,(  *{ ,(  *(  } { , o  +{  ([+*¦{ -s {  ( }  *{ *:(Ý }G*V{G{ þo *:(† }H*0 ƒ{ {p{HsÖ o*:(Ý }I*V{I{ þo *(† *0ƒ{ {psÚ o*:(Ý }J*V{J{ þo *(† *0ƒ{ {psÞ o*V(Ý } } *j{ {› { þo *r(× } } } *~{ { { s o*V(Ý }P}Q*j{P{n{Qþo *r(Ù }R}S}T*~{T{R{Ssæ o*V(Ý }U}V*j{U{o{Vþo *r(Û }W}X}Y*~{Y{W{Xsê o*:( } *V{ (\+þo *:( } *V{ (\+þo *Fo &}\*J|\(  þ*Vo &sò }]*0$…{] |\(  þ, oã &**0Jo &}! (ý }" {" ,(# +}$ {! {œ {p}% *0“‡s& (ý {" ,E{" (' ,{$ (# o( +, {% o*{" {% (Î *,'{" (' ,{$ (# o( +,Å+¶{% o*j{" {% s) (Î *V(Ý }* }+ *~{* {! {› {+ þo *V(Ý }, }- *~{, {! {› {- þo *Öo &}. (/ }0 }1 }2 s }3 *0-ˆ{3  (o (]+ Þ, (p &Ü&Ü* 00‰{3  (o (^+ Þ, (p &Ü&Ü&* 0K{. - rÞps‹ z{¶ *0Œ{3  (o (_+ Þ, (p &Ü&Ü {4 ,C {4 {4 - {5 , o6 *o7 *s8 (`+(õ*(õ* .{. þ*6s9 (: *0Q{. -Do; {. -1, {¯ +  j!'Zs¿ oÀ ,{. ****&o< *:(= }> *0Z{> o7 *:( }? *0tŽ{? {. -9{? {3  (o {? (a+ Þ, (p &Ü&Ü + {? {. -(õ* {› {¶ þo *5~¾*0=‘ u}- u~-t{@ *t} {A zt~ {B z0’, {È (S+*sË z0 “s sC o*0 “s sD o*0R”{þ |m(E ,{þ {osF þo *oG Þt  {þ {no Þ*+ 66sH (¢ *6sI (¢ *6sJ (¢ *:sK (L *:sM (L *:sN (¢ *:sO (¢ *:sP (¢ *2sj (Q *~¿*RsR (b+(c+*zoS ,sn (d+*( *Noq sT (e+*:sU (f+*( *sV **ucþ*sW **uaþ*sX **ubþ*0• ub,+ ua,+*:(Y }Ñ *{Ñ *:(Y }Ò *{Ò *:(Y }Ó *{Ó *:( }Z *2{Z {Ñ *:( }[ *2{[ {Ò *:( }\ *2{\ {Ó *Ò(Ý }] }^ }_ }` }a }b *0 <{a {ž {^ {] {_ {` {b s sc þo *Ò(Ý }d }e }f }g }h }i *0 <{h {ž {e {d {f {g {i s sc þo *:( }j *B{j þ(g+*:( }k *0‚™{k ua-) ub-F{k tc {› {Ñ þo *{k ta {œ {n{Ò þo *{k tb {œ {o{Ó þo *V(Ý }l }m *V{m {l þo *:( }n *0u›{œ |m(E ,{œ {osF þo *{p {› ooü,o{n so oý(õ*{n þo *V(× }p }q *0tž{q {r {n   {p os  Þ!t u ,   Þþ &, þo *{t {q þou *'!V(Ý }v }w *j{v {ž {w þo *V( }x }y *0‰ {œ |m(E ,{œ {osF þo *{y sz {œ s{ {r {po oü,{x s| oý(õ*{x {t þou *V(Ý }}Ž*V{{Žþo *V(Ý }} }~ *j{~ {ž {} þo *V( } }€ *0ö¢{œ |m(E ,{œ {osF þo *{œ {p {œ {n   { {€ o Þ"t u ,  Þþ& ,2ooü,osD oý(õ*þo *ooü,os‚ oý(õ*{ž þo *G^"V(Ý }“}”*V{“{”þo *V(Ý }ƒ }„ *j{ƒ {› {„ þo *r(× }… }† }‡ *0Ö£{† {œ {n   {… oã  Þ!t u ,   Þþ &,<{‡ ooü,{‡ osJ oý(õ*þo *{‡ ooü,#{‡ o{† sˆ oý(õ*{† {› þo *'!V(Ý }š}›*V{š{›þo *V(Ý }‰ }Š *~{‰ {œ {n{Š þo *r(Ù }‹ }Œ } *0Û£{Œ {œ {n   {‹ oã  Þ!t u ,   Þþ &,<{ ooü,{ osP oý(õ*þo *{ ooü,#{ o{Œ sŽ oý(õ*{Œ {œ {nþo *'!V(Ý } } *~{ {œ {o{ þo *V(Ý }‘ }’ *~{‘ {œ {o{’ þo *r(Û }“ }” }• *0Ö¤  {“ oã  Þt  u ,   Þþ&,N{• ooü,#{• o{” s– oý(õ*{” {œ {oþo *{• ooü,#{• o{” s— oý(õ*{” {œ {oþo *V( }˜ }™ *0 —¦{œ |m(E ,{œ {osF þo *{œ {p {˜ sš {˜ s› {˜ sœ {™ {ž {œ {m {ps sc þo *V(Ù } }ž *0"§{ (h+ {ž {ž þo *V( }Ÿ }  *0 u¨{œ |m(E ,{œ {osF þo *{Ÿ s¡ {  {ž {› {œ {m{o{ps sc þo *V(Ý }®}¯*j{®{o{¯þo *V(Ý }°}±*j{°{o{±þo *V(Û }²}³*0Æ©{³{p   {²oà  Þ!t u ,   Þþ &,?ooü,o{³sb oý(õ*{³{oþo *ooü,o{³sd oý(õ*{³{oþo *"!V( }¢ }£ *0 Kª{œ {¢ sf  {£ {ž {› {m{n{ps sc þo *(¤ *0ƒ{¥ {¦ {mþo§ *:(‡ }¨ *0–{¨ þ oÜ *V(§ }·}¸*N{·{¸( *:(¢ }© *>{© þoÝ *V(§ }ª }« *j{ª {« oà þo¬ *:(­ }® *~s¯ {® s° (š+( *:(± }² *"{² *01¬o (þ{f , {³ }f+Ð*>s´ *0s®-h{µ ,O {¶ uº, {¶ tº{· s£ o*{¶ t»{¸  s¥ o*s¹ o*(õ*â{£ Y(¥ {£ -{do’ {co’ +{£ *0O±¤  (o ({ Þ, (p &Ü&Ü (i+*10[{£ Y(¥ {µ -(º (» +{£ -{do’ {co’ + {co‘ {£ *0G± (o (} Þ, (p &Ü&Ü (i+*)š|\(  -sÇ (š+()**04´," {¼ oã Þ t   Þ&*s½ þoõ *  "s¾ *0B´," {¼ oã Þ t   Þ&*oÁ o¿ sÀ þoõ *  0Z{psÁ o *00¶ { {à -{Ä {psÅ (Æ }Ç **0_¹{ oÈ {Ç ,0 {É (Ê {É (Ë }Ç  s; o*{Ì , o  **FsÍ (j+*>sÎ (j+*>sÏ ( +*>sÐ (‚+*šsŽ sÑ €¾(k+€¿s€À*:}Â( *0%º(l+ {Â{Ò (m+o(*:}Ã( *0%º(l+ {Ã{Ò (m+o(*V(Ý }Ó }Ô *V{Ó {Ô þo *V(Ý }Õ }Ö *V{Õ {Ö þo *V(Ý }× }Ø *V{× {Ø þo *Ò(H }Ù }Ú }Û }Ü }Ý }Þ *0À»{Ý |\(  ,(¶rp( o‘ sÇ z(# {Ü o( ,{Ú {  +,{Û {Þ sß (” (à *~h,&(ý {Ù {p{Þ sá (Î  *{Ù {p{Þ sâ o *:( }ã *0 ¾{œ {œ |m(E ,{œ {osF þo *s( sä (# sò {ã  {› (n+ {n(o+ {o(p+så oæ ÞJt |\(  ,(¶rp( o‘ sÇ z{no Þ&(! {ç   ,   {³ þo *(õ*MH•J:(× }è *V{è (é þoê *:(Ù }ë *V{ë (ì þoê *:(í }î *0 cÀ{ï {m {p {ð sñ {ð sò {o{î {ž s sc þo *V(ó }ô }õ *f{ô {õ (q+(r+*V(ö }÷ }ø *v( {÷ {ø sù (s+*V(Ý }Ø}Ù*j{Ø{o{Ùþo *V(Ý }Ú}Û*j{Ú{n{Ûþo *V(Ý }ú }û *j{ú {ü {û þoý *0D(× }þ }ÿ } } } } } } *0 8{ÿ {þ { { { { { { (t+*ò(Ù } } } }  }  }  }  *0 7{ { { {  {  {  {  (  (u+*ò(Û } } } } } } } *0 7{ { { { { { { ( (u+*ò( } } } } } } } *0¨Z{ {do { { { { { { { s { { { { { { { s { { { { { { { s  (v+ *:(! }" *0 Ã(w+ {# {" (x+ Ži-{ü  þoý *Žis© s$ Ži(+{msî{p s% (y+(õ*:(! }& *0†Æ{& (x+s' Þ%t  {# {no (( s' Þ () (* -- Ži-{ü  þoý *{& s+ þ(z+*{, *%(‡ **(m *z(q **:(Ý }ý*R{ýsF þo *’}þ}ÿ}}( *0SÈ{|\(  -={ÿ{- , {. o/ +{þ{p{s» o **:(Ý }*B{þo *²}}}}}( *0^È{|\(  -H|(Î {{- , {. o/ +{{p{s¿ o **:(† }*0 ÅÊ{ s0 { {o sò |m s½ þ¾ s1 (2 sÁ þ s3 {s4 (5 (6 Þ%t |\(  - ÞÞ&,{nþo *(õ*J5%:(7 } *‚{ !s¿ oÀ ({+*V(§ } } *0Z{ { o ( *V(q } } *Z{ { ( *V}}( *f{{sF ( *:(Ý }*B{þo8 *’}}}}( *0@Z{|\(  -)|(Î {{p{sÍ o **r(‡ }}}*01Z{|\(  -|(Î {o8 **(m **V(9 }}*0 äÌ{: sò  {Ä {o  sÉ |m sË þÌ sÓ (Ô (; {sC¥sÏ þÐ s< o|+{./{(/sÑ sÓ {m( (Ž++(õÞ(t |\(  - (Î þ(õÞ*Et¹(V(7 }}*²{oà ,({+*{o {(0*:( }> *0‚Í{œ {> ua-*ub-A{> tc {› {Ñ þo *{> ta {n{Ò þo *{> tb {o {Ó þo *(? *"(}+*:(± }@ *^{@ oA sB (~+*:(‡ }C *>{C oÔ *(D *6(+(€+*V(D }E }F *0F,{F oG (H (+(€+*{E o‘ {F oÖ (0sI (+*r(± }J }K }L *0U{K {Õ þ,{K oG (‚+(€+*{K oÖ {L (0{J {K sM (+*r(± }N }O }P *¾{O sQ {N {O {P sR (¢+(ƒ+*:(± }S *Ò{S {Õ þ,{S oG (‚+(€+*(+(€+*:(‡ }T *0ÎsF (¾ {T oÌ *r}U }V }W ( *r{U {V {W þ(„+*:(‡ },*:|,(Î *²}X }Y }Z }[ }\ ( *0nÏoà -d{Y -{[ {\ sï oõ + |\ (Î {X o] (¹ Þt  (¼ Þ {Z oÌ **8Mr(^ }_ }` }a *0 ‘Ò sÊ sô  {a sb þc s1 (2 {` {a  sd þe sf {_ sg oh oà ,(Î {` o] (€+*(…+*r(± }i }j }k *Ž( {i {j {k sl (†+*V(Ž }m }n *0*_( ( {n {m so þop *r(Ž }q }r }s *0 0_( ( {s {q {r st þou *’(Ž }v }w }x }y *0 6_( ( {y {v {w {x sz þo{ *:(| }} *0*Ó(~ ( (€ {} o (‡+*(‚ *"(ˆ+*(« **(‰+*:(‡ }ƒ *0Z{ƒ sF (¾ oÌ *²}„ }… }† }‡ }ˆ ( *0 ({„ {… {† {‡ {ˆ þ(Š+*Ò(‰ }Š }‹ }Œ } }Ž } *0 =|Œ {Š {‹ { {Ž { s þ‘ s1 (2 *:(‡ }N*0t{No’ (Î *²(H }“ }” }• }– }— *0FÎ{“ {— o˜ o™ {• {– s oõ (¹ {” oÌ *²(š }› }œ } }ž }Ÿ *0 *{› {œ { {ž {Ÿ s  s¡ *:(¢ }£ *078Ð(B r;poæ Р(B {£ o¤ (¥ (p+*V(^ }¦ }§ *0 §Û sÊ sô  {¦ {§ s¨ (‹+{¦ s© (Œ+sª (+t }Ÿ t}« o’  o¬  o˜  {¦  o­ (…+*V(± }® }¯ *v( {® {¯ s° (†+*(ê *( *:}^( *0å{^{£ ,o‘ **r(× }± }² }³ *®{² (¤ |³ (Î {± (¹ oÌ *r(Ù }´ }µ }¶ *®{µ (¤ |¶ (Î {´ (¼ oÌ *r(Û }· }¸ }¹ *®{¸ (¤ |¹ (Î {· (¾ oÌ *r(º }» }¼ }½ *0 |Ý sŽ sÑ s þ s1 (2 o {½  s¾ {½  s¿ {½  sÀ {» (v+{½ {¼ (Ž+(+*V(Á } }à *0$õsÊ ( { {à sÄ (+*(§ *"(k+*:(§ }m*–{m, {m(Ë *(Í s# (d+*r(Å }n}o}p*0HÞ{o|\(  -{po’ (Î +{noã Þ t   Þ*;< :}q( *>{qoÆ &*V(‰ }r}s*’|r{ss) þ* s1 (2 *~}t}u}vo &*Â|t(E -!{u|\(  - |v(Î ***:(Ç }w*0Mà sò  {ws'  s+  (‹+tÐ}po’ s- (‘+*:(È }x*^( {xs/ (’+*r(Ý }É }Ê }Ë *0o{Ë oÍ ,{Ê {osF þo *{Ë oÌ ,{Ê {n{Ë oÍ þo *{É {› {Ë oÎ þo *V}Ï }Ð ( *V{Ï {Ð (“+*:( }Ñ *0-â{œ {Ñ sÒ þÓ sÔ oÕ (õ*:(9 }Ö *0nã{: {Ö {Ü , rXps‹ z{Ö {Û  (o {Ö (”+ Þ, (p &Ü&Ü ,(õ*{Ä þo8 *.G:(Ý }€*B{€þo8 *(× *6(ê (•+*’(Ø }Ù }Ú }Û }Ü *0æu ,?{Ù {Ý  (o {Ù }Þ  Þ, (p &Ü&Ü&(•+*t" {ß ,{Ù {Ú {Û {Ü (–+*,¥ñ+ r¼ps‹ z(•+*/’(à }á }â }ã }ä *0 oè{á {â o—+ ,  {æ {ä o‘ sç (˜+*{á {è {ã (™+{á {â {ã {ä sé (š+*(× *6(ê (•+*V(ê }ë }ì *Î,{ë {ì (›+*,¥ñ+ r.ps‹ z(•+*V(à }í }î *0Ké{í {î o—+ , {æ sï (˜+*{í {è {í {î sð (œ+*(× *6(ê (•+*r(ñ }ò }ó }ô *01å(õ ( {ò {ó {ô o ([ (–+*r(à }ö }÷ }ø *0ké{ö {÷ o+ -{ø /{ö {÷ (›+*, {æ sú (˜+*( {ö {÷ {ø sû (ž+*(ü *0=K, {¶ (€+*,¥ +(¶rrp( o‘ s  z(€+*r(± }ý }þ }ÿ *Ž{ý {þ {ÿ oŸ+s ( +*V(ê } } *z,{ { (¡+*(•+*V(à } } *0?K{ o -({ { o { { s (œ+*(•+*V(à } } *0*K{ o -{ { (¡+*(•+*V(D } } *0B,{ { (¢+*,¥ +(¶ršp( o‘ s  z(€+*V(± } } *0Fê{ o , {¶ (€+*{ { o { { s (+*V(± } } *01ê{ o , {¶ (€+*{ { (¢+*:(ä } *f{ {ú o ( *(§ *"(k+*:(§ } *Š{ {ó { o sa (d+*:(§ } *Ž{ s { s (š+(X+*:(H } *0Z{ o *:(H } *0Z{ o *:(ê } *‚,{ o (ê +(•+*V( } }! *01{! o; { (Î (0{! s" (œ+*V(à }# }$ *z{$ {# {$ s% (£+*(× *6(ê (•+*:(à }& *^{& o' s( (˜+*(ü *0,K, {¶ (€+*(¶rÈp( o‘ s  z:(± }) *J{) s* ( +*:(H }+ *0Z{+ o *2rpsÛ z2rpsÛ z2rpsÛ z2rvpsÛ z2rèpsÛ z2rZpsÛ z2rÎpsÛ z2rDpsÛ z0~ í(¤+ (, (- (NE$ÛZ ” ¥ ÿ  5 } ˜ ë - T (N 3JtÅ(¥+,6{. (Q {8{. (R (ÿ 8g (NE$füD™~Û(C‹7qùê¿`X_(NE$M(¶r®p( o‘ sÇ   z{w ,Ú{w {w -É{x (ê 8ä tÑ {w -£ {D  {E   (J(Þ 8® tÆ {w 9Ïþÿÿ{w {w :»þÿÿ{x  {9(ø 8f tÇ{w :‡þÿÿ{:(ù 8= tÈ{w 9^þÿÿ{w {w 9Jþÿÿ{w {w {w :0þÿÿ{x {x {;(û 8ÐtÉ{w 9ñýÿÿ{w {w :Ýýÿÿ{x {<(ú 8ˆtÊ{=(ü 8mtÒ{F  (L(Þ 8NtÌ{?( 83tË{w 9Týÿÿ{x {>{w ( 8ñtÍ{w 9ýÿÿ{w {w :þüÿÿ{@ {x  (0(ß 8¤tÎ{A  (÷ 8‰tÏ{w 9ªüÿÿ{w {w :–üÿÿ{B {x  ( 8A{w 9jüÿÿ{w {w 9Vüÿÿ{w {w {w :<üÿÿ{x {x (8(à 8âtÐ{w 9üÿÿ{w {w :ïûÿÿ{C {x  (@(ß 8•{w 9¾ûÿÿ{w {w :ªûÿÿ{x (:(ß 8[{w 9„ûÿÿ{x {](è@fûÿÿt´{w {w 9Lûÿÿ{w {w {w :2ûÿÿ{ó{x (<(é (à 8Ó{w 9üúÿÿ{w {w 9èúÿÿ{w {w {w :Îúÿÿ{x {x (>(à 8t{w 9úÿÿ{w {w 9‰úÿÿ{w {w {w 9oúÿÿ{w {x {](è@Kúÿÿtµ{w {w :1úÿÿ{ô{õ{x {x ( 8Æ{w 9ïùÿÿ{w {w 9Ûùÿÿ{w {w {w :Áùÿÿ{x {x ( 8l{w 9•ùÿÿ{w {w 9ùÿÿ{w {w {w :gùÿÿ{x {x (D(à 8 {w 96ùÿÿ{w {w 9"ùÿÿ{w {x (¶   9ùÿÿ{w {w 9óøÿÿ{w {x (¶ !!9Õøÿÿ{w {w :Äøÿÿ!{‚ (ƒ  {‚ (ƒ "!{‚ („  {‚ („ {x "(í 8:{w 9t÷ÿÿ{w {w 9`÷ÿÿ{w {w {w :F÷ÿÿ{x {x (î 8à{w 9÷ÿÿ{w {w 9÷ÿÿ{w {w {w 9ìöÿÿ{w {w {w :Òöÿÿ{x {x {x (ö 8a{w 9›öÿÿ{w {w :‡öÿÿ{x ( (ß 8'( (Ý 8{w 9Pöÿÿ{w {w 9<öÿÿ{w {w {w :"öÿÿ{x {x (ï 8¼t½{/  (ó 8¡t¾{0##(ô 8†t¿${w 9¸õÿÿ{w {w :¤õÿÿ${1#{x #(õ 8>tÀ{2  (ð 8#tÁ%{w 9Uõÿÿ{w {w :Aõÿÿ%{3 %{4&{x  &(ò 8ÐtÂ'{w 9õÿÿ'{5{x {w (þ 8ŽtÃ({w :Àôÿÿ({6(ý +gtÄ){w 9™ôÿÿ{w (¥+9ôÿÿ{. (Q ){7{x {. (R (  {]s°*0ºî{] (èE8ut´ {ó(/ *tµ {ô {õ së (0 *t³{ñ{ò{^s1 Œ?s2 (3 *(¶rÔp( o‘   rôps z"(„ *0-ð(Ç  , {4 (¦+-*{4 ¥} (5 *0%ñ(Ç  ,{4 uQ ,  (6 **0-ó(Ç  , {4 (§+-*{4 ¥€ (7 *0-õ(Ç  , {4 (¨+-*{4 ¥ (8 *0-÷(Ç  , {4 (©+-*{4 ¥ (9 *0-ù(Ç  , {4 (ª+-*{4 ¥ (: *0-ú(Ç  , {4 («+-*{4 ¥’ (; *0-ü(Ç  , {4 (¬+-*{4 ¥‘ (< *0-þ(Ç  , {4 (­+-*{4 ¥“ (= *0-ÿ(Ç  , {4 (®+-*{4 ¥V (Î *0-(Ç  , {4 (¯+-*{4 ¥” (> *0-(Ç  , {4 (°+-*{4 ¥~ (? *0-(Ç  , {4 (±+-*{4 ¥• (@ *0M(°  ,A{A (N"32{A tÑ {EÐ(B (l+,{E (T **0Æ(Ô  9­{ã (ä (¾  9–{å (æ (´  9{ç {å (è  (á+,þ+,V{ã (é {ã (ê {ç {å (è X(”  ({ (ø (| sû *(ý sû *0‚ {] (è3otµ {ô {õ  (” ({ {ú -!(| (ý (ø sû (ü *({ (| sû (ü **0z (µ  ,n{O (U {O (P (“  ,(… sT (U *(¹ ,{† sT (U *(… ( sT (U **6sŸ (²+*6s¡ (³+*0N (¸  ,{k (l (†  ,{n ,*{k (m {k (n sB (C *0N (¸  ,B{k (m (†  ,.{n ,&{k (l {k (n sB (C **0® s£ (²+ 9{F (H (Ñ  ,/{C (E o , o + s¥ *(Ñ ,{C (E +Â(¶rþp( o‘ r.ps z(Ñ  ,Ó{C (E 8„ÿÿÿ"(â*:oá (â*:oD (â*(E *"(• *(F *"(– *(E *"(• *r(£ }¯}°}±*0«å(Ñ  9œ{C (E {¯oç oç (´+,8{°, o ,{±o (+++{¯(++,<{C (D {C (E {C (I o¤ (+ s¥ (¦ **0O {Ñ ,E {Ñ {Ñ -{ (µ+sG (H *{Ñ { ( +³*6(I (¶+*~+*~,*~-*2Я(B *2Ð(B *Z(¬ (l+,(­ **02(®  (®  (© %¤%¤þoC *05{] (è3#t³ {ò{w -{ñ (J **0X{] (è3Ft³ {ò{w ,2{ò {w {w -{x {ñ sK (L **0x{] (è3ft³ {ò{w ,R{ò {w {w ,>{w {w {w -* {x {x {ñsM (N **0œ{] (è@‡t³ {ò{w ,s{ò {w {w ,_{w {w {w ,K {w {w {w -5{x  {x {x {ñsO (P **0&{] (è3t´ {ó(Q **0E(²  ,9{R (S (N3&{R (T {R (U sB (C **05{] (è3#tµ {õ {ô së (V **0X{] (è3Ft³ {ñ(N30{ò{w ,#{ò {w {w -{x (< **0R(³  ,F{W (X (N33{W (Y {W (Z {W ([ s\ (] **06{] (è3$t³ {ñ(N3{ò (^ **0P{] (è3>t³ {ñ(N#3({ñtÒ {ò{w -{F (i **0Q{] (è3?t³ {ñ(N3*{ñt½ {/ {ò s_ (` **0Q{] (è3?t³ {ñ(N3*{ñt¾ {0 {ò sa (b **0Q(±  ,E{c (d (N32{c (d t¿ {1 {c (e sf (g **0R (±  ,F{c (d (N 32{c (d tÁ {4 {c (e sh (i **0R!(±  ,F{c (d (N32{c (d tÍ {@ {c (e sj (k **0R"(±  ,F{c (d (N32{c (d tÐ {C {c (e sj (k **0R#{] (è3@t³ {ñ(N3*{ñtÎ {A {ò s_ (` **0}${] (è3kt³ {ñ(N3U{ò{w ,H{ò {w {w ,4{w {w {w - {x {x sB (C **0}${] (è3kt³ {ñ(N3U{ò{w ,H{ò {w {w ,4{w {w {w - {x {x sB (C **0þ%{] (è@ét³ {ñ(N@Ð{ò{w 9À{ò {w {w 9©{w {x (¶ 9Ž {w {w 9~ {w {x (¶ ,d{w {w -V{‚ (ƒ {‚ (ƒ {‚ („  {‚ („  {x     sl (m **0¤&{] (è@t³ {ñ(N@v{ò{w ,i{ò {x {] (è3M t´{w {w ,8{w {w {w -"{ó{x së (V **0R'{] (è3@t³ {ñ(N"3*{ñtÑ {D {E sn (o **0A({] (è3/t³ {ñ(N"3{ñtÑ{D (p **04)(±  ,({c (d (N3{c (e (< **0F(²  ,:{R (S (N3&{R (T {R (U sB (C **0x*(³  ,l{W (X (N 3X{W (Y (¶  ,D{‚ (ƒ {‚ („ {W (Z {W ([  sq (r **0F(²  ,:{R (S (N!3&{R (T {R (U sB (C **08+{] (è@§t³ {ñ(NE$-*{ñtà {6 {ò ss (t *{ñtÂ{ò{w ,¹{ò{5 {x {w (< ss (t *0&,{] (è3ft³ {ñ(N 3P{ñtÅ {ò(¥+ ,5 {. (Q {8 {. (R su (v *{](è@™t³{ñ(N @}{ñtÄ {ò{w ,a{ò{w (¥+  ,F {. (Q  {7{x   {. (R   (<  su (v **0>-{] (è@§t³ {ñ(NE$0*{ñtÇ {ò{w -ä{:  sw (x *{ñtÆ{ò{w ,¶{ò{w {w - {x {9 (< sw (x *0„.{] (è@§t³ {ñ(NE$P*{ñtÉ {ò{w ,ä{ò {w {w -Ð {x {<sy (z *{ñtÈ{ò{w ,–{ò {w {w 9ÿÿÿ {w {w {w :fÿÿÿ{x  {x {;(< sy (z *0R/{] (è3@t³ {ñ(N3*{ñtÊ {= {ò s ( **080{] (è@§t³ {ñ(NE$-*{ñtÌ {? {ò s{ (| *{ñtË{ò{w ,¹{ò{x {> {w (< s{ (| *0E(²  ,9{R (S (N3&{R (T {R (U sB (C **03)(±  ,'{c (d (N3{c (e (< **0U1(Ò  ,I{O (U (¶  ,5{‚ (ƒ {O (P {‚ („  s} (~ **0r20(ý sû (ü *(¶  ,PY{‚ („ (Õ  ,9{z ({ {‚ (ƒ {z (|  (ø sû (ü **0“3(±  9„{c (d (N3p{c (d tÏ {B {c (e (h o[ Ži (Õ ,,{z ({ {z (| s (€ ***0 4(Ó  9‘sK {; (z+ 9z{z (| {] (è3`t³ {ñ(N3K {ò{w ,> {ò{z ({ {w {x (ù+sï ( **0D60(( (Q sM (·+ ,{‚ *rRpoJ (I rzps z0D90(( (R sO (¸+ ,{ƒ *rŽpoJ (I r²ps z0F:o@ /+ Žiþþ,!(¶rÎp( o‘ rps z£*0F;(}+ o! þ, Žiþ+,£*(¶r®p( o‘ sÇ z0<Œ ¥é{] (èEK?t´ {óo×*tµ {ô {õ o×(}+þ(¯ *t¶{ö*t³{ñ{ò(NE$‡é"N->TšpëæÛñ !,7Oj…ï4–D99)уä9_{w ,:{w {w ,({w   {w {w -{x (Û *r´ps‹ zŒ ¥é(Ô   , {ã (ê þ(}+*r´ps‹ z{w ,³{w {w ,¡{w   {w {w 9‡ÿÿÿ {w   {w {w :mÿÿÿ {x þ(}+*Œ ¥é(×   , {„ (î þ(}+*r´ps‹ zròps‹ zt½{/  *t¾{0o?*Ð}(B *tÑ{E  *tÁ{3 {4 (O£*tÀ{2  *tÃ{6þoH *tÂ{5þoH *Ð(B *Ð(B *tÆ{9þo… *tÇ{:þo… *Ð(B *Ð(B *tÊ{=þo *tË{>o† (® *tÌ{?o† (® *tÍ{@  *{w 9¡ýÿÿ{w {w 9Œýÿÿ{w   {w {w :rýÿÿ {x þ(}+*Ð(B *tÎ{A  þo‡ *tÏ{B  *tÒ{F  *Ð}(B *{w 9ýÿÿ{w {w :îüÿÿ{x (}+ (ª % ¤þoC *{w 9´üÿÿ{w {w 9Ÿüÿÿ{w   {w {w :…üÿÿ{x þ(}+*{w 9füÿÿ{w {w 9Qüÿÿ{w   {w {w 97üÿÿ {w   {w {w :üÿÿ{x þ(}+*Ð(B *(¶r&p( o‘ sÇ z0²(à (… s°*0²(… (à (… s°*0²(… ( (à (… s°*0%²(… ( ( (à (… s°*0+²(… ( ( ( (à (… s°*0AŠ(l+-6%Œ ¤%¤%¤(ˆ rLps z*0AŠo© -6%Œ ¤%¤%¤(ˆ rLps z*0AŠŽio‡ .!(¶rfp( o‘ rŠps zsQ (¹+(º+*¦(J,oh (J+, oh +Ù*0=Œo (å  (}+o© -!(¶r”p( o‘ rps z*0®=(}+ oM , oN + (© rÂp(¶rÆp( o‘ (»+(}+ o! þ, Žiþ+,( £rÂp(¶rðp( o‘ (»+*(¶r(p( o‘ rÂps z0/>(}+ o×rJp(¶rRp( o‘ (»+*0²(â (… s°*0#²(6(… ( (à (… s°*žo‰ ,Œ (Š +Œ (J*0²(ä (… s°*r(B(ì (ì (á *Z(ç ((à *Z(ç ((à *0W?(O(+ o‡ o‹ .!(¶r€p( o‘ rŠps zsS (¼+((Ý *0nA(½+ Œ_,+ rIps@ zŽi  Y2# £é(}+¤XX3Ý (N ((Ý *0rB(}+r¨p(¶rºp( o‘ (»+(O /+ Žiþþ,!(¶ræp( o‘ rps z((ß *0[:0(( (Q o‡ Ži.!(¶rp( o‘ rŠps zsU (¾+(¿+((Ý *0d:(À+,sŒ zo@ o‡ Ži.!(¶rLp( o‘ rŠps zsW (¾+(¿+((Ý *0I(À+,sŒ zo?(}+rzp(¶rœp( o‘ (»+((ß *0i(}+(}+rÆp(¶rÐp( o‘ (»+Ð}(B (}+rÆp(¶rp( o‘ (»+((á *nsY (Á+(2(Ý *0OŠ(Â+,sŒ zo ,!(¶r*p( o‘ r^ps z(æ ("(ß *0FŠ(Â+,sŒ zo , ($(Þ *(¶rjp( o‘ r^ps z0rŠ(Â+,sŒ z(}+o… r p(¶r¬p( o‘ (»+o , (((ß *(¶rjp( o‘ r^ps z0{Š(Â+,sŒ z(}+o… r p(¶r¬p( o‘ (»+o ,!(¶r*p( o‘ r^ps z(æ (&(à *®(Ã+,sŒ zo[ (ä (*(Ý *0„Š(+,sŒ zoŽ -!(¶rÎp( o‘ rîps zo (ä oá o , ((Ý *(¶rjp( o‘ rîps z0’Š(+,sŒ zoŽ -!(¶rÎp( o‘ rîps zo (ä oá o ,!(¶r*p( o‘ rîps z(æ (( (Ý *0”Š(+,sŒ zo@ -!(¶rúp( o‘ rîps zo (ä oD o ,( (… ( ( +(Ý *(¶rjp( o‘ rîps z0¢Š(+,sŒ zo@ -!(¶rúp( o‘ rîps zo (ä oD o ,!(¶r*p( o‘ rîps z(æ ((… ( ( +( (Ý *0bŠ(+,sŒ zo[ (ä o ,!(¶r*p( o‘ rps z(æ (,( (Ý *0TŠ(+,sŒ zo[ (ä o , (.(Ý *(¶rjp( o‘ rps z0¢ÐV(B (}+r&p(¶r<p( o‘ (»+ÐV(B (}+rvp(¶r<p( o‘ (»+ÐV(B o×rŒp(¶r”p( o‘ (»+(F(ì (á *0lÐ}(B (}+ràp(¶rìp( o‘ (»+Ð(B (}+r p(¶r p( o‘ (»+(H(à *0TC(h  o[ s[ o† (Ä+ (}+rD p(¶rJ p( o‘ (»+(4(ß *0(è (ì  ((à *0RD{w ,, {w {w -{x (î *(ñ (î *Ð(B (J(Þ (î *0KFs] (Å+(Æ+ (‘ (’ ( ( ( (Ý  s_  (+(ß *r‚ p*zo‹ o‹ 3 sa (Ç+**Bsc þo“ *foM , þo! **RoM , o! Ži**0…I>ob (È+ (  se (É+ {” , {” {” - {• *sk (Ê+,{A *(¶r¬ p( o‘ sÇ z0êK(l+,!(¶rÔ p( o‘ rü ps z:¬oM , o! + sm (Ë+(ç+ (Ì+ o– , (â Þ Þt u°,Þþ,({A  o† oc , {A *( *( *h‡0'LoZ ,*r !poÅ (IsÇ z0)M:oZ ,*r4!poÅ (IsÇ zj{ -*(ç+þoC *Bso þo“ *0cN(  (Í+ (Î+ Œ ¥(®  (ç+o— r\!p(HŒ,*rˆ!ps˜ z05O(  >o™ rš!p(H Œ/,*rÀ!ps˜ z0FP( (Ï+ (ç+oš (¶rÐ!p( o‘ Œ`,*r"ps˜ z0IQ(  (Í+ (ç+oš (¶rÐ!p( o‘ Œ`,*r"p s˜ z0\SEF{Ñ - r"ps‹ z {Ñ { Y(Ð+  (› ( (œ s *(I s *0/Š/!(¶rH"p( o‘ rps z(Ð+*ro¤ Ži-*(ç+þod *0oW(ž (Ÿ (  (¡ (¢ o! Ži(Ñ+(£ (¤ (   (   þ( *¶oŽ , oá o *o@ , oD o **0€X{ ,U { { ,F{ { { -2{ { (© % ¤%¤þoC *(¶rv"p( o‘ rŠps z0WY{ ,. { { -{ 3 þo‡ *þo¥ *(¶rš"p( o‘ r¼"ps z0HZoè ,*sq o¦ (Ò+ -rÄ"pot (I rü"ps z{] *~.*0Y\{&(Ó+ rp( ,( *rYp( ,{'*(§ ,*r #poÅ (HsÇ z0]{&(Ó+ (!  ( *0L^{%oH YE r6#ps‹ zss *("  su *(P  sw *:s¨ (Ô+*0lc{%oH E rR#ps‹ z(P  s{ *s}  s  (# o© sª (« (¬ s *0dsƒ (­ (Õ+ s… *V{Ñ -*rb#ps‹ z0,e{Ñ , {Ñ {Ñ - { *rb#ps‹ zž{Ê{Ëo® {ËX{ÌsŠ *N(Ö+s‹ sŠ *0n{%oH E Sc}—§ËrÌ#ps‹ zs  s  (5 (& o¯ s° (± (² (³  s“ *(- s• *(, (+ s— *(% (P   s™ *(+ s› *(+ s (´ (×+s¡ *(% s£ *0-o{&(Ó+ (%  {%oH þ s¥ *0W(P  s§ *0Œ("  {&(Ó+ s© *0Œ("  {&(Ó+ s« *0q(/  (P  s­ *0=Œ("  {&(Ó+ {%oH 3 ( (*( (.*09rs¯  s±  (" o© (% {&(Ó+(P sµ *–(" {&(Ó+(% (& s¶ *0gu{%oH E Þ#rÚ#ps‹ z(1  (NE$ r´ps‹ ztÌ {?*tà {6 þoá *(2 (ž (¢ (Ÿ (¡ (    ( *(" (& s·   (¸  (¹ ( *0)y{%oH  E lr‚ˆ˜¨¸ÈØÞ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMs³ rô#psº (Ø+ o» sµ *s· *s¹ *s» *(2  (ž  (¢  (Ÿ  (¡  (  s½ *s¿ *sÁ *sà *sÅ *(.   sÇ *(" {&(Ó+sÉ *sË *sÍ *sÏ *sÑ *(3   (¼  (½  (¾  (¿   sÓ *(" {&(Ó+sÕ *s× *sÙ *sÛ *sÝ *sß *sá *{%oH þ  sã *{&(Ó+så *(P (À (Á   sç *(Q ( (à sé *(P ÑiÑsë *(P gsí *{%oH Òsï *(P hsñ *(P Ñsó *(P sõ *(P s÷ *(Q sù *(Q sû *sý *(3   (¼  (½  (¾  (¿   sÿ *(" (& s· (¸ (¹   s *s *(1 s *s *(" s *(.   s *(/ s *(0   s *(/ s *s *(P s *~/*~0*0zos s  s *"s *07|{] (èE9{*tµ {ô {õ  (: (ä{^s°*t³{ñ{òs! (í+(à{^s°*t¶  {ö  {÷  /+  Žiþþ, r6$ps‹ z £é (}+   (l+-@(¶rf$p( o‘ % ¤% ¤(ˆ   rLps z *0œ}{] (èEL*t³ s# {ò(Ù+*t´ {ó (Ú+,+ (Ú+,* oÄ *tµ{ô {õ oÄ 8dÿÿÿ0 WŽi s% *0¢€{] (èEA¥~t³ {ñ {ò s+  (í+(à{^s°*t´{óoÅ   ,C   {;  (|+(|+ (;   (Û+  oÆ , * oÇ s' z*tµ{ô{õ oÄ  (= (ä{^  s°ÝŒt uq,vtq(* (á+,[oÕo×sÔ(â(… s°s-  (= (ä{^  s°Þþþ**á0Œ0 GoÈ i (P+ s© {£ /%{£ {£ {£ YoÉ X(¥ +Ò*~1*~2*0/ƒ(9 oÊ sE (Ü+(? sË þoÌ *05…(@ oÍ -sM (Ý++ (@ oÎ sÏ *0厌,,+ rÙps@ zo os (;  (@ (o (@ oÎ sÏ Þ, (@ (p &Ü&Ü (Ð  (Ñ , (Ò 8¤sG sI  oÓ  Þ t   uZ  , Q Þþ  (Þ+(ß+(à+(@ (o (B  Þ, (@ (p &Ü&Ü (Ð (Ñ , (Ò + -*{Ô {!o ( u#,o , o¤ Ži++XŽi.>rv$po> þVoÅ ŽiþVoÅ (Jrž$ps z(< (Ö+sŠ oÕ (< *(.'U™ £ Ý÷0ƒŒ,,+ rÙps@ zu# ,4 o ( o , o¤ +(á+ (C *u` , o (  (C *(C *0(‘(ç+(*  (8 (â+ (½+(: *0BÐ (B (}+rôp(¶r¬$p( o‘ (»+{]{^s× *†o &}²}³X}´*0>W{³{´2 rÖ$ps‹ z{²{³£’i {³X}³*0¦’{³X{´1 rò$ps‹ z{² {³(Î {³XY(Î {¯  {¯ YX’ Y 2"  X£’¤’ X  X3Þ {³X}³*0)Š(Ø {²{³oÙ {³X}³*(Ú *"(¶ *:(? }µ*No> {µ( *:(Û }¶*No>{¶( *(Ü *0 .o\ (}+rŠp(¶r:%p( o‘ (ã+*(Ý *0 )(}+rŠp(¶r\%p( o‘ (»+*(Þ *0 .oH (}+rp%p(¶rz%p( o‘ (»+*(Þ *0 .oH (}+r®%p(¶r¶%p( o‘ (»+*:(ß }·*0 .{·(}+rè%p(¶rú%p( o‘ (»+*(à *Bo\ þ(¯ *(á *0“(ƒ („ (è *(â *0“(ƒ („ (ì *(ã *&oc *:(ä }¸*:{¸£*:(¸ }¹*No> {¹( *:(å }º*B{ºþ(Ì+*(æ **þo\ *’(¸ }»}¼}½}¾*0š”o , o¤ + Ži{».*{¾(á+ sg {¼(Ë+ {½(Ì+ si o[ (¹+(ä+o† o‹ o‹ .* (  (  ( *:(å }¿*B{¿þ(Ì+*:(ä }À*:{Àoç *:(A }Á*NoJ {Á( *(è **þ( *:(è }Â*B{Âþ( *:(è }Ã*B{Ãþ( *:(é }ê *B{ê þoõ *:(ë }Å*B{Åþoì *(í *"(% *:(î }Æ*N{Æ(­ (Õ+*V(ë }Ç}È*n{Ç{È(å+þoï *(í *"(% *:(ð }É*:{É(å+*{Ê*{Ë*{Ì*r( }Ê}Ë}Ì*:(ä }Í*:{Í£*(ñ *"(+ *:(ò }Î*N{Î(´ (×+*:(ó }Ï*B{ÏþoÕ *r(ô }Ð}Ñ}Ò*0B•{Ñ{Ìoõ {Ðoö s‘ {Ò(æ+(à (… s°*:(ô }Ó*0²{Óo÷ (â (… s°*V(ô }Ô}Õ*03–{Ôo÷ {Õ() oÕ (ä (… s°*V(ô }Ö}×*0*²{Ö{Ìoø {×(æ (… s°*:(ô }Ø*N{ØoÕ (ê *(ñ *"(+ *:(ó }Ù*B{ÙþoÕ *V(ô }Ú}Û*0:—{ÚoÕ {] {^sŸ {Û(æ+( + s°*:(ô }Ü*Šr&p{Ü{Ìoø (Ù(é *r(ù }Ý}Þ}ß*¦{Ý{Þ{Ìoø {ß(5 sÔ*:(ù }à*N{Ê{àoú *V(û }á}â*f{á( {â(Ø *V(ü }ã}ä*f{ã( {ä(Ù *V(û }å}æ*f{åoý {æ(Ú *(í *"(% *:(î }ç*N{ç(­ (Õ+*(þ *"s‹ z:(ÿ }è*B{èþoö *(ÿ *6(ç+(0*(ÿ *:(è+(8*(ÿ *:(è+(F*²(ÿ }é}ê}ë}ì}í*0 C˜{é{ê{ë{ì{ísµ (  o ,(.*(,*(ÿ *6(ç+(2*(ÿ *6(ç+(4*(ÿ *:(è+(H*(ÿ *:(è+(*:(ÿ }î*N{îo (*V(ÿ }ï}ð*0*™{ï{ð(  o ,($*("*(ÿ *:(è+( *(ÿ *:(è+(*(ÿ *:(ç+(J*(ÿ *6(ç+(L*’(ÿ }ñ}ò}ó}ô*0 6š{ñ{ò{ó{ô(é+ ( ,( *(*V(ÿ }õ}ö*0*™{õ{ö(  o ,((*(&*(ÿ *:(è+(:*(ÿ *:(è+(>*(ÿ *6(ç+(@*(ÿ *:(è+(D*(ÿ *:(è+(B*(ÿ *:(è+(<*:(ÿ }÷*0>(ç+ {÷(ê+*:(ÿ }ø*0>(ç+ {ø(ë+*:(ÿ }ù*0>(ç+ {ù(ì+*:(ÿ }ú*0>(ç+ {ú(í+*:(ÿ }û*0>(ç+ {û(î+*:(ÿ }ü*0>(ç+ {ü(ï+*:(ÿ }ý*0>(ç+ {ý(ð+*:(ÿ }þ*0>(ç+ {þ(ñ+*:(ÿ }ÿ*0>(ç+ {ÿ(ò+*:(ÿ }*0>(ç+ {(ó+*:(ÿ }*0>(ç+ {(ô+*:(ÿ }*0>(ç+ {(õ+*:(ÿ }*0>(ç+ {(ö+*(ÿ *f(è+Ð(B (÷+*’(ÿ }}}}*0 6š{{{{(é+ ( ,(*(*V(ÿ }} *f{{ ( (**(ÿ *:(è+(*:(ÿ } *07›{ (N3!{ tÌ {? ( (.*{ *(ÿ *:(è+( *:(ÿ } *N{ ( (*:(ÿ } *N{ o (*:(ÿ } *N{ oý (*:(ÿ }*N{o (*:(ÿ }*N{oý (*(ÿ *6(ç+(*:(ÿ }*N(ç+{(*( *N(4 (+ s *( *J(6 ( (ø+*(ñ *"(+ *V( }}*R{{(ù+*:( }*N{(7 (ú+*:(Å }*:{(: *:( }*>{(; *V(ä }}*03+{/ {£*(¶r &p( o‘ sÇ z:(Œ }*(Œ *0 ( *{*V(Å }}*R{{(= *r(„ }}}*ª{(á+, {(< *{þoÅ **o &*00œ( ( (ò(û+ bX, (Ž +a*05( ( ( ( (ñ(ü+, ( **&s3 *r( }}} *{*{*{ *&*0^žþ,U &  ¹y7ž{ (ý+bcXXX ¹y7ž{bcXXX ¹y7ž{(þ+bcXXX **6(ño8 *0\Ÿþ,Muu ,A&  {{(ÿ+,%{{3{ { þ(+****þþ*0‚ o o , o¤ Ži+o[ Œ',+ rIps@ zŽi  Y2#£+o\ ¤XX3Ý (2 *0V¡þ,Gþ,?&  {{(+,${{3{ { þ(+****þþ*0¢uu , þo< **s? *:( }!*{!*&**o &*6(òo8 *B(ñþo: *( *0P¤( ( (;   (@ (o (@ (> o Þ , (@ (p &Ü&Ü*"::( }"*0+¥{"{"o (>  (9 oÊ s *:( }#*®r‚ po ,(? {#sË o þ**( *0'¦( ( (@ (; (> o *:( }$*04§( ( sK (Ü+(? {$sË oÌ *0A¨{%oH  {%oH  {%oH  {%oH  b`b` b`*06W{%oH  0* ¿0_b{%oH `*(O *0"©(P j!ÿÿÿÿ_ (P j  b`*0ͪ(P  /+ Žiþþ9¥rP&pŒV ,/u… , (k ¥co +oÅ +rp(º r†&p(º ŽiŒV ,/u… , (k ¥co +oÅ +rp(º s‹ z£ *0‘«{%oH  EQXr¨&pŒV ,/u… , (k ¥co +oÅ +rp(º s‹ z(µ+*o ( 8oÿÿÿ0v±ŽisG QsX  sY  s[  o {%(P oI s ( ( ŽisG (+sX þo *{%*{&*{'*r( }%}&}'*(! *N{%(P oJ *:(" }(*N{((# (+*0Q³o$ -{% -*(+s& (' * {( () (* {( (+ +¯0µ (, (+*0L·o- -{% -*s. (/ * {0 (» {0 (¼ (* +´0¹ (, (+*Fs1 þ(+*>s2 ( +*:*>*6*0*¢Ðb(B o3 ,r;p6oZ ,***09Š(g -!(¶rÔ&p( o‘ rD ps zr;p6oZ *:(4 }5 *Z{5 sý þo6 *:(7 }8 *Z{8 sý þo9 *07­ ~és: o; ,*sÔ ~és: o< *0º (èEAg¨t³  ¹y7ž{òo= bcXXX ¹y7ž{ñoObcXXX *t´  ¹y7ž{ó( +bcXXX *tµ  ¹y7ž {õ( +bcXXX ¹y7ž {ô( +bcXXX *t¶ ¹y7ž{÷bcXXX ¹y7ž{ö(þ+bcXXX *0þ»(èECj©t³ t³ {ñ {ñ  oQ,{ò{òo« **t´t´{ó{óþ( +*tµtµ {ô {ô( +,{õ {õþ( +**t¶ t¶  {ö {ö(ÿ+, {÷ {÷þ**0½ (NE$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *t½  ¹y7ž{/(þ+bcXXX *t¾  ¹y7ž{0(+bcXXX *t¿  ¹y7ž {1(+bcXXX *tÀ ¹y7ž{2(þ+bcXXX *tÁ ¹y7ž{4bcXXX ¹y7ž{3(þ+bcXXX *t ¹y7ž{5(+bcXXX *tà ¹y7ž{6(+bcXXX *tÄ ¹y7ž{7(+bcXXX *tÅ  ¹y7ž {8(+bcXXX *tÆ  ¹y7ž {9(+bcXXX *tÇ  ¹y7ž {:(+bcXXX *tÈ  ¹y7ž {;(+bcXXX *tÉ  ¹y7ž {<(+bcXXX *tÊ ¹y7ž{=(+bcXXX *tË ¹y7ž{>(+bcXXX *tÌ ¹y7ž{?(+bcXXX *tÍ ¹y7ž{@(þ+bcXXX *tÎ ¹y7ž{A(þ+bcXXX *tÏ ¹y7ž{B(þ+bcXXX * * * * * *tÐ ¹y7ž{C(þ+bcXXX * * * *! *tÑ" ¹y7ž{E(þ+bcXXX ¹y7ž{D(+bcXXX *tÒ# ¹y7ž{F(þ+bcXXX *0¾(NE$%Ho–ÏöDk’¹à.U|£ÊñW*t½ t½ {/{/þ(ÿ+*t¾ t¾ {0 {0þ(+*t¿t¿{1{1þ(+*tÀtÀ{2{2þ(ÿ+*tÁtÁ {3 {3(ÿ+,{4 {4þ**t t  {5 {5þ(+*tà tà  {6 {6þ(+*tÄtÄ{7{7þ(+*tÅtÅ{8{8þ(+*tÆtÆ{9{9þ(+*tÇtÇ{:{:þ(+*tÈtÈ{;{;þ(+*tÉtÉ{<{<þ(+*tÊtÊ{={=þ(+*tËtË{>{>þ(+*tÌtÌ{?{?þ(+*tÍ tÍ! {@!{@þ(ÿ+*tÎ"tÎ#"{A#{Aþ(ÿ+*tÏ$tÏ%${B%{Bþ(ÿ+*tÐ&tÐ'&{C'{Cþ(ÿ+*tÑ(tÑ)({D){D(+,({E){Eþ(ÿ+**tÒ*tÒ+*{F+{Fþ(ÿ+*0.¿o·(} (~ rö&p((("(*n, oJ +o> (*05{] (è3#tµ {õ {ô së (V **®,r[ps> (+o? (*o>(*®,r[ps@ (+oA (*o> (*Â,r[psB (+oC (*o o> (*®,r[psD (+oE (*o> (*®,r[psF (+oG (*o> (*"s† *0Àþ9{ì {ì @í(èE7]št³ t³ {ñ {ñoR,{ò {òþ(+**t´t´{ó{óþ( +*tµtµ{ô{ô( +,{õ{õþ(!+**t¶t¶ {ö {ö(+,{÷ {÷þ****0¾(NE$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*t½ t½ {/{/þ(+*t¾ t¾ {0 {0þ("+*t¿t¿{1{1þ("+*tÀtÀ{2{2þ(+*tÁtÁ {3 {3(+,{4 {4þ**t t  {5 {5þ(#+*tà tà  {6 {6þ(#+*tÄtÄ{7{7þ(#+*tÅtÅ{8{8þ(#+*tÆtÆ{9{9þ($+*tÇtÇ{:{:þ($+*tÈtÈ{;{;þ($+*tÉtÉ{<{<þ($+*tÊtÊ{={=þ(%+*tËtË{>{>þ(&+*tÌtÌ{?{?þ(&+*tÍ tÍ! {@!{@þ(+*tÎ"tÎ#"{A#{Aþ(+*tÏ$tÏ%${B%{Bþ(+*tÐ&tÐ'&{C'{Cþ(+*tÑ(tÑ)({D){D('+,({E){Eþ(+**tÒ*tÒ+*{F+{Fþ(+*0µ!€è sH €éÐë(B oN €+К(B €-(« oM , (« oN +(« €,ÐV(B os €.s €/s €0 s/ sI €1 sB sJ €2*:(K }4*B{4þo·*(L *vr'p( ((("*(M *6oÕ(*(Ú *"(t *:(E }5*02{50(ý sû (ü *(t  ,Z{5Y(z {‚ („ oy ,9{z ({ {‚ (ƒ {z (|  (ø sû (ü **(N *"s‹ z(O *0Á(m (l ( *(â *0“(ƒ („ (ì *:sP ((+*&()+*BsQ (*+*Bs¤ (++*Bs¦ (,+*6s¨ (-+*6sR (.+*:s¬ (/+*:s® (0+*>s° (0+*:(S }6*0Ã{6oÉ *:(T }7*0Ã{7oU *V(¢ }V }W *j{V {W oÅ þoX *:(Y }Z *0 &ÃsÈ s˜ sš {Z s[ s\ *(‡ **r(] }^ }_ }` *z{_ s  {` {^ sa *:(T }>*0Ã{>oU *:(T }?*>{?ob *(c **(d *"s‹ z(‡ **(‡ **:(‡ }@*:{@oe *0ûÅ,{B,++ X {A- {Cþ+,7,1 {¯  Y2 of &XX3é++,${B,{g of &+ + -of &{A- {C+,E,? {¯  Y2%{C,0+ of &XX3Û++*0<W / 0(h X+x3a+A(h  YX (i þoj *0,Æ,( {¯  Y  2 of & X X3í**0,Æ,( {¯  Y  20of & X X3í**>, (´ **0íÇXYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (² X  !6"\i(1+&^\+Ñ{A(¶ *0œÈXYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(² X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(1+&][8vÿÿÿ{A(¶ **v££(Mþ(^*~*–oN ,+oO ,+oP þ*¦(¼ , oM +,oN (» oc **0AÉ(½ , o! sk *oh ,+Û(¶r'p( o‘ sÇ z*06ËoG (¾  (l r;poZ %¤oÏ *0'Ì(¾  (m £ sâ þ(º *0EÍ(¾  (m £ (¾  (m £sæ þ(º *0)Ì(¾  (m £ sè þ(º *F00 9þþ**0öÏon 2(¶r('p( o‘ so zop  YE#YEt+YEJ-YE&0YE*(à X8wÿÿÿ(Þ X8`ÿÿÿ+(9 (ß X8Cÿÿÿ(¶rb'p( o‘ so z (9 (ß X8 ÿÿÿ0AÏ2(¶r¤'p( o‘ so zop (Ä , X+Á*0bÏ2(¶r¤'p( o‘ so zop (Ä ,X(Æ sq **YEsq *Xsq *0JÑop .YE sr *X(Ç  (s (t sq (u sr *0lÏ2(¶râ'p( o‘ so zop (Ä , X+Á*YE(È sv *X(È sv *~‘*0Ô(É  (w (x (y (x (z (x ({  3+F, (| +: Y(Î {¯ YXo} (Ê ¥c(~ (Î (| 9z{ (t { (s , (| +T X(Î Y(Î {¯  {¯     YXo} (Ê ¥c(~ (Î (| +s€ *~’*09}{A-3, {C+,on (µ +on (´ +(€{A,/, {C+,on (µ *on (´ **(´ *0ÓÕ %YE´AYE”EYEXXXLYEH[OYE(UYE@XYE’aYEÇÕèmûûûiYE`lYEšnYEvBsYE@S-xYE r(pþoÅ (Hso zsê þ(Á *sì þ(Á *þ(à *sî þ(Á *sð þ(Á *þ( *sò þ(Á *sô þ(Á *sö þ(Á *X op LYE¯ XYEi dYE\ iYEO lYEh nYED1 uYE$ xYErL(pr„(p(Hso zsø þ(Á *sú þ(Á *sü þ(Á *sþ þ(Á *sþ(Á *sþ(Á *sþ(Á *sþ(Á *Xþ(2+*05×,! {‚ -sþ(Á *þ(Î *0 ‚Úsá  on (Å  (Ë  (ƒ  („  (… op ,%{‚ -s þ(Á *þ(Ï *0ÔÜ(ª+:Á(¬+:®(®+:›(3+:ˆ(°+:v(«+-b(­+-P(¯+->(±+-/(4+-(¶rˆ(p( o‘ so z¥› n*¥•*¥” n*¥“ n*¥’n*¥~*¥šj*¥Vj*¥‘j*¥j*0ŒÞ(ª+:g(¬+-L(®+-4(°+-(3+-+T¥š Œ›+D¥~ Œ•+4¥V Œ”+$¥‘ÑŒ“+¥ÒŒ’ (Ñ *0 ‚á(¨+:^(§+:¨(5+-(¶rÎ(p( o‘ so z¥2 († ,9 {¯ c/+c/+þVoÅ +rö(p(º (Ê ¥c(‡ st (ˆ s‰ 8[¥€(† ,9 {¯ c/+c/+þVoÅ +rö(p(º (Ê ¥c(Š "€þ,+ "€eþ,+(‹ þ"þþs‰ 8±¥(† ,9 {¯ c/+c/+þVoÅ +rö(p(º (Ê ¥c(Œ #ðþ,+#ðeþ,+( þ#þþs‰ (Ž  (  (  {B  ,"  ,{g (†  (º +    (Í Xs‘ *0oâX op LYE¿XYEidYE\iYEOlYEõnYEN1uYE$xYErL(pr„(p(Hso z(Ò (· Xs‘ *X  op XYE]dYEOiYEAoYE3uYE%xYErL(prú(p(Hso z(Ò (·  Xs‘ *X  op XYE]dYEOiYEAoYE3uYE%xYErL(pr)p(Hso z(Ò (·  Xs‘ *X  op XYE]dYEOiYEAoYE3uYE%xYErL(pr)p(Hso z(Ò (·  Xs‘ *0 Õä{B 9„ {g +YEk{g r )p Œ,4u…,(k ¥co +oÅ +rp(º rl)p(º s‹ z0+ (Ð ,Q  {Û {Ü {Ý {Þ {¯  {à {á {â {ã {äsÏ+  {C,H {Û {Ü {Ý {Þ {à {á {â {ã {äsÏ+  ,R  {Û {Ü {Ý {Þ {ß {à {á {¯  {ã {äsÏ+  ,  (6++rp)p(€Xs‘ *0 Ï æsá  on (Å  (Ë  (ƒ  („  (… op 9‡  {‚ -S{’ ,,  {“   {’   ¥V(Î  s” +R(¶r~)p( o‘ so   z {‚ {¯  (Î  s” +   s” (• (–  9‡  {‚ -S {’ ,,   {“   {’  ¥V(Î s” +R(¶r¦)p( o‘ so   z {‚ {¯   (Î  s” +    s” (• (–  %YEAYEÁEYE6]„LYE^…OYEUYEÁXYEŒaYEº+{ÀçBiYE'lYE<nYE&sYEj§éxYE(¶r(p( o‘ so   z {’ ,Ù {“  {’  (Ò (· Xs‘ * {’ ,› {“  {’  ¥Q(Í Xs‘ * {’ 9[ÿÿÿ {“  {’  (7+o— o˜ &Xs‘ * {’ 9ÿÿÿ {“ {’  8;ÿÿÿ {’ 9òþÿÿ {“  {’ Xop XYE_dYEpiYEboYE5uYE'xYErL(prÖ)p(Hso   z (Ò (· Xs‘ * (Ñ (¸ Xs‘ * {’ 9þÿÿ {“ {’  87þÿÿ {’ 9îýÿÿ {“  {’ Xop XYE_dYEpiYEboYE5uYE'xYErL(prp(Hso   z (Ò (· Xs‘ * (Ñ (¸ Xs‘ * {’ 9ýÿÿ {“  {’  («+-: (­+-1 (¯+-( (±+- (4+- (Ñ (¸ + (Ò (· Xs‘ * {’ 9Œüÿÿ {’ {’ 9wüÿÿ{’ {“  {“ {’ Œ!(À  (À (8+o˜ &Xs‘ * {’ 9üÿÿ {“  {’  ¥},rÚ)p+rä)p(Í Xs‘ * {’ 9Ëûÿÿ {“  {’  ¥(† (Í Xs‘ * {’ 9†ûÿÿ {“ {’  8pþÿÿ {’ 9_ûÿÿ {“  {’  (Ó * {’ 9(ûÿÿ {“ {’  +Ç {’ 9ûÿÿ {“ {’  +£ {’ 9àúÿÿ {“ {’  8ûÿÿ {’ 9¹úÿÿ {“  {’  (Ô * {’ 9…úÿÿ {“  {’  ,  oÅ +rp)p(Í Xs‘ * {’ 98úÿÿ {“ {’  8Eüÿÿ {’ 9úÿÿ {“  {’  ¥2rð)p(Ê ¥c(‡ {B,1st (ˆ ,{g († (º +(Í Xs‘ * {’ 9rùÿÿ {“ {’  8þÿÿ {’ 9Kùÿÿ {“ {’  8çýÿÿ {’ 9$ùÿÿ {“ {’  8Àýÿÿ {’ 9ýøÿÿ {“  {’  (Õ * of &Xs‘ *0 ýè2+op %3 Xþþ+,o™ Œ"*(š ,Cop of &Xop of &X8~ÿÿÿop %YE+of &X8=ÿÿÿX(9+ (› (œ 8ÿÿÿ0 Hìo (ž (Ÿ (  (¡     (:+*0 ¡îs¢ 2+op %3 Xþþ+,(;+(<+*(š ,X+Ÿop %YEX8pÿÿÿXþ(Ð *0Sð{£ rô)p( ,s¤ Œ·(=+*on   (  Ð#(B (>+(=+*{A*{B*{C*"}A*"}B*"}C*r( }A}B}C*V(¥ }D}E*Z{D{Eþ(?+*²(¥ }F}G}H}I}J*0 4{H{J{F( ( {I{GXþ(2+*²(¥ }K}L}M}N}O*0 -{N{K{L{M{Osä þ(º *’(¥ }P}Q}R}S*0 ){R{P( {S{QXþ(2+*r(§ }T}U}V*0 ${T{V( {UXþ(2+*r(§ }W}X}Y*0 ${W{Y( {XXþ(2+*r(§ }Z}[}\*0 ${Z{\( {[Xþ(2+*r(§ }]}^}_*0 ${]{_( {^Xþ(2+*r(§ }`}a}b*0 ${`{b( {aXþ(2+*r(§ }c}d}e*0 ${c{e( {dXþ(2+*r(§ }f}g}h*0 ${f{h( {gXþ(2+*r(§ }i}j}k*0 ${i{j( {kXþ(2+*r(§ }l}m}n*0 ${l{m( {nXþ(2+*r(§ }o}p}q*0 ${o{p( {qXþ(2+*r(§ }r}s}t*0 ${r{s( {tXþ(2+*r(§ }u}v}w*0 ${u{w( {vXþ(2+*r(§ }x}y}z*0 ${x{z( {yXþ(2+*r(§ }{}|}}*0 ${{{}( {|Xþ(2+*r(§ }~}}€*0 ${~{€( {Xþ(2+*²(§ }}‚}ƒ}„}…*0 .{{‚{ƒ{„{…( þ(Î *Ò(§ }†}‡}ˆ}‰}Š}‹*0 4{†{ˆ{‰{Š{‹{‡( þ(Ï *:(d }¨ *0 5ó{¨ o© (ª (« (Ì (Í þo¬ *r(­ }® }¯ }° *0 {® {¯ {° þ(@+*¾Ðë(B oN €(k €‘sá €’*08ôrú)po– o Ð(B (l+ Þ t   Þ*+, 0"öo± (² Þt  (³ Þ* *>/£V**0ø{– {• {” Ži3\ X/(›r *ps zVY2 (¤VXX3à+ ¤VX (D*0Wù{– {• {” - r*ps‹ zY£Vþ 3Y+Y(D s´ *0Mú{– {• {” 3*£V £Ve¤VX(D sµ (¶ *0XüX0 Xs· *( ,, {¸ (¹ {¸ (º Y+µXs· *0 ø!!u¦-q!u§:Àt¨ {Õ {× {Ö ((» (¼ (½ (¾ (¡s· 8Zt¦  {Í  {Î  {Ì  o   ( on    (8ÿt§{Ò {Ð{Ó {Ô{Ñ {Ï ,+""u :"uŸ:6((» (¼  (½ (¾ X ((½ (» (¼ (¾   (†(Ÿ XXs· 8t {Å((»  (¼ (½ (¾  YX ((½ (» (¼ (¾   (Š(ŸXs· 8btŸ{Ä((»  (¼ (½ (¾ XY X>°( ((½ (» (¼ (¾ ((¿ (À  ,*   (Š(ŸXs· 8€   (ˆ(ŸXXs· +V ((½ (» (¼ (¾   (ˆ(ŸXXs· (¾ (½ (» (¼ s· *0.0*   (A+(D ((½ *Z(Á on Xs *‚ sà r@*p(Á (Á s *0›  u¦:× u§:é  u§- u¨:‹rD*p ;s;zt§ {Ò {Ð {Ñ ( ,+(Ä (Å rß*p((Ä (Å (Å 8@ÿÿÿt¨{×8ÿÿÿt¦{Ío (*t§ {Ôu 9ÿþÿÿ{Ôt {ß9çþÿÿ{Ò {Ð {Å ((Ä (Å  X(B+(Ä (Å  X8eþÿÿ02   (# ( (Ä (C+(+(Æ *0Š sà oe oÆ *0 `   u§-2 u¨:üt¦{Í o oÆ on X*t§ {Ôu ,[{Ôt  {Ò{Ð {Å(D+X(E+X8Qÿÿÿ{Ò{Ð{Ñ(D+,+rß*poÆ rß*pon X8ëþÿÿt¨  {Õ  {× {Ö  (F+&(D+ (F+&*0    (D+&*0W{È ,D {È {È ,5{È {È {È -!{É (» {É (» sÊ *rã*ps‹ z0o,j(G+ (à3Mtó {rù*p( ,{  (H+(Ë *{r+p( ,{ {Ì -*r+ps‹ z*~*~*0BsJ (I+($ rW+p(r[+p((†((†(*0BsL (J+($ rW+p(r[+p((†((†(*0@r‘p(r_+p((!r›p((†((†(*0@rc+p(r_+p((!ri+p((†((†(*Òr‘p(($r›p((†((†(*0>oG 4oZ oÏ *0Âa'YE©"YEYE~\YEk(Í ,Uid[ ] i [ ] i ] ro+pþVoÅ (º þVoÅ (º þVoÅ (º *þoÅ *rs+p*ry+p*:jÿÿÿr+p*9Qÿÿÿr…+p*òon / (Î þ+,op "þþ+, X+Ç*0<on 3(C+ (+(Æ *Xop (,(Á +Ä0  r‹+p(º r‹+p(º *j{£ 1{£ Y(¥ **"sÏ *0 %(P(G+Œ(4*0 !(G+Œ(4*0 •0+{£ þþ,r+p( Ýf 9 oÐ ,r+p( ÝC oÑ  oG oM ,,oN ÐË(B oM , oN + (l++, oÅ ((Ò 8] oG Ð((B o= ,þ, Žiþ+,8$£(K+oK( ,+on þþ,8çrW+poÓ r[+poÔ /+þ,+ Xþþ,8Ÿ0rp+#Y(Î   {¯   YXo}  Xon 2rp+0X(Î   {¯  on Y    YXo}  X(Î  Y(Î  {¯  {¯     YXo}  s\(L+uÍ9tÍ{Õ uQ,(+Y(3(0 ( ((†((†((Ò Þ t Þ+>tÎ{Ö r—+po‹ (º rá+p(º ((Ò -Y (;+{×  oØ  ÞIY (; Þ/t (0rå+po‹ (º ( Þ*A4XmÅ cd/0®"s^ {È 9‘ {È {È -{É (» sÙ þ(M+* rõ+p(sÛ (N+sÝ (O+r'p((!r9p((†((†(* +œÞ,/rõ+p(r9p((†((†(**>st**sÞ **sß *"sà *0 -sn sp (àE£æ (àE”l^rD*p ws;ztó { {Ì -{ (0 (*{ { (0 ((P+(ˆ(þþoá þoâ *tô{ { (0o> {Ì -  (* ((P+(ˆ(þþoá þoâ *tñ{(0rù+po> (º rá+p(º  ((T3( **tõ{ 9êoG uQ ,  (0 (/  (*uI  9¬   oã   YE6µr,p þVoÅ (º   ((} (~ ()* oä  oå  sr(Q+(R+{á(S+-+.r,pþVoÅ (º   ((~ ()* oæ  oæ  oå  oå  svsx(R+{á(T+-þ+,+Yr,pþVoÅ (º   (r!,pþVoÅ (º   ((~ (~ (**oG oM ,eoN Ð×(B oM , oN +(l+,+3oN ÐØ(B oM , oN +(l++9ÛoG oN Ð×(B oM , oN +(l+,r1,p+r9,p ¥ oË  (U+sˆ(V+{á [X(W+ ((((ˆ(þþoá oâ Þu,oÜ &Ü&Ü*u 9Þ{ä,sŠoG oç (m+þ+9ŽoË (Q+sŒ(V+{á[X(W+rA,p((((ˆ(þþoá oâ Þu,oÜ &Ü&Ü*rI,p((T3( **(R(ñoW,oG (+,( *(0({ã,doè   [  sŽ(X+ Ži-+  þþ,* s (¾+(Y+('(ˆ(**(0($*(0(%*tð{!þþr'p((Q+!(Z+(!(6*tò{([+(\+(&*tó  (+- oG (ª+9Ìøÿÿ{ { rù*p( ,[(H+""(ê "(ë ##(2(Q+(]+(^+{áY(_+(~ ((*(0r¯p(*¢bmdÑ0 G/ (`+sì {âs©   {à(a+Œ (4*0Â09¶(¨+:2(§+:J(5+:(±+:ï(°+:Ä(®+:£(¯+:x(¬+:M(­+:"(ª+:÷(«+:Ì(3+:¡(4+:w(¦+-[(©+-0oÅ Þ#t  rU,po‹ (º rá+p(º Þ*¥ rl)p(,(º rl)p(º *¥},rÚ)p*rä)p*¥› þ›oÅ r,p(º *¥šþšoÅ rp(º *¥’{Ý(í r‡,p(º *¥{Ý(î r,p(º *¥“{Ý(ï r‘,p(º *¥‘{Ý(ð r—,p(º *¥”  {Ý(ñ r›,p(º *¥V  {Ý(ò *¥~  {Ý(ó rŸ,p(º *¥•  {Ý(ô r)p(º *¥2  r£,p{Ý(‡ r§,p(º *¥€(‹ , r«,p8µ(õ , r³,p8¡(ö , rÇ,p8{Ûon 2{Ûop gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(÷   {Ý(ò rÙ,p(º +{Û{Ý(Š rÂp(º *¥{Û{Ý(Œ ( ,r«,p*(ø ,r³,p*(ù ,rÇ,p*{Ûop g3sœ(ˆ+, rÙ,p(º **rß,p*¦ °#z{ß-*{ßsž(*r{Üs (>(b+*Vs¢(>(*01(Ð (P(c+(?*01(Ð (P(c+(@*V(P(c+(@*&sE*r( }”}•}–*{”*{•*{–*&*(ú *0 R2(û (ü ( ré,p((†(r_+p((†((ˆ(*(ý *0 i3(þ (ÿ ( ré,p((†(, {× + rí,p(r_+p((†((†(*^sO€œsO€*:( }›*~œ**(Tþ*~**(Tþ*{›*0Wþ, (T3 * **6(ñoU*0.4þ,uº ,{› {› þ**þþ*0*,þ,þ,{› {› þ**þþ*05uº ,oX**:( } *N{ {£ þþ*V( }¡}¢*N{¡{¢(+*²( }£}¤}¥}¦}§*0 *{£{¤{¥{¦{§þ(2*:( } *V{ Œ þo *:( } *07{ o s *:( } *09{ o s *:( } *V{ Œ þo *:( } *07{ o s *:( } *09{ o s *:( } *V{ (þ þo *²( }¯}°}±}²}³*0 *{¯{°{±{²{³þ(2*²( }´}µ}¶}·}¸*0 '{´{µ{¶{·{¸(6*r( }¹}º}»*Ê{»{ºX3*{¹o ŒXs ( *Ò( }¼}½}¾}¿}À}Á*0 k{Á{¿{½X2+{À{¾Xþþ,*{¼V%{Á¤V%¤Vo ŒXs ( *0L( }Â}Ã}Ä}Å}Æ}Ç}È}É }Ê*0 ^{Å{Ä(Q+{Æ{Ç{È{É{Ê(7{Ã(R+{Ê{Â{á(S+((*V( }Ë}Ì*Š{Ì{ËX2*Xs ( *:( }Í*B{Íþo *:(! }Î*07{Îo sz*:(" }Ï*09{Ïo s|*:( }# *V{# Œ þo *:( }$ *07{$ o s% *:( }& *09{& o s' *r( }( }) }* *0 :{* r1,p( ,Œ ,++, þ oG oM +,: þ oG oN Ðï(B oM , oN +(l++,s{( s~{)  þ oG r poZ Œ oH  þ oG rspoZ Œ oH s+ þ(d+*{( s, {) þ(e+*:(- }Ö*ž{ÖoÝ ,{Öoß s. (/ **(A *JoJ rñ,p( *:(- }×*ž{×oÝ ,{×oß s. (/ ***o &*No> o> (r *ò(1 }Ø}Ù}Ú}Û}Ü}Ý}Þ*0 ];o> {Ø{Ù{Ú{Û{Ü{Þ{Ýo> (+(2(Ò Þ t   Þs2 *CK :( }3 *V{3 Œ þo *:( }4 *07{4 o s5 *:( }6 *09{6 o s7 *r(8 }9 }: }; *0 ;<(ÿ (þ {9 (0{: s< {; (f+s= *:(> }? *N{? Œ (#*(@ *F(A ,*-þ*:(B }æ*:{æ(=*:(B }ç*:{ç(=*:(B }è*:{è(=*–oN ,+oO ,+oP þ*Þ(¤,-oM ,oM ,oN oN oc **oc **~*~*~*~*0L=(J,A(R Ži10Ðí(B oM , oN +£“o?(¥***2s¬€ê*:( }é*sº**(¹þ*"s¼**(¹þ*s¿**(¹þ*sÁ**(¹þ*~ê**(¹þ*sÃ**(¹þ*{é*>(¬}ñ*{ñ*Z(¬}ò}ó*{ò*{ó*>(¬}ô*{ô*>(¬}õ*{õ*>(¬}ö*{ö*:( }÷*2{÷{ñ*:( }ø*2{ø{ò*2{ø{ó*:( }ù*2{ù{ô*:( }ú*2{ú{õ*:( }û*2{û{ö*2sÑ€ý*:( }ü*sá**(àþ*sã**(àþ*så**(àþ*"sç**(àþ*"sê**(àþ*~ý**(àþ*sí**(àþ*{ü*>(Ñ}*{*>(Ñ}*{*>(Ñ}*{*Z(Ñ}} *{*{ *Z(Ñ} } *{ *{ *>(Ñ} *{ *:( } *2{ {*:( }*2{{*:( }*2{{*:( }*2{{*2{{ *:( }*2{{ *2{{ *:( }*2{{ *0Ø?(( (S,4(( (T (( (m s(g+ (h+(Ú*(( (I9}(( (Q Œù,+ rIps@ zŽi ú  Y25£o> oH sC ¤úXX3Ë(h+(Ö*(Þ*0œA9oG (H,(`(i+(Ò*(K,(Ô*(( (J,F(( (i (D (E o@s(g+ o>(h+(Ø*(ý*(Þ*0_ÞŒ  ,(þ*Ð (B ÐN(B (¥,rgp(F (Ø*Ð(B (¥,(Ü*(Þ*(G *:o> sC *(G *:o> sC *0<B u§-u¨-t¦{Ì*t§{Ï*t¨ {×+Ä0<B u§-u¨-t¦{Î*t§{Ó*t¨ {×+Ħ((,+(((Ÿ**(**(**(**(**(*~*0CCu¦,9t¦ {Ì,*{Î,"{Í uQ , rp( ***>(Š(*~*~*~*~**(¡*‚( ,*( ,*þ(j+*:(†(*>(ˆ(*>(ˆ(*>(ˆ(*Bs4þ(*Bs6þ(*Bs8þ(*08D{I ,. {I {J oâ (ˆ(+Ê*0@F{I ,2 {I {I - {J *{I {J  (*( *6s:(*6s<(*6s>(*:s@(*¾rõ+p(r9p((†((†(*fr'p((!("*0BG{I ,4 {I {I - {J *{I {J sB(k+*( *09H,) { rö&p(oK (ˆ(*rgp(*0Fr‘p(r_+p((l+(!r›p((†((†(*¾r‘p(r›p((†((†(*¾rW+p(r[+p((†((†(*0‚IoL ,r+p((} (~ *oM ,N {0 (» {0 (¼ 0r+p((} (~ * oK Y(m+(~ *(} *0M   (m+*BsN (n+*(L *>(ˆ(*(L *>(ˆ(*(L *>(ˆ(*(L *>(ˆ(*(L *>(Š(*(L *>(Š(*(L *>(Š(*(O *fr'p((†(*(O *fr_+p((†(*(O **:(O }*N{(†(*(L *.þ(*( **0Ärp(€s,€s.€s0€s2€ÐB(B €(§oM , (§oN +(§€Ðë(B €(©oM , (©oN +(©€rß,p(€r-p(€*(P **~ *~!*0.G (IoQ ,*sR Œµ (IoS *0.N (I(o (K Þ, (I(p &Ü&Ü*V!(L(8+*V!(L(8+*:j(L(8+*6(L(8+*0]P on /op (T +,X +Ýon 3sU z op +3X +op -3  X +on 3sU z on /op (A +,X +Ý Y-sU zon /op (T +,X +Ýon .sU z op i0iYsV  sV  X Y 24(W  op i0iYsV (X  X  X3Ì,sV (Y +*00Q (JoZ ,*(Q Œµ (Jo[ *0.N (J(o (R Þ, (J(p &Ü&Ü*"(S*6(S(8+*Zs\ € s] €!*F}^ o &*¢{^ {^ {S Œ ¥b(_ }S *¢{^ {^ {S Œ ¥b(` }S *(c **:(¸ }$*ªo> r;p( ,o[ Ži{$ŽiXþ**b}d }e o &*j{d (o+{e þob *F}f o &*r%-p*Þ{f {f {Y Œ ¥bŒ ¥b(_ (p+}Y *Þ{f {f {Y Œ ¥bŒ ¥b(` (p+}Y *08Ssg Р(B ~e (¥ (p+ (o+oa sh *:}i ( *B{i þoX *b}j }k o &*j{j (p+{k þol *F}m o &*r%-p*Ž{m {m {h (_ ¥.}h *Ž{m {m {h (` ¥.}h *0(Ÿsn þo sp (p+oq sr **–oN ,+oO ,+oP þ*Þ(o,-oM ,oM ,oN oN oc **oc **~=*~>*~?*~@*****0OTŒ,+ rIps@ zŽi   Y  2!  £Q`os ¤ X X3ß*0š`os , s½(t **0tV,þ, Žiþ+,*þ, Žiþ+,,£ (q+ o,o-o.su (v *(¶rI-p( o‘ sÇ z0X({ ,{w *r-ps‹ z03Y Ð!(B o= ({ , {w (x _þ**00ZÐ!(B o= ({ , {w (x (y **0À[o> Ð (B (p-ÐN(B (pþ+9xon 1o} rÃ-p( +,on Y YXo} +@on 1o} rÍ-p( +,on Y YXo} ++ sz ({ *0½_rÕ-po| 9”s¿ sÁ`o} (r+  (s+ Œ ,+ rIps@ zŽi Y2:£/o~ ¥Vo> sz ¤ XX3Æ*sÃ`ob (t+*0E`(€ sÅ(u+ Ži3*o| ,o ,o! þoC ***0LbÐN(B (p,sÇ*Ð (B (p,sÉ*(€ ¥ (v+ sË*0^eÐN(B (p,+Ð (B (p,*(~ ,& {€ _3 _.  _þþ****0 >(ƒ,*oh ,+â*0 ‡ („*0 >(ƒ,*oh ,+â*0 ‡ (†*0õgÐN(B (p,AE rß-ps‹ zQ(y*Q%rsp¤Q(y*Ð (B (p,ME rß-ps‹ zQ(y*Q%r .p¤Q%r.p¤Q(y*( ,/sÍ sÏsÑ`oè (w+(w+ (x+**0h(ˆ sÓ*0TkÐN(B (p,sÕ*(€ Ži0s×*r!.p(z -sÙ* { sÛ*0!šr!.p`os ,*r).poæ *0h(ˆ Žiþ*0…l(‚o: (Œ,rÃ-p(º +9Ð (B (p,+ÐN(B (p,+ rÍ-p(º `oZ ,*r7.p(HsÇ z08( sÝ*0gŠŒ,+ rýps@ z(ƒ-F `(ƒ,rw.poJ (H rýps zr™.poJ (H rýps z*~A*~B*~C*~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*~P*~Q*0ˆ(‘(p,+ (“(p,+ (•(p,+ (—(p,+ (™(p,+ (›(p,+ ((p,*(Ÿ(p***0OmŽi YEÄÒàîü ?š  +  X£¤ X X2æ ŽiY YXY2!X£¤XX3ß (¤(Ÿ%¤(á+þoC *(¶rµ.p( o‘   r¼"ps z(‘þoC *(“þoC *(•þoC *(—þoC *(™þoC *(›þoC *(þoC *0zn(¡-rÍpoJ (H r]ps zo! Ži3D + X£¤XX2á £(¥(á+**6sß(y+*0ooo (¦ Œù,+ rIps@ zŽi  Y2# £oH ¤XX3Ý oš ,+rÙ.poJ (Hso z*0p(z+ sá*0MqŒù,+ rIps@ zŽi   Y  2  £oH ¤ X X3á*0>so! oè (¦ sã Ži/*£ (ªså*00uo! ({+ Ži/*£ («  sç*02vo! (|+ Ži/s‚ *£(i s‚ *0:ŠŽi2*répoJ þVoÅ (I rps z£*0zw/*répoJ þVoÅ (I rps zoè (¦ /(­sƒ *o! (­£Ys„ (… sƒ *0LxÐn(B (p-repoJ (H r]ps zo! ££sK *0y(~ , {€ _þ**0&>Ðn(B (p,*oh ,+Ü*0Ee(~ ,8 {€ _3 _.  _þþ++, (¡þ***0%zsé së`oè (w+ (x+*0h(³ sí*0‰o(³ Œù,+ rIps@ zŽi  Y2# £oH ¤XX3Ý oš ,+r%/poJ (Hso z*0p(µ sï*03e(~ ,& {€ _3 _.  _þþ****0&>Ðn(B (p,*oh ,+Ü*Ö(·, þoh *(…,(‡*(±,(¸**0QŠ(·-F `(·,rs/poJ (H rps zr/poJ (H rps z*0[ŠŒ,+s@ z(²-> `(²,rÃ/poJ (H s zrç/poJ (H s z*05ŠŒ,+s@ z(¡-rÍpoJ (H s z*:(¥ },*F{,þoH *(† *0&,o~ ¥V o~ ¥V /*þ*(‡ *Jo ,oˆ **:(‰ }-*0S{ Ð!(B o= ({ ,4 {w (Š {w (x _3{- (***:(‹ }.*0!3(Œ ( {.3(6 **(Ž *0<ŠE"((¶r0p( o‘ r0ps zrgp*rö&p*(Ž *0<ŠE"((¶r0p( o‘ r0ps zr+p*rù*p*:(Ž }/*:{/o *( *0H| Ð!(B o= (|(Š  Ð!(B o= (|(Š /*þ*:(? }0*0'} Ð!(B o= (|(‘ {0þ*(? *"(}*:(’ }1*0 \q{1Œù,+ rIps@ z{1Ži   Y  2$ {1 £oH ¤ X X3Ü*(“ *",**(“ **:(“ }2*0 @8{2r).p%{2¤o– %¤oÏ ¥V*:(“ }3*N{3o” ¥V*:(c }4*>{4oÏ *(• **þo> *:(c }5*:{5o# *:(’ }6*:{6(©*V(’ }7}8*0 N~{7(© {8£oI   +  X£¤ X X2æ(s+*V(c }9}:*0 ž{:ŽiY YX  Y2 X£¤XX3à oF {9  + X£¤X X2æ %¤(s+þoF *( *0H| Ð!(B o= (|(Š  Ð!(B o= (|(Š /*þ*(? *"(}*:(’ };*0 \q{;Œù,+ rIps@ z{;Ži   Y  2$ {; £oH ¤ X X3Ü*:(c }<*:{<o# *01Š,*,oG *(¶r#0p( o‘ rps z0ÐB(B €>(roM , (roN +(r€=Ðë(B €@(toM , (toN +(t€?€Aб(B €C(’oM , (’oN +(’€Bг(B €E(”oM , (”oN +(”€Dе(B €G(–oM , (–oN +(–€Fз(B €I(˜oM , (˜oN +(˜€Hй(B €K(šoM , (šoN +(š€Jл(B €M(œoM , (œoN +(œ€Lн(B €O(žoM , (žoN +(ž€Nп(B €Q( oM , ( oN +( €P*(A *",**:(– }S*:{Ss=*:(9 }— *b{— Œ o” (}+*:(¥ }U*F{UþoH *.{˜ þ*R{™ {˜ (~+*&oš *6~› oš *&oœ *&( *"(ž *&(Ÿ *"(  *B{˜ þ(+*~› *B{˜ þ(€+*B{˜ þ(+*&o¡ *&o¢ *F{˜ þ(‚+*F{˜ þ(ƒ+*&o„+*:{˜ (…+*6¥Šs¶ *"(¤ *6{˜ (†+*6{˜ (‡+*"¥Š*"s¶ *&(¥ *n{™ {˜ {˜ þ(ˆ+*n{™ {˜ {˜ þ(ˆ+*n{™ {˜ {˜ þ(‰+*n{™ {˜ {˜ þ(‰+*6{˜ (Š+*6{˜ (‹+*07‚ u-',(t {¦ {§ X(…++ÏX**0#ƒ u- u-**t{¨ **04a- -(© *(Œ+ (Œ+ /+ X(ª *0r„(Œ+ (Œ+ X>¥u9t {¦ {§ {« (Œ+X1Su,?t{¦ {§ {«  (+  (+(+*rI0ps‹ z(+ (+*rI0ps‹ zX>£u9t {¦ {§ {«  (Œ+X1R u,? t{¦ {§ {«  (+ (+(+*rI0ps‹ z (+(+*rI0ps‹ z(+*0¥†u-Y9‹t {¦ {§ {«  o¬ /(Ž+ (+*-* (Ž+(+*t{­  o¬ / (ª *-*(ª *(© *00‡  u- u-R (Ž+*t   ," u-$ {­ (Ž+(Ž+* (Ž+*{­ +Út   u-  u-$ +Ìt  {­ (Ž+(Ž+*t{¦ {§  {¦  {§ {« {« {¨  {¨   X /(+(+* X /(+(+*(+*0‰  u:® 9åt {¦ {§ {«  o¬ /5(‘+(® (¯ (°  (+s± *- s± *(‘+(® (¯ (°  (+s± *t  {­  o¬ / s± *- s± *s± *s± *0†‹u-u- r]0ps‹ zt {­ s² *t {¦ {§ {«  - s² * (’+(³ (´ (+s² *0µŒu- u-!*t {­ o¬ -**t {¦  {§  {« o¬ /(“+(+*---*-*(’+(´ (³ (+*(“+(+*0v†u-L,dt {¦ {§ {«  o¬ / +¹-*+¨t{­  o¬ þ**0]u-9,Lt {¦ {§ {« (+ o˜ &+»t{­ o˜ &**0 au-:,Ot {¦ {§ {«  (ƒ+(”++ºt{­ þ(”+**0e‘u->,St {µ {¶ {· (•+ (–++¶t{¸ þ(–+**0hu-A,Vt {¦ {§ {«  o¹ , (€++,+µ*t{­ þo¹ **0hu-A,Vt {¦ {§ {«  o¹ ,+(+,*+³t{­ þo¹ **Fsº þ(€+*Šs» (€+,s¼ þ(+**0 ƒ’u-Q,qt {¦ {§ {«  o¹ ,  (Ž++(—++£t{­  o¹ ,  (Ž+***0 _u-:,Mt {¦ {§ {«  (“+(˜++ºt{­ (“+**0T“9u:t 9Êu:Ât {¦ {§ {¦ {§ {« {« {¨ {¨   1:(‘+  (®   (¯   (™+ (™+(+*(‘+  (®   (¯    (™+ (™+(+* *t   {­ (Ž+* *t ,u-  {­ (Ž+* +¬ {­  +å0…’u-R,st {¦ {§ {« (š+ (~+,  (Ž+++¢t{­  (~+,  (Ž+***ªo¹ ,(Ž+s½ *(Ž+s½ *0 ™•s½ u-h,~t {¦ {§ {« (›+ (¾ (¿ (œ+(¾ (¿ 8ƒÿÿÿt{­ (œ+**05– u-,&t {§ {« +Ùt{­ **0H—u-',6t {§ {« (+(  *t {­ (  **05– u-,&t {¦ {« +Ùt{­ **0H—u-',6t {¦ {« (ž+(  *t {­ (  **03˜(Ÿ+ -!(¶r«0p( o‘ r—,ps z{ *03˜( + -!(¶r«0p( o‘ r—,ps z{ *0„š{À ,v {Á u-u-{À +Ï*{Á t {À {¦ {§ {« (© ( ( ( 8‚ÿÿÿ(à *b(à ( (¡+sÄ *n(¶r×0p( o‘ sÇ zn(¶r1p( o‘ sÇ z0Q›{Å ,B{Æ {À -(¢+* {Á u,{Á t{­ *r91ps‹ z(£+*0tœ{Å ,Q{Æ {À -* {Á u,&{À (¡+(Ç {Æ {À þþ*r¹1ps‹ z(È {Æ {À þþ*0ž(¤+sÉ sÊ *0 iŸ{À 9R {À 9C {Á   u:Ñ u: {Á u-#u-W{À {À  +’{Á t{À {­ (© ( ( 8Uÿÿÿ{Á t{À {¦ {§ {« (ª ( ( 8ÿÿÿ{Á t{Á u-<u:~{À {­ (© ( ( 8§þÿÿ{Á t {À {À {­  {­   o¬   , * 8Yþÿÿ{Á t{§ -a{À {À {­ {¦ {«  {§  o¬   , * ( ( 8âýÿÿ{À {¦ {§ {«  8•þÿÿ{Á t{§ :f{Á u-Su:«{À {¦ {§ {« (ª ( ( 8>ýÿÿ{Á t{À {À {¦ {« {­   o¬   , * ( ( 8Úüÿÿ{Á t  {§ -a{À {À {¦ {«  {¦  {«   o¬   , * ( ( 8cüÿÿ{À  {¦  {§  {«  8ýÿÿ{Á u-0u-I{À {¦ {§ {«  8˜þÿÿ{Á t{À {­  8düÿÿ{Á t {À  {¦  {§  {«  8üÿÿ*{À ,**¶--**-*(à ( (à ( (¥+*0Yu-5,Gt {¦ {§ {«  (¦+( +¿t{­ ( **6(I (¦+*0 s© sË þ(+*0¡(…+ (§+ (¨+*ŠoÝ ,or (Ž++à*0+¢oq (©+ Þu , oÜ &Ü&Ü* >sÌ (ª+*V( }Í }Î *R{Í {Î (O+*V( }Ï }Ð *R{Ï {Ð (O+*V( }Ñ }Ò *^{Ñ {Ò (O+þ*{Ó *{Ô *"}Ó *"}Ô *V( }Ó }Ô *b}Õ }Ö o &*J{Ö {× («+*^{Ö {× («+Œ *J{Ö {× (¬+*b{Ö {Õ (­+(Ø * *V(H }Ù }Ú *Ê{Ù {Ú {£ ¤ {Ú {Ú {£ X(¥ *:(Û }Ü *>{Ü (L+*0>£oÝ oÝ 3)-*or or  (2+, +Æ**:(Ý }Þ *F{Þ þ(®+*V(ß }à }á *j{á {à oõ (¯+*(â *&(ã *(â *&(ä *.{å þ**oæ *R{ç {å (°+*R{ç {å (±+*&oè *R{ç {å (²+*B{å þ(³+*B{å þ(´+*0¥{å (´+ ,{é *sê zB{å þ(µ+*&oë *&oì *B{å þ(¶+*f{ç {å (·+sí *Z(î {å þ(¸+*Z(ï {å þ(¹+*Jsð ¥2(º+*Nsñ (»+(¼+*Nsò (»+(½+*"(ó *"(ô *0{(T+ (¾+sõ *6{å (¿+*6{å (À+*~ö *(÷ *V(û (ü sý *:(ø }ù *0'<(ÿ (þ {ù (Á+,(ê **:(ø }ú *0'<(ÿ (þ {ú (Á+,(ê **0>¨ u7- u8-*X*t8 {û {ü X(Â++Â0#© u7- u8-**t8{ý *06a- - (þ *(Ã+ (Ã+ /+ X(ÿ *0 §ª(Ã+ (Ã+ X>¾u89¨t8 { {û {ü { (Ã+X1au8,Mt8{ {û  {ü  {   (Ä+   (Ä+(Ä+*rI0ps‹ z(Ä+ (Ä+*rI0ps‹ zX>¾u89¨t8 { {û {ü { (Ã+X1au8,Mt8{ {û  {ü  {    (Ä+  (Ä+(Ä+*rI0ps‹ z (Ä+(Ä+*rI0ps‹ z(Ä+*0 Ѭu7-u8-E(þ *t7 { o¬ / (ÿ *-(þ *(ÿ *t8 {  {û  {ü  { {ý o¬ /(Å+(Æ+*- (ÿ *(Å+(Æ+*0Ÿ­u7-u8-0sê zt7 { { o¬ -*sê zt8{ {û {ü { o¬ /8uÿÿÿ -*8aÿÿÿ0¡­u7- u8--*t7 { { o¬ -( **t8{ {û {ü { o¬ /8xÿÿÿ -( *8_ÿÿÿ¾(Ç+,(Å+s *(Å+s *0 ®¯s   u7-  u8-!*t7 { { (È+*t8 { {û {ü { (É+ ( ( (È+( ( 8Rÿÿÿf(Ç+, (Å+**0 °u7- u8-*t7 { { (Ê+*t8 { {û {ü { (Ë+ (Ê+8ÿÿÿ0£²  u7- u8-&r]0ps‹ zt7 { { s *t8 { {û {ü { -  s *(Ì+( ( (  (Ä+s *0ȳu7- u8-!*t7 { o¬ -**t8 {  {û  {ü  { o¬ /(Í+(Æ+*-4-*-*(Ì+( ( ( (Ä+*(Í+(Æ+*0~´u7- u8-*t7 { o¬ þ*t8 {û {ü { o¬ / +–-* 8‚ÿÿÿ0rµu7- u8-*t7 { { (Î+&*t8 { {û {ü { (³+(Î+& +Ž0‡¶u7- u8-*t7 { { þ(Ï+*t8 { {û {ü { (´+-(Ï+-  8ÿÿÿ**0€µu7- u8-*t7 { { þ(Ç+*t8 { {û {ü { (µ+,+ (Ç+,* 8€ÿÿÿ0€µu7- u8-*t7 { { þ(Ç+*t8 { {û {ü { (¶+, (Ç++,  8‚ÿÿÿ*0Š»u=- u>-$*t= { { o— ( *t> { { { { { (Ð+o—  (Ð+( *0޽u7- u8-'*t7 { { (+( *t8 { {û  {ü  { {ý (·+(+(·+( *0¾u7- u8-$*t7 { { þo *t8 { {û  {ü  { (¹+o 8ÿÿÿ0ÂuA- uB-$*tA { { þo *tB { {  {  { (Ñ+o 8ÿÿÿ0à  u7-  u8-P*t7 { { o¬ o¬  0 þþ+, þ(Ò+**t8{ {û {ü { o¬ o¬  /(Ó++ 0 þþ+, (Ò++ / 8þþÿÿ *0%Ä   o¬ 3*þ(Ó+*0{µu7- u8-"*t7 { { s ( *t8 { {û {ü { s (Ô+( 8…ÿÿÿ6(! (Ô+*6(¿+(Õ+*>s" (Ö+*03ÅoÝ ,(oº (» (¼ (Å++Ï*05Æ  +&£À (» (¼  (Å+ X Ži2Ô*0[ÈuE ,  (¾+*uÅ ,   (×+*o¹ (Ø+Þu, oÜ &Ü&Ü*1 >0 s© s# þ(³+*0‘Ê{$ 9€ {% u7-u8-{$ +Ì*{% t8 { {$ {û {ü {  (þ (& (& (& 8uÿÿÿ(' *b(' (& (Ù+s( *n(¶r×0p( o‘ sÇ zn(¶r1p( o‘ sÇ z0bË{) ,S{* {$ -(Ú+* {% u7,${% t7 { {  s+ *r<2ps‹ z(Û+*0tÌ{) ,Q{* {$ -* {% u7,&{$ (Ù+(, {* {$ þþ*r¼2ps‹ z(- {* {$ þþ*0Î(Ü+s. s/ *:(0 }1 *0<(ÿ (þ {1 (++*V(2 }3 }4 *â{3 {4 {£ sÒ ¤{4 {4 {£ X(¥ *{5 *{6 *"}5 *"}6 *V( }5 }6 *b}7 }8 o &*J{8 {9 (Ý+*^{8 {9 (Ý+Œ*J{8 {9 (Þ+*b{8 {7 (ß+(: * *0ƒÐoÝ oÝ 3n-*o; (< o; (< (2+,,o; (= o; (= (à++,8ÿÿÿ**(> *&(û *:(? }@ *^sA {@ ¥ (á+*(B *&(ü *:(? }C *^sD {C ¥U(â+*:(E }F *0?Ñ{F {ð (û (û oG ,*(ü (ü þ(ã+**(æ **(æ **(æ **(æ *0£Š/!(¶rH"p( o‘ r?3ps z/!(¶rH"p( o‘ rE3ps z/!(¶rH"p( o‘ rK3ps z/!(¶rH"p( o‘ rQ3ps zsH *0Ó(ä+  Ú 2jÚ 2TÚ29Ú2(I XX3ãXX3ÇX X3¬X X3–*0 “Ó(ä+  Ú ?yÚ 2`Ú2EÚ2)(å+(I XX3×XX3»X X3 X X@‡ÿÿÿ*6(K *>(I **(æ **(æ **(æ *.(L *6(M *0|Š/!(¶rH"p( o‘ r?3ps z/!(¶rH"p( o‘ rE3ps z/!(¶rH"p( o‘ rK3ps zsN *0aÕ(æ+  Ú 2KÚ 25Ú2(M XX3æX X3ËX X3µ*0 kÕ(æ+  Ú 2UÚ 2?Ú2$(ç+(M XX3ÜX X3ÁX X3«*0—ÖŒW,+ rIps@ z(æ (æ (æ Ú 2XÚ2=Ú2!(L o˜ &XX3ßXX3ÃX X3¨*0 ¯ØŒW,+ rIps@ z(æ (æ (æ (è+ Ú2dÚ2H Ú 2,   (L o— (P  X  X3ÔXX3¸XX3œ *0 ÖŒW,+ rIps@ z(æ (æ (æ Ú 2^Ú2CÚ2'(L (é+&XX3ÙXX3½X X3¢*0µØŒW,+ rIps@ z(æ (æ (æ (è+ Ú2jÚ2N Ú 22    (L (ê+(P  X  X3ÎXX3²XX3– *Ži*0IÙ/(›r *ps (Â+&+   Y 2oQ ¤ X X3è*0.Š/!(¶rH"p( o‘ r *ps z *0LÚ/!(¶rH"p( o‘ r *ps z   Ú  2 ¤  X X3î*zŒÄ,+ rIps@ zŽiþ*" *0ŠŒÄ,+ rT ps@ zŒÄ,+ r5ps@ z/!(¶rH"p( o‘ rW3ps z/!(¶rH"p( o‘ r *ps z/!(¶rH"p( o‘ ro3ps zXŽi1!(¶r0p( o‘ r *ps zXŽi1!(¶r0p( o‘ r *ps z( *‚Ži2*X£ÄŽiX+à00)Ži/(£Ä Ži ( XX+Ñ*0Û(ë+  (ì+*06ÝŒZ,+ r‡3ps@ zu[ ,  (í+*(î+(í+*0QߌÄ,+ rIps@ zŽi \  Y  2  £ oR ¤\ X X3â(ï+*0TàŒÄ,+ r•3ps@ zŒÄ,+ r£3ps@ zŽi Ži X  ( ( *ŽŒÄ,+ rIps@ zo ¥Ä*zŒÄ,+ rIps@ z(ð+*zŒõ,+ r±3ps@ z(ñ+*0DaŒÄ,+rIps@ (Â+&Ži  Y 2£ o˜ &X X3è*0RáŒÄ,+rIps@ (Â+&Ži !  Y  2  £ o— ¤! X X3â*0‘ãŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(S Ži Ži.!(¶rl p( o‘ r£3ps zY 2$£ £!oT &X X3Ü*0£æŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(U Ži Ži.!(¶rl p( o‘ r£3ps z" Y2, £ £!oV ¤"XX3Ô *0 ¥èŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(W Ži Ži.!(¶rl p( o‘ r£3ps z" Y2. £ £!oX ¤"XX3Ò *0FêŒÄ,+ rIps@ z(Y Ži  Y  2  £ oZ & X X3ç*0“ìŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z([ Ži Ži.!(¶rl p( o‘ r£3ps zY 2&£ £!o\ &X X3Ú*0\îŒÄ,+ rIps@ z(] Ži ! Y 2%£ o^ ¤!X X3Û*¢/!£ o¹ ,*X+Û*0+ðŒÄ,+ rIps@ zŽi    (ò+*Ú/.£ £!o_ ,*X+Í*0vòŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(` Ži Ži.!(¶rl p( o‘ r£3ps z (ó+*¢2*£ o¹ ,X+Û*0+ðŒÄ,+ rIps@ zŽi    (ô+*Ú2*£ £!o_ ,X+Í*0vòŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(` Ži Ži.!(¶rl p( o‘ r£3ps z (õ+*0FôŽi2(¶r»3p( o‘ sa z£ ob ,{c *X+º0$öŒÄ,+ rIps@ z  (ö+*0)ôŽi2*£ ob - X+Ù*0$öŒÄ,+ rIps@ z  (÷+*0UøŒÄ,+ rIps@ zsd  +'£ ob ,  {c oe +X Ži2Óof *0NúŒÄ,+ rIps@ zsg  + £  o¹ , oh +X Ži2Úoi *0fûŒÄ,+ rIps@ zsg sg  +'£   o¹ ,  oh + oh X Ži2Óoi oi sj *0EŽi2(¶r»3p( o‘ sa z£ o¹ ,£ *X+»0$üŒÄ,+ rIps@ z  (ø+*ÊŽi2*£ o¹ , £ (  *X+Î0$üŒÄ,+ rIps@ z  (ù+*0 ýŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ zŽi Ži.!(¶rl p( o‘ r£3ps zÀ Y 22£ £!s ¤ÀX X3Î*0êÿŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ zŒi,+ rç3ps@ zŽi Ži.!(¶rl p( o‘ r£3ps zŽi.!(¶rl p( o‘ rç3ps zj Y 2>£ £!£"sk ¤jX X3Â*0zŒE,+ rIps@ zŽi   ! Y 2=£À(» (¼ ¤ ¤!X X3Ãsl *0˜Œl,+ rIps@ zŽi   ! " Y2Q£j(m (n (o   ¤ ¤! ¤"XX3¯ sp *0JŒÄ,+ rIps@ zŽi    Y  2 YY £ ¤  X X3ä*0OŒÄ,+ rIps@ z(q  Ži Y 2£ or X X3ã*0OŒÄ,+ rIps@ z(s  Ži Y 0£ ot Y Y3ã*0˜ ŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(ï  Ži Ži.!(¶rl p( o‘ r£3ps zY0&£ £!o YY3Ú*0˜ ŒÄ,+ r•3ps@ zŒ\,+ r£3ps@ z(î  Ži Ži.!(¶rl p( o‘ r£3ps zY2&£ £!ou XX3Ú*0D ŒÄ,+ rIps@ z(s     0 £ ot Y Y3ç*0b ŒÄ,+ rIps@ z(s  XY(ú+  0(£ ot Y¤!Y Y3Ø*0dŒ\,+ rIps@ z(v  XY(û+  2*£!ow YX¤ X X3Ö*0(WŒÄ,+ rIps@ zŽi Y(ü+*0(WŒÄ,+ rIps@ zŽi Y(ý+*0hŒÄ,+ rIps@ zŽi -(šrIps z(x £  Y 2£ oy X X3ã*0 CWŒÄ,+ rIps@ zŽi -(šrIps zYY£ (þ+*0jŒÄ,+ rIps@ zŽi /*39£ £ (ÿ+ 1£  £ ¤ ¤ **(+(+*‚ŒÄ,+ rIps@ z(+*~ŒÄ,+ rIps@ z(+*0(ÛŒÄ,+ rIps@ z(+ (+*0(ÛŒÄ,+ rIps@ z(+ (+*0'ÛŒÄ,+ rIps@ z(+ (+*zŒÄ,+ rIps@ z(+*zŒŠ,+ rT ps@ z(Õ+*0@2(¶r»3p( o‘ sa z£ o¹ ,*X+À0+ðŒÄ,+ rIps@ zŽi    ( +*¶2*£ o¹ ,(Î *X+Ó0+ðŒÄ,+ rIps@ zŽi    ( +*~ŒÄ,+ rIps@ z( +*0EŒÄ,+rIps@ (Â+&( +  + £   ( + X Ži2ä*0KŒÄ,+rIps@ (Â+&(+  + £ o—  (+ X Ži2Þ*0lŒÄ,+rIps@ (Â+&Ži-(šrIps (Â+&+£   +£    (1+, +X Ži2Ý*0ƒŒÄ,+rIps@ (Â+&Ži-(šrIps (Â+&+£  o—  +,£   o— (+, +X Ži2Î*0lŒÄ,+rIps@ (Â+&Ži-(šrIps (Â+&+£   +£    (/+, +X Ži2Ý*0ƒŒÄ,+rIps@ (Â+&Ži-(šrIps (Â+&+£  o—  +,£   o— (+, +X Ži2Î*0ÁŒÄ,+rIps@ (Â+&¥Š ŒŠ,+rT ps@ (Â+&oq ( + oÝ , or ( + X+Ú-(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*G_¦0ÇŒÄ,+rIps@ (Â+&¥Š ŒŠ,+rT ps@ (Â+&oq (+ oÝ ,$ or o— (+ X+Ô-(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*Ge¬0ºÚŒÄ,+ rIps@ z/!(¶rH"p( o‘ rõ3ps z/!(¶rH"p( o‘ r *ps zXŽi1!(¶r0p( o‘ r *ps z   Y  2  X£ ¤  X X3æ*&£ **¤ *0‚ŒÄ,+ r5ps@ z/!(¶rH"p( o‘ ro3ps z/!(¶rH"p( o‘ r *ps z XY 2¤ X X3î*"o{ *"(µ+*"(+*&(+*&(+**(+*"(ð+*"(ñ+*(I *01Š{Ñ -"(¶rmp( o‘ r±3ps z{ *01Š{Ñ -"(¶rmp( o‘ r±3ps z{Ñ *.{Ñ þ*&(+*0Y{Ñ ,0 {Ñ þþ,{Ñ { -*Y+È(¶r 4p( o‘ rps z0T{Ñ ,E {Ñ { ob , {c (* +¾+³(+*:(, (+**(+*&(+*j0*Y( +æ04Š/!(¶rH"p( o‘ r *ps z(I (+*0u{Ñ ,d {% ,7 {% {Ñ {| { oT & +·(¶r-4p( o‘ r_4ps z{% -Õ*0(S  (+*0{{Ñ ,j {% ,= {% {Ñ {| { o\ &X +±(¶r-4p( o‘ r_4ps z{% -Õ*0([  (+*0¸!{Ñ 9• {% ,h {} ,^ {} {% {Ñ {~ {| { o    (€ 8ƒÿÿÿ(¶r-4p( o‘   rk4ps z{% -Õ{} -Í(+*V( (‚ ( +*0Ž"{Ñ ,v {% ,I {% {Ñ {| { oX X (ƒ +¥(¶r-4p( o‘ r_4ps z{% -Õ(!+*V(W („ ("+**(#+*0-#{Ñ ,# {Ñ { or +Õ*0${Ñ -*(q  ($+*0?%{Ñ , { {Ñ (%+*(¶rmp( o‘ r±3ps z0=&{Ñ ,. {Ñ { or   (* +Ê(+*0$(q  (, (* (&+*0x{Ñ ,f {% ,9 {% {Ñ {| { ou +µ(¶r-4p( o‘ r_4ps z{% -Õ*0'(î  ('+*0'(   0£ ot Y Y3ç*0 6)(s {Ñ 9! {Ñ {Ñ 9û{Ñ {Ñ {Ñ 9À{Ñ {Ñ {Ñ ,x {Ñ {Ñ {Ñ -E{  { { { ot ot ot þot *(ñ+  Ži   Y((+* { { { ot ot þot *{ { ot þot *{ þot **0 Q*{Ñ -"(¶rmp( o‘ r±3ps z(x (ñ+ Ži  Y Y£ ()+*0;+ (, (*    0! £ ot (* Y Y3ß*0e,{Ñ ,Q {Ñ {Ñ -!{ (”+(, (* (* *(s (ñ+ Ži Y(*+*(, (* *0{-(ñ+ (++ Ži Ži  .#(¶r-4p( o‘ r_4ps zY0(£ £!o YY3Ø*0ç.(ï {Ñ 9¹ {Ñ {Ñ 9\{Ñ {Ñ {Ñ 9Ï{Ñ {Ñ {Ñ :®{% 9¢{% {% 9{% {% {% ,v{% {% {% -_{| {| {|  {  {  {      o o o þo *(,+*{% ,í{% {% ,Û{% {% {% -Ä{| {| {  {    o o þo *{% 9tÿÿÿ{% {% :_ÿÿÿ{| {   o þo *{% :*ÿÿÿþo *0 s{Ñ ,a {% ,4 {% {Ñ {| {  þ(-+*(¶r-4p( o‘ r_4ps z{% -Õ*0y{Ñ ,g {% ,9 {% {Ñ {| { o_ ,  +·*(¶r-4p( o‘ r_4ps z{% -Ô*†{Ñ - {% -*(` (.+*&(/+*&(0+*0y{Ñ ,g {% ,9 {% {Ñ {| { o_ ,* +µ(¶r-4p( o‘ r_4ps z{% -Ô*†{Ñ - {% -*(` (1+*0F#{Ñ ,$ {Ñ { o¹ ,*+Ô(¶r»3p( o‘ sa z03#{Ñ ,) {Ñ { o¹ ,(  *+Ï*00/{Ñ ,& {Ñ { ob -+Ô **0M/{Ñ ,+ {Ñ { ob , {c *+Í(¶r»3p( o‘ sa z&(2+*&(3+*"(4+*"(5+*&(6+**(7+*&(8+*000{Ñ , {Ñ {Ñ -*(ñ+ (9+(ð+*0/0{Ñ , {Ñ {Ñ -*(ñ+ (:+(ð+*"(;+*"¥Š*0K#{Ñ ,) {Ñ { o¹ ,*X+Ï(¶r»3p( o‘ sa z0 1 (<+*08#{Ñ ,. {Ñ { o¹ ,(Î *X+Ê*0 1 (=+*0T2¥Š oq ( + oÝ , or ( + +à Þu, oÜ &Ü&Ü**90Z3¥Š oq (+ oÝ , or o— (+ +Ú Þu, oÜ &Ü&Ü*0?0™2¥Š ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or oÝ ,or  (/+, +Ü+Ù Þu, oÜ &Ü&Ü*+S~0¶4¥Š ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or  o—  oÝ ,/or o— (+, +Ì+É Þu  ,  oÜ &Ü&Ü*+p›0™2¥Š ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or oÝ ,or  (1+, +Ü+Ù Þu, oÜ &Ü&Ü*+S~0¶4¥Š ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or  o—  oÝ ,/or o— (+, +Ì+É Þu  ,  oÜ &Ü&Ü*+p›0¥¥Š ŒŠ,+rT ps@ (Â+&oq ( + oÝ , or ( + X+Ú-(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*+_Š0«¥Š ŒŠ,+rT ps@ (Â+&oq (+ oÝ ,$ or o— (+ X+Ô-(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*+e.þ(>+*N(ñ+( +(ð+*:(?+(… *0=( ,rp+  on Ú 2op of &X X3è*0>( ,rp+  on Ú 2op (@+&X X3ç*085( ,rp+ on s‡ sŒ(€þoÅ *085( ,rp+ on s‡ sŽ(þoÅ *085( ,rp+ on s‡ s(€þoÅ *0Z6/!(¶rH"p( o‘ r *ps zs‡  Ú  2 o: oÉ  X X3çþoÅ *0m6/!(¶rH"p( o‘ r *ps z( ,rp+ on s‡  Ú  2oÉ  X X3íþoÅ *ªon 2*op oˆ , Ö+Ù*0"8( ,rp+   (‡*ªon /op oˆ ,*Ö+Ù*0"8( ,rp+   (‰*j( ,rp+on *V(T }r}s*0Ã{s{ro‰ oU *V(Š }t}u*0Ã{u{t(A+oU *V(T }v}w*0Ã{w{vo‹ oÉ *6sŒ (B+*:s (C+*"(D+*&(E+*2(Ž ¥Š*6s (B+*04Š/!(¶rH"p( o‘ r *ps zs (B+*0S9ŒŠ,+ rT ps@ zoq oÝ ,or o˜ &+è Þu , oÜ &Ü&Ü&*:0@:ŒŠ,+ rT ps@ zoq (F+ Þu , oÜ &Ü&Ü* (0Z;ŒŠ,+ rT ps@ zoq  oÝ ,or (G+&X +ã Þu , oÜ &Ü&Ü&*#A0\<ŒŠ,+ rT ps@ zoq  - oÝ +,or o¹ +à Þu , oÜ &Ü&Ü*&D0\<ŒŠ,+ rT ps@ zoq  , oÝ +,or o¹ +à Þu , oÜ &Ü&Ü*&D0£>ŒŠ,+ rw4ps@ zŒÅ,+ r‡4ps@ zoq o’ oÝ , oÝ +,or o“ (Î+&+Õ Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü&*;/j4S‡:s” (C+*>s• (H+*’ŒŠ,+ rT ps@ zs– (I+*&(J+*’ŒŠ,+ rT ps@ zs— (K+*’ŒŠ,+ rT ps@ zs˜ (K+*,+ rw4ps@ zŒÅ,+ r‡4ps@ zs™ (L+*’ŒŠ,+ rT ps@ zsš (K+*ꌊ,+ rw4ps@ zŒÅ,+ r‡4ps@ zs› (M+*0VŒŠ,+ rw4ps@ zŒÅ,+ r‡4ps@ zŒ‡,+ r—4ps@ zsœ (N+(O+*ŽŒ ,+ rT ps@ zs (B+*0c?ŒŠ,+ rT ps@ zoq  þþ, oÝ +,or ob +Ù Þu , oÜ &Ü&Ü*-K0CôŒŠ,+ rT ps@ z(P+ ,{c *(¶r»3p( o‘ sa z0s@ŒŠ,+ rT ps@ zoq  þþ, oÝ +,or  o¹ , (  +Ï+Ì Þu, oÜ &Ü&Ü*:X0C ŒŠ,+ rT ps@ z(Q+ ,{ *(¶r»3p( o‘ sa z0 [AŒŠ,+ rT ps@ z/!(¶rH"p( o‘ r *ps z-(©+*þ sž *0ŽCŒŠ,+ rT ps@ zuÄ ,  Žiþ*uõ ,  {Ñ þ*u‹,oŸ þ*oq oÝ þÞu, oÜ &Ü&Ü*cqzŒŠ,+ r§4ps@ z(R+*0”DŒŠ,+ rT ps@ zuÄ , Ži*uõ ,  o{ *u‹,þoŸ *oq oÝ , X+îÞu  ,  oÜ &Ü&Ü*\w0UEŒŠ,+ rT ps@ zoq  oÝ ,or (S+ +ç Þu , oÜ &Ü&Ü*=0sFŒŠ,+ rT ps@ zoq oÝ -(™rT ps zor oÝ ,or (T+ +ç Þu , oÜ &Ü&Ü*=[6s¡ (C+*ꌊ,+ rw4ps@ zŒŠ,+ r‡4ps@ zs¢ (U+*:(V+(W+*0]GoÝ oÝ 3+ ,+ ,*-+þ,*or or (ÿ+ , *+£0ˆIŒŠ,+ rw4ps@ zŒŠ,+ r‡4ps@ zoq oq (X+ Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü*;P49m"¥Š*0‰JŒŠ,+ rT ps@ zuõ , *uÄ ,  (ð+*oq (I oÝ ,or ( +ä(µ+ Þu, oÜ &Ü&Ü*@-mŽŒÄ,+ rT ps@ zs£ (B+*0‘KŒŠ,+ rT ps@ zuÄ , o ¥Ä*uõ ,  (ñ+*oq sg oÝ ,or oh +æoi Þu, oÜ &Ü&Ü*J+u6s¤ (B+*0++ŒŠ,+ rT ps@ zþ s¥ *0++ŒŠ,+ rT ps@ zþ s¦ *0 ,LŒŠ,+ rT ps@ zþ!s§ *0@oÝ ,or o¹ ,*X+Ú(¶r»3p( o‘ sa z0HMŒŠ,+ rT ps@ zoq   (Y+ Þu, oÜ &Ü&Ü*-¶oÝ ,"or o¹ ,(Î *X+Õ*0HNŒŠ,+ rT ps@ zoq   (Z+ Þu, oÜ &Ü&Ü*-J{£ X]£ *0 KŠŒŠ,+ rT ps@ z0!(¶rH"p( o‘ r·4ps zs¨ *0pPo© 2e{ª ,+oq (« (¬ (­ {ª o® -* {¯ oÝ ,or þoh *oÜ (¬ (­ **0Io© /o° Xs± (² *([+o© /o° Xs± (² **0>Ro³ {ª ,$ {´ ,{´ {¯ ¥oÜ +(­ *0HTŒŠ,+ rT ps@ zsg sµ s¶ (\+ s· s¸ ¥Š*ŽŒŠ,+ rT ps@ zs¹ (B+*:sº (]+*0 <VŒŠ,+ rT ps@ zþ þ¼þ s» *0 =XŒŠ,+ rT ps@ zþ þŸþ s¼ *’ŒŠ,+ rT ps@ zs½ (D+*ŽŒŠ,+ rT ps@ zs¾ (D+*’ŒŠ,+ rT ps@ zs¿ (^+*0KYoq ( + oÝ , or  ( + +â Þu, oÜ &Ü&Ü*(00QZoq (+ oÝ , or o—  (+ +Ü Þu, oÜ &Ü&Ü*.60™[ŒŠ,+rT ps@ (Â+&oq ( +  oÝ ,or ( + X +Ü -(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*$Z~0Ÿ\ŒŠ,+rT ps@ (Â+&oq (+  oÝ ,"or o— (+ X +Ö -(™rT ps (Â+&+ (+ Þu, oÜ &Ü&Ü*$`„0YŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or oÝ ,or  (1+, +ß+Ü Þu, oÜ &Ü&Ü*$Pt0¬]ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or o— oÝ ,-or o—  (+,  +Î+Ë Þu, oÜ &Ü&Ü*$m‘0YŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or oÝ ,or  (/+, +ß+Ü Þu, oÜ &Ü&Ü*$Pt0¬]ŒŠ,+rT ps@ (Â+&oq oÝ -(™rT ps (Â+&+or o— oÝ ,-or o—  (+,  +Î+Ë Þu, oÜ &Ü&Ü*$m‘0++ŒŠ,+ rT ps@ zþ sÀ *0 ,+ŒŠ,+ rT ps@ zþ sÁ *0 ,+ŒŠ,+ rT ps@ zþ s *0°^ŒŠ,+ rw4ps@ zŒÅ,+ r‡4ps@ zoq o’ , oÝ +, oÝ +,or o“ (Ç++Ë Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü*;=x4a•0°^ŒŠ,+ rw4ps@ zŒÅ,+ r‡4ps@ zoq o’ - oÝ +, oÝ +,or o“ (Ç++Ë Þu, oÜ &Ü&Ü Þu, oÜ &Ü&Ü*;=x4a•0W:ŒŠ,+ rT ps@ zoq oÝ , or Þ&(™rT ps zu , oÜ &Ü&Ü*!?0kFŒŠ,+ rT ps@ zoq oÝ ,or oÝ , or +î Þ&(™rT ps zu , oÜ &Ü&Ü*5S0…_ŒŠ,+ rT ps@ zoq oÝ ,4or oÝ ,!(¶rÍ4p( o‘ rT ps z Þ)(™rT ps zu, oÜ &Ü&Ü*Lj:(à }Ä *V{Ä oÅ þoÌ *V(à }Æ }Ç *N{Æ {Ç (_+*:(à }È *:{È (`+*V(à }É }Ê *j{É Y(Î {Ê (`+*V(à }Ë }Ì *j{Ë {Ì o= þoÍ *r(à }Î }Ï }Ð *–{Î {Ï o= {Ð oÑ þ(a+*:(Ó }Ô *:{Ô (b+*:(Õ }Ö *:{Ö (c+*:(Õ }× *:{× (d+*:(Ø }Ù *>{Ù (e+*:(Õ }Ú *:{Ú (f+*(Û *&sý *(Ü *0`(Ý (Þ sß *:(à }à *J{à oË (g+*ò}á }â }ã }ä }å }æ }ç (è *0 ;a{æ YE +8ã8Ã8°8ò{â oÌ }ã }æ {á Y(Poé }å }æ {å oÝ ,q{å oê }ä {ã oÝ -+(¶r÷4p( o‘ sÇ ,¥+z&+}æ {ã oà }ç *}ä 8‚ÿÿÿ}æ {å (h+}å }æ {ã (i+}ã }æ þ }ç *0­b {æ YE+8ˆ{æ E ++5++++)}æ {å (h+}æ {ã (i+}æ þ }ç  Þ t   Þ&8^ÿÿÿþ,z*t ê{æ E +++ +++****"{ç *0 –{á {â þ së *:(à }ì *v{ì oí Œ¡¥:(j+*:(î }ï *J{ï oÌ (k+*V(î }ð }ñ *0&e{ð oÌ (k+ {ñ sò (ó *:(à }ô *J{ô sõ ¥*:(à }ö *J{ö s÷ ¥*Ò}ø }ù }ú }û }ü }ý (è *0å–{ü YE +8Š88¦s© }ú {ù oÌ }û }ü {ú {£ {ø /{û oÝ +,5{ú {ú {£ X(¥ }ü {û oà }ý *+¦}ü {û (i+}û }ú }ü þ }ý *0’b {ü YE+8m{ü E + ++++}ü {û (i+}ü þ }ý  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{ü E + + +++***"{ý *0 –{ø {ù þ sþ *Ò}ÿ } } } } } ( *0–{ YE +8»8‡8Ð{ÿ oÌ } } { oÝ 9†{ oà s } { oÝ ,Y{ oà } } { {¯ { s } *{ { (² þ } +š} +} { (i+} } } *0f { YE+8h{ E + +!+ +++} { (i+} }  Þ t    Þ&8~ÿÿÿþ,z*Tp Ò{ E + ++ +++***"{ *0 –{ÿ þ s *ò} } } } } } } (è *0–{ YE ++=8¥8œ8Á{ s } } { {¯ } *{ o= } } { oÝ ,I{ { { {¯ { o (l+(² } { {¯ } *+ª} { (m+} } } þ } *0œb { YE+8w{ E ++$+ +++} { (m++} þ }  Þ t   Þ&8oÿÿÿþ,z*c ê{ E +++ +++****"{ *0 %–{ { { þ s *0D} } } } } } } } ( *0 §h{ YE +8F88p{  } { Ys© } s© } { oÌ } } { oÝ 9â{ { {£ { oà ¤ { { {£ X{ ](¥ { {£ -v} { /(›r *ps z{    { Y  2) { { { (n+¤  X X3×} *8-ÿÿÿ{ { {£ Y(¥ 8ÿÿÿ} { (i+} } } } } } *0‡f { YE++e{ E + ++++} { (i+} }  Þ t    Þ&8„ÿÿÿþ,z*Qj Æ{ E + + +++***"{ *0 { { s *r( } } } *0 Bj { (o { { { (o+ Þ,{ (p &Ü&Ü*),V(‡ } } *0=k { (o { { (p+ Þ,{ (p &Ü&Ü*$':(à } *>{ þoÌ *V(H }! }" *0_n{! oõ s#  {" o$ s% (& (' , oæ *sá {"  o( oæ *() *>(* o+ *(, *0'o(- {. (* ¥(q+s/ *V(0 }1 }2 *0Fq(3 s4 {1 s5 {2 (r+s6 ¥Ó(s+s7 ¥Ó(t+*ò}8 }9 }: }; }< }= }> (è *0#r{= YE +8È8š8ä(? s@ }9 {8 oÌ }< }= {< oÝ 9„{< oà }: {: sÅ }; {9 {; oA -*{9 {; oB }= {: }> *+þÈ}; þ }: 8lÿÿÿ}= {< (i+}< }9 }= þ }> *0’b {= YE+8m{= E + ++++}= {< (i+}= þ }>  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{= E + + +++***"{> *0 +s{8 þ þÈþ sC *0D}D }E }F }G }H }I }J }K (è *0.t{J YE +8Ó8¥8ï(3 sL }F {E oÌ }I }J {I oÝ 9{I oà }G {D {G oõ s# }H {F {H oM -*{F {H oN }J {G }K *+þÌ}H þ }G 8aÿÿÿ}J {I (i+}I }F }J þ }K *0’b {J YE+8m{J E + ++++}J {I (i+}J þ }K  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{J E + + +++***"{K *0 1u{D {E þ þÌþ sO *V(? }P }Q *0!ß{Q (F+ {P (u+¥*:(? }R *0ß{R (F+ (v+¥*V(H }S }T *0Ev{S oõ s#  {T oU ,{T XoV *{T oV *(W *04(X {Y (Z s[ *V(\ }] }^ *05x(? s_ {] s` {^ (w+sa ¥ã(x+*Ò}b }c }d }e }f }g (è *0ð–{f YE +8œ8Œ8±{c oÌ }d }f þ s }e {d oÝ ,/{e {d oà (² {b {e {¯ oî +,}f {e {¯ }g *+£}e }f {d (i+}d }f þ }g *0’b {f YE+8m{f E + ++++}f {d (i+}f þ }g  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{f E + + +++***"{g *0 –{b {c þ sh *ò}i }j }k }l }m }n }o (è *0Fa{n YE +8î8¤8ß8ý{j oÌ }k }n {i (Poé }m }n {m oÝ ,T{m oê }l {k oÝ -+(¶r÷4p( o‘ sÇ ,¥+z&+}l +Ÿ}n {m (h+}m {k oÝ ,}n {k oà }o *+Ö}n {k (i+}k }n þ }o *0¯b {n YE+8Š{n E ++7+ + ++++}n {m (h+}n {k (i+}n þ }o  Þ t   Þ&8\ÿÿÿþ,z*v’ ê{n E +++ +++****"{o *0 –{i {j þ sp *ò}q }r }s }t }u }v }w (è *0)–{v YE +8Õ8µ8ê{r oÌ }s }v þ s }t s( }u {s oÝ ,v{t {s oà (² {u {  ,+{q {t {¯ oî þ,,{u (! }v {t {¯ }w *8ƒÿÿÿ8}ÿÿÿ}u }t }v {s (i+}s }v þ }w *0’b {v YE+8m{v E + ++++}v {s (i+}v þ }w  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{v E + + +++***"{w *0 –{q {r þ sx *"sy *>sz (C+*Rs{ s| (y+*03z{} ,* {} {~ oã Þ (_&Ü &** $ 0f|{ oÝ ,O{ o“ Œ! u{ ,+Í{€ oÜ  þ!oq }€ þ(z+*o *0-~{€ oÝ ,{€ or }‚ * þ({+*fsƒ s„ s… ¥‡*6s† (C+*0,€{  - (|+&+{‡ ,{ˆ *(}+*J{  -(! **0%‚s( s‰ sŠ (~+(+*Ns‹ sŒ ¥Š*>s ¥÷*&}Y *"{Y *0„sŽ s **o &**þ(>+*.þ(€+*F}’ o &*Z{’ {Y þo‘ *v{’ {Y {Y þo *F}• o &*B{• þo– *N{• o– ¥ *.s— €˜ *( *~˜ *&*2s™ ¥*Fs™ ¥¥ *r(à }š }› }œ *f{š {› {œ (+*V(+ } }ž *Ž{ oî ,{ž oõ (/ **(H *0…Œ  u ,  oÜ **bo &}Ÿ }  *0X‡{  oÅ oÌ u™ , {Ÿ o Þ%{Ÿ (‚+ Þt {Ÿ oã &þ*?@J¥oÌ ¥ *þo &o= }¡ s™ ¥}¢ }£ }¤ (¥ }¦ *0ˆ}¤ {¢ ,{¢ oÜ  Þ }¢ &Ü Þ] ÞY{¡ ,{¡ oÜ  Þ }¡ &Ü Þ- Þ){¦ (ƒ+(_ Þ(¥ }¦ &Ü&Ü&Ü&*@! >N bx5,a),4Y0*z{£ - (|+&+{¤ ,(„+*{§ *R{¦ (¨ }¦ *"o© *6o© Œ *0*Š{£ - }£ +{¤ ,* þ(…+*n(¶r5p( o‘ s zJ{¤ -oª **:(‡ }« *0&–{« Œ ,{« þ oÜ **V(? }¬ }­ *v{­ {¬ o® Œ§¥*:(à }¯ *J{¯ s° ¥*ž}± }² }³ }´ o &*R{³ {´ (†+*f{³ {´ (†+Œ*0\‹{³ (e{± oS Þt  {´ (µ þ,{´ {² (¶ (µ *{´ (µ *n(¶r5p( o‘ s z *’(¸ }¹ }º }» }¼ *~{¹ {º {» {¼ s½ *:(? }¾ *"{¾ *:(¿ }À *B{À oX *b}Á } o &*R{Á { o  &*~}à }Ä }Å o &*r%-p*>{à o  &*>{Ä o  &*0-–{Å sÆ oÇ {à o  &{Ä sÈ *0ŒoÉ , {¼ oã &**0>oÊ oË  u-u-t {Ì (Í **(‡+*0 ‘u ,  {Î *sÏ ¥™*0 “u ,  {Ð *sÑ ¥*.sÒ €Ó *( *~Ó **uþ*sÔ **uþ*sÕ **uþ*0• u,+ u,+*(Ö *:(Ö }× *{× *:(Ö }Ø *{Ø *:( }Ù *:( }Ú *2{Ú {× *:( }Û *2{Û {Ø *bo &}Ü }Ý *"{Ü *"{Ý *0/—u¾ , {Ü sÞ +à sß ¥:*"sà *>{Ü þoá *V(î }ã }ä *z{ä {Ý oå {ã (ó *:(æ }ç *0b™{ç {Ü (ˆ+  u- u-{ç {Ý oå (è **t {Ø {ç {Ý (ó (è *~o &}é }ê }ë *"{é *0.š{ê -(¶r?5p( o‘ sÇ z{¶ *J¥oà Œ *0}œ{ë -s{é (ˆ+ u-u-,}ê }ë *t {× (ê }ê *t {Ø }é ¥ þoÝ **n(¶r5p( o‘ s zb{ë -{é þ(‰+**Fo &}ì *"{ì *"sí *0{ì sî (– *:(æ }ï *¾{ï {ì oÝ ,{ï {ì oà (ð *(ñ *:(‡ }ò *:{ò oÜ *n(¶r×0p( o‘ sÇ zn(¶r1p( o‘ sÇ z"só *0gŠoÝ -!(¶r÷4p( o‘ rps z/!(¶rH"p( o‘ rps z- þor *Y+™:sô ¥~*0 s© sõ ¥~*>sö ¥'*0,ž{  - (|+&+{÷ ,{ *(Š+*0Ÿs( s? sø *ò{  - (! +oÝ ,or o¹ ,*+Æ*0`s( sù *0 s< sú ¥~*0W{£ 3 (|+&+{£ þ3 (‹+&+{û ŒÇ,+sü (Œ+(ý {û oÁ *0J¢, {¯ /{¯ sþ ¥™*-ý+{¯ s© sÿ  s *0 {÷ , ( **0&ž (o (+ Þ, (p &Ü&Ü*0,ž{  - (|+&+{÷ ,{ *(Š+*J{  -(! **0!£(Ž+(+ Þ ( &Ü&* 0,¥s( s? o± (  s s *&s *F} o &*J{ oß (p+*J{ oß ¥*>{ þoÝ *n(¶r5p( o‘ s z0¦{ u ,  þoÜ **Fo &} *0z{ - (|+&+(„+*0z{ - (|+&+(+*Z{ - } +*n(¶r5p( o‘ s z *Šsû€ sû€!sû€"*:( }*~ **(þ*~!**(þ*~"**(þ*{*Vo &(ü} *Þ{ (E (|+&+ (‹+&+{ *"o  *6o  Œ *¦(þ} | o  ,*(} *n(¶r5p( o‘ s z*þo  *b}  }  o &*º{  oÝ ,{  {  o o  **>{  þoÜ *~} } } o &*0Q{ { {£ X(¥ { oÝ ,){ { {£ { o (‘+ **>{ þoÜ *~} } } o &*0O§{ oÝ { oÝ ,+,){ { o { o (’+ **0#£{ oÜ  Þ{ oÜ &Ü&*ž} } } } o &*R{ { (“+*f{ { (“+Œ *0€{ {  -{ (! +{ ( { { þ,{ oÝ +,${ { { o o ( +¹{ { þ*n(¶r5p( o‘ s z>{ þoÜ *~} } }  o &*0(z{  {  - (|+&+{ þoà *0+z{  {  - (|+&+{ oà Œ *0/©{ { {  { { {  (”+*n(¶r5p( o‘ s z>{ þoÜ *b}! }" o &*0L«{! {" { o# ,/ {$ (þ {$ (ÿ   {" (  ** *V(¢ }% }& *j{% {& {£ þo' *ž}( }) }* }+ o &*j{( {* {+ (•+*~{( {* {+ (•+Œ *0¦¬{* {£ þ3*{* {£ 3{* (¥ {+ (, *{* {£ ÿÿÿ3(¶rw5p( o‘ sÇ z{* {£ {) 3*{* {£ X {* (¥ {+ (, *n(¶r5p( o‘ s z *¾}- }. }/ }0 }1 o &*R{/ {0 (–+*f{/ {0 (–+Œ *0‹­{/ (ê{1 {2 ,l {T {- o Þ"t {. {0 {1 (—+þ ,{0 ( *{. {0 {1 (—+**'8"n(¶r5p( o‘ s zj{. {1 (˜+þ(™+*šo &}3 }4 {3 Ži}5 *Ú{4 2&{4 {5 2(„+*{3 {4 £ *(š+*"o6 *º{4 {5 2*{4 X}4 {4 {5 þ*6o6 Œ *n(¶r5p( o‘ s z *bo &}7 }8 *"{7 *6{7 Œ *R{8 ,*}8 *n(¶r5p( o‘ s z *b}9 }: o &*>{: þoà *R{: ¥ þoß *>{: þoÝ *n(¶r5p( o‘ s z0#£{: oÜ  Þ{9 oã &Ü&*b}; }< oè &*"{< *0®q {< oÝ ,**0$£{< oÜ  Þ{; oÙ &Ü&**>{< þoà *(T+*0°(= s> *F}? o &*F{? þo@ *sA *"sB *sC *0²(D sE **o &**þ(>+*.þ(€+*F}F o &*B{F þ(›+*.þ(€+**o &*>Œ þo? *&(œ+*b}G }H o &*B{G þoI *F{H þoJ *0,Š,{ *(¶r­5p( o‘ rÓ5ps zþ*&þþ*",**0 , { þ(S+**0 , { þ(”+**0 , { þo¹ **0 , { þo¹ **0 , { o˜ &**0H, { o— ( **0 , { þob **0! ,  %{ ¤ * *0 , { (I ( *(I **(æ **(æ *&oå *&oå **(K *.(L *0UŠ/!(¶rH"p( o‘ rps z/!(¶rH"p( o‘ rá5ps zsM *Æ-þ+,(+*(¶rå5p( o‘ s z0I´(ž+  ÖÚ 20ÖÚ 2(L X X3èX X3Ð*0Q´(ž+  ÖÚ 28ÖÚ 2 (Ÿ+(L X X3àX X3È*2( +*2(¡+*0‡µŒP,+ rIps@ z(æ (æ oå oå ÖÚ2=  ÖÚ2(K o˜ &XX3áXX3Ã*0‹µŒP,+ rIps@ z(æ (æ oå oå ÖÚ2A  ÖÚ2#(K (¢+&XX3ÝXX3¿*0BŒP,+ rIps@ zoå oå (æ (æ sO (£+*0BŒP,+ rIps@ zoå oå (æ (æ sP (£+*0AŒP,+ rIps@ zoå oå (æ (æ sQ (¡+*0 G,ŒP,+ rIps@ zoå oå (æ (æ sR (¡+*0 ¶ŒP,+ rT ps@ zŒP,+ r5ps@ zoå /!(¶r0p( o‘ r6ps zoå /!(¶r0p( o‘ r-6ps zoå /!(¶r0p( o‘ rG6ps zoå /!(¶r0p( o‘ ra6ps zÖ(æ oå Ö1!(¶r0p( o‘ r{6ps zÖ(æ oå Ö1!(¶r0p( o‘ r‰6ps zÖ(æ oå Ö1!(¶r0p( o‘ r{6ps zÖ(æ oå Ö1!(¶r0p( o‘ r‰6ps z Ú 2@Ú 2)ÖÖÖÖ(K (L X X3×X X3À*V(S }T }U *r{T {U (V þo *V(S }W }X *0 {W {X (V þ(¤+*:(S }Y *>{Y (Z *r(S }[ }\ }] *v{[ {\ Ö{] Ö(Z *0F·£  £ ¤ ¤ ,!£! £!¤!¤!**0b¸£  (¥+  Y  2. £ o¬ / (¥+X + X X3Ò(¥+*0 H,/@Y[X (¦+ Y(§+X+¹*0%¹,+    (§+*0Mº,+ ,9,ŽiŽiþþ+,sU z,+(T+ ŽiY(¨+*sŒ z0Cz,+ ,/,ŽiŽiþþ+,sU zŽiY(T+(¨+*sŒ zj,(T+(¨+*sŒ z0&{,,+(T+ (¨+*sŒ z" *0IÙ/(›r *ps (Â+&+   Y 2oQ ¤ X X3è*0µ»Ži  Ži’  +Zo^ /+ Žiþþ,#(¶r—6p( o‘ r·6ps z £ ¤  ¤’X Ži2  +2£’.#(¶r—6p( o‘ r·6ps zX Ži2È*0C¼Ži /*Ži!  +£ o— ¤!X Ži2â(©+(ª+*0WŽi /*(«+(+*0澎iV  + ¤VX Ži2î(©+ (¬+o ¥Ä (­+ Ži<”£!/ 3+£!o_ þ+, X+Í Y 2$  £V£ ¤  X  X3ÜY2Y(®++ 8dÿÿÿ*0>¼Ži /*Ži!  +£ o— ¤!X Ži2â(¯+*0-WŽi /*(«+,o ¥Ä(°+*(±+*0*#{Ñ ,! {Ñ { o˜ &+×*0E¿{% ,1 {% {| o— (  }Ñ +Ç(I }Ñ *0^À{Ñ ,P {Ñ {Ñ -{ o— (, (* *{Ñ { o— (* (²+ *(, *0K¿{% ,7 {% {| o` (  }Ñ X+Á(I }Ñ *0kÁ{Ñ ,] {Ñ {Ñ -{ (³+(, (* *{Ñ { (] o^ (*  (´+*(, *0“Â{% ,w {} ,J {} {% {~ {| oa ( }Ñ  +¤(¶r-4p( o‘ rÉ6ps z{} -Õ(I }Ñ *0ŽÃ{Ñ ,x {% ,K {% {Ñ {| { (U oV (ƒ  (µ+*(¶r-4p( o‘ rÉ6ps z{% -Õ(„ *0.#{Ñ ,# {Ñ { o¹ ,+×**0.#{Ñ ,# {Ñ { o¹ ,*+Õ*0)#{Ñ , {Ñ { ( +Ù*0RÄ{Ñ ,H {Ñ {Ñ ,7{Ñ {Ñ { {  (I ( ( (¶+***09Å{Ñ ,( {Ñ { (  }Ñ +Ð}Ñ *0<#{Ñ ,( {Ñ { ob (·++Ð(, }% *0OÆ{Ñ ,A {Ñ {Ñ -{ þob *þ! (* (¸+oc *(, *0OÅ{Ñ ,? {Ñ { o¹ ,(  }Ñ +Ä+¹}Ñ *0gÅ{Ñ ,] {Ñ {Ñ -{Ñ { o¹ ,**{Ñ { o¹ ,( (¹+ *+›*00#{Ñ ,' {Ñ { oZ &X+Ñ*0Ç(Y  (º+*02É{d ," {d {e (»++Ö}Ñ *0^Ê{d ,P {e {Ñ ,5{e {d {Ñ { (  (¼+*{d +¨(I *0XËuõ , *oq (I oÝ ,or ( +è (µ+ Þu, oÜ &Ü&Ü*'=0eÌ(½+ {d ,O {d {d ,7{d {d {d -{e {e  (+*(¾+*{e *(I *06Í/%oQ ( }Ñ X+Ö(I }Ñ *09Í/(›r *ps z-(I *oQ ( (¿+*0cÅ{Ñ ,L {Ñ { ( o¹ , }Ñ +Á }Ñ  +¬}Ñ }Ñ *0QÅ{Ñ ,@ {Ñ { ( o¹ , }Ñ +Ä (À+ *}Ñ *0QÅ{Ñ ,@ {Ñ { ( o¹ , (À+ * }Ñ +¸}Ñ *0„Å{Ñ ,t {Ñ {Ñ -({Ñ { o¹ ,s *s *{Ñ { ( o¹ , (Á+s * (Â+ s *s *0pÎ{È ,Q {È {É (» {É (¼ ( (* }Ñ }% +§(I }Ñ (, }% *0aÎ{È ,I {È {É (» {É (¼ ( (* (Ã+sf *(I (, sf *0¡Ð{g ,w {g {h (m {h (n {h (o (  (* (ƒ }Ñ }% }} 8ÿÿÿ(I }Ñ (, }% („ }} *0Ð{g ,d {g {h (m {h (n {h (o (  (* (ƒ (Ä+si *(I (, („ si *0Ñ{Ñ ,s {% ,F {% {Ñ {| { s ( }È  +¨(¶r-4p( o‘ rÉ6ps z{% -Õ(! }È *0‚Ñ{Ñ ,l {% ,? {% {Ñ {| { s (  (Å+*(¶r-4p( o‘ rÉ6ps z{% -Õ(! *0¿Ò{Ñ 9˜ {% ,k {} ,a {} {% {Ñ {~ {| { sk (j   }g   8€ÿÿÿ(¶r-4p( o‘   rÑ6ps z{% -Õ{} -Í(k }g *0­Ò{Ñ 9Œ {% ,_ {} ,U {} {% {Ñ {~ {| { sk (j    (Æ+ *(¶r-4p( o‘   rÑ6ps z{% -Õ{} -Í(k *0/#{Ñ ,& {Ñ { ¤ X+Ò*0Óo{    (Ç+*0/ÔŽi (I Y   0 £ ( Y Y3è*&(È+*0)#{Ñ , {Ñ { ( +Ù*0vÕ{Ñ ,j {Ñ ,V { { {Ñ {Ñ  (ÿ+1( +­ ( +˜ (É+* +ôÂ(ÿ+1(I ( ( *(I ( ( *0¼/þ+,;(ÿ+1(I ( ( ( *(I ( ( ( *151(I ( ( ( *(I ( ( ( *1(I ( ( ( *(I ( ( ( *0 k,(ÿ+ (ÿ+ 1þ+,;(ÿ+1(I ( ( ( *(I ( ( ( *(Ê+*0Í{Ñ , {Ñ {Ñ þ**0ËÖ<ž{l {Ñ 9 {Ñ {Ñ ,r{Ñ { { {Ñ 3(m  (Ë+*{Ñ ,*{ {Ñ (m  (Ì+*rÙ6ps‹ zrÙ6ps‹ zc  (Í+ Y(Í+(I (Î+*0 Ø(Ï+,*sn o{ (Í+*fso þp sq sr *6ss (Œ+*.ot þ*"ot *"oÁ *"oÁ *"oÁ *:}u ( *B{u þo¬ *:(¢ }v *"{v **"(8+*"Œ *z"s‹ *šoG Ð (B oc , o‹ (6 **þ*&(1+*&(/+*&(.+*&(0+*.þ(2+*2(2+þ*.þ(Ð+*:(1+,**:(1+,**"s‹ z:s (Ñ+*6s@ (Ñ+*6sÇ (Ñ+*2rå6psÛ z2rC7psÛ z"(¼ *"(» * *"s< *&(x *"{y *.þo— *2þ(+*6þ(!+*.þo— *2þ(+*6þ(!+*&sz *&s{ *&(º *6,{ **2r¡7psÛ z.þ(6+*2rpsÛ z.þ(7+*2rÔpsÛ z2rppsÛ z2r8psÛ z2ry8psÛ z2rá8psÛ z2rK9psÛ z2rµ9psÛ z2r:psÛ z2r‰:psÛ z0DÙ{Ñ ,: {Ñ { {Ñ -*(I ( (Ò+}Ñ **B{£ X(¥ *B{£ Y(¥ *2ró:psÛ z2rO;psÛ z2r­;psÛ z2r <psÛ z2rk<psÛ z2rË<psÛ z2rª psÛ z6ŒV¥ *V(< (= s *.#ð*.#øÿ*"€*"Àÿ*2r)=psÛ z2r‰=psÛ z2rç=psÛ z2rG>psÛ z2r§>psÛ z2r ?psÛ z2rk?psÛ z0<ÚŒ  ,+u… , (k ¥cþo * þoÅ *rp*2rË?psÛ z02Û Œ (o o| Þ,Œ (p &Ü&Ü*0,Üo— ÞŒ , þ oÜ &Ü&Ü* 2Ð (B *2r'@ps‹ z0>Ð (B oM , þoN **"þ **þ(Ó+*.þ(Ô+**N(Õ+s} (Ö+*R(+s~ (×+**þ(Ø+**þ(Ù+**þ(Ú+**þ(Û+*.þ(Ü+**þ(Ý+**þ(Þ+**þ(ß+**þ(à+**þ(á+**þ(â+**þ(ã+**þ(ä+**þ(å+**þ(æ+**þ(ç+**þ(è+**þ(é+**þ(ê+*.þ(ë+*0l €39X (Õ+s (ì+ /(Õ+ rÔpsÛ z rÔpsÛ z(Õ+s€ (ì+ /(Õ+ rÔpsÛ z*V(9 } }‚ *n{‚ { oƒ þo„ *V(… }† }‡ *n{† {‡ o® þoˆ *(‰ *.þ(í+*(7 *.þ(î+*(‰ *.þ(ï+*(‰ *.þ(ï+*n(¶r×0p( o‘ sÇ zn(¶r1p( o‘ sÇ z.#àÁ*.#ÀÿÿÿßA*¾#àÁ5#ÀÿÿÿßAþþ+, (Š þ**09§3 s‹ ¥¹*þ ,þ+þþ sÏ¥¹*06ÞsÍ -!(¶r•@p( o‘ r·@ps zsÕ*0I§3 sŒ ¥w*þ ,!þ+ !þþ sÚ¥w*06àsØ -!(¶r•@p( o‘ r·@ps zsà*0I§3 s ¥y*þ ,!þ+ !þþ så¥y*06âsã -!(¶r•@p( o‘ r·@ps zsë*09§3 sŽ ¥{*þ ,þ+þþ sð¥{*06äsî -!(¶r•@p( o‘ r·@ps zsö*0K§3 s ¥}*þ ,!Óþ+!Óþþ sû¥}*0@æsù !Ó3!(¶r•@p( o‘ r·@ps zs*0K§3 s ¥*þ ,!àþ+!àþþ s¥*0@ès !à3!(¶r•@p( o‘ r·@ps zs *09§3 s‘ ¥*þ ,þ+þþ s¥*06ês -!(¶r•@p( o‘ r·@ps zs*09§3 s’ ¥ƒ*þ ,þ+þþ s¥ƒ*06ìs -!(¶r•@p( o‘ r·@ps zs"*09§3 s“ ¥…*þ ,þ+þþ s'¥…*06îs% -!(¶r•@p( o‘ r·@ps zs-*09§3 s” ¥‡*þ ,þ+þþ s2¥‡*06ðs0 -!(¶r•@p( o‘ r·@ps zs8*0:ñY[l (N,6i 3lZXs• ¥‰*þ þþ  s;¥‰*#þ,#(¶r•@p( o‘ r·@ps z.#(¶rÁ@p( o‘ rps z.#(¶rã@p( o‘ r·@ps z.#(¶rAp( o‘ rá5ps zþ, s• ¥‰*þ ,#þ+ #þþ  sA¥‰**sF*0.ñY[l (N,6i 3kZXs– ¥‹*þ þþ  sI¥‹*"þ,#(¶r•@p( o‘ r·@ps z.#(¶rÁ@p( o‘ rps z.#(¶rã@p( o‘ r·@ps z.#(¶rAp( o‘ rá5ps zþ, s– ¥‹*þ , "þ+ "þþ  sO¥‹**sT*0.z(2+, s— ¥™*(1+ s˜ ¥™*.s™ *0K§(à+, sš ¥~*(+ , (1++(/+þ s› ¥~*08Š(2+,!(¶r•@p( o‘ r·@ps zsœ *0%z3 s ¥“*þ si¥“*0 ò so*0SóE$.[(m Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0 ô (m*0SõE$.[(o س ]-*س***س*س س*س س*0 ö (o*0S÷E$.[(q ص ]-*ص***ص*ص ص*ص ص*0 ø (q*0SùE$.[(s Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0 ú (s*0J,E!'[(u Ø ]-*Ø***Ø*ØØ*Ø Ø*0 W (u*0JûE!'[(w Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0 ü (w*0R©E#%)/[(y Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0 ý (y*0RþE#%)/[({ Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 ÿ ({*0SE$&*0[(} Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0  (}*0SE$&*0[( Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0  (*0NE!%+[( Z ]-*Z*"€?**Z*ZZ*Z Z*0  (*0RE#%)/[(ƒ Z ]-*Z*#ð?**Z*ZZ*Z Z*0  (ƒ*0gE"$&.<[(… (ž ]-*(ž ***(ž *(ž (ž *(ž (ž *0  st   (…*0w,E')+6H[(ð+ (T+ ]-*þ(T+***þ(T+*(T+þ(T+*(T+ þ(T+*0    þ(ð+*0k ,  {¯ + ,  {¯ +ŽiY YX  Y2!X£ ¤ XX3ß*0` ,  {¯ + ,  {¯ +ŽiY YX  Y2 X£ ¤ XX3à*0d¨, {¯ + , {¯ + , {¯ + (æ Y , {¯ + (æ Y YX YX(ñ+*0g¨, {¯ + , {¯ + , {¯ + (æ Y , {¯ + (æ Y YX YX(ò+*0 ™, {¯ + , {¯ + , {¯ + , {¯ + (æ Y , {¯ + (æ Y, {¯ + (æ Y YXYXYX(ó+*0 œ, {¯ + , {¯ + , {¯ + , {¯ + (æ Y , {¯ + (æ Y, {¯ + (æ Y YXYXYX(ô+*0 ε, {¯ + , {¯ + , {¯ + , {¯ + , {¯ + (æ Y, {¯ + (æ Y, {¯ + (æ Y, {¯ + (æ Y YXYXYX YX(õ+*0 ѵ, {¯ + , {¯ + , {¯ + , {¯ + , {¯ + (æ Y, {¯ + (æ Y, {¯ + (æ Y, {¯ + (æ Y YXYXYX YX (ö+*0;,  {¯ + ,  {¯ + on Y YXo} *0)Ð (B %¤o– sŸ *0<Ð (B Ð!(B %¤%¤o– s  *>~¡ þo¢ *>~£ þo¢ *>~¤ þo¢ *>~¥ þo¢ *B~¦ þ(÷+*>~§ þo¢ *>~¨ þo¢ *>~© þo¢ *>~ª þo¢ *>~« þo¢ *>~¬ þo­ *>~® þo¢ *>~¯ þo¢ *>~° þo— *>~± þo¢ *>~² þo¢ *>~³ þo¢ *>~´ þo¢ *>~µ þo¢ *>~¶ þo¢ *B~· þ(–+*Fo &}¸ *.þo¹ *:o¹ Œ *0C{¸ E*oº , }¸ *}¸ *o» ,*}¸ *F}¸ þo¼ * *¦{¸ E (ø+*(ù+*þo½ **o¾ &*** *0 –þ *Fo¾ &}¿ *** *"{¿ *’oÀ &}Á } {Á }à *:{Á }à *B{à þoÄ *0nH{à {à oÅ oÆ ,*oÇ ,*oÆ ,{ oÆ +, }à *{ oÇ , }à **’o¾ &}È }É {È }Ê *:{È }Ê *"{Ê *0H{Ê {Ê oË oÌ ,*oÍ ,{É oÍ +, }Ê *{É oÌ , }Ê *{É oÍ ,*oÌ -**(Î *X*î}k}l}m}n}o{k{moÏ &*"{o*N{n,þ*þ*þ**{lX**ž}p}q}r}so &*0 {p{q{r{s(O*0 %{p{q{r{s(O¥ *(Ð *X*î}t}u}v}w}x{t{voÑ &*"{x*N{w,þ*þ*þ**{uX**ž}y}z}{}|o &*0 {y{z{{{|(Q*0 %{y{z{{{|(Q¥ *(Ó *X*î}}}~}}€}{}{oÔ &*"{*N{€,þ*þ*þ**{~X**ž}‚}ƒ}„}…o &*0 {‚{ƒ{„{…(S*0 %{‚{ƒ{„{…(S¥ *(Ö *X*î}†}‡}ˆ}‰}Š{†{ˆo× &*"{Š*N{‰,þ*þ*þ**{‡X**ž}‹}Œ}}Žo &*0 {‹{Œ{{Ž(U*0 %{‹{Œ{{Ž(U¥ *(Ù *X*î}}}‘}’}“{{‘oÚ &*"{“*N{’,þ*þ*þ**{X**ž}”}•}–}—o &*0 {”{•{–{—(W*0 %{”{•{–{—(W¥ *(Ü *X*î}˜}™}š}›}œ{˜{šoÝ &*"{œ*N{›,þ*þ*þ**{™X**ž}}ž}Ÿ} o &*0 {{ž{Ÿ{ (Y*0 %{{ž{Ÿ{ (Y¥ *(ß *Xh*î}¡}¢}£}¤}¥{¡{£oà &*"{¥*N{¤,þ*þ*þ*.{¢Xh**ž}¦}§}¨}©o &*0 {¦{§{¨{©([*0 %{¦{§{¨{©([¥ *(â *XÑ*î}ª}«}¬}­}®{ª{¬oã &*"{®*N{­,þ*þ*þ*.{«XÑ**ž}¯}°}±}²o &*0 {¯{°{±{²(]*0 %{¯{°{±{²(]¥ *(å *Xg*î}³}´}µ}¶}·{³{µoæ &*"{·*N{¶,þ*þ*þ*.{´Xg**ž}¸}¹}º}»o &*0 {¸{¹{º{»(_*0 %{¸{¹{º{»(_¥ *(è *XÒ*î}¼}½}¾}¿}À{¼{¾oé &*"{À*N{¿,þ*þ*þ*.{½XÒ**ž}Á}Â}Ã}Äo &*0 {Á{Â{Ã{Ä(a*0 %{Á{Â{Ã{Ä(a¥ *Ú}Å}Æ}Ç}È}É{Çoë &*"{É*N{È,þ*þ*þ*X*J{Ål{ÆZX*î}Ê}Ë}Ì}Í}Î{Ê{Ìoì &*"{Î*N{Í,þ*þ*þ**{ËX*~}Ï}Ð}Ño &*j{Ï{Ð{Ñ(c*~{Ï{Ð{Ñ(c¥ *Ú}Ò}Ó}Ô}Õ}Ö{Ôoî &*"{Ö*N{Õ,þ*þ*þ*X*J{Òk{ÓZX*î}×}Ø}Ù}Ú}Û{×{Ùoï &*"{Û*N{Ú,þ*þ*þ**{ØX*~}Ü}Ý}Þo &*j{Ü{Ý{Þ(e*~{Ü{Ý{Þ(e¥ *î}ñ }ò }ó }ô }õ {ó {ô oö &*"{õ *&(ú+*.þ(€+*Z{ò {ñ þ(û+**ž}ø }ù }ú }û o &*0 {ø {ù {ú {û (ü+*0 %{ø {ù {ú {û (ü+¥ *0C}ü }ý }þ }ÿ } } {ý {ÿ oö &*"{ *f{ ,(ú+*(ý+*.þ(€+*Z{ü {þ þ(l+**¾} } } } } o &*0 &{ { { { { (þ+*0 +{ { { { { (þ+¥ *Î}ó}ô}õ}ö{ó{ôo &*"{ö*þ*þ*0ù {õ XÑ**~}÷}ø}ùo &*j{÷{ø{ù(k*~{÷{ø{ù(k¥ *:(9 }  *0 &{  %Œ ¤oÏ ¥¡*:(  }  *0 3{  %Œ ¤%Œ¡¤oÏ ¥§**o &*0]Р(B Ð(B oc ,sy¥l s  8!Б(B oc ,s}¥l s  8øÐV(B oc ,s¥l s 8ÏÐ~(B oc ,s…¥l s 8¦К(B oc ,s‰¥l s 8}Ð(B oc ,s¥l s +WЀ(B oc ,s‘¥l s +1Ð2(B oc ,s•¥l s + r!Ap(ÿ+€ *~ *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *"(  *:( }! *B{! þo *(" *0.!Ó2*e !Ó/ (˜s# z*:( }$ *B{$ þo *(% *"(& *:( }' *B{' þo *(( *"() *:( }* *B{* þo *(+ *"(, *:( }- *B{- þo **o &*0jР(B Ð(B oc ,sœ¥l s. +1Ѐ(B oc ,s ¥l s/ + r)Ap(ÿ+€0 *~0 *(% *"(1 *:( }2 *B{2 þo *(( **l(1 k*:( }3 *B{3 þo **o &*0jР(B Ð(B oc ,s§¥l s4 +1Ѐ(B oc ,s«¥l s5 + r3Ap(ÿ+€6 *~6 *(% *"(7 *:( }8 *B{8 þo *(( **l(7 k*:( }9 *B{9 þo **o &*0jР(B Ð(B oc ,s²¥l s: +1Ѐ(B oc ,s¶¥l s; + r=Ap(ÿ+€< *~< *(% *"(= *:( }> *B{> þo *(( **l(= k*:( }? *B{? þo **o &*0jР(B Ð(B oc ,s½¥u s@ +1Ѐ(B oc ,sÃ¥u sA + rGAp(+€B *~B *(C *&(D *:(9 }E *B{E þoõ *:(F }G *0{G oH sI *(J *2ll(D k*:(9 }K *B{K þoõ *:(F }L *0{L oH sM **o &*0jР(B Ð(B oc ,sÌ¥l sN +1Ѐ(B oc ,sÐ¥l sO + rSAp(ÿ+€P *~P *(% *"(Q *:( }R *B{R þo *(( **l(Q k*:( }S *B{S þo **o &*0jР(B Ð(B oc ,s×¥l sT +1Ѐ(B oc ,sÛ¥l sU + rcAp(ÿ+€V *~V *(% *"(W *:( }X *B{X þo *(( **l(W k*:( }Y *B{Y þo **o &*0jР(B Ð(B oc ,sâ¥l sZ +1Ѐ(B oc ,sæ¥l s[ + rkAp(ÿ+€\ *~\ *(% *"(Š *:( }] *B{] þo *(( **l(Š k*:( }^ *B{^ þo **o &*0jР(B Ð(B oc ,sí¥l s_ +1Ѐ(B oc ,sñ¥l s` + rwAp(ÿ+€a *~a *(% *.#*:( }b *B{b þo *(( *.#*:( }c *B{c þo **o &*0jР(B Ð(B oc ,sø¥l sd +1Ѐ(B oc ,sü¥l se + r‰Ap(ÿ+€f *~f *(% *"(g *:( }h *B{h þo *(( **l(g k*:( }i *B{i þo **o &*0]Р(B Ð(B oc ,s¥x sj 8!Ѐ(B oc ,s¥x sk 8øК(B oc ,s ¥x sl 8ÏÐ2(B oc ,s¥x sm 8¦Б(B oc ,s¥x sn 8}ÐV(B oc ,s¥x so +WÐ~(B oc ,s¥x sp +1Ð(B oc ,s¥x sq + r•Ap(+€r *~r *(s *"(t *:(u }v *B{v þoI *(w *&l(t *:(u }x *B{x þoI *(y *†!Ó/*!Ó1**:(u }z *B{z þoI *({ *"(| *:(u }} *B{} þoI *(~ *"( *:(u }€ *B{€ þoI *( *"( *:(u }‚ *B{‚ þoI *(ƒ *"(„ *:(u }… *B{… þoI *(† *"(‡ *:(u }ˆ *B{ˆ þoI **o &*0jР(B Ð(B oc ,s&¥l s‰ +1Ѐ(B oc ,s*¥l sŠ + rŸAp(ÿ+€‹ *~‹ *(% *"(Œ *:( } *B{ þo *(( **l(Œ k*:( }Ž *B{Ž þo **o &*0jР(B Ð(B oc ,s1¥l s +1Ѐ(B oc ,s5¥l s + r§Ap(ÿ+€‘ *~‘ *(% *"(’ *:( }“ *B{“ þo *(( **l(’ k*:( }” *B{” þo **o &*0jР(B Ð(B oc ,s<¥V s• +1Ѐ(B oc ,s@¥V s– + r³Ap(+€— *~— *(% *"(˜ *:(9 }™ *B{™ þoõ *(( **l(˜ k*:(9 }š *B{š þoõ **o &*0jР(B Ð(B oc ,sG¥l s› +1Ѐ(B oc ,sK¥l sœ + r½Ap(ÿ+€ *~ *(% *"(ž *:( }Ÿ *B{Ÿ þo *(( **l(ž k*:( }  *B{  þo **o &*0jР(B Ð(B oc ,sR¥l s¡ +1Ѐ(B oc ,sV¥l s¢ + rÅAp(ÿ+€£ *~£ *(% *"(¤ *:( }¥ *B{¥ þo *(( **l(¤ k*:( }¦ *B{¦ þo **o &*0jР(B Ð(B oc ,s]¥l s§ +1Ѐ(B oc ,sa¥l s¨ + rÏAp(ÿ+€© *~© *(% *"(ª *:( }« *B{« þo *(( **l(ª k*:( }¬ *B{¬ þo **o &*0jР(B Ð(B oc ,sh¥l s­ +1Ѐ(B oc ,sl¥l s® + r×Ap(ÿ+€¯ *~¯ *(% *"(° *:( }± *B{± þo *(( **l(° k*:( }² *B{² þo **o &*0jР(B Ð(B oc ,ss¥l s³ +1Ѐ(B oc ,sw¥l s´ + ráAp(ÿ+€µ *~µ *(% *"(¶ *:( }· *B{· þo *(( **l(¶ k*:( }¸ *B{¸ þo **o &*0jР(B Ð(B oc ,s~¥l s¹ +1Ѐ(B oc ,s‚¥l sº + réAp(ÿ+€» *~» *(% *"(¼ *:( }½ *B{½ þo *(( **l(¼ k*:( }¾ *B{¾ þo **o &*0jР(B Ð(B oc ,s‰¥ s¿ +1Ѐ(B oc ,s¥ sÀ + róAp(+€Á *~Á *(C *&( *:(… }à *B{à þo *:(Ä }Å *0{Å oÆ sÇ *(J *2ll( k*:(… }È *B{È þo *:(Ä }É *0{É oÆ sÊ *.þ(+*2rpsÛ z2r¡7psÛ z2rûApsÛ z2ró:psÛ z2rO;psÛ z2r­;psÛ z2rË?psÛ z2r <psÛ z2rk<psÛ z2rË<psÛ z2raBpsÛ z2r)=psÛ z2r‰=psÛ z2r ?psÛ z2rk?psÛ z"¥ *0 +þ *.þ(Ð+*.þ(2+**þ(Ó+*n(¶r×0p( o‘ sÇ zn(¶r1p( o‘ sÇ z06Å{Ñ ,, {Ñ { (I (  }Ñ +Ì*0Í{Ñ , X{Ñ +æ*0j#{Ñ ,C {Ñ { /(¶rH"p( o‘ rps z-*Y+µ(¶r 4p( o‘ rps z’o &}Ë {Ë }Ì }Í *0+V{Í ,{Ì {¾ ,{À *(+*(+*"oÎ *0U{Í ,3{Ì {¾ ," {¾ }Ì {Ì {¾ þþ**}Í {Ì {¾ þþ*6oÎ Œ *V}Í {Ë }Ì * **oÏ &*&sÐ *0!Œ€ uj , *sÑ *V(9 }Ò }Ó *Z{Ò {Ó þoÔ *F}Õ o  &*Z{Õ oÖ þo® **o× &*&sØ *02$Œ u‚ , *u  , sÙ *sÚ *V(  }Û }Ü *^{Û {Ü þoÝ *F}Þ oß &*^{Þ oà þoá *F}â oß &*^{â oã þ(+**oä &*0J(Œƒ u„ , *u , så *u, sæ *sç *&sè *F}é oê &*f{é oë þoì *F}í oê &*f{í oî þ(+*F}ð oê &*f{ð oñ þ( +*V(ß }ó }ô *0 {ó {ô þoõ **oö &*&s÷ *0b-Œ… u† , *u , sø *u, sù *u, sú *sû *V(ê }ü }ý *0 {ü {ý þoþ *F}ÿ o &*0 {ÿ o þo *F} o &*n{ o þ( +*F} o &*n{ o þ( +*F}  o &*0 {  o  þ( +*0<ÚŒ  ,+u… , (k ¥cþo * þoÅ *rß,p*.þ(2+*.þ( +*2þ(+*.þ(Ð+*2þ(+*&(1+*&(/+*&(0+*&(.+*>(1+,**>(1+,**&(+**þ(+*~‘ *~’ *~“ **þ(Ó+*.þ(Ô+*.þ(+*s  *"s  *~” *~• *~– *~— *~˜ *~™ *~š *~› *~œ *~ *~ž *~Ÿ *~  *~¡ *~¢ *0ÉÐV(B oc ,*Ð~(B oc ,*Г(B oc ,*Д(B oc ,*Е(B oc ,*Ð(B oc ,*Ѐ(B oc ,*Ð2(B oc ,*ÐQ(B oc ,(ùŒˆ¥*s *0õД(B oc ,(Œ¥*Е(B oc ,(Œ‘¥*Л(B oc ,(Œ’¥*Ð(B oc ,(Œ“¥*Ѐ(B oc ,(Œ”¥*Ð2(B oc ,(Œ•¥*ÐQ(B oc ,(ùŒˆ¥*s *0÷Ð(B oc ,(øŒ‡¥*Ð(B oc ,(úŒ‰¥*Б(B oc ,(ûŒŠ¥*ÐV(B oc ,(üŒ‹¥*Ð~(B oc ,(ýŒŒ¥*К(B oc ,(þŒ¥*Г(B oc ,(Œ¥*(+*~ *~ *6Œ ¥!*6Œ ¥!********0!ò( x3+oþ,*bþ*ªX2op 0þ+,Xop (**07òqV(,$qVXop ( qVXV*d*ÖqVX2qVop -þ+,qVXV**0EqVX2qVop -þ+,qVXV!ÿÿÿÿÿÿÿÿ*!*0 iò/bX!Zop 02 7þþ+,( 0( Y+(¶r»Bp( o‘ s zX+™*0.  !(*0 i/bX!Zop 0YE&(¶r»Bp( o‘ s z!+ !X+™*0.  !(*0Å/(q , r—,ps@ zo on  ( 2(¶r»Bp( o‘ s z bYE\ oYEA xYEo (k ¥c( *o (k ¥c( *(( *(( *0æ0(q , r—,ps@ zo on  ( (2(¶r»Bp( o‘ s z(k ( bYEaoYECxYE(k ¥c( * o (k ¥c( ( Z* (( Z* (( Z*0×1(q , r—,ps@ zo on  ( (2(¶r»Bp( o‘ s z(k ( bYEWoYE>xYE(k ¥c( * o (k ¥c( Z* (Z* (Z*0»/(q , r—,ps@ zo on  ( 2(¶r»Bp( o‘ s z bYEW oYEA xYEo (k ¥c( *o (k ¥c( *(*(*01šÐ’(B oc , Œ’¥ *Г(B oc , Œ“¥ *Д(B oc , Œ”¥ *Е(B oc ,!Œ•¥ *Л(B oc ,!àŒ›¥ *Ð2(B oc ,st Œ2¥ *Ð(B oc ,#Œ¥ *Ѐ(B oc ,"Œ€¥ *rÛBpoZ oH ¥ *01šГ(B oc , Œ“¥ *Ð(B oc , Œ¥ *Д(B oc , Œ”¥ *Е(B oc ,!Œ•¥ *Л(B oc ,!àŒ›¥ *Ð2(B oc ,st Œ2¥ *Ð(B oc ,#ð?Œ¥ *Ѐ(B oc ,"€?Œ€¥ *råBpoZ oH ¥ *~ *~ *( +*(Õ+*B~ þ(+*.þ(+*0Ä3ríBp%¤%¤o– oc ,+"ríBp%¤%¤o– ,9,-,¥++(¶rCp( o‘ s z s! * s" *, +ò,¥++(¶r+Cp( o‘ s z s# *0Ð’(B oc ,sŽŒ/¥+*Г(B oc ,sŒ0¥+*Д(B oc ,s’Œ1¥+*Е(B oc ,s”Œ2¥+*Л(B oc ,s–Œ3¥+*Ð(B oc ,s˜Œ4¥+*Ѐ(B oc ,sšŒ5¥+*ÐQ(B oc ,sœŒ6¥+*(+*B~$ þ(+*0Ä3ríBp%¤%¤o– oc ,+"ríBp%¤%¤o– ,9,-,¥++(¶rCp( o‘ s z s% * s& *, +ò,¥++(¶r+Cp( o‘ s z s' *0Г(B oc ,s·Œ0¥+*Ð(B oc ,s¹Œ;¥+*Д(B oc ,s»Œ1¥+*Е(B oc ,s½Œ2¥+*Л(B oc ,s¿Œ3¥+*Ð(B oc ,sÁŒ4¥+*Ѐ(B oc ,sÃŒ5¥+*ÐQ(B oc ,sÅŒ6¥+*(+*B~( þ(+*0Ä3rMCp%¤%¤o– oc ,+"rMCp%¤%¤o– ,9,-,¥++(¶reCp( o‘ s z s) * s* *, +ò,¥++(¶rCp( o‘ s z s+ *0Ð’(B oc ,sÞŒ/¥+*Г(B oc ,sàŒ0¥+*Д(B oc ,sâŒ1¥+*Е(B oc ,säŒ2¥+*Л(B oc ,sæŒ3¥+*Ð(B oc ,sèŒ4¥+*Ѐ(B oc ,sêŒ5¥+*ÐQ(B oc ,sìŒ6¥+*(+*B~, þ(+*0Ä3rMCp%¤%¤o– oc ,+"rMCp%¤%¤o– ,9,-,¥++(¶reCp( o‘ s z s- * s. *, +ò,¥++(¶rCp( o‘ s z s/ *0Ð’(B oc ,sŒ/¥+*Г(B oc ,sŒ0¥+*Д(B oc ,s Œ1¥+*Е(B oc ,s Œ2¥+*Л(B oc ,s Œ3¥+*Ð(B oc ,sŒ4¥+*Ѐ(B oc ,sŒ5¥+*ÐQ(B oc ,sŒ6¥+*(+*B~0 þ(+**o &**þ(>+*.þ(€+*F}1 o &*B{1 þ(›+*.þ(€+**o &*24*þ**o &*&(r **o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*:þ,*þ**o &*:þ,*þ**o &*&(@ **o &*0û>Р(B К(B oc ,(þŒ¥=8„Л(B oc ,(Œ’¥=+`Ð’(B oc ,+JÐ(B oc ,+4Ð(B oc ,+Б(B oc ,+(+€B Р(B Ð’(B oc ,(ÿŒŽ¥=+(+€C *~C *~B **o &*.þ(+**o &*.þ(+**o &*0Ó>Р(B Ð(B oc ,Œ¥ 8Б(B oc ,Œ‘¥ 8zÐV(B oc ,ŒV¥ +ZÐ~(B oc ,!Œ~¥ +2К(B oc ,!ÓŒš¥ + (+€D *~D **o &*0ö>Р(B Ð(B oc ,Œ¥ 8ÀБ(B oc ,Œ‘¥ 8ÐV(B oc ,ŒV¥ 8zÐ~(B oc ,!Œ~¥ +RК(B oc ,!ÓŒš¥ +)Ð’(B oc ,Œ’¥ + (+€E *~E **o &*0é5Р(B Ð2(B oc ,skŒI¥›8¯Ð(B oc ,smŒJ¥›8ˆЀ(B oc ,soŒK¥›+dr±Cp%¤%ÐV(B ¤o– , sF +-,¥›+(¶rÉCp( o‘ s z sG €H *~H *(I *:(J (K *(L *l[*(M *k[*:(N }O *0 3{O %Œ ¤%ŒV¤oÏ ¥ *:(P }Q *B{Q þo' *:(R }S *07{S oT sU **o &*08Р(B С(B Ч(B oc , oc +9ÆÐ(B oc ,s„ŒP¥€8¨Б(B oc ,s†ŒQ¥€8ÐV(B oc ,sˆŒR¥€+]Ð~(B oc ,sŠŒS¥€+9К(B oc ,sŒŒT¥€+(++ (+€V *~V *:(9 }W *B{W þoõ *:(Ï }X *0:{X oÖ sY *:(  }Z *0 3{Z %Œ ¤%Œ¡¤oÏ ¥§*:(9 }[ *B{[ þoõ *:(Ï }\ *0:{\ oÖ s] *(å *Xg*(ß *Xh*(Î *X*(Ð *X*(Ù *X*(è *XÒ*(â *XÑ*(Ö *X*(Ó *X*(Ü *X*(C *X*(J *X*(^ *&(º **o &*098Р(B С(B Ч(B oc , oc +9íÐ(B oc ,s«ŒP¥€8ÏБ(B oc ,s­ŒQ¥€8¨ÐV(B oc ,s¯ŒR¥€8Ð~(B oc ,s±ŒS¥€+]К(B oc ,s³ŒT¥€+9Ð’(B oc ,sµŒ/¥€+( ++ (!+€_ *~_ *:(9 }` *B{` þoõ *:(Ï }a *0:{a oÖ sb *:(  }c *0 3{c %Œ ¤%Œ¡¤oÏ ¥§*:(9 }d *B{d þoõ *:(Ï }e *0:{e oÖ sf *(å *Ö³*(ß *Öµ*(Î *Ö*(Ð *Ö*(Ù *Ö*(è *׆*(â *ׇ*(g *ׇ*(Ö *×*(Ó *×*(Ü *×*(C *X*(J *X*(^ *&(º **o &*08Р(B С(B Ч(B oc , oc +9ÆÐ(B oc ,sÔŒP¥€8¨Б(B oc ,sÖŒQ¥€8ÐV(B oc ,sØŒR¥€+]Ð~(B oc ,sÚŒS¥€+9К(B oc ,sÜŒT¥€+("++ (#+€h *~h *:(9 }i *B{i þoõ *:(Ï }j *0:{j oÖ sk *:(  }l *0 3{l %Œ ¤%Œ¡¤oÏ ¥§*:(9 }m *B{m þoõ *:(Ï }n *0:{n oÖ so *(å *Zg*(ß *Zh*(Î *Z*(Ð *Z*(Ù *Z*(è *ZÒ*(â *ZÑ*(Ö *Z*(Ó *Z*(Ü *Z*(C *Z*(J *Z*(^ *&(º **o &*08Р(B С(B Ч(B oc , oc +9ÆÐ(B oc ,sûŒP¥€8¨Б(B oc ,sýŒQ¥€8ÐV(B oc ,sÿŒR¥€+]Ð~(B oc ,sŒS¥€+9К(B oc ,sŒT¥€+($++ (%+€p *~p *:(9 }q *B{q þoõ *:(Ï }r *0:{r oÖ ss *:(  }t *0 3{t %Œ ¤%Œ¡¤oÏ ¥§*:(9 }u *B{u þoõ *:(Ï }v *0:{v oÖ sw *(å *س*(ß *ص*(Î *Ø*(Ð *Ø*(Ù *Ø*(è *Ù†*(â *Ù‡*(Ö *Ù*(Ó *Ù*(Ü *Ù*(C *Z*(J *Z*(^ *&(º *BŒ Œ þ*>Œ þo? *rrñCpoG oÅ (Hso z~Š *0Ë;u 9uu ,   (#*u=,?u=,($*uI,  ("*(&+*uI,í +Ýu=,(u=, +¡uI,¹ +©uI,§ 8”ÿÿÿ0Í<(¨+-U(§+-8¬(§+-+鹿 ¥€ (‹ ,+(‹ , { +,(z8f(¨+-'(§+-+¡(§+-8”ÿÿÿ¥€¥€ +£¥ ¥ ( ,+( , { +,(zþo *0i?9\9TuQ 9ßuQ ,   (r *uI,þ(*u,¥3þox *u,  þ(*(3+:·(4+-au,$  ¥3ox   /* 1**u  ,   o   /* 1**(&+*(4+-'u,  8’ÿÿÿu  ,Ð  +°¥› ¥› 4* þ*(3+:(4+--u,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(4+--u,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥›¥› 8gÿÿÿ¥š¥š/*þ*uI, 83þÿÿu, 8<þÿÿu,  8Hþÿÿ(3+:(4+--u,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(4+--u,  8þÿÿu  9Wþÿÿ  84þÿÿ¥›¥› 8þÿÿ(3+:(4+--u,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(4+--u,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥›¥› 8õýÿÿ¥š¥š8‰þÿÿ*,**0 FW2*Xo Xo ( ,*X+º0 ‡W 2*V%X¤V% X¤Vo V%X¤V% X¤Vo ( ,* X 8yÿÿÿ0 kA      2* (  , * X +•0]¨2*oæ oæ /+þ ,*oå oå  /+ þ ,*X+£0 uW2*X¤VY3o o (+X(! ,*X8‹ÿÿÿ0 '2*oå oæ ( *0 ÜBoã 3 oã þ+,koä oä /+þ ,*oå oå  /+ þ,*    (*oã 3 oã þ+9×oæ oæ /+þ ,*oæ oæ  /+ þ,*oå  oå  oå  oå    /+  þ  , *  /+  þ,*          (*oã oã /+þ ,*oã  ( , *V(!*0RŽi Ži /+þ ,*  /* £ £(,  +Ù X +Ò*0aCŽi Ži /+þ ,*  /9 £’ £’/+þ,  +Ê X +Ã*~‹ *~Œ *ZŒ Œ þoy *V(&¥3þ(+*04‹(%¥3(+þ Þt  ((' , Þþ*04‹(%¥3(+þ Þt  ((' , Þþ*04‹(%¥3(+þ Þt  ((' , Þþ*04‹(%¥3(+þ Þt  ((' , Þþ*0DDŽi Ži þ -*  /% £’ £’þ- +Þ X +×*0DDŽi Ži þ -*  /% £V £Vþ- +Þ X +×*ž, þþ+, þþ+,*þ*0HDŽi Ži þ -*  /) £€ £€(/- +Ú X +Ó*ž, þþ+, þþ+,*þ*0HDŽi Ži þ -*  /) £ £(1- +Ú X +Ó*0DDŽi Ži þ -*  /% £ £þ- +Þ X +×*0DDŽi Ži þ -*  /% £~ £~þ- +Þ X +×*0TIu 9¿u ,   (>*u=9çu=,(-*uu9öuu  ,     (.*uv  9ûuv  ,  (4*uw9ûuw,(3*ux9ƒux,(0*uy,Euy,(2*uI,(=*þo( *uI,ê+Øuy,(uy, +šuI,µ+£uI,£8Žÿÿÿux,oux, 8!ÿÿÿuy,1uy, 8'ÿÿÿuI9?ÿÿÿ8*ÿÿÿuI9'ÿÿÿ8ÿÿÿuy,1uy, 8ÑþÿÿuI9éþÿÿ8ÔþÿÿuI9Ñþÿÿ8¼þÿÿuw9ëuw, 8þÿÿux,oux, 8&þÿÿuy,1uy, 8,þÿÿuI9Dþÿÿ8/þÿÿuI9,þÿÿ8þÿÿuy,1uy, 8ÖýÿÿuI9îýÿÿ8ÙýÿÿuI9Öýÿÿ8Áýÿÿux,oux, 8Týÿÿuy,1uy, 8ZýÿÿuI9rýÿÿ8]ýÿÿuI9Zýÿÿ8Eýÿÿuy,1uy, 8ýÿÿuI9ýÿÿ8ýÿÿuI9ýÿÿ8ïüÿÿuv  9æuv  ,   8#üÿÿuw9ëuw, 8(üÿÿux,oux, 80üÿÿuy,1uy, 86üÿÿuI9Nüÿÿ89üÿÿuI96üÿÿ8!üÿÿuy,1uy, 8àûÿÿuI9øûÿÿ8ãûÿÿuI9àûÿÿ8Ëûÿÿux,oux, 8^ûÿÿuy,1uy, 8dûÿÿuI9|ûÿÿ8gûÿÿuI9dûÿÿ8Oûÿÿuy,1uy, 8ûÿÿuI9&ûÿÿ8ûÿÿuI9ûÿÿ8ùúÿÿuw9ëuw, 8[úÿÿux,oux, 8cúÿÿuy,1uy, 8iúÿÿuI9úÿÿ8lúÿÿuI9iúÿÿ8Túÿÿuy,1uy, 8úÿÿuI9+úÿÿ8úÿÿuI9úÿÿ8þùÿÿux,oux, 8‘ùÿÿuy,1uy, 8—ùÿÿuI9¯ùÿÿ8šùÿÿuI9—ùÿÿ8‚ùÿÿuy,1uy, 8AùÿÿuI9Yùÿÿ8DùÿÿuI9Aùÿÿ8,ùÿÿuu9Üuu  ,    82øÿÿuv  9æuv  ,   87øÿÿuw9ëuw, 8<øÿÿux,oux, 8Døÿÿuy,1uy, 8JøÿÿuI9bøÿÿ8MøÿÿuI9Jøÿÿ85øÿÿuy,1uy, 8ô÷ÿÿuI9 øÿÿ8÷÷ÿÿuI9ô÷ÿÿ8ß÷ÿÿux,oux, 8r÷ÿÿuy,1uy, 8x÷ÿÿuI9÷ÿÿ8{÷ÿÿuI9x÷ÿÿ8c÷ÿÿuy,1uy, 8"÷ÿÿuI9:÷ÿÿ8%÷ÿÿuI9"÷ÿÿ8 ÷ÿÿuw9ëuw, 8oöÿÿux,oux, 8wöÿÿuy,1uy, 8}öÿÿuI9•öÿÿ8€öÿÿuI9}öÿÿ8höÿÿuy,1uy, 8'öÿÿuI9?öÿÿ8*öÿÿuI9'öÿÿ8öÿÿux,oux, 8¥õÿÿuy,1uy, 8«õÿÿuI9Ãõÿÿ8®õÿÿuI9«õÿÿ8–õÿÿuy,1uy, 8UõÿÿuI9mõÿÿ8XõÿÿuI9Uõÿÿ8@õÿÿuv  9æuv  ,   8tôÿÿuw9ëuw, 8yôÿÿux,oux, 8ôÿÿuy,1uy, 8‡ôÿÿuI9Ÿôÿÿ8ŠôÿÿuI9‡ôÿÿ8rôÿÿuy,1uy, 81ôÿÿuI9Iôÿÿ84ôÿÿuI91ôÿÿ8ôÿÿux,oux, 8¯óÿÿuy,1uy, 8µóÿÿuI9Íóÿÿ8¸óÿÿuI9µóÿÿ8 óÿÿuy,1uy, 8_óÿÿuI9wóÿÿ8bóÿÿuI9_óÿÿ8Jóÿÿuw9ëuw, 8¬òÿÿux,oux, 8´òÿÿuy,1uy, 8ºòÿÿuI9Òòÿÿ8½òÿÿuI9ºòÿÿ8¥òÿÿuy,1uy, 8dòÿÿuI9|òÿÿ8gòÿÿuI9dòÿÿ8Oòÿÿux,oux, 8âñÿÿuy,1uy, 8èñÿÿuI9òÿÿ8ëñÿÿuI9èñÿÿ8Óñÿÿuy,1uy, 8’ñÿÿuI9ªñÿÿ8•ñÿÿuI9’ñÿÿ8}ñÿÿu=9Èu=, 8Uðÿÿuu9Üuu  ,    8Zðÿÿuv  9æuv  ,   8_ðÿÿuw9ëuw, 8dðÿÿux,oux, 8lðÿÿuy,1uy, 8rðÿÿuI9Šðÿÿ8uðÿÿuI9rðÿÿ8]ðÿÿuy,1uy, 8ðÿÿuI94ðÿÿ8ðÿÿuI9ðÿÿ8ðÿÿux,oux, 8šïÿÿuy,1uy, 8 ïÿÿuI9¸ïÿÿ8£ïÿÿuI9 ïÿÿ8‹ïÿÿuy,1uy, 8JïÿÿuI9bïÿÿ8MïÿÿuI9Jïÿÿ85ïÿÿuw9ëuw, 8—îÿÿux,oux, 8Ÿîÿÿuy,1uy, 8¥îÿÿuI9½îÿÿ8¨îÿÿuI9¥îÿÿ8îÿÿuy,1uy, 8OîÿÿuI9gîÿÿ8RîÿÿuI9Oîÿÿ8:îÿÿux,oux, 8Ííÿÿuy,1uy, 8ÓíÿÿuI9ëíÿÿ8ÖíÿÿuI9Óíÿÿ8¾íÿÿuy,1uy, 8}íÿÿuI9•íÿÿ8€íÿÿuI9}íÿÿ8híÿÿuv  9æuv  ,   8œìÿÿuw9ëuw, 8¡ìÿÿux,oux, 8©ìÿÿuy,1uy, 8¯ìÿÿuI9Çìÿÿ8²ìÿÿuI9¯ìÿÿ8šìÿÿuy,1uy, 8YìÿÿuI9qìÿÿ8\ìÿÿuI9Yìÿÿ8Dìÿÿux,oux, 8×ëÿÿuy,1uy, 8ÝëÿÿuI9õëÿÿ8àëÿÿuI9Ýëÿÿ8Èëÿÿuy,1uy, 8‡ëÿÿuI9Ÿëÿÿ8ŠëÿÿuI9‡ëÿÿ8rëÿÿuw9ëuw, 8Ôêÿÿux,oux, 8Üêÿÿuy,1uy, 8âêÿÿuI9úêÿÿ8åêÿÿuI9âêÿÿ8Íêÿÿuy,1uy, 8ŒêÿÿuI9¤êÿÿ8êÿÿuI9Œêÿÿ8wêÿÿux,oux, 8 êÿÿuy,1uy, 8êÿÿuI9(êÿÿ8êÿÿuI9êÿÿ8ûéÿÿuy,1uy, 8ºéÿÿuI9Òéÿÿ8½éÿÿuI9ºéÿÿ8¥éÿÿuu9Üuu  ,    8«èÿÿuv  9æuv  ,   8°èÿÿuw9ëuw, 8µèÿÿux,oux, 8½èÿÿuy,1uy, 8ÃèÿÿuI9Ûèÿÿ8ÆèÿÿuI9Ãèÿÿ8®èÿÿuy,1uy, 8mèÿÿuI9…èÿÿ8pèÿÿuI9mèÿÿ8Xèÿÿux,oux, 8ëçÿÿuy,1uy, 8ñçÿÿuI9 èÿÿ8ôçÿÿuI9ñçÿÿ8Üçÿÿuy,1uy, 8›çÿÿuI9³çÿÿ8žçÿÿuI9›çÿÿ8†çÿÿuw9ëuw, 8èæÿÿux,oux, 8ðæÿÿuy,1uy, 8öæÿÿuI9çÿÿ8ùæÿÿuI9öæÿÿ8áæÿÿuy,1uy, 8 æÿÿuI9¸æÿÿ8£æÿÿuI9 æÿÿ8‹æÿÿux,oux, 8æÿÿuy,1uy, 8$æÿÿuI9<æÿÿ8'æÿÿuI9$æÿÿ8æÿÿuy,1uy, 8ÎåÿÿuI9æåÿÿ8ÑåÿÿuI9Îåÿÿ8¹åÿÿuv  9æuv  ,   8íäÿÿuw9ëuw, 8òäÿÿux,oux, 8úäÿÿuy,1uy, 8åÿÿuI9åÿÿ8åÿÿuI9åÿÿ8ëäÿÿuy,1uy, 8ªäÿÿuI9Âäÿÿ8­äÿÿuI9ªäÿÿ8•äÿÿux,oux, 8(äÿÿuy,1uy, 8.äÿÿuI9Fäÿÿ81äÿÿuI9.äÿÿ8äÿÿuy,1uy, 8ØãÿÿuI9ðãÿÿ8ÛãÿÿuI9Øãÿÿ8Ããÿÿuw9ëuw, 8%ãÿÿux,oux, 8-ãÿÿuy,1uy, 83ãÿÿuI9Kãÿÿ86ãÿÿuI93ãÿÿ8ãÿÿuy,1uy, 8ÝâÿÿuI9õâÿÿ8àâÿÿuI9Ýâÿÿ8Èâÿÿux,oux, 8[âÿÿuy,1uy, 8aâÿÿuI9yâÿÿ8dâÿÿuI9aâÿÿ8Lâÿÿuy,1uy, 8 âÿÿuI9#âÿÿ8âÿÿuI9 âÿÿ8öáÿÿ0îK9á9ÙuQ 9uQ ,   ( *uI,þ(5*u,þoz *(¨+-X(§+- þo( *(§+-+쥀¥€ ,   þþ+, þþ+,* þ*(¨+-)(§+-+ž(§+-8‘ÿÿÿ¥€¥€ +£¥ ¥ ,   þþ+,   þþ+,*  þ*uI, 8óþÿÿu, 8ýþÿÿ(¨+-/(§+-8ÿÿÿ(§+-8÷þÿÿ¥€¥€ 8ÿÿÿ(¨+-/(§+-8Íþÿÿ(§+-8Àþÿÿ¥€¥€ 8Ïþÿÿ¥¥  8'ÿÿÿ*,**0 J2*Xo Xo (6, X+¹*0‹ 2*V% X¤V% X¤Vo V% X¤V% X¤Vo (6,/  X  8xÿÿÿ*0oM        2*  (8,,  X  +”*0@2*oæ oæ 3oå oå þ+,X+Ã*0 z 2*X¤VY3o o (6+X(<,+X  8ˆÿÿÿ*0 *2*oå oæ (;*0 vNoã 3 oã þ+,Moä oä 39oå oå  3#   (7***oã 3 oã þ+9Ÿoæ oæ @†oæ oæ  3poå oå  oå  oå   3   þ+,7        (9****oã oã 3Doã  (:,(V (<***0IDŽi Ži þ -*  /* £ £(6- +Ù X +Ò*~ *~Ž *j(?Œ Œ þo{ *j(@Œ Œ þo{ *ZŒ Œ þo{ **~ *~ *0DOŽi Y 1 + 2' bo o| X w ZX Y +Õ*0>OŽi Y 1 + 2! b£’X w ZX Y +Û*0>OŽi Y 1 + 2! b£VX w ZX Y +Û*0?OŽi Y 1 + 2" b£~iX w ZX Y +Ú*0‚oã YEoæ boæ X ¦X*oå oä XY X1X + 2) bo o| X wZX Y +Ó *0P9•uI ,g u ,   (G*u=, (H*uu, (I*uv,   (J*(K*u  ,   þo} *þo? **f(F¥4Œ þ(L*jsf¥4Œ þ(L*BŒ þ(L*0%Q(¼ (» (+ bX('+a*0=R(o (n (m (+bX('+a b X((+a*0XS(~ ( (€ ( (+bX('+abX((+bX ()+aa*0rU(‚ (ƒ („ (… († (+bX('+abX((+bX ()+aabX(*+a*04V(¼ (» (¼ (» (+,  þ(++**0UW(o (n (m (o (n (m  (+, (+++, þ(,+**0vX(~ ( (€ ( (~ ( (€ ( (+, (+++, (,++,  þ(-+**0—Y(‚ (ƒ („ (… († (‚ (ƒ („ (… (†  (+, (+++, (,++,  (-++,  þ(.+**09Z(¼ (» (¼ (» (+,* þ(/+*0\[(o (n (m (o (n (m  (+,*(/+,*þ(0+*0\(~ ( (€ ( (~ ( (€ ( (+,*(/+  , *(0+  , * þ(1+*0¢](‚ (ƒ („ (… († (‚ (ƒ („ (… (†  (+  , *(/+  , *(0+  , * (1+  , * þ(2+*Fo &} *"{ *2þ(*2þ(**o &*6þ(6*n(¶rDp( o‘ sÇ z*o &*6þ(6*n(¶rDp( o‘ sÇ zFo &}‚ *Ž|ƒ {‚ (  -*{‚ sf*J¥4þ(6*¦{ƒ Y}ƒ {ƒ 1¥4þ(L***o &*J¥4þ(6*B¥4þ(L**o &*J¥4þ(6*B¥4þ(L******šþ,+ ~‡ þþ,¥ *sˆ z"¥ *~u þ,*þ,*~‡ þ*.u þ*0+Œ , þ oÜ **n(¶r­p( o‘ sÇ zn(¶r=Dp( o‘ sÇ z–Œ ,*(¶r­p( o‘ sÇ z6st *&op *(3+*&£ **¤ **(K *.(L *0 r^/+ /+ sM Y 2AY2&XX(K (L XX3ÚX X3¿*0@¨ Y 24 Y  2X X (K (L X X3áX X3Ì*.(L *6(M *0 ¨_/+ /+ /+ sN Y2dY2H Y 2,  XX X(L (M  X  X3ÔXX3¸XX3œ *0 d Y 2W Y  2BY2)X XX (L (M XX3× X X3¾X X3©*6(K *>(I *0 ã`/+ /+ /+ /+  sH Y?‹Y2l Y   2P Y   24  XX X X(K (I  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 ޵ Y ?~ Y  2fY2MY20X XXX  (K (I XX3ÐXX3³ X X3šX X@‚ÿÿÿ**o &*0ÅbР(B o= ,8£Ð!(B o= Ži-8…Ð(B oc ,8lÐb(B o© ,+VÐ (B o= Ži1+<Ð#(B o= Ži-+!£ ¥#o4_-+€Š *~Š *",**",**",**",**2r]DpsÛ z2rÅDpsÛ z~… *~† *~‡ *~ˆ *~‰ *0$coG o‹ oä (Œ o *0Hi{Ž {Ž @.( E3j¡Øt t (ð{  { þ(+*t€t€(ð{‘  {‘    þ(/+*t t (ð {’   {’  þ(0+*t‚t‚(ð{“ {“ þ(1+*tƒtƒ(ð{” {” þ(2+*Y*00j¥~þ9{Ž {Ž @( E+Z‰¸t t {  { þ(+*t€t€{‘ {‘   þ(/+*t t  {’   {’    þ(0+*t‚t‚{“ {“ þ(1+*tƒtƒ{” {” þ(2+*Y**0/lu~ 9{Ž {Ž @( E-\‹ºt t { { þ(+*t€t€{‘  {‘    þ(++*t t  {’   {’  þ(,+*t‚t‚{“ {“ þ(-+*tƒtƒ{” {” þ(.+***0\t(• E/d™Ît… t… (ð {– {–  þ(+*t†t†(ð {— {— þ(/+*t‡ t‡ (ð  {˜   {˜    þ(0+*tˆ tˆ(ð  {™ {™ þ(1+*t‰t‰(ð {š {š þ(2+*tŠtŠ(ð {› {› þ(4+*0Su{œ {œ @9(• E+Z‰¸çt… t… {–  {– þ(+*t†t†{— {—   þ(/+*t‡ t‡  {˜   {˜    þ(0+*tˆtˆ{™ {™ þ(1+*t‰t‰{š {š þ(2+*tŠtŠ{› {› þ(4+*Y*0Fv (• E-\¾ït…  ¹y7ž{– Œ (LbcXXX *t†  ¹y7ž {— Œ!(LbcXXX *t‡ ¹y7ž{˜ Œ"(LbcXXX *tˆ ¹y7ž{™ Œ#(LbcXXX *t‰  ¹y7ž {š   Œ$(LbcXXX *tŠ  ¹y7ž {›   Œ%(LbcXXX *0Qu{œ {œ @9(• E+Z‰¸çt… t… {–  {– þ(+*t†t†{— {—   þ(++*t‡ t‡  {˜   {˜    þ(,+*tˆtˆ{™ {™ þ(-+*t‰t‰{š {š þ(.+*tŠtŠ{› {› þ(5+**0Ku{œ {œ @3(• E*X†´ât… t… {–  {– þ( +*t†t†{— {—   þ(6+*t‡ t‡  {˜   {˜    þ(7+*tˆtˆ{™ {™ þ(8+*t‰t‰{š {š þ(9+*tŠtŠ{› {› þ(:+**0•( E/d™Î8tŒ tŒ (ð {ž {ž  þ(+*tt(ð {Ÿ {Ÿ þ(/+*tŽ tŽ (ð  {    {     þ(0+*t t(ð  {¡ {¡ þ(1+*tt(ð {¢ {¢ þ(2+*t‘t‘(ð {£ {£ þ(4+*t’t’(ð {¤ {¤ þ(;+*0i€( E'V…´ãtŒ tŒ {ž {ž  þ(+*tt{Ÿ {Ÿ þ(/+*tŽtŽ {    {     þ(0+*t t  {¡  {¡ þ(1+*tt{¢ {¢ þ(2+*t‘t‘{£ {£ þ(4+*t’t’{¤ {¤ þ(;+*0{ ( E-\¾ï tŒ  ¹y7ž{ž Œ (LbcXXX *t  ¹y7ž {Ÿ Œ!(LbcXXX *tŽ ¹y7ž{  Œ"(LbcXXX *t ¹y7ž{¡ Œ#(LbcXXX *t  ¹y7ž {¢   Œ$(LbcXXX *t‘  ¹y7ž {£   Œ%(LbcXXX *t’  ¹y7ž {¤ Œ“(LbcXXX *0i€( E'V…´ãtŒ tŒ {ž {ž  þ(+*tt{Ÿ {Ÿ þ(++*tŽtŽ {    {     þ(,+*t t  {¡  {¡ þ(-+*tt{¢ {¢ þ(.+*t‘t‘{£ {£ þ(5+*t’t’{¤ {¤ þ(<+*0b€( E&T‚°Þ tŒ tŒ {ž {ž  þ( +*tt{Ÿ {Ÿ þ(6+*tŽtŽ {    {     þ(7+*t t  {¡  {¡ þ(8+*tt{¢ {¢ þ(9+*t‘t‘{£ {£ þ(:+*t’t’{¤ {¤ þ(=+*07#{Ñ ,. {Ñ { /¤ X+Ë**0–(¶r;Ep( o‘ €… (¶riEp( o‘ €† (¶r‹Ep( o‘ €‡ (¶r±Ep( o‘ €ˆ (¶rH"p( o‘ €‰ sŒ €Š s\€‹ s\€Œ s`€ sc€Ž sj€ sm€ (&¥3€‘ (F¥4€’ (E¥4€“ s<€” s>€• s@€– sB€— sD€˜ sF€™ sH€š sJ€› sL€œ sN€ sP€ž sR€Ÿ sT€  sV€¡ sX€¢ *:(H }¥ *>{¥ o¦ *:(  }§ *Z{§ sý þo¨ *:(ß }© *^{© sß þoª *:(ê }« *0 {« s¬ þo­ *:( }® *0 {® s¯ þo° *~© *rp*r5p*r 4p*r-4p*rmp*r×0p*r«0p*r1p*rÍEp*rõEp*r'Fp*r÷4p*rH"p*rw5p*r‹Ep*rÍ4p*rÏp*rõp*r0p*rl p*r±Ep*rå5p*r~p*r¤p*rOFp*rrp*ršp*rÌp*r p*rÈp*roFp*r—6p*r:p*r;Ep*rñCp*rDp*r»Bp*rÉCp*r+Cp*rCp*rCp*reCp*r‰Fp*r•@p*rÁ@p*rã@p*rAp*r­p*r=Dp*riEp*rÔ&p*rµ.p*rÍp*rep*rép*r#0p*rw.p*r™.p*rs/p*r/p*rÃ/p*rç/p*r‹p*rEp*r»3p*r p*r'p*r('p*rb'p*r¤'p*râ'p*rL(p*r(p*rˆ(p*r~)p*r¦)p*rÎ(p*rI-p*r7.p*r?5p*r> p*r­5p*rRp*rŽp*rÎp*rv"p*rš"p*rþp*rÔp*rÆp*r:%p*rðp*rRp*r\%p*rºp*rz%p*r¶%p*rœp*rÐp*rp*rú%p*r¬p*r<p*r”p*rìp*r p*rJ p*rf$p*r¬$p*rfp*r¡Fp*r”p*r(p*r€p*ræp*rp*rLp*r*p*rjp*rúp*rÎp*rÔ p*r\!p*rš!p*rÐ!p*rÄ"p*rv$p*r®p*r&p*r¬ p*r !p*r4!p*r #p*r &p*rp*r%/p*rÙ.p*rö p*rp p*rb p*r p*rÄ p*rŽ p*r¸ p*R(¶( þo‘ *–(¶( o‘ %¤(ˆ *¶(¶( o‘ %¤%¤(ˆ *Ö(¶( o‘ %¤%¤%¤(ˆ *0¥r¿Fp(± s² €© *BSJB v4.0.30319l¼Õ#~(Öš#Strings(pÐF#USø¶#GUID· a#BlobW¶ ú3»9ª K¼ö²šÊ!Eú SV =Å2+]+~+²+%+E2Z+h2Ë +B 2i N ä +5 2A N [ +¹ N Ç N Ö N e+ ƒÇ+Ï+ê++J+z+++ÇN   õ"Ý".# s#Ý" ~#Ý"+( T(Ý"Þ*+V+E+ä+Ù+,+N373o7E+Ž< \C FD ¼KN  P ïVN ´W+ b+r2>r2¯s+Ës âs ÿs t 6t Ot jt ƒt  t ×tÆtùtÆtu 6u ouOu uu´u‰v+¨v+Àv+—\+{Ou8{uU{up{u|uÖ€¹€耹€$+@+aÆtÈ++‚uJƒ+aƒ+Ÿƒ“ƒ&„ A†+Pˆ+d‹+L+j §+f ®+I‘+‚“+–N 7–E+¤E+ç¤+­¥E+ë¥E+¦E+"¦E+k¨73F©E+«+¹¬E+o®+ Á¯ƒ ίƒä¯+½°+ E±ƒ²+ «²ƒx+±¶+¹ö¸Ÿ¹+d¼+pÉ+{Í+áÍ+°+NÎ ¤ìƒ ®ìÝ" åìƒAñ+½ô+ ´Ý" ØÝ"øN %Ý" ?Ý" VÝ" xÝ" ˜Ý"O +T +Z +` +e +l +s + ¡ Ý" º Ý" Õ Ý"  Ý"µ +Å +TÙ+hÙ+€Ù+Çö¸Mö¸v+“73Ã73Ú+ÜE+ÿ+1E+kE+—E+i E+„ E+¤ 73!++!73'%+ , [.+>0“ƒD2+G +8E(Ek_+å`+i+yn+Én+¨y+"XBiB ƒB ¢B¼BÓB òB B -B DB aBsB‡B¡B·BËBæBB B4BLBfB|B™B¯B!¿B"ÐB#öB$ B%B&)B'MB+iB 1ˆB!3«B"5ÁB#7äB$9ýB,IB,J;B-LTB1TjB1U‡B1V¡B1W½B1XäB1YB1ZB2]‚~2kƒ4kŽ5m™6o³7qÍB8s‚~8ƒÜ;ƒç<…ò=‡ý>‰?‹1@KBA‚~B¡Z&F¡e&G£p&H¥{&I§†J© K«ºL­ÔM¯îBN±‚~OÅý2TÅ2UÇ2VÉ2WË)2XÍ4YÏNZÑh[Ó‚\Õœ]×¶B^Ù‚~_ïÅ>eïÐ>fñÛ>góæ>hõñ>i÷ü>jùkû!lý;mÿUnoo‰p£Bq‚~r²Jy½Jz!ÈJ{#ÓJ|%ÞJ}'éJ~)ôJ+ÿ€- /3 ‚1M ƒ3g „5 …7› †9µ B%‡;Õ BŠGä BŠIñ BŠOý BŠT B‹a‚~Œr5  Žr‚~‘Œw  “Œ¡‡ +•¡“ +•’¡º ¡ •“¡Ë ¡ ••Ô ¡ 1•• ö •™O  —§g  ™¬…~™±q vœ±x vž´€ £º– ¤½­  ¥Ãä  ¨õ…~¨úî †«úö †¯ÿý ° ±*  ²6  µ;a E ¶=o E ¹Hz E ޹UŒ E ¹W˜ ¡ ¹n® ¡ ºq½ ¡ 1¼yÌ ¡ ¼}Ú ¡ ¿€ è À„…~Á’ pÄ’& pÄ“0 pÅ•7 Æ—S ǘl Èš€‚ è Éœ…~ɤ‰ ̤Ž Ϩ“ Õ¯˜ س¬ Ù·À Ú¾ Ô è ÛÂá è ÛÅï BåÑþ B–æÓ) æÔ€3 ìß…~íî8ÄñîAÄóñIÄôóTÄöö]øùuùüŒúþ¦û¾ ü…~ TÌì/TØì0Vçì1X÷ì2Zì3\ ì5_ì6a/ì7cAì8eQì9gdì:iuì;kˆì<m™ì=o¥ì>qºì?sÍì@uÖìAwáìByïìC{úìD}ìF€G‚,H„JI†iJˆƒKŠL¾MÝN‘þO“P•?Q—_R™S›¡T¼UŸàV¡W£X¥4Y§QZ©k[«‚\®  ]°« ¤_縡 _éÀ¡ cîС eóÞ¡ f÷é¡ iú¡ m ¡ q ¡ s%¡ t8¡ t B¡ u"N¡ uCr¡ vH†¡ |U¡ ‚fª¡ ƒhèÉzúÊ} ÃŒ‚É0Ó’BØTÞªfÃ¥¹xíʽ§¯Î˧°Ðذ ذذذ$ذ+ذ0ذ8ö °Iö °Zö °eö °{ö °™ö ± µö ² Ýö µö µö ¸¡2ö À#¡Eö À'€kSÀ.€xSÆ.€š€Ë.®BË.ŪË@ÛªËBñËD®ÌN®ÌP3ÌR€G€Îd€_€ÑeŒcÑe™cÑf€¥§Ñg±²Ñ‚Ô¶Ò„òºÓ†¾Ôˆ.ÂÖŠRÆÖŒnÊ׎ŒÎبÒÙ’ÆÖÚ”àÚÛ–üÞܘâÞšBæàœ]êâž‚æä ¤îæ¢Èòè¤îöô¦&Ðÿ¨1úª=þ¬T®m °z °‰  ²˜ ´¬ ¶Ä ¸× ºå ¼ý ¾ À0"ÂAÄQ&Æd*Èq*ʃ¾ÌŽ.Ι2в6ÒÉ:ÔÑ2Öê>Øô2Ú 2Ü&BÞ6FàRFâp2ä…šæ…~ï«l ï²l%õ¸l&÷¿'ùÕ(ÿê)J*J* J*2J* DJ* V2* pJ,‚J,—J,®B,€Ê§,€Ò€,ÙNÿàéóú! #% '))2+C -TR /b 1p 3} 5’ 79²;Å=â?õAC!E2G;IFKQM_OoQS‘U¥W€¹ÃY‹ÛZŽæ^ % b ’C f ”M j –U n!˜j ^!š "œ…~$©¥ `)©¯ `*«º `,®Ç `/²Ï 0´è 1¶!2¹!3½5!r4¿X!v4Á}!r6â!v6ÅÇ!z8ÇÓ!j8ÉÝ!~9Ëý!¾9Í"‚9Ï"¾9Ñ"J9Ó6"J:Õ€P"€;×€a"€\Øo"Ã\؇"\X"†]Z¡"2^\±"Š_^Î"Ž``#’ab#–cd9#šcfU#ždh#ždj­#ždlË#ždné#ždp$ždr%$ždtC$ždva$ždx€$ždzŸ$žd|¾$žd~Ý$žd€ü$žd‚%žd„:%žd†Y%ždˆx%ždŠ—%ždŒ¶%ždŽÕ%ždô%žd’&žd”2&žd–Q&žd˜p&ždš&ždœ®&ždžÍ&žd ì&žd¢ 'žd¤*'žd¦I'žd¨h'ždª‡'žd¬¦'žd®Å'žd°ä'žd²(žd´"(¢d¶6(¢d¸A(¢dºL(¦d¼h(ªd¾r(®fÀz(ff„(²fÄ£(¶fÆÂ(²gÈá(¶hÊ)ºjÌ)§kÎ#)§kÞ€5)€kÿ;)¡ Ó …L)Ó \)ÂÔ g)Ö r)ÂØ €)Ú Ž)ÊÜ œ)ÎÝ ­)ÂÞ" ¹)á& Å)Âä( Õ)æ, å)ç. í)ë2 õ)ï6 *ñ8 *Öó: *Öô< )*¡ õ> 5*ÚõG @*Ú÷I N*ÚùK ]*ÚüM k*ÚþO w*ÚQ ‡*ÚS ’*ÚU Ÿ*ÚW €ª*¡ Y ·*Ú\ Ä*Þ ^ Ñ*â ` ù*æ b  +ê d +î f 2+ò h h+öj y+úl †+þn •+Þp ¤+âr ³+¡ t Á+u ð+w , y .,þ{ F,} ^, t,¡  …,‡ ”,‰ ¥,‹ », Ñ," ç,&#‘ ý,&$“ -&• !-*'— 3-(™ €N-¡ ) `-Ú)  l-Þ*¢ y-â+¤ €†-¡ ,¦ ›-.,« ±-2-­ É-6.¯ á-:/± ì-2/³ ù-6/µ ../· ".20¹ @.61» ^.2½ n.3À w.>5 €.B9Ä ‰."=Æ ’."BÈ €™.¡ GÊ £.:GÖ ².úHØ ¿.:IÚ ×.úJÜ í.:JÞ /úKà /:Kâ 6/.Mä M/:Pæ f/2Rè /:Uê ˜/6Wì ±/FZî Ò/F[ð õ/\ò û/]ô 0^ö 0:bù 0:dû 80fý E0Jk Y0Fl €n0¡ m …0m …~m& ˆ0Np& ‹0Nq( ‘0Nr* š0s, ¬0t. Á0u0 Ù0:v2 è0:|4 ÷0F‚6 1Fƒ8 1:„: &1F†< 21.‡> ;1:‰@ G1F‹B Q1:D ]1:F i1F‘H s1:“J ~1:•L ‰1.—N ’1:šP ž1:œR ª12žT ´1:¡V À1:£X Ì16¥Z Ö1F¨\ æ12ª^ ò1F¬` ÿ1:®b  2:°d 26²f #2F´h 62R¶j O2þ¶l Z2"·n e2¹p p2"ºr {2V¼t „2Z½v €”2€¾x 2‹ §2à ³2:Ä ¿2:Æ‘ Ë2:È“ ×2ÚÊ• ã2FЗ ú2.Ñ™ 32Ò› 3^Ó 3bÔŸ U3fÖ¡ k3:Ø£ }3:Ú¥ 3:ܧ ¡3.Þ© ±32æ« Á36í­ Ñ3jô¯ á3nû± ñ3nü³ ÿ3þýµ 4Þý· )4âý¹ ?4:ý» S4þ½ e4:¿ r4Á 4úà Š4r Å Ÿ4" Ç ­4â É »4Ë Ï4:Í æ4Ï ý4þÑ 5ÞÓ +5vÕ B5r× Y5FÙ j5zÛ …5ZÝ ž5þß ¿5~á à5~ã 6Z!å "6Z$ç A6Z'é b6þ(ë r6)í †6þ,ï –6-ñ ¤6‚2ó ¸6Z5õ Ê68÷ Þ6:ù ò6=û 7†Aý 7ŠBÿ )7*B ;7þB K7C ]7ŽH 7þN Ÿ7ÚO ±7’T Ã7–Y Õ7‚Z ç7Z\ ÷7B^ 8^ 8._  82b 286e D8šh V8žk! f8"m# }8"m% ’8¢n' Ÿ8q) ¯8Žr+ ¿8t- Ï8¦w/ ß8ªx1 í8:y3 9|5 9F~7 !9v9 .9:€; 89®= D9²? P9¶…A \9®‰C q9º‰E †9¶‹G ›9®I ª9¾K ¹9¶M Æ9“O Ò9Z“Q Þ9º–S ù9¶˜U :¶šW $:~œY ?:Zž[ Z:Z ] g:>¢_ p:"£a y:"£c ‚:"¤e ‰:Ú¥g ’:Ú¦i :º§k ¹:ƨm Õ:¶ªo ï:®¬q  ;¶¬s ';­u @;Z­w W;Ú®y ;b;¯{ €‘;€¯ƒ œ; ¯ƒ ¬; ¯† Â;ʯŸ Ö;ί¡ ï;ʯ£ <Н¥ #< ²§ 2<²G =<ÒµK U<^µM k<Ö¶O €<Ú·Q œ<Þ·S ³<â·U Ã<â·W Ö<æ·Y å<ê¸[ ï<î¸] ü<ò¸_  =ö¸a =ú¸c )=¢¹e 7=þºg A=»i O=¢»k Z=þ¿m f=úÀo o=bÁq =Âs ”=Âu ©=Ãw ¾= Äy È=Å{ Õ=Æ} ä=Æ ó=Ç >Ƀ >É…  >ʇ +>úÍ‹ :>Î F>"Î T>&Ï‘ b>*Г p>*Ó• ~>*Ô— Œ>*Ö™ š>*Ø› ¨>Ù ³>&ÙŸ Á>*Ú¡ Ï>*Ü£ Þ>.Ý¥ í>.à§ û>2á©  ?6ã« !?2å­ 7?ç¯ M?ç± e?:è³ v?>èµ ‰?>é· œ?>é¹ ¯?>é» Â?>é½ Õ?>î¿ è?>îÁ û?>îà @>îÅ !@>îÇ 5@>ïÉ I@>ñË ]@>ñÍ q@>ñÏ …@>ñÑ ™@>ñÓ ­@>õÕ Á@>÷× Õ@>÷Ù é@>÷Û ý@>÷Ý A>÷ß %A>÷á 9A>÷ã MA>øå aA>ùç uA>úé ‰A>ûë A>üí ±A>ýï ÅA>þñ ÙA>ÿó íA>õ B>÷ B>ù )B>û =B>ý QB>ÿ eB> yB>  B>  ¡B>  µB>  ÉB>  ÝB>  ñB> C> C> -C> ACB gCF ƒC •CJ ©CN ÅC¾! ÝCR# ðCú% D%' D¾+ D2- -D/ OD2 kD!> ‰D"B §Db"E ÉDf"G ÝDj#I óDb$K ÿDn$M … E%O E%U #Er(Y 3Ev([ €Ê )] EEz)i RE~*k €_E€+m kE‚4~ tE†5€ ~EŠ5‚ ‡EÒ5„ ˜EÊ5† «EŽ6ˆ ¹E’6Š ËEò6Œ ÜEB6Ž éE–6˜ Fš7š %F–8œ CFž:ž _Fþ;  xF¢;¢ Fš>¤ ²Fš?¦ ÒF¦@¨ ðFª@ª Gþ@¬ /Gþ@® KGþ@° €kGBA² vGAÛ G®Dâ ŸG®Fä ¿G®Kæ ÝG®Pè þG²Tê H²Wì *H²Zî @H²]ð VH²`ò lH²cô ‚H²fö ˜H²iø ®H²lú ÄH²oü ÛH²rþ òH²u I²x I²{7I²~NI²hI²† uIªŒ I¶€I€€—Iè ”ŸI”D¦Iº—J°I¾—L¼I —NÇI›N…~žZÐIΠZàIÆ¡\èIÊ£^óIΨ` JÒ©b!JÖªd8JΫfOJÒ¬hfJÖ­j}JÚ®l”JʯnŸJÞ´p°Jâ¹r¼Jâ¼tËJæÂvÔJêËxáJîÍzùJòÎ|KöÏ~)KÎЀAKÒÑ‚YKÖÒ„qKÎÓ†‰KúÖˆ”Kb׊¡Kú׌¯KØŽÈKØÕKÎß’áKÒà”íKÖá–ùKâ˜L åšLæœ&Læž9Lç LL袀bLè é¤oLé«…~ëºxLˆñº‚Lˆò¼Lˆô¿šLˆõÁ¢LˆöíL÷ÅÆLøÇâLùÊüLúÌMûÎ-MüÐ…~þá7M¸áBM¸ãWM¸åcM¸çtM¸ êƒM¸ íM ï©MñÍMóèMõNø&Nû…ANýGNQN…Ï€]Nè gN†,pN†.zN†0„N†2ŽN†4šN†6«N†8ÁN:ÐN<ÞN>íN@úN†B OÎD€O€FO G.OB I‚>O I€NO€ V€QO€#W€TO€#W[O#WjO"$ZxO¢$\O%^‘O'`£O(e«O)g½O+i€ÏOE ,nÔO®,½ñO2-¿P6-Á3P:-ÃPP>.Å]PB/ÇvPB/É‘PB/ˬPF0ÍÇP^0ÏäP^1ÑQJ1ÓQN2Õ4QN2×LQN2ÙdQN3Û|Q"4ݘQR5ß±Q"5áÂQJ6ãÏQJ7åâQ"9çúQF;éR^;ë2RJ;íFR"<ï€_R€=ñhRbSózRVSõŒRZT÷™R®Uù¹R Vû€ÃR VÑRÎVIÜRÎXKèRÎZMöR\OS^TSÚ`Z*SZb\€6S€c^;S^c_DSbdaNSffcXSffeiS fgsSjf€}Snf‚‰Sng„€˜S h†¦Srh­±Svi¯ÁSk±ÏSm¶€áS€o¼æS~o½T‚o¿TT†pÁŽT‚pÃÆTŠqÅçT rÇõT rЀU€rÜ U rÜ€U€r0U r0€)U€r/UBrXîQXî‚eXð…xXþöŽ‹X‚÷ X’ù’°Xú”ÅXÞþšØX‚œóXâžùX  Y¢€Y  §…%Y «…~ ´,Yæ ´2Yæ µ8Yæ·=Y¹RYºgY¼¥{Y¾‡YÀ–Y®ÆŸYîÈàYÊZÑ$ZîÕgZþ×€5  Ù«Zî³ZôÅZú…~#…ØZ&èZò( ðZò*ùZò-[0 [4[ò7!#[–9$4[;&=[?,S[D2e[G9q[I?€Š[€KE[ªKE [ MK³[MMÃ[ NOÐ[NSÞ[NVó[OY\O\€\€Q_\BQ_€+\€Ql3\ QlA\úQI\úSX\úUƒa\úV…€l\€Y‡€—\t\Y‡€\t\Y—…¢\Y¿€»\€YÇÂ\¡ YÇÑ\YÎÝ\–ZÐò\B[Òü\Z[>]þ]@%]_B3]~_DE]_FU]_H‚g]_Jz] _©…]c©³Zd´•]d¹…«] e¾…Ë]hÆï]kÍÿ]kÏ^pÕ#^tØ3^tÚE^yàW^&}ãh^*}å{^‚ëŽ^2†îŸ^6†ð²^‹öÅ^>ùÖ^Bûé^”ü^J˜_N˜"_ 6_V¡F_Z¡X_¦j_bª{_fªŽ_¯"¡_n³%±_r³'Ã_¸-Õ_z¼0ä_~¼2õ_Á8`†Å;`ŠÊA*`ÏF=`’ÒIN`–×Oa`ÜTt`žßW†`ä]š`žè`°`îfÈ`¢ói×`÷oè`Zúrþ`ªûtaüv+a®ýy:a²ý{Ia¶þ}Xa²þgaºÿva²ÿƒ…a¾ …”a² ‡£a ‰²a² ‹ÁaÆ Ða² ßaÊ ‘îa² “ýaÎ •b² —#b ™:bÆ œIb² žXbÊ  gb² ¢vb ¤bÆ §œb² ©«bÊ «ºb² ­Éb ¯àbÆ ²ïb² ´þbÊ ¶ c² ¸c º4cÒ ½CcZ ¿RcÖ ÁacÚ ÃpcZ ÅcÖ ÇŽc ɨcÆ Ì·c² ÎÆcÊ ÐÕc² Òäc ÔúcÆ × d² ÙdÊ Û)d² Ý9d ßQdÆ âad² äqdÊ æd² è‘d ê¬dÆ í¼d² ïÌdÊ ñÜd² óìd õeÆ øe² ú$eÊ! ü4e²! þDe" [eÞ# keâ# {eæ$ ‹eâ$ ›eê% «eâ% »eî& Ëeâ& Ûeò' ëeâ' ûeº(  fâ( fö) +fâ) ;fú* Kfâ* ![f+ #qfÆ, &f², (‘fÊ- *¡f²- ,±f. .ÉfÆ/ 1Ùf²/ 3éfÊ0 5ùf²0 7 g1 9 gÆ2 <0gZ2 >@gÊ3 @PgZ3 B`g4 DvgÆ5 G†g²5 I–gÊ6 K¦g²6 M¶g7 OÍgÆ8 RÝg²8 TígÊ9 Výg²9 X h: Z#hÆ; ]3h²; _ChÊ< aSh²< cch= ezhÆ> hŠh²> jšhÊ? lªh²? nºh@ pÐhÆA sàh²A uðhÊB wi²B yiC {'iÆD ~7i²D €GiÊE ‚Wi²E „giF †}iÒG ‰iþG ‹iþH ­iÚI ½iþI ‘ÍiþJ “‚ÝiK •‚åiK ¥…ïiK ª€úi K ª jK ¯jBN ¶‚0jN ¶=jZN ºIjªP ¼‚TjQ ¾ajªQ Âoj S Ä|j T Æ‚‰jU È–jU Ì£jV ΰjW нj X Ò‚ËjZ ÔØjZ Øæj\ Úój] Ük^ Þ k_ àkB` â-k` 6Nk` 9vka <ˆka >œka @¯ka BÂka DÕka Fèka Hüka Jla L"la N6la PJla R_la Trla V‡la Xœla Z·lc ^Ãlc `Ñlc bïld e me h1mZf k?m^f mMmbf o[mff qimjg swmnh u…mi w mZj z«mk |¶mªl ~ÁmZm €Ìmn ‚×mno „åmVo †ómo ˆno Šn>o Œ nzo Ž/nbo >n2o ’Mn&o ”\nJo –knÒo ˜znÚo š‰nro œ˜no žºnZp ¡Ånq £Ðnªr ¥ÛnZs §çnt ©ónnu «oVu ­ou ¯ ou ±/o>u ³>ozu µMobu ·\ovu ¹ko2u »zo&u ½‰oJu ¿˜oÒu Á§oÚu öoru ÅÅou ÇàoZv Êìow Ìøoªx ÎpZy Ðpz Òpn{ Ô+pV{ Ö:p{ ØIp{ ÚXp>{ Ügpz{ Þvpb{ à…p2{ â”p&{ ä£pJ{ æ²pÒ{ èÁpÚ{ êÐpr{ ìßp{ îqZ| ñ q} óqª~ õ%qZ ÷1q€ ù=qn ûLqV ý[q ÿjq yq> ˆqz —qb ¦q2 µq& ÄqJ ÓqÒ âqÚ ñqr ‚r  r \&r‚ `Pr‚ cjr‚ f}r„ jr„ m‚Ÿr„ p²r„ Ž‚½r… ‘‚Ðr… —€ÝrB… œ€èrB… œÿrB… œ€s€…  sÚ¤ ¬2sª¥ ®Fs ¦ °\s§ ²rs¨ ´€ˆsB© ¶€‹s€© K€s€« Lv€V€vƒV€šLƒV€LƒV€¢LƒV€vƒV€Ë ƒV€vƒV€!vƒV€(vƒV€ANƒV€2vƒV€;vƒv€V€vÃV€SvÃV€ZvÃV€cvÃV€pvÃV€ƒvØvИvИvÐ×vÐôv²&w€.w€4w€ww€…wƒšw€òw²xÃ*x²Ex—áx²æxÐïxÐùxÐyÐ yÐyÐ8y²˜v²£z€*x²±zйzÐ {²V€ƒ€V€Ž€#¯{”#¯{£÷u„÷u˜V€Ü€V€ç€V€ò€#¯{”#¯{£#¯{!÷uh!÷uu!÷u‚!#Û|€V€Z€V€e€V€p€V€{€#¯{”#¯{£#¯{!#¯{y%÷u=%÷uL%÷u[%÷uj%#Û|€V€ý€V€€V€€V€€V€)€#¯{”#¯{£#¯{!#¯{y%#¯{¨*÷uS*÷ud*÷uu*÷u†*÷u—*#Û|€V€Å€V€Ð€V€Û€V€æ€V€ñ€V€ü€#¯{”#¯{£#¯{!#¯{y%#¯{¨*#¯{è0÷u51÷uo1÷u©1÷uã1÷u2÷uW2#Û|€V€²€V€½€V€È€V€Ó€V€Þ€V€é€V€ô€#¯{”#¯{£#¯{!#¯{y%#¯{¨*#¯{è0#¯{6÷ui6÷u©6÷ué6÷u)7÷ui7÷u©7÷ué7’€²™€€ €€ý”#˜v”V€v€V€[‚€Ù‚”Þ‚à@3ã‚à@V€‚€V€ƒ€C„à@E„€6…CA…П†3C£†‹CV€±†€V€q €V€x €#ц”#׆£#ц”#׆£#è†3D#î†3D#ô†€÷uAE÷ucEe‡3Dj‡¢Es‡«EV€¾‹€V€î €V€ö €#ц”#׆ÿJ#è†ÿJ##¯{”÷uØK÷uôKe‡ÿJj‡¢Es‡LvyLôŒãNøŒ€üŒçN?‘R›„vRt‘R?‘”Œ‘S”‘"S?‘/T3F’TV€’€V€& €V€0 €#¯{€#¯{€÷uéU÷u§T÷u¬TV€‰ €V€Ž €V€“ €#цÐ#׆ÀP#è†Ð#цÐ#׆3V#è†Ð#î†3V#ô†Ð#à’T#ц²#׆YW#è†3V÷uÒW÷uÞW÷uêW哲ú“‹X”«X”xO,”€8”€D”€Q”€\”Ðl”Иv²ôŒãNáx²–Y–"Y$–Y*–Ð#Û|€V€8€V€A€V€I€V€T€#ц!Z#׆&Z#¯{lY#цlY#׆äZ#цãN#׆€÷uˆ[÷u”[÷u [÷u¬[#Û|€3š!Z3š!Z31š!Z3Bš!Z3Wš!Z3eš!Z3uš!Z3Šš!Z3žš!Z3¯š!Z3Äš!Z3Öš!Z3ëš!Z3 ›!ZV€C—€V€Q—€V€m—€V€—€V€—€V€Ì€V€Ø€V€ç€V€÷€V€€V€ €V€€V€/€V€A€V€Q€V€d€V€u€V€ˆ€V€™€V€¥€V€º€V€Í€V€Ö€V€á€V€ô˜€V€™€V€"™€V€<™€V€P™€V€ï€V€y™€V€™€V€«™€V€Ù™€V€ú€V€€#¯{ãN#¯{YO#¯{YO#¯{ãN#цãN#׆€#¯{ï_#¯{ï_#¯{ï_#¯{ï_#¯{„a#¯{„a#¯{„a#¯{„a#¯{ c#¯{"S#¯{"S#¯{ãN#¯{ãN#¯{ãN#¯{ãN#цÀP#׆ãN#¯{ãN÷u…f÷u‘f÷uf÷u©f÷uµf÷uÁf÷uÍf÷uÙf÷uåf÷uñf÷uýf÷u g÷ug÷u!g÷u-g÷u9g÷uEg÷uQg÷u]g÷uig÷uug÷ugH öYM &ZÔ£†BÙ‚€Ú£€Þ‚€¤-m2¤-m3q¤Qm¿¤\mĤ€ΤÐ¥vmš¥¿mÀ¥Ämø¥€“¦1nš¦6n¡¦Bn¨¦Onñ¦§n÷¦³n#¯{ön²‡pÁªwÊ«ÀPû„ wЫÐç«Ðð«-m…%wŒ¬õw—¬þw ¬þw©¬x³¬xȬ#x©­pÌ­ŸzÔ­1në­y󭀮Р®´zÌ®”Ì®”Ý®£Ì®”Ý®£î®!Ì®”Ý®£î®!ÿ®y%Ì®”Ý®£î®!ÿ®y%¯¨*Ì®”Ý®£î®!ÿ®y%¯¨*!¯è0Ì®”Ý®£î®!ÿ®y%¯¨*!¯è0>¯6Ì®”Ý®£î®!ÿ®y%¯¨*!¯è0>¯6e¯ÿ}ÉŽ2~¦‡”¡3Cä²²³²?³²H³€M³€v€V€–³?ŒV€§³?Œ=´YŒW´²h´²x´bŒ´²´Ðµ´ÐÒ´fŒS€¢·²S€¯·²S€¼·²S€Ê·²S€ã·²S€î·²S€w²S€w²S€ÿ·²S€ ¸²S€¸²¹þˆ‘’†‘"’3ع:“3ð¹?“ú¹€Êáó–Êáó–Êáó–vylYŠ‘”›È"S›È"S›È"S›È"SÔá_›Ôáy›{Êæž~ÊæžÊŸ ÊŸ{Êæž~ÊæžÊŸ ÊŸ{Êæž~ÊæžÊŸ ÊŸóÍÐþÍæžÎæžÎæžÎæž&Îæž1Îæž<ÎæžŸÍæžEÎæž¨Íæž~Êy›ËΟ‰ÎŸÕΟ“ΟßΟΟêΟ¨ÎŸóΟ±ÎŸ Ê_›ÊŸ ÊŸÊŸ ÊŸÙátÝ{Êæž~ÊæžÊŸ ÊŸv€S€àá¾S€äá¾lÊ×ÞoÊ×ÞlÊæžoÊæžlÊæžoÊæž²‡]ಇ]àvylYŠ‘äZÿáï·ÿáï·vylYŠ‘äZ4ÞäZ4ÞäZfÞlYâäZV€«€V€²€V€¸€#ц¾#׆Ð#膾#î†lY#ô†äZ#¯{äZ#¯{äZ÷uû½÷uæâ÷uòâFàãNàlY3½â"S3îâãN35ºãN3õâãN3CºãN3ýâãN3QºãN3ããN3uºãN3ããN3‘ºãN32ããN3®ºãN3¸ºKã3Iãwã3ZãŽã3ãºKã3kãwã3}ãŽã3»¡ã3ãÕã3ãíã39»¡ã3«ãÕã3¹ãíã3`»¡ã3ÇãÕã3Ýãíã3—»¡ã3óãÕã3 äíã3λä3äÕã3+ä7ä3ñ»ä37äÕã3Cä7ä3¼ä3OäÕã3aä7ä3C¼Mä3V¼‹ä3x¼‹ä3†¼‹ä3•¼‹ä3¢¼‹ä3¯¼‹ä3½¼‹ä3˼‹ä3Ú¼‹ä3缋ä3ô¼‹ä3sää3…ä«ä3½Mä3+½‹ä3;½‹ä3K½‹ä3\½‹ä3k½‹ä3z½‹ä3н‹ä3š½‹ä3«½‹ä3º½‹ä3ɽ‹ä3—ää3±ä«ä3þ½Mä3¾‹ä3"¾‹ä32¾‹ä3C¾‹ä3R¾‹ä3a¾‹ä3q¾‹ä3¾‹ä3’¾‹ä3¡¾‹ä3°¾‹ä3Ëää3Ùä«ä3;Mä3ᾋä3ñ¾‹ä3¿‹ä3¿‹ä3!¿‹ä30¿‹ä3@¿‹ä3P¿‹ä3a¿‹ä3p¿‹ä3¿‹ä3çää3ýä«ä3¬¿Ìä3åòä3!åå3Ô¿Ìä3/åòä3Fåå3ÀÌä3]åòä3jåå34ÀÌä3wåòä3åå3lÀÌä3£åòä3²åå3–ÀÌä3Áåòä3Ùåå3ÒÀÌä3ñåòä3ÿåå3 ææž3$æå3Áæž3Áæž33æwã33Áæž3<Áæž3Bæ1å3UÁæž3VæDå3oÁæž3næPå3†Áæž3Áæž3æÕã3¢Áæž3«Áæž3æÕã3ŸæÕã3¹æÕã3ÈæÕã3áæÕã3ùæÕã3çÕã32çÕã3Sçwã3`çwã3mçÕã3çÕã3‘çòä3“Âæž3œÂæž3¢çÕã3±Âæž3ºÂæž3²çpå3ÒÂæž3ÛÂæž3Åç˜å3îÂæž3÷Âæž3Òç˜å3Ãæž3Ãæž3äçó–3 èó–3*èó–3Pèó–3lèÎå3Šèó–3¬èó–3ÉèÎå3òèÎå3éîå3/éîå3Léîå3_éîå3|éîå3—éîå3¼éîå3×éîå3üéîå3êæ3'êîå39êîå3Kêîå3eêîå3êîå3‘êÎå3«êÎå3¼êÎå3ÖêÎå3íêÎå3 ëîå3 ëîå33ëîå3FëÎå3[ëîå3lëîå3‚ëîå3—ëîå3§ëîå3¸ëîå3Îëó–3ßëó–3õëó–3ìîå3%ìîå37ìîå3Uìîå3oìÎå3ìÎå3’ìîåú¹€]¡xíÄͼí²‡¼í²‡¼í²‡¼í²‡¼í²‡¼í>Ëöí>Ëöí>Ëî>Ëî1±öí1±öí1±öí1±öí1±öí1±î1±î1±î1±î1±öí÷±öí*²öí;²öí íáî*²öí;²öí íï*²öí;²öí íﲇö툑Töê„&ZÛòï_#Û|€3&óé»V€¥ €V€¯ €V€º €V€Ç €V€ó€#¯{Õ»#цãN#׆ջ#цãN#׆ãN#è†é»#¯{é»÷uл÷uß»÷uî»÷uä»Åó—óóáÕ»ÍóÕ»Åó—óÊãNHò•ùHò•ù3äó¿ù3ô"S3$ô"S3DôÉù3|íãN3†íãN3íãN3šíãN3¤íãN3®íãN3¸íãN3ÂíãN3ÌíãN3ÖíãN3àíãN3êíãN3ôíãN3þíãN3îãN3îãN3SôBS3,îÉù36î€3gôBS3oôÔù3[îÔù3†ôÔù3tîÔù3ôßù3˜î‹ä3¤î"S3®î"Sú¹€ê ¹vylYˆ‘áúý "S þ þ &Z 8óvylY˜v¡q  þ þ þq  þ þ3;"S3L c3õãN3dó–3}ó–3ó–3žó–3±ó–3¿ó–3Ïó–3Þó–3öó–3 ó–3&ó–3Aó–3Wó–3oó–3ó–3®ó–3Ïó–3òó–3ó–30ó–3Hó–3_ó–3xó–3“ó–3©ó–3Áó–3Öó–3ìó–3 ó–3 ó–37ó–3Vó–3mó–3‡ó–3©ó–3Ãó–3Ûó–3ûó–3ó–3+ó–3Kó–3có–3pó–3}ó–3‹ó–3›ó–3ªó–3¼ó–3Ìó–3ßó–3óó–3ó–3ó–3.ó–3Bó–3Uó–3jó–3€ó–3™ó–3«ó–3Àó–3Óó–3èó–3ûó–3ó–3!ó–32ó–3Eó–3Wó–3kó–3ó–3“ó–3­ó–3Êó–3åó–3ó–3ó–38ó–3Só–3ló–3‡ó–3¡ó–3½ó–3Ùó–3õó–3 ó–3"ó–3;ó–3Uó–3oó–3‰ó–3£ó–3¼ó–3×ó–3òó–3 ó–39ó–3]ó–3ó–3”"Sú¹€Ð²‡ö후 ²‡ r«²‡È›„ ²‡•r«²‡¼í²‡¼í²‡Õ›„ ʫ粇Q ꇔr«›„w “† rð ›„vR"!œ"!§"!›„vR"!œ"!§"!²ˆHµˆH¸ð »ð ²‡‡!²‡ó!²‡öíäc&²‡¼íä…&²‡¼íç…&ë…&²‡Èäc&²‡ÕÊ«çäc&äÌ&“† ä…&ä…&²‡‡!çc&ë'†‘\(²‡‡!†‘²(†‘²(m)v)†‘²(m)v)†‘+(_"!“Ó*“Ó*“Ó*_"!“Ó*_"!“Ó*Î#,Î#,\„€÷Šo,÷Šo,Î#,\„€Õ/,÷Šo,Õ/,Î#,\„€Î#,Î#,²‡pŽ»-Ž»-Ž»-¦©%w¦©%w¦©%w¿¤pv¦ -|¦-ûÐZ0·J/Z0·J/¿/¼ªs0Z0·J/¿/¼ªs09§m)Z0·J/¿/¼ªs09§m)Z0·J/¿/¼ªs0‰¥2¦í0‰¥2‰¥2ê„12 ˆ”ê„12`í0‚¦Oní¦³n ˆf8`í0í¦³n‚¦Oní¦³n ˆpw`í0í¦³n‚¦On²‡ön²‡ön÷Š€‡œ2ê„12¦í0´2‚¦Onº3Ÿ†”º3Ÿ†”…ª?A 1ía1ç«Ð ¬ÀPŸ†” ˆ¢3V€ˆ0€V€‹0€V€‘0€#¯{”#¯{f8#¯{pw÷u&8÷uB8÷u^8G¨1n¿¤§nv¦6n|¦BnŽÇm)‚¦OnG¨1n¿¤§nv¦6n|¦BnŽÇm)‚¦On²‡önŸ†uw ˆ”¿¤§n ˆ”²‡ì8ê„ü8æm)ê„12æv)²‡–9v¦6n`f8ê„12Ÿ†m)²‡–9 ˆ£v¦6n`f8ê„12ý‡”û‹Cê„12‚¦Onv¦6n`f8ê„123‘f8û‹Cê„12‚¦Onê„12“pwê„12“pwû‹Cê„12‚¦Onû‹CŽÇm)ü:ê„12ü:ŽÇm)í¦³n3‘pwí¦³n3‘pwû-í¦³nû-ŽÇm)Ó‰”^½;a {€‡;Caì;€‡;Caì;wm)3˜H<3» {3Å:“ú¹€ºÉmºÉm¿¤§n ˆ”¿¤§n ˆ”¿¤§n ˆ”í¦³nå"!ýüA´2‡œ2¿¤§n²‡9BË CË CŽÇm)9§m)¨ÅC9§m)¨ÅCí¦³n“pwí¦³n3‘f8ê„D%†Bê„Dí¦³n\„o,Æ=%†BË©í-‚¦On÷Š€ê„Dí¦³n\„o,Æ=%†BË©í-‚¦Onê„Dí¦³n\„o,Æ=%†BË©í-‚¦Onê„Dí¦³n\„o,Æ=%†BË©í-‚¦OnC„ÝDC„ÝDX Bní¦³nc åEX Bn‡œ2©¬Ç2í¦³nc åE©¬Ç2‡œ2o /| €Q©w|¦BnŠ‘pw‡œ2|¦Bn‡œ2|¦Bn’ C@í¦³n‡œ2’ C@o /‡œ2’ C@o /Q©w\©€‚©¤G\©žq…uw¦©%w¦©%wË©-m¦©%wË©-m¦©%w\©žqË©-m¦©%w\©žq¦©%w¦©%w÷©É>¦©%w‹tHo /í©©H÷©É>¦©%w‹tHo /á©ÿHí©©H÷©É>á©ÿHí©©H÷©É>Ÿ”á©RIŸ”¤£ᩊIŸ”¤£«!á©ÊI9§J¦©%w1ªyJ÷©É>¦©„J‹tH·’J1ªyJ÷©É>p¦1n¦©„J‹tH·’Jo $K1ªCK¦©%w‹tHo $K·NK1ªCK¦©%w‹tHo $K·NKÖu²K1ªCK÷©É>1ªCK÷©É>Ù H<¦©%wÙ H<¿/¦©%wÙ H<¿/¦©%wÙ H<¿/9§m)\©žq¦©%w9§m)\©žqƒªí0Þ‹C‡œ2o $K¯„½M^¤1n¯„½M^¤1n‡œ2o /Þ‹CÞ‹C=12í¦³nÍs0=12í¦³n¼ªs0ºyÞC@ ˆ¿N²‡ÈNù { -m ˆ¿N²‡ÈNù { -m ˆ¿N²‡ÈN ˆ¿N²‡ÈN ˆ¿N²‡ÈN?¨€ ˆ¿N²‡ÈN?¨€ ˆ¿N²‡ÈN?¨€ ˆy?¨€ ˆy?¨€ ˆy?¨€ ˆy?¨€ ˆy?¨€ ˆy?¨€ ˆ} ˆ} ˆ}¦©¢3¦©¢3¦©¢3?¨€¦©¢3?¨€¦©¢3¦©¢3U!;Q¦©¢3,$"S3$Ð8$"Sy£/,0€#0€Þ'²ù'²ÊãN¹+BS ,²¹+BS,€, j,ju0BSu0BS¤È¤ÄW-²Ö+ãNl„€ ” ˆ€²‡¶ln„Ïlý‡ jŸ- j˜0‰zž0€¤0Yw ŽBS²‡n Uxn„¥ný‡¶nê„Ìn ˆÞnn„Þný‡ënn„j}0€n„ën Uxn„ënÓ0Ìnn„jÙ0²è0j÷0Ð÷Š€Ù0ãNè0²Ù0ãNè0²Ù0mpè0€²‡¶l1¥n&1ãN*1 j.1j21²61€ ˆZrV1ãNZ1²n„ãNý‡²†‘jˆ‘¶nV1ãNZ1² ˆÐ ˆ² ˆT ˆFT ˆzT ˆ¬T ˆøý ˆU ˆ6U ˆ€ ˆ“U ˆY ˆ÷Un„ãNý‡²†‘jˆ‘¶nn„ãNý‡¶n ˆ!Z ˆãN ˆZr ˆmp ˆZr ˆmp ˆ€à.õkã1nà.õkC„½f/Wu¤ÈBSl„€’€lY/Wu1/˜~1/˜~ÿ1lY2äZ#цãN#׆€#è†BS#¯{ënœ/õkœ/õkœ/õk¡2Ž¥2bŒ¯2õk²‡x3^„x3’„3 4ãN34ãN3K$ãN3$4õk3ACÆ„3gCâ„3-D…3‰D…ú¹€o Ðl„€ç5§‰ç5§‰²‡Ì‰ç5§‰²‡Ì‰²‡9Šs5£z5DŠç5§‰ë5žŠë5žŠ“9Р9Áа9йŽy”,ãNê„Ú÷Š€u7Ë’:ãN:ÀPê„Ú÷Š€u7Ë’):BS:ãNê„Ú÷Š€u7Ë’.:ãNu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’ê„Ú÷Š€u7Ë’ê„Ú÷Š€u7Ë’ê„Ú÷Š€u7Ë’ê„Ú÷Š€u7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Úu7Ë’÷Š€ê„Ú…5²u7Ë’÷Š€t6zTê„Ú…5²ê„Úu7Ë’—8Ž÷Š€t6zT\9Ç•\9›–…5²'0€33:ãN3>:æ–3S:kŽú¹€#ц€#׆€#膗v€S€S>O¢S€m>O¢S€|>O¢#Û|€3Å>ñŸ3Õ>ñŸV€‰>€V€›>€Ú£o, ˆÀP5Dz‹<ñŸ€xOZ;ö {0¡Ú£o,1®¢Ôáà¢;=1®¢Ôáà¢;=Ë £‹<ñŸ€xOZ;ö {0¡Ú£o,‹<ñŸ€xOZ;ö {0¡Ú£o,󊳟l„€=€󊳟=€=€=€"=€ ˆ€Z;öÚ£o,”<€;=󊳟=€=€=€"=€=€=€1®¢Ôáà¢;=1®¢Ôáà¢;=;=”<€@=²C?éŸC?韋<ñŸ€xOZ;ö {0¡Ú£o,ÖuÀPu?€1®¢Ôáà¢;=Ú£o,;=”<€€xOZ;öZ;öZ;ö#Û|€3-@ù¥V€xL€V€‚L€V€L€V€šL€V€ @€V€¢L€#¯{¤Ä#цãN#׆ãN#¯{=§#¯{ã§#¯{ãN÷uë¨÷u÷¨÷u©÷u©÷u©#Û|€3kA›V€7M€V€BM€V€WM€V€cM€V€tM€V€GA€V€ƒM€#¯{Ú#¯{ãN#¯{$›#ц²#׆$›#цãN#׆$›#¯{ÀP÷uY¬÷ue¬÷uq¬÷u›÷u®Ÿ÷u‹¬ ˆ3V3ÈD3V3gNÉg3pNÉg3zNÉg3„NÉg3ÓDãN3‹?ãN3àDãN3•?ãN3ëD3V3õD3Vú¹€3ÚEº°3äEðú¹€ ˆÌ°•,BSŠ‘«€Ï” ˆ±›„vRŠ‘ð €Ï/T ˆ…&`ï_ôŒãNøŒ€ÑLH³øŒ€ 8óôŒãNÝL´äL"SéL c 8ó 8óîL!µöLRýLR 8óéL c3MãN3gFãN3MãN3nFãN3MQ3(MãN3ÙFãN33MãN3éFãN3>MãN3ùFãN3IMãN3 GãN3TMãN3GãN3_MãN3)GãN3jMãN39GãN3uMãN3IGãNú¹€tŽãN¹Ž´ù€ï_j‡¢Eý‡ÿJj‡¢Eý‡ÿJj‡¢En„ÿJËOëÀÂOÐH/ÿJ÷Š­ÃóІByÍo,j‡¢E²‡Ä²‡öíj‡4IJ‡5Ȳ‡5Èj‡¢EóŠ‘ÔyÍo,ËOJÓÂOÐH/3D÷ŠÛÔH/«EH/–Õˆ¸«E²‡d🆧‰²‡ƒðŸ†§‰²‡­ðŸ†§‰²‡ªþ²‡Ìþ ˆ£²‡ìþ\„€²‡ìþ²‡ÿ€‡2~²‡5ÿXU2~ÞSÿ²‡¼í²‡öí²‡¹ÿ²‡áȡíŸ\„€¡3CŠ‘;C`€/VH4V€ÒO”²‡6LÞ3CÖ3CÞ3C¡†B ˆ”l„€¡3C÷Šo,€‡;C4V€ÒO”¡3C€‡;C7V?yÍ”4V€ÒO(²‡Q ꇔ¡2~e£nNQ l„”Hc£ˆ¸”l„zTˆ¸zT`ezTiÐl„zTˆ¸zT`ezTý "Sý "S…à2Ôáà2Ôáà2Ôáà2Ôáà2Ôáà2Ôáà2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2… 31öíÔá 31öíÔá 3…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…ÑÔáÑÔáÑÔáÑÔáÑÔáÑÔáÑÔáÑÔáÑ…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…öíÔáöíÔáöí…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…à2Ôáà2Ôáà2…Q 1 ÔáQ 1 ÔáQ H/à@+Wà@®Ð²‡ò;Ùò!²‡á=Ùòy%²‡\<²‡G=²‡q=²‡‡=²‡O?²‡v?Ùò¨*²‡BÙòè0²‡@²‡@²‡;@²‡ÎB•[€‡m¢E²‡¢E…”…”…AE`"S1ìþÔáAE¹Žáî1öíÔáá"S1öíÔáááî1öíÔáá"S1öíÔáááî1öíÔáá"S1öíÔáááî1öíÔáá"S1öíÔááînwÐx€x€ù€€3|²3±|²3Ì|²3é|²3}²3$}f835}æK3E}æK3\}M3t}M3Ž}íR3§}òR3¾}3Ó}M3ð}M3vk÷R3ˆkÿR3œkS3¯kS3ÂkS3ÕkS3èk'S3ük/S3l7S3"l?S36lGS3JlOS3_lWS3rl_S3‡lgSú¹€²‡à_²‡ù_²‡&`²‡Y`²‡Ÿ`3Ý™aú¹€P Ås1\ ÆÃud` ÆÏumt ÁÚurx ÅsŒ †žvÓ˜ Ås1¤ Ås1° Ås1¼ Ås1È Ås1Ô Ås1à Åsô †žvÓ!Ås1 !Ås1!Ås,!†žvÓ8!ÅsL!†ÝvÓX!Ås1d!Ås1p!Ås1|!Ås1ˆ!Ås1”!Ås1 !Ås1¬!Ås1¸!Ås1Ä!Ås1Ð!ÅsNä!†wµð!Ås1ü!Ås1"Ås1"Ås1 "Ås1,"Ås18"Ås%X"†:wd d"†Dwd p"†Nwd |"ÅsK œ"†©wS¨"†Âwd´"†ÕwdÀ"ÅsXÌ"Ås^Ø"ÅsNì"†ýwµø"Ås„ #†xŠ#ÅsN,#†2xµ8#Ås›L#†Rx¥`#ÅsN´#†CyµÀ#†LyÓÌ#†ayØ#†xyÓä#††yð#†”yÓü#†£y$†²yÓ$†Æy $†Úyµ,$†ðyN8$†zÓD$†!zP$†ì/æÏum?0Ås!@ 0†ü{ A(0ÅsLA80†ü{o B@0Ås*!BP0†ü{ $CX0Ås`$Ch0†ü{ Dx0Ås{$Dˆ0†ü{o E˜0Ås–$E¨0†ü{ $F¸0Ås¥$FÈ0à|¸$GÐ0†î|ÓHÜ0ÿ|Ø$Hä0† }ÓIð0}ø$Iø0†,}ÓJ1=}%J 1†K}ÓK1†ä{dK 1æüu&KX2æüurLl2æüuPM˜3æÃuxOŒ4æÃudPœ4æÏuP¸5æÏum'RÈ6æÏumSì6Ås!Tü6†ü{ U7ÅsLU7†ü{o V7Ås*!V,7†ü{ $W47Ås%WD7†ü{„(XL7ÅsÛ(X\7†ü{ Yl7Åsú(Y|7†ü{o ZŒ7Ås)Zœ7†ü{ $[¬7Ås8)[¼7†ü{„(\Ì7Ås¥$\Ü7 }Y)]ä7†®}Ó^ð7¿}})^ø7†Í}Ó_8Þ}¡)_ 8†ì}Ó`8ý}Å)` 8† ~Óa,8~ï)a48†*~Ób@8†ä{dbH8æüu*bp8æüurc„8æüuPd¼8æÃuxfä9æÃudgô9æÏug:æÏu½+iT;æÏumjx;Ås!kˆ;†ü{ l;ÅsLl ;†ü{o m¨;Ås*!m¸;†ü{ $nÀ;Ås%nÐ;†ü{„(oØ;Åsé)oè;†ü{ -pð;Åsc-p<†ü{ q<Ås†-q <†ü{o r0<Ås©-r@<†ü{ $sP<ÅsÌ-s`<†ü{„(tp<Åsï-t€<†ü{ -u<Ås¥$u <Œ~.v¨<†š~Ów´<«~<.w¼<†¹~ÓxÈ<Ê~d.xÐ<†Ø~ÓyÜ<é~Œ.yä<†÷~Ózð<´.zø<†Ó{='â.{ =†5Ó|=†ä{d| =æüu/|h=æüur}|=æüuP~À=æÃux€Ô=æÃudä=æÏu>æÏuU/ƒ<>æÏum„`>Ås!…p>†ü{ †x>ÅsL†ˆ>†ü{o ‡>Ås*!‡ >†ü{ $ˆ¨>Ås%ˆ¸>†ü{„(‰À>Åsé)‰Ð>†ü{ -ŠØ>ÅsÜ.Šè>†ü{ì0‹ð>ÅsZ1‹?†ü{ Œ?Ås”1Œ ?†ü{o 0?ÅsÎ1@?†ü{ $ŽP?Ås2Ž`?†ü{„(p?ÅsB2€?†ü{ -?Ås|2 ?†ü{ì0‘°?Ås¥$‘À?¤¥2’È?†²Ó“Ô?ÃÑ2“Ü?†ÑÓ”è?âý2”ð?†ðÓ•ü?€)3•@†€Ó–@ €U3–@†.€Ó—$@?€3—,@†M€Ó˜8@^€³3˜@@†l€Ó™L@†ä{d™T@æüué3™œ@æüurš°@æüuP›AæÃuxAæÃudž,AæÏužtAæÏu-4 ¸AæÏum¡ÜAÅs!¢ìA†ü{ £ôAÅsL£B†ü{o ¤ BÅs*!¤B†ü{ $¥$BÅs%¥4B†ü{„(¦ÏxGåX>ЄGå¸>ÑG†‚ Ò˜G†‚!Ò¤GÅs!Ó´Gæüu?ÔøGæüurÕ HæüuPÖ\HæÃuxؘHæÃudÙ¨HæÏuÙèH†žv ÛôH†!‚!ÛIæÏu7?Ü@ç€Kr‚>@çˆKÆ„‚µç¬KæÏut@çLæÏumè0Lñ‚ñ@ép]Á2Š1?Œ]ÁaŠ*J?¨]Á‘Š*J@ü]ÁÊ=JA^Á ùŠÓC^Á 1‹dC$^ÁÚurCx^Ås1D€^Ç‹©JD„^Ô‹ÐJD^ß‹óJH˜^`‚KIÀ^Ås»JIè^ƒ‡ Mð^ƒ‡IKMø^ƒ8‡IKM_ƒB‡dM_Ås!M_ƒü{ N _ÅséKN0_†‡ O@_†‡IKOP_†8‡IKO`_†B‡dOp_ÅsLO€_†ü{ P_Ås+LP¬_ñ‚ñ@RÐ_ƒŒ‡FRÜ_ƒ™‡IKRè_ø‚=LRð_†¢‡GLR`†#ˆGLS0`† ˆdT@`†v‹ HTX`ƒì‡SLUl`ƒÏ‡…LV„`†ƒÓX`ƒˆúLXð`ƒ»‡MYaƒÿ‡sMZLaƒ´‡‡M[`aƒÂ‡‡M\taŒ“M]°a'Œ“M_ìa3Œ“Ma(b@ŒÄMc„²œ\>˜„ƒÇœÓ?¤„ßœ\?¬„ƒòœÓ@¸„A\@À„ƒÓAÌ„7A\AÔ„ƒKÓBà„bA\B脃xÓCô„‘A\Cü„ƒ¥ÓD…¼~\D…ƒËÓE…Ý”\E$…ƒõÓF0…ž”\F8…ƒ&žÓGD…?žÄ[GL…ƒKžÓHX…ZžÄ[H`…ƒhžÓIl…yžÄ[It…ƒŠžÓJ€…žž¾[Jˆ…ƒªžÓJ”…¸ž¾[Jœ…ƒÉžÓJ¨…Üž¾[J°…ƒìžÓJ¼…þž¾[JÄ…ƒ ŸÓJÐ…Ÿ¾[JØ…ƒ+ŸÓJä…>ŸÄ[Jì…ƒLŸÓKø…]Ÿ¾[K†ƒkŸÓK †{Ÿ¾[K†ƒŒŸÓK †ŸŸ¾[K(†ƒ¹ŸÓK4†ÕŸ¾[K<†ƒåŸÓKH†÷Ÿ`]KT†ƒ ÓM`† Ä[Mh†ƒ" ÓNt†ƒä{dN|†æÃuxN†æÃudO †æÏuOè†æÏu‹]Q,‡æÏumRP‡Ås S`‡ƒü{4OTh‡Ås[^Tx‡ƒü{b^U€‡Ås[^U‡ƒü{b^V˜‡Ås V¨‡ƒü{4OW°‡ÅsõNWȇƒ‡4OYЇƒ‡dY؇Åsó_Y쇃ü{ù_Zô‡Åsó_Zˆƒü{ù_[ˆÅsó_[$ˆƒü{ù_\,ˆÅsó_\@ˆƒü{ù_]HˆÅs‰a]\ˆƒü{a^dˆÅs‰a^xˆƒü{a_€ˆÅs‰a_”ˆƒü{a`œˆÅs‰a`°ˆƒü{aa¸ˆÅs%cäƒü{,cbÔˆÅs“cb舃ü{lOcðˆÅs“cc‰ƒü{lOd ‰Ås d ‰ƒü{4Oe(‰Ås e<‰ƒü{4OfD‰Ås fX‰ƒü{4Og`‰Ås gt‰ƒü{4Oh|‰ÅsÚeh”‰ƒ‡¡jœ‰ƒ‡4Oj¤‰Ås j¸‰ƒü{4OkÀ‰ÅsŠfkЉ†ü{4Olà‰Ås–flð‰†ü{b^mŠÅs¢fmІü{b^n ŠÅs®fn0Іü{4Oo@ŠÅsºfoPІ‡4Op`І‡dppŠÅsÆfp€Š†ü{ù_qŠÅsÒfq Š†ü{ù_r°ŠÅsÞfrÀІü{ù_sЊÅsêfsàŠ†ü{ù_tðŠÅsöft‹†ü{au‹Åsgu ‹†ü{av0‹Åsgv@‹†ü{awP‹Åsgw`‹†ü{axp‹Ås&gx€‹†ü{,cy‹Ås2gy ‹†ü{lOz°‹Ås>gzÀ‹†ü{lO{ЋÅsJg{à‹†ü{4O|ð‹ÅsVg|Œ†ü{4O}ŒÅsbg} Œ†ü{4O~0ŒÅsng~@Œ†ü{4OPŒÅszg`Œ†‡¡€pŒ†‡4O€€ŒÅs†g€Œ†ü{4O ŒÅs“g¼Œƒ™‡¢gƒÈŒ†U EZƒÔŒÆÏumƒ ÆÃud„Æ„‚µ„(†„‚·g„<ƒ'“Kj…D¡†t Xj†T¡†Œ vj‡l¡†b–4O‡x¡˜ †j‡ˆ¡© jˆ˜¡´ jФ¡Ö ©jŒ´¡í ¿jŽÔ¡í Ðjø¡ý äj“ ¢ ¡ïj•,¢.¡þj˜8¢b¡kœX¢b¡kx¢u¡%kŸ˜¢u¡1k¡¼¢~¡@k¤È¢¡Lk¦Ô¢§¡[k©à¢½¡sk«£ס„k­$£ó¡Œk®0£ü¡šk¯P£¢šk±p£¢³k³œ£?¢Æk¶¨£L¢ðk¸è£L¢l»(¤m¢l½h¤m¢8lÁ”¤y¢†jÄ ¤…¢jۤ–¢PlÇÀ¤Æ¢jÌФÞ¢elÎà¤ç¢äjÐ¥ð¢olÒ¥ANlÔ@¥ANŠlÕh¥þ¢“l×t¥ £@k؈¥£jÚ”¥£œlÜ´¥A£ªlÝÀ¥F£»lÞø¥£Ôl⦾£ÞlåP¦Ås“gæ`¦†Ì£óZèd¦Ås1覃ߣ 觃ó£!蘧ƒ ˆd餧ƒç£¥$é\¨ÅsDmꌨƒ<¤2m뜨ƒa¤1묨ƒ|†1ëȨÁÓ…1ëä¨ñ‚ñ@ëð¨Ås1ëø¨‚¤Vm멃ä{dë©ý¤mmë©¥qmë©Ås1ì4©5¥mmì<©ƒQ¥„m씩ƒk¥Óí¸©ƒ~¥¤míä©‚¥²mîè©ñ‚ñ@ïø©Ås1ïXªƒ¦ïmƒ?¦„mñðªƒM¦„mò «ƒY¦„mó`«ƒa¦ nô«‚¥²mô”«ñ‚ñ@õ¤«ƒº¦2mõ¬«ƒĦTnõ´«ƒΦanõ¼«ƒئonõÄ«Åsunõ쫃ü¦Ànùô«ƒ§Ínùü«ÅsÓnù¬ §"oû¬Åsoü,¬ƒü{;oý4¬ƒä{dý<¬Ås1ýH¬†§`oýP¬†§qoý\¬†'§Šoþh¬†.§—oÿl¬†E§°ox¬†Q§Ðo„¬†W§ëo¬†]§pœ¬†j§#p¨¬†Æ¢q­¨ñ@H­¨lqX­.¨æqä­Y¨ r®_¨rT®“¨frd®¤¨¥rt®º¨¼r°® © r#Ì®©ìr%Ü®6©s&¯p©s((¯†©>s*8¯’©hs+H¯±©±s,”¯Ô©t/¨¯Ô©St2¼¯Ô©­t6ЯÔ©u;诪˜uA°&ªýuB°<ª.vD$°Cª¾pE,°Uª¾pE4°hªevED°sª‰vGT°ªvHd°¥ª°vIp°²ªßvK€°ÅswL”°Á Ī¡M˜°Á çªwM¤°Á «ÓMİÁ D«ÓMȰÅsHwM±ƒ¬3sO@±ƒ+¬ Pıƒ5¬ÓPбƒj…1Pü±ƒ<¤2mP ²ƒB¬1P²ƒN¬1PH²Á «ÓPh²Á D«ÓPt²Á çªwP„²Á Ī¡P²ÁÓ…1Pœ²Ås1Pð²ƒÙ¬UxP³ƒã¬dPp³ƒú¬xP¼³ƒ ­xQ´ƒ#­ÍxRX´ƒ-­çxT|´ƒG­çxTÄ´ƒ[­çxTµƒ¦!TPµƒp­¦yUtµƒx­ÔyWˆµƒ}­zY¨µƒˆ­=zZȵÁÓ…1[üµƒ­Tz[ ¶ƒœ­fz[P¶ÅsSL\d¶†°­!]t¶ÅsÓz^ܶ†ã¬d`춆®d`ø¶†(®¥$`·†;®ÿza·†E®ÿzb4·†Y¨1cŒ·†¦!cœ·†R®‚{d ¸†€®³{f\¸†®ÿ{h̸†²®u|jD¹†ˆ­”|lt¹†}­¤|m¤¹†x­¹|nÔ¹†p­Ý|pºY¨}r$ºÁÓ…1t<ºƒÓ® tDº†‡ tPºÅs!tdºƒÓ® ulºƒä®o utº†‡ u€º†‡o uŒºÅsÓCu¨ºƒÓ® w°ºƒä®o w¸ºƒõ® $wÀº†‡ w̺†‡o wغ†8‡ $wäºÅsŽuw»ƒÓ® z »ƒä®o z»ƒõ® $z»ƒ¯„(z$»†‡ z0»†‡o z<»†8‡ $zH»†B‡„(zT»Åsˆ}z|»ƒÓ® ~„»ƒä®o ~Œ»ƒõ® $~”»ƒ¯„(~œ»ƒ¯ -~¤»†‡ ~°»†‡o ~¼»†8‡ $~È»†B‡„(~Ô»†L‡ -~à»Ås¤}~¼ƒÓ® ƒ¼ƒä®o ƒ ¼ƒõ® $ƒ(¼ƒ¯„(ƒ0¼ƒ¯ -ƒ8¼ƒ(¯ì0ƒ@¼†‡ ƒL¼†‡o ƒX¼†8‡ $ƒd¼†B‡„(ƒp¼†L‡ -ƒ|¼† “ì0ƒˆ¼ÅsÄ}ƒÀ¼ƒÓ® ‰ȼƒä®o ‰мƒõ® $‰ؼƒ¯„(‰༃¯ -‰較(¯ì0‰ð¼ƒE¯ 6‰ø¼†‡ ‰½†‡o ‰½†8‡ $‰½†B‡„(‰(½†L‡ -‰4½† “ì0‰@½†O¯ 6‰L½Åsè}‰Œ½ƒÓ® ”½ƒä®o œ½ƒõ® $¤½ƒ¯„(¬½ƒ¯ -´½ƒ(¯ì0¼½ƒE¯ 6Ľƒl¯~̽†‡ ؽ†‡o 但8‡ $ð½†B‡„(ü½†L‡ -¾† “ì0¾†O¯ 6 ¾†v¯~,¾Ås~€¾ÅsD~˜œ¾Á ƒ¯ š¨¾Áëƒ@Bš¼¾Á´ƒP~š̾ÅsdNš྆¥¯l~›ì¾Ås1›ø¾†]§¶~›¿†§Ü~$¿†2Yé~4¿†µ¯ø~ž8¿†y¢Ÿ<¿†¸' L¿†¸E¡X¿†v‹e¢h¿†«Š¤|¿†ë¯þ¦ ¿†û¯a€¨°¿†°a€©À¿†°a€ªп†0°a€«࿆_‡Á€¬ð¿†D°ø~­À†´‡A®$À†Q°A°DÀ†Ï‚a€²TÀ†e°‹³dÀ†i°µµxÀ†n°þ·œÀ†x°µ¹°À†}°þ»ÔÀ†‡°â‚½ôÀ†¢‚a€¿Á†Ÿ°LƒÀ$Á†·°LƒÂDÁ†È°ÇƒÄdÁ†Ö°ÇƒÆ„Á†ñ°ÇƒÈ0†ÿ°ÇƒÊƱLƒÌÜÆ#±LƒÎTĆ)±u…ÐxĆZ±ß…ҤĆs±ß…ÔÐĆ„±ß…Öņ‹±ß…Ø0ņœ±=‡Ú\ņ«±=‡ÜˆÅ†Ä±=‡Þ¸Å†Ó±=‡àèņ챉â Ɔ ²ò‰å|ƆZ²îŠêØÆ†d²îŠï4ǃr²É‹ôDǃ‚²ë‹õpǃ—² Œö€Ç†¶² Œ÷ÇÅs1øœÇÅs1ø¨ÇÅsNø¼ÇÅs1ùÈdžñ²µùÔÇÅsNùèdž³µúôÇÅs1úȆT³µú Ȇa³Nú,Ȇn³dû8Ȇw³¥$ûDȆ€³düPȆ‹³¥$ü\ÈÅs1ýhÈÅskŒý¸È†ï´µþÄȆµNþÐȆµµÿÜȆ-µNÿèȆAµvŒôȆZµ{ŒɆsµµ Ɇ‡µNɆ›µÓ$Ɇ·µ0ɆÓµÓ<ɆéµHɆÿµŒTɆ ¶‡Œ`ɆA¶ŽŒÆ r¶µÆ„¶“ŒÆ˜¶šŒÆ¡¶ ŒÆɶ“ŒÆ×¶¦ŒÆ·¯ŒÆ;·ºŒ Æd·ÇŒ Æs·ÇŒ Æ…·ÎŒ tÉ8¸¯€ÉB¸Êa¸8@Êo¸… Ë”¸žä˧¸½ð˸ÛüËÞ¸ü̹üÌ2¹.ÌJ¹4,ÌS¹G<Ì\¹ZLÌc¹l\Ìk¹ˆˆÌ‡¹¤ ´Ì¦¹Ë!À̸¹ä"ÈÌÅs1"ÐÌFˆò"ÜÌÅs1#äÌFˆò#ðÌÅs‘$ÍáŠ!% Íá2Š1&<ÍáaŠ H&XÍᑊ H'pÍáÊqJ(äÍáùŠÓ*èÍá1‹d*øÍá´ƒ7B*Îáëƒ@B*<ÎÅs1*DÎFˆû‘*„ÎÅs1+ŒÎFˆû‘+ÌÎÅs—Ž,èÎánˆ8.ÏᢈÓC/ÏáÔˆåI1<ÏበJ1LÏá:‰ÓC1hÏái‰ H3€ÏញJ4¸ÏáÕ‰ H6ÔÏáŠJ7ðÏá2Š18 ÐáaŠ*J8(Ðᑊ*J9tÐáÊ=J:ÑáùŠÓ<Ñá1‹d<,Ñá´ƒ¿I<LÑáëƒ@B<pÑñ‚ñ@<ˆÑ‚²D“<”Ñr²h“>¤Ñ*Çæ–@ÈÑ:ÇH—AäÑLÇl—BÒ^Ç“—CÒpÇ·˜DÓ•Ça™G`ӯǜ™HtÓÍÇ[šJøÓäÇ‘šM ÔÈ´šN,Ô:ÈÑšOLÔƒÈïšPlÔ«ÈÿšRŒÔÃÈ ›S¬ÔÝÈD›T´ÔɆjTäÔ/ÉJ›UìÔ6ÉJ›UôÔDÉJ›UüÔLÉJ›UÕZÉJ›U ÕbÉJ›UÕxÉJ›U$ÕƒÉJ›U,ÕšÉJ›U4Õ¨ÉJ›U<Õ¾ÉJ›UDÕÌÉJ›ULÕãÉJ›UTÕñÉrOUtÕÊrOV”ÕÊO›WÄÕEÊ[œ[ôÕ]ÊD\ ÖrÊÙ^ˆÖ”Ê;ždØÖ£Ê¡ j8×ÁÊÓ l@×ÖÊ¡lH×çÊ¡lP×øÊÓ lX×Ë¡l`×!Ë¡lh×3Ë9¡lü×JË‹¡rœØjË¢{ü؃ËP¢}ٚ˅¢} ٨˞¢}Ù¶ËP¢}ÙÍË…¢}$ÙÛËž¢},ÙéËP¢}4ÙÌ…¢}<ÙÌž¢}DÙ,ÌP¢}LÙCÌ…¢}TÙYÌž¢}\ÙoÌ9¡}àÙzÌÄ¢ƒxÚ…ÌC£ŠØÚ£Ìy£Œàں̅¢ŒèÚÆÌª£ŒðÚÒÌy£ŒøÚéÌ…¢ŒÛõ̪£ŒÛÍy£ŒÛÍ…¢ŒÛ*ͪ£Œ Û<ÍÁ£ŒLÛ‘Íÿ£„ÜèÍ›¤˜HÞ{Η¦©,àÀÎW§·$áüÎ °ÊÌâ‚Ïi°ÖÔâ™Ï¨°ÖÜâ«Ï¨°Öäâ½Ï¨°ÖìâÐϨ°ÖôâáϨ°ÖüâòϨ°ÖãШ°Ö ãШ°Öã)Ш°Öã:Ш°Ö$ãKШ°Ö,ãVЮ°Ö4ãhÐʰÖ<ãzÐi°ÖDã’Ш°ÖLã¦Ð¨°ÖTãºÐ¨°Ö\ãÏШ°ÖdãâШ°ÖlãõШ°Ötã Ѩ°Ö|ãѨ°Ö„ã2Ѩ°ÖŒãEѨ°Ö”ãXѨ°ÖœãeÑ®°Ö¤ãÑʰÖ¬ã™Ñi°Ö´ã±Ñ¨°Ö¼ãÅѨ°ÖÄãÙѨ°ÖÌãîѨ°ÖÔãÒ¨°ÖÜãÒ¨°Öäã(Ò¨°Öìã<Ò¨°ÖôãQÒ¨°ÖüãdÒ¨°ÖäwÒ¨°Ö ä„Ò®°Öä’ÒʰÖä Òi°Ö$ä¸Ò¨°Ö,äÌÒ¨°Ö4äàÒ¨°Ö<äõÒ¨°ÖDäÓ¨°ÖLäÓ¨°ÖTä/Ó¨°Ö\äCÓ¨°ÖdäXÓ¨°ÖläkÓ¨°Ötä~Ó¨°Ö|ä‹Ó®°Ö„ä¡ÓʰÖŒä·Óì°ÖèäÂÓ@±Û<å×ÓŲÞ°åêÓó²à¸åÔ³àÀåÔ/³àÈåÔó²àÐå6Ô³àØåMÔ/³ààådÔó²àèå|Ô³àðå‰Ô/³àøå–Ôó²àæ®Ô³àæÄÔ/³àæÚÔó²àæòÔ³à æÕ/³à(æÕó²à0æ(Õ³à8æ@Õ/³à@æXÕó²àHæpÕ³àPæ~Õ/³àXæŒÕ@³à`æ£Õ^³àhæ²Õ@³àpæ½Õ@³àxæÊÕ¡à€æÙÕ@³àˆææÕ@³àæóÕz³à˜æÖ@³à æÖŽ³à¨æ)Ö@³à°æ5Ö›³à¸æHÖ@³àÀæUÖ@³àÈæbÖ…¢àÐæpÖ@³àØæ}Ö@³ààæŠÖü³àìæžÖ…¢âôæ®Ö…¢âüæÈÖ…¢âç×Ö…¢â çðÖ…¢âç×…¢âç*×…¢â$çA×…¢â,çbׂ´âPç~ס´ätçסæ|çš×¡æ„ç§×…¢æŒç¹×…¢æ”çË׳æœçÜ×@³æ¤çé×@³æ¬çö×…¢æ´çØ@³æ¼çØ@³æÄç Ø¿´æÌç3Ø@³æÔç@Ø@³æÜçNØè´æäç[Ø@³æìçhØ@³æôçvØè´æüçˆØ@³æè•Ø@³æ è£Ø‹¶æÀè®Ø‹¶èØèºØ·ê(éߨp·ë,êýØp·íDëÙ·ïì,Ù†jð$ì8ÙUºñ,ì]ÙUºñ4ì~ÙUºñ<ì¤ÙUºñDìÀÙ€ºñLìÞÙUºñTìÚUºñ\ìÚ€ºñdìFÚ€ºñlìpÚ¡ºñtìƒÚ¡ºñ|ì Ú¡ºñ„ì³Ú¡ºñŒìÐÚ¡ºñ”ìëÚ¡ºñœìÛ¡ºñ¤ì+Û¡ºñ¬ìPÛ¡ºñ´ìdÛźñ¼ì{Û¡ºñÄìÛ¡ºñÌìŸÛ¡ºñÔì¹Û¡ºñÜìÓÛ¡ºñäìåÛ€ºñììÿÛ€ºñôìÜ€ºñüì*Ü€ºñíAÜ€ºñ íaÜ¡ºñítÜ¡ºñí‡Ü¡ºñ$íšÜ€ºñ,í¯Ü¡ºñ4íÀÜ¡ºñ<íÖÜ¡ºñDíëÜ¡ºñLíûÜ¡ºñTí Ý¡ºñ\í"ÝUºñdí3ÝUºñlíIÝUºñtícÝ¡ºñ|íyÝ¡ºñ„í‹Ý¡ºñŒí©Ý¡ºñ”íÃÝ€ºñœíÕÝ€ºñ¤íæÝ¡ºñ¬í÷ÝûñPîÞh¼ò¬ð<Þ‚¼ôñ‹Þ·÷žÞ·øh ¸Þ ¾ùì ÏÞ7ÀúÀ 5ßXÁìÿßXÁ /àgÂ`Yà]Ã'D{à]Ã*h’àCÍ-¨3àÍ0Ü3ÂàµÍ34Ôà%Î4h5äà‰Î;°5úàÚÎ?ô5á$ÏCÜ6@áCÏE 7]á$ÏHüIsá†jJ JŠá¢ÓKLJ´á¢ÓMl]ÅspØO|]FˆÜØP ^ÅspØQ^FˆCÙRÔ^ÅspØSä^Fˆ¸ÙTÀ_ÅsâÙUØ_FˆëÙWø_Ås1X`FˆÚX$`Ås“cY4`FˆAÚZÀ`Ås“c[Ð`FˆsÚ\daÅs“c]taFˆ›Ú^¤aÅs“c_´aFˆÉÚ`ìaÅs¡›aüaFˆÛb\’’ïÐñ?d’¡ïJ›?l’¯ïJ›?t’½ïJ›?|’ËïJ›?„’ÙïJ›?Œ’çïJ›?”’õïJ›?œ’ðJ›?¤’ðJ›?¬’ðJ›?´’-ðJ›?¼’;ðJ›?Ä’IðJ›?Ì’WðJ›?Ô’eðJ›?Ü’sðJ›?ä’ðÜñ?ì’•ðÐñ?ô’£ðâñ?ü’¯ðÜñ?“½ðæñ? “Ôðæñ?“Þðæñ?“õðæñ?$“ñ ò?”“ñŒk@à“.ñŒkAp•NñÅòB–dñelE–wñóGŒ–ˆñ·I\—©ñNôJ”šÈñXôLœšèñ¨°L¤šøñD›L¬šòD›L´šò†jLPœò†jMD4ò öNžMò/öP0žÅs1Q<žáYò8öQHžá”ò>öRTžÅs­ïTlžFˆ8VøžÅs1WŸFˆ|öW ŸÅs1XŸFˆà¾X8ŸÅs1Y@ŸFˆ‚öYLŸÅsŠöZ\ŸFˆ¦ö[tŸÅs1\|ŸFˆ Œ\ˆŸÅsó_]˜ŸFˆ|ö^¬Ÿñ‚ñ@_¼ŸÅs¥$_ÌŸ5ó·ö`ÔŸƒBóÓaàŸRóÅöa쟃`óÓcøŸqóÕöc ƒóÓf ”ó/öf ƒŸóÓg$ ­óâög, ƒ¸óÓg8 ƒä{dg@ ÅsóögP ƒü{ÿöhX Åsl÷hp ƒ‡4Ojx ƒ‡ÿöj€ Åsã÷j  ƒ‡4Om¨ ƒ‡4Om° ƒ8‡î÷m¸ ÅsYømÈ ƒü{î÷nРÅsÀønà †ü{ÿöoð ÅsÇøo¡†‡4Op¡†‡ÿöp ¡ÅsÎøp0¡†‡4Oq@¡†‡4OqP¡†8‡î÷q`¡ÅsÕøqp¡†ü{î÷r€¡Ås1rˆ¡FˆÜør”¡Åsæøt¬¡Fˆ ùvÄ¡Ås1wÌ¡FˆÜøwØ¡Åsùyð¡Fˆ ù{¢Ås1|¢Fˆ;ù|¢Ås },¢Fˆ¦ö~L¢Ås1T¢Fˆ‚ù°¢Ås1€¸¢FˆëـĢÅs1Ì¢Fˆ‰ùØ¢Ås1ƒà¢FˆëÙƒì¢Ås©ù„ü¢Fˆþâ…£Ås©ù† £Fˆþâ‡4£ñ‚ñ@ˆ¨Áü¸úˆ¨ßü¸ú‰(¨øüÀúŠ8¨ýÍú‹@¨,ýÍú‹H¨kýrO‹p¨wýÓúŒ¨¨ŽýÓOŽô¨žýD›ü¨¯ýÿú(©»ýÍú’0©Çýû’8©ßýJ›’@©íý#û’x©þUº“€©'þUº“ˆ©7þUº“©HþUº“˜©[þUº“ ©iþUº“¨©yþUº“°©ˆþUº“¸© þUº“À©·þUº“È©ÐþUº“ЩëþUº“Ø©ÿUº“à©ÿUº“è©9ÿUº“ð©XÿUº“ø©yÿUº“ªœÿUº“ªºÿUº“ªÚÿUº“ªòÿUº“ ª Uº“(ª"Uº“0ª=Uº“8ªSUº“@ªkUº“Hª€Uº“Pª–Uº“Xª´Uº“`ªÊUº“hªáUº“pªUº“xªUº“€ª1Uº“ˆªSUº“ªmUº“˜ª…Uº“ ª¥Uº“¨ª½Uº“°ªÕUº“¸ªõUº“Àª Uº“ȪUº“Ъ'Uº“ت5Uº“àªEUº“èªTUº“ðªfUº“øªvUº“«‰Uº“«Uº“«±Uº“«ÄUº“ «ØUº“(«ìUº“0«ÿUº“8«Uº“@«*Uº“H«CUº“P«UUº“X«jUº“`«}Uº“h«’Uº“p«¥Uº“x«¸Uº“€«ËUº“ˆ«ÜUº“«ïUº“˜«Uº“ «Uº“¨«)Uº“°«=Uº“¸«WUº“À«tUº“È«Uº“Ы¬Uº“Ø«ÇUº“à«âUº“è«ýUº“ð«Uº“ø«1Uº“¬KUº“¬gUº“¬ƒUº“¬ŸUº“ ¬´Uº“(¬ÌUº“0¬åUº“8¬ÿUº“@¬Uº“H¬3Uº“P¬MUº“X¬fUº“`¬Uº“h¬œUº“p¬·Uº“x¬ãUº“€¬Uº“ˆ¬)Uº“¬>D›“˜¬R¡û“ø¬` ü”x­z ò•®’·–ˆ®Å$ý—ð®æ·ýš °ë ‚œ¼ð ªž|ñQ ¤¸ñl )§Ìñ‰ D©àñ— Mªôñ­ d«òÑ ¤¬óƒò Æ­ óÅsÔ­óÅs”Z®,óFˆã¯@óÅsê°PóFˆ–à±lóÅs“c²|óFˆ3³ìóÅsY´üóFˆ¢µ|ôÅsª¶”ôFˆÁ¸´ôÅs1¹¼ôFˆÌ¹ÀôÅsÔºÐôFˆã»èôÅs1¼ðôFˆø¼õÅs1½õFˆø½@õÅs1¾HõFˆø¾lõÅs1¿tõFˆø¿˜õÅs1À õFˆøÀÄõÅs1ÁÌõFˆøÁðõÅs1ÂøõFˆøÂöÅs1Ã$öFˆøÃHöÅs1ÄPöFˆøÄtöÅs1Å|öFˆøÅ öÅs1ƨöFˆøÆÌöÅs1ÇÔöFˆøÇøöÅs1È÷FˆøÈ$÷Ås1É,÷FˆøÉP÷Ås1ÊX÷FˆøÊ|÷Ås1Ë„÷FˆøË¨÷Ås1̰÷FˆøÌÔ÷Ås1ÍÜ÷FˆøÍøÅs1ÎøFˆøÎ,øÅs1Ï4øFˆøÏXøÅs1Ð`øFˆøÐ„øÅs1ÑŒøFˆøÑ°øÅs1Ò¸øFˆøÒÜøÅs1ÓäøFˆøÓùÅs1ÔùFˆøÔ4ùÅs1Õ<ùFˆøÕ`ùÅs1ÖhùFˆøÖŒùÅs1×”ùFˆø×¸ùÅs1ØÀùFˆøØäùÅs1ÙìùFˆøÙúÅs1ÚúFˆøÚ<úÅs1ÛDúFˆøÛhúÅs1ÜpúFˆøÜ”úÅs1ÝœúFˆøÝÀúÅs1ÞÈúFˆøÞìúÅs1ßôúFˆøßûÅs1à ûFˆøàDûÅs1áLûFˆøápûÅs1âxûFˆøâœûÅs1ã¤ûFˆãÈûÅs1äÐûFˆäôûÅs1åüûFˆå üÅs1æ(üFˆæ4üÅsçLüFˆ"édüÅs1êlüFˆ;ê„üÅs1ìŒüFˆ‚öì˜üÅs1í üFˆ_í¬üÅshî¼üFˆsïÐüÅsYðàüFˆ_ñýÅsòýFˆsô8ýÅsYõHýFˆöXý\¹±÷œýc¹ßøàýu ù$þ} =úhþ† mû¬þŒ ›üèþ“ mý,ÿ› Ôþpÿ¤ ÿ´ÿ¬ 3øÿJ¹c<S¹”€¼ ÊÄÍ × <Lá oè ¸þ  à  !  0. \= lQ ”g ¼w äŠ  — 8¦ Hº ²ˆÕ ²!Èê ²# ²%H ²'¤( ²)´A Ñ+ìN ù-$[ /pm Ñ1´{ ù3ø‰ 5Tœ Ñ7Œ­ ù9ľ ;Ô Ñ=Tä ù?˜ô Aô ÑC8ùE|'GØñ‚ñ@Iÿ‡XI(¨„KL鋺MX»‡õOhˆ6Q„x­‘S¢‡ÄV¨‘„âX´ÇZÀÐZ[ÌæÑ]Æ!_Æ‹0ÙB`Æ1aìÅs1aÁ!aÁ8ÙBb4ÁS1cPÅsclÆ!eðÆ‹0ÙBfÆ1gÅsDg0átßBiTÅsâjpÆ!lôÆ‹0ÙBmÆ1nÅs¡n4átßBpXÅsÑqhFˆÁr„ÅsÑs”Fˆ Ht¨ÅsúuÈÆ!xlÆ‹0ÙBy€Æ1zÅstz°átßB}ìÅsœ ~Æ!€XÆ‹0ÙBlÆ1‚|Ås‚át!ƒÀÅs2!„èá!ˆá8ÙB‰4áS1Š˜Ås2!ŠÀá!Žàá8ÙB áS1pÅs^!ŒáÓ…1’¨ÅsH’ÄátßB”ÅsŠ•,Fˆ!H–dÅsª—tFˆ!H˜¬ÿ‡¦"™Ø»‡ #›ˆ#@é‹å#Ÿlx­r$¡ ¢‡Ÿ$¤¸Ç:%¦ìІ%§$æ&&©`Ås}"«xFˆ~&­”Åsã"®¬Fˆ~&°ÐÅs6#±ðFˆ~&´ ÅsÌ#µ8Fˆ~&·pÅs4$¸Fˆ~&»ÔÅsö$¼ìFˆ~&¾<ÅsZT¿LFˆ~&À`ÅsZTÁpFˆ~&„ÅsÇ%äFˆ~&Æüõ¯'Ç  (Ë0?¨N(Í|Ås]'Ï”Fˆ~&ÑÄÅsŽ'ÒÔFˆ)ÓøÅsŽ'ÔFˆ)Õ,Ås1Ö4Fˆ&)Ö@Ås1×HFˆ4)×TÅs1Ø\FˆN)ØhÅs‰)ÙˆFˆø)ÜÜÅsë'ÝôFˆ;*ß$Ås1à,FˆN*à4Ås[*áDFˆf*âdÅs1ãlFˆ)ãpÅs1äxFˆ)ä|Cu*åŒÅs™*åœFˆÆ*æèÅsØ*çøFˆø*è$ÅsØ*é4Fˆ+êHÅs +ë`Fˆf*í|Ås +î”Fˆ)+ðÈÅsØ*ñØFˆ)+ò ½M+óT ãŽ+÷d ò¥+ù¬ ýsý¸ Ð+ÿÐ %þ+ä Ås(,ô FˆX,Ä'Ås1?Ì'Fˆ/0?Ô'Ås1@Ü'Fˆ0@à'Ås1Aè'Fˆ&0Að'ÅsSLB(Fˆ0C(Ås?0D((Fˆ0E@(ÅsL0FP(Fˆ&0Gh(Ås1H|(ƒÓHŒ(ƒ1H˜(Åsx/H°(ƒˆ1JÐ(Ås„0Jø(Fˆ 0N4)Ås„0O\)Fˆ´0S˜)Ås¡/TÈ)Fˆº,Y*Ås¡/Z0*Fˆº,_Œ*I.`”*S‰v`¤*\¾pa´*n¾paÄ*×0aÜ*%1d4+ ?1eD+½?1fT+öo1gœ+…1iØ+L¿1k0,Ví1n\,Ås2ql,Fˆ/0r„,Ås$2s”,FˆN*tÀ,Ås2uÐ,Fˆ/0vè,Ås1wð,FˆN*w-Ås2x(-Fˆ/0y@-Ås1zH-FˆN*zp-ÅsB2{ˆ-Fˆ/0}¤-Ås1~Ä-Fˆ0ä-ÅsW2‚ü-Fˆ/0„.Ås`2…8.Fˆ0ˆX.Åsm2‰p.Fˆ/0‹Œ.Ås`2Œ¬.Fˆ&0Ì.ÅsoÜ.Fˆ2‘ô.Åso’/Fˆ2“/Ås1”0/ƒ?–Ó”D/Ås1”\/ƒ§2”Œ/Åsâ1•ä/ƒ°0–„0ƒÂ0— 0ÅsÛ2˜¸0Fˆ/0šØ0ÅsÛ2›ð0Fˆ/01Ås1žH1ƒe¬wž”1ƒj…1žà1ƒö ž 2ƒô«Pwž¨2ƒÓ ´2ƒ¢®Q| Ä2ƒ ¬~w $3ÁÓ…1¡03Ås!¡@3Fˆ–3¢\3ÅsI{£l3Fˆ2¤ü32Ó3¥4U#4¥P4\?4¦t4v4§œ44¬Ä4¨ü4±45¿?1³D5Ò>s´T5Ø15µd5ài5¶t5é§5¸„5ïÞ5º”5 6¼¤5"W6¾´51³pÀÄ5F¾pÀÌ5P„6Àä5WŸ6Â6fÝ6Ä6k7Æ(6Ås1È06Œ(È86ƒŠÓÉD6à(ÉL6ƒÔzÓÊX6()Ê`6ƒ˜ÓËl6ƒä{dË”6Ås!ˤ6ƒü{ ̬6ÅsÙB̼6ƒü{¦ÍÄ6Ås7ÍÔ6ƒü{Ð7ÎÜ6Ås78Îì6†ü{ Ïü6ÅsS8Ï 7†ü{¦Ð7Åso8Ð,7†ü{Ð7Ñ<7ÅsY4Ñt7Fˆ/0×¼7ÅsY4Øô7Fˆ/0Þ<8ÅsoßL8Fˆ2à`8Ås3sáp8Fˆ2â9ÅsÁ8ã9Fˆ/0å09Ås!æ@9Fˆ2çÄ9Ås9èÜ9Fˆ0êl:Ås„9ë„:Fˆ/0í :ÅsH5î¸:Fˆ2ðP;ÅsÏ9ñh;Fˆ/0ó€;Åsç9ô˜;Fˆ/0ö´;Ås“5÷Ì;Fˆ2ùà<ÅsÏ9úø<Fˆ/0ü=ÅsB2ý(=Fˆ/0ÿD=ÅsJ: d=Fˆ0 X>ÅsÏ9 p>Fˆ/0 ˆ>Ås‚:  >Fˆ/0 À>ÅsJ: à>Fˆ0 Ø?ÅsŸ: ð?Fˆ/0 @ÅsŸ: (@Fˆ/0 H@ÅsJ: h@Fˆ&0 \AÅsÊ5 tAFˆ2 BÅs; 0BFˆ0 `BÅs6 xBFˆ2 üBÅsm2! CFˆ/0# 0CÅsm2$ HCFˆ/0& dCÅsV;' |CFˆ&0) `DÅsB6* xDFˆ2, ÐDÅs1- ØDFˆ§;- EÅs!. EFˆf*/ 4EÅsÇ;0 LEFˆº,2 `EÅsâ;3 pEFˆ‰,4 €EÅs<5 ˜EFˆº,7 ´EÅsÀ68 ÄEFˆ$<9 äEÅsRq: ôEFˆ<<; FÏ}<< @FÛÇ<> PF Š=D ÐF7·=J GA>M xGTH>V àG^u>[ DHq´>c lH}ÿ>f ¼H–@?j ÈH§t?k (I»Å?q LIÛ,@t ˆIåŽ@x ôIïÜ@{ J 8A J$ lA‚ (J= ŽA… 8Jñ‚ñ@ˆ `JÅs£Aˆ pJƒˆÏA‰ ¤JÅs£AŠ ´JƒˆÏA‹ èJÅsÜAŒ KFˆ/0Ž KÅsÜA 0KFˆ/0‘ HKÅsÜA’ `KFˆ/0” xKÅs–<• °KFˆ~&› |LÅsÐpœ ŒLFˆ2 ¸MÅs%Cž ÈMFˆ0Ÿ àMÅs%C  ðMFˆ0¡ NÅsRq¢ NFˆ±C£ ˆNÅsGr¤  NFˆáC¦ ¼NÅsGr§ ÔNFˆD© ôNÅsm2ª OFˆ/0¬ (OÅsW2­ @OFˆ/0¯ \OÅsU=° tOFˆ/0² OÅsHD³ àOFˆ0» $PÅsƒD¼ dPFˆ0à ¨PÅsƒDÄ èPFˆ&0Ë ,QÅsƒDÌ lQFˆÐDÓ RÅsrÕ 0RFˆEEÖ ÀRÅsr× ÐRFˆEEØ tSÅs1Ù |SFˆf*Ù €SÅs1Ú ˆSFˆ)Ú ŒSÅs1Û ”SFˆ)Û ˜SÅsÖEÜ ¨SFˆ/0Ý ÀSÅsôEÞ èSƒˆÏAâ HTÅs¤mã XTFˆ/0ä lTÅsMFå œTƒˆÏAê UÅs¥$ë UFˆN*ì üUÅswí VFˆ¼Fî 0VÅsÇFï HVFˆº,ñ pVÅsÙFò ˆVFˆ)ô  VÅsÙFõ ¸Vƒˆ1÷ ÔVÅsëF÷ äVFˆ/0ø øVÅsGù Wƒˆô,ý lWÅsGþ ŒWFˆf* ÌWÅs1 ÔWFˆ) ØWÅs+G ðWFˆ˜G ðXÅs¨G YFˆ¼F 8YÅs3s HYFˆ2 ØYÅs1 àYFˆÞG ìYÅsXs üYFˆ<< ZÅsXs $ZFˆf* 4ZÅs1 Гå&Ì`? T”'ºW@ ¨”';aA ì•$'ÆaB —7'bC l˜G'›bD ü™W' òE \šh'cF  ›t'ºWG ô›'·H 4œ'scI ˜œ˜'ÌcJ ¥'!dL ¸¸'®dM džÌ'eN ´žè';eP Ÿ(KeR XŸ(_eT ¬Ÿ\(ãeU H¥c(ëeV l¥l(üeX ”¥r(fY À¥x(f[ ô¥~( f^ ,¦‹(9fb |¦¾(9ff ̦Ï(Tfj §ä(DZl H§ð(dfm ”§)fo P¨)Žfq Œ¨)“ls ¬¨%)†jt ܨA)Ÿfu ©R)@kw (©_)Ply H©u)j~ `©‹)j€ x©­)šk‚ Ü©À)Œk„ XªË)Þf… تÖ)škˆ @«â)ÆkŠ °«ñ)òfŒ ¬*ïjŽ €¬*šk‘ œ¬&*k“ ø¬?*k• L­P*%k– Ì­a*1k˜ T®t*sk› €®¡* g ¯·*gŸ °¯É*-g¢ P°Ù*@g¥ ±ë*Ðj© p±+¿j¬ б+þj® €²3+j² ø²?+jg´ X³M+Lk¶ „³S+…g¹ ä³g+[k» <´t+ëg½ D´+ög½ d´®+h¿ x´Â+ËOÁ ”´Ù+0h ¬´ð+‰hà @µ8,‰hÈ H¶I,eÍ |¶\,iÏ ´¶o,iÑ Ð¶Wñ%iÓ ä¶{,iiÕ T·§,¯iÚ ˜·È,ÖiÝ ì·Ø,jß D¸á,qjâ ¬¸ó,qjä è¸ø,ïšæ ¹-Ykè „¹-‘kê ´¹,-­kë @º8-Ìkì ¤ºJ-ækî øºb-ïkð »t- lð h»€-lñ ”»Œ-)lò 컚-Uló ü»¢-…mõ t¼ª-Ømö œ¼³-òm÷ ´¼¾- nø ì¼É-!nù ½Ð-4nû (½Ú-pü <¾á-3pý x¾ë-3pþ ”¾ô-Dpÿ À¾.Xp ì¾.Dp ¿!.‘p \¿..Ðp ¤¿?.,q Ì¿N.:r @Áq.t xÅ}..t €Å—.Kt ˆÅ².†t ¬ÅÉ.t ¸Åî.òt üÆ/+u ¤Ç/Iu ÀÇ /Êu €É>/ÿu ÔÉJ/v ÜÉb/v äÉ/Ôl Ê¥/Åv dÊÖ/2x €Ìè/œl Í0»l DÍ0ªl! ”ÍÅsvx" ¸Íƒ+0d% ΃40˜x% ¸ÎƒP0¬x& ðÎÅs1' øÎFˆ±x' ÏÅsN( ÏFˆ|ö) (ÏÅsN* 8ÏFˆÆx+ LÏÅs1, TÏFˆÍx, ÏÅs1. ˜ÏFˆØx. ÐÏÅs10 ØÏFˆâx0 ÐÅs12 ÐFˆâx2 XÐÅs 4 hÐFˆìx5 ¤ÐÅs16 ¬ÐFˆôx6 ÀÐÅs18 ÈÐFˆy8 ðÐÅs19 øÐFˆy9 ÑÅs1: $ÑFˆ>ö: 0ÑÅs&y< @ÑFˆ¹k= PÑÅsN> `ÑFˆ? tÑÅs&y@ „ÑFˆ-yA ˜ÑÅs1B  ÑFˆAyB ¬ÑÅsIyC ÔÑFˆG |ÒÅs&yH ŒÒFˆ-yI  ÒÅsyJ °ÒFˆ¹kK ÀÒÅsNL ÐÒFˆà¾M äÒÅs1N ìÒFˆšyN øÒÅs O ÓFˆšyP ÓÅs¥$Q ,ÓFˆšyR @ÓÅs!S PÓFˆ°yT dÓÅs¥$U tÓFˆ¾yV ˆÓÅs1W ÓFˆËyW œÓÅsàyX ¬ÓFˆûyY ÀÓÅszZ ØÓFˆ¾y\ ôÓÅs1] üÓFˆËy] ÔÅsHz^ ÔFˆ`z_ (Ôƒ®0”z` 0Ôƒ·0d` 8ÔƒÀ0 z` @ÔÅs«z` `ÔÅs&yc pÔFˆ¹kd €ÔÅs1e ˆÔFˆÁze ”ÔÅsÒzf ¤ÔFˆézg ¸ÔÅsÿzh ÈÔFˆ{i ÜÔÅs{j üÔFˆl{m LÕÅsu{n \ÕFˆl{o ˆÕÅs„{p  ÕFˆl{r àÕÅs§{s øÕFˆl{u 0ÖÅs»{v @ÖFˆl{w TÖÅs1x \ÖFˆÁzx hÖÅsÿzy xÖFˆ{z ŒÖÅsÊ{{ ¤ÖFˆl{} ìÖÅsú{~ üÖFˆl{ ×Ås |€ @×Fˆ"|ƒ l×Ås¥$„ |×Fˆ"|… ×Ås+|† ¨×Fˆ2|ˆ Ä×Ås+|‰ Ü×Fˆ>|‹ ø×ÅsK|Œ ØFˆ2|Ž ,ØÅs1 4ØFˆËy @ØÅsày PØFˆûy‘ dØÅs1’ lØFˆ_|’ xØÅsr|“ ˆØFˆ…|” œØÅs1• ¤ØFˆ…|• ´ØÅs1– ¼ØFˆ…|– ÌØÅs1— ÔØFˆ…|— äØÅs’|˜ ÙFˆ…| dÙÅs1ž lÙFˆ…|ž |ÙÅs1Ÿ „ÙFˆ…|Ÿ ”ÙÅs1  œÙFˆ…|  ¬ÙÅs1¡ ´ÙFˆ…|¡ ÄÙÅsî|¢ ÔÙFˆ…|£ èÙÅs+|¤ ÚFˆ…|¦ 8ÚÅs1§ @ÚFˆ…|§ PÚÅs1¨ XÚFˆ…|¨ hÚÅs1© pÚFˆ…|© €ÚÅs1ª ˆÚFˆ…|ª ˜ÚÅs}« ÀÚFˆ…|¯ ÛÅs+|° ÛFˆ…|² TÛÅs1³ \ÛFˆ…|³ lÛÅs1´ tÛFˆ…|´ „ÛÅs1µ ŒÛFˆ…|µ œÛÅs1¶ ¤ÛFˆ…|¶ ´ÛÅs1· ¼ÛFˆ…|· ÌÛÅs1¸ ÔÛFˆ…|¸ äÛÅs¹ ôÛFˆ…|º ÜÅsN» (ÜFˆ…|¼ LÜÅs5}½ \ÜFˆ…|¾ €ÜÅs:}¿ ÜFˆ…|À ´ÜÅs?}Á ÄÜFˆ…| èÜÅsD}à øÜFˆ…|Ä ÝÅsI}Å ,ÝFˆ…|Æ PÝÅsN}Ç `ÝFˆ…|È „ÝÅsS}É ”ÝFˆ…|Ê ¸ÝÅs¥$Ë ÈÝFˆ…|Ì ìÝÅsX}Í üÝFˆ…|Î ÞÅswÏ 0ÞFˆ…|Ð TÞÅs]}Ñ dÞFˆ…|Ò ˆÞÅs1Ó ÞFˆ…|Ó ¬ÞÅs}Ô ÔÞFˆ…|Ø ßÅsb}Ù 0ßFˆ…|Û LßÅs1Ü TßFˆ…|Ü dßÅs|}Ý tßFˆ…|Þ ¸ßÅs1ß ÀßFˆ…|ß ÐßÅs à àßFˆ…|á ôßÅsî|â àFˆ…|ã àÅsŒ}ä (àFˆ…|å <àÅsî|æ LàFˆ…|ç `àÅsŒ}è pàFˆ…|é „àÅs1ê ŒàFˆ…|ê œàÅs¥$ë ¬àFˆ…|ì ÀàÅs1í ÈàFˆ²}í ÜàÅs1î äàFˆâ}î øàÅs1ï áFˆÁzï áÅsÿ}ð $áFˆ~ò <áÅs)~ó LáFˆJ~ô `áÅsf~õ páFˆëÙö €áÅsn~÷ áFˆz~ø  áÅs~ú ¸áFˆ¹kü øáÅs”Zý âÅs1þ âÅsW8þ (⃛Z 0âÅsª~ HâFˆëÙ `âÅsÆ~ €âFˆ–à ¬âÅs1 ¸âáYòî~ ôâá”ò 8ã2 DãÅs+ dデ4O lデd tãƒ8‡šŒ |ãƒä{d „ãæÃux ðãæÃud äæÏu hä2^ øäæÏup \åæÏum €å2‹ ˆåÅs»{ ˜åƒü{œ  åƒä{d ¨åÅs1 ´åáYòª Äåá”ò± ØåÅs1 àåFˆ× LæÅs)~ \æFˆ€ ”æÅs)~ ¤æFˆŽŒ ÐæÅs1 ØæFˆ× çÅs)~! çFˆk€" \çU2“€# ¬çb2“€$ ðçj2Ÿ€% èr2´€& üè}2Ú€( œéˆ2m+ ꃾ2“. (êƒÅ2vŒ. 0êƒÒ2¥Y. 8êÅs™. XêÅs11 `êFˆ¥1 têÅs¬2 „êFˆÀ3 ˜ê03O‚4 øê<3¯‚7 ëN3Mƒ9 lë\3­ƒ< ˆën3öƒ> œë{38„A ¬ë…3ÍúD ´ëœ3ÍúD ¼ë,ýÍúD Äë½3ÍúD Ìëê3rOD øëù3V„E @ìÅsãƒF PìFˆ‰„G hìÅs„I xìFˆ½„J ì248…L Ôì;4S…O äíR4…R ðîd4å…V Œó{4y†Y ´÷4“†] ð÷—4†_ ø£4ô[a Pø²4Ò†b |ø½4‡d ¨øÈ4>‡f ÜøÙ4g‡h ùä4œ‡j 4ùï4¦‡l @ù5î‡m \ú5ú‡p lþñ‚ñ@s 0ÿÅss @ÿFˆˆt TÿÅs1u \ÿFˆ!ˆu |ÿÅs1w „ÿFˆ-ˆw ”ÿÅs1x œÿFˆ±xx ¨ÿÅs¥$y ¸ÿFˆ"Yz HÅs1{ PFˆ6ˆ{ \Ås1| dFˆKˆ| ˆÅs1} Fˆy} ´*5~ˆ~ ÄP5~ˆ€ Ð`5߈‚ ä‰5‰† ø°5G‰‰ *5½Œ Â¸Û ,Ì5ƒ‰Ž <Þ¸ü L¹ü’ \Ås¬‰” lFˆ¹‰• ˆÅs¬‰– ˜FˆÆ‰— ´ÅsÞ‰˜ ÌFˆûKš èÅshˆ› øFˆŠœ ,Ås1 4Fˆf* 8Ås½ˆž XFˆyŠ¡ xÅs¬‰¢ ˆFˆÆ‰£ ¤Ås£Š¤ ´FˆÆ‰¥ ÄÅs1¦ ÌFˆªŠ¦ ÐÅs1§ ØFˆ¯Š§ äÅs1¨ ìFˆf*¨ ðÅs1© øFˆf*© üÅs£Šª Fˆf*« A6㊬ $h6 ‹± lˆ6)‹´ ¤”6)‹· Ü 6<‹º ì½6[‹¾ èÊ6}‹à Ö6ÍúÈ ˜ì6”‹È ¸%J›Ê ÀkýrOÊ èü6rOË  7´‹Ì d7ÍúÍ l-7Û‹Í °A7ò‹Ï ä[7%ŒÑ 8 x7%ŒÕ p •7KŒÙ „ §7aŒÚ ˆ ²7jŒÝ Ø Ç7xŒà H Ö7µŒã   ð7ãŒæ   8{8é 18›é < H8¼ì D X8Âì à k8õñ À88Ž÷ ¡8ÓŽþ ”ª8t·8  á8’œô8Ì 9)ü#9D‘Ø#B9š‘$ä$T9—’,8%g9;“0è%s9”6H&ƒº9Ó8P&ƒÊ9Z”8X&ƒÝ9Ó8`&ƒê98l&ƒú9c”9x&ƒ ::„&Åsm”;¤&Ås‰”>¼&Fˆ¦”@Ô&Ås«”A'Fˆ¦”FD'ÅsÒ”Gt'Fˆ¦”L°'Åsû”MØ'Fˆ¦”Q(Ås!•R0(FˆE•U`(Ås!•W€(FˆE•Z°(Ås!•\Ð(FˆE•_)Ås!•a )FˆE•dP)Ås!•fp)FˆE•i )Ås!•kÀ)FˆE•nð)Ås!•p*FˆE•s@*ÅsL•u`*FˆE•x*ÅsL•z°*FˆE•}à*ÅsL•+FˆE•‚0+ÅsL•„P+FˆE•‡€+Ås!•‰ +FˆE•ŒÐ+Ås!•Žð+FˆE•‘ ,Ås!•“@,FˆE•–p,Ås!•˜,FˆE•›À,Åsp•ð,FˆE•¢,-Ås–•¤d-FˆE•ª¤-Åsµ“¬´-Fˆ¯Š­ø-Åsò’®.FˆÙ–±D.ñ‚ñ@´t.y:rO´È.–:'—µ/Ÿ:âñ¶/ª:=—¶ /½:S—¹¼/Î:p—» 0×:ž—¼|0â:ë—½à0;˜˜Âä4%;͘Ç 5.;û˜Ê85E;™Í\5Q;m™Ð7g;´™ÖD7m;Å™Ùl7€; šÜØ8˜;Ššâü8;›æ`9­;b›çÜ9¾;t›éä9È;t›éì9Õ;°›é<:ð;œêŒ:< œëØ:< œì$;< œí\;(<.œîˆ;><4œðX<P<…‘ò˜<\<Cœôà<X8Tœ÷=e<Yœø$=t<lœú0=‚<~œûd=¢<~œ”=Ã<X lAá<\ž(Bö<‡ž`B =§ž#pB%=èž)|BE=;Ÿ,ˆBQ=‚Ÿ/”B“=X0ÀJ±=_¡:K;“¡>ôNÜ=›¡@Oê=§¡B4Oû=´¡ELO>Ä¡GxO&>ΡI O4>Õ¡J¸OI>ç¡MÄOÅsñ¡PäOƒ‡dSìOƒ‡dSôOƒ8‡ù¡SüOƒä{dSPÅs1S PFˆ¢SlPÅs1TtPFˆ<¢TìPñ‚ñ@UQÅs¥$UQñ>Z¢VQƒý>ÓV(Q ?Z¢V0Qƒ#?ÓV@þ¥Ô<]ƒK@ÓÕH][@ ¦ÕT]ƒk@Ó×`]~@¦×h]ƒŒ@ÓØt]@'¦Ø|]ƒ¨@ÓÙˆ]¶@C¦Ù]ƒÃ@ÓÙœ]Ò@I¦Ù¤]ƒà@ÓÚ°]ƒä{dÚ¸]ÅsyÚÈ]ƒü{[¦ÛÐ]ÅsĦÛè]ƒ‡4OÝð]ƒ‡4OÝø]ÅsK§Ý^ƒü{[§Þ^Åsû§Þ ^ƒü{¨ß(^Ås ß8^ƒü{4Oà@^Åsð¨àP^†ü{[¦á`^Åsü¨áp^†‡4Oâ€^†‡4Oâ^Ås©â ^†ü{[§ã°^Ås©ãÀ^†ü{¨äÐ^Ås ©äà^†ü{4Oåð^ñ‚ñ@å_Ås¥$å_}A-©æ_ƒ‹AÓç$_œA9©ç,_ƒ´AÓè8_ÏAA©è@_ƒÞAÓéL_ðAR©éX_ƒBÓëd_Bd©ëp_ƒ-BÓí|_BBw©í„_ƒPBÓí_`B}©í˜_ƒoBÓî¤_ƒä{dî¬_Ås©î¼_ƒü{—©ïÄ_Ås ïÔ_ƒü{4OðÜ_Åszªðì_ƒü{‰ªñô_Åsùªñ `ƒ‡µó`ƒ‡‰ªó`Ås«ó4`ƒ‡4Oõ<`ƒ‡‰ªõD`ÅsÏAõT`ƒü{¡ö\`Ås^¬öl`†ü{—©÷|`Åsj¬÷Œ`†ü{4Oøœ`Åsv¬ø¬`†ü{‰ªù¼`Ås}¬ùÌ`†‡µúÜ`†‡‰ªúì`Ås„¬úü`†‡4Oû a†‡‰ªûaÅs¬û,a†ü{¡ü±}äoáÓ…1pÅsZTpÆ„‚µ€pƤ„a±€@pÆ·„a±dpÆ‘„ßB‚˜piGmmƒœpkýrOƒÄpwýÓú„üpŸ?J›†qsGJ›† q¸?J›†q~GJ›†q‹GÍú† q¥GÍú†$q½GÍú†(qÒGÍú†,qèG†±†ˆqH ±‰´qH᱌4r>H²`r^H‘kŽ rnHd²ÜrH²¨s¾H³”ttñH=³–ÈtIr³™ uI³›Œu"I¦³¸u,I³ŸÐu>I¯³¡üuHI¹³£vaIë³¥wxIý³¨8w‘IN´«˜w£I]´­Èw¹Ih´¯èwÌI}´²|xêI‰´µœxJš´¸yJ£´ºy#JJ›º y.JJ›º(y;JJ›º0yFJJ›º8ySJJ›º@y^JJ›ºHykJJ›ºPyvJJ›ºXyƒJJ›º`yŽJJ›ºhy›JJ›ºpy¦JJ›ºxy³JJ›º€y¾JJ›ºˆyËJJ›ºyÖJJ›º˜yãJrOº,zïJâñ»0züJâñ»4zKÃO»{KËO¼|+KÒ´½(|@Kï´¾Ä|ZKµÀà|gKµÂ<}rK/QĈ}KTQÅÄ}•KaQÆ~­KmµÇL~·KÍMȸ? 2ˆã¸@09ˆ¹A@ÕM¹BLÛM¯CXáM.·DdìMS¹F€õMS¹HœNS¹J¸NS¹LÔ N®¹Nä+N®¹Oô@NºP8ŽIN,ºRhŽPNâñSlŽx3@ºS¬Ž^N@ºV,nNȺYàrN2»\’zNÈ»`,“†NH¼cÀ“™NȺd„” N–¼g•¤NÓ¼jt•©Nè¼l䕲N\½oX–·N„½rÌ–¾N„½t@—ÅN ½vT—ÌN ½yx—ÔNù½|˜ÞN!¾€t˜æN!¾ƒÔ™ìN±¾†hšüN뾊”šO«¿<›*Oö¿”€›¨÷± n@lø±%ïA4ùÿQpïC@ùžSïETù}‚°ïGdù쇺ïI°ù”QÏïKüùÿ‡éïM@ú£QõïO„úÿQðQÈú]QðS0ûòS+ðU¬ûìT1ðWØû‡SðZü÷T1ð\4ü´‡Sð_dü»‚_ða€üÅsmðb˜üFˆÆ‰dÀüÅs’ðeØüFˆ¦ðgýÅs¶ðiýFˆÆ‰k@ýUåðlPýU ñm`ý§åðolýU ñpxý‚›ërˆý6U}ñr˜ý]Q¶ñsØýì‡ÖñuHþtQ÷ñw¤þ”Qòyÿ´‡9ò{”ÿ‡9ò} RpòØIU¶ò‚èPUó„ø»‡Ió‡ ë¯Ió‰,ÿ‡vó‹T£Q¬ó|R×ó¸é‹ô’à´RPô”¸R–ô–€A£Èô™¤ª‡÷ôš$‹Põœt*ˆKõž‡°dõ Tx° õ¢¼“‚öõ¤h}‚ö¥ˆ»‚¶€¦8χMö§¬&Szöª<xU­ö¬L­ƒtë­ˆÿQäö¯˜†U÷±ŽUe÷µ´ÆM{î¸À2ˆjî¹h ÍM‚㺌 9ˆ8»< ÒŒù÷¼L šU õ½„ Ç_ø¿¼ x­°øÀô £UÒøÃ@ ~SùƤ °UùÈÔ ‘SKùË8 ½UcùÍL ÐU ùѤ ÙUúÓ ûU\ú×x VÌúÜÄ  VÚ€ßVÚ€à<)±ßûáLD°Ú€ã”V¼üäàZ±¼üæŽ=Ú€è,'VýéT»ìU€ë¼#±oýì,±U€îä±oýï ›°U€ñLŸ°Çýò³°U€ôÀ·°Çýõˆ}°Ió÷Ài° õùøn°Ióû0|Rzþý\RzþàÏ‚U€Tû¯U€Ü°U€€ÅsÔðFˆÁþ¨ÅsñÀFˆÁþ ÔÅsqñ äFˆÁþ ôÅs©ñ  FˆÁþ(Ås›ò@FˆÁþ\Åsãò|FˆÁþ¤ÅsÑ´Fˆ‘ÿÄÅs ƒÔFˆªÿäÅs™óôFˆªÿÅsЉFˆàÿ$Åsô 4Fˆªÿ!DÅs1"LFˆÿÿ"XÅs1$`Fˆ)$„ÅsÂô&”FˆÁþ'¨Ås€õ(èF]…(C/0Fj…10üFp…Ó08F… 0DFJ…7B0pÅs ö0€FˆÁþ1 ÅsdN2°Fˆ”3ÄÅsÈö4ÜFˆ”6ÅsÄ÷7 FˆÁþ84Ås!9DFˆÁþ:XÅs ø;F]…(CA„Fj…1B4 Fp…ÓBh F… Bt FJ…7BB  Ås=øBØ F]…:Hì!Fj…1I˜"Fp…ÓIÐ"F…TIÜ"FJ…_I#ÅsøID#F]…(CPX$Fj…1Q%Fp…ÓQL%F… QX%FJ…7BQŒ%Ås|ùQÜ%F]…°Y'Fj…1Z4(Fp…ÓZh(F… BZt(FJ…¼Zœ(ÅsûZ¼(Fˆ])Ås<û^4)Fˆf*`)ÅsdNa )FˆÁþb°)ÅsHcÈ)Fˆ~&e4*Ås1f<*FˆßfL*Ås1gT*Fˆ gˆ*Ås½ûh *Fˆ¯jô*Ås ük4+F]…(Crd,Fj…1s-Fp…ÓsH-F… sT-FJ…7BsŒ-Ås~üsÜ-F]…(C{/Fj…1|È/Fp…Ó|ü/F… |0FJ…7B|H0Ås½û|`0Fˆ~Õ~0ÅsdN 0Fˆ~Õ€È0Åskà0Fˆ~&ƒ41Ås1„<1Fˆ³„h1Åsý…€1Fˆ9‡Ä1Åsäýˆü1F]…(CŽø2Fj…1¨3Fp…ÓÜ3F… è3FJ…7B4Ås€õT4F]…(C–¨5Fj…1—t6Fp…Ó—°6F… —¼6FJ…7B—è6Ås/þ—(7F]…(Cž`8Fj…1Ÿ9Fp…ÓŸD9F… ŸP9FJ…7BŸ|9jVzŸˆ9pV¿ ˜9ŽV£°9¬V}¦:ÚV±§t:ôV±©°:W«Ì:Wö­Ü:Wˆ®;0Wª±(;ƒÓV1Î?ƒöW ÎL?ÁX§2Îd?Á ž… Ïp?Á î…¡Ï€?Á†Óϸ?ÁW†1ÏÔ?ÁÓ…1Ïè?Ås!Ïø?Fˆf*Ð,@ÅsìÑD@Fˆ~ÕÓd@Ås<Ôt@FˆÁþÕˆ@ÅsÐÖ°@áž…l~ÚÈ@áî…¡Úä@á†ÓÚ\AáW†1ÚxAáÓ…1Ú|AÅsÐÚ¤AFˆQ ÞÄAÅsdNßÔAFˆ~ÕààAÅs‘RáðAFˆp âBÅs‚ ä BáÓ…1æ8BÅsgæXBÆ„‚µé`BƤ„!épBÆ·„!ê€BÆ‘„"±ë¼BpX ìäB‹X‘ í0CXØ î\C­X ïˆCñ‚ñ@ð”CÅs1ðœCçX/ ð¤CƒðXÓð°CûXA ð¸CƒYÓñÄCƒXh ñÌCƒYÓòØCƒä{dòDÅs1òDÅs!òDƒü{ ó DÅs¼ ó0Dƒü{ù ô8DÅs[ ôHDÅsw õXD†ü{ öhDÅs“ öxD†ü{ù ÷Æ yX( ÷Æ cXÚ ÷ˆDÅsÑ ÷¤Dƒ/Yù ù°Dƒ=Yê ù¼DE§ÉùøDÁ FY( ûEÁ ƒYÚ ûEÅs û,EFˆ”ýLEÅsEþ\EFˆoÿÌEÅs¼ ìEƒ/Yù øEÁ ž… 4FÁ î…¡HFÁ†ÓÔFÁW†1ðFÁÓ…1 GÅsâ; GƒÎY7B,GÁ FY( 8GÁ ƒYÚ XGÅsÑhGFˆo˜GÅsâ;¨GFˆf*¸G§OY°ÔG²OY°ðG0þüGçY pHÌP4 €HÐPv ¤HëYÈ ´HðYìHøYiIÿY‡TIZÂtIZ ˜IZTüI%ZÏ!TJ5Zç#xJXOÆ|†1>˜OÅs*>ÀOáž… BØOáî…¡BôOá†ÓB€PáW†1BœPáÓ…1B¬PÅsªBÌPáž… EQáî…¡E8Qá†ÓEtQáW†1EQáÓ…1E QÅsäE¼QÆN[4GRÆ|†1GRÅsBG0RFˆûKILRÅs”JtRáž… NRáî…¡N°Rá†ÓNdSáW†1N€SáÓ…1N„SÅs\N´Sáž… SÌSáî…¡SèSá†ÓSTáW†1S¬TáÓ…1SÈTÅsÄ÷SðTƒtQ T(UÁ ž… T4UÁ†ÓTdUÁ î…¡TtUÁW†1TUÁÓ…1T”UÅs!T°UÁ ž… U¼UÁ î…¡UÌUÁ†ÓUäUÁW†1UVÁÓ…1UVÅsèU Váž… W0Váî…¡WHVá†ÓWXVáW†1WtVáÓ…1W´VÅsKCWÐVÆJ…7BYÜVÆ]…(CYWÆj…1ZDWÆp…ÓZHWÆ… ZXWk[»Z`Wv[Z|WÅså[WáF?&¥\¤Wk[A^¬Wƒ[S^¸W›[A_ÀW¥[¨_ÜWÅs1aèWáYòNöaôWá”òFöbXÅs¥$dXáYòNöe(Xá”òFöf4XÅs1h@XáYòNöhPXá”òFöi\XÅs…kxXáYòNömŒXá”òFön XØŽúpØXK‚qàXD‚rìX_‡+søXχ7tY½MVw@Y´‡uzdY‡u|ˆY쇉~¬Yÿ‡ž€ÔYE§¹‚øY9ˆã„(Z2ˆñ…TZQ†`ZQ‡lZË[ˆxZÑ[‰„ZtQ6ŠZ~¥NœZ2Q_‘[×[m“4[ç[«—Œ[ó[Μì[y‡û¡ü[]Q ¤ \ì‡2§ \”QH©8]ÿ‡‰«ˆ]£QÑ­Ø]û£¯(^\°|^‹L±˜`Åst¹°`Fˆ´»Ð`Ås°½è`Fˆ´¿aÅsÁ$aFˆ´Â4aÅs*ÄTaFˆ´Çta>\ÉÈaS\Î8bl\2ÕŒbs\YÛÀb~\xàc~\Šãlc~\•åˆc~\Yé¼c\ýØîÈc¤\íØï d©\þãñäd±\õâó4eÇ\ãõXeÛ\ŠöLfî\õâø˜f]ãúÔf¤N‘åû g] ý`gÌPUåÌg,]J$hÐPpåœh@]Ã'Ýd~Àb>'Ýl~¬ B'Ý|~¤ I'ÞŒ~J¹4ßœ~S¹Gà¬~× P'á¼~Í Y'âÌ~¼ `'ãÜ~„‚Ρä$á ~'å4Îb•'æ„Q§k$èÌäbÂ'êÜëbÔ'êìcÂ'ë€ c(ë$€c'ë0€c"(ì<€"c¸úî@€+c:(ïT€;cR(ñl€Uˆ¸úôx€Sc¸úõ„€Xc¸úö€]c¸ú÷œ€bc‰(ø¨€hc¸úú´€pc¸úûÀ€tc¸úüÌ€zc¸úýØ€€c'þ䀅c¸úÿð€‰c¸úü€cå(”c¸ú˜c¸ú c¸ú,¡c¸ú8¦c¸úDªc¸úP¯c0)\Ác²& ÔÅs$% ìFˆ8‚Åse% ‚Fˆ«)<‚Ås1D‚Fˆ»)P‚Ås1X‚Fˆ½„d‚Ås1l‚Fˆ»)x‚Ås1€‚Fˆ»)Œ‚§OY°¨‚²OY°Ä‚Üc:'Ђèc:'Ü‚ôcU ƒdÐ)Tƒ d * ˜ƒd„*#ðƒ%d¾*(4„0dÖ*+Œ„;d+0ЄGd(+3…Rdb+8\…^dz+;´…id´+@†udÌ+CX†€d,H¤†d,K솘dX,P0‡£dp,Sx‡®dª,X¼‡ºdÂ,[ˆÅdü,`HˆÐd-cˆÛdN-hÔˆådn-kŠñd{-o(Šýd“-rd‹ e -vp‹eÖ-y¬‹%e.~¸‹2eh.‚ŒCe².ˆTŒTeá.ˆŒleò.‘ Œve/“€e/•ˆe/—x”e/™e/›ð©e/޲e./Ÿh޾e./¡€ŽÈe8/£ØŽÔe8/¥ðŽÝeC/§HéeC/©`óeM/«ÀÿeM/­Øf\/¯8f\/±Pfk/³°*fk/µÈ4fz/·(‘@fz/¹@‘Kf‰/»œ‘Xf‰/½´‘bf˜/¿’of˜/Á,’yf·/à’†fÐ/ÆÈ’‘fÚ/ÈL“¢f0Ìl“¶fJ0Ðä“Äfn0ÓP”Òf…0×À”g±0Ü4•gç0âÜ•/gF1é„–?g1ñ`—^gö1ú@˜ng|2ˆ˜}gŸ2À˜ŽgÃ2™ g¸ú ™«g¸ú (™·g¸ú 8™Ãg¸ú H™Ïg‰( \™Üg¸úl™ëg¸ú|™ög¸úŒ™h¸úœ™h¸ú¬™ h'¼™,h¸úÌ™7h¸úÜ™Dhå(ì™Ph¸úü™[h¸ú šgh¸úšrh¸ú,š~h¸ú<š‰h¸úLš•h0)Æ ÆhÓ Æ ÓhÓ Æßh1 Æ “† `šÅs1 tšÁ ž… €šÁ î…¡ šÁ†Ó àšÁW†1 ôšÁÓ…1 øšƒçh±3 $›Ås1!0›ÆÆhÓ!4›ÆÓhÓ!8›Æßh1!<›Æ“† !T›Ås!!h›ÆÆhÓ"l›ÆÓhÓ"p›Æßh1"t›Æ“† "ÆòhFö"Æ´ Fö"ÆùhÅ3"Æþh8"€›ÅsÖ3"¨›Æßh1$¸›Æ“†o $Ì›ÆÓhÓ$ÆòhFö$Æ´ Fö$ÆùhÅ3$HœÅsÖ3$pœÆßh1&€œÆ“† &ŒœÆÓhÓ&Ås1& Fˆæ3&(Åsì3(dÆÆhÓ-pÆòhõ3-„Æ´ õ3-ŒÆùh -˜Æþh -œÅsû3-Äá´ƒ41ðáëƒ@B1$žÅs11,žFˆ414žÅs43pžÆÆhÓ8|žÆòh&48žÆ´ &48˜žÆùh,48¤žÆþh,48¨žÅs148Оá´ƒE4<üžáëƒ@B<0ŸÅs1<8ŸFˆM4<@ŸÅsS4>|ŸÆÆhÓCˆŸÆòh\4CœŸÆ´ \4C¤ŸÆùhb4C°ŸÆþhb4C´ŸÅsg4CÜŸá´ƒ{4G áëƒ@BG< Ås1GD Fˆƒ4GL Ås‰4Iˆ ÆÆhÓN” Æòh’4N¨ Æ´ ’4N° Æùh˜4N¼ Æþh˜4NÀ Ås4Nè á´ƒ±4R¡áëƒ@BRH¡Ås1RP¡Fˆ¹4RX¡Ås¿4T”¡ÆÆhÓY ¡ÆòhÈ4Y´¡Æ´ È4Y¼¡ÆùhÎ4YÈ¡ÆþhÎ4YÌ¡ÅsÓ4Yô¡á´ƒç4] ¢áëƒ@B]T¢Ås1]\¢Fˆï4]d¢Åsõ4_ ¢ÆÆhÓd¬¢Æòhþ4dÀ¢Æ´ þ4dÈ¢Æùh5dÔ¢Æþh5dØ¢Ås 5d£á´ƒ5h,£áëƒ@Bh`£Ås1hh£Fˆ%5hp£Ås+5j¬£ÆÆhÓo¸£Æòh45ọƴ 45oÔ£Æùh:5oà£Æþh:5oä£Ås?5o ¤á´ƒS5s8¤áëƒ@Bsl¤Ås1st¤Fˆ[5s|¤Åsa5u¸¤ÆÆhÓzĤÆòhj5zؤÆ´ j5zà¤Æùhp5zì¤Æþhp5zð¤Åsu5z¥á´ƒ‰5~D¥áëƒ@B~x¥Ås1~€¥Fˆ‘5~ˆ¥Ås—5€Ä¥ÆÆhÓ…Ð¥Æòh 5…䥯´  5…ì¥Æùh¦5…ø¥Æþh¦5…ü¥Ås«5…$¦á´ƒ¿5‰P¦áëƒ@B‰„¦Ås1‰Œ¦FˆÇ5‰”¦ÅsÍ5‹ЦÆÆhÓܦÆòhÖ5ð¦Æ´ Ö5ø¦ÆùhÜ5§ÆþhÜ5§Åsá50§á´ƒõ5”\§áëƒ@B”§Åsý5”ȧÆÆhÓ™Ô§Æòhõ3™è§Æ´ õ3™ð§Æùh ™ø§Æþh6™ ¨Ås 6™H¨ÆÆhÓžT¨Æòh6žh¨Æ´ 6žp¨Æùh6ž|¨Ås6žœ¨á´ƒ&6¡¸¨áëƒ@B¡بÅs.6¡©ÆÆhÓ¦©Æòhõ3¦0©Æ´ õ3¦8©Æùh ¦@©Æþh76¦T©Ås<6¦©ÆÆhÓ«œ©ÆòhE6«°©Æ´ E6«¸©ÆùhK6«Ä©ÅsP6«ä©á´ƒW6®ªáëƒ@B® ªÅs»-®\ªÆÆhÓ³hªÆòhFö³tªÆ´ Fö³€ªÆùhÅ3³˜ªÆþhÅ3³œªÅs.³Īá´ƒ7B·ðªáëƒ@B·$«ÅsL.·t«ÆÆhÓ½€«ÆòhFö½œ«Æ´ Fö½¨«ÆùhÅ3½À«ÆþhÅ3½Ä«Ås–.½ô«á´ƒ7BÂ(¬áëƒ@BÂ`¬Ås•6”¬ÆÆhÓÆ ¬Æòh6ƨ¬Æ´ 6ư¬Æùh£6Æ̬Æþh£6ÆЬÅs¨6Æð¬á´ƒ¯6É ­áëƒ@BÉ,­Ås“cÉ<­Fˆ8Êp­Ås“cË€­Fˆ½8ÌÀ­Ås1ÎÌ­ñ‚ñ@Î8¯!C7Î@¯Ås1ÎH¯Fˆ¦5ÎT¯Åsá6Ïd¯FˆÅ3Ðx¯Ås1Ñ€¯Fˆ:5ÑŒ¯Åsá6Òœ¯FˆÅ3Ó°¯Ås1Ô¸¯Fˆ ÔįÅsá6ÕÔ¯FˆÅ3Öè¯Ås1×ð¯Fˆ,4×ü¯Åsá6Ø °FˆÅ3Ù °Ås1Ú(°FˆÎ4Úd°Åsá6Ût°FˆÅ3܈°Ås1ݰFˆ6Ýœ°Åsá6Þ¬°FˆÅ3ßÀ°Ås1àȰFˆK6àÔ°Åsá6áä°FˆÅ3âø°Ås1ã±Fˆl7ã ±Åsá6ä±FˆÅ3å0±Ås1æ<±ñ‚ñ@æ´±!C7æ¼±Ås1æıFˆ6æбÅsá6çà±FˆÅ3èô±Ås1éü±FˆK6é²Åsá6ê²FˆÅ3ë,²Ås1ì8²ñ‚ñ@ì°²!C7츲Ås1ìÀ²Fˆ6ì̲Åsá6íܲFˆÅ3îð²Ås1ïø²FˆK6ï³Åsá6ð³FˆÅ3ñ(³Ås1ò4³ñ‚ñ@ò¬³!C7ò´³Ås1ò¼³Fˆ6òȳÅsá6óسFˆÅ3ôì³Ås1õô³FˆK6õ´Åsá6ö´FˆÅ3÷$´Ås1ø0´ñ‚ñ@ø¨´! 8ø°´Ås1ø¸´Fˆ98øÄ´Ås ƒúÔ´Fˆ8ûè´ÅsÚ7üø´FˆU8ýµÅs1þ$µFˆc8þ4µÅs ƒDµFˆ8XµÅsÚ7hµFˆU8ŒµÅs1˜µñ‚ñ@¶!C7¶Ås1 ¶Fˆ6,¶Åsá6<¶FˆÅ3P¶Ås1X¶FˆK6d¶Åsá6t¶FˆÅ3 ˆ¶Ås1 ”¶ñ‚ñ@  ·!C7 ·Ås1 ·Fˆ6 (·Åsá6 8·FˆÅ3 L·Ås1 T·FˆK6 `·Åsá6p·FˆÅ3„·Ås1·ñ‚ñ@¸!C7¸Ås1¸Fˆ6$¸Åsá64¸FˆÅ3H¸Ås1P¸FˆK6\¸Åsá6l¸FˆÅ3€¸Ås1Œ¸ñ‚ñ@¹!C7 ¹Ås1¹Fˆ6 ¹Åsá60¹FˆÅ3D¹Ås1L¹FˆK6X¹Åsá6h¹FˆÅ3|¹Ås1ˆ¹ñ‚ñ@º!C7ºÅs1ºFˆ6ºÅsá6,ºFˆÅ3@ºÅs1HºFˆK6TºÅsá6 dºFˆÅ3!xºÅs1"„ºñ‚ñ@"ð»!]9"ø»Ås1"¼Fˆm9" ¼Åsþ8#¼FˆNö$0¼Ås1%8¼Fˆr9%D¼Åsþ8&T¼FˆNö'h¼Ås1(p¼Fˆw9(”¼Åsþ8)¤¼FˆNö*¸¼Ås1+À¼Fˆƒ9+̼Åsþ8,ܼFˆNö-ð¼Ås1.ø¼Fˆ9.½Åsþ8/½FˆNö0(½Ås110½Fˆ 1<½Åsþ82L½FˆNö3`½Ås14h½Fˆ™94t½Åsþ85„½FˆNö6˜½Ås17 ½Fˆ£97¬½Åsþ88¼½FˆNö9нÅs1:ܽñ‚ñ@:T¾!C7:\¾Ås1:d¾Fˆ6:p¾Åsá6;€¾FˆÅ3<”¾Ås1=œ¾FˆK6=¨¾Åsá6>¸¾FˆÅ3?̾Ås1@ؾñ‚ñ@@P¿!C7@X¿Ås1@`¿Fˆ6@l¿Åsá6A|¿FˆÅ3B¿Ås1C˜¿FˆK6C¤¿Åsá6D´¿FˆÅ3EÈ¿Ås1FÔ¿ñ‚ñ@FLÀ!:FTÀÅs1F\ÀFˆ6FhÀÅs ƒGxÀFˆ8HŒÀÅs1I”ÀFˆK6I ÀÅs ƒJ°ÀFˆ8KÄÀÅs1LÐÀñ‚ñ@LHÁ!C7LPÁÅs1LXÁFˆ6LdÁÅsá6MtÁFˆÅ3NˆÁÅs1OÁFˆK6OœÁÅsá6P¬ÁFˆÅ3QÀÁÅs1RÌÁñ‚ñ@RDÂ!C7RLÂÅs1RTÂFˆ6R`ÂÅsá6SpÂFˆÅ3T„ÂÅs1UŒÂFˆK6U˜ÂÅsá6V¨ÂFˆÅ3W¼ÂÅs1XÈÂñ‚ñ@X@Ã!C7XHÃÅs1XPÃFˆ6X\ÃÅsá6YlÃFˆÅ3Z€ÃÅs1[ˆÃFˆK6[”ÃÅsá6\¤ÃFˆÅ3]¸ÃÅs1^ÄÃñ‚ñ@^<Ä!C7^DÄÅs1^LÄFˆ6^XÄÅsá6_hÄFˆÅ3`|ÄÅs1a„ÄFˆK6aÄÅsá6b ÄFˆÅ3c´ÄÅs1dÀÄñ‚ñ@d8Å!C7d@ÅÅs1dHÅFˆ6dTÅÅsá6edÅFˆÅ3fxÅÅs1g€ÅFˆK6gŒÅÅsá6hœÅFˆÅ3i°ÅÅs1j¼Åñ‚ñ@j4Æ!C7j<ÆÅs1jDÆFˆ6jPÆÅsá6k`ÆFˆÅ3ltÆÅs1m|ÆFˆK6mˆÆÅsá6n˜ÆFˆÅ3o¬ÆÅs1p¸Æñ‚ñ@p0Ç!;p8ÇÅs1p@ÇFˆ98pLÇÅs#;r\ÇFˆ«)spÇÅsÉ:t€ÇFˆ<;u¤ÇÅs1v¬ÇFˆc8v¼ÇÅs#;xÌÇFˆ«)yàÇÅsÉ:zðÇFˆ<;{È'Œ¨&| ÈŒ¨&~0ÈÏa¸ú€@È“E¨&PÈ\¹Zƒ`Èc¹l„pÈ} ú&…€Èá ~'†Èu '‡ È› 'ˆ°È“ '‰ÀȆ 'ŠÐȬ B'‹àȤ I'ŒðÈÍ Y'ɼ `'ŽÉ;`®"É3iY°4ÉTŒ#@ÉÏu#’LÉc'”XɧOY°•tɲOY°•Ég]Çå•ÔÉ=io;—üÉçYôå™tÊÅs,B›œÊƒöW œÔÊÁ ž… œàÊÁ†ÓœDËÁ î…¡œTËÁW†1œlËÁÓ…1œÆˆ½8œpËÅs1ž|Ëƈ±;žˆËɇ~ÚŸ´ËÅs ; ÌËFˆ8¢äËÅsЉ£øËƈ½8¤ÆˆE9¤ÌÅs1§Ìƈ8<§(Ìɇ˜F¨hÌÅs%<©€ÌFˆ½8«˜ÌÅs‘<­¬ÌƈE9®ÄÌÅsµ<®ØÌƈE9¯Æˆ@:¯ðÌÅs1³üÌɇÔ>³TÍƈ)?´`ÍÅsÇ=µtÍƈ@:¶ÍÅs >¶¤Íƈ@:·ÀÍÅs6>·ÔÍƈ@:¸ðÍÅs?¸ÎFˆE9ºÆˆÔ;½,ÎÅs1Â8ÎƈÐ?ÂDÎɇHBôÎÅs¹?ÄÌÎFˆ@:ÆôÎÅs†@ÊÏƈÔ;Ë0ÏÅsÎ@ËDÏƈÔ;Ì`ÏÅs AÌtÏƈÔ;ÍÏÅsVAͤÏƈÔ;ÎÌÏTjΡÎÐkj#Ï Ð{j#Ñ,Ðj“CÓ<Щj#ÖHлjŸCØXÐÙj#ÛdÐéj#ÝpÐüj#ß|Ðk#áˆÐ%k2#ã˜Ð4k2#å¨ÐCk#ç´ÐTk'éÀÐak«CêÈÐuk±CêÐБk±CêØÐ¯k'êäлk"(ëðÐÎk·CíüÐækAïÑlSïÑ%lÑCðÑ6lÚCð ÑIlãCð(Ñ[lìCð0ÑmlõCð8ÑlþCð@Ñ‘lDðHѤlDðPѵlDðXÑÈl"Dð`ÑÛl+DðhÑîl4DðpÑm=DðxÑmFDð€Ñ(mODðˆÑ@ä)p%FAhåX#~®Up8@A~§VutAR~¥XyÜBh~¸Y|¨­tRFˆÔ;®œRV‹ó`³¤Rd‹ëg³¬R}‹ëg³´R“‹ëg³¼R¨‹ëg³ÄRÅ‹ëg³ÌRÛ‹ëg³ÔRõ‹ëg³ÜRŒëg³äR.Œëg³ìRFŒëg³ôRcŒëg³üR{Œëg³S‘Œëg³ S¬Œëg³SËŒëg³SâŒëg³$SûŒëg³,Sëg³4S$ëg³Ž[Ž€tŽ€˜Ž€˜Ž€¹Ž[ŽÉŽ€ðŽù€ðŽ€ù€[Ž€[Ž€[Ž€>ŽÔí Ž  ƒ Ž Žƒ Ž Ž”ê„€”€”€˜vtŽ€tŽ€tŽ€”€3‘€ê„›„~‘ê„~‘n„ý‡~‘n„ý‡†‘~‘n„ý‡†‘ˆ‘~‘n„ý‡†‘ˆ‘Š‘~‘n„ý‡†‘ˆ‘Š‘²‡Õ„Ü„û„……ã„ê„’¯{¯{ì{Öuì{ÖuÖu¯{¯{ÖuÖuÖuц׆è†ц׆è†î†ô†à’ц׆è†ц׆è†ц׆è†î†ô†à’ц׆è†ÖuÖuÖu3•G•Z•€i•t••‹• •• ¤•˜v˜váxôŒJ–áxôŒÖuÖuÛ|ц׆¯{ц׆ц׆ì{Öuì{ÖuÖuц׆¯{ц׆ц׆ÖuÖuÖuÖuÛ|¯{¯{¯{¯{ц׆¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{ц׆¯{ì{Öuì{ÖuÖu¯{¯{¯{¯{ц׆¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{¯{ц׆¯{ÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuÖuH M Öuj o  ¢ ¢ ˜vÀ Í À ã ò ã Öuò ã ¡¢ ¡¡%¡B¡O¡U¡]¡k¡Öuk¡k¡˜vÖuk¡˜v…¡]¡“¡Ÿ¡]¡´¡]¡Ç¡ã ä¡ƒ‡[Žƒ‡¢ƒ‡'¢4¢]¡”ã ÖuX¢a¢X¢a¢ÖuX¢˜va¢X¢˜va¢¢¢]¡ž¢¨¢³¢¼¢]¡Ñ¢ ƒ¡¢ ¡”˜v˜vä¡££˜v¡]¡6£¡R£a£m£y£œ£¥£®£áxH M ¯{¤^¤˜v_¥Þ‰¥¦²‡²‡²‡_¥‰¥p¦v¦|¦‚¦¿¤í¦¯{¯{§˜v9§9§J§¥£J§¡9§a§]¡r§§9§Ñ¢9§Œ§²‡ã„n„û„9§9§?¨G¨9§G¨9§¨G¨9§¨­¨9§ѨÞ¨ô¨G¨9§G¨"©Q©\©‚©\©…¦©Ë©¦©\©á©í©÷©’á©í©÷©Ÿ¤á©í©÷©Ÿ¤«á©í©÷©9§1ª÷©9§9§\©ƒª˜ª9§Ñ¢¼ªÁªû„Ê«vy²‡²‡²‡l„l­²‡?¨²‡?¨?¨?¨?¨©­˜v]¡G¨vy¯„¯„*xb®?¨b®?¨b®?¨b®?¨?¨?¨Ä®?¨Ä®?¨]¡G¨‡‡ ‡‡ ‡&‡‡ ‡&‡,‡‡ ‡&‡,‡2‡‡ ‡&‡,‡2‡“‡ ‡&‡,‡2‡“8¯‡ ‡&‡,‡2‡“8¯_¯¦‡ÉŽ¡¡]¡˜v9§¿¯¡¡¡¦‡¡Ù¯¡ñ¯¡¡¡¡¡¡¡ñ¯¡ñ¯¡¡ƒ¡\„¡ñ¯¡\„¡ñ¯¡ñ¯¡¡¥°¡¥°¡¥°¡¥°¡¥°¡Ù¯¡Ù¯¡Ù¯¡1±¡1±¡1±¡1±¡1±¡1±¡1±¡1±¡1±¡÷±1±²²*²;²÷±²²*²;²÷±²²*²;²÷±¿¯¿¯¿¯¿¯ä²³vyvyvy=´vyvyvyvyvyvyvy[¶[¶ë¶ë¶·+·P·4¢œ£ƒ‡S¸j¸€¸ˆ¸Џ¢¸»¸»¸ ¹»¸ ¹»¸˜v˜v˜v˜v|¹|¹²¹vyvy¹¯{¯{¯{Ô£ǹ‰¥Ò¹ˆ‘†‘¦‡¦‡˜v¦‡˜v¦‡¦‡˜v¦‡¯{¯{¯{Ô£ǹº¿¯º¿¯5Ç¿¯¿¯¿¯ŽÇl„Ç«ÇÇÇý‡ÙÇÝÇŠ‘ûÇ/È/țȤÈ/È/È ˆÊÊ6Ê<Êvy]¡[ÊlÊoÊ{Ê~ÊʆÊʦ‡Ê ÊʆÊʦ‡lÊoÊ{Ê~ÊÊÊvy>ËÊ ÊʆÊUËÊ`Ëvy Ÿ†lÊoÊ{Ê~ÊÊÊvyñ¯Ê ÊʆÊÊvyŸ†lÊoÊpͨ͟Í~ÊvyÊŸ†±Í†Ê ´Í ÄÍ Š¸óÍþÍÎÎÎ&Î1Î<Î ŸÍ EÎ ¨Í ~Ê ±ÍÊÊvyŸ†‰Î“ÎΨαΠÊvy†Ê Ê ´Í ºÎ Ÿ† ±ÍЏËΉÎÕΓÎßÎÎêΨΠóÎ ±Î  Ê ±Í ʆʴÍʺÎvyŸ†óÍÏ(Ï2Ï=ÏFÏOÏYÏ cÏ nÏ wÏ oÊ{Ê~ÊʆÊÊÊ ÊÍÓlÊoÊlÊoÊlÊoÊlÊoʲ‡ŽÇ²‡¿¯ŽÇŽÇЏŽÇЏŽÇ¿¯‰¥/Þ4Þ/ÞfÞxÞŠ‘Š‘†‘ÝÞ×våÞéÞúÞ ßßß×våÞJß[ßtß…ß›ß¬ß Ãß Ôß êß Š¸×våÞJß[ßtß…ß›ßà Ãß Ôß êß Š¸×våÞJß[ßtß…ßFà›ß à Ãß Ôß êß Š¸×vpàЏ×vpàЏÝÞ×vpàÝÞ×v ˆŠ‘×vJß›ßtß…ßÃßÔß×v¡fÞxÞ×v¡fÞxÞÝÞ4á4áfÞxÞÝÞn`ÝÞáÝÞÇáÊብÊብÊብvyŠ‘Ô‡ÍÓ›ÈÍÓ›ÈÍÓ›ÈÍÓ›ÈÍÓÔáÍÓÔáÍÓ{Ê~ÊÍÓÊ ÊÍÓ{Ê~ÊÍÓÊ ÊÍÓ{Ê~ÊÍÓÊ ÊÍÓóÍþÍÎÎÎ&Î1Î<Î ŸÍ EÎ ¨Í ~ÊÍÓËΉÎÕΓÎßÎÎêΨΠóÎ ±Î  ÊÍÓÊ ÊÊ ÊÙáÍÓ{Ê~ÊÍÓÊ ÊÍÓÍÓÍÓÍÓÊÍÓÍÓlÊoÊÍÓlÊoÊÍÓlÊoÊÍÓÍÓÍÓÍÓÍÓÍÓ²‡ŽÇ²‡çávyŠ‘íáðáê„óáùáÿáçáðá’ÿáçávyŠ‘íáâŽÇ4Þ÷Š/Þ4Þ÷Š/ÞfÞâvyц׆è†î†ô†¯{¯{ÝÞ†âߌâ›âц׆è†î†ô†¯{¯{ÖuÖuÖuБББББFààvyŠ‘ ˆ ˆâŽÇ¡]¡ ˆÄÍ’²‡’²‡’²‡’²‡’²‡’>Ë’>Ë’>Ë’>Ë’*x1±’1±’1±’1±’1±’1±’1±’1±’1±’1±’÷±’*²’;²’ ퟤ*²’;²’ ퟤ*²’;²’ ퟤ²‡Ô‡Š‘Š‘_ïÔ‡ ˆ_ïvïŠ‘Š‘ê„ê„÷ŠWñ\ñŠ‘÷ŠÊ/ÞÇ/ÞÊÇŠ‘HòÇ/ÞÖu ˆÊò²‡ˆ‘ ˆ²‡Ùòn„ê„Џ*xÛòŽÇÛ|¯{ц׆ц׆膯{¯{ц׆ц׆膯{ÖuÖuÖuÖu/ÞÊÅóóáùá/ÞÊÍóÅóùá²‡ÊЏÇáÇn„ý‡Š‘HòÇHòÇÜüÜüÜüôŒ†ýŠýôŒ¿¯ ˆÊòþ‰¥‰¥‰¥‰¥ÊÏl„Êò    % ( + ;  \ c  | vyБББã vy ˆˆ‘vyý Çá ŽÇ  ЏŽÇ ЏÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓÍÓý ý ý vyvy˜ve vyk ’n q Џ n  q Џ  ˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊòÅó¡›„‰¥µ¡ñ¯¡ñ¯¡½Ê«¡û„¡û„¡¡ÖÞ졘v„˜vŠ‘²‡›„˜v„²‡r›„²‡›„˜v„²‡r›„²‡ ˆ²‡ ˆ²‡›„Ê«˜v„²‡ê‡r›„›„“˜v„r›„›„œ§˜v„›„œ§˜v„²µ¸»›„²‡vy²‡vyÅó¾ñ¯¾ñ¯¾µ¾½Ê«¾û„¾¾ÊÑì¾²‡ä ˆ²‡ä ˆ²‡çë ˆ²‡ä ˆ²‡Ê«äl­ä“ï䠈䠈²‡çë ˆ†‘‰¥n„²‡G¨†‘²‡Ÿ††‘Š‘†‘488Ò¹†‘‰¥Џ‰¥†‘pÍÒ¹=_‰¥“ÍÓ“çá“_pÍ“_Џ“ЏÎÕÜ\„Î\„ÎÕÜ\„Q©\© ˆû„ ˆû„ÎÍÓÎçá\„÷ŠЏ÷Љ¥Î\„Õ÷ŠЏÕЏÎ\„ЏÎÍÓÎçᲇ˜v„9§û„Ê«‚©‚©ŽvyŽvyŽvyp¦9§?¨p¦9§p¦n„¿¤v¦|¦·¿¼ªpÍp¦9§¨¦©Ÿ†¦©3‘¦©3‘pÍŠ‘‰¥¿¤ ˆv¦ ˆ|¦ ˆ··¿¼ªÒ¹·¿¼ª‰¥9§·¿¼ªЏ9§·¿¼ªЏ¦¦‚¦²‡ê„²‡²‡ ˆpÍ ˆpÍ ˆŸ†pÍ ˆê„p͉¥pͦ‰¥‰¥p͉¥‰¥p͉¥ê„ ˆpÍê„`‚¦ ˆí¦ ˆpÍ`í¦‚¦ ˆí¦ ˆpÍ`í¦‚¦ ˆ²‡ê„²‡ê„²‡ê„Ÿ†Ÿ†ºŸ†pͺŸ†pÍŸ†?¨Ÿ†¿¤ ˆê„Ÿ†Ÿ†G¨¿¤v¦|¦ŽÇG¨¿¤v¦|¦ŽÇꄲ‡²‡Ÿ† ˆæ²‡²‡ ˆûŽÇŽÇûŽÇÓ‰²‡^aŠ‘aæw¯{¯{¯{¯{¯{¯{ÖuÖuÖuG¨¿¤v¦|¦ŽÇ‚¦pÍG¨¿¤v¦|¦ŽÇ‚¦pͲ‡ê„Ÿ†ê„ ˆ¿¤pÍ ˆ‰¥²‡ê„n„æê„pÍæ²‡ê„v¦`pÍꄟ†pͲ‡ ˆê„v¦`pÍê„ý‡pÍûê„‚¦ý‡v¦`pÍê„3‘pÍûê„‚¦3‘ê„“pÍê„“pÍûê„‚¦“ûŽÇê„ê„3‘ŽÇê„í¦3‘pÍí¦3‘pÍûí¦3‘ûŽÇ=‰¥Ó‰pÍ^apÍ€‡pÍa€‡pÍa€‡wpͺÞí¦åý‡¿¤í¦ê„%‚¦-\„Ë©pÍí¦ê„\„%Ë©‚¦÷Š Ÿ†\„Ë©3‘pÍí¦ê„\„%Ë©‚¦3‘‡|¦Š‘÷©¦©‹9§1ª÷©¦©‹·Ò¹=í¦Íº‰¥í¦pÍ ˆl­pÍ ˆ²‡ù  ˆ²‡pÍ ˆ?¨pÍ ˆ?¨pͺʫºÊ«¿¤ ˆpÍ¿¤ ˆpÍ¿¤ ˆpÍí¦åý‡¿¤ ˆ²‡‰¥Ë ˆË ˆŽÇÒ¹9§¨‰¥9§¨Џí¦“pÍí¦3‘pÍê„%pÍê„í¦\„%Ë©‚¦÷ŠŸ†ê„í¦\„%Ë©‚¦3‘ê„í¦\„%Ë©‚¦“ê„í¦\„%Ë©‚¦÷ŠŽÇC„ê„C„ê„ ˆ3‘‰¥X pÍí¦c X ‡Öu©¬pÍí¦c ©¬‡o Ê«| Q©pÍ|¦Š‘Џ‡|¦Š‘‡|¦’ pÍí¦‡’ o ’‡’ o p͉¥Q©\©º ‚©\©Џ…À ‰¥¦©Џ¦©Џ=Ë©¦©Ò¹Ë©¦©\©ЏË©¦©\©Џ¦©Џ¦©pÍ÷©¦©‹Öuo pÍí©÷©¦©‹o Æ á©í©÷©É á©í©÷©ЏŸá©ÍÓŸ¤á©ÍÓŸ¤«á©ÍÓ9§ÍÓ‚©‚©¦©pÍ1ª÷©¦©‹·Öu1ª÷©p¦¦©‹·Џo pÍ1ª¦©‹o ·Ï 1ª¦©‹o ·ЏÖuЏ1ª÷©‰¥1ª÷©Џ‰¥Ù Öu¦©Ù ¿Ÿ†¦©Ù ¿à ¦©Ù ¿à 9§\©¦©‰¥9§\©ЏÒ¹ƒªЏÞ‡o É ¯„Öu^¤¯„Џ^¤‡o Þ=ÞЏ=í¦ÍpÍ=í¦Öu¼ª=º‰¥ÞpÍÒ¹ ˆ²‡ù ‰¥ ˆ²‡ù ЏÉ  ˆ²‡= ˆ²‡ЏC! ˆ²‡?¨ ˆ²‡?¨Џº  ˆ²‡?¨Џ ˆ?¨À  ˆ?¨Џ ˆ?¨Џ ˆ?¨I! ˆ?¨Џ ˆ?¨Џ ˆÒ¹‰¥ ˆЏ ˆЏ¦©O!¦©O!¦©?¨¦©É ?¨¦©Џ=¦©ЏC!U!Џ¦©O!s!s!s!ƒs!ƒs!ƒ˜vs!s!˜v\„"ã Ç²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹ŽÇl„ǫNJ‘²¹²¹²¹²¹#6£å#å#«ÇŠ‘«Ç,$3$8$ÇáÔ‡î$| n„n„ý‡‰¥‰¥‰¥‰¥²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹‰¥²¹²¹²¹²¹²¹²¹²¹²¹²¹²¹‰¥‰¥²¹l„Š‘²¹²¹ÊÞ'Êù'”ƒ²‡Š‘i(C„i(i( ˆi( ˆÊòi( ˆÊòꇘ(¥(áx²(˜(¥(áx²(Ù(ê„Êù(Öu²‡vyvyŠ‘vyn„vyÊ[)]¡i)l)o)íár)ƒ)‡))¥)Êê„ê„Êl„ ˆÊꄔꄔNJ‘Ùò²‡Êê„Öu9*9*9*˜vÖu9*˜v*ꄱ*ê„Öu±*ꄱ*ꄘvÖu±*ꄘvÖuý ê„ý ê„vy+(+]¡¡]¡ÊŠ‘vyŠ‘ý‡²‡ê„p+]¡¨+«+¹+ÊÖ+Ö+, ,,,,, ,,,,Ê ,Ê ,Ö+¤È¤È÷ŠÖ+„,,•,¤ÈÖ+±,¤ÈÖ+•,Ö+•,¤Èë,ï,l„î$--‰¥¤È±*ê„l„F-W-^-}-}-}-Ÿ- }-}-‰¥‰¥ vy Ž}-}-}-}-}-}-}-}-}-}-}-¿.à.C„‰¥/Ô‡‰¥¤È/1/‰¥H/œ/¢/y£œ/¦‡®/pÍ6£¤È6£à. Ž0y£Çy£Ì­'0l„l„²¹Þ'ý ù'f0ŽÇn„l0n„ý n„ý n„Ên„ŽÇ,ÍÓÍÓH/Ùò¹+÷Š ,›È¹+Êo0,,,u0›Èu0ʤÈ}0W-n„ê„Ö+0l„F- ²‡ ˆ }-²‡}-n„ý‡ }-Ÿ- …0Š00 Žl„}-²‡}- Š‘n„ý‡ê„  ˆ n„ý‡ n„}0 n„ }- Í0n„Ó0 n„ Ù0è0÷0 ÷Š Ù0è0¤ÈÙ0è0¤ÈÙ0è0¤È}-²‡}-*x1 1111&1*1.12161¤È:1A1H1O1 ˆ¤ÈV1Z1¤È^1e1l1s1n„ý‡†‘ˆ‘¤ÈV1Z1¤Èz11ˆ11–11 ˆ ˆC! ˆº  ˆÀ  ˆI! ˆ¤1 ˆ«1 ˆ²1 ˆ¹1 ˆÀ1 ˆÇ1 ˆÎ1 ˆÕ1Ü1n„ý‡†‘ˆ‘¤Èn„ý‡¤È‰¥ ˆ¤ÈÒ¹ ˆ¤È ˆ¤È ˆ¤È ˆ¤È ˆ¤È= ˆÉ }-}-}-à.ã1å1à.å1C„ñ1/Ô‡ø1¤Èl„}0§€ù€þ€/1/’1/ÿ12vyÖu ˆÊòц׆è†ц׆è†ì{Öuì{6£ÖuÖu¯{¯{Öu ˆÊòÍÓœ/¢/œ/¢/ÍÓœ/ÍÓ}-}-}-y2}-²‡Ô‡}-à.ã1å1•2˜2à.}-²‡}-¿¯ÙÇŠ‘¿¯ ¿¯Š‘ÙÇ¿¯ x3ðá]¡x3]¡ðáôŒÊx3vyÔ‡x3Ô‡vyôŒáxpÍì{ºЏºiˆì{Џì{ºЏºiˆì{Џo Š‘o ¡4‰¥o ”o ý o Ó4o ±*o 9*l„ºÖuЏºÖuЏo Š‘$5'5vy‰¥l„Š‘*xÍÓÍÓB5»¸B5»¸²‡s5z5…5B5¨5»¸B5 ¹»¸»¸»¸¨5»¸ ¹»¸ ¹»¸ç5H/ç5†‘²‡ç5pͲ‡pÍpͲ‡s5z5pÍç5†‘ë5†‘ ˆ*x‰¥‰¥ë5‰¥z5ù€0X6^6z5t6‚6z5X6'0z5X6'0z5±6X6'0z5t6X6ù€l„z5t6X6ù€l„F-¹ŽÊ†ýʲ‡ ˆÊ¹Žê„Ê÷Šu7ê„Ê÷Šu7†‘ù€…5÷Š…5'0÷Š…5'0÷Š…5'0÷Š…5'0÷Š…5'0÷Šz5ù€X6H/e8…5u7÷Št6ê„Ê…5u7—8÷Št6ê„Ê…5÷Šê„Êu7l„l„z5ù€÷Št6X6—8l„ê„ Š¸z5…5ù€÷ŠX6l„ê„Џz5ù€÷ŠX6—89ê„Џ-9z5ë5…5÷Šê„…5'0z5-9ë5K9ê„÷Š\9…5'0ê„\9…5'0ê„Ê÷Š\9…5˜v˜v˜v±6{9Š9¹Ž, ê„÷Šu7::$:ê„÷Šu7):::ê„÷Šu7.::u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,l„u7ê„÷Š,l„u7ê„÷Š,l„u7ê„÷Š,l„u7ê„÷Š,l„u7÷Šê„,9u7÷Šê„,l„u7÷Šê„,l„u7÷Šê„,9…5u7÷Št6ê„,l„…5ê„u7—8÷Št6,l„\9H/\9…5'0ê„Ê÷ŠôŒ²‡²:¸:÷ŠÇ:‰¥‰¥‰¥î:÷:þ:;0î:;;0÷:î:;÷::;÷Š@;:;Ò¹l„Z;;_;c;0÷:Z;;÷:{;‰¥l„‹;;{;ê‡0÷:‹;;{;÷:¨;€ ˆé;é; <î$î$ÖuáxI<†‘H/÷ŠH/÷ŠÔ‡H/Ú£l„Ú£‹<€Z; {Ú£”<< ˆ‹<€Z; {Ú£”<< ˆ‹<€Z; {Ú£Ô<”<< ù€  ˆ‹<€Z; {Ú£”<¨;‹<€Z; {Ú£ý‡=óŠ==="= ˆ;=”<@=Ú£;=”<€‹<€Z; {Ú£=”<< ¬=  ˆ‹<€Z; ˆZ;ÖuZ;C„Z;ø=C„ >÷:>˜v˜v >€˜vц׆è†ц׆è†ÍÓÍÓÛ|ì{Öuì{ÖuÖuÚ£‰¥ ˆ5ÇpÍ‹<€Z; {Ú£”<< ˆ1 1Ôá=?;=çá1 1Ôá=?;=çáË ˆ‹<€Z; {Ú£”<< ˆ‹<€Z; {Ú£ý‡=óŠl„=”<óŠ==="= ˆÊòZ;Ú£”<;=óŠ=== "= ˆ== ˆ1 1Ôá=?;=çá1 1Ôá=?;=çá;=”<@=vyC?pÍÊC?pÍ ˆÊò‹<€Z; {Ú£Öuu?ŽÇ1 1Ôá=?;=çáÚ£;=”<ÍÓ€î$†‘Z;ÖuZ;ÖuZ;ÖuôŒ†ýŠýôŒÛ|¯{ц׆¯{¯{¯{¯{ц׆¯{¯{¯{ÖuÖuÖuÖuÖuÛ|¯{¯{¯{ц׆ц׆¯{¯{¯{¯{ц׆ц׆¯{ÖuÖuÖuÖuÖuÖu€ÖuŸBЏ€Öu€ ˆ5Çvy5Çvy‰¥‰¥C„Ó‰C˜v@;@;@;@;÷:9CAC@;yC÷:²‡C„Ó‰9CAC9CAC9CAC9CAC9CAC9CAC9CACðC÷CÒ¹ðC‰¥DDD9CD‚ DDÄ͘vÄ͘v÷:÷:„DŠD’Dl„ꇄDŠD’DꇫDÄͽDÊ«\„C„Ó‰C„Ó‰C„Ó‰C„Ó‰C„Ó‰C„Ó‰C„Ó‰÷C÷C÷C ˆ÷CÄDÊò‰¥=Ò¹‰¥LEp͘v˜v˜vH/H/pÍH/@;@; ˆ¯„¯„‰¥•,^FŠ‘€Ï ˆ¯„¯„›„›„ã„ꄊ‘€Ï ˆ¯„¯„›„ôŒ†ýŠýôŒüŒ€ôŒ„,€Ó0Ó05ÇôŒôŒý l„ЏôŒ€ôŒøŒ€ôŒ€ôŒ€€ôŒôŒ€€ôŒôŒ€ôŒøŒ€ôŒøŒ€ôŒ€ôŒ€ôŒøŒ€ôŒøŒ€ôŒøŒ€tŽ€ôŒF-ôŒ ôŒ€ôŒ€ ÖuôŒôŒôŒôŒ ƒôŒƒôŒôŒôŒôŒ€ôŒ€ôŒ€ôŒ€ôŒ€ôŒ€ôŒôŒ€˜Ž€¦L[Ž€¦L Ž`Öu½LÀL²‡ôŒý øŒÍÓøŒøŒÑLøŒæwøŒ5Ç5Ç ÖuÖu÷uôŒÖuÝLÖuäLꄎÇéLê„ Öu îLÖuöLýLê„æw5Ç ÖuéLê„ôŒÖu‰¥tŽ÷Љ¥¹Ž ù€ÖuM“MM˜vM˜v˜vMŒ"ŒFŒŒ"ŒFŒÞMñ¯Mñ¯Mñ¯Mñ¯M½DÊ«M½DMÊ«ÅóMMƒ‡Ô£MMMƒ‡Œ"ŒŒ"ŒŒ"ŒŒ"ŒŒ"ŒMMH/Ô‡ÙòC„g‰Ó‰hNg‰kNj‡g‰Ùòj‡hNg‰kNj‡€NÙòÙòj‡g‰Ùòj‡g‰Ùò²‡Ùò²‡ˆ¸ ˆ²‡ ˆˆ¸²‡ˆ¸²‡ˆ¸j‡n„ý‡j‡n„ý‡j‡²‡H/Ô‡j‡ˆ¸Ô‡j‡hNkNj‡ý‡ˆ¸Ô‡j‡²‡g‰O Oj‡²‡H/O$OH/l„H/H/l„H/H/H/²:H/÷Š÷ŠH/j‡$5'5j‡P Pˆ¸Ô‡H/H/óŠ÷ŠH/j‡Ô‡Š‘j‡†‘j‡C„j‡ý‡ ˆj‡ý‡ ˆj‡n„ ˆ˜v˜v²:®H/÷ŠóŠyÍ ˆj‡Ô‡g‰i)o)pͲ‡ ˆê‡²‡j‡Ô‡g‰P PP Pe ¦‡˜ve ¦‡e ¦‡e ¦‡e ¦‡e Þe µe µe ñ¯e ñ¯e ñ¯e ñ¯e Åóe ½DÊ«e ½De Ê«e ñ¯e ñ¯e ƒ‡ƒ‡ƒ‡e e £P²‡ÍÓ²‡ÍÓÔ‡ˆ¸‰¥C„g‰vyÓ‰hNg‰vykNj‡g‰vyˆ¸j‡g‰ˆ¸j‡g‰ˆ¸j‡²‡g‰vyO Oj‡²‡H/O$Oj‡²‡g‰vyÔ‡j‡²‡H/Ô‡ˆ¸j‡g‰ˆ¸j‡g‰ˆ¸²‡ˆ¸²‡ˆ¸²‡ˆ¸²‡ˆ¸²‡ˆ¸²‡ˆ¸²‡ˆ¸ ˆ²‡ ˆˆ¸j‡ä‡ç‡²‡ˆ¸ ˆj‡ä‡ç‡²‡ˆ¸ ˆˆ¸Ô‡ˆ¸ˆ¸j‡C„j‡Ô‡Š‘j‡óŠj‡†‘H/óŠ÷в:H/÷Š÷ŠH/j‡Ô‡ÍÓóŠyÍ ˆÊò˜v˜v²:®H/÷Ši)o)pÍ£PH/Џ£PH/Џˆ¸Q QÔ£Ô£Ô£Ô£=QEQMQUQ=QEQMQUQÌ­=QEQMQUQhQÔ£xQQ†QQÔ£xQQ†QQ˜vÔ£Ô£Ô£Ô£xQQ†QÔ£xQQ†Q˜v=QEQMQ=QEQMQÌ­=QEQMQhQÞÔ£ÅóÔ£ÞÔ£ÅóÔ£Ô£\„hQ\„\„˜vÔ£¡®Q¢ ºQ\„×Q÷ŠÔ‡×Q÷ŠyÍçQ×QøQÅóÔ£RRÔ£Ô£vïÞÔ£ÅóÔ£ÞRRÅóRRÅóRRÞÔ£ÞRRÅóÔ£²‡Ô£'0÷Šñ¯Ô£RR²‡WR÷Šñ¯RR²‡Ô£'0÷Šñ¯Ô£RR²‡WR÷Šñ¯RR²‡Ô£÷ŠµÔ£²‡Ô£÷ŠµÔ£µÔ£ñ¯Ô£ñ¯Ô£²‡Ô£÷Šñ¯Ô£²‡Ô£÷Šñ¯Ô£RRRR½RÔ£Ô£Ô£½Dʫԣ½Dԣʫ½DRRÊ«½DÊ«RR²‡Ô£O¡öRÔ‡²‡Ô£O¡öRS²‡SÔ£O¡öR½Dʫԣ½Dԣʫ-SÔ£-SÔ£j‡Ô£Ù¯Ô£Ô£j‡Ô£Ù¯Ô£Ô£Ô£¡²‡Ô£'0l„ñ¯Ô£²‡Ô£'0l„ñ¯Ô£¦SÔ£Ô£Ù¯Ô£Ô£Ù¯Ô£Ô£Ù¯Ô£Ô£Ù¯Ô£Ô£»S\„Ô£ƒÔ£ƒ˜v¢ ºQ\„˜vvïvïËSÅóvïÅóvïÞvïÔ£vïvïvïvïóáùáv‡î$Ô‡µvïÞvïÞShQl„ ˆÔ‡\„Ì­²‡óáùáÞóáùᲇl„óáùáÞóáùᲇóáùáTÔ‡ÅóóáùáTl„²‡óáùáÔ‡ÅóóáùáÅóóáùᲇH/î$½DÊ«vï-SvﲇH/î$Ô‡½DÊ«vﲇԇóáùá½DÊ«óáùᲇóŠO¡öRÔ‡½DvïÊ«-SvﲇóŠO¡öRS½DvïÊ«²‡óáùáÔ‡²‡óáùáÔ‡ŸT¥T«T² Џ½DóáùáÊ«²‡óáùáñ¯óáùáñ¯vïñ¯vﲇóáùáñ¯óáùáñ¯vïñ¯vïµvïµvïñ¯vïñ¯vïvïvïóáùáóáùáTj‡vïÙ¯vïvï¡vﲇl„‰¥ñ¯vﲇl„‰¥ñ¯vïvïÙ¯vïvïÙ¯vïvïÙ¯vïvïÙ¯vïÅóvï¦SvïÜTàTÞèTÞèTÅóèTÅóèTÅóèT\„hQ\„èT²‡èT÷Šñ¯èT²‡èT÷Šñ¯èTèT²‡Ÿ††‘²‡Ÿ†÷І‘²‡Ÿ††‘²‡²‡ ˆ§§Ê«hQ\„hQÞ¡ƒ¡Þ¡ñ¯¡ñ¯¡ÞÖÞ²‡€‡²‡XUÞñ¯¡ñ¯¡Åó¡Åó¡ÅóÖÞµ¡ÖÞÖÞ\U¡µ¡µ¡ñ¯¡ñ¯¡\„¡¡dU¡½DÊ«¡-S¡²‡ÖÞÅ󡲇i)o)pÍj‡ÖÞ¡¡¡¡˜v\„¡¡½DÊ«¡ŽÇ€‡÷Šñ¯¡ŽÇ€‡÷Šñ¯¡ÅUóŠ÷ŠyÍÅU¡¡èUïU÷Š¡èUïU÷ŠpÍèUïUpÍ¡¡Ù¯¡¡Ù¯¡Ù¯¡¡Ù¯¡¡Ù¯¡¡Ù¯¡¡Ù¯¡¡Ù¯¡ñ¯¡\„¡ñ¯¡ñ¯ÖÞñ¯ÖÞ¡¡¡²‡pͲ‡ ˆpͲ‡pÍ\„²‡pͲ‡€‡pͲ‡XUÞpͲ‡Š‘²‡Š‘²‡Š‘²‡i)o)²‡Š‘ ˆÊò ˆÍÓ¡pÍ\„¡Š‘`/V4VÒO¸:²‡pÍÞpÍÖÞpÍ¡pÍ ˆpÍl„¡÷Š€‡4VÒO¸:¡€‡7VyÍ4VÒO¸:²‡ê‡¡enNl„Hcˆ¸pÍ>enNO¡Hcdl„ˆ¸`epÍO¡d ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆl„ ˆ!el„ ˆl„ ˆ!ežfl„!ežf˜v­f¡O¡4c¢ O¡4c¡¡âféfñføf¢ âféfñføf¡¡âféfñføf g'g¢ âféfñføf g'g¡¡âféfñføf g'gOg Vg¢ âféfñføf g'gOg Vg ¡¡O¡4c , , ˆ ˆ ˆ ˆÊò ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆÊò ˆvyl„ˆ¸l„ˆ¸ ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nN ˆÊòl„Hcˆ¸iil„Hcˆ¸nNl„Hciiil„Hcˆ¸iil„Hcˆ¸l„Hciiil„Hcˆ¸iil„Hcˆ¸!enNl„ˆ¸i!enNl„ˆ¸nNl„Hcˆ¸ii>enNl„Hcˆ¸l„ˆ¸`eil„ˆ¸`eý  ˆý  ˆÊò ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÊò1 1Ôá=? ˆÊò1 1Ôá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÔá=? ˆÊò1 1Ôá=? ˆÊò1 1Ôá=? ˆÊò ˆÊò˜v ˆÊò˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜v˜vvy ˆÊò ˆÊò ˆ']î$Ô‡î$C„l„H/Ÿ¤Ùò²‡Ùòã1²‡Ÿ¤«Ùò²‡Ùòã1vy²‡²‡Ÿ¤«²Ùò²‡²‡²‡²‡Ùòã1vyrŸ¤«²¹Ùò²‡Ùòã1vyr ˆ²‡²‡²‡²‡ ˆi)o)i)o)ì{i)o)i)o)ì{i)o)i)o)i)o)i)o)i)o)i)o)i)o)i)o)ÖuÖu•[Öuj‡Öu•[`Џ`Џ`Џ˜v/V²‡²‡²‡²‡²‡²‡²‡†‘H/ŽÇC„H/ŽÇC„H/ŽÇC„H/ŽÇC„H/C„l„Ô‡H/ŽÇC„H/C„l„Ô‡H/ŽÇC„H/H/H/H/oЏoЏ ˆÊò ˆÊòo’opÍo’oЏ ˆÊòo’opÍo’oЏ ˆÊòo’opÍo’oЏ ˆÊòo’opÍo’oЏ ˆÊòÖu ˆÊò•[Öu ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆl„ ˆl„ ˆl„` ˆl„1 1Ôá=?1 1Ôá=?ˆ¸ ˆÊò1 1Ôá=? ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò1 1Ôá=?ˆ¸ ˆÊò1 1Ôá=? ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò1 1Ôá=?ˆ¸ ˆÊò1 1Ôá=? ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò1 1Ôá=?ˆ¸ ˆÊò1 1Ôá=? ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò²¹Öuì{šq9ŸqЏì{šq9 ˆЏì{9šqì{ ˆÊò×qÜqâq÷Šì{ ˆÊòôqúqrrr ÷Š yÍì{ ˆÊò"rôqúqrr r ÷Š ˆÊò6rg‰ì{ ˆÊò6rHrg‰Mr÷Š #0ì{ ˆÊò6rHrg‰ì{ ˆÊòì{ ˆÊò ˆÊòì{ ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊò ˆÊòÞs ˆÊòÞs ˆÊòÞs ˆÊòÞs ˆÊò ˆÊò ˆÊòÞsptšq9ŸqЏÞspt9šqÞspt ˆÊò×qÜqâq÷ŠÞspt ˆÊòôqúqrr r ÷Š yÍÞspt ˆÊò"rôqúqr r r ÷Š ˆÊò6rg‰Þspt ˆÊò6rHrg‰Mr ÷Š #0Þspt ˆÊò6rHrg‰Þspt ˆÊòÞspt ˆÊò ˆÊò ˆÊòì{ ˆÊòpt ˆ ˆ ˆ ˆpt ˆpt ˆ²¹•[²¹ì{²¹j‡ j‡ j‡ j‡ j‡ÒFâFj‡ÒFâFj‡ÒFâFj‡ÒFâFj‡ÒFâFj‡ÒFâFj‡ÒFâFj‡ÒFâFnw ˆÊò ˆÊò ˆÊòÖu ˆÊòÖux ˆÊò ˆ ˆÊò ˆ ˆÊò ˆ¡¡¡¡¥£ ˆ!z%z,z1zÄBÅFÆJÇNÈRÉVËöÌö$Í%Ñ&Ñ'Ñ(Ñ)Ñ©Ås±ÅsN¹ÅsNÁÅsNÉÅsNÑÅsNÙÅsNáÅsNéÅsNñÅsNùÅsNÅsN ÅsÅsNÅs1!ÅsT Ås1üur1Ås1!Ås19Ås×ILx¡QÅs1YÅs1aÅsô Ås!ü ÅsLô ¯{”ü ¯{£üu÷ÃuxÏuÊÅs1qÅs  ÷u„ ÷u˜$ Ås!, ÅsL4 Ås*!$ ¯{”, ¯{£4 ¯{!4üu"4Ãux4ÏuJ#4Ås1D ÷uh!L ÷uu!T ÷u‚!LÛ|€\ Ås!Lä{dd ÅsLl Ås*!t Ås%\ ¯{”d ¯{£l ¯{!t ¯{y%Lüu&LÃuxLÏum'LÅs¥$„ ÷u=%Œ ÷uL%” ÷u[%œ ÷uj%dÛ|€¤ Ås!dä{d¬ ÅsL´ Ås*!¼ Ås%Ä Åsé)düu*¤ ¯{”¬ ¯{£´ ¯{!¼ ¯{y%Ä ¯{¨*dÃuxdÏu½+dÅs¥$Ô ÷uS*Ü ÷ud*ä ÷uu*ì ÷u†*ô ÷u—*|Û|€ü Ås!|ä{dÅsL Ås*!Ås%Åsé)$ÅsÜ.|üu/|Ãux|ÏuU/|Ås¥$ü ¯{”¯{£ ¯{!¯{y%¯{¨*$¯{è0,÷u514÷uo1<÷u©1D÷uã1L÷u2T÷uW2”Û|€\Ås!”ä{ddÅsLlÅs*!tÅs%|Åsé)„ÅsÜ.ŒÅs­3”üué3”Ãux”Ïu-4”Ås¥$\¯{”d¯{£l¯{!t¯{y%|¯{¨*„¯{è0Œ¯{6”÷ui6œ÷u©6¤÷ué6¬÷u)7´÷ui7¼÷u©7Ä÷ué7IÅs1IÅsW8‰Ãud‰Ïup8‘L{8™q8̈½8Ôˆ8܈8äˆE9숽8ôˆ8üˆ8Ü”ú8ˆ@: ˆE9ˆ8ˆ½8ô”ú8$ˆ8Ü”Ë9,ˆÔ;4ˆ@:<ˆ8DˆE9”ú8Lˆ½8ô”Ë9Tˆ8Ü”,;\Ås=dÅs¬=lÅsð=tÅsA>|ÅsŸ>„ý”„üu?„Ãux„‚!„Ïu7?©ÅsNŒÅs!Œ˜v”Œüuð?ŒÃuxŒžv ‰}‚I@ŒÏut@”Ås1”ã‚à@”Þ‚à@”Åsÿ@”Ù‚””üuP”üuRA”Ãux”ÏuÚA „‚µ‰}‚ïA¹ÅsNÁÅs1Á­ƒÿAœÅs,BQ„@BÌ„7BÉÅsN¤C„à@¤E„€¤\„‹B¬Þ‚à@T 6…CT A…ÐT ]…(CT p…Ó´ÅsKCT J…7BT … T j…1T ‘…ÓÑÅs1y|†1i„†Ói†1i“†¡䓆 ¼£†‹C¼Ÿ†3Cüˆ8ÄÅsÓCÌÅsõCìÅs1Äц”Ä׆£Ìц”Ì׆£Ìè†3DÌî†3DÌô†€Ô÷uAEÜ÷ucEäj‡¢Eäe‡3DäÅsÀEäs‡«Eìɇ˜FôÅsÀEü‡o ü‡ ÅsÓC„7Bô“† Hˆ žvo ÅsÓC‡o ‡ ÙUˆžHäYˆdÞ‚à@Ù‚”ÑÅsN$ÅsØI,ÅsøI<ÅsØIáÅsUJô¢‡!ü¢‡ÓCô«†1ôv‹ Hüˆ Hô‹qJô#ˆ Hü#ˆ Hü†‹Jô ˆdô’‹Óüü{8ü¡‹åIüª‹ Jüµ‹ÓCDÅs»JLÅs! Ås1Dц”D׆ÿJDè†ÿJDL¯{”T÷uØK\÷uôKdj‡¢Ede‡ÿJdÅs+Lds‡LlÅsjLtÅsÓC|‡o |‡ „ÅsAMŒÅs+L”Ås1œÅs1dYˆdd¢‡GLdÅsdN¢‡!«†1v‹ H‹qJ#ˆ H ˆd’‹Ó¤vyL¬˜v”„ˆ8¬[‚ž??OJOCyµ ÃudéÅsN´˜v”±•¢O±ÍªOÅs1ÄÅsPDˆ8 ÐŽ4OñØŽEP”ˆ8±vµÌ‡o ̇ ±ƒÓ±•4O ¸ÔPˆ8œˆ8äÅsÓCì?‘RR‘+RôÅsFRü›„vRüt‘R|p„!4?‘”±Ÿ‘SSa©‘]SY·‘4ODÅsÓCD‡ D‡o É‘~S4Œ‘S±Ø‘‘Saã‘Ó’©S4”‘"SLˆôRdÅsòSl?‘/TtˆñB|ÅsZT‘´•{8,˜v²,ÅsN„˜v”)?–:Y)E–AY |–Y‰Œ–ŸY±›–¥YivµŒÅsN”ˆ8œÞ‚à@œÙ‚””ˆ8¤˜v”¬‡ ¬‡o ´ø‚õ@´ƒ A¼ÅsNÄÅsN$ˆ8̘v”Ô‡ Ô‡o œø‚õ@ä˜v”ôÔ£†BôÙ‚€ôÚ£€ôÞ‚€IÅsNô磥$Iû£m1Ås11<¤2m1F¤8m1a¤11|†19Ås1ü[‚ž?Ås!‚!AÅsëBIÅsëBQ¦çmY-¦n ñ¦§n ÷¦³nÅso¯{ön²‡p´ˆ8$ÅsÐp, §"o4ý”4‚!<ÅsRqD §"oL˜v”1¨ÓTÅsÓCT‡o T‡ \ÅsGrdÅsrl §"ot˜v”|Ås3s„ÅsXsŒÅs‡s”ÅsXsœÅsÙs¤Ås¯6$Ì®”$Ý®£$î®!$ÿ®y%$¯¨*$!¯è0$>¯6$e¯ÿ},¦‡”,ÉŽ2~D„7BLHˆ 4¡3C<Ås~D¡3CLÅsdNDÅsdN\ÅsdN‘v‹XdÅsÑdˆ HlÅsëB‘ë¯æ‘û¯U€‘°U€‘°U€‘ °U€‘_‡¶€‘D°Ú€tÅsÑtˆ H‘M°.|ÅsÑ|ˆ H‘Q°.‘U°U€‘[°~‘i°¤„ÅsÑ„ˆ H‘n°æ‘x°¤ŒÅsÑŒˆ H‘}°æ”ÅsÑ”ˆ H‘U°Î‚‘Œ°U€œÅs ƒœˆ8¤ÅsëB‘›°7ƒ¬Ås ƒ¬ˆ8‘³°7ƒ´ÅsŽƒ´ˆ ƒ¼ÅsëBÄÅsŽƒÄˆ ƒD¥¯l~T„7BÌ“† Ôˆ8Üä°ÓÜžv ÜÅs!äˆ8‘±Ý„ì”ú8ôÅs ƒôˆ8‘)±F…üÅsdNÅs ƒˆ8‘=±Å… Ås ƒ ˆ8‘a±Å…Ås ƒˆ8‘„±†Ås ƒˆ8‘‹±†$ÅsŽƒ$ˆ ƒ,ÅsŽƒ,ˆ ƒ4ÅsŽƒ4ˆ ƒ<ÅsŽƒ<ˆ ƒD¡3CLÅs ƒLˆ8TÅsëB\Ås ƒ\ˆ8‘)±ÃˆdÅsdNL¡3ClÅs ƒlˆ8tÅsëB|Ås ƒ|ˆ8„ÅsëBŒÅsЉŒˆ½8”ÅsëB‘ ²ª‰œÅsdN¤Ås ƒ¤ˆ8¬Ås ƒ¬ˆ8´Ås‚Š´ˆšŠ¼ÅsëB‘Z²·ŠÄÅs ƒÄˆ8ÌÅs ƒÌˆ8ÔÅs‚ŠÔˆšŠ\¡3CÔˆ8ŒÅsdN䌇#ŽìÅs@Žô„7Bü“† ‡o ‡ äÅs!쵋ÓCÅs—Ž4~¥d<žv TÅs1Džv L¹þDÅs!Tv‹ H\„7Bd“† T ˆdlÅs1tÅs1\Ås1|Hˆ |žvo „ÅsÓC„‡o „‡ ÅsÓCŒˆ‘’Œ†‘"’”ü{8”¡‹åILÅs‘”ª‹ J”ˆ H|ÅsÓCœv‹ H¤„7B¬“† œ ˆd´Ås1¼Ås1ñÇЖÄ[‚ž?̘v”Ô‡o ܘv”ä‡ ì˜v”ä‡o Ô‡ Ô8‡ $ÔÅsÓCô‡ üƒ Aô‡o ôÅsÓCüø‚õ@ÅsŽu [‚ž?Ås1 ˜v”‡ ‡o 8‡ $ƒ A$ƒ AÞ‚à@¬ÅsÓC¤[‚ž?ø‚õ@$ø‚õ@aÈ«šaTÈÓhÈlOœƒ A ÊÃO4Ås¡›<ÅsÅ›DÅsÓCLÅsÓCTÅsÓC\ø‚õ@\ƒ AdÅsÓCœˆ8lø‚õ@lƒ AtÅsÓCŒˆ8T‡ L‡o T‡o L‡ |Ås(Ÿ„ÅsnŸŒÅsÓC”Ås(ŸœÅsnŸ¤ÅsÓC¬Ås(Ÿ´ÅsnŸ¼ÅsÓC±ÍÑ£ÌÅsŽu¤ˆ8±ÍÍšŒÔ[‚ž?ˆ+RIhΦÜÅsŽu”ˆ8Ô˜v”ä‡o ä‡ ìÅsó¨ôÅs7ªüÅsÓC‡ ‡o 8‡ $ Ås(ŸÅsnŸ$ÅsÓC,Åsij4Ås_µ<Ås_µD”ú8\¯{!d‡ d‡o L¯{£l˜v”l[‚ž?±ÏØÓt˜v”|‡ |‡o Ęv”|8‡ $„˜v”Œ‡ Œ‡o ”˜v”œ‡ œ‡o Œ8‡ $¬˜v”´‡ ´‡o ¼?ƒdÄ?ƒd̘v”Ô‡ ܘv”ä‡ ˆ8ì[‚ž?Ô‡o ôÅs¤} ˆ8üÅsÓCˆ8± Þ'¼˜v”‡ 8‡ $dˆ8$˜v”,8‡ $4‡o 4‡ ±Ïuà¾<ÅsÓClˆ8D˜v”LB‡„(L8‡ $TÅsˆ}4ˆ8\˜v”d8‡ $d‡o d‡ <‡o <‡ lÅsŽul8‡ $l‡o l‡ |Åsè},ˆ8„‡o „‡ „L‡ -„ “ì0„8‡ $„O¯ 6„,ß~Œ‡ „B‡„(”Åsè}œÅs~Tˆ8¤˜v”¬‡ ´˜v”¼‡ Ęv”̇ Ô˜v”܇o ä˜v”ì‡ ì‡o ‡o \Þ‚à@\Ù‚”L‡o ô‡o ô‡ ô8‡ $ôB‡„(ü‡ ü8‡ $üB‡„(,‡o $ˆ8ÅsŽuDˆ8 Åsˆ}ˆ8tˆ8˜v”‡o B‡„(L‡ -8‡ $$Ås~Lˆ8Ù‚”4ÅsÓC±±àྌÅs!„Ås~üÅsˆ}ü‡o ôÅsˆ}L‡ ,Ås¤}4ˆ8<Åsè}Dˆ8LÅsŽuTˆ8\Ås~dˆ8lÅs¤}tˆ8|Åsˆ}„ˆ8dÅs1,ÅsŽu$[‚ž?lÅs1LÅsˆ}D[‚ž?tÅs1Ås¤}[‚ž?|Ås1ŒvylYŒŠ‘”„Ås1”‡ ”‡o ŒÅsâÙŒÅs1t‡ t‡o aˆEP”Ås1܇ ܇o Ü8‡ $œÅs1d‡ d‡o ¤Ås1̇ ̇o Ì8‡ $¬Ås1œÔá_›¤‡ ¤‡o ¤8‡ $´Ås1¬Ôáy›´‡ ´‡o ´8‡ $¼Ås1¼{Êæž¼~ÊæžÄ‡ ćo Ä8‡ $ÄB‡„(ÄÅs1ÌÊŸÌ ÊŸÌÅs1Ô{ÊæžÔ~ÊæžÜ‡ ܇o Ü8‡ $ÜB‡„(ÔÅs1äÊŸä ÊŸì‡ ì‡o ì8‡ $ìB‡„(ìL‡ -ì “ì0ìO¯ 6ô{Êæžô~ÊæžÜÅs1üÊŸü ÊŸ‡ ‡o 8‡ $B‡„(L‡ -äÅs1 óÍÐ þÍæž Îæž Îæž Îæž &Îæž 1Îæž <Îæž ŸÍæž EÎæž ¨Íæž ~Êy›‡ ‡o 8‡ $B‡„(L‡ -ìÅs1ËΟ‰ÎŸÕΟ“ΟßΟΟêΟ¨ÎŸóΟ±ÎŸ Ê_›$‡ $‡o $8‡ $$B‡„($L‡ -$ “ì0$O¯ 6$,ß~,‡ <Ås/ÝôÅs1LÊŸL ÊŸLÙátÝT‡ T‡o T8‡ $TÅsŽuüÅs1\{Êæž\~Êæžd‡ d‡o d8‡ $Ås1lÊŸl ÊŸtÅsŽu Ås1ô‡ ô‡o ô8‡ $ôB‡„(ôL‡ -Ås1 ‡ ‡o 8‡ $ B‡„(Ås1ü‡ ü‡o $Ås1,Ås1|‡ |‡o |8‡ $|B‡„(|L‡ -| “ì0|O¯ 64Ås1T‡ T‡o T8‡ $TB‡„(<Ås1|lÊ×Þ|oÊ×Þ„ˆ8DÅs1‡ ‡o 8‡ $LÅs1$‡ $‡o $8‡ $$B‡„($L‡ -$ “ì0$O¯ 6$,ß~TÅs1œ‡ œ‡o œ8‡ $œB‡„(œL‡ -œ “ì0œO¯ 6œ,ß~”‡ ”‡o ”8‡ $”B‡„(”L‡ -” “ì0”O¯ 6Œ²‡]à\Ås1”²‡]àdÅs1lÅs1?ƒdœ?ƒdtÅs1œ*ˆ!H|Ås1„Ås1|ˆ8ŒÅs1”Ås1v‹VæÌ‡ ̇o [° æ›°®æÔ‡ Ô‡o ³°®æM°ç܇ ܇o Q°çU°f籀籙籲ç±Ïç±è瑱葱葱'葱>葱Qèä‡ ä‡o ±ºè±Ýè±é±'é±J鑱m鑱Šé‘±§é‘±È鑱åé»ì€ç»ì™ç»ì²ç»ìê»ìê‘»ìè‘»ìè‘»ì'è‘»ì4ê‘»ìGê»ìºè»ìÝè»ìé»ìZê»ì}ê‘»ìmé‘»ìŠé‘»ì§é‘»ì ê‘»ì½êU°Úêì‡ ì‡o Œ°Úêû¯Úê°Úê°Úê °Úê_‡ë‘¿ìÚ€«#ë‘«Cë}‚\ë‘}‚tëÎìŠë‘‚›ëÚì¥ë‘ÚìÙëë¯ì=± ìa± 성@싱@ìi°`ìx°`ìn°ì}°ìD°sì)±…ì)±«ì ²ßìZ²#í±Ÿ‘kíaùìríiÐŽ ŒœÅs1ô]¡xíüˆ8¡3C Äͼ휈8²‡¼í²‡¼í$²‡¼í,²‡¼í4²‡¼í<>Ëöí´ˆ8D>ËöíL>ËîTˆ8\>Ëî¤Ås1d1±öíl1±öít1±öí|1±öí„1±öíŒ1±î”1±îœ1±î¤1±î¬1±öí´÷±öí¼*²öíÄ;²öíÌ íáî´”ú8Ô*²öíÜ;²öíä íú8ì*²öíô;²öíü íïÅs@Ž Ås­ï¬Ù‚”˜v”‡ ¬ƒ A$[‚ž?¼‡o ,ÅsŽu4[‚ž?4O<ˆ H¼ÅsÓC´[‚ž?)„‚¬ò<†‹JDÅsÓCD‡ D‡o ìˆ8LÅsNTˆ8̇o ´[‚ž?œü{ùA\Þ‚à@\Ù‚”\ƒ A\ø‚õ@üˆ84˜v”,‡ ,8‡ $,‡o d‡o d‡ Ĉ8”ˆ8¬ÏuFö¬ÃuNö´Ås1l²‡öílˆ‘Tö)?–AYt†‹Jtµ‹ÓC¼Ås1ñÌòÓÄÅs1ÌÅs1ÔÅs1ÜÅs1äÅs1ìÅs1ôÅs1ñÓó4OüÅs1Ås1ÌÅsÓC<Ås1<µ‹ÓC±EýÓ±QýÓ±]ýÓ‡o ‡ ÅsÓCÅsÓC$[‚ž?,‡o ,‡ 4˜v”<‡ <‡o «óüD‡o L˜v”D‡ Ôlý  7þ 7þä‡o Cþ 8Lþ OWþ܇ vbþ±k4OL[‚ž? í nþ$˜v”‡o ‡ ƒþ±­9O Ôþ ¢‡±þ »Àþ\˜v”‘ÅsÐþ Ùþ ¿Àþ ¢‡7þ Æ7þ Í7þ Ö7þ ß7þ æ7þ ð7þ û7þ ÿ7þ  7þ  Àþ  7þ ' 7þ 7 7þ G Lþ z Lþ ‰ 7þ±Ø‘/ÿ ” 6ÿ ÔBÿ¬‡o ¼˜v”ćo ć ´ 7þ̘v”Ô‡o Ô‡ Ô8‡ $ ~¡³ÿ Ë Åÿ í Ôÿ䢇#F ~¡íÿ í ôÅsNüˆ8 b–4OÅsÓC<ˆ8  ;¹É { Ås1*ˆ!HÅs1aÍÍšŒÅsŽu[‚ž?Ås1‡o B‡„(8‡ $œÏu E§`$Ås1,Ås14Ås1<Ås1‡ ‡o $ 7þ - 7þ 9 7þ L 7þ U 7þDÅs1LÅs1TÅs1\Ås1dÅs1lÅs1äü{8tÅs1ä°Óžv œÅs!„Ås!ŒÅs!¤Ås!¬Ås!¬ä°Ó¬žv Ås!¬Ås!”Ås!´Ås!|Ås!tÅs!$Ås!,Ås!lÅs!dÅs!4ä°Ó4žv ‰}‚4<ÅsDDp„!LÅs¡TÅsÑ\ÅsÑdÅsÓClÅsttÅs|ÅsH„ÅsŠŒÅsª”ÅsÓC„Є!„‹0ÙB„1|…„1|w„ÙBœ²‡ö휛„ „Ås1¤¡{'¤Å{R¬¯{£´w„ÙB¼¯{”´p„!´…„1IJ‡ Är«ÌÅsÔ‘„ßBŒ‘„ßBÔ²‡ÈÔ›„ ¬ˆ8Ü¡{'ÜÅ{Rä¯{£ì¯{”ô²‡•ôr«üÅsâ”Ås1 ²‡¼íœÅs1 ²‡¼í ²‡Õ ›„  Ê«ç ý”ü ”ú8 ‚!$ ²‡Q $ ꇔ$ r«„Ås!, Åsú4 ›„w 4 “† < ý”D ÅsÓCL p„!< ‚!L w„ÙBL …„1T rð < Ås!4 Åsœ ¤‘„ßB\ ›„vR\ "!\ œ"!\ §"!d ý”d ‚!l ›„vRl "!l œ"!l §"!t ¸ð t »ð d Ås!\ Ås2!l Ås2!¬Ås1| ²‡‡!„ ˆ8Œ ¯{”” [‚ž?œ ²‡ó!¤ ˆ8¬ ¯{£´ Ås1¼ Ås}"´ h‘eTÄ Ås1Ì Åsã"Ä h‘eTÔ Ås6#Ü ÅsÓCä ÅsÌ#ì Ås!ô Ås4$ü Ås1!Ås! !Åsö$ü h‘eT!ÅsZT!ÅsZT$!Ås1,!ÅsÇ%$!h‘eT4!ÅsÓC´Ås1¬'¦©%w¬'‹tH´'í©©H´'÷©É>´'¦©%w´'‹tH´'o /ˆ8Ås1¼'á©ÿH¼'í©©H¼'÷©É>¬'ÅsH¬'ˆÏA´'Ås¼H´'ˆCAÅsëB<"ÅsÓC ˆ8Ä'á©ÿHÄ'í©©HÄ'÷©É>¼'ÅsÙsÌ'Ÿ”Ì'á©RIÔ'ÅsŽuÜ'ˆ8ä'Ÿ”ä'¤£ä'ᩊIì'Åsˆ}ô'ˆ8ü'Ÿ”ü'¤£ü'«!ü'á©ÊI(Ås¤} (ˆ8 Ås1(9§J(‡ (‡o (8‡ $$(ˆ8Ås1,(¦©%w4(1ªyJ4(÷©É>4(¦©„J4(‹tH4(·’JÅs1<(1ªyJ<(÷©É><(p¦1n<(¦©„J<(‹tH<(·’J4(Ås¥J4(ˆÏAD(žv L(1ªCKL(¦©%wL(‹tHL(o $KL(·NKT(žv \(·„!$Ås1d(1ªCKd(¦©%wd(‹tHd(o $Kd(·NKL(ÅsaKÅsSL,Ås1l(Öu²K|(žv É‘ïK„(1ªCK„(÷©É>Œ(ÅsèJd(ÅsaK”(ÅsÊKŒ(·’Jœ(žv \(¤„!¤(1ªCK¤(÷©É>„(ÅsÛu¬(¦©%w¬(Ù H<¬(¿/´(¦©%w´(Ù H<´(¿/¼(¦©%w¼(Ù H<¼(¿/4Ås1Ä(9§m)Ä(\©žqÄ(¦©%w¬(ÅsöL´(ÅsöL¼(ÅsöL<Ås1Ì(9§m)Ì(\©žqÄ(Ås)MDÅs1Dˆ8LÅs1TÅs1Ô(=12Ô(í¦³nÔ(Ís0ä Óò CNÜ(! ä(=12ä(í¦³nì(¼ªs0ä(ÅsYNä(ˆÔvô(ÅsëBÜ(!N,ºy\Ås1dÅs1ü( ˆ¿Nü(²‡ÈNü(ù {ü( -m ) ¬þw )©¬x)¯{”lÅs1) ˆ¿N)²‡ÈN)ù {) -m ) ­x$)˜v”,)Ås1 )Ȭ#xü(Ås¨@tÅs14) ˆ¿N4)²‡ÈN<) ˆ¿N<)²‡ÈND)Ås14)ÅsA|Ås1L) ˆ¿NL)²‡ÈNL)?¨€1R‚>qT) ˆ¿NT)²‡ÈNT)?¨€ )#­Íx\)Ås1L)ÅsDy„Ås1d) ˆ¿Nd)²‡ÈNd)?¨€ )p­¦yl)Ås1t) ˆyt)?¨€|) ˆy|)?¨€$G­çx$œ­fzt)Åsûy\ ˆy\?¨€$[­çx„) ˆy„)?¨€Œ) ˆyŒ)?¨€„)Åsûyd ˆyd?¨€”) ˆ}„`‘!œ) ˆ}¤)ˆ8” ˆ}”)Ås{œ)Ås{¬)¦©¢3Ì#ô«Pw´)¦©¢3¼)¦©¢3Ì#ö ŒÅs1Ä)?¨€Ä)¦©¢3¼)ÅsI{Ì)?¨€Ì)¦©¢3Ä)ÅsÝ{Ô)¦©¢3Ì#¢®Q|Ü)Ås1ä)U!;Qì)Ås1ô)¦©¢3ü)‡ ü)‡o *˜v” *G|ò *f|!ü)ÅsÓCdÅsÓC *…|0!*˜v”„[‚ž?*[‚ž?$*[‚ž?,*[‚ž?4*[‚ž?<*[‚ž?\[‚ž?D*[‚ž?L*[‚ž?T*[‚ž?\*[‚ž?d*[‚ž?l*˜v”ÔÅsÓCÌ[‚ž?ñò#Ж”Ås1œÅs1t*ÅsÓC|*[‚ž?¬ø‚õ@l*[‚ž?„*ÅsÓCŒ*[‚ž?”*ÅsŽuœ*[‚ž?¤*Åsˆ}¬*[‚ž?ì[‚ž?œ*˜v””*‡ ”*8‡ $”*‡o Ì[‚ž?¬*˜v”¤*‡ ¤*B‡„(¤*8‡ $¤*‡o dÅsŽu\[‚ž?ä[‚ž?ÌÅsÓCÄ[‚ž?¬ÅsÓC¤[‚ž?Œ*˜v”„*‡ „*‡o ÄÅsÓC¼[‚ž?äÅsÓCÜ[‚ž?ìÅsÓCä[‚ž?´*Ås¤}¼*[‚ž?äÅsÓCÜ[‚ž?*[‚ž?Ä*Åsˆ}Ì*[‚ž?|ÅsŽut[‚ž?Åsˆ}[‚ž?ÜÅsÓCÔ[‚ž?Ô*ÅsŽuÜ*[‚ž?ŒÅsŽu„[‚ž?ÔÅsŽuÌ[‚ž?ÔÅsŽuÌ[‚ž?ä*[‚ž?ì*˜v”ô*˜v”ä*˜v”y1(4O?(4O±N(4O‰„(2f±-)Ó8)˜f\?ƒdéÅs1y*Óñ‚*ÓñŽ*]Sa*Ó+‡ +‡o +ˆ8+Þ‚à@+Ù‚”±Ÿ‘Ïh± ÞKiéÅsUJ±ž,œi±¹,¿i+‡ +‡o +ÅsÓC$+‡ $+8‡ $$+L‡ -$+B‡„($+‡o ,+‡o ,+‡ ±N(¹ki˜¶šŒio-úk4+Ås!,ˆ8<+ÅsÓC<+‡ <+‡o D+ø‚õ@L+¢‡#FDˆ8T+ÅsŽuT+‡ T+‡o T+8‡ $\+ø‚õ@$+Ås¤}d+Åsˆ}l+ÅsÓCl+‡ l+‡o t+ÅsN|+ˆ8d+‡ d+‡o d+8‡ $d+B‡„(‰h.s‰J¹s‰h.s‰S¹s„+¢‡GLdˆ8„+ƒÓ„+gŒ ù?ƒhYù9/ëuœˆ8Œ+ÅsÓC”+¢‡ÓCœ+ˆ Hœ+†‹J¤+ÅsÓC¤+‡o ¤+‡ ¬+[‚ž?i½/vŒ¬+˜v”Tˆ8´+”ú8¼+Ås“g‘G0žx‘q¤x¤Ås1¬Ås1´Ås1¼Ås1ÄÅs1ÌÅs1ÔÅs1ÜÅs1äÅs1ìÅs1ôÅs1üÅs1Ås1\ü{ùA Ås1Ås1Ä+ ”Ås1ôˆ8$Ås1,Ås1 ˆ84Ås1<Ås1DÅs1LÅs1TÅs14ˆ8|ˆ8\ˆ8ˆ8\Ås1L+ü{8dÅs1lÅs1lˆ8tÅs1|Ås1dˆ8„Ås1Ì+ÅsÓCŒÅs1Ô+ø‚õ@”Ås1œÅs1¤Ås1Œ+‡ Œ+‡o ¬ÏuFö¬ÃuNö¼ÏuFö¼ÃuNöÄÅs1Ì+‡ Ì+‡o œ+¢‡ÓCÌÅs1i2îÜ+ÅsÓCÔÅs1‰927€”+ˆ Hœ+µ‹ÓCÜÅs1Ü+‡ Ü+‡o ä+ˆ8ìˆ8ì+ÅsÓCì+‡ ì+‡o äÅs1ìÅs1ô+ø‚õ@ü+ˆ8,Þ‚à@ ,ÅsÓC,[‚ž?,˜v”$,‡ ,ƒ A$,‡o ,ø‚õ@,,ˆ84,ÅsÓC<,[‚ž?D,˜v”L,ÅsãƒT,Ås„±Ý3à¾ôÅs1\,x3^„d,ˆ8üÅs1l,x3’„t,ˆ8|,ÅsÓC„,†‹J„,µ‹ÓCœÃuxŒ,ÅsN”,ˆ8œ,ÅsN¤,ˆ8¬,ÅsN´,ˆ8¼,ÅsN¤ˆ8Ä,ÅsNÌ,ˆ8„,Ås¥$”+Ås ˆœ+Ås ˆÅs1 Ås1Ås1Ås1$Ås1Ü,Åshˆä,Ås½ˆì,Ås1,Ås14Ås1Á­ƒ¿‰ô,²‡Ì‰ô,ç5§‰Tˆ8<Ås1ü,²‡Ì‰ô,ÅsÞ‰-Åsˆ}DÅs1 -²‡9Š -s5£ -z5DŠ-Åsˆ}Ñî5?}LÅs1TÅs1Ñô514ˆ84*˜v”¡“ úŠ¡á ÿŠ-ˆ8$-ÅsÓC$-‡ $-‡o ‰?ƒdáÅsN‰7UŒ,-ÅsÓC4-ÅsŽu,-‡ ,-‡o <-[‚ž?D-ÅsÓCD-‡ D-‡o 4-‡o 4-‡ 4-8‡ $L-[‚ž?‰!80±+86<-˜v”T-ÅsŽu\-”Ë9L-˜v”T-‡ T-‡o T-8‡ $y„‚9‘„‚¬ò‘Å8>d-ÅsŽu„‚¬òÛ8Pù„‚¬òùÛ8Ud-‡ d-8‡ $d-‡o l-ÅsÓClÞ‚à@lÙ‚”t-ÅsÓCt-‡ t-‡o |-ˆ8„-ˆ8Œ-ˆ8y29…‘l-‡o l-‡ ”-ˆ8œ-8‡ $œ-‡o œ-‡ œ-B‡„(¤-Åsò’¬-˜v²´-Åsµ“\Ås1Ä-”ú8dÅs1Ì-\9Ç•Ô-ˆ8Ü-8‡ $Ü-B‡„(,ˆ8lÅs1ä-\9›–ä-…5²ä-'0€ì-ˆ8ô-¡{'ô-Å{Rü-ÅsÓC.ÅsÓC .[‚ž?.Åsˆ} .˜v”.‡o .‡ .8‡ $.B‡„(.‡o .‡ ü-‡o ü-‡ ô+ƒ A.ÅsÓC‰Ås™.‡ .‡o Ñî5N$.”Ë9,.Þ‚à@,.Ù‚”4.ÅsÓC<.[‚ž?D.Þ‚à@y4<KŒy4<…‘L.Ås,T.ˆ HT.¢‡ÓCd.[‚ž?‰¯<꜉·<êœl.¯{”t.¯{£d.˜v”T.#ˆ H|.Ås¬„.”Ë9Œ.Ås¬„.”ú8”.Åsøœ.ÅsËž¤.ÅsŸ¬.Ås{Ÿ´.ˆ84ˆ8I_=dI?ƒdIh= Iv= ±€=šŒ±­@ IŽ=I œ‡o œ‡ T.Ås ˆ‘„‚q¡„‚q¡™„‚q¡‰„‚q¡¡„‚q¡±„‚q¡ñ„‚q¡©„‚q¡¶=PÉ=P¡“ x¡ù¶=UùÉ=UtÅs1Ì.‡ Ì.‡o |Ås1Ô.‡ Ô.‡o Ü.Ú£o,ŒÅs1”Ås1œÅs1ä.1®¢ì.ˆ8¤Ås1ô.Ôáà¢ü.ˆ8ä.ÅsÁ¢¬Ås1/;= /ˆ8ô.Åsû¢/1®¢/Ôáà¢/ÅsÁ¢$/;=/Åsû¢´Ås1,/Ë £4/ˆ8¼Ås1ÄÅs1I؎⣱± Þt±,0[‚ž?40ÅsŽu<0[‚ž?<0˜v”40‡ D0[‚ž?T0ÅsÓC\0[‚ž?±°HȲ±ѲyØŽ¦”±ÕHÓD0˜v”,0˜v”DÅsÓC,ÅsÓC<ÅsÓC4[‚ž?dÅs1lÅs1yÃLÓtÅs140‡o |Ås1T0‡ T0‡o „Ås1t0ü{8ŒÅs1408‡ $”Ås1œÅs1\ˆ8¤Ås1¬Ås1Ĺ޴Œe‡ÿJŒj‡¢EŒ¢‡GLŒs‡LŒ#ˆGLŒ'Œ“MŒ@ŒÄMŒ3Œ“MŒ3ŒÄMŒ»‡MŒˆúLŒÿ‡sMŒÜŒ~NŒŒ“M„0è†ÿJ„0׆ÿJ„0Œ0ß‹óJŒ0Ô‹ÐJ„0ц””0TŒ&¥|0¯{”œ0‡ œ08‡ $œ0‡o œ0ÅsŽu¤0ÅsÓC¤0‡o ¤0‡ ´0è†ÿJ´0׆ÿJ´0ц”¬0¯{”¼0ˆ8Ä0Ås+LÌ0Ås+LÔ0Ås+LÜ0ÅsÓCÜ0‡ Ü0‡o ä0Þ‚à@ä0Ù‚”ä0ƒ Aä0ø‚õ@ì0ÅsÈÀì0ÂOÐì0ËOëÀì0ÚO#Áì0äOô0Ås!ü0Ås‰Á1Ås·Â 1ÅsCÃ1j‡¢E1ý‡ÿJ1j‡¢E1ý‡ÿJ$1j‡¢E$1n„ÿJ,1ËOëÀ,1ÂOÐ41H/ÿJ41÷Š­Ã<1ý”<1‚!D1óІBD1yÍo,´Ås1L1j‡¢E¼Ås1T1²‡ÄÄÅs1\1²‡öí\1j‡4ÄÌÅs1d'Œ“Md3Œ“Md1e‡3Dd1¢‡#Fd1j‡¢Ed1#ˆHl1˜v”IÅs1d1»‡oFd1ˆåGt1ÅsÀE|1ɇ˜F„1ɇ˜FŒ1Ås1œ1ÅsǤ1ÅsÇd1AˆIHd1y‡ñEd1ÅsÀEd1s‡«EÔÅs1ÜÅs1¬1²‡5È´1²‡5ÈÄ1î†3DÄ1è†3DÄ1ô†€Ì1džÛCÌ1݆DÄ1׆£Ä1ц”¼1ц”¼1׆£Ô1[‚ž?Ü1ÅsÓCÜ1‡ Ü1‡o ä1ÅsŽuä1‡o ä18‡ $ä1‡ ì1׆£ì1ц”ü1džÛCô1׆£ô1î†3Dô1è†3Dô1ц”ô1ô†€ü1݆D2džÛC2݆D„1ˆE9 2׆£ 2ц”2ˆE92׆£2î†3D2è†3D2ц”ÅsÓC,.ƒ A,.ø‚õ@$2ÅsCÃ42ÅsfÒ<2Þ‚à@<2Ù‚”<2ƒ A<2ø‚õ@D2Ås!ÓD2ÂOÐD2ËOJÓL2ÅsÓCD2ÚO¯ÓD2äOT2Ås!\2Ås%ÔäÅs1d2j‡¢EìÅs1l2óŠ‘Ôl2yÍo,t2ËOJÓt2ÂOÐ|2H/3D|2÷ŠÛÔ„2ý”„2‚!Œ2“† L2Hˆ L2žvo üÅs1 Ås1$H/«E”2Ås1 Ås1œ2H/–Õ¤2Ås1 Ås1<ˆ¸«Eì TŒ&¥´2Ås9Ö´2~¥oÖt ”,;´2tQëÖ¼2tQ5×¼2~¥O×¼2Ås%t ”Ë9Ä2~¥ ØÌ2ˆ8ì2ˆ8ô2ɇ~Úô2ˆ½8ü2ɇ~Úü2ˆ½83ɇ˜F3ˆE9 3ɇ~Ú 3ˆ½83ɇ˜F3ˆE93ɇ~Ú3ˆ½8$3ˆ½8$3ɇ~ÚIÅsN,3ˆ8Ô1˜v”43Ås143¢‡!439ˆ B<3Ås1<3¢‡!<39ˆ BD3ÅsÓCT3ÅsŽu\3ÅsÓCT38‡ $T3‡o T3‡ l3ÅsŽut3ɇ~Út3ˆ½8|3ɇ~Ú|3ˆ½8|1ˆE9„3ɇ~Ú„3ˆ½8Œ3ɇ~ÚŒ3ˆ½8”3”ú8¬?ƒd,Ù‚”œ3Þ‚à@œ3Ù‚”¤3ˆE9¬3ƒ A¤3ɇ˜F¬3ø‚õ@œ3ƒ Aœ3ø‚õ@‰ ²©ï´3”ú8ÁÅs¥$ˆ8¼3ˆ8 Ås1Ä3ˆ8Ì3ÅsÔðÔ3ÅsñÜ3"U_ñä3Åsqñì3Ås©ñÌ2”ú8,„7Bô3“† ü3Ås›ò4Åsãò 4ÅsÑ4Ås ƒ4Ås™ó$4ÅsЉ,4Åsô44Ås1D4Ås1L4ÅsÂôT4Ås€õ\4 ˆd|-”ú8d4Ås öl4ÅsÈöt4ÅsÄ÷|4Ås!„4Ås øŒ4Ås=ø”4Åsøœ4Ås|ù<3 ˆd¤4ý”¬4[‚ž?´4[‚ž?¤4‚!´4žv ¬4˜v”<3ü{ùA¼4ÅsÓCÄ4[‚ž?<3«†1´4˜v”¤4Ås!Ì4ÅsûÔ4Ås<ûÜ4ÅsžCä4ÅsdNì4Ås½ûô4Ås ü5Ås~ü 5Ås½û5ÅsdN5Åsý$5Åsäý,5Ås€õ45Ås/þ$ Ås1<5²‡ªþ ˆ8D5²‡ÌþD5 ˆ£L5²‡ìþT5\„€T5²‡ìþ\5²‡ÿ\5€‡2~d5ˆ8l5²‡5ÿl5XU2~l5ÞSÿt5„7B|5”ú8, Ås1„5²‡¼í4 Ås1Œ5²‡öí”5²‡¹ÿ< Ås1œ5²‡áî¤5²‡ÈD Ås1L Ås1¬5‡ ¬5‡o ´5ÅsŽu¼5¡íŸÄ5\„€Ä5¡3CÄ5Š‘;CÄ5`€Ä5/VHÄ54V€Ä5ÒO”T Ås1, „7BÌ5“† Ä5Ås€õÔ5²‡6LÜ5ˆ8\ Ås1ä5Þ3Cì5Ö3Cì5Þ3Cä5ÅsdNô5E§Éü5¡†B6ÅsÄ÷ 6 ˆ”6Ås!6l„€6¡3C6÷Šo,6€‡;C64V€6ÒO”6Ås ø$6¡3C$6€‡;C$67V?$6yÍ”$64V€$6ÒO(d Ås1$6Ås=ø,6²‡Q ,6ꇔ,6¡2~,6e£”=nNQ ”=l„””=Hc£”=ˆ¸”D ÅsÖ3L „7Bœ=ý "ST Ås1¤=ý "S¬=Åsá6´=Åsá6¼=Åsá6Ä=Åsá6Ì=Åsá6Ô=Åsá6Ü=Åsá6ä=Åsá6ì=…à2\ Ås1ÙUˆO7d Ås1¬=Ôáà2d ˆ8l Ås1ÙUˆT7´=Ôáà2t Ås1¼=Ôáà2| Ås1ÙUˆY7Ä=Ôáà2„ Ås1ÁÅsNÌ=Ôáà2Œ Ås1ÙUˆÄ)Ô=Ôáà2” Ås1ÙUˆ^7Ü=Ôáà2œ Ås1ÙUˆc7ä=Ôáà2ô=Åsá6ü=Åsá6>…à2ÙScÄ)ô=Ôáà2ü=Ôáà2 >Åsá6>Åsá6>…à2ÙXcÄ) >Ôáà2>Ôáà2$>Åsá6,>Åsá64>…à2Ù]cÄ)$>Ôáà2,>Ôáà2<>ÅsÚ7D>ÅsÚ7L>… 3¤ Ås1Ùbc38T>1öí¬ Ås1<>Ôá 3¬ ˆ8T>Ås ƒ´ Ås1\>1öíD>Ôá 3\>Ås ƒd>Åsá6l>Åsá6t>…à2ÙhcÄ)d>Ôáà2l>Ôáà2|>Åsá6„>Åsá6Œ>…à2ÙpcÄ)|>Ôáà2„>Ôáà2”>Åsá6œ>Åsá6¤>…à2”>Ôáà2œ>Ôáà2¬>Åsá6´>Åsá6¼>…à2¬>Ôáà2´>Ôáà2Ä>Åsá6Ì>Åsá6Ô>…à2ÙzcÄ)Ä>Ôáà2Ì>Ôáà2Ü>Åsþ8ä>Åsþ8ì>Åsþ8ô>Åsþ8ü>Åsþ8?Åsþ8 ?Åsþ8?Åsþ8?…Ѽ Ås1Ù€ch9Ä Ås1Ü>ÔáÑÌ Ås1ä>ÔáÑÔ Ås1ì>ÔáÑÜ Ås1Ù€c|9ô>ÔáÑä Ås1Ù€cŠ9ü>ÔáÑÙ€cžH?ÔáÑì Ås1Ù€c”9 ?ÔáÑô Ås1Ù€cž9?ÔáÑ$?Åsá6,?Åsá64?…à2Ù…cÄ)$?Ôáà2,?Ôáà2œ@Ås6>¤@Ås?„@²‡q=$ Ås1|@ˆE9¬@ˆ8”@²‡‡=Œ@ˆ½8t@”ú8œ@²‡O? ˆ88”Ë9´@²‡v?´@Ùò¨*¼@ˆ@:, Ås1Ä@Ås¹?Ô@Ås†@ä@ÅsÎ@ô@Ås Aü@ÅsVAA²‡BAÙòè0 AˆÔ;Ô@²‡@4 Ås1Ì@ˆ@:Aˆ8ä@²‡@Ü@ˆE9¬@”ú8ô@²‡;@ì@ˆ½8t@”Ë9ü@²‡ÎB, ˆ88”,;AÅs1$AÅs¥$,AÅs14AÅs1}CzwIZ^ I»ŒIÃŒ`»Œ`ÃŒaËa»ŒaÃŒczwiZú#i»ŒiÃŒ€»Œ€ÃŒË»ŒÃŒƒzw‰Z¢D‰»Œ‰ÃŒ »Œ ÃŒ¡Ë¡»Œ¡ÃŒ£zw©Zs(©»Œ©ÃŒÀ»ŒÀÃŒÁËÁ»ŒÁÃŒÃzwÉZ9[É»ŒÉÌ໌àÃŒáËỌáÃŒãzwéZù黌éÃŒ »Œ ÃŒ Ë »Œ ÃŒ zw ZBV »Œ ÃŒ »Œ ÃŒ! Ë! »Œ! ÃŒ# zw) Z^ ) »Œ) ÃŒ@ »Œ@ ÃŒA ËA »ŒA ÃŒC zwI Zú#I »ŒI ÃŒ` »Œ` ÃŒa Ëa »Œa ÃŒc zwi Z¢Di »Œi ÃŒ€ »Œ€ ÃŒ Ë »Œ ÃŒƒ ꌃ ÒŒƒ :Œƒ zw‰ Zs(‰ »Œ‰ ÃŒ  »Œ  ÃŒ¡ Ë¡ »Œ¡ ÃŒ£ *Œ£ zw© Z9[© »Œ© ÃŒÀ »ŒÀ ÃŒÁ ËÁ »ŒÁ ÃŒà Œà zwÉ »ŒÉ ÃŒÉ Ëà »Œà ÃŒá Ëá »Œá Ì㠌ã zwé »Œé ÃŒé Ë!‚5!Ë!»Œ!ÃŒ!Œ!zw !»Œ !ÃŒ !Ë !»Œ !ÃŒ!!Ë!!»Œ!!ÃŒ#!Œ#!zw)!»Œ)!ÃŒ)!Ë@!‚`A!ËA!»ŒA!ÃŒC!ŒC!zwI!»ŒI!ÃŒI!Ë`!»Œ`!ÃŒc!Œc!zwi!»Œi!ÃŒi!Ë€!‚@!ƒ!Œƒ!zw‰!»Œ‰!ÃŒ‰!Ë !»Œ !ÃŒ£!:Œ£!zw©!»Œ©!ÃŒ©!ËÀ!‚0%Ã!:ŒÃ!zwÉ!»ŒÉ!ÃŒÉ!Ëà!»Œà!ÃŒã!:Œã!zwé!»Œé!ÃŒé!Ë"‚*"«Þ"zw "»Œ "ÃŒ "Ë "»Œ "ÃŒ#"«,#"zw)"»Œ)"ÃŒ)"Ë@"‚ø.C"«eC"zwI"»ŒI"ÃŒI"Ë`"»Œ`"ÃŒc"«ec"zwi"»Œi"ÃŒi"Ë€"‚Ë3ƒ"«%Œƒ"zw‰"»Œ‰"ÃŒ‰"Ë "»Œ "ÃŒ£"zw©"»Œ©"ÃŒ©"ËÀ"»ŒÀ"ÃŒÃ"zwÉ"»ŒÉ"ÃŒÉ"Ëà"»Œã"zwé"»Œé"ÃŒé"Ë#»Œ#zw #»Œ #ÃŒ #Ë #»Œ##z;)#»Œ)#ÃŒ)#Ë@#»ŒC#z;I#»ŒI#ÃŒI#Ë`#»Œi#»Œi#ÃŒi#Ë€#»Œƒ#⌃#z;‰#»Œ‰#ÃŒ‰#Ë #»Œ©#»Œ©#ÃŒ©#ËÀ#»ŒÉ#»ŒÉ#ÃŒÉ#Ëà#»Œà#ÃŒã#z’‘é#»Œé#ÃŒé#Ë$»Œ$ÃŒ $»Œ $ÃŒ $Ë $»Œ $ÃŒ)$»Œ)$ÃŒ)$Ë@$»Œ@$ÃŒC$z’‘I$»ŒI$ÃŒI$Ë`$»Œ`$ÃŒi$»Œi$ÃŒi$Ë€$»Œ€$ÃŒ‰$»Œ‰$ÃŒ‰$Ë $»Œ $ÃŒ£$⌣$z;©$»Œ©$ÃŒ©$ËÀ$»ŒÀ$ÃŒÃ$âŒÃ$z;É$»ŒÉ$ÃŒÉ$Ëà$»Œà$ÃŒã$šgØã$z;é$»Œé$ÃŒé$Ë%»Œ%ÃŒ %»Œ %ÃŒ %Ë %»Œ %ÃŒ)%»Œ)%ÃŒ)%Ë@%»Œ@%ÃŒI%»ŒI%ÃŒI%Ë`%»Œ`%ÃŒi%»Œi%ÃŒi%Ë€%»Œ€%ÃŒ‰%»Œ‰%ÃŒ‰%Ë %»Œ %ÃŒ©%»Œ©%ÃŒ©%ËÀ%»ŒÀ%ÃŒÉ%»ŒÉ%ÃŒÉ%Ëà%»Œà%ÃŒá%Ëá%»Œá%ÃŒé%»Œé%ÃŒé%Ë&»Œ&ÃŒ&Ë&»Œ&ÃŒ &»Œ &ÃŒ &Ë &»Œ &ÃŒ!&Ë!&»Œ!&ÃŒ)&»Œ)&ÃŒ)&Ë@&»Œ@&ÃŒA&ËA&»ŒA&ÃŒI&»ŒI&ÃŒI&Ë`&»Œ`&ÃŒa&Ëa&»Œa&ÃŒi&»Œi&ÃŒi&Ë€&»Œ€&ÃŒ&Ë&»Œ&ÃŒ‰&»Œ‰&ÃŒ‰&Ë &»Œ &ÃŒ¡&Ë¡&»Œ¡&ÃŒ©&»Œ©&ÃŒ©&ËÀ&»ŒÀ&ÃŒÁ&ËÁ&»ŒÁ&ÃŒÉ&»ŒÉ&ÃŒÉ&Ëà&»Œà&ÃŒá&Ëá&»Œá&ÃŒé&»Œé&ÃŒé&Ë'»Œ'ÃŒ'Ë'»Œ'ÃŒ '»Œ 'ÃŒ 'Ë '»Œ 'ÃŒ!'Ë!'»Œ!'ÃŒ)'Z×0)'»Œ)'ÃŒ@'»Œ@'ÃŒA'ËA'»ŒA'ÃŒI'Z 6I'»ŒI'ÃŒa'Ëa'»Œa'ÃŒi'Zµ^i'»Œi'ÃŒ'Ë'»Œ'ÃŒ‰'Z_‰'»Œ‰'ÃŒ¡'Ë¡'»Œ¡'ÃŒ©'Zn_©'»Œ©'ÃŒÁ'ËÁ'»ŒÁ'ÃŒÉ'Z_É'»ŒÉ'ÃŒá'Ëá'»Œá'ÃŒã'zwé'ZÞ_é'»Œé'ÃŒ(Ë(»Œ(ÃŒ (ZN` (»Œ (ÃŒ (»Œ!(Ë!(»Œ!(ÃŒ)(Z­`)(»Œ)(ÃŒ@(»ŒA(ËA(»ŒA(ÃŒI(ZaI(»ŒI(ÃŒ`(»Œa(Ëa(»Œa(ÃŒi(Zsai(»Œi(ÃŒ(Ë(»Œ(ÃŒ‰(Zça‰(»Œ‰(ÃŒ (»Œ¡(Ë¡(»Œ¡(ÃŒ©(ZGb©(»Œ©(ÃŒÀ(»ŒÁ(ËÁ(»ŒÁ(ÃŒÉ(Z©bÉ(»ŒÉ(ÃŒá(Ëá(»Œá(ÃŒé(Zcé(»Œé(ÃŒ)Ë)»Œ)ÃŒ )Z‚c )»Œ )ÃŒ!)Ë!)»Œ!)ÃŒ))Zíc))»Œ))ÃŒA)ËA)»ŒA)ÃŒI)ZOdI)»ŒI)ÃŒa)Ëa)»Œa)ÃŒi)Z§di)»Œi)ÃŒ)Ë)»Œ)ÃŒ‰)Ze‰)»Œ‰)ÃŒ¡)Ë¡)»Œ¡)ÃŒ©)Z^e©)»Œ©)ÃŒÁ)ËÁ)»ŒÁ)ÃŒÉ)Z¸eÉ)»ŒÉ)ÃŒá)Ëá)»Œá)ÃŒé)ZÉeé)»Œé)ÃŒ*Ë*»Œ*ÃŒ *Z'f *»Œ *ÃŒ!*Ë!*»Œ!*ÃŒ)*Z×0)*»Œ)*ÃŒA*ËA*»ŒA*ÃŒI*Z 6I*»ŒI*ÃŒa*Ëa*»Œa*ÃŒi*Zµ^i*»Œi*ÃŒ*Ë*»Œ*ÃŒ‰*Z_‰*»Œ‰*ÃŒ¡*Ë¡*»Œ¡*ÃŒ©*Zn_©*»Œ©*ÃŒÁ*ËÁ*»ŒÁ*ÃŒÉ*Z_É*»ŒÉ*ÃŒà*»Œá*Ëá*»Œá*ÃŒé*ZÞ_é*»Œé*ÃŒ+»Œ+Ë+»Œ+ÃŒ +ZN` +»Œ +ÃŒ +»Œ!+Ë!+»Œ!+ÃŒ)+Z­`)+»Œ)+ÃŒ@+»ŒA+ËA+»ŒA+ÃŒI+ZaI+»ŒI+ÃŒ`+»Œa+Ëa+»Œa+ÃŒc+êŒc+ÒŒc+ÊŒc+zWDi+Zsai+»Œi+ÃŒ€+»Œ+Ë+»Œ+ÃŒ‰+Zça‰+»Œ‰+ÃŒ£+öá©+ZGb©+»Œ©+ÃŒÃ+DâÉ+Z©bÉ+»ŒÉ+ÃŒà+»Œã+‘âé+Zcé+»Œé+ÃŒ,»Œ ,Z‚c ,»Œ ,ÃŒ ,»Œ ,ÃŒ),Zíc),»Œ),ÃŒ@,‚5I,ZOdI,»ŒI,ÃŒ`,‚`i,Z§di,»Œi,ÃŒ€,»Œ€,ÃŒ‰,Ze‰,»Œ‰,ÃŒ ,»Œ ,ÃŒ¡,Ë¡,»Œ¡,ÃŒ©,Z^e©,»Œ©,ÃŒÀ,»ŒÀ,ÃŒÉ,Z¸eÉ,»ŒÉ,ÃŒà,»Œé,ZÉeé,»Œé,ÃŒ-»Œ-› Œ-ªŒ -Z'f -»Œ -ÃŒ -»Œ@-»Œ`-»Œ€-»Œ¡-Ë£-⌣-z;Á-Ëá-Ëé-»Œé-ÃŒé-Ë.»Œ.Ë.z’‘ .»Œ .ÃŒ .Ë .»Œ!.Ë#.z’‘).‚C8A.ËC.z’‘`.»Œ`.ÃŒa.Ëa.»Œa.ÃŒc.z’‘€.‚5ƒ.z’‘‰.‚)8 .»Œ .ÃŒ£.z’‘©.‚68À.‚`Ã.z’‘É.‚C8à.»Œà.ÃŒã.z’‘é.‚*X/»Œ/ÃŒ/z’‘ /‚)8 /»Œ /ÃŒ#/z’‘)/‚68@/»Œ@/ÃŒI/»ŒI/ÃŒI/Ë`/»Œ`/ÃŒc/z’‘i/Zùi/»Œi/ÃŒ€/»Œƒ/z’‘ /»Œ£/z’‘À/»ŒÃ/z’‘à/»Œã/z’‘ä/²Œ0»Œ0z’‘ 0»Œ#0z’‘$0²Œ@0»ŒC0z’‘`0»Œc0z’‘ƒ0z’‘‰0‚)8£0z’‘Ã0z’‘É0‚)8ã0z’‘é0‚681z’‘#1z’‘C1z’‘D1²ŒI1‚)8c1z’‘i1‚68ƒ1z’‘„1²Œ‰1‚C8£1z’‘³1JŒÀ1ºÈBÀ1»ŒÃ1z’‘Ä1²ŒÓ1JŒÓ1RŒã1z;2z’‘2²Œ 2‚)8)2‚68I2‚C8i2‚*X„2²Œó2JŒ3êŒ3ÒŒ3zWD3²Œ 3‚)8)3‚68C3 ÷I3‚C8c3z÷d3²Œi3‚*Xƒ3ô÷‰3‚7X£3`ø¤3²Œä3²ŒI4‚)8i4‚68‰4‚C8©4‚*XÉ4‚7Xé4‚DX€5»Œ€5ÃŒ 5‚5À5‚`Ä5²ŒÉ5‚)8à5‚@!é5‚686»Œ6ÃŒ6z;6²Œ 6‚C8 6»Œ 6ÃŒ#6ÒŒ#6êŒ#6zY)6‚*X@6»Œ@6ÃŒD6²ŒI6‚7X`6»Œ`6ÃŒi6‚DX€6»Œ€6ÃŒ‰6‚QX 6»Œ 6ÃŒ¤6²ŒÀ6»ŒÀ6ÃŒà6»Œà6ÃŒä6²Œ7»Œ7ÃŒ 7»Œ 7ÃŒ$7²Œ@7»Œ@7ÃŒ`7»Œ`7ÃŒd7²Œ€7»Œ€7ÃŒ‰7‚)8 7»Œ 7ÃŒ¤7²Œ©7‚68À7»ŒÀ7ÃŒÉ7‚C8à7»Œà7ÃŒé7‚*X8»Œ8ÃŒ82Œ8Ë 8‚7X 8»Œ 8ÃŒ!82Œ!8Ë)8‚DX@8»Œ@8ÃŒA82ŒA8ËI8‚QXa82Œa8Ëi8‚^X82Œ8Ë¡82Œ¡8ËÁ82ŒÁ8Ëá82Œá8Ë92Œ9Ë!92Œ!9ËA92ŒA9ËÁ9ú‡Á9Ëá9Ë:Ë:»Œ:ÃŒ@:ºÈB`:ºGA;ËA;»ŒA;ÃŒI;ú‡I;z a;Ëa;»Œa;ÃŒi;z ‰;z ©;z É;z é;z  <z )<z I<z ‰<z ©<z É<z é<z  =z )=z I=z i=z ƒ=šg؃=ÊŒƒ=z;‰=z £=⌣=z;©=z É=z ã=šgØã=ÊŒã=z;é=z >BŒ>zw >z #>z’‘)>z C>z’‘I>z c>z’‘i>z ƒ>z’‘‰>z  >»Œ >ÃŒ©>z À>‚5É>z à>‚`ã>z’‘é>z ?‚@!?z’‘ ?z  ?»Œ ?ÃŒ#?z’‘)?z @?»Œ@?ÃŒC?z’‘I?z `?»Œ`?ÃŒc?z’‘i?z €?»Œ€?ÃŒƒ?z’‘‰?z  ?»Œ ?ÃŒ£?z’‘©?z À?»ŒÀ?ÃŒÃ?z’‘É?z à?»Œà?ÃŒé?z @»Œ@ÃŒ @z  @»Œ @ÃŒ#@šgØ#@ÊŒ#@z;)@z @@»Œ@@ÃŒI@z `@»Œ`@ÃŒa@Ëa@»Œa@ÃŒi@z €@»Œ€@ÃŒ‰@z  @»Œ @ÃŒ©@z À@»ŒÀ@ÃŒÉ@z à@»Œà@ÃŒé@z  Az )Az IAz cAz;iAz ‰Az ©Az ÉAz éAz  Bz !BË!B»Œ!BÃŒ)Bz @BºÈBABËAB»ŒABÃŒIBz iBz ‰Bz ©Bz ÉBz éBz CâŒCz;C²Œ Cz )Cz ICz iCz ‰Cz ©Cz ÉCz ãCâŒãCz;éCz DËD»ŒDÃŒ Dz !DË!D»Œ!DÃŒ)Dz ADËAD»ŒADÃŒIDz aDËaD»ŒaDÃŒiDz DËD»ŒDÃŒ‰Dz ¡DË¡D»Œ¡DÃŒ©Dz ÁDËÁD»ŒÁDÃŒÉDz áDËáD»ŒáDÃŒéDz EËE»ŒEÃŒ Ez !EË!E»Œ!EÃŒ#Ez’‘)Ez AEËAE»ŒAEÃŒCEz;IEz aEËaE»ŒaEÃŒiEz EˉEz ¡EË©Ez ÁEËÃEz;ÉEz áEËéEz FË Fz !FË)Fz AFËIFz aFËiFz FˉFz ¡FË©Fz ÁFËÉFz áFËéFz GËGzw Gz !GË#Gz’‘)Gz AGËIGz aGËiGz GˉGz ¡GË©Gz ÁGËÃGz;ÉGz áGËéGz HË Hz !HË)Hz AHËIHz aHËiHz HˉHz ¡HË©Hz ÁHËÉHz àH»ŒáHËéHz IË Iz !IË)Iz AIËIIz aIËiIz IˉIz ¡IË£I:Œ£IŠ@£Izw©Iz ÁIËÃI:ŒÃIŠ@ÃIzwÉIz áIËãI:ŒãIŠ@ãIzwéIz JË Jz !JË)Jz AJËCJ:ŒCJŠ@CJzwIJz aJËiJz JˉJz ¡JË£Jz;©Jz ÁJËÃJÒŒÃJêŒÃJzWDÉJz áJËéJz KËK.7 Kz !KË#K}7)Kz AKËCKÖ7IKz aKËiKz KˉKz ¡KË©Kz ÁKËÉKz áKËéKz LË Lz !LË)Lz ALËILz aLËiLz LˉLz ¡LË©Lz ÁLËÉLz áLËéLz MË Mz !MË)Mz AMËIMz aMËiMz MˉMz ¡MË©Mz ÁMËÉMz áMËéMz NË Nz !NË)Nz ANËINz aNËiNz NˉNz ¡NË©Nz ÁNËÉNz áNËéNz OË Oz !OË)Oz AOËIOz aOËiOz OˉOz ¡OË©Oz ÁOËÉOz áOËéOz PË Pz !PË)Pz APËCPz’‘IPz aPËcPz’‘iPz PˉPz  P»Œ PÃŒ¡PË©Pz ÀP‚5ÁPËÉPz àP»ŒàPÃŒáPËéPz Q‚`QË Qz  Q»Œ QÃŒ!QË)Qz @Q‚@!AQËIQz `Q»Œ`QÃŒaQËiQz €Q»Œ€QÃŒQˉQz  Q»Œ¡QË©Qz ÀQ»ŒÁQËÉQz àQ»ŒáQËéQz R»ŒRË Rz  R»Œ!RË)Rz @R»Œ@RÃŒARËIRz `R»Œ`RÃŒaRËiRz €R»Œ€RÃŒRˉRz  R»Œ RÃŒ¡RË©Rz ÀR»ŒÀRÃŒÁRËÉRz àR»ŒàRÃŒáRËéRz S»ŒSÃŒSË Sz  S»Œ SÃŒ!SË)Sz @S»Œ@SÃŒASËISz `S»Œ`SÃŒaSËcSz’‘iSz €S»Œ€SÃŒSˉSz  S‚5¡SË£Sz’‘©Sz ÀS»ŒÀSÃŒÁSËÉSz àS‚`áSËéSz T»ŒTÃŒTË Tz  T‚@!!TË)Tz @T»Œ@TÃŒATËCTz’‘ITz `T»Œ`TÃŒaTËiTz €T»Œ€TÃŒT˃Tz’‘‰Tz  T»Œ TÃŒ¡TË©Tz ÀT»ŒÀTÃŒÁTËÉTz àT»ŒàTÃŒáTËéTz U»ŒUÃŒUË Uz  U»Œ UÃŒ!UË)Uz @U»Œ@UÃŒAUËIUz `U»Œ`UÃŒaUËiUz €U»Œ€UÃŒUˉUz  U»Œ UÃŒ¡UË©Uz ÀU»ŒÀUÃŒÁUËÉUz àU»ŒàUÃŒáUËéU»ŒéUÃŒéUËV»ŒVÃŒVË V»Œ VÃŒ VË V»Œ VÃŒ!VË)V»Œ)VÃŒ)VË@V»Œ@VÃŒAVËIV»ŒIVÃŒIVË`V»Œ`VÃŒaVËcVz’‘iVZùiV»ŒiVÃŒ€V»Œ€VÃŒVˉVZBV‰V»Œ‰VÃŒ V»Œ VÃŒ¡VË£Vz’‘©VZSV©V»Œ©VÃŒÀV»ŒÀVÃŒÁVËÉVZ·áÉV»ŒÉVÃŒàV»ŒàVÃŒáVËéVZÈáéV»ŒéVÃŒW»ŒWÃŒWË WZ^ W»Œ WÃŒ W»Œ WÃŒ!WË)WZú#)W»Œ)WÃŒ@W»Œ@WÃŒAWËDW²ŒIWZùIW»ŒIWÃŒ`W»Œ`WÃŒaWËiWZBViW»ŒiWÃŒ€W»Œ€WÃŒWË„W²Œ‰WZSV‰W»Œ‰WÃŒ W»Œ WÃŒ¡WË©WZ·á©W»Œ©WÃŒÀW»ŒÀWÃŒÁWËÉWZÈáÉW»ŒÉWÃŒàW»ŒàWÃŒáWËãWz’‘éWZ^ éW»ŒéWÃŒX»ŒXÃŒXËX²Œ XZú# X»Œ XÃŒ X»Œ XÃŒ!XË)Xz AXËIXz aXËdX²ŒiXz XˉXz ¡XË©Xz ÁXËÉXz áXËéXz YËYz’‘ Yz !YË)Yz AYËIYz aYËiYz YˉYz ¡YË©Yz ÁYËÉYz áYËéYz ZË Zz !ZË#Zz’‘)Zz AZËIZz aZËcZz’‘iZz ZˉZz ¡ZË©Zz ÁZËÉZz áZËãZz’‘éZz [Ë [z ![Ë)[z A[ËI[z a[Ëi[z [ˉ[z ¡[Ë©[z Á[ËÉ[z à[»Œà[ÃŒá[Ëé[z \‚5\Ë \z  \»Œ \ÃŒ!\Ë)\»Œ)\ÃŒ)\Ë@\‚`A\ËI\»ŒI\ÃŒI\Ë`\»Œ`\ÃŒa\Ëi\»Œi\ÃŒi\Ë€\‚@!\ˉ\»Œ‰\ÃŒ‰\Ë \»Œ \ÃŒ¡\Ë©\»Œ©\ÃŒ©\ËÀ\‚0%Á\ËÉ\»ŒÉ\ÃŒÉ\Ëà\»Œà\ÃŒá\Ëé\»Œé\ÃŒé\Ë]»Œ]ÃŒ]Ë ]Zù ]»Œ ]ÃŒ ]»Œ!]Ë)]Z^ )]»Œ)]ÃŒ@]»ŒA]ËI]ZÉ@I]»ŒI]ÃŒ`]»Œa]Ëi]Zú#i]»Œi]ÃŒ€]»Œ]ˉ]Z¢D‰]»Œ‰]ÃŒ ]»Œ¡]Ë©]Z¿D©]»Œ©]ÃŒÀ]»ŒÀ]ÃŒÁ]ËÉ]Zs(É]»ŒÉ]ÃŒà]»Œà]ÃŒá]Ëé]Zùé]»Œé]ÃŒ^»Œ^ÃŒ^Ë ^Z^ ^»Œ ^ÃŒ ^»Œ ^ÃŒ!^Ë)^ZÉ@)^»Œ)^ÃŒ@^»Œ@^ÃŒA^ËI^Zú#I^»ŒI^ÃŒ`^»Œ`^ÃŒa^Ëi^Z¢Di^»Œi^ÃŒ€^»Œ€^ÃŒ^ˉ^Z¿D‰^»Œ‰^ÃŒ ^»Œ ^ÃŒ¡^Ë©^Zs(©^»Œ©^ÃŒÀ^»ŒÀ^ÃŒÁ^Ëà^»Œà^ÃŒá^Ë_»Œ_ÃŒ_Ë _z  _»Œ _ÃŒ!_Ë@_»Œ@_ÃŒA_ËC_ÊŒC_šgØC_z;I_z `_»Œ`_ÃŒa_Ëi_z €_»Œ€_ÃŒ_˃_šg؃_z;‰_z  _»Œ _ÃŒ¡_Ë£_šgØ£_z;©_z À_»ŒÀ_ÃŒÁ_ËÁ_»ŒÁ_ÃŒÉ_z à_»Œà_ÃŒé_z `»Œ`ÃŒ `z  `»Œ `ÃŒ)`z @`»Œ@`ÃŒC`šgØC`z;I`z ``»Œ``ÃŒc`zwi`z ‰`z  `»Œ `ÃŒ©`z À`‚5É`z à`»Œà`ÃŒé`z a‚` az  a»Œ aÃŒ)az @a‚@!Iaz `a»Œ`aÃŒiaz €a‚0%‰az  a»Œ aÃŒ©az Àa‚*Éaz àa»ŒàaÃŒéaz b‚ø. bz  b»Œ bÃŒ)bz @b‚Ë3Ibz `b»Œ`bÃŒibz €b‚Õ[„b²Œ‰bz  b»Œ bÃŒ¤b²Œ©bz Àb‚â[Ébz àb»ŒàbÃŒäb²Œébz c‚ø[ cz  c»Œ cÃŒ$c²Œ)cz @c‚ \Dc²ŒIcz `c»Œ`cÃŒicz €c‚\„c²Œ‰cz  c»Œ cÃŒ©cz Àc‚'\Écz àc»ŒàcÃŒécz d‚4\ dz  d»Œ dÃŒ)dz @d‚J\AdËAd»ŒAdÃŒCdÒŒCdêŒCdzYDd²ŒIdz `d»Œ`dÃŒadËad»ŒadÃŒidz €d‚W\„d²Œ‰dz  d»Œ dÃŒ©dz Àd‚d\Édz àd»ŒàdÃŒäd²Œédz e‚q\ ez  e»Œ eÃŒ!eË!e»Œ!eÃŒ$e²Œ)ez @e‚‡\AeËAe»ŒAeÃŒIez `e»Œ`eÃŒaeËae»ŒaeÃŒiez €e‚\eËe»ŒeÃŒ‰ez  e»Œ eÃŒ¡eË¡e»Œ¡eÃŒ©ez Àe‚ª\ÁeËÁe»ŒÁeÃŒÉez àe»ŒàeÃŒáeËáe»ŒáeÃŒéez f‚·\fËf»ŒfÃŒ fz  f»Œ fÃŒ!fË!f»Œ!fÃŒ$f²Œ)fz @f‚Ä\AfËAf»ŒAfÃŒIfz `f»Œ`fÃŒafËaf»ŒafÃŒifz €f‚Ñ\fËf»ŒfÃŒ‰fz  f»Œ fÃŒ¡fË¡f»Œ¡fÃŒ¤f²Œ©fz Àf‚Þ\Éfz àf»ŒàfÃŒáfËáf»ŒáfÃŒéfz g‚ë\ gz  g»Œ gÃŒ)gz @g‚ø\Dg²ŒIgz `g»Œ`gÃŒagËigz €g‚]gˉgz  g»Œ gÃŒ¡gË©gz Àg‚]ÁgËÉgz àg»ŒàgÃŒágËégz h‚]hËh²Œ hz  h»Œ hÃŒ!hË)hz @h‚,]AhËIhz `h»Œ`hÃŒahËdh²Œihz €h‚9]hˉhz  h»Œ hÃŒ¡hË©hz Àh‚F]ÁhËÄh²ŒÉhz àh»ŒàhÃŒáhËéhz i‚S]iË iz  i»Œ iÃŒ!iË)iz @i‚i]AiËIiz `i»Œ`iÃŒaiËiiz €i‚v]iˉiz  i»Œ iÃŒ¡iË©iz Ài»ŒÀiÃŒÁiËÉiz ài»ŒáiËéiz j»ŒjË jz  j»Œ!jË)jz @j»ŒAjËIjz `j»ŒajËijz €j»Œ€jÃŒjˉjz  j»Œ jÃŒ¡jË©jz Àj»ŒÀjÃŒÁjËÉjz àj»ŒàjÃŒájËéjz k»ŒkÃŒkË kz  k»Œ kÃŒ!kË)kz @k»Œ@kÃŒAkËIkz `k»Œ`kÃŒakËak»ŒakÃŒikz €k»Œ€kÃŒkˉkz  k»Œ kÃŒ©kz Àk»ŒÀkÃŒÉkz àk»ŒàkÃŒäk²Œékz l»ŒlÃŒ l‚)8 l»Œ lÃŒ@l»Œ@lÃŒIlz `l»Œ`lÃŒ€l»Œ€lÃŒ l»Œ lÃŒ¡lË¡l»Œ¡lÃŒ¤l²Œ©lz Àl»ŒÀlÃŒÉlz àl»ŒàlÃŒäl²Œél»ŒélÃŒélËm»ŒmÃŒ m»Œ mÃŒ mË m»Œ mÃŒ$m²Œ)m»Œ)mÃŒ)mË@m»Œ@mÃŒIm»ŒImÃŒImË`m»Œ`mÃŒamËdm²ŒimZùim»ŒimÃŒ€m»Œ€mÃŒmË„m²Œ‰mZ^ ‰m»Œ‰mÃŒ m»Œ mÃŒ¡mˤm²Œ©mZú#©m»Œ©mÃŒÀm»ŒÀmÃŒÁmËÉmZùÉm»ŒÉmÃŒàm»ŒàmÃŒámËäm²ŒémZ^ ém»ŒémÃŒn»ŒnÃŒnË nZú# n»Œ nÃŒ n»Œ nÃŒ!nË#nz8$n²Œ)nz @n»Œ@nÃŒAnËInz `n»Œ`nÃŒanËdn²Œinz €n»Œ€nÃŒn˃nz’‘ n»Œ nÃŒ¡nË£nÊŒ£nꌣnzWDÀn»ŒÀnÃŒÁnËÃnÒŒÃnêŒÃnzWDàn»ŒànÃŒánËãnz’‘énz o»ŒoÃŒoË oz  o»Œ oÃŒ!oË)oz @o»Œ@oÃŒAoËIoz `o»Œ`oÃŒaoËioz €o»Œ€oÃŒoˉo‚)8 o»Œ oÃŒ¡oË£oz;©o‚68Ào»ŒÀoÃŒÁoËÃoÒŒÃoêŒÃozYÉo‚C8ào»ŒàoÃŒáoËéo‚)8p»ŒpÃŒpË p»Œ pÃŒ pË p»Œ pÃŒ!pË#pz;)pZù)p»Œ)pÃŒ@p»Œ@pÃŒApËIpZBVIp»ŒIpÃŒ`p»Œ`pÃŒapËipZSVip»ŒipÃŒ€p»Œ€pÃŒpˉp»Œ‰pÃŒ‰pË p»Œ pÃŒ¡pË©pZù©p»Œ©pÃŒÀp»ŒÀpÃŒÁpËÉp‚)8àp»ŒàpÃŒápËép‚68q»ŒqÃŒqË q‚C8 q»Œ qÃŒ!qË@q»Œ@qÃŒAqË`q»Œ`qÃŒaqË€q»Œ€qÃŒqË q»Œ qÃŒ¡qË£qšgØ£qz;Àq»ŒÀqÃŒÁqËÉqz àq»ŒàqÃŒáqËr»ŒrÃŒrË rz  r»Œ rÃŒ!rË)rz @r»Œ@rÃŒArËIr‚)8`r»Œ`rÃŒarËir‚68€r»Œ€rÃŒrˉr‚C8 r»Œ rÃŒ¡rËÀr»ŒÀrÃŒÁrËÉrz àr»ŒàrÃŒárËérz s»ŒsÃŒsË s»Œ sÃŒ sË s»Œ sÃŒ!sË)sZù)s»Œ)sÃŒ@s»Œ@sÃŒAsËIsZBVIs»ŒIsÃŒ`s»Œ`sÃŒasËcsz;isZSVis»ŒisÃŒ€s»Œ€sÃŒs˃sÒŒƒsꌃszY‰s»Œ‰sÃŒ‰sË s»Œ sÃŒ¡sË©s»Œ©sÃŒ©sËÀs»ŒÀsÃŒÁsËÉs»ŒÉsÃŒÉsËàs»ŒàsÃŒásËés»ŒésÃŒésËt»ŒtÃŒtË t»Œ tÃŒ tË t»Œ tÃŒ!tË)tz @t»Œ@tÃŒAtËItz `t»Œ`tÃŒatËitz €t»Œ€tÃŒtˉtz  t»Œ tÃŒ¡tˤtJŒ©t»Œ©tÃŒ©tËÀt»ŒÀtÃŒÁtËÉt»ŒÉtÃŒÉtËàt»ŒàtÃŒátËätJŒét»ŒétÃŒétËu»ŒuÃŒuË u»Œ uÃŒ uË u»Œ uÃŒ!uË)u»Œ)uÃŒ)uË@u»Œ@uÃŒAuËIu»ŒIuÃŒIuË`u»Œ`uÃŒauËiu»ŒiuÃŒiuË€u»Œ€uÃŒuˉu»Œ‰uÃŒ‰uË u»Œ uÃŒ¡uË©uZù©u»Œ©uÃŒÀu»ŒÀuÃŒÁuËÉuZ^ Éu»ŒÉuÃŒàu»ŒàuÃŒáuËäuJŒéuZÉ@éu»ŒéuÃŒvË vZú# v»Œ vÃŒ!vË$vJŒ)vZs()v»Œ)vÃŒAvËIvZ×0Iv»ŒIvÃŒavËivZùiv»ŒivÃŒvˉvZ^ ‰v»Œ‰vÃŒ¡vË£vz;©vZÉ@©v»Œ©vÃŒÁvËÃvÒŒÃvêŒÃvzWDÉvZú#Év»ŒÉvÃŒávËévZs(év»ŒévÃŒwËwJŒ wZ×0 w»Œ wÃŒ!wË#wzw)w»Œ)wÃŒ)wËAwËCwÊŒCwêŒCwzWDIw»ŒIwÃŒIwËawËiw»ŒiwÃŒiwËwË„wJŒ‰w»Œ‰wÃŒ‰wË¡wË©w»Œ©wÃŒ©wËÁwËÄwJŒÉw»ŒÉwÃŒÉwËáwËéw»ŒéwÃŒéwËxË x»Œ xÃŒ xË!xË$xJŒ)x»Œ)xÃŒ)xËAxËIxZùIx»ŒIxÃŒaxËdxJŒixZ^ ix»ŒixÃŒxˉxZú#‰x»Œ‰xÃŒ¡xˤxJŒ©xZs(©x»Œ©xÃŒÁxËÉxZ9[Éx»ŒÉxÃŒáxËäxJŒéxZù,éx»ŒéxÃŒyË yZp« y»Œ yÃŒ!yË$yJŒ)yZ 6)y»Œ)yÃŒAyËIyZùIy»ŒIyÃŒayËdyJŒiyZ^ iy»ŒiyÃŒyˉyZú#‰y»Œ‰yÃŒ¡yˤyJŒ©yZs(©y»Œ©yÃŒÁyËÉyZ9[Éy»ŒÉyÃŒáyËäyJŒéyZù,éy»ŒéyÃŒzË zZp« z»Œ zÃŒ!zË$zJŒ)zZ 6)z»Œ)zÃŒAzËAz»ŒAzÃŒIzz dzJŒizz ‰zz ¤zJŒ©zz Ãzz’‘Ézz äzJŒézz  {z ${JŒI{z d{JŒi{z ‰{z ¤{JŒ©{z ä{JŒ#|z;$|JŒC|ÒŒC|êŒC|zWDI|z d|JŒi|z ƒ|e¦„|JŒ‰|z £|̦©|z Ã|j§É|z ã|.¨é|z }‹¨ }z )}z I}z i}z ‰}z  }»Œ©}z Ã}ÒŒÃ}êŒÃ}zWDÉ}z é}z ~ © ~z #~ª)~z C~—ªI~z c~ «€~»Œ€~ÃŒƒ~’« ~‚5£~÷«À~»ŒÀ~ÃŒÉ~‚)8é~‚68 ‚)8)‚68ƒz;‰»Œ‰ÃŒ‰Ë©»Œ©ÃŒ©ËÀ»ŒÉ»ŒÉÃŒÉËãz;黌éÃŒéË€z; €»Œ €ÃŒ €Ë €ºÈB)€»Œ)€ÃŒ)€ËI€»ŒI€ÃŒI€Ëi€Z^ i€»Œi€ÃŒ‰€Zú#‰€»Œ‰€ÃŒ©€Z^ ©€»Œ©€ÃŒÀ€»ŒÉ€Zú#É€»ŒɀÌË»ŒÃŒAËA»ŒAÃŒaËa»ŒaÃŒ©»Œ©ÃŒ©ËÉ»ŒÉÃŒÉË黌éÃŒéË‚‚5‚⌂z; ‚»Œ ‚ÃŒ ‚Ë ‚»Œ ‚ÃŒ#‚z;)‚»Œ)‚ÃŒ)‚Ë@‚»Œ@‚ÃŒI‚»ŒI‚ÃŒI‚Ë`‚»Œ`‚ÃŒi‚»Œi‚ÃŒi‚ˉ‚úg"£‚z’‘©‚úu"É‚ú‚"é‚ú–"ƒz’‘#ƒz’‘Cƒz’‘cƒz’‘ƒƒz’‘£ƒz;A†bŒ‰‡z £‡šgØ£‡ÊŒ£‡z;©‡z Ã‡šgØÃ‡z;ɇz é‡z  ˆz )ˆz CˆÒŒCˆêŒCˆzYIˆz cˆz’‘iˆz ‰ˆz ©ˆz Éˆz áˆËሻŒáˆÃŒéˆz  ‰z !‰Ë!‰»Œ!‰ÃŒ)‰z A‰ËA‰»ŒA‰ÃŒI‰z c‰šgØc‰ÊŒc‰z;i‰z ‰‰z ©‰z Á‰ËÁ‰»ŒÁ‰ÃŒ㉚gØã‰z;AŠËAŠ»ŒAŠÃŒCŠÒŒCŠêŒCŠzYcŠz’‘áŠËኻŒáŠÃŒéŠz  ‹z )‹z C‹šgØC‹ÊŒC‹z;I‹z c‹šgØc‹ÊŒc‹z;i‹z £‹šgØ£‹ÊŒ£‹z;©‹z É‹z ã‹šgØã‹ÊŒã‹z;#ŒšgØ#ŒÊŒ#Œz;€Œ»Œ Œ»Œ©ŒblR©Œz ÃŒÊŒÃŒšgØÃŒz;ÉŒblRÉŒz éŒblRéŒz  blR z )blR)z Iz €zŒ zŒŽËŽ»ŒŽÃŒ!ŽË!Ž»Œ!ŽÃŒAŽËAŽ»ŒAŽÃŒaŽËaŽ»ŒaŽÃŒŽËŽ»ŒŽÃŒ¡ŽË¡Ž»Œ¡ŽÃŒ£Žz’‘cz’‘ƒz’‘£z’‘Ãz’‘¡Ë¡»Œ¡ÃŒÃz’‘ãz’‘¡‘Ë¡‘»Œ¡‘ÃŒ£‘z’‘Á‘ËÁ‘»ŒÁ‘ÃŒÑz’‘ã‘z’‘’Ë’»Œ’ÃŒ’ÊŒ’z;#’ Œ#’êŒ#’ÒŒ#’zwC’z’‘a’Ëa’»Œa’ÃŒc’z’‘’Ë’»Œ’ÃŒƒ’z’‘£’ÒŒ£’ꌣ’zWD#“zwA“ËA“»ŒA“ÃŒC“:ŒC“zwa“Ëa“»Œa“ÃŒc“:Œc“zwã“z’‘c”z’‘ƒ”z’‘£”z;ÔҌÔêŒÔzWD•_ #•§ C• Õzwã•zwC–:ŒC–zwc–zwÖz;ã–z’‘—:Œ—zw#—ÒŒ#—êŒ#—zWDc—BŒc—zwƒ—z’‘£—z’‘Á—Ë×z’‘á—Ëã—z’‘˜Ë˜z’‘!˜Ë!˜»Œ!˜ÃŒ#˜z’‘c˜z’‘ƒ˜z’‘£˜:Œ£˜zwØ:ŒØzwã˜z’‘#™z’‘A™ËA™»ŒA™ÃŒC™z;a™Ëa™»Œa™ÃŒc™z’‘™Ë™»Œ™ÃŒƒ™z;¡™Ë¡™»Œ¡™ÃŒ£™z’‘Á™ËÁ™»ŒÁ™ÃŒÙz’‘ã™z’‘šz’‘!šË!š»Œ!šÃŒAšËAš»ŒAšÃŒCššgØCšz;ƒššg؃šÊŒƒšz;›Êu›Ë›»Œ›ÃŒ ›Ê©@›Ê€A›ËA›»ŒA›ÃŒC›z;`›Êp€c›z;€›Êz€›Ë›»Œ›ÃŒƒ›z; ›Ê€¡›Ë¡›»Œ¡›ÃŒÀ›Ê€Ã›âŒÛz;à›ÊÏ€ã›z’‘œÊê€ œÊW#œâŒ#œz;@œÊk`œÊt€œÊ› œÊÌÀœÊ ‚àœÊI‚ʉ‚z; Êù‚#zw@ʃCBŒCzw`Êdƒczw€Êyƒƒzw Ê郣BŒ£zwÀÊ„ÃBŒÃzwàÊ‚„žÊ¼„žz’‘ žÊ …#žz’‘@žÊ1…`žÊš…cžz’‘€žÊþ…ƒžz’‘ žÊB†ÀžÊ«†Ãžz’‘àžÊï†ãžz’‘ŸÊa‡ ŸÊ­‡#Ÿz’‘@ŸÊˆCŸz’‘`ŸÊOˆ€ŸÊ2‰ƒŸz’‘ ŸÊ3Š£Ÿz’‘ÀŸÊ3‹àŸÊŒ‹ãŸz’‘ z’‘C z’‘c z’‘£ z’‘àz’‘¡z’‘#¡z’‘A¡ËA¡»ŒA¡ÃŒc¡z’‘ƒ¡z’‘£¡z’‘áz’‘ã¡z’‘¢z’‘#¢z’‘C¢z’‘c¢z’‘ƒ¢z’‘£¢z’‘âz’‘ã¢z’‘£z’‘c£zw¥Ë¥»Œ¥ÃŒ`¥zŒ€¥zŒƒ¥zwÀ¥ŠÀॊ ¦»Œ#¦zw@¦Š°`¦Š΀¦Ší ¦ºÈB ¦ŠÀ¦ºÈBÀ¦Š æzw§Š; §ŠN@§Ša`§Šsc§zw€§Š• §Š­À§ŠØ!¨Ë!¨»Œ!¨ÃŒA¨ËA¨»ŒA¨ÃŒC¨zwá¨ËᨻŒá¨ÃŒã¨zwƒ©zw¡©Ë¡©»Œ¡©ÃŒÁ©ËÁ©»ŒÁ©ÃŒ#ªzwAªËAª»ŒAªÃŒaªËaª»ŒaªÃŒêzwáªË᪻ŒáªÃŒ«Ë«»Œ«ÃŒ!«Ë!«»Œ!«ÃŒc«zw ¬ºÈB ¬Š_“À¬ºÈBÀ¬Š_“ƒ­zw ­ºÈB®Ë®»Œ®ÃŒ#®zw@®ºÈBîzw!¯Ë!¯»Œ!¯ÃŒA¯ËA¯»ŒA¯ÃŒc¯zw¯Ë¯»Œ¯ÃŒ ¯»Œ ¯ÃŒá¯Ë᯻Œá¯ÃŒ°zw!°Ë!°»Œ!°ÃŒA°ËA°»ŒA°ÃŒ¡°Ë¡°»Œ¡°ÃŒ£°zwÁ°ËÁ°»ŒÁ°ÃŒ±ºÈB!±Ë!±»Œ!±ÃŒA±ËA±»ŒA±ÃŒC±zw`±ºÈBa±Ëa±»Œa±ÃŒ±Ë±»Œ±ÃŒã±zw€²ºÈBƒ²zwÁ²ËÁ²»ŒÁ²ÃŒá²Ëá²»Œá²ÃŒ³Ë³»Œ³ÃŒ!³Ë!³»Œ!³ÃŒ#³zw³Ë³»Œ³ÃŒ¡³Ë¡³»Œ¡³ÃŒÁ³ËÁ³»ŒÁ³ÃŒá³Ëá³»Œá³ÃŒ´z;#´z;C´z;`´ºÈBc´z;ƒ´zw£´z;ôBŒôzwµz’‘#µBŒ#µzwcµz’‘ƒµz’‘£µBŒ£µzwÀµ»Œõz’‘ãµz’‘¶»Œ¶z’‘C¶BŒC¶zwƒ¶z’‘£¶z’‘öz’‘ã¶z’‘·z;#·z’‘C·z’‘c·z’‘ƒ·z’‘£·z’‘÷z’‘ã·z’‘¸z’‘#¸z’‘A¸ËA¸»ŒA¸ÃŒC¸z’‘a¸Ëa¸»Œa¸ÃŒc¸z’‘ƒ¸z’‘¡¸Ë¡¸»Œ¡¸ÃŒ£¸z’‘Á¸ËÁ¸»ŒÁ¸ÃŒøz’‘ã¸z’‘¹z’‘!¹Ë!¹»Œ!¹ÃŒ#¹z’‘A¹ËC¹zwa¹Ëc¹z’‘¹Ëƒ¹z’‘£¹zwÁ¹ËÁ¹»ŒÁ¹ÃŒùzwã¹zwúzw¡»Ë¡»»Œ¡»ÃŒÁ»ËÁ»»ŒÁ»ÃŒá»Ëá»»Œá»ÃŒ¼JŒ!¼Ë!¼»Œ!¼ÃŒ3¼JŒA¼ËA¼»ŒA¼ÃŒa¼Ëa¼»Œa¼ÃŒs¼JŒ¼Ë¼»Œ¼ÃŒ¡¼Ë¡¼»Œ¡¼ÃŒ³¼JŒÁ¼ËÁ¼»ŒÁ¼ÃŒÓ¼JŒá¼Ëá¼»Œá¼ÃŒ½Ë½»Œ½ÃŒ!½Ë!½»Œ!½ÃŒ#½zwA½ËA½»ŒA½ÃŒa½Ëa½»Œa½ÃŒ½Ë½»Œ½ÃŒ ½ºÈB¡½Ë¡½»Œ¡½ÃŒÁ½ËÁ½»ŒÁ½ÃŒá½Ëá½»Œá½ÃŒ¾Ë¾»Œ¾ÃŒ¡¾Ë¡¾»Œ¡¾ÃŒÁ¾ËÁ¾»ŒÁ¾ÃŒá¾Ëá¾»Œá¾ÃŒ¿Ë¿»Œ¿ÃŒ!¿Ë!¿»Œ!¿ÃŒA¿ËA¿»ŒA¿ÃŒa¿Ëa¿»Œa¿ÃŒ¿Ë¿»Œ¿ÃŒ¡¿Ë¡¿»Œ¡¿ÃŒ£¿zwÁ¿ËÁ¿»ŒÁ¿ÃŒá¿Ëá¿»Œá¿ÃŒÀËÀ»ŒÀÃŒ!ÀË!À»Œ!ÀÃŒAÀËAÀ»ŒAÀÃŒaÀËaÀ»ŒaÀÃŒAÁËAÁ»ŒAÁÃŒaÁËaÁ»ŒaÁÃŒÁËÁ»ŒÁÃŒ¡ÁË¡Á»Œ¡ÁÃŒÁÁËÁÁ»ŒÁÁÃŒáÁËáÁ»ŒáÁÃŒÂË»ŒÂÃŒÂzw!ÂË!»Œ!ÂÃŒAÂËA»ŒAÂÃŒ€ÂºÈB ÃºÈBÀúÈBÁÃËÁûŒÁÃÃŒáÃËáûŒáÃÃŒÄËÄ»ŒÄÃŒ!ÄË!Ä»Œ!ÄÃŒcÄz;ÄËÄ»ŒÄÃŒƒÄzw¡ÄË£Äz’‘ÁÄËÃÄz’‘áÄËãÄzwÅËÅ»ŒÅÃŒÅzw#ÅzwCÅz;aÅËcÅzwÅ˃Åz;¡ÅË£Åz;ÁÅËÃÅz;áÅËãÅz;ÆËÆz;!ÆËAÆË`ƺÈBaÆËaÆ»ŒaÆÃŒ Æ»ŒÀÆ»ŒãÆz;!ÈËAÈËaÈËÊËÊ»ŒÊÃŒ¡ÊˡʻŒ¡ÊÃŒáÊËáÊ»ŒáÊÃŒËËË»ŒËÃŒAËËAË»ŒAËÃŒaËËaË»ŒaËÃŒ¡Ëˡ˻Œ¡ËÃŒÁËËÁË»ŒÁËÃŒÌËÌ»ŒÌÃŒ!ÌË!Ì»Œ!ÌÃŒaÌËaÌ»ŒaÌÃŒÌËÌ»ŒÌÃŒÁÌËÁÌ»ŒÁÌÃŒáÌËáÌ»ŒáÌÃŒ!ÍË!Í»Œ!ÍÃŒ`ͺÈB€Íº˜¼ÍËÍ»ŒÍÃŒáÍËáÍ»ŒáÍÃŒ λŒ@λŒAÎËAλŒAÎÃŒ`λŒ€Î»Œ Î»Œ¡ÎˡλŒ¡ÎÃŒÀκWÍÁÎËÁλŒÁÎÃŒàκWÍÏËÏ»ŒÏÃŒ Ϻ[Î!ÏË!Ï»Œ!ÏÃŒ@Ϻ¦Î`Ϻ¦ÎaÏËaÏ»ŒaÏÃŒ€ÏºÈBÏËÏ»ŒÏÃŒ Ïº˜¼ÀϺÈBÁÏËÁÏ»ŒÁÏÃŒáÏËáÏ»ŒáÏÃŒóÏJŒкÈBÐJŒÐRŒ кÈB!ÐË!лŒ!ÐÃŒ3ÐJŒAÐËAлŒAÐÃŒSÐJŒSÐRŒaÐËaлŒaÐÃŒsÐJŒÐËлŒÐÃŒ“ÐJŒ“ÐRŒ³ÐJŒÓÐJŒÓÐRŒóÐJŒóÐRŒÑJŒ3ÑJŒSÑJŒSÑRŒ¡ÑˡѻŒ¡ÑÃŒÁÑËÁÑ»ŒÁÑÃŒáÑËáÑ»ŒáÑÃŒÒË!ÒËAÒËaÒËaÒ»ŒaÒÃŒÒËÒ»ŒÒÃŒ¡ÒˡһŒ¡ÒÃŒÁÒËÁÒ»ŒÁÒÃŒaÓËaÓ»ŒaÓÃŒÓËÓ»ŒÓÃŒ¡ÓˡӻŒ¡ÓÃŒÔËÔ»ŒÔÃŒaÔËaÔ»ŒaÔÃŒÔËÔ»ŒÔÃŒ¡ÔˡԻŒ¡ÔÃŒÁÔËÁÔ»ŒÁÔÃŒáÔËáÔ»ŒáÔÃŒÕËÕ»ŒÕÃŒ!ÕË!Õ»Œ!ÕÃŒ@Õ»Œ@ÕÃŒ`Õ»Œ`ÕÃŒaÕËaÕ»ŒaÕÃŒÕËÕ»ŒÕÃŒÁÕËÁÕ»ŒÁÕÃŒáÕËáÕ»ŒáÕÃŒÖËÖ»ŒÖÃŒ!ÖË!Ö»Œ!ÖÃŒAÖËAÖ»ŒAÖÃŒaÖËaÖ»ŒaÖÃŒÖËÖ»ŒÖÃŒ¡ÖˡֻŒ¡ÖÃŒÁÖËÁÖ»ŒÁÖÃŒáÖËáÖ»ŒáÖÃŒ×Ë×»Œ×ÃŒ×Ë×»Œ×ÃŒ¡×ˡ׻Œ¡×ÃŒÁ×ËÁ×»ŒÁ×ÃŒá×Ëá×»Œá×ÃŒØËØ»ŒØÃŒAØËAØ»ŒAØÃŒaØËaØ»ŒaØÃŒ¡ÙˡٻŒ¡ÙÃŒÁÙËÁÙ»ŒÁÙÃŒáÙËáÙ»ŒáÙÃŒÚËÚ»ŒÚÃŒ!ÚË!Ú»Œ!ÚÃŒAÚËAÚ»ŒAÚÃŒaÚËaÚ»ŒaÚÃŒÚËÚ»ŒÚÃŒ¡ÚˡڻŒ¡ÚÃŒÛËÛ»ŒÛÃŒ!ÛË!Û»Œ!ÛÃŒAÛËAÛ»ŒAÛÃŒaÛËaÛ»ŒaÛÃŒÛËÛ»ŒÛÃŒáÛËáÛ»ŒáÛÃŒÜËÜ»ŒÜÃŒ!ÜË!Ü»Œ!ÜÃŒAÜËAÜ»ŒAÜÃŒaÜËaÜ»ŒaÜÃŒÜËÜ»ŒÜÃŒ¡ÜˡܻŒ¡ÜÃŒÀÜ»ŒÀÜÃŒàÜ‚5Ý»ŒÝÃŒ Ý‚`!ÝË!Ý»Œ!ÝÃŒ@Ý»Œ@ÝÃŒAÝËAÝ»ŒAÝÃŒ`Ý‚@!€Ý»Œ€ÝÃŒ Ý»Œ ÝÃŒàÝ»ŒàÝÌ޻ŒÞÃŒ Þ»Œ ÞÃŒ!ÞË!Þ»Œ!ÞÃŒ@Þ»Œ@ÞÃŒAÞËAÞ»ŒAÞÃŒ`Þ»Œ`ÞÃŒaÞËaÞ»ŒaÞÃŒ€Þ»Œ€ÞÃŒÞËÞ»ŒÞÃŒ Þ»Œ ÞÃŒ¡Þˡ޻Œ¡ÞÃŒÀÞ»ŒÀÞÃŒÁÞËÁÞ»ŒÁÞÃŒàÞ»ŒàÞÃŒáÞËáÞ»ŒáÞÌ߻ŒßÃŒßËß»ŒßÃŒ ß»Œ ßÃŒ!ßË!ß»Œ!ßÃŒ@ß»Œ@ßÃŒAßËAß»ŒAßÃŒ`ß»Œ`ßÃŒaßËaß»ŒaßÃŒ€ß»Œ€ßÃŒßËß»ŒßÃŒ ß»Œ ßÃŒ¡ßˡ߻Œ¡ßÃŒÀß»ŒÀßÃŒàß»ŒàßÃŒ໌àÃŒ ໌ àÃŒ@໌@àÃŒ¡àˡ໌¡àÃŒÁàËÁ໌ÁàÃŒáàËá໌áàÃŒáËỌáÃŒ!áË!Ọ!áÃŒAáËAỌAáÃŒaáËaỌaáÃŒáËỌáÃŒ¡áˡỌ¡áÃŒÁáËÁỌÁáÃŒááËáỌááÃŒâË⻌âÃŒ!âË!⻌!âÃŒAâËA⻌AâÃŒâË¡âËÁâËáâËãË!ãËAãËaãËãË¡ãËÁãËáãËá㻌áãÃŒäË!äËAäËA仌AäÃŒåË廌åÃŒ¡çËÁçËáçËèË!èËAèËaèËèË¡èËÁèËáèËéË!éËAéËaéËéË¡éËÁéËáéËêË!êËAêËA껌AêÃŒëË¡ëËìºÈBaíËíËðºÈB@ðºÈB ñºÈBñËñ»ŒñÃŒ¡ñË¡ñ»Œ¡ñÃŒÁñËÁñ»ŒÁñÃŒáñËáñ»ŒáñÃŒAóËAó»ŒAóÃŒaóËaó»ŒaóÃŒ ó»Œ óÃŒÀó‚5àó»ŒàóÃŒô‚`ôËô»ŒôÃŒ ô»Œ ôÃŒ!ôË!ô»Œ!ôÃŒ@ô‚@!`ô»Œ`ôÃŒ€ô‚0% ô»Œ ôÃŒÀô‚*àô»ŒàôÃŒáôËáô»ŒáôÃŒõ»ŒõÃŒõËõ»ŒõÃŒ õ»Œ õÃŒ@õ»Œ@õÃŒ`õ»Œ`õÃŒ€õ»Œ€õÃŒ õ»Œ õÃŒÀõ»ŒÀõÃŒàõ»ŒàõÃŒáõËáõ»ŒáõÃŒö»ŒöÃŒöËö»ŒöÃŒ ö»Œ öÃŒ@ö»Œ@öÃŒ`ö»Œ`öÃŒ€ö»Œ€öÃŒ ö»Œ öÃŒÀö»ŒÀöÃŒàö»ŒàöÃŒ÷»Œ÷ÃŒ ÷»Œ ÷ÃŒ@÷»Œ@÷ÃŒ`÷»Œ`÷ÃŒ€÷»Œ€÷ÃŒ ÷»Œ ÷ÃŒÀ÷»ŒÀ÷ÃŒá÷Ëá÷»Œá÷ÃŒøËø»ŒøÃŒ!øË!ø»Œ!øÃŒáøËáø»ŒáøÃŒùËù»ŒùÃŒ!ùË!ù»Œ!ùÃŒ¡úË¡ú»Œ¡úÃŒÁúËÁú»ŒÁúÃŒAûËAû»ŒAûÃŒ`û»Œ`ûÃŒaûËaû»ŒaûÃŒ€û»Œ€ûÃŒûËû»ŒûÃŒ¡ûË¡û»Œ¡ûÃŒÀûºÈB@ü»Œ@üÃŒaüËaü»ŒaüÃŒüËü»ŒüÃŒýËý»ŒýÃŒ¡þš@¤þ²ŒÄþ²Œdÿ²Œ„ÿ²ŒÄÿ²Œ!Ë!»Œ!ÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!Ì˻ŒÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒáš@!Ë!»Œ!ÃŒAËA»ŒAÃŒ Ë »Œ ÃŒ ºÈB ºÍ@ ºWÍ` ºÈBa Ëa »Œa ÃŒ Ë »Œ ÃŒ¡ Ë¡ »Œ¡ ÃŒÁ ËÁ »ŒÁ ÃŒá Ëá »Œá ÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒË»ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒaËa»ŒaÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒaËa»ŒaÌ˻ŒÃŒË»ŒÃŒ²Œ!Ë!»Œ!ÃŒAËA»ŒAÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒAËA»ŒAÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒË»ŒÃŒ¡Ë¡»Œ¡ÃŒÁËÁ»ŒÁÃŒáËỌáÌ˻ŒÃŒ!Ë!»Œ!ÃŒAËA»ŒAÃŒaËa»ŒaÌ˻ŒÃŒ¡Ë¡»Œ¡ÃŒÀŠÂÁËÁ»ŒÁÃŒàŠðŠ ŠN@Š~AËA»ŒAÃŒ`ЬaËa»ŒaÃŒ€Š¶Ë»ŒÃŒ Šå¡Ë¡»Œ¡ÃŒÀŠÁËÁ»ŒÁÃŒàŠDáËỌáÃŒŠtË»ŒÃŒ Š¥!Ë!»Œ!ÃŒ@ŠÛAËA»ŒAÃŒ`ŠaËa»ŒaÃŒ€ŠO Š€ÀºÈBàºÈBáËỌáÃŒºÈBË»ŒÃŒ ºÈB!Ë!»Œ!ÃŒ@ºÈBAËA»ŒAÃŒ`ºÈBaËa»ŒaÃŒ€ºÈB ºÈBÀºÈBàºÈBºÈBË»ŒÃŒ ºÈB!Ë!»Œ!ÃŒ@ºÈBAËA»ŒAÃŒ`ºÈBaËa»ŒaÃŒ€ºÈBË»ŒÃŒ ºÈB¡Ë¡»Œ¡ÃŒÀºÈBàºÈBºÈB ºÈB@ºÈB`ºÈBaËa»ŒaÃŒ€ºÈBË»ŒÃŒ ºÈB¡Ë¡»Œ¡ÃŒÀºÈBÁËÁ»ŒÁÃŒàºÈBºÈB ºÈB!Ë!»Œ!ÃŒ@ºÈB`ºÈB€ºÈB ºÈB¡Ë¡»Œ¡ÃŒÀºÈBÁËÁ»ŒÁÃŒáËỌáÃŒ ºÈB Šs Ë »Œ ÃŒ »Œ! Ë! »Œ! ÃŒ@ ºÈB@ ŠÚA ËA »ŒA ÃŒ` ºÈB` Ša Ëa »Œa ÃŒ€ ºÈB€ Š[ Ë »Œ ÃŒ  ºWÍ  еÀ ºÈBÀ ŠÙÁ ËÁ »ŒÁ ÃŒà ºÈBà Šøá Ëá »Œá ÃŒ!Š2 !ºÈB !Šs!!Ë!!»Œ!!ÃŒ@!ºÈB@!ŠþA!ËA!»ŒA!ÃŒ!Ë!»Œ!ÃŒ¡!Ë¡!»Œ¡!ÃŒá!Ëá!»Œá!ÃŒ"Ë"»Œ"ÃŒ!"Ë!"»Œ!"ÃŒA"ËA"»ŒA"ÃŒ"Ë"»Œ"ÃŒ¡"Ë¡"»Œ¡"ÃŒá"Ëá"»Œá"ÃŒ#Ë#»Œ#ÃŒA#ËA#»ŒA#ÃŒa#Ëa#»Œa#ÃŒ¡#Ë¡#»Œ¡#ÃŒÁ#ËÁ#»ŒÁ#ÃŒ$Ë$»Œ$ÃŒ!$Ë!$»Œ!$ÃŒa$Ëa$»Œa$ÃŒ$Ë$»Œ$ÃŒ¡$Ë¡$»Œ¡$ÃŒÁ$ËÁ$»ŒÁ$ÃŒá$Ëá$»Œá$ÃŒ%Ë%»Œ%ÃŒ!%Ë!%»Œ!%ÃŒA%ËA%»ŒA%ÃŒ%Ë%»Œ%ÃŒ¡%Ë¡%»Œ¡%ÃŒá%Ëá%»Œá%ÃŒ&Ë&»Œ&ÃŒA&ËA&»ŒA&ÃŒa&Ëa&»Œa&ÃŒ¡&Ë¡&»Œ¡&ÃŒÁ&ËÁ&»ŒÁ&ÃŒ'Ë'»Œ'ÃŒ!'Ë!'»Œ!'ÃŒa'Ëa'»Œa'ÃŒ'Ë'»Œ'ÃŒÀ'ºÈBÀ'ŠsÁ'ËÁ'»ŒÁ'ÃŒà'ºÈBà'Šá'Ëá'»Œá'ÃŒ(ºÈB(Š[ (ºÈB (ŠÚ!(Ë!(»Œ!(ÃŒ@(ºWÍ@(еA(ËA(»ŒA(ÃŒ`(ºÈB`(ŠÙ€(Š2(Ë(»Œ(ÃŒ (ºÈB (Šs¡(Ë¡(»Œ¡(ÃŒÀ(ºÈBÀ(Šþá(Ëá(»Œá(ÃŒ)Ë)»Œ)ÃŒ!)Ë!)»Œ!)ÃŒA)ËA)»ŒA)ÃŒ@+ºÈB`+ºÈBÁ,ËÁ,»ŒÁ,ÃŒá,Ëá,»Œá,ÃŒ-Ë-»Œ-ÃŒA-ËA-»ŒA-ÃŒa-Ëa-»Œa-ÃŒ¡-Ë¡-»Œ¡-ÃŒÁ-ËÁ-»ŒÁ-ÃŒ.Ë.»Œ.ÃŒ!.Ë!.»Œ!.ÃŒa.Ëa.»Œa.ÃŒ€.º{?€.Šƒ*.Ë.»Œ.ÃŒÁ.ËÁ.»ŒÁ.ÃŒá.Ëá.»Œá.ÃŒ!/Ë!/»Œ!/ÃŒA/ËA/»ŒA/ÃŒ/Ë/»Œ/ÃŒ¡/Ë¡/»Œ¡/ÃŒá/Ëá/»Œá/ÃŒ0Ë0»Œ0ÃŒ 0ºg+ 0Šx+@0ºÈB@0Šx+`0ºg+`0ŠÀ+a0ªŒ€0ºÈB 0ºÈB 0Šå+¡0blR¡0ËÀ0ºÈBÀ0Š,Á0blRÁ0Ëá0blRá0Ë1blR1Ë!1blR!1ËA1Ëa1Ë1Ë¡1ËÁ1Ëá1Ë2Ë!2ËA2Ëa2Ë2Ë¡2ËÁ2Ëá2Ë3Ë!3ËA3Ëa3Ë3Ë¡3ËÁ3Ëá3Ë4Ë!4ËA4Ëa4Ëa4»Œa4ÃŒ!5ËA5ËA5»ŒA5ÃŒÀ9ºWÍ@:»Œ`:»Œ€:»Œ :»Œ Aº¿4ÀAº¿4àAºÈB`BºÈB€BºÈB BºÈBÀBºÈBàBºÈB@CºÈB`CºÈB€CºÈB CºÈBÀC»ŒÀCÃŒàC‚5D»ŒDÃŒ D‚`@D»Œ@DÃŒ`D‚@!€D»Œ€DÃŒ D»Œ DÃŒÀD»ŒÀDÃŒàD»ŒàDÃŒE»ŒEÃŒ E»Œ EÃŒ@E»Œ@EÃŒ`E»Œ`EÃŒ€E»Œ€EÃŒ E»Œ EÃŒÀE»ŒÀEÃŒàE»ŒàEÃŒF»ŒFÃŒ F»Œ FÃŒ`O»Œ O»Œ€P»Œ P»Œ`o¢Œ`oªŒ`oŠgQ€o¢Œ€oªŒ€oŠxQ o¢Œ oªŒ oºÈB oŠÙÀo¢ŒÀoªŒÀoºÈBÀoŠ˜Qào¢ŒàoªŒàoºWÍàoŠÀp¢ŒpªŒpбQ p¢Œ pªŒ pºÈB pŠÃQ@p¢Œ@pªŒ@pŠÔQ pŠ„SÀpŠÖSàpŠTqŠ6T qŠjT@qŠžT`qŠÐT€qŠõT qŠ'UÀqŠZUàqŠ„UrŠ·U rŠèU@rŠV`rŠNVàrŠSWsŠƒW sŠÏW@sŠàW`sŠzX€sŠX sŠÄXÀsŠóX€u»Œ€uÃŒ u»Œ uÃŒàuºÈB€vŠ”[ vŠÐ[ÀvŠ \àvŠ-\wŠŒ\ wŠÄ\@wŠñ\`wŠ6]€wŠz] wŠÑ]ÀwŠ^àwŠT^xŠ~^ xЦ^@xŠ×^`xŠë^€xŠ˜_ xŠÎ_ÀxŠÿ_àxŠ$`yŠK` yŠ^`@yŠç``yŠa€yŠ\a yŠêaÀyŠ6bàyЏbzŠáb zŠ;c€zŠ‹c zºÈBÀzŠ=dàzŠÏd {ºÈBà{ºÈB|º˜¼ |ºg+@|ºG`|ºG€|ºÈBÀ|ºÈB »Œ ÃŒ@ºÈB`ºÈB`‚ºÈB ƒºÈBÀƒºÈB€„ºÈB …ºÈB@‡ºÈB`‡ºWÍ ‡ºWÍ@ˆ»Œ@¦‚5`¦»Œ`¦ÃŒ€¦»Œ€¦ÃŒ ¦»Œ ¦ÃŒÀ¦»ŒÀ¦ÃŒà¦»Œà¦ÃŒ§»Œ §»Œ@§»Œ€§»Œ §»ŒÀ§‚5à§»Œà§ÃŒ¨»Œ¨ÃŒ ¨»Œ ¨ÃŒ@ªºÈB`ªºWÍ€ªºWÍÀ«ºÈB¬ºÈB ¬º˜¼@¬º˜¼`¬»Œ`¬ÃŒ€¬»Œ€¬ÃŒ ¬»Œ ¬ÃŒÀ¬»ŒÀ¬ÃŒ ­»ŒÀ­»Œà­»Œ®»Œ ®»Œ`¯»Œ€¯»ŒÀ±ºÈBÀ±Š˜ˆà±ºÈBొ¦ˆ²ºG ²ºWÍ ²Š/‰@²ºWÍ@²Šg‰`²Š΀²Ší ²ºÈB ²Šš‰À²ºÈBÀ²Šà²ºÈBಊ ·»Œ ·ÃŒ@·ºÈBà·»Œà·ÃŒ¸ºÈB ¸ºÈB@¸ºG`¸ºG ¸ºWÍÀ¸ºWÍฺW͹ºWÍ ¹ºWÍ`¹ºWÍ ¹º¿4ºº¿4`º»Œ€º»Œ º»ŒÀººÍ@»ºÈB`»Œ`ÂÃŒ€Â»Œ ÂºÈB@úޘÀúWÍ ÄºG`ĺÈB`źÈB€ÅºÈB€ÇºG ÇºÈBÀǺÈBàǺWÍȺÈB ȺÈB`ȺẀȂ5 È»Œ ÈÃŒÀÈ»ŒÀÈÃŒàÈ»ŒàÈÌɻŒÉÃŒ É»Œ ÉÃŒàÉ»ŒàÉÌʂ5 Ê»Œ ÊÃŒ@Ê‚``Ê»Œ`ÊÃŒ€Ê»Œ€ÊÃŒ Ê»ŒÀÊ»ŒàÊ»ŒË»Œ Ë»Œ ÔºÈB€Õ»Œ€ÕÃŒ Õ‚5ÀÕ»ŒÀÕÃŒàÕ‚`Ö»ŒÖÃŒ Ö‚@!@Ö»Œ@ÖÃŒ`Ö‚0%€Ö»Œ€ÖÃŒ Ö‚*ÀÖ»ŒÀÖÃŒàÖ‚ø.×»Œ×ÃŒ ×»Œ ×ÃŒ@×»Œ@×ÃŒ`×»Œ`×ÃŒ€×»Œ€×ÃŒ ×»Œ ×ÃŒÀ×»ŒÀ×ÃŒà×»Œà×ÌػŒØÃŒ Ø»Œ ØÃŒ@Ø»Œ@ØÃŒ`Ø»Œ`ØÃŒ€Ø»Œ€ØÃŒ Ø»Œ ØÃŒÀØ»ŒÀØÃŒàØ»ŒàØÃŒÙ»ŒÙÃŒ Ù»Œ ÙÃŒ@Ù»Œ@ÙÃŒ`Ù»Œ`ÙÃŒ€Ù»Œ€ÙÃŒ Ù»Œ ÙÃŒÀÙ»ŒÀÙÃŒàÙ»ŒàÙÃŒ Ú»Œ ÚÃŒ@Ú‚5`Ú»Œ`ÚÃŒ€Ú‚` Ú»Œ ÚÃŒÀÚ‚@!àÚ»ŒàÚÌۂ0% Û»Œ ÛÃŒ@Û‚*`Û»Œ`ÛÃŒ€Û‚ø. Û»Œ ÛÃŒÀÛ‚Ë3àÛ»ŒàÛÌܻŒÜÃŒ Ü»Œ ÜÃŒ@Ü»Œ@ÜÃŒ`Ü»Œ`ÜÃŒ€Ü»Œ€ÜÃŒ Ü»Œ ÜÃŒÀÜ»ŒÀÜÃŒàÜ»ŒàÜÌݻŒÝÃŒ Ý»Œ ÝÃŒ@Ý»Œ@ÝÃŒ`Ý»Œ`ÝÃŒ€Ý»Œ€ÝÃŒ Ý»Œ ÝÃŒÀÝ»ŒÀÝÃŒàÝ»ŒàÝÌ޻ŒÞÃŒ Þ»Œ ÞÃŒ@Þ»Œ@ÞÃŒ`Þ»Œ`ÞÃŒ€Þ»Œ€ÞÃŒ Þ»Œ ÞÃŒÀÞ»ŒÀÞÃŒàÞ»ŒàÞÌ߻ŒßÃŒ ß»Œ ßÃŒ@ß»Œ@ßÃŒ`ß»Œ`ßÃŒ€ß»Œ€ßÃŒ ß»ŒÀߺÈBàߺÈBÀàºWÍÀáºÈB`âºWÍ€âºWÍ âºÈBÀâºÈBàâºÈBãºÈB ãºÈB@ãºÈB`ãºÈB ãºÈB äºÈB äºÈBÀäºÈB@庿4`åºG`黌@껌Àí»ŒÀíÃŒîºÈB î»Œ îÃŒÀÀîÃŒààîÌﻌïÃŒàﻌ@ô»Œ@ôÃŒ`ô»Œ`ôÃŒ`ÿŠ×¶€ÿºÈB€ÿŠu ÿºÈB ÿŠÙÀÿŠ·àÿºÈBàÿŠ"·ºÈBŠG· Šh·@ºÈB@Šw·`І·€ºÈB€Š®· ºŒ Š÷ÀºÈBÀŠâ·àºÈBàŠWºÈBŠ ºÈB Š[@ºWÍ@ŠL¸`ºWÍ`Šu¸€ºÈB€Šs ŠÏ€Àм¸àŠÖ¸Šõ¸ й@Š-¹`Š8¹€ºÈB€ŠC¹ ºÈB Šf¹ÀºÈBÀŠt¹àºÈBàŠ„¹ºÈBŠ˜¹ Š»¹@Š˹`ºÈB »Œ ÃŒÀºWÍàºWͺWÍ ºG@ºWÍ€ºWÍ ºWÍÀºÈBàºWͺWÍ ºÈB@ºÈB`ºWÍ€ºWÍ ºGÀºWÍàºWͺG º ¿@º ¿`ºÈB ºÈBºWÍ ºWÍ€ºWÍÀºWÍàºÈB ºÈBà Š×¶ ºWÍ ŠÙ ºÈB Šù‚@ ºÈB@ ŠËÄ` ºÈB` Š"·€ ºÈB€ ŠÅ  ºÈB  Š®·À ºÈBÀ ŠXÅà ºÈBà Š¤ÅºÈBŠW ºÈB Š@ºÈB@Š[`ºÈB`Šâ·€ºÈB€Šs ºWÍ ŠL¸ÀºWÍÀŠu¸àŠ-¹ºÈBŠRÇ ºÈB ŠŒÇ@м¸`Š8¹€ŠÖ¸ Šõ¸ÀŠ¹àºŒàŠ÷ÀºÈBºG ºG@ºG`ºWÍ€ºWÍ º‡ÊÀº ¿àº¿4ºG@ºWÍ`ºWÍ€ºÈB ºÈBÀºÈBàºÈBºÈB ºÈB@ºWÍ`ºWÍ ºÍ ºÈB@ºWÍ`ºÈB€ºÈB ºWÍàŠúÕŠÖ ŠÖ@Š!Ö`ºG`ŠSÖ€º¿4€Š¢Ö º¿4 ŠáÖÀº¿4ÀŠ˜QàºÍàŠÀŠúÕ ŠÖ@ŠÖ`ºG`Š˜Q€º¿4€ŠÀ ºWÍ ŠSÖÀºGÀŠ¢ÖàºGàŠáÖºÈBŠ®· ºÈB Šs@ºÈB@ŠzØ`ºÈB`Š¾Ø€ŠÐØ ºÈB ŠáÖÀŠSÖàºÈBàŠ¢ÖŠ×¶ ºŒ Š÷@º¿4@Š5Ù`ºWÍ€ºGÀŠ›ÙàºÈBàŠÚÙºÈBŠüÙ ŠÚ@Šõ¸`м¸€ºÈB€Š®· ºÈB ŠsÀºWÍÀŠÉÚàºWÍàŠ$ÛºWÍŠ‚Û ºÈB ŠzØ@ºWÍ@ŠÜ`ºÈB`Š¾Ø ºÈB ŠWàºWÍàŠ Ý ºÈB Šâ·`ºWÍ`ŠÝ ºÈB Š¤ÅàºÈBàŠXÅ ºÈB ŠÚ ºÈB Š@ ºÈB@ Š[€ ºÈB€ Šù‚À ºÈBÀ ŠËÄà ºÈBà Šß!ºWÍ!ŠYß !Šß@!Š à`!Šà€!ºWÍ€!ŠL¸ !ºWÍ !Šu¸À!ºGÀ!Šÿàà!ºGà!ŠXá"º¿4 "º¿4@"º¿4`"ºWÍ`"е€"ºWÍ€"ŠIâ "ºÈB "ŠœâÀ"ºÈBÀ"Ѝâà"ºÈBà"Šàâ#ºÈB#Šã #Š!ã@#ºÈB@#ŠKã`#ºÈB`#Šlã€#Šxã #Š-¹À#Š8¹$ºÈB$бã@$ºÈB@$Šìã`$ºÈB`$Šä€$Š8ä $ºÈB $Š1…À$Šfäà$ºÈBà$Šdƒ%Šä %ºÈB %Šyƒ@%гä`%ºÈB`%Š …€%ºWÍ€%Šçä %ºÈB %Š˜QÀ%ºWÍÀ%ŠÀà%ºGà%Šå&ŠÐØ &Šà@&Š›Ù`&ºÈB`&Šs€&ºÈB€&Š¾Ø &ºÈB &Š®·À&ŠÖ¸à&й'ºŒ'Š÷ 'Št@'бå`'Š×¶€'ºÈB€'ŠüÙ 'ºÈB 'Š›À'ºWÍà'ºÈBà'ŠÚ(ºÈB(ŠzØ (ºÈB (ŠáÖ@(ºWÍ`(ºÈB`(оæ (ºWÍ (ŠÉÚà(ºWÍà(ŠÜ)º¿4 )ºG )Šè@)º¿4`)ºWÍ`)Š‚Û€)ºWÍ€)Š$ÛÀ)ºWÍÀ)ŠL¸à)ºÈBà)Šœâ *ºWÍ *е`*ºG`*ŠXá€*º¿4 *ºWÍ *Šu¸À*ºÈBÀ*Ѝâà*º¿4+ºWÍ+ŠIâ +ºG@+»Œ`+ºG`+Šÿà€+ºWÍ +ºWÍ +ŠÝÀ+ºÈBÀ+Šâ·à+ºÈBà+ŠW,ºWÍ ,ºWÍ ,Š Ý@,ºÈB@,Šù‚`,ºÈB`,ŠËÄ€,ºÈB€,ŠXÅ ,ºÈB ,ФÅÀ,ºÈBÀ,Šà,ºÈBà,Š[-Šß -Š à@-ºÈB@-Šß`-ºWÍ`-ŠY߀-ºÈB€-ŠKã -ºÈB -ŠlãÀ-Šxãà-Š8¹.Š-¹@.ºÈB@.бã€.ºÈB€.Šìã .Š8äÀ.ºÈBÀ.Š1…à.Šä/ºÈB/Šyƒ /Šfä@/ºÈB@/Šdƒ`/гä€/ºÈB€/Š … /ºÈB /ŠÚÙÀ/ºÈBÀ/Šäà/ºÈBà/Š›Ù0ºÈB0Š®· 0ºÈB 0ŠzØ@0ºÈB@0Šs`0ºÈB`0Š¾Ø€0ºÈB€0ŠÚÙ 0ºÈB 0ŠáÖÀ0ºÈBÀ0оæ1ºÈB1Šâ·@1ºÈB@1ŠW`1ŠÐØ`2ºÈB€2Š@ñ 2ºÈB 2ŠKñÀ2ºŒÀ2Š÷à2Šñ3ºÈB3ŠáÖ 3ºÈB 3Š®·@3ºÈB@3Š›`3ºÈB`3ŠzØ€3ºÈB€3ŠW 3ºÈB 3Šâ·À3ºWÍÀ3ŠÉÚà3ºÈB4ºWÍ 4ºÈB 4Š@4ºÈB@4Šaó`4ºÈB`4Šs€4ºÈB€4Š¾Ø 4ºWÍ 4Š$ÛÀ4ºÈBÀ4ŠÚà4ºÈBà4Šß5ºWÍ5ŠYß 5ŠÔô@5ºÈB@5ŠXÅ`5ºÈB`5Фŀ5ºÈB€5ŠËÄ 5ºÈB 5Šù‚À5ºÈBÀ5бõà5Š×¶6Š›Ù 6ŠÐØ@6ºWÍ@6ŠL¸`6ºÈB`6Šœâ 6ºÈB 6ŠüÙÀ6ºÈBÀ6ŠÚÙ7ºWÍ7Š…÷ 7м¸@7Šõ¸`7ŠÖ¸€7й 7Š·À7ºÈBÀ7Š'øà7Š28ºWÍ8е@8ºÈB@8бã€8ºÈB€8Šìã 8»ŒÀ8ºÈBÀ8вù9»Œ 9»Œ@9Š’û`9Š¥û€9ºÈB€9Šü 9ŠUüÀ9ºÈBÀ9ŠÕüà9ºÈBà9Šlã:Šxã :ºÈB :Š<ý@:Š8ä`:ºÈB`:Š1…€:гä :ºÈB :Š …À:Šfäà:ºÈBà:Šdƒ;Šä ;ºÈB ;Šyƒ@;ºÈB@;Šþ`;ºÈB`;Šþ€;ºÈB€;ŠWþ ;ºWÍ ;ŠÝÀ;ºWÍÀ;Š Ýà;Št<Šp€ <Š€@@»Œ@@ÃŒ`@»Œ`@ÃŒ@B»Œ@BÃŒ`B»Œ`BÃŒC»ŒCÃŒ C»Œ CÃŒÀC»ŒÀCÃŒàC»ŒàCÃŒ€D»Œ€DÃŒ D»Œ DÃŒG»ŒGÃŒ G»Œ GÃŒÀG»ŒÀGÃŒàG»ŒàGÃŒÀI»ŒÀIÃŒàI»ŒàIÃŒ€J»Œ€JÃŒ J»Œ JÃŒ@K»Œ@KÃŒ`K»Œ`KÃŒ KºWÍÀKºWÍ@LºÈBÀLºÈBàLºÈBMºWÍÀN»ŒÀNÃŒàN‚5O»ŒOÃŒ€U»Œ€UÃŒ U‚5ÀU»ŒÀUÃŒàU‚`V»ŒVÃŒ V‚@!@V»Œ@VÃŒ`V»Œ`VÃŒ€V»Œ€VÃŒ V»Œ VÃŒÀV»ŒÀVÃŒàV»ŒàVÃŒW»ŒWÃŒ W»Œ WÃŒ@W»Œ@WÃŒ`W»Œ`WÃŒ€W»Œ€WÃŒ W»Œ WÃŒ€[ºÈB [ºÈBÀ[ºÈBà[ºWÍ \ºÈB`\ºÈB€\ºÈBÀ\ºÈBà\»Œ€]ºWÍ ]ºÈB`_»Œ`_ÃŒ€_‚5 _»Œ _ÃŒÀ_‚`à_»Œà_ÃŒ`‚@! `»Œ `ÃŒ@`»Œ@`ÃŒ@jºÈBàkŠ˜QlŠ lŠ@lŠÏ€`lºWÍ`lŠL¸€lºWÍ€lŠu¸ lºÈB lŠWÀlºÈBÀlŠâ·àlºÈBàlŠ®·mºÈBmŠs mºÈB mŠÙ@mй`mŠõ¸€mŠúÕ mŠÖÀmŠàmŠnºWÍnŠ˜Q nºG nŠÀ@nºÈB@nŠSÖ`nºG`nŠ}€nº¿4€nн nº¿4 nŠìÀnºWÍÀnŠ¢ÖànºWÍànŠáÖoºÈBoŠ®· oºÈB oŠzØ@oºÈB@oŠs`oºÈB`oŠ¾Ø€oŠÚ oŠ8ÀoºgÀoŠ5ÙrºÈB rºÈB@rºÈB€rºÈB rºÈBàrºÈBsºWÍ sºÈB@sºG`sºÈB€sºG sºWÍÀsºÈBàsºÈBtºÈB@tºÈB`tºWÍ€tºÈB tºWÍÀtºÈBuºÈB uºWÍ uºGÀuºÈBàuºGvºWÍ vºWÍ@vºÈB`vºWÍ vºGàvºWÍwºÈB wºG@wºWÍÀwºÈBàwºÈBxºG xºWÍ@x»Œ`xºG xºWÍÀxºÈBàxб!yŠÒ! yº{? yŠó!@yº{?@yŠ"`yº{?`yŠ"€yº{?€yŠ#" yº{? yŠ:"@zŠ¥"`zе"€zŠÇ" zŠØ"àzŠô"{Š # {ºÈB@{ºÈB`{ºÈB€{ºÈB {ºÈBÀ{ºÈBà{ºÈBà{Š%#|ºÈB|Šä |ºÈB |Šfä@|Š<#`|ºÈB`|ŠR#€|Šb# |Šo#À|ªŒÀ|»s„#À|Šß#à|ªŒà|Šì#}Š$ }Š$@}Š.$`}ŠG$€}ºÈBÀ}ºÈBà}ºÞ˜~º¹$ ~ºÈB@~º˜¼`~ºg+€~ºÈB ~ºÈBÀ~bš%À~ºÈBà~ºÈBà~Š˜&ªŒ ºÈB@ªŒ@ºÈB`ºÈB€ªŒ€ºÈB ªŒ ºÈBÀªŒàªŒàºÈB€ªŒ€ºÈB €ªŒ €ºÈB@€ªŒ@€ºÈB`€ªŒ`€ºÈB€€ªŒ €ºÈBÀ€Šæ&à€Šð&ªŒŠÂ ªŒ Šð@ªŒ@ŠN`ªŒ`Š€ªŒ€Šå ªŒ Š¶ÀŠ~àŠ¬‚Š*' ‚»Œ ‚ÃŒ@‚»Œ@‚ÃŒ`‚»Œ`‚ÃŒ€‚»Œ€‚ÃŒ ‚ªŒ ‚ŠDÀ‚ªŒÀ‚Šà‚ªŒà‚ŠtƒªŒƒŠ¥ ƒªŒ ƒŠO@ƒªŒ@ƒŠ`ƒªŒ`ƒŠÛ€ƒŠr' ƒªŒ ƒŠ€ÀƒºÈBÀƒŠ¦'àƒºÈBàƒŠ·'„ÂŒ„ŠÈ' „Šä'@„ÂŒ@„Šø'`„ÂŒ`„Š (€„Š( „ºÈBÀ„Š*(à„ºÈB…ºWÍ …Šb(@…Šk(`…Šu(€…Š( …ºÈB …Š“(À…Šž(à…Š¨(†Š±( †Š¼(@†ŠÇ(`†ŠÑ(€†ŠÚ( †Ší(À†Š÷(à†Š)‡Š ) ‡Š)@‡Š)`‡Š&)€‡ºÈB ‡ºÈB ‡ŠJ)€‰»Œ€‰ÃŒ ‰»Œ ‰ÃŒà‰»ŒŠb*ŠºWÍ Š»Œ@Šb*@ŠºWÍ`Š»Œ€Šb*€ŠºWÍ Š»ŒÀŠb*ÀŠºWÍàŠ»Œ‹b*‹ºWÍ ‹»Œ@‹b*@‹ºWÍ`‹»Œ€‹b*€‹ºWÍ ‹»ŒÀ‹b*À‹ºWÍà‹»ŒŒb*ŒºWÍ Œ»Œ@Œb*@ŒºWÍ`Œ»Œ€Œb*€ŒºWÍ Œ»ŒÀŒb*ÀŒºWÍàŒ»Œb*ºG »Œ@b*@º¿4`»Œ€b*€ºÈB »ŒÀb*ÀºÈB໌Žb*ŽºÈB Ž»Œ@Žb*@ŽºÈB`Ž»Œ€Žb*€ŽºÈB Ž»ŒÀŽb*ÀŽºÈBàŽ»Œb*ºÈB »Œ@b*@ºÈB`»Œ€b*€ºÈB »ŒÀb*ÀºÈB໌b*ºÈB »Œ@b*@ºÈB`»Œ€b*€ºÈB »ŒÀb*ÀºÈB໌‘b* ‘ºWÍ@‘ºG`‘º¿4€‘ºÍ ‘º!1À‘ºgà‘ºÉ1’º?2 ’ºWÍ€’b* ’b*À’b*à’b*“b*“ºÈB “b*@“b*`“b*€“b* “b*À“b*à“b*”b* ”b*@”b*`”b*€”b* ”b*À”b*à”b*•b*•ºÈB`–»ŒÀ—ºÈBà—ºÈBÀ˜ºÈBà˜ºÈB ÒºÈBÀÒªŒÀÒºÈBàÒªŒÓªŒÓºÈB ÓªŒ ÓŠÂ@ÓªŒ@ÓŠð`ÓªŒ`ÓŠN€ÓªŒ€ÓŠ€ ÓªŒ ÓŠÀÓªŒÀÓŠåàÓªŒàÓŠ¶ÔªŒÔŠ~ ÔªŒ ÔŠD@ÔªŒ@ÔŠ`ÔªŒ`ÔŠ€ÔªŒ€ÔŠÛ Ôе"ÀÔÂŒÀÔŠT;àÔºÈBàÔŠ%#ÕºÈBÕŠc; ÕŠ(€ÕºÈB ÕºÈBÀÕºÈB`ܺÈB€ÜºÈB ÜºWÍÀܺÈBàܺWÍݺÈB ݺÈB@ݺÈB`ݺÈB€ÝºÈB ÝºÈBÀݺÈB€ÞºÈB ÞºÈBà໌Ọ ỌÀâºWÍàâºWÍãºWÍ ãºWÍ`ãºWÍ ãºWÍ@仌`仌€äb* äb*åbREåºÈB åºÈB`廌€åbRE€åºÈBÀ廌àåbREàåºÈB 滌@æbRE@æºÈB€æ»Œ æbRE æºÈB bÖJ ºÈBÀbÖJ »Œ@»Œ`º˜¼@ºWÍ`ºWÍ€ºÈBàbÖJàºWÍbÖJºÈB bÖJ ºÈB@bÖJ@ºÈB`bÖJ`ºÈB€bÖJ€ºÈB ºÈBÀºÈBºWÍ@ºWÍ`ºÈB€ºÈB »ŒÀº¦Î ºGÀºG bÖJ ºÈB@bÖJ@ºÈB`bÖJ`ºWÍ€»Œ€ÃŒàºÈB` ºÈB€ ºÈB  bÖJÀ bÖJÀ ºÈBà bÖJà ºÈB bÖJ ºÈB bÖJ ºÈB@ bÖJ@ ºÈB` bÖJ` ºÈB€ bÖJ€ ºWÍ  bÖJ  ºWÍÀ bÖJÀ ºWÍà bÖJà ºWÍ bÖJ ºWÍ bÖJ ºWÍ@ bÖJ@ ºWÍ` bÖJ` ºWÍ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ b*Àb*àb*b* b*@b*`b*€b* b* º¿4ÀºÈBàb*ºÈB ºWÍ@ºWÍ`ºG€º¿4 ºÍÀºG຿4º!1 ºg@º¿4`ºÍ€ºÉ1 º?2 bÐQ ºÈB@ºÈB`bR`ºÈB`Š[R€ºÈB ªŒÀªŒ€º{? »ŒÀ»Œà»Œ»Œ »Œ@»Œ`»Œ€»Œ »ŒÀ»Œà»Œ»Œ »Œà»ŒàÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ»ŒÃŒ »Œ ÃŒ@»Œ@ÃŒ`»Œ`ÃŒ€»Œ€ÃŒ »Œ ÃŒÀ»ŒÀÌ໌àÃŒ »Œ ÃŒ »Œ ÃŒ@ »Œ@ ÃŒ` »Œ` ÃŒ€ »Œ€ ÃŒ  »Œ  ÃŒÀ »ŒÀ ÃŒà »Œà ÃŒ!»Œ!ÃŒ !»Œ !ÃŒ@!»Œ@!ÃŒ`!»Œ`!ÃŒ€!»Œ€!ÃŒ !»Œ !ÃŒÀ!»ŒÀ!ÃŒà!»Œà!ÃŒ"»Œ"ÃŒ "»Œ "ÃŒ@"»Œ@"ÃŒ`"»Œ`"ÃŒ€"»Œ€"ÃŒ "»Œ "ÃŒÀ"»ŒÀ"ÃŒà"»Œà"ÃŒ#»Œ#ÃŒ #»Œ #ÃŒ@#»Œ@#ÃŒ`#»Œ`#ÃŒ€#»Œ€#ÃŒ #»Œ #ÃŒÀ#»ŒÀ#ÃŒà#»Œà#ÃŒ$»Œ$ÃŒ $»Œ $ÃŒ@$»Œ@$ÃŒ`$»Œ`$ÃŒ€$»Œ€$ÃŒ $»Œ $ÃŒÀ$»ŒÀ$ÃŒà$»Œà$ÃŒ%»Œ%ÃŒ %»Œ %ÃŒ@%»Œ@%ÃŒ`%»Œ`%ÃŒ€%»Œ€%ÃŒ %»Œ %ÃŒÀ%»ŒÀ%ÃŒà%»Œà%ÃŒ&»Œ&ÃŒ &»Œ &ÃŒ@&»Œ@&ÃŒ`&»Œ`&ÃŒ€&»Œ€&ÃŒ &»Œ &ÃŒÀ&»ŒÀ&ÃŒà&»Œà&ÃŒ'»Œ'ÃŒ '»Œ 'ÃŒ@'»Œ@'ÃŒ`'»Œ`'ÃŒ€'»Œ€'ÃŒ '»Œ 'ÃŒÀ'»ŒÀ'ÃŒà'»Œà'ÃŒ(»Œ(ÃŒ (»Œ (ÃŒ@(»Œ@(ÃŒ`(»Œ`(ÃŒ€(»Œ€(ÃŒ (»Œ (ÃŒÀ(»ŒÀ(ÃŒmx€„”˜£±^‡M!Z!h!u!‚!!˜!" "Ö"=%L%[%j%y%‚%&"&°&ð&~'0*A*S*d*u*†*—*¨*¯* +/./A/44D4²a8f8v8¤8á89#9Š9î9ÿ9:±:X;k;ƒ; ;|<þ>??*?0?B?ª?³?È?û?'@O@à@)A]AŠA—AÃAåAõAB†B˜B¦B·BC3C;C\C€C…C3D>D¢EÔEtGºGbHpHtH~HˆH£H«EÐÔHIPI6J[JÿJKL×L)MiMNL+N‹NÔNçNüNOYOcOxO†OãNšO¿OüOLPYP¶PÀPêPQ!Q¶QR1R1S6S"SBSGSMS²SÛS/THTT¡T§T¬T±T¾TÛT3V8V"YFYlYqY–YY«YöYûY Z!Zƒ]’]äZ¨g¼gÉgÞgëgˆ[&Zh]gh$h […f‘ffµfug-g9gÁfï_ÍfÙfåfñf„aýf ggEg!g cgQgig”[.h-iåk{l!mvm{mÉmÜm-mDq…q”q1nžq½qr¨sQm wYwbwpwuw³w%wÜwþw_xkxƒx¨xõwºxñxyyy%yoyzxNzwZzÍz {&{0{k{©{ñ{#|[|}}„!„)„2„]„•„î„…â‹ÉÙçñõù޹Ž&/EJl—}‚.‘;‘\‘›‘ª‘Õ‘þM’[’w’Ž’Å’à–ó–—½—Ñ—à—ê—j˜×˜!™´™%š_›y›"œ7žtžæžŸÉŸ,¡¡„¡¹¢ï£Œ¤Ü¥ú¥4¦Q§i¨s«8±|±±Û±I´µ,µ6µ(¶´¶Õ¶÷¶#·€··§·Å·à·ï·¿¸N¹i¹ø¹ìºýº »e»Ð»Õ»ß»ä»é»î»-¼t¼æ¼½û½¾¾ ¾)¾A¾M¾Y¾t¾ˆ¾‘¾¾{¿XÀêÀ…ÁöÁ–«ÂÃÂÒ ÃpÆÜÃ&ĔĤĭĿÄÑÄ—ÅlÍ“ÍÅÍlλÎ÷Î0ψϖÓlÔœØøØbÙþÙÚ%ÚVÚ‰Ú´ÚÛHÛÛÜÛÜhÜ¢Üè0øÜt݋ݷÝïÝ+ÞJÞiÞ¬Þß@ßUßnß·ß"àõà@á”ášáã(ãŽïÃïðï,ð’ðñ_ñüñ:òDò§ò´òÑòó8óBó—ó³ódô}ôõxõ¼õsöPùŸúÛúáúóúûQûrûÛû:ü„ü©ü½üþü0ý@ýIýyýÃýÈýÞýãýèýðýøýûý þþþ þ)þ?™î^vlï–¦ÌÔû*2Zb‡ÁÉñù (PX‰°¿êù%/\dŠ«Åí ¿0;Fwû X$ Ý † !"!n!¥!°!Þ!""B"W"`"‘"Ê"ö"q#$$V$¶$Å$%q%ª% &¨&±&'3'+(D(¬(²(%*£*½*ñ*6+G+/,M,o,é,- --N-†-¢-Ü-í-ò-ü- ..l./"/‹Cá>Û?"@xC@N@ÂA/BüA´2¾B CuCDòD E[EqE™EF7FåEˆF3GbG¼GgHéHtH¤GIPJ L$KL(L6LNKAL{LH<FM­M½MôMoN–NŸNçNðNOQO˜OP§PäQõQBR6S±SÀSëST TFTTTzTˆT¬TºTßTUU6UDUnU“U¡UÒU÷UV+V>V\VmVÉVòV™WðWðYKZRZ‡ZÔZ5[}[¡[µ[å[\<\S\ \Ö\]I]]¡]è]&^d^^¸^,_©_Þ_`6`™`aqaÿasbÊbôbIc˜cçcndådöd ee+eDeTegerf‰f²f½fÈf×f^gug–gÁg6h@hTh¶hÙhýhiVi¦iÈiòi%jLjj j¶j k—k¿kÙkõkll#lpl˜l¶lÏlmÁmþm=nvnn¥n¶nÌnÞnënOopmp~pšp\q‰qÀqCrZrjrsmt¬[ÁtuWuaufuóu&vlv†v¿vùvwwwYŒ5wbŒYwŒwCxUxex~xþxty_{ž{é{½|}0}ƒ}æ~ú~;BNgw»À€?€P€Œ€š€¦€Ë€ù€ '<Ì0‚‚‚˜‚Û‚.ƒ€ƒ–ƒC…_…©fŸ…ñ…ˆ†ч=ˆ§‰³‰ÁŠÉŠ‹P‹r‹¬‹‹Í‹á‹ŒPŒZŒ„ŒªŒÿŒZìŽ*ŽkŽpŽŽúŽ%.fÂöûX›n‘‹‘Ä‘DŠæ‘:’Ë’“r“é“ü•9Šg–ñ–ú–——E—f—•—±—Í—˜êWYWÒWÞW˜˜ ˜¶˜¿˜/™<™™è™?šžŠ_šºšàš››$›N›z›š›Ûí›:œOœŸœ©œ®œ¸œœ˜ž›Ÿ®Ÿ³Ÿ¸ŸËŸÖŸéŸíŸñŸöŸ‡ 0¡9¡}¡¾¡¢-¢`¢o¢®¢"£à¢^£ë¤J¥¦¥ê¥—¬À¬â¬í¬B­o­¹­ë­ø­U®v®Ø®.¯:¯P¯Z¯O°m°~° ° ±±}±µ±×±ó±²²G²в¦²¬²¿²ì²0³H³a³³ƒгóÔ³÷³´´%´r´¨´¼´Û´ú´µ!µ+µRLµdµxµ‚µ‰µšµ¶]¶e¶†¶¤¶Û¹ä¹ý¹"º[ºŽºŸºãºT»}»ï» ¼`¼«¼½½½2½ʽA¾9¿M¿å¿À8ÀPÀkÀùÀ3ÁfÁ ÁÀÁÄÂÝÂÃóÃeÅvÅlÈwÈ–ÈÌÈÉVÉaɸɤʼʭËÌD̲ÌÍaͽÍEÎPÎ[ÎfÎÎìÎÏeϹÏÄÏÏÏüÏWÐÄÐsÑ«ÑáÑöёҰÒnÓÁÓüÓ@ÔÕ&ÕÏÕcÖyÖ{׆×Ô×÷רåØÙXÙiÙ‚Ù§Ù¼ÙçÙIÚeÚœÚÔÚáÚòÚ.ÛIÛÛ¤ÛËÛæÛ&Ü=Ü{Ü…ÜÇÜÓÜ'Ý?ÝaÝqÝÕÝæÝÞ(ÞRÞ‘ÞÝÞ ß)ßnߨßÎßà'à@ànà‡àµàÄàáácá’áÅáÞáWâpâÂâ%äJäoä˜äÀäåàåæÍæÖæçtç¸çÁçãç™èDéqé©éÑéSêê¼êë$ëOëŽëÁë÷ìBî¡îóî ï;ïâïð>ðGðÉñêñò,òLò[òÞô0õšõ»õÊõö>ököýö&÷7÷–÷Ë÷«øæø,ùÀùú‘ú£úïúdûüIücü°üIý\ý„ý™ý®ýfþšþ"em¨±èK˜¡åóhq¨)™éõ(4“Ó)4S¢ÁÌFy¶àøw ‡ Œ ¹  Í C ë   y £ Ç é ò  U û %‚ Pƒf äûTv³D•–¼í¼Ý[‡²Æóf›’œ'DÿGm¢­µÌï%h˜è:„Ëâý>‡±òU·ØW¨$ . ; ü W!e!»&g''°'ê)ù)ž*­*ð*ÿ*B+Q+”+£+æ+õ+8,G,Š,™,Ü,ë,.-=-f-î.ü./ ///%/)/4/>/I/S/W/b/f/q/u/€/„//“/ž/®/Ä/õ/090`0Þ0p2—2¹2à257 3 8öíI8ÑP9:Q ñ: 0;|;¿;Ø;M<\<Ð<`=q=‡=X>ó?@@;@A²DÎDøD EÂE FAEdHìþºH7Iá sIWK~K’K–KšKæKëK/LoLŽL×LÛLßLãLöLFMJMM•MÛM,NYN~N–NÀNáNùNOBOmO OÛOÿO,PbPÆPQVQ°Q½QÜRqS‚S“S¤SµS&TþT×UèUÁVÔVçVúV W W3WºWÎXäYÊZßZôZ [[3[H[][\`]½^ú‹0º ¾¶å  ! " # $%&()013!4"5#6$7%9):*;+<,=->.?/A4B5C6D7E8F9G:H;I<KBLCMDNEOFPGQHRISJTKULWSXTYUZV[W\X]Y^Z_[`\a]b^c_egfhgihjikjlkmlnmonpoqprqsrtsuwyx{z|Š‚‹„†Ž‡ˆ•‰—Šœ‹¢£Ž§¨¬‘­’µ“¶—¹šº›»œ¼ŸÁ Â¢Ã£Ä¤Å¦É§Ì¨Ò©ÕªØ«Þ¬á­ã®î°ï±ó³ø´úµû¶ý·ÿ¸¹º»½9¾:¿;À<Á=Â?Ã@ÄAÅBÆCÇDÈEÉFÊGËHÌIÍJÎKÏLÐMÑNÒPÓQÔRÕSÖT×UØWÙXÚYÛZÜ[Ý\Þ]ß^à_á`âaãbäcådæeçfèhéiêlëmìníoîqïsðtñxòzõ|÷~ø€ú‚û„ü†ýŠþÿ˜¢®¼ÌÍÎÏÒÙÚ'Ü[¯]³^¸_¹`ºa¿bÀÁ˜ášè›éœëîžïŸð ò¡õ°ö±`8a>bRcUeVgXkYlZm[n\o]pq"|qu€v„~†‰›œ’µ•¶˜ºœá¡â¥ä­å®æ°ç±è²é³ê´ë¶ì·í¸î¹ðÂñÃòÄóÅôÇõÉöÊ÷ËøÌùÍúÏûÑÒ×Ù>õBöRø‘ú•ü¦þ©ª¬­®¯ ² ³ ¹ áèêëì í#î%',(1)6*;+B,G-L.Q/V0[1l2q3v4{5€6…7Š89”:™;¸<ÊNÍPÎQÏRÖSéTýUV#W*_+d-e7jANÌANÌANÌÑvÌçv®w!w!w!iFZw!iw!çw® x"x®>x]x®bxÌsxÌ}ẍx̘x®ªxÌÁxÌAN®"x®„z!’zÌšzÌ{®{!‡{Ì”{Ì÷{ô÷{Y ÷{ô÷{Y {! |Ì-|Ì:|Ì÷{ô÷{Y ÷{õ#÷{ô÷{Y ÷{õ#{!§|Ì´|ÌÁ|ÌÎ|Ì÷{ô÷{Y ÷{õ#÷{n(÷{ô÷{Y ÷{õ#÷{n({!_}Ìl}Ìy}̆}Ì“}Ì÷{ô÷{Y ÷{õ#÷{n(÷{ô,÷{ô÷{Y ÷{õ#÷{n(÷{ô,{!>~ÌK~ÌX~Ìe~Ìr~Ì~Ì÷{ô÷{Y ÷{õ#÷{n(÷{ô,÷{Ò0÷{ô÷{Y ÷{õ#÷{n(÷{ô,÷{Ò0{!IÌVÌcÌpÌ}ÌŠÌ—Ì÷{ô÷{Y ÷{õ#÷{n(÷{ô,÷{Ò0÷{6÷{ô÷{Y ÷{õ#÷{n(÷{ô,÷{Ò0÷{6€€®†€!Œ€!"x®ôôANôvm?ANôD‚w?K‚w?{!‚µ@“‚Ì›‚Ì¢‚ô°‚¿@»‚!‚®Ï‚ôÔ‚¿@÷{Ú@=„xB…Ì(…ô±†±C‡ô ‡Y ‡ô ‡Y &‡³D,‡³D2‡!‡ô ‡Y ‡ô ‡Y &‡³D,‡³D2‡!‚…EV‡‘E3³D“‚Ì÷{›E_‡!¾‹ŸJ‡ô ‡K&‡K,‡!÷{ô‡ô ‡K&‡K,‡!÷{ôV‡‘E3K‚L_‡!“‚Ìé‹ôð‹ôÿ‹ô=„xB]x®æŒÞN{!7‘R7‘ S7‘T{!’‰T#’Ì1’Ì=’Ì÷{!÷{!÷{!÷{!{!°’Ì·’̾’Ì‡Ì ‡>V&‡Ì‡Ì ‡¶V&‡Ì,‡¶V2‡Ì“ÍV‡® ‡KW&‡¶V‡Ì ‡>V&‡Ì‡Ì ‡¶V&‡Ì,‡¶V2‡Ì“ÍV‡® ‡KW&‡¶V“!“!L“®`“ýWs“Xj$X’“!“!¨“!´“!¾“ÌÍ“ÌÝ“…XAN®]x®õ•ÌÏÞNÿ•Y{!¨–̳–̽–Ìʖ̇Z ‡Z÷{ŽZ‡ŽZ ‡ÞZ‡ÞN ‡!‡Z ‡Z÷{ŽZ‡ŽZ ‡ÞZ‡ÞN ‡!{!C—¸[I—ÌQ—¸[^—Ìm—¸[v—Ì—¸[Ž—Ì—¸[£—Ì«—̹—ÌÊ—ÌÜ—Ìé—Ìö—Ì ˜Ì˜Ì0˜ÌB˜ÌW˜Ìj˜Ì˜Ì’˜Ì ˜Ì·˜Ì̘ÌטÌä˜Ìô˜¸[ü˜Ì™¸[™Ì"™¸[.™Ì<™¸[E™ÌP™¸[]™Ìl™Ìy™¸[ƒ™Ì™¸[œ™Ì«™¸[Á™ÌÙ™¸[å™Ìó™Ìý™Ì÷{ÞN÷{U^÷{U^÷{ÞN‡ÞN ‡!÷{Ù_÷{Ù_÷{Ù_÷{Ù_÷{ma÷{ma÷{ma÷{ma÷{ c÷{|c÷{|c÷{ÞN÷{ÞN÷{ÞN÷{ÞN‡>V ‡ÞN÷{ÞN÷{ÞN÷{U^÷{U^÷{ÞN‡ÞN ‡!÷{Ù_÷{Ù_÷{Ù_÷{Ù_÷{ma÷{ma÷{ma÷{ma÷{ c÷{|c÷{|c÷{ÞN÷{ÞN÷{ÞN÷{ÞN‡>V ‡ÞN÷{ÞN3g7 ZÏÞNÈ£ÞZ_‡! ¤'m{!h¤Km¤w?§¤w?Þ¹mp¦'mv¦n|¦n‚¦+n¿¤”ní¦¡n{!÷{änV+¢p™§­pÁ«Ì ¤'ms¬ëwy¬!y¬!½­!цô‡ôцô׆Y ‡ô ‡Y цô׆Y è†õ#‡ô ‡Y &‡õ#цô׆Y è†õ#î†n(‡ô ‡Y &‡õ#,‡n(цô׆Y è†õ#î†n(ô†ô,‡ô ‡Y &‡õ#,‡n(2‡ô,цô׆Y è†õ#î†n(ô†ô,à’Ò0‡ô ‡Y &‡õ#,‡n(2‡ô,“Ò0цô׆Y è†õ#î†n(ô†ô,à’Ò02¯6‡ô ‡Y &‡õ#,‡n(2‡ô,“Ò08¯6цô׆Y è†õ#î†n(ô†ô,à’Ò02¯6Y¯ú}‡ô ‡Y &‡õ#,‡n(2‡ô,“Ò08¯6_¯ú}¸Y~ײ®³®*³®3³!8³!°³®Á³®ѳNŒæ³®ö³Ì´Ì ´SŒd¶®¸2¸©ºx“2º~“5º~“?º~“Cº~“Mº~“Qº~“[º~“bº~“uº~“º~“‘º~“›º~“®º~“¸ºƒ“ɺ°“ֺȓ㺃“öº°“»È“»Ü“%»”/»*”9»Ü“L»”V»*”`»Ü“s»”…»*”—»Ü“ª»”¼»*”λE”á»”é»v”ñ»E”¼” ¼v”¼E”'¼”5¼v”C¼”V¼Ì”x¼Ì”†¼Ì”•¼Ì”¢¼Ì”¯¼Ì”½¼Ì”˼̔ڼ̔ç¼Ì”ô¼Ì”û¼Ò” ½î”½”+½Ì”;½Ì”K½Ì”\½Ì”k½Ì”z½Ì”Š½Ì”š½Ì”«½Ì”º½Ì”ɽ̔ҽҔè½î”þ½”¾Ì”"¾Ì”2¾Ì”C¾Ì”R¾Ì”a¾Ì”q¾Ì”¾Ì”’¾Ì”¡¾Ì”°¾Ì”¹¾Ò”þî”;”á¾Ì”ñ¾Ì”¿Ì”¿Ì”!¿Ì”0¿Ì”@¿Ì”P¿Ì”a¿Ì”p¿Ì”¿Ì”ˆ¿Ò”š¿î”¬¿•À¿7•Ê¿L•Ô¿•è¿7•û¿L•À•"À7•+ÀL•4À•HÀ7•ZÀL•lÀ•€À7•‹ÀL•–À•ªÀ7•¾ÀL•ÒÀ•æÀ7•ðÀL•úÀ]• Á{•Á]•Á]•(Á°“3Á]•<Á]•EÁ—•UÁ]•[Á«•oÁ]•wÁ¸•†Á]•Á]•˜Á”¢Á]•«Á]•´Á”ÀÁ”ÖÁ”áÁ”öÁ” ”(”;”X°“a°“j”x”†Â7•“Â]•œÂ]•¥Â”±Â]•ºÂ]•ÃÂÙ•ÒÂ]•ÛÂ]•å–îÂ]•÷Â]•ÖÃ]•Ã]•"Ã9–CÃ9–`Ã9–‚Ã9–šÃd–´Ã9–ÒÃ9–ëÃd–Äd–6Ä…–EÄ…–^Ä…–mÄ…–†Ä…–Ä…–¾Ä…–ÕÄ…–öÄ…–Å©–Å…–'Å…–5Å…–KÅ…–aÅ…–oÅd–…Åd–’Åd–¨Åd–»Åd–×Å…–æÅ…–õÅ…–Æd–Æ…–"Æ…–4Æ…–EÆ…–QÆ…–^Æ…–pÆ9–}Æ9–Æ9–¥Æ…–·Æ…–ÅÆ…–߯…–õÆd–Çd–Ç…–{!)âÌ2âÌ:â̇«á ‡Ì&‡±á,‡ŽZ2‡ÞZ÷{ÞZ÷{ÞZ‡«á ‡Ì&‡±á,‡ŽZ2‡ÞZ÷{ÞZ÷{ÞZíUï5íx“Tíx“qí`ï|í~“†í~“í~“ší~“¤í~“®í~“¸í~“Âí~“Ìí~“Öí~“àí~“êí~“ôí~“þí~“î~“î~“îlï,î`ï6îrï>îlïHîvï[îvïaîvïtîvï|î‚ï˜îÌ”¤îx“®îx“{!äòÌðòÌýòÌ óÌó±öóÌ÷{èö‡ÞN ‡èö‡ÞN ‡ÞN&‡Ý÷÷{Ý÷÷{èö‡ÞN ‡èö‡ÞN ‡ÞN&‡Ý÷÷{Ý÷€¬úÅô¬úÚôx“çô¬úïô²úõ~“ õ9–"õ9–.õ9–;õ9–Jõ9–Tõ9–`õ9–kõ9–õ9–’õ9–§õ9–¾õ9–Ðõ9–äõ9–ö9–ö9–8ö9–Wö9–qö9–ö9–¡ö9–´ö9–Éö9–àö9–òö9–÷9–÷9–)÷9–C÷9–U÷9–h÷9–ƒ÷9––÷9–¬÷9–Ê÷9–à÷9–ô÷9–ø9–$ø9–8ø9–Tø9–hø9–qø9–zø9–„ø9–ø9–›ø9–©ø9–µø9–Äø9–Ôø9–äø9–óø9–ù9–ù9–"ù9–3ù9–Eù9–Zù9–hù9–yù9–ˆù9–™ù9–¨ù9–·ù9–Æù9–Óù9–âù9–ðù9–ú9–ú9– ú9–6ú9–Oú9–fú9–ú9––ú9–­ú9–Äú9–Ùú9–ðú9–û9–û9–6û9–Nû9–_û9–sû9–ˆû9–žû9–´û9–Êû9–àû9–õû9– ü9–#ü9–:ü9–bü9–‚ü9– ü9–±üx“ã «óÌCÚÌê 3 ¾3,É3{!zÌ’zÌÌ÷{ô÷{x7÷{Ê7÷{ô÷{x7÷{Ê7<$~“C$~“K$~“U$~“\$~“c$gY9kYˆ$qYž$ŽYµ$°YÉ$ÁY…0rzŠ0!0~z€€ŽZ{!‡ÞN ‡!&‡{!÷{}•2‚˜2NŒà.ˆä2¬ú÷2¬úÅô¬ú3¬úþ5¬ú<$~“6¬ú$6µŠ56»Š±6Ì{9Q”Š9Ìc:rïj:ë–p:ë–{!‡! ‡!&‡â¡{!‰>T¢‘>Ì›>T¢¯>Ì„?~“‹?~“~“•?~“{!Ú?Ìæ?Ìõ?Ì@Ì @ó¥@Ì @Ì÷{Q¦‡ÞN ‡ÞN÷{.§÷{ʧ÷{ÞN÷{Q¦‡ÞN ‡ÞN÷{.§÷{ʧ÷{ÞN{!ñ@Ìþ@ÌAÌ#AÌ6AÌGA'©QAÌ]AÌ÷{„©÷{ÞN÷{lª‡® ‡lª‡ÞN ‡lª÷{>V÷{„©÷{ÞN÷{lª‡® ‡lª‡ÞN ‡lª÷{>VÈBë–ÏB,­ÔB,­ÚB,­àB,­E°E°aFw?„?~“gF~“~“nF~“wF¬úF¬ú¡F¬ú²F¬úÄFl±ÒF~“ÙF~“âF~“éF~“òF~“ùF~“G~“ G~“G~“G~“"G~“)G~“2G~“9G~“BG~“IG~“RGrï[Grï6Nrï²:‡Ã®Ì²:¯Ô®ÌANôV‡Ò{!W5 {! ÄXÌËXÌÓXÌ÷{ô÷{ï ÷{ô÷{ï Yž !Y¯ Yï *YÀ Yï ÃY¸{!|Z#‡ZÌ”Z#žZ̪Z#³ZÌ`c"`c"`~""`~"Ìcc"Ôcc"¨ẖh̹hô¨ẖh̹hô¨ẖh̹hô¹hY ±h̹hô±hÌþhÍ6þhÍ6þhÍ6þhÍ6þh½7þhÍ6þhÍ6þhÍ6þhÍ6þhÍ6þhë8þhÍ6þhÍ6þhØ9þhÍ6þhÍ6þhÍ6þhÍ6þhÍ6þhÍ6þh¬: rþBGiC_iCyi C†iC•iC£i%C±i.C¿i7CÍi@CÜiICéiRCøi[CjdCjmC&jvC4jCDjˆCANÃGSpÃGþhßGþhßGþhùGÏOÒHÏOÒHÏOÒHÏOÒH¢p¿J¯pÄJºpÄJÌpCßpCôprïqÊJqÐJ$xrïKxrïoxrï’xrï²xrïoLrïa{gY~{gY•{gY®{gYÄ{gY4í`>gYSgYegYvgYgY¡gY·gYÍgYègYügY€gY)€gY;€gYR€gYm€gY€€gY•€gY¨€gY¶€gYÁ€gYÛ€gYé€gYgYgY!gY1gYEgY\gY{gY gYÊgY×gYçgYýgY‚gY(‚gY:‚gYJ‚gY^‚gYo‚gY‚‚gY”‚gY¨‚gY´‚gYÅ‚gYÖ‚gYæ‚gYõ‚gYÿ‚gYƒgY ƒgY1ƒgYCƒgYQƒgYbƒgYwƒgYŠƒgY›ƒgY©ƒgY¾ƒgYуgYãƒgYòƒgY „gY„gY(„gY?„gYQ„gYn„gY„gY®„gYÊ„gYæ„gYÿ„gY"…gY6…gYN…gYb…gY~…gYž…gYº…gYÓ…gYæ…gYú…gY †gY†gY0†gYA†gYY†gYi†gY~†gY†gY«†gY†gY̆gYâ†gYü†gY‡gY*‡gYD‡gYW‡gYe‡gYv‡gY“‡gY¹‡gY͇gYà‡gYü‡gYˆgYˆgY+ˆgY:ˆgYQˆgYbˆgYvˆgYˆgY§ˆgY¾ˆgY؈gYóˆgY‰gY‰gY'‰gY=‰gYP‰gYi‰gY…‰gY™‰gY¬‰gY¿‰gYÓ‰gYç‰gYû‰gYŠgY)ŠgYQŠgYxŠgYžŠgYªŠgYÚŠgYðŠgY ‹gY(‹gY=‹gYlm+,  ( )*,-.2468:!<#;#>%=%@'?'B)A)D+C+F-E-H/G/K1M3N5P7O7R9Q9[;b=_?aAlCnEpGrIzKuMwOyQ„S†UˆWŠYŒ[Ž]˜_‘a“c•e—g¢i¤k¦m¨oªq¬s®u°w¼y³{µ}·¹»ƒÆ…ȇʉÌ‹ÎÐÒ‘Ô“Ö•Ø—æ™Û›Ýߟá¡ã£å¥ð§ò©ô«ö­ø¯ú±ü³þµ·¹»½¿ Á à ÅÇÉËÍ Ï"Ñ$Ó&Õ(×*Ù,Û.Ý0ß2á4ã6å8ç:é>ë?í@ïDñUóTó^õ]õb÷eùmûný{ÿtuwyz „ … †‡ˆœ­²³µ!¶#·%¸'¹)»+¼-¾/¿1À3Á5Â7Å9É;Ê=Ì?ÍAØCöEûGüIýKþMOQSUWY [ ] _ac e!g"i<k>m?oCqps€uƒwŒy†{‡}‰‹”ƒ–…™‡›‰£‹ž ¢‘¥“¦•§—©™ª›«¬Ÿ­¡®£°¥±§²©´«µ­¶¯¸±¹³ºµ»·¼¹½»¿½À¿ÁÁÃÃÄÅÅÇÆÉÇËÈÍÉÏÊÑËÓÌÕÍ×ÎÙÐÛÒÝÕßÖá×ãØåèçáéãëåíçïïñðóòõô÷õù÷ûøýúÿûýÿ  N      !#%')+-/1!3#5%7'9);+=-?/A1C3E5G6I7K8M9O:Q;S<U=W>Y?[A]B_CaDcEeFgGiHkImKoMqUsWuYw[y]{^}`bdƒf…h‡j‰l‹npr‘t“v•x—z™|›~Ÿ¡ƒ£…¥‡§‰©‹«Œ­Ž¯±’³”µ–·˜¹š»œ½ž¿ Á¢Ã¤Å¦Ç¨ÉªË¬Í­Ï¯Ñ±Ó²Õº×èÙìÛïÝößõáøã÷ãúåçé ë í ï ñóõ÷"ù%ûKýMÿVWikjz { } ~€‚ƒ„…†‡‰!Š#‹%Œ')Ž+-/’1“3”5•7–9—;˜=™?šA›CEžGŸI K¡M¢O£Q¤S¥U¦W§Y¨[ª]«_¬a­c®e¯g°i±k²m³o´qµs¶u·w¹yº{»}¼½¾ƒ¿…À‡Á‰Â‹ÃÄőƓǕȗϙ›  Ÿ Ÿ¡¡££¥¥§§©©««­­¯¯!± ±#³7µ?·u¹w»x½y¿zÁ{Ã|Å}Ç~ÉË€ÍςуӌÕ׎ÙÛݑߕá–ã—å˜ç™éšë›íœïñžóŸõ ÷¤ù¥û¦ý§ÿ¨©ª«¬ ³ ´ µ¶·¸¹º»¼½¾!¿#À%Á'Â)Ã+Ä-Å/Æ1Ç3È5É7Ê9Ë;Ì=Í?ÎAÏCÐEÑGÒIÓKÔMÕOÖQ×SØUÙWÚYÛ[Ü]Ý_Þaßcàeágâiãkämåoæqçsèuéwêyî{ï}ðñòƒó…ô‡õ‰ö‹÷øù‘ú“û•ü—ý™þ›ÿŸ¡£¥§©«­¯ ± ³ µ · ¹»½¿ÁÃÅÇÉËÍÏÑÓÕ× Ù!Û"Ý#ß$á%ã&å'ç(é)ë*í+ï,ñ-ó.õ/÷0ù1û9ý:ÿ;<=>? @ A BCDEFGHIJK!L#M%N'O)P+Q-R/S1T3U5V7W9X;Y=Z?[A\C]E^G_I`KaMbOcQdSeUfWgYh[i]í_èaêcìeðgñiòkómôoöqøsúuûwüyý{þ}Zƒ[…\‡b‰c‹def‘g“h•i—j™k›lmŸn¡o£p¥q§r©s«t­u¯v±w³xµy·z¹ƒ»„½…¿†Á¨ÃŸÅ¡Ç£É¥Ë¦Í§ÏªÑ¬Ó­Õ¯×°Ù±Û³Ýµß·á¸ãºå»ç¼é¾ëÛíÜïàñâóãõä÷æùçûèýéÿêëìíî ï ð ñòóôõö÷øùú!û#ü%ý'þ)ÿ+-/13579;= ? A C E GIKMOQSUWY[]_acegik m!o"q#s$u%w&y'{(})*+ƒ,…-‡.‰/‹012‘3“4•5—6™7›89Ÿ:¡;£<¥=§>©?«@­A¯B±C³DµE·F¹G»H½I¿XÁ¾ ÃÊ Å Ç É Ë Í% Ï Ñ" Ó$ Õ' ×) Ù+ Û- Ý/ ß1 á© ãª å« ç¬ é­ ë í ï6 ñ7 ó? õ@ ÷‡ ùˆ û‰ ý* ÿ7 4 5 6 A @ U V W c d e f ¹ » ¿ Ê !Ì #Þ %Û %ß 'Ü 'à )Ý )+$-%/I1F3G5H7T9P;Q=R?SA¦C§E¨G©I¹K®M°O²Q´SµU¶W¸Y»[½]¾_ÀaÂcÄeÆgÈiÉkËmÍoÏqàsÓuÕw×yÙ{Û}ÜÝ߃â…䇿‰è‹éëì‘î“ð•ò—ô™ö›÷ùŸú¡ü£ ¥§©«­I¯J±n³qµr·s¹t»u½v¿wÁxÃőǒɓ˔͕ϖїӘՙךٛۜÝßžáŸã å¢ç£éëQíOíRïPï³ñ±ñ´ó²ójõk÷xùwû³ý­ÿ®°²¶¸ » ½ ¾¿ÁÂËÒüýþ!ÿ#%')+-/L1M3©5ª7¬9µ;¶=¸?ºA»C½EÄGÅIËKÌMxO›Q¦S±U¼WËYÖ[á]ì_÷ac%e0g;iFkQm\ogqrs}uˆwðyñ{ò}øùúƒû…ü‡ý‰þ‹ÿ‘“•—™›\]Ÿd¡g£j¥y§ ©É«ð­¯%±&³?µ@·D¹E»F½p¿qÁrÃsÅtÇɗ˘͙ϚћӶշ׸ٹۺݻ߼á½ã¾å¿çÀéÁëÂíÃïÄñÅóÆõÇ÷ÈùÉûÊýËÿÌ Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü! Ý# Þ% ß' à) á+ â- ã/ ä1 å3 æ5 ç7 è9 é; ê= ë? ìA íC îE ïG ðI ñK òM óO ôQ õS öU ÷W øY ù[ ú] û_ üa ýc þe ÿg i k m o q s u w y  {  }      ƒ … ‡ ‰ ‹   ‘ “ • — ™ ›  Ÿ ¡ £ ¥ §  © !« "­ #¯ $± %³ &µ '· (¹ )» *½ +¿ ,Á -à .Å /Ç 0É 1Ë 2Í 3Ï 4Ñ 5Ó 6Õ 7× 8Ù 9Û :Ý ;ß <á =ã >å ?ç @é Aë Bí Cï Dñ Eó Fõ %z—z™‚F¹‚B—‚@™‚J»‚L½‚H¿‚DÁƒR¹ƒV—ƒT™ŠÚŠÒŠÜŠè%ŠàŠÔŠâŠÈ—ŠÆóŠÞŠØ!ŠÖ#Šæ%Šä'ŠÊ)ŠÎ+ŠÐ-ŠÌ/‘dc‘fe‘b%‘jg‘li‘t—‘r™‘hk‘pm‘no°º%ìä¹öˆƒöŠ…öއöŒ‰÷¨¹÷¦ƒ÷¤…÷¢‡÷ ‰øÆ¹úò¹š {˜ —– }Š cŒ e g’ i˜ ™š —Ž k– m” o"¶ "® "¸ "¼ "° "¾ "Ä ó"Æ —"´ !"º "² #" %"À '"¦ )"ª +"¬ -"¨ /o q ð"Í ð Ï ð±ò.í ô:í øNí úZ7 ûbÍ û`Ï û^±üjÍ ühÏ üf±ýn¹þrí )8Í )6Ï )4±R ¹Ó\¹tbt`wˆw†Öa°Ã²Å¾¹Ð¹C² ¹C® »C° ½Cª ÁC¬ ¿Sv!¹Sr!»St!½Sn!õSp!¿’Ü$!’Ú$#“â$'“à$)”æ$™”è$—•ô$—•ò$™š%—š%™›%%›%¹›%»›%½›%¿›%ÁŸ2%¹Ÿ.%»Ÿ0%½Ÿ*%oŸ,%¿£B%¹¯ˆ%ůŠ%ò %¹²œ%»²ž%½²š%¿²˜%Á³¦%ų¨%÷æ%¹·â%»·ä%½·Þ%Á·à%¿¸ò%¹¸î%»¸ð%½¸ì%¿¸ê%Á»&¹»&»»&½»&¿»&Á¿4&¹¿0&»¿2&½¿,&Á¿.&¿À@&¹À<&»À>&½À8&ÁÀ:&¿ÃV&¹ÃR&»ÃT&½ÃN&ÁÃP&¿Äb&¹Ä^&»Ä`&½ÄZ&ÁÄ\&¿Åp&¹Åj&»Ån&½Ål&¿Åh&ÁÆ|&¹Æx&»Æz&½Æv&¿Æt&ÁLj&¹Ç„&»Ç†&½Ç€&ÁÇ‚&¿Ëœ&ͪ&!ͨ&#ΰ&!ή&#϶&!Ï´&#м&!к&#êd)¹ê`)»êb)½ê^)¿ê\)Áñ¬)Óñ®)—ôÂ)¥ôÄ)—÷Ø)«÷Ú)—úî)±úð)—ý*·ý*—*½*—0*Ã2*—F*ÉH*— \*Ï ^*— r*Õ t*—Ž*Û*—ª*á¬*—¼*™¾*—Î*™Ð*—à*â*—¤j-¹¤d-»¤h-½¤f-¿¤b-Á¹p.!¹n.#ºv.!ºt.#»z.e ¼~.g ½‚.i ¾†.k ¿Š.m ÀŽ.o Á’.q –.s Ú.u Äž.w Å¢.y Ʀ.{ Ǫ.} È®. ɲ.ƒ ˾.ÌÂ.$¾0ó %Â0÷ %Ä0ù &È0÷ &Ê0ù 'Ð0÷ 'Ò0ù (Ö0÷ (Ø0ù )Ü0÷ )Þ0ù &0@P\n€Ž¢¶ÆÜò4HT`lx„—Ÿ§®¸ÅÎÛãêø%.=Xw™¾Êäü1Pjˆœ®ÃÜñ'7IYs‰›¦ÅÜò,al}”¹Ùõ#29CLU`nw„˜¢¬»Åîù!4>Jf™¨´¼ÄÌÛäò  1Bd{‘¡«»ËÖæú  ) 8 B M X d o ~ ¬ ´ Å Ø ç þ  ' 7 H V e y ‡ — ª ´ ¿ Î Ø í   ) = W k ~ “ § À Ý ú   * 7 D O \ n Œ • ¬ · Æ × ç ÿ  1 E ^ r ~ Š ™ © ¿ Ï ê <UbjrŒ¯·Ûåô '3=U^g޶¾ÇÏÙéú!/:Mfw„– ²ÁØõ &=PX`o{™£²¿ÌÖêü )9O[qŒ¢·×ãð5?M_q‰›µ½ÌÚãö4Lex‹–¨³»ÃÒÚâìö #)2:@IQW`hnw…Ž–œ¥­³¼ÄÊÓÛáêòø ",4:FNX`hpx€ˆ”®·¿ÈÐØâêòú 4Baq—©°·¾ÅÌÓÚáèïöý !*3>GW`BX[¸ Ï æ !!"T$o$Š$ª$Ê$ê$ %­&Í(ì( )*)I)m)‘)µ)Ù)¬*S-v-™-¼-ß-.*.R.z.¢.Ê.H1‚1¼1ö102j2‘2½2é23A3m3™3~6¾6þ6>7~7¾7þ7±8Æ8×879P9c9m90:M:b:l:‹:Â;ã;ú;<%<M<y= =â=1>>ö>–?é@$B~B¯BCC–CÉCëCLEnE¶EŠF7GŒG£GŒH•H7IÎIîIJKJ³JëJáKýK#L`L±LÄL7MaM«MÙMÁNO}O»OPÃPÌP Q¬Q#R>R‰RœRŸR¬R»RÌRßR'SdSiStS‰S›SèS8T@TRT3Y?hjhhˆhh­hÅháhýh inj×k¸l m”mÓm¸nošpÈpûp5qJq]q¦q¯q?r…rœr÷r+sPss sÑs4tˆtætVu^ufuÑuv@vÌv3w;wŽw›w£w«w+x3xFxMxtx:yÊyóy.zpz—z½zÅzòz{9{A{T{\{¡{Í{Õ{é{1|I|\}d}n}z}”}²}Ô}~:~b~u~•~¬~ ;ÉÝ&c‚‚Æ‚ƒ-ƒoƒ„ƒ¬ƒüƒ6„=„L„Ó„æ„<…e…»…8†††å†3‡£‡ù‡Eˆ›ˆ¥ˆ¯ˆ¹ˆôˆV‰`‰j‰t‰~‰ž‰è‰bŠlŠvЧŠl‹v‹€‹ŒŽ1ŽJŽWŽdŽmŽ{ŽŽ+T[Ãê ‘"‘D‘P‘v‘Š‘¹‘Ç‘5’?’e’¡’³’“0“×–˜˜#˜1˜:˜C˜Z˜è˜™…™Ô™Ý™š™›½›ç›œœÓœ½Åž%žŸbŸ ŸË¡Õ¡å¡£ ££É£Ø£ÿ¥!¦¬¨ç¨%ª:«.±’±œ±¬±¶±¼³Wµ‚µŠµ¨µÈµèµ¶¶ü·¸/¸L¸d¸~¸°¸x¹’¹§¹µ¹-»=»H»U»]»ü»¼¼¼©¼Ê¼¬¾Ã¾Õ¾æ¾ñ¾ ¿ ¿/¿B¿P¿^¿d¿zÀ›À£À½ÀèÂý¹ÃÎÃÞÃòÃÄÄïÄþÄÅÅ*Å5ÅCÅ`ÅxÅ\ÏnÏ¬Ó¿ÓØÓáÓðÓ Ô*Ô9ÔNÔZÔÚÙôÙåÚíÚ*Û2ÛwÛƒÛªÛÅÛÏÛùÛ ÜCÜMÜY܇ܓÜÃÜÕÜîÜõÜ'ÝdÝyÝݣݭÝÎÝØÝóÞûÞ~à†àéà ã7æ>æFæOæuæÜæ7ç}èòêŠí–í§íÆíÎíÖíÞíæíîíî î%î/î>î_îiîsî}î‡î‘î›î¥î¯î¹îÃîÍî×îóîÿî ï)ï5ï?ïIï™ï£ïLðkð…ð4ñGñòñÚòâòóªó§õ_öiö–öBùðùöùýùú úúú&ú0ú:úEúQú]úiúvú‡ú•úbû¶ûÆûËüÞüëüOý^ýþÉþàþçþðþ÷þþþÿ ÿÿÿ!ÿ(ÿJÿZÿeÿ|ÿ«ÿáÿüÿ5ŽV÷ž¸òå:|—æ#j@~ž¾Q[em´¾Ø+:I¥¯¹Íð c m ” ¹ Æ Ï ù *!O!V!f!™!»!Ì!Ö!"'"8"k"s"Ó"Û".#P#Â#"$*$Ó$á$î$a%i%³%»%é%l&v&Ž&–&ž&Â&Û&ã&ñ&ù& '!'+'Q'„'¥'á'4(<(q(}(˜(Ç(Ñ(ì())®)Á)Ô) *®*ß*+î+ö+3,‚,û,#-+->-F-Ä-Ì-Ô-!.*.:.G.O.W._.ê.X/a/p/™/þ/0070c0k0|0¬0À0Ï0ø0171Y1“1Ú12:2O2w2Œ2¹2Ó2ø23373y3ð3ø34Q4Ü4ä45!5)5>5a5‰5Â5ù5:6s6|6¸6ü6/8K8g8z8‚8Š8’8¹8Ñ89(909?9G9|9¦9°9º9ß9ù9:::B:z::—:­:µ:Ì: ;>;y;’;›;µ;Ú;ü;<4<Ž<='=7=B=M=Ù>"?d?l?¨?ä?ì?ô?û? @ž@AdA†AÔAìAôABBbBuB–BC:CDCVC^CfCÏCóC#D+D4D@D{DµDÀDÈDêDSE{EE F.FøFBG´GïG÷G HH9HGHOHWH_HyH´HIBIeImIxIŸI©I¶IáIíIüI"J.J:JqJ›JÞJ:KWKŒK”KœKÀKÚKâKLJLdLnLØLîLMM!MoM;NINQNgNtNÝNúNO OGO_OlOËOåOïOP9PCPiPsP‡PP—PŸP¸PÀPÈPÜPäPìPôPQ+Q3QIQQQYQR-RS¹SäSTMTT³T U=UšUËUþU5VÏYÝYlZwZ³ZÁZ[[ÿ^_r`ƒ`Hb[bRdîd"eÃf¬ghKh9jÊjöj=lßlšmnøn0oq¥q–rër uTv]v‹v¶vcwZxnx¦yŸ}Ê}õÀ€/¹Ûðø‚‚'‚ê‚ÿ‚ ƒ ƒÙƒ„o„y„£„­„ …(…¦†Ȇ܆þ†‡4‡H‡p‡’‡ˆ`ˆ³ˆ{‰Ö‰í‰õ‰NŠXŠ‹¢‹qŒŒŒžŒÌŒ$>ÙHZj‡‘{‘ñ‘’æ’›“©“à“”ð•–F–Ä–——]—~—‡—À—ï˜ЙÉšך6›B›dœÌœÔœÛœòœûœ¤ÇÙîÞŸsŸþŸ+ 3 þ¡¢u¢¹¢΢ó¢£>£F£ˆ££˜£¬£¶£ç£î£T¤[¤°¤¸¤À¤ȤФø¤¥j¥r¥z¥‚¥Œ¥œ¥Á¥µ¬¹¬k®º®î¸¯7°˜°á°.±6±q±“±À±ɱ?²p²w²~²Û²Q³U¶í¹õ¹8º—ºi»þ»"½*½{½˜½º½½ؾ^ÀÀÀtÁÁ¯Â;ÃoÃwÃÖûÃÃÃÐÃØÃ!Ä=ÄrÄnÅ"ÆRÆ‘ÆÇÆÑÆ Ç_ÇFÈbÈ‚ÈŒÈæÈÊ*Ê2ÌqÎ{Î…Î÷ÎÚÏäÏîÏ4ÑìÑ\Ò¡ÒÓeÓ ÔÔjÔœÔÀÔëÔõÔÕgÕ¡Õ«ÕµÕ.Ö+רܨoÙw٭ٱÙrÚæÚ<Û™ÛÙÛ2Ü¥Ü0ÝÞÝ ÞGÞßßcß´ßÀß4à{àÒádâ¸âÅçÍçÛçÇï{ðÄðÌðüðWñiñ¡ñTò‘ò×òAólóóËóýó7ôlôsôºôxõÃõ–öÀö¼÷ñ÷ø5øuøtùÍùãùïùGúOúû4û\ûû³ûülütüåüïü÷üÜýþ'þ¹þâþöþþþÿ#ÿ[ÿgÿnÿ‰ÿ ÿÊÿÔÿõÿ@OWx‚Œ Á 2v€Ý!>‡›Ìö.8BnÓÛ@Ja…ž«ÉâðúIQYa‘éD˜Øàû2SdÈ4<]“èð- H P c m  £ Ù ì ø   & 7 I ` h x © ³ » Ò 9 H P X ` ¬ ´ ' 9 M S o ‹ ={ÁÉÜöM•Áî ¢Ú-:„ŒRà;V`ƒ›¥´Óì0FNpzªÒÝ&.9K^r}Éçï&j¦ú"š¤Òæî÷Ä?ŒTð¤È=ï t!‰!½!S"["%Y%…'2(H(:)B)j)v)€)•)¡)É)w*~*É*Ð*+"+m+t+¿+Æ+,,c,j,µ,¼,--Y-`-†--«-³-ø-:.B.Œ.Ô.Û.2­2Ø2ë2ó2û233'3/373?3G3O3X3`3h3r3z3‚3Š3’3š3¢3½3Ì3Þ3q6y66‹6·6Á6Ù6î6ö6þ67777-7u7}7…77•77¥7­7µ7Ð7î78?8i8s8{8ƒ8‹8“8›8£8«8³8»8Ã8Ë8Ó8Û8ã8ö8 999"9*929:9H9¨9°9¸9À9È9Ð9ä9î9ø9:$:,:4:<:D:L:T:\:d:l:t:|:„:Œ:”:œ:¤:¿:Ý:ç:;J;”;Ì;ÿ; <<p<ƒ<§<!=/===¢=·=ß=ù=&>?E?‡?—?§?]@t@ @¼@í@ADA”B¦B¸BÁCÉCZDqDyD)E1E9EÔEåEñEýE?FMF[FiFwF…F“F¡F¯F»FÇFÓFßFíFùFGGG)G5GAGMGYGÍGäGñG HH+H9HAH\H²HåHóHIII+ISI]IiII‹I•I¡I±I½IÇIÓIÝIéIóIÿIJJ%J1J;JGJQJ]JgJsJ}J‰J“JŸJ©JµJçLêLíLðLóL³NåN§PµQÆSÖSæSöSTT7WIW[WmWW‘W£Wa[u[‰[[±[Å[Ù[í[º^é_ñ_ ``9`G`n`~`‹`¶`È`×`a€i£s9›Ù+?°(E21314151618797:7;7<7=7>7@?A?B?C?D?E?F?G?H?JIKILIMINIOIPIQIRISITIVUWUXUYUZU[U\U]U^U_U`UaUbUdcecfcgchcicjckclcmcncocpcqcrcyx{z…„†„‡„ˆ„‰„Œ‹‹Ž‹‹‹œžœŸœ œ¡œ¢œ£œ¥¤¦¤§¤¨¤©¤ª¤«¤²±³±´±µ±¶±·±¸±¹±º±¼»½»¾»¿»À»Á»Â»Ã»Ä»Å»Æ»Ç»È»É»Ê»Ë»Ì»Í»Î»Ï»Ð»Ñ»Ò»Ó»Ô»Õ»Ö»×»Ø»Ù»Ú»Û»Ü»Ý»Þ»ß»à»á»â»ã»ä»å»æ»ç»è» !"(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'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'['\[][^[_[`[a[b[c'd'e'f'g'h'i'j'k'l'onpnqnrnsntnunvnwnxnynzn{n|n}n~nn€nn‚nƒn„n…n†n‡nˆn‰nŠn‹nŒnnŽn‘’“”•–—˜™˜š˜›˜œ˜˜ž˜Ÿ˜ ˜¡˜¢£¤¥¦§¨©ª«¬­±°²°³°´°µ°¶°·°¸°¹°º°»°¼°½°¾°¿°À°Á°Â°Ã°Ä°Å°Æ°Ç°È°É°Ê°Ë°Ì°Í°Î°Ï°Ð°Ñ°Ò°Ó°Ô°Õ°Ö°×°Ø°Ù°Ú°Û°Ü°Ý°Þ°ß°à°á°â°ã°ä°å°æ°ç°è°é°ê°ë°ðïñïòïóïôïõïöï÷ïøïùïúïûïüïýïþïÿïï                 !"#$%&'()+*,*-*/.0.1.2.3.4.5.6.7.8.9.:.;.<.=.?>@>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>VUWVXVYVZV[V\V]V^U_U`UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzU{U|U}U~UU€U‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùþýÿýýý      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}}€}‚ƒ…„†„‡„ˆ„‰„Š„‹„Œ„Ž‘’“”•–—˜™šœ››ž›Ÿ› ›¡›¢›£›¤›¥›¦›§›¨›©›ª›«›¬›­›®›¯›°›±›²›³›¶µ·µ¸µ¹µºµ»º¼µ½µ¾µ¿µÀµÁµÂµÃµÄµÅµÆµÇµÈµÉµÊµËµÌµÍµÎµÏµÐµÑµÒµÓµÔµÕµÖµ×µØµÙµÚµÛµÜµÝµÞµßµàµâáãâäâåâæâçâèâéâêâëâìâíâîáïîðîñîòîóîôîõîöî÷îøîùîúîûîüáýüþüÿá      !"#$%&'()*+,-./0123456798:8;8<8?>@>A>B>C>D>E>GFHFIFJFLKMKNKPOQOROSOUTVTWTXTYTbacadagfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzf{f|f}f~ff€ff‚fƒf„f…f†f‡fˆf‰fŠf‹fŒffŽff‘’“”•–—˜™š›œžŸ ¡¢£¤¦¥§¦¨¦©¦ª¦«¦¬¦­¦®¥¯¥°¥±¥²¥³¥´¥µ¥·¶¸¶¹¶º¹»¶¼¶½¶¾¶¿¶À¶Á¶Â¶Ã¶Ä¶Å¶Æ¶Ç¶ÉÈËÊÍÌÎÌÏÌÐÌÕÔÖÔ×ÔØÔÜÛßÞàÞâáãáäáåáæáçáèáéèêèëèìèíèîèïèðèñèòèóèôèõèöè÷èøèùèúèûèüèýèþèÿèèèèèèèèèè è è è è èèèèèèèèèèèèèèèèèèè è!è"è#è$è%è&è'è(è)è*è+è,è-è.è/è0è1è2è3è4è5è6è7è8è9è:è;è<è=è>è?è@è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è[è\è]è^è_è`è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è{è|è}è~èè€èè‚èƒè„è…è†è‡èˆè‰èŠè‹èŒèèŽèèè‘è’è“è”è•è–è—è˜è™èšè›èœèèžèŸè á¡á¢á¤£¦¥§¥¨¥©¥ª¥«¥¬¥­¥®¥¯¥°¥±¥²¥³¥´¥µ¥¶¥·¥¹¸º¸»¸¼¸½¸¾¸¿¸À¸Á¸Â¸Ã¸Ä¸Å¸Æ¸Ç¸È¸É¸Ê¸Ë¸Ì¸Í¸Î¸Ï¸Ð¸Ñ¸Ò¸Ó¸Ô¸Õ¸Ö¸×¸Ø¸Ù¸Ú¸Û¸Ü¸Ý¸Þ¸ß¸à¸á¸â¸ã¸ä¸å¸æ¸ç¸è¸é¸ê¸ë¸ì¸í¸î¸ï¸ð¸ñ¸ò¸ó¸ô¸õ¸ö¸÷¸ø¸ù¸ú¸û¸ü¸ý¸þ¸ÿ¸¸¸¸¸¸¸¸¸¸ ¸ ¸ ¸ ¸ ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ ¸!¸"¸#¸$#%#&#'#(#)#*¸+*,¸-¸2131415161bñ{bô{dñ{dô{fñ{fô{hñ{hô{jñ{jô{lñ{lô{nñ{nô{n¤|pñ{pô{p¤|rñ{rô{r¤|tñ{tô{t¤|vñ{vô{v¤|xñ{xô{x¤|zñ{zô{z¤||ñ{|ô{|¤|~ñ{~ô{~¤|~\}€ñ{€ô{€¤|€\}‚ñ{‚ô{‚¤|‚\}„ñ{„ô{„¤|„\}†ñ{†ô{†¤|†\}ˆñ{ˆô{ˆ¤|ˆ\}Šñ{Šô{Ф|Š\}Œñ{Œô{Œ¤|Œ\}Žñ{Žô{ޤ|Ž\}ñ{ô{¤|\}’ñ{’ô{’¤|’\}’;~”ñ{”ô{”¤|”\}”;~–ñ{–ô{–¤|–\}–;~˜ñ{˜ô{˜¤|˜\}˜;~šñ{šô{š¤|š\}š;~œñ{œô{œ¤|œ\}œ;~žñ{žô{ž¤|ž\}ž;~ ñ{ ô{ ¤| \} ;~¢ñ{¢ô{¢¤|¢\}¢;~¤ñ{¤ô{¤¤|¤\}¤;~¦ñ{¦ô{¦¤|¦\}¦;~¨ñ{¨ô{¨¤|¨\}¨;~ªñ{ªô{ª¤|ª\}ª;~ªF¬ñ{¬ô{¬¤|¬\}¬;~¬F®ñ{®ô{®¤|®\}®;~®F°ñ{°ô{°¤|°\}°;~°F²ñ{²ô{²¤|²\}²;~²F´ñ{´ô{´¤|´\}´;~´F¶ñ{¶ô{¶¤|¶\}¶;~¶F¸ñ{¸ô{¸¤|¸\}¸;~¸Fºñ{ºô{º¤|º\}º;~ºF¼ñ{¼ô{¼¤|¼\}¼;~¼F¾ñ{¾ô{¾¤|¾\}¾;~¾FÀñ{Àô{À¤|À\}À;~ÀFÂñ{Âô{¤|Â\}Â;~ÂFÄñ{Äô{Ĥ|Ä\}Ä;~ÄFÆñ{Æô{Ƥ|Æ\}Æ;~ÆFÆ}€Èñ{Èô{Ȥ|È\}È;~ÈFÈ}€Êñ{Êô{ʤ|Ê\}Ê;~ÊFÊ}€Ìñ{Ìô{̤|Ì\}Ì;~ÌFÌ}€Îñ{Îô{Τ|Î\}Î;~ÎFÎ}€Ðñ{Ðô{Ф|Ð\}Ð;~ÐFÐ}€Òñ{Òô{Ò¤|Ò\}Ò;~ÒFÒ}€Ôñ{Ôô{Ô¤|Ô\}Ô;~ÔFÔ}€Öñ{Öô{Ö¤|Ö\}Ö;~ÖFÖ}€Øñ{Øô{ؤ|Ø\}Ø;~ØFØ}€Úñ{Úô{Ú¤|Ú\}Ú;~ÚFÚ}€Üñ{Üô{ܤ|Ü\}Ü;~ÜFÜ}€Þñ{Þô{Þ¤|Þ\}Þ;~ÞFÞ}€àñ{àô{à¤|à\}à;~àFà}€âñ{âô{â¤|â\}â;~âFâ}€äñ{äô{ä¤|ä\}ä;~äFä}€ê†êÀî†ð†ò†ô†ö†ø†ú†ü†þńńτ†††ú†ÿ† ú† ÿ† ú† ÿ†ú†ÿ†ú†ÿ†ú†ÿ†ú†ÿ†††††† †"†$†*ñ{*ô{.Å„0Ï„2Å„2Ï„4Å„4Ï„6†\Õ•\Þ•\å•\À^Õ•^Þ•^å•^À^î•Ô†Ö†â†ä†è†î†ð¤­ò¶­ô¤­öñ{øñ{øô{úñ{úô{ú¤|üñ{üô{ü¤|ü\}þñ{þô{þ¤|þ\}þ;~ñ{ô{¤|\};~Fñ{ô{¤|\};~F}€ñ{ô{¤|\};~F}€€¯£¯††°¯º²IJβ:ú†<ú†>ú†@ú†@ÿ†Bú†Bÿ†Dú†Dÿ†Vn„Xn„bn„dý‡fn„fý‡f†‘hˆ‘hŠ‘h²‡jn„jý‡l†‘lˆ‘lŠ‘l²‡lËnn„ný‡p†‘pˆ‘pŠ‘rn„rý‡r†‘tˆ‘tŠ‘t²‡tËt€Ït÷ŠxŠ‘zn„zý‡|†‘|ˆ‘Œn„†—©™©™°›©›°›·œn„©°·¾žn„Ÿ†¡ñ{¡ô{¡À£ñ{£ô{£¤|£À¥ñ{¥ô{¥¤|¥\}¥À§ñ{§ô{§¤|§\}§;~§ÀÞ†ÞÀÞ²¯à†â†ä†æ†è†ê†ì†ìÿ†î†îÿ†ð†ðÿ†ò†òÿ†ö†öú†ø†øú†ú†úú†ü†üú†þ†þú††ú††ú††ú††ú††ú† † ÿ† L² ú†S²ú†L²S²ÀL²ú†S²ú†L²S²ÀL²ú†S²ú†L²S²Àn„"n„"ý‡n„¥n„§ꇫý‡­ý‡à†â†âÀäÀ䆿†æÀèÀè†ê†ì†î†îÀðÀð†ò†ô†ö†ø†ü†þ†þõþþ†þõ†À†† † À † À††††õþ†‘n„ý‡n„ý‡n„ý‡n„ý‡ n„ ý‡"n„"ý‡$n„$ý‡%n„&n„&ý‡-ÀR†V†X†Z†^n„`n„bn„j†rn„tn„vn„xn„zn„Šn„Œn„–n„˜n„ž† †¢†¤†¦†¨†¬†®†°†²†´†¶†¸†º†¼n„¾n„Àn„Ân„Än„Æn„Èn„Èý‡Ên„Ìý‡Ìn„Ðý‡Òý‡Òn„Ön„Øn„Ün„Þn„àn„ân„än„æn„èn„én„éý‡ên„ën„ëý‡ë†‘ín„íý‡í†‘툑ïn„ïý‡ï†‘ñn„ñý‡ñ†‘ñˆ‘ñŠ‘ñ²‡òn„ö†ún„ün„þn„n„n„ n„ n„n„†††††† †"†$†&†(†*†,†R†T†V†X†Z†\†^†`†b†d†f†j†l†n†pªrªr ªtªt ªtªv!ªvn„v†x†z†|†~7ª~†€7ª€†„†„7ª†††7ªˆ7ªˆ†Š†Š7ªŒ†Œ7ªŽ†’†”†–†˜†š†¬†®†°†²¤­¶†¸†¸¤­º†º¤­¼†¾†¾¤­À†À¤­Â†Ä†Ä¤­Æ†Æ¤­È†Ê†Ê¤­Ì¤­Î¤­Ð¤­Ò¤­Ô¤­Ö¤­Ø¤­Ü¤­Þ¤­à¶­â¶­ä¶­æ¶­è¶­ê¶­ì¶­î¶­ð¶­ò¶­6n„6ý‡n„ý‡n„ý‡ À"À&n„&ý‡.Àdˆ‘dý‡d†‘fý‡f†‘fˆ‘xý‡~†‘€†‘‚†‘„†‘††‘ˆ†‘Šý‡Š†‘žˆ‘ ˆ‘¢ˆ‘¤ˆ‘°Š‘²Š‘´Š‘¶ˆ‘¶Š‘¸ˆ‘»†Ç†Í†Þ•*Å„-†/†0Å„0Ï„1†2Å„2Ï„3†3À4†5†5À6†8†9†;†=†?†I†O†Q†U†W†Y†[†e†g†i†k†mªm†oªo ªo†qªq ªqªq†s!ªs†u7ªu†vñ{vô{w†}†~n„€n„‚n„ƒ†„†…††n„ˆn„Šn„ކŽn„†À’†”†˜ú†˜†šú†š†œú†œ† n„ ý‡¢n„¢ý‡¤ú†¤ÿ†¦n„¦ý‡ªú†ªÿ†¬ú†¬ÿ†®ú†®ÿ†°ÿ†°ú†±n„²ú†²ÿ†³n„µn„¿†Á†Î†Ðý‡Ðn„Ò†Ô†Öý‡Ön„؆‘Øn„Øý‡Ú†Ü†ÜÀÞ†ÞÀàñ{àô{àÀá¶­â†âÀã¶­äñ{äô{å¶­æñ{æô{æ¤|ç¶­è†ê†ìý‡ìn„í†î†ï†ð†ò†ô†ö†ø†úÞ•ú†ü†þ† † † † ú† † ú† † ú† † ú† † † ú† † ú† † † ú† ú† ú† † † † †" †$ †& †( À* †, ý‡, n„. †. À0 †4 †6 †6 À8 †: À: †: lU< †< À> †@ †B †D Ï„F Å„F Ï„H Å„H Ï„L †N †P †R †T †V †X †Z †\ †^ †` †b †d †f †h †j †n †p †v †x ý‡x n„z ý‡z n„| †‘| n„| ý‡~ À~ †€ †‚ ý‡‚ n„„ À† Àˆ Àˆ n„Š †Œ †Ž †’ †– †š †œ †ž †  †£ †£ °¯£ À£ ²¯¥ †¥ °¯§ †§ °¯© †© °¯ª Àª †« †¬ À¬ †­ †­ °¯® †¯ †° †± †± °¯³ †³ °¯³ Àµ †µ °¯· †· °¯¹ †¹ °¯» †» °¯½ †½ °¯¾ †¿ †¿ °¯À †Á †Á °¯Ã †à °¯Ä ñ{Ä ¤|Ä ô{Å †Å °¯Æ ¤|Æ ñ{Æ ô{Ç †Ç °¯È †É †É °¯Ê †Ê McË †Ë °¯Ì †Í †Í °¯Î †Ï †Ï °¯Ñ †Ñ °¯Ó †Ó °¯Ô †Õ †Õ °¯Ö †× †× °¯× ÿ†Ø †Ù †Ù °¯Ù ÿ†Ú Þ•Ú †Û †Û °¯Û ÿ†Ü †Ý †Ý °¯Ý ÿ†ß †ß °¯ß ÿ†á †á °¯á ÿ†ã †ã °¯ã ÿ†å †å °¯å ÿ†ç †ç °¯ç ú†é †é °¯é ú†ë †ë °¯ë ú†í †í °¯í ú†ï †ï °¯ï ú†ñ †ñ °¯ñ ú†ó †ó °¯ó ú†õ †õ °¯õ ú†÷ †÷ °¯÷ ú†ù †ù ú†ù ÿ†ù °¯û L²û °¯û S²û ú†û Àý L²ý °¯ý S²ý ú†ý Àÿ L²ÿ °¯ÿ S²ÿ ú†ÿ À † † † †& †( †* †* Mc, †, Mc2 †2 À4 †4 À4 ©6 †: †> †B †F †J †N †R †V †X †\ †] †_ ú†_ ÿ†` †a †b †c ’¸c †e ’¸e †f †g †i †i Àj †k †l †m †p †q †s †t †u †v †v Àw †y †z †z À{ †| †| À} †€ †€ À‚ †‚ À„ †ˆ †Œ †Ž †’ †– †˜ †œ †  †¢ †¦ †ª †¬ †° †´ †¶ †º †¾ †Â †Æ †Ê †Ë †Í †Î †Ò †Ö †Ø †Û n„Ü †à †â †æ †ê †ì †ì Àð †ð Àô †ô Àö †ú †þ † † † † † † n„ ý‡ † † n„ ý‡ †‘ ˆ‘ Š‘ ²‡ † † †" †& †( †) n„) ý‡) †‘) ˆ‘) Š‘) ²‡) Ë, †0 †2 †2 À6 †6 À8 †8 À< †< À> †> ÀG n„G ý‡G †‘G ˆ‘G Š‘H †L ñ{L ô{L ÀN ô{N ÀN ñ{P ñ{P ô{P ÀR ñ{R ô{R ¤|R ÀT ô{T ¤|T ÀT ñ{V ñ{V ô{V ¤|V ÀX ñ{X ô{X ¤|X ÀZ ñ{Z ô{Z ¤|Z \}Z À[ yÍ\ ñ{\ ô{\ ¤|\ \}\ À^ ñ{^ ô{^ ¤|^ \}^ À` ñ{` ô{` ¤|` \}` Àb ô{b ¤|b \}b Àb ñ{d ñ{d ô{d ¤|d \}d ;~d Àe n„e ý‡e †‘e ˆ‘e Š‘e ²‡e Ëe €Ïe ÷Šf ô{f ¤|f \}f ;~f Àf ñ{h ñ{h ô{h ¤|h \}h ;~h Àj ñ{j ô{j ¤|j \}j ;~j Àl ñ{l ô{l ¤|l \}l ;~l Àn ñ{n ô{n ¤|n \}n ;~n Àr †t †” †– †˜ †š †œ †ž †¦ †¨ †ª †¬ †¬ À¬ ©® ý‡® †‘° n„° ý‡° †‘² n„² ý‡² †‘´ ý‡´ †‘¶ n„¶ ý‡¶ †‘Ò †Ò ÀÒ ©Ô ý‡Ô †‘Ö n„Ö ý‡Ö †‘Ø n„Ø ý‡Ø †‘Ù Š‘Ú ý‡Ú †‘Û n„Û ý‡Û †‘Û ˆ‘Ü n„Ü ý‡Ü †‘ú †ú Àú ©ü ý‡ü †‘þ n„þ ý‡þ †‘ n„ ý‡ †‘ ý‡ †‘ n„ ý‡ †‘ † À ©" ý‡" †‘$ n„$ ý‡$ †‘& n„& ý‡& †‘( ý‡( †‘) n„* n„* ý‡* †‘V †d †e n„f ñ{f ô{f Àg n„h ñ{h ô{h ¤|h Àj ñ{j ô{j ¤|j \}j Àl ñ{l ô{l ¤|l \}l ;~l ÀS Š‘/†³n„³ý‡¿n„±†³†µ†Ã†­††Ÿ†¡†£†¥†§À©†«†­†¯†±†³†µ†·†¹†»†½†¿†Á†Ã†Å†Ç†É†Ë†Í†Ï†Ñ†Ó†Õ†×†Ù†Û†Ý†ß†áñ{áô{á¤|ãñ{ãô{ã¤|åñ{åô{å¤|çñ{çô{ç¤|éñ{éô{é¤|ëñ{ëô{ë¤|íñ{íô{í¤|ïñ{ïô{ï¤|ññ{ñô{ñ¤|óñ{óô{ó¤|õñ{õô{õ¤|÷ñ{÷ô{÷¤|ùñ{ùô{ù¤|ûñ{ûô{û¤|ýñ{ýô{ý¤|†ÀÀ†À† † À † †††††õþ}†}À}7ª†7ª†7ªƒ†ƒÀƒ7ª…À…†…7ª‡†‡7ª‰7ª‰†‹Ø‹†‹Þ†õþ7ª³n„³ý‡³†‘µn„µý‡ † †;†;n„=†?†Mn„Q†Sn„Un„Ÿn„¡n„£n„¥†§†©†«†n„n„n„n„n„!n„#n„%n„'n„'ý‡)n„)ý‡+n„-n„/n„5†5n„9n„;n„ón„õ†ù†ý††!ª†n„7ª†n„† ¤­ ¤­ ¤­ †¤­†¤­¤­÷†ù†û†ý†ÿ††††Oý‡Qn„¹†Ån„Çn„×n„†'†)n„1ý‡3n„In„Iý‡On„Qn„†¥n„§n„©n„»n„»ý‡½n„½ý‡¿n„¿ý‡Án„Áý‡Ãn„Ãý‡Ån„Åý‡À†À†!n„!ý‡!†‘#À#†%À%†'†)†)À+†-†/†gn„­†‘­ý‡¯ý‡¯†‘¯ˆ‘±ý‡±†‘±ˆ‘³ý‡³†‘³ˆ‘µý‡µ†‘µˆ‘µn„%n„9n„?ý‡An„Cn„En„Eý‡cý‡ký‡k†‘qˆ‘sˆ‘sŠ‘uˆ‘yn„ƒ†…†‡†ÿn„K†M†Sn„Sê‡Un„Uê‡W†WÞ•›††Ÿ†¡†«†On„Qn„÷†ù†û†ý†ÿ† † † † † † † † † † † † Þ• † Þ• † À † † †! †# †% †' †) †+ †- †/ †1 †3 †5 †7 n„9 n„= n„? n„A †C n„E †G n„I †K †M n„O n„O ý‡Q n„Q ý‡S n„U n„W n„Y n„[ n„] n„_ n„a n„c n„e n„g n„i n„k n„m n„o n„q n„s n„u n„w n„y n„{ n„} n„ n„ †ƒ n„… ý‡‡ n„‰ n„‹ n„ n„ n„‘ n„½ †Ï ú†Ï †Ñ ú†Ñ †Ó ú†Ó †Õ ú†Õ †× ú†× †Ù ú†Ù †Û ú†Û †Ý ú†Ý †Ý Àß ú†ß †ß Àá ú†á †ã ú†ã †å ú†å †ç ú†ç †é ú†é †é Àë ú†ë †ë Þ•í ú†í †í Þ•ï ú†ï †ñ ú†ñ †ó ú†ó †õ ú†õ †÷ ú†÷ †ù ú†ù †û ú†û †ý ú†ý †ÿ ú†ÿ † !n„ !ý‡!n„!ý‡!n„!ý‡!n„!ý‡!ÿ†!n„!ÿ†!n„!ÿ†!n„!ÿ†!n„!ÿ†!n„!ÿ†!n„!!ÿ†!!n„#!n„#!ý‡%!ÿ†%!n„'!ÿ†'!n„)!n„)!ý‡+!n„+!ý‡+!†‘-!n„-!ý‡/!n„/!ý‡1!n„1!ý‡1!†‘3!n„3!ý‡3!†‘5!n„5!ý‡5!†‘7!n„7!ý‡7!†‘9!ÿ†9!†‘9!ˆ‘;!ÿ†;!n„;!ý‡=!†‘=!ˆ‘?!n„?!ý‡A!n„A!ý‡C!n„C!ý‡E!n„E!ý‡G!n„G!ý‡I!ú†I!†K!n„K!ý‡M!n„M!ý‡O!n„O!ý‡Q!n„S!n„U!n„U!ý‡W!n„W!ý‡Y!n„Y!ý‡y!ú†y!ÿ†!†‘!†“!†•!†—!†™!†›!†!†Ÿ!†¡!†£!†¥!†§!†©!†«!†­!†¯!†±!†³!†³!Àµ!†·!†·!À¹!†»!†½!†¿!†Á!†Ã!†Å!†Ç!†É!†Ë!†Í!†Ï!†Ï!ÀÑ!†Ó!†Õ!†×!†Ù!†Û!†Û!ÀÝ!ñ{Ý!ô{ß!ñ{ß!ô{ß!Àá!ñ{á!ô{á!Àã!†å!ñ{å!ô{ç!†ç!Àé!†ë!†í!ñ{í!ô{ï!ñ{ï!ô{ñ!†ó!†õ!ñ{õ!ô{÷!ñ{÷!ô{ù!†ù!Àû!†û!Àý!†ý!Àÿ!†ÿ!À"†"À"†"†"† "† "† "†"ñ{"ô{"ñ{"ô{"¤|"ñ{"ô{"ñ{"ô{"¤|"†"†"Þ•"†"Þ•"ñ{"ô{"Þ•"ñ{"ô{"Þ•!"n„!"ý‡#"n„#"ý‡%"n„%"ý‡'"†'"Þ•)"†)"Þ•+"†-"†/"†1"†1"ú†3"†5"†7"†7"ú†9"†;"†="†?"†A"†C"†E"†G"†I"†K"†K"ÀM"†O"†O"ÀQ"†S"†S"ÀU"†W"†W"ÀY"†["†]"†_"†a"†c"†e"†g"†g"Ài"†i"Àk"†m"†o"†q"†s"†u"†w"†y"†{"†}"n„}"ý‡"†"À"†ƒ"†…"n„‡"†‰"ñ{‰"ô{‹"ñ{‹"ô{"ñ{"ô{"ñ{"ô{‘"n„‘"ý‡‘"†‘‘"ˆ‘“"ñ{“"ô{“"¤|“"À•"n„•"ý‡•"†‘—"ñ{—"ô{—"À™"ñ{™"ô{™"À›"†›"Þ•"†"Þ•Ÿ"†¡"†¡"Þ•£"†£"Þ•¥"ñ{¥"ô{¥"Þ•§"ñ{§"ô{§"Þ•©"†©"n„«"†«"Þ•­"†¯"†¯"Þ•±"†±"Þ•³"n„³"ý‡³"†‘µ"ñ{µ"ô{µ"Þ•·"ñ{·"ô{·"Þ•¹"n„¹"ý‡»"ñ{»"ô{½"†¿"†Á"n„Á"ý‡Ã"ñ{Ã"ô{Å"†Ç"†É"†É"ÀË"†Ë"ÀÍ"†Ï"†Ñ"ñ{Ñ"ô{Ó"ñ{Ó"ô{Ó"¤|Õ"ñ{Õ"ô{×"ñ{×"ô{×"¤|Ù"†Û"†Û"ú†Ý"†ß"†á"†ã"†å"†ç"†é"†ë"†í"†í"Àï"†ñ"†ñ"Àó"†õ"†õ"À÷"†ù"†ù"Àû"†û"Àý"†%#†'#n„'#ý‡)#†+#Þ•+#†-#†/#†1#†3#†5#†7#†9#†;#†=#ñ{=#ô{?#n„?#ý‡A#n„A#ý‡A#†‘C#†E#†G#†G#ÀI#†I#ÀK#ñ{K#ô{K#ÀM#†M#ÀO#ñ{O#ô{Q#ñ{Q#ô{Q#¤|S#†U#†U#ÀW#†W#ÀY#†[#†]#†_#†a#lUa#†c#†e#†e#Þ•g#†i#n„i#ý‡k#†m#†m#lUm#Ào#†q#†s#†u#†w#†y#†{#†}#†#†#†#Þ•ƒ#†…#†‡#†‰#†‹#†#†#†‘#†“#†•#†—#†™#†™#ú†›#†#†#ú†Ÿ#†Ÿ#ú†¡#†£#†£#ú†¥#†§#†§#À©#†«#†«#À­#†¯#†¯#À±#†³#†³#Àµ#†·#†¹#†»#ñ{»#ô{½#ñ{½#ô{¿#†Á#†Ã#†¹$À»$n„»$ý‡½$†½$ÀÁ$†Á$ÀÃ$†Ã$ÀÅ$†Å$lUÅ$ÀÇ$ÀÇ$†É$†Í$†Ï$†Ñ$Å„Ñ$Ï„O%†Q%n„S%†U%†³%n„µ%n„·%†¹%†»%n„»%ý‡½%n„½%ý‡¿%n„¿%ý‡¿%†‘Á%ÀÃ%†Ã%ÀÅ%†Ç%†É%n„É%ý‡Ë%ÀÍ%ÀÏ%n„Ñ%n„Ó%À×%À×%n„Ù%n„Ù%ÀÛ%†—&†™&†Ÿ&†¡&†£&†¥&†¿&†Á&†Ã&†Å&†Ç&†Ç&Þ•É&†É&Þ•Ë&†Í&†Ï&†Ñ&†Ñ&ÀÓ&†Ó&ÀÕ&†×&†Ù&†Û&†Ý&†ß&†á&†ã&†å&†ç&n„é&†ë&†í&†ï&†ñ&†ó&†õ&†õ&À÷&†÷&Àù&†û&†ý&†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'ú†'ÿ†'†!'†#'†%'†%'ú†''†)'†)'ú†+'†+'ú†-'†/'†1'n„1'ý‡3'†3'À5'n„5'ý‡7'†7'À9'n„9'ý‡9'†‘;'ñ{;'ô{;'À='†?'†A'n„C'†E'n„G'†G'ÀI'†I'ÀK'n„M'†O'†Q'†S'n„U'n„W'†Y'†['n„]'†_'n„a'n„c'n„e'†g'n„g'ý‡i'ñ{i'ô{k'n„k'ý‡k'†‘m'ñ{m'ô{m'¤|o'n„o'ý‡q'ñ{q'ô{s'n„s'ý‡s'†‘u'ñ{u'ô{u'¤|w'†y'†{'†}'†'n„'n„ƒ'n„…'n„‡'n„‰'n„‹'n„'†'†‘'†“'†•'†—'†™'†›'†¥'†§'†©'†«'†³'†µ'†·'†¹'†»'†½'†¿'†Á'†Ã'†Å'†Ç'†É'†Ë'†Í'†Ï'†Ñ'ñ{Ñ'ô{Ó'ñ{Ó'ô{Õ'†×'†Ù'†Û'†Ý'ñ{Ý'Àß'ñ{ß'ô{ß'Àá'ñ{á'ô{á'¤|á'Àã'†ã'Àå'ñ{å'ô{å'Àç'ñ{ç'ô{ç'¤|ç'Àé'ñ{é'ô{é'¤|ë'ô{ë'¤|ë'ñ{ï'†ñ'†ó'ñ{ó'ô{ó'¤|õ'ñ{õ'ô{õ'¤|÷'ñ{÷'ô{÷'¤|ù'ñ{ù'ô{ù'¤|û'ñ{û'ô{û'¤|ý'†ÿ'†(†(†(†(† († (†(†(†(†(†(†(†(†(À!(ú†!(ÿ†+(†-(†/(†1(†3(†5(†7(†9(†;(†=(Þb=(†?(†?(ÀA(†C(†C(ÀE(†G(†I(†K(†M(†O(†Q(†Q(McS(†U(†W(†Y(†[(ñ{[(ô{](†_(†a(†c(†e(†g(†i(†k(†k(Àm(†o(†q(†s(†u(†w(†y(†y(À{(†•(n„—(n„Ï(†Ñ(†Ó(McÓ(†Õ(McÕ(†)†)†)†)†)†)†)†)†)†!)†%)†%)À')†')À')©))†+)†-)†/)†1)ñ{1)ô{3)†5)†7)†9)†;)†=)†?)†A)†C)ñ{C)ô{E)†G)†I)†K)†M)†O)†Q)†Q)À+-ñ{+-ô{+-¤|--ñ{--ô{--¤|/-†1-ñ{1-ô{1-¤|3-†5-†7-†9-†;-†=-†?-†A-†C-†E-†G-†I-†K-†M-†O-†Q-†S-†U-n„W-n„Y-n„[-n„]-n„Å-†Ç-†É-†Ë-†Í-†Ï-†Ñ-†Ó-†Õ-†×-†Ù-†Û-†Ý-†ß-†ç-†é-†ë-†í-†ï-†.†.†.†.†.†.†.»m.»m.†E.†G.†I.†K.†M.†O.†Q.†S.†U.n„U.ý‡U.†‘W.†W.ÀW.©Y.ñ{Y.ô{Y.À[.n„[.ý‡[.†‘].†].À].©_.ñ{_.ô{_.Àa.n„a.ý‡a.†‘c.†c.Àc.©e.ñ{e.ô{e.Àg.n„g.ý‡g.†‘i.†i.Ài.©k.ñ{k.ô{k.À+0†-0†/0n„O0†Q0†S0†U0†W0†Y0†ƒ0†…0†‡0†›0†0†Ÿ0†¡0ñ{¡0ô{£0ñ{£0ô{£0¤|¥0ñ{¥0ô{¥0¤|¥0\}§0ñ{§0ô{§0¤|§0\}§0;~©0ñ{©0ô{«0ñ{«0ô{«0¤|­0ñ{­0ô{­0¤|­0\}¯0ñ{¯0ô{¯0¤|¯0\}¯0;~±0ñ{±0ô{³0ñ{³0ô{³0¤|µ0ñ{µ0ô{µ0¤|µ0\}·0ñ{·0ô{·0¤|·0\}·0;~ë0†í0†ï0†ñ0†ó0†ù0†ÿ0†1†1†1†1† 1† 1† 1†1†1†1†1†1†1†1†+1†-1†;1ñ{;1ô{;1¤|;1\};1;~=1ñ{=1ô{=1¤|=1\}=1;~?1ñ{?1ô{?1¤|?1\}?1;~A1ñ{A1ô{A1¤|A1\}A1;~A1FC1ñ{C1ô{C1¤|C1\}C1;~C1FE1ñ{E1ô{E1¤|E1\}E1;~E1FG1ñ{G1ô{G1¤|G1\}G1;~G1FI1ñ{I1ô{I1¤|I1\}I1;~I1FK1ñ{K1ô{K1¤|K1\}K1;~K1FK1}€M1ñ{M1ô{M1¤|M1\}M1;~M1FM1}€O1ñ{O1ô{O1¤|O1\}O1;~O1FO1}€Q1ñ{Q1ô{Q1¤|Q1\}Q1;~Q1FQ1}€S1ñ{S1ô{S1¤|S1\}S1;~S1FS1}€U1†î0hN0§N0¬†0§†0¬„0§„0¬N0“!†0“!„0“!N0}%†0}%„0}%:1*<1*>1*„0+@1/B1/D1/F1/H1/J1Ø3L1Ø3N1Ø3P1Ø3R1Ø3î0j83…9=†:Aª:K <OF<Ss<î04@Ä-§Z-§\-§¡§T1§.§H!êE!êE!êE*!3F,!êE !êE.!êE4!3F:!3F(!êE0!.G2!3F!êE !êE&!êE$!êE!êE>!êE@!êEB!êEš0§š0¬x!êE|#,It#,IÄ-EIX!êE(#§x#§(#¬x#¬‚0¬J!êEp#,I@ §H §6 §J §L §P ~Ld §Z §.2MP UMT §R §\ §^ §` §d#³Mf#áM‚ §n §p §V §X §† §Š §¼ §Ž § §|#§t#§ê0áMˆ §~ §‚0^Oê!^Oæ!ðOê0ÚPê0§B#£SÂ#£SÐ!×SYh2'vh2'¶h (¿h&×h&óh¼i:'!i Rj¸€jÄ›jªkŒ2M¼!§(jo$2M&©o4©o82M:2M*2M,2ML2MT2M(ZrP2MZh¢h(þr sf2Mj…9j†:j <Nu(öu&'v(Yv(‚v(–v.2M 2MÏ2M §(cy(z(6z‚0Hz2M2M'2M)2Ml#Ÿ~,#2Mz#2M‹2MF#ƒ“2M•2M—2M™2M›2M2MŸ2M¥2M«2M­2M¯2M±2M·2M¹2M¿2MÅ2MÇ2MσՃϻƒÕ»ƒª'hH.†:^.T„P.†:óhùƒƒƒ.2M ƒƒ»ƒ»ƒ »ƒ»ƒ1ëˆI݉[݉ê0Ö‹x#2M` …9ä&…9` 2Mb ©o&2M(©o,2M.2MF#~‘F#“ 2M‚0Rjª"™B'RjB'ò™X'šÚ €jÖ!^OZ n¤Z 7§ ¥¨Ž <mµ2'¶d 2M:'“¸ö ªkº"ù:'Ö¹f €j6'ó»Ö!×SØ §Ø ¬d §p'ªk dæ( ÉæF (çd dèÚ çê( €jª'Hî “! “!Ÿ ¬‚0×S¾€j(#^Ox#^OÔ!^OøòD"=ó (€j¬"€j2'Žõh'žõš0^Oò!=óF#žö‚0=ó:'ùF#Iù‚0£S²êù"ìúø ìúÆ2MÐ!fýÒ .þ(#~þx#~þ(#—þx#—þ"£S2'Žÿ¶"—ÿ2'žö(#fýx#fý&)2' Ö!fýþ .þÐ&¥¨F#¹F#ÛF#.þV02MT02MX02MR02M‚02MÄ2MÐ2MÜ2MX.ëˆd.ëˆî2M 2M©oƒ¬ ¬ …9Z†:(ý'"B)²¸)²Ë)&Þ)&*(m*d·*j·*,·*p?+(‡+pœ+&´,$Ì,¼!å,:Ì,2M2Mh2MR§&È0,h h 2MB'®1ž§¤§¦§¨§.'?3ª§(©o*…9&‚v4Ò6&jo§(-;ô2M(Ð@$hê0¯Aø0¼Aò§òjBòoBT§$×C&ûCø§ü§§žüDx#Eâ!EüD$s{hd§&ÿG§$§&AH§*§§f§&JI:IJ<§>§ÖJŽ'TLŽ'ZLŽ'¬h§$E&wM$ïM&'N§§$4@ OËE&tO´€O&†OO&÷OóE&KP§&{P§§4Qê0 RP€jî0sî0Tî0ITî0}Tî0¯Tî0å,î0Uî09Uî0jUî0–Uî0ÇUî0úU¼&WÀ›j‚0aYB'2MN2M "=ó "eÔ!EfŠ"KfÄnfŠ"ªfÖ!€jÔ!=óŠ"êf‚0e.'€j‚0þf‚0g"Vg.'šh'ªkº"ïgÔ!£SL'£SÆ"£S2'»h^O&Ai&2MAi02M2^O "^O¤nf2'Gl¦¯mþ -n¦AoÄrœ"ÿtøRj Rj.'?v.'—vÔ!nfL'nf2'lwÐ!^O­€jÆnf2'VgH;z2'N{P^ON^O(^OÖsÖnfÖTÖITÖ}TÖ¯TÖå,ÖUÖ9UÖjUÖ–UÖÇUÖúUÖh¦?v¨Ao¨0~ž0à~†0à~ž05ž0^O†0^O†05„0^O„05Ö!nf¦nfB'…9º©o¾©oª"©oœ"1„ž0Rjž0€j†0Rj†0€jž0ež0=óž0þfž0gž0£Sž0×S†0e†0=ó†0þf†0g†0£S†0×S&¼†&ò†&(‡&\‡&†‡„0Ƈ„0Rj„0€j„0e„0=ó„0þf„0g„0£S„0×S´tˆ©o´Ôˆ ‰ =‰u‰1„"jo$jofhçî0ýŽî0î03†×Sê0{ê02M¬1„®ëˆB'×S°ëˆê0 <²ëˆM×S²Ж¾!jU8jUB'nf@2M>jUâ™þ×SD1›2'Œ›2'Ú›ê0äœ$×SµÑ¹á2'žj1›¹ bjUT! T& p×SbhT: Ó=ó2'X 2'j r1›2'q t×Sb×ST‚ ¢&×Sþ2MBhx2Mµפµã¤µ”¥Þ! ¬Ô!¬¬Ô!×S‘¿hœ"L®2'š®R©oT©oê0ø°ê0P±ê0º±"þf."þf"à²ú!&³ö \³"=ó."=ó6"Ì´N2MPFµNFµê0¬J 2ML 2MR 2MT 2MP 1„N ©oG…96 2M† 2MŠ 2MV 2MX 2Mn 2Mp 2M8 2M< 2M@ 2M> 2MB 2MD 2MF 2MH 2M=…9P ©o=2MZ 2M\ 2M^ 2M` 2Md 2Mb 2Mf 2Mj 2Mh 2Ml 2Mr 2Mx 2Mv 2Mt 2M€ 2M„ 2M¼!2Mˆ 2MŒ 2M"NÃz §| §t § ¬@ ¬!©o!©o&!©o(!©o*!ëˆ,!©o.!©o2!ëˆ6!`Æ4!ëˆF#ÞÆî ©oV#'ÇT#'ÇF!©o>!©o@!©o s !©o!©o!©o!©o!©o=s!©o!©o!©o !©o"!©o$!©o=h=³Í0!ëˆ6!ëˆOPÐ8!ëˆÑB!©oD!©oL!©oR!ZÓP!ZÓN!©oT!êEV!êEN!êE‚0…9F#qÕF#ÂÕP0¬–!2M•®Öª!2MŸª×ª!…9•IØ•…ØÆ!2MÈ!2MÊ!2Mx#|ÙÊ!…9z'2Mx'2Mè!2Mì!©oð!2Mô!©oø!©oü!©o"2M "2M¾!…9¾!2M$"1„""©o "îõjU˜&2MÓ2M$'©o&'2MÒ!2M."2M0"©o2"2Mv#2M>"2MB"2M"'2MH.2M^.äH.…9^.AäR0…9T0…9P.2MP.…9X'2M2'©o6'©o.'2M (2M|"©oP'2M\'2M„"2Mˆ"©oŒ"©oB' <"MèB'†:”"ëˆ:'눚"©oœ"î "©o¤"눨"©o¨"î®"©ox'…9²"눴"눸"©o<'2M>'2MÀ"©oL'2Md'2Mh'©ol'ëˆp'©ot'ëˆ|'2M*'©o,'2Mt#2Mâ"2Mæ"2MH'©ox#nf h }T¸$2M¸$…9$#2M&#©o¸%2M#h¸$†:>#îB#2M>#©o@#ëˆJ#AôN#ª:J#ôT#©oX#2MÆ$©oA…9õ2Mh#ØöF#©o`#ª:n#2M‚#2M†#2MŽ#2M&#ª×$#Ðû$#ýÈ%OÌ%§¥€ÿÆ%§º%êE¼%êE¾%ЖÂ%êE¶%§ò0]ò0€ÿR%§T%§ §ò0‡Š#§#§’#§–#§2#§2#YF#x*'êE,'§2#¬F#º$©oÂ$©oÀ$©o²%h´%p¸$pÆ$ø‚0§Ø%OÚ%§B'­ ´%§Â$êEÈ$§N%2MP%§N%§´%2M´%hŽ'2MÎ%2MÐ%…9Î&…9´%×S'§1§À%§Ä%§Ê%§Ò%§Ö%êEÐ%¬Î&¬²%§œ0§*0§ä&2Mæ&2M2Mè&2Mê&2MŸ'vê&…9ŸO'©o'©o'©o'©o.…9'1„.2M'¾.…9'ª×('©o('î'é0'1„#…94'1„8'`Æ@'2MD'…9F'©oJ'2MN'2MD'2MR'2MV'§T'2MZ'2M^'2M`'2Mb'2Mf'©oj'ëˆn'©or'ëˆv'2MŒ'2M~'2M„'2M‚'2M†'2MŠ'2M€'2Mˆ'2MP02Mª'2MX-2Mš02Mœ02MJ.2MÐ(2MÔ(1„()2M*)2M,)2M.)2M0)©o2)2M4)2M6)2M:)2M<)2M>)2M@)2MB)©oD)2MF)2MH)2MJ)2ML)2MN)2MP)©o)2M^.²)^.¸)j.²))2M12M 12M12M12M12M12Mõ…9–(§”(§R0§ï§Î(§T0§Ò(O$)&7&)ø7$)B9$)êE&)¸)^.ëˆV-§T-§1}%ß+åo? ÂB ÇB õB„02M†02MN02M*02M,02Mž02M.2MA 2MT.ëˆZ.ëˆ`.ëˆf.ëˆ.§.§P0§D.§F.§V.ЖT.Ж\.ЖZ.Жb.Ж`.Жh.Жf.Ж.0jUž0…9ž0†:ž0 <ž0ôN†0…9†0†:†0 <†0ôNN0…9N0†:N0 <N0ôN!2MN0µW†0µW„0…9„0†:„0 <„0ôN„0µWN0\†0\„0\W‰X‰u‰y‰Â¤Ã¤Å¤ÆYǤȤÉYˤ̤ͤÎYÏYÑYÒ¤Ó¤Ô¤ÕYפؤ٤ڤÜYÝYßYà¤âYã¤äYî¤ó¤ÅÅ#Å%Å'Å)ÅDYÒ=‰‰‰ ‰ ‰ ‰‰g‰j‰m‰r=‰âêf==ff‰ ‰£ŧŪÅ­ÅÅÅÈÅËÅÎÅ  <¤Q¤TYU¤V¤WYY¤`¤a¤bYcYeYf¤s¤t¤uYw¤²¤³¤´¤¶Y·Y¹Yº¤Y¤Y,¤0¤BYD¤JÅKÅLÅMÅNÅOÅPÅQÅRÅSÅTÅUÅVÅWÅXÅYÅZÅ[Å\Å]Å^Å_Å`ÅaÅbÅcÅdÅeÅfÅgÅhÅiÅjÅkÅlÅnÅpÅqÅrÅsÅtÅuÅwÅyÅzÅ{Å|Å}Å~ŀłŃńŅņŇʼnŋŌÅÅŽÅÅŒŔŕŖŗŘÅ«‰­‰¯‰²‰µ‰·‰¸‰º‰¼‰À‰æ=ò‰¤Y  – ‚"š Ø * Ú * Û =Ü Þ  ã ‰ú =ó =FSharp.Core.dllFSCore.resourcesSystemObjectmscorlibMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeCLIMutableAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeCustomOperationAttributeProjectionParameterAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributeFSharpChoice`2IEquatable`1System.CollectionsIStructuralEquatableIComparable`1IStructuralComparableTagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1IEnumerableSystem.Collections.GenericIEnumerable`1ListDebugView`1IObserver`1IObservable`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2SetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1EventDelegee`1EventWrapper`2FSharpEvent`2FSharpEvent`1Microsoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1Queue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncWaitHandleIAsyncResultIAsyncResultAsyncIAsyncResult`1Mailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1Microsoft.FSharp.Linq.RuntimeHelpersAnonymousObject`1AnonymousObject`2AnonymousObject`3AnonymousObject`4AnonymousObject`5AnonymousObject`6AnonymousObject`7AnonymousObject`8Grouping`2System.LinqIGrouping`2System.CoreMicrosoft.FSharp.LinqQuerySource`2QueryBuilderMicrosoft.FSharp.Data.UnitSystems.SI.UnitNamesmetrekilogramsecondamperekelvinmolecandelaMeasureProduct`2MeasureInverse`1MeasureOneTypeProviderAttributeTypeProviderAssemblyAttributeTypeProviderXmlDocAttributeTypeProviderDefinitionLocationAttributeTypeProviderEditorHideMethodsAttributeTypeProviderTypeAttributesTypeProviderConfigIProvidedNamespaceITypeProviderMicrosoft.BuildSettingsBuildDetailsVersion$AssemblyAttributesExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45$Fslib-extra-pervasives$SIMicrosoft.FSharp.Linq.QueryRunExtensionsHighPriorityLowPriorityQueryModule|SpecificCall1|_|@227Tuple`3Type|SpecificCall2|_|@234Tuple`4|SpecificCall3|_|@241Tuple`5restoreTupleProjections@262-1restoreTupleProjections@262Tuple`2CallGenericStaticMethod@280CallGenericInstanceMethod@289MakeGenericStaticMethod@304MakeGenericInstanceMethod@308MakersCallersInstance@350MakersCallersInstance@350-1MakeOrCallContainsOrElementAt@367MakeOrCallContainsOrElementAt@367-1MakeOrCallMinByOrMaxBy@399MakeOrCallMinByOrMaxBy@399-1Tuple`7MakeOrCallAnyOrAllOrFirstFind@443MakeOrCallAnyOrAllOrFirstFind@443-1MakeOrCallAverageByOrSumByGeneric@550MakeOrCallAverageByOrSumByGeneric@550-1Tuple`8Tuple`1Call@616-5Call@616-5TMakeOrCallSimpleOp@618MakeOrCallSimpleOp@618-1CanEliminateMakeSelect@640MakeAppend@661MakeAsQueryable@669MakeEnumerableEmpty@674MakeSelectMany@684MakeWhere@701MakeOrderByOrThenBy@713GenMakeSkipWhileOrTakeWhile@752MakeSkipOrTake@765MakeDistinct@790MakeGroupBy@799MakeGroupValBy@813MakeJoin@843MakeGroupJoin@861walk@876-2walk@877-3|LetExprReduction|_|@890|MacroReduction|_|@898tab@899|MacroReduction|_|@900-1tab@909-1|MacroReduction|_|@910-2|MacroReduction|_|@929-3MacroExpand@937ConvMutableToImmutable@1014ConvMutableToImmutable@1016-1mutConsumingExprBeforeSimplification@1072TransInnerResultSelectOtherSourceSelect@DebugTypeProxyOther@DebugTypeProxySource@DebugTypeProxyTransFor@1162-1TransInner@1220TransInner@1309-1TransInner@1330-2TransInner@1342-3immutElementSelector@1350TransInner@1357-4TransJoinInputs@1451TransJoinInputs@1453-1EliminateNestedQueries@1604Helpers$QueryFor@60Where@70Exists@77All@78SkipWhile@83-1TakeWhile@85-1Find@86MinBy@90MaxBy@93MinByNullable@96MaxByNullable@99AverageBy@156GroupBy@168-4SortBy@171-1SortByDescending@174ThenBy@177ThenByDescending@180SortByNullable@183SortByNullableDescending@186ThenByNullable@189ThenByNullableDescending@192GroupValBy@195GroupValBy@195-1Join@202Join@202-1Join@202-2GroupJoin@205GroupJoin@205-1GroupJoin@205-2LeftOuterJoin@208LeftOuterJoin@208-1LeftOuterJoin@208-2Adaptersd@46IEqualityComparer`1memoize@47isPartiallyImmutableRecord@70-1System.ReflectionPropertyInfoisPartiallyImmutableRecord@68typ@154-1typ@154RewriteTupleType@192|RecordFieldGetSimplification|_|@198ConversionDescriptionTupleConvRecordConvGroupingConvSeqConvTupleConv@DebugTypeProxyRecordConv@DebugTypeProxyGroupingConv@DebugTypeProxySeqConv@DebugTypeProxyConvImmutableTypeToMutableType@223ConvImmutableTypeToMutableType@223-1ConvImmutableTypeToMutableType@225-2ConvImmutableTypeToMutableType@225-3types@228-1types@228IsNewAnonymousObjectHelperQ@249expr@261-1CleanupLeaf@271e@286ProduceMoreMutables@302ProduceMoreMutables@307-1$QueryExtensions$MutableTupleLeafExpressionConverterConvEnvSubstHelper@198-1SubstHelper@198|SpecificCallToMethod|_|@208bindings@462-1System.Linq.ExpressionsMemberBindingbindings@462ConvExprToLinqInContext@477-1MemberInfoConvExprToLinqInContext@477ConvExprToLinqInContext@485-2ExpressionBinaryExpressionConvExprToLinqInContext@486-3ConvExprToLinqInContext@487-4ConvExprToLinqInContext@488-5ConvExprToLinqInContext@489-6ConvExprToLinqInContext@490-7ConvExprToLinqInContext@493-8ConvExprToLinqInContext@494-9ConvExprToLinqInContext@495-10ConvExprToLinqInContext@496-11ConvExprToLinqInContext@497-12ConvExprToLinqInContext@498-13ConvExprToLinqInContext@500-14ConvExprToLinqInContext@501-15ConvExprToLinqInContext@502-16ConvExprToLinqInContext@503-17ConvExprToLinqInContext@504-18ConvExprToLinqInContext@505-19ConvExprToLinqInContext@507-20ConvExprToLinqInContext@508-21ConvExprToLinqInContext@509-22ConvExprToLinqInContext@510-23ConvExprToLinqInContext@511-24ConvExprToLinqInContext@512-25ConvExprToLinqInContext@538-26ConvExprToLinqInContext@539-27ConvExprToLinqInContext@540-28ConvExprToLinqInContext@542-29ConvExprToLinqInContext@543-30ConvExprToLinqInContext@544-31ConvExprToLinqInContext@546-32ConvExprToLinqInContext@547-33ConvExprToLinqInContext@548-34ConvExprToLinqInContext@550-35ConvExprToLinqInContext@551-36ConvExprToLinqInContext@552-37ConvExprToLinqInContext@554-38ConvExprToLinqInContext@555-39ConvExprToLinqInContext@556-40meth@620MethodInfometh@632-1meth@643-2vsP@695ParameterExpressionenv@696-1env@696tupTy@701ConvExprToLinqInContext@719-42ConvExprToLinqInContext@719-41ConvExprToLinqInContext@720-44ConvExprToLinqInContext@720-43ConvExprsToLinq@769NullableModuleNullableOperators$LinqObservableModuleBasicObserver`1Map@2484-6Map@2482-5Choose@2494-3Choose@2492-2Filter@2502-2Partition@2506-1Scan@2514-5Scan@2511-4Pairwise@2535-3Pairwise@2532-2h1@2553h2@2568Merge@2583-3Merge@2547-2Split@2590-1Split@2591-2EventModuleMap@2373-4Filter@2379-1Partition@2386Choose@2392-1Scan@2399-3Pairwise@2413-1Merge@2424Merge@2425-1Split@2432AsyncHelpersstart@2012-3start@2013-4start@2014-5OperationCanceledExceptionawaitEither@2017-2awaitEither@2018-3awaitEither@2020-4awaitEither@2010-1System.ThreadingCancellationTokenawaitEither@2008timeout@2024timeout@2028-1timeout@2029-2timeout@2029-3WebExtensionsAsyncGetResponse@1959-1System.NetWebResponseAsyncGetResponse@1962-3AsyncCallbackAsyncGetResponse@1963-4AsyncGetResponse@1964-5AsyncGetResponse@1962-2AsyncGetResponse@1958CommonExtensionsAsyncRead@1913AsyncRead@1913-1AsyncReadBytes@1919-1AsyncReadBytes@1921-3AsyncReadBytes@1920-2AsyncReadBytes@1924-4AsyncReadBytes@1917AsyncWrite@1930AsyncWrite@1930-1SubscribeToObservable@1943AsBeginEndHelperscont@1734-3econt@1735-4ccont@1736-6CancellationTokenOpsRunSynchronously@1165RunSynchronously@1166-1RunSynchronously@1167-2Start@1191Start@1192-1Start@1193-2StartWithContinuations@1198StartWithContinuations@1198-1StartWithContinuations@1198-2VolatileBarrierreg@1222a@1230-1a@1233-3a@1231-2a@1230AsyncImplswitchTo@886-1switchTo@885switchToNewThread@891-1switchToNewThread@890switchToThreadPool@895-1switchToThreadPool@894delimitSyncContext@931-1delimitSyncContext@931delimitSyncContext@933-3delimitSyncContext@933-2delimitSyncContext@934-5delimitSyncContext@934-4protectedPrimitiveWithResync@943unprotectedPrimitiveWithResync@948LatchOnceSuspendedAsync`1action@979ContinueWithPostOrQueue@997ResultCell`1RegisterResult@1087get_AwaitResult@1092AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxystartAsync@687queueAsync@691protectedPrimitive@721reify@724resultA@739-1resultA@735args@753bindA@760-1bindA@747callA@773-1callA@773-2callA@769cont@791-1cont@791-2cont@791econt@794-1econt@794-2econt@794ccont@797-1ccont@797-2ccont@797tryFinallyA@784econt@807-3tryWithA@803ccont@818-4ccont@818-5ccont@818-3whenCancelledA@817getCancellationToken@822usingA@833whileA@841forA@849-1forA@850-2forA@847sequentialA@854$Control-ctor@467-ctor@476-1once@1266-2once@1269-3once@1271-4once@1264-1FromContinuations@1255Catch@1293-1Catch@1293-2Catch@1292StartChildAsTask@1315-1System.Threading.TasksTask`1StartChildAsTask@1314finishTask@1345-1finishTask@1344-2finishTask@1343-3Parallel@1380-3Parallel@1382-4Parallel@1384-5Parallel@1376-2Parallel@1328-1Parallel@1320StartImmediate@1412StartImmediate@1412-1StartImmediate@1412-2registration@1427-1registration@1422Sleep@1447-2Sleep@1432-1Sleep@1415AwaitWaitHandle@1461cancel@1486-1cancel@1484-2registration@1489-2AwaitWaitHandle@1500-3AwaitWaitHandle@1497-2AwaitWaitHandle@1511-4AwaitWaitHandle@1516-5AwaitWaitHandle@1474-1AwaitIAsyncResult@1564ReifyResult@1572AwaitAndReifyResult@1582-1AwaitAndReifyResult@1581AsyncWaitAsyncWithTimeout@1616-1AsyncWaitAsyncWithTimeout@1614-4AsyncWaitAsyncWithTimeout@1607-3AsyncWaitAsyncWithTimeout@1603-2AsyncWaitAsyncWithTimeout@1602AsyncWaitAsyncWithTimeout@1597-5onCancel@1631-1registration@1639-3callback@1649-1callback@1641FromBeginEnd@1621-1FromBeginEnd@1620FromBeginEnd@1668-2FromBeginEnd@1672-3FromBeginEnd@1675-4beginAction@1772-1AsBeginEnd@1773AsBeginEnd@1773-1onCancel@1791-3AwaitEvent@1796-5AwaitEvent@1782-2CancellationTokenRegistrationAwaitEvent@1803-7AwaitEvent@1799-6AwaitEvent@1798-3AwaitEvent@1808-4AwaitEvent@1779-1AwaitEvent@1778Ignore@1824reg@1837-1StartChild@1845-2StartChild@1846-3StartChild@1847-4StartChild@1834-1StartChild@1832SwitchToContext@1861-1SwitchToContext@1858handler@1872OnCancel@1876-3OnCancel@1876-2OnCancel@1877-4OnCancel@1870-1OnCancel@1868continuation@1892-1AwaitTask@1899-1AwaitTask@1890-ctor@2054-2Post@2146scan@2179-2scan@2154-3scan@2150-1scanNoTimeout@2190-2scanNoTimeout@2184-3scanNoTimeout@2182-1TryScan@2203-1TryScan@2198-2TryScan@2194Scan@2209-2Scan@2208-1processFirstArrival@2220-2processFirstArrival@2216-1TryReceive@2224processFirstArrival@2235-5processFirstArrival@2231-4Receive@2239p@2287-1p@2288-3p@2288-2p@2287msg@2299msg@2314-1PostAndTryAsyncReply@2328-2PostAndTryAsyncReply@2327-1PostAndTryAsyncReply@2326PostAndTryAsyncReply@2322-4PostAndTryAsyncReply@2321-3PostAndAsyncReply@2343-1PostAndAsyncReply@2342msg@2337-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1731ApplicationsPattern@1733SpecificCallPattern@1751SpecificCallPattern@1757-1PatternsModuleByteStreamLetRecursivePattern@478getRecordProperty@488getUnionCaseInfo@494checkArgs@589ParameterInfomkNewTupleWithType@661mkNewRecord@678mkNewUnionCase@687mkNewArray@702dlfun@809mkLetRec@831mkLetRec@833-1typesEqual@842instFormal@844methInfos@856argTs@867haveArgTs@873select@864argTs@888-1inst@931mkNamedTycon@1101u_tyconstSpec@1125u_tyconstSpec@1126-1u_tyconstSpec@1127-2appL@1130u_dtype@1135u_dtype@1136-1u_dtype@1136-2u_dtype@1136-3u_dtypes@1139u_dtypes@1139-1BindingEnvenvClosed@1156u_Expr@1163u_Expr@1163-1u_Expr@1166-3u_Expr@1164-2u_Expr@1168-4u_Expr@1171-5u_Expr@1174-6u_Expr@1176-7attrs@1178u_Expr@1179-9u_Expr@1179-8u_Expr@1181-10u_VarDecl@1185u_VarRef@1188u_RecdField@1191u_UnionCaseInfo@1194u_UnionCaseField@1198u_MethodInfoData@1206u_MethodInfoData@1206-1u_constSpec@1289u_constSpec@1289-1u_constSpec@1267-2u_constSpec@1268-3u_constSpec@1269-4u_constSpec@1270-5u_constSpec@1271-6u_constSpec@1272-7u_constSpec@1273-8u_constSpec@1274-9u_constSpec@1275-10u_constSpec@1276-11u_constSpec@1277-12u_constSpec@1278-13u_constSpec@1279-14u_constSpec@1280-15u_constSpec@1281-16u_constSpec@1282-17u_constSpec@1283-18u_constSpec@1284-19u_constSpec@1285-20u_constSpec@1286-21u_constSpec@1287-22u_constSpec@1288-23u_constSpec@1251-24u_constSpec@1252-25u_constSpec@1253-26u_constSpec@1254-27u_constSpec@1255-28u_constSpec@1256-29u_constSpec@1257-30u_constSpec@1258-31u_constSpec@1259-32u_constSpec@1260-33u_constSpec@1261-34u_constSpec@1262-35u_constSpec@1263-36u_constSpec@1264-37u_constSpec@1265-38u_constSpec@1266-39u_constSpec@1236-40u_constSpec@1237-41u_constSpec@1242-42u_constSpec@1243-43u_constSpec@1244-44u_constSpec@1245-45u_constSpec@1246-46u_constSpec@1247-47u_constSpec@1248-48u_constSpec@1249-49u_ReflectedDefinition@1290MethodBaseu_ReflectedDefinitions@1291unpickleExpr@1293unpickleExpr@1293-1unpickleReflectedDefns@1295fillHolesInRawExpr@1307freeInExprAcc@1318mkTyparSubst@1333Clashsubstargs@1345substituteInExpr@1361decodedTopResources@1378AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1418registerReflectedDefinitions@1422qdataResources@1456qdataResources@1452-1data@1465-1data@1464SimpleUnpickleInputStatephase2data@1075phase2data@1075-1mkRLinear@51mkLLinear@52$Quotationsexpr@204pairL@207varL@214|Lambda|_|@216-1|NLambdas|_|@224-1GetLayout@273Applications@1528NewDelegate@1593PrintfModulePrintFormatToStringThen@574-1PrintFormatToStringThen@573-2PrintFormatToStringThen@575-3PrintFormatToStringThen@572kprintf_imperative@584-1kprintf_imperative@584PrintFormatToStringBuilderThen@589PrintFormatToTextWriterThen@592PrintFormatToStringThen@595-4PrintFormatToStringThenFail@598PrintFormatToStringBuilder@601PrintFormatToTextWriter@604PrintFormatLineToTextWriter@607PrintfImplPrintfInfobuildFunctionForOneArgPat@212buildFunctionForTwoArgPat@220-1buildFunctionForTwoArgPat@219buildFunctionForOneFunArgPat@226captureCoreArgs@312-1captureCoreArgs@329-2captureCoreArgs@314-3captureCoreArgs@313-4captureCoreArgs@331-5captureCoreArgs@330-6captureCoreArgs@327-7captureCoreArgs@321-8captureCoreArgs@323-9captureCoreArgs@322-10captureCoreArgs@324-11captureCoreArgs@332-12captureCoreArgs@315-13captureCoreArgs@328-14captureCoreArgs@333-15capturePrecisionArg@340-1capture1@344gprintf@514capture@540-1$PrintfDisplayBreaksitemL@667itemL@680-1PrecedenceShowModestopShort@788-1res@828objL@791-1recdAtomicTupleL@879-3recdAtomicTupleL@879-2recdAtomicTupleL@879-1recdAtomicTupleL@880-6recdAtomicTupleL@880-5recdAtomicTupleL@880-4recdAtomicTupleL@880-7objL@791-2bracketIfL@882-1project@956project2@965-1rowL@967project1@968possibleKeyValueL@986-4possibleKeyValueL@986-3possibleKeyValueL@986-2possibleKeyValueL@989-7possibleKeyValueL@989-6possibleKeyValueL@989-5possibleKeyValueL@982-1itemLs@992reprL@1002-1itemLs@1008-1reprL@1037-2IComparer`1reprL@1045-3itemL@895-6itemL@895-5itemL@895-4itemL@894-3project@903-2leafFormatter@1090squash_layout@1134output_layout@1138layout_to_string@1142ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@354pvals@360-1LayoutOpsjoin@146join1@147join2@148join3@149op_AtAt@160op_AtAtMinus@161op_AtAtMinusMinus@162commaListL@172semiListL@173spaceListL@174sepListL@175aboveListL@181unfoldL@207$Sformatget_Default@242NumericLiteralsNumericLiteralI$Z$N$Eventget_Publish@36-cctor@47-173mi@100get_Publish@144-2get_Publish@131-1h@171-1get_Publish@173-4get_Publish@161-3ImplgetInstancePropertyReader@69getUnionTypeTagNameMap@199FieldInfogetUnionTypeTagNameMap@198-1getUnionTypeTagNameMap@180-2tagField@204getUnionTagConverter@216getUnionTagConverter@217-1getUnionTagConverter@220-2fieldsPropsOfUnionCase@266fieldsPropsOfUnionCase@265-1fieldsPropsOfUnionCase@264-2getUnionCaseRecordReader@272getUnionTagReader@278getUnionTagReader@282-1getUnionTagReader@287-2getUnionTagReader@285-3getUnionCaseConstructor@320orderTupleProperties@408getTupleCtor@436reader@447-1getTupleReader@453getTupleConstructor@466fieldPropsOfRecordType@532fieldPropsOfRecordType@531-1getRecordReader@542getRecordConstructor@558$ReflectMakeTupleType@681GetUnionCases@704Invoke@720-4PreComputeRecordFieldReader@746SetModuleSetTreeModulesubset@270psubset@272psubset@272-1SetIterator`1mkIEnumerator@426-1copyToArray@485-1ofArray@504$SetFold@603Map@623-3Union@660Intersection@663MapModuleToSeq@714FindKey@717TryFindKey@720MapTreeModuleofList@321copyToArray@346MapIterator`2mkIEnumerator@394$MapSystem-Collections-Generic-IDictionary-2-get_Keys@587-1System-Collections-Generic-IDictionary-2-get_Keys@587System-Collections-Generic-IDictionary-2-get_Values@590-1System-Collections-Generic-IDictionary-2-get_Values@590System-IComparable-CompareTo@611Array4DModuleArray3DModule$Array3ArrayModule$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@835mkUnfoldSeq@836InitializeInfinite@848Initialize@853revamp@907revamp2@909Filter@914Map@922-1MapIndexed@927-1Map2@933Choose@938Zip@944Zip3@951Cast@956Take@997fromGenerator@1053Append@1061-1Append@1061OfArray@1106Singleton@1124Truncate@1130Pairwise@1139Scan@1150Windowed@1190result@1235cleanup@1249ReadOnly@1262GroupBy@1274-1GroupBy@1285-2List`1GroupBy@1289-3GroupBy@1269Distinct@1295DistinctBy@1306SortBy@1316Sort@1324CountBy@1336-1CountBy@1343-2CountBy@1332TakeWhile@1485Skip@1493SkipWhile@1503RuntimeHelpersStructBox`1ValueTypegcomparer@532get_Comparer@533mkSeq@543EmptyEnumerable`1Generate@557EnumerateFromFunctions@565EnumerateFromFunctions@566-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@696EnumerateUsing@697-1mkConcatSeq@700EnumerateWhile@713-1EnumerateWhile@712EnumerateThenFinally@729-1h@742CreateEvent@744-1CreateEvent@734GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@403Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@386EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@496-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@501cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@156filter@173unfold@190getCurrent@225-1upto@229generateWhileSome@265ArrayEnumerator`1Singleton`1EnumerateThenFinally@322$SeqMoveNextImpl@773ComparisonIdentityFromFunction@48HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@114MapIndexed@119Copy@124Rebase@131$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsCreate@5699CreateFromValue@5704Operatorsop_ComposeRight@3580op_ComposeLeft@3582op_Range@5367op_RangeStep@5383PowInteger@5529PowInteger@5529-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4819RangeInt32@4819-1RangeInt32@4819-2RangeInt64@4820RangeInt64@4820-1RangeInt64@4820-2RangeUInt64@4821RangeUInt64@4821-1RangeUInt64@4821-2RangeUInt32@4822RangeUInt32@4822-1RangeUInt32@4822-2RangeIntPtr@4823RangeIntPtr@4823-1RangeIntPtr@4823-2RangeUIntPtr@4824RangeUIntPtr@4824-1RangeUIntPtr@4824-2RangeInt16@4825RangeInt16@4825-1RangeInt16@4825-2RangeUInt16@4826RangeUInt16@4826-1RangeUInt16@4826-2RangeSByte@4827RangeSByte@4827-1RangeSByte@4827-2RangeByte@4828RangeByte@4828-1RangeByte@4828-2RangeDouble@4829RangeDouble@4829-1RangeDouble@4829-2RangeSingle@4830RangeSingle@4830-1RangeSingle@4830-2RangeGeneric@4831RangeGeneric@4831-1RangeStepGeneric@4832RangeStepGeneric@4832-1RangeChar@4834RangeChar@4834-1UnaryDynamicImpl@5130BinaryDynamicImpl@5136AbsDynamicImplTable`1-cctor@5142-61-cctor@5142-62-cctor@5143-63-cctor@5143-64-cctor@5144-65-cctor@5144-66-cctor@5145-67-cctor@5145-68-cctor@5146-69-cctor@5146-70-cctor@5147-71-cctor@5147-72-cctor@5148-73-cctor@5148-74-cctor@5149-75Decimal-cctor@5149-76AcosDynamicImplTable`1-cctor@5157-77-cctor@5157-78-cctor@5158-79-cctor@5158-80AsinDynamicImplTable`1-cctor@5166-81-cctor@5166-82-cctor@5167-83-cctor@5167-84AtanDynamicImplTable`1-cctor@5175-85-cctor@5175-86-cctor@5176-87-cctor@5176-88Atan2DynamicImplTable`2-cctor@5184-89-cctor@5184-91-cctor@5184-90-cctor@5185-92-cctor@5185-94-cctor@5185-93CeilingDynamicImplTable`1-cctor@5193-95-cctor@5193-96-cctor@5194-97-cctor@5194-98ExpDynamicImplTable`1-cctor@5202-99-cctor@5202-100-cctor@5203-101-cctor@5203-102FloorDynamicImplTable`1-cctor@5211-103-cctor@5211-104-cctor@5212-105-cctor@5212-106TruncateDynamicImplTable`1-cctor@5220-107-cctor@5220-108-cctor@5221-109-cctor@5221-110RoundDynamicImplTable`1-cctor@5229-111-cctor@5229-112-cctor@5230-113-cctor@5230-114SignDynamicImplTable`1-cctor@5238-115-cctor@5238-116-cctor@5239-117-cctor@5239-118-cctor@5240-119-cctor@5240-120-cctor@5241-121-cctor@5241-122-cctor@5242-123-cctor@5242-124-cctor@5243-125-cctor@5243-126-cctor@5244-127-cctor@5244-128-cctor@5245-129-cctor@5245-130LogDynamicImplTable`1-cctor@5253-131-cctor@5253-132-cctor@5254-133-cctor@5254-134Log10DynamicImplTable`1-cctor@5262-135-cctor@5262-136-cctor@5263-137-cctor@5263-138SqrtDynamicImplTable`2-cctor@5271-139-cctor@5271-140-cctor@5272-141-cctor@5272-142CosDynamicImplTable`1-cctor@5280-143-cctor@5280-144-cctor@5281-145-cctor@5281-146CoshDynamicImplTable`1-cctor@5289-147-cctor@5289-148-cctor@5290-149-cctor@5290-150SinDynamicImplTable`1-cctor@5298-151-cctor@5298-152-cctor@5299-153-cctor@5299-154SinhDynamicImplTable`1-cctor@5307-155-cctor@5307-156-cctor@5308-157-cctor@5308-158TanDynamicImplTable`1-cctor@5316-159-cctor@5316-160-cctor@5317-161-cctor@5317-162TanhDynamicImplTable`1-cctor@5325-163-cctor@5325-164-cctor@5326-165-cctor@5326-166PowDynamicImplTable`2-cctor@5334-167-cctor@5334-169-cctor@5334-168-cctor@5335-170-cctor@5335-172-cctor@5335-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@3000Adapt@3006FSharpFunc`4Invoke@3013-1Adapt@3021-1Adapt@3024-2FSharpFunc`5Adapt@3038-3Adapt@3043-4Adapt@3046-5Invoke@3048-2FSharpFunc`6Invoke@3054-3Adapt@3063-6Adapt@3068-7Adapt@3073-8Adapt@3076-9LanguagePrimitivesFastGenericEqualityComparer@2092FastLimitedGenericEqualityComparer@2093CharComparer@2099StringComparer@2100SByteComparer@2101Int16Comparer@2102Int32Comparer@2103Int64Comparer@2104IntPtrComparer@2105ByteComparer@2106UInt16Comparer@2107UInt32Comparer@2108UInt64Comparer@2109UIntPtrComparer@2110FloatComparer@2111Float32Comparer@2112DecimalComparer@2113FastGenericComparerTable`1-cctor@2150-cctor@2173-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2417-2-cctor@2418-3-cctor@2419-4-cctor@2423-5-cctor@2422-7-cctor@2422-6AdditionDynamicImplTable`3dyn@2451-2dyn@2451-1dyn@2450-3dyn@2449-5dyn@2449-4-cctor@2454-8-cctor@2455-9-cctor@2456-10-cctor@2457-11-cctor@2458-12-cctor@2459-13-cctor@2460-14-cctor@2461-15-cctor@2462-16-cctor@2463-17-cctor@2464-18-cctor@2465-19-cctor@2466-20CheckedAdditionDynamicImplTable`3dyn@2488-8dyn@2488-7dyn@2487-9dyn@2486-11dyn@2486-10-cctor@2491-21-cctor@2492-22-cctor@2493-23-cctor@2494-24-cctor@2495-25-cctor@2496-26-cctor@2497-27-cctor@2498-28-cctor@2499-29-cctor@2500-30-cctor@2501-31-cctor@2502-32-cctor@2503-33-cctor@2504-34MultiplyDynamicImplTable`3dyn@2528-14dyn@2528-13dyn@2527-15dyn@2526-17dyn@2526-16-cctor@2531-35-cctor@2532-36-cctor@2533-37-cctor@2534-38-cctor@2535-39-cctor@2536-40-cctor@2537-41-cctor@2538-42-cctor@2539-43-cctor@2540-44-cctor@2541-45-cctor@2542-46-cctor@2543-47CheckedMultiplyDynamicImplTable`3dyn@2565-20dyn@2565-19dyn@2564-21dyn@2563-23dyn@2563-22-cctor@2568-48-cctor@2569-49-cctor@2570-50-cctor@2571-51-cctor@2572-52-cctor@2573-53-cctor@2574-54-cctor@2575-55-cctor@2576-56-cctor@2577-57-cctor@2578-58-cctor@2579-59-cctor@2580-60HashCompareGenericComparerIComparerfsEqualityComparer@1619IEqualityComparerfsEqualityComparerER@1624CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperationsICloneableExtensions$Prim-typesToFSharpFunc@3125FuncFromTupled@3130FuncFromTupled@3131-1FuncFromTupled@3132-2FuncFromTupled@3133-3SR$Sr$Prim-types-preludeFSharp.CoreCLSCompliantAttribute.ctorAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyDefaultAliasAttributeAssemblyCompanyAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeAssemblyInformationalVersionAttributeSystem.ResourcesSatelliteContractVersionAttributeNeutralResourcesLanguageAttributeAssemblyDelaySignAttributeAssemblyKeyFileAttributeSystem.Runtime.CompilerServicesRuntimeCompatibilityAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesGetHashCodeEqualsobjSystem-IComparable-CompareTo_objCompareTovalue__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueget_ValueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageget_MessageCountscountsCloneget_CountsNameAllowIntoPatternIsLikeZipIsLikeJoinIsLikeGroupJoinJoinConditionWordMaintainsVariableSpaceMaintainsVariableSpaceUsingBindnameisBinaryallowIntoisJoinisGroupJoinmaintainsVarSpacemaintainsVarSpaceWithBindjoinOnWordget_Nameget_AllowIntoPatternset_AllowIntoPatternvget_IsLikeZipset_IsLikeZipget_IsLikeJoinset_IsLikeJoinget_IsLikeGroupJoinset_IsLikeGroupJoinget_JoinConditionWordset_JoinConditionWordget_MaintainsVariableSpaceset_MaintainsVariableSpaceget_MaintainsVariableSpaceUsingBindset_MaintainsVariableSpaceUsingBindMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorget_IsHiddenset_IsHiddenPathpathget_PathTagCompilerGeneratedAttributeDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsChoice1Of2IsChoice2Of2NewChoice1Of2itemget_IsChoice1Of2NewChoice2Of2get_IsChoice2Of2get_TagcompT1T2Itemget_ItemDebuggerTypeProxyAttributeIsChoice1Of3IsChoice2Of3IsChoice3Of3NewChoice1Of3get_IsChoice1Of3NewChoice2Of3get_IsChoice2Of3NewChoice3Of3get_IsChoice3Of3T3IsChoice1Of4IsChoice2Of4IsChoice3Of4IsChoice4Of4_tagNewChoice1Of4get_IsChoice1Of4NewChoice2Of4get_IsChoice2Of4NewChoice3Of4get_IsChoice3Of4NewChoice4Of4get_IsChoice4Of4T4IsChoice1Of5IsChoice2Of5IsChoice3Of5IsChoice4Of5IsChoice5Of5NewChoice1Of5get_IsChoice1Of5NewChoice2Of5get_IsChoice2Of5NewChoice3Of5get_IsChoice3Of5NewChoice4Of5get_IsChoice4Of5NewChoice5Of5get_IsChoice5Of5T5IsChoice1Of6IsChoice2Of6IsChoice3Of6IsChoice4Of6IsChoice5Of6IsChoice6Of6NewChoice1Of6get_IsChoice1Of6NewChoice2Of6get_IsChoice2Of6NewChoice3Of6get_IsChoice3Of6NewChoice4Of6get_IsChoice4Of6NewChoice5Of6get_IsChoice5Of6NewChoice6Of6get_IsChoice6Of6T6IsChoice1Of7IsChoice2Of7IsChoice3Of7IsChoice4Of7IsChoice5Of7IsChoice6Of7IsChoice7Of7NewChoice1Of7get_IsChoice1Of7NewChoice2Of7get_IsChoice2Of7NewChoice3Of7get_IsChoice3Of7NewChoice4Of7get_IsChoice4Of7NewChoice5Of7get_IsChoice5Of7NewChoice6Of7get_IsChoice6Of7NewChoice7Of7get_IsChoice7Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2System.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2StringSystem.GlobalizationCultureInfoget_CurrentUICultureResourceManagerGetStringSpecializeTInvokefuncInvokeFastarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValueDebuggerDisplayAttributeIsNoneIsSomeget_NoneSomeGetTagget_IsNoneget_IsSomeConcatToStringEmptyIsEmptyIsConsHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Empty.cctorget_Emptyget_IsEmptyConsget_IsConsget_HeadOrDefaultget_TailOrNullget_LengthInt32get_DebugDisplayInvalidOperationExceptionget_Headget_TailindexSystem.TextStringBuilderAppendSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeItemslListDebugViewMaxLengthcountget_ItemsnaOnNextOnErrorerrorOnCompletedSubscribeobserverAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetDisposeMoveNextResetget_CurrentrescleanupClearMapEmptyget_MapEmptyNewMapOneitem1item2NewMapNodeitem3item4item5TKeyTValueItem1Item2get_Item1get_Item2Item3Item4Item5get_Item3get_Item4get_Item5ComparerCounttreecompareremptyCreateieelementsget_Comparerget_TreeAddkeyTryPickfExistsFilterForAllAdaptFoldaccFoldSectionlohizIterateMapRangebMapPartitionget_CountContainsKeyRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemxSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarriSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_ItemSetEmptyget_SetEmptyNewSetNodeNewSetOneChooseMinimumElementMaximumElementop_Subtractionset1set2op_AdditionIntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayDeclaringTypetyptagnamesget_DeclaringTypeGetFieldsGetCustomAttributesattributeTypegetMethInfoArgumentNullExceptionIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameget_IsGenericTypeGetGenericTypeDefinitionActivatorCreateInstanceMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderexnPublishmulticastDelegateDynamicInvokeTriggerget_PublishmakeTuple_sendercdeinvokerinvokeInfoGetMethodGetParametersget_ParameterTypeCreateDelegateGetMethodsget_IsGenericMethodDefinitionMakeGenericMethodargUnbreakableIsUnbreakableIsBreakableIsBroken_unique_Unbreakableget_Unbreakableget_IsUnbreakableNewBreakableget_IsBreakableNewBrokenget_IsBrokenIsLeafIsNodeIsAttrNewLeafget_IsLeafNewNodeitem6get_IsNodeNewAttrget_IsAttrItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderIFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_InvariantCultureget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsDictionary`2stampisMutable@90MonitorEnterExitisMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_AssemblyIsCombTermIsVarTermIsLambdaTermIsHoleTermNewCombTermget_IsCombTermNewVarTermget_IsVarTermNewLambdaTermget_IsLambdaTermNewHoleTermget_IsHoleTermAppOpIsAppOpIfThenElseOpIsIfThenElseOpLetRecOpIsLetRecOpLetRecCombOpIsLetRecCombOpLetOpIsLetOpIsNewRecordOpIsNewUnionCaseOpIsUnionCaseTestOpIsNewTupleOpIsTupleGetOpIsInstancePropGetOpIsStaticPropGetOpIsInstancePropSetOpIsStaticPropSetOpIsInstanceFieldGetOpIsStaticFieldGetOpIsInstanceFieldSetOpIsStaticFieldSetOpIsNewObjectOpIsInstanceMethodCallOpIsStaticMethodCallOpIsCoerceOpIsNewArrayOpIsNewDelegateOpQuoteOpIsQuoteOpSequentialOpIsSequentialOpAddressOfOpIsAddressOfOpVarSetOpIsVarSetOpAddressSetOpIsAddressSetOpIsTypeTestOpTryWithOpIsTryWithOpTryFinallyOpIsTryFinallyOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpWhileLoopOpIsWhileLoopOpIsValueOpIsDefaultValueOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpget_AppOpget_IsAppOpget_IfThenElseOpget_IsIfThenElseOpget_LetRecOpget_IsLetRecOpget_LetRecCombOpget_IsLetRecCombOpget_LetOpget_IsLetOpNewNewRecordOpget_IsNewRecordOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewTupleOpget_IsNewTupleOpNewTupleGetOpget_IsTupleGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewNewObjectOpget_IsNewObjectOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewCoerceOpget_IsCoerceOpNewNewArrayOpget_IsNewArrayOpNewNewDelegateOpget_IsNewDelegateOpget_QuoteOpget_IsQuoteOpget_SequentialOpget_IsSequentialOpget_AddressOfOpget_IsAddressOfOpget_VarSetOpget_IsVarSetOpget_AddressSetOpget_IsAddressSetOpNewTypeTestOpget_IsTypeTestOpget_TryWithOpget_IsTryWithOpget_TryFinallyOpget_IsTryFinallyOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_WhileLoopOpget_IsWhileLoopOpNewValueOpget_IsValueOpNewDefaultValueOpget_IsDefaultValueOpCustomAttributestermattribsget_CustomAttributesfulllongSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsargumentsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawarraysizeDequeueSetCapacityEnqueueCopycapacityTokenfailureCTSCancellationTokenSourcelinkedCTSget_TokenCreateLinkedTokenSourcectCancelFakeUnit_unique_FakeUnitget_FakeUnitthisThreadHasTrampolineThisThreadHasTrampolinecontbindCountthisThreadHasTrampoline@ThreadStaticAttributeget_thisThreadHasTrampolineset_thisThreadHasTrampolineget_ThisThreadHasTrampolineExecuteActionfirstActionIncrementBindCountSetunfake_arg1trampolinesendOrPostCallbackSendOrPostCallbackwaitCallbackForQueueWorkItemWithTrampolineWaitCallbackinit@457SynchronizationContextPostctxtThreadPoolQueueUserWorkItemQueueWorkItemStartThreadProtectget_TrampolinetokenecontcconttrampolineHoldertoken@econt@ccont@trampolineHolder@get_tokenget_econtget_ccontget_trampolineHolderauxcont@aux@get_contget_auxNewPZeroDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchget_CanBeCanceledRunSynchronouslytimeoutcancellationTokenStartStartAsTaskTaskCreationOptionstaskCreationOptionsStartChildAsTaskParallelcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndTArgAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextsyncContextOnCancelinterruptionTryCancelledAwaitTasktaskwhSystem-IAsyncResult-get_AsyncStateSystem-IAsyncResult-get_AsyncWaitHandleTimeSpanWaitOneSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedIsClosedstatecompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousGetWaitHandleinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@2262mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscanneritem1@get_item1item2@get_item2item3@get_item3item4@get_item4item5@get_item5item6@get_item6item7Item7item7@get_item7get_Item7item8Item8item8@get_item8get_Item8T8System-Linq-IGrouping`2-get_KeyKget_SourceQQ2YieldFromqIQueryable`1EnumerableprojectionFunc`2WherepredicateLastLastOrDefaultSingleExactlyOneSingleOrDefaultExactlyOneOrDefaultDistinctAnyAllFirstElementAtNthSkipSkipWhileTakeTakeWhileFindFirstOrDefaultMinMinByvalueSelectorMaxMaxByNullable`1MinByNullableMaxByNullableget_HasValueSumByNullableAverageByNullableAverageAverageBySumByGroupBykeySelectorOrderByIOrderedEnumerable`1SortByOrderByDescendingSortByDescendingThenByThenByDescendingSortByNullableSortByNullableDescendingThenByNullableThenByNullableDescendingGroupValByresultSelectorFunc`3JoinouterSourceinnerSourceouterKeySelectorinnerKeySelectorTOuterTInnerGroupJoinLeftOuterJoinRunQueryAsValueRunQueryAsEnumerableRunQueryAsQueryableIQueryableRunTMeasure1TMeasure2TMeasureAssemblyNameassemblyNameget_AssemblyNameCommentTextcommentTextget_CommentTextFilePathLineColumnfilePathlinecolumnget_FilePathset_FilePathget_Lineset_Lineget_Columnset_ColumnSuppressRelocateIsErasedResolutionFolderRuntimeAssemblyReferencedAssembliesTemporaryFolderIsInvalidationSupportedIsHostedExecutionSystemRuntimeAssemblyVersionsystemRuntimeContainsTyperesolutionFolderruntimeAssemblyreferencedAssembliestemporaryFolderisInvalidationSupporteduseResolutionFolderAtRuntimesystemRuntimeAssemblyVersionget_ResolutionFolderset_ResolutionFolderget_RuntimeAssemblyset_RuntimeAssemblyget_ReferencedAssembliesset_ReferencedAssembliesget_TemporaryFolderset_TemporaryFolderget_IsInvalidationSupportedset_IsInvalidationSupportedget_IsHostedExecutionset_IsHostedExecutionget_SystemRuntimeAssemblyVersionset_SystemRuntimeAssemblyVersionSystemRuntimeContainsTypetypeNameNamespaceNameget_NamespaceNameGetNestedNamespacesGetTypesResolveTypeNameEventHandlerInvalidateGetNamespacesGetStaticParameterstypeWithoutArgumentsApplyStaticArgumentstypePathWithArgumentsstaticArgumentsGetInvokerExpressionsyntheticMethodBaseadd_Invalidateremove_InvalidateGetGeneratedAssemblyContentsBuildMachinePrivateBuildOfficialBuildFxBranchSyncCounterValueBranchNameBranchNamePrefixProductBuildOfAssemblyOfFileDefaultAsyncBuilderqueryCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWriterSystem.IOTextWritertextWriterPrintFormatLineToTextWriterget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazy`1LazyPatterninputget_querykeysarrayIndex_arg2DefaultAsyncBuilder@157query@197init@thisImplicitExpressionConversionHelperMethodInfoNTty@442-30FT1ty@442-31FT2ty@442-32boolTyIEnumerableTypeDefty@442-33IQueryableTypeDefty@442-34QuerySourceTypeDefty@442-35patternInput@369MakeContainsCallContainspatternInput@374-1MakeElementAtCallElementAtpatternInput@401-2MakeMinByCallMinBypatternInput@407-3MakeMaxByCallMaxBypatternInput@412-4MakeMinByNullableCallMinByNullablepatternInput@418-5MakeMaxByNullableCallMaxByNullablepatternInput@445-6MakeAnyCallAnypatternInput@450-7MakeAllCallAllpatternInput@455-8MakeFirstFindCallFirstFindpatternInput@552-9FQ_double@553RuntimeMethodHandleFQ_single@554FQ_decimal@555FQ_int32@556FQ_int64@557FE_double@558FE_single@559FE_decimal@560FE_int32@561FE_int64@562FE@563MakeAverageByCallAverageBypatternInput@566-10FQ_double@567-1FQ_single@568-1FQ_decimal@569-1FQ_int32@570-1FQ_int64@571-1FE_double@572-1FE_single@573-1FE_decimal@574-1FE_int32@575-1FE_int64@576-1FE@577-1MakeAverageByNullableCallAverageByNullablepatternInput@581-11FQ_double@582-2FQ_single@583-2FQ_decimal@584-2FQ_int32@585-2FQ_int64@586-2FE_double@587-2FE_single@588-2FE_decimal@589-2FE_int32@590-2FE_int64@591-2FE@592-2MakeSumByCallSumBypatternInput@595-12FQ_double@596-3FQ_single@597-3FQ_decimal@598-3FQ_int32@599-3FQ_int64@600-3FE_double@601-3FE_single@602-3FE_decimal@603-3FE_int32@604-3FE_int64@605-3FE@606-3MakeSumByNullableCallSumByNullablepatternInput@620-13MakeFirstCallFirstpatternInput@621-14MakeFirstOrDefaultCallFirstOrDefaultpatternInput@622-15MakeLastCallLastpatternInput@623-16MakeLastOrDefaultCallLastOrDefaultpatternInput@624-17MakeSingleCallSinglepatternInput@625-18MakeSingleOrDefaultCallSingleOrDefaultpatternInput@626-19MakeCountCallCountMakeDefaultIfEmptyMakeSelectFQ@638FE@639-4MakeAppendFQ@659-1FE@660-5MakeAsQueryableF@668MakeEnumerableEmptyF@673-1MakeSelectManyFQ@682-2FE@683-6MakeWhereFQ@699-3FE@700-7MakeOrderByMakeOrderByDescendingMakeThenByMakeThenByDescendingMakeOrderByNullableMakeOrderByNullableDescendingMakeThenByNullableMakeThenByNullableDescendingMakeSkipMakeTakeMakeSkipWhileMakeTakeWhileMakeDistinctFQ@788-4FE@789-8MakeGroupByFQ@797-5FE@798-9MakeGroupValByFQ@811-6FE@812-10MakeJoinFQ@841-7FE@842-11MakeGroupJoinFQ@859-8FE@860-12|CallQueryBuilderRunQueryable|_||CallQueryBuilderRunValue|_||CallQueryBuilderRunEnumerable|_||CallQueryBuilderFor|_||CallQueryBuilderYield|_||CallQueryBuilderYieldFrom|_||CallQueryBuilderZero|_||CallQueryBuilderSourceIQueryable|_||CallQueryBuilderSourceIEnumerable|_||CallSortBy|_||CallSortByDescending|_||CallThenBy|_||CallThenByDescending|_||CallSortByNullable|_||CallSortByNullableDescending|_||CallThenByNullable|_||CallThenByNullableDescending|_||CallGroupBy|_||CallGroupValBy|_||CallMinBy|_||CallMaxBy|_||CallMinByNullable|_||CallMaxByNullable|_||CallWhere|_||CallHeadOrDefault|_||CallLast|_||CallLastOrDefault|_||CallExactlyOne|_||CallExactlyOneOrDefault|_||CallSelect|_||CallExists|_||CallForAll|_||CallDistinct|_||CallTake|_||CallTakeWhile|_||CallContains|_||CallNth|_||CallSkip|_||CallSkipWhile|_||CallJoin|_||CallGroupJoin|_||CallLeftOuterJoin|_||CallAverageBy|_||CallSumBy|_||CallAverageByNullable|_||CallSumByNullable|_||CallCount|_||CallHead|_||CallFind|_|GetGetMethod|Getter|_|prop|SpecificCall1|_||SpecificCall2|_||SpecificCall3|_|stripSuccessiveProjLets@249-1pexpr|LambdaNoDetupling|_|lamrestoreTupleProjectionsprojsloop@265-41rvsrprojs|LambdasNoDetupling|_|inpExprGetMethodFromHandleCallGenericStaticMethodmethHandleCallGenericInstanceMethodget_IsGenericMethodGetGenericMethodDefinitionBindGenericStaticMethodmethInfotyargsMakeGenericStaticMethodMakeGenericInstanceMethodget_ImplicitExpressionConversionHelperMethodInfoMakeImplicitExpressionConversionget_NTget_ty@442-30get_FT1get_ty@442-31get_FT2get_ty@442-32Booleanget_boolTyget_IEnumerableTypeDefget_ty@442-33get_IQueryableTypeDefget_ty@442-34get_QuerySourceTypeDefget_ty@442-35IsQuerySourceTytyIsIQueryableTyGetFuncTypeFuncExprToDelegateExprsrcTytargetTyMakersCallersInstanceFMakersCallers2FQFEMake@356MQMEisIQsrcItemTysrcCall@363CQCEMakeOrCallContainsOrElementAtget_patternInput@369get_MakeContainsget_CallContainsget_patternInput@374-1get_MakeElementAtget_CallElementAtMake@381-1valSelectorCall@392-1_keyItemTykeyElemTyMakeOrCallMinByOrMaxBygget_patternInput@401-2get_MakeMinByget_CallMinByget_patternInput@407-3get_MakeMaxByget_CallMaxByget_patternInput@412-4get_MakeMinByNullableget_CallMinByNullableget_patternInput@418-5get_MakeMaxByNullableget_CallMaxByNullableMake@426-2Call@436-2MakeOrCallAnyOrAllOrFirstFindget_patternInput@445-6get_MakeAnyget_CallAnyget_patternInput@450-7get_MakeAllget_CallAllget_patternInput@455-8get_MakeFirstFindget_CallFirstFindfailDueToUnsupportedInputTypeInSumByOrAverageBy@469unitVar0jInt64GetConstructorsMake$cont@495me_int32me_int64qbresTyNoNullableselectorGetGenericArgumentsDoubleMake@471-3isNullablemq_doubleme_doublemq_singleme_singlemq_decimalme_decimalmq_int32mq_int64TargetInvocationExceptionget_InnerExceptionCall$cont@524ce_doublece_singlece_decimalce_int32ce_int64resTyCall@510-3cq_doublecq_singlecq_decimalcq_int32cq_int64MakeOrCallAverageByOrSumByGenericfq_doublefq_singlefq_decimalfq_int32fq_int64fe_doublefe_singlefe_decimalfe_int32fe_int64hget_patternInput@552-9get_FQ_double@553get_FQ_single@554get_FQ_decimal@555get_FQ_int32@556get_FQ_int64@557get_FE_double@558get_FE_single@559get_FE_decimal@560get_FE_int32@561get_FE_int64@562get_FE@563get_MakeAverageByget_CallAverageByget_patternInput@566-10get_FQ_double@567-1get_FQ_single@568-1get_FQ_decimal@569-1get_FQ_int32@570-1get_FQ_int64@571-1get_FE_double@572-1get_FE_single@573-1get_FE_decimal@574-1get_FE_int32@575-1get_FE_int64@576-1get_FE@577-1get_MakeAverageByNullableget_CallAverageByNullableget_patternInput@581-11get_FQ_double@582-2get_FQ_single@583-2get_FQ_decimal@584-2get_FQ_int32@585-2get_FQ_int64@586-2get_FE_double@587-2get_FE_single@588-2get_FE_decimal@589-2get_FE_int32@590-2get_FE_int64@591-2get_FE@592-2get_MakeSumByget_CallSumByget_patternInput@595-12get_FQ_double@596-3get_FQ_single@597-3get_FQ_decimal@598-3get_FQ_int32@599-3get_FQ_int64@600-3get_FE_double@601-3get_FE_single@602-3get_FE_decimal@603-3get_FE_int32@604-3get_FE_int64@605-3get_FE@606-3get_MakeSumByNullableget_CallSumByNullableMake@611-4Call@616-4tupledArgMakeOrCallSimpleOpget_patternInput@620-13get_MakeFirstget_CallFirstget_patternInput@621-14get_MakeFirstOrDefaultget_CallFirstOrDefaultget_patternInput@622-15get_MakeLastget_CallLastget_patternInput@623-16get_MakeLastOrDefaultget_CallLastOrDefaultget_patternInput@624-17get_MakeSingleget_CallSingleget_patternInput@625-18get_MakeSingleOrDefaultget_CallSingleOrDefaultget_patternInput@626-19get_MakeCountget_CallCountget_MakeDefaultIfEmptyget_MakeSelectget_FQ@638get_FE@639-4get_MakeAppendget_FQ@659-1get_FE@660-5get_MakeAsQueryableget_F@668get_MakeEnumerableEmptyget_F@673-1get_MakeSelectManyget_FQ@682-2get_FE@683-6get_MakeWhereget_FQ@699-3get_FE@700-7MakeOrderByOrThenByget_MakeOrderByget_MakeOrderByDescendingget_MakeThenByget_MakeThenByDescendingget_MakeOrderByNullableget_MakeOrderByNullableDescendingget_MakeThenByNullableget_MakeThenByNullableDescendingGenMakeSkipWhileOrTakeWhileMakeSkipOrTakeget_MakeSkipget_MakeTakeget_MakeSkipWhileget_MakeTakeWhileget_MakeDistinctget_FQ@788-4get_FE@789-8get_MakeGroupByget_FQ@797-5get_FE@798-9get_MakeGroupValByget_FQ@811-6get_FE@812-10get_MakeJoinget_FQ@841-7get_FE@842-11get_MakeGroupJoinget_FQ@859-8get_FE@860-12walk@876-1RewriteExpr|LetExprReduction|_|get_IsValueType|MacroReduction|_|$cont@897-1|MacroReduction|_|$cont@897|MacroReduction|_|MacroExpandget_|CallQueryBuilderRunQueryable|_|get_|CallQueryBuilderRunValue|_|get_|CallQueryBuilderRunEnumerable|_|get_|CallQueryBuilderFor|_|get_|CallQueryBuilderYield|_|get_|CallQueryBuilderYieldFrom|_|get_|CallQueryBuilderZero|_|get_|CallQueryBuilderSourceIQueryable|_|get_|CallQueryBuilderSourceIEnumerable|_|get_|CallSortBy|_|get_|CallSortByDescending|_|get_|CallThenBy|_|get_|CallThenByDescending|_|get_|CallSortByNullable|_|get_|CallSortByNullableDescending|_|get_|CallThenByNullable|_|get_|CallThenByNullableDescending|_|get_|CallGroupBy|_|get_|CallGroupValBy|_|get_|CallMinBy|_|get_|CallMaxBy|_|get_|CallMinByNullable|_|get_|CallMaxByNullable|_|get_|CallWhere|_|get_|CallHeadOrDefault|_|get_|CallLast|_|get_|CallLastOrDefault|_|get_|CallExactlyOne|_|get_|CallExactlyOneOrDefault|_|get_|CallSelect|_|get_|CallExists|_|get_|CallForAll|_|get_|CallDistinct|_|get_|CallTake|_|get_|CallTakeWhile|_|get_|CallContains|_|get_|CallNth|_|get_|CallSkip|_|get_|CallSkipWhile|_|get_|CallJoin|_|get_|CallGroupJoin|_|get_|CallLeftOuterJoin|_|get_|CallAverageBy|_|get_|CallSumBy|_|get_|CallAverageByNullable|_|get_|CallSumByNullable|_|get_|CallCount|_|get_|CallHead|_|get_|CallFind|_||ZeroOnElseBranch|_|GetPropertyConvMutableToImmutableconvmutExprConvertImmutableConsumerToMutableConsumerimmutConsumingVarimmutConsumingExpr|AnyNestedQuery|_||EnumerableNestedQuery|_|CommitTransInnerResultTransFor@1154canElimqTyimmutSelectorVarimmutResElemTysourceConvmutSourceimmutSelectorget_RestTransInner$cont@1325immutOuterSourceimmutOuterResultGroupVarimmutOuterKeyVarimmutOuterKeySelectorimmutInnerSourceimmutInnerResultKeyVarimmutInnerKeyVarimmutInnerKeySelectorimmutElementSelectorTransInner$cont@1336-1immutInnerResultGroupVarTransInner$cont@1350-2immutInnerSourceTyTransInner$cont@1134-4immutQueryTransInner$cont@1134-3TransInnerTransInnerAndCommitIsAssignableFromTransInnerNoCheckTransJoinInputsTransInnerApplicativeTransInnerApplicativeAndCommitTransInnerWithFinalConsumeimmutSourceTransNestedInnerWithConsumerTransNestedOuterquotEliminateNestedQueriesEvalNonNestedInnerqueryProducingSequenceEvalNonNestedOutertm|CallQ|_|clo1self2@YesNoarg00v2vslist1list2tabwalkimmutConsumingVarReplacementExprIsSelectIsOtherIsSourceNewSelectget_IsSelectNewOtherget_IsOtherNewSourceget_IsSourceisQTymutSelectorVarmutSelectorBodycheckThenBySourceImplicitExpressionConversionHelperMethodInfo@310NT@317FT1@318FT2@319IEnumerableTypeDef@325IQueryableTypeDef@326QuerySourceTypeDef@327MakeContains@369CallContains@369MakeElementAt@374CallElementAt@374MakeMinBy@401CallMinBy@401MakeMaxBy@407CallMaxBy@407MakeMinByNullable@412CallMinByNullable@412MakeMaxByNullable@418CallMaxByNullable@418MakeAny@445CallAny@445MakeAll@450CallAll@450MakeFirstFind@455CallFirstFind@455MakeAverageBy@552CallAverageBy@552MakeAverageByNullable@566CallAverageByNullable@566MakeSumBy@581CallSumBy@581MakeSumByNullable@595CallSumByNullable@595MakeFirst@620CallFirst@620MakeFirstOrDefault@621CallFirstOrDefault@621MakeLast@622CallLast@622MakeLastOrDefault@623CallLastOrDefault@623MakeSingle@624CallSingle@624MakeSingleOrDefault@625CallSingleOrDefault@625MakeCount@626CallCount@626MakeDefaultIfEmpty@628MakeSelect@637MakeAppend@658MakeAsQueryable@667MakeEnumerableEmpty@672MakeSelectMany@681MakeWhere@698MakeOrderBy@723MakeOrderByDescending@728MakeThenBy@733MakeThenByDescending@738MakeOrderByNullable@744MakeOrderByNullableDescending@745MakeThenByNullable@746MakeThenByNullableDescending@747MakeSkip@771MakeTake@775MakeSkipWhile@779MakeTakeWhile@783MakeDistinct@787MakeGroupBy@796MakeGroupValBy@810MakeJoin@840MakeGroupJoin@858|CallQueryBuilderRunQueryable|_|@944|CallQueryBuilderRunValue|_|@945|CallQueryBuilderRunEnumerable|_|@946|CallQueryBuilderFor|_|@947|CallQueryBuilderYield|_|@948|CallQueryBuilderYieldFrom|_|@949|CallQueryBuilderZero|_|@950|CallQueryBuilderSourceIQueryable|_|@951|CallQueryBuilderSourceIEnumerable|_|@952|CallSortBy|_|@954|CallSortByDescending|_|@955|CallThenBy|_|@956|CallThenByDescending|_|@957|CallSortByNullable|_|@959|CallSortByNullableDescending|_|@960|CallThenByNullable|_|@961|CallThenByNullableDescending|_|@962|CallGroupBy|_|@964|CallGroupValBy|_|@965|CallMinBy|_|@966|CallMaxBy|_|@967|CallMinByNullable|_|@968|CallMaxByNullable|_|@969|CallWhere|_|@970|CallHeadOrDefault|_|@971|CallLast|_|@972|CallLastOrDefault|_|@973|CallExactlyOne|_|@974|CallExactlyOneOrDefault|_|@975|CallSelect|_|@976|CallExists|_|@977|CallForAll|_|@978|CallDistinct|_|@979|CallTake|_|@980|CallTakeWhile|_|@981|CallContains|_|@982|CallNth|_|@983|CallSkip|_|@984|CallSkipWhile|_|@985|CallJoin|_|@989|CallGroupJoin|_|@990|CallLeftOuterJoin|_|@991|CallAverageBy|_|@992|CallSumBy|_|@993|CallAverageByNullable|_|@995|CallSumByNullable|_|@996|CallCount|_|@998|CallHead|_|@999|CallFind|_|@1000QueryableExpression`1SumDefaultIfEmptyAsQueryableSelectManyIOrderedQueryable`1get_MethodHandleelementSelectorisPartiallyImmutableRecordMemberInitializationHelperMethNewAnonymousObjectHelperMethtupleTypesty@442-14ty@442-15ty@442-16ty@442-17ty@442-18ty@442-19ty@442-20ty@442-21ty@442-22ty@442-23ty@442-24ty@442-25ty@442-26ty@442-27ty@442-28ty@442-29anonObjectTypesarray@146len@148res@149-1tupleToAnonTypeMapt@132anonToTupleTypeMapt@137-1IsNewAnonymousObjectHelperQmhandle@246minfo@247gmd@248memoizeget_isPartiallyImmutableRecordget_MemberInitializationHelperMethget_NewAnonymousObjectHelperMethleftSequentialSeries@87|LeftSequentialSeries|propSetList@97varArg|PropSetList|_|list|ObjectConstruction|_|get_tupleTypesget_ty@442-14get_ty@442-15get_ty@442-16get_ty@442-17get_ty@442-18get_ty@442-19get_ty@442-20get_ty@442-21get_ty@442-22get_ty@442-23get_ty@442-24get_ty@442-25get_ty@442-26get_ty@442-27get_ty@442-28get_ty@442-29get_anonObjectTypesget_array@146get_len@148get_res@149-1get_tupleToAnonTypeMapget_t@132get_anonToTupleTypeMapget_t@137-1|NewAnonymousObject|_|OneNewAnonymousObjectNewAnonymousObjectIFormattablewalk@171instnewTypeAnonymousObjectGetRewriteTupleType|RecordFieldGetSimplification|_|ConvImmutableTypeToMutableTypeget_IsNewAnonymousObjectHelperQget_mhandle@246get_minfo@247get_gmd@248CleanupLeafSimplifyConsumingExprProduceMoreMutablestipfMakeSeqConvSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-Equalsyget_CanWritetpropInfoIsTupleConvIsRecordConvIsGroupingConvIsSeqConvNoConvIsNoConv_unique_NoConvNewTupleConvget_IsTupleConvNewRecordConvget_IsRecordConvNewGroupingConvget_IsGroupingConvNewSeqConvget_IsSeqConvget_NoConvget_IsNoConvmappingconvsget_PropertyTypeisPartiallyImmutableRecord@67MemberInitializationHelperMeth@72NewAnonymousObjectHelperMeth@77tupleTypes@121anonObjectTypes@130res@149tupleToAnonTypeMap@131anonToTupleTypeMap@136IsNewAnonymousObjectHelperQ@245Tuple`6instanceBindingFlagsStringConcatshowAllNullableConstructorty@442-13|GenericEqualityQ|_||EqualsQ|_||GreaterQ|_||GreaterEqQ|_||LessQ|_||LessEqQ|_||NotEqQ|_||NullableEqualsQ|_||NullableNotEqQ|_||NullableGreaterQ|_||NullableGreaterEqQ|_||NullableLessQ|_||NullableLessEqQ|_||NullableEqualsNullableQ|_||NullableNotEqNullableQ|_||NullableGreaterNullableQ|_||NullableGreaterEqNullableQ|_||NullableLessNullableQ|_||NullableLessEqNullableQ|_||EqualsNullableQ|_||NotEqNullableQ|_||GreaterNullableQ|_||GreaterEqNullableQ|_||LessNullableQ|_||LessEqNullableQ|_||MakeDecimalQ|_||NullablePlusQ|_||NullablePlusNullableQ|_||PlusNullableQ|_||NullableMinusQ|_||NullableMinusNullableQ|_||MinusNullableQ|_||NullableMultiplyQ|_||NullableMultiplyNullableQ|_||MultiplyNullableQ|_||NullableDivideQ|_||NullableDivideNullableQ|_||DivideNullableQ|_||NullableModuloQ|_||NullableModuloNullableQ|_||ModuloNullableQ|_||NotQ|_||NegQ|_||PlusQ|_||DivideQ|_||MinusQ|_||MultiplyQ|_||ModuloQ|_||ShiftLeftQ|_||ShiftRightQ|_||BitwiseAndQ|_||BitwiseOrQ|_||BitwiseXorQ|_||BitwiseNotQ|_||CheckedNeg|_||CheckedPlusQ|_||CheckedMinusQ|_||CheckedMultiplyQ|_||ConvCharQ|_||ConvDecimalQ|_||ConvFloatQ|_||ConvFloat32Q|_||ConvSByteQ|_||ConvInt16Q|_||ConvInt32Q|_||ConvIntQ|_||ConvInt64Q|_||ConvByteQ|_||ConvUInt16Q|_||ConvUInt32Q|_||ConvUInt64Q|_||ConvNullableCharQ|_||ConvNullableDecimalQ|_||ConvNullableFloatQ|_||ConvNullableFloat32Q|_||ConvNullableSByteQ|_||ConvNullableInt16Q|_||ConvNullableInt32Q|_||ConvNullableIntQ|_||ConvNullableInt64Q|_||ConvNullableByteQ|_||ConvNullableUInt16Q|_||ConvNullableUInt32Q|_||ConvNullableUInt64Q|_||UnboxGeneric|_||TypeTestGeneric|_||CheckedConvCharQ|_||CheckedConvSByteQ|_||CheckedConvInt16Q|_||CheckedConvInt32Q|_||CheckedConvInt64Q|_||CheckedConvByteQ|_||CheckedConvUInt16Q|_||CheckedConvUInt32Q|_||CheckedConvUInt64Q|_||ImplicitExpressionConversionHelperQ|_||MemberInitializationHelperQ|_||NewAnonymousObjectHelperQ|_||ArrayLookupQ|_|substHelperMethMemberInitializationHelper_xNewAnonymousObjectHelperImplicitExpressionConversionHelperget_bindingFlagsget_instanceBindingFlagsget_IsArrayget_IsByRefget_IsPointerisNamedTypeequivHeadTypesty1ty2getFunctionTypeget_StringConcatSubstHelperget_showAllget_NullableConstructorget_ty@442-13|SpecificCallToMethod|_|mhandleget_|GenericEqualityQ|_|get_|EqualsQ|_|get_|GreaterQ|_|get_|GreaterEqQ|_|get_|LessQ|_|get_|LessEqQ|_|get_|NotEqQ|_|get_|NullableEqualsQ|_|get_|NullableNotEqQ|_|get_|NullableGreaterQ|_|get_|NullableGreaterEqQ|_|get_|NullableLessQ|_|get_|NullableLessEqQ|_|get_|NullableEqualsNullableQ|_|get_|NullableNotEqNullableQ|_|get_|NullableGreaterNullableQ|_|get_|NullableGreaterEqNullableQ|_|get_|NullableLessNullableQ|_|get_|NullableLessEqNullableQ|_|get_|EqualsNullableQ|_|get_|NotEqNullableQ|_|get_|GreaterNullableQ|_|get_|GreaterEqNullableQ|_|get_|LessNullableQ|_|get_|LessEqNullableQ|_|get_|MakeDecimalQ|_|get_|NullablePlusQ|_|get_|NullablePlusNullableQ|_|get_|PlusNullableQ|_|get_|NullableMinusQ|_|get_|NullableMinusNullableQ|_|get_|MinusNullableQ|_|get_|NullableMultiplyQ|_|get_|NullableMultiplyNullableQ|_|get_|MultiplyNullableQ|_|get_|NullableDivideQ|_|get_|NullableDivideNullableQ|_|get_|DivideNullableQ|_|get_|NullableModuloQ|_|get_|NullableModuloNullableQ|_|get_|ModuloNullableQ|_|get_|NotQ|_|get_|NegQ|_|get_|PlusQ|_|get_|DivideQ|_|get_|MinusQ|_|get_|MultiplyQ|_|get_|ModuloQ|_|get_|ShiftLeftQ|_|get_|ShiftRightQ|_|get_|BitwiseAndQ|_|get_|BitwiseOrQ|_|get_|BitwiseXorQ|_|get_|BitwiseNotQ|_|get_|CheckedNeg|_|get_|CheckedPlusQ|_|get_|CheckedMinusQ|_|get_|CheckedMultiplyQ|_|get_|ConvCharQ|_|get_|ConvDecimalQ|_|get_|ConvFloatQ|_|get_|ConvFloat32Q|_|get_|ConvSByteQ|_|get_|ConvInt16Q|_|get_|ConvInt32Q|_|get_|ConvIntQ|_|get_|ConvInt64Q|_|get_|ConvByteQ|_|get_|ConvUInt16Q|_|get_|ConvUInt32Q|_|get_|ConvUInt64Q|_|get_|ConvNullableCharQ|_|get_|ConvNullableDecimalQ|_|get_|ConvNullableFloatQ|_|get_|ConvNullableFloat32Q|_|get_|ConvNullableSByteQ|_|get_|ConvNullableInt16Q|_|get_|ConvNullableInt32Q|_|get_|ConvNullableIntQ|_|get_|ConvNullableInt64Q|_|get_|ConvNullableByteQ|_|get_|ConvNullableUInt16Q|_|get_|ConvNullableUInt32Q|_|get_|ConvNullableUInt64Q|_|get_|UnboxGeneric|_|get_|TypeTestGeneric|_|get_|CheckedConvCharQ|_|get_|CheckedConvSByteQ|_|get_|CheckedConvInt16Q|_|get_|CheckedConvInt32Q|_|get_|CheckedConvInt64Q|_|get_|CheckedConvByteQ|_|get_|CheckedConvUInt16Q|_|get_|CheckedConvUInt32Q|_|get_|CheckedConvUInt64Q|_|get_|ImplicitExpressionConversionHelperQ|_|get_|MemberInitializationHelperQ|_|get_|NewAnonymousObjectHelperQ|_|get_|ArrayLookupQ|_|get_substHelperMeth|Sequentials||MemberInitializationQ|_||NewAnonymousObjectQ|_||NullableConstruction|_|PropertyMemberExpressionbuild@432argPNewNewExpressionbuild@703-1argsPKeyNotFoundExceptionAndAlsoOrElseConstantConstantExpressionTypeAsUnaryExpressionTypeIsTypeBinaryExpressionget_BaseTypeMethodCallExpressionMemberInitMemberInitExpressionGetPropertiesNotNegateDivideSubtractMultiplyModuloLeftShiftRightShiftAndOrExclusiveOrNegateCheckedAddCheckedSubtractCheckedMultiplyCheckedConvertCharSByteInt16ByteUInt16UInt32UInt64ConvertCheckedArrayIndexNewArrayInitNewArrayExpressionEqualLambdaExpressionConditionConditionalExpressionConvExprToLinqInContextenvinptransBinOpaddConvertLeftx1x2addConvertRightexprErasedConstructorConvObjArgobjOptcoerceToConvExprsToLinqesParameterConvVarToLinqQuotationToExpressionQuotationToLambdaExpressionCompileEvaluateQuotationvarEnvvarEnv@get_varEnvminfoMemberAssignmentpropInfospropsNotEqualGreaterThanGreaterThanOrEqualLessThanLessThanOrEqualtablevPfvfvsToInt16ToUInt16ToIntToEnumToInt32ToUInt32ToInt64ToUInt64IntPtrToIntPtrUIntPtrToUIntPtrToDecimalToCharop_QmarkGreaterEqualsop_QmarkGreaterop_QmarkLessEqualsop_QmarkLessop_QmarkEqualsop_QmarkLessGreaterop_GreaterEqualsQmarkop_GreaterQmarkop_LessEqualsQmarkop_LessQmarkop_EqualsQmarkop_LessGreaterQmarkop_QmarkGreaterEqualsQmarkop_QmarkGreaterQmarkop_QmarkLessEqualsQmarkop_QmarkLessQmarkop_QmarkEqualsQmarkop_QmarkLessGreaterQmarkop_QmarkPlusop_PlusQmarkop_QmarkPlusQmarkop_QmarkMinusop_MinusQmarkop_QmarkMinusQmarkop_QmarkMultiplyop_MultiplyQmarkop_QmarkMultiplyQmarkop_QmarkPercentop_PercentQmarkop_QmarkPercentQmarkop_QmarkDivideop_DivideQmarkop_QmarkDivideQmarkStringConcat@191NullableConstructor@202|GenericEqualityQ|_|@221|EqualsQ|_|@222|GreaterQ|_|@223|GreaterEqQ|_|@224|LessQ|_|@225|LessEqQ|_|@226|NotEqQ|_|@227|NullableEqualsQ|_|@229|NullableNotEqQ|_|@230|NullableGreaterQ|_|@231|NullableGreaterEqQ|_|@232|NullableLessQ|_|@233|NullableLessEqQ|_|@234|NullableEqualsNullableQ|_|@236|NullableNotEqNullableQ|_|@237|NullableGreaterNullableQ|_|@238|NullableGreaterEqNullableQ|_|@239|NullableLessNullableQ|_|@240|NullableLessEqNullableQ|_|@241|EqualsNullableQ|_|@243|NotEqNullableQ|_|@244|GreaterNullableQ|_|@245|GreaterEqNullableQ|_|@246|LessNullableQ|_|@247|LessEqNullableQ|_|@248|MakeDecimalQ|_|@250|NullablePlusQ|_|@253|NullablePlusNullableQ|_|@254|PlusNullableQ|_|@255|NullableMinusQ|_|@257|NullableMinusNullableQ|_|@258|MinusNullableQ|_|@259|NullableMultiplyQ|_|@261|NullableMultiplyNullableQ|_|@262|MultiplyNullableQ|_|@263|NullableDivideQ|_|@265|NullableDivideNullableQ|_|@266|DivideNullableQ|_|@267|NullableModuloQ|_|@269|NullableModuloNullableQ|_|@270|ModuloNullableQ|_|@271|NotQ|_|@273|NegQ|_|@274|PlusQ|_|@275|DivideQ|_|@276|MinusQ|_|@277|MultiplyQ|_|@278|ModuloQ|_|@279|ShiftLeftQ|_|@280|ShiftRightQ|_|@281|BitwiseAndQ|_|@282|BitwiseOrQ|_|@283|BitwiseXorQ|_|@284|BitwiseNotQ|_|@285|CheckedNeg|_|@286|CheckedPlusQ|_|@287|CheckedMinusQ|_|@288|CheckedMultiplyQ|_|@289|ConvCharQ|_|@291|ConvDecimalQ|_|@292|ConvFloatQ|_|@293|ConvFloat32Q|_|@294|ConvSByteQ|_|@295|ConvInt16Q|_|@296|ConvInt32Q|_|@297|ConvIntQ|_|@298|ConvInt64Q|_|@299|ConvByteQ|_|@300|ConvUInt16Q|_|@301|ConvUInt32Q|_|@302|ConvUInt64Q|_|@303|ConvNullableCharQ|_|@305|ConvNullableDecimalQ|_|@306|ConvNullableFloatQ|_|@307|ConvNullableFloat32Q|_|@308|ConvNullableSByteQ|_|@309|ConvNullableInt16Q|_|@310|ConvNullableInt32Q|_|@311|ConvNullableIntQ|_|@312|ConvNullableInt64Q|_|@313|ConvNullableByteQ|_|@314|ConvNullableUInt16Q|_|@315|ConvNullableUInt32Q|_|@316|ConvNullableUInt64Q|_|@317|UnboxGeneric|_|@323|TypeTestGeneric|_|@324|CheckedConvCharQ|_|@325|CheckedConvSByteQ|_|@326|CheckedConvInt16Q|_|@327|CheckedConvInt32Q|_|@328|CheckedConvInt64Q|_|@329|CheckedConvByteQ|_|@330|CheckedConvUInt16Q|_|@331|CheckedConvUInt32Q|_|@332|CheckedConvUInt64Q|_|@333|ImplicitExpressionConversionHelperQ|_|@334|MemberInitializationHelperQ|_|@335|NewAnonymousObjectHelperQ|_|@336|ArrayLookupQ|_|@337substHelperMeth@340succeed@2442choosercollectorPairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNextCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedwSystem-IObservable`1-SubscribelastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2start@2010-2awaitEithera1a2msecNewOkNewErrorNewCanceledocearg0_arg3AsyncGetResponseWebRequestcanceledWebExceptionget_StatusWebExceptionStatusreqBeginGetResponseEndGetResponseAbortAsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteWaitHandle.AsyncWaitOneAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamExceptionBeginWriteEndWriteObjectDisposedExceptionaiarTaskget_IsCanceleddisposeReg@1224barrierregTaskCompletionSource`1ActionRegisterget_TaskProceedisStoppedget_ProceedStoptcsSetCanceledTrySetExceptionTrySetResultasyncget_asyncswitchToswitchToNewThreadswitchToThreadPoolpostOrQueuedelimitSyncContextprotectedPrimitiveWithResyncunprotectedPrimitiveWithResyncManualResetEventresEventf@4244-9GCSuppressFinalizef@4244-10get_ResultAvailableEventWaitHandlesavedContsf@4244-11f@4244-12matchValueInterlockedCompareExchangelatchDothreadThreadget_CurrentThreadContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultreuseThreaddefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutstartAsyncqueueAsyncget_IsCancellationRequestedprotectedPrimitiveCoreprotectedPrimitivereifyresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsOkIsCanceledget_IsOkcexndefaultCancellationTokenSource@561doneA@828async@877loop@419-40once@1263underCurrentThreadStackcontToTailCallfinishTask@1340firstExnresultsremainingf@4244-13recordSuccess@1352f@4244-14recordFailure@1362cancel@1484onCancel@1625once_arg5beginAction@1772onCancel@1783-2delcontinuation@1891completedTaskf@4244-15f@4244-16scan@2149timeoutAsynctimeoutCtsscanNoTimeout@2181processFirstArrival@2215processFirstArrival@2230-3savedCConttimerTimerregistrationdueTimeTimerCallbackscontget_FactoryTaskFactoryFromAsync_arg7_arg8ar_arg4eventArgsctsReferrget_IsFaultedget_ExceptionAggregateExceptionget_ResultContinueWithTaskContinuationOptions_arg6_arg9replyasyncReplyOfNativeIntInlinedaddressToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1838-39ShapePatternBoolPatternStringPatternSinglePatternDoublePatternCharPatternSBytePatternBytePatternInt16PatternUInt16PatternInt32PatternUInt32PatternInt64PatternUInt64PatternUnitPatternstripSuccessiveProjLets@1707|TupledLambda|_||TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1isg1gmdfunTyCexprTyCty@442-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@319-37xs|FrontAndBack|_|get_funTyCget_exprTyCget_ty@442-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_||Comb1|_||Comb2|_||Comb3|_|VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3FormatcheckTypesSRexpectedTypereceivedTypethreeHoleSRcheckTypesWeakSRcheckArgsparamInfosloop@600-38checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuoteget_IsEnumToObjectmkLiftedValueOpGmkLambdavarmkTryWithe1v1e2e3mkApplicationv_0v_1mkLetRawWithCheck_arg1_0_arg1_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsemkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetmkStaticPropSetmkInstancePropSetmkInstanceMethodCallmkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionbindMethodHelperbindModulePropertybindModuleFunctionmkNamedTypebindProppropNameretTypeargTypesGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@965l_0l_1chopinstMethngmethmethTypeArgsbindMethpinfoIsStaticdecodeFunTydecodeArrayTytysmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsu_dtypeu_dtypes|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsunpickleExprlocalTypeunpickleReflectedDefnslocalAssemblyfillHolesInRawExprfreeInExprAccbvsmkTyparSubstsubstituteInExprtmsubstReadreadToEndsget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4244-8qdataResourcesGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializesplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20_arg19_arg20_arg21p_0p_1p_2p_3p_4_arg22_arg23_arg24_arg25x_0x_1_arg26_arg27_arg28_arg29_arg30_arg31_arg32_arg33_arg34_arg35_arg10_arg11_arg12_arg13_arg14_arg15_arg16_arg17_arg18uphase2bytesarg10@arg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qOneOrMoreRLinearqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@324-1exprTyC@325mscorlib@1108f@4244-7GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@211typeL@212o|Lambda|_|@216ucaseL@218minfoL@219cinfoL@220cinfopinfoL@221finfoL@222|NLambdas|_|@223Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueisFunctionTypedestFunTyget_instanceInvokeFlagsinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitget_CharsparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureSubstringParseparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@309capturePrecisionArg@337precisioncapture1unboxAsInt64unboxAsUInt64op_GreaterThanOrEqualIsNaNformatOne$cont@463formatOne$cont@430-1formatOne$cont@484-2xobjformatOneoutaIsSurrogatePairgo@523-3finalizerun@521initializecapture@540gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@176invariantCulture@267defaultInfo@288chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@555-6stacknextpushBreaksavingpopBreakforceBreakfitLeaf@501maxWidthlayouttextWidthbreaksfit@478leafFormattersquashToaddText@560rstrstextnewLine@563addL@570optsz_0z_1showLnewLine@606-1chanaddL@613-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LgetPropertyIsControlformatCharisCharcheck@734-6conv@735countNodes@787stopShort@788objL@791showModedepthLimprecsameObjL@792IndexOfLastIndexOfobjWithReprL@794showMode@794recdAtomicTupleL@876bracketIfL@882basicLproject2@964n1n2b1b2possibleKeyValueL@981objLworditemL@893-2project@903-1get_RankGetLowerBoundGetLengthGetInterfacesSortreprL@885showMode@885-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowAllIsShowAllShowTopLevelBindingIsShowTopLevelBinding_unique_ShowAll_unique_ShowTopLevelBindingget_ShowAllget_IsShowAllget_ShowTopLevelBindingget_IsShowTopLevelBindingarg10itSystem-Collections-Generic-IComparer`1-ComparenDepthIsDigitoptionty@442-10ty@442-11get_optionget_ty@442-10get_funcget_ty@442-11isListTypeIsTupleTypeIsFunctionTypeIsRecordTypeIsSumTypeUnitTypeIsUnitTypeIsObjectType_unique_UnitTypeNewTupleTypeget_IsTupleTypeNewFunctionTypeget_IsFunctionTypeNewRecordTypeget_IsRecordTypeNewSumTypeget_IsSumTypeget_UnitTypeget_IsUnitTypeNewObjectTypeget_IsObjectTypeIsTupleValueIsFunctionClosureValueIsRecordValueIsConstructorValueIsExceptionValueUnitValueIsUnitValueIsObjectValue_unique_UnitValueNewTupleValueget_IsTupleValueNewFunctionClosureValueget_IsFunctionClosureValueNewRecordValueget_IsRecordValueNewConstructorValueget_IsConstructorValueNewExceptionValueget_IsExceptionValueget_UnitValueget_IsUnitValueNewObjectValueget_IsObjectValueGetValueInfoOfObject$cont@357reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@167taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLlistLsquareBracketLbraceLconsume@199itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@134option@280-1func@281-1nullL@659measureL@660tab64tabParseget_tab64get_tabParseSystem.NumericsBigIntegerf@4244-4x64FromInt64DynamicFromZeroFromOneFromInt32FromInt64IsWhiteSpaceop_Multiplyparse@337-2f@4244-5getParseFromStringDynamicFromStringtab64@296tabParse@297Microsoft-FSharp-Control-IDelegateEvent`1-AddHandlerMicrosoft-FSharp-Control-IDelegateEvent`1-RemoveHandlermidebugty@442ty@442-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagsemptyObjArraytuple1ty@442-2tuple2ty@442-3tuple3ty@442-4tuple4ty@442-5tuple5ty@442-6tuple6ty@442-7tuple7ty@442-8tuple8ty@442-9maxTupletupleEncFieldget_debugget_ty@442get_ty@442-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@185GetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@238-1isConstructorReprget@242-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@442-2get_tuple2get_ty@442-3get_tuple3get_ty@442-4get_tuple4get_ty@442-5get_tuple5get_ty@442-6get_tuple6get_ty@442-7get_tuple7get_ty@442-8get_tuple8get_ty@442-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiesgetTupleConstructorMethodgetTupleCtorreader@447getTupleReadergetTupleConstructorgetTupleConstructorInfoget@481-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@587-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41emptyObjArray@333tuple1@338tuple2@339tuple3@340tuple4@341tuple5@342tuple6@343tuple7@344tuple8@345ensureType@825setelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtolerancecountAuxheightget_tolerancerebalancet1t2addbalancesplitpivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1minimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackscompares1s2loop@476-35toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayget_stackget_startedloop@708-36PickFindKeyTryFindKeykvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@294foldSectionloop@314-33loop@566-34kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@220-25loop@230-26len1Exists2loop@237-27loop@247-28ForAll2loop@253-29loop@265-30loop@304-31loop@312-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceBySortInPlaceSortWithgo@541-1FindIndexgo@553-2TryFindIndexPermuteindexMapGetSubArraystartIndexFilllistschooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24sepstringsstrcheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3sourcesTCollectionfromGeneratorgo@1073CompareWithTruncateloop@1161-16loop@1174-17f@555-1windowSizeWindowedoneStepTo@1219prefixenumeratorRf@4244-2f@4244-3CacheReadOnlyDistinctByCountByenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionscreateiter@632compsouterEnumcurrInnerEnumFinishtakeOuter@667currElementtakeInner@660EnumerateUsingmkConcatSeqgetCurr@705-1currstart@708-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@466GenerateFromEnumeratorIsStopIsYieldIsGoto_unique_Stopget_Stopget_IsStopNewYieldget_IsYieldget_IsGotoApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@155choosenext@178filterunfoldgetCurrent@221uptolastOptionf@4244readAndCleargetCurr@258start@261finish@264generateWhileSomeNotStartedIsNotStartedInProcessIsInProcessFinishedIsFinished_unique_NotStarted_unique_InProcess_unique_Finishedget_NotStartedget_IsNotStartedget_InProcessget_IsInProcessget_Finishedget_IsFinishedDoMoveNextfinalIndexactiveStructuralFromFunctionLimitedStructurallimitReferenceFromFunctionshasherequalityhasheqBase1Base2ZeroCreateBasedCreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2swap@484valuesExistpartition@493leftrightqs@506qsortlastArray.Sort.StaticzeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@173-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@395-15sortWithcmprevAppendmergesort2sort3$cont@434cxycyzsort3trivialstableSortInnerlastableSortFunc`1creatorCreateFromValueget_IsValueCreatedLazy`1.get_IsDelayedLazy`1.get_IsForcedForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternop_LessThanop_GreaterThanop_LessThanOrEqualop_Equalityop_InequalityFailWithInvalidArgargumentNameNullArgInvalidOpRethrowObsoleteAttributeReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_UnaryNegationop_Divisionop_Modulusop_UnaryPlusop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleLocklockObjectTLockTypeOfMethodHandleOf_callTypeDefOfSizeOfHashlimitedHashIdentityop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundSignLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4744RangeInt32stopgen@4744-1RangeInt64gen@4744-2RangeUInt64gen@4744-3RangeUInt32gen@4744-4RangeIntPtrgen@4744-5RangeUIntPtrgen@4744-6RangeInt16gen@4744-7RangeUInt16gen@4744-8RangeSBytegen@4744-9RangeBytegen@4813-10RangeDoublegen@4813-11RangeSinglegen@4721-12oneRangeGenericgen@4744-13zeroRangeStepGenericgen@4721-14tupledArg_0RangeCharloop@4841PowByteloop@4841-1PowSByteloop@4841-2PowInt16loop@4841-3PowUInt16loop@4841-4PowInt32loop@4841-5PowUInt32loop@4841-6PowInt64loop@4841-7PowUInt64loop@4841-8PowIntPtrloop@4841-9PowUIntPtrloop@4841-10PowSingleloop@4841-11PowDoubleloop@4841-12PowDecimalloop@4841-13mulPowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeStepResultupcanStarttupledArg_4OverflowExceptionPowDefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalCompareranyToStringShowingNullGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2120.cctor$cont@2153-2.cctor$cont@2153-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerisOXBis0OXBget0OXBgetSign32getSign64FormatExceptionparse@2251parseOctalUInt64parse@2255-1parseBinaryUInt64TrimNumberStylesParseUInt32ParseInt32ParseInt64ParseUInt64.cctor$cont@2330-3aty.cctor$cont@2354-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2445bty.cctor$cont@2459-5AdditionDynamicdyn@2482-6.cctor$cont@2497-6CheckedAdditionDynamicdyn@2522-12.cctor$cont@2536-7MultiplyDynamicdyn@2559-18.cctor$cont@2573-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@953yobjarr1GenericCompare$cont@965-1GenericComparecheck@997lenxbasexbaseycheck1@1020lenx1basex0basex1basey0basey1check0@1019lenx0precheck@1034ndimscheckN@1044idxsbaseIdxcheck@1053-1GenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1395erGenericEqualitySingleArrayfeq@1412GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1464iecGenericEqualityObjcheck@1498-2check1@1516-1check0@1515-1precheck@1523-1checkN@1531-1check@1538-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IComparer-CompareSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodesznodeCountFreshTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativescaleGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_TypeInfoop_Ampop_BooleanAndop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringGetElementTypeArray.CloneAddressOpNotFirstClassString@635NoNegateMinValueString@636InputSequenceEmptyString@638InputArrayEmptyString@640InputMustBeNonNegativeString@642NaNException@935fsComparer@1167fsComparerNoThrow@1168fsEqualityComparer@1618fsEqualityComparerER@1623fsUnlimitedHasherER@1770fsUnlimitedHasher@1771GenericComparer@2030GenericEqualityComparer@2031GenericEqualityERComparer@2032CompareTo$cont@2948CompareTo$cont@2948-1objCastEquals$cont@2948CompareTo$cont@2957-2CompareTo$cont@2957-3GetHashCode$cont@2957Equals$cont@2957-1Equals$cont@2957-2CompareTo$cont@2967-4CompareTo$cont@2967-5GetHashCode$cont@2967-1Equals$cont@2967-3Equals$cont@2967-4copy@3264itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptyinputSequenceTooLongmapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesinvalidRecordTypeConstructorNotDefinedinvalidTupleTypeConstructorNotDefinedthenByErrorfailDueToUnsupportedInputTypeInSumByOrAverageByunsupportedIfThenElseunsupportedQueryConstructunsupportedQueryConstructKindunsupportedQueryCallunsupportedQueryPropertyget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_inputSequenceTooLongget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesget_invalidRecordTypeConstructorNotDefinedget_invalidTupleTypeConstructorNotDefinedget_thenByErrorget_failDueToUnsupportedInputTypeInSumByOrAverageByget_unsupportedIfThenElseget_unsupportedQueryConstructget_unsupportedQueryConstructKindget_unsupportedQueryCallget_unsupportedQueryPropertyGetString1GetString2GetString3resources@4GetExecutingAssembly)matchCasesIncomplete Some()Length > 1000Length = #inputListWasEmpty[; ]; ... ][] map [ map []%mapCannotBeMutatednotComparableobj set [ set []%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementationtupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invoke arrayg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecordNewUnionCaseUnionCaseTestNewTuple%ATupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblyDequeueqInternal error: attempting to install continuation twicecheckInit=failed to queue user work item€³F:\dd\fsharp\projects\FSharp.Core.Portable\..\..\devdiv\src\fsharp\FSharp.Core\control.fsunreachable=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut source rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated_failDueToUnsupportedInputTypeInSumByOrAverageBytupledArgcopyOfStructvKeyx3unsupportedQueryConstructNewRecord(...)!NewDelegate(...)NewTuple(...)NewUnionCase( ...);unsupportedQueryConstructKind new NewArray( ,...)FieldGet(#LetRecursive(...)+unsupportedIfThenElse)unsupportedQueryCall1unsupportedQueryProperty afterthenByErrorRuniMicrosoft.FSharp.Linq.QueryRunExtensions.LowPriorityRunQueryAsValuekMicrosoft.FSharp.Linq.QueryRunExtensions.HighPriority)RunQueryAsEnumerable Item)unreachable, ty = %AWThis function should not be called directlyecannot convert recursion except for function typesThe variable 'W' was not found in the translation context'eExpected Constructor call in member initialization!unreachable caseToFSharpFunc€ÃCould not convert the following F# Quotation to a LINQ Expression Tree -------- %A -------------  unit€Parameterized properties not supported in member initialization.[Expected PropertySet in member initializationInvokeFastkDynamic invocation of op_Subtraction is not supportedcDynamic invocation of op_Modulus is not supportedeDynamic invocation of op_Division is not supported+failedReadEnoughBytesAsyncResultmismatchIAREndiar#mismatchIARCancelResultCell)Unexpected no resultOcontrolContinuationInvokedMultipleTimescmultiple waiting reader continuations for mailboxqshould not happen - waitOneNoTimeout always returns trueCTimed out with infinite timeout??'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list-inputMustBeNonNegative#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of rangeQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray this/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '' <null>'printfExpectedWidth/printfExpectedPrecisionl true falseG%sToString count'popBreak: underflow €™F:\dd\fsharp\projects\FSharp.Core.Portable\..\..\devdiv\src\utils\sformat.fs unpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=mapsetseq <seq>+<ToString exception: unuyyussuLgMnan-infinityinfinity.0 null=?-System.Linq.IQueryable()#<published event>7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypesKinvalidTupleTypeConstructorNotDefinedMinvalidRecordTypeConstructorNotDefined)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4sourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize)inputSequenceTooLong#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionm-nonZeroBasedDisallowedsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supported[Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supportedmmay not call directly, should always be optimized away!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmpty'findElementNotFound1findIndexElementNotFound'pickElementNotFoundsyncContextNullcannotMutatekeyNotFoundQincorrectType FSCoreï×PLÚô§Eƒï×P|ì…×¾§yŽ €Ä €Ä €Ä€Ü€Ü €Ü€ü€ü €ü$$$TTTŒŒŒ Ü Ü à à è è-øü9 ‚ AEI -E‚,A ÔÔ‚p ‚¸‚Ä‚ì-QÔ’DÔE’DEÔƒ¤àUƒ¤èYƒ¤!Ôƒ¤à]ƒ¤èYƒ¤ƒ¤$Ôƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤ Ôƒ¤ƒ¤Ôe‚ÀÔƒ¤ƒ¤ÔeèYèÔUèYèÔeèY胤ƒ¤ÔUƒ¤èY胤ƒ¤ÔUèYèÔUèY胤ƒ¤Ô]ƒ¤Ô]Ô]‚Àƒ¤Ôi‚ÀÔa‚ÀÔa‚Àƒ¤Ôm‚ÀqÔUYÔUƒ¤ÔUÔa„üƒ¤‚Àƒ¤ƒ¤Ô]Yƒ¤ƒ¤ƒ¤ÔeYƒ¤ƒ¤ ÔYƒ¤ÔiYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤Ô]ƒ¤‚Àƒ¤ƒ¤Ô]ƒ¤‚Àƒ¤ÔUYƒ¤ƒ¤&ÔmYYYƒ¤‚Àƒ¤e‚Àƒ¤ƒ¤4ÔmYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤Ô‚Ààƒ¤–˜è‚À胤$–˜è‚À胤èe‚Àƒ¤–˜è‚Àƒ¤èe‚Àƒ¤–˜Ôƒ¤ƒ¤ƒ¤àƒ¤ –˜†`ƒ¤Ôƒ¤eƒ¤†` Ô-ÔÔ uY ÔÔyÔY Ôƒ¤Y Ô-YÔY –˜†`YYÔèYèY ÔyY Ôƒ¤–˜ƒ¤ƒ¤ƒ¤ Ôƒ¤(Ôƒ¤àUàƒ¤èY胤 Ôƒ¤} Ô-} Ôy€Ô-€Ôe€…€…€‰ Ô€ Ô‚À€‘Ô‚(‚À€…‚(‚À€…&–˜‚À€‘Ô‚(‚À€…‚(‚À€… Ô‚À€…Ô-€… Ôƒ¤€…ô‡ÀøÔàÔ øeÔà Ô Ô% Ô€•Ô€ÄÔ€Ä!Ô‰X€ÄƒÈ€ÄÔ€™ƒÈ€ÄԃȀÄԃă´ ÔÔ%ƒÈ€Ôe€¡M ÔM€ÔƒÈ€Ôa€¡MÔMÔ ÔƒÈÔƒÈÔƒÈ ÔM Ôƒ´ Ô%ƒ´ Ô€•ƒ´ Ôƒ´Ô%ƒÈÔƒÈԃă´Ô‰<‰XԃĀ™ƒ´Ô9ƒÈÔƒÈԃĀÄ%ƒ´Ô€™ƒÈ€¥ÔƒÈ€¥–˜ƒÈԃă´ ÔƒÈԃă´Ô‰XƒÈ ÔƒÈÔ€™ƒÈÔU€¡M ÔM Ô€©ÔƒÐ ÔÔ€™ƒÈƒÈԃȃÈÔÔ€™ƒÈ=ÔƒÈ=ÔƒÈàԀăÈàÔƒÈàÔƒÈàÔ€™ƒÈàÔàƒÈÔ‰HƒÈàÔƒ¤àeè‚Àƒ¤Ôƒ¤àeƒ¤èƒ¤Ôƒ¤àe‚Àƒ¤ Ô‚L –˜€­ƒ¤ –˜Yƒ¤ –˜yƒ¤ Ôƒ¤ –˜€­YYÔe‚Àƒ¤Ôe‚Àƒ¤ƒ¤ –˜YYÔYÔÔÔYYY Ô€­YÔèYYÔÔÔÔYYÔøÔÔYYÔøèÔÔYYÔÔYèYÔøÔŒˆƒ¤ÔøèÔŒˆƒ¤ÔÔŒˆƒ¤ƒ¤ ÔŒˆƒ¤ ÔŒˆ‚ÀÔèYyÔèY‚LÔÔèY‚ìÔèY‚ìÔøe€±ÔŒˆƒ¤Ôøèe€±ÔŒˆƒ¤ÔÔŒˆƒ¤Ôèe€±ÔŒˆƒ¤–˜‚D‚Àƒ¤‚D‚À ue€µÔuÔÔe€±ÔŒˆƒ¤"Ôeèe€±ÔŒˆƒ¤Ô#Ôeèe€±ÔŒˆƒ¤ ÔøÔøè –˜ –˜ Ôƒ¤‚–˜‚‚‚ Ô‚À‚ Ô‚Ôeƒ¤èƒ¤ƒ¤ÔÔ&Ô]ÔÔÔ'Ô]ÔÔÔÔÔÔ –˜Y–¤èYÔe‚‚Ôeà‚‚ŽèÔ –¤Žä‚ Ô‚ÔŽäÔ‚ÔÔŽäÔ‚Ôe‚ –˜‚‚Ôàe Ô‚ÔàeÔe‚ÔŽäÔe‚ÔÔŽäÔe‚Ôàe€¹yÔyeà‚Ôee‚ÔàeÔÔ–˜ye Ô‚‚–¤èeÔ ‚‚‚ ü‚ –˜€½€½ Ô€½Ô€àeÔeàÔ –˜yyÔÔÔy–˜e‚L–˜‚,‚, –˜–˜‚,‚,–˜‚D‚D‚DÔEeÔeà–˜‚e‚ –˜ 9EÔE Ô-ÔE–˜EE –˜ Ô9Ô99Ô99–˜999–˜e–˜eU‚Ô’¸ ‚e‚ÔàeÔE’D€Á#ÔE’D€Áe-Ô-e-ÔE’DeÔ-eu u’D 9-Ô9- –˜’˜’¸Ô’˜’쀹 –˜ Ô –˜“¨“¨–˜“´-–˜ “´ - –˜ “´ - –˜ “´ - –˜“´-–˜“´-–˜“´-–˜“´-–˜“´-–˜“´-“´ “¸ - “´ “¸ - “´“´- –˜Ô ÔÔÔÔ ÔÔ Ô Ô€É€É–˜ ÔÔ–˜ Ô ÔÔ Ô Ô€ÉÔÔ ÔÔÔÔÔÔÔÔ –¤ÔÔÔÔ–´%ÔÔÔÔÔ–È€¹€¹€¹€¹€¹€¹ €¹€¹€¹€¹ €¹ €¹€¹ €¹ €¹€É –˜€É€É–˜  –˜  –˜ÔÔÔ–˜–˜€ $€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“ Microsoft.FSharp@;Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsMicrosoft.FSharp.Core!Microsoft.FSharp.CollectionsMicrosoft.FSharp.Control94Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority:5Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority FSharp.Core.dllMicrosoft Corporation% Microsoft® Visual Studio® 20123.© Microsoft Corporation. All rights reserved. 2.3.5.0 2.3.50727.0 en-US*%F:\dd\tools\devdiv\FinalPublicKey.snk TWrapNonExceptionThrows        (  !T AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleäT AllowMultiple( ÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple( T AllowMultiple(         ÿT AllowMultiple(  (-   -T AllowMultiple  ÀT AllowMultipleT AllowMultiple 5 €Ì  €Ä  €Ð  €Ä  €Ä €Ä €Ì€Í €Ð  E €Ì€Ì€Í€Ð€Ð€Ä€Ä €ÄK €Ä€Ì€Ì€Ð€Ð€Ä€Ä €Í€Ì€Ð €Ñ €ÑB €Ì€Ì€Ð€Ð€Ä€Ä €ÄFSharpChoice`2(  YC>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy €Ô €Ì €Ø €Ð €ä€Ü €è€Ü €ì €Ü  €Ü €Ü €ä €è €ì v€ä€ä€Í€è€è€ì€ì€Ü€Ü€Ü €Ü~€Ü€ä€ä€è€è€ì€ì€Ü€Ü€Ü5€ä€è€ì€Üs€ä€ä€è€è€ì€ì€Ü€Ü€Ü €ÜFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy €ð €ä €ô €è €ø €ì  €ü €ü  €ü  €ü   €Í   €ü€ü€‰€ü  ?  |   €ü€üFSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy          ,$0$4$8$< $   $$$,048<X ,048< €®,,004488<< $FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxy@ ,D 0H 4L 8P <\T`TdThTlTp T   TTT TFSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxy\t \`x `d| dh€ hl„ lpˆ p”Œ˜ŒœŒ Œ¤Œ¨Œ¬ Œ   ŒŒŒ ŒŒFSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxy”° ”˜´ ˜œ¸ œ ¼  ¤À ¤¨Ä ¨¬È ¬     =A% Ì%I I %0  –˜ –˜ ÔÔ Ô–˜–˜ÔÔ–¤–˜Ô –¤ –˜Ô ÔÔÔÔ @–¤–¤–˜Ô–˜Ô"ÔÔÔ–´–¤Ô–˜ÔÔ–´ –¤Ô Ô–˜ÔÔ ÔÔÔÔ z–´–´–¤Ô–¤Ô–˜ÔÔ–˜ÔÔ+ÔÔÔÔ–È–´Ô–¤ÔÔ!–˜ÔÔÔ–È –´Ô Ô–¤ÔÔ  –˜ÔÔÔ %ÔÔÔÔÔ €Æ–È–È–´Ô–´Ô–¤ÔÔ–¤ÔÔ–˜ÔÔÔ–˜ÔÔÔ4ÔÔÔÔÔ˜È QÔQ ˜Ì Ôe"ÔÔÔe ˜Ð ÔU+ÔÔÔÔU˜Ô Ô]4ÔÔÔÔÔ]˜Ø Ôa=ÔÔÔÔÔÔaÜ €Í ÜÜ Ü Ü Ü FSharpRef`1 {contents} à àà àà à à' àà€Íàà à+ ààààà à à à$àààà àFSharpOption`1 Some({Value}) è (è(èè è èèè è( èè€Íèè è, èèèèè è+ èèèèèèè è è  aèèè– è 9 5 Item FSharpList`1{DebugDisplay,nq}(ð 0è èèèè % =ô   M€¡ MFSharpHandler`1‚ --9“$ ‚9#‚-9‚‚ii Ô‚  Ô- ‚ ‚ ‚ ‚ ‚ ‚‚"‚‚‚ ‚ ‚ ‚!AeÔaƒ¤ƒ¤‚Àƒ¤ƒ¤Ômƒ¤YYY‚Àqƒ¤ñÔaƒ¤ƒ¤‚Àƒ¤ƒ¤!Ômƒ¤YYY‚Àqƒ¤&eÔUYƒ¤ƒ¤ÔUYÔUYƒ¤ƒ¤ÔUYÔeèY胤ƒ¤Ôa„üƒ¤‚Àƒ¤ƒ¤ÔeYƒ¤ƒ¤ ÔYƒ¤ ÔiYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤(ÔmYYYƒ¤‚Àƒ¤e‚Àƒ¤ƒ¤6ÔmYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤*Ôƒ¤àUàƒ¤èY胤 Ôƒ¤àUƒ¤èYƒ¤#Ôƒ¤à]ƒ¤èYƒ¤ƒ¤&Ôƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤ €à€€ à€y)Ôƒ¤àUàƒ¤èY胤*Ôƒ¤àUàƒ¤èY胤#Ôƒ¤àUƒ¤èYƒ¤ñ&Ôƒ¤à]ƒ¤èYƒ¤ƒ¤ñ)Ôƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤ñàU‚Àƒ¤ƒ¤àeƒ¤ à‚Àeèe‚Àƒ¤ƒ¤àU‚Àƒ¤ƒ¤ U‚Àƒ¤ƒ¤ àeƒ¤eƒ¤à‚Àeèe‚Àƒ¤ƒ¤èe‚Àƒ¤L àU‚Àƒ¤ƒ¤àeƒ¤à‚À‚Àƒ¤‚Àƒ¤eèe‚Àƒ¤ƒ¤eèe‚Àƒ¤ƒ¤‚Àƒ¤èe‚Àƒ¤U‚Àèe‚Àƒ¤ƒ¤àU‚Àèe‚Àƒ¤ƒ¤?àe‚Àƒ¤‚Àƒ¤eèe‚Àƒ¤ƒ¤èe‚Àƒ¤ƒ¤#àU‚Àèe‚Àƒ¤ƒ¤ƒ¤„° e‚Àƒ¤ƒ¤èe‚Àƒ¤àU‚Àèe‚Àƒ¤ƒ¤è‚Àèèe‚Àƒ¤ èe‚Àƒ¤-èe‚Àƒ¤ e‚Àƒ¤5àU‚Àèe‚Àƒ¤ƒ¤‚Àèe‚Àƒ¤ƒ¤5àeè‚Àƒ¤è‚Àèèe‚Àƒ¤ƒ¤àeè‚Àƒ¤ƒ¤€±ñÔeèYèñÔUèYèñ€€èY ÔeèY胤ƒ¤ñ#ÔUƒ¤èY胤ƒ¤ñ€Yƒ¤YY‚Àƒ¤ÔUèYèÔUƒ¤èY胤ƒ¤„Ä ÔUèYè„È! ÔUƒ¤èY胤ƒ¤:eÔUèYèÔUèY胤ƒ¤8ÔUèYèÔUƒ¤èY胤ƒ¤@eÔUèYèÔUèY胤ƒ¤ñ6eÔeèYèÔeèY胤ƒ¤peeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤xeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ññèYeèY胤Dƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤Yƒ¤ƒ¤èeèYè8ÔeèYèÔeèYèYƒ¤qeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYè „Ì9 ÔeèY胤ƒ¤ÔeèY胤ƒ¤ „Ð1 ÔeèYèÔeèYè(eÔ]ƒ¤Ô]€ÖeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYè1eÔ]ƒ¤Ô]ññ,eÔ]Yƒ¤ƒ¤ƒ¤Ô]Yƒ¤Ô]Yƒ¤ƒ¤ƒ¤Ô]Yƒ¤ YYƒ¤ƒ¤Eƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ƒ¤‚Àƒ¤€…€…? ÔeèYèÔeèYèYYY‚Àƒ¤ „Ô„Ø0eÔ]‚Àƒ¤Ôi‚À9eÔ]‚Àƒ¤Ôi‚Àññ4eÔ]ƒ¤‚Àƒ¤ƒ¤ÔiYYY‚Àƒ¤Ô]ƒ¤‚Àƒ¤ƒ¤ÔiYYY‚Àƒ¤ Yƒ¤ƒ¤;ÔeèYèÔeèYèY‚Àƒ¤ „Ü „à,eÔ]‚Àƒ¤Ôa‚À5eÔ]‚Àƒ¤Ôa‚Àññ0eÔ]ƒ¤‚Àƒ¤ƒ¤ÔaY‚Àƒ¤ÔaY‚Àƒ¤„ Uƒ¤èY胤YYƒ¤ƒ¤n ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔUƒ¤èY胤ƒ¤‚Àƒ¤ƒ¤ƒ¤YYƒ¤ ÔeèY胤ƒ¤YYYƒ¤ƒ¤?ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔUƒ¤èY胤ƒ¤ƒ¤ƒ¤‚Àƒ¤àÔeèYè‚àÔeèYè %UèYèb àÔeèYèYY%‚‚àÔeèYèÔeèY耞ÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔUèYè‚ÀYYYƒ¤ ÔeèY者ÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔUèYèYYY‚Àƒ¤;eÔUèYèÔUƒ¤èY胤ƒ¤ ƒ¤:eÔUèYèÔUƒ¤èY胤ƒ¤ „ä0 ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔUƒ¤èY胤ƒ¤„è ÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔeèYèÔUèYè8eÔa‚Àƒ¤Ôm‚Àq„–eeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèeÔUèYèÔUƒ¤èY胤ƒ¤ÔUƒ¤èY胤ƒ¤ÔUèYè] eÔa‚Àƒ¤Ôm‚Àqñññññññññññ>eÔaƒ¤ƒ¤‚Àƒ¤ƒ¤Ômƒ¤YYY‚Àqƒ¤ñÔaƒ¤ƒ¤‚Àƒ¤ƒ¤!Ômƒ¤YYY‚Àqƒ¤Aƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤Yƒ¤ UYY;ÔeèYèÔeèYèUYÐÔUY „ôÔUY „ø$eÔUƒ¤ÔU€èeeÔeèYèÔeèY胤ƒ¤eÔeèYèÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèY胤ƒ¤ÔeèYèÔeèYèÐÔUY-eÔUƒ¤ÔUññ&eÔUYƒ¤ƒ¤ÔUYÔUYƒ¤ƒ¤ÔUYÔeèY胤ƒ¤Ôa„üƒ¤‚Àƒ¤ƒ¤ÔeYƒ¤ƒ¤ ÔYƒ¤ ÔiYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤…7 ÔeèY胤ÔeèY胤LÔ]ƒ¤‚Àƒ¤ÔeèY胤ÔeèY胤8ÔeèY胤ƒ¤ÔeèY胤ƒ¤Ô]ƒ¤‚Àƒ¤ƒ¤ññÔ]Yƒ¤ƒ¤ƒ¤ññ(ÔmYYYƒ¤‚Àƒ¤e‚Àƒ¤ƒ¤6ÔmYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤ƒ¤ àƒ¤ €Ü‚Àe‚Àƒ¤e胤…8" ÔÔƒ¤Ôƒ¤àƒ¤…<ÔÔƒ¤ƒ¤ àƒ¤€è‚Àe‚Àƒ¤e胤€ä‚Àe‚Àƒ¤e胤€ì‚Àe‚Àƒ¤e胤 e胤 ƒ¤ƒ¤àƒ¤bÔƒ¤ƒ¤àƒ¤€Ü‚Àe‚Àƒ¤e胤胤‚Àƒ¤€Ü‚Àe‚Àƒ¤e胤(ƒ¤ÔÔƒ¤Ôƒ¤àƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤!ÔÔƒ¤Ôƒ¤àƒ¤àU‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤ àƒ¤ƒ¤L àU‚Àƒ¤ƒ¤‚Àƒ¤àe‚Àƒ¤à‚Ààeƒ¤à‚À‚Àƒ¤àƒ¤ƒ¤àUàƒ¤y胤 à€àUàƒ¤€èƒ¤àeèè‚Àƒ¤èè‚À ‚(‚Àƒ¤àUàƒ¤y胤Uàƒ¤y胤àUàƒ¤€èƒ¤Uàƒ¤€èƒ¤àeèè‚Àƒ¤eèè‚Àƒ¤ è‚Àƒ¤èe‚Àƒ¤-e‚Àƒ¤€ àUàƒ¤y胤à€àƒ¤ƒ¤àUàƒ¤€èƒ¤àƒ¤àeèè‚Àƒ¤èè‚À胤‚(‚Àƒ¤àeƒ¤è胤è胤àeƒ¤è胤eƒ¤è胤 èè‚À è胤 è‚À胤! è‚À胤èe‚Àƒ¤\àeƒ¤è胤àeèè‚Àƒ¤èè‚Àè胤ƒ¤‚(‚Àƒ¤*Ôƒ¤àUàƒ¤èY胤 Ôƒ¤àUƒ¤èYƒ¤#Ôƒ¤à]ƒ¤èYƒ¤ƒ¤&Ôƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤àeƒ¤ƒ¤ àeY!àUàƒ¤èY胤àeƒ¤ƒ¤ eƒ¤ƒ¤ àeYeYà]àeƒ¤ƒ¤àeYàUàƒ¤èY胤àUàƒ¤èY胤 àƒ¤†h è†`†l†t†`†p †`ƒ¤a„üƒ¤‚Àƒ¤ eYƒ¤Q„  y:†hè†`†lY†t†`ƒ¤‚Àƒ¤ƒ¤Y†pYYYY胤 ƒ¤†`ƒ¤ Y‚Àƒ¤ƒ¤e‚Àƒ¤†`‚Àƒ¤ àUàƒ¤èY胤Uàƒ¤èY胤€¥ àUàƒ¤èYèƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àUàƒ¤èYèƒ¤èƒ¤èƒ¤àƒ¤àUàƒ¤èYèƒ¤èƒ¤àƒ¤màUàƒ¤èYèƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àUàƒ¤èYèƒ¤èƒ¤àƒ¤…t…l„ü…t…l‚Àƒ¤„ü…lƒ¤…làUƒ¤èYƒ¤ e‚Àƒ¤ eƒ¤†`à]ƒ¤èYƒ¤ƒ¤àUƒ¤ƒ¤ƒ¤à e…l†`Uƒ¤‚Àƒ¤àUƒ¤èYƒ¤Uƒ¤èYƒ¤ eƒ¤†` Y e…l†`à]ƒ¤èYƒ¤ƒ¤]ƒ¤èYƒ¤ƒ¤]ƒ¤‚Àƒ¤àUƒ¤ƒ¤ƒ¤ Uƒ¤ƒ¤ƒ¤ Uƒ¤‚Àƒ¤-iYƒ¤‚Àƒ¤‚Àƒ¤€ºàUƒ¤èYƒ¤ƒ¤e‚Àƒ¤‚Àƒ¤eƒ¤†`†`ƒ¤ƒ¤àƒ¤àƒ¤à]ƒ¤èYƒ¤ƒ¤àe‚Àƒ¤àUƒ¤ƒ¤ƒ¤àe…l†`…lYUƒ¤‚Àƒ¤…t‚À…lYYY e…l†`„üY‚ÀY†`…lƒ¤!mƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤ mƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤qƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤,mYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤mmƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤†`ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†`e‚Àƒ¤‚Àƒ¤e‚Àƒ¤‚Àƒ¤eƒ¤†`ƒ¤†`ƒ¤, e…l†`Yƒ¤‚À‚Àƒ¤ƒ¤‚À‚Àƒ¤ƒ¤pmƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤†`ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†`e‚Àƒ¤‚Àƒ¤†`e‚Àƒ¤‚Àƒ¤eƒ¤†`ƒ¤†`ƒ¤pƒ¤mƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤†`ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†`e‚Àƒ¤‚Àƒ¤e‚Àƒ¤‚Àƒ¤eƒ¤†`ƒ¤†`ƒ¤. e…l†`Yƒ¤‚À‚Àƒ¤Yƒ¤‚À‚Àƒ¤ƒ¤àeY胤àUYè‚Àƒ¤à胤àe‚L胤àe‚L胤e‚L胤OàeY胤àUYè‚Àƒ¤à胤àe‚L胤‚Le…l†`ƒ¤àe胤àeàƒ¤€½àeèe‚Àƒ¤ƒ¤àe胤e胤àeY胤eY胤àeàƒ¤€½eàƒ¤€½màe胤àeY胤Yà胤àeàƒ¤€½€½àeèe‚Àƒ¤ƒ¤àeƒ¤YèY]ƒ¤†`‚Àƒ¤]…l†`‚Àƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤àeƒ¤Y eƒ¤Y]ƒ¤†`‚Àƒ¤]…l†`‚Àƒ¤ UYƒ¤ ]Yƒ¤ƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤aƒ¤èYƒ¤ƒ¤ƒ¤mYYYƒ¤‚Àƒ¤e‚Àƒ¤‡ª€³àeƒ¤Yƒ¤YàUàƒ¤èY胤èYèYèYèY胤胤àe‚Àƒ¤‚Àƒ¤Ye…l†`†`…l„üY‚ÀY†`à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤]ƒ¤†`‚Àƒ¤ƒ¤ƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤]…l†`‚Àƒ¤eƒ¤†`ƒ¤àUàƒ¤èY胤胤àUƒ¤èYƒ¤èYèYàUƒ¤ƒ¤ƒ¤àà]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤àUƒ¤èYƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤e‚Àƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤èYèYèYèYàe‚Àƒ¤àe‚Àƒ¤‚Àe‚Àƒ¤‚Àƒ¤eƒ¤†`ƒ¤ƒ¤†`àUàƒ¤èY胤èYèYèYèYèY胤胤胤àe‚Àƒ¤èƒ¤àe‚Àƒ¤èƒ¤àeè‚Àƒ¤è‚Àè‚ÀàUàƒ¤èY胤èYèYèYèYèY胤胤胤àe‚Àƒ¤èƒ¤àe‚Àƒ¤èƒ¤àeè‚Àƒ¤è‚Àè‚ÀàUàƒ¤èY胤èYèYèYèYèY胤胤胤àe‚Àƒ¤èƒ¤àe‚Àƒ¤èƒ¤àeè‚Àƒ¤è‚Àè‚Ààƒ¤àƒ¤àUƒ¤èYƒ¤àUƒ¤èYƒ¤àUàƒ¤€èƒ¤€àUàƒ¤y胤ye…l†`„üƒ¤e…l†`…l†`eƒ¤†`„üƒ¤!àƒ¤ƒ¤eƒ¤†`ƒ¤†`YYeƒ¤†`ƒ¤_eƒ¤†`†`ƒ¤eƒ¤†`ƒ¤†`e‚Àƒ¤‚Àƒ¤e‚Àƒ¤‚Àƒ¤eƒ¤†`ƒ¤ƒ¤eƒ¤†`ƒ¤5mƒ¤†`ƒ¤†`‚Àƒ¤‚Àqƒ¤ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤e…l†`†`…le‚Àƒ¤]…l†`‚Àƒ¤ƒ¤‚Àƒ¤]…l†`‚Àƒ¤†`…l‚Àƒ¤]ƒ¤†`‚Àƒ¤ƒ¤‚Àƒ¤, eƒ¤†`†`ƒ¤YY‚Àe‚Àƒ¤‚Àƒ¤ƒ¤ ƒ¤„üƒ¤]ƒ¤†`‚Àƒ¤Uƒ¤‚Àƒ¤ƒ¤‚Àƒ¤aƒ¤ƒ¤‚Àƒ¤Ôaƒ¤ƒ¤‚Àƒ¤ƒ¤„ [à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤ƒ¤‚Àƒ¤YUƒ¤‚Àƒ¤ƒ¤‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤àUƒ¤èYƒ¤èYèYYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤ƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYàƒ¤àƒ¤ ƒ¤ƒ¤% „üƒ¤iYYY‚Àƒ¤ÔiYYY‚Àƒ¤UYÔUYmƒ¤YYY‚Àqƒ¤Ômƒ¤YYY‚Àqƒ¤aY‚Àƒ¤ÔaY‚Àƒ¤ ]Yƒ¤Ô]Yƒ¤ƒùYà]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤ƒ¤‚ÀYƒ¤YYà]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤àUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYàUƒ¤èYƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤ƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYàe‚Àƒ¤à]ƒ¤èYƒ¤ƒ¤èYèYà]ƒ¤èYƒ¤ƒ¤èYèYàƒ¤àƒ¤+ Ôƒ¤àUàƒ¤èY胤?àUàƒ¤èYèƒ¤àƒ¤èƒ¤èYƒ¤ƒ¤ àUƒ¤èYƒ¤ƒ¤JàUàƒ¤èYèƒ¤àƒ¤èƒ¤èƒ¤èYƒ¤ƒ¤ƒ¤ à]ƒ¤èYƒ¤ƒ¤ƒ¤U àUàƒ¤èYèƒ¤àƒ¤èƒ¤èƒ¤èƒ¤èYƒ¤ƒ¤ƒ¤ƒ¤! àaƒ¤èYƒ¤ƒ¤ƒ¤ƒ¤„¬ ‚À ƒ¤ƒ¤ e‚À‚À Ôƒ¤ƒ¤e‚ÀèèYè€%‚‚ eèYèèYè€%‚‚ UèYèèY胤 ƒ¤eèY胤ƒ¤èY胤 ƒ¤Uƒ¤èY胤„ÄUèYèèYè UèYè„ÈUèY胤èY胤 ƒ¤UèY胤 „Ì ]  ƒ¤] „Ð ] „Ô ]‚À ‚À ƒ¤]‚À„Øi‚À‚À i‚À „Ü „àa‚À ‚À a‚À „äa‚À ‚À ƒ¤a‚À„èm‚Àqq‚À m‚Àq„ð4 ÔeèYèÔeèYè„ìÔUY„ì„ð UY Y„ì UY „ô U ƒ¤U „ø UY U$ „üƒ¤‚Àƒ¤à‚À‚ÀYYƒ¤ƒ¤ ƒ¤a„üƒ¤‚Àƒ¤ Yƒ¤ƒ¤ ƒ¤]Yƒ¤ƒ¤Yƒ¤ ƒ¤eYƒ¤ ƒ¤Y&Yƒ¤‚Àƒ¤‚Àƒ¤YYƒ¤Yƒ¤ƒ¤ƒ¤ ƒ¤iYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤YYƒ¤ ƒ¤]ƒ¤‚Àƒ¤ÔeèY胤…ÔeèY胤ƒ¤‚Àƒ¤YYƒ¤ƒ¤ ]ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤Yƒ¤ƒ¤Yƒ¤ ƒ¤UYƒ¤$ YYYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤# ƒ¤mYYYƒ¤‚Àƒ¤e‚Àƒ¤8YYYYƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤1 ƒ¤mYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤:YYYYƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤Yƒ¤ƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤…8…< ƒ¤ àƒ¤‚À è‚À胤! èe‚Àƒ¤è‚À胤 ‚(‚Àƒ¤ ‚(‚Àƒ¤-è‚À‚Àƒ¤à胤è‚À胤 èe‚Àƒ¤è‚Àƒ¤ àƒ¤ƒ¤ àƒ¤Ôƒ¤ƒ¤ƒ¤ ƒ¤ ƒ¤†`…l„ü…l‚Àƒ¤…lƒ¤…l„üà‚À‚À(„ü(…l „ü…l‚Àƒ¤ „ü …lMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Select@DebugTypeProxyLGMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Other@DebugTypeProxyMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Source@DebugTypeProxy …t…x …x…| …| eƒ¤†`ƒ¤ Y‚ÀÕÕÕÕÕ-+eÔ]Yƒ¤ƒ¤ƒ¤Ô]Yƒ¤Ô]Yƒ¤ƒ¤ƒ¤Ô]Yƒ¤3eÔ]ƒ¤‚Àƒ¤ƒ¤ÔiYYY‚Àƒ¤Ô]ƒ¤‚Àƒ¤ƒ¤ÔiYYY‚Àƒ¤/eÔ]ƒ¤‚Àƒ¤ƒ¤ÔaY‚Àƒ¤ÔaY‚Àƒ¤=eÔaƒ¤ƒ¤‚Àƒ¤ƒ¤Ômƒ¤YYY‚Àqƒ¤ñÔaƒ¤ƒ¤‚Àƒ¤ƒ¤ Ômƒ¤YYY‚Àqƒ¤%eÔUYƒ¤ƒ¤ÔUYÔUYƒ¤ƒ¤ÔUYÔa„üƒ¤‚Àƒ¤ƒ¤ÔeYƒ¤ƒ¤ ÔYƒ¤ÔiYƒ¤‚Àƒ¤‚Àƒ¤ƒ¤'ÔmYYYƒ¤‚Àƒ¤e‚Àƒ¤ƒ¤5ÔmYYYYƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤Ôƒ¤àUƒ¤èYƒ¤"Ôƒ¤à]ƒ¤èYƒ¤ƒ¤%Ôƒ¤àaƒ¤èYƒ¤ƒ¤ƒ¤ÑÍÙÅ Å Yƒ¤ƒ¤Yƒ¤*eÔ]Yƒ¤ƒ¤ƒ¤Ô]Yƒ¤ ÅÅ‚ Í ƒ¤ƒ¤YYYƒ¤2eÔ]ƒ¤‚Àƒ¤ƒ¤ÔiYYY‚Àƒ¤Å‚ Í ƒ¤ƒ¤Yƒ¤.eÔ]ƒ¤‚Àƒ¤ƒ¤ÔaY‚Àƒ¤Å‚ Í Å‚ Í  Å‚ Í €ÉÅ‚ Í€É Å‚ Í Å‚ Í  -Í  -Í €É-Í€É -Í -Í  ƒ¤ƒ¤ƒ¤ƒ¤YYYƒ¤<eÔaƒ¤ƒ¤‚Àƒ¤ƒ¤Ômƒ¤YYY‚Àqƒ¤"Ñ Å‚ ÍÑ "Ñ Å‚ ÍÑ &Ñ€ÉÅ‚ ÍÑ€É"Ñ Å‚ ÍÑ"Ñ Å‚ ÍÑ Ñ -ÍÑ Ñ -ÍÑ Ñ€É-ÍÑ€ÉÑ -ÍÑÑ -ÍÑ Å‚ Í Å‚ Í -Í -Í "ÑÅ‚ ÍÑ"Ñ Å‚ ÍÑ Ñ-ÍÑÑ -ÍÑ Å Yƒ¤Y$eÔUYƒ¤ƒ¤ÔUY ÅÅÅ‚ Í--ÍÅÅ----Å- -3ÅÅ‚ Í-‚ Ù'--Í-ÙÅÅ‚ ͂ł Í‚‚‚ ÍÅÅÅÅ%ÅQÅ‚ Í3ÅQÅ‚ Í‚ ÍCÅÅ-‚ Í‚ Í‚ ÙGÅÅ-‚ Í‚ Í‚ Ù- € ñÔ„ …¼Ô„ „ - Ô…À…Ä…È…Ì…Ð…Ô Ô …Ø …ÜÔÑ …àÔÑ …ä Ô  Ô  …ì …ð …ô …ø …ü † † † †  † † † †ÔÔ †  †$ †(ÔÔ- †, †0 †4 †8 ÔY eYYY ‘YY Ôƒ¤ ‘Y ‘Y †D Ô‘Y ‘YÔÔ ÔYàeƒ¤ƒ¤ƒ¤ƒ¤èƒ¤èƒ¤ƒ¤ 胤ƒ¤à]àƒ¤y胤ƒ¤à]àƒ¤y胤ƒ¤]àƒ¤y胤ƒ¤ àè_ èà]àƒ¤y胤ƒ¤àƒ¤à‚Àè‚ÀàeYèà‚À àè‚Àèè‚Àà胤‚À胤U‚Àƒ¤èƒ¤àU‚Àƒ¤èƒ¤SàU‚Àƒ¤ƒ¤àe胤胤‚À胤ƒ¤à胤胤àU‚Àƒ¤èƒ¤ƒ¤ eYYY ‘YY ‘YY#àe胤Y胤àe胤ƒ¤ YYb胤胤胤胤胤胤胤胤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤èƒ¤‚ y‚‚ƒ¤ ƒ¤ƒ¤YeYeY‚¼ÔYYYY YÔYY ÔYY YeYYYYÔèYèYy yT àUàƒ¤yèƒ¤àƒ¤àeY胤Yy胤yààÔ†`ÔYYè†`€™†hè†`è†`è†`è†`è†`è†`è†`è†`è†`†`†`†`†`†`†`†`†`è†`Ô†`ÔYYè†`†lY†pYYY†t Y†`Y Ôƒ¤àU‚Àƒ¤èƒ¤€ƒ ƒ¤€Ü‚Àe‚Àƒ¤e胤胤‚Àƒ¤àU‚Àƒ¤èƒ¤€àe胤€Ü‚Àe‚Àƒ¤e胤u ƒ¤€Ü‚Àe‚Àƒ¤e胤胤‚Àƒ¤àeƒ¤àèƒ¤àƒ¤€Ü‚Àe‚Àƒ¤e胤e胤è†` ƒ¤eƒ¤†` ƒ¤†`e胤è†`Pà胤胤e胤è†`è†`胤àeY胤Y!eƒ¤†`Ôƒ¤eƒ¤†`ƒ¤†`†` Y YY   ‘Y †D ‘Y y Yƒ¤ 胤-ƒ¤ ƒ¤Y -Y†` †`è†`†`Yè†` †`YY†`†` (è†` è†` è†`a\Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+TupleConv@DebugTypeProxy Yè†`b]Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+RecordConv@DebugTypeProxy(†` YY†` †`d_Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+GroupingConv@DebugTypeProxy †`_ZMicrosoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+SeqConv@DebugTypeProxy †h †l †p †t Y†`Y Ô†`ÔYYè†` †`YY èYèY è†`Ô†`ÔYY Yy-y yY1àUàƒ¤€èƒ¤€àƒ¤èƒ¤ ƒ¤ ƒ¤ƒ¤ƒ¤Ôƒ¤eƒ¤†` Ôƒ¤eƒ¤†` ÔY eYY ‘YY Ôƒ¤ YqƒìeƒðUƒô] ƒø a ƒü ‚ „ i „mq „ eYY eYYy ‚ yYYY ‚(‚À ‚À ‚(‚Àƒ¨ƒ¤‚À €€-Ôƒ¤àUàƒ¤èY胤ñe胤ƒ¤e胤ƒ¤.àeƒ¤ƒ¤e胤ƒ¤ƒ¤èƒ¤ƒ¤e胤ƒ¤ƒ¤eƒ¤èƒ¤àeƒ¤èƒ¤DàUàƒ¤èY胤胤e胤ƒ¤èƒ¤ƒ¤àeƒ¤èƒ¤ƒ¤IàUàƒ¤èY胤胤àe胤胤$àe胤胤ƒ¤eyàeY àeYeyàeY àeYeY ‚€…y%eyàeYàeYyY €…Y€…eàYàY€…eàYàY €… ‚!€…=eàYàYYà€…Y€…€…€… €…Y€…‚%àeƒ¤èƒ¤}‚!àààeƒ¤‚L€ 耑†Ä-‚À€‘ ‚À€… €‰€…€…‚)Y ‚-€…Y ‚1€…Y ‚€…€½‚5€…€€… } ‚9‚!}-€… €‚!-€…€€‰€…€…€‚-€…à ‚)ÑÑ€ÉÑ Ñ ÑÑÑ ÑÑÑ Ñ  € ‚YY€…‚!Yàeƒ¤‚L eƒ¤‚LàUYè‚Àƒ¤UYè‚Àƒ¤ ‚À€‘ ‚À€‘‚(‚À€…-€‘‚]Y€…-€‘‚a€…€…€… ‚5€€… ‚(‚À€…‚]Y€…€‘Q‚5YY€…‚¼Ôƒ¤ƒ¤ Ôƒ¤ Ôƒ¤”Aaà‚À‚À€…%‚%àeƒ¤ƒ¤ƒ¤ƒ¤àeƒ¤ƒ¤àeYYàUàƒ¤èY胤èY胤àeƒ¤Yàeƒ¤YàUàƒ¤èY胤èY胤àeàƒ¤€½àƒ¤€½àeƒ¤àUàƒ¤y胤y胤àY€…àUàƒ¤€èƒ¤€àeƒ¤èƒ¤èƒ¤}‚!‚!àe胤yàUàƒ¤èY胤èYèYèY胤YYàUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤à胤à胤à胤à胤ààUàƒ¤èY胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤胤àUàƒ¤èY胤èYèYèY胤胤àUàƒ¤èY胤èY胤àeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤ƒ¤ƒ¤ƒ¤eYYeYYYeYYYYeYYYYYàeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤àeƒ¤ƒ¤€…àeY胤àeY胤àe‚L胤‚Làeƒ¤‚L€y€àUYè‚Àƒ¤è‚À耑†Äà胤àUƒ¤ƒ¤ƒ¤-‚ÀàU‚Àƒ¤ƒ¤€‘€…àe‚Àƒ¤Y €…†Äƒ¤ e€…€…€…€…€…Y€…"€…†Äƒ¤ƒ¤Ôe€…€…€‰ àƒ¤ƒ¤€…àYY€…†Äàƒ¤àY ƒ¤€…€…†Ä胤€‘Y€‘‚À€…ƒ¤‚ ƒ¤‚ ƒ¨‚] ‰" àeYYƒ¤‚]‰%‚‚ƒ¤ (‚(‚À€… ‚(‚À€… ‚(‚À€… ‚(‚À€… ƒ¤ ‚(‚À ‚(‚À1àUàƒ¤€èƒ¤àƒ¤€èƒ¤% àUàƒ¤èY胤ƒ¤ †Ä ‚e€€…5à]àƒ¤y胤ƒ¤yƒ¤èƒ¤èƒ¤ }ƒ¤ †Ä胤 ƒ¤} -} €y y y€ -€€…€… €‰e€…€… € €‘‚À ‚À€… ‚(‚À€…‚(‚À€…# Ô‚(‚À€…‚(‚À€…‚À€‘ €…‚À -‚À -€… †Ä-‚À €…ƒ¤ÑÑ ÑÑÑ byteÑ ÑÑÑ sbyteÑ ÑÑÑ int16Ñ ÑÑÑ uint16Ñ ÑÑÑintÑ ÑÑÑ enum int32Ñ Ñ Ñ Ñ uint32Ñ Ñ Ñ Ñ int64Ñ Ñ Ñ Ñ uint64Ñ Ñ Ñ Ñ float32Ñ Ñ Ñ Ñ floatÑÑ ÑÑÑ nativeintÑÑ ÑÑÑ unativeint Ñ€É Ñ€ÉÑ€ÉÑ decimalÑ ÑÑÑ char Ñ ÑÑÑ ÑÑÑÑ ÑÑÑ ÑÑÑÑ ‡È ÔøøÔømapôôà ‡Ð ÔàøøÔàø choose‡Ô øÔø filter‡Øeøø$eøøÔø partition ‡à ÔÔø#øÔÔø scan=Ôøadd=Ôø subscribe‡è øøeø pairwise‡ø øøøøø merge ‡ü Ô€Ä ˆ Ô€Äeøø,eøøÔ€Äø splitô ‡Ä Ôô €Ä% €Ð% €Ì% €Ä% €Ð%ô €Ì%(€Ä%€Ä%%€Ð%€Ì% Ôø ‡È ‡ÄÔà ‡Ì Ôàô€Äà%€Ðà%€Ìà%€Äà%€Ðà%€Ìà%<€Äà%€Äà%%€Ðà%€Ìà%Ôà ‡Ð ‡Ì‡Ô à‡ØÔÔÜ ‡Ü! ÔÔôÜÜ,€Ä%€Ä%%€Ð%€Ì%ÔÔ ‡à ‡Üôe Üà‡ä ôeÜà Üàe ôeààø‡èÜà =ôe܇ì ôÜÜÜ܇ð ==‡øÜÜÜ==Ô€Ä ‡ü €Ä €ÌÔ€Ä €Ìà€Ä€ÌÔ€Ä ˆ €Ä €ÐÔ€Ä €Ð€Ä€Ð‚l Ô‚l ˆ Ô‚l‚lÔ=#‚‚Ô‚‚l‚lˆ  Ô‚l‚lÔ="‚‚Ô‚ˆ Ô‚l‚l e‚‚‚‚‚l‚lÔ=4e‚‚‚‚Ô‚ ˆ Ôà‚l(‚‚Ôà‚Ü ÔÜ ˆ! ÔÔÜ‚lÜ‚lÔ=,‚‚ÔÔ‚Ô‚‚le Üà ‚le Üàˆ ‚leÜà&‚leÜàÔ=&‚‚ee‚ˆ ˆ$‚lÔ=#‚‚‚‚‚l‚l ˆ(! ԀĂl‚l e‚‚‚‚‚l‚lÔ=<e‚‚‚‚ԀĂ‚l ˆ‚l ‚lˆ ˆ ˆààà ˆ‚leˆ ‚leˆ ˆ$‚l ˆ( €Ð €Ð‚l€Ä€Ð€Ì ˆ0& ‰H‰X€ÄÔ€Ä ˆ4 ‰H‰X€Ä ˆ81‰H‰X€Ä€™ƒÈÔ€Ä ˆL ƒÈƒÈ €ÄƒÈ€ÄƒÈƒÈ‰HƒÈ‰H ‰H ƒÈ€™‰H‰X€Ä ˆ0‰X€Ä ‰X‰H‰X€Äƒ´‰H‰X€Ä ˆ4‰X€Ä ‰X%‰H‰X€Ä % ˆ8 ‰X€• €• €Ä €Ä €Ä ƒÈ€Ä‰X€ÄƒÈƒÈ ˆH$ ƒÈƒÈ‰H‰X€Ä ˆ<  ˆ@  ˆD ‰X€Ä€Ä ƒÈ€Ä€™ ˆL €™€Ä‰H‰X€Ä ƒÈ€Ä ƒ´ƒÄ ‰H  € ƒÈ€‚qAsyncGetResponse Ü‚u ‚y‰X€ €‚u‚u ƒÈ€%‚q ‚qe€¡ M€¡€¡ Me€¡ €M ‚qÜàÔ ƒÈ€Ü ƒÈ‚}àà AsyncRead  ƒÈ‚} ƒÈ‚}àà AsyncWriteøÔAddˆ¤ø=øÔ Subscribe‚} ‚} a€¡ M€¡ €¡ Ma€¡ MÜ ÜÜ  Ü ƒÈ ‚}Ü  ƒÈ   ƒÈ ‚}  Ü Mˆ¤ƒÜ Ô% Ô€•ƒÜˆ¬ ƒÜˆ°ˆ´%ƒÜÔÔ%Ô€•MƒÈ€¡ƒÜƒÜMƒÜƒÜMƒÜˆ¬ˆ°ˆ´e€™àƒ°ƒ° àƒ° ‰H‰X à‰X‰Xàƒ°e€™àƒ° ‰H‰Xˆ¼ˆÀˆÄ à‰XY e€™àƒ°ƒ°€™àƒ°‰H‰Xƒ´à‰Xà‰X‰Xàƒ°=€™ƒÈà €™ƒÈˆÔ*€™ƒÈÔÔ%Ô€•€©€©ˆà€©€¥±‚ˆà€¥à±‚ ±ˆä ‚ˆà €©‚‘ €¥ˆô ƒÈ‚ˆà€©€¥ ±‚ˆà€©€¥ƒÈ€¥€™ƒÈై¼ ƒ´ˆÀ ƒ´%ˆÄ ƒ´€• ƒ´ˆÔ Ô% Ô€•‚ˆä‚€¥ˆè ‚ˆà€©€¥ ƒÈ%ˆì ƒÈˆð ˆôƒ´©ƒ¼Ôƒ´©©ƒÄ‰ ƒÄ©ƒ¼ ©ƒÀƒ¼ƒÄƒÄ‰,ƒÈԃă´‰0‚•‚•‚•µ‰H‚• ‰H è‰< è‰< ‰<‚•è‰<‰H‰< ƒÄà‰HƒÄƒÄ ƒÄƒÄ ©ƒÀƒÄ‰ ƒÄ‰ ƒÀ% ©ƒÀƒ¼ ƒÀ€•‰, ƒ´ƒÄ‰0‰4‰4 Ô‚¥‰<‚¥ Ôƒ´‰@ ‰<Ôƒ´©‰D‰< (ƒÈ‰H è‰<µ‰L ‰</è‰<è‰<‰<è‰<‰Pàµà ‰<‰Hàà Ü™ ƒÈ Ü™‰d‰h‰d‰h‰`‰d‰h€•‰X ‰Xà‰Xà‰X‰x/ €™Ôƒ´Ô%ƒ´Ô€•ƒ´ƒÈƒ¼ƒ¼/ƒ´€™Ôƒ´Ô%ƒ´Ô€•ƒ´ƒÈ‰|ԃă´ƒ´%ƒ´ƒÄԃă´‰€‰„‰Œ ƒÈ ‰˜ ƒÈԃȃȃȃÈÔƒÈ ‰¤ ԃȃÈÔƒÈ‰Ì ÔƒÈƒÈÔƒÈ‰Ô Ô%ƒÈƒÈƒÈÔ%ƒÈƒÈ‰ä Ô€•ƒÈƒÈÔ€•ƒÈƒÈ€™‰ìƒÈԃȃÈԃȉü ÔƒÈ 9ƒÈ-ԃȊƒÈƒÈƒÈ €• ‰XIDMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Ok@DebugTypeProxy(%LGMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Error@DebugTypeProxy(€• €•OJMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Canceled@DebugTypeProxy‰`‰l ‰`‰d‰p ‰d‰h‰t ‰h‰x‰|‰€‰„‰`‰d‰h‰X‰ˆ Ôƒ´‰ŒƒÀƒ¼Ôƒ´ÔƒÈƒÄ ‰ ԃȃăÄԃȃÈԃă´$Ô%ƒ´ƒÈ%%%%ƒÈ‰” ƒÈƒÄÔƒÈ ‰˜ ‰‰” ƒÄƒ¸ Ô%ƒ´%‰  ƒÄƒÈ ‰¤ÔƒÈ' ƒ¼Ô%ƒ´ƒÈ%%%%ƒÈ‰¬‰° ԃă¼Ô%ƒ´%%%%‰¸ ƒÄ%‰¼‰À ƒÄ€•‰Ä‰È%%%%‰Ì'ƒ¼Ôƒ´Ô%ƒ´Ô€•ƒ´ƒÀÔ%ƒÈ‰Ð Ô%ƒÈƒÄ % ƒÈ‰ÔÔ%ƒ´ƒÀ Ô€•ƒÀƒ¼%%%%‰äƒÀÔ€•ƒ´ƒÄ€™ Ô€™ƒ´ ƒ´ƒÄ€™‰ì Ô ÔƒÈ‰ô 9ԃȉø ÔƒÈ9‰ü ƒÈ9Š ƒÈ Ü™*àÔƒ´àÔƒ´Ôƒ´ƒ¸Ôƒ´Š0 ƒÀÜÜàÔƒ´‚¥‰4Ôƒ´9ÔƒÀÜÜàÔƒ´‚¥‰4Ôƒ´à€Ä%€•Üà€Ä%€•à€Ä%€• €Ð%€• €Ì%€•Š@ ƒÄ%à€Ä%€•à€Ä%€•€•%,ƒ´ƒÀƒÄÜà€Ä%€•ƒ¼Üƒ°Üà€Ä%€• ƒÄ)ƒ¼Üà€Ä%€•ƒÄƒÀ7 ƒ´ƒÀƒÄÜÜà€Ä%€•ƒ°ƒ¼,ÜÜà€Ä%€•ƒ°€Ä%€•>ƒ´ƒÀƒÄÜÜà€Ä%€•ƒ°ƒ¼€Ä%€•‰4Ô€•ƒ´€•àÔŠÈàÔÔ%"àÔ‰H‰X‰8 Šì ÔƒÈ#ÔU€¡MÔƒÈüŠø3‚àÔ‰H‰X‰8í‹X ƒÄƒÀ€¥ƒÄƒÀ€¥ƒàƒàƒ¬ƒÄeÔƒ´ƒ¼àeÔƒ´ƒ¼ ƒàƒàƒÄƒÀ Ôƒ´?àeÔƒ´ƒ¼àeÔƒ´ƒ¼ƒ¼Ôƒ´ƒ´½ƒà ‹t' ƒàÔàƒÈƒÈ™ à3ƒÈàƒàÔàƒÈƒÈ™ ‹€ ƒàÔàƒÈ+ƒÈàƒàÔàƒÈ‹œƒÈàƒà‹¨ƒÈƒà ܃¼ Ôƒ´ ƒ¼ Ôƒ´ Š Ôƒ´ŠŠÜàÔƒ´ŠÜàÔƒ´ ©ƒ´(ÔUÔÔ%Ô€•Š  % €• UÔÔ%Ô€•'ÔUÔÔ%Ô€•K ƒÀÜÜàÔƒ´‚¥‰4%ƒ´àÔƒ´àÔƒ´Ô€Ä%ƒ´Š$ Ô€Ä%ƒ´ €Ä%Ô€Ä%ƒ´Š(Š,ƒÄ€Ä%;ƒÀ€™ƒ¼Ôƒ´Ô€Ä%ƒ´Ô%ƒ´Ô€•ƒ´ ƒ´ƒÄ€Ä% ొ0 €¥ ƒÈ€¥€™Š4 €™€¥ ƒÈ€¥ ƒÄŠ@ƒÄ Ôƒ´ŠD2 ƒÄƒÀÜÜà€Ä%€•ƒ°ƒ¼ŠH1 ƒÄƒÀÜÜà€Ä%€•ƒ°ƒ¼ €Ä%€•ŠLŠP ƒÈ -ƒÈŠT ƒÈ  ƒÈ8ƒÄƒÀƒÈÜÜà€Ä%€•ƒ°ƒ¼ ƒ´ƒÄŠXeƒÈàƒ´ àƒ´eƒÈàƒ´àƒ´<eƒÈàƒ´eƒÈàƒ´%ƒÈàƒ´ Ô€•ƒ´Üà‚©! ƒÀÜà‚©Ô€•ƒ´‰4 à‚© Üà‚©à‚©à‚©à‚©ƒ´# ƒÀÜà‚©Ôƒ´‰4€© €©Q ‚­3 ƒÀÜà‚©Ôƒ´Ô€•ƒ´‰4€©%% ƒÈ Ô€•ƒ´€• ‰4Ô€•ƒ´ Ôƒ´ Ôƒ´ ƒÀ‰4Ôƒ´€© ‰4Ôƒ´€© µ€¥‚± ÍM0€¥MÍM5 ƒÀ‰4Ôƒ´Ô€•ƒ´Ô€•€©ƒ´€¥% ƒ´ƒÄM MàФ!ƒÀ‰`‰d‰h‰X ƒÈ‰XЬЍ ‰Xа ƒÈЏ ™‰H‰XŠ´ мŠÀŠÄŠÈ ‰Xƒ´‰8ŠÌ àÔ‰H‰X‰8 €© ÔMŠÔ, ÔMàÔ‰H‰X‰8€©‰X‰X%ƒ´Ôe€¡MŠØ€™‰H‰X‰8€©€¡M ƒÈ€™ŠÜ €™ÔU€¡MŠà U€¡ÔU€¡MÔ]€¡M Šä ]€¡Ô]€¡MÔa€¡M Šèa€¡Ôa€¡MÔƒÈ Šì U€¡ÔƒÈ  €¡ MU€¡ MŠø ‚ ‰H‰Xí Šü0 ‚àÔ‰H‰X‰8í  ‹3 ‚àÔ€™‰H‰X‰8í €© 퀩 퀩퀩 ‚í ‹* ‚‰H‰X‰8퀩ííü ‹  ƒÐ íƒÐ ‹ íƒÐƒÐ íƒÐ ‰Y€  ‹ Ô€©ÔƒÐ íƒÐ ԃР‹ €© ƒÐ ‹ íƒÐ\ €™‰H‰X‰8Ô€©í€©ÔƒÐíƒÐÔ퀩ƒÐ ‹ Ü™‹$ ‰H‰XÜ™€©‹(‹,‹0 ƒÈà‰H‰X€™™Ü™€©ƒ´ ƒÈƒÈ€™‹4 €™ƒÈ ƒÈƒÈ Ô‰4퀩 €©%  Ô Ô €™Ô €™‰4€© =%€™‰4ÔÔ€©í€©€© ƒÈ=€™ €™= ƒÈ=‹X ‚µ€¥‹\ ƒÄƒÀ‹`‚‰ Q€¥ ‚‰Q€¥‚¹ƒÀ‚‰ƒÀƒ¬ ƒÈàƒàÔàƒÈ ‹pƒ¬ €Ì€Ðƒà€Ì ƒ¬€Ì ƒÈà€Ä ‹t àƒÈ àƒÈ‹l à  €Äà!àƒÈàƒÈƒÈ ƒÈà ‹| ƒÈà ‹€‹x ààƒÈàƒÈ ‹ˆ ƒÈà€™ ‹Œ‹„ €™à ƒÈà ‹”‹ à‹˜‹œ‹¤‹¨àà‹°‹¸ÔƒèƒÈ‹À‹Ä‹È‹Ì ƒÈà‰H‹Ð ‰Hà‹Ø‹Ô ƒÈà‹à‹Ü‹ä ofNativeInt toNativeIntget read write stackalloce‚ì胤àe胤ƒ¤ e‚ì胤e‚ì胤àe胤ƒ¤€Ã*e‚ì胤‚ì胤ƒ¤ƒàe胤ƒ¤ƒ¤y胤]ƒDYƒ€½ƒƒ 胤ƒ¤ƒ$€ƒ,ƒ4ƒ<ƒ@‚ĂЂÀ胤‚Ôƒ¤àe‚Àƒ¤àe‚Àƒ¤‚À‚L‚üƒƒƒ ƒƒ¤èƒ¤€Ü‚Àe‚Àƒ¤e胤( ‚ĂЂԂÀƒ¤‚Ì‚ì胤胤$€Ü‚Àe‚Àƒ¤e胤ƒ¤,'|ShapeVar|ShapeLambda|ShapeCombination|àà à àƒ¤ |Bool|_|à à àƒ¤ |String|_|   à à à ƒ¤ |Single|_|   à à à ƒ¤ |Double|_| à à àƒ¤ |Char|_| à à àƒ¤ |SByte|_| à àƒ¤ |Byte|_| à à àƒ¤ |Int16|_| à à àƒ¤ |UInt16|_|  à àƒ¤ |Int32|_|   à à à ƒ¤ |UInt32|_|  à à à ƒ¤ |Int64|_|   à à à ƒ¤ |UInt64|_| à‚ìà‚ìà‚ìƒDY |Unit|_|eè‚Àƒ¤BàU‚Àƒ¤ƒ¤àeƒ¤à‚À‚Àƒ¤‚Àeè‚Àƒ¤eè‚Àƒ¤‚Àƒ¤(‚ĂԂÀƒ¤eè‚Àƒ¤ƒ¤è‚À3àeƒ¤ƒ¤ƒ¤ƒ¤àà胤胤 ƒ¤è‚Ààeèè‚Àƒ¤ƒ¤ |Lambdas|_|àeƒ¤è胤ƒ¤|Applications|_| àUƒ¤ƒ¤ƒ¤àƒ¤ƒ¤àeƒ¤ƒ¤ƒ¤ |AndAlso|_| |OrElse|_|[àeèè‚Àƒ¤àUàƒ¤€èƒ¤€€àUàƒ¤€èƒ¤-Ôƒ¤àUàƒ¤èY胤ƒ¤|SpecificCall|_|&!|MethodWithReflectedDefinition|_| àƒ¤y.)|PropertyGetterWithReflectedDefinition|_|.)|PropertySetterWithReflectedDefinition|_| àeè‚Àƒ¤ƒ¤ àeƒ¤èƒ¤ƒ¤ €€ ñ€µÔøe€±ÔŒˆƒ¤!Ôøèe€±ÔŒˆƒ¤‘e€µ ‘ÔØ eèàeèèè#àeèèèàeèèYYYY ‚Ă̂ì à‚샤 e‚샤àe‚샤‚Ä‚Ì胤ƒ¤‚ìàe‚샤ƒ¤ U‚샤ƒ¤àU‚샤ƒ¤!‚Ä‚Ì胤胤ƒ¤ƒ¤‚ìàU‚샤ƒ¤ƒ¤]‚샤ƒ¤ƒ¤à]‚샤ƒ¤ƒ¤, ‚Ä‚Ì胤胤胤ƒ¤ƒ¤ƒ¤‚ìà]‚샤ƒ¤ƒ¤ƒ¤‚ĂРà‚Àƒ¤ |Var|_|àU‚샤ƒ¤àU‚샤ƒ¤ƒ¤ƒ¤|Application|_|‚Ăԃ¤‚Ààe‚Àƒ¤ƒ¤ |Lambda|_|‚Ä‚Ì胤ƒ¤ |Quote|_|à]‚샤ƒ¤ƒ¤ à]‚샤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤àUƒ¤ƒ¤ƒ¤ƒ¤|IfThenElse|_|‚Ä‚Ì胤à胤ƒ¤ |NewTuple|_| ‚ẴHY àYƒ¤|DefaultValue|_|‚Ă̂ôY胤àeY胤ƒ¤ |NewRecord|_|‚Ă̂ø‚L胤àe‚L胤ƒ¤|NewUnionCase|_|àe‚샤àe‚샤‚ü‚Lƒ¤àeƒ¤‚Lƒ¤|UnionCaseTest|_|àe‚샤ƒƒ¤àeƒ¤ƒ¤ |TupleGet|_|àe‚샤ƒ4Yƒ¤àeƒ¤Yƒ¤ |Coerce|_|àe‚샤ƒ@Yƒ¤ |TypeTest|_|‚Ẵ8Y胤 |NewArray|_|‚Ä‚Ì胤胤ƒ¤ƒ¤|AddressSet|_||TryFinally|_|aƒ¤‚Àƒ¤‚Àƒ¤àaƒ¤‚Àƒ¤‚Àƒ¤M ‚Ä‚Ì胤胤àe‚Àƒ¤èƒ¤àe‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤àaƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ |TryWith|_|$‚Ä‚Ì胤‚Ä‚Ð胤‚Àƒ¤ |VarSet|_|‚ẴDYàeYƒ¤ |Value|_| ‚Ä‚Ì àƒ¤ |ValueObj|_|àe‚샤ƒ¤ |AddressOf|_||Sequential|_|]‚Àƒ¤ƒ¤ƒ¤à]‚Àƒ¤ƒ¤ƒ¤2à]‚샤ƒ¤ƒ¤àe‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤à]‚Àƒ¤ƒ¤ƒ¤ƒ¤|ForIntegerRangeLoop|_| |WhileLoop|_|#‚Ẵ y胤ƒƒ¤èƒ¤ àUàƒ¤y胤ƒ¤|PropertyGet|_|T ‚Ẵàe胤ƒ¤ƒ¤y胤‚Ẵàe胤ƒ¤ƒ¤èƒ¤#à]àƒ¤y胤ƒ¤ƒ¤|PropertySet|_|‚Ẵ€½ƒèƒ¤ƒ¤àeàƒ¤€½ƒ¤ |FieldGet|_|Uàƒ¤€½ƒ¤àUàƒ¤€½ƒ¤' ‚Ẵ$胤ƒ¤€½ƒ 胤ƒ¤àUàƒ¤€½ƒ¤ƒ¤ |FieldSet|_|‚Ẵ(胤 |NewObject|_|$‚Ẵ0€èƒ¤ƒ,ƒ¤èƒ¤!àUàƒ¤€èƒ¤ƒ¤ |Call|_|)àeƒ¤ƒ¤àe‚Àƒ¤‚Àƒ¤ƒ¤àU‚Àƒ¤ƒ¤ƒ¤ |Let|_|3àe‚Àƒ¤àeè‚Àƒ¤è‚À‚Àƒ¤àeè‚Àƒ¤ƒ¤9àe‚샤ƒ<Yƒ¤àeè‚Àƒ¤è‚Àƒ¤àUYè‚Àƒ¤ƒ¤|NewDelegate|_|àeèe‚Àƒ¤ƒ¤?àƒ¤àeè‚Àƒ¤‚Ä‚Ì胤è‚À胤ƒ¤ àeèe‚Àƒ¤ƒ¤ƒ¤|LetRecursive|_|àyày yàyyY‚L à‚L ‚Là‚L‚Là‚L‚LYyy‚L YY]Yƒ¤{‚ĂЂԂÀƒ¤‚Ì‚ì胤胤胤àU‚Àƒ¤ƒ¤èƒ¤àeèe‚Àƒ¤ƒ¤Y‚Lƒy€½€]Yƒ¤‚ì胤ƒ¤‚ì ƒ¤‚샤ƒ¤‚샤ƒ¤ƒ¤‚샤ƒ¤ƒ¤ YY €­ €­ƒ¤€­èƒ¤ €ƒ¤  YYYY ƒ¤ƒ¤Y ‚Àƒ¤Y ‚ìY Yƒ¤ èYƒ¤ƒ¤Yƒ¤YY ƒ¤Yƒ¤ yƒ¤ ƒ¤‚Lƒ¤ €½ ƒ¤y胤ƒ¤ƒ¤y胤ƒ¤y胤ƒ¤ƒ¤ƒ¤y胤ƒ¤ €­Y €€­Y ƒ¤Yƒ¤èƒ¤ƒ¤Yƒ¤ƒ¤èƒ¤eè‚À胤eè‚À胤)eè‚À胤è‚À胤ƒ¤ YYèYèYÔÔYYÔÔYY è€ Ô€è€4è€Yè€è€€Ô€à€],€YèÔÔYYÔÔYY‚Á ÔÔYYY €Y# YYYà€à€€%‚Áy]€]€Y YYèYèYÔÔY èY yYYYèYYy2yYÔÔYÔÔYèYèY €½yY€½€½YèY Y èYYÔÔYèYYèY"YÔÔYèYèYeèèeèè$èèeèèeèèèÔÔYYèÔÔYYeèYèY+aYèÔÔYYÔÔYYeèYèYO YÔÔYYèÔÔYYeèYèYèYèYY€7€aYèÔÔYYÔÔYYèYyèYèYYY YèY Y èYY YèY YàYY€µ€µ€µ€µ €µ]€µø€µYøYÔèYYø Œl ÔèèÔ'eÔèYYèÔÔYYÔøèÔÔYYÔøÔÔYYÔèYY&eÔèYYèÔÔYY~eÔèYYèÔÔYYÔøèÔÔYYÔøÔÔYYÔèYYèÔÔYYÔÔYYøèÔÔYY ÔÔYYèÔÔYYÔÔYèYø è è è ‚(‚À ŒˆŒˆ‚À ‚ÀŒˆY8UÔèY‚ìÔÔYèYèÔŒˆƒ¤ÔøèÔŒˆƒ¤ÔøÔŒˆƒ¤ÔèY‚ìÔÔYèYèÔŒˆƒ¤ ÔŒˆ‚À ÔŒˆƒ¤7UÔèY‚ìÔÔYèYèÔŒˆƒ¤èÔŒˆƒ¤ ÔŒˆƒ¤€½ UÔèY‚ìÔÔYèYèÔŒˆƒ¤ÔøèÔŒˆƒ¤ÔøÔŒˆƒ¤ÔèY‚ìÔÔYèYèÔŒˆƒ¤ÔŒˆ‚ÀÔŒˆƒ¤ÔÔYYÔŒˆƒ¤øÔÔYYÔŒˆ‚ÀøÔèYyøÔèY‚LøÔèY‚LÔèY‚L‚ìø5ÔøèÔÔYYÔøÔÔYY0aYèÔÔYYÔÔYYø*]YÔÔYYÔÔYèY/]YÔÔYYÔÔYèYø,aYèÔÔYYÔÔYYeYÔÔYèYeYÔÔYèYy ‚ìƒ0ƒ yaYèÔÔYYÔÔYYYèÔÔYYÔÔYYeYÔÔYèY€±øÔÔèY‚ìÔèYy+]YÔÔYYÔÔYèY-‚¼ÔÔèY‚ìÔèY‚ì& ÔèY‚ìÔÔèY‚ìÔÔèY‚ì   €üÔÔèY‚ìÔèY‚ìaYèÔÔYYÔÔYYYèÔÔYYÔÔYYÔèYy]YÔÔYYÔÔYèYÔÔYèY  eYÔÔYèY‚ìÔèY‚LÔèY‚ìøÔøe€±ÔŒˆƒ¤!Ôøèe€±ÔŒˆƒ¤€µÔøÔŒˆƒ¤ÔÔŒˆƒ¤Y#Ôèe€±ÔŒˆƒ¤€µ0‚ĂԂÀƒ¤‚Ä胤‚Ì‚ì胤‚ØYY ƒ¤ƒ¤ƒ¤ ƒ¤‚D‚À‚D‚À‚Ă̂ЂÀ‚Ôƒ¤‚D‚À‚D‚À‚D‚Àƒ¤ ÔYY ‚D‚ÀÄc‚Ă̂ì胤胤‚Ä胤‚ЂÀàƒ¤àƒ¤ƒ¤‚D‚À‚D‚À‚Ôƒ¤%Ä‚À‚Àƒ¤ ƒ¤‚D‚ÀÔ‚Ààƒ¤ƒ¤  Ü‚}‘e€µ ‘ÔØèe€±ÔŒˆƒ¤ e€±ÔŒˆƒ¤e€µ‘e€µèe€±ÔŒˆƒ¤Ø ‘ÔØ eèe€±ÔŒˆƒ¤eØØ3eØ€µÔèeèe€±ÔŒˆƒ¤ àØÔ eØ"èeèe€±ÔŒˆƒ¤#Ôeèe€±ÔŒˆƒ¤ ÔYàØ eèe€±ÔŒˆƒ¤€¤àØ€µÔeØeØØèeèe€±ÔŒˆƒ¤ÔÔeèe€±ÔŒˆƒ¤%ieØØàØÔŒˆƒ¤€€ÔYàƒ¤€±Y€€YŒˆ ÔŒˆƒ¤Œˆƒ¨  àà ‚É   àe‚Àƒ¤ƒ¤ ‚L €­ƒ¤ Yƒ¤ yƒ¤ ƒ¤ Y€­Y‚Àƒ¤ e‚Àƒ¤ ƒ¤e‚Àƒ¤ Y YÔÔYY Y€­* èÔÔYYÔÔYYYYYèYYèYY èY YèY Œl Ô YÔY ÔÔYYø ÔøÔÔYY èÔÔYYø% ÔèYYèÔÔYY ÔYY èÔÔYY èYÔY (‚(‚À (ÔY ‚(‚À ‚(‚À ÔY ‚(‚ÀÔY ÔŒˆƒ¤ø ÔøÔŒˆƒ¤ èÔŒˆƒ¤ø Œˆ ƒ¤ÔŒˆƒ¤6 ÔèY‚ìÔÔYèYèÔŒˆƒ¤ ÔŒˆƒ¤ƒ¤ èY‚Ä ƒ¤Œˆ ÔŒˆ‚À ÔŒˆ‚ÀÔŒˆƒ¤‚À‚Ä ÔÔYY ÔŒˆƒ¤ ÔŒˆƒ¤èÔŒˆƒ¤ƒ¤‚Ä胤 ÔÔYY ÔÔYY ‚ÀŒˆ Y yèY ‚LèY ÔèY‚L ÔèY‚ì ÔèY‚ì ‚ìèY* YèÔÔYYÔÔYY0aYèÔÔYYÔÔYY€ ÔèYy€½) YÔÔYYÔÔYèYy              YÔÔYèY ‚ìƒ0€ ÔèY‚Le€±ÔŒˆƒ¤ e€±ÔŒˆƒ¤øèe€±ÔŒˆƒ¤ èe€±ÔŒˆƒ¤ø €µÔøÔŒˆƒ¤ ÔŒˆƒ¤ €µ èe€±ÔŒˆƒ¤ èe€±ÔŒˆƒ¤ ƒ¤ ‚D‚À ‚D‚À‚D‚Àƒ¤ YÔ‚Ààƒ¤ ‚D‚ÀÔ‚Ààƒ¤ Ô‚Ààƒ¤‚Àƒ¤ €µ€µ e€µ €µ€µ e€µe€µ(Y ÔYY YY YÔ ÔÔÔ€­YYÔ€±ÔÔ ÔÔ (ÔŒˆƒ¤ØÔŒˆƒ¤ ÔŒˆƒ¤ Ô ÔÔ€±€±ÔŒˆƒ¤Ô e€±ÔŒˆƒ¤ ‚}eèe€±ÔŒˆƒ¤ eèe€±ÔŒˆƒ¤ ‚Í€±ÔŒˆƒ¤èe€±ÔŒˆƒ¤ eèe€±ÔŒˆƒ¤ø  ø ‚‚ ø Ôø‚‚èÔøèø eèøÔøè Ôøè eè0eèøÔøèÔøè€µÔø(Œ (€µŒ  Œ Œ €µ ø Ôøè èøàeÔàeè eèàeè àeeàeàe2àeèÔàeèÔàeÔàe+àeèÔàeàeÔàe eèàeè àeàeàe2àeèÔàeèÔàeÔàe+àeèÔàe Ž ÔeÔeè Ž  Ôe Ôeè€YÔe ŽÔe Ôe Ž Ôe Ôøe€±ÔŒˆƒ¤ Ôøèe€±ÔŒˆƒ¤‘e€µ ‘ÔØeY‘eY‚À ‚ÀY‚Ì‚Ð‚Ô‚Ø €Ñ‚Ä0 ‚̂̂ì‚ì胤胤‚ЂЂԂԂ؂؂ĂĀÑE‚ô‚ø‚üƒƒƒƒ ƒƒƒƒƒ ƒ$ƒ(ƒ,ƒ0ƒ4ƒ8ƒ<ƒ@ƒDƒH €Ñ‚쀆,‚ô‚ô‚ø‚ø‚ü‚üƒƒƒƒƒƒƒ ƒ ƒƒƒƒƒƒƒƒƒ ƒ ƒ$ƒ$ƒ(ƒ(ƒ,ƒ,ƒ0ƒ0ƒ4ƒ4ƒ8ƒ8ƒ<ƒ<ƒ@ƒ@ƒDƒDƒHƒH‚ì‚ì€Ñ è‚ ‚ƒ¤‚Y‚¼Ô‚L‚L Ô‚L Ô‚L ‚‚L‚¼Ô€€ Ô€ Ô€ ‚€‚¼Ô Ô Ô ‚‚¼Ôyy Ôy‚y‚¼Ô€½€½ Ô€½ Ô€½ ‚€½Ôƒ¤àeè‚Àƒ¤ 胤 ‚Ì‚Ì‚Ð‚Ð‚Ô‚Ô‚Ø‚Ø ‚Ä‚Ä ‚ì‚샨 u ‚ƒ¤ ‚‚‚ ‚‚À ‚ ƒ¤èƒ¤ ƒ¤eƒ¤èƒ¤ŽD Ô Ô‚¸ ksprintf kprintf ŽL ÔÔ %ÔÔ‚¸ aÔa‚¸a kbprintf éÔ邸é kfprintf Ž\a‚¸a bprintfa aa  a  ÔŽ@ ÔaŽD]ÔÔÔ# ]ÔÔÔ Ô Ô ŽL ]ÔÔÔ$ ]ÔÔÔé é  IŽpààààÔŽpàÔÔ àÔàÔà    ÔàŽp    ÔàŽp YÔ eYYY] eYYY eYY eYYYeYYYYYÔYÔeYYYYeYYYY%èYÔèÔYÔq qŽpe eeUàe àe eUàeeUàeeUàeeUàe àe àà Uàààà@ eUàeàeààeà UààààŽpÔŽpà ÔèY q'ÔèÔYÔèY àà àà2ÔèÔYÔààèYŽpUààààE ŽpUàààààààààà&èYÔèÔYÔ   q    U€É €É €É€ÉU  eè+Uq€Éà àà/ eèÔŽpààè q)eèÔŽpàè‚´-yàà‚‚‚´‚´à‚´‚´.eèÔŽpààèeàèeàè Ô Ô Ô€§ŽpUààààààààeàèààèèqàeàèèàèè€Éàà)eèÔÔè eè Ôeè)ÔÔÔè!]ÔÔÔ Ô'Ô]ÔÔÔ ]ÔÔÔ\ ]ÔÔÔÔÔÔÔÔÔ3Ô]ÔÔÔèÔèÔYÔ ŽÌ, Ô]ÔÔÔÔèÔYÔ6Ô]ÔÔÔèY(Ô]ÔÔÔ ‚¸ ŽÈ* Ô]ÔÔÔÔ-Ô]ÔÔÔ9Ô]ÔÔÔ‚¸(à à à àÔYÔ ÔYÔYÔY & èÔèÔYÔY( èÔèÔYÔYY% èÔèÔYÔY# ÔèÔYÔè Y# ÔèÔYÔè% ÔèÔYÔè0 èÔèÔYÔàà(Ô]ÔÔÔ ŽÈ!]ÔÔÔ'Ô]ÔÔÔ ]ÔÔÔ3]ÔÔÔÔÔ(Ô]ÔÔÔ ŽÌ  èYI‚€% €Ä% Ô €Ä% €Ä%%€Ä%Ô  ŽØŽØeŽØ  eŽØŽØeŽØ àeŽØàeŽØŽØàeŽØ ]ŽØ‚àeŽØàeŽØ]ŽØ‚‚ŽØ ]ŽØ‚ŽØ eŽØw#]ŽØ‚‚ ‚èe]ŽØ‚‚‚˜‚œ‚p‚ŽØ]ŽØ‚‚‚€‚|ŽØŽØeŽØŽØ‚‚p]ŽØ‚ÔŽØ‚Ô ÔŽØ‚Ô‚ eèeèè eèè eè0 ‚œ‚‚eèeè‚ ‚€‚‚"eè‚´Ôè‚#‚´Ôeèèè‚´Ô‚ éÔèe $ ‚œ‚€‚‚‚ èe‚1ÔÔèeÔÔé‚ÔÔèeÔ*ÔÔèeÔÔé/ÔÔèeÔÔé‚èe èee èeèeeèe¸Ì èe  àe èe¸Ìèeàey‚Ôe‚‚ e‚‚Ôe‚‚‚‚èe‚Ôeà‚‚ eà‚‚Ôeà‚‚‚‚èeà‚ ‚è‚è è ÜŽðÔÜ ‚Žèy‚´‘ÜŽä à‚€  €Ä% €Ì% €Ð%‘íà‚ €  ‚Í€Ì%€Ð%S‚à‚YY€ àà€Ä%€Ì%à‚‚%€Ð%& ‚Žèy‚´‘ÜŽèŽä¸ÔÔŽäÔ‚ Ô‚ ÔÔŽäÔ‚ ÔŽä ‚ Ô‚  Ô‚ e‚GÔÔŽäÔ‚èeèeè‚Ô‚*‚Žèy‚´‘Üèe‚Žèy‚´‘Ü‚Ôàe%H ÔÔŽäÔ‚&Ô‚ÔÔŽäÔ‚ l! ÜÔÔŽäÔ‚7Ôee‚ÜÔÔŽäÔ‚p yÔàeyÔÔ‚‚Ð%Ôàe Ô‚Ôàe5)ŽèeÔÔ‚‚  Ô‚  ‚(‚D  yy€¹ yeà‚ ‚ ee‚ €§$ÔÔŽäÔ‚ÔÔ‚‚Ìèe‚ÐY%%Ôàeè‚Ô‚ÔàeYY5‚==))Žèyèe‘%‘ÜŽèy‚´‘Ü‚Žèy‚´  %  €É ‚´ ‚‚´‚ ‚´é‚ ‚´‚‚´ é ‚´y( ŽØ  e‚ ‚‚ ‚e‚ eà‚à‚‚ ‚eà‚ŽäŽèŽèŽè ŽèŽèŽð   Žèy‚´‘Ü ‚Žä Ô‚Žü Ô‚ Ô‚ ‚ÔŽäÔ‚ ÔŽäÔ‚ÔŽäÔ‚ Ô‚ Ô‚ŽäÔÔŽäÔ‚ÔŽäÔ‚ ÔŽäÔ‚  Ô‚  Ô‚ ‚e ‚‚ % e àe àe % + ‚´ÜÔÔŽäÔ‚% ‚ e àe àe ‚e Ôe‚Žä ÔŽäÔe‚<@DHE e‚ ‚Y 5e àe àe yy  Žèy‚´‘Ü à‚% eà‚y`dh lh ‚ e‚ e‚ep àe  ‚´ ‚LYˆˆ ˆèY ˆYYˆèeYˆèeèeYˆˆY (èY èY^YMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy YYa\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(èeY èeY èeY èeY_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(èeèeYèeèeY èeèeY èeèeY\WMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+SumType@DebugTypeProxy_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxy ” ”˜ ˜œ œ   ¸ ¸è¸Y¸èe¸èe¸Yèe¸¸(è è è`[Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyjeMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy (èe èe èea\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy èefaMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy Yèed_Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxya\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyÀ ÀÄ ÄÈ È Ì ÐÔ Ôe ye eyeyey ¸yY e‚LYe‚L‚Lye ¸y ¸y eyÔ‚Ô‚‚‚ ‚‚‚‚‚‚p‚‚‚˜ ‚‚‚Ô‚Ô‚‚‚Ô‚Ô‚‚‚‚è‚è‚‚‚Ô‚‚‚è‚ Ô‚‚ è‚‚è‚Ô‚‚‚Ô‚‚è‚‚‚è‚‚‚ ‚‚è‚‚è‚ Ô‚ à‚Ô‚à ‚‚Ô‚èÔÔàe àeàe4è‚Ô‚ÔàeÔ Ô‚Ôàe Ô(Ô‚ÔàeÔ4è‚Ô‚ÔàeÔ4,è‚Ô‚Ôàe ‚‚ ‚ èe ‘  ‘ ‘  ‘‘ 1¿8V­6N5   ‚Õ ‚Õ‚Õ‚Õ q‚Õ‚Õ‚Õ‘‚Õ‘ ‘‚\ ‰‰‰ ` ø ü ‚h‚` ‚` =ôhl ø‚ ‚‚ ‚ yyy yYy àÔàÔYy€„ €„U  àU  €„]àU àU àU  U àU €àU à àU àU  à Yèe àeàeY€€½Ô€½Ô€½e Yy €½y€½ €e* Y€½Ô€½Ô€½€½e€½eYy e eY YYy‚( -e ‚(eÔYyà à à  YyyY YyY YYyÔyÔyYÔyÔyy yYyyÔYy àÔÔ(eàÔàÔÔÔYy €Yy Yy €] €YyÔYyYy YYYYYYYY yyyyYYq YÔYy ÔYyÔYÔ yYÔYÔY yYy yYYà à ÔyÔyy yYyÔYy YyÔYy YyY €½€½ €½"àU €àU   àe€ àe ‚(‚(€€  y yÔ  ÔÔÔYY ‚Le ‚D isEmpty ‚D‚D‚D ‚D singleton remove‚D‚D‚D union‚D-‚D unionMany intersect intersectManyÔ‚D iter ‚D emptyÔ‚D forall‚DÔ‚D$e‚D‚DÔ‚DÔÔ‚D foldÔÔ‚D foldBack‚DÔ‚D ‚D‚Dè ofList ‚D ofArrayè‚D toList ‚D toArray-‚D toSeq ofSeq difference‚D‚D isSubset isSupersetisProperSubsetisProperSuperset ‚D minElement maxElement‚4‚,‚8‚4‚4‚,‚, ‚, ‚, ‚,‚,‚,‚,‚,2 ‚4‚,‚,‚4‚,‚,‚8€¹(‚4‚,‚,‚8‚,‚,€¹‚,N‚,‚8‚4‚4‚,‚,‚,‚,‚,‚,!‚,€¹‚,‚,U‚,‚,U‚,‚,J ‚4‚,‚,U‚,‚,‚,‚,‚8‚,&U‚,‚,€¹‚,e‚, e‚,;‚8‚4‚,‚,e‚,‚,‚,e‚,‚,5‚8‚4‚,‚,e‚,‚,€¹‚,'‚4‚,‚,‚8‚,Ô‚,ÔÔ‚,‚4‚,‚8‚8‚4)‚4‚,‚,‚8‚,ÔÔ‚,ÔÔ‚,ü€¹‚,‚,‘‘.‚4‚,‚,‚,‚8‚,'‚,€¹Ô‚,‚,‚,€¹‚,‚,o‚4‚4‚,‚,‚,‚,U‚,‚,‚,‚,‚8‚,‚,‚,&‚,€¹‚,‚,‚,e‚,‚,4e‚,‚,€¹Ô‚,‚,e‚,‚,] e‚,‚,‚4‚,‚,e‚,‚,e‚,‚,‚8‚,9e‚,‚,€¹Ô‚,‚,‚,‚4‚,‚, ‚4‚,‚8‚,à‚, à ‚, è‚, è‚,8è‚,è‚,‚4‚,‚,‚,è‚,è‚,‘ è‚,‘‚, è‚,è‚,è‚, ‘ è‚,&è‚,è‚,è‚, ‘ Ü‘ Ü‘‘  ‚,ܑܑ9‚,€„è‚,è‚,è‚,è‚,‚8‚4‚,‚,‚8‚4‚,‚,‚,‚,‚,#€¹è‚,è‚,€¹‚,‚,è‚,èè‚,‘ ÜÜ‚, ‚,‚,€¹‚,99‚,=‚,€¹-‘ €¹ ‚,‚,€¹ü‘‘(è‚,‘ è‚, Ü‘‘  Ü‘‘‘ ‚,‚,99ÔÔ ‘ €¹ ‘  ‚,‚, ‚D‚D‚D ‚( ‚(‚(‚(‚(à‚( tryFind‚(‚(‚( containsKeyÔÔ‚((àÔÔà‚( tryPickàà à#ÔÔà‚( pickÔÔ‚($‚(ÔÔ‚(1e‚(‚(ÔÔ‚( ‚(%‚(ÔÔ‚( –¤ 'ÔÔÔ‚( –¤'ÔÔÔ‚( ‘0 -E Ee-e‚( ‘4 ÔÔ eÔÔ‚( findKey ‘8"àÔÔ‚( tryFindKey‚(èe‚(-e‚(eèe‚(e‚( ‚( eEÔÔ ‘4 àe ‘8 ‚ ‚ ‚ ‚&‚‚‚‚‚ ‚ ‚ ‚"‚‚‚B ‚‚‚‚‚‚ ‚5 ‚‚‚‚‚ ‚€¹‚4‚‚‚‚‚€¹‚àà€¹‚e‚‚Ee‚‚€¹ÔÔ‚‚e‚‚u e‚‚‚‚‚‚e‚‚e‚‚‚Je‚‚€¹ÔÔ‚‚‚/‚€¹ÔÔ‚<‚‚‚‚‚‚4‚€¹ÔÔ‚‚U‚U‚O ‚‚‚‚U‚‚‚U‚‚E ‚‚‚‚U‚‚‚€¹‚2‚‚‚‚‚€¹‚3‚‚‚‚‚ÔÔ‚ àA ‚‚‚‚àà‚(àÔÔà‚ÔÔ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚= ‚‚‚‚‚‚‚Ô‚ ‚ ‚= ‚‚‚‚‚‚%‚ÔÔ‚5‚‚‚‚‚–¤‚ ‚ ‚ ‚ ‚ ‚ –¤5‚‚‚‚‚–¤‚ 9 ‚‚‚‚‚2€¹ÔÔÔ‚ €¹&èe‚èeèe‚ ee‚ ‘@ e‚ ‚€¹èee(‚€¹‚9e‚e‚€¹e e eEeeèeèe9e‚=‚€¹-e ‘D EÜ‚Eè‚è‚Fè‚è‚‚‚‚‚è‚è‚ ‘H è‚‘H‚è‚ EE+è‚è‚‚E‘H è‚,è‚è‚è‚ ‘HÜ‘HÜ‘H ‘L ‚Ü‘HÜ‘H9E‚ ‘@ ‚‚e E ‘D (è‚ ‘H è‚Ü‘H ‘LÜ‘H E E 9EE9E9E E ‘T E - E ‚( ‘` ‘\ -E E EE length1 length2 length3 length4   zeroCreate    create +ÔÔÔÔ init       #ÔÔÔ  Ô    Ô (ÔÔÔÔ iteri 0ÔÔÔÔ mapi lengthÔÔ   blit   -   - concat Ô Ô collect  append  copy è èÔÔ –˜ –˜–˜ÔÔ–˜ÔÔ iter2 –˜ –˜–˜ÔÔ map2 –¤ –¤–¤"ÔÔÔ mapi2 –˜ –˜–˜ÔÔ –¤ –¤–¤ ÔÔÔ iteri2 –˜ –˜–˜ÔÔÔ ÔÔÔ –˜–˜ –˜–˜–˜ÔÔ exists2 forall2àÔà àÔàÔàÔàÔààÔààÔà€Á€Á€ÁààÔà€Á€Á €ÁÔ e€Á€ÁeÔÔ ÔÔàÔàÔeezip U UUU zip3 eeee unzip U U U UUU unzip3rev –˜ –˜–˜ÔÔ –˜ –˜–˜ÔÔ–¤–¤$ÔÔÔ foldBack2–¤–¤$ÔÔÔ fold2–˜ÔÔ–˜ÔÔ –˜ –˜–˜ÔÔÔÔÔÔ scanBack –˜ –˜–˜ÔÔ reduce reduceBack ÔÔÔsortInPlaceWithÔ sortInPlaceBy sortInPlaceÔÔ sortWithÔ sortBy sort -ÔÔ findIndexàÔàÔ tryFindIndexÔ permute  sum  Ômin Ômax -9= average -9= sub    fill èèèè-èèÔè èÔÔèÔè è tail èèèèèè è"èèàà&èÔàèèèÔàèÔÔèèÔèè è replicateè#èèèè–˜èè–˜–˜"ÔÔèè–¤èè–¤–¤(ÔÔÔèèèè –¤è5 èèèèèè3è–¤èèèè 6èÔÔÔèèè map3%èèèè,è–¤èèè.èÔÔÔèè(èÔÔèèè薘薘–˜ÔÔè èÔÔèèè%è–˜èè#èÔÔè"–¤èè–¤–¤,ÔÔÔèè–˜5 –˜èèèèÔÔè–˜ è薘薘#èÔÔè"–¤èèE –¤èèèèèè@ ÔÔÔèèèè,ÔÔÔèè–˜èè!ÔÔèèÔèÔèàÔèèèààÔàèÔàèèÔè$eèèÔè"eèèèe+UèèèèUèeèè'èUèèè èÔÔè èèÔèè--èÔè ÔÔèàÔèàÔè-9=-9=Ôè -9=ÔèèÔèèèÔè - ÔÔÔÔa ÔÔÔ Ô aa Ô ÔÔ Ô ÔÔ ÔaÔÔÔ ÔÔa Ô ÔaÔ‘œ Ô--Ô- ‘  Ôàe-Ôàe delay unfold’T ’T‘¤ Ô-Ô initInfinite‘¨ Ô-Ô 9=Ô- 9= - 9=ÔÔ- 9=Ô-9999= ÔÔ-- ‘¬ Ô99- -Ô99- ‘°+ Ô9Ô99--1-Ô9Ô99--‘´-Ô- where ‘¸-Ô- ‘¼ ÔÔ-ÔÔ- ‘À%-ÔÔ-- ‘Ä Ôà-Ôà- ‘È e-e--- ‘Ì eU#-U---‘Ð ) -) cast9àà=àÔà-Ôà-9àà=àÔ-Ô-‘Ô -99-- takeAA+ èèAA9= ---, èèAA9=9=ÔÔ-9=ÔÔ- ‘Ø Ô-Ô‘à -- ’¸-Ô-!ÔÔ99ÔÔ-99ÔÔ99=ÔÔ-- compareWith%èè9è=‘ä %èè9€Á=‘è -‘ì -Ü9 truncate‘ð! -9Üe-e- ‘ô+ ÔÔ-Ü9!-ÔÔ-Ô99Ô9=Ô-àÔ99àÔ9=àÔ-Ü‘ø# -ÜÜ9-- windowed à9Üàà9 à9àà9à9à99'-€ÁÜàà9e àe4àe-€ÁÜàà9àà9(àà9àà99"€ÁÜàà9Üàà9‘ü% -€ÁÜàà9’ €ÁÜàà9‚ -€ÁÜàà9-Ô cache’ readonly ’ Ô- e-"-e-Ô- groupBy’D’( -‘’D’D9 ’D distinct’D’D ’1 Ô-‘’D’D9 ’D-Ô- distinctBy ’ ’$ ’0 Ô- e-eÔ- countBy9=9=Ô-9=9= 9=Ô-’4! Ô-9Ü takeWhile’8 skip’<' Ô-9ÜÜ skipWhile99=ÔÔ--9=Ô-‘œ 9Ôàe ‘  Ô‘¤‘¨Ô99 ‘¬Ô99Ô9Ô99- ‘°-Ô99 9‘´ 99 ‘¸ 99ÔÔ ‘¼ ‘À 999 ‘Ä ee U Ue‘Ð9‘Ô9 9] %% ‘Ø Ô‘Ü ’¸‘à’¸Ô’¸’¼’¸’¸Ô’¸’¸Ô’¸‘ä“‘è“‘ì e‘ð -e%% e 9e9 ‘ô9 9‘ø‘ø‘ø - 9Üàà9‘ü àeàe àe’’‘’D€Á ’ Ô‘’D€Á’D e€Á’D‘’D€Á e€Á#’De€Á€Á€ÁE’D€Á E’D€Á e- ’D e-E’D€Á ’ ’ -E’D€Á E’D€Á ’ E’D€Áe-‘’D€Á -e-‘’D’ ‘’D ’D ’D‘’D ’ ‘’D ’D ’D ’ ’$‘’D ’( Ô‘’D ‘’D ’D E’De eE’D ’0‘’D ‘’D ’(’,-E’D E’De‘’D -e’4’8’<’P Ô9-Ô9 ’X# ÔÔàÔ)-ÔÔàÔ ’\ ÔÔ’`#-ÔÔÔèÔèÔ)èÔèÔÔèÔ’T ’l’T’l ’l ’l’p ’t Ô’h ÔÔ--Ô ’x - à-Üà- à- -à-!-ÜÜà- ÜÜà-’€' Ô-ÜÜà- -ÜÜà--Ô-’„’h--Ô ’+ ÔÔÔÔÔ ‚4‚ÔÔÔÔÔ u’Du’H’Lu ’D ’D’DÔ9’P ’T’T’T’à Ô ’X ’\==’h’d99’d’d% ’l Ô ’l ’l’p Ô ’t Ô ’xÜà-’|Üà- à-%’€ 9-’„’ˆ  ’Œ ÔÔÔÔ ’’ˆÔÔÔ’¸ àÔàÔàÔ ’¸’˜’¨ Ô’˜Ô’˜’¤’ ’¨’˜’˜’¸’˜’¨’˜’˜’¸’Ì’Ì’È ’¸’Ì’Ì9’¸’È’È’È’¸9 ’˜’˜’  ’˜’¤ ’˜’¨ ’˜GBMicrosoft.FSharp.Collections.Generator+Step`1+_Stop@DebugTypeProxyGBMicrosoft.FSharp.Collections.Generator+Step`1+Yield@DebugTypeProxy (’¸ ’¸FAMicrosoft.FSharp.Collections.Generator+Step`1+Goto@DebugTypeProxy’ ’¬ ’ ’¤’° ’¤’¨’´ ’¨(Ô’˜(àÔ(Ô’¸ ’¸Ô’¸ Ô’¸’¼’À Ô’¸’¼’¼’¼’¸’Ä ’¼’˜’¨’¸’˜ ’˜’È à]'’˜’¤’¨’¸’˜(9’Ì’Ð ’Ì’Ô9’Ì’Ü 95 9 ’ð Ô99Ô9 ’ô ÔÔ9Ü9ÔÔ9 ’ø ÔÔ999%9ÔÔ99 Üà àÜÜà ’ü) Ôà9ÜÜàÜÜà9Ôà9Ô9Ü“ Ô9Ü9Ô9 “ ÔàeÜ Ü9Ôàe Üí“ ÔÜ!ÔÜÜí Üí’à“  ÔÜÜíàÜÜí9àÔàÜààÜà'ÔÜàÜà Üà “8 ÔàÔÜÜàÜà ÜÜàÜà)9ÔÔàÔ“ Ô99Ô9’Ü==’ä’ä’ä  ’ðÔÔ ’ôÔÔÔ9 ’ø9 ’üÔà“Ô9Ü “àeÔàe àe àeàe“ Üí“  Üí] Üà “ Üà"àààà%“- €¹ –˜ –˜“, –˜ –˜€¹ÔÔ –˜“, –˜“4 u“8 u“< –˜ –˜“@ Ô–˜ –˜ uÔÔÔ“8 Ô –˜“@ –˜ à à isSome isNone àÔÔàÔÔàÔàÔààÔààÔàà bind àèà  base1 base2   zeroCreateBased  createBasedÔÔ initBasedÔÔ Ô!ÔÔÔ “T ÔÔ “X ÔÔÔ(ÔÔÔ“\ “`  rebase(  “T  ÔÔÔ “X “\“` €¹€¹€¹€¹ €¹€¹   €¹ €¹ €¹€¹ èèèèÔèèèè –˜è–˜è#èè–˜è –˜*èèèèè$è–˜èè5 èèèè–˜èèèèèèèÔè ÔèèèèèèÔ薘薘–˜ èè èè!èèèèèèèèè1èèèèèèèèèèèè9è= è@èèèèèèèèèè èèÔ!èèÔè èèÔè.èeèeèèèèèeeèèèUèU;èUèUèèè(èèèèUUèèè0èèèèèeèeèèB èèèèèèèU(èUèèèè  è"èèèè.èÔÔèèèèÔÔ#èÔÔèÔÔ Üè3 èèèèèè&èÔÔÜè ÜèÜè“| Ô‚Ù ‚ÙíÔ Create“€ íCreateFromValue í get_IsDelayed get_IsForced ForceSynchronizedForceUnsynchronizedForce“|“€ InfinityNaN InfinitySingle NaNSingleseq unboxbox% raise% à% |Failure|_|not compare  failwith invalidArg nullArg invalidOp ZTThis function has been renamed to 'reraise'. Please adjust your code to reflect this rethrow reraise efst esnd ignore Üref Ü ÜÔÔÔ"ÔÔÔÔÔÔ"ÔÔÔ “ˆ ÔÔÔÔÔ “Œ ÔÔÔÔÔ€í€×This construct is for ML compatibility. Consider using the '+' operator instead. This may require a type annotation to indicate it acts on strings. This message can be disabled using '--nowarn:62' or '#nowarn "62"'.>TIsHiddenà defaultArg  èèèè Ü incr decr eE |KeyValue|    €É ‚‚ string ÔÔ lock usingY typeofñÔmethodhandleof typedefof sizeof hashid“ - “”-abs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh “˜“œ pown Ô Ô “ˆ Ô Ô Ô “Œ Ô    “°9ÔÔÔÔÔÔ -aLThis function is for use by compiled F# code and should not be used directly´TIsHidden“° 9 9 Ô Ô Ô Ô Ô Ô  - “° 9 9 Ô Ô Ô Ô Ô Ô  - “° 9 9 Ô Ô Ô Ô Ô Ô  - “°99ÔÔÔÔÔÔ -“°99ÔÔÔÔÔÔ -“°99ÔÔÔÔÔÔ -“°99ÔÔÔÔÔÔ -“°99ÔÔÔÔÔÔ -“°99ÔÔÔÔÔÔ -“° 9   9  - “° 9 9  - “°”L ÔÔ!9ÔÔ”P ÔÔ-ÔÔ“° ”T ÔÔ#9ÔÔ ”X ÔÔ!-ÔÔ“°9 9 -              €É€É€É€É€É €É€É€É €É€É€É €É€ÉÔÔÔÔÔÔÔÔààà ààà+àààà,àààà9àààààà$:ààààààG àààààààà, H àààààààà0  ààà ”dY€ Ô ”h YY€ÔÔ”l Ô”°”Ä”Ø ”ìÔÔ•••0•D•X•lÔ•°•Ä •ؕ얖–(–<–P –d“¤ “¨“°  “´ “¸    ÔÔ 9          Ô Ô  9           Ô Ô  9           Ô Ô  9      ÔÔ 9     ÔÔ 9     ÔÔ 9     ÔÔ 9     ÔÔ 9     ÔÔ 9             9              9 ÔÔ”L”P ”T ”X     9 ”d ”h Ô”t Ô”|”„”Œ”””œ”¤”¬ ”l YÔ Ô  €É€É €É€É”¸”À”°”̔ԔĔà”è”ØÔÔ ”ø ÔÔ •  ”ìYÔÔÔÔ   ”ô Ô Ô  •••••$•,••8•@•0•L•T•D•`•h•X Ô•t Ô•|•„•Œ•”•œ•¤•¬ •l YÔ Ô      €É €É     •¸•À•°•Ì•Ô•Ä Ô •à •è •Ø YÔ Ô•ô•ü•ì–––––$––0–8–(–D–L–<–X–`–PÔÔ –p ÔÔ –| –dYÔÔÔÔ –l Ô Ô Ô –x defaultof equals èèèè –œ –˜ Ô –˜ – –˜–˜ –˜ –œ –˜ –¨ –¤ ÔÔ–¤–˜Ô–˜Ô –¬ –˜Ô –° ÔÔÔA–¤–¤–˜Ô–˜Ô–¤ –¨ –¤ ÔÔÔÔ–´–¤Ô–˜ÔÔ–¤Ô–¸ –¤Ô–˜ÔÔ–¼ –˜ÔÔ–À! ÔÔÔÔ{–´–´–¤Ô–¤Ô–˜ÔÔ–˜ÔÔ/–´ÔÔÔÔ–Ä –´ ÔÔÔ ÔÔÔÔÔ –´–Ä–´–Ì –È" ÔÔÔÔ–È–´Ô–¤ÔÔ!–˜ÔÔÔ–´Ô–Ð –´Ô–¤ÔÔ–Ô –¤ÔÔ –˜ÔÔÔ–Ø# –˜ÔÔÔ–Ü( ÔÔÔÔÔ€Ç –È–È–´Ô–´Ô–¤ÔÔ–¤ÔÔ–˜ÔÔÔ–˜ÔÔÔ8–ÈÔÔÔÔÔ–È–Ì–È Ô  &ÔÔÔÔÔ €Í€Ñ€¹€¹€¹€¹€¹€¹ €¹€¹€¹€¹ €¹ €¹€¹ €¹ €¹€É €Ñ €Í€Í€Ñ €Ñ–ä–耹€¹€¹€¹€¹€¹ €¹€¹€¹€¹ €¹ €¹€¹ €¹ €¹€É—,€¹Y—0—(       ‚é  I ‚é  ‚é  ‚é    Y—4—8—<ÔÔoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHiddenÔÔÔÔ —` —d —l€€ÔÔ€ÔÔYY ÔÔ ÔÔ Ô Ô Ô Ô ÔÔ Ô Ô Ô Ô ÔÔ —X —¬ —° —¸ ÔÔ —¤ —ü ˜ ˜ —ô ˜H ˜L ˜T ˜@–è                  €É€É €É€É €¹—( €¹—4—8ÔÔÔ€ÉÔ€É Ô Ô Ô Ô —L—T ÔÔ—<Y€ÔÔÔÔ€É €É€É     —P Ô ÔÔÔ ÔÔ ÔÔ ÔÔ Ô Ô ÔÔ —XYYYÔÔ —\ —` —\ Ô —d —h —l —h  —¤ —¨ —¬ —¨ —° —´ —¸ —´  —ô —ø —ü —ø ˜ ˜ ˜ ˜ ˜@ ˜D ˜H ˜D ˜L ˜P ˜T ˜P%˜˜ ˜¤{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden% %% ˜% ˜ ! %%!!  ! ˜˜%% ˜%%˜ ˜%% %% ˜%%˜%%'˜%%%% ˜%% ˜ ˜               @            %%€Ñ% %% €Ñ€Ñ%% €Ñ%%€Ñ €Ñ%% %% €Ñ%%€Ñ%%$€Ñ%%%% €Ñ%% €Ñ ˜ ˜¤€Ñ €Ñ% %%  €Ñ€Ñe €ÑU ] €Ñ]a €Ña €Ñee€ÑUU€Ñ]] #€Ñaa €Íee€ÍUU €Í]]#€Íaa ˜œ˜¬ €É     €Œ˜¬ Y€ŒD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden%Y %Y%%%˜ ˜¤€¹€¹€¹€¹€¹€¹ €¹€¹€¹€¹ €¹ €¹€¹ €¹ €¹€É,048<$,048<€±,,€Í004488<<$$$€®,,004488<<(€Í$$$€½$,,004488<<$€Ñ\`dhlpT\`dhlp €é\\€Í``ddhhllpp(TT€è\\``ddhhllpp+€ÍTTu \`dhlp€ÑT+TT€Ñ(TT”˜œ ¤¨¬Œ”˜œ ¤¨¬ +””€Í˜˜œœ  ¤¤¨¨¬¬,ŒŒ(””˜˜œœ  ¤¤¨¨¬¬/€ÍŒŒ€–”˜œ ¤¨¬€ÑŒ/ŒŒ€Ñ,ŒŒèQ˜ÈQÔe ˜ÌÔeÔU ˜ÐÔUÔ]˜Ô ]Ô]Ôa˜ØaÔaMMM €µ’¸÷ñµ$D Ù|«: m@`JœHæ:†#kh,¨½|Ù òòˆEŒÑ¬ L8•sÕœ:š–—¶«Žm<½²ºf¯’:OÔË2ÄšW t÷¹ÆÙÑ}|Èkì«T‰w |³Îѓݰ2?!ï ÜÏ*l[éCÔÇŽMÓð"÷r]»ä¯'pLEÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetŒPADPADP1Xó‚èŽw‡&1–‡ðÔS‰¸[lj 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—]ºO˜’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½é‡8lÅ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9áRéã(X—ä~Ë€è-$ê½CêYënêýÃÙê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú²‡û¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(ÉH+#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFoundÝNcontrolContinuationInvokedMultipleTimes! delegateExpectedp&dyInvDivByIntCoerceŠ dyInvOpAddCoerceÓ$dyInvOpAddOverload"dyInvOpMultCoerceg&dyInvOpMultOverload°endCannotBeNaNû4enumerationAlreadyFinished*enumerationNotStarted=4enumerationPastIntMaxValuej^failDueToUnsupportedInputTypeInSumByOrAverageBy­*failedReadEnoughBytesˆ,firstClassUsesOfSplice¶&genericCompareFail1é indexOutOfBoundsý"inputListWasEmpty7,inputMustBeNonNegativeR$inputSequenceEmptys(inputSequenceTooLong’LinvalidRecordTypeConstructorNotDefinedÆJinvalidTupleTypeConstructorNotDefined"invalidTupleTypesUkeyNotFound”keyNotFoundAltÎ0listsHadDifferentLengths0<0 +‚70  ¢€0!0 +g$‚®ù–îeôSŒÑÂz…À> ‚-0‚ 0‚ˆ  aÌ“f0  *†H†÷ 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 111010203225Z 130110203225Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚î[¾}$ã†àfÿHµ½ä´ 2ðr>}.‡×N¡±§C/÷ež1á21E®×Á$„!×.µ„~ú5ÓS×¶QOÎf¹ë· ý)\­¨‡öÊ"´Õ¿uõŠpc×ïŠéC$dZÓ‡}m;¬vÍW6}è¼V¬˜ð‰].dƯ& ^cñ=¿™ˆÃ0·Á `rÌÖ·¨5†›¡ æ“[ŽúTœÁó_BŸ?·'ƒ2‚óÙ‡Ô!²<¢¶O×$ªîõ³Ùúù9O§éò¯YRôÜA›/pcÝêÞªñm!S3»²OÅáS²AeGn7ö¼é›A‘k.[0ã‚0‚0U% 0 +0URó*·À‰Ã=Ô–X¹£Sn0Uÿ€0U#0€ËèÊÒ´XÉ7.3¹Lš 0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicCodSigPCA_08-31-2010.crt0  *†H†÷ ‚¥[6l­N›iãoŠ›iwÃldr(ˆÙ=Em,{Ô(/âYj 4·Šýê¹”ì1æjôuÓ§Ú^:žý© ½œQCoÿg”œáÏ|ð$°5̃]îÚÀo6IÀZ WösážóãL;>/ÌÒÍîO"p÷¦K›¸\ˆ6”l3¸©­Q ÐÂÜŽ"½Ãß‚×V¡÷Ýð¥ Wtlq›ÁðòÂp^§ÛmM7X™My@Ð4]Z%®gëNF°Œ)£¥3Ÿ#ÕøµF}àîc˜K>¨/°³Y¤¯ASŽ-*É:L.©1QVd¬šÌ¬—˜)Š—‡ê¶0‚º0‚¢  aŽB0  *†H†÷ 0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA0 120109222558Z 130409222558Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:F528-3777-8A761%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚–ìŽGMTÂ\•€×N =¿—CÃKã`g/M ØÑF/@Þ ¤PRˆ Cz-?îHnfÇ‘æÊnìy©j#›ÍbžÍj¤?ç£CÿbG¡´ºDúß@Á…T~è §,C#›R25ôþšVŸcw{0ž 3…rÊJÈÌ%ÍÛ].ǰŒñCHGµz åóïÁºô³ØÍ8û!ª= m…ÐÊç†À3ƒµ%ÄÌZœÄÃÚb%MS%aûàì÷GÆ€Eæ5S#6wʰݘ+9Àu5ÝL!=v0Ų°es)H'ØÂÒ°„G»xºÕtÞ×K÷SÞxÚ†÷aˆ&3´GÆ Tˆ+,u£‚ 0‚0U/èFÈhÓnO² ÐÞ‰NñGîHÁò0U#0€#4øÙRFp í@ûvû³+°Ã5³0TUM0K0I G E†Chttp://crl.microsoft.com/pki/crl/products/MicrosoftTimeStampPCA.crl0X+L0J0H+0†œvwñ%ÞGmÞI…¡ÚJKF!5¨u6L·³ªß·+Ù¾*jýß5Ì? ÇÝÏN”$c .$®_CDz\Ý7Û¤E³‘:W}ãGÆfÓÏœFVôL±à ªÕöÕ<¢àµÔø~Ukô‘ÍQ§•e0‚¼0‚¤  a3&10  *†H†÷ 0_10 ’&‰“ò,dcom10 ’&‰“ò,d microsoft1-0+U$Microsoft Root Certificate Authority0 100831221932Z 200831222932Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0‚"0  *†H†÷ ‚0‚ ‚²rY\0d¿š` B™vSl>ÖoÌËñêkþ—àß:tƒ·/ 2ìÿÞÂBN#ÕrÛ5W ‰Ê® Iôðh¬MK¥½yKq›GÚý%ßuˆÏªsD×Ûó½ò6¤É\Eܯ­=à(h—§¥rsVñ”äý5”r Öv_wEƒ…8Ðs[ºgR¥²i/Ú þ’t)âv/TÝ0YøÒbýËÉ_F1P¹'ä@0Ïr)("Ç7N= 2=Í¡8…\NV‚(*2·K×OcçÒ-bñE=ç¬öF¡žÑ[Œ&SèzªJòFÏ7<8ž´w\¥žËV<Á¬ _Ó£‚^0‚Z0Uÿ0ÿ0UËèÊÒ´XÉ7.3¹Lš 0 U†0 +‚70# +‚7ýÑ1NÓ&Š•á˜`;¨1o¦<¼Ø-0 +‚7  SubCA0U#0€¬‚`@V'—å%ü*á S•Yä¤0PUI0G0E C A†?http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl0T+H0F0D+0†8http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt0  *†H†÷ ‚Y9>&F¯ëo@±2µjë/n¨I÷ë_uíL;-×C­ þËé-1£#Ì|P˜€!]¬=/Lº¢¨Vœãp»¸´øyµIr÷>êAÊá iË¥œ -ú PÄVÍ-ãJÒ¼pç¨ ¢¥VชKWò•Bœñóïîã†4<¸VšðS#…*¤‚“â”òâNøŒ¡Ê襑NÈÒr•*qm›øðSÖgÌ"ÿ\Í¢Œ½'²ycVD¢QÍùé£XVÝ›ED/_ôÚ®Ô‚2nü¤•äëiç©¢,¾È+eŽ™Ûõ¢ú& e8”ñzJ»ÑáVèÐx–\É5_Ý“IŽ-¾­4Dî]Ý5[!Î˜Ç î…ŒOmN=|)HœrÑólÊÁìp£W’W}” HZ÷Ï£g t¥6í-/Èær7ôo±¤ßüƒž‡ H Dæ¥$Û¡­á(½Øß©ŽŒ;,Ñ ˆêPê5çGöœ•@Ò`'¢ãÉ=ß‚’@k"˜'  îÍÔºÒX¡‚%Ã0‚ *†H†÷  1‚ 0‚0…0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA aŽB0 + ]0 *†H†÷  1  *†H†÷ 0 *†H†÷  1 120727022906Z0# *†H†÷  1 …~Ev`;gÞ@…pe0  *†H†÷ ‚ªù‹ØLO&ê$%ÛZPc°“ù~ “¹·@ïÇ_Õ$<¶Þ÷+õTÔ={á0T¡óð¹SxÐçævðˆê7™EkïSSî·¢+¸§—WipþDEñrlÒbÛTfûBíסB6acšÕ‘øVTW¶·êÌ^X[y„•È—Ü–ö%,‰Ür޲ÀE¡î®í´MÛ‘âZËÆs Øéç4åð, 9È©Ôô¾^Òxç-Jêõvu„°lZÁêÊ'ŽqÂù]nc•Ÿß—ÂætTU¯ZùÒlïðZ³‘(ïk‹$ Óu\$JãMð•´ÖÅ ô&Ú$z×ÎU¤€¾C0‚#  +‚71‚#0‚#Œ *†H†÷  ‚#}0‚#y10  `†He0\ +‚7 N0L0 +‚70  ¢€010  `†He jɶ¸É¥!ë—2é%  ¼ »Æ^®ôš‰ï°0E ‚ ?0‚½0‚¥ 3âyú %XEê0  *†H†÷  0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20110 120707001432Z 131007001432Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚œQs·§/ΰ=X?,˹]::H÷lT~ܸ* m;YŽ%ÐN`tÛ´œ„UOÒ?†€;²ÔA‹°|ÕGÅKaIÚ a½D<äûØo`N3œí‰Q‚ßPÖÙ²>÷½€F—vŠÍ«r9¤q'âü²øÄñ´ÙŸ€òåCŠTý!cnøHzÊÜôP䶃"ŒGÁ*D>8ñ¶.¸±­ù0+„A£s»šp•)œ&ÍÎ9¿L/œ¶î*Z¬’ó6>âò)éP¢@Î2'å§c©£¥óÙû:Óœ³r£5Ex¼¾½€Ñ(kd‰óßtÁ„ÒEÖ@oÛ\-£‚,0‚(0U%0+ +‚7L0Ua??P’±.ÎòCqc\BF0U#0€HndåPÓ‚ª77"µm¨Êu•0TUM0K0I G E†Chttp://www.microsoft.com/pkiops/crl/MicCodSigPCA2011_2011-07-08.crl0a+U0S0Q+0†Ehttp://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt0 Uÿ00  *†H†÷  ‚‚ŸCk]²dR÷ÓæÅo‹ù…ÃPøÃãÃ(øtqëO'C…£Mõf†`a;ÝW¾ õ~/ž=¬E3]²¢vÑß`ï¡yN^ž|#áñ°qÓzA°"L„ÌŠWCÖ®›3=’f;”¯vþðd•bƒàWC;ÎGæÜuŒÒùÊj÷HíN2Ù LÂÇóf„¤È×÷>øôäŒÖ÷L¹Íò¹ÀÐêƒH9›2 ŽýÂxã¸[Ïð+0¾7w¢ùoÞÛÐ\CRú,•¬éGa÷s°Õär¸c3—Õ—ÿaðIî_–æ,µ5ïÏOå}k>YÚžðÍÖ°€HaŒ• ë€±FÖ5°i?ýã†r~˜Í#Céܶ z‡Õ¥Ý¿:£Ö‚úÑMxKí[¦ž 4„ðR¼NÀqÞ㑹sy ò64«,I¤`0 ‹˜&ýâd‚•±Œ]è‰O„ò¡/Yä;-®3XÅ·>þ2Ó³=±²¯’8~Ò€,õNV‘!5%Ã9ndSºœ­#„Ëôº†÷_ðÐR¿Œ”‡¼À!t%_(¶Ì'(8%˜9J6Ï|±’®#§©fìajá(I_ˆâ%]Ó!K>RĵW?$ðÑz[/Õ#ãp]QFw³øá¼¬‚_ÛÀ³½ÔUKç9¡é#I¼¸D|EäÁÃrzàrç$ß¿F™ÅïÂWÛƒìMI0§«Žßì[Ÿ¯üݰfâÁ—{íÖíKçI)§(¦§}g€æŠbx_²/„×Wœ\¿w((ñímÃ(,@7OÁá…D‰Ä LÅÔ¥C/t•÷nøx X,]`•š>O3„Ú°ˆÞžNô–°¼F l˜ÒàÖˆŒ £‚í0‚é0 +‚70UHndåPÓ‚ª77"µm¨Êu•0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€r-:1C¹Náê§Ç1Ñ#‰40ZUS0Q0O M K†Ihttp://crl.microsoft.com/pki/crl/products/MicRooCerAut2011_2011_03_22.crl0^+R0P0N+0†Bhttp://www.microsoft.com/pki/certs/MicRooCerAut2011_2011_03_22.crt0ŸU —0”0‘ +‚7.0ƒ0?+3http://www.microsoft.com/pkiops/docs/primarycps.htm0@+042 Legal_policy_statement. 0  *†H†÷  ‚gò†¥˜àTy.ÓØtg"› –ác’™B–}Òy Áe_.,>øÃrÑmƒþ¾?è Ê;¿G©£óiÛc¿"5¥—]e„}‹FPUØ ’|ÒKó.)›æ=¥Ôµw”9âédÉD=xz#ó}¦tƒôË&F*Š»¤© ›íhúh.• *?*kXIc inZ˜–äƒôÀóF+Þü;н5ïn%®å¯'íÐÝó¯™(—˜M= ò‰ÖÃ2âðÅ-Î[ž´I9 Æ ÂÆ­®å²ÙÛˆQEX82q'±ô'øÞ,: i˜²Y‰hno§·tÃ@¦*(>‚?Mf À³Mõáo}E§vå@*e£Ã]Rb†Ãc6—†ßÚóøò¡š'áÍ¥—Ðî]cAã[œ‡>wѱu¾aaµðÜÆ¾ßAÇ(îÞe/ì—ö¡\–ØÖ¡F½Yó—¥ KH™€Ð)ű›¥?Ew5ÆÒ¢¢Ÿzz"úH•«ûG#€õžø¿k·K—âëuxìê7™yKÿÖ³#huæ¯úü‹ë €êi;¯ü0íLŽßßumc‘=ÑVNO¿€W"¡x2!zïA ±?û¨Ì¤]Á¡ˆ›WqVNHEÀBÉ›v[ €HkýyŸÁ½mmjÉRs zPÍ1‚À0‚¼0•0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20113âyú %XEê0  `†He É0 *†H†÷  10 *†H†÷  1  +‚70 +‚7 10  +‚70/ *†H†÷  1" ÔŒ5ChÀûí†ýc£ïõ¬Fû¬ÖbÿþYÅ9 k0J +‚7 1<0:  €FSharp.Core.dll¡€http://microsoft.com0  *†H†÷ ‚š ÂÙn‰L‚â¶y†Ì{îrO3‹*¨þŸ5»ÿÑ=È&ÞAáÖ¸-ŠUÅã1å·"Û1©äÿç:HØ*œÀYÄ—•P`Ç3Ú“àûÀþ‡ß5ïŒt;2èÍï¢"6Vä¨*M6¡ìТ¼Ü×Ã>ñSþ~Uâ´“ÌM>N‚7L®@â=–ºÙý§ˆ‹"­Âà+D‡, «9J}"gT‹ªÈ‚AûGl·Vm|é–çíšq¶Ö4§Fãoñ¸sÒÔǹ©žZ]¥¹kG Y2*cóíP)DP+Âéð ]&\æ†éâÍBÛwÕŒPëyx:!uhý^f»VP¯¥o`¾Åyž¡‚/0‚+ +‚71‚0‚ *†H†÷  ‚0‚10  `†He0‚= *†H†÷   ‚,‚(0‚$ +„Y 010  `†He ¡”ïªÕèÐÒ+k ›Ÿ˜vO@¨š=C½!&€¶ðÌtOó§³O20120727022908.271Z0€ô ¹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service ‚Ä0‚q0‚Y  a *0  *†H†÷  0ˆ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 100701213655Z 250701214655Z0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100‚"0  *†H†÷ ‚0‚ ‚© ¼wŠ: ìü—õúi”ktTÕ¥ ‚…ûí|hK,_ÅÃåaÂv·>f+[ðS'1A•Î Ž|a0Y±0Dñ`ˆ„TC ×M¸8³BÝ“¬Ös0W&‚£E ÐêõGÍ¿$`2X`FòXG†2„tag‘_T±Ï“L’ÁĦ]Ñan(Æù†€»ßaüFÁ'$gr!НKd‰Pb±]ýw=ðWu¬½ŠBM@QÑœ>gõfÀ–D~ïÐKýnåšÊ±¨òz* 1ðÚN‘¶ˆ5èx°é™Í<ç/Dº§ôÜd½¤Á “xÍü¼ÀÉD]^œO"M£‚æ0‚â0 +‚70UÕc:\Š1óC{|FÅ3hZ…mU0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€ÕöVËè¢\bhÑ=”[×ΚÄ0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicRooCerAut_2010-06-23.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0 U ÿ•0’0 +‚7.00=+1http://www.microsoft.com/PKI/docs/CPS/default.htm0@+042 Legal_Policy_Statement. 0  *†H†÷  ‚æˆQ âÆà˜?q=£¡!o³ë¦Ìõ1¾Ïâ©þúWm0³ÂÅfÉjßõçðx½Ç¨ž%ãù¼íkTW+Q‚Dû¹SŒÌô`ŠvÌ@@A›Ü\ÿ\ù^5˜$VKtïBȯ¿Æò7}Z?ò™yJ‘R¯8õ/yeÙ©µkäÇÎöÊzoK0D$"<Ïí¥–Y)¼¶ýápŸ2J'ýU¯/þ¶åŽ3»b_šÛW@éñΙfŒÿjbÝÅJ ‘&â9ìJqc{!mÜ£¢<ú}–jx¦mÒáœùü8Ø”ôÆ¥ –†¤½ž®Bƒ¸µ€›"8 µ%ådì÷ô¿~cY%z.9Wv¢qªŠ‰ºa§ËšØGš€ÅÐͧÐï}ƒðá;q ß]t˜"aÚ°Po½ñáßç1¤“:÷eGxèø¨H«÷Þr~akow©Ë§ ¬9»ìÆËØ‚´rÍô¸…€û‰*T9²[ÚÈ U™z‡s;æ˜-êà3.)õÀ/T'!÷ȬNÚ(¸±©Û–²§B¢ÉÏAMà†ù*š£f0Ó»t2Kßc{õ™Š/Ç!¯Yµ®ÜD<—PqסÒÅUãiÞWÁÑÞ0ÀýÌæMû ¿]Oé8/¼ÏX.ï  P5Úï 'Õ³~5ºÚ6ÛÓ_ÞtˆI0‚Ñ0‚¹  aõ 0  *†H†÷  0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100 120109213540Z 130409214540Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚¬ŠM±Kn!(ñÍÏ÷„Ó2QÜE;k+z!-@ÍˤQ˜É 4î•q¨ ó?MãñYhå¶.‹Õ½Ô *Er’ o¥HV´< ›EiøÞ#Q‰Š“ Ý‚w­‡ë‚_”‘îá†7M¨$qäp‡Ahu#’â‡;ÀLÞ˜€â¶ÛäÖ„]Ψ'¡ë´»›ôŠ3-Ýí‘nð4«Óþšbü^ІþÀGU’ƒ>Ø”š—Cu™cv2Þ Ïš~Ýx¾íÛº(§”vèvžnøú‚[³3’ ¹ÓÀä݃6Ì­±œEXlhVFÂs*Ú ÖÖÖ—_÷6>ð¦âÄÙ£‚0‚0Uþ¢†xöá›/zßšêÑ!ê~§0U#0€Õc:\Š1óC{|FÅ3hZ…mU0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicTimStaPCA_2010-07-01.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicTimStaPCA_2010-07-01.crt0 Uÿ00U% 0 +0  *†H†÷  ‚ŸzœVü$»”eØB5ß-†ÂÏYÈ!‡Q=gâÌïñÖ 5:L«?¦˜ém"[Ð;Ï–†Sͬö4.‰ùÿà9§!<áÖðo)íÐ Mr#ƒõÚø­»•œ* —#/º^ 4¶†r:½q€¿9jð‘ùý y,ŸFyˆ¿‹ N“´¡¯ôZ>,ð»ÇÙ§YtìÅŽ¡×d‘£™V/õ¯a§‡zÐÈ~MNdŒù/$¨2Ý)°Có·Ò›åˆ°G*ŒÖ)òµÍFtA^È Åø'¦Ô2l ß`¼‡l]3]ZÊ€vê4ÿiàûË®\c§ è·lä{¸¡‚v0‚^0㡹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service¢% 0 +›ðï7‰íIHKNŵ°æ“‡e0 Â0¿¤¼0¹1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher NTS ESN:B027-C6F8-1D881+0)U"Microsoft Time Source Master Clock0  *†H†÷ Ó¼_0"20120727002814Z20120728002814Z0t0: +„Y 1,0*0 Ó¼_0 0á0 Ó½°ž06 +„Y 1(0&0  +„Y   0ã`¡ 0¡ 0  *†H†÷ ‚šœWiƒ­cµnh’PL7I\FèÖÅD îØò(V-ˆX K bJ~h¬sã:q­+AŽÞõ‰€ž’tqã‡Ë>°xµPGªÜË–³s×j¿U!õ®o³:–•Zád€?N“ŒT/±º!ÆSHþ(>áóúÁ Åʾ?S¼š_ÌÚsÓ©wÍp—SU£f^YG#2 „UEx£ÑjT~[ÓlA_ß›A¿Xv‘;jXž˜˜–©ÓM”–¤-Ti¬.Î× ì§;×˼e¢kd3Üä&ðÇ(~ SŒxÞ)Ø9çÔ®i Á1âë®/l³¢H¸UÊ Žû-:sB1‚ã0‚ß0Š0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0  `†He ‚)0 *†H†÷  1  *†H†÷  0/ *†H†÷  1" ­e c+KÁ¾@ûy–}%œ~ú§¼éÐ9°Ø“iëq0Ù *†H†÷   1É0Æ0Ã0¨›ðï7‰íIHKNŵ°æ“‡e000€¤~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0®×=¹Ã„¿„F¯ø”9Ú~™Wo0  *†H†÷  ‚rÃ]¸™ÙÃû?rKª=}0l©¯¥yožeãhSCóÒèŒîn@õFg¸17ù’™/(€í^!Ù¾—%0YFî°ß”™ä½"Êfñ"º4ÚÃTK—N–òõY“Q8“ËÈÉÆNð°KÁ‘º @”%µîS¥üó‚º^854¶ãëÓñiŒÔcˆ·TêΣyX°÷%‰~1=gÛ~k–=3/Ã¥‹!£ˆ5(p¨YY«+l×¥µG(ö ¾P7Ú€.„xZ|5#á’¼rNÕæT“åßN°!ÿïrƒÃ0x¾~'6£³f\ã¸M­±†(›¨ógòÎwNfsharp-3.0.34/lib/bootstrap/signed/3.0/v4.0/0000775000175000017500000000000012260314606017113 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/signed/3.0/v4.0/FSharp.Core.dll0000775000175000017500000421673012260314606021702 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELíPà! Øõ 6T @Ð@Àô[ˆàØ=  $õ  H.text,Ö Ø `.rsrcˆÚ@@.reloc Þ@BüôH@iäE ¤¯E$¯€*o &**J, (+-****Fo &}*"{*&o**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &*Fo &}*"{*Fo &}*"{*&o**o &**o &**o &**o &**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &**o &**o &**o &**o &*~o &}}}*"{*"{*"{*~o &}}}*"{*"{*"{*.o+*.o+*Fo &} *"{ *Fo &}!*"{!*Fo &}"*"{"*Fo &}#*J{#o ¥K*0Fo &}$}%}&}'}(})}*rp}+*"{$*"{&*&}&*"{%*&}%*"{'*&}'*"{(*&}(*"{+*&}+*"{)*&})*"{**&}***o &*Fo &},*"{,*šo &}.}-}/}0*"{.*"{-*"{/*&}/*"{0*&}0**oS**o &**o &**o &**o &**o &**o &*Fo &}1*"{1*6rpoZ*( *s **u¤þ*s **u¥þ*0 u¥,+*0» þ9§þ9œ  u¥,+   u¥,+ 3ru¤,3t¤ t¤ (9{!  {! þ(+*t¥t¥(9{"  {"    þ(+*Y**þ,**B¥þo# *0¾ ¥ þ9ž¥þ9Ž  u¥,+   u¥,+ 3du¤,-t¤ t¤ {! {! þ(+*t¥t¥{"  {"    þ(+*Y**¥þ,**0o þ,f u¤,-t¤  ¹y7ž{! Œ¦(•bcXXX *t¥  ¹y7ž {" Œ§(•bcXXX **6(:o$ *0­ þ9›u 9Œ  u¥,+   u¥,+ 3du¤,-t¤ t¤ {! {! þ(+*t¥t¥{"  {"    þ(+***þþ*0¥ þ9“þ9ˆ  u¥,+   u¥,+ 3`u¤,*t¤ t¤ {!  {! þ(+*t¥t¥{" {"   þ(+***þþ*0u , þo% **:(& }! *{! *:(& }" *{" *:( }( *2{( {! *:( }) *2{) {" *( *s* **uªþ*s+ **u«þ*s, **u¬þ*0 u¬,+ u«,+*0#þ9þ9u¬,+ u«,+ u¬,+ u«,+ @¿uª-u«-<u¬-jtª tª (9{-  {- þ(+*t«t«(9{.  {.    þ(+*t¬ t¬ (9 {/   {/  þ(+*Y**þ,**B¥þo0 *0¥ þ9þ¥þ9îu¬,+ u«,+ u¬,+ u«,+ @©uª-u«-6u¬-\tª tª {- {- þ(+*t«t«{.  {.    þ(+*t¬ t¬  {/   {/  þ(+*Y**¥þ,**0¹þ9­ uª-u«-6u¬-\tª  ¹y7ž{- Œ¦(•bcXXX *t«  ¹y7ž {. Œ§(•bcXXX *t¬ ¹y7ž{/ Œ­(•bcXXX **6(:o1 *0 þ9ûu 9ìu¬,+ u«,+ u¬,+ u«,+ @©uª-u«-6u¬-\tª tª {- {- þ(+*t«t«{.  {.    þ(+*t¬ t¬  {/   {/  þ( +***þþ*0þ9òþ9çu¬,+ u«,+ u¬,+ u«,+ @¤uª-u«-3u¬-Xtª tª {-  {- þ(+*t«t«{. {.   þ(+*t¬ t¬  {/   {/    þ( +***þþ*0u , þo2 **:(3 }- *{- *:(3 }. *{. *:(3 }/ *{/ *:( }4 *2{4 {- *:( }5 *2{5 {. *:( }6 *2{6 {/ *:( }7 *s8 **(9 þ*s: **(9 þ*s; **(9 þ*s< **(9 þ*{7 *0+þ9þ9 {7 {7 @ó(9 E3j¡t± t± (9{=  {= þ(+*t²t²(9{>  {>    þ(+*t³ t³ (9 {?   {?  þ(+*t´t´(9{@ {@ þ( +*Y**þ,**B¥ þoA *0¥  þ9þ¥ þ9î{7 {7 @Õ(9 E-\‹t± t± {= {= þ(+*t²t²{>  {>    þ(+*t³ t³  {?   {?  þ(+*t´t´{@ {@ þ( +*Y**¥ þ,**0çþ9Û (9 E-\t±  ¹y7ž{= Œ¦(•bcXXX *t²  ¹y7ž {> Œ§(•bcXXX *t³ ¹y7ž{? Œ­(•bcXXX *t´ ¹y7ž{@ Œµ(•bcXXX **6(:oB *0 þ9ûu  9ì{7 {7 @Õ(9 E-\‹t± t± {= {= þ(+*t²t²{>  {>    þ(+*t³ t³  {?   {?  þ( +*t´t´{@ {@ þ( +***þþ*0 þ9ñþ9æ{7 {7 @Ï(9 E*X†t± t± {=  {= þ(+*t²t²{> {>   þ(+*t³ t³  {?   {?    þ( +*t´t´{@ {@ þ( +***þþ*0!u  , þoC **>(D }= *{= *>(D }> *{> *>(D }? *{? *>(D }@ *{@ *:( }E *2{E {= *:( }F *2{F {> *:( }G *2{G {? *:( }H *2{H {@ *:( }I *sJ **(K þ*sL **(K þ*sM **(K þ*sN **(K þ*sO **(K þ*{I *’þ,þ, þ(+**þ,**B¥ þoP *0*#¥  þ, þ(+*¥ þ,**0*þ9 (K E-\¾tº  ¹y7ž{Q Œ¦(•bcXXX *t»  ¹y7ž {R Œ§(•bcXXX *t¼ ¹y7ž{S Œ­(•bcXXX *t½ ¹y7ž{T Œµ(•bcXXX *t¾  ¹y7ž {U   Œ¿(•bcXXX **6(:oV *nþ, þ(+*þþ*05+þ9#þ9{I {I @(K E*X†´tº tº {Q  {Q þ(+*t»t»{R {R   þ(+*t¼ t¼  {S   {S    þ( +*t½t½{T {T þ( +*t¾t¾{U {U þ(+***þþ*0#u  , þoW **>(X }Q *{Q *>(X }R *{R *>(X }S *{S *>(X }T *{T *>(X }U *{U *:( }Y *2{Y {Q *:( }Z *2{Z {R *:( }[ *2{[ {S *:( }\ *2{\ {T *:( }] *2{] {U *:( }^ *s_ **(` þ*sa **(` þ*sb **(` þ*sc **(` þ*sd **(` þ*se **(` þ*{^ *0:,þ,)þ,!{^ {^ 3 þ(+*Y**þ,**B¥þof *06.¥ þ,¥þ, þ(+**¥þ,**Jþ, (+**6(:og *0'.þ,u , þ(+**þþ*Šþ,þ, þ(+**þþ*0.u , þoh **>(i }j *{j *>(i }k *{k *>(i }l *{l *>(i }m *{m *>(i }n *{n *>(i }o *{o *:( }p *2{p {j *:( }q *2{q {k *:( }r *2{r {l *:( }s *2{s {m *:( }t *2{t {n *:( }u *2{u {o *:( }v *sw **(x þ*sy **(x þ*sz **(x þ*s{ **(x þ*s| **(x þ*s} **(x þ*s~ **(x þ*{v *0:,þ,)þ,!{v {v 3 þ(+*Y**þ,**B¥þo *0L0¥ þ,/¥þ,"{v {v 3 þ(+*Y**¥þ,**Jþ, (+**6(:o€ *0;0þ,,u , {v {v 3 þ(+***þþ*06,þ,'þ,{v {v 3 þ(+***þþ*01u , þo **>(‚ }ƒ *{ƒ *>(‚ }„ *{„ *>(‚ }… *{… *>(‚ }† *{† *>(‚ }‡ *{‡ *>(‚ }ˆ *{ˆ *>(‚ }‰ *{‰ *:( }Š *2{Š {ƒ *:( }‹ *2{‹ {„ *:( }Œ *2{Œ {… *:( } *2{ {† *:( }Ž *2{Ž {‡ *:( } *2{ {ˆ *:( } *2{ {‰ *r(‘ }‡}ˆ}‰*(‘ *0 (’ *{‡*{ˆ*{‰*0j3þ,a ¹y7žts(@bcXXX ¹y7žts(?bcXXX ¹y7žts(> , (“ +bcXXX **6(:oA*0w5þ,hu  ,\(+-*ts(>ts(>(” ,3ts(?ts(?3ts(@ts(@þ****þþ*b(rp(• þo– *0sþ,dþ,\(+-*ts(>ts(>(” ,3ts(?ts(?3ts(@ts(@þ****þþ*05u  ,oE***o &**o &*"s— *Ns˜ þ™ sš *"s› *Nsœ þ sš *0(7uä ,  þož *oŸ þo  *0G:uç , þo¡ *uè , o¢ þo£ *o¤ þ(+*0q>uë , þo¦ *uì , o§ þo¨ *uî,o© þ(+*o« þ(+*0ŸCuð , þo­ *uñ , o® þo¯ *uó,o° þ( +*uô,o² þ(!+*o´ þ("+*"s¶ *"s· *"s¸ *"s¹ *"sº *"s» *{¼ *"}¼ *:( }¼ *08Dþ,'þ,(9 {¼ {¼ þ(+**þ,**B¥üþo½ *0CF¥ü þ,&¥üþ,{¼ {¼ þ(+**¥üþ,**0/Gþ,& ¹y7ž{¼ Œ¦(•bcXXX **6(:o¾ *04Fþ,%uü ,{¼ {¼ þ(+**þþ*"{¼ *&(¿ *0/Hþ, þ,{¼ {¼ þ(+**þþ*0Iuü , þoÀ **( * *s *:( }à *{à *0 K ,+*0gLþ,Vþ,N,+ ,+ 3.,)  (9{à  {à þ(+**Y**þ,**B¥ýþoÄ *0rM¥ý þ,U¥ýþ,H,+ ,+ 3(,#  {à {à þ(+**Y**¥ýþ,**0:Nþ,1 - *  ¹y7ž{à Œ¦(•bcXXX **6(:oÅ *0fMþ,W(#+-*¥ý ,+ ,+ 3(,#  {à {à þ(+***þþ*þ*þ*†r-poÆ ($+r9p(Ç (Ç *0ZOþ,Kþ,C,+ ,+ 3%,   {à  {à þ(+****þþ*j(#+-*¥ýþoÈ *.sÉ €Ê *( *~Ê **{Ë þ*"sÌ **{Ë þ*V( }Í }Ë *{Í *{Ë **{Ë þ*0 Qþ9Œþ9{Ë þ {Ë þ 3e{Ë ,[  (9{Í  {Í (+/*1*(9{Ë  {Ë   oÎ **Y**þ,**:¥þoÏ *0©R¥þ þ9‰¥þþ9y{Ë þ {Ë þ 3]{Ë ,S  {Í {Í (+/*1* {Ë {Ë   8nÿÿÿ*Y**¥þþ,**0ZSþ,Q {Ë - *  ¹y7ž{Ë oÐ bcXXX ¹y7ž{Í Œ¦(•bcXXX **6(:oÐ *0‡Tþ9uuþ ,i{Ë þ {Ë þ 3O{Ë ,E  {Í {Í (+,! {Ë {Ë 8Šÿÿÿ****þþ*0nUþ,_þ,W{Ë þ {Ë þ 3={Ë ,3  {Í  {Í (+,{Ë {Ë +£****þþ*0Vuþ ,oÑ **&(%+*0CW(%+  è1r=p*\%rYp¤\%þboÒ ¤\(Ó *ª{Ë -(rmp(• o– sÔ z{Í *ª{Ë -(rmp(• o– sÔ z{Ë *&(&+*0±X{Ë 9  {Ë {Ë 9[{Ë {Ë {Ë 9ó{Ë {Ë {Ë -p{Í {Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í {Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ rŸpoÖ þoÒ *{Í {Í sÕ r‘poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í sÕ r‘poÖ ($+oÖ r›poÖ þoÒ *r¯p*6s× ¥*Js× ¥¥*fo &}Û 2}Ü *0)Z{Û o'+ ¦  {Û ((+*0,\{Þ ," {Þ {Ü 1*X+Ö*bo &}ß }à *0w`{à , {ß +  oá YE**oÙ u0 ,oâ - }ß +sã }ß }à 8‰ÿÿÿ*þoä *6oä ¥*‚{à ,{ß þoå *þoå *‚{à ,{ß þoæ *þoæ *–{à ,{ß oå +oå Œ¦*"oç *0 bsè zbo &}î }ï *>{î oð &*>{î oð &*>{ï þoÙ *R{ï ¥ þoØ *( * *"sñ *2sò *0d u,+ u,+*V(ó }ô }õ *{ô *{õ *²(ó }ö }÷ }ø }ù }ú *{ö *{÷ *{ø *{ù *{ú *:( }û *2{û {ô *2{û {õ *:( }ü *2{ü {ö *2{ü {÷ *2{ü {ø *2{ü {ù *2{ü {ú *~o &}ý }þ }ÿ *0f()+ s € *0yk{þ (*+ Œ ,+ rµps zŽi   Y23£ ( ( s ¤ XX3Í }ÿ *0…l()+}ý {ÿ Œ ,+ rµps zŽi   Y2# £ (++¤ XX3Ý {ý (,+}þ }ÿ *~ *0f()+ (-+s *~ *0f()+ (-+o *"{ý *"{þ *‚{ý {ý {þ (.+s *.{þ þ*R{ý {þ (/+*B{þ þ(0+*B{þ þ(1+*‚{ý {ý {þ (2+s *B{þ þ(3+*Z( {þ þ(4+*b{ý {þ (5+*B{þ þ(6+*f{ý {þ (7+s  *f{ý {þ (8+s  *0Bn{ý {þ (9+ (  (  {ý s {ý s s  *:{þ (:+*R{ý {þ (;+*~{ý {ý {þ (<+s *R{ý {þ (=+*6{þ (>+*6{þ (*+*0f()+ (?+s *0s ¥ o  oê ,`o ( ( s ( ( b(@+X wX b(A+X wX +˜ Þu  ,  oé &Ü&Ü&( *l{0vuu ,j ¥ o  ¥ o  (B+Þu, oé &Ü&Ü Þu, oé &Ü&Ü **&:@Y"o *0ýw¥ (C+(D+ { 9Ù { ( ( s { { 9|{ { ( ( s { { 9ü{ { ( ( s { { -d  sÕ rÁpoÖ  (E+oÖ r•poÖ  (E+oÖ r•poÖ (E+oÖ r›poÖ þoÒ *  sÕ rÁpoÖ  (E+oÖ r•poÖ  (E+oÖ r•poÖ (E+oÖ rŸpoÖ þoÒ *sÕ rÁpoÖ (E+oÖ r•poÖ (E+oÖ r›poÖ þoÒ *sÕ rÁpoÖ (E+oÖ r›poÖ þoÒ *rÍp*6{þ (F+*J{þ (F+¥*R{ý {þ (/+*n(rÛp(• o– s z^s (G+(H+¥"*^s (I+(J+¥*n(rÛp(• o– s zR{ý {þ (;+*Æ{ý {þ (;+,{ý {þ (/+§**n(rÛp(• o– s zn(rÛp(• o– s zn(rÛp(• o– s zn(rÛp(• o– s z0Lx( {ý {þ (;+,-( {ý {þ (/+ ( þ(K+**F{þ þ(L+**:{þ (:+*0Fyu , s ¥ ¥ (M+*(rp(• o– rps zFo &}* *0(zs+ {* è¥ (C+(N+(O+*{ª*{«*V( }ª}«*( * **s, *s- *0| u,+ u,+*’(. }/ }0 }1 }2 *{/ *{0 *{1 *{2 *:(. }3 *{3 *:( }4 *2{4 {/ *2{4 {0 *2{4 {1 *2{4 {2 *:( }5 *2{5 {3 *~o &}6 }7 }8 *0f()+ s9 €: *N{7 (P+}8 *®()+}6 {6 {8 (Q+}7 }8 *"{6 *"{7 *~: *~{6 {6 {7 (R+s9 *~{6 {6 {7 (S+s9 *:{7 (T+*R{6 {7 (U+*B{7 þ(V+*Zs; {7 þ(W+*.{7 þ*0R~{7 -s< *{6 {7 (X+ (= (> {6 s9 {6 s9 s< *ª{7 -*{6 {6 {7 (Y+s9 *0!€(Z+ s? {7 ([+s@ *B{7 þ(\+*B{7 þ(]+*0<{7 -*{7 -*{6 {6 {7 {7 (^+s9 *â{7 -*{7 -*{6 {6 {7 {7 (_+s9 *0={7 -*{7 -*{6 {6 {7 {7 (`+s9 *JsA ~: (a+*6sB (b+*r{6 {7 {7 (c+þ*f{6 {7 {7 (c+*6{7 (d+*6{7 (d+*6{7 (e+*n{6 {7 {7 þ(f+*n{6 {7 {7 þ(f+*n{6 {7 {7 þ(g+*n{6 {7 {7 þ(g+*6{7 (h+*6{7 (P+*0\‚ ¥oÙ oê ,oí b (@+X wX +Ù Þu, oé &Ü&Ü&( *+:"oC *0v„u ,j ¥oÙ ¥oÙ (i+Þu, oé &Ü&Ü Þu, oé &Ü&Ü **&:@Y6~: oD *0f()+ (j+o9 *"sE *0f()+ (Q+s9 *0Ë…¥(k+(l+ {Ë 9§ {Ë {Ë 9`{Ë {Ë {Ë 9ö{Ë {Ë {Ë -q {Í {Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ * {Í {Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r•poÖ ($+oÖ rŸpoÖ þoÒ *{Í {Í sÕ r%poÖ ($+oÖ r•poÖ ($+oÖ r›poÖ þoÒ *{Í sÕ r%poÖ ($+oÖ r›poÖ þoÒ *r1p*z{6 {7 (m+{7 (c+*2r?ps z2r?ps z2r?ps zR{6 {7 (U+*F{7 þ(n+**:{7 (T+*6{7 (o+*J{7 (o+¥*Fo &}M *0†{M è¥(k+(H+*~o &}»}¼}½*0J‰{½ , {N {¼þoO *{»0(³ (P }½{¼þoO *"{»*V{»{¼0(¹*BoRþoQ *FoRþoR *>oRþoS *"{¼*Š{»oT rep(Ç oH(Ç *R{»oU {¼X*03‹u“ ,& {»{»(p+,{¼{¼þ***V{»{¼0(¾*‚Œ,+ rips zþ(Ò*0/, {V + Œ,+ rips z(ã*08Œ,+ rips z0(ê , {V + (´*ÆŒ,+ rips z0(êÐt(W þ(™*zŒ,+ rips z(á*0PŒ,+ rqps zŒ,+ rps z(œ%¤%¤þoX *0OŒ',+ r‹ps zs$(q+,!(r—p(• o– r‹ps zþ(Õ*RrÅp(í(Ö*–Œ,+ rÙps z0(ê(à*0&, {V + róp(ì(ä*0J‘, {V + Œ,+ r ps z(ê (Às&(±(r+*0/, {V + Œ,+ rps z(è*07, {V + Œ,+ rps z(ë(ä**oY &*6sZ ŒV*0., {V + róp(ì(çþo[ *0k’Œ,+ r9ps zŒ,+ rCps zo\ 0(ã-!(rQp(• o– rCps zþo] *0i“Œ,+ rCps z, {V + o\ (ã-!(rQp(• o– rCps z(åþo^ *zŒ,+ r9ps zs**0&, {V + róp(ì(å*0&, {V + róp(ì(ç*0&, {V + róp(ì(æ*0á–Œ,+ rÙps zÐt(W (™-.o_ (rqp(• o– (` rÙps zŒñ,+ r“ps z(à (a (b Ð*(W oc , od +%¤% ¤oX (e (s+þof *ÊŒ+,+ r±ps zrÅp(í(Üþo[ *0i—Œ,+ rÍps zo\ (Ò-3o\ o_ (rÙp(• o– (` rÍps z(Ûþo^ *0³™Œ,+ rÍps zo\ (Ò-3o\ o_ (rÙp(• o– (` rÍps z(Ûo^ /+  Žiþþ,/rõpo\ o_ þboÒ (› rps z £*RrÅp(í(Û*VrÅp(í(ß*RrÅp(í(Ü*RrÅp(í(Ý*0BŒ“,+ r+ps z, {V + {»{¼(¿þo[ *0:Œ“,+ r+ps z, {V + {»{¼(¿*0:Œ“,+ r+ps z, {V + {»{¼(¾*0lš, {V + (" Œ,+ r ps z(ê (À(»og  (ºo^  sGsh *0?‘, {V + Œ,+ r ps z(ê (À(»*0?‘, {V + Œ,+ r ps z(ê (À(¼*0<‘Œ“,+ r+ps z, {V + {» {¼(º*0F‘Œ,+ r?ps z, {V + o\ (ë(åþo^ *Fo &}i *0œ{i , oj **"sk *Fo &}l *ÆÐ¦(W (S,Ц(W (o+sƒ€m *B{l þon *ú{l ~m %Œ0¤%Œ1¤o[ (t+þon *0L{l ~m %Œ0¤%Œ1¤%Œ2¤o[ (t+þon *0Z{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤o[ (t+þon *0h{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤%Œ4¤o[ (t+þon *0v{l ~m %Œ0¤%Œ1¤%Œ2¤%Œ3¤%Œ4¤%Œ5¤o[ (t+þon *0o &þ¦}o *0M£Ц(W rGp6op oq Œ7,+ rµps z ŽiY2$ £/or ¤XX3Ü ŽiYYX Y 2!  X£¤ X  X3ßss (t (u Ži3Ð9(W (v ¥9+€w Ð:(W 6ox  s… ¥;(u+(v+oy , oz +€{ *0a¤{o Œ¦,R~w ,~w {o o| *%¤Œ§(k(w+ {o Œ¦¥roj **6s} ¥*Fo &}~ *0¦{~ , o **6s€ ¥*.s€Å*( *~Å**užþ*sž**uŸþ*s **u þ*0¨ u ,+ uŸ,+*0i«þ,`  už- uŸ- u -$ *tŸ  ¹y7ž{ÉbcXXX *t   ¹y7ž{ÊbcXXX **6(:o˜*0¸¬þ9¦uœ 9—u ,+ uŸ,+ u ,+ uŸ,+ 3W  uŸ-  u -!*tŸ tŸ {É{Éþ*t t {Ê{Êþ***þþ*0²­þ9 þ9•u ,+ uŸ,+ u ,+ uŸ,+ 3UuŸ- u -*tŸ tŸ {É {Éþ*t t {Ê{Êþ***þþ*0¨uœ ,o›**(*:(}É*{É*:(}Ê*{Ê*:( }Ë*:( }Ì*2{Ì{É*:( }Í*2{Í{Ê*( *&s¯**u¦þ*:s³**u§þ*&sº**u¨þ*0¯ u¨,+ u§,+*r(§}Ñ}Ò}Ó*{Ñ*{Ò*{Ó*Ò(§}Ô}Õ}Ö}×}Ø}Ù*{Ô*{Õ*{Ö*{×*{Ø*{Ù*r(§}Ú}Û}Ü*{Ú*{Û*{Ü*:( }Ý*2{Ý{Ñ*2{Ý{Ò*2{Ý{Ó*:( }Þ*2{Þ{Ô*2{Þ{Õ*2{Þ{Ö*2{Þ{×*2{Þ{Ø*2{Þ{Ù*:( }ß*2{ß{Ú*2{ß{Û*2{ß{Ü*{à*{á*{â*{ã*{ä*{å*{æ*{ç*{è*{é*0T( }à}á}â}ã}ä}å}æ}ç }è }é*0 *rUpsq( ¥sPdd 'sÚ*Fo &}‚ *"{‚ *.oƒ &*0p±o &}ì}ë~í}ï, {„ +}ð~î  (… ~í!X€í Þ, († &Ü&Ü&*> ^"{ì*"{ð*"{ë*"{ï*0Y³Œ\,+ r]ps zŒ,+ rips z~î  (… (”  Þ, († &Ü&Ü*5H"{ì*"(U *0´u° ,  (‡ **0ð¶u° 9á (‡ ,*oàoà(ˆ ,*oâo‰ oâo‰ /+þ , *oâoŠ o‹ oâoŠ o‹ /+þ,*oâoŒ o oâoŒ o (ˆ ,*oãoã/*þ**6€Q~Q&*:( }ñ*"sù**(óþ*sü**(óþ*"sþ**(óþ*"s**(óþ*{ñ*Jþ, (• **6(:oô*0;¸þ,,u± , {ñ {ñ 3 þ(– ***þþ*jþ, þ(¢ *þþ*0¹u± , þo÷**Z(ê}ö}÷*{ö*{÷*>(ê}ø*{ø*Z(ê}ù}ú*{ù*{ú*Z(ê}û}ü*{û*{ü*:( }ý*2{ý{ö*2{ý{÷*:( }þ*2{þ{ø*:( }ÿ*2{ÿ{ù*2{ÿ{ú*:( }*2{{û*2{{ü*0¤s€s€s€s€s€s€s€s€ s€ s€ s€ s€  s€!s€*:( }*~**(Yþ*~**(Yþ*~**(Yþ*~**(Yþ*~**(Yþ*s_**(Yþ*sa**(Yþ*sc**(Yþ*se**(Yþ*"sg*.(Y þ*sj*.(Y þ*sl*.(Y þ*sn*.(Y þ*sp*.(Y þ*sr*.(Yþ*st*.(Yþ*sv*.(Yþ*sx*.(Yþ*sz*.(Yþ*s|*.(Yþ*s~*.(Yþ*s€*.(Yþ*s‚*.(Yþ*s„*.(Yþ*~*.(Yþ*~*.(Yþ*~ *.(Yþ*~ *.(Yþ*~ *.(Yþ*s†*.(Yþ*~ *.(Yþ*~ *.(Yþ*~*.(Y þ*~*.(Y!þ*"sˆ*.(Y"þ*s‹*.(Y#þ*{*Jþ, (— **6(:oZ*0;»þ,,u» , { { 3 þ(˜ ***þþ*06,þ,'þ,{ { 3 þ(£ ***þþ*0¼u» , þo]**>(}4*{4*>(}5*{5*>(}6*{6*>(}7*{7*^ (}8}9*{8*{9*B (}:*{:*B (};*{;*B (}<*{<*B (}=*{=*B(}>*{>*B(}?*{?*B(}@*{@*B(}A*{A*B(}B*{B*B(}C*{C*B(}D*{D*B(}E*{E*B(}F*{F*B(}G*{G*B(}H*{H*^"(}I}J*{I*{J*B#(}K*{K*:( }L*2{L{4*:( }M*2{M{5*:( }N*2{N{6*:( }O*2{O{7*:( }P*2{P{8*2{P{9*:( }Q*2{Q{:*:( }R*2{R{;*:( }S*2{S{<*:( }T*2{T{=*:( }U*2{U{>*:( }V*2{V{?*:( }W*2{W{@*:( }X*2{X{A*:( }Y*2{Y{B*:( }Z*2{Z{C*:( }[*2{[{D*:( }\*2{\{E*:( }]*2{]{F*:( }^*2{^{G*:( }_*2{_{H*:( }`*2{`{I*2{`{J*:( }a*2{a{K*bo &}b}c*"{b*"{c*0,¾ué ,  {b {b  (:þoö**>{bþoU *&oÁ*N(ÛoÂ(j*0üãs¥  s§  rgp(2 s©  s« {b(ó@ªt³{ö(YE$¨×(ó@ªt³{ö(YE$á³Y¶åœ ¨ ¡ ÿ · Í õE ‡ A p ,ä »Œ[]Š* (óEC^ºt³{ö(YE$Qj"s¯ rqpsŽ (x+{bþo *{÷  (y+ r«p(2 (H(L(?*{ötÏ {÷{ ,“{÷  { { :yÿÿÿ {G  {‘   ( oq Ži(¡  o’ ,p{“ (” {“ (•  (š (– (— (z+oÂ(– (— ({+({+ rÁp(2 (H(L(?* (š  oÂ(– (— (—  rÁp(2 (H(L(?*{÷  (y+ rÙp(2 (H(L(?*t´{øoà(2*tµ{ù{ú oà(2 oÂ(– (— (—  råp(2 (H(L(?*róp(2*{÷{ 9ýÿÿ{÷  { { 9ôüÿÿ { {‘ {b(ó@Ðüÿÿtµ{ { :¶üÿÿ{ù {‘  {úoà(2 oÂoÂ(– (— (— (—  r÷p(2 (H(L(?*{öt½{4 {÷  (š  (y+(—  rÿp(2 (H(L(?*{öt¾{5{÷ (œ  (y+(—  rp(2 (H(L(?*{öt¿{6{÷  (y+(œ (– (— ({+ r-p(2 (H(L(?*{÷  (y+ rIp(2 (H(L(?*{ötÁ{÷{ 9üúÿÿ{÷  { { :âúÿÿ{9 {‘   oÂ(– (— r[ps˜ (|+oO (2(– (— ({+ rap(2 (H(L(?*{ötÑ{÷{ :Wúÿÿ{Ir[ps™ (}+oš (2(– (—  rsp(2 (H(L(?*{ötË{÷{ 9ìùÿÿ{÷  {‘  {C {  (™ ( (y+(H(Q(– (— (— (—  rp(2 (H(L(?*{ötÌ  {D{÷ (  (y+(H(Q(– (— (— (—  rp(2 (H(L(?*{ötÂ!{÷{ 9àøÿÿ{÷ !{:" {‘   {  (™ "(Ÿ (y+(H(Q(– (— (— (—  r‰p(2 (H(L(?*{ötÃ##{;"{÷ "(Ÿ  (y+(H(Q(– (— (— (—  r‰p(2 (H(L(?*{ötÄ${÷{ 9Ô÷ÿÿ{÷ ${<" {‘   {  (™ "(Ÿ (y+(H(Q(– (— (— (—  r¡p(2 (H(L(?*{ötÅ%%{="{÷ "(Ÿ  (y+(H(Q(– (— (— (—  r¡p(2 (H(L(?*{ötÆ&{÷{ 9Èöÿÿ{÷  { { :®öÿÿ {‘  &{>' (™ '(  (– (— (—  r¹p(2 (H(L(?*{ötÇ({÷{ :@öÿÿ({?''(  (– (— (—  r¹p(2 (H(L(?*{ötÈ){÷{ 9âõÿÿ{÷  { { 9Èõÿÿ { { { :®õÿÿ{‘   {‘ ){@'(™ '(   oÂ(– (— (— (—  rËp(2 (H(L(?*{ötÉ*{÷{ 9*õÿÿ{÷  { { :õÿÿ {‘  *{A''(   oÂ(– (— (— (—  rËp(2 (H(L(?*{ötÍ+{÷{ 9œôÿÿ{÷  { { :‚ôÿÿ+{E  {‘   o (š (– (— (—  rÝp(2 (H(L(?*{ötÊ,,{B-{÷ -(ž (– (—  (y+({+ rëp(2 (H(L(?*{ötÒ..{K {÷  (š (– (—  (y+({+ rÿp(2 (H(L(?*{ötÎ//{F {÷  (š (– (—  (y+({+ rp(2 (H(L(?*{ötÐ00{H {÷  (š (– (—  (y+({+ r+p(2 (H(L(?*{÷  (y+ r=p(2 (H(L(?*{÷{ 9òÿÿ{÷  {‘ {b(ó@[òÿÿt´1 { { 9Aòÿÿ { { { :'òÿÿ1{ø{‘  oà(2 oÂ(– (— (—  rQp(2 (H(L(?*{÷  (y+ r_p(2 (H(L(?*{÷{ 9”ñÿÿ{÷  { { 9zñÿÿ { { { 9`ñÿÿ{ 22{‘ {b(ó@<ñÿÿtµ2{ { :"ñÿÿ{ù{ú {‘  {‘ 3oà(23oÂo oÂ(– (— (— (— (—  rup(2 (H(L(?*{÷  (y+ rp(2 (H(L(?*{÷  (y+ r±p(2 (H(L(?*{÷{ 94ðÿÿ{÷  { { 9ðÿÿ { {‘ (› 449üïÿÿ{ { 9ëïÿÿ{ 22{‘ (› 559Íïÿÿ2{ { :¼ïÿÿ5{› (œ 4{› (œ 65{› (  4{› (  {‘ 33oÂ6oà(2oÂoà(2 oÂ(– (— (— (— (— (—  rÇp(2 (H(L(?*{÷  (y+ r×p(2 (H(L(?*{÷  (y+ rïp(2 (H(L(?*{÷{ 9éíÿÿ{÷  {‘ (~+9Éíÿÿ{“ (• {b(ó@©íÿÿt³{ö(Y@Žíÿÿ{÷{ 9}íÿÿ{÷ { { :cíÿÿ{“ (” { 2{‘   (z+2(y+(+(H(Q oÂ(– (— (—  rp(2 (H(L(?*:(€+(e *^(€+(€+(c ¥K**þ(+*6(E( *:(I( *&( *:s± (‚+*~Œ$,+ rps z(* *‚Œ$,+ rps z() *’Œ,+ r5ps z(;( **( *.(+ *zŒ3,+ rCps z(! *~Œ3,+ rCps z( *~Œ3,+ rCps z(" *‚Œ3,+ rCps z(# *&( **(. *&(0 *~Œp,+ rWps z($ *ŽŒ,+ rwps z(W( *"( *~Œ,+ róps z( *~Œ,+ r•ps z( *ªŒ,+ r­ps zs³ (ƒ+(- *&( *03äŒ,+ rÇps z(ž , {Ÿ +(& *02äŒ,+ rÇps z(ž , {Ÿ +(% *04äŒ,+ rÇps z(ž , {Ÿ +(( *0ä(ž , {Ÿ +(' *"( *:(C( *6( *:(O( *>(+( *’Œ,+ r5ps z(K( *&( *0 åŒ0 Ð0(W (U( *’Œ,+ rwps z(U( *"( *N(G( ( *&(, *zŒ0,+ rÙps z(l *"(„+*ÞŒ,+ rïps zŒM,+ r ps z(m *ŠŒ1,+ rps zþ(i *ÊŒ\,+ r]ps zÐ0(W (ä( („+*2o»&**®o &¦}  }¡ }¢ }£ *0hH{¢ - r+ps¤ z{  {¡ £¦ {  {¡ þ¦¤¦{¡ X{  Ži]}¡ {¢ Y}¢ *0ˆ,{¢ {  Ži3>{  Žij!ÈZ!d[i {  ŽiX /+o¥ +{  {£ ¤¦{£ X{  Ži]}£ {¢ X}¢ *"{¢ *0¬æ(…+ {¢ 1q{¡ {£ /{  {¡ {¢ (¦ +H{  {¡ {  Ži{¡ Y(¦ {  {  Ži{¡ Y{£ (¦ +}  }¡ {¢ 3+{¢ }£ *²o &s§ }h{ho¨ (© }i*6{io¨ *6{hoª *j{io« {hþo« *j{io« {hþo« *.sÿ€j*( *~j*&*~m*€m*bo &}k}l*~m*0<è ~m,+( (¥  Þ, (&Ü&Ü&(* $‚{lX}l{l ,þþ*¢{k-}l(­ }k*r;ps¤ z *6€â~â&*0kês® o &(¯ }ns· þ¸ s° }os¹ þº s± }ps» þ¼ s² }q}r*þþ{r/(r­p(• o– sÔ z{oŒ”o³ (*0Lþ{r/(r­p(• o– sÔ z{pŒ”(´ - rÁps¤ z(*0Lìþ{r/(r­p(• o– sÔ z{qsµ o¶ Œ”o· (*þþ{r/(r­p(• o– sÔ zs}n{no*ºþ{r/(r­p(• o– sÔ z{n* *6€â~â&*{s*{t*{u*{v*’( }s}t}u}v*{¸ *{¹ *V( }¸ }¹ *sº *:( }» *{» *&**o &*(D *&(†+*"(‡+**&(ˆ+*&(‰+*&(F *&(Š+*&(‹+*&(Œ+*&(+*Fo &}¼ *>{¼ o½ &*(C *(D *6s¾ (¿ *F(4 {À o¨ *0"î(4 {À oª (4 s§ (Á *6s (à *0€ó,L {Ä (Å þ,{Ä sÆ +<,  {Ä sÆ +(rÿp s;z(4 {À o¨ sÆ (Ç (È (Ž+*0)ô(4 {À o¨ , {Ä + (Ñ *0)ô(4 {À o¨ , {Ä + (+*>sÉ (+*6sÊ (Ë *0.ô(4 {À o¨ , {Ä + (‘+*fsã så sç (’+*6sñ (“+*0-W, {Ì + - só (”+*sý (•+*>sÿ (”+*6sÍ (¿ *:sÎ (†+*0>õ,' {Ì YEsÏ (†+*(–+*sÐ (†+*BsÑ (†+*BsÒ (—+*JsÓ (˜+*RsÔ (™+*b(š+sÕ sÖ s× *>sØ (›+*6sÙ (œ+*(ö *(÷ *>sÚ (+*:sM (ž+*:sY (Ÿ+*&( +*6sÛ (¡+*òo &}Ü }Ý }Þ }ß s§ }à sá }â *0)ø{â oã {Ü ,¥þoä **0xü{â (å oæ - r¢ps¤ z {ç uq-ur-&{ç ts{è *{ç tq{é z{ç tr{ê z"{ß *¦{ß -}ß {à o« {â oë **6{à o¨ *6{à oª *0þ{â {ì þ-}Þ **0þ{â {ì þ*"{Þ *6{â oí *"{Ý *&oî *0Go &}ó sô }õ {õ }ö }÷ }ø sù (ú }û *‚{ó ,+ sü }ó {ó *0={ö  (… oý oþ {õ {¢ X Þ, († &Ü&Ü* ",0={õ {¢ -*{õ oÿ o -oý o +Å*0-{ö  (… o¢+ Þ, († &Ü&Ü* 0A{ó ,4oþ 2*o o - X+Êo **†{õ {¢ -*{õ oÿ ( *0,{ö  (… o Þ, († &Ü&Ü* 0-{ó , oþ -*o o ( **01{ö  (… (£+ Þ, († &Ü&Ü&* 0     s (¤+*Bs (†+*0   s  (¥+*0   s  (¦+*0({ø (§+þ,{ø ¥þoé **‚{ø ,+ s  }ø {ø *0"/{û *o  (å (;*Fo &}  *>{  o½ &*0Yo &} (4 {À o¨ , {Ä +} s } } } s } *6{ o *"{ *&} *V{ o þo *V{ o þo *0J{ ,(rºp(• o– sÔ z} s (ž+ { ( (4*>{ o *0h{ , {Ì + s s s o  { o (å o! Þu, oé &Ü&Ü *0M0.o¨+ ,{# *(røp(• o– s$ z0c{ , {Ì + s s% s o  { o YEs& (¤+*s' (¤+*0l{ , {Ì + YE(å o©+ s) (†+*s  s* s o  { o o+ *0"W{ { , {Ì +o, *0"W{ { , {Ì +o- *0#W{ { , {Ì +oª+*0#W{ { , {Ì +o«+*0s0 o1 *R{ ¥þoé *{2 *"{2 *Fo &}2 *{3 *{4 *"{3 *"{4 *bo &}3 }4 *{5 *{6 *{7 *"{5 *"{6 *"{7 *~o &}5 }6 }7 *{8 *{9 *{: *{; *"{8 *"{9 *"{: *"{; *žo &}8 }9 }: }; *{< *{= *{> *{? *{@ *"{< *"{= *"{> *"{? *"{@ *¾o &}< }= }> }? }@ *{A *{B *{C *{D *{E *{F *"{A *"{B *"{C *"{D *"{E *"{F *Þo &}A }B }C }D }E }F *{G *{H *{I *{J *{K *{L *{M *"{G *"{H *"{I *"{J *"{K *"{L *"{M *þo &}G }H }I }J }K }L }M *{N *{O *{P *{Q *{R *{S *{T *{U *"{N *"{O *"{P *"{Q *"{R *"{S *"{T *"{U *0Go &}N }O }P }Q }R }S }T }U *bo &}V }W *"{V *J{W oX ¥*>{W þoX *Fo &}Z *"{Z **o &*bs[ {\ (¬+s] *2(­+s^ *6(®+s^ ***6¥šs^ *"s_ *:{\ (¯+*N{\ (°+s] *Ž{\ sa þb sc (±+s^ *6{\ (²+*6{\ (³+*6{\ (´+*6{\ (µ+*6{\ (¶+*J{\ (·+s^ *z{\ sk þl sc (¸+*z{\ sn þo sc (¹+*6{\ (º+*:{\ (»+*N{\ (¼+s^ *Ž{\ st þu sc (½+s^ *N{\ (¾+s^ *Ž{\ sx þy sc (¿+s^ *z{\ s{ þ| sc (À+*6{\ (Á+*z{\ s þ€ s (Â+*z{\ sƒ þ„ s (Ã+*z{\ s† þ‡ sˆ (Ä+*z{\ s‰ þŠ sˆ (Å+*0 o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,3o oŽ ( , ( (È+ +È+Å s‘ Þu, oé &Ü&Ü*+Ju0º!o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,:o oŽ ( , ( (È+ +X+¾- þ« Þ1 (É+s‘ Þu  ,  oé &Ü&Ü*+tŸ0¶"o‹ Œš,+rB ps (Æ+&oŒ (Ç+ oê ,$ o o’ (È+ X+Ô-#s:rB pb¥K(“ (Ê+&+ (É+ Þu, oé &Ü&Ü*+p›0Z#o‹ oŒ (Ç+ oê , o o’ (È+ +Ú Þu, oé &Ü&Ü*0?Ž{\ s• þ– s (Ë+s˜ *¢{\ s™ þš s (Ì+¥šs^ *¢{\ sœ þ s (Í+¥šs^ *¶{\ (Î+sŸ þ  s (Ï+¥šs^ *¶{\ (Î+s¢ þ£ s (Ð+¥šs^ *¢{\ s¥ þ¦ sˆ (Ñ+¥šs^ *¢{\ s§ þ¨ sˆ (Ò+¥šs^ *¶{\ (Î+s© þª sˆ (Ó+¥šs^ *¶{\ (Î+s« þ¬ sˆ (Ô+¥šs^ *Ò{­ s® þ¯ s° s± þ² s (Õ+s´ *0M{\ {µ s¶ þ· s¸ s¹ þº s» s¼ þ½ s¾ (Ö+sÀ *0M{\ {µ sÁ þ s¸ sà þÄ s» sÅ þÆ sÇ (×+sÀ *0M{\ {µ sÉ þÊ s¸ sË þÌ s» sÍ þÎ sÇ (×+sÀ *:(Œ¥0*0 $(Š (’ (b(Ø+{Ï *:(Œ¥Ë*:(Œ¥Ë**o &**o &*Fo &}µ*&o *"{µ*Fo &}¶*"{¶*~o &}·}¸}¹*"{·*&}·*"{¸*&}¸*"{¹*&}¹**o &*0Bo &}½}¾}¿}À}Á}Â}Ã}Ä*"{¾*&}¾*"{¿*&}¿*"{À*&}À*"{Á*&}Á*"{Â*&}Â*"{Ã*&}Ã*"{Ä*&}Ä*B{½þoÐ *"sÑ *0},(Ò sÓ oÔ oê ,)oÕ (Ö  (× sØ oÙ +Ï Þu, oé &Ü&Ü&¥Ñ¥ÒsÚ *5H0.uÔ , *(Ù+*0S1(r—p(• o– £0 Œ0,+ rP ps z£0Œ0¥Õ(Ú+ Ži  (Û+ Y2 £1(Û XX3àY?¸(r—p(• o– £0 Œ0,+ rP ps z£0Œ0¥Õ(Ú+Ži .!(rZ p(• o– rŽ ps z Y 2"  £1(Û  X  X3ÞXX@Hÿÿÿ*072Œš,+ rP ps z(Ü+ Ži -(Û+*(Ý+*"(Þ+*"(ß+*&(à+*&(á+*6(Ü (à+*6(Ý (à+*6(Ü (á+*6(Ý (á+*~Ó*2r˜ psè z2r˜ psè z2r˜ psè z2r˜ psè z04(rþ p(• o– sÔ z04(rþ p(• o– sÔ z"oÞ *~Ô*(ß *&(à *(ß *&(à *F}á o &*n(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s zV{á sâ þoã *0U7 {á oä oê ,oå X(à ¤¦X +Ú Þu, oé &Ü&Ü&**9*>{á þoæ *zsç {á ¥Û(â+þoÙ *Žsè {á ¥Û(â+¥ þoØ *(é *03: (ê (ë sì (í (î (à s *(é *03: (ê (ë sì (í (î (à s *b}ï }ð o &*V{ï sâ þoñ *n(r, p(• o– s z0<{ï oò só *>{ï þoô *n(r, p(• o– s zV{ï sâ þoõ *0,=sâ {ï oõ ,{ï oñ §**n(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s zn(r, p(• o– s z0?> ( ( s ( ( {ð sâ sö þo÷ *0†@ {ð oø oê ,Ooù (ê (ë sì (í (î X(à s ¤ X +© Þu, oé &Ü&Ü&*[j*>{ð þoú *zsû {ð ¥ä(ã+þo  *Žsü {ð ¥ä(ã+¥ þoØ *^s€ÓsÖ€Ô*&oä+*:(Œ¥0*0Aoý ,(þ **0C(ð s*0C(ð s*0C(ð s‘*0ÚH(ü  9Á{ÿ ( (æ  9ª{ ( (Ü  9“{ { (  (å+,þ+,j{ÿ ( {ÿ ( { { ( {ÿ ( X(u s ( (  (  s  *(  s  *0NJ(Þ  ,A{› (œ {› ( (u (  (  s  ( **Bs þ(æ+*0wL(v ,<{ ( { ( { ( ( ( +º{ -*(ç+(è+¥õ(é+(ê+s ( *J( ( (x*0A( ¥$ s—*0A( ¥$ s™*~o ,o (ë+þoz **0A( ¥$ s›*0A( ¥$ s*~1*¾(%oŤoz (ž ( (Ê*~2*~3*~4*~5*~6*~7*2Ð(W *~8*~9*~:*~;*~<*~=*zoc ,od (Œþ(p+**zoc ,od (Šþ(p+**º%¤%¤( ( ( (Û*0!O({ s  (~ s! s" *¦(z(}s# (z(}s# s$ *0\,,(% (& (ž ( ( s' þo( *(% (& (ž ( ( s' þo( *0BP(b ,+(% (& Œ() (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s1 s2 s3 *~>*~?*~@*~A*~B*~C*0‡Uoâ oÅ ( ,7(€ (% (& (&  (ž ( ( s' þo( *(% (& (& (ž ( ( s' þo( *0‘W,I((` (% (& (& Œ"() (* (* s+ þo, *((b (% (& (& () (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s4 s5 s6 *~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*0wXoâ (‡( ,1(€ (% (& (ž ( ( s' þo( *(% (& (ž ( ( s' þo( *0‰W,E(‡((` (% (& Œ"() (* (* s+ þo, *(‡((b (% (& () (* (* s+ þo, *0QT(’ (- (. (/ (. (- (0 (/ (0 s7 s8 s9 *~P*~Q*~R*~S*~T*~U*~V*~W*~X*0(r^ p(• o– sÔ z0*YÐb(W (p+,.(% (&  (ž ( ( s' þo( *Б(W (p+,-(% (&  (ž ( ( s' þo( *Ð (W Ð(W oc , od +%¤%¤oX o: £p (ž ( (Ö (Ó(% (& (& (& (ž ( ( s; þo< *0 ¸Zoâ oÅ ,o= £+ (  9« (€Ð’(W (p+,+bГ(W (p+,+LÐ7(W (p+,+5Ðb(W (p+,+Б(W (p+, +(ì+(% (& (ž ( ( s' þo( *Ð’(W (p+,+(% (&  (ž ( ( s' þo( *Г(W (p+,,(% (&  (ž ( ( s' þo( *Ð7(W (p+,,(% (&  (ž ( ( s' þo( *    þ(¸*0Ç] Ð’(W (p+, (> 8s Г(W (p+, (> +W Ð7(W (p+, (> +; Ðb(W (p+, (> + Б(W (p+, (> + :ßÐ (W Ð(W oc , od + %¤%¤oX o: £p %¤o? Þ"t u”, o@ zþ (Ó(b  (% (& (& (& () (* (* sA þoB *  {C    ((b (% (& () (* (* s+ þo, *ì"0ê^ 9À ((` Ð’(W (p+,+fГ(W (p+,+OÐ7(W (p+,+7Ðb(W (p+,+Б(W (p+,+(í+ (% (& Œ"() (* (* s+ þo, *    þ(º*0œ`(’ (- (. (/ (. (- (0 (/ (0 (’(- (. (/ (. (- (0 (/ (0  (’  (- (.   (/ (.   (- (0   (/ (0  (’(- (. (/ (. (- (0 (/ (0  (’(- (. (/ (. (- (0 (/ (0  (î+(D (E   sF   sG sH *~Y*~Z*~[*~\*~]*~^*~_*~`*~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*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*~Œ*~*~Ž*~*~*0N,%(% (& (ž ( s' þo( *(% (& (ž ( s' þo( *0Ha(I (J (K ,+(% (& Œ0() (* s+ þo, *0gd(’ (- (. (/ (. (- (0 (/ (0  s³sL oï+¥ sM sN *~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*~²*~³*~´*~µ*~¶*&sO *~·*~¸*~¹*~º*~»*~¼*~½*~¾*0e(} (} sÉ*0e(} (} sË*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*~Ð*~Ñ*0§isP sQ (ð+ :„(­  u-;u-ft{S (T t{S (U  (ñ+(« *t{V (œ t{V ( (ò+(Ó**{W *0 k (ò+*0Dl(ü  ,8{ÿ ( {ÿ ( {ÿ ( sÛoÃ(X **0öm(ü  9ç{ÿ ( {ÿ ( (Þ  ,8‚(Ü ,8o(æ ,@{ ( (Ü ,){ oàr¾ p(” , { +#oàrÒ p(” ,oâoY +,9{ÿ ( {ÿ ( {ÿ ( sçoÃ(X **0 t(ô  ,Q{Z ([ -D{Z (\ (q ,0{] (í ,!{Z (^ { -{W (X *(ù 9š{_ (` :‰{_ (a (í,r{W (¿ ,`{b (c {b (d {_ (e sã(ó+¥õ(é+¥$(ô+  såoÃ(X *(?*0Áw(À  9¬{f (g (¿  9•{b (c {f (h oi oj 3sÝ (õ++,\{b (c {b (d {f (h sß (ö+¥õ(é+¥$(ô+sáoÃ(X *(@*6sé(÷+*~Ò*~Ó*~Ô*~Õ*~Ö*~×*~Ø*~Ù*~Ú*~Û*~Ü*~Ý*~Þ*~ß*~à*~á*~â*~ã*~ä*~å*~æ*~ç*~è*~é*~ê*~ë*~ì*~í*~î*~ï*~ð*~ñ*~ò*~ó*~ô*~õ*~ö*~÷*~ø*~ù*~ú*~û*~ü*~ý*~þ*~ÿ*~*~*~*0•{(ñ  9w{k (l (î  ,R{m (n ,(Ioo ,(p **(I{k (q oo ,+Û(Ioo ,Ô+Ê(Ioo ,Ã+¹(Ioo ,²+¨0 O‚(³E!I.t™ {. së(ø+(Ø*tš {/ {0 sí(ø+(Ù*tœ{4oÅ(oÅo= £ ,!(ˆ% ¤oX (Ì+rì p sß(ê(u ( sr os   oÅ ,(  st þou * *t›  {1  {2  {3oÅo= £ Ð0(W oc , od +% ¤% ¤oX Ð1(W oc , od +% ¤% ¤oX rì p sß(ê(uoÅrð pov (Ý(sr os (ž ( ( o: £p(Ö(Ì**0Uƒ(³3 s *oâ( oàsß (ê(u sïoà  (“s *0ü„(Doo 9‰{w (x :{w (y { 9¢ {w (y { { 9{ {‘ (ß  9„{ { - {W (X *(Eoo 9Õ{w (x :G{w (y { 9´{w (y { { 9{ {‘ (ß 9Œ{ { -{W 8cÿÿÿ(Coo   ,] {w (x ,O {w (y { ,< {w (y   {‘ (ß   , { { - {W 8õþÿÿ*(Coo   ,í {w (x ,ß {w (y { ,Ì {w (y   {‘ (ß   ,¬ { { -ž {W 8…þÿÿ(Coo   9|ÿÿÿ {w (x 9kÿÿÿ {w (y { 9Uÿÿÿ {w (y {‘ (ß 92ÿÿÿ{ { :!ÿÿÿ{W 8þÿÿ(Coo   9ÿþÿÿ {w (x 9îþÿÿ {w (y { 9Øþÿÿ {w (y {‘ (ß 9µþÿÿ{ { :¤þÿÿ{W 8‹ýÿÿ(Coo   9‚þÿÿ {w (x 9qþÿÿ {w (y { 9[þÿÿ {w (y {‘ (ß 98þÿÿ{ { :'þÿÿ{W 8ýÿÿ(Coo   9þÿÿ {w (x 9ôýÿÿ {w (y { 9Þýÿÿ {w (y {‘ (ß 9»ýÿÿ{ { :ªýÿÿ{W 8‘üÿÿ(Eoo 9ñ{w (x :c{w (y { 9Ð{w (y { { 94{ {‘ (ß 9™{ { -{W 8ýûÿÿ(Coo   9ôüÿÿ {w (x 9ãüÿÿ {w (y { 9Íüÿÿ {w (y   {‘ (ß   9ªüÿÿ { { :™üÿÿ {W 8€ûÿÿ(Coo   9wüÿÿ {w (x 9füÿÿ {w (y { 9Püÿÿ {w (y   {‘ (ß   9-üÿÿ { { :üÿÿ {W 8ûÿÿ(Coo   9úûÿÿ {w (x 9éûÿÿ {w (y { 9Óûÿÿ {w (y {‘ (ß 9°ûÿÿ{ { :Ÿûÿÿ{W 8†úÿÿ(Coo   9}ûÿÿ {w (x 9lûÿÿ {w (y { 9Vûÿÿ {w (y {‘ (ß 93ûÿÿ{ { :"ûÿÿ{W 8 úÿÿ(Coo   9ûÿÿ {w (x 9ïúÿÿ {w (y { 9Ùúÿÿ {w (y {‘ (ß 9¶úÿÿ{ { :¥úÿÿ{W 8Œùÿÿ(Coo   9ƒúÿÿ {w (x 9rúÿÿ {w (y { 9\úÿÿ {w (y {‘ (ß 99úÿÿ{ { :(úÿÿ{W 8ùÿÿ(Eoo 9Ü{w (x :T{w (y { 9Ç{w (y { { 90{ {‘ (ß  9˜{ { - {W 8øÿÿ(Coo   9xùÿÿ {w (x 9gùÿÿ {w (y { 9Qùÿÿ {w (y {‘ (ß 9.ùÿÿ{ { :ùÿÿ{W 8øÿÿ(Coo   9ûøÿÿ {w (x 9êøÿÿ {w (y { 9Ôøÿÿ {w (y {‘ (ß 9±øÿÿ{ { : øÿÿ{W 8‡÷ÿÿ(Coo   9~øÿÿ {w (x 9møÿÿ {w (y { 9Wøÿÿ {w (y {‘ (ß  96øÿÿ{ { :%øÿÿ {W 8 ÷ÿÿ(Coo   9øÿÿ {w (x 9ó÷ÿÿ {w (y { 9Ý÷ÿÿ {w (y {‘ (ß  9¾÷ÿÿ{ { :®÷ÿÿ {W 8–öÿÿ(Coo   9÷ÿÿ {w (x 9|÷ÿÿ {w (y { 9f÷ÿÿ {w (y {‘ (ß  9G÷ÿÿ{ { :7÷ÿÿ {W 8öÿÿ(Coo   9÷ÿÿ {w (x 9÷ÿÿ {w (y { 9ïöÿÿ {w (y {‘ (ß  9Ðöÿÿ{ { :Àöÿÿ {W 8¨õÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8õÿÿ(Coo   9öÿÿ {w (x 9öÿÿ {w (y { 9íõÿÿ {w (y {‘ (ß 9Êõÿÿ{ { :¹õÿÿ{W 8 ôÿÿ(Coo   9—õÿÿ {w (x 9†õÿÿ {w (y { 9põÿÿ {w (y {‘ (ß 9Mõÿÿ{ { :<õÿÿ{W 8#ôÿÿ(Coo   9õÿÿ {w (x 9 õÿÿ {w (y { 9óôÿÿ {w (y {‘ (ß  9Ôôÿÿ{ { :Äôÿÿ {W 8¬óÿÿ(Coo   9£ôÿÿ {w (x 9’ôÿÿ {w (y { 9|ôÿÿ {w (y {‘ (ß  9]ôÿÿ{ { :Môÿÿ {W 85óÿÿ(Coo   9,ôÿÿ {w (x 9ôÿÿ {w (y { 9ôÿÿ {w (y {‘ (ß  9æóÿÿ{ { :Öóÿÿ {W 8¾òÿÿ(Coo   9µóÿÿ {w (x 9¤óÿÿ {w (y { 9Žóÿÿ {w (y {‘ (ß  9oóÿÿ{ { :_óÿÿ {W 8Gòÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8¼ñÿÿ(Coo   9³òÿÿ {w (x 9¢òÿÿ {w (y { 9Œòÿÿ {w (y {‘ (ß 9iòÿÿ{ { :Xòÿÿ{W 8?ñÿÿ(Coo   96òÿÿ {w (x 9%òÿÿ {w (y { 9òÿÿ {w (y {‘ (ß 9ìñÿÿ{ { :Ûñÿÿ{W 8Âðÿÿ(Coo   9¹ñÿÿ {w (x 9¨ñÿÿ {w (y { 9’ñÿÿ {w (y {‘ (ß  9sñÿÿ{ { :cñÿÿ {W 8Kðÿÿ(Coo   9Bñÿÿ {w (x 91ñÿÿ {w (y { 9ñÿÿ {w (y {‘ (ß  9üðÿÿ{ { :ìðÿÿ {W 8Ôïÿÿ(Coo   9Ëðÿÿ {w (x 9ºðÿÿ {w (y { 9¤ðÿÿ {w (y {‘ (ß  9…ðÿÿ{ { :uðÿÿ {W 8]ïÿÿ(Coo   9Tðÿÿ {w (x 9Cðÿÿ {w (y { 9-ðÿÿ {w (y {‘ (ß  9ðÿÿ{ { :þïÿÿ {W 8æîÿÿ(Eoo 9Ö{w (x :N{w (y { 9Á{w (y { { 9-{ {‘ (ß  9—{ { - {W 8[îÿÿ(Coo   9Rïÿÿ {w (x 9Aïÿÿ {w (y { 9+ïÿÿ {w (y {‘ (ß 9ïÿÿ{ { :÷îÿÿ{W 8Þíÿÿ(Coo   9Õîÿÿ {w (x 9Äîÿÿ {w (y { 9®îÿÿ {w (y {‘ (ß 9‹îÿÿ{ { :zîÿÿ{W 8aíÿÿ(Coo   9Xîÿÿ {w (x 9Gîÿÿ {w (y { 91îÿÿ {w (y {‘ (ß  9îÿÿ{ { :îÿÿ {W 8êìÿÿ(Coo   9áíÿÿ {w (x 9Ðíÿÿ {w (y { 9ºíÿÿ {w (y {‘ (ß  9›íÿÿ{ { :‹íÿÿ {W 8sìÿÿ(Coo   9jíÿÿ {w (x 9Yíÿÿ {w (y { 9Cíÿÿ {w (y {‘ (ß  9$íÿÿ{ { :íÿÿ {W 8üëÿÿ(Coo   9óìÿÿ {w (x 9âìÿÿ {w (y { 9Ììÿÿ {w (y {‘ (ß  9­ìÿÿ{ { :ìÿÿ {W 8…ëÿÿ0D…(Eoo 9»{w (x :4{w (y { 9¨{w (y { { 9{ {‘ (ß  9Ž{ { - {W (X *(Coo ,]{w (x ,O{w (y { ,<{w (y {‘ (ß ,{ { -{W 8‰ÿÿÿ*(Coo ,í{w (x ,ß{w (y { ,Ì{w (y {‘ (ß ,¬{ { -ž{W 8ÿÿÿ(Coo 9|ÿÿÿ{w (x 9kÿÿÿ{w (y { 9Uÿÿÿ{w (y {‘ (ß  96ÿÿÿ{ { :&ÿÿÿ {W 8¢þÿÿ(Coo 9ÿÿÿ{w (x 9ôþÿÿ{w (y { 9Þþÿÿ{w (y {‘ (ß  9¿þÿÿ{ { :¯þÿÿ {W 8+þÿÿ(Coo 9Žþÿÿ{w (x 9}þÿÿ{w (y { 9gþÿÿ{w (y {‘ (ß  9Hþÿÿ{ { :8þÿÿ {W 8´ýÿÿ(Coo 9þÿÿ{w (x 9þÿÿ{w (y { 9ðýÿÿ{w (y {‘ (ß  9Ñýÿÿ{ { :Áýÿÿ {W 8=ýÿÿ0x‰u]-u\-t^{+*t]{**t\ {' {( {) {&{%((y sr þos *0 Å’(Goz ,z{{ (| (B(v (œ ( s(”(} (~ (’Ð (W o þ (ùs€ *(>  ,( {W 8Aÿÿÿ(A  ,( {W 8 ÿÿÿ(Zo   9r {‚ (ƒ (Þ   9 {‚ („  {› ( (B(v (œ ( (Ð (W o þ(y s… o† (ô8Pþÿÿ(à   ,7 {‡ (ˆ (t,  {‡ (‰  {‡ (Š  8Jÿÿÿ(B(v (œ ( ((‹ (Œ (u\,7t\{){({'(ys +)(yrø psß(ês (Ž ( ( oÅoc ,1od Ð>(W oc , od +(p++,+.oâ(ˆ%¤oX (Ì(Ð (W o þ(y s‘ o’ (ôs€ *(à   9iþÿÿ {‡ (ˆ (t9Oþÿÿ {‡ (‰  {‡ (Š  8yýÿÿ0” („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (   (v  (œ   ( s(”(~ (} (’(6Ð (W o þ oâoâoÅoÅ   sœ s ož (ôs€ *0'• („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (  (•   (v  (œ  ( s(”(~ (} (’(9Ð (W o þ oâoâoÅoÅ  sœ s ož (ôs€ *01– soà   („ (“ (” (• (– (— (˜ (™ (š (›  (B(v  (œ   (    (v  (œ  ( s(”(~ (} (’(9Ð (W o þoâoâoÅoÅ  sœ s ož (ôs€ *0öš(þ  ,(,%(rü p(• o– r0 p(` s z(á  ,',$(rü p(• o– rR p(` s z(ä  ,L,I{Ÿ (  rn p oH(Ç rŠ p(Ç (rü p(• o– (` s z,)oÒ (rü p(• o– (` s z(ö(±s€ *0õž(á  ,(,%(r” p(• o– rR p(` s z(ö  ,J,G{¡ (¢ rÐ poT (Ç rä p(Ç (r” p(• o– (` s z(ÿ ,',$(rü p(• o– rð p(` s z(ã ,',$(rü p(• o– r p(` s z(~*0ï (ô  ,7,4{Z (\ oÒ (r2 p(• o– (` s z(ø  ,B,? {£ (¤ rd poÒ (Ç (r” p(• o– (` s z(é ,M,J{¥ (¦ rn poT (Ç rä p(Ç (r” p(• o– (` s z(*0 ¦(ç  ,${§ (¨ {§ (© +Ò(Foo 9Y {w (ª {« 9D {w (ª {« {« 9&{« {« {« 9 {« {« {« 9ò{« {« {« :Ø {w (y { 9à {w (y { { 9¥{   {‘ (Þ   9‡ { { -y{¬ {‘  {› (œ   {› (  {¬  ((‹ (Œ      (z*(Zo 9{‚ (­ {« 9ê{‚ (­ {« {« 9Ë{« {« {« :±{‚ (ƒ (Þ 9—{¬ {‚ („ {› (œ  {› (    (†(® (¯ (° (± (Ð (W o þs… o† (ôs€ *(`o 9,{‚ (­ {« 9{‚ (­ {« {« 9÷{«   {« {« 9Ý {« !!{« {« :Ã{‚ (ƒ (Þ ""9© {¬ {‚ („ "{› (œ  "{› (    (…##(² #(³ #(´ s(”$$(} $(~ (’%Ð (W o þ%(ùs€ *(Hoo &&,E&{w (y { ,2&{w (y ''{ { -'{‘ 8½ûÿÿ(Goz ((9è({{ (µ {« 9Ò({{ (µ )){« {« 9³){« **{« {« :™*{¬ ({{ (| ){¬  (’   (ž ( (Ú(ˆ% ¤oX (ÌÐ (W o -( st ou +(ô(±s€ *(à ++9Ã+{‡ (‰ +{‡ (Š  +{‡ (ˆ (B(t,,,U(‚$$(} $(~ % %%oÅ ((o¶ st ou (Í(ôs€ *,(r‚ p(• o– s z(ô(±s€ *(Lo --9-{‚ (­ {« 9-{‚ (­ ..{« {« 9å.{« //{« {« 9Ë/{« 00{« {« :±-{‚ (ƒ (Þ 119—1{› (œ  -{‚ („ /{¬ 1{› (    (†(° (® (¯ (± (Ð (W o þs… o† (ôs€ *(Mo 2292{‚ (­ {« 92{‚ (­ 33{« {« 9å3{« 44{« {« 9Ë4{« 55{« {« :±2{‚ (ƒ (Þ 669—6{› (œ  2{‚ („ 4{¬ 6{› (    (†(° (® (¯ (± ( Ð (W o þs… o† (ôs€ *(No 7797{‚ (­ {« 97{‚ (­ 88{« {« 9å8{« 99{« {« 9Ë9{« ::{« {« :±7{‚ (ƒ (Þ ;;9—;{› (œ  7{‚ („ 9{¬ ;{› (    (†(° (® (¯ (± (!Ð (W o þs… o† (ôs€ *(Oo <<9<{‚ (­ {« 9<{‚ (­ =={« {« 9å={« >>{« {« 9Ë>{« ??{« {« :±<{‚ (ƒ (Þ @@9—@{› (œ  <{‚ („ >{¬ @{› (    (†(° (® (¯ (± ("Ð (W o þs… o† (ôs€ *(Po AA9A{‚ (­ {« 9A{‚ (­ BB{« {« 9åB{« CC{« {« 9ËC{« DD{« {« :±A{‚ (ƒ (Þ EE9—E{› (œ  A{‚ („ C{¬ E{› (    (†(° (® (¯ (± (#Ð (W o þs… o† (ôs€ *(Qo FF9F{‚ (­ {« 9F{‚ (­ GG{« {« 9åG{« HH{« {« 9ËH{« II{« {« :±F{‚ (ƒ (Þ JJ9—J{› (œ  F{‚ („ H{¬ J{› (    (†(° (® (¯ (± ($Ð (W o þs… o† (ôs€ *(Ro KK9K{‚ (­ {« 9K{‚ (­ LL{« {« 9åL{« MM{« {« 9ËM{« NN{« {« :±K{‚ (ƒ (Þ OO9—O{› (œ  K{‚ („ M{¬ O{› (    (†(° (® (¯ (± (%Ð (W o þs… o† (ôs€ *(So PP9P{‚ (­ {« 9P{‚ (­ QQ{« {« 9åQ{« RR{« {« 9ËR{« SS{« {« :±P{‚ (ƒ (Þ TT9—T{› (œ  P{‚ („ R{¬ T{› (    (†(° (® (¯ (± (&Ð (W o þs… o† (ôs€ *(coz UU9ÀU{{ (µ {« 9ªU{{ (µ VV{« {« 9‹V{« WW{« {« -tV{¬ U{{ (| W{¬  (‚$$(} $(~  (- Ð (W o þ( s· o¸ (ôs€ *(ho XX9ØX{‚ (­ {« 9ÂX{‚ (­ YY{« {« 9£Y{« ZZ{« {« :‰Y{¬ X{‚ („ Z{¬  X{‚ (ƒ  (‚$$(} $(~ () Ð (W o þ( (Bs¹ oº (ôs€ *(do [[9Ø[{‚ (­ {« 9Â[{‚ (­ \\{« {« 9£\{« ]]{« {« :‰\{¬ [{‚ („ ]{¬  [{‚ (ƒ  (‚$$(} $(~ (* Ð (W o þ( (Bs¹ oº (ôs€ *(io ^^9^{‚ (­ {« 9ê^{‚ (­ __{« {« 9Ë_{« ``{« {« :±^{‚ (ƒ (Þ aa9—a{› (œ  ^{‚ („ `{¬ a{› (    (†(° (® (¯ (± (+Ð (W o þs… o† (ôs€ *(eo bb9b{‚ (­ {« 9êb{‚ (­ cc{« {« 9Ëc{« dd{« {« :±b{‚ (ƒ (Þ ee9—e{› (œ  b{‚ („ d{¬ e{› (    (†(° (® (¯ (± (,Ð (W o þs… o† (ôs€ *(To ff9Sf{‚ (­ {« 9=f{‚ (­ gg{« {« 9g{« hh{« {« 9h{« ii{« {« :êf{‚ (ƒ (Þ jj9Ðh{¬ j{› (œ  f{‚ („ j{› (  (‚$$(} $(~   (B(vkk(œ k( (³3(±+ oÅ oâ(­(0Ð (W o þs… o† (ôs€ *(Uo» ll9l{¼ (½ {« 9øl{¼ (½ mm{« {« 9Ùm{« nn{« {« 9¿n{« oo{« {« 9¥o{« pp{« {« :‹l{¼ (¾ (Þ qq9ql{¼ (¿ (Þ rr9Wp{¬ r{› (œ  q{› (œ l{¼ (À r{› (  q{› ( (‚$$(} $(~   (B(vkk(œ sk( %(B(vtt(œ ut( vsv(”ww(} w(~ xx(’y(³3(±+ oÅoÅ(­z(3Ð (W o þuoâ%oÅyoÅs%uys sÁ o (ôzs€ *(joo {{9S{{w (ª {« 9={{w (ª ||{« {« 9|{« }}{« {« 9}{« ~~{« {« 9ê~{« {« {« 9Ð{« €€{« {« :¶{{w (y { 9 {{w (y { { 9{ ‚‚{ { 9g‚{ ƒƒ{‘ (Þ „„9Iƒ{ { 98ƒ{ ……{‘ (Þ ††9…{ { 9 …{ ‡‡{‘ (yˆˆ9ëˆ{“ (” { 9Õˆ{“ (” ‰‰{ { 9¶‰{ ŠŠ{ { :œ‡{ { :‹}{¬ {‘ ‰{à  „{› (œ „{› (  ‚{‘ Š{à s†{› (œ u†{› ( ˆ{“ (• %  su%({*(koo ‹‹9S‹{w (ª {« 9=‹{w (ª ŒŒ{« {« 9Œ{« {« {« 9{« ŽŽ{« {« 9êŽ{« {« {« 9Ð{« {« {« :¶‹{w (y { 9 ‹{w (y ‘‘{ { 9‘{ ’’{ { 9g’{ ““{‘ (Þ ””9I“{ { 98“{ ••{‘ (Þ ––9•{ { 9 •{ ——{‘ (y˜˜9ë˜{“ (” { 9Õ˜{“ (” ™™{ { 9¶™{ šš{ { :œ—{ { :‹{¬ ‘{‘ ™{à  ”{› (œ ”{› (  ’{‘ š{à s–{› (œ u–{› ( ˜{“ (• %  su%(|*(loo ››9^›{w (ª {« 9H›{w (ª œœ{« {« 9)œ{« {« {« 9{« žž{« {« 9õž{« ŸŸ{« {« 9ÛŸ{«   {« {« :Á›{w (y { 9«›{w (y ¡¡{ { 9Œ¡{ ¢¢{ { 9r¢{ ££{‘ (Þ ¤¤9T£{ { 9C£{ ¥¥{‘ (Þ ¦¦9%¥{ { 9¥{ §§{‘ (y¨¨9ö¨{“ (” { 9à¨{“ (” ©©{ { 9Á©{ ªª{ { :§§{ { :–{¬ ¡{‘ ©{à  ¤{› (œ ¤{› (  ž{¬  ¢{‘ ª{à s¦{› (œ u¦{› ( ¨{“ (• %   su%(}*(>««,«{W 8Ààÿÿ(A¬¬,¬{W 8žàÿÿ(Joz ­­,­{{ (| (ö(±s€ *(Koz ®®,®{{ (| (ö(±s€ *(ù ¯¯,;,8¯{_ (a °°oÒ ±(r® p(• o– ±(` s z(€*0%§( (Œ (‹ (ysÄ *0¨¨(x 9{W (‚ (~ (}  oÅo= £(Š%¤oX  oÅoÅ , oÅo þ+, (Ì+ (•sÄ *(±sÄ *0 Ì©(‚ (} (~ (‚ (~  (} (B(v(œ ( (B(v  (œ   (  s(”  (~   (’s (”(~  (’sÆ sÇ *0:ª( (‹ (Œ (B(v  (œ ( sÈ *08«(… (É (² (³ (´ (y sÊ *0Ú¬(‚ (} (~ (³3*oÅ oÅo= £rØ psß(ê(v(œ ( (sr os  (Ž,! o= £Ð (W o þ+,+ (,( st þou * *0#­(† (¯ (° (± s *0á®(Vo 9þ{‚ (­ {« 9é{‚ (­ {« {« 9Í{« {« {« 9¶{« {« {« :Ÿ{‚ (ƒ (Þ 9†{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  ( Ð (W o þ   s… þo† *(Wo   9  {‚ (­ {« 9ô {‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡ {‚ (ƒ (Þ 9‡{› ( {› (œ  {‚ („ {¬ (ˆ  (Ž   (   (  (£Ð (W o þ   s… þo† *(Xo 9 {‚ (­ {« 9ô{‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡{‚ (ƒ (Þ 9‡{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  (¦Ð (W o þ   s… þo† *(Yo 9 {‚ (­ {« 9ô{‚ (­ {« {« 9Õ{« {« {« 9»{« {« {« :¡{‚ (ƒ (Þ 9‡{› ( {› (œ {‚ („ {¬ (ˆ  (Ž   (   (  (©Ð (W o þ   s… þo† *(qoz 9{{ (µ {« 9‡{{ (µ {« {« ,k{« {« {« -T{¬ {{ (| {¬ (‡( Ð (W o þs· þo¸ *(roz   9 {{ (µ {« 9‡ {{ (µ !!{« {« ,k!{« ""{« {« -T!{¬  {{ (| "{¬ (‡(ùÐ (W o þs· þo¸ *(\oz ##9#{{ (µ {« 9‡#{{ (µ $${« {« ,k${« %%{« {« -T${¬ #{{ (| %{¬ (‡(ÿÐ (W o þs· þo¸ *([oz &&9&{{ (µ {« 9‡&{{ (µ ''{« {« ,k'{« (({« {« -T'{¬ &{{ (| ({¬ (‡(üÐ (W o þs· þo¸ *(]oz ))9){{ (µ {« 9‡){{ (µ **{« {« ,k*{« ++{« {« -T*{¬ ){{ (| +{¬ (‡(Ð (W o þs· þo¸ *(^oz ,,9,{{ (µ {« 9‡,{{ (µ --{« {« ,k-{« ..{« {« -T-{¬ ,{{ (| .{¬ (‡(Ð (W o þs· þo¸ *(_oz //9/{{ (µ {« 9‡/{{ (µ 00{« {« ,k0{« 11{« {« -T0{¬ /{{ (| 1{¬ (‡(Ð (W o þs· þo¸ *(mo 2292{‚ (­ {« 92{‚ (­ 33{« {« 9å3{« 44{« {« 9Ë4{« 55{« {« :±2{‚ (ƒ (Þ 669—6{› ( 6{› (œ 2{‚ („ 2{‚ (Ë  4{¬ (ˆ  (Ž   (   ( 7(É Ð (W o þ7  sÌ þoÍ *(oo 8898{‚ (­ {« 98{‚ (­ 99{« {« 9å9{« ::{« {« 9Ë:{« ;;{« {« :±8{‚ (ƒ (Þ <<9—<{› ( <{› (œ 8{‚ („ 8{‚ (Ë  :{¬ (ˆ  (Ž   (   ( 7(× Ð (W o þ7  sÌ þoÍ *(no ==9={‚ (­ {« 9={‚ (­ >>{« {« 9å>{« ??{« {« 9Ë?{« @@{« {« :±={‚ (ƒ (Þ AA9—A{› ( A{› (œ ={‚ („ ={‚ (Ë  ?{¬ (ˆ  (Ž   (   ( 7(å Ð (W o þ7  sÌ þoÍ *(po BB9B{‚ (­ {« 9B{‚ (­ CC{« {« 9åC{« DD{« {« 9ËD{« EE{« {« :±B{‚ (ƒ (Þ FF9—F{› ( F{› (œ B{‚ („ B{‚ (Ë  D{¬ (ˆ  (Ž   (   ( 7(ó Ð (W o þ7  sÌ þoÍ *(ao GG9ðG{‚ (­ {« 9ÚG{‚ (­ HH{« {« 9»H{« II{« {« :¡G{‚ (ƒ (Þ JJ9‡J{› (œ G{‚ („ I{¬ J{› ( (ˆ  (   (   (Ž  (¯Ð (W o þ   s… þo† *(bo KK9ðK{‚ (­ {« 9ÚK{‚ (­ LL{« {« 9»L{« MM{« {« :¡K{‚ (ƒ (Þ NN9‡N{› (œ K{‚ („ M{¬ N{› ( (ˆ  (   (   (Ž  (²Ð (W o þ   s… þo† *(so OO9ðO{‚ (­ {« 9ÚO{‚ (­ PP{« {« 9»P{« QQ{« {« :¡O{‚ (ƒ (Þ RR9‡R{› (œ O{‚ („ Q{¬ R{› ( (ˆ  (   (   (Ž  (µÐ (W o þ   s… þo† *(fo SS9µS{‚ (­ {« 9ŸS{‚ (­ TT{« {« 9€T{« UU{« {« -iS{‚ (ƒ T{¬ S{‚ („ U{¬ (‡ (—Ð (W o þ (Bs¹ þoº *(go VV9µV{‚ (­ {« 9ŸV{‚ (­ WW{« {« 9€W{« XX{« {« -iV{‚ (ƒ W{¬ V{‚ („ X{¬ (‡ (šÐ (W o þ (Bs¹ þoº *(>YY,Y{W 8Híÿÿ(AZZ,Z{W 8'íÿÿ(‡*6s (÷+*0$¯(‡ (Š (b Þt  þ* 0 °(Vo 9û{‚ (­ {« 9æ{‚ (­ {« {« 9Ê{« {« {« 9³{« {« {« :œ{‚ (ƒ (Þ 9ƒ{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (¡ Ð (W o þ   (BsÎ þoÏ *(Wo   9  {‚ (­ {« 9ó {‚ (­   {« {« 9Ô {« {« {« 9º{« {« {« :  {‚ (ƒ (Þ 9†{› ( {› (œ  {¬  {‚ („ {¬  {¬  (‹ (¤ Ð (W o þ   (BsÎ þoÏ *(Xo 9 {‚ (­ {« 9 {‚ (­ {« {« 9ë{« {« {« 9Ñ{« {« {« :·{‚ (ƒ (Þ 9{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (§ Ð (W o þ  (% ¤oX (BsÎ þoÏ *(Yo 9 {‚ (­ {« 9 {‚ (­ {« {« 9ë{« {« {« 9Ñ{« {« {« :·{‚ (ƒ (Þ 9{› ( {› (œ {¬ {‚ („ {¬  {¬  (‹ (ª Ð (W o þ  (% ¤oX (BsÎ þoÏ *(qoz 9{{ (µ {« 9‡{{ (µ {« {« ,k{« {« {« -T{¬ {{ (| {¬  (‹ (  Ð (W o þ sÐ þoÑ *(roz 9{{ (µ {« 9‡{{ (µ {« {« ,k{«   {« {« -T{¬ {{ (|  {¬  (‹ (ú Ð (W o þ sÐ þoÑ *(\oz !!9!{{ (µ {« 9‡!{{ (µ ""{« {« ,k"{« ##{« {« -T"{¬ !{{ (| #{¬  (‹ ( Ð (W o þ sÐ þoÑ *([oz $$9${{ (µ {« 9‡${{ (µ %%{« {« ,k%{« &&{« {« -T%{¬ ${{ (| &{¬  (‹ (ý Ð (W o þ sÐ þoÑ *(]oz ''9'{{ (µ {« 9‡'{{ (µ (({« {« ,k({« )){« {« -T({¬ '{{ (| ){¬  (‹ ( Ð (W o þ sÐ þoÑ *(^oz **9*{{ (µ {« 9‡*{{ (µ ++{« {« ,k+{« ,,{« {« -T+{¬ *{{ (| ,{¬  (‹ ( Ð (W o þ sÐ þoÑ *(_oz --9-{{ (µ {« 9‡-{{ (µ ..{« {« ,k.{« //{« {« -T.{¬ -{{ (| /{¬  (‹ (  Ð (W o þ sÐ þoÑ *(mo 0090{‚ (­ {« 90{‚ (­ 11{« {« 9é1{« 22{« {« 9Ï2{« 33{« {« :µ0{‚ (ƒ (Þ 449›4{› ( 4{› (œ 1{¬ 0{‚ („ 3{¬  0{‚ (Ë 52{¬  (‹ (Ê5 Ð (W o þ   (BsÆ sÒ þoÓ *(oo 66956{‚ (­ {« 96{‚ (­ 77{« {« 97{« 88{« {« 9æ8{« 99{« {« :Ì6{‚ (ƒ (Þ ::9²:{› ( :{› (œ 7{¬ 6{‚ („ 9{¬  6{‚ (Ë 58{¬  (‹ (Ø5 Ð (W o þ  (% ¤oX (BsÆ sÒ þoÓ *(no ;;9;{‚ (­ {« 9;{‚ (­ <<{« {« 9é<{« =={« {« 9Ï={« >>{« {« :µ;{‚ (ƒ (Þ ??9›?{› ( ?{› (œ <{¬ ;{‚ („ >{¬  ;{‚ (Ë 5={¬  (‹ (æ5 Ð (W o þ   (BsÆ sÒ þoÓ *(po @@95@{‚ (­ {« 9@{‚ (­ AA{« {« 9A{« BB{« {« 9æB{« CC{« {« :Ì@{‚ (ƒ (Þ DD9²D{› ( D{› (œ A{¬ @{‚ („ C{¬  @{‚ (Ë 5B{¬  (‹ (ô5 Ð (W o þ  (% ¤oX (BsÆ sÒ þoÓ *(ao EE9ßE{‚ (­ {« 9ÉE{‚ (­ FF{« {« 9ªF{« GG{« {« :E{‚ (ƒ (Þ HH,yH{› (œ F{¬ E{‚ („ G{¬  H{› ( (‹ (° Ð (W o þ (BsÔ þoÕ *(bo II9ßI{‚ (­ {« 9ÉI{‚ (­ JJ{« {« 9ªJ{« KK{« {« :I{‚ (ƒ (Þ LL,yL{› (œ J{¬ I{‚ („ K{¬  L{› ( (‹ (³ Ð (W o þ (BsÔ þoÕ *(so MM9ßM{‚ (­ {« 9ÉM{‚ (­ NN{« {« 9ªN{« OO{« {« :M{‚ (ƒ (Þ PP,yP{› (œ N{¬ M{‚ („ O{¬  P{› ( (‹ (¶ Ð (W o þ (BsÔ þoÕ *(fo QQ9µQ{‚ (­ {« 9ŸQ{‚ (­ RR{« {« 9€R{« SS{« {« -iQ{‚ (ƒ R{¬ Q{‚ („ S{¬  (‹ (˜ Ð (W o þ (BsÖ þo× *(go TT9µT{‚ (­ {« 9ŸT{‚ (­ UU{« {« 9€U{« VV{« {« -iT{‚ (ƒ U{¬ T{‚ („ V{¬  (‹ (› Ð (W o þ (BsÖ þo× *(>WW,W{W 8íÿÿ(AXX,X{W 8ôìÿÿ(‹*:(Ø }Ö*0ƒ±{Öoo ,q{w (x ,d{w (x {w (y { ,F{w (y { { --{w (ª {W {‘  sÙ (Ú **:(Û }×*0©²{×oo 9”{w (x 9„{w (x {w (y { ,f{w (y { { ,M{ { { -9{w (ª {W  {‘ {‘ sÜ (Ý **:(Þ }Ø*0 ͳ{Øoo 9¸{w (x 9¨{w (x {w (y { 9‡{w (y { { ,n{ { { ,Z { { { -D{w (ª {W {‘  {‘ {‘   sß (à **V(á }â }ã *z{â {ã Œ¦¥é(Ô*(ä *0´(å (æ sç *:(è }Û*0n¶(é (ê {Ûo ,{Û(ë+oz +{Û (ù+oë Þ"t u”, o@ zþ *9J":(ì }Ü*0w·(í (î (ï {Üo ,{Ü(ë+oz +{Ü (ù+oë Þ"t u”, o@ zþ*@R":(ð }Ý*0"¸(ñ (ò {Ý(|(Ê*:(ó }Þ*0*¹(ô (õ (ö {Þ(|(Ë*:(÷ }ø *01º(ù (ú (û {ø Œ¦sA þoB *:(ü }ý *06»(þ (ÿ ( {ý Œ¦¥és; þo< *V( } } *0 S¼( ( ( ( { { Œ¦¥Œ§¥é Œ­¥éþ(“*V( }  }  *0 N¼( ( ( ( {  {  Œ¦¥Œ§ Œ­¥éþ(”*V(  }  }  *0 I½( ( ( ( {  {  Œ¦¥é Œ§¥éþ(œ*V( } } *0 €¾( ( ( ( ( ( ( { { Œ¦¥Œ§¥ Œ­Œµ¥Œ¿¥éþ(*V(  } } *0 I½( ( ( ( { { Œ¦¥é Œ§¥éþ(«*V( } }  *0 X¿(! (" (# ($ (% { {  Œ¦¥Œ§ Œ­¥éþ(¬*0d(& }' }( }) }* }+ }, }- }.  }/  }0  }1  }2 *0™À(3 (4 (5 (6 (7 {' {( {) {* {+ {, {- {. {/ {0 {1 {2 Œ¦¥éŒ§¥é Œ­¥éþ(¹*0\(8 }9 }: }; }< }= }> }? }@  }A  }B  }C *0ÊÂ(D (E (F (G (H (I (J (K (L {9 {: {; {< {= {> {? {@ {A {B {C Œ¦Œ§¥ Œ­¥ŒµŒ¿¥Œv¥éþ(»*V(H}}*b{{sM Œx*r(N }O }P }Q *0 9Ä{Q (R (S (T { {sU þ(ú+*V(V }W }X *0 AÅ(Y (Z ([ {W {X Œ¦¥Œ§¥éþ(õ*V(\ }] }^ *0 <Å(Y (Z ([ {] {^ Œ¦¥s_ þ(û+*(` *0 Æ(a (b (c (d (e (Ü ,*{  (å+,þ+, { * oâoÅ(ƒ%¤%¤oX ( ( (Û ,@ (€ ((% (& (&  (ž ( ( s' þo( *((% (& (&  (ž ( ( s' þo( *(f *0 |Ç(g (h (i (j ,.((% (&  (ž ( ( s' þo( *((% (&  (ž ( ( s' þo( *(k *07È(l (m ((% (& (ž ( s' þo( *(n *Ž((% (& (ž s' þo( *(o *0 yÉ(p (q (r (s (t (u (v  oâoâ(ˆ%¤oX  (ƒ%¤% ¤oX ( ( (Û (…%¤%¤%¤oX ( ( ( (Û ,V (€  (€ ((% (& (& (&   (ž ( ( ( s' þo( *((% (& (& (&   (ž ( ( ( s' þo( *(w *0 ÚÊ(x (y (z ({ oâÐ(W (ƒ%¤%¤oX ( ( (Û,=(€(oâ(% (& (ž ( ( s' þo( *(oâ(% (& (ž ( ( s' þo( *V(| }} }~ *0 ÞË(x (y (z ({ oâ oÅ(ƒ%¤%¤oX ( ( (Û,A(€{} (% (& (& (ž ( ( s' þo *{~ (% (& (& (ž ( ( s' þo *V(w }}*0 ËÌ(x (y (z ({ oâ(ƒ%¤%(‡¤oX ( ( (Û,:(€{(% (& (ž ( ( s' þo( *{(% (& (ž ( ( s' þo( *V(f }}*0 ~Ç(g (h (i (j ,/{(% (&  (ž ( ( s' þo( *{(% (&  (ž ( ( s' þo( *(€ *0iÍ( (‚ (ƒ ,((.(% (& (ž ( s' þo( *(/(% (& (ž ( s' þo( *(w *0 ÜË(x (y (z ({ oâ oÅ(ƒ%¤%¤oX ( ( (Û,@(€(1(% (& (& (ž ( ( s' þo( *(2(% (& (& (ž ( ( s' þo( *(„ *0 TÎ(… († (‡ (ˆ (‰ (Š (‹ (Œ (œ (Œ ( (ƒ%¤%¤oX ( ( (Û (ƒ%¤% ¤oX ( ( (Û ,U (€  (€ (4 (% (& (& (&   (ž ( ( ( s' þo( *(5 (% (& (& (&   (ž ( ( ( s' þo( *( *0 Ï(Ž ( ( (‘ (’ (“ (” (• (– (• (— (• (˜  (• (™  (• (š  (• (›  (• (œ  (ƒ%¤% ¤oX ( ( (Û(ƒ%¤% ¤oX  ( (  (Û(…%¤%¤%¤oX   ( ( (  (Û,s(€(€(€(7 (% (& (& (& (& (ž ( ( ( ( ( s' þo( *(8 (% (& (& (& (& (ž ( ( ( ( ( s' þo( *( *0 (Ð(Ž ( ( (‘ (’ (“ (” (• (– (• (— (• (˜  (• (™  (• (š  (• (›  (• (œ  (ƒ%¤% ¤oX ( ( (Û(ƒ%¤% ¤oX  ( (  (Û(ˆ%¤oX (…%¤%¤%¤oX   ( ( (  (Û,s(€(€(€(: (% (& (& (& (& (ž ( ( ( ( ( s' þo( *(; (% (& (& (& (& (ž ( ( ( ( ( s' þo( *:(á } *:{ (ü+*:(ž }Ÿ *b{Ÿ Œ¦¥é(ü+*V(  }}*v{(å+, {(X **(¡ *Bo¢ o£ þ*(¤ *&(ý+*:(  }*:{o¥ *(¦ *0{Ñ{ ,\ { { -{à  s (  (  *(á  , {Ÿ (ý+*(ž ( (ý+*(á  ,ä {Ÿ +Í:(  }*:{o¥ *V(  }}*v{(å+, {(X **(§ *0!Ò(A ,{W o¨ (X **:(© }*R{(Š(u*:(© }*R{(Š(u*V(  } }!*v{ (å+, {!(X **( *2sú**u\þ*s**u]þ*s**u^þ*0Ó u^,+ u],+*0KÔu^,+ (Ü  ,${ (å+,þ+, { *(ò*²(ñ}%}&}'}(})*{%*{&*{'*{(*{)*:(ñ}**{**:(ñ}+*{+*:( },*2{,{%*2{,{&*2{,{'*2{,{(*2{,{)*:( }-*2{-{**:( }.*2{.{+*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*(ª *"(ƒ*V(  }/}0*0K{0(å+,:( {/(% (& {0(ê(ž ( s' o( (X **(ª *"(ƒ*(ª *6(±sÄ *(ª *6(±sÄ *(§ *0'Ò(w ,{W (‰o¨ (X **00Öu„ , *(rä p(• o– rB ps z0s Ðå( ¥$€1Ð…(W €3(‚oc , (‚od +(‚€2І(W €5(„oc , („od +(„€4Ї(W €7(†oc , (†od +(†€6Ð>(W €9(‰oc , (‰od +(‰€8Ј(W €;(‹oc , (‹od +(‹€:Ð(W €=(oc , (od +(€<Ы Ð` (þ+€>(–(¬ €?(–(­ €@Ю Ðr (þ+€A(™(¬ €B(™(­ €CЯ Ђ (ÿ+€D(Ÿ(° €E(Ÿ(± €Fв Ð… (ÿ+€G(¢(° €H(¢(± €IЯ Ђ (ÿ+€J(¥(° €K(¥(± €Lв Ð… (ÿ+€M(¨(° €N(¨(± €Oг Ðm (+€P(®(´ €Q(®(µ €Rж Ðp (+€S(±(´ €T(±(µ €Uз Ð} (+€V(´(´ €W(´(µ €Xи €Zй €[к €\л €]м €^н €_о €`п €aÐÀ €bÐÁ €cÐ÷€d(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(+€Y(½( €e(½(à €fÐÄ €hÐÅ €iÐÆ €jÐÇ €kÐÈ €lÐÉ €mÐÊ €nÐË €oÐÌ €pÐÍ €qÐö€r(Ì(Í(Î(Ï(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(+€g(Ë( €s(Ë(à €tÐÎ €vÐÏ €wÐÐ €xÐÑ €yÐÒ €zÐÓ €{ÐÔ €|ÐÕ €}ÐÖ €~Ð× €Ðø€€(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(+€u(Ù( €(Ù(à €‚ÐØ €„ÐÙ €…ÐÚ €†ÐÛ €‡ÐÜ €ˆÐÝ €‰ÐÞ €ŠÐß €‹Ðà €ŒÐá €Ðõ€Ž(è(é(ê(ë(ì(í(î(ï(ð(ñ(ò(+€ƒ(ç( €(ç(à €Ðâ Ðq (+€‘(ø(ã €’(ø(ä €“Ðå Ð~ (+€”(û(ã €•(û(ä €–Ðæ Ðe (+€—(þ(ã €˜(þ(ä €™Ðç Ðf (+€š((ã €›((ä €œÐè Ðg (+€((ã €ž((ä €ŸÐé Ðh (+€ ((ã €¡((ä €¢Ðê Ði (+€£( (ã €¤( (ä €¥Ðë (}€¦Ðì (}€¨Ðí (}€©s»€§Ðî (}€«Ðï (}€¬s½€ªÐð (}€®s¿€­Ðñ (}€°sÁ€¯Ðò (}€²Ðó (}€³sÀ±Ðô (}€µÐd (}€¶sÅ€´Ðõ (}Л (}(+€·Ðö (}О (}(+€¸Ð÷ (}С (}(+€¹Ðø (}Ф (}(+€º(€»( €¼(!€½("€¾Ðù Ðs ((€¿Ðú Ðw ((€ÀÐû Ðv ('€ÁÐü Ðz ('€ÂÐý (}€ÄÐj (}€ÅsÍ€ÃÐþ (}€ÇЗ (}€ÈsÏ€ÆÐÿ (}€Êг (}€ËsÑ€ÉÐ (}€Íп (}€ÎsÓ€ÌÐ (}€ÐÐÈ (}€ÑsÕ€ÏÐ(W rü po o (ð€ÒÐ(W oŒ r po rn po o (ð€ÓÐ(W oŒ rŽ po rú po o (ð€ÔÐ×(ð€ÕÐÙ(r€ÖÐÚ(ð€×ÐØ(ð€ØÐÜ(r€ÙÐÝ(r€ÚÐú(s€ÛÐû(s€ÜÐü(s€ÝÐý(s€ÞÐþ(s€ßÐÿ(s€àÐ(s€áÐ(s€âÐù(s€ãÐ(t€äÐñ(s€åÐò(s€æÐó(s€çÐô(s€èÐà(s€éÐð(r€êÐá(r€ëÐâ(r€ìÐã(r€íÐä(r€îÐß(s€ïÐç(s€ðÐè(s€ñÐæ(r€òÐí(s€óÐî(s€ôÐÞ(s€õÐê(s€öÐë(s€÷Ðì(s€øÐ(ð€ùÐ(ð€úÐ(ð€ûÐ÷(s€üÐø(s€ýÐö(s€þÐõ(s€ÿÐå(r€Ðé(r€Ðï(s€*:( } *N{ o { *:}  ( *B{  þo  *:}  ( *B{  þo  *:}  ( *B{  þo  *:}  ( *B{  þo  *:} ( *B{ þo  *:} ( *B{ þo  *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *( *6sÔ (+*:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:} ( *B{ þo *:}  ( *B{  þo *:}! ( *B{! þo *:}" ( *B{" þo *:}# ( *B{# þo *:}$ ( *F{$ þ(+*:}& ( *B{& þo *:}' ( *B{' þo *:}( ( *F{( þ(+*:}* ( *B{* þo *:}+ ( *B{+ þo *:}, ( *Z{, (+þ(+*0Øs–s- s. *~@*~A*~B*09Ù(ñ  ,'{k (q {k (l ( +Ï( *6(ž (h*0SÛ{Þ 9ˆ {/ Œ0¥é(õ  ,m{0 (1 ,`{0 (1 {W (Ü  ,E{Þ  { (å+,/{Þ  { {/ (2 8mÿÿÿ{Þ ,b{/ Œ0¥é(î ,C{Þ {m (n (+,&{Þ {m (n  8ÿÿÿ{Þ ,L{/ Œ0¥é(Ü   ,-{Þ {Þ - { (å+, { (3 **0Ü (ž ( +*0ŒÝ(ü  9}{ÿ ( (ø  ,i{£ (4 { -W{ÿ ( (i {ÿ ( {ÿ (  (k,{Ÿ  s5 (6 ***~C*~D*~E*~F*~G*~H*~I*~J*~K*~L*~M*~N*~O*~P*~Q*~R*~S*~T*~U*~V*~W*~X*~Y*~Z*~[*0dÞ(ø  ,X{£ (¤ o7 oc ,(„od o8 +,%{£ (¤ {£ (4  s9 (: **0@ß(~o£ Y£ s¡( +( +oX o: £p (Ö*0 ƒà{ 9s { { 9\{ { { 9@{ { { 9${ { { 9 { { { 9ê{ { { 9Ë{ { { 9¦{ {‘ {‘  {‘  {‘  {‘  {‘  {‘ {‘ {      ( (ˆ(ž ( ( ( ( ( ( ( ( (‡*(‡*+ó+î+é+ä+ß+Ú+Õ0‹âr$p/+X Œb ,/u™ , ( ¥so; +oÒ +rp(Ç ov (Ý/*Yo= £8uÿÿÿ>oÅ(‰*0gäod  (‚o< s= (> ,$(? o= ( +o@ (ë+þoX *s£r.psA ( +þoB *0Äæ(ô  9µ{Z ([ 9¥{Z ([ {W (ã  9‡{Z (^ { -u{¥ (¦ {Z (\ {¥ (C  0(D (\s¥(+,){Ì   o£ / oE (X ****0 )è(³E˜ÐFt™ {. {F 9g {F {F 9U{F {F {F 9> {F {F {F 9%{F {F {F 9 {F {F {F 9ñ{F {F {F 9×{F {F {F 9½{F   {G  {G  {G  {G  {G {G  {G {G  {F sÊ    (H (©(I (H (H (H (H (H (H (H (H sÌþ(‹*sÎsÐþ(‹*tš{0 sÔ( +( +(©(Y8þÿÿt›{3 o= £o= £Ð0(W oc , od +%¤% (¤þoX *tœ{4 od Ј(W oc , od +(p+o= £% (¤,,Ј(W oc , od +þoX *Ð>(W oc , od +þoX **~\*~]*~^*~_*0ê(ŽoJ ,*(­    u-N u:wt{S (T t{S (U { -+KsØ (ñ+(« +7t{V (œ t{V ( (’(Ó+ (l,w{K (L {K (M {K (N (f%oâ¤oz sÚ (ž ( (+(+(ž ( (Ê*(†,U{£ (¤  {£ (4 (g% o7 ¤oz  (Ö(ž ( (Ê**0çë(­    u-? u-kt{S (T t{S (U sÜ (ñ+(« +7t{V (œ t{V ( (“(Ó+ (æ ,6{ ( (á ,{ ( {Ÿ oE *(Œ  ,  {W **0Åí(á  ,<{Ÿ sÞ(+(+ (O (P (ˆ (©sÄ *(ã ,i(e{¥ (¦ oQ ,Q{¥ (¦ {¥ (C sà(+(+ (O (P (ˆ («sÄ *þoR *^(³3(±*(¯**o &**þ(+*.þ(p+*V(U }V }W *0Mîþ§ {W Œ¦¥oX ,*{V o {W Œ¦¥oY *(Z **þo[ *(\ *†(T,s›(\(+þ**(] **þoÅ*:(^ }%*^sŸ{%¥¿(+*(_ *"s¤ z:(Z }&*B{&þ(+*2s¨€(*:( }'*s´**(³þ*"s¶**(³þ*&s¹**(³þ*s½**(³þ*~(**(³þ*{'*>(¨}.*{.*Z(¨}/}0*{/*{0*v(¨}1}2}3*{1*{2*{3*>(¨}4*{4*:( }5*2{5{.*:( }6*2{6{/*2{6{0*:( }7*2{7{1*2{7{2*2{7{3*:( }8*2{8{4*(` *.þ(*V(a }9}:*R{9{:(+*(` *.þ(*V(a };}<*R{<{;(+*(b **þoc *:(^ }=*vsÒ{=(\¥À(+*(d *0Nï(ù  ,A{_ (a {_ (` {_ (e o ,(‘o þ(+***(á *"(’*(e *&(â*(á *"(“*:(ª }>*B{>þ(”*:(ª }?*B{?þ(”*0Çðs(+€@Ðã( ¥$€AÐä( ¥$€B)%ÐÁ(W €D(noc , (nod +(nÐÂ(W €E(ooc , (ood +(osf ¤)%ÐÃ(W €F(poc , (pod +(pÐÄ(W €G(qoc , (qod +(qsf ¤)%ÐÅ(W €H(roc , (rod +(rÐÆ(W €I(soc , (sod +(ssf ¤)%ÐÇ(W €J(toc , (tod +(tÐÈ(W €K(uoc , (uod +(usf ¤)%ÐÉ(W €L(voc , (vod +(vÐÊ(W €M(woc , (wod +(wsf ¤)%ÐË(W €N(xoc , (xod +(xÐÌ(W €O(yoc , (yod +(ysf ¤)%ÐÍ(W €P(zoc , (zod +(zÐÎ(W €Q({oc , ({od +({sf ¤)%ÐÏ(W €R(|oc , (|od +(|ÐÐ(W €S(}oc , (}od +(}sf ¤)€C(m€U(ŒÑ,+ rµps z(Ži€V(€€W (€Y 2%((£)(a ¤X X3Û(€Tsg €Y +&(m£) (ƒ(b (a oh X (mŽi2Ð(ƒ€Xsg €[ +&(m£) (…(a (b oh X (mŽi2Ð(…€ZÐä€](( ¥$€^(o €_sÖ€\*2rXps z2rXps z2rXps z0*6*–oi ,+oj ,+ok þ*î(è,1oc ,oc ,od od þo **þo **0?ñÐt(W (é-r°prips zo= ££sf *~r*0 ó(+(+ sgoÃ(+*0*~s*~t*0-ô( ¥$ o , o + si*~u*~v*~w*~x*~y*~z*~{*~|*~}*~~*~*~€*~*~‚*~ƒ*~„*~…*~†*~‡*~ˆ*~‰*~Š*~‹*~Œ*~*~Ž*~*~*~‘*~’*~“*~”*~•*~–*~—*~˜*~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*~¨*~©*~ª*~«*~¬*~­*~®*~¯*~°*~±*~²*~³*~´*~µ*~¶*~·*~¸*~¹*~º*~»*~¼*~½*~¾*~¿*~À*~Á*~Â*~Ã*~Ä*~Å*~Æ*~Ç*~È*~É*~Ê*~Ë*~Ì*~Í*~Î*~Ï*~Ð*~Ñ*~Ò*~Ó*~Ô*~Õ*~Ö*~×*~Ø*0Rö(ñ  ,<{k (q (U (l (m {k (l  ( sn *(ž sn *0s÷(Qoo ,b{w (x -U{w (y { ,C{w (y {‘ (U { { -(m (l  so (p **0€ø(Roo ,o{w (x -b{w (y { ,P{w (y {‘ (ø  ,5{ { -({£ (¤ {£ (4  s9 (: **0uù(ø  ,i{£ (4 { ,W{£ (4 { { ->{£ (¤ o7 Ð…(W (é,{£ (¤ {‘ (X **0Yü(n (q ,9(q (r {s (t {s (u  (v +¶(r (v *0 !(p (w 9ÿ(w {x (y oq ŽiY Y(å {Ì YX"  Y   2!  X£"¤" X   X3ß "%ŽiYYX"    Y  2"X£"¤"X X3Þ    (Z¤"(+(z *(y (z *0 ‹@(Ü  ,R{ {a(+ Þ8t  u,$rpoà(Ç r4p(Ç sÔ zþ*(Á ,2{k (q {k (l ([([({ *(   ,2 {k (q  {k (l ([([(| *(î   ,& {m (n   {m (}    (~ *(Eoo   9=? {w (ª {« 9÷> {w (ª {« {« :¨> {w (y { 9b> {w (y { { -a{‘ {¬  ([  oY -oÅoY þ+, oÅoÅ +,*([ ( *(ç ,!{§ (¨ {§ (©  8„ÿÿÿ(è ,,{§ (¨ {§ (©  ([ (€ *(Foo 9€{w (ª {« ,m{w (ª {« {« -Q{w (y { ,>{w (y { { -"{‘ {¬  ([ (€ *(ö ,-{¡ ( {¡ (¢ (](‚ *(æ ,5{ ( { ( ([ oÅ(Y*(ô 9²{Z (\ {Z ([ {Z (^ þ,o7 (U+,o7 oƒ (U+,o7 („ +{ -(](v *(^(]oý (… *(ù 9u0{_ (` {_ (a  {_ (e (V!!,^!{† (‡ "!{† (ˆ "sm( +(!+#([ uœ$$,$%%#(‰ *rŒps z(W&&,T&{£ (¤ '&{£ (4 ""(^'o7 oŠ ('¥Ú(sq("+(#+(‹ *(oo ))9^){w (ª {« 9H){w (ª **{« {« 9)*{« ++{« {« 9+{« ,,{« {« :õ){w (y { 9ß){w (y ""{ { 9À"{ --{ { :¦,{¬  +{¬ .*{¬ //Ð\(W (p+,.Ð\(W (p++, Ð\(W (p++,H-{‘ "{‘ ,{¬  +{¬ .*{¬ /([([(ë(Œ *(ñoo 009-0{w (y { 9ñ,0{w (y 11{ { 9X,1{ 22{ { -$2{‘ 1{‘ ss(\*(òoo 33,]3{w (y { ,J3{w (y 44{ { ,.4{ 55{ { -5{‘ 4{‘ 8€ÿÿÿ(÷oo 66,j6{w (y { ,W6{w (y 77{ { ,;7{ 88{ { -$8{‘ 7{‘ su(\*(óoo 99,j9{w (y { ,W9{w (y ::{ { ,;:{ ;;{ { -$;{‘ :{‘ sw(\*(ôoo <<,j<{w (y { ,W<{w (y =={ { ,;={ >>{ { -$>{‘ ={‘ sy(\*(õoo ??,j?{w (y { ,W?{w (y @@{ { ,;@{ AA{ { -$A{‘ @{‘ s{(\*(öoo BB,jB{w (y { ,WB{w (y CC{ { ,;C{ DD{ { -$D{‘ C{‘ s}(\*(oo EE,FE{w (y { ,3E{w (y FF{ { -F{‘ ([( *(øoo GG,jG{w (y { ,WG{w (y HH{ { ,;H{ II{ { -$I{‘ H{‘ s(\*(ùoo JJ,jJ{w (y { ,WJ{w (y KK{ { ,;K{ LL{ { -$L{‘ K{‘ s(\*(úoo MM,jM{w (y { ,WM{w (y NN{ { ,;N{ OO{ { -$O{‘ N{‘ sƒ(\*(ûoo PP,jP{w (y { ,WP{w (y QQ{ { ,;Q{ RR{ { -$R{‘ Q{‘ s…(\*(üoo SS,jS{w (y { ,WS{w (y TT{ { ,;T{ UU{ { -$U{‘ T{‘ s‡(\*(ýoo VV,jV{w (y { ,WV{w (y WW{ { ,;W{ XX{ { -$X{‘ W{‘ s‰(\*(oo YY,jY{w (y { ,WY{w (y ZZ{ { ,;Z{ [[{ { -$[{‘ Z{‘ s‹(\*(oo \\,j\{w (y { ,W\{w (y ]]{ { ,;]{ ^^{ { -$^{‘ ]{‘ s(\*(oo __,j_{w (y { ,W_{w (y ``{ { ,;`{ aa{ { -$a{‘ `{‘ s(\*(oo bb,jb{w (y { ,Wb{w (y cc{ { ,;c{ dd{ { -$d{‘ c{‘ s‘(\*(oo ee,je{w (y { ,We{w (y ff{ { ,;f{ gg{ { -$g{‘ f{‘ s“(\*( oo hh,jh{w (y { ,Wh{w (y ii{ { ,;i{ jj{ { -$j{‘ i{‘ s•(\*(þoo kk,jk{w (y { ,Wk{w (y ll{ { ,;l{ mm{ { -$m{‘ l{‘ s—(\*(ÿoo nn,jn{w (y { ,Wn{w (y oo{ { ,;o{ pp{ { -$p{‘ o{‘ s™(\*(oo qq,jq{w (y { ,Wq{w (y rr{ { ,;r{ ss{ { -$s{‘ r{‘ s›(\*(oo tt,jt{w (y { ,Wt{w (y uu{ { ,;u{ vv{ { -$v{‘ u{‘ s(\*(oo ww,jw{w (y { ,Ww{w (y xx{ { ,;x{ yy{ { -$y{‘ x{‘ sŸ(\*(oo zz,jz{w (y { ,Wz{w (y {{{ { ,;{{ ||{ { -$|{‘ {{‘ s¡(\*( oo }}9D}{w (y { 9.}{w (y ~~{‘ (· 9 ~{ { 9ú~{ €€{‘ (· 9Ü€{ { 9Ë€{ ‚‚{‘ (· ƒƒ9­‚{ { 9œ‚{ „„{‘ (® ……9~„{ { ,p„{ ††{‘ (´ ‡‡,U†{ { -G‡{Ž ˆ{Ì {Ì ‰…{„ Šƒ{Ì ‹‰‹Šˆs Œ7( *(oo ŒŒ,FŒ{w (y { ,3Œ{w (y { { -{‘ ([(‘ *(oo ŽŽ,nŽ{w (y { ,[Ž{w (y { { ,?{ { { -({‘ {‘ ([([(’ *(oo ‘‘,n‘{w (y { ,[‘{w (y ’’{ { ,?’{ ““{ { -(“{‘ ’{‘ ([([(“ *(oo ””,n”{w (y { ,[”{w (y ••{ { ,?•{ ––{ { -(–{‘ •{‘ ([([(” *(oo ——,n—{w (y { ,[—{w (y ˜˜{ { ,?˜{ ™™{ { -(™{‘ ˜{‘ ([([(• *( oo šš,nš{w (y { ,[š{w (y ››{ { ,?›{ œœ{ { -(œ{‘ ›{‘ ([([(– *(!oo ,n{w (y { ,[{w (y žž{ { ,?ž{ ŸŸ{ { -(Ÿ{‘ ž{‘ ([([(— *("oo   ,n {w (y { ,[ {w (y ¡¡{ { ,?¡{ ¢¢{ { -(¢{‘ ¡{‘ ([([(˜ *(#oo ££,n£{w (y { ,[£{w (y ¤¤{ { ,?¤{ ¥¥{ { -(¥{‘ ¤{‘ ([([(™ *($oo ¦¦,n¦{w (y { ,[¦{w (y §§{ { ,?§{ ¨¨{ { -(¨{‘ §{‘ ([([(š *(%oo ©©,n©{w (y { ,[©{w (y ªª{ { ,?ª{ ««{ { -(«{‘ ª{‘ ([([(› *(&oo ¬¬,F¬{w (y { ,3¬{w (y ­­{ { -­{‘ ([( *('oo ®®,F®{w (y { ,3®{w (y ¯¯{ { -¯{‘ ([(œ *((oo °°,n°{w (y { ,[°{w (y ±±{ { ,?±{ ²²{ { -(²{‘ ±{‘ ([([( *()oo ³³,n³{w (y { ,[³{w (y ´´{ { ,?´{ µµ{ { -(µ{‘ ´{‘ ([([(ž *(*oo ¶¶,n¶{w (y { ,[¶{w (y ··{ { ,?·{ ¸¸{ { -(¸{‘ ·{‘ ([([(Ÿ *( oo ¹¹,j¹{w (y { ,W¹{w (y ºº{ { ,;º{ »»{ { -$»{‘ º{‘ s£(\*( oo ¼¼,j¼{w (y { ,W¼{w (y ½½{ { ,;½{ ¾¾{ { -$¾{‘ ½{‘ s¥(\*( oo ¿¿,j¿{w (y { ,W¿{w (y ÀÀ{ { ,;À{ ÁÁ{ { -$Á{‘ À{‘ s§(\*(oo ÂÂ,jÂ{w (y { ,WÂ{w (y ÃÃ{ { ,;Ã{ ÄÄ{ { -$Ä{‘ Ã{‘ s©(\*(oo ÅÅ,jÅ{w (y { ,WÅ{w (y ÆÆ{ { ,;Æ{ ÇÇ{ { -$Ç{‘ Æ{‘ s«(\*(oo ÈÈ,jÈ{w (y { ,WÈ{w (y ÉÉ{ { ,;É{ ÊÊ{ { -$Ê{‘ É{‘ s­(\*(oo ËË,jË{w (y { ,WË{w (y ÌÌ{ { ,;Ì{ ÍÍ{ { -$Í{‘ Ì{‘ s¯(\*(oo ÎÎ,jÎ{w (y { ,WÎ{w (y ÏÏ{ { ,;Ï{ ÐÐ{ { -$Ð{‘ Ï{‘ s±(\*(oo ÑÑ,jÑ{w (y { ,WÑ{w (y ÒÒ{ { ,;Ò{ ÓÓ{ { -$Ó{‘ Ò{‘ s³(\*(oo ÔÔ,jÔ{w (y { ,WÔ{w (y ÕÕ{ { ,;Õ{ ÖÖ{ { -$Ö{‘ Õ{‘ sµ(\*(oo ××,j×{w (y { ,W×{w (y ØØ{ { ,;Ø{ ÙÙ{ { -$Ù{‘ Ø{‘ s·(\*(oo ÚÚ,jÚ{w (y { ,WÚ{w (y ÛÛ{ { ,;Û{ ÜÜ{ { -$Ü{‘ Û{‘ s¹(\*(oo ÝÝ,jÝ{w (y { ,WÝ{w (y ÞÞ{ { ,;Þ{ ßß{ { -$ß{‘ Þ{‘ s»(\*(oo àà,jà{w (y { ,Wà{w (y áá{ { ,;á{ ââ{ { -$â{‘ á{‘ s½(\*(oo ãã,jã{w (y { ,Wã{w (y ää{ { ,;ä{ åå{ { -$å{‘ ä{‘ s¿(\*(8oo ææ,Pæ{w (y { ,=æ{w (y çç{ { -!ç{‘ ([ÐÜ(W (  *(9oo èè,Pè{w (y { ,=è{w (y éé{ { -!é{‘ ([ÐÝ(W (  *(:oo êê,Pê{w (y { ,=ê{w (y ëë{ { -!ë{‘ ([ÐÞ(W (  *(;oo ìì,Pì{w (y { ,=ì{w (y íí{ { -!í{‘ ([Ðß(W (  *(<oo îî,Pî{w (y { ,=î{w (y ïï{ { -!ï{‘ ([Ðà(W (  *(=oo ðð,Pð{w (y { ,=ð{w (y ññ{ { -!ñ{‘ ([Ðá(W (  *(>oo òò,Pò{w (y { ,=ò{w (y óó{ { -!ó{‘ ([Ð…(W (  *(?oo ôô,Pô{w (y { ,=ô{w (y õõ{ { -!õ{‘ ([Ð…(W (  *(@oo öö,Pö{w (y { ,=ö{w (y ÷÷{ { -!÷{‘ ([Ðâ(W (  *(Aoo øø,Pø{w (y { ,=ø{w (y ùù{ { -!ù{‘ ([Ðã(W (  *(Boo úú,Pú{w (y { ,=ú{w (y ûû{ { -!û{‘ ([Ðä(W (  *(Coo üü,Pü{w (y { ,=ü{w (y ýý{ { -!ý{‘ ([Ðå(W (  *(Doo þþ,Pþ{w (y { ,=þ{w (y ÿÿ{ { -!ÿ{‘ ([Ðæ(W (  *(+oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([У(W (  *(,oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð7(W (  *(-oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð’(W (  *(.oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Г(W (  *(/oo þþ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ф(W (  *(0oo þ þ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ð¥(W (  *(1oo þ þ ,Zþ {w (y { ,Eþ {w (y þ þ { { -#þ {‘ ([Ðb(W (  *(2oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ðb(W (  *(3oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Б(W (  *(4oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ц(W (  *(5oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ч(W (  *(6oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ш(W (  *(7oo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Щ(W (  *(Goo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([У(W (¡ *(Hoo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ф(W (¡ *(Ioo þþ ,Zþ {w (y { ,Eþ {w (y þþ { { -#þ {‘ ([Ð¥(W (¡ *(Joo þ þ ,Zþ {w (y { ,Eþ {w (y þ!þ !{ { -#þ !{‘ ([Ðb(W (¡ *(Koo þ"þ ",Zþ "{w (y { ,Eþ "{w (y þ#þ #{ { -#þ #{‘ ([Б(W (¡ *(Loo þ$þ $,Zþ ${w (y { ,Eþ ${w (y þ%þ %{ { -#þ %{‘ ([Ц(W (¡ *(Moo þ&þ &,Zþ &{w (y { ,Eþ &{w (y þ'þ '{ { -#þ '{‘ ([Ч(W (¡ *(Noo þ(þ (,Zþ ({w (y { ,Eþ ({w (y þ)þ ){ { -#þ ){‘ ([Ш(W (¡ *(Ooo þ*þ *,Zþ *{w (y { ,Eþ *{w (y þ+þ +{ { -#þ +{‘ ([Щ(W (¡ *(Soo þ,þ ,9ýþ ,{w (ª {« 9åþ ,{w (ª þ-þ -{« {« 9Àþ -{« þ.þ .{« {« 9 þ .{« þ/þ /{« {« :€þ ,{w (y { ,kþ ,{w (y þ0þ 0{ { ,Iþ 0{ þ1þ 1{ { -,þ 1{‘ þ 0{‘ ([([(¢ *(Poo þ2þ 29…þ 2{w (ª {« ,pþ 2{w (ª þ3þ 3{« {« -Nþ 2{w (y { ,9þ 2{w (y þ4þ 4{ { -þ 4{‘ 8íÌÿÿ(^(] (… *(òoo 339=Ôÿÿ3{w (y { 9'Ôÿÿ3{w (y 22{ { 9Ôÿÿ2{ 44{ { :îÓÿÿ4{‘ 2{‘ 8WÓÿÿ(òoo 339ÃÓÿÿ3{w (y { 9­Óÿÿ3{w (y 11{ { 9ŽÓÿÿ1{ 22{ { :tÓÿÿ2{‘ 1{‘ 8ÝÒÿÿ(òoo 339IÓÿÿ3{w (y { 93Óÿÿ3{w (y 11{ { 9Óÿÿ1{ 22{ { :úÒÿÿ2{‘ 1{‘ 8cÒÿÿ(Ý þ5þ 59Ýþ 5{k (l (Ý þ6þ 69½þ 6{k (l (Ý þ7þ 79þ 7{k (l (Ý þ8þ 89}þ 8{k (l þ 5{k (q þ 6{k (q þ9þ 7{k (q þ:þ 8{k (q þ;oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>/(êþ?þ ?(a þ@þ ?(b þAþ @(êþBþ B(a þCþ B(b þD.þ >(XþEsÁþ Eo£ ($+%þ A¤%þ D¤%þ C¤oz  þ ;þ :þ 9(ž ( ( ( ( ( (^ (… *(Ý þFþ F9pþ F{k (l (Ý þGþ G9Pþ G{k (l (Ý þHþ H90þ H{k (l þ F{k (q þ G{k (q þ9þ H{k (q þ:oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>/(êþ?þ ?(a þ@þ ?(b þA.þ >(XþCsÃþ Co£ ($+%þ A¤%þ @¤oz  þ :þ 9(ž ( ( ( ( (^ (… *(Ý þIþ I9þ I{k (l (Ý þJþ J9ãþ J{k (l þ I{k (q þ J{k (q þ9oÅ(êþ<þ <(a  þ <(b . (êþ=þ =(a /þ =(b þ>.þ >(Xþ@sÅþ @o£ ($+%/¤oz  þ 9(ž ( ( ( (^ (… *(Ý þKþ K,bþ K{k (l þ K{k (q ([ ([þLoÅrGpo   "%þ L¤"(… *(ã þMþ M,@þ M{¥ (¦  þ M{¥ (C  0(D (h''(^(z *(é þNþ N,0þ N{¥ (¦  þ N{¥ (C  (^(¤ *(â ,{x   (¥ *(ä þOþ O,Iþ O{Ÿ (  þPþ O{Ÿ (¦ þ P0(D (s (^ (… *(å þQþ Q9Âþ Q{§ (¨ þPþ Q{§ (© þ PoI0(D (vþR([ þ Ru,þSþ S(v +;þ Ru$  ,! þTþ T"%¤"(… + ròps¤ zþLþ Lþ PoNŒb( (ª *(ø &&,Z&{£ (¤ '&{£ (4 (X,{W ([oÅ(  *'(^(z *(þ þUþ U9ƒþ U{« (¬ þVþ U{« (­  þ U{« (® sÇþ V(%+þWsËþ Vþ W{a(&+sdþXþ X([  þ W¥ë(¯ *(á þYþ Y,7þ Y{Ÿ sÍ('+(ë+(Y (^ (Z*(à þZþ Z,Rþ Z{‡ (‰ þ Z{‡ (Š þ Z{‡ (ˆ þ9([([þ 9([(° *(ß 9Ÿ{W oÄþ[(T%oŤoz "%( ¤"%а(W þ [sÑ((+()+(¤ ¤"%Ð(W þ [sÕ((+()+(¤ ¤"(± *(ü þ\þ \9Úþ \{ÿ ( þ \{ÿ ( þ \{ÿ ( (_þ]þ ] {ao² sdþXþ X([ ([þL%oâ¤%oŤ(   %%þ ]¤%(³ þ^þ ^ rGp6op "%þ L¤"(… *(Þ þ_þ _9éþ _{› (œ þ _{› ( (_þ]þ ] {ao² sdþX%oâ¤%oŤþ`þ X([ Ðí(W ..oc , .od +.þ `oX   %%þ ]¤%(³ þLÐv(W rpþ `"%þ L¤"(´ *r.psµ (*+o¶ s z(ç 99Âÿÿ{§ (¨ {§ (©  8œÁÿÿ(ç 9 Âÿÿ{§ (¨ {§ (©  8lÁÿÿ(ç 9ÙÁÿÿ{§ (¨ {§ (©  8<Áÿÿ(ç 9©Áÿÿ{§ (¨ {§ (©  8 Áÿÿ"80±([ ([ ,?Ð…(W oc , od + %o· ¤oX (  + ,?Ð…(W oc , od + %o· ¤oX (  +s¸ þo¹ *0/-* {W ([ , {x ( **Ns×(++(,+*Noâoà(º *J(-+sd([*0 (-+sd([¥ñ*0Ì(î  ,{m (n *oÅ %Ð(W ¤%¤( rópÐ(W sß( ( (Û (-+sd ([¥«o» %Œ¤oj Þ"t u”, o@ zþ*Ѝ"{a*:( }a*:(¼ }b*N{boâ(é*:(  }c*fse{co½ (.+*r(¾ }d}e}f*0¦ï(ù  9—{_ (a {do‰ o‰ 38{e, o ,{fo (+++{d(++,<{_ (` {_ (a {_ (e o¿ ( + sÀ (Á **:( }g*0r(õ  ,]{0 (à {0 (Ä {0 (Å (ž  (:oÆ þ, rýps z{g([(Ç *r€ps zV(È }h}i*v{hsk{i¥¿(/+*(É **:(Ê }j*^so{j¥À(0+*(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (ª *(Ë *0(Ì (Í (Î *(Ë *0(Ì (Í (Ï *(Ë *0(Ì (Í (Ð *(Ë *0(Ì (Í (Ñ *(Ë *0(Ì (Í (Ò *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (’ *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (” *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (• *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (“ *(Ë *0(Ì (Í (– *(Ë *0(Ì (Í (– *(Ë *0(Ì (Í (– *(Ó *†oT rÜp(” , oq Žiþ**(Ó *†oT rÜp(” , oq Žiþ**(Ó *†oT rÜp(” , oq Žiþ**(Ô *"(_*V(Õ }k}l*R{k{lo² *(Ö *0 ^ sÉ*(] **þoÅ*(× *"( *:(Ø }m*JsÏ{m(1+*:(× }n*Š{n{aoÙ Ð(W (  *V(Ø }o}p*b{osÓ{p(1+*:(Ú }q*:{q([*08(Û ,$(Ü ,¥¦+ r˜ psè zsÝ *þã*08(Û ,$(Ü ,¥¤+ r˜ psè zsÞ *þà*08(Û ,$(Ü ,¥¥+ r˜ psè zsß *þá*08(Û ,$(Ü ,¥§+ r˜ psè zsà *þä*08(Û ,$(Ü ,¥b+ r˜ psè zsá *þ…*0-!(â ,(ã Œb¥0sä *þó*08(Û ,$(Ü ,¥b+ r˜ psè zsá *þ…*08#(Û ,$(Ü ,¥¨+ r˜ psè zså *þå*08%(Û ,$(Ü ,¥‘+ r˜ psè zsæ *þâ*08'(Û ,$(Ü ,¥©+ r˜ psè zsç *þæ*08)(Û ,$(Ü ,¥“+ r˜ psè zsè *þß*08+(Û ,$(Ü ,¥’+ r˜ psè zsé *þÞ*08-(Û ,$(Ü ,¥®+ r˜ psè zsê *þô*08/(Û ,$(Ü ,¥¯+ r˜ psè zsë *þõ*081(Û ,$(Ü ,¥7+ r˜ psè zsì *þÝ*083(Û ,$(Ü ,¥£+ r˜ psè zsí *þÜ*04(Û ,(Ü (2+**04(Û ,(Ü (3+**04(Û ,(Ü (4+**04(Û ,(Ü (5+**04(Û ,(Ü þ(6+**2(7+þ*04(Û ,(Ü (2+**04(Û ,(Ü (3+**04(Û ,(Ü (4+**04(Û ,(Ü (5+**04(Û ,(Ü þ(6+**2(8+þ*025(Û , (Û +,(Ü (Ü (2+**025(Û , (Û +,(Ü (Ü (3+**025(Û , (Û +,(Ü (Ü (4+**025(Û , (Û +,(Ü (Ü (5+**0P5(Û - (Û þ+,*(Û , (Û +,(Ü (Ü þ(6+**2(9+þ*0)6(Û ,(Ü (:+s‘ *þ«*0)7(î ,(ï (:+s‘ *þ«*0?8(Û , (î +,(Ü (ï (:+s‘ *þ«*086(Û ,$(Ü ,¥2+ ròpsè zs‘ *þ«*087(î ,$(ï ,¥2+ ròpsè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ ròpsè zs‘ *þ«*0)6(Û ,(Ü (;+s‘ *þ«*0)7(î ,(ï (;+s‘ *þ«*0?8(Û , (î +,(Ü (ï (;+s‘ *þ«*086(Û ,$(Ü ,¥2+ r^psè zs‘ *þ«*087(î ,$(ï ,¥2+ r^psè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ r^psè zs‘ *þ«*086(Û ,$(Ü ,¥2+ rÂpsè zs‘ *þ«*087(î ,$(ï ,¥2+ rÂpsè zs‘ *þ«*0N8(Û , (î +,,(Ü (ï ,¥2+ rÂpsè zs‘ *þ«*08Ðð ( ¥$€rÐ…(W €t(ïoc , (ïod +(ïo: £p€sÐ,(ð€uÐ!(ð€vÐ(ð€wÐ(ð€xÐ(ð€yÐ (ð€zÐ"(ð€{Ðí(ð€|Ðî(ð€}Ðê(ð€~Ðé(ð€Ðì(ð€€Ðë(ð€Ðù(ð€‚Ðú(ð€ƒÐö(ð€„Ðõ(ð€…Ðø(ð€†Ð÷(ð€‡Ðó(ð€ˆÐô(ð€‰Ðð(ð€ŠÐï(ð€‹Ðò(ð€ŒÐñ(ð€ÐÆ(ð€ŽÐû(ð€Ðý(ð€Ðü(ð€‘Ðþ(ð€’Ð (ð€“Ðÿ(ð€”Ð (ð€•Ð (ð€–Ð (ð€—Ð (ð€˜Ð (ð€™Ð (ð€šÐ (ð€›Ð (ð€œÐ (ð€Ð(ð€žÐ<(ð€ŸÐ=(ð€ Ð@(ð€¡Ð>(ð€¢Ð?(ð€£ÐA(ð€¤ÐC(ð€¥ÐD(ð€¦ÐE(ð€§ÐF(ð€¨ÐG(ð€©ÐH(ð€ªÐà(ð€«ÐÞ(ð€¬Ðß(ð€­Ðá(ð€®Ðb(ð€¯Ð^(ð€°Ð](ð€±Ð\(ð€²ÐN(ð€³ÐP(ð€´ÐR(ð€µÐS(ð€¶Ð[(ð€·ÐM(ð€¸ÐO(ð€¹ÐQ(ð€ºÐZ(ð€»Ðè(ð€¼Ðç(ð€½Ðä(ð€¾Ðã(ð€¿ÐÚ(ð€ÀÐÛ(ð€ÁÐß(ð€ÂÐÝ(ð€ÃÐá(ð€ÄÐÙ(ð€ÅÐÜ(ð€ÆÐà(ð€ÇÐâ(ð€Èо(ð€ÉÐÀ(ð€ÊÐå(ð€ËÐã(ð€ÌÐæ(ð€ÍÐè(ð€ÎÐë(ð€ÏÐâ(ð€ÐÐä(ð€ÑÐç(ð€ÒÐê(ð€ÓÐå(ð€ÔÐã(ð€ÕÐä(ð€ÖÐÉ(ð€×Ðì( ¥$€Ø*&sñ *0, {# þoò **&só *:sô (<+*j(=+sõ (=+sö **s÷ *0 9(>+ *.þ(>+*"sø *&sù *~sú (?+sû (@+sü *Fo &}ý *R{ý - þoþ **n{ý -}ý þoÿ **j{ý -}ý þo **b} } o &*0f={ o ( Þt  ( Þ u,t { { þo  *t{ {  þo  *B{ þo  *>{ þo  *b}  } o &*‚{ {  s ¥þo *b} } o &*0fA{ o ( Þt  ( Þ u ,t  { { þo  *t { { þ(A+*B{ þo  *>{ þo  *b} } o &*‚{ { s ¥þo *:( } *b{ o  ,( **:( } *F{ o  þ*~}  }! }" o &*0†B{" {# {  (B+( Þt  ( Þ u,t{! { þo  *t{  {" (% {! þo  * "B{! þo  *>{! þo  *~}& }' }( o &*0-I{' s) {( {& s* ¥þo *b}+ }, o &*0AC{, {- , {à {+ s. o/ +{, ( (0 *B{+ þo1 *>{+ þo2 *F}3 o &*0"Es4 {3 s5 ¥oþo *ž}7 }8 }9 }: o &*z{8 {; -{7 þon **ª{8 {; -{8 (< {7 þo **0U{8 {; -F{9 (< {9 {; ,{: {; +,{8 (< {7 þo ***ž}= }> }? }@ o &*z{> {; -{= þon **ª{> {; -{> (< {= þo **0U{> {; -F{@ (< {? {; ,{@ {; +,{> (< {= þo ***b}ö}÷o &*j{öoé {÷þoé *b}A }B o &*0 JGsC sC sC {A sD o {B sE o  sA *:(F }G *0+J{G oH u!,t! {I (J **:(F }K *0+M{K oL u%,t% {M (J **0PsN sO (>+ oP *0RsQ sR (>+ oS *00SsQ sQ sT (>+ oS oS sU *0PsN sV (>+ oP *0&VsW sQ sX (C+ oS *0 9(>+ *0%YsY sZ s[ (C+ o\ *0,ZsN s] (C+ s^ (C+ oP *00\sN s_ s` (>+ oP oa sb *V(c }d }e *n{e {d o of *V(c }g }h *‚{g o  ,{h oi **r(c }j }k }l *¶{j o  ,{k oi *{l oi *V(c }m }n *0)^{m o , {n {o of **r(c }p }q }r *06î{q {# {p (B+ {q (% {r of *V(c }s }t *0CC{t {- , {à {s s. ou +{t ( (0 *:(c }v *B{v oi *:(c }w *B{w oi *r(c }x }y }z *0L`{x oH uB,tB {z {{ o| *t! {y {I of *Šs} s~ s ( (D+*>s€ (E+*0?b/ sw ( *s‚ (:sy s{ s} ( (’+oƒ *V(c }„ }… *0!c{„ {… oH († o‡ *:(ˆ }‰ *0c{‰ (Š o‹ *:(Œ } *0c{ (Ž o‹ *( *"( *(‘ *"(’ *(“ *"(F+*r(” }• }– }— *0G{— {• s˜ (G+{— {– s™ (H+{— oš s› (I+*V(œ } }ž *0$esŸ (C { {ž s  (J+*(¡ *(*:(¢ }*0c{o£ *(ˆ **(Œ **:s‹ (K+*0gs¡ (L+ s© (M+*:(¤ }*0@iu³ ,4o¥ 3{{; +, o¦ s§ (¨ (N+*z:(© }*0j(ª (« {þo¬ *:(­ }*B{þo® *V(¢ }}*j{(< {o¯ *V(° }}*Î{sƒ {s… {{s‡ (± (O+*:(° } *0&ksC s { s‰ (K+(P+*:(² }!*>{!o³ *:(² }"*>{"o´ *:}#( *B{#(Q+&*(¶ *Ns‘ þ’ s· *Ò}$}%}&}'}(})( *0œ5{(o¸ (+9„{$s {$s s“ (R+{)o¹ oº o» ,{'s¼ o½ &*o¾ (S+þ,{&o¾ o¿ &*{%oÀ oÁ &**Ò( }*}+},}-}.}/*0 6{*{+{,{-{.{/s• þ– s· *:(² }0*>{0o³ *:(² }1*>{1o´ *:}2( *B{2(Q+&*(¶ *Ns þž s· *V(à }3}4*0 ‹r(Ä (Å (Æ s {3 s— (T+t#}/o¹ {3s™ {3s› sŸ (R+oÇ {3{4 oÈ *:(¢ }5*:{5oÉ *:(Ê }6*"{6*:(Ê }7*N{7s¥ (U+*V(Ë }8}9*Š{8s£ (K{9s§ (V+*09s, {Ì + Ži , {Ì + s± s³ (W+*>s½ (X+*09s, {Ì + Ži , {Ì + s¿ sÁ (Y+*&(;*0 9(>+ *BsÌ þoÍ *:(Î }:*0 9u(Ï (Ð (Ñ (Ò (Ó {: þoÔ *:(Õ };*B{;þoÖ *V(× }<}=*V{={Ø {<þ*:(Ù }>*0N{>{>{Ø X(Ú -,,¥+(r(p(• o– sÛ z&(D *(D *’(Ü }?}@}A}B*0 J{?{A{B{Ø (å {@{B{Ø Y(å (« {Bs· (Z+*:(Ý }C*6{C([+*V(Ý }D}E*0 Pw{E(\+ sÞ {Esµ {D{Es¹ (ž+(F s» (X+(]+*:(Î }F*0 9u(Ï (Ð (Ñ (Ò (Ó {F þoß *:(à }G*>{Goá *F}â o &*>{â o½ &* * *0FyŒ1sã sä så sæ {ç o¨  (‘+oè ¥*0Qzub ,& {é , rTpsê zoë oì *(rlp(• o– rŠps z0:{ub , {ç oª *(r’p(• o– rŠps z:(c }í *V{í (î oï *:(ˆ }ð *V{ð (ñ oï *:(Œ }ò *V{ò (ó oï *0 ‚, sù {io¨ (ô sõ +sõ (ö (÷ sø sù sú sû (^+oü ,@{ý  -+"   {þ {io« {ho«  (_+Þo þ, oÿ {hoª +oü  þ, oÿ {io« {ho« +s zu  ,  oé &Ü&Ü*BÁ0csÛ sÝ sß (`+ *0cs sã så (a+ *0„ }Ro -( **0_‰, { + s sç  s þ s (  o   s  (ž+(Ñ *:(  }  *R{  (î oã *:( } *R{ (ñ oã *:( } *R{ (ó oã *( *(*( *z( *(*:(  } *R{ o½ &(*:( }P*R{Po¿ &(*:( }Q*R{Qo½ &(*Fo &}R*6þ{Rþ*&}R*V} } ( *v{ þ{R- { o **’( } } } } *0-Š{ { { (b+{ o (D *’( } } }  }! *0-Š{ {  {! (b+{ o" (D *²(Ü }# }$ }% }& }' *0 *{# {$ {% {& {' s( (c+*²(Ü }) }* }+ }, }- *0 M{* {+ {, {- s. {) {* {+ {, {- s/ (ž+(d+*~á*6s (e+*2s (e+*2s (e+*V, o *o *0IŽ(0 ,={1 {v s2 {ss s {vss3 **6s4 (f+*6s5 (¿ *0:{6 , r¶psê z{7 ,*{8 þs9 }7 *0*‘{6 - }6 {7 ,o: }7 ***0J’o; ,(< *{6 ,(< *(= }8 {7 , o> +{? (g+*¦{8 -s@ {? (A }? *{8 *:( }g*V{g{B þoC *:(¡ }h*0 “{D {v{hs o *:( }i*V{i{B þoC *(¡ *0“{D {vs o*:( }j*V{j{B þoC *(¡ *0“{D {vs o *V( }E }F *j{E {¸ {F þoG *r(  }H }I }J *~{J {I {H sK o *V( }p}q*j{p{t{qþoL *r( }r}s}t*~{t{r{ss o *V( }u}v*j{u{u{vþoM *r( }w}x}y*~{y{w{xs o *:(N }O *V{O (h+þoP *:(N }Q *V{Q (h+þoP *Fo &}|*J||(R þ*Vo &s }}*0$•{} ||(R þ, oð &**0Jo &}S (0 }T {T ,(U +}V {S {¹ {v}W *0“—sX (0 {T ,E{T (Y ,{V (U oZ +, {W o*{T {W (ø *,'{T (Y ,{V (U oZ +,Å+¶{W o*j{T {W s[ (ø *V( }\ }] *~{\ {S {¸ {] þoG *V( }^ }_ *~{^ {S {¸ {_ þoG *Öo &}` (a }b }c }d s }e *0-˜{e  (… (i+ Þ, († &Ü&Ü* 00™{e  (… (j+ Þ, († &Ü&Ü&* 0K{` - rÌps¤ z{à *0œ{e  (… (k+ Þ, († &Ü&Ü {f ,C {f {f - {g , oh *oi *sj (l+(*(* .{` þ*6sk (l *0B{` -5om {` -", {Ì +  on ,{` ****&oo *:(p }q *0c{q oi *:(N }r *0tž{r {` -9{r {e  (… {r (m+ Þ, († &Ü&Ü + {r {` -(* {¸ {à þoG *5~Þ*0=¡ u‘- u’-t“{s *t‘ {t zt’ {u z0¢, {ý (_+*s z~ß*0 £s  sv o*0 £s  sw o *0R¤{1 |s(x ,{1 {us¼ þoM *oy Þt  {1 {toL Þ*+ 66sz (¿ *6s{ (¿ *6s| (¿ *:s} (~ *:s (~ *:s€ (¿ *:s (¿ *:s‚ (¿ *2s— (ƒ *~à*Rs„ (n+(o+*zo… ,s› (p+*(D *NoŒ s† (q+*:s‡ (r+*( *sˆ **usþ*s‰ **uqþ*sŠ **urþ*0¥ ur,+ uq,+*:(‹ }è *{è *:(‹ }é *{é *:(‹ }ê *{ê *:( }Œ *2{Œ {è *:( } *2{ {é *:( }Ž *2{Ž {ê *( *0§(s+ ( ( o *Ò( }‘ }’ }“ }” }• }– *0 <{• {» {’ {‘ {“ {” {– ss— þoP *Ò( }˜ }™ }š }› }œ } *0 <{œ {» {™ {˜ {š {› { ss— þoP *:(N }ž *B{ž þ(t+*:(N }Ÿ *0‚«{Ÿ uq-) ur-F{Ÿ ts {¸ {è þoG *{Ÿ tq {¹ {t{é þoL *{Ÿ tr {¹ {u{ê þoM *V( }  }¡ *V{¡ {  þoG *:(N }¢ *0u­{¹ |s(x ,{¹ {us¼ þoM *{v {¸ oo,o{¢ s£ o(*{¢ þoG *V(  }¤ }¥ *0t°{¥ {¦ {t   {¤ o§  Þ!t u ,   Þþ &, þoL *{¨ {¥ þo© *'!V( }ª }« *j{ª {» {« þoP *V(N }¬ }­ *0‰²{¹ |s(x ,{¹ {us¼ þoM *{­ s® {¹ s¯ {¦ {vo o,{¬ s° o(*{¬ {¨ þo© *V( }­}®*V{­{®þoL *V( }± }² *j{² {» {± þoP *V(N }³ }´ *0ö´{¹ |s(x ,{¹ {us¼ þoM *{¹ {v {¹ {t   {³ {´ oµ Þ"t u ,  Þþ& ,2oo,osq o(*þoL *oo,os¶ o(*{» þoP *G^"V( }³}´*V{³{´þoL *V( }· }¸ *j{· {¸ {¸ þoG *r(  }¹ }º }» *0Öµ{º {¹ {t   {¹ oð  Þ!t u ,   Þþ &,<{» oo,{» osw o(*þoL *{» oo,#{» o{º s¼ o(*{º {¸ þoG *'!V( }º}»*V{º{»þoL *V( }½ }¾ *~{½ {¹ {t{¾ þoL *r( }¿ }À }Á *0Ûµ{À {¹ {t   {¿ oð  Þ!t u ,   Þþ &,<{Á oo,{Á os} o(*þoL *{Á oo,#{Á o{À s o(*{À {¹ {tþoL *'!V( }à }Ä *~{à {¹ {u{Ä þoM *V( }Å }Æ *~{Å {¹ {u{Æ þoM *r( }Ç }È }É *0Ö¶  {Ç oð  Þt  u ,   Þþ&,N{É oo,#{É o{È sÊ o(*{È {¹ {uþoM *{É oo,#{É o{È sË o(*{È {¹ {uþoM *V(N }Ì }Í *0 —¸{¹ |s(x ,{¹ {us¼ þoM *{¹ {v {Ì sÎ {Ì sÏ {Ì sÐ {Í {» {¹ {s {vss— þoP *V( }Ñ }Ò *0"¹{Ñ (u+ {» {Ò þoP *V(N }Ó }Ô *0 uº{¹ |s(x ,{¹ {us¼ þoM *{Ó sÕ {Ô {» {¸ {¹ {s{u{vss— þoP *V( }Î}Ï*j{Î{u{ÏþoM *V( }Ð}Ñ*j{Ð{u{ÑþoM *V( }Ò}Ó*0Æ»{Ó{v   {Òo½  Þ!t u ,   Þþ &,?oo,o{Ós o(*{Ó{uþoM *oo,o{Ós‘ o(*{Ó{uþoM *"!V(N }Ö }× *0 K¼{¹ {Ö s“  {× {» {¸ {s{t{vss— þoP *(Ø *0“{Ù {Ú {sþoÛ *:(¢ }Ü *0{Ü þ¦oé *V(Ü }×}Ø*N{×{Ø(F *:(× }Ý *>{Ý þoê *V(Ü }Þ }ß *j{Þ {ß oí þoà *:(á }â *~sã {â sä (ž+(F *:(å }æ *"{æ *01¾oC ( {k , {ç }k+Ð*>sè *0sÀ-h{é ,O {ê uÏ, {ê tÏ{ë sÑ o*{ê tÐ{ì  sÓ o*sí o*(*â{Ø Y(Ú {Ø -{io« {ho« +{Ø *0Oä0 (… (¨ Þ, († &Ü&Ü (v+*10[{Ø Y(Ú {é -(î (ï +{Ø -{io« {ho« + {hoª {Ø *0Gà (… (ª Þ, († &Ü&Ü (v+*)04Æ," {ð oð Þ t   Þ&*sñ þo *  "sò *0BÆ," {ð oð Þ t   Þ&*oÞ oó sô þo *  0c{vsõ o *00È {ö {÷ -{ø {vsù (ú }û **0_Ë{ö oü {û ,0 {ý (þ {ý (ÿ }û  sc o *{ , o> **Fs (w+*>s (w+*>s (¤+*>s (†+*îs§ s €Þs] þ^ s² €ß(x+€às€á*:}ã( *0%Ì(y+ {ã{ (z+o(*:}ä( *0%Ì(y+ {ä{ (z+o(*:}å( *0%Ì(y+ {å{ (z+o(*V( } } *V{ { þoG *V( }  }  *V{  {  þoG *V( }  }  *V{  {  þoG *Ò(c }  } } } } } *0ÀÍ{ ||(R ,(röp(• o– sÔ z(U { oZ ,{ {; +,{ { s (­ ( *~m,&(0 {  {v{ s (ø  *{  {v{ s o *:(N } *0 Ï{¹ {¹ |s(x ,{¹ {us¼ þoM *sC s (U s {  {¸ ({+ {t(|+ {u(}+s o ÞJt ||(R ,(röp(• o– sÔ z{toL Þ&(< {   ,   {ç þoC *(*MH•J:(  } *V{ ( þo *:( } *V{ (  þo *:(! }" *0 cÑ{# {s {v {$ s% {$ s& {u{" {» ss— þoP *V(' }( }) *f{( {) (~+(+*V(* }+ }, *v(C {+ {, s- (€+*V( }ú}û*j{ú{u{ûþoM *V( }ü}ý*j{ü{t{ýþoL *V( }. }/ *j{. {0 {/ þo1 *0D(  }2 }3 }4 }5 }6 }7 }8 }9 *0 8{3 {2 {4 {5 {6 {7 {8 {9 (+*ò( }: }; }< }= }> }? }@ *0 7{; {: {< {= {> {? {@ (A (‚+*ò( }B }C }D }E }F }G }H *0 7{C {B {D {E {F {G {H (I (‚+*ò(J }K }L }M }N }O }P }Q *0¨c{P {io¨ {K {L {M {N {O {P {Q sR {K {L {M {N {O {P {Q sS {K {L {M {N {O {P {Q sT (ƒ+ *:(U }V *0 Ô(„+ {W {V (…+ Ži-{0 ¦þo1 *ŽisÞ sX Ži(…+{ssù{v sY (†+(*:(U }Z *0†×{Z (…+s[ Þ%t  {W {toL (\ s[ Þ (] (^ -- Ži-{0 ¦þo1 *{Z s_ þ(‡+*{` *%(¢ **(ˆ *z(Œ **:( }*R{s¼ þoM *’} }!}"}#( *0SÙ{#||(R -={!{a , {b oc +{ {v{"sé o **:( }$*B{$þoC *²}%}&}'}(})( *0^Ù{(||(R -H|)( {&{a , {b oc +{%{v{'sí o **:(¡ }**0 ÅÛ{D sd {B {u s |s së þì se (f sï þð sg {*sh (i (j Þ%t ||(R - ÞÞ&,{tþoL *(*J5%:(k }+*R{+on (ˆ+*:(Ü },*0c{,{us¼ oM (D *r}-}.}/( *0SÞ{/||(R -={.{l , {m on +{-sõ (ž+(4**V( }0}1*b{0{1þþoo *²}2}3}4}5}6( *0Kc{4||(R -5{3(p |5( {2{v{6sù o **V(q }7}8*0 £á{r ss s  s÷ þø se |s (f {ø {7sû þü st {8(u (v (p (Þ!t ||(R -þ(Þ*@?!V(k }9}:*²{9oñ ,(ˆ+*{9oð {:(;*:(N }w *0‚â{¹ {w uq-*ur-A{w ts {¸ {è þoG *{w tq {t{é þoL *{w tr {u {ê þoM *(x *"(‰+*:(å }y *^{y oz s{ (Š+*:(¢ }| *>{| oë *(} *6(‹+(Œ+*V(} }~ } *0F,{ o€ ( (‹+(Œ+*{~ oª { oí (;s‚ (+*r(å }ƒ }„ }… *0U{„ {ì þ,{„ o€ (Ž+(Œ+*{„ oí {… (;{ƒ {„ s† (+*r(å }‡ }ˆ }‰ *¾{ˆ sŠ {‡ {ˆ {‰ s‹ (¦+(+*:(å }Œ *Ò{Œ {ì þ,{Œ o€ (Ž+(Œ+*(‹+(Œ+*:(¢ } *0ãs¼ (ó { oã *r}Ž } } ( *r{Ž { { þ(+*:(¢ }K*:|K( *²}‘ }’ }“ }” }• ( *0näoñ -d{’ -{” {• s o + |• ( {‘ o– (î Þt  (ñ Þ {“ oã **8Mr(— }˜ }™ }š *0 ‘ç sá s  {š s› þœ se (f {™ {š  s þž sŸ {˜ s  o¡ oñ ,( {™ o– (Œ+*(‘+*r(å }¢ }£ }¤ *Ž(C {¢ {£ {¤ s¥ (’+*V(© }¦ }§ *0*j(ª (« {§ {¦ s¨ þo© *r(© }ª }« }¬ *0 0j(ª (« {¬ {ª {« s­ þo® *’(© }¯ }° }± }² *0 6j(ª (« {² {¯ {° {± s³ þo´ *:(µ }¶ *0*è(· (¸ (¹ {¶ oº (“+*(» *"(”+*(à **(•+*:(¢ }¼ *0c{¼ s¼ (ó oã *²}½ }¾ }¿ }À }Á ( *0 ({½ {¾ {¿ {À {Á þ(–+*Ò( }à }Ä }Å }Æ }Ç }È *0 =|Å {à {Ä {Æ {Ç {È sÉ þÊ se (f *:(¢ }m*0„{moË ( *²(c }Ì }Í }Î }Ï }Ð *0Fã{Ì {Ð oÑ oÒ {Î {Ï s1 o (î {Í oã *²(Ó }Ô }Õ }Ö }× }Ø *0 *{Ô {Õ {Ö {× {Ø sÙ sÚ *:(Û }Ü *šÐ¦(W {Ü oÝ rGp(Þ (t+*V(— }ß }à *0 §ð sá s  {ß {à sá (—+{ß sâ (˜+sã (™+t#}Ø t'}ä oË  oå  oÑ  {ß  oæ (‘+*V(å }ç }è *v(C {ç {è sé (’+*( *(D *:}}( *0î{}{À ,oª **r(  }ê }ë }ì *®{ë (Á |ì ( {ê (î oã *r( }í }î }ï *®{î (Á |ï ( {í (ñ oã *r( }ð }ñ }ò *®{ñ (Á |ò ( {ð (ó oã *r(ó }ô }õ }ö *0 |ò s§ s s? þ@ se (f o¨ {ö  s÷ {ö  sø {ö  sù {ô (ƒ+{ö {õ (š+(›+*V(ú }û }ü *0$þsá (C {û {ü sý (œ+*(Ü *"(x+*:(Ü }Œ*–{Œ, {Œ(õ *(÷ sK (p+*r(þ }}Ž}*0Hó{Ž||(R -{oË ( +{oð Þ t   Þ*;< :}( *>{oÿ &*V( }‘}’*’|‘{’sQ þR se (f *~}“}”}•o &*Â|“(x -!{”||(R - |•( ***:( }–*0Mõ s  {–sO  sS  (—+tÝ}oË sU (+*:( }—*^(C {—sW (ž+*r( } } } *0o{ o ,{ {us¼ þoM *{ o ,{ {t{ o þoL *{ {¸ { o þoG *V} } ( *V{ { (Ÿ+*:(N } *0-÷{¹ { s þ s o (*:(q } *0nø{r { {÷ , rFps¤ z{ {ö  (… { ( + Þ, († &Ü&Ü ,(*{ø þoo *.G:( }Ÿ*B{Ÿþoo *( *6( (¡+*’( } } } } *0ûu6,?{ {  (… { }  Þ, († &Ü&Ü&(¡+*t8 { ,{ { { { (¢+*,¥ý+ rªps¤ z(¡+*/’( } } } } *0 oý{ { o£+ ,  { { oª s (¤+*{ {! { (¥+{ { { { s" (¦+*( *6( (¡+*V(# }$ }% *Î,{$ {% (§+*,¥ý+ rps¤ z(¡+*V( }& }' *0Kþ{& {' o£+ , { s( (¤+*{& {! {& {' s) (¨+*( *6( (¡+*r(* }+ }, }- *01î(. (© {+ {, {- o¨ (f (¢+*r( }/ }0 }1 *0kþ{/ {0 o©+ -{1 /{/ {0 (§+*, { s3 (¤+*(C {/ {0 {1 s4 (ª+*(5 *0=K, {à (Œ+*,¥¦+(r`p(• o– s$ z(Œ+*r(å }6 }7 }8 *Ž{6 {7 {8 o«+s: (¬+*V(# }; }< *z,{; {< (­+*(¡+*V( }= }> *0?K{= o? -({= {> o@ {= {> sA (¨+*(¡+*V( }B }C *0*K{B oD -{B {C (­+*(¡+*V(} }E }F *0B,{E {F (®+*,¥¦+(rˆp(• o– s$ z(Œ+*V(å }G }H *0Fÿ{G o? , {à (Œ+*{G {H o@ {G {H sI (+*V(å }J }K *01ÿ{J oD , {à (Œ+*{J {K (®+*:( }L *f{L { oM (D *(Ü *"(x+*:(Ü }N *Š{N { {N oO s‰ (p+*:(Ü }P *Ž{P sQ {P sR (ž+(d+*:(c }S *0c{S oT *:(c }U *0c{U oT *:(# }V *‚,{V oW ( +(¡+*V(X }Y }Z *01{Z om {Y (å (;{Z s[ (¨+*V( }\ }] *z{] {\ {] s^ (¯+*( *6( (¡+*:( }_ *^{_ o` sa (¤+*(5 *0,K, {à (Œ+*(r¶p(• o– s$ z:(å }b *J{b sc (¬+*:(c }d *0c{d oT *2r psè z2r~psè z2ròpsè z2rdpsè z2rÖpsè z2rHpsè z2r¼psè z2r2psè z0~ (°+ (e (f (YE$ÛZ ” ¥ ÿ  5 } ˜ ë - T (Y 3JtÅ(±+,6{g (l {={g (m (' 8g (YE$füD™~Û(C‹7qùê¿`X_(YE$M(rœp(• o– sÔ   z{ ,Ú{ { -É{‘ ( 8ä tÑ { -£ {I  {J   (U( 8® tÆ { 9Ïþÿÿ{ { :»þÿÿ{‘  {>( 8f tÇ{ :‡þÿÿ{?(! 8= tÈ{ 9^þÿÿ{ { 9Jþÿÿ{ { { :0þÿÿ{‘ {‘ {@(# 8ÐtÉ{ 9ñýÿÿ{ { :Ýýÿÿ{‘ {A(" 8ˆtÊ{B($ 8mtÒ{K  (W( 8NtÌ{D(* 83tË{ 9Týÿÿ{‘ {C{ () 8ñtÍ{ 9ýÿÿ{ { :þüÿÿ{E {‘  (;( 8¤tÎ{F  ( 8‰tÏ{ 9ªüÿÿ{ { :–üÿÿ{G {‘  (- 8A{ 9jüÿÿ{ { 9Vüÿÿ{ { { :<üÿÿ{‘ {‘ (C( 8âtÐ{ 9üÿÿ{ { :ïûÿÿ{H {‘  (K( 8•{ 9¾ûÿÿ{ { :ªûÿÿ{‘ (E( 8[{ 9„ûÿÿ{‘ {b(ó@fûÿÿt´{ { 9Lûÿÿ{ { { :2ûÿÿ{ø{‘ (G( ( 8Ó{ 9üúÿÿ{ { 9èúÿÿ{ { { :Îúÿÿ{‘ {‘ (I( 8t{ 9úÿÿ{ { 9‰úÿÿ{ { { 9oúÿÿ{ {‘ {b(ó@Kúÿÿtµ{ { :1úÿÿ{ù{ú{‘ {‘ (+ 8Æ{ 9ïùÿÿ{ { 9Ûùÿÿ{ { { :Áùÿÿ{‘ {‘ (, 8l{ 9•ùÿÿ{ { 9ùÿÿ{ { { :gùÿÿ{‘ {‘ (O( 8 { 96ùÿÿ{ { 9"ùÿÿ{ {‘ (Þ   9ùÿÿ{ { 9óøÿÿ{ {‘ (Þ !!9Õøÿÿ{ { :Äøÿÿ!{› (œ  {› (œ "!{› (  {› ( {‘ "( 8:{ 9t÷ÿÿ{ { 9`÷ÿÿ{ { { :F÷ÿÿ{‘ {‘ ( 8à{ 9÷ÿÿ{ { 9÷ÿÿ{ { { 9ìöÿÿ{ { { :Òöÿÿ{‘ {‘ {‘ ( 8a{ 9›öÿÿ{ { :‡öÿÿ{‘ (( 8'(( 8{ 9Pöÿÿ{ { 9<öÿÿ{ { { :"öÿÿ{‘ {‘ ( 8¼t½{4  ( 8¡t¾{5##( 8†t¿${ 9¸õÿÿ{ { :¤õÿÿ${6#{‘ #( 8>tÀ{7  ( 8#tÁ%{ 9Uõÿÿ{ { :Aõÿÿ%{8 %{9&{‘  &( 8ÐtÂ'{ 9õÿÿ'{:{‘ { (& 8ŽtÃ({ :Àôÿÿ({;(% +gtÄ){ 9™ôÿÿ{ (±+9ôÿÿ{g (l ){<{‘ {g (m ((  {bs»*0º{b (óE8ut´ {ø(h *tµ {ù {ú s (i *t³{ö{÷{csj ŒUsk (l *(rÂp(• o–   râps z"(¬ *0-(ï  , {m (²+-*{m ¥ (n *0%(ï  ,{m u\ ,  (o **0-(ï  , {m (³+-*{m ¥“ (p *0- (ï  , {m (´+-*{m ¥’ (q *0- (ï  , {m (µ+-*{m ¥£ (r *0-(ï  , {m (¶+-*{m ¥¤ (s *0-(ï  , {m (·+-*{m ¥¦ (t *0-(ï  , {m (¸+-*{m ¥¥ (u *0-(ï  , {m (¹+-*{m ¥§ (v *0-(ï  , {m (º+-*{m ¥b (å *0-(ï  , {m (»+-*{m ¥¨ (w *0-(ï  , {m (¼+-*{m ¥‘ (x *0-(ï  , {m (½+-*{m ¥© (y *0M(Ø  ,A{z (Y"32{z tÑ {JÐ(W (p+,{J (p **0Æ(ü  9­{ÿ ( (æ  9–{ ( (Ü  9{ { (  (å+,þ+,V{ÿ ( {ÿ ( { { ( X(¼  (” ( (• s *( s *0‚{b (ó3otµ {ù {ú  (¼ (” { -!(• ( ( s ( *(” (• s ( **0z(Ý  ,n{k (q {k (l (»  ,(ž so (p *(á ,{Ÿ so (p *(ž ( so (p **6sÇ (¾+*6sÉ (¿+*0N (à  ,{‡ (ˆ (®  ,{„ ,*{‡ (‰ {‡ (Š s{ (| *0N (à  ,B{‡ (‰ (®  ,.{„ ,&{‡ (ˆ {‡ (Š s{ (| **0®!sË (¾+ 9{b (d (ù  ,/{_ (a o , o + sÍ *(ù ,{_ (a +Â(rìp(• o– rps z(ù  ,Ó{_ (a 8„ÿÿÿ"(í*:oý (í*:o} (í*(~ *"(½ *( *"(¾ *(~ *"(½ *r(¾ }Î}Ï}Ð*0¦ï(ù  9—{_ (a {Îo‰ o‰ 38{Ï, o ,{Ðo (+++{Î(++,<{_ (` {_ (a {_ (e o¿ ( + sÀ (Á **0O"{Þ ,E {Þ {Þ -{/ (À+s€ ( *{Þ {/ (2 +³*6(‚ (Á+*~I*~J*~K*2ÐÅ(W *2Ð(W *Z(Ô (p+,(Õ **02#(Ö  (Ö  (Ñ %¤%¤þoX *05${b (ó3#t³ {÷{ -{ö (ƒ **0X%{b (ó3Ft³ {÷{ ,2{÷ { { -{‘ {ö s„ (… **0x&{b (ó3ft³ {÷{ ,R{÷ { { ,>{ { { -* {‘ {‘ {ös† (‡ **0œ'{b (ó@‡t³ {÷{ ,s{÷ { { ,_{ { { ,K { { { -5{‘  {‘ {‘ {ösˆ (‰ **0&({b (ó3t´ {ø(Š **0E*(Ú  ,9{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **05+{b (ó3#tµ {ú {ù s ( **0X,{b (ó3Ft³ {ö(Y30{÷{ ,#{÷ { { -{‘ (X **0R.(Û  ,F{ (‘ (Y33{ (’ { (“ { (” s• (– **06/{b (ó3$t³ {ö(Y3{÷ (— **0P0{b (ó3>t³ {ö(Y#3({ötÒ {÷{ -{K („ **0Q1{b (ó3?t³ {ö(Y3*{öt½ {4 {÷ s˜ (™ **0Q2{b (ó3?t³ {ö(Y3*{öt¾ {5 {÷ sš (› **0Q4(Ù  ,E{œ ( (Y32{œ ( t¿ {6 {œ (ž sŸ (  **0R5(Ù  ,F{œ ( (Y 32{œ ( tÁ {9 {œ (ž s¡ (¢ **0R6(Ù  ,F{œ ( (Y32{œ ( tÍ {E {œ (ž s£ (¤ **0R7(Ù  ,F{œ ( (Y32{œ ( tÐ {H {œ (ž s£ (¤ **0R8{b (ó3@t³ {ö(Y3*{ötÎ {F {÷ s˜ (™ **0}9{b (ó3kt³ {ö(Y3U{÷{ ,H{÷ { { ,4{ { { - {‘ {‘ s{ (| **0}9{b (ó3kt³ {ö(Y3U{÷{ ,H{÷ { { ,4{ { { - {‘ {‘ s{ (| **0þ:{b (ó@ét³ {ö(Y@Ð{÷{ 9À{÷ { { 9©{ {‘ (Þ 9Ž { { 9~ { {‘ (Þ ,d{ { -V{› (œ {› (œ {› (  {› (  {‘     s¥ (¦ **0¤;{b (ó@t³ {ö(Y@v{÷{ ,i{÷ {‘ {b (ó3M t´{ { ,8{ { { -"{ø{‘ s ( **0R<{b (ó3@t³ {ö(Y"3*{ötÑ {I {J s§ (¨ **0A={b (ó3/t³ {ö(Y"3{ötÑ{I (© **04>(Ù  ,({œ ( (Y3{œ (ž (X **0F*(Ú  ,:{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **0x?(Û  ,l{ (‘ (Y 3X{ (’ (Þ  ,D{› (œ {› ( { (“ { (”  sª (« **0F*(Ú  ,:{‹ (Œ (Y!3&{‹ ( {‹ (Ž s{ (| **08@{b (ó@§t³ {ö(YE$-*{ötà {; {÷ s¬ (­ *{ötÂ{÷{ ,¹{÷{: {‘ { (X s¬ (­ *0&A{b (ó3ft³ {ö(Y 3P{ötÅ {÷(±+ ,5 {g (l {= {g (m s® (¯ *{b(ó@™t³{ö(Y @}{ötÄ {÷{ ,a{÷{ (±+  ,F {g (l  {<{‘   {g (m   (X  s® (¯ **0>B{b (ó@§t³ {ö(YE$0*{ötÇ {÷{ -ä{?  s° (± *{ötÆ{÷{ ,¶{÷{ { - {‘ {> (X s° (± *0„C{b (ó@§t³ {ö(YE$P*{ötÉ {÷{ ,ä{÷ { { -Ð {‘ {As² (³ *{ötÈ{÷{ ,–{÷ { { 9ÿÿÿ { { { :fÿÿÿ{‘  {‘ {@(X s² (³ *0RD{b (ó3@t³ {ö(Y3*{ötÊ {B {÷ s9 (: **08E{b (ó@§t³ {ö(YE$-*{ötÌ {D {÷ s´ (µ *{ötË{÷{ ,¹{÷{‘ {C { (X s´ (µ *0E*(Ú  ,9{‹ (Œ (Y3&{‹ ( {‹ (Ž s{ (| **03>(Ù  ,'{œ ( (Y3{œ (ž (X **0UF(ú  ,I{k (q (Þ  ,5{› (œ {k (l {› (  s¶ (· **0rG0( s ( *(Þ  ,PY{› ( (ý  ,9{“ (” {› (œ {“ (•  ( s ( **0“H(Ù  9„{œ ( (Y3p{œ ( tÏ {G {œ (ž ( oq Ži (ý ,,{“ (” {“ (• s¸ (¹ ***0 I(û  9‘ss {W (~+ 9z{“ (• {b (ó3`t³ {ö(Y3K {÷{ ,> {÷{“ (” { {‘ (ý+s  (º **0DK0(D (\ su (Â+ ,{» *r@po_ (› rhps z0DN0(D (] sw (Ã+ ,{¼ *r|po_ (› r ps z0FOoJ /+ Žiþþ,!(r¼p(• o– rps z£*0FP(+ o= þ, Žiþ+,£*(rœp(• o– sÔ z0QŒ0¥é{b (óEK?t´ {øoâ*tµ {ù {ú oâ(+þ(× *t¶{û*t³{ö{÷(YE$‡é"N->TšpëæÛñ !,7Oj…ï4–D99)уä9_{ ,:{ { ,({   { { -{‘ ( *r¢ps¤ zŒ0¥é(ü   , {ÿ ( þ(+*r¢ps¤ z{ ,³{ { ,¡{   { { 9‡ÿÿÿ {   { { :mÿÿÿ {‘ þ(+*Œ0¥é(ÿ   , {½ (  þ(+*r¢ps¤ zràps¤ zt½{4  *t¾{5oI*Ð(W *tÑ{J  *tÁ{8 {9 (Z£*tÀ{7  *tÃ{;þoc *tÂ{:þoc *Ð(W *Ð(W *tÆ{>þo¾ *tÇ{?þo¾ *Ð(W *Ð(W *tÊ{Bþo7 *tË{Co¿ (Ö *tÌ{Do¿ (Ö *tÍ{E  *{ 9¡ýÿÿ{ { 9Œýÿÿ{   { { :rýÿÿ {‘ þ(+*Ð(W *tÎ{F  þoÀ *tÏ{G  *tÒ{K  *Ð(W *{ 9ýÿÿ{ { :îüÿÿ{‘ (+ (Ò % ¤þoX *{ 9´üÿÿ{ { 9Ÿüÿÿ{   { { :…üÿÿ{‘ þ(+*{ 9füÿÿ{ { 9Qüÿÿ{   { { 97üÿÿ {   { { :üÿÿ{‘ þ(+*Ð(W *(rp(• o– sÔ z0¹(ë (ž s»*0¹(ž (ë (ž s»*0¹(ž ( (ë (ž s»*0%¹(ž ( ( (ë (ž s»*0+¹(ž ( ( ( (ë (ž s»*0&(p+-Œ0(Á r:ps z*0&oÅ -Œ0(Á r:ps z*0AŽio£ .!(rTp(• o– rxps zsy (Ä+(Å+*¦(U,oƒ (U+, oƒ +Ù*0=’o7 (  (+oÅ -!(r‚p(• o– rps z*0®R(+ oc , od + (Ñ r°p(r´p(• o– (Æ+(+ o= þ, Žiþ+,( £r°p(rÞp(• o– (Æ+*(rp(• o– r°ps z0/S(+ oâr8p(r@p(• o– (Æ+*0¹(í (ž s»*0#¹(A(ž ( (ë (ž s»*žo ,Œ0(à +Œ0(U*0¹(ï (ž s»*r(M( ( ( *Z( (( *Z( (( *0WT(Z( + o£ oÄ .!(rnp(• o– rxps zs{ (Ç+(!( *0nV(È+ Œu,+ rµps zŽi  Y2# £é(+¤XX3Ý (Y (!( *0rW(+r–p(r¨p(• o– (Æ+(Z /+ Žiþþ,!(rÔp(• o– rps z(#( *0[O0(D (\ o£ Ži.!(rp(• o– rxps zs} (É+(Ê+(( *0dO(Ë+,sÅ zoJ o£ Ži.!(r:p(• o– rxps zs (É+(Ê+(( *0I(Ë+,sÅ zoI(+rhp(rŠp(• o– (Æ+(( *0i(+(+r´p(r¾p(• o– (Æ+Ð(W (+r´p(ròp(• o– (Æ+(( *ns (Ì+(=( *0O(Í+,sÅ zoÆ ,!(rp(• o– rLps z( (-( *0F(Í+,sÅ zoÆ , (/( *(rXp(• o– rLps z0r(Í+,sÅ z(+o¾ rŽp(ršp(• o– (Æ+oÆ , (3( *(rXp(• o– rLps z0{(Í+,sÅ z(+o¾ rŽp(ršp(• o– (Æ+oÆ ,!(rp(• o– rLps z( (1( *®(Î+,sÅ zoq ( (5( *0„(+,sÅ zoÇ -!(r¼p(• o– rÜps zoÈ ( oý oÉ , ('( *(rXp(• o– rÜps z0’(+,sÅ zoÇ -!(r¼p(• o– rÜps zoÈ ( oý oÉ ,!(rp(• o– rÜps z( (%( ( *0”(+,sÅ zo[ -!(rèp(• o– rÜps zoÈ ( o} oÉ ,(+(ž ( (+( *(rXp(• o– rÜps z0¢(+,sÅ zo[ -!(rèp(• o– rÜps zoÈ ( o} oÉ ,!(rp(• o– rÜps z( ()(ž ( (+( ( *0b(+,sÅ zoq ( oÉ ,!(rp(• o– rps z( (7( ( *0T(+,sÅ zoq ( oÉ , (9( *(rXp(• o– rps z0¢Ðb(W (+rp(r*p(• o– (Æ+Ðb(W (+rdp(r*p(• o– (Æ+Ðb(W oârzp(r‚p(• o– (Æ+(Q( ( *0lÐ(W (+rÎp(rÚp(• o– (Æ+Ð(W (+r p(r p(• o– (Æ+(S( *0TX(  oq sƒ o¿ (Ï+ (+r2 p(r8 p(• o– (Æ+(?( *0( (  (( *0RY{ ,, { { -{‘ ( *( ( *Ð(W (U( ( *0K[s… (Ð+(Ñ+ (Ê (Ë ((( (  s‡  (ƒ+( *rp p*zoÄ oÄ 3 s‰ (Ò+**Bs‹ þoÌ *foc , þo= **Roc , o= Ži**0…^>ox (Ó+ (4  s (Ô+ {Í , {Í {Í - {Î *s“ (Õ+,{] *(rš p(• o– sÔ z0î`(p+,!(r p(• o– rê ps z:°oc , o= + s• (Ö+(ë+ (×+ >oÏ , (þ Þ Þt uÆ,Þþ,({]  o¿ o , {] *(6 *(6 *h#‹0)a:oÐ ,*rú poÒ (›sÔ z0)b:op ,*r"!poÒ (›sÔ zj{« -*(ë+þoX *Bs— þoÌ *0 vc(:  (Ø+ (Ù+ Œ0¥(Ö  >(ë+oÑ (rJ!p(• o– (` Œ,*rv!psÒ z0Dd(:  >oÓ (rˆ!p(• o– (` Œ3,*r®!psÒ z0Je(4 (Ú+ 6(ë+oÔ (r¾!p(• o– Œp,*rð!psÒ z0Mf(:  (Ø+ 6(ë+oÔ (r¾!p(• o– Œp,*rð!p sÒ z0\hEF{Þ - rö!ps¤ z {Þ {/ Y(Û+  (Õ (2 (Ö s× *(‚ s× *0//!(r6"p(• o– rps z(Û+*ro¿ Ži-*(ë+þoz *0ol(Ø (Ù (Ú (Û (Ü o= Ži(Ü+(Ý (Þ (:   (7   þ(B *ÆoÇ ,oý þoÉ *o[ ,o} þoÉ **0€m{« ,U {« {« ,F{« {« {« -2{¬ {¬ (Ñ % ¤%¤þoX *(rd"p(• o– rxps z0Wn{« ,. {« {« -{¬ 3 þoÀ *þoß *(rˆ"p(• o– rª"ps z0Hoo ,*s™ oà (Ý+ -r²"po (› rê"ps z{x *~L*0jq{D(Þ+ rp(” ,(H *rep(” ,{E*(á ,*oÒ (rø"p(• o– (` sÔ z0r{D(Þ+ (I  (G *0Ls{Cop YE r$#ps¤ zs› *(J  s *(w  sŸ *:sâ (ß+*0lx{Cop E r@#ps¤ z(w  s£ *s¥  s§  (K oã sä (å (æ s© *0ys« (ç (à+ s­ *V{Þ -*rP#ps¤ z0,z{Þ , {Þ {Þ - {/ *rP#ps¤ zž{é{êoè {êX{ës² *N(á+s³ s² *0ƒ{Cop E Sc}—§Ërº#ps¤ zsµ  s·  (] (N oé sê (ë (ì (í  s» *(U s½ *(T (S s¿ *(M (w   sÁ *(S sà *(S sÅ (î (â+sÉ *(M sË *0-„{D(Þ+ (M  {Cop þ sÍ *0W(w  sÏ *0’(J  {D(Þ+ sÑ *0’(J  {D(Þ+ sÓ *0†(W  (w  sÕ *0=’(J  {D(Þ+ {Cop 3 (8 ('*(9 (9*09‡s×  sÙ  (J oã (M {D(Þ+(w sï *–(J {D(Þ+(M (N sð *0gŠ{Cop E Þ#rÈ#ps¤ z(Y  (YE$ r¢ps¤ ztÌ {D*tà {; þoý *(Z (Ø (Ü (Ù (Û (Ú   (7 *(J (N sñ   (ò  (ó (> *0)Ž{Cop  E lr‚ˆ˜¨¸ÈØÞ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMsÛ râ#psô (ã+ oõ sÝ *sß *sá *sã *(Z  (Ø  (Ü  (Ù  (Û  (Ú så *sç *sé *së *sí *(V   sï *(J {D(Þ+sñ *só *sõ *s÷ *sù *([   (ö  (÷  (ø  (ù   sû *(J {D(Þ+sý *sÿ *s *s *s *s *s *{Cop þ  s *{D(Þ+s *(w (ú (û   s *(x (ü (ý s *(w ÑiÑs *(w gs *{Cop Òs *(w hs *(w Ñs *(w s *(w s *(x s! *(x s# *s% *([   (ö  (÷  (ø  (ù   s' *(J (N sñ (ò (ó   s) *s+ *(Y s- *s/ *(J s1 *(V   s3 *(W s5 *(X   s7 *(W s9 *s; *(w s= *~M*~N*0oŒ sC  sE *"sG *0#‘{b (óE9{*tµ {ù {ú  (b (ï{cs»*t³{ö{÷sI (ñ+(ë{cs»*t¶  {û  {ü  /+  Žiþþ, r$$ps¤ z £é (+   (p+-,(rT$p(• o–   (þ   r:ps z *0œ’{b (óEL*t³ sK {÷(ä+*t´ {ø (å+,+ (å+,* oÿ *tµ{ù {ú oÿ 8dÿÿÿ0 WŽi sM *0¢•{b (óEA¥~t³ {ö {÷ sS  (ñ+(ë{cs»*t´{øo   ,C   {W  (€+(€+ (c   (æ+  o , * o sO z*tµ{ù{ú oÿ  (e (ï{c  s»ÝŒt u~,vt~(R (å+,[oàoâsß(í(ž s»sU  (e (ï{c  s»Þþþ**á0Œ0 G–o i (\+ sÞ {Ø /%{Ø {Ø {Ø Yo X(Ú +Ò*~O*~P*0/˜(a o sl (ç+(g s þo *05š(h o -st (è++ (h o s *0 ¤Œ0,+ rÙps zo7 oŒ o o o‰ (Z  (h (… (h o s Þ, (h († &Ü&Ü (  ( , ( 8¹uÊ,( +Psn sp   o  Þ t   uf  , \ Þþ   (é+(ê+(ë+(h (… (j Þ, (h († &Ü&Ü( ( , ( + -*{ {?o7 (5 u$,o , o¿ Ži++XŽi.>rd$poT þboÒ ŽiþboÒ (œrŒ$ps z(d (á+s² o (X *(>'e½ Ç 0ƒ¥Œ0,+ rÙps zu$ ,4 o7 (4 o , o¿ +(ì+ (k *up , o7 (4  (k *(k *0(§(ë+(R  (` (í+ (È+(b *0BÐ0(W (+râp(rš$p(• o– (Æ+{b{cs *†o &}Ñ}ÒX}Ó*0>W{Ò{Ó2 rÄ$ps¤ z{Ñ{Ò£¦i {ÒX}Ò*0¦¨{ÒX{Ó1 rà$ps¤ z{Ñ {Ò(å {ÒXY(å {Ì  {Ì YX¦ Y 2"  X£¦¤¦ X  X3Þ {ÒX}Ò*0)( {Ñ{Òo {ÒX}Ò*( *"(Þ *:(Z }Ô*NoT {Ô(” *:( }Õ*NoH{Õ(” *( *0 .or (+rxp(r(%p(• o– (î+*( *0 )(+rxp(rJ%p(• o– (Æ+*( *0 .oc (+r^%p(rh%p(• o– (Æ+*( *0 .oc (+rœ%p(r¤%p(• o– (Æ+*:( }Ö*0 .{Ö(+rÖ%p(rè%p(• o– (Æ+*( *Bor þ(× *( *0©(œ ( ( *( *0©(œ ( ( *(! *.þo *:(" }×*:{×£*:(Ó }Ø*NoT {Ø(” *:(# }Ù*B{Ùþ(×+*($ **þor *’(Ó }Ú}Û}Ü}Ý*0šªo , o¿ + Ži{Ú.*{Ý(ì+ s {Û(Ö+ {Ü(×+ s‘ oq (Ä+(ï+o¿ oÄ oÄ .* (& (& (2 *:(# }Þ*B{Þþ(×+*:(" }ß*:{ßo% *:(\ }à*No_ {à(” *(& **þ(E *:(& }á*B{áþ(: *:(& }â*B{âþ(F *:(' }( *B{( þo *:() }ä*B{äþo* *(+ *"(M *:(, }å*N{å(ç (à+*V() }æ}ç*n{æ{ç(ð+þo- *(+ *"(M *:(. }è*:{è(ð+*{é*{ê*{ë*r( }é}ê}ë*:(" }ì*:{ì£*(/ *"(S *:(0 }í*N{í(î (â+*:(1 }î*B{îþo *r(2 }ï}ð}ñ*0B«{ð{ëo3 {ïo4 s¹ {ñ(ñ+(ë (ž s»*:(2 }ò*0¹{òo5 (í (ž s»*V(2 }ó}ô*03¬{óo5 {ô(Q o (ï (ž s»*V(2 }õ}ö*0*¹{õ{ëo6 {ö(ñ (ž s»*:(2 }÷*N{÷o ( *(/ *"(S *:(1 }ø*B{øþo *V(2 }ù}ú*0:­{ùo {b {csÇ {ú(ñ+(+ s»*:(2 }û*Šr&p{û{ëo6 (ä( *r(7 }ü}ý}þ*¦{ü{ý{ëo6 {þ(n sß*:(7 }ÿ*N{é{ÿo8 *V(9 }}*f{(: {( *V(: }}*f{(: {( *V(9 }}*f{o; {( *(+ *"(M *:(, }*N{(ç (à+*(< *"s¤ z:(= }*B{þo4 *(= *6(ò+(;*(= *:(ó+(C*(= *:(ó+(Q*²(= }} } } } *0 C®{{ { { { sï (C  oÉ ,(9*(7*(= *6(ò+(=*(= *6(ò+(?*(= *:(ó+(S*(= *:(ó+(*:(= } *N{ o> ()*V(= }}*0*¯{{(=  oÆ ,(/*(-*(= *:(ó+(*(= *:(ó+(*(= *:(ò+(U*(= *6(ò+(W*’(= }}}}*0 6°{{{{(ô+ (D ,(+*()*V(= }}*0*¯{{(=  oÆ ,(3*(1*(= *:(ó+(E*(= *:(ó+(I*(= *6(ò+(K*(= *:(ó+(O*(= *:(ó+(M*(= *:(ó+(G*:(= }*0S(ò+ {(õ+*:(= }*0S(ò+ {(ö+*:(= }*0S(ò+ {(÷+*:(= }*0S(ò+ {(ø+*:(= }*0S(ò+ {(ù+*:(= }*0S(ò+ {(ú+*:(= }*0S(ò+ {(û+*:(= }*0S(ò+ {(ü+*:(= }*0S(ò+ {(ý+*:(= }*0S(ò+ {(þ+*:(= } *0S(ò+ { (ÿ+*:(= }!*0S(ò+ {!(+*:(= }"*0S(ò+ {"(+*(= *f(ó+Ð(W (+*’(= }#}$}%}&*0 6°{#{${%{&(ô+ (D ,('*(%*V(= }'}(*f{'{((? (5*(= *:(ó+(*:(= })*07±{)(Y3!{)tÌ {D (B (9*{)*(= *:(ó+(*:(= }**N{*(: (*:(= }+*N{+o> (%*:(= },*N{,o; (*:(= }-*N{-o> (%*:(= }.*N{.o; (*(= *6(ò+(!*:(= }/*N(ò+{/(#*(? *N(\ (S s@ *(A *J(^ (B (+*(/ *"(S *V(C }0}1*R{0{1(+*:(D }2*N{2(_ (+*:(á }3*:{3(b *:(E }4*>{4(c *V(" }5}6*034{6/ {5£*(r&p(• o– sÔ z:(‘ }7*(‘ *0 (’ *{7*V(á }8}9*R{8{9(e *r(  }:};}<*ª{;(å+, {<(X *{:þo **o &*00²(F (G (;(+ bX, (“ +a*05³(F (G (F (G (:(+, (” **"s[ *V( }=}>*{=*{>*&*0C´þ,: &  ¹y7ž{>bcXXX ¹y7ž{=(+bcXXX **6(:o_ *0Fµþ,7u‚ ,+&  {={=( +,{>{>þ***þþ*bo o o‰ (Z *0A¶þ,2þ,*&  {={=( +,{>{>þ***þþ*0·u‚ ,oc **sf *:( }?*{?*&**o &*6(;o_ *:(:oa *(L *0`¹(M (N o o o‰ (Z   (h (… (h (e oO Þ , (h († &Ü&Ü*("J:(P }@*0+º{@{@oQ (f  (a o sR *:(S }A*®rp poT ,(g {As oU þ**(L *07»(M (N (h o o o‰ (Z (e oV *:(W }B*04¼(X (Y sr (ç+(g {Bs o *0A½{Cop  {Cop  {Cop  {Cop  b`b` b`*06W{Cop  0* ¿0_b{Cop `*(v *0"¾(w j!ÿÿÿÿ_ (w j  b`*0Í¿(w  /+ Žiþþ9¥r>&pŒb ,/u™ , ( ¥so; +oÒ +rp(Ç rt&p(Ç ŽiŒb ,/u™ , ( ¥so; +oÒ +rp(Ç s¤ z£0*0‘À{Cop  EQXr–&pŒb ,/u™ , ( ¥so; +oÒ +rp(Ç s¤ z(À+*oZ (2 8oÿÿÿ0vÆŽiso \s  s€  s‚  o[ {C(w oq s\ (] (^ Žiso ( +s þoZ *{C*{D*{E*r( }C}D}E*(_ *N{C(w or *:(` }F*N{F(a ( +*0QÈob -{c -*( +sd (e * {f (g (h {f (i +¯0Ê (j (+*0LÌok -{c -*sl (m * {n (Ö {n (× (h +´0Î (j (+*Fso þ(+*>sp (+*:*>*6*0*¢Ðr(W oq ,rGp6op ,***0;(Ž -!(rÂ&p(• o– r2 ps zrGp6þop *:(r }s *Z{s s þot *:(u }v *Z{v s þow *07´ ~îsx oy ,*sß ~îsx oz *0Ï (óEAg¨t³  ¹y7ž{÷o{ bcXXX ¹y7ž{öoZbcXXX *t´  ¹y7ž{ø(+bcXXX *tµ  ¹y7ž {ú(+bcXXX ¹y7ž {ù(+bcXXX *t¶ ¹y7ž{übcXXX ¹y7ž{û(+bcXXX *0þÐ(óECj©t³ t³ {ö {ö  o\,{÷{÷oÆ **t´t´{ø{øþ(+*tµtµ {ù {ù(+,{ú {úþ(+**t¶ t¶  {û {û(+, {ü {üþ**0Ò (YE$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *t½  ¹y7ž{4(+bcXXX *t¾  ¹y7ž{5(+bcXXX *t¿  ¹y7ž {6(+bcXXX *tÀ ¹y7ž{7(+bcXXX *tÁ ¹y7ž{9bcXXX ¹y7ž{8(+bcXXX *t ¹y7ž{:(+bcXXX *tà ¹y7ž{;(+bcXXX *tÄ ¹y7ž{<(+bcXXX *tÅ  ¹y7ž {=(+bcXXX *tÆ  ¹y7ž {>(+bcXXX *tÇ  ¹y7ž {?(+bcXXX *tÈ  ¹y7ž {@(+bcXXX *tÉ  ¹y7ž {A(+bcXXX *tÊ ¹y7ž{B(+bcXXX *tË ¹y7ž{C(+bcXXX *tÌ ¹y7ž{D(+bcXXX *tÍ ¹y7ž{E(+bcXXX *tÎ ¹y7ž{F(+bcXXX *tÏ ¹y7ž{G(+bcXXX * * * * * *tÐ ¹y7ž{H(+bcXXX * * * *! *tÑ" ¹y7ž{J(+bcXXX ¹y7ž{I(+bcXXX *tÒ# ¹y7ž{K(+bcXXX *0Ó(YE$%Ho–ÏöDk’¹à.U|£ÊñW*t½ t½ {4{4þ(+*t¾ t¾ {5 {5þ(+*t¿t¿{6{6þ(+*tÀtÀ{7{7þ(+*tÁtÁ {8 {8(+,{9 {9þ**t t  {: {:þ(+*tà tà  {; {;þ(+*tÄtÄ{<{<þ(+*tÅtÅ{={=þ(+*tÆtÆ{>{>þ( +*tÇtÇ{?{?þ( +*tÈtÈ{@{@þ( +*tÉtÉ{A{Aþ( +*tÊtÊ{B{Bþ(!+*tËtË{C{Cþ("+*tÌtÌ{D{Dþ("+*tÍ tÍ! {E!{Eþ(+*tÎ"tÎ#"{F#{Fþ(+*tÏ$tÏ%${G%{Gþ(+*tÐ&tÐ'&{H'{Hþ(+*tÑ(tÑ)({I){I(#+,({J){Jþ(+**tÒ*tÒ+*{K+{Kþ(+*0.ÔoÂ(– (— rä&p(2(H(L(?*n, o_ +oT (2*05+{b (ó3#tµ {ú {ù s ( **®,r[ps| ($+o} (2*oH(2*®,r[ps~ (%+o (2*oT (2*Â,r[ps€ (&+o (2*o7 oT (2*®,r[ps‚ ('+oƒ (2*oT (2*®,r[ps„ ((+o… (2*oT (2*"s­ *0Õþ9{ñ {ñ @í(óE7]št³ t³ {ö {öo],{÷ {÷þ()+**t´t´{ø{øþ(*+*tµtµ{ù{ù(*+,{ú{úþ(++**t¶t¶ {û {û(,+,{ü {üþ****0Ó(YE$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*t½ t½ {4{4þ(,+*t¾ t¾ {5 {5þ(-+*t¿t¿{6{6þ(-+*tÀtÀ{7{7þ(,+*tÁtÁ {8 {8(,+,{9 {9þ**t t  {: {:þ(.+*tà tà  {; {;þ(.+*tÄtÄ{<{<þ(.+*tÅtÅ{={=þ(.+*tÆtÆ{>{>þ(/+*tÇtÇ{?{?þ(/+*tÈtÈ{@{@þ(/+*tÉtÉ{A{Aþ(/+*tÊtÊ{B{Bþ(0+*tËtË{C{Cþ(1+*tÌtÌ{D{Dþ(1+*tÍ tÍ! {E!{Eþ(,+*tÎ"tÎ#"{F#{Fþ(,+*tÏ$tÏ%${G%{Gþ(,+*tÐ&tÐ'&{H'{Hþ(,+*tÑ(tÑ)({I){I(2+,({J){Jþ(,+**tÒ*tÒ+*{K+{Kþ(,+*0µ!€í s† €îÐñ(W od €Iб(W €K(Ó oc , (Ó od +(Ó €JÐb(W oŒ €Ls? €MsA €N sW s‡ €O si sˆ €P*:(‰ }R*B{RþoÂ*(Š *vrî&p(3(?(?(L*(‹ *6oà(2*( *"(› *:(~ }S*0G{S0( s ( *(›  ,Z{SY(¡ {› ( o’ ,9{“ (” {› (œ {“ (•  ( s ( **(Œ *"s¤ z( *0Ö(ˆ (‡ (/ *( *0©(œ ( ( *:sŽ (3+*&(4+*Bs (5+*BsÏ (6+*BsÑ (7+*6sÓ (8+*6s (9+*:s× (:+*:sÙ (;+*>sÛ (;+*6(Ü (à+*6(Ý (à+*6(Ü (á+*6(Ý (á+*:(‘ }T*0Ø{ToÖ *:(’ }U*0Ø{Uo“ *V(Û }” }• *j{” {• oÒ þo– *:(— }˜ *0 &ØsÕ sà sÅ {˜ s™ sš *(¢ **r(› }œ } }ž *z{ sË {ž {œ sŸ *:(’ }\*0Ø{\o“ *:(’ }]*>{]o  *(¡ **(¢ *"s¤ z(¢ **(¢ **:(¢ }^*:{^o£ *0ûÚ,{`,++ X {_- {aþ+,7,1 {Ì  Y2 o¤ &XX3é++,${`,{¥ o¤ &+ + -o¤ &{_- {a+,E,? {Ì  Y2%{a,0+ o¤ &XX3Û++*0<W / 0(¦ X+x3a+A(¦  YX (§ þo¨ *0,Û,( {Ì  Y  2 o¤ & X X3í**0,Û,( {Ì  Y  20o¤ & X X3í**>, (ß **0íÜXYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (Ý X  !6"\i(<+&^\+Ñ{_(á *0œÝXYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(Ý X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(<+&][8vÿÿÿ{_(á * *v££(Xþ(i*~®*–oi ,+oj ,+ok þ*®(ç , oc +,od (æ þo **0AÞ(è , o= s© *oƒ ,+Û(rò&p(• o– sÔ z *0 :ào\ (é  (ª rGp %¤( þo« *0'á(é  (¬ £ s þ(å *0Eâ(é  (¬ £ (é  (¬ £sþ(å *0)á(é  (¬ £ sþ(å *F00 9þþ**0öäo­ 2(r'p(• o– s® zo¯  YE#YEt+YEJ-YE&0YE*( X8wÿÿÿ( X8`ÿÿÿ+(r ( X8Cÿÿÿ(rP'p(• o– s® z (r ( X8 ÿÿÿ0Aä2(r’'p(• o– s® zo¯ (ï , X+Á*0bä2(r’'p(• o– s® zo¯ (ï ,X(ñ s° **YEs° *Xs° *0Jæo¯ .YE s± *X(ò  (² (³ s° (´ s± *0lä2(rÐ'p(• o– s® zo¯ (ï , X+Á*YE(ó sµ *X(ó sµ *~¯*0é(ô  (¶ (· (¸ (· (¹ (· (º  3+F, (» +: Y(å {Ì YXo¼ (õ ¥s(½ (å (» 9z{¾ (³ {¾ (² , (» +T X(å Y(å {Ì  {Ì     YXo¼ (õ ¥s(½ (å (» +s¿ *~°*09}{_-3, {a+,o­ (à +o­ (ß +(Ì{_,/, {a+,o­ (à *o­ (ß **(ß *0üê %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þ£oÒ (r(p(• o– (` s® zsþ(ì *sþ(ì *þ(î *sþ(ì *sþ(ì *þ(í *sþ(ì *sþ(ì *s!þ(ì *X  o¯ LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(r:(p(• o– rr(p(` s® z s#þ(ì * s%þ(ì * s'þ(ì * s)þ(ì *s+þ(ì *s-þ(ì *s/þ(ì *s1þ(ì *Xþ(=+*05ì,! {Á -s3þ(ì *þ(ù *0 ‚ïs  o­ (ð  (ö  (  (à  (Ä o¯ ,%{Á -s5þ(ì *þ(ú *0Ôñ(¶+:Á(¸+:®(º+:›(>+:ˆ(¼+:v(·+-b(¹+-P(»+->(½+-/(?+-(rv(p(• o– s® z¥¯ n*¥©*¥¨ n*¥§ n*¥¦n*¥‘*¥®j*¥bj*¥¥j*¥¤j*0Œó(¶+:g(¸+-L(º+-4(¼+-(>+-+T¥® Œ¯+D¥‘ Œ©+4¥b Œ¨+$¥¥ÑŒ§+¥¤ÒŒ¦ (ü *0 ‚ö(´+:^(³+:¨(@+-(r¼(p(• o– s® z¥7 (Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(Æ s (Ç sÈ 8[¥“(Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(É "€þ,+ "€eþ,+(Ê þ"þþsÈ 8±¥’(Å ,9 {Ì c/+c/+þboÒ +rä(p(Ç (õ ¥s(Ë #ðþ,+#ðeþ,+(Ì þ#þþsÈ (Í  (Î  (Ï  {`  ,"  ,{¥ (Å  (Ç +    (ø XsÐ *0«÷X o¯ LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(r:(p(• o– rr(p(` s® z(ý (â XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rè(p(` s® z(ý (â  XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rî(p(` s® z(ý (â  XsÐ *X  o¯ XYEldYE^iYEPoYEBuYE4xYE&(r:(p(• o– rô(p(` s® z(ý (â  XsÐ *0 Õù{` 9„ {¥ +YEk{¥ rú(p Œ£,4u™,( ¥so; +oÒ +rp(Ç rZ)p(Ç s¤ z0+ (Û ,Q  {à {á {â {ã {Ì  {å {æ {ç {è {ésÚ+  {a,H {à {á {â {ã {å {æ {ç {è {ésÚ+  ,R  {à {á {â {ã {ä {å {æ {Ì  {è {ésÚ+  ,  (A++r^)p(ÌXsÐ *0 í ûs  o­ (ð  (ö  (  (à  (Ä o¯ 9‡  {Á -S{Ñ ,,  {Ò   {Ñ   ¥b(å  sÓ +R(rl)p(• o– s®   z {Á {Ì  (å  sÓ +   sÓ (Ô (Õ  9‡  {Á -S {Ñ ,,   {Ò   {Ñ  ¥b(å sÓ +R(r”)p(• o– s®   z {Á {Ì   (å  sÓ +    sÓ (Ô (Õ  %YE"AYEßEYET{¢LYE|£OYE!UYEßXYEªaYEØI™Þ<`iYEElYEKnYE&sYEj§éxYE(r(p(• o– s®   z {Ñ ,Ù {Ò  {Ñ  (ý (â XsÐ * {Ñ ,› {Ò  {Ñ  ¥\(ø XsÐ * {Ñ 9[ÿÿÿ {Ò  {Ñ  (B+oÖ o× &XsÐ * {Ñ 9ÿÿÿ {Ò {Ñ  8;ÿÿÿ {Ñ 9òþÿÿ {Ò  {Ñ Xo¯ XYEndYEiYEqoYEDuYE6xYE((r:(p(• o– rÄ)p(` s®   z (ý (â XsÐ * (ü (ã XsÐ * {Ñ 9þÿÿ {Ò {Ñ  8(þÿÿ {Ñ 9ßýÿÿ {Ò  {Ñ Xo¯ XYEndYEiYEqoYEDuYE6xYE((r:(p(• o– rp(` s®   z (ý (â XsÐ * (ü (ã XsÐ * {Ñ 9óüÿÿ {Ò  {Ñ  (·+-: (¹+-1 (»+-( (½+- (?+- (ü (ã + (ý (â XsÐ * {Ñ 9nüÿÿ {Ñ {Ñ 9Yüÿÿ{Ñ {Ò  {Ò {Ñ Œ1(ë  (ë (C+o× &XsÐ * {Ñ 9ýûÿÿ {Ò  {Ñ  ¥,rÈ)p+rÒ)p(ø XsÐ * {Ñ 9­ûÿÿ {Ò  {Ñ  ¥£(Å (ø XsÐ * {Ñ 9hûÿÿ {Ò {Ñ  8pþÿÿ {Ñ 9Aûÿÿ {Ò  {Ñ  (þ * {Ñ 9 ûÿÿ {Ò {Ñ  +Ç {Ñ 9æúÿÿ {Ò {Ñ  +£ {Ñ 9Âúÿÿ {Ò {Ñ  8äúÿÿ {Ñ 9›úÿÿ {Ò  {Ñ  (ÿ * {Ñ 9gúÿÿ {Ò  {Ñ  ,  oÒ +r^)p(ø XsÐ * {Ñ 9úÿÿ {Ò {Ñ  86üÿÿ {Ñ 9óùÿÿ {Ò  {Ñ  ¥7rÞ)p(õ ¥s(Æ {`,1s (Ç ,{¥ (Å (Ç +(ø XsÐ * {Ñ 9Tùÿÿ {Ò {Ñ  8þÿÿ {Ñ 9-ùÿÿ {Ò {Ñ  8çýÿÿ {Ñ 9ùÿÿ {Ò {Ñ  8Àýÿÿ {Ñ 9ßøÿÿ {Ò  {Ñ  (* o¤ &XsÐ *0 ýý2+o¯ %3 Xþþ+,oØ Œ2*(Ù ,Co¯ o¤ &Xo¯ o¤ &X8~ÿÿÿo¯ %YE+o¤ &X8=ÿÿÿX(D+ (Ú (Û 8ÿÿÿ0 HoÜ (Ý (Þ (ß (à     (E+*0 ¡sá 2+o¯ %3 Xþþ+,(F+(G+*(Ù ,X+Ÿo¯ %YEX8pÿÿÿXþ(û *0S{â râ)p(” ,sã ŒÎ(H+*o­   () Ð3(W (I+(H+*{_*{`*{a*"}_*"}`*"}a*r( }_}`}a*V(ä }b}c*Z{b{cþ(J+*²(ä }d}e}f}g}h*0 4{f{h{d(* (* {g{eXþ(=+*²(ä }i}j}k}l}m*0 -{l{i{j{k{msþ(å *’(ä }n}o}p}q*0 ){p{n(* {q{oXþ(=+*r(æ }r}s}t*0 ${r{t(* {sXþ(=+*r(æ }u}v}w*0 ${u{w(* {vXþ(=+*r(æ }x}y}z*0 ${x{z(* {yXþ(=+*r(æ }{}|}}*0 ${{{}(* {|Xþ(=+*r(æ }~}}€*0 ${~{€(* {Xþ(=+*r(æ }}‚}ƒ*0 ${{ƒ(* {‚Xþ(=+*r(æ }„}…}†*0 ${„{†(* {…Xþ(=+*r(æ }‡}ˆ}‰*0 ${‡{ˆ(* {‰Xþ(=+*r(æ }Š}‹}Œ*0 ${Š{‹(* {ŒXþ(=+*r(æ }}Ž}*0 ${{Ž(* {Xþ(=+*r(æ }}‘}’*0 ${{‘(* {’Xþ(=+*r(æ }“}”}•*0 ${“{•(* {”Xþ(=+*r(æ }–}—}˜*0 ${–{˜(* {—Xþ(=+*r(æ }™}š}›*0 ${™{›(* {šXþ(=+*r(æ }œ}}ž*0 ${œ{ž(* {Xþ(=+*²(æ }Ÿ} }¡}¢}£*0 .{Ÿ{ {¡{¢{£(* þ(ù *Ò(æ }¤}¥}¦}§}¨}©*0 4{¤{¦{§{¨{©{¥(* þ(ú *:(¢ }ç *0 5{ç oè (é (ê (÷ (ø þoë *r(ì }í }î }ï *0 {í {î {ï þ(K+*¾Ðñ(W od €®( €¯s €°*0< rè)poÏ o7 Ð(W (p+ Þ t   Þ*/0 0" oð (ñ Þt  (ò Þ* *>/£b**0 {´ {³ {² Ži3\ X/(ärú)ps zbY2 (?¤bXX3à+ ¤bX (n*0W{´ {³ {² - r*ps¤ zY£bþ 3Y+Y(n só *0M{´ {³ {² 3*£b £be¤bX(n sô (õ *0XX0 Xsö *(B ,, {÷ (ø {÷ (ù Y+µXsö *0 ø!!u¦-q!u§:Àt¨ {Ú {Ü {Û (D(ú (û (ü (ý (¬sö 8Zt¦  {Ò  {Ó  {Ñ  oš   (¨ o­    (C8ÿt§{× {Õ{Ø {Ù{Ö {Ô ,+""u :"uŸ:6(D(ú (û  (ü (ý X (D(ü (ú (û (ý   (‘(ª XXsö 8t {Ê(D(ú  (û (ü (ý  YX (D(ü (ú (û (ý   (•(ªXsö 8btŸ{É(D(ú  (û (ü (ý XY X>°(@ (D(ü (ú (û (ý (A(þ (ÿ  ,*   (•(ªXsö 8€   (“(ªXXsö +V (D(ü (ú (û (ý   (“(ªXXsö (ý (ü (ú (û sö *0.0*   (L+(n (D(ü *Z( o­ Xs *‚ s r.*p( ( s *0›  u¦:× u§:é  u§- u¨:‹r2*p ;s;zt§ {× {Õ {Ö (H ,+( ( r»*p(F( ( ( 8@ÿÿÿt¨{Ü8ÿÿÿt¦{Òoš (F*t§ {Ùu 9ÿþÿÿ{Ùt {ä9çþÿÿ{× {Õ {Ê (H( (  X(M+( (  X8eþÿÿ02  (a (H ( (N+( +(Ó *0 s o£ o *0 `  u§-2 u¨:üt¦{Ò oš o o­ X*t§ {Ùu ,[{Ùt  {×{Õ {Ê(O+X(P+X8Qÿÿÿ{×{Õ{Ö(O+,+r»*po r»*po­ X8ëþÿÿt¨  {Ú  {Ü {Û  (Q+&(O+ (Q+&*0"   (O+&*0W${ ,D { { ,5{ { { -!{ (Ö { (Ö s *r¿*ps¤ z0o(,j(R+ ( 3Mt {&rÕ*p(” ,{' (S+( *{&rß*p(” ,{'{ -*rë*ps¤ z*~;*~<*0B*st (T+(N r3+p(¨r7+p(¨(‘(0(‘(0*0B,sv (U+(N r3+p(¨r7+p(¨(‘(0(‘(0*0@r‘p(¨r;+p(¨(Kr›p(¨(‘(0(‘(0*0@r?+p(¨r;+p(¨(KrE+p(¨(‘(0(‘(0*Òr‘p(¨(Nr›p(¨(‘(0(‘(0*0Âs'YE©"YEYE~\YEk( ,Uid[ ] i [ ] i ] rK+pþboÒ (Ç þboÒ (Ç þboÒ (Ç *þ£oÒ *rO+p*rU+p*:jÿÿÿr[+p*9Qÿÿÿra+p*òo­ / ( þ+,o¯ "þþ+, X+Ç*0<-o­ 3(N+ ( +(Ó *Xo¯ (V( +Ä0.  rg+p(Ç rg+p(Ç *j{Ø 1{Ø Y(Ú **"s *0 %(z(R+Œ(^*0 !(R+Œ(^*0 •40+{Ø þþ,rk+p(¨ Ýf 9 o ,rk+p(¨ ÝC o  o\ oc ,,od Ðâ(W oc , od + (p++, oÒ (¨( 8] o\ Ð((W oR ,þ, Žiþ+,8$£(V+oK(” ,+o­ þþ,8çr3+po r7+po /+þ,+ Xþþ,8Ÿ0rp+#Y(å   {Ì   YXo¼  Xo­ 2rp+0X(å   {Ì  o­ Y    YXo¼  X(å  Y(å  {Ì  {Ì     YXo¼  s†(W+uä9tä{ u\,(¨+Y(](Z (¨ (¨(‘(0(‘(0( Þ t Þ+>tå{ rs+po¦ (Ç r½+p(Ç (¨( -Y (e+{  o  ÞIY (e Þ/t (ZrÁ+po¦ (Ç (¨ Þ*A4XmÅ cd/0®7sˆ { 9‘ { { -{ (Ö s þ(X+* rÑ+p(¨s (Y+s (Z+rî&p(¨(Kr9p(¨(‘(0(‘(0* +œÞ,/rÑ+p(¨r9p(¨(‘(0(‘(0**>sž**s **s *"s *0 Bs˜ sš ( E¦é( E”o^r2*p ws;zt {'{ -{& (Z (¨*{'{& (Z (¨([+(“(0þþo þo! *t{({)(ZoT { -  (¨* (¨([+(“(0þþo þo! *tþ{$(ZrÕ+poT (Ç r½+p(Ç  (¨(~3(6**t{*9ío\ u\ ,  (Z (Y  (¨*uT  9¬   o"   YE6µrá+p þboÒ (Ç   (¨(– (— (T* o#  o$  sœ(\+(]+{æ(^+-+.rí+pþboÒ (Ç   (¨(— (T* o%  o%  o$  o$  s s¢(]+{æ(_+-þ+,+Yrí+pþboÒ (Ç   (¨rý+pþboÒ (Ç   (¨(— (— (U*o\ oc ,eod Ðî(W oc , od +(p+,+3od Ðï(W oc , od +(p++9Ûo\ od Ðî(W oc , od +(p+,r ,p+r,p ¥ oØ  (`+s²(a+{æ [X(b+ (¨(S(“(0þþo o! Þu,oé &Ü&Ü*u 9Þ{é,s´o\ o& (q+þ+9ŽoØ (\+s¶(a+{æ[X(b+r,p(¨(S(“(0þþo o! Þu,oé &Ü&Ü*r%,p(¨(~3(6**(|(:o,o\ (<+,(6*(Z(¨{è,g o'   [  s¸((  Ži-+  þþ,* sº (É+(c+(R(“(0**(Z(O*(Z(P*tý{#!þþrî&p(¨(\+!(d+(K(`*tÿ{%(e+(f+(Q*t  (+- o\ (Ô+9Éøÿÿ{'{& rÕ*p(” ,[(S+""() "(* ##(\(\+(g+(h+{æY(i+(— (S*(Zr¯p(¨*¢bmdÑ0 GD (j+s+ {çsÞ   {å(k+Œ0(^*0ÂE9¶(´+:2(³+:J(@+:(½+:ï(¼+:Ä(º+:£(»+:x(¸+:M(¹+:"(¶+:÷(·+:Ì(>+:¡(?+:w(²+-[(µ+-0oÒ Þ#t  r1,po¦ (Ç r½+p(Ç Þ*¥£ rZ)p(V(Ç rZ)p(Ç *¥,rÈ)p*rÒ)p*¥¯ þ¯oÒ r],p(Ç *¥®þ®oÒ rp(Ç *¥¦{â(, rc,p(Ç *¥¤{â(- ri,p(Ç *¥§{â(. rm,p(Ç *¥¥{â(/ rs,p(Ç *¥¨  {â(0 rw,p(Ç *¥b  {â(1 *¥‘  {â(2 r{,p(Ç *¥©  {â(3 rô(p(Ç *¥7  r,p{â(Æ rƒ,p(Ç *¥“(Ê , r‡,p8µ(4 , r,p8¡(5 , r£,p8{ào­ 2{ào¯ gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(6   {â(1 rµ,p(Ç +{à{â(É r°p(Ç *¥’{à{â(Ë (Ì ,r‡,p*(7 ,r,p*(8 ,r£,p*{ào¯ g3sÆ(Ô+, rµ,p(Ç **r»,p*¦ °#z{ä-*{äsÈ(E*r{ásÊ(h(l+*VsÌ(h(I*0F(Û (z(m+(i*0F(Û (z(m+(j*V(z(m+(j*&so*r( }²}³}´*{²*{³*{´*&*(9 *0 RG(: (; (¨ rÅ,p(¨(‘(0r;+p(¨(‘(0(“(0*(< *0 iH(= (> (¨ rÅ,p(¨(‘(0, { + rÉ,p(¨r;+p(¨(‘(0(‘(0*^sy€ºsy€»*:( }¹*~º**(~þ*~»**(~þ*{¹*0Wþ, (~3 * **6(:o*0.Iþ,uÇ ,{¹ {¹ þ**þþ*0*,þ,þ,{¹ {¹ þ**þþ*0JuÇ ,o‚**:( }? *N{? {Ø þþ*V(@ }¿}À*0 1{¿o\ {À 4{¿( þo« *²(A }Á}Â}Ã}Ä}Å*0 *{Á{Â{Ã{Ä{Åþ(\*:(B }C *V{C Œ¦þoD *:(E }F *0L{F oG sH *:(I }J *0N{J oK sL *:(B }M *V{M Œ¦þoD *:(E }N *0L{N oG sO *:(I }P *0N{P oK sQ *:(R }S *V{S ( þoT *²(A }Í}Î}Ï}Ð}Ñ*0 *{Í{Î{Ï{Ð{Ñþ(\*²(U }Ò}Ó}Ô}Õ}Ö*0 '{Ò{Ó{Ô{Õ{Ö(`*r(V }×}Ø}Ù*Ê{Ù{ØX3*{×oW ŒXsX (Y *Ò(V }Ú}Û}Ü}Ý}Þ}ß*0W{ß{Ý{ÛX2+{Þ{ÜXþþ,*{Ú{ßoZ ŒXsX (Y *0L([ }à}á}â}ã}ä}å}æ}ç }è*0 ^{ã{â(\+{ä{å{æ{ç{è(a{á(]+{è{à{æ(^+(S*V(\ }é}ê*Š{ê{éX2*Xs] (^ *:(_ }ë*B{ëþoD *:(` }ì*0L{ìoG s¤*:(a }í*0N{íoK s¦*:(B }b *V{b Œ¦þoD *:(E }c *0L{c oG sd *:(I }e *0N{e oK sf *r(B }g }h }i *0 O{i r ,p(” ,Œ¦,++, þ¦o\ oc +,: þ¦o\ od Ð(W oc , od +(p++,s{g s¨{h  þ¦o\ rð pov Œ¦o]  þ¦o\ rspov Œ¦o] sj þ(n+*{g sk {h þ(o+*:(l }ô*ž{ôoê ,{ôoì sm (n **(\ *Jo_ rÍ,p(” *:(l }õ*ž{õoê ,{õoì sm (n ***o &*v¥oT ¥oT (ˆ *ò(p }ö}÷}ø}ù}ú}û}ü*0{PoT {ö{÷{ø{ù{ú{üoT {ûo\  4{û( o« (\( Þ t   Þsq *ai :(B }r *V{r Œ¦þoD *:(E }s *0L{s oG st *:(I }u *0N{u oK sv *r(w }x }y }z *0 ;Q( ( {x (Z{y s{ {z (p+s| *:(} }~ *N{~ Œ¦(N*( *F(€ ,*-þ*:( }*:{(g*:( }*:{(g*:( }*:{(g*–oi ,+oj ,+ok þ*î(Î,1oc ,oc ,od od þo **þo **~7*~8*~9*~:*0NR(U,C(] Ži12Ðý(W oc , od +£“oIþ(Ï***2sÖ€*:( }*sä**(ãþ*"sæ**(ãþ*sé**(ãþ*së**(ãþ*~**(ãþ*sí**(ãþ*{*>(Ö}*{*Z(Ö}}*{*{*>(Ö}*{*>(Ö}*{*>(Ö}*{*:( }*2{{*:( }*2{{*2{{*:( }*2{{*:( }*2{{*:( }*2{{*2sû€*:( }*s **( þ*s **( þ*s**( þ*"s**( þ*"s**( þ*~**( þ*s**( þ*{*>(û}#*{#*>(û}$*{$*>(û}%*{%*Z(û}&}'*{&*{'*Z(û}(})*{(*{)*>(û}**{**:( }+*2{+{#*:( },*2{,{$*:( }-*2{-{%*:( }.*2{.{&*2{.{'*:( }/*2{/{(*2{/{)*:( }0*2{0{**0ØT(D (^,4(D (_ (D (x s,(q+ (r+(*(D (T9}(D (\ Œ,+ rµps zŽi   Y25£oT o] s‚ ¤XX3Ë(r+(*(*0œV9o\ (S,(k(s+(ü*(V,(þ*(D (U,F(D (t (ƒ („ oJs*(q+ oH(r+(*('*(*0_åŒ0 ,((*Ð0(W Ð^(W (Ï,rgp(… (*Ð(W (Ï,(*(*(† *:oT s‚ *(† *:oT s‚ *0<W u§-u¨-t¦{Ñ*t§{Ô*t¨ {Ü+Ä0<W u§-u¨-t¦{Ó*t§{Ø*t¨ {Ü+Ħ(.(/,+(.(/(ª**(¨**(¨**(¨**(¨**(¨*~2*0CXu¦,9t¦ {Ñ,*{Ó,"{Ò u\ , rp(” ***>(•(0*~3*~4*~5*~6**(¬*‚(7,*(7,*þ(t+*:(‘(0*>(“(0*>(“(0*>(“(0*Bs^þ(>*Bs`þ(>*Bsbþ(>*08Y{ˆ ,. {ˆ {‰ o! (“(0+Ê*0@[{ˆ ,2 {ˆ {ˆ - {‰ *{ˆ {‰  (F*(6*6sd(G*6sf(G*6sh(G*:sj(G*¾rÑ+p(¨r9p(¨(‘(0(‘(0*frî&p(¨(K(L*0B\{ˆ ,4 {ˆ {ˆ - {‰ *{ˆ {‰ sl(u+*(6*09],) {# rä&p(¨oŠ (“(0*rgp(¨*0Fr‘p(¨r;+p(¨(v+(Kr›p(¨(‘(0(‘(0*¾r‘p(¨r›p(¨(‘(0(‘(0*¾r3+p(¨r7+p(¨(‘(0(‘(0*0‚^o‹ ,rk+p(¨(– (— *oŒ ,N {n (Ö {n (× 0rk+p(¨(– (— * oŠ Y(w+(— *(– *0b   (w+*Bs (x+*(Š *>(“(0*(Š *>(“(0*(Š *>(“(0*(Š *>(“(0*(Š *>(•(0*(Š *>(•(0*(Š *>(•(0*(Ž *frî&p(¨(‘(0*(Ž *fr;+p(¨(‘(0*(Ž **:(Ž }1*N{1(‘(0*(Š *.þ(C*( **0Ärp(¨€2sV€3sX€4sZ€5s\€6ÐX(W €8(Ñoc , (Ñod +(Ñ€7Ðñ(W €:(Óoc , (Óod +(Ó€9r»,p(¨€;rû,p(¨€<*( **~>*~?*0.P (so ,*s‘ ŒÏ (so’ *0.c (s(… (u Þ, (s(† &Ü&Ü*V!(v(C+*V!(v(C+*:j(v(C+*6(v(C+*0¥e (to“ ,*(” - o­ þ+,o¯ 0þ+,o¯ xþ+,,o­ Y YXo¼ ( ¥s(• +( ¥s(• ŒÏ (to– *0.c (t(… ({ Þ, (t(† &Ü&Ü*"(|*6(|(C+*Zs— €>s˜ €?*F}™ o &*¢{™ {™ {i Œ¦¥r(š }i *¢{™ {™ {i Œ¦¥r(› }i *(ž **:(Ó }B*ªoT rGp(” ,oq Ži{BŽiXþ**b}Ÿ }  o &*j{Ÿ (y+{  þo *F}¡ o &*r-p*Þ{¡ {¡ {o Œ¦¥rŒ¦¥r(š (t+}o *Þ{¡ {¡ {o Œ¦¥rŒ¦¥r(› (t+}o *08gs¢ Ц(W ~{ (£ (t+ (y+oœ s¤ *:}¥ ( *B{¥ þon *b}¦ }§ o &*j{¦ (z+{§ þo¨ *F}© o &*r-p*Ž{© {© {~ (š ¥>}~ *Ž{© {© {~ (› ¥>}~ *0(¦sª þ« s¬ (z+o­ s® **–oi ,+oj ,+ok þ*î(˜,1oc ,oc ,od od þo **þo **~a*~b*~c*~d* * * **0ShŒ,+ rµps zŽi   Y  2%  £\ `oÐ ¤ X X3Û*0"° `oÐ , sî(¯ **0tj,þ, Žiþ+,*þ, Žiþ+,,£ ({+ o,o-o.s° (± *(r%-p(• o– sÔ z0l(¤ ,{² *r]-ps¤ z~e*~f*0Cr o³ oê 9 o´ oµ o7 o_ (¦(” 9á o¶ o· YE1fs° 8 o¸ (¹ ¥s° 8}o¸ (¹ ¥o¸ (¹ ¥bs° +Ho¸ (¹ ¥o¸ (¹ ¥bo¸ (¹ ¥bs° (± 8îþÿÿ8èþÿÿ Þu, oé &Ü&Ü&*A &:, (¨**0l(© ,{² *r]-ps¤ z0AsoŒ (|+- oº +, oS (©*Ð!(W oR (¤*0Fso7 oŒ (|+- oº +, oS (©*Ð!(W oR (¤*0Fso7 oŒ (|+- oº +, oS (ª*Ð!(W oR (¥*0!t(¬ , {² (» _þ**0 t(« , {² (» (¼ **0ÀuoT Ð$(W (™-Ð^(W (™þ+9xo­ 1o¼ rŸ-p(” +,o­ Y YXo¼ +@o­ 1o¼ r©-p(” +,o­ Y YXo¼ ++ s½ (¾ *0Áyr±-po¿ 9˜sð sò `oÀ (}+  (~+ Œ',+ rµps zŽi%Y2:£3oÁ ¥boT s½ ¤%XX3Æ*sô`ox (+*0Ez(± sö(€+ Ži3*o¿ ,o ,o= þoX ***0L|Ð^(W (™,sø*Ð$(W (™,sú*(± ¥((+ sü*0^Ð^(W (™,+Ð$(W (™,*(¯ ,& {à _3 _.  _þþ****0 S(´,*oƒ ,+â*0  (µ*0 S(´,*oƒ ,+â*0  (·*0ùÐ^(W (™,AE r»-ps¤ z\(¢*\%rsp¤\(¢*Ð$(W (™,ME r»-ps¤ z\(¢*\%ré-p¤\%ró-p¤\(¢*(² ,3sþ ss `o' (‚+(‚+ (ƒ+**0‚(¹ s*0U…Ð^(W (™,s*(± Ži0s*rý-p(£ -s * {Ä s *0*°rý-p `oÐ ,*r.p`þop *0‚(¹ Žiþ*0”†(³oO (½,rŸ-p(Ç +9Ð$(W (™,+Ð^(W (™,+ r©-p(Ç `op ,*(r.p(• o– (` sÔ z0A(¾ s*0‰.Œ,+ r ps z(´-h `(´,.o_ (rS.p(• o– (` r ps zo_ (ru.p(• o– (` r ps z*~g*~h*~i*~j*~k*~l*~m*~n*~o*~p*~q*~r*~s*~t*~u*~v*~w*0Š(Â(™,+ (Ä(™,+ (Æ(™,+ (È(™,+ (Ê(™,+ (Ì(™,+ (Î(™,*(Ðþ(™***0O‡Ži YEÄÒàîü ?š  +  X£¤ X X2æ ŽiY YXY2!X£¤XX3ß (Õ(Ð%¤(ì+þoX *(r‘.p(• o–   rª"ps z(ÂþoX *(ÄþoX *(ÆþoX *(ÈþoX *(ÊþoX *(ÌþoX *(ÎþoX *0Žˆ(Ò-.o_ (rÙp(• o– (` rips zo= Ži3G+X£¤XX2à £ (Ö(ì+**6s(„+*0­ŠoŠ (× `Œ,+ rµps zŽi  Y2# £oc ¤XX3Ý oÔ ,+-o_  (rµ.p(• o–  (` s®   z*0‹(Ø s*0MŒŒ,+ rµps zŽi   Y  2  £o] ¤ X X3á*0AŽo=  o' (× s Ži/*£ (Ûs*00o= (Ù Ži/*£ (Ü  s*02‘o= (Ø Ži/sÅ *£(„ sÅ *0:Ži2*rõpo_ þboÒ (› rps z£*0}’/*rõpo_ þboÒ (› rps z o' (× /(ÞsÆ *o= (Þ£YsÇ (È sÆ *0]“Ðt(W (™-.o_ (rqp(• o– (` rips zo= ££sf *0”(¯ , {à _þ**0&SÐt(W (™,*oƒ ,+Ü*0E(¯ ,8 {à _3 _.  _þþ++, (Òþ***0)•s s `o' (‚+ (ƒ+*0‚(ä s*0©Š(ä `Œ,+ rµps zŽi  Y2# £oc ¤XX3Ý oÔ ,+-o_  (r/p(• o–  (` s®   z*0‹(æ s *03(¯ ,& {à _3 _.  _þþ****0&SÐt(W (™,*oƒ ,+Ü*Ö(è, þoƒ *(¶,(¸*(â,(é**0s.(è-h `(è,.o_ (rO/p(• o– (` rps zo_ (ry/p(• o– (` rps z*0}.Œ,+s z(ã-` `(ã,*o_ (rŸ/p(• o– (` s zo_ (rÃ/p(• o– (` s z*0F.Œ,+s z(Ò-*o_ (rÙp(• o– (` s z*V(ä }J}K*0 {K {J`þoÉ *(Ê *0&,oÁ ¥b oÁ ¥b /*þ*(Ë *RoÆ , þoÌ **:(Í }L*0?–(¬ ,2 {² (Î {² (» _3{L(°***:(Ï }M*0!3(Ð (Ñ {M3(o **(Ò *0<E"((rá/p(• o– r÷/ps zrgp*rä&p*(Ò *0<E"((rá/p(• o– r÷/ps zrß*p*rÕ*p*:(Ò }N*:{NoÓ *(Ô *0(— (­(Î  (­(Î /*þ*:(Z }O*0˜ (­(Õ {Oþ*(Z *"(®*V(Ö }P}Q*0 dŒ{QŒ,+ rµps z{QŽi   Y  2, {Q £{PoÉ ¤ X X3Ô*(× *",**(× **V(× }R}S*0 JA{Rr.p{S`%{R¤oÏ %¤oë ¥b*:(× }T*N{ToØ ¥b*V(ž }U}V*0 {V {U`þoÙ *(Ú **þoT *V(ž }W}X*0 {X {W`þoÛ *:(Ö }Y*:{Y(Ú*V(Ö }Z}[*0 N™{Z(Ú {[£o^   +  X£¤ X X2æ(w+*V(ž }\}]*0 žš{]ŽiY YX  Y2 X£¤XX3à o[ {\  + X£¤X X2æ %¤(w+þo[ *(Ô *0(— (­(Î  (­(Î /*þ*(Z *"(®*:(Ö }^*0 \Œ{^Œ,+ rµps z{^Ži   Y  2$ {^ £o] ¤ X X3Ü*V(ž }_}`*0 {` {_`þoÛ *01,*,o\ *(rÿ/p(• o– rps z0DÐX(W €b(›oc , (›od +(›€aÐñ(W €d(oc , (od +(€cÐ!(W o_ €eÐ!(W oŒ oÜ oÝ €f€gÐÁ(W €i(Ãoc , (Ãod +(ÀhÐÃ(W €k(Åoc , (Åod +(Å€jÐÅ(W €m(Çoc , (Çod +(Ç€lÐÇ(W €o(Éoc , (Éod +(É€nÐÉ(W €q(Ëoc , (Ëod +(Ë€pÐË(W €s(Íoc , (Íod +(Í€rÐÍ(W €u(Ïoc , (Ïod +(Ï€tÐÏ(W €w(Ñoc , (Ñod +(Ñ€v*(\ *",**:(Þ }y*:{ysG*:(U }ß *b{ß Œ¦oØ (…+*:(ä }{*F{{þo] *.{à þ*R{á {à (†+*&oâ *6~ã oâ *&oä *&(å *"(æ *&(ç *"(è *B{à þ(‡+*~ã *B{à þ(ˆ+*B{à þ(‰+*&oé *&oê *F{à þ(Š+*F{à þ(‹+*&oŒ+*:{à (+*6¥šsÑ *"(ì *6{à (Ž+*6{à (+*"¥š*"sÑ *&(í *n{á {à {à þ(+*n{á {à {à þ(+*n{á {à {à þ(‘+*n{á {à {à þ(‘+*6{à (’+*6{à (“+*07 u*-',(t+ {î {ï X(++ÏX**0#ž u*- u+-**t+{ð **04s- -(ñ *(”+ (”+ /+ X(ò *0rŸ(”+ (”+ X>¥u+9t+ {î {ï {ó (”+X1Su+,?t+{î {ï {ó  (•+  (•+(•+*r%0ps¤ z(•+ (•+*r%0ps¤ zX>£u+9t+ {î {ï {ó  (”+X1R u+,? t+{î {ï {ó  (•+ (•+(•+*r%0ps¤ z (•+(•+*r%0ps¤ z(•+*0¥¡u*-Y9‹t+ {î {ï {ó  oô /(–+ (—+*-* (–+(—+*t*{õ  oô / (ò *-*(ò *(ñ *00¢  u*- u+-R (–+*t*   ," u*-$ {õ (–+(–+* (–+*{õ +Út+   u*-  u+-$ +Ìt*  {õ (–+(–+*t+{î {ï  {î  {ï {ó {ó {ð  {ð   X /(˜+(—+* X /(˜+(—+*(•+*0¤  u*:® 9åt+ {î {ï {ó  oô /5(™+(ö (÷ (ø  (˜+sù *- sù *(™+(ö (÷ (ø  (˜+sù *t*  {õ  oô / sù *- sù *sù *sù *0†¦u*-u+- r90ps¤ zt* {õ sú *t+ {î {ï {ó  - sú * (š+(û (ü (•+sú *0µ§u*- u+-!*t* {õ oô -**t+ {î  {ï  {ó oô /(›+(—+*---*-*(š+(ü (û (•+*(›+(—+*0v¡u*-L,dt+ {î {ï {ó  oô / +¹-*+¨t*{õ  oô þ**0]¨u*-9,Lt+ {î {ï {ó (‡+ o× &+»t*{õ o× &**0 a¨u*-:,Ot+ {î {ï {ó  (‹+(œ++ºt*{õ þ(œ+**0e¬u0->,St1 {ý {þ {ÿ (+ (ž++¶t0{ þ(ž+**0h¨u*-A,Vt+ {î {ï {ó  o , (ˆ++,+µ*t*{õ þo **0h¨u*-A,Vt+ {î {ï {ó  o ,+(‰+,*+³t*{õ þo **Fs þ(ˆ+*Šs (ˆ+,s þ(‰+**0 ƒ­u*-Q,qt+ {î {ï {ó  o ,  (–++(Ÿ++£t*{õ  o ,  (–+***0 _¨u*-:,Mt+ {î {ï {ó  (›+( ++ºt*{õ (›+**0T®9u*:t+ 9Êu*:Ât+ {î {ï {î {ï {ó {ó {ð {ð   1:(™+  (ö   (÷   (¡+ (¡+(˜+*(™+  (ö   (÷    (¡+ (¡+(˜+* *t*   {õ (–+* *t* ,u*-  {õ (–+* +¬ {õ  +å0…­u*-R,st+ {î {ï {ó (¢+ (†+,  (–+++¢t*{õ  (†+,  (–+***ªo ,(–+s *(–+s *0 ™°s u*-h,~t+ {î {ï {ó (£+ ( ( (¤+( ( 8ƒÿÿÿt*{õ (¤+**05± u*-,&t+ {ï {ó +Ùt*{õ **0H²u*-',6t+ {ï {ó (¥+(= *t* {õ (= **05± u*-,&t+ {î {ó +Ùt*{õ **0H²u*-',6t+ {î {ó (¦+(= *t* {õ (= **03³(§+ -!(r‡0p(• o– rs,ps z{# *03³(¨+ -!(r‡0p(• o– rs,ps z{# *0„µ{ ,v { u*-u+-{ +Ï*{ t+ { {î {ï {ó (ñ ( ( ( 8‚ÿÿÿ( *b( ( (©+s *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z0Q¶{ ,B{ { -(ª+* { u*,{ t*{õ *r1ps¤ z(«+*0t·{ ,Q{ { -* { u*,&{ (©+( { { þþ*r•1ps¤ z( { { þþ*0¹(¬+s s *0 iº{ 9R { 9C {   u*:Ñ u+: { u*-#u+-W{ {  +’{ t*{ {õ (ñ ( ( 8Uÿÿÿ{ t+{ {î {ï {ó (ò ( ( 8ÿÿÿ{ t*{ u*-<u+:~{ {õ (ñ ( ( 8§þÿÿ{ t* { { {õ  {õ   oô   , * 8Yþÿÿ{ t+{ï -a{ { {õ {î {ó  {ï  oô   , * ( ( 8âýÿÿ{ {î {ï {ó  8•þÿÿ{ t+{ï :f{ u*-Su+:«{ {î {ï {ó (ò ( ( 8>ýÿÿ{ t*{ { {î {ó {õ   oô   , * ( ( 8Úüÿÿ{ t+  {ï -a{ { {î {ó  {î  {ó   oô   , * ( ( 8cüÿÿ{  {î  {ï  {ó  8ýÿÿ{ u*-0u+-I{ {î {ï {ó  8˜þÿÿ{ t*{ {õ  8düÿÿ{ t+ {  {î  {ï  {ó  8üÿÿ*{ ,**¶--**-*( ( ( ( (­+*0Y¨u*-5,Gt+ {î {ï {ó  (®+(2 +¿t*{õ (2 **6(‚ (®+*0»sÞ s þ(‡+*0¼(+ (¯+ (°+*Šoê ,o (–++à*0+½oŒ (±+ Þu , oé &Ü&Ü* >s (²+*V( } } *R{ { (U+*V( } } *R{ { (U+*V( } } *^{ { (U+þ*{ *{ *"} *"} *V( } } *b} } o &*J{ { (³+*^{ { (³+Œ¦*J{ { (´+*b{ { (µ+( * *V(c }! }" *Ê{! {" {Ø ¤¦{" {" {Ø X(Ú *:(# }$ *>{$ (R+*0>¾oê oê 3)-*o o  (6+, +Æ**:(% }& *F{& þ(¶+*V(' }( }) *j{) {( o (·+*(* *&(+ *(* *&(, *.{- þ**o. *R{/ {- (¸+*R{/ {- (¹+*&o0 *R{/ {- (º+*B{- þ(»+*B{- þ(¼+*0À{- (¼+ ,{1 *s2 zB{- þ(½+*&o3 *&o4 *B{- þ(¾+*f{/ {- (¿+s5 *Z(6 {- þ(À+*Z(7 {- þ(Á+*Js8 ¥M(Â+*Ns9 (Ã+(Ä+*Ns: (Ã+(Å+*"(; *"(< *0€(Z+ (Æ+s= *6{- (Ç+*6{- (È+*~> *(? *V( ( s *:(@ }A *0'Q( ( {A (É+,( **:(@ }B *0'Q( ( {B (É+,( **0>à uR- uS-*X*tS {C {D X(Ê++Â0#Ä uR- uS-**tS{E *06s- - (F *(Ë+ (Ë+ /+ X(G *0 §Å(Ë+ (Ë+ X>¾uS9¨tS {H {C {D {I (Ë+X1auS,MtS{H {C  {D  {I   (Ì+   (Ì+(Ì+*r%0ps¤ z(Ì+ (Ì+*r%0ps¤ zX>¾uS9¨tS {H {C {D {I (Ë+X1auS,MtS{H {C  {D  {I    (Ì+  (Ì+(Ì+*r%0ps¤ z (Ì+(Ì+*r%0ps¤ z(Ì+*0 ÑÇuR-uS-E(F *tR {J oô / (G *-(F *(G *tS {H  {C  {D  {I {E oô /(Í+(Î+*- (G *(Í+(Î+*0ŸÈuR-uS-0s2 ztR {K {J oô -*s2 ztS{H {C {D {I oô /8uÿÿÿ -*8aÿÿÿ0¡ÈuR- uS--*tR {K {J oô -(L **tS{H {C {D {I oô /8xÿÿÿ -(L *8_ÿÿÿ¾(Ï+,(Í+sM *(Í+sM *0 ®ÊsM   uR-  uS-!*tR {J {K (Ð+*tS {H {C {D {I (Ñ+ (N (O (Ð+(N (O 8Rÿÿÿf(Ï+, (Í+**0 ËuR- uS-*tR {J {K (Ò+*tS {H {C {D {I (Ó+ (Ò+8ÿÿÿ0£Í  uR- uS-&r90ps¤ ztR {J {K sP *tS {H {C {D {I -  sP *(Ô+(Q (R (S  (Ì+sP *0ÈÎuR- uS-!*tR {J oô -**tS {H  {C  {D  {I oô /(Õ+(Î+*-4-*-*(Ô+(S (Q (R (Ì+*(Õ+(Î+*0~ÏuR- uS-*tR {J oô þ*tS {C {D {I oô / +–-* 8‚ÿÿÿ0rÐuR- uS-*tR {J {K (Ö+&*tS {H {C {D {I (»+(Ö+& +Ž0‡ÑuR- uS-*tR {J {K þ(×+*tS {H {C {D {I (¼+-(×+-  8ÿÿÿ**0€ÐuR- uS-*tR {J {K þ(Ï+*tS {H {C {D {I (½+,+ (Ï+,* 8€ÿÿÿ0€ÐuR- uS-*tR {J {K þ(Ï+*tS {H {C {D {I (¾+, (Ï++,  8‚ÿÿÿ*0ŠÖuX- uY-$*tX {T {U o£ (V *tY {W {X {Y {Z {[ (Ø+o£  (Ø+(\ *0ŽØuR- uS-'*tR {K {J (+(] *tS {H {C  {D  {I {E (¿+(+(¿+(^ *0ÙuR- uS-$*tR {K {J þo_ *tS {H {C  {D  {I (Á+o_ 8ÿÿÿ0Ýu\- u]-$*t\ {` {a þob *t] {c {d  {e  {f (Ù+ob 8ÿÿÿ0Þ  uR-  uS-P*tR {K {J oô oô  0 þþ+, þ(Ú+**tS{H {C {D {I oô oô  /(Û++ 0 þþ+, (Ú++ / 8þþÿÿ *0%ß   oô 3*þ(Û+*0{ÐuR- uS-"*tR {J {K sg (h *tS {H {C {D {I sg (Ü+(h 8…ÿÿÿ6(i (Ü+*6(Ç+(Ý+*>sj (Þ+*03àoê ,(oÕ (Ö (× (Í++Ï*05á  +&£Ð (Ö (×  (Í+ X Ži2Ô*0[ãu` ,  (Æ+*uÜ ,   (ß+*oÔ (à+Þu, oé &Ü&Ü*1 >0»sÞ sk þ(»+*0‘å{l 9€ {m uR-uS-{l +Ì*{m tS {H {l {C {D {I  (F (n (n (n 8uÿÿÿ(o *b(o (n (á+sp *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z0bæ{q ,S{r {l -(â+* {m uR,${m tR {K {J  ss *r2ps¤ z(ã+*0tç{q ,Q{r {l -* {m uR,&{l (á+(t {r {l þþ*r˜2ps¤ z(u {r {l þþ*0é(ä+sv sw *:(x }y *0Q( ( {y (.+*V(z }{ }| *â{{ {| {Ø s ¤ {| {| {Ø X(Ú *{} *{~ *"}} *"}~ *V( }} }~ *b} }€ o &*J{€ { (å+*^{€ { (å+Œ *J{€ { (æ+*b{€ { (ç+(‚ * *0)ë (ƒ („ sg (× (Ö sg *0ƒìoê oê 3n-*o… (ƒ o… (ƒ (6+,,o… („ o… („ (è++,8ÿÿÿ**(† *&( *:(‡ }ˆ *^s‰ {ˆ ¥ (é+*(Š *&( *:(‡ }‹ *^sŒ {‹ ¥p(ê+*:( }Ž *0?í{Ž {ý ( ( o ,*( ( þ(ë+*( *~( Œ¦( Œ§sü**(% **(% **(% **(% *0£/!(r6"p(• o– r3ps z/!(r6"p(• o– r!3ps z/!(r6"p(• o– r'3ps z/!(r6"p(• o– r-3ps zs‘ *0ï(ì+  Ú 2jÚ 2TÚ29Ú2(’ XX3ãXX3ÇX X3¬X X3–*0 “ï(ì+  Ú ?yÚ 2`Ú2EÚ2)(í+(’ XX3×XX3»X X3 X X@‡ÿÿÿ*6(” *>(’ **(% **(% **(% *.(• *6(– *0|/!(r6"p(• o– r3ps z/!(r6"p(• o– r!3ps z/!(r6"p(• o– r'3ps zs— *0añ(î+  Ú 2KÚ 25Ú2(– XX3æX X3ËX X3µ*0 kñ(î+  Ú 2UÚ 2?Ú2$(ï+(– XX3ÜX X3ÁX X3«*0—òŒr,+ rµps z(% (% (% Ú 2XÚ2=Ú2!(• o× &XX3ßXX3ÃX X3¨*0 ¯ôŒr,+ rµps z(% (% (% (ð+ Ú2dÚ2H Ú 2,   (• o£ (™  X  X3ÔXX3¸XX3œ *0 òŒr,+ rµps z(% (% (% Ú 2^Ú2CÚ2'(• (ñ+&XX3ÙXX3½X X3¢*0µôŒr,+ rµps z(% (% (% (ð+ Ú2jÚ2N Ú 22    (• (ò+(™  X  X3ÎXX3²XX3– *Ži*0Iõ/(ärú)ps (Æ+&+0  Y 2oš ¤0X X3è*0./!(r6"p(• o– rú)ps z0*0Lö/!(r6"p(• o– rú)ps z0  Ú  2 ¤0 X X3î*zŒÔ,+ rµps zŽiþ*"0*0ŒÔ,+ rB ps zŒÔ,+ r5ps z/!(r6"p(• o– r33ps z/!(r6"p(• o– rú)ps z/!(r6"p(• o– rK3ps zXŽi1!(rá/p(• o– rú)ps zXŽi1!(rá/p(• o– rú)ps z(¦ *‚Ži2*X£ÔŽiX+à002Ži/(£Ô Ži (¦ XX+Ñ*0÷(ó+0 (ô+*06ùŒu,+ rc3ps zuv ,  (õ+*(ö+(õ+*0QûŒÔ,+ rµps zŽi w  Y  2  £0o› ¤w X X3â(÷+*0TüŒÔ,+ rq3ps zŒÔ,+ r3ps zŽi Ži X0 (¦ (¦ *ŽŒÔ,+ rµps zo ¥Ô*zŒÔ,+ rµps z(ø+*zŒ,+ r3ps z(ù+*0DsŒÔ,+rµps (Æ+&Ži  Y 2£0o× &X X3è*0RýŒÔ,+rµps (Æ+&Ži 1  Y  2  £0o£ ¤1 X X3â*0‘ÿŒÔ,+ rq3ps zŒw,+ r3ps z(œ Ži Ži.!(rZ p(• o– r3ps zY 2$£0£1o &X X3Ü*0£ŒÔ,+ rq3ps zŒw,+ r3ps z(ž Ži Ži.!(rZ p(• o– r3ps z2 Y2, £0£1oŸ ¤2XX3Ô *0 ¥ŒÔ,+ rq3ps zŒw,+ r3ps z(  Ži Ži.!(rZ p(• o– r3ps z2 Y2. £0£1o¡ ¤2XX3Ò *0FŒÔ,+ rµps z(¢ Ži  Y  2  £0o£ & X X3ç*0“ŒÔ,+ rq3ps zŒw,+ r3ps z(¤ Ži Ži.!(rZ p(• o– r3ps zY 2&£0£1o¥ &X X3Ú*0\ ŒÔ,+ rµps z(¦ Ži 1 Y 2%£0o§ ¤1X X3Û*¢/!£0o ,*X+Û*0+ ŒÔ,+ rµps zŽi    (ú+*Ú/.£0£1o¨ ,*X+Í*0vŒÔ,+ rq3ps zŒw,+ r3ps z(© Ži Ži.!(rZ p(• o– r3ps z (û+*¢2*£0o ,X+Û*0+ ŒÔ,+ rµps zŽi    (ü+*Ú2*£0£1o¨ ,X+Í*0vŒÔ,+ rq3ps zŒw,+ r3ps z(© Ži Ži.!(rZ p(• o– r3ps z (ý+*0FŽi2(r—3p(• o– sª z£0o« ,{¬ *X+º0$ŒÔ,+ rµps z  (þ+*0)Ži2*£0o« - X+Ù*0$ŒÔ,+ rµps z  (ÿ+*0UŒÔ,+ rµps zs­  +'£0o« ,  {¬ o® +X Ži2Óo¯ *0NŒÔ,+ rµps zs°  + £0 o , o± +X Ži2Úo² *0fŒÔ,+ rµps zs° s°  +'£0  o ,  o± + o± X Ži2Óo² o² s³ *0EŽi2(r—3p(• o– sª z£0o ,£0*X+»0$ŒÔ,+ rµps z  (+*ÊŽi2*£0o , £0(= *X+Î0$ŒÔ,+ rµps z  (+*0 ŒÔ,+ rq3ps zŒw,+ r3ps zŽi Ži.!(rZ p(• o– r3ps zÐ Y 22£0£1sg ¤ÐX X3Î*0êŒÔ,+ rq3ps zŒw,+ r3ps zŒ„,+ rÃ3ps zŽi Ži.!(rZ p(• o– r3ps zŽi.!(rZ p(• o– rÃ3ps z… Y 2>£0£1£2s´ ¤…X X3Â*0zŒ`,+ rµps zŽi 0 1 Y 2=£Ð(Ö (× ¤0¤1X X3Ãsµ *0˜Œ‡,+ rµps zŽi 0 1 2 Y2Q£…(¶ (· (¸   ¤0¤1 ¤2XX3¯ s¹ *0JŒÔ,+ rµps zŽi 0  Y  2 YY £0¤0 X X3ä*0O!ŒÔ,+ rµps z(º  Ži Y 2£0o» X X3ã*0O#ŒÔ,+ rµps z(¼  Ži Y 0£0o½ Y Y3ã*0˜%ŒÔ,+ rq3ps zŒw,+ r3ps z(7  Ži Ži.!(rZ p(• o– r3ps zY0&£0£1o_ YY3Ú*0˜'ŒÔ,+ rq3ps zŒw,+ r3ps z(6  Ži Ži.!(rZ p(• o– r3ps zY2&£0£1o¾ XX3Ú*0D(ŒÔ,+ rµps z(¼     0 £0o½ Y Y3ç*0b)ŒÔ,+ rµps z(¼  XY(+  0(£0o½ Y¤1Y Y3Ø*0d+Œw,+ rµps z(¿  XY(+  2*£1oÀ YX¤0X X3Ö*0(WŒÔ,+ rµps zŽi Y(+*0(WŒÔ,+ rµps zŽi Y(+*0h-ŒÔ,+ rµps zŽi -(ãrµps z(Á £0 Y 2£0o X X3ã*0 CWŒÔ,+ rµps zŽi -(ãrµps zYY£0(+*0j.ŒÔ,+ rµps zŽi /*39£0£0(+ 1£0 £0¤0¤0**(+( +*‚ŒÔ,+ rµps z( +*~ŒÔ,+ rµps z( +*0(÷ŒÔ,+ rµps z( + ( +*0(÷ŒÔ,+ rµps z( + (+*0'÷ŒÔ,+ rµps z( + (+*zŒÔ,+ rµps z(+*zŒš,+ rB ps z(Ù+*0@2(r—3p(• o– sª z£0o ,*X+À0+ ŒÔ,+ rµps zŽi    (+*¶2*£0o ,(å *X+Ó0+ ŒÔ,+ rµps zŽi    (+*~ŒÔ,+ rµps z(+*0E/ŒÔ,+rµps (Æ+&(+  + £0  (+ X Ži2ä*0K0ŒÔ,+rµps (Æ+&(+  + £0o£  (+ X Ži2Þ*0l/ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0  +£0   (5+, +X Ži2Ý*0ƒ1ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0 o£  +,£0  o£ (+, +X Ži2Î*0l/ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0  +£0   (3+, +X Ži2Ý*0ƒ1ŒÔ,+rµps (Æ+&Ži-(ãrµps (Æ+&+£0 o£  +,£0  o£ (+, +X Ži2Î*0Á2ŒÔ,+rµps (Æ+&¥š Œš,+rB ps (Æ+&oŒ (+ oê , o (+ X+Ú-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*G_¦0Ç3ŒÔ,+rµps (Æ+&¥š Œš,+rB ps (Æ+&oŒ (+ oê ,$ o o£ (+ X+Ô-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*Ge¬0ºöŒÔ,+ rµps z/!(r6"p(• o– rÑ3ps z/!(r6"p(• o– rú)ps zXŽi1!(rá/p(• o– rú)ps z0  Y  2  X£0¤0 X X3æ*&£0**¤0*0‚4ŒÔ,+ r5ps z/!(r6"p(• o– rK3ps z/!(r6"p(• o– rú)ps z XY 2¤0X X3î*0É7ŒÔ,+ rµps zŽi Y  1  sÅ þÆ sÇ (È 2"£, X+XX3Þ1  23 £,  £1¤1X+ X  X3Í*0D8ŒÔ,+ rµps zŽi w sÉ þÊ sÇ (È (÷+*0?9ŒÔ,+ rµps zŽi 1 sË þÌ sÇ (È *0F:ŒÔ,+ rµps z(¦ Ži 1 sÍ þÎ sÇ (È *04;ŒÔ,+ rµps zŽisÏ þÐ sÇ (È *0;<ŒÔ,+ rµps z(¢ ŽisÑ þÒ sÇ (È *0$=0 sÓ þÔ sÇ (È *0ì>ŒÔ,+ rµps zŽi Y  sÕ þÖ sÇ (È 2"£, X+XX3Þ0Y0    2J £, £0¤0X+ £0¤0X X   X3¶s³ *’}× }Ø }Ù }Ú ( *0A?{× {Ø £¦o ,$ {o {Ù ¤{Ú ¤§**r}Û }Ü }Ý ( *0 %{Ý {Û {Ü £¦oÞ ¤š*r}ß }à }á ( *0 %{á {ß {à £¦o ¤§*r}â }ã }ä ( *0 &{ä {ã {â £¦oå ¤§*V}æ }ç ( *j{æ {ç £¦o½ &*V}è }é ( *n{é {è £¦oê &*V}ë }ì ( *j{ì {ë oí ¤¦*r}î }ï }ð ( *0 %{ð {î {ï £¦o  ¤*"oñ *"(À+*"(+*&(+*&(+**(+*"(ø+*"(ù+*(‚ *01{Þ -"(rmp(• o– r3ps z{/ *01{Þ -"(rmp(• o– r3ps z{Þ *.{Þ þ*&( +*0Y@{Þ ,0 {Þ þþ,{Þ {/ -*Y+È(rç3p(• o– rps z0TA{Þ ,E {Þ {/ o« , {¬ (h +¾+³( +*:(j (!+**("+*&(#+*j0*Y(2 +æ04/!(r6"p(• o– rú)ps z(‚ ($+*0uC{Þ ,d {c ,7 {c {Þ {ò {/ o & +·(r 4p(• o– r;4ps z{c -Õ*0D(œ  (%+*0{C{Þ ,j {c ,= {c {Þ {ò {/ o¥ &X +±(r 4p(• o– r;4ps z{c -Õ*0E(¤  (&+*0¸H{Þ 9• {c ,h {ó ,^ {ó {c {Þ {ô {ò {/ oõ    (ö 8ƒÿÿÿ(r 4p(• o–   rG4ps z{c -Õ{ó -Í('+*V(÷ (ø ((+*0ŽI{Þ ,v {c ,I {c {Þ {ò {/ o¡ X (ù +¥(r 4p(• o– r;4ps z{c -Õ()+*V(  (ú (*+**(++*0-J{Þ ,# {Þ {/ o» +Õ*0K{Þ -*(º  (,+*0?L{Þ , {/ {Þ (-+*(rmp(• o– r3ps z0=M{Þ ,. {Þ {/ o»   (h +Ê( +*0K(º  (j (h (.+*0xC{Þ ,f {c ,9 {c {Þ {ò {/ o¾ +µ(r 4p(• o– r;4ps z{c -Õ*0N(6  (/+*0'O   0£0o½ Y Y3ç*0 6P(¼ {Þ 9! {Þ {Þ 9û{Þ {Þ {Þ 9À{Þ {Þ {Þ ,x {Þ {Þ {Þ -E{/  {/ {/ {/ o½ o½ o½ þo½ *(ù+  Ži   Y(0+* {/ {/ {/ o½ o½ þo½ *{/ {/ o½ þo½ *{/ þo½ **0 QQ{Þ -"(rmp(• o– r3ps z(Á (ù+ Ži  Y Y£0(1+*0;R (j (h    0! £0o½ (h Y Y3ß*0eS{Þ ,Q {Þ {Þ -!{/ (œ+(j (h (h *(¼ (ù+ Ži Y(2+*(j (h *0{T(ù+ (3+ Ži Ži  .#(r 4p(• o– r;4ps zY0(£0£1o_ YY3Ø*0çU(7 {Þ 9¹ {Þ {Þ 9\{Þ {Þ {Þ 9Ï{Þ {Þ {Þ :®{c 9¢{c {c 9{c {c {c ,v{c {c {c -_{ò {ò {ò  {/  {/  {/      o_ o_ o_ þo_ *(4+*{c ,í{c {c ,Û{c {c {c -Ä{ò {ò {/  {/    o_ o_ þo_ *{c 9tÿÿÿ{c {c :_ÿÿÿ{ò {/   o_ þo_ *{c :*ÿÿÿþo_ *0 sC{Þ ,a {c ,4 {c {Þ {ò {/  þ(5+*(r 4p(• o– r;4ps z{c -Õ*0yC{Þ ,g {c ,9 {c {Þ {ò {/ o¨ ,  +·*(r 4p(• o– r;4ps z{c -Ô*†{Þ - {c -*(© (6+*&(7+*&(8+*0yC{Þ ,g {c ,9 {c {Þ {ò {/ o¨ ,* +µ(r 4p(• o– r;4ps z{c -Ô*†{Þ - {c -*(© (9+*0FJ{Þ ,$ {Þ {/ o ,*+Ô(r—3p(• o– sª z03J{Þ ,) {Þ {/ o ,(= *+Ï*00V{Þ ,& {Þ {/ o« -+Ô **0MV{Þ ,+ {Þ {/ o« , {¬ *+Í(r—3p(• o– sª z&(:+*&(;+*"(<+*"(=+*&(>+**(?+*&(@+*00W{Þ , {Þ {Þ -*(ù+ (A+(ø+*0/W{Þ , {Þ {Þ -*(ù+ (B+(ø+*"(C+*"¥š*0KJ{Þ ,) {Þ {/ o ,*X+Ï(r—3p(• o– sª z0 X (D+*08J{Þ ,. {Þ {/ o ,(å *X+Ê*0 X (E+*0TY¥š oŒ (+ oê , o (+ +à Þu, oé &Ü&Ü**90ZZ¥š oŒ (+ oê , o o£ (+ +Ú Þu, oé &Ü&Ü*0?0™Y¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (3+, +Ü+Ù Þu, oé &Ü&Ü*+S~0¶[¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o  o£  oê ,/o o£ (+, +Ì+É Þu  ,  oé &Ü&Ü*+p›0™Y¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (5+, +Ü+Ù Þu, oé &Ü&Ü*+S~0¶[¥š Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o  o£  oê ,/o o£ (+, +Ì+É Þu  ,  oé &Ü&Ü*+p›0¥2¥š Œš,+rB ps (Æ+&oŒ (+ oê , o (+ X+Ú-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*+_Š0«3¥š Œš,+rB ps (Æ+&oŒ (+ oê ,$ o o£ (+ X+Ô-(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*+e.þ(F+*N(ù+(+(ø+*:(G+(û *0=4(” ,rp+  o­ Ú 2o¯ o¤ &X X3è*0>4(” ,rp+  o­ Ú 2o¯ (H+&X X3ç*08\(” ,rp+ o­ sý sØ(ÌþoÒ *08\(” ,rp+ o­ sý sÚ(ÍþoÒ *08\(” ,rp+ o­ sý sÜ(ÌþoÒ *0Z]/!(r6"p(• o– rú)ps zsý  Ú  2 oO oÖ  X X3çþoÒ *0m]/!(r6"p(• o– rú)ps z(” ,rp+ o­ sý  Ú  2oÖ  X X3íþoÒ *ªo­ 2*o¯ oþ , Ö+Ù*0"_(” ,rp+   (Ó*ªo­ /o¯ oþ ,*Ö+Ù*0"_(” ,rp+   (Õ*j(” ,rp+o­ *V(’ }®}¯*0Ø{¯{®oÿ o“ *V( }°}±*0Ø{±{°(I+o“ *V(’ }²}³*0Ø{³{²o oÖ *6s (J+*:s (K+*"(L+*&(M+*2( ¥š*6s (J+*04/!(r6"p(• o– rú)ps zs (J+*0S`Œš,+ rB ps zoŒ oê ,o o× &+è Þu , oé &Ü&Ü&*:0@aŒš,+ rB ps zoŒ (N+ Þu , oé &Ü&Ü* (0ZbŒš,+ rB ps zoŒ  oê ,o (O+&X +ã Þu , oé &Ü&Ü&*#A0\cŒš,+ rB ps zoŒ  - oê +,o o +à Þu , oé &Ü&Ü*&D0\cŒš,+ rB ps zoŒ  , oê +,o o +à Þu , oé &Ü&Ü*&D0£eŒš,+ rS4ps zŒÕ,+ rc4ps zoŒ o oê , oê +,o o (Ö+&+Õ Þu, oé &Ü&Ü Þu, oé &Ü&Ü&*;/j4S‡:s (K+*>s (P+*’Œš,+ rB ps zs (Q+*&(R+*’Œš,+ rB ps zs (S+*’Œš,+ rB ps zs (S+*,+ rS4ps zŒÕ,+ rc4ps zs (T+*’Œš,+ rB ps zs (S+*ꌚ,+ rS4ps zŒÕ,+ rc4ps zs (U+*0VŒš,+ rS4ps zŒÕ,+ rc4ps zŒ·,+ rs4ps zs (V+(W+*ŽŒ ,+ rB ps zs (J+*0cfŒš,+ rB ps zoŒ  þþ, oê +,o o« +Ù Þu , oé &Ü&Ü*-K0CŒš,+ rB ps z(X+ ,{¬ *(r—3p(• o– sª z0sgŒš,+ rB ps zoŒ  þþ, oê +,o  o , (= +Ï+Ì Þu, oé &Ü&Ü*:X0CŒš,+ rB ps z(Y+ ,{# *(r—3p(• o– sª z0 [hŒš,+ rB ps z/!(r6"p(• o– rú)ps z-(­+*þ0s *0ŽjŒš,+ rB ps zuÔ ,  Žiþ*u ,  {Þ þ*u»,o þ*oŒ oê þÞu, oé &Ü&Ü*cqzŒš,+ rƒ4ps z(Z+*0”kŒš,+ rB ps zuÔ , Ži*u ,  oñ *u»,þo *oŒ oê , X+îÞu  ,  oé &Ü&Ü*\w0UlŒš,+ rB ps zoŒ  oê ,o ([+ +ç Þu , oé &Ü&Ü*=0smŒš,+ rB ps zoŒ oê -(ârB ps zo oê ,o (\+ +ç Þu , oé &Ü&Ü*=[6s (K+*ꌚ,+ rS4ps zŒš,+ rc4ps zs (]+*:(^+(_+*0]noê oê 3+ ,+ ,*-+þ,*o o (+ , *+£0ˆpŒš,+ rS4ps zŒš,+ rc4ps zoŒ oŒ (`+ Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;P49m"¥š*0‰qŒš,+ rB ps zu , *uÔ ,  (ø+*oŒ (‚ oê ,o (2 +ä(À+ Þu, oé &Ü&Ü*@-mŽŒÔ,+ rB ps zs (J+*0‘rŒš,+ rB ps zuÔ , o ¥Ô*u ,  (ù+*oŒ s° oê ,o o± +æo² Þu, oé &Ü&Ü*J+u6s (J+*0+4Œš,+ rB ps zþ0s *0+4Œš,+ rB ps zþ0s *0 ,sŒš,+ rB ps zþ1s *0@oê ,o o ,*X+Ú(r—3p(• o– sª z0HtŒš,+ rB ps zoŒ   (a+ Þu, oé &Ü&Ü*-¶oê ,"o o ,(å *X+Õ*0HuŒš,+ rB ps zoŒ   (b+ Þu, oé &Ü&Ü*-J{Ø X]£0*0 KŒš,+ rB ps z0!(r6"p(• o– r“4ps zs *0pwo 2e{ ,+oŒ (! (" (# { o$ -* {% oê ,o þo± *oé (" (# **0Io /o& Xs' (( *(c+o /o& Xs' (( **0>yo) { ,$ {* ,{* {% ¥oé +(# *0H{Œš,+ rB ps zs° s+ s, (d+ s- s. ¥š*ŽŒš,+ rB ps zs/ (J+*:s0 (e+*0 <}Œš,+ rB ps zþ0þÌþ0s1 *0 =Œš,+ rB ps zþ0þÏþ0s2 *’Œš,+ rB ps zs3 (L+*ŽŒš,+ rB ps zs4 (L+*’Œš,+ rB ps zs5 (f+*0K€oŒ (+ oê , o  (+ +â Þu, oé &Ü&Ü*(00QoŒ (+ oê , o o£  (+ +Ü Þu, oé &Ü&Ü*.60™‚Œš,+rB ps (Æ+&oŒ (+  oê ,o (+ X +Ü -(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*$Z~0ŸƒŒš,+rB ps (Æ+&oŒ (+  oê ,"o o£ (+ X +Ö -(ârB ps (Æ+&+ (+ Þu, oé &Ü&Ü*$`„0€Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (5+, +ß+Ü Þu, oé &Ü&Ü*$Pt0¬„Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o o£ oê ,-o o£  (+,  +Î+Ë Þu, oé &Ü&Ü*$m‘0€Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o oê ,o  (3+, +ß+Ü Þu, oé &Ü&Ü*$Pt0¬„Œš,+rB ps (Æ+&oŒ oê -(ârB ps (Æ+&+o o£ oê ,-o o£  (+,  +Î+Ë Þu, oé &Ü&Ü*$m‘0+4Œš,+ rB ps zþ0s6 *0 ,4Œš,+ rB ps zþ0s7 *0 ,4Œš,+ rB ps zþ0s8 *0°…Œš,+ rS4ps zŒÕ,+ rc4ps zoŒ o , oê +, oê +,o o (Ï++Ë Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;=x4a•0°…Œš,+ rS4ps zŒÕ,+ rc4ps zoŒ o - oê +, oê +,o o (Ï++Ë Þu, oé &Ü&Ü Þu, oé &Ü&Ü*;=x4a•0WaŒš,+ rB ps zoŒ oê , o Þ&(ârB ps zu , oé &Ü&Ü*!?0kmŒš,+ rB ps zoŒ oê ,o oê , o +î Þ&(ârB ps zu , oé &Ü&Ü*5S0…†Œš,+ rB ps zoŒ oê ,4o oê ,!(r©4p(• o– rB ps z Þ)(ârB ps zu, oé &Ü&Ü*Lj:(9 }: *V{: o; þoÙ *V(9 }< }= *N{< {= (g+*:(9 }> *:{> (h+*V(9 }? }@ *j{? Y(å {@ (h+*V(9 }A }B *j{A {B oX þoC *r(9 }D }E }F *–{D {E oX {F oG þ(i+*:(I }J *:{J (j+*:(K }L *:{L (k+*:(K }M *:{M (l+*:(N }O *>{O (m+*:(K }P *:{P (n+*(Q *&s *(R *0‡(S (T sU *:(9 }V *J{V oØ (o+*ò}W }X }Y }Z }[ }\ }] (^ *0 ;ˆ{\ YE +8ã8Ã8°8ò{X oÙ }Y }\ {W Y(™o_ }[ }\ {[ oê ,q{[ o` }Z {Y oê -+(rÓ4p(• o– sÔ ,¥+z&+}\ {Y oí }] *}Z 8‚ÿÿÿ}\ {[ (p+}[ }\ {Y (q+}Y }\ þ¦}] *0­‰ {\ YE+8ˆ{\ E ++5++++)}\ {[ (p+}\ {Y (q+}\ þ¦}]  Þ t   Þ&8^ÿÿÿþ,z*t ê{\ E +++ +++****"{] *0 {W {X þ¦sa *:(9 }b *v{b oc Œ§¥@(r+*:(d }e *J{e oÙ (s+*V(d }f }g *0&Œ{f oÙ (s+ {g sh (i *:(9 }j *J{j sk ¥*:(9 }l *J{l sm ¥*Ò}n }o }p }q }r }s (^ *0å{r YE +8Š88¦sÞ }p {o oÙ }q }r {p {Ø {n /{q oê +,5{p {p {Ø X(Ú }r {q oí }s *+¦}r {q (q+}q }p }r þ¦}s *0’‰ {r YE+8m{r E + ++++}r {q (q+}r þ¦}s  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{r E + + +++***"{s *0 {n {o þ¦st *Ò}u }v }w }x }y }z ({ *0{y YE +8»8‡8Ð{u oÙ }v }y {v oê 9†{v oí s) }w {v oê ,Y{v oí }x }y {w {¼ {x s. }z *{w {x (¿ þ¦}x +š}w +}y {v (q+}v }y }z *0 {y YE+8h{y E + +!+ +++}y {v (q+}y }z  Þ t    Þ&8~ÿÿÿþ,z*Tp Ò{y E + ++ +++***"{z *0 {u þ¦s| *ò}} }~ } }€ } }‚ }ƒ (^ *0{‚ YE ++=8¥8œ8Á{~ s) }€ }‚ {€ {¼ }ƒ *{ oX } }‚ { oê ,I{€ {} {€ {¼ { o„ (t+(¿ }‚ {€ {¼ }ƒ *+ª}‚ { (u+} }€ }‚ þ¦}ƒ *0œ‰ {‚ YE+8w{‚ E ++$+ +++}‚ { (u++}‚ þ¦}ƒ  Þ t   Þ&8oÿÿÿþ,z*c ê{‚ E +++ +++****"{ƒ *0 %{} {~ { þ¦s… *0D}† }‡ }ˆ }‰ }Š }‹ }Œ } (Ž *0 §{Œ YE +8F88p{† ¦}ˆ {† YsÞ }‰ sÞ }Š {‡ oÙ }‹ }Œ {‹ oê 9â{ˆ {Š {Ø {‹ oí ¤¦{Š {Š {Ø X{† ](Ú {‰ {Ø -v}Œ {† /(ärú)ps z{† ¦  {† Y  2) {† {ˆ {Š (v+¤¦ X X3×} *8-ÿÿÿ{‰ {‰ {Ø Y(Ú 8ÿÿÿ}Œ {‹ (q+}‹ }Š }‰ }ˆ }Œ } *0‡ {Œ YE++e{Œ E + ++++}Œ {‹ (q+}Œ }  Þ t    Þ&8„ÿÿÿþ,z*Qj Æ{Œ E + + +++***"{ *0 {† {‡ s *r( }‘ }’ }“ *0 B‘ {“ (… {‘ {’ {“ (w+ Þ,{“ († &Ü&Ü*),V(¢ }” }• *0=’ {• (… {” {• (x+ Þ,{• († &Ü&Ü*$':(9 }– *>{– þoÙ *V(c }— }˜ *0_•{— o s™  {˜ oš s› (œ ( , o *sü {˜  ož o *(Ÿ *>(  o¡ *(¢ *0'–(£ {¤ (  ¥(y+s¥ *V(¦ }§ }¨ *0F˜(© sª {§ s« {¨ (z+s¬ ¥({+s­ ¥(|+*ò}® }¯ }° }± }² }³ }´ (^ *0#™{³ YE +8È8š8ä(µ s¶ }¯ {® oÙ }² }³ {² oê 9„{² oí }° {° sâ }± {¯ {± o· -*{¯ {± o¸ }³ {° }´ *+þØ}± þ¦}° 8lÿÿÿ}³ {² (q+}² }¯ }³ þ¦}´ *0’‰ {³ YE+8m{³ E + ++++}³ {² (q+}³ þ¦}´  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{³ E + + +++***"{´ *0 +š{® þ¦þØþ¦s¹ *0D}º }» }¼ }½ }¾ }¿ }À }Á (^ *0.›{À YE +8Ó8¥8ï(© s }¼ {» oÙ }¿ }À {¿ oê 9{¿ oí }½ {º {½ o s™ }¾ {¼ {¾ oà -*{¼ {¾ oÄ }À {½ }Á *+þü}¾ þ¦}½ 8aÿÿÿ}À {¿ (q+}¿ }¼ }À þ¦}Á *0’‰ {À YE+8m{À E + ++++}À {¿ (q+}À þ¦}Á  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{À E + + +++***"{Á *0 1œ{º {» þ¦þüþ¦sÅ *V(‡ }Æ }Ç *0!æ{Ç (H+ {Æ (}+¥*:(‡ }È *0æ{È (H+ (~+¥*V(c }É }Ê *0E{É o s™  {Ê oË ,{Ê XoÌ *{Ê oÌ *(Í *0=(Î {Ï (Ð sÑ *V(Ò }Ó }Ô *05Ÿ(µ sÕ {Ó sÖ {Ô (+s× ¥(€+*Ò}Ø }Ù }Ú }Û }Ü }Ý (^ *0ð{Ü YE +8œ8Œ8±{Ù oÙ }Ú }Ü þ¦s) }Û {Ú oê ,/{Û {Ú oí (¿ {Ø {Û {¼ o  +,}Ü {Û {¼ }Ý *+£}Û }Ü {Ú (q+}Ú }Ü þ¦}Ý *0’‰ {Ü YE+8m{Ü E + ++++}Ü {Ú (q+}Ü þ¦}Ý  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{Ü E + + +++***"{Ý *0 {Ø {Ù þ¦sÞ *ò}ß }à }á }â }ã }ä }å (^ *0Fˆ{ä YE +8î8¤8ß8ý{à oÙ }á }ä {ß (™o_ }ã }ä {ã oê ,T{ã o` }â {á oê -+(rÓ4p(• o– sÔ ,¥+z&+}â +Ÿ}ä {ã (p+}ã {á oê ,}ä {á oí }å *+Ö}ä {á (q+}á }ä þ¦}å *0¯‰ {ä YE+8Š{ä E ++7+ + ++++}ä {ã (p+}ä {á (q+}ä þ¦}å  Þ t   Þ&8\ÿÿÿþ,z*v’ ê{ä E +++ +++****"{å *0 {ß {à þ¦sæ *ò}ç }è }é }ê }ë }ì }í (^ *0){ì YE +8Õ8µ8ê{è oÙ }é }ì þ¦s) }ê sC }ë {é oê ,v{ê {é oí (¿ {ë {; ,+{ç {ê {¼ o  þ,,{ë (< }ì {ê {¼ }í *8ƒÿÿÿ8}ÿÿÿ}ë }ê }ì {é (q+}é }ì þ¦}í *0’‰ {ì YE+8m{ì E + ++++}ì {é (q+}ì þ¦}í  Þ t   Þ&8yÿÿÿþ,z*Yu Æ{ì E + + +++***"{í *0 {ç {è þ¦sî *"sï *>sð (K+*Rsñ sò (+*03¡{ó ,* {ó {ô oð Þ («&Ü &** $ 0f£{õ oê ,O{õ o Œ1 u« ,+Í{ö oé  þ1oŒ }ö þ(‚+*o÷ *0-¥{ö oê ,{ö o }ø * þ(ƒ+*fsù sú sû ¥·*6sü (K+*0,§{; - („+&+{ý ,{þ *(…+*J{; -(< **0%©sC sÿ s (†+(‡+*Ns s ¥š*>s ¥'*&}Ï *"{Ï *0«s s **o &**þ(@+*.þ(ˆ+*F} o &*Z{ {Ï þo *v{ {Ï {Ï þo *F}  o &*B{  þo  *N{  o  ¥*.s  € *( *~ *&*2s ¥*Fs ¥¥*r(9 } } } *f{ { { (‰+*V(F } } *Ž{ o  ,{ o (J **(c *0¬Œ¦ u ,  oé **bo &} } *0X®{ o; oÙ u° , { oÍ Þ%{ (Š+ Þt { oð &þ*?@J¥oÙ ¥*þo &oX } s ¥} } } ( } *0¯} { ,{ oé  Þ } &Ü Þ] ÞY{ ,{ oé  Þ } &Ü Þ- Þ){ (‹+(« Þ( } &Ü&Ü&Ü&*@! >N bx5,a),4Y0*Š{ - („+&+{ ,(Œ+*{ *R{ ( } *"o *6o Œ¦*0*±{ - } +{ ,* þ(+*n(r÷4p(• o– s zJ{ -o  **:(¢ }! *0&{! Œ¦,{! þ¦oé **V(‡ }" }# *v{# {" o$ Œ­¥*:(9 }% *J{% s& ¥*ž}' }( }) }* o &*R{) {* (Ž+*f{) {* (Ž+Œ*0\²{) (±{' o… Þt  {* (+ þ,{* {( (, (+ *{* (+ *n(r÷4p(• o– s z *’(. }/ }0 }1 }2 *~{/ {0 {1 {2 s3 *:(‡ }4 *"{4 *:(5 }6 *>{6 on *b}7 }8 o &*R{7 {8 o½ &*~}9 }: }; o &*r-p*>{9 o½ &*>{: o½ &*0-{; s< o= {9 o½ &{: s> *0³o? , {ð oð &**0>¶o@ oA  uA-uB-tC {B (C **(+*0 ¸uE ,  {D *sE ¥©*0 ºuF ,  {F *sG ¥?*.sH €I *( *~I **uGþ*sJ **uHþ*sK **uIþ*0¼ uI,+ uH,+*(L *:(L }M *{M *:(L }N *{N *:( }O *:( }P *2{P {M *:( }Q *2{Q {N *bo &}R }S *"{R *"{S *0/¾uî , {R sT +à sU ¥@*"sV *>{R þoW *V(d }Y }Z *z{Z {S o[ {Y (i *:(\ }] *0bÀ{] {R (+  uH- uI-{] {S o[ (^ **tI {N {] {S (i (^ *~o &}_ }` }a *"{_ *0.Á{` -(r5p(• o– sÔ z{à *J¥oí Œ¦*0}Ã{a -s{_ (+ uH-uI-,}` }a *tH {M ( }` *tI {N }_ ¥þoê **n(r÷4p(• o– s zb{a -{_ þ(‘+**Fo &}b *"{b *"sc *0Ä{b sd (± *:(\ }e *¾{e {b oê ,{e {b oí (f *(g *:(¢ }h *:{h oé *n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z"si *0goê -!(rÓ4p(• o– rps z/!(r6"p(• o– rps z- þo *Y+™:sj ¥®*0»sÞ sk ¥®*>sl ¥W*0,Å{; - („+&+{m ,{# *(’+*0ÆsC sZ sn *ò{; - (< +oê ,o o ,*+Æ*0ksC so *0ÇsW sp ¥®*0W{Ø 3 („+&+{Ø þ3 (“+&+{q Œ×,+sr (”+(s {q oÞ *0JÉ, {Ì /{Ì st ¥©*-ý+{Ì sÞ su  sv *0{m , (w **0&Å (… (•+ Þ, († &Ü&Ü*0,Å{; - („+&+{m ,{# *(’+*J{; -(< **0!Ê(–+(—+ Þ (w &Ü&* 0,ÌsC sZ oð (= sx sy *&sz *F}{ o &*J{{ oì (t+*J{{ oì ¥*>{{ þoê *n(r÷4p(• o– s z0Í{{ u ,  þoé **Fo &}| *0Š{| - („+&+(Œ+*0Š{| - („+&+(˜+*Z{| - }| +*n(r÷4p(• o– s z *ŠsG€\sG€]sG€^*:( }[*~\**(Nþ*~]**(Nþ*~^**(Nþ*{[*Vo &(H}} *Þ{} (NE („+&+ (“+&+{~ *"o *6o Œ¦*¦(J}} |~ o€ ,*(L}} *n(r÷4p(• o– s z*þo *b}‚ }ƒ o„ &*º{ƒ oê ,{‚ {ƒ o„ o… ¦**>{ƒ þoé *~}† }‡ }ˆ o„ &*0Q{ˆ {ˆ {Ø X(Ú {‡ oê ,){† {ˆ {Ø {‡ o„ (™+¦**>{‡ þoé *~}Š }‹ }Œ o„ &*0OÎ{‹ oê {Œ oê ,+,){Š {‹ o„ {Œ o (š+¦**0#Ê{‹ oé  Þ{Œ oé &Ü&*ž} } }‘ }’ o &*R{‘ {’ (›+*f{‘ {’ (›+Œ¦*0€{‘ {; -{‘ (< +{’ (0 {’ {- þ,{ oê +,${’ { { o„ o“ (0 +¹{’ {- þ*n(r÷4p(• o– s z>{ þoé *~}” }• }– o &*0(Š{– {; - („+&+{• þoí *0+Š{– {; - („+&+{• oí Œ¦*0/Ð{” {• {– {” {• {– (œ+*n(r÷4p(• o– s z>{• þoé *b}— }˜ o„ &*0LÒ{— {˜ {# o™ ,/ {š ( {š (  ¦{˜ (% ** *V(Û }› }œ *j{› {œ {Ø þoí *ž} }ž }Ÿ }  o &*j{ {Ÿ {  (+*~{ {Ÿ {  (+Œ¦*0¦Ó{Ÿ {Ø þ3*{Ÿ {Ø 3{Ÿ (Ú {  (¡ *{Ÿ {Ø ÿÿÿ3(rS5p(• o– sÔ z{Ÿ {Ø {ž 3*{Ÿ {Ø X {Ÿ (Ú {  (¡ *n(r÷4p(• o– s z *¾}¢ }£ }¤ }¥ }¦ o &*R{¤ {¥ (ž+*f{¤ {¥ (ž+Œ¦*0‹Ô{¤ (6{¦ {§ ,l {o {¢ o“ Þ"t {£ {¥ {¦ (Ÿ+þ ,{¥ (0 *{£ {¥ {¦ (Ÿ+**'8"n(r÷4p(• o– s zj{£ {¦ ( +þ(¡+*šo &}¨ }© {¨ Ži}ª *Ú{© 2&{© {ª 2(Œ+*{¨ {© £¦*(¢+*"o« *º{© {ª 2*{© X}© {© {ª þ*6o« Œ¦*n(r÷4p(• o– s z *bo &}¬ }­ *"{¬ *6{¬ Œ¦*R{­ ,*}­ *n(r÷4p(• o– s z *b}® }¯ o &*>{¯ þoí *R{¯ ¥þoì *>{¯ þoê *n(r÷4p(• o– s z0#Ê{¯ oé  Þ{® oð &Ü&*b}° }± o^ &*"{± *0Õq {± oê ,**0$Ê{± oé  Þ{° oæ &Ü&**>{± þoí *(Z+*0×(² s³ *F}´ o &*F{´ þoµ *s¶ *"s· *s¸ *0Ù(¹ sº **o &**þ(@+*.þ(ˆ+*F}» o &*B{» þ(£+*.þ(ˆ+**o &*6Œ¦(¼ *&(¤+*b}½ }¾ o &*B{½ þo¿ *F{¾ þoÀ *0,,{# *(r‰5p(• o– r¯5ps zþ*&þþ*",**0, {# þ([+**0, {# þ(œ+**0, {# þo **0, {# þo **0, {# o× &**0], {# o£ (L **0, {# þo« **0!, 0%{# ¤0*0*0, {# (‚ (2 *(‚ **(% **(% *&o$ *&o$ **(Á *.( *0U/!(r6"p(• o– rps z/!(r6"p(• o– r½5ps zsà *0{-þ+,+Ð0(W b%¤b%¤b(Ä ¥€*Ð0(W b%¤b%¤bb%¤b%¤b(Å ¥€*0IÛ(¥+  ÖÚ 20ÖÚ 2( X X3èX X3Ð*0QÛ(¥+  ÖÚ 28ÖÚ 2 (¦+( X X3àX X3È*2(§+*2(¨+*0‡ÜŒ€,+ rµps z(% (% o$ o$ ÖÚ2=  ÖÚ2(Á o× &XX3áXX3Ã*0‹ÜŒ€,+ rµps z(% (% o$ o$ ÖÚ2A  ÖÚ2#(Á (©+&XX3ÝXX3¿*0BŒ€,+ rµps zo$ o$ (% (% sÇ (ª+*0BŒ€,+ rµps zo$ o$ (% (% sÈ (ª+*0AŒ€,+ rµps zo$ o$ (% (% sÉ (¨+*0 G,Œ€,+ rµps zo$ o$ (% (% sÊ (¨+*0 ÝŒ€,+ rB ps zŒ€,+ r5ps zo$ /!(rá/p(• o– rÁ5ps zo$ /!(rá/p(• o– rÛ5ps zo$ /!(rá/p(• o– rõ5ps zo$ /!(rá/p(• o– r6ps zÖ(% o$ Ö1!(rá/p(• o– r)6ps zÖ(% o$ Ö1!(rá/p(• o– r76ps zÖ(% o$ Ö1!(rá/p(• o– r)6ps zÖ(% o$ Ö1!(rá/p(• o– r76ps z Ú 2@Ú 2)ÖÖÖÖ(Á ( X X3×X X3À*V(Ë }Ì }Í *r{Ì {Í (Î þo… *V(Ë }Ï }Ð *0 {Ï {Ð (Î þ(«+*:(Ë }Ñ *>{Ñ (Ò *r(Ë }Ó }Ô }Õ *v{Ó {Ô Ö{Õ Ö(Ò *"0*0Iõ/(ärú)ps (Æ+&+0  Y 2oš ¤0X X3è*0µÞŽi0 Ži¦  +ZoÖ /+ Žiþþ,#(rE6p(• o– re6ps z £0¤0 ¤¦X Ži2  +2£¦.#(rE6p(• o– re6ps zX Ži2È*0Bߎi /*Ži1  +£0o£ ¤1X Ži2â(¬+(­+*0WŽi /*(®+( +*0äáŽib  + ¤bX Ži2î(¬+ (¯+o ¥Ô (°+ Ži<“£1/ 3+£1oØ þ+, X+Í Y 2$  £b£0¤0 X  X3ÜY2Y(±++ 8eÿÿÿ*0>ߎi /*Ži1  +£0o£ ¤1X Ži2â(²+*0,WŽi /*(®+,o ¥Ô(³+*(´+*0*J{Þ ,! {Þ {/ o× &+×*0Eâ{c ,1 {c {ò oÖ (2  }Þ +Ç(‚ }Þ *0^ã{Þ ,P {Þ {Þ -{/ o£ (j (h *{Þ {/ o£ (h (µ+ *(j *0Kâ{c ,7 {c {ò oÛ (2  }Þ X+Á(‚ }Þ *0kä{Þ ,] {Þ {Þ -{/ (¶+(j (h *{Þ {/ (¦ o§ (h  (·+*(j *0“å{c ,w {ó ,J {ó {c {ô {ò oÜ (2 }Þ  +¤(r 4p(• o– rw6ps z{ó -Õ(‚ }Þ *0Žæ{Þ ,x {c ,K {c {Þ {ò {/ (ž oŸ (ù  (¸+*(r 4p(• o– rw6ps z{c -Õ(ú *0.J{Þ ,# {Þ {/ o ,+×**0.J{Þ ,# {Þ {/ o ,*+Õ*0)J{Þ , {Þ {/ (2 +Ù*0Rç{Þ ,H {Þ {Þ ,7{Þ {Þ {/ {/  (‚ (2 (2 (¹+***09è{Þ ,( {Þ {/ (2  }Þ +Ð}Þ *0<J{Þ ,( {Þ {/ oÝ (º++Ð(j }c *0Oé{Þ ,A {Þ {Þ -{/ þoÝ *þ1 (h (»+oÞ *(j *0Oè{Þ ,? {Þ {/ o ,(2  }Þ +Ä+¹}Þ *0gè{Þ ,] {Þ {Þ -{Þ {/ o ,**{Þ {/ o ,(2 (¼+ *+›*00J{Þ ,' {Þ {/ o£ &X+Ñ*0ê(¢  (½+*02ì{ß ," {ß {à (¾++Ö}Þ *0^í{ß ,P {à {Þ ,5{à {ß {Þ {/ (2  (¿+*{ß +¨(‚ *0Xîu , *oŒ (‚ oê ,o (2 +è (À+ Þu, oé &Ü&Ü*'=0eï(À+ {ß ,O {ß {ß ,7{ß {ß {ß -{à {à  ( +*(Á+*{à *(‚ *06ð/%oš (2 }Þ X+Ö(‚ }Þ *09ð/(ärú)ps z-(‚ *oš (2 (Â+*0cè{Þ ,L {Þ {/ (2 o , }Þ +Á }Þ  +¬}Þ }Þ *0Qè{Þ ,@ {Þ {/ (2 o , }Þ +Ä (Ã+ *}Þ *0Qè{Þ ,@ {Þ {/ (2 o , (Ã+ * }Þ +¸}Þ *0„è{Þ ,t {Þ {Þ -({Þ {/ o ,s× *s× *{Þ {/ (2 o , (Ä+s× * (Å+ s× *s× *0pñ{ ,Q { { (Ö { (× (2 (h }Þ }c +§(‚ }Þ (j }c *0añ{ ,I { { (Ö { (× (2 (h (Æ+sá *(‚ (j sá *0¡ó{â ,w {â {ã (¶ {ã (· {ã (¸ (2  (h (ù }Þ }c }ó 8ÿÿÿ(‚ }Þ (j }c (ú }ó *0ó{â ,d {â {ã (¶ {ã (· {ã (¸ (2  (h (ù (Ç+sä *(‚ (j (ú sä *0ô{Þ ,s {c ,F {c {Þ {ò {/ sg (h }  +¨(r 4p(• o– rw6ps z{c -Õ(i } *0‚ô{Þ ,l {c ,? {c {Þ {ò {/ sg (h  (È+*(r 4p(• o– rw6ps z{c -Õ(i *0¿õ{Þ 9˜ {c ,k {ó ,a {ó {c {Þ {ô {ò {/ s´ (å   }â   8€ÿÿÿ(r 4p(• o–   r6ps z{c -Õ{ó -Í(æ }â *0­õ{Þ 9Œ {c ,_ {ó ,U {ó {c {Þ {ô {ò {/ s´ (å    (É+ *(r 4p(• o–   r6ps z{c -Õ{ó -Í(æ *0/J{Þ ,& {Þ {/ ¤0X+Ò*0öoñ 0  (Ê+*0/÷Ži (‚ Y   0 £0(2 Y Y3è*&(Ë+*0)J{Þ , {Þ {/ (2 +Ù*0vø{Þ ,j {Þ ,V {/ {/ {Þ {Þ  (+1(2 +­ (2 +˜ (Ì+* +ôÂ(+1(‚ (2 (2 *(‚ (2 (2 *0¼/þ+,;(+1(‚ (2 (2 (2 *(‚ (2 (2 (2 *151(‚ (2 (2 (2 *(‚ (2 (2 (2 *1(‚ (2 (2 (2 *(‚ (2 (2 (2 *0 k,(+ (+ 1þ+,;(+1(‚ (2 (2 (2 *(‚ (2 (2 (2 *(Í+*0ð{Þ , {Þ {Þ þ**0Ëù<ž{ç {Þ 9 {Þ {Þ ,r{Þ {/ {/ {Þ 3(è  (Î+*{Þ ,*{/ {Þ (è  (Ï+*r‡6ps¤ zr‡6ps¤ zc  (Ð+ Y(Ð+(‚ (Ñ+*0 û(Ò+,*sé oñ (Ð+*fsê þë sì sí *6sî (”+*.oï þ*"oï *"oÞ *"oÞ *"oÞ *:}ð ( *B{ð þoë *:(Û }ñ *"{ñ **"(C+*"Œ0*z"s¤ *šoò Ð (W o , o¦ (o **þ*&(5+*&(3+*&(2+*&(4+*.þ(6+*2(6+þ*.þ(Ó+*:(5+,**:(5+,**"s¤ z:s (Ô+*6s (Ô+*6sÔ (Ô+*2r“6psè z2rñ6psè z"(× *"(Ö * *"sW *&(ô *"{õ *.þo£ *2þ(+*6þ(!+*.þo£ *2þ(+*6þ(!+*&sö *&s÷ *&(Ç *6,{# **2rO7psè z.þ(:+*2ròpsè z.þ(;+*2rÂpsè z2r^psè z2r¿7psè z2r'8psè z2r8psè z2rù8psè z2rc9psè z2rË9psè z2r7:psè z0Dü{Þ ,: {Þ {/ {Þ -*(‚ (2 (Õ+}Þ **B{Ø X(Ú *B{Ø Y(Ú *J(ø r¡:ps¤ z2rí:psè z2rI;psè z2r§;psè z2r<psè z2re<psè z2rÅ<psè z2r˜ psè z6Œb¥0*V(ƒ („ sg *.#ð*.#øÿ*"€*"Àÿ*2r#=psè z2rƒ=psè z2rá=psè z2rA>psè z2r¡>psè z2r?psè z2re?psè z0<ýŒ0 ,+u™ , ( ¥sþo; * þoÒ *rp*2rÅ?psè z02þ Œ0(… où Þ,Œ0(† &Ü&Ü*0,ÿo£ ÞŒ0, þ0oé &Ü&Ü* 2Ð0(W *2r!@ps¤ z0SÐ0(W oc , þod **"þ0**þ(Ö+*.þ(×+**(ú *(Ü *(Ý *N(Ø+sû (Ù+*R(+sü (Ú+**þ(Û+**þ(Ü+**þ(Ý+**þ(Þ+*.þ(ß+**þ(à+**þ(á+**þ(â+**þ(ã+**þ(ä+**þ(å+**þ(æ+**þ(ç+**þ(è+**þ(é+**þ(ê+**þ(ë+**þ(ì+**þ(í+**þ(î+*.þ(ï+*0l/ €39X (Ø+sý (ð+ /(Ø+ rÂpsè z rÂpsè z(Ø+sþ (ð+ /(Ø+ rÂpsè z*V(U }ÿ } *n{ {ÿ o þo *V( } } *n{ { o$ þo *( *.þ(ñ+*(u *.þ(ò+*( *.þ(ó+*( *.þ(ó+*n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z.#àÁ*.#ÀÿÿÿßA*¾#àÁ5#ÀÿÿÿßAþþ+, ( þ**09Î3 s  ¥é*þ ,þ+þþ s¥é*06s -!(r@p(• o– r±@ps zs*0IÎ3 s  ¥§*þ ,!þ+ !þþ s#¥§*06s! -!(r@p(• o– r±@ps zs)*0IÎ3 s  ¥©*þ ,!þ+ !þþ s.¥©*06s, -!(r@p(• o– r±@ps zs4*09Î3 s  ¥«*þ ,þ+þþ s9¥«*06s7 -!(r@p(• o– r±@ps zs?*0KÎ3 s  ¥­*þ ,!Óþ+!Óþþ sD¥­*0@ sB !Ó3!(r@p(• o– r±@ps zsJ*0KÎ3 s ¥¯*þ ,!àþ+!àþþ sO¥¯*0@ sM !à3!(r@p(• o– r±@ps zsU*09Î3 s ¥±*þ ,þ+þþ sZ¥±*06 sX -!(r@p(• o– r±@ps zs`*09Î3 s ¥³*þ ,þ+þþ se¥³*06sc -!(r@p(• o– r±@ps zsk*09Î3 s ¥µ*þ ,þ+þþ sp¥µ*06sn -!(r@p(• o– r±@ps zsv*09Î3 s ¥·*þ ,þ+þþ s{¥·*06sy -!(r@p(• o– r±@ps zs*0:Y[l (—,6i 3lZXs ¥¹*þ þþ  s„¥¹*#þ,#(r@p(• o– r±@ps z.#(r»@p(• o– rps z.#(rÝ@p(• o– r±@ps z.#(rý@p(• o– r½5ps zþ, s ¥¹*þ ,#þ+ #þþ  sŠ¥¹**s*0.Y[l (—,6i 3kZXs ¥»*þ þþ  s’¥»*"þ,#(r@p(• o– r±@ps z.#(r»@p(• o– rps z.#(rÝ@p(• o– r±@ps z.#(rý@p(• o– r½5ps zþ, s ¥»*þ , "þ+ "þþ  s˜¥»**s*0.Š(6+, s ¥©*(5+ s ¥©*.s *0KÎ(è+, s ¥®*(+ , (5++(3+þ s ¥®*08(6+,!(r@p(• o– r±@ps zs *0%Š3 s ¥Ã*þ s²¥Ã*0  s¸*0SE$.[(¶ Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0  (¶*0SE$.[(¸ س ]-*س***س*س س*س س*0  (¸*0SE$.[(º ص ]-*ص***ص*ص ص*ص ص*0  (º*0SE$.[(¼ Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0  (¼*0J,E!'[(¾ Ø ]-*Ø***Ø*ØØ*Ø Ø*0 W (¾*0JE!'[(À Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0  (À*0R¾E#%)/[(Â Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0  (Â*0R!E#%)/[(Ä Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 " (Ä*0S#E$&*0[(Æ Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 $ (Æ*0S%E$&*0[(È Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0 & (È*0N'E!%+[(Ê Z ]-*Z*"€?**Z*ZZ*Z Z*0 ( (Ê*0R)E#%)/[(Ì Z ]-*Z*#ð?**Z*ZZ*Z Z*0 * (Ì*0g+E"$&.<[(Î ( ]-*( ***( *( ( *( ( *0, s   (Î*0w5E')+6H[(ô+ (\+ ]-*þ(\+***þ(\+*(\+þ(\+*(\+ þ(\+*0.   þ(ô+*0k/,  {Ì + ,  {Ì +ŽiY YX 0 Y2!X£0¤0XX3ß*0`0,  {Ì + ,  {Ì +ŽiY YX  Y2 X£0¤0XX3à*0d½, {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y YX YX(õ+*0g½, {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y YX YX(ö+*0 ™1, {Ì + , {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y, {Ì + (% Y YXYXYX(÷+*0 œ1, {Ì + , {Ì + , {Ì + , {Ì + (% Y , {Ì + (% Y, {Ì + (% Y YXYXYX(ø+*0 ÎÜ, {Ì + , {Ì + , {Ì + , {Ì + , {Ì + (% Y, {Ì + (% Y, {Ì + (% Y, {Ì + (% Y YXYXYX YX(ù+*0 ÑÜ, {Ì + , {Ì + , {Ì + , {Ì + , {Ì + (% Y, {Ì + (% Y, {Ì + (% Y, {Ì + (% Y YXYXYX YX (ú+*0;2,  {Ì + ,  {Ì + o­ Y YXo¼ *0)3Ð0(W %¤o s *0<4Ð0(W Ð1(W %¤%¤o s *>~  þo! *>~" þo! *>~# þo! *>~$ þo! *B~% þ(û+*>~& þo! *>~' þo! *>~( þo! *>~) þo! *>~* þo! *>~+ þo, *>~- þo! *>~. þo! *>~/ þo£ *>~0 þo! *>~1 þo! *>~2 þo! *>~3 þo! *>~4 þo! *>~5 þo! *B~6 þ(ž+*Fo &}7 *.þo8 *:o8 Œ¦*0C{7 E*o9 , }7 *}7 *o: ,*}7 *F}7 þo; * *¦{7 E (ü+*(ý+*þo< **o= &*** *0 þ¦*Fo= &}> *** *"{> *’o? &}@ }A {@ }B *:{@ }B *B{B þoC *0nH{B {B oD oE ,*oF ,*oE ,{A oE +, }B *{A oF , }B **’o= &}G }H {G }I *:{G }I *"{I *0H{I {I oJ oK ,*oL ,{H oL +, }I *{H oK , }I *{H oL ,*oK -**(M *X*î}§}¨}©}ª}«{§{©oN &*"{«*N{ª,þ*þ*þ**{¨X**ž}¬}­}®}¯o &*0 {¬{­{®{¯(˜*0 %{¬{­{®{¯(˜¥*(O *X*î}°}±}²}³}´{°{²oP &*"{´*N{³,þ*þ*þ**{±X**ž}µ}¶}·}¸o &*0 {µ{¶{·{¸(š*0 %{µ{¶{·{¸(š¥*(R *X*î}¹}º}»}¼}½{¹{»oS &*"{½*N{¼,þ*þ*þ**{ºX**ž}¾}¿}À}Áo &*0 {¾{¿{À{Á(œ*0 %{¾{¿{À{Á(œ¥*(U *X*î}Â}Ã}Ä}Å}Æ{Â{ÄoV &*"{Æ*N{Å,þ*þ*þ**{ÃX**ž}Ç}È}É}Êo &*0 {Ç{È{É{Ê(ž*0 %{Ç{È{É{Ê(ž¥*(X *X*î}Ë}Ì}Í}Î}Ï{Ë{ÍoY &*"{Ï*N{Î,þ*þ*þ**{ÌX**ž}Ð}Ñ}Ò}Óo &*0 {Ð{Ñ{Ò{Ó( *0 %{Ð{Ñ{Ò{Ó( ¥*([ *X*î}Ô}Õ}Ö}×}Ø{Ô{Öo\ &*"{Ø*N{×,þ*þ*þ**{ÕX**ž}Ù}Ú}Û}Üo &*0 {Ù{Ú{Û{Ü(¢*0 %{Ù{Ú{Û{Ü(¢¥*(^ *Xh*î}Ý}Þ}ß}à}á{Ý{ßo_ &*"{á*N{à,þ*þ*þ*.{ÞXh**ž}â}ã}ä}åo &*0 {â{ã{ä{å(¤*0 %{â{ã{ä{å(¤¥*(a *XÑ*î}æ}ç}è}é}ê{æ{èob &*"{ê*N{é,þ*þ*þ*.{çXÑ**ž}ë}ì}í}îo &*0 {ë{ì{í{î(¦*0 %{ë{ì{í{î(¦¥*(d *Xg*î}ï}ð}ñ}ò}ó{ï{ñoe &*"{ó*N{ò,þ*þ*þ*.{ðXg**ž}ô}õ}ö}÷o &*0 {ô{õ{ö{÷(¨*0 %{ô{õ{ö{÷(¨¥*(g *XÒ*î}ø}ù}ú}û}ü{ø{úoh &*"{ü*N{û,þ*þ*þ*.{ùXÒ**ž}ý}þ}ÿ} o &*0 {ý{þ{ÿ{ (ª*0 %{ý{þ{ÿ{ (ª¥*Ú} } } } } { oj &*"{ *N{ ,þ*þ*þ*X*J{ l{ ZX*î} } } } } { { ok &*"{ *N{ ,þ*þ*þ**{ X*~} } } o &*j{ { { (¬*~{ { { (¬¥*Ú} } } } } { om &*"{ *N{ ,þ*þ*þ*X*J{ k{ ZX*î} } } } } { { on &*"{ *N{ ,þ*þ*þ**{ X*~} } } o &*j{ { { (®*~{ { { (®¥*î}p }q }r }s }t {r {s ou &*"{t *&(þ+*.þ(ˆ+*Z{q {p þ(ÿ+**ž}w }x }y }z o &*0 {w {x {y {z (+*0 %{w {x {y {z (+¥*0C}{ }| }} }~ } }€ {| {~ ou &*"{€ *f{ ,(þ+*(+*.þ(ˆ+*Z{{ {} þ(t+**¾} }‚ }ƒ }„ }… o &*0 &{ {‚ {ƒ {„ {… (+*0 +{ {‚ {ƒ {„ {… (+¥*Î}/ }0 }1 }2 {/ {0 o† &*"{2 *þ*þ*0 {1  XÑ**~}3 }4 }5 o &*j{3 {4 {5 (´*~{3 {4 {5 (´¥*:(U }ˆ *0 &{ˆ %Œ¦¤oë ¥§*:(‰ }Š *0 3{Š %Œ¦¤%Œ§¤oë ¥­**o &*0]6Ц(W Ф(W o ,sÂ¥r s‹ 8!Ð¥(W o ,sÆ¥r sŒ 8øÐb(W o ,sÊ¥r s 8ÏБ(W o ,sÎ¥r sŽ 8¦Ю(W o ,sÒ¥r s 8}Ð’(W o ,sÖ¥r s +WГ(W o ,sÚ¥r s‘ +1Ð7(W o ,sÞ¥r s’ + rAp(+€“ *~“ *(” *"(• *:(– }— *B{— þo˜ *(™ *"(š *:(– }› *B{› þo˜ *(œ *"( *:(– } *B{ þo˜ *(ž *"(Ÿ *:(– }  *B{  þo˜ *(¡ *0.$!Ó2*e !Ó/ (ás¢ z*:(– }£ *B{£ þo˜ *(¤ *"(¥ *:(– }¦ *B{¦ þo˜ *(§ *"(¨ *:(– }© *B{© þo˜ *(ª *"(« *:(– }¬ *B{¬ þo˜ **o &*0j6Ц(W Ð’(W o ,så¥r s­ +1Г(W o ,sé¥r s® + r#Ap(+€¯ *~¯ *(¤ *"(° *:(– }± *B{± þo˜ *(§ **l(° k*:(– }² *B{² þo˜ **o &*0j6Ц(W Ð’(W o ,sð¥r s³ +1Г(W o ,sô¥r s´ + r-Ap(+€µ *~µ *(¤ *"(¶ *:(– }· *B{· þo˜ *(§ **l(¶ k*:(– }¸ *B{¸ þo˜ **o &*0j6Ц(W Ð’(W o ,sû¥r s¹ +1Г(W o ,sÿ¥r sº + r7Ap(+€» *~» *(¤ *"(¼ *:(– }½ *B{½ þo˜ *(§ **l(¼ k*:(– }¾ *B{¾ þo˜ **o &*0j8Ц(W Ð’(W o ,s¥{ s¿ +1Г(W o ,s ¥{ sÀ + rAAp(+€Á *~Á *( *&(à *:(U }Ä *B{Ä þo *:(Å }Æ *0:{Æ oÇ sÈ *(É *2ll(à k*:(U }Ê *B{Ê þo *:(Å }Ë *0:{Ë oÇ sÌ **o &*0j6Ц(W Ð’(W o ,s¥r sÍ +1Г(W o ,s¥r sÎ + rMAp(+€Ï *~Ï *(¤ *"(Ð *:(– }Ñ *B{Ñ þo˜ *(§ **l(Ð k*:(– }Ò *B{Ò þo˜ **o &*0j6Ц(W Ð’(W o ,s ¥r sÓ +1Г(W o ,s$¥r sÔ + r]Ap(+€Õ *~Õ *(¤ *"(Ö *:(– }× *B{× þo˜ *(§ **l(Ö k*:(– }Ø *B{Ø þo˜ **o &*0j6Ц(W Ð’(W o ,s+¥r sÙ +1Г(W o ,s/¥r sÚ + reAp(+€Û *~Û *(¤ *"( *:(– }Ü *B{Ü þo˜ *(§ **l( k*:(– }Ý *B{Ý þo˜ **o &*0j6Ц(W Ð’(W o ,s6¥r sÞ +1Г(W o ,s:¥r sß + rqAp(+€à *~à *(¤ *"(á *:(– }â *B{â þo˜ *(§ **l(á k*:(– }ã *B{ã þo˜ **o &*0j6Ц(W Ð’(W o ,sA¥r sä +1Г(W o ,sE¥r så + rƒAp(+€æ *~æ *(¤ *"(ç *:(– }è *B{è þo˜ *(§ **l(ç k*:(– }é *B{é þo˜ **o &*0]<Ц(W Ð’(W o ,sL¥~ sê 8!Г(W o ,sP¥~ së 8øЮ(W o ,sT¥~ sì 8ÏÐ7(W o ,sX¥~ sí 8¦Ð¥(W o ,s\¥~ sî 8}Ðb(W o ,s`¥~ sï +WБ(W o ,sd¥~ sð +1Ф(W o ,sh¥~ sñ + rAp(+€ò *~ò *(ó *"(ô *:(õ }ö *B{ö þo¿ *(÷ *&l(ô *:(õ }ø *B{ø þo¿ *(ù *†!Ó/*!Ó1**:(õ }ú *B{ú þo¿ *(û *"(ü *:(õ }ý *B{ý þo¿ *(þ *"(ÿ *:(õ } *B{ þo¿ *(œ *"( *:(õ } *B{ þo¿ *( *"( *:(õ } *B{ þo¿ *( *"( *:(õ } *B{ þo¿ **o &*0j6Ц(W Ð’(W o ,so¥r s  +1Г(W o ,ss¥r s  + r™Ap(+€  *~  *(¤ *"(  *:(– }  *B{  þo˜ *(§ **l(  k*:(– } *B{ þo˜ **o &*0j6Ц(W Ð’(W o ,sz¥r s +1Г(W o ,s~¥r s + r¡Ap(+€ *~ *(¤ *"( *:(– } *B{ þo˜ *(§ **l( k*:(– } *B{ þo˜ **o &*0j=Ц(W Ð’(W o ,s…¥V s +1Г(W o ,s‰¥V s + r­Ap(+€ *~ *(¤ *"( *:(U } *B{ þo *(§ **l( k*:(U } *B{ þo **o &*0j6Ц(W Ð’(W o ,s¥r s +1Г(W o ,s”¥r s + r·Ap(+€ *~ *(¤ *"( *:(– } *B{ þo˜ *(§ **l( k*:(– }  *B{  þo˜ **o &*0j6Ц(W Ð’(W o ,s›¥r s! +1Г(W o ,sŸ¥r s" + r¿Ap(+€# *~# *(¤ *"($ *:(– }% *B{% þo˜ *(§ **l($ k*:(– }& *B{& þo˜ **o &*0j6Ц(W Ð’(W o ,s¦¥r s' +1Г(W o ,sª¥r s( + rÉAp(+€) *~) *(¤ *"(* *:(– }+ *B{+ þo˜ *(§ **l(* k*:(– }, *B{, þo˜ **o &*0j6Ц(W Ð’(W o ,s±¥r s- +1Г(W o ,sµ¥r s. + rÑAp(+€/ *~/ *(¤ *"(0 *:(– }1 *B{1 þo˜ *(§ **l(0 k*:(– }2 *B{2 þo˜ **o &*0j6Ц(W Ð’(W o ,s¼¥r s3 +1Г(W o ,sÀ¥r s4 + rÛAp(+€5 *~5 *(¤ *"(6 *:(– }7 *B{7 þo˜ *(§ **l(6 k*:(– }8 *B{8 þo˜ **o &*0j6Ц(W Ð’(W o ,sÇ¥r s9 +1Г(W o ,sË¥r s: + rãAp(+€; *~; *(¤ *"(< *:(– }= *B{= þo˜ *(§ **l(< k*:(– }> *B{> þo˜ **o &*0j?Ц(W Ð’(W o ,sÒ¥… s? +1Г(W o ,sØ¥… s@ + ríAp(+€A *~A *( *&(B *:( }C *B{C þo… *:(D }E *0A{E oF sG *(É *2ll(B k*:( }H *B{H þo… *:(D }I *0A{I oF sJ *.þ(+*2ròpsè z2rO7psè z2rõApsè z2rí:psè z2rI;psè z2r§;psè z2rÅ?psè z2r<psè z2re<psè z2rÅ<psè z2r[Bpsè z2r#=psè z2rƒ=psè z2r?psè z2re?psè z"¥0*0 4þ0*.þ(Ó+*.þ(6+**þ(Ö+*n(r³0p(• o– sÔ zn(rß0p(• o– sÔ z06è{Þ ,, {Þ {/ (‚ (2  }Þ +Ì*0ð{Þ , X{Þ +æ*0jJ{Þ ,C {Þ {/ /(r6"p(• o– rps z-*Y+µ(rç3p(• o– rps z’o &}K {K }L }M *0+V{M ,{L {Ë ,{Í *( +*( +*"oN *0UB{M ,3{L {Ë ," {Ë }L {L {Ë þþ**}M {L {Ë þþ*6oN Œ¦*V}M {K }L * **oO &*&sP *0DŒ† up , *sQ *V(U }R }S *Z{R {S þoT *F}U o‰ &*Z{U oV þo$ **oW &*&sX *02GŒ‡ uˆ , *u9 , sY *sZ *V(‰ }[ }\ *^{[ {\ þo] *F}^ o_ &*^{^ o` þoa *F}b o_ &*^{b oc þ( +**od &*0JKŒ‰ uŠ , *u? , se *uA, sf *sg *&sh *F}i oj &*f{i ok þol *F}m oj &*f{m on þ( +*F}p oj &*f{p oq þ( +*V(_ }s }t *0 {s {t þou **ov &*&sw *0bPŒ‹ uŒ , *uI , sx *uK, sy *uM, sz *s{ *V(j }| }} *0 {| {} þo~ *F} o€ &*0 { o þo‚ *F}ƒ o€ &*n{ƒ o„ þ(+*F}† o€ &*n{† o‡ þ(+*F}‰ o€ &*0 {‰ oŠ þ(+*0<ýŒ0 ,+u™ , ( ¥sþo; * þoÒ *r»,p*.þ(6+*.þ(+*2þ(+*.þ(Ó+*2þ(+*&(5+*&(3+*&(4+*&(2+*>(5+,**>(5+,**&(+*"(+*~Í *~Î *~Ï **þ(Ö+*.þ(×+*.þ(+*sŒ *"s *~Ð *~Ñ *~Ò *~Ó *~Ô *~Õ *~Ö *~× *~Ø *~Ù *~Ú *~Û *~Ü *~Ý *~Þ *0ÉÐb(W o ,*Б(W o ,*Ч(W o ,*Ш(W o ,*Щ(W o ,*Ð’(W o ,*Г(W o ,*Ð7(W o ,*Ð\(W o ,(BŒŽ¥-*sŽ *0õШ(W o ,(JŒ–¥-*Щ(W o ,(KŒ—¥-*Я(W o ,(LŒ˜¥-*Ð’(W o ,(MŒ™¥-*Г(W o ,(NŒš¥-*Ð7(W o ,(OŒ›¥-*Ð\(W o ,(BŒŽ¥-*s *0÷У(W o ,(AŒ¥-*Ф(W o ,(CŒ¥-*Ð¥(W o ,(DŒ¥-*Ðb(W o ,(EŒ‘¥-*Б(W o ,(FŒ’¥-*Ю(W o ,(GŒ“¥-*Ч(W o ,(IŒ•¥-*(+*~ *~‘ *6Œ0¥1*6Œ0¥1********0!(’ x3+oþ,*bþ*ªX2o¯ 0þ+,Xo¯ (^**07qb(_,$qbXo¯ (’ qbXb*d*ÖqbX2qbo¯ -þ+,qbXb**0EqbX2qbo¯ -þ+,qbXb!ÿÿÿÿÿÿÿÿ*!*0 i/bX!Zo¯ 02 7þþ+,(“ 0(“ Y+(rµBp(• o– s” zX+™*0Q  !(c*0 i/bX!Zo¯ 0YE&(rµBp(• o– s” z!+ !X+™*0Q  !(e*0ÅR(‡ , rs,ps zo• o­  (` 2(rµBp(• o– s” z bYE\ oYEA xYEo– ( ¥s(— *o– ( ¥s(— *(d(˜ *(f(˜ *0æS(‡ , rs,ps zo• o­  (a (`2(rµBp(• o– s” z( (™ bYEaoYECxYE( ¥s(š * o– ( ¥s(› (˜ Z* (d(˜ Z* (f(˜ Z*0×T(‡ , rs,ps zo• o­  (b (`2(rµBp(• o– s” z( (™ bYEWoYE>xYE( ¥s(œ * o– ( ¥s(œ Z* (dZ* (fZ*0»R(‡ , rs,ps zo• o­  (` 2(rµBp(• o– s” z bYEW oYEA xYEo– ( ¥s(› *o– ( ¥s(› *(d*(f*01°Ц(W o , Œ¦¥0*Ч(W o , Œ§¥0*Ш(W o , Œ¨¥0*Щ(W o ,!Œ©¥0*Я(W o ,!àŒ¯¥0*Ð7(W o ,s Œ7¥0*Ð’(W o ,#Œ’¥0*Г(W o ,"Œ“¥0*rÕBpov o] ¥0*01°Ч(W o , Œ§¥0*У(W o , Œ£¥0*Ш(W o , Œ¨¥0*Щ(W o ,!Œ©¥0*Я(W o ,!àŒ¯¥0*Ð7(W o ,s Œ7¥0*Ð’(W o ,#ð?Œ’¥0*Г(W o ,"€?Œ“¥0*rßBpov o] ¥0*~ *~ž *(+*(Ø+*B~Ÿ þ(+*.þ(+*0ÄVrçBp%¤%¤o o ,+"rçBp%¤%¤o ,9,-,¥[+(rÿBp(• o– s z s¡ * s¢ *, +ò,¥[+(r%Cp(• o– s z s£ *0Ц(W o ,s׌_¥[*Ч(W o ,sÙŒ`¥[*Ш(W o ,sÛŒa¥[*Щ(W o ,sÝŒb¥[*Я(W o ,sߌc¥[*Ð’(W o ,sáŒd¥[*Г(W o ,sãŒe¥[*Ð\(W o ,såŒf¥[*(+*B~¤ þ(+*0ÄVrçBp%¤%¤o o ,+"rçBp%¤%¤o ,9,-,¥[+(rÿBp(• o– s z s¥ * s¦ *, +ò,¥[+(r%Cp(• o– s z s§ *0Ч(W o ,sŒ`¥[*У(W o ,sŒk¥[*Ш(W o ,sŒa¥[*Щ(W o ,sŒb¥[*Я(W o ,sŒc¥[*Ð’(W o ,s Œd¥[*Г(W o ,s Œe¥[*Ð\(W o ,sŒf¥[*(+*B~¨ þ(+*0ÄVrGCp%¤%¤o o ,+"rGCp%¤%¤o ,9,-,¥[+(r_Cp(• o– s z s© * sª *, +ò,¥[+(r‡Cp(• o– s z s« *0Ц(W o ,s'Œ_¥[*Ч(W o ,s)Œ`¥[*Ш(W o ,s+Œa¥[*Щ(W o ,s-Œb¥[*Я(W o ,s/Œc¥[*Ð’(W o ,s1Œd¥[*Г(W o ,s3Œe¥[*Ð\(W o ,s5Œf¥[*(+*B~¬ þ(+*0ÄVrGCp%¤%¤o o ,+"rGCp%¤%¤o ,9,-,¥[+(r_Cp(• o– s z s­ * s® *, +ò,¥[+(r‡Cp(• o– s z s¯ *0Ц(W o ,sNŒ_¥[*Ч(W o ,sPŒ`¥[*Ш(W o ,sRŒa¥[*Щ(W o ,sTŒb¥[*Я(W o ,sVŒc¥[*Ð’(W o ,sXŒd¥[*Г(W o ,sZŒe¥[*Ð\(W o ,s\Œf¥[*(+*B~° þ(+**o &**þ(@+*.þ(ˆ+*F}± o &*B{± þ(£+*.þ(ˆ+**o &*24*þ**o &*&(ˆ **o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*:þ,*þ**o &*:þ,*þ**o &*&(À **o &*0ûSЦ(W Ю(W o ,(GŒ“¥C8„Я(W o ,(LŒ˜¥C+`Ц(W o ,+JУ(W o ,+4Ф(W o ,+Ð¥(W o ,+(+€Â Ц(W Ц(W o ,(HŒ”¥C+(+€Ã *~à *~ **o &*.þ(+**o &*.þ(+**o &*0ÓSЦ(W Ф(W o ,Œ¤¥¦8Ð¥(W o ,Œ¥¥¦8zÐb(W o ,Œb¥¦+ZБ(W o ,!Œ‘¥¦+2Ю(W o ,!ÓŒ®¥¦+ ( +€Ä *~Ä **o &*0öSЦ(W Ф(W o ,Œ¤¥¦8ÀÐ¥(W o ,Œ¥¥¦8Ðb(W o ,Œb¥¦8zБ(W o ,!Œ‘¥¦+RЮ(W o ,!ÓŒ®¥¦+)Ц(W o ,Œ¦¥¦+ (!+€Å *~Å **o &*0éXЦ(W Ð7(W o ,s´Œy¥¡8¯Ð’(W o ,s¶Œz¥¡8ˆГ(W o ,s¸Œ{¥¡+dr«Cp%¤%Ðb(W ¤o , sÆ +-,¥¡+(rÃCp(• o– s z sÇ €È *~È *(É *:(Ê (Ë *(Ì *l[*(Í *k[*:(Î }Ï *0 3{Ï %Œ¦¤%Œb¤oë ¥¦*:(Ð }Ñ *B{Ñ þoí *:(Ò }Ó *0Z{Ó oÔ sÕ **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sÍŒ€¥†8¨Ð¥(W o ,sÏŒ¥†8Ðb(W o ,sÑŒ‚¥†+]Б(W o ,sÓŒƒ¥†+9Ю(W o ,sÕŒ„¥†+("++ (#+€Ö *~Ö *:(U }× *B{× þo *:(O }Ø *0]{Ø oV sÙ *:(‰ }Ú *0 3{Ú %Œ¦¤%Œ§¤oë ¥­*:(U }Û *B{Û þo *:(O }Ü *0]{Ü oV sÝ *(d *Xg*(^ *Xh*(M *X*(O *X*(X *X*(g *XÒ*(a *XÑ*(U *X*(R *X*([ *X*( *X*(É *X*(Þ *&(Ç **o &*09[Ц(W Ч(W Э(W o , o +9íФ(W o ,sôŒ€¥†8ÏÐ¥(W o ,söŒ¥†8¨Ðb(W o ,søŒ‚¥†8Б(W o ,súŒƒ¥†+]Ю(W o ,süŒ„¥†+9Ц(W o ,sþŒ_¥†+($++ (%+€ß *~ß *:(U }à *B{à þo *:(O }á *0]{á oV sâ *:(‰ }ã *0 3{ã %Œ¦¤%Œ§¤oë ¥­*:(U }ä *B{ä þo *:(O }å *0]{å oV sæ *(d *Ö³*(^ *Öµ*(M *Ö*(O *Ö*(X *Ö*(g *׆*(a *ׇ*(ç *ׇ*(U *×*(R *×*([ *×*( *X*(É *X*(Þ *&(Ç **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sŒ€¥†8¨Ð¥(W o ,sŒ¥†8Ðb(W o ,s!Œ‚¥†+]Б(W o ,s#Œƒ¥†+9Ю(W o ,s%Œ„¥†+(&++ ('+€è *~è *:(U }é *B{é þo *:(O }ê *0]{ê oV së *:(‰ }ì *0 3{ì %Œ¦¤%Œ§¤oë ¥­*:(U }í *B{í þo *:(O }î *0]{î oV sï *(d *Zg*(^ *Zh*(M *Z*(O *Z*(X *Z*(g *ZÒ*(a *ZÑ*(U *Z*(R *Z*([ *Z*( *Z*(É *Z*(Þ *&(Ç **o &*0[Ц(W Ч(W Э(W o , o +9ÆФ(W o ,sDŒ€¥†8¨Ð¥(W o ,sFŒ¥†8Ðb(W o ,sHŒ‚¥†+]Б(W o ,sJŒƒ¥†+9Ю(W o ,sLŒ„¥†+((++ ()+€ð *~ð *:(U }ñ *B{ñ þo *:(O }ò *0]{ò oV só *:(‰ }ô *0 3{ô %Œ¦¤%Œ§¤oë ¥­*:(U }õ *B{õ þo *:(O }ö *0]{ö oV s÷ *(d *س*(^ *ص*(M *Ø*(O *Ø*(X *Ø*(g *Ù†*(a *Ù‡*(U *Ù*(R *Ù*([ *Ù*( *Z*(É *Z*(Þ *&(Ç *BŒ0Œ0þ*6Œ0(¼ *0-o\ oÒ (rëCp(• o– (` s® z~Æ *0Ë^u+ 9uu+ ,   (l*uM,?uM,(m*uT,  (k*(*+*uT,í +ÝuM,(uM, +¡uT,¹ +©uT,§ 8”ÿÿÿ0Í_(´+-U(³+-8¬(³+-+肋 ¥“ (Ê ,+(Ê , {½ +,(az8f(´+-'(³+-+¡(³+-8”ÿÿÿ¥“¥“ +£¥’ ¥’ (Ì ,+(Ì , {½ +,(azþo *0ib9\9Tu\ 9ßu\ ,   (ˆ *uT,þ(b*u,¥2þoø *u,  þ(c*(>+:·(?+-au,$  ¥2oø   /* 1**u  ,   o   /* 1**(*+*(?+-'u,  8’ÿÿÿu  ,Ð  +°¥¯ ¥¯ 4* þ*(>+:(?+--u,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(?+--u,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥¯¥¯ 8gÿÿÿ¥®¥®/*þ*uT, 83þÿÿu, 8<þÿÿu,  8Hþÿÿ(>+:(?+--u,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(?+--u,  8þÿÿu  9Wþÿÿ  84þÿÿ¥¯¥¯ 8þÿÿ(>+:(?+--u,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(?+--u,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥¯¥¯ 8õýÿÿ¥®¥®8‰þÿÿ*,**0 NW2*Xoù Xoù (d ,*!X+²0 dW 2*X Xoú X Xoú (d ,* !X +œ0 ~d      2* !(f  , * !X 8‚ÿÿÿ0ce2*oû oû /+þ ,*o$ o$ /+þ , *X+0 }W2*X¤‘Y3oü oü (d+X(j ,*!X8ƒÿÿÿ0 2W2*o$ j!oû (i*0 go" 3 o" þ+9uoý oý /+þ ,*o$ j o$ j /+ þ,*    !(e*o" 3 o" þ+9ãoû oû /+þ ,*oû oû  /+ þ,*o$ j o$ j o$ j o$ j   /+  þ  , *  /+  þ,*          !(g*o" o"   /+ þ ,*o"  (h,*‘(j*0R1Ži Ži /+þ ,*  /* £ £(d,  +Ù X +Ò*0ahŽi Ži /+þ ,*  /9 £¦ £¦/+þ,  +Ê X +Ã*~Ç *~È *ZŒ0Œ0þoo *V(o¥2þ(+*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*04²(n¥2(+þ Þt  (a(þ , Þþ*0DiŽi Ži þ -*  /% £¦ £¦þ- +Þ X +×*0DiŽi Ži þ -*  /% £b £bþ- +Þ X +×*ž, þþ+, þþ+,*þ*0HiŽi Ži þ -*  /) £“ £“(x- +Ú X +Ó*ž, þþ+, þþ+,*þ*0HiŽi Ži þ -*  /) £’ £’(z- +Ú X +Ó*0DiŽi Ži þ -*  /% ££ ££þ- +Þ X +×*0DiŽi Ži þ -*  /% £‘ £‘þ- +Þ X +×*0Tmu+ 9¿u+ ,   (‡*uM9çuM,(v*u¥9öu¥  ,     (w*u¦  9ûu¦  ,  (}*u§9ûu§,(|*u¨9ƒu¨,(y*u©,Eu©,({*uT,(†*þoZ *uT,ê+Øu©,(u©, +šuT,µ+£uT,£8Žÿÿÿu¨,ou¨, 8!ÿÿÿu©,1u©, 8'ÿÿÿuT9?ÿÿÿ8*ÿÿÿuT9'ÿÿÿ8ÿÿÿu©,1u©, 8ÑþÿÿuT9éþÿÿ8ÔþÿÿuT9Ñþÿÿ8¼þÿÿu§9ëu§, 8þÿÿu¨,ou¨, 8&þÿÿu©,1u©, 8,þÿÿuT9Dþÿÿ8/þÿÿuT9,þÿÿ8þÿÿu©,1u©, 8ÖýÿÿuT9îýÿÿ8ÙýÿÿuT9Öýÿÿ8Áýÿÿu¨,ou¨, 8Týÿÿu©,1u©, 8ZýÿÿuT9rýÿÿ8]ýÿÿuT9Zýÿÿ8Eýÿÿu©,1u©, 8ýÿÿuT9ýÿÿ8ýÿÿuT9ýÿÿ8ïüÿÿu¦  9æu¦  ,   8#üÿÿu§9ëu§, 8(üÿÿu¨,ou¨, 80üÿÿu©,1u©, 86üÿÿuT9Nüÿÿ89üÿÿuT96üÿÿ8!üÿÿu©,1u©, 8àûÿÿuT9øûÿÿ8ãûÿÿuT9àûÿÿ8Ëûÿÿu¨,ou¨, 8^ûÿÿu©,1u©, 8dûÿÿuT9|ûÿÿ8gûÿÿuT9dûÿÿ8Oûÿÿu©,1u©, 8ûÿÿuT9&ûÿÿ8ûÿÿuT9ûÿÿ8ùúÿÿu§9ëu§, 8[úÿÿu¨,ou¨, 8cúÿÿu©,1u©, 8iúÿÿuT9úÿÿ8lúÿÿuT9iúÿÿ8Túÿÿu©,1u©, 8úÿÿuT9+úÿÿ8úÿÿuT9úÿÿ8þùÿÿu¨,ou¨, 8‘ùÿÿu©,1u©, 8—ùÿÿuT9¯ùÿÿ8šùÿÿuT9—ùÿÿ8‚ùÿÿu©,1u©, 8AùÿÿuT9Yùÿÿ8DùÿÿuT9Aùÿÿ8,ùÿÿu¥9Üu¥  ,    82øÿÿu¦  9æu¦  ,   87øÿÿu§9ëu§, 8<øÿÿu¨,ou¨, 8Døÿÿu©,1u©, 8JøÿÿuT9bøÿÿ8MøÿÿuT9Jøÿÿ85øÿÿu©,1u©, 8ô÷ÿÿuT9 øÿÿ8÷÷ÿÿuT9ô÷ÿÿ8ß÷ÿÿu¨,ou¨, 8r÷ÿÿu©,1u©, 8x÷ÿÿuT9÷ÿÿ8{÷ÿÿuT9x÷ÿÿ8c÷ÿÿu©,1u©, 8"÷ÿÿuT9:÷ÿÿ8%÷ÿÿuT9"÷ÿÿ8 ÷ÿÿu§9ëu§, 8oöÿÿu¨,ou¨, 8wöÿÿu©,1u©, 8}öÿÿuT9•öÿÿ8€öÿÿuT9}öÿÿ8höÿÿu©,1u©, 8'öÿÿuT9?öÿÿ8*öÿÿuT9'öÿÿ8öÿÿu¨,ou¨, 8¥õÿÿu©,1u©, 8«õÿÿuT9Ãõÿÿ8®õÿÿuT9«õÿÿ8–õÿÿu©,1u©, 8UõÿÿuT9mõÿÿ8XõÿÿuT9Uõÿÿ8@õÿÿu¦  9æu¦  ,   8tôÿÿu§9ëu§, 8yôÿÿu¨,ou¨, 8ôÿÿu©,1u©, 8‡ôÿÿuT9Ÿôÿÿ8ŠôÿÿuT9‡ôÿÿ8rôÿÿu©,1u©, 81ôÿÿuT9Iôÿÿ84ôÿÿuT91ôÿÿ8ôÿÿu¨,ou¨, 8¯óÿÿu©,1u©, 8µóÿÿuT9Íóÿÿ8¸óÿÿuT9µóÿÿ8 óÿÿu©,1u©, 8_óÿÿuT9wóÿÿ8bóÿÿuT9_óÿÿ8Jóÿÿu§9ëu§, 8¬òÿÿu¨,ou¨, 8´òÿÿu©,1u©, 8ºòÿÿuT9Òòÿÿ8½òÿÿuT9ºòÿÿ8¥òÿÿu©,1u©, 8dòÿÿuT9|òÿÿ8gòÿÿuT9dòÿÿ8Oòÿÿu¨,ou¨, 8âñÿÿu©,1u©, 8èñÿÿuT9òÿÿ8ëñÿÿuT9èñÿÿ8Óñÿÿu©,1u©, 8’ñÿÿuT9ªñÿÿ8•ñÿÿuT9’ñÿÿ8}ñÿÿuM9ÈuM, 8Uðÿÿu¥9Üu¥  ,    8Zðÿÿu¦  9æu¦  ,   8_ðÿÿu§9ëu§, 8dðÿÿu¨,ou¨, 8lðÿÿu©,1u©, 8rðÿÿuT9Šðÿÿ8uðÿÿuT9rðÿÿ8]ðÿÿu©,1u©, 8ðÿÿuT94ðÿÿ8ðÿÿuT9ðÿÿ8ðÿÿu¨,ou¨, 8šïÿÿu©,1u©, 8 ïÿÿuT9¸ïÿÿ8£ïÿÿuT9 ïÿÿ8‹ïÿÿu©,1u©, 8JïÿÿuT9bïÿÿ8MïÿÿuT9Jïÿÿ85ïÿÿu§9ëu§, 8—îÿÿu¨,ou¨, 8Ÿîÿÿu©,1u©, 8¥îÿÿuT9½îÿÿ8¨îÿÿuT9¥îÿÿ8îÿÿu©,1u©, 8OîÿÿuT9gîÿÿ8RîÿÿuT9Oîÿÿ8:îÿÿu¨,ou¨, 8Ííÿÿu©,1u©, 8ÓíÿÿuT9ëíÿÿ8ÖíÿÿuT9Óíÿÿ8¾íÿÿu©,1u©, 8}íÿÿuT9•íÿÿ8€íÿÿuT9}íÿÿ8híÿÿu¦  9æu¦  ,   8œìÿÿu§9ëu§, 8¡ìÿÿu¨,ou¨, 8©ìÿÿu©,1u©, 8¯ìÿÿuT9Çìÿÿ8²ìÿÿuT9¯ìÿÿ8šìÿÿu©,1u©, 8YìÿÿuT9qìÿÿ8\ìÿÿuT9Yìÿÿ8Dìÿÿu¨,ou¨, 8×ëÿÿu©,1u©, 8ÝëÿÿuT9õëÿÿ8àëÿÿuT9Ýëÿÿ8Èëÿÿu©,1u©, 8‡ëÿÿuT9Ÿëÿÿ8ŠëÿÿuT9‡ëÿÿ8rëÿÿu§9ëu§, 8Ôêÿÿu¨,ou¨, 8Üêÿÿu©,1u©, 8âêÿÿuT9úêÿÿ8åêÿÿuT9âêÿÿ8Íêÿÿu©,1u©, 8ŒêÿÿuT9¤êÿÿ8êÿÿuT9Œêÿÿ8wêÿÿu¨,ou¨, 8 êÿÿu©,1u©, 8êÿÿuT9(êÿÿ8êÿÿuT9êÿÿ8ûéÿÿu©,1u©, 8ºéÿÿuT9Òéÿÿ8½éÿÿuT9ºéÿÿ8¥éÿÿu¥9Üu¥  ,    8«èÿÿu¦  9æu¦  ,   8°èÿÿu§9ëu§, 8µèÿÿu¨,ou¨, 8½èÿÿu©,1u©, 8ÃèÿÿuT9Ûèÿÿ8ÆèÿÿuT9Ãèÿÿ8®èÿÿu©,1u©, 8mèÿÿuT9…èÿÿ8pèÿÿuT9mèÿÿ8Xèÿÿu¨,ou¨, 8ëçÿÿu©,1u©, 8ñçÿÿuT9 èÿÿ8ôçÿÿuT9ñçÿÿ8Üçÿÿu©,1u©, 8›çÿÿuT9³çÿÿ8žçÿÿuT9›çÿÿ8†çÿÿu§9ëu§, 8èæÿÿu¨,ou¨, 8ðæÿÿu©,1u©, 8öæÿÿuT9çÿÿ8ùæÿÿuT9öæÿÿ8áæÿÿu©,1u©, 8 æÿÿuT9¸æÿÿ8£æÿÿuT9 æÿÿ8‹æÿÿu¨,ou¨, 8æÿÿu©,1u©, 8$æÿÿuT9<æÿÿ8'æÿÿuT9$æÿÿ8æÿÿu©,1u©, 8ÎåÿÿuT9æåÿÿ8ÑåÿÿuT9Îåÿÿ8¹åÿÿu¦  9æu¦  ,   8íäÿÿu§9ëu§, 8òäÿÿu¨,ou¨, 8úäÿÿu©,1u©, 8åÿÿuT9åÿÿ8åÿÿuT9åÿÿ8ëäÿÿu©,1u©, 8ªäÿÿuT9Âäÿÿ8­äÿÿuT9ªäÿÿ8•äÿÿu¨,ou¨, 8(äÿÿu©,1u©, 8.äÿÿuT9Fäÿÿ81äÿÿuT9.äÿÿ8äÿÿu©,1u©, 8ØãÿÿuT9ðãÿÿ8ÛãÿÿuT9Øãÿÿ8Ããÿÿu§9ëu§, 8%ãÿÿu¨,ou¨, 8-ãÿÿu©,1u©, 83ãÿÿuT9Kãÿÿ86ãÿÿuT93ãÿÿ8ãÿÿu©,1u©, 8ÝâÿÿuT9õâÿÿ8àâÿÿuT9Ýâÿÿ8Èâÿÿu¨,ou¨, 8[âÿÿu©,1u©, 8aâÿÿuT9yâÿÿ8dâÿÿuT9aâÿÿ8Lâÿÿu©,1u©, 8 âÿÿuT9#âÿÿ8âÿÿuT9 âÿÿ8öáÿÿ0îo9á9Ùu\ 9u\ ,   (” *uT,þ(~*u,þoÿ *(´+-X(³+- þoZ *(³+-+쥓¥“ ,   þþ+, þþ+,* þ*(´+-)(³+-+ž(³+-8‘ÿÿÿ¥“¥“ +£¥’ ¥’ ,   þþ+,   þþ+,*  þ*uT, 8óþÿÿu, 8ýþÿÿ(´+-/(³+-8ÿÿÿ(³+-8÷þÿÿ¥“¥“ 8ÿÿÿ(´+-/(³+-8Íþÿÿ(³+-8Àþÿÿ¥“¥“ 8Ïþÿÿ¥’¥’  8'ÿÿÿ*,**0 R2*Xoù Xoù (,(!X+±*0h 2* X Xoú  X Xoú (,4  !X  +›*0‚q        2*  !(,7  !X  8ÿÿÿ*0@2*oû oû 3o$ o$ þ+,X+Ã*0 ‚ 2*X¤‘Y3oü oü (+X(…,3!X  8€ÿÿÿ*0 5W2*o$ j!oû („*0 —ro" 3 o" þ+,Woý oý 3Co$ j o$ j  3+   !(€***o" 3 o" þ+9®oû oû @•oû oû  @|o$ jo$ j o$ j o$ j  3   þ+,?        !(‚****o" o" 3Lo" (ƒ,,‘(…***0IiŽi Ži þ -*  /* £ £(- +Ù X +Ò*~É *~Ê *j(ˆŒ0Œ0þo *j(‰Œ0Œ0þo *ZŒ0Œ0þo **~Ë *~Ì *0DsŽi Y 1 + 2' boW o X w ZX Y +Õ*0>sŽi Y 1 + 2! b£¦X w ZX Y +Û*0>sŽi Y 1 + 2! b£bX w ZX Y +Û*0?sŽi Y 1 + 2" b£‘iX w ZX Y +Ú*0‚1o" YEo% bo% X ¦X*o$ o# XY X1X + 2) boW o X wZX Y +Ó *0t9•uT ,g u+ ,   (*uM, (‘*u¥, (’*u¦,   (“*(”*u  ,   þo *þoU **f(¥8Œ0þ(•*js¯¥8Œ0þ(•*BŒ0þ(•*0%u(× (Ö (+ bX(++a*0=v(¸ (· (¶ (+bX(++a b X(,+a*0Xw( ( ( ( (+bX(++abX(,+bX (-+aa*0ry( ( (  (  (  (+bX(++abX(,+bX (-+aabX(.+a*04z(× (Ö (× (Ö (+,  þ(/+**0U{(¸ (· (¶ (¸ (· (¶  (+, (/++, þ(0+**0v|( ( ( ( ( ( ( ( (+, (/++, (0++,  þ(1+**0—}( ( (  (  (  ( ( (  (  (   (+, (/++, (0++,  (1++,  þ(2+**09~(× (Ö (× (Ö (+,* þ(3+*0\(¸ (· (¶ (¸ (· (¶  (+,*(3+,*þ(4+*0€( ( ( ( ( ( ( ( (+,*(3+  , *(4+  , * þ(5+*0¢( ( (  (  (  ( ( (  (  (   (+  , *(3+  , *(4+  , * (5+  , * þ(6+*Fo &}½ *"{½ *2þ(d*2þ(d**o &*6þ(*n(rDp(• o– sÔ z*o &*6þ(*n(rDp(• o– sÔ zFo &}¾ *Ž|¿ {¾ (R -*{¾ s¯*J¥8þ(*¦{¿ Y}¿ {¿ 1¥8þ(•***o &*J¥8þ(*B¥8þ(•**o &*J¥8þ(*B¥8þ(•******šþ,+ ~  þþ,¥0*s  z"¥0*~u0þ,*þ,*~  þ*.u0þ*04Œ0, þ0oé **n(r­p(• o– sÔ zn(r7Dp(• o– sÔ z–Œ0,*(r­p(• o– sÔ z6s *&o¯ *(7+*&£0**¤0**(Á *.( *0 r‚/+ /+ sà Y 2AY2&XX(Á ( XX3ÚX X3¿*0@½ Y 24 Y  2X X (Á ( X X3áX X3Ì*.(• *6(– *0 ¨ƒ/+ /+ /+ s— Y2dY2H Y 2,  XX X(• (–  X  X3ÔXX3¸XX3œ *0 d1 Y 2W Y  2BY2)X XX (• (– XX3× X X3¾X X3©*6(” *>(’ *0 ã„/+ /+ /+ /+  s‘ Y?‹Y2l Y   2P Y   24  XX X X(” (’  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 ŽÜ Y ?~ Y  2fY2MY20X XXX  (” (’ XX3ÐXX3³ X X3šX X@‚ÿÿÿ**o &*0ņЦ(W oY ,8£Ð!(W oR Ži-8…Ð(W o ,8lÐr(W oÅ ,+VÐ (W oR Ži1+<Ð#(W oR Ži-+!£ ¥#o4_-+€ *~ *",**",**",**",**2rWDpsè z2r¿Dpsè z~Á *~ *~à *~Ä *~Å *0HŒ{ { @.( E3j¡Øt¯ t¯ (9{  { þ(+*t°t°(9{  {    þ(3+*t± t± (9 {   {  þ(4+*t²t²(9{ { þ(5+*t³t³(9{ { þ(6+*Y*00¥®þ9{ { @( E+Z‰¸t¯ t¯ {  { þ(+*t°t°{ {   þ(3+*t± t±  {   {    þ(4+*t²t²{ { þ(5+*t³t³{ { þ(6+*Y**0/u® 9{ { @( E-\‹ºt¯ t¯ { { þ(+*t°t°{  {    þ(/+*t± t±  {   {  þ(0+*t²t²{ { þ(1+*t³t³{ { þ(2+***0\—( E/d™Îtµ tµ (9 { {  þ(+*t¶t¶(9 { { þ(3+*t· t· (9  {   {    þ(4+*t¸ t¸(9  { { þ(5+*t¹t¹(9 { { þ(6+*tºtº(9 { { þ(8+*0S˜{ { @9( E+Z‰¸çtµ tµ {  { þ(+*t¶t¶{ {   þ(3+*t· t·  {   {    þ(4+*t¸t¸{ { þ(5+*t¹t¹{ { þ(6+*tºtº{ { þ(8+*Y*0F™ ( E-\¾ïtµ  ¹y7ž{ Œ0(•bcXXX *t¶  ¹y7ž { Œ1(•bcXXX *t· ¹y7ž{ Œ2(•bcXXX *t¸ ¹y7ž{ Œ3(•bcXXX *t¹  ¹y7ž {   Œ4(•bcXXX *tº  ¹y7ž {   Œ5(•bcXXX *0Q˜{ { @9( E+Z‰¸çtµ tµ {  { þ(+*t¶t¶{ {   þ(/+*t· t·  {   {    þ(0+*t¸t¸{ { þ(1+*t¹t¹{ { þ(2+*tºtº{ { þ(9+**0K˜{ { @3( E*X†´âtµ tµ {  { þ(+*t¶t¶{ {   þ(:+*t· t·  {   {    þ(;+*t¸t¸{ { þ(<+*t¹t¹{ { þ(=+*tºtº{ { þ(>+**0•¢( E/d™Î8t¼ t¼ (9 {  {   þ(+*t½t½(9 {! {! þ(3+*t¾ t¾ (9  {"   {"    þ(4+*t¿ t¿(9  {# {# þ(5+*tÀtÀ(9 {$ {$ þ(6+*tÁtÁ(9 {% {% þ(8+*tÂtÂ(9 {& {& þ(?+*0i£( E'V…´ãt¼ t¼ {  {   þ(+*t½t½{! {! þ(3+*t¾t¾ {"   {"    þ(4+*t¿ t¿  {#  {# þ(5+*tÀtÀ{$ {$ þ(6+*tÁtÁ{% {% þ(8+*tÂtÂ{& {& þ(?+*0{¤ ( E-\¾ï t¼  ¹y7ž{  Œ0(•bcXXX *t½  ¹y7ž {! Œ1(•bcXXX *t¾ ¹y7ž{" Œ2(•bcXXX *t¿ ¹y7ž{# Œ3(•bcXXX *tÀ  ¹y7ž {$   Œ4(•bcXXX *tÁ  ¹y7ž {%   Œ5(•bcXXX *t  ¹y7ž {& ŒÃ(•bcXXX *0i£( E'V…´ãt¼ t¼ {  {   þ(+*t½t½{! {! þ(/+*t¾t¾ {"   {"    þ(0+*t¿ t¿  {#  {# þ(1+*tÀtÀ{$ {$ þ(2+*tÁtÁ{% {% þ(9+*tÂtÂ{& {& þ(@+*0b£( E&T‚°Þ t¼ t¼ {  {   þ(+*t½t½{! {! þ(:+*t¾t¾ {"   {"    þ(;+*t¿ t¿  {#  {# þ(<+*tÀtÀ{$ {$ þ(=+*tÁtÁ{% {% þ(>+*tÂtÂ{& {& þ(A+*07J{Þ ,. {Þ {/ /¤0X+Ë**0–(r5Ep(• o– €Á (rcEp(• o– €Â (r…Ep(• o– €Ã (r«Ep(• o– €Ä (r6"p(• o– €Å s‘ €Æ s¥€Ç s¥€È s©€É s¬€Ê s³€Ë s¶€Ì (o¥2€Í (¥8€Î (Ž¥8€Ï s…€Ð s‡€Ñ s‰€Ò s‹€Ó s€Ô s€Õ s‘€Ö s“€× s•€Ø s—€Ù s™€Ú s›€Û s€Ü sŸ€Ý s¡€Þ *:(U }' *B{' þo( *:}) ( *B{) þo *:(U }* *B{* þo( *:}+ ( *B{+ þo *:(c }, *>{, o- *:(U }. *B{. þo( *:(‰ }/ *Z{/ s þo0 *:(_ }1 *^{1 sU þo2 *:(j }3 *0 {3 s4 þo5 *:(€ }6 *0 {6 s7 þo8 *~ê *rp*r÷4p*rç3p*r 4p*rmp*r³0p*r‡0p*rß0p*rÇEp*rïEp*r!Fp*rÓ4p*r6"p*rS5p*r…Ep*r©4p*rÛp*rp*rá/p*rZ p*r«Ep*rIFp*rlp*r’p*rwFp*r`p*rˆp*rºp*røp*r¶p*r—Fp*rE6p*r(p*r5Ep*rëCp*rDp*rµBp*rÃCp*r%Cp*rÿBp*r‡Cp*r_Cp*r±Fp*r@p*r»@p*rÝ@p*rý@p*r­p*r7Dp*rcEp*rÂ&p*r‘.p*rÙp*rqp*rõp*rÿ/p*rS.p*ru.p*rO/p*ry/p*rŸ/p*rÃ/p*r—p*rQp*r—3p*rþ p*rò&p*r'p*rP'p*r’'p*rÐ'p*r:(p*r(p*rv(p*rl)p*r”)p*r¼(p*r%-p*r.p*r5p*r, p*r‰5p*r@p*r|p*r¼p*rd"p*rˆ"p*rìp*rÂp*r´p*r(%p*rÞp*r@p*rJ%p*r¨p*rh%p*r¤%p*rŠp*r¾p*ròp*rè%p*ršp*r*p*r‚p*rÚp*r p*r8 p*rT$p*rš$p*rTp*rÉFp*r‚p*rp*rnp*rÔp*rp*r:p*rp*rXp*rèp*r¼p*r p*rJ!p*rˆ!p*r¾!p*r²"p*rd$p*rœp*rp*rš p*rú p*r"!p*rø"p*r&p*röp*r/p*rµ.p*rä p*r^ p*r‚ p*rü p*r” p*r® p*r2 p*R((• þo– *b((• o– (` *f((• o– (þ *j((• o– (Á *0¥rçFp(9 s: €ê *BSJB v4.0.30319l$ñ#~ñ£#Strings¬”øF#US¤Û#GUID´Û0j#BlobW¶ ‰ú3ÜTë õ:š"¤Gÿ!Ñpy AÅ2+]+~+²+%+E2Z+h2Ë +B 2i N º +Ø +) 25 N O +­ N » N Ê N ~+ ”ˆÌ+Ô+ï+ +O+++#+ÌN  ú"â"3# x#â" ƒ#â"0( Y(â"a)+ñ*+i+X+÷+ì+,+œ,ì+ÿ,ì+655!9X+@> E øE nM2¼Q *YN ïY+þ]N Sd+{t2Sv3vmv3vvv3v°v‘vÄv+êvÚvwÚvwÚv.w Ew bw €w ™w ²w Íw æw x :x)x\x)x~x ™x ²x3vãxÐx?÷x'z+Fz+^z+Þ^+»~3vÖ~Ðxó~ÐxÐx£Ðxt„W„†„W„„+Þ„É„ÿ„)x2…+¢…+†Ðx$‡+;‡+y‡m‡ˆ ç‰+D‹+h‹W„Ž‹W„}Œ+‘+¹‘N Á‘ é‘ &’+å“ 4”+Ï•+˜+­šN ÍšX+¿y ;yX+‚©+HªX+†ªX+êX+åªX+«X+1«X+g­59®X+˜±X+N³+  ´ˆ ­´ˆô+œµ+ $¶ˆå¶+ Š·ˆ}+»+ß½Õ½¾+y+œÁ+¨Î+³Ò+Ó+í´+†Ó óñˆ ýñâ" 4òˆ#ôôÅö+Yy+ 0 â" T â"t N ¡ â" » â" Ò â" ô â" â"Ë+Ð+Ö+Ü+á+è+ï+ â" 6â" Qâ" ˆâ":+J+ýì+ì+&+;ì+Sì+ùãj Õ½ð Õ½!+6!5f!5}!+"X+Á"X+û"X+P'X+k'X+}'X+®'X+y+1(5,+3 &3 -3 b5+Û6Ä6ü6+Š7m‡9+Ã+0y y¼LÉ„¡O ¶· £\5ÕV5ÔY3vOh+Éi+kk+7lÕ½Vr+»w+Þ‚+"!XB!iB !ƒB !¢B!¼B!ÓB !òB !B !-B !DB !aB!sB!‡B!¡B!·B!ËB!æB!B! B!4B!LB!fB!|B!™B!¯B!!¿B"!ÐB#!öB$! B%!B&!)B'!MB+!iB 1!ˆB!3!«B"5!ÁB#7!äB$9!ýB,I!B,J!;B-L!TB1T!jB1U!‡B1V!¡B1W!½B1X!äB1Y!B1Z B2]‚~2k$ƒ4k$Ž5m™6o³7q ÍB8s‚~8ƒ$Ü;ƒ$ç<…$ò=‡ý>‰?‹1@ KBA‚~B¡$Z&F¡$e&G£$p&H¥${&I§†J© K«ºL­ÔM¯ îBN±‚~OÅ$ý2TÅ$2UÇ$2VÉ$2WË$)2XÍ4YÏNZÑh[Ó‚\Õœ]× ¶B^Ù‚~_ï$Å>eï$Ð>fñ$Û>gó$æ>hõ$ñ>i÷$ü>jùkû!lý;mÿUnoo‰p £Bq‚~r$²Jy$½Jz!$ÈJ{#$ÓJ|%$ÞJ}'$éJ~)$ôJ+ÿ€- /3 ‚1M ƒ3g „5 …7› †9 µ B%‡; Õ BŠG ä BŠI!ñ BŠS!ý BŠY  B‹f‚~Œw 5  Žw‚~‘‘ w  “‘¡   ‡ •”¡ ± ‡ •–!È ‡ 5•–  ê •š!C  —¨ [  ™­…~™²$e vœ²$l vžµt £»Š ¤¾!¡  ¥Ä!Ø  ©ø!ç  ªú   ¬ý…~¬$ †¯$ †³ ´ 0 µ!F  ¶!R  ºE!} a »G!‹ a ¾S – a ޾`!¨ a ¾b ´ ‡ ¾y Ê ‡ ¿|!Ù ‡ 5Á„ è ‡ Áˆ ö ‡ ÄŒ€ /  Å…~Æ$5 pÉ$B pÉž$L pÊ S Ë¢o Ì£ˆ Í¥€ ž  Χ…~ί$¥ ѯ$ª Ô³$¯ Úº´ ݾÈ ÞÂÜ ßÉ  ð  àÍ!ý  àÐ  BêÜ B–ëÞ!E)ë߀ O)ñê…~òù$TÄöù$]Äøü$eÄùþ$pÄûyý‘þ¨ÿ   Ú)…~_$èì4_$ôì5a$ì6c$ì7e$ì8g$)ì:j$;ì;l$Kì<n$]ì=p$mì>r$€ì?t$‘ì@v$¤ìAx$µìBz$ÁìC|$ÖìD~$éìE€$òìF‚$ýìG„$ ìH†$ìIˆ$ìK‹-LHMfN‘…O“ŸP•¹Q˜ÚRšùSœTž9U [V¢{W¤X¦½Y¨ØZªü[¬\®6]°P^²m_´‡`¶ža¹ ¼)b» Ç)¤dò Ô‡ dô ܇ hù ì‡ jþ ú‡ k ‡ n ‡ s%‡ w 3‡ y!A‡ z T‡ z+!^‡ {-j‡ {N‹‡ [!•‡ ‡l¯‡ ˆn íÈŽ€ ÿȃ È‘ˆ #È” 5Ș˜ GÈ£ YÈ£° kȪ¿ }ȲÐ!¬´Ô ЬµÖ ݵ  ݵ  ݵ  "ݵ  )ݵ  0ݵ  5ݵ !=ê µ !Nê µ !_ê µ  jê µ  €ê µ  žê ¶ ºê · âê º! ê º $ê ½¡ 7ê Å)¡ Jê Å-€pXÅ4€}XË4€Ÿ…Ð4³BÐ4 ʪÐJ àªÐL%öÐN  ®ÑX "®ÑZ%8Ñ\€L…Ón€d…Öo‘hÖožhÖp€ª¬Öq ¶²Ö Ù¶× ÷ºØ‘ ¾Ù“ 3ÂÛ• WÆÛ— sÊÜ™ ‘ÎÝ› ­ÒÞ ËÖߟ åÚà¡ Þᣠ#â㥠Gæå§ bêç© ‡æé« ©îë­ Íòí¯ óöù± +г 6úµ Bþ · Y ¹!r » » Ž ½ ¿ ±Á Éà ÜÅ êÇ É " Ë 5"Í FÏ V&Ñ i*Ó v*Õ ˆ¾× “.Ù ž2Û ·6Ý Î:ß Ö2á ï>ã ù2å 2ç +Bé ;Fë WFí u2 ï… Ÿ"ñ…~"ú$°h%ú$·h*$½h+Ä,Ú- ï.  J/ J/ %J/ 7J/ IJ/ [2/ uJ1 ‡J1 œJ1 ³B1 €Ï¬1"€×…1# ÞN$%å&%î(%ø*%ÿ,% .% 0%% 2%. 4%7 6%H8 YR:%g<%u>%‚@%—B%¢D%·F%ÊH%çJ%úL%N%&P%7R%@T%KV%VX%dZ%t\%„ ^%–!`%ª"b€¾È#d%Ç#– àZ#™ ë^%› * b% H f%Ÿ R j%¡ Z n&£ o ^&¥ ” '§…~)´$ª \.´$´ \/¶$¿ \1¹$Ì \4½Ô 5¿í 6Á!7Ä#!8È :!r9Ê ]!v9Ì ‚!r;Î §!v;Ð Ì!z=Ò Ø!j=Ô â!~>Ö "¾>Ø  "‚>Ú "¾>Ü #"J>Þ ;"J?à€U"…@â€f"…aãt"Èaã!Œ"ac ”"†be ¦"2cg ¶"Šdi Ó"Žgk #’hm #–jo >#šjq Z#žks ”#žku ²#žkw Ð#žky î#žk{  $žk} *$žk H$žk f$žkƒ …$žk… ¤$žk‡ Ã$žk‰ â$žk‹ %žk  %žk ?%žk‘ ^%žk“ }%žk• œ%žk— »%žk™ Ú%žk› ù%žk &žkŸ 7&žk¡ V&žk£ u&žk¥ ”&žk§ ³&žk© Ò&žk« ñ&žk­ 'žk¯ /'žk± N'žk³ m'žkµ Œ'žk· «'žk¹ Ê'žk» é'žk½ (žk¿ '(¢kÁ ;(¢kà F(¢kÅ Q(¦kÇ m(ªkÉ w(®mË (fmÍ ‰(²mÏ ¨(¶mÑ Ç(²nÓ æ(¶oÕ )ºq×)¬rÙ()¬ré€:)…r @)‡ Ú … Q)Ú %m)ÂÛ %x)Ý! %ƒ)Âß# %‘)á'  Ÿ)Êã)  ­)Îä+ %¾)Âå- %Ê)è1 %Ö)Âë3 %æ)í7 %ö)î9 %þ)ò= %*öA %*øC   *ÖúE  -*ÖûG :*‡ üI  F*ÚüR  Q*ÚþT  _*ÚV  p*ÚX  ~*ÚZ  Š*Ú\  š*Ú ^  ¥*Ú `  ²*Ú b €½*‡ d  Ê*Úg  ×*Þi  ä*âk   +æm  +êo  2+îq  E+òs  {+öu  Œ+úw  ™+þy  ¨+Þ{  ·+â} Æ+‡   Ô+  ,ƒ  ), …  A,þ‡  Y,‰  q, ‹  ‡,!  À," %Õ,#‘  ê,$“ % -$•  5-*—  J-0™  _-1› %t-2  Š-3Ÿ  Ÿ-3¡  ²-þ5£  Í-"6¥  è-"7§  .&8© .‡ :«  -.*:±  <..;³  M.2<µ  c.6>·  y.:?¹  .>C»  ¥.>D½  ¹.*F¿  É.BGÁ %Û.Hà €ö.‡ IÇ  /ÚIÊ  /ÞJÌ  !/âKÎ €./‡ LÐ  C/FLÕ  Y/JM×  q/NNÙ  ‰/ROÛ  ”/JOÝ  ¡/NOß  ®/FOá  Ê/JPã  è/NQå  0Rç %0Sê  0VUì  (0ZYî  10:]ð  :0:bò €A0‡ gô  K0Rg  Z0úh  g0Ri  0új  •0Rj  ®0úk  Å0Rk  Þ0Fm  õ0Rp  1Jr  '1Ru  @1Nw  Y1^z  z1^{ 1| £1} ¨1~  ¹1R‚#  Ä1R„% à1†'  í1b‹0  2^Œ2 €2‡ 4 … '2I …~Q $02fQ $32f‘S $92f’U B2“W T2”Y i2•[ %2–]  µ2R–_  Ä2Rœa  Ó2^¢c  ê2^£e  ô2R¤g  3^¦i  3F§k  3R©m  #3^«o  -3R­q  93R¯s  E3^±u  O3R³w  Z3Rµy  e3F·{  n3Rº}  z3R¼  †3J¾  3RÁƒ  œ3RÃ…  ¨3NŇ  ²3^ȉ  Â3JÊ‹  Î3^Ì  Û3RÎ  ç3RБ  ó3NÒ“  ÿ3^Ô•  4jÖ—  +4þÖ™  64:×›  A42Ù  L4:ÚŸ  W4nÜ¡  `4rÝ£ €p4…Þ¥ %y4ã· %ƒ4ä¹ %4å»  ›4Ræ½  §4Rè¿  ³4RêÁ  ¿4Úìà  Ë4^òÅ  â4FóÇ  ï4JôÉ  ü4võË  5zöÍ  =5~øÏ  S5RúÑ  e5RüÓ  w5RþÕ  ‰5F×  ™5JÙ  ©5NÛ  ¹5‚Ý  É5†ß  Ù5†á  ç5þã  û5Þå  6âç  '6Ré %;6 ë  M6R$í %Z6%ï  g6ú*ñ  r6Š+ó  ‡6:,õ %œ6-÷  ¯6R0ù %Æ62û  Ý6Ž7ý  ô6Š9ÿ   7^;  7’<  77r<  P7þ=  q7–>  ’7–>  ³7r@  Ô7rC  ó7rF  8þG %$8H  88þK %H8L  V8šQ  j8rT  |8W  8Y!  ¤8\#  ¸8ž`%  Ë8¢a'  Û8Ba)  í8þa+ %ý8b-  9¦g/  ?9þm1  Q9Ún3  c9ªs5  u9®x7  ‡9šy9  ™9r{;  ©9Z}= %µ9}?  À9F~A  Ò9JC  ä9N„E  ö9²‡G  :¶ŠI  ::ŒK  /::ŒM  D:ºO %Q:Q  a:¦‘S %q:“U  :¾–W  ‘:—Y  Ÿ:R˜[ %³:›]  Ä:^_  Ó:Žža  à:RŸc  ê:Æ e  ö:Ê g  ;Τi  ;ƨk  #;Ò¨m  8;Ϊo  M;Ƭq  \;Ö¬s  k;ίu  x;Ú²w  „;r²y  ;Òµ{  «;η}  Æ;ι  Ö;–»  ñ;r½ƒ   <r¿…  <VÁ‡  "<:‰  +<:‹  4<:à  ;<ÚÄ  D<ÚÅ‘  O<ÒÆ“  k<ÞÇ•  ‡<ÎÉ—  ¡<ÆË™  ½<ÎË›  Ù<ÚÌ  ò<rÌŸ   =ÚÍ¡ 3==Σ €C=…Ϋ N=)Ϋ ^=)ή  t=âÎÇ  ˆ=æÎÉ  ¡=âÎË  º=ŠÎÍ Õ=)ÑÏ  ä=Ño  ï=êÔs  >^Ôu  >îÕw  2>òÖy  N>öÖ{  e>úÖ}  u>úÖ  ˆ>þÖ  —>׃  ¡>×…  ®> ׇ  ½>׉  Ì>׋  Û>¢Ø  é>Ù  ó>Ú‘  ?¢Ú“   ?Þ•  ?ß—  !?bà™  3?á›  F?á  [?⟠ p?"ã¡  z?&ä£  ‡?*å¥  –?.å§  ¥?&æ©  ´?*è«  Â?2è­ !Ò?é¯  Ý?ì³  ì?6íµ  ø?:í·  @>î¹  @Bï»  "@Bò½  0@Bó¿  >@BõÁ  L@B÷à  Z@6øÅ  e@>øÇ  s@BùÉ  @BûË  @FüÍ  Ÿ@FÿÏ  ­@JÑ  ¾@NÓ  Ó@JÕ  é@*×  ÿ@.Ù  ARÛ  (AVÝ  ;AVß  NAVá  aAVã  tAVå  ‡AV ç  šAV é  ­AV ë  ÀAV í  ÓAV ï  çAVñ  ûAVó  BVõ  #BV÷  7BVù  KBVû  _BVý  sBVÿ  ‡BV  ›BV  ¯BV  ÃBV  ×BV  ëBV  ÿBV  CV  'CV  ;CV  OCV  cCV  wCV  ‹CV  ŸCV  ³CV   ÇCV!!  ÛCV"#  ïCV#%  DV#'  DV')  +DV)+  ?DV)-  SDV*/  gDV*1  {DV+3  DV,5  £DV-7  ·DV.9  ËDV/;  ßDV/=  óDZ0?  E^0A  5E60C  GEb0E  [Ef2G  wE¾3I  Ej4K  ¢E5M  ´E%7O  ºE¾8S  ÉE2:U %ßE=W  F=Z  F?e %;F@i  YFz@l  {F~@n  F‚Ap  ¥FzBr  ±F†Bt …»FCv !ÊFC|  ÕFŠF€  åFŽF‚ €Ï)G„  ÷F’G  G–H’ €G…I”  GšR¥  &GžS§  0G¢S©  9GêS«  JGâS­  ]G¦T¯  kGªT±  }G T³ ŽGBTµ  ›G®Tà  ¹G²UÅ  ×G®VÇ  õG¶XÉ  HþYË  *HºYÍ  AH²\Ï  dH²]Ñ  „H¾^Ó  ¢HÂ^Õ  ÂHþ^×  áHþ^Ù  ýHþ^Û €IB_Ý !(I_ 3IÆb  QIÆd qIÆi IÆn °IÊr ÆIÊu ÜIÊx òIÊ{ JÊ~ JÊ 4JÊ„! JJʇ# `JÊŠ% vJÊ' JÊ) ¤JÊ“+ »JÊ–- ÒJÊ™/ éJÊœ1 KÊŸ3 Kʤ5 'Kª7 3KΫ9€AK…®;€IK ²< QK²n XKÒµt bKÖµv!nK µx yK¹x…~¼„ ‚Kξ„ ’KÞ¿† šKâÁˆ ¥KæÆŠ ¼KêÇŒ ÓKîÈŽ êKæÉ LêÊ’ LîË” /LòÌ– FLâ͘ QLöÒš bLúל nLúÚž }Lþà  †Lé¢ “Lë¤ «L ì¦ ÃLí¨ ÛLæîª óLêï¬  Mîð® #Mæñ° ;Mô² FMbõ´ SMõ¶%aMö¸ xMöº …Mæý¼ ‘Mêþ¾ MîÿÀ ©M µMÄ ÃM"Æ ÖM&È éM&Ê üM&Ì€N Î NÕ…~ ä$(N¼ä$2N¼æ$?N¼é$JN¼ë$RN¼í]NïvNñ’Nô¬NöÃNø ÝNú…~ $çNì# $òNì$ $Oì%$Oì&$$Oì($3Oì*?O+YO,}O-˜O.¸O/"ÖO0%…ñO1' ÷O*1* P*1,…Ô1.€ P 1. Pž1V  Pž1X *Pž1Z 4Pž1\ >Pž1^ JPž1` [Pž1b qP.1d €P.1f ŽP.1h P.1j ªPž2l ¹PÎ2n€ÅP…2p ÎP2>qÞPB>s‚îP>s€þP…>€Q…A€€Q…A€% QA€ Q6Bƒ (Q¢B…%/QC‡%AQE‰%SQFŽ%[QG%mQI’€Qa J— „QÆJî ¡QFLð ÆQJLò ãQNLô RRMö  RVNø &RVNú ARVNü \RZOþ wR^O ”R^P ±R^P ÎRbR äRbR üRbR  SbT  ,S6U HSfW aS6W rS^Y S^Z ’S6\ ªSZ^ ÅS^^ âS^^ öS6_ €T…a" Tby$ *Tjy& V––õ vVž—÷ —V¢˜ù¥V ˜û³V ˜€ÁV…˜ÉV ˜‚ÕV˜d%ÞV˜l%ëVœn%ùVŸp%W¢r%W¥t% W§v%3W©x%DW«z€RW…®|YW ®|€dW…®ËjWB®Ë wW²®Ø €W¦°Ú W²²Ü€›W…´Þ£W ´Þ ­Wª´. ¾Wªµ0 ÎWª·2 åWª¸4 ôWªº6 ÿWª¼8  X®¿: X²À<  X²Á> 1X¶Â@ :X²ÃB EXºÄD MX¾ÄF VXªÄH%_XÂÅJ hXªÌP {XÆÍR ‰XÆÎT •XªÐV ¢XªÑX%±XÂÒZ%¿XÊØ`%ÍXÂÞf%×XÎål åXÒír ñXþðt þXªòv  YÚóx YÖõz 1YÚõ| @YÞõ~%MYÂ÷€%[YÂþ† kY–Œ wY–Ž YÚ  Yâ ’ ŸYæ ”%¬Y –%»Yœ%ÅY¢ÔYê !¨ !ãYÕ!µ%ùY"¸%Z"»%Z#¾ "Z$Á 4Zª%Ç AZÖ(É \ZÚ*Ë¥ yZ*Í!ŒZ*Î! Z,Ñ ³Zþ2Ú ÆZ–3Ü ÛZª5Þ%ëZ6à [ö:æ [–>è .[ú?ê%4[@ì%F[Bî€V[ Eó… `[E÷…~F$g[þI$m[þI$s[þJx[K[L¢[M¥ ¶[N  Â[N  Ñ[ÆP Ú[R!\S =\V _\W! ¢\þX#€)  Y%%æ\Y:!î\Z@ ][F…~_O… ]bO%#] dX%+] f[%4] i^%=]la%H]pg%S] sm ^]®up%o]wr%x]{x!Ž]€~! ]ƒ…%¬]…‹€Å]…‡‘%Ê]‡‘Û] ‰—%î]‰™ ^ Š›%^ŠŸ%%^Š¢%:^‹¥%G^‹¨€X^…«e^B«€r^…¸z^ ¸ ˆ^Ë ^Í Ÿ^‘Ï ¨^’Ñ€³^…•Ó€Þ^»^•Ó€ä^»^•Û…é^•€_…•  _‡ • %_• $_®–9_B— C_Z—‡ X_™‰ l_›‹ z_–› Œ_› œ_›‘‚®_›“!Á_ ›ò… Æ_Ÿò î\ ý Ü_ … ò_"¡… `¤ 6`&§%F`*§%X`¬ j`2°!%z`6°#%Œ`µ) ž`>¹,%¯`B¹.%Â`¾4 Õ`JÂ7%æ`NÂ9%ù`Ç?  aVËB%aZËD%0aÐJ CabÔM%UafÔO%iaÙU }anÝX%arÝZ%Ÿaâ` ±azæc%Âa~æe%Õaëk èa†ïn%øaŠïp% bôv b’øy%+b–ø{% Ö dÊ> Ø &dâ? Ú 5dÊ? Ü Ddæ@ Þ [dÊ@ à jdA â dÞB å dÊB ç ŸdâC é ®dÊC ë ½dD í ÔdÞE ð ãdÊE ò òdâF ô eÊF ö eG ø 'eÞH û 6eÊH ý EeâI ÿ TeÊI  ceJ  {eêK  ŠeZK  ™eîL  ¨eòM  ·eZM  ÆeîN  ÕeO  ïeÞP  þeÊP   fâQ  fÊQ  +fR  AfÞS  PfÊS " `fâT $ pfÊT & €fU ( ˜fÞV + ¨fÊV - ¸fâW / ÈfÊW 1 ØfX 3 ófÞY 6 gÊY 8 gâZ : #gÊZ < 3g[ > KgÞ\ A [gÊ\ C kgâ] E {gÊ] G ‹g^ I ¢gö_ L ²gú_ N Âgþ` P Ògú` R âga T ògúa V hb X húb Z "h c \ 2húc ^ BhÒd ` Rhúd b bhe d rhúe f ‚hf h ’húf j ¢hg l ¸hÞh o ÈhÊh q Øhâi s èhÊi u øhj w iÞk z  iÊk | 0iâl ~ @iÊl € Pim ‚ giÞn … wiZn ‡ ‡iâo ‰ —iZo ‹ §ip  ½iÞq  ÍiÊq ’ Ýiâr ” íiÊr – ýis ˜ jÞt › $jÊt  4jâu Ÿ DjÊu ¡ Tjv £ jjÞw ¦ zjÊw ¨ Šjâx ª šjÊx ¬ ªjy ® ÁjÞz ± ÑjÊz ³ ájâ{ µ ñjÊ{ · k| ¹ kÞ} ¼ 'kÊ} ¾ 7kâ~ À GkÊ~  Wk Ä nkÞ€ Ç ~kÊ€ É Žkâ Ë žkÊ Í ®k‚ Ï Äkêƒ Ò Ôkƒ Ô äk„ Ö ôkò… Ø l… Ú l† Ü‚$l‡ Þ‚,l‡ î…6l‡ ó€Al ‡ ó Tl‡ øelBŠ ÿ‚ wlŠ ÿ „lZŠ %lÂŒ ‚ ›l  ¨l %¶l" %Ãl" ‚ Ðl&‘ %Ýl*‘ %êl*’ %÷l*“  m"” ‚ m.–  m*– !%-m2˜ #%:m2™ %%Gm2š '%Tm2› )amBœ +%tmœ %•mœ ‚%½m …%Ïm ‡%ãm ‰%öm ‹% n %n %/n ‘%Cn “%Un •%in —%}n ™%‘n ›%¦n %¹n Ÿ%În ¡ ãn £%þnŸ §% oŸ © oŸ « 6o  ® So¡ ± xor¢ ´ †ov¢ ¶ ”oz¢ ¸ ¢o~¢ º °o‚£ ¼ ¾o†¤ ¾ Ìo¥ À çoZ¦ à òo§ Å ýo¨ Ç pZ© É pª Ë p†« Í ,pn« Ï :p&« Ñ Ip2« Ó XpV« Õ gp’« × vpz« Ù …pJ« Û ”p>« Ý £pb« ß ²pê« á Ápò« ã ÐpŠ« å ßp« ç qZ¬ ê  q­ ì q® î "qZ¯ ð .q° ò :q†± ô Iqn± ö Xq&± ø gq2± ú vqV± ü …q’± þ ”qz±  £qޱ  ²qJ±  Áq>±  Ðqb±  ßqê±  îqò±  ýqб   r±  'rZ²  3r³  ?r´  KrZµ  Wr¶  cr†·  rrn·  r&· ! r2· # ŸrV· % ®r’· ' ½rz· ) ÌrJ· + Ûr>· - êrb· / ùrê· 1 sò· 3 sŠ· 5 &s· 7 HsZ¸ : Ts¹ < `sº > lsZ» @ xs¼ B „s†½ D “sn½ F ¢s&½ H ±s2½ J ÀsV½ L Ïs’½ N Þsz½ P ísJ½ R üs>½ T  tb½ V tê½ X )tò½ Z 8tн \‚Gt½ ^ St½ ¥%ct¾ ©%t¾ ¬ §t¾ ¯ ºtÀ ³ ÌtÀ ¶‚ÜtÀ ¹ ïtÀ ׂútÁ Ú‚ uÁ à€uBÁ å€%uBÁ 倕yRV€Ü?V€ç?V€ò?#MN#M]#M@"•y"•y&"•y3"#y€?V€Z?V€e?V€p?V€{?#MN#M]#M@"#M*&•yî%•yý%•y &•y&#y€?V€ý?V€?V€?V€?V€)?#MN#M]#M@"#M*&#MY+•y+•y+•y&+•y7+•yH+#y€?V€Å?V€Ð?V€Û?V€æ?V€ñ?V€ü?#MN#M]#M@"#M*&#MY+#M™1•yæ1•y 2•yZ2•y”2•yÎ2•y3#y€?V€²?V€½?V€È?V€Ó?V€Þ?V€é?V€ô?#MN#M]#M@"#M*&#MY+#M™1#MÍ6•y7•yZ7•yš7•yÚ7•y8•yZ8•yš80„l7„?>„?×…N#6zNV€¬y?V€5†?³†N¸†'B3½†'BV€g†?V€è†?ˆ'Bˆ?܈€D爊EŠ”DIŠìDV€WŠ?V€e ?V€l ?#wŠN#}Š]#wŠN#}Š]#ŽŠ”E#”Š”E#šŠ?•y¢F•yÄFƒ ‹Gƒ‹”E!‹ G0‹G}GëýLðýLV€ ?V€ ?V€ ?#wŠN#}ŠM#ŽŠM#”Š?#MN•yfN•y‚NƒYGƒfM!‹ÿC0‹¨N}¨NU‘³QY‘?]‘·QÅ•Uú•]U–fUÅ•N"–þU*– VÅ•W3Ü–vWV€­–?V€B ?V€L ?#M?#M?•yÐX•yŽW•y“WV€¥ ?V€ª ?V€¯ ?#wŠŠ#}ŠýL#ŽŠŠ#wŠŠ#}ŠY#ŽŠŠ#”ŠY#šŠŠ#v—vW#wŠl#}ŠˆS>«$q,ˆ7«$z,ß‹í>x«5qð"9ˆ7EŠq,ß‹í>ÍŒ]x«5qð"9ˆ7*ŒNÀ$ìDˆ7„«Nqx«5qð"9ˆ7¹•9À$ìDˆ7„«Nqˆ7X%Qzˆ7X%QzÀ$ìDˆ7„«NqÀ$ìDÆÌq,Ù$S@ˆ7Ù$S@ÆÌq,﫲q¹•Qz﫲q¹•QzÀ$/﫲qÀ$/ÆÌq,ŽN#%A&%ö}­‹œD&%CA­‹œD&%CA<%q,3]%ŸA3€%¬p3´%ö}3¾%g–2¿?8¿±p8¿±p8¿±pZ©¦qÍŒNZ©¦qÍŒNZ©¦qÍŒN﫲qÞ%&$ö%9G #òp#‰7Z©¦qß‹vG¹ÐBH¹ÐBHÆÌq,;¬q,{­ýH;¬q,{­ýH﫲qX%Qz﫲q¹•9ˆQI&ÿCˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«Nq$?ˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆQI﫲q6ˆs1&C&ÿC¾®Ú2„«NqˆJˆJ?'Aq﫲qJ'K?'Aq#‰7ˆ±¯7﫲qJ'Kˆ±¯7#‰7V' 4c'?D®A}﫲q﫲qy'L#‰7ˆ±…E'Š﫲qy'L#‰7V' 4ˆ±…ED®A}O®?u®MO®t¼ˆVz™®z™®z¾®p™®z¾®p™®zO®t¾®p™®zO®t™®z™®zê® D™®zx&çMV' 4à®Nê® D™®zx&çMV' 4Ô®rNà®Nê® DÔ®rNà®Nê® Dy…NÔ®ÅNy…N~…]Ô®ýNy…N~…]……@"Ô®=O;¬…O™®z$¯ìOê® D™®÷Ox&çMž&P$¯ìOê® Dr«0q™®÷Ox&çMž&PV'—P$¯¶P™®zx&çMV'—Pž&ÁP$¯¶P™®zx&çMV'—Pž&ÁPty%Q$¯¶Pê® D$¯¶Pê® Dý'ŸA™®zý'ŸAb! 4™®zý'ŸAb! 4™®zý'ŸAb! 4;¬q,O®t™®z;¬q,O®tv¯Ú5¸…ìD#‰7V'—PUˆ&Sù¨0qUˆ&Sù¨0q#‰7V' 4¸…ìD¸…ìDæ7﫲q´&`5æ7﫲q¯¯`58¿|¸……EÍŒ5Tß‹>Tà&ö}í&pÍŒ5Tß‹>Tà&ö}í&pÍŒ5Tß‹>TÍŒ5Tß‹>TÍŒ5Tß‹>TA­?ÍŒ5Tß‹>TA­?ÍŒ5Tß‹>TA­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒ|A­?ÍŒòÍŒòÍŒò™®8™®8™®8A­?™®8A­?™®8™®8[(±V™®8*+ VŠ„ V,¨31k7?o7?Ó.lî.l9ϳQ§2)Vù2l§2)Vü2?3)p 3pÁ7)VÁ7)VÜÍôÇ^4lÄ2³QFˆ?NÍŒ?ß‹@rHˆYr*Œ)p¦4)pä7J€ê7?ð7ï|ˆ’)Vß‹t~Hˆ/t*Œ@tˆVtÍŒhtHˆht*ŒutHˆpÉ7?Hˆut~Hˆut8VtHˆp%8l48pC8Š$?%8³Q48l%8³Q48l%8÷u48?ß‹@rR8/tr8³Qv8)pz8p~8l‚8?ÍŒäw¢8³Q¦8lHˆ³Q*Œl–p–@t¢8³Q¦8lÍŒŠÍŒlÍŒˆYÍŒ¼YÍŒðYÍŒ"ZÍŒ+ÍŒyZÍŒ¬ZÍŒ?ÍŒ [ÍŒù[ÍŒm[Hˆ³Q*Œl–p–@tHˆ³Q*Œ@tÍŒ]ÍŒ³QÍŒäwÍŒ÷uÍŒäwÍŒ÷uÍŒ?ç5~q/9tç5~qˆl6èzÜÍ)VFˆ?0„F\6èz86^„86^„K9F\N9Ç]#wŠå„#}Š?#Mut£6~q£6~q£6~qí9E‡ñ9Aû9~qߋӆÄ:ŠÄ:IŠ3W;³Q3d;³Q3@+³Q3p;~q3óD}Š3E™Š3ßEºŠ3;FÊŠ2¿?"¥ŠFˆ?3=^3=^ß‹ƒ3=^ß‹ƒß‹ð¿<]Æ<û3=^7=U7=Uì@Šù@x AŠ8“@š 3³QˆQÝ$?Î>’˜sA³QxAýLˆQÝ$?Î>’˜‚A)VsA³QˆQÝ$?Î>’˜‡A³QÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜ˆQÝ$?Î>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÎ>’˜$?ˆQÝÑ<lÎ>’˜$?À=ðYˆQÝÑ<lˆQÝÎ>’˜ð?ä“$?À=ðYµ@Ž›µ@bœÑ<ls7?3ŒA³Q3—A­œ3¬A2”2¿?#wŠ?#}Š?#ŽŠQ¤y?S€ E ¨S€ºE ¨S€ÉE ¨#y€?3F²¥3"F²¥V€ÖE?V€èE?¨s1ÍŒýLmÌlØC²¥ÿ‘SR³B½•©~즨s1R8j¨#眨ˆD@£R8j¨#眨ˆD@£¹Ð\©ØC²¥ÿ‘SR³B½•©~즨s1ØC²¥ÿ‘SR³B½•©~즨s1 t¥Fˆ?lD? t¥fD?iD?lD?oD?ÍŒ?³B½•¨s1áC?ˆD@£ t¥fD?iD?lD?oD?fD?lD?R8j¨#眨ˆD@£R8j¨#眨ˆD@£ˆD@£áC?DlFª¥Fª¥ØC²¥ÿ‘SR³B½•©~즨s1tyýL¸F?R8j¨#眨ˆD@£¨s1ˆD@£áC?ÿ‘SR³B½•³B½•³B½•#y€?3pG¬«V€(N?V€2N?V€?N?V€JN?V€OG?V€RN?#MôÇ#wгQ#}гQ#Mð¬#M–­#M³Q•yž®•yª®•y¶®•y®•yή#y€?3®Há V€çN?V€òN?V€O?V€O?V€$O?V€ŠH?V€3O?#MQÝ#M³Q#Më #wŠl#}Šë #wгQ#}Šë #MýL•y ²•y²•y$²•yæ •yo¥•y>²ÍŒY3 LY3P¬j3 P¬j3*P¬j34P¬j3L³Q3ÎF³Q3#L³Q3ØF³Q3.LY38LY2¿?3øLQ¶3MZ¶2¿?ÍŒc¶œ3)V –¥!¸ÔNÍŒ˜¶ú•]U –õ#¸ÔWÍŒ‰)ÿ‘SRð"ÒbU‘³QY‘?~U¹Y‘?ÿ‘SR£löU‘³Qÿ‘SRŠU–ºÿ‘SR‘U Vÿ‘SR–Uf£lö£lö›U¦»£UfUªUfU£löÿ‘SR–Uf3±U³Q3…M³Q3»U³Q3ŒM³Q3ÃUl3ÎUl3ÞUT3ðU³Q3ÿM³Q3ûU³Q3N³Q3V³Q3N³Q3V³Q3/N³Q3V³Q3?N³Q3'V³Q3ON³Q32V³Q3_N³Q3=V³Q3oN³Q2¿?ó’³Q8“–º—„Òb6‹G*ŒM6‹G*ŒM6‹GHˆM›X²Ç’XŠO6M$tÊ ÿC±Òs16‹Gß‹ÖÊß‹*ñ6‹ûÊß‹üÎß‹üÎ6‹G G±Òs1›XÚ’XŠO6”E$—ÛO6GO6yÜg½Gß‹Í!‡¨ÿC¶\!ì&íß‹±í‡¨ÿC¼ˆ½íß‹*ñ‡¨ÿC¼ˆí‡¨ÿCß‹æí¼ˆíß‹Žs‡¨ÿC‡¨ÿCß‹îß‹.ÿCдðð‡¨ÿC¿\!ìß‹‹ùEŠ^ß‹ªùEŠ^ß‹ÔùEŠ^ß‹Ñß‹óÍŒ]ß‹.î6ˆ?ß‹.îß‹#­‹ß‹RS^mpß‹ððß‹*ñß‹Öß‹òß‹Í!·¥®¥6ˆ?·¥”D –œDð"?*_e /_?¢XNß‹ŸQm”De”Dm”D·¥ÿCÍŒNFˆ?·¥”D$s1­‹œD/_?¢XN·¥”D­‹œD2_`@±ÒN/_?¢XE ß‹V#ŒN·¥7_`@­‹‹ /_?¢XNÀ^?·¥”D ÿCŽs1$s1 –œD/_?¢XÿC·¥”Dã^Üzê^ã ã^Üzê^ã ·¥”D<_*ñA_F <_*ñW_”D·¥”DA_á }NÓ‹h”*_œD/_?¢XN<_*ñ·¥”DA_ }NÓ‹… *_œD/_?¢XN<_*ñ·¥”D·¥”D<_*ñA_o <_š!·¥ÆÌðð·¥”D –œD[_`@/_?¢XN6ˆ?·¥”D –œDð"?*_e /_?¢XNÆÌðð·¥”D –œD[_`@b_&$/_?¢XN6zNŽ`ýß‹;3¨`\t_ŸQz_š"‚_uÀXðð¢X*ñÔ`Ñ„§ìD¶_‹ À_œDᲊÚ`Šã`Qã_NX¨NX¨]Yaþ_^¹ÐA*Œ”Dá²&$&`)¹ÐA*Œ”Dá²&$&`)Ya”DŽ]UiWŽs¸ÔN>WŽsiWŽs _®3Õa;V€´!?V€m[?V€s[?#MN#MÅ •yg•yƒ•yŸ¹ÐÅ Z©Î Z©Î ¹ÐÍŒ¢aÅ &`÷@Ú`Š –œD¹Ð ØbœD –ª¥ᲊ#y€?3¹cF3ÌcF3ÞcFV€wc?V€c?V€¥c?½¯F&`Nß‹š! –‹ ß‹b –‹ $s1ß‹†W0‹ ]0˜ß‹š" –‹ á²&$&`‹#ß‹ðð –œDá²&$ß‹ó½¯ì"ß‹.îg‡s1ß‹.îTd?g‡s1¢XUz_š"‚_uá²&$&`‹#½¯ ÿC&`?s7?}Nᲊß‹ìD –œD_d€Dð"œD6‹7¿d?ídóòdýß‹š!‡¨È"ß‹ó"‡¨È"‡¨#‡¨#lD?oD?ß‹ð6zNß‹L2¹ÐW2ß‹‚2¹Ðþ¤y?S€wc®<S€Ùq®<S€¥c®<úq®<}NFˆNg½NŒNFˆNg½NŒNFˆ?l?g½?>rŠArŠFˆ?l?g½?>Wâ2Fˆù[lù[g½ù[>rŠArŠFˆù[lù[g½ù[>W–3Fˆm[lm[g½m[>rŠArŠFˆm[lm[g½m[>Wè3Fˆ [l [g½ [>rŠArŠFˆ [l [g½ [>W:4FˆÛ”lÛ”g½Û”>rŠArŠFˆÛ”lÛ”g½Û”>WŒ4FˆÁ”lÁ”g½Á”>rŠArŠFˆÁ”lÁ”g½Á”>WÞ4FˆyZlyZg½yZ>rŠArŠFˆyZlyZg½yZ>W05Fˆ¬Zl¬Zg½¬Z>rŠArŠFˆ¬Zl¬Zg½¬Z>W‚5Fˆ"Zl"Zg½"Z>rŠArŠFˆ"Zl"Zg½"Z>WÔ5Fˆ+l+g½+>rŠArŠFˆ+l+g½+>W&6Fˆ¼Yl¼YJr?>rŠArŠFˆ¼Yl¼Yg½¼Y>rŠArŠFˆ¼Yl¼Yg½¼YFˆˆYlˆYJr?>rŠArŠFˆˆYlˆYg½ˆY>rŠArŠFˆˆYlˆYg½ˆYZnN>Wa?FˆNg½NArŠZnN>Wa?FˆNg½N>WV#FˆNl]g½N>rŠArŠwn]>WV#FˆNl]g½NFˆðYg½ðY™nðYArŠFˆðYg½ðY™nðYy Vy V¼ˆâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆ<R8*ñ#ç<R8*ñ#ç<¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆó#çó#çó#çó#çó#çó#çó#çó#çó¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆ*ñ#ç*ñ#ç*ñ¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆâ;#çâ;#çâ;¼ˆV#R8š!#çV#R8š!#çV#O6'B&`'Bᲊß‹ôD]ø@"ß‹òß‹F]ø*&ß‹^Eß‹IFß‹sFß‹‰Fß‹QHß‹xH]øY+ß‹ƒK]ø™1ß‹Iß‹ Iß‹=Iß‹ÐK¿d?ÀvGß‹G¼ˆN¼ˆN¼ˆCNð" VR8.î#çCN8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çò8“òR8*ñ#çòg½ VR8*ñ#çòÉ€ŠG?J?—„?3«…l3Ì…l3ç…l3†l3†l3?†93P†óT3`†óT3w†¬V3†¬V3©†ê[3†ï[3Ù†I3V3 ‡¬V3½mô[3Ïmü[3ãm\3öm \3 n\3n\3/n$\3Cn,\3Un4\3in<\3}nD\3‘nL\3¦nT\3¹n\\3Înd\2¿?ß‹Ýhß‹*ñß‹Ýhß‹*ñß‹èhß‹Ýhß‹ iß‹8iß‹kiß‹±i3ø¢j2¿?P gvÔ\ Æay#` Æmy,t Áxy1x gvÃŒ † #†¶{D#gv,#†Ð{o8#gvUL#†ð{_`#gv´#†á|oÀ#†ê|Ì#†ÿ|ÃØ#†}ä#†$}Ãð#†2}ü#†A}Ã$†P}$†d}à $†x}o,$†Ž}8$†¤}D$†¿}ÃP$†Ú}\$†þ}Ãh$gvÔt$gvˆ$†ì/æmy,?0gvÛ@ 0†š» A(0gvA80†š !B@0gvÛ!BP0†š¼$CX0gv%Ch0†š» Dx0gv,%Dˆ0†š !E˜0gvG%E¨0†š¼$F¸0gvV%FÈ0~€i%GÐ0†Œ€HÜ0€‰%Hä0†«€Ið0¼€©%Iø0†Ê€J1Û€Ï%J 1†é€K1†‚#K 1æšy³&KX2æšy1Ll2æšy M˜3æay2 OŒ4æay#Pœ4æmy9 P¸5æmy(RÈ6æmy,Sì6gvÛTü6†š» U7gvU7†š !V7gvÛ!V,7†š¼$W47gvÉ%WD7†š5)XL7gvŒ)X\7†š» Yl7gv«)Y|7†š !ZŒ7gvÊ)Zœ7†š¼$[¬7gvé)[¼7†š5)\Ì7gvV%\Ü7> *]ä7†L^ð7].*^ø7†k_8|R*_ 8†Š`8›v*` 8†©a,8º *a48†Èb@8†‚#bH8æšyÎ*bp8æšy1c„8æšy d¼8æay2 fä9æay#gô9æmy9 g:æmyn,iT;æmy,jx;gvÛkˆ;†š» l;gvl ;†š !m¨;gvÛ!m¸;†š¼$nÀ;gvÉ%nÐ;†š5)oØ;gvš*oè;†š»-pð;gv.p<†š» q<gv7.q <†š !r0<gvZ.r@<†š¼$sP<gv}.s`<†š5)tp<gv .t€<†š»-u<gvV%u <*‚Å.v¨<†8‚w´<I‚í.w¼<†W‚xÈ<h‚/xÐ<†v‚yÜ<‡‚=/yä<†•‚zð<¦‚e/zø<†´‚{=Å‚“/{ =†Ó‚|=†‚#| =æšyÊ/|h=æšy1}|=æšy ~À=æay2 €Ô=æay#ä=æmy9 >æmy0ƒ<>æmy,„`>gvÛ…p>†š» †x>gv†ˆ>†š !‡>gvÛ!‡ >†š¼$ˆ¨>gvÉ%ˆ¸>†š5)‰À>gvš*‰Ð>†š»-ŠØ>gv/Šè>†š1‹ð>gv 2‹?†š» Œ?gvE2Œ ?†š !0?gv2@?†š¼$ŽP?gv¹2Ž`?†š5)p?gvó2€?†š»-?gv-3 ?†š1‘°?gvV%‘À?BƒV3’È?†Pƒ“Ô?aƒ‚3“Ü?†oƒ”è?€ƒ®3”ð?†Žƒ•ü?ŸƒÚ3•@†­ƒ–@¾ƒ4–@†Ìƒ—$@݃24—,@†ëƒ˜8@üƒd4˜@@† „™L@†‚#™T@æšyš4™œ@æšy1š°@æšy ›Aæay2 Aæay#ž,Aæmy9 žtAæmyÞ4 ¸Aæmy,¡ÜAgvÛ¢ìA†š» £ôAgv£B†š !¤ BgvÛ!¤B†š¼$¥$BgvÉ%¥4B†š5)¦…l9»¬E>…¨9¼ÀET…l9½ÌEb…¨9¾àEn…':¿Fn…ø:ÂhFn…Y<ÆèFn…q>Ë”G«…¹>Ñ G«…×>Ò¬G¿… ?Ó¸G¿…R?ÔÄG¿…¥?ÕÐG¿…@ÖÜG†á…» ×äG†î…Û×ðGgvÛØHæšyU@ÙDHæšy1ÚXHæšy Û¨Hæay2 ÝäHæay#ÞôHæmy9 Þ4I†J7ZnŒJJ7@Zƒ†Œ#8üZÆmy,8œ[Æay#9¨[Æ^†o9´]Áއ¤K9Ä]Á҇C9Ø]Á ›ŒN99ð]Á ÏŒ4E: ^Á ÊK<$^Á 3ñK<<^Ág4E<X^Á–J>p^ÁËúK?¤^ÁŽJAÀ^Á2ŽLBÜ^Á_ŽÔCø^ÁŽŽLC_Á¾ŽLDl_ÁðŽ$LE€_Á &G„_Á ^#G”_Áxy1Gè_gv½KHü_ƒ<ˆòLI0`ƒ÷[I8`ƒÿ[I@`gv‡IX`gvÔK``7MKd`^MKp`*MOx`:† MP `gvIMPÈ`ƒ¸Š» TÐ`ƒÂŠ×MTØ`ƒÞŠ×MTà`ƒèŠ#Tè`gvÛTø`ƒš» UagvwNUa†¸Š» V a†ÂŠ×MV0a†ÞŠ×MV@a†èŠ#VPagv“NV`a†š» Wpagv¹NWaˆ8BY´aƒZ‹«GYÈaƒ‹«GZôaƒ¹‹H[bƒÆ‹×M[ bÒ†ËN[b†Ï‹ÕN[4b†PŒÕN\Tb†:Œ#]db†£J]|bƒŒáN^bƒü‹O_¨b†܆a´bƒ0ŒˆOacƒè‹¥Ob@cƒ,ŒPcpcƒá‹Pd„cƒï‹Pe˜co2Pfàcˆ2Phd”2Pjhd¡cPl|d”cPmŒd¬ŠPn¬dµœPpÈdƒ½» rØd†È» rèd†Û» rød†î®Pre†‘®Ps0e†‘®PtLe† ‘®Puheƒ_ŒfBvxeƒfŒDvˆeƒ†Œ#vfÆay#v fÆmy,v¬f3‘÷Pw¼fgvQxàf¦‹ Qyìf=‘QzgÆ^†o{èhÁxy1{iÁ2ŽÛ|iÁ_ŽÔ}(iÁŽŽJ}8iÁ¾ŽJ~PiÁðŽXLdiÁ &hiÁ ^#xiÁއ~CˆiÁ҇Cœigv™Q°iƒ<ˆD‚ÜigvÅQ‚üi†á|o„Tj†c‘R„`j†u‘ R„xj†‘R„Œj†‘"R„ j†¡‘)R…°j†‚#…¼jÆ^†o…àjÆay#…øjÆmy,…8kƒÕ‘GR†Pká‘MR†tkö‘gR‡°k ’gR‰ôk8’MR‹(lC’MRŒHl\’R¤lz’žRmŽ’¦Rm©’®R‘@mÊ’»R’tmå’ßR”Ìmý’gR–n%“»R˜LngvÔšXnÆ&…Sšhn=“S›¤n`“-SžoÊ’=S ”ov“KS¢´o’“WS£èo©“lS¥pÅ“S§PpM”ÞS©@qi”îS«tq”ýS­ìq–”T®¬r¤”T°Ärº”#T±ÜrÖ”;T³ôrñ”HT´ s•[Tµ\s$•lT¸¤s?•‚Tºìs^•ªT¼dtm•ÁT¿°t†•ÕTÁüt£•åTÃDu%“=SŘugvÔǬu†æ•UÇÐu†î•8UÈÜugvxUÈðuˆ8BÉ$vƒ&…RDÉ8vƒ&…‰UËxvƒ&…–UÎÐvƒ&…¥UÒ8wƒ&…¶U׬wƒ&…ÉU݃gv¢9äÃ&…ÛUæÃ•ˆäUæÃ²ˆeDè0xgvÔéXxˆ8Bé´y†æ•ÈVé$z†î•æVë4zgvÔëHz†æ•Ûëlz†î•LWì|zˆ8BìˆzgvÔìzð–{Wì˜zƒ—ì¤z—Wì¬zƒ—í¸z/—WíÀzƒ9—îÌzƒ‚#îôzæay2 îl{æay#ï|{æmy9 ï@|æmyÜWñ}æmy,ò$}gvÔó,}gvV%ó<}ƒš#ôD}gvV%ôT}ƒš#õ\}gvÕXõl}gvÜXö|}†š#÷Œ}gvãX÷œ}†š#ø¬}gvÔø´}[—êXøÀ}ƒc—ûÌ}n—óXûÜ}ƒ|—è}‡—Yô}ƒ—~ƒ‚#(~gvGYH~ƒ¸ŠP~ƒÂŠ[X~ƒÞŠ`~gvÇY˜~ƒ¸Š  ~ƒÂŠ×Y ¨~ƒÞŠ °~ƒèŠ×Y ¸~ƒòŠ À~ƒ —ÝY È~gvIZ è~ƒ¸Šoð~ƒÂŠ\Zø~ƒÞŠ×YgvºZ†¸Š †ÂŠ[0†ÞŠ@gvÆZP†¸Š`†ÂŠ×Yp†ÞŠ€†èŠ×Y†òŠ † —ÝY°gvÒZÀ†¸ŠoІŠ\Zà†ÞŠ×Yƽ—ÙZÆ Ç—#Æ Ö—#ðƒ™oøƒ+™“[€ƒB™´[€ƒU™º[€ƒf™#€ƒu™# €ƒ„™#(€ƒ”™#0€ƒ¢™8€ƒµ™@€gvÀ[ €_šï[Ø€gv쀆Ð…†ÂŠ#>à…ˆ8B>†gvV%> †П¡^?¨†ƒÚŸ?´†柡^?¼†ƒ÷Ÿ?Ȇ  ¡^?Іƒ ?܆& ¡^?䆃7 ?ð†J ¡^?ø†ƒT ?‡` §^? ‡ƒo @‡ ¯^@ ‡ƒ“ A,‡¨ ¯^A4‡ƒ» B@‡Ñ §^BH‡ƒß CT‡ð Ò^C`‡ƒþ El‡¡è^Et‡ƒ$¡F€‡<¡è^Fˆ‡ƒO¡G”‡e¡è^Gœ‡ƒz¡H¨‡’¡è^H°‡ƒ¥¡I¼‡»¡$_IćƒÑ¡JЇê¡$_J؇ƒþ¡K䇢$_K쇃+¢Lø‡D¢$_LˆƒX¢M ˆo¢a_Mˆƒ~¢N ˆ¢w_N(ˆƒ¨¢O4ˆâw_O<ˆƒÙ¢PHˆò¢§^PPˆƒþ¢Q\ˆ £§^Qdˆƒ£Rpˆ,£§^Rxˆƒ=£S„ˆQ£¡^SŒˆƒ]£S˜ˆk£¡^S ˆƒ|£S¬ˆ£¡^S´ˆƒŸ£SÀˆ±£¡^SȈƒ¾£SԈͣ¡^S܈ƒÞ£Sèˆñ£§^Sðˆƒÿ£Tüˆ¤¡^T‰ƒ¤T‰.¤¡^T‰ƒ?¤T$‰R¤¡^T,‰ƒl¤T8‰ˆ¤¡^T@‰ƒ˜¤TL‰ª¤C`TX‰ƒµ¤Vd‰ä§^Vl‰ƒÕ¤Wx‰ƒ‚#W€‰æay2 W”‰æay#X¤‰æmy9 Xì‰æmyn`Z0Šæmy,[TŠgvÀ \dŠƒšR]lŠgv>a]|ŠƒšEa^„Šgv>a^”ŠƒšEa_œŠgvÀ _¬ŠƒšR`´ŠgvÅQ`ÌŠƒ¸ŠRbÔŠƒÂŠ#bÜŠgvÖbbðŠƒšÜbcøŠgvÖbc ‹ƒšÜbd‹gvÖbd(‹ƒšÜbe0‹gvÖbeD‹ƒšÜbfL‹gvldf`‹ƒšsdgh‹gvldg|‹ƒšsdh„‹gvldh˜‹ƒšsdi ‹gvldi´‹ƒšsdj¼‹gvfjЋƒšfkØ‹gvvfk싃šGRlô‹gvvflŒƒšGRmŒgvÀ m$ŒƒšRn,ŒgvÀ n@ŒƒšRoHŒgvÀ o\ŒƒšRpdŒgvÀ pxŒƒšRq€Œgv½hq˜Œƒ¸Š[s ŒƒÂŠRs¨ŒgvÀ s¼ŒƒšRtÄŒgvmitÔŒ†šRuäŒgvyiuôŒ†šEavgv…iv†šEaw$gv‘iw4†šRxDgvixT†¸ŠRyd†ÂŠ#ytgv©iy„†šÜbz”gvµiz¤†šÜb{´gvÁi{ĆšÜb|ÔgvÍi|䆚Üb}ôgvÙi}ކšsd~Žgvåi~$ކšsd4ŽgvñiDކšsd€TŽgvýi€dކšsdtŽgv j„ކšf‚”Žgvj‚¤Ž†šGRƒ´Žgv!jƒÄކšGR„ÔŽgv-j„䎆šR…ôŽgv9j…†šR†gvEj†$†šR‡4gvQj‡D†šRˆTgv]jˆd†¸Š[‰t†ÂŠR‰„gvij‰”†šRФgvvjŠÀƒÆ‹…jŒ̆¥(]ŒØÆmy,ŒÆay# Æ^†o,†^†šj@ƒ½—.mŽH¤†'¥;mX¤†?¥Ymp¤†øšR|¤K¥imŒ¤\¥rm‘œ¤g¥rm“¨¤‰¥Œm•¸¤ ¥¢m—ؤ ¥³m™ü¤°¥Çmœ$¥¾¥Òmž0¥á¥ám¡<¥¦óm¥\¥¦üm¦|¥(¦n¨œ¥(¦nªÀ¥1¦#n­Ì¥B¦/n¯Ø¥Z¦>n²ä¥p¦Vn´¦Цgn¶(¦¦¦on·4¦¯¦}n¸T¦¹¦}nºt¦Φ–n¼ ¦ò¦©n¿¬¦ÿ¦ÓnÁì¦ÿ¦ënÄ,§ §oÆl§ §oʘ§,§imͤ§8§rmδ§I§3oÐħy§rmÕÔ§‘§Ho×ä§š§ÇmÙ ¨£§RoÛ¨ñOdoÝD¨ñOmoÞl¨±§voàx¨¾§#nጨŧrm㘨ϧo帨ô§oæĨù§žoçü¨2¨·oë ©q¨ÁoîT©gvvjïd©†¨Ö]ñh©gvÔñ”©ƒ’¨» ñªƒ¦¨Ûñœªƒ:Œ#ò¨ªƒš¨V%ò`«gv'pó«ƒרpô «ƒü¨Ôô°«ƒ"ŠÔôÌ«Áy‰Ôô諈8Bôô«gvÔôü«©9pô¬ƒ‚#ô ¬˜©Ppô¬´©Tpô¬gvÔõ8¬ЩPpõ@¬ƒì©gpõ˜¬ƒªö¼¬ƒª‡pö謪•p÷쬈8Bøü¬gvÔøt­ƒüª×pø´­ƒ#«gpú ®ƒO«gpûd®ƒ[«gpü¤®ƒc« qýÔ®ª•pýØ®ˆ8Bþ讃¼«pþð®ƒÆ«Sqþø®ƒЫ`qþ¯ƒÚ«nqþ¯gvtqþ0¯ƒþ«¿q8¯ƒ¬Ìq@¯gvÒqX¯¬!r`¯gvrp¯ƒš:rx¯ƒ‚#€¯gvÔŒ¯†¬_r”¯†¬pr ¯†)¬‰r¬¯†0¬–r°¯†G¬¯r ¼¯†S¬Ïr ȯ†Y¬êr Ô¯†_¬sெl¬"s쯆y§;sø¯†I§Vs°gváN°ƒ&…RD(°´¬²s0°ʬ½s8°Ö¬tH°è¬=t\°­8BŒ°­ktœ°0­åt(±I« u`±[­u!˜±­eu$¨±ÕV¤u&¸±­­»u'ô±® u,²®ëu. ²)®v/\²c®v1l²y®=v3|²…®gv4Œ²¤®°v5زÇ®w8ì²Ç®Rw;³Ç®¬w?³Ç®xD,³ ¯—xJH³¯üxKX³/¯-yMh³6¯½sNp³H¯½sNx³[¯dyNˆ³f¯ˆyP˜³‚¯œyQ¨³˜¯¯yR´³¥¯ÞyTijgv)zU´ƒö¯2vW<´ƒ°» XÀ´ƒ(°XÌ´ƒ‰ÔXø´ƒרpXµƒ5°ÔXµƒA°ÔXDµÁ X°XdµÁ |°XpµÁ ¹°ÌzX€µÁ á°[XŒµÁy‰ÔX˜µgvÔX쵃¸±<{X¶ƒ±#Xl¶ƒÙ±v{X¸¶ƒì±v{Y·ƒ²´{ZT·ƒ ²Î{\x·ƒ&²Î{\À·ƒ:²Î{\ü·ƒüªÛ\L¸ƒO²|]p¸ƒW²»|_„¸ƒ\²}a¤¸ƒg²$}bĸÁy‰Ôcø¸ƒo²;}c¹ƒ{²R}cL¹gváNd`¹†²Ûep¹gv¿}fع†±#h蹆ô²#hô¹†³V%hº†³ë}iº†$³ë}j0º†I«Ôkˆº†üªÛk˜º†1³n~l»†_³Ÿ~nX»†l³ë~pÈ»†‘³ar@¼†g²€tp¼†\²u ¼†W²¥vм†O²Éx½I«€z ½Áy‰Ô|8½ƒ²³» |@½†¸Š» |L½gvÛ|`½ƒ²³» }h½ƒó !}p½†¸Š» }|½†Š !}ˆ½gv4E}¤½ƒ²³» ¬½ƒó !´½ƒÔ³¼$¼½†¸Š» Ƚ†Š !Ô½†Þм$à½gvx¾ƒ²³» ‚¾ƒó !‚¾ƒÔ³¼$‚¾ƒå³5)‚ ¾†¸Š» ‚,¾†Š !‚8¾†Þм$‚D¾†èŠ5)‚P¾gvt€‚x¾ƒ²³» †€¾ƒó !†ˆ¾ƒÔ³¼$†¾ƒå³5)†˜¾ƒö³»-† ¾†¸Š» †¬¾†Š !†¸¾†Þм$†ľ†èŠ5)†о†òŠ»-†ܾgv€† ¿ƒ²³» ‹¿ƒó !‹¿ƒÔ³¼$‹$¿ƒå³5)‹,¿ƒö³»-‹4¿ƒ´1‹<¿†¸Š» ‹H¿†Š !‹T¿†Þм$‹`¿†èŠ5)‹l¿†òŠ»-‹x¿† —1‹„¿gv°€‹¼¿ƒ²³» ‘Ä¿ƒó !‘Ì¿ƒÔ³¼$‘Ô¿ƒå³5)‘Ü¿ƒö³»-‘促´1‘쿃$´Ñ6‘ô¿†¸Š» ‘À†Š !‘ À†Þм$‘À†èŠ5)‘$À†òŠ»-‘0À† —1‘<À†.´Ñ6‘HÀgvÔ€‘ˆÀƒ²³» ˜Àƒó !˜˜ÀƒÔ³¼$˜ Àƒå³5)˜¨Àƒö³»-˜°Àƒ´1˜¸Àƒ$´Ñ6˜ÀÀƒK´˜ÈÀ†¸Š» ˜ÔÀ†Š !˜àÀ†Þм$˜ìÀ†èŠ5)˜øÀ†òŠ»-˜Á† —1˜Á†.´Ñ6˜Á†U´˜(Ágv ˜|Ágv0 ˜ÁÁ b´» ¢¤ÁÁ҇C¢¸ÁÁއ<¢ÈÁgvQ¢ÜÁ†„´X£èÁgvÔ£ôÁ†_¬¢£†¬È¥ †m[Õ¥0†”´ä¦4†,§ú§8†½‚¨H†½1‚©T†£Q‚ªd†°v‚¬x†ʴꂮœÂ†Ú´Mƒ°¬Â†ß´Mƒ±¼Â†ô´Mƒ²̆µMƒ³܆‹­ƒ´ì†#µäµÆá‹-„¶ Æ0µ-„¸@Æ©†MƒºPÆDµw„»`ÆHµ¡„½tÆMµê‚¿˜Ã†Wµ¡„Á¬Ã†\µê‚ÃÐÆfµÎ…ÅðÆ|†MƒÇĆ~µ+†È Ć–µ+†Ê@Ƨµ¦†Ì`Ƶµ¦†Î€Ä†Ðµ¦†Ð,ņ޵¦†ÒƆøµ+†ÔØÆ†¶+†ÖPdž¶TˆØtdž9¶¾ˆÚ Ç†R¶¾ˆÜÌdžc¶¾ˆÞüdžj¶¾ˆà,Ȇ{¶ŠâXÈ†Š¶Šä„Ȇ£¶Šæ´È†²¶ŠèäȆ˶ã‹êɆì¶ÑŒíxɆ9·ÍòÔɆC·Í÷0ʃQ·¨Žü@ʃa·ÊŽýlʃv·êŽþ|ʆ•·êŽÿŒÊgvÔ˜ÊgvÔ¤Êgv¸ÊgvÔÄʆзoÐÊgväʆù·oðÊgvÔˆ3¸oˆ@¸(ˆM¸#4ˆV¸V%@ˆ_¸#Lˆj¸V%XËgvÔdËgvJ´Ë†ιoÀˆã¹̈ø¹oØË† ºäˆ ºUðˆ9ºZüˆRºo ̆fº ̆zº  ̆–ºÃ ,̆²º 8̆Ⱥà D̆Þº` P̆ÿºf \̆ »m Æ Q»oÆc»rÆw»yÆ€»Æ¨»rƶ»…Æß»ŽÆ¼™ÆC¼¦ÆR¼¦Æd¼­p̽Ž|Ì!½ã‘Í@½’<ÍN½d’œÎs½}’àΆ½œ’ìΡ½º’øÎ½½Û’Ïõ½Û’!Ï!¾“# Ï7¾“$0ÏJ¾“%@ÏZ¾“&PÏq¾[“'Xω¾a“'hÏ’¾t“(xÏ›¾‡“)ˆÏ¢¾™“*˜Ïª¾µ“+ÄÏƾѓ,ðÏÞ¾ø“-üÏð¾”.ÐgvÔ. ÐF&…”.ÐgvÔ/ ÐF&…”/,Ðgv@”0@Ðá2ŽÛ1\Ðá_ŽÔ2xÐᎎJ2”ÐᾎJ3¬ÐáðŽXL4 Ñá&6$Ñá^#64Ñáއ~C6TÑá҇C6xÑgvÔ6€ÑF&…(•6ÀÑgvÔ7ÈÑF&…(•7Ògvv‘8$ÒᛌN9:<ÒáÏŒ4E;XÒáÊK=xÒá3ñK=ˆÒág4E=¤Òá–J?¼ÒáËúK@ôÒáŽJBÓá2ŽLC,Óá_ŽÔDHÓᎎLDdÓᾎLE°ÓáðŽ$LFTÔá&HXÔá^#HhÔáއ¤KHˆÔá҇CH¬Ôˆ8BHÄÔa·q–HÐÔQ·•–JàÔbÌšLÕrÌušM Õ„Ì™šN<Õ–ÌÀšOXÕ¨Ìä›P@ÖÍÌŽœSœÖçÌÉœT°Ö͈V4×;YH×OÍáZh×rÍþ[ˆ×»Íž\¨×ãÍ,ž^È×ûÍMž_è×Îqž`ð×FÎim` ØgÎwža(ØnÎwža0Ø|Îwža8Ø„Îwža@Ø’ÎwžaHØšÎwžaPذÎwža`Ø»ÎwžahØÒÎwžapØàÎwžaxØöÎwža€ØÏwžaˆØÏwžaØ)ÏMRa°Ø<ÏMRbÐØWÏ|žcÙ}ψŸg0Ù•Ïq h\٪ϡjÄÙÌÏh¡pÚÛÏΣvtÚùϤx|ÚÐ-¤x„ÚÐE¤xŒÚ0Фx”ÚGÐ-¤xœÚYÐE¤x¤ÚkÐf¤x8Û‚и¤~ØÛ¢ÐC¥‡8Ü»Ð}¥‰@ÜÒв¥‰HÜàÐË¥‰PÜîÐ}¥‰XÜѲ¥‰`ÜÑË¥‰hÜ!Ñ}¥‰pÜ8Ѳ¥‰xÜNÑË¥‰€ÜdÑ}¥‰ˆÜ{Ѳ¥‰Ü‘ÑË¥‰˜Ü§Ñf¤‰Ý²Ññ¥´Ý½Ñp¦–ÞÛѦ¦˜ÞòѲ¥˜$ÞþÑצ˜,Þ Ò¦¦˜4Þ!Ò²¥˜<Þ-Òצ˜DÞ9Ò¦¦˜LÞPÒ²¥˜TÞbÒצ˜\ÞtÒˆÞÉÒ,§™Àß Óȧ¤„á³ÓÄ©µhãøÓ„ªÃ`ä4Ô8³ÖæºÔ–³âæÑÔÕ³âæãÔÕ³â æõÔÕ³â(æÕÕ³â0æÕÕ³â8æ*ÕÕ³â@æ<ÕÕ³âHæNÕÕ³âPæaÕÕ³âXærÕÕ³â`æƒÕÕ³âhæŽÕÛ³âpæ Õ÷³âxæ²Õ–³â€æÊÕÕ³âˆæÞÕÕ³âæòÕÕ³â˜æÖÕ³â æÖÕ³â¨æ-ÖÕ³â°æAÖÕ³â¸æUÖÕ³âÀæjÖÕ³âÈæ}ÖÕ³âÐæÖÕ³âØæÖÛ³âàæ·Ö÷³âèæÑÖ–³âðæéÖÕ³âøæýÖÕ³âç×Õ³âç&×Õ³âç9×Õ³âçL×Õ³â ç`×Õ³â(çt×Õ³â0ç‰×Õ³â8çœ×Õ³â@ç¯×Õ³âHç¼×Û³âPçÊ×÷³âXçØ×–³â`çð×Õ³âhçØÕ³âpçØÕ³âxç-ØÕ³â€ç@ØÕ³âˆçSØÕ³âçgØÕ³â˜ç{ØÕ³â çØÕ³â¨ç£ØÕ³â°ç¶ØÕ³â¸çÃØÛ³âÀçÙØ÷³âÈçïØ´â$èúØm´çxèÙòµêìè"Ù ¶ìôè:ÙG¶ìüèHÙ\¶ìéVÙ ¶ì énÙG¶ìé…Ù\¶ìéœÙ ¶ì$é´ÙG¶ì,éÁÙ\¶ì4éÎÙ ¶ì<éæÙG¶ìDéüÙ\¶ìLéÚ ¶ìTé*ÚG¶ì\é9Ú\¶ìdéHÚ ¶ìlé`ÚG¶ìtéxÚ\¶ì|éÚ ¶ì„é¨ÚG¶ìŒé¶Ú\¶ì”éÄÚm¶ìœéÛÚ‹¶ì¤éêÚm¶ì¬éõÚm¶ì´éÛ-¤ì¼éÛm¶ìÄéÛm¶ìÌé+Û§¶ìÔé?Ûm¶ìÜéIÛ»¶ìäéaÛm¶ììémÛȶìôé€Ûm¶ìüéÛm¶ìêšÛ²¥ì ê¨Ûm¶ìêµÛm¶ìêÂÛ)·ì(êÖÛ²¥î0êæÛ²¥î8êܲ¥î@êܲ¥îHê(ܲ¥îPê@ܲ¥îXêbܲ¥î`êyܲ¥îhêšÜ¯·îŒê¶Üηð°êÅÜ-¤ò¸êÒÜ-¤òÀêßܲ¥òÈêñܲ¥òÐêÝG¶òØêÝm¶òàê!Ým¶òèê.ݲ¥òðê>Ým¶òøêKÝm¶òëXÝì·òëkÝm¶òëxÝm¶òë†Ý¸ò ë“Ým¶ò(ë Ým¶ò0ë®Ý¸ò8ëÀÝm¶ò@ëÍÝm¶òHëÛݸ¹òüëæÝ¸¹ôìòÝBºödìÞº÷hí5Þºù€îQÞBºûPïdÞimü`ïpÞ‚½ýhï•Þ‚½ýpï¶Þ‚½ýxïÜÞ‚½ý€ïøÞ­½ýˆïß‚½ýï8ß‚½ý˜ïUß­½ý ï~ß­½ý¨ï¨ßνý°ï»ßνý¸ïØßνýÀïëßνýÈïàνýÐï#àνýØïHàνýàïcàνýèïˆàνýðïœàò½ýøï³àνýðÅàνýð×àνýðñàνýð áνý ðá­½ý(ð7á­½ý0ðHá­½ý8ðbá­½ý@ðyá­½ýHð™áνýPð¬áνýXð¿áνý`ðÒá­½ýhðçáνýpðøáνýxðâνý€ð#âνýˆð3âνýðDâνý˜ðZ₽ý ðk₽ý¨ð₽ý°ð›âνý¸ð±âνýÀðÃâνýÈðáâνýÐðûâ­½ýØð ã­½ýàðãνýèð/ãð¾ýŒñPã•¿þèót㯿LôÃãBºT ÖãBº¤ ðãMÁ( ädÃümä…Ä(7å…Ä\gå”Å&œ‘åcÆ3 ³åcÆ6¤ÊåcÆ9 áåwÐ<¼7ìå³Ð?ð7æéÐB¤8#æYÑC|93æ½ÑJÄ9IæÒN:hæXÒRð:æwÒT ;¬æXÒWNÂæimY NÙæÖÖZ`NçÖÖ\€agv¤Û^aF&…Ü_ bgv¤Û`0bF&…wÜaèbgv¤ÛbøbF&…ìÜcÔcgvÝdìcF&…Ýf dgvÔgdF&…:Ýg8dgvvfhHdF&…uÝiÔdgvvfjädF&…§ÝkxegvvflˆeF&…ÏÝm¸egvvfnÈeF&…ýÝofgvΞpfF&…GÞqPfgvòžr`fF&…Þs¤fgvU¢t¼fF&…ÍÞvggv›¢w4gF&…êÞyggvU¢z¨gF&…ß|hgv›¢}hF&…aߤhgvU¢€¼hF&…ß‚igv›¢ƒ,iF&…©ß…igv ¬†jF&…ãß’¨jgvd­“kF&…?àžèkgv›¢ŸlF…I9¡lgvcà¡€“gv‹9?“ƒ&…N9@¤“gvaA´“ƒ&…yBÌ“:ôóDì“BôóEô“aôqžEü“„ôqžE”¥ô<óEL”½ôRóG\”Ôô&ôH¼•êôMôKØ•ÿôçôMp–õõNx–%õwžN€–3õwžNˆ–AõwžN–OõwžN˜–]õwžN –kõwžN¨–yõwžN°–‡õwžN¸–•õwžNÀ–£õwžNÈ–±õwžNЖ¿õwžNØ–ÍõwžNà–ÛõwžNè–éõwžNð–÷õwžNø–öõN—öõN—'öõN—3öõN—AöõN —XöõN(—böõN0—yöõN8—…öTõN¨—œöonOô—²öonP„™ÒöùõQšèöHoT,šûöRöV š ÷BºXp›-÷‚÷Y¨žL÷Œ÷[°žl÷Õ³[¸ž|÷qž[ÀžŠ÷qž[Èž–÷im[d ¢÷im\X¡¸÷Aù],¢Ñ÷cù_D¢gvÔ`P¢áÝ÷lù`\¢áørùah¢gváòc€¢F&…N9eÜ¢gvÔfä¢F&…®ùfð¢gvÔgø¢F&… Âg£gvÔh$£F&…´ùh0£gv¼ùi@£F&…ØùjX£gvÔk`£F&…kl£gvÖbl|£F&…®ùm£ˆ8Bn £gvV%n°£¹øéùo¸£ƒÆøpÄ£Öø÷ùpУƒäørÜ£õøúr裃ùuô£ùcùuü£ƒ#ùv¤1ùúv¤ƒ<ùv¤ƒ‚#v$¤gv%úv4¤ƒš1úw<¤gvžúwT¤ƒ¸ŠRy\¤ƒÂŠ1úyd¤gvûy„¤ƒ¸ŠR|Œ¤ƒÂŠR|”¤ƒÞŠ û|œ¤gv‹û|¬¤ƒš û}´¤gvòû}Ĥ†š1ú~Ô¤gvùû~䤆¸ŠRô¤†ÂŠ1ú¥gvü¥†¸ŠR€$¥†ÂŠR€4¥†ÞŠ û€D¥gvü€T¥†š ûd¥gvÔl¥F&…üx¥gvüƒ¥F&…?ü…¨¥gvÔ†°¥F&…ü†¼¥gvPüˆÔ¥F&…?üŠì¥gvÔ‹ô¥F&…mü‹¦gvÀ Œ¦F&…Øù0¦gvÔŽ8¦F&…´üŽ”¦gvÔœ¦F&…ݨ¦gvÔ°¦F&…»ü¼¦gvÔ’ĦF&…Ý’ЦgvÛü“à¦F&…2æ”ô¦gvÛü•§F&…2æ–§ˆ8B—ì«=êý—ü«[êý˜ ¬tòý™¬—ÿýš$¬¨ÿýš,¬çMRšT¬óþ›¬ ®Rܬqžžä¬+1þž­7ÿý¡­CEþ¡ ­[wž¡(­iUþ¡d­Š‚½¢l­£‚½¢t­³‚½¢|­Ä‚½¢„­×‚½¢Œ­å‚½¢”­õ‚½¢œ­‚½¢¤­‚½¢¬­3‚½¢´­L‚½¢¼­g‚½¢Ä­}‚½¢Ì­•‚½¢Ô­µ‚½¢Ü­Ô‚½¢ä­õ‚½¢ì­‚½¢ô­6‚½¢ü­V‚½¢®n‚½¢ ®…‚½¢®ž‚½¢®¹‚½¢$®Ï‚½¢,®ç‚½¢4®ü‚½¢<®‚½¢D®0‚½¢L®F‚½¢T®]‚½¢\®|‚½¢d®“‚½¢l®­‚½¢t®Ï‚½¢|®é‚½¢„®‚½¢Œ®!‚½¢”®9‚½¢œ®Q‚½¢¤®q‚½¢¬®‰‚½¢´®–‚½¢¼®£‚½¢Ä®±‚½¢Ì®Á‚½¢Ô®Ð‚½¢Ü®â‚½¢ä®ò‚½¢ì®‚½¢ô®‚½¢ü®-‚½¢¯@‚½¢ ¯T‚½¢¯h‚½¢¯{‚½¢$¯‚½¢,¯¦‚½¢4¯¿‚½¢<¯Ñ‚½¢D¯æ‚½¢L¯ù‚½¢T¯ ‚½¢\¯! ‚½¢d¯4 ‚½¢l¯G ‚½¢t¯X ‚½¢|¯k ‚½¢„¯} ‚½¢Œ¯‘ ‚½¢”¯¥ ‚½¢œ¯¹ ‚½¢¤¯Ó ‚½¢¬¯ð ‚½¢´¯ ‚½¢¼¯( ‚½¢įC ‚½¢̯^ ‚½¢Ô¯y ‚½¢ܯ’ ‚½¢ä¯­ ‚½¢ì¯Ç ‚½¢ô¯ã ‚½¢ü¯ÿ ‚½¢° ‚½¢ °0 ‚½¢°H ‚½¢°a ‚½¢$°{ ‚½¢,°• ‚½¢4°¯ ‚½¢<°É ‚½¢D°â ‚½¢L°ý ‚½¢T° ‚½¢\°3 ‚½¢d°_ ‚½¢l°ƒ ‚½¢t°¥ ‚½¢|°º qž¢„°Î Óþ¢ä°Ü Rÿ£d±ö Tõ¤ð± Bº¥t²A V¦ܲb é© ´g¹«´ô‡á­tõÍ?³°õè`¶Äõ{¸Øõ„¹ìõ)›ºöMÛ»üöƒný¼÷gv ¼÷gvw]½$÷F&…¾8÷gv!¿H÷F&…ÊãÀd÷gv8Á„÷F&…CÄ8øgviÅHøF&…²ÆÈøgv»ÇàøF&…ÓÉùgvÔÊùF&…ßÊ ùgvçËùF&…öÌ4ùgvÔÍ<ùF&… Í`ùgvÔÎhùF&… ÎŒùgvÔÏ”ùF&… ϸùgvÔÐÀùF&… ÐäùgvÔÑìùF&… ÑúgvÔÒúF&… Ò<úgvÔÓDúF&… ÓhúgvÔÔpúF&… Ô”úgvÔÕœúF&… ÕÀúgvÔÖÈúF&… ÖìúgvÔ×ôúF&… ×ûgvÔØ ûF&… ØDûgvÔÙLûF&… ÙpûgvÔÚxûF&… ÚœûgvÔÛ¤ûF&… ÛÈûgvÔÜÐûF&… ÜôûgvÔÝüûF&… Ý ügvÔÞ(üF&… ÞLügvÔßTüF&… ßxügvÔà€üF&… à¤ügvÔá¬üF&… áÐügvÔâØüF&… âüügvÔãýF&… ã(ýgvÔä0ýF&… äTýgvÔå\ýF&… å€ýgvÔæˆýF&… æ¬ýgvÔç´ýF&… çØýgvÔèàýF&… èþgvÔé þF&… é0þgvÔê8þF&… ê\þgvÔëdþF&… ëˆþgvÔìþF&… ì´þgvÔí¼þF&… íàþgvÔîèþF&… î ÿgvÔïÿF&… ï8ÿgvÔð@ÿF&… ðdÿgvÔñlÿF&… ñÿgvÔò˜ÿF&… ò¼ÿgvÔóÄÿF&… óèÿgvÔôðÿF&…ôgvÔõF&…õ@gvÔöHF&…ölgvÔ÷tF&…"÷€gv+ø˜F&…5ú°gvÔû¸F&…NûÐgvÔýØF&…´ùýägvÔþìF&…rþøgv{ÿF&…†gvi,F&…rPgv’hF&…†„gvi”F&… ¤›¾Ä袾ò ,ú! pP ´ € ø® 4€x ç¼)1FD‰¾vˆ’¾§ÌAÝRT\O˜f‚Üm¢ƒ¢,“¢T¦¢|³¢ ¨Â¢"¸Ö°$àì°&ü°(0°*X°,„+°.”?Å0ÔZÅ2oÅ4T‡Å6”™Å8ð­Å: Æä<8 Ó >p à.@¼ òäB  DD .F  !äHØ 2 J C.L\ YäN  i Pä y.R@ ŽäT„  VÈ ¬.X$ ˆ8BZh,ŒjZt-”\˜4É^¤è‹`´0Œ?bÐW²–dÜÏ‹ÇgôLäiV k _V luÈ nÆžÛpÆ32ý qÆ©Ôr8gvÔrLÁ³ÛrdÁÍý s€ÁèÔtœgv!t¸ÆžÛv<Æ32ý wPÆ©Ôx`gvWx|áÁ!z gvç!{¼ÆžÛ}@Æ32ý ~TÆ©Ôdgv±€áÁ!¤gv½‚‚´F&…Æ"ƒÐgv½‚„àF&…J…ôgvÿ"†ÆžÛ‰¸Æ32ý ŠÌƩԋÜgvz‹üáÁ!Ž8gv¡#TÆžÛ‘¤Æ32ý ’¸Æ©Ô“Ègv “Üá$” gv6$•4á³Û™TáÍý š€áèÔ›ägv6$› á³ÛŸ,áÍý  XáèÔ¡¼gvb$¡Øáy‰Ô£ôgvF £áÁ!¥hgvƒ ¦xF&…"J§°gv£ ¨ÀF&…"J©ø,Œª%ª$è‹&¬P0Œ‘&®Œ4é&°¸W²v'²ìÏ‹£'µV>(·8_Š(¸pu*)º¬gv%¼ÄF&…‚)¾àgvç%¿øF&…‚)Ágv:&Â<F&…‚)ÅlgvÐ&Æ„F&…‚)ȼgv8'ÉÜF&…‚)Ì gvú'Í8F&…‚)ψgvAWИF&…‚)ѬgvAWÒ¼F&…‚)ÓÐgvË(ÔðF&…‚)×H ž³*Øl «+Ü| A­R+ÞÈ gva*àà F&…‚)â!gv’*ã !F&…,äD!gv’*åT!F&…",æx!gvÔç€!F&…*,çŒ!gvÔè”!F&…8,è !gvÔé¨!F&…R,é´!gv,êÔ!F&…ü,í("gvï*î@"F&…?-ðp"gvÔñx"F&…R-ñ€"gv_-ò"F&…j-ó°"gvÔô¸"F&…,ô¼"gvÔõÄ"F&…",õÈ"ìy-öØ"¸-ö#gvà-ø#F&… .ù\#gv.úl#F&…?.û˜#gv.ü¨#F&…L.ý¼#gvT.þÔ#F&…j-ð#gvT.$F&…p.<$gv.L$F&…p.€$gv‹.$F&…™. $gv‹.°$F&…™. À$gv³. Ð$ƒ&…Ñ. ä$gvÔ ì$F&…Ù. %gv/8%ƒ&…Ñ.à%gv/&F&…e/\&gv‹.l&F&…™.|&gv‹.Œ&F&…™. œ&gv³.!¬&ƒ&…Ñ."À&gvÔ$È&F&…Ù.$Ü&gvr/%ô&F&…ï/'Œ'gv‹.(œ'F&…j-)¬'gv0*¼'F&…0+È'gv0,Ø'F&…0-ì'gv.0.(F&…;00((` T01p(† •05€(• ¬07È(  v;Ô(¸ ×0=ì(È 1?)gv,1A)F&…\1BX)gv,1Ch)F&…m1D|)gv{1E”)F&…1G¬)gv“1H¼)F&…1I*gv¨1J@*F&…¾1N˜*gvÊ1O¨*F&…Õ1P¸*gvá1QÐ*F&…Õ1S,+gv,1T<+F&…\1U„+gv,1V”+F&…ø1W¤+gváNX¸+á³ÛYÈ+áÍý ZÌ+áèÔ[Ð+Ô®a2[$,இ2^„,ꮡ2_Ì,gv 2`Ü,F&…‚)aô,gv 2b-F&…,c-gv 2d,-F&…",eD-0­³3f€.I«É3i¨.­­ß3kÔ.J!4pü.[­Î4th/gvWvwx/F&…ó4x/gvWvy /F&…5z¸/gvWv{È/F&…5|à/gvÔ}è/F&…5}ð/gvÔ~ø/F&…5~ü/gvÔ0F&…5 0gváN€0F&…ó440gv,5‚D0F&…5ƒ\0gv95„l0F&…5…„0gvÔ†˜0ƒ¨!†¨0ƒ´!Ô†´0gve4†Ì0ƒ&…Ôˆì0gvq5ˆ1F&…5ŒP1gvq5x1F&…¡5‘´1gvŽ4’ä1F&…¾1—2gvŽ4˜L2F&…¾1¨2ì![“ž°2ö!ˆyžÀ2ÿ!½sŸÐ2"½sŸà2$"Ä5Ÿø20"6¢P3C",6£`3`",6¤p3™"\6¥¸3£"r6§ð3Ü"¬6©H4æ"Ú6¬t4gvþ6¯„4F&…5°œ4gv7±¬4F&…R-²Ø4gvþ6³è4F&…5´5gvÔµ5F&…R-µ05gvþ6¶@5F&…5·X5gvÔ¸`5F&…R-¸ˆ5gv/7¹ 5F&…5»¼5gvõ5¼Ü5F&…ó4¿ü5gvD7À6F&…5Â06gvM7ÃP6F&…5Æp6gvZ7Lj6F&…5ɤ6gvM7ÊÄ6F&…5Íä6gvrÎô6F&…l7Ï 7gvrÐ7F&…l7Ñ47gvÔÒH7ƒÕšÒ\7gvÔÒt7ƒ#”7Ò¤7gvÏ6Óü7ƒ9#ó4Ôœ8ƒK#ó4Õ¸8gvÃ7ÖÐ8F&…5Øð8gvÃ7Ù9F&…5Û(9gvÔÜ`9ƒ«°Ìzܬ9ƒ‰ÔÜø9ƒ#» Ü$:ƒç¯1zÜÀ:ƒ­"ÞÌ:ƒ³=ÞÜ:ƒ°_zÞ,;Áy‰Ôß8;gvÛßH;F&…„8àd;gv5~át;F&…l7â<Ã#Ç8ã <æ#9ãX<í#39ä|<$E9å„<;$‰9å¬<F$‰9êÔ<m$ö9ïD=„$,6ñT=—$=vòd=$+:ót=¥$c:ô„=®$¡:ö”=´$Ø:ø¤=Ð$;ú´=ç$Q;üÄ=ö$²sþÔ= %½sþÜ=%~;þô=%™; >+%×; (>0%þ; 8>gvÔ @>Â+ H>ƒO% T>Èä+ \>ƒr~ h>Ñ, p>ƒ;! |>ƒ‚# ¤>gvÛ ´>ƒš» ¼>gvý  Ì>ƒšI© Ô>gv< ä>ƒšÊ< ì>gv1= ü>†š» ?gvM= ?†šI© ,?gvi= " \AF&…5$ tAgvÛ% „AF&…l7& Bgvf>' BF&…ó4) °BgvÛ>* ÈBF&…5, äBgvB:- üBF&…l7/ ”Cgv&?0 ¬CF&…52 ÄCgv>?3 ÜCF&…55 øCgv:6 DF&…l78 $Egv&?9 ˆEgv¡?? ¨EF&…ó4B œFgv&?C ´FF&…5E ÌFgvÙ?F äFF&…5H Ggv¡?I $GF&…5L Hgvö?M 4HF&…5O THgvö?P lHF&…5R ŒHgv¡?S ¬HF&…5V  IgvÄ:W ¸IF&…l7Y \Jgvk@Z tJF&…5\ ¤Jgvû:] ¼JF&…l7_ @KgvZ7` XKF&…5b tKgvZ7c ŒKF&…5e ¨Kgv­@f ÀKF&…5h ¤Lgv<;i ¼LF&…l7k MgvÔl MF&…þ@l DMgvÛm TMF&…j-n xMgvAo MF&…¾1q ¤Mgv9Ar ´MF&…1s ÄMgv[At ÜMF&…¾1v øMgvº;w NF&…{Ax (NgvQty 8NF&…“Az DNÈ%ÔA{ „NÔ%B} ”N&áBƒ O0&C‰ PO:&gCŒ ¼OM&ŸC• $PW&ÌCš ˆPj&AD¢ ØP}&‚D¦ äPŽ&¶D§ DQ¢&E­ hQÂ&nE° ¤QÌ&ÐE´ RÖ&F· $Rø&zF» 4R '®F¾ DR$'ÐFÁ TRˆ8BÄ RgvåFÄ  Rƒ&…þpÅ ÔRgvåFÆ äRƒ&…þpÇ SgvåFÈ (Sƒ&…þpÉ \SgvGÊ tSF&…5Ì ŒSgvGÍ ¤SF&…5Ï ¼SgvGÐ ÔSF&…5Ò ìSgvíAÓ $TF&…‚)Ù ðTgvÏsÚ UF&…l7Û ,Vgv]HÜ ¬‰—)ÄZ? 艥)îZ@ $в)![A `ŠÀ)R[B œŠÍ)…[C ØŠÛ)ð¾D 4‹ç)&\E Œ*¾H ˜Œ*RÿI +*ª\J 0:*Ú\K @N*0]L œ]*0]M øk*Â]N ´Ž‘*oO À޶*-^P ÐŽý*-^Q àŽgvÔR èŽF&…˜^R ôŽgvÔS üŽF&…²^S gvÔT F&…˜^T gv8U <F&…CX ð×+h_Y Læ+Œ_[ \÷+wž\ d,wž\ l,wž\ t!,wž\ „,,wž\ ”7,©_\ ¬B,R] ìJ,Ã__ 0‘T,`` ”‘^,[`a ’h,Ç`b À’r,ë`c ô’},0]d H“,Yae Œ“ž,Bºf ð“«,Ùag P”½,bh ””Í,Ibi ð”á,‚bj P•ò,Åbk °•-!cl –-fcm p–+-¥cn Ж9-¥co 0—I-‚bp —Y-0]q ˜k-0]r ¨˜}-ßds ´™Œ-Yat dšš-Reu Äš§-}ev ›·-Bºw T›È-0]x ¨›Ú-1fy ,œõ-0]z €œ. f{ Ä.+g| øž,.g} D <.h~ Ô¡L.Tõ 4¢].~h€ x£i.0] Ì£t.Bº‚ ¤‚.Øhƒ p¤.1i„ ð¤š.†i† ¥­.j‡ <¦Á.ijˆ Œ¦Ý. jРܦü.°jŒ 0§/ÄjŽ „§Q/Hk ­X/Pk D­a/ak’ l­g/jk“ ˜­m/vk• Ì­s/…k˜ ®y/Ÿkœ 8®¬/Ÿk  l®½/ºk¤ ¼®Ò/©_¦ è®Þ/Êk§ 4¯ð/ák© ð¯0ðk« ,° 0vo­ L°0im® |°/0l¯ ¤°@0#n± ȰM03o³ è°c0rm¸ ±y0rmº ±›0}n¼ |±®0on¾ ø±¹0@l¿ x²Ä0}n à²Ð0©nÄ P³ß0TlÆ ¨³ï0ÒmÈ ´ü0}nË <´1ümÍ ˜´-1ómÏ ì´>1nÐ lµO1nÒ ôµb1VnÕ ¶1ll× °¶¥1|lÙ P··1lÜ ð·Ç1¢lß  ¸Ù1³mã ¹î1¢mæ p¹2ámè º!2rmì ˜º-2Ìlî øº;2/nð $»A2çló „»U2>nõ Ü»b2Mm÷ 介2Xm÷ ¼œ2zmù ¼°2¦Rû 4¼Ç2’mü L¼Þ2ëmý à¼?3ëm ì½P3ij $¾c3ƒn \¾v3Œn x¾Ûöšn Œ¾‚3èn ¿®3.o `¿Ï3_o ¸¿ß3‹o Àè3úo |Àú3úo ¸Àÿ3ž ØÀ4âp" TÁ%4q$ ˆÁ346q% Â?4Uq& xÂQ4oq( ÌÂi4xq* ÔÂ{4•q* LÇ4¥q+ xÓ4³q, Ðá4ßq- àé4s/ Xı4bs0 €Äº4|s1 ˜ÄÅ4”s2 ÐÄÐ4«s3 øÄ×4¾s5 Åá4˜u6 Æè4½u7 \Æò4½u8 xÆû4Îu9 ¤Æ5âu: ÐÆ5Îu; ôÆ(5v< @Ç55Zv= ˆÇF5¶v> °ÇU5Äw? $Éx5£y@ \Í„5¸yA dÍž5ÕyA l͹5zA ÍÐ5'zB œÍõ5ƒzC ÌÎ6¼zE tÏ6ÚzH Ï'6[{I PÑE6{L ¤ÑQ6˜{M ¬Ñi6©{M ´Ñ†6·oM ðѬ6V|P 4Ò"7ó}T tÔ47oV ÕR7žoW 8Õf7o[ ˆÕgv7~\ ¬Õƒw7#_ øÕƒ€7Y~_ ¬Öƒœ7m~` äÖgvÔa ìÖF&…r~a øÖgvb ×F&…®ùc ×gvd ,×F&…‡~e @×gvÔf H×F&…Ž~f „×gvÔh Œ×F&…™~h Ä×gvÔj Ì×F&…£~j ØgvÔl ØF&…£~l LØgvÀ n \ØF&…­~o ˜ØgvÔp  ØF&…µ~p ´ØgvÔr ¼ØF&…È~r äØgvÔs ìØF&…×~s ÙgvÔt ÙF&…rùt $Ùgvç~v 4ÙF&…Bqw DÙgvx TÙF&…y hÙgvç~z xÙF&…î~{ ŒÙgvÔ| ”ÙF&…|  Ùgv } ÈÙF&… pÚgvç~‚ €ÚF&…î~ƒ ”ÚgvP„ ¤ÚF&…Bq… ´Úgv† ÄÚF&… ‡ ØÚgvÔˆ àÚF&…[ˆ ìÚgvÀ ‰ üÚF&…[Š ÛgvV%‹ ÛF&…[Œ 4ÛgvÛ DÛF&…qŽ XÛgvV% hÛF&… |ÛgvÔ‘ „ÛF&…Œ‘ Ûgv¡’  ÛF&…¼“ ´ÛgvÖ” ÌÛF&…– èÛgvÔ— ðÛF&…Œ— üÛgv €˜ ÜF&…!€™ ܃ú7U€š $܃8#š ,܃ 8a€š 4Ügvl€š TÜgvç~ dÜF&…Bqž tÜgvÔŸ |ÜF&…‚€Ÿ ˆÜgv“€  ˜ÜF&…ª€¡ ¬ÜgvÀ€¢ ¼ÜF&…Ç€£ ÐÜgvØ€¤ ðÜF&…-§ @Ýgv6¨ PÝF&…-© |ÝgvEª ”ÝF&…-¬ ÔÝgvh­ ìÝF&…-¯ $Þgv|° 4ÞF&…-± HÞgvÔ² PÞF&…‚€² \ÞgvÀ€³ lÞF&…Ç€´ €Þgv‹µ ˜ÞF&…-· àÞgv»¸ ðÞF&…-¹ ßgvκ 4ßF&…ã½ `ßgvV%¾ pßF&…ã¿ „ßgvìÀ œßF&…ó ¸ßgvìà ÐßF&…ÿÅ ìßgv ‚Æ àF&…óÈ àgvÔÉ (àF&…ŒÉ 4àgv¡Ê DàF&…¼Ë XàgvÔÌ `àF&… ‚Ì làgv3‚Í |àF&…F‚Î àgvÔÏ ˜àF&…F‚Ï ¨àgvÔÐ °àF&…F‚Ð ÀàgvÔÑ ÈàF&…F‚Ñ ØàgvS‚Ò áF&…F‚× XágvÔØ `áF&…F‚Ø págvÔÙ xáF&…F‚Ù ˆágvÔÚ áF&…F‚Ú  ágvÔÛ ¨áF&…F‚Û ¸ágv¯‚Ü ÈáF&…F‚Ý ÜágvìÞ ôáF&…F‚à ,âgvÔá 4âF&…F‚á DâgvÔâ LâF&…F‚â \âgvÔã dâF&…F‚ã tâgvÔä |âF&…F‚ä ŒâgvÇ‚å ´âF&…F‚é øâgvìê ãF&…F‚ì HãgvÔí PãF&…F‚í `ãgvÔî hãF&…F‚î xãgvÔï €ãF&…F‚ï ãgvÔð ˜ãF&…F‚ð ¨ãgvÔñ °ãF&…F‚ñ ÀãgvÔò ÈãF&…F‚ò ØãgvÃó èãF&…F‚ô ägvõ äF&…F‚ö @ägvö‚÷ PäF&…F‚ø tägvû‚ù „äF&…F‚ú ¨ägvƒû ¸äF&…F‚ü Üägvƒý ìäF&…F‚þ ågv ƒÿ åF&…F‚ Dågvƒ TåF&…F‚ xågvƒ ˆåF&…F‚ ¬ågvV% ¼åF&…F‚ àågvƒ ðåF&…F‚ ægvƒ $æF&…F‚ Hægv#ƒ XæF&…F‚ |ægvÔ „æF&…F‚  ægvÇ‚ ÈæF&…F‚ çgv(ƒ $çF&…F‚ @çgvÔ HçF&…F‚ XçgvBƒ hçF&…F‚ ¬çgvÔ ´çF&…F‚ ÄçgvÀ  ÔçF&…F‚ èçgv¯‚ øçF&…F‚ ègvRƒ èF&…F‚ 0ègv¯‚ @èF&…F‚! TègvRƒ" dèF&…F‚# xègvÔ$ €èF&…F‚$ ègvV%%  èF&…F‚& ´ègvÔ' ¼èF&…xƒ' ÐègvÔ( ØèF&…¨ƒ( ìègvÔ) ôèF&…‚€) égvŃ* éF&…߃, 0égvïƒ- @éF&…„. Tégv,„/ déF&…Ý0 tégv4„1 „éF&…@„2 ”égvV„4 ¬éF&…Bq6 ìégvw]7 üégvÔ8 êgv98 ꃤ„~]: $êgvp„: <êF&…Ý< TêgvŒ„= têF&…Êã@  êgvÔA ¬êáÝ÷´„A èêáøË„B ,ëT9ê„D 8ëgvô„F P냸Šù|H XëƒÂŠ#H `냂#H hëæay2 H ¸ëæay#I Èëæmy9 I ì[9…K 8ìæmy'…L ˆìæmy,M ¬ìb9B…N ´ìgv|O Ä샚S…P Ì샂#P ÔìgvÔP àìáÝ÷a…P ðìáøh…Q ígvÔS íF&…Ž…S „ígvïƒT ”íF&…Î…U ÌígvïƒV ÜíF&…mW îgvÔX îF&…Ž…X TîgvïƒY dîF&…"†Z ¤î¡9J†[ ôî®9J†\ 8ï¶9V†] hï¾9k†^ DðÉ9‘†` äðÔ9$‡c hñƒ :J‡f pñƒ:Uf xñƒ:…\f €ñgvP‡f  ñgvÔi ¨ñF&…\‡i ¼ñgvc‡j ÌñF&…w‡k àñ|:ˆl @òˆ:fˆo \òš:‰q ´ò¨:d‰t Ðòº:­‰v äòÇ:ï‰y ôòÑ:ÿý| üòè:ÿý| ó¨ÿý| ó ;ÿý| ó6;MR| @óE; Š} ˆógvš‰~ ˜óF&…@Š °ógvÕ‰ ÀóF&…tŠ‚ Øó~; ô‡; ‹‡ ,õž;G‹Š 8ö°;œ‹Ž ÔúÇ;0Œ‘ üþÙ;JŒ• 8ÿã;TŒ— Tÿï;Ya™ ˜ÿþ;‰Œš Äÿ <¿Œœ ðÿ<õŒž $%<  P0<S¢ |;<]¤ ˆL<¥¥ ¤^<±¨ ´ˆ8B« xgvë ˆF&…Ϭ œgvÔ­ ¤F&…Ø­ ÄgvÔ¯ ÌF&…ä¯ ÜgvÔ° äF&…r~° ðgvV%± F&…˜^² gvÔ³ ˜F&…í³ ¤gvÔ´ ¬F&…Ž´ ÐgvÔµ ØF&…×~µ üv<5޶ œ<5ޏ ¬<–Žº ,Õ<ÆŽ¾ @ü<þŽÁ Tv<œ’Ä d¡½º’Å t=:Æ „½½Û’È ”õ½Û’Ê ¤!¾“Ì ´7¾“Í ÄJ¾“Î ÔZ¾“Ï ägvcÐ ôF&…pÑ  gvcÒ F&…}Ó < gv•Ô T F&…dQÖ p gvŽ× € F&…ÌØ ´ gvÔÙ ¼ F&…j-Ù À gvtŽÚ à F&…0Ý gvcÞ  F&…}ß , gvZà < F&…}á L gvÔâ T F&…aâ X gvÔã ` F&…fã l gvÔä t F&…j-ä x gvÔå € F&…j-å „ gvZæ ” F&…j-ç ¤ =šè ¬ ´=Äí ô Ô=àð , à=àó d ì=óö t  >‘ú p >4‘ÿ ">ÿý 8>K‘@÷+wžHçMRpH>MRœW>k‘ìa>ÿý ô†>¡‘ <š>¸‘ p´>ë‘ ÄÑ>ë‘üî>’?'’ ?0’d ?>’Ô/?{’,I?©’"¤e?,9%¬Š?a“%È¡?‚“(б?ˆ“(lÄ?¼“-tØ?ÿ“3¸ú?š”:H@Ö”?(@ç”@À:@Y•APM@“•J b@ð•Rì!|@ —Zè+›@a—`ô,­@^˜hH-À@™lø-Ì@Þ™rX.ƒAt`.ƒ#A!šth.ƒ6Atp.ƒCAÃt|.ƒSA*šuˆ.ƒfAÃv”.gv4šw´.gvPšzÌ.F&…mš|ä.gvrš}/F&…mš‚T/gv™šƒ„/F&…mšˆÀ/gvš‰è/F&…mš 0gv蚎@0F&… ›‘p0gvèš“0F&… ›–À0gv蚘à0F&… ››1gvèš01F&… › `1gv蚢€1F&… ›¥°1gvèš§Ð1F&… ›ª2gv蚬 2F&… ›¯P2gv›±p2F&… ›´ 2gv›¶À2F&… ›¹ð2gv›»3F&… ›¾@3gv›À`3F&… ›Ã3gvèšÅ°3F&… ›Èà3gvèšÊ4F&… ›Í04gvèšÏP4F&… ›Ò€4gvèšÔ 4F&… ›×Ð4gv7›Ù5F&… ›Þ<5gv]›àt5F&… ›æ´5gv|™èÄ5F&…fé6gv¹˜ê(6F&… œíT6ˆ8Bð„6ÒAMRðÜ6ïAîœñ7øAõò$7Bò47BõÐ7'B7÷480Beø8;B²ùô8hB_žþø<~B”ž4=‡BžL=žBÞž p=ªB4Ÿ ?ÀB{ŸX?ÆBŒŸ€?ÙBÔŸì@ñBQ AöBÈ "tAC)¡#ðAC;¡%øA!C;¡%B.Cw¡%PBICÏ¡& BYCç¡'ìBjCç¡(8CuCç¡)pC‹Cõ¡*@DCL—,€D©C¢.ÈD±?¢1ðD²C¢2 EÁC-¢4EÏC?¢5LEïC?¢=|ED£ETI.D¤OJCDH¤VHJYDh¤]XJrD©¤cdJ’Dü¤fpJžDC¥i|JàD£j¬RþD§tSpBO§xàV)EW§zW7Ec§| WHEp§8WaE€§dWsEЧƒŒWE‘§„¤W–E£§‡°Wgv­§ŠÐWƒ¸Š#ØWƒÂŠ#àWƒÞе§èWƒ‚#ðWgvÔøWF&…ͧXXgvÔŽ`XF&…ø§ŽØXˆ8BðXgvV%Y>F¨YƒJFYXF¨YƒpF(Yƒ‚#0Yæay2 XYæay#‘hYæmy9 ‘¤Yæmy$¨“ÜYæmy,”Zgv“1•ZF&…J–$Zgv9¨—ªÚ@_gvm£ÛP_F&…RªÜt_gv}¨Ý„_F&…”¨Þœ_gv·¨ß¬_F&…ê¨àÐ_gvm£áà_F&….©â`gvŒ¤ã$`F&…”¨æ@agv®ªçPaF&…ɪèxagvÔé€aF&… Âé”agv®ªê¤aF&…ɪëÌagvÔìØaá“FÚªìøagvàªî8bF&… «õÐbgv}¨öàbF&…”¨÷øbgv·¨øcF&…ê¨ù,cgvm£úpkF&…Ó²>€kgvÔ@ˆkF&…Ó²@˜k)Jþ²Bàk2Jþ²C(l¶¢¨tÒLE¶¤ôtÛLE¶¥uíLJ¶¦uˆ8B§(ugv-U§RȺëŒPR׺íÄfRâºïäyR÷ºò„‚—R»õ¤‚¯R»ø<ƒ¾R»úDƒÐRwžúLƒÛRwžúTƒèRwžú\ƒóRwžúdƒSwžúlƒ SwžútƒSwžú|ƒ#Swžú„ƒ0SwžúŒƒ;Swžú”ƒHSwžúœƒSSwžú¤ƒ`Swžú¬ƒkSwžú´ƒxSwžú¼ƒƒSwžúăSMRú\„œSõû`„©Sõûd„»SžRûÀ…ÇS¦Rü\†ØSM»ýl†íSt»þ(‡T…»H‡T»¤‡TTô‡.T;T0ˆBTHTpˆZT컸ˆdT#T D‰wT®R °‰‹TMR ؉˜TMR ЦTº`гT/¼˜ŠÊT:¼´ŠÚTt»l‹õT…»Œ‹ UºÌ‹U©_Œ$U3º8Œ6U»¸ŒCUJ¼ D[UT¼#˜gv[¼%°F&…mš'ÜgvÔ(äF&…t¼(ŽgvÔ* ŽF&…~¼*8ŽgvÀ +HŽF&…¥¼,”ŽgvV%-¤ŽF&…¶¼.ÔŽgvÔ/ÜŽF&…m~/$gvÔ0,F&…m~0tgvż1„F&…m~2”gvÔ3œF&…à¼3ÐgvV%5àF&…®ù6gvÔ7 F&…®ù7gvî¼80F&…ø¼: gvÔ;¨F&…1;´gvÔ<¼F&…1<Àgvþ¼=ØF&…1?0‘gvúR@@‘F&…1AT‘gv½Bl‘F&…UD˜‘gvÔE ‘F&…½E¬‘gv½FÄ‘F&…UHð‘gvçI’F&…ø¼J’gv0½K(’F&…ø¼M„’gvI½Nœ’F&…UPH“gvÔQP“F&…à¼Q„“gvÔSŒ“F&…®ùS˜“gvçT¨“F&…ø¼U”gv½V(”F&…UXT”HVo½Y””ˆ8B[ä–gvÔ[ì–F&… Â[ø–gvÀ \—F&…}½]—gvúR_(—F&…N9`D—gvÖbaT—F&…mšbh—m†Š½ct—££½dŒ—Ï‹±½f˜—3‘Žh¨—PŒ±½i´—¡í½kÀ—kV¾mÌ—uVí½nØ—V¾pä—ŒX¾qø—g†w¾s˜s˜ዾu(˜è‹­¾w4˜0ŒÇ¾y@˜ü‹ì¾{T˜V¿~h˜,ŒB¿t˜‹]¿ƒ„˜–Vi¿„”˜V‡¿… ˜_Œ¢¿†°˜fŒÀ¿‡À˜¥VÛ¿ˆ̘«Vމؘ±Ví½Šä˜¼VÀŒ™ÅVÀŽ™ÐVÀ8™ßVÀ’T™ðVmÀ”d™ûVmÀ•t™WÔÀ–¸™WëÀ˜è™ Wõ™ì™Ä:ÿÀ™,š.WÿÀœ¬›>WÁŸ`œBWùÁ¢œJW¦¬žVWé@ŸiWÁª pW]툠tWšÃ°ô yW¯Ã²d¡‚W#ĵء‡WKĸL¢ŽWKĺÀ¢•WgļԢœWgÄ¿ø¢¤WÀĈ£®WèÄÆô£¶WèÄÉT¥¼WxÅÌè¥ÌW²ÅЦáWrÆÕ¼¦úW½ÆÚ§ XíÆÜT§X½ÆÝ˜§0XíÆßì§BX Çà,¨QX Çál¨`XkÇâü¨lX Çã©wX¶ä4©‚X¶äP©¢XÝÇä°©ÀX!Èå0ªÉXvÈæTª×X ÉçÌ®åX1Éêü®óXKÉíd¯ÿXdÉït¯Y”Éð˜¯Y«ÉóÀ¯Y¹Éôä¯+YêÉ÷,°1Y!Êù<°gv¹NûT°F&…Jýl°gv¹Nþ„°F&…Jœ°gv¹N´°F&…J̰ƒ9YeÊÔ°ƒCYܰƒªXêÇè°ƒ´XÃô°gvÇ ±gvPÈ(±áD‰» <±á”‰[ T±á¿‰ h±áý‰Ô „±áy‰Ô ˆ±gv~É  ±F&…‚) Ô±gv Ê ä±F&…§Êô±OYÃÊ@²gvøNP²F&…òÊd²gvÏO|²F&…˘²gvÔ ²F&…!ˬ²gvÔ´²F&…!ËÀ²m†CË̲Ï‹QËزfµkË"ð²WŒ|Ë$³PŒŸË&³DŒ·Ë(,³ŒØË*@³׋öË,T³[YGÌ.€³á‹uÌ0”³è‹’Ì2 ³0Œ·Ì4¬³ï‹uÌ6À³,ŒóÌ8ܳü‹0Í:ô³VfÍ= ´¥V¸Í@ ´`YûÍA4´hY0ÎCH´–VcÎET´«V}ÎF`´V–ÎG„´_Œ¬ÎH”´fŒÆÎI¤´g†ÜÎJ¬´gvÔJ´´F&…éÎJÌ´gvÛÍKÜ´F&…ÏLµgvÛÍM µF&…ÏNTµwY„ÏO µWŸÏQеÄ:·ÏR¶.W·ÏVÈ·>W^ÐZ¨¸Y´Ð^T¹„YÔÐaºÌWÑd4ºáWùÑjðºŒYDÒo »¤W±Òtœ»VW[ÓxL¼iW¿Óy ½pWÔ|¬½tW\Ô,¾”YÆÔÀ¾ŽWïÔƒL¿‡WïÔ…Ø¿œY”Õ‡pÀ YÖ‰ ÁyWbÖ‹œÁ‚WùÖŽ,Â¥YXב@ôYX×—tÃÀY™×üÃÿXÀן ÄYå× ÄnŒØ¡,ÄYIØ£lÄ1Y‹Ø¦°Ä+YÙ¨(ÅY@ÙªLÅ`X¾Ù­ìÅlXûÙ®ÆwX¶¯$Æ‚X¶¯@Æ¢XaÚ¯°ÆÀXµÚ°0ÇÉXÛ±TÇgv ʲdÇF&…;Û³Çgv-Ùµ¨ÇF&…bÛ·äǃ9Y†Û¹ìǃCY¹ôǃªXvڹȃ´Xú ÈgvèÙ»$ÈgvìÚ½@ÈáD‰ÀÛ¿TÈᔉ[¿lÈΈ¿€Èáý‰Ô¿œÈáy‰Ô¿ ÈÌYèÛ¿ØÈÔYÜÀhÉgvÔÃpÉF&…=ÜÃ|Égv½KÄŒÉF&…aÜŤÉgvÔÆ¬ÉF&…lÜÆ¸ÉgvÝKÇÈÉF&…aÜÈàÉgv½KÉðÉF&…ºÜÊ<ÊgvÔÌDÊF&…ÎÜÌdÊêYÜÜÍpÊòYÜÜÎ|ÊúYÜÜψÊZÜÜÐ”Ê Z2ÝÑD˦‹ÝÕÔË5Z¦ÝÚtÌLZåÝ߄̪ùÝä”ÌêYÞê ÌòYÞë¬ÌúYÞì¸ÌLZ.ÞíÄ̪IÞñÔÌ Z\Þö\ͦ‹‰ÞùÌÍ5Z¡ÞýDÎŒÑÞèÎ,Œß¤ÏlZBßPÐ{Z~ßÑ•†¹ß Ñ5ZÞß tÑ Zîß °Ñ¦‹ÿß Òm† à(Òg†à4Ò¬àDÓžZ0àhÓ´Z;à¤ÓÃZOàÌÓW†~àÔ×Z·àpÔ‡‡àà ÐÔ®¨ùà"ôÔ_Œ á#Õ–Vá$4ÕŒ)á%„Õ,ŒCá'äÕíZŸá)„ÖöZøá,4×ûZPâ/è×lZ¥â2<Ø[êâ4ÜØ{ZAã7DÙ[Zã9pÙ዆ã=¨Ù#[¡ã?àÙ4[äãDdÚ<[ZãGÚãKÈÚH[¡ãMÛT[äãR„Û\[:äUØÛ[YväXÜh[äZ@Ü׋ªä]pÜ4ðä_ÔÜè‹&åa0Ý0ŒWåc¤Ýt[påeøÝfµåh(Þ€[¡åj\ÞWŒ¸åmŒÞŒ[âåo8ß[2æq0àœ[wæt¸à¢[Þæu\á©[ùàv´áü‹DçwâV‹çzlâ±[Ëç}ã»[$è´ãÁ[fè…äÒ[˜èŠtäé[äèääW²é”åõ[é—Låþ[téšÀå\téœæ\É鞈æ*\õé ¬æ8\ê¢ÌæD\2ê£ç9¶Yê¥4çÛDùà§hç¥V‚ꨈç«V’©¨çM\êªôçV\¡ê®,è`\Àê°\èi\×ê´”èv\þê¶´è ò/ë¸é¶Të¹`ézµ/ë»Øé~µ}ë¼hê’µ/ë¾àê–µ}ë¿pëðµ/ëÁPìøµTëÂ4í‡\ÛëÄüíLZðëÇîªúëÉîž\ ì̤î4ðäÐ|ï×Z·àÒÌï,ŒCáÔð{ZAãÖlðŒ)áØ¬ðlZ¥âÚôð5ZÞßÜ$ñ0ŒWåÞògv4ìàDòƒ&…V%ä”ògvìå´òƒ&…V%èèògv«ìéóƒ&…V%ì<ógvÒìí\óƒ&…V%ðógvíñ¨óƒ&…V%óÄógv íôÜóƒ&…V%öøógvIí÷ôƒ&…V%ù,ôgviíúLôƒ&…V%ý€ô•†HîþŒô©[Tîÿ˜ôW†fî¤ô,Œ|î°ô{Z—î¼ôŒ¸îÈôV áÔôfŒáàôg†Íî èô©†”s (õ®†Tî hõm†âî tõ‡‡îî €õLZïèõÌ\LïHö4sïXölZ“ïdö5Z®ïpöà\ÂïŒöí\×ïÌö÷\!ðP÷íZXð!p÷]{ð$ø÷[¶ð(ø]@ñ+àø]ñ0øø!]æñ4”ùûZò9¬ùöZBò<¸ù*]~ò?ôùü‹±òB úþ[ÛòElú6] óG¸úW²3óKäúB]WóNhû»[—óRˆûN]ËóV¼ûVô[ý\Ûò^`ý`]Yô`¨ýõ[‘ôeþr]Åôh¤þ‡].õl˜±[oõu©]œõy T[¹õ|Äï‹ÛõÐá‹ÛõÜ´]œõƒd4[¹õ†ˆfµïõ‰ÜWŒö‹׋8öX[YXö´è‹sö‘À0Œö“Ìœ[²ö•Ø¢[Õö–äŒ[÷—ð[ ÷™üD\H÷œ9¶v÷žDÛDTî €«V‘÷¡Œ¥V¢÷¢˜¿]³÷£ðV\Ó÷¦Ë]ç÷¨Li\ø«d ò”s­Ô¶Lø®L’µ”s°–µø±Øzµ”s³~µø´d ðµ”s¶( øµLø·ð ×Z—ø¹ü v\·ø» W†×ø½ Œáø¿l lZöøÁ¸ ,ŒùÃü {ZùÅ@ ×Z.ùÇ„ 5ZFùÉì í\RùËh ç]XùÍ” ï‹zùÐÄ ò]XùÒð á‹zùÕ •††ù×<gv”ùØTF&…}Ú|gv¹ùÛ”F&…ÍùݼgvÝùßÔF&…}áüý] úâ  ^Gú㬠úå(^Gúæ4g†ÏîèD1^¤úèT5ZÝú锌ýúëLZûí`lZ9ûïØá‹`ûñPï‹`ûóÈíZ—ûõ”D^Ýûø¤K^6üú´è‹püýÜÊ´püÿè,Œü{ZÓü8öZþüt4@ýœŒ[wý Ø[½ý <ô§ïý`׋þà[Y=þ0WŒrþÀfµ‹þWµÇþxm†ÿ$W†(ÿD•†¢ƒôü‹tÿhþ[¡ÿ øs^Ôÿ"‡‡¨î#D×Z %T^+'À‰^Œ+p–V¢÷.|_Œ‘÷/$V‚ê0HfŒ’1ø3‘ 2•^Çþ3@V†5xW²×6°ž^ù9üV\'<`«^:>i\rAô¸^ŠCË^ÇG`Ô^FIÜö^ƒM4ÿ^óR€_ƃUÔ_ƃVø¶W #µÆƒYP _ãZœ 9¶ã\Ä ÛDƃ^è "_E_! òAƒax!¶–bè!ðµAƒd "øµ–e\#zµAƒg$~µîhÐ$’µAƒj|%–µîkD&\µpüm|&HµÇþo´&Mµpüqì&T[¡sÄ'4[¡vœ(©†Aƒy)Ú´Aƒz˜)ô´Aƒ{<*gvûù|L*F&…è}d*gv-ú~|*F&…è€*gv˜ú *F&…è‚°*gvÐúƒÈ*F&…è…ä*gvÂû†ü*F&…èˆ+gv ü‰8+F&…èŒ`+gv½‚p+F&…®Ž€+gv‹9+F&…Ç +gvÀü‘°+F&…Ç’À+gviŒ“Ð+F&…ý”à+gv.ý–ð+F&…Ç—,gvÔ˜,F&… ˜,gvÔš,F&…F š@,gvéýœP,F&…èd,gv§þž¤,F‰‰D¥ì-F‰Ô¦¸.F‰¦ô.F%‰» ¦/Fðˆ~C¦,/gvÇÿ¦F‰ÔéÐ>F‰é?F%‰» é?Fðˆ~CéH?gv¥é˜?F‰‰DñÔ@F‰Ôò„AF‰ò¸AF%‰» òÄAFðˆ~CòBgväòBF&…aÜôLBgvQõ\BF&…aÜö„Bgvˆ ÷œBF&…‚)ùðBgvÔúøBF&…Ð ú$Cgv(û¬Ä_ÆIdQ®ô_Æ"ŠÔ®`gvt®$`ÆIdQ±„`Æ"ŠÔ±”`gv¾±´`ÆIdQ´aÆ"ŠÔ´PagvG´xaáD‰» ¸aᔉ[¸¬aΈ¸8báý‰Ô¸Tbáy‰Ô¸dbgvǸ„báD‰» »¸bᔉ[»ðbΈ»,cáý‰Ô»Hcáy‰Ô»Xcgv»tcÆIdQ½ÌcÆ"ŠÔ½Ðcgv_½ècF&…dQ¿dgv±À,dáD‰» ÄHdᔉ[ÄhdΈÄeáý‰ÔÄ8eáy‰ÔÄ 'lêý@Blù0ALl 1A Wl 1A(dl21A<tlJ1CT‚ŒêýF`ŒlêýGl‘lêýHx–lêýI„›l1J¡lêýLœ©lêýM¨­lêýN´•^êýOÀ³lêýP̹lä/QؾlêýRäÂlêýSðÈlÝ1TüÍlêýU‘ÑlêýV‘ÖlêýW ‘ÚlêýX,‘ßlêýY8‘ãlêýZD‘èl(2[P‘úlx/]È‘gvê-_à‘F&…N9aü‘gv+.b’F&…£2d0’gvÔe8’F&…³2eD’gvÔgL’F&…tŠgX’gvÔi`’F&…³2il’gvÔkt’F&…³2k€’wX¶mœ’‚X¶m¸’mû/mÄ’!mû/mÐ’-m•m“:mÈ2nH“Cm3sŒ“Sm|3vä“^m¶3{(”imÎ3~€”tm4ƒÄ”€m 4† •‹mZ4‹P•—mr4ލ•¢m¬4“ô•®mÄ4–L–¹mþ4›˜–Æm5žà–ÑmP5£$—Ümh5¦l—çm¢5«°—ómº5®ø—þmô5³<˜ n 6¶„˜nF6»Șnf6¾š*ns6š6n‹6ÅX›Bn˜6Éd›NnÎ6Ì ›^n7Ѭ›kn`7Õœ|nª7ÛHœnÙ7à|œ¥nê7䔜¯nù7æôœ¹nù7è Án8êlÍn8ì„Ön8îäân8ðüën&8ò\ž÷n&8ôtžo08öÌž o08øäžo;8ú<Ÿ"o;8üTŸ,oE8þ´Ÿ8oE8ÌŸAoT8, MoT8D Woc8¤ coc8¼ mor8 ¡yor8 4¡„o8¡‘o8¨¡›o8¢¨o8 ¢²o¯8”¢¿oÈ8¼¢ÊoÒ8@£Ûo9`£ïoB9#Ø£ýof9&D¤ p}9*´¤9p©9/(¥Ipß95Ð¥hp>:<x¦xpy:DT§—pî:M4¨§pt;W|¨¶p¡;Z´¨ÇpÅ;[ü¨Ùpêý\ ©äpêý]©ðpêý^,©üpêý_<©q1`P©qêýb`©$qêýcp©/qêýd€©·´²Æ0>·¼²Æ2r>·ȲÆ7r>·̲gv >·ô²áއ>» ³á҇C»T³gvÔ»\³F&…'>»d³gv->½ ³Æÿq¬³Æ+r6>ÂÀ³Æ06>ÂȳÆ2r<>ÂÔ³Æ7r<>ÂسgvA>´áއU>Æ,´á҇CÆ`´gvÔÆh´F&…]>Æp´gvc>Ȭ´Æÿq͸´Æ+rl>ÍÌ´Æ0l>ÍÔ´Æ2rr>Íà´Æ7rr>Íä´gvw>Í µáއ‹>Ñ8µá҇CÑlµgvÔÑtµF&…“>Ñ|µgv™>Ó¸µÆÿqØĵÆ+r¢>ØصÆ0¢>ØàµÆ2r¨>ØìµÆ7r¨>Øðµgv­>ضáއÁ>ÜD¶á҇CÜx¶gvÔÜ€¶F&…É>܈¶gvÏ>ÞĶÆÿqãжÆ+rØ>ãä¶Æ0Ø>ãì¶Æ2rÞ>ãø¶Æ7rÞ>ãü¶gvã>ã$·áއ÷>çP·á҇Cç„·gvÿ>ç¼·ÆÿqìÈ·Æ+r÷<ìÜ·Æ0÷<ìä·Æ2rÑ¥ìì·Æ7r?ì¸gv ?ì<¸ÆÿqñH¸Æ+r?ñ\¸Æ0?ñd¸Æ2r?ñp¸gv!?ñ¸áއ(?ô¬¸á҇Cô̸gv0?ô¹Æÿqù¹Æ+r÷<ù$¹Æ0÷<ù,¹Æ2rÑ¥ù4¹Æ7r9?ùH¹gv>?ù„¹Æÿqþ¹Æ+rG?þ¤¹Æ0G?þ¬¹Æ2rM?þ¸¹gvR?þعáއY?ô¹á҇Cºgv³6PºÆÿq\ºÆ+rzùhºÆ0zùtºÆ2rÇ<ŒºÆ7rÇ<ºgvø6¸ºáއ~C äºá҇C »gvD7 h»Æÿqt»Æ+rzù»Æ0zùœ»Æ2rÇ<´»Æ7rÇ<¸»gvŽ7è»áއ~C¼á҇CT¼gv—?ˆ¼Æÿq”¼Æ+rŸ?œ¼Æ0Ÿ?¤¼Æ2r¥?À¼Æ7r¥?ļgvª?ä¼áއ±?½á҇C ½gvvf0½F&…N9d½gvvft½F&…ê9´½gvÔ!À½ˆ8B!,¿- E@!4¿gvÔ!<¿F&…¨>!H¿gvã?"X¿F&…Ç<#l¿gvÔ$t¿F&…<>$€¿gvã?%¿F&…Ç<&¤¿gvÔ'¬¿F&…Ñ¥'¸¿gvã?(È¿F&…Ç<)Ü¿gvÔ*ä¿F&….=*ð¿gvã?+ÀF&…Ç<,ÀgvÔ-ÀF&…Ð=-XÀgvã?.hÀF&…Ç</|ÀgvÔ0„ÀF&…?0Àgvã?1 ÀF&…Ç<2´ÀgvÔ3¼ÀF&…M?3ÈÀgvã?4ØÀF&…Ç<5ìÀgvÔ6ôÀF&…n@6Ágvã?7ÁF&…Ç<8$ÁgvÔ90Áˆ8B9¨Á- E@9°ÁgvÔ9¸ÁF&…?9ÄÁgvã?:ÔÁF&…Ç<;èÁgvÔ<ðÁF&…M?<üÁgvã?= ÂF&…Ç<> ÂgvÔ?,ˆ8B?¤Â- E@?¬ÂgvÔ?´ÂF&…??ÀÂgvã?@ÐÂF&…Ç<AäÂgvÔBìÂF&…M?BøÂgvã?CÃF&…Ç<DÃgvÔE(È8BE Ã- E@E¨ÃgvÔE°ÃF&…?E¼Ãgvã?FÌÃF&…Ç<GàÃgvÔHèÃF&…M?HôÃgvã?IÄF&…Ç<JÄgvÔK$Ĉ8BKœÄ- "AK¤ÄgvÔK¬ÄF&…;AK¸Ägv‹9MÈÄF&…N9NÜÄgvÜ@OìÄF&…WAPÅgvÔQÅF&…eAQ(Ågv‹9S8ÅF&…N9TLÅgvÜ@U\ÅF&…WAV€ÅgvÔWŒÅˆ8BWÆ- E@W ÆgvÔWÆF&…?W Ægvã?X0ÆF&…Ç<YDÆgvÔZLÆF&…M?ZXÆgvã?[hÆF&…Ç<\|ÆgvÔ]ˆÆˆ8B]Ç- E@]ÇgvÔ]ÇF&…?]Çgvã?^,ÇF&…Ç<_@ÇgvÔ`HÇF&…M?`TÇgvã?adÇF&…Ç<bxÇgvÔc„Lj8BcüÇ- E@cÈgvÔc ÈF&…?cÈgvã?d(ÈF&…Ç<e<ÈgvÔfDÈF&…M?fPÈgvã?g`ÈF&…Ç<htÈgvÔi€Èˆ8BiøÈ- E@iÉgvÔiÉF&…?iÉgvã?j$ÉF&…Ç<k8ÉgvÔl@ÉF&…M?lLÉgvã?m\ÉF&…Ç<npÉgvÔo|Ɉ8BoôÉ- E@oüÉgvÔoÊF&…?oÊgvã?p ÊF&…Ç<q4ÊgvÔr<ÊF&…M?rHÊgvã?sXÊF&…Ç<tlÊgvÔuxʈ8BuäË- _BuìËgvÔuôËF&…oBuÌgvBvÌF&…‚ùw$ÌgvÔx,ÌF&…tBx8ÌgvByHÌF&…‚ùz\ÌgvÔ{dÌF&…yB{ˆÌgvB|˜ÌF&…‚ù}¬ÌgvÔ~´ÌF&……B~ÀÌgvBÐÌF&…‚ù€äÌgvÔìÌF&…‘BøÌgvB‚ÍF&…‚ùƒÍgvÔ„$ÍF&…Ñ¥„0ÍgvB…@ÍF&…‚ù†TÍgvÔ‡\ÍF&…›B‡hÍgvBˆxÍF&…‚ù‰ŒÍgvÔŠ”ÍF&…¥BŠ ÍgvB‹°ÍF&…‚ùŒÄÍgvÔÐ͈8BHÎ- E@PÎgvÔXÎF&…?dÎgvã?ŽtÎF&…Ç<ˆÎgvÔÎF&…M?œÎgvã?‘¬ÎF&…Ç<’ÀÎgvÔ“ÌΈ8B“DÏ- E@“LÏgvÔ“TÏF&…?“`Ïgvã?”pÏF&…Ç<•„ÏgvÔ–ŒÏF&…M?–˜Ïgvã?—¨ÏF&…Ç<˜¼ÏgvÔ™Èψ8B™@Ð- C™HÐgvÔ™PÐF&…?™\Ðgv‹9šlÐF&…N9›€ÐgvÔœˆÐF&…M?œ”Ðgv‹9¤ÐF&…N9ž¸ÐgvÔŸÄЈ8BŸ<Ñ- E@ŸDÑgvÔŸLÑF&…?ŸXÑgvã? hÑF&…Ç<¡|ÑgvÔ¢„ÑF&…M?¢Ñgvã?£ ÑF&…Ç<¤´ÑgvÔ¥Àш8B¥8Ò- E@¥@ÒgvÔ¥HÒF&…?¥TÒgvã?¦dÒF&…Ç<§xÒgvÔ¨€ÒF&…M?¨ŒÒgvã?©œÒF&…Ç<ª°ÒgvÔ«¼Òˆ8B«4Ó- E@«<ÓgvÔ«DÓF&…?«PÓgvã?¬`ÓF&…Ç<­tÓgvÔ®|ÓF&…M?®ˆÓgvã?¯˜ÓF&…Ç<°¬ÓgvÔ±¸Óˆ8B±0Ô- E@±8ÔgvÔ±@ÔF&…?±LÔgvã?²\ÔF&…Ç<³pÔgvÔ´xÔF&…M?´„Ôgvã?µ”ÔF&…Ç<¶¨ÔgvÔ·´Ôˆ8B·,Õ- E@·4ÕgvÔ·<ÕF&…?·HÕgvã?¸XÕF&…Ç<¹lÕgvÔºtÕF&…M?º€Õgvã?»ÕF&…Ç<¼¤ÕgvÔ½°Õˆ8B½(Ö- E@½0ÖgvÔ½8ÖF&…?½DÖgvã?¾TÖF&…Ç<¿hÖgvÔÀpÖF&…M?À|Ögvã?ÁŒÖF&…Ç< ÖgvÔìֈ8BÃ$×- DÃ,×gvÔÃ4×F&…;AÃ@×gv%DÅP×F&…£2Æd×gvËCÇt×F&…>DȘ×gvÔÉ ×F&…eAɰ×gv%DËÀ×F&…£2ÌÔ×gvËCÍä×F&…>DÎØˆn/ÏØon/Ñ$سjêýÓ4ØÄjn/ÔDØ›¾‡“ÖTØ¢¾™“×dØÏ/ØtØf?0Ù„ØúÖ/Ú”Ø Ý/Û¤Øä/Ü´Ø ä/ÝÄØ10ÞÔØ) 0ßäØR0àôØA!0áÙit+âÙlr¶ã(Ùµâ+ã4ÙmyÙ+å@Ùlä/çLÙwX¶èhÙ‚X¶è„ÙKfîîèÈÙvrqDêðÙâbïìhÚgvsCîÚƒñ`» ïÈÚÁ D‰» ïÔÚÁ¿‰ï8ÛÁ ”‰[ïHÛÁý‰Ôï`ÛÁy‰ÔïÆ&…ê9ïdÛgvÔñpÛÆ&…³Dñ|Ûö‹oáò¨Ûgv¢DóÀÛF&…N9õØÛgviŒöìÛÆ&…ê9÷Æ&…r:÷ÜgvÔúÜÆ&…:EúÜö‹™Hû\Ügv'EütÜF&…ê9þŒÜgv“E ÜÆ&…r:¸Ügv·EÌÜÆ&…r:Æ&…m;äÜgvÔðÜö‹ÖGHÝÆ&…+HTÝgvÉFhÝÆ&…m; „Ýgv G ˜ÝÆ&…m; ´Ýgv8G ÈÝÆ&…m; äÝgvH üÝF&…r: Æ&…= ÞgvÔ,ÞÆ&…ÒH8Þö‹JK¨Þgv»HÀÞF&…m;èÞgvˆIüÞÆ&…=$ßgvÐI8߯&…=Tßgv"Jh߯&…= „ßgvXJ ˜ßÆ&…=!ÀßsЧ!à¤sÙ+"à´sÙ+$ àÆs•L&0àâsâ+)<àôs¡L+LàtÙ+.Xà"tÙ+0dà5tÙ+2pàHtÙ+4|à^tø+6Œàmtø+8œà|tÙ+:¨àtä/<´àšt­L=¼à®t³L=ÄàÊt³L=Ìàètä/=Øàôtã0>äàu¹L@ðàu^Bøà;upBá^uÓLC áouÜLCá‚uåLCá”uîLC$á¦u÷LC,á¸uMC4áÊu MC<áÝuMCDáîuMCLáv$MCTáv-MC\á'v6MCdá;v?MCláMvHMCtáavQMC|áuvdMCTâ†vdMEXã™vdMG\ä¬vØIdäËvØIläèvÝ1I|äúvÝ1JŒäw¼2Käw`@L”ä*we@M˜ä=wƒJNœäNwV@O ä_wQ@P¤äpw[@Q¨ä’w’RØä˜wˆMSåŸwMVHå§w—MY€å±wŸM\ÔåËw¬M_LæÖw¹Mcpæçw¬Mfèæôw¹Mj ç x×Mmàçx†ùnÔè*xNo¸é5xNp€êAx!NqÀëXx!Nsíkx¶uí~x¶uíx¶uíœx¶u í§xx/u4íºxx/w@íÆx'OyîÓx'O|8ïæxn/Lïöx'Oðy'O„Dñyn/‡Xñ+y'O‰(ò7y'OŒPóJyn/dóZy'O‘4ôfy'O”\õyyn/—põgvÔ™|õáÝ÷‚ù™ˆõáøzùš”õgvV%œ¨õáÝ÷‚ù¼õáøzùžÈõgvÔ Ôõá~dcP äõgvÔ¢ðõá~diP¢üõgvÔ¤öá~doP¤ögvÔ¦$öá~duP¦4ögvÔ¨@öá~dè<¨PögvÔª\öá~d{PªlögvÔ¬xöá~dP¬ˆögvÔ®”öá~d‡P®¤ögvÔ°°öá~dP°ÀögvÔ²Ìöá~d“P²ÜögvÔ´èöá~d™P´øögvÔ¶÷á~dŸP¶÷gvÔ¸ ÷á~d¥P¸0÷gvÔº<÷á~d«PºL÷gvÔ¼X÷á~d»P¼d÷gvÔ¾p÷ˆ8B¾xøÚôþgvÔÜüþF&…'>ÜÿgvÔÞ ÿF&…è<ÞÿgvÔàÿF&…=à$ÿgvÔâ,ÿF&…»=â4ÿgvÔä<ÿF&…É>äDÿgvÔæLÿF&…]>æTÿgvÔè\ÿF&……=èdÿgvÔêlÿF&…O=êtÿgvÔì|ÿF&…ñ=ì„ÿgvÔîŒÿF&…;Aî”ÿgvÔðœÿF&…eAð¤ÿgvÔò¬ÿF&…­Rò¸ÿgvÔôÄÿˆ8Bô ÖyBRôgv‹9ô$F&…N9õ8gviŒöHF&…³D÷lgvvfø|F&…ê9ù¼gv‹9ûÌF&…N9üàgviŒýðF&…³DþgvÔÿF&…“>ÿ$gvÔ,F&…'>4gvÔ<F&…è<DgvÔLF&…=TgvÔ\F&…»=dgvÔ lF&…É> tgvÔ |F&…]> „gvÔ ŒF&… S ”gvÔœF&……=¤gvÔ¬F&…O=´gvÔ¼F&…ñ=ÄgvÔÌF&…;AÔgvÔÜF&…eAägvÔìF&…­RøgvÔˆ8B$ÖyBR,gv‹9<F&…N9PgviŒ`F&…³D„gvvf”F&…ê9 Ôgv‹9"äF&…N9#øgviŒ$F&…³D%,gvÔ&4F&…“>&<gvÔ(DF&…'>(LgvÔ*TF&…è<*\gvÔ,dF&…=,lgvÔ.tF&…»=.|gvÔ0„F&…É>0ŒgvÔ2”F&…]>2œgvÔ4¤F&……=4¬gvÔ6´F&…O=6¼gvÔ8ÄF&…ñ=8ÌgvÔ:ÔF&…;A:ÜgvÔ<äF&…eA<ìgvÔ>ôF&…­R>gvÔ@ ˆ8B@,ÖyBR@4gv‹9@DF&…N9AXgviŒBhF&…³DCŒgvvfDœF&…ê9EÜgv‹9GìF&…N9HgviŒIF&…³DJ4gvÔK<F&…“>KDgvÔMLF&…'>MTgvÔO\F&…è<OdgvÔQlF&…=QtgvÔS|F&…»=S„gvÔUŒF&…É>U”gvÔWœF&…]>W¤gvÔY¬F&……=Y´gvÔ[¼F&…O=[ÄgvÔ]ÌF&…ñ=]ÔgvÔ_ÜF&…;A_ägvÔaìF&…eAaôgvÔcüF&…­Rc hzÙ+e ‚zä/g, ˜zt+hh ®zTTip ¿zrTiH áz‡Tn$ ûzºTsœ {ÈTvø&{ßT}hT{ßT‡ôt{U‘dˆ{+U•ð¡{?Už0½{}U¤Dã{ŠU§¤ | Uª$|¨U¬3|¨U¬$I|¡L¬<p|â+¯T‹|Ù+±¤¤|Ù+³ôÀ|Ù+µDß|Ù+·”û|·U¹ä}¿U»4.}ÇU½\<}ÎUÀ°W}×UÃØ`}ÞUÆ,{}çUÉ|”}ïUËÌ®}SVÍ,7Ï}{VÓ(9â}…V׈9ï}—Vßü9ý}—VêŒ: ~ÄVõØ:~ÐVùh;)~åV¬;6~W P=N~-W¨=f~³L°=}~³L¸=–~Ù+Ô=¯~Ù+ð=Ê~•L>ï~õ>?W>EW >2SWp>F\W¼>[bW?qhWT?‡nWä?›•W @¯ä/"¬@Äã0#È@à¹L%Ü@€¥W'A€ÀW)\A€ìW+ÀA.€(X-@B=€IX/€BN€pX2äB_€ŸX5hCp€ÖX8 D€Y;TD“€/Y>¼D¥€aYAHE·€œYDøEgvÃG FƒÕ€HFÆá€ÚªH(FÁ“FÚªJ8FgvÔLDFáê€9WLTFá1NpFgvÔO|Fáê€9WOŒFá1Q¨FgvV%R¼FƒTÀYSàFÁê€9WSôFÁ1U GgvÔV,GÁê€9WV@GÁ1XTGgvÔY`GÁê€9WYtGÁ1[ˆG‚õ\ŒG=‚õ\Ge‚õ\”GŒ‚õ\˜G°‚õ\œGõ‚t+\ÄGƒt+]ÐG ƒÎY^ðGƒÎY_üG"Ší,`$H)ƒ8Ba@H2ƒ8Ba\HAƒêýa„HKƒÔYb”H…ßYg H>”¶i¨Hxƒðëi´HƒúëkÀHŠƒX nÌH•ƒp qØH ƒöYuXI½ƒZz¤Iσ.Þ€°IÚƒIÞ„ÀI僇«^ÀP\‡¤_ȼQm‡¢aÌ$Sƒ‡µbÏ„T™‡WcÓØU¯‡rcÖ8W‡žcÚXÕ‡0fÝ4Z뇇gà¬[ˆRhä4]ˆohç¬^,ˆŸhë`?ˆÌhî``ˆ8Bòbgv_9òbF&…N9ó(bgv‹9ô8bƒ&…N9õLbgv_9ö\bF&…N9÷pbgv‹9ø€bƒ&…N9ù”bgv®>ú¤bF&…‚)û´bgv_9üÄbF&…N9ýØbgvù>þèbF&…ê9ÿcgv=?cF&…r:(cgvŽ?8cF&…m;`cgvì? pcF&…= ˜cq”j c”Mm¨c˜”Mm°c®”Mm¸cÔMmÀcà”MmÈcö”MmÐc•MmØc*•MmàcI•Mmèca•Mmðc~•Mmøc–•Mmd¬•MmdÇ•Mmdæ•Mmdý•Mm d–Mm(d-–Mm0d?–Mm8dN–Mm@dl–MmHd~–MmPd™–MmXd¬–Mm`d–MmhdÖ–Mmpdî–Mmxd —Mm€d,—MmˆdU—Mmdƒ—Mm˜d”—Mm d¨—Mm¨d—Mm°dÝ—Mm¸dõ—MmÀd ˜MmÈd˜MmÐd7˜MmØdL˜Mmàdc˜Mmèdy˜Mmðd‘˜Mmød¡˜Mme¶˜Mme˘MmeߘMmeò˜Mm e™Mm(e™Mm0e)™Mm8e>™Mm@eT™MmHef™MmPe{™MmXe”™Mm`e«™MmheÀ™MmpeÒ™Mmxeë™Mm€ešMmˆešMme+šMm˜eFšMm eZšMm¨emšMm°eˆšMm¸ežšMmÀe¿šMmÈeäšMmÐe›MmØe'›MmàeG›Mmèed›Mmðe‹›Mmøe£›Mmf¿›Mmf×›Mmf÷›MmfœMm f;œMm(fXœMm0foœMm8f‡œMm@fœMmHf³œMmPfÉœMmXfÞœMm`fúœMmhfMmpf'Mmxf<Mm€f\MmˆfwMmf…Mm˜fŸMm f½Mm¨fÚMm°fóMm¸fžMmÀf(žMmÈf:žMmÐfOžMmØfpžMmàfšžMmèf²žMmðfÉžMmøféžMmgõžMmgŸMmg$ŸMmg7ŸMm gRŸMm(ggŸMm0gŸMm8gšŸMm@g¸ŸMmHgÓŸMmPgñŸMmXg Mm`g$ Mmhg8 MmpgP Mmxgj Mm€g Mmˆgž Mmg¾ Mm˜gÖ Mm gí Mm¨g¡Mm°g¡Mm¸g4¡MmÀgL¡MmÈgf¡MmÐg‚¡MmØg®¡MmàgÙ¡Mmèg¢Mmðg¢MmøgG¢Mmha¢Mmh¢Mmh¡¢Mmhº¢Mm h…¢8h×¢–ATh⢠jphí¢jŒhˆ8Bty•y6z6z6zuz’zÒzÌzÄz#{{8{#{#{8{{°{È{ã{|}}}}}}}6zÈ{A~}}È{A~©~MMtytytyŠŠtyŠtytyMMtytyMMMtytytyŠŠtyŠtytyMMMtytytyy€MMMMtytytyŠŠtyŠtytyMMMMtytytytyy€MMMMMtytytyŠŠtyŠtytyMMMMMtytytytytyy€MMMMMMtytytyŠŠtyŠtytyMMMMMMtytytytytytyy€MMMMMMMtytytyŠŠtyŠtytyMMMMMMMtytytytytytytyE„K„Q„—„œ„ŠtyŠtyty-…J…-…J…-…-…y…~…-…y…~………-…y…~………Œ…-…y…~………Œ…“…¸…J…-…-…-…-…6zÎ…tytytyŠŠtyŠ}tyty6z6ztytytyŠŠtyŠtyty³†¸†³†¸†tytytyŠŠtyŠtytyg‡ˆˆFˆUˆUˆ{ˆ‚ˆ‰ˆˆ‰ˆˆ¡ˆªˆ¼ˆ¼ˆIŠEŠwŠ}ŠwŠ}ŠŽŠ”ŠšŠwŠ}ŠwŠ}ŠŽŠ”ŠšŠtyty6‹?‹œ„œ„­‹°‹Ó‹6zӋߋߋߋߋߋŒŒŒß‹Œß‹ß‹ß‹ß‹Ó‹Ó‹Ó‹ˆ–ŒÍŒÍŒ}”}””Ž”ÍŒÍŒÍŒ $ty}Ó‹6zwŠ}ŠŽŠ”ŠMwŠ}ŠŽŠ”ŠMtyty6‹?‹œ„œ„6z6z6z͌ߋŒß‹ß‹ß‹ß‹ß‹~ƒ~ƒHˆ*Œ§§Hˆ*ŒHˆ*Œùùùù–ŒÍŒ°‹°‹ –ŒÍŒÍŒÍŒ $}U‘Y‘“‘tyU‘U‘ÿ‘U‘ÿ‘U‘U‘m’t’ˆ’Ÿ’½’Ú’ÿ‘ó’ÿ‘“ÿ‘“ÿ‘8“Ú’H“ÿ‘o“—„o“ÿ‘—„Ú’ÿ‘Ú’ÿ‘Ú’ÿ‘½’Z”s”Ÿ’””g‡Ÿ’Ÿ’g‡Ÿ’Ÿ’•ˆÿ‘•ÿ‘•ÿ‘6zó’ÿ‘ó’ÿ‘ó’ÿ‘•ÿ‘¹•ÿ‘ˆú•–ˆ–Hˆ*Œ–Hˆ*Œ––Hˆ*Œ–––Hˆ*Œ–– ––Hˆ*Œ–– –ß‹{ˆ‚ˆ¡ˆªˆ¼ˆ‰ˆˆ©–MMŠtyŠtytyMMtytytywŠ}ŠŽŠwŠ}ŠŽŠ”ŠšŠv—wŠ}ŠŽŠwŠ}ŠŽŠwŠ}ŠŽŠ”ŠšŠv—wŠ}ŠŽŠtytytyəݙð™ÿ‘ÿ™ šš!š +š :š6z6z|U‘àš|U‘tytyy€wŠ}ŠMwŠ}ŠwŠ}ŠŠtyŠtytywŠ}ŠMwŠ}ŠwŠ}Štytytytyy€MMMMwŠ}ŠMMMMMMMMMMMMMMMwŠ}ŠMŠtyŠtytyMMMMwŠ}ŠMMMMMMMMMMMMMMMwŠ}ŠMtytytytytytytytytytytytytytytytytytytytytytyû¤¥ty¥"¥2¥U¥U¥6zs¥€¥s¥–¥¥¥–¥ty¥¥–¥·¥U¥É¥Ï¥Ø¥õ¥¦¦¦¦ty¦¦6zty¦6z8¦¦F¦R¦¦g¦¦z¦–¥—¦°‹Ú’°‹¦°‹Ú¦ç¦¦•–¥ty §§ §§ty §6z§ §6z§2§C§¦Q§[§f§o§¦„§”g‡·¥U¥·¥•6z6z—¦µ§µ§6zÉ¥¦é§·¥¨¨ ¨,¨O¨X¨a¨|û¤¥M³¨ù¨6zú©¸…$ª«ß‹ß‹ß‹ú©$ªr«x«~«„«Z©ï«MM¬6z;¬;¬L¬X¨L¬É¥;¬c¬¦t¬¬;¬„§;¬ެß‹‰ˆHˆ¡ˆ;¬;¬A­I­;¬I­;¬{­I­;¬{­ ­;¬Ä­Ñ­ç­I­;¬I­®D®O®u®O®¼ˆ™®¾®™®O®Ô®à®ê®©–Ô®à®ê®y…~…Ô®à®ê®y…~………Ô®à®ê®;¬$¯ê®;¬;¬O®v¯‹¯;¬„§¯¯¡ˆ½¯}ߋߋߋFˆK²ß‹A­ß‹A­A­A­A­ˆ²6z¦I­}UˆUˆÈ{A³A­A³A­A³A­A³A­A­A­£³A­£³A­¦I­¬Š¬Š²Š¬Š²ŠÌЬвŠÌŠÒЬвŠÌŠÒШЬвŠÌŠÒŠØŠš—¬Š²ŠÌŠÒŠØŠš—´¬Š²ŠÌŠÒŠØŠš—´>´Ó‹H“·¥·¥¦6z;¬ž´·¥·¥·¥Ó‹·¥¸´·¥д·¥·¥·¥·¥·¥·¥·¥д·¥д·¥·¥g‡·¥6ˆ·¥д·¥6ˆ·¥д·¥д·¥·¥„µ·¥„µ·¥„µ·¥„µ·¥„µ·¥¸´·¥¸´·¥¸´·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥¶·¥Ö¶¶ñ¶ý¶ ··Ö¶ñ¶ý¶ ··Ö¶ñ¶ý¶ ··Ö¶ž´ž´ž´ž´÷í·}}}¹}}}}}}}:»:»Ê»Ê»ô» ¼/¼ç¦O¨°‹2½I½_½g½i½½š½š½ê½š½ê½š½š½š½š½š½6z6z6z6z»¾»¾ê¾}}ú¾MMM‡¨ÿ¾$ª ¿––Ó‹Ó‹6zÓ‹6zÓ‹Ó‹6zÓ‹MMM‡¨ÿ¾8¿ž´8¿ž´mÌž´ž´ž´ÆÌFˆÈÌãÌÿÌ*ŒÍÍ –3ÍgÍgÍÓÍÜÍgÍgÍÍŒ9Ï9ÏnÏtÏ}¦“Ϥϧϳ϶ϹϾÏÈÏÓ‹ÕÏØÏ¹Ï¾ÏÈÏÓ‹¤Ï§Ï³Ï¶Ï¹ÏÈÏ}vÐÕÏØÏ¹Ï¾ÏÐÈϘÐ} EŠ¤Ï§Ï³Ï¶Ï¹ÏÈÏ}дÕÏØÏ¹Ï¾ÏÈÏ}EŠ¤Ï§Ï¨Ò×ÒàÒ¶Ï}ÈÏEŠéÒ¾Ï ìÒ üÒ i½+Ó6Ó@ÓJÓTÓ^ÓiÓtÓ ×Ò }Ó àÒ ¶Ï éÒ¹ÏÈÏ}EŠÁÓËÓÕÓàÓéÓØÏ}¾Ï ÈÏ ìÒ òÓ EŠ éÒi½ÔÁÓ ÔËÓÔÕÓ"ÔàÓ +Ô éÓ ØÏ éÒ ¹Ï¾ÏìÒÈÏòÓ}EŠ+ÓVÔ`ÔjÔuÔ~Ô‡Ô‘Ô ›Ô ¦Ô ¯Ô §Ï³Ï¶Ï¹Ï¾ÏÈÏÕÏØÏ٤ϧϤϧϤϧϤϧÏß‹ÆÌß‹ž´ÆÌÆÌi½ÆÌi½ÆÌž´$ªgãlãgãžã°ã – ––äuzä!ä2äAäLäVäuzä‚ä“ä¬ä½äÓäää ûä å "å i½uzä‚ä“ä¬ä½äÓäNå ûä å "å i½uzä‚ä“ä¬ä½ä~åÓä Nå ûä å "å i½uz¨åi½uz¨åi½uz¨åi½äuz¨åäuzÍŒ –uz‚äÓä¬ä½äûä åuz·¥žã°ãuz·¥žã°ãäƒæƒæžã°ã使ž´äìæäçç$ªç$ªç$ª} –ŒÙÓÍÙÓÍÙÓÍÙÓÍÙ#çÙ#çٳ϶ÏÙÕÏØÏٳ϶ÏÙÕÏØÏٳ϶ÏÙÕÏØÏÙ+Ó6Ó@ÓJÓTÓ^ÓiÓtÓ ×Ò }Ó àÒ ¶ÏÙÔÁÓ ÔËÓÔÕÓ"ÔàÓ +Ô éÓ ØÏÙÕÏØÏÕÏØÏ(çٳ϶ÏÙÕÏØÏÙÙÙÙ9ÏÙ٤ϧÏ٤ϧÏ٤ϧÏÙÙÙÙÙÙß‹ÆÌß‹6ç} –<ç?çˆBçHçNç6ç?ç©–Nç6ç} –<çRçÆÌlã$gãlã$gãžãWç}wŠ}ŠŽŠ”ŠšŠMMäÕçLäÛçêçwŠ}ŠŽŠ”ŠšŠMMtytyty – – – – –~åNå} –͌͌RçÆÌ·¥¦ÍŒüÒ©–ß‹©–ß‹©–ß‹©–ß‹©–ß‹©–vЩ–vЩ–vЩ–vЩ–È{¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–¶©–Ö¶©– ·©–·©–Yòy…~… ·©–·©–Yòy…~… ·©–·©–Yòy…~…ß‹Œ – –ãôŒÍŒãôúô – –ˆˆ$Ûöàö –$9ÏgãÈÌgã9ÏÈÌ –Ì÷ÈÌgãtyÍŒNøß‹–͌ߋ]øHˆˆi½È{_øÆÌy€MwŠ}ŠwŠ}ŠŽŠMMwŠ}ŠwŠ}ŠŽŠMtytytytygã9ÏIùBçHçgã9ÏQùIùHçß‹9Ïi½çÈÌHˆ*Œ –Ì÷ÈÌÌ÷ÈÌXXXU‘U‘ž´ÍŒNø‚$ª$ª$ª$ª9ÏK Fˆ9Ïn ƒ’¡¤§·Øßø} – – –_}ÍŒ–}y„çÆÌ™i½ÆÌ£i½ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙyyy}}6zê}ð©–óöi½óöi½ƒ6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6zÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøIù·¥ú•$ª:·¥д·¥д·¥B½¯·¥¡ˆ·¥¡ˆ·¥·¥em{·¥6z£6z –ß‹ú•6z£ß‹ú•ß‹ú•6z£ß‹ú•ߋ͌ߋ͌ߋú•½¯6z£ß‹Œú•ú•<6z£ú•ú•–EP6z£ú•–EP6z£[^adú•ß‹}ß‹}Iùgдgдg:gB½¯g¡ˆggsz{gߋ͌ߋ͌ߋ”͌ߋ͌ߋ½¯K²<˜ÍŒÍŒß‹”ÍŒ–$ªHˆß‹·º½I­–ß‹EŠ– ––Ýáá ¿·º–$ª·ºi½$ª–¨Ò ¿æ8¿*2$ªfÙf6çf2¨Òf2i½fi½8¿¬8¿¬¡ˆ‰ˆ –¡ˆ8¿Z©x«~«ÙUˆ‰ˆ –8¿Z©x«~«ÙUˆi½8¿¬8¿¬¡ˆ‰ˆ –¡ˆ8¿*Ù8¿L R  ¿R $ª8¿R i½q x  6ˆq 6ˆq x  6ˆD®O®ÍŒ¡ˆÍŒ¡ˆq Ùq 6ç6ˆ$i½$$ªq 6ˆx $i½x i½q 6ˆi½q Ùq 6çß‹6z£;¬¡ˆ½¯u®u®1!}1!}1!}r«;¬A­r«;¬r«HˆZ©x«~«Z!b!¯¯¨Òr«;¬{­™®EŠ™®¹•™®¹•¨Ò –$ªZ©ÍŒx«ÍŒ~«ÍŒ¹!Z!¹!Z!b!¯¯ ¿¹!Z!b!¯¯$ª;¬¹!Z!b!¯¯i½;¬¹!Z!b!¯¯i½««„«ß‹ˆß‹ß‹ÍŒ¨ÒÍŒ¨ÒÍŒEЍÒÍŒˆ¨Ò$ª¨Ò«$ª$ª¨Ò$ª$ª¨Ò$ªˆÍŒ¨Òˆð"„«ÍŒï«ÍŒ¨Òð"ï«„«ÍŒï«ÍŒ¨Òð"ï«„«ÍŒß‹ˆß‹ˆß‹ˆEŠEŠ8¿EЍÒ8¿EЍÒEŠŠ#A­EŠZ©ÍŒˆEŠEŠI­Z©x«~«ÆÌI­Z©x«~«ÆÌˆß‹ß‹EŠÍŒ«$ߋߋ͌À$ÆÌÙ$ÆÌÀ$ÆÌŽß‹#%&% –&%«$<%MMMMMMtytytytyI­Z©x«~«ÆÌ„«¨ÒI­Z©x«~«ÆÌ„«¨Òß‹ˆEŠˆÍŒZ©¨ÒÍŒ$ªß‹ˆHˆ«$ˆ¨Ò«$ß‹ˆx«ð"¨ÒˆEЍÒߋ͌ˆx«ð"¨Òˆ*Œ¨ÒÀ$ˆ„«*Œx«ð"¨Òˆ¹•¨ÒÀ$ˆ„«¹•ˆX%¨ÒˆX%¨ÒÀ$ˆ„«X%À$ÆÌˆÙ$ˆ¹•Ù$ÆÌˆï«¹•¨Ò﫹•¨ÒÀ$﫹•À$ÆÌæ$ªŽ¨Ò#%&%¨Ò­‹¨Ò&%­‹¨Ò&%­‹<%¨Ò8¿¸…ï«Þ%ö% ##Z©ï«ˆ&&„«&&6ˆ¾®¨Ò靖6ˆ&&¾®„«$ EŠ6ˆ&¾®¹•¨Ò靖6ˆ&&¾®„«¹•ê®™®x&L ;¬$¯ê®™®x&ž& ¿æï«´&8¿$ªï«¨ÒÍŒK²¨Ò͌ߋà&í&͌ߋ¨ÒÍŒA­¨ÒÍŒA­¨Ò8¿½¯8¿½¯8¿tyZ©ÍŒ¨ÒZ©ÍŒ¨ÒZ©ÍŒ¨Òï«Þ%ö% ##Z©ÍŒß‹$ª¹ÐÍŒ¹ÐÍŒÆÌ ¿;¬{­$ª;¬{­i½ï«X%¨Ò﫹•¨Òˆ&¨Òˆï«6ˆ&&¾®„«$EŠˆï«6ˆ&&¾®„«¹•ˆï«6ˆ&&¾®„«X%ˆï«6ˆ&&¾®„«$ÆÌˆˆˆˆÍŒ¹•$ª?'¨Òï«J'?'#tyˆ±¨Òï«J'ˆ±#V'½¯c'L D®¨Òï«i½ï«y'#tyˆ±'¨Òï«y'#V'ˆ±½¯¥'D®O®Þ'u®O®i½¼ˆä'$ª™®i½™®i½æ¾®™® ¿¾®™®O®i½¾®™®O®i½™®i½™®¨Òê®™®x&tyV'¨Òà®ê®™®x&V'ê'Ô®à®ê®í'Ô®à®ê®i½y…Ô®Ùy…~…Ô®Ùy…~………Ô®Ù;¬Ùu®u®™®¨Ò$¯ê®™®x&ž&ty$¯ê®r«™®x&ž&i½V'¨Ò$¯™®x&V'ž&ó'$¯™®x&V'ž&i½tyi½$¯ê®$ª$¯ê®i½$ªý'ty™®ý'b!EŠ™®ý'b!(™®ý'b!(;¬O®™®$ª;¬O®i½ ¿v¯i½¸…#V'í'Uˆtyù¨Uˆi½ù¨#V'¸…清i½æï«´&¨Òæï«ty¯¯æ8¿$ª¸…¨Ò ¿ÍŒß‹à&í&$ªÍŒß‹à&í&i½í'͌ߋæÍŒß‹i½I(͌ߋA­L ͌ߋA­i½O(͌ߋA­i½ÍŒA­Þ'ÍŒA­i½ÍŒA­i½ÍŒA­ä'ÍŒA­i½ÍŒA­i½ÍŒ ¿$ªÍŒi½ÍŒi½™®U(™®U(™®L A­™®í'A­™®i½æ™®i½I([(i½™®U(***g‡*g‡*g‡6z**6z6ˆ)–¥ÈÌê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ÆÌFˆÈÌãÌ –ê¾ê¾ê¾ê¾*é§ã*ã*ãÌ –ãÌ*+„çŒã+øHˆHˆ*Œ$ª$ª$ª$ªê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾$ªê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾ê¾$ª$ªê¾Fˆ –ê¾ê¾9ÏÓ.9Ïî.•g‡ß‹ –^/ˆ^/^/ÍŒ^/ÍŒNø^/ÍŒNøŒ†/“/| /†/“/| /Ç/ˆ9Ïç/tyß‹}} –}Hˆ}9ÏI0¦W0Z0]0<ç`0q0u0‹0“09ψˆ9ÏFˆÍŒ9ψ•ˆ•ÈÌ –]øß‹9ψty'1'1'16zty'16zm1ˆŸ1ˆtyŸ1ˆŸ1ˆ6ztyŸ1ˆ6ztyyˆyˆ} 22¦É¥¦9Ï –} –*Œß‹ˆ^2¦–2™2§29ÏÄ2Ä2ñ2ù2ü23 3ñ2ù2ü23 39Ïù29Ïù2Ä2ÜÍÜÍ$Ä2‹3”3œ3ÜÍÄ2¸3ÜÍÄ2œ3Ä2œ3ÜÍò3ö3Fˆã+44$ªÜÍŸ1ˆFˆM4^4e4„4„4„4¦4„4„4$ª$ª}ˆ’„4„4„4„4„4„4„4„4„4„4„4Æ5ç5ˆ$ª6Œ$ªÜÍ686$ªO6£6©6,¨£6Ó‹µ6¨Òé§ÜÍé§ç5ˆ’^7,¨ÈÌ,¨«²s7FˆFˆê¾Ó.yî.²7ÆÌHˆ¸7HˆyHˆyHˆ9ÏHˆÆÌ 3ÙÙO6]ø§2$ù2Óͧ29Ï»7ü23 3Á7ÓÍÁ79ÏÜÍÉ7^4HˆˆÄ2Í7FˆM4ߋ͌„4ß‹„4Hˆ*Œ„4¦4Ñ7Ö7Û7ˆ’Fˆ„4ß‹„4 –Hˆ*ŒˆÍŒHˆ*ŒHˆÉ7Hˆ„48Hˆ8Hˆ%848C8$%848ÜÍ%848ÜÍ%848ÜÍ„4ß‹„4È{R8W8]8d8k8r8v8z8~8‚8Ü͆88”8›8ÍŒÜÍ¢8¦8Üͪ8±8¸8¿8Hˆ*Œ––ÜÍ¢8¦8ÜÍÆ8Í8Ô8Û8â8é8ÍŒL ÍŒI(ÍŒO(ÍŒÞ'ÍŒä'ÍŒð8ÍŒ÷8ÍŒþ8ÍŒ9ÍŒ 9ÍŒ9ÍŒ9ÍŒ!9(9Hˆ*Œ––ÜÍHˆ*ŒÜÍ$ªÍŒÜÍ ¿ÍŒÜÍÍŒÜÍÍŒÜÍÍŒÜÍÍŒÜÍæÍŒí'„4„4„4ç5/919ç519ˆ=96ŒD9ÜÍFˆÉ7E„—„œ„686©–86K9N9}tyÍŒNøwŠ}ŠwŠ}ŠŠtyŠé§tytyMMtyÍŒNøÙ£6©6£6©6Ù£6Ù„4„4„4Å9„4ß‹Œ„4ç5/919á9ä9ç5„4ß‹„4ž´Í –ž´ƒž´ –Íž´ƒÄ:?ç¦Ä:¦?çU‘9ÏÄ:}ŒÄ:Œ}U‘|¨ÒŠ8¿i½8¿–ŒŠi½Š8¿i½8¿–ŒŠi½"¥ –"¥í;$ª"¥•"¥y"¥<"¥Ÿ1"¥'1Fˆ8¿tyi½8¿tyi½"¥ –p<s<}$ªFˆ –È{ÙÙŽ<š½Ž<š½ß‹¿<Æ<Ñ<Ž<ô<š½Ž<꽚½š½š½ô<š½ê½š½ê½š½š½š½š½š½3=O63=–ß‹3=¨Òß‹¨Ò¨Òß‹¿<Æ<¨Ò3=–7=–ÍŒÈ{$ª$ª7=$ªÆ<—„k7¤=ª=Æ<À=Î=Æ<¤=s7Æ<¤=s7Æ<ý=¤=s7Æ<À=¤=—„FˆÆ<À=¤=—„FˆM48“9Ï9Ïߋ͌9Ï8“ˆ9Ï$Î>ˆ9Ï$Î>–—„Ñ<$Ñ<s7$Ñ<s7$Ñ<s7$Ñ<s7$Ñ<s7$Æ<—„¤=O6¾?Ñ<Î>$À=ˆ9ÏÑ<Î>ð?$À=ˆ9ÏÑ<$ˆ9ÏÎ>FˆFˆÆ<—„$À=¤=ð?Fˆˆ i½Æ<Ñ<—„$¤=Fˆˆi½Æ<—„$¤=ð?w@ˆi½†@Æ<7=Ñ<$ˆÑ<s7Æ<†@7=¤@ˆ$µ@Ñ<s7ˆµ@Ñ<s7ˆ9Ï$µ@Ñ<6z6z6zý=Ô@ã@8“ 3ƒˆ$Î>sAxA}Aˆ$Î>‚AsAxAˆ$Î>‡AxAÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>ˆ$ 3FˆÎ>$ˆ 3w@Î>$ˆ 3FˆÎ>$ˆ 3FˆÎ>$ˆ 3w@Ñ<Î>$À=ˆ 3FˆÑ<ˆÎ>ð?$À= 3Fˆµ@O6µ@Ñ<s7ˆ9Ï$U‘ß‹ BB$ B$ª$ª$ªGBPBWBaBk7GBpBaBk7PBGBpBPB“B$™B“B ¿Fˆ³BpB¸B¼Bk7PB³BpBPBÔB$ªFˆäBpBÔBŒk7PBäBpBÔBPBCÿ‘ÍŒBCBCcCã+ã+–C–O6$O6$ŒO6¨Fˆ¨ØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨!DáCêC —„ ÍŒØCÿ‘³B©~¨áCCØCÿ‘³B©~¨*ŒRD fDiDlDoDÍŒˆDáCD¨ˆDáCÿ‘ØCÿ‘³B©~¨êDáCêC ùD ÍŒØCÿ‘³BÍŒ³Bty³Bˆ³BEEˆYEPBlE6z6zYEÿ‘6zwŠ}ŠŽŠwŠ}ŠŽŠÙÙy€ŠtyŠtyty¨$ªÍŒmÌ¨ÒØCÿ‘³B©~¨áCêCÍŒR8W8#çŠFˆD6çR8W8#çŠFˆD6ç¹ÐÍŒØCÿ‘³B©~¨áCêCÍŒØCÿ‘³B©~¨*ŒRD FˆlDáC fDiDlDoDÍŒNø³B¨áCˆD fDiDlD oDÍŒfDlDÍŒR8W8#çŠFˆD6çR8W8#çŠFˆD6çˆDáCD}F¨Ò9ÏF¨ÒÍŒNøØCÿ‘³B©~¨ty¸FÆÌR8W8#çŠFˆD6稈DáCÙÿ‘ã+–³Bty³Bty³BtyU‘U‘y€MwŠ}ŠMMMMwŠ}ŠMMMtytytytytyy€MMMwŠ}ŠwŠ}ŠMMMMwŠ}ŠwŠ}ŠMtytytytytytyÿ‘tyâIi½ÿ‘tyÿ‘ÍŒmÌ}mÌ}$ª$ªˆŽCJ6z™B™B™B™BPB|J„J™B¼JPBß‹ˆŽ|J„J|J„J|J„J|J„J|J„J|J„J|J„J3K:K ¿3K$ªVKVKVK|JVKž VKVKüÒ6züÒ6zPBPBÇKÍKÕKFˆŒÇKÍKÕKŒîKüÒL½¯6ˆˆŽˆŽˆŽˆŽˆŽˆŽˆŽ:K:K:KÍŒ:KLNø$ªæ ¿$ªtL¨Ò6z6z6zO6¨ÒO6™B™BÍŒUˆUˆ$ªœ3|M –¸ÔÍŒUˆUˆú•ú•‰ˆˆ –¸ÔÍŒUˆUˆú•U‘U‘]‘ÿ‘U‘‹3ÿ‘888i½88U‘—„—„mÌU‘U‘yFˆi½U‘ÿ‘U‘Y‘ÿ‘U‘ÿ‘U‘ÿ‘ÿ‘U‘U‘ÿ‘ÿ‘U‘U‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘U‘ÿ‘U‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘U‘Y‘ÿ‘ó’ÿ‘U‘M4U‘£U‘ÿ‘U‘ÿ‘£tyU‘U‘U‘U‘£g‡U‘g‡U‘U‘U‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘ÿ‘U‘U‘ÿ‘“ÿ‘SUÚ’ÿ‘SUŸ’ÿ‘ð"tyjUmUß‹U‘yY‘ÙY‘Y‘~UY‘«$<%Y‘mÌmÌÿ‘£tyty•yU‘ÿ‘tyŠUtyÿ‘‘UˆÆÌÿ‘–Uˆ£ty£›Uty£UªUˆ«$<%mÌ£tyÿ‘–UˆU‘ty$ªó’$$ª8“ƒ—„ty_VcV_V6z_V6z6z_V~ƒ§~ƒ§¸…_Vд_Vд_Vд_Vд_VL½¯_VL_V½¯Iù_V_V°‹‡¨_V_V_V°‹~ƒ~ƒ~ƒ~ƒ~ƒ_V_VO6Œ]øˆ”Ž8W”;W6‹”]ø6‹8W”;W6‹PW]ø]ø6‹”]ø6‹”]øß‹]øß‹g½ÍŒß‹ÍŒg½ß‹g½ß‹g½6‹Hˆ*Œ6‹Hˆ*Œ6‹ß‹O6Œ6‹g½Œ6‹8W;W6‹*Œg½Œ6‹ß‹”×WÜW6‹ß‹O6îWôWO6FˆO6O6FˆO6O6O6 BO6$$O66‹p<s<6‹íXðXg½ŒO6O6 $O66‹Œ –6‹–6‹ˆ6‹*ŒÍŒ6‹*ŒÍŒ6‹HˆÍŒ6z6z Bá²O6$ ±ÒÍŒ6‹Œ”W0]0¨Òߋ͌Œß‹6‹Œ”íXðXíXðXêÓ‹6zêÓ‹êÓ‹êÓ‹êӋ긅ê:ê:êдêдêдêдêIùêL½¯êL꽯êдêдê°‹°‹°‹êêsYß‹Ùߋٌg½$ªˆ”}Ž8W”};W6‹”}g½6‹”g½6‹”g½6‹ß‹”}×WÜW6‹ß‹O6îWôW6‹ß‹”}Œ6‹ß‹O6Œg½6‹”g½6‹”g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ß‹g½ÍŒß‹ÍŒg½6‹ŒŒß‹g½ÍŒ6‹ŒŒß‹g½ÍŒg½Œg½g½6‹ˆ6‹Œ –6‹ 6‹–O6 $ BO6$$O66‹ŒÙ ±ÒÍŒNø6z6z Bá²O6$$ªW0]0¨ÒsYO6i½sYO6i½g½àYåYsY‡¨‡¨‡¨‡¨ZZ%Z-ZZZ%Z-Z«²ZZ%Z-Z@Z‡¨PZWZ^ZeZ‡¨PZWZ^ZeZ6z‡¨‡¨‡¨‡¨PZWZ^Z‡¨PZWZ^Z6zZZ%ZZZ%Z«²ZZ%Z@Z¸…‡¨Iù‡¨¸…‡¨Iù‡¨‡¨6ˆ@Z6ˆ6ˆ6z‡¨·¥†ZU¥’Z6ˆ¯Z$Œ¯Z$±Ò¿Z¯ZÐZIù‡¨ßZæZ‡¨‡¨úô¸…‡¨Iù‡¨¸…ßZæZIùßZæZIùßZæZ¸…‡¨¸…ßZæZIù‡¨ß‹‡¨s7$д‡¨ßZæZß‹/[$дßZæZß‹‡¨s7$д‡¨ßZæZß‹/[$дßZæZß‹‡¨$:‡¨ß‹‡¨$:‡¨:‡¨д‡¨д‡¨ß‹‡¨$д‡¨ß‹‡¨$д‡¨ßZæZßZæZ•[‡¨‡¨‡¨L½¯‡¨L‡¨½¯LßZæZ½¯L½¯ßZæZß‹‡¨¦Î[Œß‹‡¨¦Î[ß[ß‹ß[‡¨¦Î[L½¯‡¨L‡¨½¯\‡¨\‡¨6‹‡¨¸´‡¨‡¨6‹‡¨¸´‡¨‡¨‡¨·¥ß‹‡¨s7Fˆд‡¨ß‹‡¨s7Fˆд‡¨~\‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨¸´‡¨‡¨“\6ˆ‡¨g‡‡¨g‡6zU¥’Z6ˆ6z:‡¨Iù‡¨Iù‡¨Iù‡¨¸…‡¨¸…‡¨6ˆ@Zд‡¨ß‹‡¨¶\&tyß‹‡¨¼ˆtyß‹‡¨¼ˆty‡¨ß‹¼ˆtyß‹‡¨ty‡¨ß‹tyß‹¼ˆtyд‡¨¿\tyúôúôÆ\IùúôIùúô¸…úô‡¨úôúôúôúôBçHçúôg‡ß‹ã+Œ:úô¸…úôÙ\@ZFˆÍŒŒ6ˆ«²ß‹BçH縅BçHçß‹FˆBçH縅BçHçß‹BçHç]ŒIùBçHç]Fˆß‹BçHçŒIùBçHçIùBçHçß‹O6ã+L½¯úô\úôß‹O6ã+ŒL½¯úôß‹ŒBçHçL½¯BçHçß‹ ¦Î[ŒLúô½¯\úôß‹ ¦Î[ß[Lúô½¯ß‹BçHçŒß‹BçH猚] ]¦][ i½LBçH罯ߋBçHçдBçHçдúôдúôß‹BçHçдBçHçдúôдúô:úô:úôдúôдúôúôúôBçHçBçHç]6‹úô¸´úôúô·¥úôß‹Fˆ$ªдúôß‹Fˆ$ªдúôúô¸´úôúô¸´úôúô¸´úôúô¸´úôIùúô~\úô×]Û]¸…ã]¸…ã]Iùã]Iùã]Iùã]6ˆ@Z6ˆã]ß‹ã]$дã]ß‹ã]$дã]ã]ß‹EŠ–ß‹EŠ$–ß‹EŠ–ß‹ß‹ÍŒ¬¬½¯@Z6ˆ@Z¸…·¥g‡·¥¸…·¥д·¥д·¥¸…emß‹­‹ß‹S^mд·¥д·¥Iù·¥Iù·¥Iùem:·¥ememW^·¥:·¥:·¥д·¥д·¥6ˆ·¥·¥_^·¥L½¯·¥\·¥ß‹emIù·¥ß‹W0]0¨Ò6‹em·¥·¥·¥·¥6z6ˆ·¥·¥L½¯·¥ÆÌ­‹$д·¥ÆÌ­‹$д·¥À^ $±ÒÀ^·¥·¥ã^ê^$·¥ã^ê^$¨Òã^ê^¨Ò·¥·¥¸´·¥·¥¸´·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥·¥¸´·¥д·¥6ˆ·¥д·¥дemдem·¥·¥·¥ß‹¨Òߋ͌¨Òß‹¨Ò6ˆß‹¨Òß‹­‹¨Òß‹S^m¨Òß‹ –ß‹ –ß‹ –ß‹W0]0ß‹ –ÍŒNøÍŒÙ·¥¨Ò6ˆ·¥ –ð"*_/_¢XBß‹¨Òm¨Òem¨Ò·¥¨ÒÍŒ¨ÒFˆ·¥$­‹/_¢XB·¥­‹2_±Ò/_¢XBß‹Œ·¥7_­‹/_¢XBÀ^·¥ Ž$ –/_¢XB·¥ã^ê^$ã^ê^¨Ò·¥¨Ò<_A_}Q_Q_<_W_¨Ò·¥A_}Ó‹*_/_¢XB<_·¥A_}Ó‹*_/_¢XB<_·¥¨Ò·¥¨Ò<_A_}Q_<_·¥¨ÒÆÌ·¥ –[_/_¢XB6ˆ·¥ –ð"*_/_¢XBÆÌ·¥ –[_b_/_¢XBß‹t_z_‚_ _ÀX¢X°_ÍŒ¨ÒÍŒ¨ÒX¨·¥_^á²&`¨ÒᲨÒÉ¥·¥·¥„§g`r`€`6ztyÍŒNøŽ`tyÍŒNøß‹t_z_‚_¨ÒÀX¢X͌͌„§Ô`_^ß‹X¨¨ÒX¨Ya¨Ò_^¨Ò¹Ð*Œá²&`¹Ð*Œá²&`¨ÒYa¨ÒŽ$ªˆiW¸Ô>WiW _UˆUˆú•¹Ð¹Ð¹Ð –MMMMtytyty¹ÐZ©¹ÐZ©Z©¹Ð¨ÒÍŒ¨Ò¹Ð –¹Ð¨ÒØbi½ –g‡ –ß‹ –ß‹ –ß‹W0]0á²&`¨Òß‹ –ß‹ –ᲨÒß‹ –ߋ͌ߋg‡¢X¨Ò%cß‹Ž¨ÒŽá²&`¨ÒᲨ҂_&`½¯¨Òt_z_‚_ß‹ – –y€ß‹ –ß‹ –$ß‹W0]0ß‹ –á²&`ß‹ –á²ß‹½¯ß‹g‡¨Òß‹Tdg‡¢Xz_‚_á²&`½¯ }ß‹ –_dð"B6‹6‹ÍŒNø¿dÝdädtyÍŒNø¿dtyÍŒNøtyÍŒNøídòdtyÍŒNøÇFÇFÇFÇFL½¯ÇFLÇF½¯дÇFдÇF¸…ÇFIùÇFL¬ÇFÇFÇF‡¨‡¨‡¨‡¨‡¨PZWZ‡¨PZWZ6zZZeeZZeeZZ«²eeZZ@ZZZ6zZZ@Z¸…‡¨¸…‡¨Iù‡¨Iù‡¨‡¨‡¨·¥@eMeU¥ZegeZZß‹‡¨$±Òß‹‡¨$±Ò‡¨$±Ò‡¨lDoD$±Ò6ˆ6ˆß‹~\ ¸´‡¨‡¨‡¨ú¾¸´‡¨‡¨ß‹ÍŒ fߋ͌IùÍŒ fߋ͌$ߋ͌ fß‹8fW¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½>W¨Ò¦lNmFˆlg½¨Ò¦lNmFˆlg½¨Ò¦lNmZn>WFˆg½¨ÒZn>W¦Nmwn>WFˆlg½¨Òwn>W¦lNmFˆg½™n¨Ò¦NmÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒFˆÍŒZnFˆÍŒFˆÍŒZn×oFˆZn×o6zæo·¥¦mlU¥¦ml·¥·¥p"p*p1pU¥p"p*p1p·¥·¥p"p*p1pYp`pU¥p"p*p1pYp`p·¥·¥p"p*p1pYp`pˆp pU¥p"p*p1pYp`pˆp p ·¥·¥¦mlù2ù2͌͌͌͌NøÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒÍŒNøÍŒ}Fˆg½Fˆg½ÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WÍŒNøFˆlg½>rArFˆlg½>WFˆlJr>rArFˆlg½>rArFˆlg½FˆlJr>rArFˆlg½>rArFˆlg½Zn>WFˆg½ArZn>WFˆg½>WFˆlg½>rArwn>WFˆlg½Fˆg½™nArFˆg½™nyÍŒyÍŒNøÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒNøR8W8#çŠFÍŒNøR8W8#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒ#çŠFÍŒNøR8W8#çŠFÍŒNøR8W8#çŠFÍŒNøÍŒNø6zÍŒNø6z6z6z6z6z6z6z6z6z6z6z6z}ÍŒNøÍŒNøÍŒ fã+Œã+ˆFˆO6y…~…]ø-…ß‹]ø/9ß‹y…~………]ø-…ß‹]ø/9}ߋߋy…~………Œ…-…]øß‹ß‹ß‹ß‹]ø/9}y…~………Œ…“…]ø-…ß‹]ø/9}͌ߋߋߋߋ͌W0]0W0]0ŠW0]0W0]0ŠW0]0W0]0W0]0W0]0W0]0W0]0W0]0W0]0tyty¿dty6‹ty¿dð"i½ð"i½ð"i½6z*_ߋߋߋߋߋߋߋ–O6ÆÌˆO6ÆÌˆO6ÆÌˆO6ÆÌˆO6ˆFˆŒO6ÆÌˆO6ˆFˆŒO6ÆÌˆO6O6O6O6Txi½Txi½ÍŒNøÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøTxÏx¨ÒTxÏxi½ÍŒNøtyÍŒNø¿dtyÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒFˆÍŒFˆÍŒFˆð"ÍŒFˆR8W8#çŠFR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøR8W8#çŠFg½ÍŒNøR8W8#çŠFÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøê¾tyŠ×zw@Üzi½Š×zw@ÍŒi½Šw@×zŠÍŒNø{{ {$ŠÍŒNø2{8{?{F{M{ $ ±ÒŠÍŒNø`{2{8{?{F{ M{ $ÍŒNø‚{”ŠÍŒNø‚{”{”™{$ o7ŠÍŒNø‚{”{”ŠÍŒNøŠÍŒNøÍŒNøŠÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNøÍŒNø9}ÍŒNø9}ÍŒNø9}ÍŒNø9}ÍŒNøÍŒNøÍŒNø9}Ë}×zw@Üzi½9}Ë}w@×z9}Ë}ÍŒNø{{ {$9}Ë}ÍŒNø2{8{?{F{ M{ $ ±Ò9}Ë}ÍŒNø`{2{8{?{ F{ M{ $ÍŒNø‚{”9}Ë}ÍŒNø‚{”{”™{ $ o79}Ë}ÍŒNø‚{”{”9}Ë}ÍŒNø9}Ë}ÍŒNøÍŒNøÍŒNøŠÍŒNøË}͌͌͌͌Ë}ÍŒË}͌꾿d꾊ê¾6‹”6‹”6‹”6‹”6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMN6‹øMNɀ͌NøÍŒNøÍŒNøtyÍŒNøtyGÍŒNøÍŒÍŒNøÍŒÍŒNøÍŒ·¥·¥·¥·¥X¨ÍŒWƒ[ƒbƒgƒrƒ·¥g‡·¥g‡U¥g‡6z·¥PZWZU¥PZWZ6zÈÏ®ƒ³ƒ/[¸ƒ˃®ƒ³ƒ/[¸ƒÈÏ·¥PZWZ^ZU¥PZWZ^Z6zÈÏ®ƒ³ƒóƒ/[¸ƒøƒ˃®ƒ³ƒóƒ/[¸ƒøƒÈÏ·¥PZWZ^ZeZU¥PZWZ^ZeZ6zÈÏ®ƒ³ƒóƒ/„/[¸ƒøƒ 4„˃®ƒ³ƒóƒ/„/[¸ƒøƒ 4„ ÈÏW0]0W0]0W0]0W0]0tyty8¿tyi½Š8¿tyT‡i½8¿tyŠi½8¿tyi½Š8¿T‡i½Š8¿i½8¿–ŒŠi½8¿tyi½8¿tyi½Š8¿T‡i½Š8¿i½8¿–ŒŠi½8¿tyi½FˆIˆˆ$ß‹]øß‹ê¾ß‹]øß‹ê¾ß‹]øß‹]øß‹Hˆ*Œß‹Hˆ*Œ–ß‹Hˆ*Œ––ß‹Hˆ*Œ–– –||y…|y…~…|y…~……… 111 1 1!7777 7!???"? ?!I*II.I I!U6UU:U U!cBccFc c!swNwwRw w!xVxxZx x!z^zzbz z!z)zf~j~n€9€r€)€f)fAˆ ˆzˆ~ˆ)ˆ‚‘)‘f‘Š‘ œ’œ° ±š±»ž»ìAöAöQ÷AùA¢)¦Af)Š!z!‚!)!~Vï¾ñÆóÆ÷ÆùÒú¾û¾üAýÆ7¾`AàAn‚r‚„vÇÚÇãÉ"n%A&:&n&j(A)>)B)ÆP9PAPr`9`A`Ž©êªî«)«f¬)¬f±)±f²A²9²r²À¶9¶A¶òºA»:»n»jÆÉAÉ9ÉrÊÎ9ÎAÎrÏAÏ9ÏrÒAÒ9ÒrÖ9ÖAÖr×9×A×rÚ9ÚAÚrÛ9ÛAÛrÜAÜ9ÜrÝAÝ9ÝrÞ9ÞAÞrâäêåêæêçêA9r). ) :)F)R)^)j)v)‚ ) Ž#)#š&)&¦)))²+)+f-)-f/)/¾»A»9»rÐêÑêÒ6Ó:Ô>ÕBÖF×JØNÙRÚVÛZÜ^ÝbÞfßjànâã;É<á=á>á?á@áÉgv–Ùgv³ágvÃégvÃñgvÔùgvÝ gvgvgv!gv)gv1gv9gvAgvIgvQgvYgvagvÃigvqgvÔygv gvÔšy1‰gvÔ!gvÔ‘gv‘¡ê{[©gvÔ±gvÔ¹gvÁ$ gvÛ, gv$ MN, M]šy±ay2 my„ gvÔÉgvÀ D •y>L •yRT gvÛ\ gvd gvÛ!T MN\ M]d M@"4šyÀ"4ay2 4myû#4gvÔt •y"| •y&"„ •y3"Ly€?Œ gvÛL‚#” gvœ gvÛ!¤ gvÉ%Œ MN” M]œ M@"¤ M*&Lšy³&Lay2 Lmy(LgvV%´ •yî%¼ •yý%Ä •y &Ì •y&dy€?Ô gvÛd‚#Ü gvä gvÛ!ì gvÉ%ô gvš*dšyÎ*Ô MNÜ M]ä M@"ì M*&ô MY+day2 dmyn,dgvV%•y+ •y+•y&+•y7+$•yH+|y€?,gvÛ|‚#4gv<gvÛ!DgvÉ%Lgvš*Tgv/|šyÊ/|ay2 |my0|gvV%,MN4M]<M@"DM*&LMY+TM™1\•yæ1d•y 2l•yZ2t•y”2|•yÎ2„•y3”y€?ŒgvÛ”‚#”gvœgvÛ!¤gvÉ%¬gvš*´gv/¼gv^4”šyš4”ay2 ”myÞ4”gvV%ŒMN”M]œM@"¤M*&¬MY+´M™1¼MÍ6Ä•y7Ì•yZ7Ô•yš7Ü•yÚ7ä•y8ì•yZ8ô•yš8IgvÔIgv9áay#ámy!9éê„,9ñ…29ügv_9gv‹9&…N9 gv¢9gv_9gv‹9&…N9$&…ê9,&…N94&…N9<&…r:D&…ê9L&…N9T&…N94n…':\&…m;d&…r:l&…N9t&…ê9Ln…':|&…N94n…ø:„&…=Œ&…m;”&…N9œ&…r:ln…':¤&…ê9Ln…ø:¬&…N94n…Y<´gv®>¼gv_9Ägvù>Ìgv=?ÔgvŽ?Ügvì?ä×…NäšyU@äay2 äî…Ûämy„@ gvìgvÛì6zNìšy=Aìay2 씲S&…N9Ä&…N9dgv4ElÅ•U‘Ø•Utgv-U|ú•]U|–fU| –Û´Å•N¹5–:V?–DVyM–RÄgv4Eďл ÄŠ !‘_–eV´"–þU¹n–xVy–!—–V´*– VÌ&…ÛUägvÙVìÅ•Wô&…RDügvAWéJš,9,6zl,gv6zN©Õš\©Ûš\ ›j\á"›y\ 1›#¹C›\±1›#¹N›…\‰õ“o gv&…N9¸†'B³†NÄ&…N9$6zN,¸Š» ,Š !4Ò†t%ß‹C>t%ˆS>|%ù«²q„%&…N9Œ%Mõq”%&…N9œ%«$q,œ%ˆ7¤%«$z,¤%ß‹í>¬%gvf>|%gvÒq´%gvÛ>¼%ˆ7¼%EŠq,Ä%ß‹í>Ä%ÍŒ]Ì%&…N9¼%gv>?Ô%ˆ7Ô%*ŒNÜ%À$ìDÜ%ˆ7Ü%„«NqÔ%gv/7ä%ˆ7ä%¹•9ì%À$ìDì%ˆ7ì%„«Nqä%gvÙ?ô%ˆ7ô%X%Qzü%ˆ7ü%X%Qz&À$ìD&ˆ7&„«Nqô%gvö?ü%gvö? &À$ìD &ÆÌq,Ü%gv¡?ì%gv¡?&gv¡?&Ù$S@&ˆ7&Ù$S@&ÆÌq,&gvk@$&À$/$&ÆÌq,ÔgvÔ,&ù«²q,&ó«¦q4&&…N9<&ŽND&­‹œDL&&%CAL&­‹œD´&…N9ÜgvÔT&&%CAD&gv9AL&gv[AägvÔ\&<%q,|6zNd&gvíAl&×…Nt&6zN|&M]„&MNŒ&gv¬Bt&5†ë@l&î…ÛÄ"6zN”&gvWvœ&gvpD¤&]ˆÛ¬&gvWv´&gvòD¼&v±åzÄ&¨?Ì&ó«¦qÔ&gv4EÜ&5†ë@¼&ˆ±îzÄ&¦¨ÛÜ&6zNÔ&Š !Ô&¸Š» ¼&’±{ä&gvêEì&gv\Fô&gvâ|ü&gvâ|´gvÛ„×…N'Z©¦q'ÍŒN 'Z©¦q 'ÍŒN'Z©¦q'ÍŒN'﫲q'Þ%&$'ö%9G' #òp'#‰7'Z©¦q'gvG$'î…Û 'gvG'gvG,'ß‹vG$'gvÛ4'gvx<'&…N9$'×…ND'¹ÐBHL'?áT'&…N9\'¹ÐBHL'c ìgvÔd'ÆÌq,l'ù«²ql'ó«¦qD'gv]H\'gv]HôgvÔt';¬q,t'{­ýHügvÔ|';¬q,|'{­ýHt'gvFu„'ˆQI„'&ÿCŒ'ó«¦q”'&…N9œ'ˆQIœ'﫲qœ'6ˆs1œ'&Cœ'&ÿCœ'¾®Ú2œ'„«Nqœ'$?¤'ˆQI¤'﫲q¤'6ˆs1¤'&C¤'&ÿC¤'¾®Ú2¤'„«Nq¬'?á´'ˆQI´'﫲q´'6ˆs1´'&C´'&ÿC´'¾®Ú2´'„«Nq¬'c gvÔ¼'ˆQI¼'﫲q¼'6ˆs1¼'&C¼'&ÿC¼'¾®Ú2¼'„«Nqœ'gv€I¤'gv»I´'gv»I gvÔÄ'ˆJŒ'ù«²ql&gvÛ¼'gv»IÌ'ˆJÔ'gv4EÜ'5†ë@Ô'¸Š» Ô'Š !Ä'gvŒuÜ'6zNä'×…Nì'6zNù"ŠÔä'gvÛô'gv¢9A„!°Kgv¢9ùgv½Kì'5†ë@ä'î…ÛgvÔü'×…N(6zN ’'`L (&…N9ü'î…ÛgvÔÌ&ù«²qü'gvÛgv¢9éÂ'ÏL(5†ë@(¼ˆVz$gvÔ(™®z|³=$(gvÔ,(™®z,gvÔ4(¾®p4(™®z|#» „5†ë@<(gvÔD(¾®pD(™®zD(O®t4(gv™ML(¾®pL(™®zL(O®t,(gvWvD(gv†vT(™®z\(™®zd(ê® Dd(™®zd(x&çMl(à®Nl(ê® Dl(™®zl(x&çMl(V' 4D&…N94gvÔt(Ô®rNt(à®Nt(ê® Dd(gvôMd(&…þpl(gv/Nl(&…eDQgv¢9¼"gv4E &…N9|(Ô®rN|(à®N|(ê® Dt(gvØv„(y…N„(Ô®ÅNŒ(gvx”(&…N9œ(y…Nœ(~…]œ(Ô®ýN¤(gvt€¬(&…N9´(y…N´(~…]´(……@"´(Ô®=O¼(gv€Ä(&…N9<gvÔÌ(;¬…OÔ(¸Š» Ô(Š !Ô(ÞŠ¼$Ü(&…N9DgvÔä(™®zì($¯ìOì(ê® Dì(™®÷Oì(x&çMì(ž&PLgvÔô($¯ìOô(ê® Dô(r«0qô(™®÷Oô(x&çMô(ž&Pì(gvPì(&…þpü(T¬)à&ö}¬)í&p¼)±åz¼)ˆ±îzÄ)MNœgvÔÌ)ÍŒ5TÌ)ß‹>TÌ)à&ö}Ì)í&p¼)ì±v{Ô)6zNÜ)gvÔ¼)§± {¬)gvêE¤gvÔä)ÍŒ5Tä)ß‹>Tì)ÍŒ5Tì)ß‹>Tô)gvÔä)gv\F¬gvÔü)ÍŒ5Tü)ß‹>Tü)A­?A,†=t*ÍŒ5T*ß‹>T*A­?¼)²´{ *gvÔü)gv+|´gvÔ*ÍŒ5T*ß‹>T*A­?¼)O²|*gvÔ$*ÍŒ|$*A­?,*ÍŒ|,*A­?¤&²Î{¤{²R}$*gvâ|ÜÍŒ|ÜA­?¤:²Î{4*ÍŒ|4*A­?<*ÍŒ|<*A­?4*gvâ|äÍŒ|äA­?D*ÍŒòæ•ÛL*ÍŒòT*&…N9ÍŒòD*gv~L*gv~\*™®8l$ç¯1zd*™®8l*™®8l$#» ¼gvÔt*A­?t*™®8l*gv5~|*A­?|*™®8t*gvÉ~„*™®8l$³=Œ*gvÔ”*[(±Vœ*gvÔ¤*™®8¬*¸Š» ¬*Š !´*6zN¼*å£!¼*€¿!¬*gv4Eägv4E¼*#€á!Ä*6zN5†ë@Ì*5†ë@Ô*5†ë@Ü*5†ë@ä*5†ë@ì*5†ë@Ü5†ë@ô*5†ë@ü*5†ë@+5†ë@ +5†ë@+5†ë@+6zNTgv4EL5†ë@ùð*ý™ÄgvÔÌgvÔ$+gv4E,+5†ë@ Ò†oÌ+¸Š» Ì+Š !Ì+gv4EÔ+¸Š» Ô+ÞŠ¼$Ô+òŠ»-Ô+èŠ5)Ô+Š !Ü+Š !Ü+¸Š» ¹C/Bq‰w»y‰v4ƒqä+gvÛ\&…N9ì+gv4Eì+¸Š» ì+Š !ô+Ò†„‘Ü-Š !á‡#Ygváö>’ä-gv4Eì-gvxä-¸Š» ä-Š !ô-5†ë@ü-gv4Eü-¸Š» ü-Š !ì-Š !ì-¸Š» ì-ÞŠ¼$.5†ë@áz?ö’„?ü’ô-6zN .gvx.n…ø:.6zN .¸Š» .Š ! .ÞŠ¼$^†•¹^†àõ¹@•.gvx™^†àõ™4@•‘^†àõ‘4@•.¸Š» .ÞŠ¼$.Š !$.gv4E츆'B쳆N,.gv4E,.¸Š» ,.Š !4.&…N9<.&…N9D.&…N9‹@L—$.Š !$.¸Š» L.&…N9T.ÞŠ¼$T.Š !T.¸Š» T.èŠ5)\.gv¹˜d.6zll.gv|™ŒgvÔ|.n…':”gvÔ„.µ@Ž›Œ.&…N9”.ÞŠ¼$”.èŠ5)\&…N9œgvÔœ.µ@bœœ.Ñ<lœ.s7?¤.&…N9¬.?á¬.c ´.gv4E¼.gv4EÄ.5†ë@Ì.gvt€Ä.6zN¼.Š !¼.¸Š» Ì.ÞŠ¼$Ì.èŠ5)Ì.Š !Ì.¸Š» ´.Š !´.¸Š» ¬,è†SBÔ.gv4EágvØžÔ.¸Š» Ô.Š !a:=Ü.n…ø:ä.¸†'Bä.³†Nì.gv4Eô.5†ë@ü.¸†'BC’CL—/gv“1 /DŒJ /Ï‹4E/5†ë@áüC«¢áD«¢$/MN,/M]/6zN /PŒJ4/gvm£WŽsä9iWŽsä9 _®ì9gvxUô9&…N9Ü9gvŸü9^a÷ü9taE:&…N9:MÅ $:~a…,: –œD4:gvÙ4:¢aÅ ,:gv9A<:gvÔü Õa;D:gvÛL:gvÙü gvÔD:MNL:MÅ T:•yg\:•yƒd:•yŸt7¹ÐÅ t7Z©Î l:gv)t7gvît:gvb ^a÷ taEl:Z©Î l:¹ÐŒ &…N9 gvÔt:ÍŒü ~a…|:¢aÅ |:&`÷@|:Ú`Š„: –œDŒ:gvî”:gv9AŒ:¹Ð ü öa^ü âaL”:ØbœDœ:gv®ª¤:gv>¬:gvt´:gv¾Ä:×…NÌ:gvGÔ:gvÇÜ:gvä:×…Nì:gv_ä:î…Ûô:gvÔä:gvÛü:gv±Ä:î…ÛÄ:gvÛ;gvy ;gv; –ª¥d9ᲊ ½¯F &`N ñ`»  IdQ "ŠÔ;ß‹š!; –‹  gvÔ, &…N9$;ß‹b$; –‹ $;$s1,;n…':4;ß‹†4;W0‹ 4;]0˜<;9Š» œ9n…':D;ß‹š"D; –‹ D;á²&$D;&`‹#L;&…N9T;ß‹ððT; –œDT;á²&$\;ß‹ó\;½¯ì"d;&…N9l;6zNt;ß‹.ît;g‡s1|;ß‹.î|;Td?|;g‡s1|;¢XU„;î…ÛŒ;z_š"Œ;‚_uŒ;á²&$Œ;&`‹#Œ;½¯”;×…N„7 ÿC„7&`?„7s7?„7LZ» ”7}N”7ᲊœ;ß‹ìDœ; –œD_d€Dð"œD¤;ö‹oá¬;gv´;6‹7¼;&…ê9Ä;gvÔÌ;gvV%Ô;gvÔÜ;ö‹oáä;gv¢ì;¿d?©ayîô;ídóô;òdýô &…N9ü;&…ê9” ¡>”™ ¤ n…': gvD7 >gvŽ7>gvÛ¹Äjš8¹5–…;$>gvvf,>gvvf4>¼ˆâ;l4&…N9<>¼ˆâ;D>¼ˆâ;L>¼ˆâ;T>¼ˆ<\>¼ˆâ;d>¼ˆâ;l>¼ˆâ;t>¼ˆâ;|>¼ˆâ;„>¼ˆóŒ>&…N9”>¼ˆâ;œ>¼ˆâ;¤>¼ˆ*ñ¬>¼ˆâ;´>¼ˆâ;¼>¼ˆâ;Ä>¼ˆâ;Ì>¼ˆâ;Ô>¼ˆâ;Ü>¼ˆV#< úq®<< r³<< ÿq< r< rÔ< 9Š» < gvÔä>}ND gvÔì>FˆNì>g½Nì>ŒNì>7rN9ì>2rÇ<ì>+rzùì>0zùô>FˆNô>g½Nô>ŒNô>2rÇ<ô>0zùô>+rzùL gvÔT gvØ<d gvÔl gvØ<t ò‡~C| gvÔ„ gvØ<Œ ò‡~C” gvÔœ gvØ<¤ ò‡~C¬ gvÔ´ gvØ<¼ ò‡~CÄ gvÔÌ gvØ<Ô ò‡~CÜ gvÔä gvØ<ì ò‡~Cô gvÔü gvØ< ò‡~C gvÔ gvØ< ò‡~C$ gvÔ, gvØ<4 ò‡~C< gvØ<D gvØ<L ò‡~CT gvØ<\ gvØ<d ò‡~Cü>ZnNü>>Wa?ü>FˆNü>g½Nü>ArŠl gvØ<” n…':?ZnN?>Wa??FˆN?g½N ?>WV# ?FˆN ?l] ?g½N ?>rŠ ?ArŠ?wn]?>WV#?FˆN?l]?g½Nt gvØ<| ò‡~C?y V„ gvÔ$?y V,?gvã?4?gvã?n…':äBgviŒìBgvvfôBgviŒ”¶lE—„?tEy€?tE‚#|EMN„EM]ŒEM@"”EM*&œEMY+¤E‚#¬EMN´EM]¼EM@"ÄEM*&ÌEMY+ÔEM™1¤Ey€?ÜE‚#äEMNìEM]ôEM@"üEM*&FMY+ FM™1FMÍ6üß‹Ýh &…N9ß‹*ñß‹Ýhß‹*ñ$Fß‹èh,F&…Û4Fß‹Ýhz¿” >z#>z¿”)>zC>z¿”I>zc>z¿”i>z‰>z©>zÃ>z¿”É>zã>z¿”é>z?z¿” ?z#?z¿”)?zC?z¿”I?zc?z¿”i?zƒ?z¿”‰?z ?ãØ ?ëØ£?z¿”©?zÀ?‚ïÉ?zà?‚é?z@‚ñ!@š›Û@ÊØ@z @z @ãØ @ëØ)@z@@ãØ@@ëØI@z`@ãØ`@ëØi@z€@ãØ€@ëØ‰@z @ãØ @ëØ©@zÀ@ãØÀ@ëØÉ@zà@ãØà@ëØé@zAãØAëØAóÈAãØAëØ Az AãØ AëØ)Az@AãØ@AëØCAzIAz`AãØ`AëØiAz€AãØ€AëØ‰Az AãØ AëØ©AzÀAãØÀAëØÉAzàAãØàAëØéAz Bz)Bz@B3ØIBz`B;ØiBz‰Bz©BzÁBóÈÁBãØÁBëØÉBzáBóÈáBãØáBëØãBâØãBzéBz Cz)CzICziCz€CºAD‰Cz©CzÉCzéCzDz¿” Dz$D²Ø)DzCDz¿”IDziDz‰Dz¡DóÈ¡DãØ¡DëØ©DzÁDóÈÁDãØÁDëØÃDz¿”ÉDzáDóÈáDãØáDëØéDzEóÈEãØEëØ Ez!EóÈ!EãØ!EëØ)EzAEóÈAEãØAEëØIEzaEóÈaEãØaEëØiEzEóÈEãØEëØ‰Ez¡EóÈ¡EãØ¡EëØ£EâØ£Ez©EzÁEóÈÁEãØÁEëØÉEzáEóÈáEãØáEëØéEzFóÈFãØFëØ Fz!FóÈ)FzAFóÈIFzaFóÈiFzFóȉFz¡FóÈ©FzÁFóÈÉFzáFóÈãFz¿”éFzGóÈGz Gz!GóÈ)GzAGóÈIGzaGóÈiGzGóȃGz‰Gz¡GóÈ©GzÁGóÈÉGzáGóÈéGzHóÈ Hz!HóÈ)HzAHóÈIHzaHóÈiHzHóȉHz¡HóÈ©HzÁHóÈÃHz6ÉHzáHóÈãHz¿”éHzIóÈ Iz!IóÈ)IzAIóÈIIzaIóÈiIzIóȃIz‰Iz¡IóÈ©IzÁIóÈÉIzáIóÈéIzJóÈ Jz!JóÈ)Jz@JãØAJóÈIJzaJóÈiJzJóȉJz¡JóÈ©JzÁJóÈÉJzáJóÈéJzKóÈ Kz!KóÈ)KzAKóÈIKzaKóÈcK:ØcKŠÈcKz6iKzKóȃK:؃KŠÈƒKz6‰Kz¡KóÈ£K:Ø£KŠÈ£Kz6©KzÁKóÈÉKzáKóÈéKzLóÈL:ØLŠÈLz6 Lz!LóÈ)LzALóÈILzaLóÈcLziLzLóȃLÒØƒLêØƒLz¸E‰Lz¡LóÈ©LzÁLóÈÃL;(<ÉLzáLóÈãL;w<éLzMóÈM;Ð< Mz!MóÈ)MzAMóÈIMzaMóÈiMzMóȃMz¿”‰Mz¡MóÈ©MzÁMóÈÉMzáMóÈéMzNóÈ Nz!NóÈ)NzANóÈINzaNóÈiNzNóȉNz¡NóÈ©NzÁNóÈÉNzáNóÈéNzOóÈ Oz!OóÈ)OzAOóÈIOzaOóÈiOzOóȉOz¡OóÈ©OzÁOóÈÉOzáOóÈéOzPóÈ Pz!PóÈ)PzAPóÈIPzaPóÈiPzPóȉPz¡PóÈ©PzÁPóÈÉPzáPóÈéPzQóÈ Qz!QóÈ)QzAQóÈIQzaQóÈiQzQóȉQz¡QóÈ©QzÁQóÈÉQzáQóÈéQzRãØRëØRóÈ Rz R‚ï!RóÈ#Rz¿”)Rz@RãØ@RëØARóÈCRz¿”IRz`R‚aRóÈcRz¿”iRz€RãØ€RëØRóȉRz R‚ñ!¡RóÈ©RzÀRãØÀRëØÁRóÈÉRzàRãØàRëØáRóÈéRzSãØSóÈ Sz SãØ!SóÈ)Sz@SãØASóÈISz`SãØaSóÈiSz€SãØSóȉSz SãØ SëØ¡SóÈ©SzÀSãØÀSëØÁSóÈÉSzàSãØàSëØáSóÈéSzTãØTëØTóÈ Tz TãØ TëØ!TóÈ)Tz@TãØ@TëØATóÈITz`TãØ`TëØaTóÈiTz€TãØ€TëØTóȉTz TãØ TëØ¡TóÈ©TzÀTãØÀTëØÁTóÈÉTzàTãØàTëØáTóÈéTzU‚ïUóÈ Uz UãØ UëØ!UóÈ)Uz@U‚AUóÈIUz`UãØ`UëØaUóÈcUz¿”iUz€U‚ñ!UóȉUz UãØ UëØ¡UóÈ£Uz¿”©UzÀUãØÀUëØÁUóÈÉUzàUãØàUëØáUóÈéUzVãØVëØVóÈ Vz VãØ VëØ!VóÈ#Vz¿”)Vz@VãØ@VëØAVóÈIVãØIVëØIVóÈ`VãØ`VëØaVóÈcVz¿”iVãØiVëØiVóÈ€VãØ€VëØVóȉVãØ‰VëØ‰VóÈ VãØ VëØ¡VóÈ©VãØ©VëØ©VóÈÀVãØÀVëØÁVóÈÉVZª ÉVãØÉVëØàVãØàVëØáVóÈéVZ%YéVãØéVëØWãØWëØWóÈ WZ6Y WãØ WëØ WãØ WëØ!WóÈ)WZëä)WãØ)WëØ@WãØ@WëØAWóÈIWZüäIWãØIWëØ`WãØ`WëØaWóÈiWZ!iWãØiWëØ€WãØ€WëØWóȉWZ«$‰WãØ‰WëØ WãØ WëØ¡WóÈ©WZª ©WãØ©WëØÀWãØÀWëØÁWóÈÉWZ%YÉWãØÉWëØàWãØàWëØáWóÈéWZ6YéWãØéWëØXãØXëØXóÈXz¿” XZëä XãØ XëØ XãØ XëØ!XóÈ)XZüä)XãØ)XëØ@XãØ@XëØAXóÈCXz¿”IXZ!IXãØIXëØ`XãØ`XëØaXóÈdX²ØiXZ«$iXãØiXëØ€XãØ€XëØXóȉXz XãØ XëØ¡XóȤX²Ø©XzÀXãØÀXëØÁXóÈÉXzàXãØàXëØáXóÈéXzYãØYëØYóÈ Yz YãØ YëØ!YóÈ$Y²Ø)Yz@YãØ@YëØAYóÈIYz`YãØ`YëØaYóÈiYz€YãØ€YëØYóȃYz¿”„Y²Ø‰Yz¡YóÈ©YzÁYóÈÉYzáYóÈéYzZóÈ Zz!ZóÈ)ZzAZóÈIZzaZóÈiZzZóȉZz¡ZóÈ£Zz¿”©ZzÁZóÈÉZzáZóÈéZz[óÈ [z![óÈ)[zA[óÈI[za[óÈi[z[óȉ[z¡[óÈ©[zÁ[óÈÃ[z¿”É[zá[óÈé[z\óÈ\z¿” \z!\óÈ)\zA\óÈI\za\óÈi\z\óȃ\z¿”‰\ãØ‰\ëØ‰\óÈ¡\óÈ©\ãØ©\ëØ©\óÈÁ\óÈÉ\ãØÉ\ëØÉ\óÈá\óÈé\ãØé\ëØé\óÈ]óÈ ]ãØ ]ëØ ]óÈ!]óÈ)]ãØ)]ëØ)]óÈ@]ãØ@]ëØA]óÈI]ãØI]ëØI]óÈ`]‚ïa]óÈi]Zª i]ãØi]ëØ€]ãØ€]ëØ]óȉ]Z!‰]ãØ‰]ëØ ]‚¡]óÈ©]ZB©]ãØ©]ëØÀ]ãØÀ]ëØÁ]óÈÉ]Z«$É]ãØÉ]ëØà]‚ñ!á]óÈé]ZFé]ãØé]ëØ^ãØ^ëØ^óÈ ^Z F ^ãØ ^ëØ ^‚á%!^óÈ)^Z$))^ãØ)^ëØ@^ãØ@^ëØA^óÈI^Zª I^ãØI^ëØ`^ãØ`^ëØa^óÈi^Z!i^ãØi^ëØ€^ãØ^óȉ^ZB‰^ãØ‰^ëØ ^ãØ¡^óÈ©^Z«$©^ãØ©^ëØÀ^ãØÁ^óÈÉ^ZFÉ^ãØÉ^ëØà^ãØá^óÈé^Z Fé^ãØé^ëØ_ãØ_óÈ _Z$) _ãØ _ëØ _ãØ _ëØ!_óÈ@_ãØ@_ëØA_óÈ`_ãØ`_ëØa_óÈi_z€_ãØ€_ëØ_óÈ _ãØ _ëØ¡_óÈ©_zÀ_ãØÀ_ëØÁ_óÈÉ_zà_ãØà_ëØá_óÈé_z`ãØ`ëØ`óÈ `z `ãØ `ëØ!`óÈ)`z@`ãØ@`ëØA`óÈI`z``ãØ``ëØa`óÈa`ãØa`ëØi`z€`ãØ€`ëØ‰`z `ãØ `ëØ©`zÀ`ãØÀ`ëØÉ`zà`ãØà`ëØã`ÊØã`š›Ûã`zé`zaãØaëØ az aãØ aëØ#aš›Û#az)az@aãØ@aëØCaš›ÛCazIaz`aãØ`aëØiaz€aãØ€aëØ‰az aãØ aëØ©azÀaãØÀaëØÉazãaš›ÛãazéazbãØbëØbz6 bz b‚ï)bz@bãØ@bëØIbz`b‚ibz€bãØ€bëØ‰bz b‚ñ!©bzÀbãØÀbëØÉbzàb‚á%ébzcãØcëØ cz c‚´*)cz@cãØ@cëØIcz`c‚©/icz€cãØ€cëØ‰cz c‚|4¤c²Ø©czÀcãØÀcëØÄc²ØÉczàc‚¸^éczdãØdëØd²Ø dz d‚Å^)dz@dãØ@dëØDd²ØIdz`d‚Û^dd²Øidz€dãØ€dëØ‰dz d‚ð^¤d²Ø©dzÀdãØÀdëØÉdzàd‚ý^ádóÈádãØádëØédzeãØeëØeóÈeãØeëØ ez e‚ _)ez@eãØ@eëØIez`e‚_de²Øiez€eãØ€eëØ‰ez e‚-_¤e²Ø©ezÀeãØÀeëØÁeóÈÁeãØÁeëØÉezàe‚:_áeóÈáeãØáeëØãeÒØãeêØãez$MéezfãØfëØfóÈfãØfëØf²Ø fz f‚G_!fóÈ!fãØ!fëØ)fz@fãØ@fëØAfóÈAfãØAfëØDf²ØIfz`f‚T_afóÈafãØafëØifz€fãØ€fëØfóÈfãØfëØ‰fz f‚j_¡fóÈ¡fãØ¡fëØ©fzÀfãØÀfëØÁfóÈÁfãØÁfëØÉfzàf‚€_áfóÈáfãØáfëØéfzgãØgëØgóÈgãØgëØ gz g‚_!góÈ!gãØ!gëØ)gz@gãØ@gëØAgóÈAgãØAgëØDg²ØIgz`g‚š_igz€gãØ€gëØgóÈgãØgëØ‰gz g‚§_©gzÀgãØÀgëØÄg²ØÉgzàg‚´_égzhãØhëØhóÈ hz h‚Á_!hóÈ)hz@hãØ@hëØAhóÈIhz`h‚Î_ahóÈdh²Øihz€hãØ€hëØhóȉhz h‚Û_¡hóÈ©hzÀhãØÀhëØÁhóÈÉhzàh‚è_áhóÈéhziãØiëØióÈ iz i‚õ_!ióÈ$i²Ø)iz@iãØ@iëØAióÈIiz`i‚`aióÈiiz€iãØ€iëØióÈ„i²Ø‰iz i‚`¡ióÈ©izÀiãØÀiëØÁióÈÉizài‚`áióÈäi²ØéizjãØjëØjóÈ jz j‚)`!jóÈ)jz@jãØ@jëØAjóÈIjz`j‚6`ajóÈijz€jãØ€jëØjóȉjz j‚L`¡jóÈ©jzÀjãØÀjëØÁjóÈÉjzàj‚Y`ájóÈéjzkãØkëØkóÈ kz kãØ këØ!kóÈ)kz@kãØAkóÈIkz`kãØakóÈikz€kãØkóȉkz kãØ¡kóÈ©kzÀkãØÁkóÈÉkzàkãØàkëØákóÈékzlãØlëØlóÈlãØlëØ lz lãØ lëØ!lóÈ)lz@lãØ@lëØIlz`lãØ`lëØil‚Ú8€lãØ€lëØ lãØ lëØ©lzÀlãØÀlëØàlãØàlëØäl²ØmãØmëØ mz mãØ mëØ)mz@mãØ@mëØImz`mãØ`mëØimãØimëØimóÈ€mãØ€mëØmóÈmãØmëØ‰mãØ‰mëØ‰móÈ mãØ mëØ¤m²Ø©mãØ©mëØ©móÈÀmãØÀmëØÉmãØÉmëØÉmóÈàmãØàmëØäm²ØémZª émãØémëØnãØnëØ nZ! nãØ nëØ nãØ nëØ$n²Ø)nZ«$)nãØ)nëØ@nãØ@nëØAnóÈInZª InãØInëØ`nãØ`nëØanóÈdn²ØinZ!inãØinëØ€nãØ€nëØnóÈ„n²Ø‰nZ«$‰nãØ‰nëØ nãØ nëØ¡nóȤn²Ø©nzÀnãØÀnëØÁnóÈÉnzànãØànëØánóÈän²ØénzoãØoëØoóÈ oãØ oëØ!oóÈ$o²Ø@oãØ@oëØAoóÈ`oãØ`oëØaoóÈdo²Øioz€oãØ€oëØoóȉoz oãØ oëØ¡oóÈ©ozÀoãØÀoëØÁoóÈÃoz@9ÉozàoãØàoëØáoóÈéozpãØpëØpóÈ p‚Ú8 pãØ pëØ!póÈ#pz¿”)p‚ç8@pãØ@pëØApóÈCpÊØCpêØCpz¸EIp‚ô8`pãØ`pëØapóÈcpÒØcpêØcpz¸Eip‚Ú8€pãØ€pëØpóȃpz¿”‰pãØ‰pëØ‰póÈ pãØ pëØ¡póÈ©pZª ©pãØ©pëØÀpãØÀpëØÁpóÈÉpZ%YÉpãØÉpëØàpãØàpëØápóÈépãØépëØépóÈqãØqëØqóÈ qZª qãØ qëØ qãØ qëØ!qóÈ)q‚Ú8@qãØ@qëØAqóÈCqzIq‚ç8`qãØ`qëØaqóÈcqÒØcqêØcqz$Miq‚ô8€qãØ€qëØqóÈ qãØ qëØ¡qóÈÀqãØÀqëØÁqóÈÃqzàqãØàqëØáqóÈrãØrëØróÈ rãØ rëØ!róÈ)rz@rãØ@rëØAróÈ`rãØ`rëØaróÈirz€rãØ€rëØróȉrz rãØ rëØ¡róÈ©r‚Ú8ÀrãØÀrëØÁróÈÉr‚ç8àrãØàrëØáróÈér‚ô8sãØsëØsóÈ sãØ sëØ!sóÈ)sz@sãØ@sëØAsóÈCsš›ÛCszIsz`sãØ`sëØasóÈisãØisëØisóÈ€sãØ€sëØsóȉsZª ‰sãØ‰sëØ sãØ sëØ¡sóÈ©sZ%Y©sãØ©sëØÀsãØÀsëØÁsóÈÉsZ6YÉsãØÉsëØàsãØàsëØásóÈésãØésëØésóÈtãØtëØtóÈ tãØ tëØ tóÈ tãØ tëØ!tóÈ)tãØ)tëØ)tóÈ@tãØ@tëØAtóÈItãØItëØItóÈ`tãØ`tëØatóÈitãØitëØitóÈ€tãØ€tëØtóȉtz tãØ tëØ¡tóÈ©tzÀtãØÀtëØÁtóÈÉtzàtãØàtëØátóÈétzuãØuëØuóÈuz uãØ uëØ uóÈ uãØ uëØ!uóÈ#uÒØ#uêØ#uz$M)uãØ)uëØ)uóÈ@uãØ@uëØAuóÈIuãØIuëØIuóÈ`uãØ`uëØauóÈiuãØiuëØiuóÈ€uãØ€uëØuóȉuãØ‰uëØ‰uóÈ uãØ uëØ¡uóȤuJØ©uãØ©uëØ©uóÈÀuãØÀuëØÁuóÈÉuãØÉuëØÉuóÈàuãØàuëØáuóÈäuJØéuãØéuëØéuóÈvãØvëØvóÈ vZª vãØ vëØ vãØ vëØ!vóÈ)vZ!)vãØ)vëØ@vãØ@vëØAvóÈIvZBIvãØIvëØ`vãØ`vëØavóÈivZ«$ivãØivëØ€vãØ€vëØvóȉvZ$)‰vãØ‰vëØ vãØ vëØ¡vóÈ©vZˆ1©vãØ©vëØÀvãØÀvëØÁvóÈÉvZª ÉvãØÉvëØàvãØàvëØávóÈävJØévZ!évãØévëØwãØwëØwóÈ wZB wãØ wëØ wãØ wëØ!wóÈ$wJØ)wZ«$)wãØ)wëØ@wãØ@wëØAwóÈIwZ$)IwãØIwëØawóÈiwZˆ1iwãØiwëØwóȉwãØ‰wëØ‰wóÈ¡wóÈ©wãØ©wëØ©wóÈÁwóÈÉwãØÉwëØÉwóÈáwóÈéwãØéwëØéwóÈxóÈxJØ xãØ xëØ xóÈ!xóÈ)xãØ)xëØ)xóÈAxóÈCxzIxãØIxëØIxóÈaxóÈcxÒØcxêØcxz¸EixãØixëØixóÈxóÈ„xJ؉xãØ‰xëØ‰xóÈ¡xóÈ©xZª ©xãØ©xëØÁxóÈÃxz6ÄxJØÉxZ!ÉxãØÉxëØáxóÈãxÊØãxêØãxz¸EéxZ«$éxãØéxëØyóÈ yZ$) yãØ yëØ!yóÈ$yJØ)yZ^)yãØ)yëØAyóÈIyZª-IyãØIyëØayóÈdyJØiyZ#±iyãØiyëØyóȉyZ¼6‰yãØ‰yëØ¡yóȤyJØ©yZª ©yãØ©yëØÁyóÈÉyZ!ÉyãØÉyëØáyóÈäyJØéyZ«$éyãØéyëØzóÈ zZ$) zãØ zëØ!zóÈ$zJØ)zZ^)zãØ)zëØAzóÈIzZª-IzãØIzëØazóÈdzJØizZ#±izãØizëØzóȉzZ¼6‰zãØ‰zëØ¡zóȤzJØ©zzÁzóÈÉzzázóÈäzJØézz{óÈ {z!{óÈ!{ãØ!{ëØ${JØ){zI{zd{JØi{z¤{JØ©{zÉ{zä{JØé{z |z$|JØc|z¿”d|Jؤ|JØ©|zÉ|zä|JØé|z }z$}JØ)}zI}zd}JØi}z„}J؉}z©}zÃ}zÉ}zã}ÒØã}êØã}z¸Eé}z ~z#~;¬)~zC~;¬I~zc~;­i~zƒ~;á­‰~z£~;>®©~zÉ~zé~zãØcÒØcêØcz¸Ei‚Ú8‰‚ç8£;S¯©‚Ú8Ã;´¯É‚ç8àãØàëØã;J°€‚ï€;¼° €ãØ €ëØ#€;E±)€ãØ)€ëØ)€óÈC€;ª±I€ãØI€ëØI€óÈi€ãØi€ëØi€óȉ€ã؉€ë؉€óÈ©€ãØ©€ëØ©€óÈÉ€ãØÉ€ëØÉ€óÈé€ãØé€ëØé€óÈ Z! ãØ ëØ ãØ#z)Z«$)ãØ)ëØIZ!IãØIëØiZ«$iãØiëØ€ºADƒz£záóÈáãØáëØ ‚ãØ!‚óÈ!‚ãØ!‚ëØA‚óÈA‚ãØA‚ëØI‚ãØI‚ëØI‚óÈi‚ãØi‚ëØi‚óȉ‚ãØ‰‚ëØ‰‚óÈ©‚ãØ©‚ëØ©‚óÈÉ‚ãØÉ‚ëØÉ‚óÈé‚ãØé‚ëØé‚óÈ ƒãØ ƒëØ ƒóÈ)ƒú-+Iƒú;+`ƒ‚ïiƒúH+€ƒãØ€ƒë؉ƒú\+ ƒãØ ƒëØ£ƒâØ£ƒzÀƒãØÀƒëØÃzC„z¿”a„óÈa„ãØa„ëØ£„z¿”Äz¿”ã„z¿”…z¿”!…óÈ!…ãØ!…ëØ#…z¿”C…zá…óÈá…ãØá…ëØA†óÈA†ãØA†ëØ)ˆzIˆziˆz‰ˆz©ˆzɈzéˆz ‰z)‰zC‰š›ÛC‰ÊØC‰zI‰zc‰š›Ûc‰zi‰z‰‰z©‰zɉzã‰ÒØã‰êØã‰z$Mé‰zŠz¿” Šz)ŠzAŠbØIŠz‹š›Û‹ÊØ‹zƒ‹š›Ûƒ‹z‰‹z©‹zÉ‹zã‹ÒØã‹êØã‹z$Mé‹zŒz¿” ŒzIŒziŒzáŒóÈáŒãØáŒëØš›ÛÊØz!óÈ!ãØ!ëØ#š›Û#ÊØ#z@ãØAóÈAãØAëØIb‹[Iz`ãØcš›ÛcÊØczib‹[izƒz‰b‹[‰z£z¿”©b‹[©zÁóÈÁãØÁëØÃz¿”Éb‹[Ézãz¿”ézŽz¿”#Žz¿”@ŽzØAŽóÈAŽãØAŽëØCŽz¿”`ŽzØcŽz¿”ƒŽz¿”ÃŽš›ÛÃŽÊØÃŽzáŽóÈáŽãØáŽëØš›ÛÊØz£ÊØ£š›Û£zƒ‘z¿”’óÈ’ãØ’ëØ!’óÈ!’ãØ!’ëØA’óÈA’ãØA’ëØC’z¿”a’óÈa’ãØa’ëØc’z¿”’óÈ’ãØ’ëØƒ’z¿”¡’óÈ¡’ãØ¡’ëØ£’z¿”£“z¿”Óz¿”ƒ”z¿”¡”óÈ¡”ãØ¡”ëØ£”z¿”Ôz¿”ã”ÊØã”z• Ø•êØ•ÒØ•z6#•z¿”C•z¿”c•z¿”ƒ•ÒØƒ•êØƒ•z¸E¡•óÈ¡•ãØ¡•ëØÁ•óÈÁ•ãØÁ•ëØ–óÈ–ãØ–ëØ–z6#–:Ø#–z6C–:ØC–z6a–óÈa–ãØa–ëØ–óÈ–ãØ–ëØÖz¿”A—óÈA—ãØA—ëØC—z¿”a—óÈa—ãØa—ëØc—z¿”ƒ—z£—ÒØ£—êØ£—z¸Eã—;|˜;Ä#˜; £˜z6Øz6#™:Ø#™z6C™z6£™zÙz¿”ã™:Øã™z6šÒØšêØšz¸ECšBØCšz6cšz¿”ƒšz¿”£šz¿”Úz¿”ãšz¿”›z¿”C›z¿”c›z¿”ƒ›:؃›z6£›:Ø£›z6À›Êa‚Á›óÈÛz¿”à›Ê•‚á›óȜʃœóÈœz¿” œÊ\ƒ!œóÈ#œz@œÊfƒAœóÈAœãØAœëØCœz¿”`œÊyƒcœz€œÊ‰ƒƒœz¿” œÊ»ƒ£œz¿”ÀœÊփÜz¿”àœÊC„ãœz¿”ÊW„ Ê`„#š›Û#z@ʇ„`ʸ„cš›ÛcÊØcz€Êø„óÈãØëØ Ê5…¡óÈ¡ãØ¡ëØÀÊu…ÁóÈÁãØÁëØàÊå…áóÈáãØáëØžÊï…žóÈžãØžëØ žÊC†#žz@žÊX†Cžz`žÊȆažóÈažãØažëØcžz€žÊ冞óÈžãØžëØ žÊa‡£žâØ£žzÀžÊ›‡Ãžz¿”àžÊ臟ʈŸâØŸz ŸÊyˆ@ŸÊ݈AŸóÈAŸãØAŸëØ`ŸÊ!‰€ŸÊЉŸóÈŸãØŸëØ ŸÊΉÀŸÊ@ŠÁŸóÈÁŸãØÁŸëØàŸÊŒŠáŸóÈáŸãØáŸëØãŸz Ê⊠z6  Ê.‹# BØ# z6@ ÊŒC z6` Êc z6€ ÊŽƒ B؃ z6  ÊkŽ£ BØ£ z6ã z¿”¡z¿”C¡z¿”c¡z¿”£¡z¿”áz¿”¢z¿”#¢z¿”c¢z¿”ƒ¢z¿”âz¿”ã¢z¿”#£z¿”C£z¿”ƒ£z¿”££z¿”ã£z¿”¤z¿”C¤z¿”c¤z¿”ƒ¤z¿”£¤z¿”äz¿”ã¤z¿”¥z¿”#¥z¿”C¥z¿”c¥z¿”ƒ¥z¿”£¥z¿”Ã¥z¿”ã¥z¿” ¦zØ@¦zØC¦z6€¦ŠŸ ¦Šû‘à¦ãØ§Š’ §Š­’@§ŠÌ’`§ºAD`§Šò’€§ºAD€§Šÿ’ §Š'“À§Š3“à§Š@“¨ŠM“@¨Šh“`¨Š{“c¨z6€¨ŠŽ“ ¨Š “À¨Š“ਊÚ“á¨óÈá¨ãØá¨ëØ©Š”©z6£©z6Cªz6#«z6ëz6¬óÈ¬ãØ¬ëØ!¬óÈ!¬ãØ!¬ëØc¬z6Á¬óÈÁ¬ãØÁ¬ëØ­z6­óÈ­ãØ­ëØ¡­óÈ¡­ãØ¡­ëØ£­z6à­ºADà­ŠŒ–®ºAD®ŠŒ–!®óÈ!®ãØ!®ëØA®óÈA®ãØA®ëØC®z6Á®óÈÁ®ãØÁ®ëØ஺ADá®óÈá®ãØá®ëدóÈ¯ãØ¯ëØ€¯ºADc°z6à°ãØà°ëرz6£±z6á±óÈá±ãØá±ëØ@²ºADC²z6 ²ºADã²z6³óÈ³ãØ³ëØ!³óÈ!³ãØ!³ëØa³óÈa³ãØa³ë؃³z6À³ºADÁ³óÈÁ³ãØÁ³ëØ´óÈ´ãØ´ëØ!´óÈ!´ãØ!´ëØ#´z6´óÈ´ãØ´ëØ¡´óÈ¡´ãØ¡´ëØôz6µóÈµãØµëØ!µóÈ!µãØ!µëØAµóÈAµãØAµëØaµóÈaµãØaµëØcµz6 µºAD¶z6¡¶óÈ¡¶ãØ¡¶ëØÁ¶óÈÁ¶ãØÁ¶ëØá¶óÈá¶ãØá¶ëØã¶z·ãØ·óÈ·ãØ·ëØ·z#·z@·ãØC·za·óÈa·ãØa·ëØc·z6·óÈ·ãØ·ëØƒ·z¡·óÈ¡·ãØ¡·ëØ£·BØ£·z6Á·óÈÁ·ãØÁ·ëØã·z¿”¸Bظz6C¸z¿”c¸z¿”ƒ¸B؃¸z6£¸z¿”øz¿”ã¸z¿”#¹BØ#¹z6c¹z¿”ƒ¹z¿”£¹z¿”ùz¿”ã¹zºz¿”#ºz¿”Cºz¿”cºz¿”ƒºz¿”£ºz¿”úz¿”ãºz¿”»z¿”#»z¿”C»z¿”c»z¿”ƒ»z¿”£»z¿”ûz¿”ã»z¿”¼z¿”!¼óÈ!¼ãØ!¼ëØ#¼z6A¼óÈA¼ãØA¼ëØC¼z¿”c¼z¿”¼óÈ¼ãØ¼ëØƒ¼z6¡¼óÈ¡¼ãØ¡¼ëØ£¼z6üz6½óÈ½ãØ½ëØ½JØ!½óÈ3½JØA½óÈa½óÈs½JØ¡½óÈ¡½ãØ¡½ëØ£½z6³½JØÓ½JØྺAD¿óÈ¿ãØ¿ëØ¡¿óÈ¡¿ãØ¡¿ëØÁ¿óÈÁ¿ãØÁ¿ëØÀóÈÀãØÀëØÀz6!ÀóÈ!ÀãØ!ÀëØAÀóÈAÀãØAÀëØaÀóÈaÀãØaÀëØÀóÈÀãØÀëØ¡ÀóÈ¡ÀãØ¡ÀëØÁÀóÈÁÀãØÁÀëØáÀóÈáÀãØáÀëØÁóÈÁãØÁëØ!ÁóÈ!ÁãØ!ÁëØAÁóÈAÁãØAÁëØaÁóÈaÁãØaÁëØÁóÈÁãØÁëØ¡ÁóÈ¡ÁãØ¡ÁëØÁÁóÈÁÁãØÁÁëØáÁóÈáÁãØáÁëØÂóÈÂãØÂëØƒÂz6¡ÂóÈ¡ÂãØ¡ÂëØÁÂóÈÁÂãØÁÂëØáÂóÈáÂãØáÂëØÃóÈÃãØÃëØ!ÃóÈ!ÃãØ!ÃëØAÃóÈAÃãØAÃëØaÃóÈaÃãØaÃëØÃóÈÃãØÃëØ¡ÃóÈ¡ÃãØ¡ÃëØÀúADÁÃóÈÁÃãØÁÃëØáÃóÈáÃãØáÃëØÄóÈÄãØÄëØ!ÄóÈ!ÄãØ!ÄëØAÄóÈAÄãØAÄëØàĺADãÄz6źAD!ÅóÈ!ÅãØ!ÅëØAÅóÈAÅãØAÅëØaÅóÈaÅãØaÅëØÅóÈÅãØÅëØ¡ÅóÈ¡ÅãØ¡ÅëØÁÅóÈÁÅãØÁÅëØáÅóÈáÅãØáÅëØÆóÈÆãØÆëØ!ÆóÈ!ÆãØ!ÆëØCÇzcÇz6ƒÇz¿” ÇºAD¡ÇóÈ¡ÇãØ¡ÇëØ£Çz¿”ÁÇóÈÁÇãØÁÇëØÃÇz6àÇãØáÇóÈáÇãØáÇëØãÇz6ÈãØÈz6#ÈzAÈóÈAÈãØAÈëØCÈz6aÈóÈcÈzÈóȃÈz¡ÈóÈ£ÈzÁÈóÈÁÈãØÁÈëØÃÈz!ÉóÈ#Éz¿”AÉóÈaÉóÈcÉz¿”ÉóÈ¡ÉóÈÁÉóÈáÉóÈÊóÈ!ÊóÈ!ÊãØ!ÊëØCÊzáËóÈÌóÈ!ÌóÈAÎóÈAÎãØAÎëØaÎóÈaÎãØaÎëØ ÎºAD¡ÎóÈ¡ÎãØ¡ÎëØÀκÅ¿ÁÎóÈÁÎãØÁÎëØÏóÈÏãØÏëØ!ÏóÈ!ÏãØ!ÏëØ`ÏãØaÏóÈaÏãØaÏëØ€ÏãØÏóÈÏãØÏëØ ÏãØÀÏãØÁÏóÈÁÏãØÁÏëØàÏãØáÏóÈáÏãØáÏëØÐãØ к‹Ð!ÐóÈ!ÐãØ!ÐëØ@к‹ÐAÐóÈAÐãØAÐëØ€ÐºÑÐóÈÐãØÐëØ ÐºÚÑ¡ÐóÈ¡ÐãØ¡ÐëØÀкÚÑàкADáÐóÈáÐãØáÐëØóÐJØѺÅ¿ÑJØÑRØ ѺAD3ÑJØAÑóÈAÑãØAÑëØSÑJØSÑRØ`ѺADsÑJ؀ѺAD“ÑJØ“ÑRØ¡ÑóÈ¡ÑãØ¡ÑëØ³ÑJØÓÑJØÓÑRØóÑJØÒóÈÒãØÒëØÒJØÒRØ3ÒJØ3ÒRØSÒJØaÒóÈaÒãØaÒëØsÒJØÒóÈÒãØÒëØ“ÒJØ“ÒRØÁÒóÈÁÒãØÁÒëØáÒóÈáÒãØáÒëØ!ÓóÈ!ÓãØ!ÓëØAÓóÈAÓãØAÓëØÓóÈÓãØÓëØ¡ÓóÈ¡ÓãØ¡ÓëØáÓóÈáÓãØáÓëØÔóÈÔãØÔëØ!ÔóÈ!ÔãØ!ÔëØAÔóÈAÔãØAÔëØaÕóÈaÕãØaÕëØÕóÈÕãØÕëØ¡ÕóÈ¡ÕãØ¡ÕëØÁÕóÈáÕóÈÖóÈ!ÖóÈ!ÖãØ!ÖëØAÖóÈAÖãØAÖëØaÖóÈaÖãØaÖëØÖóÈÖãØÖëØ ÖãØ ÖëØÀÖãØÀÖëØ!×óÈ!×ãØ!×ëØA×óÈA×ãØA×ëØa×óÈa×ãØa×ëØÁ×óÈÁ×ãØÁ×ëØ!ØóÈ!ØãØ!ØëØAØóÈAØãØAØëØaØóÈaØãØaØëØØóÈØãØØëØ¡ØóÈ¡ØãØ¡ØëØÁØóÈÁØãØÁØëØáØóÈáØãØáØëØ!ÙóÈ!ÙãØ!ÙëØAÙóÈAÙãØAÙëØÙóÈÙãØÙëØ¡ÙóÈ¡ÙãØ¡ÙëØÁÙóÈÁÙãØÁÙëØáÙóÈáÙãØáÙëØÚóÈÚãØÚëØ!ÚóÈ!ÚãØ!ÚëØAÚóÈAÚãØAÚëØaÚóÈaÚãØaÚëØÚóÈÚãØÚëØ¡ÚóÈ¡ÚãØ¡ÚëØÁÚóÈÁÚãØÁÚëØAÛóÈAÛãØAÛëØaÛóÈaÛãØaÛëØÛóÈÛãØÛëØ¡ÛóÈ¡ÛãØ¡ÛëØÁÛóÈÁÛãØÁÛëØÜóÈÜãØÜëØ!ÜóÈ!ÜãØ!ÜëØaÝóÈaÝãØaÝëØÝóÈÝãØÝëØ¡ÝóÈ¡ÝãØ¡ÝëØÁÝóÈÁÝãØÁÝëØáÝóÈáÝãØáÝëØÞóÈÞãØÞëØ ÞãØ ÞëØ!ÞóÈ!ÞãØ!ÞëØ@Þ‚ïAÞóÈAÞãØAÞëØ`ÞãØ`ÞëØaÞóÈaÞãØaÞëØ€Þ‚ ÞãØ ÞëØÀÞ‚ñ!ÁÞóÈÁÞãØÁÞëØàÞãØàÞëØáÞóÈáÞãØáÞëØßãØßëØßóÈßãØßëØ!ßóÈ!ßãØ!ßëØ@ßãØ@ßëØAßóÈAßãØAßëØ`ßãØ`ßëØ€ßãØ€ßëØ ßãØ ßëØ¡ßóÈ¡ßãØ¡ßëØÀßãØÀßëØÁßóÈÁßãØÁßëØàßãØàßëØáßóÈáßãØáßëØàãØàëØàóÈàãØàëØ àãØ àëØ!àóÈ!àãØ!àëØ@àãØ@àëØAàóÈAàãØAàëØ`àãØ`àëØaàóÈaàãØaàëØ€àãØ€àëØ àãØ àëØÀàãØÀàëØààãØààëØáàóÈáàãØáàëØáãØáëØáóÈáãØáëØ áãØ áëØ@áãØ@áëØ`áãØ`áëØ€áãØ€áëØ áãØ áëØááóÈááãØááëØâóÈâãØâëØ!âóÈ!âãØ!âëØAâóÈAâãØAâëØaâóÈaâãØaâëØâóÈâãØâëØ¡âóÈ¡âãØ¡âëØÁâóÈÁâãØÁâëØáâóÈáâãØáâëØãóÈããØãëØ!ãóÈ!ããØ!ãëØAãóÈAããØAãëØaãóÈaããØaãëØaäóÈaäãØaäëØäóÈäãØäëØ¡äóÈ¡äãØ¡äëØÁäóÈÁäãØÁäëØáäóÈáäãØáäëØåóÈåãØåëØ!åóÈ!åãØ!åëØAåóÈAåãØAåëØaåóÈaåãØaåëØåóÈåãØåëØ¡åóÈ¡åãØ¡åëØÁåóÈÁåãØÁåëØáåóÈáåãØáåëØæóÈæãØæëØAæóÈaæóÈæóÈ¡æóÈÁæóÈáæóÈçóÈ!çóÈAçóÈaçóÈçóÈ¡çóÈ¡çãØ¡çëØÁçóÈáçóÈèóÈèãØèëØaéóÈaéãØaéëØ!ìóÈAìóÈaìóÈìóÈ¡ìóÈÁìóÈáìóÈíóÈ!íóÈAíóÈ`íºADaíóÈíóÈ¡íóÈÁíóÈáíóÈîóÈ!îóÈAîóÈaîóÈîóÈ¡îóÈÁîóÈáîóÈïóÈïãØïëØAðóÈaðóÈ`ñºAD ñºAD!òóÈAòóÈ€òºADõãØõëØ õ‚ï@õãØ@õëØ`õ‚€õãØ€õëØ õ‚ñ!ÀõãØÀõëØàõ‚á%öãØöëØ ö‚´*@öãØ@öëØ`öãØ`öëØ€öãØ€öëØ öãØ öëØÀöãØÀöëØàöãØàöëØ÷ãØ÷ëØ ÷ãØ ÷ëØ@÷ãØ@÷ëØ`÷ãØ`÷ëØ€÷ãØ€÷ëØ ÷ãØ ÷ëØÀ÷ãØÀ÷ëØà÷ãØà÷ëØøãØøëØ øãØ øëØ@øãØ@øëØ`øãØ`øëØ€øãØ€øëØ øãØ øëØÀøãØÀøëØàøãØàøëØùãØùëØùóÈùãØùëØ ùãØ ùëØ!ùóÈ!ùãØ!ùëØAùóÈAùãØAùëØaùóÈaùãØaùëØÁúóÈÁúãØÁúëØáúóÈáúãØáúëØûóÈûãØûëØ¡ûóÈ¡ûãØ¡ûëØaüóÈaüãØaüëØüóÈüãØüëØÀüãØÀüëØàüãØàüëØ ýºADaýóÈaýãØaýëØýóÈýãØýëØ ýãØ ýëØaÿóÈaÿãØaÿëØÿóÈÿãØÿëØ¡ÿóÈ¡ÿãØ¡ÿëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØ!óÈ!ãØ!ëØAóÈAãØAëØÁóÈÁãØÁëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØáóÈáãØáëØóÈãØëØóÈãØëØ!šÈd²Ø„²Ø$²ØD²Ø„²Ø¡óÈ¡ãØ¡ëØ! óÈ! ãØ! ëØA óÈA ãØA ëØa óÈa ãØa ëØ óÈ ãØ ëØ¡ óÈ¡ ãØ¡ ëØ óÈ ãØ ëØ` ºADa óÈa ãØa ëØ€ º óÈ ãØ ëØ  º‹Ð¡ óÈ¡ ãØ¡ ëØÀ ºADÁ óÈÁ ãØÁ ëØa šÈ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØóÈãØëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØáóÈáãØáëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØóÈãØëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØ!óÈ!ãØ!ëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØAóÈAãØAëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØáóÈáãØáëØaóÈaãØaëØóÈãØëØ¡óÈ¡ãØ¡ëØÁóÈÁãØÁëØáóÈáãØáëØóÈãØëØ ŠÕ@Š`Š2€ŠaóÈãØëØ Š‘¡óÈ¡ãØ¡ëØÀŠ¿ÁóÈÁãØÁëØÄ²ØàŠÉáóÈáãØáëØŠøóÈãØëØ Š(!óÈ!ãØ!ëØ@ŠW`Ї€Š¸ Šî¡óÈ¡ãØ¡ëØÀŠ(ÁóÈÁãØÁëØàŠbáóÈáãØáëØŠ“óÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºAD€ºAD ºADÀºADÁóÈÁãØÁëØàºADáóÈáãØáëØºADóÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºADaóÈaãØaëØ€ºAD ºADÀºADàºADáóÈáãØáëØºADóÈãØëØ ºAD!óÈ!ãØ!ëØ@ºADAóÈAãØAëØ`ºADaóÈaãØaëØ€ºADóÈãØëØ ºADÀºADàºAD ºAD óÈ ãØ ëØ ºAD! óÈ! ãØ! ëØ@ ºADA óÈA ãØA ëØ` ºADa óÈa ãØa ëØ€ ºAD óÈ ãØ ëØ  ºAD¡ óÈ¡ ãØ¡ ëØÀ ºADÁ óÈÁ ãØÁ ëØà ºADá óÈá ãØá ëØ!ºAD!óÈ!ãØ!ëØ !ºAD!!óÈ!!ãØ!!ëØA!óÈA!ãØA!ëØ`!ºAD`!Šƒ€!ãØ !ºAD !ŠçÀ!ºADÀ!ŠÁ!óÈÁ!ãØÁ!ëØà!ºADà!Šaá!óÈá!ãØá!ëØ"º‹Ð"Џ"óÈ"ãØ"ëØ "ºAD "ŠÛ!"óÈ!"ãØ!"ëØ@"ºAD@"ŠùA"óÈA"ãØA"ëØ`"Š0 a"óÈa"ãØa"ëØ€"ºAD€"Šl "óÈ"ãØ"ëØ "ºAD "Šò ¡"óÈ¡"ãØ¡"ëØÁ"óÈÁ"ãØÁ"ëØá"óÈá"ãØá"ëØa#óÈa#ãØa#ëØ#óÈ#ãØ#ëØ¡#óÈ¡#ãØ¡#ëØÁ#óÈÁ#ãØÁ#ëØá#óÈá#ãØá#ëØ$óÈ$ãØ$ëØ¡$óÈ¡$ãØ¡$ëØÁ$óÈÁ$ãØÁ$ëØá$óÈá$ãØá$ëØ%óÈ%ãØ%ëØ!%óÈ!%ãØ!%ëØá%óÈá%ãØá%ëØ&óÈ&ãØ&ëØ!&óÈ!&ãØ!&ëØA&óÈA&ãØA&ëØ¡&óÈ¡&ãØ¡&ëØ!'óÈ!'ãØ!'ëØA'óÈA'ãØA'ëØa'óÈa'ãØa'ëØ'óÈ'ãØ'ëØ¡'óÈ¡'ãØ¡'ëØÁ'óÈÁ'ãØÁ'ëØá'óÈá'ãØá'ëØ(óÈ(ãØ(ëØA(óÈA(ãØA(ëØa(óÈa(ãØa(ëØ¡(óÈ¡(ãØ¡(ëØÁ(óÈÁ(ãØÁ(ëØ)óÈ)ãØ)ëØ )ºAD )Šƒ!)óÈ!)ãØ!)ëØ@)ºAD@)Š`)ºAD`)Šaa)óÈa)ãØa)ëØ€)ºAD€)Šç)óÈ)ãØ)ëØ )º‹Ð )Џ¡)óÈ¡)ãØ¡)ëØÀ)ºADÀ)ŠÛÁ)óÈÁ)ãØÁ)ëØà)Š0 *ºAD*Šl *óÈ*ãØ*ëØ *ºAD *Šò !*óÈ!*ãØ!*ëØa*óÈa*ãØa*ëØ*óÈ*ãØ*ëØÁ*óÈÁ*ãØÁ*ëØá*óÈá*ãØá*ëØ!+óÈ!+ãØ!+ëØA+óÈA+ãØA+ëØ+óÈ+ãØ+ëØ¡+óÈ¡+ãØ¡+ëØá+óÈá+ãØá+ëØ,óÈ,ãØ,ëØ!,óÈ!,ãØ!,ëØA,óÈA,ãØA,ëØa,óÈa,ãØa,ëØ,óÈ,ãØ,ëØ ,ºAD¡,óÈ¡,ãØ¡,ëØÀ,ºADÁ,óÈÁ,ãØÁ,ëØ-óÈ-ãØ-ëØ!-óÈ!-ãØ!-ëØa-óÈa-ãØa-ëØ-óÈ-ãØ-ëØÁ-óÈÁ-ãØÁ-ëØá-óÈá-ãØá-ëØ!.óÈ!.ãØ!.ëØA.óÈA.ãØA.ëØ.óÈ.ãØ.ëØ¡.óÈ¡.ãØ¡.ëØá.óÈá.ãØá.ëØ/óÈ/ãØ/ëØA/óÈA/ãØA/ëØa/óÈa/ãØa/ëØ¡/óÈ¡/ãØ¡/ëØÁ/óÈÁ/ãØÁ/ëØà/ºÈ@à/Ї-0ºAD0ŠÇ-0óÈ0ãØ0ëØ!0óÈ!0ãØ!0ëØa0óÈa0ãØa0ëØ0óÈ0ãØ0ëØ¡0óÈ¡0ãØ¡0ëØÁ0óÈÁ0ãØÁ0ëØA4óÈA4ãØA4ëØa4óÈa4ãØa4ëØ4óÈ4ãØ4ëØÁ4óÈÁ4ãØÁ4ëØá4óÈá4ãØá4ëØ!5óÈ!5ãØ!5ëØA5óÈA5ãØA5ëØ`5ºn0`5Š0€5ºAD€5Š05óÈ5ãØ5ëØ 5ºn0 5ŠÇ0¡5óÈ¡5ãØ¡5ëØÀ5ºADà5ºADà5Šë0á5óÈá5ãØá5ëØ6ºAD6Š16óÈ6ãØ6ëØA6óÈA6ãØA6ëØa6óÈa6ãØa6ëØ¡6óÈ¡6ãØ¡6ëØÁ6óÈÁ6ãØÁ6ëØ7óÈ7ãØ7ëØ!7óÈ!7ãØ!7ëØa7óÈa7ãØa7ëØ7óÈ7ãØ7ëØá7ªØ!8b‹[!8óÈA8b‹[A8óÈa8b‹[a8óÈ8b‹[8óÈ¡8b‹[¡8óÈÁ8óÈá8óÈ9óÈ!9óÈA9óÈa9óÈ9óÈ¡9óÈÁ9óÈá9óÈ:óÈ!:óÈA:óÈa:óÈ:óÈ¡:óÈÁ:óÈá:óÈ;óÈ!;óÈA;óÈa;óÈ;óÈ¡;óÈÁ;óÈá;óÈá;ãØá;ëØA=óÈa=óÈa=ãØa=ëØ?º‹Ð€?ãØ ?ãØÀ?ãØà?ãØGº¹9 Gº¹9@GºADÀGºADàGºADHºAD HºAD@HºAD HºADÀHºADàHºADIºAD IãØ IëØ@I‚ï`IãØ`IëØ€I‚ IãØ IëØÀI‚ñ!àIãØàIëØJãØJëØ JãØ JëØ@JãØ@JëØ`JãØ`JëØ€JãØ€JëØ JãØ JëØÀJãØÀJëØàJãØàJëØKãØKëØ KãØ KëØ@KãØ@KëØ`KãØ`KëØ€KãØ€KëØUãØ@UãØVãØ VãØ`t¢Ø`tªØ`tŠÝV€t¢Ø€tªØ€tŠîV t¢Ø tªØ tºAD tŠÛÀt¢ØÀtªØÀtºADÀtŠWàt¢ØàtªØàtº‹ÐàtŠŸu¢ØuªØuŠ'W u¢Ø uªØ uºAD uŠ9W@u¢Ø@uªØ@uŠJW uŠúXÀuŠLYàuŠxYvЬY vŠàY@vŠZ`vŠFZ€vŠkZ vŠZÀvŠÐZàvŠúZwŠ-[ wŠ^[@wŠ‘[`wŠÄ[àwŠÉ\xŠù\ xŠE]@xŠV]`xŠð]€xŠ^ xŠ:^ÀxŠi^€zãØ€zëØ zãØ zëØàzºAD€{Šù` {Š5aÀ{Šnaà{Š’a|Šña |Š)b@|ŠVb`|Š›b€|Šßb |Š6cÀ|Šycà|йc}Šãc }Š d@}ŠºAD>Š¯ß >º‹Ð >Šâ@>ºAD@>Šç`>ºAD`>Šõå€>º‹Ð€>ŠJæ >ŠûýÀ>ºADÀ>ŠÌà>ºADà>ŠkÌ?ºAD?Š’Ë ?ºAD ?Šå…@?ºAD@?ŠØþ`?Š–½€?ŠŒà ?ŠÁßÀ?º‹ÐÀ?Š ¿à?ºADà?Šé @ºAD @Šíà@@ºAD@@ŠËà€@º‹Ð€@Ь @Š{¿À@Š´¿à@Š•¿AŠο AŠÒ½@AºAD@AŠN`AŠ0 €Aº‹Ð€AЏÀAºADÀAбêBºADBŠìê BãØ@BºAD@BŠÙ€BãØ BãØÀBйàBŠÌCºADCŠ) CŠ|@CºAD@CŠü`CºAD`CŠlê€CŠxê CºAD CŠcÀCŠ8ëàCºADàCŠˆDгë DºAD DŠè‡@DŠfë`DºAD`DŠC†€DŠë DºAD DŠX†ÀDºADÀDŠ-àDºADàDŠDEºADEŠ~ Eº‹Ð EŠ ä@Eº‹Ð@EŠþã`EŠ`„€EŠ\ƒ EŠyƒÀIãØÀIëØàIãØàIëØÀKãØÀKëØàKãØàKëØ€LãØ€LëØ LãØ LëØ@MãØ@MëØ`MãØ`MëØNãØNëØ NãØ NëØ€PãØ€PëØ PãØ PëØ@QãØ@QëØ`QãØ`QëØ@SãØ@SëØ`SãØ`SëØTãØTëØ TãØ TëØÀTãØÀTëØàTãØàTëØ Uº‹Ð@Uº‹ÐÀUºAD@VºAD`VºAD€Vº‹Ð@XãØ@XëØ`X‚ï€XãØ€XëØ_ãØ_ëØ _‚ï@_ãØ@_ëØ`_‚€_ãØ€_ëØ _‚ñ!À_ãØÀ_ëØà_ãØà_ëØ`ãØ`ëØ `ãØ `ëØ@`ãØ@`ëØ``ãØ``ëØ€`ãØ€`ëØ `ãØ `ëØÀ`ãØÀ`ëØà`ãØà`ëØaãØaëØ aãØ aëØeºAD eºAD@eºAD`eº‹Ð eºADàeºADfºAD@fºAD`fãØgº‹Ð gºADàhãØàhëØi‚ï iãØ iëØ@i‚`iãØ`iëØ€i‚ñ! iãØ iëØÀiãØÀiëØÀsºAD`uŠW€uŠ5 uŠAÀuŠ»ƒàuº‹ÐàuŠ ¿vº‹ÐvŠ4¿ vºAD vŠC„@vºAD@vŠ¡¾`vºAD`vŠm¾€vºAD€vŠƒ vºAD vŠûÀvŠοàvŠ´¿wŠëÜ wŠøÜ@wŠ2 `wŠ= €wº‹Ð€wŠW wºI wŠŸÀwºADÀwŠDÝàwºIàwе xº¹9xŠõ  xº¹9 xŠ$!@xº‹Ð@xŠ“Ý`xº‹Ð`xŠÒÝ€xºAD€xŠm¾ xºAD xŠkßÀxºADÀxŠƒàxºADàxНßyŠá yŠp"@yºŸ"@yŠ&à€zºAD zºADÀzºAD{ºAD {ºAD`{ºAD€{º‹Ð {ºADÀ{ºIà{ºAD|ºI |º‹Ð@|ºAD`|ºAD€|ºADÀ|ºADà|º‹Ð}ºAD }º‹Ð@}ºAD€}ºAD }º‹Ð ~ºI@~ºAD`~ºI€~º‹Ð ~º‹ÐÀ~ºADà~º‹Ð ºI`º‹Ð€ºAD ºIÀº‹Ð@€ºAD`€ºAD€€ºI €º‹ÐÀ€ãØà€ºI º‹Ð@ºAD`Šw*€Š˜* ºÈ@ Š¹*ÀºÈ@ÀŠÌ*àºÈ@àŠÞ*‚ºÈ@‚Šé* ‚ºÈ@ ‚Š+À‚Šk+à‚Š{+ƒŠ+ ƒŠž+`ƒŠº+€ƒŠÐ+ ƒºADÀƒºADàƒºAD„ºAD „ºAD@„ºAD`„ºAD`„Šë+€„ºAD€„Šë „ºAD „ŠfëÀ„Š,à„ºADà„Š,…Š(, …Š5,@…ªØ@…›wJ,@…Š¥,`…ªØ`…в,€…ŠÍ, …Šä,À…Šô,à…Š -†ºAD@†ºAD`†º¥ž€†º- †ºADÀ†ºÅ¿à†ºn0‡ºAD ‡ºAD@‡b`.@‡ºAD`‡ºAD`‡Š^/€‡ªØ ‡ºADÀ‡ªØÀ‡ºADà‡ºADˆªØˆºAD ˆªØ ˆºAD@ˆªØ`ˆªØ`ˆºAD€ˆªØ€ˆºAD ˆªØ ˆºADÀˆªØÀˆºADàˆªØàˆºAD‰ªØ ‰ºAD@‰Š¬/`‰Š¶/€‰ŠÅ/ ‰ªØ ‰ŠÕÀ‰ªØÀ‰Šà‰ªØà‰ŠaŠªØŠŠ2 ŠªØ ŠŠø@ŠªØ@ŠŠÉ`ŠŠ‘€ŠŠ¿ ŠŠë/ÀŠãØÀŠëØàŠãØàŠëØ‹ãØ‹ëØ ‹ãØ ‹ëØ@‹ªØ@‹ŠW`‹ªØ`‹Š(€‹ªØ€‹Š‡ ‹ªØ ‹Š¸À‹ªØÀ‹Šbà‹ªØà‹Š(ŒªØŒŠî ŒŠ30@ŒªØ@ŒŠ“`ŒºAD`ŒŠg0€ŒºAD€ŒŠx0 ŒÂØ ŒŠ‰0ÀŒŠ¥0àŒÂØàŒŠ¹0ÂØŠÍ0 ŠÙ0@ºAD`Šë0€Š1 Š1ÀŠ1àºADŽº‹Ð ŽŠZ1@ŽŠc1`ŽŠm1€ŽŠw1 ŽºAD ŽŠ‹1ÀŽŠ–1àŽŠ 1Š©1 ŠN@Š´1`Š¿1€ŠÉ1 ŠÒ1ÀŠå1àŠï1Šø1 Š2@Š 2`Š2€Š2 ºADÀºADÀŠB2 ’ãØ ’ëØÀ’ãØÀ’ëØ“ãØ “b 3 “º‹Ð@“ãØ`“b 3`“º‹Ð€“ãØ “b 3 “º‹ÐÀ“ãØà“b 3à“º‹Ð”ãØ ”b 3 ”º‹Ð@”ãØ`”b 3`”º‹Ð€”ãØ ”b 3 ”º‹ÐÀ”ãØà”b 3à”º‹Ð•ãØ •b 3 •º‹Ð@•ãØ`•b 3`•º‹Ð€•ãØ •b 3 •º‹ÐÀ•ãØà•b 3à•º‹Ð–ãØ –b 3 –ºI@–ãØ`–b 3`–º¹9€–ãØ –b 3 –ºADÀ–ãØà–b 3à–ºAD—ãØ —b 3 —ºAD@—ãØ`—b 3`—ºAD€—ãØ —b 3 —ºADÀ—ãØà—b 3à—ºAD˜ãØ ˜b 3 ˜ºAD@˜ãØ`˜b 3`˜ºAD€˜ãØ ˜b 3 ˜ºADÀ˜ãØà˜b 3à˜ºAD™ãØ ™b 3 ™ºAD@™ãØ`™b 3`™ºAD€™ãØ ™b 3 ™ºADÀ™ãØà™b 3à™ºADšãØ šb 3@šº‹Ð`šºI€šº¹9 šºÀšº:àšºŸ"›ºÁ: ›º7;@›º‹Ð ›b 3À›b 3à›b 3œb 3 œb 3 œºAD@œb 3`œb 3€œb 3 œb 3Àœb 3àœb 3b 3 b 3@b 3`b 3€b 3 b 3Àb 3àb 3žb 3 žb 3 žºAD€ŸãØà ºAD¡ºADࡺAD¢ºADÀÛºADàÛªØàÛºADÜªØ ÜªØ ÜºAD@ܪØ@ÜŠÕ`ܪØ`ÜŠ€ÜªØ€ÜŠa ÜªØ ÜŠ“ÀܪØÀÜŠ2àܪØàÜŠøÝªØÝŠÉ ÝªØ ÝŠ‘@ݪØ@ÝŠW`ݪØ`ÝŠ(€ÝªØ€ÝŠ( ÝªØ ÝŠîÀÝŠ{+àÝÂØàÝŠVDÞºADÞŠë+ ÞºAD ÞŠeD@ÞŠÙ0 ÞºADÀÞºADàÞºAD€åºAD åºADÀ庋ÐàåºAD溋РæºAD@æºAD`æºAD€æºAD æºADÀæºADàæºAD çºADÀçºADêãØ êãØ@êãØà뺋Ð캋Р캋Ð@캋Ѐ캋ÐÀ캋Ð`íãØ€íãØ íb 3Àíb 3 îbTN îºAD@îºAD€îãØ îbTN îºADàîãØïbTNïºAD@ïãØ`ïbTN`ïºAD ïãØÀïbTNÀïºADÀ bØSÀ ºADà bØS@ ãØ` ãØ€ ºÅ¿` º‹Ð€ º‹Ð  ºADbØSº‹Ð bØS ºAD@bØS@ºAD`bØS`ºAD€bØS€ºAD bØS ºADÀºADàºAD º‹Ð`º‹Ð€ºAD ºADÀãØàºÚÑÀºIàºI@bØS@ºAD`bØS`ºAD€bØS€º‹Ð ãØ ëØºAD€ºAD ºADÀbØSàbØSàºADbØSºAD bØS ºAD@bØS@ºAD`bØS`ºAD€bØS€ºAD bØS º‹ÐÀbØSÀº‹ÐàbØS຋ÐbØSº‹Ð bØS º‹Ð@bØS@º‹Ð`bØS`º‹Ð€bØS€º‹Ð ãØ ëØ@ãØ@ëØ`ãØ`ëØ€ãØ€ëØ ãØ ëØÀb 3àb 3b 3 b 3@b 3`b 3€b 3 b 3Àb 3Àº¹9àºADb 3 ºAD@º‹Ð`º‹Ð€ºI º¹9ÀºàºIº¹9 º:@ºŸ"`º¹9€º ºÁ:Àº7;@bïZ@ºAD`ºAD€b4[€ºAD€Šz[ ºADÀªØàªØ ãØÀãØàãØãØ ãØ@ãØ`ãØ€ãØ ãØÀãØàãØãØ ãØ !ãØ !ëØ@!ãØ@!ëØ`!ãØ`!ëØ€!ãØ€!ëØ !ãØ !ëØÀ!ãØÀ!ëØà!ãØà!ëØ"ãØ"ëØ "ãØ "ëØ@"ãØ@"ëØ`"ãØ`"ëØ€"ãØ€"ëØ "ãØ "ëØÀ"ãØÀ"ëØà"ãØà"ëØ#ãØ#ëØ #ãØ #ëØ@#ãØ@#ëØ`#ãØ`#ëØ€#ãØ€#ëØ #ãØ #ëØÀ#ãØÀ#ëØà#ãØà#ëØ$ãØ$ëØ $ãØ $ëØ@$ãØ@$ëØ`$ãØ`$ëØ€$ãØ€$ëØ $ãØ $ëØÀ$ãØÀ$ëØà$ãØà$ëØ%ãØ%ëØ %ãØ %ëØ@%ãØ@%ëØ`%ãØ`%ëØ€%ãØ€%ëØ %ãØ %ëØÀ%ãØÀ%ëØà%ãØà%ëØ&ãØ&ëØ &ãØ &ëØ@&ãØ@&ëØ`&ãØ`&ëØ€&ãØ€&ëØ &ãØ &ëØÀ&ãØÀ&ëØà&ãØà&ëØ'ãØ'ëØ 'ãØ 'ëØ@'ãØ@'ëØ`'ãØ`'ëØ€'ãØ€'ëØ 'ãØ 'ëØÀ'ãØÀ'ëØà'ãØà'ëØ(ãØ(ëØ (ãØ (ëØ@(ãØ@(ëØ`(ãØ`(ëØ€(ãØ€(ëØ (ãØ (ëØÀ(ãØÀ(ëØà(ãØà(ëØ)ãØ)ëØ )ãØ )ëØ@)ãØ@)ëØ`)ãØ`)ëØ€)ãØ€)ëØ )ãØ )ëØÀ)ãØÀ)ëØà)ãØà)ëØ*ãØ*ëØ *ãØ *ëØ@*ãØ@*ëØ`*ãØ`*ëØ€*ãØ€*ëØ *ãØ *ëØÀ*ãØÀ*ëØà*ãØà*ëØ+ãØ+ëØ +ãØ +ëØ@+ãØ@+ëØ`+ãØ`+ëØ€+ãØ€+ëØ +ãØ +ëØÀ+ãØÀ+ëØà+ãØà+ëØ,ãØ,ëØ ,ãØ ,ëØ@,ãØ@,ëØ`,ãØ`,ëØ€,ãØ€,ëØ ,ãØ ,ëØÀ,ãØÀ,ëØà,ãØà,ëØ-ãØ-ëØ -ãØ -ëØ@-ãØ@-ëØ`-ãØ`-ëØ€-ãØ€-ëØ -ãØ -ëØÀ-ãØÀ-ëØà-ãØà-ëØ.ãØ.ëØ .ãØ .ëØ@.ãØ@.ëØ`.ãØ`.ëØ€.ãØ€.ëØ .ãØ .ëØÀ.ãØÀ.ëØà.ãØà.ëØ/ãØ/ëØ /ãØ /ëØ@/ãØ@/ëØ`/ãØ`/ëØ€/ãØ€/ëØ /ãØ /ëØÀ/ãØÀ/ëØà/ãØà/ëØ0ãØ0ëØ 0ãØ 0ëØ@0ãØ@0ëØ`0ãØ`0ëØ€0ãØ€0ëØ 0ãØ 0ëØÀ0ãØÀ0ëØà0ãØà0ëØ1ãØ1ëØ 1ãØ 1ëØ@1ãØ@1ëØ`1ãØ`1ëØ€1ãØ€1ëØ 1ãØ 1ëØÀ1ãØÀ1ëØà1ãØà1ëØ2ãØ2ëØ 2ãØ 2ëØ@2ãØ@2ëØ`2ãØ`2ëØ€2ãØ€2ëØ 2ãØ 2ëØÀ2ãØÀ2ëØà2ãØà2ëØ3ãØ3ëØ'2?>INR]k¾ A þ! ""&"3"@"I"Ï"Q#‡#î%ý% &&*&3&Ä&Ó&a'¡'/(á*ò*++&+7+H+Y+`+¾+Å/ß/ò/±4Æ4õ4l99'9Ñ9:A:P:·:;,;B;Þ;…<˜<°<Í<©=K@`@i@w@}@@÷@AAHAtAœA'BpB¤BÑBÞB C,CRSRaR³QuRšR×R'S4S‘SýLÈSöSTTTUUVV V)V.V4V™VÂVW/WvWˆWŽW“W˜W¥WÂWYYü[ \F\K\p\ù[‹\Ù\Þ\í\]f`u`Ç]‹jŸj¬jÁjÎjk^ ]çj@jñjkƒ^hiti€i˜iXjjj¤iÒb°i¼iÈiÔigdàiìiøi(jjfdj4jLjw^klÈn^opYp^p±pÄpòpqpCt„t“t0qt¼tu§v4pz:zCzQzVz”zz½zåzF{R{j{{Üz¡{Ø{ê{ö{| |V|ú|{5}A}F}¹}ö}~~W~•~Ý~Gòûø†‡‡‡<‡t‡Í‡÷‡Áލ¸ÆÐÔØç˜‘’’$’)’K’v’ª“¯“[”h”‰”È”×”•+”z•ˆ•¤•»•ò• š šJšêšþš ››—›œNœáœRŒž¦žOŸd¡¡¡¢0¢ö¢Y¤¬¤±¤æ¥§¹§ ©'©a©~ª–« ®e´©´®´µv·L¸Y¸c¸U¹á¹º$ºPº­ºÊºÔºòº »»ì»{¼–¼%½¾*¾8¾’¾ý¾¿ ¿¿¿¿Z¿¡¿ÀºÀ(Á-Á2Á7ÁVÁnÁzÁ†Á¡ÁµÁ¾ÁÊÁ¨Â…ÃIJÄ#ÅÃÅÛÅêÅ%ÆvƌƩÆãÆ9Ç—ÇäÇôÇýÇÈ!ÈçÈ ÐÇÐùРÑïÑ+ÒdÒ¼ÒÊÖ ×ÐÛ,Ü–Ü2ÝQÝY݊ݽÝèÝ5Þ|ÞÃÞßPßœßÖß™1,à¨à¿àëà#á_á~ááàáJâtâ‰â¢âëâVã)ätäÈäÎäKæ\æÂò÷ò$ó`óÆóGô“ô0õnõxõÛõèõöDölövöËöçö˜÷±÷6ø¬øðø§ù‚üÑý þþ%þKþƒþ¤þ ÿlÿ¶ÿÛÿïÿ0br{«õú#+.?DNS\uÐ%•­¸|©¹ßç=Emuš£ÔÜ 3;ck”œÃÒý 8Bow¾Ø Â*!5!@!q!"" "]")#â#‹#$&$r$©$´$â$% %F%[%d%•%Î%ú%u&''Z'º'É'(u(®()¬)µ)*7*/+H+°+¶+)--¯-ê-.8.}.ï.ù./|//ˆ/»/N031Q1s1í12;2s22É2Ú2ß2é2÷23Y3 44)4.474<4­4‰5Ú5²qNq6N6S6l6¥67‰7Ž7¯7Ð7886è718o8™8Ò8Û8ü8$9ƒ9î9<t=­= =<=X=ñ=¦q0>5qz,®>S>?q,i?¸?@Aq+@‹@@¾@Ø@?p©AXB»BC3C=C DìD#DEdEîz…EEGlG9GöGBH­HQI*JDJ“J©JÑJNKoKKÇK:LDLgLLÇLÞL/MÚM\NçMM‹NÃOuQ—PQ‘QŸQÁPªQäQŸA¯RS&S]SØSÿST]TfT‘TÇTUxUVZWkW¸W¬X'Y6YaYˆY–Y¼YÊYðYþY"Z0ZUZyZ‡Z¬ZºZäZ [[H[m[{[¡[´[Ò[ã[?\h\]f]U_°_·_ì_9`š`â`aaJa~a¡a¸ab;blb®bõbcMc‹cÉcõcd‘deCese›eþe|fÖfdgØg/hYh®hýhLiÓiJj[jqjwjj©j¹jÌjÔkëkll*l9lÀl×løl#m˜m¢m¶mnEnrnznÕn%oQo{o®oÕop)p?p’p qHqbq~qŠqžq­qúq"r@rYrrKsˆsÇstt/t@tVthtutÙt©u÷uv$vævwJwÍwäwôw¥x÷y^Rz§zèzòz÷z„{·{ý{|P|Š|”|™|£|Æ|8Ë|Aï|J}~~&~?~¿~5 _ª~‚Á‚ñ‚Iƒ¬„À„… …….…r…w…É…ö…†C†Q†]†‚†°†¾†ÆÓ†Þ†ó†ƒ‡ç‡9ˆOˆ’ˆåˆ7‰M‰úŠ‹ŒiV‹¨‹?Œˆô^jx€Ô‘)‘c‘y‘•‘§‘Ì‘’ ’J’p’Å’Ý’ “²“ä“ñ“2”7”T”Á”̔۔ޔì”õ”-•‰•½••–b–5—R—‹—û­—˜’˜æ˜9™°™Ûð.œ¸œÁœàœQ -\x”ÊÍZÏ]Ï“ÏÚÏÐ(ÐÐkуÑtÒæÒ ÓyÓÞÓ(Ô„Ô ÕÕ"Õ-ÕVÕ³ÕÈÕ,Ö€Ö‹Ö–ÖÃÖ׋×:ØrبؽØXÙwÙ5ÚˆÚÃÚÛËÛÕÛ Ü²ÜTÝjÝlÞwÞÅÞèÞßÖßößIàZàsà˜à­àØà:áVááÅáÒáãáâ:â~â•â¼â×âã.ãlãvã¸ãÄãä0äRäbäÆä×äååCå‚åÎåþåæ_æ™æ¿æçç1ç_çxç¦çµçÿçèTèƒè¶èÏèHéaéÂé%ëJëoë˜ëÀëì!ì%ìcì–ì¾ìæìí1íXízížíï)ïôïýï?ð›ðßðèð ñÀñkò˜òÐòøòzóÄóãó8ôKôvôµôèôöi÷È÷ø3øbø ù:ùeùnùðúû+ûSûsû‚ûþWþÁþâþñþ8ÿeÿ’ÿ$M^½òÒ Sç'¸Ê‹6pŠ×pƒ«ÀÕÁ? ‚ Š Å Î  h µ ¾   8 … Ž Å  F ¶   E Q ° ð FQp¬¿Þéc–Ó ý”¤©Ößê`3<–Àä;rBŸm ƒ­q “Ð4a²9³ððÙú,x¤Ïãƒ¸Ê Ô _!|"7#T#\#‡#µ#ë#.$^$®$ä$%J%‘%¨%Ã%&M&w&¸&'}'ž'(n(ê(ô()Â)*+*/(0P0q0â2ñ2–3¥3è3÷3:4I4Œ4›4Þ4í405?5‚5‘5Ô5ã5&656^6æ7ô7ÿ78888!8,868A8K8O8Z8^8i8m8x8|8‡8‹8–8¦8¼8í8ÿ819X9Ö9h;™;»;â;7@< A*ñKAóRBCV#óCš!2D~DÁDÚDOE^EÒEbFsF‰FZGõHI I=IJ´MÐMúMNÄN OCNfQ.î¼Q9RþuRYT€T”T˜TœTóTøTUPUTU•U®U÷UûUÿUVbVfV¬V±V÷VKWxWWµWßWXX>XaXŒX¿XúXYKYYåY'ZuZÏZÜZn\\\¡\²\#]û]Ô^å^¾_Ñ_ä_÷_ ``0`·`ËaábÇcÜcñcdd0dEdZde]fºgù32ú »-  ! " # $%&()013!4"5#6$7%9):*;+<,=->.?/A4B5C6D7E8F9G:H;I<KBLCMDNEOFPGQHRISJTKULWSXTYUZV[W\X]Y^Z_[`\a]b^c_egfhgihjikjlkmlnmonpoqprqsrtsuwyx{z|Š€‹‚„Ž…†•‡—ˆœ‰¢Š£‹¥¦Žª«¯‘°’¸“¹—¼š½›¾œ¿ŸÄ Å¢Æ£Ç¤È¦Ì§Ï¨Õ©ØªÛ«á¬ä­æ®ñ°ò±ö³û´ýµþ¶·¸¹º» ½<¾=¿>À?Á@ÂBÃCÄDÅEÆFÇGÈHÉIÊJËKÌLÍMÎNÏOÐPÑQÒSÓTÔUÕVÖW×XØZÙ[Ú\Û]Ü^Ý_Þ`ßaàbácâdãeäfågæhçièkélêoëpìqírîtïvðwñ{ò}õö÷ƒù…ú‡û‰üý“þ›ÿ¥±¿ÏÐÑÒÕÜÝ&ßZ²\¶]»^¼_½`ÂaÃŽÄ—ä™ëšì›îœñòžóŸõ ø¯ù°cFdLe`fchdkfogphqirjsktu/€~ƒ‚„ƒ‡‹‰ŽŒ¨©•˜Ûǟî¤ï¨ñ°ò±ó³ô´õµö¶÷·ø¹ùºú»û¼ýÅþÆÿÇÈÊÌÍÎÏÐÒÔ ÕÚ*ÜKúOû_ý¨ÿ¬½ÀÁ Ã Ä Å ÆÉÊÐøÿ"%(*2,C-H.M/R0Y1^2c3h4m5r6ƒ7ˆ89’:—;œ<¡=¦>«?°@ÏAáSäUåVæWíXYZ'[:\AdBiDjRoñO†ñO†ñO†oz†…zh°zÛ¶zÛ¼zÛiøzÛ{Û…{hª{9À{hÜ{Iû{h|†|†|†&|†6|hH|†_|†ñOhÀ{h"~Û0~†8~†¤~h·~Û%†2†•¥ • !•¥ • !·~Û¾†Ë†Ø†•¥ • !•¦$•¥ • !•¦$·~ÛE€†R€†_€†l€†•¥ • !•¦$•)•¥ • !•¦$•)·~Ûý€† ††$†1†•¥ • !•¦$•)•¥-•¥ • !•¦$•)•¥-·~Û܆é†ö†‚†‚†‚†•¥ • !•¦$•)•¥-•ƒ1•¥ • !•¦$•)•¥-•ƒ1·~Û炆ô‚†ƒ†ƒ†ƒ†(ƒ†5ƒ†•¥ • !•¦$•)•¥-•ƒ1•·6•¥ • !•¦$•)•¥-•ƒ1•·6„h$„Û*„ÛÀ{hÎ…¥ ñO¥ ¬yº@ñO¥ †Ä@%†Ä@·~Ûg†üAm††u††|†¥ ІB•†Ûœ†h©†¥ ®†B•!BˆñCȆΈ¥ WŠE¬Š¥ ²Š !¬Š¥ ²Š !ÌŠFÒŠFØŠÛ¬Š¥ ²Š !¬Š¥ ²Š !ÌŠFÒŠFØŠÛg†æFüŠòFOFm††•üF‹Ûˆ·LÓ‹ùL6zùL -M¬Š¥ ²Š«MÌŠ«MÒŠÛ•¥ ¬Š¥ ²Š«MÌŠ«MÒŠÛ•¥ üŠòFO«Mg†žN‹Ûm††4¥ ;¥ J¥ ˆñCû{hG‘®Q·~Û½•ûT½•òU½•W·~Û­–pW¹–†Ç–†Ó–†•Û•Û•Û•Û·~ÛF—†M—†T—†¬Š†²ŠùLÌŠ†¬Š†²Š™YÌŠ†ÒŠ™YØŠ†š—°Y¬Šh²Š.ZÌŠ™Y¬Š†²ŠùLÌŠ†¬Š†²Š™YÌŠ†ÒŠ™YØŠ†š—°Y¬Šh²Š.ZÌŠ™Yª—Ûµ—Ûâ—hö—àZ ˜[é‘[(˜Û3˜Û>˜ÛJ˜ÛT˜†c˜†s˜h[ñOhû{h‹š†Ô®Q•šõ[·~Û[›†f›†p›†}›†¬Šó\²Šù\•q]¬Šq]²ŠÁ]¬Š®Q²ŠÛ¬Šó\²Šù\•q]¬Šq]²ŠÁ]¬Š®Q²ŠÛ·~Ûö››^ü›†œ›^œ† œ›^)œ†4œ›^Aœ†Pœ›^Vœ†^œ†lœ†}œ†œ†œœ†©œ†½œ†Ïœ†㜆õœ† ††2†E†S†j††І—†§›^¯†¹›^ƆÕ›^á†ï›^ø†ž›^ž†ž†,ž›^6ž†Bž›^Ož†^ž›^tž†Œž›^˜ž†¦ž†°ž†•®Q•8a•8a•®Q¬Š®Q²ŠÛ•¼b•¼b•¼b•¼b•Pd•Pd•Pd•Pd•ìe•_f•_f•®Q•®Q•®Q•®Q¬ŠùL²Š®Q•®Q•®Q•8a•8a•®Q¬Š®Q²ŠÛ•¼b•¼b•¼b•¼b•Pd•Pd•Pd•Pd•ìe•_f•_f•®Q•®Q•®Q•®Q¬ŠùL²Š®Q•®QOpjê¤ù\Ô®Q{¨Á]‹Û¼¨ p·~Û©.p*©Ä@B©Ä@úœpr« px«q~«q„«*qZ©“qï« q·~Û•ãqi+¡s›¬¬s´¯†¼¨ pR±ÒzX±ÛX±Ûœ²ÛwŠ¥ ¬Š¥ wŠ¥ }Š !¬Š¥ ²Š !wŠ¥ }Š !ŽŠ¦$¬Š¥ ²Š !ÌŠ¦$wŠ¥ }Š !ŽŠ¦$”Š)¬Š¥ ²Š !ÌŠ¦$ÒŠ)wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1´·6¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1´·6wŠ¥ }Š !ŽŠ¦$”Š)šŠ¥-v—ƒ1´·68´æ€¬Š¥ ²Š !ÌŠ¦$ÒŠ)ØŠ¥-š—ƒ1´·6>´æ€½E¶·há·h ¸h¸Û¸Û¸h ¸h°¸-ŸhÕ¸†í¸†ÿ¸2C»hý¼`½ˆ=¿¥–j¿«–m¿«–w¿«–{¿«–…¿«–‰¿«–“¿«–š¿«–­¿«–·¿«–É¿«–Ó¿«–æ¿«–ð¿°–ÀÝ–Àõ–À°–.ÀÝ–<Àõ–JÀ —]À>—gÀW—qÀ —„À>—ŽÀW—˜À —«À>—½ÀW—ÏÀ —âÀ>—ôÀW—Ár—Á>—!Á£—)Ár—<Á>—DÁ£—LÁr—_Á>—mÁ£—{Áº—ŽÁù—°Áù—¾Áù—ÍÁù—ÚÁù—çÁù—õÁù—Âù—Âù—Âù—,Âù—3Âÿ—A˜Oº—cÂù—sÂù—ƒÂù—”Âù—£Âù—²Âù—ÂÂù—ÒÂù—ãÂù—òÂù—Ãù— Ãÿ— Ø6ú—JÃù—ZÃù—jÃù—{Ãù—ŠÃù—™Ãù—©Ãù—¹Ãù—ÊÃù—ÙÃù—èÃù—ñÃÿ—ûØĺ—Äù—)Äù—9Äù—JÄù—YÄù—hÄù—xÄù—ˆÄù—™Äù—¨Äù—·Äù—ÀÄÿ—ÒĘäÄ=˜øÄd˜Åy˜ Å=˜ Åd˜3Åy˜FÅ=˜ZÅd˜cÅy˜lÅ=˜€Åd˜’Åy˜¤Å=˜¸Åd˜ÃÅy˜ÎÅ=˜âÅd˜öÅy˜ Æ=˜Æd˜(Æy˜2ÆŠ˜Eƨ˜PÆŠ˜WÆŠ˜`ÆÝ–kÆŠ˜tÆŠ˜}ÆÄ˜ÆŠ˜“ÆØ˜§ÆŠ˜¯Æå˜¾ÆŠ˜ÇÆŠ˜ÐÆ>—ÚÆŠ˜ãÆŠ˜ìÆ>—øÆ>—Ç>—Ç>—.Ç>—BÇ>—`Ç>—sÇ>—ÇÝ–™ÇÝ–¢Ç>—°Ç>—¾Çd˜ËÇŠ˜ÔÇŠ˜ÝÇ>—éÇŠ˜òÇŠ˜ûÇ™ ÈŠ˜ÈŠ˜È/™&ÈŠ˜/ÈŠ˜9È/™GÈŠ˜PÈŠ˜ZÈf™{Èf™˜Èf™ºÈf™ÒÈ‘™ìÈf™ Éf™#É‘™HÉ‘™nɲ™}ɲ™–ɲ™¥É²™¾É²™Õɲ™öɲ™ ʲ™.ʲ™>ÊÖ™Qʲ™_ʲ™mʲ™ƒÊ²™™Ê²™§Ê‘™½Ê‘™ÊÊ‘™àÊ‘™óÊ‘™˲™˲™-˲™<Ë‘™M˲™Z˲™l˲™}˲™‰Ë²™–˲™¨Ëf™µËf™ÇËf™Ý˲™ï˲™ý˲™̲™-Ì‘™;Ì‘™H̲™·~Ûxç†ç†‰ç†¬Šß䲊†ÌŠåäÒŠq]ØŠÁ]•Á]•Á]¬Šß䲊†ÌŠåäÒŠq]ØŠÁ]•Á]•Á]iò‰ò„ò¥–£ò¥–Àò”òËò«–Õò«–ßò«–éò«–óò«–ýò«–ó«–ó«–ó«–%ó«–/ó«–9ó«–Có«–Mó«–Wó«–aó«–kó ò{ó”ò…ó¦òó ò—óªòªóªò°óªòÃóªòËó¶òçóù—óó¥–ýó¥–·~Ûhø†tø†ø†ø†šøãù¡ø†•ú¬Š®Q²Šú¬Š®Q²Š®QÌŠû•û•ú¬Š®Q²Šú¬Š®Q²Š®QÌŠû•ûÿ‘ÞýAúÞýVú¥–cúÞýkúäýú«–‰úf™žúf™ªúf™·úf™Æúf™Ðúf™Üúf™çúf™ûúf™ûf™#ûf™:ûf™Lûf™`ûf™|ûf™—ûf™´ûf™Óûf™íûf™ üf™üf™0üf™Eüf™\üf™nüf™‚üf™“üf™¥üf™¿üf™Ñüf™äüf™ÿüf™ýf™(ýf™Fýf™\ýf™pýf™Œýf™ ýf™´ýf™Ðýf™äýf™íýf™öýf™þf™ þf™þf™%þf™1þf™@þf™Pþf™`þf™oþf™þf™þf™žþf™¯þf™Áþf™Öþf™äþf™õþf™ÿf™ÿf™$ÿf™3ÿf™Bÿf™Oÿf™^ÿf™lÿf™|ÿf™Œÿf™œÿf™²ÿf™Ëÿf™âÿf™ûÿf™f™)f™@f™Uf™lf™‚f™šf™²f™Êf™Ûf™ïf™f™f™0f™Ff™\f™qf™ˆf™Ÿf™¶f™Þf™þf™f™-¥–_â–!†æ!`c#†s#ñ7ž#¬8“ª·8½#½8·~Û?%†0~†D%†•¥ •r<•Ä<•¥ •r<•Ä<1+«–8+«–@+«–J+«–Q+«–X+Ì^9Ð^}+Ö^“+ó^ª+_¾+&_Ñ73€Ö7ÛÛ7?€„q]·~Û¬Šß„²ŠÛ·~Û•4…á99‡ä9-ç5?‡0:ÞýC:ÞýAúÞý`:ÞýJ=Þý1+«–\=Þýp=l=rý=†Ô@šã@†¼A¦òÃA²œÉA²œ·~Û¬ŠÛ²ŠÛÌŠž§·~ÛÖE¨ÞE†èE¨üE†ÇF«–ÎF«–-…«–ØF«–·~ÛG†)G†8G†EG†OG¦«XG†cG†•¬¬Š®Q²Š®Q•ᬕ}­•®Q•¬¬Š®Q²Š®Q•ᬕ}­•®Q·~Û4H†AH†XH†fH†yH†ŠHÚ®”H† H†•7¯•®Q•°¬Šh²Š°¬Š®Q²Š°•ùL•7¯•®Q•°¬Šh²Š°¬Š®Q²Š°•ùL J²œJß²Jß²Jß²#Jß²ELµKL̵MÄ@ÇF«–…M«–-…«–ŒM«–•MÞý«MÞý¿MÞýÐMÞýâMÌ^÷Ì^êM ·øM«–ÿM«–N«–N«–N«–N«–(N«–/N«–8N«–?N«–HN«–ON«–XN«–_N«–hN«–oN«–xN¦òN¦òW¦ò BNÊᲆ BkÛᲆñO¥ üŠï·~Û˜`R·~Û´!1¿a†Æa†Îa†•¥ • •¥ • b»bÌV[ %bÝV[ ¾bÕ·~Ûwc@‚c†c@™c†¥c@®c†êh)+óh)+÷hD+iD+m)+ m)+áq†êq†òq¥ áq†êq†òq¥ áq†êq†òq¥ òq !êq†òq¥ êq†7rÏ?7rÏ?7rÏ?7rÏ?7r¿@7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7ríA7rÏ?7rÏ?7rÚB7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7rÏ?7r®CStL€rL˜rL²r L¿rLÎrLÜr'Lêr0Lør9LsBLsKL"sTL1s]L@sfLOsoL_sxLmsL}sŠLñOÅPyÅP7ráP7ráP7rûPQÔQQÔQQÔQQÔQßyÁSìyÆS÷yÆS zLzL1z¦òBzÌSVzÒSZ¦ò¦ò¥¦òȦòè¦òN¦ò—„Ì^´„Ì^Ë„Ì^ä„Ì^ú„Ì^OˆÿiYˆÌ^nˆÌ^€ˆÌ^‘ˆÌ^ªˆÌ^¼ˆÌ^ÒˆÌ^èˆÌ^‰Ì^‰Ì^0‰Ì^D‰Ì^V‰Ì^m‰Ì^ˆ‰Ì^›‰Ì^°‰Ì^ÉÌ^щÌ^܉Ì^ö‰Ì^ŠÌ^ŠÌ^*ŠÌ^<ŠÌ^LŠÌ^`ŠÌ^wŠÌ^–ŠÌ^»ŠÌ^åŠÌ^òŠÌ^‹Ì^‹Ì^/‹Ì^C‹Ì^U‹Ì^e‹Ì^y‹Ì^Š‹Ì^‹Ì^¯‹Ì^ËÌ^Ï‹Ì^à‹Ì^ñ‹Ì^ŒÌ^ŒÌ^ŒÌ^*ŒÌ^;ŒÌ^LŒÌ^^ŒÌ^lŒÌ^}ŒÌ^’ŒÌ^¥ŒÌ^¶ŒÌ^ÄŒÌ^ÙŒÌ^ìŒÌ^þŒÌ^ Ì^$Ì^4Ì^CÌ^ZÌ^lÌ^‰Ì^ªÌ^ÉÌ^åÌ^ŽÌ^ŽÌ^=ŽÌ^QŽÌ^iŽÌ^}ŽÌ^™ŽÌ^¹ŽÌ^ÕŽÌ^îŽÌ^Ì^Ì^'Ì^9Ì^KÌ^\Ì^tÌ^„Ì^™Ì^ªÌ^ÆÌ^ÝÌ^çÌ^ýÌ^Ì^0Ì^EÌ^_Ì^rÌ^€Ì^‘Ì^®Ì^ÔÌ^èÌ^ûÌ^‘Ì^‘Ì^4‘Ì^F‘Ì^U‘Ì^l‘Ì^}‘Ì^‘‘Ì^¨‘Ì^‘Ì^Ù‘Ì^ó‘Ì^’Ì^’Ì^.’Ì^B’Ì^X’Ì^k’Ì^„’Ì^ ’Ì^´’Ì^Ç’Ì^Ú’Ì^î’Ì^“Ì^“Ì^,“Ì^D“Ì^l“Ì^““Ì^¹“Ì^Å“Ì^õ“Ì^ ”Ì^%”Ì^C”Ì^X”Ì^rs12  ( )*,-.2468:!<#;#>%=%@'?'B)A)D+C+F-E-H/G/K1M3N5P7O7R9Q9[;b=_?aAlCnEpGrIzKuMwOyQ„S†UˆWŠYŒ[Ž]˜_‘a“c•e—g¢i¤k¦m¨oªq¬s®u°w¼y³{µ}·¹»ƒÆ…ȇʉÌ‹ÎÐÒ‘Ô“Ö•Ø—æ™Û›Ýߟá¡ã£å¥ð§ò©ô«ö­ø¯ú±ü³þµ·¹»½¿ Á à ÅÇÉËÍ Ï"Ñ$Ó&Õ(×*Ù,Û.Ý0ß2á4ã6å8ç:é>ë?í@ïDñZóYócõbõg÷jùrûsý€ÿyz|~ ‰ Š ‹Œ’ž®³´¶!·#¸%¹'º)¼+½-¿/À1Á3Â5Ã7È9Ì;Í=Ï?ÐAÛCùEúGûIþKMOQSU W Y [ ]_acegi*k+m,oFqHsIuNw{y‹{Ž}—‘’ƒ”…–‡Ÿ‰¡‹¤¦®‘©“«•­—°™±›²´Ÿµ¡¶£·¥¸§¹©»«¼­½¯¿±À³ÁµÃ·Ä¹Å»Æ½Ç¿ÈÁÊÃËÅÌÇÎÉÏËÐÍÑÏÒÑÓÓÔÕÕ×ÖÙ×ÛØÝÙßÛáÝãàåáçâéãëóíìïîñðóòõú÷ûùýûÿýÿ      Y!#%')+ -"/$1&3(5*7,9.;0=2?4A6C8E:G<I>K@MAOBQCSDUEWFYG[H]I_JaLcMeNgOiPkQmRoSqTsVuXw`yb{d}fhiƒk…m‡o‰q‹suw‘y“{•}—™›ƒ…Ÿ‡¡‰£Š¥Œ§Ž©«’­”¯–±—³™µ›·¹Ÿ»¡½£¿¥Á§Ã©Å«Ç­É¯Ë±Í³ÏµÑ·Ó¸Õº×¼Ù½ÛÅÝóß÷áúãåçééëíïñóõ÷ùûý-ÿ0QS\] o q p €ƒ„…†ˆ‰Š‹!Œ#%')‘+’-“/”1•3–5˜7™9š;›=œ?AžCŸE G¡I£K¤M¥O¦Q§S¨U©WªY«[¬]­_®a°c±e²g³i´kµm¶o·q¸s¹uºw»y¼{½}¿ÀÁƒÂ…ÇĉŋÆÇȑɓʕ˗̙͛ÎÕŸ¡£¥¥§§©©««­­¯¯!± ±#³"³%µ$µ'·&·)¹A»I½¿Á‚ÃńDžɆˇ͈ωъӋՌ×ٖۗݘߙášã›åŸç é¡ë¢í£ï¤ñ¥ó¦õ§÷¨ù©ûªý®ÿ¯°±²³ ´ µ ¶½¾¿ÀÁÂÃÄÅ!Æ#Ç%È'É)Ê+Ë-Ì/Í1Î3Ï5Ð7Ñ9Ò;Ó=Ô?ÕAÖC×EØGÙIÚKÛMÜOÝQÞSßUàWáYâ[ã]ä_åaæcçeègéiêkëmìoíqîsïuðwñyò{ó}ôøùƒú…û‡ü‰ý‹þÿ‘“•—™›Ÿ¡ £ ¥ § © «­¯±³µ·¹»½¿ÁÃÅÇÉËÍ Ï!Ñ"Ó#Õ$×%Ù&Û)Ý*ß+á,ã-å.ç/é0ë1í2ï3ñ4ó5õ6÷7ù8û9ý:ÿ;CDEF G H IJKLMNOPQR!S#T%U'V)W+X-Y/Z1[3\5]7^9_;`=a?bAcCdEeGfIgKhMiOjQkSlUmWnYo[p]q_rascøeógõi÷kûmüoýqþsÿuwy{} ƒ … ‡e‰f‹gmn‘o“p•q—r™s›tuŸv¡w£x¥y§z©{«|­}¯~±³€µ·‚¹ƒ»„½…¿ŽÁÃődzɪˬͮϰѱӲյ׷ٸۺݻ߼á¾ãÀåÂçÃéÅëÆíÇïÉñæóçõë÷íùîûïýñÿòóôõö ÷ ø ùúûüýþÿ!#%')+- / 1 3 5 79;=?ACEGIKMOQSUWY[ ]!_"a#c$e%g&i'k(m)o*q+s,u-w.y/{0}123ƒ4…5‡6‰7‹89:‘;“<•=—>™?›@AŸB¡C£D¥E§F©G«H­I¯J±K³LµM·N¹O»P½Q¿RÁSÃTÅcÇè Éô Ë, Í- Ï4 Ñ7 ÓD ÕP ×K ÙM ÛO ÝR ßT áV ãX åZ ç\ éÑ ëÒ íÓ ïÔ ñÕ ó1 õH ÷^ ù_ ûg ýh ÿ¯ ° ± R ^ \ ] h g | } ~ Š ‹ Œ  ä !æ #ê %õ '÷ ) ++ -- //>1O3P5s7p9q;r=~?zA{C|E}GÐIÑKÒMÓOãQØSÚUÜWÞYß[à]â_åaçcèeêgìiîkðmòoóqõs÷uùw yý{ÿ}ƒ…‡ ‰ ‹‘“•—™›Ÿ ¡!£#¥$§&©6«9­:¯;±<³sµt·—¹š»›½œ¿ÁžÃŸÅ Ç¡É¦Ë§ÍÁÏÂÑÃÓÄÕÅׯÙÇÛÈÝÉßÊáËãÌåÍçÎéÏëÐíÑïÓñÔóNõ‚÷€÷ƒùùäûâûåýãý¶ÿ·ÄÃÿù ú ü þ    !#N%H'I)J+K-L/M1V3W5X7Y9•;–=ò?óAõCþEÿGIKMO QSUWÁYä[ï]ú_ace*g5i@kKmnoyq„sušw¥y°{»}ÆÑ9ƒ:…;‡A‰B‹CDE‘F“G•H—I™J›KLŸM¡N£O¥¥§¦©­«°­³¯Â±é³µ9·a¹n»o½ˆ¿‰ÁÃŽÅǹɺ˻ͼϽÑÙÓàÕá×âÙãÛäÝß á ã å ç éëíïñóõ÷ùûýÿ         ! " # $ % & ' ( )! *# +% ,' -) .+ /- 0/ 11 23 35 47 59 6; 7= 8? 9A :C ;E <G =I >K ?M @O AQ BS CU DW EY F[ G] H_ Ia Jc Ke Lg Mi Nk Om Po Qq Rs Su Tw Uy V{ W} X Y Zƒ [… \‡ ]‰ ^‹ _ ` 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à {Å |Ç }É ~Ë Í €Ï Ñ ‚Ó ƒÕ „× …Ù †Û ‡Ý ˆß ‰á Šã ‹å Œç é Žë í ï ‘ñ ’ó “õ ”÷ •ù –û —ý ˜ÿ /z ±z³€HÓ€D±€B³€LÕ€N×€JÙ€FÛTÓX±V³ˆà7ˆØ9ˆâ;ˆî/ˆæ=ˆÚ?ˆèAˆÎ±ˆÌˆäCˆÞEˆÜGˆìIˆêKˆÐMˆÔOˆÖQˆÒS‘x‘z‘v/‘~‘‘€“‘ˆ±‘†³‘|•‘„—‘‚™°Ð/ìúÓö´Óö²ßö°áö®ãö¬å÷ÒÓùþÓ¦ ±¤ ±¢ ³ž   ¤ ‘¦ “¬ ³® ±¢ •ª —¨ ™!Ê 7! 9!Ì ;!Ð =!Ä ?!Ò A!Ø !Ú ±!È E!Î C!Æ G!Ö I!Ô K!º M!¾ O!À Q!¼ S0§ .© ï8 ï6 ï4ÝñD# óP# ÷d# ùpm úx úv útÝû€ û~ û|Ýü„Óýˆ# 7Œ 7Š 7ˆÝ`^Óà¬Ó²‘°“„Ö•„Ô—ãrß"9";%Ó("ÓP!ÓP!ÕP!×P !ÛP!Ù`Ø!Ó`Ô!Õ`Ö!×`Ð!`Ò!Ù©t% ©r%ªz%ªx%«~%³«€%±¬Œ%±¬Š%³± %±±ž%³²¨%š%²²%Ó²®%Õ²°%ײ¬%Ù²ª%Û¶Ê%Ó¶Æ%Õ¶È%×¶Â%[¶Ä%ÙºÚ%ÓÆ &±Æ"&¯É8&ÓÉ4&ÕÉ6&×É2&ÙÉ0&ÛÊ>&±Ê@&¯Î~&ÓÎz&ÕÎ|&×Îv&ÛÎx&ÙÏŠ&Óφ&Õψ&×Ï„&ÙÏ‚&ÛÒ®&ÓÒª&ÕÒ¬&×Ò¨&ÙÒ¦&ÛÖÌ&ÓÖÈ&ÕÖÊ&×ÖÄ&ÛÖÆ&Ùר&Ó×Ô&Õ×Ö&××Ð&Û×Ò&ÙÚî&ÓÚê&ÕÚì&×Úæ&ÛÚè&ÙÛú&ÓÛö&ÕÛø&×Ûò&ÛÛô&ÙÜ'ÓÜ'ÕÜ'×Ü'ÙÜ'ÛÝ'ÓÝ'ÕÝ'×Ý'ÙÝ 'ÛÞ 'ÓÞ'ÕÞ'×Þ'ÛÞ'Ùâ4'äB' ä@'åH' åF'æN' æL'çT' çR'ö)Óò)Õô)×ð)Ùî)Û>*¿@*± T*£ V*±j*©l*±€*¯‚*±–*µ˜*±¬*»®*±Â*ÁÄ*±Ø*ÇÚ*± î*Í ð*±#+Ó#+±& +Ù&"+±)<+ß)>+±+N+³+P+±-`+³-b+±/r+/t+±»ü-Ó»ö-Õ»ú-×»ø-Ù»ô-ÛÐ/ Ð/Ñ/ Ñ/Ò /e!Ó/g!Ô/i!Õ/k!Ö/m!× /o!Ø$/q!Ù(/s!Ú,/u!Û0/w!Ü4/y!Ý8/{!Þb1">d1"?h1"?j1"@n1"@p1" &0@P\n€Ž¢¶ÆÜò4HT`lx„—ž¦­·ÄÍÚâé÷ÿ $-<Wv˜½Éãû0Oi‡›­ÂÛð&6HXrˆš¥ÄÛñ+`k|“¸Øô"18BKT_mvƒ—¡«ºÄíù"5?KgŽš©µ½ÅÌÛäñ 0Acz ªºÊÕåð  ; I W k t } ‹ š © ³ ¾ É Õ à ï þ   % 6 I X o „ ˜ ¨ ¹ Ç Ö ê ø   % 0 ? I ^ r { ‹ š ® È Ü ï   1 N k ƒ › ¨ µ À Í ß ò ý   ( 7 H X p ¢ ¶ Ï ã ï û 0@[{Ž­ÆÓÛãý (LVeq}‰˜¤®ÆÏØÿ'/8@JZk‰’ «¾×èõ#2Ifz¦¹ÁÉØäù (5?Semx‰’¢¸ÄÚõ  @LYiw‡ž¯¹ÇÙë/7FT]pŠ®Æßòù"-5=LT\fp|„Œ•£¬´ºÃËÑÚâèñùÿ'-6>DMU[dlrz‡–œ¦®´ÀÈÒÚâêòú(19BJR\dlt…–®¼Ûë#*18?FMT[bipw~…Ž›¤­¸ÁÑÚÑü  i!€!—!³!Ï!N#% %;%[%{%›%»%^'~))¼)Û)ú)*B*f*Š*]+.'.J.m..³.Û./+/S/{/ù132m2§2á23B3n3š3Æ3ò34J4/7o7¯7ï7/8o8¯8U99˜9½9Ç9Þ9ó9:d:}::š:];z;;™;¸;ï<='=1=R=z=¦>Í>í>/?~?Ú?C@ã@0BkC÷C(D¤D÷D*ELE­FÏF"GfGpGyG²G‹H8II¤IK³KÓKêK2L¾LÈLAMyMoN‹N±NîN?OROÅOïOJPxP‘QÕQXR–RðR¡SªSëS“T U%UpUƒU†U“U¢U³UÆUVKVPV[VpV‚VÏVW'W9W \"kMkbkkk€kk¨kÄkàkðkQmºn›oïowp»p·qr™sÇsús4tIt\t¥t®t>u„u›uöu*vOv~vŸvÐv3w‡wåwUx]xexÐxy?yËyzzoz|z„zŒz{{-{4{[{!|±|Ú|}\}ƒ}©}±}Þ}ÿ}%~-~@~H~~¹~Á~Õ~5H€P€Z€f€€€ž€À€ï€&Na˜ ‚'‚µ‚É‚„O„ð„m…²…† †N†c†‹†Û†‡‡+‡²‡Å‡ˆDˆšˆ‰e‰Ä‰ЂШŠ$‹z‹„‹Ž‹˜‹Ó‹5Œ?ŒIŒSŒ]Œ}ŒÇŒAKU†KŽUŽ_ŽâŽú‘)‘6‘C‘L‘Z‘l‘ ’3’:’ð“”8”O”q”}”£”·”æ”ô”b•l•’•Εà•;–]–š/›B›P›^›g›p›‡›œ/œ²œ 1ƞꞟɟ ê ò K¡R¡I¢¢Í¢ø¤¥¥-¦7¦C¦ö¦§,©N©Ù«¬R­g®[´¿´É´Ù´ã´é¶„¸¯¸·¸Õ¸õ¸¹5¹L¹)»E»\»y»‘»«»Ý»¥¼¿¼Ô¼â¼Z¾j¾u¾‚¾Š¾)¿;¿E¿L¿Ö¿÷¿ÙÁðÁÂÂÂ8ÂMÂ\ÂoÂ}‹‘§ÃÈÃÐÃêÃÆƾÆÓÆOÇdÇtLjÇ?ÈNÈXÈiÈzȅȓȰÈÈÈÒ¢ÒàÖóÖ ××$×>×^×mׂ׎×Ý(ÝÞ!Þ^ÞfÞ«Þ·ÞÞÞùÞß-ß=ßwßßß»ßÇß÷ß à"à)à[à˜à­àµà×àáàá á'â/â²ãºãäTækérézéƒé©éêkê±ë&î¾ðÊðÛðúðñ ñññ"ñ5ñ?ñYñcñrñ“ññ§ñ±ñ»ñÅñÏñÙñãñíñ÷ñò ò'ò3ò=ò]òiòsò}òÍò×ò€óŸó¹óhô{ô&õöö:öÞöÛø“ùùÈùtü"ý(ý/ý6ý>ýFýOýXýbýlýwýƒýý›ý¨ý¹ýÇý”þèþøþýÿÄþ%,3:AHOV]š±à1IkÅ.±ËøMŒ§ó&.p > w — ·  !K!U!_!g!­!·!Ý!0"?"N"ª"´"¾"Ò"õ"!#h#r#™#¾#Ë#Ô#ý#.$S$Z$j$$¿$Ð$Ú$ %+%<%o%w%×%ß%2&T&Æ&&'.'×'å'ò'e(m(·(¿(í(p)z)’)š)¢)Æ)ß)ç)õ)ý)*%*/*U*ˆ*©*å*8+@+u++œ+Ë+Õ+ð+ ,ƒ,²,Å,Ø,-õ-&.a.Ç.N/W//ô0ü071†1ÿ122+232±2¹2Á233'343<3D3L3×3E4N4]4†4ë4û4 5$5P5X5i5™5­5¼5å5í5$6F6€6Ç6 7'7<7d7y7¡7»7à7û788a8ä8ì8ô8K9Ö9Þ9::#:8:[:ƒ:¼:ó:4;m;v;²;ö;)=E=a=›=Ñ=Ù=á=é=>(>\>>‡>–>ž>Ó>ý>??6?P?Z?‘?™?Ñ?æ?î?@ @#@c@•@Ð@é@ò@ A1ASAsA‹AåAiB~BŽB™B¤BDdD¦D®DêD&E.E6E=ENEàERF¦FÈFG)G1GOGWGŸG­GÎGUHrH|HŽH–HžHI+I[IcIlIxI³IíIøIJ"J‹J³JÈJXKfK©KILWLŒL'MbMjM~M‘M¬MºMÂMÊMÒMìM'NƒNµNØNàNëNOO)OTO`OoO•O¡O­OäOPQP­PÊPÿPQQ3QMQkQ³QÍQ×QARWRzR‚RŠRØR¤S²SºSÐSÝSSTpTyTT½TÕTâTAU[UeU“U¯U¹UßUéUýUV VV.V6V>VRVZVbVjVˆV¡V©V¿VÇVÏV“W£WŒX/YZYYÃY÷Y)Z€Z³Z[A[t[«[4_B_Ñ_Ü_`&`s`„`ddxd×eèe­gÀg·iSj‡j%lmjm­mÂoSppÇqir$s¡s‚tºt‹v/w xuxžzå{î{|G|ÿ|}~/~geƒƒ¬…w†æ†p‡’‡§‡¯‡½‡ЇÞ‡¡ˆ¶ˆĈ׈‰ˉ&Š0ŠZŠdŠ׊ߊ]ŒŒ“ŒµŒÉŒëŒÿŒ'I½ŽjŽ2¤¬»Y‘7’R’d’’’ê’“Ÿ“•!•1–N–X–B—¸—à—­˜b™p™§™dš·›å› œ‹œÌœÖœ$EN‡¶ž—Ÿ ž ý  ¡%¢¢•¢œ¢³¢¼¢e£ˆ£š£¯£„¤Ф4¥¿¥ì¥ô¥º§Û§1¨u¨Ѝ¯¨̨ú¨©D©L©T©h©r©£©ª©ªªlªtª|ª„ªŒª´ª¼ª«%«-«5«?«O«t«h²l²´m´v´kµêµ¶x¶жض·+·X·a·Þ·æ·ù·¸Ö¸ê¸ñ¸ø¸U¹˹м¬À´À÷ÀVÁ0ÂÅÂéÃñÃBÄ_ÄĉğÅ%LJÇ;ÈHÈvÉÊ6Ê>ÊFÊ]ʂʊʗʟÊèÊË9Ë5ÌéÌÍX͎͘ÍÑÍ&Î Ï)ÏIÏSÏ­ÏÌÐñÐùÒ8ÕBÕLÕ¾Õ¡Ö«ÖµÖû׳Ø#ÙhÙÞÙ,ÚÓÚâÚ1ÛXÛ|Û§Û±ÛüÛJ܄܎ܘÜÝÞóÞÍß`àhàžà¢àcá×á-âŠâÊâ#ã–ã!äÏäå8å ææTæ¥æ±æ%çlçÃèUé©é*ìNìwì¡ìÈìúìíAíaí”íÃíÍíØíÜíòíüíîî#î8î@îìðôðñîø¢ùëùóù#ú~úúÈú{û¸ûþûhü“ü¶üòü$ý^ý“ýšýáýŸþêþ½ÿçÿã,\œ›ô nv-[ƒÄÚ?“› <Nà 6@x„‹¦½çñ + 4 ] l t • Ÿ © ½ Þ  % - 5 = O “  ­ ú 0 > [ œ ¤ ¸ é  K U _ ‹ ð ø - 7 ] g ~ ¢ » È æ ÿ  fnv~®%aµõýOpåQYz° Jem€ŠœÀö ;CTf}…•ÆÐØïVemu}ÉÑDVjpŒ¨!Z˜Þæù4j²Þ =¿÷JW¡©oý1Xs} ¬¸ÂÑð Mck—ÇïúCKVh{šæ H ¢!Þ!2"Z"Ò"Ü" ##&#/#k#$R$%¶%j'Ž'(µ):*O*ƒ*+!+Þ-.F0*1@122:2b2n2x22™2Á2o3v3Á3È344e4l4·4¾4 55[5b5­5´5ÿ56Q6X6~6…6£6«6ð627:7„7Ì7Ó7;¯;Ú;í;õ;ý;<!<)<1<9<A<I<Q<Z<b<j<t<|<„<Œ<”<œ<¤<¿<Î<à<s?{?ƒ??¹?Ã?Û?ð?ø?@@@@ @/@w@@‡@@—@Ÿ@§@¯@·@Ò@ð@AAAkAuA}A…AA•AA¥A­AµA½AÅAÍAÕAÝAåAøA BBB$B,B4BCFCNCVC^CfCnCvC~C†CŽC–CžC¦CÁCßCéCDLD–DÎDE EErE…E©E#F1F?F¤F¹FáFûF(GHGH‰H™H©H_IvI¢I¾IïIJFJ–K¨KºKÃLËL\MsM{M+N3N;NÖNçNóNÿNAOOO]OkOyO‡O•O£O±O½OÉOÕOáOïOûOPPP+P7PCPOP[PÏPæPóP QQ-Q;QCQ^Q´QçQõQRRR-RUR_RkRRR—R£R³R¿RÉRÕRßRëRõRSSS'S3S=SISSS_SiSuSS‹S•S¡S«S·SVV V VVÒWXÆYÔZÃ\Ó\ã\ó\]]4`F`X`j`|`Ž` `^drd†dšd®dÂdÖdêd·gñhùhii(iKiYi€iiiÈiÚiéi'j€ã'v9 + y y+ h2 E2 º + a)+ y+ 0y y i+X+ !9X+ ;yX+ Sy+ #+ O+ Ì+ ï+ + Yy+ + +21314151618797:7;7<7=7>7@?A?B?C?D?E?F?G?H?JIKILIMINIOIPIQIRISITIVUWUXUYUZU[U\U]U^U_U`UaUbUdcecfcgchcicjckclcmcncocpcqcrcyx{zƒ‚„‚…‚†‚‡‚Œ‹‹Ž‹‹‹œžœŸœ œ¡œ¢œ£œ¥¤¦¤§¤¨¤©¤ª¤«¤²±³±´±µ±¶±·±¸±¹±º±¼»½»¾»¿»À»Á»Â»Ã»Ä»Å»Æ»Ç»È»É»Ê»Ë»Ì»Í»Î»Ï»Ð»Ñ»Ò»Ó»Ô»Õ»Ö»×»Ø»Ù»Ú»Û»Ü»Ý»Þ»ß»à»á»â»ã»ä»å»æ»ç»è» !'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&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&[Z\Z]Z^Z_Z`ZaZb&c&d&e&f&g&h&i&j&k&nmompmqmrmsmtmumvmwmxmymzm{m|m}m~mm€mm‚mƒm„m…m†m‡mˆm‰mŠm‹mŒmmŽŽ‘Ž’Ž“Ž”Ž•Ž–Ž—Ž˜—™—š—›—œ——ž—Ÿ— —¡Ž¢Ž£Ž¤Ž¥Ž¦Ž§Ž¨Ž©ŽªŽ«Ž¬Ž°¯±¯²¯³¯´¯µ¯¶¯·¯¸¯¹¯º¯»¯¼¯½¯¾¯¿¯À¯Á¯Â¯Ã¯Ä¯Å¯Æ¯Ç¯È¯É¯Ê¯Ë¯Ì¯Í¯Î¯Ï¯Ð¯Ñ¯Ò¯Ó¯Ô¯Õ¯Ö¯×¯Ø¯Ù¯Ú¯Û¯Ü¯Ý¯Þ¯ß¯à¯á¯â¯ã¯ä¯å¯æ¯ç¯è¯é¯ê¯ïîðîñîòîóîôîõîöî÷îøîùîúîûîüîýîþîÿî                 !"#$%&'()*+,.-/-0-1-2-3-4-5-6-7-98:8;8=<><?<@<A<B<C<D<E<F<G<H<I<J<K<MLNLOLPLQLRLSLTLULVLWLXLYLZL[L\L]L^L_L`LaLbLdcedfdgdhdidjdkdlcmcncocpcqcrcsctcucvcwcxcyczc{c|c}c~cc€cc‚cƒc„c…c†c‡cˆc‰cŠc‹cŒccŽcc‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŠŒŠŠŽŽ’‘“‘”‘•‘–‘—‘˜‘™‘›šœššžšŸš š¡š¢š£š¤š¥š¦š§š©¨ª¨«¨¬¨­¨®¨¯¨°¨±¨²¨³¨´¨µ¨¶¨·¨¸¨¹¨º¨»¨¼¨½¨¾¨¿¨À¨ÃÂÄÂÅÂÆÂÇÂÈÇÉÂÊÂËÂÌÂÍÂÎÂÏÂÐÂÑÂÒÂÓÂÔÂÕÂÖÂ×ÂØÂÙÂÚÂÛÂÜÂÝÂÞÂßÂàÂáÂâÂãÂäÂåÂæÂçÂèÂéÂêÂëÂìÂíÂïîðïñïòïóïôïõïöï÷ïøïùïúïûîüûýûþûÿûûûûûûûûûû î     î             "!#!$!%!&!'!(!)!+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*FEGEHEIELKMKNKOKPKQKRKTSUSVSWSYXZX[X]\^\_\`\bacadaeafagalkmlnlolplqlrlsltlyxzx{x~}}€}}‚}ƒ}„}…}†}‡}ˆ}‰}Š}‹}Œ}}Ž}}}‘}’}“}”}•}–}—}˜}™}š}›}œ}}ž}Ÿ} }¡}¢}£}¤}¥}¦}¨§©§ª§«§¬§­§®§¯§°§±§²§³§´§µ§¶§·§¸§¹§º§»§½¼¾½¿½À½Á½Â½Ã½Ä½Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼ÎÍÏÍÐÍÑÐÒÍÓÍÔÍÕÍÖÍ×ÍØÍÙÍÚÍÛÍÜÍÝÍÞÍàßâáäãåãæãçãìëíëîëïëóòöõ÷õùøúøûøüøýøþøÿøÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ(ÿ)ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ1ÿ2ÿ3ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿ:ÿ;ÿ<ÿ=ÿ>ÿ?ÿ@ÿ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ÿ[ÿ\ÿ]ÿ^ÿ_ÿ`ÿ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ÿ{ÿ|ÿ}ÿ~ÿÿ€ÿÿ‚ÿƒÿ„ÿ…ÿ†ÿ‡ÿˆÿ‰ÿŠÿ‹ÿŒÿÿŽÿÿÿ‘ÿ’ÿ“ÿ”ÿ•ÿ–ÿ—ÿ˜ÿ™ÿšÿ›ÿœÿÿžÿŸÿ ÿ¡ÿ¢ÿ£ÿ¤ÿ¥ÿ¦ÿ§ÿ¨ÿ©ÿªÿ«ÿ¬ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ²ÿ³ÿ´ÿµÿ¶ÿ·ø¸ø¹ø»º½¼¾¼¿¼À¼Á¼Â¼Ã¼Ä¼Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼Í¼Î¼ÐÏÑÏÒÏÓÏÔÏÕÏÖÏ×ÏØÏÙÏÚÏÛÏÜÏÝÏÞÏßÏàÏáÏâÏãÏäÏåÏæÏçÏèÏéÏêÏëÏìÏíÏîÏïÏðÏñÏòÏóÏôÏõÏöÏ÷ÏøÏùÏúÏûÏüÏýÏþÏÿÏÏÏÏÏÏÏÏÏÏ Ï Ï Ï Ï ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ Ï!Ï"Ï#Ï$Ï%Ï&Ï'Ï(Ï)Ï*Ï+Ï,Ï-Ï.Ï/Ï0Ï1Ï2Ï3Ï4Ï5Ï6Ï7Ï8Ï9Ï:Ï;:<:=:>:?:@:AÏBACÏDÏHGIGJGKGLGMGNGOGPGQGbb’dd’ff’hh’jj’ll’nn’nB€pp’pB€rr’rB€tt’tB€vv’vB€xx’xB€zz’zB€||’|B€~~’~B€~ú€€€’€B€€ú€‚‚’‚B€‚ú€„„’„B€„ú€††’†B€†ú€ˆˆ’ˆB€ˆú€ŠŠ’ŠB€Šú€ŒŒ’ŒB€Œú€ŽŽ’ŽB€Žú€’B€ú€’’’’B€’ú€’Ù””’”B€”ú€”Ù––’–B€–ú€–Ù˜˜’˜B€˜ú€˜Ùšš’šB€šú€šÙœœ’œB€œú€œÙžž’žB€žú€žÙ  ’ B€ ú€ Ù¢¢’¢B€¢ú€¢Ù¤¤’¤B€¤ú€¤Ù¦¦’¦B€¦ú€¦Ù¨¨’¨B€¨ú€¨Ùªª’ªB€ªú€ªÙªä‚¬¬’¬B€¬ú€¬Ù¬ä‚®®’®B€®ú€®Ù®ä‚°°’°B€°ú€°Ù°ä‚²²’²B€²ú€²Ù²ä‚´´’´B€´ú€´Ù´ä‚¶¶’¶B€¶ú€¶Ù¶ä‚¸¸’¸B€¸ú€¸Ù¸ä‚ºº’ºB€ºú€ºÙºä‚¼¼’¼B€¼ú€¼Ù¼ä‚¾¾’¾B€¾ú€¾Ù¾ä‚ÀÀ’ÀB€Àú€ÀÙÀä‚ÂÂ’ÂB€Âú€ÂÙÂä‚ÄÄ’ÄB€Äú€ÄÙÄ䂯Æ’ÆB€Æú€ÆÙÆä‚Æ„ÈÈ’ÈB€Èú€ÈÙÈä‚È„ÊÊ’ÊB€Êú€ÊÙÊä‚Ê„ÌÌ’ÌB€Ìú€ÌÙÌä‚Ì„ÎÎ’ÎB€Îú€ÎÙÎä‚΄ÐÐ’ÐB€Ðú€ÐÙÐä‚ЄÒÒ’ÒB€Òú€ÒÙÒä‚Ò„ÔÔ’ÔB€Ôú€ÔÙÔä‚Ô„ÖÖ’ÖB€Öú€ÖÙÖä‚Ö„ØØ’ØB€Øú€ØÙØä‚Ø„ÚÚ’ÚB€Úú€ÚÙÚä‚Ú„ÜÜ’ÜB€Üú€ÜÙÜä‚Ü„ÞÞ’ÞB€Þú€ÞÙÞä‚Þ„àà’àB€àú€àÙàä‚à„ââ’âB€âú€âÙâä‚â„ää’äB€äú€äÙää‚ä„ê$…êš…î$…ð$…ò$…ô$…ö$…ø$…úkˆükˆüuˆþ$…$…$… Š¥Š Š¥Š Š¥Š  Š ¥Š  Š ¥Š Š¥Š Š¥Š Š¥Š$…$…$…$…$… $…"$…$$…**’.kˆ0uˆ2kˆ2uˆ4kˆ4uˆ6$…\kš\tš\{š\š…^kš^tš^{š^š…^„šÔ$…Ö$…â$…ä$…è$…ì$…ð•²òƒ²ôöö’øø’øB€úú’úB€úú€üü’üB€üú€üÙþþ’þB€þú€þÙþä‚’B€ú€Ùä‚„’B€ú€Ùä‚„_´‚´$…$…´™·£·­·8 Š: Š< Š> Š>¥Š@ Š@¥ŠB ŠB¥ŠTHˆVHˆ`Hˆb*ŒdHˆd*Œd–f–f –fß‹hHˆh*Œj–j–j –jß‹j¹ÐlHˆl*Œn–n–n –pHˆp*Œp–r–r –rß‹r¹Ðr¸Ôr$v –xHˆx*Œz–z–ŠHˆ$…šHˆœHˆŸƒ…¡ƒ…¡Š…£ƒ…£Š…£‘…¥ƒ…¥Š…¥‘…¥˜…§$…©$…©š…««’«š…­­’­B€­š…¯¯’¯B€¯ú€¯š…±±’±B€±ú€±Ù±š…Ü$…Üš…Ü‘´Þ$…à$…â$…ä$…æ$…è$…ê$…ꥊì$…쥊î$…ð$…ð¥Šô$…ô Šö$…ö Šø$…ø Šú$…ú Šü$…ü Šþ$…þ Š$… Š$… Š$… Š$… Š$…¥Š +·  Š 2·  Š+·2·š…+· Š2· Š+·2·š…+· Š2· Š+·2·š… Hˆ *Œ'Hˆ£Hˆ«Hˆ­Œ±*Œ³*ŒÞ$…à$…àš…âš…â$…ä$…äš…æš…æ$…è$…ê$…ì$…ìš…îš…î$…ð$…ò$…ô$…ö$…ú$…ü$…ü„üþ$…þþ„$…š…$…$…$…š… $… š… $…$…$…$…„–Hˆ*ŒHˆ*ŒHˆ*ŒHˆ*ŒHˆ*Œ Hˆ *Œ"Hˆ"*Œ$Hˆ$*Œ9HˆAš…n$…r$…t$…v$…zHˆ|Hˆ~Hˆ†$…ŽHˆHˆ’Hˆ”Hˆ–Hˆ¦Hˆ¨Hˆ²Hˆ´Hˆº$…¼$…¾$…À$…Â$…Ä$…È$…Ê$…Ì$…Î$…Ð$…Ò$…Ô$…Ö$…ÚHˆÜHˆÞHˆàHˆâHˆäHˆæHˆæ*ŒèHˆê*ŒêHˆî*Œð*ŒðHˆôHˆöHˆúHˆüHˆþHˆÿHˆÿ*ŒHˆHˆ*Œ–HˆHˆ*Œ––HˆHˆ*Œ–– –HˆHˆ*Œ–– –ß‹HˆHˆ$…HˆHˆHˆHˆ(Hˆ*Hˆ,Hˆ.Hˆ0$…2$…4$…6$…8$…:$…@$…B$…D$…F$…H$…J$…L$…l$…n$…p$…r$…t$…v$…x$…z$…|$…~$…€$…„$…†$…ˆ$…Š÷®Œ÷®Œý®Ž÷®Žý®Ž¯¯Hˆ$…’$…”$…–$…˜*¯˜$…š*¯š$…ž$…ž*¯ $… *¯¢*¯¢$…¤$…¤*¯¦$…¦*¯¨$…¬$…®$…°$…²$…´$…Æ$…È$…Ê$…̃²Ð$…Ò$…Òƒ²Ô$…Ôƒ²Ö$…Ø$…؃²Ú$…Úƒ²Ü$…Þ$…Þƒ²à$…àƒ²â$…ä$…䃲惲胲ꃲ샲ðƒ²òƒ²öƒ²øƒ²ú•²ü•²þ•²•²•²•²•²•² •² •²PHˆP*ŒHˆ*Œ Hˆ *Œ:š…<š…@Hˆ@*ŒHš…~–~*Œ~–€*Œ€–€–’*Œ˜–š–œ–ž– –¢–¤*Œ¤–¸–º–¼–¾–Ê –Ì –Î –ЖР–Ñ$…Ò–Ý$…ã$…4tšC$…DkˆE$…G$…I$…Iš…JkˆJuˆK$…Kš…LkˆLuˆN$…O$…P$…Q$…R$…S$…U$…_$…e$…g$…k$…m$…o$…q$…{$…}$…$…$…ƒ÷®ƒ$……÷®…ý®…$…‡÷®‡ý®‡¯‡$…‰¯‰$…‹*¯‹$…$…’“$…˜Hˆ™$…šHˆ›$…œHˆž$… Hˆ¢Hˆ¤Hˆ¨$…¨Hˆª$…ªš…¬$…®$…² Š²$…´ Š´$…¶ Š¶$…ºHˆº*Œ¼Hˆ¼*Œ½Hˆ¾ Š¾¥Š¿HˆÀHˆÀ*ŒÁHˆÄ ŠÄ¥ŠÆ ŠÆ¥ŠÈ ŠÈ¥ŠÊ¥ŠÊ ŠË$…Ì ŠÌ¥ŠÍ$…ΠŠÎ¥ŠÚ$…Úš…Ü$…Üš…Þ$…Þš…à$…àš…â$…ä$…æ$…è$…핲ñ•²ó•²ù$…û$…ü$…þ*ŒþHˆ $… $… *Œ Hˆ – Hˆ *Œ $… $… š… $… š…  ’ š… $… š…  ’  ’ B€ $… $… *Œ Hˆ $… $… $…" $…$ $…& $…( tš( $…* $…, $…. $…0 $…2 $…2  Š4 $…4  Š6 $…6  Š8 $…8  Š: $…< $…<  Š> $…>  Š@ $…B $…B  ŠD  ŠF  ŠF $…H $…J $…L $…P $…R $…T $…V š…X $…Z *ŒZ Hˆ\ $…\ š…^ $…b $…d $…d š…f $…h š…h $…h g^j $…j š…l $…n $…p $…r uˆt kˆt uˆv kˆv uˆz $…| $…~ $…€ $…‚ $…„ $…† $…ˆ $…Š $…Œ $…Ž $… $…’ $…” $…– $…˜ $…œ $…ž $…¤ $…¦ *Œ¦ Hˆ¨ *Œ¨ Hˆª –ª Hˆª *Œ¬ š…¬ $…® $…¯ $…¯ ´¯ š…¯ ‘´° *Œ° Hˆ± $…± ´² š…³ $…³ ´´ š…µ $…µ ´¶ š…¶ Hˆ· $…¸ $…¹ $…¹ ´º $…» $…¼ $…½ $…½ ´¿ $…¿ ´¿ š…À $…Á $…Á ´Ã $…à ´Ä $…Å $…Å ´Ç $…Ç ´È $…É $…É ´Ê $…Ë $…Ë ´Ì $…Í $…Í ´Î $…Ï $…Ï ´Ñ $…Ñ ´Ó $…Ó ´Õ $…Õ ´× $…× ´Ø š…Ø $…Ù $…Ù ´Ú š…Ú $…Û $…Û ´Ü $…Ý $…Ý ´Þ $…ß $…ß ´á $…á ´ã $…ã ´ã ¥Šå $…å ´å ¥Šç $…ç ´ç ¥Šé $…é ´é ¥Šë $…ë ´ë ¥Šì $…í $…í ´í ¥Šî $…ï $…ï ´ï ¥Šñ $…ñ ´ñ ¥Šò ò B€ò ’ó $…ó ´ó  Šô B€ô ô ’õ $…õ ´õ  Šö $…÷ $…÷ ´÷  Šø $…ø †lù $…ù ´ù  Šú $…û $…û ´û  Šü $…ý $…ý ´ý  Šÿ $…ÿ ´ÿ  Š $… ´  Š $… $… ´  Š $… $…  Š ¥Š ´ $… +· ´ 2·  Š š… tš $… +· ´ 2·  Š š… $… +· ´ 2·  Š š… $… $… $… $…T $…V $…X $…X †lZ $…Z †l` $…` š…b $…b š…b ƒ…d $…h $…i $…k  Šk ¥Šl $…m $…o q½o $…p $…q q½q $…s $…t $…u $…u š…w $…x $…y $…{ $…| $…} $… $…€ $… $…„ $…… $…† $…‡ $…‰ $…Š $…‹ $… $…Ž $… $… $…‘ $…” $…˜ $…š $…ž $…¢ $…¤ $…¤ š…¨ $…¨ š…ª $…ª š…® $…® š…° $…° š…² $…¶ $…º $…¼ $…À $…Ä $…Æ $…Ê $…Î $…Ð $…Ô $…Ø $…Ú $…Þ $…ß $…á $…â $…ä $…è $…ì $…ï Hˆð $…ô $…ø $…ü $… $… $… $… $… $… $… $… $… $… š… $… š…" $…" š…# Hˆ# *Œ$ $…( $…+ Hˆ+ *Œ+ –+ –+ –+ ß‹, $…. $…2 $…6 $…8 $…< $…= Hˆ= *Œ= –= –= –= ß‹= ¹Ð@ $…B $…F $…J $…L $…P $…T $…V $…Z $…[ Hˆ[ *Œ[ –[ –[ –^ $…` $…` š…d $…d š…f $…f š…j $…j š…l $…l š…o ±Òv $…y Hˆy *Œy –y –y –y ß‹y ¹Ðy ¸Ôy $z z ’z š…| ’| š…| ~ ~ ’~ š…€ € ’€ B€€ š…‚ ’‚ B€‚ š…‚ „ „ ’„ B€„ š…† † ’† B€† š…ˆ ˆ ’ˆ B€ˆ ú€ˆ š…Š Š ’Š B€Š ú€Š š…Œ Œ ’Œ B€Œ ú€Œ š…Ž Ž ’Ž B€Ž ú€Ž š… ’ B€ ú€ š… ’ ’ ’’ B€’ ú€’ Ù’ š…” ’” B€” ú€” Ù” š…” – – ’– B€– ú€– Ù– š…˜ ˜ ’˜ B€˜ ú€˜ Ù˜ š…š š ’š B€š ú€š Ùš š…œ œ ’œ B€œ ú€œ Ùœ š…  $…¢ $… $…Ä $…Æ $…È $…Ê $…Ì $…Ô $…Ö $…Ø $…Ú $…Ú š…Ú ƒ…Ü *ŒÜ –Þ HˆÞ *ŒÞ –à Hˆà *Œà –â *Œâ –ä Hˆä *Œä –í –ï Hˆï *Œï –ï – $… š… ƒ… *Œ – Hˆ *Œ – Hˆ *Œ – *Œ – Hˆ *Œ –( $…( š…( ƒ…* *Œ* –, Hˆ, *Œ, –. Hˆ. *Œ. –0 *Œ0 –2 Hˆ2 *Œ2 –= HˆN $…N š…N ƒ…P *ŒP –R HˆR *ŒR –T HˆT *ŒT –V *ŒV –X HˆX *ŒX –y Hˆ{ Hˆ„ $… $… š…’ $…’ š…” $…” š…– $…– š…˜ $…š $…š š…œ œ ’œ š…ž ž ’ž B€ž š…    ’  B€  ú€  š…¢ ¢ ’¢ B€¢ ú€¢ Ù¢ š…i –E$…ÉHˆÉ*ŒÕHˆÇ$…É$…Ë$…Ù$…Ã$…³$…µ$…·$…¹$…»$…½š…¿$…Á$…Ã$…Å$…Ç$…É$…Ë$…Í$…Ï$…Ñ$…Ó$…Õ$…×$…Ù$…Û$…Ý$…ß$…á$…ã$…å$…ç$…é$…ë$…í$…ï$…ñ$…ó$…õ$…÷÷’÷B€ùù’ùB€ûû’ûB€ýý’ýB€ÿÿ’ÿB€’B€’B€’B€’B€  ’ B€  ’ B€  ’ B€’B€’B€’B€$…š…š…$…š…$…$…!š…!$…#$…%$…'$…)$…+$…+„+“$…“š…“*¯•$…•*¯—$…—*¯™$…™š…™*¯›š…›$…›*¯$…*¯Ÿ*¯Ÿ$…¡¡$…¡‡£$…£„££*¯ÉHˆÉ*ŒÉ–ËHˆË*Œ_$…a$…$…Hˆ‘$…“$…¡Hˆ¥$…§Hˆ©HˆóHˆõHˆ÷Hˆù$…û$…ý$…ÿ$…kHˆmHˆqHˆsHˆuHˆwHˆyHˆ{Hˆ}Hˆ}*ŒHˆ*ŒHˆƒHˆ…Hˆ‹$…‹HˆHˆ‘HˆMHˆO$…S$…W$…Y$…[¯[$…[Hˆ]*¯]$…]Hˆ_$…aƒ²cƒ²eƒ²e$…gƒ²g$…iƒ²kƒ²G$…I$…K$…M$…O$…Q$…S$…U$…Ÿ*Œ¡Hˆ $…HˆHˆ'Hˆg$…w$…yHˆ*ŒƒHˆ™Hˆ™*ŒŸHˆ¡HˆÝ$…óHˆõHˆ÷Hˆ Hˆ *Œ Hˆ *Œ Hˆ *ŒHˆ*ŒHˆ*ŒHˆ*Œkš…k$…mš…m$…oHˆo*Œo–qš…q$…sš…s$…u$…w$…wš…y$…{$…}$…$…$…ƒ$……$…½Hˆ–*Œ*Œ––*Œ–– *Œ – – *Œ – – Hˆ{HˆHˆ•*Œ—Hˆ™Hˆ›Hˆ›*Œ·*Œ¿*Œ¿–Å–Ç–Ç –É–ÍHˆ×$…Ù$…Û$…SHˆŸ$…¡$…§Hˆ§Œ©Hˆ©Œ«$…«tšï$…ñ$…ó$…õ$…ý$…Y $…[ $…] $…_ $…a $…c $…e $…g $…i $…k $…m $…o $…q $…s $…u $…w $…w tšy $…y tš{ $…{ š…} $… $… $…ƒ $…… $…‡ $…‰ $…‹ $… $… $…‘ $…“ $…• $…— $…™ Hˆ› HˆŸ Hˆ¡ Hˆ£ $…¥ Hˆ§ $…© Hˆ« $…­ $…¯ Hˆ± Hˆ± *Œ³ Hˆ³ *Œµ Hˆ· Hˆ¹ Hˆ» Hˆ½ Hˆ¿ HˆÁ HˆÃ HˆÅ HˆÇ HˆÉ HˆË HˆÍ HˆÏ HˆÑ HˆÓ HˆÕ Hˆ× HˆÙ HˆÛ HˆÝ Hˆß Hˆá Hˆã $…å Hˆç *Œé Hˆë Hˆí Hˆï Hˆñ Hˆó Hˆ!$…1! Š1!$…3! Š3!$…5! Š5!$…7! Š7!$…9! Š9!$…;! Š;!$…=! Š=!$…?! Š?!$…?!š…A! ŠA!$…A!š…C! ŠC!$…E! ŠE!$…G! ŠG!$…I! ŠI!$…K! ŠK!$…K!š…M! ŠM!$…M!tšO! ŠO!$…O!tšQ! ŠQ!$…S! ŠS!$…U! ŠU!$…W! ŠW!$…Y! ŠY!$…[! Š[!$…]! Š]!$…_! Š_!$…a! Ša!$…o!Hˆo!*Œq!Hˆq!*Œs!Hˆs!*Œu!Hˆu!*Œw!¥Šw!Hˆy!¥Šy!Hˆ{!¥Š{!Hˆ}!¥Š}!Hˆ!¥Š!Hˆ!¥Š!Hˆƒ!¥Šƒ!Hˆ…!Hˆ…!*Œ‡!¥Š‡!Hˆ‰!¥Š‰!Hˆ‹!Hˆ‹!*Œ!Hˆ!*Œ!–!Hˆ!*Œ‘!Hˆ‘!*Œ“!Hˆ“!*Œ“!–•!Hˆ•!*Œ•!–—!Hˆ—!*Œ—!–™!Hˆ™!*Œ™!–›!¥Š›!–›!–!¥Š!Hˆ!*ŒŸ!–Ÿ!–¡!Hˆ¡!*Œ£!Hˆ£!*Œ¥!Hˆ¥!*Œ§!Hˆ§!*Œ©!Hˆ©!*Œ«! Š«!$…­!Hˆ­!*Œ¯!Hˆ¯!*Œ±!Hˆ±!*Œ³!Hˆµ!Hˆ·!Hˆ·!*Œ¹!Hˆ¹!*Œ»!Hˆ»!*ŒÛ! ŠÛ!¥ŠÝ! ŠÝ!¥Š÷!$…ù!$…û!$…ý!$…ÿ!$…"$…"$…"$…"$… "$… "$… "$…"$…"$…"$…"$…"$…"$…"$…"š…"$…"$…"š…!"$…#"$…%"$…'"$…)"$…+"$…-"$…/"$…1"$…3"$…5"$…7"$…7"š…9"$…;"$…="$…?"$…A"$…C"$…C"š…E"E"’G"G"’G"š…I"I"’I"š…K"$…M"M"’O"$…O"š…Q"$…S"$…U"U"’W"W"’Y"$…["$…]"]"’_"_"’a"$…a"š…c"$…c"š…e"$…e"š…g"$…g"š…i"$…i"š…k"$…m"$…o"$…q"$…s"$…u"$…w"w"’y"y"’y"B€{"{"’}"}"’}"B€"$…"$…"tšƒ"$…ƒ"tš…"…"’…"tš‡"‡"’‡"tš‰"Hˆ‰"*Œ‹"Hˆ‹"*Œ"Hˆ"*Œ"$…"tš‘"$…‘"tš“"$…•"$…—"$…™"$…™" Š›"$…"$…Ÿ"$…Ÿ" Š¡"$…£"$…¥"$…§"$…©"$…«"$…­"$…¯"$…±"$…³"$…³"š…µ"$…·"$…·"š…¹"$…»"$…»"š…½"$…¿"$…¿"š…Á"$…Ã"$…Å"$…Ç"$…É"$…É"š…Ë"$…Ë"š…Í"$…Í"š…Ï"$…Ï"š…Ñ"$…Ó"$…Õ"$…×"$…ù"$…û"$…ý"$…ÿ"$…ÿ"š…#$…#š…#$…#$…#$… #$… #$… #$…#$…#$…#$…#Hˆ#*Œ#$…#š…#$…#$…#Hˆ#$…!#!#’####’%#%#’'#'#’)#Hˆ)#*Œ)#–)#–+#+#’+#B€+#š…-#Hˆ-#*Œ-#–/#/#’/#š…1#1#’1#š…3#$…3#tš5#$…5#tš7#$…9#$…9#tš;#$…;#tš=#=#’=#tš?#?#’?#tšA#$…A#HˆC#$…C#tšE#$…G#$…G#tšI#$…I#tšK#HˆK#*ŒK#–M#M#’M#tšO#O#’O#tšQ#HˆQ#*ŒS#S#’U#$…W#$…Y#HˆY#*Œ[#[#’]#$…_#$…a#$…a#š…c#$…c#š…e#$…g#$…i#i#’k#k#’k#B€m#m#’o#o#’o#B€q#$…s#$…s# Šu#$…w#$…y#$…{#$…}#$…#$…#$…ƒ#$……#$……#š…‡#$…‰#$…‰#š…‹#$…#$…#š…#$…‘#$…‘#š…“#$…“#š…•#$…½#$…¿#Hˆ¿#*ŒÁ#$…Ã#tšÃ#$…Å#$…Ç#$…É#$…Ë#$…Í#$…Ï#$…Ñ#$…Ó#$…Õ#Õ#’×#Hˆ×#*ŒÙ#HˆÙ#*ŒÙ#–Û#$…Ý#$…ß#$…ß#š…á#$…á#š…ã#ã#’ã#š…å#$…å#š…ç#ç#’é#é#’é#B€ë#$…í#$…í#š…ï#$…ï#š…ñ#$…ó#$…õ#$…÷#$…ù#g^ù#$…û#$…ý#$…ý#tšÿ#$…$Hˆ$*Œ$$…$$…$g^$š…$$… $$… $$… $$…$$…$$…$$…$$…$$…$$…$tš$$…$$…$$…!$$…#$$…%$$…'$$…)$$…+$$…-$$…/$$…1$$…1$ Š3$$…5$$…5$ Š7$$…7$ Š9$$…;$$…;$ Š=$$…?$$…?$š…A$$…C$$…C$š…E$$…G$$…G$š…I$$…K$$…K$š…M$$…O$$…Q$$…S$S$’U$U$’W$$…Y$$…[$$…Q%š…S%HˆS%*ŒU%$…U%š…Y%$…Y%š…[%$…[%š…]%$…]%g^]%š…_%š…_%$…a%$…e%$…g%$…i%kˆi%uˆç%$…é%Hˆë%$…í%$…K&HˆM&HˆO&$…Q&$…S&HˆS&*ŒU&HˆU&*ŒW&HˆW&*ŒW&–Y&š…[&$…[&š…]&$…_&$…a&Hˆa&*Œc&š…e&š…g&Hˆi&Hˆk&š…o&š…o&Hˆq&Hˆq&š…s&$…/'$…1'$…7'$…9'$…;'$…='$…W'$…Y'$…['$…]'$…_'$…_'tša'$…a'tšc'$…e'$…g'$…i'$…i'š…k'$…k'š…m'$…o'$…q'$…s'$…u'$…w'$…y'$…{'$…}'$…'$…'$…ƒ'$……'$…‡'$…‰'$…‹'$…'$…'š…'$…'š…‘'$…“'$…•'$…§'$…©'$…«'$…­'$…­' Š¯'$…±'$…±' Š³'$…³' Šµ'$…·'$…¹'Hˆ¹'*Œ»'$…»'š…½'Hˆ½'*Œ¿'$…¿'š…Á'HˆÁ'*ŒÁ'–Ã'Ã'’Ã'š…Å'$…Ç'$…É'HˆË'$…Í'HˆÏ'$…Ï'š…Ñ'$…Ñ'š…Ó'HˆÕ'$…×'$…Ù'$…Û'HˆÝ'Hˆß'$…á'$…ã'Hˆå'$…ç'Hˆé'Hˆë'Hˆí'$…ï'Hˆï'*Œñ'ñ'’ó'Hˆó'*Œó'–õ'õ'’õ'B€÷'Hˆ÷'*Œù'ù'’û'Hˆû'*Œû'–ý'ý'’ý'B€ÿ'$…($…($…($…(Hˆ (Hˆ (Hˆ (Hˆ(Hˆ(Hˆ(Hˆ($…($…($…($…($…($…!($…#($…-($…/($…1($…3($…;($…=($…?($…A($…C($…E($…G($…I($…K($…M($…O($…Q($…S($…U($…W($…Y(Y(’[([(’]($…_($…a($…c($…e(e(š…g(g(’g(š…i(i(’i(B€i(š…k($…k(š…m(m(’m(š…o(o(’o(B€o(š…q(q(’q(B€s(’s(B€s(w($…y($…{({(’{(B€}(}(’}(B€((’(B€((’(B€ƒ(ƒ(’ƒ(B€…($…‡($…‰($…‹($…($…($…‘($…“($…™($…›($…($…Ÿ($…¡($…£($…¥($…§($…©(š…«( Š«(¥Šµ($…·($…¹($…»($…½($…¿($…Á($…Ã($…Å($…Ç(ãkÇ($…É($…É(š…Ë($…Í($…Í(š…Ï($…Ñ($…Ó($…Õ($…×($…Ù($…Û($…Ý($…ß($…á($…á(†lã($…å($…ç($…é($…ë(ë(’í($…ï($…ñ($…ó($…õ($…÷($…ù($…û($…ý($…ý(š…ÿ($…)$…)$…)$…)$… )$… )$… )š… )$…')Hˆ))Hˆa)$…c)$…e)†le)$…g)†lg)$…¡)$…£)$…¥)$…§)$…©)$…«)$…­)$…¯)$…±)$…³)$…·)$…·)š…¹)$…¹)š…¹)ƒ…»)$…½)$…¿)$…Á)$…Ã)Ã)’Å)$…Ç)$…É)$…Ë)$…Í)$…Ï)$…Ñ)$…Ó)$…Õ)Õ)’×)$…Ù)$…Û)$…Ý)$…ß)$…á)$…ã)$…ã)š…½-½-’½-B€¿-¿-’¿-B€Á-$…Ã-Ã-’Ã-B€Å-$…Ç-$…É-$…Ë-$…Í-$…Ï-$…Ñ-$…Ó-$…Õ-$…×-$…Ù-$…Û-$…Ý-$…ß-$…á-$…ã-$…å-$…ç-Hˆé-Hˆë-Hˆí-Hˆï-HˆW.$…Y.$…[.$…].$…_.$…a.$…c.$…e.$…g.$…i.$…k.$…m.$…o.$…q.$…y.$…{.$…}.$….$….$…¡.$…£.$…¥.$…§.$…©.$…«.$…«.ôv­.ôv­.$…×.$…Ù.$…Û.$…Ý.$…ß.$…á.$…ã.$…å.$…ç.Hˆç.*Œç.–é.$…é.š…é.ƒ…ë.ë.’ë.š…í.Hˆí.*Œí.–ï.$…ï.š…ï.ƒ…ñ.ñ.’ñ.š…ó.Hˆó.*Œó.–õ.$…õ.š…õ.ƒ…÷.÷.’÷.š…ù.Hˆù.*Œù.–û.$…û.š…û.ƒ…ý.ý.’ý.š…½0$…¿0$…Á0Hˆá0$…ã0$…å0$…ç0$…é0$…ë0$…1$…1$…1$…-1$…/1$…11$…3131’5151’51B€7171’71B€71ú€9191’91B€91ú€91Ù;1;1’=1=1’=1B€?1?1’?1B€?1ú€A1A1’A1B€A1ú€A1ÙC1C1’E1E1’E1B€G1G1’G1B€G1ú€I1I1’I1B€I1ú€I1Ù}1$…1$…1$…ƒ1$……1$…‹1$…‘1$…“1$…•1$…—1$…™1$…›1$…1$…Ÿ1$…¡1$…£1$…¥1$…§1$…©1$…«1$…­1$…½1$…¿1$…Ë1Ë1’Ë1B€Ë1ú€Ë1ÙÍ1Í1’Í1B€Í1ú€Í1ÙÏ1Ï1’Ï1B€Ï1ú€Ï1ÙÑ1Ñ1’Ñ1B€Ñ1ú€Ñ1ÙÑ1ä‚Ó1Ó1’Ó1B€Ó1ú€Ó1ÙÓ1ä‚Õ1Õ1’Õ1B€Õ1ú€Õ1ÙÕ1ä‚×1×1’×1B€×1ú€×1Ù×1ä‚Ù1Ù1’Ù1B€Ù1ú€Ù1ÙÙ1ä‚Û1Û1’Û1B€Û1ú€Û1ÙÛ1ä‚Û1„Ý1Ý1’Ý1B€Ý1ú€Ý1ÙÝ1ä‚Ý1„ß1ß1’ß1B€ß1ú€ß1Ùß1ä‚ß1„á1á1’á1B€á1ú€á1Ùá1ä‚á1„ã1ã1’ã1B€ã1ú€ã1Ùã1ä‚ã1„å1$…€1'à0aà0f1a1f1a1fà0D"1D"1D"à0.&1.&1.&Ê1Á*Ì1Á*Î1Á*1¹+Ð1¶/Ò1¶/Ô1¶/Ö1¶/Ø1¶/Ú1‰4Ü1‰4Þ1‰4à1‰4â1‰4€19K²:U³;Y×;cM=gs=k =€1AV.aì-aî-a»aä1a¦.a¢!_GÚ!_G¨!_Gª!_Gv!_Gx!_GŒ!4HŽ!_G‚!_G!_G–!4Hœ!4HŠ!_G’!/I”!4H~!_Gn!_Gˆ!_G†!_Gz!_G !_G¤!_G,1a,1fÜ!_G$K $KV.*Kº!_GÀ#a$aÀ#f$f1f¬!_G$KÞ#ÒL$àLì aò a¢ aª a˜ a¬ a® a² OÆ a¼ a¦.ÀO² ãO¶ a´ a¾ aÀ a aü#RPþ#€Pä aÐ aÒ a¸ aº aè a!að a$a $a|1€Pê aà a19RR"9RN"ËR|1¸S|1aÚ#ŠVZ$ŠV8"¾Vj"9Rn ›§n dª" Ò«ŽM=¥ʸº'C¹x ÀOÂ'À»X!nR#ð¼Â'½z cm¾' ¿>"¾Vì aì fx aø'n* ˜é< ýéZ \êx ˜ëî î< cm2(|ñK D"S D"× f1¾VÔcmÀ#9R$9R<"9Rj,ö¬"qö’(cmD#cmº'Âøð'Òø,19RZ"qöÞ#Ðù1qöÂ'5üÞ#{ü1ŠVÈýv"þZ!þÜÀO8"˜4!aÀ#±$±À#Ì$Ìp"ŠVº'ÃN#̺'ÐùÀ#˜$˜t_º'W>"˜`!ah'Ò«Þ#ÊÞ#îÞ#aè0ÀOæ0ÀOê0ÀOä0ÀO1ÀOÚÀOæÀOòÀOê.Ê‹ö.Ê‹ûÀO`ÀO¨ro‚fI f`²:p³;~+xF,ȼ,ÈÏ,|â,|-~q-^¥-~©-zþ-€þ-‚þ-k 'h%E/1`/(­/Š(0|(0†F0~Ž0†£0|¸1zÐ1$"é1Ð1rÀOjÀOr'pÀO¦a|µ5‚'v'vÀOÊ'›6òaøaúaüa¶''8þa~¨r€²:|yŠÌ;|ir|1‡=ta~„@NÀO~Fz'|1ñFŠ1þFLaL`/L§G¨azI|3IRaVaraò4J$:JJ":Jt4Jzvza|rMlaza|´Mja€aXa|a|½N޼Oa’a\IP(½Q(ÃQ(f~az:J|àRzXS|S^a`azAdŠT=:J|êTÊöT|üTfŠT|mUe:J|ÁUsa|ñUhajaŠV|1W cm€1v€1‹Y€1¿Y€1óY€1%Z€1é1€1|Z€1¯Z€1àZ€1 [€1=[€1p[ œ\~mÊ'ÀOžÀOt"qöt"j<"«k"#±k¥-"# l>"cm<"qö"#Ll1j¶'cm1`l1fl‚"¸l¶'Eð'nR#Qm<"ŠVÔ'ŠV^#ŠVº'nf9Rv¶nvÀOf¶n€ÀO‚9Rt"9Rò¥-º'Ñqô9s`!·sôËtjNx4#zZ 5mf 5m¶'Ð{¶'(|<"¥-Ô'¥-º'*}8"9R)cm¥-º'¸l˜üº' 9Rž9Rx9R&v&¥-&‹Y&¿Y&óY&%Z&é1&|Z&¯Z&àZ& [&=[&p[&'ôÐ{öËtööƒ01¦„1¦„01ü„1ü„1ü„>"¥-ô¥-Ê'²:¨r ¨rB#¨r4#è‰015m01cm019R15m1cm19R01j01qö01`l01fl01ŠV01¾V1j1qö1`l1fl1ŠV1¾VtsŒt©Œtߌtt=1}15m1cm19R1j1qö1`l1fl1ŠV1¾V +Žj¨r ‹Žn¼ŽnôŽj,jè‰pirrir¼'­“€1Ä”€1È”€1ú”Ú¾V|1B–|1ÀOè‰Ê‹Ê'¾VÊ‹|1M=ʋ˾V—œ&"àZŽàZÊ'¥-–ÀO”àZ ©ŸR¾Všø º'S¡º'¡¡|1¥¢z¾V3’£7¢£º'Ç£¾ø 7Ö¥¶àZ¨â¥¨ç¥Ä¾V¶'¨û¥º'¦º'&¦Æø º'-¦È¾V¶¾V¨>¦:'¾VRÀO˜'ÌÀO3“ª3Ÿª3G«F"S²<"_²<"¾V¢k4#ÿ³º'M´¦¨r¨¨r|1޶|1ñ¶|1R·1¦„j"`l–"`lh"Z¹b" ¹X!Ö¹j"qö–"qöž"G»|1f¬ ÀO® ÀO´ ÀO¶ ÀO² 艰 ¨rײ:˜ ÀOè ÀOì ÀO¸ ÀOº ÀOÐ ÀOÒ ÀOš ÀOž ÀO¢ ÀO  ÀO¤ ÀO¦ ÀO¨ ÀOª ÀOU²:² ¨rUÀO¼ ÀO¾ ÀOÀ ÀO ÀOÆ ÀOÄ ÀOÈ ÀOÌ ÀOÊ ÀOÎ ÀOÔ ÀOÚ ÀOØ ÀOÖ ÀOâ ÀOæ ÀO$"ÀOê ÀOî ÀO€"ÊÜ aÞ aÖ aK f¢ fx!¨rz!¨rˆ!¨rŠ!¨rŒ!Ê‹Ž!¨r!¨r”!Ê‹˜!'Í–!Ê‹Þ#¥ÍP!¨rî#îÍì#îͨ!¨r !¨r¢!¨rK vn!¨rp!¨rr!¨rv!¨rt!¨rUv|!¨r~!¨r€!¨r‚!¨r„!¨r†!¨rU'UzÔ’!Ê‹˜!Ê‹gך!Ê‹ž!¨r>"Ú×4#ؤ!¨r¦!¨r®!¨r´!!Ú²!!Ú°!¨r¶!_G¸!_G°!_G1²:Þ#TÜÞ#¥Üâ0fþ!ÀO'ŸÝ"ÀO1›Þ"²:':ß'vß."ÀO0"ÀO2"ÀO$mà2"²:(ÀO(ÀOP"ÀOT"¨rX"ÀO\"¨r`"¨rd"¨rn"ÀOr"ÀO&"²:&"ÀOŒ"艊"¨rˆ"û‡àZ0'ÀO‰ÀO¬'¨r®'ÀO:"ÀO–"ÀO˜"¨rš"ÀO$ÀO¦"ÀOª"ÀOª'ÀOÚ.ÀOð.ëÚ.²:ð.Aëä0²:æ0²:â.ÀOâ.²:à'ÀOº'¨r¾'¨r¶'ÀO’(ÀO#¨rØ'ÀOä'ÀO#ÀO #¨r$#¨rÊ'M=(#tñÊ'³;,#Ê‹Â'Ê‹2#¨r4#û8#¨r<#Ê‹@#¨r@#ûF#¨r(²:J#Ê‹L#Ê‹P#¨rÄ'ÀOÆ'ÀOX#¨rÔ'ÀOì'ÀOð'¨rô'Ê‹ø'¨rü'Ê‹(ÀO²'¨r´'ÀO $ÀOz#ÀO~#ÀOÐ'¨r$¥-ù'ùóYP%ÀOP%²:¼#ÀO¾#¨rP&ÀO'P%³;Ö#ûÚ#ÀOÖ#¨rØ#Ê‹â#hýæ#×;â#¦ýì#¨rð#ÀO^%¨r-²:‡ÀO$ÿÿÞ#¨rø#×;$ÀO$ÀO$ÀO&$ÀO¾#›Þ¼#÷¼#;`&ŠTd&a‘^&aR&_GT&_GV&—œZ&_GN&a„1z „1ê%aì%aK a„1¤ "$a($a*$a.$aÊ#aÊ#v Þ#• ²'_G´'aÊ#fÞ#0R%¨rZ%¨rX%¨rJ&'L&P%^%1ap&ŠTr&aÊ'ÊL&aZ%_G`%aæ%ÀOè%aæ%aL&ÀOL&'(ÀOf&ÀOh&²:f'²:L&¾VaaX&a\&ab&aj&an&_Gh&ff'fJ&a.1a¼0a~'ÀOÀO€'ÀO‚'ÀO1&y‚'²:1ŠT¨.²:¯è‰¨.ÀO¯e#¦.²:³›Þ°'¨r°'ûµ¯#¸'色:¼'è‰À''ÍÈ'ÀOÌ'²:Î'¨rÒ'ÀOÖ'ÀOÌ'ÀOÚ'ÀOÞ'm&Ü'ÀOâ'ÀOæ'ÀOè'ÀOê'ÀOî'¨rò'Ê‹ö'¨rú'Ê‹þ'ÀO(ÀO(ÀO (ÀO (ÀO(ÀO(ÀO(ÀO(ÀOâ0ÀO2(ÀOê-ÀO,1ÀO.1ÀOÜ.ÀOb)ÀOf)艺)ÀO¼)ÀO¾)ÀOÀ)ÀOÂ)¨rÄ)ÀOÆ)ÀOÈ)ÀOÊ)ÀOÌ)ÀOÎ)ÀOÐ)ÀOÒ)ÀOÔ)¨rÖ)ÀOØ)ÀOÚ)ÀOÜ)ÀOÞ)ÀOà)ÀOâ)¨r¢)ÀOð.ª2ð.¼,ü.ª2 )ÀOš1ÀOœ1ÀO¢1ÀO¤1ÀOª1ÀO¬1ÀO‡²:()a&)aä0aía`)aæ0ad)ŠT¶)(@¸)ú@¶)DB¶)_G¸)¼,ð.Ê‹è-aæ-a.&ß ¹+å qH !ÄK!ÉK!÷K1ÀO1ÀOà0ÀO¼0ÀO¾0ÀO01ÀO¢.ÀOA!ÀOæ.Ê‹ì.Ê‹ò.Ê‹ø.Ê‹ .a¤.aâ0aÖ.aØ.aè.—œæ.—œî.—œì.—œô.—œò.—œú.—œø.—œÀ0àZ01²:01³;01M=01X1²:1³;1M=1Xà0²:à0³;à0M=à0X"ÀOà0²`1²`1²:1³;1M=1X1²`à0þd1þd1þdUÉVÉuÉyÉ¤äŤÆ]ǤȤÉ]ˤ̤ͤÎ]Ï]Ñ]Ò¤Ó¤Ô¤Õ]פؤ٤ڤÜ]Ý]ß]à¤â]ã¤ä]è¤é¤ÕÕ%Õ'Õ)Õ+ÕE]ÔAÉÉ É É ÉÉÉjÉoÉqAsÉ’Éô#f$A&A'f)f.É0ɡդէիÕÏÕÒÕÕÕÙÕV V I¤]¤`]a¤b¤c]e¤l¤m¤n]o]q]r¤|¤}¤~]€¤Ž¤¤¤’]“]•]–¤ ] ¤ ]>¤?¤`]b¤hÕiÕjÕkÕlÕmÕnÕoÕpÕqÕrÕsÕtÕuÕvÕwÕxÕyÕzÕ{Õ|Õ}Õ~ÕÕ€ÕՂՃՄՅՆՇՈՉՊՌՎÕÕՑՒՓՕ՗՘ՙ՚՛՜՞ՠաբգդեէթժիլխծհղճմյնÕÉÉËÉÍÉÐÉÓÉÕÉÖÉØÉÚÉÞÉAÉ&¤,]¾ V Ä F#È Þ j  j A Þ V  É A AFSharp.Core.dllFSCore.resourcesSystemObjectmscorlibMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeCLIMutableAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeCustomOperationAttributeProjectionParameterAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributeFSharpChoice`2IEquatable`1System.CollectionsIStructuralEquatableIComparable`1IStructuralComparableTagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1IEnumerableSystem.Collections.GenericIEnumerable`1ListDebugView`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2IObservable`1FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1EventDelegee`1EventWrapper`2FSharpEvent`2FSharpEvent`1Microsoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1Queue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1Microsoft.FSharp.Linq.RuntimeHelpersAnonymousObject`1AnonymousObject`2AnonymousObject`3AnonymousObject`4AnonymousObject`5AnonymousObject`6AnonymousObject`7AnonymousObject`8Grouping`2System.LinqIGrouping`2System.CoreMicrosoft.FSharp.LinqQuerySource`2QueryBuilderMicrosoft.FSharp.Data.UnitSystems.SI.UnitNamesmetrekilogramsecondamperekelvinmolecandelaMeasureProduct`2MeasureInverse`1MeasureOneTypeProviderAttributeTypeProviderAssemblyAttributeTypeProviderXmlDocAttributeTypeProviderDefinitionLocationAttributeTypeProviderEditorHideMethodsAttributeTypeProviderTypeAttributesTypeProviderConfigIProvidedNamespaceITypeProviderMicrosoft.BuildSettingsBuildDetailsVersion$AssemblyAttributesExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45$Fslib-extra-pervasives$SIMicrosoft.FSharp.Linq.QueryRunExtensionsHighPriorityLowPriorityQueryModule|SpecificCall1|_|@227Tuple`3Type|SpecificCall2|_|@234Tuple`4|SpecificCall3|_|@241Tuple`5restoreTupleProjections@262-1restoreTupleProjections@262Tuple`2CallGenericStaticMethod@280CallGenericInstanceMethod@289MakeGenericStaticMethod@304MakeGenericInstanceMethod@308MakersCallersInstance@350MakersCallersInstance@350-1MakeOrCallContainsOrElementAt@367MakeOrCallContainsOrElementAt@367-1MakeOrCallMinByOrMaxBy@399MakeOrCallMinByOrMaxBy@399-1Tuple`7MakeOrCallAnyOrAllOrFirstFind@443MakeOrCallAnyOrAllOrFirstFind@443-1MakeOrCallAverageByOrSumByGeneric@550MakeOrCallAverageByOrSumByGeneric@550-1Tuple`8Tuple`1Call@616-5Call@616-5TMakeOrCallSimpleOp@618MakeOrCallSimpleOp@618-1CanEliminateMakeSelect@640MakeAppend@661MakeAsQueryable@669MakeEnumerableEmpty@674MakeSelectMany@684MakeWhere@701MakeOrderByOrThenBy@713GenMakeSkipWhileOrTakeWhile@752MakeSkipOrTake@765MakeDistinct@790MakeGroupBy@799MakeGroupValBy@813MakeJoin@843MakeGroupJoin@861walk@876-2walk@877-3|LetExprReduction|_|@890|MacroReduction|_|@898tab@899|MacroReduction|_|@900-1tab@909-1|MacroReduction|_|@910-2|MacroReduction|_|@929-3MacroExpand@937ConvMutableToImmutable@1014ConvMutableToImmutable@1016-1mutConsumingExprBeforeSimplification@1072TransInnerResultSelectOtherSourceSelect@DebugTypeProxyOther@DebugTypeProxySource@DebugTypeProxyTransFor@1162-1TransInner@1220TransInner@1309-1TransInner@1330-2TransInner@1342-3immutElementSelector@1350TransInner@1357-4TransJoinInputs@1451TransJoinInputs@1453-1EliminateNestedQueries@1604Helpers$QueryFor@60Where@70Exists@77All@78SkipWhile@83-1TakeWhile@85-1Find@86MinBy@90MaxBy@93MinByNullable@96MaxByNullable@99AverageBy@156GroupBy@168-4SortBy@171-1SortByDescending@174ThenBy@177ThenByDescending@180SortByNullable@183SortByNullableDescending@186ThenByNullable@189ThenByNullableDescending@192GroupValBy@195GroupValBy@195-1Join@202Join@202-1Join@202-2GroupJoin@205GroupJoin@205-1GroupJoin@205-2LeftOuterJoin@208LeftOuterJoin@208-1LeftOuterJoin@208-2Adaptersd@61IEqualityComparer`1memoize@62isPartiallyImmutableRecord@70-1System.ReflectionPropertyInfoisPartiallyImmutableRecord@68typ@154-1typ@154RewriteTupleType@192|RecordFieldGetSimplification|_|@198ConversionDescriptionTupleConvRecordConvGroupingConvSeqConvTupleConv@DebugTypeProxyRecordConv@DebugTypeProxyGroupingConv@DebugTypeProxySeqConv@DebugTypeProxyConvImmutableTypeToMutableType@223ConvImmutableTypeToMutableType@223-1ConvImmutableTypeToMutableType@225-2ConvImmutableTypeToMutableType@225-3types@228-1types@228IsNewAnonymousObjectHelperQ@249expr@261-1CleanupLeaf@271e@286ProduceMoreMutables@302ProduceMoreMutables@307-1$QueryExtensions$MutableTupleLeafExpressionConverterConvEnvSubstHelper@198-1SubstHelper@198|SpecificCallToMethod|_|@208bindings@462-1System.Linq.ExpressionsMemberBindingbindings@462ConvExprToLinqInContext@477-1MemberInfoConvExprToLinqInContext@477ConvExprToLinqInContext@485-2ExpressionBinaryExpressionConvExprToLinqInContext@486-3ConvExprToLinqInContext@487-4ConvExprToLinqInContext@488-5ConvExprToLinqInContext@489-6ConvExprToLinqInContext@490-7ConvExprToLinqInContext@493-8ConvExprToLinqInContext@494-9ConvExprToLinqInContext@495-10ConvExprToLinqInContext@496-11ConvExprToLinqInContext@497-12ConvExprToLinqInContext@498-13ConvExprToLinqInContext@500-14ConvExprToLinqInContext@501-15ConvExprToLinqInContext@502-16ConvExprToLinqInContext@503-17ConvExprToLinqInContext@504-18ConvExprToLinqInContext@505-19ConvExprToLinqInContext@507-20ConvExprToLinqInContext@508-21ConvExprToLinqInContext@509-22ConvExprToLinqInContext@510-23ConvExprToLinqInContext@511-24ConvExprToLinqInContext@512-25ConvExprToLinqInContext@538-26ConvExprToLinqInContext@539-27ConvExprToLinqInContext@540-28ConvExprToLinqInContext@542-29ConvExprToLinqInContext@543-30ConvExprToLinqInContext@544-31ConvExprToLinqInContext@546-32ConvExprToLinqInContext@547-33ConvExprToLinqInContext@548-34ConvExprToLinqInContext@550-35ConvExprToLinqInContext@551-36ConvExprToLinqInContext@552-37ConvExprToLinqInContext@554-38ConvExprToLinqInContext@555-39ConvExprToLinqInContext@556-40meth@620MethodInfometh@632-1meth@643-2vsP@695ParameterExpressionenv@696-1env@696tupTy@701ConvExprToLinqInContext@719-42ConvExprToLinqInContext@719-41ConvExprToLinqInContext@720-44ConvExprToLinqInContext@720-43ConvExprsToLinq@769NullableModuleNullableOperators$LinqObservableModuleBasicObserver`1IObserver`1Map@2484-7Map@2482-6Choose@2494-4Choose@2492-3Filter@2502-2Partition@2506-2Scan@2514-5Scan@2511-4Pairwise@2535-3Pairwise@2532-2h1@2553h2@2568Merge@2583-3Merge@2547-2Split@2590-1Split@2591-2EventModuleMap@2373-5Filter@2379-1Partition@2386-1Choose@2392-2Scan@2399-3Pairwise@2413-1Merge@2424Merge@2425-1Split@2432AsyncHelpersstart@2012-3start@2013-4start@2014-5OperationCanceledExceptionawaitEither@2017-2awaitEither@2018-3awaitEither@2020-4awaitEither@2010-1System.ThreadingCancellationTokenawaitEither@2008timeout@2024timeout@2028-1timeout@2029-2timeout@2029-3WebExtensionsAsyncGetResponse@1959-1System.NetWebResponseAsyncGetResponse@1962-3AsyncCallbackAsyncGetResponse@1963-4AsyncGetResponse@1964-5AsyncGetResponse@1962-2AsyncGetResponse@1958downloadAsync@1985-3DownloadStringCompletedEventHandlerdownloadAsync@1985-4downloadAsync@1985-6downloadAsync@1985-5DownloadStringCompletedEventArgsdownloadAsync@1983-2downloadAsync@1982-1downloadAsync@1992-7downloadAsync@1992-8downloadAsync@1992-10downloadAsync@1992-9downloadAsync@1980AsyncDownloadString@1997-1AsyncDownloadString@1997-3AsyncDownloadString@1997-2AsyncDownloadString@1997CommonExtensionsAsyncRead@1913AsyncRead@1913-1AsyncReadBytes@1919-1AsyncReadBytes@1921-3AsyncReadBytes@1920-2AsyncReadBytes@1924-4AsyncReadBytes@1917AsyncWrite@1930AsyncWrite@1930-1SubscribeToObservable@1943AsBeginEndHelperscont@1734-3econt@1735-4ccont@1736-6CancellationTokenOpsRunSynchronously@1165RunSynchronously@1166-1RunSynchronously@1167-2Start@1191Start@1192-1Start@1193-2StartWithContinuations@1198StartWithContinuations@1198-1StartWithContinuations@1198-2VolatileBarrierreg@1222a@1230-1a@1233-3a@1231-2a@1230AsyncImplswitchTo@886-1switchTo@885switchToNewThread@891-1switchToNewThread@890switchToThreadPool@895-1switchToThreadPool@894delimitSyncContext@931-1delimitSyncContext@931delimitSyncContext@933-3delimitSyncContext@933-2delimitSyncContext@934-5delimitSyncContext@934-4protectedPrimitiveWithResync@943unprotectedPrimitiveWithResync@948LatchOnceSuspendedAsync`1action@979ContinueWithPostOrQueue@997ResultCell`1RegisterResult@1087get_AwaitResult@1092AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxythreadStartCallbackForStartThreadWithTrampoline@673startAsync@687queueAsync@691protectedPrimitive@721reify@724resultA@739-1resultA@735args@753bindA@760-1bindA@747callA@773-1callA@773-2callA@769cont@791-1cont@791-2cont@791econt@794-1econt@794-2econt@794ccont@797-1ccont@797-2ccont@797tryFinallyA@784econt@807-3tryWithA@803ccont@818-4ccont@818-5ccont@818-3whenCancelledA@817getCancellationToken@822usingA@833whileA@841forA@849-1forA@850-2forA@847sequentialA@854$Control-ctor@467-ctor@476-1-ctor@485-2once@1266-2once@1269-3once@1271-4once@1264-1FromContinuations@1255Catch@1293-1Catch@1293-2Catch@1292StartChildAsTask@1315-1System.Threading.TasksTask`1StartChildAsTask@1314finishTask@1345-1finishTask@1344-2finishTask@1343-3Parallel@1380-3Parallel@1382-4Parallel@1384-5Parallel@1376-2Parallel@1328-1Parallel@1320StartImmediate@1412StartImmediate@1412-1StartImmediate@1412-2registration@1427-1registration@1422Sleep@1447-2Sleep@1432-1Sleep@1415AwaitWaitHandle@1461cancelHandler@1540-1cancelHandler@1533AwaitWaitHandle@1552-3AwaitWaitHandle@1548-2AwaitWaitHandle@1529-1AwaitIAsyncResult@1564ReifyResult@1572AwaitAndReifyResult@1582-1AwaitAndReifyResult@1581AsyncWaitAsyncWithTimeout@1616-1AsyncWaitAsyncWithTimeout@1614-4AsyncWaitAsyncWithTimeout@1607-3AsyncWaitAsyncWithTimeout@1603-2AsyncWaitAsyncWithTimeout@1602AsyncWaitAsyncWithTimeout@1597-5onCancel@1631-1registration@1639-2callback@1649-1callback@1641FromBeginEnd@1621-1FromBeginEnd@1620FromBeginEnd@1668-2FromBeginEnd@1672-3FromBeginEnd@1675-4beginAction@1772-1AsBeginEnd@1773AsBeginEnd@1773-1onCancel@1791-3AwaitEvent@1796-5AwaitEvent@1782-2CancellationTokenRegistrationAwaitEvent@1803-7AwaitEvent@1799-6AwaitEvent@1798-3AwaitEvent@1808-4AwaitEvent@1779-1AwaitEvent@1778Ignore@1824reg@1837-1StartChild@1845-2StartChild@1846-3StartChild@1847-4StartChild@1834-1StartChild@1832SwitchToContext@1861-1SwitchToContext@1858handler@1872OnCancel@1876-3OnCancel@1876-2OnCancel@1877-4OnCancel@1870-1OnCancel@1868continuation@1892-1AwaitTask@1899-1AwaitTask@1890-ctor@2054-3Post@2146scan@2179-2scan@2154-3scan@2150-1scanNoTimeout@2190-2scanNoTimeout@2184-3scanNoTimeout@2182-1TryScan@2203-1TryScan@2198-2TryScan@2194Scan@2209-2Scan@2208-1processFirstArrival@2220-2processFirstArrival@2216-1TryReceive@2224processFirstArrival@2235-5processFirstArrival@2231-4Receive@2239p@2287-1p@2288-3p@2288-2p@2287msg@2299msg@2314-1PostAndTryAsyncReply@2328-2PostAndTryAsyncReply@2327-1PostAndTryAsyncReply@2326PostAndTryAsyncReply@2322-4PostAndTryAsyncReply@2321-3PostAndAsyncReply@2343-1PostAndAsyncReply@2342msg@2337-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1731ApplicationsPattern@1733SpecificCallPattern@1751SpecificCallPattern@1757-1PatternsModuleByteStreamLetRecursivePattern@478getRecordProperty@488getUnionCaseInfo@494checkArgs@589ParameterInfomkNewTupleWithType@661mkNewRecord@678mkNewUnionCase@687mkNewArray@702dlfun@809mkLetRec@831mkLetRec@833-1typesEqual@842instFormal@844methInfos@856argTs@867haveArgTs@873select@864argTs@888-1inst@931mkNamedTycon@1101u_tyconstSpec@1125u_tyconstSpec@1126-1u_tyconstSpec@1127-2appL@1130u_dtype@1135u_dtype@1136-1u_dtype@1136-2u_dtype@1136-3u_dtypes@1139u_dtypes@1139-1BindingEnvenvClosed@1156u_Expr@1163u_Expr@1163-1u_Expr@1166-3u_Expr@1164-2u_Expr@1168-4u_Expr@1171-5u_Expr@1174-6u_Expr@1176-7attrs@1178u_Expr@1179-9u_Expr@1179-8u_Expr@1181-10u_VarDecl@1185u_VarRef@1188u_RecdField@1191u_UnionCaseInfo@1194u_UnionCaseField@1198u_MethodInfoData@1206u_MethodInfoData@1206-1u_constSpec@1289u_constSpec@1289-1u_constSpec@1267-2u_constSpec@1268-3u_constSpec@1269-4u_constSpec@1270-5u_constSpec@1271-6u_constSpec@1272-7u_constSpec@1273-8u_constSpec@1274-9u_constSpec@1275-10u_constSpec@1276-11u_constSpec@1277-12u_constSpec@1278-13u_constSpec@1279-14u_constSpec@1280-15u_constSpec@1281-16u_constSpec@1282-17u_constSpec@1283-18u_constSpec@1284-19u_constSpec@1285-20u_constSpec@1286-21u_constSpec@1287-22u_constSpec@1288-23u_constSpec@1251-24u_constSpec@1252-25u_constSpec@1253-26u_constSpec@1254-27u_constSpec@1255-28u_constSpec@1256-29u_constSpec@1257-30u_constSpec@1258-31u_constSpec@1259-32u_constSpec@1260-33u_constSpec@1261-34u_constSpec@1262-35u_constSpec@1263-36u_constSpec@1264-37u_constSpec@1265-38u_constSpec@1266-39u_constSpec@1236-40u_constSpec@1237-41u_constSpec@1242-42u_constSpec@1243-43u_constSpec@1244-44u_constSpec@1245-45u_constSpec@1246-46u_constSpec@1247-47u_constSpec@1248-48u_constSpec@1249-49u_ReflectedDefinition@1290MethodBaseu_ReflectedDefinitions@1291unpickleExpr@1293unpickleExpr@1293-1unpickleReflectedDefns@1295fillHolesInRawExpr@1307freeInExprAcc@1318mkTyparSubst@1333Clashsubstargs@1345substituteInExpr@1361decodedTopResources@1378AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1418registerReflectedDefinitions@1422qdataResources@1456qdataResources@1452-1data@1465-1data@1464SimpleUnpickleInputStatephase2data@1075phase2data@1075-1mkRLinear@51mkLLinear@52$Quotationsexpr@204pairL@207varL@214|Lambda|_|@216-1|NLambdas|_|@224-1GetLayout@273Applications@1528NewDelegate@1593PrintfModulePrintFormatToStringThen@574-1PrintFormatToStringThen@573-2PrintFormatToStringThen@575-3PrintFormatToStringThen@572kprintf_imperative@584-1kprintf_imperative@584PrintFormatToStringBuilderThen@589PrintFormatToTextWriterThen@592PrintFormatToStringThen@595-4PrintFormatToStringThenFail@598PrintFormatToStringBuilder@601PrintFormatToTextWriter@604PrintFormatLineToTextWriter@607PrintfImplPrintfInfobuildFunctionForOneArgPat@212buildFunctionForTwoArgPat@220-1buildFunctionForTwoArgPat@219buildFunctionForOneFunArgPat@226captureCoreArgs@312-1captureCoreArgs@329-2captureCoreArgs@314-3captureCoreArgs@313-4captureCoreArgs@331-5captureCoreArgs@330-6captureCoreArgs@327-7captureCoreArgs@321-8captureCoreArgs@323-9captureCoreArgs@322-10captureCoreArgs@324-11captureCoreArgs@332-12captureCoreArgs@315-13captureCoreArgs@328-14captureCoreArgs@333-15capturePrecisionArg@340-1capture1@344gprintf@514capture@540-1$PrintfDisplayBreaksitemL@667itemL@680-1PrecedenceShowModestopShort@788-1res@828objL@791-1recdAtomicTupleL@879-3recdAtomicTupleL@879-2recdAtomicTupleL@879-1recdAtomicTupleL@880-6recdAtomicTupleL@880-5recdAtomicTupleL@880-4recdAtomicTupleL@880-7objL@791-2bracketIfL@882-1project@956project2@965-1rowL@967project1@968possibleKeyValueL@986-4possibleKeyValueL@986-3possibleKeyValueL@986-2possibleKeyValueL@989-7possibleKeyValueL@989-6possibleKeyValueL@989-5possibleKeyValueL@982-1itemLs@992reprL@1002-1itemLs@1008-1reprL@1039-2IComparerreprL@1045-3itemL@895-6itemL@895-5itemL@895-4itemL@894-3project@903-2leafFormatter@1090squash_layout@1134output_layout@1138layout_to_string@1142ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@354pvals@360-1LayoutOpsjoin@146join1@147join2@148join3@149op_AtAt@160op_AtAtMinus@161op_AtAtMinusMinus@162commaListL@172semiListL@173spaceListL@174sepListL@175aboveListL@181unfoldL@207$Sformatget_Default@242NumericLiteralsNumericLiteralI$Z$N$Eventget_Publish@36-cctor@47-173mi@100get_Publish@144-2get_Publish@131-1h@171-1get_Publish@173-4get_Publish@161-3ImplgetInstancePropertyReader@71getUnionTypeTagNameMap@199FieldInfogetUnionTypeTagNameMap@198-1getUnionTypeTagNameMap@180-2tagField@204getUnionTagConverter@216getUnionTagConverter@217-1getUnionTagConverter@220-2fieldsPropsOfUnionCase@266fieldsPropsOfUnionCase@265-1fieldsPropsOfUnionCase@264-2getUnionCaseRecordReader@274getUnionTagReader@278getUnionTagReader@282-1getUnionTagReader@287-2getUnionTagReader@285-3getUnionCaseConstructor@320orderTupleProperties@408getTupleCtor@436reader@447-1getTupleReader@453getTupleConstructor@466fieldPropsOfRecordType@532fieldPropsOfRecordType@531-1getRecordReader@542getRecordConstructor@558$ReflectMakeTupleType@681GetUnionCases@704Invoke@720-4PreComputeRecordFieldReader@746SetModuleSetTreeModulesubset@270psubset@272psubset@272-1SetIterator`1mkIEnumerator@426-1copyToArray@485-1ofArray@504$SetFold@603Map@623-4Union@660Intersection@663MapModuleToSeq@714FindKey@717TryFindKey@720MapTreeModuleofList@321copyToArray@346MapIterator`2mkIEnumerator@394$MapSystem-Collections-Generic-IDictionary-2-get_Keys@587-1System-Collections-Generic-IDictionary-2-get_Keys@587System-Collections-Generic-IDictionary-2-get_Values@590-1System-Collections-Generic-IDictionary-2-get_Values@590System-IComparable-CompareTo@611get_Items@634Array4DModuleArray3DModule$Array3ArrayModuleParallelChoose@681-1Collect@708-1Map@716-3MapIndexed@726-3Iterate@733IterateIndexed@739Initialize@744-1Partition@755$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@835mkUnfoldSeq@836InitializeInfinite@848Initialize@853revamp@907revamp2@909Filter@914Map@922-1MapIndexed@927-1Map2@933Choose@938Zip@944Zip3@951Cast@956Take@997fromGenerator@1053Append@1061-1Append@1061OfArray@1106Singleton@1124Truncate@1130Pairwise@1139Scan@1150Windowed@1190result@1235cleanup@1249ReadOnly@1262GroupBy@1274-1GroupBy@1285-2List`1GroupBy@1289-3GroupBy@1269Distinct@1295DistinctBy@1306SortBy@1316Sort@1324CountBy@1336-1CountBy@1343-2CountBy@1332TakeWhile@1485Skip@1493SkipWhile@1503RuntimeHelpersStructBox`1ValueTypegcomparer@532get_Comparer@533mkSeq@543EmptyEnumerable`1Generate@557EnumerateFromFunctions@565EnumerateFromFunctions@566-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@696EnumerateUsing@697-1mkConcatSeq@700EnumerateWhile@713-1EnumerateWhile@712EnumerateThenFinally@729-1h@742CreateEvent@744-1CreateEvent@734GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@403Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@386EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@496-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@501cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@156filter@173unfold@190getCurrent@225-1upto@229generateWhileSome@265ArrayEnumerator`1Singleton`1EnumerateThenFinally@322$SeqMoveNextImpl@773ComparisonIdentityFromFunction@48IComparer`1HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@114MapIndexed@119Copy@124Rebase@131$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsCreate@5699CreateFromValue@5704Operatorsop_ComposeRight@3580op_ComposeLeft@3582op_Range@5367op_RangeStep@5383PowInteger@5529PowInteger@5529-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4819RangeInt32@4819-1RangeInt32@4819-2RangeInt64@4820RangeInt64@4820-1RangeInt64@4820-2RangeUInt64@4821RangeUInt64@4821-1RangeUInt64@4821-2RangeUInt32@4822RangeUInt32@4822-1RangeUInt32@4822-2RangeIntPtr@4823RangeIntPtr@4823-1RangeIntPtr@4823-2RangeUIntPtr@4824RangeUIntPtr@4824-1RangeUIntPtr@4824-2RangeInt16@4825RangeInt16@4825-1RangeInt16@4825-2RangeUInt16@4826RangeUInt16@4826-1RangeUInt16@4826-2RangeSByte@4827RangeSByte@4827-1RangeSByte@4827-2RangeByte@4828RangeByte@4828-1RangeByte@4828-2RangeDouble@4829RangeDouble@4829-1RangeDouble@4829-2RangeSingle@4830RangeSingle@4830-1RangeSingle@4830-2RangeGeneric@4831RangeGeneric@4831-1RangeStepGeneric@4832RangeStepGeneric@4832-1RangeChar@4834RangeChar@4834-1UnaryDynamicImpl@5130BinaryDynamicImpl@5136AbsDynamicImplTable`1-cctor@5142-61-cctor@5142-62-cctor@5143-63-cctor@5143-64-cctor@5144-65-cctor@5144-66-cctor@5145-67-cctor@5145-68-cctor@5146-69-cctor@5146-70-cctor@5147-71-cctor@5147-72-cctor@5148-73-cctor@5148-74-cctor@5149-75Decimal-cctor@5149-76AcosDynamicImplTable`1-cctor@5157-77-cctor@5157-78-cctor@5158-79-cctor@5158-80AsinDynamicImplTable`1-cctor@5166-81-cctor@5166-82-cctor@5167-83-cctor@5167-84AtanDynamicImplTable`1-cctor@5175-85-cctor@5175-86-cctor@5176-87-cctor@5176-88Atan2DynamicImplTable`2-cctor@5184-89-cctor@5184-91-cctor@5184-90-cctor@5185-92-cctor@5185-94-cctor@5185-93CeilingDynamicImplTable`1-cctor@5193-95-cctor@5193-96-cctor@5194-97-cctor@5194-98ExpDynamicImplTable`1-cctor@5202-99-cctor@5202-100-cctor@5203-101-cctor@5203-102FloorDynamicImplTable`1-cctor@5211-103-cctor@5211-104-cctor@5212-105-cctor@5212-106TruncateDynamicImplTable`1-cctor@5220-107-cctor@5220-108-cctor@5221-109-cctor@5221-110RoundDynamicImplTable`1-cctor@5229-111-cctor@5229-112-cctor@5230-113-cctor@5230-114SignDynamicImplTable`1-cctor@5238-115-cctor@5238-116-cctor@5239-117-cctor@5239-118-cctor@5240-119-cctor@5240-120-cctor@5241-121-cctor@5241-122-cctor@5242-123-cctor@5242-124-cctor@5243-125-cctor@5243-126-cctor@5244-127-cctor@5244-128-cctor@5245-129-cctor@5245-130LogDynamicImplTable`1-cctor@5253-131-cctor@5253-132-cctor@5254-133-cctor@5254-134Log10DynamicImplTable`1-cctor@5262-135-cctor@5262-136-cctor@5263-137-cctor@5263-138SqrtDynamicImplTable`2-cctor@5271-139-cctor@5271-140-cctor@5272-141-cctor@5272-142CosDynamicImplTable`1-cctor@5280-143-cctor@5280-144-cctor@5281-145-cctor@5281-146CoshDynamicImplTable`1-cctor@5289-147-cctor@5289-148-cctor@5290-149-cctor@5290-150SinDynamicImplTable`1-cctor@5298-151-cctor@5298-152-cctor@5299-153-cctor@5299-154SinhDynamicImplTable`1-cctor@5307-155-cctor@5307-156-cctor@5308-157-cctor@5308-158TanDynamicImplTable`1-cctor@5316-159-cctor@5316-160-cctor@5317-161-cctor@5317-162TanhDynamicImplTable`1-cctor@5325-163-cctor@5325-164-cctor@5326-165-cctor@5326-166PowDynamicImplTable`2-cctor@5334-167-cctor@5334-169-cctor@5334-168-cctor@5335-170-cctor@5335-172-cctor@5335-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@3000Adapt@3006FSharpFunc`4Invoke@3013-1Adapt@3021-1Adapt@3024-2FSharpFunc`5Adapt@3038-3Adapt@3043-4Adapt@3046-5Invoke@3048-2FSharpFunc`6Invoke@3054-3Adapt@3063-6Adapt@3068-7Adapt@3073-8Adapt@3076-9LanguagePrimitivesFastGenericEqualityComparer@2092FastLimitedGenericEqualityComparer@2093CharComparer@2099StringComparer@2100SByteComparer@2101Int16Comparer@2102Int32Comparer@2103Int64Comparer@2104IntPtrComparer@2105ByteComparer@2106UInt16Comparer@2107UInt32Comparer@2108UInt64Comparer@2109UIntPtrComparer@2110FloatComparer@2111Float32Comparer@2112DecimalComparer@2113FastGenericComparerTable`1-cctor@2150-cctor@2173-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2417-2-cctor@2418-3-cctor@2419-4-cctor@2423-5-cctor@2422-7-cctor@2422-6AdditionDynamicImplTable`3dyn@2451-2dyn@2451-1dyn@2450-3dyn@2449-5dyn@2449-4-cctor@2454-8-cctor@2455-9-cctor@2456-10-cctor@2457-11-cctor@2458-12-cctor@2459-13-cctor@2460-14-cctor@2461-15-cctor@2462-16-cctor@2463-17-cctor@2464-18-cctor@2465-19-cctor@2466-20CheckedAdditionDynamicImplTable`3dyn@2488-8dyn@2488-7dyn@2487-9dyn@2486-11dyn@2486-10-cctor@2491-21-cctor@2492-22-cctor@2493-23-cctor@2494-24-cctor@2495-25-cctor@2496-26-cctor@2497-27-cctor@2498-28-cctor@2499-29-cctor@2500-30-cctor@2501-31-cctor@2502-32-cctor@2503-33-cctor@2504-34MultiplyDynamicImplTable`3dyn@2528-14dyn@2528-13dyn@2527-15dyn@2526-17dyn@2526-16-cctor@2531-35-cctor@2532-36-cctor@2533-37-cctor@2534-38-cctor@2535-39-cctor@2536-40-cctor@2537-41-cctor@2538-42-cctor@2539-43-cctor@2540-44-cctor@2541-45-cctor@2542-46-cctor@2543-47CheckedMultiplyDynamicImplTable`3dyn@2565-20dyn@2565-19dyn@2564-21dyn@2563-23dyn@2563-22-cctor@2568-48-cctor@2569-49-cctor@2570-50-cctor@2571-51-cctor@2572-52-cctor@2573-53-cctor@2574-54-cctor@2575-55-cctor@2576-56-cctor@2577-57-cctor@2578-58-cctor@2579-59-cctor@2580-60HashCompareGenericComparerfsEqualityComparer@1619IEqualityComparerfsEqualityComparerER@1624CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3110op_Implicit@3112-1FromConverter@3114ToConverter@3115ToFSharpFunc@3125ToFSharpFunc@3128-1FuncFromTupled@3130FuncFromTupled@3131-1FuncFromTupled@3132-2FuncFromTupled@3133-3SR$Sr$Prim-types-preludeFSharp.CoreSystem.Runtime.CompilerServicesDependencyAttribute.ctorLoadHintDefaultDependencyAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeSystem.SecuritySecurityTransparentAttributeSecurityRulesAttributeSecurityRuleSetAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyDefaultAliasAttributeAssemblyCompanyAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeAssemblyInformationalVersionAttributeSystem.ResourcesSatelliteContractVersionAttributeNeutralResourcesLanguageAttributeAssemblyDelaySignAttributeAssemblyKeyFileAttributeRuntimeCompatibilityAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesAggregateExceptionLazy`1System.NumericsBigIntegerCancellationTokenSourceTupleTuple`6GetHashCodeEqualsobjSystem-IComparable-CompareTo_objCompareTovalue__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueget_ValueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageget_MessageCountscountsCloneget_CountsNameAllowIntoPatternIsLikeZipIsLikeJoinIsLikeGroupJoinJoinConditionWordMaintainsVariableSpaceMaintainsVariableSpaceUsingBindnameisBinaryallowIntoisJoinisGroupJoinmaintainsVarSpacemaintainsVarSpaceWithBindjoinOnWordget_Nameget_AllowIntoPatternset_AllowIntoPatternvget_IsLikeZipset_IsLikeZipget_IsLikeJoinset_IsLikeJoinget_IsLikeGroupJoinset_IsLikeGroupJoinget_JoinConditionWordset_JoinConditionWordget_MaintainsVariableSpaceset_MaintainsVariableSpaceget_MaintainsVariableSpaceUsingBindset_MaintainsVariableSpaceUsingBindMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorget_IsHiddenset_IsHiddenPathpathget_PathTagCompilerGeneratedAttributeDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsChoice1Of2IsChoice2Of2NewChoice1Of2itemget_IsChoice1Of2NewChoice2Of2get_IsChoice2Of2get_TagcompT1T2Itemget_ItemDebuggerTypeProxyAttributeIsChoice1Of3IsChoice2Of3IsChoice3Of3NewChoice1Of3get_IsChoice1Of3NewChoice2Of3get_IsChoice2Of3NewChoice3Of3get_IsChoice3Of3T3IsChoice1Of4IsChoice2Of4IsChoice3Of4IsChoice4Of4_tagNewChoice1Of4get_IsChoice1Of4NewChoice2Of4get_IsChoice2Of4NewChoice3Of4get_IsChoice3Of4NewChoice4Of4get_IsChoice4Of4T4IsChoice1Of5IsChoice2Of5IsChoice3Of5IsChoice4Of5IsChoice5Of5NewChoice1Of5get_IsChoice1Of5NewChoice2Of5get_IsChoice2Of5NewChoice3Of5get_IsChoice3Of5NewChoice4Of5get_IsChoice4Of5NewChoice5Of5get_IsChoice5Of5T5IsChoice1Of6IsChoice2Of6IsChoice3Of6IsChoice4Of6IsChoice5Of6IsChoice6Of6NewChoice1Of6get_IsChoice1Of6NewChoice2Of6get_IsChoice2Of6NewChoice3Of6get_IsChoice3Of6NewChoice4Of6get_IsChoice4Of6NewChoice5Of6get_IsChoice5Of6NewChoice6Of6get_IsChoice6Of6T6IsChoice1Of7IsChoice2Of7IsChoice3Of7IsChoice4Of7IsChoice5Of7IsChoice6Of7IsChoice7Of7NewChoice1Of7get_IsChoice1Of7NewChoice2Of7get_IsChoice2Of7NewChoice3Of7get_IsChoice3Of7NewChoice4Of7get_IsChoice4Of7NewChoice5Of7get_IsChoice5Of7NewChoice6Of7get_IsChoice6Of7NewChoice7Of7get_IsChoice7Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2System.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2StringSystem.GlobalizationCultureInfoget_CurrentUICultureResourceManagerGetStringSpecializeTInvokefuncConverter`2op_ImplicitconverterFromConverterToConverterInvokeFastarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValueDebuggerDisplayAttributeIsNoneIsSomeget_NoneSomeGetTagget_IsNoneget_IsSomeConcatToStringEmptyIsEmptyIsConsHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Empty.cctorget_Emptyget_IsEmptyConsget_IsConsget_HeadOrDefaultget_TailOrNullget_LengthInt32get_DebugDisplayInvalidOperationExceptionget_Headget_TailindexSystem.TextStringBuilderAppendSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeItemslListDebugViewMaxLengthcountget_ItemsnaAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetDisposeMoveNextResetget_CurrentrescleanupClearMapEmptyget_MapEmptyNewMapOneitem1item2NewMapNodeitem3item4item5TKeyTValueItem1Item2get_Item1get_Item2Item3Item4Item5get_Item3get_Item4get_Item5ComparerCountcomparer@422tree@426serializedDataemptycomparertreeArgumentNullExceptionOnSerializingOnSerializingAttributeOnDeserializedOnDeserializedAttributeCreateieelementsget_Comparerget_TreeAddkeyTryPickfExistsFilterForAllAdaptFoldaccFoldSectionlohizIterateMapRangebMapPartitionget_CountContainsKeyRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemxSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarriSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_Itemkey@value@get_keyget_valueSetEmptyget_SetEmptyNewSetNodeNewSetOneChooseMinimumElementMaximumElementcomparer@524tree@528op_Subtractionset1set2op_AdditionIntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayDeclaringTypetyptagnamesget_DeclaringTypeGetFieldsGetCustomAttributesattributeTypeGetCustomAttributesDataIList`1CustomAttributeDatagetMethInfoIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameFormatget_IsGenericTypeGetGenericTypeDefinitionActivatorCreateInstanceMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderexnPublishmulticastDelegateDynamicInvokeTriggerget_PublishobservermakeTupleOnNext_sendercdeinvokerinvokeInfoGetMethodGetParametersget_ParameterTypeCreateDelegateGetMethodsget_IsGenericMethodDefinitionMakeGenericMethodargUnbreakableIsUnbreakableIsBreakableIsBroken_unique_Unbreakableget_Unbreakableget_IsUnbreakableNewBreakableget_IsBreakableNewBrokenget_IsBrokenIsLeafIsNodeIsAttrNewLeafget_IsLeafNewNodeitem6get_IsNodeNewAttrget_IsAttrItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderIFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_InvariantCultureget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsDictionary`2stampisMutable@90MonitorEnterExitisMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_MetadataTokenget_Moduleget_AssemblyIsCombTermIsVarTermIsLambdaTermIsHoleTermNewCombTermget_IsCombTermNewVarTermget_IsVarTermNewLambdaTermget_IsLambdaTermNewHoleTermget_IsHoleTermAppOpIsAppOpIfThenElseOpIsIfThenElseOpLetRecOpIsLetRecOpLetRecCombOpIsLetRecCombOpLetOpIsLetOpIsNewRecordOpIsNewUnionCaseOpIsUnionCaseTestOpIsNewTupleOpIsTupleGetOpIsInstancePropGetOpIsStaticPropGetOpIsInstancePropSetOpIsStaticPropSetOpIsInstanceFieldGetOpIsStaticFieldGetOpIsInstanceFieldSetOpIsStaticFieldSetOpIsNewObjectOpIsInstanceMethodCallOpIsStaticMethodCallOpIsCoerceOpIsNewArrayOpIsNewDelegateOpQuoteOpIsQuoteOpSequentialOpIsSequentialOpAddressOfOpIsAddressOfOpVarSetOpIsVarSetOpAddressSetOpIsAddressSetOpIsTypeTestOpTryWithOpIsTryWithOpTryFinallyOpIsTryFinallyOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpWhileLoopOpIsWhileLoopOpIsValueOpIsDefaultValueOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpget_AppOpget_IsAppOpget_IfThenElseOpget_IsIfThenElseOpget_LetRecOpget_IsLetRecOpget_LetRecCombOpget_IsLetRecCombOpget_LetOpget_IsLetOpNewNewRecordOpget_IsNewRecordOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewTupleOpget_IsNewTupleOpNewTupleGetOpget_IsTupleGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewNewObjectOpget_IsNewObjectOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewCoerceOpget_IsCoerceOpNewNewArrayOpget_IsNewArrayOpNewNewDelegateOpget_IsNewDelegateOpget_QuoteOpget_IsQuoteOpget_SequentialOpget_IsSequentialOpget_AddressOfOpget_IsAddressOfOpget_VarSetOpget_IsVarSetOpget_AddressSetOpget_IsAddressSetOpNewTypeTestOpget_IsTypeTestOpget_TryWithOpget_IsTryWithOpget_TryFinallyOpget_IsTryFinallyOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_WhileLoopOpget_IsWhileLoopOpNewValueOpget_IsValueOpNewDefaultValueOpget_IsDefaultValueOpCustomAttributestermattribsget_CustomAttributesfulllongSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsargumentsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawarraysizeDequeueSetCapacityEnqueueCopycapacityTokenfailureCTSlinkedCTSget_TokenCreateLinkedTokenSourcectCancelFakeUnit_unique_FakeUnitget_FakeUnitthisThreadHasTrampolineThisThreadHasTrampolinecontbindCountthisThreadHasTrampoline@ThreadStaticAttributeget_thisThreadHasTrampolineset_thisThreadHasTrampolineget_ThisThreadHasTrampolineExecuteActionfirstActionIncrementBindCountSetunfake_arg1trampolinesendOrPostCallbackSendOrPostCallbackwaitCallbackForQueueWorkItemWithTrampolineWaitCallbackthreadStartCallbackForStartThreadWithTrampolineParameterizedThreadStartinit@457SynchronizationContextPostctxtThreadPoolQueueUserWorkItemQueueWorkItemThreadset_IsBackgroundStartStartThreadProtectget_TrampolinetokenecontcconttrampolineHoldertoken@econt@ccont@trampolineHolder@get_tokenget_econtget_ccontget_trampolineHolderauxcont@aux@get_contget_auxNewPZeroDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchget_CanBeCanceledRunSynchronouslytimeoutcancellationTokenStartAsTaskTaskCreationOptionstaskCreationOptionsStartChildAsTaskcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndTArgAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextsyncContextOnCancelinterruptionTryCancelledAwaitTasktaskIsClosedstatecompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@2262mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscanneritem1@get_item1item2@get_item2item3@get_item3item4@get_item4item5@get_item5item6@get_item6item7Item7item7@get_item7get_Item7item8Item8item8@get_item8get_Item8T8System-Linq-IGrouping`2-get_KeyKget_SourceQQ2YieldFromqIQueryable`1EnumerableprojectionFunc`2WherepredicateLastLastOrDefaultSingleExactlyOneSingleOrDefaultExactlyOneOrDefaultDistinctAnyAllFirstElementAtNthSkipSkipWhileTakeTakeWhileFindFirstOrDefaultMinMinByvalueSelectorMaxMaxByNullable`1MinByNullableMaxByNullableget_HasValueSumByNullableAverageByNullableAverageAverageBySumByGroupBykeySelectorOrderByIOrderedEnumerable`1SortByOrderByDescendingSortByDescendingThenByThenByDescendingSortByNullableSortByNullableDescendingThenByNullableThenByNullableDescendingGroupValByresultSelectorFunc`3JoinouterSourceinnerSourceouterKeySelectorinnerKeySelectorTOuterTInnerGroupJoinLeftOuterJoinRunQueryAsValueRunQueryAsEnumerableRunQueryAsQueryableIQueryableRunTMeasure1TMeasure2TMeasureAssemblyNameassemblyNameget_AssemblyNameCommentTextcommentTextget_CommentTextFilePathLineColumnfilePathlinecolumnget_FilePathset_FilePathget_Lineset_Lineget_Columnset_ColumnSuppressRelocateIsErasedResolutionFolderRuntimeAssemblyReferencedAssembliesTemporaryFolderIsInvalidationSupportedIsHostedExecutionSystemRuntimeAssemblyVersionsystemRuntimeContainsTyperesolutionFolderruntimeAssemblyreferencedAssembliestemporaryFolderisInvalidationSupporteduseResolutionFolderAtRuntimesystemRuntimeAssemblyVersionget_ResolutionFolderset_ResolutionFolderget_RuntimeAssemblyset_RuntimeAssemblyget_ReferencedAssembliesset_ReferencedAssembliesget_TemporaryFolderset_TemporaryFolderget_IsInvalidationSupportedset_IsInvalidationSupportedget_IsHostedExecutionset_IsHostedExecutionget_SystemRuntimeAssemblyVersionset_SystemRuntimeAssemblyVersionSystemRuntimeContainsTypetypeNameNamespaceNameget_NamespaceNameGetNestedNamespacesGetTypesResolveTypeNameEventHandlerInvalidateGetNamespacesGetStaticParameterstypeWithoutArgumentsApplyStaticArgumentstypePathWithArgumentsstaticArgumentsGetInvokerExpressionsyntheticMethodBaseadd_Invalidateremove_InvalidateGetGeneratedAssemblyContentsBuildMachinePrivateBuildOfficialBuildFxBranchSyncCounterValueBranchNameBranchNamePrefixProductBuildOfAssemblyOfFileDefaultAsyncBuilderqueryCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWriterSystem.IOTextWritertextWriterPrintFormatLineToTextWriterConsoleget_OutPrintFormatget_ErrorPrintFormatToErrorPrintFormatLinePrintFormatLineToErrorget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazyPatterninputget_querykeysarrayIndex_arg2DefaultAsyncBuilder@157query@197init@thisImplicitExpressionConversionHelperMethodInfoNTty@442-30FT1ty@442-31FT2ty@442-32boolTyIEnumerableTypeDefty@442-33IQueryableTypeDefty@442-34QuerySourceTypeDefty@442-35patternInput@369MakeContainsCallContainspatternInput@374-1MakeElementAtCallElementAtpatternInput@401-2MakeMinByCallMinBypatternInput@407-3MakeMaxByCallMaxBypatternInput@412-4MakeMinByNullableCallMinByNullablepatternInput@418-5MakeMaxByNullableCallMaxByNullablepatternInput@445-6MakeAnyCallAnypatternInput@450-7MakeAllCallAllpatternInput@455-8MakeFirstFindCallFirstFindpatternInput@552-9FQ_double@553RuntimeMethodHandleFQ_single@554FQ_decimal@555FQ_int32@556FQ_int64@557FE_double@558FE_single@559FE_decimal@560FE_int32@561FE_int64@562FE@563MakeAverageByCallAverageBypatternInput@566-10FQ_double@567-1FQ_single@568-1FQ_decimal@569-1FQ_int32@570-1FQ_int64@571-1FE_double@572-1FE_single@573-1FE_decimal@574-1FE_int32@575-1FE_int64@576-1FE@577-1MakeAverageByNullableCallAverageByNullablepatternInput@581-11FQ_double@582-2FQ_single@583-2FQ_decimal@584-2FQ_int32@585-2FQ_int64@586-2FE_double@587-2FE_single@588-2FE_decimal@589-2FE_int32@590-2FE_int64@591-2FE@592-2MakeSumByCallSumBypatternInput@595-12FQ_double@596-3FQ_single@597-3FQ_decimal@598-3FQ_int32@599-3FQ_int64@600-3FE_double@601-3FE_single@602-3FE_decimal@603-3FE_int32@604-3FE_int64@605-3FE@606-3MakeSumByNullableCallSumByNullablepatternInput@620-13MakeFirstCallFirstpatternInput@621-14MakeFirstOrDefaultCallFirstOrDefaultpatternInput@622-15MakeLastCallLastpatternInput@623-16MakeLastOrDefaultCallLastOrDefaultpatternInput@624-17MakeSingleCallSinglepatternInput@625-18MakeSingleOrDefaultCallSingleOrDefaultpatternInput@626-19MakeCountCallCountMakeDefaultIfEmptyMakeSelectFQ@638FE@639-4MakeAppendFQ@659-1FE@660-5MakeAsQueryableF@668MakeEnumerableEmptyF@673-1MakeSelectManyFQ@682-2FE@683-6MakeWhereFQ@699-3FE@700-7MakeOrderByMakeOrderByDescendingMakeThenByMakeThenByDescendingMakeOrderByNullableMakeOrderByNullableDescendingMakeThenByNullableMakeThenByNullableDescendingMakeSkipMakeTakeMakeSkipWhileMakeTakeWhileMakeDistinctFQ@788-4FE@789-8MakeGroupByFQ@797-5FE@798-9MakeGroupValByFQ@811-6FE@812-10MakeJoinFQ@841-7FE@842-11MakeGroupJoinFQ@859-8FE@860-12|CallQueryBuilderRunQueryable|_||CallQueryBuilderRunValue|_||CallQueryBuilderRunEnumerable|_||CallQueryBuilderFor|_||CallQueryBuilderYield|_||CallQueryBuilderYieldFrom|_||CallQueryBuilderZero|_||CallQueryBuilderSourceIQueryable|_||CallQueryBuilderSourceIEnumerable|_||CallSortBy|_||CallSortByDescending|_||CallThenBy|_||CallThenByDescending|_||CallSortByNullable|_||CallSortByNullableDescending|_||CallThenByNullable|_||CallThenByNullableDescending|_||CallGroupBy|_||CallGroupValBy|_||CallMinBy|_||CallMaxBy|_||CallMinByNullable|_||CallMaxByNullable|_||CallWhere|_||CallHeadOrDefault|_||CallLast|_||CallLastOrDefault|_||CallExactlyOne|_||CallExactlyOneOrDefault|_||CallSelect|_||CallExists|_||CallForAll|_||CallDistinct|_||CallTake|_||CallTakeWhile|_||CallContains|_||CallNth|_||CallSkip|_||CallSkipWhile|_||CallJoin|_||CallGroupJoin|_||CallLeftOuterJoin|_||CallAverageBy|_||CallSumBy|_||CallAverageByNullable|_||CallSumByNullable|_||CallCount|_||CallHead|_||CallFind|_|GetGetMethod|Getter|_|prop|SpecificCall1|_||SpecificCall2|_||SpecificCall3|_|stripSuccessiveProjLets@249-1pexpr|LambdaNoDetupling|_|lamrestoreTupleProjectionsprojsloop@265-41rvsrprojs|LambdasNoDetupling|_|inpExprGetMethodFromHandleCallGenericStaticMethodmethHandleCallGenericInstanceMethodget_IsGenericMethodGetGenericMethodDefinitionBindGenericStaticMethodmethInfotyargsMakeGenericStaticMethodMakeGenericInstanceMethodget_ImplicitExpressionConversionHelperMethodInfoMakeImplicitExpressionConversionget_NTget_ty@442-30get_FT1get_ty@442-31get_FT2get_ty@442-32Booleanget_boolTyget_IEnumerableTypeDefget_ty@442-33get_IQueryableTypeDefget_ty@442-34get_QuerySourceTypeDefget_ty@442-35IsQuerySourceTytyIsIQueryableTyGetFuncTypeFuncExprToDelegateExprsrcTytargetTyMakersCallersInstanceFMakersCallers2FQFEMake@356MQMEisIQsrcItemTysrcCall@363CQCEMakeOrCallContainsOrElementAtget_patternInput@369get_MakeContainsget_CallContainsget_patternInput@374-1get_MakeElementAtget_CallElementAtMake@381-1valSelectorCall@392-1_keyItemTykeyElemTyMakeOrCallMinByOrMaxBygget_patternInput@401-2get_MakeMinByget_CallMinByget_patternInput@407-3get_MakeMaxByget_CallMaxByget_patternInput@412-4get_MakeMinByNullableget_CallMinByNullableget_patternInput@418-5get_MakeMaxByNullableget_CallMaxByNullableMake@426-2Call@436-2MakeOrCallAnyOrAllOrFirstFindget_patternInput@445-6get_MakeAnyget_CallAnyget_patternInput@450-7get_MakeAllget_CallAllget_patternInput@455-8get_MakeFirstFindget_CallFirstFindfailDueToUnsupportedInputTypeInSumByOrAverageBy@469unitVar0jInt64GetConstructorsMake$cont@495me_int32me_int64qbresTyNoNullableselectorGetGenericArgumentsDoubleMake@471-3isNullablemq_doubleme_doublemq_singleme_singlemq_decimalme_decimalmq_int32mq_int64TargetInvocationExceptionget_InnerExceptionCall$cont@524ce_doublece_singlece_decimalce_int32ce_int64resTyCall@510-3cq_doublecq_singlecq_decimalcq_int32cq_int64MakeOrCallAverageByOrSumByGenericfq_doublefq_singlefq_decimalfq_int32fq_int64fe_doublefe_singlefe_decimalfe_int32fe_int64hget_patternInput@552-9get_FQ_double@553get_FQ_single@554get_FQ_decimal@555get_FQ_int32@556get_FQ_int64@557get_FE_double@558get_FE_single@559get_FE_decimal@560get_FE_int32@561get_FE_int64@562get_FE@563get_MakeAverageByget_CallAverageByget_patternInput@566-10get_FQ_double@567-1get_FQ_single@568-1get_FQ_decimal@569-1get_FQ_int32@570-1get_FQ_int64@571-1get_FE_double@572-1get_FE_single@573-1get_FE_decimal@574-1get_FE_int32@575-1get_FE_int64@576-1get_FE@577-1get_MakeAverageByNullableget_CallAverageByNullableget_patternInput@581-11get_FQ_double@582-2get_FQ_single@583-2get_FQ_decimal@584-2get_FQ_int32@585-2get_FQ_int64@586-2get_FE_double@587-2get_FE_single@588-2get_FE_decimal@589-2get_FE_int32@590-2get_FE_int64@591-2get_FE@592-2get_MakeSumByget_CallSumByget_patternInput@595-12get_FQ_double@596-3get_FQ_single@597-3get_FQ_decimal@598-3get_FQ_int32@599-3get_FQ_int64@600-3get_FE_double@601-3get_FE_single@602-3get_FE_decimal@603-3get_FE_int32@604-3get_FE_int64@605-3get_FE@606-3get_MakeSumByNullableget_CallSumByNullableMake@611-4Call@616-4tupledArgMakeOrCallSimpleOpget_patternInput@620-13get_MakeFirstget_CallFirstget_patternInput@621-14get_MakeFirstOrDefaultget_CallFirstOrDefaultget_patternInput@622-15get_MakeLastget_CallLastget_patternInput@623-16get_MakeLastOrDefaultget_CallLastOrDefaultget_patternInput@624-17get_MakeSingleget_CallSingleget_patternInput@625-18get_MakeSingleOrDefaultget_CallSingleOrDefaultget_patternInput@626-19get_MakeCountget_CallCountget_MakeDefaultIfEmptyget_MakeSelectget_FQ@638get_FE@639-4get_MakeAppendget_FQ@659-1get_FE@660-5get_MakeAsQueryableget_F@668get_MakeEnumerableEmptyget_F@673-1get_MakeSelectManyget_FQ@682-2get_FE@683-6get_MakeWhereget_FQ@699-3get_FE@700-7MakeOrderByOrThenByget_MakeOrderByget_MakeOrderByDescendingget_MakeThenByget_MakeThenByDescendingget_MakeOrderByNullableget_MakeOrderByNullableDescendingget_MakeThenByNullableget_MakeThenByNullableDescendingGenMakeSkipWhileOrTakeWhileMakeSkipOrTakeget_MakeSkipget_MakeTakeget_MakeSkipWhileget_MakeTakeWhileget_MakeDistinctget_FQ@788-4get_FE@789-8get_MakeGroupByget_FQ@797-5get_FE@798-9get_MakeGroupValByget_FQ@811-6get_FE@812-10get_MakeJoinget_FQ@841-7get_FE@842-11get_MakeGroupJoinget_FQ@859-8get_FE@860-12walk@876-1RewriteExpr|LetExprReduction|_|get_IsValueType|MacroReduction|_|$cont@897-1|MacroReduction|_|$cont@897|MacroReduction|_|MacroExpandget_|CallQueryBuilderRunQueryable|_|get_|CallQueryBuilderRunValue|_|get_|CallQueryBuilderRunEnumerable|_|get_|CallQueryBuilderFor|_|get_|CallQueryBuilderYield|_|get_|CallQueryBuilderYieldFrom|_|get_|CallQueryBuilderZero|_|get_|CallQueryBuilderSourceIQueryable|_|get_|CallQueryBuilderSourceIEnumerable|_|get_|CallSortBy|_|get_|CallSortByDescending|_|get_|CallThenBy|_|get_|CallThenByDescending|_|get_|CallSortByNullable|_|get_|CallSortByNullableDescending|_|get_|CallThenByNullable|_|get_|CallThenByNullableDescending|_|get_|CallGroupBy|_|get_|CallGroupValBy|_|get_|CallMinBy|_|get_|CallMaxBy|_|get_|CallMinByNullable|_|get_|CallMaxByNullable|_|get_|CallWhere|_|get_|CallHeadOrDefault|_|get_|CallLast|_|get_|CallLastOrDefault|_|get_|CallExactlyOne|_|get_|CallExactlyOneOrDefault|_|get_|CallSelect|_|get_|CallExists|_|get_|CallForAll|_|get_|CallDistinct|_|get_|CallTake|_|get_|CallTakeWhile|_|get_|CallContains|_|get_|CallNth|_|get_|CallSkip|_|get_|CallSkipWhile|_|get_|CallJoin|_|get_|CallGroupJoin|_|get_|CallLeftOuterJoin|_|get_|CallAverageBy|_|get_|CallSumBy|_|get_|CallAverageByNullable|_|get_|CallSumByNullable|_|get_|CallCount|_|get_|CallHead|_|get_|CallFind|_||ZeroOnElseBranch|_|GetPropertyConvMutableToImmutableconvmutExprConvertImmutableConsumerToMutableConsumerimmutConsumingVarimmutConsumingExpr|AnyNestedQuery|_||EnumerableNestedQuery|_|CommitTransInnerResultTransFor@1154canElimqTyimmutSelectorVarimmutResElemTysourceConvmutSourceimmutSelectorget_RestTransInner$cont@1325immutOuterSourceimmutOuterResultGroupVarimmutOuterKeyVarimmutOuterKeySelectorimmutInnerSourceimmutInnerResultKeyVarimmutInnerKeyVarimmutInnerKeySelectorimmutElementSelectorTransInner$cont@1336-1immutInnerResultGroupVarTransInner$cont@1350-2immutInnerSourceTyTransInner$cont@1134-5immutQueryTransInner$cont@1134-4TransInner$cont@1134-3TransInnerTransInnerAndCommitIsAssignableFromTransInnerNoCheckTransJoinInputsTransInnerApplicativeTransInnerApplicativeAndCommitTransInnerWithFinalConsumeimmutSourceTransNestedInnerWithConsumerTransNestedOuterquotEliminateNestedQueriesEvalNonNestedInnerqueryProducingSequenceEvalNonNestedOutertm|CallQ|_|clo1self2@YesNoarg00v2vslist1list2tabwalkimmutConsumingVarReplacementExprIsSelectIsOtherIsSourceNewSelectget_IsSelectNewOtherget_IsOtherNewSourceget_IsSourceisQTymutSelectorVarmutSelectorBodycheckThenBySourceImplicitExpressionConversionHelperMethodInfo@310NT@317FT1@318FT2@319IEnumerableTypeDef@325IQueryableTypeDef@326QuerySourceTypeDef@327MakeContains@369CallContains@369MakeElementAt@374CallElementAt@374MakeMinBy@401CallMinBy@401MakeMaxBy@407CallMaxBy@407MakeMinByNullable@412CallMinByNullable@412MakeMaxByNullable@418CallMaxByNullable@418MakeAny@445CallAny@445MakeAll@450CallAll@450MakeFirstFind@455CallFirstFind@455MakeAverageBy@552CallAverageBy@552MakeAverageByNullable@566CallAverageByNullable@566MakeSumBy@581CallSumBy@581MakeSumByNullable@595CallSumByNullable@595MakeFirst@620CallFirst@620MakeFirstOrDefault@621CallFirstOrDefault@621MakeLast@622CallLast@622MakeLastOrDefault@623CallLastOrDefault@623MakeSingle@624CallSingle@624MakeSingleOrDefault@625CallSingleOrDefault@625MakeCount@626CallCount@626MakeDefaultIfEmpty@628MakeSelect@637MakeAppend@658MakeAsQueryable@667MakeEnumerableEmpty@672MakeSelectMany@681MakeWhere@698MakeOrderBy@723MakeOrderByDescending@728MakeThenBy@733MakeThenByDescending@738MakeOrderByNullable@744MakeOrderByNullableDescending@745MakeThenByNullable@746MakeThenByNullableDescending@747MakeSkip@771MakeTake@775MakeSkipWhile@779MakeTakeWhile@783MakeDistinct@787MakeGroupBy@796MakeGroupValBy@810MakeJoin@840MakeGroupJoin@858|CallQueryBuilderRunQueryable|_|@944|CallQueryBuilderRunValue|_|@945|CallQueryBuilderRunEnumerable|_|@946|CallQueryBuilderFor|_|@947|CallQueryBuilderYield|_|@948|CallQueryBuilderYieldFrom|_|@949|CallQueryBuilderZero|_|@950|CallQueryBuilderSourceIQueryable|_|@951|CallQueryBuilderSourceIEnumerable|_|@952|CallSortBy|_|@954|CallSortByDescending|_|@955|CallThenBy|_|@956|CallThenByDescending|_|@957|CallSortByNullable|_|@959|CallSortByNullableDescending|_|@960|CallThenByNullable|_|@961|CallThenByNullableDescending|_|@962|CallGroupBy|_|@964|CallGroupValBy|_|@965|CallMinBy|_|@966|CallMaxBy|_|@967|CallMinByNullable|_|@968|CallMaxByNullable|_|@969|CallWhere|_|@970|CallHeadOrDefault|_|@971|CallLast|_|@972|CallLastOrDefault|_|@973|CallExactlyOne|_|@974|CallExactlyOneOrDefault|_|@975|CallSelect|_|@976|CallExists|_|@977|CallForAll|_|@978|CallDistinct|_|@979|CallTake|_|@980|CallTakeWhile|_|@981|CallContains|_|@982|CallNth|_|@983|CallSkip|_|@984|CallSkipWhile|_|@985|CallJoin|_|@989|CallGroupJoin|_|@990|CallLeftOuterJoin|_|@991|CallAverageBy|_|@992|CallSumBy|_|@993|CallAverageByNullable|_|@995|CallSumByNullable|_|@996|CallCount|_|@998|CallHead|_|@999|CallFind|_|@1000QueryableExpression`1SumDefaultIfEmptyAsQueryableSelectManyIOrderedQueryable`1get_MethodHandleelementSelectorisPartiallyImmutableRecordMemberInitializationHelperMethNewAnonymousObjectHelperMethtupleTypesty@442-14ty@442-15ty@442-16ty@442-17ty@442-18ty@442-19ty@442-20ty@442-21ty@442-22ty@442-23ty@442-24ty@442-25ty@442-26ty@442-27ty@442-28ty@442-29anonObjectTypesarray@146len@148res@149-1tupleToAnonTypeMapt@132anonToTupleTypeMapt@137-1IsNewAnonymousObjectHelperQmhandle@246minfo@247gmd@248System.Collections.ConcurrentConcurrentDictionary`2memoizeget_isPartiallyImmutableRecordget_MemberInitializationHelperMethget_NewAnonymousObjectHelperMethleftSequentialSeries@87|LeftSequentialSeries|propSetList@97varArg|PropSetList|_|list|ObjectConstruction|_|get_tupleTypesget_ty@442-14get_ty@442-15get_ty@442-16get_ty@442-17get_ty@442-18get_ty@442-19get_ty@442-20get_ty@442-21get_ty@442-22get_ty@442-23get_ty@442-24get_ty@442-25get_ty@442-26get_ty@442-27get_ty@442-28get_ty@442-29get_anonObjectTypesget_array@146get_len@148get_res@149-1get_tupleToAnonTypeMapget_t@132get_anonToTupleTypeMapget_t@137-1|NewAnonymousObject|_|OneNewAnonymousObjectNewAnonymousObjectIFormattablewalk@171instnewTypeAnonymousObjectGetRewriteTupleType|RecordFieldGetSimplification|_|ConvImmutableTypeToMutableTypeget_IsNewAnonymousObjectHelperQget_mhandle@246get_minfo@247get_gmd@248CleanupLeafSimplifyConsumingExprProduceMoreMutablestipfMakeSeqConvSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-Equalsyget_CanWritetpropInfoIsTupleConvIsRecordConvIsGroupingConvIsSeqConvNoConvIsNoConv_unique_NoConvNewTupleConvget_IsTupleConvNewRecordConvget_IsRecordConvNewGroupingConvget_IsGroupingConvNewSeqConvget_IsSeqConvget_NoConvget_IsNoConvmappingconvsget_PropertyTypeisPartiallyImmutableRecord@67MemberInitializationHelperMeth@72NewAnonymousObjectHelperMeth@77tupleTypes@121anonObjectTypes@130res@149tupleToAnonTypeMap@131anonToTupleTypeMap@136IsNewAnonymousObjectHelperQ@245instanceBindingFlagsStringConcatshowAllNullableConstructorty@442-13|GenericEqualityQ|_||EqualsQ|_||GreaterQ|_||GreaterEqQ|_||LessQ|_||LessEqQ|_||NotEqQ|_||NullableEqualsQ|_||NullableNotEqQ|_||NullableGreaterQ|_||NullableGreaterEqQ|_||NullableLessQ|_||NullableLessEqQ|_||NullableEqualsNullableQ|_||NullableNotEqNullableQ|_||NullableGreaterNullableQ|_||NullableGreaterEqNullableQ|_||NullableLessNullableQ|_||NullableLessEqNullableQ|_||EqualsNullableQ|_||NotEqNullableQ|_||GreaterNullableQ|_||GreaterEqNullableQ|_||LessNullableQ|_||LessEqNullableQ|_||MakeDecimalQ|_||NullablePlusQ|_||NullablePlusNullableQ|_||PlusNullableQ|_||NullableMinusQ|_||NullableMinusNullableQ|_||MinusNullableQ|_||NullableMultiplyQ|_||NullableMultiplyNullableQ|_||MultiplyNullableQ|_||NullableDivideQ|_||NullableDivideNullableQ|_||DivideNullableQ|_||NullableModuloQ|_||NullableModuloNullableQ|_||ModuloNullableQ|_||NotQ|_||NegQ|_||PlusQ|_||DivideQ|_||MinusQ|_||MultiplyQ|_||ModuloQ|_||ShiftLeftQ|_||ShiftRightQ|_||BitwiseAndQ|_||BitwiseOrQ|_||BitwiseXorQ|_||BitwiseNotQ|_||CheckedNeg|_||CheckedPlusQ|_||CheckedMinusQ|_||CheckedMultiplyQ|_||ConvCharQ|_||ConvDecimalQ|_||ConvFloatQ|_||ConvFloat32Q|_||ConvSByteQ|_||ConvInt16Q|_||ConvInt32Q|_||ConvIntQ|_||ConvInt64Q|_||ConvByteQ|_||ConvUInt16Q|_||ConvUInt32Q|_||ConvUInt64Q|_||ConvNullableCharQ|_||ConvNullableDecimalQ|_||ConvNullableFloatQ|_||ConvNullableFloat32Q|_||ConvNullableSByteQ|_||ConvNullableInt16Q|_||ConvNullableInt32Q|_||ConvNullableIntQ|_||ConvNullableInt64Q|_||ConvNullableByteQ|_||ConvNullableUInt16Q|_||ConvNullableUInt32Q|_||ConvNullableUInt64Q|_||UnboxGeneric|_||TypeTestGeneric|_||CheckedConvCharQ|_||CheckedConvSByteQ|_||CheckedConvInt16Q|_||CheckedConvInt32Q|_||CheckedConvInt64Q|_||CheckedConvByteQ|_||CheckedConvUInt16Q|_||CheckedConvUInt32Q|_||CheckedConvUInt64Q|_||ImplicitExpressionConversionHelperQ|_||MemberInitializationHelperQ|_||NewAnonymousObjectHelperQ|_||ArrayLookupQ|_|substHelperMethMemberInitializationHelper_xNewAnonymousObjectHelperImplicitExpressionConversionHelperget_bindingFlagsget_instanceBindingFlagsget_IsArrayget_IsByRefget_IsPointerisNamedTypeequivHeadTypesty1ty2getFunctionTypeget_StringConcatSubstHelperget_showAllget_NullableConstructorget_ty@442-13|SpecificCallToMethod|_|mhandleget_|GenericEqualityQ|_|get_|EqualsQ|_|get_|GreaterQ|_|get_|GreaterEqQ|_|get_|LessQ|_|get_|LessEqQ|_|get_|NotEqQ|_|get_|NullableEqualsQ|_|get_|NullableNotEqQ|_|get_|NullableGreaterQ|_|get_|NullableGreaterEqQ|_|get_|NullableLessQ|_|get_|NullableLessEqQ|_|get_|NullableEqualsNullableQ|_|get_|NullableNotEqNullableQ|_|get_|NullableGreaterNullableQ|_|get_|NullableGreaterEqNullableQ|_|get_|NullableLessNullableQ|_|get_|NullableLessEqNullableQ|_|get_|EqualsNullableQ|_|get_|NotEqNullableQ|_|get_|GreaterNullableQ|_|get_|GreaterEqNullableQ|_|get_|LessNullableQ|_|get_|LessEqNullableQ|_|get_|MakeDecimalQ|_|get_|NullablePlusQ|_|get_|NullablePlusNullableQ|_|get_|PlusNullableQ|_|get_|NullableMinusQ|_|get_|NullableMinusNullableQ|_|get_|MinusNullableQ|_|get_|NullableMultiplyQ|_|get_|NullableMultiplyNullableQ|_|get_|MultiplyNullableQ|_|get_|NullableDivideQ|_|get_|NullableDivideNullableQ|_|get_|DivideNullableQ|_|get_|NullableModuloQ|_|get_|NullableModuloNullableQ|_|get_|ModuloNullableQ|_|get_|NotQ|_|get_|NegQ|_|get_|PlusQ|_|get_|DivideQ|_|get_|MinusQ|_|get_|MultiplyQ|_|get_|ModuloQ|_|get_|ShiftLeftQ|_|get_|ShiftRightQ|_|get_|BitwiseAndQ|_|get_|BitwiseOrQ|_|get_|BitwiseXorQ|_|get_|BitwiseNotQ|_|get_|CheckedNeg|_|get_|CheckedPlusQ|_|get_|CheckedMinusQ|_|get_|CheckedMultiplyQ|_|get_|ConvCharQ|_|get_|ConvDecimalQ|_|get_|ConvFloatQ|_|get_|ConvFloat32Q|_|get_|ConvSByteQ|_|get_|ConvInt16Q|_|get_|ConvInt32Q|_|get_|ConvIntQ|_|get_|ConvInt64Q|_|get_|ConvByteQ|_|get_|ConvUInt16Q|_|get_|ConvUInt32Q|_|get_|ConvUInt64Q|_|get_|ConvNullableCharQ|_|get_|ConvNullableDecimalQ|_|get_|ConvNullableFloatQ|_|get_|ConvNullableFloat32Q|_|get_|ConvNullableSByteQ|_|get_|ConvNullableInt16Q|_|get_|ConvNullableInt32Q|_|get_|ConvNullableIntQ|_|get_|ConvNullableInt64Q|_|get_|ConvNullableByteQ|_|get_|ConvNullableUInt16Q|_|get_|ConvNullableUInt32Q|_|get_|ConvNullableUInt64Q|_|get_|UnboxGeneric|_|get_|TypeTestGeneric|_|get_|CheckedConvCharQ|_|get_|CheckedConvSByteQ|_|get_|CheckedConvInt16Q|_|get_|CheckedConvInt32Q|_|get_|CheckedConvInt64Q|_|get_|CheckedConvByteQ|_|get_|CheckedConvUInt16Q|_|get_|CheckedConvUInt32Q|_|get_|CheckedConvUInt64Q|_|get_|ImplicitExpressionConversionHelperQ|_|get_|MemberInitializationHelperQ|_|get_|NewAnonymousObjectHelperQ|_|get_|ArrayLookupQ|_|get_substHelperMeth|Sequentials||MemberInitializationQ|_||NewAnonymousObjectQ|_||NullableConstruction|_|PropertyMemberExpressionbuild@432argPNewNewExpressionbuild@703-1argsPKeyNotFoundExceptionAndAlsoOrElseConstantConstantExpressionTypeAsUnaryExpressionTypeIsTypeBinaryExpressionget_BaseTypeMethodCallExpressionMemberInitMemberInitExpressionGetPropertiesNotNegateDivideSubtractMultiplyModuloLeftShiftRightShiftAndOrExclusiveOrNegateCheckedAddCheckedSubtractCheckedMultiplyCheckedConvertCharSByteInt16ByteUInt16UInt32UInt64ConvertCheckedArrayIndexNewArrayInitNewArrayExpressionEqualLambdaExpressionConditionConditionalExpressionConvExprToLinqInContextenvinptransBinOpaddConvertLeftx1x2addConvertRightexprErasedConstructorConvObjArgobjOptcoerceToConvExprsToLinqesParameterConvVarToLinqQuotationToExpressionQuotationToLambdaExpressionCompileEvaluateQuotationvarEnvvarEnv@get_varEnvminfoisg1gmdMemberAssignmentpropInfospropsNotEqualGreaterThanGreaterThanOrEqualLessThanLessThanOrEqualtablevPfvfvsToInt16ToUInt16ToIntToEnumToInt32ToUInt32ToInt64ToUInt64IntPtrToIntPtrUIntPtrToUIntPtrToDecimalToCharop_QmarkGreaterEqualsop_QmarkGreaterop_QmarkLessEqualsop_QmarkLessop_QmarkEqualsop_QmarkLessGreaterop_GreaterEqualsQmarkop_GreaterQmarkop_LessEqualsQmarkop_LessQmarkop_EqualsQmarkop_LessGreaterQmarkop_QmarkGreaterEqualsQmarkop_QmarkGreaterQmarkop_QmarkLessEqualsQmarkop_QmarkLessQmarkop_QmarkEqualsQmarkop_QmarkLessGreaterQmarkop_QmarkPlusop_PlusQmarkop_QmarkPlusQmarkop_QmarkMinusop_MinusQmarkop_QmarkMinusQmarkop_QmarkMultiplyop_MultiplyQmarkop_QmarkMultiplyQmarkop_QmarkPercentop_PercentQmarkop_QmarkPercentQmarkop_QmarkDivideop_DivideQmarkop_QmarkDivideQmarkStringConcat@191NullableConstructor@202|GenericEqualityQ|_|@221|EqualsQ|_|@222|GreaterQ|_|@223|GreaterEqQ|_|@224|LessQ|_|@225|LessEqQ|_|@226|NotEqQ|_|@227|NullableEqualsQ|_|@229|NullableNotEqQ|_|@230|NullableGreaterQ|_|@231|NullableGreaterEqQ|_|@232|NullableLessQ|_|@233|NullableLessEqQ|_|@234|NullableEqualsNullableQ|_|@236|NullableNotEqNullableQ|_|@237|NullableGreaterNullableQ|_|@238|NullableGreaterEqNullableQ|_|@239|NullableLessNullableQ|_|@240|NullableLessEqNullableQ|_|@241|EqualsNullableQ|_|@243|NotEqNullableQ|_|@244|GreaterNullableQ|_|@245|GreaterEqNullableQ|_|@246|LessNullableQ|_|@247|LessEqNullableQ|_|@248|MakeDecimalQ|_|@250|NullablePlusQ|_|@253|NullablePlusNullableQ|_|@254|PlusNullableQ|_|@255|NullableMinusQ|_|@257|NullableMinusNullableQ|_|@258|MinusNullableQ|_|@259|NullableMultiplyQ|_|@261|NullableMultiplyNullableQ|_|@262|MultiplyNullableQ|_|@263|NullableDivideQ|_|@265|NullableDivideNullableQ|_|@266|DivideNullableQ|_|@267|NullableModuloQ|_|@269|NullableModuloNullableQ|_|@270|ModuloNullableQ|_|@271|NotQ|_|@273|NegQ|_|@274|PlusQ|_|@275|DivideQ|_|@276|MinusQ|_|@277|MultiplyQ|_|@278|ModuloQ|_|@279|ShiftLeftQ|_|@280|ShiftRightQ|_|@281|BitwiseAndQ|_|@282|BitwiseOrQ|_|@283|BitwiseXorQ|_|@284|BitwiseNotQ|_|@285|CheckedNeg|_|@286|CheckedPlusQ|_|@287|CheckedMinusQ|_|@288|CheckedMultiplyQ|_|@289|ConvCharQ|_|@291|ConvDecimalQ|_|@292|ConvFloatQ|_|@293|ConvFloat32Q|_|@294|ConvSByteQ|_|@295|ConvInt16Q|_|@296|ConvInt32Q|_|@297|ConvIntQ|_|@298|ConvInt64Q|_|@299|ConvByteQ|_|@300|ConvUInt16Q|_|@301|ConvUInt32Q|_|@302|ConvUInt64Q|_|@303|ConvNullableCharQ|_|@305|ConvNullableDecimalQ|_|@306|ConvNullableFloatQ|_|@307|ConvNullableFloat32Q|_|@308|ConvNullableSByteQ|_|@309|ConvNullableInt16Q|_|@310|ConvNullableInt32Q|_|@311|ConvNullableIntQ|_|@312|ConvNullableInt64Q|_|@313|ConvNullableByteQ|_|@314|ConvNullableUInt16Q|_|@315|ConvNullableUInt32Q|_|@316|ConvNullableUInt64Q|_|@317|UnboxGeneric|_|@323|TypeTestGeneric|_|@324|CheckedConvCharQ|_|@325|CheckedConvSByteQ|_|@326|CheckedConvInt16Q|_|@327|CheckedConvInt32Q|_|@328|CheckedConvInt64Q|_|@329|CheckedConvByteQ|_|@330|CheckedConvUInt16Q|_|@331|CheckedConvUInt32Q|_|@332|CheckedConvUInt64Q|_|@333|ImplicitExpressionConversionHelperQ|_|@334|MemberInitializationHelperQ|_|@335|NewAnonymousObjectHelperQ|_|@336|ArrayLookupQ|_|@337substHelperMeth@340succeed@2442choosercollectorSubscribePairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNexterrorCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedOnCompletedOnErrorwSystem-IObservable`1-SubscribelastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2start@2010-2awaitEithera1a2msecNewOkNewErrorNewCanceledocearg0_arg3AsyncGetResponseWebRequestAsyncDownloadStringWebClientUriaddresscanceledWebExceptionget_StatusWebExceptionStatusreqBeginGetResponseEndGetResponseAbortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg5downloadAsyncAsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteWaitHandle.AsyncWaitOneAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamExceptionBeginWriteEndWriteObjectDisposedExceptionaiarTaskget_IsCanceleddisposeReg@1224barrierregTaskCompletionSource`1ActionRegisterget_TaskProceedisStoppedget_ProceedStoptcsSetCanceledTrySetExceptionTrySetResultasyncget_asyncswitchToswitchToNewThreadswitchToThreadPoolpostOrQueuedelimitSyncContextprotectedPrimitiveWithResyncunprotectedPrimitiveWithResyncManualResetEventresEventf@4244-10f@4244-11get_ResultAvailableEventWaitHandlesavedContsf@4244-12f@4244-13matchValueInterlockedCompareExchangelatchDothreadget_CurrentThreadContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultreuseThreadWaitOnedefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutget_threadStartCallbackForStartThreadWithTrampolinestartAsyncqueueAsyncget_IsCancellationRequestedprotectedPrimitiveCoreprotectedPrimitivereifyresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsOkIsCanceledget_IsOkcexndefaultCancellationTokenSource@561threadStartCallbackForStartThreadWithTrampoline@672doneA@828async@877loop@419-40once@1263underCurrentThreadStackcontToTailCallfinishTask@1340firstExnresultsremainingf@4244-14recordSuccess@1352f@4244-15recordFailure@1362onCancel@1625oncebeginAction@1772onCancel@1783-2delcontinuation@1891completedTaskf@4244-16f@4244-17scan@2149timeoutAsynctimeoutCtsscanNoTimeout@2181processFirstArrival@2215processFirstArrival@2230-3savedCConttimerTimerregistrationdueTimeTimerCallbackrwhRegisteredWaitHandleUnregistertimeOuttimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg8_arg9ar_arg4eventArgsctsReferrget_IsFaultedget_ExceptionContinueWithTaskContinuationOptions_arg6_arg7replyasyncReplyOfNativeIntInlinedToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1838-39ShapePatternBoolPatternStringPatternSinglePatternDoublePatternCharPatternSBytePatternBytePatternInt16PatternUInt16PatternInt32PatternUInt32PatternInt64PatternUInt64PatternUnitPatternstripSuccessiveProjLets@1707|TupledLambda|_||TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1funTyCexprTyCty@442-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@319-37xs|FrontAndBack|_|get_funTyCget_exprTyCget_ty@442-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_||Comb1|_||Comb2|_||Comb3|_|VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRcheckTypesWeakSRcheckArgsparamInfosloop@600-38checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuoteget_IsEnumToObjectmkLiftedValueOpGmkLambdavarmkTryWithe1v1e2e3mkApplicationv_0v_1mkLetRawWithCheck_arg1_0_arg1_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsemkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetmkStaticPropSetmkInstancePropSetmkInstanceMethodCallmkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionBinderParameterModifierbindMethodHelperbindModulePropertybindModuleFunctionmkNamedTypebindProppropNameretTypeargTypesGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@965l_0l_1chopinstMethngmethmethTypeArgsbindMethpinfoIsStaticdecodeFunTydecodeArrayTytysmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsu_dtypeu_dtypes|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsunpickleExprlocalTypeunpickleReflectedDefnslocalAssemblyfillHolesInRawExprfreeInExprAccbvsmkTyparSubstsubstituteInExprtmsubstReadreadToEndsget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4244-9qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializesplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20_arg19_arg20_arg21p_0p_1p_2p_3p_4_arg22_arg23_arg24_arg25x_0x_1_arg26_arg27_arg28_arg29_arg30_arg31_arg32_arg33_arg34_arg35_arg10_arg11_arg12_arg13_arg14_arg15_arg16_arg17_arg18uphase2bytesarg10@arg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qOneOrMoreRLinearqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@324-1exprTyC@325mscorlib@1108f@4244-8GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@211typeL@212o|Lambda|_|@216ucaseL@218minfoL@219cinfoL@220cinfopinfoL@221finfoL@222|NLambdas|_|@223Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueisFunctionTypedestFunTyget_instanceInvokeFlagsInvokeMemberinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitget_CharsparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureSubstringParseparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@309capturePrecisionArg@337precisioncapture1unboxAsInt64unboxAsUInt64op_GreaterThanOrEqualIsNaNformatOne$cont@463formatOne$cont@430-1formatOne$cont@484-2xobjformatOneoutaIsSurrogatePairgo@523-3finalizerun@521initializecapture@540gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@176invariantCulture@267defaultInfo@288chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@555-7stacknextpushBreaksavingpopBreakforceBreakfitLeaf@501maxWidthlayouttextWidthbreaksfit@478leafFormattersquashToaddText@560rstrstextnewLine@563addL@570optsz_0z_1showLnewLine@606-1chanaddL@613-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@734-6conv@735countNodes@787stopShort@788objL@791showModedepthLimprecsameObjL@792IndexOfLastIndexOfobjWithReprL@794showMode@794recdAtomicTupleL@876bracketIfL@882basicLproject2@964n1n2b1b2possibleKeyValueL@981objLworditemL@893-2project@903-1get_RankGetLowerBoundGetLengthGetInterfacesSortreprL@885showMode@885-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowAllIsShowAllShowTopLevelBindingIsShowTopLevelBinding_unique_ShowAll_unique_ShowTopLevelBindingget_ShowAllget_IsShowAllget_ShowTopLevelBindingget_IsShowTopLevelBindingarg10itSystem-Collections-IComparer-ComparenDepthIsDigitoptionty@442-10ty@442-11get_optionget_ty@442-10get_funcget_ty@442-11isListTypeIsTupleTypeIsFunctionTypeIsRecordTypeIsSumTypeUnitTypeIsUnitTypeIsObjectType_unique_UnitTypeNewTupleTypeget_IsTupleTypeNewFunctionTypeget_IsFunctionTypeNewRecordTypeget_IsRecordTypeNewSumTypeget_IsSumTypeget_UnitTypeget_IsUnitTypeNewObjectTypeget_IsObjectTypeIsTupleValueIsFunctionClosureValueIsRecordValueIsConstructorValueIsExceptionValueUnitValueIsUnitValueIsObjectValue_unique_UnitValueNewTupleValueget_IsTupleValueNewFunctionClosureValueget_IsFunctionClosureValueNewRecordValueget_IsRecordValueNewConstructorValueget_IsConstructorValueNewExceptionValueget_IsExceptionValueget_UnitValueget_IsUnitValueNewObjectValueget_IsObjectValueGetValueInfoOfObject$cont@357reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@167taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLlistLsquareBracketLbraceLconsume@199itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@134option@280-1func@281-1nullL@659measureL@660tab64tabParseget_tab64get_tabParsef@4244-5x64FromInt64DynamicFromZeroFromOneFromInt32FromInt64IsNullOrEmptyNumberStylesf@4244-6getParseFromStringDynamicFromStringtab64@296tabParse@297Microsoft-FSharp-Control-IDelegateEvent`1-AddHandlerMicrosoft-FSharp-Control-IDelegateEvent`1-RemoveHandlermidebugty@442ty@442-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagscmaNameemptyObjArraytuple1ty@442-2tuple2ty@442-3tuple3ty@442-4tuple4ty@442-5tuple5ty@442-6tuple6ty@442-7tuple7ty@442-8tuple8ty@442-9maxTupletupleEncFieldget_debugget_ty@442get_ty@442-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeget_cmaNameget_assemblyNameCustomAttributeTypedArgumentget_Constructorget_ConstructorArgumentstryFindCompilationMappingAttributeFromData$cont@101tryFindCompilationMappingAttributeFromDatafindCompilationMappingAttributeFromDataget_ReflectionOnlytryFindCompilationMappingAttributeFromTypetryFindCompilationMappingAttributeFromMemberInfofindCompilationMappingAttributeFromMemberInfoisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@185GetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@238-1isConstructorReprget@242-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@442-2get_tuple2get_ty@442-3get_tuple3get_ty@442-4get_tuple4get_ty@442-5get_tuple5get_ty@442-6get_tuple6get_ty@442-7get_tuple7get_ty@442-8get_tuple8get_ty@442-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiesgetTupleConstructorMethodgetTupleCtorreader@447getTupleReadergetTupleConstructorgetTupleConstructorInfoget@481-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@587-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41cmaName@93assemblyName@94emptyObjArray@333tuple1@338tuple2@339tuple3@340tuple4@341tuple5@342tuple6@343tuple7@344tuple8@345ensureType@825GetNamesetelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtolerancecountAuxheightget_tolerancerebalancet1t2addbalancesplitpivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1minimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackscompares1s2loop@476-35toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayget_stackget_startedloop@708-36PickFindKeyTryFindKeykvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@294foldSectionloop@314-33f@146-4loop@566-34kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@220-25loop@230-26len1Exists2loop@237-27loop@247-28ForAll2loop@253-29loop@265-30loop@304-31loop@312-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceBySortInPlaceSortWithgo@541-1FindIndexgo@553-2TryFindIndexPermuteindexMapGetSubArraystartIndexFillParallelLoopResultisChosenisTruelistschooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24sepstringsstrcheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3sourcesTCollectionfromGeneratorgo@1073CompareWithTruncateloop@1161-16loop@1174-17f@555-1windowSizeWindowedoneStepTo@1219prefixenumeratorRf@4244-2f@4244-3CacheReadOnlyDistinctByCountByenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionscreateiter@632compsouterEnumcurrInnerEnumFinishtakeOuter@667currElementtakeInner@660EnumerateUsingmkConcatSeqgetCurr@705-1currstart@708-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@466GenerateFromEnumeratorIsStopIsYieldIsGoto_unique_Stopget_Stopget_IsStopNewYieldget_IsYieldget_IsGotoApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@155choosenext@178filterunfoldgetCurrent@221uptolastOptionf@4244readAndCleargetCurr@258start@261finish@264generateWhileSomeNotStartedIsNotStartedInProcessIsInProcessFinishedIsFinished_unique_NotStarted_unique_InProcess_unique_Finishedget_NotStartedget_IsNotStartedget_InProcessget_IsInProcessget_Finishedget_IsFinishedDoMoveNextfinalIndexactiveStructuralFromFunctionSystem-Collections-Generic-IComparer`1-CompareLimitedStructurallimitReferenceFromFunctionshasherequalityhasheqBase1Base2ZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@173-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@395-15sortWithcmprevAppendmergesort2sort3$cont@434cxycyzsort3trivialstableSortInnerlastableSortFunc`1creatorCreateFromValueget_IsValueCreatedLazy`1.get_IsDelayedLazy`1.get_IsForcedForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternop_LessThanop_GreaterThanop_LessThanOrEqualop_Equalityop_InequalityFailWithInvalidArgargumentNameNullArgInvalidOpRethrowObsoleteAttributeReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_UnaryNegationop_Multiplyop_Divisionop_Modulusop_UnaryPlusop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementEnvironmentexitcodeKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleLocklockObjectTLockTypeOfMethodHandleOf_callTypeDefOfSizeOfHashlimitedHashIdentityget_InTextReaderConsoleInConsoleOutConsoleErrorop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundSignLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4744RangeInt32stopgen@4744-1RangeInt64gen@4744-2RangeUInt64gen@4744-3RangeUInt32gen@4744-4RangeIntPtrgen@4744-5RangeUIntPtrgen@4744-6RangeInt16gen@4744-7RangeUInt16gen@4744-8RangeSBytegen@4744-9RangeBytegen@4813-10RangeDoublegen@4813-11RangeSinglegen@4721-12oneRangeGenericgen@4744-13zeroRangeStepGenericgen@4721-14tupledArg_0RangeCharloop@4841PowByteloop@4841-1PowSByteloop@4841-2PowInt16loop@4841-3PowUInt16loop@4841-4PowInt32loop@4841-5PowUInt32loop@4841-6PowInt64loop@4841-7PowUInt64loop@4841-8PowIntPtrloop@4841-9PowUIntPtrloop@4841-10PowSingleloop@4841-11PowDoubleloop@4841-12PowDecimalloop@4841-13mulPowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeStepResultupcanStarttupledArg_4OverflowExceptionPowDefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalCompareranyToStringShowingNullGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2120.cctor$cont@2153-2.cctor$cont@2153-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64FormatExceptionparse@2251parseOctalUInt64parse@2255-1parseBinaryUInt64TrimParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2330-3aty.cctor$cont@2354-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2445bty.cctor$cont@2459-5AdditionDynamicdyn@2482-6.cctor$cont@2497-6CheckedAdditionDynamicdyn@2522-12.cctor$cont@2536-7MultiplyDynamicdyn@2559-18.cctor$cont@2573-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@953yobjarr1GenericCompare$cont@965-1GenericComparecheck@1068lenxbasexbaseycheck1@1091lenx1basex0basex1basey0basey1check0@1090lenx0GetLongLengthprecheck@1105ndimscheckN@1115idxsbaseIdxcheck@1124-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1395erGenericEqualitySingleArrayfeq@1412GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1464iecGenericEqualityObjcheck@1554-2check1@1572-1check0@1571-1precheck@1579-1checkN@1587-1check@1594-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodesznodeCountFreshTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativescaleGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_TypeInfoop_Ampop_BooleanAndop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringAddressOpNotFirstClassString@635NoNegateMinValueString@636InputSequenceEmptyString@638InputArrayEmptyString@640InputMustBeNonNegativeString@642NaNException@935fsComparer@1167fsComparerNoThrow@1168fsEqualityComparer@1618fsEqualityComparerER@1623fsUnlimitedHasherER@1770fsUnlimitedHasher@1771GenericComparer@2030GenericEqualityComparer@2031GenericEqualityERComparer@2032CompareTo$cont@2948CompareTo$cont@2948-1objCastEquals$cont@2948CompareTo$cont@2957-2CompareTo$cont@2957-3GetHashCode$cont@2957Equals$cont@2957-1Equals$cont@2957-2CompareTo$cont@2967-4CompareTo$cont@2967-5GetHashCode$cont@2967-1Equals$cont@2967-3Equals$cont@2967-4copy@3264itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptyinputSequenceTooLongmapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesinvalidRecordTypeConstructorNotDefinedinvalidTupleTypeConstructorNotDefinedthenByErrorfailDueToUnsupportedInputTypeInSumByOrAverageByunsupportedIfThenElseunsupportedQueryConstructunsupportedQueryConstructKindunsupportedQueryCallunsupportedQueryPropertyget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_inputSequenceTooLongget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesget_invalidRecordTypeConstructorNotDefinedget_invalidTupleTypeConstructorNotDefinedget_thenByErrorget_failDueToUnsupportedInputTypeInSumByOrAverageByget_unsupportedIfThenElseget_unsupportedQueryConstructget_unsupportedQueryConstructKindget_unsupportedQueryCallget_unsupportedQueryPropertyGetString1GetString2GetString3resources@4GetExecutingAssembly)matchCasesIncomplete Some()Length > 1000Length = #inputListWasEmpty[; ]; ... ][] array map [ map []%mapCannotBeMutatednotComparableobj set [ set []%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementationtupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invokeg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecordNewUnionCaseUnionCaseTestNewTuple%ATupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblyDequeueqInternal error: attempting to install continuation twicecheckInit=failed to queue user work item€¡F:\dd\fsharp\projects\FSharp.Core\..\..\devdiv\src\fsharp\FSharp.Core\control.fsunreachable=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut source rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated_failDueToUnsupportedInputTypeInSumByOrAverageBytupledArgcopyOfStructvKeyx3unsupportedQueryConstruct!NewDelegate(...)NewTuple(...)NewUnionCase( ...);unsupportedQueryConstructKindFieldGet( ,...)#LetRecursive(...)NewRecord(...)1unsupportedQueryProperty new NewArray(+unsupportedIfThenElse)unsupportedQueryCall afterthenByErrorRuniMicrosoft.FSharp.Linq.QueryRunExtensions.LowPriorityRunQueryAsValuekMicrosoft.FSharp.Linq.QueryRunExtensions.HighPriority)RunQueryAsEnumerable Item)unreachable, ty = %AWThis function should not be called directlyecannot convert recursion except for function typesThe variable 'W' was not found in the translation context'eExpected Constructor call in member initialization!unreachable caseToFSharpFunc€ÃCould not convert the following F# Quotation to a LINQ Expression Tree -------- %A -------------  unit€Parameterized properties not supported in member initialization.[Expected PropertySet in member initializationInvokeFastkDynamic invocation of op_Subtraction is not supportedcDynamic invocation of op_Modulus is not supportedeDynamic invocation of op_Division is not supported+failedReadEnoughBytesAsyncResultmismatchIAREndiar#mismatchIARCancelResultCell)Unexpected no resultOcontrolContinuationInvokedMultipleTimescmultiple waiting reader continuations for mailboxqshould not happen - waitOneNoTimeout always returns trueCTimed out with infinite timeout??'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list-inputMustBeNonNegative#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of rangeQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray this/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '' <null>'printfExpectedWidth/printfExpectedPrecisionl true falseG%sToString count'popBreak: underflow €‡F:\dd\fsharp\projects\FSharp.Core\..\..\devdiv\src\utils\sformat.fs unpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=mapsetseq <seq>+<ToString exception: unuyyussuLgMnan-infinityinfinity.0 null=?-System.Linq.IQueryable()#<published event>7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypesKinvalidTupleTypeConstructorNotDefinedMinvalidRecordTypeConstructorNotDefined)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4sourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize)inputSequenceTooLong#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supportedmmay not call directly, should always be optimized away!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmpty'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedsyncContextNullcannotMutatekeyNotFoundQincorrectType FSCore#ÖPLÚô§Eƒ#ÖP·z\V4à‰ €Ä €Ä €Ä€Ü€Ü €Ü€ü€ü €ü$$$TTTŒŒŒ Ü Ü à à è è-1ô= ‚ EIM -I‚,E ÔÔ‚p ‚¸‚Ä‚ì-UÔ’ ÔI’ IÔƒ¤àYƒ¤è]ƒ¤!Ôƒ¤àaƒ¤è]ƒ¤ƒ¤$Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤ Ôƒ¤ƒ¤Ôi‚ÀÔƒ¤ƒ¤Ôiè]èÔYè]èÔiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤ÔYè]èÔYè]胤ƒ¤Ôaƒ¤ÔaÔa‚Àƒ¤Ôm‚ÀÔe‚ÀÔe‚Àƒ¤Ôq‚ÀuÔY]ÔYƒ¤ÔYÔe„øƒ¤‚Àƒ¤ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôaƒ¤‚Àƒ¤ÔY]ƒ¤ƒ¤&Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤4Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤Ô‚Ààƒ¤–ôè‚À胤$–ôè‚À胤èi‚Àƒ¤–ôè‚Àƒ¤èi‚Àƒ¤–ôÔƒ¤ƒ¤ƒ¤àƒ¤ –ô†\ƒ¤Ôƒ¤iƒ¤†\ Ô-ÔÔ y] ÔÔ}Ô] Ôƒ¤] Ô-]Ô] –ô†\]]Ôè]è] Ô}] Ôƒ¤–ôƒ¤ƒ¤ƒ¤ Ôƒ¤(Ôƒ¤àYàƒ¤è]胤 Ôƒ¤€Ô-€ Ô}€…Ô-€…Ôi€‰€‰€ Ô€‘ Ô‚À€•Ô‚ ‚À€‰‚ ‚À€‰&–ô‚À€•Ô‚ ‚À€‰‚ ‚À€‰ Ô‚À€‰Ô-€‰ Ôƒ¤€‰€™‡¼1ÔàÔ 1iÔà Ô Ô% Ô€Ô€ÄÔ€Ä!Ô‰€ÄƒÈ€ÄÔ€¡ƒÈ€ÄԃȀÄԃă´ ÔÔ%ƒÈ€¥Ôi€©Q ÔQ€¥ÔƒÈ€¥ Ô€­ÔÔÔ€±€­ Ô€­&ÔYÔÔ%Ô€ ÔAƒÈ ÔƒÈÔe€©QÔQÔ ÔƒÈÔƒÈÔƒÈ ÔQ Ôƒ´ Ô%ƒ´ Ô€ƒ´ Ôƒ´Ô%ƒÈÔƒÈԃă´Ô‰t‰ÔƒÄ€¡ƒ´Ô=ƒÈÔƒÈԃĀÄ%ƒ´Ô€¡ƒÈ€µÔƒÈ€µ–ôƒÈԃă´ ÔƒÈԃă´Ô‰ƒÈ ÔƒÈÔ€¡ƒÈÔY€©Q ÔQ Ô€¹ÔƒÐ ÔÔ€¡ƒÈƒÈԃȃÈÔÔ€¡ƒÈAÔƒÈAÔƒÈàԀăÈàÔƒÈàÔƒÈàÔ€¡ƒÈàÔàƒÈÔ‰€ƒÈàÔƒ¤àiè‚Àƒ¤Ôƒ¤àiƒ¤èƒ¤Ôƒ¤ài‚Àƒ¤ Ô‚L –ô€½ƒ¤ –ô]ƒ¤ –ô}ƒ¤ Ôƒ¤ –ô€½]]Ôi‚Àƒ¤Ôi‚Àƒ¤ƒ¤ –ô]]Ô]ÔÔÔ]]] Ô€½]Ôè]]ÔÔÔÔ]]ÔŽ,ÔÔ]]ÔŽ,èÔÔ]]ÔÔ]è]ÔŽ,ÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔÔŒ¼ƒ¤ƒ¤ ÔŒ¼ƒ¤ ÔŒ¼‚ÀÔè]}Ôè]‚LÔÔè]‚ìÔè]‚ìÔŽ,i€ÁÔŒ¼ƒ¤ÔŽ,èi€ÁÔŒ¼ƒ¤ÔÔŒ¼ƒ¤Ôèi€ÁÔŒ¼ƒ¤–ô‚D‚Àƒ¤‚D‚À yi€ÅŽyŽÔi€ÁÔŒ¼ƒ¤"Ôièi€ÁÔŒ¼ƒ¤Ô#Ôièi€ÁÔŒ¼ƒ¤ ÔŽ,ÔŽ,è –ô –ô Ôƒ¤‚–ô‚‚‚ Ô‚À‚ Ô‚Ôiƒ¤èƒ¤ƒ¤ÔÔ&ÔaÔÔÔ'ÔaÔÔÔÔÔÔ –ô]—è]Ôi‚‚Ôià‚‚Ô —‚ Ô‚ÔÔ‚ÔÔÔ‚Ôi‚ –ô‚‚Ôài Ô‚ÔàiÔi‚ÔÔi‚ÔÔÔi‚ÔàiÔ}ià‚Ôii‚ÔàiÔÔ–ô}i Ô‚‚—èiÔ øøü ôü –ô€Í€Í Ô€ÍÔ€‘àiÔiàÔ –ô}}ÔÔÔ}–ôi‚L–ô‚,‚, –ô–ô‚,‚,–ô‚D‚D‚DÔIiÔià–ô‚i‚ –ô =IÔI Ô-ÔI–ôIIÔI‚( –ô Ô=Ô==Ô==–ô===–ôi–ôiY‚Ô“ ‚i‚ÔàiÔI’ €Ñ#ÔI’ €Ñi-Ô-i-ÔI’ iÔ-iy y’  =-Ô=- –ô’ô“Ô’ô“H€Ù –ô Ô –ô””–ô”-–ô ” - –ô ” - –ô ” - –ô”-–ô”-–ô”-–ô”-–ô”-–ô”-” ” - ” ” - ””- –ôÔ ÔÔÔÔ ÔÔ Ô Ô€Ý€Ý–ô ÔÔ–ô Ô ÔÔ Ô Ô€ÝÔÔ ÔÔÔÔÔÔÔÔ —ÔÔÔÔ—%ÔÔÔÔÔ—$€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý –ô€Ý€Ý–ô  –ô  –ôÔÔÔ–ô–ô€ $€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“ €é FSharp.Core €é   Microsoft.FSharp@;Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsMicrosoft.FSharp.Core!Microsoft.FSharp.CollectionsMicrosoft.FSharp.Control94Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority:5Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority FSharp.Core.dllMicrosoft Corporation% Microsoft® Visual Studio® 20123.© Microsoft Corporation. All rights reserved. 4.3.0.0 4.3.50727.0 en-US*%F:\dd\tools\devdiv\FinalPublicKey.snkTWrapNonExceptionThrows A       (  MT AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleäT AllowMultiple( ÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple( T AllowMultiple(         ÿT AllowMultiple(  (-   -T AllowMultiple  ÀT AllowMultipleT AllowMultiple a €Ì  €Ä  €Ð  €Ä  €Ä €Ä €Ì€É €Ð  E €Ì€Ì€É€Ð€Ð€Ä€Ä €ÄK €Ä€Ì€Ì€Ð€Ð€Ä€Ä €É€Ì€Ð €á €áB €Ì€Ì€Ð€Ð€Ä€Ä €ÄFSharpChoice`2(  ]C>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy €Ô €Ì €Ø €Ð €ä€Ü €è€Ü €ì €Ü  €Ü €Ü €ä €è €ì v€ä€ä€É€è€è€ì€ì€Ü€Ü€Ü €Ü~€Ü€ä€ä€è€è€ì€ì€Ü€Ü€Ü5€ä€è€ì€Üs€ä€ä€è€è€ì€ì€Ü€Ü€Ü €ÜFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy €ð €ä €ô €è €ø €ì  €ü €ü  €ü  €ü   €É   €ü€ü€‰€ü  ?  |   €ü€üFSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy          ,$0$4$8$< $   $$$,048<X ,048< €®,,004488<< $FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxy@ ,D 0H 4L 8P <\T`TdThTlTp T   TTT TFSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxy\t \`x `d| dh€ hl„ lpˆ p”Œ˜ŒœŒ Œ¤Œ¨Œ¬ Œ   ŒŒŒ ŒŒFSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxy”° ”˜´ ˜œ¸ œ ¼  ¤À ¤¨Ä ¨¬È ¬     im% Ì%u u %0  ™  }Ô} ™$ Ô } }Ô ™( ™, –ô –ô ÔÔ Ô–ô–ôÔÔ—–ôÔ — –ôÔ ÔÔÔÔ @——–ôÔ–ôÔ"ÔÔÔ——Ô–ôÔÔ— —Ô Ô–ôÔÔ ÔÔÔÔ z———Ô—Ô–ôÔÔ–ôÔÔ+ÔÔÔÔ—$—Ô—ÔÔ!–ôÔÔÔ—$ —Ô Ô—ÔÔ  –ôÔÔÔ %ÔÔÔÔÔ €Æ—$—$—Ô—Ô—ÔÔ—ÔÔ–ôÔÔÔ–ôÔÔÔ4ÔÔÔÔÔ™0 Ô ™4Ô} ™8 Ôi"ÔÔÔi ™< ÔY+ÔÔÔÔY™@ Ôa4ÔÔÔÔÔa™D Ôe=ÔÔÔÔÔÔeÜ €É ÜÜ Ü Ü Ü FSharpRef`1 {contents} à àà àà à à' àà€Éàà à+ ààààà à à à$àààà àFSharpOption`1 Some({Value}) è (è(èè è èèè è( èè€Éèè è, èèèèè è+ èèèèèèè è è  ‘èèè–ì è = 9 Item FSharpList`11,Microsoft.FSharp.Collections.ListDebugView`1{DebugDisplay,nq}(ð 0è èèèè  Q€© QFSharpHandler`1‚ --=“€ ‚=#‚-=‚‚™™ Ô‚ Ô- ‚ ‚ ‚ ‚ ‚ ‚‚"‚‚‚ ‚ ‚ ‚!AiÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤!Ôqƒ¤]]]‚Àuƒ¤&iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôiè]胤ƒ¤Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤ Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤(Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤6Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤*Ôƒ¤àYàƒ¤è]胤 Ôƒ¤àYƒ¤è]ƒ¤#Ôƒ¤àaƒ¤è]ƒ¤ƒ¤&Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤ €‘à€‘€‘ à€‘})Ôƒ¤àYàƒ¤è]胤*Ôƒ¤àYàƒ¤è]胤#Ôƒ¤àYƒ¤è]ƒ¤‚=&Ôƒ¤àaƒ¤è]ƒ¤ƒ¤‚=)Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤‚=àY‚Àƒ¤ƒ¤àiƒ¤ à‚Àièi‚Àƒ¤ƒ¤àY‚Àƒ¤ƒ¤ Y‚Àƒ¤ƒ¤ àiƒ¤iƒ¤à‚Àièi‚Àƒ¤ƒ¤èi‚Àƒ¤L àY‚Àƒ¤ƒ¤àiƒ¤à‚À‚Àƒ¤‚Àƒ¤ièi‚Àƒ¤ƒ¤ièi‚Àƒ¤ƒ¤‚Àƒ¤èi‚Àƒ¤Y‚Àèi‚Àƒ¤ƒ¤àY‚Àèi‚Àƒ¤ƒ¤?ài‚Àƒ¤‚Àƒ¤ièi‚Àƒ¤ƒ¤èi‚Àƒ¤ƒ¤#àY‚Àèi‚Àƒ¤ƒ¤ƒ¤„¬ i‚Àƒ¤ƒ¤èi‚Àƒ¤àY‚Àèi‚Àƒ¤ƒ¤è‚Àèèi‚Àƒ¤ èi‚Àƒ¤-èi‚Àƒ¤ i‚Àƒ¤5àY‚Àèi‚Àƒ¤ƒ¤‚Àèi‚Àƒ¤ƒ¤5àiè‚Àƒ¤è‚Àèèi‚Àƒ¤ƒ¤àiè‚Àƒ¤ƒ¤€Á‚=Ôiè]è‚=ÔYè]è‚=€‘€‘è] Ôiè]胤ƒ¤‚=#ÔYƒ¤è]胤ƒ¤‚=€‘]ƒ¤]]‚Àƒ¤ÔYè]èÔYƒ¤è]胤ƒ¤„À ÔYè]è„Ä! ÔYƒ¤è]胤ƒ¤:iÔYè]èÔYè]胤ƒ¤8ÔYè]èÔYƒ¤è]胤ƒ¤@iÔYè]èÔYè]胤ƒ¤‚=6iÔiè]èÔiè]胤ƒ¤piiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤xiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤‚=‚=è]iè]胤Dƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤]ƒ¤ƒ¤èiè]è8Ôiè]èÔiè]è]ƒ¤qiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]è „È9 Ôiè]胤ƒ¤Ôiè]胤ƒ¤ „Ì1 Ôiè]èÔiè]è(iÔaƒ¤Ôa€ÖiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]è1iÔaƒ¤Ôa‚=‚=,iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤ ]]ƒ¤ƒ¤Eƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ƒ¤‚Àƒ¤€‰€‰? Ôiè]èÔiè]è]]]‚Àƒ¤ „ЄÔ0iÔa‚Àƒ¤Ôm‚À9iÔa‚Àƒ¤Ôm‚À‚=‚=4iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤ ]ƒ¤ƒ¤;Ôiè]èÔiè]è]‚Àƒ¤ „Ø „Ü,iÔa‚Àƒ¤Ôe‚À5iÔa‚Àƒ¤Ôe‚À‚=‚=0iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤Ôe]‚Àƒ¤„  ÁYƒ¤è]胤]Á]ƒ¤ƒ¤n ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤‚Àƒ¤ƒ¤ƒ¤]]ƒ¤ Ôiè]胤ƒ¤]]]ƒ¤ƒ¤?ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤ƒ¤ƒ¤‚Àƒ¤àÔiè]è‚QàÔiè]è %Yè]èb àÔiè]è]Á]%‚Q‚QàÔiè]èÔiè]耞Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è‚À]]]ƒ¤ Ôiè]耉Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è]]]‚Àƒ¤;iÔYè]èÔYƒ¤è]胤ƒ¤ ƒ¤:iÔYè]èÔYƒ¤è]胤ƒ¤ „à0 Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤ÔYƒ¤è]胤ƒ¤„ä Ôiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔiè]èÔYè]è8iÔe‚Àƒ¤Ôq‚Àu„–iiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èiÔYè]èÔYƒ¤è]胤ƒ¤ÔYƒ¤è]胤ƒ¤ÔYè]è] iÔe‚Àƒ¤Ôq‚Àu‚=‚=‚=‚=‚=‚=‚=‚=‚=‚=‚=>iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤!Ôqƒ¤]]]‚Àuƒ¤Aƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤]ƒ¤ Y]];Ôiè]èÔiè]èY]ÐÔY] „ðÔY] „ô$iÔYƒ¤ÔY€èiiÔiè]èÔiè]胤ƒ¤iÔiè]èÔiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôiè]èÔiè]èÐÔY]-iÔYƒ¤ÔY‚=‚=&iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôiè]胤ƒ¤Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤ Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤…7 Ôiè]胤Ôiè]胤LÔaƒ¤‚Àƒ¤Ôiè]胤Ôiè]胤8Ôiè]胤ƒ¤Ôiè]胤ƒ¤Ôaƒ¤‚Àƒ¤ƒ¤‚=‚=Ôa]ƒ¤ƒ¤ƒ¤‚=‚=(Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤6Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ Ôƒ¤ƒ¤ àƒ¤ €Ü‚Ài‚Àƒ¤i胤…4" ÔÔƒ¤Ôƒ¤àƒ¤…8ÔÔƒ¤ƒ¤ àƒ¤€è‚Ài‚Àƒ¤i胤€ä‚Ài‚Àƒ¤i胤€ì‚Ài‚Àƒ¤i胤 i胤 ƒ¤ƒ¤àƒ¤bÔƒ¤ƒ¤àƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤€Ü‚Ài‚Àƒ¤i胤(ƒ¤ÔÔƒ¤Ôƒ¤àƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤!ÔÔƒ¤Ôƒ¤àƒ¤àY‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤ àƒ¤ƒ¤L àY‚Àƒ¤ƒ¤‚Àƒ¤ài‚Àƒ¤à‚Ààiƒ¤à‚À‚Àƒ¤àƒ¤ƒ¤àYàƒ¤}胤 à€‘àYàƒ¤€‘胤àièè‚Àƒ¤èè‚À ‚ ‚Àƒ¤àYàƒ¤}胤Yàƒ¤}胤àYàƒ¤€‘胤Yàƒ¤€‘胤àièè‚Àƒ¤ièè‚Àƒ¤ è‚Àƒ¤èi‚Àƒ¤-i‚Àƒ¤€ àYàƒ¤}èƒ¤à€‘àƒ¤ƒ¤àYàƒ¤€‘èƒ¤àƒ¤àièè‚Àƒ¤èè‚À胤‚ ‚Àƒ¤àiƒ¤è胤è胤àiƒ¤è胤iƒ¤è胤 èè‚À è胤 è‚À胤! è‚À胤èi‚Àƒ¤\àiƒ¤è胤àièè‚Àƒ¤èè‚Àè胤ƒ¤‚ ‚Àƒ¤*Ôƒ¤àYàƒ¤è]胤 Ôƒ¤àYƒ¤è]ƒ¤#Ôƒ¤àaƒ¤è]ƒ¤ƒ¤&Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤àiƒ¤ƒ¤ ài]!àYàƒ¤è]胤àiƒ¤ƒ¤ iƒ¤ƒ¤ ài]i]à]àiƒ¤ƒ¤ài]àYàƒ¤è]胤àYàƒ¤è]胤 àƒ¤†d è†\†h†p†\†l †\ƒ¤e„øƒ¤‚Àƒ¤ i]ƒ¤U„ }:†dè†\†h]†p†\ƒ¤‚Àƒ¤ƒ¤]†l]]]]胤 ƒ¤†\ƒ¤ ]‚Àƒ¤ƒ¤i‚Àƒ¤†\‚Àƒ¤ àYàƒ¤è]胤Yàƒ¤è]胤€¥ àYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤àYàƒ¤è]èƒ¤èƒ¤àƒ¤màYàƒ¤è]èƒ¤èƒ¤èƒ¤àƒ¤ƒ¤àYàƒ¤è]èƒ¤èƒ¤àƒ¤…p…h„ø…p…h‚Àƒ¤„ø…hƒ¤…hàYƒ¤è]ƒ¤ i‚Àƒ¤ iƒ¤†\àaƒ¤è]ƒ¤ƒ¤àYƒ¤ƒ¤ƒ¤à i…h†\Yƒ¤‚Àƒ¤àYƒ¤è]ƒ¤Yƒ¤è]ƒ¤ iƒ¤†\ ] i…h†\àaƒ¤è]ƒ¤ƒ¤aƒ¤è]ƒ¤ƒ¤aƒ¤‚Àƒ¤àYƒ¤ƒ¤ƒ¤ Yƒ¤ƒ¤ƒ¤ Yƒ¤‚Àƒ¤-m]ƒ¤‚Àƒ¤‚Àƒ¤€ºàYƒ¤è]ƒ¤ƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\†\ƒ¤ƒ¤àƒ¤àƒ¤àaƒ¤è]ƒ¤ƒ¤ài‚Àƒ¤àYƒ¤ƒ¤ƒ¤ài…h†\…h]Yƒ¤‚Àƒ¤…p‚À…h]]] i…h†\„ø]‚À]†\…hƒ¤!qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤ qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤uƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤,q]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤mqƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤, i…h†\]ƒ¤‚À‚Àƒ¤ƒ¤‚À‚Àƒ¤ƒ¤pqƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤pƒ¤qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤†\ƒ¤‚Àƒ¤ƒ¤‚Àƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤†\ƒ¤. i…h†\]ƒ¤‚À‚Àƒ¤]ƒ¤‚À‚Àƒ¤ƒ¤àY]è‚Àƒ¤à胤ài‚L胤ài‚L胤i‚L胤=àY]è‚Àƒ¤à胤ài‚L胤‚Li…h†\ƒ¤àiàƒ¤€Íàièi‚Àƒ¤ƒ¤ài]胤àiàƒ¤€Íiàƒ¤€ÍUà胤àiàƒ¤€Í€Íàièi‚Àƒ¤ƒ¤ài]胤àiÁ胤àiÁ胤iÁ胤ài]胤i]胤LàYàƒ¤}胤}àiÁ胤Áài]胤]àiƒ¤]è]aƒ¤†\‚Àƒ¤a…h†\‚Àƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤àiƒ¤] iƒ¤]aƒ¤†\‚Àƒ¤a…h†\‚Àƒ¤ Y]ƒ¤ a]ƒ¤ƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤eƒ¤è]ƒ¤ƒ¤ƒ¤q]]]ƒ¤‚Àƒ¤i‚Àƒ¤‡Ž€²àiƒ¤]ƒ¤]àYàƒ¤è]胤è]è]è]è]胤胤ài‚Àƒ¤‚Àƒ¤]i…h†\†\…h„ø]‚À]†\àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤aƒ¤†\‚Àƒ¤ƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤a…h†\‚Àƒ¤iƒ¤†\ƒ¤àYàƒ¤è]胤胤àYƒ¤è]ƒ¤è]è]àYƒ¤ƒ¤ƒ¤ààaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤i‚Àƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤è]è]è]è]ài‚Àƒ¤ài‚Àƒ¤‚Ài‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤ƒ¤†\àYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚ÀàYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚ÀàYàƒ¤è]胤è]è]è]è]è]胤胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤èƒ¤àiè‚Àƒ¤è‚Àè‚Ààƒ¤àƒ¤àYƒ¤è]ƒ¤àYƒ¤è]ƒ¤àYàƒ¤€‘胤€‘i…h†\„øƒ¤i…h†\…h†\iƒ¤†\„øƒ¤!àƒ¤ƒ¤iƒ¤†\ƒ¤†\]]iƒ¤†\ƒ¤_iƒ¤†\†\ƒ¤iƒ¤†\ƒ¤†\i‚Àƒ¤‚Àƒ¤i‚Àƒ¤‚Àƒ¤iƒ¤†\ƒ¤ƒ¤iƒ¤†\ƒ¤5qƒ¤†\ƒ¤†\‚Àƒ¤‚Àuƒ¤ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤i…h†\†\…hi‚Àƒ¤a…h†\‚Àƒ¤ƒ¤‚Àƒ¤a…h†\‚Àƒ¤†\…h‚Àƒ¤aƒ¤†\‚Àƒ¤ƒ¤‚Àƒ¤, iƒ¤†\†\ƒ¤]]‚Ài‚Àƒ¤‚Àƒ¤ƒ¤ ƒ¤„øƒ¤aƒ¤†\‚Àƒ¤Yƒ¤‚Àƒ¤ƒ¤‚Àƒ¤eƒ¤ƒ¤‚Àƒ¤Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤„ [àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤‚Àƒ¤]Yƒ¤‚Àƒ¤ƒ¤‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àƒ¤àƒ¤ ƒ¤ƒ¤% „øƒ¤m]]]‚Àƒ¤Ôm]]]‚Àƒ¤Y]ÔY]qƒ¤]]]‚Àuƒ¤Ôqƒ¤]]]‚Àuƒ¤e]‚Àƒ¤Ôe]‚Àƒ¤ a]ƒ¤Ôa]ƒ¤ƒùYàaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤‚À]ƒ¤]]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àYƒ¤è]ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤ƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]ài‚Àƒ¤àaƒ¤è]ƒ¤ƒ¤è]è]àaƒ¤è]ƒ¤ƒ¤è]è]àƒ¤àƒ¤+ Ôƒ¤àYàƒ¤è]胤?àYàƒ¤è]èƒ¤àƒ¤èƒ¤è]ƒ¤ƒ¤ àYƒ¤è]ƒ¤ƒ¤JàYàƒ¤è]èƒ¤àƒ¤èƒ¤èƒ¤è]ƒ¤ƒ¤ƒ¤ àaƒ¤è]ƒ¤ƒ¤ƒ¤U àYàƒ¤è]èƒ¤àƒ¤èƒ¤èƒ¤èƒ¤è]ƒ¤ƒ¤ƒ¤ƒ¤! àeƒ¤è]ƒ¤ƒ¤ƒ¤ƒ¤„¨ ‚À ƒ¤ƒ¤ i‚À‚À Ôƒ¤ƒ¤i‚Àèè]耑%‚Q‚Q iè]èè]耑%‚Q‚Q Yè]èè]胤 ƒ¤iè]胤ƒ¤è]胤 ƒ¤Yƒ¤è]胤„ÀYè]èè]è Yè]è„ÄYè]胤è]胤 ƒ¤Yè]胤 „È a  ƒ¤a „Ì a „Ð a‚À ‚À ƒ¤a‚À„Ôm‚À‚À m‚À „Ø „Üe‚À ‚À e‚À „àe‚À ‚À ƒ¤e‚À„äq‚Àuu‚À q‚Àu„ì4 Ôiè]èÔiè]è„èÔY]„è„ì Y] ]„è Y] „ð Y ƒ¤Y „ô Y] Y$ „øƒ¤‚Àƒ¤à‚À‚À]]ƒ¤ƒ¤ ƒ¤e„øƒ¤‚Àƒ¤ ]ƒ¤ƒ¤ ƒ¤a]ƒ¤ƒ¤]ƒ¤ ƒ¤i]ƒ¤ ƒ¤]&]ƒ¤‚Àƒ¤‚Àƒ¤]]ƒ¤]ƒ¤ƒ¤ƒ¤ ƒ¤m]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤‚Àƒ¤ƒ¤]]ƒ¤ ƒ¤aƒ¤‚Àƒ¤Ôiè]胤…Ôiè]胤ƒ¤‚Àƒ¤]]ƒ¤ƒ¤ aƒ¤‚Àƒ¤ƒ¤‚Àƒ¤]ƒ¤ƒ¤]ƒ¤ ƒ¤Y]ƒ¤$ ]]]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤# ƒ¤q]]]ƒ¤‚Àƒ¤i‚Àƒ¤8]]]]ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤1 ƒ¤q]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤:]]]]ƒ¤ƒ¤‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤ƒ¤]ƒ¤ƒ¤ƒ¤ ÔÔƒ¤Ôƒ¤àƒ¤…4…8 ƒ¤ àƒ¤‚À è‚À胤! èi‚Àƒ¤è‚À胤 ‚ ‚Àƒ¤ ‚ ‚Àƒ¤-è‚À‚Àƒ¤à胤è‚À胤 èi‚Àƒ¤è‚Àƒ¤ àƒ¤ƒ¤ àƒ¤Ôƒ¤ƒ¤ƒ¤ ƒ¤ ƒ¤†\…h„ø…h‚Àƒ¤…hƒ¤…h„øà‚À‚À(„ø(…h „ø…h‚Àƒ¤ „ø …hMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Select@DebugTypeProxyLGMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Other@DebugTypeProxyMHMicrosoft.FSharp.Linq.QueryModule+TransInnerResult+Source@DebugTypeProxy …p…t …t…x …x iƒ¤†\ƒ¤ ]‚À‚‚‚‚‚-+iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤Ôa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤3iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤Ôaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤/iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤Ôe]‚Àƒ¤=iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤‚=Ôeƒ¤ƒ¤‚Àƒ¤ƒ¤ Ôqƒ¤]]]‚Àuƒ¤%iÔY]ƒ¤ƒ¤ÔY]ÔY]ƒ¤ƒ¤ÔY]Ôe„øƒ¤‚Àƒ¤ƒ¤Ôi]ƒ¤ƒ¤ Ô]ƒ¤Ôm]ƒ¤‚Àƒ¤‚Àƒ¤ƒ¤'Ôq]]]ƒ¤‚Àƒ¤i‚Àƒ¤ƒ¤5Ôq]]]]ƒ¤ƒ¤m‚Àƒ¤‚Àƒ¤‚À‚Àƒ¤ƒ¤Ôƒ¤àYƒ¤è]ƒ¤"Ôƒ¤àaƒ¤è]ƒ¤ƒ¤%Ôƒ¤àeƒ¤è]ƒ¤ƒ¤ƒ¤‚‚‚!‚  ‚  ]ƒ¤ƒ¤]ƒ¤*iÔa]ƒ¤ƒ¤ƒ¤Ôa]ƒ¤ ‚ ‚ ‚Y‚ ƒ¤ƒ¤]]]ƒ¤2iÔaƒ¤‚Àƒ¤ƒ¤Ôm]]]‚Àƒ¤‚ ‚Y‚ ƒ¤ƒ¤]ƒ¤.iÔaƒ¤‚Àƒ¤ƒ¤Ôe]‚Àƒ¤‚ ‚Y‚ ‚ ‚Y‚  ‚ ‚Y‚ €Ý‚ ‚Y‚€Ý ‚ ‚Y‚ ‚ ‚Y‚  -‚  -‚ €Ý-‚€Ý -‚ -‚  ƒ¤ƒ¤ƒ¤ƒ¤]]]ƒ¤<iÔeƒ¤ƒ¤‚Àƒ¤ƒ¤Ôqƒ¤]]]‚Àuƒ¤"‚ ‚ ‚Y‚‚ "‚ ‚ ‚Y‚‚ &‚€Ý‚ ‚Y‚‚€Ý"‚ ‚ ‚Y‚‚"‚ ‚ ‚Y‚‚ ‚ -‚‚ ‚ -‚‚ ‚€Ý-‚‚€Ý‚ -‚‚‚ -‚‚ ‚ ‚Y‚ ‚ ‚Y‚ -‚ -‚ "‚‚ ‚Y‚‚"‚ ‚ ‚Y‚‚ ‚-‚‚‚ -‚‚ ‚  ]ƒ¤]$iÔY]ƒ¤ƒ¤ÔY] ‚ ‚ ‚ ‚Y‚--‚‚ ‚ ----‚ - -3‚ ‚ ‚Y‚-‚Y‚!'--‚-‚!‚ ‚ ‚Y‚‚]‚ ‚Y‚‚]‚]‚Y‚‚ ‚ ‚ ‚ %‚ U‚ ‚Y‚3‚ U‚ ‚Y‚‚Y‚C‚ ‚ -‚Y‚‚Y‚‚Y‚!G‚ ‚ -‚Y‚‚Y‚‚Y‚!- €‘ ‚=Ô„  …¸Ô„  „  - Ô…¼…À…Ä…È…Ì…Ð Ô …Ô …ØÔ‚ …ÜÔ‚ …à Ô  Ô  …è …ì …ð …ô …ø …ü † † † †  † † †ÔÔ † †  †$ÔÔ- †( †, †0 †4 Ô] i]]] Ñ]] Ôƒ¤ ‚a] ‚a] †@ Ô‚a] ‚a]ÔÔ Ô]àiƒ¤ƒ¤ƒ¤ƒ¤èƒ¤èƒ¤ƒ¤ 胤ƒ¤àaàƒ¤}胤ƒ¤àaàƒ¤}胤ƒ¤aàƒ¤}胤ƒ¤ àè_ èàaàƒ¤}胤ƒ¤àƒ¤à‚Àè‚Àài]èà‚À àè‚Àèè‚Àà胤‚À胤Y‚Àƒ¤èƒ¤àY‚Àƒ¤èƒ¤SàY‚Àƒ¤ƒ¤àiÁ胤胤‚À胤ƒ¤à胤胤àY‚Àƒ¤èƒ¤ƒ¤ i]]] Ñ]] Ñ]]#àiÁ胤Á]胤àiÁ胤ƒ¤ ]]Áb胤胤胤胤胤胤胤胤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤èƒ¤‚e Í}‚e‚eƒ¤ ƒ¤ƒ¤]i]i]‚¼Ô]]]] ]Ô]] Ô]] ]i]]]]Ôè]è]} }T àYàƒ¤}èƒ¤àƒ¤ài]胤]}胤}ààÔ†\Ô]]è†\€™†dè†\è†\è†\è†\è†\è†\è†\è†\è†\†\†\†\†\†\†\†\†\è†\Ô†\Ô]]è†\†h]†l]]]†p ]†\] Ôƒ¤àY‚Àƒ¤èƒ¤€ƒ ƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤àY‚Àƒ¤èƒ¤€‘àiÁ胤Á€Ü‚Ài‚Àƒ¤i胤u ƒ¤€Ü‚Ài‚Àƒ¤i胤胤‚Àƒ¤àiƒ¤àèƒ¤àƒ¤€Ü‚Ài‚Àƒ¤i胤i胤è†\ ƒ¤iƒ¤†\ ƒ¤†\i胤è†\Pà胤胤i胤è†\è†\胤ài]胤]!iƒ¤†\Ôƒ¤iƒ¤†\ƒ¤†\†\ ] ]]   ‚a] †@ ‚a] } ]ƒ¤ 胤-ƒ¤ ƒ¤] -]†\ †\è†\†\]è†\ †\]]†\†\ (è†\ è†\ è†\a\Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+TupleConv@DebugTypeProxy ]è†\b]Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+RecordConv@DebugTypeProxy(†\ ]]†\ †\d_Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+GroupingConv@DebugTypeProxy †\_ZMicrosoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription+SeqConv@DebugTypeProxy †d †h †l †p ]†\] Ô†\Ô]]è†\ †\]] è]è] è†\Ô†\Ô]] ]}-} }]1àYàƒ¤€‘胤€‘àƒ¤èƒ¤ ƒ¤ ƒ¤ƒ¤ƒ¤Ôƒ¤iƒ¤†\ Ôƒ¤iƒ¤†\ Ô] i]] Ñ]] Ôƒ¤ ]uƒèiƒìYƒða ƒô e ƒø ‚i ƒü m „qu „ i]] i]]¹Á ‚Y¹]]] ‚ ‚À ‚À ‚ ‚Àƒ¨ƒ¤‚ÀÁ €‘€‘-Ôƒ¤àYàƒ¤è]胤‚=i胤ƒ¤i胤ƒ¤.àiƒ¤ƒ¤i胤ƒ¤ƒ¤èƒ¤ƒ¤i胤ƒ¤ƒ¤iƒ¤èƒ¤àiƒ¤èƒ¤DàYàƒ¤è]胤胤i胤ƒ¤èƒ¤ƒ¤àiƒ¤èƒ¤ƒ¤IàYàƒ¤è]胤胤àiÁ胤Á胤$àiÁ胤胤Áƒ¤i}ài] ài]i}ài] ài]i] ‚m€‰}%i}ài]ài]}] €‰]€‰iÁà]à]€‰iÁà]à] €‰ ‚qÁ€‰=iÁà]à]]Áà€‰Á]€‰€‰€‰ €‰]€‰‚uàiƒ¤èƒ¤€‚qàààiƒ¤‚L€… 耕†À-‚À€• ‚À€‰ €€‰€‰‚y] ‚}€‰] ‚€‰] ‚m€‰€Í‚…€‰€‘€‰ € ‚‰‚q€-€‰ €…‚qÁ-€‰€…€€‰€‰€‘‚}€‰à ‚y‚‚€Ý‚ ‚ ‚‚‚ ‚‚‚ ‚  €‘ ‚©]€‰‚q]àiƒ¤‚L iƒ¤‚LàY]è‚Àƒ¤Y]è‚Àƒ¤ ‚À€• ‚À€•‚ ‚À€‰-€•‚­]€‰-€•‚±€‰€‰€‰ ‚…€‘€‰ ‚ ‚À€‰‚­]€‰€•}‚…]]€‰‚¼Ôƒ¤ƒ¤ Ôƒ¤ Ôƒ¤”Baà‚À‚À€‰%‚uàiƒ¤ƒ¤ƒ¤ƒ¤àiƒ¤ƒ¤ài]]àYàƒ¤è]胤è]胤àiƒ¤]àiƒ¤]àYàƒ¤è]胤è]胤àiàƒ¤€Íàƒ¤€Íàiƒ¤àYàƒ¤}胤}胤à]€‰àYàƒ¤€‘胤€‘àiƒ¤èƒ¤èƒ¤€‚q‚qàiÁ胤Á}àYàƒ¤è]胤è]è]è]胤]]àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤à胤à胤à胤à胤ààYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤胤àYàƒ¤è]胤è]è]è]胤胤àYàƒ¤è]胤è]胤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤ƒ¤ƒ¤ƒ¤i]]i]]]i]]]]i]]]]]àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤àiƒ¤ƒ¤€‰ài]胤ài]胤ài‚L胤‚Làiƒ¤‚L€…}€‘àY]è‚Àƒ¤è‚À耕†Àà胤àYƒ¤ƒ¤ƒ¤-‚ÀàY‚Àƒ¤ƒ¤€•€‰ài‚Àƒ¤] €‰†Àƒ¤ i€‰€‰€‰€‰€‰]€‰"€‰†Àƒ¤ƒ¤Ôi€‰€‰€ àƒ¤ƒ¤€‰à]]€‰†Ààƒ¤à] ƒ¤€‰€‰†À胤€•]€•‚À€‰ƒ¤‚Yƒ¤‚Yƒ¨‚­ É" ài]]ƒ¤‚­É%‚Q‚Qƒ¤ (‚ ‚À€‰ ‚ ‚À€‰ ‚ ‚À€‰ ‚ ‚À€‰ ƒ¤ ‚ ‚À ‚ ‚À €‘€‘% àYàƒ¤è]胤ƒ¤ †À ‚µ€…€‰5àaàƒ¤}胤ƒ¤}ƒ¤èƒ¤èƒ¤ €ƒ¤ †À胤 ƒ¤€ -€ €…} } }€… -€…€‰€‰ €i€‰€‰ €‘ €•‚À ‚À€‰ ‚ ‚À€‰‚ ‚À€‰# Ô‚ ‚À€‰‚ ‚À€‰‚À€• €‰‚À -‚À -€‰ †À-‚À €‰ƒ¤‚‚ ‚‚‚ byte‚ ‚‚‚ sbyte‚ ‚‚‚ int16‚ ‚‚‚ uint16‚ ‚‚‚int‚ ‚‚‚ enum int32‚ ‚ ‚ ‚ uint32‚ ‚ ‚ ‚ int64‚ ‚ ‚ ‚ uint64‚ ‚ ‚ ‚ float32‚ ‚ ‚ ‚ float‚‚ ‚‚‚ nativeint‚‚ ‚‚‚ unativeint ‚€Ý ‚€Ý‚€Ý‚ decimal‚ ‚‚‚ char ‚ ‚‚‚ ‚‚‚‚ ‚‚‚ ‚‚‚‚ ‡Ä Ô11Ô1map€™€™à ‡Ì Ôà11Ôà1 choose‡Ð 1Ô1 filter‡Ôi11!i11Ô1 partition ‡Ü ÔÔ1!1ÔÔ1 scanAÔ1addAÔ1 subscribe‡ä 11i1 pairwise‡ô 11111 merge ‡ø Ô€Ä ‡ü Ô€Äi11)i11Ô€Ä1 split %€™ ‡À Ô€™ €Ä% €Ð% €Ì% €Ä% €Ð%€™ €Ì%(€Ä%€Ä%%€Ð%€Ì% Ô1 ‡Ä ‡À A€™Ôà ‡È Ôà€™€Äà%€Ðà%€Ìà%€Äà%€Ðà%€Ìà%<€Äà%€Äà%%€Ðà%€Ìà%Ôà ‡Ì ‡È‡Ð à‡ÔÔÔÜ ‡Ø! ÔÔ€™ÜÜ,€Ä%€Ä%%€Ð%€Ì%ÔÔ ‡Ü ‡Ø€™i Üà‡à €™iÜà Üài €™iàà1‡äÜà A€™iÜ‡è €™ÜÜÜ܇ì AA‡ôÜÜÜAAÔ€Ä ‡ø €Ä €ÌÔ€Ä €Ìà€Ä€ÌÔ€Ä ‡ü €Ä €ÐÔ€Ä €Ð€Ä€Ð‚l Ô‚l ˆ Ô‚l‚lÔA#øüÔø‚l‚lˆ Ô‚l‚lÔA"øüÔøˆ  Ô‚l‚l iøüøü‚l‚lÔA4iøüøüÔø ˆ Ôà‚l(øüÔàøÜ ÔÜ ˆ! ÔÔÜ‚lÜ‚lÔA,øüÔÔøÔø‚li Üà ‚li Üàˆ ‚liÜà&‚liÜàÔA&øüiiøˆˆ ‚lÔA#øüøø‚l‚l ˆ$! ԀĂl‚l iøüøü‚l‚lÔA<iøüøüÔ€Äø‚l ˆ‚l ‚lˆˆ  ˆààà ˆ‚liˆ ‚liˆˆ ‚l ˆ$ €Ð €Ð‚l€Ä€Ð€Ì ˆ,& ‰€‰€ÄÔ€Ä ˆ0 ‰€‰€Ä ˆ41‰€‰€Ä€¡ƒÈÔ€Ä ˆH ƒÈƒÈ €ÄƒÈ€ÄƒÈƒÈ‰€ƒÈ‰€ ‰€ ƒÈ€¡‰€‰€Ä ˆ,‰€Ä ‰‰€‰€Äƒ´‰€‰€Ä ˆ0‰€Ä ‰%‰€‰€Ä % ˆ4 ‰€ € €Ä €Ä €Ä ƒÈ€Ä‰€ÄƒÈƒÈ ˆD$ ƒÈƒÈ‰€‰€Ä ˆ8  ˆ<  ˆ@ ‰€Ä€Ä ƒÈ€Ä€¡ ˆH €¡€Ä‰€‰€Ä ƒÈ€Ä ƒ´ƒÄ ‰€  €¥ ƒÈ€¥‚ÁAsyncGetResponseƒÈ  ƒÈƒÈ‚Å‚ÉAsyncDownloadString Ü‚Í ‚щ€¥ €¥‚Í‚Í ƒÈ€¥%‚Á ‚Ái€© Q€©€© Qi€© €¥Q ‚ÁÜàÔ ƒÈ€¥Ü‚Å ‚Å €­ €­ÔÔ€± ÔÔ€± Ô€± €± €­ÔÔ€± Ô Ô% Ô€ ‚9€­* ‚ÅÔÔ%Ô€‚9€­ €­€±‚9€­ô€­ % €­‚É ‚Å‚É Ô€­€­YÔÔ%Ô€ €­ ‚É3ÔÔ%Ô€Ô€­‚9€­€­# YÔÔ%Ô€ ƒÈ ƒÈA A ‚ÅƒÈ ƒÈ ƒÈ‚Ùàà AsyncRead  ƒÈ‚Ù ƒÈ‚Ùàà AsyncWrite1ÔAddˆÜ1A1Ô Subscribe‚Ù ‚Ù e€© Q€© €© Qe€© QÜ ÜÜ  Ü ƒÈ ‚ÙÜ  ƒÈ   ƒÈ ‚Ù  Ü QˆÜƒØƒØˆä ƒØˆèˆì%ƒØÔÔ%Ô€QƒÈ€©ƒØƒØQƒØƒØQƒØˆäˆèˆìi€¡àƒ°ƒ° àƒ° ‰€‰ à‰‰àƒ°i€¡àƒ° ‰€‰ˆôˆøˆü à‰Y i€¡àƒ°ƒ°€¡àƒ°‰€‰ƒ´à‰à‰‰àƒ°A€¡ƒÈà €¡ƒÈ‰ *€¡ƒÈÔÔ%Ô€€¹€¹‰€¹€µý‚鉀µàý‚é ý‰ ‚é‰ €¹‚í €µ‰, ƒÈ‚鉀¹€µ ý‚鉀¹€µƒÈ€µ€¡ƒÈàýˆô ƒ´ˆø ƒ´%ˆü ƒ´€ ƒ´‰  Ô% Ô€‚鉂逵‰  ‚鉀¹€µ ƒÈ%‰$ ƒÈ‰( ‰,ƒ´ñƒ¼Ôƒ´ññƒÄ‰P ƒÄñƒ¼ ñƒÀƒ¼ƒÄƒÄ‰dƒÈԃă´‰h‚ñ‚ñ‚ñ‚‰€‚ñ ‰€ è‰t è‰t ‰t‚ñè‰t‰€‰t ƒÄà‰€ƒÄƒÄ ƒÄƒÄ ñƒÀƒÄ‰L ƒÄ‰P ƒÀ% ñƒÀƒ¼ ƒÀ€‰d ƒ´ƒÄ‰h‰l‰l Ô‰tù Ôƒ´‰x ‰tÔƒ´ñ‰|‰t (ƒÈ‰€ è‰t‚‰„ ‰t/è‰tè‰t‰tè‰t‰ˆ à‚à ‰t‰€àà ÜÝí ƒÈ Ü݉œ‰ ‰œ‰ ‰˜‰œ‰ €‰ ‰à‰à‰í‰´/ €¡Ôƒ´Ô%ƒ´Ô€ƒ´ƒÈƒ¼ƒ¼/ƒ´€¡Ôƒ´Ô%ƒ´Ô€ƒ´ƒÈ‰¸ÔƒÄƒ´ƒ´%ƒ´ƒÄԃă´‰¼‰À‰È ƒÈ ‰Ô ƒÈԃȃȃȃÈÔƒÈ ‰à ԃȃÈԃȊ ԃȃÈԃȊ Ô%ƒÈƒÈƒÈÔ%ƒÈƒÈŠ  Ô€ƒÈƒÈÔ€ƒÈƒÈ€¡Š(ƒÈԃȃÈԃȊ8 ÔƒÈ =ƒÈ-ԃȊ<ƒÈƒÈƒÈ € ‰IDMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Ok@DebugTypeProxy(%LGMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Error@DebugTypeProxy(€ €OJMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Canceled@DebugTypeProxy‰˜‰¤ ‰˜‰œ‰¨ ‰œ‰ ‰¬ ‰ iƒ¼Ôƒ´ iƒ¼Ôƒ´iƒ¼Ôƒ´#iƒ¼Ôƒ´ƒ¼Ôƒ´ƒ´‰´‰¸‰¼‰À‰˜‰œ‰ ‰‰Ä Ôƒ´‰ÈƒÀƒ¼Ôƒ´ÔƒÈƒÄ ‰Ì ԃȃăÄԃȃÈԃă´$Ô%ƒ´ƒÈ%%%%ƒÈ‰Ð ƒÈƒÄÔƒÈ ‰Ô ‰Ì‰Ð ƒÄƒ¸ Ô%ƒ´%‰Ü ƒÄƒÈ ‰àÔƒÈ' ƒ¼Ô%ƒ´ƒÈ%%%%ƒÈ‰è‰ì ԃă¼Ô%ƒ´%%%%‰ô ƒÄ%‰ø‰ü ƒÄ€ŠŠ%%%%Š'ƒ¼Ôƒ´Ô%ƒ´Ô€ƒ´ƒÀÔ%ƒÈŠ  Ô%ƒÈƒÄ % ƒÈŠÔ%ƒ´ƒÀ Ô€ƒÀƒ¼%%%%Š ƒÀÔ€ƒ´ƒÄ€¡ Ô€¡ƒ´ ƒ´ƒÄ€¡Š( Ô ÔƒÈŠ0 =ԃȊ4 ÔƒÈ=Š8 ƒÈ=Š< ƒÈ ÜÝ*àÔƒ´àÔƒ´Ôƒ´ƒ¸Ôƒ´Š\0 ƒÀÜÜàÔƒ´ù‰lÔƒ´9ÔƒÀÜÜàÔƒ´ù‰lÔƒ´à€Ä%€Üà€Ä%€à€Ä%€ €Ð%€ €Ì%€Š€ ƒÄ%à€Ä%€à€Ä%€€%,ƒ´ƒÀƒÄÜà€Ä%€ƒ¼Üƒ°Üà€Ä%€ ƒÄ)ƒ¼Üà€Ä%€ƒÄƒÀ7 ƒ´ƒÀƒÄÜÜà€Ä%€ƒ°ƒ¼,ÜÜà€Ä%€ƒ°€Ä%€>ƒ´ƒÀƒÄÜÜà€Ä%€ƒ°ƒ¼€Ä%€àÔŠüàÔÔ%"àÔ‰€‰‰p ‹  ÔƒÈ#ÔY€©QÔƒÈô‹,3øàÔ‰€‰‰p‚9‹Œ ƒÄƒÀ€µƒÄƒÀ€µƒÜƒÜƒ¬ƒÄiÔƒ´ƒ¼àiÔƒ´ƒ¼ ƒÜƒÜƒÄƒÀ Ôƒ´?àiÔƒ´ƒ¼àiÔƒ´ƒ¼ƒ¼Ôƒ´ƒ´‚ƒÜ ‹¨' ƒÜÔàƒÈƒÈÝ à3ƒÈàƒÜÔàƒÈƒÈÝ ‹´ ƒÜÔàƒÈ+ƒÈàƒÜÔàƒÈ‹ÐƒÈàƒÜ‹ÜƒÈƒÜ ܃¼ Ôƒ´ ƒ¼ Ôƒ´ŠP Ôƒ´ŠTŠXÜàÔƒ´Š\ÜàÔƒ´ ñƒ´(ÔYÔÔ%Ô€Š` € YÔÔ%Ô€'ÔYÔÔ%Ô€K ƒÀÜÜàÔƒ´ù‰l%ƒ´àÔƒ´àÔƒ´Ô€Ä%ƒ´Šd Ô€Ä%ƒ´ €Ä%Ô€Ä%ƒ´ŠhŠlƒÄ€Ä%;ƒÀ€¡ƒ¼Ôƒ´Ô€Ä%ƒ´Ô%ƒ´Ô€ƒ´ ƒ´ƒÄ€Ä% àýŠp €µ ƒÈ€µ€¡Št €¡€µ ƒÈ€µ ƒÄŠ€ƒÄ Ôƒ´Š„2 ƒÄƒÀÜÜà€Ä%€ƒ°ƒ¼Šˆ1 ƒÄƒÀÜÜà€Ä%€ƒ°ƒ¼ €Ä%€ŠŒŠ ƒÈ -ƒÈŠ” ƒÈ  ƒÈ8ƒÄƒÀƒÈÜÜà€Ä%€ƒ°ƒ¼ ƒ´ƒÄŠ˜iƒÈàƒ´ àƒ´iƒÈàƒ´àƒ´<iƒÈàƒ´iƒÈàƒ´%ƒÈàƒ´ Ô€ƒ´Üà‚ý! ƒÀÜà‚ýÔ€ƒ´‰l à‚ý Üà‚ýà‚ýà‚ýà‚ýƒ´# ƒÀÜà‚ýÔƒ´‰l€¹ €¹ ƒ3 ƒÀÜà‚ýÔƒ´Ô€ƒ´‰l€¹%% ‚ ƒÈ ƒÀÜàƒ ƒÀÜàƒ‰l àƒƒ Üàƒàƒ ‚àƒàƒƒ Ôƒ´ Ôƒ´" ƒÀÜàƒ‰l€¹Ôƒ´  ‚ƒ‚ƒ ,ƒÀÜàƒ‰l€¹Ôƒ´ƒ´% ƒ´ƒÄQ QàŠØ!ƒÀ‰˜‰œ‰ ‰ ƒÈ‰ŠàŠÜ ‰Šä ƒÈŠì ݉€‰Šè ŠðŠôŠøŠü ‰ƒ´‰p‹ àÔ‰€‰‰p €¹ ÔQ‹, ÔQàÔ‰€‰‰p€¹‰‰%ƒ´Ôi€©Q‹ €¡‰€‰‰p€¹€©Q ƒÈ€¡‹ €¡ÔY€©Q‹ Y€©ÔY€©QÔa€©Q ‹ a€©Ôa€©QÔe€©Q ‹e€©Ôe€©QÔƒÈ ‹  Y€©ÔƒÈ  €© QY€© Q‹, ø ‰€‰‚9 ‹00 øàÔ‰€‰‰p‚9  ‹43 øàÔ€¡‰€‰‰p‚9 €¹ ‚9€¹ ‚9€¹‚9€¹ ø‚9 ‹<* ø‰€‰‰p‚9€¹‚9‚9ô ‹@ ƒÐ ‚9ƒÐ ‹D ‚9ƒÐ ‚9ƒÐ É]  ‹H Ô€¹ÔƒÐ ‚9ƒÐ ԃР‹4 €¹ ƒÐ ‹D ‚9ƒÐ\ €¡‰€‰‰pÔ€¹‚9€¹ÔƒÐ‚9ƒÐÔ‚9€¹ƒÐ ‹L ÜÝ‹X ‰€‰ÜÝ€¹‹\‹`‹d ƒÈà‰€‰€¡ÝÜÝ€¹ƒ´ ƒÈƒÈ€¡‹h €¡ƒÈ ƒÈƒÈ Ô‰l‚9€¹ €¹%  Ô Ô €¡Ô €¡‰l€¹ A%€¡‰lÔÔ€¹‚9€¹€¹ ƒÈA€¡ €¡A ƒÈA‹Œ ƒ €µ‹ ƒÄƒÀ‹”‚å €µ ‚倵ƒƒÀ‚åƒÀƒ¬ Ôƒ´ ƒÈàƒÜÔàƒÈ ‹¤ƒ¬ €Ì€ÐƒÜ€Ì ƒ¬€Ì ƒÈà€Ä ‹¨ àƒÈ àƒÈ‹  à  €Äà!àƒÈàƒÈƒÈ ƒÈà ‹° ƒÈà ‹´‹¬ ààƒÈàƒÈ ‹¼ ƒÈà€¡ ‹À‹¸ €¡à ƒÈà ‹È‹Ä à‹Ì‹Ð‹Ø‹Üàà‹ä‹ìÔƒäƒÈ‹ô‹ø‹üŒ ƒÈà‰€Œ ‰€àŒ Œ ƒÈàŒŒŒ ofNativeInt toNativeIntget read write stackalloci‚ì胤ài胤ƒ¤ i‚ì胤i‚ì胤ài胤ƒ¤€Ã*i‚ì胤‚ì胤ƒ¤ƒài胤ƒ¤ƒ¤}胤ƒD]ƒ€Íƒƒ 胤ƒ¤ƒ$Á€‘ƒ,ƒ4ƒ<ƒ@‚ĂЂÀ胤‚Ôƒ¤ài‚Àƒ¤ài‚Àƒ¤‚À‚L‚üƒƒƒ ƒƒ¤èƒ¤€Ü‚Ài‚Àƒ¤i胤( ‚ĂЂԂÀƒ¤‚Ì‚ì胤胤$€Ü‚Ài‚Àƒ¤i胤ƒ¤,'|ShapeVar|ShapeLambda|ShapeCombination|àà à àƒ¤ |Bool|_|à à àƒ¤ |String|_|   à à à ƒ¤ |Single|_|   à à à ƒ¤ |Double|_| à à àƒ¤ |Char|_| à à àƒ¤ |SByte|_| à àƒ¤ |Byte|_| à à àƒ¤ |Int16|_| à à àƒ¤ |UInt16|_|  à àƒ¤ |Int32|_|   à à à ƒ¤ |UInt32|_|  à à à ƒ¤ |Int64|_|   à à à ƒ¤ |UInt64|_| à‚ìà‚ìà‚ìƒD] |Unit|_|iè‚Àƒ¤BàY‚Àƒ¤ƒ¤àiƒ¤à‚À‚Àƒ¤‚Àiè‚Àƒ¤iè‚Àƒ¤‚Àƒ¤(‚ĂԂÀƒ¤iè‚Àƒ¤ƒ¤è‚À3àiƒ¤ƒ¤ƒ¤ƒ¤àà胤胤 ƒ¤è‚Ààièè‚Àƒ¤ƒ¤ |Lambdas|_|àiƒ¤è胤ƒ¤|Applications|_| àYƒ¤ƒ¤ƒ¤àƒ¤ƒ¤àiƒ¤ƒ¤ƒ¤ |AndAlso|_| |OrElse|_|[àièè‚Àƒ¤àYàƒ¤€‘胤€‘€‘àYàƒ¤€‘胤-Ôƒ¤àYàƒ¤è]胤ƒ¤|SpecificCall|_|&!|MethodWithReflectedDefinition|_| àƒ¤}.)|PropertyGetterWithReflectedDefinition|_|.)|PropertySetterWithReflectedDefinition|_| àiè‚Àƒ¤ƒ¤ àiƒ¤èƒ¤ƒ¤€ÅÔŽ,i€ÁÔŒ¼ƒ¤!ÔŽ,èi€ÁÔŒ¼ƒ¤Ñi€Å ÑŽŽ ièàièèè#àièèèàièè]]]] ‚Ă̂ì à‚샤 i‚샤ài‚샤‚Ä‚Ì胤ƒ¤‚ìài‚샤ƒ¤ Y‚샤ƒ¤àY‚샤ƒ¤!‚Ä‚Ì胤胤ƒ¤ƒ¤‚ìàY‚샤ƒ¤ƒ¤a‚샤ƒ¤ƒ¤àa‚샤ƒ¤ƒ¤, ‚Ä‚Ì胤胤胤ƒ¤ƒ¤ƒ¤‚ìàa‚샤ƒ¤ƒ¤ƒ¤‚ĂРà‚Àƒ¤ |Var|_|àY‚샤ƒ¤àY‚샤ƒ¤ƒ¤ƒ¤|Application|_|‚Ăԃ¤‚Àài‚Àƒ¤ƒ¤ |Lambda|_|‚Ä‚Ì胤ƒ¤ |Quote|_|àa‚샤ƒ¤ƒ¤ àa‚샤ƒ¤ƒ¤ƒ¤ƒ¤ƒ¤àYƒ¤ƒ¤ƒ¤ƒ¤|IfThenElse|_|‚Ä‚Ì胤à胤ƒ¤ |NewTuple|_| ‚ẴH] à]ƒ¤|DefaultValue|_|‚Ă̂ô]胤ài]胤ƒ¤ |NewRecord|_|‚Ă̂ø‚L胤ài‚L胤ƒ¤|NewUnionCase|_|ài‚샤ài‚샤‚ü‚Lƒ¤àiƒ¤‚Lƒ¤|UnionCaseTest|_|ài‚샤ƒƒ¤àiƒ¤ƒ¤ |TupleGet|_|ài‚샤ƒ4]ƒ¤àiƒ¤]ƒ¤ |Coerce|_|ài‚샤ƒ@]ƒ¤ |TypeTest|_|‚Ẵ8]胤 |NewArray|_|‚Ä‚Ì胤胤ƒ¤ƒ¤|AddressSet|_||TryFinally|_|eƒ¤‚Àƒ¤‚Àƒ¤àeƒ¤‚Àƒ¤‚Àƒ¤M ‚Ä‚Ì胤胤ài‚Àƒ¤èƒ¤ài‚Àƒ¤‚À‚Àƒ¤ƒ¤ƒ¤àeƒ¤‚Àƒ¤‚Àƒ¤ƒ¤ |TryWith|_|$‚Ä‚Ì胤‚Ä‚Ð胤‚Àƒ¤ |VarSet|_|‚ẴD]ài]ƒ¤ |Value|_| ‚Ä‚Ì àƒ¤ |ValueObj|_|ài‚샤ƒ¤ |AddressOf|_||Sequential|_|a‚Àƒ¤ƒ¤ƒ¤àa‚Àƒ¤ƒ¤ƒ¤2àa‚샤ƒ¤ƒ¤ài‚Àƒ¤‚Àƒ¤ƒ¤ƒ¤àa‚Àƒ¤ƒ¤ƒ¤ƒ¤|ForIntegerRangeLoop|_| |WhileLoop|_|#‚Ẵ }胤ƒƒ¤èƒ¤ àYàƒ¤}胤ƒ¤|PropertyGet|_|T ‚Ẵài胤ƒ¤ƒ¤}胤‚Ẵài胤ƒ¤ƒ¤èƒ¤#àaàƒ¤}胤ƒ¤ƒ¤|PropertySet|_|‚Ẵ€Íƒèƒ¤ƒ¤àiàƒ¤€Íƒ¤ |FieldGet|_|Yàƒ¤€Íƒ¤àYàƒ¤€Íƒ¤' ‚Ẵ$胤ƒ¤€Íƒ 胤ƒ¤àYàƒ¤€Íƒ¤ƒ¤ |FieldSet|_|‚Ẵ(Á胤 |NewObject|_|$‚Ẵ0€‘胤ƒ,ƒ¤èƒ¤!àYàƒ¤€‘胤ƒ¤ |Call|_|)àiƒ¤ƒ¤ài‚Àƒ¤‚Àƒ¤ƒ¤àY‚Àƒ¤ƒ¤ƒ¤ |Let|_|3ài‚Àƒ¤àiè‚Àƒ¤è‚À‚Àƒ¤àiè‚Àƒ¤ƒ¤9ài‚샤ƒ<]ƒ¤àiè‚Àƒ¤è‚Àƒ¤àY]è‚Àƒ¤ƒ¤|NewDelegate|_|àièi‚Àƒ¤ƒ¤?àƒ¤àiè‚Àƒ¤‚Ä‚Ì胤è‚À胤ƒ¤ àièi‚Àƒ¤ƒ¤ƒ¤|LetRecursive|_|à}à} }à}}]‚L à‚L ‚Là‚L‚Là‚L‚L]}}‚L ]]]ƒ¤{‚ĂЂԂÀƒ¤‚Ì‚ì胤胤胤àY‚Àƒ¤ƒ¤èƒ¤àièi‚Àƒ¤ƒ¤]‚Lƒ}€ÍÁ€‘]ƒ¤‚ì胤ƒ¤‚ì ƒ¤‚샤ƒ¤‚샤ƒ¤ƒ¤‚샤ƒ¤ƒ¤ ]] €½ €½ƒ¤€½èƒ¤ €…ƒ¤ ]]]] ƒ¤ƒ¤] ‚Àƒ¤] ‚ì] ]ƒ¤ è]ƒ¤ƒ¤]ƒ¤]] ƒ¤]ƒ¤ }ƒ¤ ƒ¤‚Lƒ¤ €Í Áƒ¤}胤ƒ¤ƒ¤}胤ƒ¤}胤ƒ¤ƒ¤ƒ¤}胤ƒ¤ €½] €‘€½] ƒ¤]ƒ¤èƒ¤ƒ¤]ƒ¤ƒ¤èƒ¤iè‚À胤iè‚À胤)iè‚À胤è‚À胤ƒ¤ ]]è]è]ÔÔ]]ÔÔ]] 耑 Ô€‘耑4耑]耑耑€‘Ô€‘à€‘,€‘]èÔÔ]]ÔÔ]]ƒ ÔÔ]]] €‘¹ƒ]ƒ!# ]]]à€‘à€‘€‘%ƒ }¹}€‘€‘] ]]è]è]ÔÔ] è] }¹ƒ]]ƒ!]è]]}2}]ÔÔ]ÔÔ]è]è] €Í¹]€Í€Í]è] Á¹ƒ]ƒ! è]ÁÁ]ÔÔ]è]]è]Á"Á]ÔÔ]è]è]ièèièè$èèièèièèèÔÔ]]èÔÔ]]iè]è]+e]èÔÔ]]ÔÔ]]iè]è]O ]ÔÔ]]èÔÔ]]iè]è]è]è]]€‘7€‘e]èÔÔ]]ÔÔ]]è]}è]è]]] ]è] ] è]] ]è] ]à]]€Å€Å€Å€Å €Å€ÅŽ,€Å]Ž,]Ôè]]Ž, Œ  ÔèèÔ'iÔè]]èÔÔ]]ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]Ôè]]&iÔè]]èÔÔ]]~iÔè]]èÔÔ]]ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]Ôè]]èÔÔ]]ÔÔ]]Ž,èÔÔ]] ÔÔ]]èÔÔ]]ÔÔ]è]Ž, è è è ‚ ‚À Œ¼Œ¼‚À ‚ÀŒ¼]8YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔŽ,ÔŒ¼ƒ¤Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ ÔŒ¼‚À ÔŒ¼ƒ¤7YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤èÔŒ¼ƒ¤ ÔŒ¼ƒ¤€½ YÔè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŽ,èÔŒ¼ƒ¤ÔŽ,ÔŒ¼ƒ¤Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ÔŒ¼‚ÀÔŒ¼ƒ¤ÔÔ]]ÔŒ¼ƒ¤Ž,ÔÔ]]ÔŒ¼‚ÀŽ,Ôè]}Ž,Ôè]‚LŽ,Ôè]‚LÔè]‚L‚ìŽ,5ÔŽ,èÔÔ]]ÔŽ,ÔÔ]]0e]èÔÔ]]ÔÔ]]Ž,*a]ÔÔ]]ÔÔ]è]/a]ÔÔ]]ÔÔ]è]Ž,,e]èÔÔ]]ÔÔ]]i]ÔÔ]è]i]ÔÔ]è]y ‚ìƒ0ƒ }e]èÔÔ]]ÔÔ]]]èÔÔ]]ÔÔ]]i]ÔÔ]è]€ÁŽ,ÔÔè]‚ìÔè]}+a]ÔÔ]]ÔÔ]è]-‚¼ÔÔè]‚ìÔè]‚ì& Ôè]‚ìÔÔè]‚ìÔÔè]‚ì   €üÔÔè]‚ìÔè]‚ìe]èÔÔ]]ÔÔ]]]èÔÔ]]ÔÔ]]Ôè]}a]ÔÔ]]ÔÔ]è]ÔÔ]è]  i]ÔÔ]è]‚ìÔè]‚LÔè]‚ìŽ,ÔŽ,i€ÁÔŒ¼ƒ¤!ÔŽ,èi€ÁÔŒ¼ƒ¤€ÅÔŽ,ÔŒ¼ƒ¤ÔÔŒ¼ƒ¤]#Ôèi€ÁÔŒ¼ƒ¤€Å0‚ĂԂÀƒ¤‚Ä胤‚Ì‚ì胤‚Ø]] ƒ¤ƒ¤ƒ¤ ƒ¤‚D‚À‚D‚À‚Ă̂ЂÀ‚Ôƒ¤‚D‚À‚D‚À‚D‚Àƒ¤ Ô]] ‚D‚Àøc‚Ă̂ì胤胤‚Ä胤‚ЂÀàƒ¤àƒ¤ƒ¤‚D‚À‚D‚À‚Ôƒ¤%ø‚À‚Àƒ¤ ƒ¤‚D‚ÀÔ‚Ààƒ¤ƒ¤  Ü‚ÙÑi€Å ÑŽŽ èi€ÁÔŒ¼ƒ¤ i€ÁÔŒ¼ƒ¤i€ÅÑi€Åèi€ÁÔŒ¼ƒ¤Ž ÑŽŽ  ièi€ÁÔŒ¼ƒ¤iŽ Ž 3iŽ €ÅŽèièi€ÁÔŒ¼ƒ¤ àŽ Ž iŽ "èièi€ÁÔŒ¼ƒ¤ƒ)#Ôièi€ÁÔŒ¼ƒ¤ Ô] ƒ-àŽ !èièi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤€§àŽ €ÅŽiŽ iŽ Ž èièi€ÁÔŒ¼ƒ¤ƒ)ÔÔièi€ÁÔŒ¼ƒ¤%™iŽ Ž àŽ ÔŒ¼ƒ¤€‘€‘Ô]àƒ¤€Á]€‘€‘]ÁÁŒ¼ ÔŒ¼ƒ¤Œ¼ƒ¨  àà ƒ1   ài‚Àƒ¤ƒ¤ ‚L €½ƒ¤ ]ƒ¤ }ƒ¤ ƒ¤ ]€½]‚Àƒ¤ i‚Àƒ¤ ƒ¤i‚Àƒ¤ ] ]ÔÔ]] ]€½* èÔÔ]]ÔÔ]]]]]è]]è]] è] ]è] Œ  Ô ]Ô] ÔÔ]]Ž, ÔŽ,ÔÔ]] èÔÔ]]Ž,% Ôè]]èÔÔ]] Ô]] èÔÔ]] è]Ô] (‚ ‚À (Ô] ‚ ‚À ‚ ‚À Ô] ‚ ‚ÀÔ] ÔŒ¼ƒ¤Ž, ÔŽ,ÔŒ¼ƒ¤ èÔŒ¼ƒ¤Ž, Œ¼ ƒ¤ÔŒ¼ƒ¤6 Ôè]‚ìÔÔ]è]èÔŒ¼ƒ¤ ÔŒ¼ƒ¤ƒ¤ è]‚Ä ƒ¤Œ¼ ÔŒ¼‚À ÔŒ¼‚ÀÔŒ¼ƒ¤‚À‚Ä ÔÔ]] ÔŒ¼ƒ¤ ÔŒ¼ƒ¤èÔŒ¼ƒ¤ƒ¤‚Ä胤 ÔÔ]] ÔÔ]] ‚ÀŒ¼ ] }è] ‚Lè] Ôè]‚L Ôè]‚ì Ôè]‚ì ‚ìè]* ]èÔÔ]]ÔÔ]]0e]èÔÔ]]ÔÔ]]€‘ Ôè]}€Í) ]ÔÔ]]ÔÔ]è]}                ]ÔÔ]è] ‚ìƒ0€‘ Ôè]‚Li€ÁÔŒ¼ƒ¤ i€ÁÔŒ¼ƒ¤Ž,èi€ÁÔŒ¼ƒ¤ èi€ÁÔŒ¼ƒ¤Ž, €ÅÔŽ,ÔŒ¼ƒ¤ ÔŒ¼ƒ¤ €Å èi€ÁÔŒ¼ƒ¤ èi€ÁÔŒ¼ƒ¤ ƒ¤ ‚D‚À ‚D‚À‚D‚Àƒ¤ ]Ô‚Ààƒ¤ ‚D‚ÀÔ‚Ààƒ¤ Ô‚Ààƒ¤‚Àƒ¤ €Å€Å i€Å €Å€Å i€Åi€Å(ƒ-ƒ- Žƒ- ƒ- ƒ-Ž ŽŽŽŽ€ÁŽŽ ŽŽ (ÔŒ¼ƒ¤Ž ÔŒ¼ƒ¤ ÔŒ¼ƒ¤ Ž ŽŽ€Á€ÁÔŒ¼ƒ¤Ž i€ÁÔŒ¼ƒ¤ ‚Ùièi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤ ƒ5€ÁÔŒ¼ƒ¤èi€ÁÔŒ¼ƒ¤ ièi€ÁÔŒ¼ƒ¤Ž,  Ž, ‚e‚e Ž, ÔŽ,‚e‚eèÔŽ,èŽ, ièŽ,ÔŽ,è ÔŽ,è iè0ièŽ,ÔŽ,èÔŽ,è€ÅÔŽ,(Œ@(€ÅŒ@ Œ@ Œ@€Å Ž, ÔŽ,è èŽ,àiÔàiè ièàiè àiiàiài2àièÔàièÔàiÔài+àièÔàiàiÔài ièàiè àiàiài2àièÔàièÔàiÔài+àièÔài Ž< ÔiÔiè Ž@ Ôi Ôi耑]Ôi Ž<Ôi Ôi Ž@Ôi ÔŽ,i€ÁÔŒ¼ƒ¤ ÔŽ,èi€ÁÔŒ¼ƒ¤Ñi€Å ÑŽŽ i]Ñi]‚À ‚À]‚Ì‚Ð‚Ô‚Ø €á‚Ä0 ‚̂̂ì‚ì胤胤‚ЂЂԂԂ؂؂ĂĀáE‚ô‚ø‚üƒƒƒƒ ƒƒƒƒƒ ƒ$ƒ(ƒ,ƒ0ƒ4ƒ8ƒ<ƒ@ƒDƒH €á‚쀆,‚ô‚ô‚ø‚ø‚ü‚üƒƒƒƒƒƒƒ ƒ ƒƒƒƒƒƒƒƒƒ ƒ ƒ$ƒ$ƒ(ƒ(ƒ,ƒ,ƒ0ƒ0ƒ4ƒ4ƒ8ƒ8ƒ<ƒ<ƒ@ƒ@ƒDƒDƒHƒH‚ì‚ì€á è‚ ‚ƒ¤‚]‚¼Ô‚L‚L Ô‚L Ô‚L ‚‚L‚¼Ô€‘€‘ Ô€‘ Ô€‘ ‚€‘‚¼ÔÁÁ ÔÁ ÔÁ ‚Á‚¼Ô}} Ô}‚}‚¼Ô€Í€Í Ô€Í Ô€Í ‚€ÍÔƒ¤àiè‚Àƒ¤ 胤 ‚Ì‚Ì‚Ð‚Ð‚Ô‚Ô‚Ø‚Ø ‚Ä‚Ä ‚ì‚샨 y ‚ƒ¤ ‚‚‚ ‚‚À ‚ ƒ¤èƒ¤ ƒ¤iƒ¤èƒ¤Žx Ô Ô‚¸ ksprintf kprintf Ž€ ÔÔ %ÔÔ‚¸ ‘Ô‘‚¸‘ kbprintf ‚1Ô‚1‚¸‚1 kfprintf Ž‘‚¸‘ bprintf‘ ‘‘  ‘  ÔŽt Ô‘ŽxaÔÔÔ# aÔÔÔ Ô Ô Ž€ aÔÔÔ$ aÔÔÔ‚1 ‚1  uޤààààÔޤàÔÔ àÔàÔà    Ôàޤ    Ôàޤ ]Ô i]]] i]]] i]] ¹ƒu i]]i]]]]]Ô]Ôi]]]]i]]]]%è]ÔèÔ]Ô­ ­ޤi iiYài ài iYàiiYàiiYàiiYài ài àà ÍYàààà@ iYàiàiààià YààààޤÔޤà Ôè]  ­'ÔèÔ]Ôè] àà àà2ÔèÔ]Ôààè]ޤYààààE ޤYàààààààààà&è]ÔèÔ]Ô   ­    Y€Ý €Ý €Ý€ÝY  iè+Y­€Ýà àà/ ièÔޤààè ­)ièÔޤàè‚´-¹àà‚e‚e‚´‚´à‚´‚´.ièÔޤààèiàèiàè Ô Ô Ô€§ޤYààààààààiàèààèè­àiàèèàèè€Ýàà)ièÔÔè iè Ôiè)ÔÔÔè!aÔÔÔ Ô'ÔaÔÔÔ aÔÔÔ\ aÔÔÔÔÔÔÔÔÔ3ÔaÔÔÔèÔèÔ]Ô , ÔaÔÔÔÔèÔ]Ô6ÔaÔÔÔè](ÔaÔÔÔ ‚¸ Žü* ÔaÔÔÔÔ-ÔaÔÔÔ9ÔaÔÔÔ‚¸(à à à àÔ]Ô Ô]Ô]Ô] & èÔèÔ]Ô]( èÔèÔ]Ô]]% èÔèÔ]Ô]# ÔèÔ]Ôè ]# ÔèÔ]Ôè% ÔèÔ]Ôè0 èÔèÔ]Ôàà(ÔaÔÔÔ Žü!aÔÔÔ'ÔaÔÔÔ aÔÔÔ3aÔÔÔÔÔ(ÔaÔÔÔ   è]u‚€‘% €Ä% Ô €Ä% €Ä%%€Ä%Ô    i   i  i  ài ài  ài  a ‚ài ài a ‚‚  a ‚ i w#a ‚‚ ‚èia ‚‚‚˜‚œ‚p‚ a ‚‚‚€‚|  i  ‚‚pa ‚Ô ‚Ô Ô ‚Ô‚ ièièè ièè iè0 ‚œ‚‚ièiè‚ ‚€‚‚"iè‚´Ôè‚#‚´Ôièèè‚´Ô‚ ‚1Ôèi $ ‚œ‚€‚‚‚ èi‚1ÔÔèiÔÔ‚1‚ÔÔèiÔ*ÔÔèiÔÔ‚1/ÔÔèiÔÔ‚1‚èi èii èièiièiì èi  ài èiìèiài¹‚Ôi‚‚ i‚‚Ôi‚‚‚‚èi‚Ôià‚‚ ià‚‚Ôià‚‚‚‚èià‚ ‚è‚è è Ü$ÔÜ ‚¹‚´ÑÜ à‚€  €Ä% €Ì% €Ð%Ñ‚9à‚ €  ƒ5€Ì%€Ð%S‚à‚]]€ àà€Ä%€Ì%à‚‚%€Ð%& ‚¹‚´ÑÜìÔÔÔ‚ Ô‚8 ÔÔÔ‚ Ô ‚D Ô‚ H Ô‚ i‚GÔÔÔ‚èièiè‚Ô‚*‚¹‚´ÑÜèi‚¹‚´ÑÜ‚ÔàiQ| ÔÔÔ‚&Ô‚ÔÔÔ‚  ! ÜÔÔÔ‚7Ôii‚ÜÔÔÔ‚¤ ¹Ôài¹ÔÔ‚‚QÔài Ô‚Ôài9)iÔÔ‚‚  Ô‚  ‚ ‚D  }¹ Q€É }ià‚ ‚ ii‚ €§$ÔÔÔ‚ÔÔ‚‚èi‚]QQÔàiè‚Ô‚Ôài]]9‚AA))}èiÑ%Ñܹ‚´ÑÜ‚¹‚´ Í %  €Ý ‚´ ‚‚´‚ ‚´‚1‚ ‚´‚‚´ ‚1 ‚´¹(    i‚ ‚‚ ‚i‚ ià‚à‚‚ ‚ià‚ $   ¹‚´ÑÜ ‚ Ô‚0 Ô‚ Ô‚ ‚ÔÔ‚4 ÔÔ‚ÔÔ‚ Ô‚ Ô‚8ÔÔÔ‚ÔÔ‚ ÔÔ‚<@D Ô‚ H Ô‚ ‚i ‚‚ Q i ài ài Q + ‚´ÜÔÔÔ‚Q ‚ i ài ài ‚i Ôi‚ ÔÔi‚ptx|I i‚ ‚] 9i ài ài  ¹‚´ÑÜà‚% ià‚}”˜œ  œ ‚ i‚ i‚i¤ ài  ‚´ ‚L]¼¼ ¼è] ¼]]¼èi]¼èièi]¼¼] (è] è]^YMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy ]]a\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(èi] èi] èi] èi]_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(èièi]èièi] èièi] èièi]\WMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+SumType@DebugTypeProxy_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxyÄ ÄÈ ÈÌ ÌÐ ÐÔ Ôì ìèì]ìèiìèiì]èiìì(è è è`[Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyjeMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy (èi èi èia\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy èifaMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy ]èid_Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxya\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyô ôø øü ü   i }i i}i}i} ì¹] i‚L]i‚L‚L}i ì¹ ì¹ i}Ô‚Ô‚‚‚ ‚‚‚‚‚‚p‚‚‚˜ ‚‚‚Ô‚Ô‚‚‚Ô‚Ô‚‚‚‚è‚è‚‚‚Ô‚‚‚è‚ Ô‚‚ è‚‚è‚Ô‚‚‚Ô‚‚è‚‚‚è‚‚‚ ‚‚è‚‚è‚ Ô‚ à‚Ô‚à ‚‚Ô‚èÔÔài àiài4è‚Ô‚ÔàiÔ Ô‚Ôài Ô(Ô‚ÔàiÔ4è‚Ô‚ÔàiÔh,è‚Ô‚Ôài ‚‚ ‚ èi Ñ  Ñ Ñ  ÑÑ    ƒ=Ñ ƒ=ƒA̓=Ñ Ñ‚\ ÉÉÉ ” 1 ô ‚h‚` É]€‘ ‚` A€™œ  1ü øü ü} }]¹ àÔàÔ]¹€„ €„Y  àY  €„àY àY àY  Y =µµ ±ƒE Y ƒE-µ=µ ±ƒEEƒE±ƒE0àY =µµ±ƒEY ƒEAàY ±µàY ±µY ±µ€ÅàY ]àY €… Y €…àY àY à à ]èi àiài]€‘€ÍÔ€ÍÔ€Íi ]¹ €Í¹€Í €‘i* ]€ÍÔ€ÍԀ̀Íi€Íi]¹ i i] ]]¹‚  -i ‚ iÔ]¹à à à  ]¹¹] ]¹] ]]¹Ô}Ô}]Ô}Ô}} }]¹}Ô]¹ àÔÔ(iàÔàÔÔÔ]¹ €…]¹ ]¹ €‘ €‘]¹Ô]¹]¹ ]]]]]]]] }}}ƒ }Á]ƒ]­ Á]¹ÁÔ]¹} Ô]}Ô]Ô]Ô]Ô]Á }]} }]]à à Ô}Ô}} }]¹Ô]¹ ]¹] ¹} ¹ƒu €Í€Í €ÍàY àY   ài€‘ ài ‚ ‚ €… }}€… ¹}  ]¹ ¹€‘ } ¹Á ¹ƒu }Ô  ÔÔÔ]] ƒI ‚Li ‚D isEmpty ‚D‚D‚D ‚D singleton remove‚D‚D‚D union‚D-‚D unionMany intersect intersectManyÔ‚D iter ‚D emptyÔ‚D forall‚DÔ‚D$i‚D‚DÔ‚DÔÔ‚D foldÔÔ‚D foldBack‚DÔ‚D ‚D‚Dè ofList ‚D ofArrayè‚D toList ‚D toArray-‚D toSeq ofSeq difference‚D‚D isSubset isSupersetisProperSubsetisProperSuperset ‚D minElement maxElement‚4‚,‚8‚4‚4‚,‚, ‚, ‚, ‚,‚,‚,‚,‚,2 ‚4‚,‚,‚4‚,‚,‚8€Ù (‚4‚,‚,‚8‚,‚,€Ù‚,N‚,‚8‚4‚4‚,‚,‚,‚,‚,‚,!‚,€Ù‚,‚,Y‚,‚,Y‚,‚,J ‚4‚,‚,Y‚,‚,‚,‚,‚8‚,&Y‚,‚,€Ù‚,i‚, i‚,;‚8‚4‚,‚,i‚,‚,‚,i‚,‚,5‚8‚4‚,‚,i‚,‚,€Ù‚,'‚4‚,‚,‚8‚,Ô‚,ÔÔ‚,‚4‚,‚8‚8‚4)‚4‚,‚,‚8‚,ÔÔ‚,ÔÔ‚,‘0€Ù‚,‚,‘4‘8.‚4‚,‚,‚,‚8‚,'‚,€ÙÔ‚,‚,‚,€Ù‚,‚,o‚4‚4‚,‚,‚,‚,Y‚,‚,‚,‚,‚8‚,‚,‚,&‚,€Ù‚,‚,‚,i‚,‚,4i‚,‚,€ÙÔ‚,‚,i‚,‚,] i‚,‚,‚4‚,‚,i‚,‚,i‚,‚,‚8‚,9i‚,‚,€ÙÔ‚,‚,‚,‚4‚,‚, ‚4‚,‚8‚,à‚, à ‚, è‚, è‚,8è‚,è‚,‚4‚,‚,‚,è‚,è‚,‘< è‚,‘<‚, è‚,è‚,è‚, ‘< è‚,&è‚,è‚,è‚, ‘< Ü‘< Ü‘<‘@ ‚,Ü‘<Ü‘<=‚,€„è‚,è‚,è‚,è‚,‚8‚4‚,‚,‚8‚4‚,‚,‚,‚,‚,#€Ùè‚,è‚,€Ù‚,‚,è‚,èè‚,‘D ÜÜ‚, ‚,‚,€Ù‚,==‚,A‚,€Ù-‘H €Ù ‚,‚,€Ù‘0‘4‘8(è‚,‘< è‚, Ü‘<‘@ Ü‘<‘D‘H ‚,‚,==ÔÔ ‘P €Ù ‘T ‚,‚, ‚D‚D‚D ‚  ‚ ‚ ‚ ‚ à‚  tryFind‚ ‚ ‚  containsKeyÔÔ‚ (àÔÔà‚  tryPickàà à#ÔÔà‚  pickÔÔ‚ $‚ ÔÔ‚ 1i‚ ‚ ÔÔ‚  ‚ %‚ ÔÔ‚  — 'ÔÔÔ‚  —'ÔÔÔ‚  ‘d -I Ii-i‚  ‘h ÔÔ iÔÔ‚  findKey ‘l"àÔÔ‚  tryFindKey‚ èi‚ -i‚ ièi‚ i‚  ‚  iIÔÔ ‘h ài ‘l ‚ ‚ ‚ ‚&‚‚‚‚‚ ‚ ‚ ‚"‚‚‚B ‚‚‚‚‚‚ ‚5 ‚‚‚‚‚ ‚€Ù‚4‚‚‚‚‚€Ù‚àà€Ù‚i‚‚Ei‚‚€ÙÔÔ‚‚i‚‚u i‚‚‚‚‚‚i‚‚i‚‚‚Ji‚‚€ÙÔÔ‚‚‚/‚€ÙÔÔ‚<‚‚‚‚‚‚4‚€ÙÔÔ‚‚Y‚Y‚O ‚‚‚‚Y‚‚‚Y‚‚E ‚‚‚‚Y‚‚‚€Ù‚2‚‚‚‚‚€Ù‚3‚‚‚‚‚ÔÔ‚ àA ‚‚‚‚àà‚(àÔÔà‚ÔÔ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚= ‚‚‚‚‚‚‚Ô‚ ‚ ‚= ‚‚‚‚‚‚%‚ÔÔ‚5‚‚‚‚‚—‚ ‚ ‚ ‚ ‚ ‚ —5‚‚‚‚‚—‚ 9 ‚‚‚‚‚2€ÙÔÔÔ‚ €Ù&èi‚èièi‚ ii‚ ‘t i‚ ‚€Ùèii(‚€Ù‚=i‚i‚€Ùi i iEiièièi=i‚A‚€Ù-i ‘x IÜ‚Iè‚è‚Fè‚è‚‚‚‚‚è‚è‚ ‘| è‚‘|‚è‚ II+è‚è‚‚I‘| è‚,è‚è‚è‚ ‘|Ü‘|Ü‘| ‘€ ‚Ü‘|Ü‘|=I‚ ‘t ‚‚i ‘x (è‚ ‘| è‚Ü‘| ‘€Ü‘| I IiIiI =II=I=I I ‘ˆ I - I ‚  ‘” ‘ -I I II ‚(I length1 length2 length3 length4   zeroCreate    create +ÔÔÔÔ init       #ÔÔÔ  Ô    Ô (ÔÔÔÔ iteri 0ÔÔÔÔ mapi lengthÔÔ   blit   -   - concat Ô Ô collect  append  copy è èÔÔ –ô –ô–ôÔÔ–ôÔÔ iter2 –ô –ô–ôÔÔ map2 — ——"ÔÔÔ mapi2 –ô –ô–ôÔÔ — —— ÔÔÔ iteri2 –ô –ô–ôÔÔÔ ÔÔÔ –ô–ô –ô–ô–ôÔÔ exists2 forall2àÔà àÔàÔàÔàÔààÔààÔà€Ñ€Ñ€ÑààÔà€Ñ€Ñ €ÑÔ i€Ñ€ÑiÔÔ ÔÔàÔàÔiizip Y YYY zip3 iiii unzip Y Y Y YYY unzip3rev –ô –ô–ôÔÔ –ô –ô–ôÔÔ——$ÔÔÔ foldBack2——$ÔÔÔ fold2–ôÔÔ–ôÔÔ –ô –ô–ôÔÔÔÔÔÔ scanBack –ô –ô–ôÔÔ reduce reduceBack Ô€ÙÔÔsortInPlaceWithÔ sortInPlaceBy sortInPlaceÔÔ sortWithÔ sortBy sort -ÔÔ findIndexàÔàÔ tryFindIndexÔ permute  sum  Ômin Ômax -=A average -=A sub    fillƒM ‘´ Ôà ƒM ƒM ‘¸ Ô ƒM ‘¼ Ô ƒM ‘À –ô–ôƒM‘Ä ÔƒM‘È –ô–ôƒM‘Ì ÔƒM‘Ð Ô ƒM ‘´àà Ô ‘¸ Ô ‘¼ –ô ‘À –ô‘Ä –ô‘È –ô ԑ̑Рèèèè-èèÔè èÔÔèÔè è tail èèèèèè è"èèàà&èÔàèèèÔàèÔÔèèÔèè è replicateè#èèèè–ôèè–ô–ô"ÔÔèè—èè——(ÔÔÔèèèè —è5 èèèèèè3è—èèèè 6èÔÔÔèèè map3%èèèè,è—èèè.èÔÔÔèè(èÔÔèèèè–ôè–ô–ôÔÔè èÔÔèèè%è–ôèè#èÔÔè"—èè——,ÔÔÔèè–ô5 –ôèèèèÔÔè–ô èè–ôè–ô#èÔÔè"—èèE —èèèèèè@ ÔÔÔèèèè,ÔÔÔèè–ôèè!ÔÔèèÔèÔèàÔèèèààÔàèÔàèèÔè$ièèÔè"ièèèi+YèèèèYèièè'èYèèè èÔÔè èèÔèè--èÔè ÔÔèàÔèàÔè-=A-=AÔè -=AÔèèÔèèèÔè - ÔÔÔÔ‘ ÔÔÔ Ô ‘‘ Ô ÔÔ Ô ÔÔ Ô‘ÔÔÔ ÔÔ‘ Ô Ô‘Ô‘ø Ô--Ô- ‘ü Ôài-Ôài delay unfold’° ’°’ Ô-Ô initInfinite’ Ô-Ô =AÔ- =A - =AÔÔ- =AÔ-====A ÔÔ-- ’ Ô==- -Ô==- ’ + Ô=Ô==--1-Ô=Ô==--’-Ô- where ’-Ô- ’ ÔÔ-ÔÔ- ’%-ÔÔ-- ’  Ôà-Ôà- ’$ i-i--- ’( iY#-Y---’, ) -) cast=ààAàÔà-Ôà-=ààAàÔ-Ô-’0 -==-- takeEE+ èèEE=A ---, èèEE=A=AÔÔ-=AÔÔ- ’4 Ô-Ô’< -- “-Ô-!ÔÔ==ÔÔ-==ÔÔ==AÔÔ-- compareWith%èè=èA’@ %èè=€ÑA’D -’H -Ü= truncate’L! -=Üi-i- ’P+ ÔÔ-Ü=!-ÔÔ-Ô==Ô=AÔ-àÔ==àÔ=AàÔ-Ü’T# -ÜÜ=-- windowed à=Üàà= à=àà=à=à=='-€ÑÜàà=i ài4ài-€ÑÜàà=àà=(àà=àà=="€ÑÜàà=Üàà=’X% -€ÑÜàà=’\ €ÑÜàà=‚-€ÑÜàà=-Ô cache’` readonly ’p Ô- i-"-i-Ô- groupBy’ ’t( -Ñ’ ’ = ’  distinct’ ’  ’x1 Ô-Ñ’ ’ = ’ -Ô- distinctBy ’|’€ ’Œ Ô- i-iÔ- countBy=A=AÔ-=A=A =AÔ-’! Ô-=Ü takeWhile’” skip’˜' Ô-=ÜÜ skipWhile==AÔÔ--=AÔ-‘ø =Ôài ‘ü’’Ô== ’Ô==Ô=Ô==- ’ -Ô== =’ == ’ ==ÔÔ ’ ’ === ’  ii Y Yi’,=’0= = %% ’4 Ô’8 “’<“Ô““““Ô““Ô“’@“p’D“t’H i’L -i%% i =i= ’P= =’T’T’T - =Üàà=’X àiài ài’\’`Ñ’ €Ñ ’d ÔÑ’ €Ñ’  i€Ñ’ Ñ’ €Ñ i€Ñ#’ i€Ñ€Ñ€ÑI’ €Ñ I’ €Ñ i- ’  i-I’ €Ñ ’p ’h-I’ €Ñ I’ €Ñ ’l I’ €Ñi-Ñ’ €Ñ -i-Ñ’ ’t Ñ’  ’  ’ Ñ’  ’x Ñ’  ’  ’  ’|’€Ñ’  ’„ ÔÑ’  Ñ’  ’  I’ i iI’  ’ŒÑ’  Ñ’  ’„’ˆ-I’  I’ iÑ’  -i’’”’˜’¬ Ô=-Ô= ’´# ÔÔàÔ)-ÔÔàÔ ’¸ ÔÔ’¼#-ÔÔÔèÔèÔ)èÔèÔÔèÔ’° ’È’°’È ’È ’È’Ì ’Ð Ô’Ä ÔÔ--Ô ’Ô - à-Üà- à- -à-!-ÜÜà- ÜÜà-’Ü' Ô-ÜÜà- -ÜÜà--Ô-’à’Ä--Ô ’ì+ ÔÔÔÔÔ ø4øÔÔÔÔÔ y’ y’¤’¨y ’  ’ ’ Ô=’¬ ’°’°’°“< Ô ’´ ’¸AA’Ä’À==’À’À% ’È Ô ’È ’È’Ì Ô ’Ð Ô ’ÔÜà-’ØÜà- à-%’Ü =-’à’ä  ’è ÔÔÔÔ ’ì’äÔÔÔ“ àÔàÔàÔ “’ô“ Ô’ôÔ’ô“’ü“’ô’ô“’ô“’ô’ô““(“(“$ ““(“(=““$“$“$“= ’ô’ô’ü ’ô“ ’ô“ ’ôGBMicrosoft.FSharp.Collections.Generator+Step`1+_Stop@DebugTypeProxyGBMicrosoft.FSharp.Collections.Generator+Step`1+Yield@DebugTypeProxy (“ “FAMicrosoft.FSharp.Collections.Generator+Step`1+Goto@DebugTypeProxy’ü“ ’ü““  “““ “(Ô’ô(àÔ(Ô“ “Ô“ Ô“““ Ô““““““  “’ô““’ô ’ô“$ à'’ô“““’ô(=“(“, “(“0=“(“8 =9 = “L Ô==Ô= “P ÔÔ=Ü=ÔÔ= “T ÔÔ===%=ÔÔ== Üà àÜÜà “X) Ôà=ÜÜàÜÜà=Ôà=Ô=Ü“\ Ô=Ü=Ô= “` ÔàiÜ Ü=Ôài Ü‚9“d ÔÜ!ÔÜÜ‚9 Ü‚9“<“h ÔÜÜ‚9àÜÜ‚9=àÔàÜààÜà'ÔÜàÜà Üà “l8 ÔàÔÜÜàÜà ÜÜàÜà)=ÔÔàÔ“x Ô==Ô=“8AA“@“@“@  “LÔÔ “PÔÔÔ= “T= “XÔà“\Ô=Ü “`àiÔài ài àiài“d Ü‚9“h Ü‚9 Üà “l Üà"àààà%“x- €Ù –ô –ô“ˆ –ô –ô€ÙÔÔ –ô“ˆ –ô“ y“” y“˜ –ô –ô“œ Ô–ô –ô yÔÔÔ“” Ô –ô“œ –ô à à isSome isNone àÔÔàÔÔàÔàÔààÔààÔàà bind àèà  base1 base2    Q] Q]zeroCreateBased  createBasedÔÔ initBasedÔÔ Ô!ÔÔÔ “° ÔÔ “´ ÔÔÔ(ÔÔÔ“¸ “¼  rebase(  “°  ÔÔÔ “´ “¸“¼ €Ù€Ù €Ù€Ù €Ù€Ù  èèèèÔèèèè –ôè–ôè#èè–ôè –ô*èèèèè$è–ôèè5 èèèè–ôèèèèèèèÔè ÔèèèèèèÔè–ôè–ô–ô èè èè!èèèèèèèèè1èèèèèèèèèèèè=èA è@èèèèèèèèèè èèÔ!èèÔè èèÔè.èièièèèèèiièèèYèY;èYèYèèè(èèèèYYèèè0èèèèèièièèB èèèèèèèY(èYèèèè  è"èèèè.èÔÔèèèèÔÔ#èÔÔèÔÔ Üè3 èèèèèè&èÔÔÜè ÜèÜè“Ø ÔƒY ƒY‚9Ô Create“Ü ‚9CreateFromValue ‚9 get_IsDelayed get_IsForced ForceSynchronizedForceUnsynchronizedForce“Ø“Ü InfinityNaN InfinitySingle NaNSingleseq unboxbox% raise% à% |Failure|_|not compare  failwith invalidArg nullArg invalidOp ZTThis function has been renamed to 'reraise'. Please adjust your code to reflect this rethrow reraise ifst isnd ignore Üref Ü ÜÔÔÔ"ÔÔÔÔÔÔ"ÔÔÔ “ä ÔÔÔÔÔ “è ÔÔÔÔÔ€í€×This construct is for ML compatibility. Consider using the '+' operator instead. This may require a type annotation to indicate it acts on strings. This message can be disabled using '--nowarn:62' or '#nowarn "62"'.>TIsHiddenà defaultArg  èèèè Ü incr decr exit  |KeyValue|    €Ý ‚e‚e string ÔÔ lock using] typeof‚=Ômethodhandleof typedefof sizeof hashidƒeƒe stdin‚1 stdout stderr“ì - “ð-abs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh “ô“ø pown Ô Ô “ä Ô Ô Ô “è Ô    ” =ÔÔÔÔÔÔ -aLThis function is for use by compiled F# code and should not be used directly´TIsHidden”  = = Ô Ô Ô Ô Ô Ô  - ”  = = Ô Ô Ô Ô Ô Ô  - ”  = = Ô Ô Ô Ô Ô Ô  - ” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -” ==ÔÔÔÔÔÔ -”  =   =  - ”  = =  - ” ”¨ ÔÔ!=ÔÔ”¬ ÔÔ-ÔÔ”  ”° ÔÔ#=ÔÔ ”´ ÔÔ!-ÔÔ” = = -              €Ý€Ý€Ý€Ý€Ý €Ý€Ý€Ý €Ý€Ý€Ý €Ý€ÝÔÔÔÔÔÔÔÔààà ààà+àààà,àààà9àààààà$:ààààààG àààààààà, H àààààààà0  ààà €‘] ”À]€‘ Ô ”Ä ]]€‘ÔÔ”È Ô• • •4 •HÔÔ•d•x•Œ• •´•ÈÔ– –  –4–H–\–p–„–˜–¬ –À” ””   ” ”    ÔÔ =          Ô Ô  =           Ô Ô  =           Ô Ô  =      ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =     ÔÔ =             =              = ÔÔ”¨”¬ ”° ”´     = ”À ”Ä Ô”Ð Ô”Ø”à”è”ð”ø•• ”È ]Ô Ô  €Ý€Ý €Ý€Ý••• •(•0• •<•D•4ÔÔ •T ÔÔ •`  •H]ÔÔÔÔ   •P Ô Ô  •\•l•t•d•€•ˆ•x•”•œ•Œ•¨•°• •¼•Ä•´ Ô•Ð Ô•Ø•à•è•ð•ø–– •È ]Ô Ô      €Ý €Ý     ––– –(–0–  Ô –< –D –4 ]Ô Ô–P–X–H–d–l–\–x–€–p–Œ–”–„– –¨–˜–´–¼–¬ÔÔ –Ì ÔÔ –Ø –À]ÔÔÔÔ –È Ô Ô Ô –Ô defaultof equals èèèè –ø –ô Ô –ô –ü–ô–ô –ô –ø –ô — — ÔÔ—–ôÔ–ôÔ — –ôÔ —  ÔÔÔA——–ôÔ–ôÔ— — — ÔÔÔÔ——Ô–ôÔÔ—Ô— —Ô–ôÔÔ— –ôÔÔ—! ÔÔÔÔ{———Ô—Ô–ôÔÔ–ôÔÔ/—ÔÔÔÔ—  — ÔÔÔ ÔÔÔÔÔ —— ——( —$" ÔÔÔÔ—$—Ô—ÔÔ!–ôÔÔÔ—Ô—, —Ô—ÔÔ—0 —ÔÔ –ôÔÔÔ—4# –ôÔÔÔ—8( ÔÔÔÔÔ€Ç —$—$—Ô—Ô—ÔÔ—ÔÔ–ôÔÔÔ–ôÔÔÔ8—$ÔÔÔÔÔ—$—(—$ Ô  &ÔÔÔÔÔ €É€á€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý €á €É€É€á €á—@—D€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý—ˆ€Ù]—Œ—„       ƒAÍ  u ƒAÍ  ƒAÍ  ƒAÍ    ]——”—˜ÔÔoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHiddenÔÔÔÔ —¼ —À —È€‘€‘ÔÔ€‘ÔÔ]] ÔÔ ÔÔ Ô Ô Ô Ô ÔÔ Ô Ô Ô Ô ÔÔ —´ ˜ ˜  ˜ ÔÔ ˜ ˜X ˜\ ˜d ˜P ˜¤ ˜¨ ˜° ˜œ—D                  €Ý€Ý €Ý€Ý €Ù—„ €Ù——”ÔÔÔ€ÝÔ€Ý Ô Ô Ô Ô —¨—° ÔÔ—˜]€‘ÔÔÔÔ€Ý €Ý€Ý     —¬ Ô ÔÔÔ ÔÔ ÔÔ ÔÔ Ô Ô ÔÔ —´]]]ÔÔ —¸ —¼ —¸ Ô —À —Ä —È —Ä  ˜ ˜ ˜ ˜ ˜  ˜ ˜ ˜  ˜P ˜T ˜X ˜T ˜\ ˜` ˜d ˜` ˜œ ˜  ˜¤ ˜  ˜¨ ˜¬ ˜° ˜¬%˜ì˜ü™{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden% QQ ˜ìQ ˜ì ! QQ!!  ! ˜ì  ˜ìQQ    ˜ìQQ ˜ì ˜ìQQ     QQ   ˜ìQQ  ˜ìQQ  (  ˜ìQQ   QQ ˜ìQQ ˜ì ˜ì             @            QQ€áQ QQ €á€áQQ  €áQQ €á €áQQ QQ €áQQ  €áQQ ' €áQQ  QQ €áQQ €á ˜ü™€á €áQ QQ  €á€ái €áY a €áae €áe €áii€áYY€áaa #€áee €Éii€ÉYY €Éaa#€Éee ˜ø™ €Ý     €Œ™ ]€ŒD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden˜ü™€Ù€Ù€Ù€Ù€Ù€Ù €Ù€Ù€Ù€Ù €Ù €Ù€Ù €Ù €Ù€Ý,048<$,048<€±,,€É004488<<$$$€®,,004488<<(€É$$$€½$,,004488<<$€á\`dhlpT\`dhlp €é\\€É``ddhhllpp(TT€è\\``ddhhllpp+€ÉTTu \`dhlp€áT+TT€á(TT”˜œ ¤¨¬Œ”˜œ ¤¨¬ +””€É˜˜œœ  ¤¤¨¨¬¬,ŒŒ(””˜˜œœ  ¤¤¨¨¬¬/€ÉŒŒ€–”˜œ ¤¨¬€áŒ/ŒŒ€á,ŒŒè }™0 ™4Ôi ™8ÔiÔY ™<ÔYÔa™@ aÔaÔe™DeÔeyyy €Å“ µ‡B³ä5vÌ£–3ãHú§À|¢¯$§ñ-±)»Ü&D‘ttù›ÈQ±pœÜ@WàBk^ ó‰üßæw,G¿œS~TÁÖå#DõWs©¡`¹Ï¥â-fðÞ/<–Õ‹ä¤!î–¿’nf÷<Ú€¿z`$ð±×‹›Ä¹¤UÅ y EÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetŒPADPADP1Xó‚èŽw‡&1–‡ðÔS‰¸[lj 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—]ºO˜’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½é‡8lÅ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9áRéã(X—ä~Ë€è-$ê½CêYënêýÃÙê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú²‡û¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(ÉH+#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFoundÝNcontrolContinuationInvokedMultipleTimes! delegateExpectedp&dyInvDivByIntCoerceŠ dyInvOpAddCoerceÓ$dyInvOpAddOverload"dyInvOpMultCoerceg&dyInvOpMultOverload°endCannotBeNaNû4enumerationAlreadyFinished*enumerationNotStarted=4enumerationPastIntMaxValuej^failDueToUnsupportedInputTypeInSumByOrAverageBy­*failedReadEnoughBytesˆ,firstClassUsesOfSplice¶&genericCompareFail1é indexOutOfBoundsý"inputListWasEmpty7,inputMustBeNonNegativeR$inputSequenceEmptys(inputSequenceTooLong’LinvalidRecordTypeConstructorNotDefinedÆJinvalidTupleTypeConstructorNotDefined"invalidTupleTypesUkeyNotFound”keyNotFoundAltÎ0listsHadDifferentLengths0<0 +‚70  ¢€0!0 +Tÿ¯WBdìÈwE Š‚¾j—¥ ‚-0‚ 0‚ˆ  aÌ“f0  *†H†÷ 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 111010203225Z 130110203225Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚î[¾}$ã†àfÿHµ½ä´ 2ðr>}.‡×N¡±§C/÷ež1á21E®×Á$„!×.µ„~ú5ÓS×¶QOÎf¹ë· ý)\­¨‡öÊ"´Õ¿uõŠpc×ïŠéC$dZÓ‡}m;¬vÍW6}è¼V¬˜ð‰].dƯ& ^cñ=¿™ˆÃ0·Á `rÌÖ·¨5†›¡ æ“[ŽúTœÁó_BŸ?·'ƒ2‚óÙ‡Ô!²<¢¶O×$ªîõ³Ùúù9O§éò¯YRôÜA›/pcÝêÞªñm!S3»²OÅáS²AeGn7ö¼é›A‘k.[0ã‚0‚0U% 0 +0URó*·À‰Ã=Ô–X¹£Sn0Uÿ€0U#0€ËèÊÒ´XÉ7.3¹Lš 0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicCodSigPCA_08-31-2010.crt0  *†H†÷ ‚¥[6l­N›iãoŠ›iwÃldr(ˆÙ=Em,{Ô(/âYj 4·Šýê¹”ì1æjôuÓ§Ú^:žý© ½œQCoÿg”œáÏ|ð$°5̃]îÚÀo6IÀZ WösážóãL;>/ÌÒÍîO"p÷¦K›¸\ˆ6”l3¸©­Q ÐÂÜŽ"½Ãß‚×V¡÷Ýð¥ Wtlq›ÁðòÂp^§ÛmM7X™My@Ð4]Z%®gëNF°Œ)£¥3Ÿ#ÕøµF}àîc˜K>¨/°³Y¤¯ASŽ-*É:L.©1QVd¬šÌ¬—˜)Š—‡ê¶0‚º0‚¢  aŽB0  *†H†÷ 0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA0 120109222558Z 130409222558Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:F528-3777-8A761%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚–ìŽGMTÂ\•€×N =¿—CÃKã`g/M ØÑF/@Þ ¤PRˆ Cz-?îHnfÇ‘æÊnìy©j#›ÍbžÍj¤?ç£CÿbG¡´ºDúß@Á…T~è §,C#›R25ôþšVŸcw{0ž 3…rÊJÈÌ%ÍÛ].ǰŒñCHGµz åóïÁºô³ØÍ8û!ª= m…ÐÊç†À3ƒµ%ÄÌZœÄÃÚb%MS%aûàì÷GÆ€Eæ5S#6wʰݘ+9Àu5ÝL!=v0Ų°es)H'ØÂÒ°„G»xºÕtÞ×K÷SÞxÚ†÷aˆ&3´GÆ Tˆ+,u£‚ 0‚0U/èFÈhÓnO² ÐÞ‰NñGîHÁò0U#0€#4øÙRFp í@ûvû³+°Ã5³0TUM0K0I G E†Chttp://crl.microsoft.com/pki/crl/products/MicrosoftTimeStampPCA.crl0X+L0J0H+0†œvwñ%ÞGmÞI…¡ÚJKF!5¨u6L·³ªß·+Ù¾*jýß5Ì? ÇÝÏN”$c .$®_CDz\Ý7Û¤E³‘:W}ãGÆfÓÏœFVôL±à ªÕöÕ<¢àµÔø~Ukô‘ÍQ§•e0‚¼0‚¤  a3&10  *†H†÷ 0_10 ’&‰“ò,dcom10 ’&‰“ò,d microsoft1-0+U$Microsoft Root Certificate Authority0 100831221932Z 200831222932Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0‚"0  *†H†÷ ‚0‚ ‚²rY\0d¿š` B™vSl>ÖoÌËñêkþ—àß:tƒ·/ 2ìÿÞÂBN#ÕrÛ5W ‰Ê® Iôðh¬MK¥½yKq›GÚý%ßuˆÏªsD×Ûó½ò6¤É\Eܯ­=à(h—§¥rsVñ”äý5”r Öv_wEƒ…8Ðs[ºgR¥²i/Ú þ’t)âv/TÝ0YøÒbýËÉ_F1P¹'ä@0Ïr)("Ç7N= 2=Í¡8…\NV‚(*2·K×OcçÒ-bñE=ç¬öF¡žÑ[Œ&SèzªJòFÏ7<8ž´w\¥žËV<Á¬ _Ó£‚^0‚Z0Uÿ0ÿ0UËèÊÒ´XÉ7.3¹Lš 0 U†0 +‚70# +‚7ýÑ1NÓ&Š•á˜`;¨1o¦<¼Ø-0 +‚7  SubCA0U#0€¬‚`@V'—å%ü*á S•Yä¤0PUI0G0E C A†?http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl0T+H0F0D+0†8http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt0  *†H†÷ ‚Y9>&F¯ëo@±2µjë/n¨I÷ë_uíL;-×C­ þËé-1£#Ì|P˜€!]¬=/Lº¢¨Vœãp»¸´øyµIr÷>êAÊá iË¥œ -ú PÄVÍ-ãJÒ¼pç¨ ¢¥VชKWò•Bœñóïîã†4<¸VšðS#…*¤‚“â”òâNøŒ¡Ê襑NÈÒr•*qm›øðSÖgÌ"ÿ\Í¢Œ½'²ycVD¢QÍùé£XVÝ›ED/_ôÚ®Ô‚2nü¤•äëiç©¢,¾È+eŽ™Ûõ¢ú& e8”ñzJ»ÑáVèÐx–\É5_Ý“IŽ-¾­4Dî]Ý5[!Î˜Ç î…ŒOmN=|)HœrÑólÊÁìp£W’W}” HZ÷Ï£g t¥6í-/Èær7ôo±÷sõøÝãŠÂŽ8ÔåT¶…<°1ØÁã§ÔñP’c[×2[ØŒo¨n˜ß{EÒIµ°‹vš­Èµ*ç7@vñÉó¨y‘`F”“»~a F{MÊÃZ¤Ù¤t~™äað㟹ދ—ÕiuƲLµÆ wƒÙCeXHŠG‚ÚéjÀ‡sOùU}mW¹IŒ˜fFŒ²ÐsgØ#‚Pf«»ÐÌð$ ®A€Y»w{ãH|¨[{³¿2‘ødK½o;\‹|w@õ.ë PÐ\ä°›·ÞãÞŠÜK´OvN¡‚%Ã0‚ *†H†÷  1‚ 0‚0…0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA aŽB0 + ]0 *†H†÷  1  *†H†÷ 0 *†H†÷  1 120727022906Z0# *†H†÷  13j•©b)Ž“nt)ƒÛôàºlÈ0  *†H†÷ ‚t-¬dÝÚ4¿ƒb‹£d\%æƒV;)ðí8±•öù¢] ?«àhdݹ+n‹$)vÛá2%7± ·ˆ¢ÝÂËS\r)z$u6¸Ô¹;àæ?©BŽŽd–¯£g“®íã&iö=mЍ0'¥maNÌF•t¨q¿ÔôPOJUË+FeÞ­w.ŠYR·WC«ánH—c›vÖ ö«wpzDH]ÇX=Rt7ïI¤ˆ3·.´w(D¤ÐPèÀßêVø6‹=Ðzd3ñÓO½ÈƒjW#%Œw=HÊà4Œåš‹Ì9‹T9š0Ò`¶îc@ ã:;۵Ä8EÖ eê_5€O:¦0‚#  +‚71‚#0‚#Œ *†H†÷  ‚#}0‚#y10  `†He0\ +‚7 N0L0 +‚70  ¢€010  `†He Á!u»Û¶¢¤YL‰ñXm\žTŸjäsÙ“Þ…O\S ‚ ?0‚½0‚¥ 3âyú %XEê0  *†H†÷  0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20110 120707001432Z 131007001432Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚œQs·§/ΰ=X?,˹]::H÷lT~ܸ* m;YŽ%ÐN`tÛ´œ„UOÒ?†€;²ÔA‹°|ÕGÅKaIÚ a½D<äûØo`N3œí‰Q‚ßPÖÙ²>÷½€F—vŠÍ«r9¤q'âü²øÄñ´ÙŸ€òåCŠTý!cnøHzÊÜôP䶃"ŒGÁ*D>8ñ¶.¸±­ù0+„A£s»šp•)œ&ÍÎ9¿L/œ¶î*Z¬’ó6>âò)éP¢@Î2'å§c©£¥óÙû:Óœ³r£5Ex¼¾½€Ñ(kd‰óßtÁ„ÒEÖ@oÛ\-£‚,0‚(0U%0+ +‚7L0Ua??P’±.ÎòCqc\BF0U#0€HndåPÓ‚ª77"µm¨Êu•0TUM0K0I G E†Chttp://www.microsoft.com/pkiops/crl/MicCodSigPCA2011_2011-07-08.crl0a+U0S0Q+0†Ehttp://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt0 Uÿ00  *†H†÷  ‚‚ŸCk]²dR÷ÓæÅo‹ù…ÃPøÃãÃ(øtqëO'C…£Mõf†`a;ÝW¾ õ~/ž=¬E3]²¢vÑß`ï¡yN^ž|#áñ°qÓzA°"L„ÌŠWCÖ®›3=’f;”¯vþðd•bƒàWC;ÎGæÜuŒÒùÊj÷HíN2Ù LÂÇóf„¤È×÷>øôäŒÖ÷L¹Íò¹ÀÐêƒH9›2 ŽýÂxã¸[Ïð+0¾7w¢ùoÞÛÐ\CRú,•¬éGa÷s°Õär¸c3—Õ—ÿaðIî_–æ,µ5ïÏOå}k>YÚžðÍÖ°€HaŒ• ë€±FÖ5°i?ýã†r~˜Í#Céܶ z‡Õ¥Ý¿:£Ö‚úÑMxKí[¦ž 4„ðR¼NÀqÞ㑹sy ò64«,I¤`0 ‹˜&ýâd‚•±Œ]è‰O„ò¡/Yä;-®3XÅ·>þ2Ó³=±²¯’8~Ò€,õNV‘!5%Ã9ndSºœ­#„Ëôº†÷_ðÐR¿Œ”‡¼À!t%_(¶Ì'(8%˜9J6Ï|±’®#§©fìajá(I_ˆâ%]Ó!K>RĵW?$ðÑz[/Õ#ãp]QFw³øá¼¬‚_ÛÀ³½ÔUKç9¡é#I¼¸D|EäÁÃrzàrç$ß¿F™ÅïÂWÛƒìMI0§«Žßì[Ÿ¯üݰfâÁ—{íÖíKçI)§(¦§}g€æŠbx_²/„×Wœ\¿w((ñímÃ(,@7OÁá…D‰Ä LÅÔ¥C/t•÷nøx X,]`•š>O3„Ú°ˆÞžNô–°¼F l˜ÒàÖˆŒ £‚í0‚é0 +‚70UHndåPÓ‚ª77"µm¨Êu•0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€r-:1C¹Náê§Ç1Ñ#‰40ZUS0Q0O M K†Ihttp://crl.microsoft.com/pki/crl/products/MicRooCerAut2011_2011_03_22.crl0^+R0P0N+0†Bhttp://www.microsoft.com/pki/certs/MicRooCerAut2011_2011_03_22.crt0ŸU —0”0‘ +‚7.0ƒ0?+3http://www.microsoft.com/pkiops/docs/primarycps.htm0@+042 Legal_policy_statement. 0  *†H†÷  ‚gò†¥˜àTy.ÓØtg"› –ác’™B–}Òy Áe_.,>øÃrÑmƒþ¾?è Ê;¿G©£óiÛc¿"5¥—]e„}‹FPUØ ’|ÒKó.)›æ=¥Ôµw”9âédÉD=xz#ó}¦tƒôË&F*Š»¤© ›íhúh.• *?*kXIc inZ˜–äƒôÀóF+Þü;н5ïn%®å¯'íÐÝó¯™(—˜M= ò‰ÖÃ2âðÅ-Î[ž´I9 Æ ÂÆ­®å²ÙÛˆQEX82q'±ô'øÞ,: i˜²Y‰hno§·tÃ@¦*(>‚?Mf À³Mõáo}E§vå@*e£Ã]Rb†Ãc6—†ßÚóøò¡š'áÍ¥—Ðî]cAã[œ‡>wѱu¾aaµðÜÆ¾ßAÇ(îÞe/ì—ö¡\–ØÖ¡F½Yó—¥ KH™€Ð)ű›¥?Ew5ÆÒ¢¢Ÿzz"úH•«ûG#€õžø¿k·K—âëuxìê7™yKÿÖ³#huæ¯úü‹ë €êi;¯ü0íLŽßßumc‘=ÑVNO¿€W"¡x2!zïA ±?û¨Ì¤]Á¡ˆ›WqVNHEÀBÉ›v[ €HkýyŸÁ½mmjÉRs zPÍ1‚À0‚¼0•0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20113âyú %XEê0  `†He É0 *†H†÷  10 *†H†÷  1  +‚70 +‚7 10  +‚70/ *†H†÷  1" O·ì­‰,ø4 NsÜLÊNéòWõ¢òB³ê³>w0J +‚7 1<0:  €FSharp.Core.dll¡€http://microsoft.com0  *†H†÷ ‚ ›W´ôèzau·@$o} îÈo×+l'GzÛßã–ãBAÎÑ8½hj|$Qa·šÓ†6ÚŠu•R¯M®Í:õ Ø 2~Ï{ ¡’dºՙΣ‰ªjt¦^¤Žwž×û“Jè$(sáŒD;Ò ‰Sد¢Ù4È«[×¢ãÊÅè!$~p!8€®ŽÙÇ‹~Ë:ÍïÛIQW¹‹·q ØÑQ9‹£ƒñn™À&Ößû·f®žwGmÞH¡Ž³¤<á¡‚/0‚+ +‚71‚0‚ *†H†÷  ‚0‚10  `†He0‚= *†H†÷   ‚,‚(0‚$ +„Y 010  `†He }Ãç¨?ã1ESx)ëþZ­î‹éZ–íbUœZ§4ÁOó§³`20120727022909.763Z0€ô ¹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service ‚Ä0‚q0‚Y  a *0  *†H†÷  0ˆ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 100701213655Z 250701214655Z0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100‚"0  *†H†÷ ‚0‚ ‚© ¼wŠ: ìü—õúi”ktTÕ¥ ‚…ûí|hK,_ÅÃåaÂv·>f+[ðS'1A•Î Ž|a0Y±0Dñ`ˆ„TC ×M¸8³BÝ“¬Ös0W&‚£E ÐêõGÍ¿$`2X`FòXG†2„tag‘_T±Ï“L’ÁĦ]Ñan(Æù†€»ßaüFÁ'$gr!НKd‰Pb±]ýw=ðWu¬½ŠBM@QÑœ>gõfÀ–D~ïÐKýnåšÊ±¨òz* 1ðÚN‘¶ˆ5èx°é™Í<ç/Dº§ôÜd½¤Á “xÍü¼ÀÉD]^œO"M£‚æ0‚â0 +‚70UÕc:\Š1óC{|FÅ3hZ…mU0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€ÕöVËè¢\bhÑ=”[×ΚÄ0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicRooCerAut_2010-06-23.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0 U ÿ•0’0 +‚7.00=+1http://www.microsoft.com/PKI/docs/CPS/default.htm0@+042 Legal_Policy_Statement. 0  *†H†÷  ‚æˆQ âÆà˜?q=£¡!o³ë¦Ìõ1¾Ïâ©þúWm0³ÂÅfÉjßõçðx½Ç¨ž%ãù¼íkTW+Q‚Dû¹SŒÌô`ŠvÌ@@A›Ü\ÿ\ù^5˜$VKtïBȯ¿Æò7}Z?ò™yJ‘R¯8õ/yeÙ©µkäÇÎöÊzoK0D$"<Ïí¥–Y)¼¶ýápŸ2J'ýU¯/þ¶åŽ3»b_šÛW@éñΙfŒÿjbÝÅJ ‘&â9ìJqc{!mÜ£¢<ú}–jx¦mÒáœùü8Ø”ôÆ¥ –†¤½ž®Bƒ¸µ€›"8 µ%ådì÷ô¿~cY%z.9Wv¢qªŠ‰ºa§ËšØGš€ÅÐͧÐï}ƒðá;q ß]t˜"aÚ°Po½ñáßç1¤“:÷eGxèø¨H«÷Þr~akow©Ë§ ¬9»ìÆËØ‚´rÍô¸…€û‰*T9²[ÚÈ U™z‡s;æ˜-êà3.)õÀ/T'!÷ȬNÚ(¸±©Û–²§B¢ÉÏAMà†ù*š£f0Ó»t2Kßc{õ™Š/Ç!¯Yµ®ÜD<—PqסÒÅUãiÞWÁÑÞ0ÀýÌæMû ¿]Oé8/¼ÏX.ï  P5Úï 'Õ³~5ºÚ6ÛÓ_ÞtˆI0‚Ñ0‚¹  aõ 0  *†H†÷  0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100 120109213540Z 130409214540Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚¬ŠM±Kn!(ñÍÏ÷„Ó2QÜE;k+z!-@ÍˤQ˜É 4î•q¨ ó?MãñYhå¶.‹Õ½Ô *Er’ o¥HV´< ›EiøÞ#Q‰Š“ Ý‚w­‡ë‚_”‘îá†7M¨$qäp‡Ahu#’â‡;ÀLÞ˜€â¶ÛäÖ„]Ψ'¡ë´»›ôŠ3-Ýí‘nð4«Óþšbü^ІþÀGU’ƒ>Ø”š—Cu™cv2Þ Ïš~Ýx¾íÛº(§”vèvžnøú‚[³3’ ¹ÓÀä݃6Ì­±œEXlhVFÂs*Ú ÖÖÖ—_÷6>ð¦âÄÙ£‚0‚0Uþ¢†xöá›/zßšêÑ!ê~§0U#0€Õc:\Š1óC{|FÅ3hZ…mU0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicTimStaPCA_2010-07-01.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicTimStaPCA_2010-07-01.crt0 Uÿ00U% 0 +0  *†H†÷  ‚ŸzœVü$»”eØB5ß-†ÂÏYÈ!‡Q=gâÌïñÖ 5:L«?¦˜ém"[Ð;Ï–†Sͬö4.‰ùÿà9§!<áÖðo)íÐ Mr#ƒõÚø­»•œ* —#/º^ 4¶†r:½q€¿9jð‘ùý y,ŸFyˆ¿‹ N“´¡¯ôZ>,ð»ÇÙ§YtìÅŽ¡×d‘£™V/õ¯a§‡zÐÈ~MNdŒù/$¨2Ý)°Có·Ò›åˆ°G*ŒÖ)òµÍFtA^È Åø'¦Ô2l ß`¼‡l]3]ZÊ€vê4ÿiàûË®\c§ è·lä{¸¡‚v0‚^0㡹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service¢% 0 +›ðï7‰íIHKNŵ°æ“‡e0 Â0¿¤¼0¹1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher NTS ESN:B027-C6F8-1D881+0)U"Microsoft Time Source Master Clock0  *†H†÷ Ó¼_0"20120727002814Z20120728002814Z0t0: +„Y 1,0*0 Ó¼_0 0á0 Ó½°ž06 +„Y 1(0&0  +„Y   0ã`¡ 0¡ 0  *†H†÷ ‚šœWiƒ­cµnh’PL7I\FèÖÅD îØò(V-ˆX K bJ~h¬sã:q­+AŽÞõ‰€ž’tqã‡Ë>°xµPGªÜË–³s×j¿U!õ®o³:–•Zád€?N“ŒT/±º!ÆSHþ(>áóúÁ Åʾ?S¼š_ÌÚsÓ©wÍp—SU£f^YG#2 „UEx£ÑjT~[ÓlA_ß›A¿Xv‘;jXž˜˜–©ÓM”–¤-Ti¬.Î× ì§;×˼e¢kd3Üä&ðÇ(~ SŒxÞ)Ø9çÔ®i Á1âë®/l³¢H¸UÊ Žû-:sB1‚ã0‚ß0Š0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0  `†He ‚)0 *†H†÷  1  *†H†÷  0/ *†H†÷  1" ×䔚ÿ7¿±œ–©Ž·:F]Ûœ¬ÅöÃà'È9¢Øê¦0Ù *†H†÷   1É0Æ0Ã0¨›ðï7‰íIHKNŵ°æ“‡e000€¤~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0®×=¹Ã„¿„F¯ø”9Ú~™Wo0  *†H†÷  ‚oeÆ$ºÏz—^Žç—ý®ž§ü«¥HgÞ¡~:~›5ÏÜãšÛn‰Éç2‡µ*F¹Š?l_}K:ª¸íæ­¬·ß¼µãû—ÈRÓ"[`æœeÇ~(fàî3Çoo ÀK,Ù,VáVUÆÔÖÏu|”7šfsharp-3.0.34/lib/bootstrap/signed/3.0/v2.0/0000775000175000017500000000000012260314606017111 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/signed/3.0/v2.0/FSharp.Core.dll0000775000175000017500000343373012260314606021700 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL©×Pà! ò Î \ `Ž@hc ˆú Ø=@ Ô  H.textèñ ò  `.rsrcˆ ô @@.reloc @ø @B¤HôhØa LË EÌÊ €*o &**J, (+-****Fo &}*"{*&o**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &*Fo &}*"{*Fo &}*"{*&o**o &**o &**o &**o &**o &**o &**o &**o &**o &*Fo &}*"{**o &**o &**o &**o &**o &**o &*~o &}}}*"{*"{*"{*~o &}}}*"{*"{*"{*.o+*.o+*Fo &} *"{ *Fo &}!*"{!*Fo &}"*"{"*Fo &}#*J{#o ¥*0Fo &}$}%}&}'}(})}*rp}+*"{$*"{&*&}&*"{%*&}%*"{'*&}'*"{(*&}(*"{+*&}+*"{)*&})*"{**&}***o &*Fo &},*"{,*šo &}.}-}/}0*"{.*"{-*"{/*&}/*"{0*&}0**oS**o &**o &**o &**o &**o &**o &*Fo &}1*"{1*6rpoZ***( *s **uhþ*s **uiþ*0 ui,+*0» þ9§þ9œ  ui,+   ui,+ 3ruh,3th th (À{  { þ(+*titi(À{  {    þ(+*Y**þ,**B¥þo! *0¾ ¥ þ9ž¥þ9Ž  ui,+   ui,+ 3duh,-th th { { þ(+*titi{  {    þ(+*Y**¥þ,**0o þ,f uh,-th  ¹y7ž{ Œj(bcXXX *ti  ¹y7ž { Œk(bcXXX **6(Áo" *0­ þ9›u 9Œ  ui,+   ui,+ 3duh,-th th { { þ(+*titi{  {    þ(+***þþ*0¥ þ9“þ9ˆ  ui,+   ui,+ 3`uh,*th th {  { þ(+*titi{ {   þ(+***þþ*0u , þo# **:($ } *{ *:($ } *{ *:( }& *2{& { *:( }' *2{' { *( *s( **unþ*s) **uoþ*s* **upþ*0 up,+ uo,+*0#þ9þ9up,+ uo,+ up,+ uo,+ @¿un-uo-<up-jtn tn (À{+  {+ þ(+*toto(À{,  {,    þ(+*tp tp (À {-   {-  þ(+*Y**þ,**B¥þo. *0¥ þ9þ¥þ9îup,+ uo,+ up,+ uo,+ @©un-uo-6up-\tn tn {+ {+ þ(+*toto{,  {,    þ(+*tp tp  {-   {-  þ(+*Y**¥þ,**0¹þ9­ un-uo-6up-\tn  ¹y7ž{+ Œj(bcXXX *to  ¹y7ž {, Œk(bcXXX *tp ¹y7ž{- Œq(bcXXX **6(Áo/ *0 þ9ûu 9ìup,+ uo,+ up,+ uo,+ @©un-uo-6up-\tn tn {+ {+ þ(+*toto{,  {,    þ(+*tp tp  {-   {-  þ( +***þþ*0þ9òþ9çup,+ uo,+ up,+ uo,+ @¤un-uo-3up-Xtn tn {+  {+ þ(+*toto{, {,   þ(+*tp tp  {-   {-    þ( +***þþ*0u , þo0 **:(1 }+ *{+ *:(1 }, *{, *:(1 }- *{- *:( }2 *2{2 {+ *:( }3 *2{3 {, *:( }4 *2{4 {- *:( }5 *s6 **(7 þ*s8 **(7 þ*s9 **(7 þ*s: **(7 þ*{5 *0+þ9þ9 {5 {5 @ó(7 E3j¡tu tu (À{;  {; þ(+*tvtv(À{<  {<    þ(+*tw tw (À {=   {=  þ(+*txtx(À{> {> þ( +*Y**þ,**B¥ þo? *0¥  þ9þ¥ þ9î{5 {5 @Õ(7 E-\‹tu tu {; {; þ(+*tvtv{<  {<    þ(+*tw tw  {=   {=  þ(+*txtx{> {> þ( +*Y**¥ þ,**0çþ9Û (7 E-\tu  ¹y7ž{; Œj(bcXXX *tv  ¹y7ž {< Œk(bcXXX *tw ¹y7ž{= Œq(bcXXX *tx ¹y7ž{> Œy(bcXXX **6(Áo@ *0 þ9ûu  9ì{5 {5 @Õ(7 E-\‹tu tu {; {; þ(+*tvtv{<  {<    þ(+*tw tw  {=   {=  þ( +*txtx{> {> þ( +***þþ*0 þ9ñþ9æ{5 {5 @Ï(7 E*X†tu tu {;  {; þ(+*tvtv{< {<   þ(+*tw tw  {=   {=    þ( +*txtx{> {> þ( +***þþ*0!u  , þoA **>(B }; *{; *>(B }< *{< *>(B }= *{= *>(B }> *{> *:( }C *2{C {; *:( }D *2{D {< *:( }E *2{E {= *:( }F *2{F {> *:( }G *sH **(I þ*sJ **(I þ*sK **(I þ*sL **(I þ*sM **(I þ*{G *’þ,þ, þ(+**þ,**B¥ þoN *0*#¥  þ, þ(+*¥ þ,**0*þ9 (I E-\¾t~  ¹y7ž{O Œj(bcXXX *t  ¹y7ž {P Œk(bcXXX *t€ ¹y7ž{Q Œq(bcXXX *t ¹y7ž{R Œy(bcXXX *t‚  ¹y7ž {S   Œƒ(bcXXX **6(ÁoT *nþ, þ(+*þþ*05+þ9#þ9{G {G @(I E*X†´t~ t~ {O  {O þ(+*tt{P {P   þ(+*t€ t€  {Q   {Q    þ( +*tt{R {R þ( +*t‚t‚{S {S þ(+***þþ*0#u  , þoU **>(V }O *{O *>(V }P *{P *>(V }Q *{Q *>(V }R *{R *>(V }S *{S *:( }W *2{W {O *:( }X *2{X {P *:( }Y *2{Y {Q *:( }Z *2{Z {R *:( }[ *2{[ {S *:( }\ *s] **(^ þ*s_ **(^ þ*s` **(^ þ*sa **(^ þ*sb **(^ þ*sc **(^ þ*{\ *0:,þ,)þ,!{\ {\ 3 þ(+*Y**þ,**B¥þod *06.¥ þ,¥þ, þ(+**¥þ,**Jþ, (+**6(Áoe *0'.þ,u , þ(+**þþ*Šþ,þ, þ(+**þþ*0.u , þof **>(g }h *{h *>(g }i *{i *>(g }j *{j *>(g }k *{k *>(g }l *{l *>(g }m *{m *:( }n *2{n {h *:( }o *2{o {i *:( }p *2{p {j *:( }q *2{q {k *:( }r *2{r {l *:( }s *2{s {m *:( }t *su **(v þ*sw **(v þ*sx **(v þ*sy **(v þ*sz **(v þ*s{ **(v þ*s| **(v þ*{t *0:,þ,)þ,!{t {t 3 þ(+*Y**þ,**B¥þo} *0L0¥ þ,/¥þ,"{t {t 3 þ(+*Y**¥þ,**Jþ, (+**6(Áo~ *0;0þ,,u , {t {t 3 þ(+***þþ*06,þ,'þ,{t {t 3 þ(+***þþ*01u , þo **>(€ } *{ *>(€ }‚ *{‚ *>(€ }ƒ *{ƒ *>(€ }„ *{„ *>(€ }… *{… *>(€ }† *{† *>(€ }‡ *{‡ *:( }ˆ *2{ˆ { *:( }‰ *2{‰ {‚ *:( }Š *2{Š {ƒ *:( }‹ *2{‹ {„ *:( }Œ *2{Œ {… *:( } *2{ {† *:( }Ž *2{Ž {‡ *r( }‡}ˆ}‰*( *0 ( *{‡*{ˆ*{‰*0j3þ,a ¹y7žtt(BbcXXX ¹y7žtt(AbcXXX ¹y7žtt(@ , (‘ +bcXXX **6(ÁoC*0w5þ,hu ,\(+-*tt(@tt(@(’ ,3tt(Att(A3tt(Btt(Bþ****þþ*b(rp(“ þo” *0sþ,dþ,\(+-*tt(@tt(@(’ ,3tt(Att(A3tt(Btt(Bþ****þþ*05u ,oG***o &**o &*"s• *Ns– þ— s˜ *"s™ *Nsš þ› s˜ *0(7u¨ ,  þoœ *o þož *0G:u« , þoŸ *u¬ , o  þo¡ *o¢ þ(+*0q>u¯ , þo¤ *u° , o¥ þo¦ *u²,o§ þ(+*o© þ(+*0ŸCu´ , þo« *uµ , o¬ þo­ *u·,o® þ( +*u¸,o° þ(!+*o² þ("+*"s´ *"sµ *"s¶ *"s· *"s¸ *"s¹ *{º *"}º *:( }º *08Dþ,'þ,(À {º {º þ(+**þ,**B¥Àþo» *0CF¥À þ,&¥Àþ,{º {º þ(+**¥Àþ,**0/Gþ,& ¹y7ž{º Œj(bcXXX **6(Áo¼ *04Fþ,%uÀ ,{º {º þ(+**þþ*"{º *&(½ *0/Hþ, þ,{º {º þ(+**þþ*0IuÀ , þo¾ **( * *sÀ *:( }Á *{Á *0 K ,+*0gLþ,Vþ,N,+ ,+ 3.,)  (À{Á  {Á þ(+**Y**þ,**B¥Áþo *0rM¥Á þ,U¥Áþ,H,+ ,+ 3(,#  {Á {Á þ(+**Y**¥Áþ,**0:Nþ,1 - *  ¹y7ž{Á Œj(bcXXX **6(Áoà *0fMþ,W(#+-*¥Á ,+ ,+ 3(,#  {Á {Á þ(+***þþ*þ*þ*†r-poÄ ($+r9p(Å (Å *0ZOþ,Kþ,C,+ ,+ 3%,   {Á  {Á þ(+****þþ*j(#+-*¥ÁþoÆ *.sÇ €È *( *~È **{É þ*"sÊ **{É þ*V( }Ë }É *{Ë *{É **{É þ*0 Qþ9Œþ9{É þ {É þ 3e{É ,[  (À{Ë  {Ë (+/*1*(À{É  {É   oÌ **Y**þ,**:¥ÂoÍ *0©R¥Â þ9‰¥Âþ9y{É þ {É þ 3]{É ,S  {Ë {Ë (+/*1* {É {É   8nÿÿÿ*Y**¥Âþ,**0ZSþ,Q {É - *  ¹y7ž{É oÎ bcXXX ¹y7ž{Ë Œj(bcXXX **6(ÁoÎ *0‡Tþ9uu ,i{É þ {É þ 3O{É ,E  {Ë {Ë (+,! {É {É 8Šÿÿÿ****þþ*0nUþ,_þ,W{É þ {É þ 3={É ,3  {Ë  {Ë (+,{É {É +£****þþ*0Vu ,oÏ **&(%+*0CW(%+  è1r=p*E%rYp¤E%þKoÐ ¤E(Ñ *ª{É -(rmp(“ o” sÒ z{Ë *ª{É -(rmp(“ o” sÒ z{É *&(&+*0±X{É 9  {É {É 9[{É {É {É 9ó{É {É {É -p{Ë {Ë {Ë sÓ r‘poÔ ($+oÔ r•poÔ ($+oÔ r•poÔ ($+oÔ r›poÔ þoÐ *{Ë {Ë {Ë sÓ r‘poÔ ($+oÔ r•poÔ ($+oÔ r•poÔ ($+oÔ rŸpoÔ þoÐ *{Ë {Ë sÓ r‘poÔ ($+oÔ r•poÔ ($+oÔ r›poÔ þoÐ *{Ë sÓ r‘poÔ ($+oÔ r›poÔ þoÐ *r¯p*6sÕ ¥*JsÕ ¥¥ *fo &}Ù 2}Ú *0)Z{Ù o'+ j  {Ù ((+*0,\{Ü ," {Ü {Ú 1*X+Ö*Fo &}•*"{•*~–*6€¨~¨&*bo &}Ý }Þ *0]þjŒesß *&sß *>þ{Þ ,**0¾aþ{Þ 9©(à þ{Þ 9~u~ ,  {•zue,T~–Œ~}Þ oá }Ý }Þ Þts–Œ~}Þ þ Þrµpsâ z{Ý Þ (ã &Ü*{Ý *W w—« 0‚bþ{Þ ,+,.oä Œj()+,rÍp*oä þjoÐ *þ{Þ u~ ,( {•~–(å ,rÛp*þoÐ *rõp*bo &}æ }ç *0wf{ç , {æ +  oè YE**o× uô ,oé - }æ +sê }æ }ç 8‰ÿÿÿ*þoë *6oë ¥ *‚{ç ,{æ þoì *þoì *‚{ç ,{æ þoí *þoí *–{ç ,{æ oì +oì Œj*"oî *0 hsï zbo &}õ }ö *>{õ o÷ &*>{õ o÷ &*>{ö þo× *R{ö ¥þoÖ *( * *"sø *2sù *0j uÊ,+ uÉ,+*V(ú }û }ü *{û *{ü *²(ú }ý }þ }ÿ } } *{ý *{þ *{ÿ *{ *{ *:( } *2{ {û *2{ {ü *:( } *2{ {ý *2{ {þ *2{ {ÿ *2{ { *2{ { *~o &} } } *0l(*+ s € *0yq{ (++ ŒÎ,+ rps  zŽi Ï Y23£Ð(  (  s  ¤ÏXX3Í } *0…r(*+} { ŒÑ,+ rps  zŽi Ð Y2# £Ï(,+¤ÐXX3Ý { (-+} } *~ *0l(*+ (.+s *~ *0l(*+ (.+o *"{ *"{ *‚{ { { (/+s *.{ þ*R{ { (0+*B{ þ(1+*B{ þ(2+*‚{ { { (3+s *B{ þ(4+*Z( { þ(5+*b{ { (6+*B{ þ(7+*f{ { (8+s *f{ { (9+s *0Bt{ { (:+ ( ( { s { s s *:{ (;+*R{ { (<+*~{ { { (=+s *R{ { (>+*6{ (?+*6{ (++*0l(*+ (@+s *0y ¥ o oñ ,`o ( ( s (  (  b(A+X wX b(B+X wX +˜ Þu   ,  oð &Ü&Ü&( *l{0v{uÍ ,j ¥ o ¥ o (C+Þu , oð &Ü&Ü Þu , oð &Ü&Ü **&:@Y"o *0ý}¥ (D+(E+ { 9Ù { ( ( s { { 9|{ { ( ( s { { 9ü{ { ( ( s { { -d  sÓ rpoÔ  (F+oÔ r•poÔ  (F+oÔ r•poÔ (F+oÔ r›poÔ þoÐ *  sÓ rpoÔ  (F+oÔ r•poÔ  (F+oÔ r•poÔ (F+oÔ rŸpoÔ þoÐ *sÓ rpoÔ (F+oÔ r•poÔ (F+oÔ r›poÔ þoÐ *sÓ rpoÔ (F+oÔ r›poÔ þoÐ *r)p*6{ (G+*J{ (G+¥ *R{ { (0+*n(r7p(“ o” s z^s (H+(I+¥"*^s (J+(K+¥Ù*n(r7p(“ o” s zR{ { (<+*Æ{ { (<+,{ { (0+k**n(r7p(“ o” s zn(r7p(“ o” s zn(r7p(“ o” s zn(r7p(“ o” s z0L~( { { (<+,-( { { (0+ ( þ(L+**F{ þ(M+**:{ (;+*0FuÍ , s  ¥ ¥ (N+*(r]p(“ o” ryps! zFo &}1 *0(€s2 {1 è¥ (D+(O+(P+*{®*{¯*V( }®}¯*( * **s3 *s4 *0‚ uÞ,+ uÝ,+*’(5 }6 }7 }8 }9 *{6 *{7 *{8 *{9 *:(5 }: *{: *:( }; *2{; {6 *2{; {7 *2{; {8 *2{; {9 *:( }< *2{< {: *~o &}= }> }? *0l(*+ s@ €A *N{> (Q+}? *®(*+}= {= {? (R+}> }? *"{= *"{> *~A *~{= {= {> (S+s@ *~{= {= {> (T+s@ *:{> (U+*R{= {> (V+*B{> þ(W+*ZsB {> þ(X+*.{> þ*0R„{> -sC *{= {> (Y+ (D (E {= s@ {= s@ sC *ª{> -*{= {= {> (Z+s@ *0!†([+ sF {> (\+sG *B{> þ(]+*B{> þ(^+*0<‡{> -*{> -*{= {= {> {> (_+s@ *â{> -*{> -*{= {= {> {> (`+s@ *0=‡{> -*{> -*{= {= {> {> (a+s@ *JsH ~A (b+*6sI (c+*r{= {> {> (d+þ*f{= {> {> (d+*6{> (e+*6{> (e+*6{> (f+*n{= {> {> þ(g+*n{= {> {> þ(g+*n{= {> {> þ(h+*n{= {> {> þ(h+*6{> (i+*6{> (Q+*0\ˆ ¥o× oñ ,oô b (A+X wX +Ù Þu , oð &Ü&Ü&( *+:"oJ *0vŠuá ,j ¥o× ¥o× (j+Þu , oð &Ü&Ü Þu , oð &Ü&Ü **&:@Y6~A oK *0l(*+ (k+o@ *"sL *0l(*+ (R+s@ *0Ë‹¥(l+(m+ {É 9§ {É {É 9`{É {É {É 9ö{É {É {É -q {Ë {Ë {Ë sÓ rpoÔ ($+oÔ r•poÔ ($+oÔ r•poÔ ($+oÔ r›poÔ þoÐ * {Ë {Ë {Ë sÓ rpoÔ ($+oÔ r•poÔ ($+oÔ r•poÔ ($+oÔ rŸpoÔ þoÐ *{Ë {Ë sÓ rpoÔ ($+oÔ r•poÔ ($+oÔ r›poÔ þoÐ *{Ë sÓ rpoÔ ($+oÔ r›poÔ þoÐ *rp*z{= {> (n+{> (d+*2r›ps z2r›ps z2r›ps zR{= {> (V+*F{> þ(o+**:{> (U+*6{> (p+*J{> (p+¥ *Fo &}T *0Œ{T è¥(l+(I+*~o &}¿}À}Á*0J{Á , {U {ÀþoV *{¿0(V  (W }Á{ÀþoV *"{¿*V{¿{À0(\ *BoaþoX *FoaþoY *"{À*Š{¿oZ rÁp(Å oX(Å *R{¿o[ {ÀX*03‘u˜ ,& {¿{¿(q+,{À{Àþ***V{¿{À0(a *‚Œ,+ rÅps  zþ(u *0/“, {\ + Œ,+ rÅps  z(† *08•Œ,+ rÅps  z0(  , {\ + (W *ÆŒ,+ rÅps  z0( Ð8(] þ(D *zŒ,+ rÅps  z(„ *0PŒ,+ rÍps  zŒ,+ rÛps  z(G %¤%¤þo^ *0O–Œì,+ rçps  zsÇ (r+,!(róp(“ o” rçps! zþ(x *Rr!p( (y *–Œ,+ r5ps  z0( (ƒ *0&“, {\ + rOp( (‡ *0J—, {\ + Œ,+ reps  z(  (c sÉ (T (s+*0/“, {\ + Œ,+ ryps  z(‹ *07“, {\ + Œ,+ ryps  z(Ž (‡ **o_ &*6s` ŒÞ*0.“, {\ + rOp( (Š þoa *0k˜Œ,+ r•ps  zŒ,+ rŸps  zob 0(† -!(r­p(“ o” rŸps! zþoc *0i™Œ,+ rŸps  z, {\ + ob († -!(r­p(“ o” rŸps! z(ˆ þod *zŒ,+ r•ps  zsÍ *0&“, {\ + rOp( (ˆ *0&“, {\ + rOp( (Š *0&“, {\ + rOp( (‰ *0ᛌ,+ r5ps  zÐ8(] (D -.oe (rÍp(“ o” (f r5ps! zŒ³,+ rïps  z(ƒ  (g (h Ðï(] oi , oj +%¤% ¤o^ (k (t+þol *ÊŒð,+ r ps  zr!p( ( þoa *0iœŒ,+ r)ps  zob (u -3ob oe (r5p(“ o” (f r)ps! z(~ þod *0³žŒ,+ r)ps  zob (u -3ob oe (r5p(“ o” (f r)ps! z(~ od /+  Žiþþ,/rQpob oe þKoÐ (# r{ps! z £*Rr!p( (~ *Vr!p( (‚ *Rr!p( ( *Rr!p( (€ *0B“Œ˜,+ r‡ps  z, {\ + {¿{À(b þoa *0:“Œ˜,+ r‡ps  z, {\ + {¿{À(b *0:“Œ˜,+ r‡ps  z, {\ + {¿{À(a *0lŸ, {\ + (Å  Œ,+ reps  z(  (c (^ om  (] od  sWsn *0?—, {\ + Œ,+ reps  z(  (c (^ *0?—, {\ + Œ,+ reps  z(  (c (_ *0<—Œ˜,+ r‡ps  z, {\ + {¿ {À(] *0F—Œ,+ r›ps  z, {\ + ob (Ž (ˆ þod *Fo &}o *0¡{o , op **"sq *Fo &}r *ÆÐj(] (b,Ðj(] (~+s. €s *B{r þot *ú{r ~s %Œõ¤%Œö¤oa (u+þot *0L{r ~s %Œõ¤%Œö¤%Œ÷¤oa (u+þot *0Z{r ~s %Œõ¤%Œö¤%Œ÷¤%Œø¤oa (u+þot *0h{r ~s %Œõ¤%Œö¤%Œ÷¤%Œø¤%Œù¤oa (u+þot *0v{r ~s %Œõ¤%Œö¤%Œ÷¤%Œø¤%Œù¤%Œú¤oa (u+þot *0]o &þj}u *0M§Ðj(] r£p6ov ow Œü,+ rps  z ŽiY2$ £ox ¤XX3Ü ŽiYYX Y 2!  X£¤ X  X3ßsy (z ({ Ži3Ðþ(] (| ¥þ+€} Ðÿ(] 6o~  s0  ¥(v+(w+o , o€ +€ *0a¨{u Œj,R~} ,~} {u o‚ *%¤Œk(z(x+ {u Œj¥\op **6sƒ ¥Ñ*Fo &}„ *0ª{„ , o… **6s† ¥Ò*{É*{Ê*"}É*V( }É}Ê*B}Ï}Ð*Â( ,( ~Ëþ+,~Ì( £¡**:(£s¢*:(£s¢*:(£s¢*J(¼,*{Ï*"{Ï*"{Ð*0Ï,{Ï {Ï YEgYEr±prÝps! zYE"YE+Ö{Ð{Ð(¹ *{Ð(µ , {Ð(µ **YE+YE+‹{Ð(µ , {Ð(µ **{Ð{Ð(¹ *2(ªþ*0Ŭ{Ï {Ï YESYEr±prÝps! zYE)YE+Ö{Ð {Ð  (½ þ**YE.YE+Ÿ{Ð(µ -*{Ð(µ þ*{Ð {Ð  (½ þ*0Ȭ{Ï {Ï YEqYEr±prÝps! zYE)YE+Ö{Ð {Ð  (½ þ*{Ð(µ -*{Ð(µ þ*YEYE8~ÿÿÿ*{Ð {Ð  (½ þ*f(¬,*(ª,**Z{Ï{Ð(” X*0`W{Ï YE#YE r±psÒ z{Ð(ý *{Ð(µ ,ráp*råp{Ð(ý (Å *:þ¢oÐ *0®(y+-*¥¢ q¢(ª*0®q¢ {Ï{Ð(” X*0I2(÷ (£(¢* €3je(ø (£(¢*e(÷ (£(¢*0e!2(ø (£(¢*!€3%!ÿÿÿÿÿÿÿ(ø (­ (² (£(¢*e(ø (£(¢*~Í*~Î*0 ¯{ÏZ {Ð (£s¢*0M¯/%{Ïe e{Ð(Å  (£s¢*{Ï {Ð(Å  (£s¢*05°(½ .(´  (£s¢*(´  (£s¢*0°(²  (£s¢*6{Ð(µ *b{Ï3 {Ð(· **0æ² {Ð(µ ,* {Ð(µ ,*{Ï {Ï YE^YEr±prÝps! zYE"YE+Ö{Ð{Ð(»*{Ð{Ð(º*YE"YE+”{Ð{Ð(º*{Ð{Ð(»(¸*0Ô² {Ð(µ ,*{Ï {Ï YE^YEr±prÝps! zYE"YE+Ö{Ð{Ð(º*{Ð{Ð(»*YE'YE+”{Ð{Ð(»(¸*{Ð{Ð(º*0l³ {Ð(µ ,* {Ð(µ ,*(½,*(½,*{Ð{Ð(å  {Ï{ÏZ (£s¢*0µ{Ð{Ð(ë  (‡ (ˆ {Ï {Ï YEv YEr±prÝps! zYE.YE+Ô(£s¢¢(£s¢*(£s¢¢(£s¢*YE1YE8wÿÿÿ(£s¢¢(£s¢*(£s¢¢(£s¢*0®s´ (Á*0¶s´ (Á *0"°{Ð{Ð(ï  (£s¢*n{Ï3{Ð(µ þ**n{Ï3{Ð(µ þ**R{Ï3(¸**0ˬ{Ï {Ï YEqYEr±prÝps! zYE,YE+Ö{Ð {Ð  (½ þþ*{Ð(µ , {Ð(µ **YEYE8~ÿÿÿ*{Ð {Ð  (½ þþ*0Ȭ{Ï {Ï YEVYEr±prÝps! zYE,YE+Ö{Ð {Ð  (½ þþ**YE+YE+œ{Ð(µ , {Ð(µ **{Ð {Ð  (½ þþ*0|·/!(rép(“ o” rps! zs´ {Ð (ð (ë (‡ (µ ,+{Ï {Ð{Ð(ô   (£s¢*0E¹{Ð(ù   ÿÿÿ5 {ÏZ*{Ï3  €þ+, €*s‰ z0R»{Ð(ú  !ÿÿÿÿÿÿÿ5 {ÏjZ*{Ï3!€þ+, !€*s‰ z0LW{Ï YE)YEr±prÝps! z{Ð(ö *{Ð(ö e*0n½oŠ - rps‹ zoŒ råp(’ ,/Y( {Ž  YXoŒ (ÿ  (£s¢*(ÿ  (£s¢*6{Ð( *0U¾(Å,!(rép(“ o” rÝps! z(Æ,{Ð(  (£s¢*~Í**"sµ*"s´*0-®(y+-rWpryps! z¥¢ q¢(®*6€~&*.sä€Ñ*( *~Ñ**u¥þ*så**u¦þ*sç**u§þ*0À u§,+ u¦,+*0iÃþ,`  u¥- u¦- u§-$ *t¦  ¹y7ž{ÕbcXXX *t§  ¹y7ž{ÖbcXXX **6(Áoß*0¸Äþ9¦u£ 9—u§,+ u¦,+ u§,+ u¦,+ 3W  u¦-  u§-!*t¦ t¦ {Õ{Õþ*t§t§{Ö{Öþ***þþ*0²Åþ9 þ9•u§,+ u¦,+ u§,+ u¦,+ 3Uu¦- u§-*t¦ t¦ {Õ {Õþ*t§t§{Ö{Öþ***þþ*0Àu£ ,oâ**(×*:(×}Õ*{Õ*:(×}Ö*{Ö*:( }×*:( }Ø*2{Ø{Õ*:( }Ù*2{Ù{Ö*( *&sö**u­þ*:sú**u®þ*&s**u¯þ*0Ç u¯,+ u®,+*r(î}Ý}Þ}ß*{Ý*{Þ*{ß*Ò(î}à}á}â}ã}ä}å*{à*{á*{â*{ã*{ä*{å*r(î}æ}ç}è*{æ*{ç*{è*:( }é*2{é{Ý*2{é{Þ*2{é{ß*:( }ê*2{ê{à*2{ê{á*2{ê{â*2{ê{ã*2{ê{ä*2{ê{å*:( }ë*2{ë{æ*2{ë{ç*2{ë{è*{ì*{í*{î*{ï*{ð*{ñ*{ò*{ó*{ô*{õ*0T( }ì}í}î}ï}ð}ñ}ò}ó }ô }õ*0 *r•psƒ ( ¥_Pdd 's!*Fo &} *"{ *.o‘ &*0fÉo &}ø}÷~ù}û, {’ +}ü~ú (à ~ù!X€ù Þ (ã &Ü&*BZ "{ø*"{ü*"{÷*"{û*0OËŒE,+ rps  zŒ,+ rÅps  z~ú (à (¦  Þ (ã &Ü*9 D "{ø*"([ *0Ìu· ,  (“ **0ðÎu· 9á (“ ,*o'o'(” ,*o)o• o)o• /+þ , *o)o– o— o)o– o— /+þ,*o)o˜ o™ o)o˜ o™ (” ,*o*o*/*þ**6€~&*:( }ý*"s@**(:þ*sC**(:þ*"sE**(:þ*"sH**(:þ*{ý*Jþ, (§ **6(Áo;*0;Ðþ,,u¸ , {ý {ý 3 þ(¨ ***þþ*jþ, þ(´ *þþ*0Ñu¸ , þo>**Z(1}}*{*{*>(1}*{*Z(1}}*{*{*Z(1}}*{*{*:( } *2{ {*2{ {*:( } *2{ {*:( } *2{ {*2{ {*:( } *2{ {*2{ {*0¤sW€sW€sW€sW€sW€sW€sW€sW€sW€sW€sW€sW€ sW€!sW€*:( } *~**( þ*~**( þ*~**( þ*~**( þ*~**( þ*s¦**( þ*s¨**( þ*sª**( þ*s¬**( þ*"s®*.(  þ*s±*.(  þ*s³*.(  þ*sµ*.(  þ*s·*.(  þ*s¹*.( þ*s»*.( þ*s½*.( þ*s¿*.( þ*sÁ*.( þ*sÃ*.( þ*sÅ*.( þ*sÇ*.( þ*sÉ*.( þ*sË*.( þ*~*.( þ*~*.( þ*~*.( þ*~*.( þ*~*.( þ*sÍ*.( þ*~*.( þ*~*.( þ*~*.(  þ*~*.( !þ*"sÏ*.( "þ*sÒ*.( #þ*{ *Jþ, (© **6(Áo¡*0;Óþ,,u , {  {  3 þ(ª ***þþ*06,þ,'þ,{  {  3 þ(µ ***þþ*0Ôu , þo¤**>(W}@*{@*>(W}A*{A*>(W}B*{B*>(W}C*{C*^ (W}D}E*{D*{E*B (W}F*{F*B (W}G*{G*B (W}H*{H*B (W}I*{I*B(W}J*{J*B(W}K*{K*B(W}L*{L*B(W}M*{M*B(W}N*{N*B(W}O*{O*B(W}P*{P*B(W}Q*{Q*B(W}R*{R*B(W}S*{S*B(W}T*{T*^"(W}U}V*{U*{V*B#(W}W*{W*:( }X*2{X{@*:( }Y*2{Y{A*:( }Z*2{Z{B*:( }[*2{[{C*:( }\*2{\{D*2{\{E*:( }]*2{]{F*:( }^*2{^{G*:( }_*2{_{H*:( }`*2{`{I*:( }a*2{a{J*:( }b*2{b{K*:( }c*2{c{L*:( }d*2{d{M*:( }e*2{e{N*:( }f*2{f{O*:( }g*2{g{P*:( }h*2{h{Q*:( }i*2{i{R*:( }j*2{j{S*:( }k*2{k{T*:( }l*2{l{U*2{l{V*:( }m*2{m{W*bo &}n}o*"{n*"{o*0,Öuð ,  {n {n  (Áþo=**>{nþo[ *&o*N("o (| *0üûs·  s¹  r§p(D  s»  s½ {n(:@ªtº{( E$¨×(:@ªtº{( E$á³Y¶åœ ¨ ¡ ÿ · Í õE ‡ A p ,ä »Œ[]Š* (:EC^ºtº{( E$Qj"sÁ r±psš (z+{nþo› *{  ({+ rëp(D  (Z (^ (Q *{tÖ {{œ ,“{  {œ {œ :yÿÿÿ {S  {   (¡ ow Ži(³  ož ,p{Ÿ (  {Ÿ (¡  (¬ (¢ (£ (|+o (¢ (£ (}+(}+ rp(D  (Z (^ (Q * (¬  o (¢ (£ (£  rp(D  (Z (^ (Q *{  ({+ rp(D  (Z (^ (Q *t»{o'(D *t¼{{ o'(D  o (¢ (£ (£  r%p(D  (Z (^ (Q *r3p(D *{{œ 9ýÿÿ{  {œ {œ 9ôüÿÿ {œ { {n(:@Ðüÿÿt¼{œ {œ :¶üÿÿ{ {  {o'(D  o o (¢ (£ (£ (£  r7p(D  (Z (^ (Q *{tÄ{@ {  (¬  ({+(£  r?p(D  (Z (^ (Q *{tÅ{A{ (®  ({+(£  rSp(D  (Z (^ (Q *{tÆ{B{  ({+(® (¢ (£ (}+ rmp(D  (Z (^ (Q *{  ({+ r‰p(D  (Z (^ (Q *{tÈ{{œ 9üúÿÿ{  {œ {œ :âúÿÿ{E {   o (¢ (£ r›ps¤ (~+oV (D (¢ (£ (}+ r¡p(D  (Z (^ (Q *{tØ{{œ :Wúÿÿ{Ur›ps¥ (+o¦ (D (¢ (£  r³p(D  (Z (^ (Q *{tÒ{{œ 9ìùÿÿ{  {  {O {œ  (« (¯ ({+(Z (c (¢ (£ (£ (£  r¿p(D  (Z (^ (Q *{tÓ  {P{ (¯  ({+(Z (c (¢ (£ (£ (£  r¿p(D  (Z (^ (Q *{tÉ!{{œ 9àøÿÿ{ !{F" {   {œ  (« "(± ({+(Z (c (¢ (£ (£ (£  rÉp(D  (Z (^ (Q *{tÊ##{G"{ "(±  ({+(Z (c (¢ (£ (£ (£  rÉp(D  (Z (^ (Q *{tË${{œ 9Ô÷ÿÿ{ ${H" {   {œ  (« "(± ({+(Z (c (¢ (£ (£ (£  ráp(D  (Z (^ (Q *{tÌ%%{I"{ "(±  ({+(Z (c (¢ (£ (£ (£  ráp(D  (Z (^ (Q *{tÍ&{{œ 9Èöÿÿ{  {œ {œ :®öÿÿ {  &{J' (« '(² (¢ (£ (£  rùp(D  (Z (^ (Q *{tÎ({{œ :@öÿÿ({K''(² (¢ (£ (£  rùp(D  (Z (^ (Q *{tÏ){{œ 9âõÿÿ{  {œ {œ 9Èõÿÿ {œ {œ {œ :®õÿÿ{   { ){L'(« '(²  o (¢ (£ (£ (£  r p(D  (Z (^ (Q *{tÐ*{{œ 9*õÿÿ{  {œ {œ :õÿÿ {  *{M''(²  o (¢ (£ (£ (£  r p(D  (Z (^ (Q *{tÔ+{{œ 9œôÿÿ{  {œ {œ :‚ôÿÿ+{Q  {   o  (¬ (¢ (£ (£  rp(D  (Z (^ (Q *{tÑ,,{N-{ -(° (¢ (£  ({+(}+ r+p(D  (Z (^ (Q *{tÙ..{W {  (¬ (¢ (£  ({+(}+ r?p(D  (Z (^ (Q *{tÕ//{R {  (¬ (¢ (£  ({+(}+ rYp(D  (Z (^ (Q *{t×00{T {  (¬ (¢ (£  ({+(}+ rkp(D  (Z (^ (Q *{  ({+ r}p(D  (Z (^ (Q *{{œ 9òÿÿ{  { {n(:@[òÿÿt»1 {œ {œ 9Aòÿÿ {œ {œ {œ :'òÿÿ1{{  o'(D  o (¢ (£ (£  r‘p(D  (Z (^ (Q *{  ({+ rŸp(D  (Z (^ (Q *{{œ 9”ñÿÿ{  {œ {œ 9zñÿÿ {œ {œ {œ 9`ñÿÿ{œ 22{ {n(:@<ñÿÿt¼2{œ {œ :"ñÿÿ{{ {  { 3o'(D 3o o  o (¢ (£ (£ (£ (£  rµp(D  (Z (^ (Q *{  ({+ rÝp(D  (Z (^ (Q *{  ({+ rñp(D  (Z (^ (Q *{{œ 94ðÿÿ{  {œ {œ 9ðÿÿ {œ { (­ 449üïÿÿ{œ {œ 9ëïÿÿ{œ 22{ (­ 559Íïÿÿ2{œ {œ :¼ïÿÿ5{§ (¨ 4{§ (¨ 65{§ (©  4{§ (©  { 33o 6o'(D o o'(D  o (¢ (£ (£ (£ (£ (£  rp(D  (Z (^ (Q *{  ({+ rp(D  (Z (^ (Q *{  ({+ r/p(D  (Z (^ (Q *{{œ 9éíÿÿ{  { (€+9Éíÿÿ{Ÿ (¡ {n(:@©íÿÿtº{( @Žíÿÿ{{œ 9}íÿÿ{ {œ {œ :cíÿÿ{Ÿ (  {œ 2{   (|+2({+(+(Z (c  o (¢ (£ (£  rEp(D  (Z (^ (Q *:(‚+(w*^(‚+(‚+(u¥**þ(ƒ+*6(Œ(*:((*&((*:sà („+*~Œ,+ r_ps  z(<*‚Œ,+ r_ps  z(;*’Œ,+ rups  z(‚(**(0*.(=*zŒ!,+ rƒps  z(3*~Œ!,+ rƒps  z(2*~Œ!,+ rƒps  z(4*‚Œ!,+ rƒps  z(5*&(&**(@*&(B*~ŒZ,+ r—ps  z(6*ŽŒ,+ r·ps  z(ž(*"(+*~Œ,+ rOps  z(-*~Œ,+ rÕps  z(1*ªŒ,+ ríps  zsÅ (…+(?*&(.*03üŒ,+ rps  z(ª , {« +(8*02üŒ,+ rps  z(ª , {« +(7*04üŒ,+ rps  z(ª , {« +(:*0ü(ª , {« +(9*"($*:(Š(*6('*:(–(*>(ƒ+(,*’Œ,+ rups  z(’(*&(/*0 ýŒõ Ðõ(] (œ(*’Œ,+ r·ps  z(œ(*"(#*N(Ž(#(*&(>*zŒ,+ rps  z(~*"(†+*ÞŒ,+ r/ps  zŒ,+ rMps  z(*ŠŒ,+ rYps  zþ({*ÊŒE,+ rps  zÐõ(] (+(#(†+*2o&**Zo &s¬ }p*J{p¥s­ *{q*{r*B}q}r*v{q,{q{rob**þ{q,&{q{qo® ,{r{rþ**{qþ(‡+*b(ˆ+-*¥ó(A*¦{q,{qo[ |rþdo[ a***(A*6(Aþ*&(@*{s*&}s*0ÿ{s ,o`**0{s  (‡+þ*0{s , oa*þó*º{s,{s{sþo® *{sþ(‡+*b(‰+-*¥ô(L*f{s,{sþo[ ***(L*6(Lþ*"sH*{t*{u*{v*^}t}u}v*"{t*"{u*"{v*0“s¯ o &(° }w!}xsÉ(Š+}yþó}zþó}{}|sËþÌs± (K}z(K}{*0!þôþôoY}|*ºþ{|/(rkp(“ o” sÒ zsH*Âþ{|/(rkp(“ o” sÒ zo]*0Ôþ{|/(rkp(“ o” sÒ z|w(² E(YE-Ðö(] oe s³ z**{yo´ ,_{yoµ (à (´Þ (ã &Ü sÑ(¶ (‹+{· -*(Œ+¥s;z*† ‘ 0µþ{|/(rkp(“ o” sÒ z|{(@ Þ|z(@&Ü Þe|w(² -+|w(² þ,8{yo´ ,({yoµ (à o¸  Þ (ã &Ü&Ü&Ü&Ü&*((9–   '&Me0†þ{|/(rkp(“ o” sÒ zþ{w EJYE,Ðö(] oe s³ z**,Ðö(] oe s³ z**0@þ{|/(rkp(“ o” sÒ zþ{w3*þ{wþ*0‹þ{|/(rkp(“ o” sÒ zo_,o¹ þó*{yoµ (à (µ Þ (ã &Ü (º (» , o¹ +*S ` 0]þ{|/(rkp(“ o” sÒ zo_,*{yoµ (à (· Þ (ã &Ü&*CQ &sY*¾þ{|/(rkp(“ o” sÒ zo^*®o &j}¼ }½ }¾ }¿ *0hH{¾ - rpsâ z{¼ {½ £j {¼ {½ þj¤j{½ X{¼ Ži]}½ {¾ Y}¾ *0ˆ,{¾ {¼ Ži3>{¼ Žij!ÈZ!d[i {¼ ŽiX /+oÀ +{¼ {¿ ¤j{¿ X{¼ Ži]}¿ {¾ X}¾ *"{¾ *0¬(+ {¾ 1q{½ {¿ /{¼ {½ {¾ (Á +H{¼ {½ {¼ Ži{½ Y(Á {¼ {¼ Ži{½ Y{¿ (Á +}¼ }½ {¾ 3+{¾ }¿ *0.o &sZ}{o[ sY}‚*6{‚o[*:{o\*j{‚o^{o^*j{‚o^{o^*.sp€ƒ*( *~ƒ*&*~†*€†*bo &}„}…*~†*0< ~†,+(t (¸ Þ, (t&Ü&Ü&(q* $‚{…X}…{… ,þþ*¢{„-}…(à }„*rpsâ z *6€®~®&*0ksÄ o &(Å }‡sÓþÔsÆ }ˆsÕþÖsÇ }‰s×þØsÈ }Š}‹*þþ{‹/(rkp(“ o” sÒ z{ˆŒOoÉ (q*0Lþ{‹/(rkp(“ o” sÒ z{‰ŒO(Ê - r psâ z(q*0Lþ{‹/(rkp(“ o” sÒ z{ŠsË oÌ ŒOoÍ (q*þþ{‹/(rkp(“ o” sÒ zsu}‡{‡ow*ºþ{‹/(rkp(“ o” sÒ z{‡* *6€®~®&*{Œ*{*{Ž*{*’( }Œ}}Ž}*{Î *{Ï *V( }Î }Ï *sÐ *:( }Ñ *{Ñ *&**o &*(R*&(Ž+*"(+**&(+*&(‘+*&(T*&(’+*&(“+*&(”+*&(•+*Fo &}Ò *>{Ò oÓ &*(Q*(R*6sÔ (Õ *F(B{Ö o[*0#ÿ(B{Ö o\(BsZ(° *6s× (Ø *0€,L {Ù (Jþ,{Ù sÚ +<,  {Ù sÚ +(r? p s=z(B{Ö o[sÚ (Û (Ü (–+*0)(B{Ö o[ , {Ù + (î*6sÝ (Þ *0.(B{Ö o[ , {Ù + (—+*fsûsýsÿ(˜+*6s (™+*0-W, {Ž + - s (š+*s(›+*>s(š+*6sß (Õ *:sà (Ž+*0>,' {Ž YEsá (Ž+*(œ+*sâ (Ž+*Bsã (Ž+*Bsä (+*Jså (ž+*Rsæ (Ÿ+*b( +sç sè sé *>sê (¡+*6së (¢+*(*(*>sì (£+*:se(¤+*:sq(¥+*&(¦+*òo &}í }î }ï }ð sZ}ñ sò }ó *0)"{ó oô {í ,¥þoõ **0x&{ó ( oö - rµpsâ z {÷ u>-u?-&{÷ t@{ø *{÷ t>{ù z{÷ t?{ú z"{ð *ª{ð - }ð {ñ o^{ó oû **6{ñ o[*:{ñ o\*0({ó {ü þ-}ï **0({ó {ü þ*"{ï *6{ó oý *"{î *&oþ *0Go &} s } { } } } s  (  }  *‚{ ,+ s  } { *03*{ (à o  o { {¾ X Þ (ã &Ü*( 0=,{ {¾ -*{ o o -o  o +Å*0#-{ (à o§+ Þ (ã &Ü*  0A/{ ,4o 2*o o - X+Êo **†{ {¾ -*{ o ( *0"0{ (à o Þ (ã &Ü*  0-1{ , o -*o o ( **0'2{ (à (¨+ Þ (ã &Ü&*  05    s (©+*Bs (Ž+*06  s (ª+*06  s («+*0(8{ (¬+þ,{ ¥ þoð **‚{ ,+ s } { *0":/{  *o ( (ª*Fo &} *>{ oÓ &*0Yo &} (B{Ö o[ , {Ù +} s  }! }" }# s$ }% *6{! o& *"{" *&}" *V{% o' þo( *V{% o' þo) *0J<{# ,(rê p(“ o” sÒ z}# s* (¤+ { (+ (¥*>{! o, *0h>{" , {Ž + s- s. s/ o0 {! o, ( o1 Þu , oð &Ü&Ü *0M0.?o­+ ,{3 *(r( p(“ o” s4 z0c@{" , {Ž + s- s5 s/ o0 {! o, YEs6 (©+*s7 (©+*0lB{" , {Ž + YE( o®+ s9 (Ž+*s-  s: s/ o0 {! o, o; *0"W{! {" , {Ž +o< *0"W{! {" , {Ž +o= *0#W{! {" , {Ž +o¯+*0#W{! {" , {Ž +o°+*0Ds@ oA *R{! ¥ þoð *"sB *0}L(C sD oE oñ ,)oF (G  (H sI oJ +Ï Þu , oð &Ü&Ü&¥_¥`sK *5H0Nub , *(±+*0SQ(róp(“ o” £õ Œõ,+ rr ps! z£õŒõ¥c(²+ Ži  (³+ Y2 £ö(L XX3àY?¸(róp(“ o” £õ Œõ,+ rr ps! z£õŒõ¥c(²+Ži .!(r| p(“ o” r° ps! z Y 2"  £ö(L  X  X3ÞXX@Hÿÿÿ*07RŒe,+ rr ps  z(´+ Ži -(³+*(µ+*"(¶+*"(·+*&(¸+*&(¹+*6(M (¸+*6(N (¸+*6(M (¹+*6(N (¹+*~µ*2rº psï z2rº psï z2rº psï z2rº psï z0T(r p(“ o” sÒ z0T(r p(“ o” sÒ z"oO *(P *&(Q *(P *&(Q *F}R o &*n(rN p(“ o” s zn(rN p(“ o” s zn(rN p(“ o” s zV{R sS þoT *0UW {R oU oñ ,oV X(Q ¤jX +Ú Þu , oð &Ü&Ü&**9*>{R þoW *zsX {R ¥j(º+þo× *ŽsY {R ¥j(º+¥þoÖ *(Z *03Z ([ (\ s] (^ (_ (Q s  *(Z *03Z ([ (\ s] (^ (_ (Q s  *b}` }a o &*V{` sS þob *n(rN p(“ o” s z0\{` oc sd *>{` þoe *n(rN p(“ o” s zV{` sS þof *0,]sS {` of ,{` ob k**n(rN p(“ o” s zn(rN p(“ o” s zn(rN p(“ o” s zn(rN p(“ o” s z0?^ ( ( s (  (  {a sS sg þoh *0†` {a oi oñ ,Ooj ([ (\ s] (^ (_ X(Q s  ¤ÏX +© Þu , oð &Ü&Ü&*[j*>{a þok *zsl {a ¥s(»+þo *Žsm {a ¥s(»+¥þoÖ *2s€µ*&sn *0?, {3 þoo **&sp *:sq (¼+*j(½+sr (½+ss **st *0 a(¾+ *.þ(¾+*"su *&sv *~sw (¿+sx (À+sy *Fo &}z *R{z - þo{ **n{z -}z þo| **j{z -}z þo} **b}€ } o‚ &*0fe{€ oƒ („ Þt (… Þ u…,t… { {† þo‡ *t‡{ {ˆ þo‰ *B{ þo‡ *>{ þoŠ *b}‹ }Œ o &*‚{Œ {‹ s ¥†þoŽ *b} }‘ o‚ &*0fi{ o’ (“ Þt (” Þ uŒ,tŒ {‘ {• þo‡ *t{‘ {– þ(Á+*B{‘ þo‡ *>{‘ þoŠ *b}— }˜ o &*‚{˜ {— s™ ¥†þoŽ *:(š }› *b{› oœ ,( **:( }ž *F{ž oœ þ*~}Ÿ }  }¡ o‚ &*0†j{¡ {¢ {Ÿ (Â+(„ Þt (… Þ u…,t…{  {† þo‡ *t‡{ˆ {¡ (¤ {  þo‰ * "B{  þo‡ *>{  þoŠ *~}¥ }¦ }§ o &*0-I{¦ s¨ {§ {¥ s© ¥†þoŽ *b}ª }« o‚ &*0Bk{« {¬ , {Á {ª s­ o® +{« ( (¯ *B{ª þo° *>{ª þo± *F}² o &*0"ms³ {² s´ ¥*þo *ž}¶ }· }¸ }¹ o &*z{· {º -{¶ þot **ª{· {º -{· (» {¶ þo **0U{· {º -F{¸ (» {¸ {º ,{¹ {º +,{· (» {¶ þo~ ***ž}¼ }½ }¾ }¿ o &*z{½ {º -{¼ þot **ª{½ {º -{½ (» {¼ þo **0U{½ {º -F{¿ (» {¾ {º ,{¿ {º +,{½ (» {¼ þo~ ***b}Ó}Ôo &*j{Óoð {Ôþoð *b}À }Á o &*0 Jos s s {À sà o {Á sÄ o  s^*:(Å }Æ *0+r{Æ oÇ u¡,t¡ {È (É **:(Å }Ê *0+u{Ê oË u¥,t¥ {Ì (É **0xsÍ sÎ (¾+ oÏ *0zsÐ sÑ (¾+ oÒ *00{sÐ sÐ sÓ (¾+ oÒ oÒ sÔ *0xsÍ sÕ (¾+ oÏ *0&~sÖ sÐ s× (Ã+ oÒ *0 a(¾+ *0%sØ sÙ sÚ (Ã+ oÛ *0,‚sÍ sÜ (Ã+ sÝ (Ã+ oÏ *00„sÍ sÞ sß (¾+ oÏ oà sá *V(â }ã }ä *n{ä {ã oƒ oå *V(â }æ }ç *‚{æ oœ ,{ç oè **r(â }é }ê }ë *¶{é oœ ,{ê oè *{ë oè *V(â }ì }í *0)†{ì o’ , {í {î oå **r(â }ï }ð }ñ *06‡{ð {¢ {ï (Â+ {ð (¤ {ñ oå *V(â }ò }ó *0Ck{ó {¬ , {Á {ò s­ oô +{ó ( (¯ *:(â }õ *B{õ oè *:(â }ö *B{ö oè *r(â }÷ }ø }ù *0L‰{÷ oÇ uÂ,t {ù {ú oû *t¡ {ø {È oå *Šsü sý sþ (+ (Ä+*>sÿ (Å+*0?‹/ s”( *s (©s–s˜sš(+ (˜+o *V(â } } *0!Œ{ { oÇ ( o *:( } *0Œ{ (  o  *:(  }  *0Œ{  (  o  *( *"( *( *"( *( *"(Æ+*r( } } } *0G{ { s (Ç+{ { s (È+{ o s (É+*V( } } *0$Žs (Q{ { s (Ê+*(  *(q*:(! }õ*0Œ{õo" *( **(  **:s¨(Ë+*0s¾(Ì+ sÆ(Í+*:(# }ö*0@’uv ,4o$ 3{ö{º +, o% s& (' (Î+*z:(( }÷*0“() (* {÷þo+ *:(, }ø*B{øþo- *V(! }ù}ú*j{ú(» {ùo. *V(/ }û}ü*Î{ûs {ûs¢{û{üs¤(0 (Ï+*:(/ }ý*0&”s sž{ýs¦(Ë+(Ð+*:(1 }þ*>{þo2 *:(1 }ÿ*>{ÿo3 *:}( *B{(Ñ+&*(5 *Ns®þ¯s6 *Ò}}}}}}( *0œ5{o7 ()+9„{sª{s¬s°(Ò+{o8 o9 o: ,{s; o< &*o= (Ó+þ,{o= o> &*{o? o@ &**Ò(A }}} } } } *0 6{{{ { { { s²þ³s6 *:(1 } *>{ o2 *:(1 }*>{o3 *:}( *B{(Ñ+&*(5 *Nsºþ»s6 *V(B }}*0 ‹›(C (D (E s { s´(Ô+tR} o8 {s¶{s¸s¼(Ò+oF {{ oG *:(! }*:{oH *:(I }*"{*:(I }*N{sÂ(Õ+*V(J }}*Š{sÀ(º{sÄ(Ö+*09œ, {Ž + Ži , {Ž + sÎsÐ(×+*>sÚ(Ø+*09œ, {Ž + Ži , {Ž + sÜsÞ(Ù+*&(ª*0 a(¾+ *BsK þoL *:(M }*0 9ž(N (O (P (Q (R { þoS *:(T }*B{þoU *V(V }}*V{{W {þ*:(X }*0N{{{W X(Y -,,¥+(r€ p(“ o” sZ z&(R*(R*’([ }}}}*0 J{{{{W ( {{{W Y( (È{sÔ(Ú+*:(\ } *6{ (Û+*V(\ }!}"*0 P {"(Ü+ s] {"sÒ{!{"sÖ(¤+(TsØ(Ø+(Ý+*:(M }#*0 9ž(N (O (P (Q (R {# þo^ *:(_ }$*>{$o` *F}a o &*>{a oÓ &* * *0F¢Œösb sc sd se {f o[ (—+og ¥*0Q£uâ ,& {h , r¬ ps³ zoi oj *(rÄ p(“ o” râ ps! z0;¤uâ , {f o\*(rê p(“ o” râ ps! z:(â }k *V{k (l om *:( }n *V{n (o om *:(  }p *V{p (q om *0(«, sj {‚o[(r ss +ss (t (u sv sw sx sy (Þ+oz ,E{{  -+$   {| {‚o^{o^ (ß+Ýr þ, o} {o\+oz  þ," o} {‚o^{o^+s~ zu   ,  oð &Ü&Ü*BÉ 0Œsösøsú(à+ *0Œs sþs(á+ *:(€ } *R{ (l oô *:(‚ }ƒ *R{ƒ (o oô *:(„ }… *R{… (q oô *(† *(q*(‚ *z(„ *(q*:(€ }‡ *R{‡ oÓ &(q*:(‚ }-*R{-o> &(q*:(„ }.*R{.o< &(q*~­*6s(â+*2s(â+*2s(â+*V, o}*o~*0I¯(ˆ ,={‰ { sŠ {Œs s${sˆs‹ **6sŒ (ã+*6s (Õ *0:±{Ž , r ps³ z{ ,*{ þs‘ } *0*²{Ž - }Ž { ,o’ } ***0J³o“ ,(” *{Ž ,(” *(• } { , o– +{— (ä+*¦{ -s˜ {— (™ }— *{ *:(† }/*V{/{š þo› *:(  }0*0 ´{œ {{0so}*:(† }1*V{1{š þo› *(  *0´{œ {so*:(† }2*V{2{š þo› *(  *0´{œ {so~*V(† } }ž *j{ {Î {ž þoŸ *r(€ }  }¡ }¢ *~{¢ {¡ {  s£ o}*V(† }8}9*j{8{{9þo¤ *r(‚ }:};}<*~{<{:{;so}*V(† }=}>*j{={Ž{>þo¥ *r(„ }?}@}A*~{A{?{@s"o}*:(¦ }§ *V{§ (å+þo¨ *:(¦ }© *V{© (å+þo¨ *Fo &}D*J|D(² þ*Vo &s*}E*0$¶{E |D(² þ, o÷ &**0Jo &}ª (ˆ }« {« ,(¬ +}­ {ª {Ï {}® *0“¸s¯ (ˆ {« ,E{« (° ,{­ (¬ o® +, {® o€*{« {® (*,'{« (° ,{­ (¬ o® +,Å+¶{® o€*j{« {® s± (*V(† }² }³ *~{² {ª {Î {³ þoŸ *V(† }´ }µ *~{´ {ª {Î {µ þoŸ *Öo &}¶ (· }¸ }¹ }º s }» *0#¹{» (à (æ+ Þ (ã &Ü*  0&º{» (à (ç+ Þ (ã &Ü&*  0K{¶ - r$ psâ z{Á *0r½{» (à (è+ Þ (ã &Ü {¼ ,@ {¼ {¼ -{½ , o¾ * o¿ *sÀ (é+(q*(q*  .{¶ þ*6sÁ ( *0B¾{¶ -5oà {¶ -", {Ž +  oÄ ,{¶ ****&oÅ *:(Æ }Ç *0Œ{Ç o¿ *:(¦ }È *0j¿{È {¶ -/{È {» (à {È (ê+ Þ (ã &Ü+ {È {¶ -(q* {Î {Á þoŸ *!1 ~ª*0= u- u-t {É *t {Ê zt {Ë z0Ã, {{ (ß+*s~ z~«*0 Äs| sÌ o€*0 Äs| sÍ o~*0RÅ{‰ |Œ(I,{‰ {Žs; þo¥ *oÎ Þt {‰ {o¤ Þ*+ 66sÏ (Õ *6sÐ (Õ *6sÑ (Õ *:sÒ (Ó *:sÔ (Ó *:sÕ (Õ *:sÖ (Õ *:s× (Õ *2s¥(Ø *~¬*RsÙ (ë+(ì+*zoÚ ,s©(í+*(R*NoÛ sÜ (î+*:sÝ (ï+*( *sÞ **u@þ*sß **u>þ*sà **u?þ*0Æ u?,+ u>,+*:(á }ø *{ø *:(á }ù *{ù *:(á }ú *{ú *:( }â *2{â {ø *:( }ã *2{ã {ù *:( }ä *2{ä {ú *( *0È(ð+ (å (æ o€ *Ò(† }ç }è }é }ê }ë }ì *0 <{ë {Ñ {è {ç {é {ê {ì sˆsí þo¨ *Ò(† }î }ï }ð }ñ }ò }ó *0 <{ò {Ñ {ï {î {ð {ñ {ó sˆsí þo¨ *:(¦ }ô *B{ô þ(ñ+*:(¦ }õ *0‚Ì{õ u>-) u?-F{õ t@ {Î {ø þoŸ *{õ t> {Ï {{ù þo¤ *{õ t? {Ï {Ž{ú þo¥ *V(† }ö }÷ *V{÷ {ö þoŸ *:(¦ }ø *0uÎ{Ï |Œ(I,{Ï {Žs; þo¥ *{ {Î oox,o{ø sù oy(q*{ø þoŸ *V(€ }ú }û *0tÑ{û {ü {   {ú oý  Þ!tu,   Þþ &, þo¤ *{þ {û þoÿ *'!V(† } } *j{ {Ñ { þo¨ *V(¦ } } *0‰Ó{Ï |Œ(I,{Ï {Žs; þo¥ *{ s {Ï s {ü {o ox,{ s oy(q*{ {þ þoÿ *V(† }u}v*V{u{vþo¤ *V(† } } *j{ {Ñ { þo¨ *V(¦ }  }  *0öÕ{Ï |Œ(I,{Ï {Žs; þo¥ *{Ï { {Ï {   {  {  o  Þ"tu,  Þþ& ,2oox,osoy(q*þo¤ *oox,os  oy(q*{Ñ þo¨ *G^"V(† }{}|*V{{{|þo¤ *V(† }  } *j{  {Î { þoŸ *r(€ } } } *0ÖÖ{ {Ï {   { o÷  Þ!tu,   Þþ &,<{ oox,{ os…oy(q*þo¤ *{ oox,#{ o{ s oy(q*{ {Î þoŸ *'!V(† }‚}ƒ*V{‚{ƒþo¤ *V(† } } *~{ {Ï {{ þo¤ *r(‚ } } } *0ÛÖ{ {Ï {   { o÷  Þ!tu,   Þþ &,<{ oox,{ os‹oy(q*þo¤ *{ oox,#{ o{ s oy(q*{ {Ï {þo¤ *'!V(† } } *~{ {Ï {Ž{ þo¥ *V(† } } *~{ {Ï {Ž{ þo¥ *r(„ } } } *0Ö×  { o÷  Þt u,   Þþ&,N{ oox,#{ o{ s  oy(q*{ {Ï {Žþo¥ *{ oox,#{ o{ s! oy(q*{ {Ï {Žþo¥ *V(¦ }" }# *0 —Ù{Ï |Œ(I,{Ï {Žs; þo¥ *{Ï { {" s$ {" s% {" s& {# {Ñ {Ï {Œ {sˆsí þo¨ *V(‚ }' }( *0"Ú{' (ò+ {Ñ {( þo¨ *V(¦ }) }* *0 uÛ{Ï |Œ(I,{Ï {Žs; þo¥ *{) s+ {* {Ñ {Î {Ï {Œ{Ž{sˆsí þo¨ *V(† }–}—*j{–{Ž{—þo¥ *V(† }˜}™*j{˜{Ž{™þo¥ *V(„ }š}›*0ÆÜ{›{   {šo<  Þ!tu,   Þþ &,?oox,o{›soy(q*{›{Žþo¥ *oox,o{›sŸoy(q*{›{Žþo¥ *"!V(¦ }, }- *0 KÝ{Ï {, s¡ {- {Ñ {Î {Œ{{sˆsí þo¨ *(. *0´{/ {0 {Œþo1 *:(! }2 *0]{2 þjoð *V([ }Ÿ} *N{Ÿ{ (T*:(V }3 *>{3 þoñ *V([ }4 }5 *j{4 {5 oô þo6 *:(7 }8 *~s9 {8 s: (¤+(T*:(; }< *"{< *6€®~®&*0ÞsÏ(= ¥C(ó+ o¸ *0Yßo_,!s?s> *{x {x!X}xsUo? s?s> *0(á/*o@ {t3*Y+Ø0.âo_,*  oA Y(¶ 2 þoB **01äo› (z{„ , {C }„+Ð*>sD *0sæ-h{E ,O {F uG, {F tG{G séo€*{F tH{H  sëo€*sI o€*(q*ê{W Y(Y {W -{‚o^{o^+{W *0Cé¤õ(à (»Þ (ã &Ü (ô+* , 0^{W Y(Y {E -(J (K +{W -{‚o^{o^+ {o\{W *0;é(à (½Þ (ã &Ü (ô+*$ 04ì," {L o÷ Þ t  Þ&*sM þo-*  "sN *0Bì," {L o÷ Þ t  Þ&*oO oO sP þo-*  00î {Q {R -{S {sT (U }V **0_ñ{Q oW {V ,0 {X (Y {X (Z }V  suo~*{[ , o– **Fs\ (õ+*>s] (õ+*>s^ (©+*>s_ (Ž+*þsZs¯ €ªskþlsÈ €«(ö+€¬s€­*(` *sa *:}¯( *f{¯{Ö (÷+o]*:(! }°*z|°{u|°{vo¹ *(b *:sÍ(c *(d *0 òo÷ & Þt (e Þ* :}±( *0%ó(ø+ {±{f (ù+o€(‚*:}²( *0%ó(ø+ {²{f (ù+o€(‚*:}³( *0%ó(ø+ {³{f (ù+o€(‚*V(† }g }h *V{g {h þoŸ *V(† }i }j *V{i {j þoŸ *V(† }k }l *V{k {l þoŸ *Ò(â }m }n }o }p }q }r *0Àô{q |D(² ,(rN p(“ o” sÒ z(¬ {p o® ,{n {º +,{o {r ss (à (t *~†,&(ˆ {m {{r su ( *{m {{r sv o€ *:(¦ }w *0 ö{Ï {Ï |Œ(I,{Ï {Žs; þo¥ *s sx (¬ s*{w  {Î (ú+ {(û+ {Ž(ü+sy oz ÞJt|D(² ,(rN p(“ o” sÒ z{o¤ Þ&(» {{   ,   {C þo› *(q*MH•J:(€ }| *V{| (} þo~ *:(‚ } *V{ (€ þo~ *:( }‚ *0 cø{ƒ {Œ { {„ s… {„ s† {Ž{‚ {Ñ sˆsí þo¨ *V(† }Ä}Å*j{Ä{Ž{Åþo¥ *V(† }Æ}Ç*j{Æ{{Çþo¤ *V(† }‡ }ˆ *j{‡ {‰ {ˆ þoŠ *0D(€ }‹ }Œ } }Ž } } }‘ }’ *0 8{Œ {‹ { {Ž { { {‘ {’ (ý+*ò(‚ }“ }” }• }– }— }˜ }™ *0 7{” {“ {• {– {— {˜ {™ (š (þ+*ò(„ }› }œ } }ž }Ÿ }  }¡ *0 7{œ {› { {ž {Ÿ {  {¡ (¢ (þ+*ò(£ }¤ }¥ }¦ }§ }¨ }© }ª *0¨Œ{© {‚o[{¤ {¥ {¦ {§ {¨ {© {ª s« {¤ {¥ {¦ {§ {¨ {© {ª s¬ {¤ {¥ {¦ {§ {¨ {© {ª s­ (ÿ+ *:(® }¯ *0 û(+ {° {¯ (+ Ži-{‰ jþoŠ *Žis] s± Ži(+{Œsj{ s² (+(q*:(® }³ *0†þ{³ (+s´ Þ%t {° {o¤ (µ s´ Þ (¶ (· -- Ži-{‰ jþoŠ *{³ s¸ þ(+*{¹ *%(! **( *z(  **:(† }é*R{és; þo¥ *’}ê}ë}ì}í( *0S{í|D(² -={ë{º , {» o¼ +{ê{{ìso€ **:(† }î*B{îþo› *²}ï}ð}ñ}ò}ó( *0_{ò|D(² -I|ó(@{ð{º , {» o¼ +{ï{{ñso€ **:(  }ô*0 Å{œ s½ {š {Ž s*|Œ sþs± (Ksþs¾ {ôs¿ (À (Á Þ%t|D(² - ÞÞ&,{þo¤ *(q*J5%:( }õ*R{õoÄ (+*:([ }ö*0Œ{ö{Žs; o¥ (R*r}÷}ø}ù( *0S{ù|D(² -={ø{à , {Ä oÅ +{÷s (¤+(¥**V(† }ú}û*b{ú{ûþþoÆ *²}ü}ý}þ}ÿ}( *0LŒ{þ|D(² -6{ý(Ç |ÿ(@{ü{{so€ **V(È }}*0 £{É sÊ s* sþs± |Œ (K{S {sþsË {(Ì (Í (Ç (qÞ!t|D(² -þ(qÞ*@?!V( }}*²{o ,(+*{o {(ª*:(¦ }Î *0‚{Ï {Î u>-*u?-A{Î t@ {Î {ø þoŸ *{Î t> {{ù þo¤ *{Î t? {Ž {ú þo¥ *(Ï *"(+*:(; }Ð *^{Ð oÑ sÒ (+*:(! }Ó *>{Ó oû *(Ô *6(+(+*V(Ô }Õ }Ö *0G,{Ö o× (Ø (+(+*{Õ o\{Ö oý (ªsÙ ( +*r(; }Ú }Û }Ü *0U{Û {ü þ,{Û o× ( +(+*{Û oý {Ü (ª{Ú {Û sÝ ( +*r(; }Þ }ß }à *¾{ß sá {Þ {ß {à sâ («+( +*:(; }ã *Ò{ã {ü þ,{ã o× ( +(+*(+(+*:(! }ä *0 s; (q {ä oô *r}å }æ }ç ( *r{å {æ {ç þ( +*:(! }*>|(@*²}è }é }ê }ë }ì ( *0o o -e{é -{ë {ì s/o-+ |ì (@{è oí (l Þt (o Þ {ê oô **9Nr(î }ï }ð }ñ *0 ’  sò s, {ñ sò þó s± (K {ð {ñ  sô þõ sö {ï s÷ oø o ,(@{ð oí (+*( +*r(; }ù }ú }û *Ž(Q{ù {ú {û sü (+*V(( }ý }þ *0*“() (* {þ {ý sÿ þo *r(( } } } *0 0“() (* { { { s þo *’(( } } } }  *0 6“() (* {  { { { s  þo  *:(  }  *0*( ( ( {  o (+*( *"(+*(_ **(+*:(! } *0Œ{ s; (q oô *²} } } } } ( *0 ({ { { { { þ(+*Ò( } } } } } } *0 =| { { { { { s  þ! s± (K*:(! }7*0{7o" (@*²(â }# }$ }% }& }' *0F {# {' o( o) {% {& sIo-(l {$ oô *²(* }+ }, }- }. }/ *0 *{+ {, {- {. {/ s0 s1 *:(2 }3 *šÐj(] {3 o4 r£p(5 (u+*V(î }6 }7 *0 § sò s, {6 {7 s8 (+{6 s9 (+s: (+t—}/ t›}; o"  o<  o(  {6  o= ( +*V(; }> }? *v(Q{> {? s@ (+*(A *(R*:}G( *0ÿ{G{Ö ,o\**r(€ }B }C }D *²{C (° |D (@{B (l oô *r(‚ }E }F }G *²{F (° |G (@{E (o oô *r(„ }H }I }J *²{I (° |J (@{H (q oô *r(K }L }M }N *0 | sZ s¯ sWþXs± (K o[{N  sO {N  sP {N  sQ {L (ÿ+{N {M (+(+*V(R }S }T *0$(sò (Q{S {T sU (+*([ *"(ö+*:([ }V*–{V, {V(*(sc(í+*r(V }W}X}Y*0I{X|D(² -{Yo" (@+{Wo÷ Þ t  Þ*<= :}Z( *>{ZoW &*V( }[}\*’|[{\siþjs± (K*~}]}^}_o &*Æ|](I-"{^|D(² - |_(@***:(X }`*0M s* {`sg sk (+t }Yo" sm(+*:(Y }a*^(Q{aso(+*:(È }Z *0d{É {Z { , rž psâ z{Z { (à {Z (+ Þ (ã &Ü,(q*{S þoÆ *2C :(† }c*B{cþoÆ *([ *6( (+*’(\ }] }^ }_ }` *0†u¥,5{] {a (à {] }b  Þ (ã &Ü&(+*t§ {c ,{] {^ {_ {` (+*,¥Á+ r psâ z(+*+ ’(d }e }f }g }h *0 p!{e {f o+ ,! {j {h o\sk (+*{e {l {g ( +{e {f {g {h sm (!+*([ *6( (+*V(n }o }p *Î,{o {p ("+*,¥Á+ rt psâ z(+*V(d }q }r *0K"{q {r o+ , {j ss (+*{q {l {q {r st (#+*([ *6( (+*r(u }v }w }x *04#sH sY {v {w {x o[(ƒ(+*r(d }y }z }{ *0k"{y {z o$+ -{{ /{y {z ("+*, {j s} (+*(Q{y {z {{ s~ (%+*( *0=K, {Á (+*,¥j+(r¸ p(“ o” s4 z(+*r(; }€ } }‚ *Ž{€ { {‚ o&+s„ ('+*V(n }… }† *z,{… {† ((+*(+*V(d }‡ }ˆ *0?K{‡ o‰ -({‡ {ˆ oŠ {‡ {ˆ s‹ (#+*(+*V(d }Œ } *0*K{Œ oŽ -{Œ { ((+*(+*V(Ô } } *0B,{ { ()+*,¥j+(rà p(“ o” s4 z(+*V(; }‘ }’ *0F${‘ o‰ , {Á (+*{‘ {’ oŠ {‘ {’ s“ ( +*V(; }” }• *01${” oŽ , {Á (+*{” {• ()+*:(– }— *f{— {% o˜ (R*([ *"(ö+*:([ }™ *Š{™ { {™ oš s›(í+*:([ }› *Ž{› sœ {› s (¤+(*+*:(â }ž *0Œ{ž oŸ *:(â }  *0Œ{  oŸ *:(n }¡ *‚,{¡ o¢ ( +(+*V(£ }¤ }¥ *01:{¥ oà {¤ ( (ª{¥ s¦ (#+*V(d }§ }¨ *z{¨ {§ {¨ s© (++*([ *6( (+*:(d }ª *^{ª o« s¬ (+*( *0,K, {Á (+*(rp(“ o” s4 z:(; }­ *J{­ s® ('+*:(â }¯ *0Œ{¯ oŸ *2rbpsï z2rÖpsï z2rJpsï z2r¼psï z2r.psï z2r psï z2rpsï z2rŠpsï z0~ '(,+ (° (± ( E$ÛZ ” ¥ ÿ  5 } ˜ ë - T (  3JtÌ(-+,6{² (³ {I{² (´ (98g ( E$füD™~Û(C‹7qùê¿`X_( E$M(rôp(“ o” sÒ   z{œ ,Ú{œ {œ -É{ ($8ä tØ {œ -£ {U  {V   (œ(8® tÍ {œ 9Ïþÿÿ{œ {œ :»þÿÿ{  {J(28f tÎ{œ :‡þÿÿ{K(38= tÏ{œ 9^þÿÿ{œ {œ 9Jþÿÿ{œ {œ {œ :0þÿÿ{ { {L(58ÐtÐ{œ 9ñýÿÿ{œ {œ :Ýýÿÿ{ {M(48ˆtÑ{N(68mtÙ{W  (ž(8NtÓ{P(<83tÒ{œ 9Týÿÿ{ {O{œ (;8ñtÔ{œ 9ýÿÿ{œ {œ :þüÿÿ{Q {  (‚(8¤tÕ{R  (18‰tÖ{œ 9ªüÿÿ{œ {œ :–üÿÿ{S {  (?8A{œ 9jüÿÿ{œ {œ 9Vüÿÿ{œ {œ {œ :<üÿÿ{ { (Š(8ât×{œ 9üÿÿ{œ {œ :ïûÿÿ{T {  (’(8•{œ 9¾ûÿÿ{œ {œ :ªûÿÿ{ (Œ(8[{œ 9„ûÿÿ{ {n(:@fûÿÿt»{œ {œ 9Lûÿÿ{œ {œ {œ :2ûÿÿ{{ (Ž(#(8Ó{œ 9üúÿÿ{œ {œ 9èúÿÿ{œ {œ {œ :Îúÿÿ{ { ((8t{œ 9úÿÿ{œ {œ 9‰úÿÿ{œ {œ {œ 9oúÿÿ{œ { {n(:@Kúÿÿt¼{œ {œ :1úÿÿ{{{ { (=8Æ{œ 9ïùÿÿ{œ {œ 9Ûùÿÿ{œ {œ {œ :Áùÿÿ{ { (>8l{œ 9•ùÿÿ{œ {œ 9ùÿÿ{œ {œ {œ :gùÿÿ{ { (–(8 {œ 96ùÿÿ{œ {œ 9"ùÿÿ{œ { (ð  9ùÿÿ{œ {œ 9óøÿÿ{œ { (ð!!9Õøÿÿ{œ {œ :Äøÿÿ!{§ (¨  {§ (¨ "!{§ (©  {§ (© { "('8:{œ 9t÷ÿÿ{œ {œ 9`÷ÿÿ{œ {œ {œ :F÷ÿÿ{ { ((8à{œ 9÷ÿÿ{œ {œ 9÷ÿÿ{œ {œ {œ 9ìöÿÿ{œ {œ {œ :Òöÿÿ{ { { (08a{œ 9›öÿÿ{œ {œ :‡öÿÿ{ (\(8'(^(8{œ 9Pöÿÿ{œ {œ 9<öÿÿ{œ {œ {œ :"öÿÿ{ { ()8¼tÄ{@  (-8¡tÅ{A##(.8†tÆ${œ 9¸õÿÿ{œ {œ :¤õÿÿ${B#{ #(/8>tÇ{C  (*8#tÈ%{œ 9Uõÿÿ{œ {œ :Aõÿÿ%{D %{E&{  &(,8ÐtÉ'{œ 9õÿÿ'{F{ {œ (88ŽtÊ({œ :Àôÿÿ({G(7+gtË){œ 9™ôÿÿ{œ (-+9ôÿÿ{² (³ ){H{ {² (´ (: {ns*0º({n (:E8ut» {(µ *t¼ { { s¶ (· *tº{{{os¸ ŒÄs¹ (º *(rp(“ o”   r:ps! z"(¾*0-*( , {» (.+-*{» ¥ (¼ *0%+( ,{» uE ,  (½ **0--( , {» (/+-*{» ¥‚ (¾ *0-/( , {» (0+-*{» ¥ƒ (¿ *0-1( , {» (1+-*{» ¥„ (À *0-3( , {» (2+-*{» ¥… (Á *0-5( , {» (3+-*{» ¥† ( *0-7( , {» (4+-*{» ¥‡ (à *0-9( , {» (5+-*{» ¥ˆ (Ä *0-:( , {» (6+-*{» ¥K ( *0-;( , {» (7+-*{» ¥‰ (Å *0-<( , {» (8+-*{» ¥d (Æ *0-=( , {» (9+-*{» ¥Š (Ç *0M?(ê ,A{È ( "32{È tØ {VÐ(] (q+,{V (É **0ÆD( 9­{Ê (Ë (ø 9–{Ì (Í (î 9{Î {Ì (Ï  (:+,þ+,V{Ê (Ð {Ê (Ñ {Î {Ì (Ï X(Î (  (Ò (¡ sÓ *(Ô sÓ *0‚E{n (:3ot¼ { {  (Î(  {Õ -!(¡ (Ô (Ò sÓ (Ö *(  (¡ sÓ (Ö **0zI(ï ,n{× (Ø {× (Ù (Í ,(ª sÚ (Û *(ó,{« sÚ (Û *(ª (Ü sÚ (Û **6sÙ(;+*6sÛ(<+*0NL(ò ,{Ý (Þ (À ,{’ ,*{Ý (ß {Ý (à sá (â *0NL(ò ,B{Ý (ß (À ,.{’ ,&{Ý (Þ {Ý (à sá (â **0®OsÝ(;+ 9{ã (ä (  ,/{å (æ oç , oè + sß*( ,{å (æ +Â(rDp(“ o” rtps! z(  ,Ó{å (æ 8„ÿÿÿ"(4*:oé (4*:oê (4*(ë *"(Ï*(ì *"(Ð*(ë *"(Ï*r(í }’}“}”*0¦Q(  9—{å (æ {’o• o• 38{“, oç ,{”oè (=+++{’(=++,<{å (î {å (æ {å (ï oð (>+ sñ (ò **0OR{Ü ,E {Ü {Ü -{ó (?+sô (õ *{Ü {ó (ö +³*6(÷ (@+*~ *~*~*2Ћ(] *2Ð(] *Z(æ(q+,(ç**02S(è (è (ã%¤%¤þo^ *05T{n (:3#tº {{œ -{ (ø **0XU{n (:3Ftº {{œ ,2{ {œ {œ -{ { sù (ú **0xV{n (:3ftº {{œ ,R{ {œ {œ ,>{œ {œ {œ -* { { {sû (ü **0œW{n (:@‡tº {{œ ,s{ {œ {œ ,_{œ {œ {œ ,K {œ {œ {œ -5{  { { {sý (þ **0&X{n (:3t» {(ÿ **0EZ(ì ,9{ ( ( 3&{ ( { ( sá (â **05[{n (:3#t¼ { { s¶ ( **0X\{n (:3Ftº {( 30{{œ ,#{ {œ {œ -{ ( **0R^(í ,F{ ( ( 33{ ( { (  { (  s  (  **06_{n (:3$tº {( 3{ (  **0P`{n (:3>tº {( #3({tÙ {{œ -{W ( **0Qa{n (:3?tº {( 3*{tÄ {@ { s ( **0Qb{n (:3?tº {( 3*{tÅ {A { s ( **0Qd(ë ,E{ ( ( 32{ ( tÆ {B { ( s ( **0Re(ë ,F{ ( (  32{ ( tÈ {E { ( s ( **0Rf(ë ,F{ ( ( 32{ ( tÔ {Q { ( s ( **0Rg(ë ,F{ ( ( 32{ ( t× {T { ( s ( **0Rh{n (:3@tº {( 3*{tÕ {R { s ( **0}i{n (:3ktº {( 3U{{œ ,H{ {œ {œ ,4{œ {œ {œ - { { sá (â **0}i{n (:3ktº {( 3U{{œ ,H{ {œ {œ ,4{œ {œ {œ - { { sá (â **0þj{n (:@étº {( @Ð{{œ 9À{ {œ {œ 9©{œ { (ð9Ž {œ {œ 9~ {œ { (ð,d{œ {œ -V{§ (¨ {§ (¨ {§ (©  {§ (©  {     s ( **0¤k{n (:@tº {( @v{{œ ,i{ { {n (:3M t»{œ {œ ,8{œ {œ {œ -"{{ s¶ ( **0Rl{n (:3@tº {( "3*{tØ {U {V s ( **0Am{n (:3/tº {( "3{tØ{U (  **04n(ë ,({ ( ( 3{ ( ( **0FZ(ì ,:{ ( ( 3&{ ( { ( sá (â **0xo(í ,l{ ( (  3X{ ( (ð ,D{§ (¨ {§ (© { (  { (   s! (" **0FZ(ì ,:{ ( ( !3&{ ( { ( sá (â **08p{n (:@§tº {( E$-*{tÊ {G { s# ($ *{tÉ{{œ ,¹{{F { {œ ( s# ($ *0&q{n (:3ftº {(  3P{tÌ {(-+ ,5 {² (³ {I {² (´ s% (& *{n(:@™tº{(  @}{tË {{œ ,a{{œ (-+  ,F {² (³  {H{   {² (´   (  s% (& **0>r{n (:@§tº {( E$0*{tÎ {{œ -ä{K  s' (( *{tÍ{{œ ,¶{{œ {œ - { {J ( s' (( *0„s{n (:@§tº {( E$P*{tÐ {{œ ,ä{ {œ {œ -Ð { {Ms) (* *{tÏ{{œ ,–{ {œ {œ 9ÿÿÿ {œ {œ {œ :fÿÿÿ{  { {L( s) (* *0Rt{n (:3@tº {( 3*{tÑ {N { s+ (, **08u{n (:@§tº {( E$-*{tÓ {P { s- (. *{tÒ{{œ ,¹{{ {O {œ ( s- (. *0EZ(ì ,9{ ( ( 3&{ ( { ( sá (â **03n(ë ,'{ ( ( 3{ ( ( **0Uv(  ,I{× (Ø (ð ,5{§ (¨ {× (Ù {§ (©  s/ (0 **0rw0(Ô sÓ (Ö *(ð ,PY{§ (© ( ,9{Ÿ (  {§ (¨ {Ÿ (¡  (Ò sÓ (Ö **0“x(ë 9„{ ( ( 3p{ ( tÖ {S { ( (¡ ow Ži (,,{Ÿ (  {Ÿ (¡ s1 (2 ***0 y(  9‘s…{3 (€+ 9z{Ÿ (¡ {n (:3`tº {( 3K {{œ ,> {{Ÿ (  {œ { (A+s4 (5 **0D|0(6 (k s‡(B+ ,{7 *r˜poe (# rÀps! z0D0(6 (l s‰(C+ ,{8 *rÔpoe (# røps! z0F€oZ /+ Žiþþ,!(rp(“ o” r{ps! z£*0F(ƒ+ o9 þ, Žiþ+,£*(rôp(“ o” sÒ z0ƒŒõ¥ð{n (:EK?t» {o)*t¼ { { o)(ƒ+þ(é*t½{*tº{{( E$‡é"N->TšpëæÛñ !,7Oj…ï4–D99)уä9_{œ ,:{œ {œ ,({œ   {œ {œ -{ (*rµpsâ zŒõ¥ð(  , {Ê (Ñ þ(ƒ+*rµpsâ z{œ ,³{œ {œ ,¡{œ   {œ {œ 9‡ÿÿÿ {œ   {œ {œ :mÿÿÿ { þ(ƒ+*Œõ¥ð(  , {: (; þ(ƒ+*rµpsâ zr8psâ ztÄ{@  *tÅ{AoY*Ð(] *tØ{V  *tÈ{D {E (i£*tÇ{C  *tÊ{Gþo< *tÉ{Fþo< *Ð(] *Ð(] *tÍ{Jþo= *tÎ{Kþo= *Ð(] *Ð(] *tÑ{Nþo> *tÒ{Oo? (è*tÓ{Po? (è*tÔ{Q  *{œ 9¡ýÿÿ{œ {œ 9Œýÿÿ{œ   {œ {œ :rýÿÿ { þ(ƒ+*Ð(] *tÕ{R  þo@ *tÖ{S  *tÙ{W  *Ð(] *{œ 9ýÿÿ{œ {œ :îüÿÿ{ (ƒ+ (ä% ¤þo^ *{œ 9´üÿÿ{œ {œ 9Ÿüÿÿ{œ   {œ {œ :…üÿÿ{ þ(ƒ+*{œ 9füÿÿ{œ {œ 9Qüÿÿ{œ   {œ {œ 97üÿÿ {œ   {œ {œ :üÿÿ{ þ(ƒ+*Ð(] *(rlp(“ o” sÒ z0Ñ(2 (ª s*0Ñ(ª (2 (ª s*0Ñ(ª (Ü (2 (ª s*0%Ñ(ª (Ü (Ü (2 (ª s*0+Ñ(ª (Ü (Ü (Ü (2 (ª s*0&–(q+-Œõ(A r’ps! z*0&–oB -Œõ(A r’ps! z*0A–ŽioC .!(r¬p(“ o” rÐps! zs‹(D+(E+*¦(d,oD (d+, oD +Ù*0=˜o> ( (ƒ+oB -!(rÚp(“ o” ryps! z*0®„(ƒ+ oi , oj + (ãrp(r p(“ o” (F+(ƒ+ o9 þ, Žiþ+,( £rp(r6p(“ o” (F+*(rnp(“ o” rps! z0/…(ƒ+ o)rp(r˜p(“ o” (F+*0Ñ(4 (ª s*0#Ñ(ˆ(ª (Ü (2 (ª s*žoE ,Œõ(F +Œõ(œ*0Ñ(6 (ª s*r(”(&(&(*Z(!(X(*Z(!(`(*0W‡(i(>+ oC oG .!(rÆp(“ o” rÐps! zs(G+(h(*0n‰(H+ Œ,+ rps  zŽi  Y2# £ð(ƒ+¤XX3Ý (h (h(*0rŠ(ƒ+rîp(rp(“ o” (F+(i /+ Žiþþ,!(r,p(“ o” rZps! z(j(*0[€0(6 (k oC Ži.!(r^p(“ o” rÐps! zs(I+(J+(b(*0d€(K+,sH zoZ oC Ži.!(r’p(“ o” rÐps! zs‘(I+(J+(d(*0I(K+,sH zoY(ƒ+rÀp(râp(“ o” (F+(f(*0i(ƒ+(ƒ+r p(rp(“ o” (F+Ð(] (ƒ+r p(rJp(“ o” (F+(Z(*ns“(L+(„(*0O–(M+,sH zoI ,!(rpp(“ o” r¤ps! z( (t(*0F–(M+,sH zoI , (v(*(r°p(“ o” r¤ps! z0r–(M+,sH z(ƒ+o= ræp(ròp(“ o” (F+oI , (z(*(r°p(“ o” r¤ps! z0{–(M+,sH z(ƒ+o= ræp(ròp(“ o” (F+oI ,!(rpp(“ o” r¤ps! z( (x(*®(N+,sH zow ((|(*0„–(O+,sH zoJ -!(rp(“ o” r4ps! zoK (oé oL , (n(*(r°p(“ o” r4ps! z0’–(O+,sH zoJ -!(rp(“ o” r4ps! zoK (oé oL ,!(rpp(“ o” r4ps! z( (l(Ü (*0”–(O+,sH zoM -!(r@p(“ o” r4ps! zoK (oê oL ,(r(ª (Ü (P+(*(r°p(“ o” r4ps! z0¢–(O+,sH zoM -!(r@p(“ o” r4ps! zoK (oê oL ,!(rpp(“ o” r4ps! z( (p(ª (Ü (P+(Ü (*0b–(=+,sH zow (oL ,!(rpp(“ o” r`ps! z( (~(Ü (*0T–(=+,sH zow (oL , (€(*(r°p(“ o” r`ps! z0¢ÐK(] (ƒ+rlp(r‚p(“ o” (F+ÐK(] (ƒ+r¼p(r‚p(“ o” (F+ÐK(] o)rÒp(rÚp(“ o” (F+(˜(&(*0lÐ(] (ƒ+r&p(r2p(“ o” (F+Ð(] (ƒ+rZp(rdp(“ o” (F+(š(*0T‹(¡  ow s•o? (Q+ (ƒ+rŠp(rp(“ o” (F+(†(*0Œ("(& (`(*0R{œ ,, {œ {œ -{ ((*(+((*Ð(] (œ(((*0Ks—(R+(S+ (N (O (\(^(Ü ( s™ (…+(*rÈp*zoG oG 3 s›(T+**BsþoP *foi , þo9 **Roi , o9 Ži**0…“>o~ (U+ (F sŸ(V+ {Q , {Q {Q - {R *s¥(W+,{S *(ròp(“ o” sÒ z0î•(q+,!(rp(“ o” rBps! z:°oi , o9 + s§(X+(Y+ (Z+ >oT , (U Þ ÞtuŒ,Þþ,({S  o? oV , {S *(H*(H*h#‹0)–:oW ,*rRpoÐ (#sÒ z0)—:ov ,*rzpoÐ (#sÒ zj{X -*(Y+þo^ *Bs©þoP *0 v˜(L ([+ (\+ Œõ¥(è >(Y+oY (r¢p(“ o” (f Œ,*rÎpsZ z0D™(L >o[ (ràp(“ o” (f Œ!,*rpsZ z0Jš(F(]+ 6(Y+o\ (rp(“ o” ŒZ,*rHpsZ z0M›(L ([+ 6(Y+o\ (rp(“ o” ŒZ,*rHp sZ z0\EF{Ü - rNpsâ z {Ü {ó Y(^+  (] (ö (^ s_ *(÷ s_ *0/–/!(rép(“ o” rZps! z(^+*roð Ži-*(Y+þo€ *0o¡(` (a (b (c (d o9 Ži(_+(e (f (L  (I  þ(T*ÆoJ ,oé þoL *oM ,oê þoL **0€¢{X ,U {X {X ,F{X {X {X -2{g {g (ã% ¤%¤þo^ *(rŽp(“ o” rÐps! z0W£{X ,. {X {X -{g 3 þo@ *þoh *(r²p(“ o” rÔps! z0H¥oi ,*s«oj (`+ -rÜpo™ (# rps! z{k *~*0j§{(a+ rp(’ ,(Z*rÁp(’ ,{ *(l ,*oÐ (r"p(“ o” (f sÒ z0¨{(a+ ([ (Y*0L©{o‚YE rNpsâ zs­*(\ s¯*(‰  s±*:sm (b+*0l®{o‚E rjpsâ z(‰  sµ*s· s¹ (]on so (p (q s»*0¯s½(r (c+ s¿*V{Ü -*rzpsâ z0,°{Ü , {Ü {Ü - {ó *rzpsâ zž{­{®os {®X{¯sÄ*N(d+sÅsÄ*0¹{o‚E Sc}—§Ëräpsâ zsÇ sÉ (o(`ot su (v (w (x  sÍ*(gsÏ*(f(esÑ*(_(‰   sÓ*(esÕ*(es×(y (e+sÛ*(_sÝ*0-º{(a+ (_ {o‚þ sß*0W(‰  sá*0˜(\ {(a+ sã*0˜(\ {(a+ så*0¼(i (‰  sç*0=˜(\ {(a+ {o‚3 (J(n*(K(€*09½sé së (\on (_{(a+(‰ sz *–(\{(a+(_(`s{ *0gÀ{o‚E Þ#ròpsâ z(k ( E$ rµpsâ ztÓ {P*tÊ {G þoé *(l(` (d (a (c (b   (I*(\(`s|   (}  (~ (P*0)Ä{o‚ E lr‚ˆ˜¨¸ÈØÞ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMsír ps (f+ o€ sï*sñ*só*sõ*(l (`  (d  (a  (c  (b s÷*sù*sû*sý*sÿ*(h  s *(\{(a+s *s *s *s *s *(m  (  (‚  (ƒ  („   s *(\{(a+s *s *s *s *s *s *s *{o‚þ  s *{(a+s *(‰ (… (†   s! *(Š (‡ (ˆ s# *(‰ ÑiÑs% *(‰ gs' *{o‚Òs) *(‰ hs+ *(‰ Ñs- *(‰ s/ *(‰ s1 *(Š s3 *(Š s5 *s7 *(m  (  (‚  (ƒ  („   s9 *(\(`s| (} (~   s; *s= *(ks? *sA *(\sC *(h  sE *(isG *(j  sI *(isK *sM *(‰ sO *~*~*0Åo˜ sU  sW *"sY *0#Ç{n (:E9{*t¼ { {  (t(6{os*tº{{s[ (g+(2{os*t½  {  {  /+  Žiþþ, rNpsâ z £ð (ƒ+   (q+-,(r~p(“ o”   (‰   r’ps! z *0œÈ{n (:EL*tº s] {(h+*t» { (i+,+ (i+,* oŠ *t¼{ { oŠ 8dÿÿÿ0 WŽi s_ *0¢Ë{n (:EA¥~tº { { se  (g+(2{os*t»{o‹   ,C   {3  (‚+(‚+ (u  (j+  oŒ , * o sa z*t¼{{ oŠ  (w(6{o  sÝŒtu¨,vt¨(d (:+,[o'o)s&(4(ª ssg  (w(6{o  sÞþþ**á0Œ0 GÌoŽ i (Ü+ s] {W /%{W {W {W Yo X(Y +Ò*~*~*0/Î(so s~ (k+(ys‘ þo’ *05Ð(zo“ -s† (l++ (zo” s• *0òÚŒ,+ rps  zo> o˜ o– o— o• (l  (z(à (zo” s• Þ (z(ã &Ü (˜  (™ , (š 8­u,(› +Ps€ s‚  oœ  Þ t  uQ  , E Þþ  (m+(n+(o+(z(à (| Þ (z(ã &Ü (˜ (™ , (š + -*{ {o> (Gu,oç , oð Ži++XŽi.>rŽpoZ þKoÐ ŽiþKoÐ ($r¶ps! z(v(d+sÄož ( *(E` ± » ý  0ƒÛŒ,+ rps  zu ,4 o> (Foç , oð +(p+ (}*uZ , o> (F (}*(}*0(Ý(Y+(d (r(q+ (H+(t*0BÐõ(] (ƒ+r:p(rÄp(“ o” (F+{n{os  *†o &}•}–X}—*0>W{–{—2 rîpsâ z{•{–£†i {–X}–*0¦Þ{–X{—1 r psâ z{• {–( {–XY( {Ž  {Ž YX† Y 2"  X£†¤† X  X3Þ {–X}–*0)–(¡ {•{–o¢ {–X}–*(£ *"(ð*:(¤ }˜*NoZ {˜(’ *:(¥ }™*NoX{™(’ *(¦ *0 .ox (ƒ+rÐp(rRp(“ o” (r+*(§ *0 )(ƒ+rÐp(rtp(“ o” (F+*(¨ *0 .o< (ƒ+rˆp(r’p(“ o” (F+*(¨ *0 .o< (ƒ+rÆp(rÎp(“ o” (F+*:(© }š*0 .{š(ƒ+rp(rp(“ o” (F+*(ª *Box þ(é*(« *0ß(¨ (© ("*(¬ *0ß(¨ (© (&*(­ *.þoV *:(® }›*:{›£*:(¯ }œ*NoZ {œ(’ *:(° }*B{þ(Z+*(± **þox *’(¯ }ž}Ÿ} }¡*0šàoç , oð + Ži{ž.*{¡(p+ s¡{Ÿ(X+ { (Z+ s£ow (D+(s+o? oG oG .* (² (² (D*:(° }¢*B{¢þ(Z+*:(® }£*:{£o³ *:(´ }¤*Noe {¤(’ *(µ **þ(W*:(µ }¥*B{¥þ(L*:(µ }¦*B{¦þ(X*:(¶ }· *B{· þoƒ *:(¸ }¨*B{¨þo¹ *(º *"(_*:(» }©*N{©(r (c+*V(¸ }ª}«*n{ª{«(t+þo¼ *(º *"(_*:(½ }¬*:{¬(t+*{­*{®*{¯*r( }­}®}¯*:(® }°*:{°£*(¾ *"(e*:(¿ }±*N{±(y (e+*:(À }²*B{²þož *r(Á }³}´}µ*0Bá{´{¯o {³oà sË{µ(u+(2 (ª s*:(Á }¶*0Ñ{¶oÄ (4 (ª s*V(Á }·}¸*03â{·oÄ {¸(což (6 (ª s*V(Á }¹}º*0*Ñ{¹{¯oÅ {º(8 (ª s*:(Á }»*N{»ož ($*(¾ *"(e*:(À }¼*B{¼þož *V(Á }½}¾*0:ã{½ož {n {osÙ{¾(u+(P+ s*:(Á }¿*Šr.p{¿{¯oÅ (+(#*r(Æ }À}Á}Â*¦{À{Á{¯oÅ {Â(¼ s&*:(Æ }Ã*N{­{ÃoÇ *V(È }Ä}Å*f{Ä(L{Å(*V(É }Æ}Ç*f{Æ(L{Ç(*V(È }È}É*f{ÈoÊ {É(*(º *"(_*:(» }Ê*N{Ê(r (c+*(Ë *"sâ z:(Ì }Ë*B{Ëþoà *(Ì *6(v+(‚*(Ì *:(w+(Š*(Ì *:(w+(˜*²(Ì }Ì}Í}Î}Ï}Ð*0 Cä{Ì{Í{Î{Ï{Ðsz (U oL ,(€*(~*(Ì *6(v+(„*(Ì *6(v+(†*(Ì *:(w+(š*(Ì *:(w+(`*:(Ì }Ñ*N{ÑoÍ (p*V(Ì }Ò}Ó*0*å{Ò{Ó(O oI ,(v*(t*(Ì *:(w+(^*(Ì *:(w+(X*(Ì *:(v+(œ*(Ì *6(v+(ž*’(Ì }Ô}Õ}Ö}×*0 6æ{Ô{Õ{Ö{×(x+ (V,(r*(p*V(Ì }Ø}Ù*0*å{Ø{Ù(O oI ,(z*(x*(Ì *:(w+(Œ*(Ì *:(w+(*(Ì *6(v+(’*(Ì *:(w+(–*(Ì *:(w+(”*(Ì *:(w+(Ž*:(Ì }Ú*0…(v+ {Ú(y+*:(Ì }Û*0…(v+ {Û(z+*:(Ì }Ü*0…(v+ {Ü({+*:(Ì }Ý*0…(v+ {Ý(|+*:(Ì }Þ*0…(v+ {Þ(}+*:(Ì }ß*0…(v+ {ß(~+*:(Ì }à*0…(v+ {à(+*:(Ì }á*0…(v+ {á(€+*:(Ì }â*0…(v+ {â(+*:(Ì }ã*0…(v+ {ã(‚+*:(Ì }ä*0…(v+ {ä(ƒ+*:(Ì }å*0…(v+ {å(„+*:(Ì }æ*0…(v+ {æ(…+*(Ì *f(w+Ð(] (†+*’(Ì }ç}è}é}ê*0 6æ{ç{è{é{ê(x+ (V,(n*(l*V(Ì }ë}ì*f{ë{ì(Q(|*(Ì *:(w+(Z*:(Ì }í*07ç{í( 3!{ítÓ {P (T(€*{í*(Ì *:(w+(\*:(Ì }î*N{î(L(b*:(Ì }ï*N{ïoÍ (l*:(Ì }ð*N{ðoÊ (d*:(Ì }ñ*N{ñoÍ (l*:(Ì }ò*N{òoÊ (f*(Ì *6(v+(h*:(Ì }ó*N(v+{ó(j*(Î *N(n(esÏ *(Ð *J(p(Ñ (‡+*(¾ *"(e*V(Ò }ô}õ*R{ô{õ(ˆ+*:(Ó }ö*N{ö(q(‰+*:(Ô }÷*:{÷(t*:(Õ }ø*>{ø(u*V(® }ù}ú*03T{ú/ {ù£*(r8p(“ o” sÒ z:( }û*( *0 ( *{û*V(Ô }ü}ý*R{ü{ý(w*r(Ö }þ}ÿ}*ª{ÿ(:+, {( *{þþo‹ **o &*00è(× (Ø (Â(Š+ bX, (‘ +a*05é(× (Ø (× (Ø (Á(‹+, (’ **"sm *V( }}*{*{*&*0Cêþ,: &  ¹y7ž{bcXXX ¹y7ž{(Œ+bcXXX **6(Áoq *0Fëþ,7u¬ ,+&  {{(+,{{þ***þþ*bo– o— o• (l *0Aìþ,2þ,*&  {{(Ž+,{{þ***þþ*0íu¬ ,ou **sx *:( }*{*&**o &*6(Âoq *:(Áos *(Ý *0Tï(Þ (ß o– o— o• (l  (z(à (z(w oà  Þ (z(ã &Ü *0E :(á }*0+ð{{oâ (x (so sã *:(ä }*®rÈpoå ,(y{s‘ oæ þ**(Ý *07ñ(Þ (ß (zo– o— o• (l (w oç *:(è }*04ò(é (ê s„ (k+(y{s‘ o’ *0Aó{o‚ {o‚ {o‚ {o‚ b`b` b`*06W{o‚ 0* ¿0_b{o‚`*(ˆ *0"ô(‰ j!ÿÿÿÿ_ (‰ j  b`*0Íö(‰  /+ Žiþþ9¥rhpŒK ,/u” , ( ¥_oë +oÐ +rp(Å ržp(Å ŽiŒK ,/u” , ( ¥_oë +oÐ +rp(Å sâ z£õ*0‘÷{o‚ EQXrÀpŒK ,/u” , ( ¥_oë +oÐ +rp(Å sâ z(?+*oì (ö 8oÿÿÿ0výŽisEs‘  s’  s”  oí {(‰ oƒsî (ï (ð Žis(+s‘ þoì *{*{*{ *r( }}} *(ñ *N{(‰ o„*:(ò } *N{ (ó (+*0Qÿoô -{õ -*(‘+sö (÷ * {ø (ù (ú {ø (û +¯0 (ü (’+*0Loý -{õ -*sþ (ÿ * { (G { (H (ú +´0 (ü (“+*Fs þ(”+*>s (•+*:*>*6*0*¢Ð\(] o ,r£p6ov ,***0;–(  -!(rìp(“ o” rŠps! zr£p6þov *:( } *Z{ s þo *:( } *Z{ s þo  *07Ì ~ús  o  ,*s& ~ús  o  *0 (:EAg¨tº  ¹y7ž{o  bcXXX ¹y7ž{o¡bcXXX *t»  ¹y7ž{(–+bcXXX *t¼  ¹y7ž {(—+bcXXX ¹y7ž {(–+bcXXX *t½ ¹y7ž{bcXXX ¹y7ž{(˜+bcXXX *0þ(:ECj©tº tº { {  o£,{{o **t»t»{{þ(™+*t¼t¼ { {(™+,{ {þ(š+**t½ t½  { {(›+, { {þ**0  ( E$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *tÄ  ¹y7ž{@(˜+bcXXX *tÅ  ¹y7ž{A(œ+bcXXX *tÆ  ¹y7ž {B(œ+bcXXX *tÇ ¹y7ž{C(˜+bcXXX *tÈ ¹y7ž{EbcXXX ¹y7ž{D(˜+bcXXX *tÉ ¹y7ž{F(+bcXXX *tÊ ¹y7ž{G(+bcXXX *tË ¹y7ž{H(+bcXXX *tÌ  ¹y7ž {I(+bcXXX *tÍ  ¹y7ž {J(ž+bcXXX *tÎ  ¹y7ž {K(ž+bcXXX *tÏ  ¹y7ž {L(ž+bcXXX *tÐ  ¹y7ž {M(ž+bcXXX *tÑ ¹y7ž{N(Ÿ+bcXXX *tÒ ¹y7ž{O( +bcXXX *tÓ ¹y7ž{P( +bcXXX *tÔ ¹y7ž{Q(˜+bcXXX *tÕ ¹y7ž{R(˜+bcXXX *tÖ ¹y7ž{S(˜+bcXXX * * * * * *t× ¹y7ž{T(˜+bcXXX * * * *! *tØ" ¹y7ž{V(˜+bcXXX ¹y7ž{U(¡+bcXXX *tÙ# ¹y7ž{W(˜+bcXXX *0 ( E$%Ho–ÏöDk’¹à.U|£ÊñW*tÄ tÄ {@{@þ(›+*tÅ tÅ {A {Aþ(¢+*tÆtÆ{B{Bþ(¢+*tÇtÇ{C{Cþ(›+*tÈtÈ {D {D(›+,{E {Eþ**tÉ tÉ  {F {Fþ(£+*tÊ tÊ  {G {Gþ(£+*tËtË{H{Hþ(£+*tÌtÌ{I{Iþ(£+*tÍtÍ{J{Jþ(¤+*tÎtÎ{K{Kþ(¤+*tÏtÏ{L{Lþ(¤+*tÐtÐ{M{Mþ(¤+*tÑtÑ{N{Nþ(¥+*tÒtÒ{O{Oþ(¦+*tÓtÓ{P{Pþ(¦+*tÔ tÔ! {Q!{Qþ(›+*tÕ"tÕ#"{R#{Rþ(›+*tÖ$tÖ%${S%{Sþ(›+*t×&t×'&{T'{Tþ(›+*tØ(tØ)({U){U(§+,({V){Vþ(›+**tÙ*tÙ+*{W+{Wþ(›+*0. o (¢ (£ rp(D (Z (^ (Q *n, oe +oZ (D *05[{n (:3#t¼ { { s¶ ( **®,r›ps (¨+o (D *oX(D *®,r›ps (©+o (D *oZ (D *Â,r›ps (ª+o (D *o> oZ (D *®,r›ps («+o (D *oZ (D *®,r›ps (¬+o (D *oZ (D *"s¿ *0 þ9{ý {ý @í(:E7]štº tº { {o¤,{ {þ(­+**t»t»{{þ(®+*t¼t¼{{(®+,{{þ(¯+**t½t½ { {(°+,{ {þ****0 ( E$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*tÄ tÄ {@{@þ(°+*tÅ tÅ {A {Aþ(±+*tÆtÆ{B{Bþ(±+*tÇtÇ{C{Cþ(°+*tÈtÈ {D {D(°+,{E {Eþ**tÉ tÉ  {F {Fþ(²+*tÊ tÊ  {G {Gþ(²+*tËtË{H{Hþ(²+*tÌtÌ{I{Iþ(²+*tÍtÍ{J{Jþ(³+*tÎtÎ{K{Kþ(³+*tÏtÏ{L{Lþ(³+*tÐtÐ{M{Mþ(³+*tÑtÑ{N{Nþ(´+*tÒtÒ{O{Oþ(µ+*tÓtÓ{P{Pþ(µ+*tÔ tÔ! {Q!{Qþ(°+*tÕ"tÕ#"{R#{Rþ(°+*tÖ$tÖ%${S%{Sþ(°+*t×&t×'&{T'{Tþ(°+*tØ(tØ)({U){U(¶+,({V){Vþ(°+**tÙ*tÙ+*{W+{Wþ(°+*0µ!€ù s €úг(] oj € ÐO(] €(åoi , (åoj +(å€ÐK(] o˜ €sQ €sS € si s € s{ s €*:( }*B{þo *( *vrp(E (Q (Q (^ *( *6o'(D *(£ *"(­ *:(ë }*0w{0(Ô sÓ (Ö *(­  ,Z{Y(³ {§ (© ož ,9{Ÿ (  {§ (¨ {Ÿ (¡  (Ò sÓ (Ö **( *"sâ z(  *0 (! (" (A*(¬ *0ß(¨ (© (&*:s# (·+*&(¸+*Bs$ (¹+*Bsá (º+*Bsã (»+*6så (¼+*6s% (½+*:sé (¾+*:së (¿+*>sí (¿+*6(M (¸+*6(N (¸+*6(M (¹+*6(N (¹+*:(& }*0{oÔ *:(' }*0{o( *V(2 }) }* *j{) {* oÐ þo+ *:(, }- *0 &sÓ sÕ s× {- s. s/ *(! **r(0 }1 }2 }3 *z{2 sÝ {3 {1 s4 *:(' } *0{ o( *:(' }!*>{!o5 *(6 **(7 *"sâ z(! **(! **:(! }"*:{"o8 *0û,{$,++ X {#- {%þ+,7,1 {Ž  Y2 o9 &XX3é++,${$,{: o9 &+ + -o9 &{#- {%+,E,? {Ž  Y2%{%,0+ o9 &XX3Û++*0<W / 0(; X+x3a+A(;  YX (< þo= *0,,( {Ž  Y  2 o9 & X X3í**0,,( {Ž  Y  20o9 & X X3í**>, (ñ **0íXYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (ï X  !6"\i(À+&^\+Ñ{#(ó *0œXYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(ï X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(À+&][8vÿÿÿ{#(ó * *v££(gþ(x*~r*–o> ,+o? ,+o@ þ*®(ù , oi +,oj (ø þoV **0A(ú , o9 sA *oD ,+Û(rp(“ o” sÒ z *0 :ob (û  (B r£p %¤( þoC *0'(û  (D £ s þ(÷ *0E(û  (D £ (û  (D £s# þ(÷ *0)(û  (D £ s% þ(÷ *F00 9þþ**0öoŠ 2(r@p(“ o” sE zoF  YE#YEt+YEJ-YE&0YE*( X8wÿÿÿ( X8`ÿÿÿ+(À ( X8Cÿÿÿ(rzp(“ o” sE z (À ( X8 ÿÿÿ0A2(r¼p(“ o” sE zoF ( , X+Á*0b2(r¼p(“ o” sE zoF ( ,X( sG **YEsG *XsG *0JoF .YE sH *X(  (I (J sG (K sH *0l2(rúp(“ o” sE zoF ( , X+Á*YE( sL *X( sL *~s*0 (  (M (N (O (N (P (N (Q  3+F, (R +: Y( {Ž YXoŒ ( ¥_(S ( (R 9z{T (J {T (I , (R +T X( Y( {Ž  {Ž     YXoŒ ( ¥_(S ( (R +sU *~t*09}{#-3, {%+,oŠ (ò +oŠ (ñ +(W{#,/, {%+,oŠ (ò *oŠ (ñ **(ñ *0ü! %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þ„oÐ (r2 p(“ o” (f sE zs' þ(þ *s) þ(þ *þ( *s+ þ(þ *s- þ(þ *þ(ÿ *s/ þ(þ *s1 þ(þ *s3 þ(þ *X  oF LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(rd p(“ o” rœ p(f sE z s5 þ(þ * s7 þ(þ * s9 þ(þ * s; þ(þ *s= þ(þ *s? þ(þ *sA þ(þ *sC þ(þ *Xþ(Á+*05#,! {W -sE þ(þ *þ( *0 ‚&s  oŠ (  (  (X  (Y  (Z oF ,%{W -sG þ(þ *þ( *0Ô((2+:Á(4+:®(6+:›(Â+:ˆ(8+:v(3+-b(5+-P(7+->(9+-/(Ã+-(r  p(“ o” sE z¥– n*¥Š*¥‰ n*¥ˆ n*¥†n*¥d*¥—j*¥Kj*¥‡j*¥…j*0Œ*(2+:g(4+-L(6+-4(8+-(Â+-+T¥— Œ–+D¥d ŒŠ+4¥K Œ‰+$¥‡ÑŒˆ+¥…ÒŒ† ( *0 ‚-(0+:^(/+:¨(Ä+-(ræ p(“ o” sE z¥# ([ ,9 {Ž c/+c/+þKoÐ +r!p(Å ( ¥_(\ s] (^ s_ 8[¥‚([ ,9 {Ž c/+c/+þKoÐ +r!p(Å ( ¥_(` "€þ,+ "€eþ,+(a þ"þþs_ 8±¥ƒ([ ,9 {Ž c/+c/+þKoÐ +r!p(Å ( ¥_(b #ðþ,+#ðeþ,+(c þ#þþs_ (d  (e  (f  {$  ,"  ,{: ([  (Å +    ( Xsg *0«.X oF LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(rd p(“ o” rœ p(f sE z( (ô Xsg *X  oF XYEldYE^iYEPoYEBuYE4xYE&(rd p(“ o” r!p(f sE z( (ô  Xsg *X  oF XYEldYE^iYEPoYEBuYE4xYE&(rd p(“ o” r!p(f sE z( (ô  Xsg *X  oF XYEldYE^iYEPoYEBuYE4xYE&(rd p(“ o” r!p(f sE z( (ô  Xsg *0 Õ0{$ 9„ {: +YEk{: r$!p Œ„,4u”,( ¥_oë +oÐ +rp(Å r„!p(Å sâ z0+ (" ,Q  {ì {í {î {ï {Ž  {ñ {ò {ó {ô {õs!+  {%,H {ì {í {î {ï {ñ {ò {ó {ô {õs!+  ,R  {ì {í {î {ï {ð {ñ {ò {Ž  {ô {õs!+  ,  (Å++rÍp(WXsg *0 í 3s  oŠ (  (  (X  (Y  (Z oF 9‡  {W -S{h ,,  {i   {h   ¥K(  sj +R(rˆ!p(“ o” sE   z {W {Ž  (  sj +   sj (k (l  9‡  {W -S {h ,,   {i   {h  ¥K( sj +R(r°!p(“ o” sE   z {W {Ž   (  sj +    sj (k (l  %YE"AYEßEYET{¢LYE|£OYE!UYEßXYEªaYEØI™Þ<`iYEElYEKnYE&sYEj§éxYE(r2 p(“ o” sE   z {h ,Ù {i  {h  ( (ô Xsg * {h ,› {i  {h  ¥E( Xsg * {h 9[ÿÿÿ {i  {h  (Æ+om on &Xsg * {h 9ÿÿÿ {i {h  8;ÿÿÿ {h 9òþÿÿ {i  {h XoF XYEndYEiYEqoYEDuYE6xYE((rd p(“ o” rà!p(f sE   z ( (ô Xsg * ( (õ Xsg * {h 9þÿÿ {i {h  8(þÿÿ {h 9ßýÿÿ {i  {h XoF XYEndYEiYEqoYEDuYE6xYE((rd p(“ o” rZp(f sE   z ( (ô Xsg * ( (õ Xsg * {h 9óüÿÿ {i  {h  (3+-: (5+-1 (7+-( (9+- (Ã+- ( (õ + ( (ô Xsg * {h 9nüÿÿ {h {h 9Yüÿÿ{h {i  {i {h Œö(ý  (ý (Ç+on &Xsg * {h 9ýûÿÿ {i  {h  ¥,rä!p+rî!p( Xsg * {h 9­ûÿÿ {i  {h  ¥„([ ( Xsg * {h 9hûÿÿ {i {h  8pþÿÿ {h 9Aûÿÿ {i  {h  ( * {h 9 ûÿÿ {i {h  +Ç {h 9æúÿÿ {i {h  +£ {h 9Âúÿÿ {i {h  8äúÿÿ {h 9›úÿÿ {i  {h  ( * {h 9gúÿÿ {i  {h  ,  oÐ +rÍp( Xsg * {h 9úÿÿ {i {h  86üÿÿ {h 9óùÿÿ {i  {h  ¥#rú!p( ¥_(\ {$,1s] (^ ,{: ([ (Å +( Xsg * {h 9Tùÿÿ {i {h  8þÿÿ {h 9-ùÿÿ {i {h  8çýÿÿ {h 9ùÿÿ {i {h  8Àýÿÿ {h 9ßøÿÿ {i  {h  ( * o9 &Xsg *0 ý52+oF %3 Xþþ+,oo Œ÷*(p ,CoF o9 &XoF o9 &X8~ÿÿÿoF %YE+o9 &X8=ÿÿÿX(È+ (q (r 8ÿÿÿ0 H9os (t (u (v (w     (É+*0 ¡;sx 2+oF %3 Xþþ+,(Ê+(Ë+*(p ,X+ŸoF %YEX8pÿÿÿXþ( *0S={y rþ!p(’ ,sz Œm(Ì+*oŠ   ({ Ðø(] (Í+(Ì+*{#*{$*{%*"}#*"}$*"}%*r( }#}$}%*V(| }&}'*Z{&{'þ(Î+*²(| }(})}*}+},*0 4{*{,{((~ (~ {+{)Xþ(Á+*²(| }-}.}/}0}1*0 -{0{-{.{/{1s! þ(÷ *’(| }2}3}4}5*0 ){4{2(~ {5{3Xþ(Á+*r( }6}7}8*0 ${6{8(~ {7Xþ(Á+*r( }9}:};*0 ${9{;(~ {:Xþ(Á+*r( }<}=}>*0 ${<{>(~ {=Xþ(Á+*r( }?}@}A*0 ${?{A(~ {@Xþ(Á+*r( }B}C}D*0 ${B{D(~ {CXþ(Á+*r( }E}F}G*0 ${E{G(~ {FXþ(Á+*r( }H}I}J*0 ${H{J(~ {IXþ(Á+*r( }K}L}M*0 ${K{L(~ {MXþ(Á+*r( }N}O}P*0 ${N{O(~ {PXþ(Á+*r( }Q}R}S*0 ${Q{R(~ {SXþ(Á+*r( }T}U}V*0 ${T{U(~ {VXþ(Á+*r( }W}X}Y*0 ${W{Y(~ {XXþ(Á+*r( }Z}[}\*0 ${Z{\(~ {[Xþ(Á+*r( }]}^}_*0 ${]{_(~ {^Xþ(Á+*r( }`}a}b*0 ${`{b(~ {aXþ(Á+*²( }c}d}e}f}g*0 .{c{d{e{f{g(~ þ( *Ò( }h}i}j}k}l}m*0 4{h{j{k{l{m{i(~ þ( *:(7 }€ *0 5?{€ o (‚ (ƒ ( ( þoá *r(„ }… }† }‡ *0 {… {† {‡ þ(Ï+*¾Ð³(] oj €r( €ss €t*0<@r"poT o> Ð(] (q+ Þ t  Þ*/0 0"Boˆ (‰ Þt (Š Þ* *>/£K**0D{x {w {v Ži3\ X/(kr"ps! zKY2 (Q ¤KXX3à+ ¤KX (€ *0WE{x {w {v - r""psâ zY£Kþ 3Y+Y(€  s‹ *0MF{x {w {v 3*£K £Ke¤KX(€  sŒ ( *0XHX0 XsŽ *(T  ,, { ( { (‘ Y+µXsŽ *0 øP!!u­-q!u®:Àt¯ {æ {è {ç (V (’ (“ (” (• (ósŽ 8Zt­  {Þ  {ß  {Ý  o¦   (ï oŠ    (U 8ÿt®{ã {á{ä {å{â {à ,+""u§:"u¦:6(V (’ (“  (” (• X (V (” (’ (“ (•   (Ø(ñ XXsŽ 8t§{Ö(V (’  (“ (” (•  YX (V (” (’ (“ (•   (Ü(ñXsŽ 8bt¦{Õ(V (’  (“ (” (• XY X>°(R  (V (” (’ (“ (• (S (– (—  ,*   (Ü(ñXsŽ 8€   (Ú(ñXXsŽ +V (V (” (’ (“ (•   (Ú(ñXXsŽ (• (” (’ (“ sŽ *0.R0*   (Ð+(€  (V (” *Z(˜ oŠ Xs™ *‚ sš rJ"p(˜ (˜ s™ *0›T  u­:× u®:é  u®- u¯:‹rN"p ;s=zt® {ã {á {â (Z  ,+(› (œ rß"p(X (› (œ (œ 8@ÿÿÿt¯{è8ÿÿÿt­{Þo¦ (X *t® {åu§9ÿþÿÿ{åt§{ð9çþÿÿ{ã {á {Ö (Z (› (œ  X(Ñ+(› (œ  X8eþÿÿ02U  (ó (Z  (› (Ò+(+(Ñ *0– sš o8 o *0 `V  u®-2 u¯:üt­{Þ o¦ o oŠ X*t® {åu§,[{åt§ {ã{á {Ö(Ó+X(Ô+X8Qÿÿÿ{ã{á{â(Ó+,+rß"po rß"poŠ X8ëþÿÿt¯  {æ  {è {ç  (Õ+&(Ó+ (Õ+&*0Y   (Ó+&*0W[{Ÿ ,D {Ÿ {Ÿ ,5{Ÿ {Ÿ {Ÿ -!{  (G {  (G s¡ *rã"psâ z0o_,j(Ö+ ( 3Mt* {êrù"p(’ ,{ë (×+(¢ *{êr#p(’ ,{ë{£ -*r#psâ z*~ÿ*~*0Bas†  (Ø+(`  rW#p(ïr[#p(ï(Ø(B (Ø(B *0Bcsˆ  (Ù+(`  rW#p(ïr[#p(ï(Ø(B (Ø(B *0@r‘p(ïr_#p(ï(] r›p(ï(Ø(B (Ø(B *0@rc#p(ïr_#p(ï(] ri#p(ï(Ø(B (Ø(B *Òr‘p(ï(` r›p(ï(Ø(B (Ø(B *0œ'YE©"YEYE~\YEk(¤ ,Uid[ ] i [ ] i ] ro#pþKoÐ (Å þKoÐ (Å þKoÐ (Å *þ„oÐ *rs#p*ry#p*:jÿÿÿr#p*9Qÿÿÿr…#p*òoŠ / (¥ þ+,oF "þþ+, X+Ç*0<doŠ 3(Ò+ (+(Ñ *XoF (h (˜ +Ä0e  r‹#p(Å r‹#p(Å *j{W 1{W Y(Y **"s¦ *0 %(Œ (Ö+Œ(p *0 !(Ö+Œ(p *0 •k0+{W þþ,r#p(ï Ýf 9 o§ ,r#p(ï ÝC o¨  ob oi ,,oj Ð(] oi , oj + (q++, oÐ (ï(© 8] ob Ð((] oY ,þ, Žiþ+,8$£(Ú+oK(’ ,+oŠ þþ,8çrW#poª r[#po« /+þ,+ Xþþ,8Ÿ0rp+#Y(   {Ž   YXoŒ  XoŠ 2rp+0X(   {Ž  oŠ Y    YXoŒ  X(  Y(  {Ž  {Ž     YXoŒ  s˜ (Û+uƒ9tƒ{¬ uE,(ï+Y(o (l  (ï (ï(Ø(B (Ø(B (© Þ tÞ+>t„{­ r—#po% (Å rá#p(Å (ï(© -Y (w +{®  o¯  ÞIY (w  Þ/t(l rå#po% (Å (ï Þ*A4XmÅ cd/0®nsš  {Ÿ 9‘ {Ÿ {Ÿ -{  (G s° þ(Ü+* rõ#p(ïs² (Ý+s´ (Þ+rp(ï(] r9p(ï(Ø(B (Ø(B * +œÞ,/rõ#p(ïr9p(ï(Ø(B (Ø(B **>s° **sµ **s¶ *"s· *0 ysª  s¬  ( E¦é( E”o^rN"p ws=zt* {ë{£ -{ê (l  (ï*{ë{ê (l  (ï(ß+(Ú(B þþo¸ þo¹ *t+{ì{í(l oZ {£ -  (ï* (ï(ß+(Ú(B þþo¸ þo¹ *t({è(l rù#poZ (Å rá#p(Å  (ï( 3(H **t,{î9íob uE ,  (l  (k   (ï*u=  9¬   oº   YE6µr$p þKoÐ (Å   (ï(¢ (£ (f * o»  o¼  s® (à+(á+{ò(â+-+.r$pþKoÐ (Å   (ï(£ (f * o½  o½  o¼  o¼  s² s´ (á+{ò(ã+-þ+,+Yr$pþKoÐ (Å   (ïr!$pþKoÐ (Å   (ï(£ (£ (g *ob oi ,eoj Ð(] oi , oj +(q+,+3oj ÐŽ(] oi , oj +(q++9Ûob oj Ð(] oi , oj +(q+,r1$p+r9$p ¥oÖ  (ä+sÄ (å+{ò [X(æ+ (ï(e (Ú(B þþo¸ o¹ Þu ,oð &Ü&Ü*u9Þ{õ,sÆ ob o¾ (r+þ+9ŽoÖ (à+sÈ (å+{ò[X(æ+rA$p(ï(e (Ú(B þþo¸ o¹ Þu ,oð &Ü&Ü*rI$p(ï( 3(H **(Ž (Áo“ ,ob (N +,(H *(l (ï{ô,g o¿   [  sÊ (À  Ži-+  þþ,* sÌ  (I+(ç+(d (Ú(B **(l (a *(l (b *t'{ç!þþrp(ï(à+!(è+(] (r *t){é(é+(ê+(c *t*  ()+- ob (æ +9Éøÿÿ{ë{ê rù"p(’ ,[(×+""(Á "( ##(n (à+(ë+(ì+{òY(í+(£ (e *(l r¯p(ï*¢bmdÑ0 G{ (î+sà {ós]   {ñ(ï+Œõ(p *0Â|9¶(0+:2(/+:J(Ä+:(9+:ï(8+:Ä(6+:£(7+:x(4+:M(5+:"(2+:÷(3+:Ì(Â+:¡(Ã+:w(.+-[(1+-0oÐ Þ#t rU$po% (Å rá#p(Å Þ*¥„ r„!p(h (Å r„!p(Å *¥,rä!p*rî!p*¥– þ–oÐ r$p(Å *¥—þ—oÐ rZp(Å *¥†{î(Ä r‡$p(Å *¥…{î(Å rp(Å *¥ˆ{î(Æ r$p(Å *¥‡{î(Ç r“$p(Å *¥‰  {î(È r—$p(Å *¥K  {î(É *¥d  {î(Ê r›$p(Å *¥Š  {î(Ë r!p(Å *¥#  rŸ$p{î(\ r£$p(Å *¥‚(a , r§$p8µ(Ì , r¯$p8¡(Í , rÃ$p8{ìoŠ 2{ìoF gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(Î   {î(É rÕ$p(Å +{ì{î(` rp(Å *¥ƒ{ì{î(b (c ,r§$p*(Ï ,r¯$p*(Ð ,rÃ$p*{ìoF g3sØ (_+, rÕ$p(Å **rÛ$p*¦ °#z{ð-*{ðsÚ (W *r{ísÜ (z (ð+*VsÞ (z ([ *0}(" (Œ (ñ+({ *0}(" (Œ (ñ+(| *V(Œ (ñ+(| *&s *r( }v}w}x*{v*{w*{x*&*(Ñ *0 R~(Ò (Ó (ï rå$p(ï(Ø(B r_#p(ï(Ø(B (Ú(B *(Ô *0 i(Õ (Ö (ï rå$p(ï(Ø(B , {® + ré$p(ïr_#p(ï(Ø(B (Ø(B *^s‹ €~s‹ €*:( }}*~~**( þ*~**( þ*{}*0Wþ, ( 3 * **6(Áo‘ *0.€þ,uñ ,{} {} þ**þþ*0*,þ,þ,{} {} þ**þþ*0uñ ,o” **:( }× *N{× {W þþ*V(Ø }ƒ}„*0 1{ƒob {„ 4{ƒ( þoC *²(Ù }…}†}‡}ˆ}‰*0 *{…{†{‡{ˆ{‰þ(n *:(Ú }Û *V{Û ŒjþoÜ *:(Ý }Þ *0ƒ{Þ oß sà *:(á }â *0…{â oã sä *:(Ú }å *V{å ŒjþoÜ *:(Ý }æ *0ƒ{æ oß sç *:(á }è *0…{è oã sé *:(ê }ë *V{ë (  þoì *²(Ù }‘}’}“}”}•*0 *{‘{’{“{”{•þ(n *²(í }–}—}˜}™}š*0 '{–{—{˜{™{š(r *r(î }›}œ}*Ê{{œX3*{›oï ŒXsð (ñ *Ò(î }ž}Ÿ} }¡}¢}£*0W{£{¡{ŸX2+{¢{ Xþþ,*{ž{£oò ŒXsð (ñ *0L(ó }¤}¥}¦}§}¨}©}ª}« }¬*0 ^{§{¦(à+{¨{©{ª{«{¬(s {¥(á+{¬{¤{ò(â+(e *V(ô }­}®*Š{®{­X2*Xsõ (ö *:(÷ }¯*B{¯þoÜ *:(ø }°*0ƒ{°oß s¶ *:(ù }±*0…{±oã s¸ *:(Ú }ú *V{ú ŒjþoÜ *:(Ý }û *0ƒ{û oß sü *:(á }ý *0…{ý oã sþ *r(Ú }ÿ } } *0 †{ r1$p(’ ,Œj,++, þjob oi +,: þjob oj Ц(] oi , oj +(q++,s{ÿ sº {  þjob rí$po Œjoc  þjob r³po Œjoc s þ(ò+*{ÿ s { þ(ó+*:( }¸*ž{¸oñ ,{¸oó s ( **(´ *Joe rõ$p(’ *:( }¹*ž{¹oñ ,{¹oó s ( ***o &*v¥oZ ¥oZ (” *ò(  }º}»}¼}½}¾}¿}À*0{‡oZ {º{»{¼{½{¾{ÀoZ {¿ob  4{¿( oC (n (© Þ t  Þs  *ai :(Ú }  *V{  ŒjþoÜ *:(Ý }  *0ƒ{  oß s  *:(á } *0…{ oã s *r( } } } *0 ;ˆ(  (  { (l { s { (ô+s *:( } *N{ Œj(` *( *F( ,*-þ*:( }È*:{È(y *:( }É*:{É(y *:( }Ê*:{Ê(y *–o> ,+o? ,+o@ þ*î(à ,1oi ,oi ,oj oj þoV **þoV **~û*~ü*~ý*~þ*0N‰(d,C(l Ži12Ðc(] oi , oj +£˜oYþ(á ***2sè €Ì*:( }Ë*sö **(õ þ*"sø **(õ þ*sû **(õ þ*sý **(õ þ*~Ì**(õ þ*sÿ **(õ þ*{Ë*>(è }Ó*{Ó*Z(è }Ô}Õ*{Ô*{Õ*>(è }Ö*{Ö*>(è }×*{×*>(è }Ø*{Ø*:( }Ù*2{Ù{Ó*:( }Ú*2{Ú{Ô*2{Ú{Õ*:( }Û*2{Û{Ö*:( }Ü*2{Ü{×*:( }Ý*2{Ý{Ø*2s €ß*:( }Þ*s **( þ*s **( þ*s! **( þ*"s# **( þ*"s& **( þ*~ß**( þ*s) **( þ*{Þ*>( }ç*{ç*>( }è*{è*>( }é*{é*Z( }ê}ë*{ê*{ë*Z( }ì}í*{ì*{í*>( }î*{î*:( }ï*2{ï{ç*:( }ð*2{ð{è*:( }ñ*2{ñ{é*:( }ò*2{ò{ê*2{ò{ë*:( }ó*2{ó{ì*2{ó{í*:( }ô*2{ô{î*0Ø‹(6 (m,4(6 (n (6 (‡ s> (õ+ (ö+( *(6 (c9}(6 (k Œ°,+ rps  zŽi ±  Y25£oZ oc s ¤±XX3Ë(ö+( *( *0œ9ob (b,(z(÷+( *(e,( *(6 (d,F(6 (ƒ ( ( oZs< (õ+ oX(ö+( *(9 *( *0_ýŒõ ,(: *Ðõ(] Ð(] (á ,r§p( ( *Ð(] (á ,( *( *( *:oZ s *( *:oZ s *0<Ž u®-u¯-t­{Ý*t®{à*t¯ {è+Ä0<Ž u®-u¯-t­{ß*t®{ä*t¯ {è+Ħ(@ (A ,+(@ (A (ñ**(ï**(ï**(ï**(ï**(ï*~ö*0Cu­,9t­ {Ý,*{ß,"{Þ uE , rp(’ ***>(Ü(B *~÷*~ø*~ù*~ú**(ó*‚(I ,*(I ,*þ(ø+*:(Ø(B *>(Ú(B *>(Ú(B *>(Ú(B *Bsp þ(P *Bsr þ(P *Bst þ(P *08{! ,. {! {" o¹ (Ú(B +Ê*0@’{! ,2 {! {! - {" *{! {"  (X *(H *6sv (Y *6sx (Y *6sz (Y *:s| (Y *¾rõ#p(ïr9p(ï(Ø(B (Ø(B *frp(ï(] (^ *0B“{! ,4 {! {! - {" *{! {" s~ (ù+*(H *09”,) {3 rp(ïo# (Ú(B *r§p(ï*0Fr‘p(ïr_#p(ï(ú+(] r›p(ï(Ø(B (Ø(B *¾r‘p(ïr›p(ï(Ø(B (Ø(B *¾rW#p(ïr[#p(ï(Ø(B (Ø(B *0‚•o$ ,r#p(ï(¢ (£ *o% ,N { (G { (H 0r#p(ï(¢ (£ * o# Y(û+(£ *(¢ *0™   (û+*Bs& (ü+*( *>(Ú(B *( *>(Ú(B *( *>(Ú(B *( *>(Ú(B *( *>(Ü(B *( *>(Ü(B *( *>(Ü(B *(' *frp(ï(Ø(B *(' *fr_#p(ï(Ø(B *(' **:(' }õ*N{õ(Ø(B *( *.þ(U *( **0Ärp(ï€ösh €÷sj €øsl €ùsn €úÐÉ(] €ü(ã oi , (ã oj +(ã €ûг(] €þ(å oi , (å oj +(å €ýrÛ$p(ï€ÿr#%p(ï€*(( **~*~*0.š (… o) ,*sµŒ¢ (… o* *0$š(… (à (‡  Þ (… (ã &Ü*  V!(ˆ (Ç+*V!(ˆ (Ç+*:j(ˆ (Ç+*6(ˆ (Ç+*00› († o+ ,*(Î Œ¢ († o, *0$š(† (à (  Þ († (ã &Ü*  "(Ž *6(Ž (Ç+*0€ €Ë~Ë /(kr"ps! z¡  Y  2 (÷ ¤¡ X X3é€Ìs´€Ís´€Îs- €s. €*¶- !*]- Z[+áZ[(’ Z*–-*]- Z[+éZ[(“ Z*0/œ  {ÉY 2{Ê£KbX X X3å*&/**&/*** * ÿÿÿ*.!*.!ÿÿÿ*.!ÿÿÿ* ÿÿÿ* ÿ** ÿÿÿ* ÿÿÿ* ÿÿ**0*ž3+£Kþþ,X*Y+Ù0W{Ê{ÉY(¥  ( ****0už/+  /!(ý+s¡ {ʤK(¦ *(ý+s¡  +#{Ê (“ [ ]¤KX 2Ù(¦ *0eŸ!/ !+ (ý+s¡  +,{Ê!(’ [!]i¤KX 2Ð(¦ *0Iœ{É3 {Ê£K* {ÉY  0{Ê£K ZX Y Y3á*~*~*0L {ÉX (ý+s¡  {ÉY 2${ÊX{Ê£K¤KX X3Ü*0] {ÉY0(® *{ÉY (ý+s¡  {ÉY 2${Ê{ÊX£K¤KX X3Ü*0oW/i{É/{Ê£K+{É/{Ê£K+XX {Ê ÿÿÿ_¤KXd+’*05¯{É{É(• X (ý+s¡ (± (¦ *0¼,<¬{É/{Ê£K+{É/{Ê£K+YX 12{Ê ÿÿÿ_¤KXd8ˆÿÿÿ X {Ê ÿÿÿ_¤KXdY8Lÿÿÿþþ*0;¯{É{É(•  (ý+s¡ (³ ,(ª *(¦ *.{Éþ*.{Éþ*r{É3{Ê£Kþ**š3*£K£K3 Y+Ý*®{É{É3{Ê{Ê{ÉY(¸ **0T,3*/+ Y£K /+ Y£K 3Y+´/**0K,{ÉX{ÉX/*{ÉX{ÉX1*  {Ê{Ê{ÉXY(º *â3*£K£K3 Y+Ü£K£K/**î{É{É/*{É{É1*{Ê{Ê{ÉY(¼ *2(½ þ*2(½ þ*>(½ þþ*>(½ þþ*>(½ 3**>(½ 3**0@¡£KjX d !ÿÿÿ_i ¤K!1 X+Á*0]¢{ÉX (ý+s¡ j {ÉY 2+{Ê{Ê£KjZ(Ä X X3Õ(¦ *0D£(ý+s¡ jjZ {Ê!ÿÿÿ_i¤K{Êdi¤K(¦ *0Fß!18{Ê£KjX {Ê!ÿÿÿ_i¤KdX+»*0™¤{É X (ý+s¡ j !Y2S{Ê£KjX{Ê£Kj ZX{Ê!ÿÿÿ_i¤KdXX3­(Ç (¦ *0è¥{É{ÉX (ý+s¡ {Ê {Ê {Ê{ÉY?™ £Kj!  {ÉY   2P £Kj  £KjX ZX   !ÿÿÿ_i¤K d X  X   X3° (Ç XX@gÿÿÿ(¦ *0r¦{Éþ {Éþ ,+,{Ê£K{Ê£K(Æ *,{Ê£K(È *,{Ê£K(È *(É *0 z§(“ [[ /(kr"ps! zK  Y 2   Z(“ ¤K X  X3à s *~*þX(Ì Ži/(Ì X£K{ þ+, X+Í(Ì £K*0)W (Ì £K{ 2 r)%psâ z(Í *~*~*~*~*~*~*Ž-*(Ñ Y£K_,*Y+Ý0 W (Õ *Â{É-*{ÉYZ{Ê{ÉY£K(Ö X*0º¨{XY [ [ .f{É/{Ê£K+ {É/{Ê£K+]Y _c_b`(Ï {£K_*{É/{Ê£K+ ] _c(Ï {£K_*0 JW{3+þ,*(Ø  ¤‰X{X+¶00«{(þ+ {ÉZ   (Ù *00,  +£‰, +X Ži2ç{ZXXX*0 Œ­{3*2+%{Ê£‰j(Ó £dZ(Ä X {X 2XYsõ + sõ (/ (0 8tÿÿÿ0 9®(Û [X (ý+s¡   (Ü (¦ *0I¯(× (× X (Î  (Ú  (Ú  {{ ( (Ý (¦ **0а{É {É (•  >©[ {É(– {Ês¡ (°  {É(– {Ês¡ (° (ÿ+(² (² (ÿ+ (ÿ+   (² (´     (¯ (² (¯ (² *(Ê *:s (à *~*~ *~!*0dW{É{ÉX (â /+{É(ã þ,+{É(ã þ,(Ê *(ä /(Þ *s (à *0 ±{Ê {ÉY {Ê {ÉY j£KjZ!1+ þ9¯1 r™%psâ z!ÿÿÿ_i  dX£K0XX£KY¤K+,XX£K YX¤K!X /X£KjZX+X85ÿÿÿ(¦  *0 ±{Ê {ÉY {Ê {ÉY j£KjZ!1+ þ9µ1 r™%psâ z!ÿÿÿ_i  d X£KY/XX£KX¤K+,X X£KYY¤K!X /X£KjZX+X8/ÿÿÿ(¦  *0¾²{Ê {Ê -F3£K£K[8|£Kj!ZY£KjX£Kj[i+PX3£K£KX[+4£Kj!ZY£KjX£Kj!X[i -(» .***0(,{ÉY {ÉY X/*(è *0ѳ{É{Ê(+s¡ {ÉY{ÉYYXX (ý+s¡ {ÉY {ÉY  Y-f(é 1(æ (­ (ç +Í-þ+- X3 Y+©YY +œ8–ÿÿÿ(¦ (¦ s2 *Þ{É-s3 z{ÉY{ÉY/ (® s2 *(ê *:(ë (ˆ *:(ë (‡ *0%´(® (¹ ,*(ë  (‡ +Ûn(½ 3(î *(î *~"*Þ-*]-(å [+â(å (å [+É:(­ (ñ *0Uµ{É-*(ð (ë  (‡ (ˆ {É-(å +Â(å (å +«:(­ (ó *Ò{É3*{Ê£KlZXZX+Ì0'¶ l   ##ð?(õ *"(ª *"(« *0i,{ÉEs‰ z*{Ê£K*{Ê£K {Ê£K  ÿ1s‰ z ÿÿÿ_ ÿ_bX*0Àœ{ÉEMs‰ z!*{Ê£Kj*{Ê£K {Ê£K  ÿÿÿ_j ÿÿÿ_jbX*{Ê£K {Ê£K {Ê£K  ÿÿ1s‰ z ÿÿÿ_j ÿÿÿ_jbX ÿÿ_j0bX*ò{ÉY1s4 (5 *s4 (5 X(å +Ä0Û¸{6 ,l {7 (8 {6 (ë  (‡  (ˆ , {Éþ+,+§(+8Œÿÿÿ(¬ ,þ+,*ŒK,4u”,  ( ¥_oë +  oÐ +rp(˜ *0Hº{ÉY  (9  (ª (û  (ó (+ {: -ráp* (+(Ñ *0[»3*oF i0iY 0  þþ+,%(å (ª (² X+°rps‹ z0@¼oŠ (; ,r&pr8&ps! z (ª    (ª (þ *:{Éþþ*f{É/ {Ê£K**0F½(¹ ,*(²  (ª  (ë (ˆ ( (­ (² ( (å *6(­ ( *{*{*{*{*{ *{ *{ *ò( }}}}} } } *(< *&(á *(< *&(å *–-*]- Z[+éZ[( Z*~ *~ *~*~*~*~*~**0 ¾3£‰¤‰*[ nnZ!x^m X Z( ZX(  Y?šX£‰X£‰X nnZ!x^mX x^¤‰X xX nnZ!x^mY x^¤‰ nnZ!x^m XX@fÿÿÿ*0 §¿( !Y()  ( !Y()  (þ+  (  Œ½,+ rps  zŽi‰ Y2/ £‰ nnZ!x^m¤‰XX3Ñ **~*~*0"À£‰ £‰ nnZ!x^m*0 ¡Á( ( Y( ((  (þ+ (  (þ+  (  /(kr"ps! z‰ Y2 ( ¤‰XX3á ( ***~* x*.!x****0N¹-*]-nnZ!x^m[+ÜnnZ!x^m[((  nnZ!x^m*0f¹-*!]-!nnZ!x^m![+ÌnnZ!x^m![()  nnZ!x^m*0 "W!x AzBs= € ( (> € ( (? €( (@ €( (A €( (B €( €K€ +( ( ¤KX 2å( € ð x^€(ª €(ª € K%  (Ë ¤K%  (Ë ¤K%  (Ë ¤K% @ (Ë ¤K%  P(Ë ¤K%  (Ë ¤K%  (Ë ¤K% @ (Ë ¤K%   (Ë ¤K%    ((Ë ¤K%    (Ë ¤K%  @ (Ë ¤K%   Ð(Ë ¤K€K€ +(Ð (“ Y¤KX 2ã(Ð €K€ +(Ò (“ ¤KX 2å(Ò €d€ +(Ô !(’ ¤dX 2Ý(Ô € ú[€ }[€ (Ì £K{ [€!(ª €"*F}C o &*¢{C {C {o Œj¥\(D }o *¢{C {C {o Œj¥\(E }o *(H **:(¯ }%*ªoZ r£p(’ ,ow Ži{%ŽiXþ**b}I }J o &*j{I (+{J þoG *F}K o &*r@&p*Þ{K {K {u Œj¥\Œj¥\(D (u+}u *Þ{K {K {u Œj¥\Œj¥\(E (u+}u *08ÃsL Ðj(] ~ (M (u+ (+oF sN *:}O ( *B{O þot *b}P }Q o &*j{P (+{Q þoR *F}S o &*r@&p*Ž{S {S {„ (D ¥}„ *Ž{S {S {„ (E ¥}„ *0(ªsT þU sV (+oW sX **–o> ,+o? ,+o@ þ*î(C ,1oi ,oi ,oj oj þoV **þoV **~D*~E*~F*~G* * * **0SÄŒÂ,+ rps  zŽi   Y  2%  £E `oW ¤ X X3Û*0"æ `oW , s‘ (Y **0tÆ,þ, Žiþ+,*þ, Žiþ+,,£ (+ o,o-o.sZ ([ *(rd&p(“ o” sÒ z0È(O  ,{\ *rœ&psâ z03Ê Ð!(] oY (O  , {\ (] _þ**00ËÐ!(] oY (O  , {\ (] (^ **0ÀÌoZ ÐÇ(] (D -Ð(] (D þ+9xoŠ 1oŒ rÞ&p(’ +,oŠ Y YXoŒ +@oŠ 1oŒ rè&p(’ +,oŠ Y YXoŒ ++ s_ (` *0ÁÐrð&poa 9˜s“  s•  `ob (+  (+ ŒÊ,+ rps  zŽiÈY2:£!oc ¥KoZ s_ ¤ÈXX3Æ*s— `o~ (+*0EÑ(T  s™ ( + Ži3*oa ,od ,o9 þo^ ***0LÓÐ(] (D ,s› *ÐÇ(] (D ,s *(T  ¥Ë( + sŸ *0^ÖÐ(] (D ,+ÐÇ(] (D ,*(R  ,& {e _3 _.  _þþ****0 …(W ,*oD ,+â*0 “ (X *0 …(W ,*oD ,+â*0 “ (Z *0ùØÐ(] (D ,AE rú&psâ zE(M *E%r³p¤E(M *ÐÇ(] (D ,ME rú&psâ zE(M *E%r('p¤E%r2'p¤E(M *(U  ,3s¡  s£ s¥  `o¿ ( +( + ( +**0Ù(\  s§ *0UÜÐ(] (D ,s© *(T  Ži0s« *r<'p(N  -s­ * {f s¯ *0*ær<'p `oW ,*rD'p`þov *0Ù(\  Žiþ*0”Ý(V oV (` ,rÞ&p(Å +9ÐÇ(] (D ,+Ð(] (D ,+ rè&p(Å `ov ,*(rR'p(“ o” (f sÒ z0Þ(a  s± *0‰eŒ,+ reps  z(W -h `(W ,.oe (r’'p(“ o” (f reps! zoe (r´'p(“ o” (f reps! z*~H*~I*~J*~K*~L*~M*~N*~O*~P*~Q*~R*~S*~T*~U*~V*~W*~X*0Š(e (D ,+ (g (D ,+ (i (D ,+ (k (D ,+ (m (D ,+ (o (D ,+ (q (D ,*(s þ(D ***0Oߎi YEÄÒàîü ?š  +  X£¤ X X2æ ŽiY YXY2!X£¤XX3ß (x (s %¤(p+þo^ *(rÐ'p(“ o”   rÔps! z(e þo^ *(g þo^ *(i þo^ *(k þo^ *(m þo^ *(o þo^ *(q þo^ *0Žà(u -.oe (r5p(“ o” (f rÅps! zo9 Ži3G+X£¤XX2à £ (y (p+**6s³ ( +*0­âog (z  `Œ°,+ rps  zŽi  Y2# £o< ¤XX3Ý o\ ,+-oe  (rô'p(“ o”  (f sE   z*0ã({  sµ *0M䌰,+ rps  zŽi   Y  2  £oc ¤ X X3á*0Aæo9  o¿ (z  s·  Ži/*£ (~ s¹ *00èo9 (|  Ži/*£ (   s» *02éo9 ({  Ži/sh *£( sh *0:–Ži2*rQpoe þKoÐ (# r{ps! z£*0}ê/*rQpoe þKoÐ (# r{ps! z o¿ (z  /( si *o9 ( £Ysj (k si *0]ëÐ8(] (D -.oe (rÍp(“ o” (f rÅps! zo9 ££sl *0ì(R  , {e _þ**0&…Ð8(] (D ,*oD ,+Ü*0EÖ(R  ,8 {e _3 _.  _þþ++, (u þ***0)ís½  s¿  `o¿ ( + ( +*0Ù(‡  sÁ *0©â(‡  `Œ°,+ rps  zŽi  Y2# £o< ¤XX3Ý o\ ,+-oe  (r@(p(“ o”  (f sE   z*0ã(‰  sà *03Ö(R  ,& {e _3 _.  _þþ****0&…Ð8(] (D ,*oD ,+Ü*Ö(‹ , þoD *(Y ,([ *(… ,(Œ **0se(‹ -h `(‹ ,.oe (rŽ(p(“ o” (f ryps! zoe (r¸(p(“ o” (f ryps! z*0}eŒ,+s  z(† -` `(† ,*oe (rÞ(p(“ o” (f s! zoe (r)p(“ o” (f s! z*0FeŒ,+s  z(u -*oe (r5p(“ o” (f s! z*V(| }-}.*0 {. {-`þom *(n *0&,oc ¥K oc ¥K /*þ*(o *RoI , þop **:(q }/*0Sî Ð!(] oY (O  ,4 {\ (r {\ (] _3{/ (S ***:(s }0*0!3(t (u {03(½ **(v *0<–E"((r )p(“ o” r6)ps! zr§p*rp*(v *0<–E"((r )p(“ o” r6)ps! zr#p*rù"p*:(v }1*:{1ow *(x *0Hï Ð!(] oY (P (r  Ð!(] oY (P (r /*þ*:(¤ }2*0'ð Ð!(] oY (P (y {2þ*(¤ *"(Q *V(z }3}4*0 dä{4Œ°,+ rps  z{4Ži   Y  2, {4 £{3om ¤ X X3Ô*({ *",**({ **V({ }5}6*0 JÞ{5rD'p{6`%{5¤oT %¤o| ¥K*:({ }7*N{7o} ¥K*V(H }8}9*0 {9 {8`þo~ *( **þoZ *V(H }:};*0 {; {:`þo€ *:(z }<*:{<(} *V(z }=}>*0 Nñ{=(}  {>£od   +  X£¤ X X2æ(x+*V(H }?}@*0 žò{@ŽiY YX  Y2 X£¤XX3à oa {?  + X£¤X X2æ %¤(x+þoa *(x *0Hï Ð!(] oY (P (r  Ð!(] oY (P (r /*þ*(¤ *"(Q *:(z }A*0 \ä{AŒ°,+ rps  z{AŽi   Y  2$ {A £oc ¤ X X3Ü*V(H }B}C*0 {C {B`þo€ *01–,*,ob *(r>)p(“ o” ryps! z0ÐÉ(] €E(F oi , (F oj +(F €Dг(] €G(H oi , (H oj +(H €F€HÐÑ(] €J(f oi , (f oj +(f €IÐ(] €L(h oi , (h oj +(h €KÐÒ(] €N(j oi , (j oj +(j €MÐÓ(] €P(l oi , (l oj +(l €OÐÔ(] €R(n oi , (n oj +(n €QÐÕ(] €T(p oi , (p oj +(p €SÐÖ(] €V(r oi , (r oj +(r €UÐ×(] €X(t oi , (t oj +(t €W*(´ *",**:( }Z*:{ZsW*:(‚ }ƒ *b{ƒ Œjo} (+*:(| }\*F{\þoc *.{„ þ*R{… {„ (+*&o† *6~‡ o† *&oˆ *&(‰ *"(Š *&(‹ *"(Œ *B{„ þ(+*~‡ *B{„ þ(+*B{„ þ(+*&o *&oŽ *F{„ þ(+*F{„ þ(+*&o+*:{„ (+*6¥esB *"( *6{„ (+*6{„ (+*"¥e*"sB *&(‘ *n{… {„ {„ þ(+*n{… {„ {„ þ(+*n{… {„ {„ þ(+*n{… {„ {„ þ(+*6{„ (+*6{„ (+*07õ uØ-',(tÙ {’ {“ X(++ÏX**0#ö uØ- uÙ-**tÙ{” **04œ- -(• *(+ (+ /+ X(– *0r÷(+ (+ X>¥uÙ9tÙ {’ {“ {— (+X1SuÙ,?tÙ{’ {“ {—  (+  (+(+*rd)psâ z(+ (+*rd)psâ zX>£uÙ9tÙ {’ {“ {—  (+X1R uÙ,? tÙ{’ {“ {—  (+ (+(+*rd)psâ z (+(+*rd)psâ z(+*0¥ùuØ-Y9‹tÙ {’ {“ {—  o˜ /(+ ( +*-* (+( +*tØ{™  o˜ / (– *-*(– *(• *00ú  uØ- uÙ-R (+*tØ   ," uØ-$ {™ (+(+* (+*{™ +ÚtÙ   uØ-  uÙ-$ +ÌtØ  {™ (+(+*tÙ{’ {“  {’  {“ {— {— {”  {”   X /(!+( +* X /(!+( +*(+*0ü  uØ:® 9åtÙ {’ {“ {—  o˜ /5("+(š (› (œ  (!+s *- s *("+(š (› (œ  (!+s *tØ  {™  o˜ / s *- s *s *s *0†þuØ-uÙ- rx)psâ ztØ {™ sž *tÙ {’ {“ {—  - sž * (#+(Ÿ (  (+sž *0µÿuØ- uÙ-!*tØ {™ o˜ -**tÙ {’  {“  {— o˜ /($+( +*---*-*(#+(  (Ÿ (+*($+( +*0vùuØ-L,dtÙ {’ {“ {—  o˜ / +¹-*+¨tØ{™  o˜ þ**0]uØ-9,LtÙ {’ {“ {— (+ on &+»tØ{™ on &**0 auØ-:,OtÙ {’ {“ {—  (+(%++ºtØ{™ þ(%+**0euÞ->,Stß {¡ {¢ {£ (&+ ('++¶tÞ{¤ þ('+**0huØ-A,VtÙ {’ {“ {—  o¥ , (++,+µ*tØ{™ þo¥ **0huØ-A,VtÙ {’ {“ {—  o¥ ,+(+,*+³tØ{™ þo¥ **Fs¦ þ(+*Šs§ (+,s¨ þ(+**0 ƒuØ-Q,qtÙ {’ {“ {—  o¥ ,  (++((++£tØ{™  o¥ ,  (+***0 _uØ-:,MtÙ {’ {“ {—  ($+()++ºtØ{™ ($+**0T9uØ:tÙ 9ÊuØ:ÂtÙ {’ {“ {’ {“ {— {— {” {”   1:("+  (š   (›   (*+ (*+(!+*("+  (š   (›    (*+ (*+(!+* *tØ   {™ (+* *tØ ,uØ-  {™ (+* +¬ {™  +å0…uØ-R,stÙ {’ {“ {— (++ (+,  (+++¢tØ{™  (+,  (+***ªo¥ ,(+s© *(+s© *0 ™s© uØ-h,~tÙ {’ {“ {— (,+ (ª (« (-+(ª (« 8ƒÿÿÿtØ{™ (-+**05  uØ-,&tÙ {“ {— +ÙtØ{™ **0H uØ-',6tÙ {“ {— (.+(• *tØ {™ (• **05  uØ-,&tÙ {’ {— +ÙtØ{™ **0H uØ-',6tÙ {’ {— (/+(• *tØ {™ (• **03 (0+ -!(rÆ)p(“ o” r“$ps! z{3 *03 (1+ -!(rÆ)p(“ o” r“$ps! z{3 *0„ {¬ ,v {­ uØ-uÙ-{¬ +Ï*{­ tÙ {¬ {’ {“ {— (• (® (® (® 8‚ÿÿÿ(¯ *b(¯ (® (2+s° *n(rò)p(“ o” sÒ zn(r*p(“ o” sÒ z0Q{± ,B{² {¬ -(3+* {­ uØ,{­ tØ{™ *rT*psâ z(4+*0t{± ,Q{² {¬ -* {­ uØ,&{¬ (2+(³ {² {¬ þþ*rÔ*psâ z(´ {² {¬ þþ*0(5+sµ s¶ *0 i{¬ 9R {¬ 9C {­   uØ:Ñ uÙ: {­ uØ-#uÙ-W{¬ {¬  +’{­ tØ{¬ {™ (• (® (® 8Uÿÿÿ{­ tÙ{¬ {’ {“ {— (– (® (® 8ÿÿÿ{­ tØ{­ uØ-<uÙ:~{¬ {™ (• (® (® 8§þÿÿ{­ tØ {¬ {¬ {™  {™   o˜   , * 8Yþÿÿ{­ tÙ{“ -a{¬ {¬ {™ {’ {—  {“  o˜   , * (® (® 8âýÿÿ{¬ {’ {“ {—  8•þÿÿ{­ tÙ{“ :f{­ uØ-SuÙ:«{¬ {’ {“ {— (– (® (® 8>ýÿÿ{­ tØ{¬ {¬ {’ {— {™   o˜   , * (® (® 8Úüÿÿ{­ tÙ  {“ -a{¬ {¬ {’ {—  {’  {—   o˜   , * (® (® 8cüÿÿ{¬  {’  {“  {—  8ýÿÿ{­ uØ-0uÙ-I{¬ {’ {“ {—  8˜þÿÿ{­ tØ{¬ {™  8düÿÿ{­ tÙ {¬  {’  {“  {—  8üÿÿ*{¬ ,**¶--**-*(¯ (® (¯ (® (6+*0YuØ-5,GtÙ {’ {“ {—  (7+(ö +¿tØ{™ (ö **6(÷ (7+*0s] s· þ(+*0(+ (8+ (9+*Šoñ ,o¸ (++à*0+oÛ (:+ Þu  , oð &Ü&Ü* >s¹ (;+*V( }º }» *R{º {» (V+*V( }¼ }½ *R{¼ {½ (V+*V( }¾ }¿ *^{¾ {¿ (V+þ*{À *{Á *"}À *"}Á *V( }À }Á *b} }à o &*J{à {Ä (<+*^{à {Ä (<+Œj*J{à {Ä (=+*b{à { (>+(Å * *V(â }Æ }Ç *Ê{Æ {Ç {W ¤j{Ç {Ç {W X(Y *:(È }É *>{É (S+*0>oñ oñ 3)-*o¸ o¸  (?+, +Æ**:(Ê }Ë *F{Ë þ(@+*V(Í }Î }Ï *j{Ï {Î oƒ (A+*(Ð *&(Ñ *(Ð *&(Ò *.{Ó þ**oÔ *R{Õ {Ó (B+*R{Õ {Ó (C+*&oÖ *R{Õ {Ó (D+*B{Ó þ(E+*B{Ó þ(F+*0{Ó (F+ ,{× *sØ zB{Ó þ(G+*&oÙ *&oÚ *B{Ó þ(H+*f{Õ {Ó (I+sÛ *Z(Ü {Ó þ(J+*Z(Ý {Ó þ(K+*JsÞ ¥ü(L+*Nsß (M+(N+*Nsà (M+(O+*"(á *"(â *0†([+ (P+sã *6{Ó (Q+*6{Ó (R+*~ä *(å *V( ( s *:(æ }ç *0'ˆ(  (  {ç (S+,( **:(æ }è *0'ˆ(  (  {è (S+,( **0> u- u-*X*t {é {ê X(T++Â0# u- u-**t{ë *06œ- - (ì *(U+ (U+ /+ X(í *0 §(U+ (U+ X>¾u9¨t {î {é {ê {ï (U+X1au,Mt{î {é  {ê  {ï   (V+   (V+(V+*rd)psâ z(V+ (V+*rd)psâ zX>¾u9¨t {î {é {ê {ï (U+X1au,Mt{î {é  {ê  {ï    (V+  (V+(V+*rd)psâ z (V+(V+*rd)psâ z(V+*0 Ñ u-u-E(ì *t {ð o˜ / (í *-(ì *(í *t {î  {é  {ê  {ï {ë o˜ /(W+(X+*- (í *(W+(X+*0Ÿ!u-u-0sØ zt {ñ {ð o˜ -*sØ zt{î {é {ê {ï o˜ /8uÿÿÿ -*8aÿÿÿ0¡!u- u--*t {ñ {ð o˜ -(ò **t{î {é {ê {ï o˜ /8xÿÿÿ -(ò *8_ÿÿÿ¾(Y+,(W+só *(W+só *0 ®#só   u-  u-!*t {ð {ñ (Z+*t {î {é {ê {ï ([+ (ô (õ (Z+(ô (õ 8Rÿÿÿf(Y+, (W+**0 $u- u-*t {ð {ñ (\+*t {î {é {ê {ï (]+ (\+8ÿÿÿ0£&  u- u-&rx)psâ zt {ð {ñ sö *t {î {é {ê {ï -  sö *(^+(÷ (ø (ù  (V+sö *0È'u- u-!*t {ð o˜ -**t {î  {é  {ê  {ï o˜ /(_+(X+*-4-*-*(^+(ù (÷ (ø (V+*(_+(X+*0~(u- u-*t {ð o˜ þ*t {é {ê {ï o˜ / +–-* 8‚ÿÿÿ0r)u- u-*t {ð {ñ (`+&*t {î {é {ê {ï (E+(`+& +Ž0‡*u- u-*t {ð {ñ þ(a+*t {î {é {ê {ï (F+-(a+-  8ÿÿÿ**0€)u- u-*t {ð {ñ þ(Y+*t {î {é {ê {ï (G+,+ (Y+,* 8€ÿÿÿ0€)u- u-*t {ð {ñ þ(Y+*t {î {é {ê {ï (H+, (Y++,  8‚ÿÿÿ*0Š0u- u-$*t {ú {û o¡ (ü *t {ý {þ {ÿ { { (b+o¡  (b+( *0Ž2u- u-'*t {ñ {ð (+( *t {î {é  {ê  {ï {ë (I+(+(I+( *03u- u-$*t {ñ {ð þo *t {î {é  {ê  {ï (K+o 8ÿÿÿ07u - u -$*t  { { þo *t  { {  {  { (c+o 8ÿÿÿ08  u-  u-P*t {ñ {ð o˜ o˜  0 þþ+, þ(d+**t{î {é {ê {ï o˜ o˜  /(e++ 0 þþ+, (d++ / 8þþÿÿ *0%9   o˜ 3*þ(e+*0{)u- u-"*t {ð {ñ s ( *t {î {é {ê {ï s (f+( 8…ÿÿÿ6( (f+*6(Q+(g+*>s (h+*03:oñ ,(oF (G (H (W++Ï*05;  +&£^ (G (H  (W+ X Ži2Ô*0[=u ,  (P+*u{ ,   (i+*oE (j+Þu , oð &Ü&Ü*1 >0s] s þ(E+*0‘?{ 9€ { u-u-{ +Ì*{ t {î { {é {ê {ï  (ì ( ( ( 8uÿÿÿ( *b( ( (k+s *n(rò)p(“ o” sÒ zn(r*p(“ o” sÒ z0b@{ ,S{ { -(l+* { u,${ t {ñ {ð  s *rW+psâ z(m+*0tA{ ,Q{ { -* { u,&{ (k+( { { þþ*r×+psâ z( { { þþ*0C(n+s s *:( } *0ˆ(  (  { (/+*V( }! }" *â{! {" {W s  ¤Ï{" {" {W X(Y *{# *{$ *"}# *"}$ *V( }# }$ *b}% }& o &*J{& {' (o+*^{& {' (o+ŒÏ*J{& {' (p+*b{& {% (q+(( * *0)E () (* s (H (G s *0ƒFoñ oñ 3n-*o+ () o+ () (?+,,o+ (* o+ (* (r++,8ÿÿÿ**(, *&( *:(- }. *^s/ {. ¥ (s+*(0 *&( *:(- }1 *^s2 {1 ¥(t+*:(3 }4 *0?G{4 { ( ( o5 ,*( ( þ(u+*(6 *~( Œj( Œks **(½ **(½ **(½ **(½ *0£–/!(rép(“ o” rZ,ps! z/!(rép(“ o” r`,ps! z/!(rép(“ o” rf,ps! z/!(rép(“ o” rl,ps! zs7 *0I(v+  Ú 2jÚ 2TÚ29Ú2(8 XX3ãXX3ÇX X3¬X X3–*0 “I(v+  Ú ?yÚ 2`Ú2EÚ2)(w+(8 XX3×XX3»X X3 X X@‡ÿÿÿ*6(: *>(8 **(½ **(½ **(½ *.(; *6(< *0|–/!(rép(“ o” rZ,ps! z/!(rép(“ o” r`,ps! z/!(rép(“ o” rf,ps! zs= *0aK(x+  Ú 2KÚ 25Ú2(< XX3æX X3ËX X3µ*0 kK(x+  Ú 2UÚ 2?Ú2$(y+(< XX3ÜX X3ÁX X3«*0—LŒ!,+ rps  z(½ (½ (½ Ú 2XÚ2=Ú2!(; on &XX3ßXX3ÃX X3¨*0 ¯NŒ!,+ rps  z(½ (½ (½ (z+ Ú2dÚ2H Ú 2,   (; o¡ (?  X  X3ÔXX3¸XX3œ *0 LŒ!,+ rps  z(½ (½ (½ Ú 2^Ú2CÚ2'(; ({+&XX3ÙXX3½X X3¢*0µNŒ!,+ rps  z(½ (½ (½ (z+ Ú2jÚ2N Ú 22    (; (|+(?  X  X3ÎXX3²XX3– *Ži*0IO/(kr"ps! (}+&+õ  Y 2o@ ¤õX X3è*0.–/!(rép(“ o” r"ps! zõ*0LP/!(rép(“ o” r"ps! zõ  Ú  2 ¤õ X X3î*zŒb,+ rps  zŽiþ*"õ*0–Œb,+ rr,ps  zŒb,+ rups  z/!(rép(“ o” r€,ps! z/!(rép(“ o” r"ps! z/!(rép(“ o” r˜,ps! zXŽi1!(r )p(“ o” r"ps! zXŽi1!(r )p(“ o” r"ps! z(Á *‚Ži2*X£bŽiX+à00RŽi/(£b Ži (Á XX+Ñ*0Q(~+õ (+*06SŒ$,+ r°,ps  zu% ,  (€+*(+(€+*0QUŒb,+ rps  zŽi &  Y  2  £õoA ¤& X X3â(‚+*0TVŒb,+ r¾,ps  zŒb,+ rÌ,ps  zŽi Ži Xõ (Á (Á *ŽŒb,+ rps  zo ¥b*zŒb,+ rps  z(ƒ+*zŒÅ,+ rÚ,ps  z(„+*0DœŒb,+rps  (}+&Ži  Y 2£õon &X X3è*0RWŒb,+rps  (}+&Ži ö  Y  2  £õo¡ ¤ö X X3â*0‘YŒb,+ r¾,ps  zŒ&,+ rÌ,ps  z(B Ži Ži.!(r| p(“ o” rÌ,ps! zY 2$£õ£öoC &X X3Ü*0£\Œb,+ r¾,ps  zŒ&,+ rÌ,ps  z(D Ži Ži.!(r| p(“ o” rÌ,ps! z÷ Y2, £õ£öoE ¤÷XX3Ô *0 ¥^Œb,+ r¾,ps  zŒ&,+ rÌ,ps  z(F Ži Ži.!(r| p(“ o” rÌ,ps! z÷ Y2. £õ£öoG ¤÷XX3Ò *0F`Œb,+ rps  z(H Ži  Y  2  £õoI & X X3ç*0“bŒb,+ r¾,ps  zŒ&,+ rÌ,ps  z(J Ži Ži.!(r| p(“ o” rÌ,ps! zY 2&£õ£öoK &X X3Ú*0\dŒb,+ rps  z(L Ži ö Y 2%£õoM ¤öX X3Û*¢/!£õo¥ ,*X+Û*0+fŒb,+ rps  zŽi    (…+*Ú/.£õ£öoN ,*X+Í*0vhŒb,+ r¾,ps  zŒ&,+ rÌ,ps  z(O Ži Ži.!(r| p(“ o” rÌ,ps! z (†+*¢2*£õo¥ ,X+Û*0+fŒb,+ rps  zŽi    (‡+*Ú2*£õ£öoN ,X+Í*0vhŒb,+ r¾,ps  zŒ&,+ rÌ,ps  z(O Ži Ži.!(r| p(“ o” rÌ,ps! z (ˆ+*0FjŽi2(rä,p(“ o” sP z£õoQ ,{R *X+º0$lŒb,+ rps  z  (‰+*0)jŽi2*£õoQ - X+Ù*0$lŒb,+ rps  z  (Š+*0UnŒb,+ rps  zsS  +'£õoQ ,  {R oT +X Ži2ÓoU *0NpŒb,+ rps  zsV  + £õ o¥ , oW +X Ži2ÚoX *0fqŒb,+ rps  zsV sV  +'£õ  o¥ ,  oW + oW X Ži2ÓoX oX sY *0EŽi2(rä,p(“ o” sP z£õo¥ ,£õ*X+»0$rŒb,+ rps  z  (‹+*ÊŽi2*£õo¥ , £õ(• *X+Î0$rŒb,+ rps  z  (Œ+*0 sŒb,+ r¾,ps  zŒ&,+ rÌ,ps  zŽi Ži.!(r| p(“ o” rÌ,ps! z^ Y 22£õ£ös ¤^X X3Î*0êuŒb,+ r¾,ps  zŒ&,+ rÌ,ps  zŒ3,+ r-ps  zŽi Ži.!(r| p(“ o” rÌ,ps! zŽi.!(r| p(“ o” r-ps! z4 Y 2>£õ£ö£÷sZ ¤4X X3Â*0zvŒ,+ rps  zŽi õ ö Y 2=£^(G (H ¤õ¤öX X3Ãs[ *0˜xŒ6,+ rps  zŽi õ ö ÷ Y2Q£4(\ (] (^   ¤õ¤ö ¤÷XX3¯ s_ *0JyŒb,+ rps  zŽi õ  Y  2 YY £õ¤õ X X3ä*0O{Œb,+ rps  z(`  Ži Y 2£õoa X X3ã*0O}Œb,+ rps  z(b  Ži Y 0£õoc Y Y3ã*0˜Œb,+ r¾,ps  zŒ&,+ rÌ,ps  z(Ý  Ži Ži.!(r| p(“ o” rÌ,ps! zY0&£õ£öo YY3Ú*0˜Œb,+ r¾,ps  zŒ&,+ rÌ,ps  z(Ü  Ži Ži.!(r| p(“ o” rÌ,ps! zY2&£õ£öod XX3Ú*0D‚Œb,+ rps  z(b     0 £õoc Y Y3ç*0bƒŒb,+ rps  z(b  XY(+  0(£õoc Y¤öY Y3Ø*0d…Œ&,+ rps  z(e  XY(Ž+  2*£öof YX¤õX X3Ö*0(WŒb,+ rps  zŽi Y(+*0(WŒb,+ rps  zŽi Y(+*0h‡Œb,+ rps  zŽi -(jrps! z(g £õ Y 2£õoh X X3ã*0 CWŒb,+ rps  zŽi -(jrps! zYY£õ(‘+*0jˆŒb,+ rps  zŽi /*39£õ£õ(’+ 1£õ £õ¤õ¤õ**(“+(”+*‚Œb,+ rps  z(•+*~Œb,+ rps  z(–+*0(QŒb,+ rps  z(—+ (˜+*0(QŒb,+ rps  z(—+ (™+*0'QŒb,+ rps  z(—+ (š+*zŒb,+ rps  z(›+*zŒe,+ rr,ps  z(±+*0@2(rä,p(“ o” sP z£õo¥ ,*X+À0+fŒb,+ rps  zŽi    (œ+*¶2*£õo¥ ,( *X+Ó0+fŒb,+ rps  zŽi    (+*~Œb,+ rps  z(ž+*0E‰Œb,+rps  (}+&(Ÿ+  + £õ  ( + X Ži2ä*0KŠŒb,+rps  (}+&(¡+  + £õo¡  (¢+ X Ži2Þ*0l‰Œb,+rps  (}+&Ži-(jrps! (}+&+£õ  +£õ   (£+, +X Ži2Ý*0ƒ‹Œb,+rps  (}+&Ži-(jrps! (}+&+£õ o¡  +,£õ  o¡ (¤+, +X Ži2Î*0l‰Œb,+rps  (}+&Ži-(jrps! (}+&+£õ  +£õ   (¥+, +X Ži2Ý*0ƒ‹Œb,+rps  (}+&Ži-(jrps! (}+&+£õ o¡  +,£õ  o¡ (¦+, +X Ži2Î*0ÁŒb,+rps  (}+&¥e Œe,+rr,ps  (}+&oÛ (Ÿ+ oñ , o¸ ( + X+Ú-(irr,ps! (}+&+ (§+ Þu , oð &Ü&Ü*G_¦0ÇŽŒb,+rps  (}+&¥e Œe,+rr,ps  (}+&oÛ (¡+ oñ ,$ o¸ o¡ (¢+ X+Ô-(irr,ps! (}+&+ (¨+ Þu , oð &Ü&Ü*Ge¬0ºPŒb,+ rps  z/!(rép(“ o” r-ps! z/!(rép(“ o” r"ps! zXŽi1!(r )p(“ o” r"ps! zõ  Y  2  X£õ¤õ X X3æ*&£õ**¤õ*0‚Œb,+ rups  z/!(rép(“ o” r˜,ps! z/!(rép(“ o” r"ps! z XY 2¤õX X3î*"ok *"(?+*"(©+*&(ª+*&(«+**(¬+*"(ƒ+*"(„+*(÷ *01–{Ü -"(rmp(“ o” rÚ,ps! z{ó *01–{Ü -"(rmp(“ o” rÚ,ps! z{Ü *.{Ü þ*&(­+*0Y{Ü ,0 {Ü þþ,{Ü {ó -*Y+È(r4-p(“ o” r{ps! z0T‘{Ü ,E {Ü {ó oQ , {R (ú +¾+³(‘+*:(ü (®+**(¯+*&(°+*j0*Y(ö +æ04–/!(rép(“ o” r"ps! z(÷ (±+*0u“{Ü ,d {õ ,7 {õ {Ü {l {ó oC & +·(rV-p(“ o” rˆ-ps! z{õ -Õ*0”(B  (²+*0{“{Ü ,j {õ ,= {õ {Ü {l {ó oK &X +±(rV-p(“ o” rˆ-ps! z{õ -Õ*0•(J  (³+*0¸˜{Ü 9• {õ ,h {m ,^ {m {õ {Ü {n {l {ó oo    (p 8ƒÿÿÿ(rV-p(“ o”   r”-ps! z{õ -Õ{m -Í(´+*V(q (r (µ+*0Ž™{Ü ,v {õ ,I {õ {Ü {l {ó oG X (s +¥(rV-p(“ o” rˆ-ps! z{õ -Õ(¶+*V(F (t (·+**(¸+*0-š{Ü ,# {Ü {ó oa +Õ*0›{Ü -*(`  (¹+*0?œ{Ü , {ó {Ü (º+*(rmp(“ o” rÚ,ps! z0={Ü ,. {Ü {ó oa   (ú +Ê(‘+*0›(`  (ü (ú (»+*0x“{Ü ,f {õ ,9 {õ {Ü {l {ó od +µ(rV-p(“ o” rˆ-ps! z{õ -Õ*0ž(Ü  (¼+*0'Ÿ   0£õoc Y Y3ç*0 6 (b {Ü 9! {Ü {Ü 9û{Ü {Ü {Ü 9À{Ü {Ü {Ü ,x {Ü {Ü {Ü -E{ó  {ó {ó {ó oc oc oc þoc *(„+  Ži   Y(½+* {ó {ó {ó oc oc þoc *{ó {ó oc þoc *{ó þoc **0 Q¡{Ü -"(rmp(“ o” rÚ,ps! z(g („+ Ži  Y Y£õ(¾+*0;¢ (ü (ú    0! £õoc (ú Y Y3ß*0e£{Ü ,Q {Ü {Ü -!{ó (%+(ü (ú (ú *(b („+ Ži Y(¿+*(ü (ú *0{¤(„+ (À+ Ži Ži  .#(rV-p(“ o” rˆ-ps! zY0(£õ£öo YY3Ø*0ç¥(Ý {Ü 9¹ {Ü {Ü 9\{Ü {Ü {Ü 9Ï{Ü {Ü {Ü :®{õ 9¢{õ {õ 9{õ {õ {õ ,v{õ {õ {õ -_{l {l {l  {ó  {ó  {ó      o o o þo *(Á+*{õ ,í{õ {õ ,Û{õ {õ {õ -Ä{l {l {ó  {ó    o o þo *{õ 9tÿÿÿ{õ {õ :_ÿÿÿ{l {ó   o þo *{õ :*ÿÿÿþo *0 s“{Ü ,a {õ ,4 {õ {Ü {l {ó  þ(Â+*(rV-p(“ o” rˆ-ps! z{õ -Õ*0y“{Ü ,g {õ ,9 {õ {Ü {l {ó oN ,  +·*(rV-p(“ o” rˆ-ps! z{õ -Ô*†{Ü - {õ -*(O (Ã+*&(Ä+*&(Å+*0y“{Ü ,g {õ ,9 {õ {Ü {l {ó oN ,* +µ(rV-p(“ o” rˆ-ps! z{õ -Ô*†{Ü - {õ -*(O (Æ+*0Fš{Ü ,$ {Ü {ó o¥ ,*+Ô(rä,p(“ o” sP z03š{Ü ,) {Ü {ó o¥ ,(• *+Ï*00¦{Ü ,& {Ü {ó oQ -+Ô **0M¦{Ü ,+ {Ü {ó oQ , {R *+Í(rä,p(“ o” sP z&(Ç+*&(È+*"(É+*"(Ê+*&(Ë+**(Ì+*&(Í+*00§{Ü , {Ü {Ü -*(„+ (Î+(ƒ+*0/§{Ü , {Ü {Ü -*(„+ (Ï+(ƒ+*"(Ð+*"¥e*0Kš{Ü ,) {Ü {ó o¥ ,*X+Ï(rä,p(“ o” sP z0 ¨ (Ñ+*08š{Ü ,. {Ü {ó o¥ ,( *X+Ê*0 ¨ (Ò+*0T©¥e oÛ (Ÿ+ oñ , o¸ ( + +à Þu , oð &Ü&Ü**90Zª¥e oÛ (¡+ oñ , o¸ o¡ (¢+ +Ú Þu , oð &Ü&Ü*0?0™©¥e Œe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ oñ ,o¸  (¥+, +Ü+Ù Þu , oð &Ü&Ü*+S~0¶«¥e Œe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸  o¡  oñ ,/o¸ o¡ (¦+, +Ì+É Þu   ,  oð &Ü&Ü*+p›0™©¥e Œe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ oñ ,o¸  (£+, +Ü+Ù Þu , oð &Ü&Ü*+S~0¶«¥e Œe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸  o¡  oñ ,/o¸ o¡ (¤+, +Ì+É Þu   ,  oð &Ü&Ü*+p›0¥¥e Œe,+rr,ps  (}+&oÛ (Ÿ+ oñ , o¸ ( + X+Ú-(irr,ps! (}+&+ (§+ Þu , oð &Ü&Ü*+_Š0«Ž¥e Œe,+rr,ps  (}+&oÛ (¡+ oñ ,$ o¸ o¡ (¢+ X+Ô-(irr,ps! (}+&+ (¨+ Þu , oð &Ü&Ü*+e.þ(Ó+*N(„+(ž+(ƒ+*:(Ô+(u *0=(’ ,rp+  oŠ Ú 2oF o9 &X X3è*0>(’ ,rp+  oŠ Ú 2oF (Õ+&X X3ç*08¬(’ ,rp+ oŠ sw sc(WþoÐ *08¬(’ ,rp+ oŠ sw se(XþoÐ *08¬(’ ,rp+ oŠ sw sg(WþoÐ *0Z­/!(rép(“ o” r"ps! zsw  Ú  2 oV oÔ  X X3çþoÐ *0m­/!(rép(“ o” r"ps! z(’ ,rp+ oŠ sw  Ú  2oÔ  X X3íþoÐ *ªoŠ 2*oF ox , Ö+Ù*0"¯(’ ,rp+   (^*ªoŠ /oF ox ,*Ö+Ù*0"¯(’ ,rp+   (`*j(’ ,rp+oŠ *V(' }y}z*0{z{yoy o( *V(z }{}|*0{|{{(Ö+o( *V(' }}}~*0{~{}o{ oÔ *6s| (×+*:s} (Ø+*"(Ù+*&(Ú+*2(~ ¥e*6s (×+*04–/!(rép(“ o” r"ps! zs€ (×+*0S°Œe,+ rr,ps  zoÛ oñ ,o¸ on &+è Þu  , oð &Ü&Ü&*:0@±Œe,+ rr,ps  zoÛ (Û+ Þu  , oð &Ü&Ü* (0Z²Œe,+ rr,ps  zoÛ  oñ ,o¸ (Ü+&X +ã Þu  , oð &Ü&Ü&*#A0\³Œe,+ rr,ps  zoÛ  - oñ +,o¸ o¥ +à Þu  , oð &Ü&Ü*&D0\³Œe,+ rr,ps  zoÛ  , oñ +,o¸ o¥ +à Þu  , oð &Ü&Ü*&D0£µŒe,+ r -ps  zŒc,+ r°-ps  zoÛ o‚ oñ , oñ +,o¸ oƒ (`+&+Õ Þu , oð &Ü&Ü Þu , oð &Ü&Ü&*;/j4S‡:s„ (Ø+*>s… (Ý+*’Œe,+ rr,ps  zs† (Þ+*&(ß+*’Œe,+ rr,ps  zs‡ (à+*’Œe,+ rr,ps  zsˆ (à+*îŒe,+ r -ps  zŒc,+ r°-ps  zs‰ (á+*’Œe,+ rr,ps  zsŠ (à+*êŒe,+ r -ps  zŒc,+ r°-ps  zs‹ (â+*0VŒe,+ r -ps  zŒc,+ r°-ps  zŒQ,+ rÀ-ps  zsŒ (ã+(ä+*ŽŒ,+ rr,ps  zs (×+*0c¶Œe,+ rr,ps  zoÛ  þþ, oñ +,o¸ oQ +Ù Þu  , oð &Ü&Ü*-K0CjŒe,+ rr,ps  z(å+ ,{R *(rä,p(“ o” sP z0s·Œe,+ rr,ps  zoÛ  þþ, oñ +,o¸  o¥ , (• +Ï+Ì Þu , oð &Ü&Ü*:X0C?Œe,+ rr,ps  z(æ+ ,{3 *(rä,p(“ o” sP z0 [¸Œe,+ rr,ps  z/!(rép(“ o” r"ps! z-(ç+*þõsŽ *0ŽºŒe,+ rr,ps  zub ,  Žiþ*uÅ ,  {Ü þ*uU,o þ*oÛ oñ þÞu , oð &Ü&Ü*cqzŒe,+ rÐ-ps  z(è+*0”»Œe,+ rr,ps  zub , Ži*uÅ ,  ok *uU,þo *oÛ oñ , X+îÞu   ,  oð &Ü&Ü*\w0U¼Œe,+ rr,ps  zoÛ  oñ ,o¸ (é+ +ç Þu  , oð &Ü&Ü*=0s½Œe,+ rr,ps  zoÛ oñ -(irr,ps! zo¸ oñ ,o¸ (ê+ +ç Þu  , oð &Ü&Ü*=[6s‘ (Ø+*êŒe,+ r -ps  zŒe,+ r°-ps  zs’ (ë+*:(ì+(í+*0]¾oñ oñ 3+ ,+ ,*-+þ,*o¸ o¸ (’+ , *+£0ˆÀŒe,+ r -ps  zŒe,+ r°-ps  zoÛ oÛ (î+ Þu , oð &Ü&Ü Þu , oð &Ü&Ü*;P49m"¥e*0‰ÁŒe,+ rr,ps  zuÅ , *ub ,  (ƒ+*oÛ (÷ oñ ,o¸ (ö +ä(?+ Þu , oð &Ü&Ü*@-mŽŒb,+ rr,ps  zs“ (×+*0‘ÂŒe,+ rr,ps  zub , o ¥b*uÅ ,  („+*oÛ sV oñ ,o¸ oW +æoX Þu , oð &Ü&Ü*J+u6s” (×+*0+ÃŒe,+ rr,ps  zþõs• *0+ÃŒe,+ rr,ps  zþõs– *0 ,ÄŒe,+ rr,ps  zþös— *0@oñ ,o¸ o¥ ,*X+Ú(rä,p(“ o” sP z0HÅŒe,+ rr,ps  zoÛ   (ï+ Þu , oð &Ü&Ü*-¶oñ ,"o¸ o¥ ,( *X+Õ*0HÆŒe,+ rr,ps  zoÛ   (ð+ Þu , oð &Ü&Ü*-J{W X]£õ*0 K–Œe,+ rr,ps  z0!(rép(“ o” rà-ps! zs˜ *0pÈo™ 2e{š ,+oÛ (› (œ ( {š ož -* {Ÿ oñ ,o¸ þoW *oð (œ ( **0Io™ /o  Xs¡ (¢ *(ñ+o™ /o  Xs¡ (¢ **0>Êo£ {š ,$ {¤ ,{¤ {Ÿ ¥ oð +( *0HÌŒe,+ rr,ps  zsV s¥ s¦ (ò+ s§ s¨ ¥e*ŽŒe,+ rr,ps  zs© (×+*:sª (ó+*0 <ÎŒe,+ rr,ps  zþõþZþõs« *0 =ÐŒe,+ rr,ps  zþõþiþõs¬ *’Œe,+ rr,ps  zs­ (Ù+*ŽŒe,+ rr,ps  zs® (Ù+*’Œe,+ rr,ps  zs¯ (ô+*0KÑoÛ (Ÿ+ oñ , o¸  ( + +â Þu , oð &Ü&Ü*(00QÒoÛ (¡+ oñ , o¸ o¡  (¢+ +Ü Þu , oð &Ü&Ü*.60™ÓŒe,+rr,ps  (}+&oÛ (Ÿ+  oñ ,o¸ ( + X +Ü -(irr,ps! (}+&+ (§+ Þu , oð &Ü&Ü*$Z~0ŸÔŒe,+rr,ps  (}+&oÛ (¡+  oñ ,"o¸ o¡ (¢+ X +Ö -(irr,ps! (}+&+ (¨+ Þu , oð &Ü&Ü*$`„0ÑŒe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ oñ ,o¸  (£+, +ß+Ü Þu , oð &Ü&Ü*$Pt0¬ÕŒe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ o¡ oñ ,-o¸ o¡  (¤+,  +Î+Ë Þu , oð &Ü&Ü*$m‘0ÑŒe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ oñ ,o¸  (¥+, +ß+Ü Þu , oð &Ü&Ü*$Pt0¬ÕŒe,+rr,ps  (}+&oÛ oñ -(irr,ps! (}+&+o¸ o¡ oñ ,-o¸ o¡  (¦+,  +Î+Ë Þu , oð &Ü&Ü*$m‘0+ÃŒe,+ rr,ps  zþõs° *0 ,ÃŒe,+ rr,ps  zþõs± *0 ,ÃŒe,+ rr,ps  zþõs² *0°ÖŒe,+ r -ps  zŒc,+ r°-ps  zoÛ o‚ , oñ +, oñ +,o¸ oƒ (Y++Ë Þu , oð &Ü&Ü Þu , oð &Ü&Ü*;=x4a•0°ÖŒe,+ r -ps  zŒc,+ r°-ps  zoÛ o‚ - oñ +, oñ +,o¸ oƒ (Y++Ë Þu , oð &Ü&Ü Þu , oð &Ü&Ü*;=x4a•0W±Œe,+ rr,ps  zoÛ oñ , o¸ Þ&(irr,ps! zu  , oð &Ü&Ü*!?0k½Œe,+ rr,ps  zoÛ oñ ,o¸ oñ , o¸ +î Þ&(irr,ps! zu  , oð &Ü&Ü*5S0…׌e,+ rr,ps  zoÛ oñ ,4o¸ oñ ,!(rö-p(“ o” rr,ps! z Þ)(irr,ps! zu , oð &Ü&Ü*Lj:(³ }´ *V{´ oµ þo× *V(³ }¶ }· *N{¶ {· (õ+*:(³ }¸ *:{¸ (ö+*V(³ }¹ }º *j{¹ Y( {º (ö+*V(³ }» }¼ *j{» {¼ o½ þo¾ *r(³ }¿ }À }Á *–{¿ {À o½ {Á o þ(÷+*:(Ä }Å *:{Å (ø+*:(Æ }Ç *:{Ç (ù+*:(Æ }È *:{È (ú+*:(É }Ê *>{Ê (û+*:(Æ }Ë *:{Ë (ü+*(Ì *&s *(Í *0Ø(Î (Ï sÐ *:(³ }Ñ *J{Ñ oÖ (ý+*ò}Ò }Ó }Ô }Õ }Ö }× }Ø (Ù *0 ;Ù{× YE +8ã8Ã8°8ò{Ó o× }Ô }× {Ò Y( oÚ }Ö }× {Ö oñ ,q{Ö oÛ }Õ {Ô oñ -+(r .p(“ o” sÒ ,¥+z&+}× {Ô oô }Ø *}Õ 8‚ÿÿÿ}× {Ö (þ+}Ö }× {Ô (ÿ+}Ô }× þj}Ø *0­Ú {× YE+8ˆ{× E ++5++++)}× {Ö (þ+}× {Ô (ÿ+}× þj}Ø  Þ t  Þ&8^ÿÿÿþ,z*t ê{× E +++ +++****"{Ø *0 ]{Ò {Ó þjsÜ *:(³ }Ý *v{Ý oÞ Œk¥(+*:(ß }à *J{à o× (+*V(ß }á }â *0&Ý{á o× (+ {â sã (ä *:(³ }å *J{å sæ ¥*:(³ }ç *J{ç sè ¥*Ò}é }ê }ë }ì }í }î (Ù *0å]{í YE +8Š88¦s] }ë {ê o× }ì }í {ë {W {é /{ì oñ +,5{ë {ë {W X(Y }í {ì oô }î *+¦}í {ì (ÿ+}ì }ë }í þj}î *0’Ú {í YE+8m{í E + ++++}í {ì (ÿ+}í þj}î  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{í E + + +++***"{î *0 ]{é {ê þjsï *Ò}ð }ñ }ò }ó }ô }õ (ö *0]{ô YE +8»8‡8Ð{ð o× }ñ }ô {ñ oñ 9†{ñ oô s¨ }ò {ñ oñ ,Y{ñ oô }ó }ô {ò {º {ó s­ }õ *{ò {ó (½ þj}ó +š}ò +}ô {ñ (ÿ+}ñ }ô }õ *0Þ {ô YE+8h{ô E + +!+ +++}ô {ñ (ÿ+}ô }õ  Þ t   Þ&8~ÿÿÿþ,z*Tp Ò{ô E + ++ +++***"{õ *0 ]{ð þjs÷ *ò}ø }ù }ú }û }ü }ý }þ (Ù *0]{ý YE ++=8¥8œ8Á{ù s¨ }û }ý {û {º }þ *{ú o½ }ü }ý {ü oñ ,I{û {ø {û {º {ü oÿ (+(½ }ý {û {º }þ *+ª}ý {ü (+}ü }û }ý þj}þ *0œÚ {ý YE+8w{ý E ++$+ +++}ý {ü (++}ý þj}þ  Þ t  Þ&8oÿÿÿþ,z*c ê{ý E +++ +++****"{þ *0 %]{ø {ù {ú þjs *0D} } } } } } } } ( *0 §à{ YE +8F88p{ j} { Ys] } s] } { o× } } { oñ 9â{ { {W { oô ¤j{ { {W X{ ](Y { {W -v} { /(kr"ps! z{ j  { Y  2) { { { (+¤j X X3×} *8-ÿÿÿ{ { {W Y(Y 8ÿÿÿ} { (ÿ+} } } } } } *0‡Þ { YE++e{ E + ++++} { (ÿ+} }  Þ t   Þ&8„ÿÿÿþ,z*Qj Æ{ E + + +++***"{ *0 { { s *r( } } } *0 8â{ (à { { { (+ Þ{ (ã &Ü* (V(! } } *03ã{ (à { { (+ Þ{ (ã &Ü* #:(³ } *>{ þo× *V(â } } *0_æ{ oƒ s  { o s ( ( , o *s  {  o o *( *>( o *( *0'ç( { ( ¥(+s *V(! }" }# *0Fé($ s% {" s& {# (+s' ¥ž( +s( ¥ž( +*ò}) }* }+ }, }- }. }/ (Ù *0#ê{. YE +8È8š8ä(0 s1 }* {) o× }- }. {- oñ 9„{- oô }+ {+ sS }, {* {, o2 -*{* {, o3 }. {+ }/ *+þg}, þj}+ 8lÿÿÿ}. {- (ÿ+}- }* }. þj}/ *0’Ú {. YE+8m{. E + ++++}. {- (ÿ+}. þj}/  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{. E + + +++***"{/ *0 +ë{) þjþgþjs4 *0D}5 }6 }7 }8 }9 }: }; }< (Ù *0.ì{; YE +8Ó8¥8ï($ s= }7 {6 o× }: }; {: oñ 9{: oô }8 {5 {8 oƒ s }9 {7 {9 o> -*{7 {9 o? }; {8 }< *+þ—}9 þj}8 8aÿÿÿ}; {: (ÿ+}: }7 }; þj}< *0’Ú {; YE+8m{; E + ++++}; {: (ÿ+}; þj}<  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{; E + + +++***"{< *0 1í{5 {6 þjþ—þjs@ *V(- }A }B *0!{B (I+ {A ( +¥*:(- }C *0{C (I+ ( +¥*V(â }D }E *0Eî{D oƒ s  {E oF ,{E XoG *{E oG *(H *0](I {J (K sL *V(M }N }O *05ð(0 sP {N sQ {O ( +sR ¥®(+*Ò}S }T }U }V }W }X (Ù *0ð]{W YE +8œ8Œ8±{T o× }U }W þjs¨ }V {U oñ ,/{V {U oô (½ {S {V {º oœ +,}W {V {º }X *+£}V }W {U (ÿ+}U }W þj}X *0’Ú {W YE+8m{W E + ++++}W {U (ÿ+}W þj}X  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{W E + + +++***"{X *0 ]{S {T þjsY *ò}Z }[ }\ }] }^ }_ }` (Ù *0FÙ{_ YE +8î8¤8ß8ý{[ o× }\ }_ {Z ( oÚ }^ }_ {^ oñ ,T{^ oÛ }] {\ oñ -+(r .p(“ o” sÒ ,¥+z&+}] +Ÿ}_ {^ (þ+}^ {\ oñ ,}_ {\ oô }` *+Ö}_ {\ (ÿ+}\ }_ þj}` *0¯Ú {_ YE+8Š{_ E ++7+ + ++++}_ {^ (þ+}_ {\ (ÿ+}_ þj}`  Þ t  Þ&8\ÿÿÿþ,z*v’ ê{_ E +++ +++****"{` *0 ]{Z {[ þjsa *ò}b }c }d }e }f }g }h (Ù *0)]{g YE +8Õ8µ8ê{c o× }d }g þjs¨ }e s }f {d oñ ,v{e {d oô (½ {f {º ,+{b {e {º oœ þ,,{f (» }g {e {º }h *8ƒÿÿÿ8}ÿÿÿ}f }e }g {d (ÿ+}d }g þj}h *0’Ú {g YE+8m{g E + ++++}g {d (ÿ+}g þj}h  Þ t  Þ&8yÿÿÿþ,z*Yu Æ{g E + + +++***"{h *0 ]{b {c þjsi *"sj *>sk (Ø+*Rsl sm (+*03ñ{n ,* {n {o o÷ Þ (6&Ü &** $ 0fó{p oñ ,O{p oƒ Œö uE ,+Í{q oð  þöoÛ }q þ(+*or *0-õ{q oñ ,{q o¸ }s * þ(+*fst su sv ¥Q*6sw (Ø+*0,÷{º - (+&+{x ,{y *(+*J{º -(» **0%ùs sz s{ (+(+*Ns| s} ¥e*>s~ ¥Á*&}J *"{J *0ûs s€ **o &**þ(A+*.þ(+*F}ƒ o &*Z{ƒ {J þo‚ *v{ƒ {J {J þo *F}† o &*B{† þo‡ *N{† o‡ ¥ *.sˆ €‰ *( *~‰ *&*2sŠ ¥*FsŠ ¥¥ *r(³ }‹ }Œ } *f{‹ {Œ { (+*V(Å }Ž } *Ž{Ž oœ ,{ oƒ (É **(â *0üŒj u  ,  oð **bo &} }‘ *0Xþ{‘ oµ o× u× , { oX Þ%{ (+ Þt{ o÷ &þ*?@J¥o× ¥ *þo &o½ }’ sŠ ¥}“ }” }• (= }– *0ÿ}• {“ ,{“ oð  Þ }“ &Ü Þ] ÞY{’ ,{’ oð  Þ }’ &Ü Þ- Þ){– (+(6 Þ(= }– &Ü&Ü&Ü&*@! >N bx5,a),4Y0*{” - (+&+{• ,(+*{— *R{– (c }– *"o˜ *6o˜ Œj*0*{” - }” +{• ,* þ(+*n(rD.p(“ o” s zJ{• -o™ **:(! }š *0&]{š Œj,{š þjoð **V(- }› }œ *v{œ {› o Œq¥*:(³ }ž *J{ž sŸ ¥*ž}  }¡ }¢ }£ o &*R{¢ {£ (+*f{¢ {£ (+Œ*0\{¢ (<{  oÚ Þt {£ (¤ þ,{£ {¡ (¥ (¤ *{£ (¤ *n(rD.p(“ o” s z *’(§ }¨ }© }ª }« *~{¨ {© {ª {« s¬ *:(- }­ *"{­ *:(® }¯ *B{¯ ot *b}° }± o &*R{° {± oÓ &*~}² }³ }´ o &*r@&p*>{² oÓ &*>{³ oÓ &*0-]{´ sµ o¶ {² oÓ &{³ s· *0o¸ , {L o÷ &**0>o¹ oº  uÛ-uÜ-tÝ {» (¼ **(+*0 uß ,  {½ *s¾ ¥ê*0 uà ,  {¿ *sÀ ¥Ù*.sÁ €Â *( *~ **uáþ*sà **uâþ*sÄ **uãþ*0  uã,+ uâ,+*(Å *:(Å }Æ *{Æ *:(Å }Ç *{Ç *:( }È *:( }É *2{É {Æ *:( }Ê *2{Ê {Ç *bo &}Ë }Ì *"{Ë *"{Ì *0/u‰ , {Ë sÍ +à sÎ ¥*"sÏ *>{Ë þoÐ *V(ß }Ò }Ó *z{Ó {Ì oÔ {Ò (ä *:(Õ }Ö *0b{Ö {Ë (+  uâ- uã-{Ö {Ì oÔ (× **tã {Ç {Ö {Ì (ä (× *~o &}Ø }Ù }Ú *"{Ø *0.{Ù -(rh.p(“ o” sÒ z{Á *J¥oô Œj*0}{Ú -s{Ø (+ uâ-uã-,}Ù }Ú *tâ {Æ ( }Ù *tã {Ç }Ø ¥ þoñ **n(rD.p(“ o” s zb{Ú -{Ø þ(+**Fo &}Û *"{Û *"sÜ *0{Û sÝ (0 *:(Õ }Þ *¾{Þ {Û oñ ,{Þ {Û oô (ß *(à *:(! }á *:{á oð *n(rò)p(“ o” sÒ zn(r*p(“ o” sÒ z"sâ *0g–oñ -!(r .p(“ o” r{ps! z/!(rép(“ o” r{ps! z- þo¸ *Y+™:sã ¥H*0s] sä ¥H*>så ¥ñ*0,{º - (+&+{æ ,{3 *( +*0s sÙ sç *ò{º - (» +oñ ,o¸ o¥ ,*+Æ*0”s sè *0sÖ sé ¥H*0W{W 3 (+&+{W þ3 (!+&+{ê Œf,+së ("+(ì {ê oO *0J, {Ž /{Ž sí ¥ê*-ý+{Ž s] sî  sï *0?{æ , (ð **0?(à (#+ Þ (ã &Ü*  0,{º - (+&+{æ ,{3 *( +*J{º -(» **0!ã($+(%+ Þ (ð &Ü&* 0,s sÙ oˆ (• sñ sò *&só *F}ô o &*J{ô oó (u+*J{ô oó ¥*>{ô þoñ *n(rD.p(“ o” s z0{ô u  ,  þoð **Fo &}õ *0{õ - (+&+(+*0{õ - (+&+(&+*Z{õ - }õ +*n(rD.p(“ o” s z *ŠsÒ€'sÒ€(sÒ€)*:( }&*~'**(Ùþ*~(**(Ùþ*~)**(Ùþ*{&*Vo &(Ó}ö *Þ{ö (ÙE (+&+ (!+&+{÷ *"oø *6oø Œj*¦(Õ}ö |÷ où ,*(×}ö *n(rD.p(“ o” s z*þoú *b}û }ü oý &*º{ü oñ ,{û {ü oÿ oþ j**>{ü þoð *~}ÿ } } oý &*0Q{ { {W X(Y { oñ ,){ÿ { {W { oÿ ('+j**>{ þoð *~} } } oý &*0O¦{ oñ { oñ ,+,){ { oÿ { o ((+j**0#ã{ oð  Þ{ oð &Ü&*ž} } } } o &*R{ { ()+*f{ { ()+Œj*0€{ {º -{ (» +{ (¯ { {¬ þ,{ oñ +,${ { { oÿ o (¯ +¹{ {¬ þ*n(rD.p(“ o” s z>{ þoð *~} } } o &*0({ {º - (+&+{ þoô *0+{ {º - (+&+{ oô Œj*0/{ { { { { { (*+*n(rD.p(“ o” s z>{ þoð *b} } oý &*0L!{ { {¢ o ,/ { (  { (   j{ (¤ ** *V(2 } } *j{ { {W þo *ž} } } } o &*j{ { { (++*~{ { { (++Œj*0¦"{ {W þ3*{ {W 3{ (Y { ( *{ {W ÿÿÿ3(r .p(“ o” sÒ z{ {W { 3*{ {W X { (Y { ( *n(rD.p(“ o” s z *¾} } } } } o &*R{ { (,+*f{ { (,+Œj*0‹#{ (Á{ {! ,l {î { o Þ"t{ { { (-+þ ,{ (¯ *{ { { (-+**'8"n(rD.p(“ o” s zj{ { (.+þ(/+*šo &}" }# {" Ži}$ *Ú{# 2&{# {$ 2(+*{" {# £j*(0+*"o% *º{# {$ 2*{# X}# {# {$ þ*6o% Œj*n(rD.p(“ o” s z *bo &}& }' *"{& *6{& Œj*R{' ,*}' *n(rD.p(“ o” s z *b}( }) o &*>{) þoô *R{) ¥ þoó *>{) þoñ *n(rD.p(“ o” s z0#ã{) oð  Þ{( o÷ &Ü&*b}* }+ oÙ &*"{+ *0$q {+ oñ ,**0$ã{+ oð  Þ{* oí &Ü&**>{+ þoô *([+*0&(, s- *F}. o &*F{. þo/ *s0 *"s1 *s2 *0((3 s4 **o &**þ(A+*.þ(+*F}5 o &*B{5 þ(1+*.þ(+**o &*6Œj(6 *&(2+*b}7 }8 o &*B{7 þo9 *F{8 þo: *0,–,{3 *(rÖ.p(“ o” rü.ps! zþ*&þþ*",**0?, {3 þ(é+**0?, {3 þ(%+**0?, {3 þo¥ **0?, {3 þo¥ **0?, {3 on &**0”, {3 o¡ (ò **0?, {3 þoQ **0!?, õ%{3 ¤õ*õ*0?, {3 (÷ (ö *(÷ **(½ **(½ *&o¼ *&o¼ **(; *.(< *0U–/!(rép(“ o” rZps! z/!(rép(“ o” r /ps! zs= *0{-þ+,+Ðõ(] K%¤K%¤K(> ¥*Ðõ(] K%¤K%¤KK%¤K%¤K(? ¥*0I*(3+  ÖÚ 20ÖÚ 2(< X X3èX X3Ð*0Q*(3+  ÖÚ 28ÖÚ 2 (4+(< X X3àX X3È*2(5+*2(6+*0‡+Œ,+ rps  z(½ (½ o¼ o¼ ÖÚ2=  ÖÚ2(; on &XX3áXX3Ã*0‹+Œ,+ rps  z(½ (½ o¼ o¼ ÖÚ2A  ÖÚ2#(; (7+&XX3ÝXX3¿*0BŒ,+ rps  zo¼ o¼ (½ (½ sA (8+*0BŒ,+ rps  zo¼ o¼ (½ (½ sB (8+*0AŒ,+ rps  zo¼ o¼ (½ (½ sC (6+*0 G,Œ,+ rps  zo¼ o¼ (½ (½ sD (6+*0 ,Œ,+ rr,ps  zŒ,+ rups  zo¼ /!(r )p(“ o” r/ps! zo¼ /!(r )p(“ o” r(/ps! zo¼ /!(r )p(“ o” rB/ps! zo¼ /!(r )p(“ o” r\/ps! zÖ(½ o¼ Ö1!(r )p(“ o” rv/ps! zÖ(½ o¼ Ö1!(r )p(“ o” r„/ps! zÖ(½ o¼ Ö1!(r )p(“ o” rv/ps! zÖ(½ o¼ Ö1!(r )p(“ o” r„/ps! z Ú 2@Ú 2)ÖÖÖÖ(; (< X X3×X X3À*V(E }F }G *r{F {G (H þoþ *V(E }I }J *0 {I {J (H þ(9+*:(E }K *>{K (L *r(E }M }N }O *v{M {N Ö{O Ö(L *"õ*0IO/(kr"ps! (}+&+õ  Y 2o@ ¤õX X3è*0µ-Žiõ Ži†  +ZoP /+ Žiþþ,#(r’/p(“ o” r²/ps! z £õ¤õ ¤†X Ži2  +2£†.#(r’/p(“ o” r²/ps! zX Ži2È*0B.Ži /*Žiö  +£õo¡ ¤öX Ži2â(:+(;+*0WŽi /*(<+(”+*0ä0ŽiK  + ¤KX Ži2î(:+ (=+o ¥b (>+ Ži<“£ö/ 3+£öoR þ+, X+Í Y 2$  £K£õ¤õ X  X3ÜY2Y(?++ 8eÿÿÿ*0>.Ži /*Žiö  +£õo¡ ¤öX Ži2â(@+*0,WŽi /*(<+,o ¥b(A+*(B+*0*š{Ü ,! {Ü {ó on &+×*0E1{õ ,1 {õ {l om (ö  }Ü +Ç(÷ }Ü *0^2{Ü ,P {Ü {Ü -{ó o¡ (ü (ú *{Ü {ó o¡ (ú (C+ *(ü *0K1{õ ,7 {õ {l oU (ö  }Ü X+Á(÷ }Ü *0k3{Ü ,] {Ü {Ü -{ó (D+(ü (ú *{Ü {ó (L oM (ú  (E+*(ü *0“4{õ ,w {m ,J {m {õ {n {l oV (ö }Ü  +¤(rV-p(“ o” rÄ/ps! z{m -Õ(÷ }Ü *0Ž5{Ü ,x {õ ,K {õ {Ü {l {ó (D oE (s  (F+*(rV-p(“ o” rÄ/ps! z{õ -Õ(t *0.š{Ü ,# {Ü {ó o¥ ,+×**0.š{Ü ,# {Ü {ó o¥ ,*+Õ*0)š{Ü , {Ü {ó (ö +Ù*0R6{Ü ,H {Ü {Ü ,7{Ü {Ü {ó {ó  (÷ (ö (ö (G+***097{Ü ,( {Ü {ó (ö  }Ü +Ð}Ü *0<š{Ü ,( {Ü {ó oW (H++Ð(ü }õ *0O8{Ü ,A {Ü {Ü -{ó þoW *þö (ú (I+oX *(ü *0O7{Ü ,? {Ü {ó o¥ ,(ö  }Ü +Ä+¹}Ü *0g7{Ü ,] {Ü {Ü -{Ü {ó o¥ ,**{Ü {ó o¥ ,(ö (J+ *+›*00š{Ü ,' {Ü {ó oI &X+Ñ*09(H  (K+*02;{Y ," {Y {Z (L++Ö}Ü *0^<{Y ,P {Z {Ü ,5{Z {Y {Ü {ó (ö  (M+*{Y +¨(÷ *0X=uÅ , *oÛ (÷ oñ ,o¸ (ö +è (?+ Þu , oð &Ü&Ü*'=0e>(N+ {Y ,O {Y {Y ,7{Y {Y {Y -{Z {Z  (­+*(O+*{Z *(÷ *06?/%o@ (ö }Ü X+Ö(÷ }Ü *09?/(kr"ps! z-(÷ *o@ (ö (P+*0c7{Ü ,L {Ü {ó (ö o¥ , }Ü +Á }Ü  +¬}Ü }Ü *0Q7{Ü ,@ {Ü {ó (ö o¥ , }Ü +Ä (Q+ *}Ü *0Q7{Ü ,@ {Ü {ó (ö o¥ , (Q+ * }Ü +¸}Ü *0„7{Ü ,t {Ü {Ü -({Ü {ó o¥ ,s_ *s_ *{Ü {ó (ö o¥ , (R+s_ * (S+ s_ *s_ *0p@{Ÿ ,Q {Ÿ {  (G {  (H (ö (ú }Ü }õ +§(÷ }Ü (ü }õ *0a@{Ÿ ,I {Ÿ {  (G {  (H (ö (ú (T+s[ *(÷ (ü s[ *0¡B{\ ,w {\ {] (\ {] (] {] (^ (ö  (ú (s }Ü }õ }m 8ÿÿÿ(÷ }Ü (ü }õ (t }m *0B{\ ,d {\ {] (\ {] (] {] (^ (ö  (ú (s (U+s^ *(÷ (ü (t s^ *0C{Ü ,s {õ ,F {õ {Ü {l {ó s ( }Ÿ  +¨(rV-p(“ o” rÄ/ps! z{õ -Õ( }Ÿ *0‚C{Ü ,l {õ ,? {õ {Ü {l {ó s (  (V+*(rV-p(“ o” rÄ/ps! z{õ -Õ( *0¿D{Ü 9˜ {õ ,k {m ,a {m {õ {Ü {n {l {ó sZ (_   }\   8€ÿÿÿ(rV-p(“ o”   rÌ/ps! z{õ -Õ{m -Í(` }\ *0­D{Ü 9Œ {õ ,_ {m ,U {m {õ {Ü {n {l {ó sZ (_    (W+ *(rV-p(“ o”   rÌ/ps! z{õ -Õ{m -Í(` *0/š{Ü ,& {Ü {ó ¤õX+Ò*0Eok õ  (X+*0/FŽi (÷ Y   0 £õ(ö Y Y3è*&(Y+*0)š{Ü , {Ü {ó (ö +Ù*0vG{Ü ,j {Ü ,V {ó {ó {Ü {Ü  (’+1(ö +­ (ö +˜ (Z+* +ôÂ(’+1(÷ (ö (ö *(÷ (ö (ö *0¼/þ+,;(’+1(÷ (ö (ö (ö *(÷ (ö (ö (ö *151(÷ (ö (ö (ö *(÷ (ö (ö (ö *1(÷ (ö (ö (ö *(÷ (ö (ö (ö *0 k,(’+ (’+ 1þ+,;(’+1(÷ (ö (ö (ö *(÷ (ö (ö (ö *([+*0?{Ü , {Ü {Ü þ**0ËH<ž{a {Ü 9 {Ü {Ü ,r{Ü {ó {ó {Ü 3(b  (\+*{Ü ,*{ó {Ü (b  (]+*rÔ/psâ zrÔ/psâ zc  (^+ Y(^+(÷ (_+*0 J(`+,*sc ok (^+*0ÃþõŒssd *&sd *Vþ{e ,+þ*>þ{e ,**"oO *"oO *"oO **"(Ç+*"Œõ*z"sâ *šof Ð(] oV , o% (½ **þ*&(£+*&(¥+*&(a+*&(b+*.þ(?+*2(?+þ*.þ(c+*:(£+,**:(£+,**"sâ z:s! (d+*6s  (d+*6sÒ (d+*2rà/psï z2r>0psï z"(H *"(G * *"sÖ *&(h *"{i *.þo¡ *2þ(+*6þ(!+*.þo¡ *2þ(+*6þ(!+*&sj *&sk *&(Å *6,{3 **2rœ0psï z.þ(e+*2r 1psï z.þ(f+*2rx1psï z2rÞ1psï z2rB2psï z2rª2psï z2r3psï z2r|3psï z2ræ3psï z2rN4psï z2rº4psï z0DK{Ü ,: {Ü {ó {Ü -*(÷ (ö (g+}Ü **B{W X(Y *B{W Y(Y *J(l r$5psâ z2rp5psï z2rÌ5psï z2r*6psï z2rŠ6psï z2rè6psï z2rH7psï z2rº psï z6ŒK¥õ*V() (* s *.#ð*.#øÿ*"€*"Àÿ*2r¦7psï z2r8psï z2rd8psï z2rÄ8psï z2r$9psï z2r†9psï z2rè9psï z0<LŒõ ,+u” , ( ¥_þoë * þoÐ *rp*2rH:psï z0(ÄŒõ(à om ÞŒõ(ã &Ü* 0,Mo¡ ÞŒõ, þõoð &Ü&Ü* 2Ðõ(] *2r¤:psâ z0…Ðõ(] oi , þoj **"þõ**þ(h+*.þ(i+**(n *(M *(N *N(j+so (k+*R(¡+sp (l+**þ(m+**þ(n+**þ(o+**þ(p+*.þ(q+**þ(r+**þ(s+**þ(t+**þ(u+**þ(v+**þ(w+**þ(x+**þ(y+**þ(z+**þ({+**þ(|+**þ(}+**þ(~+**þ(+**þ(€+*.þ(+*0l‰ €39X (j+sq (‚+ /(j+ rx1psï z rx1psï z(j+sr (‚+ /(j+ rx1psï z*V(‚ }s }t *n{t {s ou þov *V(w }x }y *n{x {y o þoz *({ *.þ(ƒ+*( *.þ(„+*({ *.þ(…+*({ *.þ(…+*n(rò)p(“ o” sÒ zn(r*p(“ o” sÒ z.#àÁ*.#ÀÿÿÿßA*¾#àÁ5#ÀÿÿÿßAþþ+, (| þ**09¦3 s} ¥„*þ ,þ+þþ sŸ¥„*06Os -!(r;p(“ o” r4;ps! zs¥*0I¦3 s~ ¥<*þ ,!þ+ !þþ sª¥<*06Qs¨ -!(r;p(“ o” r4;ps! zs°*0I¦3 s ¥>*þ ,!þ+ !þþ sµ¥>*06Ss³ -!(r;p(“ o” r4;ps! zs»*09¦3 s€ ¥@*þ ,þ+þþ sÀ¥@*06Us¾ -!(r;p(“ o” r4;ps! zsÆ*0K¦3 s ¥B*þ ,!Óþ+!Óþþ sË¥B*0@WsÉ !Ó3!(r;p(“ o” r4;ps! zsÑ*0K¦3 s‚ ¥D*þ ,!àþ+!àþþ sÖ¥D*0@YsÔ !à3!(r;p(“ o” r4;ps! zsÜ*09¦3 sƒ ¥F*þ ,þ+þþ sá¥F*06[sß -!(r;p(“ o” r4;ps! zsç*09¦3 s„ ¥H*þ ,þ+þþ sì¥H*06]sê -!(r;p(“ o” r4;ps! zsò*09¦3 s… ¥J*þ ,þ+þþ s÷¥J*06_sõ -!(r;p(“ o” r4;ps! zsý*09¦3 s† ¥L*þ ,þ+þþ s¥L*06as -!(r;p(“ o” r4;ps! zs*0:bY[l (,6i 3lZXs‡ ¥N*þ þþ  s ¥N*#þ,#(r;p(“ o” r4;ps! z.#(r>;p(“ o” rZps! z.#(r`;p(“ o” r4;ps! z.#(r€;p(“ o” r /ps! zþ, s‡ ¥N*þ ,#þ+ #þþ  s¥N**s*0.bY[l (,6i 3kZXsˆ ¥P*þ þþ  s¥P*"þ,#(r;p(“ o” r4;ps! z.#(r>;p(“ o” rZps! z.#(r`;p(“ o” r4;ps! z.#(r€;p(“ o” r /ps! zþ, sˆ ¥P*þ , "þ+ "þþ  s¥P**s$*0.(?+, s‰ ¥ê*(£+ sŠ ¥ê*.s‹ *0K¦(r+, sŒ ¥H*(¤+ , (£++(¥+þ s ¥H*08–(?+,!(r;p(“ o” r4;ps! zsŽ *0%3 s ¥X*þ s9¥X*0 c s?*0SdE$.[(= Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0 e (=*0SfE$.[(? س ]-*س***س*س س*س س*0 g (?*0ShE$.[(A ص ]-*ص***ص*ص ص*ص ص*0 i (A*0SjE$.[(C Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0 k (C*0J,E!'[(E Ø ]-*Ø***Ø*ØØ*Ø Ø*0 W (E*0JÀE!'[(G Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0 ¹ (G*0RôE#%)/[(I Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0 ß (I*0RlE#%)/[(K Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 » (K*0SmE$&*0[(M Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 n (M*0SoE$&*0[(O Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0 p (O*0NqE!%+[(Q Z ]-*Z*"€?**Z*ZZ*Z Z*0 r (Q*0RsE#%)/[(S Z ]-*Z*#ð?**Z*ZZ*Z Z*0 t (S*0guE"$&.<[(U ( ]-*( ***( *( ( *( ( *0v s]   (U*0wwE')+6H[(†+ (ê+ ]-*þ(ê+***þ(ê+*(ê+þ(ê+*(ê+ þ(ê+*0y   þ(†+*0kz,  {Ž + ,  {Ž +ŽiY YX õ Y2!X£õ¤õXX3ß*0`{,  {Ž + ,  {Ž +ŽiY YX  Y2 X£õ¤õXX3à*0dó, {Ž + , {Ž + , {Ž + (½ Y , {Ž + (½ Y YX YX(‡+*0gó, {Ž + , {Ž + , {Ž + (½ Y , {Ž + (½ Y YX YX(ˆ+*0 ™|, {Ž + , {Ž + , {Ž + , {Ž + (½ Y , {Ž + (½ Y, {Ž + (½ Y YXYXYX(‰+*0 œ|, {Ž + , {Ž + , {Ž + , {Ž + (½ Y , {Ž + (½ Y, {Ž + (½ Y YXYXYX(Š+*0 Î+, {Ž + , {Ž + , {Ž + , {Ž + , {Ž + (½ Y, {Ž + (½ Y, {Ž + (½ Y, {Ž + (½ Y YXYXYX YX(‹+*0 Ñ+, {Ž + , {Ž + , {Ž + , {Ž + , {Ž + (½ Y, {Ž + (½ Y, {Ž + (½ Y, {Ž + (½ Y YXYXYX YX (Œ+*0;},  {Ž + ,  {Ž + oŠ Y YXoŒ *0)~Ðõ(] %¤o‘ s’ *0<Ðõ(] Ðö(] %¤%¤o‘ s“ *>~” þo• *>~– þo• *>~— þo• *>~˜ þo• *B~™ þ(+*>~š þo• *>~› þo• *>~œ þo• *>~ þo• *>~ž þo• *>~Ÿ þo  *>~¡ þo• *>~¢ þo• *>~£ þo¡ *>~¤ þo• *>~¥ þo• *>~¦ þo• *>~§ þo• *>~¨ þo• *>~© þo• *B~ª þ('+*Fo &}« *.þo¬ *:o¬ Œj*0C{« E*o­ , }« *}« *o® ,*}« *F}« þo¯ * *¦{« E (Ž+*(+*þo° **o± &*** *0 ]þj*Fo± &}² *** *"{² *’o³ &}´ }µ {´ }¶ *:{´ }¶ *B{¶ þo· *0nH{¶ {¶ o¸ o¹ ,*oº ,*o¹ ,{µ o¹ +, }¶ *{µ oº , }¶ **’o± &}» }¼ {» }½ *:{» }½ *"{½ *0H{½ {½ o¾ o¿ ,*oÀ ,{¼ oÀ +, }½ *{¼ o¿ , }½ *{¼ oÀ ,*o¿ -**(Á *X*î}p}q}r}s}t{p{ro &*"{t*N{s,þ*þ*þ**{qX**ž}u}v}w}xo &*0 {u{v{w{x(*0 %{u{v{w{x(¥ *(à *X*î}y}z}{}|}}{y{{oÄ &*"{}*N{|,þ*þ*þ**{zX**ž}~}}€}o &*0 {~{{€{(!*0 %{~{{€{(!¥ *(Æ *X*î}‚}ƒ}„}…}†{‚{„oÇ &*"{†*N{…,þ*þ*þ**{ƒX**ž}‡}ˆ}‰}Šo &*0 {‡{ˆ{‰{Š(#*0 %{‡{ˆ{‰{Š(#¥ *(É *X*î}‹}Œ}}Ž}{‹{oÊ &*"{*N{Ž,þ*þ*þ**{ŒX**ž}}‘}’}“o &*0 {{‘{’{“(%*0 %{{‘{’{“(%¥ *(Ì *X*î}”}•}–}—}˜{”{–oÍ &*"{˜*N{—,þ*þ*þ**{•X**ž}™}š}›}œo &*0 {™{š{›{œ('*0 %{™{š{›{œ('¥ *(Ï *X*î}}ž}Ÿ} }¡{{ŸoÐ &*"{¡*N{ ,þ*þ*þ**{žX**ž}¢}£}¤}¥o &*0 {¢{£{¤{¥()*0 %{¢{£{¤{¥()¥ *(Ò *Xh*î}¦}§}¨}©}ª{¦{¨oÓ &*"{ª*N{©,þ*þ*þ*.{§Xh**ž}«}¬}­}®o &*0 {«{¬{­{®(+*0 %{«{¬{­{®(+¥ *(Õ *XÑ*î}¯}°}±}²}³{¯{±oÖ &*"{³*N{²,þ*þ*þ*.{°XÑ**ž}´}µ}¶}·o &*0 {´{µ{¶{·(-*0 %{´{µ{¶{·(-¥ *(Ø *Xg*î}¸}¹}º}»}¼{¸{ºoÙ &*"{¼*N{»,þ*þ*þ*.{¹Xg**ž}½}¾}¿}Ào &*0 {½{¾{¿{À(/*0 %{½{¾{¿{À(/¥ *(Û *XÒ*î}Á}Â}Ã}Ä}Å{Á{ÃoÜ &*"{Å*N{Ä,þ*þ*þ*.{ÂXÒ**ž}Æ}Ç}È}Éo &*0 {Æ{Ç{È{É(1*0 %{Æ{Ç{È{É(1¥ *Ú}Ê}Ë}Ì}Í}Î{ÌoÞ &*"{Î*N{Í,þ*þ*þ*X*J{Êl{ËZX*î}Ï}Ð}Ñ}Ò}Ó{Ï{Ñoß &*"{Ó*N{Ò,þ*þ*þ**{ÐX*~}Ô}Õ}Öo &*j{Ô{Õ{Ö(3*~{Ô{Õ{Ö(3¥ *Ú}×}Ø}Ù}Ú}Û{Ùoá &*"{Û*N{Ú,þ*þ*þ*X*J{×k{ØZX*î}Ü}Ý}Þ}ß}à{Ü{Þoâ &*"{à*N{ß,þ*þ*þ**{ÝX*~}á}â}ão &*j{á{â{ã(5*~{á{â{ã(5¥ *î}ä }å }æ }ç }è {æ {ç oé &*"{è *&(+*.þ(+*Z{å {ä þ(‘+**ž}ë }ì }í }î o &*0 {ë {ì {í {î (’+*0 %{ë {ì {í {î (’+¥ *0C}ï }ð }ñ }ò }ó }ô {ð {ò oé &*"{ô *f{ó ,(+*(“+*.þ(+*Z{ï {ñ þ(+**¾}õ }ö }÷ }ø }ù o &*0 &{õ {ö {÷ {ø {ù (”+*0 +{õ {ö {÷ {ø {ù (”+¥ *Î}ø}ù}ú}û{ø{ùoú &*"{û*þ*þ*0j {ú XÑ**~}ü}ý}þo &*j{ü{ý{þ(;*~{ü{ý{þ(;¥ *:(‚ }ü *0 &{ü %Œj¤o| ¥k*:(ý }þ *0 3{þ %Œj¤%Œk¤o| ¥q**o &*0]Ðj(] Ð…(] oV ,sI¥6 sÿ 8!Ї(] oV ,sM¥6 s 8øÐK(] oV ,sQ¥6 s 8ÏÐd(] oV ,sU¥6 s 8¦З(] oV ,sY¥6 s 8}Ѓ(] oV ,s]¥6 s +WЂ(] oV ,sa¥6 s +1Ð#(] oV ,se¥6 s + rž;p(•+€ *~ *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *0.n!Ó2*e !Ó/ (hs z*:( } *B{ þo *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo *( *"( *:( } *B{ þo **o &*0jÐj(] Ѓ(] oV ,sl¥6 s! +1Ђ(] oV ,sp¥6 s" + r¦;p(•+€# *~# *( *"($ *:( }% *B{% þo *( **l($ k*:( }& *B{& þo **o &*0jÐj(] Ѓ(] oV ,sw¥6 s' +1Ђ(] oV ,s{¥6 s( + r°;p(•+€) *~) *( *"(* *:( }+ *B{+ þo *( **l(* k*:( }, *B{, þo **o &*0jÐj(] Ѓ(] oV ,s‚¥6 s- +1Ђ(] oV ,s†¥6 s. + rº;p(•+€/ *~/ *( *"(0 *:( }1 *B{1 þo *( **l(0 k*:( }2 *B{2 þo **o &*0jƒÐj(] Ѓ(] oV ,s¥? s3 +1Ђ(] oV ,s“¥? s4 + rÄ;p(–+€5 *~5 *(6 *&(7 *:(‚ }8 *B{8 þoƒ *:(9 }: *0…{: o; s< *(= *2ll(7 k*:(‚ }> *B{> þoƒ *:(9 }? *0…{? o; s@ **o &*0jÐj(] Ѓ(] oV ,sœ¥6 sA +1Ђ(] oV ,s ¥6 sB + rÐ;p(•+€C *~C *( *"(D *:( }E *B{E þo *( **l(D k*:( }F *B{F þo **o &*0jÐj(] Ѓ(] oV ,s§¥6 sG +1Ђ(] oV ,s«¥6 sH + rà;p(•+€I *~I *( *"(J *:( }K *B{K þo *( **l(J k*:( }L *B{L þo **o &*0jÐj(] Ѓ(] oV ,s²¥6 sM +1Ђ(] oV ,s¶¥6 sN + rè;p(•+€O *~O *( *"(| *:( }P *B{P þo *( **l(| k*:( }Q *B{Q þo **o &*0jÐj(] Ѓ(] oV ,s½¥6 sR +1Ђ(] oV ,sÁ¥6 sS + rô;p(•+€T *~T *( *"(U *:( }V *B{V þo *( **l(U k*:( }W *B{W þo **o &*0jÐj(] Ѓ(] oV ,sÈ¥6 sX +1Ђ(] oV ,sÌ¥6 sY + r<p(•+€Z *~Z *( *"([ *:( }\ *B{\ þo *( **l([ k*:( }] *B{] þo **o &*0]‡Ðj(] Ѓ(] oV ,sÓ¥B s^ 8!Ђ(] oV ,s×¥B s_ 8øЗ(] oV ,sÛ¥B s` 8ÏÐ#(] oV ,sߥB sa 8¦Ї(] oV ,sã¥B sb 8}ÐK(] oV ,sç¥B sc +WÐd(] oV ,së¥B sd +1Ð…(] oV ,sï¥B se + r<p(—+€f *~f *(g *"(h *:(i }j *B{j þo9 *(k *&l(h *:(i }l *B{l þo9 *(m *†!Ó/*!Ó1**:(i }n *B{n þo9 *(o *"(p *:(i }q *B{q þo9 *(r *"(s *:(i }t *B{t þo9 *( *"(u *:(i }v *B{v þo9 *(w *"(x *:(i }y *B{y þo9 *(z *"({ *:(i }| *B{| þo9 **o &*0jÐj(] Ѓ(] oV ,sö¥6 s} +1Ђ(] oV ,sú¥6 s~ + r<p(•+€ *~ *( *"(€ *:( } *B{ þo *( **l(€ k*:( }‚ *B{‚ þo **o &*0jÐj(] Ѓ(] oV ,s¥6 sƒ +1Ђ(] oV ,s¥6 s„ + r$<p(•+€… *~… *( *"(† *:( }‡ *B{‡ þo *( **l(† k*:( }ˆ *B{ˆ þo **o &*0jˆÐj(] Ѓ(] oV ,s ¥Þ s‰ +1Ђ(] oV ,s¥Þ sŠ + r0<p(˜+€‹ *~‹ *( *"(Œ *:(‚ } *B{ þoƒ *( **l(Œ k*:(‚ }Ž *B{Ž þoƒ **o &*0jÐj(] Ѓ(] oV ,s¥6 s +1Ђ(] oV ,s¥6 s + r:<p(•+€‘ *~‘ *( *"(’ *:( }“ *B{“ þo *( **l(’ k*:( }” *B{” þo **o &*0jÐj(] Ѓ(] oV ,s"¥6 s• +1Ђ(] oV ,s&¥6 s– + rB<p(•+€— *~— *( *"(˜ *:( }™ *B{™ þo *( **l(˜ k*:( }š *B{š þo **o &*0jÐj(] Ѓ(] oV ,s-¥6 s› +1Ђ(] oV ,s1¥6 sœ + rL<p(•+€ *~ *( *"(ž *:( }Ÿ *B{Ÿ þo *( **l(ž k*:( }  *B{  þo **o &*0jÐj(] Ѓ(] oV ,s8¥6 s¡ +1Ђ(] oV ,s<¥6 s¢ + rT<p(•+€£ *~£ *( *"(¤ *:( }¥ *B{¥ þo *( **l(¤ k*:( }¦ *B{¦ þo **o &*0jÐj(] Ѓ(] oV ,sC¥6 s§ +1Ђ(] oV ,sG¥6 s¨ + r^<p(•+€© *~© *( *"(ª *:( }« *B{« þo *( **l(ª k*:( }¬ *B{¬ þo **o &*0jÐj(] Ѓ(] oV ,sN¥6 s­ +1Ђ(] oV ,sR¥6 s® + rf<p(•+€¯ *~¯ *( *"(° *:( }± *B{± þo *( **l(° k*:( }² *B{² þo **o &*0jŠÐj(] Ѓ(] oV ,sY¥I s³ +1Ђ(] oV ,s_¥I s´ + rp<p(™+€µ *~µ *(6 *&(¶ *:(w }· *B{· þoþ *:(¸ }¹ *0Œ{¹ oº s» *(= *2ll(¶ k*:(w }¼ *B{¼ þoþ *:(¸ }½ *0Œ{½ oº s¾ *.þ(š+*2r 1psï z2rœ0psï z2rx<psï z2rp5psï z2rÌ5psï z2r*6psï z2rH:psï z2rŠ6psï z2rè6psï z2rH7psï z2rÞ<psï z2r¦7psï z2r8psï z2r†9psï z2rè9psï z"¥õ*0 Ãþõ*.þ(c+*.þ(?+**þ(h+*n(rò)p(“ o” sÒ zn(r*p(“ o” sÒ z067{Ü ,, {Ü {ó (÷ (ö  }Ü +Ì*0?{Ü , X{Ü +æ*0jš{Ü ,C {Ü {ó /(rép(“ o” rZps! z-*Y+µ(r4-p(“ o” rZps! z’o &}¿ {¿ }À }Á *0+V{Á ,{À {É ,{Ë *(›+*(œ+*"o *0U{Á ,3{À {É ," {É }À {À {É þþ**}Á {À {É þþ*6o Œj*V}Á {¿ }À * **oà &*&sÄ *0ŒJ u4 , *sÅ *V(‚ }Æ }Ç *Z{Æ {Ç þoÈ *F}É oý &*Z{É oÊ þo **oË &*&sÌ *02’ŒK uL , *uÎ , sÍ *sÎ *V(ý }Ï }Ð *^{Ï {Ð þoÑ *F}Ò oÓ &*^{Ò oÔ þoÕ *F}Ö oÓ &*^{Ö o× þ(+**oØ &*0J–ŒM uN , *uÔ , sÙ *uÖ, sÚ *sÛ *&sÜ *F}Ý oÞ &*f{Ý oß þoà *F}á oÞ &*f{á oâ þ(ž+*F}ä oÞ &*f{ä oå þ(Ÿ+*V(Ó }ç }è *0 {ç {è þoé **oê &*&së *0b›ŒO uP , *uÞ , sì *uà, sí *uâ, sî *sï *V(Þ }ð }ñ *0 {ð {ñ þoò *F}ó oô &*0 {ó oõ þoö *F}÷ oô &*n{÷ oø þ( +*F}ú oô &*n{ú oû þ(¡+*F}ý oô &*0 {ý oþ þ(¢+*0<LŒõ ,+u” , ( ¥_þoë * þoÐ *rÛ$p*.þ(?+*.þ(£+*2þ(¤+*.þ(c+*2þ(¥+*&(£+*&(¥+*&(b+*&(a+*>(£+,**>(£+,**&(¦+*"(§+*~–*~—*~˜**þ(h+*.þ(i+*.þ(¨+*s *"s *~™*~š*~›*~œ*~*~ž*~Ÿ*~ *~¡*~¢*~£*~¤*~¥*~¦*~§*0ÉÐK(] oV ,*Ðd(] oV ,*Ј(] oV ,*Љ(] oV ,*Њ(] oV ,*Ѓ(] oV ,*Ђ(] oV ,*Ð#(] oV ,*ÐE(] oV ,(ÉŒR¥Û*s *0õЉ(] oV ,(ÑŒZ¥Û*Њ(] oV ,(ÒŒ[¥Û*Ж(] oV ,(ÓŒ\¥Û*Ѓ(] oV ,(ÔŒ]¥Û*Ђ(] oV ,(ÕŒ^¥Û*Ð#(] oV ,(ÖŒ_¥Û*ÐE(] oV ,(ÉŒR¥Û*s *0÷Є(] oV ,(ÈŒQ¥Û*Ð…(] oV ,(ÊŒS¥Û*Ї(] oV ,(ËŒT¥Û*ÐK(] oV ,(ÌŒU¥Û*Ðd(] oV ,(ÍŒV¥Û*З(] oV ,(ÎŒW¥Û*Ј(] oV ,(ÐŒY¥Û*(©+*~ *~ *6Œõ¥ö*6Œõ¥ö********0!c( x3+oþ,*bþ*ªX2oF 0þ+,XoF (å**07cqK(æ,$qKXoF ( qKXK*d*ÖqKX2qKoF -þ+,qKXK**0EqKX2qKoF -þ+,qKXK!ÿÿÿÿÿÿÿÿ*!*0 ic/bX!ZoF 02 7þþ+,( 0( Y+(r8=p(“ o” s‹ zX+™*0œ  !(ê*0 i/bX!ZoF 0YE&(r8=p(“ o” s‹ z!+ !X+™*0œ  !(ì*0Å(“ , r“$ps  zo oŠ  (ç 2(r8=p(“ o” s‹ z bYE\ oYEA xYEo ( ¥_( *o ( ¥_( *(ë( *(í( *0æž(“ , r“$ps  zo oŠ  (è (ç2(r8=p(“ o” s‹ z( ( bYEaoYECxYE( ¥_( * o ( ¥_( ( Z* (ë( Z* (í( Z*0ן(“ , r“$ps  zo oŠ  (é (ç2(r8=p(“ o” s‹ z( ( bYEWoYE>xYE( ¥_( * o ( ¥_( Z* (ëZ* (íZ*0»(“ , r“$ps  zo oŠ  (ç 2(r8=p(“ o” s‹ z bYEW oYEA xYEo ( ¥_( *o ( ¥_( *(ë*(í*01æІ(] oV , Œ†¥õ*Ј(] oV , Œˆ¥õ*Љ(] oV , Œ‰¥õ*Њ(] oV ,!ŒŠ¥õ*Ж(] oV ,!àŒ–¥õ*Ð#(] oV ,s] Œ#¥õ*Ѓ(] oV ,#Œƒ¥õ*Ђ(] oV ,"Œ‚¥õ*rX=po oc ¥õ*01æЈ(] oV , Œˆ¥õ*Є(] oV , Œ„¥õ*Љ(] oV , Œ‰¥õ*Њ(] oV ,!ŒŠ¥õ*Ж(] oV ,!àŒ–¥õ*Ð#(] oV ,s] Œ#¥õ*Ѓ(] oV ,#ð?Œƒ¥õ*Ђ(] oV ,"€?Œ‚¥õ*rb=po oc ¥õ*~ *~ *(Ÿ+*(j+*B~ þ(ª+*.þ(§+*0Ä¡rj=p%¤%¤o‘ oV ,+"rj=p%¤%¤o‘ ,9,-,¥ð+(r‚=p(“ o” s z s * s *, +ò,¥ð+(r¨=p(“ o” s z s *0І(] oV ,s^Œô¥ð*Ј(] oV ,s`Œõ¥ð*Љ(] oV ,sbŒö¥ð*Њ(] oV ,sdŒ÷¥ð*Ж(] oV ,sfŒø¥ð*Ѓ(] oV ,shŒù¥ð*Ђ(] oV ,sjŒú¥ð*ÐE(] oV ,slŒû¥ð*(«+*B~ þ(+*0Ä¡rj=p%¤%¤o‘ oV ,+"rj=p%¤%¤o‘ ,9,-,¥ð+(r‚=p(“ o” s z s * s *, +ò,¥ð+(r¨=p(“ o” s z s *0Ј(] oV ,s‡Œõ¥ð*Є(] oV ,s‰Œ¥ð*Љ(] oV ,s‹Œö¥ð*Њ(] oV ,sŒ÷¥ð*Ж(] oV ,sŒø¥ð*Ѓ(] oV ,s‘Œù¥ð*Ђ(] oV ,s“Œú¥ð*ÐE(] oV ,s•Œû¥ð*(¬+*B~ þ(+*0Ä¡rÊ=p%¤%¤o‘ oV ,+"rÊ=p%¤%¤o‘ ,9,-,¥ð+(râ=p(“ o” s z s * s *, +ò,¥ð+(r >p(“ o” s z s *0І(] oV ,s®Œô¥ð*Ј(] oV ,s°Œõ¥ð*Љ(] oV ,s²Œö¥ð*Њ(] oV ,s´Œ÷¥ð*Ж(] oV ,s¶Œø¥ð*Ѓ(] oV ,s¸Œù¥ð*Ђ(] oV ,sºŒú¥ð*ÐE(] oV ,s¼Œû¥ð*(­+*B~ þ(+*0Ä¡rÊ=p%¤%¤o‘ oV ,+"rÊ=p%¤%¤o‘ ,9,-,¥ð+(râ=p(“ o” s z s * s! *, +ò,¥ð+(r >p(“ o” s z s" *0І(] oV ,sÕŒô¥ð*Ј(] oV ,s׌õ¥ð*Љ(] oV ,sÙŒö¥ð*Њ(] oV ,sÛŒ÷¥ð*Ж(] oV ,sÝŒø¥ð*Ѓ(] oV ,sߌù¥ð*Ђ(] oV ,sáŒú¥ð*ÐE(] oV ,sãŒû¥ð*(®+*B~# þ(+**o &**þ(A+*.þ(+*F}$ o &*B{$ þ(1+*.þ(+**o &*24*þ**o &*&(” **o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*2/*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*24*þ**o &*:þ,*þ**o &*:þ,*þ**o &*&(3 **o &*0û…Ðj(] З(] oV ,(ÎŒW¥8„Ж(] oV ,(ÓŒ\¥+`І(] oV ,+JЄ(] oV ,+4Ð…(] oV ,+Ї(] oV ,+(¯+€5 Ðj(] І(] oV ,(ÏŒX¥+(°+€6 *~6 *~5 **o &*.þ(±+**o &*.þ(±+**o &*0Ó…Ðj(] Ð…(] oV ,Œ…¥j8Ї(] oV ,Œ‡¥j8zÐK(] oV ,ŒK¥j+ZÐd(] oV ,!Œd¥j+2З(] oV ,!ÓŒ—¥j+ (²+€7 *~7 **o &*0ö…Ðj(] Ð…(] oV ,Œ…¥j8ÀЇ(] oV ,Œ‡¥j8ÐK(] oV ,ŒK¥j8zÐd(] oV ,!Œd¥j+RЗ(] oV ,!ÓŒ—¥j+)І(] oV ,Œ†¥j+ (³+€8 *~8 **o &*0é£Ðj(] Ð#(] oV ,s;Œ¥e8¯Ѓ(] oV ,s=Œ¥e8ˆЂ(] oV ,s?Œ¥e+dr.>p%¤%ÐK(] ¤o‘ , s9 +-,¥e+(rF>p(“ o” s z s: €; *~; *(< *:(= (> *(? *l[*(@ *k[*:(A }B *0 3{B %Œj¤%ŒK¤o| ¥j*:(C }D *B{D þo *:(E }F *0¥{F oG sH **o &*0¦Ðj(] Ðk(] Ðq(] oV , oV +9ÆÐ…(] oV ,sTŒ¥J8¨Ї(] oV ,sVŒ¥J8ÐK(] oV ,sXŒ¥J+]Ðd(] oV ,sZŒ¥J+9З(] oV ,s\Œ¥J+(´++ (µ+€I *~I *:(‚ }J *B{J þoƒ *:(à }K *0¨{K oÊ sL *:(ý }M *0 3{M %Œj¤%Œk¤o| ¥q*:(‚ }N *B{N þoƒ *:(à }O *0¨{O oÊ sP *(Ø *Xg*(Ò *Xh*(Á *X*(à *X*(Ì *X*(Û *XÒ*(Õ *XÑ*(É *X*(Æ *X*(Ï *X*(6 *X*(= *X*(Q *&(Å **o &*09¦Ðj(] Ðk(] Ðq(] oV , oV +9íÐ…(] oV ,s{Œ¥J8ÏЇ(] oV ,s}Œ¥J8¨ÐK(] oV ,sŒ¥J8Ðd(] oV ,sŒ¥J+]З(] oV ,sƒŒ¥J+9І(] oV ,s…Œô¥J+(¶++ (·+€R *~R *:(‚ }S *B{S þoƒ *:(à }T *0¨{T oÊ sU *:(ý }V *0 3{V %Œj¤%Œk¤o| ¥q*:(‚ }W *B{W þoƒ *:(à }X *0¨{X oÊ sY *(Ø *Ö³*(Ò *Öµ*(Á *Ö*(à *Ö*(Ì *Ö*(Û *׆*(Õ *ׇ*(Z *ׇ*(É *×*(Æ *×*(Ï *×*(6 *X*(= *X*(Q *&(Å **o &*0¦Ðj(] Ðk(] Ðq(] oV , oV +9ÆÐ…(] oV ,s¤Œ¥J8¨Ї(] oV ,s¦Œ¥J8ÐK(] oV ,s¨Œ¥J+]Ðd(] oV ,sªŒ¥J+9З(] oV ,s¬Œ¥J+(¸++ (¹+€[ *~[ *:(‚ }\ *B{\ þoƒ *:(à }] *0¨{] oÊ s^ *:(ý }_ *0 3{_ %Œj¤%Œk¤o| ¥q*:(‚ }` *B{` þoƒ *:(à }a *0¨{a oÊ sb *(Ø *Zg*(Ò *Zh*(Á *Z*(à *Z*(Ì *Z*(Û *ZÒ*(Õ *ZÑ*(É *Z*(Æ *Z*(Ï *Z*(6 *Z*(= *Z*(Q *&(Å **o &*0¦Ðj(] Ðk(] Ðq(] oV , oV +9ÆÐ…(] oV ,sËŒ¥J8¨Ї(] oV ,sÍŒ¥J8ÐK(] oV ,sÏŒ¥J+]Ðd(] oV ,sÑŒ¥J+9З(] oV ,sÓŒ¥J+(º++ (»+€c *~c *:(‚ }d *B{d þoƒ *:(à }e *0¨{e oÊ sf *:(ý }g *0 3{g %Œj¤%Œk¤o| ¥q*:(‚ }h *B{h þoƒ *:(à }i *0¨{i oÊ sj *(Ø *س*(Ò *ص*(Á *Ø*(à *Ø*(Ì *Ø*(Û *Ù†*(Õ *Ù‡*(É *Ù*(Æ *Ù*(Ï *Ù*(6 *Z*(= *Z*(Q *&(Å *BŒõŒõþ*6Œõ(6 *0-–ob oÐ (rn>p(“ o” (f sE z~*0Ë©uð 9uuð ,   (ó*u,?u,(ô*u=,  (ò*(¼+*u=,í +Ýu,(u, +¡u=,¹ +©u=,§ 8”ÿÿÿ0ͪ(0+-U(/+-8¬(/+-+壟 ¥‚ (a ,+(a , {†+,(èz8f(0+-'(/+-+¡(/+-8”ÿÿÿ¥‚¥‚ +£¥ƒ ¥ƒ (c ,+(c , {†+,(èzþo *0i­9\9TuE 9ßuE ,   (” *u=,þ(é*uz,¥ þo&*u,  þ(ê*(Â+:·(Ã+-auz,$  ¥ o&  /* 1**u  ,   o   /* 1**(¼+*(Ã+-'uz,  8’ÿÿÿu  ,Ð  +°¥– ¥– 4* þ*(Â+:(Ã+--uz,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(Ã+--uz,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥–¥– 8gÿÿÿ¥—¥—/*þ*u=, 83þÿÿuz, 8<þÿÿu,  8Hþÿÿ(Â+:(Ã+--uz,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(Ã+--uz,  8þÿÿu  9Wþÿÿ  84þÿÿ¥–¥– 8þÿÿ(Â+:(Ã+--uz,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(Ã+--uz,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥–¥– 8õýÿÿ¥—¥—8‰þÿÿ*,**0 NW2*Xok Xok (ë ,*!X+²0 dW 2*X Xol X Xol (ë ,* !X +œ0 ~¯      2* !(í  , * !X 8‚ÿÿÿ0c°2*om om /+þ ,*o¼ o¼ /+þ , *X+0 }W2*X¤dY3on on (ë+X(ñ ,*!X8ƒÿÿÿ0 2W2*o¼ j!om (ð*0 ²oº 3 oº þ+9uoo oo /+þ ,*o¼ j o¼ j /+ þ,*    !(ì*oº 3 oº þ+9ãom om /+þ ,*om om  /+ þ,*o¼ j o¼ j o¼ j o¼ j   /+  þ  , *  /+  þ,*          !(î*oº oº   /+ þ ,*oº  (ï,*d(ñ*0R|Ži Ži /+þ ,*  /* £ £(ë,  +Ù X +Ò*0a³Ži Ži /+þ ,*  /9 £† £†/+þ,  +Ê X +Ã*~*~‘*ZŒõŒõþo *V(ö¥ þ(¥+*04(õ¥ (¥+þ Þt (è(å , Þþ*04(õ¥ (¥+þ Þt (è(å , Þþ*04(õ¥ (¥+þ Þt (è(å , Þþ*04(õ¥ (¥+þ Þt (è(å , Þþ*0D´Ži Ži þ -*  /% £† £†þ- +Þ X +×*0D´Ži Ži þ -*  /% £K £Kþ- +Þ X +×*ž, þþ+, þþ+,*þ*0H´Ži Ži þ -*  /) £‚ £‚(ÿ- +Ú X +Ó*ž, þþ+, þþ+,*þ*0H´Ži Ži þ -*  /) £ƒ £ƒ(- +Ú X +Ó*0D´Ži Ži þ -*  /% £„ £„þ- +Þ X +×*0D´Ži Ži þ -*  /% £d £dþ- +Þ X +×*0T¸uð 9¿uð ,   (*u9çu,(ý*u:9öu:  ,     (þ*u;  9ûu;  ,  (*u<9ûu<,(*u=9ƒu=,(*u>,Eu>,(*u=,( *þo® *u=,ê+Øu>,(u>, +šu=,µ+£u=,£8Žÿÿÿu=,ou=, 8!ÿÿÿu>,1u>, 8'ÿÿÿu=9?ÿÿÿ8*ÿÿÿu=9'ÿÿÿ8ÿÿÿu>,1u>, 8Ñþÿÿu=9éþÿÿ8Ôþÿÿu=9Ñþÿÿ8¼þÿÿu<9ëu<, 8þÿÿu=,ou=, 8&þÿÿu>,1u>, 8,þÿÿu=9Dþÿÿ8/þÿÿu=9,þÿÿ8þÿÿu>,1u>, 8Öýÿÿu=9îýÿÿ8Ùýÿÿu=9Öýÿÿ8Áýÿÿu=,ou=, 8Týÿÿu>,1u>, 8Zýÿÿu=9rýÿÿ8]ýÿÿu=9Zýÿÿ8Eýÿÿu>,1u>, 8ýÿÿu=9ýÿÿ8ýÿÿu=9ýÿÿ8ïüÿÿu;  9æu;  ,   8#üÿÿu<9ëu<, 8(üÿÿu=,ou=, 80üÿÿu>,1u>, 86üÿÿu=9Nüÿÿ89üÿÿu=96üÿÿ8!üÿÿu>,1u>, 8àûÿÿu=9øûÿÿ8ãûÿÿu=9àûÿÿ8Ëûÿÿu=,ou=, 8^ûÿÿu>,1u>, 8dûÿÿu=9|ûÿÿ8gûÿÿu=9dûÿÿ8Oûÿÿu>,1u>, 8ûÿÿu=9&ûÿÿ8ûÿÿu=9ûÿÿ8ùúÿÿu<9ëu<, 8[úÿÿu=,ou=, 8cúÿÿu>,1u>, 8iúÿÿu=9úÿÿ8lúÿÿu=9iúÿÿ8Túÿÿu>,1u>, 8úÿÿu=9+úÿÿ8úÿÿu=9úÿÿ8þùÿÿu=,ou=, 8‘ùÿÿu>,1u>, 8—ùÿÿu=9¯ùÿÿ8šùÿÿu=9—ùÿÿ8‚ùÿÿu>,1u>, 8Aùÿÿu=9Yùÿÿ8Dùÿÿu=9Aùÿÿ8,ùÿÿu:9Üu:  ,    82øÿÿu;  9æu;  ,   87øÿÿu<9ëu<, 8<øÿÿu=,ou=, 8Døÿÿu>,1u>, 8Jøÿÿu=9bøÿÿ8Møÿÿu=9Jøÿÿ85øÿÿu>,1u>, 8ô÷ÿÿu=9 øÿÿ8÷÷ÿÿu=9ô÷ÿÿ8ß÷ÿÿu=,ou=, 8r÷ÿÿu>,1u>, 8x÷ÿÿu=9÷ÿÿ8{÷ÿÿu=9x÷ÿÿ8c÷ÿÿu>,1u>, 8"÷ÿÿu=9:÷ÿÿ8%÷ÿÿu=9"÷ÿÿ8 ÷ÿÿu<9ëu<, 8oöÿÿu=,ou=, 8wöÿÿu>,1u>, 8}öÿÿu=9•öÿÿ8€öÿÿu=9}öÿÿ8höÿÿu>,1u>, 8'öÿÿu=9?öÿÿ8*öÿÿu=9'öÿÿ8öÿÿu=,ou=, 8¥õÿÿu>,1u>, 8«õÿÿu=9Ãõÿÿ8®õÿÿu=9«õÿÿ8–õÿÿu>,1u>, 8Uõÿÿu=9mõÿÿ8Xõÿÿu=9Uõÿÿ8@õÿÿu;  9æu;  ,   8tôÿÿu<9ëu<, 8yôÿÿu=,ou=, 8ôÿÿu>,1u>, 8‡ôÿÿu=9Ÿôÿÿ8Šôÿÿu=9‡ôÿÿ8rôÿÿu>,1u>, 81ôÿÿu=9Iôÿÿ84ôÿÿu=91ôÿÿ8ôÿÿu=,ou=, 8¯óÿÿu>,1u>, 8µóÿÿu=9Íóÿÿ8¸óÿÿu=9µóÿÿ8 óÿÿu>,1u>, 8_óÿÿu=9wóÿÿ8bóÿÿu=9_óÿÿ8Jóÿÿu<9ëu<, 8¬òÿÿu=,ou=, 8´òÿÿu>,1u>, 8ºòÿÿu=9Òòÿÿ8½òÿÿu=9ºòÿÿ8¥òÿÿu>,1u>, 8dòÿÿu=9|òÿÿ8gòÿÿu=9dòÿÿ8Oòÿÿu=,ou=, 8âñÿÿu>,1u>, 8èñÿÿu=9òÿÿ8ëñÿÿu=9èñÿÿ8Óñÿÿu>,1u>, 8’ñÿÿu=9ªñÿÿ8•ñÿÿu=9’ñÿÿ8}ñÿÿu9Èu, 8Uðÿÿu:9Üu:  ,    8Zðÿÿu;  9æu;  ,   8_ðÿÿu<9ëu<, 8dðÿÿu=,ou=, 8lðÿÿu>,1u>, 8rðÿÿu=9Šðÿÿ8uðÿÿu=9rðÿÿ8]ðÿÿu>,1u>, 8ðÿÿu=94ðÿÿ8ðÿÿu=9ðÿÿ8ðÿÿu=,ou=, 8šïÿÿu>,1u>, 8 ïÿÿu=9¸ïÿÿ8£ïÿÿu=9 ïÿÿ8‹ïÿÿu>,1u>, 8Jïÿÿu=9bïÿÿ8Mïÿÿu=9Jïÿÿ85ïÿÿu<9ëu<, 8—îÿÿu=,ou=, 8Ÿîÿÿu>,1u>, 8¥îÿÿu=9½îÿÿ8¨îÿÿu=9¥îÿÿ8îÿÿu>,1u>, 8Oîÿÿu=9gîÿÿ8Rîÿÿu=9Oîÿÿ8:îÿÿu=,ou=, 8Ííÿÿu>,1u>, 8Óíÿÿu=9ëíÿÿ8Öíÿÿu=9Óíÿÿ8¾íÿÿu>,1u>, 8}íÿÿu=9•íÿÿ8€íÿÿu=9}íÿÿ8híÿÿu;  9æu;  ,   8œìÿÿu<9ëu<, 8¡ìÿÿu=,ou=, 8©ìÿÿu>,1u>, 8¯ìÿÿu=9Çìÿÿ8²ìÿÿu=9¯ìÿÿ8šìÿÿu>,1u>, 8Yìÿÿu=9qìÿÿ8\ìÿÿu=9Yìÿÿ8Dìÿÿu=,ou=, 8×ëÿÿu>,1u>, 8Ýëÿÿu=9õëÿÿ8àëÿÿu=9Ýëÿÿ8Èëÿÿu>,1u>, 8‡ëÿÿu=9Ÿëÿÿ8Šëÿÿu=9‡ëÿÿ8rëÿÿu<9ëu<, 8Ôêÿÿu=,ou=, 8Üêÿÿu>,1u>, 8âêÿÿu=9úêÿÿ8åêÿÿu=9âêÿÿ8Íêÿÿu>,1u>, 8Œêÿÿu=9¤êÿÿ8êÿÿu=9Œêÿÿ8wêÿÿu=,ou=, 8 êÿÿu>,1u>, 8êÿÿu=9(êÿÿ8êÿÿu=9êÿÿ8ûéÿÿu>,1u>, 8ºéÿÿu=9Òéÿÿ8½éÿÿu=9ºéÿÿ8¥éÿÿu:9Üu:  ,    8«èÿÿu;  9æu;  ,   8°èÿÿu<9ëu<, 8µèÿÿu=,ou=, 8½èÿÿu>,1u>, 8Ãèÿÿu=9Ûèÿÿ8Æèÿÿu=9Ãèÿÿ8®èÿÿu>,1u>, 8mèÿÿu=9…èÿÿ8pèÿÿu=9mèÿÿ8Xèÿÿu=,ou=, 8ëçÿÿu>,1u>, 8ñçÿÿu=9 èÿÿ8ôçÿÿu=9ñçÿÿ8Üçÿÿu>,1u>, 8›çÿÿu=9³çÿÿ8žçÿÿu=9›çÿÿ8†çÿÿu<9ëu<, 8èæÿÿu=,ou=, 8ðæÿÿu>,1u>, 8öæÿÿu=9çÿÿ8ùæÿÿu=9öæÿÿ8áæÿÿu>,1u>, 8 æÿÿu=9¸æÿÿ8£æÿÿu=9 æÿÿ8‹æÿÿu=,ou=, 8æÿÿu>,1u>, 8$æÿÿu=9<æÿÿ8'æÿÿu=9$æÿÿ8æÿÿu>,1u>, 8Îåÿÿu=9æåÿÿ8Ñåÿÿu=9Îåÿÿ8¹åÿÿu;  9æu;  ,   8íäÿÿu<9ëu<, 8òäÿÿu=,ou=, 8úäÿÿu>,1u>, 8åÿÿu=9åÿÿ8åÿÿu=9åÿÿ8ëäÿÿu>,1u>, 8ªäÿÿu=9Âäÿÿ8­äÿÿu=9ªäÿÿ8•äÿÿu=,ou=, 8(äÿÿu>,1u>, 8.äÿÿu=9Fäÿÿ81äÿÿu=9.äÿÿ8äÿÿu>,1u>, 8Øãÿÿu=9ðãÿÿ8Ûãÿÿu=9Øãÿÿ8Ããÿÿu<9ëu<, 8%ãÿÿu=,ou=, 8-ãÿÿu>,1u>, 83ãÿÿu=9Kãÿÿ86ãÿÿu=93ãÿÿ8ãÿÿu>,1u>, 8Ýâÿÿu=9õâÿÿ8àâÿÿu=9Ýâÿÿ8Èâÿÿu=,ou=, 8[âÿÿu>,1u>, 8aâÿÿu=9yâÿÿ8dâÿÿu=9aâÿÿ8Lâÿÿu>,1u>, 8 âÿÿu=9#âÿÿ8âÿÿu=9 âÿÿ8öáÿÿ0îº9á9ÙuE 9uE ,   (’ *u=,þ(*u{,þo'*(0+-X(/+- þo® *(/+-+쥂¥‚ ,   þþ+, þþ+,* þ*(0+-)(/+-+ž(/+-8‘ÿÿÿ¥‚¥‚ +£¥ƒ ¥ƒ ,   þþ+,   þþ+,*  þ*u=, 8óþÿÿu{, 8ýþÿÿ(0+-/(/+-8ÿÿÿ(/+-8÷þÿÿ¥‚¥‚ 8ÿÿÿ(0+-/(/+-8Íþÿÿ(/+-8Àþÿÿ¥‚¥‚ 8Ïþÿÿ¥ƒ¥ƒ  8'ÿÿÿ*,**0 R2*Xok Xok (,(!X+±*0h 2* X Xol  X Xol (,4  !X  +›*0‚¼        2*  !(,7  !X  8ÿÿÿ*0@2*om om 3o¼ o¼ þ+,X+Ã*0 ‚ 2*X¤dY3on on (+X( ,3!X  8€ÿÿÿ*0 5W2*o¼ j!om ( *0 —½oº 3 oº þ+,Woo oo 3Co¼ j o¼ j  3+   !(***oº 3 oº þ+9®om om @•om om  @|o¼ jo¼ j o¼ j o¼ j  3   þ+,?        !( ****oº oº 3Loº ( ,,d( ***0I´Ži Ži þ -*  /* £ £(- +Ù X +Ò*~’*~“*j(ŒõŒõþop *j(ŒõŒõþop *ZŒõŒõþop **~”*~•*0D¾Ži Y 1 + 2' boï oq X w ZX Y +Õ*0>¾Ži Y 1 + 2! b£†X w ZX Y +Û*0>¾Ži Y 1 + 2! b£KX w ZX Y +Û*0?¾Ži Y 1 + 2" b£diX w ZX Y +Ú*0‚|oº YEo½ bo½ X ¦X*o¼ o» XY X1X + 2) boï oq X wZX Y +Ó *0¿9•u= ,g uð ,   (*u, (*u:, (*u;,   (*(*u{  ,   þo(*þo[ **f(¥$Œõþ(*js6¥$Œõþ(*BŒõþ(*0%À(H (G (¨+ bX(½+a*0=Á(^ (] (\ (¨+bX(½+a b X(¾+a*0XÂ(r (s (t (u (¨+bX(½+abX(¾+bX (¿+aa*0rÄ(v (w (x (y (z (¨+bX(½+abX(¾+bX (¿+aabX(À+a*04Å(H (G (H (G (¤+,  þ(Á+**0UÆ(^ (] (\ (^ (] (\  (¤+, (Á++, þ(Â+**0vÇ(r (s (t (u (r (s (t (u (¤+, (Á++, (Â++,  þ(Ã+**0—È(v (w (x (y (z (v (w (x (y (z  (¤+, (Á++, (Â++,  (Ã++,  þ(Ä+**09É(H (G (H (G (¥+,* þ(Å+*0\Ê(^ (] (\ (^ (] (\  (¥+,*(Å+,*þ(Æ+*0Ë(r (s (t (u (r (s (t (u (¥+,*(Å+  , *(Æ+  , * þ(Ç+*0¢Ì(v (w (x (y (z (v (w (x (y (z  (¥+  , *(Å+  , *(Æ+  , * (Ç+  , * þ(È+*Fo &}†*"{†*2þ(ë*2þ(ë**o &*6þ(*n(r–>p(“ o” sÒ z*o &*6þ(*n(r–>p(“ o” sÒ zFo &}‡*Ž|ˆ{‡(² -*{‡s6*J¥$þ(*¦{ˆY}ˆ{ˆ1¥$þ(***o &*J¥$þ(*B¥$þ(**o &*J¥$þ(*B¥$þ(******šþ,+ ~{ þþ,¥õ*s| z"¥õ*~uõþ,*þ,*~{ þ*.uõþ*0ÃŒõ, þõoð **n(rkp(“ o” sÒ zn(rº>p(“ o” sÒ z–Œõ,*(rkp(“ o” sÒ z6s] *&oF *(É+*&£õ**¤õ**(; *.(< *0 rÍ/+ /+ s= Y 2AY2&XX(; (< XX3ÚX X3¿*0@ó Y 24 Y  2X X (; (< X X3áX X3Ì*.(; *6(< *0 ¨Î/+ /+ /+ s= Y2dY2H Y 2,  XX X(; (<  X  X3ÔXX3¸XX3œ *0 d| Y 2W Y  2BY2)X XX (; (< XX3× X X3¾X X3©*6(: *>(8 *0 ãÏ/+ /+ /+ /+  s7 Y?‹Y2l Y   2P Y   24  XX X X(: (8  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 Ž+ Y ?~ Y  2fY2MY20X XXX  (: (8 XX3ÐXX3³ X X3šX X@‚ÿÿÿ**o &*0ÅÑÐj(] o~ ,8£Ð!(] oY Ži-8…Ð(] oV ,8lÐ\(] oB ,+VÐ (] oY Ži1+<Ð#(] oY Ži-+!£ ¥#o4_-+€ *~ *",**",**",**",**2rÚ>psï z2rB?psï z~Š*~‹*~Œ*~*~Ž*0}¾ŽiY 1\ ZX/OZ X 3£K¤K +)£KbX£Ka¤K 3 +X +©+ £K bX£Ka*0H×{€ {€ @.( E3j¡ØtD tD (À{‚  {‚ þ(¥+*tEtE(À{ƒ  {ƒ    þ(Å+*tF tF (À {„   {„  þ(Æ+*tGtG(À{… {… þ(Ç+*tHtH(À{† {† þ(È+*Y*00Ø¥Cþ9{€ {€ @( E+Z‰¸tD tD {‚  {‚ þ(¥+*tEtE{ƒ {ƒ   þ(Å+*tF tF  {„   {„    þ(Æ+*tGtG{… {… þ(Ç+*tHtH{† {† þ(È+*Y**0/ÚuC 9{€ {€ @( E-\‹ºtD tD {‚ {‚ þ(¤+*tEtE{ƒ  {ƒ    þ(Á+*tF tF  {„   {„  þ(Â+*tGtG{… {… þ(Ã+*tHtH{† {† þ(Ä+***0\â(‡ E/d™ÎtJ tJ (À {ˆ {ˆ  þ(¥+*tKtK(À {‰ {‰ þ(Å+*tL tL (À  {Š   {Š    þ(Æ+*tM tM(À  {‹ {‹ þ(Ç+*tNtN(À {Œ {Œ þ(È+*tOtO(À { { þ(Ê+*0Sã{Ž {Ž @9(‡ E+Z‰¸çtJ tJ {ˆ  {ˆ þ(¥+*tKtK{‰ {‰   þ(Å+*tL tL  {Š   {Š    þ(Æ+*tMtM{‹ {‹ þ(Ç+*tNtN{Œ {Œ þ(È+*tOtO{ { þ(Ê+*Y*0Fä (‡ E-\¾ïtJ  ¹y7ž{ˆ Œõ(bcXXX *tK  ¹y7ž {‰ Œö(bcXXX *tL ¹y7ž{Š Œ÷(bcXXX *tM ¹y7ž{‹ Œø(bcXXX *tN  ¹y7ž {Œ   Œù(bcXXX *tO  ¹y7ž {   Œú(bcXXX *0Qã{Ž {Ž @9(‡ E+Z‰¸çtJ tJ {ˆ  {ˆ þ(¤+*tKtK{‰ {‰   þ(Á+*tL tL  {Š   {Š    þ(Â+*tMtM{‹ {‹ þ(Ã+*tNtN{Œ {Œ þ(Ä+*tOtO{ { þ(Ë+**0Kã{Ž {Ž @3(‡ E*X†´âtJ tJ {ˆ  {ˆ þ(£+*tKtK{‰ {‰   þ(Ì+*tL tL  {Š   {Š    þ(Í+*tMtM{‹ {‹ þ(Î+*tNtN{Œ {Œ þ(Ï+*tOtO{ { þ(Ð+**0•í( E/d™Î8tQ tQ (À { {  þ(¥+*tRtR(À {‘ {‘ þ(Å+*tS tS (À  {’   {’    þ(Æ+*tT tT(À  {“ {“ þ(Ç+*tUtU(À {” {” þ(È+*tVtV(À {• {• þ(Ê+*tWtW(À {– {– þ(Ñ+*0iî( E'V…´ãtQ tQ { {  þ(¥+*tRtR{‘ {‘ þ(Å+*tStS {’   {’    þ(Æ+*tT tT  {“  {“ þ(Ç+*tUtU{” {” þ(È+*tVtV{• {• þ(Ê+*tWtW{– {– þ(Ñ+*0{ï ( E-\¾ï tQ  ¹y7ž{ Œõ(bcXXX *tR  ¹y7ž {‘ Œö(bcXXX *tS ¹y7ž{’ Œ÷(bcXXX *tT ¹y7ž{“ Œø(bcXXX *tU  ¹y7ž {”   Œù(bcXXX *tV  ¹y7ž {•   Œú(bcXXX *tW  ¹y7ž {– ŒX(bcXXX *0iî( E'V…´ãtQ tQ { {  þ(¤+*tRtR{‘ {‘ þ(Á+*tStS {’   {’    þ(Â+*tT tT  {“  {“ þ(Ã+*tUtU{” {” þ(Ä+*tVtV{• {• þ(Ë+*tWtW{– {– þ(Ò+*0bî( E&T‚°Þ tQ tQ { {  þ(£+*tRtR{‘ {‘ þ(Ì+*tStS {’   {’    þ(Í+*tT tT  {“  {“ þ(Î+*tUtU{” {” þ(Ï+*tVtV{• {• þ(Ð+*tWtW{– {– þ(Ó+*07š{Ü ,. {Ü {ó /¤õX+Ë**0«(r¸?p(“ o” €Š(ræ?p(“ o” €‹(r@p(“ o” €Œ(r.@p(“ o” €(rép(“ o” €Žs €s,€s,€‘s0€’s3€“s:€”s=€•(ö¥ €–(¥$€—(¥$€˜s €™s€šs€›s€œs€s€žs€Ÿs€ s€¡s€¢s €£s"€¤s$€¥s&€¦s(€§rJ@psÒ s–€–*:(‚ }— *B{— þo˜ *:}™ ( *B{™ þoƒ *:(‚ }š *B{š þo˜ *:}› ( *B{› þoƒ *:(â }œ *>{œ o *:(‚ }ž *B{ž þo˜ *:(ý }Ÿ *Z{Ÿ s þo  *:(Ó }¡ *^{¡ sÐ þo¢ *:(Þ }£ *0 {£ s¤ þo¥ *:(ô }¦ *0 {¦ s§ þo¨ *~³*rp*rD.p*r4-p*rV-p*rmp*rò)p*rÆ)p*r*p*rº@p*râ@p*rAp*r .p*rép*r .p*r@p*rö-p*r7p*r]p*r )p*r| p*r.@p*rp*r–>p*r8=p*rF>p*r¨=p*r‚=p*r >p*râ=p*r¤Ap*r;p*r>;p*r`;p*r€;p*rkp*rº>p*ræ?p*rìp*rÐ'p*r5p*rÍp*rQp*r>)p*r’'p*r´'p*rŽ(p*r¸(p*rÞ(p*r)p*róp*r­p*rä,p*r p*rp*r@p*rzp*r¼p*rúp*rd p*r2 p*r  p*rˆ!p*r°!p*ræ p*rd&p*rR'p*rh.p*rN p*rÖ.p*r˜p*rÔp*rp*rŽp*r²p*rDp*rp*r p*rRp*r6p*r˜p*rtp*rp*r’p*rÎp*râp*rp*rJp*rp*ròp*r‚p*rÚp*r2p*rdp*rp*r~p*rÄp*r¬p*r¼Ap*rÚp*rnp*rÆp*r,p*r^p*r’p*rpp*r°p*r@p*rp*rp*r¢p*ràp*rp*rÜp*rŽp*rôp*rlp*ròp*rRp*rzp*r"p*r8p*rN p*r@(p*rô'p*rÚAp*ròAp*rRBp*r~Bp*r²Bp*rîBp*rCp*R((“ þo” *b((“ o” (f *f((“ o” (‰ *j((“ o” (A *0¥rJCp(© sª €³*s« *"s *&sZ **s¬ *2s­ *:s® *Bs¯ *0 s° s± *"bXa*:(4(4*R(4(4(4*F(6(4*b(6(4(4*j(6(5(4*r(6(6(4*{² *:( }² *6(³ o'*0.ñ-*uk -*{² Œj{² Œjop *6(´ o&*0Wò-*uk -+rXCp (b oÐ ¢(]r¢Cps! z{² Œj{² Œjo *2(³ o(*J{² Œjoq *"o(*0sÓ rõ#poÔ &o)*–{² Œjoµ &r9poÔ &oÐ * *{¶ *{· *V( }¶ }· *6(³ o'*0Nó-*uÐ -*{¶ Œj{¶ Œjop ,{· Œk{· Œkop **6(´ o&*0{ô-*uÐ -+rXCp (b oÐ ¢(]r¢Cps! z {¶ Œj{¶ Œjo ,*{· Œk{· Œko *2(³ o(*¢{¶ Œjoq {· Œkoq (4*"o(*0sÓ rõ#poÔ &o)*0C{¶ Œjoµ &r®CpoÔ &{· Œkoµ &r9poÔ &oÐ * *{¸ *{¹ *{º *r( }¸ }¹ }º *6(³ o'*0lö-*u -*{¸ Œj{¸ Œjop ,;{¹ Œk{¹ Œkop ,{º Œq{º Œqop **6(´ o&*0÷-*u -+rXCp (b oÐ ¢(]r¢Cps! z {¸ Œj{¸ Œjo ,*{¹ Œk{¹ Œko ,*{º Œq{º Œqo *2(³ o(*æ{¸ Œjoq {¹ Œkoq {º Œqoq (5*"o(*0sÓ rõ#poÔ &o)*0a{¸ Œjoµ &r®CpoÔ &{¹ Œkoµ &r®CpoÔ &{º Œqoµ &r9poÔ &oÐ * *{» *{¼ *{½ *{¾ *’( }» }¼ }½ }¾ *6(³ o'*0Šù-*ua -*{» Œj{» Œjop ,Y{¼ Œk{¼ Œkop ,;{½ Œq{½ Œqop ,{¾ Œy{¾ Œyop **6(´ o&*0¿ú-*ua -+rXCp (b oÐ ¢(]r¢Cps! z {» Œj{» Œjo ,*{¼ Œk{¼ Œko ,*{½ Œq{½ Œqo ,*{¾ Œy{¾ Œyo *2(³ o(*0J{» Œjoq {¼ Œkoq {½ Œqoq {¾ Œyoq (6*"o(*0sÓ rõ#poÔ &o)*0{» Œjoµ &r®CpoÔ &{¼ Œkoµ &r®CpoÔ &{½ Œqoµ &r®CpoÔ &{¾ Œyoµ &r9poÔ &oÐ * *{¿ *{À *{Á *{ *{à *²( }¿ }À }Á } }à *6(³ o'*0«ü-*ud -*{¿ Œj{¿ Œjop 9w{À Œk{À Œkop ,Y{Á Œq{Á Œqop ,;{ Œy{ Œyop ,{à Œƒ{à Œƒop **6(´ o&*0áý-*ud -+rXCp (b oÐ ¢(]r¢Cps! z {¿ Œj{¿ Œjo ,*{À Œk{À Œko ,*{Á Œq{Á Œqo ,*{ Œy{ Œyo ,*{à Œƒ{à Œƒo *2(³ o(*0[{¿ Œjoq {À Œkoq {Á Œqoq { Œyoq {à Œƒoq (7*"o(*0sÓ rõ#poÔ &o)*0{¿ Œjoµ &r®CpoÔ &{À Œkoµ &r®CpoÔ &{Á Œqoµ &r®CpoÔ &{ Œyoµ &r®CpoÔ &{à Œƒoµ &r9poÔ &oÐ * *{Ä *{Å *{Æ *{Ç *{È *{É *Ò( }Ä }Å }Æ }Ç }È }É *6(³ o'*0Ìÿ-*un -*{Ä Œj{Ä Œjop 9˜{Å Œk{Å Œkop 9w{Æ Œq{Æ Œqop ,Y{Ç Œy{Ç Œyop ,;{È Œƒ{È Œƒop ,{É Œo{É Œoop **6(´ o&*0-*un -+rXCp (b oÐ ¢(]r¢Cps! z {Ä Œj{Ä Œjo ,*{Å Œk{Å Œko ,*{Æ Œq{Æ Œqo ,*{Ç Œy{Ç Œyo ,*{È Œƒ{È Œƒo ,*{É Œo{É Œoo *2(³ o(*0l{Ä Œjoq {Å Œkoq {Æ Œqoq {Ç Œyoq {È Œƒoq {É Œooq (8*"o(*0sÓ rõ#poÔ &o)*0»{Ä Œjoµ &r®CpoÔ &{Å Œkoµ &r®CpoÔ &{Æ Œqoµ &r®CpoÔ &{Ç Œyoµ &r®CpoÔ &{È Œƒoµ &r®CpoÔ &{É Œooµ &r9poÔ &oÐ * *{Ê *{Ë *{Ì *{Í *{Î *{Ï *{Ð *ò( }Ê }Ë }Ì }Í }Î }Ï }Ð *6(³ o'*0í-*up -*{Ê Œj{Ê Œjop 9¹{Ë Œk{Ë Œkop 9˜{Ì Œq{Ì Œqop 9w{Í Œy{Í Œyop ,Y{Î Œƒ{Î Œƒop ,;{Ï Œo{Ï Œoop ,{Ð Œq{Ð Œqop **6(´ o&*0%-*up -+rXCp (b oÐ ¢(]r¢Cps! z {Ê Œj{Ê Œjo ,*{Ë Œk{Ë Œko ,*{Ì Œq{Ì Œqo ,*{Í Œy{Í Œyo ,*{Î Œƒ{Î Œƒo ,*{Ï Œo{Ï Œoo ,*{Ð Œq{Ð Œqo *2(³ o(*0}{Ê Œjoq {Ë Œkoq {Ì Œqoq {Í Œyoq {Î Œƒoq {Ï Œooq {Ð Œqoq (9*"o(*0sÓ rõ#poÔ &o)*0Ù{Ê Œjoµ &r®CpoÔ &{Ë Œkoµ &r®CpoÔ &{Ì Œqoµ &r®CpoÔ &{Í Œyoµ &r®CpoÔ &{Î Œƒoµ &r®CpoÔ &{Ï Œooµ &r®CpoÔ &{Ð Œqoµ &r9poÔ &oÐ * *{Ñ *{Ò *{Ó *{Ô *{Õ *{Ö *{× *{Ø *0b( Œsu|-r´Cp(^sE z}Ñ }Ò }Ó }Ô }Õ }Ö }× }Ø *6(³ o'*0-*ur -*{Ñ Œj{Ñ Œjop 9Ú{Ò Œk{Ò Œkop 9¹{Ó Œq{Ó Œqop 9˜{Ô Œy{Ô Œyop 9w{Õ Œƒ{Õ Œƒop ,Y{Ö Œo{Ö Œoop ,;{× Œq{× Œqop ,{Ø Œs{Ø Œsop **6(´ o&*0G-*ur -+rXCp (b oÐ ¢(]r¢Cps! z {Ñ Œj{Ñ Œjo ,*{Ò Œk{Ò Œko ,*{Ó Œq{Ó Œqo ,*{Ô Œy{Ô Œyo ,*{Õ Œƒ{Õ Œƒo ,*{Ö Œo{Ö Œoo ,*{× Œq{× Œqo ,*{Ø Œs{Ø Œso *2(³ o(*0 {Ø Œst| o+2o**o+Y  YE#R’ãE¸87{× Œqoq o*(4*{Ö Œooq {× Œqoq o*(5*{Õ Œƒoq {Ö Œooq {× Œqoq o*(6*{Ô Œyoq {Õ Œƒoq {Ö Œooq {× Œqoq o*(7*{Ó Œqoq {Ô Œyoq {Õ Œƒoq {Ö Œooq {× Œqoq o*(8*{Ò Œkoq {Ó Œqoq {Ô Œyoq {Õ Œƒoq {Ö Œooq {× Œqoq o*(9*{Ñ Œjoq {Ò Œkoq {Ó Œqoq {Ô Œyoq {Õ Œƒoq {Ö Œooq {× Œqoq o*(:**"o(*0sÓ rõ#poÔ &o)*0é{Ñ Œjoµ &r®CpoÔ &{Ò Œkoµ &r®CpoÔ &{Ó Œqoµ &r®CpoÔ &{Ô Œyoµ &r®CpoÔ &{Õ Œƒoµ &r®CpoÔ &{Ö Œooµ &r®CpoÔ &{× Œqoµ &r®CpoÔ &{Ø Œst|o)*b{Ø Œst|o+X*BSJB v2.0.50727l¼#~(8#Strings¸<D#USÈ€#GUIDØ€á#BlobW¶ ú3¡…Ø¶Ø ’‡:¦½Pt¦ Ó42+]+~+²+8+E+  +*  Q 6 ß +0  < 6 V +´ 6  6 Ñ 6 C +@+É+ ¬¡Ð+ Q¡ ´¡!6 *+a*O*‘*O*:+O*j1O*T26 h2O*æ9 k>O*J6 SP+{` Ëb«båb«bîb«b(c c‹ì?@  BA‘‚SB£$/&F£$:&G¥$E&H§$P&I©[J«uK­L¯©M± ÃBN³‚SOÇ$Ò2TÇ$Ý2UÉ$è2VË$ó2WÍ$þ2XÏ YÑ#ZÓ=[ÕW\×q]Ù ‹B^Û‚S_ñ$š>eñ$¥>fó$°>gõ$»>h÷$Æ>iù$Ñ>jûÜkýölÿm*nDo^p xBq ‚Sr!$‡Jy!$’Jz#$J{%$¨J|'$³J})$¾J~+$ÉJ-Ô€/î1 ‚3" ƒ5< „7V …9p †; Š B‡= ª BŠI ¹ BŠK!Æ BŠU!Ò BŠ[ Þ B‹h‚SŒy  í Žy‚S‘“ _ í ““ o +•– { +—š¡ ‚ +™ ¡ Ž +™£¡ µ œ ™¤¡ Æ œ ™¦!Ï œ )™¦  ñ ™ª!J í ›¸ b í ½…SÂ$l v Â$s v¢Å{ §Ë‘ ¨Î!¨ í ©Ô!ß í ­!î í ®   í ° …S°$ †³$ †· ¸7 ¹!M í º !Y í ¾U!„ h ¿W!’ h Âb  h ŽÂo!¯ h Âq » œ ˆ Ñ œ Ë!à œ )Å“ ï œ Å— ý œ È›!! Éž !8 ( EË¢€ x M ÑÖ…SÒä$~ ŒÕä$‹ ŒÕå$• ŒÖçœ ×é¸ ØêÑ Ùì€ ç M Úî…SÚö$î ¬Ýö$ó ¬àú$ø ¬æý éê %ë  9M ì!FM ì TBö# cB–÷%!Žr÷&€ ˜rý1…Sþ@$à@$¦àC$®àE$¹àH KÚ Nñ P  S #r V…S¦$1@¦$=A¨$LBª$\C¬$gD®$rF±$„G³$”Hµ$¦I·$¶J¹$ÉK»$ÚL½$íM¿$þNÁ$ OÃ$PÅ$2QÇ$;RÉ$FSË$TTÍ$_UÏ$gWÒvXÔ‘YÖ¯ZØÎ[Úè\Ü]ß#^áB_ãc`å‚aç¤béÄcëædíeï!fñEgóghõi÷™jù¶kûÐlýçm rn rÀp9 +p; !A0Eq= !_0EsG!q0EtR!~0wY –œ }e žœ j ®œ ƒo ¼œ „s Çœ ‡|Øœ Œ„çœ ‰ õœ ’Œ!œ “ œ “œ! œ ”ž,œ ”¼Mœ šÉ!Wœ  Úqœ ¡Ü ¹Š§î ¿Š§î ÈŠ§î ÏŠ§î ÖŠ§î ÝŠ§î ⊧î€ê§î€ê­î€1²îEB²î \¢² r¢²%ˆ² ž¦³ ´¦³%ʳ€Þµ'€ö·(€ú·(€·(€·(€ ·(&œ ·(… 7·3%G®¸:%Rº>%]®¼@%k¾D y¶ÀF ‡ºÁH%˜®ÂJ%¤ÅN%°®ÈP%ÀÊT%ÐËV%ØÏZ%àÓ^%íÕ` úÂ×b ÂØdœ Ùf  ÆÙo +ÆÛq 9ÆÝs HÆàu VÆâw bÆåy rÆç{ }Æè} Я逕œ ì ¢Æì„ ¯Êî† ¼Îïˆ äÒðŠ ÷ÖðŒ  ÚðŽ Þð 0âó’ Aæõ” Nêõ– ]Êö˜ lÎöš{œ öœ ‰îöž ¸ò÷  Þöø¢ öêù¤ úû¦ &úý¨ <þþª uþÿ¬%Š® Ÿ°%Õ² ê´ ÿþ ¶ þ¸%)º ?¼ T ¾ gêÀ ‚Â Ä ¸ÆÑœ È âÎ ñÐ Ò "Ô .&Ö D* Ø Z*!Ú n#Ü ~.$Þ%%à€«œ &ä ½Æ&ç ÉÊ'é ÖÎ(ë€ãœ )í ø2)ð 6*ò &:+ô >>,ö I6,ø V:,ú c2,ü 6-þ :.€»œ / Å>/ Ôæ0 á>1 ùæ2 >2 (æ3 ?>3 X25 o>8 ˆ6:  ¡>=" º:?$ ÓBB& ôBC(D*E,"F. 3>J1 >>L3ZN5 gFS> {BT@€œ UB… ¡UW…SU_$ªJX_$­JYa$³JZc¼[eÎ\gã]i%û^k />^m >>do MBjq dBks n>lu |Bnw ˆ2oy ‘>q{ Bs} §>u ³>w ¿Byƒ É>{… Ô>}‡ ß2‰ è>‚‹ ô>„  6†  >‰‘  >‹“ " :• , B— < 6’™ H B”› U >– a >˜Ÿ m :š¡ y Bœ£ Œ Nž¥ ¥ êž§ ° &Ÿ© » ¡« Æ &¢­ Ñ R¤¯ Ú V¥±€ê 0¦³€ü ª´ !Z¯É%!¯Ë "!ê°Í .!^±Ï 8!b±Ñ%B!±Ó%N!²Õ%Z!³× f!>´Ù r!>¶Û ~!>¸Ý Š!ƺß –!BÀá ­!2Áã º!6Âå Ç!fÃç Ò!>Äé ä!>Æë ö!>Èí "2Êï "6Òñ (":Ùó 8"jàõ H"nç÷ X"nèù f"êéû z"Êéý "Îéÿ ¦">é%º"ê Ì">î%Ù"ï æ"æô  ñ"rõ  #&ö %#÷ .#>ú%E#ü \#v s#r Š#B ›#z ¶#V Ï#ê ð#~! $~# 2$V % S$V ' r$V) “$ê+%£$- ·$ê/%Ç$1 Õ$‚3 é$V5 û$ò!7 %ò#9 #%ò&; 7%†*= J%Š+? Z%.+A l%ê+C%|%,E Ž%Ž1G  %ê7I ²%Æ8K Ä%’=M Ö%–BO è%‚CQ ú%VES  &šGU%&GW &2HY 1&6K[ C&:N] U&žQ_ g&¢Ta w&&Vc Ž&&Ve £&¦Wg%²&Zi Â&Ž[k%Ò&]m â&ª`o ò&®aq 'vbs  '>cu '²dw #'¶dy /'ºh{ ;'²l} P'¾l e'ºn z'²pƒ ‰'Âp… ˜'ºs‡ ¥'Æv‰ ±'Vv‹ ½'¾y Ø'º{ ó'º}‘ (~“ (V• 9(Vƒ— F(Ê…™ O(&†› X(&† a(&‡Ÿ h(ƈ¡ q(Ɖ£ |(¾Š¥ ˜(΋§ ´(º© Î(²« ê(º­ )Ư )V± 6)Æ‘³`)A)’µ€p)’½{)r’½‹)r’À ¡)Ò’Ù µ)Ö’Û Î)Ò’Ý ç)Ú’ß*r•á *• !*Þ˜… 9*☇ n*晉 ƒ*êš‹ Ÿ*îš ¶*òš Æ*òš‘ Ù*öš“ è*ú›• ò*þ›— ÿ*›™ +›› + › ,+œŸ E+¡ O+ž£ ]+ž¥ h+¢§ t+ £© }+¤« +¥­ ¢+¥¯ ·+¦± Ì+"§³ Ö+&¨µ ã+*©· ò+.©¹ ,&ª» ,*¬½ ,2¬¿!.,­Á 9, °Å H,6±Ç T,:±É b,>²Ë p,B³Í ~,B¶Ï Œ,B·Ñ š,B¹Ó ¨,B»Õ ¶,6¼× Á,>¼Ù Ï,B½Û Ý,B¿Ý ì,FÀß û,FÃá  -JÄã -NÆå /-JÈç E-*Êé [-.Êë s-RËí „-VËï —-VÌñ ª-VÌó ½-VÌõ Ð-VÌ÷ ã-VÑù ö-VÑû  .VÑý .VÑÿ /.VÑ  C.VÒ  W.VÔ  k.VÔ  .VÔ  “.VÔ  §.VÔ  ».VØ  Ï.VÚ  ã.VÚ  ÷.VÚ   /VÚ  /VÚ  3/VÚ  G/VÚ  [/VÛ  o/VÜ!  ƒ/VÝ#  —/VÞ%  «/Vß'  ¿/Và)  Ó/Vá+  ç/Vâ-  û/Vã/  0Vä1  #0Vå3  70Væ5  K0Vç7  _0Vç9  s0Vë;  ‡0Ví=  ›0Ví?  ¯0VîA  Ã0VîC  ×0VïE  ë0VðG  ÿ0VñI  1VòK  '1VóM  ;1VóO  O1ZôQ  u1^ôS  ‘16ôU  £1bôW  ·1föY  Ó1j÷[  ë1nø]  þ1 ù_  2ûa  2jüe  %2rþg %;2i  q2l  2w %«2{  É2‚~  ë2†€  ÿ2Š‚  3‚„  !3ކ …+3ˆ !:3Ž  E3’ ’  U3– ” €g3r –  o3š ¢  |3ž ¤ €‰3 ¦  •3¢·  ž3¦¹  ¨3ª»  ±3Þ½  Â3Ò¿  Õ3®Á  ã3²à  õ3Å 4BÇ  4¶Õ  14º×  O4–Ù  m4¾Û  ‰4êÝ  ¢4Âß  ¹4º á  Ü4º!ã  ü4Æ"å  5Ê"ç  :5ê"é  Y5ê"ë  u5ê"í €•5B#ï ! 5#  «5Î&  É5Î(!  é5Î-#  6Î2%  (6Ò6'  >6Ò9)  T6Ò<+  j6Ò?-  €6ÒB/  –6ÒE1  ¬6ÒH3  Â6ÒK5  Ø6ÒN7  î6ÒQ9  7ÒT;  7ÒW=  37ÒZ?  J7Ò]A  a7Ò`C  x7ÒcE  ’7ÒhG  Ÿ7ÊnI  «7ÖoK €¹7rM €Á7M vN  É7v€  Ð7Úy†  Ú7Þyˆ !æ7 yŠ  ñ7}Š …S€–  ú7º‚–   8惘  8ê…š  8  48ò‹ž  K8öŒ   b8î¢  y8òޤ  8ö¦  §8ú¨  ¾8ꑪ  É8þ–¬  Ú8›®  æ8ž°  õ8¤²  þ8 ­´   9¯¶  #9°¸  ;9±º  S9î²¼  k9ò³¾  ƒ9ö´À  ›9îµ  ³9¸Ä  ¾9¹Æ  Ë9¹È %Ù9ºÊ  ð9ºÌ  ý9îÁÎ   :òÂÐ  :öÃÒ  !:"ÄÔ  -:&ÇÖ  ;:*ÈØ  N:.ÈÚ  a:.ÉÜ  t:.ÊÞ €Š:M Ëà  —:Ëç …SÍö $ :d Óö $ª:d Ôø $·:d Öû $Â:d ×ý $Ê:d Øÿ Õ:Ù î:Ú  ;Û $;Ü ;;Ý  U;Þ …Sà $_;” ç $j;” è $;” é! $‹;” ê# $œ;” ì& $«;” î) ·;ï+ Ñ;ð- õ;ñ/ <ò1 0<ó4 N<ô7 …i<õ9  o<2õ<  y<2õ> …*õ@ €…<M õ@  <¦õh  ˜<¦õj  ¢<¦õl  ¬<¦õn  ¶<¦õp  Â<¦õr  Ó<¦õt  é<6õv  ø<6õx  =6õz  =6õ|  "=¦ö~  1=ºö€ €==ö‚  F=:ƒ V=B… ‚f=… €v=‘ €y= ’ !†=  =>    =>  …©=  …­= # €°= * €³=$+ %º=$+  É=B%.  ×=%0 %Þ=&2 %ð=(4 %>)9 % >*; %>,= €.>h -B  3>Î-‘  P>R/“  u>V/•  ’>Z/—  ¯>^0™  ¼>b1›  Õ>b1  ð>b1Ÿ   ?f2¡  &?â2£  C?â3¥  `?j3§  }?n5©  “?n5«  «?n5­  Ã?n7¯  Û?B8±  ÷?r:³  @B:µ  !@j<·  .@j=¹  A@B?»  Y@fA½  t@âA¿  ‘@jAÁ  ¥@BBà €¾@DÅ  Ç@ZÇ  Ù@vZÉ  ë@z[Ë  ø@Î\Í Aí ]Ï €"Aí ]ï  0Aº]  ;Aº_  GAºa! !UAc# %cAe(  wAÆg.  ‰A~i0 €•Aj2  šA‚j3  £A†k5  ­AŠm7  ·AŠm9 ÈAí m;  ÒAŽmT  ÜA’mV  èA’nX €÷Aí oZ  B–o  Bšpƒ ! Br… %.BtŠ €@Bv  EB¢v’  }B¦v”  ³Bªw–  íB¦w˜  %C®xš  FC²yœ TCí yž bCí y§ €pCy³ xCí y³ €„Cy‹Cí y€–CyVœCByV ©Cºyc ²C¶{e ÂCº}g€ÍCiÕCí i ßCº¹ ðCº€» Dº‚½ Dºƒ¿ &Dº…Á 1Dº‡Ã =D¾ŠÅ HDÂ‹Ç RDÂŒÉ cDÆË lDÂŽÍ wDÊÏ DÎÑ ˆDºÓ%‘DÒÕ šDº—Û ­DÖ˜Ý »DÖ™ß ÇDº›á ÔDºœã%ãDÒå%ñDÚ£ë%ÿDÒ©ñ% EÞ°÷ Eâ¸ý #Eê»ÿ 0Eº½ >Eƾ MEæÀ \EêÀ kEîÀ %xEÒ %†EÒÉ –E¦Ñ ¢E¦Ó ¬EÆÔ »EòÖ ÊEöÖ%×EÒØ!%æEÒÞ'%ðEÒå-ÿEñ ì3 !FEì@%FíC%(FíF%9FîI CFïL UFºðR bFÂóT }FÆõV¥ šFõX!­FõY!ÁF÷\ ÔFêýe çF¦þg üFºi% Gk !Gq 4G¦ s OG  u%UG w%gG y€wGí ~… G‚…S‹$ˆG‹$ŽGŒ$”GŽ™G®G‘ÃG“¥ ×G• ãG— òGÖ ûGŸ!ø I–@û%IBý%™IF!¯IK !ÁIN%ÍIP€æIR%ëIÒRüIí T"%JT$+Jí U&%8JU*%FJU-%[JV0%hJV3€yJX6†JBX6€“JXC›Jí XC ©J"XV ±J"ZX ÀJ"\Z ÉJ"]\€ÔJ`^€ÿJÜJ`^€KÜJ`f… K`Ž€#K`–*Kœ `–9KB` CKz` XK&b lK*d zKžd ŒK*d œK*d‚®Kd!ÁK dy… ÆKhy I.i„ ÜK.i‰… òK2jŽ… L.m– 6L6p%FL:pŸ%XLu¥ jLBy¨%zLFyª%ŒL~° žLN‚³%¯LR‚µ%ÂL‡» ÕLZ‹¾%æL^‹À%ùLÆ  Mf”É%Mj”Ë%0M™Ñ CMrÔ%UMvÖ%iM¢Ü }M~¦ß%M‚¦á%ŸM«ç ±MНê%ÂMޝì%ÕM´ò èM–¸õ%øMš¸÷% N½ý N¢Á%+N¦Á%& DVÚ>( TV?* jVî@- zVÚ@/ ŠVòA1 šVÚA3 ªVB5 ÁVîC8 ÑVÚC: áVòD< ñVÚD> WE@ WîFC 'WÚFE 7WòGG GWÚGI WWHK nWîIN ~WÚIP ŽWòJR žWÚJT ®WKV ÄWúLY ÔW&L[ äW&M] ôWN_ X&Na X&Oc‚$XPe‚,XPu…6XPz€AXí Pz TXPeXBS†‚ wX*S† „XzSŠ%XÒUŒ‚ ›X.VŽ ¨XÒV’%¶X2X”%ÃX2Y–‚ ÐX6Z˜%ÝX:Zœ%êX:[ž%÷X:\  Y2]¢‚ Y>_¤ Y:_¨%-YBaª%:YBb¬%GYBc®%TYBd°aYBe²%tYe%•Ye %½Yf %ÏYf%ãYf%öYf% Zf%Zf%/Zf%CZf%UZf%iZf%}Zf %‘Zf"%¦Zf$%¹Zf&%ÎZf( ãZf*%þZh.% [h0 [h2 6[i5 S[j8 x[‚k; †[†k= ”[Šk? ¢[ŽkA °[’lC ¾[–mE Ì[nG ç[zoJ ò[*pL ý[ÒqN \zrP \*sR \–tT ,\~tV :\6tX I\BtZ X\ft\ g\¢t^ v\Št` …\Ztb ”\Ntd £\rtf ²\úth Á\tj Ð\štl ß\tn ]zuq  ]*vs ]Òwu "]zxw .]*yy :]–z{ I]~z} X]6z g]Bz v]fzƒ …]¢z… ”]Šz‡ £]žz‰ ²]Zz‹ Á]Nz Ð]rz ß]úz‘ î]z“ ý]šz•  ^z— '^z{š 3^*|œ ?^Ò}ž K^z~  W^*¢ c^–€¤ r^~€¦ ^6€¨ ^B€ª Ÿ^f€¬ ®^¢€® ½^Š€° Ì^Z€² Û^N€´ ê^r€¶ ù^ú€¸ _€º _š€¼ &_€¾ H_zÁ T_*‚à `_҃Šl_z„Ç x_*…É „_–†Ë “_~†Í ¢_6†Ï ±_B†Ñ À_f†Ó Ï_¢†Õ Þ_Š†× í_Z†Ù ü_N†Û  `r†Ý `ú†ß )`†á 8`š†ã‚G`†å S`†,%c`‡0%`‡3 §`‡6 º`‰: Ì`‰=‚Ü`‰@ ï`‰^‚ú`Ša‚ aŠg€aBŠl€%aBŠm€fZ[f<f •f ›f Þf ìf g Yg<ygM‘g<¬g!Hh<MhZVhZ`hZghZshZ…hZŸh<ÿe< j ‘g<jZ jZrj<V€X V€c #3k*#3k9^e^e.V€± V€¼ V€Ç #3k*#3k9#3k^eõ^e^e#_l V€/ V€: V€E V€P #3k*#3k9#3k#3k!^eÊ ^eÙ ^eè ^e÷ #_l V€Ò V€Ý V€è V€ó V€þ #3k*#3k9#3k#3k!#3k5&^eà%^eñ%^e&^e&^e$&#_l V€š V€¥ V€° V€» V€Æ V€Ñ #3k*#3k9#3k#3k!#3k5&#3ku,^eÂ,^eü,^e6-^ep-^eª-^eä-#_l V€‡ V€’ V€ V€¨ V€³ V€¾ V€É #3k*#3k9#3k#3k!#3k5&#3ku,#3k©1^eö1^e62^ev2^e¶2^eö2^e63^ev3p<p $p ½q*#ÿe*V€ue V€r ™r*žr =3£r =V€Mr V€Îr t =t :tó3>tA?st*~tW?ªu@µuZw&@w~@V€%w V€l V€s #Ew*#Kw9#Ew*#Kw9#\w&A#bw&A#hw ^e4B^eVBƒÙw•Bƒæw&AïwžBþw©BÝh©B®|W?³|W?V€Ì| V€ V€ #Ew*#Kw6I#\w6I#bw #3k*^eJ^e+Jƒ}•Bƒ)}6Iïwã>þwQJÝhQJ~aM~  ~eM[‚°PuQ‚Q[‚*¨‚¨Q°‚³Q[‚¨R@ƒ Gƒ!ǃ ЃS܃%Sàƒ%Såƒ Ýh*S3 †ÆTV€Ú… V€‹ V€• #3k #3k ^e V^eÞT^eãTV€î V€ó V€ø #EwZ#KwW?#\wZ#EwZ#KwkV#\wZ#bwkV#hwZ#£†ÆT#Ew<#KwŽW#\wkV^e X^eX^e"X¨‡<½‡ÄXчåXá‡õMï‡ û‡ ˆ ˆ ˆZ/ˆZÿe<~aMHh<ȉRYÒ‰UYç‰RYí‰Z#_l V€ V€¦ V€® V€¹ #EwKZ#KwPZ#3k”Y#Ew”Y#Kw[#EwaM#Kw ^e²[^e¾[^eÊ[^eÖ[#_l 3ÛKZ3éKZ3þKZ3ŽKZ3$ŽKZ32ŽKZ3BŽKZ3WŽKZ3kŽKZ3|ŽKZ3‘ŽKZ3£ŽKZ3¸ŽKZ3ÖŽKZV€‹ V€‹ V€:‹ V€N‹ V€j‹ V€1 V€= V€L V€\ V€g V€r V€„ V€” V€¦ V€¶ V€É V€Ú V€í V€þ V€  V€ V€2 V€; V€F V€ÁŒ V€ÓŒ V€ïŒ V€ V€ V€T V€F V€\ V€x V€¦ V€_ V€g #3kaM#3k×M#3k×M#3kaM#EwaM#Kw #3k`#3k`#3k`#3k`#3k­a#3k­a#3k­a#3k­a#3kIc#3k³Q#3k³Q#3kaM#3kaM#3kaM#3kaM#EwW?#KwaM#3kaM^e¬f^e¸f^eÄf^eÐf^eÜf^eèf^eôf^eg^e g^eg^e$g^e0g^e™r š žr 6šˆmAšˆm3Wšp¥špªš ´šZu›6p€›p¦›„pÞ›‰p'œ Üœˆn㜠qêœqñœ$q:zq@†q#3kÉqªtbs¾˜W?ou!y¢ Z¹ Z ˆmŠu%yJ¢öyU¢þy^¢þyg¢zq¢z†¢$zg£bsŠ£|’£ˆn©£{±£ À£ZÈ£²|S€Š¤<S€—¤<S€¤¤<S€²¤<S€Ë¤<S€Ö¤<S€yf<S€f<S€ç¤<S€ô¤<S€ÿ¤<ó¦Íƒ¤‚å„¢‚ô„3 §†!§ ˜§Zªt‰u#‰ªtº‰¨Å‰ªtâ‰u#‰ªt¯Š¨Å‰ªtÓŠªtÓŠªtùŠu#‰¾˜ ‹ªtu‹Üx*¨Å‰u›‹$¨«‹¨ŒuQ˜§KŒ-¨KŒ8¨KŒuQ˜§KŒ-¨KŒ8¨KŒC¨#FF¨#FI¨ŒL¨Œªt°Œªtªt‰u¨–‘ªtÓŠu¨¸‘ªtÓŠx¨¸‘|¨¸‘ªtâ‰u¨–‘ªtùо˜ ‹u¨–‘u¨’$¨«‹u¨¸‘u¨¸‘ªt°Œx¨–‘|¨=’¢‚˜“ªt°Œ¢‚î“¢‚¨§”¢¨°”¢‚¨§”¢¨°”¢‚g“(©KŒ\©K–\©K–\©K–(©KŒ\©K–(©KŒ\©K–©³–©³–ouÌ–©³–¥š—¿œ—Åœ)—ß©W?#u4—©³–¥š—¿œ—Åœ)—ß©W?#u4—©³–©³–ouÌ–©³– ©„—©³–XªÑ•XªÑ•©³–XªÑ•wª:™wª:™t ç{„™ç{„™wª:™t ~ªF™ç{„™~ªF™wª:™t wª:™wª:™ªtbs«·š«·š«·šŸ%yŸ%yŸ%y¥šbs¿œ—Åœ)—o›¦Nœ‹œo›¦o›¦^uϼt*^uÏ.¬‹œËœ$q6†q¼tó3.¬‹œ6†qËœ$q6†q¼tny.¬‹œ6†qËœ$qªtÉqªtÉqç{ 9¬1ž^uÏNœ‹œB¬ÏpËœ$q©žw*©žw*ŠuÛ;¬>Ϋÿœ¹ Z^¢W?w*¼t5ŸV€ª V€­ V€³ #3k*#3kó3#3kny^e·£^eÓ£^eï£yžˆn¥šzq¿œ qÅœqh­§”Ëœ$qyžˆn¥šzq¿œ qÅœqh­§”Ëœ$qªtÉqwry¼t*¥šzq¼t*ªtÞ¤^u­§”^uϳ­°”ªtˆ¥¿œ q.¬ó3^uÏw§”ªtˆ¥¼t9¿œ q.¬ó3^uÏïx*È­~@^uÏËœ$q¿œ q.¬ó3^uÏ:tó3È­~@^uÏËœ$q^uÏo®ny^uÏo®nyÈ­~@^uÏËœ$qÈ­~@h­§”á­ì¦^uÏá­ì¦h­§”6†q:tny6†q:tnyÈ­)—6†qÈ­)—h­§”Ãz*+®«§.®}tx.@.®Ú§tx.@.®Ú§D®§”S€t® S€{® S€‹® S€”® 3¦®Fn3É®‰p3ý®}3¯†!§ ©Fn}p¯¨©Žp©Žp©Žp¥šzq¼t*¥šzq¼t*¥šzq¼t*6†qV¯KŒn¯›®B¬Ïp9¬1ž¥šzqªtØ®°£¯°£¯h­§”6†qo®ny6†q:tó3^u]°–¯ã>^u]°6†qt„™¯Oª–¯ã>²ŸêšËœ$qç{ ^u]°6†qt„™¯Oª–¯ã>²ŸêšËœ$q^u]°6†qt„™¯Oª–¯ã>²ŸêšËœ$q^u]°6†qt„™¯Oª–¯ã>²ŸêšËœ$qt±t±Ÿ°q6†qª°(²Ÿ°q9¬1žg¢Wž6†qª°(²g¢Wž9¬1ž0˜Ôm¶° 8ŸS|6†q6†q̰ ³9¬1žg¢~¬ð°Z6†q̰ ³9¬1ž0˜Ômg¢~¬8ŸS|CŸ iŸ´CŸaTŠuryŸ%yŸ%y²ŸˆmŸ%y²ŸˆmŸ%yCŸaT²ŸˆmŸ%yCŸaTŸ%yŸ%yÞŸ5«Ÿ%yð¯Ô´0˜ÔmÔŸ µÞŸ5«Ÿ%yð¯Ô´0˜ÔmÈŸ_µÔŸ µÞŸ5«ÈŸ_µÔŸ µÞŸ5«_q*ÈŸ±µ_q*dq9ÈŸéµ_q*dq9kqÈŸ5¶}‹¶Ÿ%y ñ¶ÞŸ5«Ÿü¶ð¯Ô´° · ñ¶ÞŸ5«ĘˆnŸü¶ð¯Ô´° ·0˜œ· Á·Ÿ%yð¯Ô´0˜œ·°Ì· Á·Ÿ%yð¯Ô´0˜œ·°Ì·=e0¸ Á·ÞŸ5« Á·ÞŸ5«J±FnŸ%yJ±FnQ±ÔmŸ%yJ±FnQ±ÔmŸ%yJ±FnQ±Ôm}§”CŸaTŸ%y}§”CŸaTj ‹œžq~@9¬1ž0˜œ·#u+ºKšˆn#u+ºKšˆn9¬1ž0˜Ômžq~@žq~@©{žq~¬¼tÕºªtÞº>°}K°ˆm¼tÕºªtÞº>°}K°ˆm¼tÕºªtÞº¼tÕºªtÞº¼tÕºªtÞºqž ¼tÕºªtÞºqž ¼tÕºªtÞºqž ¼t{qž ¼t{qž ¼t{qž ¼t{qž ¼t{qž ¼t{qž ¼tþ~¼tþ~¼tþ~Ÿ5ŸŸ5ŸŸ5Ÿqž Ÿ5Ÿqž Ÿ5ŸŸ5Ÿk±e½Ÿ5ŸÀ´³QÇ´ZÌ´³QF—F™’Á –Á ¸<ª¸<Œ¸aMª¼ÍQü¼<ª¼ÍQÿ¼ ½{Ü ½jÜñÁÍQñÁÍQ‘½&Ø‚¾<ǼaM,t ;*¼t ªtžÞ.t·Þïx{Üʾ{ÜÂëì  Âwé"ÍQªt{à;£ê.tàïx¡à^u·à¼tÉà.tÉàïxÖà.tjÜùÁ .tÖà;£ê.tÖàO·à.tjÜUÂ<dÂjÜsÂZç{ UÂaMdÂ<UÂaMdÂ<UÂZâd ªtžÞ‚Âà¢ÂaM¦Â{ܪÂjÜ®Â<²Â ¼tNäÒÂaMÖÂ<.taMïx<¢‚jܤ‚¡àÒÂaMÖÂ<¼tZ¼t<¼thÀ¼tœÀ¼tÐÀ¼tÁ¼t5Á¼tcÁ¼t–Á¼t ¼tET¼tRY¼tLT.taMïx<¢‚jܤ‚¡à.taMïx¡à¼tKZ¼taM¼tNä¼tZâ¼tNä¼tZâ¼t ÀàÝ_Ã{àÀàÝtJØ>À]瑽ÍQ,t p”Y>À]ç`Àñ`Àñ{ÔY~Ã[#EwŸñ#Kw #3kÖàÉÀàÝÉÀàÝÉÀàÝ›ÄôŸÄsé©Äàݪtžó‘Å÷‘ÅD÷3@ÆaM3MÆaM3ö´aM3YÆàÝ3O1z÷3u1–÷3;2·÷3«2Ç÷!§ <”Z,t ÈZüÈZüªtüÈZüªtüªt?¦Ç9­ÇîüÈZüÈJýÈJý ÌZÌmý&ÌZÒ® ½aM^uTç{ ÊúÌaM•ÌW?^uTç{ ÊúŸÌÍQÌaM^uTç{ Êú¤ÌaMÊúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊú^uTç{ Êú^uTç{ Êú^uTç{ Êú^uTç{ Êúç{ ^uTÊúç{ ^uTÊúç{ ^uTÊúç{ ^uT¸Ç<Êúç{ ¾ÈÐÀ^uT¸Ç<^uTÊúËôç{ ¾ÈÐÀÒËüÒËÕ ¸Ç<šÁ 3©ÌaM3´Ì! 3ÉÌB!§ #Ew #Kw #\w!me S€ÆÐÉS€àÐÉS€ïÐÉ#_l 38Ñf3HÑfV€üÐ V€Ñ š„™¼tW?°Ñ<ðÎf™~õMËÍÞrj°š„™‚Â(µÑZ Ïê‚Â(µÑZ Ïê°ðÎf™~õMËÍÞrj°š„™ðÎf™~õMËÍÞrj°š„™ã{&,t „Ï ã{&~Ï Ï „Ï ‡Ï ¼t ËÍÞš„™ùÎ  Ïêã{&~Ï Ï „Ï ‡Ï ~Ï „Ï ‚Â(µÑZ Ïê‚Â(µÑZ Ïê ÏêùÎ ¥Ï<ÀÑ^ÀÑ^ðÎf™~õMËÍÞrj°š„™=eW?èÑ ‚Â(µÑZ Ïêš„™ ÏêùÎ ™~õMËÍÞËÍÞËÍÞ#_l 3³Ò‹V€ : V€ª: V€·: V€Â: V€’Ò V€Ê: #3k&Ø#EwaM#KwaM#3kÓ#3k~#3kaM^eŒ^e˜^e¤^e°^e¼#_l 3ñÓƒV€_; V€j; V€; V€‹; V€œ; V€ÍÓ V€«; #3kT#3kaM#3k#Ew<#Kw#EwaM#Kw#3kW?^e ^e ^e ^eˆ^e!^e4 ¼tkV3W×kV3<ðg3˜<ðg3¢<ðg3¬<ðg3b×aM3þÑaM3o×aM3ÒaM3z×kV3„×kV!§ 3Ø@$3ØI$!§ Dß Jß Uß Xß ^ß dß kß!3¾ß)31á 36áRY3;á 3@á 3Eá 3JáRY3Tá!3ÿß!3fáET3pá*S3xá*S3á©)3‹á!3òØ!3—á!3Ù!3¥á¯)3Ù¯)3¶á 3×á 3öá 3â*S!§ ¼t¾)·½ÍQ¦‚ʼnŠâ*¼tô)uQ¦‚ŒŠâ¨R¼t¸‘™~õM.¬`~aM~ éR,~ ™~õMkç%Ö~aM™~õMé(-™~õMé³Q™~õMéIckç%Ökç%Öé<.'éQ.éQkç%Ö™~õMéIc35éaM3’âaM3?éaM3™âaM3GéªO3YéaM3ãaM3déaM3ãaM3oéaM3$ãaM3zéaM34ãaM3…éaM3DãaM3éaM3TãaM3›éaM3dãaM3¦éaM3tãaM!§ aMÒ(-}p`x•Bïx6Ix•Bïx6Ix•B.t6Iòë;éëZøƒ6Iç{ä=ã{ã>ÿÜ„™x•BªtF>ªt‰xk>ªt€Bªt€Bx•Bã{žBÿÜ„™òë¹MéëZøƒ&Aç{@Oøƒ©Bøƒ$Pj¥©BªtkkwZüªtŠkwZüªt´kwZüªt4zªtVz¼t9ªtwzt ªtwzªt‘ztx¤zªtÏzèñ¤zo§ízªtÓŠªt‰ªtS{ªtn{ªtâ‰Ñ”bt Ñ”&@¦‚.@.¬ óù{ ó ùë*ªtª¸o§&@g§&@o§&@Ñ”ã>¼t*,t Ñ”&@ç{„™tx.@ ó ùë*Ñ”&@tx.@ óD;ÿÜ* ó ùëÙ|ªtu‹Üx*Ñ”¤zóD;tx#} ó ùë*`ò Ñ”&@ã{ã>Ãz„™ç{„™¦‚.@ ó ùëã>Ñ”&@ƒòöyŠò{}ƒòöyŠò{}Ñ”&@ó‰óß}ó‰1ó&@Ñ”&@órÝh*šx „ó.@ ó ùë*ó‰Ñ”&@ó¯Ýh*šx~ó.@ ó ùë*ó‰Ñ”&@Ñ”&@ó‰ó€óº‰Ñ”¤zh­ÓŠÑ”&@¦‚.@5óD; ó ùë*t Ñ”&@¦‚.@.¬ óù{ ó ùë*h­ÓŠÑ”&@¦‚.@5óD;<óKŒ ó ùë*ÿe*aôs„ªt±„3{ôÒ„Nóª¸Tó¯Š\óë„ìÓŠù뉧ô4zž–~@‰ó#}“ó.@À£Z­ôZ¶ô§n¶ó*r—*r—9,õx…ÿñ¤z°«§ïx&@À£KŒùó£…°«§ïx&@À£KŒùó£…,õ&@ÃzQÀêbsŠâ*ùÚbsÀêbsñƒ1†3­õ¾‡V€’õ V€ŽG V€”G #3k*#3kY|^eêˆ^e‰^e"‰°Y|¥šb|¥šb|°›‰¼t›‰uõY|ùóÛ;­ôZ¦‚.@°Š°ö.@¦‚^À£Z#_l 3‘÷ÆŽ3¤÷ÆŽ3¶÷ÆŽV€O÷ V€g÷ V€}÷ ¾˜ÆŽùó*ªtº‰¦‚#}ªt⎦‚#}ç{„™ªtBº#}Hºªt¯Š¦‚#}À£KŒù󫋪tÓŠ¦‚.@À£KŒªtVz¾˜ ‹ªtwzMs„™ªtwz,ø Ms„™ùëÕTó¯Š\óë„À£KŒùó«‹¾˜ÿã{ã>ùó šÁ Ýh*À£Zªt~@¦‚.@7ø@.¬.@x·—ø a„s‘Åø}‘ªtº‰šH•ªts•šH•š”•š”•„Ï ‡Ï ªtX¥°c¥ªtŽ¥°x…me S€O÷v¯S€Tv¯S€}÷v¯uv¯Ýh*,t*j¥*Üx*,t*j¥*Üx*,t  j¥ ¿ZÂZ,t  j¥ ùÚî¥,tRYRYj¥RY¿ZÂZ,tRYRYj¥RYùÚ¢¦,tLTLTj¥LT¿ZÂZ,tLTLTj¥LTùÚô¦,tETETj¥ET¿ZÂZ,tETETj¥ETùÚF§,tííj¥í¿ZÂZ,tííj¥íùÚ˜§,tÓÓj¥Ó¿ZÂZ,tÓÓj¥ÓùÚê§,tcÁcÁj¥cÁ¿ZÂZ,tcÁcÁj¥cÁùÚ<¨,t–Á–Áj¥–Á¿ZÂZ,t–Á–Áj¥–ÁùÚŽ¨,tÁÁj¥Á¿ZÂZ,tÁÁj¥ÁùÚà¨,t5Á5Áj¥5Á¿ZÂZ,t5Á5Áj¥5ÁùÚ2©,tœÀœÀË ¿ZÂZ,tœÀœÀj¥œÀ¿ZÂZ,tœÀœÀj¥œÀ,thÀhÀË ¿ZÂZ,thÀhÀj¥hÀ¿ZÂZ,thÀhÀj¥hÀ܃*ùÚ)²,t*j¥*ÂZ܃*ùÚ)²,t*j¥*ùÚu‹,t*9j¥*¿ZÂZàƒ9ùÚu‹,t*9j¥*,tÐÀj¥ÐÀÐÀÂZ,tÐÀj¥ÐÀÐÀ뻳Q뻳QŠuª®µÑª®µÑª®µÑª®µÑª®µÑª®µÑª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šu×®‚‰µÑ×®‚‰µÑ×®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šus‘µÑs‘µÑs‘µÑs‘µÑs‘µÑs‘µÑs‘µÑs‘µÑs‘Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šu‰µÑ‰µÑ‰Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuª®µÑª®µÑª®Šuu‹‚º‰µÑu‹‚º‰µÑu‹øƒ =ùó =À£Zªt¼·êºªtn{ªtܸêº!ªt&¸ªt¹ªt;¹ªtQ¹ªt»ªt@»êº5&ªtK¾êºu,ªtлªt軪t¼ªt˜¾—ø + •Bªt•BŠu*Šu*Šu Á.¬³Q‚ÂwzµÑ ÁÒn{‚‰µÑn{j¥³Q‚‰µÑn{Òn{‚‰µÑn{j¥³Q‚‰µÑn{Òn{‚‰µÑn{j¥³Q‚‰µÑn{Òn{‚‰µÑn{j¥³Q‚‰µÑn{8Z¶ ¹ }p 3G<3h<3ƒ<3 <3º<3Ûó33ì»Ç3ü»Ç3ˆÉ3+ˆÉ3EÞÎ3^ãÎ3u%3ŠˆÉ3§ˆÉ3½YèÎ3ÏYðÎ3ãYøÎ3öYÏ3 ZÏ3ZÏ3/ZÏ3CZ Ï3UZ(Ï3iZ0Ï3}Z8Ï3‘Z@Ï3¦ZHÏ3¹ZPÏ3ÎZXÏ!§ ªtÑÛªt‰ªtÑÛªt‰ªtÜÛªtÑÛªtÿÛªt.ܪtcܪt¬Ü3”6Ý!§ !7*!7*!289!7*!289!:8!7*!289!:8!B8!!7*!289!:8!B8!!J85&!7*!289!:8!B8!!J85&!R8u,!7*!289!:8!B8!!J85&!R8u,!`8©1!7*!289!:8!B8!!J85&!R8u,!`8©1!w8|àP ßb»\ Æ*eî` Æ6e÷t ÁAeüx ßbŒ †f]˜ ßb»¤ ßb»° ßb»¼ ßb»È ßb»Ô ßb»à ßbô †f]!ßb» !ßb»!ßb,!†f]8!ßbL!†Df]X!ßb»d!ßb»p!ßb»|!ßb»ˆ!ßb»”!ßb» !ßb»¬!ßb»¸!ßb»Ä!ßb»Ð!ßbØä!†hf?ð!ßb»ü!ßb»"ßb»"ßb» "ßb»,"ßb»8"ßb¯X"†¡fî d"†«fî p"†µfî |"ßbÕ œ"†gݨ"†)gî´"†¸-æ*eî?È-æ6e?ä.æ6e×Aô/æ6e÷B0ßb·C(0†€k—D00ßbâD@0†€küEH0ßb·EX0†€k˜F`0ßbíFp0†€k—G€0ßb G0†€küH 0ßb# H°0†€k˜IÀ0ßb2 IÐ0dlE JØ0†rl]Kä0ƒle Kì0†‘l]Lø0¢l… L1†°l]M 1Ál« M1†Ïl]N 1†hkîN(1æce!N`2æceüOt2æceæP 3æ*eR”4æ*eîS¤4æ6eSÀ5æ6eú"UÐ6æ6e÷Vô6ßb·W7†€k—X 7ßbâX7†€küY$7ßb·Y47†€k˜Z<7ßb¥ ZL7†€k$[T7ßbh$[d7†€k—\t7ßb‡$\„7†€kü]”7ßb¦$]¤7†€k˜^´7ßbÅ$^Ä7†€k$_Ô7ßb2 _ä7$mæ$`ì7†2m]aø7Cm %a8†Qm]b 8bm.%b8†pm]c 8mR%c(8†m]d48 m|%d<8†®m]eH8†hkîeP8æceª%ex8æceüfŒ8æceægÄ8æ*eiì9æ*eîjü9æ6ej:æ6eJ'l\;æ6e÷m€;ßb·n;†€k—o˜;ßbâo¨;†€küp°;ßb·pÀ;†€k˜qÈ;ßb¥ qØ;†€k$rà;ßbv%rð;†€k—(sø;ßbð(s<†€k—t<ßb)t(<†€küu8<ßb6)uH<†€k˜vX<ßbY)vh<†€k$wx<ßb|)wˆ<†€k—(x˜<ßb2 x¨<n¡)y°<†n]z¼</nÉ)zÄ<†=n]{Ð<Nnñ){Ø<†\n]|ä<mn*|ì<†{n]}ø<ŒnA*}=†šn]~ =«no*~=†¹n] =†hkî(=æce¦*p=æceü€„=æceæÈ=æ*eƒÜ=æ*eî„ì=æ6e„ >æ6eâ*†D>æ6e÷‡h>ßb·ˆx>†€k—‰€>ßbâ‰>†€küŠ˜>ßb·Ѝ>†€k˜‹°>ßb¥ ‹À>†€k$ŒÈ>ßbv%ŒØ>†€k—(à>ßbi*ð>†€ky,Žø>ßbç,Ž?†€k—?ßb!-(?†€kü8?ßb[-H?†€k˜‘X?ßb•-‘h?†€k$’x?ßbÏ-’ˆ?†€k—(“˜?ßb .“¨?†€ky,”¸?ßb2 ”È?(o2.•Ð?†6o]–Ü?Go^.–ä?†Uo]—ð?foŠ.—ø?†to]˜@…o¶.˜ @†“o]™@¤oâ.™ @†²o]š,@Ão/š4@†Ño]›@@âo@/›H@†ðo]œT@†hkîœ\@æcev/œ¤@æceü¸@æceæžAæ*e $Aæ*eî¡4Aæ6e¡|Aæ6eº/£ÀAæ6e÷¤äAßb·¥ôA†€k—¦üAßb⦠B†€kü§Bßb·§$B†€k˜¨,Bßb¥ ¨üôOæ6e÷ýP†ÿrîþ$Pƒs?þtP†;s—þ P†DsJ=þÌP†€k$>þØPÆDr?ÿ˜RÁtsb>ÿ¨RÁ«sk>ÿ¼RßbW>ÿØRƒ"tý>Sƒtè>HSßbF?\SƒHtL?hSVtQ?pS±r=€Sßbb?œS£tn?ÀS¬t?ÌS†¾t]ÜS†f—ÄTÆDr?Æät·ÆëtF?Æùt» ÆuÙ? Æu· Æ+u· †ßb~4 Æ qå?Æcuì?Æ€u÷?ƾub>ÆÑu@ÆÞu»Æ äu]Æ óu—TUßb»pUƒv]ôUÁtsb>VÁ«sk>VÁ v—4VÁGv»XVÁ bv+€VÁv]ŒVÁËv»¤Vßb‘@ÀVƒw»ÐVÁGv»àVÁtsb>ðVÁ«sk>Wßb»W.w°@W;wÎ@ WQwA0W r=AXWßbÆ@pWƒ†w—!xWƒwü!€Wßbè@!°Wƒ†w—&¸Wƒwü&ÀWƒ¬wåA&ÈWƒ¶wåA&ÐWƒÀwî&ØWßbIB&èW††w—'øW†wü'XßbkB'X††w—((X†wü(8X†¬wåA(HX†¶wåA(XX†Àwî(hXßb¾B(ˆX±r=*¬Xƒ(xCC*4YƒMxCC+ÈY¸r€C,ÐY£tŒC,ôY£t€C-üYßb¥C- Zƒ€x¶C.,ZƒxåA.8Z†–xÀC.\Z†Âr]0hZ†€k*40€ZƒžxÙC1”Zƒ¦xùC2¨Zƒ­x D3ÌZƒ´xùC4àZƒÁx\D5øZƒÊx{D7[ƒÞx·D;([ƒæxÞD<D[ƒñxôD=`[ƒõx†E>°[†ÿxî?À[† y¯E?Ø[†yµE@ø[†yÃEA\ƒ$yÏEB \ƒ+yàEB0\3yíEBT\ƒKyîC]Æ6e÷C°]Æ*eîD¼]ÆDr?DÈ_ÁtsPGDØ_Á«sk>Dì_Á `y*4D`Á ’yÆ@E `Á ÄyvGG8`Á öyGGP`Á*zÆ@Gl`ÁYz¯EI„`ÁŽz¦GJ¸`ÁÅz¯ELÔ`Áõz¯GMð`Á"{»N aÁQ{»GN(aÁ{»GO€aÁ³{ÐGP”aÁ é{]R˜aÁ !|îR¨aÁAeüRüaßbiGSbƒ"tžHTDbƒº|+TLbƒÂ|+TTbßbWTlbßb»VtbÕ|àHVxbâ|IV„bí|*IZŒb rII[´bßbòH[Übƒ†w—_äbƒw€I_ìbƒ¬w€I_ôbƒ¶wî_übßb·_ cƒ€k—`cßb J`$c††w—a4c†w€IaDc†¬w€IaTc†¶wîadcßbœgƒKyîhÆ*eî hÆ6e÷Àhö}¥L‚Ðhßb±Lƒôh£t»L„i~ËL…$iÆDr?†üjÁAeü†kÁõz·‡,kÁ"{»ˆŒœkÁ«sk>Œ°kßbGMŒÄkƒ"tý>ðkßbsMl†ªh?hl†&~²Mtl†8~·MŒl†M~ÃM l†M~ÐM´l†hkîÀlÆDr?älÆ*eîülÆ6e÷½O»ÈtTÊO¼àtpäO¾øt‹ñO¿uªPÀ`u¾PèuÙ,PÅðuøTPÇhv‚lPÊ´v ‚€PÌw=‚PÎHw¿áNМwßb»Ò°w†|‚ÊPÒÔw†„‚ãPÓàwßb#QÓôw±r=Ô(xƒ qå?ÔŽßb%V> Žßb,V?°Ž†€kî@ÀŽßb3V@ÐŽ†€kîAàŽßb»A莈†:VAôŽƒ†]D›†CVDƒ©†]J´†UVJ(ƒ¼†]M4ƒhkîM\ßb˜VM|ƒ†w]P„ƒw+PŒƒ¬w]P”ßbWP̃†w]VÔƒw(WV܃¬w]V䃶w(WVìƒÀw]VôƒÍ†.WVüßbœWVƒ†w?Y$ƒw°WY,ƒ¬w(WY4ßbXYD††w]ZT†w+Zd†¬w]ZtßbXZ„††w][”†w(W[¤†¬w][´†¶w(W[ĆÀw][Ԇ͆.W[äßb'X[ô††w?\‘†w°W\‘†¬w(W\Æê†.X\Æ ô†î\Æ ‡î\$‘ƒ@ˆ?\,‘ƒXˆêX\4‘ƒoˆ Y\<‘ƒ‚ˆY\D‘ƒ“ˆî\L‘ƒ¢ˆî\T‘ƒ±ˆî\\‘ƒÁˆî\d‘ƒψ]\l‘ƒâˆ]\t‘ßbY\Ô‘Œ‰HYf ’ßbØf ’†f?g,’ßbØg8’ßbƒYh¼’†ªh?kÈ’†Š]kÔ’†вMkà’ƒŠYkì’%НYkX“ÆDr?md“Æ*eîmp“Æ6e÷m”“ÁAeün”±r=o ”ßb2 o°”¢ŠñYp¼”ƒ®Š]rÈ”½ŠZrДƒÈŠ]sܔ֊ Zs蔃äŠ]uô”õŠZu•ƒ‹]w •ƒhkîw•æ*ew(•æ*eîx8•æ6ex€•æ6e-Zzœ•æ6e÷{À•ßbZZ|Ø•ƒ†wiZ~à•ƒwoZ~è•ßb¾Z~ø•ƒ€kÅZ–ßb[–ƒ†wÅZ –ƒw[(–ßbsM@–ƒ†w²MƒH–ƒwîƒP–ßb·[ƒ`–††wiZ„p–†woZ„€–ßbÃ[„–†€kÅZ… –ßbÏ[…°–††wÅZ†À–†w[†ЖßbÛ[†à–††w²M‡ð–†w±r=‡°—ßb2 ‡À—êŽè[ˆÈ—ƒôŽ]ˆÔ—è[ˆÜ—ƒ]ˆè—$è[ˆð—ƒ1]ˆü—@è[ˆ˜ƒQ]ˆ˜dè[ˆ˜ƒn]ˆ$˜zî[ˆ,˜ƒ‰]‰8˜›ö[‰@˜ƒ­]ŠL˜Âö[ŠT˜ƒÕ]‹`˜ëî[‹h˜ƒù]Œt˜ \Œ€˜ƒ]ŽŒ˜)/\Ž”˜ƒ>] ˜V/\¨˜ƒi]´˜/\¼˜ƒ”]‘Ș¬/\‘Иƒ¿]’ܘÕk\’䘃ë]“ð˜‘k\“ø˜ƒ‘]”™/‘k\” ™ƒE‘]•™^‘k\• ™ƒr‘]–,™‰‘¨\–4™ƒ˜‘]—@™ª‘¾\—H™ƒÂ‘]˜T™Ý‘¾\˜\™ƒó‘]™h™ ’î[™p™ƒ’]š|™'’î[š„™ƒ5’]›™F’î[›˜™ƒW’]œ¤™k’è[œ¬™ƒw’]œ¸™…’è[œÀ™ƒ–’]œÌ™©’è[œÔ™ƒ¹’]œà™Ë’è[œ虃ؒ]œô™ç’è[œü™ƒø’]œš “î[œšƒ“]š*“è[$šƒ8“]0šH“è[8šƒY“]Dšl“è[Lšƒ†“]Xš¢“è[`šƒ²“]lšÄ“‰]xšƒÏ“]Ÿ„šÝ“î[ŸŒšƒï“] ˜šƒhkî  šæ*e ´šæ*eî¡Äšæ6e¡ ›æ6e´]£P›æ6e÷¤t›ßbœ¥„›ƒ€k²M¦Œ›ßb„^¦œ›ƒ€k‹^§¤›ßb„^§´›ƒ€k‹^¨¼›ßbœ¨Ì›ƒ€k²M©Ô›ßbsM©웃†w²M«ô›ƒwî«ü›ßb`«œƒ€k"`¬œßb`¬,œƒ€k"`­4œßb`­Hœƒ€k"`®Pœßb`®dœƒ€k"`¯lœßb²a¯€œƒ€k¹a°ˆœßb²a°œœƒ€k¹a±¤œßb²a±¸œƒ€k¹a²Àœßb²a²Ôœƒ€k¹a³ÜœßbNc³𜃀kUc´øœßb»c´ ƒ€kêMµßb»cµ(ƒ€kêM¶0ßbœ¶Dƒ€k²M·Lßbœ·`ƒ€k²M¸hßbœ¸|ƒ€k²M¹„ßbœ¹˜ƒ€k²Mº ßbfº¸ƒ†w+¼Àƒw²M¼Èßbœ¼܃€k²M½äßb±f½ô†€k²M¾žßb½f¾ž†€k‹^¿$žßbÉf¿4ž†€k‹^ÀDžßbÕfÀTž†€k²MÁdžßbáfÁtž††w²M„ž†wßbíf¤ž†€k"`ôžßbùfÃÄž†€k"`ÄÔžßbgÄ䞆€k"`ÅôžßbgÅŸ†€k"`ÆŸßbgÆ$Ÿ†€k¹aÇ4Ÿßb)gÇDŸ†€k¹aÈTŸßb5gÈdŸ†€k¹aÉtŸßbAgÉ„Ÿ†€k¹aÊ”ŸßbMgʤŸ†€kUcË´ŸßbYgËÄŸ†€kêMÌÔŸßbegÌ䟆€kêMÍôŸßbqgÍ †€k²MΠßb}gÎ$ †€k²MÏ4 ßb‰gÏD †€k²MÐT ßb•gÐd †€k²MÑt ßb¡gÑ„ ††w+Ò” †w²MÒ¤ ßb­gÒ´ †€k²MÓÄ ßbºgÓà ƒxÉgÕì †"”oZÕø Æ6e÷Õ0¡Æ*eîÖ@¡ÆDr?ÖL¡†DrÞgÖ`¡ƒê†|j×hµ†A”‰jØxµ†Y”§jÙµ†вMÙœµe”·jÙ¬µv”ÀjÚ¼µ”ÀjÜȵ£”ÚjÞصº”ðjàøµº”kâ¶Ê”kåD¶Ø”kçP¶û”-kê\¶/•?kî|¶/•HkB•Tkñ¼¶B•`kóà¶K•oköì¶\•{køø¶t•Škû·Š•£ký$·¤•´kÿH·À•¼kT·É•Êkt·Ó•Êk”·è•ãkÀ· –ökÌ·– l  ¸–8l L¸:–MlŒ¸:–hl¸¸F–·jĸR–ÀjÔ¸c–€l专–Àjô¸«–•l ¹´–k",¹½–Ÿl$8¹i<±l&d¹i<ºl'Œ¹Ë–Ãl)˜¹Ø–ok*¬¹ß–Àj,¸¹é–Ìl.ع—Ùl/ä¹—êl0ºL—m4@º‹— m7tºßbºg8„º†™—[:ˆºßbSm: º†û—xm;´ºƒ˜m;¼ºƒ)˜Y;ĺßb“m;غ†ðv»=øº†6e¡m=8»Æ6e÷>T»Æ*eî?€»„®m?Œ»-„®mAœ»ÁGv»C¨»ƒ˜mC°»ßb¾mC¼»†‡˜]DÜ»ƒ£˜]D¼†µ˜âmD,¼†6eïmF\¼Æ6e÷Gx¼Æ*eîH”¼„ümH ¼-„ümJ°¼rnL¼¼ƒ)˜YLļƒ÷˜nL̼ƒ™+LÔ¼ßb&nL켃 ™YOø¼ƒ™nO½ƒ™+O½ßb~nO°½ßb»Qཆb™“nQ¾†l™»QD¾ƒl™Q4¿†ðv»R Àƒ»™—oR´Àƒ‡˜]SÁƒµ˜âmS¨ÁƒÞ™‹SU$Âé™ÝoV0ÂÁGv»X`Âßb»XŒÂƒ š—Xà š·X”ÃÿxîY Ãƒš2 YXÄßbpZ”ăb™“n[¤Äƒl™»[´Äƒðv»[ÐÄÁGv»[ìır=[øÄßb»[Åhšp[Ńhkî[Åãš-p[Åÿš1p[ Åßb»\<Å›-p\DŃ7›Dp\œÅƒQ›]]ÀŃd›dp]ìÅh›rp^ðűr=_Æßb»_xƃIœ´p_¸ÆƒpœDpaǃœœDpbhǃ¨œDpc¨Çƒ°œæpdØÇh›rpdÜDZr=eìǃ“neôǃ )qeüǃ6qeȃ!Cqe ÈßbIqe4ȃE“qi<ȃN qiDÈßb¦qi\ÈVõqkdÈßbâqltȃ€krm|ȃhkîm„Èßb»mȆ—ƒ3rm˜È†[Drm¤È†k]rn°È†rjro´È†‰ƒrpÀȆ•£rrÌȆ›¾rtØÈ†¡×rväȆ®örxðȆ“–szüȆc–*s|ÉßbŠJ~Ƀ qå?,Éö€s4É ž‹s<ÉžÐsLÉ*žn‚`ÉGž=‚ÉZž$t‚ É`ž™tƒ,Ê–œ½t†dÊ‹žðtˆtÊ¡žu‰°Êôž½tŽÌÊŸ6uÜÊŸKu‘ËWŸ]u“(ËmŸu•8ËyŸ«u–H˘Ÿôu—”Ë»ŸFvš¨Ë»Ÿ–v¼Ë»Ÿðv¡ÐË»ŸTw¦èËýŸÜw¬Ì  Bx­Ì# sx¯$Ì* ‹s°,Ì< ‹s°4ÌO ªx°DÌZ Îx²TÌv âx³dÌŒ õx´pÌßbHy¶°ÌƒÕ vu¸è̃ý —¹l̓¡]¹x̓Þu»¹¤Íƒb™“n¹´Íƒ¡»¹Ä̓ ¡»¹ðÍÁ 7¡]¹ÎÁ [¡]¹ÎÁ ˜¡çy¹,ÎÁ À¡+¹8ÎÁGv»¹DÎßb»¹˜Îƒ—¢Uz¹¼Îƒ¡¢î¹ σ¸¢z¹Xσˢzº˜Ïƒá¢Éz»èσë¢ãz½ Ѓ£ãz½LЃ£ãz½ˆÐƒIœ·½ÌЃ.£Ÿ{¾ðЃ6£Í{Àу;£|Â$уF£6|ÃDÑÁGv»ÄxуN£M|ĜуZ£d|ÄÌÑßbŠJÅàцn£·ÆðÑßbË|ÇXÒ†¡¢îÉhÒ†Ó£îÉtÒ†æ£2 É€Ò†ù£÷|ʘ҆¤÷|˰҆–œ»ÌÓ†Iœ·ÌÓ†¤z}͜ӆ>¤«}ÏØÓ†K¤÷}ÑHÔ†p¤m~ÓÀÔ†F£Œ~ÕðÔ†;£œ~Ö Õ†6£±~×PÕ†.£Õ~Ù€Õ–œÛ ÕÁGv»Ý¸Õ¥'€ÝÄÕ$¥ƒÞ`ÖC¥¸ß„ÖQ¥‚àä×v¥%‚ã(؉¥D‚ä4ؤ¥b‚å@ØÀ¥ƒ‚æLØø¥ƒ‚èXØ$¦»‚êhØ:¦»‚ëxØM¦»‚ìˆØ]¦»‚í˜Øt¦ƒî ØŒ¦ ƒî°Ø•¦ƒïÀØž¦/ƒðÐØ¥¦AƒñàØ­¦]ƒò Ùɦyƒó8ÙᦠƒôDÙßb»õLÙF qÁƒõXÙßb»ö`ÙF qÁƒölÙßbâƒ÷€Ùáõz·øœÙá"{»ù¸ÙáQ{¯EùÔÙá{¯EúìÙá³{Hû`Úáé{]ýdÚá!|îýtÚátsb>ý”Úá«sk>ý¸Úßb»ýÀÚF qÍ„ýÛßb»þÛF qÍ„þHÛßbÿdÛá`y*4|Ûá’yÆ@˜ÛáÄyvG¸ÛáöyGÈÛá*zÆ@äÛáYz¯EüÛáŽz¦G4ÜáÅz¯E PÜáõz¯G lÜá"{» ˆÜáQ{»G ¤Üá{»G ðÜá³{ÐG ”Ýáé{]˜Ýá!|î¨ÝátsPGÈÝá«sk>ìݱr=üÝñx1†Þ/§]†,Þ÷|“†8Þ­xÚ†HÞõx‡dÞ6£x‡pÞ–xÀ‡ˆÞuÞ‡”ÞX§ˆ  Þa§Wˆ!¬Þw§Öˆ#Æ §·%Æ­F?&Æ¥§»'ÌÞßb»'àÞÁ¯§·'øÞÁɧF?(ßÁä§»)0ßßb6‰)L߯ §·+Ð߯­F?,ä߯¥§»-ôßßb†-àá¨Ù?/4àßbü‰0PàÆ §·2ÔàÆ­F?3èàÆ¥§»4øàßbz†4áá¨Ù?68áßbdž7HáF qåŠ8dáßbdž9táF q¯E:ˆáßb‹;¨áÆ §·>LâÆ­F??`âÆ¥§»@pâßb[‡@âá¨Ù?CÌâßbÁ‹DèâÆ §·F8ãÆ­F?GLãÆ¥§»H\ãßb ˆHpãá¨8ŒI ãßb[ŒJÈãᯧ·NèãáɧF?Oäáä§»Pxäßb[ŒP äᯧ·TÀäáɧF?Uìäáä§»VPåßb‡ŒVlåáGv»XˆåßbEˆX¤åá¨Ù?Züåßb‡ˆ[ æF qÃE\Dæßb§ˆ]TæF qÃE^ŒæñxÏ_¸æ­x4Žaäæõx·Žc ç÷|eLç6£g€ç–xÊj˜çX§ilÌça§·mèw§X‘o@èßb¦qXèF q±‘stèßb ŽtŒèF q±‘v°èßb_ŽwÐèF q±‘zéßb÷Ž{éF q±‘}Péßb_~péF q±‘´éßb#‚ÌéF q±‘„êßbÓR…,êF q±‘†@êßbÓR‡PêF q±‘ˆdêßbø‰„êF q±‘ŒÜꆨë’듨G“‘ëqžŠ““\ëßb™’•tëF q±‘—¤ëßbÊ’˜´ëF q<”™ØëßbÊ’šèëF qY”› ìßb»œìF q`”œ ìßb»(ìF qn”4ìßb»ž<ìF qˆ”žHìßbÔŸhìF q2•¢¼ìßb'“£ÔìF qu•¥íßb»¦ íF qˆ•¦íßb••§$íF q •¨Díßb»©LíF q<”©Píßb»ªXíF qY”ª\íݨ®•«líù¨ì•«”íßb–­¤íF q?–®ðíßbP–¯îF qn–°,îßbP–±<îF q{–²Pîßb‚–³hîF q •µ„îßb‚–¶œîF qž–¸ÐîßbP–¹àîF qž–ºïßb¸–»$ïF qÅ–¼4ïßb¸–½DïF qÅ–¾TïßbÝ–¿dïƒ qù–Àxïßb»Â€ïF q—”ïßb=—ÃÌïƒ qù–Étðßb=—ˬðF q}—Ñððßb¸–ÒñF qÅ–Óñßb¸–Ô ñF qÅ–Õ0ñßbÝ–Ö@ñƒ qù–×Tñßb»Ù\ñF q—Ùpñßb‰—ÚˆñF qÿ—Ü òßb¸–Ý0òF q •Þ@òßb#˜ßPòF q-˜à\òßb#˜álòF q-˜â€òßb>˜ã˜òF qK˜å¼òfªd˜æóŒª¥˜ê󛪼˜ì\ó¦ªKuðhó¾ªç˜ò€óΪ™ô”óßb?™ö¤óF qm™÷ìóßb?™øüóF q~™ùôßbŒ™ú(ôF qž™ü@ôßb¤™ýPôF q®™þ¬ôßb¹™ÿÔôF qÏ™,õßbÛ™<õF qæ™Lõßbò™dõF qæ™Àõßb?™ ÐõF qm™ ößb?™ (öF q š 8ößbŠJ Löᯧ·\öáɧF?`öáä§»döÈŸqš¸öÔŸ–š÷ÞŸ°š`÷ßb1šp÷F q±‘ˆ÷ßb1š˜÷F q<”°÷ßb1šÀ÷F qY”Ø÷`žÅ›ù–œÛ›Dù¡žñ› pùßb›u%€ùF q#œ&˜ùßb›u'¨ùF q3œ(Àùßb›u)ÐùF qCœ*èùßb»+ðùF qKœ+øùßb»,úF q3œ,úßb»- úF qCœ-úßbŠJ.$úF q#œ/<úßb[œ0LúF q3œ1dúßbhœ2túF qCœ3Œú*«ƒ4”ú4«Îx4¤ú=«‹s5´úO«‹s5Äúb«uœ5Üún«Ãœ84û«Ýœ9Dûž«Ýœ:Tû׫ ;œûá«#=Ôû¬]?,ü$¬‹BXüßb¯EhüF qKœF€üßbÂGüF qˆ•H¼üßb¯IÌüF qKœJäüßb»KìüF qˆ•Kýßb¯L$ýF qKœM<ýßb»NDýF qˆ•NlýßbàO„ýF qKœQ ýßb¦œRÀýF q#œUàýßbõVøýF qKœXþßbþY4þF q3œ\Tþßb ž]lþF qKœ_ˆþßbþ`¨þF qCœcÈþßbâqdØþF qžeðþßbâqfÿF qžgÿßb»h,ÿƒÙt]h@ÿßb»hXÿƒ?¬<žhˆÿßb€iàÿƒ[¬#œj€ƒm¬#œkœßbkžl´F qKœnÔßbkžoìF qKœq ßb»rDƒŠ¡çyr„ƒÞu»rȃ¡¬—rôƒÆ Oyr„ƒë«]tƒ`¤I~t ƒß {ytðÁGv»uüßb·u F q)Ÿv(ßbA}w8F qžxÀå¬kŸyÈ­ºŸy­ÖŸz8)­èŸ{@]­+ {hj­+ €u­— …Œ­Ýœ‡Ÿ­uˆ ¥­Ì ‰0­­¡Š@¶­B¡ŒP¼­y¡Ž`Ø­µ¡pï­ñ¡’€þ­€s”®‹s”˜®¢”°$®8¢–Ð3®v¢˜ä8®¢šôßb»œüª¨È“œƒW®]°¨”ƒ;j]ž$¹¨M”ž,ƒ`®]Ÿ8ƒhkîŸ`ßb·Ÿpƒ€k— xßbF? ˆƒ€kL?¡ßb¶¢¡ ƒ€kb£¢¨ßbÈ£¢¸†€k—£Èßb䣣؆€kL?¤èßb¤¤ø†€kb£¥ßb»¥ƒ qÛp¥<ßböŸ¦tF qKœ¬¼ßböŸ­ôF qKœ³<ßbâq´LF qžµ`ßbvu¶pF qž· ßb³¤¸ F qKœº0 ßb·»@ F qž¼Ä ßb¥½Ü F q#œ¿l ßbv¥À„ F qKœÂ  ßbã Ã¸ F qžÅP ßbÁ¥Æh F qKœÈ€ ßb٥ɘ F qKœË´ ßb.¡ÌÌ F qžÎà ßbÁ¥Ïø F qKœÑ ßbàÒ( F qKœÔD ßb<¦Õd F q#œØXßbÁ¥ÙpF qKœÛˆßbt¦Ü F qKœÞÀßb<¦ßàF q3œâØßb‘¦ãðF qKœåßb‘¦æ(F qKœèHßb<¦éhF qCœì\ßbe¡ítF qžïßb§ð0F q3œò`ßbœ¡óxF qžõüßb žöF qKœø0ßb žùHF qKœûdßbF§ü|F qCœþ`ßbÝ¡ÿxF qžÐßb»ØF q•§ßb·F q •4ßbµ§LF qÏ™`ßbЧpF qž™ €ßbò§ ˜F qÏ™ ´ßbY¢ ÄF q¨äßb tôF q*¨±r=¯r¨< ¯¨¤*¯º¨Ø6¯Ó¨@¯©TL¯Y©!d}¯ª'䨯@ª- ²¯–ª0€ůͪ9ìϯøª>Dâ¯k«F”û¯¬«J  °à«K °g¬Q<*°Ë¬U¨4°­X¼V°u­\Ìi°©­_Ü‚°Ë­bì±r=e,ßb»e4F qà­e<ßbì­fLƒ qÛpghßbø­hxF q •i˜ßb»j F qÿ­j°ßb»l¸F q-®lôßbG®nƒ qÛpo8ßbG®pHƒ qÛpq|ßbG®rŒƒ qÛpsÀßb{®tØF qKœvðßb{®wF qKœy ßb{®z8F qKœ|Pßb(©}ˆF q±‘ƒTßbs„dF qž…ßb¾¯† F q#œ‡¸ßb¾¯ˆÈF q3œ‰àßb tŠðF qI°‹` ßb žŒx F qKœŽ” ßbõ¬ F qKœ‘È ßbâ©’à F qKœ”ü ßbŒ°•L!F q#œ!ßbưžÐ!F q3œ¥"ßbư¦T"F qCœ­˜"ßbư®Ø"F q±µŒ#ßbØt·œ#F q…±¸,$ßbØt¹<$F q…±ºà$ßb»»è$F q •»ì$ßb»¼ô$F q<”¼ø$ßb»½%F qY”½%ßb²¾%F qKœ¿,%ßb7²ÀT%ƒ qÛpÄ´%ßbdpÅÄ%F qKœÆØ%ßb²Ç&ƒ qÛpÌt&ßb2 Í„&F qˆ•Îh'ßbð²Ïx'F q÷²Ð'ßb³Ñ 'F qÏ™ÒÌ'ßb³Óì'ƒ qÛpÖL(ßbs³×d(F qKœÙ€(ßb‹³Ú°(ƒ q®³ß)ßb´³á )F qø³ãà)ßb´äø)F q÷²æ(*ßbvuç8*F qžèÈ*ßb»éÐ*F q>´éÜ*ßb›uêì*F q*¨ë+ßb›uì+F q •í$+ßb»î,+F qs´î<+ßb†´ïT+F qs´ñ¨+ßbÊuòÈ+F q*¨õ,,ßbÊuöL,F q*¨ù|,ßb›uúŒ,F q*¨ûÄ,ßb›uüÔ,F q •ýü,ßbá´þ-ƒ qÛp<-ßbµL-F q •\-ßbµŒ-ƒ q÷? .ßbv 8.F q”µ Ø.ßbvø.F q*¨/ßbv4/F qn–l/ßbÕvŒ/F qn–È/ßb5wð/F qn–40ßbš«D0F qÒ¶|0ßb» „0F qâ¶ 0ßb»!˜0F q š!¤0ßb›u"´0F q •#Ü0ßb·$ 1ƒ qÛp)@1ßb`·*x1F q”·0Ä1ßb¦·1Ô1F q •2ø1ßbß·3(2F q±‘8|2ßbß·9¬2F q$¸>ä2ßbH¸?ô2F qo¸@3ßb xA43F q”µCè3ßb xD4F q*¨F 4ßb»G(4F qP¹G04ßbì­H@4ƒ qÛpIh4ßbd¹Jˆ4F q#œM¸4ßbd¹NØ4F q3œQ5ßbd¹R(5F qCœUX5ßb—¹Vx5F q˹Y6ßbxZ6F qò¹\H6ßb»]P6F qÏ™]\6ßbÂ^l6F qÏ™_”6ßbº`´6F q%ºc7ßb5ºd,7ƒ qÛpe<7ßbAºfT7F q”·h|7ßbPºiœ7áGv»lÐ7ßb<žlà7F qˆºm<8ßb<žnL8F qºod8ßbßbô{ >F qs´Ÿp>ßbô{ ˆ>F q*¨¢Ü>ßbô{£ô>F q*¨¥4?ßb}¦D?F qÞ¼§`?ßb»¨h?F qÏ™¨t?ßb}©„?F qÏ™ª¨?ßb}«¸?F qÏ™¬Ü?ßbA}­ì?F q±‘® @ßbA}¯@F q±‘°<@ßbA}±L@F q껲p@ßbÕ}³ˆ@F q&½µÈ@ßbÕ}¶à@F qÏ»¸Aßb»¹AF qĺ¹AßbA}º(AF qÏ»»@Aßb»¼HAF qv¼¼€Aßb1~½AF q*¨¾¤AßbA}¿´AF q±‘ÀÔAv±‹½ÁäA‰±‹½ÂôAœ±³½ÃB®±º½ÅBÀ±Ë½Ç$BÒ±Ô½Ê4Bå±å½ËDBù±ø½ÍTB²J¿ÎàN%²³¿Ð¨O7²³¿Ñ´OL² ÀÒðOX²LÀÓ$Pm²€ÀÔ`P‚²´ÀÕœP•²èÀÖØP§²Á×Q¹²IÁØPQ˲{ÁÙŒQß²®ÁÚÈQí²ØÁÛR³ÂÜ@R³9ÂÝ|R#³iÂÞ¸R1³°ÂßS=³ ÃàèSZ³äÃãxTo³¢ÄäU…³ËÄåU”³üÄæ U¨³”Åç|U·³”ÅèØUô³ÆÆé”V´Ìlê VL´8Çë°V“´8ÇìÀVßb»íÈVF q£ÇíÔVßb»îÜVF q¾ÇîèVßb»ïðVF q£ÇïüVßbÙÇðWF qbÈóÐWµ+Éô,XœµPÉö¼{k‹ƒD¼ÙŽdƒX¼Šk¼ƒe¼ŒÙ’ă޼—ْ䃟¼¹Ù”øƒ³¼HN–„ʼÑÙ—,„á¼2Ú˜À„B½2ÚÌ…_½NÖ¢†r½ÄÚ¤<†…½ÌÚ¦X†˜½ÚÚ¨l†½(Ûªð†ɽnÛ¯@‡꽟۲˜‡ú½ËÛ´ô‡¾=Ü·\ˆ¾=ܹ˜ˆ¾\Ü»¸ˆ7¾7ݽ4‰@¾oÝ¿h‰N¾‹ÝÀô‰Z¾ªÝÁXŠu¾ÓÝÃ¬Š¾ÛÝÅ´ŠŸ¾ôÝÅ,‹«¾ÞÆX‹·¾Þǰ‹ž<ÞÈÀ‹ѾoßÊ8ŒÙ¾ÂßË`Œâ¾ÜßÌxŒí¾ôßͰŒø¾ àÎØŒÿ¾àÐìŒ ¿ûáÑŽ¿ âÒ<Ž¿ âÓXŽ#¿1âÔ„Ž/¿EâÕ°Ž?¿1âÖÔŽP¿~â× ]¿½âØhn¿ãÙ}¿/äÚ‘ ¿æÛ<•¬¿&æÜD•Æ¿CæÜL•á¿}æÜp•ø¿”æÝ|•ÀøæÞ¬–0À1çàT—BÀOçãp—OÀÐçä0™mÀèç„™wÀ è茙Àèè”™¬ÀmèЙÒÀÍèëšIÁƒêï<œ[ÁÌlñÌœyÁêlòÁÙlöPßbÄê÷tƒžÁîúÀƒ§ÁæêútžƒÃÁúêû¬žßb»ü´žF qÿêüÀžßbØýОF qëþäžßbØÿôžF që Ÿßb» ŸF q"ë LŸßb» TŸF q,ë ŒŸßb» ”ŸF q6ë Пßb» ØŸF q6ë  ßbœ $ F q@ë ` ßb» h F qHë | ßb» „ F qZë ¬ ßb» ´ F qjë Ø ßb» à F q{ë ì ßbƒë ü F q—Ý ¡ßbØ ¡F qŠë 0¡ßbƒë @¡F që T¡ßb» \¡F q¤ë h¡ßb«ë ¡F qŠë 8¢ßbƒë H¢F që \¢ßbñë l¢F q—Ý |¢ßbØ! Œ¢F qÂ×"  ¢ßb»# ¨¢F qüë# ´¢ßbœ$ Ä¢F qüë% Ø¢ßb2 & è¢F qüë' ü¢ßb·( £F qì) £ßb2 * 0£F q ì+ D£ßb», L£F q-ì, X£ßbBì- h£F q]ì. |£ßbwì/ ”£F q ì1 °£ßb»2 ¸£F q-ì2 Ä£ßbªì3 Ô£F qÂì4 䣃*Âöì5 죃3Âî5 ô£ƒ<Âí5 ü£ßb í5 ¤ßbƒë8 ,¤F q—Ý9 <¤ßb»: D¤F q#í: P¤ßb4í; `¤F qKí< t¤ßbaí= „¤F qhí> ˜¤ßbyí? ¸¤F qÎíB ¥ßb×íC ¥F qÎíD D¥ßbæíE \¥F qÎíG œ¥ßb îH ´¥F qÎíJ ì¥ßbîK ü¥F qÎíL ¦ßb»M ¦F q#íM $¦ßbaíN 4¦F qhíO H¦ßb,îP `¦F qÎíR ¨¦ßb\îS ¸¦F qÎíT ܦßboîU ü¦F q„îX (§ßb2 Y 8§F q„îZ L§ßbî[ d§F q”î] €§ßbî^ ˜§F q î` ´§ßb­îa ̧F q”îc è§ßb»d ð§F q-ìd ü§ßbBìe ¨F q]ìf ¨ßb»g (¨F qÁîg 4¨ßbÔîh D¨F qçîi X¨ßb»j `¨F qçîj p¨ßb»k x¨F qçîk ˆ¨ßb»l ¨F qçîl  ¨ßbôîm ШF qçîr ©ßb»s (©F qçîs 8©ßb»t @©F qçît P©ßb»u X©F qçîu h©ßb»v p©F qçîv €©ßbPïw ©F qçîx ¤©ßbîy ¼©F qçî{ ô©ßb»| ü©F qçî| ªßb»} ªF qçî} $ªßb»~ ,ªF qçî~ <ªßb» DªF qçî Tªßbhï€ |ªF qçî„ Àªßbî… ØªF qçî‡ «ßb»ˆ «F qçîˆ («ßb»‰ 0«F qçî‰ @«ßb»Š H«F qçîŠ X«ßb»‹ `«F qçî‹ p«ßb»Œ x«F qçîŒ ˆ«ßb» «F qçî  «ßbŽ °«F qçî Ô«ßbØ ä«F qçî‘ ¬ßb—ï’ ¬F qçî“ <¬ßbœï” L¬F qçî• p¬ßb¡ï– €¬F qçî— ¤¬ßb¦ï˜ ´¬F qçî™ Ø¬ßb«ïš è¬F qçî› ­ßb°ïœ ­F qçî @­ßbµïž P­F qçîŸ t­ßb2   „­F qçî¡ ¨­ßbºï¢ ¸­F qçî£ Ü­ßb‹S¤ ì­F qçî¥ ®ßb¿ï¦ ®F qçî§ D®ßb»¨ L®F qçî¨ h®ßbhï© ®F qçî­ Ô®ßbÄï® ì®F qçî° ¯ßb»± ¯F qçî± ¯ßbÞï² 0¯F qçî³ t¯ßb»´ |¯F qçî´ Œ¯ßbœµ œ¯F qçî¶ °¯ßbPï· À¯F qçî¸ Ô¯ßbíï¹ ä¯F qçîº ø¯ßbPï» °F qçî¼ °ßbíï½ ,°F qçî¾ @°ßb»¿ H°F qçî¿ X°ßb2 À h°F qçîÁ |°ßb» „°F qð ˜°ßb»à  °F qCðà ´°ßb»Ä ¼°F q#íÄ È°ßb`ðÅ à°F qyðÇ ø°ßb‰ðÈ ±F q©ðÉ ±ßbÅðÊ ,±F qÍðË <±ßbÖðÌ L±F qâðÍ \±ßbøðÏ t±F q—ÝÑ ´±ßb¾ZÒ Ä±ßb»Ó ̱ßbä3Ó ä±ƒŠpÅZÕ ì±ßbñÕ ²F qÍð× ²ßb.ñØ <²F qHñÛ h²ßb»Ü t²á„ÃbñÜ °²á¿ÃwñÝ ô²õäñß ³ßb®ñá ³ƒ†wéã ³ƒwîã (³ƒhkîã 0³æ*eã €³æ*eîä ³æ6eä ä³üÃÏñæ ´æ6eàñç P´æ6e÷è t´Äûñé |´ßbîê Œ´ƒ€k òë ”´ƒhkîë œ´ßb»ë ¨´á„Ãòë ¸´á¿Ã!òì È´ßb»î дF qDòî @µßb‰ðï PµF q…ò𠈵ßb‰ðñ ˜µF q®òò ĵßb»ó ̵F qDòó ¶ßb‰ðô ¶F qÞòõ `¶BÄóö °¶OÄó÷ ô¶WÄóø $·lÄ5óù ¸wÄ[óû  ¸‚Äñóþ $¹ƒ¸Äô ,¹ƒ¿Ä³é 4¹ƒÌÄÍY <¹ßb ô \¹ßb» d¹F q+ô x¹ßb2ô ˆ¹F qFô œ¹?Åãô ü¹QÅGõ ºgÅîõ pºuÅRö Œº‡Åžö  º—Åâö °º¡Å÷ ¸º¸Å÷ ÀºÙÅ÷ ȺòÅ÷ кÆïM üº.Æ÷ D»ßbŠö T»F q;÷ l»ßbÇö |»F qq÷ ”»gÆî÷ Ø»pÆ ø" 輇ÆFø% ô½™Æ›ø) °Æ/ù, ¸ÆÂÆIù0 ôÆÌÆSù2 ÇÖÆ.Ë4 TÇåÆˆù5 €Çðƺù7 ¬ÇûÆïù9 àÇ Çú; ÈÇMú= 8È"ÇWú? DÈ3Ç ú@ `ÉEǬúC pͱr=F 4ÎßbF DÎF qÊúG XÎßb»H `ÎF qÓúH €Îßb»J ˆÎF qßúJ ˜Îßb»K  ÎF qÿêK ¬Îßb2 L ¼ÎF q£ÇM LÏßb»N TÏF qèúN `Ïßb»O hÏF qýúO ŒÏßb»P ”ÏF qjëP ¸Ï]Ç1ûQ ÈσÇ1ûS ÔϓǒûU èϼÇÂûY üÏãÇúû\ Ð]ÇD‚_ Ф¥b‚` 0ÐÿÇ6üa @ÐÀ¥ƒ‚c PÐø¥ƒ‚e `Ð$¦»‚g pÐ:¦»‚h €ÐM¦»‚i Ð]¦»‚j  Ðßb_ük °ÐF qlül ÌÐßb_üm ÜÐF qyün øÐßb‘üo ÑF qo¸q ,Ñßbûr <ÑF qÉüs pÑßb»t xÑF q •t |Ñßbpûu œÑF q$ýx ¼Ñßb_üy ÌÑF qyüz èÑßbOý{ øÑF qyü| Òßb»} ÒF qVý} Òßb»~ ÒF q[ý~ (Òßb» 0ÒF q • 4Òßb»€ <ÒF q •€ @ÒßbOý PÒF q •‚ `ÒtÈýƒ hӲȹýˆ °ÓÒÈÕý‹ èÓÞÈÕýŽ ÔêÈèý‘ 0ÔÉþ• ,ÕÉ)þš ÔÖ É÷Ÿ ÜÖ6É@þŸ üÖ°µnÉ¡ ×lÉïM¡ ,×xÉïM¢ X׋Éaþ£ ¨×•É÷¤ °×ºÉšþ¤ ø×Îɲþ¦ ,ØèÉçþ¨ €ØÊçþ¬ ¸Ø"Ê ÿ° ÌØ4Ê#ÿ± ÐÙ?Ê,ÿ´ ÚTÊ;ÿ· ÚcÊ~ÿº èÚ}ʱÿ½ `Û™Ê4À hÛ®ÊpÀ „ÜÅÊ’à ŒÜÕʘà (ÝèÊÌÈ 0àüÊÎ tàˬÕ á6ËèÚ äáCËùÛ |âWËxÜ åj˳å ÄçËí ¨é™ËAõ ¤ó¸Ë»û °ôÊËÅ õÝËk ´õéËK öƒ0Ì] öƒ@Ì $öƒSÌ] ,öƒ`Ì 8öƒp̘ DöƒƒÌ Pößb¢ pößb¾ ˆöF qÛ  ößbà ÐöF qÛ ÷ßb @÷F qÛ# |÷ßb0$ ¤÷F qÛ( Ü÷ßbV) ü÷F qz, ,øßbV. LøF qz1 |øßbV3 œøF qz6 ÌøßbV8 ìøF qz; ùßbV= <ùF qz@ lùßbVB ŒùF qzE ¼ùßbVG ÜùF qzJ úßbL ,úF qzO \úßbQ |úF qzT ¬úßbV ÌúF qzY üúßb[ ûF qz^ LûßbV` lûF qzc œûßbVe ¼ûF qzh ìûßbVj üF qzm <üßbVo \üF qzr Œüßb¥t ¼üF qzy øüßbË{ 0ýF qz pýßbçƒ €ýF q[ý„ Äýßb!… äýF q ˆ þ±r=‹ @þïÌïM‹ ˜þ Íe Œ ØþÍ{  àþ Í  ðþ3Í•  ŒÿDͳ ’ ðÿMÍä “ LXÍ6 ” °…Íë ™ ´›Í! ž ð¤ÍP ¡ ¶Ím ¤ ,ÂÍÇ § ÔØÍ ­ ÞÍ! ° <ñÍk ³ ¨ Îë ¹ ÌÎh½ 0 ÎϾ ¬ /ÎâÀ ´ 9ÎâÀ ¼ FÎ!À aÎ}Á \ qΖ ¨ ‚Ζà ô ΖÄ , £Î¤Å ü µÎ¥Ç < ÁγÉ „ ÕʘÌ ¬ ÊÎÄÍ È ÙÎ×Ï Ô çÎéÐ  ÏéØ 8 (ÏÃà FÏÊê Ì[Ïöñ qÏø ŠÏXþ ªÏ« ,¶Ïô 8Ðà h$Ðß ¼Í œOÐ ¼]Ð' ÜnÐ4 ô‡ÐD ™ÐN H§ÐU `¼Ðb" lßbl% Œƒ†wî( ”ƒwî( œƒ¬wS( ¤ƒhkî( ¬ßb»( ´F qˆ(  ßb»)  F qµ) ” ±r=* ¬ ßb2 * ¼ dÑÔ+ Ä ƒpÑ]+ Ð ~ÑÔ+ Ø ƒ–Ñ]+ ä ƒhkî+ ì æ*e+ !æ*eî, $!æ6e, `!æ6eâ. ˜!æ6e÷/ ¼!ßb¤™0 Ì!F q¯E1 à!ßb÷2 ø!F qý4 8"ßb5 h"F q:  "ßb;= °"F qR> È"ßbu? Ø"F q¨@ ü"ßbA #F qìB 0#ßb;C @#F qRD X#ßbuE h#F q¨F Œ#ßbG œ#F qìH À#ßbcI Ð#F q;J è#ßbK $F qP P$ßbS €$F qJX ´$ßbTZ Ô$F qw] %ßb‡^ @%F qwd ¤%ßb™e ü%F qÅn h&ßbÌo €&F qçq ¤&ßb;r ´&F q÷s È&ßbut Ø&F qu ü&ßbv 'F qw 0'ßb;x @'F qRy X'ßbuz h'F q¨{ Œ'ßb| œ'F qì} À'ßb;~ à'F qR ü(ßb}‚ )F qšƒ 4)ßb»„ <)F qÂׄ P)ßb}… `)F qš† ˆ)ßb»‡ ”)áÃѬ‡ ´)ßb²‰ ô)F qÝ Œ*ßb;‘ œ*F qR’ ´*ßbu“ Ä*F q¨” è*ßb• ø*F qì– +ßb‰— <+F q4š „+ßbí› ”+F qRœ ¨+ßb» °+F qc Ä+ßbhž Ô+F qoŸ ä+ßbh  ô+F qo¡ ,ßbh¢ ,F qo£ $,lÉïM¤ L,Òt¥ ˆ,%Ònɧ ,0Ònɧ ˜,>Ònɧ  ,GÒnɧ ¨,UÒïM§ -±r=¨ -ßb2 ¨ $-ÄÒ© ,-ƒÑÒ]ª 8-áÒª D-ƒñÒ]¬ P-Ó§¬ X-ƒÓ]­ d-#Óº­ l-ƒ.Ó]® x-<ÓØ® €-ƒIÓ]® Œ-XÓÞ® ”-ƒfÓ]¯  -ƒhkî¯ ¨-ßbñë¯ ¸-ƒ€kð° À-ßbY° Ø-ƒ†w²M² à-ƒw²M² è-ßbâ² ø-ƒ€kó³ .ßb˜³ .ƒ€k´´ .ßbœ´ (.ƒ€k²Mµ 0.ßb‘µ @.†€kð¶ P.ßb¶ `.††w²M· p.†w²M· €.ßb©· .†€kó¸  .ßbµ¸ °.†€k´¹ À.ßbÁ¹ Ð.†€k²Mº à.±r=º ð.ßb2 º /Ôλ /ƒÔ]¼ /"ÔÚ¼ /ƒ:Ô]½ (/UÔâ½ 0/ƒdÔ]¾ ŽÚ7SM D>”Ú{ N H>¡Ú{ N L>°Ú{ N P>¾Ú¥$N Ô>ÄÚ´$O H?ÌÚ‡$P  ?ÑÚ»$Q ¨?ÙÚ»$Q °?âÚÉ$Q @êÚÉ$S t@ôÚÓ$U ð@ùÚã$[ 4AýÚï$] üAÛã$c DBÛÿ$e PBœƒÿ$f \B Ûÿ$g |BÛ%h ¤B%Û%k ÐB+Û%m 0C=Û$%r ˆCJÛ0%v ÄCV„9%y DVÛ%{ DYÛ%} D\Û% 0D`Û% @DdÛã$ƒ PDhÛã$… `DlÛI%‡ ¬DzÛÉ$Š E€Ûb%Œ hE—Ûj%Ž ¼EªÛ€%‘ dFÀÛã$“ XGÚÛã$• ØGèÛ³%— `Hܽ%› hH ÜÄ%› ¨H#ÜÌ% àH;ÜÓ%ž èHGÜÓ%ž ðHUÜÓ%ž øHcÜÓ%ž IqÜØ%ž I‚ÜØ%ž IÜ$ž 4I—Ü'F  LI Ü‡$¡ €I¥Üç%¢ HJ¸Üò%¥  JÏÜ&« ÜJÚÜ$&­ KëÜB&¯ °KÝb&¶ øK Ýã$¸ PLÝ{ º XL4Ý«&º 4MHÝã$½ DMUÝ{ ¿ LMvÝ{ ¿ TM•Ý{ ¿ \MDÝã$¿ ÌM¯ÝÜ&Á äN¿ÝÜ&Å PÏÝð&É ÌPæÝÿ&Ï QóÝ'Ò àQÞ.'Õ R!Þã$× (Rä„ã$Ù 8R%Þã$Û lR2Þã$Ý ˆR6Þ»$ß R>ÞP'ß ÈRIÞ€%â ØRNÞq'ä à{ ÌXDàŽ$ÔXOà{ ÜXcà)ìYxà]) Z”à{ ¨Z¤àÓ%°Z¶àÓ%¸ZÂàk)èZÍà‚)!˜[ïà)%œ[ùà)% [á)%¨[2à)%°[á’$%¼[ïà)%À[ùà)%Ä[á)%È[&á‘)%$\+á—)'˜\±r=)È_ßbØP)Ü_áâ·*`áOâ·+4`ßb»,<`F q½P,@`ßbƒë-P`F qŠë.|`ßbÝ)/˜`áGv»1´`ßbkR1È`ÆDr?2Ð`Æu·2aÆ+u·3@aÆu*4„aßb#Q5”aƒ qå?6¨aßb;*8ÄaáGv»:àaßbÓR:ôaÆDr?;üaÆu^*; bÆ+u^*<DbÆuÙ?=xb”ã-p>|blÉïM>¤bÒt?àb%ÒnÉAèbžãnÉAðb>ÒnÉAøb©ãnÉAc¶ã÷AcÐã÷Acèã÷Acýã÷Acäz*A|c,ä”*D¬cFä×*G,diä +HXd‰äoÝI˜d™äg+JÔd»ä•+K eéä,OpfåG,QÄf,å~,TgAå©,VˆgMå²,X´gWå©,ZÌgiå»,\øgsåÅ,^hŒå÷,`i£å -c8i¼å[-fœiÎåj-hÔiäåu-jôi÷å‰-m”jæ™-p´j-æª-sLk<æ³-uTkNænÉu\kYænÉudkfænÉulkqænÉutk~ænÉu|k‰ænÉu„k–ænÉuŒk¡ænÉu”k®ænÉuœk¹ænÉu¤kÆænÉu¬kÑænÉu´kÞænÉu¼kéænÉuÄköænÉuÌkçnÉuÔkçïMullç{ vpl'ç{ vtl9ç@NvÐmEçHNwlnVçã-x|nqç .y8o‹ç.{Xo˜ç3.}´o£ç½Op²çäO€@pÆçñO€pÞç’.‚ÈpèçÊO…TqûçPN‡ÀqèïMˆèqèïM‰r*è©,Špr7è/Œ¨rNè /ŽÄr^è .|syè.’œsŽè©,”ÜsžèsÉ–t¨èÅ,—Htºèª-™ÈtÇè/›Tußè&/ž¨ußb-/ ÀuF qÛ¢ìußb»£ôuF qF/£(vßb»¥0vF qP/¥Hvßbœ¦XvF q|/§¸vßb2 ¨ÈvF q/©øvßb»ªwF qúêªHwßb»«PwF qú꫘wßb/¬¨wF qúê­¸wßb»®ÀwF q¸/®xßb2 °$xF që±Xxßb»²`xF që²lxßbÆ/³„xF qÐ/µôxßb»¶üxF qü¶yßb»·yF qü·yßbÖ/¸,yF qüº„yßbžN»”yF qü¼¨yßbß/½ÀyF q½P¿ìyßb»ÀôyF qè/Àzßbî/ÁzF q½PÃDzßb0ÄTzF qÐ/Ådzßb0Æ|zF qÐ/ÈØzßb'0ÉðzF q½PËœ{ßb»Ì¤{F q¸/Ìø{ßb»Î|F qëÎ |ßb0Ï|F qÐ/Є|ßbî/Ñœ|F q½PÓÈ|±éM0Ô}±r=Ö(ßb»Ö0F qÂ×Ö<ßbœ×LF q¦0Ø\ßbžNÚlF q*4Ûˆßb`ܘF qÛݬSr´0Þ¸f|Í0ßЖxé0áÜö}ý0ãìyé0äød}%1æ€ÌéI1è€Öé%1é€àéI1ë(€Þx1ì<€Mr¯1îD€´xÅ1îX€¦xÅ1ðl€­xñ1òx€õx 2ô„€Áx12ö˜€îéZ2ù¬€ñx‡2ü¸€Ów¢2þÈ€÷é¹2ÿØ€þé×2ä€$yò2ô€+y3ê+3 ê'€ê%1(êb3D&êb3 `1êb3 |@êb3 ˜Qê½3¨\ê½3¸qê$4üzê;4,‚ê{ 0‚‘ÅO4p‚êO4ðƒùÚß4¤„ŸêI5à…7ßâ5!ð†­êf6$„‡Àêß4%HˆÇê¶6(̈Ëêó6+8‰Ðê7-¨‰Ùê|70ŠÞê¤73Šåê¤75‹ìêÀ77‹óêÀ7:<‹ûê8=Ì‹ëA8A8Œ ëA8D˜ëÒ8G,Ž#ë 9KXŽ8ëÒ9PQë:UDcëN:W˜uë:X܇ëN:Z0™ëk:[p¨ëk:\°·ëÌ:]@‘Ãë;^\‘Îë $_x‘Ùë $_”‘ùë>;_ô‘ì‚;`t’ ì×;a˜’.ìn<b—V„’<e@—Bì¬<h¨—NìÅ<j¸—Uìõ<kÜ—aì =n˜iì!=o(˜zìZ=rp˜€ì‘=t€˜ßbbJv˜˜F q¯Ex°˜ßbbJyȘF q¯E{à˜ßbbJ|ø˜F q¯E~™ƒˆìÕ=™ƒ’ì] ™ƒìK;,™ƒ ì€8™ßbð:P™ßb±;ƒl™áv—…€™ábv+…˜™áv]…¬™áËv»…È™áGv»…Ì™ßbß<…ä™F q±‘‡šßbz=ˆ(šF q>‰8šžì3>‹„šßb¡JŽ”šF qb>¨šßb}K‘ÀšF q~>“Üšßb»•äšF q‘>•ðšßb»—øšF q‘>—›Sr³>™›–xÁ>š›ªìÛ>4›yö>ŸL›y?¡X› y1?£p›ÞxR?¥„›žxp?§˜›ÄìÁ?©Ä›¦xï?«Ø›­x @­ä›õx1@¯ð›´xï?±œñxn@³ œÁx«@µ8œîéá@¸Pœê4A»dœÉìyA¼xœÑì®A¾Œœ÷éáAÀ˜œ êüAÁ¤œþéBÂÈœ$y-BÃØœ+yHBÄèœMr_BÅðœßb»ÅøœF qlBÅßbXAÆ F q›BÇTßbXAÈdF q›Bɘàì CÊäzê$CÌž‘Å´±F qèO>À±ßbiG?бF q P@è±ßb»Að±F qPAü±ßb‰GB ²F q PC$²ßbiGD4²F qePE€²ßb»Gˆ²F qyPG¨²Sí‡PH´²[í‡PIÀ²cí‡PJ̲kí‡PKزsíÝPLˆ³£t*QP´žíQQU¸´µíQZÈ´d›¤Q_Ø´Sí¹Qeä´[í¹Qfð´cí¹Qgü´µíÙQhµd›ôQlµsíRq µ£t4Rt¶žíLRxˆ¶Þx|R|,·ñxÆR~è·ÕííR€”¸äí)S‚X¹{rdS„`¹ží‰S…¸¹sí™S‡ô¹£tªSˆLºSr´SŠlºMr¼S‹xºo|ÃS‹ˆ»îÛS¬»îæS“è»,îúS—¼=r)T˜T¼@îbT™´¼ms‹T›½(š¤T8½$y¸TžX½÷éÆTŸx½ÞxÔT ȽñxîT¢(¾VîJU¤Ⱦ_î£U§x¿dîûUª,ÀÕíPV­€Àpî•V¯ ÁäíìV²ˆÁ€îW´´Á¦x1W¸ìÁŒîLWº$ÂîW¿¨Â¥îWÂÔ´x1WÆ Ã±îLWÈDýîWÍÈÃÅîåWÐÄÄì!XÓLÄÑî8XÕ„ÄžxUXØ´Ä÷|˜XÚÅ­xËXÜtÅõxûXÞèÅÝîYà<ƪì5YãlÆéîFYå Æy]YèÐÆõîˆYê|ÇùîÜYìtÈï$ZïüÈ ï‘Zð Éï¤TñøÉÁxùZòTÊîé@[õ°Êï€[øTË$ïÙ[üøË*ï\HÌ;ïM\¸ÌRï™\ (Í6£·\\Í^ïÓ\Ígï)]Îxï)]T΃ï~]ÌΓïª]ðάïÎ]ϸïç]DÏÁï^ xÏФT"¬Ïê7^#ÌÏ ê¸$ìÏÈïD^%8ÐÑïV^)pÐÛïu^+ ÐäïŒ^/ØÐñï³^1øÐðä^3LÑð _4¤Ñ ðä^6Òð=_7¬Òðä^9$Óð=_:´Ó ðä^<”Ô(ð _=xÕ2ðÈ_?@ÖµíÝ_BLÖd›ç_DXÖIðø_GèÖ{r`KôÖï`L×=r,`M ×ñxB`N×äí]`P$×Þx~`R0×þé¸TT<×+yÆTUH×Mr“`VP×rôßV×”r`WÐ×Sr²`XÜ×ms¾`Yè×µíë`[PØ`ð%a]°Ø÷|La`ÀØÕílabÌØží‡adØØtð›afôØð°ai4Ù‹ðúak¸ÙVî1bnØÙ–ðTbq`Úpîbu„Ú¢ðcxHÛ°ðXc}`Ûµð¿cüÛdîìc†Ü_îd‰ ܾðWdŒ\ÜÁxŠdˆÜgï´d’ÔÜÊðæd” Ý6£ e˜LÝÖð0e›ÐÝ$ïpeŸðÝâð¤e£$Þîéòe¨hßxï´d«Èßôð2f­à^ïjf²„àñžfµ áñg¹ãïHg€ã=ñugÆä½î’gÉ,ä´x´gÌ8ä¦x´gÎDäHñugÐÌäî’gÓðäªìÈgÖDåyÝgØ„åžxhÚÀåÄì1hÜæ­xLhÞ(æõxfhà4æïŒhâ@æ ï±hãLæõîßhäXæùîÿhædæ¸ï(iépæÁïVië¬æÐ`íèæ êqiîôæê‚iïçSñ“iðXçÑï³iópç_ñÇiõ´çäïáiøÌçðôßú<èð,jû´èðôßýléðajþ@ê ðôßøêðajÌë ðôßì(ð,jXí@îwjdíñï—jxí=r·j ˆíÞxÁj ÔíÕíÖj îñxðjdîäíüj¨î@îkìîží&kTïð2kÐï|ñ8küï´xZk,ð‡ñ8kXð¦xZk"ˆð{rfk$¤ðßbtk%¼ðF qyü'äðßb™k(üðF q­k*$ñßb½k,<ñF qyü.dñ’ñìk/tñŸñ(l0„ñ[ìk2ñ«ñ(l3œñMrrl5¬ñÆñl5¼ñžíÉl6üñÞxél8lòµí m:ÈòÕí%m<@ó¦xLm>¸ó´xLm@0ôVîƒmBüôÙñÉmE õàñ"nGõ­x\nJDõìñ\nLPõñx‰nNxõäí¿nP õ_îþnRÜõ÷|@oUöõîxoW@öùîÁoY¤ö—ôo\Èöžx#p]H÷ÄìBp_˜÷ywpa(øªìpcxøúñÌpeàøSr"qgŒù=r-qh¬ù{rjqi\úÁx„qjÐúgï±qm`ûòäqopûmsrp¬û@î1rr¼û!òQrt(ü)ò²rxØü÷é‚i{äü$yqi|Œýþé7^}°ý+y¸~`þö}Espþ5òÌp€¨þX§±s‚àþ6£tƒÿ>ò%t†dÿÑïSt‰ÈÿKòft‹øÿäïžtŽ\Xò¶tpkòót”Ètòru–D–ò°ušœŸò vŸè¨òâv¢<®òâv£`·ò@w¤p¿òâv¦¸Èòx§Áïx©,Ðâv«PÓòx¬xðÀx®àðßx¯P ðÀx±(ðßx²Ä ðÀx´pð7yµ8ðÀx·äð7y¸¬Ûò\nºäåòÌp¼ êò\n¾T ½îêyÀ, îêyà rÀxÆx ôòÀxÇ ùòÀxȤ ßbÛkÉ´ F qKzÊÌ ßb lËä F qKzÍø ßb„lÎ F qKzÏ ßb¼lÐ0 F qKzÒL ßb®mÓd F qKzÕ€ ßbömÖ  F qKzÙÈ ßbdžÚØ F q+{Ûè ßbg4Üø F qD{Ýßb¬nÞF qD{ß(ßbênà8F qŒ{áHßb.oãXF qD{ähßb»åpF q«{å|ßb»ç„F qØ{ç¨ßbîoé¸F qKzêÌßb¬pë FÑu@òTFÞu»ó Fäu]ó\Fóu—óhF¾ub>ó”ßb×qó¤F qKzôÄßb±LõÔF qE|öèßbÿq÷F qE|ù4ßbsúDF qKzûXßb·ühF qKzý|ßbYsþ´FÑu@¨FÞu»XFäu]ŒFóu—˜F¾ub>ÄßbŽsüFÑuì| FÞu» ¼Fäu] ôFóu} F¾u} (ßbÒs hFÑu@|FÞu»4Fäu]pFóu—|F¾ub>°ßbÏtFÑue}´FÞu»XFäu]ŒFóuý>˜F¾uq}ÀßbavàF q¹} 4ßbŽv!LF q •#œßb±L$¬F qKz%¼ßbý}&ÔF q±‘(@ßb»)HF q~)Xßb»*`F q½~*”ßbw+¬F q\-ßb‚w.@FÑu@5p FÞu»6 !Fäu]6T!Fóu—6`!F¾ub>6˜!ßbàw6è!FÑu@>$#FÞu»?Ô#Fäu]?$Fóu—?$F¾ub>?T$ßbw?l$F q PAœ$ßb±LB¬$F q PCÔ$ßb€Dì$F q±‘F@%ßb»GH%F qb€Gt%ßbcxHŒ%F qê€JÐ%ßbTyK&FÑu@Q'FÞu»R´'Fäu]Rè'Fóu—Rô'F¾ub>R (ßb¬pR`(FÑu@Y´)FÞu»Z€*Fäu]Z¼*Fóu—ZÈ*F¾ub>Zô*ßbŸyZ4+FÑu@al,FÞu»b-Fäu]bP-Fóu—b\-F¾ub>bˆ-?ó,b”-Eóqc¤-cóÂf¼-zó‚i .¨óD‚j€.ÂóD‚l¼.Ðó°‚nØ.ßó-qpè.ëóƒq /þó=ƒt4/ ô¯ƒvh/ô׃x|/.ô0„zŒ/ßb·}˜/ƒf—~¤/€x€~À/ßb»~Ì/á„Óñ~Ø/á¿Ã‹ñä/ßbº€ø/á„Ô„‚0á¿ÃŸ„ƒ00ßb…D0átsb>†X0á«sk>†l0±r=†x0ßb»†€0²ñhl†ˆ0ƒhkî†0Átsb>† 0Á«sk>†´0ßbM†Ô0F qKz‰ð0ßb¥Š1F qÃEŒ,1ßb»41F q±‘Æ“ô<žŽ`1ßb–‚Ž|1Átsb>ð1Á«sk>2ßbÏ‚D2ƒ¡ó»‘ 3ƒÄô—‘X3ÁÏô<ž‘p3Á v—’|3Á bv+’Œ3Áv]’Ä3ÁËv»’à3ÁGv»’ô3ßb·’4F q •“84ßb‚”P4F q P–p4ßbÏ‚—€4F qKz˜”4ßbcƒ™¼4áv½…Ô4ábv+ð4áv]h5áËv»„5áGv»ˆ5ßbcƒ°5F qñ…¡Ð5ßb±L¢à5F q P£ì5ßb#Q¤ü5F q†¥6ßb"†§,6áGv»©D6ßbúƒ©d6ÆDr?¬l6Æu·¬|6Æ+u·­Œ6Æu*®È6>õª†¯ð6Yõ1‡°<7^õx‡±h7{õ£‡²”7±r=³ 7ßb»³¨7ºõχ³°7ƒÃõ]³¼7ÎõᇳÄ7ƒ×õ]´Ð7Qõ‡´Ø7ƒãõ]µä7ƒhkîµ 8ßb»µ8ßb·µ$8ƒ€k—¶,8ßb\‡¶<8ƒ€k™ˆ·D8ßbûˆ·T8ßb‰¸d8†€k—¹t8ßb3‰¹„8†€k™ˆºÆ GõȆºÆ 1õz†º”8ßbq‰º°8ƒö™ˆ¼¼8ƒöЉ¼È8‰z|¼9Á öȆ¾9Á Vöz†¾ 9ßb¬‰¾89F qE|ÀX9ßbå‰Áh9F qŠÂØ9ßb\‡Ãø9ƒö™ˆÄ:Á v—Ä@:Á bv+ÄT:Áv]Äà:ÁËv»Äü:ÁGv»Ä;ßbЧÄ,;ƒ¡öb>Å8;Á öȆÅD;Á Vöz†Åd;ßbqŠÅt;F qŠÆ¤;ßbЧÇ´;F q •ÈÄ;Îë $Éà;Ùë $Éü;ÁžŠÉ<ºöªŠÊ|<íÔŠÌŒ< í‹Î°<¾öh‹ÐÀ<Ãö¦‹Óø<Ëö ŒÖ =Òö'ŒØ`=ÛöbŒÜ€=âö®ŒÞ¤=éööŒà>øöqä`>÷‰æ„>÷¢è¼>÷¦‹éô>(÷=ƒì?2÷¹îH?=÷SŽò€?ô˜ŽõŒ?ßb}÷ ?áv—ø´?ábv+øÈ?áv]øØ?áËv»øô?áGv»ø@ßb»ø0@Á v—øX@Á bv+ø€@Áv]ø˜@ÁËv»ø´@ÁGv»ø¸@±r=øÜ@ßb2 øì@Ç÷ËŽùô@ƒÖ÷]ùAç÷ËŽùAƒõ÷]ùAøËŽùAƒø]ù(AƒhkîùÆ!øÑŽùÆðv»ù0Aßb»ùHAƒÄô—ù€AÁ v—ùŒAÁ bv+ùœAÁv]ùÈAÁËv»ùäAÁGv»ùðAßbÁŠù BÆ!øÑŽû@ÐJƾub>ÜJÆÑu@KÆÞu»DKÆäu]HKÆóu—XK>øX`KIø|Kßb‚KáVø®4¤K>øÞ!¬K…øð!¸KøÞ"ÀK§øE‘"ÜKßb»$èKá„Óñ$ôKá¿Ã‹ñ%Lßb2 'Lá„Óñ((Lá¿Ã‹ñ)4Lßb»+@Lá„Óñ+PLá¿Ã‹ñ,\Lßb"‘.xLá„Óñ0ŒLá¿Ã‹ñ1 Lñœ‘3ØL r©‘4àLr©‘5ìLÓwÍ‘6øLÁxÙ‘7Mîéø‘:@M¦x’=dM´x’?ˆMÞx+’A¬Mñx@’CÔM‰[’EøM+y…’G(N$y“’HTNSí¥’I`N[í¥’JlNÈø¥’KxNÎø¥’L„NµíØ’MNd›ð’PœNsí“TOÔø%“VˆOðøc“ZàOüø†“_@P£t³“dPPžíÓg`PÞxê“jôPÕí”lŒQñxA”nÜQä퉔p,R(šÆ”r|R ùÆ”sÐRo|•tìTßb,”|UF ql•~$Ußbh”€›ëg«ûÿhïÄg°ûh›òhaìÆTõ(h€ì¸Tödh¼û(i÷phÉû¾`ù¨hÓû²›û,iÙûá›ÿ`ißûÿ›(jöû#œ  jüû²` Èjü„œ kü(iÌk£tÈœðk¬tèœük*ü l?ü $lSü ƒ0lYü ƒ¤‹LrV¤drGy½¡pr½¡‘|r½¡’ˆr#½¡“”r(¤” r.½¡–¬r6½¡—¸r:½¡˜Är5ò½¡™Ðr@½¡šÜrnƒs¢›èrF½¡œôrJ½¡sP餞 sU½¡ŸsY½¡ $s^½¡¡0sb½¡¢„€€$@Ü€Œ$Bô€•‘)DL¡‘)Fd«{$HÄ·{$JÜÀA«L<‚ÌA«NT‚ÖL«P´‚âL«RÌ‚ì[«T,ƒø[«VDƒj«X ƒj«Z¸ƒy«\„'y«^0„1˜«`¤„>±«cÌ„I«eP…V¬ip…j2¬mè…xV¬pT††m¬tĆ´™¬y8‡ÄϬà‡ã ­†ˆˆóD­Žd‰¹­—DŠ"?®¡ŒŠ1j®¤ÄŠB®¥ ‹T½¡¦‹_½¡§,‹k½¡¨<‹w½¡©L‹ƒ¤ª`‹½¡¬p‹Ÿ½¡­€‹ª½¡®‹·½¡¯ ‹Ç½¡°°‹Ôs¢±À‹à½¡²Ћë½¡³à‹øé¤´ð‹½¡µŒ½¡¶Œ½¡· Œ&½¡¸0Œ2½¡¹@Œ=½¡ºPŒI4¥»Æ z]½Æ ‡]½Æ“»½Æ w—½dŒßb»½xŒÁ v—½„ŒÁ bv+½”ŒÁv]½äŒÁËv»½øŒÁGv»½üŒƒ›{¯½(ßb»¾4Æz]¾8Ƈ]¾<Æ“»¾@Æw—¾Xßb·¾lÆz]¿pƇ]¿tÆ“»¿xÆw—¿Æ¦‹ñ¿Æ­‹ñ¿Æ³¯¿Æ¸*4¿„ßb ¯¿¬Æ“»Á¼ÆwüÁÐÆ‡]ÁƦ‹ñÁÆ­‹ñÁƳ¯ÁLŽßb ¯ÁtŽÆ“»Ã„ŽÆw—ÎƇ]Ãßb»Ã$F q°¯Ã,ßb¶¯ÅhÆz]ÊtƦ¿¯ÊˆÆ­¿¯ÊƳ†ÊœƸ†Ê ßbůÊÈátsÙ¯Îôá«sk>Î(ßb»Î0F qá¯Î8ßbç¯ÐtÆz]Õ€Ʀð¯Õ”Æ­ð¯ÕœƳö¯Õ¨Ƹö¯Õ¬ßbû¯ÕÔáts°Ù‘á«sk>Ù4‘ßb»Ù<‘F q°ÙD‘ßb°Û€‘Æz]àŒ‘Ʀ&°à ‘Æ­&°à¨‘Ƴ,°à´‘Ƹ,°à¸‘ßb1°àà‘átsE°ä ’á«sk>ä@’ßb»äH’F qM°äP’ßbS°æŒ’Æz]똒Ʀ\°ë¬’Æ­\°ë´’Ƴb°ëÀ’Ƹb°ëÄ’ßbg°ëì’áts{°ï“á«sk>ïL“ßb»ïT“F qƒ°ï\“ßb‰°ñ˜“Æz]ö¤“Ʀ’°ö¸“Æ­’°öÀ“Ƴ˜°öÌ“Ƹ˜°öГßb°öø“áts±°ú$”á«sk>úX”ßb»ú`”F q¹°úh”ßb¿°ü¤”Æz]°”ƦȰĔƭȰÌ”ƳΰØ”ƸΰÜ”ßbÓ°•átsç°0•á«sk>d•ßb»l•F qï°t•ßbõ°°•Æz] ¼•Ʀþ° ЕÆ­þ° Ø•Ƴ± ä•Ƹ± è•ßb ± –áts±<–á«sk>p–ßb»x–F q%±€–ßb+±¼–Æz]È–Ʀ4±Ü–Æ­4±ä–Ƴ:±ð–Ƹ:±ô–ßb?±—átsS±H—á«sk>|—ßb»„—F q[±Œ—ßba±È—Æz]"Ô—Ʀj±"è—Æ­j±"ð—Ƴp±"ü—Ƹp±"˜ßbu±"(˜áts‰±&T˜á«sk>&ˆ˜ßb»&˜F q‘±&˜˜ßb—±(Ô˜Æz]-à˜Ʀ ±-ô˜Æ­ ±-ü˜Ƴ¦±-™Ƹ¦±- ™ßb«±-4™áts¿±1`™á«sk>1”™ßbDZ1Ì™Æz]6Ø™Ʀ¿¯6ì™Æ­¿¯6ô™Ƴ†6ü™Ƹб6šßbÕ±6LšÆz];XšƦÞ±;lšÆ­Þ±;tšƳä±;€šßbé±; šátsð±>¼šá«sk>>Üšßbø±>›Æz]C ›Ʀ¿¯C4›Æ­¿¯C<›Ƴ†CD›Ƹ²CX›ßb²C”›Æz]H ›Ʀ²H´›Æ­²H¼›Ƴ²HÈ›ßb²Hè›áts!²Kœá«sk>K$œßb¿©K`œÆz]PlœƦ‹ñPxœÆ­‹ñP„œƳ¯PœœƸ¯P œßbªPÈœátsb>Tôœá«sk>T(ßbPªTxÆz]Z„Ʀ‹ñZ Æ­‹ñZ¬Ƴ¯ZÄƸ¯ZÈßbšªZøátsb>_,žá«sk>_džßb_²_˜žÆz]c¤žƦg²c¬žÆ­g²c´žƳm²cОƸm²cÔžßbr²côžátsy²fŸá«sk>f0Ÿßb»cf@ŸF q*4gtŸßb»ch„ŸF qÆ4iÄŸßb»kП±r=k<¡3ª ³kD¡ßb»kL¡F qp±kX¡ßb«²lh¡F q¯m|¡ßb»n„¡F q±n¡ßb«²o ¡F q¯p´¡ßb»q¼¡F q†qÈ¡ßb«²rØ¡F q¯sì¡ßb»tô¡F qö¯t¢ßb«²u¢F q¯v$¢ßb»w,¢F q˜°wh¢ßb«²xx¢F q¯yŒ¢ßb»z”¢F qä±z ¢ßb«²{°¢F q¯|Ä¢ßb»}Ì¢F q²}Ø¢ßb«²~è¢F q¯ü¢ßb»€£F q6³€£ßb«² £F q¯‚4£ßb»ƒ@£±r=ƒ¸£3ª ³ƒÀ£ßb»ƒÈ£F q䱃ԣßb«²„ä£F q¯…ø£ßb»†¤F q²† ¤ßb«²‡¤F q¯ˆ0¤ßb»‰<¤±r=‰´¤3ª ³‰¼¤ßb»‰ĤF q䱉Фßb«²Šà¤F q¯‹ô¤ßb»Œü¤F q²Œ¥ßb«²¥F q¯Ž,¥ßb»8¥±r=°¥3ª ³¸¥ßb»À¥F qä±Ì¥ßb«²Ü¥F q¯‘ð¥ßb»’ø¥F q²’¦ßb«²“¦F q¯”(¦ßb»•4¦±r=•¬¦3ªê³•´¦ßb»•¼¦F q´•Ȧßbg4—ئF q*4˜ì¦ßb¤³™ü¦F q´š §ßb»›(§F q-´›8§ßbg4H§F q*4ž\§ßb¤³Ÿl§F q´ §ßb»¡œ§±r=¡¨3ª ³¡¨ßb»¡$¨F q䱡0¨ßb«²¢@¨F q¯£T¨ßb»¤\¨F q²¤h¨ßb«²¥x¨F q¯¦Œ¨ßb»§˜¨±r=§©3ª ³§©ßb»§ ©F qä±§,©ßb«²¨<©F q¯©P©ßb»ªX©F q²ªd©ßb«²«t©F q¯¬ˆ©ßb»­”©±r=­ ª3ª ³­ªßb»­ªF qä±­(ªßb«²®8ªF q¯¯Lªßb»°TªF q²°`ªßb«²±pªF q¯²„ªßb»³ª±r=³«3ª ³³«ßb»³«F qä±³$«ßb«²´4«F q¯µH«ßb»¶P«F q²¶\«ßb«²·l«F q¯¸€«ßb»¹Œ«±r=¹¬3ª ³¹ ¬ßb»¹¬F qä±¹ ¬ßb«²º0¬F q¯»D¬ßb»¼L¬F q²¼X¬ßb«²½h¬F q¯¾|¬ßb»¿ˆ¬±r=¿ô­3ª'µ¿ü­ßb»¿®F q7µ¿®ßbÈ´À ®F q“ñÁ4®ßb»Â<®F q<µÂH®ßbÈ´ÃX®F q“ñÄl®ßb»Åt®F qAµÅ˜®ßbȴƨ®F q“ñǼ®ßb»ÈÄ®F qMµÈЮßbÈ´Éà®F q“ñÊô®ßb»Ëü®F qYµË¯ßbȴ̯F q“ñÍ,¯ßb»Î4¯F q†Î@¯ßbÈ´ÏP¯F q“ñÐd¯ßb»Ñl¯F qcµÑx¯ßbÈ´Òˆ¯F q“ñÓœ¯ßb»Ô¤¯F qmµÔ°¯ßbÈ´ÕÀ¯F q“ñÖÔ¯ßb»×௱r=×X°3ª ³×`°ßb»×h°F qä±×t°ßb«²Ø„°F q¯Ù˜°ßb»Ú °F q²Ú¬°ßb«²Û¼°F q¯Üаßb»Ýܰ±r=ÝT±3ª ³Ý\±ßb»Ýd±F qä±Ýp±ßb«²Þ€±F q¯ß”±ßb»àœ±F q²à¨±ßb«²á¸±F q¯â̱ßb»ãر±r=ãP²3ªÚµãX²ßb»ã`²F qä±ãl²ßbg4ä|²F q*4å²ßb»æ˜²F q²æ¤²ßbg4ç´²F q*4èȲßb»éÔ²±r=éL³3ª ³éT³ßb»é\³F qä±éh³ßb«²êx³F q¯ëŒ³ßb»ì”³F q²ì ³ßb«²í°³F q¯îijßb»ïг±r=ïH´3ª ³ïP´ßb»ïX´F qä±ïd´ßb«²ðt´F q¯ñˆ´ßb»ò´F q²òœ´ßb«²ó¬´F q¯ôÀ´ßb»õÌ´±r=õDµ3ª ³õLµßb»õTµF qä±õ`µßb«²öpµF q¯÷„µßb»øŒµF q²ø˜µßb«²ù¨µF q¯ú¼µßb»ûȵ±r=û@¶3ª ³ûH¶ßb»ûP¶F qä±û\¶ßb«²ül¶F q¯ý€¶ßb»þˆ¶F q²þ”¶ßb«²ÿ¤¶F q¯¸¶ßb»Ķ±r=<·3ª ³D·ßb»L·F qä±X·ßb«²h·F q¯|·ßb»„·F q²·ßb«² ·F q¯´·ßb»À·±r=8¸3ª ³@¸ßb»H¸F qä±T¸ßb«²d¸F q¯ x¸ßb» €¸F q² Œ¸ßb«² œ¸F q¯ °¸ßb» ¼¸±r= 4¹3ªÐ¶ <¹ßb» D¹F q´ P¹ßbí¶`¹F q¯¥t¹ßb“¶„¹F q·¨¹ßb»°¹F q-´À¹ßbí¶йF q¯¥ä¹ßb“¶ô¹F q·ºK}Å¡$º2}Å¡4º“„½¡DºфšTºž¦/ƒ dº¥¦Aƒ!tº¤þ;¢"„º«ÈG£#”º­þN¢$¤ºµþ`¢%´º£Ès¢&ĺ¾þs¢'Ôºÿ°¢(äº'ÿâ)ôº9ÿ£*»Cÿ£+»ÈüÁ, »× $-8»x}/ž-D»6e&ž/P»£ÿs¢1\»Îë $2x»Ùë $2”»ú¾`2Ø»á9·4¼ºöë`6x¼ßbW>8 ¼ƒÄô—9ؼÁ v—9ä¼Áv]9H½Á bv+9X½ÁËv»9p½ÁGv»9Æ qÆ49t½ßb»;€½Æ q{·;Œ½»xU<¸½ßbj·=нF q*4?è½ßbên@ü½Æ qÆ4AÆ qN5A¾ßb»D ¾Æ q¸D,¾»x5DEl¾ßbï·F„¾F qÆ4Hœ¾ßb[¸J°¾Æ qN5KȾßb¸KܾÆ qN5LÆ qI6Lô¾ßb»P¿»xžºPX¿Æ qóºQd¿ßb‘¹Rx¿Æ qI6S”¿ßbÓ¹S¨¿Æ qI6TÄ¿ßbºTØ¿Æ qI6Uô¿ßbÞºU ÀF qN5WÆ qÝ7Z0Àßb»_<ÀÆ qš»_HÀ»x¾`¸Àßbƒ»aÐÀF qI6cøÀßbP¼g ÁÆ qÝ7h4Áßb˜¼hHÁÆ qÝ7idÁßbê¼ixÁÆ qÝ7j”Áßb ½j¨ÁÆ qÝ7kÐÁøNkÂ&žl$Â&žn0Â1]¿p@ÂM/žsLÂ_i¿u\Â}&žxhÂ&žzt &ž|€Â³&ž~ŒÂÉEž€œÂØEž‚¬Âç&ž„¸Âøs¢†ÄÂu¿‡ÌÂ{¿‡ÔÂ5{¿‡ÜÂSs¢‡èÂ_ôÂr¿ŠÃŠÞŒÃ¦ðŒÃÉ›¿ÃÚ¤¿$Ãí­¿,Ãÿ¶¿4à ¿¿<Ã# È¿DÃ5 Ñ¿LÃH Ú¿TÃY ã¿\Ãl ì¿dà õ¿lÃ’ þ¿tæ À|ø À„ÃÌ ÀŒÃà ,ÀdÄñ ,ÀhÅ ,À‘lÆ X“tÆ6 X“|ÆS 餓ŒÆe 餔œÆq È¥• Æ‚ (³–¤Æ• -³—¨Æ¨ 'F˜¬Æ¹ ³™°ÆÊ ³š´ÆÛ #³›¸Æý  ÿœèÆ PÀÇ WÀ XÇ _À£Ç gÀ¦äÇ& tÀ©\È1 À­€ÈB tÀ°øÈO À´És ŸÀ·ðɇ fk¸äÊ’ ßÀ¹ÈË äÀºÌ© éÀ»ÐÍÀ éÀ½ÏÓ  $¿Ïæ  $¿ Ïø  $¿(Ï  $¿0Ï Ï¡¿DÏ" Ï¡ÁPÏ. ìÁà Ð; ìÁÆHÑN Å¡É\Ñ^ ìÁË,Òi ìÁÎTÓ| Å¡ÑhÓ“ ìÁÓ8ÔŸ ìÁÖ`Õ² Å¡ÙtÕ ìÁÛDÖÎ ìÁÞl×á Å¡á€×ßb»ãŒ×á„Óñã˜×á¿Ã‹ñä¤×ßb2 æ¸×á„ÓñçÌ×á¿Ã‹ñèØ×ßb»êä×áVø(Ãêô×ßb»ìØáVø.Ãì Øßb»îØáVø4Ãî(Øßb»ð4ØáVø:ÃðDØßb»òPØáVø°¯ò`Øßb»ôlØáVø@Ãô|Øßb»öˆØáVøFÃö˜Øßb»ø¤ØáVøLÃø´Øßb»úÀØáVøRÃúÐØßb»üÜØáVøXÃüìØßb»þøØáVø^ÃþÙßb»ÙáVødÃ$Ùßb»0ÙáVøjÃ@Ùßb»LÙáVøpÃ\Ùßb»hÙáVø€ÃtÙßb»€Ù±r=ˆÚfœÃÚ œÃ˜Úßb»¤ÚáVø®4°Úßb» ¼ÚáVø®4 ÈÚßb» ÔÚ±r= ´Û3ª³Ã ¼Ûßb» ÈÛ±r= ÌÜ3ª³Ã ÔÜßb» àܱr= ØÝ3ªAÄ àÝßb» èÝF qZÄ øÝßb»ÞF qdÄÞßb»ÞF qjÄÞßb»c(ÞF qpÄhÞßb„lxÞF q$>ŒÞßbÄœÞF q‹ÄÀÞßb»ÌÞ±r=ìßE Åôßßbg4àF q*4àßbên(àF q{·Làßb»c\àF qÆ4œàßbg4 ¬àF q*4!Ààßbên"ÐàF q{·#ôàßb»$üàF q[±$áßb»& áF qï°&áßb»(áF q°¯($áßb»*,áF qá¯*4áßb»,<áF qƒ°,Dáßb».LáF q‘±.Táßb»0\áF q%±0dáßb»2láF qM°2táßb»4|áF q°4„áßb»6ŒáF q¹°6”áßb»8œáF q´8¤áßb»:¬áF q-´:´áßb»<¼áF qqÅ<Èáßb»>Ôá±r=>ãE Å>$ãßbg4>4ãF q*4?Hãßbên@XãF q{·A|ãßb»cBŒãF qÆ4CÌãßbg4EÜãF q*4FðãßbênGäF q{·H$äßb»I,äF q[±I4äßb»K<äF qï°KDäßb»MLäF q°¯MTäßb»O\äF qá¯Odäßb»QläF qƒ°Qtäßb»S|äF q‘±S„äßb»UŒäF q%±U”äßb»WœäF qÏÅW¤äßb»Y¬äF qM°Y´äßb»[¼äF q°[Ääßb»]ÌäF q¹°]Ôäßb»_ÜäF q´_ääßb»aìäF q-´aôäßb»cüäF qqÅcåßb»eå±r=e4æE Åe<æßbg4eLæF q*4f`æßbêngpæF q{·h”æßb»ci¤æF qÆ4jäæßbg4lôæF q*4mçßbênnçF q{·o<çßb»pDçF q[±pLçßb»rTçF qï°r\çßb»tdçF q°¯tlçßb»vtçF qá¯v|çßb»x„çF qƒ°xŒçßb»z”çF q‘±zœçßb»|¤çF q%±|¬çßb»~´çF qM°~¼çßb»€ÄçF q°€Ìçßb»‚ÔçF q¹°‚Üçßb»„äçF q´„ìçßb»†ôçF q-´†üçßb»ˆèF qqňèßb»Šè±r=Š<éE ÅŠDéßbg4ŠTéF q*4‹héßbênŒxéF q{·œéßb»cެéF qÆ4ìéßbg4‘üéF q*4’êßbên“ êF q{·”Dêßb»•LêF q[±•Têßb»—\êF qï°—dêßb»™lêF q°¯™têßb»›|êF qᯛ„êßb»ŒêF qƒ°”êßb»ŸœêF q‘±Ÿ¤êßb»¡¬êF q%±¡´êßb»£¼êF qM°£Äêßb»¥ÌêF q°¥Ôêßb»§ÜêF q¹°§äêßb»©ìêF q´©ôêßb»«üêF q-´«ëßb»­ ëF qqÅ­ë× &ž¯,ëñ s¢±<ëÁ²xëdz€ë.6dzXìPKǸ4íj‚ǽ¬ðyÇÀñ•§ÇÇxñçÇÑòãáÇÛtò÷óÇßóÈè@ó,AÈîTõRNÈñ´õxdÈô$ö“lÈö,ö¢lÈö4ö¸i¿öLöß/žùdöú&žû´ö&žý÷/&žÿT÷N&ž¤÷j{Èô÷ƒƒÈDø‹Èlø«’È ÀøÆ›È èøÏ¢È<ùê«ÈŒù³ÈÜùÉ<>BÉ8QaÉ!˜^sÉ) lsÉ4œz É?芬ÉCx˜ÁÉM¼¥ûÉT`½ ÊX¸Õ{¿\Àì{¿\È&ž\ä&ž^ 9]¿` ^{ c sÊc( ‹!Êc0 ¡/Êc€ µ8ÊeÌ Ê>Êf!àDÊgd!öJÊhô! sÊj "s¢l¼"3ï£mØ"O¿oì"pƒÊq #ŸÊsl#ŽÍÊuÐ# ËwP$¬-Ëy$½VË|ô$·Ëx%ßÀË‚&ðòË…d&̈Ì&QÌ‹X'&ŽÌŽ(ßb‘(ƒD]’((ÆP¬’8(ÁÃѬ”H(ßb»–T(áYÊ–d(á…ü˜€(ßb»™Œ(áYÊ™œ(á…ü›¸(ßb2 œÌ(ƒÃ´Ìð(ÁYÊ)Á…üŸ0)ßb» <)ÁYÊ P)Á…ü¢d)ßb»£p)ÁYÊ£„)Á…ü¥˜){ ¦œ)¬{ ¦ )Ô{ ¦¤)û{ ¦¨){ ¦¬)dÁ¦Ô)qÁ§à){Ą̂*‹ÂÌ© *ðv<Ÿª4*˜=«P*¡=«l*°½¡«”*ºÈ̬¤*õpÓ̱°*Ø€ $³¸*áÝ_³Ä*êç_µÐ*óØ’¸Ü*þð’»è* êÌ¿h+*ÍÄ´+<ÙQÊÀ+GôQÎÐ+R0ÍÓ„,jLÍÚô,xQâ-ƒ¤Qç-Ž‚Íí.¦¢Íö .ßb»¬.±r=€/Ä{ ˆ/ÑÝÍ”/ØÝÍ /æÝͬ/éÝ͸/övÎÈ/£ Ø/—ŒÙ à/¸ŒÙ è/ӌ٠ð/ðŒÙ ø/ ŒÙ 0+>Ê Œ0ÆÊÐ à1ÚŸÑ3ø˜ÒX4 –ÔÀ5©Õ 75KÖt8KfÖ!Ô9^’Ö%,;q$Ù(Ð<‡{Ú+H>FÛ/Ð?µcÛ2HAÈ“Û6¸BÛÀÛ9üB±r==´Dßb;4=ÄDF q*4>ØDßbg4?èDƒ q*4@üDßb;4A EF q*4B Eßbg4C0Eƒ q*4DDEßbŠ9ETEF q±‘FdEßb;4GtEF q*4HˆEßbÕ9I˜EF qÆ4J°Eßb:LÀEF qN5MØEßbn:PèEF qI6QFßbÎ:U FF qÝ7VHF (Ý[PF(ŒÙ[XF4(ŒÙ[`FJ(ŒÙ[hF_(ŒÙ[pF|(ŒÙ[xF’(ŒÙ[€F¬(ŒÙ[ˆFÆ(ŒÙ[Få(ŒÙ[˜Fý(ŒÙ[ F)ŒÙ[¨F2)ŒÙ[°FH)ŒÙ[¸Fc)ŒÙ[ÀF‚)ŒÙ[ÈF™)ŒÙ[ÐF²)ŒÙ[ØFÉ)ŒÙ[àFÛ)ŒÙ[èFê)ŒÙ[ðF*ŒÙ[øF*ŒÙ[G5*ŒÙ[GH*ŒÙ[G^*ŒÙ[Gr*ŒÙ[ GŠ*ŒÙ[(G¥*ŒÙ[0GÈ*ŒÙ[8Gñ*ŒÙ[@G+ŒÙ[HG0+ŒÙ[PGD+ŒÙ[XG^+ŒÙ[`Gy+ŒÙ[hG‘+ŒÙ[pG§+ŒÙ[xG»+ŒÙ[€GÓ+ŒÙ[ˆGè+ŒÙ[Gÿ+ŒÙ[˜G,ŒÙ[ G-,ŒÙ[¨G=,ŒÙ[°GR,ŒÙ[¸Gg,ŒÙ[ÀG{,ŒÙ[ÈGŽ,ŒÙ[ÐGœ,ŒÙ[ØG°,ŒÙ[àGÅ,ŒÙ[èGÚ,ŒÙ[ðGð,ŒÙ[øG-ŒÙ[H-ŒÙ[H0-ŒÙ[HG-ŒÙ[H\-ŒÙ[ Hn-ŒÙ[(H‡-ŒÙ[0Hž-ŒÙ[8H´-ŒÙ[@HÇ-ŒÙ[HHâ-ŒÙ[PHö-ŒÙ[XH .ŒÙ[`H$.ŒÙ[hH:.ŒÙ[pH[.ŒÙ[xH€.ŒÙ[€H£.ŒÙ[ˆHÃ.ŒÙ[Hã.ŒÙ[˜H/ŒÙ[ H'/ŒÙ[¨H?/ŒÙ[°H[/ŒÙ[¸Hs/ŒÙ[ÀH“/ŒÙ[ÈH·/ŒÙ[ÐH×/ŒÙ[ØHô/ŒÙ[àH 0ŒÙ[èH#0ŒÙ[ðH90ŒÙ[øHO0ŒÙ[Ie0ŒÙ[Iz0ŒÙ[I–0ŒÙ[Iª0ŒÙ[ IÃ0ŒÙ[(IØ0ŒÙ[0Iø0ŒÙ[8I1ŒÙ[@I!1ŒÙ[HI;1ŒÙ[PIY1ŒÙ[XIv1ŒÙ[`I1ŒÙ[hI­1ŒÙ[pIÄ1ŒÙ[xIÖ1ŒÙ[€Ië1ŒÙ[ˆI 2ŒÙ[I62ŒÙ[˜IN2ŒÙ[ Ie2ŒÙ[¨I…2ŒÙ[°I‘2ŒÙ[¸Iª2ŒÙ[ÀIÀ2ŒÙ[ÈIÓ2ŒÙ[ÐIî2ŒÙ[ØI3ŒÙ[àI3ŒÙ[èI63ŒÙ[ðIT3ŒÙ[øIo3ŒÙ[J3ŒÙ[J¬3ŒÙ[JÀ3ŒÙ[JÔ3ŒÙ[ Jì3ŒÙ[(J4ŒÙ[0J4ŒÙ[8J:4ŒÙ[@JZ4ŒÙ[HJr4ŒÙ[PJ‰4ŒÙ[XJ 4ŒÙ[`J¸4ŒÙ[hJÐ4ŒÙ[pJè4ŒÙ[xJ5ŒÙ[€J5ŒÙ[ˆJJ5ŒÙ[Ju5ŒÙ[˜JŸ5ŒÙ[ J¯5ŒÙ[¨Jã5ŒÙ[°Jý5ŒÙ[¸J6ŒÙ[ÀJ=6ŒÙ[ÈJV6ŒÙ[ÐJõp˜[èJs6z<\K~6 Ý^ K‰6Ýaf[f›f•ffìfÞfgìfìfgYgyg‘g¬gHhÝhÝhÝhÝhÝhÝhÝhÿe‘g jÝhÝh‘g jrjHh’jHh3k3k=e=e=epkpk=epk=e=e3k3k=e=e3k3k3k=e=e=epkpk=epk=e=e3k3k3k=e=e=e_l3k3k3k3k=e=e=epkpk=epk=e=e3k3k3k3k=e=e=e=e_l3k3k3k3k3k=e=e=epkpk=epk=e=e3k3k3k3k3k=e=e=e=e=e_l3k3k3k3k3k3k=e=e=epkpk=epk=e=e3k3k3k3k3k3k=e=e=e=e=e=e_l3k3k3k3k3k3k3k=e=e=epkpk=epk=e=e3k3k3k3k3k3k3k=e=e=e=e=e=e=e+p1p7p}p‚ppk=epk=e=eq0qq0qqq_qdqq_qdqkqq_qdqkqrqq_qdqkqrqyqžq0qqqqqÿe´q=e=e=epkpk=epkÝh=e=eÿeÿe=e=e=epkpk=epk=e=e™ržr™ržr=e=e=epkpk=epk=e=eMstt,t:tÿe“tªt¼tÿeótu#u#uIuPuWu^uWu^uouxuŠuŠuwwEwKwEwKw\wbwhwEwKwEwKw\wbwhw=e=ex x‚p‚ptxwxšxÿešxªtªtªtªtªtÆxÖxÙxªtÆxªtªtªtªtšxšxšxt[y¼t¼tÝhWzÝhWzWzÃzWz¼t¼t¼tã{ç{=eÝhšxÿeEwKw\wbw3kEwKw\wbw3k=e=ex x‚p‚pÿeÿeÿe¼tªtÜxªtªtªtªtªtA}F}A}F}.tïxj}j}.tïx.tïx¼}¼}¼}¼}[y¼twxwxã{[y¼t¼t¼tã{ç{Ýh~~a~=e~~™~~™~~~"9Wt™~™~±™~±™~Òtâ™~ €}p €™~}pt™~t™~t™~Wô€ 9**Ms99Ms99´^u™~´™~´™~ÿe™~™~™~´™~:t™~^uuš‚^uš‚.tïxš‚.tïx¢‚š‚.tïx¢‚¤‚š‚.tïx¢‚¤‚¦‚š‚.tïx¢‚¤‚¦‚ªtIuPuouxuŠuWu^u/ƒÿe3ƒ9ƒåƒÝh,tøƒ,t,t,t¼t+„¼t+„¼t+„¼t+„,t^„Üx=e¼t¼t¼tWzÜx°„³„°„³„¼t+„¼t+„¼t+„¼t+„䄼t+„¼t+„¼t+„¼t¼t+„¼t+„¼t+„¼t¼t¼tž…¼t¼t¼t¼t=e3k3kpk=epk=e=e3k3k=e=e=eEwKw\wEwKw\wbwhw£†EwKw\wEwKw\wEwKw\wbwhw£†EwKw\w=e=e=eöˆ ‰‰™~,‰7‰B‰N‰ X‰ g‰ÿeÿeHh~ú‰Hh~=e=e_lEwKw3kEwKwEwKwpk=epk=e=eEwKw3kEwKwEwKw=e=e=e=e_l3k3k3k3kEwKw3k3k3k3k3k3k3k3k3k3k3k3k3k3k3kEwKw3kpk=epk=e=e3k3k3k3kEwKw3k3k3k3k3k3k3k3k3k3k3k3k3k3k3kEwKw3k=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e=e””=e7”<”L”o”o”ÿe”š””°”¿”°”=e¿”°”Ñ”o”ã”é”ò”••"•*•8•=e8•8•ÿe=e8•ÿeR•*•`•l•*••*•”•°”±•wxtwxÜ•wxô•–*•´°”=e%–.–%–.–=e%–ÿe.–%–ÿe.–L–]–È*•k–u–€–‰–*•ž–*MsÑ”o”Ñ”´ÿeÿe±•Ï–Ï–ÿeã”*•—Ñ”—.—:—F—i—r—{—Hh””î—Ñ”˜0˜=˜E˜S˜E˜S˜Ñ”žq¾˜Ę=˜ʘјʘј˜žq¾˜ʘј§™Ιžq¾˜˜ʘј3k-šKšÿeE›žqo›NœªtªtªtE›o›Ę¿œÅœËœ¥š63k3kaÿe}}Žr—Žã”}¥*•¶Ã}ž–}ЪtWu.tou}}qžyž}yž”ž}¸žÅžÛžyž}yž Ÿ8ŸCŸiŸCŸŠuŸ²ŸŸCŸÈŸÔŸÞŸ/ƒÈŸÔŸÞŸ_qdqÈŸÔŸÞŸ_qdqkqÈŸÔŸÞŸ} ÞŸ}}CŸj  }ž–ou¾˜Ýhªtªtªt,t*£ªtqžªtqžqžqžqžg£ÿe*•yžÝh#u#u‘g ¤qž ¤qž ¤qž ¤qžqžqž‚¤qž‚¤qž*•yžwx5¥L¥b¥j¥l¥„¥¥¥í¥¥í¥¥¥¥¥¥ÿeÿeÿeÿe¾¦¾¦í¦ÝhÝhó¦3k3k3kšø¦o›§¤‚¢‚šxšxÿešxÿešxšxÿešx3k3k3kšø¦'§Ñ”uo›<§Ñ”D§Ñ”D§Ñ”N§¾˜Ñ”ouÑ”ouєєg§o§}§Ñ”ÿeótÿe¦‚ªtuÿeótªt¨uªtuÿeótªt¨uªt¼tªt¼tªtu¾˜ÿeótªtÜx¨uu$¨ÿeót¨uu˜§-¨8¨ÿeótu˜§-¨8¨ÿeótC¨F¨I¨L¨uªtÝhªtÝh'§O¨D§O¨D§O¨<§O¨N§¾˜O¨ouO¨O¨[¨b¨}§O¨ªtu¨¼tªtu¨¼tªtx¨|¨¼tªtu¨¼tªt¾˜u¨*£u¨$¨€¨u¨¼tu¨¼tªtx¨|¨¼t¢‚o›.tªtŸ¨¢¨¥¨yž¢‚ªtw¢‚¦‚¢‚Ũɨɨ§Ÿ¨¢¨¢‚o›Ÿ¨¢¨l¥o›¢‚Ψ§ר© ©(©o›\©q©\©Š©\©(©Ψ\©(©l¥\©l¥©²©©²©ouWu¦‚ou©¥š¿œÅœß©#uWu¦‚©¥š¿œÅœß©#ul¥©²©©²©ouWu¦‚ou© ©q©©RªXª§Xªo›©Xªl¥wª~ª…ªtwªtwª~ª…ªt8ŸCŸ¼tou¼touwªq©wªŠ©tç{l¥ç{o›wªt~ªç{l¥~ªl¥wªtl¥wªq©wªŠ©ªtÿeót}ou¾˜iŸiŸ«Ýh«Ýh«ÝhĘ}qžĘ}Ę.t¥š¿œÅœŸwŸ:tŸ:tΨ¦‚o›¥š¼t¿œ¼tÅœ¼tNœNœËœªt^uªtªt¼tΨ¼tΨ¼twΨ¼t^uΨo›ΨNœo›o›Ψo›o›Ψo›^u¼tΨ^u.¬Ëœ¼t6¼tΨ.¬6Ëœ¼t6¼tΨ.¬6Ëœ¼tªt^uªt^uªt^uww©wΨ©wΨw¬¬qžw¥š¼t^uwwyž¥š¿œÅœh­yž¥š¿œÅœh­^uªtªtw¼t³­ªtªt¼tÈ­h­á­h­È­h­Ãzªt+®.®¦‚.®³­D®3k3k3k3k3k3k=e=e=e=eyž¥š¿œÅœh­ËœΨyž¥š¿œÅœh­ËœΨªt^uw^u¼t¥šΨ¼to›ªt^u.t³­^uΨ³­ªt^u¿œ.¬Ψ^uwΨªt¼t^u¿œ.¬Ψ^uïxΨÈ­^uËœïx¿œ.¬Ψ^u:tΨÈ­^uËœ:t^uo®Ψ^uo®ΨÈ­^uËœo®È­h­^uá­^u:tá­h­^u6:tΨ6:tΨÈ­6:tÈ­h­רo›ÃzΨ+®.®ΨtxΨ.®txΨ.®txD®Ψ¯Ψ©¾˜žq¯Ψ˜¯ç{©˜¯Ψ©žq6V¯n¯B¬9¬¥š6^u¯–¯Ëœž¯t²ŸΨ6^ut¯–¯²ŸËœç{ wt¯²Ÿ:tΨ6^ut¯–¯²ŸËœ:tÞŸŸð¯õ¯} ÞŸŸð¯°§©o›6Ψ¼t*£Ψ¼tªt>°K°¼tªtΨ¼tqžΨ¼tqžΨl¥©=e}pΨt}ptªt©¾˜©¾˜©=e¥š¼tΨ¥š¼tΨ¥š¼tΨ6V¯n¯B¬9¬¥š¼tªto›°¼t°¼th­§6o®Ψ6:tΨ^u–¯Ψ^u6t¯–¯²ŸËœç{w^u6t¯–¯²ŸËœ:t^u6t¯–¯²ŸËœo®^u6t¯–¯²ŸËœç{h­t^ut^u¼t:to›Ÿ°Ψ6ª°Ÿ°9¬=eg¢Ψ6ª°g¢9¬0˜¾˜¶°õ¯8ŸΨ6l¥6̰9¬=eg¢ð°Ψ6̰9¬0˜g¢¾˜ø°8ŸCŸ1±iŸCŸl¥Šu7±o›Ÿl¥Ÿl¥ר²ŸŸ§²ŸŸCŸl¥²ŸŸCŸl¥Ÿl¥ŸΨÞŸŸð¯=e0˜ΨÔŸÞŸŸð¯0˜=±ÈŸÔŸÞŸRªÈŸÔŸÞŸl¥_qÈŸq©_qdqÈŸq©_qdqkqÈŸq©}q©iŸiŸŸΨ ÞŸŸð¯°=e ÞŸĘŸð¯°l¥0˜Ψ Ÿð¯0˜°@± Ÿð¯0˜°l¥=el¥ ÞŸo› ÞŸl¥o›J±=eŸJ±Q±wŸJ±Q±U±ŸJ±Q±U±}CŸŸo›}CŸl¥§j l¥žq9¬0˜Rª#u=eKš#ul¥Kš9¬0˜žqרžql¥©o›žqΨ§¼tªt>°K°o›¼tªt>°K°l¥Rª¼tªtר¼tªtl¥Y±¼tªtqžõ¯¼tªtqžl¥_±¼tªtqžl¥¼tqž1±¼tqžl¥¼tqžl¥¼tqž7±¼tqžl¥¼tqžl¥¼t§o›¼tl¥¼tl¥Ÿe±Ÿe±Ÿõ¯qžŸRªqžŸl¥רŸl¥Y±k±l¥Ÿe± © © ©Ms ©Ms ©Msÿe © ©ÿet²°”2²í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦h­,t2²k³¦‚í¦í¦í¦í¦´—y´y´k³¦‚k³À´Ç´Ì´ä´Æx™µ­µ.t.tïxo›o›o›o›í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦o›í¦í¦í¦í¦í¦í¦í¦í¦í¦í¦o›o›í¦,t¦‚í¦í¦Œ¸¸Œ¸ª¸´Msªt¦‚+¹t+¹+¹¼t+¹¼t+„+¹¼t+„ÜxS¹`¹Hhm¹S¹`¹Hhm¹¥¹^uŒ¸Ò¹=eªtÝhÝh¦‚Ýh.tÝhŒ¸4º*•BºEºHºKºNº_ºcºyººŒ¸^u^uŒ¸,t¼tŒ¸^u´^u´2²¦‚꺪tŒ¸^u=e»»»ÿe=e»ÿe]»^u»^u=e»^u»^uÿe=e»^uÿe=eë»^uë»^uÝh¼¼*•ã”*•Œ¸¦‚Ýh¦‚ïxªt^ua¼*•™¼œ¼ª¼Œ¸ǼǼô¼ü¼ÿ¼½ ½ô¼ü¼ÿ¼½ ½Œ¸ü¼Œ¸ü¼Ǽ‘½‘½ç{Ǽ¦½¯½·½‘½ǼÓ½‘½Ǽ·½Ǽ·½‘½ ¾¾,t™µ#¾*¾o›‘½»^u,th¾‚¾‰¾¨¾¨¾¨¾ʾ;¨¾¨¾o›o›;Ýh"¨¾¨¾¨¾¨¾¨¾¨¾¨¾¨¾¨¾¨¾¨¾î¿Àto›>ÀÆxo›‘½>À`Ào›øƒÉÀÏÀF—ÉÀšxÜÀΨ—‘½—À"…ÁF—2²F—Š£šÁ,t,tí¦¸ë»ª¸ÙÁh­.tßÁ.të».të».tŒ¸.th­ ½q©q©øƒêºª¼ç{ü¼âÁª¼Œ¸ëÁÿ¼½ ½ñÁâÁñÁŒ¸‘½ùÁ‚¾.t^uǼýÁ,th¾;ªt¼t;¨¾ªt¨¾.tïx;¨¾ʾ; Â",t¨¾ªt¨¾;¦‚.tïx^u;¼t;.tïx;.tùÁ;.t;¨¾;IÂ.tOÂ;.t;UÂdÂsÂ;ç{;UÂd‘½UÂd‘½UÂd‘½¨¾ªt¨¾‘g‚‡Â”›¢¦ª®²‘½¶Â½ÂÄÂ˼t‘½ÒÂÖ‘½ÚÂáÂèÂïÂ.tïx¢‚¤‚‘½ÒÂÖ‘½öÂýÂà ÃÃütõ¯¼tY±¼t_±¼t1±¼t7±¼t üt'üt.üt5üt<ütCütJütQÃXÃ.tïx¢‚¤‚‘½.tïx‘½o›¼t‘½§¼t‘½¼t‘½¼t‘½¼t‘½¼t‘½ר¼tRª¨¾¨¾¨¾À_ÃaÃÀaÃtmÃ>ÀÆxtѽ,tùÁ+p}p‚p>À`À/ƒ`À{Ã~ÃÝh=e¼t+„EwKwEwKwpk=epk—=e=e3k3k=e¼t+„q©ÉÀÏÀÉÀÏÀq©ÉÀq©¨¾¨¾¨¾sĨ¾ªtÆx¨¾À_ÃaÃÄ’ÄÀ¨¾ªt¨¾KÅMŦ‚KÅcÅKŦ‚MÅKÅcőŔÅ*•‘Å*•”Å~Œ¸‘ÅÝhÆx‘ÅÆxÝh~HhΨpk©l¥©[ypkl¥pk©l¥©[ypkl¥<”¦‚<”=˜o›<”´<”ë»<”Ç<”»<”»,t©=el¥©=el¥<”¦‚WÇZÇÝho›,t¦‚‘gq©q©uÇ¥uÇ¥ªt¦Ç­Ç¸ÇuÇÛÇ¥uÇí¥¥¥¥ÛÇ¥í¥¥í¥¥¥¥¥¥ÈøƒÈ¢‚ªtÈΨªtΨΨªt¦Ç­ÇΨÈ¢‚È¢‚¼t‘go›o›Èo›­Ç}p’Á‹È‘ȭǾÈÌȭNjȚÁ­Ç‹ÈšÁ­ÇûȋȚÁ­Ç¾È‹È}p,t­Ç¾È‹È}p,th¾ÒŒ¸‡ÉŒ¸ªt¼tŒ¸Ò^uŒ¸ç{Ê^uŒ¸ç{Ê¢‚}p¸Çç{¸ÇšÁç{¸ÇšÁç{¸ÇšÁç{¸ÇšÁç{¸ÇšÁç{­Ç}p‹ÈøƒâʸÇÊç{¾È^uŒ¸¸ÇÊËç{¾È^uŒ¸¸Çç{^uŒ¸Ê,t,t­Ç}pç{¾È‹ÈË,t^u l¥­Ç¸Ç}pç{‹È,t^ul¥­Ç}pç{‹ÈË”Ë^ul¥£Ë­ÇȸÇç{^u¸ÇšÁ­Ç£ËÈÁË^uç{Ò˸ǚÁ^uÒ˸ǚÁ^uŒ¸ç{Ò˸ÇÿeÿeÿeûÈñËÌÒ ½cÅ^uç{Ê̕̚Ì^uç{ÊŸÌÌ•Ì^uç{ʤ̕ÌÊç{^u ½,tÊç{^u ½,tÊç{^u ½,tÊç{^u ½,tÊç{^u ½,tÊç{^u ½,tÊç{^u ½,tÊ^uç{ ½,tÊ^uç{ ½,tÊ^uç{ ½,tÊ^uç{ ½,tÊç{^u ½”ËÊç{^u ½,tÊç{^u ½,tÊç{^u ½”˸ÇÊç{¾È^u ½,t¸Ç^uÊËç{¾È ½,tÒËøƒÒ˸ǚÁ^uŒ¸ç{~ªt(Í.Íç{=Ío›o›o›dÍmÍtÍ~Í’ÁdÍÍ~Í’ÁmÍdÍÍmͰÍç{ž…°Í§,tËÍÍÐÍÔÍ’ÁmÍËÍÍmÍìÍo›,tüÍÍìÍÜx’ÁmÍüÍÍìÍmÍΙ~¼tZÎZÎ{Ιµ™µ®Î¢‚øƒç{øƒç{Æxøƒš,tšðΙ~ËÍrjšùÎϼtðΙ~ËÍrjšùÎϼtðΙ~ËÍrjš9ÏùÎÏ }p ¼tðΙ~ËÍrjšùÎÎðΙ~ËÍrjšïxjÏã{~Ïτχϼt ÏùΥϚ ÏùΙ~ðΙ~ËÍrjšÐùÎÏ Ð ¼tðΙ~ËͼtËÍ=eËÍtËÍkÐtÐmÍ’ÐÿeÿeЙ~ÿeEwKw\wEwKw\wq©q©_lpk=epk=e=ešo›¼t°ÑΨðΙ~ËÍrjšùÎϼt‚‡µѺѠϊ©‚‡µѺѠϊ©°¼tðΙ~ËÍrjšùÎϼtðΙ~ËÍrjšïxjÏã{,t„ÏùÎã{~Ïτχϼt+„ËÍšùΠÏã{~ÏÏ„Ï ‡Ï¼t~τϼt‚‡µѺѠϊ©‚‡µѺѠϊ© ÏùÎ¥ÏÝhÀÑΨŒ¸ÀÑΨ¼t+„ðΙ~ËÍrjš=eèÑh­‚‡µѺѠϊ©š ÏùÎq©™~™µ¢‚ËÍ=eËÍ=eËÍ=e~‡É!Ò~_l3kEwKw3k3k3k3kEwKw3k3k3k=e=e=e=e=e_l3k3k3kEwKwEwKw3k3k3k3kEwKwEwKw3k=e=e=e=e=e=e™~=e%Õl¥™~=e™~¼t°ÑÝh°ÑÝho›o›tÃz†Õÿež…ž…ž…ž…mÍ¿ÕÇÕž…ÿÕmͪttÃz¿ÕÇÕ¿ÕÇÕ¿ÕÇÕ¿ÕÇÕ¿ÕÇÕ¿ÕÇÕ¿ÕÇÕvÖ}Ö§vÖo›™Ö™Ö™Ö¿Õ™Öç ™Ö™ÖâÖÿeâÖÿemÍmÍ××!×,tÜx××!×Üx:×âÖL×¾˜ttÃztÃztÃztÃztÃztÃztÃz}Ö}Ö}Ö¼t}ÖS×+„o›ר§o›À×ΨÿeÿeÿeøƒΨøƒž…ž…¼t,t¼t,t,t.tïx.tïx‹Úç{,t¼t¼t,t¤‚,t¤‚,tç{,t¢‚h­KÅÃzh­KÅç{,t¢‚h­KÅÃzh­KÅh­h­h­Û"Ûç{h­KÅ7Û:ÛÛ"Ûç{h­7ÛKÅ:ÛÛ"Ûç{h­KÅh­KÅh­KÅh­KÅh­KÅ.tïx.tïx.tç{¢‚Wzh­h­KÅÃz¢‚Wzh­KÅh­KÅh­KÅóÛWzøÛýÛÜç{Ü¥ÏWz¥Ï_Ã,t±ÜµÜ±Ü,tÄÜÉÜç{µÜ±Ü,t±ÜÄܱÜÄÜøÜÃzç{ÿܤ‚±ÜÄÜ_ÃÝhDÝh­Kżt+„h­Kżtªt.t,t¼tªt.t,t¼t.t,tUÂdÂl¥¼t.t,tïx.tl¥ïx.tïx.tïx.t.tïx.tïxÆx¼t,t¼t,tÆx¼t,t¼t,t,tnÞÆxWzç{,t,t,t,t,t©Þ®ÞWz´ÞÇÞ9ƒ,to›,tåÞšÁéÞÆxç{åÞ,t,t.tïx,tóÛ-ßWzøÛýÛ7ß=ß¼t+„·ßmüt,tnàuà,t¨_Ãw…ª,t¨‘à‘àÊàç{øÛWz_ÃÝh¼t,t¼t,t¼t#u#uo›·½‡â¦‚Šâ¼t#u#uuuWu^u¦‚Šâ¼t#u#uu~‡É!Ò~ ~™~~¦½™~OÂO°Ñ~~ë»,tl¥~™~~~™~~™~~™~™~~~™~™~~~™~~~™~~~™~~™~~™~~~™~~~™~~~™~™~~h¾~kç~™~~™~kç=e~~~~kçMs~Ms~~~~™~~™~~™~~™~~™~~™~~~™~±™~×èt™~×è9™~.¬=eîèñèªt~ë»~q©~~é~³­D®~°Ñ°Ñ™~kç=e=e^e~™~=eé=e™~é^uh­™~é^ukç=ekçé=e'é.é^u³­D®°Ñkç=e™~é^u~=eo›ç{o›ÒcÅ}p=eÀéÄéÀéÿeÀéÿeÿeÀéA}F}j}A}F}j}žqÀéD§ÀéD§ÀéD§ÀéD§ÀéL×¾˜ÀéL×À龘'§ÀéÀéwxšÀéÀéÀéwxA}F}A}F}A}F}A}F}A}F}ÀéÀéøƒÆxêºtWzÃz™êWzœêxWzêºx™êWzœêx§êêºêºxWzêºxWz꺪t꺪tj¥¼tªt¼tj¥ªtj¥ªtj¥x.tïxx.tïxxªtøƒÆxxj¥Æxx™êœêxïxj¥ÆxxªtWz.ë3ëxªtøƒEëKëøƒ,tøƒøƒ,tøƒøƒøƒ(Íøƒç{ç{øƒxWÇZÇx<ì?ìj¥Æxøƒøƒã{ç{øƒxÆx¦‚x¢‚xtxïx¼txïx¼tx.t¼tÿeÿe(ÍÀ£øƒç{ã{ÿܼtxÆxWzBºHºΨªt¼tÜxªtxÆxWz<ì?ì<ì?ìäØšxÿeäØšxäØšxäØšxäØšxäØžqäØ<§äØ<§äØD§äØD§äØD§äØD§äØ'§äØL×¾˜äØL×䨾˜äØD§äØD§äØwxwxwxäØäØÜìªtq©ªtq©Æxj¥o›tWzÝhÃz™êWzÝhœêxWzÝhj¥xWzj¥xWzj¥xªtWzÝh.ë3ëxªtøƒEëKëxªtWzÝhÆxxªtøƒÆxj¥xWzj¥xWzj¥ªtj¥ªtj¥ªtj¥ªtj¥ªtj¥ªtj¥ªtj¥¼tªt¼tj¥xÖxÙxªtj¥¼txÖxÙxªtj¥¼tj¥Æxj¥j¥xtxÆx¦‚xã{x¢‚øƒã{ç{(Íøƒç{ç{øƒxÆxq©ã{ÿܼt+„ÿeÿe(ÍÀ£øƒç{o›BºHºΨÜìøƒl¥Üìøƒl¥j¥IíNíÜìšššš~í†íŽí–í~í†íŽí–튣~í†íŽí–í©íš¹íÀíÇíÎíš¹íÀíÇíÎíÿešššš¹íÀíÇíš¹íÀíÇíÿe~í†íŽí~í†íŽíŠ£~í†íŽí©ížqš'§šžqš'§ššt©íttÿešÑ”ïío”ûítîç{Æxîç{ÿÜ(îî9î'§šHîOîšš¯žqš'§šžqHîOî'§HîOî'§HîOîžqšžqHîOî'§šªtššÁç{D§šHîOîªt˜îç{D§HîOîªtššÁç{D§šHîOîªt˜îç{D§HîOîªtšç{<§šªtšç{<§š<§šD§šD§šªtšç{D§šªtšç{D§šHîOîHîOîþîšššL×¾˜šLך¾˜L×HîOL×¾˜HîOîªtš•7ïÆxªtš•7ïHïªtHïš•7ïL×¾˜šLך¾˜nïšnïšxš¡ïššxš¡ïšššÑ”ªtššÁ,tD§šªtššÁ,tD§šùïšš¡ïšš¡ïšš¡ïšš¡ïšš>ðtšMsšMsÿeo”ûítÿe¯¯Nð'§¯'§¯žq¯š¯¯¯¯TðZð¯Msªt™µÆx<§¯žq¯mð©í,t¼tÆxtŠ£ªtTðZðžqTðZðªt,tTðZðžqTðZðªtTðZðªðÆx'§TðZðªð,tªtTðZðÆx'§TðZð'§TðZðªtøƒ™µL×¾˜¯nﯪtøƒ™µÆxL×¾˜¯ªtÆxTðZðL×¾˜TðZðªtã{•7ïÆxLׯ¾˜nﯪtã{•7ïHïLׯ¾˜ªtTðZðÆxªtTðZðÆx.ñ4ñ:ñC¨ l¥L×TðZ𾘪tTðZðD§TðZðD§¯D§¯ªtTðZðD§TðZðD§¯D§¯<§¯<§¯D§¯D§¯¯¯TðZðTðZðªðx¯¡ï¯¯Ñ”¯ªt,to›D§¯ªt,to›D§¯¯¡ï¯¯¡ï¯¯¡ï¯¯¡ï¯'§¯ùï¯pñtñžqåÞžqåÞ'§åÞ'§åÞ'§åÞt©ítåÞªtåÞç{D§åÞªtåÞç{D§åÞåÞªtw¢‚ªtwç{¢‚ªtw¢‚ªtªt¼taa¾˜©ít©ížqÑ”MsÑ”žqÑ”D§Ñ”D§Ñ”žqg§o§ªttxªtèño§D§Ñ”D§Ñ”'§Ñ”'§Ñ”'§g§o§<§Ñ”g§o§g§o§òñÑ”<§Ñ”<§Ñ”D§Ñ”D§Ñ”tєєÿñÑ”L×¾˜Ñ”nïÑ”ªtg§o§'§Ñ”ªtBºHºΨxg§o§Ñ”єєєÿetєєL×¾˜Ñ”h­txç{D§Ñ”h­txç{D§Ñ”`òã{ç{ÿÜ`òєєƒòŠòç{Ñ”ƒòŠòç{ΨƒòŠòΨєє¡ïєє¡ïÑ”¡ïєє¡ïєє¡ïєє¡ïєє¡ïєє¡ïÑ”D§Ñ”tÑ”D§Ñ”D§g§o§D§g§o§Ñ”єєªtΨªt¼tΨªtΨtªtΨªttxΨªtèño§Ψªt¦‚ªt¦‚ªt¦‚ªtBºHºªt¦‚¼t+„¼tq©Ñ”ΨtÑ”¦‚.¬ó óùë.ͪtΨo§Ψg§o§ΨÑ”Ψ¼tΨ,tÑ”ç{tx óùë.ÍÑ”tx óÿÜ óùë.ͪtÜxÑ”ótx óùë.Í`òÑ”ã{Ãzç{¦‚ óùë.ÍÑ”ƒòŠòç{ƒòŠòΨÑ”ΨóóÝh+ó+óó1óΨÑ”óÝhšxó óùë.ÍóÑ”óÝhšxó óùë.ÍóÑ”ΨÑ”ΨóóÝh+óóÑ”Ψh­Ñ”¦‚5ó óùë.ÍtÑ”¦‚.¬ó óùë.Íh­Ñ”¦‚5ó<ó óùë.ͪtNóTó\óñƒìùëƒó¼tΨ¼tΨr—Ñ”ÿñÀ£ùóΨÀ£Ψã”єєž–:ôEôSôÿe=e¼t+„aô=e¼t+„ªtNóTó\óΨìùë¼t¼tž–§ôÿñªtr—Ψr—,õΨÿñΨ°ïxÀ£ùó°ïxÀ£ùóΨ,õΨÃzo›^uÀêŠâùÚÀêñƒ#u#uu°°°¦‚3k3k3k3k=e=e=e°¥š°¥š¥š°Ψ¼tΨ°¦‚°Ψ°öl¥¦‚Ms¦‚ªt¦‚ªt¦‚ªtBºHºÀ£ùóΨªt¦‚ªt¦‚À£Ψªt¦‚ªt¼tªtMsùëΨýöªtÃzΨÃzÀ£ùóΨÀ£Ψ\óùó¾˜ΨNóTó\óªt¦‚¦‚_lªt¦‚ªt¦‚ç{ªtBºHºªt¦‚À£ùóªt¦‚À£ªt¾˜ªtMsΨªt,øMsùëTó\óÀ£ùó¾˜ã{Ýhªt¦‚7ø.¬.Íxx¼t+„—øµø¼ø=e¼t+„—ø=e¼t+„=e¼t+„a„Åø=e¼t+„÷Ñ÷Ñ÷Ñ÷ÑL×¾˜÷ÑL×÷Ѿ˜D§÷ÑD§÷Ñžq÷Ñ'§÷ÑŽ÷Ñ÷Ñ÷Ñššššš¹íÀíš¹íÀíÿe~í†íäøêø~í†íäøêø~í†íŠ£äøêø~í†í©í~í†íÿe~í†í©ížqšžqš'§š'§šššÑ”ù ùo”-ù:ù~í†íªtšç{ÿܪtšç{ÿÜšç{ÿÜš„χÏç{ÿÜttªtùïã{¡ïšššó¦¡ïššªt¼tÞùªt¼t'§¼tÞùªt¼tç{ªt¼tÞùªt úú'§ úúD§ úD§ ú™µÆx™µÞù™µªt¯Þùªt¯ÞùªttD§tªt,t¼tžq¼tÞùC¨tt¦‚tÞùç{,tªttªtÞúäúh­tÞúh­täúh­tD§tDûKû¼t¼tDûKûnû¼t¼tÞù úú úúÞù úú§û úú§ûwç{ttã{Åû.t úúÅû.tïxÆxÅû¼t+„Åû¼t+„Üxîûòûl¥Åû¼t+„Üx.tÅûü=±Åû.t"üÿe¥ÿeÿe:t‘gótÿe¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„BºHºBºHºBºHº‘gý‘gý‘g**ÿeÿecýÿecý/ƒq_qdqq_qdqkqqq_qq_qdqq_qdqkqÖýÜýÜýÖý<ì?ì/ƒ þ,t¼t+„¼t+„¼t+„¼t+„¼t+„ÿeÿe%þÿe%þ¼t+„¼t+„¼t+„ÿeTðZðcýcý›þÿeÿeÿeÿeÿeÿeÿeÿeÛþÿeÿeÿeÿeÿeÿeÿeÿeÿeQÿžqr—žqŒÿ=e—ø=e¼t•úÿ•úÿÿeÿeÿeÿe+„¼tÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿe¼t+„¼t,tªt°¼tªt°¼t¼t+„¼t+„¼t+„¼t+„¼t,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥ùÚΨ•Ö,tj¥Ψ•Ö,tj¥Ψ•Ö܃ùÚ,tj¥Ψ܃ùÚ•ÖàƒùÚ,tj¥ΨàƒùÚ•Ö,tj¥Ψ•Ö¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t,t¼t܃,t¼t,t¼t܃DÝ,t܃DÝÿeaÑ”•úÿo”•úÿєє–¥¬o”–¥¬Ñ”Ñ”–¥¬ÔÛo”–¥¬ÔÛєє–¥¬ÔÛ o”–¥¬ÔÛ  єє•úÿü¼ü¼¼t¼t¼t¼t+„¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t¼t+„¼tÝh,tj¥,tj¥¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ¼t+„,tj¥¿Â,tj¥ùÚ,tË¿Â,tj¥¿Â,tj¥,tË¿Â,tj¥¿Â,tj¥܃ùÚ,tj¥Â܃ùÚ,tj¥ùÚ,tj¥¿ÂàƒùÚ,tj¥,tj¥Â,tj¥ë»¼t뻼t+„¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼t+„‚‡µѺѼt+„‚‡µѺѼtµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼tµÑºÑ¼t+„‚‡µѺѼt+„‚‡µѺѼt+„¼t+„ÿe¼t+„ÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÿeÝh¼t+„¼t+„¼tÞù™µÆx™µt,tøƒ_qdqêºqªtêº_êt_qdqkqêºqªtêº_ÃÝhªtªt_qdqkqrqq꺪tªtªtªtêº_ÃÝh¨_qdqkqrqyqêºqªtêº_ÃÝh¨¼tªtªtªtªt¼tBºHºBºHºpkBºHºBºHºpkBºHºBºHºBºHºBºHºBºHºBºHºBºHºBºHº=e=e—ø=ex=e—ø.¬l¥.¬l¥.¬l¥ÿeóªtªtªtªtªtªtªt¢‚øƒh­tøƒh­tøƒh­tøƒh­tøƒt,tÆxøƒh­tøƒt,tÆxøƒh­tøƒøƒøƒøƒ¼ l¥¼ l¥¼t+„¼t+„¼ 7 Ψ¼ 7 l¥¼t+„¼ 7 Ψ¼ 7 l¥¼t+„¼ 7 Ψ¼ 7 l¥¼t+„¼ 7 Ψ¼ 7 l¥¼t+„=e¼t+„—ø=e¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t,t¼t,t¼t,t.¬¼t,t‚‡µѺт‡µѺÑj¥¼t+„‚‡µѺѼt+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„‚‡µѺÑj¥¼t+„‚‡µѺѼt+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„‚‡µѺÑj¥¼t+„‚‡µѺѼt+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„‚‡µѺÑj¥¼t+„‚‡µѺѼt+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„í¦=epkF”ËKl¥pkF”˼tl¥pk”ËFpk¼t+„„‰ç{pk¼t+„¡§®µ¼ ç{ ÿÜpk¼t+„Ï¡§®µ ¼ ç{¼t+„ñWzpk¼t+„ñWzç{ –Ápk¼t+„ñWzpk¼t+„pk¼t+„¼t+„pk¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¼t+„¨¼t+„¨¼t+„¨¼t+„¨¼t+„¼t+„¼t+„¨:F”ËKl¥¨:”ËF¨:¼t+„„‰ç{¨:¼t+„¡§®µ ¼ ç{ ÿܨ:¼t+„Ï¡§® µ ¼ ç{¼t+„ñWz¨:¼t+„ñWz ç{ –Á¨:¼t+„ñWz¨:¼t+„¨:¼t+„¼t+„¼t+„pk¼t+„:¼t¼t¼t¼t:¼t:¼tí¦—øí¦pkí¦x*x*x*x*xýâ ãxýâ ãxýâ ãxýâ ãxýâ ãxýâ ãxýâ ãxýâ ã8¼t+„¼t+„¼t+„=e¼t+„=e¶¼t+„¼t¼t+„¼t¼t+„¼tєєєєr—¼tÆÊÑÖzÛÑ”MsÑ”Mso”MsÿeÑ”¹íÀío”¹íÀíÿe ˜î%8 ˜î%Ñ”¹íÀíÇío”¹íÀíÇíÿe `˜î%e8 `˜î%eÑ”¹íÀíÇíÎío”¹íÀíÇíÎíÿe `œ˜î%e ¡8 `œ˜î%e ¡ BºHºBºHºBºHºBºHº=e=eA©=el¥pk©=eðl¥©=epkl¥©=el¥pk©ðl¥pk©l¥©[ypkl¥©=el¥©=el¥pk©ðl¥pk©l¥©[ypkl¥©=el¥,tåtç{ªt꺪tí¦ªt꺪tí¦ªt꺪t꺪t.tïxªt.tïx¢‚ªt.tïx¢‚¤‚ªt.tïx¢‚¤‚¦‚HhHh_qHh_qdqHh_qdqkqµ6xµ6xxÀ6xEwEwKwEwKw\wEwKw\wbwEwKw\wbwhwEwKw\wbwhw£†EwKw\wbwhw£†Ì6EwKw\wbwhw£†Ì6Ò6C¨F¨C¨F¨ì6C¨F¨ì6ï6C¨F¨ì6ï6ò6C¨F¨ì6ï6ò6õ6C¨F¨ì6ï6ò6õ6ø6C¨F¨ì6ï6ò6õ6ø6û6Ew=eµ6x=eµ6xxxÀ6EwKw=eµ6x=eµ6xxxÀ6EwKw\w=eµ6x=eµ6xxxÀ6EwKw\wbw=eµ6x=eµ6xxxÀ6EwKw\wbwhw=eµ6x=eµ6xxxÀ6EwKw\wbwhw£†=eµ6x=eµ6xxxÀ6EwKw\wbwhw£†Ì6=eµ6x=eµ6xxxÀ6EwKw\wbwhw£†Ì6,õ=eµ6x=eµ6xxxÀ6 22ì2 2 2è88ì88 8è@@ì@"@ @èJ*JìJ.J JèV6VìV:V VèdBdìdFd dètìxNxìxRx xèyVyìyZy yè{^{ì{b{ {è{!{fƒjƒn…-…r…!…f†!†f†5 z~!‚–!–f–Š– ¢ £’£ì· ¸š¸ìžÂìó5ö5ø55I55f!Šz‚!~ª ²"²&²(¾)ª*ª+5,²fª‰5 5«v¬z¬ì®~ñâñì RnU5VFVnVjX5YJYNY²€-€5€r-5žÐúÑþÒ!ÒfÓ!ÓfØ!ØfÙ5Ù-ÙrÙ\Ý-Ý5Ýá5âFânâjíð5ð-ðrñõ-õ5õrö5ö-örù5ù-ùrý-ý5ýrþ-þ5þr-5r-5r5-r5-r-5r  ú ú úú&5&-&r-!->0!0J3!3V6!6b9!9n<!<z?!?†B!B’E!EžH!HªK!K¶N!NÂP!PfR!RfT!TÎà5à-àrõúöú÷FøJùNúRûVüZý^þbÿfjnrvz~`a‘b‘c‘d‘e‘~ì~è~ ~ðìè ð€ì€è€ €ðìè ð‚ì‚è‚ ‚ðƒìƒèƒ ƒð„ì„è„ „ð…ì…è… …ð)ßbè9ßbAßbIßbQßbØYßbØaßbØißbØqßbØyßbØßb؉ßbØ‘ßbØ™ßbØ¡ßbØ©ßb±ßbعßb»ÁßbÞ ßb»ceüÑßb»!ßb»Ùßbaé³g+ñßb»ùßb»ßbD ßb·L ßbâD 3k*L 3k9ce*e6e`ßb»ßbœd ^el ^e.t ßb·| ßbâ„ ßb·t 3k*| 3k9„ 3k4ceœ4*e46e×4ßb»” ^eõœ ^e¤ ^eL_l ¬ ßb·Lhkî´ ßbâ¼ ßb·Ä ßb¥ ¬ 3k*´ 3k9¼ 3kÄ 3k!Lce!L*eL6eú"Lßb2 Ô ^eÊ Ü ^eÙ ä ^eè ì ^e÷ d_l ô ßb·dhkîü ßbâ ßb· ßb¥  ßbv%dceª%ô 3k*ü 3k9 3k 3k! 3k5&d*ed6eJ'dßb2 $ ^eà%, ^eñ%4 ^e&< ^e&D ^e$&|_l L ßb·|hkîT ßbâ\ ßb·d ßb¥ l ßbv%t ßbi*|ce¦*|*e|6eâ*|ßb2 L 3k*T 3k9\ 3kd 3k!l 3k5&t 3ku,| ^eÂ,„ ^eü,Œ ^e6-” ^ep-œ ^eª-¤ ^eä-”_l ¬ ßb·”hkî´ ßbâ¼ ßb·Ä ßb¥ Ì ßbv%Ô ßbi*Ü ßb:/”cev/”*e”6eº/”ßb2 ¬ 3k*´ 3k9¼ 3kÄ 3k!Ì 3k5&Ô 3ku,Ü 3k©1ä ^eö1ì ^e62ô ^ev2ü ^e¶2 ^eö2 ^e63 ^ev39ßb»9ßbä3)*eî)6eý31Ðp49õp4 ßb;4$ ßbg4$ q*4, ßb~44 ßb;4< ßbg4< q*4D qÆ4L q*4T q*4\ qN5d qÆ4l q*4t q*4T Tq5| qI6„ qN5Œ q*4” qÆ4l Tq5œ q*4T TqÔ5¤ qÝ7¬ qI6´ q*4¼ qN5Œ Tq5Ä qÆ4l TqÔ5Ì q*4T Tq57Ô ßbŠ9Ü ßb;4ä ßbÕ9ì ßb:ô ßbn:ü ßbÎ:½q*ce9;*eÔq·6eh;QßbØ ßb· ÿe* ce!< *e f—)=rz< 6e¥<ßb»£r =žr =ßb*=™r*ceæce}=*e6e> Dr?)=r>aßbØißb»ims*>ßbW>AØsk>ÌØsb>qßbØ$t =$t $tè>,žr =4st*4~tW?4ßbb?yÙt˜?, q*49ßbØyßt˜?4f—6eÅ?¤ªu@¤µuZ¤Ñu@¤äu]<ßb>@¤¾ub>¤óu—¤Þu»¤v]‰ßb»iðv»Yøv]Yw»Yw+äw—Dw~@Dw&@Ô q*4LßbÆ@Tßbè@ìßb»LEw*LKw9TEw*TKw9T\w&ATbw&AThw \^e4Bd^eVBlÙw•Blæw&AlïwžBlßb¾Blþw©B‘ßbØ„†w—„wü|ßbÆ@™ßb»¡ßb»”»x5Dœßb¾B¤wü¤†w—¬ßbÆ@Øsb><w—|:y—|fü„ßbÆ@©Gy'FlKyî´žr =´™r*‰ßbؼßbiGÄßb‰GÔßbiG±ßbèGô–x·ü–xÆ@ôw»ôf|¯Eü y¯Eôo|Hôy¯Eüy¯Eüv|¦Gôÿxîô‚|]ü€k*4ü‘|vGüš|Gü¥|Æ@ÜÝh©Bäßb»ìßbòHôßb· ßb»ìEw*ìKw6Iì\w6Iìbw ô3k*ü^eJ^e+J }•B )}6I ïwã> ßbbJ þwQJßb¡JßbÆ@$wü$†w—,ßb}K4ßbbJ<ßb»Dßb» Kyî –x~J ßb±L–x·w»f|¯Eo|Hy¯Eÿxî‚|]LÝhQJTÿe*Ä q*4TrÏ;¹M~½M¹M~ÈM¹ªh? *eî\ÿe*É®~NÉæ~'Nßb»lßbžN„ q*4 é²MÑñÄNÔ q*4É€?)œ€@Otwüt†w—É£€]ɵ€²MÙØ€XO q*4Ü q*4ŒßbÆ@”[‚°Pán‚½PœßbØP¤uQ¤‚QTät·Ü[‚*É»‚ÜQéÅ‚åQÙÓ‚²MìßbÆ@ì†w—ìwüáå‚Rܨ‚¨QÉô‚Réÿ‚]áƒ+Rܰ‚³Qô q†Q ßbkR[‚¨R qå?$ßbÓR,wü,†w—éßb»)ÿrîñßbØ)Ž…iT4rÏ;4ÿe*1w‰4,ÿe<,ßbØ<ÿe* ,ŠÅ?)<ŠÁY¹KŠîÉ]ŠÇY KŠîÉhŠÍYù€?DßbØL q*4Tžr =T™r*¤ q*4\ÿe*d†w—dwül¸r =lÎr7=tßbØ|ßbØ\ q*4„ÿe*Œ†w—ŒwüT¸r =œÿe*¬ßb±L¼ßbmm 6e÷Äßb·ÄÔq·Ìßb~41—™èn)ßbØÔ¾t]Ôf—ܸr =Üžr =ìw»Ì q·ôwüô†w—üšã>ü™r üš üžr üš2 é(šño9ßb»rÏ; ßb· Ôq·Aßb~4Ißb~4Qßb~4YIœ¬pa^œÇpißbÔpi…œi–œÛp:zq@†qßbâq3kÉq$ªtbsŒ q*4,ßbs4VõqĽq*<ßb tDVõqLÿe*TßbÆ@TwüT†w—\ßbØtdVõqlßbvutßb›u|ßbÊu„ßb›uŒßbv”ßbvœßbÕv¤ßb5w¬ßb»´ßb»¼ßbÒwÄßb xÌßb»ÔßbxÜou!yܾ˜W?Ü¢ Zܹ ZÜ ˆmäßb»ÜŠu%y䯠Oy© q÷?äß {yìÿe*3k*ô3kó3ü3knyäÞu»äŠuÛ;䊡çyÜÞu»‘ã¡+‘ò¡çy‘¢]‘!¢] J¢öyüßb» U¢þy ^¢þy g¢z q¢zßb$Ø¢2 rÏ; ë¢ãz4ßb={<ßb={Dßbô{Lßbô{yßb N£M|Tg£bsdŠ£|d’£ˆn ßb»d©£{d±£ dÀ£Zlßb»dÈ£²| ¡¢îl„‚ÞRtu·t+u·|ßb}LrÏ; Iœ·„ßb»ŒßbA}”ßbŠJœ q*4„ß {yd¤z}¤ÿe*ßbجßbA}´ßbÕ}¼ßbA}dK¤÷}Äßb1~ÌßbA}„`¤I~ F£6| ;£| 6£Í{ .£Ÿ{dßbË|d–œ»4ßb±LÔ€x€Üßbº€äØsb>ìw—ôwüô†w—Ôßb·Ü¥|Æ@ ßb$d›ä‘¦µ‚‘0¦µ‚4f—Dßb»<f—Dó¦Íƒ<ßb·Lf|¯ETØsb>\w—Lÿxîdßb»lßb»Lßb»t:y—tfü|ßbÆ@|wü|†w—„¤‚å„„¢‚ô„Œ€k*4Œ‘|vGDßb⃌š|GŒ y¯EtßbÆ@”f|¯EœØsb>¤w—”ÿxî¬ßb»´ßb»¼ßb†Äät·Ìßbz†ÔßbdžÜßbdžäßbÆ@ìßb[‡ôßb ˆüßbEˆßb‡ˆ ßb§ˆßbÆ@\˜§Z\ §·\­F?\¥§»Tùt»TëtF?ªt‰u#‰\ßb»ô q*4$%k½$Ikè,3k94ëtF?<3k*4ät·4ùt»Dªtº‰D¨Å‰Lßb6‰ÔuÙ?duÙ?Tªtâ‰Tu#‰„ q*4\%k½\Ikèd3k9l3k*tªt¯Št¨Å‰|ßbü‰lßb»„ªtÓŠt q*4tßb»ŒªtÓŠ”ªtùŠ”u#‰”¾˜ ‹œ½q*LTq5œÔq·¤ªtu‹¤Üx*¤¨Å‰ßb·¬ßb‹´u›‹´$¨«‹¼½q*ÄßbÆ@Ìät·¼Ôq·ÌëtF?Ìùt»Ô¨Œ¼ßb·´ßbÁ‹|uÙ?ÜuQܘ§KŒÜ-¨KŒÜ8¨KŒä½q*äÔq·ìuQ옧KŒì-¨KŒì8¨KŒôI¨ŒôL¨Œäßb·Üßb[Œìßb[Œ„ßb»üªt°Œ q*4 3k*rÏ;ªt$ q*4,3k94ßb»<ßb¦4„‚ÞRDßb»Lßb ŽD„‚ÞRTßb_Ž\ßbÆ@dßb÷Žlßb·tßb_|ßb»„ßb·Œßb#|„‚ÞR”ßbÓRœßbÓR¤ßb»¬ßbø¤„‚ÞR´ßbÆ@Œßb»¼ªt‰¼u¨–‘Ä|‚·ÌªtÓŠÌu¨¸‘|‚·ÔªtÓŠÔx¨¸‘Ô|¨¸‘ܪtâ‰Üu¨–‘ÿe*äªtùŠä¾˜ ‹äu¨–‘ìu¨’ì$¨«‹ô|‚·üu¨¸‘u¨¸‘ ªt°Œ x¨–‘ |¨=’3k9|‚·$ßb™’,ßbÊ’4ßbÊ’<ßb'“DVõqLßb»L`¤I~T¢‚˜“Tªt°Œ\ª¨È“dÆ Oy”ßb»l¢‚î“t°¨”|Æ Oyœßb»„¢‚î“t¹¨M”¤ßb»%k½¬ßb»Ikè´ßb»¼ßb»ŒŸ¨§”Œ¢¨°”Œ¢‚î“”ßb»œßb»|`¤I~¤ßb»Äßb»¬Ÿ¨§”¬¢¨°”|ßb»ŒßbÔÌßb»Ôßb»LÆ OyÜßb»±>©#–9™g?™ßbØ´¹¨M”äßb»¼†w—¼wü™`©`–ìßb»™{©{–™©»ôßb»ÄrÏ;üßb»¡–©¿–¡À©¿–ÌTq5ßb»±ßb~4Áª+Ôf—Ü+u·Á%ª]™ßb»œ q*4Á0¦L?” q*4¹3ª?l q*4 ßb»ßb»ä†w—äwüä¬w˜Üu·¡>ªÇ—¡¡»ßb»$ßb»ìßbŠJôuÙ?,ßb»ü†w—üwüü¬w˜ü¶w$üÀw—(ÉäªW™4ßb»Éîª~™<ßb»½q*Dßb»Ôq·ÑßbØLßb»Tßb»ßb·É «W™\ßb»É«÷? ªtbsßbHyßb1š$ßb1š,ßb1š ˆm ¡»¹ Zý —Þu»4«·š”ª¨È“ÜÕ vu<«·š”°¨”D«·š”¹¨M”LrÏ;TßbÆ@T†w—Twü\ßb»dßb›ulßb›utßb›u\ß {y|ÿe*Lÿe*Lf—ßb»„ßbŠJdßb»ŒŸ%ylßb»”Ÿ%ytßb»œŸ%y|ßb»¤¥šbsYwœ¬@†q´ßb¦œ¬ßb¦q¼ßbâqÄßbâq„¹ Z„Ϋÿœ„ŠuÛ;ÙßbqÞu»„ë«]̸r =¤rÏ;ád›]„¬>Ôßb€ÌÎr7=Ü:zq| q*4Ü@†qä^uÏä¼t*d q*4ì^uÏì.¬‹œìËœ$qäßbàl q*4t q*4„ßb»ôªtÉq„ q*4üªtÉq^uÏNœ‹œiI¬QžB¬ÏpËœ$q ßbkž 6eÅ?ßbkž ©ž w*©žw*ŠuÛ;$¸r =¬>Ϋÿœ¹ Z^¢W?$žr =$™r*[¬#œm¬#œ,ßb·4ßbA}VõqŠ¡çyq¸¬ŸÞu»Œßb»,w*4¼t5ŸL3k*<3kó3D3knyTßböŸ\ßböŸd q*4lßbâqtßbvu|ßb·„ßbã ŒVõq”ßb.¡œßbe¡¤ßbœ¡¬ßbÝ¡´Võq¼ßb·< q*4,Øsb>ÄßbY¢Ìßb tßb·ôßbF?üßb¶¢”ßb»Ô^e·£Ü^eÓ£ä^eï£ì†w—ìwüôyžˆnô¥šzqô¿œ qôÅœqôh­§”ôËœ$qßb¦qüyžˆnü¥šzqü¿œ qüÅœqüh­§”üËœ$qªtÉq wry¼t*¥šzq¼t*ßb³¤$ªtÞ¤$^uî¤,@†q4 q*4<3kÉqD q*4L³­§”L^uÏT³­°”Tªtˆ¥\ßb¥,ßb¦qdßbv¥l^uÏlw§”tªtˆ¥t¼t9| q*4lßbÙ¥„^uÏ„ïx*ŒÈ­~@Œ^uό˜$q„ßbà”^uÏ”:tó3œÈ­~@œ^uϜ˜$q”ßbt¦¤^uϤo®ny¬^uϬo®ny´È­~@´^uÏ´Ëœ$q¤ßb‘¦¬ßb‘¦¼È­~@¼h­§”Œßb<¦œßb<¦´ßb<¦Äá­ì¦Ä^uÏÌá­ì¦Ìh­§”Äßb§ÔÈ­)—Ôh­§”œßb»Ü@†qÜ:zqä q*4ìÃz*ôtx.@ü.®Ú§ütx.@4 q*4¤ßb».®Ú§ôßbЧüßbò§¬ßb» D®§”¸r =ôßbÆ@ì–x·ì€k$>ìÿxîìØ¢2 ÿe*$ßb(©,½q*4ÿe*<3k9D3k*Lßbâ©4rÏ;,Ôq·Äÿe*Tßb›u\ßbš«d+u·lßb›utU¢þy|š „:zqŒßbÆ@”rÏ;tg¢z| š·”ÿe*ŒwüŒ†w—tq¢zœßb嬤ßbW­¬ßbô{´ßbô{´ßb»ìßb»¼ßb»Îr7=Äßb»ÜÎr7= ½q*¼¥šzq¼¼t*Ä¥šzqļt*Ì¥šzq̼t*Ô6†qÔV¯KŒÔn¯›®ÔB¬ÏpÔ9¬1žÔ¥šzq¼ßb{®ÜÔq·Äßb{®Ìßb{®äªtØ®Üßb·ìßbÒwô q*4ܽq*ü°£¯%k½  q*4°£¯IkèÌßb»h­§”$@†q$:zqüßb¾¯ßb¾¯,^u]°,–¯ã>4:zq< q*4D^u]°D6†qDt„™D¯OªD–¯ã>D²ŸêšDËœ$qDç{ L^u]°L6†qLt„™L¯OªL–¯ã>L²ŸêšLËœ$qT%k½\^u]°\6†q\t„™\¯Oª\–¯ã>\²Ÿêš\Ëœ$qTIkèÔßb»d^u]°d6†qdt„™d¯Oªd–¯ã>d²ŸêšdËœ$qDßbŒ°Lßbư\ßbưÜßb»lt±4@†q,ßb·dßbưtt±|ßbÆ@„rÏ;|†w—|wülßbØt„ÿe*Œ½q*”ÿe*éðv»Œßb·ñßb~4éßb³²”rÏ;ŒÔq·äßb»œ½q*¤ÿe*ùå°U³¬ q*4œÔq·ìßb»„@†qœßb·ßb~4a±¼³¤rÏ;´Šuryôßb»¼Ÿ%yä`¤I~Äßb»ÌŸ%yüßb»Ô²ŸˆmÔŸ%y䡬—ìrÏ;Üßb»ä²ŸˆmäŸ%yäCŸaTÔßb†´ì²ŸˆmìŸ%yìCŸaTÌßb›uäßbÊuôŸ%yüŸ%yÞŸ5«Ÿ%yð¯Ô´ ÔŸ µ ÞŸ5« Ÿ%y ð¯Ô´ 0˜Ôm q*4ßb»ÈŸ_µÔŸ µÞŸ5«ßbá´ qÛp ßbµ  q÷?©ßb~4¼ßbÆ@ä q*4ÈŸ_µÔŸ µÞŸ5«ßbv$_q*$ÈŸ±µ,ßbÒw4 q*4<_q*<dq9<ÈŸéµDßb¶L q*4T_q*Tdq9TkqTÈŸ5¶\ßbg¶d q*4 ßb»l}‹¶t†w—twüt¬w˜| q*4ßb»„Ÿ%yŒ ñ¶ŒÞŸ5«ŒŸü¶Œð¯Ô´Œ° ·ßb»” ñ¶”ÞŸ5«”Ęˆn”Ÿü¶”ð¯Ô´”° ·Œßb·Œ qÛpœf—¤ Á·¤Ÿ%y¤ð¯Ô´¤0˜œ·¤°Ì·¬f—´+u·$ßb»¼ Á·¼Ÿ%y¼ð¯Ô´¼0˜œ·¼°Ì·¤ßbß·$ßbŠJ,ßb»Ä=e0¸Ìf—áå‚e¸Ô Á·ÔÞŸ5«Üßb`·¼ßbß·äßbH¸Ü° ·ìf—´u·ô Á·ôÞŸ5«Ôßb x4ßb»üŸ%yüJ±FnüQ±ÔmŸ%yJ±FnQ±Ôm Ÿ%y J±Fn Q±Ôm<ßb»}§”CŸaTŸ%yüßbd¹ßbd¹ ßbd¹Dßb»}§”CŸaTßb—¹Lßb»L q*4Tßb»\ßb»©{dßb»lßb»$¼tÕº$ªtÞº$>°}$K°ˆm4^¢þy4g¢z<3k*tßb»D¼tÕºDªtÞºD>°}DK°ˆm4Ë¢zLÿe*Tßb»4†¢$z$ßbå¬|ßb»\¼tÕº\ªtÞºd¼tÕºdªtÞºlßb»\ßbW­„ßb»t¼tÕºtªtÞºtqž |¼tÕº|ªtÞº|qž 4á¢Éz„ßb»tßb={Œßb»Œ¼tÕºŒªtÞºŒqž 4.£Ÿ{”ßb»œ¼t{œqž ¤¼t{¤qž  £ãz Z£d|œßbô{D¼t{Dqž  £ãz¬¼t{¬qž ´¼t{´qž ¬ßbô{L¼t{Lqž ”ßb»¼¼tþ~l|‚·Ä¼tþ~Ì q*4|¼tþ~¼ßb}Äßb}ÔŸ5ŸÆ OyÜŸ5ŸäŸ5Ÿ¡¬—œßb»ìqž ìŸ5ŸäßbA}ôqž ôŸ5ŸìßbÕ}üŸ5Ÿ`¤I~ßb» k±e½ßb»Ÿ5Ÿ$†w—$wü,ÿe*4wü4†w—<ËkŒßbÆ@<êk›$ßbÆ@DßbÆ@< l½Lÿe*<rÏ;TrÏ;\rÏ;drÏ;lrÏ;trÏ;|rÏ;„rÏ;ŒrÏ;”rÏ;œrÏ;¤rÏ;¬ÿe*´rÏ;¼ÿe*ÄwüÌÿe*Ô†w—Üÿe*ÔwüĆw—Ĭw˜äÎr7=dßbÆ@ä¸r =äžr =\rÏ;ìÿe*ôwüô†w—üßbÆ@rÏ;TÎr7= ÿe*¬w˜wü†w—ôßbÆ@ìrÏ;ÿe*$wü,ÿe*4wüéų]áÙ³êMÑ?´2Çц´2Ǥßb»¬ßb»´ßb»4†w—4¬w˜éдìÇ<ßbÒwDrÏ;,™r*LßbÆ@TrÏ;,Îr7=,¸r =¬rÏ;\ßbÆ@drÏ;lßbÒwtrÏ;|ßb¶„rÏ;ÜrÏ;tÿe*l†w—l¬w˜lwü„rÏ;ŒrÏ;„ÿe*|†w—|¶w$|¬w˜|wüßbÒw rÏ;œrÏ;”rÏ;œßbÆ@¤rÏ;¬ßbÆ@´rÏ;dÿe*\†w—\wü¼ßbÆ@ÄrÏ;ÔßbÆ@ÌrÏ;ÌßbÆ@ÔrÏ;Üßbg¶ärÏ;ìßbÆ@ôrÏ;LrÏ;üßb¶ rÏ; ßbÒw rÏ; ßb¶$ rÏ;, ßbÆ@4 rÏ;< ßbÒwD rÏ;L ßbÆ@T rÏ;4ßbÒw,rÏ;ÄßbÒw¼rÏ;\ ßbÒwd rÏ;Œÿe*l ßbÆ@t rÏ;\rÏ;| ÿe*„ ÿe*ÉдìÇt ÿe*l wüÑ⸲M ó¸²M¹&~²Má¹²Mɹ²M)œ€®×Éy¹Â×Tÿrîɰ¹²Mɺ]ºØŒ ÿrî‘ßb» ÷º]Ñ`»]Ñl»åQé÷º]ѧ»]œ †w—œ wü¤ q*4¬ žr =¬ ™r*´ ÿe*É»‚wÚ´ rÏ;É6eÂ×ÉS½«ÚŒ žr =ÉS½Û‘ßbèGÉÀ½[ÛÉÛ½~Û¼ †w—¼ wü¼ ßbÆ@Ä †w—Ä ¬w˜Ä Àw—(Ä ¶w$Ä wüÌ wüÌ †w—Œ ™r*ɹ—ÝùéÀÝùl¾ìÇ”ÿe*ùš¾äÝÔ ßb·\ q*4Ü ßbÆ@Ü †w—Ü wüä ¸r =ì –xÀCt q*4ô ßbÒwô †w—ô wüô ¬w˜ü ¸r =Ä ßbg¶!ßb¶ !ßbÆ@ !†w— !wü!ßbØ! q*4!†w—!wü!¬w˜!¶w$y—¿öäyŒ¦üäy—¿åy•¦ å)œ€Àæ$!–x~Jä q*4$!Âr]$!‹}—ÉÿrYÉhÀñçÌ q*4,!ßbÆ@4!–xÆ@4ßb»<ßb»Dßb»l!;*Lßb» q*4Tßb»\ßb»< q*4dßb»lßb»tßb»|ßb»„ßb»d q*4¬ q*4Œ q*4L q*4Œßb»ì €k*4”ßb»œßb»œ q*4¤ßb»¬ßb»” q*4´ßb»t!ßbÆ@¼ßb»|!¸r =Äßb»Ìßb»Ôßb»Üßb»äßb»,!†w—,!wüì6e‹ñì*e“ñü6e‹ñü*e“ñßb»t!†w—t!wü”'ÿÜ„™üßb»œ'x•Bßb»¤'ªtF>ôTq5 ßb»¬'ªt‰¬'xk>ßb» K}àK W}àK´'æw&A´'–xÀC´'Ùw•B´'yµE¼'ÿe*Éßb»´'­x D´'õx†EÄ'ßb¾BÌ'»x5DÔ'»x5DÜ'ßb»ì'ßbXAô'ßbXA´'3yíE´'£tŒC´'ßb¾B´'þw©Bßb»$ßb»ü'ªt€B(ªt€B(bw&A(\w&A(hw (;wÎ@(QwA(Kw9(Ew* (Ew* (Kw9$(rÏ;,(ßbÆ@,(†w—,(wü4(ßbÒw4(wü4(¬w˜4(†w—<(Kw9<(Ew*L(;wÎ@D(Kw9D(bw&AD(\w&AD(Ew*D(hw L(QwAT(;wÎ@T(QwAÔ' qN5\(Kw9\(Ew*l( qN5d(Kw9d(bw&Ad(\w&Ad(Ew*ôßbÆ@Ü#Îr7=Ü#¸r =t(ßbz=„(ßbÕLŒ(žr =Œ(™r*Œ(Îr7=Œ(¸r =”(ßbM”(éëZ”(òë¹Mœ(ßbÆ@”(ìN”( ì¤(ßb·¬(ßb”N,ßb»´(x•B4ßb»¼(ã{žB¼(ÿÜ„™Ä(òë¹MÄ(éëZÌ(øƒ&AÌ(ç{@OÔ(½q*Ô(Ôq·œ(:y—œ(füÜ(w—Dßb»Lßb»¼øƒ©Bä(ßb»Tßb»ì(øƒ$Pô(ßb»\ßb»Ôj¥©B<x}®4dßb»)ßbÕP)d› QÄ Tq57)µí‡Q )µíÑQ )d›ëQ )ßb¯Ä TqÔ5)d›¨R) q*4<) q*4D)»xUD) qÆ4L)»xUL) qÆ4T)»x5DT) qN5\)»xU\) qÆ4d)»x5Dd) qN5l)»xUl) qÆ4t) qÆ4t)»xUÉßbØ|) q*4$(ÿe*„)ßb»„)–x·„)+yý>Œ)ßb»Œ)–x·Œ)+yý>”)ßbÆ@¤)ßbÒw¬)ßbÆ@¤)¬w˜¤)wü¤)†w—¼)ßbÒwÄ)»xUÄ) qÆ4Ì)»xUÌ) qÆ4Ì' qN5Ô)»xUÔ) qÆ4Ü)»xUÜ) qÆ4ä)Tq5éÐh],ÿrî¬!™r*ì)žr =ì)™r*ô) qN5ü)Îr7=ô)»x5Dü)¸r =ì)Îr7=ì)¸r =)kñ°j*Tq5ißb2 T q*4 * q*4lßb»* q*4*ßbÛk$*ßb l,*²ñhl4*ßb„l<*ßb¼l)Tq5Øsb>D*w—L*ßb®mT*ßböm\*ßbdžd*ßbg4l*ßb¬nt*ßbên|*ßb.o„*ßb»”*ßb»œ*ßbîo¤*ßb¬p¬*ÿxî,#Tq5´*ßb×q¼*ßbÿqÄ*ßbsÌ*ßb·Ô*ßbYsÜ*ßbŽsä*ßbÒsì*ßbÏtŒ)ÿxîô*½q*ü*rÏ;+rÏ;ô*Ôq·+f—ü*ÿe*Œ)€k$> +ßbÆ@+rÏ;Œ)w»+ÿe*ô*ßb·+ßbav$+ßbŽv,+ßb‘@4+ßb±L<+ßbwD+ßb‚wT+ßbàw\+ßbwd+ßb±Ll+ßbcxt+ßbTy|+ßb¬p„+ßbŸytßb»Œ+ªt4zL q*4”+ªtVz”+¼t9œ+ªtwz¤+t ¤+ªtwz¬+ªt‘z¬+tx¤z´+Øsb>¼+ q*4Ä+ªtÏzÄ+èñ¤zÄ+o§ízÌ+Øsb>Ô+Tq5|ßb»Ü+ªtÓŠ„ßb»ä+ªt‰ì+ªtS{Œßb»ô+ªtn{ü+ªt≔ßb»œßb»,†w—,wü ,ßbÒw,Ñ”b,t ,Ñ”&@,¦‚.@,.¬ ,óù{, ó ,ùë*¤ßb»|Øsb>$,w—,ßb¬p,,ªtª¸4, q*4¬ßb»<,o§&@D,g§&@D,o§&@<,ßb±LL,‰z|T,Ñ”ã>\,ßbsd,¼t*l,ßb·t,,t t,Ñ”&@t,ç{„™t,tx.@t, ó t,ùë*t,ßbYs|,Ñ”&@|,tx.@|, óD;|,ÿÜ*|, ó |,ùëÙ|´ßb»|,ßbŽs„,ªtu‹„,Üx*„,Ñ”¤z„,óD;„,tx#}„, ó „,ùë*Œ,w—„,ßbÒs”,`ò ”,Ñ”&@”,ã{ã>”,Ãz„™”,ç{„™”,¦‚.@”, ó ”,ùëã>¼ßb»”,ßbÏtÄßb»œ,Ñ”&@œ,ƒòöyœ,Šò{}¤,ƒòöy¤,Šò{}¬,Ñ”&@´,ó‰´,óß}¼,ßb·Ä,v|¦GÌ,ßbÆ@Ì,wüÌ,†w—Ä,¥|Æ@Ìßb»Ô,fü$ ó»Ôßb»Ô,:y—¼,ÿe*Ü,ßbÆ@Üßb»ä,ó‰ä,1ó&@¼,€x€Ä,ßbº€´,ßbý}ì,ßb»ü,ßb»-Ñ”&@-ór-Ýh*-šx „-ó.@- ó -ùë*<€x€ -ßbº€ - y¯E -¥|Æ@-ßb‚w-ó‰-Ñ”&@-ó¯-Ýh*-šx~-ó.@- ó -ùë*-ßbº€- y¯E-¥|Æ@-ßbàw$-ó‰$-Ñ”&@,-Ñ”&@4-ó‰4-ó€<-v|¦G<-¥|Æ@äßb»D-:y—<ÿe*D-füL-ßbÆ@ìßb»T-óº‰T-Ñ”¤z\-ßbº€d-ßb€l-ßb»|-h­ÓŠ|-Ñ”&@|-¦‚.@|-5óD;|- ó |-ùë*|-ßbTy„-t „-Ñ”&@„-¦‚.@„-.¬ „-óù{„- ó „-ùë*„-ßb¬pŒ-h­ÓŠŒ-Ñ”&@Œ-¦‚.@Œ-5óD;Œ-<óKŒŒ- ó Œ-ùë*Œ-ßbŸy”-ßbœ-ßbM¤-ßb¥¬-ßb»žr =™r*´-‰ó#}´-“ó.@´-¡ó»´-¶ó*¼-ßb·Ä-ßb‚Ì-ßb–‚Ô-ßbÏ‚Ü-½q*ä-ÿe*Ü-ßb·ì-ßbcƒô-ßb±Lü-ßb–‚.ßbúƒ.ßb».ßbº€ô6e‹ñô*e“ñ.aôs„ü6e‹ñü*e“ñ$.ªt±„t q*4,.ßb»,.{ôÒ„4.ßb»<.Nóª¸<.Tó¯Š<.\óë„D.ìÓŠD.ùë‰L.ž–~@L.§ô4zT.‰ó#}T.“ó.@T.À£ZT.­ôZT.¶ô§nT.¶ó*T.Äô—T.¡ó»\.r—*d.r—9d.,õx…l. q*4t.ÿñ¤zT.ßbÏ‚|.°«§|.ïx&@|.À£KŒ|.ùó£…„.Ôq·Œ.rÏ;w— ßb»”.°«§”.ïx&@”.À£KŒ”.ùó£…|.ßbcƒœ.,õ&@ßb»¤.ÃzQ¬.Àêbs¬.Šâ*´.ùÚbs´.Àêbs´.ñƒ1†¼.ßb#QÄ. q*4¬.ßb"†Ì.1õz†Ì.GõȆÔ. q*4ì.3kY|ô.Qõ‡ü.¦‚.@/ßb\‡/uõY|ü.ßbЧ /ßb»­õ¾‡/ßb·/ßb\‡ßb»/3k*/3kY|$/^eêˆ,/^e‰4/^e"‰L,°Y|L,¥šb|\,ùó \,šÁ \,µí—l,Ýh*l,À£Zl0ªt~@l0¦‚.@<7ø@<.¬.@t0»xU|0ßb‚„0x·Œ0 qÆ4”0ßb»œ0ßb2 ¤0ßb»¬0»xU´0ßb"‘¼0—ø *en‘Ä0a„s‘Ä0Åø}‘ q*4Ì0 qÆ4Ô0µíÑ’Ô0d›è’Ô0ßbÌ騀“騀“Ä Tq5Ü0ßb,”ä0ßbh”ì0ßbº”ô0ßbâ”Dßb»ü0ªtº‰ü0šH•1µíe• 1ªts• 1šH•1š”•1µíl•$1š”•$1„Ï $1‡Ï Ä q*4éЕ,1x}®4éÐó•éÐ$–41 qÆ4<1 qÆ4D1 q*4¬!DsJ=L1žr =L1™r*T1ßbÆ@\1žr =\1™r*d1ßbÒw\1Îr7=\1¸r =l1½q*l1Ôq·l1ßb·4ßbb?4~tW?9é²MÑßb‘žlÔq·l½q*t1ßb9 |1ßbz Ùßt¢„1 q*4‘½ÿÿ£Œ1ßb»”1ßb»œ1ßb»¤1ßb»¬1ªtX¥¬1°c¥´1 q*4¼1 q*4Lßb»Ä1ªtŽ¥Ä1°x…Ì1 q*4Tßb»©:È¥Ô1ßb·Ü1ßb·ì1ßb·ü1ßb· 2ßb·2ßb·,2ßb·<2ßb·L2ßb·\2ßb·l2ßb·|2ßb·Œ2ßb·”2ßb¿©œ2ßbª¤2ßb·¬2ßbPª´2ßbšª¼2ßb·Ñ„ƒ«É»‚P®Ì2ßb»cÔ2ßb»cÜ2Šuª®ä) q*4ä2Šuª®ì2Šuª®ô2Šuª®ü2Šu×®3Šuª® 3Šuª®3Šuª®3Šuª®$3Šuª®,3Šus‘43 q*4<3Šuª®D3Šuª®L3Šu‰T3Šuª®\3Šuª®d3Šuª®l3Šuª®t3Šuª®|3Šuª®„3Šuu‹\uv¯\›{¯\z]\‡]\“»\w—\ßb»Œ3Ýh*dßb»”3,t*”3j¥*”3Üx*”3¸*4”3³¯”3¦‹ñ”3­‹ñœ3,t*œ3j¥*œ3Üx*œ3³¯œ3­‹ñœ3¦‹ñlßb»tßb ¯„ßb»Œßb ¯”Øsb>œßb»¤ßb ¯¬Øsb>´ßb»¼ßb ¯ÄØsb>Ìßb»Ôßb ¯ÜØsb>äßb»ìßb ¯ôØsb>üßb» ßb ¯ Øsb> ßb» ßb ¯$ Øsb>, ßb»4 ßb ¯< Øsb>D ßb»L ßb ¯T Øsb>\ ßb ¯d ßb ¯l Øsb>t ßb ¯| ßb ¯„ Øsb>¤3܃*¤3ùÚ)²¤3,t*¤3j¥*¤3ÂZŒ ßb ¯´ Tq5¬3܃*¬3ùÚ)²¬3,t*¬3j¥*´3ùÚu‹´3,t*´39´3j¥*´3¿Z´3ÂZ¼3àƒ9¼3ùÚu‹¼3,t*¼39¼3j¥*” ßb ¯œ Øsb>Ä3뻳Q¤ ßb»Ì3뻳QÔ3ßb«²Ü3ßb«²ä3ßb«²ì3ßb«²ô3ßb«²ü3ßb«²4ßb«² 4ßb«²4Šuª®¬ ßb»©Gy³´ ßb»Ô3µÑª®´ q*4¼ ßb»©Gy³Ü3µÑª®Ä ßb»ä3µÑª®Ì ßb»©Gy#³ì3µÑª®Ô ßb»éßbØô3µÑª®Ü ßb»©GyÈ¥ü3µÑª®ä ßb»©Gy(³4µÑª®ì ßb»©Gy-³ 4µÑª®4ßb«²$4ßb«²,4Šuª®©È¥4µÑª®$4µÑª®44ßb«²<4ßb«²D4Šuª®©È¥44µÑª®<4µÑª®L4ßb«²T4ßb«²\4Šuª®©#È¥L4µÑª®T4µÑª®d4ßb¤³l4ßb¤³t4Šu×®ô ßb»©(ý³|4‚‰ü ßb»d4µÑ×®ü q*4|4ßbg4 ßb»„4‚‰l4µÑ×®„4ßbg4Œ4ßb«²”4ßb«²œ4Šuª®©.È¥Œ4µÑª®”4µÑª®¤4ßb«²¬4ßb«²´4Šuª®©6È¥¤4µÑª®¬4µÑª®¼4ßb«²Ä4ßb«²Ì4Šuª®¼4µÑª®Ä4µÑª®Ô4ßb«²Ü4ßb«²ä4Šuª®©5òÈ¥Ô4µÑª®Ü4µÑª®ì4ßb«²ô4ßb«²ü4Šuª®©@È¥ì4µÑª®ô4µÑª®5ßbÈ´ 5ßbÈ´5ßbÈ´5ßbÈ´$5ßbÈ´,5ßbÈ´45ßbÈ´<5ßbÈ´D5Šus‘ ßb»©nƒ2µ ßb»5µÑs‘ ßb» 5µÑs‘$ ßb»5µÑs‘, ßb»©nƒFµ5µÑs‘4 ßb»©nƒTµ$5µÑs‘©nƒ'F,5µÑs‘< ßb»©nƒ^µ45µÑs‘D ßb»©nƒhµ<5µÑs‘L5ßb«²T5ßb«²\5Šuª®©FÈ¥L5µÑª®T5µÑª®d5ßb«²l5ßb«²t5Šuª®©JÈ¥d5µÑª®l5µÑª®|5ßbg4„5ßbg4Œ5Šu‰©PÈ¥|5µÑ‰„5µÑ‰”5ßb«²œ5ßb«²¤5Šuª®©UÈ¥”5µÑª®œ5µÑª®¬5ßb«²´5ßb«²¼5Šuª®©YÈ¥¬5µÑª®´5µÑª®Ä5ßb«²Ì5ßb«²Ô5Šuª®©^È¥Ä5µÑª®Ì5µÑª®Ü5ßb«²ä5ßb«²ì5Šuª®©bÈ¥Ü5µÑª®ä5µÑª®ô5ßb«²ü5ßb«²6Šuª®©gÈ¥ô5µÑª®ü5µÑª® 6ßb«²6ßb«²6Šuª®©kÈ¥ 6µÑª®6µÑª®$6ßb“¶,6ßb“¶46Šuu‹©\…ý³<6‚º‰L ßb»$6µÑu‹L q*4<6ßbí¶D6‚º‰,6µÑu‹D6ßbí¶øƒ =ùó =À£ZÄô—T ßb»L6ßbj·T6ßbên\6ªt¼·\6êºd6 qÆ4T6ªtn{T q*4\ ßb»l6ßbï·|6ßb[¸„6ßb¸Œ6ªtܸŒ6êº!”6 qN5|6ªt&¸d ßb»t6 qÆ4œ6 q*4„6ªt¹\ q*4l ßb»¬6ßb‘¹¼6ßbÓ¹Ä6ßbºÌ6ßbÞº¬6ªt;¹t ßb»¤6 qN5Ô6 q*4¼6ªtQ¹´6 qÆ4œ6Tq5Ä6ªt»l q*4l.TqÔ5Ü6ªt@»Ü6êº5&ä6 qI6| ßb»ì6ßbƒ»ü6ßbP¼ 7ßb˜¼7ßbê¼$7ßb ½,7ªtK¾,7êºu,47 qÝ7ü6ªtл„ ßb»ô6 qI6<7 q*4 7ªtè»7 qN5Ô6Tq57ªt¼7 qÆ4œ6TqÔ5$7ªt˜¾| q*4l.Tq57D7ßb»L7ßb2 T7ßb»\7ßb»d7ªt•Bd7+ •B!ì KÀ©ÿoÀ)a ?)Ž…úêI˜…ˆÀ©µþ“À! ¤ÀY˜…¬ÀQ˜…·À!˜…ËÀl7Šu*t7Šu*|7Šu Á43Tq5Œ7ßbên”7ßb»cœ7ßbênä7Òn{ì7ßbênô7ßb»cü7ßbên 8Òn{8ßbên8ßb»c$8ßbên,8Òn{48ßbên<8ßb»cD8ßbênL8Òn{T8—ø Œ x}®4” x}®4œ x}®4¤ x}®4¬ x}®4´ x}®4¼ x}®4Ä x}®4Ì x}®4Ô x}®4Ü x}®4ä x}®4ì x}®4ô x}®4x}vÃü x}®4\8+ •B\8ªt•Bd8Šu*l8Šu*Œ8ßb»c”8ßbÄœ8Šu Á ßb»©/ÿSÄ> ƒ« ßb» ßb» ßb»Œ8.¬³Q$ ßb»¤8‚Âwz, ßb»”8µÑ Á, q*4¤8ßb„lÔ8Òn{Ü8‚‰ä8µÑn{ì8ßbg4ô8j¥³Qü8‚‰9µÑn{ 9ßbg44 ßb»9Òn{9‚‰$9µÑn{,9ßbg449j¥³Q<9‚‰D9µÑn{L9ßbg4< ßb»T9Òn{\9‚‰d9µÑn{l9ßbg4t9j¥³Q|9‚‰„9µÑn{Œ9ßbg4”9Òn{œ9‚‰¤9µÑn{¬9ßbg4´9j¥³Q¼9‚‰Ä9µÑn{Ì9ßbg4éñ‹Çéñ¡ÇéÕÓÇéñíÇéY!6eÊ!*eüü9†w—ü9wüü9¬w˜ü9¶w$:†w—:wü:¬w˜:¶w$:Àw—( :}p ùßb»ÙØ€ $É´]:}p :_l :hkî$:3k*,:3k94:3k<:3k!D:3k5&L:hkîT:3k*\:3k9d:3kl:3k!t:3k5&|:3ku,L:_l „:hkîŒ:3k*”:3k9œ:3k¤:3k!¬:3k5&´:3ku,¼:3k©1 ªtÑÛ, q*4$ ªt‰4 ªtÑÛ< ªt‰Ì:ªtÜÛÔ: q·Ü:ªtÑÛä:ªtÿÛì: q*4ô:ªt.Üü: q*4;ªtcÜ ;ßb¶; q*4;ªt¬Ü$;ßbg¶,; q*4ù 6ÛÝ9ßbÝ4;ßb·ü9ßb¶:ßbg¶<;ßb®ÝD;ßbóÝL;ßb·T;ßbMÞ\;7*d;Œ‰×Þl;Œ‰ûÞimsß„7*„289 ,7* ,289 ,:8 ;7* ;289 ;:8 ;B8!$;7*$;289$;:8$;B8!$;J85&t;7*t;289t;:8t;B8!t;J85&t;R8u,„;7*„;289„;:8„;B8!„;J85&„;R8u,„;`8©1”;7*”;289”;:8”;B8!”;J85&”;R8u,”;`8©1”;w8|à  %* /$4(9,>0C4H<@DH%L9PQÈÌàäè  <@DH L%|€„ˆ Œ%*ÈÌÐÔ Ø%Ü*à/04DHtx|ÀÄÈHLPhlpøü ptx| €%„*ˆ/Œ49”>˜Á]œÆ] Ë]¤Ð]¨Õ]¬Ú]°Q´ß]¸ä]¼é]Àî]Äó]Èø]Ìý]Ð^Ô^Ø ^Ü^à^ä^è ^ìCðHô%^ø*^ü/^œT a¤t¨t¬°œ´Â¸Ç¼ÊÀÕÄæT X \ ˜ œ   ¤ èì ð%48<@ D%H*€„ˆŒ %”*˜/DHL¨¬°”˜œ*z.:×. ð. ..# .Ò&.Ò<.Ò}.Ò˜.Òº..# .+Ý.3Ý.;Ý.Cò.K .S3.[g.ct.kg.sg.{….ƒ .‹.“¿.›åCzczƒ³ƒz£Ãh£zÃÃhÃ:ÃzãÂã:ãzÂ:z#Ãh#:#zCÜC:CzcÃhc:czƒöƒ:ƒz£Ãh£:£zÃÃhÃ:ÃzãÜã:ãzÃÐ:z#Ãh#:#zCÃhC:CzcÃhc:czƒÃêƒ:ƒz£Ã£:£zÃÃÃ:ÃzãÃêã:ãzÃ:z#ÃC#:#zCÃ]C:CzcÃwc:czƒÃhƒ:ƒz£Ñ£:£zÃÃhÃ:ÃzÉÓÉÛÉã¤ãÜã:ãzéÓéÛéã¤ö:z Ó Û ã¤#Ãï#:#z)Z†)Ó)ÛCÃïC:CzIZëIÓIÛcÃïc:cziZ†iÓiÛƒÃïƒ:ƒz‰Zë‰Ó‰Û£ÃУ:£z©Ó©Û©ã¤ÃÃÐÃ:ÃzÉÓÉÛÉã¤ãÃ7ã:ãzéÓéÛéã¤Ãê:z Ó Û ã¤#Ãï#:#z)Z†)Ó)ÛCÃ]C:CzIZëIÓIÛcÃ]c:cziZ‡iÓiÛƒÃ7ƒ:ƒz‰Z†‰Ó‰Û£ÃУ:£z©Zë©Ó©ÛÃÃÐÃ:ÃzÉZ‡ÉÓÉÛãÃhã:ãzéÓéÛéã¤Ãw:z Ó Û ã¤#z)Ó)Û)ã¤CÊCÂCúmCz IÓIÛIã¤iÓiÛiã¤ã¤ÓÛƒ+¢‰Z†‰Ó‰Û¡ã¤¡Ó¡Û£+©Zë©Ó©ÛÁã¤ÁÓÁÛÉZ‡ÉÓÉÛáã¤áÓáÛéZ$éÓéÛÊÂúæz  Z† Ó Û)Zë)Ó)ÛC+úIZ‡IÓIÛaã¤aÓaÛc+>iZ$iÓiÛã¤ÓÛƒ+‰Ó‰Û‰ã¤¡ã¤¡Ó¡Û©Ó©Û©ã¤Áã¤ÁÓÁÛÉÓÉÛÉã¤áã¤áÓáÛéÓéÛéã¤ã¤ÓÛÊÂú#z  Ó Û ã¤!ã¤!Ó!Û)Ó)Û)ã¤C+/#IZ†IÓIÛc+s#iZëiÓiÛƒ+·#‰Z‡‰Ó‰Û£+$©Z$©Ó©ÛÁã¤ÁÓÁÛÉZ†(ÉÓÉÛáã¤áÓáÛéZ†éÓéÛ ã¤ Ó Û Zë Ó Û! ã¤! Ó! Û) Z‡) Ó) ÛA ã¤A ÓA ÛC ÊC ÂC ú]'C z I Z$I ÓI Ûa ã¤a Óa Ûi Z†(i Ói Û ã¤ Ó Ûƒ +q'‰ Ó‰ Û‰ 㤡 㤡 Ó¡ Û£ +µ'© Ó© Û© ã¤Á ã¤Á ÓÁ Ûà +ù'É ÓÉ ÛÉ ã¤ã +=(é Óé Ûé 㤠+œ( Ó Û ã¤) Ó) Û) ã¤I ÓI ÛI ã¤i Z†i Ói Û ã¤ Ó Û‰ Zë‰ Ó‰ Û¡ 㤡 Ó¡ Û© Z‡© Ó© ÛÁ ã¤Á ÓÁ Ûà Êà Âà ú÷*à z É Z$É ÓÉ Ûá ã¤á Óá Ûé Z†(é Óé Û ã¤ Ó Û + + Zd, Ó Û! ã¤! Ó! Û# +O+) Z†) Ó) ÛA ã¤A ÓA ÛC +“+I ZëI ÓI Ûa ã¤a Óa Ûc +×+i Z‡i Ói Û ã¤ Ó Ûƒ +,‰ Z$‰ Ó‰ Û¡ 㤡 Ó¡ Û£ +~,© Z†(© Ó© ÛÁ ã¤Á ÓÁ ÛÉ Zd,É ÓÉ Ûà Óà Ûé Óé Ûé 㤠‚Ë Ó Û ã¤ Ó Û) Ó) Û) ã¤@ ‚öI ÓI ÛI ã¤` Ó` Ûi Ói Ûi 㤀 Ó€ Ûƒ ʃ ƒ úç/ƒ z ‰ Ó‰ Û‰ 㤠 Ó¡ 㤡 Ó¡ Û© Ó© Û© ã¤À ÓÁ ã¤Á ÓÁ Ûà +û/É ÓÉ ÛÉ ã¤à Óá ã¤á Óá Ûã +?0é Z†é Óé Û Ó ã¤ Ó Û +ƒ0 Zë Ó Û Ó! ã¤! Ó! Û# +Ç0) Z‡) Ó) Û@ ÓA ã¤A ÓA ÛC + 1I Z$I ÓI Û` Óa ã¤a Óa Ûc +O1i Z†(i Ói Û€ Ó ã¤ Ó Ûƒ +²1‰ Zd,‰ Ó‰ Û  Ó  Û¡ 㤡 Ó¡ Û© Z˜1© Ó© ÛÀ ÓÀ ÛÁ ã¤Á ÓÁ ÛÉ Z†É ÓÉ Ûà Óà Ûá ã¤á Óá Ûé Zëé Óé ÛÓÛã¤ÓÛ Z‡ Ó Û Ó Û!ã¤!Ó!Û)Z$)Ó)Û@Ó@ÛIZ†(IÓIÛ`Ó`ÛiZd,iÓiÛ€Ó€Ûƒz4‰Z˜1‰Ó‰Û Ó Û£B£z©‚¶3À‚ËÃBÃzÉ‚Ã3àÓàÛãBã:ãzé‚Ð3‚öÊÂú};ûŽ;zå Ó Û!ã¤!Ó!Û#j#š°<#Ê#Â#ú¹<#ûÍ<#z )ã¤)‚¶3@‚ÍAã¤AÓAÛ`Ó`Ûaã¤aÓaÛcÃp>cjcÊcÂcúz>c+Œ>cû¾>cz iÓiÛi㤀ӀÛã¤ÓÛ‰Zë‰Ó‰Û Ó¡ã¤¡Ó¡Û£z©ã¤©º¬;ÀÓÁã¤ÁÓÁÛÃzÉã¤Éº¬;àÓáã¤áÓáÛã*ãZãzéÓéÛéã¤Óã¤ÓÛZz Ó Û ã¤ Ó!ã¤!Ó!Û#Z#z)Ó)Û)ã¤@ÓAã¤AÓAÛCzIÓIÛIã¤`Óaã¤aÓaÛc"cziZëiÓiÛ€Óã¤ÓÛƒúý?ƒz‰Zô<‰Ó‰Û Ó Û¡ã¤¡Ó¡Û£B£z©ã¤ÀÓÀÛÁã¤ÁÓÁÛÃ:ÃzÉã¤àÓàÛãš°<ãÒãêãzJAÓÛ Ó Û#+SA@Ó@ÛAã¤C+ñAIã`Ó`Ûaã¤aÓaÛ€Ó€Û Ó Û£Ãp>£ú H£:£+H£ûNH£zÀÓÀÛÁã¤ÁÓÁÛÃ:ÃzàÓàÛáã¤áÓáÛãÒãêãû©HãzÍHÓÛã¤ÓÛš°<ÒêzJA Ó Û)Ó)Û)ã¤@‚ËC+ŠIIZëIÓIÛ`Ó`Ûc+ÍIiZô<iÓiÛ€‚ö‰Z‡‰Ó‰Û Ó Û©Z•A©Ó©ÛÀ‚ÍÃ:ÃúýLÃ+MÃûNHÃzÉZ²AÉÓÉÛàÓàÛã:ãzéZÃAéÓéÛ‚½ b:z ZÔA Ó Û Ó Û#B#:#z)Zë)Ó)Û@Ó@ÛCzIZô<IÓIÛ`ÓcBc:cziZ‡iÓiÛ€ÓƒúíPƒz‰Z•A‰Ó‰Û Ó£z©Z²A©Ó©ÛÀÓÃzÉZÃAÉÓÉÛàÓãú„RãzéZÔAéÓéÛÓã¤ÓÛúïRz Ó!ã¤!Ó!Û#Ò#ê#zÍH)ã¤@ÓAã¤AÓAÛC CÚCâCR TCz`Ó`Ûaã¤aÓaÛcÊcêczJAi㤀ӀÛã¤Ó۠Ӡۡ㤡ӡۣ+3UÀÓÀÛÁã¤ÁÓÁÛÃ+…UÉãàÓàÛáã¤áÓáÛã+ÔUé‚¶3ÓÛã¤ÓÛ ‚Ã3 Ó Û)Ó)Û)ã¤@Ó@ÛIZëIÓIÛ`Ó`ÛcÒcêczJAiZô<iÓiÛ€Ó€Û‰Z^I‰Ó‰Û Ó Û£+ŸV©ZoI©Ó©ÛÀÓÀÛÁã¤Ã+4WÉZ‡ÉÓÉÛàÓàÛáã¤ã+¿WéZëéÓéÛÓÛ Zô< Ó Û Ó Û)Z^I)Ó)Û@Ó@ÛIZoIIÓIÛ`Ó`Ûaã¤aÓaÛcÒcêcziZ‡iÓiÛ€‚Ëã¤ÓÛƒÒƒêƒzÍH‰ã¤ Ó Û¡ã¤¡Ó¡Û£zÀ‚öÁã¤ÁÓÁÛÃzÉã¤àÓàÛáã¤áÓáÛã:ãúâYãz‚Íã¤ÓÛÊêzJA ã¤ Ó Û!ã¤!Ó!Û)ã¤@‚½ C+zZIã¤`Ó`Ûc+ËZi㤀‚%ƒ+#[‰ã Ó Û£+t[ÀÓÀÛàÓÓ Ó@ÓCÊCêCzJA`Ói‚¶3€Óƒ+4^‰‚Ã3 Ó£+‘^ÀÓÃ+ï^àÓàÛã+N_ÓÛ+¹_ Ó Û!ã¤#+'`@Ó@ÛAã¤C+ˆ``Ó`Ûc+ç`€Ó€Ûƒ+Ha Ó Û£+¿aÀÓÀÛÃ+!bàÓàÛã+bÓÛ+ãb Ó Û ã¤ Ó Û!ã¤!Ó!Û#+[c)Ó)Û)ã¤@Ó@ÛC+ÁcIÓIÛIã¤`Ó`Ûc+%diÓiÛi㤀Ӏۃ+‡d‰Ó‰Û‰ã¤ Ó Û¡ã¤¡Ó¡Û£+ßd©Zë©Ó©ÛÀÓÀÛÁã¤ÁÓÁÛÃ+9eÉZ‡ÉÓÉÛàÓàÛáã¤áÓáÛã+–eéZëéÓéÛÓÛã¤ÓÛ+f Z‡ Ó Û Ó Û!ã¤!Ó!Û#+_f)Ó)Û)ã¤@Ó@ÛIÓIÛIã¤`Ó`ÛiÓiÛi㤀‚ˉӉۉ㤠Ӡۡ㤡ӡ۩Z†©Ó©ÛÀ‚öÁã¤ÁÓÁÛÉZvVÉÓÉÛàÓàÛáã¤áÓáÛéZ‡VéÓéÛ‚Íã¤ÓÛ Zë Ó Û Ó Û!ã¤!Ó!Û)Zô<)Ó)Û@‚½ Aã¤AÓAÛIZ^IIÓIÛ`Ó`Ûaã¤aÓaÛiZoIiÓiÛ€‚%ã¤ÓÛ‰ZðV‰Ó‰Û Ó Û¡ã¤¡Ó¡Û©ZW©Ó©ÛÀ‚…*Áã¤ÁÓÁÛÉZ‡ÉÓÉÛàÓàÛáã¤áÓáÛéZ•AéÓéÛÓÛã¤ÓÛ Z²A Ó Û Ó!ã¤!Ó!Û)Z†)Ó)Û@ÓAã¤AÓAÛIZvVIÓIÛ`Óaã¤aÓaÛiZ‡ViÓiÛ€Ó㤉Zë‰Ó‰Û Ó¡ã¤©Zô<©Ó©ÛÀÓÁã¤ÉZ^IÉÓÉÛàÓáã¤éZoIéÓéÛÓã¤úm*z ZðV Ó Û Ó Û!ã¤#ú(m#*#z)ZW)Ó)Û@Ó@ÛAã¤C*CzIZ‡IÓIÛ`Ó`Ûaã¤c cÚcêcziZ•AiÓiÛ€Ó€Û㤃 ƒÚƒêƒz‰Z²A‰Ó‰Û Ó Û¡ã¤£ £Ò£ê£zÀÓÀÛÃ*Ã:ÃZÃzàÓàÛãzé‚¶3ÓÛz ‚Ã3 Ó Û#Ò#ê#zJA)‚Ð3@Ó@ÛCZCzI‚cX`Ó`Ûczi‚pX€Ó€ÛƒÒƒêƒŠƒzÍH‰‚}X Ó Û¡ã¤¡Ó¡Û£Ò£ê£Š£zÍH©‚ŠXÀÓÀÛÃ:ÃÒÃêÃú rÃzJAÉ‚—XàÓàÛãúJsã:ãz邤X Ó Û z ‚±X Ó Û# :# úy# z@ Ó@ ÛA ã¤A ÓA ÛC :C ŠC z` Ó` Ûa ã¤a Óa Ûc :c Šc z€ Ó€ Û ã¤ Ó Ûƒ :ƒ úv|ƒ z  Ó  Û¡ 㤡 Ó¡ Û£ :£ Š£ ú6£ zÀ ÓÀ ÛÁ ã¤Á ÓÁ Ûà à zà Óà Ûá ã¤á Óá Ûã ã zé Óé Ûé ã¤!Ó!Û!ã¤!Ó!Û!!z !Ó !Û !㤠!Ó !Û!!ã¤!!Ó!!Û#!#!z)!Ó)!Û)!ã¤@!‚ËA!ã¤A!ÓA!ÛC!C!zI!ÓI!ÛI!ã¤`!Ó`!Ûa!ã¤a!Óa!Ûc!c!zi!Ói!Ûi!㤀!‚ö!ã¤!Ó!Ûƒ!ƒ!z‰!Z†‰!Ó‰!Û !Ó !Û¡!㤡!Ó¡!Û£!z¹©!ZvV©!Ó©!ÛÀ!‚ÍÁ!ã¤Á!ÓÁ!ÛÃ!z¹É!ZëÉ!ÓÉ!Ûà!Óà!Ûá!ã¤á!Óá!Ûé!Z‡é!Óé!Û"‚½ "ã¤"Ó"Û"â"z¹ "Z•A "Ó "Û "Ó "Û!"ã¤!"Ó!"Û)"Z$)"Ó)"Û@"‚%A"ã¤A"ÓA"ÛI"Zc[I"ÓI"Û`"Ó`"Ûa"ã¤a"Óa"Ûc"za„i"Z†i"Ói"Û€"‚…*"ã¤"Ó"Û‰"ZvV‰"Ó‰"Û "Ó "Û¡"㤡"Ó¡"Û©"Zë©"Ó©"ÛÀ"‚X/Á"ã¤Á"ÓÁ"ÛÃ"za„É"Z‡É"ÓÉ"Ûà"Óà"Ûá"ã¤á"Óá"Ûé"Z•Aé"Óé"Û#Ó#Û#ã¤#Ó#Û #Z$ #Ó #Û #Ó!#ã¤!#Ó!#Û)#Zc[)#Ó)#Û@#ÓA#ã¤A#ÓA#ÛI#ÓI#ÛI#ã¤`#Óa#ã¤a#Óa#Ûi#Ói#Ûi#㤀#Ó‰#Ó‰#Û‰#㤠#Ó£#š‰£#Ê£#z¹©#Ó©#Û©#ã¤À#ÓÃ#BÃ#zÉ#ÓÉ#ÛÉ#ã¤à#Óã#za„é#Óé#Ûé#ã¤$Ó$za„ $Ó $Û $㤠$Ó $Û#$za„)$Ó)$Û)$ã¤@$Ó@$ÛC$za„I$ÓI$ÛI$ã¤`$Ó`$Ûi$Ói$Ûi$㤀$Ó€$Û‰$Ó‰$Û‰$㤠$Ó $Û£$za„©$Ó©$Û©$ã¤À$ÓÀ$ÛÃ$za„É$ÓÉ$ÛÉ$ã¤à$Óà$Ûã$za„é$Óé$Ûé$ã¤%Ó%Û%za„ %Ó %Û %㤠%Ó %Û#%za„)%Ó)%Û)%ã¤@%Ó@%ÛC%za„I%ÓI%ÛI%ã¤`%Ó`%Ûc%za„i%Ói%Ûi%㤀%Ó€%Ûƒ%za„‰%Ó‰%Û‰%㤠%Ó %Û©%Ó©%Û©%ã¤À%ÓÀ%ÛÉ%ÓÉ%ÛÉ%ã¤à%Óà%Ûã%š‰ã%Êã%z¹é%Óé%Ûé%ã¤&Ó&Û &Ó &Û &㤠&Ó &Û)&Ó)&Û)&ã¤@&Ó@&ÛI&ÓI&ÛI&ã¤`&Ó`&Ûi&Ói&Ûi&㤀&Ó€&Û‰&Ó‰&Û‰&㤠&Ó &Û©&Ó©&Û©&ã¤À&ÓÀ&ÛÉ&ÓÉ&ÛÉ&ã¤à&Óà&Ûé&Óé&Ûé&ã¤'Ó'Û 'Ó 'Û '㤠'Ó 'Û#'z¹)'Ó)'Û)'ã¤@'Ó@'ÛI'ÓI'ÛI'ã¤`'Ó`'Ûi'Ói'Ûi'㤀'Ó€'Û‰'Ó‰'Û‰'㤩'Ó©'Û©'ã¤É'ÓÉ'ÛÉ'ã¤é'Óé'Ûé'ã¤(ã¤(Ó(Û (Ó (Û (ã¤!(ã¤!(Ó!(Û)(Ó)(Û)(ã¤A(ã¤A(ÓA(ÛI(ÓI(ÛI(ã¤`(Óa(ã¤a(Óa(Ûi(Ói(Ûi(㤀(Ó(ã¤(Ó(Û‰(Ó‰(Û‰(㤠(Ó¡(㤡(Ó¡(Û©(Ó©(Û©(ã¤Á(ã¤Á(ÓÁ(ÛÃ(âÃ(z¹É(ÓÉ(ÛÉ(ã¤à(Óá(ã¤á(Óá(Ûé(Óé(Ûé(ã¤)Ó)ã¤)Ó)Û )Ó )Û )ã¤!)ã¤!)Ó!)Û))Ó))Û))ã¤A)ã¤A)ÓA)ÛI)ÓI)ÛI)ã¤a)ã¤a)Óa)Ûi)Ói)Ûi)ã¤)ã¤)Ó)Û‰)Ó‰)Û‰)㤡)㤡)Ó¡)Û©)Zd,©)Ó©)ÛÁ)ã¤Á)ÓÁ)ÛÉ)Z˜1É)ÓÉ)Ûá)ã¤á)Óá)Ûã)za„é)ZÞ^é)Óé)Û*ã¤*Ó*Û *Z=_ *Ó *Û!*ã¤!*Ó!*Û#*za„)*Z—_)*Ó)*ÛA*ã¤A*ÓA*ÛI*Z¨_I*ÓI*Ûa*ã¤a*Óa*Ûi*Z`i*Ói*Û*ã¤*Ó*Û‰*Zw`‰*Ó‰*Û¡*㤡*Ó¡*Û£*za„©*ZÖ`©*Ó©*ÛÁ*ã¤Á*ÓÁ*ÛÉ*Z7aÉ*ÓÉ*Ûá*ã¤á*Óá*Ûé*Zœaé*Óé*Û+ã¤+Ó+Û +Zb +Ó +Û!+ã¤!+Ó!+Û)+Zpb)+Ó)+ÛA+ã¤A+ÓA+ÛI+ZÒbI+ÓI+Ûa+ã¤a+Óa+Ûi+Z8ci+Ói+Û+ã¤+Ó+Ûƒ+âƒ+z¹‰+Zªc‰+Ó‰+Û¡+㤡+Ó¡+Û©+Zd©+Ó©+ÛÀ+ÓÁ+ã¤Á+ÓÁ+ÛÉ+ZvdÉ+ÓÉ+Ûà+Óá+ã¤á+Óá+Ûé+ZÎdé+Óé+Û,Ó,ã¤,Ó,Û ,Z(e ,Ó ,Û ,Ó!,ã¤!,Ó!,Û),Z…e),Ó),Û@,ÓA,ã¤A,ÓA,ÛI,ZßeI,ÓI,Û`,Óa,ã¤a,Óa,Ûi,Zðei,Ói,Û,ã¤,Ó,Û‰,ZNf‰,Ó‰,Û¡,㤡,Ó¡,Û©,Zd,©,Ó©,ÛÀ,ÓÁ,ã¤Á,ÓÁ,ÛÃ,za„É,Z˜1É,ÓÉ,Ûà,Óá,ã¤á,Óá,Ûã,z¹é,ZÞ^é,Óé,Û-Ó-Û-ã¤-Ó-Û -Z=_ -Ó -Û -‚Ë!-ã¤!-Ó!-Û)-Z—_)-Ó)-Û@-‚öA-ã¤A-ÓA-ÛI-Z¨_I-ÓI-Û`-Ó`-Ûa-ã¤a-Óa-Ûc-z¹i-Z`i-Ói-Û€-Ó€-Û-ã¤-Ó-Û‰-Zw`‰-Ó‰-Û -Ó -Û¡-㤡-Ó¡-Û©-ZÖ`©-Ó©-ÛÀ-ÓÉ-Z7aÉ-ÓÉ-Ûà-Óé-Zœaé-Óé-Û.Ó .Zb .Ó .Û .Ó).Zpb).Ó).Û@.ÓI.ZÒbI.ÓI.Û`.Ói.Z8ci.Ói.Û‰.Zªc‰.Ó‰.Û£.z¹©.Zd©.Ó©.ÛÉ.ZvdÉ.ÓÉ.Ûà.Óá.bé.ZÎdé.Óé.Û/Ó /Z(e /Ó /Û)/Z…e)/Ó)/Û@/Ó@/ÛI/ZßeI/ÓI/Û`/‚Ëi/Zðei/Ói/Û€/Ó€/Û‰/ZNf‰/Ó‰/Û /‚öÀ/ÓÀ/Ûà/Óà/Û0Ó0Û 0Ó 0Û@0Ó@0ÛI0‚¶3`0Óa0ã¤a0Óa0Ûi0‚Ã3€0Óƒ0:ƒ0Šƒ0z‰0‚¶3 0Ó£0:£0Š£0zÀ0ÓÁ0Á0ªÃ0:Ã0ŠÃ0zà0Ó1Ó 1‚¶3 1Ó#1:#1Š#1z)1‚Ã3@1ÓI1‚Ð31㤃1z¹¡1㤣1Ò£1ê£1zJAÁ1ã¤á1ã¤ã1+Æ¢2ã¤2+£2J!2ã¤#2+g£32J32RA2ã¤A2ÓA2ÛI2ÓI2ÛI2ã¤d2²i2Ói2Ûi2㤉2‚Ð3 2º%? 2Ó£2za„¤2²é2‚¶3 3‚Ã3)3‚Ð3I3‚cXi3‚¶3‰3‚Ã3“3J©3Ó©3Û©3ã¤Ä3²É3Z†É3ÓÉ3Û4²D4²„4²á42á4ã¤é4ú€é4z€525ã¤5² 5z€!52!5ã¤A52A5ã¤a52a5ã¤i5z€525㤄5²‰5z€¡52¡5㤩5z€Á52Á5ã¤É5ÓÉ5ÛÉ5ã¤á52á5ã¤ä5²é5Óé5Ûé5ã¤626㤠6Ó 6Û 6ã¤!62!6ã¤$6²)6Ó)6Û)6ã¤I6Z†I6ÓI6Ûd6²i6Zëi6Ói6Û‰6Z‡‰6Ó‰6Û¡6ú€¡6㤩6Z†©6Ó©6ÛÁ6ã¤Á6ÓÁ6ÛÉ6ZëÉ6ÓÉ6Ûé6Z‡é6Óé6Û 7z€#7z¹)7z€I7z€ƒ7za„ 7Ó 7ÛÀ7‚ËÉ7z€à7‚öé7z€8‚Í8za„ 8z€ 8Ó 8Û#8za„)8z€@8Ó@8ÛC8za„D8²I8z€`8Ó`8Ûi8‚¶3€8Ó€8Û„8²‰8‚Ã3 8Ó 8Û©8‚Ð3À8ÓÀ8ÛÄ8²É8‚¶3à8Óà8Ûé8Óé8Ûé8ã¤9Ó9Û 9Z† 9Ó 9Û 9Ó 9Û$9²)9ZvV)9Ó)9Û@9Ó@9ÛI9ÓI9ÛI9ã¤`9Ó`9Ûd9²i9Z†i9Ói9Û€9Ó€9Û‰9‚¶3 9Ó 9Û¤9²©9‚Ã3À9ÓÀ9ÛÉ9‚Ð3à9Óà9Ûä9²:Ó:Û :Ó :Û$:²@:Ó@:Û`:Ó`:Û‰:z€À:kÉ:z€à:sé:z€;za„ ;‚¶3);‚Ã3C;za„I;‚Ð3‰;z€©;z€Ã;za„É;ÓÉ;ÛÉ;ã¤é;Z†é;Óé;Û<za„ <ZvV <Ó <Û)<Z‡V)<Ó)<ÛI<ÓI<ÛI<ã¤i<Ói<Ûi<㤉<Ó‰<Û‰<㤠<º%?©<Ó©<Û©<ã¤À<ºžDÉ<ÓÉ<ÛÉ<ã¤é<z€ =z€)=z€I=z€i=Ói=Ûi=ã¤=ã¤=Ó=Û‰=Ó‰=Û‰=㤣=za„©=Ó©=Û©=ã¤Á=ã¤Á=ÓÁ=ÛÉ=ÓÉ=ÛÉ=ã¤á=ã¤á=Óá=Ûã=za„é=Óé=Ûé=㤠>Ó >Û >ã¤)>Ó)>Û)>ã¤I>ÓI>ÛI>ã¤i>Z†i>Ói>Û‰>Zë‰>Ó‰>Û©>Zô<©>Ó©>ÛÉ>Z‡É>ÓÉ>Ûé>Z$é>Óé>Û ?Zd, ?Ó ?Û#?za„)?Z†)?Ó)?ÛI?ZëI?ÓI?Ûi?Zô<i?Ói?Û‰?Z‡‰?Ó‰?Û©?Z$©?Ó©?ÛÉ?Zd,É?ÓÉ?Ûé?Óé?Ûé?ã¤@ã¤@Ó@Û @Ó @Û @ã¤)@Ó)@Û)@ã¤C@za„I@ÓI@ÛI@ã¤i@Ói@Ûi@㤉@Ó‰@Û‰@㤩@Ó©@Û©@ã¤Á@ã¤Á@ÓÁ@ÛÉ@ÓÉ@ÛÉ@ã¤é@Óé@Ûé@㤠AZ† AÓ AÛ)AZë)AÓ)AÛIAZ‡IAÓIAÛcAza„iAZ$iAÓiAÛAã¤AÓAÛ‰AZc[‰AÓ‰AÛ AÓ AÛ£Aza„©AZ†(©AÓ©AÛÀA‚ËÉAZÉAÓÉAÛàA‚öáAã¤áAÓáAÛéAZ˜1éAÓéAÛB‚Í BZ† BÓ BÛ BÓ BÛ)BZë)BÓ)BÛ@BÓ@BÛIBZ‡IBÓIBÛ`BÓ`BÛiBZ$iBÓiBÛ€BÓ€BÛ‰BZc[‰BÓ‰BÛ BÓ BÛ©BZ†(©BÓ©BÛÀBÓÀBÛÉBZÉBÓÉBÛàBÓàBÛéBZ˜1éBÓéBÛCÓCÛ Cz€ CÓ CÛ)Cz€@CÓ@CÛICz€`CÓ`CÛiCz€€CÓ€CÛ‰Cz€ CÓ CÛ©Cz€ÀCÓÀCÛÉCz€àCÓàCÛ@Dk`Ds€Eº%?áEã¤áEÓáEÛ Fz€!Fã¤!FÓ!FÛ#FÊ#Fš‰#Fz¹)Fz€AFã¤AFÓAFÛIFz€cFš‰cFz¹iFz€ƒFš‰ƒFz¹‰Fz€©Fz€ÁFã¤ÁFÓÁFÛÉFz€éFz€ Gz€#Gš‰#Gz¹AGã¤AGÓAGÛCGzIGz€iGz€‰Gz€©Gz€ÉG‚¶3áGã¤áGÓáGÛéG‚Ã3 H‚Ð3)H‚cXIH‚pXiH‚}X‰H‚ŠX©Hz€ÉHz€éHz€ Iz€)Iz€IIz€iIz€ÉIz€éIz€IJz€Kã¤KÓKÛ!Kã¤!KÓ!KÛ#KÒ#Kê#KzÍH)Kz€AKã¤AKÓAKÛIKz€aKã¤aKÓaKÛiKz€Kã¤KÓKÛ‰Kz€¡K㤡KÓ¡KÛ LÓ)Lz€ILz€iLz€‰Lz€©Lz€ÉLz€éLz€ Mz€)Mz€DM²IMz€iMz€‰Mz€¡M㤡MÓ¡MÛ©Mz€ÉMz€éMz€ Nz€)Nz€¡N㤡NÓ¡NÛ©N‚¶3ÁNã¤ÁNÓÁNÛÉN‚Ã3éN‚¶3Oã¤OÓOÛ O‚Ã3aOã¤aOÓaOÛiOÓiOÛiOã¤Oã¤OÓOÛ‰OÓ‰OÛ‰O㤩OÓ©OÛ©Oã¤ÉOÓÉOÛÉOã¤éOÓéOÛéO㤠PÓ PÛ Pã¤)PÓ)PÛ)Pã¤APã¤APÓAPÛIPZëIPÓIPÛaPã¤aPÓaPÛiPZ‡iPÓiPÛ‰PZë‰PÓ‰PÛ©PZ‡©PÓ©PÛ‰QÓ‰QÛ‰Q㤩QÓ©QÛ©Qã¤ÉQÓÉQÛÉQã¤éQÓéQÛéQ㤠RÓ RÛ Rã¤)RÓ)RÛ)Rã¤IRÓIRÛIRã¤iRúz‰Rúˆ©Rú•ÉRú©ÁT2ÁTã¤áT2áTã¤U2Uã¤Uz4!U2!Uã¤AUã¤aUã¤cUza„U㤃UʃUêƒUzJA¡U㤣UÒ£Uê£UzJAÁUã¤ÁUÓÁUÛÃUza„ƒVz¹£VÒ£Vê£VzÍHWz¹AWã¤AWÓAWÛaWã¤aWÓaWÛiWz€Wã¤WÓWÛ‰Wz€¡W㤡WÓ¡WÛ©Wz€ÁWã¤ÁWÓÁWÛÉWz€éWz€ Xz€!Xã¤!XÓ!XÛ)Xz€AXã¤AXÓAXÛIXz€iXz€Xã¤XÓXÛƒXš‰ƒXz¹‰Xz€©Xz€ÁXã¤ÁXÓÁXÛÉXz€éXz€Yã¤YÓYÛ Yz€!Yã¤!YÓ!YÛ)Yz€IYz€iYz€‰Yz€CZz¹cZÒcZêcZzÍHÉZz€àZÓàZÛéZz€[‚Ë [z€ [Ó [Û)[z€@[‚öI[z€`[Ó`[Û€[‚͉[z€ [Ó [Û©[z€À[ÓÀ[Ûà[Ó\Ó \Ó@\Ó`\Ó€\Ó€\Û‰\bΉ\z€ \Ó \Û©\bΩ\z€À\ÓÀ\ÛÉ\bÎÉ\z€à\Óà\Ûé\bÎé\z€]Ó]Û ]bÎ ]z€ ]Ó ]Û)]z€@]Ó@]Û`]Ó`]Û€]Ó€]Ûƒ]z¹ ]Ó ]Û£]Ò£]ê£]zJAÀ]ÓÀ]Ûà]‚Ë^Ó^Û^z ^‚ö#^Ê#^ê#^zJA@^Ó@^Û`^‚Í€^Ó€^Û ^Ó ^ÛÀ^ÓÀ^Ûà^Óà^Û_Ó_Û _Ó _Û@_Ó@_Û`_Ó`_Û€_Ó€_Û _Ó _ÛÀ_ÓÀ_Ûà_Óà_Û`Ó`Û `Ó `Û@`Ó@`Û``Ó``Û€`Ó€`Û `Ó `ÛÀ`ÓÀ`Ûà`Óà`ÛaÓaÛ aÓ aÛ@aÓ@aÛ`aÓ`aÛ€aÓ€aÛ„a² aÓ aÛ£aza„ÀaÓÀaÛÄa²àaÓàaÛbÓbÛ bÓ bÛ!bã¤!bÓ!bÛ@bÓ@bÛDb²`bÓ`bÛ¤b²cz¹#cÒ#cê#czJAcc+úƒc+a£c+Ãc+Ïãc+,£dÒ£dê£dzJAãd+De+¥#e+>Aeã¤AeÓAeÛCe+±aeã¤aeÓaeÛce+;ƒe+ fã¤fÓfÛ fÓ fÛ@f‚Ë`fÓ`fÛcfz¹€f‚ö fÓ fÛÀf‚ÍÁfã¤ÁfÓÁfÛÃfz¹àfÓàfÛáfã¤áfÓáfÛãfz¹g‚½ gÓ gÛ@gÓ@gÛ`gÓagã¤agÓagÛ€gÓgã¤gÓgÛ gÓÀgÓàgÓhÓhÛhã¤hÓhÛ hÓ hÛ!hã¤!hÓ!hÛ@hÓ@hÛAhã¤AhÓAhÛ`hÓ`hÛ€hÓ€hÛ hÓ hÛÀhÓÀhÛàhÓàhÛãhâãhz¹iÓiÛiz¹ iÓ iÛ@iÓ@iÛCiz¹`iÓ`iÛciÒciêcizÍH€iÓ€iÛ iÓ iÛÀiÓÀiÛÃiz¹àiÓàiÛãiz¹jÓjÛ jÓ jÛ@jÓ@jÛCjza„`jÓ`jÛ€jÓ€jÛ jÓ jÛ£jza„Ãjza„àjÓàjÛãjza„k‚Ëkza„ kÓ kÛ!kã¤!kÓ!kÛ#kza„@k‚öCkz¹`kÓ`kÛ€k‚Í kÓ kÛÀk‚½ àkÓàkÛl‚% lÓ lÛ@l‚…*Alã¤AlÓAlÛ`lÓ`lÛ€l‚X/lã¤lÓlÛ lÓ lÛ¡l㤡lÓ¡lÛÀl‚ÿ[àlÓàlÛm‚ \mã¤mÓmÛ mÓ mÛ!mã¤!mÓ!mÛ@m‚"\`mÓ`mÛ€m‚7\mã¤mÓmÛ mÓ mÛ¡m㤡mÓ¡mÛÀm‚D\Ámã¤ÁmÓÁmÛàmÓàmÛámã¤ámÓámÛn‚Q\ nÓ nÛ@n‚^\`nÓ`nÛ€n‚t\ nÓ nÛÀn‚\ànÓànÛo‚Ž\ oÓ oÛ!oã¤!oÓ!oÛ@o‚›\Aoã¤AoÓAoÛCoš‰CoÊCoz¹`oÓ`oÛaoã¤aoÓaoÛcoš‰coz¹€o‚±\oã¤oÓoÛ oÓ oÛÀo‚Æ\àoÓàoÛáoã¤áoÓáoÛãoÒãoêãozÍHp‚Ó\pã¤pÓpÛpza„ pÓ pÛ!pã¤!pÓ!pÛ@p‚à\Apã¤ApÓApÛ`pÓ`pÛ€p‚í\„p² pÓ pÛ¤p²Àp‚ú\àpÓàpÛäp²q‚]qš‰qÊqz¹ qÓ qÛ@q‚]`qÓ`qÛ€q‚!]ƒqš‰ƒqz¹ qÓ qÛ¤q²Àq‚.]àqÓàqÛãqÒãqêãqzÍHäq²r‚;]rza„ rÓ rÛ@r‚H]Dr²`rÓ`rÛ€r‚U]„r² rÓ rÛÀr‚b]àrÓàrÛs‚o]sš‰sÊsz¹ sÓ sÛ#sš‰#sÊ#sz¹@s‚|]`sÓ`sÛcsš‰csÊcsz¹€s‚’]„s² sÓ sÛ£sš‰£sÊ£sz¹Às‚Ÿ]àsÓàsÛãsš‰ãsÊãsz¹tÓtÛt² tÓ@tÓ`tÓ€tÓƒtʃtš‰ƒtz¹ tÓ¡t㤡tÓ¡tÛ¤t²ÀtÓÀtÛÁtã¤ÁtÓÁtÛàtÓàtÛuÓuÛuã¤uÓuÛ uÓ uÛ!uã¤!uÓ!uÛ@uÓ@uÛ`uÓ`uÛdu²€uÓ€uÛuã¤uÓuÛ uÓ uÛ¡uã¤ÀuÓÀuÛÁuã¤Äu²àuÓàuÛáuã¤vÓvÛ vÓ vÛ!vã¤!vÓ!vÛ$v²@vÓ@vÛ`vÓ`vÛcvza„€vÓ€vÛ vÓ vÛÀvÓÀvÛàvÓàvÛwÓwÛ wÓ wÛ#wza„@wÓ@wÛCwza„`wÓ`wÛcwza„€wÓ€wÛƒwza„ wÓ wÛÀwÓÀwÛàwÓàwÛxÓxÛxã¤xÓxÛ xÓ xÛ!xã¤!xÓ!xÛ@xÓ@xÛAxã¤AxÓAxÛ`xÓ`xÛ€xÓ€xÛxã¤xÓxÛƒxza„ xÓ xÛ¡x㤡xÓ¡xÛ£xza„ÀxÓÀxÛÁxã¤ÁxÓÁxÛàxÓàxÛáxã¤áxÓáxÛyÓyÛyã¤yÓyÛy² yÓ yÛ!yã¤!yÓ!yÛ@yÓ@yÛAyã¤AyÓAyÛ`yÓ`yÛayã¤ayÓayÛcyza„€yÓ€yÛyã¤yÓyÛƒyza„ yÓ yÛ¡y㤡yÓ¡yÛ£yza„ÀyÓÀyÛÁyã¤ÁyÓÁyÛÃyÊÃyz¹Äy²àyÓàyÛáyã¤áyÓáyÛãy ãyêãyÒãyzzÓzÛzã¤zÓzÛzza„z² zÓ zÛ!zã¤!zÓ!zÛ#zza„@zÓ@zÛAzã¤AzÓAzÛCzza„Dz²`zÓ`zÛazã¤azÓazÛczÒczêczzJA€zÓ€zÛ„z² zÓ zÛ¤z²ÀzÓÀzÛÄz²àzÓàzÛãzz{Ó{Û{ã¤{Ó{Û{:{z{² {Ó {Û!{ã¤!{Ó!{Û#{:#{z@{Ó@{ÛA{ã¤A{ÓA{ÛD{²`{Ó`{Ûa{ã¤a{Óa{Û€{Ó€{Û{ã¤{Ó{Û„{² {Ó {Û¡{㤡{Ó¡{Û£{za„À{ÓÀ{ÛÁ{ã¤Á{ÓÁ{Ûà{Óà{Ûá{ã¤á{Óá{Û|Ó|Û|ã¤|Ó|Û |Ó |Û!|ã¤!|Ó!|Û#|za„@|Ó@|ÛA|ã¤A|ÓA|ÛC|za„`|Ó`|Ûa|ã¤a|Óa|Ûc|z¹€|Ó€|Û|ã¤|Ó|Ûƒ|Òƒ|êƒ|zJA |Ó |Û¡|㤡|Ó¡|ÛÀ|ÓÀ|ÛÁ|ã¤Á|ÓÁ|ÛÃ|+ÿ‡à|Óà|Ûã|+Gˆ}Ó}Û}+£ˆ }Ó }Û@}Ó@}Û`}Ó`}Û€}Ó€}Ûƒ}z }Ó }Û¡}㤡}Ó¡}Û£}zÀ}ÓÀ}ÛÁ}ã¤Á}ÓÁ}Ûà}Óà}Ûá}ã¤á}Óá}Û~Ó~Û~ã¤~Ó~Û~:~z ~Ó ~Û!~ã¤!~Ó!~Û#~z@~Ó@~ÛA~ã¤A~ÓA~Û`~Ó`~Ûa~ã¤a~Óa~Û€~Ó€~Û~ã¤~Ó~Ûƒ~z¹ ~Ó ~Û¡~㤡~Ó¡~Û£~za„À~ÓÀ~ÛÃ~:Ã~zà~Óà~Ûã~Òã~êã~zJAÓÛ Ó Û#B#z@Ó@ÛCza„`Ó`Ûcza„€Ó€Ûƒza„ Ó Û£za„ÀÓÀÛÃza„àÓàÛãza„€Ó€Û €Ó €Û!€ã¤!€Ó!€Û#€za„A€ã¤A€ÓA€ÛC€za„a€ã¤a€Óa€Ûc€:c€zƒ€:ƒ€z£€za„Á€ã¤Á€ÓÁ€Ûá€ã¤ã€za„ã¤z¹!ã¤#za„Aã¤AÓAÛCz¹cza„ƒza„¡ã¤£za„Áã¤Ãza„á㤂㤂š‰‚z¹!‚ã¤A‚ã¤C‚š‰C‚ÊC‚z¹a‚㤂㤡‚㤡‚Ó¡‚Ûƒz¹#ƒz¹Cƒz¹ƒƒâƒƒz¹£ƒâ£ƒz¹a„㤄㤃„z¹¡„㤣„zÄBÄzã„z…z#…B#…zC…BC…zƒ…za„£…za„ã…za„†za„C†za„c†za„£†za„Á†ã¤Á†ÓÁ†ÛÆza„á†ã¤á†Óá†Û‡za„!‡ã¤!‡Ó!‡Û#‡za„A‡ã¤A‡ÓA‡Ûc‡za„‡ã¤‡Ó‡Ûƒ‡za„¡‡ã¤¡‡Ó¡‡ÛÇza„á‡ã¤á‡Óá‡Ûã‡za„ˆã¤ˆÓˆÛ#ˆza„Aˆã¤AˆÓAˆÛCˆza„aˆã¤aˆÓaˆÛƒˆza„¡ˆã¤¡ˆÓ¡ˆÛ£ˆza„Áˆã¤ÁˆÓÁˆÛãˆza„‰ã¤‰Ó‰Û‰za„!‰ã¤!‰Ó!‰Û#‰za„C‰za„a‰ã¤a‰Óa‰Ûc‰za„s‰Jƒ‰za„“‰J£‰za„Á‰ã¤Á‰ÓÁ‰ÛÉza„Ó‰Jã‰za„Šza„ŠJ!Šã¤!ŠÓ!ŠÛ#Šza„3ŠJCŠza„cŠza„Šã¤ŠÓŠÛƒŠza„áŠã¤áŠÓáŠÛãŠz‹ã¤‹Ó‹ÛA‹ã¤A‹ÓA‹Ûa‹ã¤a‹Óa‹Û¡‹ã¤¡‹Ó¡‹ÛÁ‹ã¤Á‹ÓÁ‹ÛŒã¤ŒÓŒÛ!Œã¤!ŒÓ!ŒÛaŒã¤aŒÓaŒÛŒã¤ŒÓŒÛ¡Œã¤¡ŒÓ¡ŒÛÁŒã¤ÁŒÓÁŒÛz Ó£záã¤áÓáÛŽÓŽÛŽã¤ŽÓŽÛ Ž‚Ë!Žã¤!ŽÓ!ŽÛ@ŽÓ@ŽÛAŽã¤CŽzaŽã¤Žã¤¡Žã¤¡ŽÓ¡ŽÛÁŽã¤ÁŽÓÁŽÛáŽã¤áŽÓáŽÛãŽzã¤ÓÛ@Ó º%?¡ã¤¡Ó¡ÛÁã¤ÁÓÁÛÃzáã¤áÓáÛ@ÓAã¤AÓAÛcz¡ã¤¡Ó¡ÛÁã¤ÁÓÁÛáã¤áÓáۑ㤑ӑۑz!‘ã¤!‘Ó!‘ÛA‘ã¤A‘ÓA‘Ûa‘ã¤a‘Óa‘Û€‘‚Ë ‘Ó ‘Û¡‘㤡‘Ó¡‘Û£‘zÀ‘ÓÀ‘ÛÁ‘ã¤Á‘ÓÁ‘Ûà‘Óà‘ے㤒ӒÛ!’ã¤!’Ó!’ÛA’ã¤A’ÓA’ÛC’za’ã¤a’Óa’ے㤒Ӓۡ’㤡’Ó¡’ÛÁ’ã¤Á’ÓÁ’Ûá’ã¤á’Óá’Ûã’z“㤓ӓÛ!“ã¤!“Ó!“ÛA“ã¤A“ÓA“ÛÁ“ã¤Á“ÓÁ“Ûá“ã¤á“Óá“۔㤔ӔÛ!”ã¤!”Ó!”ÛA”ã¤A”ÓA”۔㤔Ӕۡ”㤡”Ó¡”Û•z£•zá•ã¤á•Óá•ۖ㤖ӖÛ!–ã¤!–Ó!–ÛA–ã¤A–ÓA–ÛC–za–ã¤a–Óa–ۖ㤖Ӗۡ–㤡–Ó¡–ÛÁ–ã¤Á–ÓÁ–Ûá–ã¤á–Óá–Ûã–zA—ã¤A—ÓA—Ûa—ã¤a—Óa—ۗ㤗ӗۃ—z¡—㤡—Ó¡—ÛÁ—ã¤Á—ÓÁ—Û!˜ã¤!˜Ó!˜Û#˜zA˜ã¤A˜ÓA˜Ûa˜ã¤a˜Óa˜Û˜ã¤˜Ó˜Û¡˜ã¤¡˜Ó¡˜ÛÁ˜ã¤Á˜ÓÁ˜ÛØzá˜ã¤á˜Óá˜Ûa™ã¤a™Óa™Ûc™z™ã¤™Ó™Ûšzašã¤ašÓašÛšã¤šÓšÛ¡šã¤¡šÓ¡šÛ£šzÁšã¤ÁšÓÁšÛášã¤ášÓášÛ›Ó›ã¤›Ó›Û ›Ó!›ã¤!›Ó!›ÛA›ã¤A›ÓA›Ûa›ã¤a›Óa›Û›ã¤›Ó›Ûƒ›z¹¡›ã¤¡›Ó¡›Û£›z¹Á›ã¤Á›ÓÁ›ÛÛz¹á›ã¤á›Óá›Ûã›z¹œzœz œz#œz¹CœBCœzƒœza„£œB£œzáœã¤áœÓáœÛãœza„ã¤ÓÛza„²!ã¤!Ó!Û#B#z$²Aã¤AÓAÛCza„SJaã¤aÓaÛcza„sJsRã¤ÓÛƒza„“J¡ã¤¡Ó¡Û³J³RÀŠ8€Áã¤ÁÓÁÛÃBÃzIJÓJàŠœáã¤áÓáÛä²óJóRžã¤žÓžÛžza„žJ žÓ!žã¤!žÓ!žÛ#žza„$ž²3žJ3žR@žŠ7‚Ažã¤AžÓAžÛCžza„SžJ`žŠU‚ažã¤ažÓažÛcžza„sžJsžR€žŠt‚žã¤žÓžÛƒžz¹“žJ“žR žº%? žŠš‚£žza„³žJÀžº%?ÀžŠ§‚Ážã¤Þza„ÓžJàžŠÏ‚ážã¤ãžza„óžJóžRŸŠÛ‚Ÿã¤Ÿza„ ŸŠè‚!Ÿã¤#Ÿza„@ŸŠõ‚AŸã¤CŸza„aŸã¤cŸza„€ŸŠƒŸã¤ƒŸza„ ŸŠ#ƒ¡Ÿã¤£Ÿza„ÀŸŠ6ƒÁŸã¤ßza„àŸŠHƒáŸã¤ãŸza„ Šjƒ ã¤ za„  Š‚ƒ! ã¤! Ó! Û# za„@ Š­ƒA ã¤C za„a ã¤c za„ ã¤ Ó Ûƒ za„¡ ã¤£ za„Á ã¤àzá ã¤ã za„¡ã¤¡za„!¡ã¤#¡zA¡ã¤C¡za¡ã¤c¡z¡ã¤¡¡ã¤Á¡ã¤á¡ã¤¢ã¤!¢ã¤A¢ã¤C¢za¢ã¤¢ã¤¡¢ã¤Á¢ã¤á¢ã¤£ã¤!£ã¤A£ã¤a£ã¤£ã¤¡£ã¤Á£ã¤á£ã¤¤ã¤!¤ã¤A¤ã¤a¤ã¤a¤Óa¤Û£¤z¥º%?¥ŠL† ¥Ó@¥º%?@¥Š³†`¥º%?`¥Šô†€¥º%?€¥ŠB‡ ¥ºœ‡ ¥Š±‡À¥º%?À¥ŠÕ‡Á¥ã¤Á¥ÓÁ¥Ûॺ%?ॊô‡¦Š/ˆ ¦º%? ¦Špˆ@¦º%?@¦Š‰#§z¨ã¤¡¨ã¤Á¨ã¤á¨ã¤©ã¤!©ã¤A©ã¤a©ã¤©ã¤ƒ©z¡©ã¤Á©ã¤á©ã¤ªã¤!ªã¤Aªã¤aªã¤ªã¤¡ªã¤Áªã¤áªã¤«ã¤!«ã¤!«Ó!«Ûã«z¹¬z#¬za„C¬za„a¬ã¤c¬z¬ã¤ƒ¬z£¬zÀ¬º%?À¬ŠL†Ã¬z¹଺%?ଊô†ã¬z­º%?­ŠB‡­z¹ ­º%? ­Š³†#­z¹@­ºœ‡@­Š±‡C­z¹`­º%?`­ŠÕ‡c­z¹€­Š/ˆ ­º%? ­ŠpˆÀ­º%?À­Š‰Ã­za„®za„A®ã¤a®ã¤„®²ã®z¹@°º%?`°º%?a²ã¤a²Óa²Û²ã¤²Ó²Û¡²ã¤¡²Ó¡²ÛÁ²ã¤Á²ÓÁ²Û€³º¬;€³Š»• ³º%? ³Šû•!´ã¤!´Ó!´ÛA´ã¤A´ÓA´Ûá´ã¤á´Óá´Ûµã¤µÓµÛÁµã¤ÁµÓÁµÛáµã¤áµÓáµÛÁ¶ã¤Á¶ÓÁ¶Ûá¶ã¤á¶Óá¶ÛÁ¸ã¤Á¸ÓÁ¸Ûá¸ã¤á¸Óá¸Û¹º~˜¹Š˜¹ã¤¹Ó¹Û ¹º%? ¹Š˜@¹º~˜@¹Šט`¹º%?€¹º%?€¹Šü˜ ¹º%? ¹Š+™Á¹ã¤Á¹ÓÁ¹Ûá¹ã¤á¹Óá¹Ûºã¤ºÓºÛ»ã¤»Ó»Û¡»ã¤¡»Ó¡»Û!¼ã¤!¼Ó!¼ÛA¼ã¤A¼ÓA¼Ûa¼ã¤a¼Óa¼Û¼ã¤¼Ó¼ÛA½ã¤A½ÓA½Ûa½ã¤a½Óa½Ûá½ã¤á½Óá½Û¿šÀÀºœ‡@ÁÓ`ÁÓ€ÁÓ ÁÓÂã¤ÂÓÂÛÂã¤ÂÓÂÛ¡Â㤡ÂÓ¡ÂÛÁÂã¤ÁÂÓÁÂÛáÂã¤áÂÓáÂÛÃã¤ÃÓÃÛaÄã¤aÄÓaÄÛÁÄã¤ÁÄÓÁÄÛáÄã¤áÄÓáÄÛÅã¤ÅÓÅÛ!Åã¤!ÅÓ!ÅÛÁÅšÈã¤ÈÓÈÛ!Èã¤!ÈÓ!ÈÛÀȺZ àȺZ Éº%?€Éº%? Éº%?Àɺ%?àɺ%?ʺ%?`ʺ%?aÊã¤aÊÓaÊۀʺ%? Êº%?Àʺ%?àÊÓàÊÛË‚Ë ËÓ ËÛ@Ë‚ö`ËÓ`Ëۀ˂͠ËÓ ËÛÀËÓÀËÛàËÓàËÛÌÓÌÛ ÌÓ ÌÛ@ÌÓ@ÌÛ`ÌÓ`ÌÛ€ÌÓ€ÌÛ ÌÓ ÌÛÀÌÓÀÌÛàÌÓàÌÛÍÓÍÛ ÍÓ ÍÛ@ÍÓ@ÍÛÎã¤ÎÓÎÛ!Îã¤!ÎÓ!ÎÛAÎã¤AÎÓAÎÛaÎã¤aÎÓaÎÛÎã¤ÎÓÎÛÏã¤ÏÓÏÛ!Ïã¤!ÏÓ!ÏÛAÏã¤AÏÓAÏÛaÏã¤aÏÓaÏÛÏã¤ÏÓÏÛ¡Ï㤡ÏÓ¡ÏÛ!Ðã¤!ÐÓ!ÐÛAÐã¤AÐÓAÐÛaÐã¤aÐÓaÐÛÐã¤ÐÓÐÛ¡Ð㤡ÐÓ¡ÐÛÁÐã¤ÁÐÓÁÐÛAÑã¤AÑÓAÑÛaÑã¤aÑÓaÑÛÑã¤ÑÓÑÛ¡Ñ㤡ÑÓ¡ÑÛÁÑã¤ÁÑÓÁÑÛáÑã¤áÑÓáÑÛaÒã¤aÒÓaÒÛÒã¤ÒÓÒÛ¡Ò㤡ÒÓ¡ÒÛÁÒã¤ÁÒÓÁÒÛáÒã¤áÒÓáÒÛÓã¤ÓÓÓÛÓã¤ÓÓÓÛ¡Ó㤡ÓÓ¡ÓÛÁÓã¤ÁÓÓÁÓÛáÓã¤áÓÓáÓÛÔã¤ÔÓÔÛ!Ôã¤!ÔÓ!ÔÛ¡Ô㤡ÔÓ¡ÔÛÁÔã¤ÁÔÓÁÔÛáÔã¤áÔÓáÔÛÕã¤ÕÓÕÛ!Õã¤!ÕÓ!ÕÛAÕã¤AÕÓAÕÛÁÕã¤ÁÕÓÁÕÛáÕã¤áÕÓáÕÛÖã¤ÖÓÖÛ!Öã¤!ÖÓ!ÖÛAÖã¤AÖÓAÖÛaÖã¤aÖÓaÖÛ€ÖÓ ÖÓàÖÓáÖã¤áÖÓáÖÛ×ã¤×Ó×Û!×ã¤!×Ó!×ÛA×ã¤A×ÓA×Û`×Óa×ã¤a×Óa×Û×ã¤×Ó×Û ×ÓØã¤ØÓØÛ!Øã¤!ØÓ!ØÛ@ØÓAØã¤AØÓAØÛ`ØÓaØã¤aØÓaØÛØã¤ØÓØÛ¡Øã¤¡ØÓ¡ØÛ!Ùã¤!ÙÓ!ÙÛAÙã¤AÙÓAÙÛaÙã¤aÙÓaÙÛÙã¤ÙÓÙÛ¡Ù㤡ÙÓ¡ÙÛÁÙã¤ÁÙÓÁÙÛáÙã¤áÙÓáÙÛÚã¤ÚÓÚÛ!Úã¤!ÚÓ!ÚÛAÚã¤AÚÓAÚÛaÚã¤aÚÓaÚÛáÚã¤áÚÓáÚÛÛã¤ÛÓÛÛ!Ûã¤!ÛÓ!ÛÛAÛã¤AÛÓAÛÛaÛã¤aÛÓaÛÛÛã¤ÛÓÛÛ¡Û㤡ÛÓ¡ÛÛÁÛã¤ÁÛÓÁÛÛáÛã¤áÛÓáÛÛÜã¤ÜÓÜÛÜã¤ÜÓÜÛ¡Ü㤡ÜÓ¡ÜÛÁÜã¤ÁÜÓÁÜÛáÜã¤áÜÓáÜÛÝã¤ÝÓÝÛ¡Ý㤡ÝÓ¡ÝÛÁÝã¤ÁÝÓÁÝÛáÝã¤áÝÓáÝÛÞã¤ÞÓÞÛ!Þã¤!ÞÓ!ÞÛAÞã¤AÞÓAÞÛßã¤ßÓßÛ!ßã¤!ßÓ!ßÛAßã¤AßÓAßÛaßã¤aßÓaßÛÁßã¤ÁßÓÁßÛAàã¤AàÓAàÛaàã¤aàÓaàÛàã¤àÓàÛ¡à㤡àÓ¡àÛÁàã¤ÁàÓÁàÛáàã¤áàÓáàÛáã¤áÓáÛ!áã¤!áÓ!áÛaáã¤aáÓaáÛáã¤áÓáÛÁáã¤ÁáÓÁáÛááã¤ááÓááÛ!âã¤!âÓ!âÛAâã¤AâÓAâÛâã¤âÓâÛ¡â㤡âÓ¡âÛÁâã¤ÁâÓÁâÛáâã¤áâÓáâÛ!ãã¤!ãÓ!ãÛAãã¤AãÓAãÛãã¤ãÓãÛ¡ã㤡ãÓ¡ãÛáãã¤áãÓáãÛäã¤äÓäÛAäã¤AäÓAäÛaäã¤aäÓaäÛ¡ä㤡äÓ¡äÛÁäã¤ÁäÓÁäÛåã¤åÓåÛ!åã¤!åÓ!åÛAåã¤AåÓAåÛaåã¤aåÓaåÛåã¤åÓåÛ¡å㤡åÓ¡åÛÁåã¤ÁåÓÁåÛáåã¤áåÓáåÛ!æã¤!æÓ!æÛAæã¤AæÓAæÛæã¤æÓæÛ¡æã¤¡æÓ¡æÛáæã¤áæÓáæÛçã¤çÓçÛAçã¤AçÓAçÛaçã¤açÓaçÛ¡ç㤡çÓ¡çÛÁçã¤ÁçÓÁçÛèã¤èÓèÛ!èã¤!èÓ!èÛaèã¤aèÓaèÛèã¤èÓèÛÁèã¤ÁèÓÁèÛáèã¤áèÓáèÛ!éã¤!éÓ!éÛAéã¤AéÓAéÛéã¤éÓéÛ¡é㤡éÓ¡éÛÁéã¤ÁéÓÁéÛáéã¤áéÓáéÛaíã¤aíÓaíÛíã¤íÓíÛ¡í㤡íÓ¡íÛáíã¤áíÓáíÛîã¤îÓîÛAîã¤AîÓAîÛaîã¤aîÓaîÛ¡î㤡îÓ¡îÛÁîã¤ÁîÓÁîÛïã¤ïÓïÛ!ïã¤!ïÓ!ïÛaïã¤aïÓaïÛïã¤ïÓïÛÁïã¤ÁïÓÁïÛáïã¤áïÓáïÛ!ðã¤!ðÓ!ðÛAðã¤AðÓAðÛðã¤ðÓðÛ¡ð㤡ðÓ¡ðÛñªAñbÎAñã¤añbÎañã¤ñbÎñ㤡ñbΡñã¤ÁñbÎÁñã¤áñã¤òã¤!òã¤Aòã¤aòã¤ò㤡òã¤Áòã¤áòã¤óã¤!óã¤Aóã¤aóã¤ó㤡óã¤Áóã¤áóã¤ôã¤!ôã¤Aôã¤aôã¤ô㤡ôã¤Áôã¤áôã¤õã¤õÓõÛaöã¤öã¤öÓöÛ ö¢ öª öŠ‘½Àö¢ÀöªÀöŠ¢½àö¢àöªàöº%?àöŠÕ‡÷¢÷ª÷º%?÷н ÷¢ ÷ª ÷ºœ‡ ÷Š8€@÷¢@÷ª@÷ŠÛ½`÷¢`÷ª`÷º%?`÷Ší½€÷¢€÷ª€÷Šþ½à÷ŠÚ¿øŠ,À øŠXÀ@øŠŒÀ`øŠÀÀ€øŠôÀ øŠ&ÁÀøŠUÁàøŠ‡ÁùŠºÁ ùŠäÁ@ùŠÂ`ùŠE€ùŠu ùŠ½Â úŠëÄ@úŠÅ`úŠªÅ€úлŠúŠõÆÀúŠ ÇàúŠEÇûŠtÇÀüÓÀüÛàüÓàüÛ ýº%?ÀýŠÌÊàýŠ ËþŠDË þŠË@þŠáË`þŠÌ€þŠNÌ þйÌÀþŠ%ÍàþŠœÍÿŠáÍ ÿŠ>Î@ÿŠiÎ`ÿŠ‘΀ÿŠÂΠÿŠÖÎÀÿŠˆÏàÿŠ¾ÏŠÐ Š,Ð@ŠTÐ`ŠgЀŠõРŠÑÀŠ ÑàŠlÒŠàÒ ŠeÓ@ŠÐÓ`Š)ÔÀŠ|Ôàº%?Š_Õ ŠÖàº%? º%?@º‹×`º~˜€ºžD ºžDÀº%?º%?`Ó`Û€º%? º%?  º%?` º%? º%?À º%?` º%?€º%? ºœ‡àºœ‡€Ó€-‚Ë -Ó -ÛÀ-ÓÀ-Ûà-Óà-Û.Ó.Û .Ó@.Ó`.Ó .ÓÀ.Óà.‚Ë/Ó/Û /Ó /Û@/Ó@/Û`1º%?€1ºœ‡ 1ºœ‡à2º%? 3º%?@3º‹×`3º‹×€3Ó€3Û 3Ó 3ÛÀ3ÓÀ3Ûà3Óà3ÛÀ4Óà4Ó5Ó 5Ó@5Ó€6Ó 6Óà8º%?à8ŠKû9º%?9ŠYû 9ºžD@9ºœ‡@9Šâû`9ºœ‡`9Šü€9ŠU‚ 9Št‚À9º%?À9ŠMüà9º%?à9Šš‚:º%?:Ч‚ :ŠÏ‚@:ŠÛ‚`:Šè‚€:Šõ‚À>ÓÀ>Ûà>º%?€?Ó€?Û ?º%?À?º%?à?ºžD@ºžD@@ºœ‡`@ºœ‡€@ºœ‡ @ºœ‡À@ºœ‡Aºœ‡@AºZ  AºZ BÓ BÓ@BÓ`BºlàBº%?JÓJÛ JÓ@Jº%?àJº2 `Kºœ‡ÀKºžDLº%?Mº%?OºžD Oº%?@Oº%?`Oºœ‡€Oº%? Oº%?àOºœ‡P‚Ë PÓ PÛ@PÓ@PÛ`PÓ`PÛ€PÓ€PÛ PÓ PÛ`QÓ`QÛ€Q‚Ë QÓ QÛÀQ‚öàQÓàQÛRÓRÛ RÓ@RÓ`RÓ€RÓ RÓ \º%?]Ó]Û ]‚Ë@]Ó@]Û`]‚ö€]Ó€]Û ]‚ÍÀ]ÓÀ]Ûà]‚½ ^Ó^Û ^‚%@^Ó@^Û`^‚…*€^Ó€^Û ^Ó ^ÛÀ^ÓÀ^Ûà^Óà^Û_Ó_Û _Ó _Û@_Ó@_Û`_Ó`_Û€_Ó€_Û _Ó _ÛÀ_ÓÀ_Ûà_Óà_Û`Ó`Û `Ó `Û@`Ó@`Û``Ó``Û€`Ó€`Û `Ó `ÛÀ`ÓÀ`Ûà`Óà`ÛaÓaÛ aÓ aÛ@aÓ@aÛ`aÓ`aÛ aÓ aÛÀa‚ËàaÓàaÛb‚ö bÓ bÛ@b‚Í`bÓ`bÛ€b‚½  bÓ bÛÀb‚%àbÓàbÛc‚…* cÓ cÛ@c‚X/`cÓ`cÛ€cÓ€cÛ cÓ cÛÀcÓÀcÛàcÓàcÛdÓdÛ dÓ dÛ@dÓ@dÛ`dÓ`dÛ€dÓ€dÛ dÓ dÛÀdÓÀdÛàdÓàdÛeÓeÛ eÓ eÛ@eÓ@eÛ`eÓ`eÛ€eÓ€eÛ eÓ eÛÀeÓÀeÛàeÓàeÛfÓfÛ fÓ fÛ@fÓ@fÛ`fÓ`fÛ€fÓ€fÛ fÓ fÛÀfÓÀfÛàfÓàfÛgÓgÛ gÓ@gº%?`gº%?@hºœ‡@iº%?àiºœ‡jºœ‡ jº%?@jº%?`jº%?€jº%? jº%?Àjº%?àjº%? kº%? kº%? lº%?@lº%?ÀlºZ àlºžDàpÓ qÓ@rº%?`rº%? rº%?Àrº%?àrÓàrÛsÓsÛ sÓ sÛ@sÓ@sÛ`sÓ`sÛ€sÓ€sÛ sÓ sÛÀsÓÀsÛàsÓàsÛtÓtÛ tÓ tÛ@tÓ@tÛ`tÓ`tÛ€tÓ€tÛàtÓàtÛuÓuÛ uÓ uÛàuº%?vº%? vºl@vº%?`vºl€vº%? wº%?`wºžD wº%?Àwº%?àwº%?xº%? xº%?@xº%?`xº%?€xºœ‡ xº%?Àxº%?àxºœ‡yº%? yº%?@yº%?{ºœ‡@{º%?`{º%? {º%?À{º%?à{Óà{Û|ºœ‡ |º%? |º%?À|ºžDà|ºžD}Ó }ºœ‡@}Ó`}º%?€}º%? }º%?à}º%?@~º%?€~º%?‚º%?ƒÓƒÛ ƒº))@ƒºœ‡`ƒÓ`ƒÛÀƒÓàƒºžD„Ó„Û „Ó „Û`„Ó`„Û€„Ó€„Û „Ó „ÛÀ„ÓÀ„Ûà„Óà„Û…º%? …º%?@ˆÓ@ˆÛ€ˆº%? ‰Ó ‰Û@‰Ó@‰Û`‰Ó`‰Û€‰Ó€‰Û`ŠÓÀŽÓÀŽÛàŽÓàŽÛà™ŠÀ0šº%?šŠÛ0 šº%? šŠÕ‡@šŠ 1`šº%?`šŠ1€šº%?€šŠ>1 šŠ_1Àšº%?ÀšŠn1àšŠ}1›º%?›Š¥1 ›º ›Šº1@›º%?@›ŠÙ1`›º%?`›Šå1€›º%?€›Šô† ›º%? ›ŠB‡À›ºœ‡À›ŠP2à›ºœ‡à›Šy2œº%?œŠL† œŠ®2@œŠË2`œŠå2€œŠ3 œŠ3ÀœŠ<3àœŠG3º%?ŠR3 º%? Šu3@º%?@Šƒ3`º%?`Š“3€º%?€Š§3 ŠÊ3ÀŠÚ3àº%? žÓ žÛ@žºœ‡`žºœ‡€žºœ‡ žºžDÀžºœ‡Ÿºœ‡ Ÿºœ‡@Ÿº%?`Ÿºœ‡€Ÿºœ‡ Ÿº%?ÀŸº%?àŸºœ‡ ºœ‡  ºžD@ ºœ‡` ºœ‡€ ºžD  ºC9À ºC9à º%? ¡º%?€¢ºœ‡ ¢ºœ‡£ºœ‡@£ºœ‡`£º%?€£º%?`§ŠÀ0€§ºœ‡€§ŠÕ‡ §º%? §Šì>À§º%?À§Š ?৺%?à§Š1¨º%?¨ŠA? ¨º%? ¨Š¥1@¨º%?@¨Š™?`¨º%?`¨Šå?€¨º%?€¨Šå1 ¨º%? ¨Šô†À¨º%?À¨ŠB‡à¨º%?ਊÙ1©º%?©ŠL† ©ºœ‡ ©ŠP2@©ºœ‡@©Šy2`©Š<3€©º%?€©Š—A ©º%? ©ŠÑAÀ©ŠË2੊G3ªŠå2 ªŠ3@ªŠ3`ªº`ªŠº1@«º%?€«ºžD «ºžDÀ«ºžDૺœ‡¬ºœ‡ ¬ºÕD@¬ºC9`¬ºZ €¬ºžDÀ¬ºœ‡à¬ºœ‡­º%? ­º%?@­º%?`­º%?€­º%? ­º%?À­ºœ‡à­ºœ‡ ®ºl ®º%?À®ºœ‡à®º%?¯º%? ¯ºœ‡²ÓÀ³Š–Pೊ£P´Š°P ´Š½P@´ºžD@´ŠïP`´ºZ `´Š>Q€´ºZ €´Š}Q ´ºZ  ´Š½À´ºlÀ´Š8€à´Š–PµŠ£P µŠ°P@µºžD@µŠ½`µºZ `µŠ8€€µºœ‡€µŠïP µºžD µŠ>QÀµºžDÀµŠ}Qൺ%?ൊ¥1¶º%?¶ŠL† ¶º%? ¶ŠS@¶º%?@¶ŠZS`¶ŠlS€¶º%?€¶Š}Q ¶ŠïPÀ¶º%?À¶Š>Qà¶ŠÀ0·º·Šº1 ·ºZ  ·ŠÑS@·ºœ‡`·ºžD ·Š7TÀ·º%?À·ŠvTà·º%?à·Š˜T¸Š®T ¸Š3@¸ŠË2`¸º%?`¸Š¥1€¸º%?€¸ŠL† ¸ºœ‡ ¸ŠeUÀ¸ºœ‡À¸ŠÀUฺœ‡à¸ŠV¹º%?¹ŠS ¹ºœ‡ ¹Š¶V@¹º%?@¹ŠZS€¹º%?€¹Šå1À¹ºœ‡À¹Š©Wºº%?ºŠÙ1@ººœ‡@ºŠ¶W€ºº%?€ºŠå?Àºº%?ÀºŠ™?຺%?ຊ³†»º%?»Šô† »º%? »ŠB‡`»º%?`»Šì> »º%? »Š ?À»º%?À»ŠœY໺œ‡à»ŠõY¼Š=Z ¼Š¯Z@¼ŠÄZ`¼ºœ‡`¼ŠP2€¼ºœ‡€¼Šy2 ¼ºžD ¼Š¥[À¼ºžDÀ¼Šþ[༺Z ½ºZ  ½ºZ @½ºœ‡@½Š±‡`½ºœ‡`½Šï\€½º%?€½ŠB] ½º%? ½ŠN]À½º%?À½Š•]ེ%?ཊ»]¾ŠÖ] ¾º%? ¾Š^@¾º%?@¾Š!^`¾Š-^€¾Š<3 ¾ŠG3ྺ%?ྊf^ ¿º%? ¿Š¡^@¿º%?@¿ŠÄ^`¿Ší^€¿º%?€¿Š_ ¿Š&_À¿º%?À¿ŠO_࿊Z_Àº%?ÀŠc_ ÀŠ‘_@Àº%?@Àй_`Àºœ‡`ÀŠÔ_€Àº%?€Àн Àºœ‡ ÀŠ8€ÀÀºžDÀÀŠ`àÀŠlSÁŠÄZ ÁŠ7T@Áº%?@ÁŠL†`Áº%?`ÁŠZS€Áº%?€ÁŠ¥1 ÁŠå2ÀÁŠ3àÁºàÁŠº1Šž` Ѝ`@ŠÀ0`º%?`Š˜T€Âº%?€ÂŠù` Âºœ‡Àº%?Àг†àº%?àŠSú%?Ê}Q úœ‡@ú%?@ʾa€Ãºœ‡€ÃŠeUÀúœ‡ÀʶVàúZ ÄºžDÄŠc ĺZ @ĺœ‡@ÄŠV`ĺœ‡`ÄŠÀU Äºœ‡ ÄŠP2Àĺ%?ÀÄŠB]źœ‡Åб‡@źžD@ÅŠþ[`źZ €Åºœ‡€ÅŠy2 Åº%? ÅŠN]ÀźZ àźœ‡àÅŠï\ƺžD ÆÓ@ƺžD@ÆŠ¥[`ƺœ‡€Æºœ‡€ÆŠ¶W Æº%? ÆŠÙ1Àƺ%?ÀÆŠå1àÆºœ‡Çºœ‡ÇŠ©W Ǻ%? ÇŠì>@Ǻ%?@ÇŠ ?`Ǻ%?`ÇŠ™?€Çº%?€ÇŠå? Çº%? ÇŠô†ÀǺ%?ÀÇŠB‡àÇŠ=ZÈŠ¯Z Ⱥ%? ÈŠœY@Ⱥœ‡@ÈŠõY`Ⱥ%?`ÈŠ^€Èº%?€ÈŠ!^ ÈŠ-^ÀÈŠG3àÈŠ<3 ɺ%? ÉŠf^`ɺ%?`ÉŠ¡^€ÉŠí^ Éº%? ÉŠ_ÀÉŠZ_àɺ%?àÉŠc_ÊŠ&_ ʺ%? ÊŠO_@ÊŠ‘_`ʺ%?`ÊŠ¹_€Êº%?€ÊŠvT Êº%? ÊŠÄ^Àʺ%?ÀÊŠ7Tàʺ%?àÊŠ¥1˺%?ËŠS ˺%? ËŠL†@˺%?@ËŠZS`˺%?`ËŠvT€Ëº%?€ËŠ}Q Ëº%? Ëоaà˺%?àËŠÙ1 ̺%? ÌŠå1@ÌŠlS@ͺ%?`ÍŠIl€Íº%?€ÍŠTl Íº ÍŠº1ÀÍŠ¢làͺ%?àÍŠ}Qκ%?Ί¥1 κ%? Ίù`@κ%?@ΊS`κ%?`Ίå1€Îº%?€ÎŠÙ1 Îºœ‡ ÎŠeUÀκ%?àκœ‡Ïº%?ÏŠô† Ϻ%? ÏŠtn@Ϻ%?@ÏŠL†`Ϻ%?`ÏŠZS€Ïºœ‡€ÏŠÀU Ïº%? Ïг†ÀϺ%?ÀÏŠœYàϺœ‡àÏŠõYЊp к%? Њ™?@к%?@Њå?`к%?`Њ ?€Ðº%?€ÐŠì> Ðº%? ÐŠÝpÀЊÀ0àЊ7TÑŠlS Ѻœ‡ ÑŠP2@Ѻ%?@ÑŠB]€Ñº%?€ÑŠ˜T Ñº%? ÑŠvTàѺœ‡àÑŠÒrÒŠË2 ÒŠ3@ÒŠå2`ÒŠ3€ÒŠ 1 Òº%? ÒŠxsÀÒŠ/ˆàÒºœ‡àÒŠ±‡ Óº%? ÓŠf^`Óº%?`ÓŠ¡^€ÓÓ Óº%? ÓŠuàÓÓÔÓ ÔŠòv@ÔŠw`Ôº%?`ÔŠdw€ÔŠ·w Ôº%? ÔŠ7xÀÔº%?ÀÔŠ!^àÔŠ-^Õº%?ÕŠ x ÕŠí^@Õº%?@ÕŠ_`ÕŠ‘_€Õº%?€Õй_ ÕŠ&_ÀÕº%?ÀÕŠO_àÕŠZ_Öº%?ÖŠc_ Öº%? ÖŠvy@Öº%?@ÖŠy`Öº%?`ÖŠÇy€Öºœ‡€ÖжW Öºœ‡ ÖŠ©WÀÖŠž`àÖŠ z׊$z ÛÓ ÛÛ@ÛÓ@ÛÛ ÝÓ ÝÛ@ÝÓ@ÝÛàÝÓàÝÛÞÓÞÛ ÞÓ ÞÛÀÞÓÀÞÛ`ßÓ`ßÛ€ßÓ€ßÛàáÓàáÛâÓâÛ âÓ âÛÀâÓÀâÛ äÓ äÛÀäÓÀäÛ`åÓ`åÛ€åÓ€åÛ æÓ æÛ@æÓ@æÛ€æºœ‡ æºœ‡ çº%? çº%?Àçº%?à纜‡ éÓ éÛÀé‚ËàéÓàéÛ`ðÓ`ðÛ€ð‚Ë ðÓ ðÛÀð‚öàðÓàðÛñ‚Í ñÓ ñÛ@ñÓ@ñÛ`ñÓ`ñÛ€ñÓ€ñÛ ñÓ ñÛÀñÓÀñÛàñÓàñÛòÓòÛ òÓ òÛ@òÓ@òÛ`òÓ`òÛ€òÓ€òÛ`öº%?€öº%? öº%?Àöºœ‡÷º%?@÷º%?`÷º%? ÷º%?À÷Ó`øºœ‡€øº%?@úÓ@úÛ`ú‚Ë€úÓ€úÛ ú‚öÀúÓÀúÛàú‚ÍûÓûÛ ûÓ ûÛ º%?ÀŠ½àŠµ‘ŠÁ‘ Š®2@ºœ‡@ŠP2`ºœ‡`Šy2€º%?€Šå1 º%? ŠÙ1Àº%?ÀŠ¥1àº%?àŠL†º%?Š{’ Š3@Š3`Š–P€Š£P Š²’Àн’ຜ‡àн ºžD Š8€ º%? ŠïP@ ºžD@ Š5“` ºZ ` Šu“€ ºZ € Ф“  ºœ‡  Š>QÀ ºœ‡À Š}Qà º%?à Š¥1 º%? ŠS º%? ŠL†@ º%?@ ŠZS` Š®T€ Šð”  º•  ŠÑSà º%? º%? º%?` º%?€ º%?À º%?à ºœ‡ º%? ºžD@ º%?` ºžD€ ºœ‡  º%?À º%?à º%? º%?@ºœ‡`º%?€ºœ‡ º%?àº%?ºœ‡€ºžD º%?ÀºžDຜ‡ºœ‡ º%?@ºœ‡€ºžDÀºœ‡àº%?ºžD ºœ‡ º%?Àº%?ພDºœ‡ Ó@ºžD€ºœ‡ º%?ÀŠÜœàŠõœº¬;Š º¬; Š)@º¬;@Š;`º¬;`ŠF€º¬;€Š] Š¸ÀŠÈàŠÚŠë@Šž`Šž€º%? º%?Àº%?àº%?º%? º%?@º%?@Š8ž`º%?`ŠZ_€º%?€Š&_ ŠOžÀº%?ÀŠežàŠužŠ‚ž ª ;[—ž Šòž@ª@Šÿž`ŠŸ€Š3Ÿ ŠCŸÀŠ\Ÿàº%? º%?@º2 `ºΟ€º%? º‹×Àº~˜àº%?º%? b¯  º%?@º%?@Š­¡`ª€º%? ª º%?Àº%?àªàº%?ªº%? ª@ª@º%?`ª`º%?€ª€º%? ª º%?ÀªÀº%?઺%? Š¢@Š ¢`Š¢€ª€Š&¢ ª Š0¢ÀªÀŠB¢àªàŠU¢ªŠg¢ ª Šz¢@Š…¢`ŠŽ¢€Š˜¢ Ó ÛÀÓÀÛàÓàÛÓÛ ª Š·¢@ª@ŠÊ¢`ª`ŠÕ¢€ª€Šâ¢ ª Šö¢ÀªÀŠ £àªàŠ!£Š;£ ª ŠN£@º%?@Šs£`º%?`Š„£€Â€Š•£ Š±£ÀÂÀŠÅ£àÂàŠÙ£Šå£ º%?@Š÷£`Š ¤€Š¤ Š*¤Àº%?ຜ‡Šf¤ Šo¤@Šy¤`Šƒ¤€º%?€Š—¤ Š¢¤ÀЬ¤àе¤ Šxs ŠÀ¤@ Šˤ` ŠÕ¤€ ŠÞ¤  Šñ¤À Šû¤à Š¥!Š¥ !Š¥@!Š!¥`!Š*¥€!º%? !º%? !ŠN¥€#Ó€#Û #Ó #Ûà#Ó$b¦$ºœ‡ $Ó@$b¦@$ºœ‡`$Ó€$b¦€$ºœ‡ $ÓÀ$b¦À$ºœ‡à$Ó%b¦%ºœ‡ %Ó@%b¦@%ºœ‡`%Ó€%b¦€%ºœ‡ %ÓÀ%b¦À%ºœ‡à%Ó&b¦&ºœ‡ &Ó@&b¦@&ºœ‡`&Ó€&b¦€&ºœ‡ &ÓÀ&b¦À&ºœ‡à&Ó'b¦'ºžD 'Ó@'b¦@'ºZ `'Ó€'b¦€'º%? 'ÓÀ'b¦À'º%?à'Ó(b¦(º%? (Ó@(b¦@(º%?`(Ó€(b¦€(º%? (ÓÀ(b¦À(º%?à(Ó)b¦)º%? )Ó@)b¦@)º%?`)Ó€)b¦€)º%? )ÓÀ)b¦À)º%?à)Ó*b¦*º%? *Ó@*b¦@*º%?`*Ó€*b¦€*º%? *ÓÀ*b¦À*º%?à*Ó+b¦ +ºœ‡@+ºžD`+ºZ €+ºl +º))À+º•à+ºŒ­,º® ,ºœ‡€,b¦ ,b¦À,b¦à,b¦-b¦-º%? -b¦@-b¦`-b¦€-b¦ -b¦À-b¦à-b¦.b¦ .b¦@.b¦`.b¦€.b¦ .b¦À.b¦à.b¦/b¦/º%?`0ÓÀ1º%?à1º%?À2º%?à2º%? lº%?ÀlªÀlº%?àlªmªmº%? mª mŠ&¢@mª@mŠ0¢`mª`mŠB¢€mª€mŠN£ mª mŠU¢ÀmªÀmŠg¢àmªàmŠz¢nªnŠ…¢ nª nŠ·¢@nª@nŠÊ¢`nª`nŠ £€nª€nŠ!£ nŠÈÀnÂÀnŠ·ànº%?ànŠ8žoº%?oŠ-· oŠå£€oº%? oº%?Àoº%?`vº%?€vº%? vºœ‡Àvº%?àvºœ‡wº%? wº%?@wº%?`wº%?€wº%? wº%?Àwº%?€xº%? xº%?àzÓ{Ó {ÓÀ|ºœ‡à|ºœ‡}ºœ‡ }ºœ‡`}ºœ‡ }ºœ‡@~Ó`~Ó€~b¦ ~b¦bÁº%? º%?`Ó€bÁ€º%?ÀÓàbÁàº%? €Ó@€bÁ@€º%?€€Ó €bÁ €º%? œbœÆ œº%?ÀœbœÆ Ó@Ó`º‹×@žºœ‡`žºœ‡€žº%?àžbœÆàžºœ‡ŸbœÆŸº%? ŸbœÆ Ÿº%?@ŸbœÆ@Ÿº%?`ŸbœÆ`Ÿº%?€ŸbœÆ€Ÿº%? Ÿº%?ÀŸº%? ºœ‡@ ºœ‡` º%?€ º%?  ÓÀ ºLÉ ¡ºžDÀ¡ºžD ¢bœÆ ¢º%?@¢bœÆ@¢º%?`¢bœÆ`¢ºœ‡€¢Ó€¢Ûࢺ%?`£º%?€£º%? £bœÆÀ£bœÆÀ£º%?à£bœÆà£º%?¤bœÆ¤º%? ¤bœÆ ¤º%?@¤bœÆ@¤º%?`¤bœÆ`¤º%?€¤bœÆ€¤ºœ‡ ¤bœÆ ¤ºœ‡À¤bœÆÀ¤ºœ‡à¤bœÆà¤ºœ‡¥bœÆ¥ºœ‡ ¥bœÆ ¥ºœ‡@¥bœÆ@¥ºœ‡`¥bœÆ`¥ºœ‡¨Ó¨Û ¨Ó ¨Û@¨Ó@¨Û`¨Ó`¨Û€¨Ó€¨Û ¨b¦À¨b¦à¨b¦©b¦ ©b¦@©b¦`©b¦€©b¦ ©b¦ ©ºZ À©º%?à©b¦ªº%? ªºœ‡@ªºœ‡`ªºžD€ªºZ  ªºlÀªºžD઺Z «º)) «º•@«ºZ `«ºl€«ºŒ­ «º® ¬bãÍ ¬º%?@¬º%?`¬b(Î`¬º%?`¬Šn΀¬º%? ¬ªÀ¬ª ­ÓÀ­Óà­Ó®Ó ®Ó@®Ó`®Ó€®Ó ®ÓÀ®Óà®Ó¯Ó ¯Ó ²Ó ²Û@²Ó@²Û`²Ó`²Û€²Ó€²Û ²Ó ²ÛÀ²ÓÀ²Ûà²Óà²Û³Ó³Û ³Ó ³Û@³Ó@³Û`³Ó`³Û€³Ó€³Û ³Ó ³ÛÀ³ÓÀ³Ûà³Óà³Û´Ó´Û ´Ó ´Û@´Ó@´Û`´Ó`´Û€´Ó€´Û ´Ó ´ÛÀ´ÓÀ´Ûà´Óà´ÛµÓµÛ µÓ µÛ@µÓ@µÛ`µÓ`µÛ€µÓ€µÛ µÓ µÛÀµÓÀµÛàµÓàµÛ¶Ó¶Û ¶Ó ¶Û@¶Ó@¶Û`¶Ó`¶Û€¶Ó€¶Û ¶Ó ¶ÛÀ¶ÓÀ¶Ûà¶Óà¶Û·Ó·Û ·Ó ·Û@·Ó@·Û`·Ó`·Û€·Ó€·Û ·Ó ·ÛÀ·ÓÀ·Ûà·Óà·Û¸Ó¸Û ¸Ó ¸Û@¸Ó@¸Û`¸Ó`¸Û€¸Ó€¸Û ¸Ó ¸ÛÀ¸ÓÀ¸Ûà¸Óà¸Û¹Ó¹Û ¹Ó ¹Û@¹Ó@¹Û`¹Ó`¹Û€¹Ó€¹Û ¹Ó ¹ÛÀ¹ÓÀ¹Ûà¹Óà¹ÛºÓºÛ ºÓ ºÛ@ºÓ@ºÛ`ºÓ`ºÛ€ºÓ€ºÛ ºÓ ºÛÀºÓÀºÛàºÓàºÛ»Ó»Û »Ó »Û@»Ó@»Û`»Ó`»Û€»Ó€»Û »Ó »ÛÀ»ÓÀ»Ûà»Óà»Û¼Ó¼Û ¼Ó ¼Û@¼Ó@¼Û`¼Ó`¼Û€¼Ó€¼Û ¼Ó ¼ÛÀ¼ÓÀ¼Ûà¼Óà¼Û½Ó½Û ½Ó ½Û@½Ó@½Û`½Ó`½Û€½Ó€½Û ½Ó ½ÛÀ½ÓÀ½Ûà½Óà½Û¾Ó¾Û ¾Ó ¾Û@¾Ó@¾Û`¾Ó`¾Û€¾Ó€¾Û ¾Ó ¾ÛÀ¾ÓÀ¾Ûà¾Óà¾Û¿Ó¿Û ¿Ó ¿Û@¿Ó@¿Û`¿Ó`¿Û€¿Ó€¿Û ¿Ó ¿ÛÀ¿ÓÀ¿Ûà¿Óà¿ÛÀÓÀÛ ÀÓ ÀÛ@ÀÓ@ÀÛ`ÀÓ`ÀÛ€ÀÓ€ÀÛ ÀÓ ÀÛÀÀÓÀÀÛàÀÓàÀÛÁÓÁÛ ÁÓ ÁÛ@ÁÓ@ÁÛ`ÁÓ`ÁÛ€ÁÓ€ÁÛ ÁÓ ÁÛÀÁÓÀÁÛàÁÓàÁÛÂÓÂÛ ÂÓ ÂÛ@ÂÓ@ÂÛ`ÂÓ`ÂÛ€ÂÓ€ÂÛ ÂÓ ÂÛÀÂÓÀÂÛàÂÓàÂÛÃÓÃÛ ÃÓ ÃÛ@ÃÓ@ÃÛ`ÃÓ`ÃÛ€ÃÓ€ÃÛ ÃÓ ÃÛÀÃÓÀÃÛàÃÓàÃÛÄÓÄÛ %*.9GšôÚçõ%«-cÊ Ù è ÷ !! !¯!="}" #½%Î%à%ñ%&&$&5&<&š&¡*»*Î*/¢/Ñ/<î3ó34­4ê45,5“5÷566º6a7t7Œ7©7…8/;D;M;[;a;s;Û;ä;ù;,<X<€< =T=ˆ=µ=Â=î=> >1>ã>õ>??i?W?A???Ë?@&@.@O@s@x@&A1A•BÒBÜBžB©BèBCTCEZEFFF#F,FZ^F§FÛFÇGîG’H6I?IÔJKeK¥KÏKgLQJxLØLRMeMzMM×MáMõMNaMNž×žŸ>ŸvŸŸ ŸÇŸ%  ¼¢ ¤G¤·£Ó£ï£Œ¤zqˤ q°”I¥î¤´¥§”¦S¦®¦qŦ$§6§V§p§a¨Œ¨¯¨´¨Ç¨p䨓©ñ©Oªdªnª5«~@M«¬]¬z~¬‰¬!®f®Î®›®W¯£¯°]°3±M±›±²±Û±X²y²(²½²/³9³\³ ³Ë³´Ç´IµÔ´´xµÉ¶»·€¸œ·Œ¸œ¸ª¸Ì·µ¸é¸´¹º+ºbº©ºýº»1»f»­»¼<¼Å¼¾ ¾‚¾Š¿ÀÀAÀhÀvÀœÀªÀÐÀÞÀÁÁ5Á?ÁcÁqÁ–Á¤ÁÎÁþÁ/Â_… ÂËÂàÂðÂúÂZúÃÿÃÄÄmÄ2ÅGÅrÅËÅçÅkÆâÇ1ÈÉzÉɸÉÊlʵÊÙÊîÊË]ˎ˦ËõË3̉ÌóÌ;ÍjͳÍÎNÎ{ΣÎÏ™ÏåÏÐ>ФÐZÑðѨÒÓžÓãÓ7Ô‰ÔÕ«Õ%Ö*Ö@ÖVÖ\ÖuÖŽÖžÖ±ÖÐÖîר&Ø?ØJØUØdØêØÿØÙ&ÙaÙ×ÙàÙêÙÚ^ÚŠÚ´Ú¼ÚÛeÛ‘Û»ÛîÛÜjÜ{Ü‘ÜçÜuÝÝ·ÝÆÝàÝêÝüÝ ÞWÞ€ÞžÞ·ÞïÞ«ßèß'àaà{àà¡à·àÉàÖà;á âZâkâ‡âLãzã³ã7äNä^äåeæÖ[Çæç]çgçlçùç,èrèŒèÇèé ééé@éEéNéséwéÙé“ê£ê³êÌêQëÖëÁíîKîïbï’ïåï[ñnñ¼ñÃñ×ñçñ+ò/ò€ò³òÃòóóó'óLózó‰óŽóžó©ó¿óXôÂôõ/õuõÍõ#ö:öù÷øÐfUø§ø>ùƒúïúZüfümýuýÉýüýþYþpþþ þÆþÿÿHÿrÿÐÿëÿ*ÂôBGeÓÞíðþK©ÞãAT•«åîügúO£2   0 8 W !‡ © Û ø  O "XŽW XX^ c n   † ” ë E ž Jý¿ Eƒˆºè 5aª¿ #-oê€!&+?J^bfk°¹ý>~¦Úé(œZØvÎ-|@ m  œ ô !!k!!ª!"("‹"ä"ð"##ú#&$SR$$¬$Á$C%Q%[%s%Š% %¥%Ý%&& &-&6&R&m&Œ&Ê&è& 'B']'‹'å'(r(‚(¢(»(Î()Q)f)t)ÿ)*q*©*Í*ê*ú*++H++«+±+Ä+ò+9,R,l,, –,Ï,à,--(-1--”-¸-Ì-ì-ñ-.+.<.F.Qa.‰.É.Ó.Û.ì.W/°/À/0;0ê3ó3 414j44¶4ú4k5–5 6)66Ë6'70797R7ê7a8\9q9 :-:`:x:“:!;[;Ž;È;è;ì<=@=H=*>¦?·?¸BÃBâBC_C¢C­CDòD EFrF™F GoG¹GHH¨H³H¾HÂHëHHI]IÁIJ J+JXJ³J KÖKLHL_LMMÝM0NkN¯NtO~O´O]PÿPQR"RpR“R±RS¡SôSTTCTXTƒTåTU8UpU}UŽUÊUåU)V@VgV‚VÂVÙVW!WcWoWÃWÛWýW XqX€X°X¿XéX'YsY¥YÃY ZHZqZ»ZÍZæZ[-[[[j[´[Ã[ \8\k\„\ý\]w]Ú^ÿ^/_n_v_ž_ò_×`aÍaÖabtb¸bÁbãb™cDdqd©dÑdSee¼ef$fOfŽfÁf÷gIi¨iúijBjéjkEkNkÜlýlm?m_mnm p\pÆpçpöp=quq¢qJrsr„rãrsssþs9ttuSuåu÷uBvµvqw«wÅwx­xÌxôx yyÖyzÑ{||Y|b|™|þ|M}V}š}©}Ò}~%~[~³~ß}G—£ÖâA€ƒ€Ú€æ"‚5‚T‚_‚Ù‚ ƒIƒ–ƒs„‹„ ………L…U…Y…d…ã…‹†¶†¿†‡C‡g‡‰‡’‡¾‡õ‡›‰ʼn"‰ð‰#Љ0ЄЛ‹ô‹¤ŒUá2޹ŽÓŠTuªø$Oc‘8‘J“T“ß“ü”·•Ô•Ü•–5–k–®–Þ–.—d—€—Ê—˜(˜C˜„˜͘÷˜8™›™š$š§šúšx›‚››Pœ«œ¹œØ¡0£}£î¥ý¥¢¦±¦ô¦§F§U§˜§§§ê§ù§<¨K¨ލ¨à¨ï¨2©A©j©òª« ««««)«-«8«<«G«R«V«a«e«p«t«««¥«»«Ý«ï«!¬H¬Ƭ3®c®„®ª®ÿ²×®Õ³‰´s‘µ̵u‹»¶º‰ú¶F·‰·¢·¸&¸š¸*¹;¹Q¹"º½»л軼I½|À˜ÀÂÀÖÀŒÁÓÁ Á+Äwz€ÄýÄx…9ÅÇDÇXÇ]ÇaÇ»ÇÀÇØÇ¯)ÈYÈrȻȿÈÃÈÖÈ&É+ɈÉÉÓÉ'ÊTÊ{Ê”ÊÀÊâÊûÊ"ËGËtË©ËæË Ì;ÌsÌÙÌÍiÍÃÍÐÍbÏsτϕϦÏÐïÐÈÑÙѲÒÅÒØÒëÒþÒÓ$Ó«Ó¿ÔÕÕ»ÖÐÖåÖúÖ×$×9×N×÷×QÙ®ÚáÞêÞßß$ß3ß@ßNß_ßnß~ߑߢߴßÛßñßà0àHà^àžàµàÍàèàíà­.   ! " # $%&()024!5"6#7$8%:);*<+=,>-?.@/B4C5D6E7F8G9H:I;J<LBMCNDOEPFQGRHSITJUKVLXSYTZU[V\W]X^Y_Z`[a\b]c^d_fgghhiijjkkllmmnnooppqqrrssttuxyy{{}Š~‹…‡‘‰’Š”‹™Œ› Ž¦§©’ª“®”¯•³–´—¼˜½œÀŸÁ Â¡Ã¢Å£Ð¦Õ§Ö©×ªØ«Ù­Ý®à¯æ°é±ì²ò³õ´÷µ·¸º »¼½¾¿ÀÁÂÄMÅNÆOÇPÈQÉSÊTËUÌVÍWÎXÏYÐZÑ[Ò\Ó]Ô^Õ_Ö`×aØbÙdÚeÛfÜgÝhÞißkàlámânãoäpåqærçsètéuêvëwìxíyîzï|ð}ñ€òó‚ô„õˆöŽ÷ø‘ù’ú”û–ü—ý›þŸ¡£¥§u¨‰©Œ«®²³‘´’µ“¶”·9¸YèƬǭʵ̸ÏÒÓÓØìÛíÞñâçëóôö÷ø ù!ú"ü#ý$þ%ÿ'( ) * + ,-./0127HJK>NEOSZX{tuwÏyÓ{ä}ç‚èƒê„ë…ì†íˆðŠñ‹÷Œ“$—&™'œ(Ÿ)¢*¤W¦h§m¨r©wª~«ƒ¬ˆ­®’¯—°¨±­²²³·´¼µÁ¶Æ·Ë¸Ð¹Õºô»Í Ï Ð ÑÒ%Ó9ÔLÕ_ÖfÞgãiäwé|z~{}€€„‚‰ƒ„–…ži<Vi<Vi<V8fVNf8yf«f«…f«iÐÁf«Ðf«Ng8sg ‰g8¥gÄg8ÉgVÚgVägVïgVÿg8hV(hVi<8‰g8ëi«ùiVjVmj8j« kVkV{k{kæ{k{kæj«¤kV±kV¾kV{k{kæ{k‚{k{kæ{k‚j«+lV8lVElVRlV{k{kæ{k‚{kû#{k{kæ{k‚{kû#j«ãlVðlVýlV mVmV{k{kæ{k‚{kû#{k({k{kæ{k‚{kû#{k(j«ÂmVÏmVÜmVémVömVnV{k{kæ{k‚{kû#{k({k_,{k{kæ{k‚{kû#{k({k_,j«ÍnVÚnVçnVônVoVoVoV{k{kæ{k‚{kû#{k({k_,{k“1{k{kæ{k‚{kû#{k({k_,{k“1p8 p«p«‰g8´qi<uež;i<r¨; r¨;j«Mrà<SrV[rVbrprê<{r«‚r8r”rê<{k=ýsÕ>  6?0t;?dtVi<‘uVœu%w¤@zw€wæzw€wæšw¦A w¦A¦w«zw€wæzw€wæšw¦A w¦A¦w«MrxBÊw„B˜¦ASrV{kŽBÓw«ýscHšx¥Hÿe¥HÌ|ÖHzw€wTIšwTI w«{kzw€wTIšwTI w«{kÊw„B˜TIMrGJÓw«SrV÷|þ| }ýsÕ>Äg8 ~\Mj«S‚¦PS‚œQS‚—R3ƒ«9ƒSnƒ«sƒ«iqS{ƒ8“ƒS—ƒSœƒV£ƒV©ƒV´ƒV¿ƒVj«Ú…ÀTæ…Vô…V†V{k«{k«{k«{k«j«s†Vz†V†VzwV€w¥HšwVzwV€wêVšwV wêV¦wVdžWzw8€wWšwêVzwV€w¥HšwVzwV€wêVšwV wêV¦wVdžWzw8€wWšwêV׆«↫‡8#‡5X6‡WXƒ~]XU‡«`‡«k‡«w‡«‡V‡V ‡¾Xi<8Äg8¸‰V*\M‰NYj«uŠV€ŠVŠŠV—ŠVzw:Z€w@Z{k¸Zzw¸Z€w[zw\M€w«zw:Z€w@Z{k¸Zzw¸Z€w[zw\M€w«j«‹â[‹V‹â[+‹V:‹â[C‹VN‹â[[‹Vj‹â[p‹Vx‹V†‹V—‹V©‹V¶‹VËV׋Vé‹Vý‹VŒV$ŒV7ŒVLŒV_ŒVmŒV„ŒV™ŒV¤ŒV±ŒVÁŒâ[ÉŒVÓŒâ[àŒVïŒâ[ûŒV â[Vâ[*V9VFâ[PV\â[iVxâ[ŽV¦â[²VÀVÊV{k\M{k~^{k~^{k\Mzw\M€w«{k`{k`{k`{k`{k–a{k–a{k–a{k–a{k2c{k¥c{k¥c{k\M{k\M{k\M{k\Mzw¥H€w\M{k\M{k\M{k~^{k~^{k\Mzw\M€w«{k`{k`{k`{k`{k–a{k–a{k–a{k–a{k2c{k¥c{k¥c{k\M{k\M{k\M{k\Mzw¥H€w\M{k\M˜´g”@Z*\M•—[¡—:mÑ”‚m˜NYÑ”‚ma˜Vy˜Vue¸m˜NYžq n¾˜¥HؘNYÛ˜ n☥H(™2na˜VÓw«(™2nj«Nš puš¨;š¨;¼ypĘ2n¿œìpÅœùpËœq¥šgq6tqj«{k·q_usݸm™ V(™2n1¢íy7¢«7¢«{£«¥ÿ$«ÿ…¬V•¬™žÀ¬PŸÞ›[Ÿß¬aŸj«G®VùiVL®V{k{k6?{k]£{k{k6?{k]£ç´‰Èî´‰Èö´‰Èµ‰Èµ‰ÈµŽÈ9’È3µ—ÈIµ´È`µÖÈtµçÈÂÔì« Âàìp¸Zj«zw™ñ€w«j«{kíñÄô’Ä ôÀôÞÄRôñÄRôÅRô#ÅRô1ÈRôç´‰ÈCÈRôWÈaýhÈgýûÈVñˆÌVÙÌ& àÌ* æÌ* j«zw«€w«šwSj«üÐÎÑVÑÎ"ÑV÷щÈþщÈq‰ÈÒ‰Èj«`ÒVlÒV{ÒVˆÒV’Ò…›ÒV¦ÒV{kæzw\M€w\M{kÃ{kc{k\M{kæzw\M€w\M{kÃ{kc{k\Mj«wÓV„ÓV›ÓV©ÓV¼ÓVÍÓÈ×ÓVãÓV{k({k\M{kzw8€wzw\M€w{k¥H{k({k\M{kzw8€wzw\M€w{k¥HNÕ* UÕÞ ZÕÞ `ÕÞ fÕÞ ‘×Ê#—×Ô#,Ø& 5Ø& ;Ø& DØ\$MØ\$YØ`$cØ& oØ& {Ø& ˆØ& ”Ø&  Ø& ¬Ø& ¹Ø& ÆØ& ÏØ& ÚØ& ܃d$àƒd$äØj$êØq$òØq$üØq$Ùq$Ùv$Ùv$'Ù& :Ù& WÙ& rÙ& ˆÙd$óÛ«-ß«Wz«øÛ«ýÛ«7ß«=ßS¾ßò(¨& h­\$j¥& Wz& °& Îß\$Õß& åß& ñßq$ÿßq$àÿ( àÿ(àÿ(h­ÿ( á`$àÿ( àÿ(áÿ(Œâ¨;÷щȒâ‰Èq‰È™â‰È¢âRô¸âRôÌâRôÝâRôïâi*ýâ‰Èã‰È ã‰Èã‰Èã‰È$ã‰È-ã‰È4ã‰È=ã‰ÈDã‰ÈMã‰ÈTã‰È]ã‰Èdã‰Èmã‰Ètã‰È}ã& †ã& gê& (;=À£V(ÍOÀ£Vi<Êwe„j«kôÈ„j«’õ´‡—õVžõV¦õV{k{kˆ{k{kˆîõ>‰ôõO‰wGˆýõ`‰wGˆ–öXŠj«O÷ÀŽZ÷Vg÷ÀŽq÷V}÷Àކ÷V“üvœüv ü‘¯ü‘v•v\VeVm\VeVm\VeVmmæeVmeV¸—²¸—²¸—²¸—²¸‡³¸—²¸—²¸—²¸—²¸—²¸µ´¸—²¸—²¸¢µ¸—²¸—²¸—²¸—²¸—²¸—²¸v¶S`ȾëξξÔ¾*ݾ9æ¾Gï¾Uø¾c¿q ¿€¿¿œ%¿«.¿º7¿Ê@¿ØI¿èR¿i<ŠÃø ŠÃ¸¦Ã¸¦Ã¸ÀÃ.>˜Ä.>˜Ä.>˜Ä.>˜ÄN …Æ[ ŠÆf ŠÆx ξ‹ ξ  & ± ÆÅ –ÆÉ& ð& & 7& W& —:& ŽÈ4ŽÈKŽÈdŽÈzŽÈëýÜõŽÈ ŽÈŽÈ-ŽÈFŽÈXŽÈnŽÈ„ŽÈŸŽÈ³ŽÈÌŽÈàŽÈòŽÈ ŽÈ$ŽÈ7ŽÈLŽÈ_ŽÈmŽÈxŽÈ’ŽÈ ŽÈ·ŽÈÆŽÈØŽÈèŽÈüŽÈŽÈ2ŽÈWŽÈŽÈŽŽÈžŽÈ´ŽÈËŽÈߎÈñŽÈŽÈŽÈ&ŽÈ9ŽÈKŽÈ_ŽÈkŽÈ|ŽÈŽÈŽÈ¬ŽÈ¶ŽÈÆŽÈ׎ÈèŽÈúŽÈ ŽÈ ŽÈ. ŽÈA ŽÈR ŽÈ` ŽÈu ŽÈˆ ŽÈš ŽÈ© ŽÈÀ ŽÈÐ ŽÈß ŽÈö ŽÈ!ŽÈ%!ŽÈF!ŽÈe!ŽÈ!ŽÈ!ŽÈ¶!ŽÈÙ!ŽÈí!ŽÈ"ŽÈ"ŽÈ5"ŽÈU"ŽÈq"ŽÈŠ"ŽÈ"ŽÈ±"ŽÈÃ"ŽÈÕ"ŽÈç"ŽÈø"ŽÈ#ŽÈ #ŽÈ5#ŽÈF#ŽÈb#ŽÈy#ŽÈƒ#ŽÈ™#ŽÈ³#ŽÈÌ#ŽÈá#ŽÈû#ŽÈ$ŽÈ$ŽÈ-$ŽÈJ$ŽÈp$ŽÈ„$ŽÈ—$ŽÈ³$ŽÈ»$ŽÈÐ$ŽÈâ$ŽÈñ$ŽÈ%ŽÈ%ŽÈ-%ŽÈD%ŽÈ^%ŽÈu%ŽÈ%ŽÈª%ŽÈº%ŽÈÊ%ŽÈÞ%ŽÈô%ŽÈ&ŽÈ &ŽÈ<&ŽÈP&ŽÈc&ŽÈv&ŽÈŠ&ŽÈž&ŽÈ²&ŽÈÈ&ŽÈà&ŽÈ'ŽÈ/'ŽÈU'ŽÈa'ŽÈ‘'ŽÈ§'ŽÈÁ'ŽÈß'ŽÈô'ŽÈ»6«zwþ6«zw€wæþ6«zw€wæšw‚þ6«zw€wæšw‚ wû#þ6«zw€wæšw‚ wû#¦w(þ6«zw€wæšw‚ wû#¦w(dž_,þ6«zw€wæšw‚ wû#¦w(dž_,Z8“1þ6«zw€wæšw‚ wû#¦w(dž_,Z8“1r8wàþ6«àá  ( )*,-.2468:!<#;#>%=%@'?'B)A)D+C+F-E-H/G/K1M3N5P7O7R9Q9[;d=a?cAnCpErGtI|KwMyO{Q†SˆUŠWŒYŽ[]š_“a•c—e™g¤i¦k¨mªo¬q®s°u²w¾yµ{·}¹»½ƒÈ…ʇ̉΋ÐÒԑ֓ؕڗè™Ý›ßáŸã¡å£ç¥ò§ô©ö«ø­ú¯ü±þ³µ·¹»½¿ Á ÃÅÇÉËÍ"Ï$Ñ&Ó(Õ*×,Ù.Û0Ý2ß4á6ã8å:ç<é@ëAíBïFñ\ó[óeõdõi÷lùtûuý‚ÿ{|~€ ‹ Œ Ž”—˜ž­®!¾#Ã%Ä'Æ)Ç+È-É/Ê1Ì3Í5Ï7Ð9Ñ;Ò=Ó?ØAÜCÝEßGàIëK M O QSUWY[]_aceg$i%k&m)o-q:s;u<wVyX{Y}]Ššƒ… ‡ž‡Ÿ‰§‹¨©±‘¶“·•¼—½™Å›ÆÏŸÞ¡Ø£Ù¥Û§Ý©æ«è­ë¯í±õ³ðµò·ô¹÷»ø½ù¿ûÁüÃýÅþÇÿÉËÍÏÑÓÕ× Ù Û Ý ßáãåçéëíïñóõ÷ùûýÿ "$'( ) * :3579ABDFG!I#J%L'M)O+Q-R/T1U3 5X7Y9Z;[=\?]A^C_E`GaIcKeMgOiQkSmUoWqYs[u]w_ya{c}egiƒk…m‡oˆq‰sŠu‹wŒy{Ž}‘ƒ“…”‡•‰–‹—˜™‘š“›•—Ÿ™§›©«Ÿ­¡¯£°¥²§´©¶«¸­º¯¼±¾³ÀµÂ·Ä¹Æ»È½Ê¿ÌÁÎÃÐÅÑÇÓÉÕË×ÍÙÏÛÑÝÓÞÕà×âÙäÛæÝèßêáìãîåðçòéôëöíøïúñüóþõÿ÷ùûý ÿ:<=>G I J QRSTVWX[`h!k#r%q't)s)v+-„/…1†3‡5‰7Š9;Ž=ž?¡A¿CÁEÊGËIÝKßMÞMûOQ:S;UBWEYR[^]Y_[a]c`ebgdifkhmjoãqäsåuæwçyC{Z}pqyƒz…Á‡Â‰Ã‹d p n ‘o “z •y —Ž ™ › œ Ÿ ¡ž £Ÿ ¥ö §ø ©ü « ­ ¯ ± ± ³ ³ µ µP ·a ¹b »… ½‚ ¿ƒ Á„ à Ō Ç ÉŽ Ë Íâ Ïã Ñä Óå Õõ ×ê Ùì Ûî Ýð ßñ áò ãô å÷ çù éú ëü íþ ï ñ ó õ ÷ ù û ý ÿ          " $ % ' ( * , !. #0 %2 '3 )5 +6 -8 /H 1K 3L 5M 7N 9… ;† =— ?˜ A™ Cš E› Gœ I Kž MŸ O  Q¡ S¢ U£ W¤ Y§ [¨ ]© _­ a® cÌ eÏ gÐ iÑ kÒ mÓ oÔ qß sâ uã wä yð { }   ƒ … ‡ ‰ ‹   ‘ “ • — ™ ›  Ÿ ¡! £" ¥# §$ ©% «& ­' ¯B ±E ³F µG ·H ¹I »J ½K ¿L Ád Ãe Åf Çg Éh Ëi Íj Ïk Ñl Óm Õn ×o Ùp Ûq Ýr ßs át ãv åw çñ é% ë# ë& í$ í‡ ï… ïˆ ñ† ñAóBõO÷NùŠû„ý…ÿ‡‰’ ” • –˜™¢©ÙÓÔÕÖ!×#Ø%Ý'Þ)ß+à-/1y3z5|7…9†;ˆ=Š?‹AC”E•G›IœKHMkOvQSŒU›W¦Y±[¼]Ç_Òaõce gi!k,m7oBqMsXuÀwÁyÂ{È}ÉÊ˃͇̅ΉϋÐÑÒ‘Ó“Ô•Õ—Ö™,›-4Ÿ7¡:£I¥p§™©À«è­õ¯ö±³µ·¹»@½A¿BÁCÃDÅ`ÇgÉhËiÍjÏkÑӑՒדٔەݖߗá˜ã™åšç›éœëížïŸñ ó¡õ¢÷£ù¤û¥ý¦ÿ§¨©ª« ¬ ­ ®¯°±²³´µ¶·!¸#¹%º'»)¼+½-¾/¿1À3Á5Â7Ã9Ä;Å=Æ?ÇAÈCÉEÊGËIÌKÍMÎOÏQÐSÑUÒWÓYÔ[Õ]Ö_×aØcÙeÚgÛiÜkÝmÞoßqàsáuâwãyä{å}æçèƒé…ê‡ë‰ì‹íîï‘ð“ñ•ò—ó™ô›õöŸ÷¡ø£ù¥ú§û©ü«ý­þ¯ÿ±³µ·¹»½¿ÁÃ Å Ç É Ë ÍÏÑÓÕ×ÙÛÝßáãåçéëíïñ ó+õ;÷FùGûHýSÿTUVab c d epqrstu€‚!ƒ#„%…'†)‘+’-“/”1•3–5—7˜9£;¤=¥?¦A§C¨E©GªI«K¶M+{$­{"¯…há…d­…b¯…lã…nå…jç…fé†tá†x­†v¯EøGI+KúMOî­ì)QþSüU W Yð[ô]ö_òa–˜›–š––+–žŸ– ¡–¨­–¦¯–œ£–¤¥–¢§¢¨+·^+óŒáöÈáøÜá ᎠÿŒ Š ˆ ® áÚ á ›  Ÿ ¡ ¯ ­ £ ¥ §< E4 G> IB K6 MD OJ )L ­: S@ Q8 UH WF Y, [0 ]2 _. ar ýp ÿn é ~ "Š &ž (ª k)² ý)° ÿ)® é*º ý*¸ ÿ*¶ é+¾ á, fÆ ýfÄ ÿf é‰z á Üá«Ö³ «Ôµ ®ú· ®ø¹ –RXRZUfáXxá€Zá€Vã€Xå€Ré€Tçáãå+çÐŠÐˆÑ ÑŽ Ò”¯Ò–­Ó¢­Ó ¯Ø¶­Ø´¯Ù¾°ÙÈáÙÄãÙÆåÙÂçÙÀéÝàáÝÜãÝÞåÝØMÝÚçáðáí6£í8¡ðNáðJãðLåðHçðFéñT£ñV¡õ”áõãõ’åõŒéõŽçö áöœãöžåöšçö˜éùÄáùÀãùÂåù¾çù¼éýâáýÞãýàåýÚéýÜçþîáþêãþìåþæéþèç á ã åüéþç á ã å é ç á ã å ç é* á& ã( å$ ç" é6 á2 ã4 å. é0 ç J k X  V  ^  \  d  b j h &#á&#ã&#å&þ"ç&ü"é-L#µ-N#­0b#‹0d#­3x#‘3z#­6Ž#—6#­9¤#9¦#­<º#£<¼#­?Ð#©?Ò#­Bæ#¯Bè#­Eü#µEþ#­H$»H$­K.$ÁK0$­NJ$ÇNL$­P\$¯P^$­Rn$¯Rp$­T€$÷T‚$­à 'áà'ãà'åà'çà'éõ(õ(ö(ö(÷(Kø(Mù"(Oú&(Qû*(Sü.(Uý2(Wþ6(Yÿ:([>(]B(_F(aJ(cN(eR(i^(kb(k`^*ab*áad*ãbh*ábj*ãcp*ácr*ãdv*ádx*ãe|*áe~*ã~~,+~€,L,~|,N,~„,P,~†,T,~Š,R,~Œ,V,˜,+š,L,–,N,ž,P, ,T,¤,R,¦,V,€´,+€¶,L,€²,N,€º,P,€¼,T,€À,R,€Â,V,Ò,+Ô,L,Ð,N,Ø,P,Ú,T,Þ,R,à,V,‚ò,+‚ô,L,‚ð,N,‚ø,P,‚ú,T,‚þ,R,‚-V,ƒ-+ƒ-L,ƒ-N,ƒ-P,ƒ-T,ƒ -R,ƒ"-V,„8-+„:-L,„6-N,„>-P,„@-T,„D-R,„F-V,…^-+…`-L,…\-N,…d-P,…f-T,…j-R,…l-V, &0@P\n€Ž¢¶ÆÜò4HT`lx„—Ÿ§®¸ÅÎÛãêø-HPX`ox‡– ª´ÅÖø%5?N^hw˜¢É×åù (7ALWbm}Œ”¥¸ÇÖû/?P^mŸ²¼ÇÖàï!1@Tn‚•ª¾Íæ"Lenx…’Ÿª¶ÉÝèñú$3DTl‰ž²Ëßë÷  , < W w Š © µ Î ß ì ô ü  : B g q € Œ ˜ ¤ ³ ¿ É â ë ô  E M V ^ h x Š ¡ © ² À Ë Þ ÷  ) 3 F V n Œ ¡ · Ð ä ì ô   & 5 > H W d q { ¢ ª µ ¾ Æ Ï à ê  "=Tj‹—¤´ÂÒéú$6Na}…”£¬ÀÙý0DKWbt‡ž¦®¸ÂÎÖÞçïõþ #,4:CKQZbhqyˆ–Ÿ§­¶¾ÄÌÓÙáèîø$,4<DLT`izƒ‹”œ¤®¶¾Æ×è-=cu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×àíöÿ #,­ØîñE\s«*áü 7 W w — :"Z$y$˜$·$Ö$ú$%B%f%9&à()&)I)l))·)ß)*/*W*Õ,-I-ƒ-½-÷-.J.v.¢.Î.ú.&/ 2K2‹2Ë2 3K3‹314]4t4™4£4º4Ï4à4@5Y5l5v596V6k6u6”6Ë7ì78 8.8V8‚9©9É9 :^:¼:';Ç;=O>Û> ?Z?6@‰@¼@Þ@?BaB´BúBCCJC'DÔD*EBEÁF_GG–GÞGjHtHêH"IJ4JZJ—JéJýJsKKøK&L?MƒMúM8N”NFOPO’OQMQ^QqQ·QëQïQúQRRaR±R¹RËRõSoTgYih”h©h²hÈhÙhñh i)i:iŸjlçlLm]memPncnðnýnoyo§oéoTp˜p‹qÚqms•sÈsttWt`tÐtçtnu“uÂuãuvwvËv)w™w¡w©wxdx…x3y;y‹y˜y y¨y,z4zGzNzrz3{Ã{ì{'|n|•|»|Ã|ê| }1}9}L}T}™}Å}Í}á})~A~•€«€Ä€Ò€à€ê€ø€ «ÔÛ‚˜ƒ¹ƒÚƒñƒ„„E„Y„‰„—„……7…t…†…â…††U†p†¿†‡‡Q‡ˆ=ˆ{ˆ›ˆÂˆ,‰k‰u‰‰‡‰Î‰Ø‰ò‰EŠTŠcŠ¿ŠÉŠÝŠñŠ‹@‹‡‹‘‹¹‹ß‹ì‹ö‹!ŒSŒxŒŒŒÂŒäŒõŒÿŒ.Pa”œüŽWŽyŽíŽMUÿ’šä쑟‘©‘Á‘ɑёõ‘’’-’5’F’]’g’’À’á’“p“x“­“¹“Ô“” ”(”C”¹”è”û”•F•)–W––ð–m—u—¢—™ ™J™—™š!š)š<šDšÀšÈšÐš›'›8›E›M›U›]›é›œ+œ;œSœ–œžœÕœ÷œ1xºØíž)žIžcžˆž£ž«žÅžŸˆŸŸ˜ŸîŸw  ´ ¼ Ä Ù ü $¡]¡”¡Õ¡ ¢¢Q¢•¢À£Ü£ø£4¤l¤t¤|¤„¤«¤Ã¤÷¤¥"¥1¥9¥n¥˜¥¢¥¬¥Ñ¥ë¥õ¥,¦4¦l¦¦‰¦ž¦¦¦½¦ü¦.§h§€§‰§£§È§ê§ ¨"¨6¨E¨ ©£©·©Æ©Ð©Ú©E«Ž«Ð«Ø«¬%¬-¬4¬F¬Û¬M­¡­Ã­s®‹®“®±®¹®¯¯/¯¶¯Ó¯Ý¯ï¯÷¯ÿ¯g°o°x°„°¾°÷°± ±+±“±¼±Ò±b²p²>³L³³´O´W´k´~´™´§´¯´·´¿´Ù´µpµ¡µÄµÌµ×µþµ¶!¶L¶X¶u¶›¶§¶³¶é¶·V·²·Õ· ¸¸¸>¸X¸v¸¾¸Ò¸Ü¸F¹\¹¹‡¹¹Ý¹óº»»!»\»t»»à»ú»¼2¼W¼a¼‡¼‘¼¥¼­¼µ¼½¼Ö¼ê¼ò¼½½½½<½U½]½s½{½ƒ½J¾[¾q¾Y¿{¿À:ÀoÀ£À×À Á8ÁjÁÁ÷Á(ÂX˜ à Ã/Ã>ÃHÃQÃ)Ä:ÄFÄWÄOÅcÅÆ Æ6ÆSÆòÇÈõÈɛɧÉåÉôÉCÊUÊTË+ÌdÌtÌÌÌÝÌMÍYÍóÍþÍêÎÿÎÎÏ×Ï{ÐÐ%Ñ=ѵÑÐÑÒ’ÒòÒÓwÓˆÓÛÔîÔtÕÕ8ÖlÖ/ØPØKÙ©ÙóÙûÙܦÜÓÜ$ÞÇÞ„ßàãàáïâ—ã‹äàäçZècè‘è½è‡éé¨ê¼êìð+ðbòAó±ó?ôhô~ô†ô•ô©ô¸ô…õ›õªõ¾õ€ö½ö ÷*÷V÷`÷Ô÷Ý÷\ù~ù’ù±ùÃùåùùù!úCú¸úûfû.ü‰ü ü¨üøüý°ýNþ3ÿQÿeÿ—ÿùÿ ¯+>\c‹›<ÍÛÒ& U ~ ÿ C M Ÿ  Ì  C , ,; ­Ï7?F]f2DY3åt¡©öt—ï3HmЏÀ &0bjÒÚ4<DLTƒŒðø"Ja e "l"u"q#ò#$z&¨'²'ö'(N)³)Ó)+*3*n*‡*´*¾*@+s+z+‚+á+[,y..².».¨/U0\0e0o0z0†0“0ü34G4¦456B7J7›7¸7Ú7â7ù8†:è:œ;©;×<=r=¦=®=¶=Í=ò=ú=>>X>t>©>¯?d@”@Ó@ AANA¤A‘B®BÎBØB2CQDvD†FÍH×HáHSI6J@JJJ•KTLËLM†MÔM{NŠNÙNO%OPOZO§OõO/P9PCPÊPÇQžRxS TTITMTU‚UØU5VuVÎVAWÌWyX¸XÝX³Y·YÿYUZbZÚZ![x\ ]^]ÅbÍbÛbÎj‚kËkÓkl`l|l´lgm¤mêmTnn¢nÞn$o^o•oœoæo¤pïpÍq÷q s=sQs†sÈsÇt u6uBu™u¢uYv†v­vývwzwÎwÖwGxQxYxLy…y—yCzmzz‰z¬z¶z½zõz{{#{:{d{€{¡{»{Å{ñ{||)|3|=|Q|r|±|¹|Á|É|Ñ|ä|+}5}E}’}Ê}×}ó}3~;~N~}~¥~Þ~è~ò~‰¾Èîø€3€L€Y€y€’€ €ª€²€û€ C›º+‚k‚s‚ނłæ‚÷‚[ƒǃσðƒ&„{„ƒ„À„Û„ã„ö„……6…p…ƒ……™…µ…Æ…×…é…†††I†S†[†r†Ù†è†ð†ø†‡L‡T‡LJÙ‡í‡óˆ‰+‰¤‰݉ŠaŠiŠ|Š–Š·ŠíŠ5‹a‹Ž‹À‹BŒzŒÏŒÜŒ&.ï}ޱިŽóŽýŽ ,3=Lk…›Íãë GozÃËÖèû‘‘f‘‰‘‘‘È’"”^”²”Ú”R•\•Š•ž•¦•¯•ë•…–Ò–š—6˜í™šŒšCœ- n X£6¤L¤>¥F¥n¥z¥„¥™¥¥¥Í¥{¦‚¦ͦÔ¦§&§q§x§çʧ¨¨g¨n¨¹¨À¨ ©©]©d©Š©‘©¯©·©ü©>ªFªªتߪY®x®¢®µ®½®Å®Í®é®ñ®ù®¯ ¯¯¯"¯*¯2¯<¯D¯L¯T¯\¯d¯l¯‡¯–¯¨¯;²C²K²U²²‹²£²¸²À²Ȳвزà²è²÷²?³G³O³W³_³g³o³w³³š³¸³˳ ´3´=´E´M´U´]´e´m´u´}´…´´•´´¥´­´À´Ô´Ü´ä´ì´ô´ü´µµrµzµ‚µе’µšµ®µ¸µµæµîµöµþµ¶¶¶¶&¶.¶6¶>¶F¶N¶V¶^¶f¶n¶‰¶§¶±¶ã¶·^·–·É·Õ·á·:¸M¸q¸ë¸ù¸¹l¹¹©¹ùð¹κ»Q»a»q»'¼>¼j¼†¼·¼ؼ½^¾p¾‚¾‹¿“¿$À;ÀCÀóÀûÀÁžÁ¯Á»ÁÇÁÂÂ"Â0Â>ÂLÂZÂhÂv‚Žš¦´ÂÀÂÌÂØÂäÂðÂüÂÃà ÔëøÃÒÃäÃòÃÄÄ#ÄxīĹÄÇÄÕÄãÄñÄÅ#Å/ÅEÅQÅ[ÅgÅwŃÅřţůŹÅÅÅÕÅáÅëÅ÷ÅÆ ÆÆ#Æ-Æ9ÆCÆOÆYÆeÆoÆ{ÆÇÈÊÈÍÈÐÈÓÈ²ÊæÊºÌÈÍ·ÏÇÏ×ÏçÏ÷ÏÐ(Ó:ÓLÓ^ÓpÓ‚Ó”ÓR×f×z׎ע׶×Ê×Þ׫ÚåÛíÛõÛÜÜBÜPÜy܉ܗÜÄÜÖÜæÜ+ÝœÝßÝ*Þ2ÞÈÞÐÞôÞÉßîßàEà€à›àõà€5Ÿb9+324252627298:8;8<8=8>8?8A@B@C@D@E@F@G@H@I@KJLJMJNJOJPJQJRJSJTJUJWVXVYVZV[V\V]V^V_V`VaVbVcVedfdgdhdidjdkdldmdndodpdqdrdsdzy|{ˆ‡‰‡Š‡‹‡Œ‡‘’“”•¤£¥£¦£§£¨£©£ª£¬«­«®«¯«°«±«²«¹¸º¸»¸¼¸½¸¾¸¿¸À¸Á¸ÃÂÄÂÅÂÆÂÇÂÈÂÉÂÊÂËÂÌÂÍÂÎÂÏÂÐÂÑÂÒÂÓÂÔÂÕÂÖÂ×ÂØÂÙÂÚÂÛÂÜÂÝÂÞÂßÂàÂáÂâÂãÂäÂåÂæÂçÂèÂéÂêÂëÂìÂíÂîÂï !"#$%&'()*+,-.0/1/2/3/4/5/6/7/8/:9;9<9=9>9?9@9A9B9C9D9E9GFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF[F]\^\_\`\a\b\c\d\e\f\hgigjglkmknkokpkqkrksktkvuwuxuyuzu{u|u}u~uu€uu‚uƒu„u…u†u‡uˆu‰uŠu‹uŒŽ‘’“”•Œ–Œ—Œ˜Œ™ŒšŒ›ŒœŒŒžŒŸŒ Œ¡Œ¢Œ£Œ¤Œ¥Œ¦Œ§Œ¨Œ©ŒªŒ«Œ¬Œ­Œ®Œ¯Œ°Œ±Œ²Œ³Œ´ŒµŒ¶Œ·Œ¸Œ»º¼º½º¾º¿ºÀºÁºÂºÃºÄºÅºÆºÇºÈºÉºÊºËºÌºÍºÎºÏºÐºÑºÒºÓºÔºÕºÖº×ºØºÙºÚºÛºÜºÝºÞºßºàºáºâºãºäºåºæºçºèºéºêºëºìºíºîºïºðºñºòºóºôºõºöº÷ºøºùºúºûºüºýºþºÿºººººººººº º º º º ººººººººººººººººººº º!º"º#º$º%º&º'º(º)º*º+º,º-º.º/º0º54647484:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~99€99‚9ƒ9„9…9†9‡9ˆ9‰9Š9‹9Œ99Ž999‘9’9“9”9•9–9—9˜9™9š9›9œ99ž9Ÿ9 9¡9¢9£9¤9¥9¦9§9¨9©9ª9«9¬9­9®9¯9°9±9²9³9´9µ´¶´·´¹¸º¸¼»½»¾»¿»À»Á»Â»Ã»ÅÄÆÄÇÄÈÄÉÄÊÄËÄÌÄÍÄÎÄÏÄÐÄÑÄÓÒÔÒÕÒÖÒ×ÒØÒÙÒÚÒÛÒÜÒÝÒÞÒßÒàÒáÒâÒãÒäÒåÒæÒçÒèÒéÒêÒíìîìïìðìñìòñóìôìõìöì÷ìøìùìúìûìüìýìþìÿìììììììììì ì ì ì ì ììììììììììì !"#$%&%'%(%)%*%+%,%-%.%/%0%1%2%3435368797:7;7<7=7>7?7@7A7B7C7D7FEHGKJLJMJNJONRQSQTQUQVQWQXQYQ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZvuwuxuyu|{}{~{{€{{‚{„ƒ…ƒ†ƒ‡ƒ‰ˆŠˆ‹ˆŒŽŒŒŒ’‘“‘”‘•‘–‘—‘ Ÿ¡Ÿ¢Ÿ¥¤¦¤§¤¨¤©¤ª¤«¤¬¤­¤®¤¯¤°¤±¤²¤³¤´¤µ¤¶¤·¤¸¤¹¤º¤»¤¼¤½¤¾¤¿¤À¤Á¤Â¤Ã¤Ä¤Å¤Æ¤Ç¤È¤É¤Ê¤Ë¤Ì¤Í¤ÏÎÐÎÑÎÒÎÓÎÔÎÕÎÖÎ×ÎØÎÙÎÚÎÛÎÜÎÝÎÞÎßÎàÎáÎâÎäãåäæäçäèäéäêäëäìãíãîãïãðãñãòãóãõôöô÷ôø÷ùôúôûôüôýôþôÿôôôôôôô         !"#$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$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$[$\$]$^$_$`$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${$|$}$~$$€$$‚$ƒ$„$…$†$‡$ˆ$‰$Š$‹$Œ$$Ž$$$‘$’$“$”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$Ó$Ô$Õ$Ö$×$Ø$Ù$Ú$Û$ÜÝÞàßâáãáäáåáæáçáèáéáêáëáìáíáîáïáðáñáòáóáõôöô÷ôøôùôúôûôüôýôþôÿôôôôôôôôôô ô ô ô ô ôôôôôôôôôôôôôôôôôôô ô!ô"ô#ô$ô%ô&ô'ô(ô)ô*ô+ô,ô-ô.ô/ô0ô1ô2ô3ô4ô5ô6ô7ô8ô9ô:ô;ô<ô=ô>ô?ô@ô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ô[ô\ô]ô^ô_ô`_a_b_c_d_e_fôgfhôiômlnlolplqlrlsltlulvldukdxkfukfxkhukhxkjukjxkluklxknuknxkpukpxkp(lrukrxkr(ltuktxkt(lvukvxkv(lxukxxkx(lzukzxkz(l|uk|xk|(l~uk~xk~(l€uk€xk€(l€àl‚uk‚xk‚(l‚àl„uk„xk„(l„àl†uk†xk†(l†àlˆukˆxkˆ(lˆàlŠukŠxkŠ(lŠàlŒukŒxkŒ(lŒàlŽukŽxkŽ(lŽàlukxk(làl’uk’xk’(l’àl”uk”xk”(l”àl”¿m–uk–xk–(l–àl–¿m˜uk˜xk˜(l˜àl˜¿mšukšxkš(lšàlš¿mœukœxkœ(lœàlœ¿mžukžxkž(lžàlž¿m uk xk (l àl ¿m¢uk¢xk¢(l¢àl¢¿m¤uk¤xk¤(l¤àl¤¿m¦uk¦xk¦(l¦àl¦¿m¨uk¨xk¨(l¨àl¨¿mªukªxkª(lªàlª¿m¬uk¬xk¬(l¬àl¬¿m¬Ên®uk®xk®(l®àl®¿m®Ên°uk°xk°(l°àl°¿m°Ên²uk²xk²(l²àl²¿m²Ên´uk´xk´(l´àl´¿m´Ên¶uk¶xk¶(l¶àl¶¿m¶Ên¸uk¸xk¸(l¸àl¸¿m¸Ênºukºxkº(lºàlº¿mºÊn¼uk¼xk¼(l¼àl¼¿m¼Ên¾uk¾xk¾(l¾àl¾¿m¾ÊnÀukÀxkÀ(lÀàlÀ¿mÀÊnÂukÂxkÂ(lÂàl¿mÂÊnÄukÄxkÄ(lÄàlÄ¿mÄÊnÆukÆxkÆ(lÆàlÆ¿mÆÊnÈukÈxkÈ(lÈàlÈ¿mÈÊnÈpÊukÊxkÊ(lÊàlÊ¿mÊÊnÊpÌukÌxkÌ(lÌàlÌ¿mÌÊnÌpÎukÎxkÎ(lÎàlοmÎÊnÎpÐukÐxkÐ(lÐàlпmÐÊnÐpÒukÒxkÒ(lÒàlÒ¿mÒÊnÒpÔukÔxkÔ(lÔàlÔ¿mÔÊnÔpÖukÖxkÖ(lÖàlÖ¿mÖÊnÖpØukØxkØ(lØàlØ¿mØÊnØpÚukÚxkÚ(lÚàlÚ¿mÚÊnÚpÜukÜxkÜ(lÜàlÜ¿mÜÊnÜpÞukÞxkÞ(lÞàlÞ¿mÞÊnÞpàukàxkà(lààlà¿màÊnàpâukâxkâ(lâàlâ¿mâÊnâpäukäxkä(läàlä¿mäÊnäpæukæxkæ(læàlæ¿mæÊnæpì qì€qð qò qô qö qø qú qþ q q q9u9uCu q  q  qnwswnwswnwswnwswnwswnwswnwswnwsw  q" q$ q& q( q* q, q. q4uk4xk89u:Cu<9u<Cu>9u>Cu@ qj˜‰j¡‰j¨‰j€ql˜‰l¡‰l¨‰l€ql±‰â qî qú qü q q qb£t£ b£"nw$nw&nw(nw(sw*nw*sw,nw,sw< q> q>€q@€q@ qB qB€qD€qD qF qH qJ qJ€qL€qL qN qP qR qT qX qZ qZ†§Z§\ q\§\†§` q`€qb qd qf qf€qh qh€qj ql qn qp qp†§p§t¢‚t.ttïxv.tvïxx.txïxz.tzïx|.t|ïx~.t~ïx€.t€ïx‚.t‚ïx“ q£iq¥iq¥pq§iq§pq§wq©iq©pq©wq©~q« q­ q­€q¯uk¯xk¯€q±uk±xk±(l±€q³uk³xk³(l³àl³€qµukµxkµ(lµàlµ¿mµ€qÌ qÐ qÒ qÔ qØ.tÚ.tÜ.tä qø.tú.t.t.t  q q q q q q q q q  q" q$ q& q( q+.t,.t..t0.t2.t4.t6.t8.t8ïx:.t<ïx<.t@ïxBïxB.tF.tH.tL.tN.tP.tR.tT.tV.tX.tZ.tb.tf qj.tl.tn.tp.t†.tˆ.tŠ.tŒ.tŽ q q’ q” qš qœ qž q  q¢ q¤ q¦ qÃ.tÆ qÈ qÊ qË.tÌ qÍÜxÎ qÐ qÑïxÒ qÓïxÔ qÖ qØ qÚ qÞ qà qâ qäëŸæëŸæñŸèëŸèñŸè÷Ÿê ê.tê qì qî qð qò ò qô ô qø qø ú qú ü ü qþ qþ  q  q q q  q  q q b£$ q& q&b£( q(b£* q, q,b£. q.b£0 q2 q2b£4 q4b£6 q8 q8b£:b£<b£>b£@b£Bb£Db£Fb£Jb£Lb£Nt£Pt£Rt£Tt£Vt£Xt£Y.tZt£\t£^t£`t£a€q¤.t¤ïx.tïx.tïx¢‚!.t!ïx!¢‚!¤‚#.t#ïx#¢‚#¤‚#¦‚%.t%ïx%¢‚%¤‚%¦‚%ªtr.trïxt.ttïxŽ€q€q”.t”ïxœ€qÒ¤‚ÒïxÒ¢‚ÔïxÔ¢‚Ô¤‚æïx좂ð¢‚ò¢‚ô¢‚ö¢‚øïxø¢‚ ¤‚¤‚¤‚¤‚¦‚ ¦‚"¦‚$¤‚$¦‚&¤‚ˆ¡‰¤9uª9uªCu¬9u¬Cu® q° q² qðukðxkø.tú.tü.tþ q.t.t.t q.t  q €q  q qnw qnw qnw q.tïx.tïxnwsw .t ïx$nw$sw&nw&sw(nw(sw*sw*nw,nw,sw.nw.swJ qLïxL.tN qP qRïxR.tT¢‚T.tTïxV qX qX€qZ qZ€q\uk\xk\€q^ q^€q`uk`xkbukbxkb(ld qf qhïxh.tj ql qn qp qr qt qv¡‰v qx qz q| q~ q€ q€nw‚ q‚nw„ q„nw† q†nwˆ qŠ qŠnwŒ qŒnwŽ q qnw’nw”nw” q– q˜ qš qž q  q¢ q¤€q¦ q¨ïx¨.tª qª€q¬ q° q² q²€q´ q¶€q¶ q¶ò¸ q¸€qº q¼ q¾ qÀCuÂ9uÂCuÄ9uÄCuÈ qÊ qÌ qÎ qÐ qÒ qÔ qÖ qØ qÚ qÜ qÞ qà qâ qä qæ qê qì qò qôïxô.töïxö.tø¢‚ø.tøïxú€qú qü qþïxþ.t€q€q€q.t q q  q q q q q q q&€q& q(€q( q* q, q<uk<(l<xk>(l>uk>xk@ qB qBD qF qL qN qP qR¡‰R qT q_ qk qq qž q  q¢ q¢¤ q¤ª qª€q¬ q¬€q¬iq® q² q¶ qº q¾ q qÆ qÊ qÎ qÐ qÔ qØ qÚ qÞ qâ qä qè qì qî qî€qò qò€qô qô€qø qø€qú qú€qü q q q q q q q q q q q" q$ q% q' q( q) q+ q+ €q, q- q- €q. q1 q2 q3 q5 q6 q7 q: q> qA qB qF qG qI qJ qM qN qO qP qT qX qY qZ q[ q] q^ q_ qa ëŸa qb qc ëŸc ñŸc qd qd €qe ëŸe ñŸe ÷Ÿe qg  g qh qh €qi  i qk ql ql €qn qq qr qv qw qx q| q€ q‚ q† qŠ qŒ q q” q– q™ .tš q› .t .tž q  q¤ q§ q¨ q© qª qª €q® q® €q° q° €q´ q´ €q¶ q¶ €qÀ qÄ ukÄ xkÄ €qÆ xkÆ €qÆ ukÈ ukÈ xkÈ €qÉ t£Ê ukÊ xkÊ (lÊ €qË t£Ì xkÌ (lÌ €qÌ ukÍ t£Î ukÎ xkÎ (lÎ €qÏ t£Ð ukÐ xkÐ (lÐ €qÒ ukÒ xkÒ (lÒ àlÒ €qÔ ukÔ xkÔ (lÔ àlÔ €qÕ qÖ ukÖ xkÖ (lÖ àlÖ €q× qØ ukØ xkØ (lØ àlØ €qÚ xkÚ (lÚ àlÚ €qÚ ukÜ ukÜ xkÜ (lÜ àlÜ ¿mÜ €qÝ qÞ xkÞ (lÞ àlÞ ¿mÞ €qÞ ukß nwß swà ukà xkà (là àlà ¿mà €qá qâ ukâ xkâ (lâ àlâ ¿mâ €qã t¥ã qä ukä xkä (lä àlä ¿mä €qå t¥å qæ ukæ xkæ (læ àlæ ¿mæ €qç qé qé €qê që qì qí qï qñ qó qõ qù qû qý qÿ q q q q q q q q q q q q" q$ q$ €q$ iq& ïx& ¢‚( .t( ïx( ¢‚* .t* ïx* ¢‚, ïx, ¢‚. .t. ïx. ¢‚J qJ €qJ iqL ïxL ¢‚N .tN ïxN ¢‚P .tP ïxP ¢‚Q qQ €qR ïxR ¢‚S €qT .tT ïxT ¢‚U qU €qW qY q[ €q[ q] q_ qa qc qe qe †§e §r qr €qr iqt ïxt ¢‚v .tv ïxv ¢‚x .tx ïxx ¢‚z ïxz ¢‚| .t| ïx| ¢‚˜ q˜ €q˜ iqš ïx𠢂œ .tœ ïxœ ¢‚ž .tž ïxž ¢‚  ïx  ¢‚¢ .t¢ ïx¢ ¢‚Í qÍ €qÍ  Î qÏ qÏ  Ñ qÑ  Ó qÓ €qÓ  Õ €qÕ qÕ  × q×  Ù  Ù qÚ qÚ €qÛ i¨Û qÛ o¨Ü qÜ €qÝ qÝ †§Ý §Ý  Þ qÞ €qà qà €qâ qä qä €qæ ukæ xkæ €qè ukè xkè (lè €qê ukê xkê (lê àlê €qì ukì xkì (lì àlì ¿mì €qü ukþ ukþ xk uk xk (l uk xk (l àl .t ïx ¢‚ uk xk (l àl ¿m .t ïx uk xk (l àl ¿m Ên uk xk (l àl ¿m Ên p uk xk (l àl ¿m Ên p ‡8™ q› qÉ qÉ .tË qÍ qÛ .tß q .t .t .t q q q q‡ .t‰ .t .t .t‘ .t“ .t• .t— .t™ .t™ ïx› .t› ïx .tŸ .t¡ .t§ q§ .t« .t­ .ts .tu qy q} q q   q .tƒ  ƒ qƒ .t… b£‡ b£‰ b£‰ q‹ b£‹ q b£ b£k qm qo qq qs qu qw qy qÃïxÅ.t- q9.t;.tK.t‹ q› q.t¥ïx§.t½.t½ïxÃ.tÅ.t q.t.t.t-.t-ïx/.t/ïx1.t1ïx3.t3ïx5.t5ïx7.t7ïx€q q‘€q‘ q“.t“ïx“¢‚•€q• q—€q— q™ q› q›€q qŸ q¡ q£ q¥ q§ q© qá.t'¢‚'ïx)ïx)¢‚)¤‚+ïx+¢‚+¤‚-ïx-¢‚-¤‚/ïx/¢‚/¤‚/.tŸ.t³.t¹ïx».t½.t¿.t¿ïxÛïxãïxã¢‚é¤‚ë¤‚ë¦‚í¤‚ñ.tû qý qÿ qw.tà qÅ qË.tËÜxÍ.tÍÜxÏ qÏ¡‰ q q q q! qù.tŸ q¡ q£ q¥ q§ q© q« q­ q¯ q± q³ qµ q· q¹ q» q½ q½¡‰¿ q¿¡‰Á qÁ€qà qÅ qÇ qÉ qË qÍ qÏ qÑ qÓ qÕ q× qÙ qÛ qÝ qß.tá.tå.tç.té që.tí qï.tñ qó qõ.t÷.t÷ïxù.tùïxû.tý.tÿ.t.t.t.t.t .t .t .t.t.t.t.t.t.t.t.t.t!.t#.t%.t'.t) q+.t-ïx/.t1.t3.t5.t7.t9.te qwnww qynwy q{nw{ q}nw} qnw qnw qƒnwƒ q…nw… q…€q‡nw‡ q‡€q‰nw‰ q‹nw‹ qnw qnw q‘nw‘ q‘€q“nw“ q“¡‰•nw• q•¡‰—nw— q™nw™ q›nw› qnw qŸnwŸ q¡nw¡ q£nw£ q¥nw¥ q§nw§ qµ.tµïx·.t·ïx¹.t¹ïx».t»ïx½sw½.t¿sw¿.tÁswÁ.tÃswÃ.tÅswÅ.tÇswÇ.tÉswÉ.tË.tËïxÍswÍ.tÏswÏ.tÑ.tÑïxÓ.tÓïxÓ¢‚Õ.tÕïx×.t×ïxÙ.tÙïxÙ¢‚Û.tÛïxÛ¢‚Ý.tÝïxÝ¢‚ß.tßïxߢ‚áswᢂᤂãswã.tãïx墂夂ç.tçïxé.téïxë.tëïxí.tíïxï.tïïxñnwñ qó.tóïxõ.tõïx÷.t÷ïxù.tû.tý.týïxÿ.tÿïx.tïx!nw!sw#nw#sw= q? qA qC qE qG qI qK qM qO qQ qS qU qW qY q[ q] q_ qa qa€qc qe qe€qg qi qk qm qo qq qs qu qw qy q{ q} q}€q q qƒ q… q‡ q‰ q‰€q‹uk‹xkukxk€qukxk€q‘ q“uk“xk• q•€q— q™ q›uk›xkukxkŸ q¡ q£uk£xk¥uk¥xk§ q§€q© q©€q« q«€q­ q­€q¯ q¯€q± q³ qµ q· q¹ q» q½uk½xk¿uk¿xk¿(lÁukÁxkÃukÃxkÃ(lÅ qÇ qÇ¡‰É qÉ¡‰ËukËxkË¡‰ÍukÍxkÍ¡‰Ï.tÏïxÑ.tÑïxÓ.tÓïxÕ qÕ¡‰× qס‰Ù qÛ qÝ qß qßnwá qã qå qånwç qé që qí qï qñ qó qõ q÷ qù qù€qû qý qý€qÿ q q€q q q€q q  q  q  q q q q q€q q€q q q q q! q# q% q' q) q+.t+ïx- q-€q/ q1 q3.t5 q7uk7xk9uk9xk;uk;xk=uk=xk?.t?ïx?¢‚?¤‚AukAxkA(lA€qC.tCïxC¢‚EukExkE€qGukGxkG€qI qI¡‰K qK¡‰M qO qO¡‰Q qQ¡‰SukSxkS¡‰UukUxkU¡‰W qW.tY qY¡‰[ q] q]¡‰_ q_¡‰a.taïxa¢‚cukcxkc¡‰eukexke¡‰g.tgïxiukixkk qm qo.toïxqukqxks qu qw qw€qy qy€q{ q} qukxkukxk(lƒukƒxk…uk…xk…(l‡ q‰ q‰nw‹ q q q‘ q“ q• q— q™ q› q›€q qŸ qŸ€q¡ q£ q£€q¥ q§ q§€q© q©€q« qÓ qÕ.tÕïx× qÙ¡‰Ù qÛ qÝ qß qá qã qå qç qé qëukëxkí.tíïxï.tïïxñ qó qõ qõ€q÷ q÷€qùukùxkù€qû qû€qýukýxkÿukÿxkÿ(l q q€q q€q q  q  q  qò q q q¡‰ q.tïx q qò€q q q! q# q% q' q) q+ q- q/ q/¡‰1 q3 q5 q7 q9 q; q= q? qA qC qE qG qGnwI qK qKnwM qMnwO qQ qQnwS qU qU€qW qY qY€q[ q] q]€q_ qa qa€qc qe qg qiukixkkukkxkm qo qq qg€qi.tiïxk qk€qo qo€qq qq€qs qsòs€qu€qu qw q{ q} q9uCuý qÿ.t q qa.tc.te qg qi.tiïxk.tkïxm.tmïxm¢‚o€qq qq€qs qu qw.twïxy€q{€q}.t.t€q…€q….t‡.t‡€q‰ qE qG qM qO qQ qS qm qo qq qs qu qu ¡‰w qw ¡‰y q{ q} q q €q q €qƒ q… q‡ q‰ q‹ q q q‘ q“ q• q— q™ q› q qŸ q¡ q£ q£ €q¥ q¥ €q§ q© q« q½ q¿ qÁ qà qà nwÅ qÇ qÇ nwÉ qÉ nwË qÍ qÏ .tÏ ïxÑ qÑ €qÓ .tÓ ïxÕ qÕ €q× .t× ïx× ¢‚Ù ukÙ xkÙ €qÛ qÝ qß .tá qã .tå qå €qç qç €qé .të qí qï qñ .tó .tõ q÷ qù .tû qý .tÿ .t!.t! q!.t!ïx!uk!xk !.t !ïx !¢‚ !uk !xk !(l !.t !ïx!uk!xk!.t!ïx!¢‚!uk!xk!(l! q! q! q! q!.t!.t!!.t#!.t%!.t'!.t)!.t+! q-! q/! q1! q3! q5! q7! q9! q;! q=! q?! qA! qI! qK! qM! qO! qQ! qS! qU! qW! qY! q[! q]! q_! qa! qc! qe! qg!ukg!xki!uki!xkk! qm! qo! qq! qs!uks!€qu!uku!xku!€qw!ukw!xkw!(lw!€qy! qy!€q{!uk{!xk{!€q}!uk}!xk}!(l}!€q!uk!xk!(l!xk!(l!uk…! q‡! q‰!uk‰!xk‰!(l‹!uk‹!xk‹!(l!uk!xk!(l!uk!xk!(l‘!uk‘!xk‘!(l“! q•! q—! q™! q›! q! qŸ! q¡! q§! q©! q«! q­! q¯! q±! q³! qµ! q·!€q¹!nw¹!swÃ! qÅ! qÇ! qÉ! qË! qÍ! qÏ! qÑ! qÓ! qÕ!\ÿÕ! q×! q×!€qÙ! qÛ! qÛ!€qÝ! qß! qá! qã! qå! qç! qé! që! qí! qï! qï!ñ! qó! qõ! q÷! qù!ukù!xkû! qý! qÿ! q" q" q" q" q " q " q "€q " q" q" q" q" q" q" q"€q" q5".t7".to" qq" qs"s" qu"u" q¯" q±" q³" qµ" q·" q¹" q»" q½" q¿" qÁ" qÅ" qÅ"€qÇ" qÇ"€qÇ"iqÉ" qË" qÍ" qÏ" qÑ"ukÑ"xkÓ" qÕ" q×" qÙ" qÛ" qÝ" qß" qá" qã"ukã"xkå" qç" qé" që" qí" qï" qñ" qñ"€qË&ukË&xkË&(lÍ&ukÍ&xkÍ&(lÏ& qÑ&ukÑ&xkÑ&(lÓ& qÕ& q×& qÙ& qÛ& qÝ& qß& qá& qã& qå& qç& qé& që& qí& qï& qñ& qó& qõ&.t÷&.tù&.tû&.tý&.te' qg' qi' qk' qm' qo' qq' qs' qu' qw' qy' q{' q}' q' q‡' q‰' q‹' q' q' q¯' q±' q³' qµ' q·' q¹' q¹'_ »'_ »' qå' qç' qé' që' qí' qï' qñ' qó' qõ'.tõ'ïxõ'¢‚÷' q÷'€q÷'iqù'ukù'xkù'€qû'.tû'ïxû'¢‚ý' qý'€qý'iqÿ'ukÿ'xkÿ'€q(.t(ïx(¢‚( q(€q(iq(uk(xk(€q(.t(ïx(¢‚ ( q (€q (iq (uk (xk (€qË) qÍ) qÏ).tï) qñ) qó) qõ) q÷) qù) q#* q%* q'* q;* q=* q?* qA*ukA*xkC*ukC*xkC*(lE*ukE*xkE*(lE*àlG*ukG*xkG*(lG*àlG*¿mI*ukI*xkK*ukK*xkK*(lM*ukM*xkM*(lM*àlO*ukO*xkO*(lO*àlO*¿mQ*ukQ*xkS*ukS*xkS*(lU*ukU*xkU*(lU*àlW*ukW*xkW*(lW*àlW*¿m‹* q* q* q‘* q“* q™* qŸ* q¡* q£* q¥* q§* q©* q«* q­* q¯* q±* q³* qµ* q·* q¹* q»* qË* qÍ* qÛ*ukÛ*xkÛ*(lÛ*àlÛ*¿mÝ*ukÝ*xkÝ*(lÝ*àlÝ*¿mß*ukß*xkß*(lß*àlß*¿má*uká*xká*(lá*àlá*¿má*Ênã*ukã*xkã*(lã*àlã*¿mã*Ênå*ukå*xkå*(lå*àlå*¿må*Ênç*ukç*xkç*(lç*àlç*¿mç*Êné*uké*xké*(lé*àlé*¿mé*Ênë*ukë*xkë*(lë*àlë*¿më*Ênë*pí*ukí*xkí*(lí*àlí*¿mí*Êní*pï*ukï*xkï*(lï*àlï*¿mï*Ênï*pñ*ukñ*xkñ*(lñ*àlñ*¿mñ*Ênñ*pó*ukó*xkó*(ló*àló*¿mó*Ênó*põ* qY,uk[,uk[,xk],uk],xk],(l_,uk_,xk_,(l_,àla,uka,xka,(la,àla,¿mc,ukc,xkc,(lc,àlc,¿mc,Êne,uke,xke,(le,àle,¿me,Êne,pg,ukg,xkg,(lg,àlg,¿mg,Êng,pg,Ø6Ž*òî)=î)B&*=&*B$*=$*Bî) &* $* î) !&* !$* !Ú*%Ü*%Þ*%$*•&à*’*â*’*ä*’*æ*’*è*’*ê*e/ì*e/î*e/ð*e/ò*e/Ž*÷3GŽ5Q6U³6_)8cO8g|8Ž*e<d'=ú&=ü&=·=ô*="*Á?´'=èóB óBîóBðóB¼óB¾óBÒÐCÔóBÈóBÖóBÜÐCâÐCÐóBØËDÚÐCÄóB´óBÎóBÌóBÀóBæóBêóB:*=:*B"óB*¶F"¶Fd'ÏFóBÖ=&=ÖB&B"*BòóB¶Fô~H&ŒH2=8=è=ð=Þ=ò=ô=øµJ ==´'nKø‘Kü=ú====L.L*===þ==.=d=6=*="=Š*.L0=&="*ÜM˜ÜM”nNŠ*^OŠ*=ð&Rp&R~Á?Ž*SŽƒhÐ  hÐ âh !ëh˜i˜i.FiØ Oi²ƒj,±j6Ìj4ÚknK"*›mŽ*¨mŽ*öm,!YnJoà oj=š =r– nK˜ |r¦ |rª nK¬ nKœ nKž nKÚ nKÞ nKN ò òš Au GuZ nK^ Ž5^ 6^ )8€ ‘wš ;x˜ lxš žxš Çxš Ûx  nK%nK† =š \{š |š /|"*A|enKqnK}nKnK&nKà Ž5’ Ž5à nKâ |r˜nKš|ržnK nKôM„ôì…T Ó†V nKš nKT |rT »ˆR BGBš Ž5N 6š 9“” |” ò” •˜ •˜ P•š §•@ Ù•š Ý•X 1–^ 1–ž 1–iò~f—"*o,!—¦ 8˜˜ 8˜d V˜š ž˜d ³˜˜ É™– á™jú™¬ ᙎ nK† nKŽ òŒ nK’ ò’ nKà L = = = =Ì Íž =š |rœ Ž5˜ Çx¦ k¢˜ =rŠ*¤ =š §M¨t nKš ­– ò˜*›mŠ*S®˜*`®r =r or ¯x =| =Ž = =±&C±C± =±– GuX =˜ _´ˆ =– =˜ ¡´† =œ =~ =Z =˜ ©µÈ Â¶Ê =Ì =‚ N·,!¨m,!ȸ,!B\ =– C±˜ å¹– ]º˜ •º„ =– e<ˆ *»Ó C±˜ ‰» •»˜ ›»Š *»˜ ¼ù C±˜ i¼ =˜ ™¼Œ =Ž =ž ò¦ D½Š*7¾Ä±jŽ*GuŽ*kÀŽ*ŸÀŽ*ÓÀŽ*ÁŽ*ú™Ž*fÁŽ*™ÁŽ*ÊÁŽ*óÁŽ*$ÂŽ*TÂ"*ƒj.½Ä2Ìj"*&R‚ÜMà nKÂnK!Úkº3ÖºfÖ‚È×8Í×8Ù•87Ø„±j‚3Ö8wØ"*fÖÌ ±j"*‹Ø"*‘Ø"*3Ö !±jÈãØÌ =Ù!ÚkhÙ‚&Rê &Rt&RÐ cÚ„ÜMŠÜMšöÚšnKŠöÚ¤nK¦ÜMºÜMÙ•Ð .ޙߦà-ᎹäÐ ·æJç ƒj¬ƒjÌ EèÌ è‚Ù•ê Ù•Ð ¸é~ÜM? ±j:Ù•Ð ãØ¼ìÐ °íÄÜMÂÜMœÜMJGuJÙ•JkÀJŸÀJÓÀJÁJú™JfÁJ™ÁJÊÁJóÁJ$ÂJTÂJòEè-áð>*Vñ&*Vñ>*¶ñ&*¶ñ$*¶ñ„Ù•Ù•à Ž5,|r0|rX|rJÛö>*ƒj>*±j>*ÜM&*ƒj&*±j&*ÜM>*fÖ>*3Ö>*‹Ø>*‘Ø>*&R>*Á?&*fÖ&*3Ö&*‹Ø&*‘Ø&*&R&*Á?˜rù˜¦ù˜Ùù˜ ú˜7ú$*xú$*ƒj$*±j$*ÜM$*fÖ$*3Ö$*‹Ø$*‘Ø$*&R$*Á?.'ûŽ|r.‡û’¸û’ðûŽ(üŽÛö”=r–=ràò­½Ž*ÖŽ*ÚŽ* þÁ?Š*uŠ*nK&Ûö(^à Á?*^Š*)8,^ûÁ?, lÊÁ²ÊÁà Ù•ºnK¸ÊÁ=? vÁ?¾›Ð ûÐ MŠ*OžÁ?c<gLÐ qâ›g‹ÚÊÁÌ—ÌœèÁ?Úò̰РÉÐ Üê›Ð ãìÁ?ÚÁ?ÌþP Á?vnK¼òðnKcacncŒJ ‚W ‚Á?AëhJþ!Ð L"Ê|rÌ|rjÊÁlóÁc†&€ÊÁønKøÊÁŠ*ê)Š*M*Š*®*°‹ØÜ‹Ø®æ+¨.,žg,°3ÖÜ3ÖäÝ-Š*BònKônKúnKünKøÛöö|rŽ5ÞnK.nK2nKþnKnKnKnKànKänKènKænKênKìnKînKðnKQŽ5ø|rQnKnKnKnKnK nK nKnKnKnKnKnK nKnKnK(nK,nKjnK0nK4nKÆ…="=$=="*nK™BèB¾|rÀ|rÎ|rÐ|rÒ^Ô|rÖ|rÚ^Þ¢@Ü^ô A–|rkAkAî|ræ|rè|r™Gu´|r¶|r¸|r¼|rº|rQGuÂ|rÄ|rÆ|rÈ|rÊ|rÌ|rQòQ HØ^Þ^c¬Jà^ä|r„rKJŸKê|rì|rô|rúÉMøÉMö|rüóBþóBöóB"*Ž5ôÿOôPPð)BDnKsJQXnK}FRXŽ5såRs!S@!òtnKvnKxnK&TxŽ5!nK!nK–nKš|ržnK¢|r¦|rª|r´nK¸nKlŽ5lnKÒÛöÐ|rÎÓ†ÓÊÁF nKÕnK |rÄ nK€nKÜnKÞ|rànK$nKìnKðnKÀ nKè'nKþ'Ñ^è'Ž5þ'ö^ò)nKò)Ž5ô)nKô)Ž5ð'nKð'Ž5ö nKÐ |rÔ |rÌ nK !nK*|rî nKú nK2nK6|r:|rà )8>Mcà 6B^Ø ^H|rJÓ†N|rR^V|rVÓ†\|r!Ž5`^b^f|rÚ nKÜ nKn|rê nK!nK!|r !^!|r!^!nKÈ |rÊ nK"nKnK”nKæ |r&Ù•íòíÓÀfnKfŽ5ÒnKÔ|rfnKòf6ìÓ†ðnKì|rî^øhoü³6ø¨o|rnKÚnKt|r!Ž5ÓnKrô|r³6nK0nK4nK<nKÔFRÒ0wÒvxv*»z=‡{t=hóBjóBl póBd=’*|’*{==™=’*<}8=>=@=D=à=àô&È óBÊ =àBôÀh|rp|rn|r`òbƒfƒt‹ƒ"*=†*»ˆ=à @…b=póBv=ünKþ=ü=bnKbò,!nK|nK~Ž5| Ž5bÁ?==n=r=x=€=„óB~B| B`=<*=Ê)=” nKnK– nK˜ nK}lx˜ Ž5}*»¶'Ž5£Ûö¶'nK£å•´'Ž5§FRÆ |rÆ Ó†©/–Î ÛöŽ5Ò ÛöÖ ¢@Þ nKâ Ž5ä |rè nKì nKâ nKð nKô í˜ò nKø nKü nKþ nK!nK!|r!^ !|r!^!nK*!nK!nK"!nK !nK$!nK(!nK!nK&!nKö)nKø)nKð)nK@!nKø'^(^ø&nK:*nK<*nKê'nKp"nKt"ÛöÈ"nKÊ"nKÌ"nKÎ"nKÐ"|rÒ"nKÔ"nKÖ"nKØ"nKÚ"nKÜ"nKÞ"nKà"nKâ"|rä"nKæ"nKè"nKê"nKì"nKî"nKð"|r°"nKþ'¶¥þ'ò” (¶¥®"nK¨*nKª*nK°*nK²*nK¸*nKº*nKÓŽ56"=4"=ò)=Õ=n"=ô)=r"*»Ä"ð²Æ"³Ä" µÄ"óBÆ"ò”þ'^ö&=ô&= !Ç•&Í9»óŒ¾ù‘¾ÿ¿¾$*nK&*nKî)nKÊ)nKÌ)nK>*nK°'nK'nKô'^ú'^(^(^®'=²'=ð)=ä'=æ'=ö' ô' ü' ú' ( ( ( ( Î)ÊÁ>*Ž5>*6>*)8>*öÊ&*Ž5&*6&*)8&*öÊî)Ž5î)6î))8î)öÊûnKî)¦Ó&*¦Ó$*Ž5$*6$*)8$*öÊ$*¦Óî)ò×&*ò×$*ò×XqYqxq|q'5Zq\q_qaqbqeqgqÏqÐqÒqKfL5N5OfQfVqXqÛ5q…Ž Ž qqq q qqqqqq}5‰qžÀ¤e+Ž 1Ò5Fs– u– v5wFyŽ ~q† 5ƒ 5FSharp.Core.dllFSCore.resourcesSystemObjectmscorlibMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeCLIMutableAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeCustomOperationAttributeProjectionParameterAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributePrivateEnvironmentFSharpChoice`2IEquatable`1IComparable`1TagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1System.CollectionsIEnumerableSystem.Collections.GenericIEnumerable`1ListDebugView`1LazyFailureLazy`1IObserver`1IObservable`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1EventDelegee`1EventWrapper`2FSharpEvent`2FSharpEvent`1Microsoft.FSharp.MathBigNatSystem.NumericsBigIntegerValueTypeMicrosoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1AggregateExceptionSystem.ThreadingCancellationTokenRegistrationCancellationTokenCallbackInfoCancellationTokenSourceQueue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1Microsoft.FSharp.Data.UnitSystems.SI.UnitNamesmetrekilogramsecondamperekelvinmolecandelaMicrosoft.BuildSettingsBuildDetailsVersion$AssemblyAttributesExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45$Fslib-extra-pervasives$SI$Query$QueryExtensions$MutableTuple$LinqObservableModuleBasicObserver`1Map@2484-6Map@2482-5Choose@2494-3Choose@2492-2Filter@2502-2Partition@2506-1Scan@2514-5Scan@2511-4Pairwise@2535-3Pairwise@2532-2h1@2553h2@2568Merge@2583-3Merge@2547-2Split@2590-1Split@2591-2EventModuleMap@2373-4Filter@2379-1Partition@2386Choose@2392-1Scan@2399-3Pairwise@2413-1Merge@2424Merge@2425-1Split@2432AsyncHelpersstart@2012-3start@2013-4start@2014-5OperationCanceledExceptionawaitEither@2017-2awaitEither@2018-3awaitEither@2020-4awaitEither@2010-1awaitEither@2008timeout@2024timeout@2028-1timeout@2029-2timeout@2029-3WebExtensionsAsyncGetResponse@1959-1System.NetWebResponseAsyncGetResponse@1962-3AsyncCallbackAsyncGetResponse@1963-4AsyncGetResponse@1964-5AsyncGetResponse@1962-2AsyncGetResponse@1958downloadAsync@1985-3DownloadStringCompletedEventHandlerdownloadAsync@1985-4downloadAsync@1985-6downloadAsync@1985-5DownloadStringCompletedEventArgsdownloadAsync@1983-2downloadAsync@1982-1downloadAsync@1992-7downloadAsync@1992-8downloadAsync@1992-10downloadAsync@1992-9downloadAsync@1980AsyncDownloadString@1997-1AsyncDownloadString@1997-3AsyncDownloadString@1997-2AsyncDownloadString@1997CommonExtensionsAsyncRead@1913AsyncRead@1913-1AsyncReadBytes@1919-1AsyncReadBytes@1921-3AsyncReadBytes@1920-2AsyncReadBytes@1924-4AsyncReadBytes@1917AsyncWrite@1930AsyncWrite@1930-1SubscribeToObservable@1943AsBeginEndHelperscont@1734-3econt@1735-4ccont@1736-6CancellationTokenOpsRunSynchronously@1165RunSynchronously@1166-1RunSynchronously@1167-2Start@1191Start@1192-1Start@1193-2StartWithContinuations@1198StartWithContinuations@1198-1StartWithContinuations@1198-2AsyncImplswitchTo@886-1switchTo@885switchToNewThread@891-1switchToNewThread@890switchToThreadPool@895-1switchToThreadPool@894delimitSyncContext@931-1delimitSyncContext@931delimitSyncContext@933-3delimitSyncContext@933-2delimitSyncContext@934-5delimitSyncContext@934-4protectedPrimitiveWithResync@943unprotectedPrimitiveWithResync@948LatchOnceSuspendedAsync`1action@979ContinueWithPostOrQueue@997ResultCell`1RegisterResult@1087get_AwaitResult@1092AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxythreadStartCallbackForStartThreadWithTrampoline@673startAsync@687queueAsync@691protectedPrimitive@721reify@724resultA@739-1resultA@735args@753bindA@760-1bindA@747callA@773-1callA@773-2callA@769cont@791-1cont@791-2cont@791econt@794-1econt@794-2econt@794ccont@797-1ccont@797-2ccont@797tryFinallyA@784econt@807-3tryWithA@803ccont@818-4ccont@818-5ccont@818-3whenCancelledA@817getCancellationToken@822usingA@833whileA@841forA@849-1forA@850-2forA@847sequentialA@854CancellationState$Control-ctor@135List`1handler@142toRun@167-1toRun@167doRun@171-ctor@467-1-ctor@476-2-ctor@485-3once@1266-2once@1269-3once@1271-4once@1264-1FromContinuations@1255Catch@1293-1Catch@1293-2Catch@1292finishTask@1345-1finishTask@1344-2finishTask@1343-3Parallel@1380-3Parallel@1382-4Parallel@1384-5Parallel@1376-2Parallel@1328-1Parallel@1320StartImmediate@1412StartImmediate@1412-1StartImmediate@1412-2registration@1427-1registration@1422Sleep@1447-2Sleep@1432-1Sleep@1415AwaitWaitHandle@1461cancelHandler@1540-1cancelHandler@1533AwaitWaitHandle@1552-3AwaitWaitHandle@1548-2AwaitWaitHandle@1529-1AwaitIAsyncResult@1564ReifyResult@1572AwaitAndReifyResult@1582-1AwaitAndReifyResult@1581AsyncWaitAsyncWithTimeout@1616-1AsyncWaitAsyncWithTimeout@1614-4AsyncWaitAsyncWithTimeout@1607-3AsyncWaitAsyncWithTimeout@1603-2AsyncWaitAsyncWithTimeout@1602AsyncWaitAsyncWithTimeout@1597-5onCancel@1631-1registration@1639-2callback@1649-1callback@1641FromBeginEnd@1621-1FromBeginEnd@1620FromBeginEnd@1668-2FromBeginEnd@1672-3FromBeginEnd@1675-4beginAction@1772-1AsBeginEnd@1773AsBeginEnd@1773-1onCancel@1791-3AwaitEvent@1796-5AwaitEvent@1782-2AwaitEvent@1803-7AwaitEvent@1799-6AwaitEvent@1798-3AwaitEvent@1808-4AwaitEvent@1779-1AwaitEvent@1778Ignore@1824reg@1837StartChild@1845-2StartChild@1846-3StartChild@1847-4StartChild@1834-1StartChild@1832SwitchToContext@1861-1SwitchToContext@1858handler@1872-1OnCancel@1876-3OnCancel@1876-2OnCancel@1877-4OnCancel@1870-1OnCancel@1868-ctor@2054-4Post@2146scan@2179-2scan@2154-3scan@2150-1scanNoTimeout@2190-2scanNoTimeout@2184-3scanNoTimeout@2182-1TryScan@2203-1TryScan@2198-2TryScan@2194Scan@2209-2Scan@2208-1processFirstArrival@2220-2processFirstArrival@2216-1TryReceive@2224processFirstArrival@2235-5processFirstArrival@2231-4Receive@2239p@2287-1p@2288-3p@2288-2p@2287msg@2299msg@2314-1PostAndTryAsyncReply@2328-2PostAndTryAsyncReply@2327-1PostAndTryAsyncReply@2326PostAndTryAsyncReply@2322-4PostAndTryAsyncReply@2321-3PostAndAsyncReply@2343-1PostAndAsyncReply@2342msg@2337-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1731ApplicationsPattern@1733SpecificCallPattern@1751SpecificCallPattern@1757-1TypePatternsModuleByteStreamLetRecursivePattern@478getRecordProperty@488System.ReflectionPropertyInfogetUnionCaseInfo@494checkArgs@589ParameterInfomkNewTupleWithType@661mkNewRecord@678mkNewUnionCase@687mkNewArray@702dlfun@809mkLetRec@831mkLetRec@833-1typesEqual@842instFormal@844methInfos@856MethodInfoargTs@867haveArgTs@873select@864argTs@888-1inst@931mkNamedTycon@1101u_tyconstSpec@1125u_tyconstSpec@1126-1u_tyconstSpec@1127-2appL@1130u_dtype@1135u_dtype@1136-1u_dtype@1136-2u_dtype@1136-3u_dtypes@1139u_dtypes@1139-1BindingEnvenvClosed@1156u_Expr@1163u_Expr@1163-1u_Expr@1166-3u_Expr@1164-2u_Expr@1168-4u_Expr@1171-5u_Expr@1174-6u_Expr@1176-7attrs@1178u_Expr@1179-9u_Expr@1179-8u_Expr@1181-10u_VarDecl@1185u_VarRef@1188u_RecdField@1191u_UnionCaseInfo@1194u_UnionCaseField@1198u_MethodInfoData@1206u_MethodInfoData@1206-1u_constSpec@1289u_constSpec@1289-1u_constSpec@1267-2u_constSpec@1268-3u_constSpec@1269-4u_constSpec@1270-5u_constSpec@1271-6u_constSpec@1272-7u_constSpec@1273-8u_constSpec@1274-9u_constSpec@1275-10u_constSpec@1276-11u_constSpec@1277-12u_constSpec@1278-13u_constSpec@1279-14u_constSpec@1280-15u_constSpec@1281-16u_constSpec@1282-17u_constSpec@1283-18u_constSpec@1284-19u_constSpec@1285-20u_constSpec@1286-21u_constSpec@1287-22u_constSpec@1288-23u_constSpec@1251-24u_constSpec@1252-25u_constSpec@1253-26u_constSpec@1254-27u_constSpec@1255-28u_constSpec@1256-29u_constSpec@1257-30u_constSpec@1258-31u_constSpec@1259-32u_constSpec@1260-33u_constSpec@1261-34u_constSpec@1262-35u_constSpec@1263-36u_constSpec@1264-37u_constSpec@1265-38u_constSpec@1266-39u_constSpec@1236-40u_constSpec@1237-41u_constSpec@1242-42u_constSpec@1243-43u_constSpec@1244-44u_constSpec@1245-45u_constSpec@1246-46u_constSpec@1247-47u_constSpec@1248-48u_constSpec@1249-49u_ReflectedDefinition@1290MethodBaseu_ReflectedDefinitions@1291unpickleExpr@1293unpickleExpr@1293-1unpickleReflectedDefns@1295fillHolesInRawExpr@1307freeInExprAcc@1318mkTyparSubst@1333Clashsubstargs@1345substituteInExpr@1361decodedTopResources@1378IEqualityComparer`1AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1418registerReflectedDefinitions@1422qdataResources@1456qdataResources@1452-1data@1465-1data@1464SimpleUnpickleInputStatephase2data@1075phase2data@1075-1HelpersmkRLinear@51mkLLinear@52$Quotationsexpr@204pairL@207varL@214|Lambda|_|@216-1|NLambdas|_|@224-1GetLayout@273Applications@1528NewDelegate@1593PrintfModulePrintFormatToStringThen@574-1PrintFormatToStringThen@573-2PrintFormatToStringThen@575-3PrintFormatToStringThen@572kprintf_imperative@584-1kprintf_imperative@584PrintFormatToStringBuilderThen@589PrintFormatToTextWriterThen@592PrintFormatToStringThen@595-4PrintFormatToStringThenFail@598PrintFormatToStringBuilder@601PrintFormatToTextWriter@604PrintFormatLineToTextWriter@607PrintfImplPrintfInfobuildFunctionForOneArgPat@212buildFunctionForTwoArgPat@220-1buildFunctionForTwoArgPat@219buildFunctionForOneFunArgPat@226captureCoreArgs@312-1captureCoreArgs@329-2captureCoreArgs@314-3captureCoreArgs@313-4captureCoreArgs@331-5captureCoreArgs@330-6captureCoreArgs@327-7captureCoreArgs@321-8captureCoreArgs@323-9captureCoreArgs@322-10captureCoreArgs@324-11captureCoreArgs@332-12captureCoreArgs@315-13captureCoreArgs@328-14captureCoreArgs@333-15capturePrecisionArg@340-1capture1@344gprintf@514capture@540-1$PrintfDisplayBreaksitemL@667itemL@680-1PrecedenceShowModestopShort@788-1res@828objL@791-1recdAtomicTupleL@879-3recdAtomicTupleL@879-2recdAtomicTupleL@879-1recdAtomicTupleL@880-6recdAtomicTupleL@880-5recdAtomicTupleL@880-4recdAtomicTupleL@880-7objL@791-2bracketIfL@882-1project@956project2@965-1rowL@967project1@968possibleKeyValueL@986-4possibleKeyValueL@986-3possibleKeyValueL@986-2possibleKeyValueL@989-7possibleKeyValueL@989-6possibleKeyValueL@989-5possibleKeyValueL@982-1itemLs@992reprL@1002-1itemLs@1008-1reprL@1039-2IComparerreprL@1045-3itemL@895-6itemL@895-5itemL@895-4itemL@894-3project@903-2leafFormatter@1090squash_layout@1134output_layout@1138layout_to_string@1142ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@354pvals@360-1LayoutOpsjoin@146join1@147join2@148join3@149op_AtAt@160op_AtAtMinus@161op_AtAtMinusMinus@162commaListL@172semiListL@173spaceListL@174sepListL@175aboveListL@181unfoldL@207$Sformatget_Default@242NumericLiteralsNumericLiteralI$ZBigNatModuleencodingmulKaratsuba@981mul@1045FFTFp$N$Eventget_Publish@36-cctor@47-173mi@100get_Publish@144-2get_Publish@131-1h@171-1get_Publish@173-4get_Publish@161-3ImplgetInstancePropertyReader@71getUnionTypeTagNameMap@199FieldInfogetUnionTypeTagNameMap@198-1getUnionTypeTagNameMap@180-2tagField@204getUnionTagConverter@216getUnionTagConverter@217-1getUnionTagConverter@220-2fieldsPropsOfUnionCase@266fieldsPropsOfUnionCase@265-1fieldsPropsOfUnionCase@264-2getUnionCaseRecordReader@274getUnionTagReader@278getUnionTagReader@282-1getUnionTagReader@287-2getUnionTagReader@285-3getUnionCaseConstructor@320orderTupleProperties@408getTupleCtor@436reader@447-1getTupleReader@453getTupleConstructor@466fieldPropsOfRecordType@532fieldPropsOfRecordType@531-1getRecordReader@542getRecordConstructor@558$ReflectMakeTupleType@681GetUnionCases@704Invoke@720-4PreComputeRecordFieldReader@746SetModuleSetTreeModulesubset@270psubset@272psubset@272-1SetIterator`1mkIEnumerator@426-1copyToArray@485-1ofArray@504$SetFold@603Map@623-3Union@660Intersection@663MapModuleToSeq@714FindKey@717TryFindKey@720MapTreeModuleofList@321copyToArray@346MapIterator`2mkIEnumerator@394$MapSystem-Collections-Generic-IDictionary-2-get_Keys@587-1System-Collections-Generic-IDictionary-2-get_Keys@587System-Collections-Generic-IDictionary-2-get_Values@590-1System-Collections-Generic-IDictionary-2-get_Values@590System-IComparable-CompareTo@611get_Items@634Array4DModuleArray3DModule$Array3ArrayModule$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@835mkUnfoldSeq@836InitializeInfinite@848Initialize@853revamp@907revamp2@909Filter@914Map@922-1MapIndexed@927-1Map2@933Choose@938Zip@944Zip3@951Cast@956Take@997fromGenerator@1053Append@1061-1Append@1061OfArray@1106Singleton@1124Truncate@1130Pairwise@1139Scan@1150Windowed@1190result@1235cleanup@1249ReadOnly@1262GroupBy@1274-1GroupBy@1285-2GroupBy@1289-3GroupBy@1269Distinct@1295DistinctBy@1306SortBy@1316Sort@1324CountBy@1336-1CountBy@1343-2CountBy@1332TakeWhile@1485Skip@1493SkipWhile@1503RuntimeHelpersStructBox`1gcomparer@532get_Comparer@533mkSeq@543EmptyEnumerable`1Generate@557EnumerateFromFunctions@565EnumerateFromFunctions@566-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@696EnumerateUsing@697-1mkConcatSeq@700EnumerateWhile@713-1EnumerateWhile@712EnumerateThenFinally@729-1h@742CreateEvent@744-1CreateEvent@734GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@403Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@386EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@496-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@501cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@156filter@173unfold@190getCurrent@225-1upto@229generateWhileSome@265ArrayEnumerator`1Singleton`1EnumerateThenFinally@322$SeqMoveNextImpl@773ComparisonIdentityFromFunction@48IComparer`1HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@114MapIndexed@119Copy@124Rebase@131$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsOperatorsop_ComposeRight@3580op_ComposeLeft@3582op_Range@5367op_RangeStep@5383PowInteger@5529PowInteger@5529-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4819RangeInt32@4819-1RangeInt32@4819-2RangeInt64@4820RangeInt64@4820-1RangeInt64@4820-2RangeUInt64@4821RangeUInt64@4821-1RangeUInt64@4821-2RangeUInt32@4822RangeUInt32@4822-1RangeUInt32@4822-2RangeIntPtr@4823RangeIntPtr@4823-1RangeIntPtr@4823-2RangeUIntPtr@4824RangeUIntPtr@4824-1RangeUIntPtr@4824-2RangeInt16@4825RangeInt16@4825-1RangeInt16@4825-2RangeUInt16@4826RangeUInt16@4826-1RangeUInt16@4826-2RangeSByte@4827RangeSByte@4827-1RangeSByte@4827-2RangeByte@4828RangeByte@4828-1RangeByte@4828-2RangeDouble@4829RangeDouble@4829-1RangeDouble@4829-2RangeSingle@4830RangeSingle@4830-1RangeSingle@4830-2RangeGeneric@4831RangeGeneric@4831-1RangeStepGeneric@4832RangeStepGeneric@4832-1RangeChar@4834RangeChar@4834-1UnaryDynamicImpl@5130BinaryDynamicImpl@5136AbsDynamicImplTable`1-cctor@5142-61-cctor@5142-62-cctor@5143-63-cctor@5143-64-cctor@5144-65-cctor@5144-66-cctor@5145-67-cctor@5145-68-cctor@5146-69-cctor@5146-70-cctor@5147-71-cctor@5147-72-cctor@5148-73-cctor@5148-74-cctor@5149-75Decimal-cctor@5149-76AcosDynamicImplTable`1-cctor@5157-77-cctor@5157-78-cctor@5158-79-cctor@5158-80AsinDynamicImplTable`1-cctor@5166-81-cctor@5166-82-cctor@5167-83-cctor@5167-84AtanDynamicImplTable`1-cctor@5175-85-cctor@5175-86-cctor@5176-87-cctor@5176-88Atan2DynamicImplTable`2-cctor@5184-89-cctor@5184-91-cctor@5184-90-cctor@5185-92-cctor@5185-94-cctor@5185-93CeilingDynamicImplTable`1-cctor@5193-95-cctor@5193-96-cctor@5194-97-cctor@5194-98ExpDynamicImplTable`1-cctor@5202-99-cctor@5202-100-cctor@5203-101-cctor@5203-102FloorDynamicImplTable`1-cctor@5211-103-cctor@5211-104-cctor@5212-105-cctor@5212-106TruncateDynamicImplTable`1-cctor@5220-107-cctor@5220-108-cctor@5221-109-cctor@5221-110RoundDynamicImplTable`1-cctor@5229-111-cctor@5229-112-cctor@5230-113-cctor@5230-114SignDynamicImplTable`1-cctor@5238-115-cctor@5238-116-cctor@5239-117-cctor@5239-118-cctor@5240-119-cctor@5240-120-cctor@5241-121-cctor@5241-122-cctor@5242-123-cctor@5242-124-cctor@5243-125-cctor@5243-126-cctor@5244-127-cctor@5244-128-cctor@5245-129-cctor@5245-130LogDynamicImplTable`1-cctor@5253-131-cctor@5253-132-cctor@5254-133-cctor@5254-134Log10DynamicImplTable`1-cctor@5262-135-cctor@5262-136-cctor@5263-137-cctor@5263-138SqrtDynamicImplTable`2-cctor@5271-139-cctor@5271-140-cctor@5272-141-cctor@5272-142CosDynamicImplTable`1-cctor@5280-143-cctor@5280-144-cctor@5281-145-cctor@5281-146CoshDynamicImplTable`1-cctor@5289-147-cctor@5289-148-cctor@5290-149-cctor@5290-150SinDynamicImplTable`1-cctor@5298-151-cctor@5298-152-cctor@5299-153-cctor@5299-154SinhDynamicImplTable`1-cctor@5307-155-cctor@5307-156-cctor@5308-157-cctor@5308-158TanDynamicImplTable`1-cctor@5316-159-cctor@5316-160-cctor@5317-161-cctor@5317-162TanhDynamicImplTable`1-cctor@5325-163-cctor@5325-164-cctor@5326-165-cctor@5326-166PowDynamicImplTable`2-cctor@5334-167-cctor@5334-169-cctor@5334-168-cctor@5335-170-cctor@5335-172-cctor@5335-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@3000Adapt@3006FSharpFunc`4Invoke@3013-1Adapt@3021-1Adapt@3024-2FSharpFunc`5Adapt@3038-3Adapt@3043-4Adapt@3046-5Invoke@3048-2FSharpFunc`6Invoke@3054-3Adapt@3063-6Adapt@3068-7Adapt@3073-8Adapt@3076-9LanguagePrimitivesFastGenericEqualityComparer@2092FastLimitedGenericEqualityComparer@2093CharComparer@2099StringComparer@2100SByteComparer@2101Int16Comparer@2102Int32Comparer@2103Int64Comparer@2104IntPtrComparer@2105ByteComparer@2106UInt16Comparer@2107UInt32Comparer@2108UInt64Comparer@2109UIntPtrComparer@2110FloatComparer@2111Float32Comparer@2112DecimalComparer@2113FastGenericComparerTable`1-cctor@2150-cctor@2173-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2417-2-cctor@2418-3-cctor@2419-4-cctor@2423-5-cctor@2422-7-cctor@2422-6AdditionDynamicImplTable`3dyn@2451-2dyn@2451-1dyn@2450-3dyn@2449-5dyn@2449-4-cctor@2454-8-cctor@2455-9-cctor@2456-10-cctor@2457-11-cctor@2458-12-cctor@2459-13-cctor@2460-14-cctor@2461-15-cctor@2462-16-cctor@2463-17-cctor@2464-18-cctor@2465-19-cctor@2466-20CheckedAdditionDynamicImplTable`3dyn@2488-8dyn@2488-7dyn@2487-9dyn@2486-11dyn@2486-10-cctor@2491-21-cctor@2492-22-cctor@2493-23-cctor@2494-24-cctor@2495-25-cctor@2496-26-cctor@2497-27-cctor@2498-28-cctor@2499-29-cctor@2500-30-cctor@2501-31-cctor@2502-32-cctor@2503-33-cctor@2504-34MultiplyDynamicImplTable`3dyn@2528-14dyn@2528-13dyn@2527-15dyn@2526-17dyn@2526-16-cctor@2531-35-cctor@2532-36-cctor@2533-37-cctor@2534-38-cctor@2535-39-cctor@2536-40-cctor@2537-41-cctor@2538-42-cctor@2539-43-cctor@2540-44-cctor@2541-45-cctor@2542-46-cctor@2543-47CheckedMultiplyDynamicImplTable`3dyn@2565-20dyn@2565-19dyn@2564-21dyn@2563-23dyn@2563-22-cctor@2568-48-cctor@2569-49-cctor@2570-50-cctor@2571-51-cctor@2572-52-cctor@2573-53-cctor@2574-54-cctor@2575-55-cctor@2576-56-cctor@2577-57-cctor@2578-58-cctor@2579-59-cctor@2580-60HashCompareGenericComparerfsEqualityComparer@1619IEqualityComparerfsEqualityComparerER@1624CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3110op_Implicit@3112-1FromConverter@3114ToConverter@3115ToFSharpFunc@3125ToFSharpFunc@3128-1FuncFromTupled@3130FuncFromTupled@3131-1FuncFromTupled@3132-2FuncFromTupled@3133-3SR$Sr$Prim-types-preludeIStructuralComparableIStructuralEquatableITupleTupleTuple`1Tuple`2Tuple`3Tuple`4Tuple`5Tuple`6Tuple`7Tuple`8FSharp.CoreSystem.Runtime.CompilerServicesDependencyAttribute.ctorLoadHintDefaultDependencyAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyDefaultAliasAttributeAssemblyCompanyAttributeAssemblyProductAttributeAssemblyCopyrightAttributeAssemblyVersionAttributeAssemblyFileVersionAttributeAssemblyInformationalVersionAttributeSystem.ResourcesSatelliteContractVersionAttributeNeutralResourcesLanguageAttributeAssemblyDelaySignAttributeAssemblyKeyFileAttributeRuntimeCompatibilityAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesGetHashCodeEqualsobjSystem-IComparable-CompareTo_objCompareTovalue__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueget_ValueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageget_MessageCountscountsCloneget_CountsNameAllowIntoPatternIsLikeZipIsLikeJoinIsLikeGroupJoinJoinConditionWordMaintainsVariableSpaceMaintainsVariableSpaceUsingBindnameisBinaryallowIntoisJoinisGroupJoinmaintainsVarSpacemaintainsVarSpaceWithBindjoinOnWordget_Nameget_AllowIntoPatternset_AllowIntoPatternvget_IsLikeZipset_IsLikeZipget_IsLikeJoinset_IsLikeJoinget_IsLikeGroupJoinset_IsLikeGroupJoinget_JoinConditionWordset_JoinConditionWordget_MaintainsVariableSpaceset_MaintainsVariableSpaceget_MaintainsVariableSpaceUsingBindset_MaintainsVariableSpaceUsingBindMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorget_IsHiddenset_IsHiddenPathpathget_PathGetResourceString_argumentsTagCompilerGeneratedAttributeDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsChoice1Of2IsChoice2Of2NewChoice1Of2itemget_IsChoice1Of2NewChoice2Of2get_IsChoice2Of2get_TagcompT1T2Itemget_ItemDebuggerTypeProxyAttributeIsChoice1Of3IsChoice2Of3IsChoice3Of3NewChoice1Of3get_IsChoice1Of3NewChoice2Of3get_IsChoice2Of3NewChoice3Of3get_IsChoice3Of3T3IsChoice1Of4IsChoice2Of4IsChoice3Of4IsChoice4Of4_tagNewChoice1Of4get_IsChoice1Of4NewChoice2Of4get_IsChoice2Of4NewChoice3Of4get_IsChoice3Of4NewChoice4Of4get_IsChoice4Of4T4IsChoice1Of5IsChoice2Of5IsChoice3Of5IsChoice4Of5IsChoice5Of5NewChoice1Of5get_IsChoice1Of5NewChoice2Of5get_IsChoice2Of5NewChoice3Of5get_IsChoice3Of5NewChoice4Of5get_IsChoice4Of5NewChoice5Of5get_IsChoice5Of5T5IsChoice1Of6IsChoice2Of6IsChoice3Of6IsChoice4Of6IsChoice5Of6IsChoice6Of6NewChoice1Of6get_IsChoice1Of6NewChoice2Of6get_IsChoice2Of6NewChoice3Of6get_IsChoice3Of6NewChoice4Of6get_IsChoice4Of6NewChoice5Of6get_IsChoice5Of6NewChoice6Of6get_IsChoice6Of6T6IsChoice1Of7IsChoice2Of7IsChoice3Of7IsChoice4Of7IsChoice5Of7IsChoice6Of7IsChoice7Of7NewChoice1Of7get_IsChoice1Of7NewChoice2Of7get_IsChoice2Of7NewChoice3Of7get_IsChoice3Of7NewChoice4Of7get_IsChoice4Of7NewChoice5Of7get_IsChoice5Of7NewChoice6Of7get_IsChoice6Of7NewChoice7Of7get_IsChoice7Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2System.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2StringSystem.GlobalizationCultureInfoget_CurrentUICultureResourceManagerGetStringSpecializeTInvokefuncConverter`2op_ImplicitconverterFromConverterToConverterInvokeFastarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValueDebuggerDisplayAttributeIsNoneIsSomeget_NoneSomeGetTagget_IsNoneget_IsSomeConcatToStringEmptyIsEmptyIsConsHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Empty.cctorget_Emptyget_IsEmptyConsget_IsConsget_HeadOrDefaultget_TailOrNullget_LengthInt32get_DebugDisplayInvalidOperationExceptionget_Headget_TailindexSystem.TextStringBuilderAppendSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeItemslListDebugViewMaxLengthcountget_ItemsnaUndefinedexnundefinedget_Exceptionget_UndefinedIsValueCreatedvalue@5623funcOrException@5628funcOrExceptionCreatefCreateFromValuexget_IsValueCreatedMonitorEnterExitOnNextOnErrorerrorOnCompletedSubscribeobserverAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetDisposeMoveNextResetget_CurrentrescleanupClearMapEmptyget_MapEmptyNewMapOneitem1item2NewMapNodeitem3item4item5TKeyTValueItem1Item2get_Item1get_Item2Item3Item4Item5get_Item3get_Item4get_Item5ComparerCountcomparer@422tree@426serializedDataemptycomparertreeArgumentNullExceptionOnSerializingOnSerializingAttributeOnDeserializedOnDeserializedAttributeieelementsget_Comparerget_TreeAddkeyTryPickExistsFilterForAllAdaptFoldaccFoldSectionlohizIterateMapRangebMapPartitionget_CountContainsKeyRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarriSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_Itemkey@value@get_keyget_valueSetEmptyget_SetEmptyNewSetNodeNewSetOneChooseMinimumElementMaximumElementcomparer@524tree@528op_Subtractionset1set2op_AdditionIntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayDeclaringTypetyptagnamesget_DeclaringTypeGetFieldsMemberInfoGetCustomAttributesattributeTypegetMethInfoIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameFormatget_IsGenericTypeGetGenericTypeDefinitionActivatorCreateInstanceMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderPublishmulticastDelegateDynamicInvokeTriggerget_PublishmakeTuple_sendercdeinvokerinvokeInfoGetMethodGetParametersget_ParameterTypeCreateDelegateGetMethodsget_IsGenericMethodDefinitionMakeGenericMethodargbounddigitsbound@digits@get_boundget_digitsset_boundSignSignIntStructuredDisplayStringOneZeroIsZeroIsOneIsNegativeIsPositiveIsSmallsmallLimsmallPosTabonezerosignIntnatcreatesposnnegnget_Signget_SignIntget_Vop_Equalityyop_Inequalityop_LessThanop_GreaterThancomparennhashget_StructuredDisplayStringget_Oneget_Zeroop_UnaryNegationScalesubnnnxnyaddnnget_IsZeroget_IsOneop_MultiplyDivRemremop_Divisionop_ModulusGreatestCommonDivisorget_IsNegativeget_IsPositiveop_LessThanOrEqualop_GreaterThanOrEqualPowOverflowExceptionop_ExplicitFormatExceptionSubstringParsetextget_IsSmallFactorialop_UnaryPlusFromInt64FromInt32UnbreakableIsUnbreakableIsBreakableIsBroken_unique_Unbreakableget_Unbreakableget_IsUnbreakableNewBreakableget_IsBreakableNewBrokenget_IsBrokenIsLeafIsNodeIsAttrNewLeafget_IsLeafNewNodeitem6get_IsNodeNewAttrget_IsAttrItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderIFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_InvariantCultureget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsDictionary`2stampisMutable@90isMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_MetadataTokenget_Moduleget_AssemblyIsCombTermIsVarTermIsLambdaTermIsHoleTermNewCombTermget_IsCombTermNewVarTermget_IsVarTermNewLambdaTermget_IsLambdaTermNewHoleTermget_IsHoleTermAppOpIsAppOpIfThenElseOpIsIfThenElseOpLetRecOpIsLetRecOpLetRecCombOpIsLetRecCombOpLetOpIsLetOpIsNewRecordOpIsNewUnionCaseOpIsUnionCaseTestOpIsNewTupleOpIsTupleGetOpIsInstancePropGetOpIsStaticPropGetOpIsInstancePropSetOpIsStaticPropSetOpIsInstanceFieldGetOpIsStaticFieldGetOpIsInstanceFieldSetOpIsStaticFieldSetOpIsNewObjectOpIsInstanceMethodCallOpIsStaticMethodCallOpIsCoerceOpIsNewArrayOpIsNewDelegateOpQuoteOpIsQuoteOpSequentialOpIsSequentialOpAddressOfOpIsAddressOfOpVarSetOpIsVarSetOpAddressSetOpIsAddressSetOpIsTypeTestOpTryWithOpIsTryWithOpTryFinallyOpIsTryFinallyOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpWhileLoopOpIsWhileLoopOpIsValueOpIsDefaultValueOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpget_AppOpget_IsAppOpget_IfThenElseOpget_IsIfThenElseOpget_LetRecOpget_IsLetRecOpget_LetRecCombOpget_IsLetRecCombOpget_LetOpget_IsLetOpNewNewRecordOpget_IsNewRecordOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewTupleOpget_IsNewTupleOpNewTupleGetOpget_IsTupleGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewNewObjectOpget_IsNewObjectOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewCoerceOpget_IsCoerceOpNewNewArrayOpget_IsNewArrayOpNewNewDelegateOpget_IsNewDelegateOpget_QuoteOpget_IsQuoteOpget_SequentialOpget_IsSequentialOpget_AddressOfOpget_IsAddressOfOpget_VarSetOpget_IsVarSetOpget_AddressSetOpget_IsAddressSetOpNewTypeTestOpget_IsTypeTestOpget_TryWithOpget_IsTryWithOpget_TryFinallyOpget_IsTryFinallyOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_WhileLoopOpget_IsWhileLoopOpNewValueOpget_IsValueOpNewDefaultValueOpget_IsDefaultValueOpCustomAttributestermattribsget_CustomAttributesfulllongSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsargumentsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawInnerExceptionsSystem.Collections.ObjectModelReadOnlyCollection`1exnsListexnsIList`1get_InnerExceptionsidsource@id@get_sourceget_idregistrationoInt64registration1registration2IsCancellationRequestedCanBeCanceledget_IsCancellationRequestedget_CanBeCanceledRegisterstatetokentoken1token2IDActionStateaction@state@get_actionget_stateget_IDget_Actionget_StateTokennextIDregistrationslinkedCtr1linkedCtr2init@127get_TokenCancelObjectDisposedExceptionInterlockedCompareExchangedontThrowIfDisposedInternalIsCanceledthrowOnDisposedDeregisterCreateLinkedTokenSourcearraysizeDequeueSetCapacityEnqueueCopycapacityfailureCTSlinkedCTSctFakeUnit_unique_FakeUnitget_FakeUnitthisThreadHasTrampolineThisThreadHasTrampolinecontbindCountthisThreadHasTrampoline@ThreadStaticAttributeget_thisThreadHasTrampolineset_thisThreadHasTrampolineget_ThisThreadHasTrampolineExecuteActionfirstActionIncrementBindCountSetunfake_arg1trampolinesendOrPostCallbackSendOrPostCallbackwaitCallbackForQueueWorkItemWithTrampolineWaitCallbackthreadStartCallbackForStartThreadWithTrampolineParameterizedThreadStartinit@457-1SynchronizationContextPostctxtThreadPoolQueueUserWorkItemQueueWorkItemThreadset_IsBackgroundStartStartThreadProtectget_TrampolineecontcconttrampolineHoldertoken@econt@ccont@trampolineHolder@get_tokenget_econtget_ccontget_trampolineHolderauxcont@aux@get_contget_auxNewPDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchRunSynchronouslytimeoutcancellationTokenParallelcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndTArgAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextsyncContextOnCancelinterruptionTryCancelledIsClosedcompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@2262mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscannerBuildMachinePrivateBuildOfficialBuildFxBranchSyncCounterValueBranchNameBranchNamePrefixProductBuildOfAssemblyOfFileDefaultAsyncBuilderCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWriterSystem.IOTextWritertextWriterPrintFormatLineToTextWriterConsoleget_OutPrintFormatget_ErrorPrintFormatToErrorPrintFormatLinePrintFormatLineToErrorget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazyPatterninputkeysarrayIndex_arg2DefaultAsyncBuilder@157init@mappingsucceed@2442chooserpredicatecollectorPairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNextCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedwSystem-IObservable`1-SubscribelastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2start@2010-2awaitEithera1a2msecNewOkNewErrorNewCanceledocearg0unitVar0_arg3AsyncGetResponseWebRequestAsyncDownloadStringWebClientUrithisaddresscanceledWebExceptionget_StatusWebExceptionStatusreqBeginGetResponsetupledArgEndGetResponsearg00Abortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg4downloadAsyncAsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteWaitHandle.AsyncWaitOneAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamExceptionBeginWriteEndWriteaiarasyncget_asyncswitchToswitchToNewThreadswitchToThreadPoolpostOrQueuedelimitSyncContextprotectedPrimitiveWithResyncunprotectedPrimitiveWithResyncManualResetEventresEventf@4237-14f@4237-15get_ResultAvailableEventWaitHandlesavedContsf@4237-16f@4237-17matchValuelatchDothreadget_CurrentThreadContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultreuseThreadWaitOnedefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutget_threadStartCallbackForStartThreadWithTrampolinestartAsyncpqueueAsyncprotectedPrimitiveCoreprotectedPrimitivereifyresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsOkIsCanceledget_IsOkget_IsCanceledcexnACTIVEDISPOSED_ACTIVECANCELEDDISPOSED_CANCELEDdefaultCancellationTokenSource@561threadStartCallbackForStartThreadWithTrampoline@672doneA@828async@877f@4237-11listf@4237-12loop@260-40f@4237-13loop@419-41once@1263underCurrentThreadStackcontToTailCallfinishTask@1340firstExnresultsremainingf@4237-18recordSuccess@1352f@4237-19recordFailure@1362onCancel@1625once_arg5beginAction@1772onCancel@1783-2delf@4237-20f@4237-21scan@2149timeoutAsynctimeoutCtsscanNoTimeout@2181processFirstArrival@2215processFirstArrival@2230-3gsavedCConttimerTimerdueTimeTimerCallbackrwhRegisteredWaitHandleUnregistertimeOuttimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg8_arg9areventArgsctsRefregerr_arg6_arg7replyasyncReplyOfNativeIntInlinedToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1838-39exprShapePatternBooleanBoolPatternStringPatternSingleSinglePatternDoubleDoublePatternCharCharPatternSByteSBytePatternByteBytePatternInt16Int16PatternUInt16UInt16PatternInt32PatternUInt32UInt32PatternInt64PatternUInt64UInt64PatternUnitPatternstripSuccessiveProjLets@1707|TupledLambda|_|lam|TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternget_IsGenericMethodGetGenericMethodDefinitionSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternGetGetMethodPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1isg1gmdGetGenericArgumentstmfunTyCexprTyCty@442-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@319-37xs|FrontAndBack|_|esget_funTyCget_exprTyCget_ty@442-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_||Comb1|_||Comb2|_||Comb3|_|VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertytyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_PropertyTypeget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRIsAssignableFromcheckTypesWeakSRcheckArgsparamInfosget_BaseTypeloop@600-38checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuoteget_IsEnumToObjectmkLiftedValueOpGmkLambdavarmkTryWithe1v1e2v2e3mkApplicationv_0v_1mkLetRawWithCheck_arg1_0_arg1_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsetmkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetget_CanWritemkStaticPropSetmkInstancePropSetmkInstanceMethodCallminfomkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionBinderParameterModifierbindMethodHelperGetPropertybindModulePropertybindModuleFunctionmkNamedTypetyargsinstbindProppropNameretTypeargTypesGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@965l_0l_1chopinstMethngmethmethTypeArgsbindMethpinfoIsStaticdecodeFunTydecodeArrayTytysGetTypesmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsenvu_dtypeu_dtypes|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsunpickleExprlocalTypeunpickleReflectedDefnslocalAssemblyfillHolesInRawExprfreeInExprAccbvsmkTyparSubstsubstituteInExprtmsubstReadreadToEndget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4237-10qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializesplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtmethInfoparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20_arg19_arg20_arg21p_0p_1p_2p_3p_4_arg22_arg23_arg24_arg25x_0x_1_arg26_arg27_arg28_arg29_arg30_arg31_arg32_arg33_arg34_arg35_arg10_arg11_arg12_arg13_arg14_arg15_arg16_arg17_arg18uphase2bytesarg10@arg20@bvv2expSystem-Collections-Generic-IEqualityComparer`1-GetHashCodeSystem-Collections-Generic-IEqualityComparer`1-EqualsNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64IFormattableu_uniqtblu_list_auxunpickle_objisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagsinstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qrvsqOneOrMoreRLinearinpqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkvsmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_instanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@324-1exprTyC@325mscorlib@1108f@4237-9GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@211typeL@212|Lambda|_|@216ucaseL@218minfoL@219cinfoL@220cinfopinfoL@221finfoL@222|NLambdas|_|@223Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsConvertToInt32ToCharoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueget_IsArrayget_IsByRefget_IsPointerisNamedTypeisFunctionTypety1destFunTyget_instanceInvokeFlagsInvokeMemberinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitget_CharsparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@309capturePrecisionArg@337precisioncapture1UIntPtrIntPtrunboxAsInt64unboxAsUInt64IsNaNformatOne$cont@463formatOne$cont@430-1formatOne$cont@484-2xobjformatOneoutaIsSurrogatePairgo@523-3finalizerun@521initializecapture@540gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@176invariantCulture@267defaultInfo@288chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@555-8stacknextpushBreaksavingpopBreakforceBreakfitLeaf@501maxWidthlayouttextWidthbreaksfit@478leafFormattersquashToaddText@560rstrsnewLine@563addL@570optsz_0z_1showLnewLine@606-1chanaddL@613-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@734-9conv@735countNodes@787stopShort@788objL@791showModedepthLimprecsameObjL@792IndexOfLastIndexOfobjWithReprL@794showMode@794recdAtomicTupleL@876bracketIfL@882basicLproject2@964n1n2b1b2possibleKeyValueL@981objLworditemL@893-2project@903-1get_RankGetLowerBoundGetLengthGetInterfacesGetPropertiesSortreprL@885showMode@885-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowAllIsShowAllShowTopLevelBindingIsShowTopLevelBinding_unique_ShowAll_unique_ShowTopLevelBindingget_ShowAllget_IsShowAllget_ShowTopLevelBindingget_IsShowTopLevelBindingpropclo1arg10itSystem-Collections-IComparer-ComparenDepthIsDigitoptionty@442-10ty@442-11equivHeadTypesty2get_optionget_ty@442-10get_funcget_ty@442-11isListTypeIsTupleTypeIsFunctionTypeIsRecordTypeIsSumTypeUnitTypeIsUnitTypeIsObjectType_unique_UnitTypeNewTupleTypeget_IsTupleTypeNewFunctionTypeget_IsFunctionTypeNewRecordTypeget_IsRecordTypeNewSumTypeget_IsSumTypeget_UnitTypeget_IsUnitTypeNewObjectTypeget_IsObjectTypeIsTupleValueIsFunctionClosureValueIsRecordValueIsConstructorValueIsExceptionValueUnitValueIsUnitValueIsObjectValue_unique_UnitValueNewTupleValueget_IsTupleValueNewFunctionClosureValueget_IsFunctionClosureValueNewRecordValueget_IsRecordValueNewConstructorValueget_IsConstructorValueNewExceptionValueget_IsExceptionValueget_UnitValueget_IsUnitValueNewObjectValueget_IsObjectValueGetValueInfoOfObject$cont@357reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@167taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLselectorlistLsquareBracketLbraceLconsume@199itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@134option@280-1func@281-1nullL@659measureL@660tab64tabParseget_tab64get_tabParsef@4237-6x64FromInt64DynamicFromZeroFromOnef@4237-7getParseFromStringDynamicFromStringtab64@296tabParse@297baseBitsbaseNbaseMaskbaseNi64baseMaski64baseMaskUbaseMask32AbaseMask32BbaseShift32BbaseMask64AbaseMask64BbaseMask64CbaseShift64BbaseShift64CboundIntboundInt64boundBasetablebitmaskarr@557-1twopowersarr@557-2twopowersI64arr@557-3minDigitsKaratsubaproductDigitsUpperSchoolBooksingleDigitForceSchoolBookproductDigitsUpperFfttwopow64pow32maxIntminIntget_baseBitsget_baseNget_baseMaskget_baseNi64get_baseMaski64get_baseMaskUget_baseMask32Aget_baseMask32Bget_baseShift32Bget_baseMask64Aget_baseMask64Bget_baseMask64Cget_baseShift64Bget_baseShift64CfindLeastBound@390nanormNget_boundIntget_boundInt64get_boundBaseembedembed64evalget_oneget_zeroshiftUpshiftDownaddPaddsubPsubisZeroisOnecheck@531-6paqaequalcheck@541-7pnqnshiftComparecheck@559-8ltgtltegteminmaxcontributeArrscalemulSchoolBookBothSmallmulSchoolBookCarrymulSchoolBookOneSmallmulSchoolBookNeitherSmallmulSchoolBookmkEncodingbigLbigKbigNget_tableselectFrom@804bitsResencodingGivenResultBitsget_bitmaskget_arr@557-1get_twopowersget_arr@557-2get_twopowersI64get_arr@557-3hi@822wordBitsbitsextractBitsencbiencoder@862polybiMaxencodePolydecodeResultBitsevaluate@905rboundjdecodePolyquickMulUsingFftget_minDigitsKaratsubarecMulKaratsubamulmulKaratsubaget_productDigitsUpperSchoolBookget_singleDigitForceSchoolBookget_productDigitsUpperFftscaleSubInPlacescaleAddInPlaceremoveFactor$cont@1275removeFactordivmod$cont@1354DivideByZeroExceptiondivmoddivhcfloop@1411hcfget_twopower@1428powipower@1436-1powevalFloat@1451baseftoFloatofInt32ofInt64toUInt32toUInt64route@1506degnpriorten2kcollect@1511isLeadingtoStringbuild@1556strtenIsNullOrEmptyofStringisSmallgetSmallproductR@1590factorialtwoToBigLsplitsplitsbigL@twoToBigL@k@bigK@bigN@split@splits@get_bigLget_twoToBigLget_kget_bigKget_bigNget_splitget_splitsarg00@patternInput@73primePmaxBitsInsideFpmaxTwoPowertwoPowerTablearr@557mzeromonemaxFpget_patternInput@73get_wget_pget_mget_gget_primePget_maxBitsInsideFpcomputeFFTlambdamucomputeInverseFftInPlaceuTget_maxTwoPowerget_twoPowerTableget_arr@557f@555-5vTcomputeFftPaddedPolynomialProductget_mzeroget_moneget_maxFpp64mtwoget_p64get_mtwompowmpowLw@73p@73m@73k@73g@73primeP@74twoPowerTable@193maxFp@258one@444zero@445table@774bitmask@815twopowers@816twopowersI64@817productDigitsUpperSchoolBook@988singleDigitForceSchoolBook@998productDigitsUpperFft@1002two@1426Microsoft-FSharp-Control-IDelegateEvent`1-AddHandlerMicrosoft-FSharp-Control-IDelegateEvent`1-RemoveHandlermihdebugty@442ty@442-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagsemptyObjArraytuple1ty@442-2tuple2ty@442-3tuple3ty@442-4tuple4ty@442-5tuple5ty@442-6tuple6ty@442-7tuple7ty@442-8tuple8ty@442-9maxTupletupleEncFieldget_debugget_ty@442get_ty@442-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@185GetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@238-1isConstructorReprget@242-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@442-2get_tuple2get_ty@442-3get_tuple3get_ty@442-4get_tuple4get_ty@442-5get_tuple5get_ty@442-6get_tuple6get_ty@442-7get_tuple7get_ty@442-8get_tuple8get_ty@442-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiespropsgetTupleConstructorMethodgetTupleCtorreader@447getTupleReadergetTupleConstructorgetTupleConstructorInfoget@481-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@587-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41emptyObjArray@333tuple1@338tuple2@339tuple3@340tuple4@341tuple5@342tuple6@343tuple7@344tuple8@345ensureType@825setelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtolerancecountAuxheightget_tolerancerebalancet1t2balancepivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1minimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackss1s2loop@476-35toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayget_stackget_startedloop@708-36FindKeyNotFoundExceptionPickFindKeyTryFindKeykvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@294foldSectionloop@314-33f@146-4loop@566-34kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@220-25loop@230-26len1Exists2loop@237-27loop@247-28ForAll2loop@253-29loop@265-30loop@304-31loop@312-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceByprojectionSortInPlaceSortWithSortBygo@541-1FindIndexgo@553-2TryFindIndexPermuteindexMapSumSumByMinMinByMaxMaxByAverageAverageByGetSubArraystartIndexFilllistslist1list2chooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24Joinsepstringscheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1Wheresource3TakesourcesTCollectionfromGeneratorgo@1073CompareWithTruncateloop@1161-16loop@1174-17f@555-1windowSizeWindowedoneStepTo@1219prefixenumeratorRf@4237-2f@4237-3CacheReadOnlyGroupByDistinctDistinctByCountByTakeWhileSkipSkipWhileLastExactlyOneenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionsiter@632compsouterEnumcurrInnerEnumFinishtakeOuter@667currElementtakeInner@660EnumerateUsingmkConcatSeqgetCurr@705-1currstart@708-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@466GenerateFromEnumeratorStopIsStopIsYieldIsGoto_unique_Stopget_Stopget_IsStopNewYieldget_IsYieldget_IsGotoApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@155choosenext@178filterunfoldgetCurrent@221uptolastOptionf@4237readAndCleargetCurr@258start@261finish@264generateWhileSomeNotStartedIsNotStartedInProcessIsInProcessFinishedIsFinished_unique_NotStarted_unique_InProcess_unique_Finishedget_NotStartedget_IsNotStartedget_InProcessget_IsInProcessget_Finishedget_IsFinishedDoMoveNextfinalIndexactiveStructuralFromFunctionSystem-Collections-Generic-IComparer`1-CompareLimitedStructurallimitReferenceFromFunctionshasherequalityeqBase1Base2ZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@173-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@395-15sortWithcmprevAppendmergesort2sort3$cont@434cxycyzsort3trivialstableSortInnerlastableSortcreatorLazy`1.get_IsDelayedLazy`1.get_IsForcedForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternNotFailWithInvalidArgargumentNameNullArgInvalidOpRethrowObsoleteAttributeReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementEnvironmentexitcodeToUInt16ToInt16ToUInt32ToIntToEnumKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleToUInt64ToInt64ToDecimalToUIntPtrToIntPtrLocklockObjectTLockTypeOfMethodHandleOfRuntimeMethodHandle_callTypeDefOfSizeOfHashlimitedHashIdentityget_InTextReaderConsoleInConsoleOutConsoleErrorop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4744RangeInt32stopgen@4744-1RangeInt64gen@4744-2RangeUInt64gen@4744-3RangeUInt32gen@4744-4RangeIntPtrgen@4744-5RangeUIntPtrgen@4744-6RangeInt16gen@4744-7RangeUInt16gen@4744-8RangeSBytegen@4744-9RangeBytegen@4813-10RangeDoublegen@4813-11RangeSinglegen@4721-12RangeGenericgen@4744-13RangeStepGenericgen@4721-14tupledArg_0RangeCharloop@4841PowByteloop@4841-1PowSByteloop@4841-2PowInt16loop@4841-3PowUInt16loop@4841-4PowInt32loop@4841-5PowUInt32loop@4841-6PowInt64loop@4841-7PowUInt64loop@4841-8PowIntPtrloop@4841-9PowUIntPtrloop@4841-10PowSingleloop@4841-11PowDoubleloop@4841-12PowDecimalloop@4841-13PowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeEqualStepResultupcanStarttupledArg_4DefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalCompareranyToStringShowingNullGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2120.cctor$cont@2153-2.cctor$cont@2153-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64parse@2251parseOctalUInt64parse@2255-1parseBinaryUInt64TrimNumberStylesParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2330-3aty.cctor$cont@2354-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2445bty.cctor$cont@2459-5AdditionDynamicdyn@2482-6.cctor$cont@2497-6CheckedAdditionDynamicdyn@2522-12.cctor$cont@2536-7MultiplyDynamicdyn@2559-18.cctor$cont@2573-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsDivideget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@953yobjarr1GenericCompare$cont@965-1GenericComparecheck@1068lenxbasexbaseycheck1@1091lenx1basex0basex1basey0basey1check0@1090lenx0GetLongLengthprecheck@1105ndimscheckN@1115idxsbaseIdxcheck@1124-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1395erGenericEqualitySingleArrayfeq@1412GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1464iecGenericEqualityObjcheck@1554-2check1@1572-1check0@1571-1precheck@1579-1checkN@1587-1check@1594-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodesznodeCountFreshTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativeGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrcsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_IsValueTypeget_TypeInfoop_Ampop_BooleanAndOrop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringcombineTupleHashCodescodesAddressOpNotFirstClassString@635NoNegateMinValueString@636InputSequenceEmptyString@638InputArrayEmptyString@640InputMustBeNonNegativeString@642NaNException@935fsComparer@1167fsComparerNoThrow@1168fsEqualityComparer@1618fsEqualityComparerER@1623fsUnlimitedHasherER@1770fsUnlimitedHasher@1771GenericComparer@2030GenericEqualityComparer@2031GenericEqualityERComparer@2032CompareTo$cont@2948CompareTo$cont@2948-1objCastEquals$cont@2948CompareTo$cont@2957-2CompareTo$cont@2957-3GetHashCode$cont@2957Equals$cont@2957-1Equals$cont@2957-2CompareTo$cont@2967-4CompareTo$cont@2967-5GetHashCode$cont@2967-1Equals$cont@2967-3Equals$cont@2967-4copy@3264itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptyinputSequenceTooLongmapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesinvalidRecordTypeConstructorNotDefinedinvalidTupleTypeConstructorNotDefinedthenByErrorfailDueToUnsupportedInputTypeInSumByOrAverageByunsupportedIfThenElseunsupportedQueryConstructunsupportedQueryConstructKindunsupportedQueryCallunsupportedQueryPropertyget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_inputSequenceTooLongget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesget_invalidRecordTypeConstructorNotDefinedget_invalidTupleTypeConstructorNotDefinedget_thenByErrorget_failDueToUnsupportedInputTypeInSumByOrAverageByget_unsupportedIfThenElseget_unsupportedQueryConstructget_unsupportedQueryConstructKindget_unsupportedQueryCallget_unsupportedQueryPropertyGetString1GetString2GetString3resources@4GetExecutingAssemblyotherSizesbget_Sizeitem7item8T8CombineHashCodesh3h4h5h6h7h8System.ITuple.Sizem_Item1EqualityComparer`1System.Collections.IStructuralEquatable.EqualsComparer`1System.IComparable.CompareToSystem.Collections.IStructuralComparable.CompareToSystem.Collections.IStructuralEquatable.GetHashCodeSystem.ITuple.GetHashCodeSystem.ITuple.ToStringSystem.ITuple.get_Sizem_Item2m_Item3m_Item4m_Item5m_Item6Item7m_Item7get_Item7Restm_Restget_RestTRest)matchCasesIncomplete Some()Length > 1000Length = #inputListWasEmpty[; ]; ... ][]unreachable <null><evaluating><unevaluated> array map [ map []%mapCannotBeMutatednotComparableobj set [ set []%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementationtupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invoke+signs should be +/- 1x0--inputMustBeNonNegativey;The value could not be parsed=the objects are not comparableg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecordNewUnionCaseUnionCaseTestNewTuple%ATupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblycheckInitDequeueqInternal error: attempting to install continuation twice=failed to queue user work item€©F:\dd\fsharp\projects\FSharp.Core.2.0\..\..\devdiv\src\fsharp\FSharp.Core\control.fs=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated+failedReadEnoughBytesAsyncResultmismatchIAREndiar#mismatchIARCancelResultCell)Unexpected no resultOcontrolContinuationInvokedMultipleTimescmultiple waiting reader continuations for mailboxqshould not happen - waitOneNoTimeout always returns trueCTimed out with infinite timeout??'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of rangeQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray this/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '''printfExpectedWidth/printfExpectedPrecisionl true falseG%sToString count'popBreak: underflow €F:\dd\fsharp\projects\FSharp.Core.2.0\..\..\devdiv\src\utils\sformat.fs unpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=mapsetseq <seq>+<ToString exception: unuyussuLgMnan-infinityinfinity.0 null=?Key-System.Linq.IQueryable()oProduct is huge, around 268435456 bits, beyond quickmul€ƒscaleSubInPlace: pre-condition did not apply, result would be -veempty stringstr#<published event>7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypesKinvalidTupleTypeConstructorNotDefinedMinvalidRecordTypeConstructorNotDefined)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4 sourcesourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize)inputSequenceTooLong#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedkDynamic invocation of op_Subtraction is not supportedeDynamic invocation of op_Division is not supportedcDynamic invocation of op_Modulus is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supportedmmay not call directly, should always be optimized away!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmptyoa lazy value was accessed during its own initialization'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedsyncContextNullcannotMutatekeyNotFoundQincorrectTypethenByError_failDueToUnsupportedInputTypeInSumByOrAverageBy+unsupportedIfThenElse3unsupportedQueryConstruct;unsupportedQueryConstructKind)unsupportedQueryCall1unsupportedQueryProperty FSCoreIArgumentException_TupleIncorrectType other, YArgumentException_TupleLastArgumentNotATuple©×PLÚô§Eƒ©×P·z\V4à‰ €È €È €È€à€à €à (((XXX à à ä ä ì ì%‚‚1 ‚ 9=A %=‚@9 ØØ‚Œ ‚Ô‚àƒØ<Ø=<=‚„x‚ØäØ‚•üØä Ø Ø ØMØ€ÈØ€È!؆4€Èƒø€È؃Ѓø€È؃ø€È؃ôƒä ØØƒøQØ•üUI ØIQ؃øQ ØYØØØ]Y ØY&Ø–ØØØM Ø5ƒø ؃øØ–UIØIØ ØƒøØƒøØƒø ØI Øƒä Øƒä ØMƒä ØƒäØƒôƒä؆†4؃ôƒÐƒäØ1ƒøØƒøØaƒÔ$“ˆì؃ÔìØ“ˆìØì؃ô€Èƒä“ˆƒøØƒôƒä ؃øØƒôƒä؆4ƒø ؃øØƒÐƒøØ–UI ØI ØƒÌØ„ ØØƒøØƒÐƒøƒøØƒøƒøØØƒÐƒø5؃ø5؃øä؀ȃøä؃øä؃øä؃ЃøäØäƒøØƒøØ†$ƒøä؃Àä•üì‚܃À؃Àä•üƒÀìƒÀ)؃Àä–äƒÀìeìƒÀ؃Àä•ü‚܃ÀØi Ø‚` “ˆmƒÀ “ˆeƒÀ “ˆiƒÀ ؃À “ˆmeeØ•ü‚܃ÀØ•ü‚܃ÀƒÀ “ˆeeØeØqØØØeee ØmeØeØìeeØØØØeeØŠÔØØeeØŠÔìØØeeØØeìeØŠÔØ‰dƒÀØŠÔìØ‰dƒÀØØ‰dƒÀƒÀ ؉dƒÀ ؉d‚ÜØìeiØìe‚`ØØìeƒØìeƒØŠÔ•üu؉dƒÀØŠÔì•üu؉dƒÀØØ‰dƒÀØì•üu؉dƒÀ ؃ÀƒÀ“ˆ‚X‚܃À‚X‚ÜØ‚ÜäƒÀ y•ü}аyаØ•üu؉dƒÀ#Ø•üì•üu؉dƒÀØ$Ø•üì•üu؉dƒÀ ØŠÔØŠÔì “ˆ “ˆ ؃À‚¬“ˆ‚¬‚¬‚¬ ؂܂¬ Ø‚¬Ø•üƒÀìƒÀƒÀØØ'Ø–ØØØ(Ø–ØØØØØØ “ˆe“”ìeØ•ü‚¬‚¬Ø•ü䂬‚¬‹ÄØ “”‹À‚¬ Ø‚¬Ø‹ÀØ‚¬ØØ‹ÀØ‚¬Ø•ü‚¬ “ˆ‚¬‚¬Øä•ü Ø‚¬Øä•üØ•ü‚¬Ø‹ÀØ•ü‚¬ØØ‹ÀØ•ü‚¬Øä•üØi•ü䂬ؕü•ü‚¬Øä•üØØ“ˆi•ü Ø‚¬‚¬“”ì•ü“ˆ‚„‚„‚„Ø ‚ ‚ ‚ ‚‚ “ˆ€…€… Ø€…Øqä•üØ•üäØ “ˆiiØØØi“ˆ•ü‚` Ø“ˆ‚@‚@ “ˆ“ˆ‚@‚@“ˆ‚X‚X‚XØ=•üØ•üä “ˆ‚•ü‚ “ˆ 1=Ø= Ø%Ø=“ˆ==Ø=‚< “ˆ Ø1Ø11Ø11“ˆ111“ˆ•ü“ˆ•ü–‚ذ‚•ü‚Øä•üØ=<a#Ø=<a•ü%Ø%•ü%Ø=<•üØ%•üy y< 1%Ø1% “ˆ°Øä€‰ “ˆ Ø “ˆ˜˜“ˆ¤%“ˆ ¤ % “ˆ ¤ % “ˆ ¤ % “ˆ¤%“ˆ¤%“ˆ¤%“ˆ¤%“ˆ¤%“ˆ¤%¤ ¨ % ¤ ¨ % ¤¤% “ˆØ ØØØØ ØØ Ø Ø€€“ˆ ØØ“ˆ Ø ØØ Ø Ø€ØØ ØØØØØØØØ “”ØØØØ“¤%ØØØØØ“¸€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€ “ˆ€€“ˆ  “ˆ  “ˆØØØ“ˆ“ˆ€ $€”$RSA1ÑúWÄ®Ùð£.„ª®ý éèýjì‡ûvlƒL™’²;çšÙÕÜÁÝšÒ6! r<ù€•ÄáwÆwO)è2’êìäè!À¥ïèñd\L “Á«™(]b,ªe,úÖ=t]o-åñ~^¯Ä–=&ŠCe mÀ“4MZÒ“ €™ FSharp.Core €™ Microsoft.FSharp@;Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsMicrosoft.FSharp.Core!Microsoft.FSharp.CollectionsMicrosoft.FSharp.Control FSharp.Core.dllMicrosoft Corporation% Microsoft® Visual Studio® 20123.© Microsoft Corporation. All rights reserved. 2.3.0.0 2.3.50727.0 en-US*%F:\dd\tools\devdiv\FinalPublicKey.snk TWrapNonExceptionThrows €å       (  €ñT AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleäT AllowMultiple( ÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple( T AllowMultiple(         ÿT AllowMultiple(  (%   %T AllowMultiple  ÀT AllowMultipleT AllowMultiple  €Ð  €È  €Ô  €È  €È €È €Ð€ €Ô  E €Ð€Ð€€Ô€Ô€È€È €ÈK €È€Ð€Ð€Ô€Ô€È€È €€Ð€Ô €‘ €‘B €Ð€Ð€Ô€Ô€È€È €ÈFSharpChoice`2(  eC>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy €Ø €Ð €Ü €Ô €è€à €ì€à €ð €à  €à €à €è €ì €ð v€è€è€€ì€ì€ð€ð€à€à€à €à~€à€è€è€ì€ì€ð€ð€à€à€à5€è€ì€ð€às€è€è€ì€ì€ð€ð€à€à€à €àFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy €ô €è €ø €ì €ü €ð          €   €‰  ?  |   FSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy         $ 0(4(8(<(@ (   (((048<@X 048<@ €®004488<<@@ (FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxyD 0H 4L 8P <T @`XdXhXlXpXt X   XXX XFSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxy`x `d| dh€ hl„ lpˆ ptŒ t˜œ ¤¨¬°     FSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxy˜´ ˜œ¸ œ ¼  ¤À ¤¨Ä ¨¬È ¬°Ì °       Ð  0  •´ !Ø! •¸ Ø ! !Ø •¼ •À “ˆ “ˆ ØØ Ø“ˆ“ˆØØ“”“ˆØ “” “ˆØ ØØØØ @“”“”“ˆØ“ˆØ"ØØØ“¤“”Ø“ˆØØ“¤ “”Ø Ø“ˆØØ ØØØØ z“¤“¤“”Ø“”Ø“ˆØØ“ˆØØ+ØØØØ“¸“¤Ø“”ØØ!“ˆØØØ“¸ “¤Ø Ø“”ØØ  “ˆØØØ %ØØØØØ €Æ“¸“¸“¤Ø“¤Ø“”ØØ“”ØØ“ˆØØØ“ˆØØØ4ØØØØØ•Ä %Ø% •ÈØ! •Ì Ø•ü#ØØØ•ü •Ð Ø–,ØØØØ–•Ô Ø–5ØØØØØ–•Ø Ø–>ØØØØØØ–à € àà à à à FSharpRef`1 {contents} ä ää ää ä ä' ää€ää ä+ äääää ä ä ä$ääää äFSharpOption`1 Some({Value}) ì (ì(ìì ì ììì ì( ìì€ìì ì, ììììì ì+ ììììììì ì ì  5ììì“€ ì 1 - Item FSharpList`11,Microsoft.FSharp.Collections.ListDebugView`1{DebugDisplay,nq}(ô 0ì ìììì(øø  øü üØ ü Ø# øøØØ  øø 5‚  IU IFSharpHandler`1‚ %%1 ‚1#‚%1‚‚EE Ø‚ Ø% ‚ ‚ ‚$ ‚ ‚( ‚‚"‚‚‚ ‚ ‚ ‚!A•üƒøäƒä•üƒøäƒäƒøäƒä ØMƒäàäõ ƒðàäõØMƒä† äõ àäõäõäõäõƒä# ƒðàäõØƒä†ƒÌ ù2 ƒðàäõ؃äØMƒä†ƒÌ ¹ ƒø ƒðàäý ƒðàäý† äýý àäýäý ¹äýäýý Øƒä Øƒä" ƒðàäý†ƒÌØƒä  ¹ý¹‚,ƒðàäý†%ƒÌ؃äƒä ƒäƒôI I䇌!ƒð†<†@†D†4 ƒø†4‡”‡ †4‡˜ ƒø‡  ƒØ†$†4‡œ ‡¤‡¨‡¬‡° †4ƒä†‡´ 䨆$†4† ƒÌ ØI‡¼, ØI䨆$†4†ƒÌ†4†4ƒäØ•üUI‡ÀƒÐ†$†4†ƒÌUI ƒøƒÐ‡Ä ƒÐØ–UI‡È –UØ–UIØ–UI ‡Ì –U Ø–UIØ–UI ‡Ð–U Ø–UI؃ø ‡Ô –U؃ø U I–U I‡à ‚  †$†4ü ‡ä0 ‚ 䨆$†4†ü  ‡è3 ‚ äØƒÐ†$†4†ü ƒÌ üƒÌ üƒÌüƒÌƒÌ ‚ ü ‡ð* ‚ †$†4†üƒÌüü‚ ‡ô „ ü„ ‡ø ü„ ü„ qe  ‡ü ØƒÌØ„ ü„ Ø„ ‡è „ ‡ø ü„\ ƒÐ†$†4†ØƒÌüƒÌØ„ü„ØüƒÌ„ ˆ ƒøˆ  †$†4àƒØƒÌˆˆˆ ƒøä†$†4ƒÐƒØàƒØƒÌƒä ƒøƒøƒÐˆ ƒÐƒø ƒøƒø ؆üƒÌ ƒÌ  Ø Ø ƒÐØ ƒÐ†ƒÌ 5%ƒÐ†ØØƒÌüƒÌƒÌ ƒø5ƒÐ ƒÐ5 ƒø5 ƒðƒÜ Øƒä ƒøä„ Øäƒø ˆLƒÜ €Ð€Ô„ €Ð ƒÜ€Ð ƒøä€È ˆP äƒø äƒøˆH ä  €Èä!äƒøäƒøƒø ƒøä ˆX ƒøä ˆ\ˆT ääƒøäƒø ˆdƒØƒÐ ƒøäƒÐ ˆhˆ` ƒÐä ƒøä ˆpˆl äˆtˆxˆ€ˆ„ä䈌 ƒøˆ”Ø„ƒøˆœˆ ˆ¤ˆ¨ ƒøä†$ˆ¬ †$䈴ˆ° ƒøäˆ¼ˆ¸ˆÀ ofNativeInt toNativeIntget read write stackalloc•üƒìƒÀä•üìƒÀƒÀ •üƒìƒÀ•üƒìƒÀä•üìƒÀƒÀ•üìƒÀƒÀ€Æ*•üƒìƒÀƒìƒÀƒÀƒ0ä•üìƒÀƒÀƒÀiìƒÀ1ƒ`eƒ4€…ƒ8ƒ<ìƒÀƒÀƒ@iqƒHƒPƒXƒ\‚à‚ì‚ÜìƒÀ‚ðƒÀä•ü‚܃Àä•ü‚܃À‚Ü‚`ƒƒ ƒ$ƒ(ƒ,ƒÀìƒÀ!€à‚Ü•ü‚܃À•üìƒÀ•üìƒÀ( ‚à‚ì‚ð‚܃À‚èƒìƒÀìƒÀ&€à‚Ü•ü‚܃À•üìƒÀƒÀ,'|ShapeVar|ShapeLambda|ShapeCombination|ää ä äƒÀ |Bool|_|ä ä äƒÀ |String|_|   ä ä ä ƒÀ |Single|_|   ä ä ä ƒÀ |Double|_| ä ä äƒÀ |Char|_| ä ä äƒÀ |SByte|_|ä ä äƒÀ |Byte|_| ä ä äƒÀ |Int16|_| ä ä äƒÀ |UInt16|_|  ä äƒÀ |Int32|_|  ä ä ä ƒÀ |UInt32|_|  ä ä ä ƒÀ |Int64|_|  ä ä ä ƒÀ |UInt64|_| äƒäƒä䃃`e äƒÀ |Unit|_|䖂܃ÀƒÀä•üƒÀ ä‚Ü•üì‚܃À䖂܃ÀƒÀ–‚܃ÀƒÀä•üƒÀ •üƒÀä‚Üì‚ÜE䖂܃ÀƒÀä•üƒÀä‚܂܃À‚Ü•üì‚܃À•üì‚܃À‚܃À)‚à‚ð‚܃À•üì‚܃ÀƒÀì‚Üä•üì‚܃ÀƒÀä•üƒÀƒÀääìƒÀä•üƒÀƒÀ •üƒÀƒÀ•üƒÀìƒÀä•üƒÀìƒÀ4ä•üƒÀƒÀƒÀƒÀääìƒÀìƒÀä•üƒÀìƒÀƒÀ ƒÀì‚Üä•üìì‚܃ÀƒÀ |Lambdas|_|ä•üƒÀììƒÀƒÀ|Applications|_|ä–ƒÀƒÀƒÀää–ƒÀƒÀƒÀ–ƒÀƒÀƒÀ!ä–ƒÀƒÀƒÀäƒÀƒÀä•üƒÀƒÀƒÀ |AndAlso|_| |OrElse|_|ä•üìì‚܃Àä–äƒÀqìƒÀä•üìì‚܃À•üìì‚܃Àä–äƒÀqìƒÀ–äƒÀqìƒÀZä•üìì‚܃Àä–äƒÀqìƒÀqqä–äƒÀqìƒÀ.؃Àä–äƒÀìeìƒÀƒÀ|SpecificCall|_|&!|MethodWithReflectedDefinition|_| q äƒÀi.)|PropertyGetterWithReflectedDefinition|_|.)|PropertySetterWithReflectedDefinition|_| ä•üì‚܃ÀƒÀ ä•üƒÀìƒÀƒÀ qq äƒÀ e–äƒÀìeìƒÀ!ä–äƒÀìeìƒÀ0ä–äƒÀqìƒÀqäƒÀìƒÀ& ä–äƒÀìeìƒÀƒÀe}ØŠÔ•üu؉dƒÀ!ØŠÔì•üu؉dƒÀ•ü} аŠ´•üìä•üììì$ä•üìììä•üììeeeee ‚à‚èƒ äƒƒÀ •üƒƒÀä•üƒƒÀ‚à‚èìƒÀƒÀƒä•üƒƒÀƒÀ–ƒƒÀƒÀä–ƒƒÀƒÀ!‚à‚èìƒÀìƒÀƒÀƒÀƒä–ƒƒÀƒÀƒÀ–ƒƒÀƒÀƒÀä–ƒƒÀƒÀƒÀ, ‚à‚èìƒÀìƒÀìƒÀƒÀƒÀƒÀƒä–ƒƒÀƒÀƒÀƒÀ‚à‚ì ä‚܃À |Var|_|ä–ƒƒÀƒÀä–ƒƒÀƒÀƒÀƒÀ|Application|_|‚à‚ðƒÀ‚Üä•ü‚܃ÀƒÀ |Lambda|_|äƒÀ‚à‚èìƒÀƒÀ äƒÀƒÀ |Quote|_|ä–ƒƒÀƒÀƒÀ!ä–ƒƒÀƒÀƒÀƒÀƒÀƒÀä–ƒÀƒÀƒÀƒÀ|IfThenElse|_|‚à‚èìƒÀäìƒÀƒÀ |NewTuple|_|äe ‚à‚èƒde äeƒÀ|DefaultValue|_|•üeìƒÀä•üeìƒÀ‚à‚èƒeìƒÀä•üeìƒÀƒÀ |NewRecord|_|•ü‚`ìƒÀä•ü‚`ìƒÀ‚à‚胂`ìƒÀä•ü‚`ìƒÀƒÀ|NewUnionCase|_|ä•üƒƒÀ •üƒÀ‚`ä•üƒÀ‚`ä•üƒƒÀƒ‚`ƒÀä•üƒÀ‚`ƒÀ|UnionCaseTest|_|ä•üƒƒÀƒ ƒÀä•üƒÀƒÀ |TupleGet|_| •üƒÀeä•üƒÀeä•üƒƒÀƒPeƒÀä•üƒÀeƒÀ |Coerce|_|ä•üƒƒÀƒ\eƒÀ |TypeTest|_|‚à‚èƒTeìƒÀ |NewArray|_|‚à‚èìƒÀìƒÀƒÀƒÀ|AddressSet|_||TryFinally|_|–ƒÀ‚܃À‚܃Àä–ƒÀ‚܃À‚܃ÀO ‚à‚èìƒÀìƒÀä•ü‚܃ÀìƒÀä•ü‚܃À‚܂܃ÀƒÀƒÀä–ƒÀ‚܃À‚܃ÀƒÀ |TryWith|_|$‚à‚èìƒÀ‚à‚ììƒÀ‚܃À |VarSet|_|•üe ä•üe‚à‚èƒ`eä•üeƒÀ |Value|_| ‚à‚è äƒÀ |ValueObj|_|ä•üƒƒÀƒÀ |AddressOf|_||Sequential|_|–‚܃ÀƒÀƒÀ䖂܃ÀƒÀƒÀ4ä–ƒƒÀƒÀƒÀä•ü‚܃À‚܃ÀƒÀƒÀ䖂܃ÀƒÀƒÀƒÀ|ForIntegerRangeLoop|_| |WhileLoop|_|–äƒÀiìƒÀä–äƒÀiìƒÀ#‚à‚èƒ(iìƒÀƒ$ƒÀìƒÀ!ä–äƒÀiìƒÀƒÀ|PropertyGet|_|–äƒÀiìƒÀƒÀä–äƒÀiìƒÀƒÀV ‚à‚èƒ0ä•üìƒÀƒÀƒÀiìƒÀ‚à‚èƒ,ä•üìƒÀƒÀƒÀìƒÀ$ä–äƒÀiìƒÀƒÀƒÀ|PropertySet|_|•üäƒÀ€…ä•üäƒÀ€…‚à‚èƒ8€…ƒ4ìƒÀƒÀä•üäƒÀ€…ƒÀ |FieldGet|_|–äƒÀ€…ƒÀä–äƒÀ€…ƒÀ' ‚à‚èƒ@ìƒÀƒÀ€…ƒ<ìƒÀƒÀä–äƒÀ€…ƒÀƒÀ |FieldSet|_|•üiìƒÀä•üiìƒÀ‚à‚èƒDiìƒÀä•üiìƒÀƒÀ |NewObject|_|#‚à‚èƒLqìƒÀƒHƒÀìƒÀ!ä–äƒÀqìƒÀƒÀ |Call|_|+ä•üƒÀƒÀä•ü‚܃À‚܃ÀƒÀ䖂܃ÀƒÀƒÀ |Let|_|5ä•ü‚܃Àä•üì‚܃Àì‚܂܃Àä•üì‚܃ÀƒÀ–eì‚܃Àä–eì‚܃À;ä•üƒƒÀƒXeƒÀä•üì‚܃Àì‚܃Àä–eì‚܃ÀƒÀ|NewDelegate|_|•üì•ü‚܃ÀƒÀä•üì•ü‚܃ÀƒÀ@äƒÀä•üì‚܃À‚à‚èìƒÀì‚ÜìƒÀƒÀ"ä•üì•ü‚܃ÀƒÀƒÀ|LetRecursive|_|iäi iäi iäiie‚` ä‚` ‚`ä‚`‚`ä‚`‚`eii‚` ee1eƒÀä•üì•ü‚܃ÀƒÀ}‚à‚ì‚ð‚܃À‚èƒìƒÀìƒÀìƒÀ䖂܃ÀƒÀìƒÀä•üì•ü‚܃ÀƒÀe‚`ƒ i€…iq1eƒÀƒìƒÀƒÀƒ ƒÀƒƒÀƒÀƒƒÀƒÀƒÀƒƒÀƒÀƒÀ ee e m mƒÀmìƒÀ ]ƒÀ eeee ƒÀƒÀe ‚܃Àe ƒeìeìe eƒÀ ìeƒÀƒÀeƒÀee ƒÀeƒÀ iƒÀ ƒÀ‚`ƒÀ €… iƒÀiìƒÀƒÀƒÀiìƒÀƒÀiìƒÀƒÀƒÀƒÀiìƒÀƒÀ me qme ƒÀeƒÀƒÀìƒÀƒÀeƒÀƒÀìƒÀ•üì‚ÜìƒÀ •ü‚܃À•üì‚ÜìƒÀ*•üì‚ÜìƒÀì‚ÜìƒÀƒÀ eeìeìeØØeeØØeeìq Øqäqìqäq.ìqeìqìqqØqäq1+qeìØØeeØØee‚1 ØØeee qa‚5e‚9  eeeäqäqq‚1 iai1q1qe eeìeìeØØe ìe ia‚5ee‚9eìeei2ieØØeØØeìeìe €…ae€…€…eìe ia‚5e‚9 ìeiieØØeìeeìei"ieØØeìeìe•üìì•üìì%ìì•üìì•üììì qqìeØØeeìØØee•üìeìe,–eìØØeeØØee•üìeìeO eØØeeìØØee•üìeìeìeìeeq7q–eìØØeeØØeeìeiìeìeee eìe e ìee eìeäe e eäee}}}} }1}ŠÔ}eŠÔeØìeeŠÔ ‰H ØììØ(•üØìeeìØØeeØŠÔìØØeeØŠÔØØeeØìee'•üØìeeìØØee•üØìeeìØØeeØŠÔìØØeeØŠÔØØeeØìeeìØØeeØØeeŠÔìØØee ØØeeìØØeeØØeìeŠÔ ì ì ì ‚4‚Ü ‰d‰d‚Ü ‚܉de9–ØìeƒØØeìeìØ‰dƒÀØŠÔìØ‰dƒÀØŠÔØ‰dƒÀØìeƒØØeìeìØ‰dƒÀ ؉d‚Ü Ø‰dƒÀ8–ØìeƒØØeìeìØ‰dƒÀìØ‰dƒÀ ؉dƒÀ€¾ –ØìeƒØØeìeìØ‰dƒÀØŠÔìØ‰dƒÀØŠÔØ‰dƒÀØìeƒØØeìeìØ‰dƒÀ؉d‚ÜØ‰dƒÀØØee؉dƒÀŠÔØØee؉d‚ÜŠÔØìeiŠÔØìe‚`ŠÔØìe‚`Øìe‚`ƒŠÔ5ØŠÔìØØeeØŠÔØØee1–eìØØeeØØeeŠÔ+–eØØeeØØeìe0–eØØeeØØeìeŠÔ-–eìØØeeØØee•üeØØeìe•üeØØeìe{ ƒƒLƒ(i–eìØØeeØØeeeìØØeeØØee•üeØØeìeuŠÔØØìeƒØìei,–eØØeeØØeìe-‚ØØØìeƒØìeƒ& ØìeƒØØìeƒØØìeƒ   €ÿØØìeƒØìeƒ–eìØØeeØØeeeìØØeeØØeeØìei–eØØeeØØeìeØØeìe  •üeØØeìeƒØìe‚`ØìeƒŠÔØŠÔ•üu؉dƒÀ!ØŠÔì•üu؉dƒÀ}ØŠÔØ‰dƒÀØØ‰dƒÀe"Øì•üu؉dƒÀ} ƒÀƒÀ0‚à‚ð‚܃À‚àìƒÀ‚èƒìƒÀ‚ôee ƒÀƒÀƒÀ ƒÀ‚X‚Ü‚X‚Ü‚à‚è‚ì‚Ü‚ðƒÀ‚X‚Ü‚X‚Ü‚X‚܃À Øee ‚X‚ÜŠ c‚à‚èƒìƒÀìƒÀ‚àìƒÀ‚ì‚ÜäƒÀäƒÀƒÀ‚X‚Ü‚X‚Ü‚ðƒÀŠ ‚܂܃À ƒÀ‚X‚ÜØ‚ÜäƒÀƒÀ  àå•ü} аŠ´ì•üu؉dƒÀ •üu؉dƒÀ•ü}•ü}ì•üu؉dƒÀŠ´ аŠ´ •üì•üu؉dƒÀ •üŠ´Š´4•üŠ´}аì•üì•üu؉dƒÀ äŠ´а •üŠ´#ì•üì•üu؉dƒÀ‚AØ$Ø•üì•üu؉dƒÀ Øe ‚E䊴"ì•üì•üu؉dƒÀ  •üì•üu؉dƒÀ€¨äŠ´}а•üŠ´•üŠ´Š´ì•üì•üu؉dƒÀ‚AØØ•üì•üu؉dƒÀE•üŠ´Š´äŠ´Ø‰dƒÀqqØeäƒÀueqqeii‰d ؉dƒÀ‰dƒÄ  ää ‚I   ä•ü‚܃ÀƒÀ i ‚` mƒÀ eƒÀ iƒÀ ƒÀ eme‚܃À •ü‚܃À ƒÀ•ü‚܃À ee e q eØØee em* ìØØeeØØeeeeeìeeìee ìe eìe ‰H Ø eØe ØØeeŠÔ ØŠÔØØee ìØØeeŠÔ% ØìeeìØØee Øee ìØØee ìeØe (‚4‚Ü (Øe ‚4‚Ü ‚4‚Ü Øe ‚4‚ÜØe ؉dƒÀŠÔ ØŠÔØ‰dƒÀ ìØ‰dƒÀŠÔ ‰d ƒÀ؉dƒÀ6 ØìeƒØØeìeìØ‰dƒÀ ؉dƒÀƒÀ ìe‚à ƒÀ‰d ؉d‚Ü Ø‰d‚ÜØ‰dƒÀ‚Ü‚à ØØee ؉dƒÀ ؉dƒÀìØ‰dƒÀƒÀ‚àìƒÀ ØØee ØØee ‚܉d e iìe ‚`ìe Øìe‚` Øìeƒ Øìeƒ ƒìe* eìØØeeØØee0–eìØØeeØØeeq Øìei€…) eØØeeØØeìei              eØØeìe ƒƒLq Øìe‚`•üu؉dƒÀ •üu؉dƒÀŠÔì•üu؉dƒÀ ì•üu؉dƒÀŠÔ }ØŠÔØ‰dƒÀ ؉dƒÀ } ì•üu؉dƒÀ ì•üu؉dƒÀ ƒÀ ƒÀƒÀ ‚X‚Ü ‚X‚Ü‚X‚܃À eØ‚ÜäƒÀ ‚X‚ÜØ‚ÜäƒÀ Ø‚ÜäƒÀ‚܃À äƒÀ‚Ü }} •ü}}} •ü}•ü}  (‚E‚E а‚E ‚E ‚Eа ааааuаа аа (؉dƒÀŠ´Ø‰dƒÀ ؉dƒÀ а ааuu؉dƒÀа •üu؉dƒÀ å•üì•üu؉dƒÀ •üì•üu؉dƒÀ ‚M u؉dƒÀì•üu؉dƒÀ! •üì•üu؉dƒÀŠÔ  ŠÔ‚Q } ‚Q‚Q ŠÔ ØŠÔ‚Q‚QìØŠÔìŠÔ•üìŠÔØŠÔì ØŠÔì •üì1•üìŠÔØŠÔìØŠÔì}ØŠÔ(ˆè((}ˆè ˆè ˆè} ŠÔ ØŠÔì ìŠÔaä•üØä•üì•üìä•üìä•ü •ü ä•üä•ü4ä•üìØä•üìØä•üØä•ü-ä•üìØä•üä•üØä•ü•üìä•üìä•ü ä•üä•ü4ä•üìØä•üìØä•üØä•ü-ä•üìØä•ü Šä Ø•üØ•üì Šè Ø•ü Ø•üìaqeØ•ü ŠäØ•ü Ø•ü ŠèØ•ü ØŠÔ•üu؉dƒÀ ØŠÔì•üu؉dƒÀ•ü} аŠ´•üe•üe‚Ü ‚Üe‚è‚ì‚ð‚ô €‘‚à0 ‚è‚胃ìƒÀìƒÀ‚ì‚ì‚ð‚ð‚ô‚ô‚à‚à€‘Eƒƒƒƒƒ ƒ$ƒ(ƒ,ƒ0ƒ4ƒ8ƒ<ƒ@ƒDƒHƒLƒPƒTƒXƒ\ƒ`ƒd €‘ƒ€†,ƒƒƒƒƒƒƒƒƒ ƒ ƒ$ƒ$ƒ(ƒ(ƒ,ƒ,ƒ0ƒ0ƒ4ƒ4ƒ8ƒ8ƒ<ƒ<ƒ@ƒ@ƒDƒDƒHƒHƒLƒLƒPƒPƒTƒTƒXƒXƒ\ƒ\ƒ`ƒ`ƒdƒdƒƒ€‘ 사 ‚¬ƒÀ‚¬e‚ØØ‚`‚` Ø‚` Ø‚` ‚¬‚`‚ØØqq ØqØq‚¬q‚ØØii Øi Øi ‚¬i‚ØØii Øi‚¬i‚ØØ€…€… Ø€… Ø€… ‚¬€… ؃Àä•üì‚܃À ìƒÀ ‚è‚è‚ì‚ì‚ð‚ð‚ô‚ô ‚à‚à ƒƒƒÄ y ‚¬ƒÀ ‚¬‚¬‚¬ ‚¬‚Ü ‚¬ ƒÀìƒÀ ƒÀ•üƒÀìƒÀ‹  Ø Ø‚Ô ksprintf kprintf ‹( ØØ %ØØ‚Ô 5Ø5‚Ô5 kbprintf ÅØÅ‚ÔÅ kfprintf ‹85‚Ô5 bprintf5 55  5  Ø‹ Ø5‹  –ØØØ$ –ØØØ Ø ‹(!–ØØØ% –ØØØÅ Å  ‹Läää䨋L䨨 äØäØä    Øä‹L    Øä‹L eØ •üeee1•üeee •üee a‚5 •üee•üeeeeeØeØ •üeeee•üeeee%ìeØìØeØY Y‹L•ü •ü•ü–ä•ü ä•ü •ü–ä•ü•ü–ä•ü•ü–ä•ü•ü–ä•ü ä•ü ää}–ääääE •ü–ä•üä•üää•üä!–ääää‹LØ‹Lä Øìe  Y'ØìØeØìe ää ää2ØìØeØääìe‹L–ääääF ‹L–ääääääääää&ìeØìØeØ   Y     –€ €  €€–  •üì,–Y€ä ää0 •üìØ‹Lääì Y*•üìØ‹Läì‚Ð-aää‚Q‚Q‚ЂÐä‚ЂÐ/•üìØ‹Lääì•üäììì•üäì Ø Ø Ø€ª‹L–ääääääää•üäìääììYä•üäììäìì€ää*•üìØØì  •üì Ø•üì)ØØØì"–ØØØ Ø(Ø–ØØØ!–ØØØ ] –ØØØØØØØØØ4Ø–ØØØìØìØeØ ‹¨- Ø–ØØØØìØeØ7Ø–ØØØìe)Ø–ØØØ ‚Ô ‹¤+ Ø–ØØØØ.Ø–ØØØ:Ø–ØØØ‚Ô(ä ä ä äØeØ ØeØeØe & ìØìØeØe( ìØìØeØee% ìØìØeØe# ØìØeØì e# ØìØeØì% ØìØeØì0 ìØìØeØää)Ø–ØØØ ‹¤"–ØØØ(Ø–ØØØ!–ØØØ4–ØØØØØ)Ø–ØØØ ‹¨  ìe‚¬q €È Ø €È €È€ÈØ  ‹´‹´ •ü‹´ •ü‹´‹´ •ü‹´ä•ü‹´ä•ü‹´‹´ä•ü‹´ –‹´‚¬ä•ü‹´ä•ü‹´–‹´‚¬‚¬‹´–‹´‚¬‹´ •ü‹´|#–‹´‚¬‚¼‚¬ì•ü–‹´‚¬‚¬‚´‚¸‚Œ‚¬‹´–‹´‚¬‚¬‚œ‚˜‹´‹´•ü‹´‹´‚¬‚Œ–‹´‚¬Ø‹´‚¬Ø Ø‹´‚¬Ø‚¬ •üì•üìì •üìì •üì2 ‚¸‚¬‚¬•üì•ü삼‚œ‚¬‚¬#•üì‚ÐØì‚¬$‚ÐØ•üììì‚ÐØ‚¬ ÅØì•ü % ‚¸‚œ‚¬‚¬‚¼ì•ü‚¬2ØØì•üØØÅ‚¬ ØØì•üØ+ØØì•üØØÅ0ØØì•üØØÅ‚¬ì•üì•ü •ü"ì•üì•ü•üì•üŒ”Œ¨ ì•ü  ä•ü ì•üŒ”Œ¨ì•üä•üa‚¬Ø•ü‚¬‚¬ •ü‚¬‚¬Ø•ü‚¬‚¬‚¬‚¬ì•ü‚¬Ø•ü䂬‚¬ •ü䂬‚¬Ø•ü䂬‚¬‚¬‚¬ì•ü䂬 ‚¬ì‚¬ì ì à‹ÌØà ‚¬‹Äa‚Ðà‹À 䂬€  €È €Ð €Ôü䂬 €  ‚M€Ð€ÔS‚¬ä‚¬ee€ ää€È€Ð䂬‚¬€Ô& ‚¬‹Äa‚Ðà‹Ä‹ÀŒ”ØØ‹ÀØ‚¬ Ø‚¬‹à ØØ‹ÀØ‚¬ Ø‹À ‚¬‹ì Ø‚¬ ‹ð Ø‚¬ •ü‚¬IØØ‹ÀØ‚¬ì•üì•ü사؂¬+‚¬‹Äa‚Ðàì•ü‚¬‹Äa‚Ðà‚¬Øä•ü€õŒ$ ØØ‹ÀØ‚¬&Ø‚¬ØØ‹ÀØ‚¬ ŒH! àØØ‹ÀØ‚¬9Ø•ü•ü‚¬àØØ‹ÀØ‚¬ŒL aØä•üaØØ‚¬‚¬Œ¬€õØä•ü Ø‚¬Øä•ü-!‹Ä•üØØ‚¬‚¬  Ø‚¬  ‚4‚X  ia €õ€ i•ü䂬 ‚¬ •ü•ü‚¬•ü €«$ØØ‹ÀØ‚¬ØØ‚¬‚¬Œ¨ì•ü‚¬Œ¬e€õ€õØä•ü사؂¬Øä•üee-‚¬55!!‹Äiì•ü%à‹Äa‚Ðà‚¬‹Äa‚Ð }   € ‚Ð ‚¬‚Ђ¬ ‚ÐÅ‚¬ ‚Ђ¬‚Ð Å ‚Ða ‹´  •ü‚¬ ‚¬‚¬ ‚¬•ü‚¬•ü䂬䂬‚¬ ‚¬•ü䂬‹À‹Ä‹Ä‹Ä ‹Ä‹Ä‹Ì   ‹Äa‚Ðà ‚¬‹À Ø‚¬‹Ø Ø‚¬ Ø‚¬ ‚¬Ø‹ÀØ‚¬‹Ü Ø‹ÀØ‚¬Ø‹ÀØ‚¬ Ø‚¬ Ø‚¬‹À‹àØØ‹ÀØ‚¬Ø‹ÀØ‚¬ Ø‹ÀØ‚¬‹ä‹è‹ì Ø‚¬ ‹ð Ø‚¬ ‚¬•ü ‚¬‚¬ €õ •ü ä•ü ä•ü €õ + ‚ÐàØØ‹ÀØ‚¬€õ ‚¬ •ü ä•ü ä•ü ‚¬•ü Ø•ü‚¬‹À Ø‹ÀØ•ü‚¬ŒŒŒ Œ$= i •ü‚¬ ‚¬e -•ü ä•ü ä•ü  ‹Äa‚Ðà䂬 •ü䂬iŒ<Œ@ŒD ŒHŒD ‚¬ •ü‚¬ •ü‚¬•üŒL ä•ü  ‚Ð ee‚`eŒdŒd Œdìe ŒdeeŒdì•üeŒdì•üì•üeŒdŒde (ìe ìe^YMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy eea\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(ì•üeì•üe ì•üe ì•üe_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(ì•üì•üeì•üì•üe ì•üì•üe ì•üì•üe\WMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+SumType@DebugTypeProxy_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxyŒl ŒlŒp ŒpŒt ŒtŒx ŒxŒ| Œ|Œ” Œ”쌔eŒ”ì•üŒ”ì•üŒ”eì•üŒ”Œ”(ì ì ì`[Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyjeMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy(ì•ü ì•ü ì•üa\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy ì•üfaMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy eì•üd_Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxya\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyŒœ ŒœŒ  Œ Œ¤ Œ¤ Œ¨ Œ¬Œ° Œ° •ü i•ü •üi•üi•üi Œ”ae •ü‚`e•ü‚`‚`i•ü Œ”a Œ”a •üiØ‚¬Ø‚¬‚¬‚¼‚¬‚¬‚¬‚¬‚¬‚Œ‚¬‚¬‚´ ‚¬‚¬‚¬Ø‚¬Ø‚¬‚¬‚¬Ø‚¬Ø‚¬‚¬‚¬‚¬ì‚¬ì‚¬‚¬‚¬Ø‚¬‚¬‚¬ì‚¬ Ø‚¬‚¬ 사‚¬ì‚¬Ø‚¬‚¬‚¬Ø‚¬‚¬ì‚¬‚¬‚¬ì‚¬‚¬‚¬ ‚¬‚¬ì‚¬‚¬ì‚¬ Ø‚¬ 䂬؂¬ä ‚¬‚¬Ø‚¬ìØØä•ü"ä•üä•ü5사؂¬Øä•üØ Ø‚¬Øä•ü Ø)Ø‚¬Øä•üØ5사؂¬Øä•üØ-사؂¬Øä•ü ‚¬‚¬ ‚¬ ì•ü          ‚ˆ  ‚„  ‚„,  ‚„  ‚„‚„ ‚„‚„ ‚„‚„ ‚„‚„‚„‚„‚„ ‚„‚„‚„‚„‚„‚„‚„ ‚„‚„  ‚„‚„ ‚„‚„  ‚„ ‚„ ‚„‚„  ‚„  ‚„‚„‚„     ,,,,  ‚„,,‚„  , ,‚„   ,‚„, •ü •ü, ‚„‚„, ‚„ ‚„, ,   Ø‚„‚„ ‚„ ‚„‚„‚„‚„‚„‚„‚„‚„‚„Ø‚„Ø‚„‚„‚„‚„    ‚„ ‚„‚„‚„‚„ ‚„‚„ ‚„‚„•ü‚„‚„‚„‚„•ü‚„‚„‚„‚„ •ü‚„‚„ ‚„‚„‚„•ü‚„‚„‚„‚„‚„‚„‚„‚„  ‚„  ‚„  ‚„ ‚„ ‚„ •ü‚„ì•ü‚„#ì•ü‚„ì•ü‚„‚„ì•ü‚„ì•ü‚„ •ü‚„= ì•ü‚„‚„ì•ü‚„•ü‚„‚„‚„‚„‚Q‚Q"ìì‚„ì•ü‚„ì•ü‚„ì•ü‚„ì‚„‚„‚„‚„ ‚„‚„‚„ ‚„‚„‚„  ‚„‚„‚„ –  –         $                       – , – ‚p qqq T ‚ ‚ ‚|‚t qeq ‚t 5‚\` ‚‚ ‚ ‚ ‚i iea äØäØea€„ €„ – ä–  €„1ä– ä– ä–  – ]!ä– ]ä– ä ä– ä–  ä eì•ü ä•üä•üeq€…Ø€…Ø€… •ü ea €…a€… q•ü+ e€…Ø€…Ø€…€…•ü€…•üea •ü •üe eea‚4 %•ü ‚4•üØeaä ä ä  eaae eae eeaØiØieØiØii ieaiØea 䨨)•üäØäØØØea ]ea ea q1 qeaqØeaea eeeeeeee iii‚5 iie‚5eY ieaiØeai ØeiØeØeØeØ•üiäeei iei•üiä•üe•üe ä•üe ieeä ä ØiØii ieaØea eae ai a‚5 €…€… €…$ä– ]ä–   ä•üq ä•ü ‚4‚4] ii] ai  ea aq i ai a‚5 i iØ  ØØØee•ø– – – –  ––•ø ‚`•ü ‚X isEmpty ‚X contains‚X‚X ‚X singleton remove‚X‚X‚X union‚X%‚X unionMany intersect intersectManyØ‚X iter ‚X emptyØ‚X forall exists‚XØ‚X%•ü‚X‚XØ‚XØØ‚X foldØØ‚X foldBack‚XØ‚X ‚X count‚Xì ofList ‚X ofArrayì‚X toList ‚X toArray%‚X toSeq ofSeq difference‚X‚X isSubset isSupersetisProperSubsetisProperSuperset ‚X minElement maxElement‚H‚@‚L‚H‚H‚@‚@ ‚@ ‚@ ‚@‚@‚@‚@‚@2 ‚H‚@‚@‚H‚@‚@‚L€‰ (‚H‚@‚@‚L‚@‚@€‰‚@N‚@‚L‚H‚H‚@‚@‚@‚@‚@‚@!‚@€‰‚@‚@–‚@‚@–‚@‚@K ‚H‚@‚@–‚@‚@‚@‚@‚L‚@'–‚@‚@€‰‚@•ü‚@•ü‚@<‚L‚H‚@‚@•ü‚@‚@‚@•ü‚@‚@6‚L‚H‚@‚@•ü‚@‚@€‰‚@'‚H‚@‚@‚L‚@Ø‚@ØØ‚@‚H‚@‚L‚L‚H)‚H‚@‚@‚L‚@ØØ‚@ØØ‚@ð€‰‚@‚@ôø.‚H‚@‚@‚@‚L‚@'‚@€‰Ø‚@‚@‚@€‰‚@‚@p‚H‚H‚@‚@‚@‚@–‚@‚@‚@‚@‚L‚@‚@‚@&‚@€‰‚@‚@‚@•ü‚@‚@5•ü‚@‚@€‰Ø‚@‚@•ü‚@‚@` •ü‚@‚@‚H‚@‚@•ü‚@‚@•ü‚@‚@‚L‚@:•ü‚@‚@€‰Ø‚@‚@‚@‚H‚@‚@ ‚H‚@‚L‚@ä‚@ ä ‚@ ì‚@ ì‚@8ì‚@ì‚@‚H‚@‚@‚@ì‚@ì‚@ü ì‚@ü‚@ ì‚@ì‚@ì‚@ ü ì‚@&ì‚@ì‚@ì‚@ ü àü àüŽ ‚@àüàü1‚@€„ì‚@ì‚@ì‚@ì‚@‚L‚H‚@‚@‚L‚H‚@‚@‚@‚@‚@#€‰ì‚@ì‚@€‰‚@‚@ì‚@ìì‚@Ž àà‚@ ‚@1‚@€‰‚@111‚@5‚@€‰%Ž €‰ ‚@‚@€‰ðôø(ì‚@ü ì‚@ àüŽ àüŽŽ ‚@‚@11ØØ Ž €‰ Ž ‚@‚@ ‚X‚X‚X ‚4 ‚4‚4‚4‚4 findä‚4 tryFind‚4‚4‚4 containsKeyØØ‚4(䨨ä‚4 tryPickää ä#ØØä‚4 pickØØ‚4$‚4ØØ‚42•ü‚4‚4ØØ‚4 ‚4%‚4ØØ‚4 “” 'ØØØ‚4 “”'ØØØ‚4 Ž$ %= =•ü%•ü‚4 Ž( ØØ •üØØ‚4 findKey Ž,"䨨‚4 tryFindKey‚4ì•ü‚4%•ü‚4•üì•ü‚4•ü‚4 ‚4 •ü=ØØ Ž( ä•ü Ž, ‚( ‚ ‚$ ‚(&‚(‚‚‚‚ ‚ ‚ ‚"‚‚‚B ‚(‚‚‚(‚‚ ‚$5 ‚$‚(‚‚‚ ‚€‰‚4‚$‚(‚‚‚€‰‚ä䀉‚•ü‚‚F•ü‚‚€‰ØØ‚‚•ü‚‚x •ü‚‚‚$‚(‚‚•ü‚‚•ü‚‚‚K•ü‚‚€‰ØØ‚‚‚/‚€‰ØØ‚<‚$‚(‚‚‚‚4‚€‰ØØ‚‚–‚–‚P ‚$‚(‚‚–‚‚‚–‚‚F ‚$‚(‚‚–‚‚‚€‰‚2‚$‚(‚‚‚€‰‚3‚$‚(‚‚‚ØØ‚ äA ‚$‚(‚‚ää‚(äØØä‚ØØ‚ ‚$ ‚( ‚ ‚ ‚$ ‚( ‚= ‚$‚(‚‚‚‚‚Ø‚ ‚ ‚= ‚$‚(‚‚‚‚%‚ØØ‚5‚$‚(‚‚‚“”‚ ‚$ ‚( ‚ ‚$ ‚( “”5‚$‚(‚‚‚“”‚ 9 ‚$‚(‚‚‚2€‰ØØØ‚ €‰(ì•ü‚ì•üì•ü‚ •ü•ü‚ Ž4 •ü‚!‚€‰ì•ü•ü)‚€‰‚1•ü‚•ü‚€‰•ü •ü •üJ•ü•üì•üì•ü1•ü‚5 ‚€‰%•ü Ž8 =à‚=ì‚ì‚Fì‚ì‚‚(‚‚‚ì‚ì‚ Ž< 삎<‚ì‚ ==+ì‚ì‚‚$=Ž< ì‚,ì‚ì‚ì‚ Ž<àŽ<àŽ< Ž@ ‚àŽ<àŽ<1=‚ Ž4 ‚‚•ü Ž8 (ì‚ Ž< ì‚àŽ< Ž@àŽ< = =•ü=•ü= 1==1=1= = ŽH = % = ‚4 ŽT ŽP %= = == ‚<= length1 length2 length3 length4   zeroCreate    create +ØØØØ init       #ØØØ  Ø    Ø (ØØØØ iteri 0ØØØØ mapi lengthØØ   blit   %   % concat Ø Ø collect  append  copy ì ìØØ “ˆ “ˆ“ˆØØ“ˆØØ iter2 “ˆ “ˆ“ˆØØ map2 “” “”“”"ØØØ mapi2 “ˆ “ˆ“ˆØØ “” “”“” ØØØ iteri2 “ˆ “ˆ“ˆØØØ ØØØ “ˆ“ˆ “ˆ“ˆ“ˆØØ exists2 forall2äØä äØäØäØäØääØääØäaaaääØäaa aØ •üaa•üØØ ØØäØäØ•ü•üzip – ––– zip3 •ü•ü•ü•ü unzip – –– ––– unzip3rev “ˆ “ˆ“ˆØØ “ˆ “ˆ“ˆØØ“”“”$ØØØ foldBack2“”“”$ØØØ fold2“ˆØØ“ˆØØ “ˆ “ˆ“ˆØØØØØØ scanBack “ˆ “ˆ“ˆØØ reduce reduceBack Ø€‰ØØsortInPlaceWithØ sortInPlaceBy sortInPlaceØØ sortWithØ sortBy sort %ØØ findIndexäØäØ tryFindIndexØ permute  sum  Ø sumBymin Ø minBymax maxBy% %15 average %15 averageBy sub    fill ìììì%ììØì ìØØìØì ì head tail ìììììì ìnth"ììää&ìØäìììØäìØØììØìì ì replicateì#ììì쓈ì쓈“ˆ"ØØìì“”ìì“”“”(ØØØìììì “”ì5 ìììììì3ì“”ìììì 6ìØØØììì map3%ìììì,ì“”ììì.ìØØØìì(ìØØììì쓈쓈“ˆØØì ìØØììì%쓈ìì#ìØØì"“”ìì“”“”,ØØØì쓈5 “ˆììììØØì“ˆ ì쓈쓈#ìØØì"“”ììE “”ìììììì@ ØØØìììì,ØØØì쓈ìì!ØØììØìØìäØìììääØäìØäììØì%•üììØì$•üììì•ü-–ìììì–ì•üìì(ì–ììì ìØØì ììØìì%%ìØì ØØìäØìäØì%15%15Øì %15ØììØìììØì % ØØØØ5 ØØØ Ø 55 Ø ØØ Ø ØØ Ø5ØØØ ØØ5 Ø Ø5ØŽ” Ø%%Ø% Ž˜ Øä•ü %Øä•ü delay unfoldL L %Žœ Ø%Ø initInfiniteŽ  Ø%Ø 15Ø% 15 % 15ØØ% 15Ø%11115 ØØ%% ޤ Ø11% %Ø11% ލ+ Ø1Ø11%%1%Ø1Ø11%%ެ%Ø% where ް%Ø% Ž´ ØØ%ØØ% ޏ ØØ%%ØØ%% ޼ Øä%Øä% ŽÀ •ü%•ü%%% ŽÄ •ü–$%–%%%ŽÈ ! %! cast1ää5äØä%Øä%1ää5äØ%Ø%ŽÌ %11%% take99+ ìì9915 %%%, ìì9915 %15ØØ%15ØØ% ŽÐ Ø%ØŽØ %% °%%%%Ø%!ØØ11ØØ-11ØØ115ØØ%% compareWith%ìì1ì5ŽÜ $ìì1a5Žà %Žä %à1 truncateŽè" %1à•ü%•ü% Žì+ ØØ%à1!%ØØ%Ø11Ø15Ø%äØ11äØ15äØ%àŽð# %àà1%% windowed ä1àää1 ä1ää1ä1ä11&%aàää1•ü ä•ü4ä•ü%aàää1ää1(ää1ää11!aàää1àää1Žô$ %aàää1Žø aàää1‚,aàää1%Ø%% cacheŽü readonly   Ø% •ü%#%•ü%Ø% groupBy<( %<<1 < distinct<< 1 Ø%<<1 <%Ø% distinctBy  ( Ø% •ü%•üØ% countBy15 %15Ø%1515 15Ø%,! Ø%1à takeWhile0 skip4' Ø%1àà skipWhile115ØØ%% last15 exactlyOneØ%Ž” 1Øä•ü Ž˜ ØŽœŽ Ø11% ޤ%Ø11Ø1Ø11% ލ%Ø11 1ެ 11 ް 11ØØ Ž´ØØ ޏ 111 ޼ •ü •ü – –•üŽÈ1ŽÌ1 11  ŽÐ ØŽÔ °ŽØ°Ø°´°°Ø°°Ø°ŽÜ ŽàŽä •üŽè %•ü •ü 1•ü1 Žì1 1ŽðŽðŽð % 1àää1Žôä•üä•ü ä•üŽøŽü<a  Ø<a< •üa<<a •üa!<•üaaa=<a =<a •ü% < •ü%=<a   %=<a =<a  =<a•ü%<a %•ü%< < < <<  < < < <   Ø< < < =<•ü •ü=< (< <  $%=< =<•ü< %•ü,04H Ø1%Ø1 P# ØØäØ)%ØØäØ T ØØX#%ØØØ)ìØìØØìØL dLd d dh l Ø` ØØ%%Ø p % ä%àä% ä% %ä%!%ààä% ààä%x' Ø%ààä% %ààä%%Ø%|`%%Ø ˆ+ ØØØØØ ‚ 4‚ ØØØØØ y<y@Dy < <<Ø1H LLLØ Ø P T55`\11\\ d Ø d dh Ø l Ø pàä%t %àä% ä%x 1%|€  „ ØØØØ ˆ€ØØØ° äØäØäØ °  ØØœ˜ ° °ÄÄÀ °ÄÄ1°ÀÀÀ°1 ˜ œ   GBMicrosoft.FSharp.Collections.Generator+Step`1+_Stop@DebugTypeProxyGBMicrosoft.FSharp.Collections.Generator+Step`1+Yield@DebugTypeProxy (° °FAMicrosoft.FSharp.Collections.Generator+Step`1+Goto@DebugTypeProxy˜¤ ˜œ¨ œ ¬  (Ø(äØ(ذ °Ø° ذ´¸ ذ´´´°¼ ´ ° À ä1'œ °(1ÄÈ ÄÌ1ÄÔ 1- 1 è Ø11Ø1 ì ØØ1à1ØØ1 ð ØØ111%1ØØ11 àä äààä ô) Øä1ààäààä1Øä1Ø1àø Ø1à1Ø1 ü Øä•üà à 1Øä•ü àü Øà!Øààü àüØ Øààüäààü1äØäàääàä'Øàäàä àä 8 ØäØààäàä ààäàä)1ØØäØ Ø11Ø1Ô55ÜÜÜ  èØØ ìØØØ1 ð1 ôØäøØ1à üä•üØä•üä•ü"ä•üä•ü àü àü1 àä  àä"ääää% €‰ “ˆ “ˆ$ “ˆ “ˆ€‰ØØ “ˆ$ “ˆ, y0 y4 “ˆ “ˆ8 Ø“ˆ “ˆ yØØØ0 Ø “ˆ8 “ˆ ä ä isSome isNone 䨨䨨äØäØääØääØää bind äìä  base1 base2    €õe €õezeroCreateBased  createBasedØØ initBasedØØ Ø!ØØØ L ØØ P ØØØ(ØØØT X  rebase(  L  ØØØ P TX €‰€‰ €‰€‰ €‰€‰  ììììØìììì “ˆì“ˆì#ìì“ˆì “ˆ*ììììì$쓈ìì5 ììì쓈ìììììììØì ØììììììØì“ˆì“ˆ“ˆ ìì ìì!ììììììììì1ìììììììììììì1ì5 ì@ìììììììììì ììØ!ììØì ììØì0ì•üì•üìì ììì•ü•üììì–ì–=ì–ì–ììì)ìììì––ììì1ììììì•ü ì•üììC ììììììì–)ì–ìììì  ì"ìììì.ìØØììììØØ#ìØØìØØ àì3 ìììììì&ìØØàì àìàìüØ Create üCreateFromValue ü get_IsDelayed get_IsForced ForceSynchronizedForceUnsynchronizedForce InfinityNaN InfinitySingle NaNSingleseq unboxbox raise ä |Failure|_|not compare  failwith invalidArg nullArg invalidOp ZTThis function has been renamed to 'reraise'. Please adjust your code to reflect this rethrow reraise•üfst•üsnd ignore àref à àØØØ"ØØØØØØ"ØØØ x ØØØØØ | ØØØØØ€í€×This construct is for ML compatibility. Consider using the '+' operator instead. This may require a type annotation to indicate it acts on strings. This message can be disabled using '--nowarn:62' or '#nowarn "62"'.>TIsHiddenä defaultArg  ìììì à incr decr exit byte sbyte uint16 int16  uint32 int32int enum |KeyValue|    uint64  int64 float32 float€ decimal unativeint nativeint ‚Q‚Q string char ØØ lock usinge typeof‚qØmethodhandleof typedefof sizeof hashid‚u‚u stdinÅ stdout stderr€ % „%abs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh ˆŒ pown Ø Ø x Ø Ø Ø | Ø     1ØØØØØØ %aLThis function is for use by compiled F# code and should not be used directly´TIsHidden  1 1 Ø Ø Ø Ø Ø Ø  %   1 1 Ø Ø Ø Ø Ø Ø  %   1 1 Ø Ø Ø Ø Ø Ø  %  11ØØØØØØ % 11ØØØØØØ % 11ØØØØØØ % 11ØØØØØØ % 11ØØØØØØ % 11ØØØØØØ %  1   1  %   1 1  %  ‘< ØØ!1ØØ‘@ ØØ%ØØ  ‘D ØØ#1ØØ ‘H ØØ!%ØØ 1 1 %        €€€€€ €€€ €€€ €€ØØØØØØØØäää äää+ääää,ääää9ääääää:ääääääG ääääääää, H ääääääää0  äää qe ‘Teq Ø ‘XeeqØØ‘\ Ø‘ ‘´‘È ‘ÜØØ‘ø’ ’ ’4’H’\Ø’ ’´ ’È’Ü’ð“““,“@ “T” ˜   ¤ ¨    ØØ 1          Ø Ø  1           Ø Ø  1           Ø Ø  1      ØØ 1     ØØ 1     ØØ 1     ØØ 1     ØØ 1     ØØ 1             1              1 ØØ‘<‘@ ‘D ‘H     1 ‘T ‘X Ø‘d Ø‘l‘t‘|‘„‘Œ‘”‘œ ‘\ eØ Ø  €€ €€‘¨‘°‘ ‘¼‘Ä‘´‘Ð‘Ø‘ÈØØ ‘è ØØ ‘ô  ‘ÜeØØØØ   ‘ä Ø Ø  ‘ð’’‘ø’’’ ’(’0’ ’<’D’4’P’X’H Ø’d Ø’l’t’|’„’Œ’”’œ ’\ eØ Ø      € €     ’¨’°’ ’¼’Ä’´ Ø ’Ð ’Ø ’È eØ Ø’ä’ì’Ü’ø“’ð“ “““ “(““4“<“,“H“P“@ØØ “` ØØ “l “TeØØØØ “\ Ø Ø Ø “h defaultof equals ìììì “Œ “ˆ Ø “ˆ ““ˆ“ˆ “ˆ “Œ “ˆ “˜ “” ØØ“”“ˆØ“ˆØ “œ “ˆØ “  ØØØA“”“”“ˆØ“ˆØ“” “˜ “” ØØØØ“¤“”Ø“ˆØØ“”Ø“¨ “”Ø“ˆØØ“¬ “ˆØØ“°! ØØØØ{“¤“¤“”Ø“”Ø“ˆØØ“ˆØØ/“¤ØØØØ“´ “¤ ØØØ ØØØØØ “¤“´“¤“¼ “¸" ØØØØ“¸“¤Ø“”ØØ!“ˆØØØ“¤Ø“À “¤Ø“”ØØ“Ä “”ØØ “ˆØØØ“È# “ˆØØØ“Ì( ØØØØØ€Ç “¸“¸“¤Ø“¤Ø“”ØØ“”ØØ“ˆØØØ“ˆØØØ8“¸ØØØØØ“¸“¼“¸ Ø  &ØØØØØ €€‘€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€ €‘ €€€‘ €‘“Ô“Ø€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€”€‰e” ”       ‚y}   ‚y}  ‚y}  ‚y}    e”$”(”,ØØoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHiddenØØØØ ”P ”T ”\qqØØqØØee ØØ ØØ Ø Ø Ø Ø ØØ Ø Ø Ø Ø ØØ ”H ”œ ”  ”¨ ØØ ”” ”ì ”ð ”ø ”ä •8 •< •D •0“Ø                  €€ €€ €‰” €‰”$”(ØØØ€Ø€ Ø Ø Ø Ø ”<”D ØØ”,eqØØØØ€ €€     ”@ Ø ØØØ ØØ ØØ ØØ Ø Ø ØØ ”HeeeØØ ”L ”P ”L Ø ”T ”X ”\ ”X  ”” ”˜ ”œ ”˜ ”  ”¤ ”¨ ”¤  ”ä ”è ”ì ”è ”ð ”ô ”ø ”ô •0 •4 •8 •4 •< •@ •D •@•€••”{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden €õ€õ •€€õ •€ •è €õ€õ•è•è  •è •€  •€€õ€õ    •€€õ€õ •€ •€€õ€õ     €õ€õ   •€€õ€õ  •€€õ€õ (  •€€õ€õ   €õ€õ •€€õ€õ •€ •€             @            €õ€õ€‘€õ•ì €õ€õ•ì•ì €‘€‘€õ€õ  €‘€õ€õ €‘ €‘€õ€õ €õ€õ €‘€õ€õ  €‘€õ€õ ' €‘€õ€õ  €õ€õ €‘€õ€õ €‘ ••”€‘ €‘€õ €õ€õ  •ì•쀑€‘•ü €‘– – €‘–– €‘– €‘•ü•ü€‘––!€‘–– %€‘–– €•ü•ü€–– !€––%€–– •Œ•œ €     €Œ•œ e€ŒD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden••”€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€048<@(048<@€±00€4488<<@@$((€®004488<<@@(€(((€½(004488<<@@(€‘`dhlptX`dhlpt €é``€ddhhllpptt(XX€è``ddhhllpptt+€XXu `dhlpt€‘X+XX€‘(XX˜œ ¤¨¬°˜œ ¤¨¬° +˜˜€œœ  ¤¤¨¨¬¬°°,(˜˜œœ  ¤¤¨¨¬¬°°/€€–˜œ ¤¨¬°€‘/€‘,ì !%•Ä% •ÈØ•ü •ÌØ•üØ– •ÐØ–Ø–•Ô –ؖؖ•ؖؖ } 5•ø •ø•ü––––   – – $–•ø–•ø -–•ø   •ø‚ ‚•ø •ø‚… ‚… •ø 5 •ü•ü – ––––––––– – – – ––––(– –––•ð•ð° Ïfî4”è6êoºZ® Òâ4zÄz¥Bd£ Yû¨ÙUA\ÉÀe9ú n¢ÎsÙÚV?J9¦:\`ceò·"Åâ5bø)ŒaÆsÅe^…OŸ ·Ì©Ó€ÆqîÒ—“ø-÷ݬj¾¾Õ­ l¿Ð*ãNpÊ}ŽK&G“EÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetŒPADPADP1Xó‚èŽw‡&1–‡ðÔS‰¸[lj 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—]ºO˜’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½é‡8lÅ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9áRéã(X—ä~Ë€è-$ê½CêYënêýÃÙê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú²‡û¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(ÉH+#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFoundÝNcontrolContinuationInvokedMultipleTimes! delegateExpectedp&dyInvDivByIntCoerceŠ dyInvOpAddCoerceÓ$dyInvOpAddOverload"dyInvOpMultCoerceg&dyInvOpMultOverload°endCannotBeNaNû4enumerationAlreadyFinished*enumerationNotStarted=4enumerationPastIntMaxValuej^failDueToUnsupportedInputTypeInSumByOrAverageBy­*failedReadEnoughBytesˆ,firstClassUsesOfSplice¶&genericCompareFail1é indexOutOfBoundsý"inputListWasEmpty7,inputMustBeNonNegativeR$inputSequenceEmptys(inputSequenceTooLong’LinvalidRecordTypeConstructorNotDefinedÆJinvalidTupleTypeConstructorNotDefined"invalidTupleTypesUkeyNotFound”keyNotFoundAltÎ0listsHadDifferentLengths0<0 +‚70  ¢€0!0 +hË–‹ á`aŸnyÌL‹'èÒHü ‚-0‚ 0‚ˆ  aÌ“f0  *†H†÷ 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 111010203225Z 130110203225Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚î[¾}$ã†àfÿHµ½ä´ 2ðr>}.‡×N¡±§C/÷ež1á21E®×Á$„!×.µ„~ú5ÓS×¶QOÎf¹ë· ý)\­¨‡öÊ"´Õ¿uõŠpc×ïŠéC$dZÓ‡}m;¬vÍW6}è¼V¬˜ð‰].dƯ& ^cñ=¿™ˆÃ0·Á `rÌÖ·¨5†›¡ æ“[ŽúTœÁó_BŸ?·'ƒ2‚óÙ‡Ô!²<¢¶O×$ªîõ³Ùúù9O§éò¯YRôÜA›/pcÝêÞªñm!S3»²OÅáS²AeGn7ö¼é›A‘k.[0ã‚0‚0U% 0 +0URó*·À‰Ã=Ô–X¹£Sn0Uÿ€0U#0€ËèÊÒ´XÉ7.3¹Lš 0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicCodSigPCA_08-31-2010.crt0  *†H†÷ ‚¥[6l­N›iãoŠ›iwÃldr(ˆÙ=Em,{Ô(/âYj 4·Šýê¹”ì1æjôuÓ§Ú^:žý© ½œQCoÿg”œáÏ|ð$°5̃]îÚÀo6IÀZ WösážóãL;>/ÌÒÍîO"p÷¦K›¸\ˆ6”l3¸©­Q ÐÂÜŽ"½Ãß‚×V¡÷Ýð¥ Wtlq›ÁðòÂp^§ÛmM7X™My@Ð4]Z%®gëNF°Œ)£¥3Ÿ#ÕøµF}àîc˜K>¨/°³Y¤¯ASŽ-*É:L.©1QVd¬šÌ¬—˜)Š—‡ê¶0‚º0‚¢  aŽB0  *†H†÷ 0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA0 120109222558Z 130409222558Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:F528-3777-8A761%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚–ìŽGMTÂ\•€×N =¿—CÃKã`g/M ØÑF/@Þ ¤PRˆ Cz-?îHnfÇ‘æÊnìy©j#›ÍbžÍj¤?ç£CÿbG¡´ºDúß@Á…T~è §,C#›R25ôþšVŸcw{0ž 3…rÊJÈÌ%ÍÛ].ǰŒñCHGµz åóïÁºô³ØÍ8û!ª= m…ÐÊç†À3ƒµ%ÄÌZœÄÃÚb%MS%aûàì÷GÆ€Eæ5S#6wʰݘ+9Àu5ÝL!=v0Ų°es)H'ØÂÒ°„G»xºÕtÞ×K÷SÞxÚ†÷aˆ&3´GÆ Tˆ+,u£‚ 0‚0U/èFÈhÓnO² ÐÞ‰NñGîHÁò0U#0€#4øÙRFp í@ûvû³+°Ã5³0TUM0K0I G E†Chttp://crl.microsoft.com/pki/crl/products/MicrosoftTimeStampPCA.crl0X+L0J0H+0†œvwñ%ÞGmÞI…¡ÚJKF!5¨u6L·³ªß·+Ù¾*jýß5Ì? ÇÝÏN”$c .$®_CDz\Ý7Û¤E³‘:W}ãGÆfÓÏœFVôL±à ªÕöÕ<¢àµÔø~Ukô‘ÍQ§•e0‚¼0‚¤  a3&10  *†H†÷ 0_10 ’&‰“ò,dcom10 ’&‰“ò,d microsoft1-0+U$Microsoft Root Certificate Authority0 100831221932Z 200831222932Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0‚"0  *†H†÷ ‚0‚ ‚²rY\0d¿š` B™vSl>ÖoÌËñêkþ—àß:tƒ·/ 2ìÿÞÂBN#ÕrÛ5W ‰Ê® Iôðh¬MK¥½yKq›GÚý%ßuˆÏªsD×Ûó½ò6¤É\Eܯ­=à(h—§¥rsVñ”äý5”r Öv_wEƒ…8Ðs[ºgR¥²i/Ú þ’t)âv/TÝ0YøÒbýËÉ_F1P¹'ä@0Ïr)("Ç7N= 2=Í¡8…\NV‚(*2·K×OcçÒ-bñE=ç¬öF¡žÑ[Œ&SèzªJòFÏ7<8ž´w\¥žËV<Á¬ _Ó£‚^0‚Z0Uÿ0ÿ0UËèÊÒ´XÉ7.3¹Lš 0 U†0 +‚70# +‚7ýÑ1NÓ&Š•á˜`;¨1o¦<¼Ø-0 +‚7  SubCA0U#0€¬‚`@V'—å%ü*á S•Yä¤0PUI0G0E C A†?http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl0T+H0F0D+0†8http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt0  *†H†÷ ‚Y9>&F¯ëo@±2µjë/n¨I÷ë_uíL;-×C­ þËé-1£#Ì|P˜€!]¬=/Lº¢¨Vœãp»¸´øyµIr÷>êAÊá iË¥œ -ú PÄVÍ-ãJÒ¼pç¨ ¢¥VชKWò•Bœñóïîã†4<¸VšðS#…*¤‚“â”òâNøŒ¡Ê襑NÈÒr•*qm›øðSÖgÌ"ÿ\Í¢Œ½'²ycVD¢QÍùé£XVÝ›ED/_ôÚ®Ô‚2nü¤•äëiç©¢,¾È+eŽ™Ûõ¢ú& e8”ñzJ»ÑáVèÐx–\É5_Ý“IŽ-¾­4Dî]Ý5[!Î˜Ç î…ŒOmN=|)HœrÑólÊÁìp£W’W}” HZ÷Ï£g t¥6í-/Èær7ôo±ãZaèbOb¶´êÍöNn=[s )”æEº3%GX9 «›ÒA¸ŠÊçõ"g ãZ˜Sɰ])ĦwºàvYSLöp\¹¯Hb±âSµƒÅ`ߊˆ>&Oòô€PceÖ‚-ù“äÐEˆÌÜi‘¸»ØÆîî–ËBÒ¶ì&€JœX<ûOØgŒÙD¦#CËôfîZ0¬g;ŒV>c+B‰ž&^¤ÓÔ¤¿[§½ÈF¯`w?à®~û_7´ÿ4ôŽ»œ•f £¦J4Û¡h¡‚%Ã0‚ *†H†÷  1‚ 0‚0…0w1 0 UUS10U Washington10URedmond10U Microsoft Corporation1!0UMicrosoft Time-Stamp PCA aŽB0 + ]0 *†H†÷  1  *†H†÷ 0 *†H†÷  1 120727022906Z0# *†H†÷  1uà«Rc<#]v¾ (°=ÂK¥0  *†H†÷ ‚‚žTîÞ%`µ­M„Ü+ÌLÞàWXl”úKG2Ý%Òž*xmd‚žkâ¡ (nA£Ñ{ ¬Ó±W ‡pÓ!¯9IS‡ÅŽ/ÜÿÑ@avºkÀèßÊ8Lˆ[ßž~‡?Ô8ÿ¸4ÑÔ ]~¹ë_ƒ"~ì¡ÙÆ5C¿ŸÓHÊ„[Ö)Ý(ºá‘ýmSÃV¿ç©³Jù]A«0‚#  +‚71‚#0‚#Œ *†H†÷  ‚#}0‚#y10  `†He0\ +‚7 N0L0 +‚70  ¢€010  `†He pF_RÆ,ÌuQØM2!: šý¬Š² Û޵¡zﯠ‚ ?0‚½0‚¥ 3âyú %XEê0  *†H†÷  0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20110 120707001432Z 131007001432Z0ƒ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0‚"0  *†H†÷ ‚0‚ ‚œQs·§/ΰ=X?,˹]::H÷lT~ܸ* m;YŽ%ÐN`tÛ´œ„UOÒ?†€;²ÔA‹°|ÕGÅKaIÚ a½D<äûØo`N3œí‰Q‚ßPÖÙ²>÷½€F—vŠÍ«r9¤q'âü²øÄñ´ÙŸ€òåCŠTý!cnøHzÊÜôP䶃"ŒGÁ*D>8ñ¶.¸±­ù0+„A£s»šp•)œ&ÍÎ9¿L/œ¶î*Z¬’ó6>âò)éP¢@Î2'å§c©£¥óÙû:Óœ³r£5Ex¼¾½€Ñ(kd‰óßtÁ„ÒEÖ@oÛ\-£‚,0‚(0U%0+ +‚7L0Ua??P’±.ÎòCqc\BF0U#0€HndåPÓ‚ª77"µm¨Êu•0TUM0K0I G E†Chttp://www.microsoft.com/pkiops/crl/MicCodSigPCA2011_2011-07-08.crl0a+U0S0Q+0†Ehttp://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt0 Uÿ00  *†H†÷  ‚‚ŸCk]²dR÷ÓæÅo‹ù…ÃPøÃãÃ(øtqëO'C…£Mõf†`a;ÝW¾ õ~/ž=¬E3]²¢vÑß`ï¡yN^ž|#áñ°qÓzA°"L„ÌŠWCÖ®›3=’f;”¯vþðd•bƒàWC;ÎGæÜuŒÒùÊj÷HíN2Ù LÂÇóf„¤È×÷>øôäŒÖ÷L¹Íò¹ÀÐêƒH9›2 ŽýÂxã¸[Ïð+0¾7w¢ùoÞÛÐ\CRú,•¬éGa÷s°Õär¸c3—Õ—ÿaðIî_–æ,µ5ïÏOå}k>YÚžðÍÖ°€HaŒ• ë€±FÖ5°i?ýã†r~˜Í#Céܶ z‡Õ¥Ý¿:£Ö‚úÑMxKí[¦ž 4„ðR¼NÀqÞ㑹sy ò64«,I¤`0 ‹˜&ýâd‚•±Œ]è‰O„ò¡/Yä;-®3XÅ·>þ2Ó³=±²¯’8~Ò€,õNV‘!5%Ã9ndSºœ­#„Ëôº†÷_ðÐR¿Œ”‡¼À!t%_(¶Ì'(8%˜9J6Ï|±’®#§©fìajá(I_ˆâ%]Ó!K>RĵW?$ðÑz[/Õ#ãp]QFw³øá¼¬‚_ÛÀ³½ÔUKç9¡é#I¼¸D|EäÁÃrzàrç$ß¿F™ÅïÂWÛƒìMI0§«Žßì[Ÿ¯üݰfâÁ—{íÖíKçI)§(¦§}g€æŠbx_²/„×Wœ\¿w((ñímÃ(,@7OÁá…D‰Ä LÅÔ¥C/t•÷nøx X,]`•š>O3„Ú°ˆÞžNô–°¼F l˜ÒàÖˆŒ £‚í0‚é0 +‚70UHndåPÓ‚ª77"µm¨Êu•0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€r-:1C¹Náê§Ç1Ñ#‰40ZUS0Q0O M K†Ihttp://crl.microsoft.com/pki/crl/products/MicRooCerAut2011_2011_03_22.crl0^+R0P0N+0†Bhttp://www.microsoft.com/pki/certs/MicRooCerAut2011_2011_03_22.crt0ŸU —0”0‘ +‚7.0ƒ0?+3http://www.microsoft.com/pkiops/docs/primarycps.htm0@+042 Legal_policy_statement. 0  *†H†÷  ‚gò†¥˜àTy.ÓØtg"› –ác’™B–}Òy Áe_.,>øÃrÑmƒþ¾?è Ê;¿G©£óiÛc¿"5¥—]e„}‹FPUØ ’|ÒKó.)›æ=¥Ôµw”9âédÉD=xz#ó}¦tƒôË&F*Š»¤© ›íhúh.• *?*kXIc inZ˜–äƒôÀóF+Þü;н5ïn%®å¯'íÐÝó¯™(—˜M= ò‰ÖÃ2âðÅ-Î[ž´I9 Æ ÂÆ­®å²ÙÛˆQEX82q'±ô'øÞ,: i˜²Y‰hno§·tÃ@¦*(>‚?Mf À³Mõáo}E§vå@*e£Ã]Rb†Ãc6—†ßÚóøò¡š'áÍ¥—Ðî]cAã[œ‡>wѱu¾aaµðÜÆ¾ßAÇ(îÞe/ì—ö¡\–ØÖ¡F½Yó—¥ KH™€Ð)ű›¥?Ew5ÆÒ¢¢Ÿzz"úH•«ûG#€õžø¿k·K—âëuxìê7™yKÿÖ³#huæ¯úü‹ë €êi;¯ü0íLŽßßumc‘=ÑVNO¿€W"¡x2!zïA ±?û¨Ì¤]Á¡ˆ›WqVNHEÀBÉ›v[ €HkýyŸÁ½mmjÉRs zPÍ1‚À0‚¼0•0~1 0 UUS10U Washington10URedmond10U Microsoft Corporation1(0&UMicrosoft Code Signing PCA 20113âyú %XEê0  `†He É0 *†H†÷  10 *†H†÷  1  +‚70 +‚7 10  +‚70/ *†H†÷  1" uù85›HLé^Øx<`’B×e0V*Cf óɃMñ º0J +‚7 1<0:  €FSharp.Core.dll¡€http://microsoft.com0  *†H†÷ ‚ºæ $ëfÊžœý%o,oÖf¶¾?.»8#R§êˆµúí4ü7ÉRË.tgÅUœÉÇ3$®MÔrBcÎ?µ™~YcÔžuÕ‘%‚Ðt˜ÑRÕZÎBü!ÉÎ$¬ G¤ÚóÌå>õu U çÔ%,Hlà{=º ¯µ"@¬†î©‚Vƒ3·X ³pt¿Œ‹ÊscÐ2Çê ¡d m“G.Ô÷ IBÖC£ÎôëEév¹ÑH6yÛzüHšâ#x4ç K¡ª1;Áå&’â‰l2)àdX2ÅÇ{ŠÕË‹V}[ó—yò…iŒ*IUÍ 9òy ¶Jðù+—'¨¿|¡‚/0‚+ +‚71‚0‚ *†H†÷  ‚0‚10  `†He0‚= *†H†÷   ‚,‚(0‚$ +„Y 010  `†He ¹È@šL~òd‹œW೓øº:¢÷|I\kÊHÝ»{Oó§³b20120727022909.834Z0€ô ¹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service ‚Ä0‚q0‚Y  a *0  *†H†÷  0ˆ1 0 UUS10U Washington10URedmond10U Microsoft Corporation1200U)Microsoft Root Certificate Authority 20100 100701213655Z 250701214655Z0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100‚"0  *†H†÷ ‚0‚ ‚© ¼wŠ: ìü—õúi”ktTÕ¥ ‚…ûí|hK,_ÅÃåaÂv·>f+[ðS'1A•Î Ž|a0Y±0Dñ`ˆ„TC ×M¸8³BÝ“¬Ös0W&‚£E ÐêõGÍ¿$`2X`FòXG†2„tag‘_T±Ï“L’ÁĦ]Ñan(Æù†€»ßaüFÁ'$gr!НKd‰Pb±]ýw=ðWu¬½ŠBM@QÑœ>gõfÀ–D~ïÐKýnåšÊ±¨òz* 1ðÚN‘¶ˆ5èx°é™Í<ç/Dº§ôÜd½¤Á “xÍü¼ÀÉD]^œO"M£‚æ0‚â0 +‚70UÕc:\Š1óC{|FÅ3hZ…mU0 +‚7  SubCA0 U†0Uÿ0ÿ0U#0€ÕöVËè¢\bhÑ=”[×ΚÄ0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicRooCerAut_2010-06-23.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicRooCerAut_2010-06-23.crt0 U ÿ•0’0 +‚7.00=+1http://www.microsoft.com/PKI/docs/CPS/default.htm0@+042 Legal_Policy_Statement. 0  *†H†÷  ‚æˆQ âÆà˜?q=£¡!o³ë¦Ìõ1¾Ïâ©þúWm0³ÂÅfÉjßõçðx½Ç¨ž%ãù¼íkTW+Q‚Dû¹SŒÌô`ŠvÌ@@A›Ü\ÿ\ù^5˜$VKtïBȯ¿Æò7}Z?ò™yJ‘R¯8õ/yeÙ©µkäÇÎöÊzoK0D$"<Ïí¥–Y)¼¶ýápŸ2J'ýU¯/þ¶åŽ3»b_šÛW@éñΙfŒÿjbÝÅJ ‘&â9ìJqc{!mÜ£¢<ú}–jx¦mÒáœùü8Ø”ôÆ¥ –†¤½ž®Bƒ¸µ€›"8 µ%ådì÷ô¿~cY%z.9Wv¢qªŠ‰ºa§ËšØGš€ÅÐͧÐï}ƒðá;q ß]t˜"aÚ°Po½ñáßç1¤“:÷eGxèø¨H«÷Þr~akow©Ë§ ¬9»ìÆËØ‚´rÍô¸…€û‰*T9²[ÚÈ U™z‡s;æ˜-êà3.)õÀ/T'!÷ȬNÚ(¸±©Û–²§B¢ÉÏAMà†ù*š£f0Ó»t2Kßc{õ™Š/Ç!¯Yµ®ÜD<—PqסÒÅUãiÞWÁÑÞ0ÀýÌæMû ¿]Oé8/¼ÏX.ï  P5Úï 'Õ³~5ºÚ6ÛÓ_ÞtˆI0‚Ñ0‚¹  aõ 0  *†H†÷  0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 20100 120109213540Z 130409214540Z0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service0‚"0  *†H†÷ ‚0‚ ‚¬ŠM±Kn!(ñÍÏ÷„Ó2QÜE;k+z!-@ÍˤQ˜É 4î•q¨ ó?MãñYhå¶.‹Õ½Ô *Er’ o¥HV´< ›EiøÞ#Q‰Š“ Ý‚w­‡ë‚_”‘îá†7M¨$qäp‡Ahu#’â‡;ÀLÞ˜€â¶ÛäÖ„]Ψ'¡ë´»›ôŠ3-Ýí‘nð4«Óþšbü^ІþÀGU’ƒ>Ø”š—Cu™cv2Þ Ïš~Ýx¾íÛº(§”vèvžnøú‚[³3’ ¹ÓÀä݃6Ì­±œEXlhVFÂs*Ú ÖÖÖ—_÷6>ð¦âÄÙ£‚0‚0Uþ¢†xöá›/zßšêÑ!ê~§0U#0€Õc:\Š1óC{|FÅ3hZ…mU0VUO0M0K I G†Ehttp://crl.microsoft.com/pki/crl/products/MicTimStaPCA_2010-07-01.crl0Z+N0L0J+0†>http://www.microsoft.com/pki/certs/MicTimStaPCA_2010-07-01.crt0 Uÿ00U% 0 +0  *†H†÷  ‚ŸzœVü$»”eØB5ß-†ÂÏYÈ!‡Q=gâÌïñÖ 5:L«?¦˜ém"[Ð;Ï–†Sͬö4.‰ùÿà9§!<áÖðo)íÐ Mr#ƒõÚø­»•œ* —#/º^ 4¶†r:½q€¿9jð‘ùý y,ŸFyˆ¿‹ N“´¡¯ôZ>,ð»ÇÙ§YtìÅŽ¡×d‘£™V/õ¯a§‡zÐÈ~MNdŒù/$¨2Ý)°Có·Ò›åˆ°G*ŒÖ)òµÍFtA^È Åø'¦Ô2l ß`¼‡l]3]ZÊ€vê4ÿiàûË®\c§ è·lä{¸¡‚v0‚^0㡹¤¶0³1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher DSE ESN:7D2E-3782-B0F71%0#UMicrosoft Time-Stamp Service¢% 0 +›ðï7‰íIHKNŵ°æ“‡e0 Â0¿¤¼0¹1 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR1'0%U nCipher NTS ESN:B027-C6F8-1D881+0)U"Microsoft Time Source Master Clock0  *†H†÷ Ó¼_0"20120727002814Z20120728002814Z0t0: +„Y 1,0*0 Ó¼_0 0á0 Ó½°ž06 +„Y 1(0&0  +„Y   0ã`¡ 0¡ 0  *†H†÷ ‚šœWiƒ­cµnh’PL7I\FèÖÅD îØò(V-ˆX K bJ~h¬sã:q­+AŽÞõ‰€ž’tqã‡Ë>°xµPGªÜË–³s×j¿U!õ®o³:–•Zád€?N“ŒT/±º!ÆSHþ(>áóúÁ Åʾ?S¼š_ÌÚsÓ©wÍp—SU£f^YG#2 „UEx£ÑjT~[ÓlA_ß›A¿Xv‘;jXž˜˜–©ÓM”–¤-Ti¬.Î× ì§;×˼e¢kd3Üä&ðÇ(~ SŒxÞ)Ø9çÔ®i Á1âë®/l³¢H¸UÊ Žû-:sB1‚ã0‚ß0Š0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0  `†He ‚)0 *†H†÷  1  *†H†÷  0/ *†H†÷  1" õaw¬`%v‡"Ì~ZmŸc–yhxw vzd0Ù *†H†÷   1É0Æ0Ã0¨›ðï7‰íIHKNŵ°æ“‡e000€¤~0|1 0 UUS10U Washington10URedmond10U Microsoft Corporation1&0$UMicrosoft Time-Stamp PCA 2010 aõ 0®×=¹Ã„¿„F¯ø”9Ú~™Wo0  *†H†÷  ‚1ËHT8Ý [ÃêË[*I‰|öÍ÷ä:}’,8±ÆU;BÔ-(Ñv›P"@ÆŒYÙ«í½º4¿Üô‰)Q@<ßþªFÂ|÷ê2MVãÕÐZ—«P6óæÈsÆCnV×8†êEbgJom¾ÒK?mà¤ßGvèWÉy"lÂjú³Co\ܼæQágõ¹±7§'êú QbãõxÓD˜˜áMj c’.Z¥'½¨ó¡XúÇš–0ÁQ0ˆ{Ž\C/Ãnf|.»Z´sàe“[/QÇÕË WŒ=bñ*·–#­wÌRïô%¦> B8Ϋ¾»æ+°XqÍqïfsharp-3.0.34/lib/bootstrap/2.0/0000775000175000017500000000000012260314606015152 5ustar chrischrisfsharp-3.0.34/lib/bootstrap/2.0/fslex.exe0000775000175000017500000434200012260314606017004 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL§¸gKà º>Ø à@  ¥@â×Yàˆ DØ  H.text$¹ º `.rsrcˆà¼@@.reloc Â@BØH ß´ î@è@;Àç€0{*0{*0{*0{*0{*0,( }}}}}*0Fþ,5þ,-(Ž {{( /*1*(ä**þ,**0¥(*0Q¥ þ,4¥þ,'{{( /*1*(å**¥þ,**0ˆþ9| ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{ , ( +bcXXX **0 (( *0oþ,`u ,T{{( ,?{{3/{{3{{3{{þ******þþ*0{*0{*0{*0{*0{*0{*0{*0{{Y*0){{X{X{{s*0'{{{{{Xs*0(*0'{{{{{Xs*0rps*0 s*0kþ,\þ,T{{( ,?{{3/{{3{{3{{þ******þþ*0u ,(**0{ *0{ *0( } } *0šs } ( &} { ( s } ®} } } } } } } rps} rps} }! *0Wþ{! / (+{ / rps" z{ (# { ($ ((% { *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *00þ{! / (+{ { { þ(+*0*þ{! / (+{ { X£®*0"þ{! / (+{ ¥¯*0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+s& *0þ{! / (+s' *0(( () (* s+ *0þ{! / (+{ *0þ{! / (+} *0þ{! / (+(, *0$þ{! / (+{ { X*0g þ{! / (+(- X { Ži þþ,5(- X(+ { { { { (+} **0S (+ , (. s/ (0 +, (1 s2 (3 +s4 s5 *0(6 (7 *0(8 (7 *0s÷ (9 (: *0sù (; (< *0;s= (0 s> (3 s4 s5 (+ (? Ži(@ *0(A *0(B *0 (C (B *0s (9 (: *0s (; (< *0s(; s(D (< *0:{ { - r)psE z (F { (G (+oH &*0;{ { - r¥psE z (I { (G (+þoJ *0<{ { { (+ Ži { (+} } *0( &}}*0(+þ(P*0  (+sK (æ*0 sL*0 Ë{£:i  ÿÿ.(L (M (N +(L (O 3:(P (Q oR &{ ÿÿss þ(+*(S (T £;i {£À£:i  ÿÿ3(U *(L X(V 85ÿÿÿ0h( &}} ÿÿ} €}{£ÀŽiY{YY[}{{ZXX}*0(+þ(V*0!  (+sW (è*0 sQ*0=#i {/{£À£:i*{   (ê*0 Ê${£:i { þþ,(X (Y (Z +(X ([ 3<(\ (] oR &{{s#s%{þ( +*(( (^ £< (U {3(_ *(X X(` 86ÿÿÿ0?( &}a }b }c }d }e }f }g *0{a *0{c *0{d *0{b *0{e *0{f *0{g *0{h *0{i *0{j *0{k *0{l *0{m *0{n *0{o *0{p *0{q *0{r *0{s *0{t *0{u *0{v *0{w *0„( }h }i }j }k }l }m }n }o  }p  }q  }r  }s  }t }u }v }w *0 ( +*0( &(+}x }y *0F%{x Ži 17{x Z /+(+}x {x {y þ(+**0{y *0{y Y}y *0{x {y Y£®*0)'þ®þ®sz ( +þ( +*01{y X({ {x {y ¤®{y X}y *0 {y þ*0O( {y Y 2>rp{x £®Œ®{y Y3r-p+r1p(| X X3Â*0(} *0 (~ *0 ( *0 þ,**0*( þ,**0',þ,u , ( +-***þþ*0#þ,þ, ( +-***þþ*0,u ,(‡**0(} }6*0(} *0 (~ *0 ( *0{6*0--þ,$ ¹y7žt ((+bcXXX **0 (oŽ*0D,þ,5u ,)(+-*t (t (þ(+**þþ*0?þ,0þ,((+-*t (t (þ(+**þþ*0,u , þ(‘**0X1s€ , (  (‚ sƒ +s„ s¤(… s(† s‡ *0~U*0~V*0~W*0~X*0~Y*0€Y*0~Z*0O4ŒÈ¥GŒH ,+uF , (ˆ ¥Jo‰ + oŠ +rpþo‹ *0*ŒÈ¥GoŒ ŒÈ¥Gr5pþo‹ *0 ÿÿ*0~[*0sŽ ŒÈ¥Gþ(+*0E-o ,"o {Ò oŒ r5pþo‹ * ÿÿoŒ r5pþo‹ *0t<(U ¥Ëo‘ o’ 96o“ r?ps” (+ {Òo• &reps– (+&s— sÈ {Ô(++Ñ(R( X €2Üo˜ o’ ,4o™ ioŒ r5po‹ (R( +à Þu  ,  oš &Ü&Ü & (IY 2 ÿÿÿ X(  X  X3áþ( rwps– (+&8¿þÿÿ Þu  ,  oš &Ü&Ü&*A4¢BäEX0E-o ,"o {Ò oŒ r5pþo‹ * ÿÿoŒ r5pþo‹ *0 mR(”(› - rps" z(œ (G( ,rp+r­p (–(ž (“(Ÿ (  (¡ (1s´(+(+ Ý}t r¹ps£ (¤ (+  s¼(¥ {(¥ {{Y (r , (œ + o¦ (+&(+ Þ  Þu, oš &Ü&Ü  Þu, oš &Ü&Ü rãps– (¤ (+&(k(¨ (© s¾(+r3ps” (¤ (+(ª o• &rGps– (¤ (+&(•(› , (œ +(« (¬ (­ rep(® (¯ (—(° (± (+,+5(—(° (+,!(² ,(³ rmp( ++,rups– (+&+{®(´ (µ rps¶ ( +sÂ{{(!+&r£ps¸ ("+o¹ &(ž(ž(º r©prp(» <% ¤<(¼ ŽiX(½ rps¶ ( +sÆ(ž(º (!+&r­ps– (+&réps– (+&(G( ,(¡8ä¥Ëo‘ o’ 9§o“ rùps” (+{Òo• &rps– (+&s— !!sÊ{Ô(+! "+"Ñ# #(R(¢"X"" 2Û þ(¢rwps– (+&8MÿÿÿÞu, oš &Ü&Ü&r%ps– (+&r5ps– (+&¥Ëo‘ o’ ,^o“ {Õ(¾ 1+{Õ(¿ (À ""oŒ r5po‹ +´ ÿÿoŒ r5po‹ +™Þu, oš &Ü&Ü&rmps– (+&rspsÁ (#+$$sÎ(˜ ($+&rßps– (+&{°(%+%%¥áoà &&o’ 9­&oÄ ''(Å (Æ '(Ç (È ('(Ç (É )r3ps¸ ("+(o¹ &rOpsÊ (&+**sÚ(rËp)('+(Ë (˜(rËp)('+(Ë {Ò/((+/o• &8GÿÿÿÞ&u, oš &Ü&Ü&{°(%+%%¥áoà &&o’ 9Á&oÄ ''(Ç (È ('(Ç (É )'(Å (Í +r3ps¸ ("+(o¹ &rÏpsÁ (#+$$sÞ(rËp)('+(Ë ($+&rps– (+&sè+()+r‘ps¸ ("+(o¹ &83ÿÿÿÞ&u, oš &Ü&Ü&{±,,(´ -,(µ (rps– (+&rps¶ ( +sì-{-{(!+&r£ps¸ ("+(o¹ &r¿ps¸ ("+o¹ Þu, oš &Ü&Ü ÞLt rÝps¸ .(¤ .(*+ (r , (œ + oŠ o¹ &(++ Þ&*AÜn}n¢nÂ0ޏF–l‡¾E€ÒR òÿL:(Î }7*0'T(Ï (Ð (Ñ {7þoÒ *(Ó *0(•(Ô (Õ *(Ö *0(–(× (Ø *(Ù *0(—(± (Ú *(Ù *0(—(± (Ú *(Ó *0 (™*(Ó *0*(”(› -(”(Ô (Õ *r ps" z:(Ù }Û *0.(ž(ž(º X(½ {Û Œ®¥GoÜ *(Ý *0 <þ(þ*:(Ó }9*0{9þo¹ *:(Þ }:*0V{:oß s¶*:(à };*0W{;oá s¸*:(â }<*0Y{<oã sº*(ä *0{Ò*:(Ó }=*0{=þo¹ *:(Þ }>*0V{>oß sÀ*:(Ó }?*0{?þo¹ *:(Þ }@*0V{@oß sÄ*:(å }A*0[(æ (ç {Aoè *:(å }B*0[(æ (ç {Boè *:(Ó }C*0{Cþo¹ *:(é }D*0V{Doê sÌ*:(Ö }E*0{Eþo• *:(ë }F*0]{Foì sÐ*:(í }G*0_{Goî sÒ*:(ï }H*0a{Hoð sÔ*:(ñ }I*0c{Ioò sÖ*:(ó }J*0e{Joô sØ*:(Ó }K*0{Kþo¹ *:(é }L*0V{Loê sÜ*:(Ó }M*0{Mþo¹ *:(Þ }N*0V{Noß sà*:(Ó }O*0{Oþo¹ *:(Þ }P*0V{Poß sä*V(õ }Q}R*0 úg(µ (´ {RrAps” (+o• &{Rrps¶ ( + sâ{{(!+&<% ¤<% ¤<(ö +- £3{Rr[ps¸ ("+o¹ &X Ži2Ì{Rrps¶ ( + sæ(ž(º {Q(!+&{Rrps– (+*:(Ó }S*0{Sþo¹ *:(Þ }T*0V{Toß sê*0 s÷ €Us÷ €Vsø €Wsù €Xr—p€YrÑps¦(Qr×psú rps¨(Wrpsú r®psª(Or¾psú rÒps¬(Orêpsú rNps®(Qr`psú rG p(G(Sr[ psú (û (ü (ü (ü (ü (ü (ü €Z(šs°rË p(Msý €[(£*0b'YER\YEBbYE3nYE#rYEtYE* * * **\*'*0 (þ sÿ *0( (( *0(hrí p(þ sÿ (® r p(® s" z0'02 9þþ+,i0iY*r ps" z0u02 9þþ+,(ó*a2 fþþ+, iaiY X*A2 Fþþ+, iAiY X*sr+ ps (,+þo *0(ódZ(ó ZX(óXÑ*0(ôZ(ôXÑ*0a-( þþ, rM ps" z( (ô Z( (ô ZX( (ôZX( (ôXÑ*0ò(( þþ, rg ps" z( (ô Z( (ô ZX( (ôZX( (ôX ( (ô Z( (ô ZX( (ôZX( (ôX - Ñs * Ø ZX Y [XÑ( 0ß ZX Y ]XÑs *0~ñ*0~ò*0~ó*0+ý0 <þ(þ*0Þk(û(RE! #)^нÜ-w™·ÈÎÔÚàæìòøþ /;Br‹ ps" z(K*(I*(c*(G*(E*(þ sÿ ( \3( (ï+( (=*(þ sÿ ( ( ( (õ(=*(þ sÿ ( ( (ôZ(ôXÑ(=*(þ sÿ ( (÷(=*(þ sÿ ( (ø (  , r— ps" z (  (=*(þ sÿ ( (?*(¥ ds  (¥ {{YXrËp(2(  þ(*(¥ ds  þ(ÿ*<8Ñýÿÿ(  ((† <8³ýÿÿ(þ sÿ (7*(a*(_*(]*([*(Y*(W*(S*(Q*(C*(A*(U*(O*(M*(¥ (<8;ýÿÿ<8/ýÿÿ(-+*(c*0 ,(*0Œm(û(RE ,[š¦Öú0r4 ps" z(  ((† ,+¢(þ sÿ ( (ï( &,8sÿÿÿ(þ sÿ ( ( ( (õ( &,84ÿÿÿoŠ (9*(  ((† ( (  &,8øþÿÿ(þ sÿ (  &,8ÔþÿÿrB ps (.+ s {{{Y(/+ s" z(þ sÿ ( ( &,8tþÿÿ0 (*0†o(û(RE X|¨Øü &r” ps" zoŠ s (;*(þ sÿ (  &( rž p(  &8rÿÿÿ(þ sÿ (  &8Nÿÿÿ(þ sÿ (  &( 8"ÿÿÿ(  ((† ( (  &8òþÿÿ(þ sÿ (  &8Îþÿÿ(þ sÿ (  &8ªþÿÿ(c*(þ sÿ ( ( &8zþÿÿ0 þ(*0î(û(RE )Dq’r¢ ps" z(þ sÿ (  &+­(þ sÿ (  &þoŠ *(  ((† ( (  &8eÿÿÿ(þ sÿ (  &8Dÿÿÿr¸ ps" z(þ sÿ ( ( &8ÿÿÿ0 (*0Ôp(û(RE ¥+KL†”rð ps" z+¸(¥ ds  ,( Þet (r ,S (œ r p(® r ps (.+s{{{Y(/+(® s" zþ 8)ÿÿÿ(Þet (r ,S (œ r p(® r‹ ps (.+s{{{Y(/+(® s" zþ&8£þÿÿ(  ((† 8ƒþÿÿ*rý ps (.+s{{{Y(/+s" z8:þÿÿ8,þÿÿIbeØçe0 €ô~ô&*( *0s" z:( }é*0{éþo *:( }ê*0r{êo s *:( }ë*0{ëþo *:( }ì*0r{ìo s*:( }í*0{íþo *:( }î*0r{îo s*:( }ï*0{ïþo *:( }ð*0r{ðo s*0 ‹À% Ÿ:%Ð]( ¤À% Ÿ:%Ð^( ¤À% Ÿ:%Ð_( ¤À% Ÿ:%Ð`( ¤À% Ÿ:%Ð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( ¤À% Ÿ:%Ð{( ¤À% Ÿ:%Ð|( ¤À% Ÿ:%Ð}( ¤À%! Ÿ:%Ð~( ¤À%" Ÿ:%Ð( ¤À%# Ÿ:%Ѐ( ¤À%$ Ÿ:%Ð( ¤À%% Ÿ:%Ђ( ¤À%& Ÿ:%Ѓ( ¤À%' Ÿ:%Є( ¤À%( Ÿ:%Ð…( ¤À%) Ÿ:%І( ¤À%* Ÿ:%Ї( ¤À%+ Ÿ:%Ј( ¤À%, Ÿ:%Љ( ¤À%- Ÿ:%Њ( ¤À%. Ÿ:%Ћ( ¤À%/ Ÿ:%ÐŒ( ¤À%0 Ÿ:%Ð( ¤À%1 Ÿ:%ÐŽ( ¤À%2 Ÿ:%Ð( ¤À%3 Ÿ:%Ð( ¤À%4 Ÿ:%Б( ¤À%5 Ÿ:%Ð’( ¤À%6 Ÿ:%Г( ¤À%7 Ÿ:%Д( ¤À%8 Ÿ:%Е( ¤À%9 Ÿ:%Ж( ¤À%: Ÿ:%З( ¤À%; Ÿ:%И( ¤À%< Ÿ:%Й( ¤À%= Ÿ:%К( ¤À%> Ÿ:%Л( ¤À%? Ÿ:%М( ¤À%@ Ÿ:%Ð( ¤À%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 Ÿ:%з( ¤À%[ Ÿ:%и( ¤À%\ Ÿ:%й( ¤À%] Ÿ:%к( ¤À%^ Ÿ:%л( ¤À%_ Ÿ:%м( ¤À%` Ÿ:%н( ¤À%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 Ÿ:%Ð×( ¤À%{ Ÿ:%ÐØ( ¤À%| Ÿ:%ÐÙ( ¤À%} Ÿ:%ÐÚ( ¤À%~ Ÿ:%ÐÛ( ¤À% Ÿ:%ÐÜ( ¤À% € Ÿ:%ÐÝ( ¤À% Ÿ:%ÐÞ( ¤À% ‚ Ÿ:%Ðß( ¤À% ƒ Ÿ:%Ðà( ¤À% „ Ÿ:%Ðá( ¤À% … Ÿ:%Ðâ( ¤À% † Ÿ:%Ðã( ¤À% ‡ Ÿ:%Ðä( ¤À% ˆ Ÿ:%Ðå( ¤À% ‰ Ÿ:%Ðæ( ¤À% Š Ÿ:%Ðç( ¤À€ñ ‹:%Ðè( €ò(ù(ú(T€ó*0£x{þ {þ @‰(eE)aÌ÷*tB tB (Ž{( {(( *tCtC(Ž{){)4*þ*tD tD (Ž {*  {*  (µ   (´  (µ  (´  ( ,*( *tEtE(Ž{+{+( *tFtF(Ž{,{,( *Y*0y{þ {þ @e(eE"S¶Ú*tB tB {( {(( *tCtC{){)4*þ*tDtD {*  {*  (µ   (´   (µ  (´  ( ,* ( *tEtE{+{+( *tFtF{,{,( *Y*0Ìz (eE  $).38=BGLQ¨þ0 * * * * * * * * * * * * * * * * * *tB  ¹y7ž{( , ( +bcXXX *tC  ¹y7ž {)(0+bcXXX *tD ¹y7ž{*(µ (´ , ( +bX( abcXXX *tE ¹y7ž{+ , ( +bcXXX *tF  ¹y7ž {, , ( +bcXXX *0æ- (·E  $).38=BGLQV[`ejo * * * * * * * * * * * * * * * * * * * * * * * * *0¤(eE "%(+.147:********* * * * * **********0E%+17=CIOU[agmsy…‹‘—£©YE rQ ps" z(‡*(µ*(³*(±*(¯*(­*(«*(©*(§*(¥*(£*(¡*(Ÿ*(*(›*(™*(—*(•*(“*(‘*(*(*(‹*(‰*(…*0fE" $*06<BHNTZ`flrx~„Š–œ¢¨®´ºÀÆÌÒr‹ ps" z(Û*(Ù*(×*(×*(Õ*(Õ*(Ó*(Ñ*(Ñ*(Ï*(Í*(Í*(Ë*(Ë*(É*(É*(Ç*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Å*(Ã*(Ã*(Ã*0*0*0ò(eE %+17=CIOU[agmsy…rá p*ré p*rñ p*rù p*rp*r p*rp*r'p*r=p*rKp*rYp*rap*rkp*rup*rp*r‰p*r‘p*rŸp*r­p*rÏp*rÙp*rãp*rñp*0í{(eE !#%8K^q******************tB {(Œ3*tC {)Œ<*tD {*ŒÚ*tE {+Œ3*tF{,Œ3*0~*0~‘*0~’*0~“*08*0~”*0~•*0~–*0~—*0~˜*0º"%sç¤%sé¤%së¤%sí¤%sï¤%sñ¤%só¤%sõ¤%s÷¤% sù¤% sû¤% sý¤% sÿ¤% s¤%s¤%s¤%s¤%s ¤%s ¤%s ¤%s¤%s¤%s¤%s¤%s¤%s¤%s!¤%s#¤%s%¤%s-¤%s/¤%s1¤% s9¤%!s;¤*0P}s= (0s?sA(+(,(-(/(&('((()(.s *0(1(1+*0(1(1+þ(+*0 €™~™&*0Ðs6€ÿs6€s6€s6€s6€s6€s6€s6€s6€ s6€ s6€  s6€  s6€  s6€ s6€ s6€s6€s6€*0( }þ*0sw*0 (eþ*0su*0 (eþ*0ss*0 (eþ*0sq*0 (eþ*0so*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~ *0 (eþ*0~ *0 (e þ*0~ *0 (e þ*0~ *0 (e þ*0~ *0 (e þ*0~*0 (e þ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~*0 (eþ*0~ÿ*0 (eþ*0{þ*0rýps (2+o *0"þ,þ, (**þ,**0¥@(g*04~¥@ þ,¥@þ, (**¥@þ,**0þ, (**0 ((j*0Šþ9xu@ 9i{þ {þ @R(eE$E£Ç*tB tB {({(( *tCtC{){)þ*tDtD{* {*  (µ   (´   (µ   (´   ( ,  ( **tEtE{+{+( *tFtF{,{,( ***þþ*0T€þ9Bþ97{þ {þ @ (eE"Cq•*tB tB {( {(( *tCtC{){)þ*tDtD{*{*  þ(3+*tE tE  {+ {+( *tF tF  {, {,( ***þþ*0~u@ , þ(m**0(6}(*0{(*0(6})*0{)*0(6}**0{**0(6}+*0{+*0(6},*0{,*0( }-*0 {-{(*0( }.*0 {.{)*0( }/*0 {/{**0( }0*0 {0{+*0( }1*0 {1{,*0$s„€3s„€4s„€5s„€6s„€7s„€8s„€9s„€:s„€; s„€< s„€= s„€> s„€? s„€@s„€As„€Bs„€Cs„€Ds„€Es„€Fs„€Gs„€Hs„€Is„€Js„€K*0( }2*0~K*0 (·þ*0~J*0 (·þ*0~I*0 (·þ*0~H*0 (·þ*0~G*0 (·þ*0~F*0 (·þ*0~E*0 (·þ*0~D*0 (·þ*0~C*0 (·þ*0~B*0 (·þ*0~A*0 (·þ*0~@*0 (· þ*0~?*0 (· þ*0~>*0 (· þ*0~=*0 (· þ*0~<*0 (· þ*0~;*0 (·þ*0~:*0 (·þ*0~9*0 (·þ*0~8*0 (·þ*0~7*0 (·þ*0~6*0 (·þ*0~5*0 (·þ*0~4*0 (·þ*0~3*0 (·þ*0{2*0rýps (4+o *01(þ, þ,{2 {2 3*Y**þ,**0¥L(¹*0B‚¥L þ,%¥Lþ,{2 {2 3*Y**¥Lþ,**0þ,(**0 ((¼*0.‚þ,uL ,{2 {2 þ**þþ*0*(þ,þ,{2 {2 þ**þþ*0ƒuL ,(¿**0”s€fs€gs€hs€is€js€ks€ls€ms€n s€o s€p s€q s€r*0( }e*0~r*0 (Ý þ*0~q*0 (Ý þ*0~p*0 (Ý þ*0~o*0 (Ý þ*0~n*0 (Ýþ*0~m*0 (Ýþ*0~l*0 (Ýþ*0~k*0 (Ýþ*0~j*0 (Ýþ*0~i*0 (Ýþ*0~h*0 (Ýþ*0~g*0 (Ýþ*0~f*0 (Ýþ*0{e*0rýps  (5+o! *01(þ, þ,{e {e 3*Y**þ,**0¥N(ß*0B…¥N þ,%¥Nþ,{e {e 3*Y**¥Nþ,**0‚-þ,y (ÝE   $).3 * * * * * * * * * * * * **0 ((â*0.…þ,uN ,{e {e þ**þþ*0*(þ,þ,{e {e þ**þþ*0†uN ,(å**(" *0+‡o[(+ ,¥+ Œƒs‰zŒ*(" *0DŠo[(6+ o[(7+ o[(8+ o[(6+  s’Œƒ*(" *0o[(6+ŒÚ*(" *0oZ(# rps ŒÚ*(" *0 ($ Œù*(" *0(Œo[(9+ o[(7+ (% Œù*(" *0(Žo[¥3 o[(:+ s& Œú*(" *0(o[(;+ o[(8+ (' Œû*(" *0‘o[(;+ (( (' Œû*(" *0C“o[¥3 o[(<+ o[¥&o[(=+ s) Œå*(" *0 (* Œü*(" *0(”o[¥3 o[(<+ (+ Œü*(" *0Œ*(" *0Œ*(" *0(–o[(>+ o[(=+ (, Œý*(" *0—o[(>+ (- (, Œý*(" *0(˜o[(:+ o[(6+ s. Œþ*(" *0$™o[¥< (R(Ì( Œ„*(" *0ho[¥3 (Ê( Œ„*(" *0þ(Ì( Œ„*(" *0(È( Œ„*0,}€}}‚}ƒ}„(/ *0 Ò{ƒYE +8†+y8ž{€( Y(ïo0 }‚}ƒ{‚o’ ,J{‚o1 }}ƒ{€{( (R(Ì( }„*}+©}ƒ{‚(?+}‚}ƒ}„*0Q{ƒYE + ++++}ƒ{‚(?+}ƒ}„*03{ƒYE + + +++***0{„*0 {€s*(" *0 (ho[¥3 s(@+(¢Œ„*(" *0ho[¥3 (œŒ„*(" *07šo[(:+ o[(:+ (2 (3 (3 (¢Œ„*(" *0/›o[(:+ (ž(2 (3 (3 (¢Œ„*(" *0›o[(:+ (žŒ„*(" *03›o[(:+ (2 (¢(2 (3 (3 (¤Œ„*(" *07šo[(:+ o[(:+ (2 (3 (3 (¤Œ„*(" *0o[(:+Œ„*0,}…}†}‡}ˆ}‰(/ *0¶{ˆYE + +m+`8…{…¥Zo4 }‡}ˆ{‡o’ ,:{‡o5 }†}ˆ{†(Ì( }‰*}†+¹}ˆ{‡(A+}‡}ˆ}‰*0Q{ˆYE + ++++}ˆ{‡(A+}ˆ}‰*03{ˆYE + + +++***0{‰*0 {…s'*(" *0 (o[(B+ s'(@+(¤Œ„*(" *0o[(B+ (Æ( Œ„*(" *0™o[¥< (R(C+Œ*04}Š}‹}Œ}}Ž}(6 *0·{ŽYE + +n+a8†{Š{‹( o˜ }}Ž{o’ ,5{o™ }Œ}Ž{Œ(R}*}Œ+¾}Ž{(D+}}Ž}*0Q{ŽYE + ++++}Ž{(D+}Ž}*03{ŽYE + + +++***0{*0 {Š{‹s3*(" *0 ;žo[¥< o[¥< s3(E+¥Zs7 Œ*(" *0(Ÿo[(B+ o[(B+ (8 Œ*(9 *0 h(: *(; *0(*(< *0(%*0Ú\:%Ðõ( € :%Ðö( €‘ :%Ð÷( €’8:%Ðø( €“ l:%Ðù( €”8:%Ðú( €•":%Ðû( €–":%Ðü( €—8:%Ðý( €˜*0(= (> s? *0þ*0*0~þ*0~ÿ*0~*0 ÿÿÿ*0 ÿÿÿX*0W-(G( - r ps" z(Ho@ ,(HoA ÿÿÿX*slr”psB (F+þoC *0 ÿÿÿ5 ÿÿÿ(IXþ**0  ÿÿÿY*0 €*0~*0~*0 (D (G( ,R €4*(PoE -, €(PoF X (PoG (QoH +(PþoI * 7snrÒpsJ (G+oK &+*0X(G( , €4(L *(QþoM * 7sprepsN (H+oO &+(L *0(PþoF *0"srst(P¥ (I+þ(J+*0E¢(G( ,sv(K+ ¥usP *s|(K+ ¥usP *0E¤(G( ,s‚(E+ ¥Zs7 *sˆ(E+ ¥Zs7 *0!¥þ9(Ž {® {® (µ (´  (µ  (´ ( ,+ (  /*1*(Ž {¯ {¯   (Q /*1*(Ž {° {°   (R   / * 1 *(Ž {± {± (µ (´  (µ  (´ ( ,*( **0<­{² {² @"(¦E3j¡Øt† t† (Ž{¸ {¸þ(S *t‡t‡(Ž{¹{¹þ(S *tˆ tˆ (Ž {º  {º   þ(Ò*t‰ t‰(Ž {»{»þ(ª*tŠtŠ(Ž{¼{¼( *Y*0£°(Ž {Ò {Ò  /+ þ /*1*(Ž {Ó{Ó( /*1*(Ž {Ô{Ô(T / * 1 *(Ž {Õ{Õþ(U *0™±¥™þ9ˆ{Ò {Ò /+þ /*1*{Ó{Ó( /*1*{Ô {Ô (T /*1*{Õ{Õþ(U **0oV , þoW *(X *0³(L+ (Y þoZ *0·s (¦E(?,žt†{¸ s(M+ ([ (ÿ*t‡{¹ þ(N+*tˆ {º(ÎE0gŠ {ºt’{Ès\ (] (^ ([ (ÿ* {ºt“{És(@+(¤8 ÿÿÿs (@+(¤8èþÿÿ {ºt”{Ês(@+(¤8¬þÿÿt‰{»s\ (] (^ ([ (ÿ(^ {Ð (O+ s\ s\ (] (^ (^ ([ (ÿ*tŠ{¼(_ - røp(® rp(®   s" z(` 8êýÿÿ0 9-oa ob (] sc ([ (d (ÿþ(^*0@»sü   se  s(P+([ (ÿ ¥(Q+sf *0./£H£Hþ+,X+Õ*0:2*£H £H /+þ ,*X+Æ0~*0~*0X¿s- {Îog -B{Î(h {Ðoi ,&{Ðoj (k -*ol þ(R+***0cÂs/sm ¥Qo0 o’ ,o1 {Ö on (e+Û Þu, oš &Ü&Ü&s *)A0Äso s4('*0|Æ(p (q ,(p þ(r *(cos s9rp{ô(S+(t {ô s;¥Q(T+(U+só (p (u (v *0?Í(w (x 9+ (x (y (z ({ (| ,+· (g(} (~ 9•(   (€  ( s‚ (ƒ  („   (f  {ôŽi,F (h    (hs…  {Ô(† (ò (w (‡ (z 8eÿÿÿ8_ÿÿÿÞŒ$¥oš &Ü&({ (ˆ (‰ 8Âþÿÿ*[¦0¡Ò{ÖoŠ s6sm (es  (V+s‹ (Œ (‡ s (W+sŽ    (i (hs= (p  s? ¥'(X+(Y+(+s *0$sC{°( (‘ s’ þ(Z+*(“ *0s" z(Ó *0s" z(Ó *0s" z(” *0Ô (• (– s— (˜ *(™ *0Ô (• (– s— (š *04}š}›}œ}}ž}Ÿ(› *0-{žYE ++n+a8Ó8Ã8è(ïo0 }œ}ž{œo’ ,1{œo1 }š}ž{šÑ}Ÿ*}š+Â}ž{œ(?+}œ(Uo˜ }}ž{o’ ,0{o™ }›}ž{›}Ÿ*}›+Ã}ž{(D+}}ž}Ÿ*0v{žYE ++;+$+ +++,}ž{(D++}ž{œ(?+}ž}Ÿ*0E{žYE ++++ +++*****0{Ÿ*0 sv*0$} }¡}¢}£(› *0®{¢YE + +e+X8} ÿ(ïo0 }¡}¢{¡o’ ,1{¡o1 } }¢{ Ñ}£*} +Â}¢{¡(?+}¡}¢}£*0Q{¢YE + ++++}¢{¡(?+}¢}£*03{¢YE + + +++***0{£*0 s|*04}¤}¥}¦}§}¨}©(6 *0 A{¨YE ++s+f8ç8×8ü(V¥uo˜ }¦}¨{¦o’ ,5{¦o™ }¤}¨{¤(R}©*}¤+¾}¨{¦(D+}¦(IY(ïo0 }§}¨{§o’ ,6{§o1 }¥}¨ ÿÿÿ{¥X}©*}¥+½}¨{§(?+}§}¨}©*0v{¨YE ++;+$+ +++,}¨{§(?++}¨{¦(D+}¨}©*0E{¨YE ++++ +++*****0{©*0 s‚*0$}ª}«}¬}­(6 *0°{¬YE + +g+Z8(V¥uo˜ }«}¬{«o’ ,5{«o™ }ª}¬{ª(R}­*}ª+¾}¬{«(D+}«}¬}­*0Q{¬YE + ++++}¬{«(D+}¬}­*03{¬YE + + +++***0{­*0 sˆ*0{®*0{¯*0{°*0{±*0$( }®}¯}°}±*0þ, (X*þ,**0¥ƒ(“*0-Õ¥ƒ þ9 ¥ƒþ9ý{® {® (µ (´  (µ  (´ ( ,+ (  /*1*{¯ {¯   (Q /*1*{° {°   (R   / * 1 *{± {± (µ (´  (µ  (´ ( ,*( **¥ƒþ,**0ÌÖþ9À ¹y7ž{± (µ (´ , ( +bX ( abcXXX ¹y7ž{°(œ bcXXX ¹y7ž{¯( bcXXX ¹y7ž{® (µ (´ , ( +bX ( abcXXX **0 ((–*0î×þ9Üuƒ 9Í{® {® (µ (´ (µ (´  ( , ( +9€{¯{¯(ž ,b{° {°   (Ÿ ,D{± {± (µ (´ (µ (´  ( , ( ******þþ*0rØþ,cþ,[{® {® (3+,B{¯{¯([+,-{°{°(\+,{± {± þ(3+*****þþ*0‡uƒ , þ(™**0( }²*0s¸*0 (¦þ*0s¶*0 (¦þ*0s´*0 (¦þ*0s²*0 (¦þ*0s°*0 (¦þ*0{²*0rýps  (]+o¡ *0$þ,þ, þ(Y**þ,**0¥„þ(¨*0IÙ¥„ þ9)¥„þ9{² {² @(¦E-\‹½t† t† {¸{¸þ(S *t‡t‡{¹{¹þ(S *tˆ tˆ  {º  {º   þ(Ò*t‰ t‰ {»{»8ðþÿÿtŠtŠ{¼{¼( *Y**¥„þ,**0ûÚþ9ï (¦E&Lršt†  ¹y7ž{¸(¢ bcXXX *t‡  ¹y7ž{¹(¢ bcXXX *tˆ  ¹y7ž {º(ÓbcXXX *t‰ ¹y7ž{»(«bcXXX *tŠ ¹y7ž{¼, ( +bcXXX **0 ((«*08Ùþ9&u„ 9{² {² @(¦E-\‹½t† t† {¸{¸þ(£ *t‡t‡{¹{¹þ(£ *tˆ tˆ  {º  {º   þ(Õ*t‰ t‰ {»{»8ùþÿÿtŠtŠ{¼{¼( ***þþ*0 Ûþ9úþ9ï{² {² @Ø(¦E"Hn•t† t† {¸ {¸þ(^+*t‡t‡{¹{¹þ(^+*tˆtˆ{º{ºþ(Ö*t‰t‰ {» {»8%ÿÿÿtŠ tŠ  {¼ {¼( ***þþ*0›u„ , þ(®**0(›}¸*0{¸*0(›}¹*0{¹*0(›}º*0{º*0(›}»*0{»*0(›}¼*0{¼*0( }½*0 {½{¸*0( }¾*0 {¾{¹*0( }¿*0 {¿{º*0( }À*0 {À{»*0( }Á*0 {Á{¼*0 sÅ€Ã*0( }Â*0sÜ*0 (Îþ*0~Ã*0 (Îþ*0sÚ*0 (Îþ*0sØ*0 (Îþ*0{Â*0rýps¤ (_+o¥ *0ßßþ9Ëþ9À{ { @§(ÎE6a*t’ t’ (Ž{È {È4*þ*t“t“(Ž{É{É( *t” t” (Ž {Ê {Êþ(`+*Y**þ,**0¥þ(Ð*0àॠþ9À¥þ9°{ { @—(ÎE1U*t’ t’ {È{È4*þ*t“t“{É{É( *t” t”  {Ê {Êþ(`+*Y**¥þ,**0¤áþ9˜ (ÎE OSt’  ¹y7ž{ÈbcXXX *t“  ¹y7ž{É , ( +bcXXX * *t” ¹y7ž{Ê(a+bcXXX **0 ((Ó*0¿âþ9­u 9ž{ { @‡(ÎE!E*t’ t’ {È{Èþ*t“t“{É{É( *t”t”{Ê{Êþ(b+***þþ*0¸ãþ9¦þ9›{ { @„(ÎEC*t’ t’ {È {Èþ*t“t“{É{É( *t”t”{Ê{Êþ(c+***þþ*0äu , þ(Ö**0(Å}È*0{È*0(Å}É*0{É*0(Å}Ê*0{Ê*0( }Ë*0 {Ë{È*0( }Ì*0 {Ì{É*0( }Í*0 {Í{Ê*0{Î*0{Ï*0{Ð*0{Ñ*0$( }Î}Ï}Ð}Ñ*0|þ,s ¹y7ž{Ñ(¦ bcXXX ¹y7ž{Ð(d+bcXXX ¹y7ž{Ï , ( +bcXXX ¹y7ž{ÎbcXXX **0 ((é*0oåþ,`u˜ ,T{Î{Î3D{Ï{Ï( ,/{Ð{Ð(e+,{Ñ {Ñ þ(§ *****þþ*0eþ,Vþ,N{Î{Î3>{Ï{Ï( ,){Ð{Ð(f+,{Ñ{Ñþ(g+*****þþ*0æu˜ , þ(ì**0{Ò*0{Ó*0{Ô*0{Õ*0}Ô*0$( }Ò}Ó}Ô}Õ*0"þ,þ, (Z**þ,**0¥™(ô*0(祙 þ, ([*¥™þ,**0|þ,s ¹y7ž{Õ(¦ bcXXX ¹y7ž{Ô(¨ bcXXX ¹y7ž{Ó , ( +bcXXX ¹y7ž{ÒbcXXX **0 ((÷*0uèþ,fu™ ,Z{Ò{Ò3J{Ó{Ó( ,5{Ô {Ô (© ,{Õ {Õ þ(§ *****þþ*0eþ,Vþ,N{Ò{Ò3>{Ó{Ó( ,){Ô{Ô(h+,{Õ{Õþ(g+*****þþ*0çu™ , þ(ú**0( &dsª }Ö*0{Öþon *0{ÖþoŠ *0Ïì{ÖoŠ X (« s¬ ¥0o­ o’ , o® (¯ (° (O++Ø Þu, oš &Ü&Ü &ŒH,4uF,  (ˆ ¥Jo‰ +  oŠ +rpsè{Öo± *',SV(³ }×}Ø*0{×{Øþ(^*r(´ }Ù}Ú}Û*0 {Ù{Ú{Û(^s\ *:(µ }Ü*09(¶ (H{ÜoA 3(R(Ì( þ(i+*þ(j+*0,}Ý}Þ}ß}à}á(/ *0­{àYE + +*+m+}à{Ý(L(Ì( }á*{Ýs}Þ(V¥u}ß}à{Þ{ß(k+(l+2*}ß}Þ}à}á*0@{àYE + + + +++}à}á*03{àYE + + +++***0{á*0 {Ýs*0$}â}ã}ä}å(/ *0µ{äYE + +l+_8„(W¥Zo4 }ã}ä{ão’ ,:{ão5 }â}ä{â(Ì( }å*}â+¹}ä{ã(A+}ã}ä}å*0Q{äYE + ++++}ä{ã(A+}ä}å*03{äYE + + +++***0{å*0 s *:(µ }æ*01í(R {æ(· -(Ì( þ(i+*þ(j+*(¸ *0 (S(¶ *(¹ *06ð (º (» s¼ (½ (L(Ì( þ(i+*0T}ç}è}é}ê}ë}ì}í}î }ï }ð(/ *0q{ïYE +8˜8ˆ880{çs}è(V¥u}é{è{é(k+(l+o¾ }î}ï{îo’ ,0{îo¿ }í}ï{í}ð*}í+Ã}ï{î(m+}î}é}è(G( ,ns{ç(n+}ês}ë(H¥6}ì}ï{ë{ì(o+(l+2*}ì}ë}ê+}ï}ð*0[{ïYE ++$+ + +++}ï{î(m+}ï}ð*0<{ïYE +++ +++****0{ð*0{çs*r(À }ñ}ò}ó*0 2{ñ{ò{ó{ñ(Á ( (p+s\ *0)ñ( &¥Q(q+ s)(r+}ô*0{ô*0{ô*0{ôþ(s+*0@òu¥ ,4 {ô {ô ŽiŽi3  (a***0{ôþ(t+*0 {ôŽiþ*0Eó{ô Œ7,+ r.psà zŽi  Y  2 £Ho• & X X3è*0Qô(u+ {ô {ô ŽiŽi/+þ , *Ži(b*(Å *0 /*þ*(Æ *0$-(d(º (d(d(º X(½ *(Ç *0 (e*0 ( &*0*0þ*V(È }õ}ö*0{õ{ö{Î(v+*V(Ö }÷}ø*0Ÿø{÷{Öon {Ð (É (Ê ,^(Ë (Ì (Í sÎ (Ï (Ð .$(k -+´{øs2(R++œ+™ ÞŒ8¥oš &Ü*kŠ0 ( &*0*0þ*:(Ñ }ù*0({ù{Öon {Ïr1p(® (® *:(Ò }ú*0{ú{Öon {Ñ*(ä *0{Ò*(Ó *0 (Ô *V(Õ }û}ü*0{û(¨ (© {û{¯(w+{ü(` (Ö (× (Ø  (j(Ù (Ú sÛ (Ü (x+s’ *:(Ý }ý*0#“(È (É (Þ {ýsA*0§sß €þ4%r:ps¼ ¤4%r@ps¼ ¤4%rFps¼ ¤4%rLps¼ ¤4%rRps¼ ¤4%rXps¼ ¤4%r^ps¼ ¤4%rdps¼ ¤4%rjps¼ ¤4% rpps¼ ¤4% rvp s¼ ¤4% r|p s¼ ¤4% r‚ps¼ ¤4% rˆps¼ ¤4%rŽps¼ ¤4%r”ps¼ ¤4%ršps¼ ¤4%r ps¼ ¤4%r¦ps¼ ¤4%r¬ps¼ ¤4%r²p s¼ ¤4%r¸ps¼ ¤4%r¾ps¼ ¤4%rÄp s¼ ¤4%rÊps¼ ¤4%rÐp s¼ ¤4%rÖps¼ ¤4%rÜps¼ ¤4%râps¼ ¤4%rèps¼ ¤4¥<(y+€ÿ(Hoà €sá €sâ €sý €s+€*0«üds  (  r p(  s{(z+rîp(  ròp(  rp(  rp(  r p(  rîp(  r@p(  rp(  rp(  r p(  þoŠ *0(ã (Fþoä *0L-(º X þþ,(rLp(® r\p(® (F(® s‡z(º X£3*0 õ(]EK ­|&rt½ { oR &(º X(½ *t» { (å (º X(½ *t·{ (å (º X(½ *t¼{(Ho¹ &(º X(½ *t¹{ (H(½ Þt (Fs‡z    o• &(º X(½ *t¸  {(H §(ˆ ¥J(æ Þt (Fs‡zoç &(º X(½ *tº{(º X(½ (º /%(º £3o¹ &(º X(½ +Ñ*ù Yt0  (è ,A (é (ê ( ,*(é (ê (é (ë (I*(è :r@p( ,+ ròp( ,(Fs}z( 1( -þ+,)r†p(® r p(® (F(® s‡zo¹ &(º X(½ *  (è 8õþÿÿ0 P Ži (º X(½ (º /3(º £3   (J+Ä*0~*0{(ì (L(K Þ]t uÇ ,-tÇ(‹(ã oä (ã oí (î  Þ uÆ,tÆ(+Åþ&*]0( }*0sk*0 (]þ*0si*0 (]þ*0sg*0 (]þ*0se*0 (]þ*0sc*0 (]þ*0sa*0 (]þ*0s_*0 (]þ*0{*0rýpsï ({+oð *0(N}*0{*0(N}*0{*0(N}*0{*0(N}*0{*0(N}*0{*0(N}*0{*0(N}*0{*0( }*0 {{*0( }*0 {{*0( }*0 {{*0( }*0 {{*0( }*0 {{*0( }*0 {{*0( }*0 {{*:(ñ }*0(ë (]En8Û•^~(ê (ò {rîp(  {(  {rp(  {(  {r p(  *(ê (ò + (ê (ò +(ê (ò {rîp(  {(  {r¶p(  {(  {r p(  *(ê (ò {rîp(  {(  {rÎp(  {(  {r p(  *(ê (ò {rîp(  {(  {ràp(  {(  {r p(  *(ê (ò {rîp(  {(  {röp(  {(  {r p(  *0(} }*0(} *0 (~ *0 ( *0{*06þ,- ¹y7žtÆ( , ( +bcXXX **0 (o‚*0A,þ,2u ,&(|+-*tÆ(tÆ(( **þþ*0=þ,.þ,&(|+-*tÆ(tÆ(( **þþ*0,u ,(…**0(} }*0(} *0 (~ *0 ( *0{*06þ,- ¹y7žtÇ(‹ , ( +bcXXX **0 (oŒ*0A,þ,2u ,&(}+-*tÇ(‹tÇ(‹( **þþ*0=þ,.þ,&(}+-*tÇ(‹tÇ(‹( **þþ*0,u ,(**0 sý €*0*0*0 ÿÿ*0*0 @*0 €*0 À*0 À*0û{ó - rps" z{ô {ó Y£H {õ (ž  À_-<,4 (ö  ÿ?ÿÿ_{÷ oø (ž À_þ++,1 ÿ?ÿÿ_Œ(ù (ú s±(û (ü *{ý - rps" z{ý Y}ý {ó Y}ó 8ÿÿÿ0‘(sþ rpoÿ ds (ü ds  0þÈ01þ12þ2  d(~+ d(~+ d(+ (~+{ { { sœ{ { sœ{ { s¦   s²:‹{ó -+ë{ô {ó Y£H{  £:i ÿÿ.8k ->(  , 1  Y  +$ +o  (ù (ú  + ,{÷ oø +{  (ž À_-Z1 Y+ ÿ?ÿÿ_ - r0ps" z{  o s±(û (ü  8ßþÿÿ @@ ÿ?ÿÿ_£{ £:i!Y  !?Ç{ý - r^ps" z{ {ý Y£Ï"{ý Y}ý {ó Y}ó  !YY"{4¤ !YY"{5¤ !YY"{6¤!-"{6¤+!Y3"{5¤+!X!! X@9ÿÿÿ-9 ,¤¤+ (ù ¤(ú ¤+o ££s±(û {ô {ó Y£H { £:i (ž(ü #Þlt$$u %%,4$t (££s±(û #Þ$$u &&,(€+#Þþ#&8Àüÿÿ €@.1J ,   þ+, , ( +(€++ - r„ps" z 8eüÿÿ , ( +'(Ÿ((( (( ))s¼(+++¥Qs *)*s (++ ( ,,sÌ(‚+-)*s (+.,.'-+rÌps /{ /o &(€+8†ûÿÿ À3 8tûÿÿ8nûÿÿ{ {ý Y£Ï""{4*Kb­l0(( &}"}! Ðs }#*0_(X[ 3*{"Z£:i 3{"ZX£:i*/+µX+¡0s) b` {#o ,*{!£:i X {"Z£:i{"ZX£:i X({#o *0 M*{!£:i X {"Z£:i {"ZX£:i s (ƒ+ s  *0<}$}%}&}'}(})}*(! *0 õ{)YE +8©8™8¾{%{%{&XY(ïo0 }(}){(o’ ,c{(o1 }'}){${"{'Z£:i{${"{'ZX£:isc }**}'+}){((?+}(})}**0Q{)YE + ++++}){((?+})}**03{)YE + + +++***0{**0 {${%{&s *0( &},}+*0 5{+£:i X {,£:i s¨þ(+*0<}-}.}/}0}1}2}3(" *0 Ð{2YE +8„+w8œ{.{.{/XY(ïo0 }1}2{1o’ ,A{1o1 }0}2{-{,{0£:i}3*}0+²}2{1(?+}1}2}3*0Q{2YE + ++++}2{1(?+}2}3*03{2YE + + +++***0{3*0 {-{.{/s¨*0{4*0{5*0{6*0}4}5}6*0/}7}8}9}:};( &*0#{8Y£{9Y£s# *0{8Y£*0{9Y£*0{:Y£*0{;£{;£s# *0 {7¥¯*0sz($ *0((% (À þ(„+*0,}<}=}>}?}@(" *0}{?YE++D+Vsº}={<¥P}>}?{={>(…+(†+Q*}>}=}?}@*06{?YE + +++}?}@*0*{?YE + +++**0{@*0 {<s¼*($ *0)((% (À  À_- þ(„+*þ(‡+*:(& }A*0 {A(' - þ(„+*þ(‡+*0d}( }) }* }+ }, }- }. }/  }0  }1  }2  }3 (" *0 a{2 YE +8“8ƒ8 8 sÂ}, {* ¥P}- {, {- (…+(†+o0 }1 }2 {1 o’ ,0{1 o1 }0 }2 {0 }3 *}0 +Ã}2 {1 (?+}1 }- }, {) À_-a{+ sÄ}. {( {v Y(ï}/ }2 {. {/ (ˆ+(†+Q*}/ }. +}2 }3 *0[{2 YE ++$+ + +++}2 {1 (?+}2 }3 *0<{2 YE +++ +++****0{3 *0'{( {) {* {+ s4 *04}N}O}P}Q}R}S(5 *0·{RYE + +n+a8†{O¥Qo0 }Q}R{Qo’ ,;{Qo1 }P}R{N{P(§}S*}P+¸}R{Q(?+}Q}R}S*0Q{RYE + ++++}R{Q(?+}R}S*03{RYE + + +++***0{S*0 {N{OsÌ*($ *0.((% (À  À_ @3 þ(„+*þ(‡+*:(& }T*0 {T(' - þ(„+*þ(‡+*0d}6 }7 }8 }9 }: }; }< }=  }>  }?  }@  }A (" *0 f{@ YE +8“8ƒ88%sÒ}: {8 ¥P}; {: {; (…+(†+o0 }? }@ {? o’ ,0{? o1 }> }@ {> }A *}> +Ã}@ {? (?+}? }; }: {7 À_ @3a{9 sÔ}< {6 {v Y(ï}= }@ {< {= (ˆ+(†+Q*}= }< +}@ }A *0[{@ YE ++$+ + +++}@ {? (?+}@ }A *0<{@ YE +++ +++****0{A *0'{6 {7 {8 {9 sB *04}C }D }E }F }G }H (I *0 V,{G YE +88è8{C {x {C {y {D Y /+(× {C {y Y(× ( ( YX® Y 2!  X£®¤® X  X3ߥjoJ }F }G {F o’ ,9{F oK }E }G {E }H * þ® }E +º}G {F (‰+}F }G  þ® }H *0Y'{G YE + ++++}G {F (‰+}G þ®}H *03{G YE + + +++***0{H *0 ''{C {D þ®þ®sz *0B(L (M X(N (O (M Y(P (Q (R (S *0l-(T (O 3L£À£:i 3 þoU *(V , ræps" z(W sX þoY *sX þoY *0¹-(Ž { {  /+ þ /*1*(Ž { { /+ þ /*1*(Ž {{/+þ / * 1 *(Ž {{/*þ*0˜.{ { /+þ /*1*{ {  /+ þ /*1*{ { /+ þ /*1*{ { /* þ*0 71(Z ([ s  s  (  sþ(Š+*0( sþ(Š+*0 73(\ (] s s (  sþ(Š+*0( s!þ(Š+*0‘5 { þþ,-{{ZX (¶ {£ÀX£:i*{£ÀZX£:iÑ 3{£ÀZXX£:i*X8oÿÿÿ:(Ù }^ *0{^ &(_ *:(` }a *0{a &þ(b *V(c }d }e *0 T-{e {d {d Žisf og (h {d (i (- (+(j X(@ *V(k }l }m *0 X{m (h {l {m (i {m (- (+{m {m (j X(@ ( þ(œ*r(` }n }o }p *0 >( {o {n {n Žisf oq {n {p sr þ(‹+*V(s }t }u *0 ( {t {u sv þ(Œ+*:(Î }r*0 :6(Ï (Ð (Ñ (+ {r (Ž+ (+*:(x }s*0 :8(y (z ({ (+ {s (‘+ (’+*(c *0*(` *0( þ(“+*(s *0( sýþ(Œ+*:(Î }t*0'T(Ï (Ð (Ñ {tþoÒ *:(x }u*0'9(y (z ({ {uþo} *:(x }v*0'9(y (z ({ {vþo~ *:( }w*019(y (z ({ {w(× (× þ(½ *V(€ }x}y*0(:(Z ([ {x{ysK (æ*V( }z}{*0{z{{(ç*²( }|}}}~}}€*0 6{|{ ÿÿ{}{{€{~ þ(”+*Ò( }}‚}ƒ}„}…}†*0 ó({ƒ(L {ƒ(O 3M{ƒ(P ( {ƒ(‚ oƒ {{ƒ{„{…{†s þ(•+*{ƒ(S {ƒ(T £;i {{{„£À£:i  ÿÿ3{{‚(ç*{ƒ{ƒ(L X(V {{‚{ƒsK (æ*Ò( }‡}ˆ}‰}Š}‹}Œ*0 -{‡{{Š£:i (  ÿÿ.1{‰{‰(L (M {‰(N ( (œ+ ( (œ( {‡{ˆ{‰{Š{‹{Œs(Š+þ(–+*:( }*0( {(U þ(—+*:(„ }Ž*0:(Z ([ {Žþ(P*:(Æ }*0 {(U *V(… }}‘*0(;(\ (] {{‘sW (è*V( }’}“*0{’{“(é*Ò( }”}•}–}—}˜}™*0 ÿ<{–(X {–([ 3_{–(\ {–(] oR &{”{{”{{–{˜{™{—{”{þ(˜+*{–(( {–(^ £< {”{—(U {”{3{”{•(é*{–{–(X X(` {”{•{–sW (è*Ò( }š}›}œ}}ž}Ÿ*0 ª({š{{£:i ( {š{ þþ,1{œ{œ(X (Y {œ(Z ( (œ+ ( (œ( {š{›{œ{{ž{Ÿs(Š+þ(–+*:( } *0( { (_ þ(—+*:(† }¡*0;(\ (] {¡þ(V*:(Æ }¢*0 {¢(_ *0 ( &*0*0, (™+-***0*0(ˆ &}·*0{·*0 (+*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0(ˆ &}¸*0{¸*0 (ˆ &*0(ˆ &}¹*0{¹*0(ˆ &}º*0{º*0 (8*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0(ˆ &}»*0{»*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0(ˆ &}¾}½}¼*0{¾*0{½*0{¼*0(ˆ &}À}¿}Á*0{À*0{Á*0{¿*0 (P*0 (P*0(ˆ &}Â*0{Â*0(ˆ &}Ã*0{Ã*0(ˆ &}Ä*0{Ä*0(ˆ &}Å*0{ÅoŠ ¥Q*0(ˆ &}Æ*0{Æ*0&(ˆ &}È}Ç}É}Ê*0{È*0{Ç*0{É*0 }É*0{Ê*0 }Ê*0 (g*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0 (ˆ &*0(ˆ &}Ë*0{Ë*0 rp(n*0*0*0( *0s‹ *0 u^þ*0sŒ *0 u_þ*0> u^,+*0»Bþ9§þ9œ  u^,+   u^,+ 3ru_,3t_ t_ (Ž{  { þ(š+*t^t^(Ž{Ž  {Ž    þ(›+*Y**þ,**0¥Tþ( *0¾C¥T þ9ž¥Tþ9Ž  u^,+   u^,+ 3du_,-t_ t_ { { þ(š+*t^t^{Ž  {Ž    þ(›+*Y**¥Tþ,**0oDþ,f u_,-t_  ¹y7ž{ Œ®(êbcXXX *t^  ¹y7ž {Ž Œ`(êbcXXX **0 (( *0­Cþ9›uT 9Œ  u^,+   u^,+ 3du_,-t_ t_ { { þ(œ+*t^t^{Ž  {Ž    þ(+***þþ*0¥Eþ9“þ9ˆ  u^,+   u^,+ 3`u_,*t_ t_ {  { þ(ž+*t^t^{Ž {Ž   þ(Ÿ+***þþ*0>uT , þ(‘ **0(’ } *0{ *0(’ }Ž *0{Ž *0( }“ *0 {“ { *0( }” *0 {” {Ž *0( *0s• *0 ucþ*0s– *0 udþ*0s— *0 ueþ*0G uc,+ ud,+*0#Lþ9þ9uc,+ ud,+ uc,+ ud,+ @¿ue-ud-<uc-jte te (Ž{˜  {˜ þ(š+*tdtd(Ž{™  {™    þ(›+*tc tc (Ž {š   {š  þ( +*Y**þ,**0¥Wþ(› *0M¥W þ9þ¥Wþ9îuc,+ ud,+ uc,+ ud,+ @©ue-ud-6uc-\te te {˜ {˜ þ(š+*tdtd{™  {™    þ(›+*tc tc  {š   {š  þ( +*Y**¥Wþ,**0¹Nþ9­ ue-ud-6uc-\te  ¹y7ž{˜ Œ®(êbcXXX *td  ¹y7ž {™ Œ`(êbcXXX *tc ¹y7ž{š Œf(êbcXXX **0 ((œ *0 Mþ9ûuW 9ìuc,+ ud,+ uc,+ ud,+ @©ue-ud-6uc-\te te {˜ {˜ þ(œ+*tdtd{™  {™    þ(+*tc tc  {š   {š  þ(¡+***þþ*0Oþ9òþ9çuc,+ ud,+ uc,+ ud,+ @¤ue-ud-3uc-Xte te {˜  {˜ þ(ž+*tdtd{™ {™   þ(Ÿ+*tc tc  {š   {š    þ(¢+***þþ*0GuW , þ( **0(ž }˜ *0{˜ *0(ž }™ *0{™ *0(ž }š *0{š *0( }Ÿ *0 {Ÿ {˜ *0( }  *0 {  {™ *0( }¡ *0 {¡ {š *0( }¢ *0s£ *0 (¤ þ*0s¥ *0 (¤ þ*0s¦ *0 (¤ þ*0s§ *0 (¤ þ*0{¢ *0+Uþ9þ9 {¢ {¢ @ó(¤ E3j¡tm tm (Ž{¨  {¨ þ(š+*tltl(Ž{©  {©    þ(›+*tk tk (Ž {ª   {ª  þ( +*tjtj(Ž{« {« þ(£+*Y**þ,**0¥Zþ(¬ *0W¥Z þ9þ¥Zþ9î{¢ {¢ @Õ(¤ E-\‹tm tm {¨ {¨ þ(š+*tltl{©  {©    þ(›+*tk tk  {ª   {ª  þ( +*tjtj{« {« þ(£+*Y**¥Zþ,**0çXþ9Û (¤ E-\tm  ¹y7ž{¨ Œ®(êbcXXX *tl  ¹y7ž {© Œ`(êbcXXX *tk ¹y7ž{ª Œf(êbcXXX *tj ¹y7ž{« Œn(êbcXXX **0 ((­ *0 Wþ9ûuZ 9ì{¢ {¢ @Õ(¤ E-\‹tm tm {¨ {¨ þ(œ+*tltl{©  {©    þ(+*tk tk  {ª   {ª  þ(¡+*tjtj{« {« þ(¤+***þþ*0Yþ9ñþ9æ{¢ {¢ @Ï(¤ E*X†tm tm {¨  {¨ þ(ž+*tltl{© {©   þ(Ÿ+*tk tk  {ª   {ª    þ(¢+*tjtj{« {« þ(¥+***þþ*0ZuZ , þ(® **0(¯ }¨ *0{¨ *0(¯ }© *0{© *0(¯ }ª *0{ª *0(¯ }« *0{« *0( }° *0 {° {¨ *0( }± *0 {± {© *0( }² *0 {² {ª *0( }³ *0 {³ {« *0( }´ *0sµ *0 (¶ þ*0s· *0 (¶ þ*0s¸ *0 (¶ þ*0s¹ *0 (¶ þ*0sº *0 (¶ þ*0{´ *0$þ,þ, þ(¦+**þ,**0¥]þ(» *0*\¥] þ, þ(§+*¥]þ,**0cþ9 (¶ E-\¾tw  ¹y7ž{¼ Œ®(êbcXXX *tv  ¹y7ž {½ Œ`(êbcXXX *tu ¹y7ž{¾ Œf(êbcXXX *tt ¹y7ž{¿ Œn(êbcXXX *ts  ¹y7ž {À   Œx(êbcXXX **0 ((Á *0þ, þ(¨+*þþ*05dþ9#þ9{´ {´ @(¶ E*X†´tw tw {¼  {¼ þ(ž+*tvtv{½ {½   þ(Ÿ+*tu tu  {¾   {¾    þ(¢+*tttt{¿ {¿ þ(¥+*tsts{À {À þ(©+***þþ*0\u] , þ( **0(à }¼ *0{¼ *0(à }½ *0{½ *0(à }¾ *0{¾ *0(à }¿ *0{¿ *0(à }À *0{À *0( }Ä *0 {Ä {¼ *0( }Å *0 {Å {½ *0( }Æ *0 {Æ {¾ *0( }Ç *0 {Ç {¿ *0( }È *0 {È {À *0( }É *0sÊ *0 (Ë þ*0sÌ *0 (Ë þ*0sÍ *0 (Ë þ*0sÎ *0 (Ë þ*0sÏ *0 (Ë þ*0sÐ *0 (Ë þ*0{É *0:(þ,)þ,!{É {É 3 þ(ª+*Y**þ,**0¥`þ(Ñ *06f¥` þ,¥`þ, þ(«+**¥`þ,**0þ, (¬+**0 ((Ò *0'fþ,u` , þ(­+**þþ*0"þ,þ, þ(®+**þþ*0fu` , þ(Ó **0(Ô }Õ *0{Õ *0(Ô }Ö *0{Ö *0(Ô }× *0{× *0(Ô }Ø *0{Ø *0(Ô }Ù *0{Ù *0(Ô }Ú *0{Ú *0( }Û *0 {Û {Õ *0( }Ü *0 {Ü {Ö *0( }Ý *0 {Ý {× *0( }Þ *0 {Þ {Ø *0( }ß *0 {ß {Ù *0( }à *0 {à {Ú *0( }á *0sâ *0 (ã þ*0sä *0 (ã þ*0så *0 (ã þ*0sæ *0 (ã þ*0sç *0 (ã þ*0sè *0 (ã þ*0sé *0 (ã þ*0{á *0:(þ,)þ,!{á {á 3 þ(¯+*Y**þ,**0¥cþ(ê *0Lh¥c þ,/¥cþ,"{á {á 3 þ(°+*Y**¥cþ,**0þ, (±+**0 ((ë *0;hþ,,uc , {á {á 3 þ(²+***þþ*06(þ,'þ,{á {á 3 þ(³+***þþ*0iuc , þ(ì **0(í }î *0{î *0(í }ï *0{ï *0(í }ð *0{ð *0(í }ñ *0{ñ *0(í }ò *0{ò *0(í }ó *0{ó *0(í }ô *0{ô *0( }õ *0 {õ {î *0( }ö *0 {ö {ï *0( }÷ *0 {÷ {ð *0( }ø *0 {ø {ñ *0( }ù *0 {ù {ò *0( }ú *0 {ú {ó *0( }û *0 {û {ô *0(} }!}"}#*0(} *0 ( *0{!*0{"*0{#*0jþ,a ¹y7žtv(VbcXXX ¹y7žtv(UbcXXX ¹y7žtv(T , ( +bcXXX **0 (oW*0w,þ,hu ,\(´+-*tv(Ttv(T( ,3tv(Utv(U3tv(Vtv(Vþ****þþ*0(^r p(ü þoý *0sþ,dþ,\(´+-*tv(Ttv(T( ,3tv(Utv(U3tv(Vtv(Vþ****þþ*0,u ,([**0 ( &*0 ( &*0sþ *0sÿ þ s *0s *0s þ s *0(ku ,  þo *o þo *0Gnu  , þo *u¡ , o  þo  *o  þ(µ+*0qru¤ , þo  *u¥ , o þo *u§,o þ(¶+*o þ(·+*0Ÿwu© , þo *uª , o þo *u¬,o þ(¸+*u­,o þ(¹+*o þ(º+*0s *0s *0s *0s  *0s! *0s" *0{# *0}# *0( }# *08xþ,'þ,(Ž {# {# þ(š+**þ,**0¥µþ($ *0Cz¥µ þ,&¥µþ,{# {# þ(š+**¥µþ,**0/{þ,& ¹y7ž{# Œ®(êbcXXX **0 ((% *04zþ,%uµ ,{# {# þ(œ+**þþ*0{# *0 (& *0/|þ, þ,{# {# þ(ž+**þþ*0}uµ , þ(' **0( *0s( *0*0( }) *0{) *0  ,+*0g€þ,Vþ,N,+ ,+ 3.,)  (Ž{)  {) þ(š+**Y**þ,**0¥¶þ(* *0r¥¶ þ,U¥¶þ,H,+ ,+ 3(,#  {) {) þ(š+**Y**¥¶þ,**0:‚þ,1 - *  ¹y7ž{) Œ®(êbcXXX **0 ((+ *0fþ,W(»+-*¥¶ ,+ ,+ 3(,#  {) {) þ(œ+***þþ*0þ*0þ*0!rJp(, (¼+rVp(® (® *0Zƒþ,Kþ,C,+ ,+ 3%,   {)  {) þ(ž+****þþ*0(»+-*¥¶þ(- *0 s. €/ *0( *0s0 *0 {1 þ*0~/ *0 {1 þ*0( }2 }1 *0{2 *0{1 *0 {1 þ*0 …þ9Œþ9{1 þ {1 þ 3e{1 ,[  (Ž{2  {2 (š+/*1*(Ž{1  {1   (3 **Y**þ,**0¥·(4 *0©†¥· þ9‰¥·þ9y{1 þ {1 þ 3]{1 ,S  {2 {2 (š+/*1* {1 {1   8nÿÿÿ*Y**¥·þ,**0Z‡þ,Q {1 - *  ¹y7ž{1 (5 bcXXX ¹y7ž{2 Œ®(êbcXXX **0 ((5 *0‡ˆþ9uu· ,i{1 þ {1 þ 3O{1 ,E  {2 {2 (œ+,! {1 {1 8Šÿÿÿ****þþ*0n‰þ,_þ,W{1 þ {1 þ 3={1 ,3  {2  {2 (ž+,{1 {1 +£****þþ*0Šu· ,(6 **0 (½+*0C-(½+  è1rZp*3%rvp¤3%þHoŠ ¤3(7 *0*{1 -(^rŠp(ü oý sE z{2 *0*{1 -(^rŠp(ü oý sE z{1 *0 (¾+*0±‹{1 9  {1 {1 9[{1 {1 {1 9ó{1 {1 {1 -p{2 {2 {2 s8 r®p(  (¼+(  r²p(  (¼+(  r²p(  (¼+(  r¸p(  þoŠ *{2 {2 {2 s8 r®p(  (¼+(  r²p(  (¼+(  r²p(  (¼+(  r¼p(  þoŠ *{2 {2 s8 r®p(  (¼+(  r²p(  (¼+(  r¸p(  þoŠ *{2 s8 r®p(  (¼+(  r¸p(  þoŠ *rÌp*0 s9 ¥m*0s9 ¥m¥*0( &}; 2}< *0)%{; (¿+ ®  {; (À+*0,{> ," {> {< 1*X+Ö*0( &}/*0{/*0~0*0 €ÿ ~ÿ &*0( &}? }@ *0'þ®Œ®sA *0 sA *0þ{@ ,**0¾þ{@ 9©(B þ{@ 9~u€ ,  {/zu®,T~0Œ€}@ oC }? }@ ÞtsªŒ€}@ þ ÞrÒps" z{? Þ (D &Ü*{? *W w—« 0‚‘þ{@ ,+,.(E Œ®(Á+,rêp*(E þ®oŠ *þ{@ u€ ,( {/~0(F ,røp*þoŠ *rp*0 “( &þF}G }H *0w–{H , {G +  oI YE**oJ uF ,oJ - }G +sK }G }H 8‰ÿÿÿ0 þoL *0 oL ¥*0 {H ,{G þoM *þoM *0 {H ,{G þoN *þoN *0%{H ,{G oM +oM Œ®*0(O *0 ˜sP z0( &}S }T *0{S oR &*0{S oR &*0{T þoJ *0{T ¥þo: *0( *0 sU *0sV *0*0š u¾,+ u¿,+*0(W }X }Y *0{X *0{Y *0,(W }Z }[ }\ }] }^ *0{Z *0{[ *0{\ *0{] *0{^ *0( }_ *0 {_ {X *0 {_ {Y *0( }` *0 {` {Z *0 {` {[ *0 {` {\ *0 {` {] *0 {` {^ *0( &}a }b }c *0œ(Â+ sd €e *0y¡{b (Ã+ ŒÃ,+ r.psà zŽi Ä Y23£Å(f (g sh ¤ÄXX3Í }c *0…¢(Â+}a {c ŒÆ,+ r.psà zŽi Å Y2# £Ä(Ä+¤ÅXX3Ý {a (Å+}b }c *0~e *0œ(Â+ (Æ+sd *0~e *0œ(Â+ (Æ+(d *0{a *0{b *0 {a {a {b (Ç+sd *0 {b þ*0{a {b (È+*0{b þ(É+*0{b þ(Ê+*0 {a {a {b (Ë+sd *0{b þ(Ì+*0(k {b þ(Í+*0{a {b (Î+*0{b þ(Ï+*0{a {b (Ð+sl *0{a {b (Ñ+sl *0B¤{a {b (Ò+ (m (n {a sd {a sd so *0{b (Ó+*0{a {b (Ô+*0{a {a {b (Õ+sd *0{a {b (Ö+*0 {b (×+*0 {b (Ã+*0œ(Â+ (Ø+sd *0¥§ ¥qop o’ ,hoq (r (s st (g (f (Ù+ b X wX (Ú+ b X wX + Þu  ,  oš &Ü&Ü&(u *tƒ0¨u ,¥oÄ þ**0(v *0ýª¥q(Û+(Ü+ {w 9Ù {x (r (s st {w {w 9|{w {x (r (s st {w {w 9ü{w {x (r (s st {w {w -d  s8 r.p(   (Ý+(  r²p(   (Ý+(  r²p(  (Ý+(  r¸p(  þoŠ *  s8 r.p(   (Ý+(  r²p(   (Ý+(  r²p(  (Ý+(  r¼p(  þoŠ *s8 r.p(  (Ý+(  r²p(  (Ý+(  r¸p(  þoŠ *s8 r.p(  (Ý+(  r¸p(  þoŠ *r:p*0 {b (Þ+*0{b (Þ+¥*0{a {b (È+*0(^rHp(ü oý sy z0sz (ß+(à+¥s*0s{ (á+(â+¥Î*0(^rHp(ü oý sy z0{a {b (Ô+*01{a {b (Ô+,{a {b (È+`**0(^rHp(ü oý sy z0(^rHp(ü oý sy z0(^rHp(ü oý sy z0(^rHp(ü oý sy z0L«(r {a {b (Ô+,-(r {a {b (È+ (s þ(ã+**0{b þ(ä+*0*0{b (Ó+*0F¬u , s| ¥q¥q(å+*(^rnp(ü oý rŠps} z0( &} *0(¨sŽ { è¥q(Û+(æ+(ç+*0{H*0{I*0( }H}I*0( *0s *0 s *0*0® uÒ,+ uÓ,+*0$(‘ }’ }“ }” }• *0{’ *0{“ *0{” *0{• *0(‘ }– *0{– *0( }— *0 {— {’ *0 {— {“ *0 {— {” *0 {— {• *0( }˜ *0 {˜ {– *0( &}™ }š }› *0œ(Â+ sœ € *0{š (è+}› *0+(Â+}™ {™ {› (é+}š }› *0{™ *0{š *0~ *0{™ {™ {š (ê+sœ *0{™ {™ {š (ë+sœ *0{š (ì+*0{™ {š (í+*0{š þ(î+*0sž {š þ(ï+*0 {š þ*0R°{š -sŸ *{™ {š (ð+ (  (¡ {™ sœ {™ sœ sŸ *0*{š -*{™ {™ {š (ñ+sœ *0!²(ò+ s¢ {š (ó+s£ *0{š þ(ô+*0{š þ(õ+*0<³{š -*{š -*{™ {™ {š {š (ö+sœ *08{š -*{š -*{™ {™ {š {š (÷+sœ *0=³{š -*{š -*{™ {™ {š {š (ø+sœ *0s¤ ~ (ù+*0 s¥ (ú+*0{™ {š {š (û+þ*0{™ {š {š (û+*0 {š (ü+*0 {š (ü+*0 {š (ý+*0{™ {š þ(þ+*0{™ {š þ(ÿ+*0{™ {š {š þ(+*0{™ {š {š þ(+*0{™ {š {š þ(+*0{™ {š {š þ(+*0 {š (+*0 {š (è+*0`´ ¥joJ o’ ,#oK  (Ù+bX wX +Õ Þu, oš &Ü&Ü&(u */>0(¦ *0¶uÖ , ¥oÄ þ**0 ~ (§ *0œ(Â+ (+(œ *0s¨ *0œ(Â+ (é+sœ *0Ë·¥j(+( + {1 9§ {1 {1 9`{1 {1 {1 9ö{1 {1 {1 -q {2 {2 {2 s8 r’p(  (¼+(  r²p(  (¼+(  r²p(  (¼+(  r¸p(  þoŠ * {2 {2 {2 s8 r’p(  (¼+(  r²p(  (¼+(  r²p(  (¼+(  r¼p(  þoŠ *{2 {2 s8 r’p(  (¼+(  r²p(  (¼+(  r¸p(  þoŠ *{2 s8 r’p(  (¼+(  r¸p(  þoŠ *ržp*0{™ {š (+{š (û+*0 r¬psy z0 r¬psy z0 r¬psy z0{™ {š (í+*0{š þ(+*0*0{š (ì+*0 {š (+*0{š (+¥*0( &}° *0¸{° è¥j(+(à+*0( &}Y}Z}[*0Jº{[ , {± {Zþo *{Y0(  (² }[{Zþo *0{Y*0{Y{Z0(&*0{Y{Z0(+þo³ *0{Y{Z0(+þo´ *0{Z*0"{Yoµ rÒp(® (n(® *0{Yo¶ {ZX*03¼uš ,& {Y{Y(+,{Z{Zþ***0 Œ,+ rÖpsà zþ(?*0/¾, {· + Œ,+ rÖpsà z(P*08ÀŒ,+ rÖpsà z0(W , {· + (!*01Œ,+ rÖpsà z0(WÐz(¸ þ(*0Œ,+ rÖpsà z(N*0PŒ,+ rÞpsà zŒ,+ rìpsà z(%¤%¤þo¹ *0OhŒá,+ røpsà zs‘( +,!(^rp(ü oý røps} zþ(B*0r2p(Z(C*0%Œ,+ rFpsà z0(W(M*0&¾, {· + r`p(Y(Q*0JÁ, {· + Œ,+ rvpsà z(W (-s“(( +*0/¾, {· + Œ,+ rŠpsà z(U*07¾, {· + Œ,+ rŠpsà z(X(Q*0 sº Œ!*0.¾, {· + r`p(Y(Tþo» *0kÂŒ,+ r¦psà zŒ,+ r°psà z(¼ 0(P-!(^r¾p(ü oý r°ps} zþo½ *0iÃŒ,+ r°psà z, {· + (¼ (P-!(^r¾p(ü oý r°ps} z(Rþo¾ *0Œ,+ r¦psà zs—*0&¾, {· + r`p(Y(R*0&¾, {· + r`p(Y(T*0&¾, {· + r`p(Y(S*0 òÅŒ,+ rFpsà zÐz(¸ (-.o¿ (^rÞp(ü oý (À rFps} zŒø,+ rpsà z(M (Á ( Ðä(¸ oà , oÄ +%¤% ¤o¹ rp 8%Œø¤(ˆ þoÅ *02Œå,+ r(psà zr2p(Z(Iþo» *0iÆŒ,+ rDpsà z(¼ (?-3(¼ o¿ (^rPp(ü oý (À rDps} z(Hþo¾ *0·ÇŒ,+ rDpsà z(¼ (?-3(¼ o¿ (^rPp(ü oý (À rDps} z(Ho¾ /+ Žiþþ,/rlp(¼ o¿ þHoŠ (ç r–ps} z £*0r2p(Z(H*0r2p(Z(L*0r2p(Z(I*0r2p(Z(J*0B¾Œš,+ r¢psà z, {· + {Y{Z(,þo» *0:¾Œš,+ r¢psà z, {· + {Y{Z(,*0:¾Œš,+ r¢psà z, {· + {Y{Z(+*0lÈ, {· + ( Œ,+ rvpsà z(W (-((oÆ  ('o¾  smsÇ *0?Á, {· + Œ,+ rvpsà z(W (-((*0?Á, {· + Œ,+ rvpsà z(W (-()*0<ÁŒš,+ r¢psà z, {· + {Y {Z('*0FÁŒ,+ r¶psà z, {· + (¼ (X(Rþo¾ *0( &}È *0Ê{È , (É **0sÊ *0( &}Ë *0{Ë þoÌ *0( &}Í *0àÎЮ(¸ r¾p6oÎ oÏ ŽiY YXY2!X£¤XX3ß Œë,+ r.psà zŽi  Y2$£oÐ ¤XX3Ü€Ñ Ðì(¸ r¾p6oÎ €Ò *0_Ê{Í ,S~Ñ Ži3#%¤%Œ`¤(É *%¤Œ`(Ž( +(É **0sÓ *0( &}Ô *0Ð{Ô ,  {Õ **0, (Ö +}Ô *0Ò{Ô , {Õ o× **0sØ *0{b*0{c*0}b*0( }b}c*0}h}i*00(Ð,(Ñ~dþ+,~e(Ñ£¢**0(¯s®*0(¯s®*0(¯s®*0(È,*{h*0{h*0{i*0Ï({h {h YEgYErÌprøps} zYE"YE+Ö{i{i(‰*{i(…, {i(…**YE+YE+‹{i(…, {i(…**{i{i(‰*0 (¶þ*0ÅÔ{h {h YESYErÌprøps} zYE)YE+Ö{i {i  (þ**YE.YE+Ÿ{i(…-*{i(…þ*{i {i  (þ*0ÈÔ{h {h YEqYErÌprøps} zYE)YE+Ö{i {i  (þ*{i(…-*{i(…þ*YEYE8~ÿÿÿ*{i {i  (þ*0(¸,*(¶,**0{h{i(dX*0`-{h YE#YE rÌpsE z{i(Í*{i(…,rüp*r1p{i(Í(® *0þ£oŠ *0Ö( +-*¥£ q£(¶*0Öq£ {h{i(dX*0I2(Ç(¯(®* €3je(È(¯(®*e(Ç(¯(®*0e!2(È(¯(®*!€3%!ÿÿÿÿÿÿÿ(È(}(‚(¯(®*e(È(¯(®*0~f*0~g*0 ×{hZ {i (¯s®*0M×/%{he e{i(• (¯s®*{h {i(• (¯s®*0<×( þþ,(„ (¯s®*(„ (¯s®*0Ø(‚ (¯s®*0 {i(…*0{h3 {i(‡**0æÚ {i(…,* {i(…,*{h {h YE^YErÌprøps} zYE"YE+Ö{i{i(Ç*{i{i(Æ*YE"YE+”{i{i(Æ*{i{i(Ç(Ä*0ÔÚ {i(…,*{h {h YE^YErÌprøps} zYE"YE+Ö{i{i(Æ*{i{i(Ç*YE'YE+”{i{i(Ç(Ä*{i{i(Æ*0lÛ {i(…,* {i(…,*(É,*(É,*{i{i(µ {h{hZ (¯s®*0Ý{i{i(» (Ù (Ú {h {h YEv YErÌprøps} zYE.YE+Ô(¯s®£(¯s®*(¯s®£(¯s®*YE1YE8wÿÿÿ(¯s®£(¯s®*(¯s®£(¯s®*0ÖsÀ (Í*0ÞsÀ (Í *0"Ø{i{i(¿ (¯s®*0{h3{i(…þ**0{h3{i(…þ**0{h3(Ä**0Óß{h {h YEuYErÌprøps} zYE0YE+Ö{i {i  (þþ*{i(…, {i(…**YEYE8zÿÿÿ*{i {i  (þþ*0Ðß{h {h YEZYErÌprøps} zYE0YE+Ö{i {i  (þþ**YE+YE+˜{i(…, {i(…**{i {i  (þþ*0|à/!(^rp(ü oý r.ps} zsÀ {i (À(»(Ù (…,+{h {i{i(Ä  (¯s®*0Eí{i(É  ÿÿÿ5 {hZ*{h3  €þ+, €*sÛ z0Râ{i(Ê !ÿÿÿÿÿÿÿ5 {hjZ*{h3!€þ+, !€*sÛ z0L-{h YE)YErÌprøps} z{i(Æ*{i(Æe*0nã( - r2psÜ z( r1p( ,/Y(× {Ý  YX( (Ï (¯s®*(Ï (¯s®*0 {i(Ð*0Uä(Ñ,!(^rp(ü oý røps} z(Ò,{i(Ó (¯s®*~f*0*0sÁ*0sÀ*0-Ö( +-rnprŠps} z¥£ q£(º*0 €X~X&*0 sð€j*0( *0só*0 u¨þ*0sñ*0 u§þ*0~j*0 u¦þ*0æ u¨,+ u§,+*0iéþ,`  u¦- u§- u¨-$ *t§  ¹y7ž{nbcXXX *t¨  ¹y7ž{obcXXX **0 ((ë*0¸êþ9¦u¤ 9—u¨,+ u§,+ u¨,+ u§,+ 3W  u§-  u¨-!*t§ t§ {n{nþ*t¨t¨{o{oþ***þþ*0²ëþ9 þ9•u¨,+ u§,+ u¨,+ u§,+ 3Uu§- u¨-*t§ t§ {n {nþ*t¨t¨{o{oþ***þþ*0æu¤ ,(î**0(ã*0(ã}n*0{n*0(ã}o*0{o*0( }p*0( }q*0 {q{n*0( }r*0 {r{o*0( *0 s *0 u°þ*0s*0 u¯þ*0 s*0 u®þ*0í u°,+ u¯,+*0(ú}v}w}x*0{v*0{w*0{x*04(ú}y}z}{}|}}}~*0{y*0{z*0{{*0{|*0{}*0{~*0(ú}}€}*0{*0{€*0{*0( }‚*0 {‚{v*0 {‚{w*0 {‚{x*0( }ƒ*0 {ƒ{y*0 {ƒ{z*0 {ƒ{{*0 {ƒ{|*0 {ƒ{}*0 {ƒ{~*0( }„*0 {„{*0 {„{€*0 {„{*0{…*0{†*0{‡*0{ˆ*0{‰*0{Š*0{‹*0{Œ*0{*0{Ž*0T( }…}†}‡}ˆ}‰}Š}‹}Œ } }Ž*0 *r¬psO(ˆ ¥JPdd 's-*0( &}Þ *0{Þ *0 (ß &*0fï( &}‘}~’}”, {à +}•~“ (B ~’!X€’ Þ (D &Ü&*BZ 0{‘*0{•*0{*0{”*0OñŒ3,+ r´psà zŒ,+ rÖpsà z~“ (B (z  Þ (D &Ü*9 D 0{‘*0(¶ *0òu¸ ,  (á **0ðôu¸ 9á (á ,*(3(3( ,*(5oâ (5oâ /+þ , *(5oã (ä (5oã (ä /+þ,*(5oå oæ (5oå oæ ( ,*(6(6/*þ**0 €h~h&*0( }–*0sT*0 (Fþ*0sQ*0 (Fþ*0sO*0 (Fþ*0sL*0 (Fþ*0{–*0þ, ({ **0 ((G*0;öþ,,u¹ , {– {– 3 þ(| ***þþ*0þ, þ(‚ *þþ*0÷u¹ , þ(J**0(=}›}œ*0{›*0{œ*0(=}*0{*0(=}ž}Ÿ*0{ž*0{Ÿ*0(=} }¡*0{ *0{¡*0( }¢*0 {¢{›*0 {¢{œ*0( }£*0 {£{*0( }¤*0 {¤{ž*0 {¤{Ÿ*0( }¥*0 {¥{ *0 {¥{¡*0¤sc€§sc€¨sc€©sc€ªsc€«sc€¬sc€­sc€®sc€¯sc€°sc€±sc€² sc€³!sc€´*0( }¦*0sÞ*0 (¬#þ*0sÛ*0 (¬"þ*0~´*0 (¬!þ*0~³*0 (¬ þ*0~²*0 (¬þ*0~±*0 (¬þ*0sÙ*0 (¬þ*0~°*0 (¬þ*0~¯*0 (¬þ*0~®*0 (¬þ*0~­*0 (¬þ*0~¬*0 (¬þ*0s×*0 (¬þ*0sÕ*0 (¬þ*0sÓ*0 (¬þ*0sÑ*0 (¬þ*0sÏ*0 (¬þ*0sÍ*0 (¬þ*0sË*0 (¬þ*0sÉ*0 (¬þ*0sÇ*0 (¬þ*0sÅ*0 (¬þ*0sÃ*0 (¬ þ*0sÁ*0 (¬ þ*0s¿*0 (¬ þ*0s½*0 (¬ þ*0sº*0 (¬ þ*0s¸*0 (¬þ*0s¶*0 (¬þ*0s´*0 (¬þ*0s²*0 (¬þ*0~«*0 (¬þ*0~ª*0 (¬þ*0~©*0 (¬þ*0~¨*0 (¬þ*0~§*0 (¬þ*0{¦*0þ, (} **0 ((­*0;ùþ,,uà , {¦ {¦ 3 þ(~ ***þþ*06(þ,'þ,{¦ {¦ 3 þ(ƒ ***þþ*0úuà , þ(°**0(c}Ù*0{Ù*0(c}Ú*0{Ú*0(c}Û*0{Û*0(c}Ü*0{Ü*0 (c}Ý}Þ*0{Ý*0{Þ*0 (c}ß*0{ß*0 (c}à*0{à*0 (c}á*0{á*0 (c}â*0{â*0(c}ã*0{ã*0(c}ä*0{ä*0(c}å*0{å*0(c}æ*0{æ*0(c}ç*0{ç*0(c}è*0{è*0(c}é*0{é*0(c}ê*0{ê*0(c}ë*0{ë*0(c}ì*0{ì*0(c}í*0{í*0"(c}î}ï*0{î*0{ï*0#(c}ð*0{ð*0( }ñ*0 {ñ{Ù*0( }ò*0 {ò{Ú*0( }ó*0 {ó{Û*0( }ô*0 {ô{Ü*0( }õ*0 {õ{Ý*0 {õ{Þ*0( }ö*0 {ö{ß*0( }÷*0 {÷{à*0( }ø*0 {ø{á*0( }ù*0 {ù{â*0( }ú*0 {ú{ã*0( }û*0 {û{ä*0( }ü*0 {ü{å*0( }ý*0 {ý{æ*0( }þ*0 {þ{ç*0( }ÿ*0 {ÿ{è*0( }*0 {{é*0( }*0 {{ê*0( }*0 {{ë*0( }*0 {{ì*0( }*0 {{í*0( }*0 {{î*0 {{ï*0( }*0 {{ð*0( &}}*0{*0{*0,üuñ ,  { {  (þ(I**0{þo¶ *0(.((J*0ø!s…  s‡  r¾p( s‰  s‹ {(F@ªt»{›(¬E$¦Õ(F@ªt»{›(¬E$æ¶ sãRÿƒ0 ´ N ¿ ˆ ³ !Î( „ Fu0å ¼_^¶# (FEId¿t»{›(¬E$Qp"s rÈpsç ( +{þoè *{œ  (+ rp( (&(*(*{›t× {œ{é ,“{œ  {é {é :yÿÿÿ {ì  {ê   (u oÏ Ži(  oë ,s{ì (í {ì (î  o¿ ((ï (ð (+((ï (ð (+(+ rp( (&(*(* o¿ ( ((ï (ð (ð  rp( (&(*(*{œ  (+ r0p( (&(*(*t¼{(3(*t½{ž{Ÿ (3( ((ï (ð (ð  r<p( (&(*(*rJp(*{œ{é 9 ýÿÿ{œ  {é {é 9ïüÿÿ {é {ê {(F@Ëüÿÿt½{é {é :±üÿÿ{ž {ê  {Ÿ(3( (((ï (ð (ð (ð  rNp( (&(*(*{›tÅ{Ù {œ  o¿ ( (+(ð  rVp( (&(*(*{›tÆ{Ú{œ rjpsñ (+oò ( (+(ð  rpp( (&(*(*{›tÇ{Û{œ  (+rjpsñ (+oò ((ï (ð (+ rŠp( (&(*(*{œ  (+ r¦p( (&(*(*{›tÉ{œ{é 9Ïúÿÿ{œ  {é {é :µúÿÿ{Þ {ê   ((ï (ð rjpsó (+o ((ï (ð (+ r¸p( (&(*(*{›tÙ{œ{é :+úÿÿ{îrjpsô (+oõ ((ï (ð  rÊp( (&(*(*{›tÓ{œ{é 9Àùÿÿ{œ  {ê  {è {é  ( rjpsö (+o÷ ((+(&(/(ï (ð (ð (ð  rÖp( (&(*(*{›tÔ  {é{œ rjpsö (+o÷ ( (+(&(/(ï (ð (ð (ð  rÖp( (&(*(*{›tÊ!{œ{é 9øÿÿ{œ !{ß" {ê   {é  ( rjpsø (+"où ((+(&(/(ï (ð (ð (ð  ràp( (&(*(*{›tË##{à"{œ rjpsø (+"où ( (+(&(/(ï (ð (ð (ð  ràp( (&(*(*{›tÌ${œ{é 9^÷ÿÿ{œ ${á" {ê   {é  ( rjpsø (+"où ((+(&(/(ï (ð (ð (ð  røp( (&(*(*{›tÍ%%{â"{œ rjpsø (+"où ( (+(&(/(ï (ð (ð (ð  røp( (&(*(*{›tÎ&{œ{é 9-öÿÿ{œ  {é {é :öÿÿ {ê  &{ã' ( rjpsú (+'oû ((ï (ð (ð  rp( (&(*(*{›tÏ({œ{é :“õÿÿ({ä'rjpsú (+'oû ((ï (ð (ð  rp( (&(*(*{›tÐ){œ{é 9"õÿÿ{œ  {é {é 9õÿÿ {é {é {é :îôÿÿ{ê   {ê ){å'( rjpsú (+'oû ( ((ï (ð (ð (ð  r"p( (&(*(*{›tÑ*{œ{é 9Yôÿÿ{œ  {é {é :?ôÿÿ {ê  *{æ'rjpsú (+'oû ( ((ï (ð (ð (ð  r"p( (&(*(*{›tÕ+{œ{é 9¹óÿÿ{œ  {é {é :Ÿóÿÿ+{ê  {ê   ( o¿ ((ï (ð (ð  r4p( (&(*(*{›tÒ,,{ç-{œ rjpsü (+-oý ((ï (ð  (+(+ rBp( (&(*(*{›tÚ..{ð {œ  o¿ ((ï (ð  (+(+ rVp( (&(*(*{›tÖ//{ë {œ  o¿ ((ï (ð  (+(+ rpp( (&(*(*{›tØ00{í {œ  o¿ ((ï (ð  (+(+ r‚p( (&(*(*{œ  (+ r”p( (&(*(*{œ{é 9zñÿÿ{œ  {ê {(F@Vñÿÿt¼1 {é {é 9<ñÿÿ {é {é {é :"ñÿÿ1{{ê  (3( ((ï (ð (ð  r¨p( (&(*(*{œ  (+ r¶p( (&(*(*{œ{é 9ðÿÿ{œ  {é {é 9vðÿÿ {é {é {é 9\ðÿÿ{é 22{ê {(F@8ðÿÿt½2{é {é :ðÿÿ{ž{Ÿ {ê  {ê 3(3(3(( ((ï (ð (ð (ð (ð  rÌp( (&(*(*{œ  (+ rôp( (&(*(*{œ  (+ rp( (&(*(*{œ{é 93ïÿÿ{œ  {é {é 9ïÿÿ {é {ê (€ 449ûîÿÿ{é {é 9êîÿÿ{é 22{ê (€ 559Ìîÿÿ2{é {é :»îÿÿ5{þ (ÿ 4{þ (ÿ 65{þ (  4{þ (  {ê 33(6(3(((3( ((ï (ð (ð (ð (ð (ð  rp( (&(*(*{œ  (+ r.p( (&(*(*{œ  (+ rFp( (&(*(*{œ{é 9ëìÿÿ{œ  {ê (+9Ëìÿÿ{ì (î {(F@«ìÿÿt»{›(¬@ìÿÿ{œ{é 9ìÿÿ{œ {é {é :eìÿÿ{ì (í {é 2{ê   (+2(+(+(&(/ ((ï (ð (ð  r\p( (&(*(*0(+(K *0(+(+(I ¥*0 þ(+*0 (v(î *0(r(ï *0 (ý *0s‘ (+*0Œ,+ rvpsà z( *0 Œ,+ rvpsà z( *0$Œ,+ rŒpsà z(€(î *0 ( *0 ( *0Œ#,+ ršpsà z( *0Œ#,+ ršpsà z( *0Œ#,+ ršpsà z( *0 Œ#,+ ršpsà z( *0 (û *0 ( *0 ( *0Œl,+ r®psà z( *0#Œ,+ rÎpsà z(d(í *0(ÿ *0Œ,+ r`psà z( *0Œ,+ rìpsà z( *0*Œ,+ rpsà zs“ (+( *0 ( *03"Œ,+ rpsà z( , { +( *02"Œ,+ rpsà z( , { +( *04"Œ,+ rpsà z( , { +( *0"( , { +( *0(ù *0(x(ï *0 (ü *0(l(ï *0(+( *0$Œ,+ rŒpsà z(p(î *0 ( *0 #ŒÈ ÐÈ(¸ (f(í *0$Œ,+ rÎpsà z(f(í *0(ø *0(t(ø (ï *0 ( *0Œ ,+ r0psà z(R *0(+*07Œ,+ rFpsà zŒ,+ rdpsà z(S *0"Œ!,+ rppsà zþ(O *02Œ3,+ r´psà zÐÈ(¸ (7(ø (+*0 (&*0*0(} &s } *0 { ( *0{ *0{ *0} } *0{ ,{ { (l**0?{ ,&{ { o ,{ { þ**{ þ(+*0( +-*¥ô(L*0){ ,{ o¶ | þso¶ a**0 (L*0 (Lþ*0 (K*0{ *0 } *0%{  ,(j**0&{  þ÷ (+þ*0({  , (k*þô*0.{ ,{ { þo *{ þ(+*0(!+-*¥õ(W*0{ ,{ þo¶ **0 (W*0 (Wþ*0{ *0{*0{*0} }}*0{ *0{*0{*0“+s ( &( }!}sº ("+}þô}þô }}s¼ þ½ s (V}(V}*0!-þõþõ(c}*0.þ{/(^r‚p(ü oý sE zsS*00þ{/(^r‚p(ü oý sE z(g*0Ô4þ{/(^r‚p(ü oý sE z|(  E(YE-Ð÷(¸ o¿ s  z**{(  ,_{(  (B (¥ Þ (D &Ü s (  (#+{ -*($+¥sFz*† ‘ 0µ5þ{/(^r‚p(ü oý sE z|(K Þ|(K&Ü Þe|(  -+|(  þ,8{(  ,({(  (B o  Þ (D &Ü&Ü&Ü&Ü&*((9–   '&Me0a6þ{/(^r‚p(ü oý sE zþ{ E%YEÐ÷(¸ o¿ s  z**0@þ{/(^r‚p(ü oý sE zþ{3*þ{þ*0‹8þ{/(^r‚p(ü oý sE z(i,o þô*{(  (B (¦  Þ (D &Ü ( ( , o + *S ` 0\9þ{/(^r‚p(ü oý sE z(i,*{(  (B (¨  Þ (D &Ü&*BP 0 sc*0/þ{/(^r‚p(ü oý sE z(h*0+( &®} } } } *0h|{ - r–ps" z{ { £® { { þ®¤®{ X{ Ži]} { Y} *0ˆ({ { Ži3>{ Žij!ÈZ!d[i { ŽiX /+( +{ { ¤®{ X{ Ži]} { X} *0{ *0¬:(+ { 1q{ { /{ { { ( +H{ { { Ži{ Y( { { Ži{ Y{ ( +} } { 3+{ } *0.;( &sd}{(e sc}*0 {(e*0{(f*0{(h{(h*0{(h{(h*0 sz€*0( *0~*0&*0~ *0€ *0( &}}}*0~ *0C= ~ ,+(~ (©  Þ}, (~&Ü&Ü&({* $0"-{X}{  ,þþ*0{*0({-}( }*r¦ps" z0*0 €,~,&*0k?s ( &( }!sÄ þÅ s }"sÆ þÇ s }#sÈ þÉ s }$}%*0?þ{%/(^r‚p(ü oý sE z{"Œ—o  ({*0Lþ{%/(^r‚p(ü oý sE z{#Œ—(! - rps" z({*0LAþ{%/(^r‚p(ü oý sE z{$s" (# Œ—($ ({*0?þ{%/(^r‚p(ü oý sE zs}!{!(*0.þ{%/(^r‚p(ü oý sE z{!*0*0 €,~,&*0{&*0{'*0{(*0{)*0$( }&}'}(})*0{% *0{& *0( }% }& *0s' *0( }( *0{( *0&*0 ( &*0(E *0 (%+*0(&+*0*0 ('+*0 ((+*0 (G *0 ()+*0 (*+*0 (++*0 (,+*0( &}) *0{) o* &*0(D *0(E *0 s+ (-+*0(7 {, (e*0#%(7 {, (f(7 sd( *0 s- (. *0€D,L {/ (Uþ,{/ s0 +<,  {/ s0 +(rVp ÔsQz(7 {, (es0 (1 (2 (.+*0)-(7 {, (e , {/ + (ä *0 s3 (/+*0.-(7 {, (e , {/ + (0+*0sâ sä sæ (1+*0 sì (2+*0,-, {Ý + - sî (3+*sø (4+*0sú (5+*0 s4 (5 *0s6 (%+*0>E,' {Ý YEs7 (%+*(6+*s8 (%+*0s9 (%+*0s: (7+*0s; (8+*0s< (9+*0(:+s= s> s? *0s@ (;+*0 sA (<+*0(þ *0(ÿ *0sB (=+*0sH (>+*0sN (?+*0 (@+*0<( &}C }D }E }F sd}G sH }I *0)H{I (J {C ,¥þoK **0xL{I (× (L - rÒps" z {M u/-u0-&{M t1{N *{M t/{O z{M t0{P z0{F *0*{F - }F {G (h{I (Q **0 {G (e*0{G (f*0N{I {R þ-}E **0N{I {R þ*0{E *0 {I (S *0{D *0 (T *0G( &}Y sZ }[ {[ }\ }] }^ s_ (` }a *0 {Y ,+ sb }Y {Y *03P{\ (B (c od {[ { X Þ (D &Ü*( 0=Q{[ { -*{[ (e of -(c og +Å*0#R{\ (B (A+ Þ (D &Ü*  0HT{Y ,;od þþ,*oi of - X+Ãoj **0!{[ { -*{[ (e (k *0"U{\ (B (l Þ (D &Ü*  0-V{Y , od -*oi oj (k **0'W{\ (B (B+ Þ (D &Ü&*  0Z   sm (C+*0sn (%+*0[  so (D+*0[  sp (E+*0(]{^ (F+þ,{^ ¥þoš **0 {^ ,+ sq }^ {^ *0"_/{a *(r (× (µ*0( &}s *0{s o* &*0Y;( &}t (7 {, (e , {/ +}u sv }w }x }y sz }{ *0 {w (| *0{x *0 }x *0{{ (} þo~ *0{{ (} þo *0Ja{y ,(^rp(ü oý sE z}y s€ (>+ {u ( (°*0{w (‚ *0]c{x , {Ý + sƒ s„ s… o† {w (‚ (× (‡ Þ¥oš &Ü *0M0.d(G+ ,{‰ *(^r?p(ü oý sŠ z0ce{x , {Ý + sƒ s‹ s… o† {w (‚ YEsŒ (C+*s (C+*0lg{x , {Ý + YE(× (H+ s (%+*sƒ  s s… o† {w (‚ (‘ *0"-{w {x , {Ý +(’ *0"-{w {x , {Ý +(“ *0#-{w {x , {Ý +(I+*0#-{w {x , {Ý +(J+*0is– (— *0{w ¥þoš *0r‰p*0rüp*0rp*0r™p*0r©p*0s˜ *0}p(™ sš o› o’ ,)oœ (  (ž sŸ o  +Ï Þu, oš &Ü&Ü&¥N¥Os¡ *5H0ruQ , *(K+*0\u(^rp(ü oý £È ŒÈ,+ rÁps} z£ÈŒÈ¥R(L+ Ži  (M+ Y2 £S(¢ XX3àY?Á(^rp(ü oý £È ŒÈ,+ rÁps} z£ÈŒÈ¥R(L+Ži þþ,!(^rËp(ü oý rÿps} z Y 2"  £S(¢  X  X3ÞXX@?ÿÿÿ*07vŒU,+ rÁpsà z(N+ Ži -(M+*(O+*0(P+*0(Q+*0 (R+*0 (¤ (R+*0 (ã (R+*0 (S+*0 (¤ (S+*0 (ã (S+*0~D*0w r psP z0w r psP z0w r psP z0w r psP z0y(^rop(ü oý sE z0y(^rop(ü oý sE z0(£ *(¤ *0 (¥ *(¤ *0 (¥ *0}¦ ( &*0s§ {¦ ¥Z(T+þoJ *0#s¨ {¦ ¥Z(T+¥þo: *0(^rp(ü oý sy z0(^rp(ü oý sy z0(^rp(ü oý sy z0{¦ s© þoª *0U| {¦ o« o’ ,o¬ X(¥ ¤®X +Ú Þu, oš &Ü&Ü&**90*0{¦ þo­ *(® *03 (¯ (° s± (² (³ (¥ sh *(® *03 (¯ (° s± (² (³ (¥ sh *0}´ }µ ( &*0(^rp(ü oý sy z0(^rp(ü oý sy z0(^rp(ü oý sy z0?€ (r (s st (g (f {µ s© s¶ þo· *0†‚ {µ o¸ o’ ,Oo¹ (¯ (° s± (² (³ X(¥ sh ¤ÄX +© Þu, oš &Ü&Ü&*[j0*0{µ þoº *0s» {µ ¥b(U+þop *0#s¼ {µ ¥b(U+¥þo: *0{´ s© þo½ *0(^rp(ü oý sy z0„{´ o¾ s¿ *0{´ þoÀ *0(^rp(ü oý sy z0{´ s© þoÁ *0,…s© {´ oÁ ,{´ o½ `**0(^rp(ü oý sy z0 s›€D*0 s *0d, {‰ þoà **0 sÄ *0sÅ (V+*0(W+sÆ (W+sÇ *0 sÈ *0 †(X+ *0 þ(X+*0sÉ *0 sÊ *0sË (Y+sÌ (Z+sÍ *0( &}Î *0{Î - þoÏ **0{Î -}Î þoÐ **0{Î -}Î þoÑ **0}Ô }Õ (Ö &*0fŠ{Ô o× (Ø Þt (Ù Þ uu,tu {Õ {Ú þoÛ *tw{Õ {Ü þoÝ *0{Õ þoÛ *0{Õ þoÞ *0}ß }à ( &*0 {à {ß sá ¥vþoâ *0}ã }ä (Ö &*0fŽ{ã oå (æ Þt (ç Þ u|,t| {ä {è þoÛ *t}{ä {é þ([+*0{ä þoÛ *0{ä þoÞ *0}ê }ë ( &*0 {ë {ê sì ¥vþoâ *:(í }î *0{î oï ,(k **:(ð }ñ *0{ñ oï þ*0}ò }ó }ô (Ö &*0†{ô {õ {ò (\+(Ø Þt (Ù Þ uu,tu{ó {Ú þoÛ *tw{Ü {ô (÷ {ó þoÝ * "0{ó þoÛ *0{ó þoÞ *0}ø }ù }ú ( &*0-}{ù sû {ú {ø sü ¥vþoâ *0}ý }þ (Ö &*0B{þ {ÿ , {) {ý s o +{þ (k ( *0{ý þo *0{ý þo *0} ( &*0"’s { s ¥zþo *0'}  }  }  }  ( &*0{  {  -{  þoÌ **0*{  {  -{  (å {  þoÓ **0U{  {  -F{  (å {  {  ,{  {  +,{  (å {  þoÒ ***0'} } } } ( &*0{ {  -{ þoÌ **0*{ {  -{ (å { þoÓ **0U{ {  -F{ (å { {  ,{ {  +,{ (å { þoÒ ***0}b}c( &*0{boš {cþoš *0} } ( &*0 J“sß sß sß { s o { s o  sn *:( } *0+–{ o u,t { ( **:( } *0+™{ o u”,t” { ( **0œs s (X+ (  *0žs! s" (X+ (# *00Ÿs! s! s$ (X+ (# (# s% *0œs s& (X+ (  *0&¢s' s! s( (]+ (# *0 †(X+ *0%¥s) s* s+ (]+ (, *0,¦s s- (]+ s. (]+ (  *00¨s s/ s0 (X+ (  (1 s2 *V(3 }4 }5 *0{5 {4 o× (6 *V(3 }7 }8 *0 {7 oï ,{8 (9 **r(3 }: }; }< *0-{: oï ,{; (9 *{< (9 *V(3 }= }> *0)ª{= oå , {> {? (6 **r(3 }@ }A }B *06«{A {õ {@ (\+ {A (÷ {B (6 *V(3 }C }D *0C{D {ÿ , {) {C s (E +{D (k ( *:(3 }F *0{F (9 *:(3 }G *0{G (9 *r(3 }H }I }J *0L­{H o u±,t± {J {K (L *t {I { (6 *0s (^+*0¯s³ (_+ s» (`+*(M *0.±uƒ ,"(N 3 o¦ sO (P (a+*z:(Q }{*0²(R (S {{þoT *:(U }|*0{|þoV *:(Ù }}*0{}oW *:(X }~*0-{~s• {~s— {~s™ (Y (b+*:(X }*0s“ {s› (^+(c+*:(Z }€*0{€([ *:(Z }*0{(\ *0}‚( *0{‚(d+&*(^ *0s£ þ¤ s_ *04}ƒ}„}…}†}‡}ˆ( *0œ,{‡(` (Á+9„{ƒsŸ {ƒs¡ s¥ (e+{ˆ(a ob (c ,{†sd oe &*(f (f+þ,{…(f og &*{„(h o¹ &**Ò(i }‰}Š}‹}Œ}}Ž*0 6{‰{Š{‹{Œ{{Žs§ þ¨ s_ *:(Z }*0{([ *:(Z }*0{(\ *0}‘( *0{‘(d+&*(^ *0s¯ þ° s_ *V(j }’}“*0 ‹¸(k (l (m s {’ s© (g+t9}Ž(a {’s« {’s­ s± (e+on {’{“ (o *:(Ù }”*0{”(p *:(q }•*0{•*:(q }–*0{–s· (h+*V(r }—}˜*0"{—sµ (Å{˜s¹ (i+*09, {Ý + Ži , {Ý + sÄ sÆ (j+*0sÐ (k+*09, {Ý + Ži , {Ý + sÒ sÔ (l+*0 (µ*0(´*0 †(X+ *0ss þot *:(u }™*0 9¹(v (w (x (y (z {™ þo{ *:(| }š*0{šþo} *V(~ }›}œ*0{œ{ {›þ*:(k }*0N{{{ X(½ -,,¥+(^rÏp(ü oý s€ z&(E *(E *’(` }ž}Ÿ} }¡*0 J{ž{ {¡{ (× {Ÿ{¡{ Y(× (½ {¡sÊ (m+*:( }¢*0 {¢(n+*V( }£}¤*0 Pº{¤(+ sý {¤sÈ {£{¤sÌ (>+(G sÎ (k+(o+*:(u }¥*0 9¹(v (w (x (y (z {¥ þo‚ *:(ƒ }¦*0{¦o„ *0}… ( &*0{… o* &*0*0*0F¼ŒSs† s‡ sˆ s‰ {Š (e (0+(‹ ¥*0Q½u¾ ,& {Œ , rûps  z( (Ž *(^r p(ü oý r1 ps} z0;¾u¾ , {Š (f*(^r9 p(ü oý r1 ps} z:(3 } *0{ ( (‘ *:(’ }“ *0{“ (” (‘ *:(• }– *0{– (— (‘ *0Æ, st {(e(˜ s™ +s™ (š (› sœ ( ,sž +sŸ s  s¡ s¢ (p+(¤ ,B  {¥  -+$   {¦ {(h{(h (q+ÞQ (§ {(f(¤  (§ {(h{(hs¨ z¥oš &Ü*BÊ 0Çsð sò sô (r+ *0Çs© sø sú (s+ *(ª *0 (t+*(ª *0 (u+*:(« }¬ *0{¬ ( (J *:(­ }® *0{® (” (J *:(¯ }° *0{° (— (J *(± *0({*(­ *0z(¯ *0({*:(« }² *0{² o* &({*:(­ }¯*0{¯og &({*:(¯ }°*0{°oe &({*0~+*0 s (v+*0 s (v+*0 s (v+*0, (ˆ*(‰*0IË( ,={³ {) s´ {&s s {)s“sµ **0 s¶ (-+*0:Í{· , r] ps  z{¸ ,*{¹ þsº }¸ *0*Î{· - }· {¸ ,o» }¸ ***0JÏ(¼ ,(½ *{· ,(½ *( }¹ {¸ , (¾ +{¿ (w+*0){¹ -sÀ {¿ (Á }¿ *{¹ *:(± }±*0{±{ þoà *:(Ä }²*0 Ð{Å {){²s (ˆ*:(± }³*0{³{ þoà *(Ä *0Ð{Å {)s (Š*:(± }´*0{´{ þoà *(Ä *0Ð{Å {)s (‰*V(± }Æ }Ç *0{Æ {% {Ç þoÈ *r(« }É }Ê }Ë *0{Ë {Ê {É sÌ (ˆ*V(± }º}»*0{º{'{»þoÍ *r(­ }¼}½}¾*0{¾{¼{½s (ˆ*V(± }¿}À*0{¿{({ÀþoÎ *r(¯ }Á}Â}Ã*0{Ã{Á{Âs (ˆ*:(Ï }Ð *0{Ð (x+þoÑ *0( &}Å*0|Å(  - oR &**02( &}Ò ( }Ó {Ò {& {)}Ô *0=ÒsÕ ( {Ó (Ö , {Ô (‹*{Ó {Ô ( *0{Ó {Ô s× ( *V(± }Ø }Ù *0{Ø {Ò {% {Ù þoÈ *V(± }Ú }Û *0{Ú {Ò {% {Û þoÈ *05( &}Ü (Ý }Þ }ß }à s }á *0#Ó{á (B (y+ Þ (D &Ü*  0&Ô{á (B (z+ Þ (D &Ü&*  0{Ü - rs ps" z{) *0r×{á (B ({+ Þ (D &Ü {â ,@ {â {â -{ã , (ä * (å *sæ (|+({*({*  0 {Ü þ*0 sç (è *0BØ{Ü -5(é {Ü -", {Ý +  oê ,{Ü ****0 (ë *:(ì }í *0Ç{í (å *:(Ï }î *0jÙ{î {Ü -/{î {á (B {î (}+ Þ (D &Ü+ {î {Ü -({* {% {) þoÈ *!1 0~(*0=Ü uä- uå-tæ{ï *tä {ð ztå {ñ z0Ý, {¥ (q+*s¨ z0~)*0 Þs‡ sò (‹*0 Þs‡ só (‰*0 sô (5 *0 sõ (5 *0sö (÷ *0sø (÷ *0sù (5 *0sú (5 *0sû (5 *0 s– (ü *0~**0sý (~+(+*0oþ ,sš (€+*(E *0oÿ s (+*0s (‚+*0( *0s *0 u0þ*0s *0 u/þ*0s *0 u1þ*0ß u0,+ u/,+*0( }N *0{N *0( }O *0{O *0( }P *0{P *0( } *0 { {N *0( } *0 { {O *0( } *0 { {P *0( *0á(ƒ+ (  (  (‹ *Ò(± }  }  }  } } } *0 <{ {( {  {  {  { { s“s þoÑ *Ò(± } } } } } } *0 <{ {( { { { { { s“s þoÑ *:(Ï } *0Wâ{& |&(T,{& {(sd þoÎ *{ oÑ Þt {& {'oÍ Þ*+;V(± } } *0{ { þoÈ *:(Ï } *0uä{& |&(T,{& {(sd þoÎ *{) {% (Œ(‚,(Œ{ s („({*{ þoÈ *V(« } } *0}ç{ { {' þ  { o   Þ!tu,   Þþ &, þoÍ *{! { þo" *0!V(± }# }$ *0{# {( {$ þoÑ *V(Ï }% }& *0‰é{& |&(T,{& {(sd þoÎ *{& s' {& s( { {)(Œ (‚,{% s) („({*{% {! þo" *V(± }ó}ô*0{ó{ôþoÍ *V(± }* }+ *0{+ {( {* þoÑ *V(Ï }, }- *0ÿë{& |&(T,{& {(sd þoÎ *{& {) {& {'  þ  {, {- o. Þ"tu,  Þþ& ,2(Œ(‚,(Œsp („({*þoÍ *(Œ(‚,(Œs/ („({*{( þoÑ *Pg"V(± }ù}ú*0{ù{úþoÍ *V(± }0 }1 *0{0 {% {1 þoÈ *r(« }2 }3 }4 *0ßì{3 {& {' þ  {2 oR  Þ!tu,   Þþ &,<{4 (Œ(‚,{4 (Œsv („({*þoÍ *{4 (Œ(‚,#{4 (Œ{3 s5 („({*{3 {% þoÈ *0!V(± }}*0{{þoÍ *V(± }6 }7 *0{6 {& {'{7 þoÍ *r(­ }8 }9 }: *0äì{9 {& {' þ  {8 oR  Þ!tu,   Þþ &,<{: (Œ(‚,{: (Œs| („({*þoÍ *{: (Œ(‚,#{: (Œ{9 s; („({*{9 {& {'þoÍ *0!V(± }< }= *0{< {& {({= þoÎ *V(± }> }? *0{> {& {({? þoÎ *r(¯ }@ }A }B *0ßíþ  {@ oR  Þt u,   Þþ&,N{B (Œ(‚,#{B (Œ{A sC („({*{A {& {(þoÎ *{B (Œ(‚,#{B (Œ{A sD („({*{A {& {(þoÎ *V(Ï }E }F *0 —ï{& |&(T,{& {(sd þoÎ *{& {) {E sG {E sH {E sI {F {( {& {& {)s“s þoÑ *V(­ }J }K *0"ð{J („+ {( {K þoÑ *V(Ï }L }M *0 uñ{& |&(T,{& {(sd þoÎ *{L sN {M {( {% {& {&{({)s“s þoÑ *V(± }}*0{{({þoÎ *V(± }}*0{{({þoÎ *V(¯ }}*0Ïò{{) þ  {oe  Þ!tu,   Þþ &,?(Œ(‚,(Œ{sŽ („({*{{(þoÎ *(Œ(‚,(Œ{s („({*{{(þoÎ *+!V(Ï }O }P *0 Kó{& {O s’  {P {( {% {&{'{)s“s þoÑ *(Q *0Ð{R {S {&þoT *:(Ù }U *0'{U þ®oš *V(` }}*0{{(G *:(~ }V *0{V þo’ *V(` }W }X *0{W {X oK þoY *:(Z }[ *0s\ {[ s] (>+(G *:(^ }_ *0{_ *0 €,~,&*0ôsÀ (` ¥(…+ o *0`õ(i,þ÷!sJsa *{ {!X}s_ob sJsa *0(÷/*oc { 3*Y+Ø0-ø(i,*  od Y(§  2 þoe **01úoà (…{ , {f }+Ð*0.h{  ,(^r p(ü oý sE z(å *0 sg *0sü-h{h ,O {i u!, {i t!{j {(þoÎ *{i t"{k {' þoÍ *{l þom *({*0:{ Y(½ { -{(h{(h+{ *0?ÿ¤È(B (­ Þ (D &Ü þ(†+* ( 0^{ Y(½ {h -(n (o +{ -{(h{(h+ {(f{ *07ÿ(B (¯ Þ (D &Ü þ(†+* 04," {p oR Þ t  Þ&*sq þ(" *  0sr *0B," {p oR Þ t  Þ&*(£ os st þ(" *  00 {u {v -{w {)sx (y }z **0_{u ({ {z ,0 {| (} {| (~ }z  sR (‰*{ , (¾ **0s€ (‡+*0s (C+*0s‚ (%+*0?sds €(s^ þ_ s €)(ˆ+€*s›€+*(ƒ *0s„ *0}-( *0{-{, (‰+(g*:(Ù }.*0|.{|.{o *(… *0s¾ († *(‡ *0 oR & Þt (ˆ Þ* 0}/( *0%(Š+ {/{‰ (‹+(‹(*0}0( *0%(Š+ {0{‰ (‹+(‹(*0}1( *0%(Š+ {1{‰ (‹+(‹(*V(± }Š }‹ *0{Š {‹ þoÈ *V(± }Œ } *0{Œ { þoÈ *’(3 }Ž } } }‘ *0¹ { (B { (ª  Þ{ (D &Ü&(’ { o ,{Ž {)(Œ{þ+,{‘ oÈ *~ ,&( {Ž {){‘ s“ (  *{Ž {){‘ s” (‹ * :(Ï }• *0 W {& (’ sß {• {% (Œ+{'(+{((Ž+s– o— &({*:(« }˜ *0{˜ (™ þoš *:(­ }› *0{› (œ þoš *:( }ž *0 c {Ÿ {& {) {  s¡ {  s¢ {({ž {( s“s þoÑ *ò(« }£ }¤ }¥ }¦ }§ }¨ }© *0 4{£ {¤ {¥ {¦ {§ {¨ {© þ(+*Ò(­ }ª }« }¬ }­ }® }¯ *0 3{ª {« {¬ {­ {® {¯ (° þ(+*Ò(¯ }± }² }³ }´ }µ }¶ *0 3{± {² {³ {´ {µ {¶ (· þ(+*Ò(¸ }¹ }º }» }¼ }½ }¾ *0 –Ç{¾ {(e{¹ {º {» {¼ {½ {¾ s¿ {¹ {º {» {¼ {½ {¾ sÀ {¹ {º {» {¼ {½ {¾ sÁ (t+ *:( }à *0 n{Ä {à (‘+ Ži-{Å ®þoÆ *Žisý sÇ Ži(+{&st sÈ (’+({*(Ù *0*(’ *0z(• *0*:(± }X*0{Xþoà *0}Y}Z}[( *0>{Z{É , {Ê oË +{Y{){[sè (‹ *:(Ä }\*0 G{Å sÌ { sê þë sÍ {\sÎ (Ï (Ð ({*:(Ñ }]*0{w {]oê þoÒ *:(` }^*0Ç{^{(sd oÎ (E *0}_}`}a( *0B{a{Ó ,1 {Ô {_(Õ ,{`sð (>+(°***V(± }b}c*0{b{cþþoÒ *0$}d}e}f}g( *07Ç{e(Ö |f(K{d{){gsô (‹ *V(Ñ }h}i*0 w{× sØ {hsò þó s |&(V {w {h sö þ÷ sÙ {i(Ú (Û (Ö ({*V(Ü }j}k*0,{joW ,(“+*{joV {k(µ*:(Ï }Ý *0‚{& {Ý u/-*u0-A{Ý t1 {% {N þoÈ *{Ý t/ {'{O þoÍ *{Ý t0 {( {P þoÎ *(Þ *0(”+*:(^ }ß *0{ß (à sá (•+*:(Ù }â *0{â (Q *(ã *0 (–+(—+*V(ã }ä }å *0G,{å (æ (ç (–+(—+*{ä (f{å (S (µsè (˜+*r(^ }é }ê }ë *0U{ê {R þ,{ê (æ (™+(—+*{ê (S {ë (µ{é {ê sì (˜+*r(^ }í }î }ï *0/{î sð {í {î {ï sñ (E+(š+*:(^ }ò *04{ò {R þ,{ò (æ (™+(—+*(–+(—+*:(Ù }ó *0sd (— {ó (J *0}ô }õ }ö ( *0{ô {õ {ö þ(›+*:(Ù }|*0||(K*0,}÷ }ø }ù }ú }û ( *0ooW -e{ø -{ú {û s (" + |û (K{÷ oü ( Þt (” Þ {ù (J **9Nr(ý }þ }ÿ } *0 ’  sH s!  { s þ s (V {ÿ {  s þ s {þ s o oW ,(K{ÿ oü (—+*(œ+*r(^ } }  }  *0#(D { {  {  s  (+*V(Q }  }  *0*²(R (S {  {  s þo *r(Q } } } *0 0²(R (S { { { s þo *’(Q } } } } *0 6²(R (S { { { { s þo *:( } *0*!( ( ( { o  (ž+*(! *0(Ÿ+*(ƒ *0 ( +*:(Ù }" *0Ç{" sd (— (J *0,}# }$ }% }& }' ( *0 ({# {$ {% {& {' þ(¡+*Ò(( }) }* }+ }, }- }. *0 =|+ {) {* {, {- {. s/ þ0 s (V*:(Ù }ž*0|ž(K*²(3 }1 }2 }3 }4 }5 *0F{1 {4 (6 o7 {3 {5 s, (" ( {2 (J *²(8 }9 }: }; }< }= *0 *{9 {: {; {< {= s> s? *:(@ }A *0!Ю(¸ {A r¾p(B (¢+*V(ý }C }D *0 Ã) sH s!  {C {D sE (£+{C  sF (¤+ sG (¥+tj}< tm}H (I  tj }= (J  tn }K (6  {C  oL (œ+*V(^ }M }N *0(D {M {N sO (+*(P *0(E *0}®( *0%{®{, ,(f**V(« }Q }R *0 {R ( {Q ( (J *V(­ }S }T *0 {T ( {S (” (J *V(¯ }U }V *0 {V ( {U (— (J *r(W }X }Y }Z *0 y* sd s s: þ; s (V (e{Z s[ {Z s\ {Z s] {X (t+{Z {Y (¦+(§+*V(^ }_ }` *0$NsH (D {_ {` sa (¨+*(` *0(ˆ+*:(` }º*0%{º, {º(ý *(ÿ sF (€+*0}»( *0+{»oR Þ t  Þ&* :(b }¼*0!; {¼(VŒô¥(©+*:(c }½*0),{½sJ þK s (D sL (ª+*:(Ñ }d *0i-{× {d {] Œ-, rí ps" z{d {\ (B {d («+ Þ (D &Ü,({*{w þoÒ *7H :(± }¿*0{¿þoÒ *(e *0 (k (¬+*r(f }g }h }i *0$,{g {h {i (­+*(¬+*r(j }k }l }m *0W/{k {l (®+ , {o sp (¯+*{k {m (q {k {l {m sr (°+*(e *0 (k (¬+*r(j }s }t }u *0C/{s {t (±+ , {o sw (¯+*{s {t {u (­+*(x *0=, {) (—+*,¥®+(^rQ!p(ü oý sŠ z(—+*r(^ }y }z }{ *0#{y {z {{ (²+s} (³+*V(f }~ } *0,{~ { (´+*(¬+*V(j }€ } *0?{€ (‚ -({€ { (ƒ {€ { s„ (°+*(¬+*V(j }… }† *0*{… (‡ -{… {† (´+*(¬+*V(ã }ˆ }‰ *0B,{ˆ {‰ (µ+*,¥®+(^ry!p(ü oý sŠ z(—+*V(^ }Š }‹ *0F0{Š (‚ , {) (—+*{Š {‹ (ƒ {Š {‹ sŒ (˜+*V(^ } }Ž *010{ (‡ , {) (—+*{ {Ž (µ+*:( } *0{ {{ (‘ (E *(` *0(ˆ+*:(` }’ *0"{’ {t {’ o“ sp (€+*:(` }” *0#{” s• {” s– (>+(¶+*:(3 }— *0Ç{— (˜ *:(3 }™ *0Ç{™ (˜ *:(f }š *0 ,{š (› (k +(¬+*V(œ } }ž *01_{ž (é { (× (µ{ž sŸ (°+*V(j }  }¡ *0{¡ {  {¡ s¢ (·+*(e *0 (k (¬+*:(j }£ *0{£ (¤ s¥ (¯+*(x *0,, {) (—+*(^r§!p(ü oý sŠ z:(^ }¦ *0{¦ s§ (³+*:(3 }¨ *0Ç{¨ (˜ *0 rû!psP z0 ro"psP z0 rã"psP z0 rU#psP z0 rÇ#psP z0 r9$psP z0 r­$psP z0 r#%psP z0Ô 2(¸+ (© (ª (¬E$x÷1B¡¼×:Ïù`¢ê€È_¬Ç»õ}nC ä ÜŠ ã(¬E$M(^r%p(ü oý sE z{é ,Ú{é {é -É{ê (ù 8) tÙ{é -£{î{ï  (f(í 8ó {é 9×þÿÿ{é {é 9Ãþÿÿ{é   {é {é :©þÿÿ {ê {ê   (ý 8™ {é 9}þÿÿ{é {é 9iþÿÿ{é   {é {é 9Oþÿÿ {é   {é {é :5þÿÿ {ê {ê   {ê    ( 8 {é 9þýÿÿ{é {é :êýÿÿ{ê (¦(î 8à(¤(ì 8Ï{é 9³ýÿÿ{é {é 9Ÿýÿÿ{é   {é {é :…ýÿÿ {ê {ê  (¢ (ï 8ptÅ{Ù  ( 8UtÆ{Ú( 8:tÇ{é 9ýÿÿ{é {é :ýÿÿ{Û{ê ( 8òtÈ{Ü  (þ 8×tÉ{é 9³üÿÿ{é {é :Ÿüÿÿ{Ý {Þ{ê  ( 8„tÊ{é 9`üÿÿ{ß{ê {é   ( 8BtË{é :üÿÿ{à( 8tÌ{é 9ôûÿÿ{é {é 9àûÿÿ{é   {ê {á{ê   {é    ( 8±tÍ{é 9ûÿÿ{ê {â{é   ( 8otÎ{é 9Kûÿÿ{é {é :7ûÿÿ{ê {ã( 8'tÏ{é :ûÿÿ{ä( 8þtÐ{é 9Úúÿÿ{é {é 9Æúÿÿ{é   {é {é :¬úÿÿ {ê {ê  {å ( 8‘tÑ{é 9múÿÿ{é {é :Yúÿÿ{ê {æ( 8ItÒ{ç( 8.tÚ{ð  (d(í 8tÔ{é( 8ôtÓ{é 9Ðùÿÿ{ê {è{é   ( 8²tÕ{é 9Žùÿÿ{é {é :zùÿÿ{ê {ê  (€(î 8etÖ{ë  ( 8Jt× {é 9&ùÿÿ{é {é :ùÿÿ {ì {ê  ( 8{é 9æøÿÿ{é {é 9Òøÿÿ{é   {é {é :¸øÿÿ {ê {ê  (x (ï 8£tØ!{é 9øÿÿ{é {é :køÿÿ!{í {ê  (p(î 8V{é 9:øÿÿ{é {é :&øÿÿ{ê (v(î 8{é 9øÿÿ{ê {""(F@â÷ÿÿ"t¼#{é {é 9È÷ÿÿ{é   {é {é :®÷ÿÿ#{$ {ê (t$(ø (ï 8”{é 9x÷ÿÿ{é {é 9d÷ÿÿ{é   {é {é :J÷ÿÿ {ê {ê  (r (ï 85{é 9÷ÿÿ{é {é 9÷ÿÿ{é   {é {é 9ëöÿÿ {é   {ê {""(F@Çöÿÿ"t½% {é {é :­öÿÿ%{ž$%{Ÿ {ê  {ê  $  ( 8‡{é 9köÿÿ{é {é 9Wöÿÿ{é   {é {é :=öÿÿ {ê {ê   ( 8-{é 9öÿÿ{é {é 9ýõÿÿ{é   {é {é :ãõÿÿ {ê {ê  (l (ï 8Î{é 9²õÿÿ{é {é 9žõÿÿ{é   {ê (Å &&9€õÿÿ {é {é 9oõÿÿ {é   {ê (Å ''9Qõÿÿ {é {é :@õÿÿ'{þ (ÿ $&{þ (ÿ ('{þ ( &{þ (  {ê   ( $(ü  {""s*0º3{ (FE8ut¼ {(« *t½ {ž {Ÿ s¬ (­ *t»{›{œ{s® Œ‘s¯ (° *(^r³%p(ü oý   rÓ%ps} z0(“ *0-5(Ö  , {± (¹+-*{± ¥ (± *0%6(Ö  ,{± u3 ,  (Ô **0-8(Ö  , {± (º+-*{± ¥Ž (² *0-9(Ö  , {± (»+-*{± ¥[ (³ *0-:(Ö  , {± (¼+-*{± ¥< ( *0-<(Ö  , {± (½+-*{± ¥ (´ *0->(Ö  , {± (¾+-*{± ¥; (µ *0-@(Ö  , {± (¿+-*{± ¥ (¶ *0-B(Ö  , {± (À+-*{± ¥: (· *0-C(Ö  , {± (Á+-*{± ¥H (× *0-D(Ö  , {± (Â+-*{± ¥‘ (¸ *0-E(Ö  , {± (Ã+-*{± ¥s (¹ *0-F(Ö  , {± (Ä+-*{± ¥’ (º *0MH(¿  ,A{» (¬"32{» tÙ {ïÐ(¸ (+,{ï (¼ **0ÊM(ã  9±{½ (¾ (Í  9š{¿ (À (à  9ƒ{Á {¿ (  (Å+,þ+,Z{½ (à {½ (Ä {Á {¿ ( X(£ (í  (Å (î sÆ *(Ç sÆ *0‚N{ (F3ot½ {ž {Ÿ  (£ (í {È -!(î (Ç (Å sÆ (É *(í (î sÆ (É **0zR(Ä  ,n{Ê (Ë {Ê (Ì (¢  ,( sÍ (Î *(È ,{ sÍ (Î *( (Ï sÍ (Î **0 s® (Æ+*0 s° (Ç+*0NU(Ç  ,{Ð (Ñ (•  ,{à ,*{Ð (Ò {Ð (Ó sÔ (Õ *0NU(Ç  ,B{Ð (Ò (•  ,.{à ,&{Ð (Ñ {Ð (Ó sÔ (Õ **0®Xs² (Æ+ 9{Ö (× (à  ,/{Ø (Ù oÚ , oÛ + s´ *(à ,{Ø (Ù +Â(^rÝ%p(ü oý r &ps} z(à  ,Ó{Ø (Ù 8„ÿÿÿ0(?*0oÜ (?*0oÝ (?*(Þ *0(¤ *(ß *0(¥ *(Þ *0(¤ *r(à }å}æ}ç*0¦Z(à  9—{Ø (Ù {åoâ oâ 38{æ, oÚ ,{çoÛ (È+++{å(È++,<{Ø (á {Ø (Ù {Ø (â oã (É+ sä (å **0O[{> ,E {> {> -{æ (Ê+sç (è *{> {æ (é +³*0 (ê (Ë+*0~`*0~a*0~b*0 Г(¸ *0 Ð(¸ *0(» (+,(¼ **02\(½  (½  (¸ %¤%¤þo¹ *05]{ (F3#t» {œ{é -{› (ë **0X^{ (F3Ft» {œ{é ,2{œ {é {é -{ê {› sì (í **0x_{ (F3ft» {œ{é ,R{œ {é {é ,>{é {é {é -* {ê {ê {›sî (ï **0œ`{ (F@‡t» {œ{é ,s{œ {é {é ,_{é {é {é ,K {é {é {é -5{ê  {ê {ê {›sð (ñ **0&a{ (F3t¼ {(ò **0Ec(Á  ,9{ó (ô (¬3&{ó (õ {ó (ö sÔ (Õ **05d{ (F3#t½ {Ÿ {ž s¬ (÷ **0Xe{ (F3Ft» {›(¬30{œ{é ,#{œ {é {é -{ê (ø **0Rg(  ,F{ù (ú (¬33{ù (û {ù (ü {ù (ý sþ (ÿ **06h{ (F3$t» {›(¬3{œ ( **0Pi{ (F3>t» {›(¬#3({›tÚ {œ{é -{ð ( **0Qj{ (F3?t» {›(¬3*{›tÅ {Ù {œ s ( **0Qk{ (F3?t» {›(¬3*{›tÆ {Ú {œ s ( **0Qm(À  ,E{ ( (¬32{ ( tÇ {Û { ( s  (  **0Rn(À  ,F{ ( (¬ 32{ ( tÉ {Þ { ( s  (  **0Ro(À  ,F{ ( (¬32{ ( tÕ {ê { ( s  ( **0Rp(À  ,F{ ( (¬32{ ( tØ {í { ( s  ( **0Rq{ (F3@t» {›(¬3*{›tÖ {ë {œ s ( **0}r{ (F3kt» {›(¬3U{œ{é ,H{œ {é {é ,4{é {é {é - {ê {ê sÔ (Õ **0}r{ (F3kt» {›(¬3U{œ{é ,H{œ {é {é ,4{é {é {é - {ê {ê sÔ (Õ **0þs{ (F@ét» {›(¬@Ð{œ{é 9À{œ {é {é 9©{é {ê (Å 9Ž {é {é 9~ {é {ê (Å ,d{é {é -V{þ (ÿ {þ (ÿ {þ (  {þ (  {ê     s ( **0¤t{ (F@t» {›(¬@v{œ{é ,i{œ {ê { (F3M t¼{é {é ,8{é {é {é -"{{ê s¬ (÷ **0Ru{ (F3@t» {›(¬"3*{›tÙ {î {ï s ( **0Av{ (F3/t» {›(¬"3{›tÙ{î ( **04w(À  ,({ ( (¬3{ ( (ø **0Fc(Á  ,:{ó (ô (¬3&{ó (õ {ó (ö sÔ (Õ **0xx(  ,l{ù (ú (¬ 3X{ù (û (Å  ,D{þ (ÿ {þ ( {ù (ü {ù (ý  s ( **0Fc(Á  ,:{ó (ô (¬!3&{ó (õ {ó (ö sÔ (Õ **08y{ (F@§t» {›(¬E$-*{›tË {à {œ s ( *{›tÊ{œ{é ,¹{œ{ß {ê {é (ø s ( *0&{{ (F3ft» {›(¬ 3P{›tÍ {œ(Ì+ ,5 { ( {â { ( s ( *{(F@™t»{›(¬ @}{›tÌ {œ{é ,a{œ{é (Ì+  ,F { (  {á{ê   { (   (ø  s ( **0>|{ (F@§t» {›(¬E$0*{›tÏ {œ{é -ä{ä  s ( *{›tÎ{œ{é ,¶{œ{é {é - {ê {ã (ø s ( *0„}{ (F@§t» {›(¬E$P*{›tÑ {œ{é ,ä{œ {é {é -Ð {ê {æs (  *{›tÐ{œ{é ,–{œ {é {é 9ÿÿÿ {é {é {é :fÿÿÿ{ê  {ê {å(ø s (  *0R~{ (F3@t» {›(¬3*{›tÒ {ç {œ s! (" **08{ (F@§t» {›(¬E$-*{›tÔ {é {œ s# ($ *{›tÓ{œ{é ,¹{œ{ê {è {é (ø s# ($ *0Ec(Á  ,9{ó (ô (¬3&{ó (õ {ó (ö sÔ (Õ **03w(À  ,'{ ( (¬3{ ( (ø **0U€(á  ,I{Ê (Ë (Å  ,5{þ (ÿ {Ê (Ì {þ (  s% (& **0r0(Ç sÆ (É *(Å  ,PY{þ ( (ä  ,9{ì (í {þ (ÿ {ì (î  (Å sÆ (É **0“‚(À  9„{ ( (¬3p{ ( t× {ì { ( (u oÏ Ži (ä ,,{ì (í {ì (î s' (( ***0 ƒ(â  9‘sY {) (+ 9z{ì (î { (F3`t» {›(¬3K {œ{é ,> {œ{ì (í {é {ê (Í+s* (+ **0D†0(, (€ s[ (Î+ ,{- *r1&po¿ (ç rY&ps} z0D‰0(, ( s] (Ï+ ,{. *rm&po¿ (ç r‘&ps} z0HŠ(p /+ Ži þþ,!(^r­&p(ü oý r–ps} z£*0F‹(+ o/ þ, Žiþ+,£*(^r%p(ü oý sE z0ŒÈ¥ñ{ (FEK?t¼ {(5*t½ {ž {Ÿ (5(+þ(¾ *t¾{ *t»{›{œ(¬E$‡é"N->TšpëæÛñ !,7Oj…ï4–D99)уä9_{é ,:{é {é ,({é   {é {é -{ê (ê *rÒps" zŒÈ¥ñ(ã   , {½ (Ä þ(+*rÒps" z{é ,³{é {é ,¡{é   {é {é 9‡ÿÿÿ {é   {é {é :mÿÿÿ {ê þ(+*ŒÈ¥ñ(æ   , {0 (1 þ(+*rÒps" zrÑ&ps" ztÅ{Ù  *tÆ{Ú(o*Ð(¸ *tÙ{ï  *tÉ{Ý {Þ (~£*tÈ{Ü  *tË{àþo2 *tÊ{ßþo2 *Ð(¸ *Ð(¸ *tÎ{ãþo3 *tÏ{äþo3 *Ð(¸ *Ð(¸ *tÒ{çþo4 *tÓ{èo5 (½ *tÔ{éo5 (½ *tÕ{ê  *{é 9¡ýÿÿ{é {é 9Œýÿÿ{é   {é {é :rýÿÿ {ê þ(+*Ð(¸ *tÖ{ë  þo6 *t×{ì  *tÚ{ð  *Ð(¸ *{é 9ýÿÿ{é {é :îüÿÿ{ê (+ (¹ % ¤þo¹ *{é 9´üÿÿ{é {é 9Ÿüÿÿ{é   {é {é :…üÿÿ{ê þ(+*{é 9füÿÿ{é {é 9Qüÿÿ{é   {é {é 97üÿÿ {é   {é {é :üÿÿ{ê þ(+*Ð(¸ *(^r'p(ü oý sE z0÷(D ( s*0÷( (D ( s*0÷( (Ï (D ( s*0%÷( (Ï (Ï (D ( s*0+÷( (Ï (Ï (Ï (D ( s*0&h(+-ŒÈ(7 r+'ps} z*0&ho8 -ŒÈ(7 r+'ps} z*0JŽŽi (9 þþ,!(^rE'p(ü oý ri'ps} zs_ (Ð+(Ñ+*0)(y,o: (y+, o: +Ù*0=Âo4 (ô  (+o8 -!(^rs'p(ü oý rŠps} z*0®(+ oà , oÄ + (¸ r¡'p(^r¥'p(ü oý (Ò+(+ o/ þ, Žiþ+,( £r¡'p(^rÏ'p(ü oý (Ò+*(^r(p(ü oý r¡'ps} z0/(+ (5r)(p(^r1(p(ü oý (Ò+*0÷(B ( s*0#÷(z( (Ï (D ( s*0'o; ,ŒÈ(< +ŒÈ(f*0÷(@ ( s*0(n(û (û (ð *0(ö (ª(ï *0`’(~(É+ (9 (= þþ,!(^r_(p(ü oý ri'ps} zsa (Ó+(š(ì *0n”(Ô+ ŒÝ,+ r.psà zŽi  Y2# £ñ(+¤XX3Ý (} (š(ì *0t•(+r‡(p(^r™(p(ü oý (Ò+(~ /+ Ži þþ,!(^rÅ(p(ü oý ró(ps} z(˜(î *0d–0(, (€ (9 Ži þþ,!(^r÷(p(ü oý ri'ps} zsc (Õ+(Ö+( (ì *0v—þš(×+,s> z(p (9 Ži þþ,!(^r+)p(ü oý ri'ps} zse (Õ+(Ö+(ž(ì *0Q˜þš(×+,s> z(o(+rY)p(^r{)p(ü oý (Ò+(œ(î *0i(+(+r¥)p(^r¯)p(ü oý (Ò+Ð(¸ (+r¥)p(^rã)p(ü oý (Ò+(¨(ð *0sg (Ø+(~(ì *0W™þ#(Ù+,s> zo? ,!(^r *p(ü oý r=*ps} z(õ (Ž(î *0N™þ#(Ù+,s> zo? , (Œ(í *(^rI*p(ü oý r=*ps} z0z™þ#(Ù+,s> z(+o3 r*p(^r‹*p(ü oý (Ò+o? , (ˆ(î *(^rI*p(ü oý r=*ps} z0ƒ™þ#(Ù+,s> z(+o3 r*p(^r‹*p(ü oý (Ò+o? ,!(^r *p(ü oý r=*ps} z(õ (Š(ï *03šþl(Ú+,s> zoÏ (ó (†(ì *0Œ›þ(Û+,s> zo@ -!(^r­*p(ü oý rÍ*ps} zoA (ó oÜ oB , (”(ì *(^rI*p(ü oý rÍ*ps} z0š›þ(Û+,s> zo@ -!(^r­*p(ü oý rÍ*ps} zoA (ó oÜ oB ,!(^r *p(ü oý rÍ*ps} z(õ (–(Ï (ì *0’›þ(Û+,s> zoC -!(^rÙ*p(ü oý rÍ*ps} zoA (ó oÝ oB ,((Ï (ì *(^rI*p(ü oý rÍ*ps} z0 ›þ(Û+,s> zoC -!(^rÙ*p(ü oý rÍ*ps} zoA (ó oÝ oB ,!(^r *p(ü oý rÍ*ps} z(õ (’(Ï (Ï (ì *0jœþ(È+,s> zoÏ (ó oB ,!(^r *p(ü oý rù*ps} z(õ („(Ï (ì *0\œþ(È+,s> zoÏ (ó oB , (‚(ì *(^rI*p(ü oý rù*ps} z0¢ÐH(¸ (+r+p(^r+p(ü oý (Ò+ÐH(¸ (+rU+p(^r+p(ü oý (Ò+ÐH(¸ (5rk+p(^rs+p(ü oý (Ò+(j(û (ð *0lÐ(¸ (+r¿+p(^rË+p(ü oý (Ò+Ð(¸ (+ró+p(^rý+p(ü oý (Ò+(h(ï *0T(u  oÏ si o5 (Ü+ (+r#,p(^r),p(ü oý (Ò+(|(î *0ž(÷ (û  (¢(ï *0RŸ{é ,, {é {é -{ê (ý *(ÿ (ý *Ð(¸ (f(í (ý *0K¡sk (Ý+(Þ+ (D (E (¦(¤(Ï (ì  sm  (+(î *0ra,p*0(= (= 3 so (ß+**0sq þoF *0oà , þo/ **0oà , o/ Ži**0…¥>oG (à+ (  ss (á+ {H , {H {H - {I *sy (â+,{J *(^r‹,p(ü oý sE z0î§(+,!(^r³,p(ü oý rÛ,ps} z:°oà , o/ + s{ (ã+(ä+ (å+ >oK , (L Þ Þtu”,Þþ,({J  o5 oM , {J *( *( *h#‹0)¨:oN ,*rë,poŠ (çsE z0)©:oÎ ,*r-poŠ (çsE z0{O -*(ä+þo¹ *0s} þoF *0 vª(  (æ+ (ç+ ŒÈ¥(½  >(ä+oP (^r;-p(ü oý (À Œ,*rg-psQ z0D«(  >oR (^ry-p(ü oý (À Œ#,*rŸ-psQ z0J¬( (è+ 6(ä+oS (^r¯-p(ü oý Œl,*rá-psQ z0M­(  (æ+ 6(ä+oS (^r¯-p(ü oý Œl,*rá-p sQ z0`¯EJ{> - rç-ps" z {> {æ Y(é+ (T (é (U sV *(ê sV *0/h/!(^rp(ü oý ró(ps} z(é+*0oã Ži-*(ä+þoW *0o³(X (Y (Z ([ (\ o/ Ži(ê+(] (^ (   (   þ(( *01o@ ,oÜ þoB *oC ,oÝ þoB **0€´{O ,U {O {O ,F{O {O {O -2{_ {_ (¸ % ¤%¤þo¹ *(^r'.p(ü oý ri'ps} z0Wµ{O ,. {O {O -{_ 3 þo6 *þo` *(^rK.p(ü oý rm.ps} z0H·oa ,*s ob (ë+ -ru.poæ (ç r­.ps} z{c *0~c*0j¹{[(ì+ rp( ,(. *rÒp( ,{\*(d ,*oŠ (^r».p(ü oý (À sE z0º{[(ì+ (/  (- *0L»{Z(V YE rç.ps" zs *(0  sƒ *(]  s… *0se (í+*0lÀ{Z(V E r/ps" z(]  s‰ *s‹  s  (1 of sg (h (i s *0Ás‘ (j (î+ s“ *0{> -*r/ps" z0,Â{> , {> {> - {æ *r/ps" z0'{{(k {X{s˜ *0(ï+s™ s˜ *0Ë{Z(V E Sc}—§Ër}/ps" zs›  s  (C (4 ol sm (n (o (p  s¡ *(; s£ *(: (9 s¥ *(3 (]   s§ *(9 s© *(9 s« (q (ð+s¯ *(3 s± *0-Ì{[(ì+ (3  {Z(V þ s³ *0-(]  sµ *0Â(0  {[(ì+ s· *0Â(0  {[(ì+ s¹ *0Î(=  (]  s» *0=Â(0  {[(ì+ {Z(V 3 ( (”*( (‚*09Ïs½  s¿  (0 of (3 {[(ì+(] sr *0%(0 {[(ì+(3 (4 ss *0gÒ{Z(V E Þ#r‹/ps" z(?  (¬E$ rÒps" ztÔ {é*tË {à þoÜ *(@ (X (\ (Y ([ (Z   ( *(0 (4 st   (u  (v ($ *0)Ö{Z(V  E lr‚ˆ˜¨¸ÈØÞ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMsÁ r¥/psw (ñ+ ox sà *sÅ *sÇ *sÉ *(@  (X  (\  (Y  ([  (Z sË *sÍ *sÏ *sÑ *sÓ *(<   sÕ *(0 {[(ì+s× *sÙ *sÛ *sÝ *sß *(A   (y  (z  ({  (|   sá *(0 {[(ì+sã *så *sç *sé *së *sí *sï *{Z(V þ  sñ *{[(ì+só *(] (} (~   sõ *(^ ( (€ s÷ *(] ÑiÑsù *(] gsû *{Z(V Òsý *(] hsÿ *(] Ñs *(] s *(] s *(^ s *(^ s *s *(A   (y  (z  ({  (|   s *(0 (4 st (u (v   s *s *(? s *s *(0 s *(<   s *(= s *(>   s *(= s *s! *(] s# *0~d*0~e*0×oå s)  s+ *0s- *0Ù{ (FE9{*t½ {ž {Ÿ  (H (@{s*t»{›{œs/ (ò+(D{s*t¾  {   {¡  /+Ži   þþ, rç/ps" z £ñ (+ r0p(^r!0p(ü oý (Ò+ *0œÚ{ (FEL*t» s1 {œ(ó+*t¼ { (ô+,+ (ô+,* ( *t½{ž {Ÿ ( 8dÿÿÿ0 -Ži s3 *0¢Ý{ (FEA¥~t» {› {œ s9  (ò+(D{s*t¼{o‚   ,C   {)  (+(+ (I   (õ+  (ƒ , * („ s5 z*t½{ž{Ÿ (  (K (@{  sÝŒtu€,vt€(8 (Å+,[(3(5s2(B( ss;  (K (@{  sÞþþ**á0Œ0 GÞo… i (+ sý { /%{ { { Yo~ X(½ +Ò*0~f*0~g*0/à(G o† sR (ö+(M s‡ þoˆ *05â(N o‰ -sZ (÷++ (N oŠ s‹ *0ûëŒ ,+ r0psà zo4 oå oŒ ( oâ (@  (N (B (N oŠ s‹ Þ (N (D &Ü (Ž  ( , ( 8­u—,(‘ +PsT sV  o’  Þ t  ud  , 3 Þþ  (ø+(ù+(ú+(N (B (P  Þ (N (D &Ü (Ž ( , ( + -*{“ {Vo4 ( u,oÚ , oã Ži++XŽiþþ,>r10poµ þHoŠ ŽiþHoŠ (èrY0ps} z(J (ï+s˜ o” (ø *(E` ± » ý  0ƒìŒ ,+ r0psà zu ,4 o4 ( oÚ , oã +(û+ (Q *ul , o4 (  (Q *(Q *0(î(ä+(8  (F (ü+ (Ô+(H *0BÐÈ(¸ (+rÓ%p(^rg0p(ü oý (Ò+{{s– *0!( &}è}éX}ê*0G({é {ê þþ, r‘0ps" z{è{é£;i {éX}é*0¦ï{éX{ê1 r­0ps" z{è {é(× {éXY(× {Ý  {Ý YX; Y 2"  X£;¤; X  X3Þ {éX}é*0)h(— {è{éo˜ {éX}é*(™ *0(Å *:(š }ë*0oµ {ë( *:(› }ì*0(n{ì( *(œ *0 .oÐ (+ri'p(^rõ0p(ü oý (ý+*( *0 )(+ri'p(^r1p(ü oý (Ò+*(ž *0 .o2 (+r+1p(^r51p(ü oý (Ò+*(ž *0 .o2 (+ri1p(^rq1p(ü oý (Ò+*:(Ÿ }í*0 .{í(+r£1p(^rµ1p(ü oý (Ò+*(  *0oÐ þ(¾ *(¡ *0ð(ÿ ( (÷ *(¢ *0ð(ÿ ( (û *(£ *0 þoM *:(¤ }î*0{î£*:(¥ }ï*0oµ {ï( *:(¦ }ð*0{ðþ(å+*(§ *0 þoÐ *’(¥ }ñ}ò}ó}ô*0®ñoÚ , oã + Ži {ñþþ,*{ô(û+ su {ò(ã+ {ó(å+sw oÏ (Ð+(þ+o5  (= (= þþ,* (¨ (¨ ( *:(¦ }õ*0{õþ(å+*:(¤ }ö*0{ö(© *:(ª }÷*0o¿ {÷( *(« *0 þ(+ *:(« }ø*0{øþ( *:(« }ù*0{ùþ(, *:(¬ }­ *0{­ þo× *:(® }û*0{ûþo¯ *(° *0(3 *:(± }ü*0{ü(j (î+*V(® }ý}þ*0{ý{þ(ÿ+þo² *(° *0(3 *:(³ }ÿ*0{ÿ(ÿ+*0{*0{*0{*0( }}}*:(¤ }*0{£*(´ *0(9 *:(µ }*0{(q (ð+*:(¶ }*0{þo” *r(· }}}*0Bò{{o¸ {o¹ sŸ {(+(D ( s*:(· } *0÷{ oº (B ( s*V(· } } *03ó{ oº { (7 o” (@ ( s*V(· } } *0*÷{ {o» { (> ( s*:(· }*0{o” (ù *(´ *0(9 *:(¶ }*0{þo” *V(· }}*0:ô{o” { {s­ {(+(+ s*:(· }*0"rÑ1p{{o» (7(ø *r(¼ }}}*0){{{o» {(± s2*:(¼ }*0{{(½ *V(¾ }}*0{( {(ç *V(¿ }}*0{( {(è *V(¾ }}*0{oÀ {(é *(° *0(3 *:(± }*0{(j (î+*(Á *0s" z:( }*0{þo¹ *( *0 (+(€*( *0(+(x*( *0(+(j*²( }} }!}"}#*0 Cõ{{ {!{"{#sr ()  oB ,(‚*(„*( *0 (+(~*( *0 (+(|*( *0(+(h*( *0(+(¢*:( }$*0{$oà (’*V( }%}&*0*ö{%{&(#  o? ,(Œ*(Ž*( *0(+(¤*( *0(+(ª*( *0(+(f*( *0 (+(d*’( }'}(})}**0 6÷{'{({){*(+ (* ,(*(’*V( }+},*0*ö{+{,(#  o? ,(ˆ*(Š*( *0(+(v*( *0(+(r*( *0 (+(p*( *0(+(l*( *0(+(n*( *0(+(t*:( }-*0(+ {-(+*:( }.*0(+ {.(+*:( }/*0(+ {/(+*:( }0*0(+ {0(+*:( }1*0(+ {1( +*:( }2*0(+ {2( +*:( }3*0(+ {3( +*:( }4*0(+ {4( +*:( }5*0(+ {5( +*:( }6*0(+ {6(+*:( }7*0(+ {7(+*:( }8*0(+ {8(+*:( }9*0(+ {9(+*( *0(+Ð(¸ (+*’( }:};}<}=*0 6÷{:{;{<{=(+ (* ,(”*(–*V( }>}?*0{>{?(% (†*( *0(+(¨*:( }@*07ø{@(¬3!{@tÔ {é (( (‚*{@*( *0(+(¦*:( }A*0{A( ( *:( }B*0{Boà (–*:( }C*0{CoÀ (ž*:( }D*0{Doà (–*:( }E*0{EoÀ (œ*( *0 (+(š*:( }F*0(+{F(˜*(Ä *0(B (9 sÅ *(Æ *0(D (Ç (+*(´ *0(9 *V(È }G}H*0{G{H(+*:(É }I*0{I(E (+*:(Ê }J*0{J(H *:(Ë }K*0{K(I *V(¤ }L}M*03y{M/ {L£*(^rÛ1p(ü oý sE z0(} }N*0(} *0 ( *0{N*V(Ê }O}P*0{O{P(K *r(Ì }Q}R}S*0*{R(Å+, {S(ø *{Qþo‚ *0 ( &*00ù(Í (Î ((+ bX, ( +a*05ú(Í (Î (Í (Î ((+, ( **0sA *0( }T}U*0{T*0{U*0&*0Cûþ,: &  ¹y7ž{UbcXXX ¹y7ž{T(+bcXXX **0 ((E *0Füþ,7u„ ,+&  {T{T(+,{U{Uþ***þþ*0oŒ ( oâ (@ *0Aýþ,2þ,*&  {T{T(+,{U{Uþ***þþ*0þu„ ,(I **0sL *0( }V*0{V*0&*0 ( &*0 ((E *0((G *(Ï *0T(Ð (Ñ oŒ ( oâ (@  (N (B (N (K oÒ  Þ (N (D &Ü *0E :(Ó }W*0+{W{WoÔ (L  (G o† sÕ *:(Ö }X*0+ra,p(× ,(M {Xs‡ oØ þ**(Ï *07(Ð (Ñ (N oŒ ( oâ (@ (K oÙ *:(Ú }Y*04(Û (Ü sX (ö+(M {Ys‡ oˆ *0A*{Z(V  {Z(V  {Z(V  {Z(V  b`b` b`*08({Z(V  0* ¿0_ b{Z(V `*(\ *0"(] j!ÿÿÿÿ_ (] j  b`*0Ó(]  /+ Ži þþ9©r 2pŒH ,2 uF,(ˆ ¥Jo‰ + oŠ +rp(® rA2p(® Ži ŒH ,2 uF,(ˆ ¥Jo‰ + oŠ +rp(® s" z£È*0‘{Z(V  EQXrc2pŒH ,/uF , (ˆ ¥Jo‰ +oŠ +rp(® s" z(Ê+*oÝ (é 8oÿÿÿ0v ŽisU 3se  sf  sh  oÞ {Z(] (W sß (à (á ŽisU ('+se þoÝ *0{Z*0{[*0{\*0( }Z}[}\*(â *0{Z(] (X *:(ã }]*0{](* (+*0Q oä -{å -*(+sæ (ç * {è (é (Y {è (ê +¯0 (X (+*0Loë -{å -*sì (í * {î ( {î (ž (Y +´0 (X (+*0sï þ(+*0sð ( +*0:*0>*06*00*0(Ðn(¸ oñ ,r¾p6oÎ ,***0;h(t -!(^r2p(ü oý r#,ps} zr¾p6þoÎ *:(ò }ó *0{ó st þoô *:(õ }ö *0{ö st þo÷ *0?þ¸ ~“sø où ,*s2 ~“sø oú *0 (FEAg¨t»  ¹y7ž{œ(û bcXXX ¹y7ž{›(­bcXXX *t¼  ¹y7ž{(!+bcXXX *t½  ¹y7ž {Ÿ("+bcXXX ¹y7ž {ž(!+bcXXX *t¾ ¹y7ž{¡bcXXX ¹y7ž{ (#+bcXXX *0þ(FECj©t» t» {› {›  (¯,{œ{œ(ü **t¼t¼{{þ($+*t½t½ {ž {ž($+,{Ÿ {Ÿþ(%+**t¾ t¾  {  { (&+, {¡ {¡þ**0 (¬E$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *tÅ  ¹y7ž{Ù(#+bcXXX *tÆ  ¹y7ž{Ú('+bcXXX *tÇ  ¹y7ž {Û('+bcXXX *tÈ ¹y7ž{Ü(#+bcXXX *tÉ ¹y7ž{ÞbcXXX ¹y7ž{Ý(#+bcXXX *tÊ ¹y7ž{ß((+bcXXX *tË ¹y7ž{à((+bcXXX *tÌ ¹y7ž{á((+bcXXX *tÍ  ¹y7ž {â((+bcXXX *tÎ  ¹y7ž {ã()+bcXXX *tÏ  ¹y7ž {ä()+bcXXX *tÐ  ¹y7ž {å()+bcXXX *tÑ  ¹y7ž {æ()+bcXXX *tÒ ¹y7ž{ç(*+bcXXX *tÓ ¹y7ž{è(++bcXXX *tÔ ¹y7ž{é(++bcXXX *tÕ ¹y7ž{ê(#+bcXXX *tÖ ¹y7ž{ë(#+bcXXX *t× ¹y7ž{ì(#+bcXXX * * * * * *tØ ¹y7ž{í(#+bcXXX * * * *! *tÙ" ¹y7ž{ï(#+bcXXX ¹y7ž{î(+bcXXX *tÚ# ¹y7ž{ð(#+bcXXX *0(¬E$%Ho–ÏöDk’¹à.U|£ÊñW*tÅ tÅ {Ù{Ùþ(&+*tÆ tÆ {Ú {Úþ(,+*tÇtÇ{Û{Ûþ(,+*tÈtÈ{Ü{Üþ(&+*tÉtÉ {Ý {Ý(&+,{Þ {Þþ**tÊ tÊ  {ß {ßþ(-+*tË tË  {à {àþ(-+*tÌtÌ{á{áþ(-+*tÍtÍ{â{âþ(-+*tÎtÎ{ã{ãþ(.+*tÏtÏ{ä{äþ(.+*tÐtÐ{å{åþ(.+*tÑtÑ{æ{æþ(.+*tÒtÒ{ç{çþ(/+*tÓtÓ{è{èþ(0+*tÔtÔ{é{éþ(0+*tÕ tÕ! {ê!{êþ(&+*tÖ"tÖ#"{ë#{ëþ(&+*t×$t×%${ì%{ìþ(&+*tØ&tØ'&{í'{íþ(&+*tÙ(tÙ)({î){î(+,({ï){ïþ(&+**tÚ*tÚ+*{ð+{ðþ(&+*0-((ï (ð r±2p((&(*(*05d{ (F3#t½ {Ÿ {ž s¬ (÷ **0s *0þ9{– {– @í(FE7]št» t» {› {›(°,{œ {œþ(1+**t¼t¼{{þ(2+*t½t½{ž{ž(2+,{Ÿ{Ÿþ(3+**t¾t¾ {  { (4+,{¡ {¡þ****0(¬E$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*tÅ tÅ {Ù{Ùþ(4+*tÆ tÆ {Ú {Úþ(5+*tÇtÇ{Û{Ûþ(5+*tÈtÈ{Ü{Üþ(4+*tÉtÉ {Ý {Ý(4+,{Þ {Þþ**tÊ tÊ  {ß {ßþ(6+*tË tË  {à {àþ(6+*tÌtÌ{á{áþ(6+*tÍtÍ{â{âþ(6+*tÎtÎ{ã{ãþ(7+*tÏtÏ{ä{äþ(7+*tÐtÐ{å{åþ(7+*tÑtÑ{æ{æþ(7+*tÒtÒ{ç{çþ(8+*tÓtÓ{è{èþ(9+*tÔtÔ{é{éþ(9+*tÕ tÕ! {ê!{êþ(4+*tÖ"tÖ#"{ë#{ëþ(4+*t×$t×%${ì%{ìþ(4+*tØ&tØ'&{í'{íþ(4+*tÙ(tÙ)({î){î(+,({ï){ïþ(4+**tÚ*tÚ+*{ð+{ðþ(4+*0µ!€’ sý €“Ðø(¸ oÄ €`Ð(¸ €b(º oà , (º oÄ +(º €aÐH(¸ oå €cs% €ds' €e s= sþ €f sO sÿ €g*( *0 þ(*( *0r»2p((((**( *0 (3(*(™ *0(€ *:(Þ }i*0{i0(Ç sÆ (É *(€  ,Z{iY( {þ ( oë ,9{ì (í {þ (ÿ {ì (î  (Å sÆ (É **( *0s" z( *0( ( ( *(¢ *0ð(ÿ ( (û *0s (:+*0 (;+*0s (<+*0s¯ (=+*0s± (>+*0 s³ (?+*0 s (@+*0s· (A+*0s¹ (B+*0s» (B+*0 (¤ (R+*0 (ã (R+*0 (¤ (S+*0 (ã (S+*:(Ó }j*0{j(  *:( }k*0{k( *V(@ } } *0{ { oŠ þo *:( } *0 &s8 s£ s¥ { s s *(Ù *0*r( } } } *0{ s« { { s *:( }r*0{r( *:( }s*0{so *( *0*( *0s" z(Ù *0*(Ù *0*:(Ù }t*0{toÜ *0û,{v,++ X {u- {wþ+,7,1 {Ý  Y2 oK &XX3é++,${v,{ oK &+ + -oK &{u- {w+,E,? {Ý  Y2%{w,0+ oK &XX3Û++*0<- / 0( X+x3a+A(  YX ( þo *0, ,( {Ý  Y  2 oK & X X3í**0, ,( {Ý  Y  20oK & X X3í**0, (¿ **0í!XYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (½ X  !6"\i(C+&^\+Ñ{u(Á *0œ"XYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(½ X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(C+&][8vÿÿÿ{u(Á *0 *0££(|þ(Œ*0~Ä*0%o ,+o ,+o þ*0+(Ç , oà +,oÄ (Æ þoM **0A#(È , o/ s! *o: ,+Û(^r¿2p(ü oý sE z0 *0 :%(¼ (É  (" r¾p %¤(ˆ þoÅ *0'&(É  (# £ sí þ(Å *0E'(É  (# £ (É  (# £sñ þ(Å *0)&(É  (# £ só þ(Å *000 9þþ**0ý)( þþ,(^rã2p(ü oý s$ z(  YE#YEt+YEJ-YE&0YE*(ë X8pÿÿÿ(é X8Yÿÿÿ+( (ê X8<ÿÿÿ(^r3p(ü oý s$ z ( (ê X8ÿÿÿ0A*2(^r_3p(ü oý s$ z( (Ï , X+Á*0b*2(^r_3p(ü oý s$ z( (Ï ,X(Ñ s% **YEs% *Xs% *0J,( .YE s& *X(Ò  (' (( s% () s& *0l*2(^r3p(ü oý s$ z( (Ï , X+Á*YE(Ó s* *X(Ó s* *0~Å*0/(Ô  (+ (, (- (, (. (, (/  3+F, (0 +: Y(× {Ý YX( (Õ ¥J(1 (× (0 9z{2 (( {2 (' , (0 +T X(× Y(× {Ý  {Ý     YX( (Õ ¥J(1 (× (0 +s3 *0~Æ*09}{u-3, {w+,( (À +( (¿ +(,{u,/, {w+,( (À *( (¿ **(¿ *0ü0 %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þ<oŠ (^rÕ3p(ü oý (À s$ zsõ þ(Ì *s÷ þ(Ì *þ(Î *sù þ(Ì *sû þ(Ì *þ(Í *sý þ(Ì *sÿ þ(Ì *sþ(Ì *X  ( LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(^r4p(ü oý r?4p(À s$ z sþ(Ì * sþ(Ì * sþ(Ì * s þ(Ì *s þ(Ì *s þ(Ì *sþ(Ì *sþ(Ì *Xþ(D+*052,! {5 -sþ(Ì *þ(Ù *0 ‚5sì  ( (Ð  (Ö  (6  (7  (8 ( ,%{5 -sþ(Ì *þ(Ú *0Ô7(½+:Á(¿+:®(Á+:›(E+:ˆ(Ã+:v(¾+-b(À+-P(Â+->(Ä+-/(F+-(^rC4p(ü oý s$ z¥š n*¥’*¥‘ n*¥: n*¥;n*¥s*¥›j*¥Hj*¥j*¥j*0Œ9(½+:g(¿+-L(Á+-4(Ã+-(E+-+T¥› Œš+D¥s Œ’+4¥H Œ‘+$¥ÑŒ:+¥ÒŒ; (Ü *0 ‚<(»+:^(º+:¨(G+-(^r‰4p(ü oý s$ z¥% (9 ,9 {Ý c/+c/+þHoŠ +r±4p(® (Õ ¥J(: s; (H+s< 8[¥Ž(9 ,9 {Ý c/+c/+þHoŠ +r±4p(® (Õ ¥J(= "€þ,+ "€eþ,+(> þ"þþs< 8±¥[(9 ,9 {Ý c/+c/+þHoŠ +r±4p(® (Õ ¥J(? #ðþ,+#ðeþ,+(@ þ#þþs< (A  (B  (C  {v  ,"  ,{ (9  (® +    (Ø XsD *0«=X ( LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(^r4p(ü oý r?4p(À s$ z(Ý ( XsD *X  ( XYEldYE^iYEPoYEBuYE4xYE&(^r4p(ü oý rµ4p(À s$ z(Ý (  XsD *X  ( XYEldYE^iYEPoYEBuYE4xYE&(^r4p(ü oý r»4p(À s$ z(Ý (  XsD *X  ( XYEldYE^iYEPoYEBuYE4xYE&(^r4p(ü oý rÁ4p(À s$ z(Ý (  XsD *0 Õ?{v 9„ { +YEk{ rÇ4p Œ<,4uF,(ˆ ¥Jo‰ +oŠ +rp(® r p(® s" z0+ (. ,Q  {… {† {‡ {ˆ {Ý  {Š {‹ {Œ { {Žs-+  {w,H {… {† {‡ {ˆ {Š {‹ {Œ { {Žs-+  ,R  {… {† {‡ {ˆ {‰ {Š {‹ {Ý  { {Žs-+  ,  (I++rêp(,XsD *0 ä Bsì  ( (Ð  (Ö  (6  (7  (8 ( 9‡  {5 -S{E ,,  {F   {E   ¥H(×  sG +R(^r'5p(ü oý s$   z {5 {Ý  (×  sG +   sG (H (I  9‡  {5 -S {E ,,   {F   {E  ¥H(× sG +R(^rO5p(ü oý s$   z {5 {Ý   (×  sG +    sG (H (I  %YEAYEÖEYEKr™LYEsšOYEUYEÖXYE¡aYEØI™Õü3WiYEElYEKnYE&sYEj§éxYE(^rÕ3p(ü oý s$   z {E ,Ù {F  {E  (Ý ( XsD * {E ,› {F  {E  ¥3(Ø XsD * {E 9[ÿÿÿ {F  {E  (J+oJ oK &XsD * {E 9ÿÿÿ {F  {E 8;ÿÿÿ {E 9òþÿÿ {F  {E X( XYEndYEiYEqoYEDuYE6xYE((^r4p(ü oý r5p(À s$   z (Ý ( XsD * (Ü (à XsD * {E 9þÿÿ {F  {E 8(þÿÿ {E 9ßýÿÿ {F  {E X( XYEndYEiYEqoYEDuYE6xYE((^r4p(ü oý ró(p(À s$   z (Ý ( XsD * (Ü (à XsD * {E 9óüÿÿ {F  {E  (¾+-: (À+-1 (Â+-( (Ä+- (F+- (Ü (à + (Ý ( XsD * {E 9nüÿÿ {E {E 9Yüÿÿ{E {F  {F {E ŒS(Ë  (Ë (K+oK &XsD * {E 9ýûÿÿ {F  {E  ¥,rƒ5p+r5p(Ø XsD * {E 9­ûÿÿ {F  {E  ¥<oK &XsD * {E 9qûÿÿ {F  {E 8yþÿÿ {E 9Jûÿÿ {F  {E  (Þ * {E 9ûÿÿ {F  {E +Ç {E 9ïúÿÿ {F  {E +£ {E 9Ëúÿÿ {F  {E 8íúÿÿ {E 9¤úÿÿ {F  {E  (ß * {E 9púÿÿ {F  {E  ,  oŠ +rêp(Ø XsD * {E 9#úÿÿ {F  {E 8?üÿÿ {E 9üùÿÿ {F  {E  ¥%r™5p(Õ ¥J(: {v,1s; (H+,{ (9 (® +(Ø XsD * {E 9]ùÿÿ {F  {E 8þÿÿ {E 96ùÿÿ {F  {E 8çýÿÿ {E 9ùÿÿ {F  {E 8Àýÿÿ {E 9èøÿÿ {F  {E  (à * oK &XsD *0 ÿD2+( %3X þþ+,oL Œ(*(M ,C( oK &X( oK &X8|ÿÿÿ( %YE+oK &X8;ÿÿÿX(L+ (N (O 8ÿÿÿ0 HHoP (Q (R (S (T     (M+*0 £JsU 2+( %3X þþ+,(N+(O+*(M ,X+( %YEX8nÿÿÿXþ(Û *0SL{V r£p( ,sW Œ.(P+*(   (X Ð/(¸ (Q+(P+*0{u*0{v*0{w*0}u*0}v*0}w*0( }u}v}w*V(Y }x}y*0{x{yþ(R+*²(Y }z}{}|}}}~*0 4{|{~{z([ ([ {}{{Xþ(D+*²(Y }}€}}‚}ƒ*0 -{‚{{€{{ƒsï þ(Å *’(Y }„}…}†}‡*0 ){†{„([ {‡{…Xþ(D+*r(\ }ˆ}‰}Š*0 ${ˆ{Š([ {‰Xþ(D+*r(\ }‹}Œ}*0 ${‹{([ {ŒXþ(D+*r(\ }Ž}}*0 ${Ž{([ {Xþ(D+*r(\ }‘}’}“*0 ${‘{“([ {’Xþ(D+*r(\ }”}•}–*0 ${”{–([ {•Xþ(D+*r(\ }—}˜}™*0 ${—{™([ {˜Xþ(D+*r(\ }š}›}œ*0 ${š{œ([ {›Xþ(D+*r(\ }}ž}Ÿ*0 ${{ž([ {ŸXþ(D+*r(\ } }¡}¢*0 ${ {¡([ {¢Xþ(D+*r(\ }£}¤}¥*0 ${£{¤([ {¥Xþ(D+*r(\ }¦}§}¨*0 ${¦{§([ {¨Xþ(D+*r(\ }©}ª}«*0 ${©{«([ {ªXþ(D+*r(\ }¬}­}®*0 ${¬{®([ {­Xþ(D+*r(\ }¯}°}±*0 ${¯{±([ {°Xþ(D+*r(\ }²}³}´*0 ${²{´([ {³Xþ(D+*²(\ }µ}¶}·}¸}¹*0 .{µ{¶{·{¸{¹([ þ(Ù *Ò(\ }º}»}¼}½}¾}¿*0 4{º{¼{½{¾{¿{»([ þ(Ú *:( }] *0 5N{] o^ (_ (` (× (Ø þoC *r(a }b }c }d *0 {b {c {d þ(S+*0/Ðø(¸ oÄ €Ä(ˆ €Åsì €Æ*0<Or5poK o4 Ð(¸ (+ Þ t  Þ*/0 0"Qoe (f Þt (g Þ*0 *0/£H**0R{Ê {É {È Ži3\ X/(9r¯5ps} zHY2 (¤HXX3à+ ¤HX (N*0WS{Ê {É {È - r»5ps" zY£Hþ 3Y+Y(N sh *0MT{Ê {É {È 3*£H £He¤HX(N si (j *0_VX þþ, Xsk *(" ,, {l (m {l (n Y+®Xsk *0 ø^!!u®-q!u¯:Àt° { { {€ ($(o (p (q (r (ûsk 8Zt®  {w  {x  {v  oõ   (ÿ (    (#8ÿt¯{| {z{} {~{{ {y ,+""u¨:"u§:6($(o (p  (q (r X ($(q (o (p (r   (è(ý XXsk 8t¨{o($(o  (p (q (r  YX ($(q (o (p (r   (ä(ýXsk 8bt§{n($(o  (p (q (r XY X>°(  ($(q (o (p (r (!(s (t  ,*   (ä(ýXsk 8€   (æ(ýXXsk +V ($(q (o (p (r   (æ(ýXXsk (r (q (o (p sk *0.`0*   (T+(N ($(q *0(+ ( Xsu *0$” sv r p(+ (+ su *0›b  u®:× u¯:é  u¯- u°:‹rã5p 8sQzt¯ {| {z {{ (( ,+(w (x rËp(&(w (x (x 8@ÿÿÿt°{8ÿÿÿt®{woõ (&*t¯ {~u¨9ÿþÿÿ{~t¨{‰9çþÿÿ{| {z {o (((w (x  X(U+(w (x  X8eþÿÿ02c  (* (( (w (V+('+(7 *0h sv oÜ o‹ *0 `d  u¯-2 u°:üt®{w oõ o‹ ( X*t¯ {~u¨,[{~t¨ {|{z {o(W+X(X+X8Qÿÿÿ{|{z{{(W+,+rËpo‹ rËp( X8ëþÿÿt°  {  { {€  (Y+&(W+ (Y+&*0g   (W+&*0Wi{z ,D {z {z ,5{z {z {z -!{{ ( {{ ( s| *rš6ps" z0om,j(Z+ (è3Mt {<r°6p( ,{= ([+(} *{<rº6p( ,{={~ -*rÆ6ps" z*0~Q*0~R*0BosT (\+(, r7p(ÿrž p(ÿ(è((è(*0BqsV (]+(, r7p(ÿrž p(ÿ(è((è(*0@r®p(ÿr7p(ÿ()r¸p(ÿ(è((è(*0@r7p(ÿr7p(ÿ()rmp(ÿ(è((è(*04r®p(ÿ(,r¸p(ÿ(è((è(*0Â'YE©"YEYE~\YEk( ,Uid[ ] i [ ] i ] r7pþHoŠ (® þHoŠ (® þHoŠ (® *þ<oŠ *r 7p*r&7p*:jÿÿÿr,7p*9Qÿÿÿr27p*0>™( / (€ þ+,( "þþ+, X+Å*0<r( 3(V+ ('+(7 *X( (6(+ +Ä0s  r87p(® r87p(® *0{ 1{ Y(½ **0s *0 %(\(Z+Œ(>*0 !(Z+Œ(>*0 ¨y0+{ þþ,r<7p(ÿ Ýw 9' o‚ ,r<7p(ÿ ÝT oƒ  (¼ oà ,0 oÄ ÐC(¸ oà , oÄ +(++, oŠ (ÿ(„ 8j (¼ Ð*(¸ o´ ,þ, Žiþ+,81£(^+(_( ,+( þþ,8òr7p(… rž p(† /+þ,+X  þþ,8©0rp+"Y(×   {Ý   YX(  X (    þþ,rp+0X(×   {Ý  ( Y    YX(  X(×  Y(×  {Ý  {Ý     YX(  sf(_+uE9tE{‡ u3,(ÿ+Y(=(: (ÿ (ÿ(è((è((„ Þ tÞ+>tF{ˆ rD7po¦ (® rŽ7p(® (ÿ(„ -Y (E+{‰  oŠ  ÞIY (E Þ/t(:r’7po¦ (® (ÿ Þ*A4kmØ vw/0®|sh {z 9‘ {z {z -{{ ( s‹ þ(`+* r¢7p(ÿs (a+s (b+r»2p(ÿ()rVp(ÿ(è((è(* +œ07,/r¢7p(ÿrVp(ÿ(è((è(**0s~*0 s *0 s‘ *0s’ *0 å‡sx sz (èE†Éï(èE”O^rã5p psQzt {={~ -{< (: (ÿ*{={< (: (ÿ(c+(æ(þþo“ þo” *t{>{?(:oµ {~ -  (ÿ* (ÿ(c+(æ(þþo“ þo” *tÿ{:(:r¦7poµ (® rŽ7p(®  (ÿ(^3(**t{@9Í(¼ u3 ,  (: (9  (ÿ*uS  9¬   (•   YE6µr²7p þHoŠ (®   (ÿ(ï (ð (4* (–  (—  s|(d+(e+{‹(f+-+.r¾7pþHoŠ (®   (ÿ(ð (4* (˜  (˜  (—  (—  s€s‚(e+{‹(g+-þ+,+Yr¾7pþHoŠ (®   (ÿrÎ7pþHoŠ (®   (ÿ(ð (ð (5*(¼ oà ,eoÄ ÐO(¸ oà , oÄ +(+,+3oÄ ÐJ(¸ oà , oÄ +(++9Û(¼ oÄ ÐO(¸ oà , oÄ +(+,rÞ7p+ræ7p ¥o:  (h+s’(i+{‹ [X(j+ (ÿ(3(æ(þþo“ o” Þu,oš &Ü&Ü*u9¾{Ž9Žo: (d+s”(i+{‹[X(j+rî7p(ÿ(3(æ(þþo“ o” Þu,oš &Ü&Ü*rö7p(ÿ(^3(**(Z((a,(¼ (+,(*(:(ÿ{,g o™   [  s–(š  Ži-+  þþ,* s˜ (Õ+(k+(2(æ(**(:(/*(:(0*tþ{9!þþr»2p(ÿ(d+!(l+()(@*t{;(m+(n+(1*t  (Á+- (¼ (²+9éøÿÿ{={< r°6p( ,[([+""(› "(œ ##(<(d+(o+(p+{‹Y(q+(ð (3*(:rÌp(ÿ*¢bMd±0 G‰ (r+s {Œsý   {Š(s+ŒÈ(>*0ËŠ9¿(»+:;(º+:J(G+:(Ä+:ï(Ã+:Ä(Á+:£(Â+:x(¿+:M(À+:"(½+:÷(¾+:Ì(E+:¡(F+:w(¹+-[(¼+-0oŠ Þ#t r8po¦ (® rŽ7p(® Þ*¥< r p(6(® r p(® *¥,rƒ5p*r5p*¥š þšoŠ r.8p(® *¥›þ›oŠ ró(p(® *¥;{‡(ž r48p(® *¥{‡(Ÿ r.p(® *¥:{‡(  r:8p(® *¥{‡(¡ r@8p(® *¥‘  {‡(¢ rD8p(® *¥H  {‡(£ *¥s  {‡(¤ rH8p(® *¥’  {‡(¥ rÁ4p(® *¥%  rL8p{‡(: rP8p(® *¥Ž(> , rT8p8¾(¦ , r\8p8ª(§ , rp8p8–{…(   þþ,{…( gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(¨   {‡(£ r‚8p(® +{…{‡(= r¡'p(® *¥[{…{‡(? (@ ,rT8p*(© ,r\8p*(ª ,rp8p*{…( g3s¤(4+, r‚8p(® **rˆ8p*¦ °#0{‰-*{‰s¦(%*0{†s¨(H(t+*0sª(H()*0‹(. (\(u+(I*0‹(. (\(u+(J*0(\(u+(J*0 sO*0( }È}É}Ê*0{È*0{É*0{Ê*0&*(« *0 RŒ(¬ (­ (ÿ r’8p(ÿ(è(r7p(ÿ(è((æ(*(® *0 i(¯ (° (ÿ r’8p(ÿ(è(, {‰ + r–8p(ÿr7p(ÿ(è((è(*0sY€ÐsY€Ñ*0( }Ï*0~Ñ*0 (^þ*0~Ð*0 (^þ*0{Ï*0-þ, (^3 * **0 ((_*0.Žþ,uÉ ,{Ï {Ï þ**þþ*0*(þ,þ,{Ï {Ï þ**þþ*0uÉ ,(b**:(ð }± *0-{± { þþ*V(² }Õ}Ö*0 1{Õ(¼ {Ö 4{Õ(ˆ þoÅ *²(³ }×}Ø}Ù}Ú}Û*0 *{×{Ø{Ù{Ú{Ûþ(<*:(´ }µ *0{µ Œ®þo¶ *:(· }¸ *0‘{¸ o¹ sº *:(» }¼ *0“{¼ o½ s¾ *:(´ }¿ *0{¿ Œ®þo¶ *:(· }À *0‘{À o¹ sÁ *:(» } *0“{ o½ sà *:(Ä }Å *0{Å (g þoÆ *²(³ }ã}ä}å}æ}ç*0 *{ã{ä{å{æ{çþ(<*²(Ç }è}é}ê}ë}ì*0 '{è{é{ê{ë{ì(@*r(È }í}î}ï*02{ï{îX3*{í(É ŒXsÊ (Ë *Ò(È }ð}ñ}ò}ó}ô}õ*0`-{ó{ñX {õþþ,+{ô{òX þþ,*{ð{õ(Ì ŒXsÊ (Ë *0L(Í }ö}÷}ø}ù}ú}û}ü}ý }þ*0 ^{ù{ø(d+{ú{û{ü{ý{þ(A{÷(e+{þ{ö{‹(f+(3*V(Î }ÿ}*0)-{{ÿX þþ,*Xsc (Ï *:(Ð }*0{þo¶ *:(Ñ }*0‘{o¹ s„*:(Ò }*0“{o½ s†*:(´ }Ó *0{Ó Œ®þo¶ *:(· }Ô *0‘{Ô o¹ sÕ *:(» }Ö *0“{Ö o½ s× *r(´ }Ø }Ù }Ú *0 ”{Ú rÞ7p( ,Œ®,++, þ®o¼ oà +,: þ®o¼ oÄ Ðf(¸ oà , oÄ +(++,s{Ø sˆ{Ù  þ®o¼ rš8poÛ Œ®o½  þ®o¼ rÊpoÛ Œ®o½ sÜ þ(v+*{Ø sÝ {Ù þ(w+*:(Þ } *0'{ o’ ,{ oR sß (à **:(Þ } *0'{ o’ ,{ oR sß (à **0 ( &*0¥oµ ¥oµ ( *ò(á } } }}}}}*0{•oµ { { {{{{oµ {(¼  4{(ˆ oÅ (<(„ Þ t  Þsâ *ai :(´ }ã *0{ã Œ®þo¶ *:(· }ä *0‘{ä o¹ så *:(» }æ *0“{æ o½ sç *r(è }é }ê }ë *0 ;–(f (g {é (:{ê sì {ë (x+sí *:(î }ï *0{ï Œ®(.*(ð *0(ñ ,*-þ*:(ò }*0{(G*:(ò }*0{(G*:(ò }*0{(G*0%o ,+o ,+o þ*0;(¬,1oà ,oà ,oÄ oÄ þoM **þoM **0~M*0~N*0~O*0~P*0N—(y,C( Ži12Ð#(¸ oà , oÄ +£š(oþ(­***0 s´€*0( }*0sË*0 (Áþ*0~*0 (Áþ*0sÉ*0 (Áþ*0sÇ*0 (Áþ*0sÄ*0 (Áþ*0sÂ*0 (Áþ*0{*0(´}%*0{%*0(´}&}'*0{&*0{'*0(´}(*0{(*0(´})*0{)*0(´}**0{**0( }+*0 {+{%*0( },*0 {,{&*0 {,{'*0( }-*0 {-{(*0( }.*0 {.{)*0( }/*0 {/{**0 sÙ€1*0( }0*0sõ*0 (èþ*0~1*0 (èþ*0sò*0 (èþ*0sï*0 (èþ*0sí*0 (èþ*0së*0 (èþ*0sé*0 (èþ*0{0*0(Ù}9*0{9*0(Ù}:*0{:*0(Ù};*0{;*0(Ù}<}=*0{<*0{=*0(Ù}>}?*0{>*0{?*0(Ù}@*0{@*0( }A*0 {A{9*0( }B*0 {B{:*0( }C*0 {C{;*0( }D*0 {D{<*0 {D{=*0( }E*0 {E{>*0 {E{?*0( }F*0 {F{@*0Ø™(, (‚,4(, (ƒ (, (› s (y+ (z+(Þ*(, (x9}(, (€ Œp,+ r.psà zŽi q  Y25£oµ o½ só ¤qXX3Ë(z+(â*(Ú*0œ›9(¼ (w,(Ž({+(æ*(z,(ä*(, (y,F(, (— (ô (õ (ps(y+ (n(z+(à*(*(Ú*0_#ŒÈ ,(*ÐÈ(¸ ÐÆ(¸ (­,r¾p(ö (à*Ð(¸ (­,(Ü*(Ú*(÷ *0oµ só *(÷ *0oµ só *0<œ u¯-u°-t®{v*t¯{y*t° {+Ä0<œ u¯-u°-t®{x*t¯{}*t° {+Ä0)( ( ,+( ( (ý*0 (ÿ*0 (ÿ*0 (ÿ*0 (ÿ*0 (ÿ*0~H*0Cu®,9t® {v,*{x,"{w u3 , rp( ***0(ä(*0~I*0~J*0~K*0~L*0 (û*0 (,*(,*þ(|+*0(è(*0(æ(*0(æ(*0(æ(*0s<þ(*0s>þ(*0s@þ(*08ž{ù ,. {ù {ú o” (æ(+Ê*0@ {ù ,2 {ù {ù - {ú *{ù {ú  ($*(*0 sB(%*0 sD(%*0 sF(%*0sH(%*0/r¢7p(ÿrVp(ÿ(è((è(*0r»2p(ÿ()(**0B¡{ù ,4 {ù {ù - {ú *{ù {ú sJ(}+*(*09¢,) {‰ r±2p(ÿoû (æ(*r¾p(ÿ*0Fr®p(ÿr7p(ÿ(~+()r¸p(ÿ(è((è(*0/r®p(ÿr¸p(ÿ(è((è(*0/r7p(ÿrž p(ÿ(è((è(*0‚£oü ,r<7p(ÿ(ï (ð *oý ,N {î ( {î (ž 0r<7p(ÿ(ï (ð * oû Y(+(ð *(ï *0§   (+*0sþ (€+*( *0(æ(*( *0(æ(*( *0(æ(*( *0(æ(*( *0(ä(*( *0(ä(*( *0(ä(*(ÿ *0r»2p(ÿ(è(*(ÿ *0r7p(ÿ(è(*(ÿ *0*:(ÿ }G*0{G(è(*( *0 þ(!*(ð *0*0Ärp(ÿ€Hs4€Is6€Js8€Ks:€LД(¸ €N(¯oà , (¯oÄ +(¯€MÐø(¸ €P(±oà , (±oÄ +(±€Orˆ8p(ÿ€Qr¢8p(ÿ€R*( *0*0 У(¸ *0~T*0~U*0~V*0~W*0H¨þ (To ,*(R%Œs¤( (To *0$©(T(B (V Þ (T(D &Ü*  0I¨þ (Uo ,*(S%Œ3¤o (Uoÿ *0$©(U(B (X Þ (U(D &Ü*  0!(W(K+*0!(W(K+*0j(W(K+*0 (W(K+*08ªþ (Uo ,*(Ú Œ£ (Uoÿ *0$©(U(B (^ Þ (U(D &Ü*  0 (Y(K+*0Ò¬ €d~d /(9r¯5ps} z¢  Y  2 (Ǥ¢ X X3é€esÀ€fsÀ€g(Q%Ðs(¸ ¤o €T(Qr¨8p%Ð3(¸ ¤o €Us €Vsþ €W*0-- !*]- Z[+áZ[(bZ*0%-*]- Z[+éZ[(cZ*0/  {bY 2{c£HbX X X3å*0 /**0 /**0*0 *0 ÿÿÿ*0 !*0 !ÿÿÿ*0 !ÿÿÿ*0 ÿÿÿ*0 ÿ*0*0 ÿÿÿ*0 ÿÿÿ*0 ÿÿ*0*00*0)-3+£H þþ,X*Y+×0-{c{bY(u (¬*0*0*0*0u­/+  /!(+s­ {c¤H(v*(+s­  +#{c (c[ ]¤HX 2Ù(v*0e®!/ !+ (+s­  +,{c!(b[!]i¤HX 2Ð(v*0I{b3 {c£H* {bY  0{c£H ZX Y Y3á*0~j*0~k*0L¯{bX (+s­  {bY 2${cX{c£H¤HX X3Ü*0d­{bY þþ,(~*{bY (+s­  {bY 2${c{cX£H¤HX X3Ü*0o-/i{b/{c£H+{b/{c£H+XX {c ÿÿÿ_¤HXd+’*05×{b{b(eX (+s­ ((v*0¼(<¬{b/{c£H+{b/{c£H+YX 12{c ÿÿÿ_¤HXd8ˆÿÿÿ X {c ÿÿÿ_¤HXdY8Lÿÿÿþþ*0;×{b{b(e (+s­ (ƒ,(z*(v*0 {bþ*0 {bþ*0{b3{c£Hþ**0&3*£H£H3 Y+Ý*0+{b{b3{c{c{bY(ˆ**0T(3*/+ Y£H /+ Y£H 3Y+´/**0K({bX{bX/*{bX{bX1*  {c{c{bXY(Š*083*£H£H3 Y+Ü£H£H/**0;{b{b/*{b{b1*{c{c{bY(Œ*0 (þ*0 (þ*0-( þþ*0-( þþ*0(3**0(3**0@°£HjX d !ÿÿÿ_i ¤H!1 X+Á*0]±{bX (+s­ j {bY 2+{c{c£HjZ(”X X3Õ(v*0D²(+s­ jjZ {c!ÿÿÿ_i¤H{cdi¤H(v*0F³!18{c£HjX {c!ÿÿÿ_i¤HdX+»*0™´{b X (+s­ j !Y2S{c£HjX{c£Hj ZX{c!ÿÿÿ_i¤HdXX3­(—(v*0èµ{b{bX (+s­ {c {c {c{bY?™ £Hj!  {bY   2P £Hj  £HjX ZX   !ÿÿÿ_i¤H d X  X   X3° (—XX@gÿÿÿ(v*0r¶{bþ {bþ ,+,{c£H{c£H(–*,{c£H(˜*,{c£H(˜*(™*0 z·(c[[ /(9r¯5ps} zH  Y 2   Z(c¤H X  X3à sÛ*0~l*0?X(œŽi/(œX£"{]þ+, X+Í(œ£"*00( (œ£"{] þþ, r´8ps" z(*0~m*0~n*0~o*0~p*0~q*0~r*0+--*(¡Y£H_ þþ,*Y+Õ0 - (¥*00{b-*{bYZ{c{bY£H(¦X*0¸{YXY [ [ .n{b/{c£H+ {b/{c£H+]Y _c_b`(Ÿ{Y£H_*{b/{c£H+ ] _c(Ÿ{Y£H_*0 J-{\3+þ,*(¨ ¤‘X{YX+¶00»{\(‚+ {bZ   (©*08¼  +£‘ þþ, +X Ži2ß{YZXXX*0 Œ¾{\3*2+%{c£‘j(££sZ(”X {YX 2XYsc + sc (% (À 8tÿÿÿ0 9¿(«[X (+s­   (¬(v*0IÀ(§(§X (ž (ª (ª {\{[ (ï(­(v*0*0ÐÁ{b {b (e >©[ {b(f{cs­ (€ {b(f{cs­ (€(ƒ+(‚(‚(ƒ+ (ƒ+   (‚(„    ((‚((‚*(š*0sÜ(°*0~s*0~t*0~u*0d-{b{bX (²/+{b(³þ,+{b(³þ,(š*(´/(®*sÞ(°*0Â{c {bY {c {bY j£HjZ!1+ þ9¼1 r$9ps" z!ÿÿÿ_i  d X£H   þþ,XX£HY¤H+,XX£H YX¤H!X /X£HjZX+X8(ÿÿÿ(v *0 Ã{c {bY {c {bY j£HjZ!1+ þ9µ1 r$9ps" z!ÿÿÿ_i  d X£HY/XX£HX¤H+,X X£HYY¤H!X /X£HjZX+X8/ÿÿÿ(v *0ÅÄ{c {c -F3£H£H[8|£Hj!ZY£HjX£Hj[i+PX3£H£HX[+4£Hj!ZY£HjX£Hj!X[i -(‹ þþ,***0(({bY {bY X/*(¸*0ÑÅ{b{c(„+s­ {bY{bYYXX (+s­ {bY {bY  Y-f(¹1(¶(}(·+Í-þ+- X3 Y+©YY +œ8–ÿÿÿ(v(vs *07{b-s z{bY{bY/ (~s *(º*0(»(Ú *0(»(Ù *0%Æ(~(‰,*(» (Ù +Û0(3(¾*(¾*0~v*07-*]-(µ[+â(µ(µ[+É0(}(Á*0UÇ{b-*(À(» (Ù (Ú {b-(µ+Â(µ(µ+«0(}(Ã*04{b3*{c£HlZXZX+Ì0'È l   ##ð?(Å*0(z*0({*0i({bEsÛ z*{c£H*{c£H {c£H  ÿ1sÛ z ÿÿÿ_ ÿ_bX*0À{bEMsÛ z!*{c£Hj*{c£H {c£H  ÿÿÿ_j ÿÿÿ_jbX*{c£H {c£H {c£H  ÿÿ1sÛ z ÿÿÿ_j ÿÿÿ_jbX ÿÿ_j0bX*0<{bY1s ( *s ( X(µ+Ä0ÛÊ{ ,l { ( { (» (Ù  (Ú , {bþ+,+§(…+8Œÿÿÿ(|,þ+,*ŒH,4uF,  (ˆ ¥Jo‰ +  oŠ +rp(+ *0HÌ{bY  (  (z(Ë (* (†+ { -rüp* ('+(7 *0[<3*( i0iY 0  þþ+,%(µ(z(‚X+°r2psÜ z0@Í( ( ,r©9prÃ9ps} z (z   (z(Î*0-{b þþ*0{b/ {c£H**0FÎ(‰,*(‚ (z (»(Ú (Ò(}(‚(Ò(µ*0 (}(Ò*0{Y*0{Z*0{[*0{\*0{]*0{^*0{_*0<( }Y}Z}[}\}]}^}_*( *0 (±*( *0 (µ*0%-*]- Z[+éZ[(àZ*0~`*0~a*0~b*0~c*0~d*0~e*0~f*0*0 Ï3£‘¤‘*[ nnZ!x^m X Z(éZX(é Y?¢X£‘X£‘X   nnZ!x^mX x^¤‘X   nnZ!x^m xXY x^¤‘ nnZ!x^m XX@^ÿÿÿ*0 §Ð(ç!Y(ù (ç!Y(ù (‚+  (é Œ|,+ r.psà zŽi‘ Y2/ £‘ nnZ!x^m¤‘XX3Ñ *0*0~g*0~h*0" £‘ £‘ nnZ!x^m*0 ¡Ñ(â(åY(à(ø (‚+ (é (‚+  (é /(9r¯5ps} z‘ Y2 (XX3á (ê*0*0*0~i*0 x*0 !x*0*0*0*0Ní-*]-nnZ!x^m[+ÜnnZ!x^m[(ø nnZ!x^m*0fí-*!]-!nnZ!x^m![+ÌnnZ!x^m![(ù nnZ!x^m*0 "-!x AzBs €`(á( €a(á( €b(á( €c(á( €d(á( €e(ã€fH€h +(í(à¤HX 2å(í€g ð x^€i(z€j(z€k "%  (›¤"%  (›¤"%  (›¤"% @ (›¤"%  P(›¤"%  (›¤"%  (›¤"% @ (›¤"%   (›¤"%    ((›¤"%    (›¤"%  @ (›¤"%   Ð(›¤"€lH€n +( (cY¤HX 2ã( €mH€p +(¢(c¤HX 2å(¢€os€r +(¤!(b¤sX 2Ý(¤€q ú[€s }[€t(œ£"{][€u(z€v*0} ( &*0({ { {È Œ®¥n( }È *0({ { {È Œ®¥n( }È *0} } ( &*0{ { þo *0}! ( &*0({! {! {Í Œ®¥n( }Í *0({! {! {Í Œ®¥n( }Í *03Ós" Ю(¸ ~Ò (# (¢+ o$ s% *0}& ( *0{& þoÌ *0}' }( ( &*0{' (‡+{( þo) *0}* ( &*0${* {* (+ ( ¥ð(, *0${* {* (+ ( ¥ð(, *0(Ôs- þ. s/ (‡+o0 s1 *0*0%o ,+o ,+o þ*0;( ,1oà ,oà ,oÄ oÄ þoM **þoM **0~—*0~˜*0~™*0~š*0 *0 *0 *0*0SÕŒ‚,+ r.psà zŽi   Y  2%  £3 `oN ¤ X X3Û*0"÷ `oN , s[(2 **0\Ö,þ, Žiþ+,*þ, Žiþ+,£ (ˆ+(3 *(^rË9p(ü oý sE z0^y,þ, Žiþ+, r:ps" zþ, Žiþ+, £(ˆ+*(^rË9p(ü oý sE z05Ú Ð%(¸ o´ ( , {4 (Q_þ**02ÛÐ%(¸ o´ ( , {4 (Q(5 **0ÅÜoµ І(¸ (-ÐÆ(¸ (þ+9x( 1( rE:p( +,( Y YX( +@( 1( rO:p( +,( Y YX( ++ (Rs6 (7 *0ÁàrW:po8 9˜s] s_ `o9 (‰+  (Š+ Œ‰,+ r.psà zŽi‡Y2:£#o: ¥Hoµ s6 ¤‡XX3Æ*sa`oG (‹+*0Eá( sc(Œ+ Ži3*o8 ,o; ,o/ þo¹ ***0LãÐÆ(¸ (,se*І(¸ (,sg*( ¥Š(+ si*0qæÐÆ(¸ (,+І(¸ (,*( ,9 {< _3' _  þþ, _þþ****0 (!,*o: ,+â*0 ¾ ("*0 (!,*o: ,+â*0 ¾ ($*0ùèÐÆ(¸ (,AE ra:ps" z3(*3%rÊp¤3(*І(¸ (,ME ra:ps" z3(*3%r:p¤3%r™:p¤3(*( ,3sk smso `o™ (Ž+(Ž+ (+**0é(& sq*0^ìÐÆ(¸ (,ss*( Ži þþ,su*r£:p( -sw* {= sy*0*÷r£:p `oN ,*r«:p`þoÎ *0é(& Žiþ*0”í( o (*,rE:p(® +9І(¸ (,+ÐÆ(¸ (,+ rO:p(® `oÎ ,*(^r¹:p(ü oý (À sE z0î(+ s{*0‰sŒ,+ rvpsà z(!-h `(!,.o¿ (^rù:p(ü oý (À rvps} zo¿ (^r;p(ü oý (À rvps} z*0~›*0~œ*0~*0~ž*0~Ÿ*0~ *0~¡*0~¢*0~£*0~¤*0~¥*0~¦*0~§*0~¨*0~©*0~ª*0~«*0Š(/(,+ (1(,+ (3(,+ (5(,+ (7(,+ (9(,+ (;(,*(=þ(*0*0*0OïŽi YEÄÒàîü ?š  +  X£¤ X X2æ ŽiY YXY2!X£¤XX3ß (B(=%¤(û+þo¹ *(^r7;p(ü oý   rm.ps} z(/þo¹ *(1þo¹ *(3þo¹ *(5þo¹ *(7þo¹ *(9þo¹ *(;þo¹ *0Žð(?-.o¿ (^rPp(ü oý (À rÖps} zo/ Ži3G+X£¤XX2à £ (C(û+**0 s}(+*0òo> (D `Œp,+ r.psà zŽi  Y2# £o2 ¤XX3Ý oS Œl,+ rÖpsà z*0š(E s*0MóŒp,+ r.psà zŽi   Y  2  £o½ ¤ X X3á*0Aõo/  o™ (D s Ži/*£ (Hsƒ*00÷o/ (F Ži/*£ (I  s…*02øo/ (E Ži/s? *£( s? *0AŽi þþ,*rlpo¿ þHoŠ (ç r–ps} z£*0}ù/*rlpo¿ þHoŠ (ç r–ps} z o™ (D /(Ks@ *o/ (K£YsA (B s@ *0]úÐz(¸ (-.o¿ (^rÞp(ü oý (À rÖps} zo/ ££sC *0û( , {< _þ**0&Ðz(¸ (,*o: ,+Ü*0Xæ( ,K {< _3+ _  þþ, _þþ++, (?þ***0)üs‡ s‰ `o™ (Ž+ (+*0é(Q s‹*0Œò(Q `Œp,+ r.psà zŽi  Y2# £o2 ¤XX3Ý oS Œl,+ rÖpsà z*0š(S s*0Fæ( ,9 {< _3' _  þþ, _þþ****0&Ðz(¸ (,*o: ,+Ü*05(U, þo: *(#,(%*(O,(V**0ss(U-h `(U,.o¿ (^r[;p(ü oý (À rŠps} zo¿ (^r…;p(ü oý (À rŠps} z*0}sŒ,+sà z(P-` `(P,*o¿ (^r«;p(ü oý (À s} zo¿ (^rÏ;p(ü oý (À s} z*0FsŒ,+sà z(?-*o¿ (^rPp(ü oý (À s} z*V(Y }€}*0 { {€`þoD *(E *0&(o: ¥H o: ¥H /*þ*(F *0o? , þoG **:(H }‚*0EÚ Ð%(¸ o´ ( ,& {4 (Q_3{‚ (***:(I }ƒ*0!(J (K {ƒ3(Ô **( *0<hE"((^rí;p(ü oý r<ps} zr¾p*r±2p*( *0<hE"((^rí;p(ü oý r<ps} zrº6p*r°6p*:( }„*0{„(L *(M *0Hý Ð%(¸ o´ ((R  Ð%(¸ o´ ((R /*þ*:(š }…*0'þ Ð%(¸ o´ ((S{…þ*(š *0(*V(N }†}‡*0 dó{‡Œp,+ r.psà z{‡Ži   Y  2, {‡ £{†oD ¤ X X3Ô*(O *0,**(O *0*V(O }ˆ}‰*0 Jî{ˆr«:p{‰`%{ˆ¤oK %¤o ¥H*:(O }Š*0{ŠoP ¥H*V(Q }‹}Œ*0 {Œ {‹`þoR *(S *0 þoµ *V(Q }}Ž*0 {Ž {`þoT *:(N }*0{(G*V(N }}‘*0 Nÿ{(G {‘£o¾   +  X£¤ X X2æ( +*V(Q }’}“*0 ž{“ŽiY YX  Y2 X£¤XX3à o» {’  + X£¤X X2æ %¤( +þo» *(M *0Hý Ð%(¸ o´ ((R  Ð%(¸ o´ ((R /*þ*(š *0(*:(N }”*0 \ó{”Œp,+ r.psà z{”Ži   Y  2$ {” £o½ ¤ X X3Ü*V(Q }•}–*0 {– {•`þoT *01h,*,(¼ *(^r <p(ü oý rŠps} z0Д(¸ €˜(oà , (oÄ +(€—Ðø(¸ €š(oà , (oÄ +(€™€›Ð(¸ €(0oà , (0oÄ +(0€œÐP(¸ €Ÿ(2oà , (2oÄ +(2€žБ(¸ €¡(4oà , (4oÄ +(4€ Ð’(¸ €£(6oà , (6oÄ +(6€¢Г(¸ €¥(8oà , (8oÄ +(8€¤Д(¸ €§(:oà , (:oÄ +(:€¦Е(¸ €©(<oà , (<oÄ +(<€¨Ж(¸ €«(>oà , (>oÄ +(>€ª*(ª *0,**:(U }­*0{­sm*:(V }W *0{W Œ®oP (‘+*:(Y }¯*0{¯þo½ *0 {X þ*0{Y {X (’+*0 (Z *0 ~[ (Z *0 (\ *0 (] *0(^ *0 (_ *0(` *0{X þ(“+*0~[ *0{X þ(”+*0{X þ(•+*0 (a *0 (b *0{X þ(–+*0{X þ(—+*0 (˜+*0{X (™+*0 ¥Us˜ *0(d *0 {X (š+*0 {X (›+*0¥U*0s˜ *0 (e *0{Y {X {X þ(œ+*0{Y {X {X þ(œ+*0{Y {X {X þ(+*0{Y {X {X þ(+*0 {X (ž+*0 {X (Ÿ+*0# u—- u˜-**t˜{f *0*04- -(g *( + ( + /+ X(h *0r( + ( + X>¥u˜9t˜ {i {j {k ( +X1Su˜,?t˜{i {j {k  (¡+  (¡+(¡+*r1<ps" z(¡+ (¡+*r1<ps" zX>£u˜9t˜ {i {j {k  ( +X1R u˜,? t˜{i {j {k  (¡+ (¡+(¡+*r1<ps" z (¡+(¡+*r1<ps" z(¡+*0¥u—-Y9‹t˜ {i {j {k  ol /(¢+ (£+*-* (¢+(£+*t—{m  ol / (h *-*(h *(g *00  u—- u˜-R (¢+*t—   ," u—-$ {m (¢+(¢+* (¢+* {m +Út˜   u—-  u˜-$ +Ìt—  {m (¢+(¢+*t˜{i {j  {i  {j {k {k {f  {f   X /(¤+(£+* X /(¤+(£+*(¡+*0   u—:® 9åt˜ {i {j {k  ol /5(¥+(n (o (p  (¤+sq *- sq *(¥+(n (o (p  (¤+sq *t—  {m  ol / sq *- sq *sq *sq *0† u—-u˜- rE<ps" zt— {m sr *t˜ {i {j {k  - sr * (¦+(s (t (¡+sr *0µ u—- u˜-!*t— {m ol -**t˜ {i  {j  {k ol /(§+(£+*---*-*(¦+(t (s (¡+*(§+(£+*0vu—-L,dt˜ {i {j {k  ol / +¹-*+¨t—{m  ol þ**0] u—-9,Lt˜ {i {j {k (“+ oK &+»t—{m oK &**0 a u—-:,Ot˜ {i {j {k  (—+(¨++ºt—{m þ(¨+**0eu->,Stž {u {v {w (©+ (ª++¶t{x þ(ª+**0h u—-A,Vt˜ {i {j {k  oy , (”++,+µ*t—{m þoy **0h u—-A,Vt˜ {i {j {k  oy ,+(•+,*+³t—{m þoy **0sz þ(”+*0"s{ (”+,s| þ(•+**0 ƒu—-Q,qt˜ {i {j {k  oy ,  (¢++(«++£t—{m  oy ,  (¢+***0 _ u—-:,Mt˜ {i {j {k  (§+(¬++ºt—{m (§+**07 u—-',(t˜ {i {j X(™++ÏX**0T9u—:t˜ 9Êu—:Ât˜ {i {j {i {j {k {k {f {f   1:(¥+  (n   (o   (­+ (­+(¤+*(¥+  (n   (o    (­+ (­+(¤+* *t—   {m (¢+* *t— ,u—-  {m (¢+* +¬  {m +å0…u—-R,st˜ {i {j {k (®+ (’+,  (¢+++¢t—{m  (’+,  (¢+***0*oy ,(¢+s} *(¢+s} *0 ™s} u—-h,~t˜ {i {j {k (¯+ (~ ( (°+(~ ( 8ƒÿÿÿt—{m (°+**0` u—-/,It˜ {i {j {k s€ ( *t—{m s€ ( *(‚ *0”(±+ u¦, þoƒ *t¨{„ (… t¨{„ († t¨{„ (‡  ol / sˆ +-(²+þoƒ *8lÿÿÿ0s‰ þ(³+*0”(±+ u¦, þoƒ *t¨{„ (… t¨{„ († t¨{„ (‡  ol 1 sŠ +-(´+þoƒ *8lÿÿÿ0s‹ þ(µ+*05 u—-,&t˜ {j {k +Ùt—{m **0Hu—-',6t˜ {j {k (¶+( *t— {m ( **05 u—-,&t˜ {i {k +Ùt—{m **0Hu—-',6t˜ {i {k (·+( *t— {m ( **03(²+ -!(^r“<p(ü oý r@8ps} z{‰ *03(´+ -!(^r“<p(ü oý r@8ps} z{‰ *0„{Œ ,v { u—-u˜-{Œ +Ï*{ t˜ {Œ {i {j {k (g (Ž (Ž (Ž 8‚ÿÿÿ( *0( (Ž (¸+s *0(^r¿<p(ü oý sE z0(^rë<p(ü oý sE z0Q{‘ ,B{’ {Œ -(¹+* { u—,{ t—{m *r!=ps" z(º+*0t{‘ ,Q{’ {Œ -* { u—,&{Œ (¸+(“ {’ {Œ þþ*r¡=ps" z(” {’ {Œ þþ*0!(»+s• s– *0 i"{Œ 9R {Œ 9C {   u—:Ñ u˜: { u—-#u˜-W{Œ {Œ  +’{ t—{Œ {m (g (Ž (Ž 8Uÿÿÿ{ t˜{Œ {i {j {k (h (Ž (Ž 8ÿÿÿ{ t—{ u—-<u˜:~{Œ {m (g (Ž (Ž 8§þÿÿ{ t— {Œ {Œ {m  {m   ol   , * 8Yþÿÿ{ t˜{j -a{Œ {Œ {m {i {k  {j  ol   , * (Ž (Ž 8âýÿÿ{Œ {i {j {k 8•þÿÿ{ t˜{j :f{ u—-Su˜:«{Œ {i {j {k (h (Ž (Ž 8>ýÿÿ{ t—{Œ {Œ {i {k {m   ol   , * (Ž (Ž 8Úüÿÿ{ t˜  {j -a{Œ {Œ {i {k  {i  {k   ol   , * (Ž (Ž 8cüÿÿ{Œ  {i  {j  {k 8ýÿÿ{ u—-0u˜-I{Œ {i {j {k 8˜þÿÿ{ t—{Œ {m 8düÿÿ{ t˜ {Œ  {i  {j  {k 8üÿÿ*{Œ ,**0---**-*( (Ž ( (Ž (¼+*0Y u—-5,Gt˜ {i {j {k  (½+(é +¿t—{m (é **0 (ê (½+*0#sý s— þ(“+*0$(™+ (¾+ (¿+*0"o’ ,o˜ (¢++à*0+&oÿ (À+ Þu , oš &Ü&Ü* 0s™ (Á+*V(ð }š }› *0{š {› (í+*V(ð }œ } *0{œ { (í+*V(ð }ž }Ÿ *0{ž {Ÿ (í+þ*V(  }¡ }¢ *0-{¡ {¢ (k þo£ **(  *0*V(  }¤ }¥ *0-{¤ {¥ (k þo£ **(  *0*0{¦ *0{§ *0}¦ *0}§ *0( }¦ }§ *0}¨ }© ( &*0{© {ª (Â+Œ®*0{© {ª (Ã+*0{© {¨ (Ä+(« *0*0{© {ª (Â+*V(3 }¬ }­ *02{¬ {­ { ¤®{­ {­ { X(½ *:(® }¯ *0{¯ (ê+*:(° }± *0{± þ(Å+*V(³ }´ }µ *0{µ {´ o× (Æ+*(¶ *0 (· *(¶ *0 (¸ *0 {¹ þ*0 (º *0{» {¹ (Ç+*0{» {¹ (È+*0 (¼ *0{» {¹ (É+*0{¹ þ(Ê+*0{¹ þ(Ë+*0({¹ (Ë+ ,{½ *s¾ z0{¹ þ(Ì+*0 (¿ *0 (À *0{¹ þ(Í+*0{» {¹ (Î+sÁ *0( {¹ þ(Ï+*0(à {¹ þ(Ð+*0sÄ ¥Æ(Ñ+*0sÅ (Ò+(Ó+*0sÆ (Ò+(Ô+*0(Ç *0(È *0²(ò+ (Õ+sÉ *0 {¹ (Ö+*0 {¹ (×+*0~Ê *(Ë *0(r (s st *:(Ì }Í *0'–(f (g {Í (Ø+,(k **:(Ì }Î *0'–(f (g {Î (Ø+,(k **0#* uË- uÌ-**tÌ{Ï *06- - (Ð *(Ù+ (Ù+ /+ X(Ñ *0 §,(Ù+ (Ù+ X>¾uÌ9¨tÌ {Ò {Ó {Ô {Õ (Ù+X1auÌ,MtÌ{Ò {Ó  {Ô  {Õ   (Ú+   (Ú+(Ú+*r1<ps" z(Ú+ (Ú+*r1<ps" zX>¾uÌ9¨tÌ {Ò {Ó {Ô {Õ (Ù+X1auÌ,MtÌ{Ò {Ó  {Ô  {Õ    (Ú+  (Ú+(Ú+*r1<ps" z (Ú+(Ú+*r1<ps" z(Ú+*0>- uË- uÌ-*X*tÌ {Ó {Ô X(Û++Â0 Ñ/uË-uÌ-E(Ð *tË {Ö ol / (Ñ *-(Ð *(Ñ *tÌ {Ò  {Ó  {Ô  {Õ {Ï ol /(Ü+(Ý+*- (Ñ *(Ü+(Ý+*0Ÿ0uË-uÌ-0s¾ ztË {× {Ö ol -*s¾ ztÌ{Ò {Ó {Ô {Õ ol /8uÿÿÿ -*8aÿÿÿ0¡0uË- uÌ--*tË {× {Ö ol -(Ø **tÌ{Ò {Ó {Ô {Õ ol /8xÿÿÿ -(Ø *8_ÿÿÿ0/(Þ+,(Ü+sÙ *(Ü+sÙ *0 ®2sÙ   uË-  uÌ-!*tË {Ö {× (ß+*tÌ {Ò {Ó {Ô {Õ (à+ (Ú (Û (ß+(Ú (Û 8Rÿÿÿ0(Þ+, (Ü+**0 3uË- uÌ-*tË {Ö {× (á+*tÌ {Ò {Ó {Ô {Õ (â+ (á+8ÿÿÿ0£5  uË- uÌ-&rE<ps" ztË {Ö {× sÜ *tÌ {Ò {Ó {Ô {Õ -  sÜ *(ã+(Ý (Þ (ß  (Ú+sÜ *0È6uË- uÌ-!*tË {Ö ol -**tÌ {Ò  {Ó  {Ô  {Õ ol /(ä+(Ý+*-4-*-*(ã+(ß (Ý (Þ (Ú+*(ä+(Ý+*0~7uË- uÌ-*tË {Ö ol þ*tÌ {Ó {Ô {Õ ol / +–-* 8‚ÿÿÿ0r8uË- uÌ-*tË {Ö {× (å+&*tÌ {Ò {Ó {Ô {Õ (Ê+(å+& +Ž0‡9uË- uÌ-*tË {Ö {× þ(æ+*tÌ {Ò {Ó {Ô {Õ (Ë+-(æ+-  8ÿÿÿ**0€8uË- uÌ-*tË {Ö {× þ(Þ+*tÌ {Ò {Ó {Ô {Õ (Ì+,+ (Þ+,* 8€ÿÿÿ0€8uË- uÌ-*tË {Ö {× þ(Þ+*tÌ {Ò {Ó {Ô {Õ (Í+, (Þ++,  8‚ÿÿÿ*0Š?uÑ- uÒ-$*tÑ {à {á o  (â *tÒ {ã {ä {å {æ {ç (ç+o   (ç+(è *0ŽAuË- uÌ-'*tË {× {Ö (¶+(é *tÌ {Ò {Ó  {Ô  {Õ {Ï (Î+(¶+(Î+(ê *0BuË- uÌ-$*tË {× {Ö þoë *tÌ {Ò {Ó  {Ô  {Õ (Ð+oë 8ÿÿÿ0FuÕ- uÖ-$*tÕ {ì {í þoî *tÖ {ï {ð  {ñ  {ò (è+oî 8ÿÿÿ0G  uË-  uÌ-P*tË {× {Ö ol ol  0 þþ+, þ(é+**tÌ{Ò {Ó {Ô {Õ ol ol  /(ê++ 0 þþ+, (é++ / 8þþÿÿ *0%H   ol 3*þ(ê+*0IuË- uÌ-&*tË {× {Ö s? (ó *tÌ {Ò {Ó  {Ô  {Õ s? (ë+(ó 8ÿÿÿ0 (ô (ë+*0 (Ö+(ì+*0sõ (í+*03Jo’ ,(oœ ( (ž (Ü++Ï*05K  +&£ ( (ž  (Ü+ X Ži2Ô*0[MuÙ ,  (Õ+*u= ,   (î+*o› (ï+Þu, oš &Ü&Ü*1 >0#sý sö þ(Ê+*0‘O{÷ 9€ {ø uË-uÌ-{÷ +Ì*{ø tÌ {Ò {÷ {Ó {Ô {Õ  (Ð (ù (ù (ù 8uÿÿÿ(ú *0(ú (ù (ð+sû *0(^r¿<p(ü oý sE z0(^rë<p(ü oý sE z0bP{ü ,S{ý {÷ -(ñ+* {ø uË,${ø tË {× {Ö  sþ *r$>ps" z(ò+*0tQ{ü ,Q{ý {÷ -* {ø uË,&{÷ (ð+(ÿ {ý {÷ þþ*r¤>ps" z( {ý {÷ þþ*0S(ó+s s *:( } *0–(f (g { (Ç+*V( } } *08{ { { sh ¤Ä{ { { X(½ *0{ *0{ *0} *0} *0( } } *0} } ( &*0{ { (ô+ŒÄ*0{ { (õ+*0{ { (ö+( *0*0{ { (ô+*0)U (= (> s? (ž ( s? *( *0 (r *:( } *0s { ¥q(÷+*( *0 (s *:( } *0s { ¥ç(ø+*:( } *0?V{ {a (r (r o ,*(s (s þ(ù+*( *0(r Œ®(s Œ`s *0 (˜ *0 (˜ *0 (˜ *0 (˜ *0£h/!(^rp(ü oý r'?ps} z/!(^rp(ü oý r-?ps} z/!(^rp(ü oý r3?ps} z/!(^rp(ü oý r9?ps} zs *0X(ú+  Ú 2jÚ 2TÚ29Ú2( XX3ãXX3ÇX X3¬X X3–*0 “X(ú+  Ú ?yÚ 2`Ú2EÚ2)(û+( XX3×XX3»X X3 X X@‡ÿÿÿ*0 ( *0( *0 (˜ *0 (˜ *0 (˜ *0 ( *0 ( *0|h/!(^rp(ü oý r'?ps} z/!(^rp(ü oý r-?ps} z/!(^rp(ü oý r3?ps} zs *0aZ(ü+  Ú 2KÚ 25Ú2( XX3æX X3ËX X3µ*0 kZ(ü+  Ú 2UÚ 2?Ú2$(ý+( XX3ÜX X3ÁX X3«*0”¸Œê,+ r.psà z(˜ (˜ (˜ Ú 2XÚ2=Ú2!( oK &XX3ßXX3ÃX X3¨*0 ¬\Œê,+ r.psà z(˜ (˜ (˜ (þ+ Ú2dÚ2H Ú 2,   ( o  (!  X  X3ÔXX3¸XX3œ *0 š¸Œê,+ r.psà z(˜ (˜ (˜ Ú 2^Ú2CÚ2'( (ÿ+&XX3ÙXX3½X X3¢*0²\Œê,+ r.psà z(˜ (˜ (˜ (þ+ Ú2jÚ2N Ú 22    ( (+(!  X  X3ÎXX3²XX3– *0Ži*0I]/(9r¯5ps} (+&+È  Y 2o" ¤ÈX X3è*0.h/!(^rp(ü oý r¯5ps} zÈ*0L^/!(^rp(ü oý r¯5ps} zÈ  Ú  2 ¤È X X3î*0ŒQ,+ r.psà zŽiþ*0È*0hŒQ,+ r??psà zŒQ,+ rŒpsà z/!(^rp(ü oý rM?ps} z/!(^rp(ü oý r¯5ps} z/!(^rp(ü oý re?ps} zXŽi1!(^rí;p(ü oý r¯5ps} zXŽi1!(^rí;p(ü oý r¯5ps} z( *0'-Ži þþ,*X£QŽiX+Ù00vŽi/(£Q Ži ( XX+Ñ*0_(+È (+*06aŒí,+ r}?psà zuî ,  (+*(+(+*0QcŒQ,+ r.psà zŽi ï  Y  2  £Èo# ¤ï X X3â(+*0TdŒQ,+ r‹?psà zŒQ,+ r™?psà zŽi Ži XÈ ( ( *0#ŒQ,+ r.psà zoŠ ¥Q*0ŒQ,+ r.psà z(+*0Œº,+ r§?psà z(+*0DŒQ,+r.psà (+&Ži  Y 2£ÈoK &X X3è*0ReŒQ,+r.psà (+&Ži S  Y  2  £Èo  ¤S X X3â*0˜gŒQ,+ r‹?psà zŒï,+ r™?psà z($ Ži Ži þþ,!(^rËp(ü oý r™?ps} zY 2$£È£So% &XX3Ü*0ªjŒQ,+ r‹?psà zŒï,+ r™?psà z(& Ži Ži þþ,!(^rËp(ü oý r™?ps} z(Y 2,£È£So' ¤(XX3Ô*0 ¬lŒQ,+ r‹?psà zŒï,+ r™?psà z(( Ži Ži þþ,!(^rËp(ü oý r™?ps} z(Y 2.£È£So) ¤(XX3Ò*0FnŒQ,+ r.psà z(* Ži  Y  2  £Èo+ & X X3ç*0špŒQ,+ r‹?psà zŒï,+ r™?psà z(, Ži Ži þþ,!(^rËp(ü oý r™?ps} zY 2&£È£So- &XX3Ú*0\rŒQ,+ r.psà z(. Ži S Y 2%£Èo/ ¤SX X3Û*0(/!£Èoy ,*X+Û*0+tŒQ,+ r.psà zŽi    ( +*06/.£È£So0 ,*X+Í*0}vŒQ,+ r‹?psà zŒï,+ r™?psà z(1 Ži Ži þþ,!(^rËp(ü oý r™?ps} z ( +*0(2*£Èoy ,X+Û*0+tŒQ,+ r.psà zŽi    ( +*062*£È£So0 ,X+Í*0}vŒQ,+ r‹?psà zŒï,+ r™?psà z(1 Ži Ži þþ,!(^rËp(ü oý r™?ps} z ( +*0MxŽi þþ,(^r±?p(ü oý s2 z£Èo3 ,{4 *X+³0$zŒQ,+ r.psà z  ( +*00xŽi þþ,*£Èo3 - X+Ò*0$zŒQ,+ r.psà z  (+*0U|ŒQ,+ r.psà zs5  +'£Èo3 ,  {4 o6 +X Ži2Ó(7 *0N~ŒQ,+ r.psà zs8  + £È oy , o9 +X Ži2Ú(: *0fŒQ,+ r.psà zs8 s8  +'£È  oy ,  o9 + o9 X Ži2Ó(: (: s; *0L-Ži þþ,(^r±?p(ü oý s2 z£Èoy ,£È*X+´0$€ŒQ,+ r.psà z  (+*09-Ži þþ,*£Èoy , £È( *X+Ç0$€ŒQ,+ r.psà z  (+*0§ŒQ,+ r‹?psà zŒï,+ r™?psà zŽi Ži þþ,!(^rËp(ü oý r™?ps} z Y 22£È£S s? ¤XX3Î *0øƒŒQ,+ r‹?psà zŒï,+ r™?psà zŒü,+ rÝ?psà zŽi Ži þþ,!(^rËp(ü oý r™?ps} zŽi þþ,!(^rËp(ü oý rÝ?ps} zý Y 2>£È£S£( s< ¤ýXX3 *0z„ŒÙ,+ r.psà zŽi È S Y 2=£( (ž ¤È¤SX X3Ãs= *0˜†Œÿ,+ r.psà zŽi È S ( Y2Q£ý(> (? (@   ¤È¤S ¤(XX3¯ sA *0J‡ŒQ,+ r.psà zŽi È  Y  2 YY £È¤È X X3ä*0O‰ŒQ,+ r.psà z(B  Ži Y 2£ÈoC X X3ã*0O‹ŒQ,+ r.psà z(D  Ži Y 0£ÈoE Y Y3ã*0žŒQ,+ r‹?psà zŒï,+ r™?psà z(à  Ži Ži  þþ,#(^rËp(ü oý r™?ps} zY 0%£È£Soë Y Y3Û*0žŒQ,+ r‹?psà zŒï,+ r™?psà z(  Ži Ži  þþ,#(^rËp(ü oý r™?ps} zY 2%£È£SoF X X3Û*0DŒQ,+ r.psà z(D     0 £ÈoE Y Y3ç*0b‘ŒQ,+ r.psà z(D  XY(+  0(£ÈoE Y¤SY Y3Ø*0d“Œï,+ r.psà z(G  XY(+  2*£SoH YX¤ÈX X3Ö*0(-ŒQ,+ r.psà zŽi Y(+*0(-ŒQ,+ r.psà zŽi Y(+*0h•ŒQ,+ r.psà zŽi -(8r.ps} z(I £È Y 2£ÈoJ X X3ã*0 C-ŒQ,+ r.psà zŽi -(8r.ps} zYY£È(+*0j–ŒQ,+ r.psà zŽi /*39£È£È(+ 1£È £È¤È¤È**(+(+*0 ŒQ,+ r.psà z(+*0ŒQ,+ r.psà z(+*0(_ŒQ,+ r.psà z(+ (+*0(_ŒQ,+ r.psà z(+ (+*0'_ŒQ,+ r.psà z(+ (+*0ŒQ,+ r.psà z(+*0ŒU,+ r??psà z(K+*0@2(^r±?p(ü oý s2 z£Èoy ,*X+À0+tŒQ,+ r.psà zŽi    ( +*0-2*£Èoy ,(× *X+Ó0+tŒQ,+ r.psà zŽi    (!+*0ŒQ,+ r.psà z("+*0E—ŒQ,+r.psà (+&(#+  + £È  ($+ X Ži2ä*0K˜ŒQ,+r.psà (+&(%+  + £Èo   (&+ X Ži2Þ*0l—ŒQ,+r.psà (+&Ži-(8r.ps} (+&+£È  +£È   ('+, +X Ži2Ý*0ƒ™ŒQ,+r.psà (+&Ži-(8r.ps} (+&+£È o   +,£È  o  ((+, +X Ži2Î*0l—ŒQ,+r.psà (+&Ži-(8r.ps} (+&+£È  +£È   ()+, +X Ži2Ý*0ƒ™ŒQ,+r.psà (+&Ži-(8r.ps} (+&+£È o   +,£È  o  (*+, +X Ži2Î*0Á›ŒQ,+r.psà (+&¥U ŒU,+r??psà (+&oÿ (#+ o’ , o˜ ($+ X+Ú-(7r??ps} (+&+ (++ Þu, oš &Ü&Ü*G_¦0ÇœŒQ,+r.psà (+&¥U ŒU,+r??psà (+&oÿ (%+ o’ ,$ o˜ o  (&+ X+Ô-(7r??ps} (+&+ (,+ Þu, oš &Ü&Ü*Ge¬0º^ŒQ,+ r.psà z/!(^rp(ü oý rë?ps} z/!(^rp(ü oý r¯5ps} zXŽi1!(^rí;p(ü oý r¯5ps} zÈ  Y  2  X£È¤È X X3æ*0 £È*0 ¤È*0‚ŒQ,+ rŒpsà z/!(^rp(ü oý re?ps} z/!(^rp(ü oý r¯5ps} z XY 2¤ÈX X3î*0(M *0(Ê+*0(-+*0 (.+*0 (/+*0 (0+*0(+*0(+*0(ê *01h{> -"(^rŠp(ü oý r§?ps} z{æ *01h{> -"(^rŠp(ü oý r§?ps} z{> *0 {> þ*0 (1+*0Yž{> ,0 {> þþ,{> {æ -*Y+È(^r@p(ü oý r–ps} z0TŸ{> ,E {> {æ o3 , {4 (Y +¾+³(+*0(X (2+*0 (3+*0 (4+*00*Y(é +æ04h/!(^rp(ü oý r¯5ps} z(ê (5+*0u {> ,d {å ,7 {å {> {N {æ o% & +·(^r#@p(ü oý rU@ps} z{å -Õ*0¡($  (6+*0{ {> ,j {å ,= {å {> {N {æ o- &X +±(^r#@p(ü oý rU@ps} z{å -Õ*0¢(,  (7+*0¸¥{> 9• {å ,h {O ,^ {O {å {> {P {N {æ oQ    (R 8ƒÿÿÿ(^r#@p(ü oý   ra@ps} z{å -Õ{O -Í(8+*0(S (T (9+*0ަ{> ,v {å ,I {å {> {N {æ o) X (U +¥(^r#@p(ü oý rU@ps} z{å -Õ(:+*0(( (V (;+*0 (<+*0-§{> ,# {> {æ oC +Õ*0¨{> -*(B  (=+*0?©{> , {æ {> (>+*(^rŠp(ü oý r§?ps} z0=ª{> ,. {> {æ oC   (Y +Ê(+*0¨(B  (X (Y (?+*0x {> ,f {å ,9 {å {> {N {æ oF +µ(^r#@p(ü oý rU@ps} z{å -Õ*0«(  (@+*0'¬   0£ÈoE Y Y3ç*0 6­(D {> 9! {> {> 9û{> {> {> 9À{> {> {> ,x {> {> {> -E{æ  {æ {æ {æ oE oE oE þoE *(+  Ži   Y(A+* {æ {æ {æ oE oE þoE *{æ {æ oE þoE *{æ þoE **0 Q®{> -"(^rŠp(ü oý r§?ps} z(I (+ Ži  Y Y£È(B+*0;¯ (X (Y    0! £ÈoE (Y Y Y3ß*0e°{> ,Q {> {> -!{æ (¨+(X (Y (Y *(D (+ Ži Y(C+*(X (Y *0{±(+ (D+ Ži Ži  .#(^r#@p(ü oý rU@ps} zY0(£È£Soë YY3Ø*0ç²(à {> 9¹ {> {> 9\{> {> {> 9Ï{> {> {> :®{å 9¢{å {å 9{å {å {å ,v{å {å {å -_{N {N {N  {æ  {æ  {æ      oë oë oë þoë *(E+*{å ,í{å {å ,Û{å {å {å -Ä{N {N {æ  {æ    oë oë þoë *{å 9tÿÿÿ{å {å :_ÿÿÿ{N {æ   oë þoë *{å :*ÿÿÿþoë *0 s {> ,a {å ,4 {å {> {N {æ  þ(F+*(^r#@p(ü oý rU@ps} z{å -Õ*0y {> ,g {å ,9 {å {> {N {æ o0 ,  +·*(^r#@p(ü oý rU@ps} z{å -Ô*0!{> - {å -*(1 (G+*0 (H+*0 (I+*0y {> ,g {å ,9 {å {> {N {æ o0 ,* +µ(^r#@p(ü oý rU@ps} z{å -Ô*0!{> - {å -*(1 (J+*0F§{> ,$ {> {æ oy ,*+Ô(^r±?p(ü oý s2 z03§{> ,) {> {æ oy ,( *+Ï*00³{> ,& {> {æ o3 -+Ô **0M³{> ,+ {> {æ o3 , {4 *+Í(^r±?p(ü oý s2 z0 (K+*0 (L+*0(M+*0(N+*0 (O+*0 (P+*0 (Q+*00´{> , {> {> -*(+ (R+(+*0/´{> , {> {> -*(+ (S+(+*0(T+*0¥U*0K§{> ,) {> {æ oy ,*X+Ï(^r±?p(ü oý s2 z0 µ (U+*08§{> ,. {> {æ oy ,(× *X+Ê*0 µ (V+*0T¶¥U oÿ (#+ o’ , o˜ ($+ +à Þu, oš &Ü&Ü**90Z·¥U oÿ (%+ o’ , o˜ o  (&+ +Ú Þu, oš &Ü&Ü*0?0™¶¥U ŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o’ ,o˜  ()+, +Ü+Ù Þu, oš &Ü&Ü*+S~0¶¸¥U ŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜  o   o’ ,/o˜ o  (*+, +Ì+É Þu  ,  oš &Ü&Ü*+p›0™¶¥U ŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o’ ,o˜  ('+, +Ü+Ù Þu, oš &Ü&Ü*+S~0¶¸¥U ŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜  o   o’ ,/o˜ o  ((+, +Ì+É Þu  ,  oš &Ü&Ü*+p›0¥›¥U ŒU,+r??psà (+&oÿ (#+ o’ , o˜ ($+ X+Ú-(7r??ps} (+&+ (++ Þu, oš &Ü&Ü*+_Š0«œ¥U ŒU,+r??psà (+&oÿ (%+ o’ ,$ o˜ o  (&+ X+Ô-(7r??ps} (+&+ (,+ Þu, oš &Ü&Ü*+e0 þ(W+*0(+("+(+*0(X+(Ë *0=( ,rp+  ( Ú 2( oK &X X3è*0>( ,rp+  ( Ú 2( (Y+&X X3ç*08¹( ,rp+ ( s  s8(,þoŠ *08¹( ,rp+ ( s  s:(-þoŠ *08¹( ,rp+ ( s  s<(,þoŠ *0Zº/!(^rp(ü oý r¯5ps} zs   Ú  2 o (   X X3çþoŠ *0mº/!(^rp(ü oý r¯5ps} z( ,rp+ ( s   Ú  2(   X X3íþoŠ *01-( þþ,*( oX , Ö+Ò*0"¼( ,rp+   (3*0*( /( oX ,*Ö+Ù*0"¼( ,rp+   (5*0( ,rp+( *V( }Ð}Ñ*0{Ñ{ÐoY ( *V(Z }Ò}Ó*0{Ó{Ò(Z+( *V( }Ô}Õ*0{Õ{Ôo[ (  *0 s\ ([+*0s] (\+*0(]+*0 (^+*0 (^ ¥U*0 s_ ([+*04h/!(^rp(ü oý r¯5ps} zs` ([+*0S½ŒU,+ r??psà zoÿ o’ ,o˜ oK &+è Þu , oš &Ü&Ü&*:0@¾ŒU,+ r??psà zoÿ (_+ Þu , oš &Ü&Ü* (0Z¿ŒU,+ r??psà zoÿ  o’ ,o˜ (`+&X +ã Þu , oš &Ü&Ü&*#A0\ÀŒU,+ r??psà zoÿ  - o’ +,o˜ oy +à Þu , oš &Ü&Ü*&D0\ÀŒU,+ r??psà zoÿ  , o’ +,o˜ oy +à Þu , oš &Ü&Ü*&D0£ÂŒU,+ rm@psà zŒR,+ r}@psà zoÿ ob o’ , o’ +,o˜ oc (å+&+Õ Þu, oš &Ü&Ü Þu, oš &Ü&Ü&*;/j4S‡0sd (\+*0se (a+*0$ŒU,+ r??psà zsf (b+*0$ŒU,+ r??psà zsg (c+*0$ŒU,+ r??psà zsh (c+*0;ŒU,+ rm@psà zŒR,+ r}@psà zsi (d+*0$ŒU,+ r??psà zsj (c+*0:ŒU,+ rm@psà zŒR,+ r}@psà zsk (e+*0VŒU,+ rm@psà zŒR,+ r}@psà zŒ,+ r@psà zsl (f+(g+*0#Œ,+ r??psà zsm ([+*0cÃŒU,+ r??psà zoÿ  þþ, o’ +,o˜ o3 +Ù Þu , oš &Ü&Ü*-K0CÄŒU,+ r??psà z(h+ ,{4 *(^r±?p(ü oý s2 z0sÅŒU,+ r??psà zoÿ  þþ, o’ +,o˜  oy , ( +Ï+Ì Þu, oš &Ü&Ü*:X0CdŒU,+ r??psà z(i+ ,{‰ *(^r±?p(ü oý s2 z0 `ÆŒU,+ r??psà z/!(^rp(ü oý r¯5ps} z- (^ ¥U*þÈsn *0ŽÈŒU,+ r??psà zuQ ,  Žiþ*uº ,  {> þ*u,oo þ*oÿ o’ þÞu, oš &Ü&Ü*cq0ŒU,+ r@psà z(j+*0”ÉŒU,+ r??psà zuQ , Ži*uº ,  (M *u,þoo *oÿ o’ , X+îÞu  ,  oš &Ü&Ü*\w0UÊŒU,+ r??psà zoÿ  o’ ,o˜ (k+ +ç Þu , oš &Ü&Ü*=0sËŒU,+ r??psà zoÿ o’ -(7r??ps} zo˜ o’ ,o˜ (l+ +ç Þu , oš &Ü&Ü*=[0 sq (\+*0:ŒU,+ rm@psà zŒU,+ r}@psà zsr (m+*0(n+(o+*0]Ìo’ o’ 3+ ,+ ,*-+þ,*o˜ o˜ (+ , *+£0ˆÎŒU,+ rm@psà zŒU,+ r}@psà zoÿ oÿ (p+ Þu, oš &Ü&Ü Þu, oš &Ü&Ü*;P49m0¥U*0‰ÏŒU,+ r??psà zuº , *uQ ,  (+*oÿ (ê o’ ,o˜ (é +ä(Ê+ Þu, oš &Ü&Ü*@-m0#ŒQ,+ r??psà zss ([+*0‘ÐŒU,+ r??psà zuQ , oŠ ¥Q*uº ,  (+*oÿ s8 o’ ,o˜ o9 +æ(: Þu, oš &Ü&Ü*J+u0 st ([+*0+wŒU,+ r??psà zþÈsu *0+wŒU,+ r??psà zþÈsv *0 ,ÑŒU,+ r??psà zþSsw *0@o’ ,o˜ oy ,*X+Ú(^r±?p(ü oý s2 z0HÒŒU,+ r??psà zoÿ   (q+ Þu, oš &Ü&Ü*-0-o’ ,"o˜ oy ,(× *X+Õ*0HÓŒU,+ r??psà zoÿ   (r+ Þu, oš &Ü&Ü*-0{ X]£È*0 KhŒU,+ r??psà z0!(^rp(ü oý r­@ps} zsx *0pÕoy 2e{z ,+oÿ ({ (| (} {z (~ -* { o’ ,o˜ þo9 *oš (| (} **0Ioy /o€ Xs (‚ *(s+oy /o€ Xs (‚ **0>×oƒ {z ,$ {„ ,{„ { ¥oš +(} *0HÙŒU,+ r??psà zs8 s… s† (t+ s‡ sˆ ¥U*0#ŒU,+ r??psà zs‰ ([+*0sŠ (u+*0 <ÛŒU,+ r??psà zþÈþJþÈs‹ *0 =ÝŒU,+ r??psà zþÈþ2þÈsŒ *0$ŒU,+ r??psà zs (]+*0#ŒU,+ r??psà zsŽ (]+*0$ŒU,+ r??psà zs (v+*0KÞoÿ (#+ o’ , o˜  ($+ +â Þu, oš &Ü&Ü*(00Qßoÿ (%+ o’ , o˜ o   (&+ +Ü Þu, oš &Ü&Ü*.60™àŒU,+r??psà (+&oÿ (#+  o’ ,o˜ ($+ X +Ü -(7r??ps} (+&+ (++ Þu, oš &Ü&Ü*$Z~0ŸáŒU,+r??psà (+&oÿ (%+  o’ ,"o˜ o  (&+ X +Ö -(7r??ps} (+&+ (,+ Þu, oš &Ü&Ü*$`„0ÞŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o’ ,o˜  ('+, +ß+Ü Þu, oš &Ü&Ü*$Pt0¬âŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o  o’ ,-o˜ o   ((+,  +Î+Ë Þu, oš &Ü&Ü*$m‘0ÞŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o’ ,o˜  ()+, +ß+Ü Þu, oš &Ü&Ü*$Pt0¬âŒU,+r??psà (+&oÿ o’ -(7r??ps} (+&+o˜ o  o’ ,-o˜ o   (*+,  +Î+Ë Þu, oš &Ü&Ü*$m‘0+wŒU,+ r??psà zþÈs *0 ,wŒU,+ r??psà zþÈs‘ *0 ,wŒU,+ r??psà zþÈs’ *0°ãŒU,+ rm@psà zŒR,+ r}@psà zoÿ ob , o’ +, o’ +,o˜ oc (Þ++Ë Þu, oš &Ü&Ü Þu, oš &Ü&Ü*;=x4a•0°ãŒU,+ rm@psà zŒR,+ r}@psà zoÿ ob - o’ +, o’ +,o˜ oc (Þ++Ë Þu, oš &Ü&Ü Þu, oš &Ü&Ü*;=x4a•0W¾ŒU,+ r??psà zoÿ o’ , o˜ Þ&(7r??ps} zu , oš &Ü&Ü*!?:(“ }” *0{” o• þoJ *V(“ }– }— *0{– {— (w+*:(“ }˜ *0{˜ (x+*V(“ }™ }š *0{™ Y(× {š (x+*V(“ }› }œ *0{› {œ o þož *r(“ }Ÿ }  }¡ *0%{Ÿ {  o {¡ o¢ þ(y+*:(¤ }¥ *0{¥ (z+*:(¦ }§ *0{§ ({+*:(¦ }¨ *0{¨ (|+*:(© }ª *0{ª (}+*:(¦ }« *0{« (~+*(¬ *0 st *(­ *0ä(® (¯ s° *:(“ }± *0{± o: (+*0<}² }³ }´ }µ }¶ }· }¸ (I *0 ;å{· YE +8ã8Ã8°8ò{³ oJ }´ }· {² Y(ïo0 }¶ }· {¶ o’ ,q{¶ o1 }µ {´ o’ -+(^rÃ@p(ü oý sE ,¥+z&+}· {´ oK }¸ *}µ 8‚ÿÿÿ}· {¶ (?+}¶ }· {´ (‰+}´ }· þ®}¸ *0t'{· YE ++5++++)}· {¶ (?+}· {´ (‰+}· þ®}¸ *0<{· YE +++ +++****0{¸ *0 '{² {³ þ®s¹ *:(“ }º *0{º o» Œ`¥G(€+*:(¼ }½ *0{½ oJ (+*V(¼ }¾ }¿ *0&è{¾ oJ (+ {¿ sÀ (Á *:(“ } *0{ sà ¥m*:(“ }Ä *0{Ä sÅ ¥m*04}Æ }Ç }È }É }Ê }Ë (I *0å'{Ê YE +8Š88¦sý }È {Ç oJ }É }Ê {È { {Æ /{É o’ +,5{È {È { X(½ }Ê {É oK }Ë *+¦}Ê {É (‰+}É }È }Ê þ®}Ë *0Y'{Ê YE + ++++}Ê {É (‰+}Ê þ®}Ë *03{Ê YE + + +++***0{Ë *0 '{Æ {Ç þ®sÌ *04}Í }Î }Ï }Ð }Ñ }Ò (Ó *0'{Ñ YE +8»8‡8Ð{Í oJ }Î }Ñ {Î o’ 9†{Î oK sû }Ï {Î o’ ,Y{Î oK }Ð }Ñ {Ï {# {Ð s }Ò *{Ï {Ð (& þ®}Ð +š}Ï +}Ñ {Î (‰+}Î }Ñ }Ò *0T{Ñ YE + +!+ +++}Ñ {Î (‰+}Ñ }Ò *06{Ñ YE + ++ +++***0{Ò *0 '{Í þ®sÔ *0<}Õ }Ö }× }Ø }Ù }Ú }Û (I *0'{Ú YE ++=8¥8œ8Á{Ö sû }Ø }Ú {Ø {# }Û *{× o }Ù }Ú {Ù o’ ,I{Ø {Õ {Ø {# {Ù oÜ (‚+(& }Ú {Ø {# }Û *+ª}Ú {Ù (ƒ+}Ù }Ø }Ú þ®}Û *0c'{Ú YE ++$+ +++}Ú {Ù (ƒ++}Ú þ®}Û *0<{Ú YE +++ +++****0{Û *0 %'{Õ {Ö {× þ®sÝ *0D}Þ }ß }à }á }â }ã }ä }å (æ *0 §ê{ä YE +8F88p{Þ ®}à {Þ Ysý }á sý }â {ß oJ }ã }ä {ã o’ 9â{à {â { {ã oK ¤®{â {â { X{Þ ](½ {á { -v}ä {Þ /(9r¯5ps} z{Þ ®  {Þ Y  2) {Þ {à {â („+¤® X X3×}å *8-ÿÿÿ{á {á { Y(½ 8ÿÿÿ}ä {ã (‰+}ã }â }á }à }ä }å *0Q{ä YE + ++++}ä {ã (‰+}ä }å *03{ä YE + + +++***0{å *0 {Þ {ß sç *r(è }é }ê }ë *0 8ì{ë (B {é {ê {ë (…+ Þ{ë (D &Ü* (V(Ù }ì }í *03í{í (B {ì {í (†+ Þ{í (D &Ü* #:(“ }î *0{î þoJ *V(3 }ï }ð *0_ð{ï o× sñ  {ð oò só (ô (õ , og *sb {ð  oö og *(÷ *0(ø (ù *(ú *0'ñ(û {ü (ø ¥j(‡+sý *V(þ }ÿ } *0Fó( s {ÿ s { (ˆ+s ¥f(‰+s ¥f(Š+*0<} } } } } } } (I *0#ô{ YE +8È8š8ä( s } { oJ } } { o’ 9„{ oK } { s© } { { o -*{ { o } { } *+þW} þ®} 8lÿÿÿ} { (‰+} } } þ®} *0Y'{ YE + ++++} { (‰+} þ®} *03{ YE + + +++***0{ *0 +õ{ þ®þWþ®s *0D} } } } } } } } (I *0.ö{ YE +8Ó8¥8ï( s } { oJ } } { o’ 9{ oK } { { o× sñ } { { o -*{ { o } { } *+þ_} þ®} 8aÿÿÿ} { (‰+} } } þ®} *0Y'{ YE + ++++} { (‰+} þ®} *03{ YE + + +++***0{ *0 1÷{ { þ®þ_þ®s *V( } } *0!:{ (à+ { (‹+¥j*:( } *0:{ (à+ (Œ+¥j*V(3 }! }" *0Mø{! o× sñ þH {" o# ,{" Xo$ *{" o$ *(% *0…(& {' (( s) *V(* }+ }, *05ú( s- {+ s. {, (+s/ ¥v(Ž+*04}0 }1 }2 }3 }4 }5 (I *0ð|{4 YE +8œ8Œ8±{1 oJ }2 }4 þ®sû }3 {2 o’ ,/{3 {2 oK (& {0 {3 {# oï +,}4 {3 {# }5 *+£}3 }4 {2 (‰+}2 }4 þ®}5 *0Y'{4 YE + ++++}4 {2 (‰+}4 þ®}5 *03{4 YE + + +++***0{5 *0 '{0 {1 þ®s6 *0<}7 }8 }9 }: }; }< }= (I *0Få{< YE +8î8¤8ß8ý{8 oJ }9 }< {7 (ïo0 }; }< {; o’ ,T{; o1 }: {9 o’ -+(^rÃ@p(ü oý sE ,¥+z&+}: +Ÿ}< {; (?+}; {9 o’ ,}< {9 oK }= *+Ö}< {9 (‰+}9 }< þ®}= *0v'{< YE ++7+ + ++++}< {; (?+}< {9 (‰+}< þ®}= *0<{< YE +++ +++****0{= *0 '{7 {8 þ®s> *0<}? }@ }A }B }C }D }E (I *0)|{D YE +8Õ8µ8ê{@ oJ }A }D þ®sû }B sß }C {A o’ ,v{B {A oK (& {C {  ,+{? {B {# oï þ,,{C (å }D {B {# }E *8ƒÿÿÿ8}ÿÿÿ}C }B }D {A (‰+}A }D þ®}E *0Y'{D YE + ++++}D {A (‰+}D þ®}E *03{D YE + + +++***0{E *0 '{? {@ þ®sF *0sG *0sH (\+*0sI sJ (+*0fü{K o’ ,O{K oc ŒS u ,+Í{L oš  þSoÿ }L þ(+*(M *0-þ{L o’ ,{L o˜ }N * þ(‘+*0sO sP sQ ¥*0 sR (\+*0,{  - (’+&+{S ,{T *(“+*0{  -(å **0%sß sU sV (”+(•+*0sW sX ¥U*0 sY *0 }' *0{' *0sZ s[ *0 ( &*0 þ(Ù+*0 þ(–+*0}\ ( &*0{\ {' þo] *0{\ {' {' þo^ *0}_ ( &*0{_ o` ¥*0{_ þo` *0 sa €b *0( *0~b *0&*0 sc ¥m*0sc ¥m¥*r(“ }d }e }f *0{d {e {f (—+*V( }g }h *0#{g oï ,{h o× ( **(3 *0Œ® u ,  oš **0( &}i }j *0X{j o• oJ u° , {i o) Þ%{i (˜+ Þt{i oR &þ*?@0¥joJ ¥*0?( &o }k sc ¥m}l }m }n (` }o *0— }n {l ,{l oš }l +{k ,{k oš }k +{o ¥’op o’ ,oq oR &+è Þu , oš &Ü&Ü&(` }o *Ws0* {m - (’+&+{n ,(™+*{r *0{o († }o *0(s *0 (s Œ®*0* {m - }m +{n ,* þ(š+*0(^rç@p(ü oý sy z0{n -(t **:(Ù }u *0&'{u Œ®,{u þ®oš **V( }v }w *0{w {v ox Œf¥j*:(“ }y *0{y sz ¥m*0'}{ }| }} }~ ( &*0{} {~ (›+Œj*0\ {} ( {{ oþ Þt {~ ( þ,{~ {| (€ ( *{~ ( *0(^rç@p(ü oý sy z0*0{} {~ (›+*’( }‚ }ƒ }„ }… *0{‚ {ƒ {„ {… s† *:( }‡ *0{‡ *:(ˆ }‰ *0{‰ oÌ *0}Š }‹ ( &*0{Š {‹ o* &*0}Œ } }Ž ( &*0{Œ o* &*0{ o* &*0-'{Ž s o {Œ o* &{ s‘ *0o’ , {p oR &**0>o“ o”  u¤-u¥-t¦ {• (– **(œ+*0 u¨ ,  {— *s˜ ¥²*0 u© ,  {™ *sš ¥¢*0 s› €œ *0( *0s *0 u«þ*0sž *0 u¬þ*0~œ *0 uªþ*0 u«,+ u¬,+*0(Ÿ *0(Ÿ }  *0{  *0(Ÿ }¡ *0{¡ *0( }¢ *0( }£ *0 {£ {  *0( }¤ *0 {¤ {¡ *0( &}¥ }¦ *0{¥ *0{¦ *0/uQ , {¥ s§ +à s¨ ¥G*0s© *0{¥ þoª *V(¼ }¬ }­ *0{­ {¦ o® {¬ (Á *:(¯ }° *0b{° {¥ (+  u¬- u«-{° {¦ o® (± **t« {¡ {° {¦ (Á (± *0( &}² }³ }´ *0{² *0.{³ -(^r Ap(ü oý sE z{) *0¥moK Œ®*0}{´ -s{² (+ u¬-u«-,}³ }´ *t¬ {  (k }³ *t« {¡ }² ¥þo’ **0(^rç@p(ü oý sy z0{´ -{² þ(ž+**0( &}µ *0{µ *0s¶ *0{µ s· (Y *:(¯ }¸ *0/{¸ {µ o’ ,{¸ {µ oK (¹ *(º *:(Ù }» *0{» oš *0(^r¿<p(ü oý sE z0(^rë<p(ü oý sE z0s¼ *0gho’ -!(^rÃ@p(ü oý r–ps} z/!(^rp(ü oý r–ps} z- þo˜ *Y+™0s½ ¥*0#sý s¾ ¥*0s¿ ¥º*0, {  - (’+&+{À ,{‰ *(Ÿ+*0!sß s* sÁ *0<{  - (å +o’ ,o˜ oy ,*+Æ*0"sß s *0#s' sà ¥*0W{ 3 (’+&+{ þ3 ( +&+{Ä ŒV,+sÅ (¡+(Æ {Ä (£ *0S&, {Ý /{Ý sÇ ¥²*-ý+{Ý sý þVsÈ  sÉ *0d{À , (Ê **0d(B (¢+ Þ (D &Ü*  0, {  - (’+&+{À ,{‰ *(Ÿ+*0{  -(å **0(£+(¤+(Ê *0,(sß s* oe ( sË sÌ *0 sÍ *0}Î ( &*0{Î oR ¥*0{Î þo’ *0(^rç@p(ü oý sy z0){Î u ,  þoš **0{Î oR (¢+*0( &}Ï *0 {Ï - (’+&+(™+*0 {Ï - (’+&+(¥+*0{Ï - }Ï +*0(^rç@p(ü oý sy z0*0"s¢€~s¢€s¢€€*0( }}*0~€*0 (©þ*0~*0 (©þ*0~~*0 (©þ*0{}*0( &(§}Ð *07{Ð (©E (’+&+ ( +&+{Ñ *0(Ò *0 (Ò Œ®*0)(¥}Ð |Ñ oÓ ,*(£}Ð *0(^rç@p(ü oý sy z0 þoÔ *0}Õ }Ö (× &*0.{Ö o’ ,{Õ {Ö oÜ oØ ®**0{Ö þoš *0}Ù }Ú }Û (× &*0Q{Û {Û { X(½ {Ú o’ ,){Ù {Û { {Ú oÜ (¦+®**0{Ú þoš *0}Ý }Þ }ß (× &*0O¶{Þ o’ {ß o’ ,+,){Ý {Þ oÜ {ß oà (§+®**0{Þ oš {ß þoš *0'}â }ã }ä }å ( &*0{ä {å (¨+Œ®*0€{ä {  -{ä (å +{å ( {å {ÿ þ,{ã o’ +,${å {â {ã oÜ oæ ( +¹{å {ÿ þ*0(^rç@p(ü oý sy z0{ã þoš *0{ä {å (¨+*0}ç }è }é ( &*0+ {é {  - (’+&+{è oK Œ®*0/+{ç {è {é {ç {è {é (©+*0(^rç@p(ü oý sy z0{è þoš *0( {é {  - (’+&+{è þoK *0}ê }ë (× &*0L-{ê {ë {õ oì ,/ {í (g {í (f  ®{ë (÷ **0*V(@ }î }ï *0{î {ï { þoð *0'}ñ }ò }ó }ô ( &*0{ñ {ó {ô (ª+Œ®*0¶/{ó { þ3*{ó { 3"{ó (½ {ô þ»(õ *{ó { ÿÿÿ3(^rCAp(ü oý sE z{ó { {ò 3*{ó { X {ó (½ {ô þ» (õ *0(^rç@p(ü oý sy z0*0{ñ {ó {ô (ª+*0/}ö }÷ }ø }ù }ú ( &*0{ø {ù («+Œ®*0‹0{ø (‘{ú {û ,l {? {ö oæ Þ"t{÷ {ù {ú (¬+þ ,{ù ( *{÷ {ù {ú (¬+**'8"0(^rç@p(ü oý sy z0{÷ {ú (­+þ(®+*0{ø {ù («+*0&( &}ü }ý {ü Ži}þ *0F({ý þþ,/{ý {þ þþ,(™+*{ü {ý £®*(¯+*0(ÿ *07({ý {þ þþ,*{ý X}ý {ý {þ þ*0 (ÿ Œ®*0(^rç@p(ü oý sy z0*0( &} } *0{ *0 { Œ®*0{ ,*} *0(^rç@p(ü oý sy z0*0} } ( &*0{ ¥þoR *0{ þo’ *0(^rç@p(ü oý sy z0{ oR &{ þoš *0{ þoK *0} } (I &*0{ *01qj { o’ ,**0{ oš { þoN *0*0{ þoK *0(ò+*03( s *0} ( &*0{ þo *0s *0s *0s *05( s *0 ( &*0 þ(Ù+*0 þ(–+*0} ( &*0{ þ(°+*0 þ(–+*0 ( &*0 Œ®( *0 (±+*0} } ( &*0{ þo *0{ þo *0,h,{‰ *(^ryAp(ü oý rŸAps} z0þ*0 þþ*0,**0d, {‰ þ(k+**0d, {‰ þ(¨+**0d, {‰ þoy **0d, {‰ þoy **0d, {‰ oK &**0¢, {‰ o  (Ø **0d, {‰ þo3 **0!d, È%{‰ ¤È*È*0d, {‰ (ê (é *(ê *0 (˜ *0 (˜ *0 (— *0 (— *0 ( *0 ( *0Uh/!(^rp(ü oý ró(ps} z/!(^rp(ü oý r­Aps} zs *0{-þ+,+ÐÈ(¸ H%¤H%¤H( ¥ä*ÐÈ(¸ H%¤H%¤HH%¤H%¤H( ¥ä*0I7(²+  ÖÚ 20ÖÚ 2( X X3èX X3Ð*0Q7(²+  ÖÚ 28ÖÚ 2 (³+( X X3àX X3È*0 (´+*0 (µ+*0…8Œä,+ r.psà z(˜ (˜ (— (— ÖÚ2=  ÖÚ2( oK &XX3áXX3Ã*0‰8Œä,+ r.psà z(˜ (˜ (— (— ÖÚ2A  ÖÚ2#( (¶+&XX3ÝXX3¿*0@Œä,+ r.psà z(— (— (˜ (˜ s (·+*0@Œä,+ r.psà z(— (— (˜ (˜ s (·+*0?Œä,+ r.psà z(— (— (˜ (˜ s (µ+*0 E(Œä,+ r.psà z(— (— (˜ (˜ s (µ+*0 9Œä,+ r??psà zŒä,+ rŒpsà z(— /!(^rí;p(ü oý r±Aps} z(— /!(^rí;p(ü oý rËAps} z(— /!(^rí;p(ü oý råAps} z(— /!(^rí;p(ü oý rÿAps} zÖ(˜ (— Ö1!(^rí;p(ü oý rBps} zÖ(˜ (— Ö1!(^rí;p(ü oý r'Bps} zÖ(˜ (— Ö1!(^rí;p(ü oý rBps} zÖ(˜ (— Ö1!(^rí;p(ü oý r'Bps} z Ú 2@Ú 2)ÖÖÖÖ( ( X X3×X X3À*V( } } *0{ { (! þoØ *V( }" }# *0 {" {# (! þ(¸+*:( }$ *0{$ (% *r( }& }' }( *0{& {' Ö{( Ö(% *0È*0I]/(9r¯5ps} (+&+È  Y 2o" ¤ÈX X3è*0Â:ŽiÈ Ži;  +^o) /+Ži þþ,#(^r5Bp(ü oý rUBps} z £È¤È ¤;X Ži2œ +;£;þþ,#(^r5Bp(ü oý rUBps} zX Ži2¿*0B;Ži /*ŽiS  +£Èo  ¤SX Ži2â(¹+(º+*0-Ži /*(»+(+*0í=ŽiH  + ¤HX Ži2î(¹+ (¼+oŠ ¥Q (½+ Ži<œ£S/ 3+£So+ þ+, X+Í Y 2$  £H£È¤È X  X3ÜYþþ,Y(¾++ 8\ÿÿÿ*0>;Ži /*ŽiS  +£Èo  ¤SX Ži2â(¿+*0,-Ži /*(»+,oŠ ¥Q(À+*(Á+*0*§{> ,! {> {æ oK &+×*0E>{å ,1 {å {N oJ (é  }> +Ç(ê }> *0^?{> ,P {> {> -{æ o  (X (Y *{> {æ o  (Y (Â+ *(X *0K>{å ,7 {å {N o. (é  }> X+Á(ê }> *0k@{> ,] {> {> -{æ (Ã+(X (Y *{> {æ (. o/ (Y  (Ä+*(X *0“A{å ,w {O ,J {O {å {P {N o/ (é }>  +¤(^r#@p(ü oý rgBps} z{O -Õ(ê }> *0ŽB{> ,x {å ,K {å {> {N {æ (& o' (U  (Å+*(^r#@p(ü oý rgBps} z{å -Õ(V *0.§{> ,# {> {æ oy ,+×**0.§{> ,# {> {æ oy ,*+Õ*0)§{> , {> {æ (é +Ù*0RC{> ,H {> {> ,7{> {> {æ {æ  (ê (é (é (Æ+***09D{> ,( {> {æ (é  }> +Ð}> *0<§{> ,( {> {æ o0 (Ç++Ð(X }å *0OE{> ,A {> {> -{æ þo0 *þS (Y (È+(1 *(X *0OD{> ,? {> {æ oy ,(é  }> +Ä+¹}> *0gD{> ,] {> {> -{> {æ oy ,**{> {æ oy ,(é (É+ *+›*00§{> ,' {> {æ o+ &X+Ñ*0F(*  (Ê+*02H{2 ," {2 {3 (Ë++Ö}> *0^I{2 ,P {3 {> ,5{3 {2 {> {æ (é  (Ì+*{2 +¨(ê *0XJuº , *oÿ (ê o’ ,o˜ (é +è (Ê+ Þu, oš &Ü&Ü*'=0eK(Í+ {2 ,O {2 {2 ,7{2 {2 {2 -{3 {3  (1+*(Î+*{3 *(ê *06L/%o" (é }> X+Ö(ê }> *09L/(9r¯5ps} z-(ê *o" (é (Ï+*0cD{> ,L {> {æ (é oy , }> +Á }>  +¬}> }> *0QD{> ,@ {> {æ (é oy , }> +Ä (Ð+ *}> *0QD{> ,@ {> {æ (é oy , (Ð+ * }> +¸}> *0„D{> ,t {> {> -({> {æ oy ,sV *sV *{> {æ (é oy , (Ñ+sV * (Ò+ sV *sV *0pM{z ,Q {z {{ ( {{ (ž (é (Y }> }å +§(ê }> (X }å *0aM{z ,I {z {{ ( {{ (ž (é (Y (Ó+s4 *(ê (X s4 *0¡O{5 ,w {5 {6 (> {6 (? {6 (@ (é  (Y (U }> }å }O 8ÿÿÿ(ê }> (X }å (V }O *0O{5 ,d {5 {6 (> {6 (? {6 (@ (é  (Y (U (Ô+s7 *(ê (X (V s7 *0P{> ,s {å ,F {å {> {N {æ s? (ó }z  +¨(^r#@p(ü oý rgBps} z{å -Õ(ô }z *0‚P{> ,l {å ,? {å {> {N {æ s? (ó  (Õ+*(^r#@p(ü oý rgBps} z{å -Õ(ô *0¿Q{> 9˜ {å ,k {O ,a {O {å {> {P {N {æ s< (8   }5   8€ÿÿÿ(^r#@p(ü oý   roBps} z{å -Õ{O -Í(9 }5 *0­Q{> 9Œ {å ,_ {O ,U {O {å {> {P {N {æ s< (8    (Ö+ *(^r#@p(ü oý   roBps} z{å -Õ{O -Í(9 *0/§{> ,& {> {æ ¤ÈX+Ò*0R(M È  (×+*0/SŽi (ê Y   0 £È(é Y Y3è*0 (Ø+*0)§{> , {> {æ (é +Ù*0vT{> ,j {> ,V {æ {æ {> {>  (+1(é +­ (é +˜ (Ù+* +ô00(+1(ê (é (é *(ê (é (é *0¼/þ+,;(+1(ê (é (é (é *(ê (é (é (é *151(ê (é (é (é *(ê (é (é (é *1(ê (é (é (é *(ê (é (é (é *0 k((+ (+ 1þ+,;(+1(ê (é (é (é *(ê (é (é (é *(Ú+*0L{> , {> {> þ**0ËU<ž{: {> 9 {> {> ,r{> {æ {æ {> 3(;  (Û+*{> ,*{æ {> (;  (Ü+*rwBps" zrwBps" zc  (Ý+ Y(Ý+(ê (Þ+*0 W(ß+,*s< (M (Ý+*0wþÈŒ5s= *0 s= *0þ{> ,+þ*0þ{> ,**0(£ *0(£ *0(£ *0*0(K+*0ŒÈ*0z0s" *0&o? Ð(¸ oM , o¦ (Ô **0þ*0 ('+*0 ()+*0 (à+*0 (á+*0 þ(â+*0 (â+þ*0 þ(ã+*0('+,**0('+,**0s" z0s} (ä+*0 sà (ä+*0 sE (ä+*0 rƒBpsP z0 ráBpsP z0(ž *0( *0*0s' *0 (A *0{B *0 þo  *0 þ(¶+*0 þ(¹+*0 þo  *0 þ(¶+*0 þ(¹+*0 sC *0 sD *0 (® *0 ,{‰ **0 r?CpsP z0 þ(å+*0 r¯CpsP z0 þ(æ+*0 rDpsP z0 rDpsP z0 råDpsP z0 rMEpsP z0 rµEpsP z0 rFpsP z0 r‰FpsP z0 rñFpsP z0 r]GpsP z0DX{> ,: {> {æ {> -*(ê (é (ç+}> **0{ X(½ *0{ Y(½ *0(î rÇGps" z0 rHpsP z0 roHpsP z0 rÍHpsP z0 r-IpsP z0 r‹IpsP z0 rëIpsP z0w r psP z0 ŒH¥È*0(= (> s? *0 #ð*0 #øÿ*0"€*0"Àÿ*0 rIJpsP z0 r©JpsP z0 rKpsP z0 rgKpsP z0 rÇKpsP z0 r)LpsP z0 r‹LpsP z0<4ŒÈ ,+uF , (ˆ ¥Jþo‰ * þoŠ *rp*0 rëLpsP z0(ÑŒÈ(B oU ÞŒÈ(D &Ü* 0,Yo  ÞŒÈ, þÈoš &Ü&Ü* 0 ÐÈ(¸ *0ÐÈ(¸ oà , þoÄ **0þÈ*0 þ(è+*0 þ(é+*0*0(E *0(¤ *0(ã *0(ê+sF (ë+*0(%+sG (ì+*0 þ(í+*0 þ(î+*0 þ(ï+*0 þ(ð+*0 þ(ñ+*0 þ(ò+*0 þ(ó+*0 þ(ô+*0 þ(õ+*0 þ(ö+*0 þ(÷+*0 þ(ø+*0 þ(ù+*0 þ(ú+*0 þ(û+*0 þ(ü+*0 þ(ý+*0 þ(þ+*0 þ(ÿ+*0 þ(+*0 þ(+*0sZ €3>X (ê+sH (+ /(ê+ rDpsP z  rDpsP z(ê+sI (+ /(ê+  rDpsP z*V(V }J }K *0{K {J oL þoM *V(N }O }P *0{O {P ox þoQ *(R *0 þ(+*(õ *0 þ(+*(R *0 þ(+*(R *0 þ(+*0(^r¿<p(ü oý sE z0(^rë<p(ü oý sE z0 #àÁ*0 #ÀÿÿÿßA*0/#àÁ5#ÀÿÿÿßAþþ+, (S þ**09¶3 sT ¥ÿ*þ ,þ+þþ sn¥ÿ*06\sl -!(^rGMp(ü oý riMps} zst*0I¶3 sU ¥*þ ,!þ+ !þþ sy¥*06^sw -!(^rGMp(ü oý riMps} zs*0I¶3 sV ¥*þ ,!þ+ !þþ s„¥*06`s‚ -!(^rGMp(ü oý riMps} zsŠ*09¶3 sW ¥*þ ,þ+þþ s¥*06bs -!(^rGMp(ü oý riMps} zs•*0K¶3 sX ¥ *þ ,!Óþ+!Óþþ sš¥ *0@ds˜ !Ó3!(^rGMp(ü oý riMps} zs *0K¶3 sY ¥ *þ ,!àþ+!àþþ s¥¥ *0@fs£ !à3!(^rGMp(ü oý riMps} zs«*09¶3 sZ ¥*þ ,þ+þþ s°¥*06hs® -!(^rGMp(ü oý riMps} zs¶*09¶3 s[ ¥*þ ,þ+þþ s»¥*06js¹ -!(^rGMp(ü oý riMps} zsÁ*09¶3 s\ ¥*þ ,þ+þþ sÆ¥*06lsÄ -!(^rGMp(ü oý riMps} zsÌ*09¶3 s] ¥*þ ,þ+þþ sÑ¥*06nsÏ -!(^rGMp(ü oý riMps} zs×*09oY[ (í,6i 3lZXs^ ¥*þ þþ  sÚ¥*#þ,#(^rGMp(ü oý riMps} z.#(^rsMp(ü oý ró(ps} z.#(^r•Mp(ü oý riMps} z.#(^rµMp(ü oý r­Aps} zþ, s^ ¥*þ ,#þ+ #þþ  sà¥*0 så*0.oY[l (í,6i 3kZXs_ ¥*þ þþ  sè¥*"þ,#(^rGMp(ü oý riMps} z.#(^rsMp(ü oý ró(ps} z.#(^r•Mp(ü oý riMps} z.#(^rµMp(ü oý r­Aps} zþ, s_ ¥*þ , "þ+ "þþ  sî¥*0 só*0. (â+, s` ¥²*('+ sa ¥²*0 sb *0K¶(+, sc ¥*((+ , ('++()+þ sd ¥*08h(â+,!(^rGMp(ü oý riMps} zse *0% 3 sf ¥Ï*þ s¥Ï*0 ™ s*0SpE$.[(  Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0 q ( *0SrE$.[( س ]-*س***س*س س*س س*0 s (*0StE$.[( ص ]-*ص***ص*ص ص*ص ص*0 u (*0SvE$.[( Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0 w (*0J(E!'[( Ø ]-*Ø***Ø*ØØ*Ø Ø*0 - (*0J E!'[( Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0 í (*0RE#%)/[( Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0 ³ (*0RxE#%)/[( Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 â (*0SyE$&*0[( Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 z (*0S{E$&*0[( Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0 | (*0N}E!%+[(  Z ]-*Z*"€?**Z*ZZ*Z Z*0 ~ ( *0RE#%)/[(" Z ]-*Z*#ð?**Z*ZZ*Z Z*0 € ("*0gE"$&.<[($ (g ]-*(g ***(g *(g (g *(g (g *0‚ s;   ($*0wƒE')+6H[(+ (l+ ]-*þ(l+***þ(l+*(l+þ(l+*(l+ þ(l+*0…   þ(+*0k†,  {Ý + ,  {Ý +ŽiY YX È Y2!X£È¤ÈXX3ß*0`‡,  {Ý + ,  {Ý +ŽiY YX  Y2 X£È¤ÈXX3à*0b*, {Ý + , {Ý + , {Ý + (˜ Y , {Ý + (˜ Y YX YX(+*0e*, {Ý + , {Ý + , {Ý + (˜ Y , {Ý + (˜ Y YX YX( +*0 –ˆ, {Ý + , {Ý + , {Ý + , {Ý + (˜ Y , {Ý + (˜ Y, {Ý + (˜ Y YXYXYX( +*0 ™ˆ, {Ý + , {Ý + , {Ý + , {Ý + (˜ Y , {Ý + (˜ Y, {Ý + (˜ Y YXYXYX( +*0 Ê8, {Ý + , {Ý + , {Ý + , {Ý + , {Ý + (˜ Y, {Ý + (˜ Y, {Ý + (˜ Y, {Ý + (˜ Y YXYXYX YX( +*0 Í8, {Ý + , {Ý + , {Ý + , {Ý + , {Ý + (˜ Y, {Ý + (˜ Y, {Ý + (˜ Y, {Ý + (˜ Y YXYXYX YX ( +*0;‰,  {Ý + ,  {Ý + ( Y YX( *0)ŠÐÈ(¸ %¤o sh *0<‹ÐÈ(¸ ÐS(¸ %¤%¤o si *0~j þok *0~l þok *0~m þok *0~n þok *0~o þ(+*0~p þok *0~q þok *0~r þok *0~s þok *0~t þok *0~u þoø *0~v þok *0~w þok *0~x þo  *0~y þok *0~z þok *0~{ þok *0~| þok *0~} þok *0~~ þok *0~ þ(ª+*0( &}€ *0 þ( *0( Œ®*0C{€ E*o‚ , }€ *}€ *oƒ ,*}€ *0}€ þo„ *0*0){€ E (+*(+*þo… *0 († &*0*0*0*0 'þ®*0(† &}‡ *0*0*0*0{‡ *0$(ˆ &}‰ }Š {‰ }‹ *0{‰ }‹ *0{‹ þoŒ *0n|{‹ {‹ o oŽ ,*o ,*oŽ ,{Š oŽ +, }‹ *{Š o , }‹ **0$(† &} }‘ { }’ *0{ }’ *0{’ *0|{’ {’ o“ o” ,*o• ,{‘ o• +, }’ *{‘ o” , }’ *{‘ o• ,*o” -**(Å *0X*0;}Ç}È}É}Ê}Ë{Ç{É(– &*0{Ë*0{Ê,þ*þ*0þ*0 {ÈX*0*0'}Ì}Í}Î}Ï( &*0 %{Ì{Í{Î{Ï(î¥*0 {Ì{Í{Î{Ï(î*(— *0X*0;}Ð}Ñ}Ò}Ó}Ô{Ð{Ò(˜ &*0{Ô*0{Ó,þ*þ*0þ*0 {ÑX*0*0'}Õ}Ö}×}Ø( &*0 %{Õ{Ö{×{Ø(ð¥*0 {Õ{Ö{×{Ø(ð*(™ *0X*0;}Ù}Ú}Û}Ü}Ý{Ù{Û(š &*0{Ý*0{Ü,þ*þ*0þ*0 {ÚX*0*0'}Þ}ß}à}á( &*0 %{Þ{ß{à{á(ò¥*0 {Þ{ß{à{á(ò*(› *0X*0;}â}ã}ä}å}æ{â{ä(œ &*0{æ*0{å,þ*þ*0þ*0 {ãX*0*0'}ç}è}é}ê( &*0 %{ç{è{é{ê(ô¥*0 {ç{è{é{ê(ô*( *0X*0;}ë}ì}í}î}ï{ë{í(ž &*0{ï*0{î,þ*þ*0þ*0 {ìX*0*0'}ð}ñ}ò}ó( &*0 %{ð{ñ{ò{ó(ö¥*0 {ð{ñ{ò{ó(ö*(Ÿ *0X*0;}ô}õ}ö}÷}ø{ô{ö(  &*0{ø*0{÷,þ*þ*0þ*0 {õX*0*0'}ù}ú}û}ü( &*0 %{ù{ú{û{ü(ø¥*0 {ù{ú{û{ü(ø*(¡ *0Xh*0;}ý}þ}ÿ} } {ý{ÿ(¢ &*0{ *0{ ,þ*þ*0þ*0 {þXh*0*0'} } } } ( &*0 %{ { { { (ú¥*0 { { { { (ú*(£ *0XÑ*0;} } } } } { { (¤ &*0{ *0{ ,þ*þ*0þ*0 { XÑ*0*0'} } } } ( &*0 %{ { { { (ü¥*0 { { { { (ü*(¥ *0Xg*0;} } } } } { { (¦ &*0{ *0{ ,þ*þ*0þ*0 { Xg*0*0'} } } } ( &*0 %{ { { { (þ¥*0 { { { { (þ*(§ *0XÒ*0;} } } } } { { (¨ &*0{ *0{ ,þ*þ*0þ*0 { XÒ*0*0'} } } } ( &*0 %{ { { { (¥*0 { { { { (*06}! }" }# }$ }% {# (© &*0{% *0{$ ,þ*þ*0þ*0X*0{! l{" ZX*0;}& }' }( }) }* {& {( (ª &*0{* *0{) ,þ*þ*0þ*0 {' X*0}+ }, }- ( &*0{+ {, {- (¥*0{+ {, {- (*06}. }/ }0 }1 }2 {0 (« &*0{2 *0{1 ,þ*þ*0þ*0X*0{. k{/ ZX*0;}3 }4 }5 }6 }7 {3 {5 (¬ &*0{7 *0{6 ,þ*þ*0þ*0 {4 X*0}8 }9 }: ( &*0{8 {9 {: (¥*0{8 {9 {: (*0;}­ }® }¯ }° }± {¯ {° (² &*0{± *0 (+*0 þ(–+*0{® {­ þ(+*0*0'}´ }µ }¶ }· ( &*0 %{´ {µ {¶ {· (+¥*0 {´ {µ {¶ {· (+*0C}¸ }¹ }º }» }¼ }½ {¹ {» (² &*0{½ *0{¼ ,(+*(+*0 þ(–+*0{¸ {º þ(‚+*0*0/}¾ }¿ }À }Á } ( &*0 +{¾ {¿ {À {Á { (+¥*0 &{¾ {¿ {À {Á { (+*03}O }P }Q }R {O {P (à &*0{R *0þ*0þ*0v {Q  XÑ*0*0}S }T }U ( &*0{S {T {U ( ¥*0{S {T {U ( *:(V }Ä *0 &{Ä %Œ®¤o ¥`*:(Å }Æ *0 3{Æ %Œ®¤%Œ`¤o ¥f*0 ( &*0]Ю(¸ Ð(¸ oM ,s¥x sÇ 8!Ð(¸ oM ,s¥x sÈ 8øÐH(¸ oM ,s ¥x sÉ 8ÏÐs(¸ oM ,s$¥x sÊ 8¦Л(¸ oM ,s(¥x sË 8}Ð[(¸ oM ,s,¥x sÌ +WÐŽ(¸ oM ,s0¥x sÍ +1Ð%(¸ oM ,s4¥x sÎ + rÓMp(+€Ï *0~Ï *(Ð *0(Ñ *:(Ò }Ó *0{Ó þoÔ *(Õ *0(Ö *:(Ò }× *0{× þoÔ *(Ø *0(u *:(Ò }Ù *0{Ù þoÔ *(Ú *0(Û *:(Ò }Ü *0{Ü þoÔ *(Ý *0.z!Ó2*e !Ó/ (6sÞ z*:(Ò }ß *0{ß þoÔ *(à *0(á *:(Ò }â *0{â þoÔ *(ã *0(ä *:(Ò }å *0{å þoÔ *(æ *0(ç *:(Ò }è *0{è þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s;¥x sé +1ÐŽ(¸ oM ,s?¥x sê + rÛMp(+€ë *0~ë *(à *0(ì *:(Ò }í *0{í þoÔ *(ã *0 l(ì k*:(Ò }î *0{î þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sF¥x sï +1ÐŽ(¸ oM ,sJ¥x sð + råMp(+€ñ *0~ñ *(à *0(ò *:(Ò }ó *0{ó þoÔ *(ã *0 l(ò k*:(Ò }ô *0{ô þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sQ¥x sõ +1ÐŽ(¸ oM ,sU¥x sö + rïMp(+€÷ *0~÷ *(à *0(ø *:(Ò }ù *0{ù þoÔ *(ã *0 l(ø k*:(Ò }ú *0{ú þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s\¥ sû +1ÐŽ(¸ oM ,sb¥ sü + rùMp(+€ý *0~ý *(þ *0 (ÿ *:(V } *0{ þo× *:( } *0‘{ o s *( *0 ll(ÿ k*:(V } *0{ þo× *:( } *0‘{ o s *0 ( &*0jЮ(¸ Ð[(¸ oM ,sk¥x s  +1ÐŽ(¸ oM ,so¥x s  + rNp(+€  *0~  *(à *0(  *:(Ò }  *0{  þoÔ *(ã *0 l(  k*:(Ò } *0{ þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sv¥x s +1ÐŽ(¸ oM ,sz¥x s + rNp(+€ *0~ *(à *0( *:(Ò } *0{ þoÔ *(ã *0 l( k*:(Ò } *0{ þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s¥x s +1ÐŽ(¸ oM ,s…¥x s + rNp(+€ *0~ *(à *0(S *:(Ò } *0{ þoÔ *(ã *0 l(S k*:(Ò } *0{ þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sŒ¥x s +1ÐŽ(¸ oM ,s¥x s + r)Np(+€ *0~ *(à *0( *:(Ò } *0{ þoÔ *(ã *0 l( k*:(Ò } *0{ þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s—¥x s  +1ÐŽ(¸ oM ,s›¥x s! + r;Np(+€" *0~" *(à *0(# *:(Ò }$ *0{$ þoÔ *(ã *0 l(# k*:(Ò }% *0{% þoÔ *0 ( &*0]“Ю(¸ Ð[(¸ oM ,s¢¥„ s& 8!ÐŽ(¸ oM ,s¦¥„ s' 8øЛ(¸ oM ,sª¥„ s( 8ÏÐ%(¸ oM ,s®¥„ s) 8¦Ð(¸ oM ,s²¥„ s* 8}ÐH(¸ oM ,s¶¥„ s+ +WÐs(¸ oM ,sº¥„ s, +1Ð(¸ oM ,s¾¥„ s- + rGNp(+€. *0~. *(/ *0(0 *:(1 }2 *0{2 þo *(3 *0 l(0 *:(1 }4 *0{4 þo *(5 *0!!Ó/*!Ó1**:(1 }6 *0{6 þo *(7 *0(8 *:(1 }9 *0{9 þo *(: *0(; *:(1 }< *0{< þo *(Ø *0(= *:(1 }> *0{> þo *(? *0(@ *:(1 }A *0{A þo *(B *0(C *:(1 }D *0{D þo *0 ( &*0jЮ(¸ Ð[(¸ oM ,sÅ¥x sE +1ÐŽ(¸ oM ,sÉ¥x sF + rQNp(+€G *0~G *(à *0(H *:(Ò }I *0{I þoÔ *(ã *0 l(H k*:(Ò }J *0{J þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sÐ¥x sK +1ÐŽ(¸ oM ,sÔ¥x sL + rYNp(+€M *0~M *(à *0(N *:(Ò }O *0{O þoÔ *(ã *0 l(N k*:(Ò }P *0{P þoÔ *0 ( &*0j”Ю(¸ Ð[(¸ oM ,sÛ¥! sQ +1ÐŽ(¸ oM ,sߥ! sR + reNp(+€S *0~S *(à *0(T *:(V }U *0{U þo× *(ã *0 l(T k*:(V }V *0{V þo× *0 ( &*0jЮ(¸ Ð[(¸ oM ,sæ¥x sW +1ÐŽ(¸ oM ,sê¥x sX + roNp(+€Y *0~Y *(à *0(Z *:(Ò }[ *0{[ þoÔ *(ã *0 l(Z k*:(Ò }\ *0{\ þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sñ¥x s] +1ÐŽ(¸ oM ,sõ¥x s^ + rwNp(+€_ *0~_ *(à *0(` *:(Ò }a *0{a þoÔ *(ã *0 l(` k*:(Ò }b *0{b þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,sü¥x sc +1ÐŽ(¸ oM ,s¥x sd + rNp(+€e *0~e *(à *0(f *:(Ò }g *0{g þoÔ *(ã *0 l(f k*:(Ò }h *0{h þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s¥x si +1ÐŽ(¸ oM ,s ¥x sj + r‰Np(+€k *0~k *(à *0(l *:(Ò }m *0{m þoÔ *(ã *0 l(l k*:(Ò }n *0{n þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s¥x so +1ÐŽ(¸ oM ,s¥x sp + r“Np(+€q *0~q *(à *0(r *:(Ò }s *0{s þoÔ *(ã *0 l(r k*:(Ò }t *0{t þoÔ *0 ( &*0jЮ(¸ Ð[(¸ oM ,s¥x su +1ÐŽ(¸ oM ,s!¥x sv + r›Np(+€w *0~w *(à *0(x *:(Ò }y *0{y þoÔ *(ã *0 l(x k*:(Ò }z *0{z þoÔ *0 ( &*0j–Ю(¸ Ð[(¸ oM ,s(¥‹ s{ +1ÐŽ(¸ oM ,s.¥‹ s| + r¥Np(+€} *0~} *(þ *0 (~ *:(N } *0{ þoØ *:(€ } *0˜{ o‚ sƒ *( *0 ll(~ k*:(N }„ *0{„ þoØ *:(€ }… *0˜{… o‚ s† *0 þ(+*0 r¯CpsP z0 r?CpsP z0 r­NpsP z0 rHpsP z0 roHpsP z0 rÍHpsP z0 rëLpsP z0 r-IpsP z0 r‹IpsP z0 rëIpsP z0 rOpsP z0 rIJpsP z0 r©JpsP z0 r)LpsP z0 r‹LpsP z0 wþÈ*0 þ(ã+*0 þ(â+*0 þ(è+*0(^r¿<p(ü oý sE z0(^rë<p(ü oý sE z06D{> ,, {> {æ (ê (é  }> +Ì*0L{> , X{> +æ*0j§{> ,C {> {æ /(^rp(ü oý ró(ps} z-*Y+µ(^r@p(ü oý ró(ps} z0$( &}‡ {‡ }ˆ }‰ *0+Š{‰ ,{ˆ {1 ,{2 *(+*(+*0(Š *0U™{‰ ,3{ˆ {1 ," {1 }ˆ {ˆ {1 þþ**}‰ {ˆ {1 þþ*0 (Š Œ®*0}‰ {‡ }ˆ *0*0 (‹ &*0 sŒ *0›ŒŒ uv , *s *V(V }Ž } *0{Ž { þo *0}‘ (Å &*0{‘ o’ þox *0 (“ &*0 s” *02žŒ uŽ , *u” , s• *s– *V(Å }— }˜ *0{— {˜ þo™ *0}š (› &*0{š oœ þo *0}ž (› &*0{ž oŸ þ(+*0 (  &*0J¢Œ u , *uš , s¡ *uœ, s¢ *s£ *0 s¤ *0}¥ (¦ &*0{¥ o§ þo¨ *0}© (¦ &*0{© oª þ(+*0}¬ (¦ &*0{¬ o­ þ( +*V(› }¯ }° *0 {¯ {° þo± *0 (² &*0 s³ *0b§Œ‘ u’ , *u¤ , s´ *u¦, sµ *u¨, s¶ *s· *V(¦ }¸ }¹ *0 {¸ {¹ þoº *0}» (¼ &*0 {» o½ þo¾ *0}¿ (¼ &*0{¿ oÀ þ(!+*0} (¼ &*0{ oà þ("+*0}Å (¼ &*0 {Å oÆ þ(#+*0<4ŒÈ ,+uF , (ˆ ¥Jþo‰ * þoŠ *rˆ8p*0 þ(â+*0 þ($+*0 þ(%+*0 þ(ã+*0 þ(&+*0 ('+*0 ()+*0 (á+*0 (à+*0('+,**0('+,**0 ('+*0((+*0~í *0~î *0~ï *0 þ(è+*0 þ(é+*0 þ()+*0sÈ *0sÉ *0~ð *0~ñ *0~ò *0~ó *0~ô *0~õ *0~ö *0~÷ *0~ø *0~ù *0~ú *0~û *0~ü *0~ý *0~þ *0ÉÐH(¸ oM ,*Ðs(¸ oM ,*Ð:(¸ oM ,*Б(¸ oM ,*Ð’(¸ oM ,*Ð[(¸ oM ,*ÐŽ(¸ oM ,*Ð%(¸ oM ,*Ð3(¸ oM ,(—Œ”¥š*sÊ *0õБ(¸ oM ,(ŸŒœ¥š*Ð’(¸ oM ,( Œ¥š*К(¸ oM ,(¡Œž¥š*Ð[(¸ oM ,(¢ŒŸ¥š*ÐŽ(¸ oM ,(£Œ ¥š*Ð%(¸ oM ,(¤Œ¡¥š*Ð3(¸ oM ,(—Œ”¥š*sË *0÷Ð<(¸ oM ,(–Œ“¥š*Ð(¸ oM ,(˜Œ•¥š*Ð(¸ oM ,(™Œ–¥š*ÐH(¸ oM ,(šŒ—¥š*Ðs(¸ oM ,(›Œ˜¥š*Л(¸ oM ,(œŒ™¥š*Ð:(¸ oM ,(žŒ›¥š*(*+*0~Ì *0~Í *0 ŒÈ¥S*0 ŒÈ¥S*0*0*0*0*0*0*0*0!™(Î x3+oþ,*bþ*01-X þþ,( 0þ+,X( (³**0+(´,XX( (Î sÏ *dsÏ *00-X þþ,( -þ+,sc *sc *0@-X þþ,( -þ+,!ÿÿÿÿÿÿÿÿsÐ *!sÐ *0 i™/bX!Z( 02 7þþ+,(Ñ 0(Ñ Y+(^rmOp(ü oý sÜ zX+™*0¨  !(¸*0 i/bX!Z( 0YE&(^rmOp(ü oý sÜ z!+ !X+™*0¨  !(º*0Öª(á , r@8psà z(Ò ( (µ (Ó (Ô 2(^rmOp(ü oý sÜ z bYE_ oYEC xYE(Õ (ˆ ¥J(Ö *(Õ (ˆ ¥J(Ö *(¹(× *(»(× *0«(á , r@8psà z(Ò ( (¶ (À (% (µ(Ó (Ô 2(^rmOp(ü oý sÜ z(ˆ (Ø bYEcoYEDxYE(ˆ ¥J(Ù * (Õ (ˆ ¥J(Ú (× Z* (¹(× Z* (»(× Z*0ù­(á , r@8psà z(Ò ( (· (Û (Ü (µ(Ó (Ô 2(^rmOp(ü oý sÜ z(ˆ (Ø bYEYoYE?xYE(ˆ ¥J(Ý * (Õ (ˆ ¥J(Ý Z* (¹Z* (»Z*0̪(á , r@8psà z(Ò ( (µ (Ó (Ô 2(^rmOp(ü oý sÜ z bYEZ oYEC xYE(Õ (ˆ ¥J(Ú *(Õ (ˆ ¥J(Ú *(¹*(»*01÷Ð;(¸ oM , Œ;¥È*Ð:(¸ oM , Œ:¥È*Б(¸ oM , Œ‘¥È*Ð’(¸ oM ,!Œ’¥È*К(¸ oM ,!àŒš¥È*Ð%(¸ oM ,s; Œ%¥È*Ð[(¸ oM ,#Œ[¥È*ÐŽ(¸ oM ,"ŒŽ¥È*rOpoÛ o½ ¥È*01÷Ð:(¸ oM , Œ:¥È*Ð<(¸ oM , Œ<¥È*Б(¸ oM , Œ‘¥È*Ð’(¸ oM ,!Œ’¥È*К(¸ oM ,!àŒš¥È*Ð%(¸ oM ,s; Œ%¥È*Ð[(¸ oM ,#ð?Œ[¥È*ÐŽ(¸ oM ,"€?ŒŽ¥È*r—OpoÛ o½ ¥È*0~Þ *0~ß *0(#+*0(ê+*0~à þ(++*0 þ(++*0įrŸOp%¤%¤o oM ,+"rŸOp%¤%¤o ,9,-,¥¸+(^r·Op(ü oý sy z sâ * sã *, +ò,¥¸+(^rÝOp(ü oý sy z sä *0Ð;(¸ oM ,s,Œ¼¥¸*Ð:(¸ oM ,s.Œ½¥¸*Б(¸ oM ,s0Œ¾¥¸*Ð’(¸ oM ,s2Œ¿¥¸*К(¸ oM ,s4ŒÀ¥¸*Ð[(¸ oM ,s6ŒÁ¥¸*ÐŽ(¸ oM ,s8ŒÂ¥¸*Ð3(¸ oM ,s:ŒÃ¥¸*(,+*0~å þ(¶+*0įrŸOp%¤%¤o oM ,+"rŸOp%¤%¤o ,9,-,¥¸+(^r·Op(ü oý sy z sæ * sç *, +ò,¥¸+(^rÝOp(ü oý sy z sè *0Ð:(¸ oM ,sUŒ½¥¸*Ð<(¸ oM ,sWŒÈ¥¸*Б(¸ oM ,sYŒ¾¥¸*Ð’(¸ oM ,s[Œ¿¥¸*К(¸ oM ,s]ŒÀ¥¸*Ð[(¸ oM ,s_ŒÁ¥¸*ÐŽ(¸ oM ,saŒÂ¥¸*Ð3(¸ oM ,scŒÃ¥¸*(-+*0~é þ(¶+*0įrÿOp%¤%¤o oM ,+"rÿOp%¤%¤o ,9,-,¥¸+(^rPp(ü oý sy z sê * së *, +ò,¥¸+(^r?Pp(ü oý sy z sì *0Ð;(¸ oM ,s|Œ¼¥¸*Ð:(¸ oM ,s~Œ½¥¸*Б(¸ oM ,s€Œ¾¥¸*Ð’(¸ oM ,s‚Œ¿¥¸*К(¸ oM ,s„ŒÀ¥¸*Ð[(¸ oM ,s†ŒÁ¥¸*ÐŽ(¸ oM ,sˆŒÂ¥¸*Ð3(¸ oM ,sŠŒÃ¥¸*(.+*0~í þ(¶+*0įrÿOp%¤%¤o oM ,+"rÿOp%¤%¤o ,9,-,¥¸+(^rPp(ü oý sy z sî * sï *, +ò,¥¸+(^r?Pp(ü oý sy z sð *0Ð;(¸ oM ,s£Œ¼¥¸*Ð:(¸ oM ,s¥Œ½¥¸*Б(¸ oM ,s§Œ¾¥¸*Ð’(¸ oM ,s©Œ¿¥¸*К(¸ oM ,s«ŒÀ¥¸*Ð[(¸ oM ,s­ŒÁ¥¸*ÐŽ(¸ oM ,s¯ŒÂ¥¸*Ð3(¸ oM ,s±ŒÃ¥¸*(/+*0~ñ þ(¶+*0 ( &*0 þ(Ù+*0 þ(–+*0}ò ( &*0{ò þ(°+*0 þ(–+*0 ( &*0 4*þ*0 ( &*0 ( *0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0þ,*þ*0 ( &*0þ,*þ*0 ( &*0 þ(0+*0 ( &*0ûЮ(¸ Л(¸ oM ,(œŒ™¥J8„К(¸ oM ,(¡Œž¥J+`Ð;(¸ oM ,+JÐ<(¸ oM ,+4Ð(¸ oM ,+Ð(¸ oM ,+(1+€ó Ю(¸ Ð;(¸ oM ,(Œš¥J+(2+€ô *0~ô *0~ó *0 ( &*0 þ(3+*0 ( &*0 þ(3+*0 ( &*0ÓЮ(¸ Ð(¸ oM ,Œ¥®8Ð(¸ oM ,Œ¥®8zÐH(¸ oM ,ŒH¥®+ZÐs(¸ oM ,!Œs¥®+2Л(¸ oM ,!ÓŒ›¥®+ (4+€õ *0~õ *0 ( &*0öЮ(¸ Ð(¸ oM ,Œ¥®8ÀÐ(¸ oM ,Œ¥®8ÐH(¸ oM ,ŒH¥®8zÐs(¸ oM ,!Œs¥®+RЛ(¸ oM ,!ÓŒ›¥®+)Ð;(¸ oM ,Œ;¥®+ (5+€ö *0~ö *0 ( &*0é±Ю(¸ Ð%(¸ oM ,s ŒÖ¥§8¯Ð[(¸ oM ,s Œ×¥§8ˆÐŽ(¸ oM ,s ŒØ¥§+drcPp%¤%ÐH(¸ ¤o , s÷ +-,¥§+(^r{Pp(ü oý sy z sø €ù *0~ù *(ú *0(û (ü *(ý *0l[*(þ *0k[*:(ÿ } *0 3{ %Œ®¤%ŒH¤o ¥®*:( } *0{ þoð *:( } *0³{ o s *0 ( &*0´Ю(¸ Ð`(¸ Ðf(¸ oM , oM +9ÆÐ(¸ oM ,s"ŒÝ¥Œ8¨Ð(¸ oM ,s$ŒÞ¥Œ8ÐH(¸ oM ,s&Œß¥Œ+]Ðs(¸ oM ,s(Œà¥Œ+9Л(¸ oM ,s*Œá¥Œ+(6++ (7+€ *0~ *:(V } *0{ þo× *:(‹ }  *0¶{  o’ s  *:(Å }  *0 3{  %Œ®¤%Œ`¤o ¥f*:(V }  *0{  þo× *:(‹ }  *0¶{  o’ s *(¥ *0Xg*(¡ *0Xh*(Å *0X*(— *0X*( *0X*(§ *0XÒ*(£ *0XÑ*(› *0X*(™ *0X*(Ÿ *0X*(þ *0X*( *0X*( *0 (® *0 ( &*09´Ю(¸ Ð`(¸ Ðf(¸ oM , oM +9íÐ(¸ oM ,sIŒÝ¥Œ8ÏÐ(¸ oM ,sKŒÞ¥Œ8¨ÐH(¸ oM ,sMŒß¥Œ8Ðs(¸ oM ,sOŒà¥Œ+]Л(¸ oM ,sQŒá¥Œ+9Ð;(¸ oM ,sSŒ¼¥Œ+(8++ (9+€ *0~ *:(V } *0{ þo× *:(‹ } *0¶{ o’ s *:(Å } *0 3{ %Œ®¤%Œ`¤o ¥f*:(V } *0{ þo× *:(‹ } *0¶{ o’ s *(¥ *0Ö³*(¡ *0Öµ*(Å *0Ö*(— *0Ö*( *0Ö*(§ *0׆*(£ *0ׇ*( *0ׇ*(› *0×*(™ *0×*(Ÿ *0×*(þ *0X*( *0X*( *0 (® *0 ( &*0´Ю(¸ Ð`(¸ Ðf(¸ oM , oM +9ÆÐ(¸ oM ,srŒÝ¥Œ8¨Ð(¸ oM ,stŒÞ¥Œ8ÐH(¸ oM ,svŒß¥Œ+]Ðs(¸ oM ,sxŒà¥Œ+9Л(¸ oM ,szŒá¥Œ+(:++ (;+€ *0~ *:(V } *0{ þo× *:(‹ } *0¶{ o’ s *:(Å } *0 3{ %Œ®¤%Œ`¤o ¥f*:(V } *0{ þo× *:(‹ } *0¶{ o’ s  *(¥ *0Zg*(¡ *0Zh*(Å *0Z*(— *0Z*( *0Z*(§ *0ZÒ*(£ *0ZÑ*(› *0Z*(™ *0Z*(Ÿ *0Z*(þ *0Z*( *0Z*( *0 (® *0 ( &*0´Ю(¸ Ð`(¸ Ðf(¸ oM , oM +9ÆÐ(¸ oM ,s™ŒÝ¥Œ8¨Ð(¸ oM ,s›ŒÞ¥Œ8ÐH(¸ oM ,sŒß¥Œ+]Ðs(¸ oM ,sŸŒà¥Œ+9Л(¸ oM ,s¡Œá¥Œ+(<++ (=+€! *0~! *:(V }" *0{" þo× *:(‹ }# *0¶{# o’ s$ *:(Å }% *0 3{% %Œ®¤%Œ`¤o ¥f*:(V }& *0{& þo× *:(‹ }' *0¶{' o’ s( *(¥ *0س*(¡ *0ص*(Å *0Ø*(— *0Ø*( *0Ø*(§ *0Ù†*(£ *0Ù‡*(› *0Ù*(™ *0Ù*(Ÿ *0Ù*(þ *0Z*( *0Z*( *0 (® *0ŒÈŒÈþ*0 ŒÈ( *0-h(¼ oŠ (^r£Pp(ü oý (À s$ z0~æ *0Ë·uå 9uuå ,   (Á*u,?u,(Â*uS,  (À*(>+*uS,í +Ýu,(u, +¡uS,¹ +©uS,§ 8”ÿÿÿ0͸(»+-U(º+-8¬(º+-+漏 ¥Ž (> , (> +, {Ý +,(¶z8f(»+-'(º+-+¡(º+-8”ÿÿÿ¥Ž ¥Ž +£¥[ ¥[ (@ , (@ +, {Ý +,(¶zþoÄ *0i»9\9Tu3 9ßu3 ,   ( *uS,þ(·*uS,¥"þoê*u,  þ(¸*(E+:·(F+-auS,$  ¥"oê  /* 1**u  ,   oÄ   /* 1**(>+*(F+-'uS,  8’ÿÿÿu  ,Ð  +°¥š ¥š 4* þ*(E+:(F+--uS,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(F+--uS,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥š ¥š8gÿÿÿ¥›¥›/*þ*uS, 83þÿÿuS, 8<þÿÿu,  8Hþÿÿ(E+:(F+--uS,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(F+--uS,  8þÿÿu  9Wþÿÿ  84þÿÿ¥š ¥š8þÿÿ(E+:(F+--uS,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(F+--uS,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥š ¥š8õýÿÿ¥›¥›8‰þÿÿ*,**0@-2*() () (¹ ,*!X+À0 d- 2*X X(* X X(* (¹ ,* !X +œ0 ~½      2* !(»  , * !X 8‚ÿÿÿ0c¾2*(+ (+ /+þ ,*(— (— /+þ , *X+0 }-2*X¤sY3(, (, (¹+X(¿ ,*!X8ƒÿÿÿ0 2-2*(— j!(+ (¾*0 ÏÀ(• 3 (• þ+,?(- (- /+þ ,* !(º*(• 3 (• þ+9ç(+ (+ /+þ ,*(+ (+ /+þ,*(— j (— j (— j (— j   /+  þ  , *  /+  þ,*         !(¼*(• (•   /+ þ ,*(•  (½,*s (¿*0RˆŽi Ži /+þ ,*  /* £ £(¹,  +Ù X +Ò*0aÁŽi Ži /+þ ,*  /9 £; £;/+þ,  +Ê X +Ã*0~ç *0~è *0ŒÈŒÈþo. *0(Ä¥"þ(&+*04 (Ã¥"(&+þ Þt (¶(F , Þþ*04 (Ã¥"(&+þ Þt (¶(F , Þþ*04 (Ã¥"(&+þ Þt (¶(F , Þþ*04 (Ã¥"(&+þ Þt (¶(F , Þþ*0DÂŽi Ži þ -*  /% £; £;þ- +Þ X +×*0DÂŽi Ži þ -*  /% £H £Hþ- +Þ X +×*0', þþ+, þþ+,*þ*0HÂŽi Ži þ -*  /) £Ž £Ž(Í- +Ú X +Ó*0', þþ+, þþ+,*þ*0HÂŽi Ži þ -*  /) £[ £[(Ï- +Ú X +Ó*0DÂŽi Ži þ -*  /% £< £<þ- +Þ X +×*0DÂŽi Ži þ -*  /% £s £sþ- +Þ X +×*0TÅuå 9¿uå ,   (Ü*u9çu,(Ë*u79öu7  ,     (Ì*u  9ûu  ,  (Ò*u9ûu,(Ñ*u9ƒu,(Î*u,Eu,(Ð*uS,(Û*þo *uS,ê+Øu,(u, +šuS,µ+£uS,£8Žÿÿÿu,ou, 8!ÿÿÿu,1u, 8'ÿÿÿuS9?ÿÿÿ8*ÿÿÿuS9'ÿÿÿ8ÿÿÿu,1u, 8ÑþÿÿuS9éþÿÿ8ÔþÿÿuS9Ñþÿÿ8¼þÿÿu9ëu, 8þÿÿu,ou, 8&þÿÿu,1u, 8,þÿÿuS9Dþÿÿ8/þÿÿuS9,þÿÿ8þÿÿu,1u, 8ÖýÿÿuS9îýÿÿ8ÙýÿÿuS9Öýÿÿ8Áýÿÿu,ou, 8Týÿÿu,1u, 8ZýÿÿuS9rýÿÿ8]ýÿÿuS9Zýÿÿ8Eýÿÿu,1u, 8ýÿÿuS9ýÿÿ8ýÿÿuS9ýÿÿ8ïüÿÿu  9æu  ,   8#üÿÿu9ëu, 8(üÿÿu,ou, 80üÿÿu,1u, 86üÿÿuS9Nüÿÿ89üÿÿuS96üÿÿ8!üÿÿu,1u, 8àûÿÿuS9øûÿÿ8ãûÿÿuS9àûÿÿ8Ëûÿÿu,ou, 8^ûÿÿu,1u, 8dûÿÿuS9|ûÿÿ8gûÿÿuS9dûÿÿ8Oûÿÿu,1u, 8ûÿÿuS9&ûÿÿ8ûÿÿuS9ûÿÿ8ùúÿÿu9ëu, 8[úÿÿu,ou, 8cúÿÿu,1u, 8iúÿÿuS9úÿÿ8lúÿÿuS9iúÿÿ8Túÿÿu,1u, 8úÿÿuS9+úÿÿ8úÿÿuS9úÿÿ8þùÿÿu,ou, 8‘ùÿÿu,1u, 8—ùÿÿuS9¯ùÿÿ8šùÿÿuS9—ùÿÿ8‚ùÿÿu,1u, 8AùÿÿuS9Yùÿÿ8DùÿÿuS9Aùÿÿ8,ùÿÿu79Üu7  ,    82øÿÿu  9æu  ,   87øÿÿu9ëu, 8<øÿÿu,ou, 8Døÿÿu,1u, 8JøÿÿuS9bøÿÿ8MøÿÿuS9Jøÿÿ85øÿÿu,1u, 8ô÷ÿÿuS9 øÿÿ8÷÷ÿÿuS9ô÷ÿÿ8ß÷ÿÿu,ou, 8r÷ÿÿu,1u, 8x÷ÿÿuS9÷ÿÿ8{÷ÿÿuS9x÷ÿÿ8c÷ÿÿu,1u, 8"÷ÿÿuS9:÷ÿÿ8%÷ÿÿuS9"÷ÿÿ8 ÷ÿÿu9ëu, 8oöÿÿu,ou, 8wöÿÿu,1u, 8}öÿÿuS9•öÿÿ8€öÿÿuS9}öÿÿ8höÿÿu,1u, 8'öÿÿuS9?öÿÿ8*öÿÿuS9'öÿÿ8öÿÿu,ou, 8¥õÿÿu,1u, 8«õÿÿuS9Ãõÿÿ8®õÿÿuS9«õÿÿ8–õÿÿu,1u, 8UõÿÿuS9mõÿÿ8XõÿÿuS9Uõÿÿ8@õÿÿu  9æu  ,   8tôÿÿu9ëu, 8yôÿÿu,ou, 8ôÿÿu,1u, 8‡ôÿÿuS9Ÿôÿÿ8ŠôÿÿuS9‡ôÿÿ8rôÿÿu,1u, 81ôÿÿuS9Iôÿÿ84ôÿÿuS91ôÿÿ8ôÿÿu,ou, 8¯óÿÿu,1u, 8µóÿÿuS9Íóÿÿ8¸óÿÿuS9µóÿÿ8 óÿÿu,1u, 8_óÿÿuS9wóÿÿ8bóÿÿuS9_óÿÿ8Jóÿÿu9ëu, 8¬òÿÿu,ou, 8´òÿÿu,1u, 8ºòÿÿuS9Òòÿÿ8½òÿÿuS9ºòÿÿ8¥òÿÿu,1u, 8dòÿÿuS9|òÿÿ8gòÿÿuS9dòÿÿ8Oòÿÿu,ou, 8âñÿÿu,1u, 8èñÿÿuS9òÿÿ8ëñÿÿuS9èñÿÿ8Óñÿÿu,1u, 8’ñÿÿuS9ªñÿÿ8•ñÿÿuS9’ñÿÿ8}ñÿÿu9Èu, 8Uðÿÿu79Üu7  ,    8Zðÿÿu  9æu  ,   8_ðÿÿu9ëu, 8dðÿÿu,ou, 8lðÿÿu,1u, 8rðÿÿuS9Šðÿÿ8uðÿÿuS9rðÿÿ8]ðÿÿu,1u, 8ðÿÿuS94ðÿÿ8ðÿÿuS9ðÿÿ8ðÿÿu,ou, 8šïÿÿu,1u, 8 ïÿÿuS9¸ïÿÿ8£ïÿÿuS9 ïÿÿ8‹ïÿÿu,1u, 8JïÿÿuS9bïÿÿ8MïÿÿuS9Jïÿÿ85ïÿÿu9ëu, 8—îÿÿu,ou, 8Ÿîÿÿu,1u, 8¥îÿÿuS9½îÿÿ8¨îÿÿuS9¥îÿÿ8îÿÿu,1u, 8OîÿÿuS9gîÿÿ8RîÿÿuS9Oîÿÿ8:îÿÿu,ou, 8Ííÿÿu,1u, 8ÓíÿÿuS9ëíÿÿ8ÖíÿÿuS9Óíÿÿ8¾íÿÿu,1u, 8}íÿÿuS9•íÿÿ8€íÿÿuS9}íÿÿ8híÿÿu  9æu  ,   8œìÿÿu9ëu, 8¡ìÿÿu,ou, 8©ìÿÿu,1u, 8¯ìÿÿuS9Çìÿÿ8²ìÿÿuS9¯ìÿÿ8šìÿÿu,1u, 8YìÿÿuS9qìÿÿ8\ìÿÿuS9Yìÿÿ8Dìÿÿu,ou, 8×ëÿÿu,1u, 8ÝëÿÿuS9õëÿÿ8àëÿÿuS9Ýëÿÿ8Èëÿÿu,1u, 8‡ëÿÿuS9Ÿëÿÿ8ŠëÿÿuS9‡ëÿÿ8rëÿÿu9ëu, 8Ôêÿÿu,ou, 8Üêÿÿu,1u, 8âêÿÿuS9úêÿÿ8åêÿÿuS9âêÿÿ8Íêÿÿu,1u, 8ŒêÿÿuS9¤êÿÿ8êÿÿuS9Œêÿÿ8wêÿÿu,ou, 8 êÿÿu,1u, 8êÿÿuS9(êÿÿ8êÿÿuS9êÿÿ8ûéÿÿu,1u, 8ºéÿÿuS9Òéÿÿ8½éÿÿuS9ºéÿÿ8¥éÿÿu79Üu7  ,    8«èÿÿu  9æu  ,   8°èÿÿu9ëu, 8µèÿÿu,ou, 8½èÿÿu,1u, 8ÃèÿÿuS9Ûèÿÿ8ÆèÿÿuS9Ãèÿÿ8®èÿÿu,1u, 8mèÿÿuS9…èÿÿ8pèÿÿuS9mèÿÿ8Xèÿÿu,ou, 8ëçÿÿu,1u, 8ñçÿÿuS9 èÿÿ8ôçÿÿuS9ñçÿÿ8Üçÿÿu,1u, 8›çÿÿuS9³çÿÿ8žçÿÿuS9›çÿÿ8†çÿÿu9ëu, 8èæÿÿu,ou, 8ðæÿÿu,1u, 8öæÿÿuS9çÿÿ8ùæÿÿuS9öæÿÿ8áæÿÿu,1u, 8 æÿÿuS9¸æÿÿ8£æÿÿuS9 æÿÿ8‹æÿÿu,ou, 8æÿÿu,1u, 8$æÿÿuS9<æÿÿ8'æÿÿuS9$æÿÿ8æÿÿu,1u, 8ÎåÿÿuS9æåÿÿ8ÑåÿÿuS9Îåÿÿ8¹åÿÿu  9æu  ,   8íäÿÿu9ëu, 8òäÿÿu,ou, 8úäÿÿu,1u, 8åÿÿuS9åÿÿ8åÿÿuS9åÿÿ8ëäÿÿu,1u, 8ªäÿÿuS9Âäÿÿ8­äÿÿuS9ªäÿÿ8•äÿÿu,ou, 8(äÿÿu,1u, 8.äÿÿuS9Fäÿÿ81äÿÿuS9.äÿÿ8äÿÿu,1u, 8ØãÿÿuS9ðãÿÿ8ÛãÿÿuS9Øãÿÿ8Ããÿÿu9ëu, 8%ãÿÿu,ou, 8-ãÿÿu,1u, 83ãÿÿuS9Kãÿÿ86ãÿÿuS93ãÿÿ8ãÿÿu,1u, 8ÝâÿÿuS9õâÿÿ8àâÿÿuS9Ýâÿÿ8Èâÿÿu,ou, 8[âÿÿu,1u, 8aâÿÿuS9yâÿÿ8dâÿÿuS9aâÿÿ8Lâÿÿu,1u, 8 âÿÿuS9#âÿÿ8âÿÿuS9 âÿÿ8öáÿÿ0îÇ9á9Ùu3 9u3 ,   ( *uS,þ(Ó*uT,þoë*(»+-X(º+- þo *(º+-+쥎¥Ž ,   þþ+, þþ+,* þ*(»+-)(º+-+ž(º+-8‘ÿÿÿ¥Ž¥Ž +£¥[ ¥[ ,   þþ+,   þþ+,*  þ*uS, 8óþÿÿuT, 8ýþÿÿ(»+-/(º+-8ÿÿÿ(º+-8÷þÿÿ¥Ž¥Ž 8ÿÿÿ(»+-/(º+-8Íþÿÿ(º+-8Àþÿÿ¥Ž¥Ž 8Ïþÿÿ¥[ ¥[ 8'ÿÿÿ*,**0 D2*() () (Ô, !X+¿*0h 2* X X(*  X X(* (Ô,4  !X  +›*0‚È        2*  !(Ö,7  !X  8ÿÿÿ*0@2*(+ (+ 3(— (— þ+,X+Ã*0 ‚ 2*X¤sY3(, (, (Ô+X(Ú,3!X  8€ÿÿÿ*0 5-2*(— j!(+ (Ù*0 wÉ(• 3 (• þ+,5(- (- 3!  !(Õ**(• 3 (• þ+9²(+ (+ @™(+ (+ @|(— j(— j (— j (— j  3   þ+,?          !(×****(• (• 3J(• (Ø,*s  (Ú***0IÂŽi Ži þ -*  /* £ £(Ô- +Ù X +Ò*0~é *0~ê *0(݌ȌÈþo/ *0(ތȌÈþo/ *0ŒÈŒÈþo/ *0*0~ë *0~ì *0OˆŽi Y 1 +  þþ,+ (É o0 bX w ZX Y +Ê*0IˆŽi Y 1 +  þþ,% £;bX w ZX Y +Ð*0IˆŽi Y 1 +  þþ,% £HbX w ZX Y +Ð*0JˆŽi Y 1 +  þþ,& £sibX w ZX Y +Ï*0‘)(• YE(˜ (˜ bX ¦X*(— (– XY X1X + þþ,- (É o0 bX wZX Y +Æ *0Ê9•uS ,g uå ,   (å*u, (æ*u7, (ç*u,   (è*(é*uT  ,   þoì*þo¶ **0(ä¥&ŒÈþ(ê*0s¥&ŒÈþ(ê*0ŒÈþ(ê*0%Ë(ž ( ()+ bX(?+a*0=Ì(@ (? (> ()+bX(?+a b X(@+a*0XÍ(1 (2 (3 (4 ()+bX(?+abX(@+bX (A+aa*0rÏ(5 (6 (7 (8 (9 ()+bX(?+abX(@+bX (A+aabX(B+a*04Ð(ž ( (ž ( (%+,  þ(C+**0UÑ(@ (? (> (@ (? (>  (%+, (C++, þ(D+**0vÒ(1 (2 (3 (4 (1 (2 (3 (4 (%+, (C++, (D++,  þ(E+**0—Ó(5 (6 (7 (8 (9 (5 (6 (7 (8 (9  (%+, (C++, (D++,  (E++,  þ(F+**09Ô(ž ( (ž ( (&+,* þ(G+*0\Õ(@ (? (> (@ (? (>  (&+,*(G+,*þ(H+*0Ö(1 (2 (3 (4 (1 (2 (3 (4 (&+,*(G+  , *(H+  , * þ(I+*0¢×(5 (6 (7 (8 (9 (5 (6 (7 (8 (9  (&+  , *(G+  , *(H+  , * (I+  , * þ(J+*0( &}Ý *0{Ý *0 þ(¹*0 þ(¹*0 ( &*0 þ(Ô*0(^rËPp(ü oý sE z0 ( &*0 þ(Ô*0(^rËPp(ü oý sE z0( &}Þ *0#|ß {Þ (  -*{Þ s*0¥&þ(Ô*0){ß Y}ß {ß 1¥&þ(ê**0 ( &*0¥&þ(Ô*0¥&þ(ê*0 ( &*0¥&þ(Ô*0¥&þ(ê*0*0*0*0*0*0(-þ,+~: þþ,¥È*s; z0¥È*0uÈþ,*þ,*~: þ*0 uÈþ*0wŒÈ, þÈoš **0(^r‚p(ü oý sE z0(^rïPp(ü oý sE z0%ŒÈ,*(^r‚p(ü oý sE z0 s; *0 ( *0(K+*0 £È*0 ¤È*0 ( *0 ( *0 rØ/+ /+ s Y 2AY2&XX( ( XX3ÚX X3¿*0@* Y 24 Y  2X X ( ( X X3áX X3Ì*0 ( *0 ( *0 ¨Ù/+ /+ /+ s Y2dY2H Y 2,  XX X( (  X  X3ÔXX3¸XX3œ *0 dˆ Y 2W Y  2BY2)X XX ( ( XX3× X X3¾X X3©*0 ( *0( *0 ãÚ/+ /+ /+ /+  s Y?‹Y2l Y   2P Y   24  XX X X( (  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 Ž8 Y ?~ Y  2fY2MY20X XXX  ( ( XX3ÐXX3³ X X3šX X@‚ÿÿÿ*0 ( &*0ÅÜЮ(¸ o= ,8£Ð%(¸ o´ Ži-8…Ð(¸ oM ,8lÐn(¸ o8 ,+VÐ(¸ o´ Ži1+<Ð'(¸ o´ Ži-+!£ ¥'(Y_-+€> *0~> *0,**0,**0,**0,**0 rQpsP z0 rwQpsP z0~á *0~â *0~ã *0~ä *0~å *0}.ŽiY 1\ ZX/OZ X 3£H¤H +)£HbX£Ha¤H 3 +X +©+ £H bX£Ha*0Hâ{? {? @.(@ E3j¡Øt  t  (Ž{A  {A þ(&+*t t (Ž{B  {B    þ(G+*t  t  (Ž {C   {C  þ(H+*tt(Ž{D {D þ(I+*tt(Ž{E {E þ(J+*Y*00㥠þ9{? {? @(@ E+Z‰¸t  t  {A  {A þ(&+*t t {B {B   þ(G+*t  t   {C   {C    þ(H+*tt{D {D þ(I+*tt{E {E þ(J+*Y**0/åu  9{? {? @(@ E-\‹ºt  t  {A {A þ(%+*t t {B  {B    þ(C+*t  t   {C   {C  þ(D+*tt{D {D þ(E+*tt{E {E þ(F+***0\í(F E/d™Ît t (Ž {G {G  þ(&+*tt(Ž {H {H þ(G+*t t (Ž  {I   {I    þ(H+*t t(Ž  {J {J þ(I+*tt(Ž {K {K þ(J+*tt(Ž {L {L þ(L+*0Sî{M {M @9(F E+Z‰¸çt t {G  {G þ(&+*tt{H {H   þ(G+*t t  {I   {I    þ(H+*tt{J {J þ(I+*tt{K {K þ(J+*tt{L {L þ(L+*Y*0Fï (F E-\¾ït  ¹y7ž{G ŒÈ(êbcXXX *t  ¹y7ž {H ŒS(êbcXXX *t ¹y7ž{I Œ((êbcXXX *t ¹y7ž{J Œ/(êbcXXX *t  ¹y7ž {K   Œ(êbcXXX *t  ¹y7ž {L   Œ(êbcXXX *0Qî{M {M @9(F E+Z‰¸çt t {G  {G þ(%+*tt{H {H   þ(C+*t t  {I   {I    þ(D+*tt{J {J þ(E+*tt{K {K þ(F+*tt{L {L þ(M+**0Kî{M {M @3(F E*X†´ât t {G  {G þ($+*tt{H {H   þ(N+*t t  {I   {I    þ(O+*tt{J {J þ(P+*tt{K {K þ(Q+*tt{L {L þ(R+**0•ø(N E/d™Î8t t (Ž {O {O  þ(&+*tt(Ž {P {P þ(G+*t t (Ž  {Q   {Q    þ(H+*t t(Ž  {R {R þ(I+*tt(Ž {S {S þ(J+*tt(Ž {T {T þ(L+*t t (Ž {U {U þ(S+*0iù(N E'V…´ãt t {O {O  þ(&+*tt{P {P þ(G+*tt {Q   {Q    þ(H+*t t  {R  {R þ(I+*tt{S {S þ(J+*tt{T {T þ(L+*t t {U {U þ(S+*0{ú (N E-\¾ï t  ¹y7ž{O ŒÈ(êbcXXX *t  ¹y7ž {P ŒS(êbcXXX *t ¹y7ž{Q Œ((êbcXXX *t ¹y7ž{R Œ/(êbcXXX *t  ¹y7ž {S   Œ(êbcXXX *t  ¹y7ž {T   Œ(êbcXXX *t   ¹y7ž {U Œ!(êbcXXX *0iù(N E'V…´ãt t {O {O  þ(%+*tt{P {P þ(C+*tt {Q   {Q    þ(D+*t t  {R  {R þ(E+*tt{S {S þ(F+*tt{T {T þ(M+*t t {U {U þ(T+*0bù(N E&T‚°Þ t t {O {O  þ($+*tt{P {P þ(N+*tt {Q   {Q    þ(O+*t t  {R  {R þ(P+*tt{S {S þ(Q+*tt{T {T þ(R+*t t {U {U þ(U+*07§{> ,. {> {æ /¤ÈX+Ë**0ª(^ríQp(ü oý €á (^rRp(ü oý €â (^r=Rp(ü oý €ã (^rcRp(ü oý €ä (^rp(ü oý €å s} €æ sú€ç sú€è sþ€é s€ê s€ë s €ì (Ä¥"€í (ä¥&€î (ã¥&€ï sÚ€ð sÜ€ñ sÞ€ò sà€ó sâ€ô sä€õ sæ€ö sè€÷ sê€ø sì€ù sî€ú sð€û sò€ü sô€ý sö€þ rRpsE sª€0*:(V }V *0{V þoW *0}X ( *0{X þo× *:(V }Y *0{Y þoW *0}Z ( *0{Z þo× *:(3 }[ *0{[ o\ *:(V }] *0{] þoW *:(Å }^ *0{^ st þo_ *:(› }` *0{` s° þoa *:(¦ }b *0 {b sc þod *:(¼ }e *0 {e sf þog *0~ *0r p*0rç@p*0r@p*0r#@p*0rŠp*0r¿<p*0r“<p*0rë<p*0rïRp*0rSp*0rISp*0rÃ@p*0rp*0rCAp*0r=Rp*0rHp*0rnp*0rí;p*0rËp*0rcRp*0rqSp*0r p*0r9 p*0rŸSp*0rQ!p*0ry!p*0rp*0r?p*0r§!p*0r¿Sp*0r5Bp*0rÏp*0ríQp*0r£Pp*0rËPp*0rmOp*0r{Pp*0rÝOp*0r·Op*0r?Pp*0rPp*0rÙSp*0rGMp*0rsMp*0r•Mp*0rµMp*0r‚p*0rïPp*0rRp*0r2p*0r7;p*0rPp*0rÞp*0rlp*0r <p*0rù:p*0r;p*0r[;p*0r…;p*0r«;p*0rÏ;p*0rp*0r¾p*0r±?p*0rop*0r¿2p*0rã2p*0r3p*0r_3p*0r3p*0r4p*0rÕ3p*0rC4p*0r'5p*0rO5p*0r‰4p*0rË9p*0r¹:p*0r Ap*0rp*0ryAp*0r1&p*0rm&p*0r­&p*0r'.p*0rK.p*0rÝ%p*0r³%p*0r¥'p*0rõ0p*0rÏ'p*0r1(p*0r1p*0r™(p*0r51p*0rq1p*0r{)p*0r¯)p*0rã)p*0rµ1p*0r‹*p*0r+p*0rs+p*0rË+p*0rý+p*0r),p*0r!0p*0rg0p*0rE'p*0rñSp*0rs'p*0r(p*0r_(p*0rÅ(p*0r÷(p*0r+)p*0r *p*0rI*p*0rÙ*p*0r­*p*0r³,p*0r;-p*0ry-p*0r¯-p*0ru.p*0r10p*0r%p*0r'p*0r‹,p*0rë,p*0r-p*0r».p*0rÛ1p*0r p*0(^(ü þoý *0(^(ü oý (À *0(^(ü oý (h *0(^(ü oý (7 *0›rTp(i sj € *sk *"s? *&s< **sl *2sm *:sn *Bso *0 sp sq *"bXa*:(ø(ø*R(ø(ø(ø*F(ú(ø*b(ú(ø(ø*j(ú(ù(ø*r(ú(ú(ø*{r *:( }r *6(s oë*0.ü-*u4 -*{r Œ®{r Œ®o/ *6(t oê*0Wý-*u4 -+rTp (¼ oŠ ¢(qrgTps} z{r Œ®{r Œ®o. *2(s oì*J{r Œ®o0 *"oì*0s8 r¢7po  &oí*–{r Œ®ou &rVpo  &oŠ * *{v *{w *V( }v }w *6(s oë*0Nþ-*uÅ -*{v Œ®{v Œ®o/ ,{w Œ`{w Œ`o/ **6(t oê*0{ÿ-*uÅ -+rTp (¼ oŠ ¢(qrgTps} z {v Œ®{v Œ®o. ,*{w Œ`{w Œ`o. *2(s oì*¢{v Œ®o0 {w Œ`o0 (ø*"oì*0s8 r¢7po  &oí*0C{v Œ®ou &rsTpo  &{w Œ`ou &rVpo  &oŠ * *{x *{y *{z *r( }x }y }z *6(s oë*0l-*uJ -*{x Œ®{x Œ®o/ ,;{y Œ`{y Œ`o/ ,{z Œf{z Œfo/ **6(t oê*0-*uJ -+rTp (¼ oŠ ¢(qrgTps} z {x Œ®{x Œ®o. ,*{y Œ`{y Œ`o. ,*{z Œf{z Œfo. *2(s oì*æ{x Œ®o0 {y Œ`o0 {z Œfo0 (ù*"oì*0s8 r¢7po  &oí*0a{x Œ®ou &rsTpo  &{y Œ`ou &rsTpo  &{z Œfou &rVpo  &oŠ * *{{ *{| *{} *{~ *’( }{ }| }} }~ *6(s oë*0Š-*u* -*{{ Œ®{{ Œ®o/ ,Y{| Œ`{| Œ`o/ ,;{} Œf{} Œfo/ ,{~ Œn{~ Œno/ **6(t oê*0¿-*u* -+rTp (¼ oŠ ¢(qrgTps} z {{ Œ®{{ Œ®o. ,*{| Œ`{| Œ`o. ,*{} Œf{} Œfo. ,*{~ Œn{~ Œno. *2(s oì*0J{{ Œ®o0 {| Œ`o0 {} Œfo0 {~ Œno0 (ú*"oì*0s8 r¢7po  &oí*0{{ Œ®ou &rsTpo  &{| Œ`ou &rsTpo  &{} Œfou &rsTpo  &{~ Œnou &rVpo  &oŠ * *{ *{€ *{ *{‚ *{ƒ *²( } }€ } }‚ }ƒ *6(s oë*0«-*u- -*{ Œ®{ Œ®o/ 9w{€ Œ`{€ Œ`o/ ,Y{ Œf{ Œfo/ ,;{‚ Œn{‚ Œno/ ,{ƒ Œx{ƒ Œxo/ **6(t oê*0á-*u- -+rTp (¼ oŠ ¢(qrgTps} z { Œ®{ Œ®o. ,*{€ Œ`{€ Œ`o. ,*{ Œf{ Œfo. ,*{‚ Œn{‚ Œno. ,*{ƒ Œx{ƒ Œxo. *2(s oì*0[{ Œ®o0 {€ Œ`o0 { Œfo0 {‚ Œno0 {ƒ Œxo0 (û*"oì*0s8 r¢7po  &oí*0{ Œ®ou &rsTpo  &{€ Œ`ou &rsTpo  &{ Œfou &rsTpo  &{‚ Œnou &rsTpo  &{ƒ Œxou &rVpo  &oŠ * *{„ *{… *{† *{‡ *{ˆ *{‰ *Ò( }„ }… }† }‡ }ˆ }‰ *6(s oë*0Ì -*u7 -*{„ Œ®{„ Œ®o/ 9˜{… Œ`{… Œ`o/ 9w{† Œf{† Œfo/ ,Y{‡ Œn{‡ Œno/ ,;{ˆ Œx{ˆ Œxo/ ,{‰ Œ8{‰ Œ8o/ **6(t oê*0 -*u7 -+rTp (¼ oŠ ¢(qrgTps} z {„ Œ®{„ Œ®o. ,*{… Œ`{… Œ`o. ,*{† Œf{† Œfo. ,*{‡ Œn{‡ Œno. ,*{ˆ Œx{ˆ Œxo. ,*{‰ Œ8{‰ Œ8o. *2(s oì*0l{„ Œ®o0 {… Œ`o0 {† Œfo0 {‡ Œno0 {ˆ Œxo0 {‰ Œ8o0 (ü*"oì*0s8 r¢7po  &oí*0»{„ Œ®ou &rsTpo  &{… Œ`ou &rsTpo  &{† Œfou &rsTpo  &{‡ Œnou &rsTpo  &{ˆ Œxou &rsTpo  &{‰ Œ8ou &rVpo  &oŠ * *{Š *{‹ *{Œ *{ *{Ž *{ *{ *ò( }Š }‹ }Œ } }Ž } } *6(s oë*0í -*u9 -*{Š Œ®{Š Œ®o/ 9¹{‹ Œ`{‹ Œ`o/ 9˜{Œ Œf{Œ Œfo/ 9w{ Œn{ Œno/ ,Y{Ž Œx{Ž Œxo/ ,;{ Œ8{ Œ8o/ ,{ Œ:{ Œ:o/ **6(t oê*0%-*u9 -+rTp (¼ oŠ ¢(qrgTps} z {Š Œ®{Š Œ®o. ,*{‹ Œ`{‹ Œ`o. ,*{Œ Œf{Œ Œfo. ,*{ Œn{ Œno. ,*{Ž Œx{Ž Œxo. ,*{ Œ8{ Œ8o. ,*{ Œ:{ Œ:o. *2(s oì*0}{Š Œ®o0 {‹ Œ`o0 {Œ Œfo0 { Œno0 {Ž Œxo0 { Œ8o0 { Œ:o0 (ý*"oì*0s8 r¢7po  &oí*0Ù{Š Œ®ou &rsTpo  &{‹ Œ`ou &rsTpo  &{Œ Œfou &rsTpo  &{ Œnou &rsTpo  &{Ž Œxou &rsTpo  &{ Œ8ou &rsTpo  &{ Œ:ou &rVpo  &oŠ * *{‘ *{’ *{“ *{” *{• *{– *{— *{˜ *0b( Œ<uU-ryTp(rs$ z}‘ }’ }“ }” }• }– }— }˜ *6(s oë*0-*u; -*{‘ Œ®{‘ Œ®o/ 9Ú{’ Œ`{’ Œ`o/ 9¹{“ Œf{“ Œfo/ 9˜{” Œn{” Œno/ 9w{• Œx{• Œxo/ ,Y{– Œ8{– Œ8o/ ,;{— Œ:{— Œ:o/ ,{˜ Œ<{˜ Œ<o/ **6(t oê*0G-*u; -+rTp (¼ oŠ ¢(qrgTps} z {‘ Œ®{‘ Œ®o. ,*{’ Œ`{’ Œ`o. ,*{“ Œf{“ Œfo. ,*{” Œn{” Œno. ,*{• Œx{• Œxo. ,*{– Œ8{– Œ8o. ,*{— Œ:{— Œ:o. ,*{˜ Œ<{˜ Œ<o. *2(s oì*0 {˜ Œ<tU oï2oî*oïY  YE#R’ãE¸87{— Œ:o0 oî(ø*{– Œ8o0 {— Œ:o0 oî(ù*{• Œxo0 {– Œ8o0 {— Œ:o0 oî(ú*{” Œno0 {• Œxo0 {– Œ8o0 {— Œ:o0 oî(û*{“ Œfo0 {” Œno0 {• Œxo0 {– Œ8o0 {— Œ:o0 oî(ü*{’ Œ`o0 {“ Œfo0 {” Œno0 {• Œxo0 {– Œ8o0 {— Œ:o0 oî(ý*{‘ Œ®o0 {’ Œ`o0 {“ Œfo0 {” Œno0 {• Œxo0 {– Œ8o0 {— Œ:o0 oî(þ**"oì*0s8 r¢7po  &oí*0é{‘ Œ®ou &rsTpo  &{’ Œ`ou &rsTpo  &{“ Œfou &rsTpo  &{” Œnou &rsTpo  &{• Œxou &rsTpo  &{– Œ8ou &rsTpo  &{— Œ:ou &rsTpo  &{˜ Œ<tUoí*b{˜ Œ<tUoïX*BSJB v2.0.50727lÄ#~04x#Stringsd‹ÔT#US8à#GUIDHàl(#BlobWß¶+ ú3¡^/ z7>˜Ô&~Ìèé=•tü U8,%d%q%%*%ÛÀ« Àô ˆ À¦ À£ %%N%R?Þ%/?;ÀU%³ÀÁÀ%%(õ'$(%¥(õ')õ'»)%g0À]8%¼8ª8ì8ª8•9ª8Å?ª8¯@ª8H?Lª8mXÀ¡^%Én?ópª8qª8/qª8Lqª8eqª8|qª8—qª8Ãq°q»×q8r% r°q»r°qo %sas¤uÀöxìxyìx0yìx>y%Óy%Úy%3r%.€%t€W€†€W€î€ìxù€ìxìxìxìx0$¶%ÃìxÎ%Ô õ%;‚°q’‚ìx0ƒìxqƒìxD„%Œ$WŒ%MTasMY%%p•°qŽ•°qø¥%×¨Ϊª8h«%i¬%v¬ y±%ˆ±% ±%æ¸Õ¸¹%w¹%€»$½%<¾W€b¾W€¿%Â%æÃª8Ī8XÄ%ƪ8xƪ8ýÇ%©Ê%ÇÊ%±ª8»ÜœÜ*Ý%eÞ%}Þ$Çß%‘à$Ïà$ á$0á$Lá$wá$ä$hç$é%ôìõ'íõ'í%)íõ'Aíõ'îìíþîìx¾ï$ð$Pô$Vô$nô$Ÿô$‘ö%³ö%âö%÷%/÷%Q÷% ú%Mª8eª8Ñ%_H€%¨%%%&!%•/ÀYX%íX%ÅvÀwÀ![<!‹<!< !©<L!µ<Q  ãÃW!ïÃ^!Ã$f  Ã4x Ã6 4Ã6‰€R;7“ Y7¤ c8¦ l8¨ w8ª ‚8¬ 8® ˜8° ¡8² ®9´ ¶9¶ À":¸ Ê&;º Ô*<¼ Þ.=¾ ê=À õ"> þ?Ä  "@Æ 2AÈ 2BÊ *CÌ 56DÎ @EÐ L:FÒ X>GÔ cBHÖ nFIØ yJJÚ „KÜ 6LÞ œMà ¨"Nâ ´Oä À"Pæ ÌNQè ØSê ä"Tì€RðUî€;]ï "Ré .Vé  BZê  TVë iZì |Ví ‘Zî ¦Vï »Zð€ðñ€Ð;õ ×þ5…Ýo$â(o$ó)q$ø*s$ý+u$,w -y*.{>/}R0h1 }2ƒ…ÝLÁ …eÁ…Ýsç “v€ç ªv€é Ãv€ë Üv€í õv€ï v€ñ 'v€ó @v€õ Yv€÷ rv€ù ‹v€û ¥v€ý ¿v€ÿ Ùv€ óv€  v€ 'v€ Av€  [v€  uv€  v€©z€ Âv… Üv… öv… v… *v… Dv…! ^v…# xv…%’z…' «vŠ- ÅvŠ/ ßvŠ1ù~Š3 v9 ,v; F‚= Q†? ^ŠA€ÐðCk;šD oŽšl ˆšn –šp ¤’šr ê–št ššv" š |> ~¤‚N ~ªˆ!` ®Ž‚ e ²›‚ݳ°$l ¸°$p ¹²$t º´$x »¶$} ¼¸ƒ ½º– ¾¼© ¿¾¼ ÀÀÐ Á å ÂÄ‚ÝÄØ$ë @ÈØ$ô @ÉÚ$ @ÊÜ ËÞ' ÌàF Íâ!` Îä!h Òî p Öü { Â×  ÆÙ — Êܹ zÝÍ zâ  á Êæ õ Îç  Òç2 zç F Öñ P ô  ] Úõ) g Þõ+ x âõ-%ž õ/ º êõ2 Í ÷4%à ù6 ê îù9 ö òú;  .û=  öû?  úûA . þýC€kðþE€M : F… Q N…Ý_$V Ô_$\ Ôa$b Ôc$f Ôe$k Ôg$o Ôi$v Ôk{ m o¥ q¸ sÌ uß wõ y  {  }  ‡€M  ‘€F Ã!’€S Ã!” b !œm $  y +¦‹ -¨ !™ -4®­ 7² ¼ <ºË <¼ Ø A î AÄ BÆNÌ 1TÒ DTÔW UÖ€|haÜŠaÜ€’<g‧hgä ´gë Éhíã"iïù&kñmó)*põ Ar÷ V.sù k"tû ytý ‰*tÿ ™t¬.u Á.v Ð2w á6x  ù:z   :|  !: 9:‡ Q: a>Ž iÞ sB ‹:’ ›:” ³:š Ë: ! ÛF¡# åÞ¢%€ï£'€=£'€D£'i-£'z-£'‹-£'›-£'¬-£'½-£'Î-£'Þ-£'!v ï£'!ï1£+!ï1°+!>ï5·+!Xï5¸.!oï5¸/!Žï5¸0!¯ï5¸1!Éï5¸2!àï5¸3!ýï5¹5!ï5¹6!)ï5º8!?ï5»;!Sï5»<!nï5»=!Œï5»>!¨ï5»?!¼ï5»@!Ôï5»A!îï5»B!ï5»C!!ï5»D!7ï5¼F!Gï5¼G!Xï5¼H!~ï5¼I!‘ï5¼J! ï5¼K!±ï5¼L!Õï5¿P!ñï5ÂV!ï5ÃX!3ï5ÄZ!Iï5Å\!lï5Æ^!ï5Ç`!¦ï5Ëh!¼ï5Ëi!Ùï5Ëj!óï5Ëk!ï5Ël!6ï5Ëm!Vï5Ën hïÌq {ïÌs‚ÝÌ$ŠRÎ$•Rσ Ð…ºÑ‡ ÔïÒ‰‚ÝÒ™$ã^Õ™$î^Ö›$ù^רŸÙ¡8Ú£ RïÛ¥‚ÝÜ·$ajà·$ljá¹$wjâ»$‚jã½ä¿§åÁÁæÃÛçÅ õïèÇ‚ÝéÛ$vîÛ$vïÝ$vðß$%vñá$0vòã;óåUôçoõé‰öë£÷í ½ïøï‚Ýù$Ì‚ÿ$ׂ$â‚ $í‚ $ø‚ $‚(B\v   ªï ‚Ý 5$¹Ž5$ÄŽ7$ÏŽ9$ÚŽ;$åŽ=$ðŽ?$ûŽAC E:GTInKˆM¢ O ¼ï!Q Òï$] áï$_!îï$i!úï$o ï%|‚Ý& 2(‚Ý+§ ^-§ n%/ª z%1®¡ %3´¡ %3·¡ ´›3¸¡ Å›3º!Λ=3º ð3¾!I5Ì a7Ñ…Ý7Ö$kº:Ö$rº<ÙzAßBâ!§Cè!ÏG!ÞH ÷J!…ÝJ&$ÊM&$ ÊQ+R-'S2!=T4!IXk!tXYm!‚X\w X\„!ŸX\… «›\œ Á›]Ÿ Л^¡ Þ›a¥!ìbª ! -d®€ O$jâ…Ýkð$Unð$bnñ$loóspõqö¨rø€ ¾$sú…Ýs$Űv$ʰy$ϰ Ô‚èƒü„  $… !$…# +ï/ :ïÖ1!eI2€ oI–=…Ý—L$tä›L$}äO$…äžQ$ä T™¢W±£ZȤ\â¥_ úI¦b…ݵ²$ Ù²$ Ú´$# Û¶$3 ܸ$> ݺ$I ß½$[ à¿$k áÁ$} âÃ$ ãÅ$  äÇ$± åÉ$Ä æË$Õ çÍ$á èÏ$ö éÑ$ ! êÓ$! ëÕ$! ì×$+! íÙ$6! îÛ$>! ðÞM!ñàh!òâ†!óä¥!ôæ¿!õèÙ!öëú!÷í"øï:"ùñY"úó{"ûõ›"ü÷½"ýùÝ"þûø"ÿý#ÿ>#V#p##§# ¾#  Ü#I ç#IÄ D ô#% F !$$- H !6$$- R!H$$- \!U$$c m$›o u$›t …$›y “$›} ž$›!‡¯$›&¾$›*” Ì$›,—!Ú$›-› í$›-§!÷$›.©%›.Ç$%›4Ô!.%›:åH%›;ç€y%a%Aù€›%%Aþ¯%ïAþ Æ%âA  Ü%âA ò%A  &æB!  &æB# 4&B% €H&%D7 `&›F8 … q&FC %&îGJ %Œ&IN %—&îKP %¥&MT  ³&öOV  Á&úPX %Ò&îQZ %Þ&T^ %ê&îW` %ú&Yd % 'Zf %'^j 'bn %''dp  4'fr  A'gt N'›hv  Z'h  e'j  s'lƒ  ‚'o…  'q‡  œ't‰  ¬'v‹  ·'w  Ä'x Ï'›{‘  Ý' {“   ({•  2(|—  J(}™  b(~›  z( (€Ÿ É(¡ %Þ(‚£  ó(ƒ¥ ))ƒ§ >)"‰© S)« h)­ %})‘¯  “)’± ¨)&’³ Ö)”µ  ñ)*•·   **–¹ '*.—» @*›™½  Q*2™Ä  `*6šÆ  q*:›È  ‡*&Ê *žÌ ³*>¢Î  É*>£Ð  Ý*2¥Ò  í*B¦Ô %ÿ*§Ö €+›¨Ú ,+¨Ý 8+F©ß E+Jªá €R+›«ã  g+N«æ  t+N«è ƒ+R«ê ™+V¬ì ±+Z­î  É+^®ð  Ô+V®ò  á+Z®ô  î+R®ö   ,V¯ø  (,Z°ú €F,›±ü P,^± _,b² l,^³  „,b´ š,^´  ³,bµ Ê,^µ ã,R· ú,^º -V¼ ,-^¿ E-ZÁ  ^-fÄ -Å! „-Æ# •-^É&  -^Ë( ¼-Í*  É-jÒ3 Ý-fÓ5 €ò-›Ô7 … .ÔJ …ÝÔR $ .n×R $.nØT $.nÙV .ÚX 0.ÛZ E.Ü\ %].Ý^  ‘.^Ý`   .^ãb  ¯.féd  Æ.^êf  Ô.fìh à.Ríj é.^ïl  õ.fñn  ÿ.^óp  /^õr  /f÷t  !/^ùv ,/^ûx 7/Rýz  @/^| L/^~ X/V€ b/^‚ n/^ „ z/Z †  „/fˆ ”/VŠ   /fŒ ­/^Ž ¹/^ Å/Z’  Ñ/f”  ä/r–  ý/˜  0š 0:œ 0 ž  )0v"   20z#¢ €B0$$¤ €T0%(¥  ]0~-º %n0-¼  z0.¾  †0‚/À  0†/ %š0/Ä %¦00Æ %²01È  ¾0^2Ê  Ê0^4Ì Ö06Î  â0f:Ð  ù0R;Ò  1V<Ô  1Š=Ö 1R>Ø .1VEÚ >1ZKÜ N1ŽQÞ ^1’Wà  l1Xâ  €1FXä  –1JXæ  ¬1^Xè ¹1Yê  Æ1b\ì Ñ1–]î æ1^ð û1_ò  2^bô %2dö <2–hø S2šjú  j2flü  {2žmþ –2zm ¯2n  Ð2¢o ñ2¢o 3zq 33zt R3zw s3x ƒ3y  •3| ¥3}  ³3¦‚  Ç3z…  Ù3ˆ  í3Š  4  4ª‘  (4®’"  84B’$ J4’& Z4“( l4²˜*  ~4ž, 4Ÿ. ¢4¶¤0  ´4º©2  Æ4¦ª4  Ø4z¬6  è4¾®8 %ô4®: þ4R¯< 5V±> "5Z³@ 45µB  F5ƸD  V5ºF m5ºH %‚5»J ‹5ʼL  ›5νN ©5–¾P  ¶5^¿R  À5ÒÀT Ì5ÖÀV Ø5ÚÃX  ä5ÒÆZ ó5ÚÆ\  6ÞÉ^  6zÉ` 6ÖÌb 36ÚÎd N6ÚÐf ^6¢Òh y6zÔj ”6zÖl ¡6âØn  ª6Ùp ³6Ùr ¼6Út Ã6Ûv Ì6Üx ×6ÖÝz ó6æÞ| 7Úà~  )7Ò†E7Úâ‚  a7Þã„  z7zㆠ‘7äˆ »7œ7åŠ €Ë7%å’ Ö7Iå’ æ7Iå•  ü7êå®  8îå°  )8êå²  B8òå´ b8Iè¶  q8èU  |8öëY  ”8úë[  É8þì]  Þ8í_  ú8ía  9 íc  !9 íe  49íg  C9îi  M9îk  Z9îm  i9îo x9"îq  ‡9&ïs  9*ðu  ª9.ñw ¸9&ñy Ã9*õ{  Ï9"ö}  Ø92÷  ê96ø  ý96øƒ  :6ù…  '::ú‡  1:>û‰  >:Bü‹  M:Fü  \:>ý  k:Bÿ‘  y:Jÿ“ !‰:• ”:"™  £:N›  ¯:R  ½:VŸ  Ë:Z¡  Ù:Z £  ç:Z ¥  õ:Z §  ;Z©  ;N«  ;V­  *;Z¯  8;Z±  G;^³  V;^µ  d;b·  u;f¹  Š;b»   ;B½  ¶;F¿  Î;jÁ  ß;nà  ò;nÅ  <nÇ  <nÉ  +<nË  ><n$Í  Q<n$Ï  d<n$Ñ  w<n$Ó  Š<n$Õ  ž<n%×  ²<n'Ù  Æ<n'Û  Ú<n'Ý  î<n'ß  =n'á  =n+ã  *=n-å  >=n-ç  R=n-é  f=n-ë  z=n-í  Ž=n-ï  ¢=n-ñ  ¶=n.ó  Ê=n/õ  Þ=n0÷  ò=n1ù  >n2û  >n3ý  .>n4ÿ  B>n5  V>n6  j>n7  ~>n8  ’>n9  ¦>n:  º>n:  Î>n>  â>n@  ö>n@   ?nA  ?nA  2?nB  F?nC  Z?nD  n?nE  ‚?nF!  –?nF#  ª?rG%  Ð?vG'  ì?NG)  þ?zG+  @~I- .@‚J/  F@†K1 Y@"L3  k@N5  q@‚O9  €@ŠQ; %–@T=  ¸@T@  Ô@VK %ò@WO  AšWR  2AžWT  FA¢XV  \AšYX  hA¦YZ …rAZ\ !AZb  ŒAª]f  œA®]h €®AI^j  ¶A²^v  ÃA¶_x €ÐA%`z  ÜAºi…  åA¾i‡  ïAÂi‰  øAöi‹   Bêi  BÆj  *BÊj‘  ¤ ‡HB¦ šHB¨ ­HBª€ÃH$¬ ÐH³…ÝÂ$ÙHÀ%Â$ãHÀ&Ä$ðHÀ(Ç$ûHÀ)É$IÀ*ËI+Í'I,ÏCI-Ò]I.ÔtI/Ö ™ 0Ø…Ý2é$ŽIð9é$™Ið:ë$®Ið;í$ºIð<ï$ËIð>ò$ÚIð@õæIA÷JBù$JCû?JDý_JE}JF…˜JG žJFG ¨JFG …]8G €´J$G  ¾J¾G4 ÇJ¾G6 ÑJ¾G8 ÛJ¾G: åJ¾G< ñJ¾G> K¾G@ KJGB 'KJGD 5KJGF DKJGH QK¾HJ `KúHL€lK%HN uKNTO…KïTQ‚•KTQ€¥K%Ta€¨KìYb!µKYÔ ¾KR`Ü ÏKR`Þ…ØK`à…ÜK`ó€ßK%`ú€âK%xû%éKxû%øKyþ% L{%L|%!L}%3L€DLX€  ILâ€[ fL^‚] ‹Lb‚_ ¨Lf‚a ÅLjƒc ÒLV„e ëLV„g MV„i !Mn…k #RÖ> -RÊÖ‹ >RÊ× NRÊÙ eRÊÚ‘tRÊÜ“RÊÞ• ‹RÎá— –RÒâ™  RÒã› ±RÖä ºRÒåŸ ÅRÚæ¡ ÍRÞæ£ÖRÊæ¥ßRç§ èRÊî­ûRâï¯ Sâð±SÊò³ "SÊóµ1Sô·?Sæú½MSÃWSêÉeSîÏ qSÑ~SÊÓ ŒSÕ ›Sò× ªSöÙ¹SúÛÆSÝÔS ãäS¶(éðS¶*ë úS+í  Tþ-ïT-ñ%T/ó4T5ù>T<ÿMTðC !\T-C%hTDvTD%‡TE ‘TF £TÊG# °TJ% ËTL'¥ èTL)!ûTL*!UN- "UT6 5U¶U8JUÊW:ZUX<oU\B‚U¶`D UaF%£UbH%µUdJ€ÅUgN… ÏUgR…Ýh[$ÖUk[$ÜUk\$âUl^çUm`üUnaVoc¥ %Vpe 1Vpg @Vârm IV"to!ŠVuq ¬Vxx ÎV"y|Wz~€/{€UW{•!]W|› oW}¡…ݪ… ‚W„ª’W&†³šW&ˆ¶£W&‹¹¬W޼·W’Â%ÂW&•È ÍWº—Ë%ÞW™Í%çWÓ!ýW¢Ù!X¥àX§æ€4X%©ì9X©ìJX«ò%]X«ôyX¬ö%†X¬ú%”X¬ý%©X­%¶X­€ÇX%¯ÔX﯀áX%¯éX¯÷X.¯&ÿX.±(Y.³*Y.´,€"Y%·.€MY*Y·.€SY*Y·6…XY·^€qY%·fxY›·f‡Yï·m ‘Y†·Ý ¦Y2¹ß ºY6»á ÈY¶»ã ÚY6»å êY6»ç‚üY»é!Z1»H… Z¿H ]W:ÀS *Z:ÀX… @Z>Á]… `Z:Äe „ZÚÇl%”ZBÇn%¦ZÌt ¸ZJÐw%ÈZNÐy%ÚZÕ ìZVÙ‚%ýZZÙ„%[ÞŠ #[bâ%4[fâ%G[ç• Z[në˜%k[rëš%~[ð  ‘[zô£%£[~ô¥%·[ù« Ë[†ý®%Û[Šý°%í[ ¶ ÿ[’ ¹%\– »%#\ Á 6\ž Ä%F\¢ Æ%X\ Ì j\ª Ï%y\® Ñ%Š\ ×%›\¶! Ú%¬\º& à%¿\+ å%Ò\Â. è%ã\Æ3 î%ö\8 ó% ]Î; ö%]@ ü%/]ÎD ÿ%E]J %]]ÒO %l]S  }]†V  “]ÚW  ª]X  À]ÞY  Ï]âY  Þ]æZ  í]âZ  ü]ê[   ^â[ " ^î\ $ )^â\ & 8^ò] ( G^â] * V^ö^ , e^â^ . t^ú_ 0 ƒ^â_ 2 ’^þ` 4 ©^â` 6 ¸^a 8 Ï^öb ; Þ^âb = í^úc ? ü^âc A  _d C "_öe F 1_âe H @_úf J O_âf L ^_g N u_öh Q „_âh S “_úi U ¢_âi W ±_j Y É_k \ Ø_†k ^ ç_l ` ö_ m b `†m d `n f #`o h =`öp k L`âp m [`úq o j`âq q y`r s `ös v ž`âs x ®`út z ¾`ât | Î`u ~ æ`öv  ö`âv ƒ aúw … aâw ‡ &ax ‰ Aaöy Œ Qaây Ž aaúz  qaâz ’ a{ ” ™aö| — ©aâ| ™ ¹aú} › Éaâ}  Ùa~ Ÿ ða ¢ b ¤ b€ ¦  b€ ¨ 0b ª @b ¬ Pb‚ ® `b‚ ° pb"ƒ ² €bƒ ´ bê„ ¶  b„ ¸ °b&… º Àb… ¼ Ðb*† ¾ àb† À ðb‡  cöˆ Å câˆ Ç &cú‰ É 6câ‰ Ë FcŠ Í ^cö‹ Ð ncâ‹ Ò ~cúŒ Ô ŽcâŒ Ö žc Ø µcöŽ Û Åc†Ž Ý Õcú ß åc† á õc ã  dö‘ æ dâ‘ è +dú’ ê ;dâ’ ì Kd“ î bdö” ñ rdâ” ó ‚dú• õ ’dâ• ÷ ¢d– ù ¸dö— ü Èdâ— þ Ødú˜  èd☠ ød™  eöš  eâš  /eú›  ?eâ›  Oeœ  eeö  ueâ  …eúž  •eâž  ¥eŸ  ¼eö   Ìeâ   Üeú¡ ! ìeâ¡ # üe¢ % f£ ( "f2£ * 2f.¤ , Bf ¥ . Rf2¥ 0 bf.¦ 2‚rf§ 4‚zf§ D…„f§ H€f§ H ¢f§ M³fïª T‚ Åf2ª T Òf†ª X%ÞfÚ¬ Z‚ éf6­ \ öfÚ­ `%g:¯ b%g:° d‚ g>± f%+gB± j%8gB² l%EgB³ n Rg:´ p‚ `gF¶ r mgB¶ v%{gJ¸ x%ˆgJ¹ z%•gJº |%¢gJ» ~¯gï¼ €%Âg¼ Ô%ãg¼ ×% h½ Ú%h½ Ü%1h½ Þ%Dh½ à%Wh½ â%jh½ ä%}h½ æ%‘h½ è%£h½ ê%·h½ ì%Ëh½ î%ßh½ ð%ôh½ ò%i½ ô%i½ ö 1i½ ø%Li¿ ü%Xi¿ þ fi¿  „iÀ  ¡iÁ  ÆiŠ  ÔiŽ  âi’  ði–  þišà   jžÄ  jÅ  5j†Æ  @j2Ç  KjÚÈ  Vj†É  aj2Ê  ljžË " zj†Ë $ ˆjÚË & —jJË ( ¦jnË * µjªË , Äj’Ë . ÓjbË 0 âjVË 2 ñjzË 4 kË 6 k Ë 8 k¢Ë : -kË < Ok†Ì ? Zk2Í A ekÚÎ C pk†Ï E |k2Ð G ˆkžÑ I —k†Ñ K ¦kÚÑ M µkJÑ O ÄknÑ Q ÓkªÑ S âk’Ñ U ñk¦Ñ W lbÑ Y lVÑ [ lzÑ ] -lÑ _ ’–V€2’–V€&’–V€’–V€’–V€ð‘–V€à‘–V€Ð‘–V€Æ‘–V€º‘–V€®‘–V€ ‘–V€–‘–V€Œ‘–V€|‘–V€l‘–V€â–V€ó–V€ø–V€ý–V€–#`“ƒ#`“í!#`“B)#`“ƒ#`“ƒ©•÷7©•ü7©•8©•8©• 8#\’–3N˜ >3`˜ >3r˜ >3„˜ >3—˜ >3ª˜ >3¾˜ >3Ó˜ >3ì˜ >3™ >3™ >3(™ >3;™ >3N™ >3b™ >3t™ >3†™ >3›™ >3°™ >3Ï™ >3â™ >3õ™ >3 š >3š >39š >V€8˜–V€"˜–V€ ˜–V€ô—–V€Ü—–V€Â—–V€¦—–V€‚—–V€f—–V€J—–V€4—–V€—–V€—–V€ê––V€Ô––V€¾––V€¢––V€†––V€V––V€>––V€&––V€ ––V€ð•–V€È•–V€®•–#\’–3SŸˆ>3nŸˆ>3ƒŸˆ>3›Ÿˆ>3²Ÿˆ>3ÈŸˆ>3ÞŸˆ>3óŸˆ>3 ˆ>3 ˆ>37 ˆ>3N ˆ>3e ˆ>V€+Ÿ–V€Ÿ–V€íž–V€Íž–V€¯ž–V€‘ž–V€už–V€Yž–V€9ž–V€ž–V€÷–V€×–V€µ–ƒ¢ƒHt–†¢âA‹¢–Ž¢é?â¢CB_‹c2†¢KB‹¢–Ž¢é?ƒ¢í!å¢í!_‹í!†¢•'‹¢–Ž¢c23ù¢0!3 £0!31£0!3Z£0!3…£0!3¥£0!3Ç£0!3é£0!3¤0!¡„–_‹–d¨í!†¢âAg¨•'‹¢–Ž¢í! €–†¢âA‹¢–Ž¢í!_‹í!m¨–†¢•'g¨âA‹¢–Ž¢c2_‹í!†¢•'‹¢–Ž¢c2¨B)™¨æ>¡¨ö>¨¨B)#\’–V€l –V€p –V€t –V€x –V€} –#`“EE#`“EE#`“YE#`“é?#`“ƒ©•@E©•OE©•TE©•^E©•cE#\’–3›©YEV€ë –V€ô –V€†©–V€ –#`“c2#`“ƒ#`“CB©•ÃR©•ÈR©•ÍR9ª–=ªƒCªzTPªÇE9ª–=ªƒCª·EPªÇE´ªÈU§àG§ÛG§àG§ÛG(§Gm¨ƒm¨ƒlxÁVøªp'‹¢–Ž¢é?Htc2†¢KB‹¢–Ž¢é?«CB«CBlxÁVøªp'«kW«tW«‰W¿vé?†¢–W‹¢–Ž¢é?§àG§ÛG²„ëG¬xÌIѧIJzc2§ÛGѧI§ÛG§ÛGQ e(a§á@Q e(3£«”[3®«œ[3ë–3Û«¥[3ó«®[3¬·[3¤,5¡„–#\’–V€V –V€\ –V€b –V€f –V€k –V€o –V€v –#`“”[#`“k\#`“¦2#`“f1#`“”[#`“f1#`“E\©•W\©•f\©•a\©•y\©•R\©•\\©•@\¸­\6¢€ƒ¢€ƒ3½­,5¡„–Æ®0!Ю0!Ø®Žc €˜a:¯–J¯–Òƒ–†¢âA‹¢–Ž¢ßcÆ®0!Ю0! €a:¯–b¯–Òƒ–†¢âA‹¢–Ž¢–s¯£%z¯Ð„¯Ð®¯m¹¯aǯaÓ¯”aÞ¯a²„ÇElx‚døª•d‹¢–Ž¢–å¯Ýa(‘eò¯–²„ÇEå¯Ýalx‚døª•d«e«e¿v–†¢âA‹¢–Ž¢–°a2{k"ñy–†¢âA‹¢–Ž¢k"å¯Ýa(‘eò¯–²„ÇEå¯Ýalx‚døª•d«e«e¿v–†¢âA‹¢–Ž¢–°reHt– €‰$†¢ze‹¢–Ž¢‰$»w »w ܰvæ°Yܰv³y ܰvæ°‡³y ܰvæ°‡lx÷glx,hy|h"yˆh7y£h7y£h(‘K!³yO!(‘K!³yO!(‘K!³yO!ñy–ßy;f4°Sf(‘K!³yO!ë°O!ñy–ßy;f4°Sf(‘K!³yO!ë°O!ñy–ßy;f4°Sf³yO!—uK!³yO!(‘³!³y·!(‘³!³y·!(‘³!³y·!ë°·!ñy–ßy¾f4°Sf(‘³!³y·!ë°·!ñy–ßy¾f4°Sf³y·!—u³!³y·!ö°–V€þ°jV€ûHjV€ðHjV€IjV€±jV€*jV€ ±jV€±jV€±jV€˜JjV€"±jV€+±jö°–V€þ°"jV€C±"jV€J±"jV€S±"jV€`±"jV€s±"j¦{¦{¦{·±{Ô±ƒ²–²–²–W²–e²jz²–Ò²ƒò²"jz{ƒ ³ÌI¦ƒ@³–z{ƒN³{V³{£³ƒV€Š–V€•–#`“‰$#`“²l©•œl©•§lV€ã–V€î–V€ù–#`“‰$#`“²l#`“7o©•o©•o©•*o#\’–V€a–V€l–V€w–V€‚–#`“‰$#`“²l#`“7o#`“ùr©•½r©•Ìr©•Ûr©•êr#\’–V€–V€–V€–V€%–V€0–#`“‰$#`“²l#`“7o#`“ùr#`“ x©•µw©•Æw©•×w©•èw©•ùw#\’–V€Ì–V€×–V€â–V€í–V€ø–V€–#`“‰$#`“²l#`“7o#`“ùr#`“ x#`“~©•c~©•~©•×~©•©•K©•…#\’–V€¹–V€Ä–V€Ï–V€Ú–V€å–V€ð–V€û–#`“‰$#`“²l#`“7o#`“ùr#`“ x#`“~#`“,ƒ©•yƒ©•¹ƒ©•ùƒ©•9„©•y„©•¹„©•ù„¢€ƒ’¸–™¸–œ¹‰$#¦‰$V€þ°–V€5x–"º‰$'ºž3,ºžV€r–V€§„–¿¬žɺ–ôº‚%øº[-»‰$8»£%T¼$_¼{Y½7]½E\V€e½–V€k–V€r–#y½‰$#½²l#y½‰$#½²l#…½‘#‹½‘#‘½–©•#’©•E’ƒõ½„’ƒ¾‘ ¾’¾˜’¿v˜’Y£%s¯£%V€f–V€–V€ –#y½‰$#½’˜#…½’˜#‹½–#`“‰$©•k™©•‡™ƒ¶Â„’ƒÃÂ’˜ ¾v¾­™¿v­™ÀÃ}œÄÜóDZŸ¹»  óDZŸ(È1 1È6 óÇÍ È–”ÈÌIÉ–É™¡)ÉŸ¡-ÉŸ¡2É–¿v¤¡3BË0£V€(Ë–V€b–V€l–#`“–#`“–©•Ф©•H£©•M£V€Å–V€Ê–V€Ï–#y½{#½£%#…½{#y½{#½Õ¤#…½{#‹½Õ¤#‘½{#ÜË0£#y½ƒ#½ø¥#…½Õ¤©•t¦©•€¦©•Œ¦Ñ̃æÌÔ¦úÌö¦ ÍÍ–$Í–0Í–=Í–HÍ{XÍ{¦ƒÀÃ}œŠªƒÜÎe§æÎh§îÎe§ôÎ{#\’–V€t–V€}–V€…–V€–#y½S¨#½X¨#`“¡§#y½¡§#½©#y½}œ#½–©•º©©•Æ©©•Ò©©•Þ©#\’–3ÓÒS¨3áÒS¨3öÒS¨3ÓS¨3ÓS¨3*ÓS¨3:ÓS¨3OÓS¨3cÓS¨3tÓS¨3‰ÓS¨3›ÓS¨3°ÓS¨3ÎÓS¨V€ÅÒ–V€©Ò–V€•Ò–V€yÒ–V€kÒ–V€ –V€ –V€# –V€3 –V€> –V€I –V€[ –V€k –V€} –V€ –V€  –V€± –V€Ä –V€Õ –V€á –V€ö –V€ !–V€!–V€!–V€Ñ–V€ôЖV€ÚЖV€ÆÐ–V€ªÐ–V€+!–V€‡Ð–V€kЖV€=ЖV€#ЖV€6!–V€>!–#`“}œ#`“êœ#`“êœ#`“}œ#y½}œ#½–#`“ð¬#`“ð¬#`“ð¬#`“ð¬#`“…®#`“…®#`“…®#`“…®#`“°#`“6 #`“6 #`“}œ#`“}œ#`“}œ#`“}œ#y½£%#½}œ#`“}œ©•4³©•@³©•L³©•X³©•d³©•p³©•|³©•ˆ³©•”³©• ³©•¬³©•¸³©•ij©•г©•ܳ©•賩•ô³©•´©• ´©•´©•$´©•0´ Ù(¨ÙX¨ÐÜ•ºýÜȺÝe§ýÜȺÝe§ÇÝL»ÏÝ£%ñy– Þe§'Þo»5Þ»@Þ»KÞ–çÞv"º–íÞ–'º–ßȺ'ßȺ3=ßa½•ßl½šß–¤ß{®ß{sà‡½~àÔ½¤àÙ½ÜàÞ½%á–Õá»Üá]¾ãái¾êáu¾3â˾9â×¾#`“¿lx¬Àñy£%¼„Æ“å{ªå{³åȺ4¼ˆÆ;çYÇFçaÇOçaÇXçjÇbç‚Çwç‡ÇXè¬À{èÙɃ軚ègȢ薱è{¹èïÉuë@І‹PÑ_‹_Ñ3‘ëzÒ¡„–ì{lxqÕ¹»|ÕlxÖìÖlx;Ö¹»|Õlx×ìÖlx,×lx,×lxF×¹»|ÕñyX×lxÂ×d«‰$ìÖ¹»è×ìø×ìeع»  ì”[Šì”[•ì”[¹»  ì”[Šì”[•ì”[ ìœ'£ìœ'¦ìeØ©ìeØlxîØlxZÙlxqÕÒìÞÝlx,×ÒìÞlx,×ÕìÞÙìÞlx;ÖÒìÞÝlxF×ñyX×ÒìÞÝÒìOÞìø×ÒìÞÒìÞlxîØÕìÞÝÙì†Þiízßiízßiízßiízßiízß—uÏß—uÏß¼éß—uÏß•ßf1¸á4à¾á@àâí£%Í»Là—uÏß•ßf1¸á4à¾á@àâí£%Í»Là—uÏß—uÏß¼éß—uÏß!í à—uÏß[îß[îß—uÏß[îß7y£h7y£hï–Òƒ,5Òƒ,57y£hï–±uNhÒƒ,5±uNh7y£hï–7y£h7y£hlx¬À0ïÇã0ïÇã0ïÇã~äˆÆ~äˆÆ~äˆÆ•߬À¸á4à¾á@à^¨ãçô¢Òæ^¨ãç^¨ãç¼è €‰$¼è«ÒæÄáu¾/â×¾ €‚%«Òæ/â×¾Äáu¾/â×¾ €ÑÆ«Òæ/â×¾Äáu¾lx¿Òƒ–¼èô¢ÒæÄáu¾—uºèY½‰$—uºèY½‰$4¼„"ðyçÏï8çªå{Oç£%Y½‰$ €aéV€ .–V€.–V€.–#`“‰$#`“‚%#`“ÑÆ©•˜í©•´í©•Ðíj㻕ß˾¸á]¾¾ái¾PŒRîÄáu¾j㻕ß˾¸á]¾¾ái¾PŒRîÄáu¾lx¿ €‰$•ß˾ €‰$lx®î¼¾îkñRî¼èkñêîlxiï¸á]¾«‚%¼èY½Rîlxiï €²l¸á]¾«‚%¼èvv‰$€ñE\¼èÄáu¾¸á]¾«‚%¼èôº‚%€ñE\¼èÄáu¾¼è'òÑÆ¼è'òÑÆ€ñE\¼èÄáu¾€ñE\PŒRî™ñáð¼è™ñáðPŒRî/â×¾ôºÑÆ/â×¾ôºÑÆ€ñ@à/â×¾€ñ@àPŒRî’À‰$ãñ¦ñæñ@Êz¾zeæñØñz¾zeæñØñüñRîS€,ò–S€3ò–S€Cò–S€Lò–3^ò}»3òÞ½3µò@Ê3¿òzÒ¡„–—u}»—€¾ò—uã½—uã½—u㽕ß˾ €‰$•ß˾ €‰$/â×¾ó%¾ó”[•ß˾lx,ø@ôÅø@ôÅøPŒRî…ëù/â×¾ï,56ó?ô?óv£ä"äÒƒ–…ëù/â×¾ï,56ó?ô?óv£ä"ä…ëù/â×¾ï,56ó?ô?óv£ä"ä…ëù/â×¾ï,56ó?ô?óv£ä"俬úXçè/â×¾Jô—úXçè¾î–)äÉ/â×¾)äÉ/â×¾jôHûXçröŽô{/â×¾jôHûÝ»Xçrö)äÉ4ä–Zä!ü4ä&4¼ÕÆ~äˆÆ~äˆÆ£äȺ~äˆÆ£äȺ~äˆÆ4ä&£äȺ~äˆÆ4ä&~äˆÆ~äˆÆÏäõ~äˆÆ™óýüÝ»Åä4ýÏäõ~äˆÆ™óýüÝ»¹äŒýÅä4ýÏäõ¹äŒýÅä4ýÏäõN¹‰$¹äÞýN¹‰$S¹²l¹äþN¹‰$S¹²lZ¹7o¹äbþvâ¸þ~äˆÆ åÿÏäõ~ä)ÿ™óýüÈó7ÿ åÿÏäõ×»~ä)ÿ™óýüÈó7ÿÝ» åÎÿ~äˆÆ™óýüÈóÙÿÝ» åÎÿ~äˆÆ™óýüÈóÙÿÝ»]s9 åÎÿÏäõ åÎÿÏäõõ}»~äˆÆõ}»~äˆÆõ}»~äˆÆõ}»vâRî4ä&~äˆÆvâRî4ä&[åÒæ›¬E\;õL»›¬E\—ugÈ›¬rö €|lx…bã– €|lx…bã– €|lx…bã– €|lx…bã– €gÈbã– €gÈbã– €gÈbã– €gÈbã– €gÈbã– €gÈbã– €4Ì €4Ì €4Ì~äaé~äaé~äaébã–~äaébã–~äaé~äaé¸õ7~äaéõø6 üø{ù6 1ÜNhï–ó–äüƒÿüƒáü}œÛ1 8ƒÛ1 ;–B{#Ij#E1 E1 ÆÛɃø}œHt–‰$ €–lx¥%G€¾%vv{#{#dø3j–p|0ºÄ1 lx‚'®1G€—'vv¨'¼¾' €Ð'G€Ð'vvÝ'G€j#h¥–G€Ý'®1G€Ý'Ÿ¾'G€j#¥ƒ´j#Ã{Òƒ–¥}œ´ƒ¥}œ´ƒ¥a)´–lx¥%ýƒ—'â}œæ{#êj#îƒò– €V+}œƒG€}œvvƒ_‹j#†‹¨'}œƒ €{ €ƒ €à €v\ €í! €i €œ €Ê €ý €– €c2 €e§ €Ë¢G€}œvvƒ_‹j#†‹¨'G€}œvv¨' €S¨ €}œ €V+ €a) €V+ €a) €–Vâ$1¬‚'Vâ$¿¬Žb.Æ1 Ht–¢€¡§Žb.¹ 8¹ 8c¡§f©#y½£8#½–#`“Ý'&â$&â$&â$ ; ¾4â$lxš:÷ö=÷,>3¦ }œ3³ }œ3+ù}œ3¿ â$3ª?b>3Ð?>3–@¡>3ò@²>¡„–Ht–°\6°\6lxnB°\6lxnBlx Î ²lÕ æB°\6‚LC‚LCê{÷oC{oÅÞMI}œ¼EIÒƒ–í Lq}œv£%¼EIÒƒ–í L€1 q}œ¼EIÒƒ–í L…}œí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí L¼EIÒƒ–í L¼EIÒƒ–í L¼EIÒƒ–í L¼EIÒƒ–í LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIí LÒƒ–¼EIp‚ƒí LÒƒ–¼ í!¼EIp‚ƒ¼EIí Lõ éFÒƒ–¼ í!³,O³Pp‚ƒ÷–3Š}œ3•hP3ª7G¡„–#y½–#½–#…½ÌIö°–S€¼ÿ[S€Öÿ[S€åÿ[#\’–3.§Y3>§YV€–V€ò–íÞ,5 €£%®ƒô§Y1ÄÇÍH£³æZíÞ,5ýƒ_\„‘\¤+Wýƒ_\„‘\¤+W@ôQ]ô§Y1ÄÇÍH£³æZíÞ,5ô§Y1ÄÇÍH£³æZíÞ,5¸xgYHt–ˆ–¸xgY‚–…–ˆ–‹– €–ÇÍHíÞ,5ý–¤+W¸xgY‚–…–ˆ–‹–‚–ˆ–ýƒ_\„‘\¤+Wýƒ_\„‘\¤+W¤+Wý–©ƒ³ŸY³ŸYô§Y1ÄÇÍH£³æZíÞ,5]s£%¶–ýƒ_\„‘\¤+WíÞ,5¤+Wý–1ÄÇÍHÇÍHÇÍH#\’–3¹_V€ÙH–V€ãH–V€ðH–V€ûH–V€;–V€I–#`“Û#y½}œ#½}œ#`“a#`“¬a#`“}œ©•ºb©•Æb©•Òb©•Þb©•êb#\’–3¿ÄTV€ŽI–V€™I–V€®I–V€ºI–V€ËI–V€S–V€ÚI–#`“EI#`“}œ#`“ÎT#y½ƒ#½ÎT#y½}œ#½ÎT#`“£%©•0f©•,}œ3&}œ3I,}œ3&}œ3T,}œ3$&}œ¡„–%Å}œoÅXs—€ð¬ ¾„’vv’˜ ¾„’vv’˜ ¾„’G€’˜•ßO…w/‰$•ßO…w/‰$é.¤‚à.{¬x’˜Òƒ«…¸xv! ,5 ¾„’lxñ…lxqÕ ¾†lx,Šlx,Š ¾„’¸x’! ,5é.š•à.{¬x‘Òƒ—¬x˜’¬x—)ꘒlxÚ²Y½\6lxù²Y½\6lx$³Y½\6lx}Álx¡Á €²llxÂÁï–lxÂÁlxÜÁz¾ïÁlxµ4ïÁñë8Âlx,×lxqÕlx•Âlx°Âlx;ÖµÙ£Yï–µÙ7NÃze«–†¢âA‹¢–Ž¢‰$lx©ñë7éë7ñë7µÙv €‰$Ht–µÙ7Òƒ,5z¾ze‹¢–Ž¢‰$µÙ7z¾ze³5ì‹! ‰$‹¢–Ž¢ÄlxÂ×d«‰$µÙïÁ¸5ì‹z¾AÄ‹¢–Ž¢‰$5–µÙ7¸xv’À,5Òƒ,5NÃze‹¢–Ž¢vµÙ7B5YÇI5™ÄB5YÇI5™ÄµÙ7½5qÕ„þĽ5qÕÓ57µÙ7„“Æ¿v‰$œ¾¥Ð†¢ze‹¢–Ž¢‰$½5qÕµÙ7„ÐÆ¿v‰$œ¾;ņ¢ze‹¢–Ž¢‰$½5qÕµÙ7µÙ7½5qÕ„!ǽ5ÖµÙïÁPŒ,×µÙ7NÃze×5ì‹‹¢–Ž¢‰$ï–µÙ7NÃze«–†¢âA‹¢–Ž¢‰$PŒ,×µÙ7NÃze×5ì‹Þ5”[‹¢–Ž¢‰$¦‰$ô6ZËlx¦Ë37ÈËð5©ö5×þ5áË/,׎¢qÕ:7}Á‰ÛE\6AÄ&6ze±è{@7{I7ä»I6‰$]܉$]ܲl¿7²ÌøªïÁ@ô¦ñvv7±è”[Œ6ÝÌ@ô¦ñvv7±è”[Œ6ÝÌ¿77’À  e-¬À;õ‰$¬Àe-¬À>ÉnÍ3@8ÏV€48–V€ÜU–V€âU–#`“‰$#`“}é•1Щ•MЩ•iÐ@ô}Õ߆Õ߆Ã@ôèÐ €èÐ8}ÃŒ6„"@7{NÃze@ôÜÑ89zeNßY±è{#\’–3:;Ö3,:;Ö3>:;ÖV€:–V€ë9–V€×9–ñy;ÖŒ6‰$lxÖNÃAÄlxWÖNÃAÄÒƒ,5lx{Ö—þAÄþÖlx×NÃAıè”[Œ6ø×lx,×NÃze±è”[lx¡ÁñyX×lxÂÁvz,5lxÂÁ´:–vz,5Ž¢J×ö5×þ5á˱è”[Œ6ø×ñy‚׸xvŒ6–÷–¿v‰$±è{lxE\NÃze¿:$«ze ¾:Øã:–ªÉ·#;öØlxÖçÞËÜlxôÜçÞËÜçÞÝçÞ݈–‹–lx­ì@ô¸ìlxãì@ô²Ìö°–S€:ÁöS€TGÁöS€×9ÁöuGÁö¿v‰$Ht‰$)ê‰$d«‰$Ht‰$)ê‰$d«‰$Ht–B–)ê–¿G{ÂG{Ht–B–)ê–MíHte§Be§)êe§¿G{ÂG{Hte§Be§)êe§îHtË¢BË¢)êË¢¿G{ÂG{HtË¢BË¢)êË¢UîHtc2Bc2)êc2¿G{ÂG{Htc2Bc2)êc2¢îHtâGBâG)êâG¿G{ÂG{HtâGBâG)êâGõîHtÈGBÈG)êÈG¿G{ÂG{HtÈGBÈG)êÈGHïHtÊBÊ)êÊ¿G{ÂG{HtÊBÊ)êÊ›ïHtýBý)êý¿G{ÂG{HtýBý)êýîïHtiBi)êi¿G{ÂG{HtiBi)êiAðHtœBœ)ꜿG{ÂG{HtœBœ)꜔ðHtv\Bv\ËG–¿G{ÂG{Htv\Bv\)êv\¿G{ÂG{Htv\Bv\)êv\HtàBàËG–¿G{ÂG{HtàBà)êà¿G{ÂG{HtàBà)êà)ɉ$XùHt‰$)ê‰$ÂG{)ɉ$XùHt‰$)ê‰$Â×Ht‰$B²l)ê‰$¿G{ÂG{-ɲlÂ×Ht‰$B²l)ê‰$Htí!)êí!Dí!ÂG{Htí!)êí!Dí!6 6 4¼þõ„þõ„þõ„þõ„þõ„þõ„þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼+öýƒqÕ„+öýƒqÕ„+ö4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼·#„·#„·#„·#„·#„·#„·#„·#„·#4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼qÕ„qÕ„qÕ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼þõ„þõ„þõ4¼Â×ýƒÖ„Â×ýƒÖ„Â׬xžŒ6ž±è{lxãþ07olx°Âlx0ùrlxMÿlx8lxblxxlx@lxg0 xlxr0~lx÷lxlx,lx¿ã:–+L„’lx„’4¼‰$4¼‰$4¼€«6 ýƒÂÁ„€oŰÂýƒqÕ„°Â)ê6 ýƒqÕ„°ÂoŰÂýƒqÕ„°Â)ê6 ýƒqÕ„°ÂoŰÂýƒqÕ„°Â)ê6 ýƒqÕ„°ÂoŰÂýƒqÕ„°Â)ê6 ýƒqÕ„°ÂV{eV–hV–—€–3][ƒ3~[ƒ3™[ƒ3¶[ƒ3Ð[ƒ3ñ[‚%3\!3\!3)\w%3A\w%3[\/3t\43‹\®3 \w%3½\w%3 h93hA31hI3DhQ3WhY3jha3}hi3‘hq3£hy3·h3Ëh‰3ßh‘3ôh™3i¡3i©¡„–lx5#lxqÕlx5#lxqÕlx@#lx5#lxc#lx’#lxÇ#lx$3Fvƒ$¡„–!½v‰$!½v‰$!Þw²l!½v‰$!Þw²l!æw7o!½v‰$!Þw²l!æw7o!îwùr!½v‰$!Þw²l!æw7o!îwùr!öw x!½v‰$!Þw²l!æw7o!îwùr!öw x!þw~!½v‰$!Þw²l!æw7o!îwùr!öw x!þw~! x,ƒ!½v‰$!Þw²l!æw7o!îwùr!öw x!þw~! x,ƒ!xè'P þr™d  sx sŒ +s  7s´  q¥ì æSsÀ@!æSsË\!æSsÚ¼!æ¡sç P"æ¡s l"æ­sù è"´s™ ü"Ás #Ês $#Ûs 8#äs L#÷s `#t t#%t #0t È#=t ü#Jt$WtD$ht>`$rtCx$æ­sIð$æ­sO%­tÄ(%ºtÚ<% qõ`% q§&_vl&iv˜&6v±Ä&xvð&Tv±'ƒv¼X'ŽvÂ'™vÏÀ'Cvì'®vŸ(Áv¼D(ÌvØp(×vœ(ïvŸÈ(wô(wŸ )1wL)EwŸx)Yw¤)pwŸÐ)‡wñü)˜w(*®w(P*Âw1|*Øw5¨*ûw¡ Ô*x +xŸ x+:xª!Ø+_xâ#ô+nxû$,€xQ%4,‘xÓ&X,¢x; ' ,®xG (´,¼xQ )È,Òx` *ä,Ýxi +-yt ,,-%y™ -X-ly¡. -}y!.è-îw¡.0. q4!.T.œyA!0t.½yt!2œ.Ìyƒ!4´.ßy›!6Œ/ q4!80œy©!: 0½yÔ!<H0Ìyã!>`02zú!@¬0ßy "BÆkz!"DÆ|zEÆzEÆ  z."Eưz:"EÆ ¹zÏEÆÎz?"E„1 q”"EÐ1{¿"Lä1ž{¿"Lø1¯{È"L 2À{Ò"L 2Ï{×"L42è{¿"LH2ø{™L\2b~â#Lp2q~L„2ƒ~î#L˜2’~ù#L¬2¢~$LÀ2º~$LÔ2Ô~$Lè2î~$Lü2$L3 $L$3+$L83L$LL3o$L`3 $Lt3ŸLˆ3°Lœ3 q$L,4œya$\D4 qŸ_p4õŸ`Ä4€aØ4€¡aô4€´a5€°$aP5€Šb5"€1c¨5<€¡c6 q¡c6FBI€Ç$c06 qÇ$eH6Æ¡sçg`6Æ¡sh€6Æ­sùh´6­s%jä6Æ­sOk7 q¦%l$7 q¡m87FBI€Ç$mP7 qÇ$oh7¯€«%q|7Æ¡sçq¸7Æ¡srÔ7Æ­sùr$8­s%tp8Æ­sOu”8E‚&vø8bœ&x 9lœ&x 9tª&x49†¸&xH9Æ&x\9›Ê&xp9¬Ï&y„9‚'yà9‚'{:.‚'},:X‚'}@:f‚7'}h:‰‚_'¼:Ê‚K(‚p<é‚_'…Ä<·ƒÿ0ˆF q 1ˆ,FFey01‰`F q¡ŠhFFey=1ŠˆF q¡‹FFeyD1‹°F q¡Œ¸FFeyK1ŒØF q¡àFFeyK1G q¡ŽGFey=1Ž G q¡(GFey=1`G qŠpGFeyK1‘¬G q¡’´GFey[1’ÌG qq1“ÜGFey=1”øG q~1•HFey1–,H qÁ1—5X‰]š15p‰oš>5„‰†š15œ‰Ÿš>5°‰¯š15ȉÁš>5܉Òš15ô‰åš>5Šôš15 Š›>54Š›15LŠ%›>5`Š@›15xŠ]›>5ŒŠn›15¤Š›>5¸Š’›15Њ¥›>5䊳›15üŠÛ>5‹Ñ›15(‹á›>5<‹ñ›15T‹œ>5h‹œ15€‹#œ>5”‹2œ15¬‹Cœ>5À‹Qœ15Ø‹aœ>5ì‹rœ15Œ…œ>5Œ–œ150Œ©œ>5DŒ¾œ15\ŒÕœ>5pŒæœ15ˆŒùœ>5œŒ 15´Œ>5ÈŒ*15àŒ;>5ôŒJ15 [>5 i158y>5L‡15d—>5x¥15Y•5¤a•«%5ÈæSs\>5ŽæSsË6$ŽæSsÚ7tŽæ¡sç9”Žæ¡s:°Žæ­sù:ìŽæ­sk><$æ­sO=HÂŒÿ0>è qŸ>} >?‘ 1?0§ >?Dº 1?\Ï >?pâ 1?ˆ÷ >?œ ¡1?´!¡>?È4¡1?àI¡>?ôZ¡1? ‘m¡>? ‘~¡1?8‘‘¡>?L‘£¡1?d‘·¡>?x‘É¡1?‘Ý¡>?¤‘ð¡1?¼‘¢>?Б¢1?è‘/¢>?ü‘@¢1?’S¢>?(’j¢1?@’Y•?T’a•«%?x’æSs¾>?¸’æSsË@Ô’æSsÚA$“æ¡sçC´“æ¡sDГæ­sùD ”æ­sÍ>FD”æ­sOGh” q¡Hp”Feyà>H¨” q¡I°”Feyà>I• q¡J•Feyà>J(• q¡K0•Feyà>K\• q¡Ld•Feyà>L|• q¡M„•Feyà>M¸• q¡NÀ•Feyà>Nô• q¡Oü•Feyà>O0– q¡P8–Feyà>Pd– q¡Ql–Feyà>Q¼– q¡RÄ–Feyà>RÜ– q¡Sä–Feyà>S— q¡T —Feyà>T4— q¡U<—Feyà>UP— q¡VX—Feyà>VŒ— q¡W”—Feyà>WÀ— q¡XÈ—Feyà>Xü— q¡Y˜Feyà>Y4˜ q¡Z<˜Feyà>Zh˜ q¡[p˜Feyà>[˜ q¡\˜˜Feyà>\¸˜ qéA]ð˜F–¢BbЙF¨¢¡c0šF®¢1cpšF½¢Bc„šFÏ¢Bc¤š q¡c¬šFeyà>càš q¡dèšFeyà>d› q¡e›Feyà>e\› q¡fd›Feyà>f › q¡g¨›Feyà>gЛ q¡hØ›Feyà>hœ q¡i œFeyà>idœ q¡jlœFeyà>jŒœ qRBkÄœF–¢BpˆF¨¢¡qèF®¢1q(žF½¢Bq<žFÏ¢Bq\ž q¡qdžFeyà>q˜ž q¡r žFeyà>rÌž q¡sÔžFeyà>sŸ q‘Bt@ŸF–¢§Bz F¨¢¡{d F®¢1{¤ F½¢±B{¸ FÏ¢µB{Ü  q¡{ä Feyà>{,¡ q¡|4¡Feyà>|h¡ q¡}p¡FeyûB}ˆ¡ q¡~¡Fey;~¤¡ q¡¬¡FeyCÀ¡ÂŒÿ0€¨¢ФYC€Ì¢ߤnCÜ¢ç¤nCì¢ó¤rC£ÿ¤{C£¥'(£.¥nC<£M¥…CT£l¥°C‚¸£‚¥µCƒà£”¥ºC„ø£©¥'… ¤À¥¿C… ¤Ù¥ÉC…4¤¦ÓC…Ф$¦D†4¥/¦'‡P¥G¦gD‡€¥_¦‡D‡Ô¥u¦¡D‡(¦¦3E‡X§–¦ªEŠ ¨«¦!FP©À¦hFø©ݦF• ªó¦ÅF—Hª§‰Gšl¬-§®Gž´¬Q§fH¥­i§žH§<­v§¨H«„­§²H¯˜­§'¯¬­²§DI¯®ħ~I±®×§·I³´®í§$Jµ<¯ ¨WK¸˜°:¨{L½H±P¨øL¿x± q¡À€±Fey$MÀ”± q¡Áœ±Fey=1Á°± q¡Â¸±Fey=1Â̱ q¡ÃÔ±FeyIMÃü± q¡Ä²FeySMÄ,² q]MÅl²F–¢oM˨³F¨¢¡Ì,´F®¢1Ì€´F½¢“<Ì”´FÏ¢yM̰´ qMÌà´F–¢oMМµF¨¢¡ÑüµF®¢1Ñ<¶F½¢“<ÑP¶FÏ¢yMÑh¶ qMѨ¶F–¢§B×ø·F¨¢¡Ø|¸F®¢1ØиF½¢±BØä¸FÏ¢µBع qŸMØ0¹F–¢§BÜì¹F¨¢¡ÝLºF®¢1ÝŒºF½¢±BÝ ºFÏ¢µBݸº´¨ü<Ý̺À¨åMÝàº˨öMÝôºÕ¨ü<Ý» qNÝ8»æSsgNá`»æSsËâ|»æSsÚ㸼æ¡sç彿¡s欽æ­sù樾æ­sŸOè(¿æ­sOéL¿ qŸêh¿©¦Oë|¿'©1씿3©­O쨿;©1íÀ¿F©¶OíÔ¿M©1îì¿W©¿OîÀ^©1ïÀh©¿Oï,Ào©1ðDÀY•ðXÀa•«%ð|ÀæSsøOð¬ÀæSsËñÈÀæSsÚò Âæ¡sçô(Ãæ¡sõDÃæ­sùõˆÄæ­sƒP÷ Åæ­sOøÄÅ q¯PùàÅ€‚»PúôÅ q¯PúÆ€‚»Pû$Æ qbQû@Æ€‚iQüTÆ qÀQüpÆ€‚Bý„Æ qmý Æ€‚™þ´Æ qORþÐÆ€‚»PÿèÆ qVRÿÇ€‚»PÇ q]R8Ç€‚iQPÇ qdRlÇ€‚B„Ç qkR Ç€‚™¸ÇÂŒÿ0ÐÇ qŸìǧ©xRȵ©1ÈÆ©„R,ÈΩ1DÈØ©ŠRXÈë©1pȪ‘R„È ª1œÈY•°Èa•«%ÔÈæSsîRÀÉæSsËÜÉæSsÚ ÈÊæ¡sç xËæ¡s ”Ëæ­sù `Ìæ­sPS$Íæ­sOHÍ qaSdÍ€‚±BxÍ qm”Í€‚™¨Í qòSÄÍ€‚üSØÍ qETôÍ€‚±B Î qLT(΀‚™@Î qST\΀‚üStÎZªˆÎaª™œÎjªŠT°Îzª›TÄÎ qªTôÎæ¡sç|Ïæ¡s˜Ïæ­sùÐæ­sUˆÐæ­sO¬ÐZªÀÐaª™ÔÐjª&UèÐzª›TüФª7UÑ qIU @ÑæSsO2$pÑæSsË%ŒÑæSsÚ&ÀÑæ¡sç(HÒæ¡s)dÒæ­sù)èÒæ­sºU+\Óæ­sO,€Ó q¡-¤Ó€‚ÓU-ÀÓ€.ÜÓ¼ªHV.ÈÔ qrV0àÔFey‚V2Õ qŽV4$ÕFey¡V7PÕ qm8`ÕFey¶V9¨Õ qÐV:àÕF–¢B?œÖF¨¢¡@èÖF®¢1@(×F½¢B@<×FÏ¢B@\× q W@Œ×F–¢BDPØF¨¢¡E°ØF®¢1EðØF½¢BEÙFÏ¢BEÙ qòSE,ÙFey¶VFlÙ q¡GtÙFeyWGÙ q¡H˜ÙFeyZWHÜÙ qŸWI<ÚF–¢BS¼ÛF¨¢¡T$ÜF®¢1TlÜF½¢BT€ÜFÏ¢BT¤Ü q#XTÄÜFeyKXWÝ qvXY<Ý?«XZPÝR«XZdÝ_«ŠXZ„ÝÆ­sO\ÐÝÆ¡s]ìÝ"€1]Þ~«±2]\ÞÁ†«Ë^¼Þ q¡_ÄÞFeyÕX_ÜÞ q¡aäÞFeyÛXaß q¡bßFeyâXb4ß q¡dL߯¡sðXd\߯­sõXepß qûXgˆßFeyYi°ß qYjÈßFeyD1l„à q¡mœàÆ¡sðXm¬àÆ­sõXnÀà qÛYpÐàFeyâYqá qÛYsáFeyèYt8á q¡u@áFeyO2uTá q¡v\áFeyZvtá qZwŒáFeyÉZyâ q[z$âFey[{TâÂŒÿ0|å"¬÷[|ÀåÞ€ \~äå=¬\€<惬Þ\‡\袬,]téÁ¬Š]—Ðé̬'œäéö¬ó]œ|ê qŸŸ˜ê/­^ ¬ê7­1¡ÄêB­!^¡ØêL­1¢ðêY­0^¢ë`­1£ëj­!^£0ër­1¤Hë}­<^¤\ë„­1¥t뎭K^¥ˆë—­1¦ ë£­0^¦´ë¬­1§ÌëY•§àëa•«%§ì qŽ^§ 쀂˜^¨4ì qã^¨P쀂ð^©dì q±2©€ì€‚>_ª”ì qq1ª°ì€‚Š_«Äì qŽ^«à쀂˜^¬ôì qq1¬í€‚Š_­$í qX`­@퀂ñ®Tí qœ`®p퀂˜^¯ˆí q£`¯¤í€‚ð^°¼í qª`°Øí€‚>_±ðí q±`± Š_²$î q¸`²@˜^³Xî q¿`³tŠ_´Œî qÆ`´¨î€‚ñµÀî qÍ`µÐîFeyÜ`¶üð qm·ñ q¡¸,ñFBI€Ç$¸Dñ qÇ$º\ñ¯€™¼pñÆ¡sç¼´ñÆ¡s½ÐñÆ­sù½ ò­s%¿lòÆ­sOÀò qmÁ¬ò q¡ÂÀòFBI€Ç$ÂØò qÇ$Äðò¯€™ÆóÆ¡sçÆHóÆ¡sÇdóÆ­sùÇ´ó­s%ÉôÆ­sOÊ$ôÂŒÿ0Ë@ôÈ­Ê&ËPô×­ø`Ì`ô'®'Ìtô5®'Ì„ôC®'̘ôR®'̬ô`®'ÌÀôo®'ÌÔô~®XaÌÜõ¼®ocÒŒû qŸcÖÀûÞ®§cØ,üÃÕXܬü2¯ÉcÞý qècßPýF–¢ÿcæTþF¨¢¡ç´þF®¢1çôþF½¢dçÿFÏ¢dç4ÿ qŸcçXÿ2¯'déœÿ q1dêäÿF–¢BdñÀF¨¢¡ò F®¢1ò`F½¢òtFÏ¢Ldò Œ¯«%ò´–¯òÈ£¯òÜ qTdò q]dõ<Ækz!"úlÆzúˆÆ|zú¤ưz:"úÀÆ z."úìƹzÏúÆÎz?"ú q¡ú$FeysdúH q¢dû€F–¢Bd F¨¢¡PF®¢1ˆF½¢œFÏ¢Ld¼ q¡ÄFeysdü qôd Feyþd8 q+b¨F–¢BdF¨¢¡€F®¢1ÈF½¢ÜFÏ¢Ld q4ePF–¢Ne F¨¢¡t F®¢1´ F½¢¿"È FÏ¢]eì  q¡ô Feysd0  qôd@ Feyþdl  q+bÜ F–¢Bd'P F¨¢¡(¸ F®¢1( F½¢( FÏ¢Ld(H  q•$(ˆ F–¢·e.ìF¨¢¡/TF®¢1/”F½¢´/¨FÏ¢¨'/ܰ˜5/,(°îe0¤>°(f7lP°(f:d°f=Tz°«f@tˆ°gC¸ °gFذ°>gIx qçNˆFeyK1O¨ qçP¸FeyHgQØ qÁRðFeyrgTP q†gUhFey“gWÌ q§gXìFeyHg[8 q\PFeyæg^| qh_ŒFey01`Ô qæ­sù (>æ­sy l?æ­sO ? qŠ ¬?€‚´À? qYlÜ?€‚©*ð? q§n @€‚®* @ qEr<@€‚óuP@ qÈvl@€‚[z€@ q´zœ@€‚´´@ q×zÐ@€‚©*è@ qúzA€‚®*A q{8A€‚óuPA q@{lA€‚[z„A qŸ A’¶k{´A ¶1ÌA±¶“{àA¿¶1øAж»{ BÞ¶1$Bï¶ã{8Bý¶1PB· |dB·1|B-·3|B;·1¨BY•¼BæSsX|CæSsË CæSsÚ dCæ¡sç"„Cæ¡s# Cæ­sù#ÔCæ­s”|%Dæ­sO&(D qŠ'DD€‚´(XD qYl(tD€‚©*)ˆD q§n)¤D€‚®**¸D qEr*ÔD€‚óu+èD qÈv+E€‚[z,E qe{,4E€‚~-HE qˆ~-dE€‚´.|E qÂ~.˜E€‚©*/°E qü~/ÌE€‚®*0äE q60F€‚óu1F qp14F€‚[z2LF qª2hF€‚~3€F qŸ3œFª·Ù4°F¸·15ÈFÉ·€5ÜF×·16ôFè·1€6Gö·17 G¸]€74G¸18LG&¸‰€8`G4¸19xGE¸µ€9ŒGS¸1:¤Gd¸á€:¸Gr¸1;ÐGY•;äGæSs ;,HæSsË<HHæSsÚ= Hæ¡sç?ÀHæ¡s@ÜHæ­sù@$Iæ­sNBhIæ­sOCŒI qŠD¨I€‚´E¼I qYlEØI€‚©*FìI q§nFJ€‚®*GJ qErG8J€‚óuHLJ qÈvHhJ€‚[zI|J qe{I˜J€‚~J¬J qÓJÈJ€‚0ƒKÜJ q¢ƒKøJ€‚´LK qâƒL,K€‚©*MDK q"„M`K€‚®*NxK qb„N”K€‚óuO¬K q¢„OÈK€‚[zPàK qâ„PüK€‚~QL q"…Q0L€‚0ƒRHL q9…RpL q¡U„L qÇ$UœL¯€™W°L¬¸WÄL¶¸WØLÆ¡sçWPMÆ¡sXlMÆ­sùXðMÆø{™ZN­s%Z”NÆ­sO[ƹN…\¸N q¡\Æey­ \ÐN q¡]èN¹j…]üN¹¦…^O4¹j…_0OB¹¦…`POƒ,a„OƒÜ†dØOƒ+hXPƒK.mQ€¹<ŠsQ€¹[Št,Q¹‘Šu@Q¹ÙŠvTQ¹.‹whQ¹‹x|QXy´yQ)vŠy¤Q qŠzÀQæSsá‹{RæSsË| RæSsÚ}pRæ¡sç¬Ræ¡s€ÈRæ­sù€S+x´‚S¦¹Š‚4Sæ­sŒƒpSæ­sO„”S q¡…¨S5xì…¼S¾¹mŒ†ÌS qІèS+x´‡üSǹŒ‡TæSs´Œ‡ˆTæSsˈ¤TæSsÚ‰$Uæ¡sç‹lUæ¡sŒˆUæ­sùŒüUιŽVÙ¹Ž$VÆ‚™ŽTVæ­s2޼Væ­sOäVÂŒÿ0üV q¡W§„Y5$W:º1’Ä5jÄýœ7XuÄýœ8„ŽÄ=9à¬ÄJ;<€ÀÄR<\€ÛÄZ=€üÄh>Ä€Å@/ÅBXWÅhDœjųF¸tžGô—ÅÛJl‚üÄëLä‚­ÅùNƒÉÅžODƒàÅžQxƒüÅ/žS¬ƒƉžU¬„›Æ™žW섳ƨžYd…ÈÆ¸žZ(†Öƾž\H†ìÆËž]l†Çåž_Œ†#Çòž`¬†BÇŸaü†VÇŸdD‡qÇ-ŸfŒ‡ÇUŸhˆŸÇmŸkPˆ¸ÇŸmœˆÕÇ‘ŸoäˆWÅëq8‰ q¡sX‰ÈËŸs|‰ÈäŸt‰ q t°‰ey÷ủ q¡wì‰ÂŒÿ0wØŠÈy wD‹È— yX‹ q¡yx‹fÈ ¡yœ‹sÈ¡yÀ‹ÈŠzì‹Èb¡{ŒœÈ{Œ¦ÈX{(Œ±ÈŸ{<Œ q†¡|`Œ q©¡~|Œ:ɱ¡€¸Œ>ɺ¡ÔŒEÉÄ¡ƒðŒJÉÄ¡„ OÉ…,XÉ…@dÉÍ¡…TjÉÓ¡…0ŽvÉÓ¡‡HŽ„ÉÓ¡‰ÉÓ¡‹ðŸÉ衪Éò¡<Æ‚™¨¯É™ÄÆ­sOðÆ¡s‘‘ qŸ‘t‘ q¢’è‘ËÉ ¢“ü‘ÓÉ ¢“’ÜÉ¢“<’íÉ ¢”˜’óÉ*¢–à’ÿÉ*¢˜“Ê1š “Ê1šD“è¢K¢š8”ÌÂK¢œ•ÊK¢ž•&Ê‘¢ °–1ÊK¢£Ж=ÊK¢¥ð–HÊK¢§ —^Ê1©H—mÊ1©p—¿¢©—|ÊÓ¡ªp˜ÊÓ¡¬L™¥ÊÁ¢®Ô™»Êò¡°(š»ÊÒ¢±ˆš»ÊÙ¢²àšp¬î¢³\›ÜÊ1´x›èÊ¢´Ü›òÊ¢µì›ÿÊü¢¶œ Ë£·œÁ†«Ë¸PœÂŒÿ0¹lœÂŒÿ0¹„œ q¡¹˜œVË5£¹¬œ`Ë1ºÄœmË5£ºØœzË1»ðœŠË<£»šË1»Y•»Dæ¡s综æ¡s¼Øæ­sù¼œžæ­s–£¾\Ÿæ­sO¿€Ÿ q¡À”Ÿ qŸÀ°Ÿ€‚ÁÄŸ qŸÁàŸ€‚ÂôŸ q¤Â  q–¤Ã, €‚ÄD  q¤Ä` €‚Åx  q¡ÅŒ Áˤ¤Å¤ ÉË1ȼ Ô˺¤ÈØ âË1Îð íË̤ΡõË1Ñ ¡Y•ÑH¡ q¥Ñp¡ô‚1Ô„¡þ‚«%Ô˜¡ƒ1Ô¬¡ q‚¥Ôì¡ô‚1Ú¢þ‚’¥Ú¢ƒ1Ú(¢ؽ’¥Ú<¢â½1ÚP¢̘¥Úd¢ q¦ÚŒ¢ô‚™Ý ¢þ‚¦Ý´¢ƒ’¥ÝÈ¢ qy¦Ýä¢ô‚1Þü¢þ‚«%Þ£ƒ1Þ,£ q…¦ÞH£ô‚1ß`£þ‚’¥ßx£ƒ1ߣؽ’¥ß¨£â½1ßÀ£̘¥ßØ£ q‘¦ßô£ô‚™à ¤þ‚¦à$¤ƒ’¥àÆ#̘¦àÆ -ÌàÆ <Ìà<¤iÍ™àP¤Íû¦àd¤˜Í§àx¤«Í$§àŒ¤¼Íà ¤ËÍà´¤ÚÍàȤêÍàܤøÍ1àð¤ Î1ॠq*§àd¥ Î[§êœ¥ qmê¼¥+x™ëÐ¥ qmëè¥ q§ìl¦aª™ï€¦ Ï1ÏŜ都"ϧF,ϼ§ï(§Æ‚™ñ<§Æ¡sñP§Æ­sOñt§Á†«Ëòp¨ÂŒÿ0óŒ¨ qŸó¨¨šÏù§ô¼¨¦Ï1öÔ¨µÏ¨öè¨ÃÏ1ø©ÔϨø©ßÏ1ù,©íϨù@©ùÏ1ûX©Y•ûl©æ¡sçûŒ©æ¡sü¨©æ­sùüð©æ­s5¨þªæ­sOÿ<ª qb¨`ªô‚q¨tªþ‚w¨ˆª qƨ¤ª€‚ͨ¸ª q©ܪô‚ͨðªþ‚%©« qœ(«ô‚Åœ<«þ‚P« q¿©l«ô‚q¨„«þ‚w¨œ« qË©¸«€‚ͨ Ы qש ì«ô‚ͨ ¬þ‚%© ¬ qã© 8¬ô‚Åœ P¬þ‚ h¬ÂŒÿ0 ­ qŸ 4­âÓð© H­ôÓ1 `­ Ôª t­Ô1Œ­"Ôª ­2Ô1¸­DԪ̭^Ô1ä­zÔªø­‹Ô1®žÔª$®¬Ô1<®¼Ôð©P®ÊÔ1h®ÛÔª|®ìÔ1”®ÿÔª¨® Õ1À®ÕªÔ®+Õ1ì®=Õª¯NÕ1¯aÕª,¯mÕ1D¯{Õð©X¯ŒÕ1p¯ Õ𩄯®Õ1œ¯¿Õð©°¯ËÕ1ȯÚÕ–ªܯðÕ1ô¯ Ö–ª°!Ö1 °<Öžª4°KÖ1L°]Ö§ª`°qÖ1x°ˆÖ§ªŒ°žÖ1¤°·Ö§ª¸°ËÖ1аâÖ§ªä°øÖ1ü°×°ª±$×1(±:×°ª<±O×1T±g×°ªh±z×1€±×°ª”±¥×1¬±½×¸ªÀ±Ë×1 رÜ×ð© ì±ê×1!²û×Áª!²Ø1"0²$ØÁª"D²6Ø1#\²KØð©#p²ZØ1$ˆ²lت$œ²vØ1$´²‚ت$Ȳ“Ø1$ದت$ô²³Ø1$ ³Âت$ ³ÓØ1$8³æØª$L³ðØ1$d³Y•$x³æ¡sç$˜³æ¡s%´³æ­sù%ü³æ­sÒª'@´æ­sO(d´ q*<)€´€‚Åœ*”´ q\«*°´€‚c«+Ä´ q\«+à´€‚c«,ô´ q*<,µ€‚Åœ-$µ qœ-Hµô‚Åœ/\µþ‚/pµ qô¬/Œµ€‚ú¬0 µ qô¬0¼µ€‚ú¬1е qô¬1ìµ€‚ú¬2¶ qô¬2¶€‚ú¬30¶ qŠ®3L¶€‚‘®4`¶ qŠ®4|¶€‚‘®5¶ qŠ®5¬¶€‚‘®6À¶ qŠ®6ܶ€‚‘®7ð¶ q°7 ·€‚°8 · qq°8<·€‚w°9P· qq°9l·€‚w°:€· q*<:œ·€‚Åœ;°· q*<;Ì·€‚Åœ<à· q*<<ü·€‚Åœ=¸ q*<=,¸€‚Åœ>@¸ q‰²>d¸ô‚«%@x¸þ‚Åœ@Œ¸ q*<@¨¸€‚ÅœA¼¸ q9³Aظ€‚ÅœBð¸ qE³B ¹€‚c«C$¹ qQ³C@¹€‚c«DX¹ q]³Dt¹€‚ÅœEŒ¹ qi³E¨¹ô‚ÅœFÀ¹þ‚Fع qu³Fô¹€‚ú¬G º q³G(º€‚ú¬H@º q³H\º€‚ú¬Itº q™³Iº€‚ú¬J¨º q¥³J倂‘®Kܺ q±³Køº€‚‘®L» q½³L,»€‚‘®MD» qɳM`»€‚‘®Nx» qÕ³N”»€‚°O¬» qá³OÈ»€‚w°Pà» qí³Pü»€‚w°Q¼ qù³Q0¼€‚ÅœRH¼ q´Rd¼€‚ÅœS|¼ q´S˜¼€‚ÅœT°¼ q´T̼€‚ÅœUä¼ q)´U½ô‚«%V½þ‚ÅœV0½ q5´VL½€‚ÅœWd½ qB´Wˆ½“¾Q´Yœ½Ùw¨Y°½Æ­sOYè½Æ¡sZ¾Æ‚™Z$¾#Ì’¥Z(Ó/ÙØ·ZDÓGÙö·[hÓÏÅœ[€ÓSÙ¸[œÓdÙ¸\¸ÓoÙ¸^ÐÓ‘Ù)¸`ìÓžÙ?¸bÔžÙO¸dDÔ®Ùb¸gtÔ¼Ùm¸iŒÔßÙ|¸l¤ÔÚŽ¸pÐÔÚ—¸qüÔ&Ú£¸s(Õ&Ú¯¸uTÕ/Ú¾¸xlÕ@Úʸz„ÕXÚÙ¸}œÕnÚò¸ÈÕˆÚ¹øÕ¤Ú ¹‚ Ö­Ú¹ƒ8Ö·Ú¹…dÖÌÚ2¹‡œÖðÚE¹Š´ÖýÚo¹ŒôÖýÚ‡¹4×Ûœ¹‘t×Û·¹• ×*Û¸˜´×6Û¸™Ð×NÛϹ›ì×~Û¸ Ø–Ûä¹¢$ØŸÛb¸¤TبÛlؘJº¨˜Ø˜J º©Èضۺ«ÜØÃÛ¾¸¬üØÊÛ¸®ÙÔÛº°@ÙùÛ)º±TÙþÛ:º²˜Ù7ÜSº¶ÈÙvÜ]º¹Ú qB´º Ú„Ü%©¼0Ú q¤º¼TÚéܸº½pÚ Ýͺ½„Úݧ½˜Ú qÓº½´Ú‚¡¿àÚ­sế,ÛÆ­sOÀPÛÆ¡sÁˆÛjÉîºÁ ÛvÉîºÃ¼ÛÁª¼¡ÅÔÛ ÝͺÅèÛ qøºÅÜrÝ1Æ ÜŽÝ1ÆLÜ Ý»ÆxÜ­s,»È´ÜÆ­sOÉØÜÆ¡sÊÝjÉ9»ÊÝvÉ9»Ì4ÝݧÎHÝÖÝT»Î\ÝáÝ«%ÎpÝ q]»Î”ÝëݧѨÝòÝT»Ñ¼ÝýÝ«%ÑÐÝ q¸»ÑpÞ q¡Ó ÞTÞлÓÜÞ^Þ¡Óß^Þ5Óà‚¡Ôôà­Þ1ÔdárÝ1Ô°á Ý»ÔXâÄÞ¢ÖÐâÏÞ'½×èâÁª¼¡Ù$ã q¡Ù\ãòÞ´ÙÐãߊÙdä€ÚxäúÞŸÚ0å qT½ÛlåTÞл܈å^ޡܤ傡ÜÌåÁª¼¡ÜôåÂŒÿ0Ü æ q¡Ü æNßf½Ü4æY•ÜDæÝß~½ÜXæùß‚½Ülæ q¡Ý˜æà~½Ý¬æ1à–½Ý çKà1Þ<ç^à1ÞPçk ¸½Þ„çlàǽß”çÂŒÿ0à°ç q¡à(èGá ¾àtèiá–½âÌè•á–½ã$é¡á–½äpé©á7¾å¬élàǽå¼éÂŒÿ0æØéüáлæìéâz¾æê⇾æê┾æ(ê qš¾æXê>âä¾êlêGâñ¾ê€ê q÷¾ê¤êOâF¿ì¸ê q3¿íÔꀂ_¿îèêY•îøê q¡îëäÈ!î$ëT⌿î<ëd⦿ïPëk⳿ð`ë‚âÅ¿ñxëŽâå¿óë”âÀõ¨ëšâÀ÷Àëbƒ=ÀùØë~ÛWÀûðëNÛtÀýì qÚ™ÿ(ìey÷DìçâÑÀXìýâÜÀlì ãÁˆìãTÁ¨ì8ãÿ0ØìKã|ÁôìQãñÁ€íá ¸í|ã= Ôí’ãT îåã Â8îôã†ÂTîä–ÂŒîHä¯Â¨î^äÛÂÄîjäÃàî‰äNÃ,ï¬ä¢ÃHï¬äôÃdï¬äPÄ"„ï¬ä¶Ä'¤ïîä7Å-Èïþä™Å.äïåÍÅ0ðåÜÀ1ð-åÜÀ1(ð@åÆ1DðKå,Æ3`ðgåBÆ4|ð}åWÆ5”ð q«Æ7ÜðÆåÈÂ9ñîå´:˜ñøå1:¬ñ¨¢¡:äñTÞл:òæ¡:òæ¡:HòÁ (æ1:hòÁ Læ1:|òÁ ‰æJÇ:˜òÁ ±æ«%:¬òÁª¼¡:Äò q¡:óˆç¸Ç:Dó’ç:”ó©ççÇ:àó¼ççÇ; ôÒç$È<tôÜçÈ">¤ôöçÈ">äô èÈ"> õGáŠ>dõèÙÈ?ˆõ'èÉA¤õ,èRÉCÄõ7èrÉDäõÁª¼¡Eö?è‰ÉEDöKè ÉEtö qÚ™F”ö_èŠG°ö qÊH÷’çJ4÷ÄèJH÷×èŸJ`÷êè5ÊK„÷ôè5ÊL¨÷á¡MøGáŠMøé¸ÊN˜ø/éáÊPÔø<é-ËRDùaé£ËT¼ù7èÂËVìù,èÒËWú'èçËXLúè ÌZ|úáGÌ\œúÁª¼¡^¼ú²Æ&^Ðú$²Æ&^äúšéÆ&^øú«éÆ&^ ûºéÆ&^ ûÙéªÌ^4ûãéïÍ_Ðûê$Î`ôûêrÎa\ý-ê“Îd ý@ê²Îe´ý[êÑÎfÈýwêóÎgàýšêÏiüý¦êÏjþ¹êóÎk0þÕêÏmLþåêÏnhþüêqÏo|þë|Ïo˜þëÏp´þ&ë¢ÏqÐþ-ë´Ïrìþ5ëÐÏsÿQëìÏtDÿiëÐuXÿ q¡v`ÿFey4Ðvxÿ q¡w€ÿFey4Ðw˜ÿ qUÐx¸ÿá_º¨'yäÿá–º¹ŽyÆ„Šy<ÆV ¡zdÆì¾Y'zŒÆš§Y'{°Æ/Ây—|$Æ6Â1~4Æ€~P q¡~XFey8Ñ~˜ q¡ Fey8Ñà qÍ€áÄÀ$—‚,áñÀ¡ƒTá Á0—ƒ|áPÁ0—„Èá‚ÁE—…lá²Á1‡|áêÁ‡˜á_ºÎ–‡Äá–º¹Ž‡ôÆ€‚­ ‡Æ ¦b!ˆ@ÆEÂô–Š`ÆN—Š|Æ„b!ФÆt‚Y'ŒÈƯ¯cÆì¾Y'(ÂŒÿ0@Þ¾ÒX±ëÉÒ’|‘ÂÿÒ””¯¾FÓ–°⾈ӘØ'èäÓšð„Ô¯»6ÔŸ ÚëoÔ¡4ãë°Ô¢L£ƒ/Õ¤ÆìЦÆ.`§Æ!졨x q¡¨˜Á+슨¸ÁEì`©àÁ`졪 qÕª,ÆìЬ°Æ.`­ÌÆ!ì¡®è q‰Ò® Ư»ë°8 qUÖ±\ÆìгàÆ.`´üÆ!졵  qæÒµ< Ư»ë·h  q3Ó¸x Fey›¹œ  q3Óº¬ FeyY'»Ì  qk×¼ø ÆìŠ¿œ Æ.`À¸ Æ!ì¡ÁÔ  qÇÓÁ Ư»ëÄ<  qØÅ` ÆìŠÇ° Æ.`ÈÌ Æ!ì¡Éè  qdÔÉ Ư»…ØÊ8  q ØËl ÆŽ»ŠÏ˜ Æ•»`ÐРƣ»¡Ñ4  q ØÑh ÆŽ»ŠÕ” Æ•»`ÖÌ Æ£»¡×0 qÅØ×TÆÂ‚¡Ù| qžÔÙ Ư»ëÛø qàÔÜFey„•Ý@ qÕÞPFey„•߈޾Úà´¯¾uÚâàâ¾ùÚä‘ÂRÛæH'èáÛè|„Üë”Úë¯ÜíÈãëþÜ Ýð< qåÙòTFeyùÝô| qLÚõ”FeyùÝ÷À q ÚøàFeyùÝû q9Ûü4FeyùÝþl q¢ÛÿŒFeyùÝÐ qhÜèFeyùÝ8 qW¡HFeyùÝd qW¡tFeyùÝ  q?Ý °FeyùÝ ãìÞÞ$ÿìßL q¡TFeynß qß FeyßÌ qßÜFeyªßø qßFeyK1$ qß4FeyÂßp q߀FeyÂ߬ qÔß¼Feyáߨ qÔßèFeyáß qûß eyà < q¡"DFeyà"d qUà#¤eyà)L qUà+„Fey˜à1È qÔß2ØFeyáß3ô qÔß4Feyáß5  qûß6<eyà7X q¡9`Feyà9€ q¥à:˜Fey#á<0 qÔß=@FeyK1>\ qKá?lFeyUá@€ qKáAFeyUáB° qfáCÈFeysáEø{î‡áF@ŒîÉáJ\›îááL¤¦î–ÂP¼³î†ÂRÐÆî/âSèÖî^âU q¨hWFey§âX\ q¨hYlFey¸âZˆ q¾â[ FeyÉâ]Ä qÐâ^ÔFey“g_0 qÚâ`XFeyHgd° qêâeÀFeyõâfÜ qãgôFeyõâiP q¨hj`Fey§âk¨ q¨hl¸FeyãmÔ qÚ™nôÆŽ»ŠoÆ•»`p Æ£»¡q0¹äãq„Åä¦ãtäÏäÀãu, q>ãv<FeyùÝw` q>ãxpFeyøãy” q>ãz¤Feyä{ÈQãÐå|!áìå,!’ãæX! q¡†`!Fey0æ†|! q¡‹„!Fey0æ‹ ! qõ°!Feyfæ‘Ð! qõÂ’à!Feyvæ“" qõ”"Fey†æ•0" q¡–8"FeyŽæ–L" q¡—T"Feyvæ—d" q¡˜l"Fey†æ˜€" qÚ™™"Feyfæš°" qŸæ›À"Feyvæœà" q­æð"Fey†æž#JïqÏŸ$#Tï,ÆŸ@#]ïÜÀ X#oïÜÀ p#‚ï»æ ”#Žïç£ì#¡ïç¤$ØïFç¥P$âï]秈$ð˜ç©à$%ðÇç¬% qíç¯(%FeyŽæ°L% qè±\%Fey貈% qí糘%FeyŽæ´¼% q¡µÄ%Feyèµì% qíç¶ü%FeyŽæ· & q¡¸(&Feyè¸P& q.è¹h&FeyŽæ»& qçæ¼°&Feyfæ¿Ü& qCèÀô&FeyŽæÂ' qLèÃ<'FeyvæÆh' qYèÇ€'Fey޿ɍ' qLèÊÈ'Fey†æÍô' q3¿Î(FeyjèÏ(( q¡ÐH(/ðX`Ðp( q¼çѰ(2ðfæÒü(DðfæÓ$) q”èÔ<)FeyŽæÖh) q”è×€)FeyŽæÙ¬) q¡Úð){æJÇÚ0*¨¢¡Út*xð´Ú *·å²ÆÚ0+ìï1ÜH+QéËÜd+ÐåÞÆÜ´+Áª¼¡ÝÌ+ qŠÝÜ+FeyTéÞø+ qÊß,Feyjèà,¼ð˜éá¤,ßðçéáð,æðêâ-ñêã(-4ñXêãP-?ñXêèx-Jñçí”-]ñŸêî°-eñ×êïÌ-nñëñè-tñNëó.ñŒëõ .§ñÉë÷<.¶ñÑÀùT.ËñÜÀùh.Õñöëùˆ.Üñìû´.ëñTìýÔ.ðñ}ìÿð. q¡ /TíTß /ò1 0/;ïìã D/q³1 \/5ïØã p/ò1 ˆ/Y• °/ qŠ Ì/€‚´ à/ q` ü/€‚f 0 q—ì ,0€‚Cí @0 q©í \0€‚´ t0 qÅí 0€‚f ¨0 qáí Ä0€‚Cí Ü0 q¡ ð0ey¦% 1 q#ê T1FeyŽæ œ1 q#ê Ô1FeyŽæ 2 q3¿ ,2Feyjè  2 qƒî ¸2FeyŽæ Ü2 qŠ ì2Feyjè p3 qÑî ˆ3Feyfæ" $4 qWï# <4FeyŽæ% d4 q¶ê& |4Feyjè( 5 q¢ï) ,5FeyŽæ+ P5 qºï, h5FeyŽæ. 5 që/ ¨5Feyjè1 Ä6 q¢ï2 Ü6FeyŽæ4 7 q.è5 7FeyŽæ7 @7 q%ð8 `7Feyfæ; \8 q¢ï< t8FeyŽæ> ˜8 qdð? °8FeyŽæA Ü8 q%ðB ü8FeyvæE ü9 qðF :FeyŽæH @: qðI X:FeyŽæK „: q%ðL ¤:Fey†æO  ; q8ëP ¸;FeyjèR \< qùðS t<FeyvæU ¤< qsëV ¼<FeyjèX @= qYèY X=FeyŽæ[ €= qYè\ ˜=FeyŽæ^ À= q;ñ_ Ø=Fey†æa Ä> q´ëb Ü>Feyjèd 4? q¡e øZüc? Xküµ@ œ‘wüÿ A ð‘‚üáB 0’üC ”’›ümD “¨üðF ´“»üšG `”ÏüüH °”îü3J • ýDL T•#ýXN ¨•sýýO D›zýP h›ƒýR ›‰ýS ¼›ý+U ð›•ýKX (œ›ýe\ \œßýe` œðýŠd èœþãf þ™g l0þ°i (žCþ¿k džMþºm „žSþ¸n ´žoþÐo 螀þ¾¸q ŸþϹs 4Ÿ¦þ¸x XŸ¼þ¹z ÄŸÏþ ¹| @ Úþ#} À åþ¹€ 0¡ñþE¹‚ ´¡ÿR„ ¢ÿm¸† Œ¢ÿ¹‰ ´¢5ÿ—¸‹ £Nÿޏ t£_ÿ£¸Ž ü£pÿ¯¸ Œ¤ƒÿò¸“ ̤°ÿ}• d¥Æÿ— ¦åÿ 𠬦õÿ³ X§O¸¡ Ч"?¸¤ 8¨5|¸¦ è¨U¸ª `©aଠÀ©oʸ® ì©u ± Lª‰Ù¸³ ¤ª–Æ&µ ¸ª¿ µ äªÐ¡ · «äR¹ («û¹ º H«#!» Ü«w#!À 謔üÅ ­§µ!Ç X­º½!É €­ÍË!Ë œ­Ò"Í ®õ_"Ò p®"Õ È®&¼"× $¯/5#Ú ¯A5#Ü Ì¯X\#Þ ô¯u7$à p°‡o$â °°•‹$ã <±¡ª$ä  ±¼Ó$æ ô±ÔÜ$è ²æù$è €²ò %é ¬²þ%ê ³ C%ë ³v&í ˜³ É&î À³)ã&ï ä³4û&ð ´?'ñ P´F%'ó p´P)ô „µW')õ Àµa')ö ܵj8)÷ ¶vL)ø 4¶†8)ù X¶—…)ú ¤¶¤Ä)û ì¶µ"*ü ·Ä6+ý ”¸ç-þ ̼ó/-ÿ ༠M-ÿ ô¼(‰-ÿ ½? - ,½dý- H¾€6. ð¾›T. ¿¨Õ. ÌÀÊ/ ÁÔ / 4Áì/ HÁ Sº „Á/Ñ/ ÈÁ¦1 øÃ¸º ˆÄÖ:º ¼Äê)º Å qÏ1 <Åû Åñ1 DƤ7 |Æ q¡ „ÆFey2 ˜Æ qm ¨ÆFey2! ÈÆ qm" ØÆFey!2# øÆ q¡$ ÇFey(2$ <Ç q¡& DÇFey32& |Ç q¡( „ÇFey>2( ÀÇ q¡* ÈÇFey>2* È q*<, ÈFeyI2- PÈ q¡. XÈFeyR2. tÈ q¡0 |ÈFeyd20 ¤È q¡1 ¬ÈFeyu21 ÐÈ q¡2 ØÈFey†22 ðÈ qŽ24 ÉFey—$5 É qm6 ,ÉFey•27 LÉ qŽ28 \ÉFey›29 xÉ q¡: €ÉFey¯2: ˜É q¶2; ÀÉFey•2? |Ê qŽ2@ ŒÊFey›2A ¨Ê qþ2B ¸ÊFey—$C ÔÊ qmD äÊFeyqE Ë q¡F ËFey 3F $Ë q*<G 4ËFey 3H PË qŸI `ËFey 3J |Ë qŠK ŒËFey3L ¨Ë qŸM ¸ËFey-3N ÔË q¡O ÜËFey:3O ðË qO3P ÌFeyj3Q Ì q„3R 8ÌFey-3T `Ì q¡U hÌFey:3U |Ì q·3V ŒÌFeyÏ3W ¨Ìz4X ¼ÌƒX ÐÌŒ4X äÌ q4X Í qŽ2[ ÍFey—$\ 8Í q¡] @ÍFey04] TÍ qA4^ dÍFeyX4_ „Í qn4` ”ÍFeyu4a °Í q†4b ÐÍFeyÛ4e Î qä4f 0ÎFeyÛ4g \Î qó4h tÎFeyÛ4j ´Î q5k ÌÎFeyÛ4m Ï q*5n ÏFeyÛ4o 4Ï q¡p <ÏFey04p PÏ qn4q `ÏFeyu4r |Ï q95s ”ÏFeyÛ4u ÜÏ qi5v ìÏFeyÛ4w Ð q|5x <ÐFey‘5{ tÐ qŸ| „ÐFey‘5} ¤Ð qš5~ ¼ÐFey¡5€ äÐ qš5 üÐFey­5ƒ $Ñ qº5„ <ÑFey¡5† dÑ q¡‡ lÑFey:3‡ €Ñ qO3ˆ ÑFeyj3‰ °Ñ q¡Š ¸ÑFeyÎ5Š ÌÑ qá5‹ ÜÑFeyô5Œ øÑ q¡ ÒFeyô5 Ò q¡Ž $ÒFeyô5Ž @Ò q¡ HÒFeyô5 dÒ q6 ”ÒFeyô5• äÒ q¡– ìÒFeyô5– Ó q¡— ÓFeyô5— ,Ó q¡˜ 4ÓFeyô5˜ PÓ q¡™ XÓFeyô5™ tÓ q]6š „ÓFeyô5› ¤Ó qš5œ ¼ÓFeyô5ž ôÓ q¡Ÿ üÓFeyô5Ÿ Ô q¡  ÔFeyô5  <Ô q¡¡ DÔFeyô5¡ `Ô q¡¢ hÔFeyô5¢ „Ô qu6£ ¬ÔFeyô5§ ðÔ qš5¨ ÕFeyô5ª @Õ q¡« HÕFeyô5« dÕ q¡¬ lÕFeyô5¬ ˆÕ q¡­ ÕFeyô5­ ¬Õ q¡® ´ÕFeyô5® ÐÕ q¡¯ ØÕFeyô5¯ ôÕ q¡° üÕFeyô5° Ö q5± (ÖFeyô5² LÖ qm³ \ÖFeyô5´ €Ö q¤6µ ÖFeyô5¶ ´Ö q©6· ÄÖFeyô5¸ èÖ qŽ<¹ øÖFeyô5º × q®6» ,×Feyô5¼ P× q³6½ `×Feyô5¾ „× q¸6¿ ”×Feyô5À ¸× q½6Á È×Feyô5 ì× qŸà ü×Feyô5Ä Ø qaSÅ 0ØFeyô5Æ TØ q¢Ç dØFeyô5È ˆØ qÂ6É ˜ØFeyô5Ê ¼Ø q¡Ë ÄØFeyô5Ë ìØ qu6Ì ÙFeyô5Ð XÙ qÇ6Ñ pÙFeyô5Ó ˜Ù q¡Ô  ÙFeyô5Ô ¼Ù qá6Õ ÌÙFeyô5Ö Ú q¡× ÚFeyô5× 4Ú q*<Ø DÚFeyô5Ù dÚ q]6Ú tÚFeyô5Û ”Ú qð6Ü ¤ÚFeyô5Ý ÄÚ q]6Þ ÔÚFeyô5ß ôÚ qð6à ÛFeyô5á $Û q¡â ,ÛFeyô5â HÛ qŸã XÛFeyô5ä xÛ q¡å €ÛFey7å  Û q¡æ ¨ÛFeyI7æ ÈÛ q¡ç ÐÛFey04ç äÛ qg7è üÛFey7ê Ü q‘7ë ,ÜFey³7ì LÜ qÐ7í \ÜFeyØ7î xÜ qá7ï ˆÜFeyí7ð ¤Ü q8ò ¼ÜFey—$ô üÜ qƨõ Ý q¡ö ,Ý qÇ$ö Dݯ€Í¨ø XÝ q8ø pÝFeyØ7ú Ý q98û °ÝFeyS8þ èÝ q¡ÿ ÞÆ¡so8ÿ <ÞÆ­s‡8 €Þl¨8 ”Þ q²8 ¸Þô‚†0 ÌÞþ‚ àÞY• ðÞæ¡sç @ßæ¡s \ßæ­sù °ßsÓ8 Ôßæ­så8 $àæ­sO Hàz9 \à q*5 xà€‚9 ŒàY• œà q¡ ´àÆ¡s9 ÐàÆ­s&9 ìà q¡ ôàFeyL9 dá q‘7 táFey9 ¬á q‘7 ¼áFeyº9 ôá q¡ üáFeyL9 @â q‘7 PâFeyì9 â¹: àâÆ: $ãÎ: TãÖ1: 4äáW: Ôäìå:! Xå";$ lå)¹0$ €å6Ô§$ ”å q;$ ¼å q¡' ÄåFey";' äå q);( ôåFey6;) æ©Ë;* tæ»/<- æÍÖ</ èæÛ:=2 çí†=4 $çýÊ=7 @ç é=: Pç é=: `ç? é=: pçX é=: €ç… ýœ: ´ç” ï=; üç qr=< èFey#>= 0è q¯=? @èFeyY>@ dèÍ å>B °è× ?E Àéî ??H Ìê •?L hï *@O ó) E@S Ìó3 žT ôJ N@U $ô[ —@V @õm ¤@Y PùÂŒÿ0\ ú q¡\ úFeyÃ@\ 4ú q¡] <úFeyÌ@] hú q¡_ púFeyØ@_ Œú q¡` ”úFey2` ¨ú qŸa ¸úFeyb Hû q¡c PûFeyá@c dû q¡d lûFeyö@d û q¡e ˜ûFeyu2e ¼û… +Af Øû« +Ah ðû» Aj üà ÃAn (ü ýAq Dü… ²Ît `ü[êÑÎu |ü# ;Bv ˜üwêóÎx ´ü¹êóÎz ÐüšêÏ| ìü¦êÏ} ýÕêÏ~ $ýåêÏ @ý qÍ`€ PýFey=1 lý qÍ`‚ |ýFeygBƒ ˜ý q€B„ °ýFeya† Øý qA‡ èýFey¼Bˆ þ q¡‰ $þFeyK1‰ 4þ qkAŠ TþFey!C €þ qÍ`Ž þFeygB ¬þ qQC ¼þFeygB‘ Øþ q¡’ àþFeyXC’ ðþ q¡“ øþFey]C“ ÿ q¡” ÿFeyK1” $ÿ q¡• ,ÿFeyK1• <ÿ qQC– LÿFeyK1— hÿ ‘C˜ p° ·C ¸Ê ÓC  ðÖ ÓC£ (â çC¦ Dÿ Dª @ *D¯ è é=´ ü. BD´ (åùÞ¶ <d ýœ¶ pp ýœ· ¨ƒ cD¸ ø é=¹ ¥ ‹D¹ T¹ £D» ˆÓ ØD½ Üð ØDÁ  þDÅ 4 EÆ @  EÉ 5 /EÌ D rEÏ X^ ¥EÒ Ðz é&Õ ä dFÕ ¦ †FØ  ¶ ŒFØ ° É ÁFÝ ¸ Ý Gã ü ÿ ¡Gê ŒÝGï l$îGð 8cHñ ”K Hú L`I0z3J  !™´J,"«ÕK€"¾„L0#ÊwM"#1$¤#!¿M$¸#41$Ì#A5$à#QÈM%ô#d5&$ qÒM'0$ qîM*H$Fey N,l$ qN-œ$Fey N2Ü$ q7N3 %Fey N8H% q`N9p%Fey N=¨% q†N>È%FeyªNAø% q†NC&FeyªNFH& q†NHh&FeyªNK˜& q†NM¸&FeyªNPè& q†NR'FeyªNU8' q†NWX'FeyªNZˆ' q†N\¨'FeyªN_Ø' q±Naø'FeyªNd(( q±NfH(FeyªNix( q±Nk˜(FeyªNnÈ( q±Npè(FeyªNs) q†Nu8)FeyªNxh) q†Nzˆ)FeyªN}¸) q†NØ)FeyªN‚* q†N„(*FeyªN‡X* qÕN‰ˆ*FeyªNŽÄ* qûNü*FeyªN–<+ qM˜L+Fey]C™+ q5Lš°+Fey[PÜ+ÂŒÿ0 ,Ðýœ p,í©P¡°,ö'¢Ä,ÀP¢à,ÖP¥|-(ôP§à-9%Q¨<.LwQ©¨.y,R®¬2bR³è2˜‘R¶ 3ª®R¹<3¾S¼ä4ÔQSÂ$5ÚbSÅL5õ¬Sȸ6 ,TÎÜ6©TÒ@7"UÓ¼73#UÕÐ7=#UÕä7JbUÕ48e¾UÖ„8u×U×Ð8†×UØ9‘×UÙ\9§åUÚ,:¹JÜx:ÅôUÞÀ:¶ +áè:ÎVâ;ÝVä$;ë*VåX; *Víˆ;,Wõp?J Xÿ,@_7Xp@uWX Œ@Ž™X¤@®ìX¼@º5YÐ@üWàH[$4II[(MEQ[*HMS][,pMdj[/”M}z[1ÀM„[3èM‹[4 N²˜[7$N q¢[:LNô‚=`Nþ‚=tNƒX=ˆNY•=˜N q¡= NFey¾[=O q¡>OFeyë[>€OÂŒÿ0?¤O qŸ?ÀOZ \@ÔOr1@ìOŒ \@P˜1@PY•@,Pæ¡sç@TPæ¡sApPæ­sùA¬Pæ­s\CäPæ­sODQ qÐâEQFeyY'F)Þˆô¨K)Þˆ©V)Þˆ©c)Þˆ0©n)ÞˆD©{)ÞˆX©†)Þˆl©“)Þˆ€©ž)Þˆ”©«)Þˆ¨©¶)Þˆ¼©Ã)ýœˆTªÏ)'‰dªÜ)'‰tªî)J‰Ыú)RŠl¬ *t‹ˆ¬&*7tŒ$­@*BtŽD­M*Zt ­X*¾ž’ð­g*åž“,®{*òž”l®“*Ãt•¼®*Ëž˜H¯°*Zš´¯Ä*ýœ›à¯Ñ*ýœœ°ß*Ùrx°ì*7uŸ°°+Bu¡̰+7t£d±.+Bt¥„±C+Ùr§رS+ã© ²]+õrªP²o+Ûs¬в|+Ru®\³”+\u±°³ qcu³ȳFey Nµô³ q¡¶ü³Fey|u¶0´ q¡¸8´Fey†u¸X´ q*<¹h´Feyuº¼´ qŸ»Ì´Feyžu¼ü´ q¡½µFey¤7½Lµ q¡¾TµFey¤7¾œµ q®u¿¬µFey¤7Àȵ q¡ÁеFeyÉuÁ$¶ qŸÃ4¶Fey2Äh¶ q¡Åp¶Fey2Å„¶ q×uÆœ¶FeyáuÈ · q¡É·FeyËÉ(· q¡Ê0·FeyËÊ@· qçuËX·FeyËͰ· q¨ÎÀ·FeyËÏà· qðuÐø·Fey¾ŸÒ$¸ q¡Ó,¸FeyùuÓD¸ qÿuÔ\¸Fey¾ŸÖˆ¸ qvט¸FeyáuØ´¸ qvÙ̸FeyáuÛ(¹ q8vÜ@¹Fey¾ŸÞì¹ q¡ßô¹FeyÉußHº q¡áPºFey2ádº qvâtºFeyáuãܺ qÿuäôºFey¾Ÿæ »_,^vç`»ÂŒÿ0逽 q¡éˆ½Feyq霽 q*<ꬽFey·vëȽ q¨íؽFey­ îü½ qô¬ï ¾Fey Nð,¾ÞÅvñD¾š§Þvòd¾„úvô|¾¨Ãwö˜¾ì¾úv÷°¾òÂ6wùȾz,Zwûܾ„,6wüô¾Ž,Zwþ¿~«¡wÿ$¿rÁw8¿¶¾×wT¿¨¾×wp¿¯¾xˆ¿â¾x ¿_«Cx À¿œ,lx à¿Þ¾™xø¿Ø´xÀ¥,Ëx0À¬,éxDÀû¾y`À¿"y|À´,=yÀº,ªÌ¤ÀÀ,6w¼ÀË,tyäÀÔ,ty Áß,ty4Áî,ty \Áÿ,Ïy"xÁ -Ïy#”Á-z$ÄÁ&-'%ÔÁ÷3z%Â4-3z(”ÃÌz+HÄD-6{.„ÅY"Ï{2”ÆR-S|5(Çe-Ìz6ìÇl-£|9pÈp-à|<ÜÈu-ö|>LÉ~-j}AÀɃ-’}D4ÊŠ-’}F¨Ê‘-®}HÈʘ-®}KøÊ -~NˆËª-/~Rô˲-g~U8Ì»-/~W˜ÍÁ-å~Z,ÎÑ- ^dÎæ-åc Ïÿ-T€hxÏ.=iÐ).sm8Ð2.=pØÐ?.støÐH.¯w<ÑZ.ßyÑl.¯zÔÑ~.ß|(Ò.ü}hÒŸ.ü~¨Ò®.]‚8Óº.’‚€\ÓÅ.=6„ÓÐ.=6¬ÓŽ¢Ï‚ Ô/ƒ‚ŒÔ/hƒƒ°Ô/ÿƒ„(ÙŸÉ#„‡dÙ1/=„ŠÌÙ=/V„ŒèÙD/†„ ÚP/„4ÚX/²„‘dÚi/ë„”¬Úo/"…–ÈÚ q¾™˜àÚFeyY'šÛ q¾™›ÛFeyY'8Û q¾™žPÛFeyY' tÛ q󀡌ÛFeyl…£¸Û q¡¤ÀÛFeyl…¤ÐÛ qó€¥èÛFeyl…§Ü q¡¨ÜFeyl…¨,Üz/œ…©@Ü„/1©TÜð.Ü‚©hÜú.5ª|Ü q‚« Ü qBƒ­ÄÜáż«%¯èÜáð¼1¯Ýá.½¡¯,Ý᪼¡¯<Ýƶ‚´¯\Ý qp„¯tÝFeyùݱ´Ý q …²ÄÝFeyÞ…³àÝ qò™µðÝFey †¶Þ qÉš¸(ÞFey)†ºPÞ q¡¼XÞFey<†¼pÞ q¡¾xÞFey<†¾ÞÞ^†À¨Þ„l†ÁÀÞ/††ÄàÞ󾡆Æßì¾Ä†Èßt‚܆Ê8ß~«ý†ÌTß ¾‡Îpߪ/m‡Ðœß¨¾›‡Ò¸ß¯¾¸‡ÔÐßâ¾Ý‡Öèß¶¾›‡ØàÞ¾ˆÚ,à_«WˆÜPàœ,ˆßtà´,àˆâ”à¯/%‰ã´à·/Z‰åÔà¥,‰çèàº,¨‰èüà¬,‰é áû¾Ù‰ê<á¿ô‰ëXár Šìlá q¡ìtáFeyŠì˜á q‰í¨áFeyGŠîÜá q‰ïìáFeyGŠð â-ŠñPâ÷§Šò”â4-§ŠöHäÂ/?‹ú”ä‹ütåÊ/å‹ æÏ/ŒÐæÑ-:Œ çæ-0 Èç×/|ðç -é€èR-–Ž0ée-üŽêl-Nêp-™!ëß/#¤ëŠ--%0ìƒ--'¼ì´ªÖ)Tíç/H‘+ðíu-¤‘-€î~-;’0ïì/š’3$ðû/š’9Xð0“?äð=/8“AñP/_“Bñ ¿•“C8ñX/Ç“Exño/ ”H¼ñi/‹”J4òD/É”LXò®.G•Oøòº.„•PóÅ.=6QDóÐ.=6QlóŽ¢á•QÜó/5–R\ô/˜–S€ô q …TôFey»–U¼ô q¶”WÔôFeyã–Yõz/—[,õ„/1[@õð.ö•[Tõú.5\hõ qq•]Œõ ql–_°õáż«%aÔõáð¼1aôõá.½¡aö᪼¡a(öƶ‚¿JaHö0YCa€ö q¡bˆöFey`—b ö qç–c°öFey„—dÔö q¡eÜöFey—eôö q—f÷Fey„—g(÷ qç–h8÷FeyÞ—i„÷ q¡kŒ÷Feyò—k¸÷%0˜lÐ÷-0˜mè÷50˜nø=0˜oøE0R˜pÈøÌyŸ˜tXùp0Ƙyøù‡0™~úk ™ƒ0ú%0.™‰Hú-0.™Š`ú50.™‹xú‡0K™Œúk f™¬úE0y™•4ûÌy¦™˜¤ûp0¸™œü~«æ™ ¼üÞ¾.š¢tý§0Vš¤þ¶0“š¦ÜþºÎš¨ðþp0óš©HÿE0›«„ÿÌy›¬ÜÿÞ›®r&›¯/Â-›¯,Ù0E›´`ï0P›·œþ0d›»Äjƒ›¼1Æ›½h(Œï›¿ÈßœÁøû¾œÂ$¥,*œÃP~«8œÄ Þ¾SœÆ(1²œÈ¤11 Ë\61dΧ0¼ÑhB1žÓ¶0]žÖxR1vžØ¬¨¾¢žÜä^1½žÞ(o1Ÿã´w1vžæè¶¾¢žê ƒ1½žìd 1Ÿñð —1WŸôL ª/“Ÿ÷| £1ªŸù¸  ¾ÇŸüè ‘  þL ¯¾= ¨ â¾m  ¯1‡ t /§ ¤ »1¸  ì ó¾Ï   Ç1ú Ð Ë1N¡Ô×1–¡\Ý1¢ä1œX_«k¢´œ,²¢ì1ò¢¼ö1K£ hü1£$¸ 2¿£)($2 ¤.˜'è)¤3Ì02E¤692›¤9tJ2›¤;ÄU2ð¤=<e2¥?h~2@¥A”Š2Y¥BÈ“2€¥Dü÷œF0´,©¥G\º,$ÎHˆš2¶¥IÔ£2È¥M ­2ç¥OH¶2þ¥S€Ã2%¦U¬Ô2V¦WØ2{¦XXÞ2V¦ZÐâ2¯¦[`è2V¦]Øì2¯¦^hò2V¦`Hú2{¦a,3:§cô‡0O§f k Y§h$3j§k´º€§oÈä1Œ§pÜjƒž§qðÞ¾´§r¶0ϧt ~«ð§v8¬,œxL¿*œy`r¨ztºû&z´ºŒ§{ôÞ%¨| (Œ1¨}$‡0^¨Œ23˜¨ì‘¿¨„ §0ߨ† p0û¨ˆ8 F3©Š` S3$©  ]3e©$!(1Ÿ©’D!h3é•Ì!B1ª™ð!t3Œªœ´"‚3˪¡Ø"‡32«¥t#61_«ª˜#11Ž«­°#3Ê«°ì#_«ý«³$92'¬¶d$œ3Y¬¸°$'謼Ü$¨3£¬¿`%ö1ã¬Ã€%´3­Ç´%œ,e­Ìø&J2'¬ÏX'Æ3¥­Ñ '02Ý­Ö(Ø3®Ùœ(í3z®Ý*ì1¼®æ+4é®ê˜+1¯íÈ+¶¾(¯ðà+¨¾(¯òø+4é®ô€,o1¯÷°,/<¯ú-ó¾Q¯üD- ¾…¯þ€-ª/¥¯Ü-¯¾À¯ô-â¾Ú¯ .×1° .Ý1%°4.Ç1S°L.Ë1s° d.Š2œ° |.“2ʰ¸.÷Œ§ô.º,å°/´,ö°/%4±t/£2'±Œ/14;±Ð/¶2U±è/Ô2û&X0Ø2 ±Ð0è2û&!ˆ1ì2Õ±"\2Þ2û&$3â2Õ±%è3ò2û&'¬4ú2 ±(t51ë±*Œ5Ã2 ²,¬5jƒ$².È5~«.²06§0D²2`6Þ¾_²4¤6¶0k²6è61}²8,7p0•²:”7S3¡²<8I4§²>P8¶¾É²A€8T4§²C¸8¨¾É²Fè8ºÕ²H9 qã²I(9FeygBKP9 q³Lh9Fey³N9 q-³P¨9FeygBRÐ9_4]³Sì9l4š³T:Tâ]³V:x4š³W4:rä³YL:“4´Yh:p0;´Z¨:~«\´\;‡0~´^t;§0š´`ì;¨¾Â´bd<¶¾Â´dÜ<(1û´f¨=¦4BµiÄ=­4›µkà=¯¾Õµn>Þ¾÷µp@>¶0-¶rp>11l¶t¸>‘®¶wè>Ç1æ¶y0?Ë1/·{”?ùÛb·~Ä? ¾‘·D@ª/º·”@ó¾ï·ƒ$A/¸…tAÁ4D¸‡àAÞš¸‰ŒBjƒ¥¸Š¸Bºâ¸‹hC_«ü¸ŒÜC92)¹lDÒ4]¹‘ˆD(Œ•¹’ÐD1«¹”ìDà4˹–XEè4-ºšF¥,ö°Fû¾å°žÄF¬,©¥ŸôF¿$Π¤G¨Ã¹º¡ÀGô4D¸¢øGÚë »¤0H'èr»¥hHý4”»¨´H£2»«I 5Õ»­TI¶2 ¼°¸I5%¼²ØI*5b¼¶0J35Ἰ¬JU5½¼K^5½ÁPKg5U¾Ä¤Km5U¾ÅÔKv5³¾ÆðK~5U¾È8L‡5‘¿É„L“2‘¿Ë´L÷U¾ÍäL’5ô¿ÎMÔ23ÀÐ|MØ2RÀÑìMò23ÀÓ¤Nú2RÀÔ`OÞ23ÀÖ Pâ2ªÀ×ÔPè23ÀÙ€Qì2ªÀÚHRš5յ܀R¤5D¸Þ¸R©5ÕµàðR1]ÁâÈSo1]Áå Tº3ÀèU qK³é$UFey•ÁêHU q³ë`UFey•Áí€U qö³îUFey•Áï¬U q.´ðÄUFey•ÁòìU q'µóVFey•Áõ,V qoµöLVFey•Áù€V q3ÓúVFeymÂû¬V q‰…ü¼VFey†ÂýØV q¶þèVFey†ÂÿW qX¶WFeyÎÂ0W qœ¶@WFey†Â\W q¡dWFeyíÂ|W q¡„WFeyèW q\· ¸WFey•Á ØW q$¸  XF–¢·ehYF¨¢¡èYF®¢10ZF½¢´DZFÏ¢¨'pZ qO¹€ZFey•Á¬Z q½B¼ZFeyhÃÜZ qy¹ôZFeyhÃ([ qØ8[Fey•ÁX[ qŠh[Fey•Áˆ[ qͺÈ[F–¢·e$¼\F¨¢¡%$]F®¢1%d]F½¢´%x]FÏ¢¨'%¤] qýº%ä]F–¢Ä+ø^F¨¢¡,X_F®¢1,œ_F½¢%Ä,°_FÏ¢1Ä,Ø_ qA», `F–¢·e34aF¨¢¡4¤aF®¢14ìaF½¢´4bFÏ¢¨'44b q>¼4„bF–¢ƒÄ<8dF¨¢¡=˜dF®¢1=ØdF½¢¼=ìdFÏ¢Ä=e qÒ½=4eFey×Ä@ˆe qÿ½A eFeyK1Cðe q½BDfFey•ÁEf qÅF4fFeyùÝH f q¡I¨fFey®ÅIÄf q¡JÌfFeyÝÅJg q¾KgFey|ÆMlg qõ¾N´gF–¢·eUähF¨¢¡VLiF®¢1VŒiF½¢´V iFÏ¢¨'VØi qS¿V(jF–¢·e^dkF¨¢¡_ÌkF®¢1_ lF½¢´_ lFÏ¢¨'_`l q¾_xlFey„—a¨l q½Bb¸lFey„—càl q:ÇdølFeyùÝfTm q¡g\mFey„Çgˆm qÖ¿h mFey Èjäm qÇÀk$nF–¢·eq oF¨¢¡rˆoF®¢1rÈoF½¢´rÜoFÏ¢¨'rp q$¸rPpF–¢·ey¤qF¨¢¡z(rF®¢1zprF½¢´z„rFÏ¢¨'z°r qÁzørF–¢·e0tF¨¢¡‚˜tF®¢1‚ØtF½¢´‚ìtFÏ¢¨'‚uá5PÈ‚,uç5˜ÈƒHu6ëȆhu;62ɉÜuU62É‹vc6¢É@vr6¥¸\v~6 Ê”v‘64ó“´v6—Ê•èv¬6ÀÊ—wÁ6Ë™ w qŠœ8w+x´Lw†¾Íhw q¡€wÆ¡s{˘wÆ­sËž°w qWI ÐwÆ¡s‰Ë¡ôwÆ­s”Ë¢ x q>Ȥ@xá–º¹Ž¥`xÆŸ‚¨'¥|xÂŒÿ0¥”x q¡¥¨x4Ú³¥¼xY•¥ÌxÁ_º¨'¥äxÁ–º¹Ž¥y qrÈ¥$yFey•Á¨Ly qÎÈ©dyFey„•«”y q¡¬œyFeyùݬÆ&7X`­Èy q…É­ìyÁ_º¨'¯`zÁ–º¹Ž¯€z qÁɯÌz46¡°€{W7´°¸{Áb7X`°Ø{Á u¼´±ì{Á ż«%±|Áð¼1±@|Á.½¡±h|Áª¼¡±ˆ| qб˜|FeyK1²Ì| qnɳä|Fey„—µ} qÁɶ }Fey•Á·@} qJʸt}áż«%¼œ}áð¼1¼~á.½¡¼<~᪼¡¼L~ƶ‚ͼl~ qJʼ”~Fey+ÍÀÀ~ q½BÁÐ~Fey„—Âä~ q Ãô~FeyKÍÄ q^ÍÆ4ÆÂ‚¡ÈT qåÊÈ€ÆÂ»ŠËœÆÕ»ŠÌ¸Ư»dpÍôÑ7ïÍ΀ì7xÎÏh€ñ7¿ÎД€8êÎÑÀ€ÂŒÿ0ÒØ€ q¡Òì€ä7OÎÒM81ÓX8&ÏÓ,a81ÔDm82ÏÔXv81ÔpY•Ô˜ q¡Ô¬ qŠÔÈ€‚´ÕÜ q£ÎÕø€‚àÏÖ ‚ qBÐÖ(‚ q^Ð×D‚€‚´Ø\‚ qzÐØx‚€‚àÏÙÆ Ú7 ÎÙÆ Ä7¹ÍÙ‚ q¼ÐÙ´‚•8àÏÛÈ‚£8ÖÐÛÜ‚‚âŸÃÛƒÁ ¬8 ÎÝ,ƒÁ é8¹ÍÝHƒ qùÐÝ`ƒFeyhÃߌƒ q3ÑàœƒFey]Ñá „ q£Îâ8„•8àÏãL„Á u¼´ãˆ„Á ż«%㨄Áð¼1ã4…Á.½¡ã\…Áª¼¡ã€… qÎñã …)9¨'ä´…Á ¬8 ÎäÈ…Á é8¹Íäè… qÀÑäø…Fey]Ñå4† qÎñæD†FeyK1ç`†Å.=6舆Ð.=6è°†êíÑèĆB9ùÑé8‡´ª#ÒëT‡ç/eÒíx‡F9·ÒK9õÒò̇S9YÓõô‡Z9wÓ÷<ˆc9¼Óû\ˆj9Ôý€ˆq9PÔÿ䈀9ÜÔD‰9ôÔh‰—9Õ ‰¤9õÒ؉°94ó ø‰º9%Õ ŠÅ9ÂÕTЬ6 ÖlŠ q§^ŒŠáż«%¬Šáð¼1ÈŠá.½¡ðŠáª¼¡‹ƶ‚´8‹ q¡X‹Á u¼´€‹Á ż«%¨‹Áð¼1Ì‹Á.½¡ô‹Áª¼¡ŒÂŒÿ04Œ qŸPŒO:@ÖdŒ\:1|Œk:@ÖŒy:1¨Œ‰:@Ö¼Œ˜:1ÔŒY•Æ©:FÖÆ‚¡èŒ q¡ W7´PÁ u¼´dÁ ż«%€Áð¼1¸Á.½¡àÁª¼¡ø qÒŽÆ©:FÖXŽÆÂ‚¡tŽ qFÒ ŽÆ©:FÖÆÂ‚¡ qÒHÆ©:FÖ ¤ÆÂ‚¡ Ì qÓ áż«%$(áð¼1$´á.½¡$Ü᪼¡$øƶ‚´$‘ q›Ó$D‘áż«%'|‘áð¼1'¸‘á.½¡'à‘᪼¡'ü‘ƶ‚´'0’ qÞÓ'T’Æ©:FÖ)¬’ÆÂ‚¡)¼’ q>Ô)Ô’Feya+ü’ qšÔ,0“áż«%0\“áð¼10 ”á.½¡0H”᪼¡0X”ƶ‚´0€” qgÕ0¼”áż«%5ä”áð¼15Œ•á.½¡5´•᪼¡5Ü•ƶ‚´5ü• qØ50–‡0´6„–Á u¼´6˜–Áð¼16Ü–Á ż«%6ø–Á.½¡6 —Áª¼¡60— qŠ6T—Á u¼´7h—Á ż«%7„—Áð¼17¤—Á.½¡7Ì—Áª¼¡7Ü— qöÕ7˜áż«%9 ˜áð¼19<˜á.½¡9d˜áª¼¡9Œ˜ƶ‚´9¨˜ qG9̘ÆÏ¢¨';à˜Æ–¢·e;™ƨ¢¡<0™Æ®¢1<@™ƽ¢´<\™Æ:Û×<p™_x Ø<Œ™ qØ=¬™ÆÛz>Ì™Æ:aØ@à™Ñ:sØ@ô™é:aØAšó:ÈØA$š q¡C<šÆ¡s{ËCTšÆ­sËDlš qŸFŒšÆ¡s{ËG¨šÆ­sËHÀš q¡Jؚơs{ËJôšÆ­sËK › q¥ØM0›Æ¡s{ËOL›Æ­sËPl›ŽÅÙR¤›·¹"ÙS¸›°¹"ÙTЛØFÙUä›_«RÙVœœ,qÙY,œ¨¾Ù\Pœ¶¾Ù^tœ~«¤Ù`˜œÞ¾ºÙbÀœ‚âÕÙd䜿ÿÙfû¾ Úg@%0ÚhX-0Úip;Újˆ;Úk ‡0PÚl¸k hÚoÐE0yÚs4ž/;¦Úu¼žK;äÚyŸW;Û~tŸÌy4ÛƒŒŸp0DÛ†¤Ÿ~«kÛ‰8 §0‚Û‹РÞ¾ÄÛ¡¶0 Üh¡ßIÜ‘´¡g;IÜ’¢/‡Ü“ ¤ q¯Û›8¤FeyíÜ`¤ qëÛŸx¤FeyíÜ¡¤¤ q=Ü£´¤FeyíÜ¤Ф qeܦð¤FeyíÜ©¥¢;›«0¥¶;󚬈¥»;%¦®X¦Ã;¥°¨¦Ù;@¥²̦í;¥Ý³ȧ<¥µ¨<@¥·L¨p-𧸄¨&<Ðݺب´ª´§½D©><Þ¿œ©ç/ϧêR<ŠÞÅ´ªF9Ž«ÉP«ƒ-(¯ÌŒ«Š-(¯ÎÈ«n<1¨Ð¬u<Œ§Ò`¬y<1¨Ó¨¬<*ßÕð¬¦<ë±ØL­®<`ßÚ¨­c9À¯Ý®Ä<{ßßX®Ð<ߨâx®Ö<éß丮ì<:àç$¯ú<å°è˜¯=ž§é ° =ÆàêP°¶;û¨î˜°=Üàð±E=þàôh±b=þà÷ȱ€=Ú¯úX²Š=PáüÔ²­=°ÿD³³=æáô³Ð=%°„´×=]â µê=S°°µî=Ââ |¶>s°8· >ìât·P/*œœ·o/œØ·>œ°ð·$>1¨(¸.>6㬸4>eãè¸:>ƒã!°¹Q>¨ã((ºW>%¨,Pº_> ä-(»r>œ°0T»ÌyMä2x»]»nä3»…>ä4´»š>ä4л®>Ð4ä»´>Ð4ø»Ð>Ð4 ¼?U¾4¼#?Gå50¼)?Yå6D¼-?iå7T¼3?|å8h¼;?‚å9œ¼J?žå:°¼„ɬå;ȼɬå=à¼ʬå?ø¼|ʬåA½jɬåC(½vɬåE@½õåGX½è2ËåIt½Þ2ËåK½N?yjM¤½W?ãåNÀ½o?yjPܽw?yjQø½?=6R¾‰?=6R(¾‘?’æR<¾•?ªæSP¾åÂæT`¾™?ÕæUt¾?ëæVŒ¾±?ùæX ¾À?çY¸¾Í?ç[оÛ?1ç^ì¾é?eçb¿õ?vçd¿@çg8¿@ÕçkP¿+@èmh¿:@”+o€¿I@$éqœ¿ÜÉCés´¿è¢KétÌ¿ÌÂKévä¿ÊKéxü¿1ÊKézÀ=ÊKé|,ÀòÊCé~DÀa@Ué\Àt@UétÀ‚@Ë僌À@Ëå…¤À@Ë凼À¬@Cé‰ÔÀº@1¨Š$ÁÄ@éŒ@ÁÎ@é\Áñ¬cjŽ|Á&ë¢Ï”Á-ë´Ï¬Áá@¼é‘ÄÁê@Ïé’ÜÁ¦áé“ôÁ¨ ôé” Âò@ôé•(Âø@cj–DÂÿ@YC—hÂA)ꘀÂ)A)ꘘÂ1A-꘬ÂDA-ê˜ÀÂRA1ê˜ØÂ[ADê™ðÂë|ÏšÃëÏ› ÃcAnêœ8ÃmA„êPÃwA›êžh„[Ÿ°Ã¦½ê ÈÀAÎê¡ ÄŽâç£TÄ–Aüê¥lÄAü꥘ħA륬ĮAôé¥ÄijA8ë¦ÜÄ¿ACé¨ìÄÏANë©ÅÙA`ë©ÅäA`ë©(ÅñA‡ë©HÅBŸë«hÅ¿C鮀ÅBC鯘ÅBCé°°Å#BCé±ÈÅ(BÖë²àÅ.BCé´øÅ6BC鵯:BCé¶(Æô4Cé·@Æ@BCé¸XÆ»Èôé¹pÆFBC麈ÆJBCé» ÆPB2켸ÆUBCé½ÐÆYBCé¾èÆ^BCé¿ÇbBCéÀÇgBCéÁ0ÇkBCéÂHÇpB}ìÃ`Ç‚BUéÅàÇ q¿çÇøÇFey­ É È qèÊ8ÈFeyíÌ`È q¡ÍhÈFeyíÍ€È q¡ÏˆÈFeyY>Ï È q¡Ñ¨ÈFeyíÑÀÈ q¡ÓÈÈFeyíÓàÈÅ.=6ÕÉÐ.=6Õ0ÉB)êÕHÉ©B)êÕ`ɵB$HÕœÉÂB2íÖäÉËBmíÛ(ÊÛBçíÞ€ÊæB"îãÄÊñB:îæËüBuîë`ËC‡îî¨ËCÂîóìËCÚîöDÌ*CïûÌ6C-ïþèÌAChï4ÍNC€ï|ÍYC»ï ÀÍdCÓïÎoCðLÎ{C&ð”ΆCaðØÎ‘Cyð ÏœC´ð#dϦCÔð&¬Ð²Câð*ÄоCúð-ÒÊCñ1ÒÖC>ñ4TÒâCƒñ9lÒïCÑñ=ÄÒûCòCÓ DEòH<Ó$DSòLTÓ.DbòN´Ó8DbòPÌÓ@DqòR,ÔLDqòTDÔUD€òV¤ÔaD€òX¼ÔjDòZÕvDò\4Õ€DÊj^ŒÕŒDÊj`¤Õ•DÞobüÕ¡DÞodÖ«DÄjftÖ·DÄjhŒÖÀDžòjìÖÌDžòl×ÖD©ònd×âD©òp|×ìD¸òrÜ×øD¸òtô×EÇòvPØEÇòxhØEÖòzÈØ'EÖò|àØ1Eõò~TÙ>Eó|ÙIEóƒÚVEcó‡ ÚjEó‹˜ÚxE³óŽÛ†EÊó’tÛ´Eöó—èÛÄE,ôŒÜãEfô¤4ÝóE¡ô¬ ÞFõµèÞ"Fœõ¿0ß1F¾õÂhßBFáõðßTFCéÄÌß_FCéÅèßkFCéÆàwFCéÇ àƒFÖëÈ<àFCéÊXàŸFCéËtàªFCéÌà·FCéͬàÇFCéÎÈàÔFôéÏäààFCéÐáëFCéÑáøF2ìÒ8áGCéÓTáGCéÔpáGCéÕŒá&GCéÖ¨á2GCé×Äá=GCéØàáIG}ìÙÆ zG1ÛÆ ‡G1ÛÆ“G¡ÛÆ ¶‚´Ûüá q¡ÛâÁ u¼´Û4âÁ ż«%ÛPâÁð¼1Û âÁ.½¡ÛÀâÁª¼¡ÛÐâ›GÆöÛã q¡Ü ãÆzG1Ü0ãÆ‡G1Ü@ãÆ“G¡ÜPãÆ¶‚´Ühã qŠÜˆãÆzG1Ý˜ãÆ‡G1Ý¨ãÆ“G¡Ý¸ãƶ‚´ÝƦGËÝÆ­GËÝÆ³GÚöÝÆ¸G­ ÝÌã qëöÝüãÆ“G¡ß䯶‚©*ß4䯇G1߯¦GË߯­GË߯³GÚöß°ä qëößà䯓G¡áü䯶‚´á寇G1áœå q¡á¤åFeyÕXá¸å qûöãæÆzG1èæƦGõXè4æÆ­GõXèHæƳGðXè`æƸGðXèpæ q÷è¤æá–º¹ŽìØæÆŸ‚Ldìç q¡ì çFey÷ì ç q÷îhçÆzG1ó|çƦG'÷óœçÆ­G'÷ó°çƳG-÷óÈçƸG-÷óØç q2÷ó èá–º¹Ž÷@èÆŸ‚F÷÷lè q¡÷tèFeyN÷÷ˆè qT÷ùÐèÆzG1þäèƦG]÷þ鯭G]÷þéƳGc÷þ0éƸGc÷þ@é qh÷þtéá–º¹Ž¨éÆŸ‚|÷Ôé q¡ÜéFey„÷ðé qŠ÷8êÆzG1 LêƦG“÷ lêÆ­G“÷ €êƳG™÷ ˜êƸG™÷ ¨ê qž÷ Üêá–º¹Ž ëÆŸ‚µB <ë q¡ DëFey²÷ Xë q¸÷ ëÆzG1´ëƦGÁ÷ÔëÆ­GÁ÷èëƳGÇ÷ìƸGÇ÷ì qÌ÷Dìá–º¹ŽxìÆŸ‚à÷¤ì q¡¬ìFeyè÷Àì qî÷íÆzG1íƦG÷÷<íÆ­G÷÷PíƳGý÷híƸGý÷xí qø¬íá–º¹Ž#àíÆŸ‚ø# î q¡#îFeyø#(î q$ø%pîÆzG1*„îƦG-ø*¤îÆ­G-ø*¸îƳG3ø*ÐîƸG3ø*àî q8ø*ïá–º¹Ž.HïÆŸ‚Lø.tï q¡.|ïFeyTø.ï qZø0ØïÆzG15ìïƦGcø5 ðÆ­Gcø5 ðƳGiø58ðƸGiø5Hð qnø5|ðá–º¹Ž9°ðÆŸ‚‚ø9Üð q¡9äðFeyŠø9øð qø;@ñÆzG1@TñƦG™ø@tñÆ­G™ø@ˆñƳGŸø@ ñƸGŸø@°ñ q¤ø@äñá–º¹ŽDòÆŸ‚¸øDDò q¡DLòFeyÀøD`ò qÆøF¨òÆzG1K¼òƦGÏøKÜòÆ­GÏøKðòƳGÕøKóƸGÕøKó qÚøKLóá–º¹ŽO€óÆŸ‚îøO¬ó qöøOðóÆzG1TôƦGõXT$ôÆ­GõXT8ôƳGðXTLôƸGÿøTlô qùT´ôÆzG1YÈôƦG ùYèôÆ­G ùYüôƳGùYõ qùY@õá–º¹Ž\lõÆŸ‚ù\”õ q'ù\ØõÆzG1aìõƦGõXa öÆ­GõXa öƳGðXa4öƸG0ùaTö q5ùaœöÆzG1f°öƦG>ùfÐöÆ­G>ùfäöƳGDùfüö qIùf(÷á–º¹ŽiT÷ÆŸ‚Pùi|÷ q#ñiÄ÷ÆzG1nØ÷ƦGËnð÷Æ­GËnøƳGÚön,øƸGÚön<ø qiñnpøá–º¹Žr¤øÆŸ‚¨'rÐø qµñr ùÆzG1x4ùƦGËx\ùÆ­GËxtùƳGÚöx˜ùƸGÚöx¨ù qòxäùá–º¹Ž}úÆŸ‚¨'}Pú qŽù}úÆzG1¤úƦG–ù¸úÆ­G–ùÌúƳGœùèúƸGœùøú q¡ù$ûá–º¹Ž„PûÆŸ‚yM„xû qq°„ˆûFey­ …¼û qq°†ÌûFeyè…‡ ü q¡‰$üÂŒÿ0‰ý6î4ú‰¤ý q¡‰¬ýFeyŸø‰Àý qÒùŠÐýFeyÚö‹ìý q¡ŒôýFey3øŒþ qÒùþFeyÚöŽ4þ q¡<þFeyðXPþ qÒù`þFeyÚö‘|þ q¡’„þFey-÷’˜þ qÒù“¨þFeyÚö”Äþ q¡•ÌþFeyÇ÷•ÿ qÒù–ÿFeyÚö—4ÿ q¡˜<ÿFeyù˜Pÿ qÒù™`ÿFeyÚöš|ÿ q¡›„ÿFeyDù›˜ÿ qÒùœ¨ÿFeyÚöÄÿ q¡žÌÿFey]úžàÿ qÒùŸðÿFeyÚö   q¡¡$ÂŒÿ0¡œ6î4ú¡° q¡¡¸Feyù¡Ì qÒù¢ÜFeyÚö£ø q¡¤FeyDù¤ qÒù¥(FeyÚö¦D q¡§\ÂŒÿ0§Ô6î4ú§è q¡§ðFeyù§ qÒù¨FeyÚö©0 q¡ª8FeyDùªP qÒù«`FeyÚö¬| q¡­”ÂŒÿ0­ 6î4ú­  q¡­(Feyù­< qÒù®LFeyÚö¯h q¡°pFeyDù°ˆ qÒù±˜FeyÚö²´ q¡³ÌÂŒÿ0³D6îû³X q¡³`Fey*û³x q‰…µˆFey­ ¶¤ qËú·´FeyFû¸Ø q¡¹àFeyTû¹ø q‰…»Fey­ ¼$ qËú½4FeyFû¾X q¡¿pÂŒÿ0¿è6î4ú¿ü q¡¿Feyù¿ qÒùÀ(FeyÚöÁD q¡ÂLFeyDùÂd qÒùÃtFeyÚöÄ q¡Å¨ÂŒÿ0Å 6î4úÅ4 q¡Å<FeyùÅP qÒùÆ`FeyÚöÇ| q¡È„FeyDùÈœ qÒùɬFeyÚöÊÈ q¡ËàÂŒÿ0ËX6î4úËl q¡ËtFeyùˈ qÒù̘FeyÚöÍ´ q¡Î¼FeyDùÎÔ qÒùÏäFeyÚöÐ  q¡Ñ ÂŒÿ0Ñ 6î4úѤ  q¡Ñ¬ FeyùÑÀ  qÒùÒÐ FeyÚöÓì  q¡Ôô FeyDùÔ  qÒùÕ FeyÚöÖ8  q¡×P ÂŒÿ0×È 6î4ú×Ü  q¡×ä Feyù×ø  qÒùØ FeyÚöÙ$  q¡Ú, FeyDùÚD  qÒùÛT FeyÚöÜp  q¡Ýˆ ÂŒÿ0Ýô 6îNüÝ  q¡Ý Fey^üÝ$  qïûÞ4 Fey{ËßP  q¡àX Feycüàp  qïûဠFey{Ë✠ q¡ã¤ FeyhüãÔ  qïûää Fey{Ëå q¡æFeytüæ qïûç,Fey{ËèH q¡éPFey€üéd qïûêtFey{Ëë q¡ì˜FeyðXì¬ qïûí¼Fey{ËîØ q¡ïàFeyŠüïô qïûðFey{Ëñ  q¡ò(Fey”üò< qïûóLFey{Ëôh q¡õ€ÂŒÿ0õø6î4úõ  q¡õFeyùõ( qÒùö8FeyÚö÷T q¡ø\FeyDùøt qÒùù„FeyÚöú  q¡û¸ÂŒÿ0û06î4úûD q¡ûLFeyùû` qÒùüpFeyÚöýŒ q¡þ”FeyDùþ¬ qÒùÿ¼FeyÚöØ q¡ðÂŒÿ0h6îý| q¡„Feyù˜ q‰…¨Fey­ Ä q¡ÌFeyDùä q‰…ôFey­  q¡(ÂŒÿ0 6î4ú´ q¡¼FeyùÐ qÒùàFeyÚö ü q¡ FeyDù  qÒù ,FeyÚö H q¡ `ÂŒÿ0 Ø6î4ú ì q¡ ôFeyù  qÒùFeyÚö4 q¡<FeyDùT qÒùdFeyÚö€ q¡˜ÂŒÿ06î4ú$ q¡,Feyù@ qÒùPFeyÚöl q¡tFeyDùŒ qÒùœFeyÚö¸ q¡ÐÂŒÿ0H6î4ú\ q¡dFeyùx qÒùˆFeyÚö¤ q¡¬FeyDùÄ qÒùÔFeyÚöð q¡ÂŒÿ0€6î4ú” q¡œFeyù° qÒù ÀFeyÚö!Ü q¡"äFeyDù"ü qÒù# FeyÚö$( q¡%@ÂŒÿ0%¸6î4ú%Ì q¡%ÔFeyù%è qÒù&øFeyÚö' q¡(FeyDù(4 qÒù)DFeyÚö*` q¡+xÂŒÿ0+ð6î÷ý+ q¡+ Fey*û+$ qþ-4Feyí.P qºý/`Fey-þ0„ q¡1ŒFeyTû1¤ qþ3´Feyí4Ð qºý5àFey-þ6è¢Ké7ÌÂKé94ÜÉCé;LÊKé<d&ë¢Ï>|-ë´Ï?”á@¼é@¬¦½êAÄê@ÏéBܦáéCô¨ ôéD ò@ôéE$RA1êF<[ADêGTmA„êHlwA›êI„×G=6JœõåJ´­s¬åLÌ®AôéNäÅ.=6O Ð.=6O4y<1¨OxáG`þQ B9^¨S q®ŽUHW7´V€Á u¼´V”Áð¼1VøÁ ż«%V Á.½¡V8 Áª¼¡VÆeyè…VH  q¡X` Æey¢þXx ½¾œY¤  q‘þZ¼ Fey­ \à  qX¶]!Æeyè…^ÆeyV†^$! q¡aÔNKéþ”> q¡¬>Æ¡s{ËÄ>Æ­sËÜ> qŸü>Æ¡s{Ë?Æ­sË0? q¡H?ÆÞ `? q¡ x?Æä  ? q¡ ¨?Æê  À? q¡ Ø?Æð  ð? q¡@ÆÃÕX @ q¡8@Æö P@ q¡h@Æü €@ q¡˜@Æà°@ q¡È@ÆÃÈ à@ q¡ø@ÆÃÎ A q¡(AÆÃÔ @A q¡XAÆÃÚ pA q¡ˆAÆÃà ¤A q¡!¼AÆÃæ !ØA q¡#ðAÆÃì #B q¡% BÂŒÿ0%(C+x %DJ qX¶?TJFey¢þ@xJ q¡A€JFeyŠøA”J q¡CœJFeyøC°J q¡E¸JFeyÕXEÌJ q¡GÔJFey÷GèJ q¡IðJFey²÷IK q¡K KFeyÀøK K q¡M(KFeyTøMÀª]ƒ Ad¬•]Û!DÜ­«]§"Hd¯Ã]Å"KܰÖ]ö"OL²é]$#R²ÂŒÿ0VH´ q]…VX´Fey­ Wt´ q‰…X´ey­ Y¬´ q]…Z¼´Fey­ [Ø´ q‰…\ô´ey­ ]µ q1Š^ µFeyùÝ_<µ q]…`LµFey­ ahµ q}ŠbxµFeyè…cœµ qÊe¬µFeyV†fе q‹iàµFeyQ‡j¶ qv‹n¶Fey¹ˆo@¶ig$tT¶iÆ&th¶(iÆ&t|¶>iÆ&t¶SiÆ&t¤¶piÆ&t¸¶†iÆ&t̶ iÆ&tයiÆ&tô¶ÙiÆ&t·ñiÆ&t·jÆ&t0·&jÆ&tD·Ý0Ý>ݵٛ¬ñy×(ݩݰݩݰ݇ª›¬ñy©Ý°Ý™Þ›¬ñy‡ª©Ý°Ý`“ß1ߦ?à›¬4ßô¢lxlxlx?à4ß׸á¾áÄá•ß/â`“`“Zâ¦vâvâ‡â]܇âÇÙvâžâÚ§â´âvâ‰ÛvâÁâlx¼G€¼vâvâbãjãvâjã…ãvâ©ã¶ãÌãjãvâjãúã)ä4äZä4ä4¼~ä£ä~ä4ä¹äÅäÏ们¹äÅäÏäN¹S¹¹äÅäÏäN¹S¹Z¹¹äÅäÏävâ åÏävâvâ4ä[åpåvâ‰Û¼ñy¿vlxlxlxHtèlxbãlxbãbãbãbãXè¦Újã¿vͻͻz{ébãébãébãébãbãbãsébãsébãÚjã}¾ôé ê!ê)êá‚;êTêTêêTêTêTêêTêTêTꦦ¦¦FëFë¹€¿v¿vuë`“`“`“çÞzë…ë‹ë†‹_‹`“`“`“çÞz뜾œ¾¦œ¾¦œ¾œ¾¦œ¾©ëµÙ¹»^¨¾ëµÙÆëµÙÆëµÙÐëñyµÙ¼µÙ¼µÙµÙéëñëùëµÙ¦»¦NÃlx¹»¦»lxì¹»lx¹»¦»lxì¹»lx €lx €lx¹»ñy¦»lxd«ì¹»¹»ì¦»ì¹»¹»ìŠì•즻¹»ìŠì•즻 ì£ì¦ì©ì¹»lx¿vlx¿v©ë¬ìÆë¬ìÆë¬ì¾ë¬ìÐëñy¬ì¼¬ì¬ì¸ì¿ìùë¬ìlxÒì €lxÒì €lxÕìÙì €lxÒì €lxñyÒìèÒììÝìÒì €Òì €lxÕìÙì €—u!í`íiíȃiííiíá‚iíá‚iíá‚—uµí—uµí¼¼Nü—u•߸á¾áâíÍ»¼N×u•߸á¾áâíͻ႗uµí—uµí¼¼Nü—u!íȃ—uUî[îiî[îrî—u[îá‚7y±u…îï7yï7y±u…îï)ä4ä¾î €¼ €¼7yȃ7yíïÒƒá‚Òƒï7yï±u҃Ⴑuá‚7yïá‚7yȃ7yílx¦»vâ¼ñyZäZä0ï¿v0ï¿v0ï¿v×vâbã×vâ×G€•߸á¾ájã•߸á¾áPŒjã•߸á¾áPŒ~äY½~äôº~äôºÔƒNÃ^¨•ß €¸á €¾á €ô¢ô¢Äálx¼lx €Ôƒ €Ôƒ €Y½Ôƒ €¼Ôƒ^¨Ôƒô¢^¨^¨Ôƒ^¨^¨Ôƒ^¨¼ €Ôƒ¼«Äá €/â €Ôƒ«/âÄá €/â €Ôƒ«/âÄá €lx¼lx¼Y½Y½—uY½Ôƒ—uY½ÔƒY½ƒðbãY½•ß €¼Y½Y½jã•߸á¾áPŒjã•߸á¾áPŒlx €kñlxlx €€ñPŒ™ñPŒ€ñPŒ’ÀlxãñæñNÃæñkñüñ`“`“`“`“`“`“]s]s]s]sjã•߸á¾áPŒÄáÔƒjã•߸á¾áPŒÄáÔƒlx¼ €•ßÔƒ €^¨lx¼G€kñ¼Ôƒkñlx¼¸á«Ôƒ¼Y½Ôƒlx €¼¸á«Ôƒ¼vvÔƒ€ñ¼Äávv¸á«Ôƒ¼ôºÔƒ€ñ¼Äáôº¼'òÔƒ¼'òÔƒ€ñ¼Äá'ò€ñPŒ¼™ñ¼ôº™ñPŒ¼/âôºÔƒ/âôºÔƒ€ñ/âôº€ñPŒ…ë^¨’ÀÔƒãñæñÔƒz¾Ôƒæñz¾Ôƒæñz¾üñÔƒÓòÔƒ—uñy›¬ÓòÔƒ‡ªÓòÒƒ—u‡ªÓòÔƒ—u›¬óÔƒ/âóó•ß…ë/â6ó?óGóï£äÔƒ…ë/âï6ó?ó£äÒƒY½ï6ó£äôºÔƒ…ë/âï6ó?ó£äôºÏä~ä™óžóvâ åÏä~ä™óÈóÌó—ußó/âÔƒ €èÔƒ €lxbãÔƒ €bãÔƒ €bãԃ႗u]s—€Ôƒ¿¬—€¿¬lx—uñy—uñy—u]s•ß €Ôƒ•ß €Ôƒ/âóó•ß €lx^¨@ô €@ô €PŒX¨…ë/âï6ó?ó£äÒƒY½…ë/âï6ó?ó£äôº…ë/âï6ó?ó£ä'ò…ë/âï6ó?ó£äÒƒPŒ¿¬…ë €ôºBôXçÔƒ/âJôXçñy¾îdô)ä¼/âá‚)ä/âjô]sXçŽôÔƒ/âjôÝXçñy–ô)ä4äÏôZä4äá‚4¼UîÕô~äá‚~äá‚Þô£ä~äçô£ä~ä4äá‚£ä~ä4äá‚~äá‚~äÔƒÏä~ä™ó]sÝÔƒÅäÏä~ä™óÝðô¹äÅäÏäóô¹äÅäÏäá‚N¹¹äȃN¹S¹¹äȃN¹S¹Z¹¹äȃvâȃZäZä~äÔƒ åÏä~ä™óÈó]s åÏä×~ä™óÈóá‚ÝÔƒ å~ä™óÈóÝüô å~ä™óÈóÝá‚]sá‚ åÏäõ åÏäá‚dôõ]s~äõY½~äõ%õ~äõ%õvâ4ä~ä)õvâ4äá‚2õ[åá‚›¬]s;õ=õ›¬á‚—ußó›¬ÔƒFõ €lxbãOõ €lxbãá‚Xõ €lxbãá‚aõ €lxbãá‚ €bãjõ €bãá‚ €bãá‚ €bãsõ €bãá‚ €bãá‚ €|õ…õ €á‚ €á‚~äŽõ~äŽõ~ä”õbã~äõbã~äႦõ~äႯõ¸õá‚~äŽõ!í!í!ívz!ívz!ívz¦!í!í¦ïlöóö¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€PŒHtö ÷Nù€¹€¹€¹€=øîÛ®ø®ø ÷Nà÷õøüøùùÀ§ÎùâùG€G€vvBúTúfúxú¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€^¨¹€¹€¹€¹€¹€¹€¹€¹€¹€¹€^¨^¨¹€HtNù€¹€áüäüáüÿüLÇvzlxNÀý¿¬€ý€ý €€ý €f«€ý €f«d«¨ýµýŠªÂý¨ýµýŠªÂýúý¼áü'þ]slx¿v¿vNÿvG€¿váü‰þÚ—þšþþ þ£þ´þ¸þáü¼¼áüHt €áü¼LǼLÇöNÃ0lxáü¼]sHÿHÿHÿ¦]sHÿ¦Žÿ¼Àÿ¼]sÀÿ¼Àÿ¼¦]sÀÿ¼¦]s¼¼¿v?JÚÇÙÚáüNÿvNÃvvlx¼’ÚÊÍÛáüøø08;BI08;BIáü8áü8øÆÆÒƒøÛä(ÈÆøÿÆø(Èø(ÈÆ9=HtÎùah~ÆÀÿ¼Ht¯ÉÐïïïïï^¨^¨¿vºÄïïïïïïïïïïï5V¿¬wŽÀ§’ÆŽ¹Á¬x&,1Ü&œ¾9ÔƒîÛÆîÛVºÄâ1Üö1Ü{è÷HtHt¹€äüÿü-PŒG€3G€G€G€áüG€PŒIȃȃ¬x0ÛÒƒ86Ûáü?;BIE6EáüÆh¥ÉG€¼øMHt¯lx €ïlxïG€vvïQV[ºÄHtïlxïNÃG€vv¼ €G€vvG€h¥G€ï™G€ŸG€¥´ÃÒƒ¥´Æ¥´Æ¥´Æïlxïz{ýƒ„ÒÙÙâæêîòÆöýÙÙ €ÆÆÙÙ G€vv_‹†‹ÆÆÙÙÙÙÙ €…ë €‹ë €dô €! €' €Ïô €Uî €ßó €- €4 €; €B €IÙG€vv_‹†‹ÆG€vvÆÙ €ÆÙ €Æ €Æ €Æ €Æ €Æ^¨ €X¨ïïïV1¬PVP¿¬Õ°ŽÀ§\ÆHth¥©€—€œu޹»¬¹cf¿v]s €f«y½½y½½œs]sœsîÛ]s]s`“`“]s €f«ȃ&,&,ȃ&ȃïïïÝïlxÀ§ïV1¬PùüVïlxïµ·NõJzµN÷µJz÷úÚ÷ÚúÀÃáü÷¿vÀ§÷À§¿vÀʪԃœs—uá‚—u*¿œsႜs—uá‚—u*¿œsá‚NÃB Ht—u]sá‚—u]sá‚Nà ‚ ¿vB HtNÃz{ȃȃ Tê TêlxÎ Õ p‚ ÿ Tê êTêTêTêÿ TêêTêêTêTêTêTêTê°¬x°_‹lx°ÔƒlxÔƒÔƒlxÎ Õ Ôƒ°_‹‚_‹ €z{^¨^¨‚^¨Õ —€ï˜ ž Õ ¼ €‹Õ ˜ ÷Õ ˜ ÷Õ ó ˜ ÷Õ ¼ ˜ —€HtÕ ¼ ˜ —€Ht¯oÅáü áülx €áüożáüÒƒí ¼áüÒƒí _‹—€p‚Òƒp‚÷Òƒp‚÷Òƒp‚÷Òƒp‚÷Òƒp‚÷ÒƒÕ —€˜ ¬xà p‚í Òƒ¼ ¼áüp‚í õ Òƒ¼ ¼áüp‚Òƒ¼áüí HtHtÕ —€Òƒ¼ ˜ õ Ht¼ á‚Õ p‚—€Òƒ˜ Ht¼á‚Õ —€Òƒ˜ õ u¼á‚„Õ ‚p‚Òƒ¼p‚÷Õ „‚¢¼Òƒ³p‚÷¼³p‚÷¼áüÒƒ³p‚¦¦¦ó ÒáoÅIJz¼Òƒí qv{¼Òƒí €qv¼Òƒí …ví Òƒ¼IHtí Òƒ¼IHtí Òƒ¼IHtí Òƒ¼IHtí Òƒ¼IHtí Òƒ¼IHtí Òƒ¼IHtí ¼ÒƒIHtí ¼ÒƒIHtí ¼ÒƒIHtí ¼ÒƒIHtí Òƒ¼Iuí Òƒ¼IHtí Òƒ¼IHtí Òƒ¼Iup‚í Òƒ¼ ¼IHtp‚¼í õ Òƒ¼ IHt³¬x³p‚÷¼áüÒƒÀÃlx £¢Òƒ 1DXahrïXrïaXa¤Òƒ×ʤ¶HtÇÌÐïaÇaèíHtèd«ïaèa1Ä €^^ÎùÎù²_‹¬xÒƒ¬xÒƒÀ§¬xíÞHtíÞô1ÄÇ£³íÞý €ô1ÄÇ£³íÞý €ô1ÄÇ£³íÞ=ý —€ €ô1ÄÇ£³íÞýô1ÄÇ£³íÞvvn¸x‚…ˆ‹ €¤ý©íÞ¤ý1Äô1ÄÇ£³íÞý  €ô1ÄÇ €Ç]sÇ¿¬Ça¿¬uaˆ¦¦u1Ħy½½…½y½½…½ȃȃ\’œs]sœs]s]síÞ¦ €®Ôƒô1ÄÇ£³íÞý €ýƒ„„ „¤íýƒ„„ „¤í@ô €ô1ÄÇ£³íÞý €ô1ÄÇ£³íÞvvn¸xHtˆý¸x‚…ˆ‹ €f«ÇíÞý¤¸x‚…ˆ ‹ €‚ˆ €ýƒ„„ „¤íýƒ„„ „¤í¤ý©¿v³Ôƒ³Ôƒ €f«ô1ÄÇ£³íÞ]s¶PŒýƒ„„ „¤ííÞ¤ýȃ1ÄÎù_‹Ç]sÇ]sÇ]sÀà ïÀÃ\’`“`“`“y½½`“`“y½½`“`“`“]s]s]s]s]s\’`“y½½y½½`“`“`“`“`“`“y½½y½½`“]s]s]s]s]s]s1Ä]sóá‚1Ä]s1Ä €®¿v®¿v^¨^¨¿¬’ÀT¦×Ê×Ê×Ê×Êa•×ÊÍalx¿¬’À•••••••DK^¨DX¨gggg¾gg°¦°¦aaáçïHtd«áçïd«°ñy↓’À¿¬’À¿¬’À¿¬’À¿¬’À¿¬’À¿¬’ÀKKK €K!f«^¨…ëX¨^¨ÊÔƒ¦¬xÔƒ×ʦ¦¬xÔƒ¬x×Ê €Ht €HtHtG€vvG€vv­ÒƒHt € €Ht†‹Ht†‹HtÒƒHt_‹PŒµ’ÀPŒµÒƒHt_‹PŒµ’ÀPŒµPŒPŒPŒADÒƒPŒµY\ADÒƒPŒYµ\ADÒƒPŒµPŒµPŒµPŒµPŒµG€vvG€vvG€Òƒ_‹&ÀPŒPŒµ’À_‹&ÀPŒµPŒµPŒµ&À=Òƒ=©&À©1¬HtÓ×ÓHtæëÒƒ×ÓHtÓæÓæ ’ÀÒƒ! †‹Óæ1¬¿vf PŒµ €f«PŒµ €lxG€Ht €lxG€Ht €G€Ht¥´á‚ €G€HtvvG€á‚vvG€vvG€vvG€G€vvG€vvÀ§ €Ht €HtÀ§ €Ht €HtHt!À§&ÀÒƒHtHtHtHtHtË!Ð!&ÀÖ!é!†ÈHt^¨Ht"÷ "À§Òƒ"HtHtG€vvHtO"&ÀY"_" €f«Ù"Õ° €Ht#—#Htì1¬Y½…îHtì³#³#ì#Òƒ&À1¬¿v €Ht €Ht €Í»Í»NÃ;õ €Í»Í»¹»¹»¼¼NÃ;õ €Í»Í»¹»Àà ïÀÃÄÃ1ÄÀÃÛ1ÄŸŸ®ÀÃÀË'á‚ÀÃ1ÄÀÃî¯1ÄÀÃ1ÄÀÃ1Ä1ÄÀÃÀÃ1Ä1ÄÀÃÀÃ1ÄÀÃî¯1ÄÀÃî¯1ÄÀÃ1ÄÀÃ1ÄÀÃî¯1ÄÀÃî¯1ÄÀÃî¯1Ä%Å1ÄÀïÀà *ÀÃ1ÄÀÃ1Ä *]sÀÃÀÃÀÃÀà *vzÀÃvzÀÃÀÃÀÃÀÃ1ÄÀÃ1ÄÀÃ1ÄÀÃ1ÄÀÃ1ÄÀÃ1ÄÀÃÀÃ1ÄIÅ1ÄŒ+ Å1ÄŒ+ÑÄ1Ä«]s£+¦+lxÀÃî¯ȃî¯î¯·+î¯kñüñ®1Ä *]s]s©•ÀÃ1Ä]s¼ƒ]s1ÄÃ+¼PŒ1ÄÈ+¼ *]s *Í+]sÕ+Ü+¼kñüñ® *]s1ÄÈ+¼ÀÃ]s^¨%ÅÒƒX¨oÅJz—€]sn,r,n,¦n,¦¦n,ÛÂàÂøÂÛÂàÂøÂ›¬n,Æën,Æën,Æën,Æën,ñyn,n,ñy©ën,n,}¾çÞn,n,n,}¾ÛÂàÂÛÂàÂÛÂàÂÛÂàÂÛÂàÂn,n,0¿¬&À’À>-&ÀA- ¾&À0 ¾>-&ÀA- ¾L-00 ¾&À0 ¾&À0lx0lx)ê €lx €)êlx)êlx)ê ¾G€vv ¾G€vv ¾lx¬xÀ§ ¾)êÀ§¬xÀ§ ¾>-A- ¾vv)êÀ§ ¾lx&ÀÜ-á- ¾lx¬xó-ù-¬x ¾&À¬x•ß ¾&À¬x ¾&À¬x•ß ¾&À¬x¬xHt¬x¬xHt¬x¬x¬x ¬xÒƒÒƒ¬x ¾ ‚  ¾+/./)êÀ§¬x¬x¸xÒƒ¬x ¾À§Nà ¾_‹ ¾¿¬ ¾vv € ¾vv € ¾G€ €•ßw/^¨Y½•ßw/X¨Y½¦¦ ±è¬xÒƒ¸x!  € ¾À§&Àlx €d«lx ¾À§&À+/./+/./œ¾¦œ¾œ¾œ¾œ¾›¬¾ë¾ëÆëÆëÆëÆë©ëñyñyÆëÆë}¾}¾}¾Û¤lxȃlxȃ^¨¿¬&À¿v’À>-&À¿vA-À§)ê ¾&À¿v)ê ¾&À)ê ¾&À)ê ¾lx&À¿vÜ-á- ¾lx¬xó-ù- ¾lx&À¿vÀ§ ¾lx¬xÀ§)ê ¾&À)ê ¾&À)êlx)êlx)êlx)êlx)êlx)êlx)êlx)ê €lx €)ê ¾ϾÒ¾lx)ê € ¾ϾÒ¾lx)ê €)êÀ§)ê)ê ¾¿¬ ¾À§Nà ¾¸x ¾_‹¬x¸xÒƒ ¬xÒƒÒƒ¬x ¾À§ȃ¸x!  €f«¦¦ ±è¬xÒƒ^¨Û¤¬xá‚Û¤¬xá‚)ê0 0Û¤çÞçÞçÞçÞP0X0`0h0P0X0`0h0{èP0X0`0h0{0çÞ‹0’0™0 0çÞ‹0’0™0 0¦çÞçÞçÞçÞ‹0’0™0çÞ‹0’0™0¦P0X0`0P0X0`0{èP0X0`0{0›¬çÞ©ëçÞ›¬çÞ©ëçÞçÞï{0ïï¦çÞµÙÁ0]ÙÍ0ïê0ÒƒÀ§ê0Òƒ! ú0ê0 1©ëçÞ1!1çÞçÞÓò›¬çÞ©ëçÞ›¬1!1©ë1!1©ë1!1›¬çÞ›¬1!1©ëçÞlxçÞ÷ÒƒÆëçÞ1!1lxj1ÒƒÆë1!1lxçÞ÷ÒƒÆëçÞ1!1lxj1ÒƒÆë1!1lxçÞÒƒ¾ëçÞlxçÞÒƒ¾ëçÞ¾ëçÞÆëçÞÆëçÞlxçÞÒƒÆëçÞlxçÞÒƒÆëçÞ1!11!1Ð1çÞçÞçÞñyçÞçÞñy1!1ñyñy1!1lxçÞÚ 2À§lxçÞÚ 22lx2çÞÚ 2ñyçÞçÞñy@2çÞ@2çÞ ¾çÞs2çÞçÞ ¾çÞs2çÞçÞçÞµÙlxçÞ÷HtÆëçÞlxçÞ÷HtÆëçÞË2çÞçÞs2çÞçÞs2çÞçÞs2çÞçÞs2çÞçÞ3ïçÞvzçÞvz¦]ÙÍ0ï¦ÓòÓò 3©ëÓò©ëÓò›¬ÓòçÞÓòÓòÓòÓò&3,3ÓòvzlxÎùÀ§¾ëÓò›¬Óò?3{0Ht €À§ï{èlx&3,3›¬&3,3lxHt&3,3›¬&3,3lx&3,3|3À§©ë&3,3|3Htlx&3,3À§©ë&3,3©ë&3,3lx¬xÎùñyÓò@2Óòlx¬xÎùÀ§ñyÓòlxÀ§&3,3ñy&3,3lx¸xÚ 2À§Óòñy@2Óòlx¸xÚ 22Óòñylx&3,3À§lx&3,3À§44 4 ì á‚&3,3ñylx&3,3Æë&3,3ÆëÓòÆëÓòlx&3,3Æë&3,3ÆëÓòÆëÓò¾ëÓò¾ëÓòÆëÓòÆëÓòÓòÓò&3,3&3,3|3 ¾Óòs2ÓòÓòµÙÓòlxHt^¨ÆëÓòlxHt^¨ÆëÓòÓòs2ÓòÓòs2ÓòÓòs2ÓòÓòs2Óò©ëÓòË2Óò=4A4›¬"›¬"©ë"©ë"©ë"ï{0ï"lx"ÒƒÆë"lx"ÒƒÆë""lxY½_‹lxY½Òƒ_‹lxY½_‹lxlx €ZâZâñy{0ï{0›¬µÙvzµÙ›¬µÙÆëµÙÆëµÙ›¬éëñëlxz¾lxµ4ñëÆëµÙ©ëµÙ©ëµÙ©ëéëñë¾ëµÙéëñëéëñë¹4µÙ¾ëµÙ¾ëµÙÆëµÙÆëµÙïµÙµÙøªµÙñyµÙ@2µÙlxéëñë©ëµÙlx—þþÔƒ ¾éëñëµÙµÙµÙµÙ¦ïµÙµÙñyµÙPŒz¾ÒƒÆëµÙPŒz¾ÒƒÆëµÙ5¸xÒƒ! 5µÙµÙB5I5ÒƒµÙB5I5ÒƒÔƒB5I5ÔƒµÙµÙs2µÙµÙs2µÙs2µÙµÙs2µÙµÙs2µÙµÙs2µÙµÙs2µÙµÙs2µÙÆëµÙïµÙÆëµÙÆëéëñëÆëéëñëµÙlxÔƒlx €ÔƒlxÔƒïlxÔƒlxz¾Ôƒlxµ4ñëÔƒlxNÃlxNÃlxNÃlx—þþlxNà €f« €ȃµÙÔƒïµÙN놢‹¢Ž¢£¢lxÔƒñëÔƒéëñëÔƒµÙÔƒ €ÔƒHtµÙÒƒz¾‹¢Ž¢£¢µÙz¾³5! ‹¢Ž¢£¢lxd«µÙ¸5z¾‹¢Ž¢£¢5µÙ¸x’ÀÒƒNË¢Ž¢£¢µÙB5I5ÒƒB5I5ÔƒµÙÔƒ½5„¿vÍ5Í5½5Ó5ÔƒµÙ„¿vœ¾†¢‹¢Ž¢£¢½5µÙ„¿vœ¾†¢‹¢Ž¢£¢½5µÙÔƒµÙÔƒ½5„¿vÍ5½5µÙÔƒPŒµÙNÃ×5‹¢Ž¢£¢ïµÙN놢‹¢Ž¢£¢PŒµÙNÃ×5Þ5‹¢Ž¢£¢lxð5ö5þ5>É/Ž¢ €Ôƒ €Ôƒ]ÜµÙøª±èŒ6Ôƒ±èÔƒÇٵٵىÛÍ6Ø6æ6¦]s €f«ô6]s €f«lxð5ö5þ5Ôƒ/Ž¢ € €‰Û:7øªlx]ÜÔƒ]Ü¿7ÔƒøªÔƒ@ôvv±èŒ6@ôvv±èŒ6Ôƒ¿7Ôƒ’À^¨¼e-;õe->Éͻͻ¹»@ô@ô@ôNÃ`“`“`“`“]s]s]s@ô•ß@ô•ß•ß@ôÔƒ €Ôƒ@ôNÃ@ôÔƒ89á‚NÃvzNÃlxNÃlxNÃlx—þþ±èŒ6ÔƒlxNÃlxNñèÔƒlxNÃlx €lxvzŽ¢Ôƒ…9lx’ÀÔƒ’À±èŒ6Ôƒ±èÔƒþ5Œ6ñyÔƒð5ö5þ5lxNÃNÃ\’lxNÃlxNÃÒƒlx—þþlxNñèŒ6lxNñèlxñylxvzÔƒlx´:vzŽ¢ö5þ5±èŒ6ñy¸x¿vlxNÿ:«£¢ ¾ ¾ €f«ã:;;]s €f«ã:]s €f«]s €f«ªÉ;]s €f«ÅÅÅÅñyÅÅñyÆëÅÆëÅ›¬Å©ëŇâÅÅÅçÞçÞçÞçÞçÞ‹0’0çÞ‹0’0¦P0X0?;E;P0X0?;E;P0X0{è?;E;P0X0{0P0X0¦P0X0{0›¬çÞ›¬çÞ©ëçÞ©ëçÞçÞçÞµÙn;{;]Ùˆ;•;P0X0lxçÞÒƒ! lxçÞÒƒ! çÞÒƒ! çÞˆ‹Òƒ! ïïlxË2¸xs2çÞçÞçÞuës2çÞçÞlx €9<lx €©ë €9<lx €Òƒlx €9<lxf<j<©ëf<j<Æëf<Æëf<ÎùÀ§Îù9<ÎùlxÓò9<lxÓò9<lx¿¬Æë¿¬lxHt €›¬ €9< ì¿¬¿¬Nÿ¬9<ÒƒHtlxïlx9=?=PŒ¿¬9=PŒ¿¬?=PŒ¿¬Æë¿¬Ÿ=¦= € €Ÿ=¦=É= € €9<f<j<f<j<9<f<j<>f<j<>Y½Òƒ¿¬¿¬¸x >G€f<j< >G€vvÀ§ > €f« > €f«d«I>M>á‚ > €f«d«G€ >o>ðô >G€}>¦žâ¦¦ôºz{»¦ €f« €f« €f« €f« €f« €f«—þþ—þþ—þþz{b?z{b?z{ÂÆÂÆ¦¦¬?¦¬?»¬ ¹N¹S¹ ¹N¹S¹Z¹ ¹ ¹N¹ ¹N¹S¹ ¹N¹S¹Z¹@%@%@@+/./»¬T@Ht €f« €f« €f« €f« €f«¦¦n@¦n@ €f« €f« €f«¦&3,3¬?¬?Ø@¦¦¦¦¦¦¦¦A¦¦¦¦¦¦¦¦¦…A›¬]Ü›¬]sã:]s €ÚúAÚBúA¦¦¦¦f« €¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ €f« €Htlx@ô €lx@ô € €f« €f« €f« €f« €HtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖBHtB)êÔƒÚBÖB)ÉHt)êÔƒ)ÉÚÖB-ÉHtB)êÔƒ-ÉÚBÖBHt)êDÔƒÚÖB €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €Ht €)ÉHt €Ht €)Éf Ht)Éf ¦aEµÙÚúA]ÙÚúAµÙµÙ–EE¥E¬E]Ù–EE¥E¬EµÙµÙ–EE¥E¬EÔEÛE]Ù–EE¥E¬EÔEÛEµÙµÙ–EE¥E¬EÔEÛEF F]Ù–EE¥E¬EÔEÛEF F µÙµÙÚúA88 € € € €f« € € € € € € € € € € € € € € € € €f« €¿vHt)êHt)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)ê €f«HtB)ê¿GÂGHtB)êHtBËG¿GÂGHtB)ê¿GÂGHtB)êHtBËG¿GÂGHtB)ê¿GÂGHtB)ê)ÉHt)êÂG)ÉHt)êHtB)ê¿GÂG-ÉHtB)êHt)êDÂGHt)êD € €f« €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €f«ýƒ„„ „ €f«ýƒ„„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €„ „ €f«ýƒ„„ „ €f«ýƒ„„ „ €f« €f«¦ €f«¦¦¦¦¦¦¦¦¦¦¦¦ €f« €f« €9<ÎùÀ§Îù¿¬Ht¬xN¹S¹0 ¹lx01¬lxN¹S¹Z¹0 ¹lx01¬¿vlxlxN¹S¹Z¹a¹ ¹0lxlxlxlx01¬¿vìN¹S¹Z¹a¹h¹0 ¹lx01¬¿vì €lxlxlxlx €—þþ—þþœs—þþ—þþœs—þþ—þþ—þþ—þþ—þþ—þþ—þþ—þþ]s]sã:]s ¾]sã:«á‚«á‚«á‚¦†¢lxlxlxlxlxlxlx_‹¬xPŒ¿¬¬xPŒ¿¬¬xPŒ¿¬¬xPŒ¿¬¬x¿¬HtÀ§¬xPŒ¿¬¬x¿¬HtÀ§¬xPŒ¿¬¬x¬x¬x¬x¯MႯMá‚ €f« €f«¯M*NÔƒ¯M*Ná‚ €f«¯M*NÔƒ¯M*Ná‚ €f«¯M*NÔƒ¯M*Ná‚ €f«¯M*NÔƒ¯M*Ná‚ €f«]s €f«ã:]s €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €Ht €Ht €Ht« €Htýƒ„„ „ýƒ„„ „)ê €f«ýƒ„„ „ €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f«ýƒ„„ „)ê €f«ýƒ„„ „ €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f«ýƒ„„ „)ê €f«ýƒ„„ „ €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f«ýƒ„„ „)ê €f«ýƒ„„ „ €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f« €f«¹€]sœs9Pu>Pႜs9Pu €á‚œsu9Pœs €f«wPÒƒœs €f«ˆPŽP•PœP£P Òƒ ! œs €f«¶PˆPŽP•PœP £P Òƒ €f«ØP&Àœs €f«ØPêP&ÀïPÒƒ óœs €f«ØPêP&Àœs €f«œs €f« €f«œs €f« €f« €f« €f« €f« €f« €f« €f«R €f«R €f«R €f«R €f« €f« €f«R!S9Pu>Pá‚R!Su9PR!S €f«wPÒƒR!S €f«ˆPŽP•PœP £P Òƒ ! R!S €f«¶PˆPŽP•P œP £P Òƒ €f«ØP&ÀR!S €f«ØPêP&ÀïP Òƒ óR!S €f«ØPêP&ÀR!S €f«R!S €f« €f« €f«œs €f«!S € € € €!S €!S €¹€ã:¹€œs¹€ ¾ÂÆ ¾ÂÆ ¾ÂÆ ¾ÂÆ ¾­%½% ¾­%½% ¾­%½% ¾­%½% ¾­%½% ¾­%½% ¾­%½% ¾­%½%V €f« €f« €f«]s €f«]seV €f« € €f« € €f« €µÙµÙµÙµÙ]Ü €ÒXÖXÝXâXœµÙvzµÙvz]Ùvz¦µÙ‹0’0]Ù‹0’0¦-Y1Y6Yj1;YNY1Y6Yj1;Y-YµÙ‹0’0™0]Ù‹0’0™0¦-Y1Y6YvYj1;Y{YNY1Y6YvYj1;Y{Y-YµÙ‹0’0™0 0]Ù‹0’0™0 0¦-Y1Y6YvY²Yj1;Y{Y ·YNY1Y6YvY²Yj1;Y{Y ·Y -Y—þþ—þþ—þþ—þþ]s]sW[—u]sႜs—u]sþŽá‚—u]sœsá‚—u]sႜs—uþŽá‚œs—uá‚—u*¿œsá‚—u]sá‚—u]sႜs—uþŽá‚œs—uá‚—u*¿œsá‚—u]sá‚Htó]¿¬Òƒlx0lx¹€lx0lx¹€lx0lx0lxG€vvlxG€vv_‹lxG€vv_‹†‹lxG€vv_‹†‹NÊªŠªN¹ŠªN¹S¹ŠªN¹S¹Z¹µ¬ ¾µ¬ ¾ ¾lv ¾y½y½½y½½…½y½½…½‹½y½½…½‹½‘½y½½…½‹½‘½ÜËy½½…½‹½‘½ÜËxvy½½…½‹½‘½ÜËxv~v ì£ì ì£ì˜v ì£ì˜v›v ì£ì˜v›vžv ì£ì˜v›vžv¡v ì£ì˜v›vžv¡v¤v ì£ì˜v›vžv¡v¤v§vy½]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½‹½]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½‹½‘½]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½‹½‘½ÜË]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½‹½‘½ÜËxv]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvy½½…½‹½‘½ÜËxv¿7]sµ¬ ¾]sµ¬ ¾ ¾ ¾lvP L P P@^@P@b@@LLfLPLjLLLNnNPNrNNLƒžƒPƒ¢ƒƒL„¦„P„ª„„L®P²L˜¶˜P™º™P™¾™™L¥©æ¬æÆPÇPÐ4J4P4N44L:V:P:Z::LBbBPBfBBLLnLPLrLLLXzXPX~XXLf†fPfŠffLvPz’zPz–zzL{š{P{ž{{L}¢}P}¦}}L}9}ª…®…²‡A‡¶‡9‡ªˆ9ˆªˆI¾Â9Ƙ9˜ª˜Î˜£¤Ò¤P¸¹Ú¹PÃÞÃPôI÷IùIIUII ª 9 ξÆ9ÂêòòòþêêI òMêpIƒŽ„’„P†–ÉöÉPä‰)²*I+V-I.ZYAYIY¶iAiIi®©ª «9«ª¬9¬ª±9±ª²I²A²¶²À¶A¶I¶ºI»VÆÉIÉAɶÊÎAÎIζÏIÏA϶ÒIÒAÒ¶ÖAÖIÖ¶×A×I×¶ÚAÚIÚ¶ÛAÛIÛ¶ÜIÜAܶÝIÝAݶÞAÞIÞ¶â*äåæçÿIÿAÿ¶9F 9 R 9 ^9j9v9‚9Ž9š9¦!9!²$9$¾'9'Ê)9)ª+9+ª-9-Ö¹I¹A¹¶ÎÏÐNÑRÒVÓZÔ^ÕbÖf×jØnÙrÚvÛzÜ~݂ކà*á*9‰:™;™<™=™>™WPWLWWTXPXLXXTYPYLYYTZPZLZZT[P[L[[T\P\L\\T]P]L]]T^P^L^^T9 qmA qmI qmQ qmY qma qmi qmq qó qm‰ q† q¡™Ds³¡ q¡™¡s™­sîT ˜tŽT ¢t£\ qŠd —u`d uX\ )vŠl qŸd œumd ±uvd ¸u–d Ìu–d Üu–d íu–d úu–d v{d vÐd vÐd !v–) qmd 6v±d Cvd Tv±„ qçŒ qç” Áv¼” 1w” Cv™ q d îw¡d xœ +x´¤ qÁ¬ 5xì´ +x´¼ qÄ 5xìT qõd q§œ 5xìd :xª´ 5xìÌ 5xì” :xªÔ 5xìÜ :xªä q¡ì q¡d ÌvØd ïvŸÜ ¢x; ” ¢x; ™Æx[ ô 5xìÉ qm¬ +x´\ Xy´Dey­ Ä +x´Tey­ ü qb!Ü wÜ ®vŸÜ pwŸÜ ×vÜ ûw¡Ü ‡wñ4ey­ Ü Áv¼Ü xÜ _vÜ wŸ  qb!” w” ®vŸ” pwŸ” ×v” ûw¡” ‡wñ” x” _v” wŸ2{k"o{€"b{k"‚{„"M{s"={k"z{ƒ-}¬#9}–H}·#T}Á#a}0!v}0!}0!¤}0!¶}0!½}0!Ø}0!ö}0!~0!4~Ë#@~–N~–$æv$ï–, q•$$õŸé6€»$) q¡)I€Ç$) qÇ$ q$&4+x´)99&  q@&  qJ&” _xâ” Tv±< qc&Iàé&1‚ï& ‚™96€m96€ŸY q¡L qŠTt‚Y'T€‚­ \Ÿ‚¨'­‚1d¶‚´l qm,ey­ t qmT q¡¬ Ÿ‚¨'|¶‚´‘‚¡„Xy´Œ+x´”Xy´œXy´<ô‚´<þ‚©*<ƒ®*¤œya$¬ qméƒô*” iv)ø{™¤ƒ+´ô‚´´þ‚©*¼%ƒi5ƒ+iFƒ+ibƒ”+™jƒ”+qvƒš+ÄXy´Ì5xìiƒ½+iŽƒ+Ôþ‚©*Ôô‚´Ü qm¬ƒ,ä qm$ey­ ìXy´™›ƒN,™£ƒT,ì)vŠô%ƒô©ƒ´üþ‚©* qm´ƒ, Ÿ‚¨'¶‚´ô‚´$ô‚´þ‚©*,ô‚´,þ‚©*4 qm™²ƒD.´ƒK.$þ‚©* q¡<ô‚´<þ‚©*<ƒ®*±Ã!1$ q¡Œ5xì„)vŠ, q¡45xìœ)vŠ4 q¡Ä)vŠD‚‰$9݃¡< q¡D q¡Dey­ L q¡Ley­ T q¡Tey­ \ q¡d q¡Lô‚´Lþ‚©*T„b!l q¡ley­ t q¡tey­ | q¡|ey­ „ q¡„ey­ Œ q¡Œey­ ” q¡”ey­ œ q¡™£ƒÂ4„ qŠœ qŠÄ qŠT qc&\htO5\§„Y5ì qŠ” ƒv¼™ q‹5dxvdTv±l qmtey­ ™%ƒ™¬‹ÿ5| qb!„5x왌a6|ô‚´|þ‚©* qŸ(Œg6” xv(Œ»6‰cŒÆ&Œ qmÔ ƒ,Ô qb!¤ q¡¬ q¡¬ey­ ´ q¡´ey­ ‘ðŒÏ7¤ q$” qmœey­ © qm± q*<¤ qm¬ey­ ´ qm¼ey­ ì q¡Äô‚´ÌhtO5̧„Y5Ô qb!ܧ„Y5ÜhtO5, qc&ähtO5ä§„Y5ì§„Y5ìhtO5ô qb!ô q¡Œ Ÿ‚¨'ü¶‚´htO5§„Y5Ô Ÿ‚¨' ¶‚´ü q¡ q½Bè¢ÌB q¡ø{™  q¡ q¡$Ȥ´$+x©*, qb!4t‚Y'4€‚­ < qmey­ ¹¦ÓCDt‚Y'D€D ¦b!L ¦b!D€‚­ T qmœey­ ¹¦DL€‚­ \ qmdey­ t q½BÌSsÚÜSsÚSsÚ|SsÚôSsÚ„t‚Y'„€‚­ ŒhtO5Œ§„Y5„ ¦b!ôhtO5” qb!œhtO5œ§„Y5¤t‚Y'¤€‚­ ¬€¬„Šü qb!ô§„Y5¬ q¡¼ qc&Äš§Y'Ä„Y'Ìt‚Y'Ì€‚­ Ô£§ýHÜey­ Ä qWI䀂­ ì q¡ôXy´üt‚Y'ü€‚­ ¼ey­ |htO5ü„ Jô)vŠXy´ £§ýH ¨´)vŠXy´š§Y'쟂¦J$­‚1$¶‚¿J,Ȥ´,+x©*4 qb!4þ‚©*4ô‚´L qb!|§„Y5 §„Y5„ãJ)vŠä€ô qŠ htO5 qŠ qŠD qb!LhtO5¼htO5´ qb! q¡$ q¡TȤ´T+x©*\ qb!\ô‚´, q¡\þ‚©*4 q¡Ü¡sçÌ¡sçÌ­sùÜ­sùd qmley­ ¡sç­sùt qm|ey­ ô¡sçô­sù|¡sç|­sùä qŸœ%ƒÌ qŸ„Ÿ‚¨'Œ¶‚´”ô‚´”þ‚©*ä ¦b!É qm„ q¡Œ q¡” q¡á媰Vš§Y'œ q¡¤ q¡œȤ´œ+x©*¤ qb!¤ô‚´”Ÿ‚¨'¬¶‚´¬ q¡ôô‚´ôþ‚©*Ñ qm!SsË´ q¡¼ q¡Ä q¡Ô q¡ÌŸ‚¦JÄ­‚1Ķ‚¿JÌȤ´Ì+x©*Ô qb!Ôô‚´Ôþ‚©*Ü q¡ä q¡ì q¡Ü+x©*ô q¡¼ƒ®*¼ô‚´¼þ‚©*Dô‚´Dþ‚©*$ qb!L§„Y5ü q¡,ƒ®*” qŠì€D q¡L q¡é3¬ô*9݃m”)vŠÙp¬~\ôey­ \£§ýH\¨´Tô‚´Tþ‚©*‰جÖ]9묡‰ñ¬Û]ü qmey­  q¡Tƒ®* ï– ævN~–+x´H}·#$ey­ ,iv,xv4€Š €Š4ï–l q¡l ¦b!  qŸ4 qŸ-}¬#a}0!v}0!¶}0!½}0!Ø}0!ö}0!¤}0!,Âw1<ey­ 9}–T}Á#Dey­ }0!4ævìey­ ~0!5xìLþ‚©*Lô‚´T q½B\ q+b €°$d q+bl q”"4~Ë#tey­ | qŸ|¯¯c| ¦b!L qb!  q¡ q¡Ä qb! q¡üô‚´$ q¡Tš§Y'Œ(‘eŒò¯–Œ²„ÇEŒå¯ÝaŒlx‚dŒøª•dŒ«eŒ«eŒ¿v–Œ†¢âAŒ‹¢–ŒŽ¢–Œ q+b, q¡”(‘e”ò¯–”²„ÇE”å¯Ýa”lx‚d”øª•d”«e”«e”¿v–”†¢âA”‹¢–”Ž¢–” q+b,°re,Ht–, €‰$,†¢ze,‹¢–,Ž¢‰$4 q¡TŸ‚¨'l¶‚´d1wdCvdEwŸd×vdïvŸdwŸd®vŸdpwŸdwœey­ dÂw1dØw5¤ qb!¬ey­ ü ô‚´ü þ‚©* ô‚´ þ‚©*„ »w d ly¡< q¡Œ »w d }y!D q¡¤ ܰv¤ æ°Y´ qc&¼ey­ d xŸd Áv¼d wL q¡Äܰvijy ÌܰvÌæ°‡Ì³y Ôey­ Ä q†gT q¡¼ ܰv¼ æ°‡Ì q§g܃,\ q¡äô‚´äþ‚©*䃮*ìƒ,¹ÔhÁÔhd q¡l q¡t q¡Ü ˜w<ey­ | q¡„ q¡Œ q¡é q¡i q¡ñ q'j™³«%ô qYlü qŠü`“‰$ô`“²l¤Ssm¤¡s礭sºm¤ q¡ ©•œl©•§l q§n$ qYl, qŠ,`“‰$$`“²l`“7o¼Ss·o¼¡sç¼­sòp¼ q¡<©•oD©•oL©•*oÔ\’–T qErÔY•\ q§nd qYll qŠl`“‰$d`“²l\`“7oT`“ùrÔSs‚sÔ¡sçÔ­sítÔ qŸ|©•½r„©•ÌrŒ©•Ûr”©•êrì\’–œ qÈvìY•¤ qEr¬ q§n´ qYl¼ qŠìSsw¼`“‰$´`“²l¬`“7o¤`“ùrœ`“ xì¡sçì­syì qŸÌ©•µwÔ©•ÆwÜ©•×wä©•èwì©•ùw\’–ô qe{Y•ü qÈv qEr  q§n qYl qŠSsX|¡sç­s”| qŸ`“‰$`“²l `“7o`“ùrü`“ xô`“~$©•c~,©•~4©•×~<©•D©•KL©•…\’–T qÓY•\ qe{d qÈvl qErt q§n| qYl„ qŠSs ¡sç­sN qŸ„`“‰$|`“²lt`“7ol`“ùrd`“ x\`“~T`“,ƒŒ©•yƒ”©•¹ƒœ©•ùƒ¤©•9„¬©•y„´©•¹„¼©•ù„IÀ¸é&ö¸F…Ä q]…Ì q‰…Ìey­ Ô q …Ü q]…ä q‰…äey­ ìeyè…ôey­ üey­ eyV† eyè…ey­ ey­ üƒ,$eyQ‡,eyV†4ey­ <eyè…ƒ,Dey­ üƒÜ†Ley¹ˆTeyQ‡\ey­ deyV†4ƒ,ley腃܆tey­ üƒ+| q1Š„ q]…Œ q}Š” qÊœ q‹¤ qv‹¬œ¹‰$¬Ssዬ¡sç¬)vЬ­sŒ´ qŠ´¦‰$´Ss´Œ´¡sç´+x´´­s2¼ q¡¼,ºž¼ q¯¼'ºž¼"º‰$¼SsÚ¼Ss弡sç¼­smŽ™jƒ‚Ž q¡Ä q®ŽqŸ‚¹ŽÌ¿¬žÌɺ–Ìï!Ô'ºžÜ-»‰$Ü8»£%Ü qyˆ»¬tey­ ñ¬¬Ü+x´‘­s×4T¼$4_¼{4–¢·e4®¢1ä qG4Ï¢¨'4½¢´4¨¢¡4h¼1! q¡S½¡¶‚«%ì]½E\ìY½7ô qºü qb!t q¡üy½‰$ü½²lôy½‰$ô½²lô…½‘ô‹½‘ô‘½–©•#’ ©•E’õ½„’¾‘ ¾’ q­’¾˜’,ô‚´,þ‚©*$ qb!) q¡1 q¡<½¾”D q­’Lþ‚©*Lô‚´T qb!ŒŸ‚¨'\ ¶‚´$Ȥ´$+x©*, qb!9¿à•¿\'ºž\"º‰$! qmd qç–l q—| qç–A q]—|„Š„„b!|V ¡|š§Y'„t‚Y'|/Ây—|ì¾Y'„ì¾Y'„¯¯c|€|6Â1„€‚­ „EÂô–„N—„ ¦b!„¿v˜’Œ q¡” qŠœ qX˜” q¡œy½‰$œ½’˜œ…½’˜œ‹½–”`“‰$¤©•k™¬©•‡™´¶Â„’´ÃÂ’˜´ ¾v´ q¾™´¾­™¼ qò™Ä qb!Ìþ‚©*Ìô‚´Ô qÉšÜ q¾™ä q¡ì q¡´¿´„ãJ´ q½Bœ„ŠœV ¡œš§Y'œ/Ây—œì¾Y'œ€œ6Â1ô¿v­™ü¦‰$ü5xìIñÃМIñÃÛœIaª™ ¡s¦‰$áFÄ-á~Ä5 q¨ôey­ †ÅÅœéŽÅÎäey­ á,Æ™™9ÆJžþ‚©*ô‚´á@Æ1áRÆÅœákÆbžìey­ 4 qb!<óDZŸqȾŸD qÙŸL¹»  ÔŽ»ŠTóDZŸá<ÈI FÈR ñTÈÅœT(È1 T1È6 l qŠ tóÇÍ |¦‰$|5xì„ey÷Œ qW¡”þ‚©*”ô‚´y q¡ qm4¦‰$¬¦ƒ¬ qm̦‰$ 3Ï×ICÏáUÏΧ‰CÏá`ÏÔ§ ,Æ™œ qm¤ey­ ¬'ºž¬"º‰$Ôey­ ´¦‰$¼ô‚´¼þ‚©*ÄhtO5ħ„Y5Ì qmÔey­ Ü qmä qm„ey­ ì qmôey­ ü qmüey­  qm ey­  qmey­ $¦‰$,ô‚´,þ‚©*¬htO5<¦‰$L q½BLÞÜ®º ­sOT qŠT)vŠ\ q …©‰Þ)¼¡ qmdm»1d+x´lhtO5l'ºž|V ¡\eyŠ„þ‚©*„ô‚´ŒçÞvŒ"º–ŒíÞ–Œ'º–ŒúÞŸ™ß;½± q¡”5xìœ qŠœ)vй q …Á q …É q …ÑGá¾ÙWá¾á q*¾á~á5áá¦%¤3â˾¤9â×¾¬ q3¿¬`“¿´lx¬À ey­ ¼ qïÀTœ¹‰$Ä qbÁÌOâF¿Ô¦‰$Ü qb!Üþ‚©*Üô‚´ä q(Âì qÈÂôOâF¿ü qõ q$à  qõ qvà qÝÃ$ q5Ä, q—Ä4 q¡< q¡D qc&L q|ÅT q¡\ qèÅd¼„Ædñy£%d“å{dªå{d³åȺl q¡d4¼ˆÆl·å²Æ¹ey lÐåÞÆt¦‰$Œ`“‰$|`“‚%„`“ÑÆl¨¢¡l4¼„"l{æJÇd¨¢¡©Ôæ«%©ãæJÇ©÷æ1©ç1”;çYÇŒ q¡”FçaÇ”OçaÇ”XçjÇ”bç‚Çœ qŸÇ¤OâF¿”wç‡Ç¬ qŸ”ˆç¸Ç¬€ŒòÞ´´ey­ ¬„Š”©ççǬ€‚¬É矴5xì”ÜçÈ"¼ qÈÄ qÈÌ q.ÉÔ q.Éñ q5”?è‰ÉÜXè¬Àì{èÙÉìƒè»” q¡ìšègÈì¢è–ì±è{ô q¡ì¹èïÉ”’çôÈb¡ü»ŠüջРqRÊÔ5xì”Gአ q¡ qÊ qÚ™$ey­ ÐåÞÆìé¸Ê¦‰$ù qm, qÊ4 q Ë< qÊì<é-ËD qgËL qÊ QéË”7èrÉ”,èRÉ”'èÉ”èÙÈì qÊìá¡Ü q½BT†¾Í\ qWIdŸ‚¨'l¶‚´,þ‚©*,ô‚´T qŠ\ ¦b!„ qͤk Qδ+x´Ä q¡¼+x´Äuë@ÐÌ q¡Ü q¡¼ qŠäš§Y'ÔŸ‚¨'ì¶‚´ä€Ì q¡ôȤ´ô+x©*ü qb!üþ‚©*üô‚´†‹PÑ_‹_Ñô qb! š§Y'Ÿ‚¨'¶‚´ €$ q¡, q¡4€‚­ 4EÂô–Ä qUÐ4N—4t‚Y'< q‰ÒDŽ»ŠL qæÒT q3Ó\ q3Ód qb!l qÇÓt qdÔ| qžÔ„ qàÔŒ qÕ” qb!Üì{ÜìŠÜ.`Ü!ì¡Ô£»¡Ô•»`œlxqÕœ¹»|ÕÜ q¡ ey­ ¤´wl¤ç³_l¬`“²l´•»`¼`“‰$´Ž»Š´£»¡ÄlxÖÄìÖÌ qÕ\¯»ëÔlx;ÖÔ¹»|Õey­ Ü´wlÜç³_lä`“²lì`“‰$ôlx×ôìÖü qUÖì q¡lx,×ôey­ ô q¡ lx,×lxF×¹»|ÕñyXל¹‰$d ƒ,)vŠ$lxÂ×$d«‰$$ìÖ¬ qŠ, qk×4¹»è×4ìø×<œ¹‰$D qb!LŽ»Š<)vŠL•»`L£»¡TìeØ< qŠ4 qØä¯»ë\¹»  \ì”[\Šì”[\•ì”[”œ¹‰$d¹»  dì”[dŠì”[d•ì”[l¦ìeØl©ìeØ\ q Ød q Ø q¡tlxîØ|ey­ „`“‰$Œ5xì”lxZÙœey­ ¤`“²l¬ q¡´ qåÙ¬Èb¡¼ q¡Ä qLÚ¼Èb¡Ì q ÚÔ qb!Ü q9Ûä qŠì q¢Ûô q¡ü qŠ qhÜôÈb¡  qW¡ qW¡ q¡$ q?ÝÈb¡, qb!  q¡4lxqÕ4ÒìÞÝ<ÈŠDlx,×DÒìÞtÈŠLlx,×LÕìÞLÙìÞTlx;ÖTÒìÞÝŒ¦‰$\lxF×\ñyX×\ÒìÞÝdÒìOÞdìø×lÈŠtÒìÞ|ÒìÞ„lxîØ„ÕìÞÝ„Ùì†ÞŒ`“²l”ÈŠ q¡6íFßÑ qmœTíTß q¡¤ô‚´¤þ‚©*míß$ q¡~íªß“í¡, q¡¬5xì4 q¡ ™íÛß ÃíÛß´ƒ,< q¡Á q …)î«%¼+x´ÄÕ»Š)(î1Ñ q¡”ey­ )3¬fŒey­ É6î™D q¡L q¡Ìô‚´Ìþ‚©*̃®*ĻРAîçà æ¡T q¡\ q¡Ô qڙܯ»ëd q¡äô‚´äþ‚©*䃮*äؽóuäâ½[zÁìî‘âl q¡Áöî¸ât q¡ìœ¹‰$1 qm| q¡Áï‘â„ q¡Á'ï ìlx¬Àô q«Æü q>ã q>ã  q>ãô³åȺôæ¡ôªå{ôîå´ô¨¢¡0ïÇãÜ5ïØãdÆåÈÂŒ q¡0ïÇãÜ;ïìã” q¡$0ïÇãÜTíTß,5xì4 qb!4ô‚´4þ‚©*< q¡Ñ¶‚ÃäD q¡L q¡T qõÂ\ qõÂd qõÂlƒK.<ÐåÞÆt¦‰$,¦‰$,+x´ù q¡| qÚ™œ q¡¤ q¡„~äˆÆ¬ q¡Œ~äˆÆ´ q¡”~äˆÆ¼ q¡œ•߬À¤9â×¾¬ qçæ¤ q÷¾´ q3¿ ªå{ Ïï8ç 4¼„"9 q5騢¡ ìï1¼htO5Ak 1 ðyçÄ q¼ç¼§„Y5Ì3â˾¼ey­ Ä q¡Ì9â×¾Ô¼èÔ €‰$¤ey­ ܼèÜ«ÒæÜÄáu¾Ô q.è¬ey­ ´ey­ Ì q¡älx¿Ìey­ ì¼èìô¢ÒæìÄáu¾ô q”è ­s×ü q”èô—uºèôY½‰$ü—uºèüY½‰$4¼„" htO5ðyçÏï8çªå{Oç£% 'ºž "º‰$ì2ðfæìDðfæ qŠ qʬOâF¿{æJÇéð9騢¡Ô q¡Y½‰$ €aé4`“‰$$`“‚%,`“ÑÆ< q#êD q#êL q3¿T qŠ\ q¶êdOâF¿l qët q8ë| qsë„ q´ëŒOâF¿” qŠtey­ ¬Ÿ‚¨'œ q5ì¤ qbÁ„ q—ì| q`Œ qŠÜ q¡¬©•˜í´©•´í¼©•ÐíÄô‚´Äþ‚©*Ìjã»Ì•ß˾̸á]¾Ì¾ái¾ÌPŒRîÌÄáu¾¤ q÷¾Ôjã»Ô•ß˾Ô¸á]¾Ô¾ái¾ÔPŒRîÔÄáu¾Ülx¿ä €‰$ä•ß˾ì €‰$ä qƒîôlx®îô¼¾îü9â×¾ ey­  `“¿ ey­  kñRî ¼è$ kñêî$ lxiï, qÑîü q÷¾4 qWï< ¼è< Y½RîD lxiïD €²lL ey­ < qºïT ¼èT vv‰$\ €ñE\\ ¼è\ Äáu¾T q.èd ¼èd ôº‚%l €ñE\l ¼èl Äáu¾d qdðt ¼èt 'òÑÆ| ¼è| 'òÑÆ„ €ñE\„ ¼è„ Äáu¾t qð| qðŒ €ñE\Œ PŒRî\ q%ðl q%ð„ q%ð” ™ñáð” ¼èœ ™ñáðœ PŒRî” qù𤠀ñ@ठPŒRîä q¡¬ 9â×¾¬ 3â˾´ ey­ ¼ ’À‰$Ä z¾zeÌ æñØñÌ z¾ze|ey­ ì q¡Ô æñØñÄ qÎñÌ qññô q¡Ü üñRîä htO5„ qb!|„Š|€‚Â|€|É矔¦‰$ô qIóü œ¹‰$!¦‰$ !`“²l!`“‰$!3â˾$!ey­ !5xìü )vЬ¦‰$,! qõÂ4! q‹õd(ey­ l( qb!t(¯¯ct( ¦b!¬¡s笭sùt( qŸŒ' q¸@”' q¸@t q¡| q¡„ q¡Œ q¡” q¡D%ô‚´D%þ‚©*„( qAŒ( qkA”( q¡œ q¡œ(lxnBœ(°\6¼ey­ ¤ q¡¤(lxnBœ( q€B¬( qBþ¬ q¡´(lx ´(Î ²l´(Õ æB¼( qBþ96€Ž<´ q¡¼ q¡„¦‰$¹¨ ²5¹¦©CÄ(ey­ á> 1áJ 1áV 1Ì( qb!Ì(ô‚´Ì(þ‚©*A qmÔ( qb!Ü( qc&Ô(ô‚´Ô(þ‚©*ä(5xìì( qb!ì(ô‚´ì(þ‚©*Ü(þ‚©*Ü(ô‚´Ü(ƒ®*ô(5xìAp¬ùEä(¦‰$ü( qc&)ƒÜ†ô(¦‰$ü(ô‚´ü(þ‚©*ü(ƒ®*á‚H)‚ï&) q H ) qc&q‚ï&q2HÙ‚ï&Ù2$H )ô‚´ )ƒ®* )þ‚©*) qb!)'ºž)"º‰$$) qb!$)ô‚´$)þ‚©*,)ey­ 4)ey­ <)ey­ á‰J)þ‚©*)ô‚´L)ey­ T)ƒ®*T)þ‚©*T)ô‚´T)ؽóu\) q5Ld)¦ƒl) qM)htO5Ä q¡„)ƒ,)§„Y5Ì q¡Œ)³,O”)ey­ œ)ƒ®*œ)ؽóuÔ q¡¤)³P¤)p‚ƒ¤)÷–¬)ey­ ´)´wl´)ç³_l¼) qb!Ä) qb!Ì)5xìÔ) qBþÌ)¦‰$Ä)þ‚©*Ä)ô‚´Ô)ƒ®*Ô)ؽóuÔ)þ‚©*Ô)ô‚´¼)þ‚©*¼)ô‚´Ü) qb!™ q¨RÜ)ô‚´Ü)þ‚©*ä)ƒÜ†ì)'ºžì)"º‰$ô) qb!ü)5xì*'ºžáþDáJ * qÐâ*t‚Y'*„b!$*5xì™–V™ –V,*`“‰$4*`“²l$*¦‰$*ì¾Y'<* qXWD*ƒÜ†L* qXWD*ƒ,T* q¤W\* q|Xd* qÊXl* q.Yt*ey­ ”ey­ ™È™%ƒ™ÑðX™ßðXáéìY™÷õY„*þ‚©*„*ô‚´* q¸@Ù‚'[y‚'[Ñ‚'[‚'[‰‚'[A‚'[™‚'[‘‚'[qHq2H¹¨ .[Ù$HÙ2$HÜ q¡Œ*ô‚´Œ*þ‚©*ä q¡”*ô‚´”*þ‚©*œ*íÞ,5ô q¡ü q¡ q¡¤*ýƒ_\¬*ey­  q¡´*„‘\¼*ey­ ¤* qr\ q¡Ä*¤+WÌ*ey­ ´* q¬\Ô*ýƒ_\Ü*„‘\Ô* qr\ä*¤+WÜ* q¬\ q¡ì*@ôQ]ô*ey­ $ q¡, q¡™ŽÅ:"ü* qb!+5x왎ÅÅ]4 q¡< q¡ +5xìD q¡L q¡T q¡+ýƒ_\+„‘\+ qr\$+¤+W+ q¬\,+¤+W,+ý–,+©ƒáˆ…^„* qb!$+ qXW\ q¡<+ qb!D+5xìd q¡”* qb!L+ýƒ_\T+„‘\L+ qr\\+¤+WT+ q¬\l q¡d+íÞ,5d+¤+Wd+ý–l+ qXWt+ qb!t q¡|+1Ä| q¡á½þD„ q¡Œ+ qb!4þ‚©*4ô‚´*htO5Œ q¡”ƒ,Ä'ºžÄ"º‰$”+ey­ œ+ey­ ¤+ey­ ¬+ q¡” q¡œ q¡´+¯¯caey¾Ÿ´+ ¦b!l ¯¯ceyÎá‰já<È’j´+ q¡¼+ƒ,” qb!á q¡Ä+ qb!Ì+§„Y5Ô+'ºžÔ+"º‰$Ü+þ‚©*Ì+htO5ä'ºž™"½+¤ q¡ì+ q”þì+â½[zì+ô‚´ì+ƒ®*ì+þ‚©*ì+ؽóuD € pqbƒpqì¾pô+NÃÿô+;õ‰$dÕ»Šl €9pd q qõMpd»Šô+ q*pü+¹»  ,NÃxp,;õ¡ ,Õ»ŠŒ €ÞtfÈ ¡tsÈ¡ü+ q ü+ey÷„ q … ,»Š, qp,5xì$,5xì$,¦‰$,,5xì<, qb!D,5xìá'óqáÜÃüqŽÅ Náµ'1,,¦‰$,¦‰$áéÊœ\, qb!d, qb!l, qb!t,5xì qb!éŽÅlu¼ q¡Ä q¡©+1Ì q¡Ô q¡<,ô‚´<,þ‚©*|,€‚­ Ü q¡ä q¡ì q¡Äey­ ô q¡eyluü q¡aey v q¡ q¡oÅXsÜÃÂ’˜Ü¶Â„’Ü„ãJܾ­™Üì¾ãJÜè¢ÌBÜòÂE›ÜåÂÌBÜåÂE›Ü¯¾¤šÜ⾆šÜÞ¾ûšÜ¢xç›ÜÌÂÌBÄ,‹½–Ì,oÂD˜Ì,yÂm˜Ä,…½’˜Ä,½’˜Ä,y½‰$Ô,Ûz¼,`“‰$Ü,ô‚´Ü,ƒ®*Ü,þ‚©*Ü, qc&ä, qb!ä,þ‚©*ä,ô‚´ô,…½’˜ô,½’˜ô,y½‰$ì,`“‰$ü,ey­ - q¾™ - q¾™- q¾™- qb!-ô‚´-þ‚©*$- qc&,-´wl,-ç³_l<-ey­ D-`“‰$$-ƒ®*$-þ‚©*$-ô‚´L- qó€T- q¡\- qó€d- q¡l-'ºžl-"º‰$l-§„Y5l-htO5t- q‚t-à.{t-é.¤‚t-ð.Ü‚t-ú.5|- qŠ„- qBƒŒ- qp„”-¶‚´œ- q …¤- ¾„’¤-vv’˜¬- ¾„’¬-vv’˜´- ¾„’´-G€’˜ q¡¼-•ßO…¼-w/‰$ ey­ Ä-•ßO…Ä-w/‰$Ì-é.¤‚Ì-à.{Ô-¬x’˜Ô-Òƒ«…Ü-œ¹‰$Ü-)vŠä-¸xvä-! ,5 q¡ì- ¾„’$ q¡ô-lxñ… ƒ,, q¡ü-lxqÕü- ¾†4 q¡´è¢ÌB´åÂÌB.¾‘.„ J.õ½„’.ì¾v• .¦‰$é q¡.¯¾ë“.â¾M•. q­’.½¾”$.½¾”,. q¡<. q‰D. q‰. ¿®•.Ìy{“. q­’.¾˜’< q¡D q¡L.lx,ŠT.lx,Šd.‘½–l.—½‘l.n½Õd.½²ld.‹½‘d.…½‘d.y½‰$\.y½‰$\.½²lt.5xì|. qb!|.ô‚´|.þ‚©*„. qc&„.þ‚©*„.ƒ®*„.ô‚´Œ.½²lŒ.y½‰$œ.—½‘”.½²l”.‹½‘”.…½‘”.y½‰$”.‘½–œ.n½Õ¤.—½‘¤.n½Õ$.eyV†¬.½²l¬.y½‰$¼.eyV†´.½²l´.‹½‘´.…½‘´.y½‰$ì)§„Y5ì)htO5Ä. q …Ô. q¶”Ü.'ºžÜ."º‰$Ü.§„Y5Ü.htO5ä. qq•ä.à.{ä.é.š•$ qb!ä.ð.ö•ä.ú.5ì. qŠô. ql–L q¡ü. ¾„’T q¡/¸x’/! ,5 /é.š• /à.{/¬x‘/Òƒ—/œ¹‰$/)vŠd q¡l q¡d¬x˜’$/ q¡t q¡,/¬x—4/ q¡| q¡|)ꘒT Ûz„ q¡D/ qJ˜D/k €˜Ô ƒ+D/‡0ü˜L/‡0C™L/k ]™L/ qfkÔ ƒÜ†\/k šd/ey­ „/ey­ Œ/½¾œŒ/eyè…”/½¾œ”/eyè…œ/½¾”œ/eyV†¤/½¾œ¤/eyè…¬/½¾”¬/eyV†´/½¾œ´/eyè…¼/eyè…¼/½¾œé qmÄ/ey­ t.¦‰$Ì/ q¡Ì/„ŠÌ/¿¼Ô/ q¡Ô/„ŠÔ/¿¼Ü/ qb!ì/ qc&ô/ qb!ì/ƒ®*ì/þ‚©*ì/ô‚´0 qc& 0½¾œ 0eyè…0½¾œ0eyè….eyV†0½¾œ0eyè…$0½¾œ$0eyè…,0ƒ,™÷Ú¤Ô%ƒŒ"º‰$40'ºž40"º‰$<0eyV†D0§„Y5<0½¾”D0htO540§„Y540htO5L0ƒ,|ey­ T0ey­ Œ q¡\0ey­ d0 qK³l0 q³t04Ú³|0 qö³„0 q.´d/ƒ,”Ÿ‚¨'Œ0¶‚´”0 q'µœ0 qoµ¤0 q3Ó¬0 q‰…´0 q¶¼0 qX¶Ä0 qœ¶Ì0 q¡Ü0 q¡ä0 q\·ì0 q$¸ô0€,)ƒ,ü0 qO¹1 qy¹ 1 qØ1 qŠ1 qͺ$1 qýº,1 qA»41 q>¼Ô/€<1œ¹‰$D15xìL15xì<1)vŠL1+x´D1¦‰$Ô/€‚ÂT1 qb!\15xìÔ/V ¡L1¦‰$<1 qŠd1 qÒ½l1 qÿ½t1 q|1 q½B„1 q¾Œ1 qõ¾œ1 qS¿¤1 q¾¬1 q½B´1 qÖ¿¼1 qÇÀÄ1 q$¸Ì1 qÁ” q¡Ô1lx}Ál ey­ Ü1lx¡ÁÜ1 €²lä1lxÂÁì1ï–ì1lxÂÁô1lxÜÁô1z¾ïÁü1Ÿ‚¨'2ey­ 2lx 2µ4ïÁ 2ñë8Â2Ÿ‚¨'2ƒ,œ q¡$2lx,פ q¡,2lxqÕ42lx•¬ q¡<2lx°ÂD2lx;Ö´ q¡¼ q¡L2ô‚´L2þ‚©*T2 qc&\2µÙ£Yd2ï–d2µÙ7d2NÃzed2«–d2†¢âAd2‹¢–d2Ž¢‰$d2 q$¸l2lx©t2ey­ Ä q¡|2ñë7„2éë7„2ñë7|2 q½BŒ2‚âŸÃ”2µÙvœ2 qؤ2 €‰$¬2 qŠ´2Ht–´2µÙ7´2Òƒ,5´2z¾ze´2‹¢–´2Ž¢‰$´2 qͺ¼2µÙ7¼2z¾ze¼2³5싼2! ‰$¼2‹¢–¼2Ž¢ÄÌ q¡¼2 qýºÄ2lxÂ×Ä2d«‰$Ä2µÙïÁÄ2¸5ì‹Ä2z¾AÄÄ2‹¢–Ä2Ž¢‰$Ì2¶‚´Ä2 qA»Ô25–Ô2µÙ7Ô2¸xvÔ2’À,5Ô2Òƒ,5Ô2NÃzeÔ2‹¢–Ô2Ž¢vÔ q¡Ô2 q>¼Ü q¡Ü2µÙ7Ü2B5YÇÜ2I5™Ää2B5YÇä2I5™Äì2µÙ7ô2½5qÕô2„þÄü2 qŠ3¯¯c 3 qb! 3þ‚©* 3ô‚´3 ¦b!ä q¡3+x©*¬Â5¡ì q¡3Ȥ´ü2¦‰$3 qb!ô q¡$3½5qÕ$3Ó57ü2†¾Í3 qWIô2 qÅ,3 q¡<3 q¡D3µÙ7D3„“ÆD3¿v‰$D3œ¾¥ÐD3†¢zeD3‹¢–D3Ž¢‰$¼†¾ÍL3 qWIL3t‚Y'L3 ¦b!D3 qõ¾T3½5qÕT3µÙ7T3„ÐÆT3¿v‰$T3œ¾;ÅT3†¢zeT3‹¢–T3Ž¢‰$\3 qWI\3t‚Y'\3 ¦b!T3 qS¿d3½5qÕd3µÙ7l3µÙ7t3½5qÕt3„!Ç|3¯¯c|3 ¦b!ü q¡„3Ȥ´¼¦‰$„3+x©*Œ3 qb! q¡”3½5Ö”3µÙïÁœ3 qWI¤3 q:Ǭ3 q¡¼3PŒ,×¼3µÙ7¼3NÃze¼3×5싼3‹¢–¼3Ž¢‰$¼3 qÇÀÄ3ï–Ä3µÙ7Ä3NÃzeÄ3«–Ä3†¢âAÄ3‹¢–Ä3Ž¢‰$Ä3 q$¸Ì3PŒ,×Ì3µÙ7Ì3NÃzeÌ3×5ì‹Ì3Þ5”[Ì3‹¢–Ì3Ž¢‰$Ì3 qÁÔ3 q>ÈÜ3 qrÈä3 qÎÈì3 q¡ô36AÄô3&6zeô346¡ô3I6‰$ü3 qŠ4 qnÉ 4 q…É4 qÁÉ4œ¹‰$$4¦‰$4 qŠ,4 qJÊ44 q½B<4 q…ÉD4 qåÊL4 q¡T4 qWIT4ô6ZË ¡s{Ë ­sË\4lx¦Ë” ey­ d4 q¡d47ÈËl4 q¡t4ð5©t4ö5×t4þ5áË|4/,×|4Ž¢qÕ„4‰ÛE\„4:7}ÁŒ46AÄŒ4&6zeŒ4±è{Œ4@7{Œ4I7ä»”4Ÿ‚¨'œ4¶‚´Œ4I6‰$Œ4W7´Œ446¡¤4]܉$¬4]ܲl¬4¿7²Ì´4ey­ ¼4øªïÁŒ4 qÁÉÄ4@ô¦ñÄ4vv7Ä4±è”[Ä4Œ6ÝÌÌ4)vŠÔ45xì$ q¡Ü4@ô¦ñÜ4vv7Ü4±è”[Ü4Œ6ÝÌÄ4 qJÊä4¿77, q¡ì4’À  ô4e-¬Àô4;õ‰$ü4¬Àü4e-¬Àü4>ÉnÍ5 q  5ey­ ô4 q^Í5Ä7¹Í5Ú7 Î5ey­ 45`“}Ã<5ä7OÎD5NÃzeL5 q£ÎL58}ÃD5 qÎñT5 q¡4 @8Ï\5 q£Îd5 qŠ4 q¡d5`“‰$\5`“}Ãl5©•1Ðt5©•MÐ|5©•iÐŒ2@ô}ÃŒ2•߆Ä5 qùÐŒ2 q¼ÐŒ5 q3Ñ< Ä7¹Í< Ú7 ΄5•߆Ä5@ôèÐÄ ey­ D q¡Œ5 €èÐ4 ä7OΔ58}Ô5Œ6„"”5@7{œ5NÃze¤5 qÀѬ5 qÎñ¤5@ôÜÑ4 X8&Ï4 m82Ϭ589ze´5 q§^¼5 qÒÄ5 qFÒÌ5 qÒÜ5œ¹‰$ä5 qÓì5 q›Óô5 qÞÓü5œ¹‰$6 q>Ôü5)vŠ 6 q¡ü5 qŠ6 qšÔÜ5)vŠÜ5 qŠ6 qgÕ$6 qöÕ,6NßYl4±è{L ñy;ÖL Œ6‰$L W7´L ©:FÖL ‚¡46lxÖ46NÃAÄL q¡d ey­ <6lxWÖ<6NÃAÄ<6Òƒ,5D6ƒ,L6lx{ÖL6—þAÄL6þÖT6¶‚´´4ƒ,\6lx×\6NÃAÄ\6±è”[\6Œ6ø×d6ey­ l6lx,×l6NÃzel6±è”[t6lx¡Át6ñyX×|6ey­ „6¦‰$Œ6lxÂÁŒ6vz,54 ey­ ”6lxÂÁ”6´:–”6vz,5”6Ž¢Jל6)vФ6ö5פ6þ5áˤ6±è”[¤6Œ6ø×¤6ñy‚׬6œ¹‰$œ2¸xvœ2Œ6–œ2÷–œ2‡0´¬2¿v‰$¬2±è{´6lxE\´6NÃzeä¿:$ä«ze¼6½¾œÄ6 qØÌ6 ¾:ØÔ6eyè…Ü6 q¡ä6 qŸì6 q¡ô6½¾œü6 q¥Ø7ã:–‘¡sñØ 7ªÉ·# 7;öØ$ ey­ 7eyè…7‡0IÚ7k `Ú7 qþ]™ ;‡Ú™ ;šÚ,7 q¯Û47 qëÛ<7 q=ÜD7 qeÜ\ q¡L7lxÖL7çÞËÜT7‡0æÜ\7lxôÜ\7çÞËÜd7çÞÝl7‡0íÜt7çÞÝt7ˆ–t7‹–Ô ey­ ™÷CÝ|7Ûz™÷tÝ™÷¥Ý„7eyè…Œ7eyè…”7ey­ ŒVºýHœ7'ºžœ7"º‰$¤7 qb!¬7'ºž¬7"º‰$´7 qc&¬7§„Y5¬7htO5¼7œ¹‰$¼7)vм7 qŠ´ qy´8»£%)†ÅÅœ qæä)vŠäœ¹‰$Ä7 q¿çÌ7 qèéÈAHëÔ7 q¡Ü7 q¡ä7 q¡ì7 q¡ô7lx­ìô7@ô¸ìü7ey­ 8ey­ d q¡ 8lxãì 8@ô²Ì8ey­ l q¡9:B&í8 qŠ$8 qŠ48 qŠD8 qŠL8 qŠ\8 qŠl8 qŠ|8 qŠŒ8 qŠœ8 qЬ8 qм8 qŠÌ8 qŠÔ8 q#ñÜ8 qiñä8 qŠì8 qµñô8 qòü8 qŠ)Êàò9 qq° 9 qq°94¼þõ,0ey­ 94¼þõ$94¼þõ,94¼þõ494¼+ö<94¼þõD94¼þõL94¼þõT94¼þõ\94¼þõd94¼·#l94¼þõt94¼þõ|94¼qÕ„94¼þõŒ94¼þõ”94¼þõœ94¼þõ¤94¼þõ¬94¼þõ´94¼Â×t uGÁöt ›GÆöt zG1t ‡G1t “G¡t ¶‚´t q¡¼9¿v‰$| q¡Ä9Ht‰$Ä9)ê‰$Ä9d«‰$Ä9¸G­ Ä9³GÚöÄ9¦GËÄ9­GËÌ9Ht‰$Ì9)ê‰$Ì9d«‰$Ì9³GÚöÌ9­GËÌ9¦GË„ qëö” q¡œ qëö¬ q¡´ qëöÄ q¡Ì qëöÜ q¡ä qëöô q¡ü qëö q¡ qëö$ q¡, qëö< q¡D qëöT q¡\ qëöl qëöt qëö„ qëöŒ qëöÔ9)ɉ$Ô9XùÔ9Ht‰$Ô9)ê‰$Ô9ÂG{œ qëöÄ ƒ,Ü9)ɉ$Ü9XùÜ9Ht‰$Ü9)ê‰$ä9Â×ä9Ht‰$ä9B²lä9)ê‰$ä9¿G{ä9ÂG{ì9-ɲlì9Â×ì9Ht‰$ì9B²lì9)ê‰$¤ qëöô96 ´ q¡ü96 : qÒù : qÒù: qÒù: qÒù$: qÒù,: qÒù4: qÒù<: qÒùD:4¼þõ¼ q¡9¿@úÄ q¡:„þõÄ ey­ Ì q¡9¿Eú :„þõÔ q¡:„þõÜ q¡9¿Jú:„þõä q¡y qm$:„þõì q¡9¿&í,:„þõô q¡9¿Oú4:„þõü q¡9¿Tú<:„þõL: qÒùT: qÒù\:4¼þõ9B&íL:„þõT:„þõd: qÒùl: qÒùt:4¼þõ9B&íd:„þõl:„þõ|: qÒù„: qÒùŒ:4¼þõ9#B&í|:„þõ„:„þõ”: qËúœ: qËú¤:4¼+ö q¡9(B$û¬:ýƒqÕ q¡”:„+ö ey­ ¬: q‰… q¡´:ýƒqÕœ:„+ö´: q‰…¼: qÒùÄ: qÒùÌ:4¼þõ9.B&í¼:„þõÄ:„þõÔ: qÒùÜ: qÒùä:4¼þõ96B&íÔ:„þõÜ:„þõì: qÒùô: qÒùü:4¼þõì:„þõô:„þõ; qÒù ; qÒù;4¼þõ9ô4&í;„þõ ;„þõ; qÒù$; qÒù,;4¼þõ9@B&í;„þõ$;„þõ4; qïû<; qïûD; qïûL; qïûT; qïû\; qïûd; qïûl; qïût;4¼·# q¡9»ÈYü$ q¡4;„·#, q¡<;„·#4 q¡D;„·#< q¡9»ÈmüL;„·#D q¡9»È{üT;„·#9»Èà•\;„·#L q¡9»È…üd;„·#T q¡9»Èül;„·#|; qÒù„; qÒùŒ;4¼þõ9FB&í|;„þõ„;„þõ”; qÒùœ; qÒù¤;4¼þõ9JB&í”;„þõœ;„þõ¬; q‰…´; q‰…¼;4¼qÕ9PB&í¬;„qÕ´;„qÕÄ; qÒùÌ; qÒùÔ;4¼þõ9UB&íÄ;„þõÌ;„þõÜ; qÒùä; qÒùì;4¼þõ9YB&íÜ;„þõä;„þõô; qÒùü; qÒù<4¼þõ9^B&íô;„þõü;„þõ < qÒù< qÒù<4¼þõ9bB&í <„þõ<„þõ$< qÒù,< qÒù4<4¼þõ9gB&í$<„þõ,<„þõ<< qÒùD< qÒùL<4¼þõ9kB&í<<„þõD<„þõT< qºý\< qºýd<4¼Â×9¥Ê$ûl<ýƒÖ\ q¡T<„Â×\ ey­ l< qþt<ýƒÖ\<„Â×t< qþĬxžÄŒ6žÄ±è{ÄW7´d q¡|< q‘þ„< qX¶ŒoŰÂ,> qX¶4> qq°<> qX¶L>oŰÂT> qX¶\> qq°d> qX¶l>oŰÂt> qX¶|> qq°„> qX¶Œ>oŰ”>ã:–œ>+L„’œ>lx„’¤>4¼‰$¬>4¼‰$Ì> qq°Ô> q| Ü>4¼€ q¡¹cA¿ )1Oàò q¡$ q¡, q¡Ì>«6 4 q¡ä>ýƒÂÁ< q¡Ô>„€< ey­ ä> qö³?oŰÂ?ýƒqÕ$?„°Â,? q‰…4?)ê6 }>Ì«;ÐÆÔ°;ص;ܺ;à¿;äÄ;èÉ;ìÎ;ðÓ;ôØ;øÝ;üâ;Ì«;ÐÆÔ°;ص;ܺ;«;ư;µ;«; Æ$°;(µ;,º;0¿;4Ä; «;” Ƙ °;œ µ;  º;¤ ¿;¨ Ä;¬ É;° Î;´ Ó;¸ j¼ jÄ «;È ÆÌ °;Ð º;Ô Î;Ø ö;0 «;4 ÆH «;L ÆP °;p «;t Æx °;| µ;¤ «;¨ Ƭ °;° µ;´ º;ä «;è Æì °;ð µ;ô º;ø ¿;0 «;4 Æ8 °;< µ;@ º;D ¿;H Ä;˜ «;œ Ƭ «;° ÆÜ «;à Æä °;( «;, Æ0 °;¬ «;° Æ´ °;Ì «;Ð ÆÔ °;\«;`Æd°;hµ;Ô«;ØÆÜ°;àµ;äº;è¿;ìÄ;ðÉ;ôÎ;øÓ;üØ;Ý;â;ç; ì;ñ;ö;û;< <$ <(<,<0x>4}>8ߪ<äª@éªDîªHóªLøªPjTjXýª\«`«P«;TÆX°;«;”Ƙ°;œµ;0°;4µ;8º;H«;LÆ|«;€Æ„°;ˆµ;Œº;¿;È«;ÌÆÐ°;Ôµ;غ;Ü¿;àÄ; !«;¤!ƨ!°;"«;"Æ "°;ð"«;ô"Æø"°;!S)ª"*ª!Æ. r.r.€.#.+€.3ª.;ß.CúASC¢"TIª"aSc¢"Tiª"%Sƒj!ƃ¢""!‰ª"2¡S£j!Æ£¢""!©ª"?ÁSÃj!Æâ""!àkÆáSã¢""!kÆj!Æ¢""! kÆ#¢"T)KL@kÆC¢""!`kÆc¢"–%€kƃ¢"–%£¢"1 ª")ª"àK `kÆ€kÆS¡SÁSáSS!S)ª"ASIª"aSiª"%S‰ª"2¡S©ª"?ÁSɪ" #áSéª"#S ª"&#!S)ª"3#ASIª"@#aSiª"M#ƒ¢"1‰ª"Z#©ª"g#ɪ"…#éª"’# ª"Ÿ#!S!kÆ!kÆASAkÆAkÆaSakÆakÆiª"SkÆkƉ¢"Ê%¡S¡kÆ¡kÆ©¢"Ê%ÁSÁkÆÁkÆÉ¢"Ê%áSákÆákÆã¢"1é¢"Ê%KgSkÆkÆã‡;¢"¢; ¢"Ê% Ké)¢"Ê%Cë0<Cã‡;aSakÆakÆcë—<cã‡;i¢"Ê%SkÆkƃë=ƒã‡;‰¢"Ê%¡S¡kÆ¡kÆ£ëU=£ã‡;©¢"Ê%ÁSÁkÆÁkÆÃë¥=Ãã‡;É¢"Ê%áSákÆákÆ S kÆ kÆ kÆ! S! kÆ! kÆ) ¢"Ê%@ kÆA SA kÆA kÆI ¢"Ê%` kÆa Sa kÆa kÆi ¢"Ê% S kÆ kƃ ã‡;ƒ ¢"¢;‰ ¢"Ê%¡ S¡ kÆ¡ kÆÁ SÁ kÆÁ kÆà ã‡;à ¢"¢;É ¢"Ê%á Sá kÆá kÆé ¢"Ê% kÆ S kÆ kÆ ¢"Ê%) ¢"Ê%I ¢"Ê%a Sa kÆa kÆi kÆi kÆi S S kÆ kƉ kƉ kƉ S  kÆ¡ S© kÆ© kÆ© SÀ kÆÁ SÉ kÆÉ kÆÉ Sá Sé kÆé kÆé S S kÆ kÆ S! S) kÆ) kÆ) SA SI kÆI kÆI Sa Si kÆi kÆi S S kÆ kƉ kƉ kƉ S¡ S© kÆ© kÆ© SÁ SÉ kÆÉ kÆÉ Sá Sé kÆé kÆé S S kÆ kÆ S! S) kÆ) kÆ) SA SI kÆI kÆI Sa Si kÆi kÆi S S‰ kƉ kƉ S¡ S£ ¢""B© kÆ© kÆ© SÁ SÉ kÆÉ kÆÉ Sá Sé kÆé kÆé S S kÆ kÆ S! S) kÆ) kÆ) SA SI kÆI kÆI Sa Si kÆi kÆi S S‰ kƉ kƉ S¡ S© kÆ© kÆ© SÁ Sà ¢""BÉ kÆÉ kÆÉ Sá Sé kÆé kÆé SS kÆ kÆ S!S)kÆ)kÆ)SASC¢""BIkÆIkÆISaSikÆikÆiSS‰kƉkƉS¡S©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S#¢"1)kÆ)kÆ)SASIkÆIkÆISaSikÆikÆiSS‰kƉkƉS¡S©‚"<©kÆ©kÆÁSÉ‚"}<ÉkÆÉkÆáSã¢""Bé‚"ß<ékÆékÆS¢""B ‚"D= kÆ kÆ!S#¢""B)‚"”=)kÆ)kÆASC¢""BI‚"<IkÆIkÆaSc¢"úi‚"}<ikÆikÆ€kÆSƒã‡;ƒ¢"ŠP‰‚"ß<‰kƉkÆ kÆ¡S©‚"D=©kÆ©kÆÀkÆÁSÃëÆPÃã‡;É‚"”=ÉkÆÉkÆàkÆáSãëQãã‡;ékÆékÆéSkÆSëoQã‡; kÆ kÆ S!S#ëÇQ#ã‡;)kÆ)kÆ)SASCëRCã‡;IkÆIkÆISaSikÆikÆiSS‰kƉkƉS¡S©kÆ©kÆ©SÀkÆÁSÉkÆÉkÆÉSàkÆáSékÆékÆéSkÆSã‡;¢"ŠP kÆ kÆ S kÆ!S)kÆ)kÆ)S@kÆASCëfSCã‡;IkÆIkÆISaScë¤Scã‡;ikÆikÆiSSƒëTƒã‡;‰kƉkƉS¡S©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS¢"ú kÆ kÆ S!S#¢"ú)kÆ)kÆ)SASC“ hVC¢""!IkÆIkÆIS`â" 'aSikÆikÆiS€â" 'S‰kƉkƉS kÆ kÆ¡S©kÆ©kÆ©SÁSâ""BÉkÆÉkÆÉSàâ" 'áSã¢""BékÆékÆéSS kÆ kÆ S kÆ!S)kÆ)kÆ)SASIkÆIkÆISaSc¢""BikÆikÆiSS‰kƉkƉS¡S£¢""!©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S#¢""B)kÆ)kÆ)SASIkÆIkÆISaSikÆikÆiSSƒ¢""B‰kƉkƉS¡S©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S)kÆ)kÆ)SASIkÆIkÆISaSikÆikÆiSSƒ¢"1‰kƉkƉS¡S£ã‡;£¢"¢;©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSãë¡^ãã‡;ékÆékÆéSSëü^ã‡; kÆ kÆ S!S#ëJ_#ã‡;)kÆ)kÆ)SASCë–_Cã‡;IkÆIkÆISaScëË_cã‡;ikÆikÆiSSƒë`ƒã‡;‰kƉkƉS¡S£ëg`£ã‡;©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S)kÆ)kÆ)SASIkÆIkÆISaSikÆikÆiSS‰kƉkƉS¡S©kÆ©kÆ©SÁSâ"–%ÉkÆÉkÆÉSáSã¢"–%ékÆékÆéSS kÆ kÆ S!S#¢"1)kÆ)kÆ)SASC¢"1IkÆIkÆISaSc¢""!ikÆikÆiSSƒ¢""B‰kƉkƉS¡S£¢""!©kÆ©kÆ©SÁSâ""BÉkÆÉkÆÉSáSãú!Æã"Æã2"Æã¢""!ékÆékÆéSS¢""B kÆ kÆ S!S)kÆ)kÆ)SASC¢""BIkÆIkÆISaSikÆikÆiSS‰kƉkƉS¡S£¢""BÁSâ""BáSé¢"Ê%S ¢"Ê%!S#¢""B)¢"Ê%ASaSc¢""BSƒ¢"1‰¢"Ê%¡S©¢"Ê%ÁSÉ¢"Ê%áSé¢"Ê%S ª"!S)ª"ASIª"%aSiª"2S‰kƉkƉS¡S©kÆ©kÆ©SÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S!kÆ!kÆ)kÆ)kÆ)SASAkÆAkÆI‚"žPIkÆIkÆaSakÆakÆi‚"QikÆikÆSkÆkƉ‚"QQ‰kƉkÆ¡S¡kÆ¡kÆ©‚"¯Q©kÆ©kÆÁSÁkÆÁkÆÉ‚"RÉkÆÉkÆáSákÆákÆé‚"žPékÆékÆSkÆkÆ ‚"Q kÆ kÆ!S)‚"QQ)kÆ)kÆASI‚"¯QIkÆIkÆaSi‚"RikÆikÆSkÆkƉkƉkƉS â"ä5¡S©kÆ©kÆ©SÀâ" 'ÁSÉkÆÉkÆÉSáSékÆékÆéSS kÆ kÆ S!S)kÆ)kÆ)SASI‚"žPIkÆIkÆaSi‚"QikÆikÆS‰‚"¯Q‰kƉkÆ¡S©‚"žP©kÆ©kÆÀâ" 'ÁSÁkÆÁkÆÉ‚"QÉkÆÉkÆàâ"ä5áSákÆákÆé‚"¯QékÆékÆ â"7 S kÆ kÆ ª" â"ä5! S! kÆ! kÆ) ª"@ â"7A SA kÆA kÆI ª"%` â" 'a Sa kÆa kÆi ª"2€ â"ä5 S kÆ kƉ ª"  â" '¡ S¡ kÆ¡ kÆ© ª"À â"ä5Á SÁ kÆÁ kÆÉ ª"%á Sá kÆá kÆã ¢""!é ª"2!S!kÆ!kÆ!¢""!!!S!!kÆ!!kÆ#!;Æ#!¢""!A!SA!kÆA!kÆC!K.jC!¢""!a!Sa!kÆa!kÆc!K.jc!j!Æc!¢""!!S!kÆ!kƃ!KHjƒ!j!ƃ!¢""!¡!S¡!kÆ¡!kÆ£!KHj£!j!Æ£!¢""!©!¢"Ê%Á!SÁ!kÆÁ!kÆÃ!K.jÃ!j!ÆÃ!¢""!É!kÆÉ!kÆÉ!Sá!Sá!kÆá!kÆã!Kbjã!j!Æã!¢""!é!kÆé!kÆé!S"S"kÆ"kÆ"K.j"j!Æ"¢""! "kÆ "kÆ "S#"K|j#"j!Æ#"¢""!)"kÆ)"kÆ)"SC"K.jC"j!ÆC"¢""!I"kÆI"kÆI"Sc"Kbjc"j!Æc"¢""!i"kÆi"kÆi"Sƒ"K–jƒ"j!ƃ"¢""!‰"kƉ"kƉ"S£"K.j£"j!Æ£"¢""!©"kÆ©"kÆ©"SÃ"K.jÃ"j!ÆÃ"¢""!É"‚"žPÉ"kÆÉ"kÆã"K.jã"j!Æã"¢""!é"‚"Qé"kÆé"kÆ#K°j#j!Æ#¢""! #‚"QQ #kÆ #kÆ##KÊj##j!Æ##¢""!)#‚"¯Q)#kÆ)#kÆC#KÊjC#j!ÆC#¢""!I#‚"RI#kÆI#kÆ`#kÆc#K°jc#j!Æc#¢""!i#‚"ÿ_i#kÆi#kÆ€#kƃ#Käjƒ#j!ƃ#¢""!‰#‚"G`‰#kƉ#kÆ #kÆ£#Kþj£#j!Æ£#¢""!©#‚"žP©#kÆ©#kÆÀ#kÆÃ#KkÃ#j!ÆÃ#¢""!É#‚"QÉ#kÆÉ#kÆã#K2kã#j!Æã#¢""!é#‚"QQé#kÆé#kÆ$K.j$j!Æ$¢""! $‚"¯Q $kÆ $kÆ#$KLk#$j!Æ#$¢""!)$‚"R)$kÆ)$kÆ@$kÆ@$kÆC$K.jC$j!ÆC$¢""!I$‚"ÿ_I$kÆI$kÆ`$kÆ`$kÆc$Kbjc$j!Æc$¢""!i$‚"G`i$kÆi$kƃ$Kmkƒ$j!ƃ$¢""!‰$ª"£$K«k£$j!Æ£$¢""!©$ª"Ã$K«kÃ$j!ÆÃ$¢""!ã$K«kã$j!Æã$¢""!%S%kÆ%kÆ%K«k%j!Æ%¢""!!%S!%kÆ!%kÆ#%K–j#%j!Æ#%¢""!@%kÆ@%kÆA%SA%kÆA%kÆC%K°jC%j!ÆC%¢""!a%Sa%kÆa%kÆc%K«kc%j!Æc%¢""!%S%kÆ%kƃ%Kúkƒ%j!ƃ%¢""!‰%ª"¡%S¡%kÆ¡%kÆ£%Kúk£%j!Æ£%¢""!©%ª"Á%SÁ%kÆÁ%kÆÃ%KlÃ%j!ÆÃ%¢""!É%ª"%á%Sá%kÆá%kÆã%K–jã%j!Æã%¢""!&S&kÆ&kÆ&K–j&j!Æ&¢""!!&S!&kÆ!&kÆ#&K.j#&j!Æ#&¢""!@&â"ä5A&SA&kÆA&kÆC&K.lC&j!ÆC&¢""!`&â" 'a&Sa&kÆa&kÆc&¢""!&S&kÆ&kƃ&ò!ƃ&ê!ƃ&""Çmƒ&¢"ŠP¡&S¡&kÆ¡&kÆÀ&kÆÀ&kÆÁ&SÁ&kÆÁ&kÆÃ&ëàmà&ª"“9á&Sá&kÆá&kÆã&ë)n'kÆ'kÆ'S'kÆ'kÆ 'ª" 9!'S!'kÆ!'kÆ@'kÆ@'kÆA'SA'kÆA'kÆC'ò!ÆC'ê!ÆC'""qC'¢"ŠP`'ª"»9a'Sa'kÆa'kÆ€'kÆ€'kÆ'S'kÆ'kƃ'ëq 'ª"Ï9¡'S¡'kÆ¡'kÆ£'ëYqÀ'kÆÀ'kÆÁ'SÁ'kÆÁ'kÆÃ'ë¢qà'ª"Ü9á'Sá'kÆá'kÆ(kÆ(kÆ(S(kÆ(kÆ (ª"ï9!(S!(kÆ!(kÆ@(kÆ@(kÆA(SA(kÆA(kÆC(ò!ÆC(ê!ÆC(""uC(¢"ŠP`(ª"ü9a(Sa(kÆa(kÆ€(kÆ€(kÆ(S(kÆ(kƃ(ë"u‰(kƉ(kƉ(S (ª" :¡(S¡(kÆ¡(kÆ£(ëfu©(kÆ©(kÆ©(SÀ(kÆÀ(kÆÁ(SÁ(kÆÁ(kÆÃ(ëªuÉ(kÆÉ(kÆÉ(Sà(ª":á(Sá(kÆá(kÆã(ëøué(‚"žPé(kÆé(kÆ)kÆ)kÆ)S)kÆ)kÆ )‚"Q )kÆ )kÆ )ª"#:!)S!)kÆ!)kÆ))‚"žP))kÆ))kÆ@)kÆ@)kÆA)SA)kÆA)kÆI)‚"QI)kÆI)kÆ`)ª"0:a)Sa)kÆa)kÆi)kÆi)kÆi)S€)kÆ€)kƃ)ò!ƃ)ê!ƃ)""2yƒ)¢"ŠP‰)kƉ)kƉ)S )ª"=:©)kÆ©)kÆ©)SÀ)kÆÀ)kÆÃ)ëFyÉ)kÆÉ)kÆÉ)Sà)ª"J:ã)ëŠyé)‚"žPé)kÆé)kÆ*kÆ*kÆ*ëÎy *‚"Q *kÆ *kÆ *ª"W:#*ëz)*‚"QQ)*kÆ)*kÆ@*kÆ@*kÆC*ë`zI*‚"žPI*kÆI*kÆ`*ª"d:i*‚"Qi*kÆi*kÆ€*kÆ€*kƉ*‚"QQ‰*kƉ*kÆ *ª"q:©*kÆ©*kÆ©*SÀ*kÆÀ*kÆÉ*kÆÉ*kÆÉ*Sà*ª"~:é*kÆé*kÆé*S+kÆ+kÆ+ò!Æ+ê!Æ+""©|+¢"ŠP +kÆ +kÆ +S +ª"‹:)+kÆ)+kÆ)+S@+kÆ@+kÆC+ë½|I+‚"žPI+kÆI+kÆ`+ª"˜:c+ë}i+‚"Qi+kÆi+kÆ€+kÆ€+kƃ+ëE}‰+‚"QQ‰+kƉ+kÆ +ª"¥:£+ë‰}©+‚"¯Q©+kÆ©+kÆÀ+kÆÀ+kÆÃ+ëÍ}É+‚"žPÉ+kÆÉ+kÆà+ª"²:ã+ë~é+‚"Qé+kÆé+kÆ,kÆ,kÆ ,‚"QQ ,kÆ ,kÆ ,ª"¿:),‚"¯Q),kÆ),kÆ@,kÆ@,kÆI,kÆI,kÆI,S`,ª"Ì:i,kÆi,kÆi,S€,kÆ€,kƉ,kƉ,kƉ,S ,kÆ ,kÆ¡,S¡,kÆ¡,kÆ©,kÆ©,kÆ©,SÀ,kÆÀ,kÆÁ,SÁ,kÆÁ,kÆÃ,ò!ÆÃ,ê!ÆÃ,""{Ã,¢"ŠPÉ,kÆÉ,kÆÉ,Sà,kÆá,Sá,kÆá,kÆé,kÆé,kÆé,S-kÆ-S-kÆ-kÆ-ë -‚"žP -kÆ -kÆ -kÆ!-S!-kÆ!-kÆ#-ëÓ)-‚"Q)-kÆ)-kÆ@-kÆA-SA-kÆA-kÆC-ë‚I-‚"QQI-kÆI-kÆ`-kÆa-Sa-kÆa-kÆc-ë[‚i-‚"¯Qi-kÆi-kÆ€-kÆ-S-kÆ-kƃ-럂‰-‚"R‰-kƉ-kÆ -kÆ¡-S¡-kÆ¡-kÆ£-ëã‚©-‚"žP©-kÆ©-kÆÀ-kÆÁ-SÁ-kÆÁ-kÆÃ-ë5ƒÉ-‚"QÉ-kÆÉ-kÆà-kÆà-kÆá-Sá-kÆá-kÆé-‚"QQé-kÆé-kÆ.kÆ.kÆ.S.kÆ.kÆ .‚"¯Q .kÆ .kÆ .kÆ .kÆ!.S!.kÆ!.kÆ).‚"R).kÆ).kÆ@.kÆ@.kÆA.SA.kÆA.kÆI.kÆI.kÆI.S`.kÆ`.kÆi.kÆi.kÆi.S€.kÆ€.kƉ.kƉ.kƉ.S .kÆ .kÆ©.kÆ©.kÆ©.SÀ.kÆÀ.kÆÃ.¢"–%É.kÆÉ.kÆÉ.Sà.kÆà.kÆã.r!Æã.¢""!é.kÆé.kÆé.S/kÆ/kÆ/r!Æ/¢""! /kÆ /kÆ /S /kÆ /kÆ#/r!Æ#/j!Æ#/¢""!)/‚"žP)/kÆ)/kÆ@/kÆ@/kÆC/ò!ÆC/ê!ÆC/""%ŒC/ã6ŒC/¢"úI/‚"QI/kÆI/kÆ`/kÆ`/kÆc/š!=c/Â"Cc/ò!Æc/ê!Æc/""Lc/ã`c/¢"ŠPi/‚"QQi/kÆi/kÆ€/kÆ€/kƉ/‚"¯Q‰/kƉ/kÆ /kÆ /kÆ£/“ hV£/š!=£/ò!Æ£/ê!Æ£/""¾Ž£/ëÐŽ£/ã£/¢"ŠP©/‚"R©/kÆ©/kÆÀ/kÆÀ/kÆÉ/‚"ÿ_É/kÆÉ/kÆà/kÆà/kÆã/¢""!é/‚"žPé/kÆé/kÆ0kÆ0kÆ0¢""! 0‚"Q 0kÆ 0kÆ 0kÆ 0kÆ#0R"Æ#0Š!Æ#0¢""!)0‚"QQ)0kÆ)0kÆ@0kÆ@0kÆA0SA0kÆA0kÆC0Š!ÆC0¢""!I0‚"¯QI0kÆI0kÆa0Sa0kÆa0kÆc0Š!Æc0¢""!i0‚"Ri0kÆi0kÆ€0kÆ€0kÆ0S0kÆ0kƃ0¢""!‰0‚"ÿ_‰0kƉ0kÆ 0ª">£0J"Æ£0¢""!©0kÆ©0kÆ©0SÀ0kÆÀ0kÆÃ0""Ã0¢""!É0kÆÉ0kÆÉ0Sà0ª"$>á0Sá0kÆá0kÆã0r!Æã0¢""!é0kÆé0kÆé0S1kÆ1kÆ1S1kÆ1kÆ1j!Æ1¢""! 1kÆ 1kÆ 1S 1ª"“9!1S!1kÆ!1kÆ#1Â"C#1ú!Æ#1"Æ#1¢"¢;)1kÆ)1kÆ)1S@1kÆ@1kÆI1kÆI1kÆI1S`1ª" 9c1ëB‘i1kÆi1kÆi1S€1kÆ€1kƃ1ëà‘‰1kƉ1kƉ1S 1ª"»9¡1S¡1kÆ¡1kÆ©1‚"žP©1kÆ©1kÆÀ1kÆÀ1kÆÁ1SÁ1kÆÁ1kÆÉ1‚"QÉ1kÆÉ1kÆà1ª"Ï9á1Sá1kÆá1kÆã1“ hVã1""—ã1j!Æã1ë’—ã1ã×ã1¢""!é1‚"QQé1kÆé1kÆ2kÆ2kÆ2S2j!Æ2¢""! 2‚"¯Q 2kÆ 2kÆ 2ª"Ü9!2S#2ú!Æ#2"Æ#2ã˜#2¢"T)2‚"R)2kÆ)2kÆ@2kÆ@2kÆA2SC2Â"CC2ú!ÆC2"ÆC2¢"¢;I2‚"ÿ_I2kÆI2kÆ`2ª"ï9a2Si2‚"G`i2kÆi2kÆ€2kÆ€2kÆ2Sƒ2ë昉2‚"žP‰2kƉ2kÆ 2ª"ü9¡2S£2ë)™©2‚"Q©2kÆ©2kÆÀ2kÆÀ2kÆÁ2SÉ2‚"QQÉ2kÆÉ2kÆà2ª" :á2Sé2‚"¯Qé2kÆé2kÆ3kÆ3kÆ3S3j!Æ3""œ3ë*œ3ã×3¢""! 3‚"R 3kÆ 3kÆ 3ª":!3S!3kÆ!3kÆ#3j!Æ#3¢""!)3‚"ÿ_)3kÆ)3kÆ@3kÆ@3kÆC3j!ÆC3¢""!I3‚"G`I3kÆI3kÆ`3ª"#:c3r!Æc3j!Æc3¢""!i3ª"€3kÆ€3kÆ3S3kÆ3kƃ3¢""!‰3ª" 3ª"0:¡3S¡3kÆ¡3kÆ£3r!Æ£3j!Æ£3¢""!©3ª"%À3kÆÀ3kÆÁ3SÁ3kÆÁ3kÆÃ3""îŸÃ3¢""!à3ª"=:á3Sá3kÆá3kÆã3¢""!é3Sé3ª"4kÆ4kÆ4""£ 4¢""! 4ª"J:!4S!4kÆ!4kÆ#4""s¡#4¢""!)4kÆ)4kÆ)4S@4kÆ@4kÆA4SA4kÆA4kÆC4ú!ÆC4"ÆC4¢"TI4‚"QI4kÆI4kÆ`4ª"W:a4Sa4kÆa4kÆc42"Æc4"Æc4 "Æc4ò" £c4¢""!i4Si4â"TŒ€4kÆ€4kƃ4ò!ƃ4"ƃ4¢"¢;‰4S‰4â"TŒ 4ª"d:©4kÆ©4kÆ©4SÀ4kÆÀ4kÆÁ4SÁ4kÆÁ4kÆÃ4ë£É4kÆÉ4kÆÉ4Sà4ª"q:á4Sá4kÆá4kÆã4ëï£é4kÆé4kÆé4S5kÆ5kÆ5S5kÆ5kÆ5ë>¤ 5kÆ 5kÆ 5S 5ª"~:!5S!5kÆ!5kÆ)5‚"Q)5kÆ)5kÆ@5kÆ@5kÆI5‚"‡I5kÆI5kÆ`5ª"‹:a5Sa5kÆa5kÆi5S€5kÆ€5kÆ5S5kÆ5kƃ5ú!ƃ5"ƃ5¢"¢;‰5S 5ª"˜:¡5S¡5kÆ¡5kÆÀ5kÆÀ5kÆÁ5SÃ5ë ¥à5ª"¥:á5Sã5랥6kÆ6kÆ6S6ë)¦ 6S"! 6ª"²:!6S@6kÆ@6kÆA6SA6kÆA6kÆ`6ª"¿:€6kÆ€6kƃ6ú!ƃ6"ƃ6¢""! 6ª"Ì:£6ú!Æ£6"Æ£6¢"TÀ6kÆÀ6kÆÃ6¢""!à6kÆà6kÆã6¢""!é6kÆé6kÆé6S7kÆ7kÆ7S7kÆ7kÆ7j!Æ7""ê§7¢""! 7‚"Q 7kÆ 7kÆ 7kÆ!7S!7kÆ!7kÆ#7ò!Æ#7"Æ#7¢"¢;)7‚"‡)7kÆ)7kÆ@7kÆA7SA7kÆA7kÆI7‚"QQI7kÆI7kÆ`7kÆa7Sa7kÆa7kÆc7남i7‚"„‘i7kÆi7kÆ€7kÆ7S7kÆ7kƃ7ëÓ¨‰7‚"¡‘‰7kƉ7kÆ 7kÆ¡7S¡7kÆ¡7kÆ£7ë+©©7‚"²‘©7kÆ©7kÆÀ7kÆÁ7SÁ7kÆÁ7kÆÃ7ë|©É7‚"ÑÉ7kÆÉ7kÆà7kÆá7Sá7kÆá7kÆé7‚"Qé7kÆé7kÆ8kÆ8S8kÆ8kÆ 8‚"‡ 8kÆ 8kÆ!8S!8kÆ!8kÆ)8‚"QQ)8kÆ)8kÆ@8kÆ@8kÆA8SA8kÆA8kÆI8‚"„‘I8kÆI8kÆ`8ª"0:a8Sa8kÆa8kÆc8ò!Æc8"Æc8¢"¢;i8‚"¡‘i8kÆi8kÆ€8kÆ€8kƉ8‚"²‘‰8kƉ8kÆ 8ª"=:£8ë «©8‚"Ñ©8kÆ©8kÆÀ8kÆÀ8kÆÃ8ëi«à8ª"J:ã8ëÇ«é8S9kÆ9kÆ9S9kÆ9kÆ9ë&¬ 9ª"W:!9S!9kÆ!9kÆ#9둬)9S@9kÆ@9kÆA9SA9kÆA9kÆC9ëÿ¬`9ª"d:a9Sa9kÆa9kÆc9ë`­€9kÆ€9kÆ9S9kÆ9kƃ9ë¿­‰9S"! 9ª"q:¡9S¡9kÆ¡9kÆ£9ë ®©9ª"À9kÆÀ9kÆÁ9SÃ9ë—®É9ª"à9ª"~:á9Sã9ëù®é9kÆé9kÆé9S:kÆ:kÆ:S:ëY¯ :‚"Q :kÆ :kÆ :ª"‹:!:S#:뻯):‚"‡):kÆ):kÆ@:kÆ@:kÆA:SC:ë"°I:‚"º˜I:kÆI:kÆ`:ª"˜:a:Sc:ë|°i:‚"˘i:kÆi:kÆ€:kÆ€:kÆ:Sƒ:ëϰ‰:‚"QQ‰:kƉ:kÆ :ª"¥:¡:S£:ë ±©:‚"Q©:kÆ©:kÆÀ:kÆÀ:kÆÃ:ëg±É:‚"‡É:kÆÉ:kÆà:ª"²:á:Sá:kÆá:kÆã:ëÁ±é:‚"º˜é:kÆé:kÆ;kÆ;kÆ;S;kÆ;kÆ;ë² ;‚"˘ ;kÆ ;kÆ ;ª"¿:!;S!;kÆ!;kÆ#;ë²);‚"QQ);kÆ);kÆ@;kÆ@;kÆA;SA;kÆA;kÆC;ëç²I;S`;ª"Ì:€;kÆ€;kƉ;S ;kÆ ;kÆÀ;kÆÀ;kÆÁ;SÁ;kÆÁ;kÆÉ;Sà;kÆá;Sá;kÆá;kÆé;S<kÆ<S<kÆ<kÆ <S <kÆ!<S!<kÆ!<kÆ)<S@<kÆI<S"!`<kÆa<Sa<kÆa<kÆ€<kÆ<S<kÆ<kÆ <kÆ¡<S¡<kÆ¡<kÆÀ<kÆ=S=kÆ=kÆ!=S!=kÆ!=kÆI=ª"a=Sa=kÆa=kÆi=ª"=S=kÆ=kÆ¡=S¡=kÆ¡=kÆÁ=SÁ=kÆÁ=kÆá=Sá=kÆá=kÆ>S>kÆ>kÆ#>""iº#>R"Æ#>¢""!C>""yºC>R"ÆC>¢""!c>R"Æc>¢""!ƒ>2"ƃ>"ƃ>"ƃ>¢""!£>2"Æ£>"Æ£>"Æ£>¢""!Ã>2"ÆÃ>ú!ÆÃ>"ÆÃ>¢""!á>Sá>kÆá>kÆã>R"Æã>j!Æã>Š!Æã>¢""!é>kÆé>kÆé>S?¢""! ?kÆ ?kÆ ?S!?S!?kÆ!?kÆ#?¢""!)?kÆ)?kÆ)?SA?SA?kÆA?kÆC?ú!ÆC?"ÆC?¢"¢;I?kÆI?kÆI?Sc?Š!Æc?¢""!i?kÆi?kÆi?Sƒ?¢""!‰?‚"Q‰?kƉ?kÆ£?ú!Æ£?"Æ£?²!=£?¢"T©?‚"QQ©?kÆ©?kÆÁ?SÃ?ú!ÆÃ?"ÆÃ?²!=Ã?¢"TÉ?‚"QÉ?kÆÉ?kÆá?Sã?j!Æã?ú!Æã?"Æã?""q¿ã?¢"¢;é?‚"QQé?kÆé?kÆ@S@""”À@j!Æ@¢""! @kÆ @kÆ @S!@S#@¢""!)@kÆ)@kÆ)@SA@SC@j!ÆC@""sÆC@¢""!I@kÆI@kÆI@Sa@Sc@j!Æc@²!=c@¢""!i@kÆi@kÆi@S@Sƒ@j!ƃ@²!=ƒ@¢""!‰@‚"žP‰@kƉ@kÆ¡@S¡@kÆ¡@kÆ£@j!Æ£@""²É£@¢""!©@‚"ऩ@kÆ©@kÆÁ@SÁ@kÆÁ@kÆÃ@j!ÆÃ@²!=Ã@""mÌÃ@¢""!É@‚"ñ¤É@kÆÉ@kÆã@¢"1é@‚"Qé@kÆé@kÆ A‚"‡ AkÆ AkÆ#A‚#Æ#A¢"1)A‚"º˜)AkÆ)AkÆIA‚"˘IAkÆIAkÆiA‚"Z¥iAkÆiAkƃA¢""B‰A‚"q¥‰AkƉAkÆ©A‚"QQ©AkÆ©AkÆÁASÁAkÆÁAkÆÉA‚"„‘ÉAkÆÉAkÆáASáAkÆáAkÆãA¢""BéA‚"¡‘éAkÆéAkÆBSBkÆBkÆ B‚"žP BkÆ BkÆ!BS!BkÆ!BkÆ#BÂ"hÕ#Bj#Æ#B¢"1)B‚"à¤)BkÆ)BkÆABSABkÆABkÆCBr!ÆCB¢""!IB‚"ñ¤IBkÆIBkÆaBSaBkÆaBkÆcB¢""BiB‚"QiBkÆiBkÆBSBkÆBkƃB¢""B‰B‚"‡‰BkƉBkÆ BkÆ BkÆ¡BS¡BkÆ¡BkÆ£B¢""B©B‚"º˜©BkÆ©BkÆÀBkÆÀBkÆÁBSÁBkÆÁBkÆÃB¢""BÉB‚"˘ÉBkÆÉBkÆáBSáBkÆáBkÆéB‚"Z¥éBkÆéBkÆCSCkÆCkÆ C‚"q¥ CkÆ CkÆ!CS!CkÆ!CkÆ#C¢""B)C‚"QQ)CkÆ)CkÆACSACkÆACkÆCC¢""BIC‚"„‘ICkÆICkÆaCSaCkÆaCkÆcC¢""BiC‚"¡‘iCkÆiCkƃC¢""B£C¢""BÃC¢""BÉCª"áCSãC¢""BéCª"DSDkÆDkÆD¢""B Dª"%)Dª"2IDª"?cDÂ"hÕcDj#ÆcD¢"1iDª" #‰Dª"#©Dª"&#ÉDª"3#éDª"@#ESEkÆEkÆ!ES!EkÆ!EkÆAESAEkÆAEkÆ`EkÆ`EkÆ€EkÆ€EkÆ£E‚#Æ£E¢"1ÉEkÆÉEkÆÉESéEkÆéEkÆéESóEz!Æ FkÆ FkÆ FSFz!ÆF‚!Æ!FS!FkÆ!FkÆ)FkÆ)FkÆ)FSAFSAFkÆAFkÆIFkÆIFkÆIFSaFSaFkÆaFkÆiF‚"žPiFkÆiFkƉF‚"उFkƉFkÆ©F‚"Q©FkÆ©FkÆÃF¢""BÉF‚"QQÉFkÆÉFkÆàFkÆàFkÆéF‚"„‘éFkÆéFkÆGkÆGkÆG¢""B G‚"¯Q GkÆ GkÆ)G‚"k©)GkÆ)GkÆIG‚"žPIGkÆIGkÆiG‚"à¤iGkÆiGkÆsGz!ƃG¢""B‰G‚"Q‰GkƉGkÆ“Gz!Æ“G‚!Æ¡GS¡GkÆ¡GkÆ©G‚"QQ©GkÆ©GkƳGz!ÆÁGSÁGkÆÁGkÆÉG‚"„‘ÉGkÆÉGkÆÓGz!ÆÓG‚!ÆáGSáGkÆáGkÆéG‚"¯QéGkÆéGkÆóGz!ÆHSHkÆHkÆ H‚"k© HkÆ HkÆHz!ÆH‚!Æ)HkÆ)HkÆ)HS3Hz!ÆIHkÆIHkÆIHSSHz!ÆSH‚!ÆcH‚#ÆcH¢"1iHkÆiHkÆiHSsHz!ÆsH‚!ƉHkƉHkƉHS“Hz!Æ HkÆ HkÆ©HkÆ©HkÆ©HS³Hz!ÆÀHkÆÀHkÆÁHSÁHkÆÁHkÆÉHkÆÉHkÆÉHSÓHz!ÆÓH‚!ÆáHSáHkÆáHkÆéHkÆéHkÆéHSISIkÆIkÆ IkÆ IkÆ IS!IS!IkÆ!IkÆ)IkÆ)IkÆ)IS@IkÆ@IkÆAISAIkÆAIkÆIIkÆIIkÆIISaISaIkÆaIkÆiIkÆiIkÆiISsIz!ÆISIkÆIkƉIkƉIkƉIS¡IS¡IkÆ¡IkÆ£I¢""B©IkÆ©IkÆ©ISÃI¢"1ÉIkÆÉIkÆÉISàIkÆàIkÆéIkÆéIkÆéIS JkÆ JkÆ JS!JS!JkÆ!JkÆ)JkÆ)JkÆ)JSAJSAJkÆAJkÆCJ¢"1IJkÆIJkÆIJSaJSaJkÆaJkÆiJkÆiJkÆiJS‰JkƉJkƉJS©JkÆ©JkÆ©JSÉJkÆÉJkÆÉJSéJkÆéJkÆéJSKkÆ KkÆ KkÆ KS KkÆ!KS!KkÆ!KkÆ)KkÆ)KkÆ)KS@KkÆAKSAKkÆAKkÆIKkÆIKkÆIKS`KkÆaKSaKkÆaKkÆiKkÆiKkÆiKS€Kâ" 'KSKkÆKkƉKkƉKkƉKS Kâ"ä5¡KS¡KkÆ¡KkÆ©KkÆ©KkÆ©KSÁKSÁKkÆÁKkÆÃK¢"1ÉKkÆÉKkÆÉKSáKSáKkÆáKkÆéKkÆéKkÆéKSLâ" 'LSLkÆLkÆ LkÆ LkÆ LS)LkÆ)LkÆ)LSILkÆILkÆILSiLkÆiLkÆiLSLSLkÆLkƉLkƉLkƉLS¡LS¡LkÆ¡LkÆ©LkÆ©LkÆ©LSÁLSÁLkÆÁLkÆÉLkÆÉLkÆÉLSéLkÆéLkÆéLS MkÆ MkÆ MS)MkÆ)MkÆ)MS@Mâ" 'IMkÆIMkÆIMSiMkÆiMkÆiMSƒMj!ƃM²!=ƒM¢""!‰MkƉMkƉMS£Mj!Æ£M²!=£M¢""!©MkÆ©MkÆ©MSÉMkÆÉMkÆÉMSéMkÆéMkÆéMSNj!ÆN²!=N¢""! NkÆ NkÆ NS)NkÆ)NkÆ)NSINkÆINkÆINScN¢"1iNkÆiNkÆiNSƒNú!ƃN"ƃN¢"¢;‰N‚"ÿ_‰NkƉNkÆ©N‚"G`©NkÆ©NkÆÃNë§ìÉN‚"¶«ÉNkÆÉNkÆãNëñìéN‚"¬éNkÆéNkÆOSOkÆOkÆOëHí O‚"o¬ OkÆ OkÆ!OS!OkÆ!OkÆ)O‚"€¬)OkÆ)OkÆ@OkÆ@OkÆAOSAOkÆAOkÆIO‚"߬IOkÆIOkÆ`OkÆ`OkÆaOSaOkÆaOkÆiO‚"O­iOkÆiOkÆOSOkÆOkƃO¢""B‰O‚"®­‰OkƉOkÆ©O‚"®©OkÆ©OkÆÉO‚"t®ÉOkÆÉOkÆéO‚"è®éOkÆéOkÆPkÆPkÆ P‚"H¯ PkÆ PkÆ PkÆ PkÆ!PS!PkÆ!PkÆ)P‚"ª¯)PkÆ)PkÆAPSAPkÆAPkÆIP‚"<IPkÆIPkÆiP‚"}<iPkÆiPkƉP‚"ß<‰PkƉPkÆ©P‚"D=©PkÆ©PkÆÀPkÆÀPkÆÉP‚"”=ÉPkÆÉPkÆàPkÆàPkÆáPSáPkÆáPkÆéP‚"°±éPkÆéPkÆQSQkÆQkÆ Q‚" ² QkÆ QkÆ)Q‚"g²)QkÆ)QkÆIQ‚"x²IQkÆIQkÆiQ‚"Ö²iQkÆiQkÆ€QkÆ€QkƉQ‚"ÿ_‰QkƉQkÆ QkÆ QkÆ¡QS¡QkÆ¡QkÆ©Q‚"G`©QkÆ©QkÆÁQSÁQkÆÁQkÆÉQ‚"¶«ÉQkÆÉQkÆéQ‚"¬éQkÆéQkÆRSRkÆRkÆ R‚"o¬ RkÆ RkÆ!RS!RkÆ!RkÆ)R‚"€¬)RkÆ)RkÆARSARkÆARkÆIR‚"߬IRkÆIRkÆ`RkÆaRSaRkÆaRkÆiR‚"O­iRkÆiRkÆ€RkÆRSRkÆRkƉR‚"®­‰RkƉRkÆ RkÆ¡RS¡RkÆ¡RkÆ©R‚"®©RkÆ©RkÆÀRkÆÉR‚"t®ÉRkÆÉRkÆàRkÆéR‚"è®éRkÆéRkÆSkÆ S‚"H¯ SkÆ SkÆ SkÆ)S‚"ª¯)SkÆ)SkÆ@SkÆASSASkÆASkÆIS‚"<ISkÆISkÆ`SkÆ`SkÆaSSaSkÆaSkÆiS‚"}<iSkÆiSkÆ€Sª"˜:‰S‚"ß<‰SkƉSkÆ SkÆ SkÆ©S‚"D=©SkÆ©SkÆÀSª"¥:ÉS‚"”=ÉSkÆÉSkÆàSkÆàSkÆãS¢"1éS‚"°±éSkÆéSkÆTª"²:TSTkÆTkÆ T‚" ² TkÆ TkÆ TkÆ TkÆ!TS!TkÆ!TkÆ)T‚"g²)TkÆ)TkÆ@Tª"¿:CT¢""BIT‚"x²ITkÆITkÆ`TkÆ`TkÆiT‚"Ö²iTkÆiTkÆ€Tª"Ì: TkÆ TkÆÀTkÆÀTkÆÃT¢""BàTkÆàTkÆãT¢""BUkÆU¢""B UkÆ)Uª"@UkÆIUª"`UkÆiUª"€UkÆ UkÆÀUkÆÉUª"àUkÆéUª"VkÆVkÆ Vª"% VkÆ VkÆ@VkÆ@VkÆ`VkÆ`VkÆ€VkÆ€VkÆ VkÆ VkÆÀVkÆÀVkÆàVkÆàVkÆWkÆWkÆ WkÆ WkÆ#W¢""B)WkÆ)WkÆ)WS@WkÆ@WkÆIWkÆIWkÆIWS`WkÆ`WkÆiWª"2€WkÆ€WkÆ WkÆ WkÆ£W¢""BÀWkÆÀWkÆàWkÆàWkÆãW¢""BéWª"XkÆXkÆ Xª" XkÆ XkÆ)Xª"%@XkÆ@XkÆIXª"2`XkÆ`XkÆiXª"‰Xª" XkÆ XkÆ©XkÆ©XkÆ©XSÀXª"¥:ÉX‚"žPÉXkÆÉXkÆàXkÆàXkÆYª"²: YkÆ YkÆ@Yª"¿:`YkÆ`YkÆ€Yª"Ì:ƒY¢""B YkÆ YkÆÀYkÆÀYkÆÁYSÁYkÆÁYkÆÃY¢""BàYkÆàYkÆáYSáYkÆáYkÆZkÆZSZkÆZkÆ ZkÆ!ZS!ZkÆ!ZkÆ@ZkÆ`ZkÆ€ZkƉZ""‘̉Z¢"Ê% ZkÆ¡ZS¡ZkÆ¡ZkÆ©Z¢"Ê%ÀZkÆÁZSÁZkÆÁZkÆàZkÆáZSáZkÆáZkÆ[kÆ[kÆ[S[kÆ[kÆ[¢""B [¢"Ê% [kÆ [kÆ![S![kÆ![kÆ)[¢"Ê%@[kÆ@[kÆA[SA[kÆA[kÆI[¢"Ê%`[kÆ`[kÆa[Sa[kÆa[kÆi[kÆi[kÆi[S€[kÆ€[kƉ[kƉ[kƉ[S [kÆ [kÆ©[kÆ©[kÆ©[SÀ[kÆÀ[kÆÉ[kÆÉ[kÆÉ[Sà[kÆà[kÆé[‚"žPé[kÆé[kÆ\kÆ\kÆ\S\kÆ\kÆ \‚"Q \kÆ \kÆ \kÆ \kÆ!\S!\kÆ!\kÆ#\¢""B)\‚"QQ)\kÆ)\kÆ@\kÆ@\kÆA\SA\kÆA\kÆI\‚"žPI\kÆI\kÆ`\kÆ`\kÆa\Sa\kÆa\kÆi\‚"Qi\kÆi\kÆ\S\kÆ\kƉ\‚"QQ‰\kƉ\kÆ¡\S¡\kÆ¡\kÆ©\¢"Ê%Á\SÁ\kÆÁ\kÆÉ\¢"Ê%á\Sá\kÆá\kÆé\¢"Ê%]S]kÆ]kÆ ]kÆ#]¢""B@]kÆ`]kÆi]¢"Ê%€]kƉ]¢"Ê% ]kÆ©]¢"Ê%Á]SÁ]kÆÁ]kÆÉ]¢"Ê%á]Sá]kÆá]kÆé]¢"Ê%^S^kÆ^kÆ ^ª"!^S!^kÆ!^kÆ)^ª"A^SA^kÆA^kÆI^ª"%a^Sa^kÆa^kÆi^ª"€^kÆ^S^kÆ^kƉ^kƉ^kƉ^S ^kÆ¡^S¡^kÆ¡^kÆ©^‚"žP©^kÆ©^kÆÀ^kÆÁ^SÁ^kÆÁ^kÆÉ^‚"à¤É^kÆÉ^kÆà^kÆá^Sá^kÆá^kÆé^kÆé^kÆé^S_kÆ_S_kÆ_kÆ _‚"žP _kÆ _kÆ _kÆ)_ª"@_kÆI_ª"`_kÆi_ª"%á_Sá_kÆá_kÆ`S`kÆ`kÆ!`S!`kÆ!`kÆ)`¢"Ê%A`SA`kÆA`kÆa`Sa`kÆa`kÆi`¢"Ê%`S`kÆ`kƉ`¢"Ê%¡`S¡`kÆ¡`kÆ©`ª"Á`SÁ`kÆÁ`kÆÉ`ª"á`Sá`kÆá`kÆé`ª"%aSakÆakÆ!aS!akÆ!akÆ#aj#Æ#aÂ"hÕ#a¢"1)a¢"Ê%@akÆ@akÆAaSAakÆAakÆIa¢"Ê%`akÆ`akÆaaSaakÆaakÆcaÂ"hÕca¢"1iakÆiakÆiaSƒaÂ"hÕƒa¢"1‰a‚"žP‰akƉakÆ©a‚"ऩakÆ©akÆÉa‚"ñ¤ÉakÆÉakÆéakÆéakÆéaSbkÆbkÆ bkÆ bkÆ bS bkÆ bkÆ#bÂ"hÕ#b¢"1)bkÆ)bkÆ)bSCb¢""!IbkÆIbkÆIbSabSabkÆabkÆibkÆibkÆibSbSbkÆbkƉb¢"Ê%¡bS¡bkÆ¡bkÆ©b¢"Ê%ÁbSÁbkÆÁbkÆÉb¢"Ê%ábSábkÆábkÆéb¢"Ê%cSckÆckÆ ckÆ ckÆ cS!cS!ckÆ!ckÆ)ckÆ)ckÆ)cSAcSAckÆAckÆIckÆIckÆIcSacSackÆackÆickÆickÆicS€ckÆ€ckÆcSckÆckƉckƉckƉcS ckÆ ckÆ¡cS¡ckÆ¡ckÆ©ckÆ©ckÆ©cSÁcSÁckÆÁckÆÉckÆÉckÆÉcSácSáckÆáckÆéckÆéckÆécSdSdkÆdkÆ d‚"žP dkÆ dkÆ)d‚"Q)dkÆ)dkÆId‚"‡IdkÆIdkÆ`dâ" 'id‚"QQidkÆidkÆdS‰d‚"¯Q‰dkƉdkÆ¡dS¡dkÆ¡dkÆ©d‚"ÿ_©dkÆ©dkÆÉd‚"žPÉdkÆÉdkÆéd‚"QédkÆédkÆeSekÆekÆ e‚"‡ ekÆ ekÆ!eS!ekÆ!ekÆ)e‚"QQ)ekÆ)ekÆAeSAekÆAekÆIe‚"¯QIekÆIekÆie‚"ÿ_iekÆiekƉekƉekƉeS©ekÆ©ekÆ©eSÉekÆÉekÆÉeSéekÆéekÆéeS fkÆ fkÆ fS#fú!Æ#f"Æ#f¢"T)fkÆ)fkÆ)fSAf’!ÆIfkÆIfkÆIfSifkÆifkÆifS‰fkƉfkƉfS©f‚"žP©fkÆ©fkÆÉf‚"QÉfkÆÉfkÆéf‚"QQéfkÆéfkÆ g‚"¯Q gkÆ gkÆ)g‚"k©)gkÆ)gkÆAgSAgkÆAgkÆIg‚"RIgkÆIgkÆagSagkÆagkÆig‚"FeigkÆigkÆgSgkÆgkƉg‚"G`‰gkƉgkÆ¡gS¡gkÆ¡gkÆ©g‚"žP©gkÆ©gkÆÁgSÁgkÆÁgkÆÉg‚"QÉgkÆÉgkÆágSágkÆágkÆég‚"QQégkÆégkÆhShkÆhkÆ h‚"¯Q hkÆ hkÆ!hS!hkÆ!hkÆ)h‚"k©)hkÆ)hkÆAhSAhkÆAhkÆIh‚"RIhkÆIhkÆih‚"FeihkÆihkƉh‚"G`‰hkƉhkÆ©h¢"Ê%Àhâ" 'Éh¢"Ê%àhâ" 'éh¢"Ê%iS i¢"Ê% ikÆ!iS)i¢"Ê%`iâ"¯]ii¢"Ê%‰i¢"Ê% iâ"ä5¡iS¡ikÆ¡ikÆ©i¢"Ê%ÀikÆÀikÆÁiSÁikÆÁikÆÉi¢"Ê%àiª"~:áiSáikÆáikÆjkÆjkÆjSjkÆjkÆ jª"‹:!jS!jkÆ!jkÆ@jkÆ@jkÆAjSAjkÆAjkÆ`jª"˜:ajSajkÆajkÆ€jkÆ€jkÆ jª"¥:ÀjkÆÀjkÆàjª"²:kkÆkkÆ kª"¿:@kkÆ@kkÆ`kª"Ì:€kkÆ€kkÆ kkÆ kkÆÀkkÆÀkkÆàkkÆàkkÆlkÆlkÆ l¢"Ê% lkÆ lkÆ)l¢"Ê%@lkÆ@lkÆAlSIl¢"Ê%`lkÆ`lkÆalSil¢"Ê%€lkÆ€lkƉl¢"Ê% lkÆ lkÆ©l¢"Ê%ÀlkÆÀlkÆÉl¢"Ê%àlkÆàlkÆél¢"Ê%mkÆmkÆ m¢"Ê% mkÆ mkÆ@mkÆ@mkÆAmSAmkÆAmkÆIm¢"Ê%`mkÆ`mkÆim¢"Ê%€mkÆ€mkƉm¢"Ê% mkÆ mkÆ©m¢"Ê%ÀmkÆÀmkÆÁmSÁmkÆÁmkÆÉmª"àmkÆàmkÆámSámkÆámkÆémª"nkÆnkÆnSnkÆnkÆ nª"% nkÆ nkÆ!nS!nkÆ!nkÆ)nª"2@nkÆ@nkÆAnSAnkÆAnkÆInª"?`nkÆ`nkÆinª" #€nkÆ€nkƉnª"# nkÆ nkÆ©n¢"Ê%ÀnkÆÀnkÆÁnSÁnkÆÁnkÆÉn¢"Ê%ànkÆànkÆánSánkÆánkÆén¢"Ê%okÆokÆoSokÆokÆ o¢"Ê% okÆ okÆ!oS!okÆ!okÆ)o¢"Ê%@okÆ@okÆAoSAokÆAokÆIo¢"Ê%aoSaokÆaokÆio¢"Ê%oSokÆokÆ¡oS¡okÆ¡okÆÁoSÁokÆÁokÆÉo¢"Ê%áoSáokÆáokÆéo¢"Ê%pSpkÆpkÆp¢"–%!pS!pkÆ!pkÆ@pkÆApSApkÆApkÆIp¢"Ê%`pkÆapSapkÆapkÆcp¢""B€pkÆpSpkÆpkƃpò!ƃp"ƃp¢"¢; pkÆ¡pS£pú!Æ£p"Æ£p¢"¢;ÀpkÆÁpSÃp¢""BápSqS!qS)q¢"Ê%AqSIq¢"Ê%aqSiq¢"Ê%€qkÆqSƒq¢"1‰q¢"Ê% qkÆ¡qS£qú!Æ£q"Æ£q¢"TÀqkÆÁqSàqkÆrkÆr¢"1)r¢"Ê%Ir¢"Ê%ir¢"Ê%€rkÆ€rkƉr¢"Ê% rkÆ rkÆ©r¢"Ê%ÀrkÆÀrkÆÁrSÁrkÆÁrkÆÉr¢"Ê%àrkÆàrkÆér¢"Ê%skÆskÆ s¢"Ê% skÆ skÆ)s¢"Ê%Is¢"Ê%`sâ"7asSaskÆaskÆis¢"Ê%sSskÆskƃsÂ"hÕƒs¢"1‰s¢"Ê%¡sS¡skÆ¡skÆ©s¢"Ê%ÁsSÁskÆÁskÆÉs¢"Ê%ásSáskÆáskÆés¢"Ê%tStkÆtkÆ t¢"Ê%!tS!tkÆ!tkÆ)t¢"Ê%AtSAtkÆAtkÆatSatkÆatkÆ€tkÆ€tkÆtStkÆtkÆ tkÆ tkÆ¡tS¡tkÆ¡tkÆ©tª"ÁtSÁtkÆÁtkÆÉtª"átSátkÆátkÆétª"uSukÆukÆ uª"!uS!ukÆ!ukÆAuSAukÆAukÆCu¢"1auSaukÆaukÆcuú!Æcu"Æcu¢"TiukÆiukÆiuS€ukÆ€ukÆuSukÆukƉukƉukƉuS ukÆ ukÆ¡uS¡ukÆ¡ukÆ©ukÆ©ukÆ©uSÁuSÁukÆÁukÆÉukÆÉukÆÉuSáuSáukÆáukÆéukÆéukÆéuSvSvkÆvkÆ vkÆ vkÆ vS!vS!vkÆ!vkÆ)vkÆ)vkÆ)vSAvSAvkÆAvkÆIv‚"QIvkÆIvkÆavSavkÆavkÆiv‚"QQivkÆivkÆvSvkÆvkƉv‚"Q‰vkƉvkÆ©v‚"QQ©vkÆ©vkƉwkƉwkƉwS©wkÆ©wkÆ©wSÉwkÆÉwkÆÉwSéwkÆéwkÆéwSxkÆxkÆ xkÆ xkÆ xS xkÆ xkÆ)xkÆ)xkÆ)xSIxkÆIxkÆIxSix""åƒx¢"1‰x""å£xú!Æ£x"Æ£x¢"¢;©x""åÉx""/åy¢""!#yò!Æ#y"Æ#y¢"¢;@ykÆ@ykÆ`ykÆ`ykÆzkÆzkÆ zkÆ zkÆ!{S!{kÆ!{kÆ@{kÆ@{kÆA{SA{kÆA{kÆ`{kÆ`{kÆa{Sa{kÆa{kÆ{S{kÆ{kÆ¡{S¡{kÆ¡{kÆÁ{SÁ{kÆÁ{kÆá{Sá{kÆá{kÆ|kÆ|kÆ|S|kÆ|kÆ |kÆ |kÆ!|S!|kÆ!|kÆA|SA|kÆA|kÆa|Sa|kÆa|kÆ€|kÆ|S|kÆ|kƃ|¢""B |kÆ¡|S¡|kÆ¡|kÆÁ|SÁ|kÆÁ|kÆá|Sá|kÆá|kÆ}S}kÆ}kÆ!}S!}kÆ!}kÆA}SA}kÆA}kÆa}Sa}kÆa}kÆi}¢"Ê%}S}kÆ}kƉ}¢"Ê%¡}S¡}kÆ¡}kÆ©}¢"Ê%Á}SÁ}kÆÁ}kÆÉ}¢"Ê%á}Sá}kÆá}kÆã}¢"1é}¢"Ê%~S~kÆ~kÆ~ú!Æ~"Æ~¢"¢; ~¢"Ê%!~S!~kÆ!~kÆ)~¢"Ê%A~SA~kÆA~kÆC~ë(`I~¢"Ê%a~Sa~kÆa~kÆc~ë`i~¢"Ê%~S~kÆ~kƃ~ë1a‰~¢"Ê%¡~S¡~kÆ¡~kÆ£~ëýa©~¢"Ê%Á~SÁ~kÆÁ~kÆÃ~ëZbÉ~¢"Ê%á~Sá~kÆá~kÆé~¢"Ê%SkÆkÆ ¢"Ê%!S!kÆ!kÆ)¢"Ê%ASAkÆAkÆI¢"Ê%aSakÆakÆi¢"Ê%SkÆkƃú!ƃ"ƃ¢"¢;‰¢"Ê%¡S¡kÆ¡kÆÁSÁkÆÁkÆÃërcáSákÆákÆãëÓc€S€kÆ€kÆ€ëld!€S!€kÆ!€kÆ#€ëßdA€SA€kÆA€kÆC€ëiea€Sa€kÆa€kÆc€ëÎe€S€kÆ€kÆ¡€S¡€kÆ¡€kÆÁ€SÁ€kÆÁ€kÆÉ€¢"Ê%逢"Ê% ¢"Ê%)¢"Ê%C¢"1I¢"Ê%‰¢"Ê%£¢"1©¢"Ê%â"1‚’!Ɖ‚#Љ‚¢"Ê%©‚#Щ‚¢"Ê%É‚#ÐÉ‚¢"Ê%é‚#Ðé‚¢"Ê% ƒ#Ð ƒ¢"Ê%)ƒ¢"Ê%ƒSƒkƃkÆÂ#Æâ"1モ"1„Ë Æ„Ò!Æ#„¢"1C„ú!ÆC„"ÆC„¢"T£„¢"1Á„SÄ¢"1á„S…S!…S#…¢""BA…SC…¢""Ba…Sc…¢""B…S…kÆ…kƃ…¢""B£…¢""BÃ…¢""Bã…¢"1ˆ""‘̈S¡ˆS¡ˆkÆ¡ˆkÆã‰Â"hÕã‰j#Æ㉢"1ŠÂ"hÕŠ¢"1‹ú!Æ‹"Æ‹¢"T#‹¢""B#ŒÂ"hÕ#Œj#Æ#Œ¢"1£ŒÂ"hÕ£Œ¢"1ú!Æ"Æ¢"T#¢""B#ŽÂ"hÕ#Žj#Æ#Ž¢"1CŽÂ"hÕCŽj#ÆCŽ¢"1`ŽkÆ`ŽkÆ€Žª"¿:ƒŽÂ"hÕƒŽj#ÆƒŽ¢"1 ŽkÆ ŽkÆÀŽª"Ì:ÃŽÂ"hÕÃŽj#ÆÃŽ¢"1àŽkÆàŽkÆkÆkÆÂ"hÕj#Æ¢"1 kÆ@kÆ`kÆ€kÆ kÆ£j#Æ£Â"hÕ£¢"1ÀkÆàkÆkÆ kÆ kÆ@kÆ@kÆASAkÆAkÆ`kÆ`kÆ€kÆ€kÆ kÆ kÆÀkÆÀkÆàkÆàkÆ‘kÆ‘kÆ‘S‘kÆ‘kÆ ‘kÆ ‘kÆ@‘ª"²:`‘kÆ`‘kÆ€‘ª"¿:ƒ‘¢""B ‘kÆ ‘kÆÀ‘ª"Ì:Á‘SÁ‘kÆÁ‘kÆà‘kÆà‘kÆ’kÆ’kÆ ’kÆ!’S!’kÆ!’kÆ@’kÆC’¢""B`’kÆc’¢""B€’kƃ’¢""B ’kÆ£’¢""BÀ’kÆà’kÆ“kÆ “kÆ “kÆ@“kÆ@“kÆ`“kÆ`“kÆ€“kÆ€“kÆ “kÆ “kÆ£“¢""BÀ“kÆÀ“kÆÓ¢""Bà“kÆà“kÆ”kÆ”kÆ ”kÆ ”kÆ@”kÆ@”kÆ`”kÆ`”kÆ€”kÆ€”kƃ”¢""B ”kÆ ”kÆ£”¢""BÀ”ª"¥:Ô¢""Bà”kÆà”kÆã”j#Æ㔢"1•ª"²:•2"Æ•"Æ•ú!Æ•¢""! •kÆ •kÆ#•¢""B@•ª"¿:C•¢""B`•kÆ`•kÆc•¢""B€•ª"Ì:ƒ•ú!ƃ•"ƃ•¢"¢; •kÆ •kÆÀ•kÆÀ•kÆà•kÆ–kÆ–¢""! –kÆ!–S!–kÆ!–kÆ#–j!Æ#–¢""!@–kÆC–j!ÆC–¢""!`–kÆa–Sa–kÆa–kÆ€–kÆ–S–kÆ–kÆ –kÆÀ–kÆÖ¢""Bà–kÆà–kÆ—kÆ—kÆ—S—kÆ—kÆ —kÆ —kÆ@—kÆ@—kÆC—¢""B`—kÆ`—kÆc—¢""B€—kÆ€—kÆ—S—kÆ—kƃ—¢"1 —kÆ —kÆ£—ú!Æ£—"Æ£—¢"¢;À—kÆÀ—kÆà—kÆà—kÆã—ëFϘkƘkƘëŽÏ ˜kÆ ˜kÆ!˜S!˜kÆ!˜kÆ#˜ëêÏ@˜kÆ@˜kÆ`˜kÆ`˜kÆ€˜kÆ€˜kÆ ˜kÆ ˜kÆ£˜¢""!À˜kÆÀ˜kÆØ¢""!à˜kÆà˜kÆ™ª"˜: ™kÆ ™kÆ#™j!Æ#™¢""!@™ª"¥:C™¢""!`™kÆ`™kÆ€™ª"²: ™kÆ ™kÆ£™¢"1À™ª"¿:Ù¢""Bà™kÆà™kÆã™j!Æ㙢""!šª"Ì:šú!Æš"Æš¢"¢; škÆ škÆ@škÆ@škÆCšr!ÆCš¢""!`škÆcš¢""B€škƃš¢""B škÆ£š¢""BÀškÆÚ¢""BàškÆášSáškÆáškÆ㚢""B›kÆ›S›kÆ›kÆ›¢""B ›kÆ!›S!›kÆ!›kÆ@›kÆA›SA›kÆA›kÆC›¢""B`›kÆ`›kÆa›Sa›kÆa›kÆc›¢""B€›kÆ€›kÆ›S›kÆ›kƃ›j!ƃ›¢""! ›kÆ ›kÆ£›j!Æ£›¢""!À›kÆÀ›kÆÛ¢""Bà›kÆà›kÆœkÆœkÆœ¢""B œkÆ œkÆ#œ¢"1@œkÆ@œkÆCœ¢""B`œkÆ`œkÆcœ¢"1€œkÆ€œkƃœ¢""B œkÆ œkÆ£œ¢""BÀœkÆÀœkÆÜ¢""BàœkÆàœkÆ㜢""BkÆkÆ kÆ kÆ#Â"hÕ#¢"1@kÆ@kÆ`kÆ`kÆaSakÆakÆcÂ"hÕcj#Æc¢"1€kÆ€kÆ kÆ kÆÀkÆÀkÆàkÆàkÆžª"‹: žkÆ žkÆ#ž¢"1@žª"˜:Cž¢"1`žkÆ`žkÆažSažkÆažkÆcž¢"1€žª"¥:žSžkÆžkÆ žkÆ žkÆ£ž‚#Æ£ž¢"1Àžª"²:ÁžSÁžkÆÁžkÆÞ‚#ÆÞ¢"1àžkÆàžkÆŸª"¿: ŸkÆ ŸkÆ!ŸS!ŸkÆ!ŸkÆ@Ÿª"Ì:AŸSAŸkÆAŸkÆ`ŸkÆ`ŸkÆ€ŸkÆ€ŸkÆ ŸkÆ£Ÿ¢"1ÀŸkÆߢ""!àŸkÆãŸr!Æ㟢""! kÆ S kÆ kÆ ¢""!  kÆ! S! kÆ! kÆ# ¢""!@ kÆC r!ÆC ¢""!` kÆc r!Æc ¢""!€ kÆ  kÆ  kÆ£ ¢""BÀ kÆÀ kÆà¢""Bà kÆà kÆ¡kÆ¡kÆ¡¢""B ¡kÆ ¡kÆ#¡¢""B@¡kÆ@¡kÆ`¡kÆ`¡kÆc¡¢""B€¡kÆ€¡kƃ¡¢""B ¡kÆ ¡kÆÀ¡kÆÀ¡kÆá¢""Bà¡kÆà¡kÆã¡¢""B¢kÆ¢kÆ ¢kÆ ¢kÆ#¢¢""B@¢kÆ@¢kÆC¢¢""B`¢kÆ`¢kÆ€¢kÆ€¢kƃ¢¢""B ¢kÆ ¢kÆ£¢¢""BÀ¢kÆÀ¢kÆà¢kÆà¢kÆ㢢""B£kÆ£kÆ£¢""B £kÆ £kÆ@£kÆ@£kÆC£¢""B`£kÆ`£kÆc£¢""B€£kÆ€£kÆ £kÆ £kÆ££¢""BÀ£ª"~:ã¢""Bà£kÆà£kƤª"‹:¤¢""B ¤kÆ ¤kÆ#¤¢""B@¤ª"˜:C¤¢""B`¤kÆ`¤kÆc¤¢""B€¤ª"¥:¤Z"ƤSƒ¤¢""B ¤kÆ ¤kÆ¡¤Z"Æ¡¤S£¤¢""BÀ¤ª"²:Á¤Z"ÆÁ¤Sä¢""Bà¤kÆà¤kÆá¤Z"Æá¤S㤢""B¥ª"¿:¥S¥¢""B ¥kÆ ¥kÆ!¥S#¥¢""B@¥ª"Ì:A¥SC¥¢""B`¥kÆ`¥kÆa¥Sc¥¢""B€¥kÆ€¥kÆ¥S¥kÆ¥kƃ¥¢""B ¥kÆ£¥¢""BÀ¥kÆà¥kƦkƦ¢""! ¦kÆ@¦kÆ`¦kÆ€¦kÆ„¦R#Æ ¦kÆ ¦kÆÀ¦kÆÀ¦kÆÁ¦SÁ¦kÆÁ¦kÆĦR#Æà¦kÆà¦kÆá¦Sá¦kÆá¦kƧkƧkƧS§kƧkÆ §kÆ §kÆ@§kÆ@§kÆ`§kÆ`§kÆa§Sa§kÆa§kÆ€§kÆ€§kƧS§kƧkÆ §kÆ §kÆÀ§kÆÀ§kÆÁ§SÁ§kÆÁ§kÆà§kÆà§kÆä§R#ƨkƨkÆ ¨kÆ ¨kÆ#¨¢""!$¨R#Æ@¨kÆ@¨kÆ`¨kÆ`¨kÆd¨R#Æ€¨kÆ€¨kÆ ¨kÆ ¨kÆ¡¨S¡¨kÆ¡¨kƤ¨R#ÆÀ¨kÆÀ¨kÆè¢""!à¨kÆà¨kÆ©kÆ©kÆ ©kÆ ©kÆ$©R#Æ@©kÆ@©kÆ`©kÆ`©kÆa©Sa©kÆa©kÆc©¢""!€©kÆ€©kÆ ©kÆ ©kƤ©R#ÆÀ©kÆÀ©kÆà©kÆà©kƪkƪkƪ¢""!ªR#Æ!ªS!ªkÆ!ªkÆDªR#Æ„ªR#ÆàªkÆ㪢""!«kÆ «kÆ`«kÆ€«kƃ«¢""!#¬¢""!d¬R#Ƥ¬R#Æì¢""!ä¬R#ÆD­R#Æc­¢""!„­R#ÆÄ­R#Æ®¢""!®R#Æ@®kÆD®R#Æ`®kÆ€®kÆ ®kÆÀ®kÆà®kƯS¯kƯkÆ@¯kÆ`¯kÆ€¯kÆ€¯kÆ ¯ª"¿:À¯ª"Ì:à¯kÆà¯kưkưkÆ °kÆ °kÆ#°¢""!@°kÆ`°kÆ€°kÆ °kÆÀ°kÆð¢""!à°kÆ`±kÆc±¢""!€±kÆÀ±kÆÀ±kÆ౪"¿:²kƲkƲ¢""! ²ª"Ì:!²S!²kÆ!²kÆ@²kÆ@²kÆA²SA²kÆA²kÆ`²kÆ`²kÆ€²kÆ€²kÆ ²kÆ ²kÆ£²¢""!À²kÆÀ²kÆà²kÆá²Sá²kÆá²kƳkÆ ³kÆ@³kÆC³¢""!`³kÆ€³kÆ ³kÆ¡³S¡³kÆ¡³kÆÀ³kÆã³¢""!A´SA´kÆA´kƃ´¢""!á´Sá´kÆá´kÆ µâ" ' µkÆ#µ¢""!õ¢""!£¶¢"1ö¢"1ã¶¢"1·¢"1#·¢""!C·¢"1c·r!Æc·¢""!£·¢""BÁ·SÁ·kÆÁ·kÆ÷r!Æ÷¢""!¸S¸kƸkƸ¢""B!¸S!¸kÆ!¸kÆ#¸¢""BA¸SA¸kÆA¸kÆC¸r!ÆC¸¢""!a¸Sa¸kÆa¸kÆc¸¢""B¸S¸kƸkƃ¸¢""B¡¸S¡¸kÆ¡¸kÆ£¸¢""Bã¸r!Æ㸢""!#¹¢""BC¹¢""Bc¹¢""B¹S¹kƹkƃ¹¢""B¡¹S¡¹kÆ¡¹kÆ£¹¢"1Á¹SÁ¹kÆÁ¹kÆù¢""Bá¹Sá¹kÆá¹kÆã¹¢""Bº¢""B ºkÆ ºkÆ#º¢""B@ºª"²:AºSAºkÆAºkÆCº¢""B`ºª"¿:aºSaºkÆaºkÆcº¢""B€ºª"Ì:ºSºkƺkƃº¢""B ºkÆ ºkÆ¡ºS¡ºkÆ¡ºkÆ£º¢""BÀºkÆÀºkÆú¢""BàºkÆàºkÆ㺢""B»kÆ»kÆ»¢""B »kÆ »kÆ#»¢""B@»kÆ@»kÆC»¢""B`»kÆ`»kÆc»¢""B€»kÆ€»kƃ»¢""B »kÆ »kÆ£»¢""BÀ»kÆÀ»kÆû¢""Bà»kÆà»kÆ㻢""!¼kƼkƼ¢""B ¼kÆ ¼kÆ#¼¢""B@¼kÆ@¼kÆC¼¢""!`¼kÆ`¼kÆc¼¢""!€¼kÆ€¼kƃ¼¢""! ¼kÆ ¼kÆÀ¼kÆÀ¼kÆà¼kÆà¼kÆ@½KÆ`½SÆc½¢""!ĽR#Æ¿S¿kÆ¿kÆ ¿â" '!¿S!¿kÆ!¿kÆ@¿â"7a¿Sa¿kÆa¿kÆ¿S¿kÆ¿kÆÿ¢""!á¿Sá¿kÆá¿kÆÀS!ÀSAÀSÀSÀkÆÀkÆC¢""!aÂSaÂkÆaÂkÆÂSÂkÆÂkÆ¡ÂS¡ÂkÆ¡ÂkÆáÂSáÂkÆáÂkÆÃSÃkÆÃkÆ!ÃS!ÃkÆ!ÃkÆAÃSAÃkÆAÃkÆaÃSaÃkÆaÃkÆÃSÃkÆÃkÆ¡ÃS¡ÃkÆ¡ÃkÆÁÃSÁÃkÆÁÃkÆáÃSáÃkÆáÃkÆÄSÄkÆÄkÆ ÄkÆ ÄkÆ!ÄS!ÄkÆ!ÄkÆ@Ī"²:AÄSAÄkÆAÄkÆ`Ī"¿:aÄSaÄkÆaÄkƀĪ"Ì:ÄSÄkÆÄkÆ ÄkÆ ÄkÆ¡ÄS¡ÄkÆ¡ÄkƣĢ""!ÀÄkÆÀÄkÆÁÄSÁÄkÆÁÄkÆàÄkÆàÄkÆÅkÆÅkÆ ÅkÆ ÅkÆ@ÅkÆ@ÅkÆ`ÅkÆ`ÅkÆaÅSaÅkÆaÅkÆ€ÅkÆ€ÅkÆÅSÅkÆÅkÆ ÅkÆ ÅkÆ¡ÅS¡ÅkÆ¡ÅkÆÀÅkÆÀÅkÆÁÅSÁÅkÆÁÅkÆàÅkÆàÅkÆáÅSáÅkÆáÅkÆÆkÆÆkÆÆSÆkÆÆkÆ ÆkÆ ÆkÆ!ÆS!ÆkÆ!ÆkÆ@ÆkÆ@ÆkÆAÆSAÆkÆAÆkÆ`ÆkÆ`ÆkÆaÆSaÆkÆaÆkÆÆSÆkÆÆkÆ¡ÆS¡ÆkÆ¡ÆkÆÀÆKÆÁÆSÁÆkÆÁÆkÆàÆSÆáÆSáÆkÆáÆkÆÇSÇkÆÇkÆÇ¢"1!ÇS!ÇkÆ!ÇkÆ#Ç¢""!CÇ¢""BcÇ¢""BƒÇ¢""!£Ç¢""!ÃÇ¢""!ãÇ¢"1Èâ" 'ÈSÈkÆÈkÆÈ¢""!!ÈS!ÈkÆ!ÈkÆ#È¢"1AÈSAÈkÆAÈkÆCÈ¢"1aÈSaÈkÆaÈkÆcÈ¢"1ÈSÈkÆÈkƃȢ"1¡ÈS¡ÈkÆ¡ÈkÆÁÈSÁÈkÆÁÈkÆáÈSáÈkÆáÈkÆãÈ¢""BÉSÉkÆÉkÆ#É¢""BÊ¢"1ÊSÊkÆÊkÆ¡ÊS¡ÊkÆ¡ÊkÆÁÊSÁÊkÆÁÊkÆ!ËS!ËkÆ!ËkÆAËSaËSËS¡ËS¡ËkÆ¡ËkÆÌS!ÌSAÌSaÌSÌS¡ÌSÁÌSáÌSÍSÍkÆÍkÆ¡ÎSÁÎSáÎSÑSÑkÆÑkÆ!ÑS!ÑkÆ!ÑkÆaÑSaÑkÆaÑkÆÑSÑkÆÑkÆÁÑSÁÑkÆÁÑkÆÄÑR#ÆáÑSáÑkÆáÑkÆÒR#Æ!ÒS!ÒkÆ!ÒkÆAÒSAÒkÆAÒkÆÒSÒkÆÒkÆ„ÒR#Æ¡ÒS¡ÒkÆ¡ÒkÆáÒSáÒkÆáÒkÆäÒR#ÆÓSÓkÆÓkÆAÓSAÓkÆAÓkÆaÓSaÓkÆaÓkÆ¡ÓS¡ÓkÆ¡ÓkÆÔSÔkÆÔkÆaÔSaÔkÆaÔkÆÁÔSÁÔkÆÁÔkÆ!ÕS!ÕkÆ!ÕkÆAÕSAÕkÆAÕkÆÕSÕkÆÕkÆ¡ÕS¡ÕkÆ¡ÕkÆáÕSáÕkÆáÕkÆÖSÖkÆÖkÆAÖSAÖkÆAÖkÆaÖSaÖkÆaÖkÆ¡ÖS¡ÖkÆ¡ÖkÆÁÖSÁÖkÆÁÖkÆáÖSáÖkÆáÖkÆ×S×kÆ×kÆ!ØS!ØkÆ!ØkÆAØSAØkÆAØkÆaØSaØkÆaØkÆØS¡ØSÁØSáØSáØkÆáØkÆÙSÙkÆÙkÆ!ÙS!ÙkÆ!ÙkÆAÙSAÙkÆAÙkÆáÙSáÙkÆáÙkÆÚSÚkÆÚkÆ!ÚS!ÚkÆ!ÚkÆÚSÚkÆÚkÆáÚSáÚkÆáÚkÆÛSÛkÆÛkÆ!ÛS!ÛkÆ!ÛkÆAÛSAÛkÆAÛkÆaÛSaÛkÆaÛkÆÛSÛkÆÛkÆ¡ÛS¡ÛkÆ¡ÛkÆáÛSáÛkÆáÛkÆÜSÜkÆÜkÆAÜSAÜkÆAÜkÆ`ÜkÆ`ÜkÆaÜSaÜkÆaÜkƀܪ"²:ÜSÜkÆÜkÆ ÜkÆ ÜkÆ¡ÜS¡ÜkÆ¡ÜkÆÀܪ"¿:ÁÜSÁÜkÆÁÜkÆàÜkÆàÜkÆáÜSáÜkÆáÜkÆݪ"Ì:ÝSÝkÆÝkÆ ÝkÆ ÝkÆ!ÝS!ÝkÆ!ÝkÆ@ÝkÆ@ÝkÆAÝSAÝkÆAÝkÆ`ÝkÆaÝSaÝkÆaÝkÆ€ÝkÆÝSÝkÆÝkÆ ÝkÆÀÝkÆàÝkÆÞkÆÞkÆÞSÞkÆÞkÆ ÞkÆ ÞkÆ!ÞS!ÞkÆ!ÞkÆ@ÞkÆ@ÞkÆAÞSAÞkÆAÞkÆ`ÞkÆ`ÞkÆaÞSaÞkÆaÞkÆ€ÞkÆ€ÞkÆÞSÞkÆÞkÆ ÞkÆ ÞkÆÀÞkÆÀÞkÆÁÞSÁÞkÆÁÞkÆàÞkÆàÞkÆáÞSáÞkÆáÞkÆßkÆßkÆ ßkÆ ßkÆ@ßkÆ@ßkÆ`ߪ"²:€ßkÆ€ßkƠߪ"¿:ÀßkÆÀßkÆàߪ"Ì:àkÆàkÆ àkÆ àkÆ!àS!àkÆ!àkÆ@àkÆ@àkÆAàSAàkÆAàkÆ`àkÆ`àkÆaàSaàkÆaàkÆ€àkÆ€àkÆàSàkÆàkÆ àkÆ àkÆ¡àS¡àkÆ¡àkƤàR#ÆÀàkÆÀàkÆÁàSÁàkÆÁàkÆÄàR#ÆààkÆààkÆáàSáàkÆáàkÆákÆákÆáSákÆákÆáR#Æ ákÆ ákÆ!áS!ákÆ!ákÆ@ákÆ@ákÆ`ákÆ`ákÆ€ákÆ€ákÆáSákÆákÆ ákÆ ákÆ¡áS¡ákÆ¡ákÆÀákÆÀákÆÁáSÁákÆÁákÆÄáR#ÆàákÆàákÆááSáákÆáákÆâkÆâkÆâSâkÆâkÆâR#Æ âkÆ âkÆ@âkÆ@âkÆ`âkÆ`âkÆaâSaâkÆaâkÆdâR#Æ€âkÆ€âkÆâSâkÆâkÆ âkÆ âkÆ¡âS¡âkÆ¡âkƤâR#ÆÀâkÆÀâkÆÁâSÁâkÆÁâkÆàâkÆàâkÆáâSáâkÆáâkÆãkÆãkÆãSãkÆãkÆ ãkÆ ãkÆ!ãS!ãkÆ!ãkÆ@ãkÆ@ãkÆ`ãkÆ`ãkÆ€ãkÆ€ãkÆ ãkÆ ãkÆ¡ãS¡ãkÆ¡ãkƤãR#ÆÀãkÆÀãkÆÁãSÁãkÆÁãkÆàãkÆàãkÆ$äR#Æ¡äS¡äkÆ¡äkÆÁäSÁäkÆÁäkÆÄäR#ÆáäSáäkÆáäkÆåSåkÆåkÆ!åS!åkÆ!åkÆAåSAåkÆAåkÆaåSaåkÆaåkÆåSåkÆåkÆ„åR#Æ¡åS¡åkÆ¡åkÆÁåSÁåkÆÁåkÆáåSáåkÆáåkÆäåR#ÆæSækÆækÆ!æS!ækÆ!ækÆDæR#Æ!çS!çkÆ!çkÆAçSAçkÆAçkÆaçSaçkÆaçkÆçSçkÆçkÆ çkÆ çkÆ¡çS¡çkÆ¡çkÆÀçª"¥:ÁçSÁçkÆÁçkÆàçkÆàçkÆáçSáçkÆáçkÆèª"²:èSèkÆèkÆ èkÆ èkÆ!èS!èkÆ!èkÆ@èª"¿:AèSAèkÆAèkÆ`èkÆ`èkÆaèSaèkÆaèkÆ€èª"Ì:èSèkÆèkÆ èkÆ èkÆ¡èS¡èkÆ¡èkÆÀèkÆÀèkÆÁèSÁèkÆÁèkÆàèkÆékÆéS ékÆ!éS$éR#Æ@ékÆAéS`ékÆaéS€ékÆ€ékÆéS ékÆ ékÆ¡éSÀékÆÀékÆÁéSàékÆàékÆáéSäéR#ÆêkÆêkÆêS êkÆ êkÆ!êS$êR#Æ@êkÆ@êkÆAêS`êkÆ`êkÆaêSaêkÆaêkÆdêR#Æ€êkÆ€êkÆêS êkÆ êkÆ¡êS¤êR#ÆÀêkÆÀêkÆÁêSÄêR#ÆàêkÆàêkÆáêSäêR#ÆëkÆëkÆëSëkÆëkÆ ëkÆ ëkÆ!ëS$ëR#Æ@ëkÆ@ëkÆAëS`ëkÆ`ëkÆaëSdëR#Æ€ëkÆ€ëkÆëS ëkÆ ëkÆ¡ëS¤ëR#ÆÀëkÆÀëkÆÁëSàëkÆàëkÆáëSìkÆìkÆìS ìkÆ ìkÆ!ìSAìS`ìkÆ`ìkÆaìS€ìª"ø©ìS ìkÆ ìkÆ¡ìSÀìª"ªÁìSàìkÆàìkÆáìSíª"!ªíS íkÆ íkÆ!íS@íª".ªAíS`íkÆ`íkÆaíS€íª";ªíS íkÆ íkÆ¡íSÀíª"HªÁíSàíkÆàíkÆáíSîª"UªîS îkÆ îkÆ!îS@îª"bªAîS`îkÆ`îkÆaîS€îª"oªîS îkÆ îkÆ¡îSÀîª"|ªÁîSàîkÆàîkÆáîSáîkÆáîkÆïª"‰ª ïkÆ ïkÆ@ïª">`ïkÆ`ïkÆ€ïª"$> ïkÆ ïkÆÀïª"“9àïkÆàïkÆðª" 9 ðkÆ ðkÆ!ðS!ðkÆ!ðkÆ@ðª"»9`ðkÆ`ðkÆ€ðª"Ï9 ðkÆ ðkÆÀðª"Ü9àðkÆàðkÆñª"ï9 ñkÆ ñkÆ@ñª"ü9`ñkÆ`ñkÆ€ñª" : ñkÆ ñkÆÀñª":àñkÆàñkÆòª"#: òkÆ òkÆ@òª"0:`òkÆ`òkÆ€òª"=: òkÆ òkÆÀòª"J:àòkÆàòkÆáòSóª"W:óS ókÆ ókÆ!óS@óª"d:AóS`ókÆ`ókÆaóS€óª"q:óS ókÆ ókÆ¡óSÀóª"~:ÁóSàókÆàókÆáóSôª"‹:ôS ôkÆ ôkÆ!ôS@ôª"˜:AôS`ôkÆ`ôkÆaôS€ôª"¥:ôS ôkÆ ôkÆ¡ôSÀôª"²:ÁôSàôkÆàôkÆáôSõª"¿:õS õkÆ õkÆ!õS@õª"Ì:AõS`õkÆ`õkÆaõS€õkÆ€õkÆõSõkÆõkÆ õkÆÀõkÆàõkÆökÆ ökÆ@ökÆ@ökÆ`ökÆ`ökÆ€ökÆ€ökÆ ökÆ ökÆÀökÆÀökÆàökÆàökÆ÷kÆ÷kÆ ÷kÆ ÷kÆ@÷kÆ@÷kÆA÷S`÷kÆ`÷kÆa÷S€÷kÆ€÷kÆ ÷kÆ ÷kÆÀ÷kÆÀ÷kÆà÷kÆà÷kÆøkÆøkÆ økÆ økÆ@økÆ@økÆ`økÆ`økÆ€økÆ€økÆ økÆ økÆÀøkÆÀøkÆàøkÆàøkÆùkÆùkÆ ùkÆ ùkÆ!ùS@ùkÆ@ùkÆAùS`ùkÆ`ùkÆ€ùkÆ€ùkÆ ùkÆ ùkÆÀùkÆÀùkÆàùkÆàùkÆúkÆúkÆ úkÆ úkÆ@úkÆ@úkÆ`úkÆ`úkÆ€úkÆ€úkÆ úkÆ úkÆÀúkÆÀúkÆàúkÆàúkÆûkÆûkÆ ûkÆ ûkÆ@ûkÆ@ûkÆ`ûkÆ`ûkÆ€ûkÆ€ûkÆ ûkÆ ûkÆÀûkÆÀûkÆàûkÆàûkÆükÆükÆ ükÆ ükÆ@ükÆ@ükÆ`ükÆ`ükÆ€ükÆ€ükÆ ükÆ ükÆÀükÆÀükÆàükÆàükÆýkÆýkÆ ýkÆ ýkÆ@ýkÆ@ýkÆAýSAýkÆAýkÆ`ýkÆ`ýkÆaýSaýkÆaýkÆ€ýkÆ€ýkÆýSýkÆýkÆ ýkÆ ýkÆ¡ýS¡ýkÆ¡ýkÆÀýkÆÀýkÆàýkÆàýkÆþkÆþkÆ þkÆ þkÆ@þkÆ@þkÆ`þkÆ`þkÆ€þkÆ€þkÆ þkÆ þkÆÀþkÆÀþkÆàþkÆàþkÆÿkÆÿkÆÿSÿkÆÿkÆ ÿkÆ ÿkÆ!ÿS!ÿkÆ!ÿkÆ@ÿkÆ@ÿkÆ`ÿkÆ`ÿkÆ€ÿkÆ€ÿkÆ ÿkÆ ÿkÆÀÿkÆÀÿkÆÁÿSÁÿkÆÁÿkÆàÿkÆàÿkÆáÿSáÿkÆáÿkÆkÆkÆ kÆ kÆ@kÆ@kÆ`kÆ`kÆ€kÆ€kÆ kÆ kÆ¡S¡kÆ¡kÆÀkÆÀkÆÁSÁkÆÁkÆàkÆàkÆkÆkÆ kÆ kÆ@kÆ@kÆ`kÆ`kÆ€kÆ€kÆ kÆ kÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆáSákÆákÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆáSákÆákÆaSakÆakÆSkÆkÆSkÆkÆ!S!kÆ!kÆASAkÆAkÆaSakÆakÆ!S!kÆ!kÆASAkÆAkÆÁSÁkÆÁkÆ R#Æ$ R#ÆÄ R#Æä R#Æ$ R#Æa Â!=á Sá kÆá kÆa Sa kÆa kÆ S kÆ kÆ¡ S¡ kÆ¡ kÆÁ SÁ kÆÁ kÆá Sá kÆá kÆ`kÆ@kÆ@kÆASAkÆAkÆ`ª"Ì:€kÆ€kÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆáSákÆákÆSkÆkÆ kÆ¡Â!=â" ' kÆàª"Ì:áSákÆákÆkÆkÆSkÆkÆ kÆ kÆ@kÆ@kÆASAkÆAkÆáSákÆákÆSkÆkÆ!S!kÆ!kÆASAkÆAkÆaSakÆakÆáSákÆákÆSkÆkÆ!S!kÆ!kÆASAkÆAkÆaSakÆakÆSkÆkÆSkÆkÆ!S!kÆ!kÆASAkÆAkÆaSakÆakÆSkÆkÆ„R#Æ¡S¡kÆ¡kÆ!S!kÆ!kÆASAkÆAkÆ`kÆaSakÆakÆ€kÆSkÆkÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆASAkÆAkÆ`ª!ÆaSakÆakÆ€ª!ÆSkÆkÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆáSákÆákÆaSakÆakÆSkÆkÆ¡S¡kÆ¡kÆÁSÁkÆÁkÆáSákÆákÆSkÆkÆ kÆ kÆ@kÆ@kÆ`kÆ`kÆ€kÆ€kÆSkÆkÆ kÆ kÆ¡S¡kÆ¡kÆÀ²"»ÌÁSÁkÆÁkÆà²"ÎáSákÆákÆ S kÆ kÆ kÆ! S! kÆ! kÆ@ ²"¥Î` ²"Ä΀ ²"äΠ â" '  ²" Ï¡ S¡ kÆ¡ kÆÀ ²"/ÏÁ SÁ kÆÁ kÆà ²";Ïá Sá kÆá kÆ!â" '!²"HÏ!S!kÆ!kÆ !²"VÏ!!S!!kÆ!!kÆ@!²"cÏA!SA!kÆA!kÆ€!²"ƒÏ !²"–ÏÀ!²"©ÏÁ!SÁ!kÆÁ!kÆà!²"»Ïá!Sá!kÆá!kÆ"²"ÝÏ"S"kÆ"kÆ "²"õÏ!"S!"kÆ!"kÆ@"²" ÐA"SA"kÆA"kÆa"Sa"kÆa"kÆá"Sá"kÆá"kÆ#S#kÆ#kÆ!#S!#kÆ!#kÆA#SA#kÆA#kÆa#Sa#kÆa#kÆ#S#kÆ#kÆ$S$kÆ$kÆ!$S!$kÆ!$kÆA$SA$kÆA$kÆS$z!Æa$Sa$kÆa$kÆ$S$kÆ$kÆ“$z!Æ¡$S¡$kÆ¡$kÆÁ$SÁ$kÆÁ$kÆÓ$z!Æá$Sá$kÆá$kÆó$z!Æ%S%kÆ%kÆ!%S!%kÆ!%kÆA%SA%kÆA%kÆÁ%SÁ%kÆÁ%kÆá%Sá%kÆá%kÆ&S&kÆ&kÆ!&S!&kÆ!&kÆA&SA&kÆA&kÆa&Sa&kÆa&kÆ&S&kÆ&kÆ¡&S¡&kÆ¡&kÆÁ&SÁ&kÆÁ&kÆá&Sá&kÆá&kÆ'â" ''²"¸Ò 'kÆ@'â" '@'²"Ó`'â" '`'²"`Óa'Sa'kÆa'kÆ€'â" '€'²"®Ó'S'kÆ'kÆ 'â"ä5 '²"Ô¡'S¡'kÆ¡'kÆÀ'â" 'À'²"-ÔÁ'SÁ'kÆÁ'kÆà'â" 'à'²"MÔá'Sá'kÆá'kÆ(²"ˆÔ (â" ' (²"ÉÔ@(â" '@(²"]Õ(S(kÆ(kÆ¡(S¡(kÆ¡(kÆÁ(SÁ(kÆÁ(kÆá(Sá(kÆá(kÆ)S)kÆ)kÆ!)S!)kÆ!)kÆá)Sá)kÆá)kÆ*S*kÆ*kÆ!*S!*kÆ!*kÆA*SA*kÆA*kÆ¡*S¡*kÆ¡*kÆ!+S!+kÆ!+kÆA+SA+kÆA+kÆa+Sa+kÆa+kÆ+S+kÆ+kÆ¡+S¡+kÆ¡+kÆÁ+SÁ+kÆÁ+kÆá+Sá+kÆá+kÆ,S,kÆ,kÆA,SA,kÆA,kÆa,Sa,kÆa,kÆ¡,S¡,kÆ¡,kÆÁ,SÁ,kÆÁ,kÆ-S-kÆ-kÆ!-S!-kÆ!-kÆa-Sa-kÆa-kÆ-S-kÆ-kÆ¡-S¡-kÆ¡-kÆÁ-SÁ-kÆÁ-kÆ.S.kÆ.kÆ!.S!.kÆ!.kÆa.Sa.kÆa.kÆ.S.kÆ.kÆÀ.â" 'À.²"¸ÒÁ.SÁ.kÆÁ.kÆà.â" 'à.²"`Óá.Sá.kÆá.kÆ/â" '/²"®Ó /â" ' /²"Ó!/S!/kÆ!/kÆ@/â"ä5@/²"ÔA/SA/kÆA/kÆ`/â" '`/²"-Ô€/²"ˆÔ/S/kÆ/kÆ /â" ' /²"ÉÔ¡/S¡/kÆ¡/kÆÀ/â" 'À/²"]Õá/Sá/kÆá/kÆ0S0kÆ0kÆ!0S!0kÆ!0kÆA0SA0kÆA0kÆa0Sa0kÆa0kÆ0S0kÆ0kÆ¡0S¡0kÆ¡0kÆÁ0SÁ0kÆÁ0kÆ1S1kÆ1kÆ!1S!1kÆ!1kÆa1Sa1kÆa1kÆ1S1kÆ1kÆÁ1SÁ1kÆÁ1kÆá1Sá1kÆá1kÆ 2â"TŒ 2²"ëÞ!2S!2kÆ!2kÆ@2â" '@2²"(ßA2SA2kÆA2kÆ2S2kÆ2kÆ¡2S¡2kÆ¡2kÆá2Sá2kÆá2kÆ3S3kÆ3kÆA3SA3kÆA3kÆa3Sa3kÆa3kÆ¡3S¡3kÆ¡3kÆÁ3SÁ3kÆÁ3kÆ4S4kÆ4kÆ!4S!4kÆ!4kÆa4Sa4kÆa4kÆ4S4kÆ4kÆ¡4S¡4kÆ¡4kÆÁ4SÁ4kÆÁ4kÆ 7â"¡á 7²"²áÀ7â" 'À7²"²áà7â"¡áà7²"ýá8â" '8²" â 8²"â@8â" '@8²"EâA8SA8kÆA8kÆ`8â" '`8²"uâa8Sa8kÆa8kÆ8S8kÆ8kÆÁ8SÁ8kÆÁ8kÆá8Sá8kÆá8kÆ!9S!9kÆ!9kÆA9SA9kÆA9kÆ9S9kÆ9kÆ¡9S¡9kÆ¡9kÆá9Sá9kÆá9kÆ:S:kÆ:kÆA:SA:kÆA:kÆa:Sa:kÆa:kÆ¡:S¡:kÆ¡:kÆÁ:SÁ:kÆÁ:kÆ;S;kÆ;kÆ!;S!;kÆ!;kÆa;Sa;kÆa;kÆ;S;kÆ;kÆá;Ò!Æ!<#Ð!<SA<#ÐA<Sa<#Ða<S<#Ð<S¡<#С<SÁ<Sá<S=S!=SA=Sa=S=S¡=SÁ=Sá=S>S!>SA>Sa>S>S¡>SÁ>Sá>S?S!?SA?Sa?S?S¡?SÁ?Sá?Sá?kÆá?kÆ@â"ä5`@kÆ€@kÆ @kÆÀ@kÆAASaASaAkÆaAkÆ`Gâ"¯]€Gâ"¯]àGâ" 'Hâ" ' Hâ" '@Hâ" '`Hâ" 'ÀHâ" 'àHâ" 'Iâ" ' Iâ" '@IkÆ@IkÆ`Iª"²:€IkÆ€IkÆ Iª"¿:ÀIkÆÀIkÆàIª"Ì:JkÆJkÆ JkÆ JkÆ@JkÆ@JkÆ`JkÆ`JkÆ€JkÆ€JkÆ JkÆ JkÆÀJkÆÀJkÆàJkÆàJkÆKkÆKkÆ KkÆ KkÆ@KkÆ@KkÆ`KkÆ`KkÆ€KkÆ€KkÆ KkÆ KkÆ TkÆÀTkÆUkÆ@UkÆ UkÆàUkÆ€VkÆ VkÆ@qB#Æ@qJ#Æ@q²"c`qB#Æ`qJ#Æ`q²"t€qB#Æ€qJ#Æ€qâ" '€q²"-Ô qB#Æ qJ#Æ qâ" ' q²"”ÀqB#ÆÀqJ#ÆÀqâ"ä5Àq²"»ÌàqB#ÆàqJ#Æàq²"­rB#ÆrJ#Ærâ" 'r²"¿ rB#Æ rJ#Æ r²"Ѐr²"Y r²"«Àr²"Ðàr²"s²"5 s²"[@s²"`s²"¼€s²"î s²"!Às²"Gàs²"st²"¤ t²"Ô@t²" Àt²"V àt²"‡ u²"  u²"& @u²"` `u²"v €u²"°  u²"ß `wkÆ`wkÆ€wkÆ€wkÆÀwâ" '`x²"<€x²"z x²"´Àx²"ïàx²"Qy²"‰ y²"¾@y²")`y²"•€y²"  y²"QÀy²"®ày²"Ùz²" z²"2@z²"F`z²"ø€z²". z²"wÀz²"œàz²"Ä{²"× {²"e@{²"‚`{²"€{²" {²"ŽÀ{²"à{²"~|²"×`|²"*€|â" ' |²" À|²"½€}â" 'À}â" 'à}â":~â"¡á ~â"7@~â"7`~â" ' ~â" 'à‚kÆà‚kƃâ" ' ƒâ" ' „â" 'à„â" '€…â" '@†â" 'à†â" '‰â" ' ‰â"ä5`‰â"ä5Škƨª"Ì: ¨kÆ ¨kÆ@¨kÆ@¨kÆ`¨kÆ`¨kÆ€¨kÆ€¨kÆ ¨kÆÀ¨kÆà¨kÆ ©kÆ@©kÆ`©ª"Ì:€©kÆ€©kÆ ©kÆ ©kÆÀ©kÆÀ©kÆà«â" '¬â"ä5 ¬â"ä5`­â" ' ­â" 'À­â":à­â":®kÆ®kÆ ®kÆ ®kÆ@®kÆ@®kÆ`®kÆ`®kÆ@¯kÆ`¯kÆ€¯kÆ ¯kÆÀ¯kÆ@°kÆ`°kÆ ²â" ' ²²"FAÀ²â" 'À²²"TAà²â"7³â"ä5³²"åA ³â"ä5 ³²"B@³²"ÄÎ`³²"ä΀³â" '€³²"TB ³â" ' ³²" ÏÀ³â" 'À³²"HÏà³²"/Ï´²";Ï ´²"VÏ@´²"cÏ€¸kÆ€¸kÆ ¸â" '@¹kÆ@¹kÆ`¹â" '€¹â" ' ¹â"7À¹â"7ºâ"ä5 ºâ"ä5@ºâ"ä5`ºâ"ä5€ºâ"ä5Àºâ"ä5»â"¯]`»â"¯]À»kÆà»kƼkÆ ¼â"`J ¼â" 'ÀÃkÆÀÃkÆàÃkÆÄâ" ' Äâ"sR Åâ"ä5€Åâ"7ÀÅâ" 'ÀÆâ" 'ÀÈâ"7àÈâ" 'Éâ" ' Éâ"ä5@Éâ" '`Éâ" ' Éâ"ä5Àɪ"Ì:àÉkÆàÉkÆÊkÆÊkÆ ÊkÆ ÊkÆ@ÊkÆ@ÊkÆ`ÊkÆ`ÊkÆ ËkÆ ËkÆ@˪"¿:`ËkÆ`Ëkƀ˪"Ì: ËkÆ ËkÆÀËkÆÀËkÆàËkÆÌkÆ ÌkÆ@ÌkÆ`ÌkÆ Õâ" '€ÖkÆ€ÖkÆ Öª"‹:ÀÖkÆÀÖkÆàÖª"˜:×kÆ×kÆ ×ª"¥:@×kÆ@×kÆ`ת"²:€×kÆ€×kƠת"¿:À×kÆÀ×kÆàת"Ì:ØkÆØkÆ ØkÆ ØkÆ@ØkÆ@ØkÆ`ØkÆ`ØkÆ€ØkÆ€ØkÆ ØkÆ ØkÆÀØkÆÀØkÆàØkÆàØkÆÙkÆÙkÆ ÙkÆ ÙkÆ@ÙkÆ@ÙkÆ`ÙkÆ`ÙkÆ€ÙkÆ€ÙkÆ ÙkÆ ÙkÆÀÙkÆÀÙkÆàÙkÆàÙkÆÚkÆÚkÆ ÚkÆ ÚkÆ@ÚkÆ@ÚkÆ`ÚkÆ`ÚkÆ€ÚkÆ€ÚkÆ ÚkÆ ÚkÆÀÚkÆÀÚkÆàÚkÆàÚkÆ ÛkÆ ÛkÆ@Ûª"~:`ÛkÆ`ÛkÆ€Ûª"‹: ÛkÆ ÛkÆÀÛª"˜:àÛkÆàÛkÆÜª"¥: ÜkÆ ÜkÆ@ܪ"²:`ÜkÆ`Ükƀܪ"¿: ÜkÆ ÜkÆÀܪ"Ì:àÜkÆàÜkÆÝkÆÝkÆ ÝkÆ ÝkÆ@ÝkÆ@ÝkÆ`ÝkÆ`ÝkÆ€ÝkÆ€ÝkÆ ÝkÆ ÝkÆÀÝkÆÀÝkÆàÝkÆàÝkÆÞkÆÞkÆ ÞkÆ ÞkÆ@ÞkÆ@ÞkÆ`ÞkÆ`ÞkÆ€ÞkÆ€ÞkÆ ÞkÆ ÞkÆÀÞkÆÀÞkÆàÞkÆàÞkÆßkÆßkÆ ßkÆ ßkÆ@ßkÆ@ßkÆ`ßkÆ`ßkÆ€ßkÆ€ßkÆ ßkÆ ßkÆÀßkÆÀßkÆàßkÆàßkÆàkÆàkÆ àkÆ àkÆ@àkÆ@àkÆ`àkÆ`àkÆ€àkÆ€àkÆ àkÆÀàâ" 'ààâ" 'Àáâ"ä5Àââ" '`ãâ"ä5€ãâ"ä5 ãâ" 'Àãâ" 'àãâ" 'äâ" ' äâ" '@äâ" '`äâ" ' äâ" ' åâ" ' åâ" 'Àåâ" '@æâ"¯]`æâ"7 êkÆ êkÆÀêkÆëkÆÀëkÆ@ìâ" '`ìâ" ' ìâ" 'Àìâ" 'àìkÆàìkÆíkÆíkÆ íkÆ íkÆ@íkÆ@íkÆ`íkÆ`íkÆ€íkÆ€íkÆ íkÆ íkÆÀíkÆÀíkÆàíkÆàíkÆîkÆîkÆ îkÆ îkÆ@îkÆ@îkÆ`îkÆ`îkÆ€îkÆ€îkÆàîkÆàîkÆïkÆïkÆ ïkÆ ïkÆàïâ" 'ðâ" ' ðâ"`J@ðâ" '`ðâ"`J€ðâ" ' ñâ" '`ñâ"7 ñâ" 'Àñâ" 'àñâ" 'òâ" ' òâ" '@òâ" '`òâ" '€òâ"ä5 òâ" 'Àòâ" 'àòâ"ä5óâ" ' óâ" '@óâ" 'õâ"ä5@õâ" '`õâ" ' õâ" 'Àõâ" 'àõkÆàõkÆöâ"ä5 öâ" ' öâ" 'Àöâ"7àöâ"7÷kÆ ÷â"ä5@÷kÆ`÷â" '€÷â" ' ÷â" 'à÷â" '@øâ" '€øâ" 'üâ" 'ýkÆýkÆ ýâ"o@ýâ"ä5`ýkÆ`ýkÆÀýkÆàýâ"7þkÆþkÆ þkÆ þkÆ`þkÆ`þkÆ€þkÆ€þkÆ þkÆ þkÆÀþkÆÀþkÆàþkÆàþkÆÿâ" ' ÿâ" '€kÆ€kÆÀâ" '`kÆ`kÆ€kÆ€kÆ kÆ kÆÀkÆÀkÆ kÆkÆkÆ kÆ kÆ ²"Ñv@â" '@²"ìv`â" '`²"-Ô€²"w â" ' ²"*wÀâ" 'À²"Owà²"pwâ" '²"w ²"Žw@â" '@²"·w`Z#Æ`²"Ìw€â" '€²"ëw â" ' ²"÷wÀâ" 'À²"`Óàâ" 'à²"®Óâ"ä5²"bx â"ä5 ²"‹x@â" '@²"¸Ò`²"Àx€²"Ýx ²"÷xÀ²"yà²"0y²"Ny ²"Yy@â" '@²"dy`â" '`²"‡y€â" '€²"•y â" ' ²"¥yÀâ" 'À²"¹yà²"Üy²"ìy@kÆ@kÆ`â"ä5€â"ä5 â"ä5Àâ"7àâ"ä5 â"ä5@â"ä5`â" '€â"ä5 â"ä5Àâ" 'àâ" 'â"ä5 â"ä5@â"7`â"ä5€â" ' â"ä5Àâ"7àâ"Vâ"V@â"7`â"ä5€â"7 â"ä5Àâ" 'â" '`â"ä5€â"ä5àâ"ä5 â"ä5@â" '`â" ' "²"Ñv@"â"ä5@"²"-Ô`"â" '`"²"—†€"â" '€"²"·† "â" ' "²"*wÀ"â" 'À"²"ì†à"â" 'à"²"·w#â" '#²"E‡ #â" ' #²"‘‡@#â" '@#²"÷w`#â" '`#²"`Ó€#â" '€#²"®Ó #â" ' #²"ëwÀ#â" 'À#²"¸Òà#â"ä5à#²"bx$â"ä5$²"‹x $²"Ny@$â" '@$²"C‰`$â" '`$²"}‰€$²"Ýx $²"YyÀ$²"÷xà$²"y%²"0y %Z#Æ %²"Ìw &â"7@&â"7`&â" '€&â"7 &â"ä5À&â"ä5à&â"Œ'â"V 'â"¯]@'â"7€'â"ä5 'â"ä5À'â" 'à'â" '(â" ' (â" '@(â" '`(â" '€(â"ä5 (â"ä5à(â"`J`)â" '€)â"ä5 )â" 'À)â" 'à)â"ä5À,kÆ`.²"˜€.²"˜ .²")˜À.²"6˜à.â"7à.²"d˜/â"¯]/²"³˜ /â"¯] /²"ò˜@/â"¯]@/²"”`/â"`J`/²"»Ì€/²"˜ /²"˜À/²")˜à/â"7à/²"”0â"¯]0²"»Ì 0â"ä5 0²"d˜@0â"7@0²"³˜`0â"7`0²"ò˜€0â" '€0²"·w 0â" ' 0²"¸ÒÀ0â" 'À0²"€šà0â" 'à0²"Äš1²"Öš 1â" ' 1²"ò˜@1²"d˜`1â" '`1²"³˜€1²"Ñv 1Z#Æ 1²"ÌwÀ1â"¯]À1²";›à1â"ä52â"7@2²"››`2â" '`2²"Ú›€2â" '€2²"ü› 2²"œÀ2²"yà2²"Ýx3â" '3²"·w 3â" ' 3²"¸Ò@3â"ä5@3²"Μ`3â"ä5`3²")€3â"ä5€3²"‡ 3â" ' 3²"€šÀ3â"ä5À3²"'žà3â" 'à3²"Äš 4â" ' 4²"÷w`4â"ä5`4²"Ÿ 4â" ' 4²"ëwà4â"ä5à4²"'Ÿ 5â" ' 5²"‘‡`5â" '`5²"E‡€5â" '€5²"Ó 5â" ' 5²"`ÓÀ5â" 'À5²"®Ó6â" '6²"—†@6â" '@6²"·†`6â" '`6²"¡€6â"ä5€6²"g¡ 6²"¯¡À6²"!¢à6²"6¢7â"ä57²"bx 7â"ä5 7²"‹x@7â"7@7²"£`7â"7`7²"p£€7â"¯] 7â"¯]À7â"¯]à7â"ä5à7²"Ô8â"ä58²"a¤ 8â" ' 8²"´¤@8â" '@8²"À¤`8â" '`8²"¥€8â" '€8²"-¥ 8²"H¥À8â" 'À8²"r¥à8â" 'à8²"“¥9²"Ÿ¥ 9²"Ny@9²"Yy€9â" '€9²"Ø¥À9â" 'À9²"¦à9â" 'à9²"6¦:²"_¦ :â" ' :²"¦@:²"˜¦`:â" '`:²"Á¦€:²"̦ :â" ' :²"Õ¦À:²"§à:â" 'à:²"+§;â"ä5;²"F§ ;â" ' ;²"”@;â"ä5@;²"»Ì`;â"7`;²"v§€;²"Öš ;²"6¢À;²"››à;â" 'à;²"¸Ò<â" '<²"Äš <â" ' <²"·w@<²"÷x`<²"0y€<Z#Æ€<²"Ìw <²"¨À<²"¨à<²"Ñv=â" '=²"ü› =â" ' =²"l¨@=â"ä5`=â" '`=²"Ó€=â" '€=²"€š =â" ' =²"ò˜À=â"ä5à=â" 'à=²"2© >â"ä5 >²"Μ`>â"ä5`>²"'ž€>â"¯] >â"7 >²"«À>â"¯]à>â"ä5à>²"‡?â"ä5?²")@?â"ä5@?²"bx`?â" '`?²"´¤ ?â"ä5 ?²"Ôà?â"7à?²"p£@â"¯] @â"ä5 @²"‹x@@â" '@@²"À¤`@â"¯]€@â"ä5€@²"a¤ @â"7À@kÆà@â"7à@²"£Aâ"ä5 Aâ"ä5 A²"'Ÿ@Aâ" '@A²"ëw`Aâ" '`A²"÷w€Aâ"ä5 Aâ"ä5 A²"ŸÀAâ" 'ÀA²"—†àAâ" 'àA²"·†Bâ" 'B²"E‡ Bâ" ' B²"‘‡@Bâ" '@B²"`Ó`Bâ" '`B²"®Ó€B²"¯¡ B²"!¢ÀBâ" 'ÀB²"¡àBâ"ä5àB²"g¡Câ" 'C²"r¥ Câ" ' C²"“¥@C²"Ÿ¥`C²"Yy€C²"NyÀCâ" 'ÀC²"Ø¥Dâ" 'D²"¦ D²"_¦@Dâ" '@D²"¦`D²"̦€Dâ" '€D²"Õ¦ D²"˜¦ÀDâ" 'ÀD²"Á¦àD²"§Eâ" 'E²"+§ Eâ" ' E²"Ú›@Eâ" '@E²"6¦`Eâ" '`E²"››€Eâ" '€E²"·w Eâ" ' E²"€šÀEâ" 'ÀE²"¸ÒàEâ" 'àE²"ÄšFâ" 'F²"Ú› Fâ" ' F²"ò˜@Fâ" '@F²"2©€Fâ" '€F²"ëwÀFâ" 'ÀF²"÷wàF²"ÖšàGâ" 'H²"»³ Hâ" ' H²"Ƴ@HZ#Æ@H²"Ìw`H²"´€Hâ" '€H²"ò˜ Hâ" ' H²"·wÀHâ" 'ÀH²"l¨àHâ" 'àH²"€šIâ" 'I²"÷w Iâ" ' I²"ëw@Iâ"ä5@I²"Μ`Iâ" '€Iâ"ä5 Iâ" ' I²"`ÓÀIâ" 'ÀI²"¸ÒàIâ" 'àI²"ÄšJâ"ä5J²") Jâ" ' J²"Ó@Jâ" '@J²"¡`Jâ"ä5`J²"g¡€J²"n· Jâ" ' J²"E‡ÀJâ" 'ÀJ²"‘‡àJâ" 'àJ²"·†Kâ" 'K²"—† Kâ" ' K²"U¸@K²"Ñv`K²"››€K²"Öš Kâ"ä5 K²"bxÀKâ" 'ÀK²"´¤Lâ" 'L²"ü› Lâ" ' L²"Ú›`Lâ"ä5`L²"Mº€L²"Ýx L²"yÀL²"÷xàL²"0yM²"w Mâ" ' M²"çº@M²"ˆÔ`Mâ"ä5`M²"Ô Mâ" ' M²"Ø¥àMâ" 'àM²"¦NkÆ Nâ" ' N²"t¼`NkÆ€NkÆ N²"e¾ÀN²"x¾àNâ" 'àN²"×¾O²"*¿ Oâ" ' O²"ª¿@Oâ" '@O²"“¥`O²"Ÿ¥€Oâ" '€O²"À O²"_¦ÀOâ" 'ÀO²"¦àO²"§Pâ" 'P²"+§ P²"˜¦@Pâ" '@P²"Á¦`P²"̦€Pâ" '€P²"Õ¦ Pâ" ' P²"éÀÀPâ" 'ÀP²"ÁàPâ" 'àP²":ÁQâ"ä5Q²"'Ÿ Qâ"ä5 Q²"Ÿ@Q²"¨`UkÆ`UkÆ€UkÆ€UkÆ`WkÆ`WkÆ€WkÆ€WkÆ XkÆ XkÆ@XkÆ@XkÆàXkÆàXkÆYkÆYkÆ YkÆ YkÆÀYkÆÀYkÆ \kÆ \kÆ@\kÆ@\kÆà\kÆà\kÆ]kÆ]kÆà^kÆà^kÆ_kÆ_kÆ _kÆ _kÆÀ_kÆÀ_kÆ``kÆ``kÆ€`kÆ€`kÆÀ`â"ä5à`â"ä5@aâ" 'Àaâ" 'àaâ" 'bâ"ä5ÀckÆÀckÆàcª"Ì:dkÆdkÆ`jkÆ`jkÆ€jª"²: jkÆ jkÆÀjª"¿:àjkÆàjkÆkª"Ì: kkÆ kkÆ@kkÆ@kkÆ`kkÆ`kkÆ€kkÆ€kkÆ kkÆ kkÆÀkkÆÀkkÆàkkÆàkkÆlkÆlkÆ lkÆ lkÆ@lkÆ@lkÆ`lkÆ`lkÆ€lkÆ€lkÆ`pâ" '€pâ" ' pâ" 'Àpâ"ä5qâ" '@qâ" '`qâ" ' qâ" 'ÀqkÆ`râ"ä5€râ" '@tkÆ@tkÆ`tª"²:€tkÆ€tkÆ tª"¿:ÀtkÆÀtkÆàtª"Ì:ukÆukÆ ukÆ ukÆ â" 'À€²"”à€²".Ù²":Ù ²"Àx@â"ä5@²"bx`â"ä5`²"‹x€â" '€²"÷w â" ' ²"ëwÀâ" 'À²"·wàâ" 'à²"¸Ò‚â" '‚²"õÙ ‚²"0y@‚²"y`‚²"˜€‚²"˜ ‚²",ÚÀ‚²"7Úà‚â"ä5à‚²"”ƒâ"7ƒ²"»Ì ƒâ" ' ƒ²"d˜@ƒâ"7@ƒ²"¶Ú`ƒâ"¯]`ƒ²"öÚ€ƒâ"¯]€ƒ²"%Û ƒâ"ä5 ƒ²"³˜Àƒâ"ä5Àƒ²"ò˜àƒâ" 'àƒ²"·w„â" '„²"€š „â" ' „²"¸Ò@„â" '@„²"Äš`„²"œ€„²"sÜ „â"¢Ü „²";›à…â" '†â" ' †â" '`†â" '€†â" 'À†â" 'à†â"ä5‡â" ' ‡â"7@‡â" '`‡â"7€‡â"ä5 ‡â" 'À‡â" 'à‡â" ' ˆâ" '@ˆâ"ä5`ˆâ" '€ˆâ"ä5 ˆâ" 'àˆâ" '‰â"ä5€‰â"7 ‰â" 'À‰â"7à‰â"ä5Šâ"ä5 Šâ" '@Šâ"ä5€Šâ"7ÀŠâ"ä5àŠâ" '‹â"7 ‹â"ä5 ‹â" 'À‹â" 'à‹â"7Œâ"ä5 ŒkÆ@Œâ"7€Œâ"ä5 Œâ" 'ÀŒ²"bäàŒ²"{äâ"TŒ²"œä â"TŒ ²"¯ä@â"TŒ@²"Áä`â"TŒ`²"Ìä€â"TŒ€²"ãä ²">åÀ²"Nåà²"`厲"qå@޲"å`޲"£å€Žâ" ' Žâ" 'ÀŽâ" 'àŽâ" 'â" ' â" '@â" '@²"¾å`â" '`²"̦€â" '€²"˜¦ ²"ÕåÀâ" 'À²"ëåà²"ûå²"æ J#Æ jæ ²"xæ@J#Æ@²"…æ`²"¡æ€²"¹æ ²"ÉæÀ²"âæàâ" ' ‘â" '@‘â"sR`‘â"T瀑â" ' ‘â":À‘â"¡áà‘â" '’â" ' ’#5è ’â" '@’â" '@’²"3é`’J#Æ€’â" ' ’J#Æ ’â" 'À’â" 'à’J#Æà’â" '“J#Æ“â" ' “J#Æ@“J#Æ@“â" '`“J#Æ`“â" '€“J#Æ€“â" ' “J#Æ “â" 'À“J#ÆÀ“â" 'à“J#Æ”â" ' ”²"‰é@”²"“é`”²"途J#Æ€”²"§é ”J#Æ ”²"±éÀ”J#ÆÀ”²"Ãéà”J#Æà”²"Öé•J#Æ•²"èé •J#Æ •²"ûé@•²"ê`•²"ꀕ²"ê •kÆ •kÆÀ•kÆÀ•kÆà•kÆà•kÆ–kÆ–kÆ –J#Æ –²"8ê@–J#Æ@–²"Kê`–J#Æ`–²"VꀖJ#Æ€–²"cê –J#Æ –²"wêÀ–J#ÆÀ–²"‹êà–J#Æà–²"¢ê—²"±ê —J#Æ —²"Äê@—â" '@—²"àê`—â" '`—²"ñꀗb#Æ€—²"ë —b#Æ —²"ëÀ—b#ÆÀ—²""ëà—²".ë˜â" ' ˜²"@ë@˜²"Uë`˜²"g뀘²"së ˜â" 'À˜â"ä5à˜²"¯ë™²"¸ë ™²"Âë@™²"Ìë`™â" '`™²"à뀙²"ëë ™²"õëÀ™²"þëà™²"纚²" ì š²"ì@š²"ì`š²"'쀚²":ì š²"DìÀš²"Mìàš²"W웲"`ì ›²"jì@›²"sì`›â" '€›â" '€›²"£ì`kÆ`kÆ€kÆ€kÆÀkÆà#xíàâ"ä5žkÆ ž#xí žâ"ä5@žkÆ`ž#xí`žâ"ä5€žkÆ ž#xí žâ"ä5ÀžkÆàž#xíàžâ"ä5ŸkÆ Ÿ#xí Ÿâ"ä5@ŸkÆ`Ÿ#xí`Ÿâ"ä5€ŸkÆ Ÿ#xí Ÿâ"ä5ÀŸkÆàŸ#xíàŸâ"ä5 kÆ  #xí  â"ä5@ kÆ` #xí` â"ä5€ kÆ  #xí  â"ä5À kÆà #xíà â"7¡kÆ ¡#xí ¡â"¯]@¡kÆ`¡#xí`¡â" '€¡kÆ ¡#xí ¡â" 'À¡kÆà¡#xíà¡â" '¢kÆ ¢#xí ¢â" '@¢kÆ`¢#xí`¢â" '€¢kÆ ¢#xí ¢â" 'À¢kÆà¢#xíà¢â" '£kÆ £#xí £â" '@£kÆ`£#xí`£â" '€£kÆ £#xí £â" 'À£kÆà£#xíà£â" '¤kÆ ¤#xí ¤â" '@¤kÆ`¤#xí`¤â" '€¤kÆ ¤#xí ¤â" 'À¤kÆà¤#xí¥â"ä5 ¥â"7@¥â"¯]`¥â"`J€¥â"o ¥â"¢ÜÀ¥â"éôà¥â"_õ¦â"ä5`¦#x퀦#xí ¦#xíÀ¦#xíà¦#xíà¦â" '§#xí §#xí@§#xí`§#x퀧#xí §#xíÀ§#xíà§#xí¨#xí ¨#xí@¨#xí`¨#x퀨#xí ¨#xíÀ¨#xíà¨#xíà¨â" '@ªkÆ «â" 'À«â" ' ¬â" 'À¬â" '€æâ" ' æJ#Æ æâ" 'ÀæJ#ÆàæJ#Æàæâ" 'çJ#Æç²"§é çJ#Æ ç²"±é@çJ#Æ@ç²"Ãé`çJ#Æ`ç²"Äê€çJ#Æ€ç²"Öé çJ#Æ ç²"èéÀçJ#ÆÀç²"ûéàçJ#Æàç²"êèJ#Æè²"8ê èJ#Æ è²"Kê@èJ#Æ@è²"‹ê`èJ#Æ`è²"¢ê€èb#Æ€è²"Eþ èâ" ' è²"¾åÀèâ" 'Àè²"Tþàè²".ë@éâ" '`éâ" '€éâ" ' ðâ" '@ðâ" '`ðâ"ä5€ðâ" ' ðâ"ä5Àðâ" 'àðâ" 'ñâ" ' ñâ" '@ñâ" '`ñâ" '€ñâ" '@òâ" '`òâ" ' ôkÆÀôkÆàôkÆ€öâ"ä5 öâ"ä5Àöâ"ä5àöâ"ä5 ÷â"ä5`÷â"ä5økÆ økÆ@ø#xí`ø#xíÀø#‘Àøâ" 'àøâ" ' ùkÆ@ù#‘@ùâ" '€ùkÆ ù#‘ ùâ" 'àùkÆú#‘úâ" '@úkÆ`ú#‘`úâ" '`#`â" '€#àkÆkÆ â":â"ä5 â"ä5@â" ' # â"ä5À#Àâ" 'à#àâ" '#â" ' # â" '@#@â" '`â" '€â" 'Àâ"ä5â"ä5 â" '@â" '`kÆ€â"¬`â"7€â"7à#àâ" '#â" ' # â"ä5@kÆ@kÆ â" ' â" '@â" '`#€#€â" ' # â" 'À#Àâ" 'à#àâ" '#â" ' # â" '@#@â"ä5`#`â"ä5€#€â"ä5 # â"ä5À#Àâ"ä5à#àâ"ä5#â"ä5 # â"ä5À!kÆÀ!kÆà!kÆà!kÆ"kÆ"kÆ "kÆ "kÆ@"kÆ@"kÆ`"#xí€"#xí "#xíÀ"#xíà"#xí##xí ##xí@##xí`##xí`#â"¯]€#â" ' ##xíÀ#â" 'à#â"ä5$â"ä5 $â"7@$â"¯]`$â"`J€$â"7 $â"¯]À$â"oà$â"¢Ü%â"¯] %â"`J@%â"éô`%â"_õà%#4à%â" '&â" ' &#y &â" ' &²"¿@&â" '`&J#Æ€&J#Æ`'kÆ€'kÆ 'kÆÀ'kÆà'kÆ(kÆ (kÆ@(kÆ`(kÆ€(kÆ (kÆÀ(kÆà(kÆà+kÆà+kÆ,kÆ,kÆ ,kÆ ,kÆ@,kÆ@,kÆ`,kÆ`,kÆ€,kÆ€,kÆ ,kÆ ,kÆÀ,kÆÀ,kÆà,kÆà,kÆ-kÆ-kÆ -kÆ -kÆ@-kÆ@-kÆ`-kÆ`-kÆ€-kÆ€-kÆ -kÆ -kÆÀ-kÆÀ-kÆà-kÆà-kÆ.kÆ.kÆ .kÆ .kÆ@.kÆ@.kÆ`.kÆ`.kÆ€.kÆ€.kÆ .kÆ .kÆÀ.kÆÀ.kÆà.kÆà.kÆ/kÆ/kÆ /kÆ /kÆ@/kÆ@/kÆ`/kÆ`/kÆ€/kÆ€/kÆ /kÆ /kÆÀ/kÆÀ/kÆà/kÆà/kÆ0kÆ0kÆ 0kÆ 0kÆ@0kÆ@0kÆ`0kÆ`0kÆ€0kÆ€0kÆ 0kÆ 0kÆÀ0kÆÀ0kÆà0kÆà0kÆ1kÆ1kÆ 1kÆ 1kÆ@1kÆ@1kÆ`1kÆ`1kÆ€1kÆ€1kÆ 1kÆ 1kÆÀ1kÆÀ1kÆà1kÆà1kÆ2kÆ2kÆ 2kÆ 2kÆ@2kÆ@2kÆ`2kÆ`2kÆ€2kÆ€2kÆ 2kÆ 2kÆÀ2kÆÀ2kÆà2kÆà2kÆ3kÆ3kÆ 3kÆ 3kÆ@3kÆ@3kÆ`3kÆ`3kÆ€3kÆ€3kÆ 3kÆ 3kÆÀ3kÆÀ3kÆà3kÆà3kÆ4kÆ4kÆ 4kÆ 4kÆ@4kÆ@4kÆ`4kÆ`4kÆ€4kÆ€4kÆ 4kÆ 4kÆÀ4kÆÀ4kÆà4kÆà4kÆ5kÆ5kÆ 5kÆ 5kÆ@5kÆ@5kÆ`5kÆ`5kÆ€5kÆ€5kÆ 5kÆ 5kÆÀ5kÆÀ5kÆà5kÆà5kÆ6kÆ6kÆ 6kÆ 6kÆ@6kÆ@6kÆ`6kÆ`6kÆ€6kÆ€6kÆ 6kÆ 6kÆÀ6kÆÀ6kÆà6kÆà6kÆ7kÆ7kÆ 7kÆ 7kÆ@7kÆ@7kÆ`7kÆ`7kÆ€7kÆ€7kÆ 7kÆ 7kÆÀ7kÆÀ7kÆà7kÆà7kÆ8kÆ8kÆ 8kÆ 8kÆ@8kÆ@8kÆ`8kÆ`8kÆ€8kÆ€8kÆ 8kÆ 8kÆÀ8kÆÀ8kÆà8kÆà8kÆ9kÆ9kÆ 9kÆ 9kÆ@9kÆ@9kÆ`9kÆ`9kÆ€9kÆ€9kÆ 9kÆ 9kÆÀ9kÆÀ9kÆà9kÆà9kÆ:kÆ:kÆ :kÆ :kÆ@:kÆ@:kÆ`:kÆ`:kÆ€:kÆ€:kÆ :kÆ :kÆÀ:kÆÀ:kÆà:kÆà:kÆ;kÆ;kÆ ;kÆ ;kÆ@;kÆ@;kÆ`;kÆ`;kÆ€;kÆ€;kÆ ;kÆ ;kÆÀ;kÆÀ;kÆà;kÆà;kÆ<kÆ<kÆ <kÆ <kÆ@<kÆ@<kÆ`<kÆ`<kÆ€<kÆ€<kÆ Ñ$-Ñ$ý Ñ$%Ñ$ÿ>DØp ¸–®¹ÐÔƒâôv:BYk‡P?•Á / Ž´ £Ý !K!O!j!•!³!·!Ê!í!ð!"$‰$«$Â$w%|%‚%‹%³%&&&m&£%á&÷&p'w'€'…'Š'•'œ'(](e(j(|(™(Ä(×(ÿ()$)=)B)L)])n)¯)ï)+*3*\*j*¦.1)1f1‘1Ú1ª12c2p2¦2â2¾2+3û2Œ3P34½3m4¾4Ì4£5N6\6t6¬6ñ6,717\77º7÷7ü788 88\8¨8ú8909 ;;M; >c>r>ˆ>Å>Ô>Ú>æ>ö>X?¸?Ï?é?þ?@s@½@á@A?AIA„A¬AÐAÞA4B=BCB}BÇBäBDoD~DD˜DªD@EEEOETEYE^EcEhE·EÇEäE.F«F»FÜFñFGHGÛGàGëG:H¾H{ÕH#IPIâAkII¨IÌIJ@JJJOJ]JjJk"ïJ‹KK¬K»K L)M@MnN÷NOŒOÿOAP`PÃRÈRÍRÒRõRSS9SWSÛTUiUoUzTÚUéUVW#W-WGWqX¡X¼XÄX-Y=YLYˆY/ZHZaZî[@\E\R\”[W\\\a\f\k\v\y\“\5]],5b]Ì]Ñ]à]Ô`aaIama†aa”a¬#˜aa€"¢aªa²a¼aÁaÅaÉaÝas"åa£b¸cÂc‚e”ef3f;fSfcf¾fÖf1g5g"hNhehœhÌh”iði…llœl§l²l»lm]mwmõnooo*o7o@oÆoHp~p½rÌrÛrêrùrs“s¢s0tptþt’w£wµwÆw×wèwùw xxoxm|€|!6eÏ… †%†4†›†ÿ†‡&‡Â‡=ˆPˆhˆ…ˆa‰×‹ì‹õ‹Œ ŒŒ„"wŒŒŒ¿ŒëŒ ž¼ðŽ*ŽVŽxŽˆŽ.?[ ±Ý$-7zeX|‘)‘„’Á’Ë’’˜’×’“C“Ø”!•ȕ֕å•–%–Y–<—c—’˜›˜%šbš¶šñš›§›­™º›ô›nœœ£œêœôœ}œ%…Õâ?žsž¡ž®žHŸ±ŸÄŸ6 D 1 d Í ð ¡-¡¤¡Ý¡Ÿ¡ÿ¡¢6¢<¢B¢W¢b¢{¢¡¢ª¢¶¢Ë¢Î¢à¢õ¢0£B£H£M£R£_£|£Õ¤Ú¤h§z§¡§¦§Å§e§Ú§(¨-¨<¨S¨ÊªÙª©W´f´s´ˆ´•´º©X¨¯´ ´¹´Ð´Ò©4³@³L³d³$´Ü³è³p³ð¬|³ˆ³”³ ³…®¬³¸³Ä³ô³Ð³°0´´´Æ©Ú´±¶d¹ú¹Èºÿº»»»}»L»¡»Â»Ç»Ö»Û»ä»ö»¼$¼g¼Ê¼Û¼â¼÷¼½H½N½‡½Œ½ã½ö½%¾1¾•Á¥ÁÇÁEÃa½„Æ»ÆÃÆÑÆÕÆLjÆ;ÇaÇÁÇÛÇÈYÇÈ>ÈOÈZÈgÈpÈ»ÈGɂǃÉÉ”É@Ê]ÊhÊ£Ê×ÊËQˉË4Ì=ÌÄÌÔÌãÌîÌòÌÍ¡ÍÎÎ1Î6ÎYÎŒÎwÏÅÏÊϘХкÐÕÐåÐюѦÑÝÑ@ÐbÒpÒÔ£Õ®Õ¹ÕêÕnÖ~ÖŽÖËÖ•×RØø×vØÕØ ÙÙEÙxك٩پÙÇÙùÙ3Ú_ÚÜÚ{Û„ÛÄÛ&Ü6܆ÜèÜ"݃Ý$Þ-ÞHÞ›Þ¸ÞßßAßeß—ß4à@à¯àLà»àïàâ ã%ãYã’ã®ãä"ä'ä1ä?ä…ä“ä2åæåÒæ×¾u¾øæ8ç=çWç‘ç èè¡èâèéèyçºèé?éjé£é¬éÍéôéRêììí+îsî˾›î]¾êî"ï¾î•ïRîåï>ðžði¾ºðñ+ñLñkñgò—ò¾òÃòÖòl½ôò‡óãó?ôTô^ôõ7õöPöjÇrö}öœ÷ä÷ ø¶øÅø0ù3ú\úÅúæú—úûnûxû›ûHûüû˜í´íÐíEüðüvýýü!ü¥ýöþs€Š›©Ùÿµò¾:PÅ•à †•¹àîEiwœ¦ÊØý 1]޾ä , A Q [ » # h z „ ×  ² Ý 6 R Ö M¡ˆêñ(xÜ%I^Íþe£ùc«Ú#~¾ë‰ U†®Ê%žVÍL‘å7´YÓØî #<M`„£ºÛô 7@LdqwÉÖëñ M ¿ È Ò ô O!{!¥!­!"V"‚"¬"ß"#j#{#‘#ç#u$$·$Æ$â$î$%%^%‡%¥%¾%ö%²&ï&.'h'‚'—'¨'¾'Ð'Ý'B()a)r)Ž)S**º*?+V+f+,p-Þ©Î-!.b.l.q.ö.*/t//Ë/ 000#0H0M0V0|0à0ž1®1¾1×1[2á2Î4 5X5,6o6Ÿ6è6g8|8À8Ç8Ü8ì80959‹9¿9Ð9:#:H:v:…:Š:š:³:H;ª;<<]<µ< ="=Ù>ñ>?X³O?¢?:@z@è@aBoCwCÇCüCD[DrD~D‘D·DEEE¸_¸n¸µ¸í¸¹Ĺî¹ÿ¹^ºŒºm»¨»î»‚¼¼U½g½³½&¾ä¾¿8¿…¿ À?ÀgÀ|À‘ÀIÁÃCÃ}ÆÿÃkÄtĸÄÇÄðÄ;ÅDÅzÅÓÅþÄgƸÆÄÆ÷ÆÇbÇ¥ÇüÇÉ#ÉCÉNÉËÉþÉ0Ê~ÊZËrËÌÌÌ7ÌhÌ̞̓ÌÍÌÍûÍÎ`ΊήÎÐÎÙÎÏ<ÏèÐÑiÐ>ÑrÑMÐÑÓÑêÒDÓ³ÓþÓsÔÔ¹ÔOÕ¡Õ.Ö,×ÉÖêÖ×7ÿm×§×Ò׿ר†Ø»ØËÚÕÚ`ÛÜ6ÝUÝ]݈ݶÝìÝ/Þ_Þ¯ÞåÞßKߓ߬ßÇßàQà{à¼àá…á¨á+â~âüâããÕã0ä>ä^éêê—ìMí\íîîUîdî¢î±îõîïHïWï›ïªïîïýïAðPð”ð£ðÌð]òhòlòwò{ò†òŠò•ò™ò¤ò¯ò³ò¾òÂòÍòÑòÜòìòóó:óLó~ó¥ó#ôõ·õØõþõ&ú+öüúqÕ:û·#AüóüÂ×âýÖ!þmþ°þÉþ>ÿMÿÁÿQbxIä÷,p¾Êã'; H €— ÂÁì i ²Ì¥ ƒ«ÀÅÉ!&>üo~¿Ø!%5†‹æ,¥Ìå3Ls˜Åú7]ŒÄ*lº!³ÄÕæ÷hA,,?Rexÿ1/DYnƒ˜­V± "M&V&q&„&&Ÿ&¬&º&Ë&Ú&ê&ý&' 'G']'q'œ'´'Ê' (!(9(T(Y(.ò  " ) 9 ; <4D?G@SB}C~DE€FG‚HƒI„J…K†L‡NºyÕƒà„ä†ê‡ëˆì‰íŠî‹ïŒðñŽòóô’ú“û”ü•ý–þ—ÿ˜™š¥ ´ µ·¸¹º»¼½¾¿ÀÁ Â!Ã"Ä#Æ$Ç%Ê&Ï, /0123$4%7&:';(<)=*>+?2C4D6G7H8I9J:K<O=P>Q?R@SATBUDZE[F\G]H^I_J`KaLbNhOiPjQkRlSmTnUoVpWqXrZy[z\{]|^}_~`a€bc‚dƒe„f…hiŽjkl‘m’n“o”p•q–r—s˜t™ušv›zŸ{¡}¥°€±³‡µ‰·‹¸Œº¿ŽÁÆÌ‘͒ϔЕԖ՗٘ڙâšãžæ ç¡è¢ê£ì¤÷§ü¨ýªþ«ÿ¬®¯° ±²³´µ¶)¸*¹.»3¼5½6¾8¿:À<Á=Â?ÃAÅtÆuÇvÈwÉxÊzË{Ì|Í}Î~ÏЀÑ҂ӃԄՅֆׇ؈ىڋیÜÝŽÞßà’á“â”ã•ä–å—æ˜ç™èšé›êœëìžíŸî ï¡ð£ñ¤ò§ó¨ô©õ«ö®÷´ø·ù¸ú¹û»ü¾ý¿þÃÿÅÇÉËÍÏ Ô^ÕpÖsØtÛvßwàxáyâzã{äå1ð€ó„ô…÷ùüª«ÄÅ Éïðò ó!ô#õ$ö%÷&ø'ù)ú*û+ü,þ5ÿ678:<=>?@B DEJ!O"n%u&ƒ/ˆP¤X¥h§¨©¬«½­À²Á³Ã´ÄµÅ¶Æ¸ÉºÊ»Ð¼öÃýÇÿÉÌÏÒÔ0ÖA×FØKÙPÚWÛ\ÜaÝfÞkßpàá†â‹ãä•åšæŸç¤è©é®êÍëßýâÿãäëþ%8?@BPU W¡X£Y¦Zª[¯\µ]¼^Äæqðqùqrrr!r&r3rJrYrerr†ryr~…t]ŽtsÍtyÖtyÝt$ät*õtu$ uu.u>uQu3^uApuT‚uNz"Zz*ÙzE"äzE"ñzN"þzX" {]"{E"*{|å"|!|ñ",|ü"8|#L|#b|#x|#‰|#|#©|#Æ|#å|#}t# }}ØÞTœ€Ÿ%¹€¼%¿€¼%ÀÓ%Ñ€á%×€ï%Þ€ó%÷y&ä€ &yl5²„r5º„w5&)&Dr5Rr5tr5™r5À&Ôr5ðr5Žr5,Žr5QŽr56‘:‘TB‘TK‘TR‘TY‘Tl‘†9s‘T|‘†9ƒ‘TŒ‘†9‘T–‘†9š‘T ‘†9¦‘T®‘†9³‘Tº‘†9¿‘TÆ‘†9Ê‘TБ†9בTà‘†9ç‘Tð‘†9û‘T’†9’T’†9’T&’†9+’T2’†97’T>’†9B’TH’†9L’TR’†9V’T‰•‰•y<‰•Ô<‰•‰•‰•‰•y<‰•Ô<‰•‰•6‘®•>º•TÈ•>Û•Tð•>ü•T –>–T&–>1–T>–>I–TV–>m–T†–>“–T¢–>¯–T¾–>È–TÔ–>Þ–Tê–>ö–T—>—T—>'—T4—>>—TJ—>W—Tf—>s—T‚—>“—T¦—>³—T—>ΗTÜ—>ç—Tô—>ÿ—T ˜>˜T"˜>,˜T8˜>B˜T6‘µ‚>ÅTׂ>æT÷‚>žTž‚>'žT9ž‚>HžTYž‚>fžTuž‚>‚žT‘ž‚>ŸžT¯ž‚>½žTÍž‚>ÜžTíž‚>ýžTŸ‚>ŸT+Ÿ‚>>ŸT/¤C3¤C;¤CC¤CU¤&j¤Cz&…¤&Cš¤0Cµ¤:C¤ &p¨Ô<x¨«M¨¼M…¨Ô<6‘ý¨T©T ©T©T©T‰•“P‰•“P‰•KQ‰•©Q‰•‰•“P‰•“P‰•KQ‰•©Q‰•6‘y©T†©rRŠ©T‚¥T©T‰•]S‰•‰•éS‰•]S‰•‰•éSªª$ªZT0ªkTªª$ªU0ªkT‰•ÁUØ!«hX0«hXÞTŽ¢ &6‘ü¬T­T ­T­T­T­T'­T‰•…^‰•×^‰•2_‰•~_‰•…^‰•~_‰•3‰•…^‰•×^‰•2_‰•~_‰•…^‰•~_‰•3œ€œ€è­&ò­&ü­&®&®&®&¦Ÿ%vyvy˜JT˜JT˜JT±±TDZò±ø±þ±‡k:²I²Dzì²Åk*{³Øk˜J*{!³/³T7³T0ƒ6‘ͳTÚ³T‰•Ûm‰•$n‰•Ûm‰•$n6‘+´T8´TE´T‰•Ûm‰•$n‰•q‰•Ûm‰•$n‰•q6‘²´T¿´TÌ´TÙ´T‰•Ûm‰•$n‰•q‰•îu‰•Ûm‰•$n‰•q‰•îu6‘eµTrµTµTŒµT™µT‰•Ûm‰•$n‰•q‰•îu‰•Vz‰•Ûm‰•$n‰•q‰•îu‰•Vz6‘D¶TQ¶T^¶Tk¶Tx¶T…¶T‰•Ûm‰•$n‰•q‰•îu‰•Vz‰•~‰•Ûm‰•$n‰•q‰•îu‰•Vz‰•~6‘O·T\·Ti·Tv·Tƒ·T·T·T‰•Ûm‰•$n‰•q‰•îu‰•Vz‰•~‰•'ƒ‰•Ûm‰•$n‰•q‰•îu‰•Vz‰•~‰•'ƒœ€†¸Œ¸*{æÛm˜JÛmþ°FŒ˜JÛm°¹PŒ·¹PŒ6‘ä¹TrsÞTë¹Ûmù¹}º ººÛmº}‰•˜Ãº$*PêºU»T˜JÛm;¼TF¼Ûme½¤º½ÛmÀ½$nº½ÛmÀ½$nƽ•‘̽•‘Ò½º½ÛmÀ½$nº½ÛmÀ½$nƽ•‘̽•‘Ò½rg’ì½s’o•‘ÞT‰•}’Øúؗœ¾Ÿ%¦Ÿ%fÂ2˜º½ÛmÀ½°˜Æ½°˜Ì½‰•Ûmº½ÛmÀ½°˜Æ½°˜Ì½‰•Ûmì½s’o°˜r£™ØÞT‘ÂÛm˜ÂÛm§ÂÛmú$ª²Ãxœ6‘ëǧŸëÇ% ýǶ ëǼ €È†ÈhX»ÈÀÈX¹¡ÈÈàÈ“¡äÈ“¡éÈTðÈTöÈTÉT ÉT6‘ËTËT(Ë*£4ËT‰•‰•‰•‰•6‘¬ËT³ËTºËTº½TÀ½Ÿ%ƽTº½TÀ½T¥Æ½T̽T¥Ò½TÌk¥º½À½é¥Æ½T¥º½TÀ½Ÿ%ƽTº½TÀ½T¥Æ½T̽T¥Ò½TÌk¥º½À½é¥Æ½T¥ÌÌHÌ\ÌŸ¦o̦ÄȦ~̠̪̉̔ÌT¹ÌTÉÌΦ˜JªÌÎT]8xœÖÎa§6‘mÏTxÏT…ÏTÏTº½B¨À½H¨‰•À¨º½À¨À½©º½xœÀ½º½B¨À½H¨‰•À¨º½À¨À½©º½xœÀ½6‘ÐTÐT#Ðê©/ÐT=Ðê©SÐTkÐê©xÐT‡Ðê©‘ÐTÐTªÐê©·ÐTÆÐê©ÏÐTÚÐê©æÐTôÐê©ÑTÑê©ÑT"ÑT2ÑT?ÑTJÑT_ÑTvÑT„ÑT—ÑT¬ÑT¿ÑTÔÑTæÑTúÑT ÒT ÒT-ÒT:ÒTLÒT]ÒTkÒê©qÒTyÒꩆÒT•Ò꩞ÒT©Òê©¶ÒTÅÒê©ËÒT‰•xœ‰•V«‰•V«‰•xœº½xœÀ½‰•Ú¬‰•Ú¬‰•Ú¬‰•Ú¬‰•n®‰•n®‰•n®‰•n®‰• °‰•l°‰•l°‰•xœ‰•xœ‰•xœ‰•xœº½Ÿ%À½xœ‰•xœ‰•xœ‰•V«‰•V«‰•xœº½xœÀ½‰•Ú¬‰•Ú¬‰•Ú¬‰•Ú¬‰•n®‰•n®‰•n®‰•n®‰• °‰•l°‰•l°‰•xœ‰•xœ‰•xœ‰•xœº½Ÿ%À½xœ‰•xœo<´üØH¨]8xœ€Ü©ŒÜ‹ºµÙº‡ªa§µÙºLÝTdÝT‡ªa§›¬C»ñyŸ%·Ýa§ºÝC»ÁÝŸ%Þi» ÞTLÝTØÞi»6‘4ß[½[ßPŒsßPŒ‹ßT“$ν×i»¸á=¾¾áJ¾ÄáW¾•߸¾/âž6‘‰•¿6$ÀÀÎâËÀŠåTÞi»"çPÇ(ç(çlèò±ï%ø±ï%{éï%ˆéï%“éï%Åé‹ÌDï‹Ì\ðTlðÃè—ð|éÜà‡é¶ðé6‘ÿñT/³T òT‰•Ûm‰•P‰•>퉕Ûm‰•P‰•>íùù#ùù+ùù5ùù<ùùCùï%3þhù~ù"•ùE©ùWQá3V[í3œ€À¨6‘º½8À½6‘‰•ò8ùú:ü;V;HB;[B;xB;B;> B;ùùP B;d cCu iCó TÒ¶MáTº&ÁmPÇmP6‘º½À½ƽhX6‘ò\T\$TÅùÌù ¹ùÖù6‘.T;³_DTOTYTfTuT‰•`º½xœÀ½xœ‰•ñ`‰•‘a‰•xœ‰•`º½xœÀ½xœ‰•ñ`‰•‘a‰•xœ6‘ETSöb]TiTzTT›T²T‰•Vc‰•xœ‰•>dº½À½>dº½xœÀ½>d‰•Ÿ%‰•Vc‰•xœ‰•>dº½À½>dº½xœÀ½>d‰•Ÿ%mP# g( g. g4 g_ùeúiljwj}jN&W&]&f¥jo¥j{©j…&‘&&ª&¶&Â&Î&Û&è&ñ&ü&)É­j-É­j³j ºjºjºj(ºj2¿j?¿jI&\&y&”&ª­jO"&ÀY"_"hXà"Koì&PŒ¥j)ê&&À&@ô&ð"¥j÷"&#&#ºj!#ºj)#C/#C4#CPŒC.$©j)#C/#C2$C<%PŒÅùB%ù ¹ùI%ùR%B;h%B;|%B;%B;Ÿ%Ñp­%ù´%ù½%ùÄ%ùÍ%ùÔ%ùÝ%ùä%ùí%ùô%ùý%ù&ù &ù&ù&ù$&ù-&&6&&-& ……±èT í–±èT˜JÛmì½LË6‘þ6¾Ë6‘%8T,8T48ûÎ98T‰•Ûm‰•Öω•Ûm‰•ÖÏ8…Ї8—ÐÅUÖÏ8ªÐÅUÖϨ§Ñ6‘×95Öà9Të95Öõ9T:5Ö :Tî>üä÷>üäû>å ?åBüä•Büä\GTeGTmGÛm\GTeGTmGÛm\GTeGTmGÛmmG$neGTmGÛmeGT¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸G®ú¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸GÜû¸G¾ù¸G¾ù¸GÉü¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸G¾ù¸Gý¡nïëGõHõHû*H9H GHUHcH(qH1€H:HCœHL«HUºH^ÊHgØHpèHy˜Jö ëNö ¸G ¸G ¸G, DL DL DL DL AOë NOð YOð kOõ~Oõ“O&¤Oö ¸Oü ÕV&üV& W&CW&cW&ÐH&-Zï%JZï%aZï%zZï%Zï%ù]a$^ï%^ï%*^ï%;^ï%T^ï%f^ï%|^ï%’^ï%­^ï%Á^ï%Ú^ï%î^ï%_ï%_ï%2_ï%E_ï%X_ï%f_ï%q_ï%‹_ï%™_ï%°_ï%¿_ï%Ñ_ï%á_ï%õ_ï% `ï%+`ï%P`ï%z`ï%‡`ï%—`ï%­`ï%Ä`ï%Ø`ï%ê`ï%ú`ï%aï%aï%2aï%Daï%Xaï%daï%uaï%†aï%–aï%¥aï%¯aï%¿aï%Ðaï%áaï%óaï%bï%bï%'bï%:bï%Kbï%Ybï%nbï%bï%“bï%¢bï%¹bï%Ébï%Øbï%ïbï%cï%cï%?cï%^cï%zcï%–cï%¯cï%Òcï%æcï%þcï%dï%.dï%Ndï%jdï%ƒdï%–dï%ªdï%¼dï%Îdï%àdï%ñdï% eï%eï%.eï%?eï%[eï%reï%|eï%’eï%¬eï%Åeï%Úeï%ôeï%fï%fï%&fï%Cfï%ifï%}fï%fï%¬fï%´fï%Éfï%Ûfï%êfï%gï%gï%&gï%=gï%Wgï%ngï%ˆgï%£gï%³gï%Ãgï%×gï%ígï%hï%hï%5hï%Ihï%\hï%ohï%ƒhï%—hï%«hï%Áhï%Ùhï%gvº½Ûmªvº½ÛmÀ½$nªvº½ÛmÀ½$nƽqªvº½ÛmÀ½$nƽq̽îuªvº½ÛmÀ½$nƽq̽îuÒ½Vzªvº½ÛmÀ½$nƽq̽îuÒ½VzÌ~ªvº½ÛmÀ½$nƽq̽îuÒ½VzÌ~x'ƒªvº½ÛmÀ½$nƽq̽îuÒ½VzÌ~x'ƒf ã'ªvëì   !##%"%%'$'&)(+*-)-,/+/.1-103/325154737596;9=8=;?ZA\C_E`GaIbKcMdOeQfSgUhWiYj[k]l_mancoepgqirksmtouqzsuw”y•{–}—™˜šƒ…ž‡ù‰ú‹û"#‘&“'•(—)™*›+,Ÿ-¡.£/¥e§8©:«<­>¯@±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å[ç\é]ë^í_ï`ñaóbõc÷dùpûrýtÿvxz|~ € ‚ ·…†‡ˆ‰Š‹Œ!Ž#%'‘)’+“-”/•1–3—5˜7™9š;›=œ?AžCŸE G¡I¢K£M¤O¥Q¦S§U¨W©Yª[«]¬_­a®c¯e°g±i²k³m´oµq¶sÝuÃwÄyÅ{Æ}ÇÈɃʅˇ̉͋ÎÏБѓҕӗԙ՛Öןء٣ڥۧܩE«F­G¯H±I³JµO·P¹Q»c½d¿ŽÁÃőǦÉ˟͡ϣѥӱճ׵ٷ۹ݻ߽á¿ãÁåÃçÎéÇëÈíÉïËñÍóÙõÛ÷Ýùßûáýãÿäåæçî ï ò ð ñýþ!"&L]PR!T#V%X'Z)\+`-b/d1f3h5j7l9n;p=r?tAvCxEzGI‹K”M•O–Q—S˜U™W®Y¯[°],_4a7c9eEgMiNkOmQoRqSsWuYw[y]{_}abdƒcƒf…e…o‡x‰u‹w‚„‘†“ˆ•—‹™›šŸœ¡ž£ ¥¢§¤©®«§­©¯«±­³¸µº·¼¹¾»À½Â¿ÄÁÆÃÒÅÉÇËÉÍËÏÍÑÏÜÑÞÓàÕâ×äÙæÛèÝêßìáîãüåñçóéõë÷íùïûñóõ ÷ ùûýÿ ,  !#%')+68:<!>#@%B'D)F+H-J/L1N3P5T7U9V;Z=p?o?yAxA~C€EˆG‰I–KM‘O’Q”S•UŸW Y¡[¢]£_¨a«c¬e±g²iÁkÂmÔo×qØsÚuÛwÜyÝ{Þ}àáãƒä…凿‰ç‹ìðñ‘ó“ô•ÿ—™›$Ÿ'¡(£)¥*§,©.«/­0¯1±3³8µ9·:¹=»A½N¿OÁPÃlÅnÇoÉs˞ͤϧѦѩӬժի׳ٴ۵ݽßÂáÃãÈåÉçÑéÒëÛíêïåñçóèõé÷òùôû÷ýùÿüþ       !#%')+-/1357!9";#=$?%A&C'E(G)I*K+M,O.Q0S3U4W5Y6[F]?_AaCcEeMgNiPkRmSoUqVsXuYw[y]{^}`a¬ƒe…g‡h‰i‹jkl‘m“n•o—q™r›stŸu¡v£w¥x§y©z«{­}¯±³ƒµ…·‡¹‰»‹½¿Á‘ÓŕǗə˛ÍϟѡӢգפ٥ۦݧߨá©ãªå«ç³éµë·í¹ï»ñ¼ó¾õÀ÷ÂùÄûÆýÈÿÊÌÎÐÒ Ô Ö ØÚÜÝßáãåçé!ê#ì%î'ð)ò+ô-ö/ø1ú3ü5þ79;=?A C E GIKMEOGQHSIURWTYU[\]]_^a`caebgeiikjmrouq|s{u~w}w€yƒ{Œ}‘ƒ’…”‡•‰š‹™©¬‘ʓ̕՗֙è›êéùŸú¡û£ü¥ý§ ©ü «/ ­0 ¯7 ±: ³E µQ ·L ¹N »P ½S ¿U ÁW ÃY Å[ Ç] ɸ ˹ ͺ Ï» Ѽ Ó Õ. ×D ÙE ÛM ÝN ß• á– ã— å8 çD éB ëC íN ïM ñb óc õd ÷p ùq ûr ýs ÿÄ Æ Ê Õ × é æ ê ç ë è /0SPQR^Z![#\%]'®)¯+°-±/Á1¶3·5¸7º9¼;¾=À?ÃAÅCÆEÈGÊIÌKÎMÐOÑQÓSÕU×WèYÛ[Ü]Ý_ßaácãeågçiêkìmîoðqñsóuôwöyø{ú}üþÿƒ…‡‰‹‘“Q•R—S™T›UgŸh¡i£j¥k§l©m«n­o¯p±q³rµs·t¹w»x½y¿}Á~ÜşǠɡˢͣϤѯӲճ״ÙÀÛÔÝÕßÖá×ãØåÙçÚéáëâíãïäñåóæõç÷èùëûìýíÿðñòóô õ ö ÷ !.#/%0'1)2+3-4/5163758799:;;=<?=A>C@EAGºIüKúKýMûM]O[O^Q\QSU WYZ[U]W_XaYc]e_gbidkemfohqisruyw©y£{¤}¥¦§ƒ¨…­‡®‰¯‹°ëì‘H“I•K—T™U›WYŸZ¡\£c¥d§j©k«­:¯E±P³[µj·u¹€»‹½–¿¡ÁÄÃÏÅÚÇåÉðËûÍÏÑÓ'ÕŽ×Ùۖݗߘá™ãšå›çœéëžíŸï ñ¡ó¢õ£÷¤ùúûûýÿ>g Ž ¶ ÃÄÝÞâãä!#%.'5)6+7-8/91^3_5`7a9b;c=d?eAfCgEhGiIjKkMlOmQnSoUpWqYr[s]t_uavcwexgyizk{m|o}q~su€wy‚{ƒ}„…†ƒ‡…ˆ‡‰‰Š‹‹Œ‘Ž“•—‘™’›“”Ÿ•¡–£—¥˜§™©š«›­œ¯±ž³Ÿµ ·¡¹¢»£½¤¿¥Á¦Ã§Å¨Ç©ÉªË«Í¬Ï­Ñ®Ó¯Õ°×±Ù²Û³Ý´ßµá¶ã·å¸ç¹éºë»í¼ï½ñ¾ó¿õÀ÷ÁùÂûÃýÄÿÅ Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ! Ö# ×% Ø' Ù) Ú+ Û- Ü/ Ý1 Þ3 ß5 à7 á9 â; ã= ä? ïA ÿC  E  G  I K M O Q %S &U 'W (Y )[ 4] 5_ 6a 7c 8e 9g Di Ek Fm Go Hq Is Ju Uw Vy W{ X} Y Z [ƒ \… g‡ h‰ i‹ j k l‘ m“ n• o— z™ ¥P‰T‰}L u}J •‡ 5‡Œ u‡Š •‡” %‡– £‡’ ¥‡Ž —ˆœ 5ˆ  uˆž •( ý ÿ* 6 ‰. " 0  u á, & $ 4 2     ˜Ä S˜Æ U˜ ‰˜Ê W˜Ì Y˜Ô u˜Ò •˜È [˜Ð ]˜Î _£À ‰¸v‰ô¢5÷Ü5ùð5¦5¤«¢­ ¯ž±Ä5ð5 0• 2uLýNRTZá\uP XV’¥ § Ž™pd5Y"5Y"%Y"£Y"¥iÈ"5iÄ"%iÆ"£iÂ"¥«6&u¬D&u¬B&•±X&u±V&•²`&R&²j&5²f&%²h&£²d&¥²b&—¶€&5¶|&%¶~&£¶z&¥ÆÖ&WÆØ&UÉî&5Éê&%Éì&£Éè&¥Éæ&—Êô&WÊö&UÎ2'5Î.'%Î0'£Î,'¥Ï@'5Ï<'%Ï>'£Ï:'¥Ï8'—Òd'5Ò`'%Òb'£Ò^'¥Ò\'—Ö€'5Ö|'%Ö~'£Öz'¥×Œ'5׈'%׊'£×†'¥Ú¢'5Úž'%Ú '£Úœ'¥Û®'5Ûª'%Û¬'£Û¨'¥Ü¾'5ܸ'%ܼ'£Üº'¥Ü¶'—ÝÊ'5ÝÆ'%ÝÈ'£ÝÄ'¥ÝÂ'—ÞÔ'5ÞÐ'%ÞÒ'£ÞÎ'¥ÿ¢*5ÿž*%ÿ *£ÿœ*¥ÿš*—ê*u +u +u,+uB+uX+un+u„+uš+u!°+u$Ì+u'è+u)ú+u+ ,u-,u¹¦.5¹ .%¹¤.£¹¢.¥¹ž.—9ú1]< 2_<2a=2_=2a>2_>2aW4‰W4Ô3W4Ö3W 4Ø3W4Ü3W4Ú3W4Þ3X 4‰X"4Ô3X4Ö3X&4Ø3X(4Ü3X,4Ú3X.4Þ3Y<4‰Y>4Ô3Y:4Ö3YB4Ø3YD4Ü3YH4Ú3YJ4Þ3ZZ4‰Z\4Ô3ZX4Ö3Z`4Ø3Zb4Ü3Zf4Ú3Zh4Þ3[z4‰[|4Ô3[x4Ö3[€4Ø3[‚4Ü3[†4Ú3[ˆ4Þ3\œ4‰\ž4Ô3\š4Ö3\¢4Ø3\¤4Ü3\¨4Ú3\ª4Þ3]À4‰]Â4Ô3]¾4Ö3]Æ4Ø3]È4Ü3]Ì4Ú3]Î4Þ3^æ4‰^è4Ô3^ä4Ö3^ì4Ø3^î4Ü3^ò4Ú3^ô4Þ3 (2<HVf|˜¢´ÄÔê(Pbjr€ˆ˜ ¨°¹ÂÉÙãíõ&.6>FNV^m–ªÊÓÝîô /ù  2>JRcr•¥ºÑàò )7AQam‘Ÿ³Ç×í-EYeq}‰•¡¨°¸¿ÉÖßìôû!0KS[cr{Š™¤³ÃÍÝè 6DSgpzŠ• «Üçòý  * : B S g w ‡ ° Ï æ ÷   & : H X k u ‘ œ ¬ Á Ö æ ö  2 F V o « Õ î ÷    + 7 C W k v  ˆ Ÿ © ² Á Ò â ú  , @ Y m y … ” ¤ º Ê æ :F_p~†ŽªÏ×þ#/;JV`yƒ°Þæï÷#:BLZex‘£°ÃÍàð&=Sl€ˆ ¬ÃÒÜëø)4=ENWhr†œ¨¾Ùð'4AQ`p‡˜£²ÄÖî-<EYs—±Ëàçóþ%-=EMWamu}…‹”œ¢«³¹ÂÊÐÙáçðøþ&,5=CLTZbiow~„Ž–œ¨°ºÂÊÒÚâêöÿ!*2:DLT\m~–¤ÃÓù  '.5<CJQX_fmvƒŒ• ©¹Â½~—¤Èßÿž¹Øø7*¦» '  V!’!¾!"Û#z$$2&R&æ&('O' '±'¹'á'(ƒ**–**³*Á*L+†+¡+­+Â+Ë+,G,[,h,p,â,!-`-›-°-Ò-1T1f245?5‘5·5Õ5 66Â6Ù:ú:1>R>“>´>Ÿ?©?ô?L@8AnA¿AøA+BfBŠBóBFCOCŠC’CØCàCèCD>DHDwDÕEyFˆFG(G>G¡GH"HßHåHôHIaI›IÐIáIxJ†JJJ²JÊJÖJ×KüK”L1M8MÍOîO˜R¹RôUVW6W>WîWX¹X\YkYyYøYÂ[Õ[‰\Z^{^a"a)a1a:aAaòab bb#b…bb”b—cÐd#ejeÂeÍeÚeVgag~gŸgÉghRh\hOlmlZmmn„n›n½nÙnEpæqrr7r]r}rr-t¼`¼Â¼í¼3½§½í½Ü¾+¿¸ÀçÀZÁmÁ¯Á¸Á ÂÀÂÓÂíÂÃ=ÃnÃÕÃ+Ä‹ÄýÄÅ ÅrŽÅàÅ–ÆžÆîÆûÆÇ ÇǗǪDZÇÌÇ…ÈýÈ&ÉbɪÉÑÉøÉÊ(ÊJÊqÊyʌʔÊûÊËË_ËwËÍ*Í9ÍGÍUÍcÍuÍÎ@ÎGÎJÎ…Î Ð,ÐMÐdÐlЄЌЮÐôÐÑrÑ|ѹÑËÑ(ÒJÒTÒÒÁÒÜÒ+ÓlÓtÓ½Ó\Ô–ÔÔÔôÔÕ…ÕÄÕÎÕØÕàÕ'Ö1ÖKÖžÖ­Ö¼Ö×"×6×>×a××Ô×Þר,Ø9ØCØnؘؽØÍØÙ"Ù3Ù=ÙlÙŽÙŸÙÓÙÛÙ<ÚDÚ˜ÚºÚ/ÛÛ˜ÛDÜSÜ`ÜØÜàÜ+Ý3ÝaÝçÝñÝ ÞÞÞ>Þ_ÞgÞvÞ~ÞÞ¦Þ°ÞL߆߱ßàˆàà¿àNâVâ„âã.ã6ãIãQãÐãäãäœä¥ä¶äÉäÑäÙäáäéäñä%åûå^ænæ~æ—æ×æßæçlç´çùç&è;èbèwèŒè²èÍèÕèðè1éµé½éÅéê‡êê—ê¬êÏê÷ê0ëkë¬ëåëîë-ìuì¡í½íÙíî[îcîkî{î“îÇîóîûîïïOïyïƒïï²ïÌïÖïðð\ðqðyðŽð–ð²ðñð#ñcñ{ñ„ñžñÆñéñ ò#ò8òIòAó—ó«óºóÄóÎó×ó/õõÁõÉõöö ö'ö9öÐö÷8÷ò÷ øøYøføŠøØøõøÿøùù!ù‰ùÀùöùúú+ú=úPúÏúÝú+û}û‹û=üxü€ü”ü§üÂüÐüØüàüèüý?ýýÎýñýùýþ+þ5þNþyþ…þ¢þÈþÔþàþÿ@ÿ…ÿâÿ"Bi¾ÒÜåRi‰‘™çš»ÓÛè4>Wau}…¦»ÃØàèð'/EMUØúŽçpŸÑV‡·î÷m   Ÿ © ² “ ¤ ° Á º Î p ‹ ¡ ¾ bet Ud³ÅÄ›Ôä<M½ÉcnZo>Gëý•­<Rc~/@ ´%6‰œ";æä7 ‘ ä ì ô"¦#Ó#+%Î%‹&'ê'#(ö)ž*“+é+.Z/d/”/Á/Œ0•0³1Ç13707l9=:¥:X;n;};‘; ;m<ƒ<’<¦<h=¥=>>>>H>¿>È>±@ AaA3BxBB—BñBûB®CPD'EEEYE‹EíEF¤FH)HMITIrI|IJšJK@K)LîLüL8MAMNZOŒO¹OFP†P‘PàPQ QIQ„RmSmT|TáTîTVxV€V‡VžV§VPWsW…WšWtXÀX&YµYÝY,Zª[Í[%\j\\¤\Á\ï\÷\9]A]I]]]g]”]œ]^^^f^n^v^~^­^·^_&_._6_@_P_x_f“fLh›h¤h i8jÆl nnYnin¤op pppˆpºpÖpïpqiq•qœq¤qr€rªtÎtãtìt¹ufvmvvv€v‹v—v¤vz z+z“zn{|0}8}‰}¦}È}Ð}  €6€›€¹€Í€ë€kŽ–‚y‚-ƒ:ƒh„«„…7…?…G…d…}…”…¹…Á…Î…Ö…††T†[‡ˆ@ˆˆµˆ¿ˆúˆP‰=ŠZŠoŠyŠŠý‹"Œ2Žz„Ž‘ã‘í‘÷‘v“5”¬”ñ”g•S–b–±–Ù–þ–)—3—m—¨—²—¼—C˜<™Ü™ šâšu›}›­›±›tœëœAŸã?ž²ž=ŸëŸ* O %¡)¡q¡Ç¡Ô¡L¢“¢ê£|¤Ф8ª@ªNª<²ñ²;³C³u³Ò³î³&´Ý´µcµ͵íµ¶L¶’¶̶· ·T·¸g¸E¹q¹„º±ºźõº7»6¼¼¥¼±¼½½ʽ÷½¾p¾†¾í¾A¿I¿º¿Ä¿Ì¿¿ÀøÀ ÁÁ¸ÁÌÁÔÁ÷ÁÂÂ@ÂLÂSÂeÂ|¦ÂÂÂãÂýÂÃ3Ã;ÃKÃUÃ`ÃuÃ—ÃØÃàÃèÃðÃøÃ ÄIÄSÄcİÄèÄöÄÅRÅZÅmÅœÅÅÅþÅÆÆ<ƢƪÆ߯éÆÇÇ0ÇTÇnÇ{ǛǴÇÂÇÌÇÔÇÈ&È.È6ÈhÈÄÈãÈÉZÉbÉ}É·ÉØÉéÉBʰʸÊÛÊbËj˶ËÑËÙËíË÷Ë Ì-ÌHÌX̪̽ÌÉÌÓÌïÌ÷ÌÍ#Í;ÍCÍT͇͙͑ͱÍÎ/Î7Î?ÎGΓΛÎÏÏÏ:ÐVÐrÐñÐ+ÑjѰѸÑËÑåÑÒ<Ò„Ò°ÒÝÒÓ“ÓÔÓ)Ô6ÔŠÔ’Ô]ÕîÕ&ÖMÖhÖrÖ•Ö¡Ö¨Ö²ÖÁÖàÖúÖ×B×X×`×ך×Ê×ò×ý×FØNØYØkØ~Ø’ØØéØÙ ÙBÚ‘Ú¥ÛáÛ5Ü]ÜÕÜßÜ ÝÝ'Ý.ÝlÝÞSÞߺßqá—áâÈã³çôçë•ë‡ììÃìÏìÙìîìúì+íÚíáí-î4î€îÍîÔî ï'ïsïzïÆïÍïð ðlðsð¿ðÆðíðôðññañ£ñ«ñöñ>ò­õÌõöõ ööö!ö=öEöMöUö]öeömöuö}ö‡öö—öŸö§ö¯ö·öÒöáöóöjùrùzù„ù¨ù²ùÊùßùçùïù÷ùÿùúúúfúnúvú~ú†úŽú–úžú¦úÁúßúòú0ûZûdûlûtû|û„ûŒû”ûœû¤û¬û´û¼ûÄûÌûÔûçûûûü üüü#ü+ü9ü™ü¡ü©ü±ü¹üÁüÕüßüéü ýýý%ý-ý5ý=ýEýMýUý]ýeýmýuý}ý…ýý•ý°ýÎýØý þ;þ…þ½þðþüþÿaÿtÿ˜ÿ .“¨Ðêõ6xˆ˜Ne‘­Þÿ5…—©²ºKckzœhpx $ 0 < | Š ˜ ¦ ´  Ð Þ ì ø    * 6 B N Z f r ~ Š –   $ > P ^ l t  ä  % 3 A O ] …  › ± ½ Ç Ó Ý é ó ÿ    + ; G Q ] g s } ‰ “ Ÿ © µ ¿ Ë Õ á ),/27 (8HX|Ž ²ÄÖè+.±ÅÙí)= "I#Q#Y#u##¦#´#Ý#í#û#($:$J$—$%K%–%ž%4&<&`&5'Z'ˆ'±'ì'(a(€#]¾$^ü%_:'`x(a¶)bô*c2,dp-e®.fì/g*1hh2i¦3jä4k"6l`7mž8nÜ9o;pX<q–=rÔ>s@tPAuŽBvÌCw ExHFy†GzÄH{J|@K}~L~¼MúN€8PvQ‚´RƒòS„0U…nV†¬W‡êXˆ(Z‰f[Ф\‹â]Œ _^`ŽœaÚbd‘Ve’”f“Òg”i•Nj–Œk—Êl˜n™Foš„p›Âqœs>tž|uŸºv øw¡6y¢tz£²{¤ð|¥.~¦l§ª€¨è©&ƒªd„«¢…¬à†­ˆ®\‰¯šŠ°Ø‹±²T޳’´Ðµ’¶L“·Š”¸È•¹—ºD˜»‚™¼Àš½þ›¾<¿zžÀ¸ŸÁö Â4¢Ãr£ݤÅî¥Æ,§Çj¨Ȩ©ÉæªÊ$¬Ëb­Ì ®ÍޯαÏZ²И³ÑÖ´Ò¶ÓR·Ô¸ÕιÖ »×J¼؈½ÙƾÚÀÛBÁÜ€ÂݾÃÞüÄß:ÆàxÇá¶ÈâôÉã2ËäpÌå®ÍæìÎç*Ðè@ÑõøÑöÒ÷2Óø¢ÓùzÖúêÖû.×ür×ý€  Ëíp3’ %                   ! " # $ % & ' ( ) * + , - . / 0 1 2 5464748494:4;4<4=4@?A@B@C@D@E@F@G@H@I@J@K@L?MLN?ONP?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?zy{y|y}y~yy€yy‚yƒy„y…„†„‡„ˆ„‰„Š„‹„Œ„„Ž„„y‘’“”•–—˜y™yšy›yœyyžyŸy y¡y¢y£y¤y¥y¦y§y¨y©yªy«y¬y­y®y¯y°y±y²yµ´¶µ·µ¸µ¹µºµ»µ¼µ½µ¾µ¿µÀµÁµÂµÃµÄµÅ´Æ´Ç´ËÊÌÊÍÊÎÊÏÊÐÊÑÊÒÊÓÊÔÊÕÊÖÊ×ÊØÊÙÊÛÚÞÝßÝàÝáÝâÝãÝäÝåÝæÝçÝèÝéÝêÝëÝìÝíÝîÝïÝðÝñÝòÝóÝôÝõÝöÝ÷ÝøÝùÝúÝûÝÿþþþþþþþþ5464748494;:<:=:>:?:@:A:CBDBEBFBGBHBIBJBKBMLNLOLPLQLRLSLTLULVLWLYXZX[X\X]X^X_X`XaXbXcXdXeXgfhfifjfkflfmfnfofpfqfrfsftfuf|{~}Љ‹‰Œ‰‰Ž‰“’”’•’–’—’¥¤¦¤§¤¨¤©¤ª¤«¤­¬®¬¯¬°¬±¬²¬³¬º¹»¹¼¹½¹¾¹¿¹À¹Á¹Â¹ÄÃÅÃÆÃÇÃÈÃÉÃÊÃËÃÌÃÍÃÎÃÏÃÐÃÑÃÒÃÓÃÔÃÕÃÖÃ×ÃØÃÙÃÚÃÛÃÜÃÝÃÞÃßÃàÃáÃâÃãÃäÃåÃæÃçÃèÃéÃêÃëÃìÃíÃîÃïÃðà           !"$#%#&#'#(#)#*#+#,#.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-DCECFCGCHCICJCKCLCMCONPNQNSRTRURVRWRXRYRZR[R\R]R_^`^a^b^c^d^e^f^g^h^i^j^k^l^m^n^o^p^q^r^tsutvtwtxtytzt{t|s}s~ss€ss‚sƒs„s…s†s‡sˆs‰sŠs‹sŒssŽsss‘s’s“s”s•s–s—s˜s™sšs›sœssžs¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŒŽŒŒ‘’”“•“–“—“˜“™“š“›“œžœŸœ œ¡œ¢œ£œ¤œ¥œ¦œ§œ¨œ©œ«ª¬ª­ª®ª¯ª°ª±ª²ª³ª´ªµª¶ª·ª¸ª¹ªºª»ª¼ª½ª¾ª¿ªÀªÁªÂªÅÄÆÄÇÄÈÄÉÄÊÉËÄÌÄÍÄÎÄÏÄÐÄÑÄÒÄÓÄÔÄÕÄÖÄ×ÄØÄÙÄÚÄÛÄÜÄÝÄÞÄßÄàÄáÄâÄãÄäÄåÄæÄçÄèÄéÄêÄëÄìÄíÄîÄðïñðòðóðôðõðöð÷ðøðùðúðûðüïýüþüÿüüüüüüüüüü ü ï     ï"!#!$!%!&%)(*(+(,(-(.(0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/KJLJMJNJQPRPSPTPUPVPWPXPYPZP[P]\^\_\`\bacadafegeheiekjljmjnjojpjyxzx{x~}}€}}‚}ƒ}„}…}†}‡}ˆ}‰}Š}‹}Œ}}Ž}}}‘}’}“}”}•}–}—}˜}™}š}›}œ}}ž}Ÿ} }¡}¢}£}¤}¥}¦}¨§©§ª§«§¬§­§®§¯§°§±§²§³§´§µ§¶§·§¸§¹§º§»§½¼¾½¿½À½Á½Â½Ã½Ä½Å¼Æ¼Ç¼È¼É¼Ê¼Ë¼Ì¼ÎÍÏÍÐÍÑÐÒÍÓÍÔÍÕÍÖÍ×ÍØÍÙÍÚÍÛÍÜÍÝÍÞÍàßâáäãåãæãçãìëíëîëïëóò÷öøöùöúöûöüöýöþýÿýýýýýýýýýý ý ý ý ý ýýýýýýýýýýýýýýýýýýý ý!ý"ý#ý$ý%ý&ý'ý(ý)ý*ý+ý,ý-ý.ý/ý0ý1ý2ý3ý4ý5ý6ý7ý8ý9ý:ý;ý<ý=ý>ý?ý@ý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ý[ý\ý]ý^ý_ý`ý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ý{ý|ý}ý~ýý€ýý‚ýƒý„ý…ý†ý‡ýˆý‰ýŠý‹ýŒýýŽýýý‘ý’ý“ý”ý•ý–ý—ý˜ý™ýšý›ýœýýžýŸý ý¡ý¢ý£ý¤ý¥ý¦ý§ý¨ý©ýªý«ý¬ý­ý®ý¯ý°ý±ý²ý³ý´ýµö¶ö·ö¹¸»º¼º½º¾º¿ºÀºÁºÂºÃºÄºÅºÆºÇºÈºÉºÊºËºÌºÎÍÏÍÐÍÑÍÒÍÓÍÔÍÕÍÖÍ×ÍØÍÙÍÚÍÛÍÜÍÝÍÞÍßÍàÍáÍâÍãÍäÍåÍæÍçÍèÍéÍêÍëÍìÍíÍîÍïÍðÍñÍòÍóÍôÍõÍöÍ÷ÍøÍùÍúÍûÍüÍýÍþÍÿÍÍÍÍÍÍÍÍÍÍ Í Í Í Í ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Í!Í"Í#Í$Í%Í&Í'Í(Í)Í*Í+Í,Í-Í.Í/Í0Í1Í2Í3Í4Í5Í6Í7Í8Í98:8;8<8=8>8?Í@?AÍBÍFEGEHEIEJEKELEMENEOEÈtÈt||G€*G€»vvïÈt7G€9G€?G€?vvª|²|¶G€¼Èt¾ÈtÀÈtÂÈtÄÈtÆÈtÌÈtÐÈtãG€åG€ùG€eG€gG€h%´h(´j%´j(´l%´l(´n%´n(´p%´p(´r%´r(´t%´t(´t¯´v%´v(´v¯´x%´x(´x¯´z%´z(´z¯´|%´|(´|¯´~%´~(´~¯´€%´€(´€¯´‚%´‚(´‚¯´„%´„(´„¯´„bµ†%´†(´†¯´†bµˆ%´ˆ(´ˆ¯´ˆbµŠ%´Š(´Š¯´ŠbµŒ%´Œ(´Œ¯´ŒbµŽ%´Ž(´Ž¯´Žbµ%´(´¯´bµ’%´’(´’¯´’bµ”%´”(´”¯´”bµ–%´–(´–¯´–bµ˜%´˜(´˜¯´˜bµ˜A¶š%´š(´š¯´šbµšA¶œ%´œ(´œ¯´œbµœA¶ž%´ž(´ž¯´žbµžA¶ %´ (´ ¯´ bµ A¶¢%´¢(´¢¯´¢bµ¢A¶¤%´¤(´¤¯´¤bµ¤A¶¦%´¦(´¦¯´¦bµ¦A¶¨%´¨(´¨¯´¨bµ¨A¶ª%´ª(´ª¯´ªbµªA¶¬%´¬(´¬¯´¬bµ¬A¶®%´®(´®¯´®bµ®A¶°%´°(´°¯´°bµ°A¶°L·²%´²(´²¯´²bµ²A¶²L·´%´´(´´¯´´bµ´A¶´L·¶%´¶(´¶¯´¶bµ¶A¶¶L·¸%´¸(´¸¯´¸bµ¸A¶¸L·º%´º(´º¯´ºbµºA¶ºL·¼%´¼(´¼¯´¼bµ¼A¶¼L·¾%´¾(´¾¯´¾bµ¾A¶¾L·À%´À(´À¯´ÀbµÀA¶ÀL·Â%´Â(´Â¯´ÂbµÂA¶ÂL·Ä%´Ä(´Ä¯´ÄbµÄA¶ÄL·Æ%´Æ(´Æ¯´ÆbµÆA¶ÆL·È%´È(´È¯´ÈbµÈA¶ÈL·Ê%´Ê(´Ê¯´ÊbµÊA¶ÊL·Ì%´Ì(´Ì¯´ÌbµÌA¶ÌL·Ìƒ¸Î%´Î(´Î¯´ÎbµÎA¶ÎL·Îƒ¸Ð%´Ð(´Ð¯´ÐbµÐA¶ÐL·Ðƒ¸Ò%´Ò(´Ò¯´ÒbµÒA¶ÒL·Òƒ¸Ô%´Ô(´Ô¯´ÔbµÔA¶ÔL·Ôƒ¸Ö%´Ö(´Ö¯´ÖbµÖA¶ÖL·Öƒ¸Ø%´Ø(´Ø¯´ØbµØA¶ØL·Øƒ¸Ú%´Ú(´Ú¯´ÚbµÚA¶ÚL·Úƒ¸Ü%´Ü(´Ü¯´ÜbµÜA¶ÜL·Üƒ¸Þ%´Þ(´Þ¯´ÞbµÞA¶ÞL·Þƒ¸à%´à(´à¯´àbµàA¶àL·àƒ¸â%´â(´â¯´âbµâA¶âL·âƒ¸ä%´ä(´ä¯´äbµäA¶äL·äƒ¸æ%´æ(´æ¯´æbµæA¶æL·æƒ¸è%´è(´è¯´èbµèA¶èL·èƒ¸ê%´ê(´ê¯´êbµêA¶êL·êƒ¸ð ¹ðo¹ô ¹ö ¹ø ¹ú ¹ü ¹þ ¹ ¹ ¹ ¹ã» ã» í»  ¹ ¹ ¹®½³½®½³½®½³½®½³½®½³½®½³½®½³½ ®½ ³½$ ¹& ¹( ¹* ¹, ¹. ¹0 ¹2 ¹8%´8(´<ã»>í»@ã»@í»B ¹l¬ÎlµÎl¼Îlo¹n¬ÎnµÎn¼Îno¹nÅÎä ¹ð ¹ü ¹þ ¹ ¹ ¹Sè eè S讽®½®½®½³½®½³½®½³½$ ¹& ¹&o¹(o¹( ¹* ¹*o¹,o¹, ¹. ¹0 ¹2 ¹2o¹4o¹4 ¹6 ¹8 ¹: ¹< ¹@ ¹B ¹BìB ìD ¹D ìDìH ¹Ho¹J ¹L ¹N ¹No¹P ¹Po¹R ¹T ¹V ¹X ¹XìX ì‰G€‰vvš ¹ž ¹  ¹¢ ¹¦G€¨G€ªG€¬G€®G€¶ ¹¹G€¹vv»G€»vv¿G€ÊG€ÌG€ÖG€Ú ¹Ü ¹Þ ¹à ¹â ¹ä ¹è ¹ê ¹ì ¹î ¹ð ¹ò ¹ô ¹ö ¹úG€üG€þG€G€G€G€vvG€vvG€ vvvvG€G€G€G€G€G€G€ G€"G€$G€&G€.G€2 ¹6G€8G€:G€<G€RG€TG€VG€X ¹Z ¹\ ¹^ ¹` ¹b ¹d ¹f ¹h ¹„ ¹† ¹ˆ ¹Š ¹Œ ¹Ž ¹ ¹’ ¹” ¹– ¹˜ ¹œ ¹ž ¹  ¹¢Üä¤Üä¤âä¦Üä¦âä¦èä¨ùä¨G€¨ ¹ª ¹¬ ¹® ¹°å° ¹²å² ¹¶ ¹¶å¸ ¹¸åºåº ¹¼ ¹¼å¾ ¹¾åÀ ¹Ä ¹Æ ¹È ¹Ê ¹Ì ¹ØSèÜ ¹Þ ¹ÞSèà ¹àSèâ ¹ä ¹äSèæ ¹è ¹èSèêSèìSèîSèðSèòSèôSèöSèúSèüSèþeèeèeèeèeèeè eè eèeèeèGG€TG€Tvv"G€"vv$G€$vv'|5|5G€7|7G€>o¹@o¹DG€DvvLo¹svv‚†‹‚vv‚_‹„vv„_‹„†‹–vvœ_‹ž_‹ _‹¢_‹¤_‹¦_‹¨vv¨_‹¼†‹¾†‹À†‹Â†‹ÅG€ÇG€ÇvvÌNÃÎNÃÐNÃÒ†‹ÒNÃÔ†‹6µÎRã»Tã»Tí»Vã»Ví»X ¹Z ¹\ ¹š%´š(´¢G€¤G€¦G€¨ ¹ª ¹¬ ¹® ¹° ¹²G€´G€¶G€º ¹ºG€¼ ¹¼o¹¾ ¹À ¹Ä®½Ä ¹Æ®½Æ ¹È®½È ¹ÌG€ÌvvÎG€ÎvvЮ½Ð³½ÒG€ÒvvÖ®½Ö³½Ø®½Ø³½Ú®½Ú³½Ü³½Ü®½Þ®½Þ³½à®½à³½ü ¹þvvþG€ ¹ ¹ vv G€ _‹ G€ vv ¹ ¹ o¹ ¹ o¹ %´ (´ o¹ ¹ o¹ %´ (´ %´ (´ ¯´ ¹ ¹ vv G€ ¹ ¹ ¹" ¹$ ¹& ¹( µÎ( ¹* ¹, ¹. ¹0 ¹2 ¹2 ®½4 ¹4 ®½6 ¹6 ®½8 ¹8 ®½: ¹< ¹< ®½> ¹> ®½@ ¹B ¹B ®½D ®½F ®½F ¹H ¹J ¹L ¹P ¹R ¹T ¹V o¹X ¹Z vvZ G€\ ¹\ o¹^ ¹b ¹d ¹d o¹f ¹h o¹h ¹h Æ4j ¹j o¹l ¹n ¹p ¹r í»t ã»t í»v ã»v í»z ¹| ¹~ ¹€ ¹‚ ¹„ ¹† ¹ˆ ¹Š ¹Œ ¹Ž ¹ ¹’ ¹” ¹– ¹˜ ¹œ ¹ž ¹¤ ¹¦ vv¦ G€¨ vv¨ G€ª _‹ª G€ª vv¬ o¹¬ ¹® ¹° vv° G€² o¹´ o¹¶ o¹¶ G€¸ ¹º ¹¼ ¹À ¹Ä ¹È ¹Ê ¹Ì ¹Î ¹Ø o¹Ø ¹Ú o¹Ú ¹Ü ¹Þ ¹î %´î ¯´î (´ð ¯´ð %´ð (´ò ¹ô ¹ô Bö ¹ø ¹þ ¹ ¹ ¹ µÎ ¹ ¹P ¹R ¹T ¹T BV ¹V B\ ¹\ o¹^ ¹^ o¹^ X¹` ¹d ¹h ¹l ¹p ¹t ¹x ¹| ¹€ ¹‚ ¹† ¹Š ¹Œ ¹ ¹” ¹– ¹š ¹ž ¹  ¹  o¹¤ ¹¤ o¹¦ ¹¦ o¹ª ¹ª o¹¬ ¹¬ o¹® ¹² ¹¶ ¹¸ ¹» ¹¼ ¹À ¹Â ¹Æ ¹Ê ¹Ë X¹Ì ¹Í X¹Í _¹Ï X¹Ï _¹Ï f¹Ð ¹Ñ X¹Ñ _¹Ñ f¹Ñ m¹Ó ¹Ô ¹Õ ¹Õ o¹Ö ¹× %´× (´× o¹Ù %´Ù (´Ù ¯´Ù o¹Ú ¹Û %´Û (´Û ¯´Û bµÛ o¹Ý %´Ý (´Ý ¯´Ý bµÝ A¶Ý o¹Þ ¹à ¹ä ¹è ¹ì ¹ð ¹ô ¹ø ¹ü ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ o¹ ¹ o¹ ¹ o¹ ¹$ ¹( ¹* ¹. ¹2 ¹4 ¹8 ¹< ¹> ¹B ¹F ¹H ¹L ¹P ¹R ¹S G€V ¹Z ¹\ ¹\ o¹` ¹` o¹b ¹b o¹f ¹f o¹h ¹h o¹r ¹v %´v (´v o¹x (´x o¹x %´z %´z (´z o¹| %´| (´| ¯´| o¹~ (´~ ¯´~ o¹~ %´€ %´€ (´€ ¯´€ o¹‚ %´‚ (´‚ ¯´‚ o¹„ %´„ (´„ ¯´„ bµ„ o¹† %´† (´† ¯´† bµ† o¹ˆ %´ˆ (´ˆ ¯´ˆ bµˆ o¹Š %´Š (´Š ¯´Š bµŠ o¹Œ (´Œ ¯´Œ bµŒ o¹Œ %´Ž %´Ž (´Ž ¯´Ž bµŽ A¶Ž o¹ (´ ¯´ bµ A¶ o¹ %´’ %´’ (´’ ¯´’ bµ’ A¶’ o¹” %´” (´” ¯´” bµ” A¶” o¹– %´– (´– ¯´– bµ– A¶– o¹˜ %´˜ (´˜ ¯´˜ bµ˜ A¶˜ o¹œ ¹ž ¹¾ ¹À ¹Â ¹Ä ¹Æ ¹È ¹Ð ¹Ò ¹Ô ¹Ö ¹Ö o¹Ö X¹Ø vvØ _‹Ú G€Ú vvÚ _‹Ü G€Ü vvÜ _‹Þ vvÞ _‹à G€à vvà _‹ë G€ó G€õ d«ù vvû vvü ¹ü o¹ü X¹þ vvþ _‹ G€ vv _‹ G€ vv _‹ vv _‹ G€ vv _‹$ ¹$ o¹$ X¹& vv& _‹( G€( vv( _‹* G€* vv* _‹, vv, _‹. G€. vv. _‹J ¹J o¹J X¹L vvL _‹N G€N vvN _‹P G€P vvP _‹R vvR _‹T G€T vvT _‹€ ¹ G€‰ o¹Œ ¹Œ o¹Ž ¹Ž o¹ ¹ o¹’ ¹’ o¹” ¹– ¹– o¹˜ %´˜ (´˜ o¹š %´š (´š ¯´š o¹œ %´œ (´œ ¯´œ bµœ o¹ž %´ž (´ž ¯´ž bµž A¶ž o¹® %´° %´° (´² %´² (´² ¯´´ %´´ (´´ ¯´´ bµ¶ %´¶ (´¶ ¯´¶ bµ¶ A¶¸ %´¸ (´¸ ¯´¸ bµ¸ A¶¸ L·º %´º (´º ¯´º bµº A¶º L·º ƒ¸¼ %´¼ (´¼ ¯´¼ bµ¼ A¶¼ L·¼ ƒ¸¼ .xu ¹ ¹‡ ¹; ¹= ¹? ¹A ¹Ao¹C ¹Co¹G ¹I ¹K ¹M ¹W ¹] ¹_ ¹c ¹e ¹o ¹q ¹s ¹u ¹wÜäw ¹yÜäyâäy ¹{Üä{âä{èä{ ¹}ùä} ¹å ¹ ¹‡ ¹ ¹¯G€±G€³G€½ ¹¿ ¹ßeèáeèãeèåeèë ¹í ¹ý ¹ÿ®½ÿ³½ ¹+ê ¹+ê ¹ ¹  ¹ o¹  ¹  ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹! ¹# ¹% ¹q ¹qo¹so¹u ¹uo¹w ¹y ¹{o¹{ ¹} ¹ ¹ ¹ƒ ¹… ¹…ì… ìí ¹ío¹íåï ¹ïåñ ¹ñåó ¹óo¹óåõo¹õ ¹õå÷ ¹÷åùåù ¹ûÆìû ¹ûÌìý ¹ýìý ìýå… ¹‡ ¹µ ¹µG€· ¹¹ ¹ÇG€Ë ¹G€G€ ¹  ¹  ¹  ¹qG€sG€wG€yG€{G€}G€G€vvG€vvƒG€…G€‡G€ ¹G€‘G€“G€WG€Y ¹] ¹a ¹c ¹eùäe ¹eG€gåg ¹gG€iSèkSèmSèm ¹oSèqSè ¹ ¹ ¹ ¹ ¹ ¹! ¹# ¹mvvoG€× ¹ãG€åG€õG€3 ¹C ¹EG€MvvOG€eG€evvkG€mG€© ¹¿G€ÁG€ÃG€ÕG€Õvv×G€×vvÙG€ÙvvÛG€ÛvvÝG€ÝvvßG€ßvv+o¹+ ¹-o¹- ¹/G€/vv/_‹1o¹1 ¹3o¹3 ¹5 ¹7 ¹7o¹9 ¹; ¹= ¹? ¹A ¹C ¹E ¹}G€Ã_‹ÃvvÅvvÅ_‹Å†‹ÇvvÇ_‹Ç†‹ÉvvÉ_‹É†‹ËvvË_‹Ë†‹ËG€;G€OG€UvvWG€YG€[G€[vvwvvvv_‹…†‹‡†‹‡NɆ‹G€— ¹™ ¹› ¹G€[ ¹] ¹cG€cd«eG€ed«g ¹gµÎµ ¹· ¹¹ ¹» ¹Á ¹™G€3! ¹5! ¹7! ¹9! ¹;! ¹=! ¹?! ¹A! ¹C! ¹E! ¹G! ¹I! ¹K! ¹M! ¹O! ¹Q! ¹Q!µÎS! ¹S!µÎU! ¹U!o¹W! ¹Y! ¹[! ¹]! ¹_! ¹a! ¹c! ¹e! ¹g! ¹i! ¹k! ¹m! ¹o! ¹q! ¹s!G€w!G€y!G€{! ¹}!G€! ¹!G€ƒ! ¹…! ¹‡!G€‰!G€‰!vv‹!G€‹!vv!G€!G€‘!G€“!G€•!G€—!G€™!G€›!G€!G€Ÿ!G€¡!G€£!G€¥! ¹§! ¹©! ¹«! ¹­!G€¯! ¹±!G€³! ¹µ!G€·!G€¹!G€»!G€½!G€¿!G€Á!G€Ã!G€Å!G€Ç! ¹É!G€Ë!vvÍ!G€Ï!G€Ñ!G€Ó!G€Õ!G€×!G€#"®½#" ¹%"®½%" ¹'"®½'" ¹)"®½)" ¹+"®½+" ¹-"®½-" ¹/"®½/" ¹1"®½1" ¹1"o¹3"®½3" ¹3"o¹5"®½5" ¹7"®½7" ¹9"®½9" ¹;"®½;" ¹="®½=" ¹="o¹?"®½?" ¹?"µÎA"®½A" ¹A"µÎC"®½C" ¹E"®½E" ¹G"®½G" ¹I"®½I" ¹K"®½K" ¹M"®½M" ¹O"®½O" ¹Q"®½Q" ¹S"®½S" ¹a"G€a"vvc"G€c"vve"G€e"vvg"G€g"vvi"³½i"G€k"³½k"G€m"³½m"G€o"³½o"G€q"³½q"G€s"³½s"G€u"³½u"G€w"G€w"vvy"³½y"G€{"³½{"G€}"G€}"vv"G€"vv"_‹"G€"vvƒ"G€ƒ"vv…"G€…"vv…"_‹‡"G€‡"vv‡"_‹‰"G€‰"vv‰"_‹‹"G€‹"vv‹"_‹"³½"_‹"†‹"³½"G€"vv‘"_‹‘"†‹“"G€“"vv•"G€•"vv—"G€—"vv™"G€™"vv›"G€›"vv"®½" ¹Ÿ"G€Ÿ"vv¡"G€¡"vv£"G€£"vv¥"G€§"G€©"G€©"vv«"G€«"vv­"G€­"vvÍ"®½Í"³½ç" ¹é" ¹ë" ¹í" ¹ï" ¹ñ" ¹ó" ¹õ" ¹÷" ¹ù" ¹û" ¹ý" ¹ÿ" ¹# ¹# ¹# ¹# ¹ # ¹ # ¹ #o¹ # ¹# ¹#o¹# ¹# ¹# ¹# ¹# ¹# ¹# ¹# ¹!# ¹## ¹%# ¹'# ¹'#o¹)# ¹+# ¹-# ¹/# ¹1# ¹3# ¹3#o¹5#%´5#(´7#%´7#(´7#o¹9#%´9#(´9#o¹;# ¹=#%´=#(´?# ¹?#o¹A# ¹C# ¹E#%´E#(´G#%´G#(´I# ¹K# ¹M#%´M#(´O#%´O#(´Q# ¹Q#o¹S# ¹S#o¹U# ¹U#o¹W# ¹W#o¹Y# ¹Y#o¹[# ¹]# ¹_# ¹a# ¹c# ¹e# ¹g#%´g#(´i#%´i#(´i#¯´k#%´k#(´m#%´m#(´m#¯´o# ¹q# ¹q#µÎs# ¹s#µÎu#%´u#(´u#µÎw#%´w#(´w#µÎy#G€y#vv{#G€{#vv}#G€}#vv# ¹#µÎ# ¹#µÎƒ# ¹…# ¹‡# ¹‰# ¹‰#®½‹# ¹# ¹# ¹#®½‘# ¹“# ¹•# ¹—# ¹™# ¹›# ¹# ¹Ÿ# ¹¡# ¹£# ¹£#o¹¥# ¹§# ¹§#o¹©# ¹«# ¹«#o¹­# ¹¯# ¹¯#o¹±# ¹³# ¹µ# ¹·# ¹¹# ¹»# ¹½# ¹¿# ¹¿#o¹Á# ¹Á#o¹Ã# ¹Å# ¹Ç# ¹É# ¹Ë# ¹Í# ¹Ï# ¹Ñ# ¹Ó# ¹Õ#G€Õ#vv×# ¹×#o¹Ù# ¹Û# ¹Ý#G€ß# ¹á#%´á#(´ã#%´ã#(´å#%´å#(´ç#%´ç#(´é#G€é#vvé#_‹é#†‹ë#%´ë#(´ë#¯´ë#o¹í#G€í#vví#_‹ï#%´ï#(´ï#o¹ñ#%´ñ#(´ñ#o¹ó# ¹ó#µÎõ# ¹õ#µÎ÷# ¹ù# ¹ù#µÎû# ¹û#µÎý#%´ý#(´ý#µÎÿ#%´ÿ#(´ÿ#µÎ$ ¹$G€$ ¹$µÎ$ ¹$ ¹$µÎ $ ¹ $µÎ $G€ $vv $_‹ $%´ $(´ $µÎ$%´$(´$µÎ$G€$vv$%´$(´$ ¹$ ¹$G€$vv$%´$(´$ ¹$ ¹!$ ¹!$o¹#$ ¹#$o¹%$ ¹'$ ¹)$%´)$(´+$%´+$(´+$¯´-$%´-$(´/$%´/$(´/$¯´1$ ¹3$ ¹3$®½5$ ¹7$ ¹9$ ¹;$ ¹=$ ¹?$ ¹A$ ¹C$ ¹E$ ¹E$o¹G$ ¹I$ ¹I$o¹K$ ¹M$ ¹M$o¹O$ ¹Q$ ¹Q$o¹S$ ¹S$o¹U$ ¹}$ ¹$G€$vv$ ¹ƒ$µÎƒ$ ¹…$ ¹‡$ ¹‰$ ¹‹$ ¹$ ¹$ ¹‘$ ¹“$ ¹•$%´•$(´—$G€—$vv™$G€™$vv™$_‹›$ ¹$ ¹$o¹Ÿ$ ¹Ÿ$o¹¡$%´¡$(´¡$o¹£$ ¹£$o¹¥$%´¥$(´§$%´§$(´§$¯´©$ ¹«$ ¹«$o¹­$ ¹­$o¹¯$ ¹±$ ¹³$ ¹µ$ ¹·$Æ4·$ ¹¹$ ¹»$ ¹»$µÎ½$ ¹¿$G€¿$vvÁ$ ¹Ã$ ¹Ã$Æ4Ã$o¹Å$ ¹Ç$ ¹É$ ¹Ë$ ¹Í$ ¹Ï$ ¹Ñ$ ¹Ó$ ¹Õ$ ¹×$ ¹×$µÎÙ$ ¹Û$ ¹Ý$ ¹ß$ ¹á$ ¹ã$ ¹å$ ¹ç$ ¹é$ ¹ë$ ¹í$ ¹ï$ ¹ï$®½ñ$ ¹ó$ ¹ó$®½õ$ ¹õ$®½÷$ ¹ù$ ¹ù$®½û$ ¹ý$ ¹ý$o¹ÿ$ ¹% ¹%o¹% ¹% ¹%o¹% ¹ % ¹ %o¹ % ¹ % ¹% ¹%%´%(´%%´%(´% ¹ &o¹ &G€ &vv& ¹&o¹& ¹&o¹& ¹&o¹& ¹&Æ4&o¹&o¹& ¹& ¹& ¹& ¹!&ã»!&í»& ¹Ÿ&G€¡& ¹£& ¹'G€'G€' ¹' ¹ 'G€ 'vv 'G€ 'vv 'G€ 'vv '_‹'o¹' ¹'o¹' ¹' ¹'G€'vv'o¹'o¹'G€'G€!'o¹%'o¹%'G€''G€''o¹)' ¹å' ¹ç' ¹í' ¹ï' ¹ñ' ¹ó' ¹ ( ¹( ¹( ¹( ¹( ¹(µÎ( ¹(µÎ( ¹( ¹( ¹( ¹(o¹!( ¹!(o¹#( ¹%( ¹'( ¹)( ¹+( ¹-( ¹/( ¹1( ¹3( ¹5( ¹7( ¹9( ¹;( ¹=( ¹?( ¹A( ¹C( ¹C(o¹E( ¹E(o¹G( ¹I( ¹K( ¹]( ¹_( ¹a( ¹c( ¹c(®½e( ¹g( ¹g(®½i( ¹i(®½k( ¹m( ¹o(G€o(vvq( ¹q(o¹s(G€s(vvu( ¹u(o¹w(G€w(vvw(_‹y(%´y((´y(o¹{( ¹}( ¹(G€( ¹ƒ(G€…( ¹…(o¹‡( ¹‡(o¹‰(G€‹( ¹( ¹( ¹‘(G€“(G€•( ¹—( ¹™(G€›( ¹(G€Ÿ(G€¡(G€£( ¹¥(G€¥(vv§(%´§((´©(G€©(vv©(_‹«(%´«((´«(¯´­(G€­(vv¯(%´¯((´±(G€±(vv±(_‹³(%´³((´³(¯´µ( ¹·( ¹¹( ¹»( ¹½(G€¿(G€Á(G€Ã(G€Å(G€Ç(G€É(G€Ë( ¹Í( ¹Ï( ¹Ñ( ¹Ó( ¹Õ( ¹×( ¹Ù( ¹Û( ¹Ý( ¹ß( ¹á( ¹é( ¹ë( ¹í( ¹ï( ¹ñ( ¹ó( ¹õ( ¹÷( ¹ù( ¹û( ¹ý( ¹ÿ( ¹) ¹) ¹) ¹)%´)(´ )%´ )(´ ) ¹ ) ¹) ¹) ¹)%´)o¹)%´)(´)o¹)%´)(´)¯´)o¹) ¹)o¹)%´)(´)o¹)%´)(´)¯´)o¹)%´)(´)¯´!)(´!)¯´!)%´%) ¹') ¹))%´))(´))¯´+)%´+)(´+)¯´-)%´-)(´-)¯´/)%´/)(´/)¯´1)%´1)(´1)¯´3) ¹5) ¹7) ¹9) ¹;) ¹=) ¹?) ¹A) ¹G) ¹I) ¹K) ¹M) ¹O) ¹Q) ¹S) ¹U) ¹W)o¹Y)®½Y)³½c) ¹e) ¹g) ¹i) ¹k) ¹m) ¹o) ¹q) ¹s) ¹u)Au) ¹w) ¹w)o¹y) ¹{) ¹}) ¹) ¹) ¹ƒ) ¹…) ¹‡) ¹‰) ¹‹) ¹) ¹)B) ¹‘) ¹“) ¹•) ¹—)%´—)(´™) ¹›) ¹) ¹Ÿ) ¹¡) ¹£) ¹¥) ¹§) ¹©) ¹©)o¹«) ¹­) ¹¯) ¹±) ¹³) ¹µ) ¹·) ¹·)o¹¹) ¹Ó)G€Õ)G€ * ¹* ¹*B* ¹*B* ¹M* ¹O* ¹Q* ¹S* ¹U* ¹W* ¹Y* ¹[* ¹]* ¹_* ¹c* ¹c*o¹e* ¹e*o¹e*X¹g* ¹i* ¹k* ¹m* ¹o*%´o*(´q* ¹s* ¹u* ¹w* ¹y* ¹{* ¹}* ¹* ¹*%´*(´ƒ* ¹…* ¹‡* ¹‰* ¹‹* ¹* ¹* ¹*o¹i.%´i.(´i.¯´k.%´k.(´k.¯´m. ¹o.%´o.(´o.¯´q. ¹s. ¹u. ¹w. ¹y. ¹{. ¹}. ¹. ¹. ¹ƒ. ¹…. ¹‡. ¹‰. ¹‹. ¹. ¹. ¹‘.G€“.G€•.G€—.G€™.G€/ ¹/ ¹/ ¹/ ¹ / ¹ / ¹ / ¹/ ¹/ ¹/ ¹/ ¹/ ¹/ ¹/ ¹#/ ¹%/ ¹'/ ¹)/ ¹+/ ¹K/ ¹M/ ¹O/ ¹Q/ ¹S/ ¹U/ ¹U/_LW/_LW/ ¹/ ¹ƒ/ ¹…/ ¹‡/ ¹‰/ ¹‹/ ¹/ ¹/ ¹‘/G€‘/vv‘/_‹“/ ¹“/o¹“/X¹•/%´•/(´•/o¹—/G€—/vv—/_‹™/ ¹™/o¹™/X¹›/%´›/(´›/o¹/G€/vv/_‹Ÿ/ ¹Ÿ/o¹Ÿ/X¹¡/%´¡/(´¡/o¹£/G€£/vv£/_‹¥/ ¹¥/o¹¥/X¹§/%´§/(´§/o¹g1 ¹i1 ¹k1G€‹1 ¹1 ¹1 ¹‘1 ¹“1 ¹•1 ¹¿1 ¹Á1 ¹Ã1 ¹×1 ¹Ù1 ¹Û1 ¹Ý1%´Ý1(´ß1%´ß1(´ß1¯´á1%´á1(´á1¯´á1bµã1%´ã1(´ã1¯´ã1bµã1A¶å1%´å1(´ç1%´ç1(´ç1¯´é1%´é1(´é1¯´é1bµë1%´ë1(´ë1¯´ë1bµë1A¶í1%´í1(´ï1%´ï1(´ï1¯´ñ1%´ñ1(´ñ1¯´ñ1bµó1%´ó1(´ó1¯´ó1bµó1A¶'2 ¹)2 ¹+2 ¹-2 ¹/2 ¹52 ¹;2 ¹=2 ¹?2 ¹A2 ¹C2 ¹E2 ¹G2 ¹I2 ¹K2 ¹M2 ¹O2 ¹Q2 ¹S2 ¹U2 ¹W2 ¹g2 ¹i2 ¹w2%´w2(´w2¯´w2bµw2A¶y2%´y2(´y2¯´y2bµy2A¶{2%´{2(´{2¯´{2bµ{2A¶}2%´}2(´}2¯´}2bµ}2A¶}2L·2%´2(´2¯´2bµ2A¶2L·2%´2(´2¯´2bµ2A¶2L·ƒ2%´ƒ2(´ƒ2¯´ƒ2bµƒ2A¶ƒ2L·…2%´…2(´…2¯´…2bµ…2A¶…2L·‡2%´‡2(´‡2¯´‡2bµ‡2A¶‡2L·‡2ƒ¸‰2%´‰2(´‰2¯´‰2bµ‰2A¶‰2L·‰2ƒ¸‹2%´‹2(´‹2¯´‹2bµ‹2A¶‹2L·‹2ƒ¸2%´2(´2¯´2bµ2A¶2L·2ƒ¸2%´2(´2¯´2bµ2A¶2L·2ƒ¸‘2 ¹á3%´ã3%´ã3(´å3%´å3(´å3¯´ç3%´ç3(´ç3¯´ç3bµé3%´é3(´é3¯´é3bµé3A¶ë3%´ë3(´ë3¯´ë3bµë3A¶ë3L·í3%´í3(´í3¯´í3bµí3A¶í3L·í3ƒ¸ï3%´ï3(´ï3¯´ï3bµï3A¶ï3L·ï3ƒ¸ï3„v°#·#·#·*#·42¤ Ä=!Æ!Ä¥!Æ"6Z$Ê$·º#·*2†%Ú1¯%*2·%Â1¯%À1¯%2/'>Ò':ö'Â#ü'>(E¥!&2»*:ú*OD+F)»*<ö'2$s+<z+¾1´+>ð+oö'>8,>•,…ö',$ª,>..#@.™€.Ž$.:š.F)ö'*Ê5än64á6#@.Ú1¥!EL9î:À1.F>¨>&2.&2?&2/?&2Ã?&2î?&2(@&2ø@&2A&2[A.2þAÊ$î?.2lB&2tB8!†B.2ŸBÊ$†B*¥C*ÿC*/Dô$SDœ$]DÊ$¥!¸´F¾#G$Gº7GÀ#ùGì$.Â#Ip#íIœ$òI¼#JR"ÈKF!ÑKœ$æKÊ$öK$®LÀ1?À1/?âOÀ1UP­RŠ1tBÚ1tBÂ1tBÀ1tBÚ1ÊTÂ1ÊTÀ1ÊTÀ1ùTÀ1©UÐ$î?„$î?œ$ëV¶$öV.2öWT!Xœ$X¾?XÎ$mX†#mXp#„XÖ1´X&2ÑKº YH"ZZ@)öKþÏ[Â#á[o^*2ì`*2ò`#ía#¯%4´FÊ$mXÊ$|bÊ$JÐ$mXœ$Üd¶$ëd„$mXœ$+e.2‹e:mX@ßg:ö'#¥!ïmX#¥!#=!ùmX#=!<ö'Æ%i@diHmX<mXÆæi*2ö'Š1·Š1¶lÂ1·Â1¶lÀ1·À1¶lŠ1;oÂ1;oÀ1;oŠ1ýrÂ1ýrÀ1ýrv2rwx2rwz2rwÀ1jx|2I|~2I|€2I|‚2I|„2I|†2ù€ˆ2ù€Š2ù€Œ2ù€Ž2ù€*2@…–†#—‡'»‡1‰5+‰9X‰*2øŒ/·–.·˜.·{·2·¾1¯%P/·”"â’Ì"â’š"â’œ"â’h"â’j"â’~"¯“€"â’t"â’‚"â’ˆ"¯“Ž"¯“|"â’„"’”†"¯“p"â’f"â’z"â’x"â’l"â’’"â’–"â’Ö1·Ö1¶lÒ$4–Ê$4–/M–¬"â’€$·Î$·€$¶lÎ$¶l¾1¶lž"â’Æ$4–œ$ó—Î$˜Ð!·Ö!·z!·‚!·˜!·„!·†!·Š!š !·”!·P/L9Š!ÝšŽ!·Œ!·–!·š!·œ!·º$4›¼$b›È!·´!·¶!·¦!·ª!·!·’!·Ì!·Ô!·Ò$·&2b›Î!·Ä!·¾1ïœB#ïœ>#x(#¯%*2ù¡*µp($µp(fµ@)oµ4Œµ4µµ4Òµ4ñµ4¶4<¶4i¶Öœ¶x(¥¶F!Ò·Ö¸Þ¸Ü)¹¨L9¾1Ûº*2èº*23»Ì(»ô#F¼€([¼€„¿|L9~´FŒ´FL9’L9‚L9„L9zL9ÆL97ÂÊL9dö'ö'z’Â’€¨ÂpL9t–†t—‡t‰dõÄ€/'~ÅÅ€ùÅ€#Æ€:ƆL9ÑL9j·€®È€:É€jɾ1}É L9 L9) L9+ L9Î$L9–†2(–†L9´F4L96´F:L9<L9œ$xМ$2Òt?ÓvL9†L9t´FtÕr¶lí ¶l†–†€ÖÞV@.€ ßn`ßt`ß„`ß» ö' &à¾1[¼Ì(âàŒ`á~`ázá€Ááz×á~ßg|ðâ’ðâG åpL9xö'vL9x·v·zö'€(‡ç··· ·l(øè ·€´F‚–†~#ÆŒHì~„¿&2î€ñº$QòXL9€Úö|ö'42Ûº&2Ð÷42Þ÷V·V[¼Vaø\·`·Î$Fú:#Fú|’Ân·~ˆür·|·~Êüp·‚·b·p·~Öý´ïþ¶·¸·f}ÿ&2·Ì(èºÌ(ÈÌ(¶lr·|Fú~ï| ~2h·|øŒl¤ÝFú~ð~üíFúù·~in·p·„ö'Œ&2ò*2’Â*2ã*2*2¥!*2l*2=!*2Í*2*2mX*2†B*2ƒ*2³¾1Ò·Ö( Ú¸¾1W,#(L9lL9n¸®()¹d#ád#,#wâ#|â@.â#ì.#¸,#áâ#/¾1l(¸¾1^¾1k¾1ár#Ïl() ¦()¹$x ,#WŠ(W$Wp(T!.#ïœ2ïœBç!BL92ç!LL9Nïœd#@.p(5%À &R"'À4(*Â+p(Å-ô# .4!Ò·@!Ò·l(D/l( /,#@.Š(@.p(¾0(#ïœ+¸ä@.p(Ïdª3p(½4@)¸lïœjïœDïœô’Âô@.ôãôô¥!ôlô=!ôÍôômXô†Bôƒô³ôö'ÀD/Â4(˜7Ú1a8Â1a8Ú1º8Â1º8À1º8À@.€(–†Ô´FØ´F$´Fô#Ã=Ú1Ò·Ú1¸Ú1ïœÂ1Ò·Â1¸Â1ïœÚ1Ú1áÚ1^Ú1kÚ1WÂ1Â1áÂ1^Â1kÂ1WÀ1o@À1Ò·À1¸À1ïœÀ1À1áÀ1^À1kÀ1WÊ A*´FÊ„A.¹A.óA*-B*Ã=0„¿2„¿|ö'i²F*2ËG*2ÏG*2H’1Hš¯%&2fI&2L9ÂÃ=ÄeK€(¯%ÆeK&2‰ÈeKµ¯%ÈRP#mXNmX€(@.VL9TmXó€S¯%ZÜTp($L9†(´FÎ$@.¯ö'¯¥! &L9 &–†|$L9~$´F'L9Ãö' &—‡–$?Ó–$´F˜$eK $Ö¶¤$»‡ $·ª$´F®$L9&´Fá–†—L9¾$‰¹œ$´F¶$»‡Ä$L9Ø$L9Ü$L9ä$L9~$„X|$£¾|$é¿'¤'·G‹e'·'â’ 'â’ 'RP'â’'· &·¢&·e·.2ZÄà$·æ$·è$·ì$·Š$·Š$(Æœ$FÆh(â’j(·Š$¶lœ$åÇ &´F&´F&´F'ö''õÉ &õÉ&sʾ1·&'¤('·'·&â’&·œ&L9ž&·œ&·'L9'ö'Ì(L9'L9'–†(–†'¯%¹·Ã·'·'·'· '·$'â’'¶l(¶l'·Ø1·f1·4(L9#L96(L98(L9AÅÅ8(–†A¤R/–†UÃ=R/L9UfÝP/–†Y„Xf(´Ff(?Ó[°Ýn(Ã=Ö†r(Ã=v(Nˆ~(L9‚(–†„(´Fˆ(L9Œ(L9‚(L9(L9”(qà’(L9˜(L9œ(L9ž(L9 (L9¤(´F¨(eK¬(´F°(eK´(L9Ê(L9¼(L9Â(L9À(L9Ä(L9È(L9¾(L9Æ(L9’1L9”1L9¾1L9Œ1L9à(L9”/eK /eK”.L9Ö1L9Ø1L9†/L9*L9*Ã=f*L9h*L9j*L9l*L9n*´Fp*L9r*L9t*L9v*L9x*L9z*L9|*L9~*L9€*´F‚*L9„*L9†*L9ˆ*L9Š*L9Œ*L9Ž*´FN*L9š/ íš/í¦/ í¾1–†L*L9D2L9F2L9L2L9N2L9T2L9V2L9—–†Ô)·Ò)·Ž1·g· *·1·*¤b*úd*éúb*3üb*â’d*íš/eK’.·.·ÃýrWjx]`ƒ³‰¸æÀ1L9Â1L9Š1L9f1L9h1L9Ú1L9L/L9ÃL9/eK–/eKœ/eK¢/eKŒ1HJ/·N/·Œ1·€/·‚/·’/RP/RP˜/RP–/RPž/RPœ/RP¤/RP¢/RPj1mXÚ1–†Ú1—‡Ú1‰Ú1GÂ1–†Â1—‡Â1‰Â1GŠ1–†Š1—‡Š1‰Š1GyL9Š1úÂ1úÀ1–†À1—‡À1‰À1GÀ1úŠ1QÂ1QÀ1Q   t¹u¹”¹–¹IA¹C¹F¹H¹I¹L¹N¹£¹¤¹¦¹ô#ª$I&I'ª)ª.¹0¹ðI ¹J J D¹F¹H¹K¹N¹P¹Q¹S¹U¹Y¹uI¹”Äšq"J (ö ,jhV jV kIljnJ s¹{ Iu IFsLex.exeFSCore.resourcesSystemObjectmscorlibInternal.Utilities.Text.LexingPositionIEquatable`1IComparable`1IComparableLexBufferFiller`1LexBuffer`1AsciiTablesUnicodeTablesInternal.Utilities.Text.ParsingIParseStateParseErrorContext`1Tables`1Stack`1RecoverableParseErrorExceptionAcceptFSharp.PowerPack.FsLexDriverlexbuf@34usage@49usage@50-1usage@51-2usage@52-3usage@53-4clo@57-4cfprintfn@68spec@79spec@81-4spec@81-3spec@81-2spec@81-1dfaNodes@88main@104-1main@104main@107-3main@107-2trans@129trans@161-1main@185-5main@185-4main@194-11main@194-10main@194-9main@194-8main@194-7main@194-6main@197-13main@197-12main@201-16main@201-15main@205-18main@205-17main@199-14main@211-20main@211-19.$FSharp.PowerPack.FsLexLexerhexdigit@36_fslex_string@151-1_fslex_string@151_fslex_comment@198-1_fslex_comment@198_fslex_comment@200-3_fslex_comment@200-2_fslex_comment@204-5_fslex_comment@204-4ParsertokenTagsUNICODE_CATEGORYCHARCODESTRINGIDENTUNICODE_CATEGORY@DebugTypeProxyCHAR@DebugTypeProxyCODE@DebugTypeProxySTRING@DebugTypeProxyIDENT@DebugTypeProxytokenIdnonTerminalId_fsyacc_reductions@246_fsyacc_reductions@255-1_fsyacc_reductions@269-2_fsyacc_reductions@280-3_fsyacc_reductions@290-4_fsyacc_reductions@300-5_fsyacc_reductions@312-6_fsyacc_reductions@324-7_fsyacc_reductions@336-8_fsyacc_reductions@347-9_fsyacc_reductions@361-10_fsyacc_reductions@371-11_fsyacc_reductions@383-12_fsyacc_reductions@393-13_fsyacc_reductions@403-14_fsyacc_reductions@415-15_fsyacc_reductions@426-16_fsyacc_reductions@438-17_fsyacc_reductions@449-18_fsyacc_reductions@460-19_fsyacc_reductions@470-20_fsyacc_reductions@39-22_fsyacc_reductions@480-21_fsyacc_reductions@491-23_fsyacc_reductions@502-24_fsyacc_reductions@514-25_fsyacc_reductions@525-26_fsyacc_reductions@536-27_fsyacc_reductions@547-28_fsyacc_reductions@559-29_fsyacc_reductions@47-31_fsyacc_reductions@570-30_fsyacc_reductions@581-32_fsyacc_reductions@592-33_fsyacc_reductions@52-35_fsyacc_reductions@603-34_fsyacc_reductions@615-36tables@642tables@631-1tables@632-2ASTEncodeUnicodeCategory@68EncodeChar@88DecodeChar@95GetSpecificUnicodeChars@104System.Collections.GenericKeyValuePair`2GetSpecificUnicodeChars@103-1GetSingleCharAlphabet@108GetSingleCharAlphabet@110-1GetAlphabet@114GetAlphabet@116-1SpecRegexpAltSeqInpStarMacroAlt@DebugTypeProxySeq@DebugTypeProxyInp@DebugTypeProxyStar@DebugTypeProxyMacro@DebugTypeProxyInputAlphabetUnicodeCategoryNotCharSetAlphabet@DebugTypeProxyUnicodeCategory@DebugTypeProxyNotCharSet@DebugTypeProxyNfaNodeDfaNodeNfaNodeMapCompileRegexp@189-1trs@192CompileRegexp@216-3IEnumerable`1CompileRegexp@214-2CompileRegexp@222-4CompileRegexp@227-6CompileRegexp@236-7System.GlobalizationCompileRegexp@237-8CompileRegexp@227-5trs@255-1NfaNodeIdSet-ctor@264newDfaNodeId@309EClosure1@313-1HashSet`1System.Coreacc@324IEqualityComparer`1ComputeMoves@338-2ComputeMoves@333-1acc@341-1dfaNode@353dfaNode@356-1NfaToDfa@397NfaToDfa@395-1Compile@402-1Compile@402Internal.UtilitiesArgspecClearFloatIntRestSetStringUnitClear@DebugTypeProxyFloat@DebugTypeProxyInt@DebugTypeProxyRest@DebugTypeProxySet@DebugTypeProxyString@DebugTypeProxyUnit@DebugTypeProxygetUsage@24HelpBad.$Internal.UtilitiesParseHelpersImplementationAssocTableReadAll@194IdxToIdxListTableReadAll@204-1ValueInfoValueTypeparseState@254explicit@456-1explicit@456shiftableTokens@459-1shiftableTokens@463-2shiftableTokens@459reducibleProductions@469reduceTokens@473-1reduceTokens@477-2reduceTokens@473$Prim-parsingTop@111GenericImplFragments$Prim-lexingget_RefillBuffer@136get_AsyncRefillBuffer@137FromReadFunctions@163FromReadFunctions@175-3FromReadFunctions@174-2FromReadFunctions@172-1FromCharFunction@185FromByteFunction@191lexBuffer@201lexBuffer@202-2lexBuffer@202-1FromTextReader@213FromBinaryReader@216FromStream@219FromStream@219-1scanUntilSentinel@286-1endOfScan@309-1scanUntilSentinel@298-4scanUntilSentinel@294-3scanUntilSentinel@288-2endOfScan@310-2clo@266clo@266-1scanUntilSentinel@393-6endOfScan@418-4scanUntilSentinel@400-8scanUntilSentinel@396-7endOfScan@419-5clo@366-2clo@366-3.$Assemblyinfo.fslexexe.$AssemblyinfoCommonT15633_278Bytes@T15493_318Bytes@T15471_68Bytes@T15468_728Bytes@T15466_112Bytes@T15464_288Bytes@T15462_26Bytes@T15460_184Bytes@Microsoft.FSharp.CoreSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributePrivateEnvironmentFSharpChoice`2Choice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1System.CollectionsIEnumerableListDebugView`1LazyFailureLazy`1IObserver`1IObservable`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1EventDelegee`1FSharpEvent`2FSharpEvent`1Microsoft.FSharp.MathBigNatSystem.NumericsBigIntegerMicrosoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1AggregateExceptionSystem.ThreadingCancellationTokenRegistrationCancellationTokenCallbackInfoCancellationTokenSourceQueue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1Microsoft.BuildSettingsVersion$AssemblyAttributesExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45$Fslib-extra-pervasivesObservableModuleBasicObserver`1Map@2233-6Map@2231-5Choose@2243-3Choose@2241-2Filter@2251-2Partition@2255-1Scan@2263-5Scan@2260-4Pairwise@2284-3Pairwise@2281-2h1@2302h2@2317Merge@2332-3Merge@2296-2Split@2339-1Split@2340-2EventModuleMap@2122-4Filter@2128-1Partition@2135Choose@2141-1Scan@2148-3Pairwise@2162-1Merge@2173Merge@2174-1Split@2181WebExtensionsAsyncGetResponse@1780-1System.NetWebResponseAsyncGetResponse@1783-3AsyncCallbackAsyncGetResponse@1784-4AsyncGetResponse@1785-5AsyncGetResponse@1783-2AsyncGetResponse@1780downloadAsync@1806-3DownloadStringCompletedEventHandlerdownloadAsync@1806-4downloadAsync@1806-6downloadAsync@1806-5DownloadStringCompletedEventArgsdownloadAsync@1804-2downloadAsync@1803-1downloadAsync@1813-7downloadAsync@1813-8downloadAsync@1813-10downloadAsync@1813-9downloadAsync@1801OperationCanceledExceptionAsyncDownloadString@1818-1AsyncDownloadString@1818-3AsyncDownloadString@1818-2AsyncDownloadString@1818CommonExtensionsAsyncRead@1729AsyncRead@1729-1AsyncReadBytes@1735-1AsyncReadBytes@1737-3AsyncReadBytes@1736-2AsyncReadBytes@1740-4AsyncReadBytes@1733AsyncWrite@1746AsyncWrite@1746-1SubscribeToObservable@1765AsBeginEndHelperscont@1568-3econt@1569-4ccont@1570-6CancellationTokenOpsstarter@1111starter@1110-1RunSynchronously@1116RunSynchronously@1117-1RunSynchronously@1118-2Start@1142Start@1143-1Start@1144-2StartWithContinuations@1149StartWithContinuations@1149-1StartWithContinuations@1149-2AsyncImplswitchTo@853-1switchTo@852switchToNewThread@858-1switchToNewThread@857switchToThreadPool@862-1switchToThreadPool@861delimitSyncContext@907-1delimitSyncContext@907delimitSyncContext@909-3delimitSyncContext@909-2delimitSyncContext@910-5delimitSyncContext@910-4protectedPrimitiveWithResync@919OnceSuspendedAsync`1action@937ContinueWithPostOrQueue@949ResultCell`1RegisterResult@1034get_AwaitResult@1039AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxythreadStartCallbackForStartThreadWithTrampoline@649startAsync@663queueAsync@667protectedPrimitive@690resultA@706-1resultA@702args@720bindA@727-1bindA@714callA@740-1callA@740-2callA@736cont@758-1cont@758-2cont@758econt@761-1econt@761-2econt@761ccont@764-1ccont@764-2ccont@764tryFinallyA@751econt@774-3tryWithA@770ccont@785-4ccont@785-5ccont@785-3whenCancelledA@784getCancellationToken@789usingA@800whileA@808forA@816-1forA@817-2forA@814sequentialA@821CancellationState$Control-ctor@136List`1handler@143toRun@168-1toRun@168doRun@172-ctor@464-1-ctor@473-2-ctor@482-3once@1216-2once@1218-3once@1209-1FromContinuations@1205Catch@1232-1Catch@1232-2Catch@1231Parallel@1308-2Parallel@1310-3Parallel@1312-4Parallel@1304-1Parallel@1258StartImmediate@1324StartImmediate@1324-1StartImmediate@1324-2Sleep@1339-2Sleep@1330-1Sleep@1327AwaitWaitHandle@1347cancelHandler@1381-1cancelHandler@1369AwaitWaitHandle@1390-3AwaitWaitHandle@1387-2AwaitWaitHandle@1365-1AwaitIAsyncResult@1398ReifyResult@1406AwaitAndReifyResult@1416-1AwaitAndReifyResult@1415AsyncWaitAsyncWithTimeout@1450-1AsyncWaitAsyncWithTimeout@1448-4AsyncWaitAsyncWithTimeout@1441-3AsyncWaitAsyncWithTimeout@1437-2AsyncWaitAsyncWithTimeout@1436AsyncWaitAsyncWithTimeout@1431-5onCancel@1465-1registration@1473callback@1483-1callback@1475FromBeginEnd@1455-1FromBeginEnd@1454FromBeginEnd@1502-2FromBeginEnd@1506-3FromBeginEnd@1509-4beginAction@1606-1AsBeginEnd@1607AsBeginEnd@1607-1onCancel@1625-3AwaitEvent@1630-5AwaitEvent@1616-2AwaitEvent@1637-7AwaitEvent@1633-6AwaitEvent@1632-3AwaitEvent@1642-4AwaitEvent@1613-1AwaitEvent@1612Ignore@1653_reg@1666StartChild@1674-2StartChild@1675-3StartChild@1676-4StartChild@1663-1StartChild@1661SwitchToContext@1690-1SwitchToContext@1687h@1697-2OnCancel@1699-1OnCancel@1697-ctor@1848-4Post@1940scan@1949-2scan@1947-3scan@1944-1TryScan@1954-1TryScan@1951Scan@1958-2Scan@1957-1processFirstArrival@1969-2processFirstArrival@1965-1TryReceive@1973processFirstArrival@1984-5processFirstArrival@1980-4Receive@1988p@2036-1p@2037-3p@2037-2p@2036msg@2048msg@2063-1PostAndTryAsyncReply@2077-2PostAndTryAsyncReply@2076-1PostAndTryAsyncReply@2075PostAndTryAsyncReply@2071-4PostAndTryAsyncReply@2070-3PostAndAsyncReply@2092-1PostAndAsyncReply@2091msg@2086-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1687ApplicationsPattern@1689SpecificCallPattern@1707SpecificCallPattern@1713-1TypePatternsModuleByteStreamLetRecursivePattern@472getRecordProperty@482System.ReflectionPropertyInfogetUnionCaseInfo@488checkArgs@585ParameterInfomkNewTupleWithType@650mkNewRecord@667mkNewUnionCase@676mkNewArray@691dlfun@798mkLetRec@820mkLetRec@822-1typesEqual@831instFormal@833methInfos@845MethodInfoargTs@856haveArgTs@862select@853argTs@877-1inst@912mkNamedTycon@1072u_tyconstSpec@1096u_tyconstSpec@1097-1u_tyconstSpec@1098-2appL@1101u_dtype@1106u_dtype@1107-1u_dtype@1107-2u_dtype@1107-3u_dtypes@1110u_dtypes@1110-1BindingEnvenvClosed@1127u_Expr@1134u_Expr@1134-1u_Expr@1137-3u_Expr@1135-2u_Expr@1139-4u_Expr@1142-5u_Expr@1145-6u_Expr@1147-7attrs@1149u_Expr@1150-9u_Expr@1150-8u_Expr@1152-10u_VarDecl@1156u_VarRef@1159u_RecdField@1162u_UnionCaseInfo@1165u_UnionCaseField@1169u_MethodInfoData@1177u_MethodInfoData@1177-1u_constSpec@1260u_constSpec@1260-1u_constSpec@1238-2u_constSpec@1239-3u_constSpec@1240-4u_constSpec@1241-5u_constSpec@1242-6u_constSpec@1243-7u_constSpec@1244-8u_constSpec@1245-9u_constSpec@1246-10u_constSpec@1247-11u_constSpec@1248-12u_constSpec@1249-13u_constSpec@1250-14u_constSpec@1251-15u_constSpec@1252-16u_constSpec@1253-17u_constSpec@1254-18u_constSpec@1255-19u_constSpec@1256-20u_constSpec@1257-21u_constSpec@1258-22u_constSpec@1259-23u_constSpec@1222-24u_constSpec@1223-25u_constSpec@1224-26u_constSpec@1225-27u_constSpec@1226-28u_constSpec@1227-29u_constSpec@1228-30u_constSpec@1229-31u_constSpec@1230-32u_constSpec@1231-33u_constSpec@1232-34u_constSpec@1233-35u_constSpec@1234-36u_constSpec@1235-37u_constSpec@1236-38u_constSpec@1237-39u_constSpec@1207-40u_constSpec@1208-41u_constSpec@1213-42u_constSpec@1214-43u_constSpec@1215-44u_constSpec@1216-45u_constSpec@1217-46u_constSpec@1218-47u_constSpec@1219-48u_constSpec@1220-49u_ReflectedDefinition@1261MethodBaseu_ReflectedDefinitions@1262unpickleExpr@1264unpickleExpr@1264-1unpickleReflectedDefns@1266fillHolesInRawExpr@1278freeInExprAcc@1288mkTyparSubst@1303Clashsubstargs@1315substituteInExpr@1331decodedTopResources@1348AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1377registerReflectedDefinitions@1381qdataResources@1412qdataResources@1408-1data@1421-1data@1420SimpleUnpickleInputStatephase2data@1046phase2data@1046-1HelpersmkRLinear@51mkLLinear@52$Quotationsexpr@202pairL@205varL@212|Lambda|_|@214-1|NLambdas|_|@218-1GetLayout@267Applications@1484NewDelegate@1549PrintfModulePrintFormatToStringThen@569-1PrintFormatToStringThen@568-2PrintFormatToStringThen@570-3PrintFormatToStringThen@567kprintf_imperative@579-1kprintf_imperative@579PrintFormatToStringBuilderThen@584PrintFormatToTextWriterThen@587PrintFormatToStringThen@590-4PrintFormatToStringThenFail@593PrintFormatToStringBuilder@596PrintFormatToTextWriter@599PrintFormatLineToTextWriter@602PrintfImplPrintfInfobuildFunctionForOneArgPat@207buildFunctionForTwoArgPat@215-1buildFunctionForTwoArgPat@214buildFunctionForOneFunArgPat@221captureCoreArgs@307-1captureCoreArgs@324-2captureCoreArgs@309-3captureCoreArgs@308-4captureCoreArgs@326-5captureCoreArgs@325-6captureCoreArgs@322-7captureCoreArgs@316-8captureCoreArgs@318-9captureCoreArgs@317-10captureCoreArgs@319-11captureCoreArgs@327-12captureCoreArgs@310-13captureCoreArgs@323-14captureCoreArgs@328-15capturePrecisionArg@335-1capture1@339gprintf@509capture@535-1$PrintfDisplayBreaksitemL@664itemL@677-1PrecedenceShowModestopShort@781-1res@821objL@784-1recdAtomicTupleL@872-3recdAtomicTupleL@872-2recdAtomicTupleL@872-1recdAtomicTupleL@873-6recdAtomicTupleL@873-5recdAtomicTupleL@873-4recdAtomicTupleL@873-7objL@784-2bracketIfL@875-1project@949project2@958-1rowL@960project1@961possibleKeyValueL@979-4possibleKeyValueL@979-3possibleKeyValueL@979-2possibleKeyValueL@982-7possibleKeyValueL@982-6possibleKeyValueL@982-5possibleKeyValueL@975-1itemLs@985itemLs@997-1reprL@1021-1IComparerreprL@1026-2itemL@888-6itemL@888-5itemL@888-4itemL@887-3project@896-2leafFormatter@1071squash_layout@1115output_layout@1119layout_to_string@1123ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@356pvals@362-1LayoutOpsjoin@148join1@149join2@150join3@151op_AtAt@162op_AtAtMinus@163op_AtAtMinusMinus@164commaListL@174semiListL@175spaceListL@176sepListL@177aboveListL@183unfoldL@209$Sformatget_Default@244NumericLiteralsNumericLiteralI$ZBigNatModuleencodingmulKaratsuba@982mul@1046FFTFp$N$Eventget_Publish@36get_Publish@77-2get_Publish@68-1h@99-1get_Publish@101-4get_Publish@93-3ImplgetInstancePropertyReader@61getUnionTypeTagNameMap@145FieldInfogetUnionTypeTagNameMap@144-1getUnionTypeTagNameMap@127-2tagField@150getUnionTagConverter@162getUnionTagConverter@163-1getUnionTagConverter@166-2fieldsPropsOfUnionCase@212fieldsPropsOfUnionCase@211-1fieldsPropsOfUnionCase@210-2getUnionCaseRecordReader@217getUnionTagReader@221getUnionTagReader@225-1getUnionTagReader@230-2getUnionTagReader@228-3getUnionCaseConstructor@255orderTupleProperties@337getTupleCtor@355reader@362-1getTupleReader@368getTupleConstructor@381fieldPropsOfRecordType@447fieldPropsOfRecordType@446-1getRecordReader@457getRecordConstructor@467$ReflectMakeTupleType@585GetUnionCases@608Make@623PreComputeRecordFieldReader@650SetModuleSetTreeModulesubset@227psubset@229psubset@229-1nextElemCont@312nextElem@317prevElemCont@323prevElem@328SetIterator`1mkIEnumerator@413-1copyToArray@472-1ofArray@491$SetFold@568Map@588-3Union@621Intersection@624MapModuleToSeq@631FindKey@634TryFindKey@637MapTreeModuleofList@287copyToArray@312MapIterator`2mkIEnumerator@360$MapSystem-Collections-Generic-IDictionary-2-get_Keys@504-1System-Collections-Generic-IDictionary-2-get_Keys@504System-Collections-Generic-IDictionary-2-get_Values@507-1System-Collections-Generic-IDictionary-2-get_Values@507System-IComparable-CompareTo@528get_Items@551Array4DModuleArray3DModule$Array3ArrayModule$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@808mkUnfoldSeq@809InitializeInfinite@821Initialize@826revamp@880revamp2@882Filter@887Map@892-1MapIndexed@897-1Map2@903Choose@908Zip@914Zip3@921Cast@926Take@967fromGenerator@1023Append@1031-1Append@1031OfArray@1076Singleton@1094Truncate@1100Pairwise@1109Scan@1120Windowed@1160result@1205cleanup@1219ReadOnly@1232GroupBy@1244-1GroupBy@1255-2GroupBy@1259-3GroupBy@1239Distinct@1265DistinctBy@1276SortBy@1286Sort@1294CountBy@1306-1CountBy@1313-2CountBy@1302TakeWhile@1420Skip@1428SkipWhile@1438RuntimeHelpersStructBox`1gcomparer@530get_Comparer@531mkSeq@541EmptyEnumerable`1Generate@555EnumerateFromFunctions@563EnumerateFromFunctions@564-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@680EnumerateUsing@681-1mkConcatSeq@684EnumerateWhile@697-1EnumerateWhile@696EnumerateThenFinally@713-1h@720CreateEvent@722-1CreateEvent@716GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@401Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@384EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@494-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@499cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@152filter@169unfold@186getCurrent@221-1upto@225generateWhileSome@261ArrayEnumerator`1Singleton`1EnumerateThenFinally@318$SeqMoveNextImpl@751ComparisonIdentityFromFunction@48IComparer`1HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@110MapIndexed@115Copy@120Rebase@127$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsOperatorsop_ComposeRight@3502op_ComposeLeft@3504op_Range@5258op_RangeStep@5274PowInteger@5420PowInteger@5420-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4710RangeInt32@4710-1RangeInt32@4710-2RangeInt64@4711RangeInt64@4711-1RangeInt64@4711-2RangeUInt64@4712RangeUInt64@4712-1RangeUInt64@4712-2RangeUInt32@4713RangeUInt32@4713-1RangeUInt32@4713-2RangeIntPtr@4714RangeIntPtr@4714-1RangeIntPtr@4714-2RangeUIntPtr@4715RangeUIntPtr@4715-1RangeUIntPtr@4715-2RangeInt16@4716RangeInt16@4716-1RangeInt16@4716-2RangeUInt16@4717RangeUInt16@4717-1RangeUInt16@4717-2RangeSByte@4718RangeSByte@4718-1RangeSByte@4718-2RangeByte@4719RangeByte@4719-1RangeByte@4719-2RangeDouble@4720RangeDouble@4720-1RangeDouble@4720-2RangeSingle@4721RangeSingle@4721-1RangeSingle@4721-2RangeGeneric@4722RangeGeneric@4722-1RangeStepGeneric@4723RangeStepGeneric@4723-1RangeChar@4725RangeChar@4725-1UnaryDynamicImpl@5021BinaryDynamicImpl@5027AbsDynamicImplTable`1-cctor@5033-61-cctor@5033-62-cctor@5034-63-cctor@5034-64-cctor@5035-65-cctor@5035-66-cctor@5036-67-cctor@5036-68-cctor@5037-69-cctor@5037-70-cctor@5038-71-cctor@5038-72-cctor@5039-73-cctor@5039-74-cctor@5040-75Decimal-cctor@5040-76AcosDynamicImplTable`1-cctor@5048-77-cctor@5048-78-cctor@5049-79-cctor@5049-80AsinDynamicImplTable`1-cctor@5057-81-cctor@5057-82-cctor@5058-83-cctor@5058-84AtanDynamicImplTable`1-cctor@5066-85-cctor@5066-86-cctor@5067-87-cctor@5067-88Atan2DynamicImplTable`2-cctor@5075-89-cctor@5075-91-cctor@5075-90-cctor@5076-92-cctor@5076-94-cctor@5076-93CeilingDynamicImplTable`1-cctor@5084-95-cctor@5084-96-cctor@5085-97-cctor@5085-98ExpDynamicImplTable`1-cctor@5093-99-cctor@5093-100-cctor@5094-101-cctor@5094-102FloorDynamicImplTable`1-cctor@5102-103-cctor@5102-104-cctor@5103-105-cctor@5103-106TruncateDynamicImplTable`1-cctor@5111-107-cctor@5111-108-cctor@5112-109-cctor@5112-110RoundDynamicImplTable`1-cctor@5120-111-cctor@5120-112-cctor@5121-113-cctor@5121-114SignDynamicImplTable`1-cctor@5129-115-cctor@5129-116-cctor@5130-117-cctor@5130-118-cctor@5131-119-cctor@5131-120-cctor@5132-121-cctor@5132-122-cctor@5133-123-cctor@5133-124-cctor@5134-125-cctor@5134-126-cctor@5135-127-cctor@5135-128-cctor@5136-129-cctor@5136-130LogDynamicImplTable`1-cctor@5144-131-cctor@5144-132-cctor@5145-133-cctor@5145-134Log10DynamicImplTable`1-cctor@5153-135-cctor@5153-136-cctor@5154-137-cctor@5154-138SqrtDynamicImplTable`2-cctor@5162-139-cctor@5162-140-cctor@5163-141-cctor@5163-142CosDynamicImplTable`1-cctor@5171-143-cctor@5171-144-cctor@5172-145-cctor@5172-146CoshDynamicImplTable`1-cctor@5180-147-cctor@5180-148-cctor@5181-149-cctor@5181-150SinDynamicImplTable`1-cctor@5189-151-cctor@5189-152-cctor@5190-153-cctor@5190-154SinhDynamicImplTable`1-cctor@5198-155-cctor@5198-156-cctor@5199-157-cctor@5199-158TanDynamicImplTable`1-cctor@5207-159-cctor@5207-160-cctor@5208-161-cctor@5208-162TanhDynamicImplTable`1-cctor@5216-163-cctor@5216-164-cctor@5217-165-cctor@5217-166PowDynamicImplTable`2-cctor@5225-167-cctor@5225-169-cctor@5225-168-cctor@5226-170-cctor@5226-172-cctor@5226-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@2927Adapt@2933FSharpFunc`4Invoke@2940-1Adapt@2948-1Adapt@2951-2FSharpFunc`5Adapt@2965-3Adapt@2970-4Adapt@2973-5Invoke@2975-2FSharpFunc`6Invoke@2981-3Adapt@2990-6Adapt@2995-7Adapt@3000-8Adapt@3003-9LanguagePrimitivesFastGenericEqualityComparer@2023FastLimitedGenericEqualityComparer@2024CharComparer@2030StringComparer@2031SByteComparer@2032Int16Comparer@2033Int32Comparer@2034Int64Comparer@2035IntPtrComparer@2036ByteComparer@2037UInt16Comparer@2038UInt32Comparer@2039UInt64Comparer@2040UIntPtrComparer@2041FloatComparer@2042Float32Comparer@2043DecimalComparer@2044FastGenericComparerTable`1-cctor@2081-cctor@2104-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2350-2-cctor@2351-3-cctor@2352-4-cctor@2356-5-cctor@2355-7-cctor@2355-6AdditionDynamicImplTable`3dyn@2384-2dyn@2384-1dyn@2383-3dyn@2382-5dyn@2382-4-cctor@2387-8-cctor@2388-9-cctor@2389-10-cctor@2390-11-cctor@2391-12-cctor@2392-13-cctor@2393-14-cctor@2394-15-cctor@2395-16-cctor@2396-17-cctor@2397-18-cctor@2398-19-cctor@2399-20CheckedAdditionDynamicImplTable`3dyn@2421-8dyn@2421-7dyn@2420-9dyn@2419-11dyn@2419-10-cctor@2424-21-cctor@2425-22-cctor@2426-23-cctor@2427-24-cctor@2428-25-cctor@2429-26-cctor@2430-27-cctor@2431-28-cctor@2432-29-cctor@2433-30-cctor@2434-31-cctor@2435-32-cctor@2436-33-cctor@2437-34MultiplyDynamicImplTable`3dyn@2461-14dyn@2461-13dyn@2460-15dyn@2459-17dyn@2459-16-cctor@2464-35-cctor@2465-36-cctor@2466-37-cctor@2467-38-cctor@2468-39-cctor@2469-40-cctor@2470-41-cctor@2471-42-cctor@2472-43-cctor@2473-44-cctor@2474-45-cctor@2475-46-cctor@2476-47CheckedMultiplyDynamicImplTable`3dyn@2498-20dyn@2498-19dyn@2497-21dyn@2496-23dyn@2496-22-cctor@2501-48-cctor@2502-49-cctor@2503-50-cctor@2504-51-cctor@2505-52-cctor@2506-53-cctor@2507-54-cctor@2508-55-cctor@2509-56-cctor@2510-57-cctor@2511-58-cctor@2512-59-cctor@2513-60HashCompareGenericComparerfsEqualityComparer@1565IEqualityComparerfsEqualityComparerER@1570CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3035op_Implicit@3037-1FromConverter@3039ToConverter@3040ToFSharpFunc@3050ToFSharpFunc@3051-1FuncFromTupled@3052FuncFromTupled@3053-1FuncFromTupled@3054-2FuncFromTupled@3055-3SR$Sr$Prim-types-preludeIStructuralComparableIStructuralEquatableITupleTupleTuple`1Tuple`2Tuple`3Tuple`4Tuple`5Tuple`6Tuple`7Tuple`8FsLexAssemblyVersionAttribute.ctorAssemblyFileVersionAttributeAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModespos_fnamepos_lnumpos_orig_lnumpos_bolpos_cnumFileNameLineOriginalLineCharObsoleteAttributeAbsoluteOffsetStartOfLineStartOfLineAbsoluteOffsetColumnNextLineEmptypos_fname@DebuggerBrowsableAttributeDebuggerBrowsableStatepos_lnum@pos_orig_lnum@pos_bol@pos_cnum@get_pos_fnameget_pos_lnumget_pos_orig_lnumget_pos_bolget_pos_cnumCompareOrdinalCompareToobjSystem.Runtime.CompilerServicesCompilerGeneratedAttributecompGetHashCodeEqualsget_FileNameget_Lineget_OriginalLineget_Charget_AbsoluteOffsetget_StartOfLineget_StartOfLineAbsoluteOffsetget_Columnget_NextLineEndOfTokennAsNewLinePosShiftColumnBybyget_EmptyFirstLinefilenamefillSyncfillAsyncfillSync@fillAsync@get_fillSyncget_fillAsynccharStartPosEndPosLexemeBufferLocalStoreLexemeLengthBufferBufferMaxScanLengthBufferScanLengthBufferScanStartBufferAcceptActionRefillBufferAsyncRefillBufferIsPastEndOfStreamBufferScanPosfillerthiscontextDictionary`2bufferbufferMaxScanLengthbufferScanStartbufferScanLengthlexemeLengthbufferAcceptActioneofstartPosendPosinit@75set_contentsset_StartPosget_LexemeLengthset_EndPosEndOfScanget_StartPosbget_EndPosget_LexemeLexemeCharget_BufferLocalStoreset_LexemeLengthvget_Bufferset_Bufferget_BufferMaxScanLengthset_BufferMaxScanLengthget_BufferScanLengthset_BufferScanLengthget_BufferScanStartset_BufferScanStartget_BufferAcceptActionset_BufferAcceptActionget_RefillBufferget_AsyncRefillBufferLexemeStringlexbufget_IsPastEndOfStreamset_IsPastEndOfStreamdiscardInputDiscardInputget_BufferScanPosEnsureBufferSizeget_ValueSomeFromReadFunctionssyncReadasyncReadFromFunctionfFromAsyncFunctionFromCharFunctionFromByteFunctionFromArraysFromBytesarrFromCharsToCharArrayFromStringFromTextReaderSystem.IOTextReadertrFromBinaryReaderBinaryReaderbrFromStreamStreamstreamInvalidOperationExceptionget_contentsInvokeextendBufferSyncextendBufferAsynctransacceptInterpretinitialStatelexBufferAsyncInterpretCreateUInt16BytescanUntilSentinelstatesentinelnumLowUnicodeCharsnumSpecificUnicodeCharseofPoslookupUnicodeCharactersinpResultRangeParserLocalStoreInputRangeindexInputEndPositionInputStartPositionget_ResultRangeGetInputget_ParserLocalStoreRaiseErrorStateStackReduceTokensCurrentTokenParseStateReducibleProductionsShiftTokensMessagestateStackshiftableTokensreducibleProductionsreduceTokensparseStatemessagecurrentTokenget_StateStackget_ReduceTokensget_CurrentTokenget_ParseStateget_ReducibleProductionsget_ShiftTokensget_MessagetokreductionsendOfInputTagtagOfTokendataOfTokenactionTableElementsactionTableRowOffsetsreductionSymbolCountsimmediateActionsgotossparseGotoTableRowOffsetsstateToProdIdxsTableElementsstateToProdIdxsTableRowOffsetsproductionToNonTerminalTableparseErrornumTerminalstagOfErrorTerminalreductions@endOfInputTag@tagOfToken@dataOfToken@actionTableElements@actionTableRowOffsets@reductionSymbolCounts@immediateActions@gotos@sparseGotoTableRowOffsets@stateToProdIdxsTableElements@stateToProdIdxsTableRowOffsets@productionToNonTerminalTable@parseError@numTerminals@tagOfErrorTerminal@get_reductionsget_endOfInputTagget_tagOfTokenget_dataOfTokenget_actionTableElementsget_actionTableRowOffsetsget_reductionSymbolCountsget_immediateActionsget_gotosget_sparseGotoTableRowOffsetsget_stateToProdIdxsTableElementsget_stateToProdIdxsTableRowOffsetsget_productionToNonTerminalTableget_parseErrorget_numTerminalsget_tagOfErrorTerminallexerstartStateCountIsEmptycontentscountEnsurenewSizeget_CountPopPeepTopPushxget_IsEmptyConsoleWritePrintStackaGetObjectDataSystem.Runtime.SerializationSerializationInfoStreamingContextinfoData0Data0@data0get_Data0inputoutinputCodePagelightlexlibusagelineCountFileStreamStreamReaderFileModeFileAccessFileShareSystem.TextEncodingGetEncodingUnicodeFileAsLexbufcodePageget_inputget_outget_inputCodePageget_lightget_lexlibset_lexlibvalueget_usageIFormattableTextWriterInt32CultureInfoget_InvariantCultureIFormatProviderToStringoutput_intosoutputCodedUInt16get_sentinelDebuggerNonUserCodeAttributeget_lineCountcfprintfnfmtContainsKeyget_Itememit@131StreamWriterGetEnumeratorMoveNextget_CurrentDisposemain$cont@112dfaNodesunitVaremit@163-1get_Item1get_Item2get_Item3get_OutInvokeFastget_LengthPathGetDirectoryNameGetFileNameWithoutExtensionCombineConcatFileCreateTextHasExtensionGetExtensionReplaceSplitget_HeadJoinmainreaderReadtupledArgiunitVar0WriteLineclo4arg40clo3arg30clo2arg20clo1arg10dictAddclo7arg70clo6arg60clo5arg50outputStringSplitOptionsinput@41out@42inputCodePage@43light@44lexlib@46usage@48lineCount@67init@Consmain@actions_fslex_tablesfield15494@field15495@field15496@field15497@field15498@field15499@field15500@field15501@field15502@field15503@field15504@field15505@field15506@field15507@field15508@field15509@field15510@field15511@field15512@field15513@field15514@field15515@field15516@field15517@field15518@field15519@field15520@field15521@field15522@field15523@field15524@field15525@field15526@field15527@field15528@field15529@field15530@field15531@field15532@field15533@field15534@field15535@field15536@field15537@field15538@field15539@field15540@field15541@field15542@field15543@field15544@field15545@field15546@field15547@field15548@field15549@field15550@field15551@field15552@field15553@field15554@field15555@field15556@field15557@field15558@field15559@field15560@field15561@field15562@field15563@field15564@field15565@field15566@field15567@field15568@field15569@field15570@field15571@field15572@field15573@field15574@field15575@field15576@field15577@field15578@field15579@field15580@field15581@field15582@field15583@field15584@field15585@field15586@field15587@field15588@field15589@field15590@field15591@field15592@field15593@field15594@field15595@field15596@field15597@field15598@field15599@field15600@field15601@field15602@field15603@field15604@field15605@field15606@field15607@field15608@field15609@field15610@field15611@field15612@field15613@field15614@field15615@field15616@field15617@field15618@field15619@field15620@field15621@field15622@field15623@field15624@field15625@field15626@field15627@field15628@field15629@field15630@field15631@field15632@field15634@escapeclexemenewlineunexpected_chardigitdhexdigittrigraphc1c2c3hexgraphget_Charsunicodegraph_shortunicodegraph_longget_transget_actionsget__fslex_tables_fslex_dummyStringBuilderSubstringAppend_fslex_token_fslex_statestringpbuffEnvironmentget_NewLine_fslex_stringcode_fslex_codecodestring_fslex_codestringcomment_fslex_comment.cctortrans@60actions@341_fslex_tables@342InitializeArrayRuntimeFieldHandle_fsyacc_endOfInputTag_fsyacc_tagOfErrorTerminal_fsyacc_gotos_fsyacc_sparseGotoTableRowOffsets_fsyacc_stateToProdIdxsTableElements_fsyacc_stateToProdIdxsTableRowOffsets_fsyacc_action_rows_fsyacc_actionTableElements_fsyacc_actionTableRowOffsets_fsyacc_reductionSymbolCounts_fsyacc_productionToNonTerminalTable_fsyacc_immediateActionsfield15461@field15463@field15465@field15467@field15469@field15470@field15472@field15473@field15474@CompareTo$cont@15-6CompareTo$cont@15-7objCastGetHashCode$cont@15GetHashCode$cont@40-1ttokenTagToTokenIdtokenIdxprodIdxToNonTerminalprodIdxget__fsyacc_endOfInputTagget__fsyacc_tagOfErrorTerminaltoken_to_string_fsyacc_dataOfTokenget__fsyacc_gotosget__fsyacc_sparseGotoTableRowOffsetsget__fsyacc_stateToProdIdxsTableElementsget__fsyacc_stateToProdIdxsTableRowOffsetsget__fsyacc_action_rowsget__fsyacc_actionTableElementsget__fsyacc_actionTableRowOffsetsget__fsyacc_reductionSymbolCountsget__fsyacc_productionToNonTerminalTableget__fsyacc_immediateActions_fsyacc_reductionstablesengineTagIsIDENTIsSTRINGIsCODEIsCHARIsUNICODE_CATEGORYRPARENIsRPARENLPARENIsLPARENANDIsANDLETIsLETPARSEIsPARSERULEIsRULEDASHIsDASHHATIsHATRBRACKIsRBRACKLBRACKIsLBRACKUNDERSCOREIsUNDERSCOREEQUALSIsEQUALSQMARKIsQMARKSTARIsSTARPLUSIsPLUSDOTIsDOTBARIsBAREOFIsEOF_tag_unique_EOF_unique_BAR_unique_DOT_unique_PLUS_unique_STAR_unique_QMARK_unique_EQUALS_unique_UNDERSCORE_unique_LBRACK_unique_RBRACK_unique_HAT_unique_DASH_unique_RULE_unique_PARSE_unique_LET_unique_AND_unique_LPAREN_unique_RPARENNewIDENTitemget_IsIDENTNewSTRINGget_IsSTRINGNewCODEget_IsCODENewCHARget_IsCHARNewUNICODE_CATEGORYget_IsUNICODE_CATEGORYget_RPARENget_IsRPARENget_LPARENget_IsLPARENget_ANDget_IsANDget_LETget_IsLETget_PARSEget_IsPARSEget_RULEget_IsRULEget_DASHget_IsDASHget_HATget_IsHATget_RBRACKget_IsRBRACKget_LBRACKget_IsLBRACKget_UNDERSCOREget_IsUNDERSCOREget_EQUALSget_IsEQUALSget_QMARKget_IsQMARKget_STARget_IsSTARget_PLUSget_IsPLUSget_DOTget_IsDOTget_BARget_IsBARget_EOFget_IsEOFget_Tag__DebugDisplayDebuggerDisplayAttributeItemDebuggerTypeProxyAttribute_objTOKEN_errorIsTOKEN_errorTOKEN_end_of_inputIsTOKEN_end_of_inputTOKEN_IDENTIsTOKEN_IDENTTOKEN_STRINGIsTOKEN_STRINGTOKEN_CODEIsTOKEN_CODETOKEN_CHARIsTOKEN_CHARTOKEN_UNICODE_CATEGORYIsTOKEN_UNICODE_CATEGORYTOKEN_RPARENIsTOKEN_RPARENTOKEN_LPARENIsTOKEN_LPARENTOKEN_ANDIsTOKEN_ANDTOKEN_LETIsTOKEN_LETTOKEN_PARSEIsTOKEN_PARSETOKEN_RULEIsTOKEN_RULETOKEN_DASHIsTOKEN_DASHTOKEN_HATIsTOKEN_HATTOKEN_RBRACKIsTOKEN_RBRACKTOKEN_LBRACKIsTOKEN_LBRACKTOKEN_UNDERSCOREIsTOKEN_UNDERSCORETOKEN_EQUALSIsTOKEN_EQUALSTOKEN_QMARKIsTOKEN_QMARKTOKEN_STARIsTOKEN_STARTOKEN_PLUSIsTOKEN_PLUSTOKEN_DOTIsTOKEN_DOTTOKEN_BARIsTOKEN_BARTOKEN_EOFIsTOKEN_EOF_unique_TOKEN_EOF_unique_TOKEN_BAR_unique_TOKEN_DOT_unique_TOKEN_PLUS_unique_TOKEN_STAR_unique_TOKEN_QMARK_unique_TOKEN_EQUALS_unique_TOKEN_UNDERSCORE_unique_TOKEN_LBRACK_unique_TOKEN_RBRACK_unique_TOKEN_HAT_unique_TOKEN_DASH_unique_TOKEN_RULE_unique_TOKEN_PARSE_unique_TOKEN_LET_unique_TOKEN_AND_unique_TOKEN_LPAREN_unique_TOKEN_RPAREN_unique_TOKEN_UNICODE_CATEGORY_unique_TOKEN_CHAR_unique_TOKEN_CODE_unique_TOKEN_STRING_unique_TOKEN_IDENT_unique_TOKEN_end_of_input_unique_TOKEN_errorget_TOKEN_errorget_IsTOKEN_errorget_TOKEN_end_of_inputget_IsTOKEN_end_of_inputget_TOKEN_IDENTget_IsTOKEN_IDENTget_TOKEN_STRINGget_IsTOKEN_STRINGget_TOKEN_CODEget_IsTOKEN_CODEget_TOKEN_CHARget_IsTOKEN_CHARget_TOKEN_UNICODE_CATEGORYget_IsTOKEN_UNICODE_CATEGORYget_TOKEN_RPARENget_IsTOKEN_RPARENget_TOKEN_LPARENget_IsTOKEN_LPARENget_TOKEN_ANDget_IsTOKEN_ANDget_TOKEN_LETget_IsTOKEN_LETget_TOKEN_PARSEget_IsTOKEN_PARSEget_TOKEN_RULEget_IsTOKEN_RULEget_TOKEN_DASHget_IsTOKEN_DASHget_TOKEN_HATget_IsTOKEN_HATget_TOKEN_RBRACKget_IsTOKEN_RBRACKget_TOKEN_LBRACKget_IsTOKEN_LBRACKget_TOKEN_UNDERSCOREget_IsTOKEN_UNDERSCOREget_TOKEN_EQUALSget_IsTOKEN_EQUALSget_TOKEN_QMARKget_IsTOKEN_QMARKget_TOKEN_STARget_IsTOKEN_STARget_TOKEN_PLUSget_IsTOKEN_PLUSget_TOKEN_DOTget_IsTOKEN_DOTget_TOKEN_BARget_IsTOKEN_BARget_TOKEN_EOFget_IsTOKEN_EOFNONTERM_charsetIsNONTERM_charsetNONTERM_regexpIsNONTERM_regexpNONTERM_clauseIsNONTERM_clauseNONTERM_clausesIsNONTERM_clausesNONTERM_optbarIsNONTERM_optbarNONTERM_argsIsNONTERM_argsNONTERM_ruleIsNONTERM_ruleNONTERM_RulesIsNONTERM_RulesNONTERM_macroIsNONTERM_macroNONTERM_MacrosIsNONTERM_MacrosNONTERM_codeoptIsNONTERM_codeoptNONTERM_specIsNONTERM_specNONTERM__startspecIsNONTERM__startspec_unique_NONTERM__startspec_unique_NONTERM_spec_unique_NONTERM_codeopt_unique_NONTERM_Macros_unique_NONTERM_macro_unique_NONTERM_Rules_unique_NONTERM_rule_unique_NONTERM_args_unique_NONTERM_optbar_unique_NONTERM_clauses_unique_NONTERM_clause_unique_NONTERM_regexp_unique_NONTERM_charsetget_NONTERM_charsetget_IsNONTERM_charsetget_NONTERM_regexpget_IsNONTERM_regexpget_NONTERM_clauseget_IsNONTERM_clauseget_NONTERM_clausesget_IsNONTERM_clausesget_NONTERM_optbarget_IsNONTERM_optbarget_NONTERM_argsget_IsNONTERM_argsget_NONTERM_ruleget_IsNONTERM_ruleget_NONTERM_Rulesget_IsNONTERM_Rulesget_NONTERM_macroget_IsNONTERM_macroget_NONTERM_Macrosget_IsNONTERM_Macrosget_NONTERM_codeoptget_IsNONTERM_codeoptget_NONTERM_specget_IsNONTERM_specget_NONTERM__startspecget_IsNONTERM__startspec_1enumpccurrentGenerateNextnextCloseget_CheckCloseget_LastGeneratedGetFreshEnumerator_2_3op_Additionctxt_fsyacc_gotos@234_fsyacc_sparseGotoTableRowOffsets@235_fsyacc_stateToProdIdxsTableElements@236_fsyacc_stateToProdIdxsTableRowOffsets@237_fsyacc_actionTableElements@239_fsyacc_actionTableRowOffsets@240_fsyacc_reductionSymbolCounts@241_fsyacc_productionToNonTerminalTable@242_fsyacc_immediateActions@243EofEpsilonunicodeunicodeCategoriesNumUnicodeCategoriesencodedUnicodeCategoryBasespecificUnicodeCharsspecificUnicodeCharsDecodenewDfaNodeIdi@308get_Key|KeyValue|kvpget_Eofget_Epsilonget_unicodeget_unicodeCategoriesget_NumUnicodeCategoriesget_encodedUnicodeCategoryBaseEncodeUnicodeCategoryIndexidxEncodeUnicodeCategoryIsUnicodeCategoryUnicodeCategoryIndexget_numLowUnicodeCharsget_specificUnicodeCharsget_specificUnicodeCharsDecodeConvertToUInt32set_ItemEncodeCharToCharDecodeCharNumSpecificUnicodeCharsGetSpecificUnicodeCharsGetSingleCharAlphabetGetAlphabetCompareTo$cont@128-2CompareTo$cont@134-3CompareTo$cont@154-4CompareTo$cont@154-5objTempLookupMultiMaptrDictAddToMultiMapCompileRegexp@189macrosnfaNodeMapredestsTrans@249macros@249nodeIdregexpLexerStateToNfaclausesgo@296xryrgo@282-1get_newDfaNodeIdget_i@308Containsget_TailOrNullEClosure1@313accEClosure@323movesComputeMoves@331nsetGetDfaNode@347nfaSetEnumeratorget_HeadOrDefaultLoop@367workListdoneSetNfaToDfanfaStartNodeCompile_arg2_arg1c0enum0ucTopCodeMacrosRulesBottomCodeTopCode@Macros@Rules@BottomCode@get_TopCodeget_Macrosget_Rulesget_BottomCodetopCoderulesbottomCodeIsMacroIsStarIsInpIsSeqIsAltNewMacroget_IsMacroNewStarget_IsStarNewInpget_IsInpNewSeqget_IsSeqNewAltget_IsAltIsNotCharSetAnyIsAnyIsAlphabet_unique_AnyNewNotCharSetget_IsNotCharSetget_Anyget_IsAnyNewUnicodeCategoryget_IsUnicodeCategoryNewAlphabetget_IsAlphabetIdNameTransitionsAcceptedId@Name@Transitions@Accepted@get_Idget_Nameget_Transitionsget_Acceptedidnametransitionsacceptedset_TransitionsmapnidNewNfaNodetrsacDefaultMemberAttributeGetUnicodeCategorysourcescharsmatchValueucsf0sources0RepresentationElementsnodesget_Representationget_ElementsFoldzyArgumentNullExceptionIterateSystem-IComparable-CompareTounicode@22unicodeCategories@24NumUnicodeCategories@58specificUnicodeChars@75specificUnicodeCharsDecode@76newDfaNodeId@307getUsagespecsuget_ErrorgetSecondArg@50cursorargvusageTextnargsDoubleParseNumberStylesfindMatchingArg$cont@50actionfindMatchingArg@47otherarglparse_argvget_currentGetCommandLineArgsFlushExitparseIsUnitIsStringIsSetIsRestIsIntIsFloatIsClearNewUnitget_IsUnitNewStringget_IsStringNewSetget_IsSetNewRestget_IsRestNewIntget_IsIntNewFloatget_IsFloatNewClearget_IsClearsbufcurrent@99parse_error_sparse_error_richanyMarkershiftFlagreduceFlagerrorFlagacceptFlagactionMaskget_anyMarkerget_shiftFlagget_reduceFlagget_errorFlagget_acceptFlagget_actionMaskpopStackUntilErrorShifted@273valueStackactionTabletokenOptinterpretoffsetTabelemTabcachereadAssocminElemNummaxElemNumdefaultValueOfAssockeyToFindTryGetValuerowNumberReadAllfirstElemNumbernumberOfElementsInAssocnumberOfElementsvalue@startPos@endPos@get_valueget_startPosget_endPoslocalStoreruleStartPossruleEndPossruleValueslhsPosexplicittagdefaultActionstateToProdIdxsTablebufstartInterpretafterRefillendOfScanCompareTo$cont@17CompareTo$cont@17-1scanUntilSentinel@286endOfScan@309scanUntilSentinel@393-5endOfScan@418-3loop@335baseForSpecificUnicodeCharsarg10@extensionreadlexBuffer0value__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributeAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsCountscountsCloneget_CountsMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorget_IsHiddenset_IsHiddenpathget_PathGetResourceStringargumentsIsChoice2Of2IsChoice1Of2NewChoice2Of2get_IsChoice2Of2NewChoice1Of2get_IsChoice1Of2T1T2IsChoice3Of3IsChoice2Of3IsChoice1Of3NewChoice3Of3get_IsChoice3Of3NewChoice2Of3get_IsChoice2Of3NewChoice1Of3get_IsChoice1Of3T3IsChoice4Of4IsChoice3Of4IsChoice2Of4IsChoice1Of4NewChoice4Of4get_IsChoice4Of4NewChoice3Of4get_IsChoice3Of4NewChoice2Of4get_IsChoice2Of4NewChoice1Of4get_IsChoice1Of4T4IsChoice5Of5IsChoice4Of5IsChoice3Of5IsChoice2Of5IsChoice1Of5NewChoice5Of5get_IsChoice5Of5NewChoice4Of5get_IsChoice4Of5NewChoice3Of5get_IsChoice3Of5NewChoice2Of5get_IsChoice2Of5NewChoice1Of5get_IsChoice1Of5T5IsChoice6Of6IsChoice5Of6IsChoice4Of6IsChoice3Of6IsChoice2Of6IsChoice1Of6NewChoice6Of6get_IsChoice6Of6NewChoice5Of6get_IsChoice5Of6NewChoice4Of6get_IsChoice4Of6NewChoice3Of6get_IsChoice3Of6NewChoice2Of6get_IsChoice2Of6NewChoice1Of6get_IsChoice1Of6T6IsChoice7Of7IsChoice6Of7IsChoice5Of7IsChoice4Of7IsChoice3Of7IsChoice2Of7IsChoice1Of7NewChoice7Of7get_IsChoice7Of7NewChoice6Of7get_IsChoice6Of7NewChoice5Of7get_IsChoice5Of7NewChoice4Of7get_IsChoice4Of7NewChoice3Of7get_IsChoice3Of7NewChoice2Of7get_IsChoice2Of7NewChoice1Of7get_IsChoice1Of7T7Data1Data2Data1@Data2@data1data2get_Data1get_Data2get_CurrentUICultureSystem.ResourcesResourceManagerGetStringSpecializeTfuncConverter`2op_ImplicitconverterFromConverterToConverterarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncFuncFromTupledcontents@set_ValueIsNoneIsSomeget_NoneGetTagget_IsNoneget_IsSomeIsConsHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Emptyget_IsConsget_DebugDisplayget_TailSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorItemsListDebugViewMaxLengthget_ItemsUndefinedexnundefinedget_Exceptionget_UndefinedIsValueCreatedvalue@5515funcOrException@5520funcOrExceptionCreateFromValueget_IsValueCreatedMonitorEnterOnNextOnErrorerrorOnCompletedSubscribeobserverAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetResetrescleanupMapEmptyNewMapNodeitem1item2item3item4item5NewMapOneget_MapEmptyTKeyTValueItem1Item2Item3Item4Item5get_Item4get_Item5Comparercomparer@388tree@392serializedDataemptycomparertreeOnSerializingOnSerializingAttributeOnDeserializedOnDeserializedAttributeieelementsget_Comparerget_TreekeyTryPickExistsFilterForAllAdaptFoldSectionlohiMapRangeMapPartitionRemoveTryFindToListToArrayofListMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionCopyToget_IsReadOnlyget_Keysget_Valueskey@get_keySetEmptyNewSetOneNewSetNodeget_SetEmptyChooseMinimumElementMaximumElementcomparer@511tree@515op_Subtractionset1set2IntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementGetNextElementeGetPreviousElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonDeclaringTypetypnamesget_DeclaringTypeGetFieldsMemberInfoGetCustomAttributesattributeTypeIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsMakeimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameFormatget_IsGenericTypeGetGenericTypeDefinitionInvokeMemberBinderMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderPublishmulticastDelegateDynamicInvokeTriggerget_PublishargTypesinvokeInfoGetMethodGetParametersget_ParameterTypeget_Delegateset_Delegatebounddigitsbound@digits@get_boundget_digitsset_boundSignSignIntStructuredDisplayStringOneZeroIsZeroIsOneIsNegativeIsPositiveIsSmallsmallLimsmallPosTabonezerosignIntnatcreateposnnegnget_Signget_SignIntget_Vop_Equalityop_Inequalityop_LessThanop_GreaterThancomparennhashget_StructuredDisplayStringget_Oneget_Zeroop_UnaryNegationScalesubnnnxnyaddnnget_IsZeroget_IsOneop_MultiplyDivRemremop_Divisionop_ModulusGreatestCommonDivisorget_IsNegativeget_IsPositiveop_LessThanOrEqualop_GreaterThanOrEqualPowOverflowExceptionop_ExplicitFormatExceptiontextget_IsSmallFactorialop_UnaryPlusFromInt64FromInt32IsBrokenIsBreakableUnbreakableIsUnbreakable_unique_UnbreakableNewBrokenget_IsBrokenNewBreakableget_IsBreakableget_Unbreakableget_IsUnbreakableIsAttrIsNodeIsLeafNewAttrget_IsAttrNewNodeitem6get_IsNodeNewLeafget_IsLeafItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsstampisMutable@90isMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsget_MetadataTokenget_Moduleget_AssemblyIsHoleTermIsLambdaTermIsVarTermIsCombTermNewHoleTermget_IsHoleTermNewLambdaTermget_IsLambdaTermNewVarTermget_IsVarTermNewCombTermget_IsCombTermIsDefaultValueOpIsValueOpWhileLoopOpIsWhileLoopOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpTryFinallyOpIsTryFinallyOpTryWithOpIsTryWithOpIsTypeTestOpAddressSetOpIsAddressSetOpVarSetOpIsVarSetOpAddressOfOpIsAddressOfOpSequentialOpIsSequentialOpQuoteOpIsQuoteOpIsNewDelegateOpIsNewArrayOpIsCoerceOpIsStaticMethodCallOpIsInstanceMethodCallOpIsNewObjectOpIsStaticFieldSetOpIsInstanceFieldSetOpIsStaticFieldGetOpIsInstanceFieldGetOpIsStaticPropSetOpIsInstancePropSetOpIsStaticPropGetOpIsInstancePropGetOpIsTupleGetOpIsNewTupleOpIsUnionCaseTestOpIsNewUnionCaseOpIsNewRecordOpLetOpIsLetOpLetRecCombOpIsLetRecCombOpLetRecOpIsLetRecOpIfThenElseOpIsIfThenElseOpAppOpIsAppOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpNewDefaultValueOpget_IsDefaultValueOpNewValueOpget_IsValueOpget_WhileLoopOpget_IsWhileLoopOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_TryFinallyOpget_IsTryFinallyOpget_TryWithOpget_IsTryWithOpNewTypeTestOpget_IsTypeTestOpget_AddressSetOpget_IsAddressSetOpget_VarSetOpget_IsVarSetOpget_AddressOfOpget_IsAddressOfOpget_SequentialOpget_IsSequentialOpget_QuoteOpget_IsQuoteOpNewNewDelegateOpget_IsNewDelegateOpNewNewArrayOpget_IsNewArrayOpNewCoerceOpget_IsCoerceOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewNewObjectOpget_IsNewObjectOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewTupleGetOpget_IsTupleGetOpNewNewTupleOpget_IsNewTupleOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewNewRecordOpget_IsNewRecordOpget_LetOpget_IsLetOpget_LetRecCombOpget_IsLetRecCombOpget_LetRecOpget_IsLetRecOpget_IfThenElseOpget_IsIfThenElseOpget_AppOpget_IsAppOpCustomAttributestermattribsget_CustomAttributesSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstsecondTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawInnerExceptionsSystem.Collections.ObjectModelReadOnlyCollection`1exnsListexnsAsReadOnlyget_InnerExceptionssource@id@get_sourceget_idregistrationoInt64registration1registration2IsCancellationRequestedCanBeCanceledget_IsCancellationRequestedget_CanBeCanceledRegistertoken1token2IDActionStateaction@state@get_actionget_stateget_IDget_Actionget_StateTokenInternalIsCancelednextIDregistrationslinkedCtr1linkedCtr2init@128get_TokenCancelObjectDisposedExceptionInterlockedCompareExchangedontThrowIfDisposedget_InternalIsCanceledDeregisterCreateLinkedTokenSourcearraysizeDequeueSetCapacityEnqueueCopycapacityfailureCTSlinkedCTSctFakeUnit_unique_FakeUnitget_FakeUnitthisThreadHasTrampolineThisThreadHasTrampolineHasExitedcontbindCounthasExitedthisThreadHasTrampoline@ThreadStaticAttributeget_thisThreadHasTrampolineset_thisThreadHasTrampolineget_ThisThreadHasTrampolineExecuteActionfirstActionIncrementBindCountget_HasExitedunfaketrampolinesendOrPostCallbackSendOrPostCallbackwaitCallbackForQueueWorkItemWithTrampolineWaitCallbackthreadStartCallbackForStartThreadWithTrampolineParameterizedThreadStartinit@454-1SynchronizationContextPostThreadPoolQueueUserWorkItemQueueWorkItemThreadset_IsBackgroundStartStartThreadProtectget_TrampolineecontcconttrampolineHoldertoken@econt@ccont@trampolineHolder@get_tokenget_econtget_ccontget_trampolineHolderauxcont@aux@get_contget_auxNewPDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequencecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchRunSynchronouslytimeoutcancellationTokenParallelcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndTArgAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextsyncContextOnCancelinterruptionTryCancelledIsClosedcompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@2011mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscannerProductBuildOfAssemblyOfFileget_ProductBuildget_OfAssemblyget_OfFileDefaultAsyncBuilderCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrm?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWritertextWriterPrintFormatPrintFormatToErrorPrintFormatLineToTextWriterPrintFormatLinePrintFormatLineToErrorget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazyPatternkeysarrayIndex_arg3_arg4DefaultAsyncBuilder@154mappingsucceed@2191chooserpredicatecollectorPairwiseMergesource1source2splitterTResult1TResult2stoppedNextCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedwlastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2AsyncGetResponseWebRequestAsyncDownloadStringWebClientUriaddressWebExceptionget_StatusWebExceptionStatusNewCanceled_arg1023reqBeginGetResponseEndGetResponsearg00Abortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg9downloadAsync_arg1024_arg1025AsyncReadoffsetAsyncReadBytesAsyncWriteAsyncWaitOneAsyncSleepdueTimeAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamException_arg1022BeginWriteEndWriteaiarNewOkNewErrorasyncget_asyncswitchToswitchToNewThreadswitchToThreadPoolpostOrQueuedelimitSyncContextprotectedPrimitiveWithResyncManualResetEventresEventf@4155-15f@4155-16get_ResultAvailableEventWaitHandlesavedContsf@4155-17f@4155-18DoContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultreuseThreadWaitOnedefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutget_threadStartCallbackForStartThreadWithTrampolinestartAsyncqueueAsyncprotectedPrimitiveresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsCanceledIsOkget_IsCanceledget_IsOkcexnACTIVEDISPOSED_ACTIVECANCELEDDISPOSED_CANCELEDdefaultCancellationTokenSource@552threadStartCallbackForStartThreadWithTrampoline@648doneA@795async@844f@4155-12listf@4155-13loop@252-38f@4155-14loop@413-39f@4155-19calledonce@1208threadfinishTask@1268firstExnresultsremainingf@4155-20recordSuccess@1280f@4155-21recordFailure@1290onCancel@1459once_arg1016beginAction@1606onCancel@1617-2del_arg1018f@4155-22_arg10f@4155-23scan@1943processFirstArrival@1964processFirstArrival@1979-3get_CurrentThreadg_arg976timerTimerTimerCallback_arg5rwhRegisteredWaitHandleUnregistertimeOuttimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg8_arg1012_arg1013_arg1014ar_arg1015eventArgsCreateDelegate_arg1017ctsReferr_arg1019_arg1020h_arg1021_arg1027_arg1026_arg1028_arg1029_arg1030_arg1031_arg1032_arg1033reply_arg1035_arg1036_arg1034_arg1037asyncReplyOfNativeIntInlinedToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1790-37exprShapePatternBooleanBoolPatternStringPatternSingleSinglePatternDoublePatternCharPatternSByteSBytePatternBytePatternInt16Int16PatternUInt16PatternInt32PatternUInt32UInt32PatternInt64PatternUInt64UInt64PatternUnitPatternstripSuccessiveProjLets@1663|TupledLambda|_|lam|TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternget_IsGenericMethodGetGenericMethodDefinitionSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternGetGetMethodPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1isg1gmdGetGenericArgumentstmfunTyCexprTyCty@400-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@313-35xs|FrontAndBack|_|esget_funTyCget_exprTyCget_ty@400-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_|_arg996|Comb1|_|_arg997|Comb2|_|_arg998|Comb3|_|_arg999VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertytyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_PropertyTypeget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRIsAssignableFromcheckTypesWeakSRcheckArgsparamInfosget_BaseTypeloop@596-36checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuoteget_IsEnumToObjectmkLiftedValueOpGmkLambdavarmkTryWithe1v1e2v2e3mkApplicationv_0v_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsemkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetget_CanWritemkStaticPropSetmkInstancePropSetmkInstanceMethodCallminfomkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsGetMethodsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionParameterModifierbindMethodHelperGetPropertybindModulePropertybindModuleFunctionmkNamedTypetyargsinstbindProppropNameretTypeGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@936l_0l_1chopMakeGenericMethodinstMethngmethmethTypeArgsbindMeth_arg1003pinfoIsStaticdecodeFunTydecodeArrayTytysGetTypesmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsenvu_dtypeu_dtypes|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsunpickleExprlocalTypeunpickleReflectedDefnslocalAssemblyfillHolesInRawExpr_arg1006freeInExprAccbvs_arg1007mkTyparSubstsubstituteInExprtmsubst_arg1008readToEndget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4155-11qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializesplicescastposlimlenReadByteReadBytesget_UTF8ReadUtf8BytesAsStringucasemtmethInfoparamtyargTstsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2_arg16NoTyArgsp_0p_1p_2p_3p_4_arg17_arg18x_0x_1_arg19_arg20_arg21_arg6_arg7_arg11_arg12_arg13_arg14_arg15phase2bytesarg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagsinstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qrvsqOneOrMoreRLinearqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkvsmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_instanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@318-1exprTyC@319mscorlib@1079f@4155-10GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@209|Lambda|_|@214_arg995|NLambdas|_|@217Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderstaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsToInt32outputDigitintFormatCharoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueget_IsArrayget_IsByRefget_IsPointerisNamedTypeisFunctionTypety1destFunTyget_instanceInvokeFlagsinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@304capturePrecisionArg@332precisioncapture1UIntPtrIntPtrunboxAsInt64unboxAsUInt64IsNaNformatOne$cont@458formatOne$cont@425-1formatOne$cont@479-2xobjformatOneoutaIsSurrogatePairgo@518-3finalizerun@516initializecapture@535gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@179invariantCulture@262defaultInfo@283chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@474-9stackpushBreaksaving_arg988popBreak_arg989forceBreak_arg990fitLeaf@498maxWidthlayouttextWidthbreaksfit@475leafFormattersquashToaddText@557rstrsnewLine@560_arg992addL@567optsz_0z_1showLnewLine@603-1chan_arg993addL@610-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@727-9conv@728countNodes@780stopShort@781objL@784showModedepthLimprecsameObjL@785IndexOfLastIndexOfobjWithReprL@787showMode@787recdAtomicTupleL@869bracketIfL@875basicLproject2@957n1n2b1b2possibleKeyValueL@974objLworditemL@886-2project@896-1get_RankGetLowerBoundGetLengthGetPropertiesSortreprL@878showMode@878-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowTopLevelBindingIsShowTopLevelBindingShowAllIsShowAll_unique_ShowAll_unique_ShowTopLevelBindingget_ShowTopLevelBindingget_IsShowTopLevelBindingget_ShowAllget_IsShowAll_arg994propitnDepthIsDigitoptionty@400-10ty@400-11equivHeadTypesty2get_optionget_ty@400-10get_funcget_ty@400-11isListTypeIsObjectTypeUnitTypeIsUnitTypeIsSumTypeIsRecordTypeIsFunctionTypeIsTupleType_unique_UnitTypeNewObjectTypeget_IsObjectTypeget_UnitTypeget_IsUnitTypeNewSumTypeget_IsSumTypeNewRecordTypeget_IsRecordTypeNewFunctionTypeget_IsFunctionTypeNewTupleTypeget_IsTupleTypeIsObjectValueUnitValueIsUnitValueIsExceptionValueIsConstructorValueIsRecordValueIsFunctionClosureValueIsTupleValue_unique_UnitValueNewObjectValueget_IsObjectValueget_UnitValueget_IsUnitValueNewExceptionValueget_IsExceptionValueNewConstructorValueget_IsConstructorValueNewRecordValueget_IsRecordValueNewFunctionClosureValueget_IsFunctionClosureValueNewTupleValueget_IsTupleValueGetValueInfoOfObject$cont@359reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@169taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLselectorlistLsquareBracketLbraceLconsume@201itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@136option@282-1func@283-1nullL@656measureL@657numTymeth64methStringtab64tabParseget_numTyget_meth64get_methStringget_tab64get_tabParsef@4155-6x64FromInt64Dynamicf@4155-7FromStringDynamicFromZeroFromOnef@4155-8getParsemeth64@305methString@309tab64@312tabParse@313baseBitsbaseNbaseMaskbaseNi64baseMaski64baseMaskUbaseMask32AbaseMask32BbaseShift32BbaseMask64AbaseMask64BbaseMask64CbaseShift64BbaseShift64CboundIntboundInt64boundBasetablebitmaskarr@476-1twopowersarr@476-2twopowersI64arr@476-3minDigitsKaratsubaproductDigitsUpperSchoolBooksingleDigitForceSchoolBookproductDigitsUpperFfttwopow64pow32maxIntminIntget_baseBitsget_baseNget_baseMaskget_baseNi64get_baseMaski64get_baseMaskUget_baseMask32Aget_baseMask32Bget_baseShift32Bget_baseMask64Aget_baseMask64Bget_baseMask64Cget_baseShift64Bget_baseShift64CfindLeastBound@391nanormNget_boundIntget_boundInt64get_boundBaseembedembed64evalget_oneget_zeroshiftUpshiftDownaddPaddsubPsubisZeroisOnecheck@532-6paqaequalcheck@542-7pnqnshiftComparecheck@560-8ltgtltegteminmaxcontributeArrscalemulSchoolBookBothSmallmulSchoolBookCarrymulSchoolBookOneSmallmulSchoolBookNeitherSmallmulSchoolBookmkEncodingbigLbigKbigNget_tableselectFrom@805bitsResencodingGivenResultBitsget_bitmaskget_arr@476-1get_twopowersget_arr@476-2get_twopowersI64get_arr@476-3hi@823wordBitsbitsextractBitsencbiencoder@863polybiMaxencodePolydecodeResultBitsevaluate@906rboundjdecodePolyquickMulUsingFftget_minDigitsKaratsubarecMulKaratsubamulmulKaratsubaget_productDigitsUpperSchoolBookget_singleDigitForceSchoolBookget_productDigitsUpperFftscaleSubInPlacescaleAddInPlaceremoveFactor$cont@1276removeFactordivmod$cont@1355DivideByZeroExceptiondivmoddivhcfloop@1412hcfget_twopower@1429powipower@1437-1powevalFloat@1452baseftoFloatofInt32ofInt64toUInt32toUInt64route@1507degnpriorten2kcollect@1512isLeadingtoStringbuild@1557strtenIsNullOrEmptyofStringisSmallgetSmallproductR@1591factorialtwoToBigLsplitsplitsbigL@twoToBigL@k@bigK@bigN@split@splits@get_bigLget_twoToBigLget_kget_bigKget_bigNget_splitget_splitsarg00@patternInput@74primePmaxBitsInsideFpmaxTwoPowertwoPowerTablearr@476mzeromonemaxFpget_patternInput@74get_wget_pget_mget_gget_primePget_maxBitsInsideFpcomputeFFTlambdamucomputeInverseFftInPlaceuTget_maxTwoPowerget_twoPowerTableget_arr@476f@474-5vTcomputeFftPaddedPolynomialProductget_mzeroget_moneget_maxFpp64mtwoget_p64get_mtwompowmpowLw@74p@74m@74k@74g@74primeP@75twoPowerTable@194maxFp@259one@445zero@446table@775bitmask@816twopowers@817twopowersI64@818productDigitsUpperSchoolBook@989singleDigitForceSchoolBook@999productDigitsUpperFft@1003two@1427debugty@400ty@400-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagsemptyObjArraytuple1ty@400-2tuple2ty@400-3tuple3ty@400-4tuple4ty@400-5tuple5ty@400-6tuple6ty@400-7tuple7ty@400-8tuple8ty@400-9maxTupletupleEncFieldget_debugget_ty@400get_ty@400-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@131attrGetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@184-1isConstructorReprget@188-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@400-2get_tuple2get_ty@400-3get_tuple3get_ty@400-4get_tuple4get_ty@400-5get_tuple5get_ty@400-6get_tuple6get_ty@400-7get_tuple7get_ty@400-8get_tuple8get_ty@400-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiespropsgetTupleConstructorMethodgetTupleCtorreader@362getTupleReadergetTupleConstructorgetTupleConstructorInfoget@396-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@492-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapmethctorreader2maker1maker2option@40func@41emptyObjArray@265tuple1@270tuple2@271tuple3@272tuple4@273tuple5@274tuple6@275tuple7@276tuple8@277ensureType@732setelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtoleranceheightget_tolerancerebalancet1t2balancepivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxcountAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1|MatchSetNode|MatchSetEmpty|nextElemContnextElemprevElemContprevElemminimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@set_stackset_startedmoveNextmkIEnumeratorcompareStackss1s2loop@463-34toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayk2get_stackget_startedFindKeyNotFoundExceptionPickFindKeyTryFindKeysizeAuxfindtryFindfilter1tryPickmapifoldFromTo@260foldSectionloop@280-33f@142-4kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@216-25loop@226-26len1Exists2loop@233-27loop@243-28ForAll2loop@249-29loop@261-30loop@300-31loop@308-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceByprojectionSortInPlaceSortWithSortBygo@537-1FindIndexgo@549-2TryFindIndexPermuteindexMapSumSumByMinMinByMaxMaxByAverageAverageByGetSubArraystartIndexFilllistslist1list2chooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24sepstringscheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3TakeTCollectionfromGeneratorgo@1043CompareWithTruncateloop@1131-16loop@1144-17f@474-1windowSizeWindowedoneStepTo@1189prefixenumeratorRf@4155-2f@4155-3CacheReadOnlyGroupByDistinctDistinctByCountByTakeWhileSkipSkipWhileirefzrefkeyfTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionsouterEnumcurrInnerEnumFinishtakeOuter@651currElementtakeInner@644EnumerateUsingmkConcatSeqgetCurr@689-1currstart@692-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@464GenerateFromEnumeratorIsGotoIsYieldStopIsStop_unique_Stopget_IsGotoNewYieldget_IsYieldget_Stopget_IsStopApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_Disposerget_EnumeratorobjectArgnthmap2get@151choosenext@174filterunfoldgetCurrent@217uptolastOptionf@4155readAndCleargetCurr@254start@257finish@260generateWhileSomeFinishedIsFinishedInProcessIsInProcessNotStartedIsNotStarted_unique_NotStarted_unique_InProcess_unique_Finishedget_Finishedget_IsFinishedget_InProcessget_IsInProcessget_NotStartedget_IsNotStartedDoMoveNextfinalIndexactiveStructuralLimitedStructurallimitReferenceFromFunctionshasherequalityeqBase1Base2CreateInstanceZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@169-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@391-15sortWithcmprevAppendmergesort2sort3$cont@430cxycyzsort3trivialstableSortInnerlastableSortcreatorLazy`1.get_IsDelayedLazy`1.get_IsForcedForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternNotFailWithInvalidArgargumentNameNullArgInvalidOpRethrowReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementexitcodeToUInt16ToInt16ToIntToEnumKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleToUInt64ToInt64ToDecimalToUIntPtrToIntPtrLocklockObjectTLockTypeOfTypeDefOfSizeOfHashlimitedHashIdentityget_InConsoleInConsoleOutConsoleErrorop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4635RangeInt32stopgen@4635-1RangeInt64gen@4635-2RangeUInt64gen@4635-3RangeUInt32gen@4635-4RangeIntPtrgen@4635-5RangeUIntPtrgen@4635-6RangeInt16gen@4635-7RangeUInt16gen@4635-8RangeSBytegen@4635-9RangeBytegen@4704-10RangeDoublegen@4704-11RangeSinglegen@4612-12RangeGenericgen@4635-13RangeStepGenericgen@4612-14tupledArg_0RangeCharloop@4732PowByteloop@4732-1PowSByteloop@4732-2PowInt16loop@4732-3PowUInt16loop@4732-4PowInt32loop@4732-5PowUInt32loop@4732-6PowInt64loop@4732-7PowUInt64loop@4732-8PowIntPtrloop@4732-9PowUIntPtrloop@4732-10PowSingleloop@4732-11PowDoubleloop@4732-12PowDecimalloop@4732-13PowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeEqualStepResultupcanStarttupledArg_4DefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalCompareranyToStringShowingNullGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2051.cctor$cont@2084-2.cctor$cont@2084-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64parse@2184parseOctalUInt64parse@2188-1parseBinaryUInt64TrimParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2263-3aty.cctor$cont@2287-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2378bty.cctor$cont@2392-5AdditionDynamicdyn@2415-6.cctor$cont@2430-6CheckedAdditionDynamicdyn@2455-12.cctor$cont@2469-7MultiplyDynamicdyn@2492-18.cctor$cont@2506-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsDivideget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@916yobjarr1GenericCompare$cont@928-1GenericComparecheck@1023lenxcheck1@1046lenx1basex0basex1basey0basey1check0@1045lenx0GetLongLengthprecheck@1060ndimscheckN@1070idxsbaseIdxcheck@1079-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1347erGenericEqualitySingleArrayfeq@1364GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1416iecGenericEqualityObjcheck@1500-2check1@1518-1check0@1517-1precheck@1525-1checkN@1533-1check@1540-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IComparer-ComparesznodeCountFreshSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodeTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativeActivatorGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrcsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_IsValueTypeget_TypeInfoop_Ampop_BooleanAndOrop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringcombineTupleHashCodescodesAddressOpNotFirstClassString@596NoNegateMinValueString@597InputSequenceEmptyString@599InputArrayEmptyString@601InputMustBeNonNegativeString@603NaNException@898fsComparer@1122fsComparerNoThrow@1123fsEqualityComparer@1564fsEqualityComparerER@1569fsUnlimitedHasherER@1712fsUnlimitedHasher@1713GenericComparer@1961GenericEqualityComparer@1962GenericEqualityERComparer@1963CompareTo$cont@2875CompareTo$cont@2875-1Equals$cont@2875CompareTo$cont@2884-2CompareTo$cont@2884-3GetHashCode$cont@2884Equals$cont@2884-1Equals$cont@2884-2CompareTo$cont@2894-4CompareTo$cont@2894-5GetHashCode$cont@2894-1Equals$cont@2894-3Equals$cont@2894-4copy@3186itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptymapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesGetString1GetString2GetString3resources@4GetExecutingAssemblySizesbget_Sizeitem7item8T8CombineHashCodesh3h4h5h6h7h8System.ITuple.Sizem_Item1EqualityComparer`1System.Collections.IStructuralEquatable.EqualsComparer`1System.IComparable.CompareToSystem.Collections.IStructuralComparable.CompareToSystem.Collections.IStructuralEquatable.GetHashCodeSystem.ITuple.GetHashCodeSystem.ITuple.ToStringSystem.ITuple.get_Sizem_Item2m_Item3m_Item4m_Item5m_Item6Item7m_Item7get_Item7m_Restget_RestTRest%unrecognized input{attempt to read synchronously from an asynchronous lex bufferyattempt to read asynchronously from a synchronous lex buffer {0}{1}:- us; % (* State %d *) [| |];no input givenUnicode Ascii)%s(%d,%d): error: %sOcompiling to dfas (can take a while...)%d stateswriting output.fs.ml#light "off"# %d "%s"%s ;let trans : uint16[] array =  [| # (* State %d *) [| |] 7let actions : uint16[] = [||]klet _fslex_tables = %s.%sTables.Create(trans,actions)Slet rec _fslex_dummy () = _fslex_dummy() (* Rule %s *){and %s %s (lexbuf : %s.LexBuffer<_>) = _fslex_%s %s %d lexbuf Mand _fslex_%s %s _fslex_state lexbuf =s match _fslex_tables.Interpret(_fslex_state,lexbuf) with- | _ -> failwith "%s"# 3000000 "%s"/FSLEX: error FSL000: %s3more than one input given | %d -> ( # %s )9Microsoft.FSharp.Text.Lexing-o+Name the output file.--codepage€“Assume input lexer specification file is encoded with the given codepage.--light(ignored)--light-offcAdd #light "off" to the top of the generated file--lexlib€åSpecify the namespace for the implementation of the lexer table interperter (default Microsoft.FSharp.Text.Lexing)--unicodeoProduce a lexer for use with 16-bit unicode characters.!fslex <filename>-Unexpected character '' digit!bad hexdigit: %cunicodegraph#unicodegraph_long token€›Unicode characters needing surrogate pairs are not yet supported by this tool stringQend of file in string started at (%d,%d) code}codestring7unterminated string in codecomment €…error while processing string nested in comment started at (%d,%d)qerror while processing nested comment started at (%d,%d)Send of file in comment started at (%d,%d)9tokenTagToTokenId: bad tokenUprodIdxToNonTerminal: bad production indexEOFBARDOT PLUS STAR QMARK EQUALSUNDERSCORE LBRACK RBRACKHAT DASH RULE PARSELETAND LPAREN RPAREN!UNICODE_CATEGORY CHAR CODE STRING IDENT %+0.8A€‡unicode category classes may only be used if --unicode is specified=invalid Unicode category: '%s'€‘the Unicode character '%c' may not be used unless --unicode is specified€‘the Unicode character '%x' may not be used unless --unicode is specifiedThe macro  is not defined arrayPePcCcScPdNdMePfCfPiNlZlLlSmLmSkMnPsLoCnNoPoSoZpCoZsMcCsLtLu --help: 9display this list of options -helpoption ) needs an argument. /unrecognized argument:  <string>:  <int>:  <float>: ...: parse errorLexBuffer-shift on end of input!%empty symbol stackGparse error: unexpected end of filesyntax error9End of file on lexing stream)matchCasesIncomplete Some()Length > 1000Length = #inputListWasEmpty[; ]; ... ][]unreachable <null><evaluating><unevaluated> map [ map []%mapCannotBeMutatednotComparableobj set [ set []%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementation MaketupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invoke+signs should be +/- 1x0-inputMustBeNonNegativey;The value could not be parsed=the objects are not comparableg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecord%ANewUnionCaseUnionCaseTestNewTupleTupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblycheckInitDequeueqInternal error: attempting to install continuation twice=failed to queue user work item€©f:\dd\fsharp\projects\FSharp.Core.2.0\..\..\devdiv\src\fsharp\FSharp.Core\control.fs=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut4 301284.0.0.04.0.30128.1 rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated+failedReadEnoughBytesAsyncResultmismatchIAREndiar#mismatchIARCancelResultCell)Unexpected no resultOcontrolContinuationInvokedMultipleTimescmultiple waiting reader continuations for mailbox'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of range fillQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray this/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix ''printfExpectedWidth/printfExpectedPrecisionl true falseGToString count'popBreak: underflow€µf:\dd\fsharp\projects\FSharp.Core.2.0\..\..\devdiv\src\fsppack\FSharp.PowerPack\sformat.fsunpackCons Cons EmptyGList value had unexpected ValueInfo{;[|\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=mapsetseq <seq>+<ToString exception: unuyussuLgMnan-infinityinfinity.0 null=?Key() ParseoProduct is huge, around 268435456 bits, beyond quickmul€ƒscaleSubInPlace: pre-condition did not apply, result would be -veempty stringstr7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypes)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4 sourcesourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedkDynamic invocation of op_Subtraction is not supportedeDynamic invocation of op_Division is not supportedcDynamic invocation of op_Modulus is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supported!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmptyoa lazy value was accessed during its own initialization'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedsyncContextNullcannotMutatekeyNotFoundQincorrectType FSCoreIArgumentException_TupleIncorrectType other, YArgumentException_TupleLastArgumentNotATuple§¸gKLœJ—§Eƒ§¸gK·z\V4à‰  …à™d …à„ …à„ …à„„ …à…à…à„…à…à…à„…à…à…à…à„ …à‚d…à™` ‚d„…à…à„…à…à„…à…à…à„…à…à…à…à„!…à…à…à…à…à„'…à…à…à…à…à…à„–ì™`„…à…à …à…à   0 0 8 8…à†‚† …à „ …à …à…à …à  …à † ‚  ‚  ‚ ‚ ‚@ ‚@ ‚` ‚d ‚d–ì‚‚`‚`…à‚™` ‚` …à‚…à !…à!‚–ì™`‚™`™` ‚`–ì …à„–ì%‚`„) …à‚`„–ì…à…ô™`…à‚”‚d‚dQ…à™`…ô™`‚d™`…ô‚d™`…ô™`‚d™`…ô‚dw…à™d…ô…ô™`‚™`…à™`…ô™`‚d™`…ô‚d™`…ô™`‚d™`…ô‚d…à™d‚Ô„ †™`†…à™` …à †…ô†…à„‡ü„…à„…à‡ü„…à‡ü„…à™d…à™d‡ü…à™`‡ü…à„‡ü…à™`…à™`‡ü…à™`  „Ð  „Ð „Ð „è „è „è … … … …0 …0…0 …` …`…` …˜ …˜…˜  …è  …è  …ì  …ì  …ô  …ô† †E †$ MQ †HM † †Ø †ä ‡ …à’ …à’ †ˆH† …à…ì…à† ™`…à…ì …à„…à‡üY…à™`]U …àUY…à„‡üY …àa„…à…à…àe„a …à„a*…à™d…à„…à„…ài„„ …àI‡ü…à„‡ü…à™l]U…àU …à„…à„‡ü …àU„ …à„ …ài„0—‡Ô…à‡è…à‡è…ài‡è‡ü‡è …à‡è …à‡è …ài‡è …à„‡è…à‡ø„‡è…à‡ø‡è…à‰´„‰Ð…à‡ø‡Ô‡è…àE‡ü„…à„‡ü…à„m‡Ø(–ì…ô…à„„‡Ø…ô…à„„–ì…ô…à„„…ô…à‡ø„Їè–ì‡ü„…à‡ø‡è…à‡ø‡è…à„‡ü…à‰Ð‡ü …à‡ü…à‡Ô‡ü…à™d]U …àU …à„‡Ð…à„ˆ …à„…à‡ü„…à‡Ô‡ü‡ü…à„‡ü‡ü…à‡Ô‡üI…à„‡üI…à‡ü…ì…à‡ü…ì…à„‡ü…ì…à…ì‡ü…à‡ü„…à‰À‡ü…ì…à‡Ä…ì™`…ô†à‡Ä…à‡Ä…ì™`‡Ä…ô‡Ä)…à‡Ä…ì™d…ì‡Ä…ôq…ô‡Ä…à‡Ä…ì™`†à‡Ä…àu …à†h –ìy‡Ä„ –ìq‡Ä„ –ìu‡Ä„ …à‡Ä„ –ìyqq…à™`†à‡Ä„…à™`†à‡Ä‡Ä –ìqq…àq…à}…à…à…àqqq …àyq…àq…à…ôqq…à…à…à…àqq…àŽ4…à…àqq…àŽ4…ô…à…àqq…à…àq…ôq…àŽ4…àŒÄ‡Ä…àŽ4…ô…àŒÄ‡Ä…à…àŒÄ‡Ä‡Ä …àŒÄ‡Ä …àŒÄ†à…à…ôqu…à…ôq†h…à…à…ôq‡ …à…ôq‡ …àŽ4™`€…àŒÄ‡Ä …àŽ4…ô™`€…àŒÄ‡Ä…à…àŒÄ‡Ä…à…ô™`€…àŒÄ‡Ä …à‡Ä‡Ä–ì†`†à‡Ä†`†à…à†à…ì‡Ä )™`€… Ž)Ž…à™`€…àŒÄ‡Ä„$…à™`…ô™`€…àŒÄ‡Ä…à&…à™`…ô™`€…àŒÄ‡Ä„ …àŽ4…àŽ4…ô –ì –ì …à‡Ä†°–솰†°†° …à†à†° …à†°…à™`‡Ä…ô‡Ä‡Ä …à„,…à„™h„…à„…à„…à„-…à„™h…à„„…à„…à„…à…à…à –ìq–ø…ôq…à™`†°†°…à™`…솰†° $ …à„ –ø †° …à†°…à …à†°…à…à …à†°…à™`†° –솰†°…à…ì™` …à†°…à…ì™`…à™`†°…à …à™`†°…à…à …à™`†°…à„…ì™`„…àu™`…솰…à™`™`†°…à…ì™`…à…à–ìu™` …à†°†°–ø…ô™`„–솈†ˆ†ˆ ††† –쀀 …à€…à}…ì™`…à™`…ì –ìuu…à…à…à…àu–ì™`†h …à…à…ì…ì–ì†H†H –ì–ì†H†H–ì†`†`†`…à™`…à™`…ì –ì†$™`†$ –ì„ E…à…à„…à–ì…à†D –ì„…à„E…àEE…àEE–ìEEE–ì™`–ì™`™d…à„“†™`†…à…ì™`…à’ m„#…à’ m™`…à„™`…à’ ™`…à„™`) )’  E…à„E –ì„’ô“…à„’ô“H€‘ –ì …à –ì“ü“ü”–ì ”  –ì ”  –ì ”  –ì”–ì”–ì”–ì”–ì”–ì”” ”   ” ”   ”” –ì…à …à…à…à…à …à…à …à …à€•€•–ì …à…à–ì …à …à…à …à …à€•…à…à …à…à…à…à…à…à…à…à –ø…à…à…à…à—%…à…à…à…à…à—€‘€‘€‘€‘€‘€‘ €‘€‘€‘€‘ €‘ €‘€‘ €‘ €‘€• –쀕€•–ì  –ì  –ì…à…à…à–ì–쀠$€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô  1.9.7.10 fslex.exeMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F# €½( (    ,'Use the AbsoluteOffset property instead( €É    €‰€‰   €‰ €™ €™  1,Consider using the NextLine property instead  "(…ì…à„(…ì…à‡ü„…ì…à„…ì…à‡ü„  …ì…à„ …ì…à‡ü„. …ì…à„…ì…à‡ü„((Q (…à„„(…à„‡ü„(  …è€Õ …è €Õ       Q Q ƒx  …à„„ƒ| …à„‡ü„   …ì…à™d…à™d…ì…à™d‡ü…à™d‡ü…ì…à™d ƒ€ …à™d…ì…à„ …ì…ì…à™d‡üƒŒ …à™d‡ü…ì…à‡ü„Y…ì…à™d…à™d…ì…à™d‡ü…à™d‡ü7…ì…à™d…ì…à™d‡ü…à™d…à™d‡ü…à™d…ì…à™d…à™d…à…à-(Use LexBuffer.FromFunction instead…à™d…ì…à™d…à™d…à…à-(Use LexBuffer.FromFunction insteadƒ˜ƒ       €Ù €Ý…ì…à™d‡ü €á  (…ì…à„…ì…à„2…ì…à‡ü„…ì…à‡ü„ ‡ü„    ™`   ‡ü      ™`  ‡ü      (™` ™` ™` 0(…ô (…ì( (…ô…ô…ô …ô…ô…ì * …ô…ô…ì…ô…ô…ô …ô …ì  …ô…ô (…à (…à (…à(         (…à „    …à …à …à…à „$ …à …à …à  …à „? …à…à…à…à „ 0…à(ƒl (E …ô €ù€ý€¤.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089TSerializationFormatter€™€™ , (    0 …è…ì …è…ì …è…ì…ô™d‚Ô…è…ì   …ì €á €á™d …ì™d…ì …è…ì …è…ì …è…ì…ô™d‚Ô% ) …èT „†Ø„„ €Õ ‚d 1€Õ ‚d E‚d„‚d €Õ ‚dEI‚d EE‚d†Ü…à„„„ 1…à„†Ü„„„„ „ ™` ‚dE 1„3 E‚d„‚d€Õ ‚d€Õ ‚dE„I…ô‚d1„…ì‚ ™d…à…à…à…à„*†Ø…à…à…à…à„„„†Ø„„„'™`…ô™`‚d™`…ô‚d…ô™`‚d™` …ô‚d†Ø…à„„„1 ™`…à…à„…à…à„@…ô™`™`‚d™`™d…ô…ô™`‚™`?E™`™`‚d™`™d…ô…ô™`‚™`;™`™`‚d™`™d…ô…ô™`‚™`…ô(…à…à…à…à…à…à„ ™`†Ø…à„„„ …è…ì…ì…è …è…ì  $ ‚ 2†Ü…à…à…à…à„„„™h …à…à…à…à„+…à…à…à…à „&™`…ô™`‚d™`…ô‚d ‚d …à„…ô‚d1 …è…ì…ì …ì™`$†Ü…à…à„„„™` 1…à…à„…à…à†Ü…à„„„ 1…à„…è   …ô™`™`$†Ü…à…à„„„™` 1…à…à„7 ™`‚d™`™d…ô…ô™`‚™`>™`™`‚d™`™d…ô…ô™`‚™`>E™`™`‚d™`™d…ô…ô™`‚™`:™`™`‚d™`™d…ô…ô™`‚™`™`‚d™`!™d…ô…ô™`‚™`@†Ü…à…à…à…à…à…à„„„™p, 1…à…à…à…à…à…à„ 4…à…à…à…à…à …à„ ™` …à„‚W0„…ì‚ ™d‚ ‚ ‚ …à…à…à…à„†Ø…à…à…à…à„„„I†Ø„„„™`…ô™`‚d™`…ô‚d…ô™`‚d™`…ô‚d…ô‚d†Ø…à„„„1„™`…à…à„E‚d„‚d€Õ ‚d€Õ ‚d…à…à„…ô™`™`‚d™`™d…ô…ô™`‚™`E™`™`‚d™`™d…ô…ô™`‚™`™`™`‚d™`™d…ô…ô™`‚™`…ô…à…à…à…à…à…à„™`™`†Ø…à„„„  ™d  ™d „ „ „„T  …à„ …à„ …à…à„ …à„ …à„…à…à…à„ …à…à…à„…à…à„ …à…à„ …à…à…à…à„…à…à…à„ …à…à…à„ ‚d €Õ ‚d ™` ‚d ‚d „™` ‚d …à…à„ …à„ …à„ …à„…à…à„ …à…à„ …à„ …à„…à…à…à„ …à…à…à„…à…à„ …à…à„…à…à…à…à„ …à…à…à…à„…à…à…à„ …à…à…à„"…à…à…à…à…à„$ …à…à…à…à…à„…à…à…à…à„ …à…à…à…à„* …à…à…à…à…à…à„#…à…à…à…à…à„$ …à…à…à…à…à„ 1 =…à…à„ „™` …è…ì …è…ì …è…ì…ô™d‚Ô…è ™d‚Ô…ô™d‚Ô …ô…ô…ô„ƒü   †Ü…à„ …à…à  ™`…ì…ì™`…ì  ™`…ìA  A ™`…ìAA A…à…à A†Ü…à…à„™` …à…à…à…àA A A "…ì…à…à„  …à …à  …à…à …à …à MQ„„„„ „„ >€‰  ™`™` „;  ™`™`€‰„  ™` €™„ 0„08  …à…à „…à „ $ …à‚ …à   ™`                     †Ü…à„ …à …à ;  ™`™`2  ™`™` {__DebugDisplay(),nq}!      qHCFSharp.PowerPack.FsLex.Parser+token+UNICODE_CATEGORY@DebugTypeProxy(  <7FSharp.PowerPack.FsLex.Parser+token+CHAR@DebugTypeProxy (™` ™` ™`<7FSharp.PowerPack.FsLex.Parser+token+CODE@DebugTypeProxy>9FSharp.PowerPack.FsLex.Parser+token+STRING@DebugTypeProxy=8FSharp.PowerPack.FsLex.Parser+token+IDENT@DebugTypeProxy      000  †Ü…à0„ …à0 …à0 00 00888†Ü…à8„ …à8 …à8 88 88‚  …ô™`‚'…ô™d…ô…ô™`‚™` …ô™`‚( …ô™d…ô…ô™`‚™`F™`…ô™`‚…ô™d…ô…ô™`‚™`™` ™`…ô™`‚ ™`‚ ™`‚™`‚…ô™`‚‚ ‚ ™`‚‚"™d…ô…ô™`‚™`# ™d…ô…ô™`‚™`&…ô™d…ô…ô™`‚™`I™d…ô…ô™`‚™`…ô™d…ô…ô™`‚™`#™d…ô…ô™`‚™`…ô™`‚™` …ô …ô™`‚™`…ô…ô™`‚™`…ô …ô™`‚™` ™`‚™`…ô™`‚™`'™`‚™`…ô™`‚™`™`‚™`™`‚™` ‚™`E E‚E E ‚ ‚ E‚…ô‚‚‚‚†` E  †` E ‚E  E  †` †`   †` E  E    E †`†`†`†` †`   „   …è Q! €Õ €Õ  …à„ ™`™` …è Q! Q!†Ü…à „   …à    €Õ €Õ  €Õ €Õ †Ü…à„„„ „…à„  †Ü…à „„„  „…à „ …à „    …ô†`…ô†`…ô …ô †` €‡€‰™`™`…ô™`‚…ô™`‚…ô™d…ô…ô™`‚™`…ô™d…ô…ô™`‚™` ‚ ‚ „‚ …ô‚‚‚ ‚@‚$‚(A‚‚€‰…ô‚…ô‚‚‚‚ ‚ ‚@‚@‚$‚$‚‚‚(‚( ‚‚„…ô™` ‚d …ô™`…ô™` ‚d<€‰…ô™` ‚d…ô™` ‚d…ô™`…ô™` ‚d‚d„9…ô™` ‚d…ô™` ‚d…ô™`…ô™`€‰‚d‚d„€Õ…ô…ô…ô€Õ…ô…ô  …ô€Õ…ô…à‚…à‚`‚`…ô™` ‚`‚` ‚™` ‚` ‚‚` ™` ‚`…ô™` ‚`  ‚` †<‚@ …à‚…à‚`‚`…ô‚…ô™` ‚`‚ †` ‚‚`‚`‚`†<‚‚h‚‚` m™`,‚`†<‚‚hm™`‚™`‚h †<‚ m™` ™`‚™`™` ‚` ™`™d‚`™`‚h+‚h†<‚‚hm™`…ô™` ‚`7™d‚`™`‚h†<‚…ô™`‚™`   …à„…à%…à‚`„ …ô‚`%€Õ …ô‚`…ô‚` …ô…à%…à‚`„ ‚` …à%…à‚`„…ô‚` %‚`% ) €Õ‚`%E„I‚”‚h…ô €Õ …ô €Õ …ô€Õ …ô€Õ …ô‚h‚”…è†<‚”‚d †<‚”‚d  …ô™` ™` †<‚d‚d‚h…è†<‚”‚d‚” …ô‚”‚” a …ô  …ô ™` …ô …è…ô‚”…ô‚” …è†`‚”†`‚” a a …ô   …ô ™` …ô †`g…ô‚”…ô‚”…ô‚”‚”€Õ …ôa …ô„ …ô™` …ô …ô…ô ‚”‚d3‚h…è†<‚”‚d…è…ô‚”…è†`‚”„…è†<‚”‚d…è…ô‚”…è†`‚” †<‚”‚d ‚”‚d ‚”‚”‚d ‚”‚d‚d ‚d™`‚d…ô‚dm %‚”…è†<‚”‚d…è…ô‚”…è†`‚”‚h…è†<‚”‚d…è…ô‚”…è†`‚”†<‚”‚d™`‚d…ô‚d‚h‚`…ô™`‚d™`I ™d…ô…ô™`‚™`™`…ô™`‚d™`…ô‚d+™`…ô™`‚d™`…ô‚d‚     ™`      EE  E E EE E (…ô™`‚((…ô™d…ô…ô™`‚™` …ô™`‚( …ô™d…ô…ô™`‚™`G ™`…ô™`‚…ô™d…ô…ô™`‚™`™` ‚ €‡‚ ™`™`…ô™`‚…ô™`‚…ô™d…ô…ô™`‚™`…ô™d…ô…ô™`‚™`™`€ƒ ‚ ™`™`…ô™`‚…ô™`‚…ô™d…ô…ô™`‚™`…ô™d…ô…ô™`‚™`™`™` ‚ ‚‚‚‚‚@ ‚…ô‚†Ü…à‚„ …à‚ …à‚ ‚A‚‚‚…ô‚…ô‚‚‚‚ ‚ ‚@‚@‚$‚$‚‚‚(‚(‚‚‚ ‚$‚( …ô‚" ‚‚‚‚‚ ‚ ‚$‚$‚(‚( ‚ (…ô‚ …ô‚ …ô‚94FSharp.PowerPack.FsLex.AST+Regexp+Alt@DebugTypeProxy94FSharp.PowerPack.FsLex.AST+Regexp+Seq@DebugTypeProxy(‚@ ‚@ ‚@94FSharp.PowerPack.FsLex.AST+Regexp+Inp@DebugTypeProxy(‚ ‚:5FSharp.PowerPack.FsLex.AST+Regexp+Star@DebugTypeProxy;6FSharp.PowerPack.FsLex.AST+Regexp+Macro@DebugTypeProxy ‚ ‚ ‚  ‚$ ‚(‚@ ‚@†` ‚@‚@‚@ †Ü…à‚@„ …à‚@ …à‚@‚H‚L‚P ‚H‚H€‰ ‚L‚L‚P‚P ‚@ ‚@‚H‚H ‚L‚L‚P‚P ‚H‚L‚P ‚@‚H‚H‚L‚L‚P‚P‚H‚H‚L‚L‚P‚P ‚@‚@(   =8FSharp.PowerPack.FsLex.AST+Input+Alphabet@DebugTypeProxyD?FSharp.PowerPack.FsLex.AST+Input+UnicodeCategory@DebugTypeProxy(†` †`  †` ?:FSharp.PowerPack.FsLex.AST+Input+NotCharSet@DebugTypeProxy ‚H ‚L ‚P(€Õ …ô‚`(…ô™`€Õ …ô‚` €Õ …ô‚` …ô™` €Õ …ô‚`…ô™` €Õ …ô‚`‚`…ô™`…ô™` …ô™` ‚`‚`(…ô™` ‚d …ô™` ‚d …ô™` ‚d …ô™` ‚d…ô™`‚d9‚d…ô™` ‚d…ô™` ‚d…ô™`…ô™` …ô™` ‚d ‚d(‚` €Õ‚` ‚`E™` ‚` ™` ‚` ™` ‚` E™` ‚`7 €Õ …ô‚`E™` ‚`„™` ‚`I‚` ‚`…ô™` ‚`…ô™` Item †<‚‚h ‚`‚‚` †<‚‚h‚` ™` ‚`‚! ‚…à‚ …à‚‚ ‚ ‚‚‚  E ‚  ! ™`!!!™`!™`!! ‚!†`!…à!‚ !E‚N †` …à‚†`!…à!‚!‚E‚‚E‚ E‚  ! ! !‚ †<‚‚hm™` †<‚ ™` ‚`™`‚™`(  %  0…à…à‚”‚” ‚”  „ „%‚`   €Õ …ô    „‚` ‚h€Õ …ôa …ô‚` …ô‚`™` …ô‚`a …ô‚`  …ô‚`™` …ô‚`R€Õ …ô‚`a …ô‚`„ …ô‚`™` …ô‚` …ô‚` …ô‚` ‚h  …ô™` ‚”‚d ‚d‚”‚d ‚ …ô™`‚™`™d‚`™`‚h™`‚d…ô‚d ‚g …ô™`‚d™`…ô‚d™d‚`™`‚h‚h‚`™`™`‚d…ô‚d‚d…ô‚dN ™`…ô™`‚d™`…ô‚d™`…ô™`‚d™`…ô‚d ‚ t …à™`…ô™`‚d™`…ô‚d™`…ô™`‚d™`…ô‚d™d…ô…ô™`‚™`…èQ!€Õ €Õ  …à„ ™`! ! M! ™d‚ÔAA…ô™d‚Ô…ô™d‚Ô …è…ô™d‚Ô„‚ô …à„„‚ì‚Ü‚ð‚ä‚à …à „ ‚è  q) …à „J‚ô…à„„‚ì…è‚Ü‚ð…à„‚ä…à„‚à…à „ ‚è#…è…ô™d‚Ô‚Ô„‚Ô$…ô™d‚Ô‚Ô…ô™d‚Ô5…è…ô™d‚Ô…à„…ô™d‚Ô' …è…ô™d‚Ô…à„$…è…ô™d‚Ô…à„ƒƒ„ƒƒ…ô™d‚Ô…à„‚Ô…à„„‚Ô…à„ ‚Ô…è‚Ô…à„‚Ô…à „†Ü…à‚Ô„ …à‚Ô …à‚Ô(…è …è …è50Internal.Utilities.Arg+spec+Clear@DebugTypeProxy (…à „ …à „ …à „50Internal.Utilities.Arg+spec+Float@DebugTypeProxy (…à„ …à„3.Internal.Utilities.Arg+spec+Int@DebugTypeProxy (…à„ …à„4/Internal.Utilities.Arg+spec+Rest@DebugTypeProxy3.Internal.Utilities.Arg+spec+Set@DebugTypeProxy61Internal.Utilities.Arg+spec+String@DebugTypeProxy …à„„4/Internal.Utilities.Arg+spec+Unit@DebugTypeProxy ‚Ü ‚à ‚ä ‚è ‚ì ‚ð ‚ô AA „™d‚Ô ƒ ƒ…ì…à „…ì($…ì…à(ƒ<…ì&$((ƒ<ƒ,…ì((ƒ<ƒ,ƒ4$ …àƒ<0,™`…ô™`†`   …à…à™`…ô™`†`ƒTP $…ô™`†`…à™`™`…àE …ôƒd …à „€Ê3€Õ((ƒ<…àƒ,ƒ,ƒ4$((ƒ<ƒ,…àƒ<„0,…ì™`…ô™`…ô™`†`…ô…ô…ô…ô…ô $…à€Õ€Õ     ™`…ô™`™` ƒ,E™` ™` ™` E™` …ô ƒ4E  E  €Õ ™`…à™` ™`- …ô™`…à™`™` ™` ™`  †` $ …àƒT  ƒ4…ôE…ô …ô E…ôƒd(Eƒl E" …ì…ìƒl  …à„ ™`…à™`.…à™`…à„ €‰ „…à™`‡ü…à„‡ü,…à™`‡ü…à„‡ü‡ü™`‡ü„…à™`‡ü,…à™`‡ü…à„‡ü‡ü™`‡ü„!!  ‡ü„„ ™d…à™d „ƒ„  ‡ü„ƒˆ! …à™d‡ü…à™d‡ü „ ‡ü„…à…à …à…à…à …à…à …à…à ™d…à  ™d€Ù €Ù€Ý €Ý €á €á ‡ü™d  ‡ü™` ‡ü„/ …à™`‡ü…à„‡ü ‡ü4 …à™`‡ü…à„‡ü „   ™`  ‡ü™`4 …à™`‡ü…à„‡ü ‡ü   ™`„  „$ }T AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleàT AllowMultipleÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultiple(„  „  „  „  „ ÿT AllowMultiple(„$ „$ „$(    ÀT AllowMultipleT AllowMultipleT AllowMultiple „Ü  „Ð „Ø „Ð „Ð „Ð „Ø „Ü E „؄؀‰„܄܄ЄР„ÐK „Є؄؄܄܄ЄЄ؄ÜB „؄؄܄܄ЄР„ÐFSharpChoice`2(C>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy „à „Ø „ä „Ü „ø „è „ô„è „ð„è „è „è „ð „ô „ø v„ð„ð€‰„ô„ô„ø„ø„è„è„è „è~„è„ð„ð„ô„ô„ø„ø„è„è„è5„ð„ô„ø„ès„ð„ð„ô„ô„ø„ø„è„è„è „èFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy „ü „ð … „ô … „ø … … …… …… ……………… ……€‰……………… ……€‰………………………? …………|…………………… ……FSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy …  … …$ … …( … …, ……H …0…D…0…@…0…<…0…8…0  …0…0…0…8…<…@…D…HX …8…<…@…D…H €®…8…8…<…<…@…@…D…D…H…H …0FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxy…L …8…P …<…T …@…X …D…\ …H…| …`…x…`…t…`…p…`…l…`…h…`  …`…`…` …`FSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxy…h…€ …h…l…„ …l…p…ˆ …p…t…Œ …t…x… …x…|…” …|…¸ …˜…´…˜…°…˜…¬…˜…¨…˜…¤…˜… …˜  …˜…˜…˜ …˜…˜FSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxy… …¼ … …¤…À …¤…¨…Ä …¨…¬…È …¬…°…Ì …°…´…Ð …´…¸…Ô …¸  …Ø %0 ™ ……à… ™ …à … ……à ™  ™$ –ì –ì …à…à …à–ì–ì–ø–ì…à –ø –ì…à …à…à…à…à @–ø–ø–ì…à–ì…à"…à…à…à—–ø…à–ì…à…à— –ø…à …à–ì…à…à …à…à…à…à z——–ø…à–ø…à–ì…à…à–ì…à…à——…à–ø…à…à!–ì…à…à…à— —…à …à–ø…à…à  –ì…à…à…à %…à…à…à…à…à €Æ———…à—…à–ø…à…à–ø…à…à–ì…à…à…à–ì…à…à…à™( ‰…à„‰ ™,…à… ™0 …à™`#…à…à…à™` ™4 …à™d,…à…à…à…à™d™8 …à™h5…à…à…à…à…à™h™< …à™l>…à…à…à…à…à…à™l…è €‰ …è…è …è …è …è FSharpRef`1 {contents} …ì…ì …ì …ì …ì' …ì…쀉…ì…ì …ì+ …ì…ì…ì…ì…ì …ì …ì …ì$…ì…ì…ì…ì …ìFSharpOption`1 Some({Value}) …ô (…ô(…ô…ô …ô( …ô…ô€‰…ô…ô …ô, …ô…ô…ô…ô…ô …ô+ …ô…ô…ô…ô…ô…ô…ô …ô …ô…ô…ô…ô–ä …ô A FSharpList`11,Microsoft.FSharp.Collections.ListDebugView`1{DebugDisplay,nq}…ü 0…ô…ô…ô…ô…ô(††  †† †…à„ † …à„% ††…à„…à„ †† I†  U] UFSharpHandler`1† †“€ †E#†E††‘‘†  …à„„ †$ †0 †$†$"†$†$†$ †,†$ †$ †$ †$ †$A‡ü…à™l]U…àU…ì…à„„ ‹T‹X)™d…à™d]U…àU…àU„:™d…à™d]U…àU…àU„…à‡ü ‹| †…ì…à„„#‡ü†…ì…à„„‹€ „‡ü„‡ü‹˜ ‡ü…ì „‡ü‡ü‡ü‡ü…ì „„ ‡ü„é „I‡üI…à„„‡ü‡ü…ài„ FSharpAsync] ‰À‰Ðˆ  ‰À‰Ð ] ‡è‡è] …ì‰Ði‰Ð …ì…ì …ì‰Ð‰Ü‰à‰Ø'…ì‰Ð…ì‰Ði‰Ð‰À‰Ð õ(mm‡à…ì™`…à‡è‡ðù‡üˆ‹° ˆ‡üm m ‡à…à…ì …ì0…ì…à…ì‡à…ìm…ì0…ì…à…ì‡à…ì m ‡à„ˆ…à…ì‡ü ‹È ˆ…à…ì‡ü „…숅à…ì‡ü#0‡ü…ì…à…ì‡ü ‹Ð0‡ü…à…ì‡ü‹Ü ˆ „…ì ˆ ‡ü…ì‹è „ ‡ü ùù ùõ õ…ì ‡üˆFSharpAsyncReplyChannel`1†…àˆ‡ü„†„ˆ†„ …àˆ‡ü„…ì‡Ô †† † ‡ü„‹ø ˆ ‡ü„‰À‰À‹ü ‰Àˆ…àˆ‰À…ì0…ì…àˆ…ì …ì0…àˆ…ìŒŒ  ‰ÀŒ ‰À#0‡ü…ì…àˆ…ì ‡ü…ìŒ ‡ü…ìŒ  ‡ü‡ü…ì‰À0‡ü…àˆ…ì ‡ü…ì ‡ü…ì…ì#0‡ü…à…ì‡ü…ì(0‡ü…ì…à…ì‡ü…ìˆ ˆ%ˆ…àˆ‡ü„…ì‡ÔFSharpMailboxProcessor`1ˆDefaultAsyncBuilder†`set€Õ’ E™` ™`Q’ M’ ’  )’ €Õ’  ™` E™` Q’ M’  ˆ<! Q’ M’ M €Õ’ E™`„™`IQ’ M’ Q™` dict    „ array2D†Ø„ sprintf†Ø„ failwithf†Ø„„ fprintf†Ø„„ printf eprintf fprintfn printfn eprintfnˆ  single  double uint8 int8€å€å ‡È op_Splice‡Äop_SpliceUntyped† † |Lazy|’  ’  M’ ˆ0 M’ ˆ( ’  ’ ˆ, M’  E’ ’  E’ E’ „’ I™`’ ’  ’ ™`’ &™`’ ’ ’  ’ Q’ M’  ˆ<M’ ™`E’ ’ E’ J E’ „’ ™`’ ’ ’ I ˆ4 ’  ˆ8 Q’  M’  ’ ˆ ˆP …à† † …à† map††…ì ˆX …à…ì† † …à…ì†  chooseˆ\ …à † …à†  filterˆ`™`† † %™`† † …à†  partition ˆh …à…à† #† …à…à†  scanI…à„† addI…à„†  subscribeˆp † † ™`†  pairwiseˆ€ † † † † †  merge ˆ„ …à„Ð ˆˆ …à„Ð ™`† † -™`† † …à„І  split …à† ˆL …à† „Ð „Ü „Ø „Ð „܆ „Ø(„Ð„Ð„Ü„Ø …à†  ˆP ˆL…à…ì ˆT …à…솄Ѕì„Ü…ì„Ø…ì„Ð…ì„Ü…ì„Ø…ì<„Ð…ì„Ð…ì„Ü…ì„Ø…ì…à…ì ˆX ˆT …àˆ\ˆ`…à…à…è ˆd! …à…à†…è…è,„ЄЄ܄؅à…à ˆh ˆd†™` …è…ìˆl †™`…è…ì …è…ì ™`†™`…ì…ì† ˆp…è…ì I†™`ˆt †…è…è…èˆx IIˆ€…è…è…èII…à„Ð ˆ„ „Ð „Ø…à„Ð „Ø…ì„Є؅à„Ð ˆˆ „Ð „Ü…à„Ð „܄Є܆„ …à„†„ ˆ …à†„†„…à„I#††…à††„†„ˆ” …à†„†„…à„I"††…à†ˆ˜ …à†„†„!™`†††††„†„…à„I5™`††††…à† ˆœ …à…솄(††…à…ì†…è …à„…è ˆ ! …à…à…膄…膄…à„I,††…à…à†…à„††„™` …è…솄™` …è…숤 †„™`…è…ì(†„™`…è…ì…à„I(††™`™`†ˆ¨ˆ¬†„…à„I#†††††„†„ ˆ°! …à„І„†„!™`†††††„†„…à„I=™`††††…à„І†„ ˆ†„ „†„ˆ”ˆ˜ ˆœ…ì…ì…ì ˆ †„™`ˆ¤†„™`ˆ¨ˆ¬†„ ˆ° „Ü „܆„„Ð„Ü„Ø „Y ‡üY‚AsyncGetResponse‡ü „‡ü‡ü‚‚ AsyncDownloadString‚  ‚‰ÐY ‰Ði Y‚ ‚ ‡üY‚ ‚™`] U]] U™`] YU…ì…à„„ ‡üY„‚ ‚ a „a…à…àe„ …à…àe„…àe e a…à…àe„ …à„ …ài„†a+ ‚…à„…à„…ài„†a ae†a†a a„‚ ‚‚ …à„aa"™d…à„…à„…ài„ a ‚ 3…à„…à„…ài„…à„a†aa' „™d…à„…à„…ài„ ‡ü ‡üI I ‚‡ü ‡ü„ ‡ü€á…ì…ì AsyncRead „ ‡ü€á „‡ü„€á…ì…ì AsyncWrite AsyncWaitOne AsyncSleep† …à„Add‰4† I† …à„ Subscribe ™l] U] ] U™l] U …è „ …è €á…è   ‡ü„ €á …è „U‰4ˆ ˆ ‰< ˆ ‰@‰D'ˆ …à„…à„…ài„U‡ü]ˆ ˆ Uˆ ˆ Uˆ ‰< ‰Ð‰@ ‰Ð „‰D „i™`‡Ô…ì‡ä‡ä …ì‡ä ‰À‰ÐE…à‡Ô…à…à‡è…à…à‡è…à…ài‡è…à‡ü‡è …ì‰Ð‰Ð…ì‡ä™`‡Ô…ì‡ä ‰À‰Ðé‰L‰P‰T‰X‰\…à‡Ô…à‡è …à‡è…ài‡è‡ü‡è …ì‰Ð€œ ™`‡Ô…ì‡ä‡ä‡Ô…ì‡ä‰À‰Ð…à‡Ô…à…à‡è…à…à‡è…à…ài‡è…à‡ü‡è‡è…ì‰Ð…ì‰Ð‰Ð…ì‡ä‡Ô‡ü…ì‡è‡Ô‡ü„‰l,‡Ô‡ü…à„…à„…ài„- ‡è‡Ô…à‡è…à‡è…ài‡è‡ü‰T ‡è‰X ‡è‰\ ‡èi ‡è„‰l …à„ …ài„‡èé‡ð…à„‡è釸‰˜ ‡øé‡ð é‡ô‡ð‡ø‡ø‰¬‡ü…à‡ø‡è‚‚‚õ‰À„‚‰À„ …ô‰´ …ô‰´ ‰´‚…ô‰´‰À„‰´ ‡ø…ì‰À‡ø„ ‡ø„ ‡ø„‡ø„ é‡ô ‡è‡ø„‡ø‰” ‡ø‰˜ ‡ô é‡ô‡ð ‡ôi‰¬ ‡è‡ø‰´ …à„‡è‰¸ ‰´…à„‡è鉼‰´ (‡ü‰À …ô‰´õ„‰Ä ‰´.…ô‰´…ô‰´‰´…ô‰´‰È …ìõ…ì „‰´‰À…ì…ì …è‡Üå ‡ü„ …è‡Ü‰Ü‰à‰Ü‰à‰Ø‰Ü‰ài‰Ð ‰Ð…ì‰Ð…ì‰Ðå‰ô. ‡Ô…à‡è…à‡è…ài‡è‡ü‡ð‡ð.‡è‡Ô…à‡è…à‡è…ài‡è‡ü‰ø‰üŠ ‡ü Š ‡ü…à‡ü‡ü‡ü‡ü…à‡ü Š …à‡ü‡ü…à‡üŠD …à„„‡ü‡ü…à„„‡üŠL …à‡ü‡ü‡ü…à‡ü‡üŠ\ …ài„‡ü‡ü…ài„‡ü‡ü‡ÔŠd‡ü…à‡ü‡ü„…à„‡ü„Št …à‡ü„ E„ ‡ü„…à‡ü„Šx‡ü‡ü„‡ü i ‰ÐIDMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Ok@DebugTypeProxyLGMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Error@DebugTypeProxy(i iOJMicrosoft.FSharp.Control.AsyncBuilderImpl+Result`1+Canceled@DebugTypeProxy‰Ø‰ä ‰Ø‰Ü‰è ‰Ü‰à‰ì ‰à™`‡ð…à„‡è ™`‡ð…à„‡è™`‡ð…à„‡è&™`‡ð…à„‡è‡ð…à„‡è‡è‡ü‰ô‰ø‰ü‡èŠ …à‡èЇô‡ð…à‡è…à‡ü‡ø Š …à‡ü‡ø‡ü‡ø‡ü…à‡ü…à‡ø‡è, …à‡è‡ü„‡ü‡üŠ  ‡ü‡ø…à‡ü Š ŠŠ  ‡ø‡ì …à‡èŠ ‡ø‡ü Š…à‡ü/ ‡ð…à‡è‡ü„‡ü‡üŠ$Š( …à„„‡ø‡ð…à‡è„„„Š0 ‡øŠ4Š8 ‡øiŠ<Š@„„„ŠD&‡ð…à‡è…à‡è…ài‡è‡ô…à‡üŠH …à‡ü‡ø  ‡üŠL…à‡è‡ô …ài„‡ô‡ð„„„Š\‡ô…ài‡è‡ø‡Ô …à‡Ô‡è ‡è‡ø‡ÔŠd …à„ …à„‡ü„Šl E…à‡ü„Šp …à‡ü„EŠt ‡ü„EŠx ‡ü„…ô…à„„‡Ø ‡Ø…ô…à„„…ô…à„„…ô…à„„m‡Ø„ ‡Ü™`‡Ð‡Ü‰m‡Ø„‡Ø‡Ø  m‡Ø  m‡Ø‡Ü m‡Ø„-…ì…à„‡è…ì…à„‡è…à„‡è‡ì…à„‡è …è„Ь ‡ôñ…è…à‡è#…à„‡ôñ…è…à‡è…ì„Ði…è…ì„Ði…ì„Ði „Üi „Øi‡ø …à‡è"…ì„Ði…ì„Ðii(‡è‡ø‡ô…è…ì„Ði…è‡ä„…è…ì„Ði ‡ø$…è…ì„Ði‡ô‡ø3‡è‡ø‡ô…è…è…ì„Ði‡ä+…è…è…ì„Ði‡ä„Ði„9‡è‡ø‡ô…è…è…ì„Ði‡ä„Ði…ì…à„„‹,"…ì…à„„…à„„„$…ì…à„„‰À‰Ð‰° ‹P …à‡ü#…à™d]U…à‡ü†‹\5†…ì…à„„‰À‰Ð‰°†ˆˆ‡à‡ø™`…à‡è‡ð…ì™`…à‡è‡ð ˆˆ‡ø‡ô„ …à‡èA…ì™`…à‡è‡ð…ì™`…à‡è‡ð‡ð…à‡è‡èùˆ„ ‹À „…ì-‡ü…숅à…ì‡ü„‹Ø‡ü…숄‹ä‡üˆ„ m‡Ø„ …è‡Ü ‡Ø% …ô…à„„…ô…à„„‡Ø …ô …ô…ô…à„„ …è‡ð …à„‡è ‡ð …à„‡èФ …à‡èЍЬñ „‡èé,…à™d…à„…à„…ài„„а i#™d…à„…à„…ài„+…à™d…à„…à„…ài„„‡ôñ…è…à„Ї芴 …à„Ð‡è „Ð…à„ЇèЏм‡ø„Ð:‡ô‡Ô‡ð…à‡è…à„Їè…à‡è…ài‡è ‡è‡ø„Ð ‡øŠÀ. ‡ø‡ô…è…è…ì„Ði‡äŠÄ- ‡ø‡ô…è…è…ì„Ði‡ä „ÐiŠÈŠÌ „‡ü ‡üŠÐ ‡ü‡ø ‡ü …à‡è,‡ô‡ü…è…è…ì„Ði‡ä ‡è‡ø…è…ì‚% ‡ô…è…ì‚%…à„‡è …ì‚% …è…ì‚%…ì‚%…ì‚%…ì‚%‡è ‚)‡ô…è…ì‚%…à„‡è õ …à‡è ‡è‡ø ‡ô…è…ì‚- õ‡ô…è…ì‚- …ì‚-‚- …è…ì‚-…ì‚- õ…ì‚-…ì‚-‚- …à‡è ‡ô…è…ì‚-‡Ð…à‡è  õ‚-õ‚1$‡ô…è…ì‚-‰‡Ð…à‡èU U…ì ‡ü„‹!‡ô‰Ø‰Ü‰à‰Ð ‡ü‰Ð‹‹  ‰Ð‹ ‡ü‹ ‡Ü‰À‰Ð‹ ‹ ‹$‹(‹, ‰Ð‡è‰°‹0" …ì…à„„‰À‰Ð‰° ‡Ð …àU‹8. …àU…ì…à„„‰À‰Ð‰°‡Ð‰Ð‰Ð‡è…à™`]U‹<‡Ô‰À‰Ð‰°‡Ð]U ‡ü‡Ô‹@ ‡Ô…à™d]U‹D ™d]…à™d]U…à™h]U ‹H ™h] …à™h]U…à™l]U ‹L™l] …à™l]U…à‡ü ‹P ™d]…à‡ü ] U™d] U‹\ † ‰À‰Ð† ‹`2 †…ì…à„„‰À‰Ð‰°†  ‹d5 †…ì…à„„‡Ô‰À‰Ð‰°† ‡Ð„ †† ‹l% †‰À‰Ð‰°†‡Ð†† ‹p ˆ„ˆ ‹t ˆ ¹q „ ‹x …à„‡Ð †‡Ð…à„ˆ †ˆ …à„ˆ ‹d ˆ ‹t†‡Ð †ˆ_ ‡Ô‰À‰Ð‰°…à„‡Ð†‡Ð…à„ˆ†ˆ…à„†‡Ðˆ ‹| ‡ü„‹ˆ ‰À‰Ð…è‡Ü‹Œ‹‹” ‡ü…ì‰À‰Ð‡Ô‡Ü…è‡Ü‡Ð‡è ‡ü‡ü‡Ô‹˜ ‡Ô‡ü ‡ü‡ü„„ ‰ I ‡üI‡Ô ‡ÔI‰ ‡üI„ ‡ô‡à …à‡è ‡ü…숅à…ì‡ü ‹¼  ‡ü…ì ‹À …ì‡üˆ …ì‡ü‹¸ …ì …ì…ì‡ü…ì‡ü ‡ü…ì„ ‹È‹Ä ‡ü…ì ‹Ð‹Ì …ì‹Ô‹Ø‹à‹ä…ì…ì‹ì ‡ü„‹ô…àˆ‡ü„‹üŒŒŒ ‡ü…ì‰ÀŒ  ‰À…쌌 ‡ü…쌌Œ  ofNativeInt toNativeIntget read write stackalloc™`‡ …ô‡Ä ™`‡ …ô‡Ä™`‡ …ô‡Ä€±)™`‡ …ô‡Ä‡ …ô‡Ä‡Ä€å…ô‡Ä‡Ä‡dq…ô‡Ä‡Ä…ô‡Ä‡Ä†h‡‡$‡(u‡,‡0‡4‡8€‡<‡@‡D±}‡L‡T‡\‡`†ä†ð†à†ô…ì™`†à‡Ä…ì™`†à‡Ä†à‡Ä…ô‡Ä!„è†à™`†à‡Ä™`…ô‡Ä™`…ô‡Ä( †ä†ð†ô†à‡Ä†ì‡ …ô‡Ä…ô‡Ä&„è†à™`†à‡Ä™`…ô‡Ä‡Ä,'|ShapeVar|ShapeLambda|ShapeCombination|…ì…ì …ì …ì‡Ä |Bool|_| …ì …ì‡Ä |String|_|   …ì …ì …ì ‡Ä |Single|_|  …ì …ì …ì ‡Ä |Double|_| …ì …ì‡Ä |Char|_| …ì …ì …ì‡Ä |SByte|_|…ì …ì …ì‡Ä |Byte|_| …ì …ì …ì‡Ä |Int16|_| …ì …ì …ì‡Ä |UInt16|_| …ì …ì‡Ä |Int32|_|…ì …ì …ì ‡Ä |UInt32|_|  …ì …ì …ì ‡Ä |Int64|_|  …ì …ì …ì ‡Ä |UInt64|_| …ì‡ …ì‡ …ì„…ì‡ ‡dq …ì„‡Ä |Unit|_|…ì™d†à‡Ä‡Ä…ì™`‡Ä …ì†à™`…ô†à‡Ä…ì™d†à‡Ä‡Ä™d†à‡Ä‡Ä…ì™`‡Ä ™`‡Ä…ì†à…ô†àM …ì™d†à‡Ä‡Ä…ì™`‡Ä…ì†à†à‡Ä†à™`…ô†à‡Ä…ô†à™`…ô†à‡Ä†à‡Ä)†ä†ô†à‡Ä™`…ô†à‡Ä‡Ä…ô†à…ì™`…ô†à‡Ä‡Ä…ì™`‡Ä‡Ä …ì„…ì…ô‡Ä…ì™`‡Ä‡Ä ™`‡Ä‡Ä™`‡Ä…ô‡Ä…ì™`‡Ä…ô‡Ä5…ì™`‡Ä‡Ä‡Ä‡Ä…ì„…ì…ô‡Ä…ô‡Ä…ì™`‡Ä…ô‡Ä‡Ä ‡Ä…ô†à…ì™`…ô…ô†à‡Ä‡Ä |Lambdas|_|…ì™`‡Ä…ô…ô‡Ä‡Ä|Applications|_|…ì™d‡Ä‡Ä‡Ä…ì…ì™d‡Ä‡Ä‡Ä™d‡Ä‡Ä‡Ä!…ì™d‡Ä‡Ä‡Ä…ì‡Ä‡Ä…ì™`‡Ä‡Ä‡Ä |AndAlso|_| |OrElse|_|…ì™`…ô…ô†à‡Ä…ì™d…ì‡Ä}…ô‡Ä…ì™`…ô…ô†à‡Ä™`…ô…ô†à‡Ä…ì™d…ì‡Ä}…ô‡Ä™d…ì‡Ä}…ô‡ÄZ…ì™`…ô…ô†à‡Ä…ì™d…ì‡Ä}…ô‡Ä}}…ì™d…ì‡Ä}…ô‡Ä.…à‡Ä…ì™d…ì‡Ä…ôq…ô‡Ä‡Ä|SpecificCall|_|&!|MethodWithReflectedDefinition|_| } …ì‡Äu.)|PropertyGetterWithReflectedDefinition|_|.)|PropertySetterWithReflectedDefinition|_| …ì™`…ô†à‡Ä‡Ä …ì™`‡Ä…ô‡Ä‡Ä }} …ì‡Ä } q™d…ì‡Ä…ôq…ô‡Ä!…ì™d…ì‡Ä…ôq…ô‡Ä0…ì™d…ì‡Ä}…ô‡Ä}…ì‡Ä…ô‡Ä& …ì™d…ì‡Ä…ôq…ô‡Ä‡Äq€……àŽ4™`€…àŒÄ‡Ä"…àŽ4…ô™`€…àŒÄ‡Ä€Õ™`€… €ÕŽŽ™`…ô…ì™`…ô…ô…ô$…ì™`…ô…ô…ô…ì™`…ô…ôqqqqq †ä†ì‡ …ì‡ ‡Ä ™`‡ ‡Ä…ì™`‡ ‡Ä†ä†ì…ô‡Ä‡Ä‡ …ì™`‡ ‡Ä‡Ä™d‡ ‡Ä‡Ä…ì™d‡ ‡Ä‡Ä!†ä†ì…ô‡Ä…ô‡Ä‡Ä‡Ä‡ …ì™d‡ ‡Ä‡Ä‡Ä™h‡ ‡Ä‡Ä‡Ä…ì™h‡ ‡Ä‡Ä‡Ä, †ä†ì…ô‡Ä…ô‡Ä…ô‡Ä‡Ä‡Ä‡Ä‡ …ì™h‡ ‡Ä‡Ä‡Ä‡Ä†ä†ð …ì†à‡Ä |Var|_|…ì™d‡ ‡Ä‡Ä…ì™d‡ ‡Ä‡Ä‡Ä‡Ä|Application|_|†ä†ô‡Ä†à…ì™`†à‡Ä‡Ä |Lambda|_|…ì‡Ä†ä†ì…ô‡Ä‡Ä …ì‡Ä‡Ä |Quote|_|…ì™h‡ ‡Ä‡Ä‡Ä!…ì™h‡ ‡Ä‡Ä‡Ä‡Ä‡Ä‡Ä…ì™d‡Ä‡Ä‡Ä‡Ä|IfThenElse|_|†ä†ì…ô‡Ä…ì…ô‡Ä‡Ä |NewTuple|_|…ìq †ä†ì‡hq …ìq‡Ä|DefaultValue|_|™`q…ô‡Ä…ì™`q…ô‡Ä†ä†ì‡q…ô‡Ä…ì™`q…ô‡Ä‡Ä |NewRecord|_|™`†h…ô‡Ä…ì™`†h…ô‡Ä†ä†ì‡†h…ô‡Ä…ì™`†h…ô‡Ä‡Ä|NewUnionCase|_|…ì™`‡ ‡Ä ™`‡Ä†h…ì™`‡Ä†h…ì™`‡ ‡Ä‡†h‡Ä…ì™`‡Ä†h‡Ä|UnionCaseTest|_|…ì™`‡ ‡Ä‡$‡Ä…ì™`‡Ä‡Ä |TupleGet|_| ™`‡Äq…ì™`‡Äq…ì™`‡ ‡Ä‡Tq‡Ä…ì™`‡Äq‡Ä |Coerce|_|…ì™`‡ ‡Ä‡`q‡Ä |TypeTest|_|†ä†ì‡Xq…ô‡Ä |NewArray|_|†ä†ì…ô‡Ä…ô‡Ä‡Ä‡Ä|AddressSet|_||TryFinally|_|™l‡Ä†à‡Ä†à‡Ä…ì™l‡Ä†à‡Ä†à‡ÄO †ä†ì…ô‡Ä…ô‡Ä…ì™`†à‡Ä…ô‡Ä…ì™`†à‡Ä†à†à‡Ä‡Ä‡Ä…ì™l‡Ä†à‡Ä†à‡Ä‡Ä |TryWith|_|$†ä†ì…ô‡Ä†ä†ð…ô‡Ä†à‡Ä |VarSet|_|™`q …ì™`q†ä†ì‡dq…ì™`q‡Ä |Value|_| †ä†ì …ì‡Ä |ValueObj|_|…ì™`‡ ‡Ä‡Ä |AddressOf|_||Sequential|_|™h†à‡Ä‡Ä‡Ä…ì™h†à‡Ä‡Ä‡Ä4…ì™h‡ ‡Ä‡Ä‡Ä…ì™`†à‡Ä†à‡Ä‡Ä‡Ä…ì™h†à‡Ä‡Ä‡Ä‡Ä|ForIntegerRangeLoop|_| |WhileLoop|_|™d…ì‡Äu…ô‡Ä…ì™d…ì‡Äu…ô‡Ä#†ä†ì‡,u…ô‡Ä‡(‡Ä…ô‡Ä!…ì™d…ì‡Äu…ô‡Ä‡Ä|PropertyGet|_|…ì™`…ô‡Ä‡Ä…ì™`…ô‡Ä‡Ä™`…ô‡Ä‡Ä™h…ì‡Äu…ô‡Ä‡Ä…ì™h…ì‡Äu…ô‡Ä‡ÄV †ä†ì‡4…ì™`…ô‡Ä‡Ä‡Äu…ô‡Ä†ä†ì‡0…ì™`…ô‡Ä‡Ä‡Ä…ô‡Ä$…ì™h…ì‡Äu…ô‡Ä‡Ä‡Ä|PropertySet|_|™`…ì‡Ä€…ì™`…ì‡Ä€†ä†ì‡<€‡8…ô‡Ä‡Ä…ì™`…ì‡Ä€‡Ä |FieldGet|_|™d…ì‡Ä€‡Ä…ì™d…ì‡Ä€‡Ä' †ä†ì‡D…ô‡Ä‡Ä€‡@…ô‡Ä‡Ä…ì™d…ì‡Ä€‡Ä‡Ä |FieldSet|_|™`±…ô‡Ä…ì™`±…ô‡Ä†ä†ì‡H±…ô‡Ä…ì™`±…ô‡Ä‡Ä |NewObject|_|#†ä†ì‡P}…ô‡Ä‡L‡Ä…ô‡Ä!…ì™d…ì‡Ä}…ô‡Ä‡Ä |Call|_|+…ì™`‡Ä‡Ä…ì™`†à‡Ä†à‡Ä‡Ä…ì™d†à‡Ä‡Ä‡Ä |Let|_|5…ì™`†à‡Ä…ì™`…ô†à‡Ä…ô†à†à‡Ä…ì™`…ô†à‡Ä‡Ä™dq…ô†à‡Ä…ì™dq…ô†à‡Ä;…ì™`‡ ‡Ä‡\q‡Ä…ì™`…ô†à‡Ä…ô†à‡Ä…ì™dq…ô†à‡Ä‡Ä|NewDelegate|_|™`…ô™`†à‡Ä‡Ä…ì™`…ô™`†à‡Ä‡Ä@…ì‡Ä…ì™`…ô†à‡Ä†ä†ì…ô‡Ä…ô†à…ô‡Ä‡Ä"…ì™`…ô™`†à‡Ä‡Ä‡Ä|LetRecursive|_|u…ìu u…ìu u…ìuuq†h …ì†h †h…ì†h†h…ì†h†hquu†h qq€åq‡Ä…ì™`…ô™`†à‡Ä‡Ä}†ä†ð†ô†à‡Ä†ì‡ …ô‡Ä…ô‡Ä…ô‡Ä…ì™d†à‡Ä‡Ä…ô‡Ä…ì™`…ô™`†à‡Ä‡Äq†h‡$u€±}€åq‡Ä‡ …ô‡Ä‡Ä‡ ‡Ä‡ ‡Ä‡Ä‡ ‡Ä‡Ä‡Ä‡ ‡Ä‡Ä‡Ä qq q y y‡Äy…ô‡Ä ¥‡Ä qqqq ‡Ä‡Äq †à‡Äq ‡ q…ôq…ôq q‡Ä …ôq‡Ä‡Äq‡Äqq ‡Äq‡Ä u‡Äu u†h†h ‡Ä†h‡Ä €€ ±±u‡Äu…ô‡Ä‡Ä‡Äu…ô‡Ä‡Äu…ô‡Ä‡Ä‡Ä‡Äu…ô‡Ä‡Ä} yq }yq ‡Äq‡Ä‡Ä…ô‡Ä‡Äq‡Ä‡Ä…ô‡Ä™`…ô†à…ô‡Ä ™`†à‡Ä™`…ô†à…ô‡Ä*™`…ô†à…ô‡Ä…ô†à…ô‡Ä‡Ä qq…ôq…ôq…à…àqq…à…àqq…ô} …à}…ì} }©…ô}…ì}.…ô}q…ô}…ô}}…à}…ì}€å+}q…ô…à…àqq…à…àqq‚Q …à…àqqq }©µq‚U  qqq…ì}…ì}}‚Q u©u€å}€å}q qq…ôq…ôq…à…àq …ôq u©µqq‚Uq…ôqqu2uq…à…àq…à…àq…ôq…ôq €©q€€q…ôq ±©µq‚U …ôq±±q…à…àq…ôqq…ôq±"±q…à…àq…ôq…ôq™`…ô…ô™`…ô…ô,…ô…ô™`…ô…ô…ô™`…ô…ô…ô }q }}…ôq…à…àqq…ô…à…àqq™`…ôq…ôq,™lq…ô…à…àqq…à…àqq™`…ôq…ôqO q…à…àqq…ô…à…àqq™`…ôq…ôq…ôq…ôqq}7}™lq…ô…à…àqq…à…àqq…ôqu…ôq…ôqqq q…ôq q …ôqq q…ôq…ìq q q…ìqq€…€…€…€… €…€å€…Ž4€…qŽ4q…à…ôqqŽ4 Œ¨ …à…ô…ô…à(™`…à…ôqq…ô…à…àqq…àŽ4…ô…à…àqq…àŽ4…à…àqq…à…ôqq'™`…à…ôqq…ô…à…àqq™`…à…ôqq…ô…à…àqq…àŽ4…ô…à…àqq…àŽ4…à…àqq…à…ôqq…ô…à…àqq…à…àqqŽ4…ô…à…àqq …à…àqq…ô…à…àqq…à…àq…ôqŽ4 …ô …ô …ô †<†à ŒÄŒÄ†à †àŒÄq9™d…à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä…àŽ4…ô…àŒÄ‡Ä…àŽ4…àŒÄ‡Ä…à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä …àŒÄ†à …àŒÄ‡Ä8™d…à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä…ô…àŒÄ‡Ä …àŒÄ‡Ä€¾ ™d…à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä…àŽ4…ô…àŒÄ‡Ä…àŽ4…àŒÄ‡Ä…à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä…àŒÄ†à…àŒÄ‡Ä…à…àqq…àŒÄ‡ÄŽ4…à…àqq…àŒÄ†àŽ4…à…ôquŽ4…à…ôq†hŽ4…à…ôq†h…à…ôq†h‡ Ž45…àŽ4…ô…à…àqq…àŽ4…à…àqq1™lq…ô…à…àqq…à…àqqŽ4+™hq…à…àqq…à…àq…ôq0™hq…à…àqq…à…àq…ôqŽ4-™lq…ô…à…àqq…à…àqq™`q…à…àq…ôq™`q…à…àq…ôq{ ‡ ‡P‡,u™lq…ô…à…àqq…à…àqqq…ô…à…àqq…à…àqq™`q…à…àq…ôq€Ž4…à…à…ôq‡ …à…ôqu,™hq…à…àqq…à…àq…ôq.†Ü…à…à…ôq‡ „…à…ôq‡ & …à…ôq‡ …à…à…ôq‡ …à…à…ôq‡    €ÿ…à…à…ôq‡ …à…ôq‡ ™lq…ô…à…àqq…à…àqqq…ô…à…àqq…à…àqq…à…ôqu™hq…à…àqq…à…àq…ôq…à…àq…ôq  ™`q…à…àq…ôq‡ …à…ôq†h…à…ôq‡ Ž4…àŽ4™`€…àŒÄ‡Ä"…àŽ4…ô™`€…àŒÄ‡Ä€……àŽ4…àŒÄ‡Ä…à…àŒÄ‡Äq$…à…ô™`€…àŒÄ‡Ä€… ‡Ä‡Ä. †ä†ô†à‡Ä†ä…ô‡Ä†ì‡ …ô‡Ä†øq ‡Ä‡Ä‡Ä ‡Ä†`†à†`†à†ä†ì†ð†à†ô‡Ä†`†à†`†à†`†à‡Ä …àqq †`†àŽc†ä†ì‡ …ô‡Ä…ô‡Ä†ä…ô‡Ä†ð†à…ì‡Ä…ì‡Ä‡Ä†`†à†`†à†ô‡Äކà†à‡Ä ‡Ä†`†à…à†à…ì‡Ä‡Ä …è€á€Õ™`€… €ÕŽŽ…ô™`€…àŒÄ‡Ä ™`€…àŒÄ‡Ä ™`€…€Õ™`€……ô™`€…àŒÄ‡ÄŽ €ÕŽŽ ™`…ô™`€…àŒÄ‡Ä ™`ŽŽ7™`Ž€…Ž…ô™`…ô™`€…àŒÄ‡Ä„ …쎎 ™`Ž$…ô™`…ô™`€…àŒÄ‡Ä‚]…à%…à™`…ô™`€…àŒÄ‡Ä …àq ‚a…ìŽ#…ô™`…ô™`€…àŒÄ‡Ä ! ™`…ô™`€…àŒÄ‡Ä€«…쎀…Ž™`Ž™`ŽŽ…ô™`…ô™`€…àŒÄ‡Ä‚]…à…à™`…ô™`€…àŒÄ‡Ä‘™`ŽŽ…쎅àŒÄ‡Ä}}…àq…ì‡Ä€q}}q±±ŒÄ …àŒÄ‡ÄŒÄ‡È  …ì…ì   …ì™`†à‡Ä‡Ä u †h „y‡Ä „q‡Ä „u‡Ä „‡Ä qyq†à‡Ä „™`†à‡Ä ‡Ä™`†à‡Ä qq q } q…à…àqq qy* …ô…à…àqq…à…àqqqqq…ôqq…ôqq …ôq q…ôq Œ¨ …à q…àq …à…àqqŽ4 …àŽ4…à…àqq …ô…à…àqqŽ4% …à…ôqq…ô…à…àqq …àqq …ô…à…àqq …ôq…àq (†<†à (…àq †<†à †<†à …àq †<†à…àq …àŒÄ‡ÄŽ4 …àŽ4…àŒÄ‡Ä …ô…àŒÄ‡ÄŽ4 ŒÄ ‡Ä…àŒÄ‡Ä6 …à…ôq‡ …à…àq…ôq…ô…àŒÄ‡Ä …àŒÄ‡Ä‡Ä …ôq†ä ‡ÄŒÄ …àŒÄ†à …àŒÄ†à…àŒÄ‡Ä†à†ä …à…àqq …àŒÄ‡Ä …àŒÄ‡Ä…ô…àŒÄ‡Ä‡Ä†ä…ô‡Ä …à…àqq …à…àqq †àŒÄ q u…ôq †h…ôq …à…ôq†h …à…ôq‡  …à…ôq‡ ‡ …ôq* q…ô…à…àqq…à…àqq0™lq…ô…à…àqq…à…àqq} …à…ôqu€) q…à…àqq…à…àq…ôqu           q…à…àq…ôq ‡ ‡P} …à…ôq†h™`€…àŒÄ‡Ä ™`€…àŒÄ‡ÄŽ4…ô™`€…àŒÄ‡Ä …ô™`€…àŒÄ‡ÄŽ4 €……àŽ4…àŒÄ‡Ä …àŒÄ‡Ä €… …ô™`€…àŒÄ‡Ä …ô™`€…àŒÄ‡Ä ‡Ä ‡Ä‡Ä †`†à †`†à†`†à‡Ä q…à†à…ì‡Ä †`†à…à†à…ì‡Ä …à†à…ì‡Ä†à‡Ä …ì‡Ä†à €…€… ™`€… €…€… ™`€…™`€…(‚a‚a Ž‚a ‚a ‚aŽ ŽŽŽŽ€ŽŽ ŽŽ (…àŒÄ‡ÄŽ…àŒÄ‡Ä …àŒÄ‡Ä Ž ŽŽ€€…àŒÄ‡ÄŽ„ „™`€…àŒÄ‡Ä €á™`…ô™`€…àŒÄ‡Ä! ™`…ô™`€…àŒÄ‡Ä ‚e €…àŒÄ‡Ä…ô™`€…àŒÄ‡Ä# „™`…ô™`€…àŒÄ‡ÄŽ4  Ž4  Ž4 …àŽ4…ô…àŽ4…ôŽ4™`…ôŽ4…àŽ4…ô …àŽ4 ™`…ô1™`…ôŽ4…àŽ4…ô…àŽ4…ô€……àŽ4(ŒH((€…ŒH ŒH ŒH€… Ž4 …àŽ4 …ôŽ4©…ì™`…à…ì™`™`…ô…ì™`…ô…ì™` ™` …ì™`…ì™`4…ì™`…ô…à…ì™`…ô…à…ì™`…à…ì™`-…ì™`…ô…à…ì™`…ì™`…à…ì™`™`…ô…ì™`…ô…ì™` …ì™`…ì™`4…ì™`…ô…à…ì™`…ô…à…ì™`…à…ì™`-…ì™`…ô…à…ì™` ŽD …à™`…à™`…ô ŽH …à™` …à™`…ô©}q…à™` ŽD…à™` …à™` ŽH…à™` …àŽ4™`€…àŒÄ‡Ä!…àŽ4…ô™`€…àŒÄ‡Ä€Õ™`€… €ÕŽŽ™`q€Õ™`q†à †à†à†à †àq„†ì†ð†ô†ø €™†ä„0 †ì†ì‡ ‡ …ô‡Ä…ô‡Ä†ð†ð†ô†ô†ø†ø†ä†ä€™„E‡‡‡‡ ‡$‡(‡,‡0‡4‡8‡<‡@‡D‡H‡L‡P‡T‡X‡\‡`‡d‡h €™‡ „€†,‡‡‡‡‡‡‡ ‡ ‡$‡$‡(‡(‡,‡,‡0‡0‡4‡4‡8‡8‡<‡<‡@‡@‡D‡D‡H‡H‡L‡L‡P‡P‡T‡T‡X‡X‡\‡\‡`‡`‡d‡d‡h‡h‡ ‡ €™„ …ô†°†°‡Ä …à‡Ä…ì™`…ô†à‡Ä …ô‡Ä †ì†ì†ð†ð†ô†ô†ø†ø †ä†ä„ ‡ ‡ „‡È ) †°‡Ä †°†°†° †°†à †° ‡Ä…ô‡Ä ‡Ä™`‡Ä…ô‡ÄŽ€ …à „…à†Ø„ ksprintf kprintf Žˆ …à„…à„ „(…à„…à„†Ø„ A!…à„A†ØA„ kbprintf !…à„†Ø„ kfprintf Ž˜A†ØA„„ bprintfA „ …àŽ| …àAŽ€$™h„…à„…à„…à„) ™h„…à„…à„…à„„ …à„ Žˆ%™h…à„„…à„…à„* ™h…à„„…à„…à„„   %ެ…ì…ì…ì…ì…à„ެ…ì…à…à …ì…à„…ì…à„…ì    …à„…ìެ    …à„…ìެ q…à ™`qqq€å™`qqq ™`qq ™`qq™`qqqqq…àq…à ™`qqqq™`qqqq%…ôq…à…ô…àq…à¡¡ެ¡™` ™`™`™d…ì™` …ì™` ™`™d…ì™`™`™d…ì™`™`™d…ì™`™`™d…ì™` …ì™` …ì…ì)™d…ì…ì…ì…ìE ™`™d…ì™`…ì™`…ì…ì™`…ì!™d…ì…ì…ì…ìެ…à„ެ…ì …à…ôq  ¡'…à…ô…àq…à…ôq …ì…ì …ì…ì2…à…ô…àq…à…ì…ì…ôqެ™d…ì…ì…ì…ìF ެ™d…ì…ì…ì…ì…ì…ì…ì…ì…ì…ì&…ôq…à…ô…àq…à   ¡     ™d€• €• ™d  ™`…ô,™d¡€•…ì …ì…ì2 ™`…ô…à„ެ…ì…ì…ô„ ¡,™`…ô…à„ެ…ì…ô„†Ô-©…ì…ì†Ô†Ô…ì†Ô†Ô1™`…ô…à„ެ…ì…ì…ô„™`…ì…ô…ô…ô™`…ì…ô …à …à …à„€ªެ™d…ì…ì…ì…ì…ì…ì…ì…ì™`…ì…ô…ì…ì…ô…ô¡…ì™`…ì…ô…ô…ì…ô…ô€•…ì…ì,™`…ô…à„…à„…ô  ™`…ô …à„™`…ô,…à„…à„…à„…ô%™h…à„…à„…à„ …à„,…à„™h…à„…à„…à„$™h…à„…à„…à„ f ™h…à„…à„…à„…à„…à„…à„…à„…à„…à„8…à„™h…à„…à„…à„…ô…à…ô…àq…à 1 …à„™h…à„…à„…à„…à…ô…àq…à;…à„™h…à„…à„…à„…ôq-…à„™h…à„…à„…à„ †Ø / …à„™h…à„…à„…à„…à2…à„™h…à„…à„…à„>…à„™h…à„…à„…à„†Ø(…ì …ì …ì …ì…àq…à …àq…àq…àq & …ô…à…ô…àq…àq( …ô…à…ô…àq…àqq% …ô…à…ô…àq…àq# …à…ô…àq…à…ô q# …à…ô…àq…à…ô% …à…ô…àq…à…ô0 …ô…à…ô…àq…à…ì…ì-…à„™h…à„…à„…à„ %™h…à„…à„…à„,…à„™h…à„…à„…à„$™h…à„…à„…à„9™h…à„…à„…à„…à„…à„-…à„™h…à„…à„…à„   …ôq%†°} „Ð …à„ „Ð „Ð„Ð…à„   ™` ™` ™`…ì™`…ì™`…ì™` ™h†°…ì™`…ì™`™h†°†°™h†° ™`|#™h†°†À†°…ô™`™h†°†°†¸†¼††°™h†°†°† †œ™`†°†™h†°…à†°…à …à†°…à†° ™`…ô™`…ô…ô ™`…ô…ô ™`…ô2 †¼†°†°™`…ô™`…ô†À† †°†°#™`…ô†Ô…à…ô†°$†Ô…à™`…ô…ô…ô†Ô…à†° …à…ô™` % †¼† †°†°†À…ô™`†°2…à…à…ô™`…à…à†° …à…à…ô™`…à+…à…à…ô™`…à…à0…à…à…ô™`…à…à†°…ô™`…ô™` ™`"…ô™`…ô™`™`…ô™`ð …ô™`  …ì™` …ô™`ð…ô™`…ì™`©†°…à™`†°†° ™`†°†°…à™`†°†°†°†°…ô™`†°…à™`…솰†° ™`…솰†°…à™`…솰†°†°†°…ô™`…솰 †°…ô†°…ô …ô …è,…à…è †°$©†Ô€Õ…è  …솰„¨ „Ð „Ø „Ü€Õ†…솰 „¨ ‚e„Ø„ÜS†°…솰qq„¨…ì…ì„Є؅솰†°„Ü& †°$©†Ô€Õ…è$ ð…à…à …à†° …à†°@ …à…à …à†° …à  †°L …à†° P …à†° ™`†°I…à…à …à†°…ô™`…ô™`…ô†°…à†°+†°$©†Ô€Õ…è…ô™`†°$©†Ô€Õ…膰…à…ì™`M„ …à…à …à†°&…à†°…à…à …à†° ¤! …è…à…à …à†°9…à™`™`†°…è…à…à …à†°¨ ©…à…ì™`©…à…à†°†°M…à…ì™` …à†°…à…ì™`A9$™`…à…à†°†° …à†°  †< „ u© M€‰ u™`…솰 †° ™`™`†°™` €«$…à…à …à†°…à…à†°†°…ô™`†°qMM…à…ì™`…ô†°…à†°…à…ì™`qqA†°II99$u…ô™`€Õ%€Õ…è$©†Ô€Õ…膰$©†Ô )   €• †Ô †°†Ô†° †Ô†° †Ô†°†Ô  †Ô©   ™`†° †°†° †°™`†°™`…솰…솰†° †°™`…솰 $$$ $$,  „ $©†Ô€Õ…è †°  …à†°8 …à†° …à†° †°…à …à†°< …à …à†°…à …à†° …à†° …à†° @…à…à …à†°…à …à†° …à …à†°DHL …à†° P …à†° †°™` †°†° M™` …ì™` …ì™` M + †Ô…è…à…à …à†°M †°  …ì™` …ì™` †°™` …à™`†°  …à …à™`†°x|€„ u ™`†° †°q A ™`„…ì™`„ …ì™`„„  $©†Ô€Õ…è…솰 ™`…솰u˜œ  ¤  †° ™`†° ™`†°™`¨ …ì™`  †Ô qq†hqÀÀÀqÀÀ…ô™`…ô™`qÀ…ô™`q Àqq À…ôq (…ôq …ôq^YMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+TupleType@DebugTypeProxy qqa\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+FunctionType@DebugTypeProxy(…ô™`q…ô™`q …ô™`q …ô™`q_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+RecordType@DebugTypeProxy(…ô™`…ô™`q…ô™`…ô™`q …ô™`…ô™`q …ô™`…ô™`q\WMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+SumType@DebugTypeProxy_ZMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+TypeInfo+ObjectType@DebugTypeProxyÈ ÈÌ ÌÐ ÐÔ ÔØ Øððððq…ô™`ð…ô™`ð…ô™`ðq ð…ô(…ô …ô …ô`[Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+TupleValue@DebugTypeProxyjeMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+FunctionClosureValue@DebugTypeProxy(…ô™` …ô™` …ô™`a\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+RecordValue@DebugTypeProxy …ô™`faMicrosoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ConstructorValue@DebugTypeProxy q…ô™`d_Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ExceptionValue@DebugTypeProxya\Microsoft.FSharp.Text.StructuredPrintfImpl.ReflectUtils+ValueInfo+ObjectValue@DebugTypeProxyø øü ü      ™` u™` ™`u™`u™`uð©q„ ™`†hq™`†h†hu™` ð© ð© ™`u…à†°…à†°†°†À†°†°†°†°†°††°†°†¸ †°†°†°…à†°…à†°†°†°…à†°…à†°†°†°†°…ô†°…ô†°†°†°…à†°†°†°…ô†° …à†°†° …ô†°†°…ô†°…à†°†°†°…à†°†°…ô†°†°†°…ô†°†°†° †°†°…ô†°†°…ô†° …à†° …솰…à†°…ì †°†°…à†°…ô…à…à…ì™`"…ì™`…ì™`5…ô†°…à†°…à…ì™`…à …à†°…à…ì™` …à)…à†°…à…ì™`…à5…ô†°…à†°…à…ì™`…àl-…ô†°…à†°…à…ì™` †°†° †° „…ô™`±} €Õ  €Õ±} €Õ  €Õ€Õ  „ „ †Œ€Õ  ±q }q †ˆ  †ˆˆ  †ˆ  †ˆ†ˆ †ˆ†ˆ †ˆ†ˆ †ˆ†ˆ†ˆ†ˆ†ˆ †ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ †ˆ†ˆ  †ˆ†ˆ †ˆ†ˆ  †ˆ †ˆ †ˆ †ˆ  †ˆ  †ˆ†ˆ†ˆ     ˆˆˆˆ   †ˆˆˆ†ˆ  ˆ ˆ†ˆ   ˆ†ˆ ˆ ™`ˆ †ˆ†ˆˆ †ˆ †ˆˆ ˆ   …à†ˆ†ˆ †ˆ †ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ…à†ˆ…à†ˆ†ˆ†ˆ†ˆ    †ˆ †ˆ†ˆ    †ˆ†ˆ†ˆ„ †ˆ†ˆ †ˆ†ˆ™`†ˆ†ˆ†ˆ†ˆ„™`†ˆ†ˆ†ˆ†ˆ ™`†ˆ†ˆ †ˆ†ˆ†ˆ™`†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ†ˆ  †ˆ  †ˆ  †ˆ †ˆ †ˆ ™`†ˆ…ô™`†ˆ#…ô™`†ˆ…ô™`†ˆ†ˆ…ô™`†ˆ…ô™`†ˆ ™`†ˆ= …ô™`†ˆ†ˆ…ô™`†ˆ™`†ˆ†ˆ†ˆ†ˆ"…ô…ô†ˆ…ô™`†ˆ…ô™`†ˆ…ô™`†ˆ…ô†ˆ†ˆ†ˆ†ˆ †ˆ†ˆ†ˆ †ˆ†ˆ†ˆ  †ˆ†ˆ†ˆ ™l  ™l         $                     ™l ˆ ™l †x ¹¹¹ ¨ † †€†| ¹q} †| I†°††´ ††† †† †† †u uq© …ì…à…ì…àq© „”…ì„”€å …ì„”„” …ì„”¥„”…ì„”¥…ì„”„”…ì„ …ì„”…ì„”„” …ì„ q…ô™` …ì™`…ì™`q}„”„€…à€…à€ ™` q© €©€ }™`+ q€…à€…à€€™`€™`q© ™` ™`q qq©†< ™`†<™`…àq© …ì„ !…ì„ …ì„ „ „ „ ©©q©©q q©q qq©…àu…àuq…àu…àuu uq©u…àq© …ì…à…à*™`…ì…à…ì…à…à…àq© ¥q© q© }€å }q©}…àq©q© qqqqqqqq uuuµ u±qµq ±q©…àq©u …àqu…àq…à …àq…àq…à™`±…ìqq± uqu™`u…ì™`q™`q …ì™`q uqq…ì„ …ì„ „ …àu…àuu uq©…àq© q©q ©u ©µ% €€ € …ì™`} …ì™` †<†<¥ uu¥ ©u  q© ©} u ©± ©µ% u u…à  …à…à…àqq™\™d ™h ™l ™p ™t™x™\ †h™` †` isEmpty †` contains†`†` †` singleton remove†`†`†` union†`†` unionMany intersect intersectMany…à„†` iter †` empty…à†` forall exists†`…à†`%™`†`†`…à†`…à…à†` fold…à…à†` foldBack†`…à†` †` count†`…ô ofList †` ofArray…ô†` toList †` toArray†` toSeq ofSeq difference†`†` isSubset isSupersetisProperSubsetisProperSuperset †` minElement maxElement†H†T†P †H †H†H†H†H†H†P2 †P†H†H†P†H†H†T€‘ (†P†H†H†T†H†H€‘†HN†H†T†P†P†H†H†H†H†H†H!†H€‘†H†H™d†H†H™d†H†HK †P†H†H™d†H†H†H†H†T†H'™d†H†H€‘†H™`†H™`†H<†T†P†H†H™`†H†H†H™`†H†H6†T†P†H†H™`†H†H€‘†H'†P†H†H†T†H…à„†H…à…à†H†P†H†T†T†P)†P†H†H†T†H…à…à†H…à…à†H‘D€‘†H†H‘H‘L.†P†H†H†H†T†H'†H€‘…à†H†H†H€‘†H†H†P†H†H †Hp†P†P†H†H†H†H™d†H†H†H†H†T†H†H†H&†H€‘†H†H†H™`†H†H5™`†H†H€‘…à†H†H™`†H†H` ™`†H†H†P†H†H™`†H†H™`†H†H†T†H:™`†H†H€‘…à†H†H†H™d†H†H„Йd†H†H„'„Йd†H†H„†H„Йd†H†H„„Ü™d†H†H„…à…ì…ì„Ø™d†H†H„‘P …à…ì…ì0„Йd†H†H„†H†H-…쀑†H…à…ì…ì‘T…쀑†H‘X‘\†P†H†H †P†H†T†H…ì†H …ì †H …ô†H …ô†H8…ô†H…ô†H†P†H†H†H…ô†H…ô†H‘` …ô†H‘`†H …ô†H…ô†H…ô†H ‘` …ô†H&…ô†H…ô†H…ô†H ‘` …è‘` …è‘`‘d †H…è‘`…è‘`E†H€„…ô†H…ô†H…ô†H…ô†H†T†P†H†H†T†P†H†H†H†H†H#€‘…ô†H…ô†H€‘†H†H…ô†H…ô…ô†H‘h …è…è†H †HE†H€‘†HEEE†HI†H€‘‘l €‘ †H†H€‘‘D‘H‘L…à…ì…ì‘P …ì…ì‘X(…ô†H‘` …ô†H …è‘`‘d …è‘`‘h‘l †H†H…à…à ‘t €‘ ‘x †H†H †`†`†` †< †<†<†<†< find…ì†< tryFind†<†<†< containsKey…à…à„†<(…ì…à…à…ì†< tryPick…ì…ì …ì#…à…à…ì†< pick…à…à†<$†<…à…à†<2™`†<†<…à…à†< †<%†<…à…à†< –ø '…à…à…à†< –ø'…à…à…à†< ‘ˆ  ™`™`†< ‘Œ …à…à ™`…à…à†< findKey ‘"…ì…à…à†< tryFindKey†<…ô™`†<™`†<™`…ô™`†<™`†< †< ™`…à…à ‘Œ …ì™` ‘ †$ †, †0 †$ †$ †$"†$†$†$ †0B †0†$†$†0†$†$&†0†$†$†$†$ †,5 †,†0†$†$†$ †$€‘†$4†,†0†$†$†$€‘†$…ì…쀑†$™`†$†$F™`†$†$€‘…à…à†$†$™`†$†$x ™`†$†$†,†0†$†$™`†$†$™`†$†$†$K™`†$†$€‘…à…à†$†$†$/†$€‘…à…à†$<†,†0†$†$†$†$4†$€‘…à…à†$†$™d†$™d†$P †,†0†$†$™d†$†$†$™d†$†$F †,†0†$†$™d†$†$†$€‘†$2†,†0†$†$†$€‘†$3†,†0†$†$†$…à…à„†$ …ìA †,†0†$†$…ì…ì†$(…ì…à…à…ì†$…à…à†$ †, †0 †$ †$ †, †0 †$= †,†0†$†$†$†$†$…à†$ †$ †$= †,†0†$†$†$†$%†$…à…à†$5†,†0†$†$†$–ø†$ †, †0 †$ †, †0 –ø5†,†0†$†$†$–ø†$ 9 †,†0†$†$†$2€‘…à…à…à†$ €‘3†,†0†$†$†$(…ô™`†$…ô™`…ô™`†$ ™`™`†$ ‘˜ ™`†$!†$€‘…ô™`™`)†$€‘†$E™`†$™`†$€‘™` ™` ™`J™`™`…ô™`…ô™`E™`†$I †$€‘™` ‘œ …è†$…ô†$…ô†$F…ô†$…ô†$†0†$†$†$…ô†$…ô†$ ‘  …ô†$‘ †$…ô†$ +…ô†$…ô†$†,‘  …ô†$,…ô†$…ô†$…ô†$ ‘ …è‘ …è‘  ‘¤ †$…è‘ …è‘ E†$ ‘˜ †$†$™` ‘œ „(…ô†$ ‘  …ô†$…è‘  ‘¤…è‘  ™`  ‘¬  „  †< ‘¸ ‘´    †D length1 length2 length3 length4  zeroCreate    create +…à…à…à…à init     #…à…à…à …à„   …à „)…à…à…à…à„ iteri 0…à…à…à…à mapi length…à…à   blit      concat …à …à collect  append  copy …ô …ô…à„…à –ì„ –ì„–ì…à…à–ì„…à…à„ iter2 –ì –ì–ì…à…à map2 –ø –ø–ø"…à…à…à mapi2 –ì„ –ì„–ì„…à…à„–ø„ –ø„–ø„!…à…à…à„ iteri2 –ì –ì–ì…à…à…à …à…à…à –ì–ì –ì–ì–ì…à…à exists2 forall2…ì…à…ì …ì…à…ì…à…ì…à…ì…à…ì…ì…à…ì…ì…à…ìmmm…ì…ì…à…ìmm m…à ™`mm™`…à…à …à…à…ì…à…ì…à™`™`zip ™d ™d™d™d zip3 ™`™`™`™` unzip ™d ™d™d ™d™d™d unzip3rev –ì –ì–ì…à…à –ì –ì–ì…à…à–ø–ø$…à…à…à foldBack2–ø–ø$…à…à…à fold2–ì…à…à–ì…à…à –ì –ì–ì…à…à…à…à…à…à scanBack –ì –ì–ì…à…à reduce reduceBack …à€‘…à…àsortInPlaceWith…à sortInPlaceBy sortInPlace…à…à sortWith…à sortBy sort …à…à findIndex…ì…à…ì…à tryFindIndex…à permute  sum  …à sumBymin …à minBymax maxBy EI average EI averageBy sub    fill …ô…ô…ô…ô…ô…ô…à…ô …ô…à…à…ô…à„…ô …ô head tail …ô…ô…ô…ô…ô…ô …ônth"…ô…ô…ì…ì&…ô…à…ì…ô…ô…ô…à…ì…ô…à…à„…ô…ô…à…ô…ô …ô replicate#…ô…ô…ô…ô–ì„…ô…ô–ì„–ì„#…à…à„…ô…ô –ø„…ô…ô–ø„–ø„)…à…à…à„…ô…ô…ô…ô –ø…ô5 …ô…ô…ô…ô…ô…ô3…ô–ø…ô…ô…ô…ô 6…ô…à…à…à…ô…ô…ô map3%…ô…ô…ô…ô,…ô–ø…ô…ô…ô.…ô…à…à…à…ô…ô(…ô…à…à…ô…ô…ô…ô–ì…ô–ì–ì…à…à…ô …ô…à…à…ô…ô…ô%…ô–ì…ô…ô#…ô…à…à…ô"–ø…ô…ô–ø–ø,…à…à…à…ô…ô–ì5 –ì…ô…ô…ô…ô…à…à…ô–ì …ô…ô–ì…ô–ì#…ô…à…à…ô"–ø…ô…ôE –ø…ô…ô…ô…ô…ô…ôA …à…à…à…ô…ô…ô…ô„,…à…à…à…ô…ô–ì…ô…ô!…à…à…ô…ô…à…ô…à…ô…ì…à…ô…ô…ô…ì…ì…à…ì…ô…à…ì…ô…ô…à…ô%™`…ô…ô…à…ô$™`…ô…ô…ô™`-™d…ô…ô…ô…ô™d…ô™`…ô…ô(…ô™d…ô…ô…ô …ô…à…à…ô …ô…ô…à…ô…ô…ô…à…ô …à…à…ô…ì…à…ô…ì…à…ôEIEI…à…ô EI…à…ô…ô…à…ô…ô…ô…à…ô  …à„…à…à…à„A …à…à…à …à AA …à …à…à …à …à…à …àA…à…à…à …à…àA „…à …àA…à‘ø …à„…à„ ‘ü …à…ì™` …à…ì™` delay unfold’° ’° ’ …à…à initInfinite’ …à…à E„I…à„ EI E„I…à…à„ EI…àEEE„E„I!…à…à„ ’ …àEE …àEE ’ + …àE…àEE1…àE…àEE’…à ’…à ’ …à…à…à…à ’ …à…à%…à…à ’  …à…ì…à…ì ’$ ™`™` ’( ™`™d$™d’, 9 9 castE…ì…ìI…ì…à…ì …ì…à…ìE…ì…ìI…ì…à…à’0 EE takeMM+ …ô…ôMMEI , …ô…ôMMEI EI…à…àEI…à…à ’4 …à„…à„’<  “…à"…à…àEE„…à…à-EE…à…àEEI…à…à compareWith%…ô…ôE…ôI’@$…ô…ôEmI’D ’H …èE truncate’L" E…è™`™` ’P+ …à…à…èE!…à…à…àEE…àEI…à…ì…àEE…ì…àEI…ì…à…è’T# …è…èE windowed …ìE…è…ì…ìE …ìE…ì…ìE…ìE…ìEE&m…è…ì…ìE™` …ì™`5…ì™`m…è…ì…ìE„…ì…ìE(…ì…ìE…ì…ìEE"m…è…ì…ìE„…è…ì…ìE’X$ m…è…ì…ìE’\ m…è…ì…ìE† .m…è…ì…ìE…à„„ cache’` readonly ’p …à ™`#™`…à groupBy’ ’t( €Õ’ ’ E ’  distinct’ ’  ’x1 …à€Õ’ ’ E ’ …à distinctBy ’|’€ ’Œ …à ™`™`…à countByEI EI…àEIEI EI…à’! …àE…è takeWhile’” skip’˜' …àE…è…è skipWhileEEI…à…à…à„‘ø E„…à…ì™` ‘ü …à’’…àEE ’…àEE…àE…àEE ’ …àEE’ EE ’ EE…à…à ’…à…à ’ EEE ’  ™` ™` ™d ™d™`’,’0€å ’4 …à„’8 “„’<“…à„““““…à„““…à„“’@“p’D“t’H ™`’L ™` ™` E™`E ’PE E’T’T’T  E…è…ì…ìE’X…ì™`…ì™` …ì™`’\„’`€Õ’ m ’d …à€Õ’ m’  ™`m’ €Õ’ m ™`m!’ ™`mmm’ m „’ m ™` ’  ™`’ m ’p ’h’ m ’ m ’l ’ m™`€Õ’ m ™`„€Õ’ ’t €Õ’  ’  ’ €Õ’  ’x €Õ’  ’  ’  ’|’€€Õ’  ’„ …à€Õ’  €Õ’  ’  ’ ™` ™`’  ’Œ€Õ’  €Õ’  ’„’ˆ’  ’ ™`€Õ’  ™`„’’”’˜’¬ …à„E…à„E ’´% …à„…à…ì…à„+…à„…à…ì…à„ ’¸ …à…à’¼$…à„…à…à’° ’È’°’È„ ’È ’È’Ì ’Ð …à’Ä …à„„…à„…à ’Ô  …ì…è…ì …ì …ì"…è…è…ì„…è…ì’Ü( …à„…è…è…ì …è…è…ì…à„’à’Ä…à„„ ’ì. …à„…à„…à…à…à„7†…à„…à„…à…à…à„ )’ )’¤’¨)   ’  ’ ’ …à„E’¬ ’°’°’°“< …à„ ’´ ’¸II’Ä’ÀEE’À’À ’ÈE…à„„…à„„E…à„„&…ô…à„„E…à„„„I ’È ’È’Ì …à ’Ð …à ’Ô…è…ì’Ø…è…ì …ì ’Ü E„’à’ä „ ’è …à„…à…à…à„ ’ì’ä…à…à…à„“ …ì…à„„"…ì…à„„…ì…à„„ “’ô“ …à„’ô…à„’ô“’ü“’ô’ô“’ô“’ô’ô““(“(“$ ““(“(E““$“$“$“E ’ô’ô’ü““ ’ô ’ô ’ôGBMicrosoft.FSharp.Collections.Generator+Step`1+_Stop@DebugTypeProxyGBMicrosoft.FSharp.Collections.Generator+Step`1+Yield@DebugTypeProxy (“ “FAMicrosoft.FSharp.Collections.Generator+Step`1+Goto@DebugTypeProxy’ü“ ’ü““  “““ “(…à„’ô(…ì…à„„(…à„“ “…à„“ …à„“““ …à„““““““  “’ô““’ô ’ô„“$ …ì€å'’ô“““’ô(E“(“, “(“0E“(“8 EA E “L …àEE…àE “P …à…àE…èE…à…àE “T …à…àEEE%E…à…àEE …è…ì …ì…è…è…ì„ “X) …à…ìE…è…è…ì…è…è…ìE…à…ìE…àE…è„“\ …àE…è…èE…àE “` …à…ì™`…è …è E…à…ì™` …膓d …à…è"…à…è…膄 …膆“<“h …à…è…è†"…ì…è…膆E…ì…à…ì…è…ì„…ì…è…ì)…à„…è…ì…è…ì„ …è…ì “l9 …à…ì…à„…è…è…ì…è…ì …è…è…ì…è…ì+E…à„…à…ì…à„“x …à„„EE…à„„E“8II“@“@“@  “L…à…à “P…à…à…àE “TE “X…à…ì“\…àE…è “`…ì™`…à…ì™`…ì™`"…ì™`…ì™`“d …膓h …膀円 …è…ì “l …è…ì"…ì…ì…ì…ì“x €‘ –ì –ì“ˆ –ì –ì€‘…à…à –ì“ˆ –ì“ )“” )“˜ –ì –ì“œ …à–ì –ì )…à…à…à“” –쓜 –ì …ì …ì isSome isNone …ì…à…à…ì…à…à…ì…à…ì…à„…ì…ì…à…ì…ì…à…ì…ì bind …ì…ô…ì  base1 base2    Mq MqzeroCreateBased  createBased…à…à initBased…à…à …à„"…à…à…à„ “° …à…à “´ …à…à…à(…à…à…à“¸ “¼  rebase(  “°  …à…à…à “´ “¸“¼ €‘€‘ €‘€‘ €‘€‘  …ô…ô…ô…ô…à…ô…ô…ô…ô –ì…ô–ì…ô#…ô…ô–ì…ô –ì*…ô…ô…ô…ô…ô$…ô–ì…ô…ô5 …ô…ô…ô…ô–ì…ô…ô…ô…ô…ô…ô…ô…à…ô …à…ô…ô…ô…ô…ô…ô…à…ô–ì„…ô–ì„–ì„ …ô…ô …ô…ô!…ô…ô…ô…ô…ô…ô…ô…ô…ô1…ô…ô…ô…ô…ô…ô…ô…ô…ô…ô…ô…ôE…ôI …ô@…ô…ô…ô…ô…ô…ô…ô…ô…ô…ô …ô…ô…à!…ô…ô…à…ô …ô…ô…à…ô0…ô™`…ô™`…ô…ô …ô…ô…ô™`™`…ô…ô…ô™d…ô™d=…ô™d…ô™d…ô…ô…ô)…ô…ô…ô…ô™d™d…ô…ô…ô1…ô…ô…ô…ô…ô™` …ô™`…ô…ôC …ô…ô…ô…ô…ô…ô…ô™d)…ô™d…ô…ô…ô…ô  …ô"…ô…ô…ô…ô.…ô…à…à…ô…ô…ô…ô…à…à$…ô…à…à„…ô…à…à …è…ô3 …ô…ô…ô…ô…ô…ô&…ô…à…à…è…ô …è…ô…è…ô†…à„ Create †CreateFromValue † get_IsDelayed get_IsForced ForceSynchronizedForceUnsynchronizedForce InfinityNaN InfinitySingle NaNSingleseq unboxbox raise …ì |Failure|_|not compare  failwith invalidArg nullArg invalidOp ZTThis function has been renamed to 'reraise'. Please adjust your code to reflect this rethrow reraise™`fst™`snd ignore …èref …è …è…à…à…à"…à…à…à…à…à…à"…à…à…à “Ü …à…à…à…à…à “à …à…à…à…à…à€í€×This construct is for ML compatibility. Consider using the '+' operator instead. This may require a type annotation to indicate it acts on strings. This message can be disabled using '--nowarn 62' or '#nowarn "62"'.>TIsHidden…ì defaultArg  …ô…ô…ô…ô …è incr decr exit byte sbyte uint16 int16  uint32 int32int enum |KeyValue|    uint64  int64 float32 float€• decimal unativeint nativeint string char…à„ lock usingq typeof typedefof sizeof hashid€Ù€Ù stdin stdout stderr“ä  “èabs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh “ì“ð  pown …à …à “Ü …à …à …à “à …à     ”E…à…à„…à…à…à…à aLThis function is for use by compiled F# code and should not be used directly´TIsHidden” E E …à …à „…à …à …à …à   ” E E …à …à „…à …à …à …à   ” E …à …à „…à …à …à …à   ”EE…à…à„…à…à…à…à ”EE…à…à„…à…à…à…à ”EE…à…à„…à…à…à…à ”EE…à…à„…à…à…à…à ”EE…à…à„…à…à…à…à ”EE…à…à„…à…à…à…à ” E   E „  ” E E „  ””  …à…à"E…à…à„”¤ …à…à…à…à” ”¨ …à…à$E…à…à„ ”¬ …à…à!…à…à” E„         €•€•€•€•€• €•€•€• €•€•€• €•€•…à…à…à…à…à…à…à…à…ì…ì…ì …ì…ì…ì+…ì…ì…ì…ì,…ì…ì…ì…ì9…ì…ì…ì…ì…ì…ì:…ì…ì…ì…ì…ì…ìG …ì…ì…ì…ì…ì…ì…ì…ì, H …ì…ì…ì…ì…ì…ì…ì…ì0  …ì…ì…ì ”¸q} …à ”¼qq}…à…à”À …à•••, •@…à…à•\•p•„•˜•¬•À–– –,–@–T–h–|––¤ –¸“ø “ü”  ” ”   …à…à          …à …à  E           …à …à  E           …à …à      …à…à E     …à…à E     …à…à E     …à…à E     …à…à E     …à…à E             E              E …à…à” ”¤ ”¨ ”¬     ”¸ ”¼ …à”È …à”Дؔà”è”ð”ø• ”À q…à …à  €•€• €•€•• ••• •(••4•<•,…à…à •L …à…à •X  •@q…à…à…à…à   •H …à …à  •T•d•l•\•x•€•p•Œ•”•„• •¨•˜•´•¼•¬ …à•È …à•Еؕà•è•ð•ø– •À q…à …à      €• €•     – ––– –(– …à –4 –< –, q…à …à–H–P–@–\–d–T–p–x–h–„–Œ–|–˜– ––¬–´–¤…à…à –Ä …à…à –Ð –¸q…à…à…à…à –À …à …à …à –Ì defaultof equals …ô…ô…ô…ô –ð –ì …à –ì –ô–ì–ì –ì –ð –ì –ü –ø …à…à–ø–ì…à–ì…à — –ì…à — …à…à…àA–ø–ø–ì…à–ì…à–ø –ü –ø …à…à…à…à—–ø…à–ì…à…à–ø…à—  –ø…à–ì…à…à— –ì…à…à—! …à…à…à…à{——–ø…à–ø…à–ì…à…à–ì…à…à/—…à…à…à…à— — …à…à…à …à…à…à…à…à ————  —" …à…à…à…à——…à–ø…à…à!–ì…à…à…à—…à—$ —…à–ø…à…à—( –ø…à…à –ì…à…à…à—,# –ì…à…à…à—0( …à…à…à…à…à€Ç ———…à—…à–ø…à…à–ø…à…à–ì…à…à…à–ì…à…à…à8—…à…à…à…à…à—— — …à  &…à…à…à…à…à €‰€™€‘€‘€‘€‘€‘€‘ €‘€‘€‘€‘ €‘ €‘€‘ €‘ €‘€• €™ €‰€‰€™ €™—8—<€‘€‘€‘€‘€‘€‘ €‘€‘€‘€‘ €‘ €‘€‘ €‘ €‘€•—€€‘q„—„—|™` ™` ™`™` ™`     ™`  q) ™`% q)  q) ™`™`™`  q) ™` ™`   q„—ˆ—Œ—…à…àoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHidden…à…à…à…à —´ —¸ —À}}…à…à}…à…àqq„ …à…à …à…à …à …à …à …à …à…à …à …à …à …à …à…à —¬ ˜ ˜ ˜  …à…à —ø ˜P ˜T ˜\ ˜H ˜œ ˜  ˜¨ ˜”—<                  €•€• €‘—| €‘—ˆ—Œ…à…à…à€•…à€• …à …à …à …à — —¨ …à…à—q}…à…à…à…à€• €•€•     —¤ …à …à…à…à …à…à …à…à …à…à …à …à …à…à —¬qqq…à…à —° —´ —° …à —¸ —¼ —À —¼ —ø —ü ˜ —ü ˜ ˜ ˜  ˜  ˜H ˜L ˜P ˜L ˜T ˜X ˜\ ˜X ˜” ˜˜ ˜œ ˜˜ ˜  ˜¤ ˜¨ ˜¤˜ä˜ô˜ø{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden MM˜äM„ ˜ä„™L MM™L™L™L˜ä  ˜äMM    ˜äMM ˜ä ˜äMM     MM   ˜äMM  ˜äMM ( ˜äMM    MM ˜äMM ˜ä ˜ä             @            MM€™M„™P MM™P™P €™€™MM  €™MM  €™MM MM €™MM  €™MM ' €™MM  MM €™MM €™ ˜ô˜ø€™ €™M MM  ™P™P€™€™™` €™™d ™h €™™h™l €™™l €™™`™`€™™d™d!€™™h™h %€™™l™l €‰™`™`€‰™d™d !€‰™h™h%€‰™l™l ˜ð™ €•     „œ™ q„œD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden˜ô˜ø€‘€‘€‘€‘€‘€‘ €‘€‘€‘€‘ €‘ €‘€‘ €‘ €‘€•…8…<…@…D…H…0…8…<…@…D…H€±…8…8€‰…<…<…@…@…D…D…H…H%…0…0„€®…8…8…<…<…@…@…D…D…H…H)€‰…0…0„…0€½…0…8…8…<…<…@…@…D…D…H…H…0€™„…h…l…p…t…x…|…`…h…l…p…t…x…| €é…h…h€‰…l…l…p…p…t…t…x…x…|…|)…`…`„€è…h…h…l…l…p…p…t…t…x…x…|…|,€‰…`…`„u …h…l…p…t…x…|€™…`„,…`…`€™„)…`…`„… …¤…¨…¬…°…´…¸…˜… …¤…¨…¬…°…´…¸ +… … €‰…¤…¤…¨…¨…¬…¬…°…°…´…´…¸…¸-…˜…˜„(… … …¤…¤…¨…¨…¬…¬…°…°…´…´…¸…¸0€‰…˜…˜„€–… …¤…¨…¬…°…´…¸€™…˜„0…˜…˜€™„-…˜…˜„…ô …‰™(‰ ™,…à™` ™0…à™`…à™d ™4…à™d…à™h™8 ™h…à™h…à™l™<™l…à™l €… A™\ ™\™`™d™h™l™p  ™p™t $™t™\™x™\ -™x™\   ™\‚ ‚™\ ™\‚… ‚… ™\ A ™`™` ™d ™d™d™h™h™h™l™l™l™p™p™p™p™t™t™t™t(™x ™x™x™x™T™T“Öó%¤¥úz£ßÄæÈËè`|çh„<OK¢¬K>?èÐÞ=ÀàºC¸pQ¨ÎhLG$xÜcð³)/Äð½ -þà‘ĪX ×0{†]+3¯9^S ŽFtlït (öNz '[¹…´ w²XØÅdö6‹Zùh ¡bS<;ÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet‚PADPADP1Xó‚&1–‡ðÔS‰ 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½éÂ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9á(X—ä~Ë€è-$ê½CêYënê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFound$NcontrolContinuationInvokedMultipleTimesh delegateExpected·&dyInvDivByIntCoerceÑ dyInvOpAddCoerce$dyInvOpAddOverloadc"dyInvOpMultCoerce®&dyInvOpMultOverload÷endCannotBeNaNB4enumerationAlreadyFinishede*enumerationNotStarted„4enumerationPastIntMaxValue±*failedReadEnoughBytesô,firstClassUsesOfSplice"&genericCompareFail1U indexOutOfBoundsi"inputListWasEmpty£,inputMustBeNonNegative¾$inputSequenceEmptyß"invalidTupleTypesþkeyNotFound=keyNotFoundAltw0listsHadDifferentLengths»H=HHHHHHHHCIWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\ˆ\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ„\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\‚\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\€\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\~\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ____________________________________________________________________________________________`_________________________________________________________________ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZZZZZZZZZZÿÿZZÿÿZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZÿÿZZZZZZZZZZÿÿZZÿÿZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaaaaaaaaaaÿÿÿÿÿÿÿÿÿÿÿÿÿÿeeeeeeeeeeeeeeeeeeeedeeeeeÿÿ_ÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿ_ÿÿ_cÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrrrrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhhhhhhhhhhÿÿÿÿÿÿÿÿÿÿÿÿÿÿhhhhhhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiiiiiiffffffffffffffffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿffffffffffffffffffffffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjjjjjjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkkkkkkkkkkÿÿÿÿÿÿÿÿÿÿÿÿÿÿkkkkkkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkkkkkkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿllllllllllÿÿÿÿÿÿÿÿÿÿÿÿÿÿllllllÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿllllllÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmmmmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnnnnnnnnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿnnnnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnnnnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooooooooooÿÿÿÿÿÿÿÿÿÿÿÿÿÿooooooÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooooooÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppppppppppÿÿÿÿÿÿÿÿÿÿÿÿÿÿppppppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppppppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿssssssÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿttttttÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuuuuuuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxxxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{{{{{{{{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\ƒ\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\…\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\†\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\‡\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\‰\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\Š\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿ\ÿÿ\\\\\\\\\\\\\\\\\\\\\\\\\\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ %%%%&%'%+&,'ÿÿ.//7122777 (         !!   !! !$&(*,.02468:=?AHJLNPRTV]dkmoqsuwz}„†‰‹@À@ € €@@@@ @€ € €!"., #$ @!+()*"., #$@€@ @€€  @€!"., #$ @ @ @ @@€!"., #$@ €!+()*"., #$@@@@@@@ @!()*"., #$ @!()*"., #$ €!+()*".,- #$@@@€!"., #$€!"., #$@€ 14€ 04@€4€ 34@@ 5€6 @!@4 *,./1357@ACDEGPQ_`abcdefr~ŒŽ˜¡¢¥¨©«®¯±³´ ÿÿÀÿÿÿÿÿÿÿÿ@@ÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿ @ÿÿ @ @ÿÿÿÿ@ÿÿ@@@@@@@ÿÿÿÿÿÿ@@@ÿÿÿÿ@ÿÿÿÿ@ÿÿÿÿ@ÿÿÿÿ @ÿÿ Ø,Ø Ø_CorExeMainmscoree.dllÿ% @§¸gKZ`Ø`ºRSDSñ Ÿ|«ª5FŒBD~.ÂŬC:\fsharp\rc1\extras\fsppack\head\src\FsLex\obj\Release\FsLex.pdb €8€P€h€€âø àê ø4VS_VERSION_INFO½ïþ    ?XStringFileInfo4000004b0< Assembly Version1.9.7.104 FileVersion1.9.7.108 ProductVersion1.9.7.10, Commentsfslex.exe< FileDescriptionfslex.exe<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°Ð @8fsharp-3.0.34/lib/bootstrap/2.0/FSharp.SRGen.Build.Tasks.dll0000775000175000017500000002200012260314606022126 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELÑ ùJà! ~7 @@ €S‹@7`@ ` „7  H.text¨  `.rsrc @@@.reloc `"@BW7H¸!d œ* *€0&( &}}}}*0{*0 }*0{*0 }*0{*0 }*0{*0 }*0rp*0{o ( *0Cs rp{( rp{( rp{( þo *BSJB v2.0.50727lô#~`°#Strings #US0#GUID@$#BlobW¢ ú3    ‹„ Ôº[E¤‘¸ëÑ Ñ  1ºE›E{ ²› €#ü ;òEòNò[òP ‹é„ jõ˜ xù° ˆõÄ ™ùÜ ªõð ½ù!Ðõ!Ýù4!ÆêõH!Æõh!Æcõ††††‹¾!‹Ö1‹é9‹é‹é÷õAþI‹éID ZõQ‹)í. Å.ÜC[IíI#íiíi#íÇåýåå)å2å   €'ÆÀ,’ Ý&Æ„µ Ñà KFSharp.SRGen.Build.Tasks.dllFSharpSignatureData.FSharp.SRGen.Build.TasksFSharpOptimizationData.FSharp.SRGen.Build.TasksSystemObjectmscorlibMicrosoft.FSharp.BuildFsSrGenMicrosoft.Build.UtilitiesToolTaskMicrosoft.Build.Utilities.v3.5$FsSrGenFSharp.SRGen.Build.TasksMicrosoft.FSharp.CoreFSharpInterfaceDataVersionAttributeFSharp.Core.ctorSystem.DiagnosticsDebuggableAttributeDebuggingModesInputFileMicrosoft.Build.FrameworkRequiredAttributeOutputFsFileOutputAttributeOutputResxFileToolPathToolNameinputFiletoolPathoutputFsFileoutputResxFileget_InputFileset_InputFilesget_OutputFsFileset_OutputFsFileget_OutputResxFileset_OutputResxFileget_ToolPathset_ToolPathget_ToolNameget_ToolExeSystem.IOPathCombineGenerateFullPathToToolCommandLineBuilderAppendSwitchIfNotNullToStringGenerateCommandLineCommandsCompilationMappingAttributeSourceConstructFlagsfssrgen.exe Ñ ùJìWB§EƒÑ ùJ·z\V4à‰°?_Õ :€ $€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô¡‰±ÇM    (   % % -xæq¡‹‚°[s“™2à’ Wtô„þã“óÖDùbé=¶†RÖaùûÈsGY~ÖsÇÁª>&¡û1Ô’¹îr)æ?6ÞrÓµó`äžÒîÞáý²ÏòËÖ&Ñ(¾k§^#Š §–ƒÁõf*´Q~Ëfg0Åв4¾³¨1áœ×  FSharp.CoreFSharp.SRGen.Build.TasksMicrosoft.Build.FrameworkMicrosoft.Build.Utilities.v3.5 $FSharp.SRGen.Build.TasksHd:\Depot\staging\src\fsppack\FsSrGen\FSharp.SRGen.Build.Tasks\FsSrGen.fs MicrosoftFSharpBuild.ctorCoreunitFsSrGen get_InputFilestring FrameworkRequiredAttributeMicrosoft.Build.Framework+Microsoft.Build.Framework.RequiredAttribute set_InputFilesget_OutputFsFileOutputAttribute)Microsoft.Build.Framework.OutputAttributeset_OutputFsFileget_OutputResxFileset_OutputResxFile get_ToolPath set_ToolPath get_ToolName UtilitiesToolTaskGenerateFullPathToToolGenerateCommandLineCommands inputFiletoolPath outputFsFileoutputResxFile=d:\Depot\staging\src\fsppack\FsSrGen\FSharp.SRGen.Build.Tasks     †¹Pv  5 ò  ­    ‚´   €¤°?_Õ :  €¤°?_Õ :  €¤°?_Õ :°?_Õ :  €¤°?_Õ :°?_Õ :  €¤°?_Õ :°?_Õ :  €¤°?_Õ :°?_Õ :  €¤  €¤   ####€¤ %%(%%(€¤ ((-((-€¤         !   "                  #›FSharp.SRGen.Build.Tasks FSharp.Core MicrosoftFSharpBuildFsSrGen.ctorCoreunit get_InputFilestring set_InputFileget_OutputFsFileset_OutputFsFileget_OutputResxFileset_OutputResxFile get_ToolPath set_ToolPath get_ToolNameGenerateFullPathToToolGenerateCommandLineCommands\@!ã      C7e7 W7_CorDllMainmscoree.dllÿ% @Ñ ùJ} 7 RSDS$!“qSÉA´9“™#N½d:\Depot\staging\src\fsppack\FsSrGen\FSharp.SRGen.Build.Tasks\obj\Proto\FSharp.SRGen.Build.Tasks.pdb €8€P€h€€B @ê 4VS_VERSION_INFO½ïþ'Æ'Æ?ðStringFileInfoÌ000004b0@ Assembly Version2.0.50727.08 FileVersion2.0.50727.0< ProductVersion2.0.50727.0DVarFileInfo$Translation°0 €7fsharp-3.0.34/lib/bootstrap/2.0/FSharp.PowerPack.Build.Tasks.dll0000775000175000017500000005300012260314606023047 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL3ùJà! LŽj €@ Àð@-j^€  ”j  H.text¼K L `.rsrc€N@@.reloc  T@BijHt+È! ¼Mq,(<*(=*0 (# o$ (% -(& **09(' (( (% ,*() o* (+ r÷p(, (& *0~*0~*0(% ,*(& *0¯Ð(. o/ o0 (1 o ,rp(2 , Þ(& Þ Þ t  Þ€s3 o4 € €s5 €(6 þ€r p(A :³r=pr¯p( (/,P(/( (7 1(8 3þþ+,rÄps9 +rÄps9 + rÄps9 (: (; (?-(?  -(@ Þ Þ Þ Þ t  Þ€rp(A -)rPpr¯p( (?-(@ Þ Þ Þ t  Þ€*(AB ‰ÉR b<ž BSJB v2.0.50727lˆ #~ô l#Strings`Ø#US8#GUIDH€#BlobW¢ ú3- E%;,/— ÞÄQ7¡‹é×××6×Q×}j+‘µ7=‹-# QÄd7 »ÄÜ‹KÐW‹s‹tTjî ø   V p Œ ž Ê « ð A ¨ “ í Î  ×Ô jï jƒ ¨ ‹ µ Ì ó × ‡ ¾§  ç§ €!î+%' +€!f-%˜ -€¹¦/…ËD€ýÒE€jFû………ˆ!…,…5…û………!…¤ˆ­…³…,…5… … …3µ ï3 k3 n3- ˆ39 ï3^ ï} kP Ñx¸ V–Ì dÖä t–ø ƒÖ!’–$!ŸÖ J R Z áO O O [ â!Ѿ)ÑÖ1ÑÖ9ÑÖAÑÖIÑÖQÑeaÑxÑx L‘q2£yÑxyqµy‡Öy”µ ²–‰À»™ïÀΖ¡ÑÞÑä±Ñx¹ÑxÉÿ £Ñ UÙb wဠ|é” ñ¦ nùÒ …ùá Š¦ qù÷  K « ] –Éo ± } ¶¾ Å Ë! Ð!( –q5 ÖÉF Û)ÑöIº IÞ "!ë (Y€ |É.aÑxi#4ñÑ93EÉ<ÉG>ÑKQS[‘. Å.Û..#Û.+.3Q.;kC«kIC|c«k£«ðã«ð«æ#«æIC|akýi«ký¡kýÁkýákýé«ký!ký!»|!Ã|I«©«É«é«»|Ã| »| Ã| »| Ã|à»|àÃ|»|Ã|@»|@Ã|`»|`Ã|©…­±ÔQ\knqt•ÁáïX  tªtÅtÎÖtátêtòt tªtÖtÅtˆ˜ttátêtòtù7 O rzˆšª½ÍÔÜùýù       "!$!#!&#%#'%/'0)1+5-6/718395:7;9>;B=C? ‹CeÓg id €&Æ„€nž Ä 7&Æ„µÅ"S %ÉFSharp.PowerPack.Build.Tasks.dllFSharpSignatureData.FSharp.PowerPack.Build.TasksFSharpOptimizationData.FSharp.PowerPack.Build.TasksSystemObjectmscorlibMicrosoft.FSharp.BuildFsLexMicrosoft.Build.UtilitiesToolTaskFsYacc.$FSYaccBuildeventArgs@117-1Microsoft.Build.FrameworkCustomBuildEventArgs.$FSLexeventArgs@105Internal.UtilitiesFSharpEnvironmentOption$CompilerLocationUtils.$Assemblyinfo.FSharp.PowerPack.Build.TasksdllFSharp.PowerPack.Build.TasksMicrosoft.FSharp.CoreFSharpInterfaceDataVersionAttributeFSharp.Core.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesInputFileOutputFileOutputAttributeCodePageUnicodeOtherFlagsToolPathToolExeToolNameinputFileoutputFilecodePageunicodeotherFlagstoolPathtoolExeFSharpOption`1get_Valueget_InputFileset_InputFilexget_OutputFileset_OutputFileget_CodePageset_CodePageget_Unicodeset_Unicodeget_OtherFlagsset_OtherFlagssget_ToolPathset_ToolPathget_ToolExeset_ToolExeget_ToolNameSystem.IOPathCombineGenerateFullPathToToolCommandLineBuilderIBuildEngineAppendSwitchIfNotNullAppendSwitchAppendSwitchUnquotedIfNotNullToStringTaskget_BuildEngineHashCompareLanguagePrimitivesGenericEqualityIntrinsicLogCustomEventGenerateCommandLineCommandsInternalGenerateCommandLineCommandsCompilationMappingAttributeSourceConstructFlagsMLCompatibilityOpenModulemlCompat_open_moduleget_MLCompatibilityset_MLCompatibilityget_Openset_Openget_Moduleset_ModuleargsEqualsobjFSharpCoreLibRunningVersionFSharpTeamVersionNumberFSharpBinaryMetadataFormatRevisionmaxPathmaxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZis32BitBinFolderOfDefaultFSharpCompilerBinFolderOfFSharpPowerPackget_FSharpCoreLibRunningVersionget_FSharpTeamVersionNumberSystem.Runtime.CompilerServicesCompilerGeneratedAttributeDebuggerNonUserCodeAttributeget_FSharpBinaryMetadataFormatRevisionRegOpenKeyExW_hKey_lpSubKey_ulOptions_samDesired_phkResultAdvapi32.dllRegQueryValueExW_lpValueName_lpReserved_lpType_lpData_lpchDataRegCloseKeyget_maxPathget_maxDataLengthget_KEY_WOW64_DEFAULTget_KEY_WOW64_32KEYget_HKEY_LOCAL_MACHINEget_KEY_QUERY_VALUEget_REG_SZExceptionStringConcatMicrosoft.Win32RegistryGetValueGetDefaultRegistryStringValueViaDotNetsubKeyEnvironmentget_OSVersionOperatingSystemget_VersionVersionget_MajorUIntPtrZeroSystem.Runtime.InteropServicesMarshalAllocCoTaskMemPtrToStringUniIntPtrFreeCoTaskMemGet32BitRegistryStringValueViaPInvokeget_is32BittryRegKeyAppDomainget_CurrentDomainget_BaseDirectoryIsNullOrEmptySometryCurrentDomainSystem.ConfigurationConfigurationSettingsget_AppSettingsSystem.Collections.SpecializedNameValueCollectionget_ItemAssemblyGetExecutingAssemblyget_LocationGetDirectoryNameReplacetryAppConfigappConfigKeyget_BinFolderOfDefaultFSharpCompilerget_BinFolderOfFSharpPowerPackofStringFSharpCoreLibRunningVersion@19DebuggerBrowsableAttributeDebuggerBrowsableStatemaxDataLength@65HKEY_LOCAL_MACHINE@68is32Bit@136BinFolderOfDefaultFSharpCompiler@193BinFolderOfFSharpPowerPack@229init@Tuple`2Microsoft.FSharp.CollectionsFSharpList`1TypeGetTypeFromHandleRuntimeTypeHandleget_AssemblyGetNameAssemblyNameSystem.TextUTF32EncodingEncodingGetMaxByteCountget_Sizeget_Lengthget_Charsget_Item2get_Item1.cctorfslex.exe--codepage --unicode-o  fsyacc.exe%--ml-compatibility--open --module 1.9.7.81.9.7.0'HKEY_LOCAL_MACHINE\{exepath}1fsharp-compiler-location€…Software\Microsoft\.NETFramework\AssemblyFolders\Microsoft.FSharp-WSoftware\Microsoft\FSharp\v1.0\Runtime\v4.03fsharp-powerpack-location€…Software\Microsoft\.NETFramework\AssemblyFolders\FSharp.PowerPack-3ùJ‘ÐR§Eƒ3ùJ·z\V4à‰°?_Õ :€ $€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô¡‰±ÇM    % FSharp.PowerPack.Build.Tasks.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F# -( (5    =A   A A  =A  U  5  5         aa5 q u  a€… 5€ €‘ 5 €™€€¡€¥€© €‘ €­    €  # 5a5€55Ne;ÎB4:DöPrÃ9§U1‰¾>¢e^ôŒŒÉõÒ嬣¡‚–Äæ+ÂIÐþq –¡û2¿Jõ0Å5¸vØ¢û/¾_î šÃù†ÎdZ÷Ó†JŸ:-fxZŠSö^Ò“õ+wTÆ&]Aƒñ€3õIÚÃÏùo|=õµöI4x˜uø¢‡ FSharp.CoreFSharp.PowerPack.Build.TasksmscorlibMicrosoft.Build.FrameworkMicrosoft.Build.Utilities 0`FSharp.PowerPack.Build.TasksId:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\FSYacc.Build.fs MicrosoftJd:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\FSYacc.Build.fsiFSharpBuild.ctorCoreunitFsYaccGenerateCommandLineCommandsSystemStringGenerateFullPathToTool get_ToolName#InternalGenerateCommandLineCommands set_InputFilestringset_OutputFile FrameworkOutputAttributeMicrosoft.Build.Framework)Microsoft.Build.Framework.OutputAttribute set_CodePageset_OtherFlagsset_MLCompatibilityboolset_Open set_Module set_ToolPath set_ToolExeId:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\FSLex.Build.fsiHd:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\FSLex.Build.fsFsLex set_Unicode UtilitiesToolTaskInternalfd:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\..\FSharp.PowerPack\CompilerLocationUtils.fsFSharpEnvironment&T:Internal.Utilities.FSharpEnvironmentFSharpCoreLibRunningVersionoption`1FSharpTeamVersionNumber"FSharpBinaryMetadataFormatRevision RegOpenKeyExWUIntPtruint32intbyref`1RuntimeInteropServicesDllImportAttributemscorlib1System.Runtime.InteropServices.DllImportAttribute System.String Advapi32.dllCharSetBestFitMapping_hKey _lpSubKey _ulOptions _samDesired _phkResultRegQueryValueExWIntPtr _lpValueName _lpReserved_lpType_lpData _lpchData RegCloseKeymaxPath maxDataLengthKEY_WOW64_DEFAULTKEY_WOW64_32KEYHKEY_LOCAL_MACHINEKEY_QUERY_VALUEREG_SZ&GetDefaultRegistryStringValueViaDotNetsubKey%Get32BitRegistryStringValueViaPInvokeis32Bit tryRegKeytryCurrentDomain tryAppConfig appConfigKey BinFolderOfDefaultFSharpCompilerBinFolderOfFSharpPowerPackOption-T:Internal.Utilities.FSharpEnvironment.OptionofStringsEM:Internal.Utilities.FSharpEnvironment.Option.ofString(System.String)9d:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks  "&&$&$(&$(Z   "$%+&$( /012 345 34: B&$(Z  ÅP‚ 0  À { ÿ´@  (YY-ÿ¤@ #VV(ÿ¤@ TTÿ¤@7{{<ÿ¤@ ' 'ÿ¤@ , ,ÿ¤@°?_Õ : 5 5ÿ¤@ 0 0ÿ¤@  : :ÿ¤@  ? ?ÿ¤@  D Dÿ¤@  I Iÿ¤@  P Pÿ¤@ ! ÿ´@  (!SS-ÿ¤@ #!PP(ÿ¤@ !NNÿ¤@ 7!nn<ÿ¤@  !+ +ÿ¤@  !0 0ÿ¤@°?_Õ :  !5 5ÿ¤@  !> >ÿ¤@#  !: :ÿ¤@  !C Cÿ¤@  !J Jÿ¤@                  "   " " """""""#"#""&'  0$'&½ 0('  !)&$t 0*'#'# €¤ ,'$$'$$€¤ -'***'***€¤ .'--'-- €´6·z\V4à‰76·z\V4à‰899:   ;<'-(--='-6-?>'-H-R?'-X-c@'-o-y A'00"'00"  €´6·z\V4à‰76·z\V4à‰899:   ;<'0+00C'090ED'0N0YE'0d0kF'0t0{G'0€ƒ0€Œ H'33'33€´6·z\V4à‰76·z\V4à‰899<'3&3+ I'@@'@@ €¤ !J'AA'AA €¤ "K'BB'BB €¤ #L'CC'CC €¤ $M'DD'DD€¤ %N'EE'EE €¤ &O'FF'FF€¤ 'P'HH.'HH. €¤Q'H/H5 (R'cc-'cc- €¤Q'c.c4 )S'€ˆ€ˆ'€ˆ€ˆ€¤ *T'€Š€Š'€Š€Š €¤Q'€Š€Š +U'€¦€¦!'€¦€¦! €¤ ,V'€­€­'€­€­ €¤W'€­€­+ -X'€Á€Á('€Á€Á( €¤ .Y'€å€å"'€å€å" €¤  Z'5 5 [&$(6 /0/\'7 7'7 7 €¤]'77^_eFSharp.PowerPack.Build.Tasks FSharp.CoremscorlibInternal UtilitiesFSharpEnvironmentOption MicrosoftFSharpBuildFsLex.ctorCoreunit set_InputFilestringset_OutputFile set_CodePage set_Unicodeboolset_OtherFlags set_ToolPath set_ToolExe get_ToolNameSystemStringGenerateFullPathToToolGenerateCommandLineCommandsFsYaccset_MLCompatibilityset_Open set_Module   ‚¹_@!ãÄ    Ujwj ij_CorDllMainmscoree.dllÿ% @3ùJ~°j°LRSDSH2?^©ŽlGŒhàQÂe >d:\Depot\staging\src\fsppack\FSharp.PowerPack.Build.Tasks\obj\Retail\FSharp.PowerPack.Build.Tasks.pdb €8€P€h€€‚p €ê p4VS_VERSION_INFO½ïþ„&Æ„&Æ?ÐStringFileInfo¬000004b0DAssembly Version2.0.50726.900<FileVersion2.0.50726.900@ProductVersion2.0.50726.900\!CommentsFSharp.PowerPack.Build.Tasks.dlll!FileDescriptionFSharp.PowerPack.Build.Tasks.dll<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°` :fsharp-3.0.34/lib/bootstrap/2.0/fsyacc.exe0000775000175000017500000130400012260314606017126 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELùJà <^Y `@  Â@ùXb`¨€ dY  H.text<: < `.rsrc¨`>@@.reloc €D@B5YHhwüE ä½™ðd½€0{*0{*0{*0{*0{*0,( }}}}}*0Fþ,5þ,-( {{( /*1*(ã**þ,**0¥(*0Q¥ þ,4¥þ,'{{( /*1*(ä**¥þ,**0ˆþ9| ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{bcXXX ¹y7ž{ , ( +bcXXX **0 ( ( *0oþ,`u ,T{{( ,?{{3/{{3{{3{{þ******þþ*0{*0{*0{*0{*0{*0{*0{*0{{Y*0){{X{X{{s*0'{{{{{Xs*0(*0'{{{{{Xs*0rps*0 s*0kþ,\þ,T{{( ,?{{3/{{3{{3{{þ******þþ*0u ,(**0{ *0{ *0( } } *0šs } ( &} { ( s } ¨} } } } } } }! rps}" rps}# }$ *0Wþ{$ / (% +{ / rps& z{# (' {# (( (() { *0þ{$ / (% +{" *0þ{$ / (% +}" *0þ{$ / (% +{# *0þ{$ / (% +}# *00þ{$ / (% +{ { { þ(+*0*þ{$ / (% +{ { X£¨*0"þ{$ / (% +{ ¥©*0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +{ *0þ{$ / (% +} *0þ{$ / (% +s+ *0þ{$ / (% +s, *0(- (. (/ s0 *0þ{$ / (% +{! *0þ{$ / (% +}! *0þ{$ / (% +(1 *0$þ{$ / (% +{ { X*0g þ{$ / (% +(2 X { Ži þþ,5(2 X(+ { { { { (+} **0S (+ , (5 s6 (7 +, (8 s9 (: +s; s< *0(= (> *0(? (> *0sö (@ (A *0sø (B (C *0;sD (7 sE (: s; s< (+ (G Ži(H *0(I *0(J *0 (K (J *0s (@ (A *0s (B (C *0s(B s(L (C *0:{ { - r)psM z (N { (O (+oQ &*0;{ { - r¥psM z (R { (O (+þoS *0<{ { { (+ Ži { (+} } *0( &}}*0(+þ(P*0  (+sU (å*0 sL*0 Ë{£;i  ÿÿ.(V (W (X +(V (Y 3:(Z ([ o\ &{ ÿÿss þ(+*(] (^ £<i {£º£;i  ÿÿ3(_ *(V X(` 85ÿÿÿ0h( &}} ÿÿ} €}{£ºŽiY{YY[}{{ZXX}*0(+þ(V*0!  (+sa (ç*0 sQ*0=#i {/{£º£;i*{   (é*0 Ê${£;i { þþ,(b (c (d +(b (e 3<(f (g o\ &{{s"s${þ( +*(- (h £= (U {3(i *(b X(j 86ÿÿÿ0?( &}k }l }m }n }o }p }q *0{k *0{m *0{n *0{l *0{o *0{p *0{q *0{r *0{s *0{t *0{u *0{v *0{w *0{x *0{y *0{z *0{{ *0{| *0{} *0{~ *0{ *0{€ *0{ *0„( }r }s }t }u }v }w }x }y  }z  }{  }|  }}  }~ } }€ } *0 ( +*0( &(+}‚ }ƒ *0F%{‚ Ži 17{‚ Z /+(+}‚ {‚ {ƒ þ(+**0{ƒ *0{ƒ Y}ƒ *0{‚ {ƒ Y£¨*0)'þ¨þ¨s„ ( +þ( +*01{ƒ X(‡ {‚ {ƒ ¤¨{ƒ X}ƒ *0 {ƒ þ*0O( {ƒ Y 2>rp{‚ £¨Œ¨{ƒ Y3r-p+r1p(ˆ X X3Â*0(‰ *0 (Š *0 (‹ *0 þ,**0*( þ,**0',þ,u , ( +-***þþ*0#þ,þ, ( +-***þþ*0,u ,(‡**0(‰ }6*0(‰ *0 (Š *0 (‹ *0{6*0--þ,$ ¹y7žt ((+bcXXX **0 ( oŽ*0D,þ,5u ,)(+-*t (t (þ(+**þþ*0?þ,0þ,((+-*t (t (þ(+**þþ*0,u , þ(‘**0( &} }‘ *0s’ (“ }‘ *0s” (“ }‘ *0m2s• s’ (“ (– }‘ o— o˜ ,o™ (š (+ (› +Ü ÞuE, oœ &Ü&Ü&*)(Q0(,¥ + r5ps& z& ( }‘ *0(,¥ + r5ps& z& ( }‘ *0(,¥ + r5ps& z& ( }‘ *0&þ{‘ / (% +{ þoŸ *0$þ{‘ / (% +{ þo  *0R4þ{‘ / (% +{ o¡ { (¢ s” { s£ ¥Å(+s“ *0e8þ{‘ / (% + { (¥ (¦ ,(§ (¨ (+ +Ü ÞŒÆ¥Eoœ &Ü &*&(N019þ{‘ / (% +{ s« ¥Åþ(+*0%þ{‘ / (% +{ þo¬ *0$;þ{‘ / (% +{ o­ *0$þ{‘ / (% +{ þo¡ *01þ{‘ / (% +{ (® (¯ ŒË¥Ã*01þ{‘ / (% +{ (® (¯ ŒË¥F*0X?s± , (²  (³ s´ +sµ sÃ(¶ s(· s¸ *0~\*0~]*0~^*0~_*0~`*0~a*0~b*0~c*0~d*0~e*0~f*0€f*0~g*0€g*0~h*0,-ŒÎ¥ rMp(¹ ¥R(º þo» *0*ŒÎ¥o¼ ŒÎ¥rQpþo» *0*0 @*0 €*0 À*0 À*0 ÿÿ*0LB(E+ À*t {¹`*tž @{º`* €*03-(¾ þþ,(¾ Y(¿ .þ+,*(À *0,(½-r[pr­psÁ z( (à (Ä *0D(Å sÆ *0F(Ç (È sÉ *0 (Ê , þ(Ë *r±p(Ì *0 0”(¥(Í - rµps& z(Î (®(Ï (¤ (Ð  (Ñ  (Ò (ª(Ó 9s,mrÓpsÔ  (Õ  (+&=(% r ps×  (Õ  (+ (:oØ &(U   ( (x, (+&+“++(GsÛ(+(+ Þ[tr1psÜ (Õ (+(Ý {(Ý {{YoÞ (+&(+ Þ ÞuE, oœ &Ü&ÜÞuE, oœ &Ü&Ü (©(Í , (Î +'(¾r[p(à ,rep+rmp(Ì (©(Í ,7(Î (¾rep(à ,rup+rp(Ì +'(¾r[p(à ,rup+rp(Ì (¬(Ó ,K(©(Í ,!(Î (¾r‰p(Ì +(¾r‰p(Ì (á + (â (â sã sã sä sä sásí ,(Î (â ""sñ+só!!sõoå &r§psÔ  (Õ  (+&(Q#!#(+$$(ç %$(è &$(é '$(ê (ë ($(ì )$(í *$(ê (î +$(ï ,$(ð -{..(ñ .(ò rÇpsó /(Õ /(+%Žioô &rÛpsó /(Õ /(+*£áŽioô &rûpsó /(Õ /(+-£âŽioô &rpsó /(Õ /(+'Žioô &r3psó /(Õ /(+-Žioô & o +¥ã0sä (!+1rgpsÔ 212oö & o +¥ã0sä (!+1rÓpsÔ 212oö &(­(÷ (ø ("+,+#(­(÷ ("+,rep(à +,k o +¥ã0sä (!+1r5psÔ 212oö & o +¥ã0sä (!+1r5psÔ 212oö &+(¦(Í 9÷(Î 3(§(Ó ,o o#+¥ç4sä ($+5rOps× 6563(%+& o#+¥ç4sä ($+5rOps× 6563(%+&+p o#+¥ç4sä ($+5rups× 6563(%+& o#+¥ç4sä ($+5rups× 6563(%+&+ o +¥ã0sä (!+1r‰psÔ 212oö &(¨(û 77¥êoü 88o˜ ,{8oý 3 o#+¥ç4sä ($+5r|ps× 6563(%+& o#+¥ç4sä ($+5r|ps× 6563(%+&8|ÿÿÿ9Þ8uE, oœ &Ü&Ü9& o#+¥ç4sä ($+5r|ps× 656(¯(%+& o#+¥ç4sä ($+5rŒps× 656(±(%+&(«(Ó ,7 o +¥ã0sä (!+1r¶psÔ 212oö &+ o&+¥ì:sä ('+;rpsþ <;<{{((+& o#+¥ç4sä ($+5r.ps× 656(%+&( r4prp( =% ¤=( ŽiX(  o&+¥ì:sä ('+;rpsþ <;<( ((+& o +¥ã0sä (!+1r8psÔ 212oö &( ( ( ==¥ðo >>o˜ 9c>o ? o +¥ã0?(Ç "?(È @"@sä (!+1r¬psÔ 212oö &{‚AA¥òo BBo˜ 9ÊBo  DD(  D(  3,](Î E o)+¥õF?(Ç "?(È @"@sä (*+GrÈps  HGH3E(++&8xÿÿÿ o#+¥ç4?(Ç "?(È @"@sä ($+5ræps× 6563(%+&8*ÿÿÿCÞBuE, oœ &Ü&ÜC&8‘þÿÿ9Þ>uE, oœ &Ü&Ü9& o +¥ã0sä (!+1rôpsÔ 212oö &( ( ( ==¥ðo >>o˜ 9>o ? o +¥ã0?(Ç "?(È @"@sä (!+1r¥psÔ 212oö &{‚AA¥òo BBo˜ ,]Bo  DD(  3 o#+¥ç4?(Ç "?(È @"@sä ($+5rÅps× 6563(%+&+šCÞBuE, oœ &Ü&ÜC& o +¥ã0?(Ç "?(È @"@sä (!+1rãpsÔ 212oö & o +¥ã0?(Ç "?(È @"@sä (!+1rpsÔ 212oö &8uþÿÿ9Þ>uE, oœ &Ü&Ü9& o +¥ã0sä (!+1rôpsÔ 212oö &( ( ( ==¥ðo >>o˜ 9â>o ? o +¥ã0?(Ç "?(È @"@sä (!+1r9psÔ 212oö &(¥êoü 88o˜ ,T8oý 3 o#+¥ç4?(Ç "?(È @"@sä ($+5reps× 6563(%+&+£CÞ8uE, oœ &Ü&ÜC&8ÿÿÿ9Þ>uE, oœ &Ü&Ü9& o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r‡psÔ 212oö & o +¥ã0sä (!+1répsÔ 212oö & o +¥ã0sä (!+1r! psÔ 212oö & s÷{‚(,+ o +¥ã0sä (!+1r? psÔ 212oö & o +¥ã0sä (!+1r» psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rõ psÔ 212oö & o +¥ã0sä (!+1ro psÔ 212oö & o +¥ã0sä (!+1r¿ psÔ 212oö & sù{‚(,+ o-+¥øIsä (.+Jrë psó KJK,(/+& o-+¥øIsä (.+Jr% psó KJK+(/+& o +¥ã0sä (!+1rQ psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r? psÔ 212oö & o +¥ã0sä (!+1r³ psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rÿ psÔ 212oö & o +¥ã0sä (!+1r. psÔ 212oö & o +¥ã0sä (!+1r‚ psÔ 212oö & sû'(0+ o +¥ã0sä (!+1r¬ psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rÿ psÔ 212oö & o +¥ã0sä (!+1r/psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o-+¥øIsä (.+Jrpsó KJK,(/+& o-+¥øIsä (.+JrÍpsó KJK+(/+& o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rÃpsÔ 212oö & sý{‚(,+ o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rãpsÔ 212oö & o +¥ã0sä (!+1rQpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r›psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rÃpsÔ 212oö &{‚AA¥òo BBo˜ 9{Bo  DD(  D(  3 o1+¥úLsä (2+Mrcps NMN3-rp+r…p-r™p+rÇp(3+&8yÿÿÿ9ÞBuE, oœ &Ü&Ü9&sÿ{ƒPsP¥ý(4+(5+OOo QQo˜ ,1Qo RR( 3sr#ps (6+3oØ &+Æ9ÞQuE, oœ &Ü&Ü9&s{‚AsA¥ò(7+(5+OOo QQo˜ ,1Qo RR( 3s rups (6+3oØ &+Æ9ÞQuE, oœ &Ü&Ü9&{ƒ(8+S{‚(9+T%ŽiUo:+¥o +¥ã0sä (;+1r·psÔ 212oö &*£áŽiVV(<+Wsã @YVYXXY?0WY@( ¤Ssã Z\UY[[\24*\£áY£Ì,ZZ( X( +\X\\[X3Ì@@( X( Z( [[o¼ rQpo»  ÿÿo¼ rQpo» \UY[[\2o*\£áY£Ì]],J]^^(² _@@( X( \o¼ rQpo» _o¼ rQpo» +\X\\[X3‘YXYYXX@Ðþÿÿ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1rípsÔ 212oö &YVYXXY2.WY£S[[o¼ rQpo» YXYYXX3Ò o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1rCpsÔ 212oö &%Ži(<+Wsã @V8±%V£`WV@( ¤S`( XXo¼ rQpo» @@( `( XX( `¥o aao˜ ,!ao XXo¼ rQpo» +Ö9ÞauE, oœ &Ü&Ü9&VXVV%Ži?Dÿÿÿ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1r¡psÔ 212oö &V+&WV£SXXo¼ rQpo» VXVVWŽi2Ò o +¥ã0sä (!+1rçpsÔ 212oö &-ŽiV-£âŽiX o-+¥øIsä (.+Jrpsó KJKV(/+&o:+¥o +¥ã0sä (;+1r;psÔ 212oö &V(<+Wsã @[UYYY[?W[@( ¤S-[£âb s c s  d\8€b\£(! eceo" ,ce\ceo# ($ o% +ce\(& ($ o% deo' ,dedeo( Xo) + deo) \X\\bŽi?uÿÿÿ(s* fsã Zd(+ gg(, ,Wg(- hhjj(. j(/ s0 ii(1 \i(2 k\Z( 1fk(3 Z\( +£+ 9ÞgŒ ¥Eoœ &Ü9&f(4 esã Zc(5 ll(6 9¢l(7 mmoo(8 o(9 s: nn(; `n(< k`¥o aao˜ ,/ao \ke( (-ZZ( X( +Ë+ÈCÞauE, oœ &Ü&ÜC&8Rÿÿÿ9ÞlŒ ¥Eoœ &Ü9&@@( X( Z( \\o¼ rQpo» e(¼\\o¼ rQpo» \+mb\£(! kke( (-F@@( X( \o¼ rQpo» k(¼__o¼ rQpo» +\X\\bŽi2‹[X[[YX@ëüÿÿ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1r…psÔ 212oö &[VYYY[2Zo:+¥o=+¥psä (>+qrÓps= rqrs W[£S(?+&[X[[YX3¦ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1rÙpsÔ 212oö &V+d'V£ss(? to:+¥o=+¥psä (>+qrÓps= rqrs t(@ (?+&VXVV'Ži2” o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1r'psÔ 212oö &V+_'V£ss(A Xo:+¥o=+¥psä (>+qrÓps= rqrsX(?+&VXVV'Ži2™ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1rƒpsÔ 212oö &V8¸)V£uu,Zuvv(B eo:+¥o=+¥psä (>+qrÓps= rqrse(¼(?+&+Io:+¥o=+¥psä (>+qrÓps= rqrs ÿÿ(?+&VXVV)Ži?=ÿÿÿ o +¥ã0sä (!+1rçpsÔ 212oö &o:+¥o +¥ã0sä (;+1rÇpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö &V8Ö'V£ss(? ts(C 3s(D w o&+¥ì:sä ('+;rpsþ <;<( ((+& o#+¥ç4sä ($+5rps× 656(±(%+&(«(Ó ,7 o +¥ã0sä (!+1rmpsÔ 212oö &+ STst(@+ o +¥ã0sä (!+1rÍpsÔ 212oö & o +¥ã0sä (!+1r-psÔ 212oö & o +¥ã0sä (!+1rQpsÔ 212oö &w-+Uwxx(E (ñ y o&+¥ì:sä ('+;rpsþ <;<y{y{((+&w-? o#+¥ç4sä ($+5r{ps× 656(±(%+&8¶wxx(E (ò EsF zzsE(G {{=% ¤=% ¤=(H |X+G|X£/} o#+¥ç4sä ($+5rps× 656}(%+&XXXX|Ži2±z(Ó , $oI + o +¥ã0sä (!+1rLpsÔ 212oö &w-+Uwxx(E (ñ y o&+¥ì:sä ('+;rpsþ <;<y{y{((+& o#+¥ç4sä ($+5rvps× 656S3(Ê , S3(Ë + r±p3(Ì (%+&VXVV'Ži?üÿÿ o +¥ã0sä (!+1rçpsÔ 212oö & o&+¥ì:sä ('+;rpsþ <;<( ((+& o#+¥ç4sä ($+5r¨ps× 656(±(%+& o +¥ã0sä (!+1rèpsÔ 212oö & o +¥ã0sä (!+1r6psÔ 212oö & o +¥ã0sä (!+1rŒpsÔ 212oö & o +¥ã0sä (!+1rÆpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r„psÔ 212oö & o +¥ã0sä (!+1rúpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r(psÔ 212oö & o +¥ã0sä (!+1ržpsÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1r6psÔ 212oö & o +¥ã0sä (!+1r½psÔ 212oö & o#+¥ç4sä ($+5r'ps× 656(±(%+& o +¥ã0sä (!+1r™psÔ 212oö & o +¥ã0sä (!+1rpsÔ 212oö & o +¥ã0sä (!+1rqpsÔ 212oö & o-+¥øIsä (.+Jrøpsó KJK-£âŽi(/+& o +¥ã0sä (!+1r& psÔ 212oö & o +¥ã0sä (!+1r½ psÔ 212oö &{…&(A+~~¥þo QQo˜ 9¼Qo RR(K VR( 3S3(Ê -rj!p3(Ì EEs& zS3(Ë E o)+¥õFsä (*+GrÔ!ps  HGH3E(++& o-+¥øIsä (.+Jr "psó KJKV(/+&88ÿÿÿ9ÞQuE, oœ &Ü&Ü9&{…77¥êoü 88o˜ 9•8oý 3S3(Ê -rµ"p3(Ì EEs& zS3(Ë E oB+¥sä (C+€r#psL €3(¯rœ#p(¯rœ#pE‚ƒ(D+ƒ‚(E+&8_ÿÿÿ9Þ8uE, oœ &Ü&Ü9&!soå ÞuE, oœ &Ü&ÜÞuE, oœ &Ü&Ü&*AüMŸì[MMM mÛ‰dê ÛÅ y tí Ò k= a ñ Î b0e óX£Œ/z?¹?Cº/éxeÝ\=™³Áý-ÍÊ.ý.¦£/¨(-Ð/ŸQ-ð/:(O }9*0'–(P (Q (R {9þoS *(T *0(©(á (U *(V *0(¬(W *(T *0(¦(á (U *(V *0(§(W *(T *0'(¨(¨(û (X (Y (F+([ *(V *0(­(ø (\ *(V *0(­(ø (\ *(T *0 (°*(T *0 (²*(] *0(®(^ (_ *(T *0*(¥(Í -(¥(á (U *r¦#ps& z(` *0 =þ(%*:(a }b *0{b þ(G+*V(a }c }d *0 {c {d se (H+þof *(g *0 sh Œ*:(g }i *0{i sj Œ!*V(k }l }m *0%—{m {l (n (o sp *V(V }@}A*0&{A{A( X( {@oq *V(a }r }s *0!{r {s sç{r þ(I+*V(a }u }v *0 {u {v sä (J+þof *(g *0 sw Œ(*:(x }y *0˜{y (Ç (È sz *:({ }G*0{Gþo| *({ *0*V(} }H}I*0%rÚ#ps  (K+{H{Iþ(E+*r(~ }J}K}L*0 aœ(  (  {LoL+¥* {J{Ksä (M+ rP$ps  -rp+rr$pþ(N+*r(~ }M}N}O*0P(  (  {Oo&+¥ì {M{Nsä ('+ rv$psþ  þ((+*r( }P}Q}R*0až(C (A (? (D {Ro&+¥ì{P{Qsä ('+rž$psþ þ((+*r(~ }S}T}U*0 aŸ(  (  {Uo1+¥ú {S{Tsä (2+ rÎ$ps  -rp+rr$pþ(3+*(‚ *0 ( (K þ*(ƒ *0(„ *(T *0s& z(‚ *0 ( (K þ*(… *0(  *(T *0s& z(† *0o¼ rQpo» *(† *0o¼ rQpo» *(† *0o¼ rQpo» *(† *0o¼ rQpo» *(† *0o¼ rQpo» *²(‡ }V}W}X}Y}Z*0 ²¦u„,"t„ {” {Y(Á(á +-tƒ {“ {Z(ˆ ,{Z(‰ + -*(Î {XoO+¥/{V{Wsä (P+rô$psŠ XXþ(Q+*:(Œ }[*0¨{[(Ó -$þ+,{[(W rp*{[(Ó , 0þþ+, 9þþ+,{[(W rr$ps (Ì *{[(Ó ,{[(W rÛ%ps (Ì *s *(} *0 oŽ *0k§s €\s €]sF €^(X s €_s €`sF €asF €bsF €cs‘ €ds’ €erß%p€fr&p€grU&psÅ(8r[&ps“ r‡&psÇ(6r&ps“ r½&psÉ(8rÏ&ps“ r?'psË(6rU'ps“ r'psÍ(8r›'ps“ rh(psÏ(6rx(ps“ rŒ(psÑ(6r¤(ps“ r)p(«(:r.)ps“ rÝ)p(ª(:rï)ps“ rM*psÓ(8r_*ps“ rJ+psÕ(8r_*ps“ r^+ps×(>rt+ps“ (” (• (• (• (• (• (• (• (• (• (• (• (• €h(³sÙr ,p(4( ÞIt r-,ps× (Õ (+(– , (Î +oÞ oØ &(+ Þ&* I0 (— s˜ *0(™ ((š *0(¨r_,p(— s˜ (Ì r±p(Ì s& z0_©r,p(› ,Or,p(œ r‘,p(œ X(^ Y(^ (²  (² YX( (á **0~ð*0~ñ*0~ò*0+ý0 =þ(%*0Å«("(RE !'=CIv|‚ˆŽ”š äð%8DJQr•,ps& z(Ý dsž þ(&*(i*(— s˜ ((o*(g*(Y*(— s˜ ( - r¡,ps& z(Î (m*(e*(c*(a*(S*(_*(]*(W*(Ý dsž (Ý {{YXr±,p(Ÿ (  þ((*=8¢þÿÿ(¡ ((· =8„þÿÿ(— s˜ (M*(k*(,=8Zþÿÿ=8Nþÿÿ([*(R+*(U*0 *('*0D¬("(RE Jn’¶âèrµ,ps& zo¢ s£ (Q*(¡ ((· (¤ (  *+„(— s˜ (  *8`ÿÿÿ(— s˜ (  *8<ÿÿÿ(— s˜ (  *8ÿÿÿ(— s˜ (  (* *8ìþÿÿ(U*(— s˜ (  (¥ *8¼þÿÿ0 ()*0†­("(RE Xˆ¬Øü &rÃ,ps& zo¢ s£ (O*(— s˜ (  () rÍ,p(  8rÿÿÿ(¡ ((· (¤ (  8Bÿÿÿ(— s˜ (  8ÿÿÿ(— s˜ (  (* 8òþÿÿ(— s˜ (  8Îþÿÿ(— s˜ (  8ªþÿÿ(U*(— s˜ (  (¥ 8zþÿÿ0  þ(+*0î®("(RE )Dq’rÑ,ps& z(— s˜ (   +­(— s˜ (  þo¢ *(¡ ((· (¤ (   8eÿÿÿ(— s˜ (   8Dÿÿÿrç,ps& z(— s˜ (  (¥  8ÿÿÿ0 (-*0~("(RE 56AIr-ps& z(-+»(¡ ((· +¡*r/-ps& z+8‚ÿÿÿ0 €ó~ó&*0V …º% Ÿ;%Ðj(¦ ¤º% Ÿ;%Ðk(¦ ¤º% Ÿ;%Ðl(¦ ¤º% Ÿ;%Ðm(¦ ¤º% Ÿ;%Ðn(¦ ¤º% Ÿ;%Ðo(¦ ¤º% Ÿ;%Ðp(¦ ¤º% Ÿ;%Ðq(¦ ¤º% Ÿ;%Ðr(¦ ¤º% Ÿ;%Ðs(¦ ¤º% Ÿ;%Ðt(¦ ¤º% Ÿ;%Ðu(¦ ¤º% Ÿ;%Ðv(¦ ¤º% Ÿ;%Ðw(¦ ¤º% Ÿ;%Ðx(¦ ¤º% Ÿ;%Ðy(¦ ¤º% Ÿ;%Ðz(¦ ¤º% Ÿ;%Ð{(¦ ¤º% Ÿ;%Ð|(¦ ¤º% Ÿ;%Ð}(¦ ¤º% Ÿ;%Ð~(¦ ¤º% Ÿ;%Ð(¦ ¤º% Ÿ;%Ѐ(¦ ¤º% Ÿ;%Ð(¦ ¤º% Ÿ;%Ђ(¦ ¤º% Ÿ;%Ѓ(¦ ¤º% Ÿ;%Є(¦ ¤º% Ÿ;%Ð…(¦ ¤º% Ÿ;%І(¦ ¤º% Ÿ;%Ї(¦ ¤º% Ÿ;%Ј(¦ ¤º% Ÿ;%Љ(¦ ¤º% Ÿ;%Њ(¦ ¤º%! Ÿ;%Ћ(¦ ¤º%" Ÿ;%ÐŒ(¦ ¤º%# Ÿ;%Ð(¦ ¤º%$ Ÿ;%ÐŽ(¦ ¤º%% Ÿ;%Ð(¦ ¤º%& Ÿ;%Ð(¦ ¤º%' Ÿ;%Б(¦ ¤º%( Ÿ;%Ð’(¦ ¤º%) Ÿ;%Г(¦ ¤º%* Ÿ;%Д(¦ ¤º%+ Ÿ;%Е(¦ ¤º%, Ÿ;%Ж(¦ ¤º%- Ÿ;%З(¦ ¤º%. Ÿ;%И(¦ ¤º%/ Ÿ;%Й(¦ ¤º%0 Ÿ;%К(¦ ¤º%1 Ÿ;%Л(¦ ¤º%2 Ÿ;%М(¦ ¤º%3 Ÿ;%Ð(¦ ¤º%4 Ÿ;%О(¦ ¤º%5 Ÿ;%П(¦ ¤º%6 Ÿ;%Р(¦ ¤º%7 Ÿ;%С(¦ ¤º%8 Ÿ;%Т(¦ ¤º%9 Ÿ;%У(¦ ¤º%: Ÿ;%Ф(¦ ¤º%; Ÿ;%Ð¥(¦ ¤º%< Ÿ;%Ц(¦ ¤º%= Ÿ;%Ч(¦ ¤º%> Ÿ;%Ш(¦ ¤º%? Ÿ;%Щ(¦ ¤º%@ Ÿ;%Ъ(¦ ¤º%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 Ÿ;%ÐÄ(¦ ¤º%[ Ÿ;%ÐÅ(¦ ¤º%\ Ÿ;%ÐÆ(¦ ¤º%] Ÿ;%ÐÇ(¦ ¤º%^ Ÿ;%ÐÈ(¦ ¤º%_ Ÿ;%ÐÉ(¦ ¤º%` Ÿ;%ÐÊ(¦ ¤º%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 Ÿ;%Ðä(¦ ¤º%{ Ÿ;%Ðå(¦ ¤º%| Ÿ;%Ðæ(¦ ¤º%} Ÿ;%Ðç(¦ ¤º%~ Ÿ;%Ðè(¦ ¤º% Ÿ;%Ðé(¦ ¤º% € Ÿ;%Ðê(¦ ¤º% Ÿ;%Ðë(¦ ¤º% ‚ Ÿ;%Ðì(¦ ¤º% ƒ Ÿ;%Ðí(¦ ¤º% „ Ÿ;%Ðî(¦ ¤º€ð …;%Ðï(¦ €ñ( (!(T€ò*0Í´þ9Á{ý {ý @¨(qE)T¿**tA tA ( { {þ(S+*tBtB( {{( *tCtC( { {  (ò   (ñ   (ò   (ñ   ( ,* ( *tDtD( {  {   (ò   (ñ   (ò   (ñ   ( ,* ( *tEtE( {!{!( *Y**0°µ¥?þ9Ÿ{ý {ý @†(qE%I¬*tA tA { {þ(S+*tBtB{{( *tCtC{{ (ò  (ñ   (ò   (ñ    ( ,*  ( *tDtD{ {  (ò  (ñ   (ò   (ñ    ( ,*  ( *tEtE{!{!( *Y**0ö (qE&UY]aeimqv{€…Šå;tA  ¹y7ž{(T+bcXXX *tB  ¹y7ž{ , ( +bcXXX * * * * * * * * * * * * * *tC ¹y7ž{(ò (ñ  , ( +bX( abcXXX *tD ¹y7ž{ (ò (ñ  , ( +bX( abcXXX *tE  ¹y7ž {! , ( +bcXXX *0¥·u? 9•{ý {ý @~(qE'K©*tA tA {{þ(U+*tBtB{{( *tCtC{ {  (ò   (ñ   (ò   (ñ   ( ,  ( **tDtD{  {   (ò   (ñ   (ò   (ñ   ( ,  ( **tEtE{!{!( ***0¹- (¹E  $).38=BGLQV * * * * * * * * * * * * * * * * * * * *0(qE "%(+********* * * * * *****0ãE%+17=CIOU[agmsy…‹YE r]-ps& z(“*(·*(µ*(³*(±*(¯*(­*(«*(©*(§*(¥*(£*(¡*(Ÿ*(*(›*(™*(—*(•*(‘*04E $*06<BHNTZ`flrx~„Š–œ¢¨®´r—-ps& z(ß*(Ý*(Û*(Û*(Ù*(Ù*(×*(×*(×*(×*(×*(×*(Õ*(Õ*(Ó*(Ó*(Ñ*(Ï*(Ï*(Í*(Í*(Ë*(Ë*(É*(Ç*(Ç*(Ç*(Å*(Å*0*0*0À(qE %+17=CIOU[agrí-p*rù-p*r.p*r .p*r+.p*r7.p*rA.p*rM.p*r_.p*ri.p*ry.p*r….p*r.p*r™.p*r¡.p*r­.p*r».p*rÅ.p*0ϸ(qE')+-/13579;=?ATgtA {ŒÕ*tB {Œ/**************tC {Œß*tD { Œß*tE{!Œ/*0~w*0~x*0~y*0~z*0,*0~{*0~|*0~}*0~~*0~*0y%së¤%sï¤%sñ¤%só¤%sõ¤%s÷¤%sý¤%s¤%s¤% s ¤% s¤% s¤% s¤% s¤%s¤%s!¤%s#¤%s%¤%s'¤%s)¤%s+¤%s-¤%s/¤%s1¤%s3¤%s5¤%s7¤%s9¤%s;¤*0Pºs= (Fs?sA(A(B(C(E(<(=(>(?(Ds¨ *0(G(V+*0(G(V+þ(+*0 €€~€&*0–sL€þsL€ÿsL€sL€sL€sL€sL€ sL€ sL€ sL€ sL€ sL€ sL€ *0( }ý*0sƒ*0 (qþ*0s*0 (qþ*0s*0 (qþ*0~ *0 (qþ*0~ *0 (q þ*0~*0 (q þ*0~*0 (q þ*0~*0 (q þ*0~*0 (q þ*0~*0 (qþ*0~*0 (qþ*0~*0 (qþ*0~*0 (qþ*0~*0 (qþ*0~ÿ*0 (qþ*0~þ*0 (qþ*0s}*0 (qþ*0s{*0 (qþ*0{ý*0rÑ.ps© (W+o« *0þ, þ(0*þ,**0¥?þ(s*0*»¥? þ, þ(1*¥?þ,**0þ, (2**0 ( (v*0þ, þ(3*þþ*0O¼þ9=þ92{ý {ý @(qE$Hv¤*tA tA { {þ(X+*tBtB{{( *tCtC{{  þ(Y+*tD tD  {  {   þ(Y+*tE tE  {! {!( ***þþ*0»u? , þ(y**0(L}*0{*0(L}*0{*0(L}*0{*0(L} *0{ *0(L}!*0{!*0( }"*0 {"{*0( }#*0 {#{*0( }$*0 {${*0( }%*0 {%{ *0( }&*0 {&{!*0ès€(s€)s€*s€+s€,s€-s€.s€/s€0 s€1 s€2 s€3 s€4 s€5s€6s€7s€8s€9s€:s€;*0( }'*0~;*0 (¹þ*0~:*0 (¹þ*0~9*0 (¹þ*0~8*0 (¹þ*0~7*0 (¹þ*0~6*0 (¹þ*0~5*0 (¹ þ*0~4*0 (¹ þ*0~3*0 (¹ þ*0~2*0 (¹ þ*0~1*0 (¹ þ*0~0*0 (¹þ*0~/*0 (¹þ*0~.*0 (¹þ*0~-*0 (¹þ*0~,*0 (¹þ*0~+*0 (¹þ*0~**0 (¹þ*0~)*0 (¹þ*0~(*0 (¹þ*0{'*0rÑ.ps¯ (Z+o° *01(þ, þ,{' {' 3*Y**þ,**0¥K(»*0B¾¥K þ,%¥Kþ,{' {' 3*Y**¥Kþ,**0þ,(4**0 ( (¾*0.¾þ,uK ,{' {' þ**þþ*0*(þ,þ,{' {' þ**þþ*0¿uK ,(Á**0 sÄ€QsÄ€RsÄ€SsÄ€TsÄ€UsÄ€VsÄ€WsÄ€XsÄ€Y sÄ€Z sÄ€[ sÄ€\ sÄ€] sÄ€^*0( }P*0~^*0 (á þ*0~]*0 (á þ*0~\*0 (á þ*0~[*0 (á þ*0~Z*0 (á þ*0~Y*0 (áþ*0~X*0 (áþ*0~W*0 (áþ*0~V*0 (áþ*0~U*0 (áþ*0~T*0 (áþ*0~S*0 (áþ*0~R*0 (áþ*0~Q*0 (áþ*0{P*0rÑ.ps± ([+o² *01(þ, þ,{P {P 3*Y**þ,**0¥M(ã*0BÁ¥M þ,%¥Mþ,{P {P 3*Y**¥Mþ,**0Ž-þ9‚ (áE  $).38 * * * * * * * * * * * * * **0 ( (æ*0.Áþ,uM ,{P {P þ**þþ*0*(þ,þ,{P {P þ**þþ*0ÂuM ,(é**(³ *0+Ão[(+ ,¥+ Œ}s‰zŒ*(´ *0 þoµ *(³ *0 TÆo[(\+ o[(]+ o[(^+ sí(¶ (· (¸ (X s(_+Œ}*(³ *0o[(\+Œß*(³ *0oZ(º rps£ Œß*(³ *0 (» Œ?*(³ *0(Èo[(`+ o[(]+ (¼ Œ?*:(½ }m*0{ms¾ *V(¿ }n}o*0 F{{‚{nsù{o(a+(b+{ƒ{„{…{†s*(³ *0(Éo[¥Õ o[(c+ sûŒ*:(Á }p*0{ps *V(¿ }q}r*0 F{{‚{ƒ{qsÿ{r(d+(e+{„{…{†s*(³ *0(Êo[¥/ o[(c+ sŒ*:(¿ }s*0 6{{‚{ƒ{„{…{s(F+{†s*(³ *0Ëo[(c+ sŒ*(à *0 (sÄ *:(¿ }t*0 J{{‚{ƒ{„s {t(f+(¸ (Å (g+{…{†s*(³ *0Ëo[(c+ s Œ*(à *0 (›sÄ *:(¿ }u*0 J{{‚{ƒ{„s{u(f+(¸ (Å (g+{…{†s*(³ *0Ëo[(c+ sŒ*(à *0 (™sÄ *:(¿ }v*0 J{{‚{ƒ{„s{v(f+(¸ (Å (g+{…{†s*(³ *0Ëo[(c+ sŒ*(³ *0(Êo[¥/ o[(c+ (Y Œ*(³ *0 (X Œ*(³ *0(Ío[(h+ o[(^+ (Æ ŒA*(³ *0Îo[(h+ (Ç (Æ ŒA*(³ *0BÐo[¥/ o[¥ &o[(i+ o[¥ &sÈ ŒB*(³ *0Œ *(³ *0Œ *(³ *0Œ *(³ *0Œ *(³ *0(Òo[(j+ o[(i+ (É ŒC*(³ *0Óo[(j+ (Ê (É ŒC*(³ *0;Ôo[(c+ o[¥Õ o[(\+ (Ë (ˆŒ~*(³ *0(Êo[¥/ o[(c+ (Y Œ*(³ *0Ëo[(c+ rß.p(Y Œ*(³ *0 (X Œ*(³ *0ŒÕ*(³ *0¨o[¥/ (á ŒÕ*(Ì *0 ¨(Í *(Î *0(5*(Ï *0(;*0×T;%Ðô(¦ €w;%Ðõ(¦ €xZ;%Ðö(¦ €y,;%Ð÷(¦ €z ¤;%Ðø(¦ €{,;%Ðù(¦ €|;%Ðú(¦ €};%Ðû(¦ €~,;%Ðü(¦ €*0(Ð (Ñ sÒ *0±Ö( {ƒ {ƒ  (Ó /*1*( {„{„(Ô /*1*( {…{…  (Õ /*1*( {† {†   þ(Ö *0š×1*{ƒ {ƒ (Ó /*1*{„{„(Ô / * 1 *{…{…(Õ /*1*{† {†   þ(Ö *0õØu} 9å{ { (ò (ñ (ò (ñ  ( , ( +9˜{‚{‚(× 9w{ƒ {ƒ   (Ø ,Y{„ {„   (Ù ,;{… {… (Ú ,{†{†þ(Û *******09Ùu„, t„{”*tƒ {“ r±pr±p(Ì (Ì *0r.ps× (+(HoØ &*0yÛr.ps× (+r±,pŒG,+ rë.psÜ zŽi / Y2#£(H¤/XX3Ý (Ý oØ &*0(r.ps× (+r÷.p(k+(Ý oØ &*0N(ŸE%rû.psÔ (+&*r/psÔ (+&*r/psÔ (+&*0±Þ( {¢ {¢  (ß /*1*( {£{£(Õ /*1*( {¤{¤  (à /*1*( {¥{¥þ(Õ *0¤ß¥Žþ9“{¢ {¢ (ß /*1*{£{£(Õ / * 1 *{¤{¤(à /*1*{¥{¥þ(Õ **0 (á , þ(â *-*(ã *0=¨rß.p( - (ä þ+,r#/pså (l+oç s& z*0Ðìs÷{„(m+ ¥N(n+ sùsû¥O(o+(5+ o o˜ ,0 o ( sýrk/ps (6+oØ &+ÈÞ uE, oœ &Ü&Ü&(p+( sÿ{‚(q+rß.p(X (Y (F+  ¥êsê   s   s{†(r+¥P(s+ s {†(t+¥êsê  ¥Qoë o˜ 9Áoì { ¥Soí o˜ ,poî uƒ,@tƒ{“ (ä - r«/pså (l+oç s& z+¥t„{”(P8‡ÿÿÿÞuE, oœ &Ü&Ü&83ÿÿÿÞuE, oœ &Ü&Ü&{…(X ( (Ú , rÝ/ps& z{ƒ¥ýoï o˜ ,oð („ (P+ÜÞuE, oœ &Ü&Ü& s  (u+ {…sì*4@=}f~ä:Ò j)“0b`*0d*0  ÿÿ_*0NïuŠ,r70psÔ (+&*t‰ {› {š rE0psñ (v+s)(w+&*0eY*0*0/ Xe(ó *(ô *0 j bn`*0 n bn`*0" d!ÿÿÿÿ_i!ÿÿÿÿ_isõ *0?ñ(ö (÷ ,. (ø (÷  (ù (x+&+Â*0!õsû sü   (y+*0"÷sý (z+sÿ ({+( *0ù ès s *0Süs o o˜ ,o  ( ( o +Ü ÞuE, oœ &Ü&Ü&*(60Dýu„,t„ {Æ{”þo  *tƒ {“ {Ïo  eY*00ÿrc0ps  (Õ (|+(  o  &(  ( *0s *0x( -s ( ( ( * ( ( s ( (}+(~+( (+( ( ( ,+‰*0sF ( s {Ä ¥o o˜ 9o {Øo ¥o o˜ ,6o  {Õ £o(€+    (++Á ÞuE, oœ &Ü&Ü &8gÿÿÿÞuE, oœ &Ü&Ü&( (‚+(ƒ+ (Ó  s *ZDž(žÆ0&(„+ (  (! , +Ü*0P( ,> ( ( (" s§ (…+ ($ ,+»*þo% *0p d  ÿÿ_ {Õ£o Y(^ (² YXSY2!X£S¤SXX3ß*0d d  ÿÿ_ {Õ£o ŽiY YXSY2!X£S¤SXX3ß*0d  ÿÿ_ X b`*0V (X ut,tt(& {Å£/*tu(' r±p{Í£/r±p(Ì (Ì *0² (E(„rt {¹ ru0psó (†+oô &*tž {º r‹0ps( (‡+{Å{Ö£S£/{Õ£o(ˆ+&*r±0psÔ (+&*rÁ0psÔ (+&*0 s* *0:,5 (² (X ut,tt(& o+ þ(, **0sáþ(‰+*0(o så(Š+þ(‹+*0-(o  s/ sç(Œ+¥{s0 *0ð£S (X uu,*tt(& ŽiYYXS Y 2"  X£S¤S X  X3Þ(€+s1 o2 {Øo   ¥o   o˜ ,  o b` s3 o4 &+× Þ uE  ,  oœ &Ü&Ü &*¤.Ò0s sù(+*0úu‰9²t‰ u‰9žt‰ {› {› {š /* 1*u‰,&t‰{š(ŸE<?rÓ0psþ (Õ (Ž+{Í£/(+&( X( ***rÓ0psþ (Õ (Ž+{Í£/(+&( X( *0 j£ (! s6 (! (E‚8(E3ÝÿÿÿÝÿÿÿ+Û( (-r1psÔ (Õ (+&+8Ð(7 (t8¤(! tž(EUÿÿÿUÿÿÿ8Pÿÿÿ(7 +¤tž  {º {º ry1psþ  (Õ  (Ž+{Í£/(+&( X(   /+¤*0 (E**0 (E**0xIs8 ( s—{¥(+ {£(F+ ( {¢rÃ1p s9 rÇ1p s9 (: (; (; (‘+ s™{¥(’+{¤(“+s3sCsX{ÏrÃ1po   {ÏrÇ1po   {Ïrß.po   rÍ1psÔ  (Õ  (+&(Õ o= s(”+(•+(–+  s©(—+s«s­(˜+¥s> s¯s±s³s·s¹s¿sÁsÅsÉsÑsß(™+(br2psÔ  (Õ  (+&(Õ o= sé(š+ së (›+!(œ+s? #!#sí(+sï#(@ $$¥‚(ž+(Ÿ+"(br-2psÔ  (Õ  (+&(Õ o= "sq%%sñ!( +só (¡+&%sõ(¢+'(br_2psÔ  (Õ  (+&(Õ o=  sû(£+)s‰*s+sã ,%{à--¥o ..o˜ 9 .o 0r¡2psÔ  (Õ  (+&(Õ o= %{â0£y11¥{oA 22o˜ 92oB 40j b4n`5)4oC 66{襄77oD 88o˜ 9"8oE ::<<(F <(G sH ;;(I =;(J >,,( X( >d> ÿÿ_(\??9»?@@(² A'0n bAn`oK BB9ŽBCC(² D>(jEDj bEn`F=¥o GGo˜ ,-Go II 3+5F(‘+Ù*FI(Š+ÊHÞGuEJJ, Joœ &Ü&ÜH&8Þþÿÿ8Øþÿÿ8Òþÿÿ9Þ8uEJJ, Joœ &Ü&Ü9&8gþÿÿ3Þ2uEJJ, Joœ &Ü&Ü3&8éýÿÿ/Þ.uEJJ, Joœ &Ü&Ü/&*+sL (((M *((N +(br¥2psÔ  (Õ  (+&(Õ o=  &*!s(¤+LsjML+Ms(¥+MK(brÝ2psÔ  (Õ  (+&(Õ o= sã ,sã N %'K,NsPP%{à(¦+QsQ(§+(¨+sQ(©+(ª+sP OO(Q RO(R S(br3psÔ  (Õ  (+&(Õ o= 'sUU%{à(«+(¬+T(br=3psÔ  (Õ  (+&(Õ o= ,( 12ra3psó V(Õ V(+,( oô &(Õ o= +N( 12r•3psó V(Õ V(+N( oô &(Õ o= +"(­+Ws(®+(¯+X RSTWXsS oT &Xs#[[s%ZZs'YWŒŒ,+ rë.psÜ zWŽi00\]D0YAAD2'\DYWD£yoU ¤DXDDAX3Ù]\SRT{ÏrÇ1po   sV sW *AdŸ;ÚÛ3˜ž6B^0{*0{‚*0{ƒ*0{„*0{…*0{†*04( }}‚}ƒ}„}…}†*0ºJþ9¦þ9›( { { (ò (ñ  (ò  (ñ ( ,+ (  /*1*( {‚ {‚   (X /*1*(E**þ,**0¥}(€*0ºK¥} þ9š¥}þ9Š{ { (ò (ñ  (ò  (ñ ( ,+ (  /*1*{‚ {‚   (X /*(F**¥}þ,**0ÚLþ9Î ¹y7ž{†(Y bcXXX ¹y7ž{…(Z bcXXX ¹y7ž{„([ bcXXX ¹y7ž{ƒ(\ bcXXX ¹y7ž{‚(] bcXXX ¹y7ž{ (ò (ñ , ( +bX ( abcXXX **0 ( (ƒ*0þ, (G*þþ*0žMþ9Œþ9{ { (Y+,h{‚{‚(°+,S{ƒ{ƒ(±+,>{„{„(²+,){…{…(³+,{†{†þ(´+*******þþ*0Ãu} , þ(†**0 s‰*0( }‡}ˆ}‰*0{‡*0{ˆ*0{‰*0&*0rÑ.ps^ (µ+o_ *0“Nþ9þ9t&  ( {‡{‡ (Õ /*1*( {ˆ{ˆ(S+/*1*( {‰{‰þ(¶+**þ,**0¥~þ(*0“O¥~ þ9s¥~þ,f&  {‡{‡(Õ / * 1 *{ˆ{ˆ(S+/*1*{‰{‰þ(¶+**¥~þ,**0dPþ,[ &  ¹y7ž{‰(·+bcXXX ¹y7ž{ˆ(T+bcXXX ¹y7ž{‡(Z bcXXX **0 ( (’*0hQþ,Yu~ ,M&  {‡ {‡ (Ú ,+{ˆ{ˆ(U+,{‰{‰þ(¸+****þþ*0[Rþ,Lþ,D&  {‡{‡(³+,){ˆ{ˆ(X+,{‰{‰þ(¹+****þþ*0Óu~ , þ(•**0"s˜€‹s˜€Œs˜€*0( }Š*0~*0 (Ÿþ*0~Œ*0 (Ÿþ*0~‹*0 (Ÿþ*0{Š*0rÑ.ps` (º+oa *01(þ, þ,{Š {Š 3*Y**þ,**0¥(¡*0BS¥ þ,%¥þ,{Š {Š 3*Y**¥þ,**0.-þ,% (ŸE * * **0 ( (¤*0.Sþ,u ,{Š {Š þ**þþ*0*(þ,þ,{Š {Š þ**þþ*0Tu ,(§**0( *0sº*0 u„þ*0s¸*0 uƒþ*0U u„,+*0rÑ.psb (»+oc *0£Vþ9þ9„u„,+ u„,+ 3Zuƒ,'tƒ tƒ ( {“ {“( *t„t„( {”{”( *Y**þ,**0¥(°*0¨W¥ þ9ˆ¥þ9xu„,+ u„,+ 3Nuƒ,"tƒ tƒ {“{“( *t„t„{”{”( *Y**¥þ,**0qXþ,h uƒ,/tƒ  ¹y7ž{“ , ( +bcXXX *t„  ¹y7ž {” , ( +bcXXX **0 ( (³*0—Wþ9…u 9vu„,+ u„,+ 3Nuƒ,"tƒ tƒ {“{“( *t„t„{”{”( ***þþ*0‘Yþ9þ9tu„,+ u„,+ 3Luƒ, tƒ tƒ {“ {“( *t„t„{”{”( ***þþ*0Uu ,(¶**0(©}“*0{“*0(©}”*0{”*0( }•*0 {•{“*0( }–*0 {–{”*0 sÓ€—*0( *0~—*0 uŠþ*0sÐ*0 u‰þ*0Z uŠ,+*0rÑ.psd (¼+oe *0»[þ9§þ9œ  uŠ,+   uŠ,+ 3ru‰,ht‰ t‰ ( {š {š(£/*1*( {› {›  /* þ**Y**þ,**0¥‡(È*0À\¥‡ þ9 ¥‡þ9  uŠ,+   uŠ,+ 3fu‰,\t‰ t‰ {š{š(£/*1* {›{›  /* þ**Y**¥‡þ,**0R]þ,I u‰,;t‰  ¹y7ž{›bcXXX ¹y7ž{š(¤bcXXX * **0 ( (Ë*0‘^þ9u‡ 9puŠ,+ uŠ,+ 3Hu‰,>t‰ t‰ {š{š(¦, {›{›þ*****þþ*0~_þ9lþ,duŠ,+ uŠ,+ 3<u‰,2t‰ t‰ {š {š(§,{› {›þ*****þþ*0Zu‡ ,(Î**0(Á}š}›*0{š*0{›*0(Á*0( }œ*0 {œ{š*0 {œ{›*0( }*0 sÙ*0$( }ž}Ÿ} }¡*0{ž*0{Ÿ*0{ *0{¡*0&*0rÑ.psf (½+og *0Æ`þ9²þ9§&  ( {ž{ž( /*1*( {Ÿ{Ÿ (Ê/*1*( { {   (h /*1*( {¡{¡þ(¶+**þ,**0¥þ(à*0Áa¥ þ9¡¥þ9‘&  {ž{ž( / * 1 *{Ÿ{Ÿ(Ê/*1*{ {   (h /*1*{¡{¡þ(¶+**¥þ,**0‹bþ9 &  ¹y7ž{¡(·+bcXXX ¹y7ž{ (i bcXXX ¹y7ž{Ÿ(ËbcXXX ¹y7ž{ž , ( +bcXXX **0 ( (ã*0ˆcþ9vu ,j&  {ž{ž( ,O{Ÿ {Ÿ (Í,3{ { (j ,{¡{¡þ(¸+*****þþ*0pdþ,aþ,Y&  {ž{ž( ,>{Ÿ{Ÿ(Î,){ { (¾+,{¡{¡þ(¹+*****þþ*0eu , þ(æ**0{¢*0{£*0{¤*0{¥*0$( }¢}£}¤}¥*0"þ,þ, (M**þ,**0¥Ž(í*0(f¥Ž þ, (N*¥Žþ,**0y-þ,p ¹y7ž{¥(Z bcXXX ¹y7ž{¤(k bcXXX ¹y7ž{£(Z bcXXX ¹y7ž{¢(l bcXXX **0 ( (ð*0gþ9{uŽ ,o{¢ {¢ (m ,U{£ {£ (Ú ,9{¤{¤(n ,{¥ {¥ þ(Ú *****þþ*0jþ,[þ,S{¢{¢(¿+,>{£{£(³+,){¤{¤(À+,{¥{¥þ(³+*****þþ*0fuŽ , þ(ó**:(o }¦*0(h(p (q  '{¦Y(Äs9 *(r *0sõþ(Á+*(‚ *0 ( (K þ*(s *0(t *(T *0s& z(… *0(  *:(u }§*0{§(ä ,(¬*(ª*:(v }¨*0-{¨(ä ,(á ***’(w }©}ª}«}¬*0i{‡ {ˆ {‰ {¬{ªs(Â+ ( ,0 (Î {©(á ,{©(â ++{«(Ã+(Ø*r(x }­}®}¯*00Ð(y (z {­{®{¯sþ(Ä+*({ *0(y *V(| }°}±*0 {°{±(Os9 *0s€³s€´*0( }²*0~´*0 (þ*0~³*0 (þ*0s#*0 (þ*0s!*0 (þ*0{²*0rÑ.ps} (Å+o~ *0Ájþ9­þ9¢{² {² @‰(E6*t t ( {¹ {¹/*þ*tžtž( {º{º/*þ*Y**þ,**0¥›(*0Æk¥› þ9¦¥›þ9–{² {² @}(E1*t t {¹{¹/*þ*tžtž{º{º/*þ*Y**¥›þ,**0nlþ,e (E @Dt  ¹y7ž{¹bcXXX *tž  ¹y7ž{ºbcXXX * * **0 ( (*0mþ9}u› ,q{² {² 3](E!*t t {¹{¹þ*tžtž{º{ºþ***þþ*0†nþ,wþ,o{² {² 3[(E*t t {¹ {¹þ*tžtž{º{ºþ***þþ*0ou› ,(**0(}¹*0{¹*0(}º*0{º*0( }»*0 {»{¹*0( }¼*0 {¼{º*( *0 (L*:(€ } *0{ { (‚ (ƒ („ *V(€ }… }† *0A{… (‡ (Æ+-+{… {… (‡ (‰ (Š {† þo‹ **V(Œ } }Ž *0!{Ž s { o (Ç+*V(’ }“ }” *0Mrþ¢ {” o• s– (— (˜ ,*{“ o™ {” oš *0Rt( &s7(È+ s9(É+}Ä(Ê+}Ås=(Ë+¥þ(Ì+}Æ*0{Å£/*0{Æþo  *0{Ä*(› *0 sœ *( *0(ž *(Ÿ *0(ž (  s¡ þ(Í+*0,}Ç}È}É}Ê}Ë(£ *0}{ÊYE++D+Vs;}È{Ç¥¦}É}Ê{È{É(Î+(Ï+þ*}É}È}Ê}Ë*06{ÊYE + +++}Ê}Ë*0*{ÊYE + +++**0{Ë*0 {Çs=*0rt( &sH(Ð+ sJ(É+}ÌsL(Ñ+(Ê+}ÍsN(Ò+(Ó+}ÎsR(Ë+¥þ(Ì+}Ï*0{Í£/*0{Σ‡*0{Ïþo  *0{Ì*(¦ *0u(t (§ sœ *( *0(ž *(s *0(t *(¨ *0(§ *(Ÿ *0(ž (  s¡ þ(Í+*0,}Ð}Ñ}Ò}Ó}Ô(£ *0}{ÓYE++D+VsP}Ñ{Ð¥¦}Ò}Ó{Ñ{Ò(Î+(Ï+þ*}Ò}Ñ}Ó}Ô*06{ÓYE + +++}Ó}Ô*0*{ÓYE + +++**0{Ô*0 {ÐsR*0{x( &s^(Ô+ s`(Õ+(Ö+}Õsb(×+(Ø+}Ösd(Ù+(Ó+}×sh(Ú+ ¥§(Û+}Ø*0{Õ£o*0{Ö£S*0{×£‡*0*y{Õ£o Ži þþ,*£S(^ *0{Ø*(© *0 sª *V(« }Ù}Ú*0 ƒ{(¬ (­ {  (Ü+ ŒG,+ rë.psÜ z ŽiSY20{Ú{Ù £(a¤SXX3Ð*:(® }Û*0(|(¬ (­ {Û{Æ{žþo  *(¯ *0|(¬ (­ {Ÿ*:(° }Ü*0-b(¬ (­ {ž {Ü( ,(^ **V(± }Ý}Þ*0){Ý{Æo  sf{Þ(Ý+s² *0( &s³ }ß*0<}{ßo´ ,{ßoµ +(Š+ {ß(¶ þo· *0&{ßo´ ,{ßoµ þ(¸ **01 {ßo¹ sº (» (¼ ,*þ(Š+*0{ß so¥¬þ(Þ+*(¾ *0'„ (¿ (À sÁ ( (à X*0M†( &su(ß+ sw(à+}às{(á+(â+}á(­+}â*0{à*0{áþ(Ä *0{â£y*(Å *0 sÆ *(Ç *0(È *(É *0‡(È (Ê sË þ(ã+*0,}ã}ä}å}æ}ç(Ì *0}{æYE++D+Vsy}ä{㥲}å}æ{ä{å(ä+(å+³*}å}ä}æ}ç*06{æYE + +++}æ}ç*0*{æYE + +++**0{ç*0 {ãs{*0( &sÍ }è*0>{èoÎ -{ès†sÏ oÐ +{èoÑ þ(Ò *0{èþoÓ *0 {襄*0&{èoÎ ,{èoÑ þ(Ô **0 ( &*0*0þ*0( &sÕ }é*0>{éoÖ -{éssÏ o× +{éoØ þ(Ò *0{éþoÙ *0 {饷*0 ( &*0*0þ*0( &sÚ }ê*0>{êoÛ -{ês”sÜ oÝ +{êoÞ þ(ß *06Š {êoà sá (â (ã ,¥»*þ(æ+*0{êþoå *0 ( &*0 þ(ç+*0þ*(è *0 rË3p(Ì *:(é }ë*0{ë(ª(ê (ë (Ø*:(ì }ì*0{ì(\,*þ(í *0L}í}î}ï}ð}ñ}ò}ó}ô }õ(î *0 Œ{ôYE +888,88A{î{Ì¥o }ò}ô{òo˜ ,H{òo }ð}ô{ðeY{ð(^ (è+sð }õ*}ð+«}ô{ò(é+}ò{í{Ä¥o }ó}ô{óo˜ ,`{óo }ñ}ô{ñ{ïs›{ï{Ø{ño (ê+(ë+sð }õ*}ñ+“}ô{ó(é+}ó}ô}õ*0v{ôYE ++;+$+ +++,}ô{ó(é++}ô{ò(é+}ô}õ*0E{ôYE ++++ +++*****0{õ*0 {í{î{ïs*:(ò }ó *0AŒ(ô (õ (ì+ (í+,*{ó (W (÷  þ(ø *:(ù }ú *0&Ž,! (û {ú (ü sý (þ **:(ÿ }ø*0, {ø(² o% **:( }ù*0=‘( ( s {ù {ù(g¥s> *( *0b`*:( }ú*0{ú{Æþo  *V( }û}ü*04-{ü{û{Öd£S(¸ ,* ÿÿ_ þþ*V( }ý}þ*0 †Ûr.ps× (+r±,pŒo,+ rë.psÜ zŽi / Y2/{ý{þ£S(k¤/XX3Ñ (Ý þoØ *r( }ÿ}}*0 arÙ3ps  (î+{ÿ{Å{{Öd£S£/{{(h{{(iþ(ï+*V(  }}*0%{rý3ps  (ð+{þ(ñ+*:( }*0{sµ(Œ+*r( }}}*0 {{{(l*( *0 (U*r( }} } *0 L’(7 (! {{Í£/ { r4ps (ò+s»{ þ(ó+*V( } } *0{ { s½(ô+*r( } }}*0 :“,$ { {{(B (l*r94psÔ þ(+*V( }}*0@”{{Å£/ -* (² {rG4ps (õ+þ(ö+*:( }*0{sÃ(÷+*²( }}}}}*0l–( ( ( ( {ri4ps (ø+{{{{ (ù+þ(ú+*’(" }}}}*0 ({{{{sÇ(û+*(# *0#˜($ (% (& (' s( *() *0- rMp(¹ ¥R(º *V(* }+ }, *0 ›(- (. (/ (0 (1 (2 (3 (4 (5 sË(ü+ (ý+(þ+(ÿ+(+(+(+(+{, rø4psÔ (+&{, r*5psÔ (+&{, rÓps6 (+{+ (+&{, r>5ps× (+r÷.psÍ(+(Ê+(Ý oØ &{, rø4psÔ þ(+*:(g }*0{s8 Œ*V(g }9 }: *0{9 {: s; Œ*r(g }< }= }> *0{< {= {> s? ŒÛ*’(@ }A }B }C }D *0„œ{D  {C  {B (- (. (/ (0 (1 (2 (3 (4 (5 {A (+ sE sF þoG *V(H }(})*0h{(d ÿÿ_(\ ,G (² (X uu,(I *tt(& {){({Ø o þ( +*(I *:(J }**0{*þ(K *(L *0žb` sÛ*V(M }+},*08{+{,sÙsÝ{+{Øo ( +( +( +*V(N }-}.*0 ${.{-d ÿÿ_(\(n*(O *0 þ(¶ *:(P }/*0 %sã{/d ÿÿ_(\þ( +*r(  }0}1}2*0GŸ{0d ÿÿ_(\ ,* {1(² 3(² {2(joR **(S *0b`*(T *0 þ(+*r(U }3}4}5*0 Ÿ {5(@ (V :†{5{5(@ (W (X {3{4(p ¥o o˜ ,$o {3{4 (qoY &+Ô ÞuE, oœ &Ü&Ü**R0‚:(J }6*0{6þ(+*:([ }7*0{7{áþ(Ä *(\ *0 j bn`*r(] }8}9}:*0[¢([ (^ (_ {8{9{:{â£y(q (` ,*{:{á (Ä (^ *²(] };}<}=}>}?*0 a£{={?(…-J{={?(‚{;{?(i Ži1{;{<{>(r***r(a }@}A}B*0 1¤(b (c {@{A{Bs÷(+*r(d }C}D}E*0 ?¥{C{E{D(& ($ ¥s> s3 (e (f (s*:(g }F*0{Fsh *(i *09¨ (j (k sl (m (n sý¥þ(+*0L}G}H}I}J}K}L}M}N }O(o *0 {NYE +8|+g8Ó8â{H¥»op }M}N{Mo˜ ,C{Moq }J}N{J{Gsh }O*!}J+°}N{M(+}Msÿ}K{I{饷}L}N{K{L(+(+å*}L}K}N}O*0[{NYE ++$+ + +++}N{M(+}N}O*0<{NYE +++ +++****0{O*0 '{G{H{I!s*V(r }P}Q*0‡«(s (t {Q(k{P(’ op o˜ ,- oq {Q(l-sh ou &+Î+ËÞ uE, oœ &Ü&Ü*1:kV(v }R}S*0+¬{Sj bn` {R(m s3 þ(+*0<}T}U}V}W}X}Y}Z(w *0‰{YYE++P+b{T{Us }W{V¥{}X}Y{W{X(+(+ç*}X}W}Y}Z*06{YYE + +++}Y}Z*0*{YYE + +++**0{Z*0 {T{U{Vs *:(x }[*0{[£(! (v*:(x }\*0{\£(! (w*0d(y }]}^}_}`}a}b}c}d }e }f }g }h*0ì­{d{â£y {](z (Â(s6 (+ {_{a{fs (+(s {襄 oD o˜ 9oE (F (G sH (I  (J  {_{Ö d£S {_ d ÿÿ_(\  :û ¥o   o˜ 9¹ o {b{_{Ö d£S(¸ -B d{^{g{h{_{× d£‡((u+‡{`3<{^{g{h{_{× d£‡((u8Aÿÿÿ8;ÿÿÿÞ uE, oœ &Ü&Ü&8þÿÿ (² (Xuu9†tu(' {eeYn bn`oK ,(² (+ r`5ps& z{^{g{h{^{Σ‡(u8éýÿÿ8ãýÿÿÞuE, oœ &Ü&Ü&{_{c(o(+({ 9“({ ({ :~(|  {_ d ÿÿ_(\  -*s{^{Ì(+, d((~ +/ -%s{^{Ì(+, ((~ ++{_{c(o¥{oA o˜ 9$oB  {_{× d£‡{_ d ÿÿ_(\:á{^{Ì¥o   o˜ 9’ o   £(! (( (,] d{^{g{h {b{_{Ö d£S(¸ ,(+((u8hÿÿÿ8bÿÿÿÞ uE, oœ &Ü&Ü&8Öþÿÿ8ÐþÿÿÞuE, oœ &Ü&Ü&s *AdõÊ¿o"‘õ£˜‘5Æ(€ *0( *(‚ *0(ƒ *V(„ }i}j*0{i{jn bn`þoK *V(… }k}l*0%{ls{k{Ä(+þ(+*:(† }m*00®{  {ž {¡ {m{Æo  s‡ *0T(€ }ˆ }‰ }Š }‹ }Œ } }Ž }  }  }‘ *0 ²±rØ5psÔ (Õ (+&(Õ o= {‹ o+¥o+¥o+¥ê {Š Œ¨¥( + {ˆ {ÏrÇ1po  {‘ { {Œ {Ž { { {‰ s’ s“ þo” *(• *0d*:(– }x*0{xþ(!+*:(— }y*0{y(+þo˜ *:(™ }š *0{š (¨ oŸ *:(™ }› *0{› (¨ þo‹ *0«²dsž (  r6p(  sb("+r 6p(  r6p(  r6p(  r"6p(  r6p(  r 6p(  r\6p(  r6p(  r"6p(  r6p(  þo¢ *0(œ (-þo *0L-( X þþ,(rh6p(Ì rx6p(Ì (-(Ì snz( X£/*0 õ¾(DEK ­|&rt {Š o\ &( X( *t {ˆ (W ( X( *t{„ (W ( X( *t{‰(/oØ &( X( *t{† (/(ž  Þt (-snz    oô &( X( *t  {…(/ §(¹ ¥R(Ÿ Þt (-snzo  &( X( *t{‡( X( ( /%( £/oØ &( X( +Ñ*ù Yt0 Á(¡ ,A (¢ (£ ( ,*(¢ (£ (¢ (¤ (0*(¡ :r\6p( ,+ r6p( ,(-sdz(¾ 1(¿ -þ+,)r¢6p(Ì r6p(Ì (-(Ì snzoØ &( X( *  (¡ 8õþÿÿ0 PÂŽi ( X( ( /3( £/   (1+Ä*0~•*0{Å(¥ (3(2 Þ]t u  ,-t (r(œ o (œ o= (¦  Þ u,t(h+Åþ&*]0( }|*0sR*0 (Dþ*0sP*0 (Dþ*0sN*0 (Dþ*0sL*0 (Dþ*0sJ*0 (Dþ*0sH*0 (Dþ*0sF*0 (Dþ*0{|*0rÑ.ps§ (#+o¨ *0(5}„*0{„*0(5}…*0{…*0(5}†*0{†*0(5}‡*0{‡*0(5}ˆ*0{ˆ*0(5}‰*0{‰*0(5}Š*0{Š*0( }‹*0 {‹{„*0( }Œ*0 {Œ{…*0( }*0 {{†*0( }Ž*0 {Ž{‡*0( }*0 {{ˆ*0( }*0 {{‰*0( }‘*0 {‘{Š*:(© }’*0Æ(¤ (DEn8Û•^~(£ (ª {’r 6p(  {’(  {’r6p(  {’(  {’r6p(  *(£ (ª + (£ (ª +(£ (ª {’r 6p(  {’(  {’rÒ6p(  {’(  {’r6p(  *(£ (ª {’r 6p(  {’(  {’rê6p(  {’(  {’r6p(  *(£ (ª {’r 6p(  {’(  {’rü6p(  {’(  {’r6p(  *(£ (ª {’r 6p(  {’(  {’r7p(  {’(  {’r6p(  *0(‰ }“*0(‰ *0 (Š *0 (‹ *0{“*06þ,- ¹y7žt(h , ( +bcXXX **0 ( oi*0A,þ,2u ,&($+-*t(ht(h( **þþ*0=þ,.þ,&($+-*t(ht(h( **þþ*0,u ,(l**0(‰ }”*0(‰ *0 (Š *0 (‹ *0{”*06þ,- ¹y7žt (r , ( +bcXXX **0 ( os*0A,þ,2u ,&(%+-*t (rt (r( **þþ*0=þ,.þ,&(%+-*t (rt (r( **þþ*0,u ,(v**0 sã €•*0(« *0sŒ(¬ *0~š*0 ({(z*0(­ *0(® o¯ (­ *0 sŽ(¬ *0 (° iÑ*0(± *0(² *0 (± {*0 (² {*0(® (³ (³ Žiþo´ *0(µ (³ (³ Žiþo´ *0(³ *0 (Z *0(² *0 (¶ *0 (· *V(¸ }—}˜*0 ]È(¹ (º (» cZ{—do¼ [ (&+{˜ oS -*{—þo½ *:(¸ }™*0'É(¹ (º (» {™þo¾ *0 (¿ €š*0*0*0 ÿÿ*0*0 @*0 €*0 À*0 À*0ûË{À - r 7ps& z{Á {À Y£S { (  À_-<,4 (à  ÿ?ÿÿ_{Ä oÅ ( À_þ++,1 ÿ?ÿÿ_Œ (Æ (Ç s°(È (É *{Ê - r 7ps& z{Ê Y}Ê {À Y}À 8ÿÿÿ0‘àsË r87poÌ dsÍ (É dsÎ  0þÎ01þ12þ2  d('+ d('+ d((+ ('+{Ï {Ð {Ñ s›{Ò {Ó s›{Ô {Õ s¥   s±:‹{À -+ë{Á {À Y£S{Ö £;i ÿÿ.8k ->(× , 1  Y  +$ +oØ (Æ (Ç  + ,{Ä oÅ +{Ù ( À_-Z1 Y+ ÿ?ÿÿ_ - rL7ps& z{Ú oÛ s°(È (É  8ßþÿÿ @@ ÿ?ÿÿ_£{Ü £;i!Y  !?Ç{Ê - rz7ps& z{Ý {Ê Y£,"{Ê Y}Ê {À Y}À  !YY"{¯¤ !YY"{°¤ !YY"{±¤!-"{±¤+!Y3"{°¤+!X!! X@9ÿÿÿ-9 ,¤¤+ (Æ ¤(Ç ¤+oÞ ££s°(È {Á {À Y£S {ß £;i ((É #Þlt$$u %%,4$t (££s°(È #Þ$$u &&,()+#Þþ#&8Àüÿÿ €@.1J ,   þ+, , (à +()++ - r 7ps& z 8eüÿÿ , (à +'(ž(((á ((â ))s»(*+++¥s> *)*sã (*++ (ä ,,sË(++-)*så (*+.,.'-+rè7psæ /{ç /oè &()+8†ûÿÿ À3 8tûÿÿ8nûÿÿ{Ý {Ê Y£,""{¯*Kb­l0(( &}}œ Ðsé }ž*0_(X[ 3*{Z£;i 3{ZX£;i*/+µX+¡0sá b` {žoê ,*{œ£;i X {Z£;i{ZX£;i X(œ{žoë *0 Mâ{œ£;i X {Z£;i {ZX£;i sŸ(,+ sì *0<}Ÿ} }¡}¢}£}¤}¥(í *0 ÷-{¤YE +8«8›8À{ {¡XY { (î o }£}¤{£o˜ ,c{£o }¢}¤{Ÿ{{¢Z£;i{Ÿ{{¢ZX£;isõ }¥*}¢+}¤{£(é+}£}¤}¥*0Q{¤YE + ++++}¤{£(é+}¤}¥*03{¤YE + + +++***0{¥*0 {Ÿ{ {¡sŸ*0( &}§}¦*0 5{¦£;i X {§£;i s§þ(*+*0<}¨}©}ª}«}¬}­}®(ï *0Ò-{­YE +8†+y8ž{©{ªXY {©(î o }¬}­{¬o˜ ,A{¬o }«}­{¨{§{«£;i}®*}«+²}­{¬(é+}¬}­}®*0Q{­YE + ++++}­{¬(é+}­}®*03{­YE + + +++***0{®*0 {¨{©{ªs§*0{¯*0{°*0{±*0}¯}°}±*0/}²}³}´}µ}¶( &*0#{³Y£{´Y£só *0{³Y£*0{´Y£*0{µY£*0{¶£{¶£só *0 {²¥©*0sz(ô *0((_ (^ þ(-+*0,}·}¸}¹}º}»(ï *0}{ºYE++D+Vs¹}¸{·¥}¹}º{¸{¹(.+(/+*}¹}¸}º}»*06{ºYE + +++}º}»*0*{ºYE + +++**0{»*0 {·s»*(ô *0)((_ (^  À_- þ(-+*þ(0+*:(õ }¼*0 {¼(¸ - þ(-+*þ(0+*0d}ö }÷ }ø }ù }ú }û }ü }ý  }þ  }ÿ  }  } (ï *0c-{ YE +8“8ƒ88"sÁ}ú {ø ¥}û {ú {û (.+(/+o }ÿ } {ÿ o˜ ,0{ÿ o }þ } {þ } *}þ +Ã} {ÿ (é+}ÿ }û }ú {÷ À_-c{ù sÃ}ü {ö {€ Y (î }ý } {ü {ý (1+(/+*}ý }ü +} } *0[{ YE ++$+ + +++} {ÿ (é+} } *0<{ YE +++ +++****0{ *0'{ö {÷ {ø {ù s *04}É}Ê}Ë}Ì}Í}Î( *0·{ÍYE + +n+a8†{Ê¥o }Ì}Í{Ìo˜ ,;{Ìo }Ë}Í{É{Ë(¦}Î*}Ë+¸}Í{Ì(é+}Ì}Í}Î*0Q{ÍYE + ++++}Í{Ì(é+}Í}Î*03{ÍYE + + +++***0{Î*0 {É{ÊsË*(ô *0.((_ (^  À_ @3 þ(-+*þ(0+*:(õ }Ï*0 {Ï(¸ - þ(-+*þ(0+*0d} } } } } }  }  }   }   }   }  } (ï *0h-{ YE +8“8ƒ88'sÑ} { ¥}  { {  (.+(/+o }  } {  o˜ ,0{  o }  } {  } *}  +Ã} {  (é+}  }  } { À_ @3c{ sÓ}  { {€ Y (î }  } {  {  (1+(/+*}  }  +} } *0[{ YE ++$+ + +++} {  (é+} } *0<{ YE +++ +++****0{ *0'{ { { { s *04} } } } } } ( *0 Vä{ YE +88è8{ {‚ { {ƒ { Y /+(^ { {ƒ Y(^ (² (² YX¨ Y 2!  X£¨¤¨ X  X3ߥo— } } { o˜ ,9{ o™ } } { } * þ¨ } +º} { (2+} }  þ¨ } *0Y'{ YE + ++++} { (2+} þ¨} *03{ YE + + +++***0{ *0 ''{ { þ¨þ¨s„ *0B( ( X( ( ( Y( ( ( ( *0l-(  ( 3L£º£;i 3 þo! *(" , r8ps& z(# s$ þo% *s$ þo% *0¹å( { {  /+ þ /*1*( { { /+ þ /*1*( {{/+þ / * 1 *( {{/*þ*0˜æ{ { /+þ /*1*{ {  /+ þ /*1*{ { /+ þ /*1*{ { /* þ*0 7é(& (' s s  ((  sþ(3+*0(( sþ(3+*0 7ë(* (+ s s ((  sþ(3+*0(( s þ(3+*0‘í { þþ,-{{ZX (, {£ºX£;i*{£ºZX£;iÑ 3{£ºZXX£;i*X8oÿÿÿ:(V }- *0{- &(. *:(/ }0 *0{0 &þ(1 *V(2 }3 }4 *0 T-{4 {3 {3 Žis5 o6 (7 {3 (8 (2 (+(9 X(H *V(: }; }< *0 X{< (7 {; {< (8 {< (2 (+{< {< (9 X(H (( þ(= *r(/ }> }? }@ *0 >(( {? {> {> Žis5 oA {> {@ sB þ(4+*V(D }E }F *0 (( {E {F sG þ(5+*:(O }í*0 :î(P (Q (R (&+ {í (6+ (7+*:(¸ }î*0 :ï(¹ (º (» (8+ {î (9+ (:+*(2 *0*(/ *0(( þ(;+*(D *0(( süþ(5+*:(O }ï*0'–(P (Q (R {ïþoS *:(¸ }ð*0'É(¹ (º (» {ðþo¾ *:(¸ }ñ*0'É(¹ (º (» {ñþoK *:(L }ò*01É(¹ (º (» {ò(^ (^ þ(M *V(N }ó}ô*0(ð(& (' {ó{ôsU (å*V(O }õ}ö*0{õ{ö(æ*²(O }÷}ø}ù}ú}û*0 6{÷{ ÿÿ{ø{ú{û{ù þ(<+*Ò(O }ü}ý}þ}ÿ}}*0 ó({þ(V {þ(Y 3M{þ(Z (( {þ(P oQ {ü{þ{ÿ{{s þ(=+*{þ(] {þ(^ £<i {ü{{ÿ£º£;i  ÿÿ3{ü{ý(æ*{þ{þ(V X(` {ü{ý{þsU (å*Ò(O }}}}}}*0 -{{{£;i ((  ÿÿ.1{{(V (W {(X (( (= + (( (= (( {{{{{{s(3+þ(>+*:(O }*0(( {(_ þ(?+*:(S } *0ð(& (' { þ(P*:(T } *0 { (_ *V(U } } *0(ñ(* (+ { { sa (ç*V(O } }*0{ {(è*Ò(O }}}}}}*0 ÿò{(b {(e 3_{(f {(g o\ &{{{{{{{{{{þ(@+*{(- {(h £= {{(U {{3{{(è*{{(b X(j {{{sa (ç*Ò(O }}}}}}*0 ª({{{£;i (( {{ þþ,1{{(b (c {(d (( (= + (( (= (( {{{{{{s(3+þ(>+*:(O }*0(( {(i þ(?+*:(V }*0ñ(* (+ {þ(V*:(T }*0 {(i *BSJB v2.0.50727lP #~¼ Ôe#Stringsq<8#USÌ©#GUIDÜ© œ#BlobWߢ+ ú3|b%9FVFÔòH0; A\@UNN ­šÎNÜN èšNËšò× ?) LN ]) å)þô %) SN §) è)KÛ ú) N D' å ¾ Û × ê 'R× Þ' –N žN5N za t)°žÍžæžýžžD1›X q) )êNR1m1öš )pNdDš×Ã×»U ¾ 'V#ôu#ô#ôž#N ù#)M$NT$NåN‘*× Ÿ*' °*'Ú*N ++2++»u+ü+N,šÏl, “,)Ïá,'l,ù-ô.ô.ô.ô%.ô;./.8/#/Y/Ni/N¦/150ôY0N 1) 1N 81) ]1)‚1ô’1ô Y2' j2)2N½:/.;N;D¼;NÂ;N ‡C)ÁC1ßC1úCNiQN ÑR) ˜S'êSNóS1T׫åT«ðTÿ\ž z]N ^)£_N°_#/kYc Ãc) ×c) íc) ×daå [@ç j&Bé y&Dë ˆ=Fí —.Fï ³2Gñ ¼2Hó Ç6Hõ Ð:J÷  :Mù >Pû Q:Sý \BVÿ gFV rV }BV ˆJV “V  ŸNV  «NV  ·NV ÃNV ÏNV ÛRV çV[ í6\€ù\€'j€'ùð/€-ô0 4ýK…: {$?ü{$Eü}$Jü$Qü $Vü!ƒ\"…q#‡…$‰›%‹¯& Ä'…:<à ÌPÃ…:_ë Úrmë ñvmí  rmï "rmñ ;rmó Trmõ mrm÷ †zmù ž~nû ¶rpý Ï‚pÿ è~q rs ~s 4rt N†t  g~t  €ru  š†u ³~u Ìrv æ†v ÿ~v rw 2rw Lrw frw €rw! šrw# ´rw% Îrw' èrw)  rw+  rw- 6 rw/ P rw1 j rw3 „ rw5 ž rw7 ¸ rw9 Ò rw; ì Šw= ÷ Žw?  ’wA€-ùwC€ D! y  ‡ˆ % Š—…:Ž©… 3 ‘©…:‘¸$: “¸$C ”ºO •¼g –¾… ‚ —À…:˜Ð$‘ šÐ$ž œÓ¬ œÔÈ × å žØ!ð ¢è  Φõ  Ò§÷ . B§ù F Ö§û ` §ý z J§ÿ ‡ Ú§  Þ¨ œ â© § æ­ ° ê°  Á î°  Ü ² …:µ!$ã l¹!$é lº#ð »% ¼'  ú½) . þ½+ < þ¾- R À/ f Â1 r Ä3 ƒ Ç7 œ Ç9 ¦ Ç;² Ç= ý ÌC  ÐH ! ÐJ - ÖÐL 9 ÐN E ÐPQ ÐR ] ÕX m "Ù^  &Ù` ‹ *Ûb — .Üd ¤ 2Üf ± 6Ýh ¾ ßj Í :ào ö àq >ãu Bãw "Fãy/Jã{ <è%Jé† fé‰%wê ê%ë” šVë— ´Zë™ À^ì›Ëbí Ôfö£ êj÷¥ önø§ rù© vú« 4zú­ Q~û¯ b‚ý± q†ÿ³ е –Ž· ©’¹ ¼–» К½ äž ¿ ö¢ Á ¦Ã #ªÅ 3®Ç H²É [¶Ë hºÍ ¾Ï ¦=Ñ ½=Ó Õ=!Õ îÂ$× Æ(Ù )Ê*Û JÎ+Ý kÒ+ß ŠÖ-á  Ú/ã ¾Þ/å ÜŠ0ç ÷â3é æ3ë ê3í #Ê6ï 1î7ñ Eò8ó ]ö8õ l;÷ ‚ú@ù ˜þCû µFý ÇGÿÙ G éP üR T [&\ <] O"i j&i ‡*i “.k 2m©þn! Æ6x# ã:x% >y'€ ùz)€2z) ;Bz) CB{+€N®|-… R|5…:}F$W8„F$]8…H$c8†J$g8‡L$l8ˆN$p8‰P$]8ŠRw‹TŒŒV¡X´ŽZÈ\Û^ñ‘` F’b “d ”n€N•x€jC—y qJ—Œ…J™Ž€j›š€Ø6œ‘€å6œ“ ôœ›ÿNŸŸ ¦¥R¨§ !+y¯­?²± NV·¹]R·» jV¼Á €Z¼Ã–R½Åª^ÉË ÃVÏÑ ÖZÏÓéRÐÕ€úÜÛbÜÛ€eâá€%âã 2âê Gfãìˆjäîžnæð¶fèòÎrëô æíö ûJîø jïú fïü .rïþ >ïQJð fJñ uvò †zó ž~õ  ®~÷  Æ~ü Þ~ ö~ ‚  †  Š  0~  @~ X~ p~  €Ž" І$€¾”&€Â&èy&ùy& y&y&+y&;y&Ly&\y&G£ „¶ ޶ ¶ ¦¶ ©º ³Ì ¯i ¶q »} І ×¶ ë¶ û¶  ¶  ¶ , ‹ 0 ö 9 ö @ ¶  $$  $$ q$¶ z$¶ $¶ ¥$¶ ¬%;·%;Ç%BÜ%;é%Mô%£ ü%Q§'i³'¶ Â'sÎ'|Û' ð' ( ( 0( 7( R( p( ( ®(…º(¶ È(¶ `*† i*¶ ^+vâ+®ä+¶ ›2åƒ/ƒ/À2À4Ê2Ê2Ñ2ƒ/À2Dƒ/À2Dƒ/À2DÊ2þ23£  3£ ƒ/3D!3ƒ/3D!3ƒ/3D!3ƒ/3D!3ƒ/3D!31!03!;3­"J3-<S3-<^3­"q38<z3-<3­"3­"—3­"ž3C<§3N<¸3£ Â3£ Í3Y<Ö3¶ 4¸<4¸<4¸<+4¸<74¸<C4¸<O4¸<[4¸<g4¸<s4¸<4¸<‹4¸<—4¸<£4¸<¯4¸<»4¸<Ç4¸<Ó4¸<ß4¸<ë4¸<÷4¸<5¸<5¸<5¸<'5¸<35¸<?5¸<K5¸<W5¸<c5¸<o5¸<{5¸<‡5¸<“5¸<Ÿ5¸<«5¸<·5¸<Ã5¸<Ï5¸<Û5¸<ç5¸<ó5¸<ÿ5¸< 6¸<6¸<#6¸</6¸<;6¸<G6¸<S6¸<_6¸<k6¸<w6¸<ƒ6¸<6¸<›6¸<§6¸<³6¸<¿6¸<Ë6¸<×6¸<ã6¸<ï6¸<û6¸<7¸<7¸<7¸<+7¸<77¸<C7¸<O7¸<[7¸<g7¸<s7¸<7¸<‹7¸<—7¸<£7¸<¯7¸<»7¸<Ç7¸<Ó7¸<ß7¸<ë7¸<÷7¸<8¸<8¸<8¸<'8¸<38¸<?8¸<K8¸<W8¸<c8¸<o8¸<{8¸<‡8¸<“8¸<Ÿ8¸<«8¸<·8¸<Ã8¸<Ï8¸<Û8¸<ç8¸<ó8¸<ÿ8¸< 9¸<9¸<#9¸</9¸<;9¸<G9¸<S9¸<_9¸<k9¸<w9¸<ƒ9¸<9¸<›9¸<§9¸<³9¸<¿9¸<Ë9¸<×9¸<ã9¸<ï9¸<û9¸<:¸<:¸<:¸<+:¸<7:¸<C:½<3v;3; 3‹;ŒÖ3¶ ,=>8= >D=>P=>\=>h=>t=>€=>Œ=>#%A¶ 3*A×36A×3NA×3\A×3iA×3wA×3ˆA×3•A×3¥A×3³A×3ÀA×3ÍA×3ÙA×V€?¶ V€E¶ V€ A¶ V€ê@¶ V€Ü@¶ V€Ð@¶ V€Â@¶ V€®@¶ V€¢@¶ V€@¶ V€‚@¶ V€v@¶ V€j@¶ V€`@¶ V€R@¶ V€J¶ V€Q¶ V€V¶ #ðA¬#ðA£ #ðAÒ#ðAÒ#ðA£ ÿC">ÿC'>ÿC,>ÿC1>ÿC6>#%A¶ 3&FD3:FD3MFD3_FD3}FD3‘FD3¤FD3¸FD3ÏFD3âFD3øFD3 GD3GD32GD3DGD3XGD3mGD3€GD3”GD3¯GDV€ F¶ V€ôE¶ V€ÞE¶ V€°E¶ V€–E¶ V€~E¶ V€dE¶ V€DE¶ V€,E¶ V€E¶ V€ôD¶ V€ÜD¶ V€ÄD¶ V€®D¶ V€”D¶ V€xD¶ V€`D¶ V€FD¶ V€D¶ V€D¶ #%A¶ 3EL€D3`L€D3uL€D3L€D3¥L€D3ºL€D3ÑL€D3çL€D3üL€D3M€D3+M€D3CM€D3ZM€D3oM€DV€L¶ V€L¶ V€ÛK¶ V€½K¶ V€¡K¶ V€K¶ V€cK¶ V€GK¶ V€'K¶ V€K¶ V€ãJ¶ V€ÃJ¶ V€§J¶ V€…J¶ ÀO¬ÀO¬ÃOªÀO£ ÀO£ ÃOªÃOªÃOªÃOªÃOª3ÏO 3áO 3P 30P 3[P 3{P 3P 3¿P 3èP Ö3¶ „WÒŒW?”Wî ›WÑG¬WªºWýD#EXª#KX¬#QX "#%A¶ 3¡X(M3³X(M3ÆX(MV€‹X¶ V€sX¶ V€_X¶ V€: ¶ V€C ¶ #ðA£ #ðA£ ÿC(:ÿC#:3±YúJV€‘ ¶ V€†Y¶ #EX(M#KX¶ ÿC#MÿC·f#EX£ #KXúJ#QXŽ"#Z "JZÓIUZªcZáI¬WªY¶ ÌZÿJÌZÿJûQðJÌZÿJØZKÞZ£ ûQðJÌZÿJØZKûQðJ RúJ#%A¶ 3[V!3[V!V€ã ¶ V€é ¶ V€§¶ V€èZ¶ #ðA¶ #ðA¶ ÿCÒÿC×sSk,-kxS9kÑ"‹k,-kÑ"Ðkâ+Úk›[;ó*´"± $lÑ[-lÑ"šlæ[°lî[¶ ñ[!?\;ó*´"± wmB3$l\\-lÑ"šlæ[°lî[¶ ñ[!ó*îm± #!B3wm¶ZómÞSÌXÖSÑXÞSÌX 1£ ÞSÌX‡\nâ+Šo®\;¹\‰pÂ\ßZà\•pÑ"hqæ[†qî[¶ ñ[–qâ+€râ+Órâ+s+]úJnTÖXÞSÌXÖSÑXnTÖX¥T¶ 5]¶ =]'!B]'!î[¶ ñ[Ôs6T­"VT¶ ,Yu’TÛXÞSÌXnTÖXa]ÒVÞSÌXÖSÑXÞSÌXnTÖX„QûX‚] Yƒ/‚] YÞSÌXnTÖX„QûXÖSÑXŽ]-Yƒ/ÖSÑXŽ]-YÞSÌXnTÖX„QûXÞSÌXƒ/ÞSÌX¡]Y°]>Y¾]WYÕ]lYƒ/¡]Y°]>Y¾]WYÕ]lY3U€Yƒ/3U€Y3U€YÑ23U€YÑ2á]3U€YÑ2á]è]nTÖXï]ëXû.(ZnTÖXï]ëXnTÖXjU°YnTÖXnTÖX73¶ ,VnTÖXjU°Y,ÎY^óX!^èYnTÖXjU°Y!^èYnTÖXøUÙV,~WV-„•R(ZnTÖXøUÙV,~WnTÖX2^¶ øUÙVD^+Zg^¶ }^íY‘^Z£\+ZÑ"r…æ[Œ…=]œ…î[¶ ñ[¤…^Z,nZ§^nZiV¶ §^nZiV¶ ¿UÉUÑ"Ɔæ[Û†î[¶ ñ[â†"#/!"#/!ŸZÓIÖSÑXnTÖXg^¶ øUÙVa]ÒVjU°Y!^èYÂ^ôY§^nZTVDÀVDÂ^ôYiV¶ ÞSÌXÂ^ôYÞSÌXÖSÑXÛ^¶ 3U€Yì^ý^; _±"_Ä._»8_ßZn\I_[V_÷ZX_®Ñ"9k#%A¶ V€W¶ V€]¶ V€c¶ V€g¶ V€l¶ V€p¶ V€]¶ #ðA­"#ðA #ðAþŒ#ðAƒI#ðA­"#ðAƒI#ðAàŒÿCïŒÿCÿCùŒÿCÿCêŒÿCôŒÿCÛŒÞ`/=^+£ ^+£ 3é`DÖ3¶ $a“a# “aI“3Nb“Ö3¶ Éb Ób ÛbЕÌ*ø“1c¶ Ac¶ º2¶ =]'!î[¶ ñ[ „Éb Ób Ì*ý“1c¶ wc¶ º2¶ =]'!î[¶ ñ[¶ ˆcvcö ™cö ýc} dï“dï“"dô“-dï“ñ39”Ñ"Ç–æ[Ø–î[¶ ñ[¶ 4dÒV(@A—Ad¶ ñ39”4dÒVÑ"Ç–æ[Ø–OdI—RdU—!¶ =]'!î[¶ ñ[¶ [dý“¬%;k$¶ =]'!î[¶ ñ[;4dÒV(@A—Ad¶ ñ39”4dÒVÑ"Ç–æ[Ø–OdI—RdU—!¶ =]'!î[¶ ñ[¶ pd©—Y¶ Ì*6=]õî[¶ ñ[6"ý"ý‹e† •e†‹e† -$ý‹e† •e®-$ý‹e† •e®Ñ"'šÑ"Wša# “‚#I“—#šš—#šš(@&-$*(@&-$*(@&-$*k$¶ Y$_˜dt˜(@&-$*Æe*k$¶ Y$_˜dt˜(@&-$*Æe*k$¶ Y$_˜dt˜-$*¶&-$*(@Œ-$(@Œ-$(@Œ-$Æek$¶ Y$î˜dt˜(@Œ-$Æek$¶ Y$î˜dt˜-$¶Œ-$P °¹ d ¾½ x ˽ Œ ݽ   é½ ´ ˜Å ì æ6æ @!æ6ñ \!æ6 ¼!æ„ P"愽 l"æ¾% è"Ź ü"Ò½ #Û½ $#ì½ 8#õ½ L#½ `#½ t#6½ #A- È#N2 ü#[- $h2 D$yj `$ƒo x$æ¾u ð$æ¾{ %¾é (%Ëü <%˜ `%˜¶ &š ½ l&¤ - ˜&q Ä Ä&³ - ð& Ä 'Ö Û X'á á 'ì ï À'~ ½ ì'!® (!Û D(!ù p(*!½ œ(B!® È(Z!½ ô(o!®  )„!½ L)˜!® x)¬!½ ¤)Ã!® Ð)Ú!ü)ë!%(*"BP*"K|*+"O¨*N"Á Ô*["½ +"® x+Ÿ"®!Ø+Ä"ß#ô+Ó"ö$,å"B%4,ö"»&X, #+' ,#7(´,&#A)È,<#P*ä,G#Y+-d#d,,-…#…-X-Ö#Á . -ç#ö.è-A"Á .0.˜.T.$0t.7$N2œ.F$\4´.Y$t6Œ/˜80$‚: 07$¬<H0F$º>`0¬$Ñ@¬0Y$âBÆå$÷DÆö$2 EÆ%2 EÆ %EÆ*%EÆ 3%ï EÆH%E„1˜`EÐ1 &…Lä1&…Lø1)&L 2:&–L 2I&›L42b&…LH2r&¹ L\2Ü(šLp2ë(½ L„2ý(¥L˜2 )¯L¬2)¹LÀ24)¹LÔ2N)¹Lè2h)¹Lü2})¹L3‡)¹L$3¥)¹L83Æ)¹LL3é)¹L`3 *¾Lt3*½ Lˆ3**½ Lœ3˜ÍL,4$\D4˜® _p4o*® `Ä4~*½ aØ4ˆ*Á aô4Œ*Õa5Ã*~aP5Ç*™ b5Î*Kc¨5è*Á c6˜Á c6FBõ*”c06˜”eH6Æ„ g`6Æ„½ h€6ƾ% h´6¾cjä6ƾ{ k7˜yl$7˜Á m87FBõ*”mP7˜”oh7k+~q|7Æ„ q¸7Æ„½ rÔ7ƾ% r$8¾ctp8ƾ{ u”8˜¿v¸8˜ÔwÜ8˜Þx9˜HzŒ9˜® |À9˜Á }ô9˜„}(:7,™ ~\:WÁ Œ:#uì:Š,p;d,6°;È,M‚ä;Ñ,™ ƒ<~*½ „D<Áï,„„<Á&-„Ä<P.L„(=m.d†<=w.d†P=ƒ.p†d=—.x†x=¡.d†Œ=©.p† =¶.p†´=Á.p†È=É.„†Ü=Ó.†ð=å.œ†>ð. †>/œ‡,> / ‡@>/¥ˆT>x/ƈŒ>†/ÆŠÄ>˜/ÎŒÔ>Ã/ÎŒè>Ò/ÎŒü>à/ÎŒ?ï/ÎŒ$?þ/ÎŒ8? 0åŒ?G0ñÐ? 0üŽ@½0&$@Ý0yH@ú0¡‘t@–2À “Œr˜;4“œrFÏ#^4”Ðr˜Á •ØrFÏ#j4•ør˜Á –sFÏ#p4–s˜Á —$sFÏ#j4—Ds˜Á ˜LsFÏ#p4˜hs˜Á ™psFÏ#j4™¤s˜Á š¬sFÏ#p4šÌs˜Á ›ÔsFÏ#p4›ôs˜Á œüsFÏ#j4œt˜Á tFÏ#j44t˜Á žð˜Û=Î> ¬š÷=ü>|œ >B?0ž>O?øž›&X?ˆŸ2>_?x M>f?¸¡j>ÎÈ¡„>ÎØ¡£>m?¤¢³>†?€£Ç>=”£Ù>=¨£ÿ>=¼£(?=УS?Îà£k?=ô£‹?=¤­?=¤Ï?=0¤ø?=D¤@?Ì¥(@·?(¦/@Á?D¦RÚ?h¦o;À !„¦o;À !(§˜® !D§çAú?"X§õAK#p§B@#„§ BK$œ§B@$°§BK%ȧ+B5@%ܧ5BK%ô§AB5@%¨IBK% ¨SB5@%4¨\BK%L¨gB5@%`¨pBK%x¨{B5@%Œ¨…BK%¤¨‘B5@%¸¨BK%Ш«B5@%䨴BK%ü¨¿B5@%©ÌBK%(©ÛB5@%<©åBK%T©ñB5@%h©úBK%€©C5@%”©CK%¬©C5@%À©/CK%Ø©EC5@%ì©MCK%ªWCú?%ª_CK&0ªjCñ@&DªsCK'\ªC½ 'pª²C~'”ªæ6@A'¼ªæ6ñ (تæ6 )«æ„ +0«æ„½ ,L«æ¾% ,t«æ¾ˆA.Ьæ¾{ /ô¬˜*B0­ê03B1$­˜’ 1@­ê0¹ 2T­˜ëB2p­ê0öB3„­˜ëB3 ­ê0öB4´­˜’ 4Эê0¹ 5ä­˜ßC5®ê03B6®˜æC64®ê0¹ 7L®˜íC7h®ê0öB8€®˜ôC8œ®ê0öB9´®˜ûC9Юê0¹ :è®o;À :ܯ˜® :ø¯ÃG D; °ÓGK;$°åG D;8°üGK;P°H D;d°%HK;|°7H D;°FHK;¨°WH D;¼°hHK;Ô°{H D;è°‹HK;±H D;±«HK;,±»H D;@±ÊHK;X±ÛH D;l±êHK;„±ûH D;˜± IK;°±I D;ı/IK;ܱCI D;ð±RIK;²cI D;²vIK;4²‹I D;H²›IK;`²­I D;t²¼IK;Œ²ÍI D; ²ÝIK;¸²ïI D;̲ JK;ä²%J D;ø²3JK;³CJ D;$³RJK;<³cJ D;P³sJK;h³C½ ;|³²C~; ³æ6TD;à³æ6ñ <ü³æ6 =L´æ„ ?l´æ„½ @ˆ´æ¾% @Ä´æ¾cDBü´æ¾{ C µo;À D̵˜® D赇M…DEüµ›MKE¶±M…DE(¶ÂMKE@¶ÕM…DET¶èMKEl¶ýM…DE€¶NKE˜¶'N…DE¬¶;NKEĶQN…DEضdNKEð¶yN…DE·ŠNKE·N…DE0·¯NKEH·ÃN…DE\·ÖNKEt·ëN…DEˆ·üNKE ·O…DE´·!OKEÌ·5O…DEà·KOKEø·cO…DE ¸tOKE$¸‡O…DE8¸žOKEP¸C½ Ed¸²C~Eˆ¸æ6²DEȸæ6ñ F䏿6 G4¹æ„ Iйæ„½ Jì¹æ¾% J(ºæ¾ÁDL`ºæ¾{ M„º˜Á NŒºFÏ#ÔDNĺ˜Á O̺FÏ#ÚDO亘Á QìºFÏ#ÔDQL»˜Á RT»FÏ#ÔDRt»˜Á S|»FÏ#ÔDS¨»˜Á T°»FÏ#ÔDTÈ»˜Á UлFÏ#ÔDU¼˜*BV¼FÏ#þEW0¼˜ FXH¼FÏ#@FZœ¼˜Á [¤¼FÏ#ÔD[ؼ˜’ \è¼FÏ#^F]½˜hF^½FÏ#@F`p½˜Á ax½FÏ#ÔDa¬½˜ŽFb¼½FÏ#@Fc¾˜Á d¾FÏ#ÔDd0¾˜Á e8¾FÏ#¨FeT¾˜ŽFfd¾FÏ#@Fg¼¾˜Á hľFÏ#ÔDh쾘Á iô¾FÏ#¨Fi¿˜ŽFj ¿FÏ#@Fkx¿˜Á l€¿FÏ#ÔDl¨¿˜Á m°¿FÏ#¨FmÌ¿˜ŽFnÜ¿FÏ#@Fo4À˜Á p<ÀFÏ#ÔDpdÀ˜Á qlÀFÏ#ÔDq À˜Á r¨ÀFÏ#ÔDrÀÀ˜Á sÈÀFÏ#ÔDsüÀ˜Á tÁFÏ#ÔDt0Á˜Á u8ÁFÏ#ÔDuˆÁ˜Á vÁFÏ#ÔDv¤Á˜Á w¬ÁFÏ#ÔDwÀÁ˜Á xÈÁFÏ#ÔDxÜÁ˜Á yäÁFÏ#ÔDyøÁ˜Á zÂFÏ#ÔDz4˜Á {<ÂFÏ#ÔD{h˜Á |pÂFÏ#ÔD|¸Â˜Á }ÀÂFÏ#ÔD}ô˜Á ~üÂFÏ#ÔD~(ØÁ 0ÃFÏ#ÔDHØÁ €PÃFÏ#ÔD€dØÁ lÃFÏ#ÔD”ØÁ ‚œÃFÏ#˜G‚´Ã˜Á ƒ¼ÃFÏ#@AƒÐØÁ „ØÃFÏ#¤G„ìÃo;À …ÐÄQ½G…ôÄQJH†´Å(QºH‰\ÆDQ_IŽ`ÇSQsI’¨Ç_QzI“ÔÇ„Q¨I•\ÈœQ¿I—ȳQÊI™ìÈ¿Q8J›¬ÉÓQzJž\ÊçQ›J£ˆÊ1RÔJ§ÔÊ`RM©äÍuRMªøÍ„RM¬ ΛRM­$ΫR¶M®€ÎºR¿M°”ÎÄR¿M±¤ÎüRèM²ÈÎSóM³àÎ)SùMµøÎ5SN·(ÏhSYN¸tÏ‚SO¼¤Ï¢SxO¾Ô϶SÔOÀôϾSBPÁdÐÒSnP´ÐTÚPÅðÐ.TíPÇÑETÆQȈÑaTS̸ÒvTxSÏìÒˆTýSÒHÓªT-TÖÄÓ½T-TØ4ÔÐTCTÚ\ÔûTlTÛÀÔ UþTÞ€ÕU[Uã˜ÕPUVåàÕŠUAVèÖ£UvVë,ÖÆU·VîhÖßUOWòt×0V–Wø˜×DVÿWû Ø¥VœXÚèVÀX DÚWÀX pÚ1W±`XãÁWöBlãÌW`a€ã×Wqa”ãáW~a¨ãõW‘a¼ãX™aÐ㘬aäæ6,bØäæ6ñ ôäæ6 ¼åæ„ ¤ææ„½ Àææ¾% èææ¾¼b”çæ¾{ ¸çWXóbÐç˜c"øç³0‘a% èÓ03B% è&1'c%4èC½ %Dè²C~%hèæ6‚c%éæ6ñ &$éæ6 'Äéæ„ )4êæ„½ *Pêæ¾% *Äêæ¾Çc,,ëæ¾{ -Pëo;À .€ë˜® .œë×XÔc/°ëäXK/ÈëóXÔc/ÜëYK/ôëYÔc/ì!YK/ ìC½ /4ì²C~/Xìæ6d/˜ìæ6ñ 0´ìæ6 1íæ„ 3@íæ„½ 4\íæ¾% 4˜íæ¾d6Ðíæ¾{ 7ôí˜Á 8îJYd8îYYK94îkYd9HîwYK:`îC½ :|î²C~: îæ6kd:Pïæ6ñ ;lïæ6 < ðæ„ > ð愽 ?¼ðæ¾% ?`ñæ¾®dAòæ¾{ B$ò˜’ C@òê0¹ DTò˜’ Dpòê0¹ E„ò˜8eE òê0¹ F¸ò˜?eFÔòê0¹ Gìòo;À Gó˜Á GóÆYLeG,ó×YKGDóêYReGXóúYKIpóC½ IŒó²C~I°óæ6¦eIxôæ6ñ J”ôæ6 K`õæ„ MÀõ愽 NÜõæ¾% N|öæ¾üeP÷æ¾{ Q,÷˜ fRP÷³0fTd÷Ó0½ Tx÷˜Á TŒ÷˜°fT¨÷³0fUÀ÷Ó0½ UØ÷˜¼fUô÷ZäfV ø˜gZ<ø³0¹ ^PøÓ0g^dø&1 g^xøâ1'c^ŒøC½ ^œø²C~^Àøæ6tg^”ùæ6ñ _°ùæ6 `€úæ„ bû愽 c4ûæ¾% cÈûæ¾ÙgeDüæ¾{ fhüpZÿgg|ü~Z‘agüZhg¤üõW‘ag¸ü˜hgèüæ69hkýæ6ñ l4ýæ6 mhýæ„ oðý愽 p þæ¾% p¨þ澕hr ÿæ¾{ sDÿ˜® tTÿFÏ#£huˆÿ˜Á vÿFÏ#Éhv¬ÿ˜Á x´ÿFÏ#Õ9xÔÿ˜Á yÜÿFÏ#åhyðÿ˜Á zøÿFÏ#j4z ˜Á {FÏ#ð9{(˜ñh|8FÏ#úh}d˜ñh~tFÏ#i ˜iÈFÏ#Vi…T˜`i‡tFÏ#‚iа˜Á Œ¸FÏ#™iŒÌ˜©iäFÏ#¸i o;À 0˜® L-[Êi‘`7[K‘xC[Êi‘ŒN[K‘¤[[Ði‘¸e[K’Ðr[Ði’ä{[K“üC½ “²C~“4æ6j“æ6ñ ” æ6 •ôæ„ —p愽 ˜Œæ¾% ˜(æ¾`j𼿾{ ›à˜® œüê0½ ˜® ,ê0½ ž@˜èjž\ê0½ Ÿt˜ïjŸê0½  ¨˜Á  °FÏ#öj È˜ºN¢ØFÏ#&k£˜Kk¤FÏ#&k¦l˜QO§„FÏ#Ák©´˜³O«ÌFÏ#¡­( ˜ŽF®ˆ «[Zl¯¤ ³[é<°À »[…±Ô ˜Á ±Ü FÏ#fl±ô ˜Á ³ü FÏ#ql³ ˜Á ´ FÏ#‡l´D ˜¼lµ| Fù[Hmº FD3Á »L F \K»„ F\Wm»˜ F,\`m»¸ ˜¢m»8 «[Zl¼T L\²m½p ³[é<¾Œ »[…¿  ˜Á ¿¨ FÏ#Àm¿Ì ˜Á ÁÔ FÏ#qlÁè ˜Á Âð FÏ#åh ˜Á à FÏ#Òmà ˜Á Ä( FÏ#‡lÄT ˜¼lÅŒ Fù[HmÊFD3Á Ë\F \KË”F\Wm˨F,\`mËȘ›nËPt\±nÏlC ·nЈ|\²mѤ3 ÂnÒÜZÌnÔð˜Á ÔøFÏ#ãnÔ˜ònÖ(FÏ#oظ˜&oÙÈFÏ#4oÚü˜Á ÛFÏ#@oÛ(˜’ Ü8FÏ#NoÝt˜^oÞŒFÏ#|oàĘÁ áè7,«oá0È,±oãd•\àoå¤~*½ æÌ˜Á æÔFÏ#zpæ˜ãpèd»[…éxÓ\ûpé”Ù\qê°˜Á ë¸FÏ#qëИÁ íØFÏ#+qíì˜Á îôFÏ#Mqî ˜¢qïXFù[=rôäFD3Á õ(F \Kõ`F\PrõtF,\]rõ”˜Á õ¸7,Ÿrõ~*½ ÷ ï\¥r÷<È,¶r÷p˜Á ùˆÆ„·nù˜ƾ¼rú¬˜Á üÐ7,«oü~*½ þ8ï\ûrþT˜Á þlÆ„·nþ|ƾ¼rÿ˜Á ´7,4sê0~sD~*½ `˜Á xÆ„˜sƾs¤˜Á ¬FÏ#£sȘ¨sØFÏ#¯s ˜·s FÏ#¾s <˜äs”Fù[9t,FD3Á °F \KF\PtF,\atD˜<TFÏ#èt¤˜® ´FÏ#Auè˜auøFÏ#su ˜}u0FÏ#³u |˜Á !„FÏ#Åu!˜˜&o"¨FÏ#é<#̘Êu$äFÏ#Öu&$˜òn'<FÏ#Ûu)Иäu+ðFÏ#¶v.`˜¾v0xFÏ#5w2¬˜;w3¼FÏ#Lw4à˜äu6 FÏ#Xw9, ˜Á ;4 FÏ#bw;L ˜lw=l FÏ#lx@Ä ˜|xBÜ FÏ#ŸxD!˜äuF$!FÏ#»xIl!˜ÉxK„!FÏ# yMÐ!˜&oOà!FÏ#yP"˜!yR4"FÏ#W|W¬"˜~|YÔ"FÏ#ó|]#˜Á _#FÏ#}_@#˜Á aH#FÏ#Zlap#˜'Ubˆ#FÏ#€d¨$˜º€e¸$Fì1m%fØ$˜ô€fð$Fì1m%h%˜:h4%Fì1m%k`%˜†kˆ%FÏ#I‚o&˜„‚q0&FÏ#±‚s¤&˜º‚t´&FÏ#¿‚uÐ&˜Á vØ&FÏ#Ђvô&˜„‚w 'FÏ#qyP'˜â‚zh'FÏ#ó‚|˜'˜Á ~ 'FÏ#ƒ~¸'˜·s€È'FÏ#4ƒü'˜Bƒƒ(FÏ#5w†p(˜Á ‡x(FÏ#^ƒ‡Œ(˜Á ‰”(FÏ#dƒ‰¬(˜mƒŠÌ(FÏ#µƒˆ)˜ʃ˜)FÏ#¿‚´)˜냑Ä)FÏ#ûp’è)˜Á “ð)FÏ#òƒ“*˜øƒ•(*FÏ#$„˜*˜?„™À*FÏ#—4ž0+˜r„ŸP+FÏ#˜„¢+˜·„¤°+FÏ#é„§ü+˜ð„¨ ,FÏ#ü„©(,˜Á ª0,FÏ#[…ªx,˜¬…«Ð,Fù[2†´ü-FD3Á µd.F \Kµ¬.F\A†µÀ.F,\J†µô.˜X†µ /FÏ#Œ†·°/˜£†¹È/FÏ#´†»0˜H0Fù[Z‡Ãà0FD3Á Ä$1F \KÄ\1F\m‡Äp1F,\z‡Äœ1˜Œ‡Ä¬1FÏ#›‡ÅÐ1˜Œ‡Æà1FÏ#›‡Ç2˜ ‡Èt2FÏ#ΈÔÐ7˜Á ÕØ7FÏ#èˆÕì7˜Á Öô7FÏ# ‰Ö8˜,‰× 8FÏ#;‰ÙH8˜D‰Ú`8FÏ#^‰Ü”8˜&oݤ8FÏ#~‰Þà8˜ù\ß@9FÏ#&ké:˜Á ê:FÏ#1Œê:˜6Œë,:FÏ#EŒìH:˜RŒíX:FÏ#dŒî|:˜¿ïŒ:FÏ#qŒð°:˜6ñÀ:FÏ#qŒòä:[_šŒóœ;´-¬ŒõÀ;l_¾Œ÷<½_vþ8>Õ_¼P?ò_ެ?ý_KŽÀ?`yŽX@˜® t@U`’Žˆ@]`K @h` Ž´@r`KÌ@`­Žà@†`Kø@` Ž A˜`K$A£`¸Ž8Aª`KPA´`ÅŽdA½`K|AÉ`­ŽAÒ`K¨AC½ ¼A²C~àA˜<üAê0B˜I,Bê0T @B˜¯ \Bê0º!pB˜!ŒBê0" B˜<"¼Bê0#ÐB˜#ìBê0$C˜û$Cê0%0C˜<‘%LCê0&dC˜C‘&€Cê0T'˜C˜J‘'´Cê0º(ÌC˜Q‘(èCê0)D˜X‘)Dê0*4D˜_‘*PDê0+hD˜f‘+„Dê0,œD˜m‘,¬DFÏ#|‘-ØF˜’ .ôF˜Á /GFBõ*”/ G˜”18Gk+¹ 3LGÆ„ 3GÆ„½ 4¬Gƾ% 4üG¾c6HHƾ{ 7lH˜’ 8ˆH˜Á 9œHFBõ*”9´H˜”;ÌHk+¹ =àHÆ„ =$IÆ„½ >@Iƾ% >I¾c@ÜIƾ{ AJo;À BJa»B0Jaœ‘CLJ(aª‘E`Jb>â+â+A*"G*A*"%AðAðAðAðAðA@@@@@@ðAðAðAðAðA@@@@@%A@@@@@@%A@@@@@@é%Ñ"Ì*é%é%é%é%é%ÀOÌ*ÀOÃOÌ*é%ÀOÌ*ÀOÃOÌ*é%ÃOÌ*é%Ì*ÃOÌ*é%Ì*ÃOÌ*é%Ì*ÃOÌ*é%é%é%é%é%é%é%é%é%é%é%é%é%é%é%é%é%é%ÊOâ+â+Q¶@Ó=¶}R•R•Rƒ/ý:º2º2Ì*#S&S#S&SCSÑ"sSxS§2’SÑ"Ñ"²SÑ"ÏSÖSÞSäS$T§26TOTRTVT_TÞSnTOTÞSnTOT’T¥T,_TnT•RnT•R•RÞSÖS73ÞSnT„Qƒ/U3Uƒ/jU…U,nTjUžUnTjU¿UnTjUžU73nTøUV!V*VÓ=nTøUžUÖSTViVsV{V…VVšV Ó=ÖSTVÀV"#iVsVÖVÞVWWHWRö:031X X-X@@@@@@EXKXQXEXKXQX@@@@@@%A@@@@@@ðAðA@@@@@@ðAðA@@EXKX@@@@@@EXKX@@EXKXQXZEXKXQXZ@@@@@@ŸZ©Z¶Z X@@@@@@YÉ0YÂZÉ0*3ô%*3ÌZ#ÌZÌ*,ûQÌZØZÞZæZäSûQÌZØZº2É0*3ûQ Râ+%AðAðA@@@@@@ðAðA@@ƒ/ý:sSÌ*,xS&SÑ",xSðAÑ"â+Ì*©Zº2º2º2Y*3É0Ñ[Ñ"æ[î[ñ[\ŸZº2º2º2º2É0*3*3*3É0\\Ñ"æ[î[ñ[\ÞSÖS©Zn\º2º2º2º2Yº2YÞSÖSÉ0ÞSÉ0É0 1É0ÞS‡\ 1Ì*U,Ì*U,£\,§\Ë\¿Uº2º2Ì**3É0à\Ñ"æ[î[ñ[\ó*± ó*± @Ì*U,ó*± @Ì*U,ó*± ó*@Ì*U, 1+]ó*± nTb>,ÞSÖSnT¥T5]=]B]î[ ñ[\6TOTÉ0VTM],T]’TÉ0£\ÞS[]nTa]•RÞSÖSƒ/QÞSnT„Qƒ/•R‚]ƒ/ðA‚]ƒ/#ÞSnT„Qƒ/Uƒ/ý:ÖSŽ]ƒ/º2É0ÖSŽ]ƒ/UÞSnT„Qƒ/UÞSƒ/›]#ÞSƒ/U¡]°]¾]Õ]ƒ/º2É0¡]°]¾]Õ]ƒ/UÌ*É0Ì*3Uƒ/É03U3UÑ23UÑ2á]3UÑ2á]è]ƒ/É0nTï]•Rû.²SÌ*nTï] 1nTjU,Ì*,Ì*nT,Ì*nT73,•Rº2 ^û.nTjU,V¿U^²S!^[]ó*± nTjU!^+^nTøU,V•R!VnTøU,VÉ0nT2^øU•RD^R^\^g^}^‘^£\Ñ"æ[=]î[ ñ[\^,xSÉ0§^iV•R§^iV¿UÑ"æ[î[ñ[\"#¶^"#¶^ŸZÖSnTg^øUa]jU!^ Â^ §^ TV ÀViV*3*3Â^iV 1ÞSÂ^iVÞSÔ^ÖSÛ^3Uì^ý^ _"_._ 8_ n\?_•RI_Q_V_Ì*X_QÑ"Qd_j_d_j_|_ƒ_d_ˆ_’_#§2|_ƒ_d_ˆ_’_#0Ó=|_ƒ_d_è_ˆ_’_î__T|_ƒ_d_è_ˆ_d_è_´-%AðAðAðAðAðAðAðAðAðAðAðAðAðAðA@@@@@@@Þ`ã`e+C+»C+»@@@e+C+»C+»@@@Ñ"$aa#Ia##aœaYœaœaœaœaœaœaœaœaœaœaý:œaý:$aa#É0aÉ0yb(@"¬%«b"_¶b(@A*" $ÓbÉbëböbccccYÌ*1cAcº2=]î[ñ[\ÓbÉbYÌ*1cwcº2=]î[ñ[\û.0 9 ýcdd"d-dÉ0ñ3Ñ"æ[î[ñ[\É04d=d(@Adñ34dÑ"æ[OdRd ! =] î[ ñ[\[d¬%k$=]î[ñ[\É04d=d(@Adñ34dÑ"æ[OdRd ! =] î[ ñ[\pdYÌ*=]î[ñ[\-$ $q$-$Y$dk$¥$¶@Ó=¶Ô˜Í¬ ˜’ )žCA´ Ï#¡1˜’ A˜B9˜;B¼ ˜’ Ä Ï#¡Ì ˜’ Ô Ï#¡ä˜Á ì˜Á üÏ#¡Ü yÛ&ä yÛ&ì yÛ&·O^Eô ³0Õü yÛ&ü 2ä&ô˜Á ¤˜<ü˜Á ÆOF˜Á l ˜< ˜Á  ˜<ì 2ä& 2ä& yÛ& ˜< 2ä& yÛ&¬š"˜Á $ r&¹ ˜Á $˜Á , w,Õ, "W4 ˜<ä 6 ì 6 Ô6 6 Ü ¾% ä ¾% ì ¾% Ô¾% ¾% I˜’ yQ‘Iù”Q²ID 6 L 6 T ¼,MT ê0¡\ "Õd È,Ml ˜’ ÉA2A¬Ï#¡URPKó0™Kd ˜„Œ ,” +,Õœ ,¤ +,Õì,¬ +,Õ´ ˜’ ¼ ,˜&Ä àRÌMÄ îRÚMÌ ˜<Ô ¸#ÕÜ GS*NÜ VSÕÔ H ™ ä ,ÆÔ ˜™ ì ˜ºNô ˜™ Y©*9Oü ˜QOô ¸#Õ ˜® ˜³O ˜Á  , +,Õ4 ³0Õ4 Ó0W 7,<$ ê0¡, ˜’ iýS´P4 Ï#¡i TÁ iTÁ < ˜<GS*ND ˜<L ¸#ÕT 2ä&L H ™ VSÕ\ ˜® d ê0¡>ToQl È,MT yÛ&L ˜™ t ê0¡©©*9RŠ,PR„ ˜<„ Ó0W„ ³0ÕŒ ê0¡Yd,ºS” È,Mœ 7,™ ¤ ê0W¬ ê0Õ´ ˜’ ¼ ,˜&Ä ˜'U¤Ï#¡Ì DUÖUYŠ,VYA[VÔ ˜® Ì ˜„ä ˜<äÏ#¡ì ˜<ô Ï#¡t,Æ<˜<<³0Õi˜Á ü ˜<D yÛ&D 2ä&&W[q+WÁ  ˜„ ˜™ ¸#ÕÜ , +,ÕüÏ#¡$ ,, +,Õ4 w,Õ4 "W< ˜<< Ó0W< ³0ÕìÏ#¡D ˜<D ³0ÕD Ó0W©c2b\L ˜<L Ó0WL ³0ÕT ˜ù\\ Ï#¡|Ï#¡ô˜<옆]Ü 6 „ Ô„ ì „ ä „ Ü „ l ˜’ t Ï#¡| ˜’ „ Ï#¡Œ ˜’ ” Ï#¡œ ˜’ ¤ Ï#¡¬ ˜’ ´ Ï#¡œ6 œ„ œ¾% L „ D „ D ¾% L ¾% œ˜Á  ³0Õ Ó0W¤˜Á ¬˜Á ü ³0Õ´˜Á ¼˜Á ĘÁ ̘Á  ³0Õ Ó0WÔ˜Á ܘÁ ¼ ˜’ Ä Ï#¡ô˜Á ü˜Á Ì sSkÔ ¸#ÕÜ 2ä&Ô H ™ ä ,-kä xS9kì ¸#ÕYÈ,lkô 7,€kì H ™ üÏ#¡˜Á ü Ñ"‹kü ,-kä ˜Kk Ï#¡d,®k ˜Á Ñ"Ðk â+Úk ‡[l$ ˜<$ Ó0W$ ³0Õ Ï#¡ L,<˜Á , ˜<˜Á , ³0Õ$˜Á , Ó0W˜<ùÇ[{l,˜Á ùÆOúlùó0%m4˜Á ü Ó0W<˜Á D˜Á D ˜<L˜Á D ³0ÕD Ó0WT˜Á \˜Á d˜Á l˜Á L ˜<T ˜Á T ¼,MT ê0¡ 7,€kT L,< È,MT ‡[l\ ˜<\ Ó0W\ ³0ÕùŠ,øot˜Á l w,Õl "Wt ˜<t Ó0W ~*½ | ê0¡|˜Á „ ˜<„˜Á „ ³0ÕŒ˜Á „ Ó0WŒ ˜<”˜Á ¤ ˜Á ¤ ¼,M¬ ˜Ô¤ L,<¤ ê0¡¬ 7,™ ¤ ~*½ ¬ È,M´ ˜Á ´ ¼,M´ L,<´ ê0¡´ ~*½ Ä ˜Á Ä ¼,MÌ ˜ÔÄ L,<Ä ê0¡Ì 7,™ Ä ‡[lÔ ˜<Ô Ó0WÔ ³0ÕùA^sÄ ~*½ ‰˜’ !]‘s¬˜Á ´˜Á œyÛ&œ2ä&¼˜Á ” 7,€kĘÁ YÇ[tä ˜<¡;,)t̘Á ì 6T­"ô ³0Õô Ó0WéH]’tü 7,€k7,ÆtÔ˜Á VT¶ "Õš"˜<$š"ܘÁ ä˜Á ä ³0Õä Ó0Wœ ˜Á ì˜Á ô˜Á ü˜Á ˜Á ˜Á ,˜’ ¼ ,Ë,˜Á 4˜’ <,ƘÁ $˜Á ,˜Á 4˜Á D˜’ L,Ë,<˜Á D˜Á L˜Á T˜’ ô,ÆT˜Á \˜Á \³0Õ\Ó0W\&1Å#\â1/%d˜’ l,Ë,t,{$d˜Á l˜Á |³0Õ|Ó0W„³0Õ„Ó0W\˜b}t˜Á |˜Á Œ3U€YŒƒ/”³0Õ”Ó0W”&1Å#”â1/%”Ä1 %”Î1%%”Ø1*%”»1%œ³0Õ¤˜’ ¬,Æ´˜ô€¼3U€Y¼Ñ2Ę:Ì3U€YÌÑ2Ìá]Ô˜†„˜Á ä3U€YäÑ2äá]äè]œ˜™ ”˜†]|Ï#¡Œ˜Á ìyÛ&”˜Á Ì 7,€kœ˜Á ¤˜Á ¬˜Á ´˜Á ¼˜Á ™Š,ƒÔ 7,™ ĘÁ ̘Á Ô˜Á ôÈ,Mô7,€k H ™ üÏ#¡Y:2ԃܘÁ ä˜Á ì˜Á Ì Ó0WÌ ³0ÕÌ Î*Kô˜Á ì ³0Õì Ó0Wü˜Á yÛ&2ä&˜Á ˜< ˜Á w,Õ"W˜<Ó0W³0Õ˜Á Ü ,$+,Õ˜Á ³0Õ Ó0W4Ï#¡$˜Á ,˜Á 4˜Á <˜Á D 0½ ìGS*NìVSÕÍ^󇤚"D˜<D˜Á D³0ÕL˜Á DÓ0WT˜Á \˜Á d˜Á ”˜b}LÖSÑXLÛ^¶ L3U€YLì^Lý^;L _±L"_ÄL._»L8_ßZLn\\˜™ d˜†]lÏ#¡l˜Á t˜Á |˜Á tÏ#¡„˜Á $X_®LÑ"9k -[à#qØ2’ q˜_¡ª_"tÏ#¡œ GS*Nœ VSÕ” ³0Õ” Ó0W  `]Ž g1bŽ|˜’ „Ï#¡Œ˜Á ” &1Å#¬ö"»¬Ä"߬#7[aª‘ea»‘¬á á ¬¤ - ¬³ - ¬Ö Û Óaç‘Ýaª‘¬ Ä ¬q Ä ”˜Á Œ³0ÕŒÓ0WŒ&1Å#>b·nea'“¹¢2U“abª‘”i*¶ ”`*† œÈ(¶ ¤"ÕœÂ's¬Ï#¡´¤ - ´³ - ¼Ç*™ ”Ç*™ ¼i*¶ <˜Á <L,<”˜® ¼˜® œ§'iœÛ' œð' œ0( œ7( œR( œp( œ( ´"KÄÏ#¡œ³'¶ œÎ'|ÌÏ#¡œ( ¼`*† äÏ#¡œ( ¤š"ÔÓ0WÔ³0Õܘ†””Ã*~䘆”ì˜`œ®(…ôÏ#¡ü˜® ü‡[lüL,<Ô˜<œ˜Á ±lc;–¤˜Á ¹˜Á Á˜Á ɘÁ ô ˜<¬˜Á ´˜Á (@A— Ad¶ ñ39” 4dÒV Ñ"Ç– æ[Ø– OdI— RdU— !¶ =]'! î[¶ ñ[¶ ˜†”¼˜Á (@A—Ad¶ ñ39”4dÒVÑ"Ç–æ[Ø–OdI—RdU—!¶ =]'!î[¶ ñ[¶ ˜†”üpd©—üY¶ üÌ*6ü=]õüî[¶ üñ[6ĘÁ ¤ „!½ ¤ ~ ½ ¤ ˜!® ¤ *!½ ¤ B!® ¤ o!® ¤ !® ¤ Ã!® ¤ Z!½ Ï#¡¤ "K¤ +"O$˜<,Ï#¡Ì³0ÕÌÓ0W)¿d˜Ñêd‡˜Ü³0ÕÜÓ0WéLeY™T"ý4Ö#Á ̘Á \"ý4ç#öÔ˜Á t‹e† t•e†4˜.<Ï#¡4"® 4!Û 4Z!½ ܘÁ D‹e† D-$ýÑšeöL‹e† L•e®L-$ýTÏ#¡D˜«™ÑŸeü™ä˜Á Œ‹e† Œ•e®L˜Ê™\,Æd,ÆÑ¤e‡šÁ¢2U“ì˜Á á¼e¦šô˜Á ü˜Á ¬ë!%ÌÏ#¡Ñ˜0e›˜Á ˜Á ˜Á ˜Á ,³A0ì 4¸A8½A<ÂA@ÇADÌAHÑALÖAPÛATàAXåA\êA`ïAdôAhùAlþApBð³Aôì ø¸Aü½AÂAÇAÌA ÑAÖAÛAàAåA êA$ïA(ôA,ùA0þA4B8pD<uD|³A€ì „¸Aˆ½AŒÂAÇA”ÌA˜ÑAœÖA ÛA¤àA¨åA¬êA°ïA8³A<ì @¸AD³AHì `³Adì Ô³AØì ܸAà½Aô ³Aø ì ü ¸A ½A ÂA ÇA ÌA!S­ )C' . .— .§ .#— .+ .3÷ .; AS­ C“‡ IC8 aS­ c“‡ iCE S­ ƒ£ì ƒ“ ‰CR ¡S­ ££ì £“ ©C_ ÁS­ ãì Ó àsì áS­ ã“ sì £ì “ sì #“‡ )Kl @sì C“ `sì c“i€sì ƒ“i££ì £“ Ó24 C' )C8 àK8 `sì €sì S­ ¡S­ ÁS­ áS­ S­ !S­ )C' AS­ IC8 aS­ iCE S­ ‰CR ¡S­ ©C_ ÁS­ ÉCËáS­ éCØS­ Cå!S­ )CòAS­ ICÿaS­ iC ‰C©C&ÉCBéCO C\iC' ƒ“24¡S­ ¡sì ¡ëì ©““ÁS­ Ásì Áëì Ó24É““áS­ ásì áëì ãc A㓪Aé““KV ““ KÏ#s BB#c A)““Cs ’BCc AI““cs Ccc Ai““ƒs QCƒc A‰““£s  C£c A©““ÁS­ Ásì Áëì É““é““ ““ sì ) ““@ sì ` sì c c Ac “ªA£ c A£ “ªA sì ““) ““I ““  sì © ““À sì É ““é ““ ““I ““i ““ S­ ‰ ““¡ S­ © ““Á S­ É ““á S­ é sì é ëì é S­  S­ sì ëì S­ ! S­ ) sì ) ëì ) S­ A S­ I sì I ëì I S­ a S­ i sì i ëì i S­ S­ ‰ sì ‰ ëì ‰ S­ ¡ S­ © sì © ëì © S­ Á S­ É sì É ëì É S­ á S­ é sì é ëì é S­  S­ sì ëì S­ ! S­ ! sì ! ëì ) sì ) ëì ) S­ A S­ I sì I ëì I S­ a S­ i sì i ëì i S­ S­ ‰ sì ‰ ëì ‰ S­ ¡ S­ © sì © ëì © S­ Á S­ É sì É ëì É S­ á S­ é sì é ëì é S­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ƒ“24‰sì ‰ëì ‰S­ ¡S­ £“‡ ©sì ©ëì ©S­ ÁS­ Ãc AÓªAÉsì Éëì ÉS­ áS­ ãc A㓪Aék Bésì éëì S­ k B sì ëì !S­ #c A#“ªA)k ÚB)sì )ëì AS­ Ik @CIsì Iëì aS­ cs µdcc Aik Cisì iëì €sì S­ ƒs õdƒc A‰k B‰sì ‰ëì  sì ¡S­ ©k B©sì ©ëì Àsì ÁS­ Ék ÚBÉsì Éëì àsì áS­ ãc A㓪Aék @Césì éëì sì S­ k C sì ëì !S­ #s f#c A)sì )ëì )S­ AS­ Cs cfCc AIsì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ £c A£“ªA©sì ©ëì ©S­ Àsì ÁS­ Ó‡ Ésì Éëì ÉS­ àsì áS­ ésì éëì éS­ sì S­ sì ëì S­ sì !S­ )sì )ëì )S­ @sì AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ àó^áS­ ésì éëì éS­ óôS­ sì ëì S­ óŽ!S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ cc Ac“ªAisì iëì iS­ S­ ‰sì ‰ëì ‰S­  S¡S­ £s mj£c A©sì ©ëì ©S­ ÁS­ Ãs ªjÃc AÉsì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ó Ésì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ C“nmIsì Iëì IS­ aS­ c“ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ #“nm)sì )ëì )S­ AS­ C“ Isì Iëì IS­ aS­ isì iëì iS­ €SS­ ‰sì ‰ëì ‰S­  S¡S­ ©sì ©ëì ©S­ Àsì Àëì ÁS­ Ésì Éëì ÉS­ àsì àëì áS­ ésì éëì éS­ sì ëì S­ sì ëì S­ sì ëì !S­ #“ )sì )ëì )S­ @sì @ëì AS­ Isì Iëì IS­ `sì `ëì aS­ c“ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ ã“nmésì éëì éS­ S­ “ sì ëì S­ !S­ #“nm)sì )ëì )S­ AS­ C“ Isì Iëì IS­ aS­ c“nmisì iëì iS­ S­ ƒ3‡sƒ“ ‰sì ‰ëì ‰S­ ¡S­ £“nm©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ #“nm)sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ éC' S­ C8 !S­ )CE AS­ ICR aS­ iC_ S­ ‰CË¡S­ ©sì ©ëì ©S­ ÁS­ Ék BÉsì Éëì áS­ ék Ãbésì éëì S­ k âb sì ëì !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ‰sì ‰ëì ‰S­ ¡S­ ©sì ©ëì ©S­ ÁS­ Ésì Éëì ÉS­ áS­ ésì éëì éS­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ `sì `ëì aS­ ik Bisì iëì €sì €ëì S­ ‰k B‰sì ‰ëì  sì  ëì  sì  ëì ¡S­ ©k B©sì ©ëì Àsì Àëì Àsì Àëì ÁS­ Ék BÉsì Éëì áS­ ésì éëì éS­ S­ sì ëì S­ !S­ )sì )ëì )S­ AS­ Isì Iëì IS­ aS­ ik Bisì iëì S­ ‰k Ãb‰sì ‰ëì ¡S­ ©k B©sì ©ëì ÁS­ Ék ÃbÉsì Éëì àsì àëì áS­ ésì éëì éS­ sì ëì S­ k B sì ëì !S­ )k Ãb)sì )ëì AS­ Ik âbIsì Iëì aS­ asì aëì ik Ófisì iëì S­ ‰C' ¡S­ ©C8 ÁS­ ÉCE áS­ éCR S­ sì ëì S­ !S­ #“nm)sì )ëì )S­ AS­ Isì Iëì IS­ aS­ isì iëì iS­ S­ ƒ“nm‰sì ‰ëì ‰S­ ¡S­ ¡sì ¡ëì ©sì ©ëì ©S­ ÁS­ Ásì Áëì Ésì Éëì ÉS­ áS­ ásì áëì ék Bésì éëì  S­  sì  ëì k B sì ëì ! S­ ! sì ! ëì ) k B) sì ) ëì A S­ A sì A ëì I k BI sì I ëì a S­ a sì a ëì S­ sì ëì ¡ S­ ¡ sì ¡ ëì Á S­ Á sì Á ëì á S­ á sì á ëì !S­ !sì !ëì !!S­ !!sì !!ëì A!S­ A!sì A!ëì £!“24Ã!c AÃ!“ªAÉ!““é!sì é!ëì é!S­ "s "c A "sì "ëì "S­ #"s ^#"c A)"sì )"ëì )"S­ C"s ÄC"c AI"sì I"ëì I"S­ c"s (c"c Ai"sì i"ëì i"S­ ƒ"s nƒ"c A‰"sì ‰"ëì ‰"S­ £"s ³£"c A©"sì ©"ëì ©"S­ Ã"s ‘Ã"c AÉ"sì É"ëì É"S­ é"k Bé"sì é"ëì #k B #sì #ëì )#k ž)#sì )#ëì I#k I#sì I#ëì i#k ]i#sì i#ëì ‰#k ¢‰#sì ‰#ëì ¡#S­ ¡#sì ¡#ëì ©#k ê©#sì ©#ëì Á#S­ Á#sì Á#ëì É#k BÉ#sì É#ëì á#S­ á#sì á#ëì ã#“ié#k Bé#sì é#ëì $S­ $sì $ëì $“i $k ž $sì $ëì !$S­ !$sì !$ëì )$k )$sì )$ëì A$S­ A$sì A$ëì C$“24I$k ]I$sì I$ëì a$S­ a$sì a$ëì i$k ¢i$sì i$ëì $S­ $sì $ëì ‰$k ê‰$sì ‰$ëì  $S¡$S­ ¡$sì ¡$ëì ©$C' À$Su=Á$S­ Á$sì Á$ëì Ã$“24É$C' à$S£=á$S­ á$sì á$ëì ã$“24é$““%Su=%S­ %sì %ëì %“ %S£=!%S­ !%sì !%ëì #%“nm@%SA%S­ A%sì A%ëì C%“ `%Su=a%S­ a%sì a%ëì c%“nm%S­ %sì %ëì ƒ%ƒì ƒ%‹ì ƒ%“ì ƒ%“  %S¡%S­ ¡%sì ¡%ëì £%“nmÁ%S­ Á%sì Á%ëì É%C' á%S­ á%sì á%ëì ã%“nmé%C8 &sì &S­ &sì &ëì &CE &sì !&S­ !&sì !&ëì @&sì A&S­ A&sì A&ëì C&“nm`&sì a&S­ a&sì a&ëì c&“nm€&sì &S­ &sì &ëì ¡&S­ ¡&sì ¡&ëì Á&S­ Á&sì Á&ëì Ã&“nmá&S­ á&sì á&ëì 'sì 'ëì 'S­ 'sì 'ëì '“nm 'sì 'ëì !'S­ !'sì !'ëì #'“24A'S­ A'sì A'ëì a'S­ a'sì a'ëì (sì (ëì )Su= )S€)sì €)ëì  )C@À)sì À)ëì à)C@*sì *ëì *S­ *sì *ëì *C(@!*S­ !*sì !*ëì @*sì @*ëì A*S­ A*sì A*ëì `*C;@a*S­ a*sì a*ëì €*sì €*ëì *S­ *sì *ëì  *CH@¡*S­ ¡*sì ¡*ëì À*sì À*ëì Á*S­ Á*sì Á*ëì à*CU@á*S­ á*sì á*ëì +sì +ëì +S­ +sì +ëì +Cb@!+S­ !+sì !+ëì @+sì @+ëì A+S­ A+sì A+ëì `+Co@a+S­ a+sì a+ëì €+sì €+ëì +S­ +sì +ëì  +C|@¡+S­ ¡+sì ¡+ëì À+sì À+ëì Á+S­ Á+sì Á+ëì à+C‰@,sì ,ëì ,C–@@,sì @,ëì `,C£@€,sì €,ëì  ,C°@À,sì À,ëì à,C½@-sì -ëì -CÊ@@-sì @-ëì `-C×@€-sì €-ëì  -Cä@À-sì À-ëì à-Cü@.sì .ëì .sì .ëì `.sì €.sì  .sì À.sì à.sì á.S­ /sì /S­ /sì !/S­ @/sì A/S­ `/sì `/ëì a/S­ €/sì €/ëì /S­  /sì  /ëì ¡/S­ À/sì À/ëì Á/S­ à/sì à/ëì á/S­ 0sì 0ëì 0S­ 0sì 0ëì 0sì 0ëì !0S­ @0sì @0ëì A0S­ `0sì `0ëì a0S­ €0sì €0ëì 0S­  0sì  0ëì ¡0S­ À0sì À0ëì Á0S­ à0sì à0ëì á0S­ á0sì á0ëì 1sì 1ëì 1S­ 1sì 1ëì 1sì 1ëì !1S­ !1sì !1ëì @1sì @1ëì A1S­ A1sì A1ëì `1sì `1ëì a1S­ a1sì a1ëì €1sì €1ëì 1S­ 1sì 1ëì  1sì  1ëì ¡1S­ ¡1sì ¡1ëì À1sì À1ëì 2sì 2ëì 2CD@2sì @2ëì `2C Da2S­ a2sì a2ëì €2sì €2ëì 2S­ 2sì 2ëì  2C@¡2S­ ¡2sì ¡2ëì À2sì À2ëì Á2S­ Á2sì Á2ëì à2C@á2S­ á2sì á2ëì 3sì 3ëì 3C(@@3sì @3ëì A3S­ A3sì A3ëì `3C;@a3S­ a3sì a3ëì €3sì €3ëì 3S­ 3sì 3ëì  3CH@¡3S­ ¡3sì ¡3ëì À3sì À3ëì Á3S­ Á3sì Á3ëì à3CU@á3S­ á3sì á3ëì 4sì 4ëì 4S­ 4sì 4ëì 4Cb@!4S­ !4sì !4ëì @4sì @4ëì A4S­ `4Co@a4S­ €4sì €4ëì 4S­  4C|@¡4S­ À4sì À4ëì à4C‰@5sì 5ëì 5C–@@5sì @5ëì `5C£@€5sì €5ëì  5C°@À5sì À5ëì à5C½@6sì 6ëì 6CÊ@@6sì @6ëì A6S­ A6sì A6ëì `6C×@a6S­ a6sì a6ëì €6sì €6ëì 6S­ 6sì 6ëì  6Cä@À6sì À6ëì à6Cü@7sì 7ëì 7sì 7ëì !7S­ !7sì !7ëì A7S­ A7sì A7ëì `7sì a7S­ a7sì a7ëì €7sì 7S­ 7sì 7ëì  7sì À7sì à7sì 8sì 8sì @8sì €8sì €8ëì  8CH@À8sì À8ëì à8CU@9sì 9ëì 9S­ 9sì 9ëì 9Cb@!9S­ !9sì !9ëì @9sì @9ëì A9S­ A9sì A9ëì `9Co@a9S­ a9sì a9ëì €9sì €9ëì  9C|@À9sì À9ëì à9C‰@:sì :ëì :C–@!:S­ !:sì !:ëì @:sì @:ëì A:S­ A:sì A:ëì `:C£@a:S­ a:sì a:ëì €:sì €:ëì :S­ :sì :ëì  :C°@À:sì À:ëì à:C½@;sì ;ëì ;CÊ@@;sì @;ëì `;C×@€;sì €;ëì  ;Cä@À;sì À;ëì à;Cü@S­ A>sì A>ëì a>S­ a>sì a>ëì >S­ >sì >ëì ¡>S­ ¡>sì ¡>ëì á>S­ á>sì á>ëì ?S­ ?sì ?ëì CS­ Csì Cëì DS­ Dsì Dëì ADS­ ADsì ADëì aDS­ aDsì aDëì ¡DS­ ¡Dsì ¡Dëì ÁDS­ ÁDsì ÁDëì áDS­ áDsì áDëì AES­ AEsì AEëì ¡ES­ ¡Esì ¡Eëì ÁES­ ÁEsì ÁEëì áES­ áEsì áEëì FS­ Fsì Fëì aGS­ aGsì aGëì GS­ Gsì Gëì HS­ Hsì Hëì !HS­ !Hsì !Hëì  Hsì ÀHsì àHsì IS@IS`ISaIS­ aIsì aIëì €ISIS­ Isì Iëì  Isì ¡IS­ ¡Isì ¡Iëì ÀIsì ÁIS­ ÁIsì ÁIëì áIS­ áIsì áIëì  JSáJS­ áJsì áJëì KS­ Ksì Këì !KS­ !Ksì !Këì AKS­ AKsì AKëì  KSÀKS Lsì @Nsì €Nsì OSOS­ Osì Oëì !OS­ !Osì !Oëì OS­ Osì Oëì Psì Psì @Psì `Psì €Psì PS­ Psì Pëì  Psì ¡PS­ ¡Psì ¡Pëì ÀPsì ÁPS­ ÁPsì ÁPëì àPsì áPS­ áPsì áPëì QCü@QS­ Qsì Qëì Qsì Qëì !QS­ !Qsì !Qëì @Qsì @Qëì AQS­ AQsì AQëì `Qsì `Qëì aQS­ aQsì aQëì €Qsì €Qëì QS­ Qsì Qëì  Qsì  Qëì ¡QS­ ¡Qsì ¡Qëì ÁQS­ ÁQsì ÁQëì àQsì áQS­ áQsì áQëì Rsì RS­ Rsì Rëì Rsì !RS­ !Rsì !Rëì @Rsì `Rsì €Rsì  Rsì ¡RS­ ÀRsì ÁRS­ ÁRsì ÁRëì Ssì Sëì SC×@@Ssì @Sëì ASS­ `SCä@aSS­ aSsì aSëì €Ssì €Sëì  SCü@ÀSsì ÀSëì àSsì àSëì Tsì @Tsì `Tsì aTS­ aTsì aTëì €Tsì TS­ Tsì Tëì  Tsì ¡TS­ ¡Tsì ¡Tëì ÀTsì àTsì Usì Usì Uëì @UCä@`Usì `Uëì €UCü@US­ Usì Uëì  Usì  Uëì ¡US­ ¡Usì ¡Uëì ÀUsì ÀUëì ÁUS­ ÁUsì ÁUëì Vsì Vsì @Vsì `Vsì €Vsì  Vsì ÀVsì àVsì Wsì Wëì WS­ Wsì Wëì Wsì Wëì !WS­ !Wsì !Wëì @Wsì @Wëì AWS­ AWsì AWëì `Wsì `Wëì aWS­ aWsì aWëì €Wsì €Wëì  Wsì  Wëì ÀWsì ÀWëì àWsì àWëì Xsì Xëì !XS­ !Xsì !Xëì @XCä@AXS­ AXsì AXëì `Xsì `Xëì aXS­ aXsì aXëì €XCü@XS­ Xsì Xëì  Xsì  Xëì ¡XS­ ¡Xsì ¡Xëì ÀXsì ÀXëì ÁXS­ ÁXsì ÁXëì áXS­ áXsì áXëì Ysì YS­ Ysì Yëì Ysì @Ysì `Ysì €Ysì YS­ Ysì Yëì  Ysì ¡YS­ ¡Ysì ¡Yëì ÀYsì ÁYS­ ÁYsì ÁYëì àYsì Zsì Zëì Zsì Zëì @Zsì @Zëì `Zsì `Zëì €Zsì €Zëì ZS­ Zsì Zëì  Zsì  Zëì ¡ZS­ ¡Zsì ¡Zëì ÀZsì ÀZëì ÁZS­ ÁZsì ÁZëì àZsì àZëì áZS­ áZsì áZëì [Cü@[S­ [sì [ëì [sì [ëì ![S­ ![sì ![ëì @[sì @[ëì A[S­ A[sì A[ëì `[sì `[ëì a[S­ a[sì a[ëì €[sì €[ëì  [sì  [ëì À[sì À[ëì á[S­ á[sì á[ëì \sì \S­ \sì \ëì \sì !\S­ !\sì !\ëì @\sì `\sì €\sì  \sì À\sì à\sì  ]sì À]sì à]sì ^sì ^sì @^sì `^sì a^S­ a^sì a^ëì €^sì ^S­ ^sì ^ëì ¡^S­ ¡^sì ¡^ëì Á^S­ Á^sì Á^ëì á^S­ á^sì á^ëì _S­ _sì _ëì ¡_S­ ¡_sì ¡_ëì A`S­ A`sì A`ëì a`S­ a`sì a`ëì aS­ asì aëì !aS­ !asì !aëì aaS­ aasì aaëì aS­ asì aëì ¡aS­ ¡asì ¡aëì Àasì Àaëì ÁaS­ Áasì Áaëì àaCÊ@áaS­ áasì áaëì bsì bëì bS­ bsì bëì bC×@@bsì @bëì `bCä@€bsì €bëì  bCü@¡bS­ ¡bsì ¡bëì Àbsì Àbëì ÁbS­ Ábsì Ábëì àbsì àbëì csì @csì `csì acS­ acsì acëì €csì cS­ csì cëì  csì Àcsì àcsì dsì dsì dëì @dsì @dëì `dsì `dëì €dsì €dëì  dsì  dëì Àdsì Àdëì àdsì àdëì esì eëì hsì hëì @hsì @hëì Àjsì Àjëì àjsì àjëì €kSàosì àoëì psì pëì tsì tëì @tsì @tëì `zsì `zëì €zsì €zëì  zsì  zëì  zsì  zëì Àzsì Àzëì Àzsì Àzëì àzsì àzëì àzsì àzëì àzsì àzëì {sì {ëì {sì {ëì {sì {ëì  €sì  €ëì À€sì À€ëì àsì àëì ‚sì ‚ëì  …SÀ…S†sì @†S.Ž€†Su= †sì  †ëì À†C£@à†sì à†ëì ‡C°@ ‡sì ‡ëì @‡C½@`‡sì `‡ëì €‡CÊ@ ‡sì  ‡ëì À‡C×@à‡sì à‡ëì ˆCä@ ˆsì ˆëì @ˆCü@`ˆsì `ˆëì €ˆsì €ˆëì Àˆsì Àˆëì àˆsì àˆëì ‰sì ‰ëì ‰sì ‰ëì @‰sì @‰ëì `‰sì `‰ëì €‰sì €‰ëì  ‰sì  ‰ëì À‰sì À‰ëì à‰sì à‰ëì Šsì Šëì Šsì Šëì @Šsì @Šëì `Šsì `Šëì €Šsì €Šëì  Šsì  Šëì ÀŠsì ÀŠëì àŠsì àŠëì ‹sì ‹ëì ‹sì ‹ëì @‹sì @‹ëì `‹sì `‹ëì €‹sì €‹ëì  ‹sì  ‹ëì À‹sì À‹ëì à‹sì à‹ëì Œsì Œëì Œsì Œëì sì @sì `sì €sì  sì `Žsì €Žsì  Žsì ÀŽsì àŽsì @SS ‘K ’@‘K`’@‘S`‘K±’`‘S`’sì `’ëì €’sì €’ëì  ’sì  ’ëì À’sì À’ëì à’sì à’ëì “sì “ëì @“S£=`”sì `”ëì €”sì €”ëì `•sì `•ëì €•sì €•ëì à—sì à—ëì ˜sì ˜ëì ™sì ™ëì @™sì @™ëì à™sì à™ëì šsì šëì ›sì ›ëì @›sì @›ëì à›sì à›ëì œsì œëì `œsì €œsì  ž-ž™žÁž [>\:]H^X_´`a¨b¶ Î ß ö ú £  † jr†–®`2„«ýº ¨Ì Ëÿ&*DnŒ¢ÄÇÜ.6yDIO^éõþ-®b~‚ŒãB‹ Sàåê8Ò×Ü!Do¬³¸É×Üï"27‡;ª±»ÄÒÛî%6c–žÕý-?O`l£Ëê 5 J ‹ ½ â î ú !!!#!'!/!'>,>1>6>O>–>Þ>?t?˜?§?GAWAD[DjD€D¹DÈDÎDíDýDŠEÊEãEQF…F—FÏFýFG+GKGVGiGvG|GÑGãGVHÊHlIƒI˜IÓIáIÿIDJÞJðJúJÿJKKK'K,K6K;KHKJL#M(M¬MNBN†N’NœNÈN"OkO”OÈOèO÷OPcP{PÄP¸QóQRRžRXÇXÌXÑXÖXÛXëXóXûX YY-Y>YWYlY€Y°Y¼YÃYÎYÝYèYíYôYZ ZZZ Z(Z+Z.Z>ZOZ[ZgZnZsZZ™Z¶ZÒZßZçZ÷Z[š]ôa3bkb«bjc‰c¡c¨c¾cdd$dQdrdŒd—d\e‰e­eÊeÑeëeQg{gžg¦gÐgàg@hFhœh0iþij1j;jOjgjïkÀ4l-lMl¹mnn~n¼nüno-o£o·oÎoŠo"p0p…b†œ…v†«†ˆh‰¤‰û‰|‹‘ŒÛŒàŒêŒïŒôŒùŒþŒ 5Y<–›ëSŽXŽgŽt‘“2“]“x“«“} ß“æ“ï“ô“iø“ý“M” ”v”” ”$”(”9”BE”õ”ñ• –±—Ä—B˜W˜_˜t˜˜î˜™T™`™Mš}šØš©›ü› " ) 9 ; <=<P>S?_AB€CD‚EƒF„G…H†I‡JˆK‰M²}Ï~ÕÙàƒã„ä…冿‡ç‰ë‹íïŽô›øÿžŸ ¦«²¹»À Ä   !"#$% &"''(,.g ¢4 «4 ¹4 Á4 Ê Ó4 Ø4 å4 ü4 4 4 14 8™ Až – Ÿ£ Þ™ ç™ î; õA 4 !; (4 <4 M4 ]4 pK }V e ¡4 È$ìÔ$A S%^%k%!x%*ƒ%/˜%¤% ‚&§&4 ›&²¦&¼²&ÆÆ&ÆÜ&Æò&Æ'Æ 'Æ#'Æ@'Æ_'Æ|'3‡'4 ”'4 R*4 X*e X+rR*4 U-‡[-‡c-œs-¤y-‡}-œ†-œ-œ‘-°—-¼¥-Ȭ-È´-̺-ÜÄ-ÜÏ-ÜÙ-Üä-Üï-Ü $¨<ñ3®<ù3³<Õ;Üë;Ü<®<<®<6<®<[<®<‚<Ü–<®<²<®<Ð<®<î<®<=®<6@4 :@e B@e I@e R@ô?X@e `@ô?d@e j@ô?o@e v@ô?{@e ‚@ô?ˆ@e @ô?˜@e ¢@ô?§@e ®@ô?·@e Â@ô?È@e Ð@ô?Õ@e Ü@ô?â@e ê@ô?ú@e Aô?Ae Ae Ae ÚCBÚC ÚCÐBÚCÐBÚC ÚCBÚC ÚCÐBÚCÐBÚC 6@4 DDDe DD1De FDDRDe `DDkDe xDD…De ”DD De ®DD¸De ÄDDÏDe ÜDDçDe ôDDEe EDEe ,ED7Ee DEDSEe dEDpEe ~ED‰Ee –ED¢Ee °EDÆEe ÞEDèEe ôEDÿEe FDFe 6@4 …JzD•Je §JzD´Je ÃJzDÒJe ãJzDóJe KzDKe 'KzD6Ke GKzDTKe cKzDqKe KzDKe ¡KzD®Ke ½KzDËKe ÛKzDíKe LzDLe LzD0Le MWÐBTWa[W%aaW2aqWEa~WMa6@4 3XEa9XB?XÔb6@4 _XÎchXe sXÎc~Xe ‹XÎc•Xe 6@4 1Ye ?Ye ÚC ÚC ÚC ÚC 6@4 †YFe“Ye ¢Ye 3Xf9X4 3Xf9X4 6@4 3X 9XÃf?XÉf ZÔb'Zæg1ZEa>ZõgqWEa6@4 èZÄiîZe §ÄiöZe ÿZe [e ÚC4 ÚC4 ÚC4 ÚC4 “[“[>ZàmR*4 “[R*4 ËorR*4 ËÂrÚC sR*4 ñ[}Œ6@4 "`e )`e 2`e 8`e ?`e E`e M`e ÚCùŽÚC?ÚC”ÚCøÚCùŽÚCøÚCK ÚCùŽÚC?ÚC”ÚCøÚCùŽÚCøÚCK X+ X+ õ`–‘ï-ܺ-ÜÄ-ÜÏ-ÜÙ-Üä-Üû.r0 ™ 9 ™    !##%"%%'$'&)(+*-)-,/+/.1-103/325154737596;9=8=;?ZA\C_E`GaIbKcMdOeQfSgUhWiYj[k]l_mancoepgqirksmtouqzsuw¡y¥{¦}§¨©ƒª…«‡¬‰­‹®°¯²‘±‘³“¶•·—¸™¹›º»Ÿ ¡!£"¥8§9©<«=­>¯?±@³AµB·C¹D»E½q¿NÁPÃRÅSÇTÉUËVÍWÏXÑYÓZÕ[×\Ù]Û^Ý_ß`áaãbåcçdéeëfígïhñiójõk÷lùnûpý|ÿ~€‚„† ˆ Š ŒŽ¹‘’“”•–—!˜#™%š'›)œ+-ž/Ÿ1 3¡5¢7£9¤;¥=¦?§A¨C©EªG«I¬K­M®O¯Q°S±U²W³Y´[µ]¶_·a¸cáeÅgÆiÇkÈmÉoÊqËsÌuÍwÎyÏ{Ð}ÑÒӃԅՇ։׋ØÙڑۓܕݗޙߛàyŸz¡{£|¥}§~©«Š­‹¯Œ±Ÿ³™µš·›¹œ»½ž¿®Á«Ã­Å¹Ç»É½Ë¿ÍÆÏÂÑÃÓÅÕÑ×ÒÙÕÛÖÝÞßÚáÛãÜåÝçèééëêíëïñóõ÷ùûý"ÿ$&(6G ] n rƒ„‹Œ’“3D7!9#;%='?)A+C-G/I1K3M5O7Q9S;U=W?YA[C]E_GaIhKrM{O“Q”S•U–W—Y˜[­]®_¯a Fa D/ !(6>GO\oް¿ÈÚú",7>FNV^fnv‹›¦²ÀÎ×àèðø (08@HPeƒ‘šª¶Ïáï÷ÿ %.;G\g{‹œ«¹ÉÛëü!>MSY`j‚•ºÔàôû &4@L^r‚žÇò=D¼ÇÖêõ%-8OZbmŽ—£¼Çàô &Lny…¥¬»ÊØèö   " , 3 @ M Y j | œ ¬ ´ È â Ž Ÿ ¦ ³ ç 4ÂÚ÷*K “¥ o1k—Y“':¸Ë19¡µ½.cxÿµ K\š«#µ#»#Ê#Ð#þ##$8$¶$Á$%4%<%Z%a%r%”%§%±%¿%ë%& &&(&^&|&Ë&õ&''%'5'O'…'£'ä'(k(«(Ï(÷(I)T)`)g)ò)ø)þ)***(*0*:*C*L*Z*g**ý*3+m+†+Ž+œ+,d,›,F4w4¨4Ä4Õ4å4ò4ù4 5*545=5n5™5¡5©5Ë5Ì6 707ß9Å:ä:$;H;hGaGG«G´GŒIêI÷IŠJ“J´JºJˆK¸KîKLL!L)L2L-M•MÄMÿMN#N3N²N.OIOŸO©OPP[PPºPãPQ*Q>QNQVQ­Q*R6R‰R«SÕSßSQTYTwTÙTUÐU˜V£VîVùVW[t[[ž[Ô[Û[ê[ú[\\§\ñ\p]]5cScÚcøc*dHdbe€e*gHg×iõi kkkCkakyk™k¡kåkøkûkl_lïlfnÚnqo—oÃoéoHpSpðp q9qéq.rr™ràrìr"s.sMsXstwt‰t²t¹t uuu&uüuÑv"w„w3xÒx|yžyD{É{/}P}Ö} ~?~¾~Öì€(0pz¾ÿ‘‚‹ƒ•ƒÒ„õ„…)…í…'†i†K‡ˆœ‰hŠÜŠâŠ,‹-ÒŽðŽ“€“†““”“œ“£“R”_”n”~”Ù”á”è”Ù• —\—¡—ð—ù—˜™‰™£™Â™é™Ešuš}®j»¯kù°l7²mu³n³´oñµp/·qm¸r«¹séºt'¼ue½v£¾wá¿xÁy]Âz›Ã{ÙÄ|Æ}UÇ~“ÈÑÉ€ËMÌ‚‹ÍƒÉ΄ЅEцƒÒ‡ÁÓˆÿÔ‰=ÖŠ{׋¹ØŒ÷Ù5ÛŽsܱÝïÞ‘-à’ká“©â”çã•%å–cæ—¡ç˜ßè™êš[ë›™ìœ×íïžSðŸ‘ñ Ïò¡ ô¢Kõ£‰ö¤Ç÷¥ù¦Cú§û¨¿ü©ýýª;ÿ«y¬·­õ®3¯q°¯±í²+ ³i ´§ µå ¶#·a¸Ÿ¹Ýº»Y¼—½Õ¾¿QÀÁÍ ÃIćÅÅ Æ"ÇA#È$ɽ%Êû&Ë9(Ìw)͵*Îó+Ï1-Ðo.Ñ­/Òë0Ó)2Ôg3Õ¥4Öã5×!7Ø_8Ù9ÚÛ:Û<ÜW=Ý•>ÞÓ?ßAàOBáCâËDã FäGGå…HæÃIçKè?Lé}Mê»NëùOì7QíuRî³Sï½TôeUõUö5V÷VøÕWù-XúgXû¡Xü€&Æ„€Ø m\&Æ„ÂN 8í' !"#$%&'()*+,-./0123456789:?>@?A?B?C?D?E?F?G?H?I?J?K>LKM>NMO>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>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>}|~||€|‚ƒ„…†‡|ˆ‡‰‡Š‡‹‡Œ‡|Ž|||‘|’|“|”|•|–|—|˜|™|š|›|œ››ž›Ÿ› ›¡|¢|£|¤|¥|¦|§|¨|©|ª|«|¬|­|®|¯|°|±|²|³|´|µ|¶|·|¸|¹|º|»|¼|½|¾|¿|À|Á|Â|Ã|Ä|Å|Æ|Ç|È|É|Ê|Ë|Ì|Í|Î|Ï|Ð|Ñ|Ò|Ó|Ô|Õ|Ö|×|Ø|Ù|Ú|Û|Ü|Ý|Þ|ß|à|á|â|ã|ä|å|æ|ç|è|é|ê|ë|ì|í|î|ï|ð|ñ|ò|ó|ô|õ|ö|÷|ø|ù|ú|û|ü|ý|þ|ÿ||||||||||         #"$"(')'*'+','-'.'/'0'1'2'3'4'5'6'87;:<:=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:[Z\Z]Z^Z_Z`ZaZbZÙÙ~&~&ó*S-8± :± :ó*>ó*@ó*@± Dó*Fó*Jó*»± ïÙ;¶,Dó*Fó*Hó*Jó*J± ió*kó*ó*± ó*”± ”B3–± À± ÀB3ÀBUı Åó*Ʊ ÆB3ȱ ÈB3ÈBUɱ Ýó* ó*S-S-;ó*=ó*Gó*d~&l~&pó*vÙxÙzÙ|Ù~ـنيّó*“ó*‰ó*‰± ¹ó*»ó*½ó*¿ó*¿± Áó*Á± DZ ÇB3ɱ ˱ ͱ Û± ÛB3ÛBUñó*¥± ©B3­BU% ~&3 ~&3 ó*5 ~&5 ó*q ± à ó*Å ó*Å ± UÖ gÖ iÖ Ö ¡˜ Ä f ~Ä ×4  Ö Ö YŒ”ŒŒ¡$IXSÞ­ù#­$³ù#µ~·2$­b$¿£$³2$Íù#ð¼$ÍP%ëù#€ù#ó·%ë$€$õù#ë&€&ÿ¸&ë@'€@'¸&×'ëP%€P%ù#!<(ëW(€W(%ð('))@)3’)'ž)5Ä)5É)ëÒ)~Ú)7î)ët*~Ý*}g+–+•Þ+ëã+€ã+›û,ù#µ“4­Ö ~Þ4é’5€Ö Í@'ë¸6€¸6Q7ëÐ:€Ð:£$<A=OG>G>G>µÞU,AG>MAU@DUžD·MA·E· EszE·ÖE2Fµ×'·IFrFµ|F´FµÀF·ÝF·4G·[G½“4ÍËJÑmKÓ­K'ÅK5ÑKž)ÑØKÓúKL>L­qMåg+õù#¸ÞýÞºÞͨPýfQ1‹QµŸQ;î)ÈÞÆFR=lRÊÞGÍS­P%­·TSíT[8V]î)[eVGŸVºƒW­&kù#Ä)µ­Ky<[µúK D[5U[Ìî)¾b[Þ+¾z[у[8V]ˆ[ºˆ[ ˆ[¨[µ[y¾[¾Ä[¾Í[ \º\$\>\Ÿo\}\Ÿ\À\ŸÊ\Ÿˆ[Ó\Ÿ<(zb‹b˜bIF EUHcO\c\c\c\cUícU=dUueU=gÆg|h‹h¶hsÉ))iÑyiUêiÖ #Ö Ñ9lClŸ“4 @)ÀÞ+E@)ImK5mÑ}mÅKŽmŸœmÑn,nŸ9n>nŸî)JnXnÀunŸ–+1>n{pÑ¥p·p Åp5µ[EÅpIøqKrÉhsÏhsßÍSã0t]ÍSsU[í¢t­t­evŸv­wù#­õw'Hx!’x­ðx1ù#!ÍS­¯zA[{Cè{!Ï|;ˆ[;o\;\;Ê\•F~•V~yu~ŸÏ|Íyoù#Í$+€Ú ‚—‚]ŸVsz[¼ŸV£+ƒßŸVµŸVGî)I4…ãô…Iý…K†EƒWI‡K0‡7’x ƒWýŸVûî)U‰ŸÍSëLŠëî)Ú¾Š@Œ#…ŒU厊‘‘g~gM”gŒ2 g” î) Ñ” –Eî)I—K&—Éî)Id—㺗Sî)‡g+Sù#‘î)i~g“î)i•ù#Ä '›‡_›¥î)•î)Ä ó›99,9P9FsYacc.exeFSharpSignatureData.FsYaccFSharpOptimizationData.FsYaccSystemObjectmscorlibInternal.Utilities.Text.LexingPositionIEquatable`1System.CollectionsIStructuralEquatableFSharp.CoreIComparable`1IComparableIStructuralComparableLexBufferFiller`1LexBuffer`1AsciiTablesUnicodeTablesInternal.Utilities.Text.ParsingIParseStateParseErrorContext`1Tables`1Stack`1RecoverableParseErrorExceptionAcceptInternal.UtilitiesHashSet`1IEnumerableSystem.Collections.GenericIEnumerable`1FSharp.PowerPack.FsYaccDriverlexbuf@33Microsoft.FSharp.CoreFSharpFunc`2Tuple`3usage@54Unitusage@55-1usage@56-2usage@57-3usage@58-4usage@59-5usage@60-6usage@63-7usage@64-8usage@65-9clo@67-4spec@107cprintf@135-1PrintfFormat`4System.IOTextWritercprintf@135-3cprintf@135-2FSharpTypeFunccprintf@135-2Tcprintf@135-2TTTuple`2cprintfn@136-2cprintfn@136-1cprintfn@136-4cprintfn@136-3cprintfn@136-3TFSharpRef`1logf@143logf@140-1main@145main@226-1FSharpFunc`3OptimizedClosuresFSharpOption`1main@235-2main@249-3Tuple`4Microsoft.FSharp.CollectionsFSharpList`1main@264-4main@284-5main@284-6main@285-7main@287-8main@287-9main@288-10main@413-11main@420-12main@426-13main@434-14main@433-15main@447-16c@467main@524-17.$FSharp.PowerPack.FsYaccLexerParsertokenTagsTOKENTYPEHEADERCODEIDENTTOKEN@DebugTypeProxyTYPE@DebugTypeProxyHEADER@DebugTypeProxyCODE@DebugTypeProxyIDENT@DebugTypeProxytokenIdnonTerminalId_fsyacc_reductions@216_fsyacc_reductions@25-2_fsyacc_reductions@225-1_fsyacc_reductions@238-3_fsyacc_reductions@249-4_fsyacc_reductions@259-5_fsyacc_reductions@269-6_fsyacc_reductions@38-9_fsyacc_reductions@38-8_fsyacc_reductions@281-7_fsyacc_reductions@39-12_fsyacc_reductions@39-11_fsyacc_reductions@293-10_fsyacc_reductions@40-14_fsyacc_reductions@305-13_fsyacc_reductions@41-17_fsyacc_reductions@41-16_fsyacc_reductions@316-15_fsyacc_reductions@42-20_fsyacc_reductions@42-19_fsyacc_reductions@327-18_fsyacc_reductions@43-23_fsyacc_reductions@43-22_fsyacc_reductions@338-21_fsyacc_reductions@349-24_fsyacc_reductions@361-25_fsyacc_reductions@371-26_fsyacc_reductions@383-27_fsyacc_reductions@394-28_fsyacc_reductions@408-29_fsyacc_reductions@418-30_fsyacc_reductions@428-31_fsyacc_reductions@438-32_fsyacc_reductions@448-33_fsyacc_reductions@460-34_fsyacc_reductions@471-35_fsyacc_reductions@484-36_fsyacc_reductions@496-37_fsyacc_reductions@507-38_fsyacc_reductions@517-39_fsyacc_reductions@527-40tables@553tables@542-1tables@543-2ASTParserSpecRuleAssociativitySymbolTerminalNonTerminalTerminal@DebugTypeProxyNonTerminal@DebugTypeProxyPrecedenceInfoExplicitPrec_NoPrecedenceExplicitPrec@DebugTypeProxy_NoPrecedence@DebugTypeProxyProductionProcessedParserSpecexplicitPrecInfo@78-1explicitPrecInfo@78ProcessParserSpecAst@81ProcessParserSpecAst@81-1ProcessParserSpecAst@82-2terminals@88mkSym@95precsym@100prods@98-1prods@97nonTerminals@107ProcessParserSpecAst@126-3ActionShiftReduceShift@DebugTypeProxyReduce@DebugTypeProxyoutputPrecInfo@156queueWork@210LeastFixedPoint@224-1LeastFixedPoint@223Memoize@231NonTerminalTablenonterminalsWithIdxs@243-ctor@244-ctor@246-2-ctor@246-1Microsoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1TerminalTableterminalsWithIdxs@253-ctor@254-3-ctor@255-4-ctor@256-5-ctor@257-7-ctor@257-6ProductionTableprodsWithIdxs@266-ctor@269-8-ctor@276-9-ctor@277-10-ctor@280-12-ctor@280-11LookaheadTableget_Count@301KeyValuePair`2FSharpSet`1KernelTablekernelsAndIdxs@307-ctor@308-13-ctor@309-15-ctor@309-14Closure1TableAdd@319IEqualityComparer`1SpontaneousTableAdd@330-1PropagateTableAdd@340-2fakeStartNonTerminals@356prods@362-2seed@388-1seed@383add@393-1FSharpMap`2place@409-1add@436-3ComputeFirstSetOfTokenList@429prodIdx_to_item0@442fakeStartNonTerminalsSet@467IsKernelItem@470OutputSyms@477OutputItem0@481OutputItem0Set@484-1OutputItem0Set@484OutputAction@492-1OutputActions@500-2OutputActions@500-1OutputActions@500OutputImmediateActions@506OutputGotos@511-1OutputGotos@511OutputCombined@514-1OutputCombined@514combined@517OutputLalrTables@521-2OutputLalrTables@517-1Tuple`8Tuple`1OutputLalrTables@516-3OutputLalrTables@516-3TOutputLalrTables@516-3TTOutputLalrTables@516-3TTTComputeClosure0NonTerminal@530-1ComputeClosure0NonTerminal@528-3ComputeClosure0NonTerminal@528-2ComputeClosure0NonTerminal@527ComputeClosure0@545-1RelevantSymbolsOfKernel@550-2RelevantSymbolsOfKernel@550-1ComputeGotosOfKernel@557-1startItems@565startKernels@566kernels@572kernels@580-1startKernelIdxs@585startKernelItemIdxs@586gotoKernel@593ComputeClosure1@616-2ComputeClosure1@615-1closure1OfItem0WithDummy@652initialWork@699-2initialWork@698-1initialWork@696lookaheadTable@706items@776-1items@776immediateAction@817immediateAction@821-1ComputeActions@769CompilerLalrParserSpec@842CompilerLalrParserSpec@843-1gotos@849-1gotos@849prods@858-3CompilerLalrParserSpec@860-2CompilerLalrParserSpec@864-3CompilerLalrParserSpec@864-4CompilerLalrParserSpec@864-5$HashSetCopy@45Iterate@54ArgspecClearFloatIntRestSetStringClear@DebugTypeProxyFloat@DebugTypeProxyInt@DebugTypeProxyRest@DebugTypeProxySet@DebugTypeProxyString@DebugTypeProxyUnit@DebugTypeProxygetUsage@30HelpBad.$Internal.UtilitiesInternal.Utilities.Compatibility.OCamlLexingfrom_text_reader@27from_binary_reader@53.$Internal.Utilities.Compatibility.OCamlParseHelpersImplementationAssocTableReadAll@194IdxToIdxListTableReadAll@204-1ValueInfoValueTypeparseState@254explicit@456-1explicit@456shiftableTokens@459-1shiftableTokens@463-2shiftableTokens@459reducibleProductions@469reduceTokens@473-1reduceTokens@477-2reduceTokens@473$Prim-parsingTop@111GenericImplFragments$Prim-lexingget_RefillBuffer@138get_AsyncRefillBuffer@139Microsoft.FSharp.ControlFSharpAsync`1FromReadFunctions@165FromReadFunctions@177-3FromReadFunctions@176-2FromReadFunctions@174-1FromCharFunction@187FromByteFunction@193lexBuffer@203lexBuffer@204-2lexBuffer@204-1FromTextReader@215FromBinaryReader@218FromStream@221FromStream@221-1scanUntilSentinel@288-1endOfScan@311-1scanUntilSentinel@300-4scanUntilSentinel@296-3scanUntilSentinel@290-2endOfScan@312-2clo@268clo@268-1scanUntilSentinel@395-6endOfScan@420-4scanUntilSentinel@402-8scanUntilSentinel@398-7endOfScan@421-5clo@368-2clo@368-3.$Assemblyinfo.fsyaccexeT21979_266Bytes@T21845_318Bytes@T21841_58Bytes@T21838_328Bytes@T21836_88Bytes@T21834_180Bytes@T21832_28Bytes@T21830_168Bytes@FsYaccFSharpInterfaceDataVersionAttribute.ctorSystem.ReflectionAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModespos_fnameCompilationMappingAttributeSourceConstructFlagspos_lnumpos_orig_lnumpos_bolpos_cnumFileNameLineOriginalLineCharObsoleteAttributeAbsoluteOffsetStartOfLineStartOfLineAbsoluteOffsetColumnNextLineEmptypos_fname@DebuggerBrowsableAttributeDebuggerBrowsableStatepos_lnum@pos_orig_lnum@pos_bol@pos_cnum@get_pos_fnameget_pos_lnumget_pos_orig_lnumget_pos_bolget_pos_cnumIComparerLanguagePrimitivesget_GenericComparerCompareOrdinalCompareToobjSystem.Runtime.CompilerServicesCompilerGeneratedAttributecompGetHashCodeIEqualityComparerget_GenericEqualityComparerEqualsget_FileNameget_Lineget_OriginalLineget_Charget_AbsoluteOffsetget_StartOfLineget_StartOfLineAbsoluteOffsetget_Columnget_NextLineEndOfTokennAsNewLinePosShiftColumnBybyget_EmptyFirstLinefilenamefillSyncfillAsyncfillSync@fillAsync@get_fillSyncget_fillAsynccharStartPosEndPosLexemeBufferLocalStoreIDictionary`2LexemeLengthBufferBufferMaxScanLengthBufferScanLengthBufferScanStartBufferAcceptActionRefillBufferAsyncRefillBufferIsPastEndOfStreamBufferScanPosfillerthiscontextDictionary`2bufferbufferMaxScanLengthbufferScanStartbufferScanLengthlexemeLengthbufferAcceptActioneofstartPosendPosinit@77set_contentsIntrinsicFunctionsFailInitset_StartPosget_LexemeLengthset_EndPosEndOfScanget_StartPosbget_EndPosArrayModuleGetSubArrayget_LexemeLexemeCharget_BufferLocalStoreset_LexemeLengthvget_Bufferset_Bufferget_BufferMaxScanLengthset_BufferMaxScanLengthget_BufferScanLengthset_BufferScanLengthget_BufferScanStartset_BufferScanStartget_BufferAcceptActionset_BufferAcceptActionget_RefillBufferget_AsyncRefillBufferLexemeStringlexbufget_IsPastEndOfStreamset_IsPastEndOfStreamdiscardInputDiscardInputget_BufferScanPosZeroCreateCopyToEnsureBufferSizeget_ValueSomeFromReadFunctionssyncReadasyncReadFromFunctionfFromAsyncFunctionFromCharFunctionFromByteFunctionCopyFromArraysFromBytesarrFromCharsToCharArrayFromStringFromTextReaderTextReadertrFromBinaryReaderBinaryReaderbrFromStreamStreamstreamInvalidOperationExceptionget_contentsCheckThisInvokeextendBufferSyncextendBufferAsyncSealedAttributetransacceptInterpretinitialStatelexBufferAsyncInterpretCreateUInt16BytescanUntilSentinelstatesentinelnumLowUnicodeCharsnumSpecificUnicodeCharseofPoslookupUnicodeCharactersinpResultRangeParserLocalStoreInputRangeindexInputEndPositionInputStartPositionget_ResultRangeGetInputget_ParserLocalStoreRaiseErrorStateStackReduceTokensCurrentTokenParseStateReducibleProductionsShiftTokensMessagestateStackshiftableTokensreducibleProductionsreduceTokensparseStatemessagecurrentTokenget_StateStackget_ReduceTokensget_CurrentTokenget_ParseStateget_ReducibleProductionsget_ShiftTokensget_MessagetokreductionsendOfInputTagtagOfTokendataOfTokenactionTableElementsactionTableRowOffsetsreductionSymbolCountsimmediateActionsgotossparseGotoTableRowOffsetsstateToProdIdxsTableElementsstateToProdIdxsTableRowOffsetsproductionToNonTerminalTableparseErrornumTerminalstagOfErrorTerminalreductions@endOfInputTag@tagOfToken@dataOfToken@actionTableElements@actionTableRowOffsets@reductionSymbolCounts@immediateActions@gotos@sparseGotoTableRowOffsets@stateToProdIdxsTableElements@stateToProdIdxsTableRowOffsets@productionToNonTerminalTable@parseError@numTerminals@tagOfErrorTerminal@get_reductionsget_endOfInputTagget_tagOfTokenget_dataOfTokenget_actionTableElementsget_actionTableRowOffsetsget_reductionSymbolCountsget_immediateActionsget_gotosget_sparseGotoTableRowOffsetsget_stateToProdIdxsTableElementsget_stateToProdIdxsTableRowOffsetsget_productionToNonTerminalTableget_parseErrorget_numTerminalsget_tagOfErrorTerminallexerstartStateCountIsEmptycontentscountEnsurenewSizeget_CountPopPeepIEnumerator`1SeqModuleToListListModuleReverseTopPushxget_IsEmptyConsoleWritePrintStackaGetObjectDataSystem.Runtime.SerializationSerializationInfoStreamingContextinfoTypeTestGenericData0Data0@data0get_Data0HashCompareGenericHashWithComparerIntrinsicGenericEqualityWithComparerIntrinsicGenericEqualityERIntrinsictinit@17-1comparersizeIDisposableGetEnumeratorIEnumeratorMoveNextget_CurrentAddDisposeelementsset_Itemyget_ComparerIterateEnumeratorget_KeyInvokeFastFoldaccCompilationArgumentCountsAttributeStateContainsKeyContainsRemoveget_KeysKeyCollectionSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorTinputmodnameinternal_moduleopensouttokenizecompatloglightinputCodePagelexlibparslibusageshiftFlagreduceFlagerrorFlagacceptFlagactionMaskanyMarkerFileStreamStreamReaderFileModeFileAccessFileShareSystem.TextEncodingGetEncodingUnicodeFileAsLexbufcodePageget_inputget_modnameget_internal_moduleget_opensget_outget_tokenizeget_compatget_logget_lightget_inputCodePageget_lexlibset_lexlibvalueget_parslibset_parslibget_usageSystem.GlobalizationCultureInfoget_InvariantCultureIFormatProviderInt32ToStringoutput_intosoutputCodedUInt16get_shiftFlagDebuggerNonUserCodeAttributeget_reduceFlagget_errorFlagget_acceptFlagget_actionMaskget_anyMarkeractionCodingactionget_Lengthget_CharsPathHasExtensionhas_extension@112ArgumentExceptionGetDirectoryNameGetFileNameWithoutExtensionCombinechop_extension@116get_Item1cprintf@135tupledArgget_Item2cprintfn@136get_ItemConcatgetType@438typesntPrintfFormat`5Tuple`6get_Item3get_OutPrintfModulePrintFormatToTextWriterOperatorsExitUnboxGenericEndsWithFileCreateTextStreamWriterPrintFormatLineToTextWriterget_Restget_Item5get_Item6get_Item7get_Item4SpecializeGenericEqualityIntrinsicReplaceSplitConsIterateIndexedCountByFilterPrintFormatToStringThenMapModuleOfListStringModuleCollectStringSplitOptionsZipmainreaderReadunitVar0op_AppendifmtlineCountself0@self1@WriteLinePrintFormatToTextWriterThenosooutputoutputilineCountOutputcprintfntupletokenssymdollarcCloseinput@40modname@41internal_module@42opens@43out@44tokenize@45compat@46log@47light@48inputCodePage@49lexlib@50parslib@51usage@53init@FailurePatternmain@actions_fslex_tablesfield21846@field21847@field21848@field21849@field21850@field21851@field21852@field21853@field21854@field21855@field21856@field21857@field21858@field21859@field21860@field21861@field21862@field21863@field21864@field21865@field21866@field21867@field21868@field21869@field21870@field21871@field21872@field21873@field21874@field21875@field21876@field21877@field21878@field21879@field21880@field21881@field21882@field21883@field21884@field21885@field21886@field21887@field21888@field21889@field21890@field21891@field21892@field21893@field21894@field21895@field21896@field21897@field21898@field21899@field21900@field21901@field21902@field21903@field21904@field21905@field21906@field21907@field21908@field21909@field21910@field21911@field21912@field21913@field21914@field21915@field21916@field21917@field21918@field21919@field21920@field21921@field21922@field21923@field21924@field21925@field21926@field21927@field21928@field21929@field21930@field21931@field21932@field21933@field21934@field21935@field21936@field21937@field21938@field21939@field21940@field21941@field21942@field21943@field21944@field21945@field21946@field21947@field21948@field21949@field21950@field21951@field21952@field21953@field21954@field21955@field21956@field21957@field21958@field21959@field21960@field21961@field21962@field21963@field21964@field21965@field21966@field21967@field21968@field21969@field21970@field21971@field21972@field21973@field21974@field21975@field21976@field21977@field21978@field21980@lexemenewlineunexpected_charIndexOfSubstringgettypeget_transget_actionsget__fslex_tables_fslex_dummyStringBuilderReplicateAppend_fslex_token_fslex_stateheaderpbuffEnvironmentget_NewLine_fslex_headercode_fslex_codecodestring_fslex_codestringcomment_fslex_comment.cctortrans@26actions@295_fslex_tables@296RuntimeHelpersInitializeArrayArrayRuntimeFieldHandle_fsyacc_endOfInputTag_fsyacc_tagOfErrorTerminal_fsyacc_gotos_fsyacc_sparseGotoTableRowOffsets_fsyacc_stateToProdIdxsTableElements_fsyacc_stateToProdIdxsTableRowOffsets_fsyacc_action_rows_fsyacc_actionTableElements_fsyacc_actionTableRowOffsets_fsyacc_reductionSymbolCounts_fsyacc_productionToNonTerminalTable_fsyacc_immediateActionsfield21831@field21833@field21835@field21837@field21839@field21840@field21842@field21843@field21844@GenericComparisonWithComparerIntrinsicCompareTo$cont@19-6unitVarCompareTo$cont@19-7objCastGetHashCode$cont@19Equals$cont@19-1GetHashCode$cont@39-1tokenTagToTokenIdtokenIdxprodIdxToNonTerminalprodIdxget__fsyacc_endOfInputTagget__fsyacc_tagOfErrorTerminaltoken_to_string_fsyacc_dataOfTokenget__fsyacc_gotosget__fsyacc_sparseGotoTableRowOffsetsget__fsyacc_stateToProdIdxsTableElementsget__fsyacc_stateToProdIdxsTableRowOffsetsget__fsyacc_action_rowsget__fsyacc_actionTableElementsget__fsyacc_actionTableRowOffsetsget__fsyacc_reductionSymbolCountsget__fsyacc_productionToNonTerminalTableget__fsyacc_immediateActions_fsyacc_reductionstablesengineTagIsIDENTIsCODEIsHEADERERRORIsERROREOFIsEOFSEMIIsSEMIPRECIsPRECCOLONIsCOLONGREATERIsGREATERLESSIsLESSNONASSOCIsNONASSOCRIGHTIsRIGHTLEFTIsLEFTSTARTIsSTARTPERCENT_PERCENTIsPERCENT_PERCENTBARIsBARIsTYPEIsTOKEN_tag_unique_BAR_unique_PERCENT_PERCENT_unique_START_unique_LEFT_unique_RIGHT_unique_NONASSOC_unique_LESS_unique_GREATER_unique_COLON_unique_PREC_unique_SEMI_unique_EOF_unique_ERRORNewIDENTitemget_IsIDENTNewCODEget_IsCODENewHEADERget_IsHEADERget_ERRORget_IsERRORget_EOFget_IsEOFget_SEMIget_IsSEMIget_PRECget_IsPRECget_COLONget_IsCOLONget_GREATERget_IsGREATERget_LESSget_IsLESSget_NONASSOCget_IsNONASSOCget_RIGHTget_IsRIGHTget_LEFTget_IsLEFTget_STARTget_IsSTARTget_PERCENT_PERCENTget_IsPERCENT_PERCENTget_BARget_IsBARNewTYPEget_IsTYPENewTOKENget_IsTOKENget_TagExtraTopLevelOperatorsPrintFormatToString__DebugDisplayDebuggerDisplayAttributeItemDebuggerTypeProxyAttributeType_objTOKEN_errorIsTOKEN_errorTOKEN_end_of_inputIsTOKEN_end_of_inputTOKEN_IDENTIsTOKEN_IDENTTOKEN_CODEIsTOKEN_CODETOKEN_HEADERIsTOKEN_HEADERTOKEN_ERRORIsTOKEN_ERRORTOKEN_EOFIsTOKEN_EOFTOKEN_SEMIIsTOKEN_SEMITOKEN_PRECIsTOKEN_PRECTOKEN_COLONIsTOKEN_COLONTOKEN_GREATERIsTOKEN_GREATERTOKEN_LESSIsTOKEN_LESSTOKEN_NONASSOCIsTOKEN_NONASSOCTOKEN_RIGHTIsTOKEN_RIGHTTOKEN_LEFTIsTOKEN_LEFTTOKEN_STARTIsTOKEN_STARTTOKEN_PERCENT_PERCENTIsTOKEN_PERCENT_PERCENTTOKEN_BARIsTOKEN_BARTOKEN_TYPEIsTOKEN_TYPETOKEN_TOKENIsTOKEN_TOKEN_unique_TOKEN_TOKEN_unique_TOKEN_TYPE_unique_TOKEN_BAR_unique_TOKEN_PERCENT_PERCENT_unique_TOKEN_START_unique_TOKEN_LEFT_unique_TOKEN_RIGHT_unique_TOKEN_NONASSOC_unique_TOKEN_LESS_unique_TOKEN_GREATER_unique_TOKEN_COLON_unique_TOKEN_PREC_unique_TOKEN_SEMI_unique_TOKEN_EOF_unique_TOKEN_ERROR_unique_TOKEN_HEADER_unique_TOKEN_CODE_unique_TOKEN_IDENT_unique_TOKEN_end_of_input_unique_TOKEN_errorget_TOKEN_errorget_IsTOKEN_errorget_TOKEN_end_of_inputget_IsTOKEN_end_of_inputget_TOKEN_IDENTget_IsTOKEN_IDENTget_TOKEN_CODEget_IsTOKEN_CODEget_TOKEN_HEADERget_IsTOKEN_HEADERget_TOKEN_ERRORget_IsTOKEN_ERRORget_TOKEN_EOFget_IsTOKEN_EOFget_TOKEN_SEMIget_IsTOKEN_SEMIget_TOKEN_PRECget_IsTOKEN_PRECget_TOKEN_COLONget_IsTOKEN_COLONget_TOKEN_GREATERget_IsTOKEN_GREATERget_TOKEN_LESSget_IsTOKEN_LESSget_TOKEN_NONASSOCget_IsTOKEN_NONASSOCget_TOKEN_RIGHTget_IsTOKEN_RIGHTget_TOKEN_LEFTget_IsTOKEN_LEFTget_TOKEN_STARTget_IsTOKEN_STARTget_TOKEN_PERCENT_PERCENTget_IsTOKEN_PERCENT_PERCENTget_TOKEN_BARget_IsTOKEN_BARget_TOKEN_TYPEget_IsTOKEN_TYPEget_TOKEN_TOKENget_IsTOKEN_TOKENNONTERM_optprecIsNONTERM_optprecNONTERM_symsIsNONTERM_symsNONTERM_clauseIsNONTERM_clauseNONTERM_clausesIsNONTERM_clausesNONTERM_optsemiIsNONTERM_optsemiNONTERM_optbarIsNONTERM_optbarNONTERM_ruleIsNONTERM_ruleNONTERM_rulesIsNONTERM_rulesNONTERM_identsIsNONTERM_identsNONTERM_declIsNONTERM_declNONTERM_declsIsNONTERM_declsNONTERM_headeroptIsNONTERM_headeroptNONTERM_specIsNONTERM_specNONTERM__startspecIsNONTERM__startspec_unique_NONTERM__startspec_unique_NONTERM_spec_unique_NONTERM_headeropt_unique_NONTERM_decls_unique_NONTERM_decl_unique_NONTERM_idents_unique_NONTERM_rules_unique_NONTERM_rule_unique_NONTERM_optbar_unique_NONTERM_optsemi_unique_NONTERM_clauses_unique_NONTERM_clause_unique_NONTERM_syms_unique_NONTERM_optprecget_NONTERM_optprecget_IsNONTERM_optprecget_NONTERM_symsget_IsNONTERM_symsget_NONTERM_clauseget_IsNONTERM_clauseget_NONTERM_clausesget_IsNONTERM_clausesget_NONTERM_optsemiget_IsNONTERM_optsemiget_NONTERM_optbarget_IsNONTERM_optbarget_NONTERM_ruleget_IsNONTERM_ruleget_NONTERM_rulesget_IsNONTERM_rulesget_NONTERM_identsget_IsNONTERM_identsget_NONTERM_declget_IsNONTERM_declget_NONTERM_declsget_IsNONTERM_declsget_NONTERM_headeroptget_IsNONTERM_headeroptget_NONTERM_specget_IsNONTERM_specget_NONTERM__startspecget_IsNONTERM__startspecFoldBack_1_2Mapctxt_fsyacc_gotos@204_fsyacc_sparseGotoTableRowOffsets@205_fsyacc_stateToProdIdxsTableElements@206_fsyacc_stateToProdIdxsTableRowOffsets@207_fsyacc_actionTableElements@209_fsyacc_actionTableRowOffsets@210_fsyacc_reductionSymbolCounts@211_fsyacc_productionToNonTerminalTable@212_fsyacc_immediateActions@213|KeyValue|kvpCompareTo$cont@22-2CompareTo$cont@22-3objTempEquals$cont@22StringOfSymOutputSymArgumentNullExceptionJoinOutputSymssymsToArrayOutputTerminalSettsetOutputAssocCompareTo$cont@68-4CompareTo$cont@68-5prec_of_terminal@91explicitPrecInfoimplicitSymPrecInfoimplicitPrecInfocheckNonTerminal@109nonTerminalSetMapIndexedProcessParserSpecAstmkItem0dotIdxprodIdx_of_item0item0dotIdx_of_item0outputPrecInfoPTerminalPNonTerminalFSharpChoice`2NewChoice1Of2NewChoice2Of2|PTerminal|PNonTerminal|KernelItemIdxi1i2GotoItemIdx|GotoItemIdx|i64get_TailOrNullget_HeadOrDefaultloop@211-1workqueueWorkProcessWorkListstartSetModuleLeastFixedPointsetMemoizeCreateDictionaryxsf@1termTabntTab_arg2TimeSpanStopwatchget_ElapsedResetStartreportTime@352stopWatchadd@392changedChooseplace@404ssresnonTermXloneRound@397prodTabloop@420-2List`1add@431-2computedFirstTabletermlsyms_of_item0@446rsyms_of_item0@452advance_of_item0@463Choice2Of2Choice1Of2StringOfSym@472OutputAction@492mOutputLalrTables@516OutputCombineddop_AdditionComputeClosure0Symbol@538ComputeClosure0NonTerminalrsymComputeClosure0@544isetRelevantSymbolsOfKernel@548kernelComputeGotosOfKernel@554ComputeClosure1$cont@621ComputeFirstSetOfTokenListaddToWorkListpretokenrsymsComputeClosure1@613winner$cont@743shiftReduceConflictskernelIdxtermIdxshiftItemreduceItemprecShiftprecReduceaddResolvingPrecedence@722reduceReduceConflictsprecNewactionNewreduceOrErrorAction@816_arg17acceptOrErrorAction@820_arg18Map2FlushCompilerLalrParserSpeclogfHeaderTokensTypesAssociativitiesStartSymbolsRulesHeader@Tokens@Types@Associativities@StartSymbols@Rules@get_Headerget_Tokensget_Typesget_Associativitiesget_StartSymbolsget_RulesassociativitiesstartSymbolsrulesItem1Item2Item3item1item2item3NewRuleNonAssocIsNonAssocRightAssocIsRightAssocLeftAssocIsLeftAssoc_unique_LeftAssoc_unique_RightAssoc_unique_NonAssocget_NonAssocget_IsNonAssocget_RightAssocget_IsRightAssocget_LeftAssocget_IsLeftAssocIsNonTerminalIsTerminalNewNonTerminalget_IsNonTerminalNewTerminalget_IsTerminalNoPrecedenceIsNoPrecedenceIsExplicitPrec_unique_NoPrecedenceget_NoPrecedenceget_IsNoPrecedenceNewExplicitPrecget_IsExplicitPrecItem4item4NewProductionTerminalsNonTerminalsProductionsTerminals@NonTerminals@Productions@get_Terminalsget_NonTerminalsget_ProductionsterminalsnonTerminalsproductionsprecSpecsterminalSetmkSymnontermjErrorIsErrorIsAcceptIsReduceIsShift_unique_Accept_unique_Errorget_Errorget_IsErrorget_Acceptget_IsAcceptNewReduceget_IsReduceNewShiftget_IsShiftTryGetValueIndexesnonterminalIdxsOfIndexToIndexget_IndexesSingletonnonterminalsWithIdxssourcespccurrentGenerateNextnextget_CheckCloseget_LastGeneratedGetFreshEnumeratorterminalIdxsPrecInfoOfIndexterminalsWithIdxsprodsSymbolsPrecedenceprodsWithIdxsGetLookaheadsidx_arg10kernelIdxstoIdxMapofIdxMapkernelsIndexKernelkernelsAndIdxsget_IEnumerableDefaultMemberAttributeGenericHashIntrinsicdummyPrecnonTermenumenum0Find_arg11_arg12arg00fakeStartNonTerminalsSetTuple`5OutputItem0OutputActionntIdxOutputItem0SetOutputActionsOutputImmediateActionsOutputGotosself2@self3@prodIdx_to_item0OptionModule_arg15IsKernelItemkernelTab_arg16dummyLookaheadIdxkernelItemIdxlookaheadmatchValueendOfInputTerminalIdxstartKernelItemIdxsspontaneouspropagatelookaheadTableterminalIdxgotoKernelForAll_arg19errorTerminalIdxOutputLalrTablesstartKernelIdxsimmediateActionTableactionTablegotoTablestateslogStreammappinglistgt2getUsagespecsugetSecondArg@56cursorargvusageTextnargsParseInt32DoubleParseNumberStylesfindMatchingArg$cont@56findMatchingArg@53otherargparse_argvget_currentGetCommandLineArgsparseIsUnitIsStringIsSetIsRestIsIntIsFloatIsClearNewUnitget_IsUnitNewStringget_IsStringNewSetget_IsSetNewRestget_IsRestNewIntget_IsIntNewFloatget_IsFloatNewClearget_IsClearsbuf_arg1current@105defaultEncodingfrom_functionfrom_text_readerencget_defaultEncodingfrom_channelisfrom_bytearrayget_ASCIIGetBytesfrom_stringfrom_binary_readersrlexeme_charlblexeme_start_plexeme_end_plexeme_startlexeme_endGetStringget_UTF8lexeme_utf8lexeme_bytesflush_inputlexbuf_curr_plexbuf_set_curr_plexbuf_set_start_pGetMaxByteCountdefaultEncoding@35get_Defaultparse_error_sparse_error_richpopStackUntilErrorShifted@273valueStacktokenOptinterpretoffsetTabelemTabcachereadAssocminElemNummaxElemNumdefaultValueOfAssockeyToFindrowNumberReadAllfirstElemNumbernumberOfElementsInAssocOperatorIntrinsicsRangeInt32numberOfElementsvalue@startPos@endPos@get_valueget_startPosget_endPosNoEqualityAttributeNoComparisonAttributeStructAttributelocalStoreruleStartPossruleEndPossruleValueslhsPosexplicittagdefaultActionf0sources0stateToProdIdxsTablebufstartInterpretafterRefillendOfScanCompareTo$cont@19CompareTo$cont@19-1get_DefaultAsyncBuilderFSharpAsyncBuilderDelayscanUntilSentinel@288endOfScan@311scanUntilSentinel@395-5endOfScan@420-3UnicodeCategoryGetUnicodeCategoryloop@337baseForSpecificUnicodeCharsarg10@extensionreadZeroBindReturnCommonExtensionsAsyncReadlexBuffer0%unrecognized input{attempt to read synchronously from an asynchronous lex bufferyattempt to read asynchronously from a synchronous lex buffer {0}{1}:-unreachableg us; Qthe file name does not have an extensions'no input given9tokenize - getting one token#tokenize - got %s)%s(%d,%d): error: %s .mly.ml.fs .mli .fsi.fsyacc.outputbuilding tables%d states%d nonterminals%d terminals%d productions3#rows in action table: %dk// Implementation file for parser generated by fsyacca// Signature file for parser generated by fsyacc#light "off"%module internal %smodule %s€ñ#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete typeopen %s)open %s.ParseHelperscopen Microsoft.FSharp.Compatibility.OCaml.Parsing# %d "%s"%s s// This type is the type of tokens accepted by the parsertype token =  | %s of (%s) | %s€¯// This type is used to give symbolic names to token indexes, useful for error messagestype tokenId =  | TOKEN_%s1 | TOKEN_end_of_input# | TOKEN_error+type nonTerminalId = ! | NONTERM_%sa// This function maps tokens to integers indexes7let tagOfToken (t:token) =  match t with{/// This function maps integers indexes to symbolic token ids9val tagOfToken: token -> inty// This function maps integers indexes to symbolic token idsOlet tokenTagToTokenId (tokenIdx:int) = + match tokenIdx with9 | %d -> TOKEN_end_of_input+ | %d -> TOKEN_errora | _ -> failwith "tokenTagToTokenId: bad token"Kval tokenTagToTokenId: int -> tokenId-/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that productionSlet prodIdxToNonTerminal (prodIdx:int) = ) match prodIdx with€ | _ -> failwith "prodIdxToNonTerminal: bad production index"]val prodIdxToNonTerminal: int -> nonTerminalId?let _fsyacc_endOfInputTag = %d Glet _fsyacc_tagOfErrorTerminal = %dk// This function gets the name of a token as a stringAlet token_to_string (t:token) =  match t with m/// This function gets the name of a token as a stringIval token_to_string: token -> string}// This function gets the data carried by a token as an objectIlet _fsyacc_dataOfToken (t:token) = ! | %s %s -> %s _fsyacc_x-(null : System.Object)[Microsoft.FSharp.Core.Operators.box _fsyacc_xQ%s is given multiple %%type declarationsA%s is given %%token declarations/let _fsyacc_gotos = [| |]Ulet _fsyacc_sparseGotoTableRowOffsets = [|]let _fsyacc_stateToProdIdxsTableElements = [| _let _fsyacc_stateToProdIdxsTableRowOffsets = [|9let _fsyacc_action_rows = %dIlet _fsyacc_actionTableElements = [|Mlet _fsyacc_actionTableRowOffsets = [|%aMlet _fsyacc_reductionSymbolCounts = [|[let _fsyacc_productionToNonTerminalTable = [|Clet _fsyacc_immediateActions = [|9let _fsyacc_reductions () = [| [ (fun (parseState : %s.IParseState) ->_ Parsing.set_parse_state parseState;_ Microsoft.FSharp.Core.Operators.box# () (€Ÿ raise (%s.Accept(Microsoft.FSharp.Core.Operators.box _1))/ %s) )1 : %s));?let tables () : %s.Tables<_> = M { reductions= _fsyacc_reductions ();U endOfInputTag = _fsyacc_endOfInputTag;9 tagOfToken = tagOfToken;O dataOfToken = _fsyacc_dataOfToken; m actionTableElements = _fsyacc_actionTableElements;u actionTableRowOffsets = _fsyacc_actionTableRowOffsets;€‘ stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements;€™ stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets;u reductionSymbolCounts = _fsyacc_reductionSymbolCounts;a immediateActions = _fsyacc_immediateActions;5 gotos = _fsyacc_gotos;€… sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets;i tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal;q parseError = (fun (ctxt:%s.ParseErrorContext<_>) -> u match parse_error_rich with a | Some f -> f ctxt€… | None -> parse_error ctxt.Message);- numTerminals = %d;€• productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable }€«let engine lexer lexbuf startState = (tables ()).Interpret(lexer, lexbuf, startState)ia %type declaration is required for for start token 5let %s lexer lexbuf : %s =€© Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, %d))aa %type declaration is required for start token €ƒval %s : (%s.LexBuffer<%s> -> token) -> %s.LexBuffer<%s> -> (%s)  'cty3more than one input givenuOutput file describing compiled parser placed in %s and %s! | %s %s -> %d _' | %d -> TOKEN_%s / | %d -> NONTERM_%s % | %s %s -> "%s" €å let _%d = (let data = parseState.GetInput(%d) in (Microsoft.FSharp.Core.Operators.unbox data : %s)) in$9Microsoft.FSharp.Text.Lexing;Microsoft.FSharp.Text.Parsing-o+Name the output file.-v/Produce a listing file.--moduleoDefine the F# module name to host the generated parser.--internal7Generate an internal module --open€ËAdd the given module to the list of those to open in both the generated signature and implementation.--light(ignored)--light-offcAdd #light "off" to the top of the generated file%--ml-compatibility€­Support the use of the global state from the 'Parsing' module in FSharp.PowerPack.dll.--tokens]Simply tokenize the specification file itself.--lexlib€éSpecify the namespace for the implementation of the parser table interperter (default Microsoft.FSharp.Text.Parsing)--parslib--codepage€“Assume input lexer specification file is encoded with the given codepage.#fsyacc <filename>1FSYACC: error FSY000: %s-Unexpected character '<> tokengettype header code}codestring7unterminated string in codecomment-end of file in comment9tokenTagToTokenId: bad tokenUprodIdxToNonTerminal: bad production index TOKEN TYPEBARPERCENT_PERCENT START LEFT RIGHTNONASSOC LESSGREATER COLON PREC SEMIEOF ERROR HEADER CODE IDENT %+0.8A error array; left rightnonassocGNonTerminal '%s' has no productions?%s is given two associativities1token %s is not declaredYat least one %start declaration is required noprecexplicit %a %dtime: %A shift %d% reduce %s --> %a error acceptGstate %d: shift/reduce error on %s ]internal error in fsyacc: shift/shift conflictIstate %d: reduce/reduce error on %s #$$7computing first function...'building kernels...1building kernel table...Acomputing lookahead relations....7building lookahead table...1building action table...-building goto table...#returning tables.3%d shift/reduce conflicts5%d reduce/reduce conflicts _start# %s -> %a . %a%a 3 action '%s' (%a): %a  <none>! goto %s: %d €state %d: items: %a actions: %a immediate action: %a gotos: %a 1------------------------states = !startStates = %swaction on terminal should have found a non-empty goto state-writing tables to log   --help: 9display this list of options -helpoption ) needs an argument. /unrecognized argument:  <string>:  <int>:  <float>: ...: parse errorLexBuffer-shift on end of input!%empty symbol stackGparse error: unexpected end of filesyntax error9End of file on lexing streamùJ¨D€§EƒùJ·z\V4à‰ ¡‰±ÇM % )-)1)11)1 )€ü)5911)A9)5911!)A9E)5911))911)91MAQ1MUY‚QA1 )A )A)AQ M91 M‚1) €ü€ü ,, 44)M)ôôôô)AQ )ôô )A )Aü ) €ü1)€ü)€ü ôô øø üü ‚‚ ‚‚ ‚4‚4 ‚8‚8)AüA‚MYAüYA‚ )A‚)‚MQQ Mø‚4MAYøY‚4)AYø )A‚ ‚l‚l M9ü1)1M)11) MA )A)A%A ]AMA‚A)A‚‚M‚4A‚4)A‚4 )A‚4)A‚4‚)A‚4Q)AYMa eMe Ae )Ae )Ae %Ae ]Ae ii ) M‚4MeQeQ]AeQ$MmeAme)QQAQ )Q1)AYe) ))  M91 M9 1) 1 M9e 1 M9‚l1 M9‚1MA‚‚l1M9A‚‚l1M9Q‚l1 MQ1M9Q1(MUe A‚‚lQ‚lQ1*M9Ue A‚‚lQ‚lQ1JMe AA‚‚lAQ‚lQUe A‚‚lQ‚lQ):)qe YA‚‚lQ‚lQu1<M9qe YA‚‚lQ‚lQu1 ) Y )e e ))e e )e Me e MeeMe eM ) e M)e 1e 1 )e M ) Q M)A e1A e1) ƒ )A )a 4%A  ]A M)A 1A 1) %A e]A e))AA‚‚lQ‚l%)AA‚‚lQ‚lA‚‚l!)AA‚‚lQ‚lQ‚l )Q )Q)‚4UY‚QA) )Y Y)e Y )a1)-„81 )- ]A])A% )% ]Y] )1}1 )1 )}1)}1)-})A} )1})A)1)A})A€ $€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô    fsyacc.exeMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F# €( €¥ (    ,'Use the AbsoluteOffset property instead( €±    €µ€µ€µ   €µ €Å€Å €Å  1,Consider using the NextLine property instead   €¥"(Q)1(Q)}1Q)1Q)}1  Q)1 Q)}1' Q)1Q)}1( (€É ()11()1}1(  E€Í E €Í        €É €É „ì  )11„ð )1}1    Q)-)-Q)-})-}Q)- „ô )-Q)1 QQ)-}… )-}Q)}1MQ)-)-Q)-})-}0Q)-Q)-})-)-})-Q)-)-))-(Use LexBuffer.FromFunction instead)-Q)-)-))-(Use LexBuffer.FromFunction instead… …       €Ù €ÝQ)-} €á  "Q)1Q)1*Q)}1Q)}1 }1    A   }      A  }      (A A A 0(Y(Q( (YYY YYQ $ YYQYYY Y Q  YY () () ()(         () 1    ))) ) 1$ ) ) )  ) 1: )))) 1 0)(„à (€ùY%YY Y   €¤.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089TSerializationFormatter€Å€Å , (   €Å  0 €Å €Í4 €Í€Í i i E4€ù1 E4 €ù€ù 4E4€ù1 %i €”€This member has been redesigned. Use 'new HashSet<_>(size, HashIdentity.Structural) to create a HashSet using F# generic hashing and equality€Ž€‡This member has been redesigned. Use 'new HashSet<_>(HashIdentity.Structural) to create a HashSet using F# generic hashing and equality %€˜€‘This member has been redesigned. Use 'new HashSet<_>(elements, HashIdentity.Structural) to create a HashSet using F# generic hashing and equality i„, %a)1% a€Í€Í 4 a  aa))) €Í1a0)) „0 )1 €Í  %% ))  EQ E EY EQ EQY-„8-1Q 59=QA €áA €á--1 -1Q--1Q EQE EY EQ EQY-„8E I‚t‚x‚t‚x‚l  9A9p 99)5911A9E A9E €ˆ 9E 9E )5911A9Em mQô--1 51911€ü5)1911!5))))1911 A9E=))911‚8OqUY‚QAYYA‚‚lQ‚lQAYYUY‚QAY Q‚lQ A‚‚lA5)1911")A9E)519111)519111]19111,)A9E)5)1911)1)5)1911)1])1911€ù6)A9E)5))1911))1')5))1911))1]))1911AYA9E€ùA9EYAQ€ùAQ AQ6)A9E)5))1911))1')5))1911))1]))1911A,)A9E)5)1911)1)5)1911)1])1911@)A9E)5)))1911)))11)5)))1911)))1$])))1911- %A YA €ùAAm mQ€ù A‚‚l€Í‚lY €Í‚l‚lE‚l ‚l a‚l A‚l‚lY a‚lY A‚lYN)A9E)5))9)1)1911))9)1)1?)5))9)1)1911))9)1)16]))9)1)1911A)9)1UY‚QAY‚Q‚l QAE YA^)A9E)5))))))1911))))))1O)5))))))1911))))))17]))))))1911a EQQ EQ E]19111995911 1])1911 )1$€ü ô)]))))1911U ))))1')))) 1 qE 9NqUY‚QAYYA‚‚lQ‚lQAY  AY    A])1911 )1Q A‚‚l0!)A9E)519111)519111 EQQ Q+)A9E)5)1911)1)5)1911 EY%€ù ))15)A9E)5))1911))1]))1911A)5))1911))) 1  YA9EYYY%A9E€ùA9E%AQ€ùAQ AQ ))15)A9E)5))1911))1]))1911A)5))1911))1Y AQ+)A9E)5)1911)1)5)1911))1 UY‚QA )))1?)A9E)5)))1911)))1#])))1911- )5)))1911 1 %A%A)% A%)% A %A €ùAA])111)51 1)1 AQmYA  Q E E1  Y%€ù €Í‚lY €Í‚l A‚‚lE‚l ‚la‚lA‚l ‚lY a‚lY A‚lY ))9)1)1M)A9E)5))9)1)1911))9)1)1 E))9)1)15]))9)1)1911A)9)13)5))9)1)1911)9)1 1UY‚QAY‚Q‚l ‚ QA ) } YAYY " ))))))1])A9E)5))))))1911))))))16]))))))1911a/)5))))))1911/))))) ))1‡#€„Qô--1-1ôôô51911€ü5)1911€ü5))))1911QQ9191EEA9EA9E==))9119‚8qUY‚QAYYA‚‚lQ‚lQAYYYUY‚QAYQ‚lQA‚‚lA5)1911)A9E)519111)519111]19111)A9E)5)1911)1)5)1911)1])1911Y€ù1)A9E)5))1911))1)5))1911))1]))1911AYA9E€ùA9EA9EEYAQ€ùAQ1AQ)A9E)5))1911))1)5))1911))1]))1911A)A9E)5)1911)1)5)1911)1])1911)A9E)5)))1911)))1)5)))1911)))1])))1911-%AYA€ùAAmmQEQQY€ùA‚‚l€Í‚lY€Í‚l‚lE‚l‚la‚lA‚la‚l‚l‚lYa‚lYA‚lYa‚lY)A9E)5))9)1)1911))9)1)1)5))9)1)1911))9)1)1]))9)1)1911A)9)1UY‚QAY‚Q‚lQ‚lQAQAEYA)A9E)5))))))1911))))))1)5))))))1911))))))1]))))))1911a 1-  - 1 11YYYY  1 €üp 5911t 9A9 | =| €€ ==)A9)5911 €€A9t 9== )5911A9€ˆ)19591 1€Œ€”!)A9E)5911€” 9E= )5911A9E 1)91 19 9E=@)A9E)5)))1911)))11)5)))1911)))1$])))1911- )))1?)A9E)5)))1911)))1#])))1911- )5)))1911 1€šQ)A9E)5)))1911)))1)5)))1911)))1])))1911- 1AQ€€Q)A9E)5))1911))1)5))1911))1]))1911A€ŽY‚QA)A9E)5))1911))1)5))1911))1]))1911A 1UY‚QA€šQ)A9E)5)))1911)))1)5)))1911)))1])))1911- AA A AQ 19 9E=mmQ‚‚ @)A9E)5)))1911)))11)5)))1911)))1$])))1911- mQ )))1?)A9E)5)))1911)))1#])))1911- )5)))1911€¥Q‚‚ Q)A9E)5)))1911)))1)5)))1911)))1])))1911- 1‚ E   EQ EY EQ EQY-„8 -„8 Y-„8 Q15)1911Q…p…l     QQQ €ü  €üQ €ü€ü€ü €ü    ‘…ˆ…„…€…|…x…t  €µ Q:€µ  AA €ü€ü17  AA€µ€ü€ü1  A €Å€ü19€ü  AA €ü€Å1,1€ü,4€ü €ü )) €ü1) €ü1 $€ü)€üô)€ü€ü€ü  €üA  €ü               €üQ ])€ü151 )€ü)€ü €ü€ü A0  AA €ü{__DebugDisplay(),nq}!     (Q €¥ Q Q ¡>9FSharp.PowerPack.FsYacc.Parser+token+TOKEN@DebugTypeProxy=8FSharp.PowerPack.FsYacc.Parser+token+TYPE@DebugTypeProxy (A A A?:FSharp.PowerPack.FsYacc.Parser+token+HEADER@DebugTypeProxy=8FSharp.PowerPack.FsYacc.Parser+token+CODE@DebugTypeProxy>9FSharp.PowerPack.FsYacc.Parser+token+IDENT@DebugTypeProxy      ,,,  ]),1 ),), ,, ,,444])41 )4)4 44 44ô  ô)ôôôY)ôôYAYø Y)ôô YAYøYAQ YAYYAü))Y )ôôô'AY)ôôYAYøAY)ôô )ôô )ôô)ôôY)ôô AQ QYY)Y AQ ôô Y QY A Y A AY YYAü Aü Aü YAü AYø AYøYAYøAYøYAYøAYøYø Yø AYø Yøø øYø øYøøYQA €ü 1 €ü €üaAAaYYAüf €µYAYAYYAüYYAüYYYAYøYAYø ôô1c YAYAYYAüYYAüYYYAYøYAYø€µôô1€“ôAAYAQYAQYAYAYYAüYYAüYYYAYøYAYø ô€Å1‚ ‚9‚)1‚)1 9‚ % 9%9ü YA‚Y‚4 YA‚Y‚48 €µYA‚YA‚YYY‚4Y‚4 ‚8‚815 YA‚YA‚YYY‚4Y‚4€µ‚8‚81m‚Q‚‚m‚‚Q‚e])1 ) eYYA‚ m‚‚e )‚ YY‚4 €ù‚4‚4 €ù‚‚ €ùAAY))Y YAüYA‚%YA‚Y%Y A‚ %A‚ A‚ ‚ AYøY‚4 %Y‚4 ‚4 AYø%‚4€ù‚4%‚€ù‚ €ùA A‚€ÃYA‚YYA‚%A€ùA1Am‚‚Ye)‚Y‚4YY‚4Ye€ù‚4‚4Y‚€ù‚1‚‚ ‚YYYA€ùAA‚8ô  ‚$üC]))9)ü1)ü)1911-)9)ü1ü# ))9)ü1)ü)1))9)ü1ü ‚$ü9‚© © © ©   A A Y EYY Y))1YYY,))1)1EY)11 EY )1))1)1‚ˆ EY:EY)1))1)1EY)1Y))1)1 Ee EeYe‚ )YEe Eee)Ye €Í €Í ‚” )€Í €Í))€ùA A %A €ùA%€Í€ùA1A€Í%A€Í ‚‚  ‚¬‚˜‚5)±1911])±1911± )±1 ± )±15)±1911µ1 ƒ(0)me)AmeE AQEYAQYAQƒ,meQ QY)QY QAQ AQ eQ YY,meQEYAQYYAQEYAQmeQ €ÍY Y Q))Y AQmeQAmeQpEYAQEYAQY€ù1Y€ù1YmeQEYAQ,AmeQ‚˜‚ÈmeQAmeQ%AmeQmeQ'meQ‚˜‚ÈmeQ eQmeQ)1e Q eQ¹YYeQmeQ¹Y Q‚È  ©½Á © ‚˜‚¬?])))9)1)1911-)9)1! )))9)1)1))9)1 1 ‚t‚x‚˜‚È)9)19‚l ƒ€3 )9)Ue A‚‚lQ‚lQ19m)qe YA‚‚lQ‚lQu1)9)Ue A‚‚lQ‚lQ19e e eeeQ©e e )e Qe ))e  e e ‚È)e e e  ee e‚È)e e ¹ ¹   % e ¹ e ‚È)e e e)AYe AY A e)A e19©e)AYeY€ù1.‚È)AYe)A e11ƒ A eƒ)ƒ‚È)AYeYA e5))1911&‚$‚$ü‚$5))19112 A‚‚l‚¬EA‚‚lA‚‚l‚‚1 A‚‚l] A‚‚l‚lA‚‚l51911A‚‚lA‚‚l‚‚‚x‚x5))1911#‚¬EEA‚‚l‚‚l‚lµ‚˜‚¬‚ÈmeQ) ) )9)1)9) 1)9)e 1)9)‚l1)9)A‚‚l1)9)Q‚l1)9)Q1/)9)Ue A‚‚lQ‚lQ1 )e Y Ye Eee ee ‚ìY ) Q Aƒƒ ) ƒƒƒ€ù   %a 4€ùa 4 a 4 A 44‚ä YA AA‚‚lQ‚l)AA‚‚lQ‚lYAA‚‚lQ‚l )Qe )e Y)Y Y) A‚#Y))YY ‚4 AeQ eQ AYee e    e Eee %e e e  e     Q  ƒ€ù %a 4€ùa 4 a 4 A 4 Aƒƒ A  AA‚‚lQ‚l# AA‚‚lQ‚lA‚‚l Y A‚‚l AA‚‚lQ‚lQ‚l Q‚lAA‚‚lQ‚l Q Q ‚4UY‚QA„v ‚¬)9)Ue A‚‚lQ‚lQ1=YQ‚lA‚‚lQe UY‚QA))11e  ƒ^µYY‚YA‚Y‚4‚˜‚¬‚È51911meQmeQ‚˜‚È)AYe) eY) )9)1)9) 1)9)e 1)9)‚l1)9)A‚‚l1)9)Q‚l1)9)Q1)9)Ue A‚‚lQ‚lQ1=)e Y Ye Ye Eee ee ‚ìY ) QAƒƒ) ƒƒƒEY€ù1e €ù 1 ƒ%a 4€ùa 41a 4A 4a 44 QQQQ €ù1‚äYA ‚äEAA‚‚lQ‚l)AA‚‚lQ‚lYAA‚‚lQ‚lQ‚lA‚‚lQ)Q5)1911e UY‚QA)e Y)Y Y) YUY‚QAbqUY‚QAYYA‚‚lQ‚lQAY))11‚8(YAQ (YA(YYAü(Y(YAYø YAQ YA YYAü Y YAYøG AYAQYAYYAüYYAYø7 €µAAYAQYAQ ô7 ôAAYAQYAQA YAQ YA YYAüAA ô (QAøYQQA YQQA QA])ø1 )ø)ø QAøø€µYY øøøøYYøøøøYYøø øüü])ü1 )ü)ü üü üü‚‚])‚1 )‚)‚ ‚ ‚ €µ‚‚‚‚ ‚ ‚‚ ‚ ‚‚‚‚ ‚ ‚‚ ‚ ‚‚‚‚ ‚?:FSharp.PowerPack.FsYacc.AST+Symbol+Terminal@DebugTypeProxyB=FSharp.PowerPack.FsYacc.AST+Symbol+NonTerminal@DebugTypeProxy ‚  ‚‚‚ ‚ü‚])‚1 )‚)‚ ‚$‚$€µüü‚‚ ‚ ‚‚$‚$üü‚‚‚$ ‚‚$‚$üü‚‚‚$‚$‚‚ ‚(ü ü üKFFSharp.PowerPack.FsYacc.AST+PrecedenceInfo+ExplicitPrec@DebugTypeProxyLGFSharp.PowerPack.FsYacc.AST+PrecedenceInfo+_NoPrecedence@DebugTypeProxy ‚$‚( ‚((‚ (Y‚‚4‚Y‚QA ‚Y‚QA ‚ Y‚])‚41 )‚4)‚4" ‚4‚4€µ‚‚Y‚Y‚ ‚4" ‚4‚4‚4‚‚Y‚Y‚‚4‚4‚4‚4‚‚Y‚Y‚ Y‚‚4‚4 ‚4‚4(YA‚ (Y‚4 YA‚ Y‚4 YA‚YY‚4Y ‚8‚85‚8YA‚YA‚YYY‚4Y‚4 YA‚ Y‚4 ‚8ü A‚Aü AüA‚ YA‚YAü A‚ e ‚ QQ m‚e)‚ ‚%YQQAQ‚Q ‚4ø m‚e)‚ ø‚4 Y‚4AYø AYø m‚‚ A‚‚l‚l‚l])‚l1 )‚l)‚l ‚t‚t€µ‚x‚x ‚l ‚l‚t‚t‚x‚x ‚t‚x‚l‚t‚t‚x‚x‚t‚t‚x‚x ‚l‚l<7FSharp.PowerPack.FsYacc.AST+Action+Shift@DebugTypeProxy=8FSharp.PowerPack.FsYacc.AST+Action+Reduce@DebugTypeProxy ‚t ‚x 19ü EY‚ˆ EYY 1 Ee )1‚Œ Ee)1 Ee ee e )Y‚ )Y)1Y 1)1 ) €Í ‚”A €Í A A€Í YA A A YA A A A % %AA)A%A %A2 YA)A%A%AA %A%)% A%A%% %AA %A A €ùA‚ A‚A A‚‚ ‚ YA‚ ‚‚ AA‚ ‚A‚ (€ÍY €ÍY YA‚4YAY ‚4A‚4 A‚4  A‚4 A‚4‚ AY%AY YYA‚4YAY ‚˜‚¬YY‚4   Q €ÍYA‚4 A‚4‚4 ‚˜‚¬‚‚4Y‚‚ A‚4 ‚˜‚4 A‚4 ‚A‚4 QA‚4 ‚˜YA‚4 AY AY €Í e €Í ee     Ae AeAee e %a e))% a e €Í e A e a e a e A eA ea ee a e me YAe  e Ae Ae  Ae YAe Ye me  e  e  Ae  Ae e Ae Ae e  %Ae Ae )Ae %Ae %Ae Ae F YAe )Ae %Ae %Ae Ae %Ae  Ae %Ae  %Ae Ae %Ae  %Ae  Ae  €ùAe (%a 4 €Í 4 €Í 44   %a 4   (%a 4 €Í 4 €Í 4%a 4 %a 4(% €Í 4 €Í 4 4   A4 4 A4 % %  A4 4  % Item      ‚ ‚4 ‚È eQeQAeQ) ‚˜‚¬‚È€ù€ùAeQ eAeQ €ù %AeQ AeQ €ùAeQ ƒ(eAm e e me mee" memeAƒ,Q AQQAQ Q QAQQ¹ ¹Q 1Q meQ#Y¹meQ¹ eAY   ‚Èe   19 ‚˜‚È)9)1h])))9)1)))9)1)1911É)9)1)9)19 )))9)1)))9)1)1 )9)11 19  )9) 195]))9) 1) 1911A)9) 1  ))9) 1) 1))9) 1  1  )9) 1 19e 19‚l 19‚ ‚¬)9)‚l19p])))9)‚1)‚))9)‚l1)‚l1911É)9)‚1‚)9)‚l1‚l= )))9)‚1)‚))9)‚l1)‚l1))9)‚1 ‚)9)‚l1‚l1 ‚‚l 1A‚‚l ‚¬)9)‚l1 A‚‚l 19A‚‚l Q‚l 19Q‚l ‚˜9]))1911A ))1 Q 1Q 19QR )9)e 1)9)A‚‚l1)9)Q‚l1)9)Q19Q!Ue A‚‚lQ‚lQ])))9)e 1)e ))9)A‚‚l1)A‚‚l))9)Q‚l1)Q‚l))9)Q1)Q1911q)9)e 1e )9)A‚‚l1A‚‚l)9)Q‚l1Q‚lA)9)Q1Q€“ )))9)e 1)e ))9)A‚‚l1)A‚‚l))9)Q‚l1)Q‚l))9)Q1)Q1))9)e 1m e )9)A‚‚l1A‚‚l))9)Q‚l1)Q‚l))9)Q1)Q1))9)Q‚l1Q‚l )9)Q1Q1Qe A‚‚lQ‚lQQ)9)Q1Q‚l)9)Q‚l1& 1Ue A‚‚lQ‚lQP )9)e 1)9)A‚‚l1)9)Q‚l1)9)Q1# Ue A‚‚lQ‚lQ( 19Ue A‚‚lQ‚lQAQ‚lQ AA‚‚lAQ‚lQAQ‚lQ A‚‚lAQ‚lQH Ue A‚‚lQ‚lQe AA‚‚lAQ‚lQ ƒ€#Ue A‚‚lQ‚lQ4qe YA‚‚lQ‚lQuu Q‚lQ A‚‚lAQ‚lQH e AA‚‚lAQ‚lQUe A‚‚lQ‚lQ€¹]))9)Ue A‚‚lQ‚lQ1)Ue A‚‚lQ‚lQ1911A)9)Ue A‚‚lQ‚lQ1Ue A‚‚lQ‚lQ\ ))9)Ue A‚‚lQ‚lQ1)Ue A‚‚lQ‚lQ1T))9)Ue A‚‚lQ‚lQ1Ue A‚‚lQ‚lQ P e YA‚‚lQ‚lQUe A‚‚lQ‚lQ8 1qe YA‚‚lQ‚lQu1 )9)Ue A‚‚lQ‚lQ1ƒˆ3 )9)Ue A‚‚lQ‚lQ1=ƒˆ ƒŒ5 )9)Ue A‚‚lQ‚lQ1== ƒŒ ƒ7 )9)Ue A‚‚lQ‚lQ1===@)9)qe YA‚‚lQ‚lQu1 ƒ 4 e YA‚‚lQ‚lQ===: 19qe YA‚‚lQ‚lQu ‚È) Y   QQ© Y   e e   )e e  ‚È)e e e ee))Q e ee ‚ȹ QQ   e  ‚È)e Eee ee )e 1e€ù1 1)e 1e ) e)e ‚ì    ‚È)e ‚ìAAe  Q )A e1- ‚È)AYeƒ)A e1  ‚È)AYeƒ e 1)A e1A e ‚È)AYeYA eY ƒ   A  A  A 4 a 4 a 4 A 4 A A 4a 44  %A a 4)a 4%A %a 4€ù A @ Y ƒ )a 4%A %a 4€ù A €ù  €ù  a 4%A  %A A  %A  %A  A  €ùA  ƒ‚ä% )A 1 % €ù 1  1)A 1A  ‚ä e %A e ) %A e% A e/ ‚äe ) %A e% A e  %A e %A eA e%A e %A e A e €ùA e A‚‚l R YA‚‚¬‚È)AYee)e ‚ì) Q‚äEE)YAA‚‚lQ‚l€° e A‚‚lƒ%a 4€ùa 41a 4A 4a 44 Q€ù1Q©‚lQQe Q‚lY Y e €ù ‚Y‚l AA‚‚lQ‚l# A‚‚lAA‚‚lQ‚l Q‚lAA‚‚lQ‚l ) Q Q ‚˜) Q Q QY‚QA UY‚QA‚4„V)9)qUY‚QAe YA‚‚lQ‚lQu1P)qUY‚QAe YA‚‚lQ‚lQu1 UY‚QAU)9)qUY‚QAe YA‚‚lQ‚lQu1 UY‚QAuIqUY‚QAe YA‚‚lQ‚lQuO)qUY‚QAe YA‚‚lQ‚lQu1€³51911)9)qUY‚QAe YA‚‚lQ‚lQu1)qUY‚QAe YA‚‚lQ‚lQu1  )    YY  )Y Y Ye 1aE -„8Y-„8Y-„8EY-„81„X )11„P„@„T„H)1„D) 1 „L  ÕI) 1@„X)11„PE„@„T)1„H)1„D) 1 „LEY-„8„81„8 Y-„8„8Y-„8.EY-„8)1Y-„8" EY-„8)1EY-„8)1E„€„|1„€„|Y-„8)1 „8)11 „8)1 „8E „8)1 „8) 1])„81 )„8)„8(E E50Internal.Utilities.Arg+spec+Clear@DebugTypeProxy () 1 ) 1 ) 150Internal.Utilities.Arg+spec+Float@DebugTypeProxy ()1 )1 )13.Internal.Utilities.Arg+spec+Int@DebugTypeProxy ()1 )1 )14/Internal.Utilities.Arg+spec+Rest@DebugTypeProxy3.Internal.Utilities.Arg+spec+Set@DebugTypeProxy61Internal.Utilities.Arg+spec+String@DebugTypeProxy )114/Internal.Utilities.Arg+spec+Unit@DebugTypeProxy „@ „D „H „L „P „T „X  1-„8 „| „€A A€ÙA €Ù     IDGet the EndPos property in the lexbuf directly, e.g. 'lexbuf.EndPos' PKSet the EndPos property in the lexbuf directly, e.g. 'lexbuf.EndPos <- pos'TOSet the StartPos property in the lexbuf directly, e.g. 'lexbuf.StartPos <- pos'A€Ù A€Ù-   -€Ý €Ý Q) 1Q($Q)(„° Q%$((„°„ Q((„°„ „¨$)„°0,AYA YA   )) AYA„ÈJ $YAe)A%%A)%%€ù Y„Ø  ) 1€»3€Í((„°)„ „ „¨$((„°„ )„°10,QAYAYAeYYYYY $)€Í€Í     A AYA „ €ùA % %A A €ùA Y „¨€ù % €ù  €Í %A)A% %A( YA)A%%A %A A% % e %$ )%%„È % „¨Y€ùY %Y €ùY„Ø(„à €ù  QQ„à %)1 A)A*)A)1 €µ 1)A} )1}é0})1}&)A})1}}A}1)A}&)A})1}}A}1íí í  }11 -)- 1„ø  }1„ü )-})-}0}})} }1 )) )))  )) )))  0} €Ù€á €á}€áQQ }-  }A }1) )A})1} }. )A})1} 10}}1}   A 1  }A. )A})1} }   A¥›“ÂÊ¥&~¯vÄéu ñ®‡RqĽ«z¾‹ò¿ÄQ!Ï:Sà —[ëù™ ã·v9AðÝ5í½«‘Y5¹t½Z¹ÇÓÅ+9H´d:\Depot\staging\src\fsppack\FsYacc\assemblyinfo.fsyacc.exe.fsFSharpInternalCd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\HashSet.fsi Utilities.ctorBd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\HashSet.fsTSystem CollectionsGenericIEqualityComparer`1 HashSet`1comparerVM:Internal.Utilities.HashSet`1.#ctor(System.Collections.Generic.IEqualityComparer{`0})CoreintsizecM:Internal.Utilities.HashSet`1.#ctor(System.Int32,System.Collections.Generic.IEqualityComparer{`0})seq`1elements€M:Internal.Utilities.HashSet`1.#ctor(System.Collections.Generic.IEnumerable{`0},System.Collections.Generic.IEqualityComparer{`0})Copyunit#M:Internal.Utilities.HashSet`1.CopyAdd&M:Internal.Utilities.HashSet`1.Add(`0)Clear$M:Internal.Utilities.HashSet`1.ClearContainsbool+M:Internal.Utilities.HashSet`1.Contains(`0)Remove)M:Internal.Utilities.HashSet`1.Remove(`0)FoldState~M:Internal.Utilities.HashSet`1.Fold``1(Microsoft.FSharp.Core.FSharpFunc`2{`0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},``0) get_Count$P:Internal.Utilities.HashSet`1.CountIterateiM:Internal.Utilities.HashSet`1.Iterate(Microsoft.FSharp.Core.FSharpFunc`2{`0,Microsoft.FSharp.Core.Unit})ObsoleteAttributemscorlibSystem.ObsoleteAttribute System.StringSystem.Boolean€‡This member has been redesigned. Use 'new HashSet<_>(HashIdentity.Structural) to create a HashSet using F# generic hashing and equalitystring€This member has been redesigned. Use 'new HashSet<_>(size, HashIdentity.Structural) to create a HashSet using F# generic hashing and equality€‘This member has been redesigned. Use 'new HashSet<_>(elements, HashIdentity.Structural) to create a HashSet using F# generic hashing and equalityTextHd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\prim-parsing.fsiParsing InputRangeGd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\prim-parsing.fs IParseStateLexingPositionindexFM:Internal.Utilities.Text.Parsing.IParseState.InputRange(System.Int32)InputEndPositionLM:Internal.Utilities.Text.Parsing.IParseState.InputEndPosition(System.Int32)InputStartPositionNM:Internal.Utilities.Text.Parsing.IParseState.InputStartPosition(System.Int32)get_ResultRange9P:Internal.Utilities.Text.Parsing.IParseState.ResultRangeGetInputobjDM:Internal.Utilities.Text.Parsing.IParseState.GetInput(System.Int32)get_ParserLocalStore IDictionary`2>P:Internal.Utilities.Text.Parsing.IParseState.ParserLocalStore RaiseErrorb;M:Internal.Utilities.Text.Parsing.IParseState.RaiseError``1get_StateStacktokParseErrorContext`1list`1@P:Internal.Utilities.Text.Parsing.ParseErrorContext`1.StateStackget_ParseState@P:Internal.Utilities.Text.Parsing.ParseErrorContext`1.ParseStateget_ReduceTokensBP:Internal.Utilities.Text.Parsing.ParseErrorContext`1.ReduceTokensget_ReducibleProductionsJP:Internal.Utilities.Text.Parsing.ParseErrorContext`1.ReducibleProductionsget_CurrentTokenoption`1BP:Internal.Utilities.Text.Parsing.ParseErrorContext`1.CurrentTokenget_ShiftTokensAP:Internal.Utilities.Text.Parsing.ParseErrorContext`1.ShiftTokens get_Message=P:Internal.Utilities.Text.Parsing.ParseErrorContext`1.Message InterpretcharTables`1 LexBuffer`1lexerlexbuf startState€ÈM:Internal.Utilities.Text.Parsing.Tables`1.Interpret``1(Microsoft.FSharp.Core.FSharpFunc`2{Internal.Utilities.Text.Lexing.LexBuffer{``0},`0},Internal.Utilities.Text.Lexing.LexBuffer{``0},System.Int32) GetHashCodeexnAcceptIEqualityComparerIStructuralEquatableEqualsRecoverableParseErrorSealedAttributearray`1 reductionsUF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.reductions endOfInputTagXF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.endOfInputTag tagOfTokenUF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.tagOfToken dataOfTokenVF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.dataOfToken[]`1uint16actionTableElements^F:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.actionTableElementsactionTableRowOffsets`F:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.actionTableRowOffsetsreductionSymbolCounts`F:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.reductionSymbolCountsimmediateActions[F:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.immediateActionsgotosPF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.gotossparseGotoTableRowOffsetsdF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.sparseGotoTableRowOffsetsstateToProdIdxsTableElementsgF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.stateToProdIdxsTableElementsstateToProdIdxsTableRowOffsetsiF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.stateToProdIdxsTableRowOffsetsproductionToNonTerminalTablegF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.productionToNonTerminalTable parseErrorUF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.parseError numTerminalsWF:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.numTerminalstagOfErrorTerminal]F:Internal.Utilities.Text.Parsing.Internal.Utilities.Text.Parsing.Tables`1.tagOfErrorTerminal*T:Internal.Utilities.Text.Parsing.Tables`1Data0 ParseHelpers.T:Internal.Utilities.Text.Parsing.ParseHelpersparse_error_richBM:Internal.Utilities.Text.Parsing.ParseHelpers.parse_error_rich``1 parse_errorIM:Internal.Utilities.Text.Parsing.ParseHelpers.parse_error(System.String)Gd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\prim-lexing.fsi CompareTo IComparable IComparable`1 IComparerIStructuralComparable get_FileNameFd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\prim-lexing.fs2P:Internal.Utilities.Text.Lexing.Position.FileNameget_Line.P:Internal.Utilities.Text.Lexing.Position.Lineget_OriginalLine6P:Internal.Utilities.Text.Lexing.Position.OriginalLineget_Char'Use the AbsoluteOffset property insteadget_AbsoluteOffset8P:Internal.Utilities.Text.Lexing.Position.AbsoluteOffsetget_StartOfLineAbsoluteOffsetCP:Internal.Utilities.Text.Lexing.Position.StartOfLineAbsoluteOffset get_Column0P:Internal.Utilities.Text.Lexing.Position.Column get_NextLine EndOfTokennBM:Internal.Utilities.Text.Lexing.Position.EndOfToken(System.Int32) ShiftColumnBybyEM:Internal.Utilities.Text.Lexing.Position.ShiftColumnBy(System.Int32) AsNewLinePos,Consider using the NextLine property instead get_Empty/P:Internal.Utilities.Text.Lexing.Position.Empty FirstLinefilenameBM:Internal.Utilities.Text.Lexing.Position.FirstLine(System.String) get_StartPos5P:Internal.Utilities.Text.Lexing.LexBuffer`1.StartPos set_StartPos^P:Internal.Utilities.Text.Lexing.LexBuffer`1.StartPos(Internal.Utilities.Text.Lexing.Position) get_EndPos3P:Internal.Utilities.Text.Lexing.LexBuffer`1.EndPos set_EndPos\P:Internal.Utilities.Text.Lexing.LexBuffer`1.EndPos(Internal.Utilities.Text.Lexing.Position) get_Lexeme3P:Internal.Utilities.Text.Lexing.LexBuffer`1.Lexeme LexemeStringpM:Internal.Utilities.Text.Lexing.LexBuffer`1.LexemeString(Internal.Utilities.Text.Lexing.LexBuffer{System.Char})get_LexemeLength9P:Internal.Utilities.Text.Lexing.LexBuffer`1.LexemeLength LexemeCharEM:Internal.Utilities.Text.Lexing.LexBuffer`1.LexemeChar(System.Int32)get_BufferLocalStore=P:Internal.Utilities.Text.Lexing.LexBuffer`1.BufferLocalStoreget_IsPastEndOfStream>P:Internal.Utilities.Text.Lexing.LexBuffer`1.IsPastEndOfStreamset_IsPastEndOfStreamNP:Internal.Utilities.Text.Lexing.LexBuffer`1.IsPastEndOfStream(System.Boolean) DiscardInput9M:Internal.Utilities.Text.Lexing.LexBuffer`1.DiscardInput FromBytesbyteEM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromBytes(System.Byte[]) FromCharsEM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromChars(System.Char[]) FromStringFM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromString(System.String) FromFunction€šM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromFunction(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`3{`0[],System.Int32,System.Int32},System.Int32})FromAsyncFunctionControlAsync`1€ÅM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromAsyncFunction(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`3{`0[],System.Int32,System.Int32},Microsoft.FSharp.Control.FSharpAsync{System.Int32}})FromCharFunction(Use LexBuffer.FromFunction insteadFromByteFunction(Use LexBuffer.FromFunction insteadFromTextReaderIO TextReaderQM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromTextReader(System.IO.TextReader)FromBinaryReader BinaryReaderUM:Internal.Utilities.Text.Lexing.LexBuffer`1.FromBinaryReader(System.IO.BinaryReader)Create AsciiTables initialStatezM:Internal.Utilities.Text.Lexing.AsciiTables.Interpret(System.Int32,Internal.Utilities.Text.Lexing.LexBuffer{System.Byte})AsyncInterpretM:Internal.Utilities.Text.Lexing.AsciiTables.AsyncInterpret(System.Int32,Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) UnicodeTables|M:Internal.Utilities.Text.Lexing.UnicodeTables.Interpret(System.Int32,Internal.Utilities.Text.Lexing.LexBuffer{System.Char})€M:Internal.Utilities.Text.Lexing.UnicodeTables.AsyncInterpret(System.Int32,Internal.Utilities.Text.Lexing.LexBuffer{System.Char}) pos_fnameRF:Internal.Utilities.Text.Lexing.Internal.Utilities.Text.Lexing.Position.pos_fnamepos_lnumQF:Internal.Utilities.Text.Lexing.Internal.Utilities.Text.Lexing.Position.pos_lnum pos_orig_lnumVF:Internal.Utilities.Text.Lexing.Internal.Utilities.Text.Lexing.Position.pos_orig_lnumpos_bolPF:Internal.Utilities.Text.Lexing.Internal.Utilities.Text.Lexing.Position.pos_bolpos_cnumQF:Internal.Utilities.Text.Lexing.Internal.Utilities.Text.Lexing.Position.pos_cnum)T:Internal.Utilities.Text.Lexing.Position,T:Internal.Utilities.Text.Lexing.AsciiTables.T:Internal.Utilities.Text.Lexing.UnicodeTables IEnumerable IEnumerable`1T:Internal.Utilities.HashSet`1 CompatibilityBd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\lexing.fsiOCaml/T:Internal.Utilities.Compatibility.OCaml.Lexing flush_inputAd:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\lexing.fsrM:Internal.Utilities.Compatibility.OCaml.Lexing.flush_input(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) from_channelRM:Internal.Utilities.Compatibility.OCaml.Lexing.from_channel(System.IO.TextReader)from_text_readerEncodingkM:Internal.Utilities.Compatibility.OCaml.Lexing.from_text_reader(System.Text.Encoding,System.IO.TextReader)from_binary_readerZM:Internal.Utilities.Compatibility.OCaml.Lexing.from_binary_reader(System.IO.BinaryReader) from_stringJM:Internal.Utilities.Compatibility.OCaml.Lexing.from_string(System.String)from_bytearrayMM:Internal.Utilities.Compatibility.OCaml.Lexing.from_bytearray(System.Byte[]) from_function€®M:Internal.Utilities.Compatibility.OCaml.Lexing.from_function(Microsoft.FSharp.Core.FSharpFunc`2{System.Byte[],Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,System.Int32}})lexememM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexeme_utf8rM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_utf8(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexeme_bytessM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_bytes(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexeme_charM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_char(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte},System.Int32)lexeme_start_ppositionuM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_start_p(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexeme_end_psM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_end_p(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexbuf_curr_pDGet the EndPos property in the lexbuf directly, e.g. 'lexbuf.EndPos'tM:Internal.Utilities.Compatibility.OCaml.Lexing.lexbuf_curr_p(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte})lexbuf_set_curr_pKSet the EndPos property in the lexbuf directly, e.g. 'lexbuf.EndPos <- pos'lexbuf_set_start_pOSet the StartPos property in the lexbuf directly, e.g. 'lexbuf.StartPos <- pos' lexeme_startsM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_start(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte}) lexeme_endqM:Internal.Utilities.Compatibility.OCaml.Lexing.lexeme_end(Internal.Utilities.Text.Lexing.LexBuffer{System.Byte})6T:Internal.Utilities.Compatibility.OCaml.Lexing.lexbufArg?d:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\arg.fsiT:Internal.Utilities.Argparse>d:\Depot\staging\src\fsppack\FsYacc\..\FSharp.PowerPack\arg.fsargspec€ëM:Internal.Utilities.Arg.parse(Microsoft.FSharp.Collections.FSharpList{System.Tuple`3{System.String,Internal.Utilities.Arg.spec,System.String}},Microsoft.FSharp.Core.FSharpFunc`2{System.String,Microsoft.FSharp.Core.Unit},System.String) parse_argvref`1usage€žM:Internal.Utilities.Arg.usage(Microsoft.FSharp.Collections.FSharpList{System.Tuple`3{System.String,Internal.Utilities.Arg.spec,System.String}},System.String)BadHelpspecItemfloatFloatIntRestSetStringUnitT:Internal.Utilities.Arg.spec PowerPackParser1d:\Depot\staging\src\fsppack\FsYacc\fsyaccpars.fs T:FSharp.PowerPack.FsYacc.Parser fsyaccpars.fstokenotherObject IEquatable`1tokenId nonTerminalIdttokenTagToTokenIdtokenIdxprodIdxToNonTerminalprodIdxCM:FSharp.PowerPack.FsYacc.Parser.prodIdxToNonTerminal(System.Int32)_fsyacc_endOfInputTag_fsyacc_tagOfErrorTerminaltoken_to_string_fsyacc_dataOfToken _fsyacc_gotos!_fsyacc_sparseGotoTableRowOffsets$_fsyacc_stateToProdIdxsTableElements&_fsyacc_stateToProdIdxsTableRowOffsets_fsyacc_action_rows_fsyacc_actionTableElements_fsyacc_actionTableRowOffsets_fsyacc_reductionSymbolCounts$_fsyacc_productionToNonTerminalTable_fsyacc_immediateActions_fsyacc_reductionstablesengine?unknownAST ParserSpecTOKENTYPEBARPERCENT_PERCENTSTARTLEFTRIGHTNONASSOCLESSGREATERCOLONPRECSEMIEOFERRORCodeHEADERCODEIDENT TOKEN_TOKEN TOKEN_TYPE TOKEN_BARTOKEN_PERCENT_PERCENT TOKEN_START TOKEN_LEFT TOKEN_RIGHTTOKEN_NONASSOC TOKEN_LESS TOKEN_GREATER TOKEN_COLON TOKEN_PREC TOKEN_SEMI TOKEN_EOF TOKEN_ERROR TOKEN_HEADER TOKEN_CODE TOKEN_IDENTTOKEN_end_of_input TOKEN_errorNONTERM__startspec NONTERM_specNONTERM_headeropt NONTERM_decls NONTERM_declNONTERM_idents NONTERM_rules NONTERM_ruleNONTERM_optbarNONTERM_optsemiNONTERM_clausesNONTERM_clause NONTERM_symsNONTERM_optprecLexer fsyacclex.fslT:FSharp.PowerPack.FsYacc.Lexernewlineunexpected_chargettypestrans fsyacclex.fsactions _fslex_tables _fslex_dummy _fslex_token _fslex_stateheader StringBuilderpbuff _fslex_headercode _fslex_code codestring_fslex_codestringcomment_fslex_commentDriver T:FSharp.PowerPack.FsYacc.DriverUnicodeFileAsLexbuf FileStream StreamReaderLexbufcodePagetM:FSharp.PowerPack.FsYacc.Driver.UnicodeFileAsLexbuf(System.String,Microsoft.FSharp.Core.FSharpOption{System.Int32})inputmodnameinternal_moduleopensouttokenizecompatloglight inputCodePagelexlibparslib output_int TextWriterosoutputCodedUInt16 shiftFlag reduceFlag errorFlag acceptFlag actionMask anyMarker actionCodingActionactionmain0d:\Depot\staging\src\fsppack\FsYacc\fsyaccast.fsT:FSharp.PowerPack.FsYacc.AST |KeyValue|KeyValuePair`2kvp]M:FSharp.PowerPack.FsYacc.AST.|KeyValue|``2(System.Collections.Generic.KeyValuePair{``0,``1})Rule AssociativitySymbol StringOfSymsym OutputSym OutputSymssymsOutputTerminalSettset OutputAssocPrecedenceInfo ProductionProcessedParserSpecProcessParserSpecAstmkItem0int32Item0dotIdxprodIdx_of_item0item0dotIdx_of_item0outputPrecInfo PTerminal TerminalIndex SymbolIndexi PNonTerminalNonTerminalIndex|PTerminal|PNonTerminal|Choice`2x KernelItemIdxint64i1i2 GotoItemIdx KernelIdxuint64 |GotoItemIdx|i64ProcessWorkListastartfM:FSharp.PowerPack.FsYacc.AST.ProcessWorkList``1(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit}})LeastFixedPointSet`1set€²M:FSharp.PowerPack.FsYacc.AST.LeastFixedPoint``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Collections.FSharpList{``0}},Microsoft.FSharp.Collections.FSharpSet{``0})MemoizeUM:FSharp.PowerPack.FsYacc.AST.Memoize``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1})CreateDictionary Dictionary`2xsrM:FSharp.PowerPack.FsYacc.AST.CreateDictionary``2(System.Collections.Generic.IEnumerable{System.Tuple`2{``0,``1}}) NonTerminalNonTerminalTable nonTerminalsOfIndexToIndex get_IndexesTerminal TerminalTable terminalsPrecInfoOfIndexProductionTablentTabtermTabprodsSymbols Precedenceget_ProductionsLookaheadTableKernelItemIndexy GetLookaheadsidx KernelTablekernelsIndexkernelKernel Closure1Tableget_IEnumerableSpontaneousTablePropagateTableget_ItemCompilerLalrParserSpeclogf€êM:FSharp.PowerPack.FsYacc.AST.CompilerLalrParserSpec``1(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.Unit},FSharp.PowerPack.FsYacc.AST.ProcessedParserSpec) IdentifierHeaderTokensTypesAssociativities StartSymbolsRulesItem1Item2Item3 LeftAssoc RightAssocNonAssoc ExplicitPrec NoPrecedenceItem4 Terminals NonTerminals ProductionsProductionIndexProdictionDotIndexuint32#T:FSharp.PowerPack.FsYacc.AST.Item0ShiftReduceError$T:FSharp.PowerPack.FsYacc.AST.Action$T:FSharp.PowerPack.FsYacc.AST.Kernel'T:FSharp.PowerPack.FsYacc.AST.KernelIdx+T:FSharp.PowerPack.FsYacc.AST.TerminalIndex)T:FSharp.PowerPack.FsYacc.AST.SymbolIndex SymbolIndexes-T:FSharp.PowerPack.FsYacc.AST.KernelItemIndex GotoItemIndex+T:FSharp.PowerPack.FsYacc.AST.GotoItemIndexnonterminalIdxs.T:FSharp.PowerPack.FsYacc.AST.NonTerminalTable terminalIdxsc+T:FSharp.PowerPack.FsYacc.AST.TerminalTable productions-T:FSharp.PowerPack.FsYacc.AST.ProductionTable,T:FSharp.PowerPack.FsYacc.AST.LookaheadTable kernelIdxsMap`2toIdxMapofIdxMap)T:FSharp.PowerPack.FsYacc.AST.KernelTable+T:FSharp.PowerPack.FsYacc.AST.Closure1Table.T:FSharp.PowerPack.FsYacc.AST.SpontaneousTable,T:FSharp.PowerPack.FsYacc.AST.PropagateTable#d:\Depot\staging\src\fsppack\FsYaccH66868;68Q68c68k68o68€–6<6<=6k  " -368;6<=G J68Q R[68c6Lp‚.Lp‚C‚XLp‚V ‚oF  !"$%&'*,./05678:;=>?ABCDFGJKLMNOPQRSTVWX[\]^_`abcdefghiÿ6 ‚ñŸH‡@ F ;anL;an   „ÿ´@     „ÿ´@     „ÿ´@  %  + + „ÿ¤@ # # ' ' „ÿ¤@ & & ) ) „ÿ¤@  !) ) 8 8 „ÿ¤@ #$, , 9 9 „ÿ¤@ %&0 0 0 0 „ '00"„    ÿ¤@ '00"( )3 3 : : „ ÿ¤@ * +6 6 6 6 „  ÿ¤@ , << ## „ ÿ´@.·z\V4à‰/ .·z\V4à‰0.·z\V4à‰122  ?? !! „ ÿ´@.·z\V4à‰/ .·z\V4à‰0.·z\V4à‰144 ? ? BB %% „ÿ´@.·z\V4à‰/ .·z\V4à‰0.·z\V4à‰155 B B67!Ú%QS87")6·  &%97 : ÿ´@>7?@7 : ÿ´@AB7 : ÿ´@CD7 : ÿ´@EF7 : ÿ´@HI7" ":  ÿ´@KL7$ $: M7$$„ÿ´@M7$$NO7/ /:22P7) )$„  ÿ¤@ P7) )$S T71 1:55P7) )$„ ÿ¤@ P7) )$U V73 3:33P7) )$„  ÿ¤@ P7) )$W X75 5!:66#P7) )$„   ÿ¤@ P7) )$Y Z77 7:44P7) )$„ ÿ¤@ P7) )$\ ]79 9:77P7) )$„  ÿ¤@ P7) )$^ _7; ;:88P7) )$„ ÿ¤@ P7) )$` a7g g:øøP7??„b7g)g.„ÿ¤@P7??b7g)g.e7ggf7g;gAg7gUg_hi7jj7jj€¬ii7jj7jj€¬i n7jj7jj€¬n  i7kk(7kk(€¬i!i7kk(7kk(€¬i "n7kk(7kk(€¬n ;7;9;@;B;D;F;I ;LM7$$„9;9@;@B;BD;DF;FI;I L;LM7$$„68##P7) )$„Q7))p  OQOP7) )$„  TQTP7) )$„ VQVP7) )$„  XQXP7) )$„   ZQZP7) )$„ ]Q] P7) )$„   _Q_!P7) )$„ !68 ""## "P7??„c7?? r7EEst7GGu"v7IIw"x7KKy |7MM} ~7OO €€7QQ€ €‚7SS€ƒ €„7UU €… €†7WW€‡ €ˆ7YY"€‰ €Š7[[$€‹ €Œ7]]"€ "€Ž7__€€7aa€‘€’7cc€“aca#P7??„$b7g)g.„#$#$€”68 %%## k7jj kikikn 68 %%##€•7jj  o7kk( oioion 68 %%## €–7yy €—68€ %&#%#€˜7:‚‚%P7,0„ %ÿ¤@P7,0€™$€š7€€:‚‚ÿ¤@€› <€œ " ( 6—&Q%S.%€€œ€œ€¬ € G &€€œ€œ€¬ €G '€€œ€œ €¬ €  (i€œ€œ€¬ i )i€œ€œ€¬ i  *n€œ€œ€¬ n  +€¢€œ' '€£ÿ¤@ €¤ ,€¥€œ* *€£ÿ¤@ €¦ -€§€œ. .€£!!ÿ¤@ €¨ .€©€œ1 1€£##ÿ¤@ .·z\V4à‰/ .·z\V4à‰0€ª€ª /€«€œ3 3€£$$ÿ¤@ €¬ 0€­€œ5 5%€£&&*ÿ¤@ €® 1€¯€œ7 7€£''ÿ¤@ €° 2€±€œ9 9€£((ÿ¤@  3€²€œ< <€£//ÿ¤@ €³€œ<<€´ 4€µ€œ> >€£11 ÿ¤@ €¶€œ>>€· 5€¸€œA A€£00ÿ¤@ .·z\V4à‰/ .·z\V4à‰0€¹€¹ 6€º€œDD€£22ÿ¤@ €» 7€¼€œGG€£::ÿ¤@ €½€œGG'€¾ 8€¿€œQ Q€£yy&b€œKK„&ÿ¤@b€œKK€À9€Á€œQ Q€£zz'b€œKK„'ÿ¤@b€œKK€Â:€Ã€œS S€£}}(b€œKK„(ÿ¤@b€œKK€Ä;€Å€œS S€£~~)b€œKK„)ÿ¤@b€œKK€Æ<€Ç€œU U€£€€€€*b€œKK„**ÿ¤@b€œKK€È=€É€œXX€£€€"+b€œKK„ÿ¤@b€œKK€Ê>€Ë€œ[ [€£€„/€„2,b€œKK„,ÿ¤@b€œKK€Ì?€Í€œ] ]€£€€ -b€œKK„--ÿ¤@b€œKK€Î@€Ï€œ` `€£€ƒ€ƒ&.b€œKK„. ÿ¤@b€œKK€ÐA€Ñ€œc c€£€‘€‘/b€œKK„/ÿ¤@b€œKK€ÒB€Ó€œc c€£€’€’0b€œKK„0ÿ¤@b€œKK€ÔC€Õ€œe e€£€”€”"1b€œKK„1ÿ¤@b€œKK€ÖD€×€œhh€£€Ò€Ò2b€œKK„ÿ¤@b€œKK€ÙE€Ú€œjj€£€Ó€Ó3b€œKK„ÿ¤@b€œKK€ÛF€Ü€œll€£€Ô€Ô 4b€œKK„ÿ¤@b€œKK€ÝG€Þ€œnn€£€·€·"5b€œKK„55ÿ¤@b€œKK€ßH€à€œpp#€£€¸€¸'6b€œKK„6#6ÿ¤@b€œKK€ãI€ä€œtt"€£€º€º&7b€œKK„ÿ¤@.·z\V4à‰/ .·z\V4à‰0€å€åb€œKKJ€æ€œvv"€£€À€À&8b€œKK„ÿ¤@.·z\V4à‰/ .·z\V4à‰0€ç€çb€œKKK€è€œyy €£€Ö€Ö$9b€œKK„ÿ¤@b€œKK€ëL€ì€œ{{"€£€Ù€Ù&:b€œKK„ÿ¤@b€œKK€îM€ï€œ€…€…€£==  ÿ¤@&&Na€œ€‡ €‡€£ÿ¤@&€ñ€œ€‡€‡#€ò&O€ó€œ€‰ €‰€£$#ÿ¤@&€ñ€œ€‰€‰(€ô&P€ï€œ€“€“€£©©  ÿ¤@''Qa€œ€• €•€£……ÿ¤@'€ñ€œ€•€•#€ö'R€ó€œ€˜ €˜€£‰‰$#ÿ¤@'€ñ€œ€˜€˜(€÷'=€œ€ø€œ€ù€ú€œ€û€ü€œ  €ý€þ€œ## €ÿ€œ%%(=€(=€(=€ (=i(=i(=n €¢(=€¢€¥(=€¥€§(=€§€©(=€©€«(=€«€­(=€­€¯(=€¯€±(=€±€²(=€²€µ(=€µ€¸(=€¸€º(=€º€¼(=€¼  6<;;SS;b€œKK„d€œKKp  €¿(d€¿b€œKK„>€Å(d€Å?b€œKK„?€Ç(d€Ç@b€œKK„@@€É(d€ÉAb€œKK„€Ë(d€ËBb€œKK„B€Í(d€ÍCb€œKK„CC€Ï(d€ÏDb€œKK„D €Ñ(d€ÑEb€œKK„E€Ó(d€ÓFb€œKK„F€Õ(d€ÕGb€œKK„G€×(d€×Hb€œKK„€Ú(d€ÚIb€œKK„€Ü(d€ÜJb€œKK„€Þ(d€ÞKb€œKK„KK€à(d€àLb€œKK„L#L€ä(d€äMb€œKK„€æ(d€æNb€œKK„€è(d€èOb€œKK„€ì(d€ìPb€œKK„6<QQSS€ð€œ€€p  €ï(€ð€ï  a(€ða€ó(€ð€ó#6<QQSS€õ€œ€€p  €ï(€õ€ï  a(€õa€ó(€õ€ó#6<QQSSQ „p   ) R „RR ) S „SS ) T „TTT)U „UU)V „VV)W „W!)!X „XX$)$Y „YY&)&Z „['00"„ZZ[[[[)))\ „\+)+] „]] ) ^ „^ ) _ „_ ) ` „``+QaaSS #0¶aaSe 16laaSe< 7=  aaSeS  ** DDÿ¤@-T // **ÿ¤@-U 77 ÿ¤@-V :: 55ÿ¤@-W == 22ÿ¤@-X @@ ,,ÿ¤@-Y DD ÿ¤@-Z II ?? ÿ¤@-[ MM @@ÿ¤@-\  PP CCÿ¤@!-]" SS 77ÿ¤@#-^$ VV 88ÿ¤@&-_' XX 99ÿ¤@(-`) \\ FFÿ¤@.·z\V4à‰/ .·z\V4à‰0**+-a, ^^ GGÿ¤@.·z\V4à‰/ .·z\V4à‰0---b. `` HHÿ¤@.·z\V4à‰/ .·z\V4à‰0//-c0 cc ::ÿ¤@1-d2 ee ;;ÿ¤@3-%   <aaeef '' 4 <aaee56#&7aaen e86.. 9jj  ÿ¤@;1f<6009002 ÿ¤@1g>633 9**  ÿ¤@?1hi64 4 64 4 €¬3i3ii64 4 64 4 €¬3i 3jn64 4 64 4 €¬3n 3ki65 565 5€¬4i4li65 565 5€¬4i 4mn65 565 5€¬4n 4B6 2C6 6 C6EE6 C6 FF6C6 GG62C6 HH6C6II6 C6 JJ6K5aann:6 5aann@64 4 1@i1@i1@n 5aann€•644A65 51Ai1Ai1An 5aann€•655_cHa‡n@L cHa‡n@!'LÕb Ha‡n@ MN(. OLÈ!$ain›-n€P P €¬7€ G7o€P P €¬7€a €œ00„Ra7p€P P  €¬7€G 7qiP P €¬7i7riP P €¬7i 7snP P €¬7n G7tnP P €¬7nG7unP P €¬7n9b €œ00„Rb7v€P'' P'' €¬:€ G:w€P'' P'' €¬:€c €œ00„Rc:x€P'' P''  €¬:€G :yiP'' P'' €¬:i:ziP'' P'' €¬:i :{nP'' P'' €¬:n G:|nP'' P'' €¬:nG:}nP'' P'' €¬:n9d €œ00„Rd:~€P==P==€¬;€ G;€P==P==€¬;€e €œ00„Re;€€€P==P== €¬;€G ;€iP==P==€¬;i;€‚iP==P==€¬;i ;€ƒnP==P==€¬;n G;€„nP==P==€¬;nG;€…nP==P==€¬;n9f €œ00„Rf;€†vPNNPNN€¤WPNN<€‡XPddPdd€¤YPdd<€ˆZP}}P}}€¤[P}}!\<€‰]P€ž€žP€ž€ž€¤<€Š^P€Ÿ€ŸP€Ÿ€Ÿ€¤<€‹_P€¢€¢P€¢€¢€¤WP€¢€¢<€Œ`P€¸€¸P€¸€¸€¤WP€¸€¸<€aP€Ì€ÌP€Ì€Ì €¤<€ŽbP€Í€Í%P€Í€Í% €¤<€cP€Î€Î(P€Î€Î( €¤<€dP€Ï€Ï*P€Ï€Ï* €¤<€‘eP€Ð€ÐP€Ð€Ð€¤<€’fP€Ñ€ÑP€Ñ€Ñ €¤<€“gP€Ò€Ò!P€Ò€Ò! €¤<€”hP€Ó€Ó!P€Ó€Ó! €¤<€•iP€Ô€Ô(P€Ô€Ô( €¤<€–jP€Õ€ÕP€Õ€Õ €¤<€—kP€Ö€ÖP€Ö€Ö€¤<€˜lP‚‚ P‚‚ €¤<€™mP‚/‚/ P‚/‚/ gnoPgg€¤noPeP‚/ ‚/fP‚/‚/gP‚/‚/"<€šBP‚0‚0P‚0‚0hnoPhh €¤noPeP‚0 ‚0fP‚0‚0<!QP !CPrrP CP ssPttPuuPvvP wwPxxP yyP zzP{{P ||P }}P~~P  P!!€€P"" !CP##‚‚P## !CP$ $ƒƒP$$CP%%„„P%% <Q€<Q€<Q€ <Qi<Qi<Qn<Qn<Qn9  LM""ii››"UP'' "……P((††P))‡‡P**ˆˆP++‰‰P,,ŠŠP--‹‹P..ŒŒP//P00ŽŽP11P22P33‘‘P44’’P55““P66””P77••P88––P99——P::˜˜P;;<U€<U€<U€ <Ui<Ui<Un<Un<Un9  LM##ii››#VP==#™™P>>ššP??››P@@œœPAAPBBžžPCCŸŸPDD  PEE¡¡PFF¢¢PGG££PHH¤¤PII¥¥PJJ¦¦PKK<V€<V€<V€ <Vi<Vi<Vn<Vn<Vn9  LM$$ii››$§¨(-$©LC%%il›­€›¨  ¨  "€¤f¨ @€œª¨  ¨  in¨  i€¤n¨  f¨ @€«¨¨jnoPj€¤noPf¨@€ž¬¨ ¨ €¤­¨ @€Ÿ®¯ ¯  €¤@€ °¯'' ¯''  €¤@€¡±¯((¯((€¤@€¢²¯))¯))knoPk€¤noP@€£Q¯++ ¯++ €¤f¯+ +@€¤³¯,,¯,,€¤´¯,,f¯,,%@€¥µ¯§§ ¯§§ #€¤·¯§ § ¸¯§ §f¯§§@€¦¹¯¨¨¯¨¨#€¤·¯¨¨¸¯¨¨´¯¨¨%f¯¨&¨,@€§º¯ÜܯÜÜ#€¤·¯Ü Ü ¸¯Ü Üf¯ÜÜ@€¨»¯ÝݯÝÝ#€¤·¯Ýݸ¯ÝÝ´¯ÝÝ#f¯Ý$Ý*@€©¼¯‚‚¯‚‚#€¤¸¯‚‚f¯‚‚@€ª½¯‚‚¯‚‚#€¤¸¯‚‚´¯‚‚'f¯‚(‚.@€«¾¯‚B‚B ¯‚B‚B €¤f¯‚B‚B@€¬¿¯‚C‚C¯‚C‚C€¤´¯‚C‚C f¯‚C!‚C'@%À(.%ÁL½&'ln­Å€­Â$%&€¤€½!Æ"*ÇE€®È(( (( 2€¤E€¯É)) )) 2€¤E€°Ê****2€¤E€±Ë++ ++ 2 €¤E€²Ì,,,,2€¤E€³Í-- -- 2€¤E€´Î.. .. 2€¤E€µÏ////2€¤E€¶Ð00 00 2€¤E€·Ñ11112€¤E€¸Ò2 22 2€ôE€¹Ó3 33 3€ôE€º>55 55  €¤E€»ÔEEEElnEE„'l€¤nEEÖEE€³E"E#E€¼×GGGGmnGG&„'m€¤nGG&ÖGG€³G*G+E€½ØKK KK €¤E€¾ÙLLLL€¤E€¿ÚMM MM €¤E€ÀÛNNNN€¤E€ÁÜOOOO€¤E€ÂÝQQ QQ €¤E€ÃÞSSSS(€¤àSSE€ÄáZZZZ€¤E&Å &LÀ''nnÅÅ'pâ(+'ãLÛB(Hn‡Å@{€Åäâânnâ#$onâ%&Hnono€¤nâ#$nâ%&æâçI€Æ€ââ €¬=€ G=€Ç€ââ  €¬=€ p €œ00„Rp=€È€ââ  €¬=€G =€Éiââ €¬=i=€Êiââ €¬=i =€Ënââ €¬=n G=€Ì€ââ)€¬J€ GJ€Í€ââ))€¬J€)q €œ00„RqJ€Î€ââ) €¬J€G J€Ïiââ)€¬JiJ€Ðiââ)€¬Ji J€Ñnââ)€¬Jn GJ€Ò€ââ*€¬K€ GK€Ó€ââ**€¬K€*r €œ00„RrK€Ô€ââ* €¬K€G K€Õiââ*€¬KiK€Öiââ*€¬Ki K€×nââ*€¬Kn GK€Ønââ €¬=nG=€Ùnââ  €¬=n9 s €œ00„Rs=€Únââ)€¬JnGJ€Ûnââ))€¬Jn9)t €œ00„RtJ€Ünââ*€¬KnGK€Ýnââ**€¬Kn9*u €œ00„RuK€Þ€â## â## +€¬L€ GL€ß€â## â## ++€¬L€+v €œ00„RvL€à€â## â## + €¬L€G L€áiâ## â## +€¬LiL€âiâ## â## +€¬Li L€ãnâ## â## +€¬Ln GL€änâ## â## +€¬LnGL€ånâ## â## ++€¬Ln9+w €œ00„RwL€æëâ**â**+€¤ìâ**I€çíâ,, â,, '+€¤Öâ,,ìâ,,I€èîâ..â..'+€¤Öâ..ïâ..I€éðâ11â11'€¤Öâ11ñâ11I€êòâ44â44'*€¤Öâ44·â44I€ë€â>>â>>,€¬M€ GM€ì€â>>â>>,,€¬M€,x €œ00„RxM€í€â>>â>>, €¬M€G M€îiâ>>â>>,€¬MiM€ïiâ>>â>>,€¬Mi M€ðnâ>>â>>,€¬Mn GM€ñnâ>>â>>,€¬MnGM€ònâ>>â>>,,€¬Mn9,y €œ00„RyM€ó€âBBâBB-€¬N€ GN€ô€âBBâBB--€¬N€-z €œ00„RzN€õ€âBBâBB- €¬N€G N€öiâBBâBB-€¬NiN€÷iâBBâBB-€¬Ni N€ønâBBâBB-€¬Nn GN€ùnâBBâBB-€¬NnGN€únâBBâBB--€¬Nn9-{ €œ00„R{N€û€âDDâDD.€¬O€ GO€ü€âDDâDD..€¬O€.| €œ00„R|O€ý€âDDâDD. €¬O€G O€þiâDDâDD.€¬OiO€ÿiâDDâDD.€¬Oi OnâDDâDD.€¬On GOnâDDâDD.€¬OnGOnâDDâDD..€¬On9.} €œ00„R}OöâKKâKK .€¤BâKKI÷    /0€¤[†€ú Iû  0/€¤ü Iý‑€‘‑€‘0/€¤ü‑€‘I€—€” —€” (€¬G€ GG€—€” —€” ((€¬G€(~ €œ00„R~G €—€” —€” ( €¬G€G G i—€” —€” (€¬GiG i—€” —€” (€¬Gi G n—€” —€” (€¬Gn GG n—€” —€” (€¬GnGGn—€” —€” ((€¬Gn9( €œ00„RGþ‚€š‚€š',€¤Ö‚€š·â€š€šIÿ‱€± ‱€± 12€¤‚‱€±I‚′€²′€²32€¤‚′€²I‚″€³″€³U€¤‚″€³ I‚‿€¿‿€¿04€¤‚ ‿€¿‚ ‿€¿I‚ â€Ê€Êâ€Ê€Ê526€¤‚ â€Ê€Ê‚ â€Ê€Ê I‚â€Ë€Ëâ€Ë€Ë6//€¤‚â€Ë€ËI‚â€Ð€Ðâ€Ð€Ð€€‚â€Ñ€Ñ„ €€€€€€€¤‚â€Ñ€Ñ‚â€Ð€Ð‚â€Ð€Ð‚I‚â€Ý€Ýâ€Ý€Ý€noP € €Y€Y€€¤noP‚â€Ý€Ý‚â€Ý€Ý‚I‚â€å€å â€å€å €‚nâ€æ€æ €ƒnâ€æ€æ€‚€ƒ€‚€ƒ€¤nâ€æ€ænâ€æ€æ‚â€å €å ‚I‚â€ì€ìâ€ì€ì€„nâ€í€í €…nâ€í €í!€„€…Z€„€…€¤nâ€í€ínâ€í €í!‚â€ì€ì‚I â€ò€òâ€ò€ò 78‚´\‚"â€ò€ò"\‚#â€÷€÷â€÷€÷87€¤\‚â€÷€÷\‚$â€ø€øâ€ø€ø87€¤\‚â€ø€ø\‚%â€ù€ùâ€ù€ù8 €¤\\ â€ü€üâ€ü€ü 9,:‚´^‚(â€ü€ü^‚#ââ:9€¤^‚â^ ‚)â â :,€¤^‚â!"^!‚$ââ:9€¤^‚â^"‚%ââ: €¤^^# â  â  8:  -;‚´_‚+â  ‚,â - 4‚"â D P‚-â ^ c_$‚.ââ;2€¤_‚â_%‚ ââ;€¤_‚â _&‚/ââ;,€¤_‚â_'êââ;2€¤_‚″â_(‚0â!!â!!;Z €¤__) â$$â$$<‚´``*â&&â&&<=1€¤`‚â&&‚3â&&`+!â))â))<=1€¤`‚â))‚3â))`,‚4â**â**<=Y1€¤`‚5â**"`-)â--â--<€¤``. â00â00 Y0>‚´b‚7â00b/‚%â7 7â7 7> €¤bb0‚8â8 8â8 8>Y0€¤b‚9â88b1‚:â9 9â9 9>Y0€¤b‚â99b2 â<<â<<?‚´cc3â>>â>>?01€¤c‚â>>Mâ>>c4)âAAâAA?€¤cc5‚<âBBâBB?H01€¤cc6!âCCâCC?01€¤c‚âCCMâCCc7 âGGâGG@‚´dd8âIIâII@=1€¤d‚âIIMâIId9)âLLâLL@€¤dd:‚<âMMâMM@H=1€¤dd; âQQâQQA‚´ee<âSSâSSA==€¤e‚âSSMâSSe=‚?âW WâW WA==€¤e‚âWWe>)âZZâZZA€¤ee?‚@â^^â^^€†noP'€†. 7B! / ,(( €¤noP‚Aâ^^Bâ^!^%‚BI (‚Câ(Lp))‡‡@@)â )Lp**‡‡@@*qâ*!‚Dâ  C‚Eâ  C‚Fâ   C*‚Gâ C‚Hâ C )‚Iâ Iq€ Iq€  Iq€  Iqi Iqi Iqn Iqn Iqn  9    Lp++‡‡@@+èâ+ C‚Jâ"C‚Kâ%6!‚Lâ9D)èèâ Iè€)Iè€))Iè€) Ièi)Ièi)Ièn)Ièn)Ièn))9) ) Lp,,‡‡@@,éâ,*‚M‚Mâ*‚N‚Nâ **‚O‚Oâ-5Ié€*Ié€**Ié€* Iéi*Iéi*Ién*Ién*Ién**9* * Lp--‡‡@@-‚&â!! -Lp..‡‡@@.‚ â"".Lp//‡‡@@/êâ## /9Câ##"+‚&‚&â##7Câ#4#?+‚ ‚ â#%#0Iê€+Iê€++Iê€+ Iêi+Iêi+Iên+Iên+Iên++9+ + Lp00‡‡@@0‚.â$$ 0 +Lp11‡‡@@1óâ>>1*‚Jâ??#‚Kâ?&?),‚P‚Pâ??,‚Q‚Qâ@@Ió€,Ió€,,Ió€, Iói,Iói,Ión,Ión,Ión,,9, , Lp22‡‡@@2ôâBB27‚JâB B+,‚KâB.B<B‚LâB?BF!‚RâBIBT-ôôâBBIô€-Iô€--Iô€- Iôi-Iôi-Iôn-Iôn-Iôn--9- - Lp33‡‡@@3õâDD3 9,‚SâEE 7‚TâFF -‚UâGG 7‚HâHHIõ€.Iõ€..Iõ€. Iõi.Iõi.Iõn.Iõn.Iõn..9. . Lp44‡‡@@4‚V €‰4Lp55‡‡@@5‚W €Š5Lp66‡‡@@6ù  6D‚YLp77‡‡@@7ß—€” 7C― €•(‚Z‚Z―€• EC‖€–(‚[‚[‖€– (kk‗€— (‚\‚\‘€˜ I߀(I߀((I߀( Ißi(Ißi(Ißn(Ißn(Ißn((9( ( ‚]Lp88‡‡@@8‚:‡€¡ 8Y0‚^Lp99‡‡@@9‚ ․€¤9‚_Lp::‡‡@@:‚‧€§:‚`Lp;;‡‡@@;‚
€¨;Lp<<‡‡@@<‚‰€°<‚aLp==‡‡@@=‚b‵€µ= 2Lp>>‡‡@@>‚2‾€¾>4‚cLp??‡‡@@?‚dâ€É€É?6‚eLp@@‡‡@@@‚!â€ò€ò@ ‚fâ€ô€ôLp‚!7‚â€õ€õ Lp‚!Z7Mâ€ö€ö Lp‚! I‚!  78‚#I‚!‚#87‚$I‚!‚$87‚%I‚!‚%8 ‚gLpAA‡‡@@A‚'â€ü€üA ‚hâ€þ€þLp‚'9‚â€ÿ€ÿ Lp‚',Mâ Lp‚'Z9‚iâ Lp‚' I‚'  9,:‚#I‚'‚#:9‚)I‚'‚):,‚$I‚'‚$:9‚%I‚'‚%: ‚jLpBB‡‡@@B‚*â  B2‚â  Lp‚*Mâ Lp‚*,‚iâ Lp‚*Z ‚kâLp‚* I‚* 8:  -;‚.I‚*‚.;2‚ I‚*‚ ;‚/I‚*‚/;,êI‚*ê;2‚0I‚*‚0;Z ‚lLpCC‡‡@@C‚1â$$CZ=Y1Wâ%% Lp‚1 I‚1 <I‚1<=1!I‚1!<=1‚4I‚1‚4<=Y1)I‚1)<‚mLpDD‡‡@@D‚6â00D ‚nâ44Lp‚6jY0‚pâ55Lp‚6Y0‚qâ66Lp‚6 I‚6  Y0>‚%I‚6‚%> ‚8I‚6‚8>Y0‚:I‚6‚:>Y0‚rLpEE‡‡@@E‚;â<<EZ01Wâ== Lp‚; I‚; ?I‚;?01)I‚;)?‚<I‚;‚<?H01!I‚;!?01‚sLpFF‡‡@@F‚=âGGFZ=1WâHH Lp‚= I‚= @I‚=@=1)I‚=)@‚<I‚=‚<@H=1‚tLpGG‡‡@@G‚>âQQGZ==WâRR Lp‚> I‚> AI‚>A==‚?I‚>‚?A==)I‚>)A‚uLpHH‡‡@@‚v]FSharp PowerPackFsYaccASTDriverLexerParserInternal UtilitiesArg CompatibilityOCamlLexingTextGenericImplFragmentsParsingImplementation ParseHelpers Microsoft‚©¼~W8  @ !   !@!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ##########ÿÿ##ÿÿ################################################################################################################################################ÿÿ##########ÿÿ##ÿÿ################################################################################################################################################ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿ$$$$$$$$$$$$$$$$$$$$$$$$$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ333333333.,33-333333333333333333.3133+303333333/..........3333333..........................333333..........................333333333333333333333333333333333332ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9999999999ÿÿ99ÿÿ999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999ÿÿ9999999999ÿÿ99ÿÿ999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿ::::::::::::::::::::::::::ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKKKKKKKKDEKKFKKKKKKKKKKKKKKKKKKDKKKK>KKKKKKKKKIKKKKKKKKKKJB@KAKKGGGGGGGGGGGGGGGGGGGGGGGGGGKKKKKKGGGG?GGGGGGGGGGGGGGGGGGGGGCHKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿ^ÿÿ[ÿÿ]ZYÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPSPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMÿÿÿÿÿÿÿÿNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOOOOOÿÿOOÿÿOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÿOOOOOOOOOOÿÿOOÿÿOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPTPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPUPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPVPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿPÿÿPPPPPPPPPPPPPPPPPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzzzzzÿÿzzÿÿzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzÿÿzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿ||ÿÿ||||||||||||||||||||||||||||||||||||||||||||||||{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿ||ÿÿ||||||||||||||||||||||||||||||||||||||||||||||||{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚‚‚‚‚‚‚‚ÿÿ‚‚ÿÿ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿÿ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„„„„„„„„ÿÿ„„ÿÿ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ƒ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„„„„„„„„ÿÿ„„ÿÿ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ƒ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ!"ÿÿ ! ÿÿ#!#&'()ÿÿ#$  #(          "$&(*,.13579;=?ADFHJLNPRTVX@À@   €€@@@   @ @@ @@ @@ @ @ @ @ @ @ @ @@@€ @@(&@ @@@@!@(&@@ *€%@@(&@@(&@€+@  !#$&')*,-/02479:;<>ABDFGJKNOQ ÿÿÀÿÿÿÿÿÿ@@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ @ÿÿ @ÿÿ @ÿÿ @ÿÿ@ÿÿÿÿÿÿÿÿ@@@ÿÿÿÿ@ÿÿÿÿ@ÿÿ@ÿÿ@ÿÿ@!YCY 5Y_CorExeMainmscoree.dllÿ% @ùJV€Y€;RSDS5 åq-Ø£Hœi>šƒý‹Ud:\Depot\staging\src\fsppack\FsYacc\obj\x86\Retail\FsYacc.pdb €8€P€h€€b `ê 4VS_VERSION_INFO½ïþ„&Æ„&Æ?xStringFileInfoT000004b0DAssembly Version2.0.50726.900<FileVersion2.0.50726.900@ProductVersion2.0.50726.9000 Commentsfsyacc.exe@ FileDescriptionfsyacc.exe<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°P `9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzzzzzzzzzÿÿzzÿÿzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzÿÿzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿ||ÿÿ||||||||||||||||||||||||||||||||||||||||||||||||{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ||||||||||ÿÿ||ÿÿ||||||||||||||||||||||||||||||||||||||||||||||||{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚‚‚‚‚‚‚‚‚‚ÿÿ‚‚ÿÿ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿÿ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„„„„„„„„ÿÿ„„ÿÿ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ƒ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„„„„„„„„ÿÿ„„ÿÿ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ƒ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿ!"ÿÿ ! ÿÿ#!#&'()ÿÿ#$  #(          "$&(*,.13579;=?ADFHJLNPRTVX@À@   €€@@@   @ @@ @@ @@ @ @ @ @ @ @ @ @@@€ @@(&@ @@@@!@(&@@ *€%@@(&@@(&@€+@  !#$&')*,-/02479:;<>ABDFGJKNOQ ÿÿÀÿÿÿÿÿÿ@@ÿÿ@ÿÿ@ÿÿ@ÿÿ@ÿÿ @ÿÿ @ÿÿ @ÿÿ @ÿÿ@ÿÿÿÿÿÿÿÿ@@@ÿÿÿÿ@ÿÿÿÿ@ÿÿ@ÿÿ@ÿÿ@õ›œ œ_CorExeMainmscoree.dllÿ% @÷QæJVPœP~RSDSØGˆa5÷MŒß!’­$d:\Depot\staging\src\fsppack\FsYacc\obj\x86\Retail\FsYacc.pdb €8€P€h€€¢ô  ê ô4VS_VERSION_INFO½ïþ  ?TStringFileInfo0000004b08Assembly Version1.9.7.80FileVersion1.9.7.84ProductVersion1.9.7.80 Commentsfsyacc.exe@ FileDescriptionfsyacc.exe<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation° 0<fsharp-3.0.34/lib/bootstrap/2.0/fssrgen.exe0000775000175000017500000353100012260314606017331 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PEL£—¬Jà ¨îÆ à@  °?ŒÆ_à ôÆ  H.text˜§ ¨ `.rsrcàª@@.reloc °@BÈÆHˆíD L‹@;ÌŠ€0€ ~ &( *04rps (+  o   o o &*0f(r'ps (+&r´ps (+&rÈps (+&ræps (+&rps (+  þo *0rXp*0:E++++ rw2p*r‘2p*r­2p*rÉ2pþ(+*0¦ (+ ( (+ s  s ( &"rù\ps? (+'!('(o@ )%*)*oA +&,+,o! (+&+!"#sB oC XŽi?=ÿÿÿsD --r¬]psE (+/0/0o &-r^psE (+1212o &-r6^psE (+3( 434o &-r<^ps (+&-r6^psE (+5( 656o & 7-s87989¥g(+-rv^ps (+&-rx^ps (+&-r1_ps (+& :-s;:<;<¥g(+-r‡_ps (+&sF ==(oG  >=s?>@?@¥g(+=oH .Þ-u AA,++ AoI &Ü&Ü. ÞDtBr_ps$ (+CDCDo% EBo& FEFo! ( Þ *A4rfØ(ÓûDr(J }}}*0f({rû_ps ( +{(+o (  {{(+X(+{{( +(K (+*(L *0 ( þ*(M *0)(= (> r`p( þ*(N *0 sB *:(O }*0)(= (> {þ(*(P *0EE++++r `p+r`p+r!`p+ r-`p(+(+ *V(Q } } *0 -(1 (2 (: (R (S (T (3 s s  (+ (+ rU`p(    8·£ (+,++  (++%rY`p(  r_`p( rc`psU (+ (+(( +(  ru`ps ( + (+o (   (+X(+XŽi?>ÿÿÿr}`p( { r`psE (+o &{ r—`psW (!+{ X("+&srv^p (#+r×`p(+ ,+rv^p+$( rß`ps ( +o { ré`psY ($+o  o  (%+ þo *:(Q } *0Y.(1 (2 (: (R (S (T (3 { r[apsE (+þo *:(Q } *0Ä1(1 (2 (: (R (S (T (3 { r›ap([ r¥apo\ &r¯aprÃapo\ &{ rÕap([   o]     { o^ o]    { o_ o] *02( (  *0 (a &*0*0, (&+-***0*0(d &}"*0{"*0 (#*0 (d &*0 (d &*0 (d &*0 (d &*0 (d &*0(d &}#*0{#*0 (d &*0(d &}$*0{$*0(d &}%*0{%*0 (0*0 (d &*0(d &}&*0{&*0 (4*0(d &}'*0{'*0 (7*0 (d &*0 (:*0 (d &*0 (d &*0 (d &*0 (d &*0(d &}(*0{(*0 (d &*0(d &})*0{)*0 (d &*0 (d &*0 (d &*0 (d &*0 (d &*0 (d &*0(d &},}+}**0{,*0{+*0{**0(d &}.}-}/*0{.*0{/*0{-*0 (O*0 (O*0(d &}0*0{0*0(d &}1*0{1*0(d &}2*0{2*0(d &}3*0{3of ¥ó*0(d &}4*0{4*0(d &}5*0{5*0 (_*0 (d &*0 (d &*0 (d &*0 (d &*0 (d &*0 (d &*0(d &}6*0{6*0 rv^p(h*0*0*0(a *0sg *0 ulþ*0sh *0 umþ*04 ul,+*0»:þ9§þ9œ  ul,+   ul,+ 3rum,3tm tm (¾(i  (i þ('+*tltl(¾(j  (j    þ((+*Y**þ,**0¥þ(k *0¾;¥ þ9ž¥þ9Ž  ul,+   ul,+ 3dum,-tm tm (i (i þ('+*tltl(j  (j    þ((+*Y**¥þ,**0o<þ,f um,-tm  ¹y7ž(i Œn(bcXXX *tl  ¹y7ž (j Œo(bcXXX **0 (¿(l *0­;þ9›u 9Œ  ul,+   ul,+ 3dum,-tm tm (i (i þ()+*tltl(j  (j    þ(*+***þþ*0¥=þ9“þ9ˆ  ul,+   ul,+ 3`um,*tm tm (i  (i þ(++*tltl(j (j   þ(,+***þþ*04u , þ(m **0(n }o *0{o *0(n }q *0{q *0(a }r *0 {r {o *0(a }s *0 {s {q *0(a *0st *0 urþ*0su *0 usþ*0sv *0 utþ*0? ur,+ us,+*0#Dþ9þ9ur,+ us,+ ur,+ us,+ @¿ut-us-<ur-jtt tt (¾(w  (w þ('+*tsts(¾(x  (x    þ((+*tr tr (¾ (y   (y  þ(-+*Y**þ,**0¥ þ(z *0E¥  þ9þ¥ þ9îur,+ us,+ ur,+ us,+ @©ut-us-6ur-\tt tt (w (w þ('+*tsts(x  (x    þ((+*tr tr  (y   (y  þ(-+*Y**¥ þ,**0¹Fþ9­ ut-us-6ur-\tt  ¹y7ž(w Œn(bcXXX *ts  ¹y7ž (x Œo(bcXXX *tr ¹y7ž(y Œu(bcXXX **0 (¿({ *0 Eþ9ûu  9ìur,+ us,+ ur,+ us,+ @©ut-us-6ur-\tt tt (w (w þ()+*tsts(x  (x    þ(*+*tr tr  (y   (y  þ(.+***þþ*0Gþ9òþ9çur,+ us,+ ur,+ us,+ @¤ut-us-3ur-Xtt tt (w  (w þ(++*tsts(x (x   þ(,+*tr tr  (y   (y    þ(/+***þþ*0?u  , þ(| **0(} }~ *0{~ *0(} } *0{ *0(} }€ *0{€ *0(a } *0 { {~ *0(a }‚ *0 {‚ { *0(a }ƒ *0 {ƒ {€ *0(a }„ *0s… *0 († þ*0s‡ *0 († þ*0sˆ *0 († þ*0s‰ *0 († þ*0{„ *0+Mþ9þ9 {„ {„ @ó(† E3j¡t| t| (¾(Š  (Š þ('+*t{t{(¾(‹  (‹    þ((+*tz tz (¾ (Œ   (Œ  þ(-+*tyty(¾( ( þ(0+*Y**þ,**0¥ þ(Ž *0O¥  þ9þ¥ þ9î{„ {„ @Õ(† E-\‹t| t| (Š (Š þ('+*t{t{(‹  (‹    þ((+*tz tz  (Œ   (Œ  þ(-+*tyty( ( þ(0+*Y**¥ þ,**0çPþ9Û († E-\t|  ¹y7ž(Š Œn(bcXXX *t{  ¹y7ž (‹ Œo(bcXXX *tz ¹y7ž(Œ Œu(bcXXX *ty ¹y7ž( Œ}(bcXXX **0 (¿( *0 Oþ9ûu  9ì{„ {„ @Õ(† E-\‹t| t| (Š (Š þ()+*t{t{(‹  (‹    þ(*+*tz tz  (Œ   (Œ  þ(.+*tyty( ( þ(1+***þþ*0Qþ9ñþ9æ{„ {„ @Ï(† E*X†t| t| (Š  (Š þ(++*t{t{(‹ (‹   þ(,+*tz tz  (Œ   (Œ    þ(/+*tyty( ( þ(2+***þþ*0Ru  , þ( **0(‘ }’ *0{’ *0(‘ }“ *0{“ *0(‘ }” *0{” *0(‘ }• *0{• *0(a }– *0 {– {’ *0(a }— *0 {— {“ *0(a }˜ *0 {˜ {” *0(a }™ *0 {™ {• *0(a }š *0s› *0 (œ þ*0s *0 (œ þ*0sž *0 (œ þ*0sŸ *0 (œ þ*0s  *0 (œ þ*0{š *0$þ,þ, þ(3+**þ,**0¥ þ(¡ *0*T¥  þ, þ(4+*¥ þ,**0[þ9 (œ E-\¾t†  ¹y7ž(¢ Œn(bcXXX *t…  ¹y7ž (£ Œo(bcXXX *t„ ¹y7ž(¤ Œu(bcXXX *tƒ ¹y7ž(¥ Œ}(bcXXX *t‚  ¹y7ž (¦   Œ‡(bcXXX **0 (¿(§ *0þ, þ(5+*þþ*05\þ9#þ9{š {š @(œ E*X†´t† t† (¢  (¢ þ(++*t…t…(£ (£   þ(,+*t„ t„  (¤   (¤    þ(/+*tƒtƒ(¥ (¥ þ(2+*t‚t‚(¦ (¦ þ(6+***þþ*0Tu  , þ(¨ **0(© }ª *0{ª *0(© }« *0{« *0(© }¬ *0{¬ *0(© }­ *0{­ *0(© }® *0{® *0(a }¯ *0 {¯ {ª *0(a }° *0 {° {« *0(a }± *0 {± {¬ *0(a }² *0 {² {­ *0(a }³ *0 {³ {® *0(a }´ *0sµ *0 (¶ þ*0s· *0 (¶ þ*0s¸ *0 (¶ þ*0s¹ *0 (¶ þ*0sº *0 (¶ þ*0s» *0 (¶ þ*0{´ *0:]þ,)þ,!{´ {´ 3 þ(7+*Y**þ,**0¥ þ(¼ *06_¥  þ,¥ þ, þ(8+**¥ þ,**0þ, (9+**0 (¿(½ *0'_þ,u  , þ(:+**þþ*0"þ,þ, þ(;+**þþ*0_u  , þ(¾ **0(¿ }À *0{À *0(¿ }Á *0{Á *0(¿ } *0{ *0(¿ }à *0{à *0(¿ }Ä *0{Ä *0(¿ }Å *0{Å *0(a }Æ *0 {Æ {À *0(a }Ç *0 {Ç {Á *0(a }È *0 {È { *0(a }É *0 {É {à *0(a }Ê *0 {Ê {Ä *0(a }Ë *0 {Ë {Å *0(a }Ì *0sÍ *0 (Î þ*0sÏ *0 (Î þ*0sÐ *0 (Î þ*0sÑ *0 (Î þ*0sÒ *0 (Î þ*0sÓ *0 (Î þ*0sÔ *0 (Î þ*0{Ì *0:]þ,)þ,!{Ì {Ì 3 þ(<+*Y**þ,**0¥ þ(Õ *0La¥  þ,/¥ þ,"{Ì {Ì 3 þ(=+*Y**¥ þ,**0þ, (>+**0 (¿(Ö *0;aþ,,u  , {Ì {Ì 3 þ(?+***þþ*06]þ,'þ,{Ì {Ì 3 þ(@+***þþ*0bu  , þ(× **0(Ø }Ù *0{Ù *0(Ø }Ú *0{Ú *0(Ø }Û *0{Û *0(Ø }Ü *0{Ü *0(Ø }Ý *0{Ý *0(Ø }Þ *0{Þ *0(Ø }ß *0{ß *0(a }à *0 {à {Ù *0(a }á *0 {á {Ú *0(a }â *0 {â {Û *0(a }ã *0 {ã {Ü *0(a }ä *0 {ä {Ý *0(a }å *0 {å {Þ *0(a }æ *0 {æ {ß *0(ç }Œ}}Ž*0(ç *0 (è *0 (é *0{Œ*0{*0{Ž*0j)þ,a ¹y7žt(QbcXXX ¹y7žt(PbcXXX ¹y7žt(O , (ê +bcXXX **0 (¿oR*0wcþ,hu ,\(A+-*t(Ot(O(ë ,3t(Pt(P3t(Qt(Qþ****þþ*0(‰ráap(ì þoí *0sþ,dþ,\(A+-*t(Ot(O(ë ,3t(Pt(P3t(Qt(Qþ****þþ*0cu ,(V**0 (a &*0 (a &*0 (a &*0sî *0sï þð sñ *0sò *0só þô sñ *0(eu¬ ,  þoõ *oö þo÷ *0Ghu¯ , þoø *u° , où þoú *oû þ(B+*0qlu³ , þoý *u´ , oþ þoÿ *u¶,o þ(C+*o þ(D+*0Ÿqu¸ , þo *u¹ , o þo *u»,o þ(E+*u¼,o  þ(F+*o  þ(G+*0s  *0s *0s *0s *0s *0s *0s *0{ *0} *0(a } *08rþ,'þ,(¾ { { þ('+**þ,**0¥Åþ( *0Ct¥Å þ,&¥Åþ,{ { þ('+**¥Åþ,**0/uþ,& ¹y7ž{ Œn(bcXXX **0 (¿( *04tþ,%uÅ ,{ { þ()+**þþ*0{ *0 ( *0/vþ, þ,{ { þ(++**þþ*0wuÅ , þ( **0(a *0s *0*0(a } *0{ *0 y ,+*0gzþ,Vþ,N,+ ,+ 3.,)  (¾(  ( þ('+**Y**þ,**0¥Æþ( *0r{¥Æ þ,U¥Æþ,H,+ ,+ 3(,#  ( ( þ('+**Y**¥Æþ,**0:|þ,1 - *  ¹y7ž( Œn(bcXXX **0 (¿( *0f{þ,W(H+-*¥Æ ,+ ,+ 3(,#  ( ( þ()+***þþ*0þ*0þ*0^r bp( Œn ,1uA , rbp( ¥Bo  +o +rbpr}`p(+ (+ *0Z€þ,Kþ,C,+ ,+ 3%,   (  ( þ(++****þþ*0(H+-*¥Æþ(! *0 s" €# *0(a *0s$ *0 uÈþ*0~# *0 uÇþ*0‚ uÈ,+*0¸„þ9¤þ9™  uÈ,+   uÈ,+ 3ouÈ,etÈ tÈ (¾(%  (% ('+/*1*(¾(&  (&   (' **Y**þ,**0¥(( *0Á…¥ þ9¡¥þ9‘  uÈ,+   uÈ,+ 3guÈ,]tÈ tÈ (% (% ('+/*1* (& (&   8Vÿÿÿ*Y**¥þ,**0_†þ,V uÇ, *tÈ  ¹y7ž(& () bcXXX ¹y7ž(% Œn(bcXXX **0 (¿() *0¢‡þ9u 9  uÈ,+   uÈ,+ 3YuÈ,OtÈ tÈ (% (% ()+,! (& (& 8oÿÿÿ****þþ*0ˆþ9}þ9ruÈ,+ uÈ,+ 3JuÈ,@tÈ tÈ (%  (% (++,(& (& 8‚ÿÿÿ****þþ*0‚u ,(* **0 (I+*0C‰(I+  è1r%bp*)%rAbp¤)%þCo ¤)(+ *0/uÇ,(‰rUbp(ì oí s, ztÈ(% *0/uÇ,(‰rUbp(ì oí s, ztÈ(& *0 (J+*0/ŠuÈ9tÈ (& uÈ9(& tÈ (& uÈ9›(& tÈ (& uÇ9<(% (% (% s rybp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r}bp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r}bp( Œn,8uA,rbp( ¥Bo  +  o +rbp( rƒbp( þo *(&  (% (% (% s rybp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r}bp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r}bp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r‡bp( þo *(% (% s rybp( Œn,8uA,rbp( ¥Bo  +  o +rbp( r}bp( Œn,8uA,rbp( ¥Bo  +  o +rbp( rƒbp( þo *(% s rybp( Œn,8uA,rbp( ¥Bo  +  o +rbp( rƒbp( þo *r—bp*0 s- ¥*0s- ¥¥ *0(1 *0(1 }2 }3 *0{2 *0{3 *0}2 *0}3 *0(a &}4 2}5 *0)Œ{4 (K+ n  {4 (L+*01uË,'tË (7 {5 1*X+Ñ*0(a &}š*0{š*0~›*0 €,~,&*0(a &}8 }9 *0þnŒTs: *0 s: *0þ{9 ,**0¾“þ{9 9©(; þ{9 9~uŒ ,  {šzuT,T~›ŒŒ}9 o< }9 }8 ÞtsªŒŒ}9 þ Þrbps= z{8 Þ (> &Ü*{8 *W w—« 0 þo *0‚”þ{9 ,+,.(? Œn(M+,rµbp*(? þno *þ{9 uŒ ,( {š~›(@ ,rÃbp*þo *rÝbp*0 –(a &þÖ}A }B *0w™{B , {A +  oC YE**o/ uÖ ,oD - }A +sE }A }B 8‰ÿÿÿ0 þoF *0 oF ¥ *0 {B ,{A þoG *þoG *0 {B ,{A þoH *þoH *0%{B ,{A oG +oG Œn*0(I *0 ›sJ z0(a &}O }P *0{O oQ &*0{O oQ &*0{P þo/ *0{P ¥þo. *0(a *0 sR *0sS *0*0 uÏ,+ uÐ,+*0(T }U }V *0{U *0{V *0,(T }W }X }Y }Z }[ *0{W *0{X *0{Y *0{Z *0{[ *0(a }\ *0 {\ {U *0 {\ {V *0(a }] *0 {] {W *0 {] {X *0 {] {Y *0 {] {Z *0 {] {[ *0(a &}^ }_ }` *0Ÿ(N+ sa €b *0{_ (O+}` *0 }` *0+(N+}^ {^ {` (P+}_ }` *0~b *0Ÿ(N+ (Q+sa *0~b *0Ÿ(N+ (Q+(a *0{^ *0{_ *0 {^ {^ {_ (R+sa *0 {_ þ*0{^ {_ (S+*0{_ þ(T+*0{_ þ(U+*0 {^ {^ {_ (V+sa *0{_ þ(W+*0(f {_ þ(X+*0{^ {_ (Y+*0{_ þ(Z+*0{^ {_ ([+sg *0{^ {_ (\+sg *0B¡{^ {_ (]+ (h (i {^ sa {^ sa sj *0{_ (^+*0{^ {_ (_+*0{^ {^ {_ (`+sa *0{^ {_ (a+*0 {_ (b+*0 {_ (O+*0Ÿ(N+ (c+sa *0¥¦ ¥ok oK ,hol (m (n so (p (q (d+ b X wX (e+ b X wX + Þu   ,  oI &Ü&Ü&(r *tƒ0¨uÓ ,¥ob þ**0(s *0 {_ (f+*0{_ (f+¥ *0{^ {_ (S+*0(‰rùbp(ì oí st z0su (g+(h+¥*0sv (i+(j+¥Ü*0(‰rùbp(ì oí st z0{^ {_ (_+*01{^ {_ (_+,{^ {_ (S+o**0(‰rùbp(ì oí st z0(‰rùbp(ì oí st z0(‰rùbp(ì oí st z0(‰rùbp(ì oí st z0L©(m {^ {_ (_+,-(m {^ {_ (S+ (n þ(k+**0{_ þ(l+*0*0{_ (^+*0FªuÓ , sw ¥¥(m+*(‰rcp(ì oí r;cpsx z0(a &}ˆ *0(¨s‰ {ˆ è¥(n+(o+(p+*0{³*0{´*0(a }³}´*0(a *0sŠ *0 s‹ *0*0¬ uà,+ uá,+*0$(Œ } }Ž } } *0{ *0{Ž *0{ *0{ *0(Œ }‘ *0{‘ *0(a }’ *0 {’ { *0 {’ {Ž *0 {’ { *0 {’ { *0(a }“ *0 {“ {‘ *0(a &}” }• }– *0Ÿ(N+ s— €˜ *0{• (q+}– *0 }– *0+(N+}” {” {– (r+}• }– *0{” *0{• *0~˜ *0{” {” {• (s+s— *0{” {” {• (t+s— *0{• (u+*0{” {• (v+*0{• þ(w+*0s™ {• þ(x+*0 {• þ*0R®{• -sš *{” {• (y+ (› (œ {” s— {” s— sš *0*{• -*{” {” {• (z+s— *0!°({+ s {• (|+sž *0{• þ(}+*0{• þ(~+*0<±{• -*{• -*{” {” {• {• (+s— *08{• -*{• -*{” {” {• {• (€+s— *0=±{• -*{• -*{” {” {• {• (+s— *0sŸ ~˜ (‚+*0 s  (ƒ+*0 (¡ *0 (¢ *0{” {• {• („+þ*0{” {• {• („+*0 {• (…+*0 {• (…+*0 {• (†+*0{” {• þ(‡+*0{” {• þ(ˆ+*0{” {• {• þ(‰+*0{” {• {• þ(‰+*0{” {• {• þ(Š+*0{” {• {• þ(Š+*0 {• (‹+*0 {• (q+*0`² ¥o/ oK ,#oN  (d+bX wX +Õ Þu , oI &Ü&Ü&(r */>0(£ *0´uä , ¥ob þ**0 ~˜ (¤ *0Ÿ(N+ (Œ+(— *0s¥ *0Ÿ(N+ (r+s— *0{” {• (+{• („+*0 rCcpst z0 rCcpst z0 rCcpst z0{” {• (v+*0{• þ(Ž+*0*0{• (u+*0 {• (+*0{• (+¥ *0(a &}­ *0µ{­ è¥(+(h+*0(a &}Ä}Å}Æ*0J·{Æ , (® {Åþo *{Ä0(  (¯ }Æ{Åþo *0{Ä*0{Ä{Å0(% *0{Ä{Å0(* þo° *0{Ä{Å0(* þo± *0{Å*0"{Äo² ricp(+ (q(+ *0{Äo³ {ÅX*03¹u¦ ,& {Ä{Ä(‘+,{Å{Åþ***0 Œ,+ rmcps´ zþ(> *0/», (µ + Œ,+ rmcps´ z(P *08½Œ,+ rmcps´ z0(W  , (µ + ( *01Œ,+ rmcps´ z0(W Ð(¶ þ( *0Œ,+ rmcps´ z(N *0PŒ,+ rucps´ zŒ,+ rƒcps´ z( %¤%¤þo· *0O¾Œï,+ rcps´ zs‘ (’+,!(‰r›cp(ì oí rcpsx zþ(A *0rÉcp(Z (B *0%Œ,+ rÝcps´ z0(W (M *0&», (µ + r÷cp(Y (Q *04¿, (µ + (W  (, s“ ( (“+*0/», (µ + Œ,+ r dps´ z(U *0!», (µ + (X (Q *0 s¸ Œ¿*0.», (µ + r÷cp(Y (T þo¹ *0kÀŒ,+ r)dps´ zŒ,+ r3dps´ z(º 0(P -!(‰rAdp(ì oí r3dpsx zþo» *0iÁŒ,+ r3dps´ z, (µ + (º (P -!(‰rAdp(ì oí r3dpsx z(R þo¼ *0Œ,+ r)dps´ zs— *0&», (µ + r÷cp(Y (R *0&», (µ + r÷cp(Y (T *0&», (µ + r÷cp(Y (S *0 òÃŒ,+ rÝcps´ zÐ(¶ ( -.o½ (‰radp(ì oí (¾ rÝcpsx zŒœ,+ rƒdps´ z(M  (¿ (À Ðò(¶ oÁ , o +%¤% ¤o· r¡dp 8%Œœ¤( þoà *02Œó,+ r«dps´ zrÉcp(Z (I þo¹ *0iÄŒ,+ rÇdps´ z(º (> -3(º o½ (‰rÓdp(ì oí (¾ rÇdpsx z(H þo¼ *0·ÆŒ,+ rÇdps´ z(º (> -3(º o½ (‰rÓdp(ì oí (¾ rÇdpsx z(H o¼ /+ Žiþþ,/rïdp(º o½ þCo ( repsx z £*0rÉcp(Z (H *0rÉcp(Z (L *0rÉcp(Z (I *0rÉcp(Z (J *0B»Œ¦,+ r%eps´ z, (µ + {Ä{Å(+ þo¹ *0:»Œ¦,+ r%eps´ z, (µ + {Ä{Å(+ *0:»Œ¦,+ r%eps´ z, (µ + {Ä{Å(* *0lÇ, (µ + (  Œ,+ r9eps´ z(W  (, (' oÄ  (& o¼  spsÅ *0?¿, (µ + Œ,+ r9eps´ z(W  (, (' *0?¿, (µ + Œ,+ r9eps´ z(W  (, (( *0<¿Œ¦,+ r%eps´ z, (µ + {Ä {Å(& *0F¿Œ,+ rMeps´ z, (µ + (º (X (R þo¼ *0(a &}Æ *0É{Æ , (Ç **0sÈ *0(a &}É *0¯ÍÐn(¶ rUep6oÊ oË ŽiY YXY2!X£¤XX3ß Ži  Y2$£oÌ ¤XX3Ü€Í *0_É{É ,S~Í Ži3#%¤%Œo¤(Ç *%¤Œo(‘(”+(Ç **0sÎ *0(a &}Ï *0Ï{Ï ,  (Ð **0, (Ñ +}Ï *0Ñ{Ï , (Ð oÒ **0sÓ *0{Ë*0{Ì*0}Ë*0(a }Ë}Ì*0}Ñ}Ò*00(Î ,(Ï ~Íþ+,~Î(Ï £­**0(°s¯*0(°s¯*0(°s¯*0(Ë,*{Ñ*0{Ñ*0{Ò*0Ï]{Ñ {Ñ YEgYErceprepsx zYE"YE+Ö{Ò{Ò(‡ *{Ò(ƒ , {Ò(ƒ **YE+YE+‹{Ò(ƒ , {Ò(ƒ **{Ò{Ò(‡ *0 (·þ*0ÅÓ{Ñ {Ñ YESYErceprepsx zYE)YE+Ö{Ò {Ò  (‹ þ**YE.YE+Ÿ{Ò(ƒ -*{Ò(ƒ þ*{Ò {Ò  (‹ þ*0ÈÓ{Ñ {Ñ YEqYErceprepsx zYE)YE+Ö{Ò {Ò  (‹ þ*{Ò(ƒ -*{Ò(ƒ þ*YEYE8~ÿÿÿ*{Ò {Ò  (‹ þ*0(¹,*(·,**0{Ñ{Ò(a X*0`‰{Ñ YE#YE rceps, z{Ò(Ë *{Ò(ƒ ,r“ep*r—ep{Ò(Ë (+ *0þ®o *0Õ(•+-*¥® q®(·*0Õq® {Ñ{Ò(a X*0I2(Å (°(¯* €3je(Æ (°(¯*e(Å (°(¯*0E×{Ò(Ç   ÿÿÿ5 {ÑZ*{Ñ3  €þ+, €*sÔ z0e!2(Æ (°(¯*!€3%!ÿÿÿÿÿÿÿ(Æ ({ (€ (°(¯*e(Æ (°(¯*0RÙ{Ò(È  !ÿÿÿÿÿÿÿ5 {ÑjZ*{Ñ3!€þ+, !€*sÔ z0~Ï*0~Ð*0 Ú{ÑZ {Ò (°s¯*0MÚ/%{Ñe e{Ò(“  (°s¯*{Ñ {Ò(“  (°s¯*0<Ú(‹  þþ,(‚  (°s¯*(‚  (°s¯*0Û(€  (°s¯*0 {Ò(ƒ *0{Ñ3 {Ò(… **0æÝ {Ò(ƒ ,* {Ò(ƒ ,*{Ñ {Ñ YE^YErceprepsx zYE"YE+Ö{Ò{Ò(Ê*{Ò{Ò(É*YE"YE+”{Ò{Ò(É*{Ò{Ò(Ê(Ç*0ÔÝ {Ò(ƒ ,*{Ñ {Ñ YE^YErceprepsx zYE"YE+Ö{Ò{Ò(É*{Ò{Ò(Ê*YE'YE+”{Ò{Ò(Ê(Ç*{Ò{Ò(É*0lÞ {Ò(ƒ ,* {Ò(ƒ ,*(Ì,*(Ì,*{Ò{Ò(³  {Ñ{ÑZ (°s¯*0à{Ò{Ò(¹  (Õ (Ö {Ñ {Ñ YEt YErceprepsx zYE-YE+Ô(°s¯(°s¯s× *(°s¯(°s¯s× *YE0YE8yÿÿÿ(°s¯(°s¯s× *(°s¯(°s¯s× *0à{Ò{Ò(¹  (Õ (Ö {Ñ {Ñ YEv YErceprepsx zYE.YE+Ô(°s¯®(°s¯*(°s¯®(°s¯*YE1YE8wÿÿÿ(°s¯®(°s¯*(°s¯®(°s¯*0ÕsÁ (Ñ*0ásÁ (Ñ *0"Û{Ò{Ò(½  (°s¯*0{Ñ3{Ò(ƒ þ**0{Ñ3{Ò(ƒ þ**0{Ñ3(Ç**0Óâ{Ñ {Ñ YEuYErceprepsx zYE0YE+Ö{Ò {Ò  (‹ þþ*{Ò(ƒ , {Ò(ƒ **YEYE8zÿÿÿ*{Ò {Ò  (‹ þþ*0Ðâ{Ñ {Ñ YEZYErceprepsx zYE0YE+Ö{Ò {Ò  (‹ þþ**YE+YE+˜{Ò(ƒ , {Ò(ƒ **{Ò {Ò  (‹ þþ*0zã(Õ,!(‰r›ep(ì oí rÉepsx z{Ò (¾ (¹ (Õ (ƒ ,+{Ñ {Ò{Ò(  (°s¯*0CÚ2.]-+{Ñ {Ò(À  (°s¯*rÍeprfpsx z0|ä/!(‰r›ep(ì oí rÉepsx zsÁ {Ò (¾ (¹ (Õ (ƒ ,+{Ñ {Ò{Ò(   (°s¯*0L‰{Ñ YE)YErceprepsx z{Ò(Ä *{Ò(Ä e*0(Â*0(Ä*0(Ý*0nå( - r fpsØ z( r—ep(ë ,/Y( (  YX( (Í  (°s¯*(Í  (°s¯*0 {Ò(Î *0Uæ(Õ,!(‰r›ep(ì oí repsx z(Ö,{Ò(Ñ  (°s¯*~Ï*0*0~Ðs[ ~Ï(–+*0~Ðs] (–+*0sÃ*0sÁ*0-Õ(•+-rGfpr;cpsx z¥® q®(»*0 €‚~‚&*0 sù€Ó*0(a *0sü*0 u³þ*0sú*0 u²þ*0~Ó*0 u±þ*0è u³,+ u²,+*0iëþ,`  u±- u²- u³-$ *t²  ¹y7ž(ûbcXXX *t³  ¹y7ž(ýbcXXX **0 (¿(ô*0¸ìþ9¦u¯ 9—u³,+ u²,+ u³,+ u²,+ 3W  u²-  u³-!*t² t² (û(ûþ*t³t³(ý(ýþ***þþ*0²íþ9 þ9•u³,+ u²,+ u³,+ u²,+ 3Uu²- u³-*t² t² (û (ûþ*t³t³(ý(ýþ***þþ*0èu¯ ,(÷**0(ì*0(ì}×*0{×*0(ì}Ø*0{Ø*0(a }Ù*0(a }Ú*0 {Ú{×*0(a }Û*0 {Û{Ø*0(a *0 s*0 u»þ*0s*0 uºþ*0 s *0 u¹þ*0ï u»,+ uº,+*0(}ß}à}á*0{ß*0{à*0{á*04(}â}ã}ä}å}æ}ç*0{â*0{ã*0{ä*0{å*0{æ*0{ç*0(}è}é}ê*0{è*0{é*0{ê*0(a }ë*0 {ë{ß*0 {ë{à*0 {ë{á*0(a }ì*0 {ì{â*0 {ì{ã*0 {ì{ä*0 {ì{å*0 {ì{æ*0 {ì{ç*0(a }í*0 {í{è*0 {í{é*0 {í{ê*0{î*0{ï*0{ð*0{ñ*0{ò*0{ó*0{ô*0{õ*0{ö*0{÷*0T(a }î}ï}ð}ñ}ò}ó}ô}õ }ö }÷*0 *r…fpsC ( ¥BPdd 's6*0(a &}Ù *0{Ù *0 (Ú &*0fñ(a &}ú}ù~û}ý, (Û +}þ~ü (; ~û!X€û Þ (> &Ü&*BZ 0{ú*0{þ*0{ù*0{ý*0OóŒ),+ r¥aps´ zŒ,+ rmcps´ z~ü (; (’  Þ (> &Ü*9 D 0{ú*0(³ *0ôuà ,  (Ü **0ðöuà 9á (Ü ,*(<(<(Ý ,*(>oÞ (>oÞ /+þ , *(>oß (à (>oß (à /+þ,*(>oá oâ (>oá oâ (Ý ,*(?(?/*þ**0 €¦~¦&*0(a }ÿ*0s]*0 (Oþ*0sZ*0 (Oþ*0sX*0 (Oþ*0sU*0 (Oþ*0{ÿ*0þ, (“ **0 (¿(P*0;øþ,,uÄ , {ÿ {ÿ 3 þ(” ***þþ*0þ, þ(š *þþ*0ùuÄ , þ(S**0(F}}*0{*0{*0(F}*0{*0(F}}*0{*0{*0(F} } *0{ *0{ *0(a } *0 { {*0 { {*0(a } *0 { {*0(a } *0 { {*0 { {*0(a }*0 {{ *0 {{ *0¤sl€sl€sl€sl€sl€sl€sl€sl€sl€sl€sl€sl€ sl€!sl€*0(a }*0sç*0 (µ#þ*0sä*0 (µ"þ*0~*0 (µ!þ*0~*0 (µ þ*0~*0 (µþ*0~*0 (µþ*0sâ*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0sà*0 (µþ*0sÞ*0 (µþ*0sÜ*0 (µþ*0sÚ*0 (µþ*0sØ*0 (µþ*0sÖ*0 (µþ*0sÔ*0 (µþ*0sÒ*0 (µþ*0sÐ*0 (µþ*0sÎ*0 (µþ*0sÌ*0 (µ þ*0sÊ*0 (µ þ*0sÈ*0 (µ þ*0sÆ*0 (µ þ*0sÃ*0 (µ þ*0sÁ*0 (µþ*0s¿*0 (µþ*0s½*0 (µþ*0s»*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0~*0 (µþ*0{*0þ, (• **0 (¿(¶*0;ûþ,,uÎ , { { 3 þ(– ***þþ*06]þ,'þ,{ { 3 þ(› ***þþ*0üuÎ , þ(¹**0(l}B*0{B*0(l}C*0{C*0(l}D*0{D*0(l}E*0{E*0 (l}F}G*0{F*0{G*0 (l}H*0{H*0 (l}I*0{I*0 (l}J*0{J*0 (l}K*0{K*0(l}L*0{L*0(l}M*0{M*0(l}N*0{N*0(l}O*0{O*0(l}P*0{P*0(l}Q*0{Q*0(l}R*0{R*0(l}S*0{S*0(l}T*0{T*0(l}U*0{U*0(l}V*0{V*0"(l}W}X*0{W*0{X*0#(l}Y*0{Y*0(a }Z*0 {Z{B*0(a }[*0 {[{C*0(a }\*0 {\{D*0(a }]*0 {]{E*0(a }^*0 {^{F*0 {^{G*0(a }_*0 {_{H*0(a }`*0 {`{I*0(a }a*0 {a{J*0(a }b*0 {b{K*0(a }c*0 {c{L*0(a }d*0 {d{M*0(a }e*0 {e{N*0(a }f*0 {f{O*0(a }g*0 {g{P*0(a }h*0 {h{Q*0(a }i*0 {i{R*0(a }j*0 {j{S*0(a }k*0 {k{T*0(a }l*0 {l{U*0(a }m*0 {m{V*0(a }n*0 {n{W*0 {n{X*0(a }o*0 {o{Y*0(a &}p}q*0{p*0{q*0,þuü ,  {p {p  (¿þ(R**0{pþo³ *0(7((^ *0Š%s  sŸ  rfp(  s¡  s£ {p(O@ªtÆ(V(µE$.]Œ(O@ªtÆ(V(µE$æÀ}í3AÅw û š Þ  Y ƒ ä ¦ÕšE5É×åƒ (OEId¿tÆ(V(µE$Qp"s¥ r—fpsã (—+{pþoä *(W  (˜+ rÑfp(  ( ( ( *(Vtâ (Wu,“(Wt  (å u9tÿÿÿ (á  (æ  ( oË Ži(™ ,s(ç (è (ç (é  o½ ( (ê (ë (™+((ê (ë (š+(š+ rçfp(  ( ( ( * o½ ( ((ê (ë (ë  rçfp(  ( ( ( *(W  (˜+ rÿfp(  ( ( ( *tÇ(Y(<( *tÈ([(\(<( ((ê (ë (ë  r gp(  ( ( ( *rgp( *(Wu9 ýÿÿ(Wt  (å u9êüÿÿ (å t(æ {p(O@ÁüÿÿtÈ(å u9§üÿÿ([ (æ (\(<( (((ê (ë (ë (ë  rgp(  ( ( ( *(VtÐ(¼ (W  o½ (  (˜+(ë  r%gp(  ( ( ( *(VtÑ(¾(W r9gpsì (›+oí (  (˜+(ë  r?gp(  ( ( ( *(VtÒ(À(W  (˜+r9gpsì (›+oí ( (ê (ë (š+ rYgp(  ( ( ( *(VtÓ( (W  (˜+ rugp(  ( ( ( *(VtÔ(Wu9®úÿÿ(Wt  (å u9úÿÿ(Ä (Å (æ ((ê (ë r9gps (œ+o ( (ê (ë (š+ r‡gp(  ( ( ( *(Vtä(Wu9üùÿÿ(å(æ r9gpsî (+oï ( (ê (ë  r™gp(  ( ( ( *(VtÞ(Wu9ˆùÿÿ(Wt  (æ (Ù  (å  (— r9gpsð (ž+ oñ (  (˜+!!( (# (ê (ë (ë (ë  r¥gp(  ( ( ( *(Vtß""(Û (W r9gpsð (ž+ oñ (  (˜+!!( (# (ê (ë (ë (ë  r¥gp(  ( ( ( *(VtÕ#(Wu9Røÿÿ(Wt #(Ç$ (æ  (å  (— r9gpsò (Ÿ+$oó (  (˜+!!( (# (ê (ë (ë (ë  r¯gp(  ( ( ( *(VtÖ%%(É$(W r9gpsò (Ÿ+$oó (  (˜+!!( (# (ê (ë (ë (ë  r¯gp(  ( ( ( *(Vt×&(Wu9÷ÿÿ(Wt &(Ë$ (æ  (å  (— r9gpsò (Ÿ+$oó (  (˜+!!( (# (ê (ë (ë (ë  rÇgp(  ( ( ( *(VtØ''(Í$(W r9gpsò (Ÿ+$oó (  (˜+!!( (# (ê (ë (ë (ë  rÇgp(  ( ( ( *(VtÙ((Wu9æõÿÿ(Wt  (å u9Çõÿÿ (æ ((Ï)(— r9gpsô ( +)oõ ( (ê (ë (ë  rßgp(  ( ( ( *(VtÚ*(Wu9Gõÿÿ*(Ñ)r9gpsô ( +)oõ ( (ê (ë (ë  rßgp(  ( ( ( *(VtÛ+(Wu9Öôÿÿ(Wt  (å u9·ôÿÿ (å t(å u9˜ôÿÿ(æ  (æ +(Ó)(— r9gpsô ( +)oõ ( ((ê (ë (ë (ë  rñgp(  ( ( ( *(VtÜ,(Wu9ôÿÿ(Wt  (å u9äóÿÿ (æ ,(Õ)r9gpsô ( +)oõ ( ((ê (ë (ë (ë  rñgp(  ( ( ( *(Vtà-(Wu9^óÿÿ(Wt  (å u9?óÿÿ-(Ý  (æ ( o½ ( (ê (ë (ë  rhp(  ( ( ( *(VtÝ..(×/(W r9gpsö (¡+/o÷ ( (ê (ë  (˜+(š+ rhp(  ( ( ( *(Vtå00(è (W  o½ ( (ê (ë  (˜+(š+ r%hp(  ( ( ( *(Vtá11(ß (W  o½ ( (ê (ë  (˜+(š+ r?hp(  ( ( ( *(Vtã22(ã (W  o½ ( (ê (ë  (˜+(š+ rQhp(  ( ( ( *(W  (˜+ rchp(  ( ( ( *(Wu9ñÿÿ(Wt  (æ {p(O@ñðÿÿtÇ3 (å u9×ðÿÿ (å t(å u9¸ðÿÿ3(Y(æ (<( ((ê (ë (ë  rwhp(  ( ( ( *(W  (˜+ r…hp(  ( ( ( *(Wu9&ðÿÿ(Wt  (å u9ðÿÿ (å t(å u9èïÿÿ(å t44(æ {p(O@¿ïÿÿtÈ4(å u9¥ïÿÿ([(\(æ  (æ 5(<( 5((((ê (ë (ë (ë (ë  r›hp(  ( ( ( *(W  (˜+ rÃhp(  ( ( ( *(W  (˜+ r×hp(  ( ( ( *(Wu9ºîÿÿ(Wt  (å u9›îÿÿ (å t(æ (˜ 669xîÿÿ(å u9gîÿÿ(å t44(æ (˜ 779Dîÿÿ4(å u93îÿÿ7(ø (ù 6(ø (ù 87(ø (ú 6(ø (ú  (æ 55(8(<( ((<( ((ê (ë (ë (ë (ë (ë  ríhp(  ( ( ( *(W  (˜+ rýhp(  ( ( ( *(W  (˜+ rip(  ( ( ( *(Wu9cìÿÿ(Wt  (æ (¢+9>ìÿÿ(ç (é {p(O@ìÿÿtÆ(V(µ@ìÿÿ(Wu9òëÿÿ(Wt (å u9Óëÿÿ(ç (è (å  (æ  (™+ (˜+(£+!!( (# ((ê (ë (ë  r+ip(  ( ( ( *0(¤+(b*0(¤+(¤+(`¥*0 þ(¥+*0 ((*0({( *0 (*0s§ (¦+*0Œ,+ rEips´ z()*0 Œ,+ rEips´ z((*0$Œ,+ r[ips´ z(‰(*0 (*0 (**0Œ,+ riips´ z( *0Œ,+ riips´ z(*0Œ,+ riips´ z(!*0 Œ,+ riips´ z("*0 (*0 (-*0 (/*0ŒR,+ r}ips´ z(#*0#Œ,+ rips´ z(m(*0(*0Œ,+ r÷cps´ z(*0Œ,+ r»ips´ z(*0*Œ,+ rÓips´ zs© (§+(,*0 (*03&Œ,+ ríips´ z(û , (ü +(%*02&Œ,+ ríips´ z(û , (ü +($*04&Œ,+ ríips´ z(û , (ü +('*0&(û , (ü +(&*0(*0(( *0 (*0(u( *0(¥+(*0$Œ,+ r[ips´ z(y(*0 (*0 'Œ Ð(¶ (o(*0$Œ,+ rips´ z(o(*0(*0(}(( *0 (+*0Œ,+ rÿips´ z(i*0(¨+*07Œ,+ rjps´ zŒ,+ r3jps´ z(j*0"Œ,+ r?jps´ zþ(f*02Œ),+ r¥aps´ zÐ(¶ (@((¨+*0 (&*0*0(ç &sý }r*0 {r(þ *0{s*0{t*0}s}t*0{s,{s{t(u**0?{s,&{s{soÿ ,{t{tþ**{sþ(©+*0(ª+-*¥ÿ(U*0){s,{so³ |tþYo³ a**0 (U*0 (Uþ*0 (T*0{u*0 }u*0){u ,(s**0*{u þ (©+þ*0,{u , (t*þÿ*0.{u,{u{uþoÿ *{uþ(©+*0(«+-*¥(`*0{u,{uþo³ **0 (`*0 (`þ*0{v*0{w*0{x*0}v}w}x*0{v*0{w*0{x*0“/s (a &( }y!}zsÁ(¬+}{þÿ}|þÿ }}}~sÃþÄs (_}|(_}}*0!1þþ(l}~*0.þ{~/(‰rQjp(ì oí s, zs\*00þ{~/(‰rQjp(ì oí s, z(p*0Ô8þ{~/(‰rQjp(ì oí s, z|y( E(YE-Ð(¶ o½ s z**{{( ,_{{( (; (­Þ (> &Ü sÉ( (­+u,*(®+¥sOz*† ‘ 0µ9þ{~/(‰rQjp(ì oí s, z|}(T Þ||(T&Ü Þe|y( -+|y( þ,8{{(¯+,({{( (; o  Þ (> &Ü&Ü&Ü&Ü&*((9–   '&Me0a:þ{~/(‰rQjp(ì oí s, zþ{y E%YEÐ(¶ o½ s z**0@þ{~/(‰rQjp(ì oí s, zþ{y3*þ{yþ*0‹=þ{~/(‰rQjp(ì oí s, z(r,o  þÿ*{{( (; (® Þ (> &Ü (  (  , o  + *S ` 0\>þ{~/(‰rQjp(ì oí s, z(r,*{{( (; (° Þ (> &Ü&*BP 0 sl*0/þ{~/(‰rQjp(ì oí s, z(q*0+(a &n}  }  } } *0hv{ - rejps= z{  {  £n {  {  þn¤n{  X{  Ži]}  { Y} *0ˆ]{ {  Ži3>{  Žij!ÈZ!d[i {  ŽiX /+( +{  { ¤n{ X{  Ži]} { X} *0{ *0¬?(°+ { 1q{  { /{  {  { ( +H{  {  {  Ži{  Y( {  {  Ži{  Y{ ( +}  }  { 3+{ } *0.@(a &sm}ƒ{ƒ(n sl}„*0 {„(n*0{ƒ(o*0{„(q{ƒ(q*0{„(q{ƒ(q*0 s†€…*0(a *0~…*0&*0(ƒ*0(a }†*0{ *0{ *0{ *0{ *0{ *0,(a } } } } } *0s *0(a } *0{ *0&*0 (a &*0(M*0 (±+*0(²+*0*0 (³+*0 (´+*0 (O*0 (µ+*0 (¶+*0 (·+*0 (¸+*0(a &} *0{ o &*0(L*0(M*0 s (¹+*0(:{ (n*0#)(:{ (o(:sm( *0(¤*0 (:{ *0 s ( *0)1(:{ (n , ( + (º+*0)1(:{ (n , ( + (ò*0 (»+*0 (©*0 s  (¼+*0.1(:{ (n , ( + (½+*0sásãså(¾+*0 së(¿+*0,‰, ( + - sí(À+*s÷(Á+*0sù(Â+*0 s! (" *0s# (Ã+*0DA,' ( YEs$ (±+*s (Ä+*s% (±+*0s& (±+*0s' (Å+*0s( (Æ+*0s) (Ç+*0(È+s* s+ s, *0s- (É+*0 (Ê+*0 (Ë+*0 (Ì+*0(Í+*0 (Î+*0 s. (Ï+*0( *0( *0s/ (Ð+*0 s0 (¹+*0(Ñ+*0sY(Ò+*0<D(1 ,s2 (Ò+(©*(‰rujp(ì oí s, z0(É*0sc(Ò+*0si(Ó+*0 (Ô+*0<(a &}3 }4 }5 }6 sm}7 s8 }9 *0(F{9 (: {3 ,¥þo; **0xJ{9 ( (< - rbps= z (= u>-u?-&(= t@(> *(= t>(? z(= t?(@ z0{6 *0*{6 - }6 {7 (q{9 (A **0 {7 (n*0{7 (o*0L{9 {B þ-}5 **0L{9 {B þ*0{5 *0 {9 (C *0{4 *0 (D *0ON(a &}I sJ }K {K }L þB}M }N sO (P }Q *0 {I ,+ sR }I {I *03P{L (; (S oT {K { X Þ (> &Ü*( 0=R{K { -*{K (U oV -(S oW +Å*0#S{L (; (Õ+ Þ (> &Ü*  0HU{I ,;oT þþ,*oY oV - X+ÃoZ **0!{K { -*{K (U ([ *0"V{L (; (\ Þ (> &Ü*  0-W{I , oT -*oY oZ ([ **0'X{L (; (Ö+ Þ (> &Ü&*  0[   s] (×+*0s^ (±+*0\  s_ (Ø+*0\  s` (Ù+*0,^(S {K {N {M  sa ŒK*0(_{N (Ú+þ,{N ¥ þoI **0 {N ,+ sb }N {N *0"a/{Q *(c ( (°*0(a &}d *0{d o &*0Y@(a &}e (:{ (n , ( +}f sg }h }i }j sk }l *0 {h (m *0{i *0 }i *0{l (n þoo *0{l (n þop *0 {h (q *0Jc{j ,(‰r•jp(ì oí s, z}j sr (Ò+ {f (s (©*0{h (t *0]e{i , ( + su sv sw ox {h (t ( (y Þ¥ oI &Ü *0M0.f(Û+ ,({ *(‰rÓjp(ì oí s| z0Jg{i , ( + su s} sw ox {h (t s~ (×+*02i{i , ( + ( (Ü+ s€ (±+*0"‰{h {i , ( +( *0"‰{h {i , ( +(‚ *0#‰{h {i , ( +(Ý+*0#‰{h {i , ( +(Þ+*0ks… († *0 (ß+*0 (Ü+*0{h ¥ þoI *0sˆ *0}s(‰ sŠ o‹ oK ,)oŒ (  (Ž s o +Ï Þu , oI &Ü&Ü&¥_¥`s‘ *5H0uub , *(à+*0\x(‰r›cp(ì oí £ Œ,+ rkpsx z£Œ¥c(á+ Ži  (â+ Y2 £d(’ XX3àY?Á(‰r›cp(ì oí £ Œ,+ rkpsx z£Œ¥c(á+Ži þþ,!(‰r'kp(ì oí r[kpsx z Y 2"  £d(’  X  X3ÞXX@?ÿÿÿ*07yŒf,+ rkps´ z(ã+ Ži -(â+*(ä+*0(å+*0 s“ (æ+*0 (ç+*0 (” (ç+*0 (• (ç+*0 (è+*0 (” (è+*0 (• (è+*0r9gps– (é+o— &*0r9gps˜ (ê+þo™ *0{r9gps– (” (é+o— &*0~¤*0| rekpsJ z0| rekpsJ z0| rekpsJ z0| rekpsJ z0}(‰rËkp(ì oí s, z0}(‰rËkp(ì oí s, z0*0*0*0(š *(› *0 (œ *(› *0 (œ *0} (a &*0sž { ¥p(ë+þo/ *0#sŸ { ¥p(ë+¥þo. *0(‰rùkp(ì oí st z0(‰rùkp(ì oí st z0(‰rùkp(ì oí st z0{ s  þo¡ *0U€ { o¢ oK ,o£ X(œ ¤nX +Ú Þu , oI &Ü&Ü&**90*0{ þo¤ *(¥ *03ƒ (¦ (§ s¨ (© (ª (œ s« *(¥ *03ƒ (¦ (§ s¨ (© (ª (œ s« *0}¬ }­ (a &*0(‰rùkp(ì oí st z0(‰rùkp(ì oí st z0(‰rùkp(ì oí st z0?„ (m (n so (p (q {­ s  s® þo¯ *0†† {­ o° oK ,Oo± (¦ (§ s¨ (© (ª X(œ s« ¤ØX +© Þu , oI &Ü&Ü&*[j0*0{­ þo² *0s³ {­ ¥x(ì+þok *0#s´ {­ ¥x(ì+¥þo. *0{¬ s  þoµ *0(‰rùkp(ì oí st z0ˆ{¬ o¶ s· *0{¬ þo¸ *0(‰rùkp(ì oí st z0{¬ s  þo¹ *0,‰s  {¬ o¹ ,{¬ oµ o**0(‰rùkp(ì oí st z(º *0s= z0s’€¤*0 s» *0f, ({ þo¼ **0 s½ *0s¾ (í+*0(î+s¿ (î+sÀ *0 sÁ *0 Š(ï+ *0 þ(ï+*0s *0 sà *0sÄ (ð+sÅ (ñ+sÆ *0(a &}Ç *0{Ç - þoÈ **0{Ç -}Ç þoÉ **0{Ç -}Ç þoÊ **0}Î }Ï (Ð &*0fŽ{Î oÑ (Ò Þt (Ó Þ u‹,t‹ {Ï (Ô þoÕ *t{Ï (Ö þo× *0{Ï þoÕ *0{Ï þoØ *0}Ù }Ú (a &*0 {Ú {Ù sÛ ¥ŒþoÜ *0}Ý }Þ (Ð &*0f’{Ý oß (à Þt (á Þ u’,t’ {Þ (â þoÕ *t“{Þ (ã þ(ò+*0{Þ þoÕ *0{Þ þoØ *0}ä }å (a &*0 {å {ä sæ ¥ŒþoÜ *:(ç }è *0{è oé ,([ **:(ê }ë *0{ë oé þ*0}ì }í }î (Ð &*0†“{î {ï {ì (ó+(Ò Þt (Ó Þ u‹,t‹{í (Ô þoÕ *t(Ö {î (ñ {í þo× * "0{í þoÕ *0{í þoØ *0}ò }ó }ô (a &*0-w{ó sõ {ô {ò sö ¥ŒþoÜ *0}÷ }ø (Ð &*0B”{ø {ù , ( {÷ sú oû +{ø ([ (ü *0{÷ þoý *0{÷ þoþ *0}ÿ (a &*0"–s {ÿ s ¥þo *0'} } } } (a &*0{ { -{ þoÍ **0*{ { -{ ( { þoÌ **0U{ { -F{ ( { { ,{ { +,{ ( { þoË ***0'}  }  }  }  (a &*0{  { -{  þoÍ **0*{  { -{  ( {  þoÌ **0U{  { -F{  ( {  { ,{  { +,{  ( {  þoË ***0}Â}Ã(a &*0{ÂoI {ÃþoI *0}  } (a &*0 J—s s s {  s o { s o  sz*:( } *0+š{ o u§,t§ ( ( **:( } *0+{ o u«,t« ( ( **0Ÿs s ( s *0¢s s (ï+ (  *0£s s! (ï+ ( *00¤s s s" (ï+ ( ( s# *0¢s s$ (ï+ (  *0&§s% s s& (ô+ ( *0 Š(ï+ *0 Š(ï+ *0%ªs' s( s) (ô+ (* *0,«s s+ (ô+ s, (ô+ (  *00­s s- s. (ï+ (  (/ s0 *:(1 }2 *0{2 (3 *V(1 }4 }5 *0{5 {4 oÑ (6 *V(1 }7 }8 *0 {7 oé ,{8 (3 **r(1 }9 }: }; *0-{9 oé ,{: (3 *{; (3 *V(1 }< }= *0)¯{< oß , {= (> (6 **r(1 }? }@ }A *06°{@ {ï {? (ó+ {@ (ñ {A (6 *V(1 }B }C *0C”{C {ù , ( {B sú (D +{C ([ (ü *:(1 }E *0{E (3 *:(1 }F *0{F (3 *r(1 }G }H }I *0L²{G o uË,tË {I (J (K *t§ {H ( (6 *0s­(õ+*0´sÃ(ö+ sË(÷+*(L *0.¶ue ,"(M 3 o& sN (O (ø+*z:(P }Ü*0·(Q (R {ÜþoS *:(T }Ý*0{ÝþoU *:(V }Þ*0{ÞoW *:(X }ß*0-{ßs¥{ßs§{ßs©(Y (ù+*:(X }à*0s£{às«(õ+(ú+*:(Z }á*0{á([ *:(Z }â*0{â(\ *0}ã(a *0{ã(û+&*(^ *0s³þ´s_ *04}ä}å}æ}ç}è}é(a *0œc{è(` (M+9„{äs¯{äs±sµ(ü+{é(a ob (c ,{çsd oe &*(f (ý+þ,{æ(f og &*{å(h o &**Ò(i }ê}ë}ì}í}î}ï*0 6{ê{ë{ì{í{î{ïs·þ¸s_ *:(Z }ð*0{ð([ *:(Z }ñ*0{ñ(\ *0}ò(a *0{ò(û+&*(^ *0s¿þÀs_ *V(j }ó}ô*0 ‹½(k (l (m sa {ó s¹(þ+tD}ï(a {ós»{ós½sÁ(ü+on {ó{ô (o *:(p }õ*0{õ(q *:(r }ö*0{ö*:(r }÷*0{÷sÇ(ÿ+*V(s }ø}ù*0"{øsÅ(Ê{ùsÉ(+*09¾, ( + Ži , ( + sÔsÖ(+*0sà(+*09¾, ( + Ži , ( + sâsä(+*0 (°*0(¯*0 Š(ï+ *0st þou *:(v }ú*0 9À(w (x (y (z ({ {ú þo| *:(} }û*0{ûþo~ *V( }ü}ý*0{ý{€ {üþ*:( }þ*0N{þ{þ{€ X(‚ -,,¥+(‰r+lp(ì oí sƒ z&(M*(M*’(„ }ÿ}}}*0 J{ÿ{{{€ ( {{{€ Y( (Í{sÚ(+*:(… }*0 {(+*V(… }}*0 PÁ{(+ s† {sØ{{sÜ(Ò+(OsÞ(+(+*:(v }*0 9À(w (x (y (z ({ { þo‡ *:(ˆ }*0{o‰ *0}Š (a &*0{Š o &*0*0*0 (o*0(n(º+*0(n(ò*0(n(½+*0(n(½+*0(n(º+*0(n(ò*0¸Çs} s‹ (Œ {„(ns sŽ s (+( ,/(‘ {„(q{ƒ(q( + ÞA{ƒ(o( {„(q{ƒ(qs’ z¥ oI &Ü*š¨0súsüsþ( +*0s“ ss(+*:(” }• *0{• (– (: („*:(— }˜ *0{˜ (™ (: („*:(š }› *0{› (œ (: („*( *0(„*(— *0z(š *0(„*:(” }ž *0{ž o &(„*:(— } *0{ og &(„*:(š }*0{oe &(„*0~n*0,sŸ þ(A**0 s( +*0 s( +*0 s( +*0)È(1 ,{  ,(Œ ( +,****0'É(1 þ, oQ &+ (A(„*0, þ(A*(?*04É( + ,'{¡ s¢ s£ s¤ {  s¥ **0 s¦ (¹+*0:Ë{§ , rWlps z{¨ ,*{© þsª }¨ *0*Ì{§ - }§ {¨ ,o« }¨ ***0PÍ(¬ ,*{§ ,*(­ }© {¨ , (® *{¯ Œé, s° (± **V(V }² }³ *0{² {³ þo *:(V }*0Ï{{´ oµ *:(¶ }*0{s(A(„*:(V }*0Ï{{´ oµ *(¶ *0s(@(„*:(V }*0Ï{{´ oµ *(¶ *0s(?(„*V(V }· }¸ *0Ï{· { {¸ o¹ *V(” }º }» *0{» {º s¼ ( *V(V }½ }¾ *0Ï{½ { {¾ o¿ *V(— }À }Á *0{Á {À s ( *V(V }à }Ä *0Ï{à { {Ä oÅ *V(š }Æ }Ç *0{Ç {Æ sÈ ( *:(É }Ê *0{Ê (+þoË *09Ñ(a &}Ì þ8}Í }Î }Ï sa }Ð *0#Ò{Ð (; (+ Þ (> &Ü*  0&Ó{Ð (; (+ Þ (> &Ü&*  0y{Ì - rmlps= z( *0;Ö{Ð (; (+ Þ (> &Ü , (Ñ oµ **  0 {Ì þ*0%×{Ì -}Í * ( o¹ *0BØ{Ì -5(Ò {Ì -", ( +  oÓ ,{Ì ****0 (Ô *V( }Õ }Ö *0{Õ {Í {Ö þo¹ *0~l*0 ,*0=Û u÷- uø-tù(× *t÷ (Ø ztø (Ù z0Ü, (‘ ( +*s’ z0ÞoQ &(m ,  (Ú +â*0%srþssÛ (Ü - r—lps= z*0&ßstþusÝ sÞ (ß (à *0svþwsá þoâ *0sã (q*0sä (?*0 så (" *0 sæ (" *0sç (è *0sé (è *0sê (" *0së (" *0 sì (í *0sî (" *0 sž(ï *0~m*0sð (+(+*0oñ ,s¢(+*(M*0oò só (+*0sô (+*0(a *0sõ *0 u?þ*0sö *0 u>þ*0s÷ *0 u@þ*0à u?,+ u>,+*0(ø }ù *0{ù *0(ø }ú *0{ú *0(ø }û *0{û *0(a }ü *0 {ü {ù *0(a }ý *0 {ý {ú *0(a }þ *0 {þ {û *0~2*0€2*0~2*0(g*0*‰~2X(g~2  ,þþ,(g**0~3*0€3*0:ä~3 u , rÕlp( *t ( { ( *0Jå~3 u , rÕlp( *t ( { , rEmp( *(Y ( *0.æ~3 u , rmp( *t ( (l*0s ~3( (l*0 ç(p(> Þ (o&Ü&*  0}4(a *0{4(q*0}5(a *0{5(q*0}6(a *0{6(q*Ò(V } } }  }  }  }  *0 9é{ {  {  {  { s  {  ( oË *Ò(V } } } } } } *0 9é{ { { { { s  { ( oË *:(É } *0Hê| (],{ sd þoÅ *{ oË Þt { o¿ Þ*!1:(É } *05| (],{ sd þoÅ *{ { þo¹ *V(” } } *0xí{ { þ  { o  Þ!tu,   Þþ &, þo¿ *( { þo *+!V(V } } *0Ï{ ( { oË *V(É } }  *0 ~ï| (],{ sd þoÅ *{ {  s! { { { s" (j,{ s# (n(„*{ ( þo *V(É }$ }% *0“ñ| (],{ sd þoÅ *{ þ#  {$ {% o&  Þ!tu,   Þþ &, þo¿ *( þoË *5K!V(” }' }( *0tò{( { þ  {' oQ  Þ!tu,   Þþ &, þo¿ *{( { þo¹ *+!V(— }) }* *0tò{* { þ  {) oQ  Þ!tu,   Þþ &, þo¿ *{* { þo¿ *+!V(š }+ }, *0kóþ  {+ oQ  Þt u,   Þþ&,{, { þoÅ *{, { þoÅ *V(É }- }. *0 oõ| (],{ sd þoÅ *{- s/ {- s0 {- s1 {. ( { { s  þoË *V(— }2 }3 *0"ö{2 (+ ( {3 þoË *V(É }4 }5 *0 _÷| (],{ sd þoÅ *{4 s6 {5 ( { { { { s  þoË *:(” }7 *0{7 (– þo8 *:(— }9 *0{9 (™ þo8 *:(: }; *0 Eù{; ( {< {= s> {= s? {@ {A s  þoË *V(š }B }C *0kóþ  {B oe  Þt u,   Þþ&,{C { þoÅ *{C { þoÅ *V(É }D }E *0 ?ú{D sF {E ( { { { { s  þoË *(G *0{H {I þoJ *:(V }K *0{K þnoI *V(„ }a}b*0{a{b(O*:( }L *0{L þoK *V(„ }M }N *0{M {N oN þoO *:(P }Q *0sR {Q sS (Ò+(O*:(T }U *0{U *0 €o~o&*0ûsÇ(V ¥4(+ o *0`ü(r,þ!sSsW *{z {z!X}zshoX sSsW *0(þ/*oY {v3*Y+Ø0-ÿ(r,*  oZ Y(¯ 2 þo[ **0.¾{ ,(‰rûmp(ì oí s, z( *0 s\ *0r-h{] ,O (^ u8, (^ t8(_ {` þoÅ *(^ t:(a {b þo¿ *{c þod *(„*0:{€ Y(‚ {€ -{„(q{ƒ(q+{€ *08¤(; (´ Þ (> &Ü þ(+* # 0^{€ Y(‚ {] -(e (f +{€ -{„(q{ƒ(q+ {ƒ(o{€ *01(; (¶ Þ (> &Ü þ(+*  07," (Ú oQ Þ t  Þ&*sd (g (h *  0si *0D," (Ú oQ Þ t  Þ&*(š oj sd (k (l *  0  {m {n -{o }p **0Q {m (q {p ŒB,#{p þB }p sm(?*{r ,(® **0ss (+*0st (×+*0su (±+*0+sms €l(+€ms’€n*(v *0sw *0}p(a *0{p{ (+(p*:(V }q*0|q{w|q{xo  *(x *0sÅ(y *(z *0 oQ & Þt ({ Þ* V(V }| }} *0Ï{| {} o¹ *r(1 }~ } }€ *0Lç{ (; { (± Þ{ (> &Ü&{~ (+{€ s ( * :(É }‚ *0 G s {‚ { (+{ (+{ ( +sƒ o„ &(„*:(” }… *0{… († þo‡ *:(— }ˆ *0{ˆ (‰ þo‡ *:(Š }‹ *0 \ {Œ { {Ž s {Ž s {‘ s  {‹ ( oË („*Ò(” }’ }“ }” }• }– }— *0 .{’ {“ {” {• {– {— þ(!+*²(— }˜ }™ }š }› }œ *0 -{˜ {™ {š {› {œ ( þ("+*²(š }ž }Ÿ }  }¡ }¢ *0 -{ž {Ÿ {  {¡ {¢ (£ þ("+*²(¤ }¥ }¦ }§ }¨ }© *0 {¥ {ª {© {„(n{¥ {¦ {§ {¨ {© s« {¥ {¦ {§ {¨ {© s¬ {¥ {¦ {§ {¨ {© s­ (#+*:(® }¯ *0 d{¯ ($+ Ži-{° nþo± *Žis† s² Ži(°+ {³ s} s´ (%+(„*(V *0*(µ *0z(¶ *0*:(V }‘*0Ï{‘oµ *0}’}“(a *03{’{· , (¸ o¹ +{“sç(q*:(¶ }”*0 ?sº {´ séþês» {”s¼ (½ (¾ („*:(¿ }•*0{o {•oÓ þoÀ *:(„ }–*0Ï{–{Á sd oÅ (M*0}—}˜}™(a *0B{™{ ,1 (à {—(Ä ,{˜sï(Ò+(©***V(V }š}›*0Ï{š{›þoÀ *0}œ}}ž(a *0,{œ(Å |(T{žsó(q*V(¿ }Ÿ} *0 msÆ {Ÿsñþòs |Ç (_ {o {Ÿ sõþösÈ { (É (Ê (Å („*V(Ë }¡}¢*0,{¡oG ,(&+*{¡oF {¢(°*:(É }Ì *0x{Ì u>-) u?-A{Ì t@ { (> þo¹ *{Ì t> { (? þo¿ *{Ì t? { (@ þoÅ *V(Í }Î }Ï *0€{Î oQ & u>-( u?-@t@ {Ï { (> þo¹ *t> {Ï { (? þo¿ *t? {Ï { (@ þoÅ *V(É }Ð }Ñ *0{Ñ {Ð sÒ (Ó („*:(V }Ô *0{Ô (A *:(Õ }Ö *0/{Ö {„(q{Ö {ƒ(q('+((+*V(Õ }× }Ø *0t,={× {„(q{× {ƒ(q{Ø (Ù (Ú ('+((+*{× {ƒ(o{Ø (C (°{× sÛ ()+*r(T }Ü }Ý }Þ *0w{Ý {B þ,8{Ü {„(q{Ü {ƒ(q{Ý (Ù (*+((+*{Ý (C {Þ (°{Ü {Ý sß ()+*r(T }à }á }â *0/{á sã {à {á {â sä (Ù+(++*:(V }²*0%{²{„(q{²{ƒ(q*:(T }å *04{å {B þ,{å (Ù (*+((+*('+((+*0}æ }ç (a *0{æ {ç (,+*’(V }è }é }ê }ë *0U{ë oG -E|ê (T{é {è {ë oì (– Þt (™ Þ(: **!:0}í }î }ï (a *0 {í {î {ï sð (q*(V *0*r(ñ }ò }ó }ô *0‡ s8 {ô sõ þö s (_ {ó s÷ þø sù {ò sú oû oG ,(T{ó oì ((+*s(-+*r(T }ü }ý }þ *0#(L{ü {ý {þ sÿ (.+*V(P } } *0*·(Q (R { { s þo *r(P } } } *0 0·(Q (R { { { s þo *’(P }  }  }  }  *0 6·(Q (R {  {  {  {  s  þo *:(1 } *0{ (– ( *:(µ } *0{ (™ ( *:(¶ } *0{ (œ ( *:( } *0 ]"( ( Œns s s s { (n{ (/+( ¥*( *0Q$u; ,& {6 , rKnps z( (D *(‰rcnp(ì oí rnpsx z(ˆ *0<%u; , {7 (o*(‰r‰np(ì oí rnpsx z0$} }  }! }" (a *0 !{ {  {! {" (0+*²(# }$ }% }& }' }( *0 7|& {$ {% {' {( s) þ* s (_*V(V }+ }, *0{+ {, (: *’(1 }- }. }/ }0 *0?à{- {/ (1 o2 |0 (T(– {. s3 (q*’(4 }5 }6 }7 }8 *0${5 {6 {7 {8 s9 s: *:(; }< *0!Ðn(¶ {< rUep(= (1+*(V *0*V(ñ }> }? *0 ¾- s8 {> {? s@ (2+ {> sA (3+ sB (4+t„}7 t‡}C (D t„}8 (E  tˆ }F (1  {>  oG s9(-+*V(T }H }I *0(L{H {I sJ (.+*(K *0(M*:(” }L *0{L (– (: („*:(— }M *0{M (™ (: („*:(š }N *0{N (œ (: („*r(O }P }Q }R *0 Y.s} {„(n{R sS {R sT {R sU {P (#+{R {Q (5+(6+*V(V }W }X *0$Ls8 (L{W {X sY (7+*:(1 }Z *0Ï{Z o¹ *:(µ }ñ*0Ï{ño¿ *:(É }[ *02/{[ { s\ { sMs] o^ &(„*( *0(„*(— *0(„*(š *0(„*:(_ }ó*0 $sQsSsU{ó( +(M*:(„ }ô*0(L{ôsW(8+*V(V }` }a *0{` {a (*+þo *V(b }c }d *0 {d {c se (9+(M*r(„ }f }g }h *0#{f (:+{g {h si (;+*(„ *0(+*:(„ }ü*0%{ü, {ü(*( sa(+*0}ý(a *0"0{ý~j o Þ t  Þ&* :(k }þ*0!@ {þ(_Œÿ¥ (<+*:(l }ÿ*0)1{ÿseþfs (Lsg(=+*:(¿ }m *0a2{m {M ŒB, r­nps= z{m {L (; {m (>+ Þ (> &Ü,(„*{o þoÀ *0@ :(V }*0Ï{oÀ *(n *0 ([ (?+*r(o }p }q }r *0$,{p {q {r (@+*(?+*r(s }t }u }v *0W4{t {u (A+ , (x sy (B+*{t {v (z {t {u {v s{ (C+*(n *0 ([ (?+*r(s }| }} }~ *0C4{| {} (D+ , (x s€ (B+*{| {} {~ (@+*( *0=y, ( ((+*,¥n+(‰rop(ì oí s| z((+*r(T }‚ }ƒ }„ *0#{‚ {ƒ {„ (E+s† (F+*V(o }‡ }ˆ *0,{‡ {ˆ (G+*(?+*V(s }‰ }Š *0?y{‰ (‹ -({‰ {Š (Œ {‰ {Š s (C+*(?+*V(s }Ž } *0*y{Ž ( -{Ž { (G+*(?+*V(Õ }‘ }’ *0B,{‘ {’ (H+*,¥n+(‰r9op(ì oí s| z((+*V(T }“ }” *0F5{“ (‹ , ( ((+*{“ {” (Œ {“ {” s• ()+*V(T }– }— *015{– ( , ( ((+*{– {— (H+*:(˜ }™ *0{™ {l (š (M*(„ *0(+*:(„ }› *0"{› {e {› oœ s‹(+*:(„ } *0#{ sž { sŸ (Ò+(I+*:(1 }  *0{  (¡ *:(1 }¢ *0{¢ (¡ *:(o }£ *0 ,{£ (¤ ([ +(?+*V(¥ }¦ }§ *01a{§ (Ò {¦ ( (°{§ s¨ (C+*V(s }© }ª *0{ª {© {ª s« (J+*( *0,y, ( ((+*(‰rgop(ì oí s| z:(T }¬ *0{¬ s­ (F+*0 r»opsJ z0 r/ppsJ z0 r£ppsJ z0 r,qpsJ z0 rµqpsJ z0 r'rpsJ z0 r™rpsJ z0 r spsJ z0 rspsJ z0 rõspsJ z0 rqtpsJ z0 rïtpsJ z0 roupsJ z0œ 7(K+ (® (¯ (µE$#‡TeÎéQlÄ 5¦í:cÚ'|aÃ0}8w æü “ r / B(µE$R(‰rÙup(ì oí s, zu,Út(å u,Ä(æ (8ì täu,ž(å(æ  (o(8¶ u9Òþÿÿt(å u9¹þÿÿ(å t  (å u9šþÿÿ (æ (æ   (8R u9nþÿÿt(å u9Uþÿÿ(å t  (å u96þÿÿ (å t  (å u9þÿÿ (æ (æ   (æ    (8Ä u9àýÿÿt(å u9Çýÿÿ(æ (¯(8… (­(8t u9ýÿÿt(å u9wýÿÿ(å t  (å u9Xýÿÿ (æ (æ  (« ( 8 tÐ(¼  (8ðtÑ(¾(8ÕtÒu9éüÿÿt(å u9Ðüÿÿ(À(æ (8ˆtÓ(  (8mtÔu9üÿÿt(å u9hüÿÿ(Ä (Å(æ  (8tÕu9)üÿÿt(Ç(æ (å (%8ÎtÖu9âûÿÿ(É($8¤t×u9¸ûÿÿt(å u9Ÿûÿÿ(å t  (æ (Ë(æ   (å  ('83tØu9Gûÿÿt(æ (Í(å (&8ìtÙu9ûÿÿt(å u9çúÿÿ(æ (Ï(8ŸtÚu9³úÿÿ(Ñ( 8vtÛu9Šúÿÿt(å u9qúÿÿ(å t  (å u9Rúÿÿ (æ (æ  (Ó ("8ÿtÜu9úÿÿt(å u9úùÿÿ(æ (Õ(!8²tÝ(×(#8—tå(è  (m(8xtß(Û()8]tÞu9qùÿÿt(æ (Ù(å ((8tà u9*ùÿÿt(å u9ùÿÿ (Ý (æ  (‰(8Ätá(ß  (8©tâ!u9½øÿÿt(å u9¤øÿÿ!(á (æ  (,8\u9xøÿÿt(å u9_øÿÿ(å t  (å u9@øÿÿ (æ (æ  ( ( 8ótã"u9øÿÿt(å u9î÷ÿÿ"(ã (æ  (y(8¡u9½÷ÿÿt(å u9¤÷ÿÿ(æ ((8bu9~÷ÿÿt(æ {p##(O@[÷ÿÿ#tÇ$(å u9A÷ÿÿ(å t  (å u9"÷ÿÿ$(Y% (æ (}%(( 8Ðu9ìöÿÿt(å u9Óöÿÿ(å t  (å u9´öÿÿ (æ (æ  ({ ( 8gu9ƒöÿÿt(å u9jöÿÿ(å t  (å u9Köÿÿ (å t  (æ {p##(O@"öÿÿ#tÈ& (å u9öÿÿ&([%&(\ (æ  (æ  %  (*8ªu9Æõÿÿt(å u9­õÿÿ(å t  (å u9Žõÿÿ (æ (æ   (+8Fu9bõÿÿt(å u9Iõÿÿ(å t  (å u9*õÿÿ (æ (æ  (u ( 8Ýu9ùôÿÿt(å u9àôÿÿ(å t  (æ (ß''9½ôÿÿ (å u9¬ôÿÿ (å t  (æ (ß((9‰ôÿÿ (å u9xôÿÿ((ø (ù %'(ø (ù )((ø (ú '(ø (ú  (æ   ) %( {p##s*0º8{p (OE8utÇ (Y(° *tÈ ([ (\ s± (² *tÆ(V(W{qs³ Œ¯s´ (µ *(‰rÿup(ì oí   rvpsx z0(­*0-:(ð , (¶ (L+-*(¶ ¥v (· *0%;(ð ,(¶ u) ,  (¸ **0-=(ð , (¶ (M+-*(¶ ¥w (¹ *0-?(ð , (¶ (N+-*(¶ ¥x (º *0-@(ð , (¶ (O+-*(¶ ¥* (» *0-B(ð , (¶ (P+-*(¶ ¥y (¼ *0-D(ð , (¶ (Q+-*(¶ ¥z (½ *0-F(ð , (¶ (R+-*(¶ ¥{ (¾ *0-H(ð , (¶ (S+-*(¶ ¥| (¿ *0-I(ð , (¶ (T+-*(¶ ¥C ( *0-J(ð , (¶ (U+-*(¶ ¥} (À *0-K(ð , (¶ (V+-*(¶ ¥Y (Á *0-L(ð , (¶ (W+-*(¶ ¥~ ( *0MN(Ù ,A(à (µ"32(à tä (æÐ(¶ (‘+,(æ (Ä **0ÊS(ý 9±(Å (Æ (ç 9š(Ç (È (Ý 9ƒ(É (Ç (Ê  (X+,þ+,Z(Å (Ë (Å (Ì (É (Ç (Ê X(½(è  (Í (é sÎ *(Ï sÎ *0‚T{p (O3otÈ ([ (\  (½(è uÆ,!(é (Ï (Í sÎ (Ð *(è (é sÎ (Ð **0zX(Þ ,n(Ñ (Ò (Ñ (Ó (¼ ,(û sÔ (Õ *(â,(ü sÔ (Õ *(û (Ö sÔ (Õ **0 sÈ(Y+*0 sÊ(Z+*0N[(á ,(× (Ø (¯ ,(Û ,*(× (Ù (× (Ú sÛ (Ü *0N[(á ,B(× (Ù (¯ ,.(Û ,&(× (Ø (× (Ú sÛ (Ü **0®^sÌ(Y+ 9(Ý (Þ (ú ,/(ß (à oá , oâ + sÎ*(ú,(ß (à +Â(‰r)vp(ì oí rYvpsx z(ú ,Ó(ß (à 8„ÿÿÿ0(H*0oã (H*0oä (H*(å *0(¾*(æ *0(¿*(å *0(¾*r(ç }%}&}'*0¦`(ú 9—(ß (à {%oÞ oÞ 38{&, oá ,{'oâ ([+++{%([++,<(ß (è (ß (à (ß (é oê (\+ së (ì **0TauË,JtË (7 uÓ,(í (]+sî (ï *(7 (í (ð +®*0 (ñ (^+*0~ž*0~Ÿ*0~ *0 Ð(¶ *0 Ð(¶ *0(Õ(‘+,(Ö**02b(× (× (Ò%¤%¤þo· *05c{p (O3#tÆ (Wu,(V (ò **0]d{p (O3KtÆ (Wu,7(Wt (å u,(æ (V só (ô **0‚e{p (O3ptÆ (Wu,\(Wt (å u,C(å t (å u,* (æ (æ (Vsõ (ö **0®f{p (O@™tÆ (Wu9‚(Wt (å u,i(å t (å u,P (å t(å u,5(æ  (æ (æ (Vs÷ (ø **0&g{p (O3tÇ (Y(ù **0Ei(Û ,9(ú (û (µ3&(ú (ü (ú (ý sÛ (Ü **05j{p (O3#tÈ (\ ([ s± (þ **0]k{p (O3KtÆ (V(µ35(Wu,((Wt (å u,(æ (ÿ **0Rm(Ü ,F( ( (µ33( ( ( ( ( ( s ( **06n{p (O3$tÆ (V(µ3(W ( **0Po{p (O3>tÆ (V(µ#3((Vtå (Wu,(è ( **0Qp{p (O3?tÆ (V(µ3*(VtÐ (¼ (W s  (  **0Qq{p (O3?tÆ (V(µ3*(VtÑ (¾ (W s  (  **0Qs(Ú ,E(  ( (µ32(  ( tÒ (À (  ( s ( **0[t(Ú ,O(  ( (µ 3;(  ( tÔ (Ä (Å (  (  s ( **0Ru(Ú ,F(  ( (µ32(  ( tà (Ý (  ( s ( **0Rv(Ú ,F(  ( (µ32(  ( tã (ã (  ( s ( **0Rw{p (O3@tÆ (V(µ3*(Vtá (ß (W s  (  **0Šx{p (O@utÆ (V(µ3_(Wu,R(Wt (å u,9(å t (å u, (æ (æ sÛ (Ü **0Šx{p (O@utÆ (V(µ3_(Wu,R(Wt (å u,9(å t (å u, (æ (æ sÛ (Ü **0 y{p (O@øtÆ (V(µ@ß(Wu9Ï(Wt (å u9³(å t (æ (ß9“ (å u9ƒ (å t(æ (ß,d(å u,V(ø (ù (ø (ù (ø (ú  (ø (ú  (æ     s ( **0®z{p (O@™tÆ (V(µ@€(Wu,s(Wt (æ {p (O3R tÇ(å u,=(å t(å u,"(Y(æ s± (þ **0R{{p (O3@tÆ (V(µ"3*(Vtä (å (æ s ( **0A|{p (O3/tÆ (V(µ"3(Vtä(å ( **04}(Ú ,((  ( (µ3(  ( (ÿ **0Fi(Û ,:(ú (û (µ3&(ú (ü (ú (ý sÛ (Ü **0x~(Ü ,l( ( (µ 3X( ( (ß ,D(ø (ù (ø (ú ( ( ( (  s ( **0Fi(Û ,:(ú (û (µ!3&(ú (ü (ú (ý sÛ (Ü **0={p (O@§tÆ (V(µE$-*(VtÖ (É (W s ( *(VtÕ(Wu,¹(Wt(Ç (æ (å (ÿ s ( *0+{p (O3ftÆ (V(µ 3P(VtØ (W(_+ ,5 ( (  (Í ( (! s" (# *{p(O@žtÆ(V(µ @‚(Vt× (Wu,f(Wt  (å (_+  ,F ( (   (Ë (æ   ( (!  (ÿ s" (# **0C‚{p (O@§tÆ (V(µE$0*(VtÚ (Wu,ä(Ñ  s$ (% *(VtÙ(Wu,¶(Wt(å u,›(æ (Ï (ÿ s$ (% *0“ƒ{p (O@§tÆ (V(µE$U*(VtÜ (Wu,ä(Wt (å u,Ë (æ (Õs& (' *(VtÛ(Wu,‘(Wt (å u9uÿÿÿ (å t(å u9Wÿÿÿ(æ  (æ (Ó(ÿ s& (' *0R„{p (O3@tÆ (V(µ3*(VtÝ (× (W s( () **0=…{p (O@§tÆ (V(µE$-*(Vtß (Û (W s* (+ *(VtÞ(Wu,¹(Wt(æ (Ù (å (ÿ s* (+ *0Ei(Û ,9(ú (û (µ3&(ú (ü (ú (ý sÛ (Ü **03}(Ú ,'(  ( (µ3(  ( (ÿ **0U†(û ,I(Ñ (Ò (ß ,5(ø (ù (Ñ (Ó (ø (ú  s, (- **0r‡0(Ï sÎ (Ð *(ß ,PY(ø (ú (þ ,9(ç (è (ø (ù (ç (é  (Í sÎ (Ð **0“ˆ(Ú 9„(  ( (µ3p(  ( tâ (á (  ( ( oË Ži (þ,,(ç (è (ç (é s. (/ ***0¥‰(ü 9–sp(0 (¢+ 9(ç (é {p (O3etÆ (V(µ3P (Wu,C (Wt(ç (è (å (æ (`+s1 (2 **0DŒ0(3 (ƒ sr(a+ ,(4 *r}vpo½ ( r¥vpsx z0D0(3 („ st(b+ ,(5 *r¹vpo½ ( rÝvpsx z0H(s /+ Ži þþ,!(‰rùvp(ì oí repsx z£*0F‘(¥+ o6 þ, Žiþ+,£*(‰rÙup(ì oí s, z0^“Œ¥ü{p (OEK?tÇ (Y(>*tÈ ([ (\ (>(¥+þ(Ø*tÉ(^*tÆ(V(W(µE$š DaO`v×­è1Jbz“¬ÄßúwÊ ±l u,Mt(å u,6(å t  (å u, (æ (æ   (*rbps= zŒ¥ü(ý  , (Å (Ì þ(¥+*rbps= zu,³t(å u,œ(å t  (å u9}ÿÿÿ (å t  (å u9^ÿÿÿ (æ þ(¥+*Œ¥ü(  , (7 (8 þ(¥+*rbps= zrwps= ztÐ(¼*tÑ(¾(r*tÒ(ÀÐv(¶ *tä(æ(å*tÔ(Ä(Å(£*tÓ(Â*tÖ(Éþo9 *tÕ(Çþo9 *tØ(ÍÐ(¶ *t×(ËÐ(¶ *tÙ(Ïþo: *tÚ(Ñþo: *tÛ(ÓÐ(¶ *tÜ(ÕÐ(¶ *tÝ(×þo; *tÞ(Ùo< (×*tß(Ûo< (×*tà(Ý*u9?ýÿÿt(å u9%ýÿÿ(å t  (å u9ýÿÿ (æ (æ  þ(¥+*Ð(¶ *tá(ßþo= *tâ(á*tå(è*tã(ãÐv(¶ *u9€üÿÿt(å u9füÿÿ(æ (¥+(Ó%¤þo· *u9,üÿÿt(å u9üÿÿ(å t  (å u9óûÿÿ (æ (æ   þ(¥+*u9Ëûÿÿt(å u9±ûÿÿ(å t  (å u9’ûÿÿ (å t  (å u9sûÿÿ (æ  (æ  (æ þ(¥+*Ð(¶ *(‰rQwp(ì oí s, z0ù(M (û s*0ù(û (M (û s*0ù(û (Ö (M (û s*0%ù(û (Ö (Ö (M (û s*0+ù(û (Ö (Ö (Ö (M (û s*0&¾(‘+-Œ(> rwwpsx z*0&¾o? -Œ(> rwwpsx z*0J”Ži (@ þþ,!(‰r‘wp(ì oí rµwpsx zsv(c+(d+*0)(|,oA (|+, oA +Ù*0=Ào; ( (¥+o? -!(‰r¿wp(ì oí r;cpsx z*0®•(¥+ oÁ , o + (Òríwp(‰rñwp(ì oí (e+(¥+ o6 þ, Žiþ+,( £ríwp(‰rxp(ì oí (e+*(‰rSxp(ì oí ríwpsx z0/–(¥+ (>ruxp(‰r}xp(ì oí (e+*0ù(K (û s*0#ù(ƒ(û (Ö (M (û s*0ù(I (û s*0(w((( *0((³( *0`˜((\+ (@ (B þþ,!(‰r«xp(ì oí rµwpsx zsx(f+(£(*0Xš(g+ Ži  Y2# £ü(¥+¤XX3Ý (€ (£(*0t›(¥+rÓxp(‰råxp(ì oí (e+( /+ Ži þþ,!(‰ryp(ì oí r?ypsx z(¡(*0dœ0(3 (ƒ (@ Ži þþ,!(‰rCyp(ì oí rµwpsx zsz(h+(i+(©(*0vþ¦(j+,sC z(s (@ Ži þþ,!(‰rwyp(ì oí rµwpsx zs|(h+(i+(§(*0Qžþ¦(j+,sC z(r(¥+r¥yp(‰rÇyp(ì oí (e+(¥(*0i(¥+(¥+rñyp(‰rûyp(ì oí (e+Ðv(¶ (¥+rñyp(‰r/zp(ì oí (e+(±( *0s~(k+(‡(*0WŸþ(l+,sC zoD ,!(‰rUzp(ì oí r‰zpsx z((—(*0NŸþ(l+,sC zoD , (•(*(‰r•zp(ì oí r‰zpsx z0zŸþ(l+,sC z(¥+o: rÕap(‰rËzp(ì oí (e+oD , (‘(*(‰r•zp(ì oí r‰zpsx z0ƒŸþ(l+,sC z(¥+o: rÕap(‰rËzp(ì oí (e+oD ,!(‰rUzp(ì oí r‰zpsx z((“( *03 þR(m+,sC zoË ( ((*0Œ¡þ(n+,sC zoE -!(‰rízp(ì oí r {psx zoF ( oã oG , ((*(‰r•zp(ì oí r {psx z0š¡þ(n+,sC zoE -!(‰rízp(ì oí r {psx zoF ( oã oG ,!(‰rUzp(ì oí r {psx z((Ÿ(Ö (*0’¡þ(n+,sC zoH -!(‰r{p(ì oí r {psx zoF ( oä oG ,(™(Ö (*(‰r•zp(ì oí r {psx z0 ¡þ(n+,sC zoH -!(‰r{p(ì oí r {psx zoF ( oä oG ,!(‰rUzp(ì oí r {psx z((›(Ö (Ö (*0j¢þ([+,sC zoË ( oG ,!(‰rUzp(ì oí r9{psx z(((Ö (*0\¢þ([+,sC zoË ( oG , (‹(*(‰r•zp(ì oí r9{psx z0¢ÐC(¶ (¥+rE{p(‰r[{p(ì oí (e+ÐC(¶ (¥+r•{p(‰r[{p(ì oí (e+ÐC(¶ (>r«{p(‰r³{p(ì oí (e+(s(( *0lÐv(¶ (¥+rÿ{p(‰r |p(ì oí (e+Ð(¶ (¥+r3|p(‰r=|p(ì oí (e+(q( *0T£(  oË s€o< (o+ (¥+rc|p(‰ri|p(ì oí (e+(…(*0¤(( («( *0W¥u,1t (å u,(æ (*((*Ð(¶ (o((*0K§s‚(p+(q+ (I (J (¯(­(Ö ( s„ (§+(*0r¡|p*0(B (B 3 s†(r+**0sˆþoK *0oÁ , þo6 **0oÁ , o6 Ži**0Ь>oL (s+ (3 sŠ(t+ u,t (M u, (N *s(u+,(O *(‰rË|p(ì oí s, z0î®(‘+,!(‰ró|p(ì oí r}psx z:°oÁ , o6 + s’(v+(w+ (x+ >oP , (Q Þ Þtu€,Þþ,((O  o< oR , (O *(5*(5*h#‹0)¯:oS ,*r+}po (s, z0)°:oÊ ,*rS}po (s, z0u,*(w+þo· *0s”þoK *0 v±(9 (y+ (z+ Œ¥(× >(w+oT (‰r{}p(ì oí (¾ Œ,*r§}psU z0D²(9 >oV (‰r¹}p(ì oí (¾ Œ,*rß}psU z0J³(3({+ 6(w+oW (‰rï}p(ì oí ŒR,*r!~psU z0M´(9 (y+ 6(w+oW (‰rï}p(ì oí ŒR,*r!~p sU z0e¶EOuÓ, r'~ps= ztË (7 (í Y(|+ (X (ð (Y sZ *(ñ sZ *0/¾/!(‰r›ep(ì oí r?ypsx z(|+*0oê Ži-*(w+þo[ *0oº(\ (] (^ (_ (` o6 Ži(}+(a (b (9  (6  þ(A*01oE ,oã þoG *oH ,oä þoG **0мu ,_t  (c u ,K(c t  (c u,2(d (d (Ò% ¤%¤þo· *(‰rg~p(ì oí rµwpsx z0\½u ,3t  (c u,(d 3 þo= *þoe *(‰r‹~p(ì oí r­~psx z0H¿of ,*s–og (~+ -rµ~poâ ( rí~psx z(h *0~¡*0jÁ{™(+ rv^p(ë ,(G*ricp(ë ,{š*(i ,*o (‰rû~p(ì oí (¾ s, z0Â{™(+ (H (F*0LÃ{˜(mYE r'ps= zs˜*(I sš*(u  sœ*0sj (€+*0lÈ{˜(mE rCps= z(u  s *s¢ s¤ (Jok sl (m (n s¦*0uÓ,*rSps= z01ÉuË,tË (7 uÓ, (í *rSps= z0'{?{@(o {@X{As«*0(+s¬s«*0Ò{˜(mE fvªºr½ps= zs® s° (\s²(p (‚+ s´oq sr (s (t (u s¸*(Ssº*(R(Qs¼*(L (u    s¾*(QsÀ*(QsÂ(v (ƒ+sÆ*0-Ó{™(+ (L {˜(mþ sÈ*0‰(u  sÊ*0À(I {™(+ sÌ*0À(I {™(+ sÎ*0Õ(U (u  sÐ*0=À(I {™(+ {˜(m3 (7(*(8(‹*09ÖsÒ sÔ (Iok (L{™(+(u sw *06×(I{™(+(LsÖ(p (‚+ sØsx *0$×(IsÚ(p (‚+ sÜsy *0\Ú{˜(mE Þ#rËps= z(W (µE$ rbps= ztß (Û*tÖ (É þoã *(X(\ (` (] (_ (^   (6*(Z  (z  ({ (=*0Þ{˜(m E W]msƒ“£³ÃÉ YEªÂØó!2HYjzŠšª°êYE$*06u{‡½ÃÉÏÕ/5;AGsÞråps| („+ o} sà*sâ*sä*sæ*(X (\  (`  (]  (_  (^ sè*sê*sì*sî*sð*(T  sò*(I{™(+sô*sö*sø*sú*sü*(Y  (~  (  (€  (   sþ*(I{™(+s *s *s *s *s *s *{˜(mþ  s *{™(+s *(u (‚ (ƒ   s *(v („ (… s *(u ÑiÑs *(u gs *{˜(mÒs *(u hs *(u Ñs *(u s *(u s *(v s" *(v s$ *s& *(Y  (~  (  (€  (   s( *(Z(z ({   s* *s, *(Ws. *s0 *(Is2 *(T  s4 *(Us6 *(V  s8 *(Us: *s< *(u s> *0~¢*0~£*0à{p (OE9{*tÈ ([ (\  (_(I{qs*tÆ(V(WsD (…+(M{qs*tÉ  (^  (_  /+Ži   þþ, r'€ps= z £ü (¥+ rW€p(‰ra€p(ì oí (e+ *0œá{p (OEL*tÆ sF (W(†+*tÇ (Y (‡+,+ (‡+,* († *tÈ([ (\ († 8dÿÿÿ0 ‰Ži sH *0¢ä{p (OEA¥~tÆ (V (W sO  (…+(M{qs*tÇ(Yo‡   ,C   (0  (¤+(¤+ (`  (ˆ+  (ˆ , * (‰ sJ z*tÈ([(\ (†  (b(I{q  sÝŒtu„,vt„(N (X+,[(<(>s;(K(û ssQ  (b(I{q  sÞþþ**á0Œ0 GåoŠ i (+ s† {€ /%{€ {€ {€ Yo‹ X(‚ +Ò*0~¤*0~¥*0/ç(^(‰+ sh (Š+(dsŒ þo *05é(eoŽ -sp (‹++ (eo s *0ûóŒ,+ rÿips´ zo; oá o‘ (’ oÞ (V  (e(; (eo s Þ (e(> &Ü (“  (” , (• 8­uƒ,(– +Psj sl  o—  Þ t  uH  , ) Þþ  (Œ+(+(Ž+(e(; (g Þ (e(> &Ü (“ (” , (• + -*(˜ (c o; (4u,oá , oê Ži++XŽiþþ,>rq€po² þCo ŽiþCo (r™€psx z(a(+s«o™ (ÿ *(E` ± » ý  0ƒôŒ,+ rÿips´ zu ,4 o; (3oá , oê +(+ (h*uR , o; (3 (h*(h*00¤oá sr (+(w+(Po™ (g+(_*0BÐ(¶ (¥+rvp(‰r§€p(ì oí (e+{p{qsš *0!(a &}(})X}**0G]{) {* þþ, rÑ€ps= z{({)£zi {)X})*0¦õ{)X{*1 rí€ps= z{( {)( {)XY( (  ( YXz Y 2"  X£z¤z X  X3Þ {)X})*0)¾(› {({)oœ {)X})*( *0(ß*:(ž }+*0o² {+(ë *:(Ÿ },*0(q{,(ë *(  *0 .oÌ (¥+rµwp(‰r5p(ì oí (‘+*(¡ *0 )(¥+rµwp(‰rWp(ì oí (e+*(¢ *0 .o9 (¥+rkp(‰rup(ì oí (e+*(¢ *0 .o9 (¥+r©p(‰r±p(ì oí (e+*:(£ }-*0 .{-(¥+rãp(‰rõp(ì oí (e+*(¤ *0oÌ þ(Ø*(¥ *0ö(ù (ú (*(¦ *0ö(ù (ú (*(§ *0 þoR *:(¨ }.*0{.£*:(© }/*0o² {/(ë *:(ª }0*0{0þ(x+*(« *0 þoÌ *’(© }1}2}3}4*0®÷oá , oê + Ži {1þþ,*{4(+ sŒ{2(v+ {3(x+sŽoË (c+(’+o<  (B (B þþ,* (¬ (¬ (1*:(ª }5*0{5þ(x+*:(¨ }6*0{6(­ *:(® }7*0o½ {7(ë *(¯ *0 þ(D*:(¯ }8*0{8þ(9*:(¯ }9*0{9þ(E*:(° }± *0{± þoÑ *:(² };*0{;þo³ *(´ *0(L*:(µ }<*0{<(p (‚+*V(² }=}>*0{={>(“+þo¶ *0{?*0{@*0{A*0(a }?}@}A*:(¨ }B*0{B£*(· *0(Q*:(¸ }C*0{C(v (ƒ+*(´ *0(L*:(¹ }D*0{D(“+*:(º }E*0{Eþo™ *r(» }F}G}H*0Bø{G{Ao¼ {Fo½ s¶{H(”+(M (û s*:(» }I*0ù{Io¾ (K (û s*V(» }J}K*03ù{Jo¾ {K(Oo™ (I (û s*V(» }L}M*0*ù{L{Ao¿ {M(G (û s*:(» }N*0{No™ (*(· *0(Q*:(º }O*0{Oþo™ *V(» }P}Q*0:ú{Po™ {p {qsÄ{Q(”+(•+ s*r(À }R}S}T*0){R{S{Ao¿ {T(· s;*:(À }U*0{?{U(Á *V( }V}W*0{V(9{W(*V(à }X}Y*0{X(9{Y(*V( }Z}[*0{ZoÄ {[(*(´ *0(L*:(µ }\*0{\(p (‚+*(´ *0(L*:(¹ }]*0{](“+*(´ *0(L*:(¹ }^*0{^(“+*(Å *0s= z:(Æ }_*0{_þo½ *(Æ *0 (–+(‰*(Æ *0(—+(*(Æ *0(—+(s*²(Æ }`}a}b}c}d*0 Cû{`{a{b{c{dsw (B oG ,(‹*(*(Æ *0 (–+(‡*(Æ *0 (–+(…*(Æ *0(—+(q*(Æ *0(—+(«*:(Æ }e*0{eoÇ (›*V(Æ }f}g*0*ü{f{g(< oD ,(•*(—*(Æ *0(—+(­*(Æ *0(—+(³*(Æ *0(–+(o*(Æ *0 (–+(m*’(Æ }h}i}j}k*0 6ý{h{i{j{k(˜+ (C,(™*(›*V(Æ }l}m*0*ü{l{m(< oD ,(‘*(“*(Æ *0(—+(*(Æ *0(—+({*(Æ *0 (–+(y*(Æ *0(—+(u*(Æ *0(—+(w*:(Æ }n*0#(—+{nŒvÐv(¶ (o*:(Æ }o*0#(—+{oŒ)Ð)(¶ (o*:(Æ }p*0#(—+{pŒwÐw(¶ (o*:(Æ }q*0#(—+{qŒxÐx(¶ (o*:(Æ }r*0#(—+{rŒ*Ð*(¶ (o*:(Æ }s*0#(—+{sŒyÐy(¶ (o*:(Æ }t*0#(—+{tŒzÐz(¶ (o*:(Æ }u*0#(—+{uŒ{Ð{(¶ (o*:(Æ }v*0#(—+{vŒ|Ð|(¶ (o*:(Æ }w*0#(—+{wŒCÐC(¶ (o*:(Æ }x*0#(—+{xŒ}Ð}(¶ (o*:(Æ }y*0#(—+{yŒYÐY(¶ (o*:(Æ }z*0#(—+{zŒ~Ð~(¶ (o*(Æ *0(—+ŒÐ(¶ (o*’(Æ }{}|}}}~*0 6ý{{{|{}{~(˜+ (C,(*(Ÿ*V(Æ }}€*0{{€(>(*(Æ *0(—+(±*:(Æ }*07þ{(µ3!{tß (Û (A(‹*{*(Æ *0(—+(¯*:(Æ }‚*0{‚(9(©*:(Æ }ƒ*0{ƒoÇ (Ÿ*:(Æ }„*0{„oÄ (§*:(Æ }…*0{…oÇ (Ÿ*:(Æ }†*0{†oÄ (¥*(Æ *0 (–+(£*:(Æ }‡*0(–+{‡(¡*(È *0([(QsÉ *(Ê *0(](Ë (™+*:(Ì }ˆ*0{ˆ(_*:(Í }‰*0{‰(`*V(¨ }Š}‹*03}{‹/ {Š£*(‰r‚p(ì oí s, z0(ç }Œ*0(ç *0 (è *0 (é *0{Œ*V(Ì }}Ž*0{{Ž(b*r(Î }}}‘*0*{(X+, {‘(ÿ *{þo‡ *0 (a &*00ÿ(Ï (Ð (À(š+ bX, (ê +a*05(Ï (Ð (Ï (Ð (¿(›+, (ë **0sW *0(a }’}“*0{’*0{“*0&*0Fþ,=  -  ¹y7ž(Y bcXXX ¹y7ž(X (œ+bcXXX **0 (¿([ *0Iþ,:uˆ ,. -  (X (X (+,(Y (Y þ***þþ*0o‘ (’ oÞ (V *0Dþ,5þ,- -  (X (X (ž+,(Y (Y þ***þþ*0uˆ ,(_ **0sb *0(a }”*0{”*0&*0 (a &*0 (À([ *0(¿(] *(Ñ *0T(Ò (Ó o‘ (’ oÞ (V  (e(; (e(a oÔ  Þ (e(> &Ü *0E :(Õ }•*0 ){•(^{•oÖ (c(‰+s× *:(Ø }–*0+r¡|p(Ù ,(d{–sŒ oÚ þ**(Ñ *07(Ò (Ó (eo‘ (’ oÞ (V (a oÛ *:(Ü }—*04(Ý (Þ sn (Š+(d{—sŒ o *(· *0(Q*0A {˜(m {˜(m {˜(m {˜(m b`b` b`*08]{˜(m 0* ¿0_ b{˜(m`*(t *0" (u j!ÿÿÿÿ_ (u j  b`*0| (u  /+ Ži þþ,UrA‚p rbp( ¥B(ß (+ rw‚p(+ Ži  rbp( ¥B(ß (+ s= z£*0e {˜(m E*1r™‚p rbp( ¥B(ß (+ s= z(]+*oà  (ð +›0vŽisl)s}  s~  s€  oá {˜(u (nsâ (ã (ä Žisl(Ÿ+s} þoà *0{˜*0{™*0{š*0(a }˜}™}š*(å *0{˜(u (o*:(æ }›*0{›(ç ( +*0Qoè -u$,*(¡+sé (ê * (ë (ì (í (ë (î +¯0 (ï (¢+*0Loð -u$,*sñ (ò * (ó ( (ó (Ž (í +´0 (ï (£+*0sô þ(¤+*0sõ (¥+*0:*0>*06*00*0(ÐT(¶ oö ,rUep6oÊ ,***0;¾(Œ -!(‰rÅ‚p(ì oí rc|psx zrUep6þoÊ *:(÷ }ø *0{ø so þoù *:(ú }û *0{û so þoü *0?þà ~üsý oþ ,*s; ~üsý oÿ *0 (OEAg¨tÆ  ¹y7ž(W( bcXXX ¹y7ž(V(¶bcXXX *tÇ  ¹y7ž(Y(¦+bcXXX *tÈ  ¹y7ž (\(§+bcXXX ¹y7ž ([(¦+bcXXX *tÉ ¹y7ž(_bcXXX ¹y7ž(^(¨+bcXXX *0þ(OECj©tÆ tÆ (V (V  (¸,(W(W( **tÇtÇ(Y(Yþ(©+*tÈtÈ ([ ([(©+,(\ (\þ(ª+**tÉ tÉ  (^ (^(«+, (_ (_þ**0 (µE$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *tÐ  ¹y7ž(¼(¨+bcXXX *tÑ  ¹y7ž(¾(¬+bcXXX *tÒ  ¹y7ž (À(¬+bcXXX *tÓ ¹y7ž(Â(¨+bcXXX *tÔ ¹y7ž(ÅbcXXX ¹y7ž(Ä(¨+bcXXX *tÕ ¹y7ž(Ç(­+bcXXX *tÖ ¹y7ž(É(­+bcXXX *t× ¹y7ž(Ë(­+bcXXX *tØ  ¹y7ž (Í(­+bcXXX *tÙ  ¹y7ž (Ï(®+bcXXX *tÚ  ¹y7ž (Ñ(®+bcXXX *tÛ  ¹y7ž (Ó(®+bcXXX *tÜ  ¹y7ž (Õ(®+bcXXX *tÝ ¹y7ž(×(¯+bcXXX *tÞ ¹y7ž(Ù(°+bcXXX *tß ¹y7ž(Û(°+bcXXX *tà ¹y7ž(Ý(¨+bcXXX *tá ¹y7ž(ß(¨+bcXXX *tâ ¹y7ž(á(¨+bcXXX * * * * * *tã ¹y7ž(ã(¨+bcXXX * * * *! *tä" ¹y7ž(æ(¨+bcXXX ¹y7ž(å(±+bcXXX *tå# ¹y7ž(è(¨+bcXXX *0(µE$%Ho–ÏöDk’¹à.U|£ÊñW*tÐ tÐ (¼(¼þ(«+*tÑ tÑ (¾ (¾þ(²+*tÒtÒ(À(Àþ(²+*tÓtÓ(Â(Âþ(«+*tÔtÔ (Ä (Ä(«+,(Å (Åþ**tÕ tÕ  (Ç (Çþ(³+*tÖ tÖ  (É (Éþ(³+*t×t×(Ë(Ëþ(³+*tØtØ(Í(Íþ(³+*tÙtÙ(Ï(Ïþ(´+*tÚtÚ(Ñ(Ñþ(´+*tÛtÛ(Ó(Óþ(´+*tÜtÜ(Õ(Õþ(´+*tÝtÝ(×(×þ(µ+*tÞtÞ(Ù(Ùþ(¶+*tßtß(Û(Ûþ(¶+*tà tà! (Ý!(Ýþ(«+*tá"tá#"(ß#(ßþ(«+*tâ$tâ%$(á%(áþ(«+*tã&tã'&(ã'(ãþ(«+*tä(tä)((å)(å(·+,((æ)(æþ(«+**tå*tå+*(è+(èþ(«+*0- ((ê (ë rç‚p( ( ( ( *05j{p (O3#tÈ (\ ([ s± (þ **0r‡0(Ï sÎ (Ð *(˜  ,PY(ø (ú (™  ,9(ç (è (ø (ù (ç (é  (Í sÎ (Ð **0!þ9{ÿ {ÿ @í(OE7]štÆ tÆ (V (V(¹,(W (Wþ(¸+**tÇtÇ(Y(Yþ(¹+*tÈtÈ([([(¹+,(\(\þ(º+**tÉtÉ (^ (^(»+,(_ (_þ****0(µE$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*tÐ tÐ (¼(¼þ(»+*tÑ tÑ (¾ (¾þ(¼+*tÒtÒ(À(Àþ(¼+*tÓtÓ(Â(Âþ(»+*tÔtÔ (Ä (Ä(»+,(Å (Åþ**tÕ tÕ  (Ç (Çþ(½+*tÖ tÖ  (É (Éþ(½+*t×t×(Ë(Ëþ(½+*tØtØ(Í(Íþ(½+*tÙtÙ(Ï(Ïþ(¾+*tÚtÚ(Ñ(Ñþ(¾+*tÛtÛ(Ó(Óþ(¾+*tÜtÜ(Õ(Õþ(¾+*tÝtÝ(×(×þ(¿+*tÞtÞ(Ù(Ùþ(À+*tßtß(Û(Ûþ(À+*tà tà! (Ý!(Ýþ(»+*tá"tá#"(ß#(ßþ(»+*tâ$tâ%$(á%(áþ(»+*tã&tã'&(ã'(ãþ(»+*tä(tä)((å)(å(Á+,((æ)(æþ(»+**tå*tå+*(è+(èþ(»+*0µ!€û s €üМ(¶ o €žÐ6(¶ € (ÔoÁ , (Ôo +(Ô€ŸÐC(¶ oá €¡s@ €¢sB €£ sS s €¤ se s €¥*( *0 þ(*( *0rñ‚p( ( ( ( *( *0 (<( *( *0(˜ *( *0(Â+*(  *0"(  (  (.*(¦ *0ö(ù (ú (*0s  (Ã+*0 (Ä+*0s  (Å+*0sÅ (Æ+*0sÇ (Ç+*0 sÉ (È+*0 s (æ+*0sÍ (É+*0sÏ (Ê+*0sÑ (Ê+*0 (” (ç+*0 (• (ç+*0 (” (è+*0 (• (è+*:(p }§*0#{§( *:( }¨*0#{¨( *V(; } } *0{ { o þo *:( } *0 &#s s¹ s» { s s *(V *0*r( } } } *0{ sÁ { { s *:( }¯*0#{¯( *:( }°*0{°o *( *0*(º *0s= z(V *0*(V *0*:(V }±*0{±o *0û%,{³,++ X {²- {´þ+,7,1 (  Y2 o &XX3é++,${³,(  o &+ + -o &{²- {´+,E,? (  Y2%{´,0+ o &XX3Û++*0<‰ / 0(! X+x3a+A(!  YX (" þo# *0,&,( (  Y  2 o & X X3í**0,&,( (  Y  20o & X X3í**0, (Õ **0í'XYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (Ó X  !6"\i(Ë+&^\+Ñ{²(× *0œ(XYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(Ó X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(Ë+&][8vÿÿÿ{²(× *0 *0££(þ(*0~*0%o$ ,+o% ,+o& þ*0+(Ý , oÁ +,o (Ü þoR **0A)(Þ , o6 s' *oA ,+Û(‰rõ‚p(ì oí s, z0 *0 :+(º (ß  (( rUep %¤( þoà *0',(ß  () £ s þ(Û *0E-(ß  () £ (ß  () £s þ(Û *0),(ß  () £ s þ(Û *000 9þþ**0ý/( þþ,(‰rƒp(ì oí s* z(  YE#YEt+YEJ-YE&0YE*( X8pÿÿÿ(ÿ X8Yÿÿÿ+(» ( X8<ÿÿÿ(‰rSƒp(ì oí s* z (» ( X8ÿÿÿ0A02(‰r•ƒp(ì oí s* z( (å , X+Á*0b02(‰r•ƒp(ì oí s* z( (å ,X(ç s+ **YEs+ *Xs+ *0J2( .YE s, *X(è  (- (. s+ (/ s, *0l02(‰rÓƒp(ì oí s* z( (å , X+Á*YE(é s0 *X(é s0 *0~*05(ê  (1 (2 (3 (2 (4 (2 (5  3+F, (6 +: Y( ( YX( (ë ¥B(7 ( (6 9z(8 (. (8 (- , (6 +T X( Y( (  (     YX( (ë ¥B(7 ( (6 +s9 *0~*09}{²-3, {´+,( (Ö +( (Õ +(G{²,/, {´+,( (Ö *( (Õ **(Õ *0ü6 %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þ*o (‰r „p(ì oí (¾ s* zs þ(â *s þ(â *þ(ä *s þ(â *s þ(â *þ(ã *s þ(â *s þ(â *s þ(â *X  ( LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(‰r=„p(ì oí ru„p(¾ s* z s þ(â * s þ(â * s þ(â * s þ(â *s! þ(â *s# þ(â *s% þ(â *s' þ(â *Xþ(Ì+*058,! (; -s) þ(â *þ(ï *0 ‚;s  ( (æ  (ì  (<  (=  (> ( ,%(; -s+ þ(â *þ(ð *0Ô=(P+:Á(R+:®(T+:›(Í+:ˆ(V+:v(Q+-b(S+-P(U+->(W+-/(Î+-(‰ry„p(ì oí s* z¥ˆ n*¥~*¥} n*¥| n*¥zn*¥Y*¥‰j*¥Cj*¥{j*¥yj*0Œ?(P+:g(R+-L(T+-4(V+-(Í+-+T¥‰ Œˆ+D¥Y Œ~+4¥C Œ}+$¥{ÑŒ|+¥yÒŒz (ò *0 ‚B(N+:^(M+:¨(Ï+-(‰r¿„p(ì oí s* z¥! (? ,9 ( c/+c/+þCo +rç„p(+ (ë ¥B(@ sA (Ð+sB 8[¥w(? ,9 ( c/+c/+þCo +rç„p(+ (ë ¥B(C "€þ,+ "€eþ,+(D þ"þþsB 8±¥x(? ,9 ( c/+c/+þCo +rç„p(+ (ë ¥B(E #ðþ,+#ðeþ,+(F þ#þþsB (G  (H  (I  {³  ,"  ,(  (?  (+ +    (î XsJ *0«CX ( LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(‰r=„p(ì oí ru„p(¾ s* z(ó (Ø XsJ *X  ( XYEldYE^iYEPoYEBuYE4xYE&(‰r=„p(ì oí rë„p(¾ s* z(ó (Ø  XsJ *X  ( XYEldYE^iYEPoYEBuYE4xYE&(‰r=„p(ì oí rñ„p(¾ s* z(ó (Ø  XsJ *X  ( XYEldYE^iYEPoYEBuYE4xYE&(‰r=„p(ì oí r÷„p(¾ s* z(ó (Ø  XsJ *0 ÙE{³ 9ˆ (  +YEo(  rý„p Œ*,8uA,rbp( ¥Bo  +o +rv^p(+ r]…p(+ s= z0+ (7 ,Q  {î {ï {ð {ñ (  {ó {ô {õ {ö {÷s6+  {´,H {î {ï {ð {ñ {ó {ô {õ {ö {÷s6+  ,R  {î {ï {ð {ñ {ò {ó {ô (  {ö {÷s6+  ,  (Ñ++rµbp(GXsJ *0 k Is  ( (æ  (ì  (<  (=  (> ( 9Œ  (; -XuJ,1tJ  (K   (L   ¥C(  sM +R(‰ra…p(ì oí s*   z (; (  (  sM +   sM (N (O  9Œ  (; -X uJ,1 tJ  (K   (L  ¥C( sM +R(‰r‰…p(ì oí s*   z (; (  ( sM +  sM (N (O %YE–AYENEYE´à LYEÒþOYErUYE+XYEñaYE{Ð=y¢iYEhlYEinYE:+sYEo±øxYE(‰r „p(ì oí s*   zuJ,ÙtJ  (K   (L  (ó (Ø XsJ *uJ,–tJ  (K   (L  ¥)(î XsJ *uJ9QÿÿÿtJ  (K   (L  (Ò+oP o— &XsJ *uJ9 ÿÿÿtJ  (K   (L 8,ÿÿÿuJ9ÞþÿÿtJ  (K   (L X( XYEndYEiYEqoYEDuYE6xYE((‰r=„p(ì oí r¹…p(¾ s*   z (ó (Ø XsJ * (ò (Ù XsJ *uJ9íýÿÿtJ  (K   (L 8þÿÿuJ9ÁýÿÿtJ  (K   (L X( XYEndYEiYEqoYEDuYE6xYE((‰r=„p(ì oí r?yp(¾ s*   z (ó (Ø XsJ * (ò (Ù XsJ *uJ9ÐüÿÿtJ  (K   (L  (Q+-: (S+-1 (U+-( (W+- (Î+- (ò (Ù + (ó (Ø XsJ *uJ9FüÿÿtJ  (L uJ9,üÿÿ (L tJ(K   (K (L Œd(á  (á (Ó+o— &XsJ *uJ9ËûÿÿtJ  (K   (L  ¥v,r½…p+rÇ…p(î XsJ *uJ9vûÿÿtJ  (K   (L  ¥*o &XsJ *uJ95ûÿÿtJ  (K   (L 8`þÿÿuJ9 ûÿÿtJ  (K   (L  (ô *uJ9ÍúÿÿtJ  (K   (L +ÂuJ9¤úÿÿtJ  (K   (L +™uJ9{úÿÿtJ  (K   (L 8úÿÿuJ9OúÿÿtJ  (K   (L  (õ *uJ9úÿÿtJ  (K   (L  ,  o +rµbp(î XsJ *uJ9ÄùÿÿtJ  (K   (L 8þûÿÿuJ9˜ùÿÿtJ  (K   (L  ¥!rÓ…p(ë ¥B(@ {³,1sA (Ð+,(  (? (+ +(î XsJ *uJ9ôøÿÿtJ  (K   (L 8æýÿÿuJ9ÈøÿÿtJ  (K   (L 8ºýÿÿuJ9œøÿÿtJ  (K   (L 8ŽýÿÿuJ9pøÿÿtJ  (K   (L  (ö *o &XsJ *0 ÿK2+( %3X þþ+,oQ ŒN*(R ,C( o &X( o &X8|ÿÿÿ( %YE+o &X8;ÿÿÿX(Ô+ (S (T 8ÿÿÿ0 HOoU (V (W (X (Y     (Õ+*0 £QsZ 2+( %3X þþ+,(Ö+(×+*(R ,X+( %YEX8nÿÿÿXþ(ñ *0SS{[ r6^p(ë ,s\ ŒT(Ø+*(   (] ÐV(¶ (Ù+(Ø+*0{²*0{³*0{´*0}²*0}³*0}´*0(a }²}³}´*V(^ }µ}¶*0{µ{¶þ(Ú+*²(^ }·}¸}¹}º}»*0 4{¹{»{·(` (` {º{¸Xþ(Ì+*²(^ }¼}½}¾}¿}À*0 -{¿{¼{½{¾{Às þ(Û *’(^ }Á}Â}Ã}Ä*0 ){Ã{Á(` {Ä{ÂXþ(Ì+*r(a }Å}Æ}Ç*0 ${Å{Ç(` {ÆXþ(Ì+*r(a }È}É}Ê*0 ${È{Ê(` {ÉXþ(Ì+*r(a }Ë}Ì}Í*0 ${Ë{Í(` {ÌXþ(Ì+*r(a }Î}Ï}Ð*0 ${Î{Ð(` {ÏXþ(Ì+*r(a }Ñ}Ò}Ó*0 ${Ñ{Ó(` {ÒXþ(Ì+*r(a }Ô}Õ}Ö*0 ${Ô{Ö(` {ÕXþ(Ì+*r(a }×}Ø}Ù*0 ${×{Ù(` {ØXþ(Ì+*r(a }Ú}Û}Ü*0 ${Ú{Û(` {ÜXþ(Ì+*r(a }Ý}Þ}ß*0 ${Ý{Þ(` {ßXþ(Ì+*r(a }à}á}â*0 ${à{á(` {âXþ(Ì+*r(a }ã}ä}å*0 ${ã{ä(` {åXþ(Ì+*r(a }æ}ç}è*0 ${æ{è(` {çXþ(Ì+*r(a }é}ê}ë*0 ${é{ë(` {êXþ(Ì+*r(a }ì}í}î*0 ${ì{î(` {íXþ(Ì+*r(a }ï}ð}ñ*0 ${ï{ñ(` {ðXþ(Ì+*²(a }ò}ó}ô}õ}ö*0 .{ò{ó{ô{õ{ö(` þ(ï *Ò(a }÷}ø}ù}ú}û}ü*0 4{÷{ù{ú{û{ü{ø(` þ(ð *:(º }b *0 5U{b oc (d (e (í (î þo< *r(f }g }h }i *0 {g {h {i þ(Û+*0/М(¶ o €( €s €*0<Vr×…poP o; Ð(¶ (‘+ Þ t  Þ*/0 0"Xoj (k Þt (l Þ*0 *0/£C**0Z(f  (e  (d  Ži3\ X/(bré…psx zCY2 (5 ¤CXX3à+ ¤CX (b *0W[(f  (e  (d  - rõ…ps= zY£Cþ 3Y+Y(b  sm *0M\(f  (e  (d  3*£C £Ce¤CX(b  sn (o *0_^X þþ, Xsp *(8  ,, (q (r (q (s Y+®Xsp *0 øf!!u¹-q!uº:Àt» ( ( ( (: (t (u (v (w (sp 8Zt¹  (   (  (   oï   ( (    (9 8ÿtº( (( (( ( ,+""u³:"u²:6(: (t (u  (v (w X (: (v (t (u (w   (ñ( XXsp 8t³(ý(: (t  (u (v (w  YX (: (v (t (u (w   (í(Xsp 8bt²(û(: (t  (u (v (w XY X>°(6  (: (v (t (u (w (7 (x (y  ,*   (í(Xsp 8€   (ï(XXsp +V (: (v (t (u (w   (ï(XXsp (w (v (t (u sp *0.h0*   (Ü+(b  (: (v *0(z ( Xs{ *0$i s| r†p(z (z s{ *0°k  u¹:× uº:þ  uº- u»:‹r!†p 8sKztº ( ( ( (>  ,+(} (~ r_`p(< (} (~ (~ 8@ÿÿÿt»(8ÿÿÿt¹( ( (  oï (< *tº (u³9êþÿÿ(t³ {ò9Òþÿÿ( (  (ý (> (} (~  X(Ý+(} (~  X8Pþÿÿ02l  (ç (>  (} (Þ+(Ÿ+(+ *0¾ s| o o *0 ¨muº-Eu»:At¹ (  ( (  oï o ( X*tº(u³,y(t³((( ( ( (ý (ß+   X(à+ X8ÿÿÿ((( ( ( (ß+ , +r_`po  r_`p( X   8¦þÿÿt»  ( ( (  (á+&(ß+  (á+& *0p   (ß+&*0arud,Ntd ( ud,:( td ( ue,!(‚ ( (‚ ( sƒ *rƆps= z0ov,j(â+ (Ú 3Mtô (ã r܆p(ë ,(ä  (ã+(„ *(ã ræ†p(ë ,(ä uh,*rò†ps= z*0~{*0~|*0Bxsh  (ä+(  r:‡p(r>‡p((ñ( (ñ( *0Bzsj  (å+(  r:‡p(r>‡p((ñ( (ñ( *0@rybp(rB‡p(( rƒbp((ñ( (ñ( *0@rF‡p(rB‡p(( rL‡p((ñ( (ñ( *04rybp(( rƒbp((ñ( (ñ( *0¾'YE©"YEYE~\YEk(… ,Uid[ ] i [ ] i ] rR‡pþCo (+ þCo (+ þCo (+ *þ*o *rV‡p*r\‡p*:jÿÿÿrb‡p*9Qÿÿÿrh‡p*0>{( / († þ+,( "þþ+, X+Å*0<|( 3(Þ+ (Ÿ+(+ *X( (L (z +Ä02  rË3p(+ rË3p(+ *0{€ 1{€ Y(‚ **0s‡ *0 %(p (â+Œ(S *0 P‚0+{€ þþ,rn‡p( Ý 9Ï oˆ ,rn‡p( Ýü o‰  (º Ð3(¶ o± , þ, Žiþ+,8> £(æ+(^(ë ,+( þþ,8r:‡p(Š r>‡p(‹ /+þ,+Xþþ,8·0rv^p+"Y(   ( YX( X(   þþ,rv^p+0X(   ( ( Y  YX(  X(  Y(   (  (   YX(    sz (ç+uk9žtk(Œ u),(+!Y(â+Œ(S (P ( ((ñ( (ñ( ( Þ tÞ+>tm(Ž rv‡po& (+ rÀ‡p(+ (( -Y (Y +(  o  ÞIY (Y  Þ/t(P rćpo& (+ ( Þ*A4{€ /0 ňs|  ud9¨td ( ue,$(‚ ( Œdþ(R * rU`p(o‘ o’ s“ s” (è+rñ‚p(( r}`p((ñ( (ñ( * +07,/rU`p(r}`p((ñ( (ñ( **0s† *0s• *0s– *0v“s‚  (Ú E%h(Ú Eþî[r!†p lsKztô (ä uh,(ã  (P (*(ä  (ã  (P þþ( (é+(ï( (U *tõ(æ (ç  (P o² uh, (*þþ( (é+(ï( (U *tò(Þ (ß (P rÔ‡po² (+ rÀ‡p(+ ((r 3( **tö(é 9o(º u) , (P  (O   (*u8  9¬   (—   YE6µrà‡p þCo (+   ((ê (ë (J * (˜  (™  s„ (ê+(ë+{ô(ì+-+.rì‡pþCo (+   ((ë (J * (›  (›  (™  (™  sˆ sŠ (ë+{ô(í+-þ+,+Yrì‡pþCo (+   (rü‡pþCo (+   ((ë (ë (K *u9º{÷9Šo. (ê+sŒ (î+{ô[X(ï+þþr ˆp((I (ï( (U Þu ,oI &Ü&Ü*rˆp((r 3( **(n (¿(u ,(º (2 +,( *(P ({ö,g oœ  [ sŽ ( Ži-+  þþ,* s (h+(ð+(H (ï( **(P (E *(P (F *tñ(Ü þþrñ‚p((ê+(ñ+( (U *tó(á  (ò+ (ó+(G *tô  (M+- (º (¤ +9Iúÿÿ(ä  (ã  r܆p(ë ,Z (ã+(ž (Ÿ   (R (ê+(ô+(õ+{ôY(ö+(ë (I *(P r—bp(*ã`C0 G• (÷+s  {õs†   {ó(ø+Œ(S *0Ë–9¿(N+:;(M+:J(Ï+:(W+:ï(V+:Ä(T+:£(U+:x(R+:M(S+:"(P+:÷(Q+:Ì(Í+:¡(Î+:w(L+-[(O+-0o Þ#t r ˆpo& (+ rÀ‡p(+ Þ*¥* r]…p(L (+ r]…p(+ *¥v,r½…p*rÇ…p*¥ˆ þˆo rLˆp(+ *¥‰þ‰o r?yp(+ *¥z{ð(¡ rRˆp(+ *¥y{ð(¢ rÉep(+ *¥|{ð(£ rXˆp(+ *¥{{ð(¤ r^ˆp(+ *¥}  {ð(¥ rbˆp(+ *¥C  {ð(¦ *¥Y  {ð(§ rfˆp(+ *¥~  {ð(¨ r÷„p(+ *¥!  rbp{ð(@ rjˆp(+ *¥w(D , rnˆp8¾(© , rvˆp8ª(ª , rŠˆp8–{î(   þþ,{î( gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(«   {ð(¦ rœˆp(+ +{î{ð(C ríwp(+ *¥x{î{ð(E (F ,rnˆp*(¬ ,rvˆp*(­ ,rŠˆp*{î( g3s– (O+, rœˆp(+ **rbp*¦ °#0{ò-*{òs˜ (; *0{ïsš (\ (ù+*0sœ (\ (? *0—(7 (p (ú+(] *0—(7 (p (ú+(^ *0(p (ú+(^ *0 sc *0(a }}}*0{*0{*0{*0&*(® *0 R˜(¯ (° ( r¢ˆp((ñ( rB‡p((ñ( (ï( *(± *0 i™(² (³ ( r¢ˆp((ñ( , ( + r¦ˆp(rB‡p((ñ( (ñ( *0sm € sm €*0(a } *0~*0 (r þ*0~ *0 (r þ*0{ *0‰þ, (r 3 * **0 (¿(s *0.šþ,uÍ ,{  {  þ**þþ*0*]þ,þ,{  {  þ**þþ*0›uÍ ,(v **:(ê }´ *0‰{´ {€ þþ*V(µ }}*0 1{(º { 4{( þoà *²(¶ }}}}}*0 *{{{{{þ(R *:(· }¸ *0{¸ Œnþo¹ *:(º }» *0{» (p þo¼ *²(¶ }}}}}*0 *{{{{{þ(R *r(½ } }!}"*02{"{!X3*{ (¾ ŒXs¿ (À *Ò(½ }#}$}%}&}'}(*0`‰{&{$X {(þþ,+{'{%X þþ,*{#{((Á ŒXs¿ (À *0L( })}*}+},}-}.}/}0 }1*0 ^{,{+(ê+{-{.{/{0{1(V {*(ë+{1{){ô(ì+(I *V(à }2}3*0)‰{3{2X þþ,*XsÄ (Å *:(Æ }4*0'{4oK ,{4oM sÇ (È **0 (a &*0¥o² ¥o² (Ý *ò(É }5}6}7}8}9}:};*0{œo² {5{6{7{8{9{;o² {:(º  4{:( oà (R ( Þ t  ÞsÊ *ai Ò(Ë }Ì }Í }Î }Ï }Ð }Ñ *0 S(q (p {Ð (P {Ì {Í {Î {Ï {Ð {Ñ Œo(R sÒ *:(Ó }Ô *0{Ô Œn(D *(L *0( ,*-þ*:(Õ }C*0{C([ *:(Õ }D*0{D([ *:(Õ }E*0{E([ *0%o$ ,+o% ,+o& þ*0;(ž ,1oÁ ,oÁ ,o o þoR **þoR **0~w*0~x*0~y*0~z*0Nž(|,C(„ Ži12ÐU(¶ oÁ , o +£¦(rþ(Ÿ ***0 s¦ €G*0(a }F*0s½ *0 (³ þ*0~G*0 (³ þ*0s» *0 (³ þ*0s¹ *0 (³ þ*0s¶ *0 (³ þ*0s´ *0 (³ þ*0{F*0(¦ }N*0{N*0(¦ }O}P*0{O*0{P*0(¦ }Q*0{Q*0(¦ }R*0{R*0(¦ }S*0{S*0(a }T*0 {T{N*0(a }U*0 {U{O*0 {U{P*0(a }V*0 {V{Q*0(a }W*0 {W{R*0(a }X*0 {X{S*0 sË €Z*0(a }Y*0sè *0 (Ú þ*0~Z*0 (Ú þ*0så *0 (Ú þ*0sâ *0 (Ú þ*0sà *0 (Ú þ*0sÝ *0 (Ú þ*0sÛ *0 (Ú þ*0{Y*0(Ë }b*0{b*0(Ë }c}d*0{c*0{d*0(Ë }e*0{e*0(Ë }f}g*0{f*0{g*0(Ë }h}i*0{h*0{i*0(Ë }j*0{j*0(a }k*0 {k{b*0(a }l*0 {l{c*0 {l{d*0(a }m*0 {m{e*0(a }n*0 {n{f*0 {n{g*0(a }o*0 {o{h*0 {o{i*0(a }p*0 {p{j*0¡(3 (|,D(3 (š (Ö (× (s sü  (û+(q(ü+(Ò *(3 (…,6(3 († (3 (ž sþ  (û+(ü+(Ð *(3 ({,m(3 (ƒ Ži†Y26 £o² o» sØ ¤†XX3Ê(ü+(Ô *(Ì *0F–,<(º (z,(‘(ý+(Ø *(},(Ö *(ù *(Ì *0_'Œ ,(ú *Ð(¶ ÐW(¶ (Ÿ ,rfp(Ù (Ò *Ð(¶ (Ÿ ,(Î *(Ì *(Ú *0o² sØ *(Ú *0o² sØ *0<¢ uº-u»-t¹( *tº(*t» (+Ä0<¢ uº-u»-t¹(*tº(*t» (+Ä0)( ( ,+( ( (*0 (*0 (*0 (*0 (*0 (*0~r*0C£u¹,9t¹ ( ,*(,"(  u) , rv^p(ë ***0(í( *0~s*0~t*0~u*0~v*0 (*0 ( ,*( ,*þ(þ+*0(ñ( *0(ï( *0(ï( *0(ï( *0s0 þ( *0s2 þ( *0s4 þ( *0=¥uˆ,3tˆ (Ü (Ý oÞ (ï( +Å*0E§uˆ,7tˆ (Ü u‰, (Ý *(Ü (Ý  ( *( *0 s6 ( *0 s8 ( *0 s: ( *0s< ( *0/rU`p(r}`p((ñ( (ñ( *0rñ‚p(( ( *0G¨uˆ,9tˆ (Ü u‰, (Ý *(Ü (Ý s> (ÿ+*( *09©,) ({ rç‚p(oß (ï( *rfp(*0Frybp(rB‡p((+( rƒbp((ñ( (ñ( *0/rybp(rƒbp((ñ( (ñ( *0/r:‡p(r>‡p((ñ( (ñ( *0‚ªoà ,rn‡p((ê (ë *oá ,N (ó ( (ó (Ž 0rn‡p((ê (ë * oß Y(+(ë *(ê *0®   (+*0sâ (+*( *0(ï( *( *0(ï( *( *0(ï( *( *0(ï( *( *0(í( *( *0(í( *( *0(í( *(ã *0rñ‚p((ñ( *(ã *0rB‡p((ñ( *(ã *0*:(ã }q*0{q(ñ( *( *0 þ( *(ê *0*0Ärv^p(€rs( €ss* €ts, €us. €vв(¶ €x(¡ oÁ , (¡ o +(¡ €wМ(¶ €z(£ oÁ , (£ o +(£ €yrbp(€{rªˆp(€|*(ä *0*0 r°ˆps= z0 r°ˆps= z0 r°ˆps= z0 r°ˆps= z0 r°ˆps= z0 Ю(¶ *0~~*0~*0~€*0~*0H¯þ (M oå ,*(K %ŒY¤(æ (M oç *0$°(M (; (O  Þ (M (> &Ü*  0I¯þ (N oè ,*(L %Œ)¤oé (N oê *0$°(N (; (Q  Þ (N (> &Ü*  0!(P (Ó+*0!(P (Ó+*0j(P (Ó+*0 (P (Ó+*06¯þ (N oè ,*(ጮ (N oê *0$°(N (; (W  Þ (N (> &Ü*  0 (R (Ó+*0Ò² €Í~Í /(bré…psx z­  Y  2 (Å ¤­ X X3é€ÎsÁ€ÏsÁ€Ð(J %ÐY(¶ ¤oë €~(J rôˆp%Ð)(¶ ¤oì €sí €€sî €*(ï *0 (Í*(ï *0 (Í*0-- !*]- Z[+áZ[(_ Z*0%-*]- Z[+éZ[(` Z*0/¾  {ËY 2{Ì£CbX X X3å*0 /**0 /**0*0 *0 ÿÿÿ*0 !*0 !ÿÿÿ*0 !ÿÿÿ*0 ÿÿÿ*0 ÿ*0*0 ÿÿÿ*0 ÿÿÿ*0 ÿÿ*0*00*0³{Ë{Ì of ¥s®*0)‰3+£C þþ,X*Y+×0‰{Ì{ËY(s  (­*0*0*0*0u´/+  /!(+s® {̤C(t *(+s®  +#{Ì (` [ ]¤CX 2Ù(t *0eµ!/ !+ (+s®  +,{Ì!(_ [!]i¤CX 2Ð(t *0I¾{Ë3 {Ì£C* {ËY  0{Ì£C ZX Y Y3á*0~”*0~•*0L¶{ËX (+s®  {ËY 2${ÌX{Ì£C¤CX X3Ü*0d´{ËY þþ,(| *{ËY (+s®  {ËY 2${Ì{ÌX£C¤CX X3Ü*0o‰/i{Ë/{Ì£C+{Ë/{Ì£C+XX {Ì ÿÿÿ_¤CXd+’*05Ú{Ë{Ë(b X (+s® ( (t *0¼]<¬{Ë/{Ì£C+{Ë/{Ì£C+YX 12{Ì ÿÿÿ_¤CXd8ˆÿÿÿ X {Ì ÿÿÿ_¤CXdY8Lÿÿÿþþ*0;Ú{Ë{Ë(b  (+s® ( ,(x *(t *0 {Ëþ*0 {Ëþ*0{Ë3{Ì£Cþ**0&3*£C£C3 Y+Ý*0+{Ë{Ë3{Ì{Ì{ËY(† **0T]3*/+ Y£C /+ Y£C 3Y+´/**0K]{ËX{ËX/*{ËX{ËX1*  {Ì{Ì{ËXY(ˆ *083*£C£C3 Y+Ü£C£C/**0;{Ë{Ë/*{Ë{Ë1*{Ì{Ì{ËY(Š *0 (‹ þ*0 (‹ þ*0‰(‹  þþ*0‰(‹  þþ*0(‹ 3**0(‹ 3**0@·£CjX d !ÿÿÿ_i ¤C!1 X+Á*0]¸{ËX (+s® j {ËY 2+{Ì{Ì£CjZ(’ X X3Õ(t *0D¹(+s® jjZ {Ì!ÿÿÿ_i¤C{Ìdi¤C(t *0Fº!18{Ì£CjX {Ì!ÿÿÿ_i¤CdX+»*0™»{Ë X (+s® j !Y2S{Ì£CjX{Ì£Cj ZX{Ì!ÿÿÿ_i¤CdXX3­(• (t *0è¼{Ë{ËX (+s® {Ì {Ì {Ì{ËY?™ £Cj!  {ËY   2P £Cj  £CjX ZX   !ÿÿÿ_i¤C d X  X   X3° (• XX@gÿÿÿ(t *0r½{Ëþ {Ëþ ,+,{Ì£C{Ì£C(” *,{Ì£C(– *,{Ì£C(– *(— *0 z¾(` [[ /(bré…psx zC  Y 2   Z(` ¤C X  X3à sÙ *0~–*0?X(š Ži/(š X£{‡þ+, X+Í(š £*00] (š £{‡ þþ, r‰ps= z(› *0~—*0~˜*0~™*0~š*0~›*0~œ*0+‰-*(Ÿ Y£C_ þþ,*Y+Õ0 ‰ (£ *00{Ë-*{ËYZ{Ì{ËY£C(¤ X*0¿{ƒXY [ [ .n{Ë/{Ì£C+ {Ë/{Ì£C+]Y _c_b`( {ƒ£C_*{Ë/{Ì£C+ ] _c( {ƒ£C_*0 J‰{†3+þ,*(¦  ¤}X{ƒX+¶00Â{†(+ {ËZ   (§ *08à  +£} þþ, +X Ži2ß{ƒZXXX*0 ŒÅ{†3*2+%{Ì£}j(¡ £YZ(’ X {ƒX 2XYsÄ + sÄ (ð (ñ 8tÿÿÿ0 9Æ(© [X (+s®   (ª (t *0IÇ(¥ (¥ X (œ  (¨  (¨  {†{… (í (« (t *0*0ÐÈ{Ë {Ë (b  >©[ {Ë(c {Ìs® (~  {Ë(c {Ìs® (~ (+(€ (€ (+ (+   (€ (‚     (} (€ (} (€ *(˜ *0sÚ (® *0~*0~ž*0~Ÿ*0d‰{Ë{ËX (° /+{Ë(± þ,+{Ë(± þ,(˜ *(² /(¬ *sÜ (® *0É{Ì {ËY {Ì {ËY j£CjZ!1+ þ9¼1 rp‰ps= z!ÿÿÿ_i  d X£C   þþ,XX£CY¤C+,XX£C YX¤C!X /X£CjZX+X8(ÿÿÿ(t  *0 Ê{Ì {ËY {Ì {ËY j£CjZ!1+ þ9µ1 rp‰ps= z!ÿÿÿ_i  d X£CY/XX£CX¤C+,X X£CYY¤C!X /X£CjZX+X8/ÿÿÿ(t  *0ÅË{Ì {Ì -F3£C£C[8|£Cj!ZY£CjX£Cj[i+PX3£C£CX[+4£Cj!ZY£CjX£Cj!X[i -(‰  þþ,***0(]{ËY {ËY X/*(¶ *0ÁÌ(r  {ËY{ËYYXX (+s® {ËY {ËY  Y-f(· 1(´ ({ (µ +Í-þ+- X3 Y+©YY +œ8–ÿÿÿ(t (t só *07{Ë-sô z{ËY{ËY/ (| só *(¸ *0(¹ (Ö *0(¹ (Õ *0%Í(| (‡ ,*(¹  (Õ +Û0(‹ 3(¼ *(¼ *0~ *07-*]-(³ [+â(³ (³ [+É0({ (¿ *0UÎ{Ë-*(¾ (¹  (Õ (Ö {Ë-(³ +Â(³ (³ +«0({ (Á *04{Ë3*{Ì£ClZXZX+Ì0'Ï l   ##ð?(à *0(x *0(y *0i]{ËEsÔ z*{Ì£C*{Ì£C {Ì£C  ÿ1sÔ z ÿÿÿ_ ÿ_bX*0À¾{ËEMsÔ z!*{Ì£Cj*{Ì£C {Ì£C  ÿÿÿ_j ÿÿÿ_jbX*{Ì£C {Ì£C {Ì£C  ÿÿ1sÔ z ÿÿÿ_j ÿÿÿ_jbX ÿÿ_j0bX*0<{ËY1sõ (ö *sõ (ö X(³ +Ä0³Òu”,qt” (÷ (ø (ù (¹  (Õ  (Ö , {Ëþ+,+¢(+8‡ÿÿÿ(z ,þ+,*rbp( ¥B(ß (z *0HÔ{ËY  (ú  (x (É  (ç (+ u–,r“ep* (Ÿ+(+ *0[Õ3*( i0iY 0  þþ+,%(³ (x (€ X+°r fpsØ z0@Ö( (û ,rõ‰prŠpsx z (x    (x (Ì *0‰{Ë þþ*0{Ë/ {Ì£C**0F×(‡ ,*(€  (x  (¹ (Ö (Ð ({ (€ (Ð (³ *0 ({ (Ð *0{ƒ*0{„*0{…*0{†*0{‡*0{ˆ*0{‰*0<(a }ƒ}„}…}†}‡}ˆ}‰*(ü *0 (¯ *(ü *0 (³ *0%-*]- Z[+éZ[(Þ Z*0~Š*0~‹*0~Œ*0~*0~Ž*0~*0~*0*0 Ø3£}¤}*[ nnZ!x^m X Z(ç ZX(ç  Y?¢X£}X£}X   nnZ!x^mX x^¤}X   nnZ!x^m xXY x^¤} nnZ!x^m XX@^ÿÿÿ*0 ‘Ù(å !Y(÷  (å !Y(÷  (+  (ç  Ži} Y2/ £} nnZ!x^m¤}XX3Ñ *0*0~‘*0~’*0"Ú£} £} nnZ!x^m*0 ¡Û(à (ã Y(Þ (ö  (+ (ç  (+  (ç  /(bré…psx z} Y2 (ì ¤}XX3á (è *0*0*0~“*0 x*0 !x*0*0*0*0N×-*]-nnZ!x^m[+ÜnnZ!x^m[(ö  nnZ!x^m*0f×-*!]-!nnZ!x^m![+ÌnnZ!x^m![(÷  nnZ!x^m*0 "‰!x AzBsý €Š(ß (þ €‹(ß (ÿ €Œ(ß ( €(ß ( €Ž(ß ( €(á €C€’ +(ë (Þ ¤CX 2å(ë €‘ ð x^€“(x €”(x €• %  (™ ¤%  (™ ¤%  (™ ¤% @ (™ ¤%  P(™ ¤%  (™ ¤%  (™ ¤% @ (™ ¤%   (™ ¤%    ((™ ¤%    (™ ¤%  @ (™ ¤%   Ð(™ ¤€–C€˜ +(ž (` Y¤CX 2ã(ž €—C€š +(  (` ¤CX 2å(  €™Y€œ +(¢ !(_ ¤YX 2Ý(¢ €› ú[€ }[€ž(š £{‡[€Ÿ(x € *0} (a &*0({ { {Æ Œn¥T( }Æ *0({ { {Æ Œn¥T( }Æ *0} (a *0{ þoÍ *0} } (a &*0{ (+{ þo  *0}  (a &*0({  {  {É Œn¥T( }É *0({  {  {É Œn¥T( }É *0(Ýs  þ  s  (+o s *0} (a *0{ þoÍ *0} } (a &*0{ ( +{ þo *0} (a &*0${ { ( ( ¥û( *0${ { ( ( ¥û( *0(Þs þ s ( +o s *0*0%o$ ,+o% ,+o& þ*0;( ,1oÁ ,oÁ ,o o þoR **þoR **0~Â*0~Ã*0~Ä*0~Å*0 *0 *0 *0*0=ߎi   Y  2%  £) `oS ¤ X X3Û*0"ý `oS , s[ ( **0\à,þ, Žiþ+,*þ, Žiþ+,£ ( +( *(‰rŠp(ì oí s, z0^},þ, Žiþ+, rOŠps= zþ, Žiþ+, £( +*(‰rŠp(ì oí s, z05ä Ð.(¶ o± (  , ( (P_þ**02åÐ.(¶ o± (  , ( (P( **0«èr‘Špo  9‚s]  s_  `o! ( +  ( + Ži^Y2:£o" ¥Co² sB ¤^XX3Æ*sa `oL ( +*0Eé(  sc (+ Ži3*o  ,o# ,o6 þo· ***0LëÐW(¶ ( ,se *У(¶ ( ,sg *(  ¥¤(+ si *0qîÐW(¶ ( ,+У(¶ ( ,*(  ,9 ($ _3' _  þþ, _þþ****0 –( ,*oA ,+â*0 » (! *0 –( ,*oA ,+â*0 » (# *0ùðÐW(¶ ( ,AE r›Šps= z)( *)%r™gp¤)( *У(¶ ( ,ME r›Šps= z)( *)%rÉŠp¤)%rÓŠp¤)( *(  ,3sk  sm so  `oœ (+(+ (+**0ñ(%  sq *0^ôÐW(¶ ( ,ss *(  Ži þþ,su *rÝŠp(  -sw * (% sy *0*ýrÝŠp `oS ,*råŠp`þoÊ *0ñ(%  Žiþ*0”õ( o () ,róŠp(+ +9У(¶ ( ,+ÐW(¶ ( ,+ rýŠp(+ `oÊ ,*(‰r‹p(ì oí (¾ s, z0ö(*  s{ *0‰2Œ,+ r9eps´ z( -h `( ,.o½ (‰rE‹p(ì oí (¾ r9epsx zo½ (‰rg‹p(ì oí (¾ r9epsx z*0~Æ*0~Ç*0~È*0~É*0~Ê*0~Ë*0~Ì*0~Í*0~Î*0~Ï*0~Ð*0~Ñ*0~Ò*0~Ó*0~Ô*0~Õ*0~Ö*0Š(. ( ,+ (0 ( ,+ (2 ( ,+ (4 ( ,+ (6 ( ,+ (8 ( ,+ (: ( ,*(< þ( *0*0*0M÷Ži YEÂÐÞìú?˜  +  X£¤ X 2è ŽiY YXY2!X£¤XX3ß (A (< %¤(+þo· *(‰rƒ‹p(ì oí   r­~psx z(. þo· *(0 þo· *(2 þo· *(4 þo· *(6 þo· *(8 þo· *(: þo· *0Œø(> -.o½ (‰rÓdp(ì oí (¾ rmcpsx zo6 Ži3E+X£¤X2â £ (B (+**0B]X /#r§‹p rbp( ¥B(ß (+ *3r±‹p*(& rv^p*0Òú(& s}  of ¥¥ (+ Ži þþ(& Ži ) Y2$£o² ¤)XX3ÜŽi /(bré…psx z ) Y2(C ¤)XX3â(+(& *0züo' (D  `Ži  Y2# £o9 ¤XX3Ý oW ŒR,+ rmcps´ z*0 (E  s *07ýŽi   Y  2  £o» ¤ X X3á*0Aÿo6  oœ (D  s  Ži/*£ (H sƒ *00o6 (F  Ži/*£ (I   s… *02o6 (E  Ži/s( *£( s( *0A)Ži þþ,*rïdpo½ þCo ( repsx z£*0}/*rïdpo½ þCo ( repsx z oœ (D  /(K s) *o6 (K £Ys* (+ s) *0]Ð(¶ ( -.o½ (‰radp(ì oí (¾ rmcpsx zo6 ££s, *0(  , ($ _þ**0&–Ð(¶ ( ,*oA ,+Ü*0Xî(  ,K ($ _3+ _  þþ, _þþ++, (> þ***0)s‡  s‰  `oœ (+ (+*0ñ(Q  s‹ *0vü(Q  `Ži  Y2# £o9 ¤XX3Ý oW ŒR,+ rmcps´ z*0 (S  s *0Fî(  ,9 ($ _3' _  þþ, _þþ****0&–Ð(¶ ( ,*oA ,+Ü*05(U , þoA *(" ,($ *(O ,(V **0s2(U -h `(U ,.o½ (‰r»‹p(ì oí (¾ r dpsx zo½ (‰rå‹p(ì oí (¾ r dpsx z*0}2Œ,+s´ z(P -` `(P ,*o½ (‰r Œp(ì oí (¾ sx zo½ (‰r/Œp(ì oí (¾ sx z*0F2Œ,+s´ z(> -*o½ (‰rÓdp(ì oí (¾ sx z*V(^ }«}¬*0 {¬ {«`þo- *(. *0&]o" ¥C o" ¥C /*þ*(/ *0oD , þo0 **:(1 }­*0Ú Ð.(¶ o± (  9¸ ( (P_@žo² {­У(¶ ( -{­ÐW(¶ ( þ+, ( þ+,( rýŠp(ë +,( YYX( + (QsB (2 ***:(3 }®*0!)(= (> {®3(¸ **(4 *0<¾E"((‰rMŒp(ì oí rcŒpsx zrfp*rç‚p*(4 *0<¾E"((‰rMŒp(ì oí rcŒpsx zræ†p*r܆p*:(4 }¯*0{¯(5 *(6 *0H Ð.(¶ o± ( (Q  Ð.(¶ o± ( (Q /*þ*:(ž }°*0'  Ð.(¶ o± ( (R{°þ*(ž *0( *V(7 }±}²*0 Iý{²Ži   Y  2, {² £{±o- ¤ X X3Ô*(8 *0,**(8 *0*V(8 }³}´*0 Jö{³råŠp{´`%{³¤oP %¤oé ¥C*:(8 }µ*0{µo9 ¥C*V(: }¶}·*0 {· {¶`þo; *(< *0 þo² *V(: }¸}¹*0 {¹ {¸`þo= *:(7 }º*0{º(G *V(7 }»}¼*0 L {»(G  {¼£o¼   +  X£¤ X 2è(”+*V(: }½}¾*0 œ {¾ŽiY YX  Y2 X£¤XX3à o¹ {½  + X£¤X 2è %¤(”+þo¹ *(6 *0H Ð.(¶ o± ( (Q  Ð.(¶ o± ( (Q /*þ*(ž *0( *:(7 }¿*0 Aý{¿Ži   Y  2$ {¿ £o» ¤ X X3Ü*V(: }À}Á*0 {Á {À`þo= *01¾,*,(º *(‰rkŒp(ì oí r;cpsx z0в(¶ €Ã( oÁ , ( o +( €ÂМ(¶ €Å( oÁ , ( o +( €Ä€ÆЬ(¶ €È(/ oÁ , (/ o +(/ €ÇÐu(¶ €Ê(1 oÁ , (1 o +(1 €ÉЭ(¶ €Ì(3 oÁ , (3 o +(3 €ËЮ(¶ €Î(5 oÁ , (5 o +(5 €ÍЯ(¶ €Ð(7 oÁ , (7 o +(7 €Ïа(¶ €Ò(9 oÁ , (9 o +(9 €Ñб(¶ €Ô(; oÁ , (; o +(; €Óв(¶ €Ö(= oÁ , (= o +(= €Õ*(® *0,**:(> }Ø*0{Øsp*:(? }@ *0{@ Œno9 (+*:(^ }Ú*0{Úþo» *0 {A þ*0{B {A (+*0 (C *0 ~D (C *0 (E *0 (F *0(G *0 (H *0(I *0{A þ(+*0~D *0{A þ(+*0{A þ(+*0 (J *0 (K *0{A þ(+*0{A þ(+*0 (+*0{A (+*0 ¥fsˆ *0(M *0 {A (+*0 {A (+*0¥f*0sˆ *0 ¥fsˆ *0sˆ *0(M *0¥f*0 {A (+*0 {A (+*0 (N *0{B {A {A þ(+*0{B {A {A þ(+*0{B {A {A þ( +*0{B {A {A þ( +*0 {A (!+*0 {A ("+*0{B {A (+*0{B {A {A þ(+*0 (N *0#  u³- u´-**t´(O *0*04¾- -(P *(#+ (#+ /+ X(Q *0r(#+ (#+ X>¥u´9t´ (R (S (T (#+X1Su´,?t´(R (S (T  ($+  ($+($+*r‘Œps= z($+ ($+*r‘Œps= zX>£u´9t´ (R (S (T  (#+X1R u´,? t´(R (S (T  ($+ ($+($+*r‘Œps= z ($+($+*r‘Œps= z($+*0¥u³-Y9‹t´ (R (S (T  oU /(%+ (&+*-* (%+(&+*t³(V  oU / (Q *-*(Q *(P *00  u³- u´-R (%+*t³   ," u³-$ (V (%+(%+* (%+* (V +Út´   u³-  u´-$ +Ìt³  (V (%+(%+*t´(R (S  (R  (S (T (T (O  (O   X /('+(&+* X /('+(&+*($+*0  u³:® 9åt´ (R (S (T  oU /5((+(W (X (Y  ('+sZ *- sZ *((+(W (X (Y  ('+sZ *t³  (V  oU / sZ *- sZ *sZ *sZ *0†u³-u´- r¥Œps= zt³ (V s[ *t´ (R (S (T  - s[ * ()+(\ (] ($+s[ *0µu³- u´-!*t³ (V oU -**t´ (R  (S  (T oU /(*+(&+*---*-*()+(] (\ ($+*(*+(&+*0vu³-L,dt´ (R (S (T  oU / +¹-*+¨t³(V  oU þ**0]u³-9,Lt´ (R (S (T (+ o— &+»t³(V o— &**0 au³-:,Ot´ (R (S (T  (+(+++ºt³(V þ(++**0eu¹->,Stº (^ (_ (` (,+ (-++¶t¹(a þ(-+**0hu³-A,Vt´ (R (S (T  ob , (++,+µ*t³(V þob **0hu³-A,Vt´ (R (S (T  ob ,+(+,*+³t³(V þob **0sc þ(+*0"sd (+,se þ(+**0 ƒu³-Q,qt´ (R (S (T  ob ,  (%++(.++£t³(V  ob ,  (%+***0 _u³-:,Mt´ (R (S (T  (*+(/++ºt³(V (*+**07 u³-',(t´ (R (S X(++ÏX**0T9u³:t´ 9Êu³:Ât´ (R (S (R (S (T (T (O (O   1:((+  (W   (X   (0+ (0+('+*((+  (W   (X    (0+ (0+('+* *t³   (V (%+* *t³ ,u³-  (V (%+* +¬  (V +å0…u³-R,st´ (R (S (T (1+ (+,  (%+++¢t³(V  (+,  (%+***0*ob ,(%+sf *(%+sf *0 ™!sf u³-h,~t´ (R (S (T (2+ (g (h (3+(g (h 8ƒÿÿÿt³(V (3+**0`u³-/,It´ (R (S (T si (j *t³(V si (j *(k *0”#(4+ uÂ, þol *tÄ(m (n tÄ(m (o tÄ(m (p  oU / sq +-(5+þol *8lÿÿÿ0sr þ(6+*0”#(4+ uÂ, þol *tÄ(m (n tÄ(m (o tÄ(m (p  oU 1 ss +-(7+þol *8lÿÿÿ0st þ(8+*05$ u³-,&t´ (S (T +Ùt³(V **0H%u³-',6t´ (S (T (9+(­ *t³ (V (­ **05$ u³-,&t´ (R (T +Ùt³(V **0H%u³-',6t´ (R (T (:+(­ *t³ (V (­ **03&(5+ -!(‰róŒp(ì oí r^ˆpsx z({ *03&(7+ -!(‰róŒp(ì oí r^ˆpsx z({ *0³)uÉ9¢tÉ (u u³-u´-)(v +Ç(u t³ (v (V *(u t´(v (R (S (T (O  (P (w (w (w 8Sÿÿÿ(x *0(x (w (;+sy *0(‰rp(ì oí s, z0(‰rKp(ì oí s, z0V*{z ,G{{ uÌ,(<+*tÉ (u u³,(u t³(V *rps= z(=+*0+{z ,j{{ uÌ,*tÉ (u u³,:(u t³ (v (V  (;+(| {{ uÌþþ*rŽps= z(} {{ uÌþþ*0-(>+s~ s *0 .uÉ9htÉ uÉ9TtÉ (u u³:Ôu´:(u u³-&u´-Z(v (v  8…ÿÿÿ(u t³(v (V (P (w (w 8Hÿÿÿ(u t´(v (R (S (T (Q (w (w 8ôþÿÿ(u t³(u u³-<u´:~(v (V (P (w (w 8šþÿÿ(u t³ (v (v (V  (V   oU   , * 8Lþÿÿ(u t´(S -a(v (v (V (R (T  (S  oU   , * (w (w 8Õýÿÿ(v (R (S (T 8•þÿÿ(u t´(S :o(u u³-Su´:«(v (R (S (T (Q (w (w 81ýÿÿ(u t³(v (v (R (T (V   oU   , * (w (w 8Íüÿÿ(u t´  (S -j(v (v (R (T  (R  (T   (S   oU   , * (w (w 8Müÿÿ(v  (R  (S  (T 8 ýÿÿ(u u³-0u´-I(v (R (S (T 8þÿÿ(u t³(v (V 8[üÿÿ(u t´ (v  (R  (S  (T 8vüÿÿ*uÉ,**0---**-*(x (w (x (w (?+*0Yu³-5,Gt´ (R (S (T  (@+(ð +¿t³(V (ð **0 (ñ (@+*0/s† s€ þ(+*00(+ (A+ (B+*0"oK ,o (%++à*0+2oò (C+ Þu  , oI &Ü&Ü* 0s‚ (D+*V(ê }ƒ }„ *0{ƒ {„ (v+*V(ê }… }† *0{… {† (v+*V(ê }‡ }ˆ *0{‡ {ˆ (v+þ*V(‰ }Š }‹ *0-{Š {‹ ([ þoŒ **(‰ *0*V(‰ } }Ž *0-{ {Ž ([ þoŒ **(‰ *0*0{ *0{ *0} *0} *0(a } } *0}‘ }’ (a &*0{’ {“ (E+Œn*0{’ {“ (F+*0{’ {‘ (G+(” *0*0{’ {“ (E+*V(1 }• }– *02{• {– {€ ¤n{– {– {€ X(‚ *:(— }˜ *0{˜ (s+*:(™ }š *0{š þ(H+*V(œ } }ž *0{ž { oÑ (I+*(Ÿ *0 (¡ *(Ÿ *0 (  *0 {¡ þ*0 (¢ *0{£ {¡ (J+*0{£ {¡ (K+*0 (¤ *0{£ {¡ (L+*0{¡ þ(M+*0{¡ þ(N+*04{¡ (N+ ,(¥ *s¦ z0{¡ þ(O+*0 (§ *0 (¨ *0{¡ þ(P+*0{£ {¡ (Q+s© *0(ª {¡ þ(R+*0(« {¡ þ(S+*0s¬ ¥ä(T+*0s­ (U+(V+*0s® (U+(W+*0(¯ *0(° *0°({+ (X+s± *0 {¡ (Y+*0 {¡ (Z+*0(¯ *0(° *0([+*0(U+*0 {¡ (Y+*0 {¡ (Z+*0~² *0 (\+*0 (]+*0{£ {¡ (L+*(³ *0(m (n so *:(´ }µ *0'(q (p {µ (^+,([ **:(´ }¶ *0'(q (p {¶ (^+,([ **0#6 ué- uê-**tê(· *06¾- - (¸ *(_+ (_+ /+ X(¹ *0 §8(_+ (_+ X>¾uê9¨tê (º (» (¼ (½ (_+X1auê,Mtê(º (»  (¼  (½   (`+   (`+(`+*r‘Œps= z(`+ (`+*r‘Œps= zX>¾uê9¨tê (º (» (¼ (½ (_+X1auê,Mtê(º (»  (¼  (½    (`+  (`+(`+*r‘Œps= z (`+(`+*r‘Œps= z(`+*0>9 ué- uê-*X*tê (» (¼ X(a++Â0 Ñ;ué-uê-E(¸ *té (¾ oU / (¹ *-(¸ *(¹ *tê (º  (»  (¼  (½ (· oU /(b+(c+*- (¹ *(b+(c+*0Ÿ<ué-uê-0s¦ zté (¿ (¾ oU -*s¦ ztê(º (» (¼ (½ oU /8uÿÿÿ -*8aÿÿÿ0¡<ué- uê--*té (¿ (¾ oU -(À **tê(º (» (¼ (½ oU /8xÿÿÿ -(À *8_ÿÿÿ0/(d+,(b+sÁ *(b+sÁ *0 ®>sÁ   ué-  uê-!*té (¾ (¿ (e+*tê (º (» (¼ (½ (f+ ( (à (e+( (à 8Rÿÿÿ0(d+, (b+**0 ?ué- uê-*té (¾ (¿ (g+*tê (º (» (¼ (½ (h+ (g+8ÿÿÿ0£A  ué- uê-&r¥Œps= zté (¾ (¿ sÄ *tê (º (» (¼ (½ -  sÄ *(i+(Å (Æ (Ç  (`+sÄ *0ÈBué- uê-!*té (¾ oU -**tê (º  (»  (¼  (½ oU /(j+(c+*-4-*-*(i+(Ç (Å (Æ (`+*(j+(c+*0~Cué- uê-*té (¾ oU þ*tê (» (¼ (½ oU / +–-* 8‚ÿÿÿ0rDué- uê-*té (¾ (¿ (k+&*tê (º (» (¼ (½ (M+(k+& +Ž0‡Eué- uê-*té (¾ (¿ þ(l+*tê (º (» (¼ (½ (N+-(l+-  8ÿÿÿ**0€Dué- uê-*té (¾ (¿ þ(d+*tê (º (» (¼ (½ (O+,+ (d+,* 8€ÿÿÿ0€Dué- uê-*té (¾ (¿ þ(d+*tê (º (» (¼ (½ (P+, (d++,  8‚ÿÿÿ*0ŠKuï- uð-$*tï (È (É oú (Ê *tð (Ë (Ì (Í (Î (Ï (m+oú  (m+(Ð *0ŽMué- uê-'*té (¿ (¾ (C+(Ñ *tê (º (»  (¼  (½ (· (Q+(C+(Q+(Ò *0Nué- uê-$*té (¿ (¾ þoÓ *tê (º (»  (¼  (½ (S+oÓ 8ÿÿÿ0Ruó- uô-$*tó (Ô (Õ þoÖ *tô (× (Ø  (Ù  (Ú (n+oÖ 8ÿÿÿ0S  ué-  uê-P*té (¿ (¾ oU oU  0 þþ+, þ(o+**tê(º (» (¼ (½ oU oU  /(p++ 0 þþ+, (o++ / 8þþÿÿ *0%T   oU 3*þ(p+*0Uué- uê-&*té (¿ (¾ sÛ (Ü *tê (º (»  (¼  (½ sÛ (q+(Ü 8ÿÿÿ0 (Ý (q+*0 (Y+(r+*0sÞ (s+*03VoK ,(oŒ ( (Ž (b++Ï*05W  +&£^ ( (Ž  (b+ X Ži2Ô*0[Yuø ,  (X+*uö ,   (t+*o‹ (u+Þu , oI &Ü&Ü*1 >0/s† sß þ(M+*0Æ\uú9µtú (à   ué- uê-1(á +Ç(à té (¿ (á (¾ *(à tê(º (á (» (¼ (½ (·  (¸ (â (â (â 8@ÿÿÿ(ã *0(ã (â (v+sä *0(‰rp(ì oí s, z0(‰rKp(ì oí s, z0g]{å ,X{æ uý,(w+*tú (à ué,$(à té (¿ (¾  sç *r„Žps= z(x+*0y^{å ,V{æ uý,*tú (à ué,&(á (v+(è {æ uýþþ*rps= z(é {æ uýþþ*0`(y+sê së *:(ì }í *0(q (p {í (R+*V(î }ï }ð *08{ï {ð {€ s« ¤Ø{ð {ð {€ X(‚ *0{ñ *0{ò *0}ñ *0}ò *0(a }ñ }ò *0}ó }ô (a &*0{ô {õ (z+ŒØ*0{ô {õ ({+*0{ô {ó (|+(ö *0*0{ô {õ (z+*(÷ *0 (m *:(ø }ù *0sú {ù ¥(}+*(û *0 (n *:(ø }ü *0sý {ü ¥ (~+*:(þ }ÿ *0?a{ÿ {^ (m (m o ,*(n (n þ(+*( *0(m Œn(n Œos!*0 (› *0 (› *0 (› *0 (› *0£¾/!(‰r›ep(ì oí r‡psx z/!(‰r›ep(ì oí rpsx z/!(‰r›ep(ì oí r“psx z/!(‰r›ep(ì oí r™psx zs *0c(€+  Ú 2jÚ 2TÚ29Ú2( XX3ãXX3ÇX X3¬X X3–*0 “c(€+  Ú ?yÚ 2`Ú2EÚ2)(+( XX3×XX3»X X3 X X@‡ÿÿÿ*0 ( *0( *0 (› *0 (› *0 (› *0 ( *0 ( *0|¾/!(‰r›ep(ì oí r‡psx z/!(‰r›ep(ì oí rpsx z/!(‰r›ep(ì oí r“psx zs *0ae(‚+  Ú 2KÚ 25Ú2( XX3æX X3ËX X3µ*0 ke(‚+  Ú 2UÚ 2?Ú2$(ƒ+( XX3ÜX X3ÁX X3«*0~¿(› (› (› Ú 2XÚ2=Ú2!( o— &XX3ßXX3ÃX X3¨*0 –g(› (› (› („+ Ú2dÚ2H Ú 2,   ( oú (  X  X3ÔXX3¸XX3œ *0 „¿(› (› (› Ú 2^Ú2CÚ2'( (…+&XX3ÙXX3½X X3¢*0œg(› (› (› („+ Ú2jÚ2N Ú 22    ( (†+(  X  X3ÎXX3²XX3– *0Ži*0Ih/(bré…psx (‡+&+  Y 2o ¤X X3è*0.¾/!(‰r›ep(ì oí ré…psx z*0Li/!(‰r›ep(ì oí ré…psx z  Ú  2 ¤ X X3î*0Žiþ*0*0Ö¾/!(‰r›ep(ì oí rŸpsx z/!(‰r›ep(ì oí ré…psx z/!(‰r›ep(ì oí r·psx zXŽi1!(‰rMŒp(ì oí ré…psx zXŽi1!(‰rMŒp(ì oí ré…psx z( *0'‰Ži þþ,*X£bŽiX+Ù00yŽi/(£b Ži ( XX+Ñ*0j(ˆ+ (‰+*0 lu ,  (Š+*(‹+(Š+*0;nŽi   Y  2  £o ¤ X X3â(Œ+*0(oŽi Ži X ( ( *0 of ¥b*0(+*0(Ž+*0(+*0(Ž+*0(¾Ži  Y 2£o— &X X3è*06pŽi d  Y  2  £oú ¤d X X3â*0lr( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx zY 2$££do &XX3Ü*0~u( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx zNY 2,££do ¤NXX3Ô*0 €w( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx zNY 2.££do ¤NXX3Ò*00y( Ži  Y  2  £o & X X3ç*0n{( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx zY 2&££do &XX3Ú*0F}( Ži d Y 2%£o ¤dX X3Û*0(/!£ob ,*X+Û*0Ži    (+*06/.££do ,*X+Í*0Q( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx z (+*0(2*£ob ,X+Û*0Ži    (‘+*062*££do ,X+Í*0Q( Ži Ži þþ,!(‰r'kp(ì oí rÏpsx z (’+*0MƒŽi þþ,(‰rÝp(ì oí s z£o ,( *X+³0…  (“+*00ƒŽi þþ,*£o - X+Ò*0…  (”+*0?‡s  +'£o ,  ( o +X Ži2Ó( *08‰s!  + £ ob , o" +X Ži2Ú(# *0PŠs! s!  +'£  ob ,  o" + o" X Ži2Ó(# (# s$ *0L‰Ži þþ,(‰rÝp(ì oí s z£ob ,£*X+´0‹  (•+*09‰Ži þþ,*£ob , £(­ *X+Ç0‹  (–+*0{ŒŽi Ži þþ,!(‰r'kp(ì oí rÏpsx z^ Y 22££d sÛ ¤^XX3Î *0¶ŽŽi Ži þþ,!(‰r'kp(ì oí rÏpsx zŽi þþ,!(‰r'kp(ì oí r psx z Y 2>££d£N s% ¤XX3 *0dŽi  d Y 2=£^( (Ž ¤¤dX X3Ãs& *0‚‘Ži  d N Y2Q£(' (( ()   ¤¤d ¤NXX3¯ s* *04’Ži   Y  2 YY £¤ X X3ä*09”(+  Ži Y 2£o, X X3ã*09–(-  Ži Y 0£o. Y Y3ã*0r˜(«  Ži Ži  þþ,#(‰r'kp(ì oí rÏpsx zY 0%££doÓ Y Y3Û*0rš(ª  Ži Ži  þþ,#(‰r'kp(ì oí rÏpsx zY 2%££do/ X X3Û*0.›(-     0 £o. Y Y3ç*0Lœ(-  XY(—+  0(£o. Y¤dY Y3Ø*0Nž(0  XY(˜+  2*£do1 YX¤X X3Ö*0‰Ži Y(™+*0‰Ži Y(š+*0R Ži -(arpsx z(2 £ Y 2£o3 X X3ã*0 -‰Ži -(arpsx zYY£(›+*0T¡Ži /*39££(œ+ 1£ £¤¤**(+(ž+*0 (Ÿ+*0 ( +*0jof ¥b (¡+*0jof ¥b (Ÿ+*0jof ¥b ( +*0(¢+*0(à+*0(¢+*0(à+*0@2(‰rÝp(ì oí s z£ob ,*X+À0Ži    (£+*0-2*£ob ,( *X+Ó0Ži    (¤+*0 (¥+*0)¢(¦+  + £  (§+ X Ži2ä*0/£(¨+  + £oú  (©+ X Ži2Þ*0P¢Ži-(arpsx (‡+&+£  +£   (ª+, +X Ži2Ý*0g¤Ži-(arpsx (‡+&+£ oú  +,£  oú («+, +X Ži2Î*0P¢Ži-(arpsx (‡+&+£  +£   (¬+, +X Ži2Ý*0g¤Ži-(arpsx (‡+&+£ oú  +,£  oú (­+, +X Ži2Î*0¥¦¥f Œf,+r#ps´ (‡+&oò (¦+ oK , o (§+ X+Ú-(`r#psx (‡+&+ (®+ Þu , oI &Ü&Ü*+_Š0«§¥f Œf,+r#ps´ (‡+&oò (¨+ oK ,$ o oú (©+ X+Ô-(`r#psx (‡+&+ (¯+ Þu , oI &Ü&Ü*+e0¤i/!(‰r›ep(ì oí r1psx z/!(‰r›ep(ì oí ré…psx zXŽi1!(‰rMŒp(ì oí ré…psx z  Y  2  X£¤ X X3æ*0 £*0 ¤*0l¨/!(‰r›ep(ì oí r·psx z/!(‰r›ep(ì oí ré…psx z XY 2¤X X3î*0(6 *0(]+*0(°+*0 (±+*0 (²+*0 (³+*0(+*0(Ž+*0(+*0(Ž+*0(ñ *06¾uÓ,"(‰rUbp(ì oí rGpsx ztË(í *06¾uÓ,"(‰rUbp(ì oí rGpsx ztË(7 *0(´+*0(µ+*0 uÓþ*0 (¶+*0^©uË,5tË (7 þþ,(7 (í -*Y+Ã(‰rQp(ì oí repsx z0YªuË,JtË (7 (í o , ( (í +¹+®(¡+*0(ï (·+*0 (¸+*0 (¹+*00*Y(ð +æ04¾/!(‰r›ep(ì oí ré…psx z(ñ (º+*0­uË,ntË u$,<t$ (7 (7 (8 (í o & +­(‰rsp(ì oí r¥psx zu$,Õ*0®(  (»+*0…­uË,ttË u$,Bt$ (7 (7 (8 (í o &X +§(‰rsp(ì oí r¥psx zu$,Õ*0¯(  (¼+*0dzuË9¤tË u$,rt$ u%,ct% (9 (7 (7 (: (8 (í o;    (< 8tÿÿÿ(‰rsp(ì oí   r±psx zu$,Õu(,Í(½+*0(= (> (¾+*0›´uË9€tË u$,Nt$ (7 (7 (8 (í o X (? +˜(‰rsp(ì oí r¥psx zu$,Õ(¿+*0( (@ (À+*0 (Á+*02µuË,(tË (7 (í o, +Ð*0¶uÓ,*(+  (Â+*0D·uË,tË (í (7 (Ã+*(‰rUbp(ì oí rGpsx z0B¸uË,3tË (7 (í o,   (í +Å(¡+*0¶(+  (ï (í (Ä+*0‚­uË,ptË u$,>t$ (7 (7 (8 (í o/ +«(‰rsp(ì oí r¥psx zu$,Õ*0¹(ª  (Å+*0'º   0£o. Y Y3ç*0 M»(- uË98tË (7 uË9 (7 tË (7 uË9Í(7 tË (7 uË9} (7 tË(7 uÓ,E(í  (í (í (í o. o. o. þo. *(Ž+  Ži   Y(Æ+* (í (í (í o. o. þo. *(í (í o. þo. *(í þo. **0 Q¼uÓ,"(‰rUbp(ì oí rGpsx z(2 (Ž+ Ži  Y Y£(Ç+*0;½ (ï (í    0! £o. (í Y Y3ß*0j¾uË,VtË (7 uÓ,!(í (++(ï (í (í *(- (Ž+ Ži Y(È+*(ï (í *0{¿(Ž+ (É+ Ži Ži  .#(‰rsp(ì oí r¥psx zY0(££doÓ YY3Ø*0À(« uË9ætË (7 uË9(7 tË (7 uË9ã(7 tË (7 uÓ9½u$9±t$(7 u$9—(7 t$(7 u$,{(7 t$(7 u$,_(8 (8 (8  (í  (í  (í      oÓ oÓ oÓ þoÓ *(Ê+*u$,ít$(7 u$,Ö(7 t$(7 u$,º(8 (8 (í  (í    oÓ oÓ þoÓ *u$9jÿÿÿt$(7 u$9Pÿÿÿ(8 (í   oÓ þoÓ *u$9ÿÿÿþoÓ *0 }­uË,ktË u$,9t$ (7 (7 (8 (í  þ(Ë+*(‰rsp(ì oí r¥psx zu$,Õ*0ƒ­uË,qtË u$,>t$ (7 (7 (8 (í o ,  +­*(‰rsp(ì oí r¥psx zu$,Ô*0!uÓ, u$,*( (Ì+*0 (Í+*0 (Î+*0ƒ­uË,qtË u$,>t$ (7 (7 (8 (í o ,* +«(‰rsp(ì oí r¥psx zu$,Ô*0!uÓ, u$,*( (Ï+*0KµuË,)tË (7 (í ob ,*+Ï(‰rÝp(ì oí s z08µuË,.tË (7 (í ob ,(­ *+Ê*05ÁuË,+tË (7 (í o -+Ï **0RÁuË,0tË (7 (í o , ( *+È(‰rÝp(ì oí s z0 (Ð+*0 (Ñ+*0(Ò+*0(Ó+*0 (Ô+*0 (Õ+*0 (Ö+*05ÂuË,tË (7 uÓ,*(Ž+ (×+(+*04ÂuË,tË (7 uÓ,*(Ž+ (Ø+(+*0(Ù+*0¥f*0(Ù+*0¥f*0PµuË,.tË (7 (í ob ,*X+Ê(‰rÝp(ì oí s z0 à (Ú+*0=µuË,3tË (7 (í ob ,( *X+Å*0 à (Û+*0TÄ¥f oò (¦+ oK , o (§+ +à Þu , oI &Ü&Ü**90ZÅ¥f oò (¨+ oK , o oú (©+ +Ú Þu , oI &Ü&Ü*0?0™Ä¥f Œf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oK ,o  (¬+, +Ü+Ù Þu , oI &Ü&Ü*+S~0¶Æ¥f Œf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o  oú  oK ,/o oú (­+, +Ì+É Þu   ,  oI &Ü&Ü*+p›0™Ä¥f Œf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oK ,o  (ª+, +Ü+Ù Þu , oI &Ü&Ü*+S~0¶Æ¥f Œf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o  oú  oK ,/o oú («+, +Ì+É Þu   ,  oI &Ü&Ü*+p›0¥¦¥f Œf,+r#ps´ (‡+&oò (¦+ oK , o (§+ X+Ú-(`r#psx (‡+&+ (®+ Þu , oI &Ü&Ü*+_Š0«§¥f Œf,+r#ps´ (‡+&oò (¨+ oK ,$ o oú (©+ X+Ô-(`r#psx (‡+&+ (¯+ Þu , oI &Ü&Ü*+e0 þ(Ü+*0(Ž+(¥+(+*0(Ý+(A *0?]Œ),+ rŠps´ z ( Ú 2( o &X X3è*0@]Œ),+ rŠps´ z ( Ú 2( (Þ+&X X3ç*0:#Œ),+ rŠps´ z( sC sU(Gþo *0:#Œ),+ rŠps´ z( sC sW(Hþo *0:#Œ),+ rŠps´ z( sC sY(Gþo *0ZÇ/!(‰r›ep(ì oí ré…psx zsC  Ú  2 o (  X X3çþo *0HÈŒ),+ rŠps´ z( sC  Ú 2( X X3îþo *01‰( þþ,*( oD , Ö+Ò*0$ÉŒ),+ rŠps´ z  (N*0*( /( oD ,*Ö+Ù*0$ÉŒ),+ rŠps´ z  (P*0Œ),+ rŠps´ z( *0 þ(K*0 (O*V( }û}ü*0#{ü{ûoE ( *V(F }ý}þ*0#{þ{ý(ß+( *V( }ÿ}*0#{{ÿo ( *0 sG (à+*0sH (á+*0(â+*0 (ã+*0 (I ¥f*0 sJ (à+*04¾/!(‰r›ep(ì oí ré…psx zsK (à+*0SÊŒf,+ r#ps´ zoò oK ,o o— &+è Þu  , oI &Ü&Ü&*:0@ËŒf,+ r#ps´ zoò (ä+ Þu  , oI &Ü&Ü* (0ZÌŒf,+ r#ps´ zoò  oK ,o (å+&X +ã Þu  , oI &Ü&Ü&*#A0\ÍŒf,+ r#ps´ zoò  - oK +,o ob +à Þu  , oI &Ü&Ü*&D0\ÍŒf,+ r#ps´ zoò  , oK +,o ob +à Þu  , oI &Ü&Ü*&D0£ÏŒf,+ r½ps´ zŒc,+ rÍps´ zoò oM oK , oK +,o oN (k+&+Õ Þu , oI &Ü&Ü Þu , oI &Ü&Ü&*;/j4S‡0sO (á+*0sP (æ+*0$Œf,+ r#ps´ zsQ (ç+*0$Œf,+ r#ps´ zsR (è+*0$Œf,+ r#ps´ zsS (è+*0;Œf,+ r½ps´ zŒc,+ rÍps´ zsT (é+*0$Œf,+ r#ps´ zsU (è+*0:Œf,+ r½ps´ zŒc,+ rÍps´ zsV (ê+*0VŒf,+ r½ps´ zŒc,+ rÍps´ zŒ:,+ rÝps´ zsW (ë+(ì+*0#Œ,+ r#ps´ zsX (à+*0cÐŒf,+ r#ps´ zoò  þþ, oK +,o o +Ù Þu  , oI &Ü&Ü*-K0CÑŒf,+ r#ps´ z(í+ ,( *(‰rÝp(ì oí s z0sÒŒf,+ r#ps´ zoò  þþ, oK +,o  ob , (­ +Ï+Ì Þu , oI &Ü&Ü*:X0CfŒf,+ r#ps´ z(î+ ,({ *(‰rÝp(ì oí s z0 `ÓŒf,+ r#ps´ z/!(‰r›ep(ì oí ré…psx z- (I ¥f*þsY *0ŽÕŒf,+ r#ps´ zub ,  Žiþ*uÖ ,  uÓþ*u>,oZ þ*oò oK þÞu , oI &Ü&Ü*cq0Œf,+ ríps´ z(ï+*0”ÖŒf,+ r#ps´ zub , Ži*uÖ ,  (6 *u>,þoZ *oò oK , X+îÞu   ,  oI &Ü&Ü*\w0U׌f,+ r#ps´ zoò  oK ,o (ð+ +ç Þu  , oI &Ü&Ü*=0sØŒf,+ r#ps´ zoò oK -(`r#psx zo oK ,o (ñ+ +ç Þu  , oI &Ü&Ü*=[0 s\ (á+*0:Œf,+ r½ps´ zŒf,+ rÍps´ zs] (ò+*0(ó+(ô+*0]ÙoK oK 3+ ,+ ,*-+þ,*o o (œ+ , *+£0ˆÛŒf,+ r½ps´ zŒf,+ rÍps´ zoò oò (õ+ Þu , oI &Ü&Ü Þu , oI &Ü&Ü*;P49m0 (ö+*0¥f*0‰ÜŒf,+ r#ps´ zuÖ , *ub ,  (+*oò (ñ oK ,o (ð +ä(]+ Þu , oI &Ü&Ü*@-m0¥f*0(Ù+*0#Œb,+ r#ps´ zs^ (à+*0‘ÝŒf,+ r#ps´ zub , of ¥b*uÖ ,  (Ž+*oò s! oK ,o o" +æ(# Þu , oI &Ü&Ü*J+u0(¢+*0(à+*0 s_ (à+*0+|Œf,+ r#ps´ zþs` *0+|Œf,+ r#ps´ zþsa *0 ,ÞŒf,+ r#ps´ zþdsb *0@oK ,o ob ,*X+Ú(‰rÝp(ì oí s z0Hߌf,+ r#ps´ zoò   (÷+ Þu , oI &Ü&Ü*-0-oK ,"o ob ,( *X+Õ*0HàŒf,+ r#ps´ zoò   (ø+ Þu , oI &Ü&Ü*-0{€ X]£*0 K¾Œf,+ r#ps´ z0!(‰r›ep(ì oí rýpsx zsc *0pâod 2e{e ,+oò (f (g (h {e (i -* (j oK ,o þo" *oI (g (h **0Iod /ok Xsl (m *(ù+od /ok Xsl (m **0>äon {e ,$ (i ,(i (j ¥ oI +(h *0HæŒf,+ r#ps´ zs! so sp (ú+ sq sr ¥f*0#Œf,+ r#ps´ zss (à+*0st (û+*0 <èŒf,+ r#ps´ zþþZþsu *0 =êŒf,+ r#ps´ zþþRþsv *0$Œf,+ r#ps´ zsw (â+*0#Œf,+ r#ps´ zsx (â+*0$Œf,+ r#ps´ zsy (ü+*0Këoò (¦+ oK , o  (§+ +â Þu , oI &Ü&Ü*(00Qìoò (¨+ oK , o oú  (©+ +Ü Þu , oI &Ü&Ü*.60™íŒf,+r#ps´ (‡+&oò (¦+  oK ,o (§+ X +Ü -(`r#psx (‡+&+ (®+ Þu , oI &Ü&Ü*$Z~0ŸîŒf,+r#ps´ (‡+&oò (¨+  oK ,"o oú (©+ X +Ö -(`r#psx (‡+&+ (¯+ Þu , oI &Ü&Ü*$`„0ëŒf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oK ,o  (ª+, +ß+Ü Þu , oI &Ü&Ü*$Pt0¬ïŒf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oú oK ,-o oú  («+,  +Î+Ë Þu , oI &Ü&Ü*$m‘0ëŒf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oK ,o  (¬+, +ß+Ü Þu , oI &Ü&Ü*$Pt0¬ïŒf,+r#ps´ (‡+&oò oK -(`r#psx (‡+&+o oú oK ,-o oú  (­+,  +Î+Ë Þu , oI &Ü&Ü*$m‘0+|Œf,+ r#ps´ zþsz *0 ,|Œf,+ r#ps´ zþs{ *0 ,|Œf,+ r#ps´ zþs| *0°ðŒf,+ r½ps´ zŒc,+ rÍps´ zoò oM , oK +, oK +,o oN (d++Ë Þu , oI &Ü&Ü Þu , oI &Ü&Ü*;=x4a•0°ðŒf,+ r½ps´ zŒc,+ rÍps´ zoò oM - oK +, oK +,o oN (d++Ë Þu , oI &Ü&Ü Þu , oI &Ü&Ü*;=x4a•0WËŒf,+ r#ps´ zoò oK , o Þ&(`r#psx zu  , oI &Ü&Ü*!?0(ý+*:(} }~ *0{~ o þo/ *V(} }€ } *0{€ { (þ+*:(} }‚ *0{‚ (ÿ+*V(} }ƒ }„ *0{ƒ Y( {„ (ÿ+*V(} }… }† *0{… {† o‡ þoˆ *r(} }‰ }Š }‹ *0%{‰ {Š o‡ {‹ oŒ þ(+*:(Ž } *0{ (+*:( }‘ *0{‘ (+*:( }’ *0{’ (+*:(“ }” *0{” (+*:( }• *0{• (+*(– *0 so *(— *0ñ(˜ (™ sš *:(} }› *0{› o. (+*0<}œ } }ž }Ÿ }  }¡ }¢ (£ *0=ò{¡ YE +8å8Å8²8ô{ o/ }ž }¡ {œ Y (o¤ }  }¡ {  oK ,q{  o¥ }Ÿ {ž oK -+(‰r‘p(ì oí s, ,¥+z&+}¡ {ž oN }¢ *}Ÿ 8‚ÿÿÿ}¡ {  (+}  }¡ {ž (+}ž }¡ þn}¢ *0t{¡ YE ++5++++)}¡ {  (+}¡ {ž (+}¡ þn}¢ *0<{¡ YE +++ +++****0{¢ *0 {œ { þns¦ *:(} }§ *0{§ o¨ Œo¥ç( +*:(© }ª *0{ª o/ ( +*V(© }« }¬ *0&õ{« o/ ( + {¬ s­ (® *:(} }¯ *0{¯ s° ¥*:(} }± *0{± s² ¥*04}³ }´ }µ }¶ }· }¸ (£ *0å{· YE +8Š88¦s† }µ {´ o/ }¶ }· {µ {€ {³ /{¶ oK +,5{µ {µ {€ X(‚ }· {¶ oN }¸ *+¦}· {¶ (+}¶ }µ }· þn}¸ *0Y{· YE + ++++}· {¶ (+}· þn}¸ *03{· YE + + +++***0{¸ *0 {³ {´ þns¹ *04}º }» }¼ }½ }¾ }¿ (À *0{¾ YE +8»8‡8Ð{º o/ }» }¾ {» oK 9†{» oN sõ }¼ {» oK ,Y{» oN }½ }¾ {¼ { {½ sú }¿ *{¼ {½ ( þn}½ +š}¼ +}¾ {» (+}» }¾ }¿ *0T{¾ YE + +!+ +++}¾ {» (+}¾ }¿ *06{¾ YE + ++ +++***0{¿ *0 {º þnsÁ *0<} }à }Ä }Å }Æ }Ç }È (£ *0{Ç YE ++=8¥8œ8Á{à sõ }Å }Ç {Å { }È *{Ä o‡ }Æ }Ç {Æ oK ,I{Å { {Å { {Æ oÉ ( +( }Ç {Å { }È *+ª}Ç {Æ ( +}Æ }Å }Ç þn}È *0c{Ç YE ++$+ +++}Ç {Æ ( ++}Ç þn}È *0<{Ç YE +++ +++****0{È *0 %{ {à {Ä þnsÊ *0D}Ë }Ì }Í }Î }Ï }Ð }Ñ }Ò (Ó *0 §÷{Ñ YE +8F88p{Ë n}Í {Ë Ys† }Î s† }Ï {Ì o/ }Ð }Ñ {Ð oK 9â{Í {Ï {€ {Ð oN ¤n{Ï {Ï {€ X{Ë ](‚ {Î {€ -v}Ñ {Ë /(bré…psx z{Ë n  {Ë Y  2) {Ë {Í {Ï ( +¤n X X3×}Ò *8-ÿÿÿ{Î {Î {€ Y(‚ 8ÿÿÿ}Ñ {Ð (+}Ð }Ï }Î }Í }Ñ }Ò *0Q{Ñ YE + ++++}Ñ {Ð (+}Ñ }Ò *03{Ñ YE + + +++***0{Ò *0 {Ë {Ì sÔ *r(Õ }Ö }× }Ø *0 8ù{Ø (; {Ö {× {Ø (+ Þ{Ø (> &Ü* (V(V }Ù }Ú *03ç{Ú (; {Ù {Ú (+ Þ{Ú (> &Ü* #:(} }Û *0{Û þo/ *V(1 }Ü }Ý *0_ü{Ü oÑ sÞ  {Ý oß sà (á (â , oW *sR {Ý  oã oW *(ä *0(å (æ *(ç *0'ý(è {é (å ¥(+sê *V(ë }ì }í *0Fÿ(î sï {ì sð {í (+sñ ¥‡(+sò ¥‡(+*0<}ó }ô }õ }ö }÷ }ø }ù (£ *0#{ø YE +8È8š8ä(ú sû }ô {ó o/ }÷ }ø {÷ oK 9„{÷ oN }õ {õ s  }ö {ô {ö oü -*{ô {ö oý }ø {õ }ù *+þm}ö þn}õ 8lÿÿÿ}ø {÷ (+}÷ }ô }ø þn}ù *0Y{ø YE + ++++}ø {÷ (+}ø þn}ù *03{ø YE + + +++***0{ù *0 +{ó þnþmþnsþ *0D}ÿ } } } } } } } (£ *0.{ YE +8Ó8¥8ï(î s } { o/ } } { oK 9{ oN } {ÿ { oÑ sÞ } { { o -*{ { o } { } *+þ€} þn} 8aÿÿÿ} { (+} } } þn} *0Y{ YE + ++++} { (+} þn} *03{ YE + + +++***0{ *0 1{ÿ { þnþ€þns *V(ø } } *0!?{ (h+ { (+¥*:(ø } *0?{ (h+ (+¥*V(1 } } *0M{ oÑ sÞ þC { o ,{ Xo *{ o *( *0‰( { ( s *V( } } *05(ú s { s { (+s ¥—(+*04} } } } }! }" (£ *0ðv{! YE +8œ8Œ8±{ o/ } }! þnsõ } { oK ,/{ { oN ( { { { oé +,}! { { }" *+£} }! { (+} }! þn}" *0Y{! YE + ++++}! { (+}! þn}" *03{! YE + + +++***0{" *0 { { þns# *0<}$ }% }& }' }( }) }* (£ *0F{) YE +8î8¤8ß8ý{% o/ }& }) {$ (o¤ }( }) {( oK ,T{( o¥ }' {& oK -+(‰r‘p(ì oí s, ,¥+z&+}' +Ÿ}) {( (+}( {& oK ,}) {& oN }* *+Ö}) {& (+}& }) þn}* *0v{) YE ++7+ + ++++}) {( (+}) {& (+}) þn}* *0<{) YE +++ +++****0{* *0 {$ {% þns+ *0<}, }- }. }/ }0 }1 }2 (£ *0)v{1 YE +8Õ8µ8ê{- o/ }. }1 þnsõ }/ s }0 {. oK ,v{/ {. oN ( {0 { ,+{, {/ { oé þ,,{0 ( }1 {/ { }2 *8ƒÿÿÿ8}ÿÿÿ}0 }/ }1 {. (+}. }1 þn}2 *0Y{1 YE + ++++}1 {. (+}1 þn}2 *03{1 YE + + +++***0{2 *0 {, {- þns3 *0s4 *0s5 (á+*0s6 s7 (+*0f {8 oK ,O{8 oN Œd u. ,+Í{9 oI  þdoò }9 þ(+*(: *0- {9 oK ,{9 o }; * þ(+*0s< s= s> ¥:*0 s? (á+*0, { - (+&+{@ ,(A *(+*0{ -( **0%s sB sC (+(+*0sD sE ¥f*0 sF *0 } *0{ *0sG sH *0 (a &*0 þ(d+*0 þ(+*0}I (a &*0{I { þoJ *0{I { { þoK *0}L (a &*0{L oM ¥ *0{L þoM *0 sN €O *0(a *0~O *0&*0 sP ¥*0sP ¥¥ *0(Q *0(a }R *r(} }S }T }U *0{S {T {U ( +*V( }V }W *0#{V oé ,{W oÑ ( **(1 *0Œn u  ,  oI **0(a &}X }Y *0X{Y o o/ u© , {X oN Þ%{X (!+ Þt{X oQ &þ*?@0¥o/ ¥ *0?(a &o‡ }Z sP ¥}[ }\ }] (V }^ *0—}] {[ ,{[ oI }[ +{Z ,{Z oI }Z +{^ ¥´o_ oK ,o` oQ &+è Þu  , oI &Ü&Ü&(V }^ *Ws0*{\ - (+&+{] ,("+*{a *0{^ (y }^ *0(b *0 (b Œn*0*{\ - }\ +{] ,* þ(#+*0(‰r7‘p(ì oí st z0{] -(c **:(V }d *0&{d Œn,{d þnoI **V(ø }e }f *0{f {e og Œu¥*:(} }h *0{h si ¥*0'}j }k }l }m (a &*0{l {m ($+Œ*0\{l (0{j oñ Þt {m (n þ,{m {k (o (n *{m (n *0(‰r7‘p(ì oí st z0*0{l {m ($+*’(p }q }r }s }t *0{q {r {s {t su *:(ø }v *0{v *:(w }x *0{x oÍ *0}y }z (a &*0{y {z o &*0}{ }| }} (a &*0{{ o &*0{| o &*0-{} s~ o {{ o &{| s€ *0Þo , (Ú oQ &**0>o‚ oƒ  uÆ-uÇ-tÈ („ (… **(%+*0 uÊ ,  {† *s‡ ¥Ð*0 !uË ,  {ˆ *s‰ ¥Ä*0 sŠ €‹ *0(a *0sŒ *0 uÍþ*0s *0 uÎþ*0~‹ *0 uÌþ*0# uÍ,+ uÎ,+*0(Ž *0(Ž } *0{ *0(Ž } *0{ *0(a }‘ *0(a }’ *0 {’ { *0(a }“ *0 {“ { *0(a &}” }• *0{” *0{• *0/%ur , {” s– +à s— ¥ç*0s˜ *0{” þo™ *V(© }› }œ *0{œ {• o {› (® *:(ž }Ÿ *0b'{Ÿ {” (&+  uÎ- uÍ-{Ÿ {• o (  **tÍ (¡ {Ÿ {• (® (  *0(a &}¢ }£ }¤ *0{¢ *0.({£ -(‰r[‘p(ì oí s, z( *0¥oN Œn*0}*{¤ -s{¢ (&+ uÎ-uÍ-,}£ }¤ *tÎ (¥ ([ }£ *tÍ (¡ }¢ ¥ þoK **0(‰r7‘p(ì oí st z0{¤ -{¢ þ('+**0(a &}¦ *0{¦ *0s§ *0+{¦ s¨ (Y *:(ž }© *0/{© {¦ oK ,{© {¦ oN (ª *(« *:(V }¬ *0{¬ oI *0(‰rp(ì oí s, z0(‰rKp(ì oí s, z0s­ *0g¾oK -!(‰r‘p(ì oí repsx z/!(‰r›ep(ì oí repsx z- þo *Y+™0s® ¥1*0/s† s¯ ¥1*0s° ¥Ü*0,,{ - (+&+{± ,({ *((+*0-s s( s² *0<{ - ( +oK ,o ob ,*+Æ*0 s s³ *0.s% s´ ¥1*0W{€ 3 (+&+{€ þ3 ()+&+{µ Œl,+s¶ (*+(· {µ (š *0S1, ( /( s¸ ¥Ð*-ý+( s† þls¹  sº *0f{± , (» **0f(; (++ Þ (> &Ü*  0,,{ - (+&+{± ,({ *((+*0{ -( **0(,+(-+(» *0,3s s( oj (­ s¼ s½ *0 s¾ *0}¿ (a &*0{¿ oM ¥*0{¿ þoK *0(‰r7‘p(ì oí st z04{¿ u  ,  þoI **0{¿ oM (1+*0(a &}À *0{À - (+&+("+*0{À - (+&+(.+*0{À - }À +*0(‰r7‘p(ì oí st z0*0"sÇ€ªsÇ€«sÇ€¬*0(a }©*0~¬*0 (Îþ*0~«*0 (Îþ*0~ª*0 (Îþ*0{©*0(a &(Ì}Á *07{Á (ÎE (+&+ ()+&+{ *0(à *0 (à Œn*0)(Ê}Á | oÄ ,*(È}Á *0(‰r7‘p(ì oí st z0 þoÅ *0}Æ }Ç (È &*0.{Ç oK ,{Æ {Ç oÉ oÉ n**0{Ç þoI *0}Ê }Ë }Ì (È &*0Q{Ì {Ì {€ X(‚ {Ë oK ,){Ê {Ì {€ {Ë oÉ (/+n**0{Ë þoI *0}Î }Ï }Ð (È &*0O½{Ï oK {Ð oK ,+,){Î {Ï oÉ {Ð oÑ (0+n**0{Ï oI {Ð þoI *0'}Ó }Ô }Õ }Ö (a &*0{Õ {Ö (1+Œn*0€{Õ { -{Õ ( +{Ö (ü {Ö {ù þ,{Ô oK +,${Ö {Ó {Ô oÉ o× (ü +¹{Ö {ù þ*0(‰r7‘p(ì oí st z0{Ô þoI *0{Õ {Ö (1+*0}Ø }Ù }Ú (a &*0+{Ú { - (+&+{Ù oN Œn*0/6{Ø {Ù {Ú {Ø {Ù {Ú (2+*0(‰r7‘p(ì oí st z0{Ù þoI *0({Ú { - (+&+{Ù þoN *0}Û }Ü (È &*0L8{Û {Ü {ï oÝ ,/ (Þ (p (Þ (q  n{Ü (ñ **0*V(; }ß }à *0{ß {à {€ þoá *0'}â }ã }ä }å (a &*0{â {ä {å (3+Œn*0¶:{ä {€ þ3*{ä {€ 3"{ä (‚ {å þÌ(æ *{ä {€ ÿÿÿ3(‰r“‘p(ì oí s, z{ä {€ {ã 3*{ä {€ X {ä (‚ {å þÌ (æ *0(‰r7‘p(ì oí st z0*0{â {ä {å (3+*0/}ç }è }é }ê }ë (a &*0{é {ê (4+Œn*0‹;{é (¶{ë {ì ,l (> {ç o× Þ"t{è {ê {ë (5+þ ,{ê (ü *{è {ê {ë (5+**'8"0(‰r7‘p(ì oí st z0{è {ë (6+þ(7+*0{é {ê (4+*0&(a &}í }î {í Ži}ï *0F]{î þþ,/{î {ï þþ,("+*{í {î £n*(8+*0(ð *07]{î {ï þþ,*{î X}î {î {ï þ*0 (ð Œn*0(‰r7‘p(ì oí st z0*0(a &}ñ }ò *0{ñ *0 {ñ Œn*0{ò ,*}ò *0(‰r7‘p(ì oí st z0*0}ó }ô (a &*0{ô ¥ þoM *0{ô þoK *0(‰r7‘p(ì oí st z0{ó oQ &{ô þoI *0{ô þoN *0}õ }ö (£ &*0{ö *0<q {ö oK ,**0{ö oI {õ þoH *0*0{ö þoN *0({+*0>(÷ sø *0 sù (÷ *0 ({+(9+*0}ú (a &*0{ú þoû *:(ü }ý *0{ý þo *0sþ *0sÿ *0s *0@( s *0 (a &*0 þ(d+*0 þ(+*0} (a &*0{ þ(:+*0 þ(+*0 (a &*0 Œn( *0 (;+*0} } (a &*0{ þo *0{ þo *0,¾,({ *(‰rÉ‘p(ì oí rï‘psx z0þ*0 þþ*0,**0f, ({ þ(ð+**0f, ({ þ(++**0f, ({ þob **0f, ({ þob **0f, ({ o— &**0©, ({ oú (À **0f, ({ þo **0!f, %({ ¤**0f, ({ (ñ (ð *(ñ *0(<+*0(=+*0 (› *0 (› *0 (™ *0 (™ *0 ( *0 ( *0U¾/!(‰r›ep(ì oí r?ypsx z/!(‰r›ep(ì oí rý‘psx zs *0{-þ+,+Ð(¶ C%¤C%¤C( ¥*Ð(¶ C%¤C%¤CC%¤C%¤C( ¥*0IB(>+  ÖÚ 20ÖÚ 2( X X3èX X3Ð*0QB(>+  ÖÚ 28ÖÚ 2 (?+( X X3àX X3È*0 (@+*0 (A+*0oC(› (› (™ (™ ÖÚ2= ÖÚ2( o— &XX3áXX3Ã*0sC(› (› (™ (™ ÖÚ2A ÖÚ2#( (B+&XX3ÝXX3¿*0*(™ (™ (› (› s (C+*0*(™ (™ (› (› s (C+*0)(™ (™ (› (› s (A+*0 /](™ (™ (› (› s (A+*0 ¥D/!(‰r›ep(ì oí r’psx z/!(‰r›ep(ì oí r’psx z/!(‰r›ep(ì oí r5’psx z/!(‰r›ep(ì oí rO’psx zÖ(› 1!(‰rMŒp(ì oí ri’psx zÖ(› 1!(‰rMŒp(ì oí rw’psx zÖ(› 1!(‰rMŒp(ì oí ri’psx zÖ(› 1!(‰rMŒp(ì oí rw’psx z Ú 2@Ú 2)ÖÖÖÖ( ( X X3×X X3À*0 (D+*0 IE/!(‰r›ep(ì oí r…’psx z/!(‰r›ep(ì oí r“’psx z/!(‰r›ep(ì oí ri’psx z/!(‰r›ep(ì oí rw’psx zÖ(› 1!(‰rMŒp(ì oí ri’psx zÖ(› 1!(‰rMŒp(ì oí rw’psx z(E+  Ú  2=Ú2$  ÖÖ( ( XX3Ü X X3Ã*V( } } *0{ { ( þoÉ *V( } } *0 { { ( þ(F+*:( } *0{ ( *r( } } } *0{ { Ö{ Ö( *0*0Ih/(bré…psx (‡+&+  Y 2o ¤X X3è*0ÂFŽi Žiz  +^o /+Ži þþ,#(‰r¡’p(ì oí rÁ’psx z £¤ ¤zX Ži2œ +;£zþþ,#(‰r¡’p(ì oí rÁ’psx zX Ži2¿*0BGŽi /*Žid  +£oú ¤dX Ži2â(G+(H+*0‰Ži /*(I+(ž+*0íIŽiC  + ¤CX Ži2î(G+ (J+of ¥b (K+ Ži<œ£d/ 3+£do þ+, X+Í Y 2$  £C£¤ X  X3ÜYþþ,Y(L++ 8\ÿÿÿ*0>GŽi /*Žid  +£oú ¤dX Ži2â(M+*0,‰Ži /*(I+,of ¥b(N+*(O+*0/µuË,&tË (7 (í o— &+Ò*0TJu$,;t$ (7 (8 oP (ð tË (# +½tË(ñ (# *0cKuË,UtË (7 uÓ,(í oú (ï (í *(7 (í oú (í (P+ *(ï *0ZJu$,At$ (7 (8 o$ (ð tË (# X+·tË(ñ (# *0pLuË,btË (7 uÓ,(í (Q+(ï (í *(7 (í ( o (í  (R+*(ï *0ªMu$9†t$ u%,Tt% (9 (7 (: (8 o% (ð tË(#  +’(‰rsp(ì oí rÓ’psx zu(,ÕtË(ñ (# *0›NuË9‚tË u$,Pt$ (7 (7 (8 (í ( o (?  (S+*(‰rsp(ì oí rÓ’psx zu$,Õ(@ *03µuË,(tË (7 (í ob ,+Ò**03µuË,(tË (7 (í ob ,*+Ð*0.µuË,$tË (7 (í (ð +Ô*0cOuË,YtË (7 uË,<(7 tË (7 (í (í  (ñ (ð (ð (T+*(í **0HPuË,2tË (7 (í (ð tË (# +ÆtË(# *0FµuË,-tË (7 (í o& (U++Ët$(ï (' *0TQuË,FtË (7 uÓ,(í þo& *þd (í (V+(( *(ï *0^PuË,ItË (7 (í ob ,(ð tË (# +º+¯tË(# *0lPuË,btË (7 uÓ,(7 (í ob ,**(7 (í ob ,(ð (W+ *+–*05µuË,,tË (7 (í o &X+Ì*0R(  (X+*0<Uu,'t () (* (Y++ÑtË(# *0hVu,Zt (* uË,:(* tË () (7 (í (ð  (Z+*() +ž(ñ *0XWuÖ , *oò (ñ oK ,o (ð +è (]+ Þu , oI &Ü&Ü*'=0oX([+ u,Yt () u,<() t () u,(* (*  (¶+*(\+*(* *(ñ *0@Y/*o (ð tË(# X+ÑtË(ñ (# *09Y/(bré…psx z-(ñ *o (ð (]+*0|PuË,[tË (7 (í (ð ob ,tË (# +·tË (#  +tË(# tË(# *0`PuË,JtË (7 (í (ð ob ,tË (# +º (^+ *tË(# *0`PuË,JtË (7 (í (ð ob , (^+ *tË (# +®tË(# *0ŒPuË9ytË (7 uÓ,((7 (í ob ,sZ *sZ *(7 (í (ð ob , (_+sZ * (`+ sZ *sZ *0‰Zud,`td ( (‚ ( (‚ (Ž (ð (í tË(# t$(' +˜tË(ñ (# t$(ï (' *0fZud,Ntd ( (‚ ( (‚ (Ž (ð (í (a+s+ *(ñ (ï s+ *0Ç]u9‹t (, (- (' (- (( (- () (ð  (í (? tË(# t$(' t%(. 8jÿÿÿtË(ñ (# t$(ï (' t%(@ (. *0†]u,it (, (- (' (- (( (- () (ð  (í (? (b+s/ *(ñ (ï (@ s/ *0¦^uË9‚tË u$,Pt$ (7 (7 (8 (í sÛ (Ü td(0  +–(‰rsp(ì oí rÓ’psx zu$,Õtd(Ý (0 *0Œ^uË,vtË u$,Dt$ (7 (7 (8 (í sÛ (Ü  (c+*(‰rsp(ì oí rÓ’psx zu$,Õ(Ý *0Ø_uË9¬tË u$,zt$ u%,kt% (9 (7 (7 (: (8 (í s% (1  t (2   8lÿÿÿ(‰rsp(ì oí   rÛ’psx zu$,Õu(,Ít(3 (2 *0¼_uË9›tË u$,it$ u%,Zt% (9 (7 (7 (: (8 (í s% (1    (d+ *(‰rsp(ì oí   rÛ’psx zu$,Õu(,Í(3 *0K`(6   Y 2,tË(í ¤tË(7 X X3Ô*0/aŽi (ñ Y   0 £(ð Y Y3è*0 (e+*0.µuË,$tË (7 (í (ð +Ô*0‰buË9ytË uË,^tË (í (í (7 (7  (œ+1(ð +  (ð 8ˆÿÿÿ(f+*+ò00(œ+1(ñ (ð (ð *(ñ (ð (ð *0¼/þ+,;(œ+1(ñ (ð (ð (ð *(ñ (ð (ð (ð *151(ñ (ð (ð (ð *(ñ (ð (ð (ð *1(ñ (ð (ð (ð *(ñ (ð (ð (ð *0 k](œ+ (œ+ 1þ+,;(œ+1(ñ (ð (ð (ð *(ñ (ð (ð (ð *(g+*0!cuË,tË (7 uÓþ**0Ýd<°{4 uË9“tË (7 uË9|(7 tË (í (í (7 3(5  (h+*uË,/tË(í (7 (5  (i+*rã’ps= zrã’ps= zc  (j+ Y(j+(ñ (k+*0 f(l+,*s6 (6 (j+*0|þŒ\s7 *0 s7 *0þ{8 ,+þ*0þ{8 ,**0*0(š *0(š *0(š *0*0(Ó+*0Œ*0z0s= *0&o9 Ð(¶ oR , o& (¸ **0þ*0 (ª+*0 (¬+*0 (m+*0 (n+*0 þ(o+*0 (o+þ*0 þ(p+*0(ª+,**0(ª+,**0s= z0s* *0guM , o& (¸ **0sx (q+*0 s´ (q+*0 s, (q+*0s, z0 rï’psJ z0 rM“psJ z0(Ž *0( *0*0s% *0 (: *0{; *0 þoú *0 þ(C+*0 þ(F+*0 þoú *0 þ(C+*0 þ(F+*0 s< *0 s= *0 (+ *0 ,({ **0 r«“psJ z0 þ(r+*0 r”psJ z0 þ(s+*0 r‡”psJ z0 rí”psJ z0 rQ•psJ z0 r¹•psJ z0 r!–psJ z0 r‹–psJ z0 rõ–psJ z0 r]—psJ z0 rÉ—psJ z0NhuË,DtË (7 (í uÓ,*(ñ (ð (t+tË(# **0{€ X(‚ *0{€ Y(‚ *0(> r3˜ps= z0 r˜psJ z0 rÛ˜psJ z0 r9™psJ z0 r™™psJ z0 r÷™psJ z0 rWšpsJ z0| rekpsJ z0 ŒC¥*0(? (@ sÛ *0 #ð*0 #øÿ*0"€*0"Àÿ*0 rµšpsJ z0 r›psJ z0 rs›psJ z0 rÓ›psJ z0 r3œpsJ z0 r•œpsJ z0 r÷œpsJ z0@iŒ ,/uA , rbp( ¥Bþo  * þo *rv^p*0 rWpsJ z0(ÞŒ(; oA ÞŒ(> &Ü* 0,joú ÞŒ, þoI &Ü&Ü* 0 Ð(¶ *0–Ð(¶ oÁ , þo **0þ*0 þ(u+*0 þ(v+*0*0(B *0(” *0(• *0(w+sC (x+*0(¨+sD (y+*0 þ(z+*0 þ({+*0 þ(|+*0 þ(}+*0 þ(~+*0 þ(+*0 þ(€+*0 þ(+*0 þ(‚+*0 þ(ƒ+*0 þ(„+*0 þ(…+*0 þ(†+*0 þ(‡+*0 þ(ˆ+*0 þ(‰+*0 þ(Š+*0 þ(‹+*0 þ(Œ+*0 þ(+*0 þ(Ž+*0sk €3>X (w+sE (+ /(w+ r‡”psJ z  r‡”psJ z(w+sF (+ /(w+  r‡”psJ z*V(? }G }H *0{H {G oI þoJ *V(K }L }M *0{L {M og þoN *(O *0 þ(+*(ú *0 þ(‘+*(O *0 þ(’+*(O *0 þ(’+*0(‰rp(ì oí s, z0(‰rKp(ì oí s, z0 #àÁ*0 #ÀÿÿÿßA*0/#àÁ5#ÀÿÿÿßAþþ+, (P þ**09½3 sQ ¥m*þ ,þ+þþ sž¥m*06msœ -!(‰r³p(ì oí rÕpsx zs¤*0I½3 sR ¥+*þ ,!þ+ !þþ s©¥+*06os§ -!(‰r³p(ì oí rÕpsx zs¯*0I½3 sS ¥-*þ ,!þ+ !þþ s´¥-*06qs² -!(‰r³p(ì oí rÕpsx zsº*09½3 sT ¥/*þ ,þ+þþ s¿¥/*06ss½ -!(‰r³p(ì oí rÕpsx zsÅ*0P½(“+, sU ¥1*þ ,!Óþ+!Óþþ sÊ¥1*0EusÈ !Ó(“+,!(‰r³p(ì oí rÕpsx zsÐ*0P½(”+, sV ¥3*þ ,!àþ+!àþþ sÕ¥3*0EwsÓ !à(”+,!(‰r³p(ì oí rÕpsx zsÛ*09½3 sW ¥5*þ ,þ+þþ sà¥5*06ysÞ -!(‰r³p(ì oí rÕpsx zsæ*09½3 sX ¥7*þ ,þ+þþ së¥7*06{sé -!(‰r³p(ì oí rÕpsx zsñ*09½3 sY ¥9*þ ,þ+þþ sö¥9*06}sô -!(‰r³p(ì oí rÕpsx zsü*09½3 sZ ¥;*þ ,þ+þþ s¥;*06sÿ -!(‰r³p(ì oí rÕpsx zs*09€Y[ (,6i 3lZXs[ ¥=*þ þþ  s ¥=*#þ,#(‰r³p(ì oí rÕpsx z.#(‰rßp(ì oí r?ypsx z.#(‰ržp(ì oí rÕpsx z.#(‰r!žp(ì oí rý‘psx zþ, s[ ¥=*þ ,#þ+ #þþ  s¥=*0 s*0.€Y[l (,6i 3kZXs\ ¥?*þ þþ  s¥?*"þ,#(‰r³p(ì oí rÕpsx z.#(‰rßp(ì oí r?ypsx z.#(‰ržp(ì oí rÕpsx z.#(‰r!žp(ì oí rý‘psx zþ, s\ ¥?*þ , "þ+ "þþ  s¥?*0 s#*0.(o+, s] ¥Ð*(ª+ s^ ¥Ð*0 s_ *0I½(•+, s` ¥1*(«+ , (ª++(¬+þ sa ¥1*08¾(o+,!(‰r³p(ì oí rÕpsx zsb *0%3 sc ¥G*þ s8¥G*0 { s>*0SE$.[(< Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0 ‚ (<*0SƒE$.[(> س ]-*س***س*س س*س س*0 „ (>*0S…E$.[(@ ص ]-*ص***ص*ص ص*ص ص*0 † (@*0S‡E$.[(B Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0 ˆ (B*0J]E!'[(D Ø ]-*Ø***Ø*ØØ*Ø Ø*0 ‰ (D*0JÚE!'[(F Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0 × (F*0R E#%)/[(H Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0 º (H*0R‰E#%)/[(J Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 Ù (J*0SŠE$&*0[(L Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 ‹ (L*0SŒE$&*0[(N Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0  (N*0NŽE!%+[(P Z ]-*Z*"€?**Z*ZZ*Z Z*0  (P*0RE#%)/[(R Z ]-*Z*#ð?**Z*ZZ*Z Z*0 ‘ (R*0g’E"$&.<[(T (d ]-*(d ***(d *(d (d *(d (d *0“ sA   (T*0w”E')+6H[(–+ (ñ+ ]-*þ(ñ+***þ(ñ+*(ñ+þ(ñ+*(ñ+ þ(ñ+*0–   þ(–+*0k—,  ( + ,  ( +ŽiY YX  Y2!X£¤XX3ß*0`˜,  ( + ,  ( +ŽiY YX  Y2 X£¤XX3à*0b , ( + , ( + , ( + (› Y , ( + (› Y YX YX(—+*0e , ( + , ( + , ( + (› Y , ( + (› Y YX YX(˜+*0 –™, ( + , ( + , ( + , ( + (› Y , ( + (› Y, ( + (› Y YXYXYX(™+*0 ™™, ( + , ( + , ( + , ( + (› Y , ( + (› Y, ( + (› Y YXYXYX(š+*0 ÊC, ( + , ( + , ( + , ( + , ( + (› Y, ( + (› Y, ( + (› Y, ( + (› Y YXYXYX YX(›+*0 ÍC, ( + , ( + , ( + , ( + , ( + (› Y, ( + (› Y, ( + (› Y, ( + (› Y YXYXYX YX (œ+*0;š,  ( + ,  ( + ( Y YX( *0)›Ð(¶ %¤oì se *01›Ð(¶ %¤%¤oì sf *0~g þoh *0~i þoh *0~j þoh *0~k þoh *0~l þ(+*0~m þoh *0~n þoh *0~o þoh *0~p þoh *0~q þoh *0~r þos *0~t þoh *0~u þoh *0~v þoú *0~w þoh *0~x þoh *0~y þoh *0~z þoh *0~{ þoh *0~| þoh *0~} þ(ñ+*0(a &}~ *0 þ( *0( Œn*0C{~ E*o€ , }~ *}~ *o ,*}~ *0}~ þo‚ *0*0){~ E (ž+*(Ÿ+*þoƒ *0 („ &*0*0*0*0 þn*0(„ &}… *0*0*0*0{… *0$(† &}‡ }ˆ {‡ }‰ *0{‡ }‰ *0{‰ þoŠ *0nv{‰ {‰ o‹ oŒ ,*o ,*oŒ ,{ˆ oŒ +, }‰ *{ˆ o , }‰ **0$(„ &}Ž } {Ž } *0{Ž } *0{ *0v{ { o‘ o’ ,*o“ ,{ o“ +, } *{ o’ , } *{ o“ ,*o’ -**(” *0X*0;}ô}õ}ö}÷}ø{õ{ö(• &*0{ø*0{÷,þ*þ*0þ*0 {ôX*0*0'}ù}ú}û}ü(a &*0 %{ú{ù{û{ü(¥ *0 {ú{ù{û{ü(*(– *0X*0;}ý}þ}ÿ}}{þ{ÿ(— &*0{*0{,þ*þ*0þ*0 {ýX*0*0'}}}}(a &*0 %{{{{( ¥ *0 {{{{( *(˜ *0X*0;}}}} } {{(™ &*0{ *0{ ,þ*þ*0þ*0 {X*0*0'} } } }(a &*0 %{ { { {("¥ *0 { { { {("*(š *0X*0;}}}}}{{(› &*0{*0{,þ*þ*0þ*0 {X*0*0'}}}}(a &*0 %{{{{($¥ *0 {{{{($*(œ *0X*0;}}}}}{{( &*0{*0{,þ*þ*0 þ(“+*0 {X*0*0'}}}} (a &*0 %{{{{ (&¥ *0 {{{{ (&*(ž *0X*0;}!}"}#}$}%{"{#(Ÿ &*0{%*0{$,þ*þ*0 þ(”+*0 {!X*0*0'}&}'}(})(a &*0 %{'{&{({)((¥ *0 {'{&{({)((*(  *0Xh*0;}*}+},}-}.{+{,(¡ &*0{.*0{-,þ*þ*0þ*0 {*Xh*0*0'}/}0}1}2(a &*0 %{0{/{1{2(*¥ *0 {0{/{1{2(**(¢ *0XÑ*0;}3}4}5}6}7{4{5(£ &*0{7*0{6,þ*þ*0þ*0 {3XÑ*0*0'}8}9}:};(a &*0 %{9{8{:{;(,¥ *0 {9{8{:{;(,*(¤ *0Xg*0;}<}=}>}?}@{={>(¥ &*0{@*0{?,þ*þ*0þ*0 {<Xg*0*0'}A}B}C}D(a &*0 %{B{A{C{D(.¥ *0 {B{A{C{D(.*(¦ *0XÒ*0;}E}F}G}H}I{F{G(§ &*0{I*0{H,þ*þ*0þ*0 {EXÒ*0*0'}J}K}L}M(a &*0 %{K{J{L{M(0¥ *0 {K{J{L{M(0*06}N}O}P}Q}R{P(¨ &*0{R*0{Q,þ*þ*0þ*0X*0{Ol{NZX*0;}S}T}U}V}W{T{U(© &*0{W*0{V,þ*þ*0þ*0 {SX*0}X}Y}Z(a &*0{Y{X{Z(2¥ *0{Y{X{Z(2*06}[}\}]}^}_{](ª &*0{_*0{^,þ*þ*0þ*0X*0{\k{[ZX*0;}`}a}b}c}d{a{b(« &*0{d*0{c,þ*þ*0þ*0 {`X*0}e}f}g(a &*0{f{e{g(4¥ *0{f{e{g(4*0;}¬ }­ }® }¯ }° {­ {® (± &*0{° *0 ( +*0 þ(+*0{¯ {¬ þ(¡+*0*0'}³ }´ }µ }¶ (a &*0 %{³ {µ {¶ {´ (¢+¥ *0 {³ {µ {¶ {´ (¢+*0C}· }¸ }¹ }º }» }¼ {¸ {¹ (± &*0{¼ *0{» ,( +*(£+*0 þ(+*0{º {· þ( +*0*0/}½ }¾ }¿ }À }Á (a &*0 +{½ {À {¿ {Á {¾ (¤+¥ *0 &{½ {À {¿ {Á {¾ (¤+*03}|}}}~}{|{}( &*0{*0þ*0þ*0‡ {~ XÑ*0*0}€}}‚(a &*0{€{{‚(:¥ *0{€{{‚(:*:(? }à *0 &{à %Œn¤oé ¥o*:(Ä }Å *0 3{Å %Œn¤%Œn¤oé ¥o*0 (a &*0]Ðn(¶ Ðy(¶ oR ,sH¥ sÆ 8!Ð{(¶ oR ,sL¥ sÇ 8øÐC(¶ oR ,sP¥ sÈ 8ÏÐY(¶ oR ,sT¥ sÉ 8¦Љ(¶ oR ,sX¥ sÊ 8}Ðx(¶ oR ,s\¥ sË +WÐw(¶ oR ,s`¥ sÌ +1Ð!(¶ oR ,sd¥ sÍ + r?žp(¥+€Î *0~Î *(Ï *0(Ð *:(Ñ }Ò *0{Ò þoÓ *(Ô *0(Õ *:(Ñ }Ö *0{Ö þoÓ *(× *0(r *:(Ñ }Ø *0{Ø þoÓ *(Ù *0(Ú *:(Ñ }Û *0{Û þoÓ *(Ü *0.‹!Ó2*e !Ó/ (_sÝ z*:(Ñ }Þ *0{Þ þoÓ *(ß *0(à *:(Ñ }á *0{á þoÓ *(â *0(ã *:(Ñ }ä *0{ä þoÓ *(å *0(æ *:(Ñ }ç *0{ç þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,sk¥ sè +1Ðw(¶ oR ,so¥ sé + rGžp(¥+€ê *0~ê *(ß *0(ë *:(Ñ }ì *0{ì þoÓ *(â *0 l(ë k*:(Ñ }í *0{í þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,sv¥ sî +1Ðw(¶ oR ,sz¥ sï + rQžp(¥+€ð *0~ð *(ß *0(ñ *:(Ñ }ò *0{ò þoÓ *(â *0 l(ñ k*:(Ñ }ó *0{ó þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s¥ sô +1Ðw(¶ oR ,s…¥ sõ + r[žp(¥+€ö *0~ö *(ß *0(÷ *:(Ñ }ø *0{ø þoÓ *(â *0 l(÷ k*:(Ñ }ù *0{ù þoÓ *0 (a &*0jŸÐn(¶ Ðx(¶ oR ,sŒ¥# sú +1Ðw(¶ oR ,s’¥# sû + režp(¦+€ü *0~ü *(ý *0 (þ *:(? }ÿ *0{ÿ þoÑ *:( } *0¡{ o s *( *0 ll(þ k*:(? } *0{ þoÑ *:( } *0¡{ o s *0 (a &*0jÐn(¶ Ðx(¶ oR ,s›¥ s +1Ðw(¶ oR ,sŸ¥ s + rqžp(¥+€ *0~ *(ß *0( *:(Ñ } *0{ þoÓ *(â *0 l( k*:(Ñ } *0{ þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s¦¥ s +1Ðw(¶ oR ,sª¥ s + ržp(¥+€ *0~ *(ß *0( *:(Ñ } *0{ þoÓ *(â *0 l( k*:(Ñ } *0{ þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s±¥ s +1Ðw(¶ oR ,sµ¥ s + r‰žp(¥+€ *0~ *(ß *0(P *:(Ñ } *0{ þoÓ *(â *0 l(P k*:(Ñ } *0{ þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s¼¥ s +1Ðw(¶ oR ,sÀ¥ s + r•žp(¥+€ *0~ *(ß *0( *:(Ñ } *0{ þoÓ *(â *0 l( k*:(Ñ } *0{ þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,sÇ¥ s +1Ðw(¶ oR ,sË¥ s + r§žp(¥+€! *0~! *(ß *0(" *:(Ñ }# *0{# þoÓ *(â *0 l(" k*:(Ñ }$ *0{$ þoÓ *0 (a &*0]£Ðn(¶ Ðx(¶ oR ,sÒ¥& s% 8!Ðw(¶ oR ,sÖ¥& s& 8øЉ(¶ oR ,sÚ¥& s' 8ÏÐ!(¶ oR ,sÞ¥& s( 8¦Ð{(¶ oR ,sâ¥& s) 8}ÐC(¶ oR ,sæ¥& s* +WÐY(¶ oR ,sê¥& s+ +1Ðy(¶ oR ,sî¥& s, + r³žp(§+€- *0~- *(. *0(/ *:(0 }1 *0{1 þo *(2 *0 l(/ *:(0 }3 *0{3 þo *(4 *0!!Ó/*!Ó1**:(0 }5 *0{5 þo *(6 *0(7 *:(0 }8 *0{8 þo *(9 *0(: *:(0 }; *0{; þo *(× *0(< *:(0 }= *0{= þo *(> *0(? *:(0 }@ *0{@ þo *(A *0(B *:(0 }C *0{C þo *0 (a &*0jÐn(¶ Ðx(¶ oR ,sõ¥ sD +1Ðw(¶ oR ,sù¥ sE + r½žp(¥+€F *0~F *(ß *0(G *:(Ñ }H *0{H þoÓ *(â *0 l(G k*:(Ñ }I *0{I þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s¥ sJ +1Ðw(¶ oR ,s¥ sK + rÅžp(¥+€L *0~L *(ß *0(M *:(Ñ }N *0{N þoÓ *(â *0 l(M k*:(Ñ }O *0{O þoÓ *0 (a &*0j¤Ðn(¶ Ðx(¶ oR ,s ¥¿ sP +1Ðw(¶ oR ,s¥¿ sQ + rÑžp(¨+€R *0~R *(ß *0(S *:(? }T *0{T þoÑ *(â *0 l(S k*:(? }U *0{U þoÑ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s¥ sV +1Ðw(¶ oR ,s¥ sW + rÛžp(¥+€X *0~X *(ß *0(Y *:(Ñ }Z *0{Z þoÓ *(â *0 l(Y k*:(Ñ }[ *0{[ þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s!¥ s\ +1Ðw(¶ oR ,s%¥ s] + rãžp(¥+€^ *0~^ *(ß *0(_ *:(Ñ }` *0{` þoÓ *(â *0 l(_ k*:(Ñ }a *0{a þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s,¥ sb +1Ðw(¶ oR ,s0¥ sc + rížp(¥+€d *0~d *(ß *0(e *:(Ñ }f *0{f þoÓ *(â *0 l(e k*:(Ñ }g *0{g þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,s7¥ sh +1Ðw(¶ oR ,s;¥ si + rõžp(¥+€j *0~j *(ß *0(k *:(Ñ }l *0{l þoÓ *(â *0 l(k k*:(Ñ }m *0{m þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,sB¥ sn +1Ðw(¶ oR ,sF¥ so + rÿžp(¥+€p *0~p *(ß *0(q *:(Ñ }r *0{r þoÓ *(â *0 l(q k*:(Ñ }s *0{s þoÓ *0 (a &*0jÐn(¶ Ðx(¶ oR ,sM¥ st +1Ðw(¶ oR ,sQ¥ su + rŸp(¥+€v *0~v *(ß *0(w *:(Ñ }x *0{x þoÓ *(â *0 l(w k*:(Ñ }y *0{y þoÓ *0 (a &*0j¦Ðn(¶ Ðx(¶ oR ,sX¥- sz +1Ðw(¶ oR ,s^¥- s{ + rŸp(©+€| *0~| *(ý *0 (} *:(Ñ }~ *0{~ þoÓ *:( }€ *0§{€ o s‚ *( *0 ll(} k*:(Ñ }ƒ *0{ƒ þoÓ *:( }„ *0§{„ o s… *0 þ(ª+*0 r”psJ z0 r«“psJ z0 þ(«+*0 r˜psJ z0 rÛ˜psJ z0 r9™psJ z0 rWpsJ z0 r™™psJ z0 r÷™psJ z0 rWšpsJ z0| rekpsJ z0 rµšpsJ z0 r›psJ z0 r•œpsJ z0 r÷œpsJ z0 |þ*0 þ(p+*0 þ(o+*0 þ(u+*0(‰rp(ì oí s, z0(‰rKp(ì oí s, z0@PuË,6tË (7 (í (ñ (ð tË (# +Â*0!cuË,tË X(7 +á*0oµuË,HtË (7 (í /(‰r›ep(ì oí r?ypsx z-*Y+°(‰rQp(ì oí r?ypsx z0$(a &}† {† }‡ }ˆ *00‚{ˆ ,!{‡ uÈ, tÈ(% *(¬+*(­+*0(‰ *0Z¨{ˆ ,8{‡ uÈ,'tÈ (& }‡ {‡ uÇþþ**}ˆ {‡ uÇþþ*0 (‰ Œn*0}ˆ {† }‡ *0*0 (Š &*0 s‹ *0ªŒ. u/ , *sŒ *V(? } }Ž *0{ {Ž þo *0} (‘ &*0{ o’ þog *0 (“ &*0 s” *02­Œ0 u1 , *u½ , s• *s– *V(‘ }— }˜ *0{— {˜ þo™ *0}š (› &*0{š oœ þo *0}ž (› &*0{ž oŸ þ(®+*0 (  &*0J±Œ2 u3 , *uà , s¡ *uÅ, s¢ *s£ *0 s¤ *0}¥ (¦ &*0{¥ o§ þo¨ *0}© (¦ &*0{© oª þ(¯+*0}¬ (¦ &*0{¬ o­ þ(°+*V(› }¯ }° *0 {¯ {° þo± *0 (² &*0 s³ *0b¶Œ4 u5 , *uÍ , s´ *uÏ, sµ *uÑ, s¶ *s· *V(¦ }¸ }¹ *0 {¸ {¹ þoº *0}» (¼ &*0 {» o½ þo¾ *0}¿ (¼ &*0{¿ oÀ þ(±+*0} (¼ &*0{ oà þ(²+*0}Å (¼ &*0 {Å oÆ þ(³+*0 |þ*0 þ(o+*0 þ(´+*0 þ(µ+*0 þ(p+*0 þ(¶+*0 (ª+*0 (¬+*0 (n+*0 (m+*0(ª+,**0(ª+,**0 (·+*0(¸+*0~*0~*0~*0 þ(u+*0 þ(v+*0 þ(¹+*0sÈ *0sÉ *0~*0~*0~*0~ *0~!*0~"*0~#*0~$*0~%*0~&*0~'*0~(*0~)*0~**0~+*0ÉÐC(¶ oR ,*ÐY(¶ oR ,*Ð|(¶ oR ,*Ð}(¶ oR ,*Ð~(¶ oR ,*Ðx(¶ oR ,*Ðw(¶ oR ,*Ð!(¶ oR ,*Ð)(¶ oR ,(ÇŒ7¥¶*sÊ *0õÐ}(¶ oR ,(ÏŒ?¥¶*Ð~(¶ oR ,(ÐŒ@¥¶*Ј(¶ oR ,(ÑŒA¥¶*Ðx(¶ oR ,(ÒŒB¥¶*Ðw(¶ oR ,(ÓŒC¥¶*Ð!(¶ oR ,(ÔŒD¥¶*Ð)(¶ oR ,(ÇŒ7¥¶*sË *0÷Ð*(¶ oR ,(ÆŒ6¥¶*Ðy(¶ oR ,(ÈŒ8¥¶*Ð{(¶ oR ,(ÉŒ9¥¶*ÐC(¶ oR ,(ÊŒ:¥¶*ÐY(¶ oR ,(ËŒ;¥¶*Љ(¶ oR ,(ÌŒ<¥¶*Ð|(¶ oR ,(ÎŒ>¥¶*(º+*0~Ì *0~Í *0 Œ¥d*0 Œ¥d*0!{(Î x3+oþ,*bþ*01‰X þþ,( 0þ+,X( (Ü**0+(Ý,XX( (Î sÏ *dsÏ *00‰X þþ,( -þ+,sÄ *sÄ *0@‰X þþ,( -þ+,!ÿÿÿÿÿÿÿÿsÐ *!sÐ *0 i{/bX!Z( 02 7þþ+,(Ñ 0(Ñ Y+(‰rŸp(ì oí sØ zX+™*0·  !(á*0 i/bX!Z( 0YE&(‰rŸp(ì oí sØ z!+ !X+™*0·  !(ã*0Á¹(Ò ( (Þ (Ó (Ô 2(‰rŸp(ì oí sØ z bYE_ oYEC xYE(" ( ¥B(Õ *(" ( ¥B(Õ *(â(Ö *(ä(Ö *0óº(Ò ( (ß (ñ (ð (Þ(Ó (Ô 2(‰rŸp(ì oí sØ z( (× bYEcoYEDxYE( ¥B(Ø * (" ( ¥B(Ù (Ö Z* (â(Ö Z* (ä(Ö Z*0ä¼(Ò ( (à (Ú (Û (Þ(Ó (Ô 2(‰rŸp(ì oí sØ z( (× bYEYoYE?xYE( ¥B(Ü * (" ( ¥B(Ü Z* (âZ* (äZ*0·¹(Ò ( (Þ (Ó (Ô 2(‰rŸp(ì oí sØ z bYEZ oYEC xYE(" ( ¥B(Ù *(" ( ¥B(Ù *(â*(ä*01ýÐz(¶ oR , Œz¥*Ð|(¶ oR , Œ|¥*Ð}(¶ oR , Œ}¥*Ð~(¶ oR ,!Œ~¥*Ј(¶ oR ,!àŒˆ¥*Ð!(¶ oR ,sA Œ!¥*Ðx(¶ oR ,#Œx¥*Ðw(¶ oR ,"Œw¥*r9ŸpoÝ o» ¥*01ýÐ|(¶ oR , Œ|¥*Ð*(¶ oR , Œ*¥*Ð}(¶ oR , Œ}¥*Ð~(¶ oR ,!Œ~¥*Ј(¶ oR ,!àŒˆ¥*Ð!(¶ oR ,sA Œ!¥*Ðx(¶ oR ,#ð?Œx¥*Ðw(¶ oR ,"€?Œw¥*rCŸpoÝ o» ¥*0~Þ *0~ß *0(¦+*0(w+*0~à þ(»+*0 þ(®+*0ľrKŸp%¤%¤oì oR ,+"rKŸp%¤%¤oì ,9,-,¥á+(‰rcŸp(ì oí st z sâ * sã *, +ò,¥á+(‰r‰Ÿp(ì oí st z sä *0Ðz(¶ oR ,sUŒå¥á*Ð|(¶ oR ,sWŒæ¥á*Ð}(¶ oR ,sYŒç¥á*Ð~(¶ oR ,s[Œè¥á*Ј(¶ oR ,s]Œé¥á*Ðx(¶ oR ,s_Œê¥á*Ðw(¶ oR ,saŒë¥á*Ð)(¶ oR ,scŒ[¥á*(¼+*0~å þ(C+*0ľrKŸp%¤%¤oì oR ,+"rKŸp%¤%¤oì ,9,-,¥á+(‰rcŸp(ì oí st z sæ * sç *, +ò,¥á+(‰r‰Ÿp(ì oí st z sè *0Ð|(¶ oR ,s~Œæ¥á*Ð*(¶ oR ,s€Œð¥á*Ð}(¶ oR ,s‚Œç¥á*Ð~(¶ oR ,s„Œè¥á*Ј(¶ oR ,s†Œé¥á*Ðx(¶ oR ,sˆŒê¥á*Ðw(¶ oR ,sŠŒë¥á*Ð)(¶ oR ,sŒŒ[¥á*(½+*0~é þ(C+*0ľr«Ÿp%¤%¤oì oR ,+"r«Ÿp%¤%¤oì ,9,-,¥á+(‰rßp(ì oí st z sê * së *, +ò,¥á+(‰rëŸp(ì oí st z sì *0Ðz(¶ oR ,s¥Œå¥á*Ð|(¶ oR ,s§Œæ¥á*Ð}(¶ oR ,s©Œç¥á*Ð~(¶ oR ,s«Œè¥á*Ј(¶ oR ,s­Œé¥á*Ðx(¶ oR ,s¯Œê¥á*Ðw(¶ oR ,s±Œë¥á*Ð)(¶ oR ,s³Œ[¥á*(¾+*0~í þ(C+*0ľr«Ÿp%¤%¤oì oR ,+"r«Ÿp%¤%¤oì ,9,-,¥á+(‰rßp(ì oí st z sî * sï *, +ò,¥á+(‰rëŸp(ì oí st z sð *0Ðz(¶ oR ,sÌŒå¥á*Ð|(¶ oR ,sÎŒæ¥á*Ð}(¶ oR ,sÐŒç¥á*Ð~(¶ oR ,sÒŒè¥á*Ј(¶ oR ,sÔŒé¥á*Ðx(¶ oR ,sÖŒê¥á*Ðw(¶ oR ,sØŒë¥á*Ð)(¶ oR ,sÚŒ[¥á*(¿+*0~ñ þ(C+*0 (a &*0 þ(d+*0 þ(+*0}ò (a &*0{ò þ(:+*0 þ(+*0 (a &*0 4*þ*0 (a &*0 (Ý *0 (a &*0 /*þ*0 (a &*0 /*þ*0 (a &*0 /*þ*0 (a &*0 /*þ*0 (a &*0 /*þ*0 (a &*0 4*þ*0 (a &*0 4*þ*0 (a &*0 4*þ*0 (a &*0 4*þ*0 (a &*0 4*þ*0 (a &*0þ,*þ*0 (a &*0þ,*þ*0 (a &*0 þ(À+*0 (a &*0û–Ðn(¶ Љ(¶ oR ,(ÌŒ<¥ê8„Ј(¶ oR ,(ÑŒA¥ê+`Ðz(¶ oR ,+JÐ*(¶ oR ,+4Ðy(¶ oR ,+Ð{(¶ oR ,+(Á+€ó Ðn(¶ Ðz(¶ oR ,(ÍŒ=¥ê+(Â+€ô *0~ô *0~ó *0 (a &*0 þ(Ã+*0 (a &*0 þ(Ã+*0 (a &*0Ó–Ðn(¶ Ðy(¶ oR ,Œy¥n8Ð{(¶ oR ,Œ{¥n8zÐC(¶ oR ,ŒC¥n+ZÐY(¶ oR ,!ŒY¥n+2Љ(¶ oR ,!ÓŒ‰¥n+ (Ä+€õ *0~õ *0 (a &*0ö–Ðn(¶ Ðy(¶ oR ,Œy¥n8ÀÐ{(¶ oR ,Œ{¥n8ÐC(¶ oR ,ŒC¥n8zÐY(¶ oR ,!ŒY¥n+RЉ(¶ oR ,!ÓŒ‰¥n+)Ðz(¶ oR ,Œz¥n+ (Å+€ö *0~ö *0 (a &*0éÀÐn(¶ Ð!(¶ oR ,s2Œþ¥J8¯Ðx(¶ oR ,s4Œÿ¥J8ˆÐw(¶ oR ,s6Œ¥J+dr p%¤%ÐC(¶ ¤oì , s÷ +-,¥J+(‰r' p(ì oí st z sø €ù *0~ù *(ú *0(û (ü *(ý *0l[*(þ *0k[*:(ÿ } *0 3{ %Œn¤%ŒC¤oé ¥n*:( } *0{ þoá *:( } *0Â{ o s *0 (a &*0ÃÐn(¶ Ðo(¶ Ðu(¶ oR , oR +9ÆÐy(¶ oR ,sKŒ¥.8¨Ð{(¶ oR ,sMŒ¥.8ÐC(¶ oR ,sOŒ¥.+]ÐY(¶ oR ,sQŒ¥.+9Љ(¶ oR ,sSŒ ¥.+(Æ++ (Ç+€ *0~ *:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *:(‘ } *0 3{ %Œn¤%Œo¤oé ¥u*:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *(¤ *0Xg*(  *0Xh*(” *0X*(– *0X*(œ *0X*(¦ *0XÒ*(¢ *0XÑ*(š *0X*(˜ *0X*(ž *0X*(ý *0X*( *0X*( *0 (+ *0 (a &*09ÃÐn(¶ Ðo(¶ Ðu(¶ oR , oR +9íÐy(¶ oR ,srŒ¥.8ÏÐ{(¶ oR ,stŒ¥.8¨ÐC(¶ oR ,svŒ¥.8ÐY(¶ oR ,sxŒ¥.+]Љ(¶ oR ,szŒ ¥.+9Ðz(¶ oR ,s|Œå¥.+(È++ (É+€ *0~ *:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *:(‘ } *0 3{ %Œn¤%Œo¤oé ¥u*:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *(¤ *0Ö³*(  *0Öµ*(” *0Ö*(– *0Ö*(œ *0Ö*(¦ *0׆*(¢ *0ׇ*( *0ׇ*(š *0×*(˜ *0×*(ž *0×*(ý *0X*( *0X*( *0 (+ *0 (a &*0ÃÐn(¶ Ðo(¶ Ðu(¶ oR , oR +9ÆÐy(¶ oR ,s›Œ¥.8¨Ð{(¶ oR ,sŒ¥.8ÐC(¶ oR ,sŸŒ¥.+]ÐY(¶ oR ,s¡Œ¥.+9Љ(¶ oR ,s£Œ ¥.+(Ê++ (Ë+€ *0~ *:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *:(‘ } *0 3{ %Œn¤%Œo¤oé ¥u*:(? } *0{ þoÑ *:(Š } *0Å{ o’ s *(¤ *0Zg*(  *0Zh*(” *0Z*(– *0Z*(œ *0Z*(¦ *0ZÒ*(¢ *0ZÑ*(š *0Z*(˜ *0Z*(ž *0Z*(ý *0Z*( *0Z*( *0 (+ *0 (a &*0ÃÐn(¶ Ðo(¶ Ðu(¶ oR , oR +9ÆÐy(¶ oR ,sÂŒ¥.8¨Ð{(¶ oR ,sÄŒ¥.8ÐC(¶ oR ,sÆŒ¥.+]ÐY(¶ oR ,sÈŒ¥.+9Љ(¶ oR ,sÊŒ ¥.+(Ì++ (Í+€! *0~! *:(? }" *0{" þoÑ *:(Š }# *0Å{# o’ s$ *:(‘ }% *0 3{% %Œn¤%Œo¤oé ¥u*:(? }& *0{& þoÑ *:(Š }' *0Å{' o’ s( *(¤ *0س*(  *0ص*(” *0Ø*(– *0Ø*(œ *0Ø*(¦ *0Ù†*(¢ *0Ù‡*(š *0Ù*(˜ *0Ù*(ž *0Ù*(ý *0Z*( *0Z*( *0 (+ *0ŒŒþ*0 Œ( *0-¾(º o (‰rO p(ì oí (¾ s* z0~*0ËÆuó 9uuó ,   (ê*u,?u,(ë*u8,  (é*(Î+*u8,í +Ýu,(u, +¡u8,¹ +©u8,§ 8”ÿÿÿ0ÍÇ(N+-U(M+-8¬(M+-+ï¥w ¥w (D , (D +, { +,(ßz8f(N+-'(M+-+¡(M+-8”ÿÿÿ¥w ¥w +£¥x ¥x (F , (F +, { +,(ßzþob *0iÊ9\9Tu) 9ßu) ,   (Ý *u8,þ(à*uN,¥þo*u,  þ(á*(Í+:·(Î+-auN,$  ¥o  /* 1**u  ,   ob   /* 1**(Î+*(Î+-'uN,  8’ÿÿÿu  ,Ð  +°¥ˆ ¥ˆ 4* þ*(Í+:(Î+--uN,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(Î+--uN,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥ˆ ¥ˆ8gÿÿÿ¥‰¥‰/*þ*u8, 83þÿÿuN, 8<þÿÿu,  8Hþÿÿ(Í+:(Î+--uN,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(Î+--uN,  8þÿÿu  9Wþÿÿ  84þÿÿ¥ˆ ¥ˆ8þÿÿ(Í+:(Î+--uN,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(Î+--uN,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥ˆ ¥ˆ8õýÿÿ¥‰¥‰8‰þÿÿ*,**0@‰2*() () (â ,*!X+À0 d‰ 2*X X(* X X(* (â ,* !X +œ0 ~Ì      2* !(ä  , * !X 8‚ÿÿÿ0cÍ2*(+ (+ /+þ ,*(™ (™ /+þ , *X+0 }‰2*X¤YY3(, (, (â+X(è ,*!X8ƒÿÿÿ0 2‰2*(™ j!(+ (ç*0 ÏÏ(— 3 (— þ+,?(- (- /+þ ,* !(ã*(— 3 (— þ+9ç(+ (+ /+þ ,*(+ (+ /+þ,*(™ j (™ j (™ j (™ j   /+  þ  , *  /+  þ,*         !(å*(— (—   /+ þ ,*(—  (æ,*Y (è*0R™Ži Ži /+þ ,*  /* £ £(â,  +Ù X +Ò*0aÐŽi Ži /+þ ,*  /9 £z £z/+þ,  +Ê X +Ã*0~*0~*0ŒŒþo. *0(í¥þ(¶+*04(ì¥(¶+þ Þt (ß(@ , Þþ*04(ì¥(¶+þ Þt (ß(@ , Þþ*04(ì¥(¶+þ Þt (ß(@ , Þþ*04(ì¥(¶+þ Þt (ß(@ , Þþ*0DÑŽi Ži þ -*  /% £z £zþ- +Þ X +×*0DÑŽi Ži þ -*  /% £C £Cþ- +Þ X +×*0', þþ+, þþ+,*þ*0HÑŽi Ži þ -*  /) £w £w(ö- +Ú X +Ó*0', þþ+, þþ+,*þ*0HÑŽi Ži þ -*  /) £x £x(ø- +Ú X +Ó*0DÑŽi Ži þ -*  /% £* £*þ- +Þ X +×*0DÑŽi Ži þ -*  /% £Y £Yþ- +Þ X +×*0TÕuó 9¿uó ,   (*u9çu,(ô*u9öu  ,     (õ*u*  9ûu*  ,  (û*u+9ûu+,(ú*u,9ƒu,,(÷*u-,Eu-,(ù*u8,(*þoÿ *u8,ê+Øu-,(u-, +šu8,µ+£u8,£8Žÿÿÿu,,ou,, 8!ÿÿÿu-,1u-, 8'ÿÿÿu89?ÿÿÿ8*ÿÿÿu89'ÿÿÿ8ÿÿÿu-,1u-, 8Ñþÿÿu89éþÿÿ8Ôþÿÿu89Ñþÿÿ8¼þÿÿu+9ëu+, 8þÿÿu,,ou,, 8&þÿÿu-,1u-, 8,þÿÿu89Dþÿÿ8/þÿÿu89,þÿÿ8þÿÿu-,1u-, 8Öýÿÿu89îýÿÿ8Ùýÿÿu89Öýÿÿ8Áýÿÿu,,ou,, 8Týÿÿu-,1u-, 8Zýÿÿu89rýÿÿ8]ýÿÿu89Zýÿÿ8Eýÿÿu-,1u-, 8ýÿÿu89ýÿÿ8ýÿÿu89ýÿÿ8ïüÿÿu*  9æu*  ,   8#üÿÿu+9ëu+, 8(üÿÿu,,ou,, 80üÿÿu-,1u-, 86üÿÿu89Nüÿÿ89üÿÿu896üÿÿ8!üÿÿu-,1u-, 8àûÿÿu89øûÿÿ8ãûÿÿu89àûÿÿ8Ëûÿÿu,,ou,, 8^ûÿÿu-,1u-, 8dûÿÿu89|ûÿÿ8gûÿÿu89dûÿÿ8Oûÿÿu-,1u-, 8ûÿÿu89&ûÿÿ8ûÿÿu89ûÿÿ8ùúÿÿu+9ëu+, 8[úÿÿu,,ou,, 8cúÿÿu-,1u-, 8iúÿÿu89úÿÿ8lúÿÿu89iúÿÿ8Túÿÿu-,1u-, 8úÿÿu89+úÿÿ8úÿÿu89úÿÿ8þùÿÿu,,ou,, 8‘ùÿÿu-,1u-, 8—ùÿÿu89¯ùÿÿ8šùÿÿu89—ùÿÿ8‚ùÿÿu-,1u-, 8Aùÿÿu89Yùÿÿ8Dùÿÿu89Aùÿÿ8,ùÿÿu9Üu  ,    82øÿÿu*  9æu*  ,   87øÿÿu+9ëu+, 8<øÿÿu,,ou,, 8Døÿÿu-,1u-, 8Jøÿÿu89bøÿÿ8Møÿÿu89Jøÿÿ85øÿÿu-,1u-, 8ô÷ÿÿu89 øÿÿ8÷÷ÿÿu89ô÷ÿÿ8ß÷ÿÿu,,ou,, 8r÷ÿÿu-,1u-, 8x÷ÿÿu89÷ÿÿ8{÷ÿÿu89x÷ÿÿ8c÷ÿÿu-,1u-, 8"÷ÿÿu89:÷ÿÿ8%÷ÿÿu89"÷ÿÿ8 ÷ÿÿu+9ëu+, 8oöÿÿu,,ou,, 8wöÿÿu-,1u-, 8}öÿÿu89•öÿÿ8€öÿÿu89}öÿÿ8höÿÿu-,1u-, 8'öÿÿu89?öÿÿ8*öÿÿu89'öÿÿ8öÿÿu,,ou,, 8¥õÿÿu-,1u-, 8«õÿÿu89Ãõÿÿ8®õÿÿu89«õÿÿ8–õÿÿu-,1u-, 8Uõÿÿu89mõÿÿ8Xõÿÿu89Uõÿÿ8@õÿÿu*  9æu*  ,   8tôÿÿu+9ëu+, 8yôÿÿu,,ou,, 8ôÿÿu-,1u-, 8‡ôÿÿu89Ÿôÿÿ8Šôÿÿu89‡ôÿÿ8rôÿÿu-,1u-, 81ôÿÿu89Iôÿÿ84ôÿÿu891ôÿÿ8ôÿÿu,,ou,, 8¯óÿÿu-,1u-, 8µóÿÿu89Íóÿÿ8¸óÿÿu89µóÿÿ8 óÿÿu-,1u-, 8_óÿÿu89wóÿÿ8bóÿÿu89_óÿÿ8Jóÿÿu+9ëu+, 8¬òÿÿu,,ou,, 8´òÿÿu-,1u-, 8ºòÿÿu89Òòÿÿ8½òÿÿu89ºòÿÿ8¥òÿÿu-,1u-, 8dòÿÿu89|òÿÿ8gòÿÿu89dòÿÿ8Oòÿÿu,,ou,, 8âñÿÿu-,1u-, 8èñÿÿu89òÿÿ8ëñÿÿu89èñÿÿ8Óñÿÿu-,1u-, 8’ñÿÿu89ªñÿÿ8•ñÿÿu89’ñÿÿ8}ñÿÿu9Èu, 8Uðÿÿu9Üu  ,    8Zðÿÿu*  9æu*  ,   8_ðÿÿu+9ëu+, 8dðÿÿu,,ou,, 8lðÿÿu-,1u-, 8rðÿÿu89Šðÿÿ8uðÿÿu89rðÿÿ8]ðÿÿu-,1u-, 8ðÿÿu894ðÿÿ8ðÿÿu89ðÿÿ8ðÿÿu,,ou,, 8šïÿÿu-,1u-, 8 ïÿÿu89¸ïÿÿ8£ïÿÿu89 ïÿÿ8‹ïÿÿu-,1u-, 8Jïÿÿu89bïÿÿ8Mïÿÿu89Jïÿÿ85ïÿÿu+9ëu+, 8—îÿÿu,,ou,, 8Ÿîÿÿu-,1u-, 8¥îÿÿu89½îÿÿ8¨îÿÿu89¥îÿÿ8îÿÿu-,1u-, 8Oîÿÿu89gîÿÿ8Rîÿÿu89Oîÿÿ8:îÿÿu,,ou,, 8Ííÿÿu-,1u-, 8Óíÿÿu89ëíÿÿ8Öíÿÿu89Óíÿÿ8¾íÿÿu-,1u-, 8}íÿÿu89•íÿÿ8€íÿÿu89}íÿÿ8híÿÿu*  9æu*  ,   8œìÿÿu+9ëu+, 8¡ìÿÿu,,ou,, 8©ìÿÿu-,1u-, 8¯ìÿÿu89Çìÿÿ8²ìÿÿu89¯ìÿÿ8šìÿÿu-,1u-, 8Yìÿÿu89qìÿÿ8\ìÿÿu89Yìÿÿ8Dìÿÿu,,ou,, 8×ëÿÿu-,1u-, 8Ýëÿÿu89õëÿÿ8àëÿÿu89Ýëÿÿ8Èëÿÿu-,1u-, 8‡ëÿÿu89Ÿëÿÿ8Šëÿÿu89‡ëÿÿ8rëÿÿu+9ëu+, 8Ôêÿÿu,,ou,, 8Üêÿÿu-,1u-, 8âêÿÿu89úêÿÿ8åêÿÿu89âêÿÿ8Íêÿÿu-,1u-, 8Œêÿÿu89¤êÿÿ8êÿÿu89Œêÿÿ8wêÿÿu,,ou,, 8 êÿÿu-,1u-, 8êÿÿu89(êÿÿ8êÿÿu89êÿÿ8ûéÿÿu-,1u-, 8ºéÿÿu89Òéÿÿ8½éÿÿu89ºéÿÿ8¥éÿÿu9Üu  ,    8«èÿÿu*  9æu*  ,   8°èÿÿu+9ëu+, 8µèÿÿu,,ou,, 8½èÿÿu-,1u-, 8Ãèÿÿu89Ûèÿÿ8Æèÿÿu89Ãèÿÿ8®èÿÿu-,1u-, 8mèÿÿu89…èÿÿ8pèÿÿu89mèÿÿ8Xèÿÿu,,ou,, 8ëçÿÿu-,1u-, 8ñçÿÿu89 èÿÿ8ôçÿÿu89ñçÿÿ8Üçÿÿu-,1u-, 8›çÿÿu89³çÿÿ8žçÿÿu89›çÿÿ8†çÿÿu+9ëu+, 8èæÿÿu,,ou,, 8ðæÿÿu-,1u-, 8öæÿÿu89çÿÿ8ùæÿÿu89öæÿÿ8áæÿÿu-,1u-, 8 æÿÿu89¸æÿÿ8£æÿÿu89 æÿÿ8‹æÿÿu,,ou,, 8æÿÿu-,1u-, 8$æÿÿu89<æÿÿ8'æÿÿu89$æÿÿ8æÿÿu-,1u-, 8Îåÿÿu89æåÿÿ8Ñåÿÿu89Îåÿÿ8¹åÿÿu*  9æu*  ,   8íäÿÿu+9ëu+, 8òäÿÿu,,ou,, 8úäÿÿu-,1u-, 8åÿÿu89åÿÿ8åÿÿu89åÿÿ8ëäÿÿu-,1u-, 8ªäÿÿu89Âäÿÿ8­äÿÿu89ªäÿÿ8•äÿÿu,,ou,, 8(äÿÿu-,1u-, 8.äÿÿu89Fäÿÿ81äÿÿu89.äÿÿ8äÿÿu-,1u-, 8Øãÿÿu89ðãÿÿ8Ûãÿÿu89Øãÿÿ8Ããÿÿu+9ëu+, 8%ãÿÿu,,ou,, 8-ãÿÿu-,1u-, 83ãÿÿu89Kãÿÿ86ãÿÿu893ãÿÿ8ãÿÿu-,1u-, 8Ýâÿÿu89õâÿÿ8àâÿÿu89Ýâÿÿ8Èâÿÿu,,ou,, 8[âÿÿu-,1u-, 8aâÿÿu89yâÿÿ8dâÿÿu89aâÿÿ8Lâÿÿu-,1u-, 8 âÿÿu89#âÿÿ8âÿÿu89 âÿÿ8öáÿÿ0î×9á9Ùu) 9u) ,   (ë *u8,þ(ü*uO,þo*(N+-X(M+- þoÿ *(M+-+ì¥w¥w ,   þþ+, þþ+,* þ*(N+-)(M+-+ž(M+-8‘ÿÿÿ¥w¥w +£¥x ¥x ,   þþ+,   þþ+,*  þ*u8, 8óþÿÿuO, 8ýþÿÿ(N+-/(M+-8ÿÿÿ(M+-8÷þÿÿ¥w¥w 8ÿÿÿ(N+-/(M+-8Íþÿÿ(M+-8Àþÿÿ¥w¥w 8Ïþÿÿ¥x ¥x 8'ÿÿÿ*,**0 D2*() () (ý, !X+¿*0h 2* X X(*  X X(* (ý,4  !X  +›*0‚Ù        2*  !(ÿ,7  !X  8ÿÿÿ*0@2*(+ (+ 3(™ (™ þ+,X+Ã*0 ‚ 2*X¤YY3(, (, (ý+X(,3!X  8€ÿÿÿ*0 5‰2*(™ j!(+ (*0 wÚ(— 3 (— þ+,5(- (- 3!  !(þ**(— 3 (— þ+9²(+ (+ @™(+ (+ @|(™ j(™ j (™ j (™ j  3   þ+,?          !(****(— (— 3J(— (,*Y  (***0IÑŽi Ži þ -*  /* £ £(ý- +Ù X +Ò*0~*0~*0(ŒŒþo/ *0(ŒŒþo/ *0ŒŒþo/ *0*0~*0~*0O™Ži Y 1 +  þþ,+ (¾ o0 bX w ZX Y +Ê*0I™Ži Y 1 +  þþ,% £zbX w ZX Y +Ð*0I™Ži Y 1 +  þþ,% £CbX w ZX Y +Ð*0J™Ži Y 1 +  þþ,& £YibX w ZX Y +Ï*0‘Û(— YE(› (› bX ¦X*(™ (˜ XY X1X + þþ,- (¾ o0 bX wZX Y +Æ *0Ü9•u8 ,g uó ,   (*u, (*u, (*u*,   (*(*uO  ,   þo*þo³ **0( ¥"Œþ(*0s-¥"Œþ(*0Œþ(*0%Ý(Ž ( (¹+ bX(Ï+a*0=Þ() (( (' (¹+bX(Ï+a b X(Ð+a*0Xß(1 (2 (3 (4 (¹+bX(Ï+abX(Ð+bX (Ñ+aa*0rá(5 (6 (7 (8 (9 (¹+bX(Ï+abX(Ð+bX (Ñ+aabX(Ò+a*04â(Ž ( (Ž ( (µ+,  þ(Ó+**0Uã() (( (' () (( ('  (µ+, (Ó++, þ(Ô+**0vä(1 (2 (3 (4 (1 (2 (3 (4 (µ+, (Ó++, (Ô++,  þ(Õ+**0—å(5 (6 (7 (8 (9 (5 (6 (7 (8 (9  (µ+, (Ó++, (Ô++,  (Õ++,  þ(Ö+**09æ(Ž ( (Ž ( (¶+,* þ(×+*0\ç() (( (' () (( ('  (¶+,*(×+,*þ(Ø+*0è(1 (2 (3 (4 (1 (2 (3 (4 (¶+,*(×+  , *(Ø+  , * þ(Ù+*0¢é(5 (6 (7 (8 (9 (5 (6 (7 (8 (9  (¶+  , *(×+  , *(Ø+  , * (Ù+  , * þ(Ú+*0(a &} *0{ *0 þ(â*0 þ(â*0 (a &*0 þ(ý*0(‰rw p(ì oí s, z0 (a &*0 þ(ý*0(‰rw p(ì oí s, z0(a &} *0#| { ( -*{ s-*0¥"þ(ý*0){ Y} { 1¥"þ(**0 (a &*0¥"þ(ý*0¥"þ(*0 (a &*0¥"þ(ý*0¥"þ(*0*0*0*0*0*0(‰þ,+~: þþ,¥*s; z0¥*0uþ,*þ,*~: þ*0 uþ*0|Œ, þoI **0(‰rQjp(ì oí s, z0(‰r› p(ì oí s, z0%Œ,*(‰rQjp(ì oí s, z0 sA *0 ( *0(Û+*0 £*0 ¤*0 ( *0 ( *0 rê/+ /+ s Y 2AY2&XX( ( XX3ÚX X3¿*0@  Y 24 Y  2X X ( ( X X3áX X3Ì*0 ( *0 ( *0 ¨ë/+ /+ /+ s Y2dY2H Y 2,  XX X( (  X  X3ÔXX3¸XX3œ *0 d™ Y 2W Y  2BY2)X XX ( ( XX3× X X3¾X X3©*0 ( *0( *0 ãì/+ /+ /+ /+  s Y?‹Y2l Y   2P Y   24  XX X X( (  X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 ŽC Y ?~ Y  2fY2MY20X XXX  ( ( XX3ÐXX3³ X X3šX X@‚ÿÿÿ*0 (a &*0ÅîÐn(¶ o= ,8£Ð.(¶ o± Ži-8…Ð(¶ oR ,8lÐT(¶ o? ,+VÐ(¶ o± Ži1+<Ð0(¶ o± Ži-+!£ ¥0(X_-+€> *0~> *0,**0,**0,**0,**0 r» psJ z0 r#¡psJ z0~*0~*0~*0~*0~*0}ïŽiY 1\ ZX/OZ X 3£C¤C +)£CbX£Ca¤C 3 +X +©+ £C bX£Ca*0Hõ{? {? @.(@ E3j¡Øt3 t3 (¾(A  (A þ(¶+*t4t4(¾(B  (B    þ(×+*t5 t5 (¾ (C   (C  þ(Ø+*t6t6(¾(D (D þ(Ù+*t7t7(¾(E (E þ(Ú+*Y*00ö¥2þ9{? {? @(@ E+Z‰¸t3 t3 (A  (A þ(¶+*t4t4(B (B   þ(×+*t5 t5  (C   (C    þ(Ø+*t6t6(D (D þ(Ù+*t7t7(E (E þ(Ú+*Y**0/øu2 9{? {? @(@ E-\‹ºt3 t3 (A (A þ(µ+*t4t4(B  (B    þ(Ó+*t5 t5  (C   (C  þ(Ô+*t6t6(D (D þ(Õ+*t7t7(E (E þ(Ö+***0\(F E/d™Ît9 t9 (¾ (G (G  þ(¶+*t:t:(¾ (H (H þ(×+*t; t; (¾  (I   (I    þ(Ø+*t< t<(¾  (J (J þ(Ù+*t=t=(¾ (K (K þ(Ú+*t>t>(¾ (L (L þ(Ü+*0S{M {M @9(F E+Z‰¸çt9 t9 (G  (G þ(¶+*t:t:(H (H   þ(×+*t; t;  (I   (I    þ(Ø+*t<t<(J (J þ(Ù+*t=t=(K (K þ(Ú+*t>t>(L (L þ(Ü+*Y*0F (F E-\¾ït9  ¹y7ž(G Œ(bcXXX *t:  ¹y7ž (H Œd(bcXXX *t; ¹y7ž(I ŒN(bcXXX *t< ¹y7ž(J ŒV(bcXXX *t=  ¹y7ž (K   Œ?(bcXXX *t>  ¹y7ž (L   Œ@(bcXXX *0Q{M {M @9(F E+Z‰¸çt9 t9 (G  (G þ(µ+*t:t:(H (H   þ(Ó+*t; t;  (I   (I    þ(Ô+*t<t<(J (J þ(Õ+*t=t=(K (K þ(Ö+*t>t>(L (L þ(Ý+**0K{M {M @3(F E*X†´ât9 t9 (G  (G þ(´+*t:t:(H (H   þ(Þ+*t; t;  (I   (I    þ(ß+*t<t<(J (J þ(à+*t=t=(K (K þ(á+*t>t>(L (L þ(â+**0• (N E/d™Î8tB tB (¾ (O (O  þ(¶+*tCtC(¾ (P (P þ(×+*tD tD (¾  (Q   (Q    þ(Ø+*tE tE(¾  (R (R þ(Ù+*tFtF(¾ (S (S þ(Ú+*tGtG(¾ (T (T þ(Ü+*tHtH(¾ (U (U þ(ã+*0i (N E'V…´ãtB tB (O (O  þ(¶+*tCtC(P (P þ(×+*tDtD (Q   (Q    þ(Ø+*tE tE  (R  (R þ(Ù+*tFtF(S (S þ(Ú+*tGtG(T (T þ(Ü+*tHtH(U (U þ(ã+*0{  (N E-\¾ï tB  ¹y7ž(O Œ(bcXXX *tC  ¹y7ž (P Œd(bcXXX *tD ¹y7ž(Q ŒN(bcXXX *tE ¹y7ž(R ŒV(bcXXX *tF  ¹y7ž (S   Œ?(bcXXX *tG  ¹y7ž (T   Œ@(bcXXX *tH  ¹y7ž (U ŒI(bcXXX *0i (N E'V…´ãtB tB (O (O  þ(µ+*tCtC(P (P þ(Ó+*tDtD (Q   (Q    þ(Ô+*tE tE  (R  (R þ(Õ+*tFtF(S (S þ(Ö+*tGtG(T (T þ(Ý+*tHtH(U (U þ(ä+*0b (N E&T‚°Þ tB tB (O (O  þ(´+*tCtC(P (P þ(Þ+*tDtD (Q   (Q    þ(ß+*tE tE  (R  (R þ(à+*tFtF(S (S þ(á+*tGtG(T (T þ(â+*tHtH(U (U þ(å+*0<µuË,3tË (7 (í /¤X+Æ**0ª(‰r™¡p(ì oí €(‰rÇ¡p(ì oí €(‰ré¡p(ì oí €(‰r¢p(ì oí €(‰r›ep(ì oí €sç €s#€s#€s'€s*€s1€s4€(í¥€( ¥"€( ¥"€s€s€s€s € s €!s €"s€#s€$s€%s€&s€'s€(s€)s€*s€+r+¢ps, sª€›*:(? }V *0{V þoW *0}X (a *0{X þoÑ *:(? }Y *0{Y þoW *0}Z (a *0{Z þoÑ *:(1 }[ *0{[ o\ *:(? }] *0{] þoW *:(? }^ *0{^ þoÑ *:(‘ }_ *0{_ so þo` *:(› }a *0{a sš þob *:(¦ }c *0 {c sd þoe *:(¼ }f *0 {f sg þoh *0~8*0ráap*0r7‘p*0rQp*0rsp*0rUbp*0rp*0róŒp*0rKp*0r›¢p*0râp*0rõ¢p*0r‘p*0r›ep*0r“‘p*0ré¡p*0rùbp*0rcp*0rMŒp*0r'kp*0r¢p*0r£p*0rcnp*0r‰np*0rujp*0rop*0r9op*0r•jp*0rÓjp*0rgop*0rK£p*0r¡’p*0r+lp*0r™¡p*0rO p*0rw p*0rŸp*0r' p*0r‰Ÿp*0rcŸp*0rëŸp*0rßp*0re£p*0r³p*0rßp*0ržp*0r!žp*0rQjp*0r› p*0rÇ¡p*0rÅ‚p*0rƒ‹p*0rÓdp*0radp*0rïdp*0rkŒp*0rE‹p*0rg‹p*0r»‹p*0rå‹p*0r Œp*0r/Œp*0r›cp*0rAdp*0rÝp*0rËkp*0rõ‚p*0rƒp*0rSƒp*0r•ƒp*0rÓƒp*0r=„p*0r „p*0ry„p*0ra…p*0r‰…p*0r¿„p*0rŠp*0r‹p*0r[‘p*0rùkp*0rÉ‘p*0r}vp*0r¹vp*0rùvp*0rg~p*0r‹~p*0r)vp*0rÿup*0rñwp*0r5p*0rxp*0r}xp*0rWp*0råxp*0rup*0r±p*0rÇyp*0rûyp*0r/zp*0rõp*0rËzp*0r[{p*0r³{p*0r |p*0r=|p*0ri|p*0ra€p*0r§€p*0r‘wp*0r}£p*0r¿wp*0rSxp*0r«xp*0ryp*0rCyp*0rwyp*0rUzp*0r•zp*0r{p*0rízp*0ró|p*0r{}p*0r¹}p*0rï}p*0rµ~p*0rq€p*0rÙup*0rQwp*0rË|p*0r+}p*0rS}p*0rû~p*0r‚p*0rûmp*0(‰(ì þoí *0(‰(ì oí (¾ *0(‰(ì oí (i *0(‰(ì oí (> *0›r›£p(j sk €8*sl *"sÛ *&s% **sm *2sn *:so *Bsp *0 sq *"bXa*0P ŽiY +8 +.Ø Ö 3 ”ž +” ”(#ž 3 X Ø1Ì0Ä””(#*{s *:(a }s *6(t (u *0W-*u\ -+r©£p (º o ¢(kró£psx z{s Œn{s Œno/ *6(v (w *0W-*u\ -+r©£p (º o ¢(kró£psx z{s Œn{s Œno. *2(t (x *J{s Œno0 *"(x *0#s rU`po &o*–{s Œnoy &r}`po &o * *{z *{{ *V(a }z }{ *6(t (| *0w-*uÙ -+r©£p (º o ¢(kró£psx z{z Œn{z Œno/ ,{{ Œo{{ Œoo/ **6(v (} *0{-*uÙ -+r©£p (º o ¢(kró£psx z {z Œn{z Œno. ,*{{ Œo{{ Œoo. *2(t (~ *¢{z Œno0 {{ Œoo0 (#*"(~ *0#s rU`po &o*0C{z Œnoy &rY`po &{{ Œooy &r}`po &o * *{ *{€ *{ *r(a } }€ } *6(t (‚ *0•-*uj -+r©£p (º o ¢(kró£psx z{ Œn{ Œno/ ,;{€ Œo{€ Œoo/ ,{ Œu{ Œuo/ **6(v (ƒ *0-*uj -+r©£p (º o ¢(kró£psx z { Œn{ Œno. ,*{€ Œo{€ Œoo. ,*{ Œu{ Œuo. *2(t („ *0J³C { Œno0 ž{€ Œoo0 ž{ Œuo0 ž($*"(„ *0#s rU`po &o*0a{ Œnoy &rY`po &{€ Œooy &rY`po &{ Œuoy &r}`po &o * *{… *{† *{‡ *{ˆ *’(a }… }† }‡ }ˆ *6(t (‰ *0³-*uS -+r©£p (º o ¢(kró£psx z{… Œn{… Œno/ ,Y{† Œo{† Œoo/ ,;{‡ Œu{‡ Œuo/ ,{ˆ Œ}{ˆ Œ}o/ **6(v (Š *0¿-*uS -+r©£p (º o ¢(kró£psx z {… Œn{… Œno. ,*{† Œo{† Œoo. ,*{‡ Œu{‡ Œuo. ,*{ˆ Œ}{ˆ Œ}o. *2(t (‹ *0^³C {… Œno0 ž{† Œoo0 ž{‡ Œuo0 ž{ˆ Œ}o0 ž($*"(‹ *0#s rU`po &o*0{… Œnoy &rY`po &{† Œooy &rY`po &{‡ Œuoy &rY`po &{ˆ Œ}oy &r}`po &o * *{Œ *{ *{Ž *{ *{ *²(a }Œ } }Ž } } *6(t (‘ *0Ô-*uV -+r©£p (º o ¢(kró£psx z{Œ Œn{Œ Œno/ 9w{ Œo{ Œoo/ ,Y{Ž Œu{Ž Œuo/ ,;{ Œ}{ Œ}o/ ,{ Œ‡{ Œ‡o/ **6(v (’ *0á-*uV -+r©£p (º o ¢(kró£psx z {Œ Œn{Œ Œno. ,*{ Œo{ Œoo. ,*{Ž Œu{Ž Œuo. ,*{ Œ}{ Œ}o. ,*{ Œ‡{ Œ‡o. *2(t (“ *0r³C {Œ Œno0 ž{ Œoo0 ž{Ž Œuo0 ž{ Œ}o0 ž{ Œ‡o0 ž($*"(“ *0#s rU`po &o*0{Œ Œnoy &rY`po &{ Œooy &rY`po &{Ž Œuoy &rY`po &{ Œ}oy &rY`po &{ Œ‡oy &r}`po &o * *{” *{• *{– *{— *{˜ *{™ *Ò(a }” }• }– }— }˜ }™ *6(t (š *0õ-*u_ -+r©£p (º o ¢(kró£psx z{” Œn{” Œno/ 9˜{• Œo{• Œoo/ 9w{– Œu{– Œuo/ ,Y{— Œ}{— Œ}o/ ,;{˜ Œ‡{˜ Œ‡o/ ,{™ Œ`{™ Œ`o/ **6(v (› *0-*u_ -+r©£p (º o ¢(kró£psx z {” Œn{” Œno. ,*{• Œo{• Œoo. ,*{– Œu{– Œuo. ,*{— Œ}{— Œ}o. ,*{˜ Œ‡{˜ Œ‡o. ,*{™ Œ`{™ Œ`o. *2(t (œ *0†³C {” Œno0 ž{• Œoo0 ž{– Œuo0 ž{— Œ}o0 ž{˜ Œ‡o0 ž{™ Œ`o0 ž($*"(œ *0#s rU`po &o*0»{” Œnoy &rY`po &{• Œooy &rY`po &{– Œuoy &rY`po &{— Œ}oy &rY`po &{˜ Œ‡oy &rY`po &{™ Œ`oy &r}`po &o * *{ *{ž *{Ÿ *{  *{¡ *{¢ *{£ *ò(a } }ž }Ÿ }  }¡ }¢ }£ *6(t (¤ *0-*ua -+r©£p (º o ¢(kró£psx z{ Œn{ Œno/ 9¹{ž Œo{ž Œoo/ 9˜{Ÿ Œu{Ÿ Œuo/ 9w{  Œ}{  Œ}o/ ,Y{¡ Œ‡{¡ Œ‡o/ ,;{¢ Œ`{¢ Œ`o/ ,{£ Œb{£ Œbo/ **6(v (¥ *0% -*ua -+r©£p (º o ¢(kró£psx z { Œn{ Œno. ,*{ž Œo{ž Œoo. ,*{Ÿ Œu{Ÿ Œuo. ,*{  Œ}{  Œ}o. ,*{¡ Œ‡{¡ Œ‡o. ,*{¢ Œ`{¢ Œ`o. ,*{£ Œb{£ Œbo. *2(t (¦ *0š³C { Œno0 ž{ž Œoo0 ž{Ÿ Œuo0 ž{  Œ}o0 ž{¡ Œ‡o0 ž{¢ Œ`o0 ž{£ Œbo0 ž($*"(¦ *0#s rU`po &o*0Ù{ Œnoy &rY`po &{ž Œooy &rY`po &{Ÿ Œuoy &rY`po &{  Œ}oy &rY`po &{¡ Œ‡oy &rY`po &{¢ Œ`oy &rY`po &{£ Œboy &r}`po &o * *{§ *{¨ *{© *{ª *{« *{¬ *{­ *{® *0b(a ŒduP-rÿ£p(ls* z}§ }¨ }© }ª }« }¬ }­ }® *6(t (¯ *07"-*uc -+r©£p (º o ¢(kró£psx z{§ Œn{§ Œno/ 9Ú{¨ Œo{¨ Œoo/ 9¹{© Œu{© Œuo/ 9˜{ª Œ}{ª Œ}o/ 9w{« Œ‡{« Œ‡o/ ,Y{¬ Œ`{¬ Œ`o/ ,;{­ Œb{­ Œbo/ ,{® Œd{® Œdo/ **6(v (° *0G#-*uc -+r©£p (º o ¢(kró£psx z {§ Œn{§ Œno. ,*{¨ Œo{¨ Œoo. ,*{© Œu{© Œuo. ,*{ª Œ}{ª Œ}o. ,*{« Œ‡{« Œ‡o. ,*{¬ Œ`{¬ Œ`o. ,*{­ Œb{­ Œbo. ,*{® Œd{® Œdo. *2(t (± *0J%{® ŒdtP o2o*oY  YE#c½,°I8ò{­ Œbo0 o(#*C {¬ Œ`o0 ž {­ Œbo0 ž ož ($*C{« Œ‡o0 ž{¬ Œ`o0 ž{­ Œbo0 žož($*C{ª Œ}o0 ž{« Œ‡o0 ž{¬ Œ`o0 ž{­ Œbo0 žož($*C{© Œuo0 ž{ª Œ}o0 ž{« Œ‡o0 ž{¬ Œ`o0 ž{­ Œbo0 žož($*C{¨ Œoo0 ž{© Œuo0 ž{ª Œ}o0 ž{« Œ‡o0 ž{¬ Œ`o0 ž{­ Œbo0 žož($*C{§ Œno0 ž{¨ Œoo0 ž{© Œuo0 ž{ª Œ}o0 ž{« Œ‡o0 ž{¬ Œ`o0 ž{­ Œbo0 žož($**"(± *0#s rU`po &o*0é{§ Œnoy &rY`po &{¨ Œooy &rY`po &{© Œuoy &rY`po &{ª Œ}oy &rY`po &{« Œ‡oy &rY`po &{¬ Œ`oy &rY`po &{­ Œboy &rY`po &{® ŒdtPo*b{® ŒdtPoX*BSJB v2.0.50727l(è#~”è¨0#Strings<\¤#US˜½#GUID¨½œß#BlobW_¶ ú3“Y] Ïõ± Š„%=¡²ÈeŒ å5.'q'9'‰') 'Ä ± ë Ð † '× ± ã Ð ý '[ Ð i Ð x Ð Ì 'Á' ÜÑ' Ñ äÑ—'žÐ D('£(‘(Ó(‘(|)‘(Ý/‘(…0Ð ™0‘(È6± G;‘(UGÐ ¦M'Î]± #``=``ƒ`ý`Ý`a`WaKaoa'Üa'wbÐ „bƒ`œb‘b¨bƒ`Õbƒ`“c‘bžc‘bÜc‘bøc`d`êd'ÿd'e'RH'ug`Ylz'\z‘(™z']|‘(²|‘(7~'€''‚d‘(E“&“®“'ÿ”'•¹–¹Š˜¹š¹pœ¹tž'ÞŸ' ¯¢Ñ ΢Ñ Ø¢' ä¢Ñ ü¢Ñ ¶£ £8¤ƒ`¾¤ƒ`À¦¹§¹ ¨¹¨¹Q¨¹ˆ¨¹Å©' Lª`<¬¹J¬¹\¬¹š¬¹ ¯'B¯'W¯'x¯'‹¯'œ¯'¯¯'ѯ'ó¯'¬²'̹‘(乑(U¼'©½’½ʽ'f¾KaÍ¿'úÃ'gÆ'oÆ'…Ù'WèÐ wú'{ûƒ`t§lt''»/'ê/Ð ý/Ð G>YQ!h   v  ‚  Ž ˜ ¤ ´  Õ  ã ñ €ÿ !4!E #!Z #!y"#!“#&!ª#'!É#(!ê#)!#*!#+!8$-!J$.!d%0!z&3!Ž&4!©'7!Ç(:!ã(<!÷(=!(>!)(?!?(@!S)B!p)C!†*E!–*F!§*G!Í*H!à*I!ï*J!*K!$-O!@0U!_1W!‚2Y!˜3[!»4]!Ü5_!ø6b!6c!+6d!E6e!a6f!ˆ6g!¨6h º7k Í7m‚Ü7{$á"9{$ì":}÷;< +=ƒ‚Ü=“$:&@“$E&A•$P&B—[C™uD›E ©FŸ‚ÜG±$¸*K±$Ã*L³$Î*Mµ$Ù*N·äO¹þP»Q½2R¿ LSÁ‚ÜTÕ$[.YÕ$f.Z×$q.[Ù$|.\Û$‡.]Ý’^߬_áÆ`ãàaåúbç cé‚Üdÿ$#2jÿ$.2k$92l$D2m$O2n$Z2o ep q ™r³sÍtçu  v‚Üw/$ 6~/$ 61$& 6€3$1 65$< 6‚7$G 6ƒ9$R 6„;] …=w †?‘ ‡A« ˆCÅ ‰Eß ŠGù ‹I  ŒK!3 X D Y S [!` e!l l x y‚ܑР¤ ‡ “Ђܔ¡$ù >–¡$ >–¢  ‡ ˜§  'šª " 'œ®¡ ) 'žµ¡ 5 'ž¸¡ \ C ž¹¡ m C ž»!v C !ž» ¿ ˜ ž¿!ñ ‡  Í  ‡ ¢Ò…Ü¢×$ N¥×$ N§Ú" ¬à8 ­ã!O ‡ ®é!† ‡ ²!• ‡ ³ ® ‡ µ"…ܵ'$¸ ^¸'$À ^¼,Ç ½.Þ ¾3!ô ‡ ¿5! ‡ Ãn!+  Äp!9  Çz D  LJ!V  Lj b C ÇŸ x C È¢ † C ʦ!ª ” Ë« !Á ± =ͯ€ Ö Óë…ÜÔù$¼×ù$¼×ú$¼Øü%ÙþAÚÿZÛ€ pÖ Ü…ÜÜ $wÜß $|Üâ$Üè†ëšì®í%  ÂÖ î)!ÏÖ î, Ýø8 ìfù:!ûù;€ !ûÿF…ÜU$&U$/X$7Z$B ]K `c cz e”h ¬ûk…Ü»$º8B»$Æ8C½$Õ8D¿$å8EÁ$ð8FÃ$û8HÆ$ 8IÈ$8JÊ$/8KÌ$?8LÎ$R8MÐ$c8NÒ$v8OÔ$‡8PÖ$“8QØ$¨8RÚ$»8SÜ$Ä8TÞ$Ï8Uà$Ý8Vâ$è8Wä$ð8YçÿZé[ë8\íW]ïq^ñ‹_ô¬`öËaøìbú cü-dþMeofgªhÎiðj k "l?mYnpo Žûp ™ûðrM ¦'rO !ʹ=sQ !è¹=u[!ú¹=ve!¹yl C x 'C ƒ}€ 7C …‚$E††O†‡hC ‡ˆ vC ŒŽ!„C ’ —C ž!¡C Ž ­C ŽÌÎC ”Ù!ØC šëòC ›í€? ¡C¡ Zj¡ pj¡†¡! œn¢+ ²n¢-È¢/ Ür¤A€þ¤C0C ¦D… A¦O%Qz§V%\©Z%gz«\%u­` ƒ‚¯b ‘†°d%¢z±f%®´j%ºz·l%ʹp%Úºr%â¾vêÂz%÷Ä| ŽÆ~ ŽÇ€C È‚ *’È 6’É A’Ë‘ O’Í“ ^’Е l’Ò— x’Õ™ ˆ’×› “’Ø  ’ÙŸ«C Ü¡ ¹–Ü£ èšÜ¥ žÝ§ &¢Þ© >¦ß« V¦à­lªá¯¥ªâ±%ºã³ Ï®äµä·²ê¹/ªð»Dªñ½%Yò¿ o®óÁ„¶óòºõŠ;öÇ è¾÷ÉÂøËC úÍ -ÆúÔ <ÊûÖ MÎüØ cÒþÚyÖÿÜÚÞ ¥Úà ¹Æâ ÉÞä%ÛæöC  ê€C  ñ-â ôBæ öYê ø pî ú {æ ü ˆê þ •â  ±æ  Ïê€íC  ÷¢¢ò¢ 4òJ¢ còz¢!“â#ª¢%Ãæ'Ü¢)õê+ ö!-/"/<î'8€GC ):… X)R…Ü)Z$aú,Z$dú-\$jú.^s/`…0bš1d ²2f Ç3k%Ò4r%ò5t%6v'¢7x6¢=z EöC| \öD~hâE€q¢G‚ }öI„ ‡öK†‘âMˆšæOФêQŒ ®öS޾æU ÊöW’ ×âY” äæZ– ñþ[˜üê\š ö^œ `ž 4¢`  ?Öa¢JÎc¤UÖd¦ `f¨ i gª€y¹h¬€‹þl­ ”pÁ%¥pà ±¢qÅ ½rÇ ÇrÉ Ñ¢rËÝ’tÍ éöwÏ  âxÑ  æyÓ  zÕ% â{×5 æÙE ê†ÛU ‹Ýe "ß s ¢‘á ‡ &‘ã  *‘å ³ ¢‘ç%À ’é Í ò”ëØ .•íí Ö–ï!—ñ !¢šó%,!œõC!.Ÿ÷Z!2¡ù q!ö£ûˆ!6¤ý§!ö¦ÿÄ!¢¨ å!:©":ª'" ¬H" ¯  g"¢² ˆ" ³ ©"´»"¢¶Ë"º Ù"¢½ í">½ # À #šÃ '#šÅ ;#šÈO#’Ì![#&Í#h#*Î% u#BÏ' ˆ#FÐ) ˜#ÞÐ+ª#Ð-¼#JÔ/Î#¢Ù1à#’Û3ò#Nß5 $Rã7 $¢ä9 ($>ä; :$ æ= J$Vè?V$âèAh$æéCz$êêEŒ$ZëG ž$^îI ®$’ðK ¿$&ñM Ð$öòO ß$îóQ ñ$æóS %êóU %bóW '%ÖôY 7%¢õ[P%f÷]i%Öù_ €%Öüa—%Öüc%¬%ýeµ%jþg Å%nÿiÓ%.k à%¢m ê%roö%vq&zs &ru&zw *&~ y6&  {B&v}]&zx&zˆ&:ƒ£& …¾& ‡Ë&‚‰ Ô&Ö‹Ý&Öæ&Öí&’‘ö&’“'v•'† —9'z"™ S'~$› l' $¢'ƒ'%Ÿ€²'þ%¬½'û%¬Í'û%¯ ã'Š%È ÷'Ž%Ê (Š%Ì )(’%ÎI(û(Ð X((l c(–+p {(š+r °(ž,t Å(¢-v á(¦-x ø(ª-z )ª-| )®-~ *)².€ 4)¶.‚ A)º.„ P)¾.†_)Â.ˆ n)Æ/Ї)Ê0Œ ‘)Î1ŽŸ)Æ1ª)Ê5’ ¶)Â6” ¿)Ò7– Ñ)Ö8˜ ä)Ö8š ù)Ö9œ *Ú:ž *Þ;  %*â<¢ 4*æ<¤ C*Þ=¦!R*?¨]*ÂB¬ l*êC® x*îC° †*âD² ”*òD´ ¢*öE¶ °*úF¸ ¾*úIº Ì*úJ¼ Ú*úL¾ è*úNÀ ö*êO +öOÄ +úPÆ +þRÈ .+þUÊ <+VÌ M+XÎ b+ZÐ x+â\Ò Ž+æ\Ô ¦+â]Ö º+ò]Ø Ð+â^Ú ä+ò^Ü ú+ _Þ  ,_à ,`â 1,`ä D,`æ W,`è j,eê },eì ,eî £,eð ¶,eò Ê,fô Þ,hö ò,hø -hú -hü .-hþ B-l  V-n  j-n  ~-n  ’-n  ¦-n  º-n  Î-o  â-p  ö-q   .r  .s  2.t  F.u  Z.v  n.w  ‚.x  –.y"  ª.z$  ¾.{&  Ò.{(  æ.*  ú.,  /.  "/‚0  6/‚2  J/ƒ4  ^/„6  r/…8  †/†:  š/‡<  ®/‡>  Â/ˆ@  è/ˆB 0ˆD  0‰F /0ŠH  A0ŒJ  G0O  V0"Q %l0’S  ¢0’V  ¾0”a %Ü0•e  ú0.•h  12•j  016–l  F1.—n  R1:—p  \1ê˜r …h1˜t !w1˜z  ‚1>›~  ’1B›€ €¤1ûœ‚  ¬1FœŽ  ¹1J €Æ1þž’  Ò1N§  Û1R§Ÿ  å1V§¡  î1–§£  ÿ1Z§¥   2^§§  2º§© 02§«  =2º§¹  [2b¨»  y2R©½  —2f«¿  ³2¢¬Á  Ì2j¬à  ã2b¯Å  3b°Ç  &3n±É  D3r±Ë  d3¢±Í  ƒ3¢±Ï  Ÿ3¢±Ñ €¿3²Ó !Ê3²ü  Õ3rµ  ó3r· 4r¼  14rÁ  R4vÅ  h4vÈ  ~4vË  ”4vÎ  ª4vÑ  À4vÔ  Ö4v×  ì4vÚ  5vÝ  5và  /5vã  F5væ!  ]5vé#  t5vì%  ‹5vï'  ¢5vò)  ¼5v÷+  É5rý-  Õ5zþ/ €ã5þ1 €ë5Ö 2  ó5b  ú5~h  6‚j !6 l  6 l …Üx  $6†x  46†z  <6Š|  G6Ž~  ^6’€  u6Š‚  €6– „  Œ6–#†  ›6š)ˆ  ¤6ž2Š ±6¢4Œ %¼65Ž  Ò6¦5  Þ6ª<’  ê6®B”  ø6 C–   7²C˜  7²Dš  17²Eœ €G7Ö Fž  T7F¥ …ÜH´ $]7Œ N´ $g7Œ O¶ $t7Œ Q¹ $7Œ R» $‡7Œ S½ ’7T¿ «7UÁ Ç7VÄ á7WÆ ø7XÈ  8YÊ …Ü[Û $8¼ bÛ $'8¼ cÝ $<8¼ eà $H8¼ fâ $Y8¼ hå $h8¼ jè t8kê Ž8lì ²8mï Í8nñ í8oô  9p÷ …&9qù  ,9¶qü  69¶qþ …D(q €B9Ö q  L9Rq(  U9Rq*  _9Rq,  i9Rq.  s9Rq0  9Rq2  9Rq4  ¦9ºq6  µ9ºq8  Ã9ºq:  Ò9ºq<  ß9Rr>  î9†r@ €ú9þrB  :¾~C :~E ‚#:~E ‚3:~J €C:þ~Z  F:ƒ[  U:ƒ] €h:” ƒ_ !u:ƒÒ  ~:ÆŠÚ  :ÆŠÜ …˜:ŠÞ …œ:Šñ €Ÿ:þŠø €¢:þ¢ù %©:¢ù %¸:£ü %¿:¤þ %Ð:¦ %á:§ %è:¨ %ù:ª € ; «  ;r«[  ,;Ò­]  Q;Ö­_  n;Ú­a  ‹;Þ®c  ˜;â¯e  ±;â¯g  Ì;â¯i  ç;æ°k  <š°m  <š±o <<ê±q  Y<î³s  o<î³u  ‡<î³w  Ÿ<îµy  ·<ò¶{  Ó<ö¸}  Ý<ò¸ î<êº û<껃  =ò½…  &=濇  A=š¿‰ ^=ê¿‹  r=òÀ €‹=þ  ”=ÒØ‘  ¦=úØ“  ¸=þÙ•  Á=rÚ— á=‡ Û™ €ë=‡ Û ù=†Ûõ >†Ý÷ >†ßù  >áû  />ãý  <>ãÿ  M>å !Z>å %h>ç |>’é Ž>ë €š>þì  Ÿ> ì ¨>í  ²>ï  ¼>ï Í>‡ ï  ×>ï<  á>ï>  í>ð@ €ü>‡ ñB  ?ñi ?"òk !%?ôm %3?ör €E?þøx  J?*øx  ‚?.øz  ¸?2ù|  ò?.ù~  *@6ú€  K@:û‚ Y@‡ û„ g@‡ û €u@þû™ }@‡ û™ €‰@þûñ @‡ ûñ €›@þûF¡@ûF ®@bûU ·@>ýW Ç@bÿY€Ò@þ[Ú@‡ [ ä@B® õ@B° AB² AB´+AB¶6AB ¸ BAF º MAJ ¼ WAJ¾ hANÀ qAJ |ARÄ „AVÆABÈ–AZÊ ŸABвA^ÒÀA^ÔÌABÖ ÙABØèAZÚöAb%àBZ+æBf2ìBj:ò (B¢=ô5BB?ö CB’@ø RBnBú aBrBüpBvBþ}BZD‹BZK›B.S §B.U ±B’V ÀBzXÏB~XÜBZZëBZ`õBZg"C˜ n( !C=n4%Co7-Co:%>Cp=… HCq@$ZCŠrFkCrG ‹CBsH ˜CŽvJ ³C’xL¥ ÐCxN!ãCxO!÷CzR  D¢€[ D.]2DBƒ_BD„aWD’ˆgjD.Œi …D–k%‹DŽm%Do€­D‡ “s… ·D“w…Ü”€$¾Dš—€$ÄDš—$ÊDš˜ƒÏD™…äDš†ùD›ˆ¥ EœŠ EœŒ (E^ž’ 1E¢ ”!rE¡– ”E¤ ¶E¢¥¡ùE¢¦£€× ‡ §¥=F§º!EF¨À WF©Æ…Ü­Ï… jF°ÏzF¦²Ø‚F¦´Û‹F¦·Þ”FºáŸF¾ç%ªF¦Áí µFRÃð%ÆFÅò%ÏFÉø!åFÎþ!÷FÑGÓ €GþÕ!GZÕ2G‡ ×%EG×aG®Ø~G‡ Ù%‹GÙ#%™GÙ&%®GÚ)%»GÚ,€ÌGþÜ/ÙGÜ/€æGþÜ>îG‡ Ü>üG²ÜSH²ÞUH²àWH²áY€'Hþä[€RH/Hä[€XH/Häc…]H䊀vHþä’}HC ä’ŒHäš –Hþä  «H¶æ ¿Hºè ÍHJè ßHºè ïHºè‚Iè!I èx… Iìx EF¾íƒ /I¾íˆ… EIÂî… eI¾ñ• ‰IÆôœ%™IÊôž%«Iù¤ ½IÒý§%ÍIÖý©%ßI¯ ñIÞ²%Jâ´%J º (Jê½%9Jî¿%LJÅ _JöÈ%pJúÊ%ƒJÐ –J!Ó%¨J!Õ%¼J&Û ÐJ*Þ%àJ*à%òJ/æ K3é%K3ë%(K8ñ ;K&<ô%KK*<ö%]KAü oK2Eÿ%~K6E%KJ% K>N %±KBS%ÄKX%×KJ[%èKN`%ûKe#%LVh&% Lm,%4LVq/%JLw5%bLZ|8%qL€> ‚LþƒA ˜Lb„C ¯L…E ÅLf†H ÔLj†J ãLn‡L òLj‡N MrˆP MjˆR Mv‰T .Mj‰V =MzŠX LMjŠZ [M~‹\ jMj‹^ yM‚Œ` ˆMjŒb —M†d ®Mjf ½MŽh ÔM~k ãMjm òM‚o Njq N‘s 'N~’v 6Nj’x EN‚“z TNj“| cN”~ zN~• ‰Nj•ƒ ˜N‚–… §Nj–‡ ¶N—‰ ÎNŠ˜Œ ÝNþ˜Ž ìNŽ™ ûN’š’  Oþš” OŽ›– (Oœ˜ BO~› QOj `O‚žŸ oOjž¡ ~OŸ£ ”O~ ¦ £Oj ¨ ³O‚¡ª ÃOj¡¬ ÓO¢® ëO~£± ûOj£³  P‚¤µ Pj¤· +P¥¹ FP~¦¼ VPj¦¾ fP‚§À vPj§Â †P¨Ä žP~©Ç ®Pj©É ¾P‚ªË ÎPjªÍ ÞP«Ï õP–¬Ò Qš¬Ô Qž­Ö %Qš­Ø 5Q¢®Ú EQš®Ü UQ¦¯Þ eQš¯à uQª°â …Qš°ä •Qr±æ ¥Qš±è µQ®²ê ÅQš²ì ÕQ²³î åQš³ð õQ´ò  R~µõ Rjµ÷ +R‚¶ù ;Rj¶û KR·ý cR~¸ sRj¸ ƒR‚¹ “Rj¹ £Rº ºR~»  ÊRþ»  ÚR‚¼ êRþ¼ úR½ S~¾  Sj¾ 0S‚¿ @Sj¿ PSÀ gS~Á! wSjÁ# ‡S‚Â% —SjÂ' §SÃ) ½S~Ä, ÍSjÄ. ÝS‚Å0 íSjÅ2 ýSÆ4 T~Ç7 $TjÇ9 4T‚È; DTjÈ= TTÉ? jT~ÊB zTjÊD ŠT‚ËF šTjËH ªTÌJ ÁT~ÍM ÑTjÍO áT‚ÎQ ñTjÎS UÏU UŠÐX 'UjÐZ 7U¶Ñ\ GU’Ò^ WUjÒ` gU¶Ób‚wUÔd‚UÔt…‰UÔx€”U‡ Ôx §UÔ}¸Uׄ‚ ÊUº×„ ×Uþ׈%ãU¾ÙŠ‚ îUÂÚŒ ûU¾Ú% VÆÜ’%VÆÝ”‚ #VÊÞ–%0VÎÞš%=VÎßœ%JVÎàž WVÆá ‚ eVÒ㢠rVÎã¦%€VÖå¨%VÖæª%šVÖç¬%§VÖè®´Vé°%ÇVéý%èVé%Wê%"Wê%6Wê%IWê %\Wê %oWê %‚Wê%–Wê%¨Wê%¼Wê%ÐWê%äWê%ùWê% Xê%!Xê 6Xê!%QXì%%]Xì' kXì) ‰Xí, ¦Xî/ ËXï2 ÙXï4 çXï6 õX"ï8 Y&ð: Y*ñ< Yò> :YþóA EYºôC PY¾õE [YþöG fYº÷I qY&øK YøM YÆøO œYÒøQ «YöøS ºY2øU ÉYøW ØYêøY çYÞø[ öYø] ZŠø_ Z’øa #Z.øc 2Zøe TZþùh _Zºúj jZ¾ûl uZþün Zºýp Z&þr œZþt «ZÆþv ºZÒþx ÉZöþz ØZ2þ| çZþ~ öZ2þ€ [êþ‚ [Þþ„ #[þ† 2[Šþˆ A[’þŠ P[.þŒ _[þŽ z[þÿ‘ †[º“ ’[¾• ž[þ— ª[º™ ¶[&› Å[ Ô[ÆŸ ã[Ò¡ ò[ö£ \2¥ \§ \ê© .\Þ« =\­ L\Н [\’± j\.³ y\µ ›\þ¸ §\ºº ³\¾¼ ¿\þ¾ Ë\º À ×\&  æ\ Ä õ\Æ Æ ]Ò È ]ö Ê "]2 Ì 1] Î @]ê Ð O]Þ Ò ^] Ô m]Š Ö |]’ Ø ‹]. Ú‚š] Ü ¦] #%¶] '%à] * ú] - ^ 1 ^ 4‚/^ 7 B^ U‚M^X‚`^^€m^c€x^d€^þd›^þ-s%¬^.u¿^þ/w%Ò^0yã^’1{õ^þ2}  _þ3 _¾4 3_Æ5ƒ I_Î6… __Ö7‡€u_8‰€x_þ8€|_þ:¡_± :¡¦_± : »_':Â_': È_':% Ð_';1 Ø_'=> à_'@L è_'D[ ð_'Ik ø_'O| `'VŽ'c>V€/c¾V€oa¾V€3c¾9ccDckJcy¬`+¬`+mcùmcùcòc>'c>V€odV€7V€t7V€‡7V€tdV€) V€zdV€‚dV€‰dV€&9V€“dV€œd'c>V€od@V€´d@V€»d@V€Äd@V€Ñd@V€äd@ùdMùdMùdM.eMùdMùdMIe+pe+¢e>ªe>°e>óe>ff>nf+Žf@¦f+µfø ùd+¦f+Íf+V€á>V€ì>#(g¾!#(gÍ!g¯!gÂ!V€:>V€E>V€P>#(g¾!#(gÍ!#(g­$g†$g“$g $#Ph>V€¸>V€Ã>V€Î>V€Ù>#(g¾!#(gÍ!#(g­$#(g‘(gU(gd(gs(g‚(#Ph>V€[>V€f>V€q>V€|>V€‡>#(g¾!#(gÍ!#(g­$#(g‘(#(gº-ge-gv-g‡-g˜-g©-#Ph>V€#>V€.>V€9>V€D>V€O>V€Z>#(g¾!#(gÍ!#(g­$#(g‘(#(gº-#(gõ3gB4g|4g¶4gð4g*5gd5#Ph>V€ >V€ >V€& >V€1 >V€< >V€G >V€R >#(g¾!#(gÍ!#(g­$#(g‘(#(gº-#(gõ3#(g)9gv9g¶9gö9g6:gv:g¶:gö:l+l>l>´m¾!#ùd¾!V€od>V€éa>3–nEV€jn>V€Mc>¤n¾!©nE¯oE±o>äoŸèo†G5p¾!@ptDƒqsHŽqMär‘HèréHV€ör>V€ >V€ ># s¾!#sÍ!# s¾!#sÍ!#s‰I#s‰I#"s>g—Jg¹JƒxsøJƒ…s‰IŽsKs Kâm KDxtDIxtDV€bx>V€¸ >V€À ># s¾!#s2P#s2P#s>#(g¾!g Qg'Qƒ²xøJƒ¿x2PŽs0GsMQâmMQÞy)Tây>æy-T-~eW-~eWb~ÉW-~YXÀ~>Ç~ø G>P/Y\5Y`5Ye>âm:Y3Ã![V€©>V€>V€>#(g>#(g>g{\g9[g>[V€w>V€|>V€># sM#stD#sM# sM#sÆ\#sM#sÆ\#"sM#]‚![# s+#sé]#sÆ\ge^gq^g}^Rƒ+gƒ_{ƒ@_‹ƒ¯T™ƒ>¥ƒ>±ƒ>¾ƒ>ɃMÙƒMùd+Þy)Tíf+]…­_g…°_o…­_u…M#Ph>V€&>V€/>V€7>V€B># s¦`#s«`#(gï_# sï_#sia# s)T#s>g bgbg%bg1b#Ph>3c‰¦`3q‰¦`3†‰¦`3—‰¦`3¬‰¦`3º‰¦`3ʉ¦`3߉¦`3ó‰¦`3Ц`3Ц`3+Ц`3@Ц`3^Ц`V€U‰>V€9‰>V€%‰>V€ ‰>V€ûˆ>V€º>V€Æ>V€Õ>V€å>V€ð>V€û>V€ >V€>V€/>V€?>V€R>V€c>V€v>V€‡>V€“>V€¨>V€»>V€Ä>V€Ï>V€ ‡>V€„‡>V€j‡>V€V‡>V€:‡>V€Ý>V€‡>V€û†>V€Í†>V€³†>V€è>V€ð>#(g)T#(g–T#(g–T#(g)T# s)T#s>#(grf#(grf#(grf#(grf#(gh#(gh#(gh#(gh#(gŸi#(gØW#(gØW#(g)T#(g)T#(g)T#(g)T# stD#s)T#(g)Tgmgmgmg+mg7mgCmgOmg[mggmgsmgmg‹mg—mg£mg¯mg»mgÇmgÓmgßmgëmg÷mgn{`¢«`Z“ctŠ“–t’“­_Š“–t’“­_S”u[”tD:”>¬”­_³”=uÁ”ßtÌ”ßt×”>•0G¤n>‡•>©n>¶•–tÁ•–t3Ô•(wgxw–u–±w%–½w,–Éw3–Õw#(gIxlpây:”tDHq~€ŒšM£šM¬š–tcq‚€CœLNœTWœT`œ]jœhœmtây²+„ºuÑu‚Ù>èMð@„¡n‹/¡†Œ[c•Œ31¡µòc>À¡MlpªípµlpL‘-¢W‘lpt‘ípµlpA’-¢W‘lpe’lpe’lp’ípµ:”‘’lpû’€t¾!-¢W‘íp!“/¢1“-¢ž“ípÑ“À¡p8¢pC¢pípÑ“À¡p8¢pC¢pN¢#Q¢#T¢ž“W¢ž“lp7”lp£”‡¢„™lpª‡¢œ™lpe’‡¢„™lpe’¢„™”¢„™lpt‘‡¢œ™lp’:”‘’‡¢œ™‡¢ü™/¢1“‡¢„™‡¢„™lp7”¢œ™”¢3š#£%›#£%›#£%›#£%›#£%›Fa~›Fa~›Hq—›Fa~›ø•Aý•ß›–ê›–£tDqõ›Fa~›ø•Aý•ß›–ê›–£tDqõ›Fa~›Fa~›Hq—›Fa~›Ü¢EœFa~›¤­š¤­šFa~›¤­š?¤#ž?¤#žÈo>gccgcc?¤#žÈo>F¤/žgccF¤/ž?¤#žÈo>?¤#ž?¤#žlpâyÿ˜‚€ÿ˜‚€ÿ˜‚€ø•âyý•ß›–ê›1¦âyQ`¾!Q``¢B¦ßQ``¢Q``¢Q`–¢~p¾!Q`–¢§ßQ`–¢~pŸQ`–¢§ßQ`–¢~p¿€Q`–¢§ßlpIxcq¾C`œ±wѦѡ£šMWœtD~p¸£är¾!V€a>V€d>V€j>#(g¾!#(gŸ#(g¿€ge¨g¨g¨¾©>ªÝ¨lpéHlpéHlpéH –Õw×uø•±wý•½w–Éw¹¨·ª –Õw×uø•±wý•½w–Éw¹¨·ªlpIx~p¾!lpõªQ`«稷ªQ`–¢ç¨1«lp¯«lp¯«~pÍ!ü¨éHQ`–¢ü¨éHQ`–¢ü¨éHQ`–¢ü¨éH¹¨·ª©«¬Q`–¢©«¬¹¨·ªª­ª­¹¨·ªü¨ê›Q`–¢ü¨ê›¹¨·ª[v¾!f©Ë­i©„ t™Hi©ú­ t™Hi©ú­©·ªS€ª>S€ˆª>S€˜ª>S€¡ª>3³ªKu3Öª„3વòc>FaKu|lÒ®ø•±w~p¾!Q`«#«pø•±wlp³ª²³ª²³¹¨·ªQ`s´ÈocD«°M«0G$™ Ÿgc>Q`s´ÈocD«°M«0G$™ ŸQ`s´ÈocD«°M«0G$™ ŸQ`s´ÈocD«°M«0G$™ Ÿ¯oµ`œ>£6¬µ`œ>£B¬>•˜áƒQ`2¶•˜áƒQ`2¶X¬D¶`œ]|¬MX¬D¶„¬ßt`œ]•˜áƒ ˜>Ƙ· ˜…cqÀô˜éHQ`–¢ô˜éHÿ˜‚€ÿ˜‚€$™ Ÿ$™ Ÿÿ˜‚€$™ Ÿÿ˜‚€ ˜…$™ Ÿÿ˜‚€ ˜…$™ Ÿÿ˜‚€P™[¤ÿ˜‚€F™ú·ÿ˜‚€„¬ßtƘ·F™ú·ÿ˜‚€„¬ßt:™g¸F™ú·P™[¤:™g¸F™ú·P™[¤Vm¾!:™¶¸Vm¾![mÍ!:™î¸Vm¾![mÍ!bm­$:™.¹å¬v¹å¬v¹å¬v¹––1«…™NºP™[¤ÿ˜YºЫgº…™NºP™[¤ò•uÿ˜YºЫgºÿ˜‚€ärÀ…™»ÿ˜‚€Ы»„¬ßt…™»ÿ˜‚€Ы»„¬ßtDdy»…™»P™[¤…™»P™[¤ÿ˜‚€ÿ˜‚€ÿ˜‚€––·ª ˜…ÿ˜‚€––·ª ˜…lp±wlp½wlp/½¹¨„¹¨„)šây4­Ã€)šâyTšß––·ª)šâyTšßTšß•mAD­u•mAFau‚N­]~p“¾lpœ¾»—>~p“¾lpœ¾»—>~p“¾lpœ¾»—>~p“¾lpœ¾»—>~pu‚»—>~pu‚»—>~pu‚»—>~pu‚»—>~pu‚»—>~pu‚»—>~pg†~pg†~pg†ÿ˜¸£ÿ˜¸£ÿ˜¸£»—>ÿ˜¸£»—>ÿ˜¸£·­;À—±ØWž±M£±ØW»’/žG¾>K¾>†µ+¡µ+ƒµ)TZ¹ÉW·¹+Z¹ÉWº¹>Á¹ûßȹêߦ¾ÉW¦¾ÉWEºLÛG»+w¹)TØo>’»¾!~p>lp/âÂ`Hâ“tûßɾðϾ>Õ¾âìûzÉWlp´ã»ûß’»°ðÂ`Éã“tÚãQ`ðã~päÂ`ä“täÂ`êß®¾>Â`ä’»°ðÂ`ä¿ðã ¿+¿êß(¿Mgc> ¿)T¿+ ¿)T¿+ ¿Îå¿>lp/â»ûß»ûß7¿ÉãK¿)TO¿ûßS¿êßW¿+[¿>~púçe¿)Ti¿+Â`)T“t+[cêß/¡Úãe¿)Ti¿+~pM~p+~pQÃ~p…Ã~p‰~päÃ~pÄ~pEÄ~pxÄ~p>~p›Y~p­_~p§YÂ`)T“t+[cêß/¡ÚãÂ`)T“tÚã~p¦`~p)T~púç~pÎå~púç~pÎå~p>¯orÛÕ¼®êEºÉWØo>lï_Õ¼®êÿ¼Ûóÿ¼Ûó“¿ï_–¿ia# slô#s>#(gäp½qáp½qáp½qá8ÀÌö<ÀÞìFÀqálpUö.ÁÆù.Áüù3ÝÁ)T3êÁ)T3ͱ)T3öÁqá3Â/2ú3è/Nú3l0oú3Ü0úòc>yÃyyÃylp þyÃylp þlpÏGÃÍ! ÃzþyÃy}ÃÖþ}ÃÖþIÇMVÇóþfÇM°{ ȹ)TQ`âgc>LÅXÐÇ)TÕÇtDQ`âgc>LÅXßÇÉWÐÇ)TQ`âgc>LÅXäÇ)TLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXQ`âgc>LÅXQ`âgc>LÅXQ`âgc>LÅXQ`âgc>LÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âLÅXgc>Q`âÃ+LÅXgc>ĉQ`âÃ+Q`âLÅXTÆ„gc>ĉÇe Ç> Ã+O¾>3éÇ)T3ôÇŠ 3 ÈÒòc># s>#s>#sø 'c>S€ðË×S€ Ì×S€Ì×#Ph>3b̲3r̲V€PÌ>V€&Ì>‡•c~ptDâÌ+Xʲrz¯T+ÉdÍfχ•c7¿©ªPXʲrz¯T+ÉdÍfχ•c{wrØo>ßÊ>{wrÙÊ>ÜÊ>ßÊ>âÊ>~p>+Éd‡•caÊ>çÌa{wrÙÊ>ÜÊ>ßÊ>âÊ>ÙÊ>ßÊ>ìÌ®Xʲrz¯T+ÉdÍfχ•cDdtDïÌ>Xʲrz¯T+ÉdÍfχ•caÊ>rz¯T+Éd+Éd+Éd#Ph>3²ÍV€]7>V€g7>V€t7>V€7>V€lÍ>V€‡7>#(gLÛ# s)T#s)T#(gL#(g÷#(g)Tgggg)g5#Ph>3ðÎV€8>V€'8>V€<8>V€H8>V€Y8>V€„Î>V€h8>#(gâ# s)T#stD#(g# s+#s# s)T#s#(gtDgƒgmg–g ghg°~pÆ\3VÒÆ\3L9Fn3U9Fn3_9Fn3i9Fn3aÒ)T3ýÌ)T3nÒ)T3Í)T3yÒÆ\3ƒÒÆ\òc>3qÓŸi3|ÓØW3‹Óã#3•Óì#òc>ÀÚ>ÆÚ>ÑÚ>ÔÚ>ÚÚ>àÚ>çÚø 3:Û–)3­Ü>3²Ü­_3·Ü>3¼Ü>3ÁÜ>3ÆÜ­_3ÐÜø 3{Ûø 3âÜ›Y3ìÜ:Y3ôÜ:Y3ýÜ¢)3Ýø 3hÔø 3Ýø 3|Ôø 3!ݨ)3“Ô¨)32Ý>3SÝ>3rÝ>3Ý:Yòc>~p·)ípÑ“ ¢NºD­ß)~p$*ípÑ“ ¢]*D­¨X~p„™rz¯T§rfÞy)Tây>ôã,ây>rz¯T]â]ÙÞy)Trz¯Täë,rz¯TäØWrz¯T äŸi]â]Ù]â]Ùä+.äP. äP.]â]Ùrz¯T äŸi3'ä)T3œÝ)T31ä)T3£Ý)T39ä^V3Kä)T3Þ)T3Vä)T3Þ)T3aä)T3.Þ)T3lä)T3>Þ)T3wä)T3NÞ)T3‚ä)T3^Þ)T3ä)T3nÞ)T3˜ä)T3~Þ)Tòc>f{)T°{ë,|lrf£søJ“t2P£søJ“t2P£søJÂ`2Pø•Ñ?9è¾!ø•Ñ?9è¾!£ç =šçMÚa2Pgc-@{w0G€Øc£søJlps@lpª£s˜@lpÎDlpÎD£søJ{wÊQ€Øc£çsPšçMÚa‰IgcRÚa KÚa„ReŸ Klptmärylp“märylpŒärylp |lp+|~pÍ!lpL|Èo>lpL|lpf| ty|lp¤|®íy|—¡Â|lpe’lpªlp(}lpC}lpt‘EªÈo>E‘H ¢™H§>´îÎ}¹î>ªç¾!lpæ»—¡‘H¡‘H—¡‘HE0G~p¾!Øo>E‘Hgcc t™H¹î>ªç¾!E‘H t™H¼î*C€Ø¾!¹î>ªç¤~lpû’€t¾!Ey|Áî*C tå~¹î>ªç¾! î>E‘H{w0G[vcgcc ¢™H¹î>ªç0GE‘HCîLJî=CîLJî=E‘HÆîªËîœÆîªáî‘HE‘HËî/âm¾!BtÓ‹´î™H¹î>ªç¾!ÆîªE‘HËîlâm¾!BtÙ´î™H¹î>ªç¾!ÆîªE‘HE‘HÆîªËî½ÆîL‘Ey|¹¨e’E‘H ¢™Håî*C¹î>ªç¾!Èo>E‘H ¢™H§>´îÎ}¹î>ªç¾!¹¨e’E‘H ¢™Håî*Cìîp¹î>ªç¾!ùd¾!ðç…lp3†3ðT†gÚ†þîæ»ïA’ ïµ¹Èçe’ªçªHð |’éH*ïå~4ï™HèMNðMWð²uWï¾!ç’¾!ç’Í!Í𰇿íy|ªË­“t‘HèpšïÛ‡ªË­“t‘HèpšïÛ‡Íð‘H[vÑ“æâyD­¾!uÖâyæâyqZˆ3NñÒ‰V€Bñ>V€ÄD>V€ÊD>#(g¾!#(g$~gôŠg‹g,‹ª$~ø•-~ø•-~ª¥‹~p¥‹ñ$~šï¾CNðM ¢™Hª—ŒQò™H ¢®èM#Ph>32óà3Eóà3WóàV€ó>V€ó>V€ðò>:”àšï¾!lpL‘ ¢å~lpü ¢å~gcclp ‘·å~·2‘lpA’ ¢å~èpšï1“lpe’ ¢™Hèplp+|:”‘’lpL|oclpL|Íó>ocªçï‘ïA’ ïµ¹èpšï1“:”'’{w0Gšï>O¾>âm¾!èMlpéH ¢™HØósH§™H£s “£søJGô>ßÓuôÍ“lpL‘{w—lpÆ—{w—{wç—{wç—ßÊ>âÊ>lp¤¦ª¯¦lpÚ¦ª°‡'c>S€ó=°S€é=°S€ðò=° =°âm¾!Øo¾!eŸ¾!€t¾!Øo¾!eŸ¾!€t¾!{>Øo>eŸ>TMWMØo>{>eŸ>uÖC§{­_Øo­_eŸ­_TMWMØo­_{­_eŸ­_uÖ•§{§YØo§YeŸ§YTMWMØo§Y{§YeŸ§YuÖç§{›YØo›YeŸ›YTMWMØo›Y{›YeŸ›YuÖ9¨{}Øo}eŸ}TMWMØo}{}eŸ}uÖ‹¨{cØoceŸcTMWMØoc{ceŸcuÖݨ{EÄØoEÄeŸEÄTMWMØoEÄ{EÄeŸEÄuÖ/©{xÄØoxÄeŸxÄTMWMØoxÄ{xÄeŸxÄuÖ©{äÃØoäÃeŸäÃTMWMØoäÃ{äÃeŸäÃuÖÓ©{ÄØoÄeŸÄTMWMØoÄ{ÄeŸÄuÖ%ª{…ÃØo…Ã`>TMWM{…ÃØo…ÃeŸ…ÃTMWMØo…Ã{…ÃeŸ…Ã{QÃØoQÃ`>TMWM{QÃØoQÃeŸQÃTMWMØoQÃ{QÃeŸQÃ\¾!Øo¾!eŸ¾!uÖ+°WM\¾!uÖ+°Øo¾!eŸ¾!{Í!Øo¾!eŸ¾!uÖû’TMWM`Í!uÖû’Øo¾!{Í!eŸ¾!Øo‰eŸ‰­ý‰WMØo‰eŸ‰­ý‰›¸ØW›¸ØWcqa¯la¯la¯la¯la¯la¯la¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqޝ7¿ªlޝ7¿ªlޝcqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqÓlÓlÓlÓlÓlÓlÓlÓlÓcqa¯la¯la¯cqa¯la¯la¯cqªlªlªcqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cqa¯la¯la¯cq+°7¿a¯l+°7¿a¯l+°ÚaEšïEèMlpQ¸š·­$lpC}lpq¹š·‘(lp»¸lp¦¹lpйlpæ¹lp®»lpÕ»š·º-lpྚ·õ3lpe¼lp}¼lpš¼lp-¿Gô>´øJlpøJcq¾!cq¾!cqùÁ§ØW7¿L|lùÁ°{C}7¿ªlC}eŸØW7¿ªlC}°{C}7¿ªlC}eŸØW7¿ªlC}°{C}7¿ªlC}eŸØW7¿ªlC}°{C}7¿ªlC}eŸØW7¿ªlC}:M€>ƒ>|l>3x+3™+3´+3Ñ+3ë+3 Ÿ3£Ç3-£Ç3DkÉ3\kÉ3v¥Í3ªÍ3¦º!3»kÉ3ØkÉ3W¯Í3"W·Í36W¿Í3IWÇÍ3\WÏÍ3oW×Í3‚WßÍ3–WçÍ3¨WïÍ3¼W÷Í3ÐWÿÍ3äWÎ3ùWÎ3 XÎ3!XÎòc>lp˜Úlpªlp˜Úlpªlp£Úlp˜ÚlpªlpÐÚlpÿÚlp4Ûlp}Û3i/ðÛòc>â/¾!â/¾!P0Í!â/¾!P0Í!X0­$â/¾!P0Í!X0­$`0‘(â/¾!P0Í!X0­$`0‘(h0º-â/¾!P0Í!X0­$`0‘(h0º-p0õ3â/¾!P0Í!X0­$`0‘(h0º-p0õ3~0)9â/¾!P0Í!X0­$`0‘(h0º-p0õ3~0)9•0 ßP L`ýp Ÿ`ë° ¾`H$!Ä`Q8!5a]€!›aQ 4#Òa€ ˆ#8b d&BbQx&eb€œ&cý +7`Õ@+F˜` ´+7`U¼+F˜`Ô+7`UÜ+F˜`,7`U,F˜`&(,7`t8,F˜`2d,7`Ul,F˜`SÀ,7`ZØ,F˜`- /7`I!/F˜`-"x/7`x#ˆ/F˜`-$X0*d%t07`U%Œ0Æ1dµ%œ0Æ=d%¼0ÁHd &Ì07`P'ì0îaU(17`U(17`U(017`U(H17`U(`17`U(x17`U(17`P(°1îaU)Ä17`U)Ü17`P)ü1îaU*27`P*024eU+D27`U+\27`U+t27`P+”2îaU,¨27`U,À27`P,à2îaU-ô27`U- 37`P-$37`U.<37`U.T37`U.l37`U.„37`U.œ37`t.¼3Teõ/Ð37`U/è37`t/4}eõ047`U0447`U0L47`U0d47`U0|47`U0”47`U0¬47`† 0Ø4¶eµ3ì4Àeµ35Êeµ357`¬ 3@5%f´ 6T5>fµ6h5Qfµ6|57`¹ 6”57`¿ 7¬57`t9Ì5yfõ:à57`å :6”fë ;67`t;46bõ<H67`ü <h6Âf!=ˆ67`t=¨6îaõ>¼67`t>Ü6bõ?ð67`U?77`U? 77`U?877`U?P77`U?h77`U?€77`U?˜77`t?¸7Òfõ@Ì77`U@è7Ûf6@ø7Ûf€B87`UC8gR!C08-gUDH8>g}!D\8LgUEt8]gµE8ed "EX9æed Ft9æedy"G@:æ1d "I¼:æ1dµJØ:æ=d§"J”;=dò"LH<æ=dMl<7`w!Nˆ<óböOœ<7`L!O¸<óbyPÌ<7`à#Pè<óböQ=7`÷#Q=óbyR4=7`URH=¼g$R\=ÊgUSt=Ûg?$Sˆ=égUT =úg[$T´=hUUÌ=]gµUô=ed,%U$?æed V@?æedy"Wl@æ1d "Y4Aæ1dµZPAæ=d§"ZlB=dg&\|Cæ=d] C7`w!^¼Cóbö_ÐC7`L!_ìCóby`D7`$`Dób¦a0D7`x'aLDóböbdD7`“'b€Dóbyc˜D7`®'c´Dób¦dÌD7`½'dèDUhÖ'eüDchUfEth(f(E‚hUg@E“h#(gTE¡hUhlE²hC(h€EÀhUi˜E]gµi¬Eed)iäFæed jGæedy"k,Hæ1d "m Iæ1dµnà­žZ?ô­*³Z@p®5UAŒ®AÂYAð®KÂYB¯XÊZC$¯nÚZED¯€íZHX¯ŠôZIl¯ÁHd J¨¯*dKį*dKܯ7`UKð¯×&[K°áUL°î&[L0°ûUMH° ‚-[M\°‚UMt°]gµMœ°æ1d "M±æ1dµN0±æ=d§"Nô±=d‡[P´²æ=dQز7`URì²7`½'R³óbµS³7`½'S8³óbµTL³7`€\Th³7`‡\U„³óbµVœ³7`Ž\V¸³óbµWг7`UWä³B‚•\Wü³J‚UZ´U‚«\Z0´c‚U`H´n‚½\``´v‚Ucx´]gµc ´7`ó\cÈ´.bUfÜ´$b!fð´cUfµ7`s]fDµ.bUlXµ$bƒ]llµcUl€µqcƒ]l”µ{cUl¨µ‡‚‰]l¼µ7`÷]läµ.bõoøµ$b ^o ¶cƒ]o ¶7`j^o<¶.bUpT¶$b!pl¶cUp„¶7`v^p ¶.bUq¸¶$bƒ]qжcUqè¶qcƒ]q·{cUq·‡‚‰]q0·7`‚^qL·.bõrd·$b ^r|·cƒ]rƤ‚‰^rÆ ®‚µrÆ ½‚µr”·êƒõr¨·„E_r¼·„g_rз,„m_rä·=„µrø·L„µr ¸[„µr ¸k„µr4¸y„UrH¸Œ„Ur\¸7`s_r¼¸!…£_|ô¸7`t|¹îaõ}(¹7`t}@¹7`Þ_~ĹìyõعŒ…U칚…qTº£…ë_º­… `€ºÆ’aõƒ”ºÆ1dµƒ¨ºÆ=dƒ̺ÁHd „È»*d…ä»7`½'…¼*†L`†¼6†Uˆ,¼E†U`ˆ@¼S†UŠX¼d†a`Šl¼o†U‹„¼}†j`‹˜¼‰†U°¼]gµļæ1d "伿1dµŽ½æ=d§"ŽH½=dˆ`p½æ=d‘”½7`µ`’¸½.bÄ`”̽$bÊ`”à½7`a”ü½ób a•¾7`na•4¾.b a—H¾$bxa—\¾7`;T—€¾.bqT™”¾$bµ™¨¾7`b™ľ.bÄ`šܾ$bÊ`šô¾7`bš¿ób a›(¿7`*b›D¿.b aœ\¿$bxaœt¿7`6bœ¿.bqT¨¿$bµÀ¿*dpÀ7`½'ŒÀrŠCbž À„ŠUŸ¸À™ŠXbŸÌÀ¤ŠU¡äÀ²Šnb¡øÀŠU¡ÁÔŠnb¡$ÁîŠU¡<Á ‹nb¡PÁ‹U¡hÁ.‹nb¡|Á<‹U¡”ÁL‹Cb¡¨ÁZ‹U¢ÀÁk‹nb¢ÔÁ|‹U¢ìÁ‹nb¢Âœ‹U¢Â«‹nb¢,»‹U¢DÂÍ‹nb¢XÂÞ‹U¢pÂñ‹nb¢„Âý‹U¢œÂ ŒCb¢°ÂŒU£ÈÂ0ŒCb£ÜÂ>ŒU¤ôÂOŒCb¤Ã[ŒU¥ ÃjŒc¥4ÀŒU¦LÙŒc¦`ñŒU§xÃÌŒ?c§ŒÃÛŒU¨¤ÃíŒUc¨¸ÃU©ÐÃUc©äÃ.UªüÃGUcªÄ[U«(ÄrUc«<ĈU¬TÄ¡‘c¬hÄ´U­€ÄÊ‘c­”ÄßU®¬Ä÷‘c®ÀÄ ŽU¯ØÄ Ž‘c¯ìÄ5ŽU°ÅMŽÍc°Å[ŽU²0ÅlŽCb²DÅzŽU³\Å‹Žðc³pÅžŽU´ˆÅ´Žðc´œÅÆŽUµ´ÅÛŽCbµÈÅêŽU¶àÅüŽnb¶ôÅU¶ Ænb¶ Æ#U¶8Æ6nb¶LÆCU¶dÆRnb¶xÆcU¶Ævnb¶¤Æ€U¶¼Æ]gµ¶ÐÆæ1d "¶ðÆæ1dµ· Çæ=d§"·TÇ=dd¹˜Çæ=dº¼Ç7`2#»ØÇóbqT¼ìÇ7`Þd¼Èóbåd½È7`Þd½8Èóbåd¾LÈ7`2#¾hÈóbqT¿|È7`;T¿ È.bqTÁ´È$bµÁÈÈ7`vfÁäÈób|fÂøÈ7`vfÂÉób|fÃ(É7`vfÃDÉób|fÄXÉ7`vfÄtÉób|fňÉ7` hŤÉóbhƸÉ7` hÆÔÉóbhÇèÉ7` hÇÊóbhÈÊ7` hÈ4ÊóbhÉHÊ7`¤iÉdÊób«iÊxÊ7`jÊ”Êóbj˨Ê7`jËÄÊóbjÌØÊ7`2#ÌôÊóbqTÍË7`2#Í$ËóbqTÎ8Ë7`2#ÎTËóbqTÏhË7`2#Ï„ËóbqTИË7`\lмË.b!ÒÐË$bqTÒäË7`2#ÒÌóbqTÓÌ7` mÓ0ÌóbqTÔHÌ7`mÔdÌóbådÕ|Ì7`$mÕ˜ÌóbådÖ°Ì7`0mÖÌÌóbqT×äÌ7`*rù`èL5rûxèoDrþèVr¼è^rèè°iré°tr@鹂r XéÊŽr péârˆéø¶r´é‘Çräé.‘Ïrøé7‘Ýr$êA‘ÝrPêV‘örˆêz‘ s ê‡‘èìT’×q@í^’ësB,탒øsC@툒 tD„íÁ’"tH´í“+tKôí7`nL î“xaNî7`rtN@îs“†tO\î–“›tOpî¡“ë_O„î7`¡tO îcUQÌî=d¯tQïÆ=dR<ïÆ1dµStï´“¼tSŒïÏ“¼tU¨ïÁ rUWÀï–“›tWÔï7`ÆtWìï”UX ð”UX8ð1”ítXdð=dútZ ðÆ=d[ÄðÆ1dµ\ìð´“u\ñÏ“u^ ñ¡“ë_`4ñb”"u`Hñm”!`\ñ7`+u`€ñw”ë_c”ñ~”"uc¨ñ‰”!c¼ñ7`†uc\ò7`UeŒòueÈòø”Ueóø”PeôócUfàôG•UfPõ”Ufœõ1”ítfDö^•¢Yh¼öi•îviÔöÁ rUk÷7`UkH÷Œ•ök¼÷ •w!kPø£tµldø”•½'lù7`wmXùuntùø”UnùcUn¸ùÁ rUnàù*dnøù7`Un úå•-wn ú]gµn0ú7`UnDú7`}wn`ú<–žuotúF–âwoˆúO–ïwoœúY–üwo°úc– xoÄú7`xoüúo–uxtû7`bxu,ûóbŽxv@û]gµvPû7`Uvhû³xv|ût–Äxv”û„–Ýxw¨û‹–êxx¸û¢–yyÐû®–#y{èû´–>y}üº–WyüÇ–vy0ü’yƒHüØ‘ªy…`ü7`†Q‡€ü˜`FHˆœü— zаü2—zŠÄü>—TzŠàüP—†z‹ým—‹0ý€—Œz‹Dý“—–zŒ\ý¤—¾zŒxýª—àz°ýÕ—ûzèýÛ—{’þß—!{”þå—I{•4þþ—`{–pþQ˜ûz›˜þ`˜{´þz˜š{žìþ´˜²{ ÿʘÞ{¢$ÿܘ|£@ÿ ™s|¥ÿ-™Å|¨¬ÿ-™}«Èÿ-™o}¯èÿ-™Ó}´o™W~º,z™´~»H™Å|½`™}Àx™o}Ä”™Ó}ɰŸ™ê~ÏÌ´™ Óè»™zÔüÍ™zÔà™WÔ,뙞ÖHë™Tz×\õ™ÎØxš€ÙÀ2š,€ÛÔDš,€Üð`š@€Ý všR€Þ$7`¥€àl¿šË{â çšöã$ñšUã8·qUãpuãŒþšU㨠›UãÔÁ !›UãôÁ E›UãÁ ‚›=ã$Á ª›!ã8Á rUãP7`U㬜´ãØšœµã(±œìãtÄœìä´Úœ)‚åäœC‚ç8þœC‚çxC‚ç´#w!çø(æ‚è0ƒê85^ƒìX@}ƒíxH!î°Á rUîä[Ûƒîgòƒî@7`†Qï`{w!ð|7`Y„ñäšœµó ûµó ž½'ó, !ž…„ôP +ž…„õt 8ž!ö Õ—Uöè #w!ö Wž…÷€ …ž7…ù¼ ’ž{…û §žÖ…ýT @õ…ÿ„ 5†´ 0†ä (>† Õ—z†4 ÁžÖ…L Óž{… d Á rU „ Ÿé† ˜ ŸEˆ 4 :Ÿzˆ X LŸÈˆÀqŸæˆ„Ÿ‰ŸŸ0‰4»ŸQ‰LîŸ{‰h {‰„ Q‰œ3 {‰¸C {‰ÔZ ÿ‰üg AŠ$s ŠŠP|  Š d” «Š €¾Š!œ ÑŠ"¸¤ ãŠ#Ô¬ úŠ$È ‹%,à 5‹&<ë 5‹&Lö 5‹&\¡A‹&p7`U'xF˜`b‹'7`U(˜F˜`b‹(°7`ƒ‹)ÐáožF*üáEo§F*,Æübw!*TÆðrU+|Æ­tV+¤ÆüwV,ÈÆxO-<ÆxU/LÆ£tµ/h7`U/pF˜`nŒ/°7`U0¸F˜`nŒ0ø7`Ö‡1áv¬N3DáºvU4láév¸N4”áw¸N5àáKwÍN6„áwU8”á·wµ8°áoMN8ÜáEo§F8 Æób¥80Æ;x9XÆ'xsN;xÆ0xšN;”Æüb;¼ÆçbV=àÆ x£N>Æ­tV@@7`UAHF˜`¯A\*dBx•tØBQ¡ŽD´x:ŽFÌUtŽHè™tÃŽJ0L(übRO@ãppQX€¡¨Sl‰¡éT„Ÿ¡hVÆÈ¡w!XÆd‹GYÆÍ¡UZ°7`UZÐÁסw!ZðÁñ¡‹G[Á¢U\@7`È\dÆÈ¡w!^èÆd‹G_ÆÍ¡U` 7`Ä`DÆãp:Hbp7`Ž‘c”ÆÈ¡w!eÆd‹Gf4ÆÍ¡UgP7`!ŽgtÆãp:Hi 7`nŽj°F˜`XSkÔ7`nŽläF˜`Vm7`¤’n0ÆÈ¡w!qÔÆd‹GrðÆÍ¡Us 7`s8Æãp:Hvt7`G“w˜ÆÈ¡w!yèÆd‹GzÆÍ¡U{ 7`{@Æãp¾“|p7`â“}¤ÆÂpw!ÐÆÉp‹G‚Æ×pUƒl7`Ⓝ ÆÂpw!‡ÌÆÉp‹Gˆ Æ×pU‰h 7`”‰Œ ÆcU‹´ 7`׋Ø Æãp:H0!7`Ž@!F˜`‹Mx!7`9ˆ!F˜`‹M‘À!epG•’è!•t•’"Ut–”@"™t™––|"xò–˜¨"0—šÜ"f¢¬—ô"üb¬—Ÿ #€¡W˜¡@#‰¡¥˜¢x#Ÿ¡F™¤´#7`ãX¦Ä#F˜`•™§à#7`™•¨ø#F˜`•™ª $7`î•«8$F˜`•™­d$7`A–®„$F˜`•™±À$7`Ù–²Ø$F˜`•™´%7`A—µ0%F˜`•™¸t%7`˜¹Œ%F˜`•™»Ü%7`ãX¼ì%F˜`•™½&7`ãX¾&F˜`•™¿4&7`æ˜ÀT&F˜`•™Ã¬&ž¢ŠšÄÈ&º¢ÄšÄð&7`UÆø&F˜`›Æ4'7`*›ÇD'F˜`H›Èp'7`*›É€'F˜`U›Êœ'7`*›Ë¬'F˜`\›ÌÈ'7`*›ÍØ'F˜`r›Î(7`*›Ï$(F˜`r›ÐP(7`ƒ›Ñ`(F˜`›Ò|(7`ƒ›ÓŒ(F˜`›Ô¨(7`¨›ÕÄ(˜`Ä›Öà(7`UØè(F˜`Ë›Ø)7`þ›ÙH)˜`Ä›ßð)7`þ›á(*F˜`>œçl*7`ƒ›è|*F˜`›é˜*7`ƒ›ê¨*F˜`›ëÄ*7`¨›ìà*˜`Ä›íü*7`Uï+F˜`Ë›ï$+7`Jœð<+F˜`ÀœòÔ+7`ƒ›óä+F˜`äœô,7`êœõ,F˜`ôœö$,7`êœ÷4,F˜`ôœøT,7`ùl,F˜`ûœ,.¤+üä,T¤l-c¤ƒH-n¤š{`-{¤{t-†¤Ð Œ-–¤þ ¨-7`(ž ¸-F˜`Vž.7`(ž.F˜`gž,.7`mžD.F˜`žh.7`…žx.F˜`žÔ.7`šžü.F˜`°žT/7`¼žd/F˜`Çž€/7`Óž˜/F˜`Çžô/7`(ž 0F˜`Vž!L07`(ž"\0F˜`êž#x07`†Q$˜0ÆÂpw!%´0ÆÉp‹G&Ä0Æ×pU'Ô0ï¤ùž'ì0¥Ÿ)1>¥-Ÿ,$1\¥;Ÿ.D1‹¥vŸ3d1¸¥Ÿ8€1Ô¥-Ÿ;œ1ª—8 =p2Õ—N @˜2þ—d BÄ27`Z|GÔ2F˜`¢ Hü27`Z|I 3F˜`¾ J437`Z|KD3F˜`ΠLl37`UMt3F˜`Ö Mˆ37`UN3F˜`¾ N 37`UO¨3F˜`ΠO¼37`†QPÌ3F˜`¢ Qì37`æ Rü3F˜`¾ S47`ó T,4F˜`ΠUL4"¦ ŠV`4,¦¡V„49¦,€Y 4G¦zZ¸4Y¦zZÐ4l¦A¡Z5{¦U¡[<5‚¦g¡]`5¦¡_ 5£¦·¡`¼5ڦߡa6ä¦õ¡c<6§:¢e˜67`¡h°6F˜`\›jÔ67`i¢kä6F˜`\›l77`‚¢m7F˜`‰¢n@77`i¢oP7F˜`\›pt77`Uq|7F˜`‰¢qœ77`i¢r¬7F˜`\›sÐ77`UtØ7F˜`‰¢tø77`§¢u8F˜`\›w887`¡xP8F˜`¢ zx87`Ä¢{8F˜`\›}¸87`¡~Ð8F˜`¾ €ø87`á¢9F˜`\›ƒ897`¡„P9F˜`Π†x97`bx‡ˆ9F˜`þ¢ˆ¬97`U‰ô9t›=‰4:·qU‰x:7§ö‰¤:°šw!‰ü:î¦UŠ;B§£ŠH;ɚ̀‹˜;Á rUŒ°;7`¢ŒÈ;F˜`Ö Žð;¡§Þ£<ħ5‹<Þ§-¤d<å§I¤ˆ<ÿ§Š¤‘´<5¨Š¤’è<n¨Š¤“=›¨g¡”D=®¨ê¤–h=»¨ê¤œŒ=ƨ·¡¢¨=Ù¨S¥£Ä=ᨋ¥¤à=ê¨É¥¦ü=𨦨> ©<¦ª4>#©q¦¬P>*©¤¦­l>9© z¯„>N©z¯˜>X©Ð¦¯¸>_©ë¦±ä>n©)§³?s©P§µ ?7`U·4?£ÿš·H?š©U¸`? ¦² ¸t?©©U¹Œ?¦– ¹ ?µ©Uº¸?]gµºà?7`w!ºü?óbö»@7`‹G»,@ób‘G¼@@7`i§¼\@ób½p@7`v¨½Œ@óbö¾¤@7`’¨¾À@ób‘G¿Ø@7`®¨¿ô@óbÀ AÛ©5‹À A婹¨À4A£t5‹ÁHA啕¨Á\Aù©¾¨Â”A$ª÷¨Â¨A8ª©Â¼AYªý©ÃBHŸŠ¤Ã\B]ªÄ˜BaªÄ¼BfªŠ¤ÄøB7`¥ªÅC˜`²ªÆ0C7`¥ªÇLC˜`UÈhC7`¥ªÈ„C˜`²ªÉ C7`»¤ÊØCF˜`\›Ð D7`»¤ÑXDF˜`\›× D7`bxذDF˜`þ¢ÙE7`w!Ú$EF˜`þ¢ÛhE7`«Ü€EF˜`¢ ÞF7`«ß,FF˜`\›áTF7`j¥âlFF˜`þ¢äøF7`µ¥åGF˜`þ¢çÀG7`2¬èØGF˜`¢ êhH7`2¬ë€HF˜`¾ íI7`2¬î(IF˜`Πð°I7`ì¥ñÈIF˜`þ¢óDJ7`ìô\JF˜`¾ öŒJ7`#¦÷¤JF˜`þ¢ùK7`­ú KF˜`¢ ûDK7`­üTKF˜`¾ ýxK7`¤zþˆKF˜`]­ÿÜK7`w­ôKF˜`Π|L7`¦”LF˜`þ¢àL7`UèLF˜`µ­ M7`w!MF˜`\›@M7`Õ­ XMF˜`°ž xM7`ð­ ˆMF˜`ž ¤M7`®¼MF˜`°žäM7` §ôMF˜`2® N7`¤z0NF˜`J®DN*d`Nꪒ®ŒNùª³®øN«Ý®,O«ö®hO«¯#¤O*«8¯%¼O4«Û¯(n7`1¾?nF˜`@¾@Dn7`¾ATnF˜`^¾BŒn7`CœnF˜`&¶Do7`u¾E,oF˜`\›FHo7`UGPoF˜`‚¾Glo7`‚HŒoF˜`¾K¼o7`‚LÜoF˜`9¿O@p7`UPHpF˜`‚¾Pdp7`‚Q„pF˜`9¿TÔp7`UUÜpF˜`\¿U(q7`‚VHqF˜`J®Yxq7`;ƒZqF˜`¾\¼q7`;ƒ]ÔqF˜`9¿_ r7`;ƒ`8rF˜`9¿bpr7`;ƒcˆrF˜`·eØr7`;ƒfðrF˜`J®hDs7`;ƒi\sF˜`J®kœs7`¡„l¬sF˜`Ä¿mÔs7`UnÜsF˜`°žnðs7`¡„otF˜`°žp0t7`¡„q@tF˜`°žrpt7`Ï„s€tF˜`•™tœt7`Ï„u¬tF˜`•™vÈt7`Ï„wØtF˜`¾xu7`a…yuF˜` À{\u7`a…|tuF˜`9¿~ u7`U¨uF˜`\¿àu7`µ…€ðuF˜`J®v­YÀ‚(vÕ­YÀƒ@vè­YÀ„Xv®YÀ…pv"®¥À†ˆv4®¬Àˆ vF®½ÀЏvX®ÆÀÐvk®×ÀŽèv®êÀw–®Á’w¼®Á•0wÕ®-Á˜Hwã®3™ðƒ¯œÂ›¸„¯œÂœÌ„(¯ Ã…4¯5Þ<…I¯ißx…^¯Ã ´…l¯Êáð…~¯üâ,†¯+Ä£h†¢¯]Ĥ¤†¶¯Ä¥à†į¶Ä¦‡دæÄ§X‡æ¯Ũ”‡ú¯GÅ©Ї°ŽÅª,ˆ°†Æ«‰1°ÓÆ®”‰F°‘ǯŠ\°ºÇ°8Šk°ëDZTаƒÈ²°ŠްƒÈ³ ‹˰µÉ´È‹ñ°ësµÜ‹#±'ʶø‹j±'Ê·Œ7`U¸ŒF˜`’ʸ0Œ7`U¹8ŒF˜`­Ê¹LŒ7`UºTŒF˜`’ʺhŒ7`ÈÊ»ˆŒF˜`V˾<d²+Ì¿œs²PÌÁ¸‡²nÌÂÌ’²nÌÂàž²nÌÂô±²nÌÂ Ž¼²nÌÂ$ŽDzsÌÂHŽÒ²éTÈŽÚ²ÌÅÌŽì²ÏÌÆ8þ²*ÍÇȳ™ÍÈ„"³¾Íɸ-³ƒÈÊ ‘@³.ÎËP‘N³qÎ̼‘[³ÈÎÍ’m³ÏÎ`’}³AÏϼ’‘³ŸÏГ¢³ ÐÑ|“¶³†ÐÒÜ“˳ÏÐÓD”Û³+ÑÔ¤”é³+ÑÕ•ù³ŸÏÖd• ´ƒÈ×ü•´ƒÈØ”–-´kÒÙ°—<´.ÎÚl˜J´öÒÛ̘W´"ÓÜ™g´qÎÝ\™x´ƒÈÞ°™Š´ÛÓß4š¥´ƒÈàˆš¶´€Ôáԛɴ‡Õâ Ü´Öã\žì´€ÖäüŸü´íÖå\  µ?׿¨¡µƒÈçü¡$µqÎè<¢2µ›×é ¢=µ÷×ê £JµzØìÀ£]µ$Ùít¤qµ†ÙîĤµ½Ù𥯵ÎÙòh¥ŵâÙô¼¥¶‘Úõ(¬¶™ÚöL¬%¶ªÚøt¬+¶³Úù ¬1¶¿ÚûÔ¬7¶ÎÚþ ­=¶èÚ@­¶èÚt­’¶ Û Ì­´¶sÌ ®À¶Û P®Ò¶3Û ¯å¶BÛH¯ï¶âsh¯õ¶Îq˜¯ý¶‚r¼¯ ·œsä¯#·×q°9·Ýrt°L·Ïr ذW·Û!X±b·Ýr$ȱn· s&L²}·¾Û(¬²·5r*$³œ·Ýr-L³´·^r/°³Í·Vr1 ´Þ·ir2”´ï·tr4$µ¸¶r7dµ/¸çÛ9üµE¸÷Û;¤¶d¸ Ü>D·t¸ÜA𷆸rEh¸¡¸rHи´¸DrJ€¹Ô¸×qNø¹à¸JÜPXºrR„ºô¸kÜU躹rW@»¹QYT»>¹éÜY€»O¹ Ý[œ»c¹U]Ä»z¹#Ý^仜¹žÝ_|¼ö¹žÝdˆ½º†ÙiÀ½&º0Þkø½9º@Þm ¾LºNÞo<¾QºœÞqÀ¾tºàÞv¿•ºßyh¿¥º<ß{Ä¿®ºµß~8ÀÀºµß€tÀ׺Üß‚œÀôº·à„Á»ïà†XÁ»á‡ðÁ»;áˆXÂ:»dኬÂR»láŒÀÂd»…áŒ8Ãp»“ádÃ|»¡áŽ¼ÃŠ»ÍáØÃ–»ã‘PÄž»ã’tÄ©»-ã“´Ä´»Dã”èÄ»»Wã–ÅÅ»oå—ÆÌ»”å˜XÆÖ»”å™tÆß»¥åš Æ뻹å›ÌÆû»¥åœðÆ ¼òå<Ǽ1æž„Ç*¼¦æŸÈÇ9¼óæ øÇH¼Ûç¡`Ék¼½é¢€Íw¼Ò飔͑¼ï飨ͬ¼Iê£ÄÎǼ‚ê¥lÏἠꨈÏî¼!ë©HѽV묜ѽ^ë­°Ñ6½oë­ÄÑS½"t­Òy½8ì°DÒð½îí´tÔ¾ës¶Õ ¾ t·@ÕB¾øs»Õ7`î¼ÀÕS¾µ¿Ö\¾8î¿ÈÖx¾1À×7`UÁ×F˜`LîÁ×7`tÂ,×F˜`bîÃL×7`tÄ\×F˜`hîÅ|×7`UÆ„×F˜`oîÆÀ×7`UÈÈ×F˜`yîÈØ7`UÊØF˜`ƒîÊDØ7`UÌLØF˜`ƒî̈Ø7`2#ΘØF˜`îÏÔØ7`UÐÜØF˜`•îÐøØ7`UÒÙF˜`§îÒ(Ù7`UÓ0ÙF˜`·îÓTÙ7`UÔ\ÙF˜`ÈîÔtÙ7`ÐîÖ„ÙF˜`(á× Ù7`tذÙF˜`×îÙÐÙ7`ÐîÚàÙF˜`ÝîÛüÙ7`UÜÚF˜`ñîÜÚ7`øîÝDÚF˜`×îáÛ7`ÐîâÛF˜`Ýîã,Û7`@ïä<ÛF˜`(áåXÛ7`tæhÛF˜`ôÚçˆÛ7`UèÛF˜`Kïè¨Û7`2#é¸ÛF˜`KïêÔÛ7`½'ëäÛF˜`KïìÜ7`w!íÜF˜`aïî,Ü7`½'ï<ÜF˜`oïðXÜ7`Uñ`ÜF˜`|ïñtÜ7`‘ïò„ÜF˜`¬ïó¤Ü7`Æïô¼ÜF˜`oïöäÜß¾ð÷øÜè¾µ÷ Ýñ¾'ð÷ Ý7`2ð÷HÝ7`ÐîúXÝF˜`(áûtÝ7`Uü|ÝF˜`HðüÝ7`Yðý ÝF˜`pðþÀÝ7`UÿÈÝF˜`|ïÿÜÝ7`†ð ìÝF˜`žð Þ7`µð ÞF˜`¼ð 4Þ7`Íð TÞF˜`"ñ ¤Þ7`+ñ ´ÞF˜`"ñ àÞ7`:ñ øÞF˜`"ñ 8ß7`]ñ PßF˜`"ñ ˆß7`qñ ˜ßF˜`"ñ ¸ß7`U ÀßF˜`Hð Ôß7`µð äßF˜`¼ð à7`€ñ àF˜`"ñ `à7`°ñ €àF˜`Åñ ¸à7`½' ÈàF˜`Åñ èà7`Îñ áF˜`Õñ (á7`Îñ! @áF˜`áñ# há7`îñ$ €áF˜`Õñ& ¨á7`U' °áF˜`|ï' Äá7`‘ï( ÔáF˜`¬ï) ôá7`U* üáF˜`|ï* â7`†ð+ âF˜`žð, <â7`U- DâF˜`|ï- Xâ7`†ð. hâF˜`žð/ „â7`U0 ŒâF˜`ò0  â7`ò1 °âF˜`(ò2 Ìâ7`U3 ÔâF˜`(ò3 ðâ7`U4 øâF˜`(ò4 ã7`U5 ãF˜`(ò5 8ã7`5ò6 hãF˜`(ò; ¸ã7`U< ÀãF˜`(ò< Üã7`U= äãF˜`(ò= ä7`U> äF˜`(ò> $ä7`U? ,äF˜`(ò? Hä7`‘ò@ XäF˜`(òA xä7`ÎñB äF˜`(òD Èä7`UE ÐäF˜`(òE ìä7`UF ôäF˜`(òF å7`UG åF˜`(òG 4å7`UH <åF˜`(òH Xå7`¨òI €åF˜`(òM Äå7`ÎñN ÜåF˜`(òP æ7`UQ æF˜`(òQ 8æ7`UR @æF˜`(òR \æ7`US dæF˜`(òS €æ7`UT ˆæF˜`(òT ¤æ7`UU ¬æF˜`(òU Èæ7`PV ØæF˜`(òW ç7`tX çF˜`(òY Hç7`×òZ XçF˜`(ò[ ˆç7`Üò\ ˜çF˜`(ò] Èç7`áò^ ØçF˜`(ò_ è7`æò` èF˜`(òa Hè7`ëòb XèF˜`(òc ˆè7`ðòd ˜èF˜`(òe Èè7`õòf ØèF˜`(òg é7`½'h éF˜`(òi Hé7`úòj XéF˜`(òk ˆé7`¢Yl ˜éF˜`(òm Èé7`ÿòn ØéF˜`(òo ê7`Up êF˜`(òp <ê7`¨òq dêF˜`(òu ¨ê7`óv ÀêF˜`(òx èê7`Uy ðêF˜`(òy ë7`óz ëF˜`(ò{ `ë7`U| hëF˜`(ò| „ë7`2#} ”ëF˜`(ò~ ´ë7`‘ò ÄëF˜`(ò€ äë7`-ó ôëF˜`(ò‚ ì7`‘òƒ $ìF˜`(ò„ Dì7`-ó… TìF˜`(ò† tì7`U‡ |ìF˜`(ò‡ ˜ì7`½'ˆ ¨ìF˜`(ò‰ Èì7`UŠ ÐìF˜`SóŠ ðì7`U‹ øìF˜`ƒó‹ í7` óŒ (íF˜`¨ó Dí7`±óŽ TíF˜`½ó pí7`Óó‘ ˆíF˜`(á“ Èí7`a” äí7`U• øíFB.ld;• î7`d;— (î‰l a™ <î7`íó™ TîF˜`¨ó› tî7` ôœ ”îF˜`#ôŸ Ìî7`U  äîÆ1d=ô  ïÆ=dRô¡ dqô£ xï7`{ô¥ œï.bìì§ °ï$bµ§ Äï]gµ§ Ôïæ1d "§ (ðæ1dµ¨ Dðæ=d§"¨ œð£¿¢ôª Àð=d¶ô« ñæ=d¬ 4ñª¿Ñô­ Hñ7`qñ® dñóbâô¯ xñ]gµ¯ ˆñ7`U¯  ñÆ1dðô¯ ¼ñÆ=d÷ô° Øñ7`U² àñF˜`õ² Pò7`1õ³ `òF˜`\õ´ ˜ò7`1õµ ¨òF˜`u¶ àò7`U· èòF˜`õ· ,ó7`1õ¸ <óF˜`°õ¹ |ó7`Uº „óF˜`H𺠘óÞ¿Ùõ» èóë¿Ùõ¼ ,ôó¿åõ½ \ôû¿óõ¾ äôÀöÀ XõÀ¨öà ÜõUÀÑöÆ ðõ\ÀíÆ öiÀ(`Æ ö7`×öÆ @ö7`UÉ HöF˜`âöÉ hö7`éöÊ xöF˜`ýöË ˜öÜÀ¢÷Ì øöîÀøÏ ÷Á­øÑ l÷ÁùÔ ˆ÷$Á]ùÖ ¨÷4ÁšùÙ Ä÷>Á¹ùÜ Ô÷UÁ¹ùÜ ä÷vÁ¹ùÜ ô÷Á¹ùÜ ø¼Á©TÜ 8øËÁ¿ùÝ €ø7`IùÞ øF˜`óùß ´ø7`†ùá ÄøF˜`)úâ èø²úä 4ùÂÍúç Dú% ûê Pû7Â_ûî ìÿNÂóûñ ` üõ PjÂ.Îö ”Â÷×÷ ’Â>üù 0¤ÂJüü @ *dÿ  7`Uÿ F˜`hüÿ $ 7`U , F˜`qü X 7`U ` F˜`}ü | 7`U „ F˜`Lî ˜ 7`U   F˜`†ü ´ 7`U ¼ F˜`›ü à 7`U è F˜`·î ¼ÂÏü ( âÂÏü @ òÂ0ý \ Ã`ý x BØý ” ¼Â‰ ° ŸŸ0‰ Ì ^ÃÔý è »ŸQ‰   Q‰ îŸ{‰ <  {‰ X 3 {‰ t C {‰ 7`øý!   F˜`äœ" ¼ 7`øý# Ì F˜`þ$ è 7`þ% F˜`¡»' (7`¹ü( 8F˜`Uþ) l7`U* tF˜`\›* „7`ý+ ¤F˜`°þ. Ð7`øý/ àF˜`þ0 ü7`Ûþ1 F˜`þ2 (7`U3 0F˜`âþ3 @7`U4 HF˜`¯4 \7`U5 dF˜`\›5 t7`U6 |F˜`\›6 Œ7`Ûþ7 œF˜`\›8 ¸ÓÃÿ9 À Ä?ÿ> )Ä[ÿA @5Ä[ÿD xAÄnÿG ”^ÄÿK kįÿP 8wĹùU LÄÆÿU x‡²nÌW ŒÃÄ©TW ÀÏÄ©TX øâÄçÿY HìĹùZ \ÅZ ¤Å'\ Ø2Å\^ ,OÅ\b dlÅÂf „tÅg ÅŸj à”Å®m P£Åñp ¨½Å$s ÙÅ%<v 4îÅãv PÆy dÆ y (Æ\~ <ÆŸ„ L^Æ<‹ ÜvÆx ¼ƒÆ‰‘ T —Æþ’ ä"ªÆ9› œ%¿Æ—£ „'ÙÆÅ« ü1øÆ"± 3 Ç#¹ \3Çʽ 4)Ç´à l4pÇUÅ €4€ÇøÅ ”4“ÇUÅ ¨4 ÇPÅ ¼4°Ç Æ Ð4ÃÇPÇ ä47` È 57`' Ë $5F˜`D Í H57`I Î x5F˜`D Ó ¸57`p Ô è5F˜`D Ù $67`™ Ú L6F˜`D Þ „67`¿ ß ¤6F˜`ã â Ô67`¿ ä ô6F˜`ã ç $77`¿ é D7F˜`ã ì t77`¿ î ”7F˜`ã ñ Ä77`¿ ó ä7F˜`ã ö 87`¿ ø 48F˜`ã û d87`¿ ý „8F˜`ã  ´87`ê  Ô8F˜`ã  97`ê  $9F˜`ã  T97`ê  t9F˜`ã  ¤97`ê  Ä9F˜`ã  ô97`¿  :F˜`ã  D:7`¿  d:F˜`ã  ”:7`¿  ´:F˜`ã # ä:7`¿ % ;F˜`ã ( 4;7` * d;F˜`ã /  ;7`4 1 Ø;F˜`ã 7 <7`F9 (<F˜`¯: l<7`; Œ<F˜`} > ¸<*dA ô</È©TA L=LÈÊ B Œ=UÈ5‹C  =`Èà C ¼=sÈö F X>ŒÈ H ¼>ÈE I ?°È— J „?ÝÈL O ˆCóÈ‚ T ÄCüȱ W èCÉØ Z D"É6] ÔE8Éc F>Éf èj$bqT> k7`"> kóbl? 4k7`.? Pkób-@ hk7`:@ „kóbqTA œk*dA ´k7`½'A ÐkÏGB äkÏUC ük#ÏNC l1ÏUC (lAÏTC €[Øù%@ ÄlØ&B \‘‚Ø7&I ¤‘ج$K ü‘žØ5‹M ’µØ€&M è’ÉØ¬$P “ÖØ5‹R “÷Ø5‹R ,“Ù5‹R @“ÅØ¬$R °“0Ù³&T Ô”@Ù³&X ð•PÙÚ&\ Ä–gÙé&b ø–tÙ'e È—›Ù'h ˜¢Ù¬$j (˜„€¬$l D˜¦Ù¬$n x˜³Ù¬$p  ˜·Ù„$r ´˜¿Ù:'r ø˜M%u ™ÊÙ['w x™×Ù¬$z ”™ÛÙj'| Ô™ðÙ}' šøÙn$‚ šÚ}$ƒ 0šÚ„'„ ¨šÚ‹'… t›Ú«'† ¼›6ÚC(Š |œMÚ–(Ž ÐœVÚ¢( 8wÚÂ(” „€ÚÈ$•  ˆÚH$– ȑڬ$— žŸÚGY™ 8žïÚµš LžøÚµš `žÛµš tž Ûµš ˆžÛµš œžÛµš °ž(ÛYš Äž7`Õ(š Ÿ7`U¡ ŸF˜`á(¡ ,Ÿ7`U£ 4ŸF˜`á(£ LŸÕB$¥ €Ÿ”Ûþ(§ ”Ÿ¨Û5‹§ ¨Ÿ®ÛO$§ ¼Ÿ´Û5‹§ ПÛ5‹§ 䟺Û5‹§ øŸÀÛO$§  ËÛ5‹§  ßÛ)§ 4¡ôÛV)® Ô¡Ü5‹± ä¡ Ü %± ø¡2Ü %± ¢>Üd)± <¢IÜ{)´ ì¢k܆)¸ ü¢u܆)¸ £~܆)¸ £®Û†)¸ 4£‘ÜS$¸ L£k܆)¸ \£u܆)¸ l£™Ü†)¸ |£¢ÜŠ)¸ Ø£§Ü)º L¤*d¼ |§7`W¼ œ§Æöpw!½ ЧÆ qw!¾ ¨7`Ô)¿ ¨˜`FHÀ <¨7`ò) `¨ÆcUÄ ˆ¨7`XÄ ¨¨Æöpw!ŠܨÆ qw!Æ ©ÆãpI*Ç D©7`Ô)È `©˜`FHÉ |©7`u*Ë  ©ÆcUÍ È©7`ãXÍ è©ÆöpXÎ ªÆ qXÏ HªÆãp:HÐ |ªžÞ¾¨Ñ ŒªÃÄ©TÑ ÀªÍíÒ «$ÍnÌÔ «¨ÞnÌÔ 0«=ÍnÌÔ D«³ÞnÌÔ X«ÀÞ¹ùÔ l«ÚÞ¹ùÔ €«òÞ¹ùÔ ”«ß¹ùÔ ¤«ßÄ*Ô ð«6ßÞ*× ¬Pß +Ú ˆ¬sß+Û ô¬“ßïàÜ 8­£ßi+Ý x­ÓßÐ+Þ 0®àù+à „®à7,ã Ü®+àl,å \¯7àu,ç ˆ¯Aàl,é  ¯Sà~,ë ̯]àˆ,í ä¯vàº,ï ì°àÌ,ò ±¦à-õ x±¸à.-÷ °±Îà9-ù бáàM-ü p²ÿà]-ÿ ²án-(³&áw-<³8ánÌP³CánÌd³PánÌx³[ánÌŒ³hánÌ ³sánÌ´³€ánÌȳ‹ánÌܳ˜ánÌð³£ánÌ´°ánÌ´»ánÌ,´ÈánÌ@´ÓánÌT´àánÌh´ëánÌ|´øá©Tµâ5‹$µâ5‹4µ#âúT¶/âU(·@â¦-x·HâÜ-X¸câÿ- à¸}â . ¹Šâ". D¹•ârV”¹¤â™Vй¸â¦VºÐâ‹.`ºÚâVìºíâ UX»ã©T„»ã©T¸»ãl,¼)ãü.T¼@ã/p¼Pãÿ- ô¼kã ."½€ãl,$h½ãsÌ&œ½šãˆ,'ཬãn-)`¾¹ã/+ì¾Ñã!/.@¿7`(/0X¿F˜`D 2„¿7`U3Œ¿F˜`A/3À¿7`U5È¿F˜`I/5è¿7`2#6ø¿F˜`x/7àÀ7`½'8ðÀF˜`‰/9 Á7`U:(ÁF˜`1:pÁ7`U;xÁF˜`1;ÀÁ7`™/<ÐÁF˜`1=ìÁ7`U>ôÁF˜`´/>HÂ7`½'@XÂF˜`bîAŒÂ7`UB”ÂF˜`bîB¨Â7`Â/CÀÂF˜`Ì/EÃ7`UF ÃF˜` F4Ã7`UG<ÃF˜` GLÃ7`Ò/HdÃF˜` J¼Ã7`XUKÌÃF˜` LìÃ7`Û/MÄF˜`rWO0Ä7`UP8ÄF˜`ä/PPÄ7`ê/QhÄF˜`rWS”Ä7`0T¤ÄF˜`Ì/UÀÄ7` 0VØÄF˜`Ì/X0Å7`#0YHÅF˜`rW[ðÅ7`U\øÅF˜`´/\LÆ7`U^TÆF˜`bî^hÆ7`0_xÆF˜`Ì/`ÈÆ7`ê/aàÆF˜`rWc Ç£äI0dLÇ*dflÉ7`UftÉF˜`ôÚfˆÉ7`2#g˜ÉF˜`¢0h´É7`XUjÄÉF˜`¥kèÉ7`vfløÉF˜`D mÊpn°0n0ÊüwÉ0oPÊübå0qhÊ·yù0s„Ê­tå0tœÊúx!1v´Ê¾äE1xÈÊÈä!1yàÊÒäE1{ôÊ‚tŒ1|Ëjn«1~$Ë\tÁ1~@ËNtÁ1€\ËUtí1‚tË™t2„ŒËit-2†¬ËàäV2‰ÌË•tƒ2ŒäËrsž2ŽÌéäµ2ÌðäÓ20̼tî2‘LÌÃt 3’hÌøä'3“|Ìþä醔Ìåµ2•¬Ìå醖ÀÌ%åÓ2—ÔÌ7å'3˜èÌGåî2™ÍXå 3š Íjå!1›8Íuåž3`Í~åž3ŸˆÍ‰åž3¡°Í˜åž3£ØÍ©åù3¥ôÍ´åù3¦Î¿åÉ0§0ÎÃåž3©XÎÊå!1«pÎÙåh4­ Îàå5‹®°Î.Á|4®ðÎîå|4±pÐuÖ5´$Ñþå5·`Ò³Ú6»pÓ æœ6¾Ôæ5¿ÈÔ&æì6ÂLÕ*æ)7ŸÕ/æ>7Ç(Ö8æ²7ÊœÖ=æÚ7Í×DæÚ7Ï„×Kæö7Ѥ×Ræö7ÔÔ×ZæO8×dØdæw8ÛÐØlæ¯8ÞÙuæw8àtÚ{æ-9ãÛ‹æh9ç@Û æ-:ìèÛ¹æ›:ñTÜÖæ;òôÜãæµ;öÝìæ;ù´Ýùæµ;ýÔÝçñ;Þç!<lÞ&çñ;°Þ8ç!<ßJç><DßYç><„ßhçÂ<Dàtç÷< hàçY# àŠçY# ¸àªçA= áÈçŽ= ¸áÑçã= Üáßç> hæÔ¥>¤æóç¿> çÿçØ>(çè?Lçè?tçè4?¤ç+èm?ìç1è¤?è7`^Q! èF˜`V#@è7`^Q$XèF˜`V&xè7`^Q'èF˜`V)´è7`6;*ÌèF˜`î?,øè7`U-éF˜`î?-é7`6;.(éF˜`î?0Té7`U1\éF˜`î?1lé<è@2€éFèU2”é²çN=2¨é¼çP3¼é7`æ<4àé7`½=6êá;r!8(êáfrU8Hêá¤rU8lêá rU8|êÆØrö8œê7`ò>8´êF˜`•™:ôê7`?;ëF˜``@< ë7`Q>0ëF˜`@?Pë7`yRAhëF˜`«@Cë7`UE˜ëF˜`¾@E°ë7`UG¸ëF˜`¾@GÐëpnà@Ièëübî@JìRèAM ì´t#AO@ì­tFAQXìçb^ASxì‚tAU”ìFtAW°ìlèîAYÜìNtB[øìUt9B]í™t^B_(í\tBaDí•t›BclíitØBeíàäCh´íøäaCkÔíqè¦ClôíyèÛCnîéäDp(îþä)Dq<îðäCDr`î¼tZDs|îÃtuDt˜îåDu¬îå)DvÀî%åCDwÔî7åaCxèîGåZDyïXåuDz ïjnŒD{4ï„è¦C{LïŽèÛC}dïüw^A„ï7`UŒïF˜`ºD°ï7`…C‚ÀïF˜`éDƒôï7`…C„ðF˜`éD…8ðÙå1E†hð.ÁIE‡¬ðîåIE‹`òŸèáE¬òuÖ1F‘Œó§è‡F•8ô¬è§F˜èô‹æÜF›$õ æÒG¡àõ´èH¦öZæ‹H«˜ö æ8I¯H÷æžI°ø&æðI³¨ø*æ;J¶(ù¼è¥J¸¼ùDæÎJºHú=æÎJ¼ÔúÄèwK¾lûÈèéKÀü/æEL˜ü8æÜLÅ(ýÍè;MÈ<þÜè;MÎpþèè¿MÔüþÿçèMÖÿèN×4ÿËtENØPÿèwNÚÿ1è»NÝÔÿ+è;OßLèyOáphç PäDtç]PåhçY#æŠçY#渪çÒPæ,Èç&Qç´Ñç‰QèØ7`?éèF˜`¬Qê7`fOì,F˜`ßQîp<èRð„FèUð˜²ççPð¬¼çPñÀ7`JPòä7`]Qôá;r!ö,áfrUöLá¤rUöpá rUö€ÆØr=Rö 7`Uö¨F˜`HRöÀ7`fN÷ÐF˜`lRøô7`UùüF˜`wRù7`†Nú$F˜`lRûH7`fNüXF˜`ÅRý¤7`Uÿ¬F˜`ÙRÿØþèçRðéçRéçR éçR8é5Sèep~SxIé•S YªÐS4HŸàSPþèñShéñS€éñS˜Yª T °HŸ#T$Ìé3T)T ep]T,Ä IérT0< ‚t“T4È •t×T6l néøT8ü }é1U:¤ xnfU<¸ Ié‹U= é›U?L ep¬U@¤ pn¶UB¸ jn¾UCÌ xÅUC° éÝUHä¶éèUK ÅéüUOH^bVPtÙéVVQ¼‹aVS𨕘VU ¼t¬VV éäºVW4Gå¬VXHåºVY\‚tÈVZ•tâV\Ôïé>W^Løé—WaØýéïWddnéDXg  ê‰Xi}éàXlpêùXn¤Nt%YrÈ%ê@Yt 6êƒYyl>êùX| \t%Y€ÄJê@Y‚VêƒY‡h^êÚYŠÄlèZàjê-ZFtJZ’8xZ”„UtÀZ–È™tðZ˜$vê [š|Rè*[˜‚ê;[Ÿà´tR[¢üŽê}[¤„’êÍ[¦Hžê\©¸¤êu\ªH«ê˜V«ˆitÝ\¬Ðàä$]¯³êd]²˜½ê½]¶Ãêÿ]ºTÔê1^¿¬ëê}^Ä0›^É(÷ê·^ÌHë _Ϩë _Ñäëb_ÓD,ëŽ_Õ\Eë²_×tQëË_ؘZëò_Ú¼.˘VÜàøä`ÝôþäzˆÞ7å`ßåzˆà0aë(`á|„è:`å jëJ`çÜŽèa`ë sëv`í „ë§`ïP ˆëÌ`ðŒ Žë§`òè ’ëaó\!˜ë§`õ¸!œëaö,"¢ë§`øð"ªëÌ`ù¸#´ë‹aûh$Yª aþ€$HŸªa˜$Ëë»a%xnÑa$%«êÝa8%^bïa L%•tb d%}é b |%‚tAb”%ðä¬V¨%ÃtºV¼%%å¬VÐ%XåºVä%jnVbø%Œn-ã<&‘nÝa€&Öë-ã”&åëÝa¨&pn…bÀ&‹a‘bØ&Yª¾bD'ìøb¬'xc È'né?c"à'IéZc$ø'ìnc& (!ìƒc)`(+ìÞc+ì(ïéd. )7ì8d1 ) êsd5Ä)Cìe8˜*QìBe=¼*Vì±eAd+ýéÞeFˆ+øé fI +_ìIfLà+it|fO ,ë¦fR\,kìØfT¬,0þfXØ,wì"g[h-½êbg_ˆ-ƒì–gc¼-àäägh/ë¦fkx/•ì$hmÀ/÷ê\hr80§ìhuÀ0¼ìùhyà2³ê:i‚l3Þìgi†ü3Vê„i‰,4\t¦iŒD4Nt¦iŽ\4éìgiì46ê„i“5Rèºi–t5´tÏi˜¸5Ftjšü5lè#jœ\6Ut>jžt6™tXj Œ6žê~j¢ 6¤ê£j£´6ŽêÑj¤Ì6’êñj¦ä6Qëk©ü6ZëHk«@7.ËÝa­€7þäck®”7øätk¯¨7åck°¼77åtk±Ð7ôì…k²,8„è¥kµD8í¹k·8ŽèÓkº¨8„ë-ã¼9ˆël½9˜ë-ã¿H:œëSlÀ;Žë-ãÂÔ;’ëSlè<¢ë-ãÅl=ªëlÆ4>ÙéilÈL>së‰lÊl>^b©l̈>‚t³lÎÔ>néÈlÐ ?•tÛlÒh?}éçlÔ°?ÙéùlÖø?IémØ`@!ì(mÚ´@í.mÜô@\tFmß$A(í.má\ANtFmäŒAxnRmæ¸A3íùlçÐAGíFméèA7`}mëBF˜`þí(B7`¢mî@BF˜`¶mðhB7`½mò€BF˜`þô¨BXíämõÄBeí nöàBt–ämøôBqí nù Cjnjnû$CŒíˆnû@CIéÁnü€C‚tánþðCYªoLDnéoÄDNtDoìª}鯖@$«¨•ÿ–B\«Ëôÿ–C˜«Òô9—DL­x9—Ll­´ë‰—TÄ®7`m–YÜ®F˜`¿—[¯7`¥–]¯F˜`¿—_H¯7`ó–aX¯F˜`¿—bt¯7`—d”¯F˜`¿—gÀ¯õ›UiÔ¯/õ‹Uj,°4õv`lü°<õŽ_nL±Rõ²_pp±fõw˜ql²yõŽ_s¸²õ²_uð²*æAbv,³Ÿõœ˜xŒ³Äèb{ü³·õݘ}d´Èè bà´ËõV™ƒ˜µ_ò f‡@¶=æ¦iŠ€¶Dæ¦iŒÀ¶çõ‘bŽü¶îõÝal·òõ‘b‘À·öö™“¸öil–t¸'ö,š˜à¸|ò>j›X¹=öGšœ¹Iö?c ¼¹OöÀš¢ºeö›¥xºsöck¦ìº}öïa§h»„öª›¨´»/õZc¬ü»˜öÀ›®„¼¾ö⛲ð¼Ûö⛵\½ùöXj¸ô½÷4œºŒ¾&÷~j½¿,÷Üœ¾Ô¿I÷£jÂhÀP÷SÃÁc÷ÑjÆ´Ág÷ÉȘÂ÷ñjÌ`ÃèºVϸÃ1è¬VÐôÄ÷kÑ Ä‘÷‘bÓHÄ›÷3žÕàÄ¡÷bžÙŧ÷€žÜäž÷¤žã\ÆÄ÷…bçŒÆÌ÷ŸèxÇß÷kë¤ÇepSŸíÈÇnpsŸîàÇò÷•ŸïÈø•Ÿï Èø•Ÿï0È%øA‹ïDÈ+øA‹ïXÈGøA‹ïlÈ‹øáxï|Èšøa ðÈ øs ñ¤È¤øƒ ò´Èªø– óÈȲøœ ôüÈÁø¸ õɹƠö(ÉÅÆ ø@Éæ€Æ úXÉӀƠüpÉÆ þˆÉ«Æ  ÉyÏ ¸É˜ëØ ÔÉŽëØ ðÉÅøm#ÊÎø–  ÊÞøœ  @Êõø¡ \Ê ùm# xÊùm#”Êùm#¨Ê*ùY#ÀÊ2ùY#ØÊ:ù`¡ìÊ>ùx¡Ë´™ŠŠËBùœ¡$ËFù²¡<ËZùÀ¡PËiùÍ¡hËvùÞ¡€Ë„ùø¡œË’ù,¢ ´Ëžù=¢"ÌË«ùW¢%è˸ùœ¢)ÌÔùÝ¢+Ìãù4-0Ìòùü¢/LÌ3€£1dÌáx#£2|ÌÈx#£4”Ìq€#£6¬Ìˆ€#£8ÄÌ”€#£:ÜÌK£<ôÌ ú-£= Íú-£?$Í+úØ A<Í9úØ CTÍFúØ ElÍUú£G„Ícú‘bHàÍù©W£JüÍmúW£KΡp_#L8ΠъMPΤ ãŠNhÎŒú”£O€Î•ú§£P˜Îú¹£Q°Î€Ì£RÈΦúÌ£Säάú_#Tϳúñ£U$ÏÐú¤V<ÏÝú¤VTÏåú¤VhÏøú¤V|Ïû¤V”Ï€1¤W¬Ï” «ŠXÄϾŠYÜÏû[¤ZôÏûq¤[ Ð#ûˆ¤\$Ð’aAŠ]pÐĵ¤^ˆÐ,ûФ_ÌЮ–Í¡aÑBûý¤c,ÑIûý¤cXÑSû¥clÑZûÌ£c„Ñ_û9¥dœÑkû£f¬Ñ†ûO¥gÀÑûa¥gÔÑ›ûa¥gèÑXˆ¥gÒn ¥i(Òßt£l@Ò®û£mXÒ³û£npÒ¸û£oˆÒ½û×¥p ÒÃû£r¸ÒËû£sÐÒÏû£tèÒõí£uÓÕû£vÓî~Ì£w0ÓÛû£xHÓßû£y`Óåû3¦zxÓêû£{Óîû£|¨Óóû£}ÀÓ÷û£~ØÓüû£ðÓü£€ÔüØ  Ôü-£ƒ Ô7`†¢…¸ÔF˜`¥‡àÔ7`Ç¢ˆøÔF˜`û¦Š Õ7`U‹(ÕF˜` §‹@Õ7`UHÕF˜`)ú`Õ7`UhÕF˜` §€Õ7`U‘ˆÕF˜` §‘ ÕçY#“ÈÕŠçY#“ðÕ2ü¤“Ö>ü¤“ ÖJü¿“\ÖWü)§”¤Ö`üc§™èÖpü{§œ@×{üµ§¡„׆üͧ¤Üבü¨© Øü¨¬hبüY¨±¬Ø´üq¨´Ù¿ü«¨¹\ÙËü輸ÙÖüý¨Á Úãü©ÄTÚîüO©É˜Úùüg©ÌàÚý¡©Ñ$Ûý¹©ÔlÛýó©Ù°Û&ý ªÜøÛ1ýEªá<Ü;ýeªä„ÝGýrªèœÝSýŠªëØÞ_ý—ªïðÞkýͪò,ßwý«÷Dß„ý_«ûœßý©«àß¡ýØ«à¹ýå« ,àÃýô« ŒàÍýô«¤àÕý¬ááý¬áêý¬|áöý¬”áÿý!¬ôá þ!¬ âþB$dâ!þB$|â*þŠ) Ôâ6þŠ)"ìâ@þ<$$LãLþ<$&dãUþ0¬(Äãaþ0¬*Üãkþ;¬,<äwþ;¬.TäþJ¬0´äþJ¬2Ìä˜þY¬4(å¥þY¬6@å¯þh¬8 å¼þh¬:¸åÆþ‡¬<,æÓþ ¬?TæÞþ±¬AØæëþõ¬Eøæÿþ!­Ipç ÿE­LÜçÿ\­PLèIÿ„­UÀèYÿ¶­[déxÿê­b êˆÿ®jäê§ÿŒ®sÀë·ÿ ¯}ìÆÿ,¯€@ì×ÿD¯€ìéÿ£‚œìôÿ£ƒ¸ì£„Ôì £…ðì×¥† í%£ˆ(í4£‰Dí?£Š`íL£‹|í\£Œ˜íiÌ£´íu£ŽÐ퀣ìí3¦î™£‘$’@î°£“\”xîÇ£•”îÒ£–°îÞØ —Æ U™Æ U™Æ(U™Æ Ørö™Ìî7`U™ìîÁ ëqö™ïÁ ;r!™ ïÁfrU™pïÁ¤rU™ïÁ rU™ ï0B°™Øï7`UšðïÆUšðÆUšðÆ(Uš ðÆØröš8ð7`w!šXðÆU›hðÆU›xðÆ(U›ˆðÆØrö›Æ;†›ÆB†›ÆHV°›ÆM¥›œð7`g°›ÌðÆ(UèðÆØryñÆUÆ;†ÆB†ÆHV°€ñ7`g°°ñÆ(UŸÌñÆØröŸàñÆUŸlò7`UŸtòF˜`w°Ÿˆò7`}°¡ÐòÆU¦äòÆ;†°¦óÆB†°¦óÆHÀ¦0óÆMÀ¦@ó7`Œ°¦tóáEo§Fª¨óÆro °ªÔó7`UªÜóF˜`¨°ªðó7`®°¬8ôÆU±LôÆ;·°±lôÆB·°±€ôÆH½°±˜ôÆM½°±¨ô7`°±ÜôáEo§FµõÆroÖ°µ<õ7`UµDõF˜`Þ°µXõ7`ä°· õÆU¼´õÆ;í°¼ÔõÆBí°¼èõÆHó°¼öÆMó°¼ö7`ø°¼DöáEo§FÀxöÆro ±À¤ö7`UÀ¬öF˜`±ÀÀö7`±Â÷ÆUÇ÷Æ;#±Ç<÷ÆB#±ÇP÷ÆH)±Çh÷ÆM)±Çx÷7`.±Ç¬÷áEo§FËà÷ÆroB±Ë ø7`UËøF˜`J±Ë(ø7`P±ÍpøÆUÒ„øÆ;Y±Ò¤øÆBY±Ò¼øÆH_±ÒÔøÆM_±Òäø7`d±ÒùáEo§FÖLùÆrox±Öxù7`UÖ€ùF˜`€±Ö”ù7`†±ØÜùÆUÝðùÆ;±ÝúÆB±Ý(úÆH•±Ý@úÆM•±ÝPú7`š±Ý„úáEo§Fá¸úÆro®±áäú7`UáìúF˜`¶±áû7`¼±ãHûÆUè\ûÆ;űè|ûÆBűèûÆH˱è¨ûÆM˱è¸û7`бèìûáEo§Fì üÆroä±ìLü7`UìTüF˜`ì±ìhü7`ò±î°üÆUóÄüÆ;û±óäüÆBû±óøüÆH²óýÆM²ó ý7`²óTýáEo§F÷ˆýÆro²÷´ý7`U÷¼ýF˜`"²÷Ðý7`(²ùþÆUþ,þÆ;1²þLþÆB1²þ`þÆH7²þxþÆM7²þˆþ7`<²þ¼þáEo§FðþÆroP²ÿ7`U$ÿF˜`X²8ÿ7`^²€ÿÆU ”ÿÆ;g² ´ÿÆBg² ÈÿÆHm² àÿÆMm² ðÿ7`r² $áEo§F XÆro†² „7`޲ ÈÆUÜÆ;†°üÆB†°ÆHÀ$ÆM—²D7`œ²ŒÆU Æ;¥²ÀÆB¥²ÔÆH«²ì7`°²áEo§FDÆro·²l7`¿²°ÆUÄÆ;†°äÆB†°øÆHÀ ÆMȲ,7`ͲtÆU$ˆÆ;Ö²$¨ÆBÖ²$¼ÆHܲ$Ô7`á²$áEo§F',Æroè²'T7`²ª'œÆU,°Æ;†,ÈÆB†,àÆHV°,ÆMV°,7`÷ª,HáEo§F0|ÆrožF0¨7`C«0øÆU6 Æ;†64ÆB†6LÆHV°6pÆMV°6€7`«6¼áEo§F;ôÆrožF;(7`³;hÆU?|Æ;³?ÆB³?¤ÆH"³?ÀÆM"³?Ð7`'³?üáEo§FB(Æro.³BP7`jB`F˜`¥C”7`jD¤F˜`J³Eä7`UGü*dGh ê£Â³G| 7`UG„ F˜`7²G˜ 7`g³H¨ F˜`V°IÄ 7`UJÌ F˜`˱Jà 7`g³Kð F˜`V°L 7`UM F˜`ÀM( 7`g³N8 F˜`V°OT 7`UP\ F˜`½°Pp 7`g³Q€ F˜`V°Rœ 7`US¤ F˜`_±Sà 7`g³Tð F˜`V°U 7`UV F˜`«²V( 7`g³W8 F˜`V°XT 7`UY\ F˜`ܲYp 7`g³Z€ F˜`V°[œ 7`U\¤ F˜`ë³\¸ 7`g³]È F˜`V°^ä 7`U_ü *d_t ê£Â³_ˆ 7`U_ F˜`«²_¤ 7`g³`´ F˜`V°aÐ 7`UbØ F˜`ܲbð 7`g³cF˜`V°d7`Ue4*de¬ê£Â³eÀ7`UeÈF˜`«²eÜ7`g³fìF˜`V°g7`UhF˜`ܲh(7`g³i8F˜`V°jT7`Ukl*dkäê£Â³kø7`UkF˜`«²k7`g³l$F˜`V°m@7`UnHF˜`ܲn`7`g³opF˜`V°pŒ7`Uq¤*dq꣖´q07`Uq8F˜`¯´qP7`}<s`F˜`¥t|7`Y´uŒF˜`Ë´v°7`Uw¸F˜`Ù´wÐ7`}<yàF˜`¥zü7`Y´{ F˜`Ë´|07`U}H*d}Àê£Â³}Ô7`U}ÜF˜`«²}ð7`g³~F˜`V°7`U€$F˜`ܲ€<7`g³LF˜`V°‚h7`Uƒ€*dƒøê£Â³ƒ 7`UƒF˜`«²ƒ(7`g³„8F˜`V°…T7`U†\F˜`ܲ†t7`g³‡„F˜`V°ˆ 7`U‰¸*d‰0ê£Â³‰D7`U‰LF˜`«²‰`7`g³ŠpF˜`V°‹Œ7`UŒ”F˜`ܲŒ¬7`g³¼F˜`V°ŽØ7`Uð*dhê£Â³|7`U„F˜`«²˜7`g³¨F˜`V°‘Ä7`U’ÌF˜`ܲ’ä7`g³“ôF˜`V°”7`U•(*d• ê£Â³•´7`U•¼F˜`«²•Ð7`g³–àF˜`V°—ü7`U˜F˜`ܲ˜7`g³™,F˜`V°šH7`U›`*d›Ìê£Óµ›à7`U›èF˜`ãµ›ü7`tµœ F˜`†(7`Už0F˜`赞H7`tµŸXF˜`† t7`U¡|F˜`íµ¡¬7`tµ¢¼F˜`†£Ø7`U¤àF˜`ùµ¤ô7`tµ¥F˜`†¦ 7`U§(F˜`¶§<7`tµ¨LF˜`†©h7`UªpF˜`Àª„7`tµ«”F˜`†¬°7`U­¸F˜`¶­Ì7`tµ®ÜF˜`†¯ø7`U°F˜`¶°7`tµ±$F˜`†²@7`U³X*d³Ðê£Â³³ä7`U³ìF˜`«²³7`g³´F˜`V°µ,7`U¶4F˜`ܲ¶L7`g³·\F˜`V°¸x7`U¹*d¹ê£Â³¹7`U¹$F˜`«²¹87`g³ºHF˜`V°»d7`U¼lF˜`ܲ¼„7`g³½”F˜`V°¾°7`U¿È*d¿@꣆¶¿T7`U¿\F˜`«²¿p7`}<À€F˜`¥Áœ7`U¤F˜`ܲ¼7`}<ÃÌF˜`¥Äè7`UÅ *dÅx ê£Â³ÅŒ 7`UÅ” F˜`«²Å¨ 7`g³Æ¸ F˜`V°ÇÔ 7`UÈÜ F˜`ܲÈô 7`g³É!F˜`V°Ê !7`UË8!*d˰!ê£Â³ËÄ!7`UËÌ!F˜`«²Ëà!7`g³Ìð!F˜`V°Í "7`UÎ"F˜`ܲÎ,"7`g³Ï<"F˜`V°ÐX"7`UÑp"*dÑè"ê£Â³Ñü"7`UÑ#F˜`«²Ñ#7`g³Ò(#F˜`V°ÓD#7`UÔL#F˜`ܲÔd#7`g³Õt#F˜`V°Ö#7`Uר#*d× $ê£Â³×4$7`U×<$F˜`«²×P$7`g³Ø`$F˜`V°Ù|$7`UÚ„$F˜`ܲÚœ$7`g³Û¬$F˜`V°ÜÈ$7`UÝà$*dÝX%ê£Â³Ýl%7`UÝt%F˜`«²Ýˆ%7`g³Þ˜%F˜`V°ß´%7`Uà¼%F˜`ܲàÔ%7`g³áä%F˜`V°â&7`Uã&*dã&ê£Â³ã¤&7`Uã¬&F˜`«²ãÀ&7`g³äÐ&F˜`V°åì&7`Uæô&F˜`ܲæ '7`g³ç'F˜`V°è8'7`UéP'*déÈ'ê£v·éÜ'7`Uéä'F˜`¯´éü'7`g³ë (F˜`V°ì((7`=·í8(F˜`·î\(7`Uïd(F˜`Ù´ï|(7`g³ñŒ(F˜`V°ò¨(7`=·ó¸(F˜`·ôÜ(áx#£õô(Èx#£÷ )3€£ù$)q€#£ú<) ÑŠüT)¤ ãŠýl)Œú”£þ„)ĵ¤ÿœ)•ú§£´)ú¹£Ì)€Ì£ä)¦úÌ£*û¤*€1¤0*ûq¤H*#ûˆ¤`*wY#x*yÏ *=dÆ  ¨*ZûÌ£ À*çY# è*ŠçY# +òõ‘b \+ηŒ+[ò¾b,7`“F8,eðöt,Á ëqöˆ,ÁfrUð,Á ;r! -Á¤rU0-Á rUƘ`Ü<@-7`UX-Ƙ`¸p-ctWœ-7`ÿ·´-F˜`¥Ø-7`×pø-Ƙ`Ü<Ƙ`J=.7`U4.Ƙ`—¸L.ctL Œ.7`„¸!¤.F˜`Ü<#È.7`ð¸%è.Ƙ`J=& /7`¹&,/Ƙ`J='Ƙ`E>'P/7`U+h/ct3»+À/Ƙ`ˆ»,Ø/7`&º-ø/Ƙ`E>. 07`hº.@0Ƙ`E>/h07`•º/ˆ0Ƙ`E>0°07`s»0È0F˜`J=2Ƙ`Ù?5ì07`U:1Ƙ`/¼:1ct§¾;Œ17`¼<¤1F˜`E>>Ì17`å¼Bì1Ƙ`Ù?C27`-½C42Ƙ`Ù?D\27`½D|2Ƙ`Ù?E¤27`µ½EÄ2Ƙ`Ù?Fì2‘Y#F3˜Æ F3¨Æ H43ºñ¿JL3ÖÏ Md3èý¿O|3Æ R”3Æ T¬3)Æ VÄ3<Æ XÜ3RØ Zø3aØ \4pÆ ^,4Ì£`@4ŽÀaT4¢ Àah4¾ Àa|4ÜÌ£a”4è9¥b¬4ûÀdÄ4.“fØ4/@“fì4R-Àg5c6Àg5v?Àg(5ˆHÀg<5šQÀgP5¬ZÀgd5¾cÀgx5ÑlÀgŒ5âuÀg 5õ~Àg´5‡ÀgÈ5ÀgÜ5/™Àgð5A¢Àg6U«Àg6i¾Àgð6z¾Àiô7¾Àkø8 €’m 9¿€’m 9Ü3¦m<9î3¦nX9 Âoˆ9âÀpÈ9ñÀs: þÀv<:*Áyˆ:4%Á|;?2Á€$;P%Áƒœ;]2Á‡À;`ÁŠ<•Rm‹= ÇÁŒ€>«ÌÁD?·×ÁŽ„@Î×ÁÄAáY#’ØAôY#’ìAY#’BY#’B-£’0B0-£”HB<j–CIj™@D\#£œ\Dljž,Ewj¡TFŠ#£¤pF¡j¦@G­j©hHÀ#£¬„HÐj®TIÜj±|Jï#£´˜J7`U¶°JÆ1d†¶ÈJÆ=d†·àJ7`½'¹KÆ1d†ºKÆ=d†»4K7`U½LKÆy˜Ã½dK7`U¿|KÆyžÃ¿”K7`UÁ¬KÆy¤ÃÁÄK7`UÃÜKÆyªÃÃôK7`UÅ LÆyw°Å$L7`UÇœrhÊ@Hœ„ÊB”œ²ÊDøœŸðÊFx®ËH¸¿;ËKžÐlËN žá¥ËQDŸò×ËTŒŸÌWôŸ4ÌZ€ (pÌ]0¡7`P`P¡FUad¡ÆRRa|¡Á[Rc”¡7`Ue¬¡Æ=døÉeÈ¡Æ1d gð¡7`Uh¢Æ=døÉh$¢Æ1d jL¢7`½'kl¢•Ìlœ¢Á“øÉl¼¢Á¿ nô¢7`Uo £Á“øÉo,£Á¿ qH£7`Ur`£Á“øÉr€£Á¿ tœ£¨5‹u¬£Ó5‹u¼£û5‹uÌ£"5‹uÜ£F5‹u죋a u ¤˜a v4¤¢£Ìw`¤²£Ìxx¤cŠŠy ¤¿zȤÈzð¤×£z$¥á©Ì{@¥þl´Ì€X¥„ôY#‚l¥ a‚„¥ªa„œ¥$$•‡´¥/:•ŠÌ¥:‰—ŽL¦[ËÌ“˜¦m T™°¦x#ȚƒõÌ¢€§› Í©ð§©ÐS± ¨´àS¶(¨¿;ͼ©×SÍÅ´©7`UÏÌ©*dÏ ªõ5‹Ï´ª†ÍÏȪ †ÍÑܪ†ÍÓðª†ÍÕ«'”Í׫4ˆ¤Ø4«ÈQÙH«éQÙ\«QÙp«!QÙ„«;QÙ˜«\ÊÙ$¬÷ÏÚx­ eÐÝ´®)]Ñâð¯:ZÓæX±PmÔ鸲fÕí ´|/Õðlµ[ÕôĶ¢ì×÷h¸¸CÙúà¹Î Úþh»æ*Úà¼ùZÚP¾ ‡Ú˜¾*d PÀ7`Q< `ÀF˜`¥ |À7`}<˜À˜`¥´À7`Q<ÄÀF˜`¥àÀ7`}<üÀ˜`¥Á7`QA(ÁF˜`•™DÁ7`Q<TÁF˜`¥pÁ7`}<€ÁF˜`¥œÁ7`¼A¬ÁF˜`Ü<ÐÁ7`BàÁF˜`J=Â7`UB!ÂF˜`E>"<Â7`µB&LÂF˜`Ù?'tÂ$"ÔÛ,ˆÂ2"Q,œÂK"Q,°Âa"Q,ÄÂv"Q,ØÂ“"Q,ì©"Q,ÃÃ"Q,ÃÝ"Q,(Ãü"Q,<Ã#Q,PÃ1#Q,dÃI#Q,xÃ_#Q,ŒÃz#Q, Ã™#Q,´Ã°#Q,ÈÃÇ#Q,ÜÃÙ#Q,ðÃè#Q,Ä$Q,Ä$Q,,Ä3$Q,@ÄF$Q,TÄ\$Q,hÄp$Q,|Ĉ$Q,Ä£$Q,¤ÄÆ$Q,¸Äï$Q,ÌÄ%Q,àÄ.%Q,ôÄB%Q,Å\%Q,Åw%Q,0Å%Q,DÅ¥%Q,XŹ%Q,lÅÑ%Q,€Åæ%Q,”Åý%Q,¨Å&Q,¼Å+&Q,ÐÅ;&Q,äÅP&Q,øÅe&Q, Æy&Q, ÆŒ&Q,4Æš&Q,HÆ®&Q,\ÆÃ&Q,pÆØ&Q,„Æî&Q,˜Æ'Q,¬Æ'Q,ÀÆ.'Q,ÔÆE'Q,èÆZ'Q,üÆl'Q,Ç…'Q,$Çœ'Q,8Dz'Q,LÇÅ'Q,`Çà'Q,tÇô'Q,ˆÇ(Q,œÇ"(Q,°Ç8(Q,ÄÇY(Q,ØÇ~(Q,ìÇ¡(Q,ÈÁ(Q,Èá(Q,(Èþ(Q,<È%)Q,PÈ=)Q,dÈY)Q,xÈq)Q,ŒÈ‘)Q, Èµ)Q,´ÈÕ)Q,ÈÈò)Q,ÜÈ *Q,ðÈ!*Q,É7*Q,ÉM*Q,,Éc*Q,@Éx*Q,TÉ”*Q,hɨ*Q,|ÉÁ*Q,ÉÖ*Q,¤Éö*Q,¸É+Q,ÌÉ+Q,àÉ9+Q,ôÉW+Q,Êt+Q,Ê+Q,0Ê«+Q,DÊÂ+Q,XÊÔ+Q,lÊé+Q,€Ê ,Q,”Ê4,Q,¨ÊL,Q,¼Êc,Q,Ðʃ,Q,äÊ,Q,øÊ¨,Q, ˾,Q, ËÑ,Q,4Ëì,Q,HË-Q,\Ë-Q,pË4-Q,„ËR-Q,˜Ëm-Q,¬Ë‹-Q,À˪-Q,Ô˾-Q,èËÒ-Q,üËê-Q,Ì.Q,$Ì.Q,8Ì8.Q,LÌX.Q,`Ìp.Q,ṫ.Q,ˆÌž.Q,œÌ¶.Q,°ÌÎ.Q,ÄÌæ.Q,ØÌ/Q,ìÌ/Q,Íþl€, ÍH/4-DÍS/áÛ/lÍ^/èÛ2”Í*d6Æedy"6Æ=d§"8Æ1d ":Æ’aüÛ;Æ1d "<Æ •/µ=<Ζep Ü=DΖepÜ>PΖep)Ü@\Ζep>ÜChΖepWÜGxΖep–ÜLˆÎ–epÝÜRœÎ–ep,ÝY¼Î“ª/B$aÈΓª/Êc$φ.böd,φ7`w!d<ÏÆ=deLÏæ=d§"f°Ïæed hÀÏæedy"i$ÐÆ1dµk4Ðæ1d "kHÐá0 "lTÐÆ’aõm|Ðá"0üÛm¤Ðá 90µn¨Ð†.bön°Ð†$byn¸Ð†7`nÐÐÆ=dpàÐæ=d§"qdÑæed stÑæedy"tüÑÆ1dµv Òæ1d "v8Òá0 "wDÒÆ’aõxlÒá"0üÛx¼Òá 90µyÀÒ†.böyÈÒ†$byyÐÒ†c¦yØÒ†7`M~yøÒÆ=d|Óæ=d§"}¬Óæed ¼Óæedy"€hÔÆ1dµ‚xÔæ1d "‚ÐÔá0 "ƒÜÔÆ’aõ„Õá"0üÛ„tÕá 90µ…xÕ†.bö…€Õ†$by…ˆÕ†c¦…Õ†qcx…˜Õ†7`§ƒ…ÀÕÆ=d‰ÐÕæ=d§"ŠÖæed Œ Öæedy"lׯ1dµ|׿1d "è×á0 "ôׯ’aõ‘Øá"0üÛ‘¨Øá 90µ’¬Ø†.bö’´Ø†$by’¼Ø†c¦’ÄØ†qcx’ÌØ†{c}’ÔØ†7`£’ÙÆ=d—Ùæ=d§"˜ôÙæed šÚæedy"›ôÚÆ1dµÛæ1d "„Ûá0 "žÛÆ’aõŸ¸Ûá"0üÛŸdÜá 90µ h܆.bö p܆$by x܆c¦ €Ü†qcx ˆÜ†{c} Ü†‡‚ù3 ˜Ü†7`†Ü ÐÜÆ=d¦àÜæ=d§"§äÝæed ©ôÝæedy"ªßÆ1dµ¬ßæ1d "¬¨ßá0 "­´ßÆ’aõ®Üßá"0üÛ®¤àá 90µ¯¨à†.bö¯°à†$by¯¸à†c¦¯Àà†qcx¯Èà†{c}¯Ðà†‡‚ù3¯Øà††0-9¯àà†7`Ëܯ áÆ=d¶0áæ=d§"·Tâæed ¹dâæedy"º˜ãÆ1dµ¼¨ãæ1d "¼Päá0 "½\䯒aõ¾„äá"0üÛ¾låá 90µ¿på†.bö¿xå†$by¿€å†c¦¿ˆå†qcx¿å†{c}¿˜å†‡‚ù3¿ å††0-9¿¨å†œ0%ß¿°å†7`Ý¿ æÆ=dÇ0ææ=d§"Ètçæed Ê„çæedy"ËØèÆ1dµÍèèæ1d "Í@ìá0 "ÎLìÆ’aõÏtìá"0üÛÏlíá 90µÐQ`¬`µ`º`¬`µ`º`Fa¬`¨a°aÚa¬`¨a°a¬`Q`9cDcJcRc[c]cgcÚa¬`]cicRc¬`mc]cmc]cc]cDdDdùdùdùd.eùdùdùdIepe°eªe¢efóeffffnfŽf¦fµfùd¦fÍfífòfíf(g(gDdDdDdegegDdegDdDd(g(gDdDd(g(g(gDdDdDdegegDdegDdDd(g(g(gDdDdDdPh(g(g(g(gDdDdDdegegDdegDdDd(g(g(g(gDdDdDdDdPh(g(g(g(g(gDdDdDdegegDdegDdDd(g(g(g(g(gDdDdDdDdDdPh(g(g(g(g(g(gDdDdDdegegDdegDdDd(g(g(g(g(g(gDdDdDdDdDdDdPh(g(g(g(g(g(g(gDdDdDdegegDdegDdDd(g(g(g(g(g(g(gDdDdDdDdDdDdDdl"l(l|ll|llegDdegDdDdm2mm2mmmVm[mmVm[mbmmVm[mbmimmVm[mbmimpm•m2mmmmmmùd«mDdDdDdegegDdegâmDdDdùdùdFaDdDdDdegegDdegFaDdDd¤n©nDdDdDdegegDdegDdDdo¤n©n¯o¯oØoäoùdUplp~pùdÑpípqq'q.q5qQ`5qQ`HqQqcqcqèrär ssss"s ss ss ssss"sDdDd£s¬slll t#tBtùdBtlplplplplpiczt}tlpiclplplplpBtBtBt¯oót~p~pâmïuâmïuïu[vïu~p~p~p{wgcDdâmBtùd(g ssss ssss(gDdDd£s¬slllùdùdùd~plp€tlplplplplp×xÜx×xÜxÂ`“tyyÂ`“t×xÜxÂ`“tÂ`“tùdùd}y}y}y}yót~p#t#t{wót~p~p~p{wgcâmÞyây0zDdÞyÞyrzÞyrzÞyÞyàzçzûz{0{M{rzf{rzŠ{rzŠ{rz°{M{À{rzç{|lç{rz|lM{rzM{rzM{rz0{Æ|ß|{ü|ü|o{{o{{†}Q`rz†}rz†}rzùdf{rzf{rzf{rz†}rzäorzQ`5qQ`âm¯~ùd³~¹~eâmØoÚaØoØoØo~p©~p©~p©~p©ØoÜ€tDd~p~p~p~p~pïu€tP€S€P€S€~p©~p©~p©~p©~p©„€~p©~p©~p©~p~p©~p©~p©€tgc~p©~p~p~p~p0~p~paga{g~p~pDd(g(gegDdegDdDd(g(gDdDdDd sss ssss"s]‚ sss sss ssss"s]‚ sssDdDdDd „´„Ç„rzÖ„á„ì„ø„ … …ùdùdífÞy‚…ífÞyDdDdPh ss ss(g ssegDdegDdDd ss(g ss ssDdDdDdDdPh(g ss(g(g(g(g(g(g(g(g(g(g(g(g(g(g(g ss(g(g(g(gegDdegDdDd(g(g(g(g ss(g(g(g(g(g(g(g(g(g(g(g(g(g(g(g ss(gDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDdDd¢DdÊííùd  òf3òfDd3òfEíW]fƒa˜¦Dd¦¦ùdDd¦ùdÀ˜Îژòf‘#tM{#tJ‘#tb‘o‘˜†}òfDd“‘œ‘“‘œ‘Dd“‘ùdœ‘“‘ùdœ‘º‘ˑё˜à‘ê‘õ‘þ‘˜’ü|oEíE†}ùdùd‘D’D’ùdW˜x’E”’£’¯’»’Þ’ç’ð’íf¢c“E‡“¨“¬“ēɓēɓE•m:”@”¬“ēɓēɓ‡“•m:”à”ç”3••m:”‡“à”ç”(g­•@”Ddò•ø•ý•– –(g(gz–ùd––––§–ç’§–W––¾–˜Ï–Ü–––’––é–lp5qÂ`Hq¦f––––»—×––×––»—––î—––˜"˜8˜×––×f˜•˜ ˜Ƙ ˜cqô˜ÿ˜$™ÿ˜ ˜:™F™P™¯~:™F™P™Vm[m:™F™P™Vm[mbm:™F™P™––…™P™:™F™P™¯~:™F™P™Vm[m:™F™P™Vm[mbm:™F™P™˜"˜8˜–––––– ˜HqHq––––)šlTšiš––’Hq:”âmlplplpØoº`lp»—lp»—»—»—»—tùd˜×âmqq¦fgž»—gž»—gž»—gž»—»—»—¹ž»—¹ž»—˜×gž»—gž»—#t,ŸCŸ]ŸeŸgŸŸ˜Ÿ˜ŸÓŸ˜Ÿ˜Ÿ˜ŸÓŸ˜Ÿ˜Ÿ˜Ÿd ~p~p~pùdùdùdùd½ ½  ¡âmâm¡(g(g(g•¡#¡)¡/¡[c(g(g(g•¡BtBtùdBtùdBtBtùdBt¦fI¡Eíp^¡d¡El¡El¡Ev¡:”EHqEHqEE¡—¡¥¡EùdÑpùd ¢lpípùdÑplp-¢íplpípùdÑplp-¢íplp~plp~plpíp:”ùdÑplp€t-¢ípíp/¢ùdÑp-¢ípípÀ¡8¢C¢ùdÑpípÀ¡8¢C¢ùdÑpN¢Q¢T¢W¢íplpâmlpâmI¡Z¢l¡Z¢l¡Z¢d¡Z¢v¡:”Z¢HqZ¢HqZ¢Z¢m¢t¢¥¡Z¢‡¢Š¢lp‡¢~plp‡¢~plp¢”¢~plp‡¢~plp:”‡¢º`‡¢/¢˜¢‡¢~p‡¢~plp¢”¢~pFaÜ¢£#£]c#£Š¢#£gŸ#£gŸ#£gŸFai£Fai£Hq5q ¢HqFaø•ý•––£q5q ¢Faø•ý•––£qgŸFai£Fai£Hq5q ¢HqFaÜ¢]cFa ¤¤¤¤&¤Fa¤gŸ?¤F¤M¤Èo?¤Èo?¤F¤M¤Èo•˜ ˜f˜~pHq~pHq?¤]c?¤Š¢ÈogcgŸgcÓ¤?¤ÈoF¤gcgŸF¤gŸ?¤ÈogŸ?¤]c?¤Š¢lpùdÑpFa¦fFa––»—Fa––Fa––˜"˜8˜Fa˜"˜8˜––Fa––»—Fa––ò•––»—ò•––ò•Â`ø•ý•–ÿ˜ärÿ˜äoÿ˜äo¦ ¢^¡ø•~pý•~p–~pTš1¦Q`B¦Q`B¦lpB¦lpQ`lp~p¦~p¦~pär¦1¦Q`¦Q`¦B¦Q`Q`¦Q`Q`¦Q`Q`~p¦Q`§~pQ`~p¦Q`§~pQ`~p¦Q`§~plpQ`ärø•»—~pär¦ärär•mlplpB¦lp –×ø•ý•–¹¨ –×ø•ý•–¹¨lp~pç¨lplp~pü¨¹¨©¹¨¹¨ü¨¹¨[vlpf©i© ¢i©ç¨©(g(g(g(g(g(gDdDdDdùdâmùdlpnªlp:”lplp:” –×ø•ý•–¹¨¦ –×ø•ý•–¹¨¦lpQ`~pQ`lpQ`Â`ç¨Q`¦ç¨lpQ`lp~pQ`ü¨Q`“tü¨Q`äoü¨Q`zªü¨¹¨Q`©Q`äo©¹¨Q`ª~pª~p¹¨Q`ü¨Q`äoü¨¹¨Q`Q`[v¦f©i©¦ t¦i© t¦i© t©¦ôª¦Fa:”•môª¦‡“ôªgcFa‡“ôª¦#«¦Q`#«ø•Q`D«M«U«Èo$™¦Q`ÈoD«M«$™gcärÈoD«$™äo¦Q`ÈoD«M«$™äoP™ÿ˜§«––…™P™ÿ˜ЫÔ«FaQ`¦~pº`¦~plp»—¦~p»—¦~p»—¦gŸFaDd|l¦¯o|l¯olpø•~p¦Q`#«ø•~plpQ`ª~pª~p¹¨Q`Q`ÈoD«M«$™gcärQ`ÈoD«M«$™äoQ`ÈoD«M«$™zªQ`ÈoD«M«$™gc¹¨¯oQ`~päo.¬`œ¦6¬`œ:”B¬Q`•˜Q`Q`gŸ•˜Q`X¬Dd`œ|¬¦X¬„¬`œ:”‘¬•˜ ˜Q`Ƙ ˜gŸcqQ`ô˜Q`ärô˜ÿ˜Q`ÿ˜gŸ$™ʬ$™ÿ˜Ò¬$™ÿ˜ ˜gŸ$™ÿ˜ ˜gŸ$™¦ÿ˜gŸP™ÿ˜DdF™ÿ˜„¬Ƙ¦F™ÿ˜„¬Ú¬¦:™F™P™ݬ:™F™P™gŸVm:™]cVm[m:™]cVm[mbm:™]cå¬âmå¬âmå¬âm––]cƘƘ…™P™ÿ˜ЫDd…™P™ò•ÿ˜ЫgŸÿ˜är¦…™ÿ˜Ы„¬ê¬…™ÿ˜Ы„¬gŸDdgŸ¦…™P™­…™P™gŸ ­ÿ˜ärÿ˜­ÿ˜­–– ˜ÿ˜­–– ˜gŸlp~plp~plpQ`¦­%­¹¨,­¹¨gŸ)š4­¦)šTš4­––)šTšgŸ<­TšgŸ•mDdD­F­•mgŸFaQ`N­¦Y­~plp»—a­~plp»—gŸi­~plp»—gŸq­~plp»—gŸ~p»—y­~p»—gŸ~p»—gŸ~p»—­~p»—gŸ~p»—gŸ~p‰­‘­~pgŸ~pgŸÿ˜™­ÿ˜™­ÿ˜Ÿ­»—ÿ˜§­»—ÿ˜gŸ¯­·­gŸÜ¢Ü¢Ü¢Ü¢Ü¢oÜ¢oÜ¢oùdܢܢùd•o•®®µ®•®®µ®Èoû®òf¯ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡¹¨Øo¯B° ¢ ¡ ¡ ¡ ¡ß°x’P±P±B° ¢B°—±ž±£±»±icp²„²Â`Â`“tä²ö²³³ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡^¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡^¡^¡ ¡Øo ¢ ¡ ¡ƒµ†µƒµ¡µ†}olp ¢"¶¯o"¶"¶~p"¶~p©"¶~p©€tJ¶W¶ífd¶J¶W¶ífd¶œ¶Q`ƒµɶDdlpâmâm ¢âmÂ`·˜···· ·1·5·ƒµQ`Q`ƒµØo~pƒµQ`†}Q`†}¯ ¢š·lpƒµQ`DdÇ·Ç·Ç·ùdDdÇ·ùd ¸Q`?¸Q`Dd?¸Q`?¸Q`ùdDd?¸Q`ùdDd›¸Q`›¸Q`âm¾¸ɸ˜W˜ƒµ ¢âm ¢“tlpQ`¹˜I¹L¹Z¹ƒµw¹w¹¯¹·¹º¹Á¹ȹ¯¹·¹º¹Á¹ȹƒµ·¹ƒµ·¹w¹EºEºgcw¹Zºcºb~Eºw¹~ºEºw¹b~w¹b~Eº¸º¼ºØop²àºçºýºEº?¸Q`Øo-»G»N»m»m»m»»’»m»^¡^¡’»âmûzm»m»m»m»m»m»m»m»m»m»m»m»¯o¿¼Õ¼icÙ¼EºÕ¼ÿ¼½Úap½v½»’p½Btƒ½¦x’Eºx’,¾ûz:¾»’¯»’²O¾ØoØo ¡†µ›¸¡µ޾¹¨Â`”¾Â`›¸Â`›¸Â`ƒµÂ`¹¨ȹ]c]cÚaš·Z¹gc·¹—¾Z¹ƒµ ¾º¹Á¹ȹ¦¾—¾¦¾ƒµEº®¾G»Â`Q`w¹²¾Øo-»’»lp~p’»m»lpm»Â`“t’»¶¾»¾À¾ûzØom»lpm»m»»’»’» ¢Â`“tQ`’»~p’»Â`“t’»Â`®¾’»Â`’»m»’»þ¾Â`¿’» ¿¿(¿’»gc’» ¿¿Eº ¿¿Eº ¿¿Eºm»lpm»m»»’»m»»’»¦f7¿<¿#¡B¿B¿K¿O¿S¿W¿[¿Eº)¡_¿B¿B¿~pEºe¿i¿EºB¿B¿m¿s¿Â`“t[c/¡Eºe¿i¿EºB¿B¿y¿B¿B¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿~pB¿B¿Â`“t[c/¡EºÂ`“tEºB¿~pEºB¿~pEº~pEº~pEº~pEº~pEº^¡~p¿m»m»¯o…¿Õ¼icŒ¿EºØo®¾l|ll|llÕ¼ÿ¼¯~ÿ¼“¿–¿âmDd~p© ss ssegDdegx’DdDd(g(gDd~p©]cp½v½p½v½]cp½]cm»m»m»m»Àm»lpicm»,¾À À,À/À,¾m»lpm»èÀêÀ ¢èÀÁèÀ ¢êÀèÀÁ.Á1Á˜.Á˜1ÁÞyƒµ.Áâmic.ÁicâmÞyíf¦egFagŸFaóteggŸegFagŸFaóteggŸ ¢yÂØo ¢FaDdgŸFaDdgŸ ¢¶Â¹Ââmy¦f]c]cÔ˜ŸÔ˜Ÿlpà ÃÃÔÂ:ØŸÔÂÓŸ˜Ÿ˜Ÿ˜Ÿ:ØŸÓŸ˜ŸÓŸ˜Ÿ˜Ÿ˜Ÿ˜Ÿ˜ŸyÃÚayÃ[clpyælp¦¦lpà æyÃ[c}Ã[c~p¦f^¡^¡}Ã^¡ Ã|lG¾êÃðà ÃÄ#Ä ÃêÃO¾ ÃêÃO¾ ÃRÄêÃO¾ ÃÄêÃ|lØo ÃÄêÃ|lØo-»°{ƒµÞăµlp~pƒµ°{Q`ƒµgcLÅQ`ƒµgcLÅ[c|lÃgcÃO¾gcÃO¾gcÃO¾gcÃO¾gcÃO¾gc Ã|lêÃÚa"ÆÃLÅgcÄQ`ƒµÃLÅTÆgcÄQ`ƒµÃgcQ`ƒµLÅØoØo Ã|lgcÄêÃTÆØoQ` gŸ ÃÃ|lgcêÃØoQ`gŸ Ã|lgcêÃTÆÔÆQ`gŸãÆ Ã}ÃÃgcQ`ÃO¾ ÃãÆ}ÃÇQ`gcÇÃO¾Q`ÇÃO¾Q`ƒµgcÇÃùdùdùdRÄ1Ç@ǰ{ȹÁQ`gcLÅÐÇÕÇÚÇQ`gcLÅßÇÐÇÕÇQ`gcLÅäÇÕÇLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹØoLÅQ`gcȹØoLÅQ`gcȹØoLÅQ`gcȹØoLÅQ`gcȹØoLÅgcQ`ȹÔÆLÅgcQ`ȹØoLÅgcQ`ȹØoLÅgcQ`ȹÔÆÃLÅgcÄQ`ȹØoÃQ`LÅTÆgcÄȹØoÇÚaÇÃO¾Q`ƒµgcÞylphÈnÈgc}ȄȕȨȼÈÅÈÌÈÖÈG¾¼ÈåÈÖÈG¾ÅȼÈåÈÅÈÉgc0ÉÉØo+ÉåÈ0É4ÉG¾ÅÈ+ÉåÈÅÈLÉQÉØodÉåÈLÉ€tG¾ÅÈdÉåÈLÉÅÈÉrz~pÂÉÂÉãÉp²p²Ê[cÚagcÚagcicÚa‡•Øo‡•XÊrz+ÉÍf‡•aÊjÊ~pXÊrz+ÉÍf‡•”ÊaÊjÊ |l ~pXÊrz+ÉÍf‡•aÊÉXÊrz+ÉÍf‡•“tÅÊ{wÙÊÜÊßÊâÊ~pXÊrz+ÉÍf‡•aÊrzXÊrz+ÉÍf‡•=ËaÊjÊ LË ~pXÊrz+É~p+ÉDd+ɯo+Éd ¯o©ËÅȼËùdùd©Ërzùd sss sss]c]cPhegDdegDdDd‡•ÚÌ~pâ̦XÊrz+ÉÍf‡•aÊjÊ~p7¿<¿ª~pXÊrz+ÉÍf‡•aÊjÊ~p{wØoßÊaÊ{wÙÊÜÊßÊâÊ~p©+ɇ•aÊçÌ{wÙÊÜÊßÊ âÊ~pÙÊßÊ~pì̦~p©XÊrz+ÉÍf‡•Ddï̹¨XÊrz+ÉÍf‡•aÊ]crzp²[c+ÉDd+ÉDd+ÉDdÞyÞÄ ÍÞyPh(g(g(g ss(g(g ss(g(g(gDdDdDdDdDdPh(g ss ss(g ss(g(g ss(g ss ss(gDdDdDdDdDdDdrzDd$ÐgŸrzDdrz~pâÌâmâÌâm_¿^¡¯o[v…Ðùd0000ÅÈ¾ÐÆÐ0þÐÅÈlp¯o[v¾ÐÆÐ¾ÐÆÐ¾ÐÆÐ¾ÐÆÐ¾ÐÆÐ¾ÐÆÐ¾ÐÆÐuÑ|Ñ^¡uÑ¿˜Ñ˜Ñ˜Ñ¾Ð˜Ñp˜Ñ˜ÑáÑùdáÑùdÅÈÅÈÒÒ ÒØo€tÒÒ Ò€t9ÒáÑKÒ:”Èo¯o[v¯o[v¯o[v¯o[v¯o[v¯o[v¯o[v|Ñ|Ñ|Ñ~p|ÑRÒ©^¡#¡¿^¡¡Ò©Ò¼Ò/Ó¦ùdÚa¦0ùdùdÚa¦Úa0~p©~p©~pØo~pØoØoÂ`“tÂ`“t~pÖgcØo~p~pØo/¡Øo/¡ØogcØo[c¹¨èÀ[v¹¨èÀgcØo[c¹¨èÀ[v¹¨èÀ¹¨¹¨¹¨›ÖžÖgc¹¨èÀ³Ö¶Ö›ÖžÖgc¹¨³ÖèÀ¶Ö›ÖžÖgc¹¨èÀ¹¨èÀ¹¨èÀ¹¨èÀ¹¨èÀÂ`“tÂ`“tÂ`gc[cïu¹¨¹¨èÀ[v[cïu¹¨èÀ¹¨èÀ¹¨èÀo×ïut×y×—×gc—רïuØÀØo2Ø6Ø2ØØoEØJØgc6Ø2ØØo2ØEØ2ØEØyØ[vgc€Ø/¡2ØEØÀâmÅØ¹¨èÀ~p©¹¨èÀ~plpÂ`Øo~plpÂ`Øo~pÂ`Øo ¿¿gŸ~pÂ`Øo“tÂ`gŸ“tÂ`“tÂ`“tÂ`Â`“tÂ`“tic~pØo~pØoic~pØo~pØoØoêÙicïugcØoØoØoØoØo%Ú*Úïu0ÚCÚ¹~Øo^¡ØoaÚO¾eÚicgcaÚØoØoÂ`“tØooשÚïut×y׳ڹÚ~p©3Û…¿~pØoêÛñÛØo-¢ÀärM¤Øo-¢ Ü ÜFÜgct×ïuÀâm~pØo~pØo~pqqíp5qQ` ¢D­~pqqípíp5qQ` ¢D­~pqqípÞyÞÄ ÍÞyæyrzÞyZºrz¿¿âÌÞyÞyrzÞyâyrzÞyrzÞyrzrzÞyÞyrzrzÞyÞyrzÞyâyrzÞyâyrzÞyrzÞyrzÞyâyrzÞyâyrzÞyâyrzf{rzÞy-»Þygc]âÞyrzÞyrz]âDdÞyÞyÞyÞy]âoÞyoÞyÞyÞyÞyrzÞyrzÞyrzÞyrzÞyrzÞyrzÞyÞyrzŠ{rzÉãM{rzÉã{rz§DdàãããlpÞy›¸ây]câyâyôãây稩âyâÌâÌrz]âDdDdgÞyrzDdäDdrzäQ`¹¨rz äQ`]âDd]âäDdä äQ`稩âÌ]âDdrz äQ`ÞyDd^¡f{gc¿°{Á|lDd²ä¶ä²äùd²äùdùd²ä×xÜxy×xÜxy•m²äl¡²äl¡²äl¡²äl¡²äKÒ:”²äKÒ²ä:”I¡²ä²ä#t•²ä²ä²ä#t#t#t•²ä²ä²ä×xÜx×xÜx×xÜx×xÜx×xÜx²ä²ä¶ä²ä×xÜx×xÜxš·¯oïu[vøåïuûå£sïuš·£søåïuûå£sæš·š·£sïuš·£sïuš·lpš·lpeŸ~plp~peŸlpeŸlpeŸ£sÂ`“t£sÂ`“t£slpÚaic£seŸicÚaic£søåûå£s“teŸic£slpïu–æ›æ£slpÚa­æ³æÚa£sïuÚaø•£sïuÚa£sïuÚaø•£sïuÚaÚaØoÚaÚaØoÚaÚaÚahÈÚagcgcÚa£s¶Â¹Â£síçðçeŸicÚaÚa{wgcÚa£sic ¢£s[c£s¯o£s“t~p£s“t~p£sÂ`~pø•9è^¡ärø•9è¿ärùdùdhÈèÚagc{w€Ø~p£sicïulp~p€tlp£sicïuíçðçíçðçZÔBtùdZÔBtZÔBtZÔBtZÔBtZÔ•mZÔd¡ZÔd¡ZÔl¡ZÔl¡ZÔl¡ZÔl¡ZÔI¡ZÔKÒ:”ZÔKÒZÔ:”ZÔl¡ZÔl¡ZÔ#t#t#tZÔZÔ#t#t#tZÔZÔZÔl¡ZÔl¡ZÔBtZÔ›èlp]clp]c^¡¯oïuâm[vøåïuâmûåiceŸ£sïuâmeŸ£sïueŸ£sïueŸ£slpïuâm–æ›æ£slpÚa­æ³æ£slpïuâmic£slpÚaiceŸ£sïueŸ£sïueŸlpeŸlpeŸlpeŸlpeŸlpeŸlpeŸlpeŸ~plp~peŸ£szt}tlpeŸ~p£szt}tlpeŸ~peŸiceŸeŸ£s¯o£sic ¢£s{w£s[cÚa{wgchÈÚagcgcÚa£sic]c{w€Ø~p©ùdùdhÈèÚagc›èÚagŸ›èÚagŸeŸôèùè›è••••)é1é9éAé)é1é9éAé²)é1é9éAéTé•®®µ®`égé•®®µ®`égéùd••••®®µ®`é•®®µ®`éùd)é1é9é)é1é9é²)é1é9éTé•m•I¡••m•I¡••ÈoTéÈoÈoùd•Eˆéí”éÈo±égcic±égc€ØÁé±éÒéI¡•áéèé••ôª•ôª•m•I¡••máéèéI¡áéèéI¡áéèé•m••máéèéI¡•lp•O¾gcl¡•áéèélp1êgcl¡áéèélp•O¾gcl¡•áéèélp1êgcl¡áéèélp•gcd¡•lp•gcd¡•d¡•l¡•l¡•lp•gcl¡•lp•gcl¡•áéèéáéèé—ê•••KÒ:”•KÒ•:”KÒáéèé:”KÒ:”áéèélp•aÐêiclp•aÐêáêlpáê•aÐêKÒ:”•KÒ•:”ë•ë•£s•:ë••£s•:ë•••E•Elp•O¾Øol¡•lp•O¾Øol¡•{ë••:ë••:ë••:ë••:ë••ÀëÈo•o•oùdí”éÈoùdôªôªÐëI¡ôªI¡ôª•môª•ôª•ôªôªôªôªôªôªôëúëôªolpp²icd¡ôª•môª ìTéØo~picÈo²lpôëúë•môëúëlpØoôëúë•môëúëlpôëúëKìicI¡ôëúëKìØolpôëúëicI¡ôëúëI¡ôëúëlpÚap²KÒ:”ôªëôªlpÚap²icKÒ:”ôªlpicôëúëKÒ:”ôëúëlp{waÐêicKÒôª:”ëôªlp{waÐêáêKÒôª:”lpôëúëiclpôëúëicÏìÕìÛìN¢ gŸKÒôëúë:”lpôëúël¡ôëúël¡ôªl¡ôªlpôëúël¡ôëúël¡ôªl¡ôªd¡ôªd¡ôªl¡ôªl¡ôªôªôªôëúëôëúëKì£sôª:ëôªôªEôªEôªlpØo^¡l¡ôªlpØo^¡l¡ôªôª:ëôªôª:ëôªôª:ëôªôª:ëôªI¡ôª{ëôªíí•maÚ•maÚI¡aÚI¡aÚI¡aÚÈoTéÈoaÚlpaÚgcl¡aÚlpaÚgcl¡aÚaÚI¡aÚl¡aÚlpär[clpärgc[clpär[clplp~pz–z–:”TéÈoTé•mEoE•mEl¡El¡E•m¡—¡lp tlp®í—¡l¡EI¡EI¡EI¡¡—¡d¡E¡—¡¡—¡²íEd¡Ed¡El¡El¡EÈoEE¿íEKÒ:”EëElp¡—¡I¡Elp··¦£s¡—¡£s¡—¡EEEEEEEEùdÈoEEKÒ:”E¹¨ tgcl¡E¹¨ tgcl¡E î{wgc€Ø îEECîJîgcECîJîgc¦CîJî¦EE:ëEE:ëE:ëEE:ëEE:ëEE:ëEE:ëEE:ëEl¡EÈoEl¡El¡¡—¡l¡¡—¡EElp¦lp~p¦lp¦Èolp¦lp t¦lp®í—¡¦lp ¢lp ¢lp ¢lp··lp ¢~p©~p]cE¦ÈoE ¢§´î¹îªçnÈlp¦—¡¦¡—¡¦E¦~p¦ØoEgc t¹îªçnÈE t¼î€Ø¹îªçnÈlp€tEÁî t¹îªçnÈ îE{w[vgc ¢¹îªçnÈECîJîgcCîJî¦E¦ÆîËîâmÛîÛîÆîáî¦EËîâmBt´î¹îªçnÈÆîEËîâmBt´î¹îªçnÈÆîE¦E¦ÆîËîâmÛîÆîE¦¹¨E ¢åî¹îªçnÈÈoE ¢§´î¹îªçnȹ¨E ¢åîìî¹îªçnÈlpþîï ïqÈçªç~p¦~p¦ç’E¿íèšï¦è¦WEE’ÛïæïôïùdDd~p©ðDd~p©lpDdþîï ï¦Èçªç~p~p’Hð¿ílpç’¦ç’Íð¦¿í¦ª“tèšïª“tèšï¦Íð¦[v^¡Q`æD­uÖæqqqípªªª ¢(g(g(g(gDdDdDdªø•ªø•ø•ª¦~p¦ª ¢ª¦QògŸ ¢o ¢lp ¢lp ¢lp··èšï¦lp ¢lp ¢è¦lp ¢lp~plpoªç¦žòlp[v¦[vèšï¦è¦ ïšï:”¦þîï ïlp ¢ ¢Phlp ¢lp ¢gclp··lp ¢èšïlp ¢èlp:”lpo¦lpÍóoªçï ïèšï:”{wâmlp ¢Øó§nÈ£s£s£s~p©£s~p©GôeôlôDd~p©GôDd~p©Dd~p©ßuôDd~p©öÌöÌöÌöÌKÒ:”öÌKÒöÌ:”l¡öÌl¡öÌ•möÌI¡ö̧–öÌöÌöÌöÌöÌ•••••®®µ®•®®µ®ùd)é1é£ô©ô)é1é£ô©ô)é1é²£ô©ô)é1éTé)é1éùd)é1éTé•m••m•I¡•I¡•••EÙôæôíóôõ õõEÙôæôíóôõ)é1é•®®µ® õõlp{wgc€Ølp{wgc€Ø{wgc€Ø{wßÊâÊgc€ØÈoÈolp{ë{w:ë•••¡:ë••lp~p²õlp~pI¡~p²õlp~pgclp~p²õlpßõãõI¡ßõãõl¡ßõl¡ßõp²icp²²õp²lpôª²õlpôª²õlp¯ol¡¯olpØo~p•m~p²õN¢¯o¯o ¢¯o²õgcØolpÈolp²ö¸ö¹¨¯o²ö¹¨¯o¸ö¹¨¯ol¡¯o÷÷~p~p÷÷B÷~p~p²õßõãõßõãõ²õßõãõ{÷ßõãõ{÷¯o{w÷Â`ßõãõ÷Â`“tic÷~p©÷~p©€t¶÷º÷gŸ÷~p©€tÂ`÷Ü÷Ú¬÷Â`ê÷ùd¾–ùdùdäo¦fÑpùd~p©~p©~p©~p©~p©~p©······¦f¦fäoù¦fù¦f¦fü|ü|ùdùdUùùdUù¯~mVm[mmVm[mbmmmVmmVm[mmVm[mbmÈùÎùÎùÈùíçðç¯~ýùØo~p©~p©~p©~p©~p©ùdùdúùdú~p©~p©~p©ùdôëúëUùUùƒúùdùdùdùdùdùdùdùdÃúùdùdùdùdùdùdùdùdùd1û•mç’•mDdGôDd~paga{gùdùdùdùd©~pùdùdùdùdùdùdùdùdùdùdùdùdùdùdùd~p©~pØolpª~plpª~p~p©~p©~p©~p©~p{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸuÖ¦a{kü{ØoeŸ¦a{kü{ØoeŸ¦a{kü\ØoeŸuÖ¦\uÖakü`{ØoeŸuÖ¦`uÖa{küØoeŸ­ý¦akü~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~pØo~p\Øo~pØo~p\ÅØØo\ÅØùdöþEagíagEE+ÿ2ÿ:ÿAÿí+ÿ2ÿ:ÿAÿEE+ÿ2ÿ:ÿAÿiÿpÿí+ÿ2ÿ:ÿAÿiÿpÿEE+ÿ2ÿ:ÿAÿiÿpÿ˜ÿ Ÿÿí+ÿ2ÿ:ÿAÿiÿpÿ˜ÿ Ÿÿ EEag·¹·¹~p~p~p~p©~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p©~pâmØoeŸØoeŸ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ~p©{ØoeŸTWØo{eŸuÖ{Øo`TW{ØoeŸTWØo{eŸ{Øo`TW{ØoeŸTWØo{eŸ\ØoeŸuÖW\uÖØoeŸ{ØoeŸuÖTW`uÖØo{eŸØoeŸ­ýWØoeŸ­ý›¸~p›¸~p©~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~p©7¿<¿lq~p©7¿<¿lq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~plq~p©7¿<¿lq~p©7¿<¿lq~p©~p©ùd~p©ùdùdùdùdùdùdùdùdùdùdùdùd~p©~p©~p²õp²icp²¯oØoÚaVm[mš·mlpš·ÀlpVm[mbmš·mlpš·ÀâmlplpVm[mbmimmš·lplplplpš·Àâm-¢Vm[mbmimpmš·mlpš·Àâm-¢~plplplplp····eg····eg················DdDdGôDd£sDdGô§gŸ§gŸ§gŸùd´î[cÚa¹¨¯oÚa¹¨¯oÚa¹¨¯oÚa¹¨¯oÚa¯oØoicÚa¹¨¯oÚa¯oØoicÚa¹¨¯oÚaÚaÚaÚaÊgŸÊgŸ~p©~p©ÊE¦ÊEgŸ~p©ÊE¦ÊEgŸ~p©ÊE¦ÊEgŸ~p©ÊE¦ÊEgŸ~p©Dd~p©GôDd~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~pØo~pØo~pØo§~pØo7¿<¿lq7¿<¿lqeŸ~p©7¿<¿lq~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©7¿<¿lqeŸ~p©7¿<¿lq~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©7¿<¿lqeŸ~p©7¿<¿lq~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©7¿<¿lqeŸ~p©7¿<¿lq~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p©~p© ¡DdegT ÔÆY gŸegT ÔÆ~pgŸegÔÆT eg~p©’ gceg~p©£ © ° · ¾  gc €Øeg~p©Ñ £ © ° ·  ¾  gc~p©ó ïueg~p©ó  ïu gc K¾eg~p©ó  ïueg~p©eg~p©~p©eg~p©~p©~p©~p©~p©~p©~p©~p©ª ~p©ª ~p©ª ~p©ª ~p©~p©~p©ª < T ÔÆY gŸª < ÔÆT ª < ~p©’ gcª < ~p©£ © ° ·  ¾  gc €Øª < ~p©Ñ £ © °  ·  ¾  gc~p©ó ïuª < ~p©ó  ïu  gc K¾ª < ~p©ó  ïuª < ~p©ª < ~p©~p©~p©eg~p©< ~p~p~p~p< ~p< ~p ¡Gô ¡eg ¡£sü|£sü|£sü|£sü|£sÞÞ£sÞÞ£sÞÞ£sÞÞ£sÞÞ£sÞÞ£sÞÞ£sÞÞ:~p©~p©~p©Dd~p©Dd€~p©~p~p©~p~p©~pEEEEç’~píñøýöÖEoEoíoùdE®®µ®í®®µ®ùdHLQ1êViLQ1êVHE®®µ®`éí®®µ®`éùdHLQ‘1êV–iLQ‘1êV–HE®®µ®`égéí®®µ®`égéùdHLQ‘Í1êV– ÒiLQ‘Í1êV– Ò H········DdDdrFaDdgŸegFaDd!gŸFaDdeggŸFaDdgŸegFa!gŸegFagŸFaóteggŸFaDdgŸFaDdgŸegFa!gŸegFagŸFaóteggŸFaDdgŸØo¯ogclpš·lp ¡lpš·lp ¡lpš·lpš·lpÂ`lpÂ`“tlpÂ`“t[clpÂ`“t[c/¡lpÂ`“t[c/¡ ¢ífífVmífVm[mífVm[mbmŠ/£sŠ/£s£sJc£s s ss sss ssss ssss"s ssss"s]‚ ssss"s]‚ž/ ssss"s]‚ž/ÍðN¢Q¢r sDdŠ/£sDdŠ/£s£s£sJc ssDdŠ/£sDdŠ/£s£s£sJc sssDdŠ/£sDdŠ/£s£s£sJc ssssDdŠ/£sDdŠ/£s£s£sJc ssss"sDdŠ/£sDdŠ/£s£s£sJc ssss"s]‚DdŠ/£sDdŠ/£s£s£sJc ssss"s]‚ž/DdŠ/£sDdŠ/£s£s£sJc ssss"s]‚ž/ÍðDdŠ/£sDdŠ/£s£s£sJc =<= =8C<C C8K<K K8U<U U8a<a a8o<o o8<„<„ „8…<… …8‡<‡ ‡8‡‡:‘B‘F“%“J““:””:”-› ›R›V››Z¤¤:¤b¤ ® ¯<à Ä<Î<ÿ--- - A--:bRZVv~ ~$~&Š'v(v)-*~Xvs-‡&ˆ<Š*Í<ÚyF!-"Ê$-%ÎP%P-PJ`%`-`& ‚¡†¢¢:££:ªª:«-«%«J«¤¯%¯-¯Ž³-´Ê¿žÂ-Â%ÂJÞÇ%Ç-ÇJÈ-È%ÈJË-Ë%ËJÏ%Ï-ÏJÐ%Ð-ÐJÓ%Ó-ÓJÔ%Ô-ÔJÕ-Õ%ÕJÖ-Ö%ÖJ×%×-×JÛªÞ‚ß‚à‚á‚ù-ù%ùJÎÚæ  ò  þ ".:F!!R##:%%:''^³-³%³JȂɂÊÚËÞÌâÍæÎêÏîÐòÑöÒúÓþÔÕÖ ×ØÚªÛª3y4‰5‰6‰7‰8‰R<R8R R@S<S8S S@T<T8T T@U<U8U U@V<V8V V@W<W8W W@X<X8X X@Y<Y8Y Y@7`íl 7`tt ˜`¥| ˜`¥t˜`¥„ 7`tŒ 7`t” ˜`¥17`U97`Uœ ea¡A7`UIvaµIa¹ ˜`¥A‹a¾¤ 7`t¬ ˜`¥A‹aé ’aõ´ 7`I´auI¿auIÈazQáa¼ éaÎÄ 7`t¼ îaöĘ`¥QøaÂQbÂÌ 7`tܘ`¥IÈa1Ib6Ô 7`tÜ ˜`¥)bõ´ $by´ .böä 7`ì 7`£I^b4q­b€q¹b€yÚb+,˜`¥ü 7`Uì .böì $byä $byü çbV 7`t ˜`¥ü ób¥ü üb 7`Uì c¦ çbV ób¥ô .böô $by 7`t$ ˜`¥, ˜`¥ô 7` üba7`t4 7`ti7`Ui ctictYcU 7`Uœ Mcî7`U7`U$7`U,7`U47`U<7`Uì qcxì {c}ä .böD 7`tÄ…c´L 7`tT …c´\ 7`tÜ…cvi¦c‰´c‰Ác–iÍcŸ‰äc¦™7`ì 7`Ued ©7`U!7`U±7`YÁ¼f!d 7`L!l 7`w!l óböd óbyDed "D1d "D=dò"D7`Ul (g¾!É7`2#d (gÍ!„ g¯!Œ gÂ!” 7`$œ 7`L!¤ 7`w!¤ óböœ óby” ób¦Led,%L1d "L=dg&L7`U¤ (g¾!œ (gÍ!” (g­$´ g†$¼ g“$Ä g $TPh>Ì 7`Ð'T]gµÔ 7`$Ü 7`L!ä 7`w!ä óböÜ óbyÔ ób¦Ì óbxTed)T1d "T=d„*T7`½'ä (g¾!Ü (gÍ!Ô (g­$Ì (g‘(ô gU(ü gd( gs( g‚(\Ph> 7`k,\]gµ 7`Ð'$ 7`$, 7`L!4 7`w!\ed/-4 óbö, óby$ ób¦ óbx ób}\1d "\=dÏ.\7`½'4 (g¾!, (gÍ!$ (g­$ (g‘( (gº-D ge-L gv-T g‡-\ g˜-d g©-dPh>l 7`!1d]gµt 7`k,| 7`Ð'„ 7`$Œ 7`L!” 7`w!ded&2d1d "d=db2d7`½'” (g¾!Œ (gÍ!„ (g­$| (g‘(t (gº-l (gõ3œ gB4¤ g|4¬ g¶4´ gð4¼ g*5Ä gd5lPh>Ì 7`²5l]gµÔ 7`!1Ü 7`k,ä 7`Ð'ì 7`$ô 7`L!ü 7`w!ledö6l1d "l=d:7l7`½'ü (g¾!ô (gÍ!ì (g­$ä (g‘(Ü (gº-Ô (gõ3Ì (g)9 gv9 g¶9 gö9 g6:$ gv:, g¶:4 gö:)7`U).ld;)7`d;I1dµI=d<áÈl%<éþl+<< 7`Q<D 7`}<D ˜`¥L 7`”<T 7`Q<\ 7`}<\ ˜`¥d ˜`Ü<l ˜`¥t ˜`¥| ˜`J=„ ˜`Ü<Œ ˜`¥” ˜`¥t …c´œ ˜`E>¤ ˜`J=¬ ˜`¥´ ˜`Ü<Œ …c´¼ ˜`¥t …cÐ=Ä ˜`Ù?Ì ˜`E>Ô ˜`¥Ü ˜`J=¬ …c´ä ˜`Ü<Œ …cÐ=ì ˜`¥t …c1?ô 7`QAü 7`Q<7`}< 7`¼A7`B7`UB$7`µB,´m¾!,edC,1d ",Ëmw!,=dNC7`t47`w!4ùd¾!4îaö4edD41d "á>n%< ’a|D4=d¶D<7`U|–nED7`1EDÅnöDÎnQE|edy"|ed‘E|1d "|=dCFI^bNF!7`tL7`“F1ro§FtrožF)7`t|7`UD¤n¾!D©nET¯oET±o>TÈo5G\ÎnQEd5p¾!d@ptDd7`¤G1›pÚG¤˜`¥)7`t1¡pÚGdîaö9=dH´ƒqsH´ŽqM´ªq|H´½qUl7`©H´—qžF´Ìqö´·qU´ÞqUA7`UIÉrUIÒrUIØr!”ØrötèréHtär‘HD˜`¥|7`%I„7`œ7`U„ s¾!„sÍ!| s¾!|sÍ!|s‰I|s‰I|"s>Œg—J”g¹JœxsøJœ…s‰IœŽsKœ7`"Kœs KI7`UQ7`UY7`U¤ctL¬7`"K´$by´.bö¼7`´rožFLØröÄÒtöÄîayÌ7`Ì$byÌ.böaßt NœãtµA7`tÔ7`fNÜ7`†Nì7`fNi7`¤übw!¬üb¤ðrU¤üwV¬çbV¤xO¤­tV¬­tV¬ x£N¤£tµ¤xU¬ób¥¬'xsN¬0xšN¬;xôâm Kü7`U7`w! 7`øO¼7`U  s¾! s2P s2P s>(g¾!g Qg'Q$²xøJ$¿x2P$Žs0G$7`^Q$sMQ,7`Q47`<$by<.böD7`yRL7`^QT7`U\7`U$áxÜR$ÈxÜR$ãtµ$übzQ$7`žSÄübw!ÄðrUÄüwVÄxOÄ­tVÄ£tµÄxUdâmMQlîaöléaÎqz|Tqz‡Tqìyõ 1dµy7`ttîaö¹‡zÙT¹¿záT„7`XUä˜`¥ Ç{qTÁÏ{~UÔ˜`¥¹m|õIbúUŒ$byŒ.bö¹z|U¹Œ|qT¹¥|Vܘ`¥¤7`¬-~eW¡@~rW´7`W¼-~eW¹k~áWÙu~êWɃ~qT¼b~ÉWÄ7`XÌ-~YXÔîaöÔéaÎܘ`FHä7`ãX©7`Uì$byì.böô7`±7`tÌùd+Ì7`tüîaö ´…HIÄ…`qÓ…µ¹å…"`¹Ó…µ¹ð…(`ém|õ7`t ˜`¥ÎnQEÅnö$îaö,.bö,$by4ea¡4Mcî<7`tD˜`¥L7`td˜`¥T7`t\˜`¥d7`tì˜`¥l7`tt˜`¥|7`t„˜`¥Œîaö”.bö”$by¤ea¡¬îaöÄ7`žSÄh“|t =dÌ7`w!ÌËmw!Ô7`”<Ù#•óuÑ7`tÜ€pUÜîaöäea¡üðrUÔ˜`w!$by.bö •0G ¤n> ‡•> ©n> ”•½'Á¨•w–u–±w%–½w,–Éw3–Õw7`bx(gIx$lpây$˜`¥,7`)zÌ´m¾!47`¤z<o–uxDîaöL7`4{T7`Ë{\o–uxd7`ø{l7`9|t7`Z||7`›|„7`þ|Œ7`T}”7`´}œ7`U¤7`U¬7`M~´7`’~¼7`UÄ7`:Ì7`|ñØréÔ7`÷ÜHq~€Ü:”tDÜŒšMÜ£šMܬš–tä7`UÜcq‚€ä°šw!‘˜`XHäɚ̀ìîaöóböôób‘Güóbä·qUäcq¾Cät›=Ü·qUÍ›!Ü›=ð›U œU CœL 7`U NœT WœT `œ] jœh7`$o–ux œm,7`½' œ´,£tµ Œ•ö4˜`¥,übw! ±œì,óbXF,Ñœ½'4éaÎ äœC‚<7`‚D7`‚L7`;ƒT7`;ƒ\7`§ƒù7`P [Ûƒdtâyt²+„tºu 7`UtÑu‚tÙ>tèM|7`Utð@„ šœµ|V~îX„öpw!„ qw! H!Œ7`¡„DéaÎ #w!”7`Uœ7`Ï„¤7`†Q¬˜`¥”ɚ̀tWž…´îaö7`t¼7`Ï„Ä7`a…t’ž{…Ì7`µ… @}ƒ 5^ƒ 0ƒ (æ‚t7`Y„tÕ—Ut§žÖ…L7`žSÔ,t_‡Ü7`|‡ärožFìØröô$byô.böÔ7`w!Ü;x 7`Ö‡,HŸ§ˆ<7`U æŸu‰ úŸu‰D7`tL˜`¥T7`t\˜`¥dîaöÔ7`Ulîaöt¡n‹|7`UŒ7`Ul7`w!”üwV„rožFœØrö”£tµÜ7`U¤Òtö¤îay¬7`¬$by¬.böÄ7`´/¡†Œ´[c•Œ¤7`¼üwVÄrožFÌØrö¼£tµÔ7`UÜ7`Uäób¥ä'xsNt7`ƒ‹ä0xšNäçbVä7`Uì7`ÄôÂpw!ü7`!Ž7`nŽ 7`nŽ7`7`$7`,7`×47`<7`9D7`ôÀ¡MôÈ¡w!ôd‹GôÍ¡Uì×pUìÉp‹GìÂpw!LlpªLípµô7`Uü˜`¥T>g}!TgR!\óbydÉp‹GlóbödÂpw!d×pUtlpL‘t-¢W‘|7`È„ãp:H„lpt‘„ípµ˜`¥Œ>g}!ŒgR!”óbyœóbö¤lpA’¤-¢W‘¬7`Ž‘7`U´lpe’ ˜`¥ 7`U¼lpe’Älp’ÄípµÄ:”‘’Ì´m¾!l…c´ÌËmw!Ôlpû’Ô€t¾!Ô-¢W‘,7`w!Ü7`¤’äíp!“ä/¢1“ì´m¾!ô7`üÂpw!ìËmw!üÉp‹Gü×pU-¢ž“ì7`w!ä7`G“üãp:H ípÑ“ À¡p 8¢p C¢p´m¾!Ëmw!ípÑ“À¡p8¢pC¢p$T¢ž“$W¢ž“7`w! 7`â“7`â“7`U,lp7”4˜`¥<óböDéaÎLlp£”T˜`¥\óbyd7`Ul7`ãXdV~îXt7`|7`U„7`™•|V~îXŒ7`î•”7`A–œ7`¤7`Ù–¬7`w!´7`A—¼7`UÄ7`w!Ì7`˜¼V~îXÔ7`ãXÜ7`ãXä7`Uì7`æ˜äV~îXô7`$7`Uü‡¢„™ÌN~w!lpª‡¢œ™ N~w!lpe’‡¢„™lpe’¢„™”¢„™$lpt‘$‡¢œ™Dîaö,lp’,:”‘’,‡¢œ™4‡¢ü™4/¢1“<N~w!D‡¢„™L‡¢„™Tlp7”T¢œ™T”¢3š\óbydN~w!,7`U)ñ¢ñš©7`tl£ÿš47`Ut.böt$by'£:›<7`U8£U›D7`UG£UL7`U|éaÎT7`UM£Š›w£Š›„…c´\7`U™7`”<9Σ!Œîaö” qw!9Ü£U©7`UT˜`¥9úŸ‘GL˜`¥¡ê£õd7`Ul7`Uœ.böœ$byœc¦”öpw!õ£ˆœt7`UþšU|7`U„7`U¤7`†Q¬ãp:HŒ7`U´.bö´$by´c¦´qcx´{c}A¬¤@ž”7`UA¶¤gžœ7`U¼´m¾!¤7`U¼Ëmw!I7`t¬7`U´7`U¼7`w!AÛ¤@ž¼7`UAæ¤XHÄlpâyÌ7`Uáò¥×ŸÔ7`Z|Ü7`Z|ä7`Z|Ìɚ̀ìîaö7`Uô7`†QÄ7`Uüÿ˜‚€ô¦– Ì7`Uÿ˜‚€ô ¦² Ô7`U ÿ˜‚€ô£ÿšÜ7`Uø•ây7`¡$3–Õw$–u,7`¡47`¡<7`¡$7`xD7`bx”£šM”Ѧѡ”cq¾CQ7`Pé·qU”î¦U´éaÎYHŸU”`œ±wT7`¢\éaÎd1¦âydQ`¾!l–±wܘ`¥ä7`UtQ`–¢t~p¾!Ę`¥|Q`–¢|§ßt7`§¢„Q`–¢„~pŸÌ˜`¥ŒQ`–¢Œ§ß„7`Ä¢”Q`–¢”~p¿€Ô˜`¥œQ`–¢œ§ß”7`á¢ì7`U¤lpIxì˜`¥¬cq¾C¬`œ±w¬Ѧѡ¬£šM¬WœtD\îaö¬t›=é^§£¬·qU´~p¸£´är¾!Ìóbö¼ób‘GÄób|îaöa7`”<i#¨—¤q7`”<á7`ž¤á]¨PáÕ—Uy7`”<ñ#«¤Ô7`»¤Ü7`»¤ä7`bxì7`w!ô7`j¥üo–ux7`µ¥ 7`ì¥7`#¦7`¤z$o–ux,7`¦4o–ux<7`w!œ˜`¥4rožFD7` §L7`¤zü7`i§ô7`‹G7`w!ô7`U(g¾!ô(gŸü(g¿€Tge¨\g¨dg¨7`U‰Rªv©tÅnö|´m¾!|Ëmw!tÎnQE|7`w!„McîŒ –ÕwŒ×uŒø•±wŒý•½wŒ–ÉwŒ¹¨·ª7`xóbŽx” –Õw”×u”ø•±w”ý•½w”–Éw”¹¨·ªœlpIx¤~p¾!¬lpõª¬Q`«´%–½wĘ`¥¼óbŽx̘`¥Ô稷ªÔQ`–¢Üç¨1«Ülp¯«ä7`«´7`xì7`«ôlp¯«ô~pÍ!ü˜`¥ü¨éHQ`–¢ ü¨éH Q`–¢ü¨éHQ`–¢ü¨éH¹¨·ª7`2¬ 7`2¬7`2¬$©«¬$Q`–¢,©«¬,¹¨·ª$7`ì4ª­l˜`¥<ª­ü7`UD¹¨·ªL–uL–±w47`­<7`­L,–ÉwL3–ÕwTü¨ê›TQ`–¢\ü¨ê›\¹¨·ªT7`w­7`Ud–±wd–ul˜`¥t[v¾!| t™H„i©ú­„ t™H¬˜`¥ 7`UŒi©ú­|7`ð­„7`®7`U”©·ªœea¡7`üübw!üóbXFü£tµüÑœ½'¬7`¯´´m¾!¼îaöÄóbyÌ,–ÉwÔóböÌ%–½wÌ–±wܘ`¥¼éaδËmw!ä£ÿšÌ°šw!ì7`4±ô qw!ü£ÿš°šw! NœT‡•>–±w `œ] •w! jœh$7`‚,7`;ƒ47`;ƒ7`Uü7`U$7`UœMcî,7`UäMcî<ø•±w<~p¾!DQ`«D#«pDø•±w<7`³Llp³T7`M~\˜`¥dª²³l>g}!t˜`¥|ª²³lgR!47`U„¹¨·ªŒ3–ÕwŒ–uŒ–±wd7`ͳ|7`ͳŒ,–Éw”Q`s´”Èoc”D«°”M«0G”$™ Ÿ”gc>œQ`s´œÈocœD«°œM«0Gœ$™ Ÿ¤>g}!¬Q`s´¬Èoc¬D«°¬M«0G¬$™ Ÿ¤gR!<7`U´Q`s´´Èoc´D«°´M«0G´$™ Ÿ¼3–Õw”7`…´œ7`¹´¬7`¹´D7`Uįoµ¼–±w̘`¥´7`w!¼–u´7`¹´L7`UT7`UÔ´m¾!Üîaö‘cUÔ7`w!™7`”<‘7`ûµÜéaÎÔËmw!\7`U˜`¥,–Éwä´m¾!ìîaö¡q¬“¶äËmw!ä7`w!–u©7`”<i®¬é¶ìéaÎd7`UôcqÀl7`Uüô˜éHüQ`–¢ô˜éHÿ˜‚€ü7`2¬äB§£ ÿ˜‚€t7`U$™ Ÿ$™ Ÿÿ˜‚€ä7§öìéaÎ7`‰·$$™ Ÿ$ÿ˜‚€$ ˜…7`£·,$™ Ÿ,ÿ˜‚€, ˜… 7`Z|$7`9|4ÿ˜‚€<P™[¤<ÿ˜‚€DF™ú·Dÿ˜‚€D„¬ßtDƘ·Œ˜`¥LF™ú·Lÿ˜‚€L„¬ßtD7` ¸|7`UT:™g¸TF™ú·TP™[¤<7`Ü·<˜`²ªL7`K¸L˜`XH‘7`”<t7`4˜`¥\:™g¸\F™ú·\P™[¤T7`›|dVm¾!d:™¶¸l7`M~t˜`¥|Vm¾!|Í!|:™î¸„7`§ƒŒ˜`¥”Vm¾!”Í!”bm­$”:™.¹œ7`£¤˜`¥¬å¬v¹Ü¿šË{´å¬v¹¼å¬v¹„7`UÄ––1«Ì.böÌ$byÔ7`¥€Ü7`‡¹ä7`‡¹ì7`‡¹Ô¬š–tÔ ›UŒ7`UÜçšöô…™NºôP™[¤ôÿ˜YºôЫgº”7`Uü…™NºüP™[¤üò•uüÿ˜YºüЫgºô7`zºô˜`²ªÿ˜‚€ärÀ …™» ÿ˜‚€ Ы» „¬ßtîaö qw!7`ûºœ7`U$…™»$ÿ˜‚€$Ы»$„¬ßt 7`0»$7`†Q¤7`U,Ddy»¡ô¬—»4…™»4P™[¤<7`ºº$7`0»D7`Œ»<ЫgºLîaöTîaöDDdy»öpw!\…™»\P™[¤47`’~¬7`Udÿ˜‚€lÿ˜‚€tÿ˜‚€´7`U|––·ª| ˜…|ÿ˜‚€d7`Z|l7`Z|t7`Z|¼7`U„––·ª„ ˜…|7`¾¼Œlp±w”lp/½Œ7`£œ7`¤˜`¥Ä7`U¬)šây¬4­Ã€Ì7`U´)šây´Tšß¬7`ͽ¼––·ª¼)šây¼Tšß´7`é½Ijn+Ô7`UÜ7`UFau‚ä7`Uì7`UÄ~p“¾Älpœ¾Ä»—>ô7`UÌ~p“¾Ìlpœ¾Ì»—>ÔÄœìÜîaöä7`UÔgòƒÄ7`‚ì~p“¾ìlpœ¾ì»—>ÔÚœ)‚ô7`Uü7`Uü~p“¾ülpœ¾ü»—>Ô(æ‚7`U ~pu‚ »—>~pu‚»—> þœC‚ gòƒ 7`;ƒL~pu‚L»—> C‚~pu‚»—>$~pu‚$»—>7`;ƒT~pu‚T»—>7`U,~pg†|N~w!4~pg†<˜`¥Œ~pg†,7`¡„47`¡„Dÿ˜¸£¬°šw!Lÿ˜¸£Tÿ˜¸£¬7§ö 7`U\»—>\ÿ˜¸£T7`Ï„d»—>dÿ˜¸£\7`a…l·­;Àt7`U|.bö|$by„úg[$”7`„Ûg?$|7`Œ7`„¼g$”îaöüéaΜéaΤéaάéaδéaμéaÎÄéaÎÌéaÎÔéaÎÜéaÎäéaÎìéaÎôîaöüéaÎîaö $byîaö.bö$îaö$by .bö c¦,Mcî,7`,ea¡$éaÎ<îaöD$byD.böL7`TéaΤMcî\îaödc¦d$byd.böD7`<éaÎlîaöt$by|îaö„$byÙœ°UѰ°jÁ±!ÊÁ]±!Ê7`U7`U$7`U„.bö„c¦Ù§±àÊŒ7`M~”éaÎ\Ånö¤7`¬éaδMcî´ea¡ôéaμ7`ÄéaÎÌ7`M~ÔéaÎÜ7`§ƒäéaÎ$éaÎÔîaöÌ.böÌc¦Ì$byŒéaÎìéaÎäîaöÜ.böÜqcxÜc¦Ü$byd7`M~\éaάéaÎôéaÎü7`éaÎ 7`éaÎÄîaö¼.bö¼$by7`$éaÎ7`éaÎ,7`4éaÎ<7`£DéaÎL7`TéaΔéaÎ\7`§ƒdéaÎl7`M~téaÎ|îaö„$by„.böŒ7`§ƒ”éaΜ7`¤éaά7`M~´éaμ7`Äéa΄7`M~|éaÎ 7`M~éaÎÌ7`M~ÔéaÎìîaöÜ7`äéaÎtéaÎìîaöôîaö¹§±àÊäîaöÜ$byÁÙµqTùêµqTqõyqTÑøµqT¹¶qTIbàÚ¹p¶ôÚ¤vaµ¹§¶qTüvaµy7`Uù§·UÁ¸UÁ¸êWÙ§·UÁW¸U .bö $by ˜`¥¹‘¹NÝ ÎnQE Ånö$ îaö¹k~ãÝ$ éaι=dôÚ¹ºÞ¹ºtÞy7`¹kºÏÞ¹†ºïÞ4 .bö4 $by4 7`ÑźÔß< .bö< c¦< {c}< qcx< $byD $byD .böL ÎnQEL Ånö¹¶(áéÇ{Qáé1»àÊôîaöé_»uáT 7`w!̘`¥\ 7`\ .bö\ $byd übŽKl ea¡Ü˜`¥t 7`M~t .böt $byt c¦| ea¡< 7`£„ 7`§ƒŒ 7`Œ .böŒ $by” 7`tœ ˜`¥„ .bö„ $by„ c¦„ qcxb¼¢è” ¨èb¼¯èµè¤ übzQD˜`¥¤ ¹nU¤ *yöAvaë_A½Bë¬ 7`´ üb¼ çbV¼ x£NÄ 7`qå…"`¹¹½ììÄ $byÄ .böÌ éaÎÔ ea¡é×½íÌ îaöô˜`¥Ü 7`n)o¾>î)þlDî,7`U47`U<7`UD7`UL7`UT7`U\7`Ud7`Ul7`Ut7`U|7`U„7`UŒ7`U”7`Uœ7`UüMcîüóbXF¤7`U¬7`U´7`Uä ’»¾!¼7`U„˜`¥Ä7`UÌ7`U¬˜`¥Ô7`UÜ7`Uä7`Uì7`Uô7`Uä˜`¥˜`¥ü˜`¥¼˜`¥ü7`Ud ób¥7`U 7`U ˜`¥7`U7`U˜`¥$7`Uì 7`,7`Uô ea¡47`U<7`UD7`U¬ .bö¬ $by\7`Uì .böì $by¼ übd7`U鳿7õü 7`l7`UI´a}õ´ çbV¼ ;xt7`Uü .böü $by’a|D!˜`¥„˜`¥ !7` !.bö !$by|7`U„7`U!ea¡!˜`¥,!7`4!éaÎ Ü"Ã+Ü"O¾>ä"˜`¥ì">g}!ì"gR!ô"7`ü"7`#éaÎ #7`§ƒ#îaöü"$byü".bö #c¦ #qcx #$by #.böô"$byô".bö!Mcî#7`I7`È #.bö#$by)€Ãt#…cÐ=$#ÎnQE$#Ånö4#7`<#éaÎQÊÂQÊ L#7`…žT#çbVT#übIoÊÇIwÊÇ\#óböd#éaÎl#óbyd#îaöT#­tVt#˜`¥|#˜`¥„#7`æŒ#7`ý”#7`ñœ#7`GÁÿʵÁvaµÁËÀ¤#…c´ÁËÀ¹ ËëÁ.Ëô¬#$by¬#.böT#7`]üÑ’aÉ’aá’aÙ’aé’a’aÉ’añ’a¹V˺¹i˺9€ÁVË¿ÁiË¿ü7`U´#.bö´#$by7`U¼#.bö¼#$byÄ#‡•c 7`U7`U7`UÌ#7¿©Ô#˜`¥$7`UÜ#ªPä#˜`¥,7`UÁÏ{‰ì#7`ô#éaÎÁÏ{¿47`U<7`Uü#7`$éaÎD7`U $7`$éaÎL7`U¼#7`T7`U$Xʲ$rz¯T$+Éd$ÍfÏ$‡•c$aÊ>$$7`\7`U,$rz¯Td7`U¤$by¤.bö4$7`<$ea¡l7`Ut…c´D$ÎnQED$Ånöt˜`¥T$˜`¥\$˜`¥d$˜`¥l$7`Ut7`U|7`Ut$ x£N‘˜`rWt$;x|$ x£NÙ˜`~U|$;x¹†ºõ#¹k~þ#t$7`U|$7`U„7`Uü#.böü#$byŒ$…c´ì7`Q7`U”$7`œ$Mcî¤$Ånö¬$$by¤$ÎnQEœ$ea¡IiÚ±(Œ7`U¼$7`£¼${c}¼$.bö¼$c¦¼$$by¼$qcx´~p·)¡Ç–À)¡­tÀ)Ä$ípÑ“Ì$ ¢NºÌ$D­ß)Ô$ qw!Ä~p$*Ü$7`Ô)Ü$˜`FHä$7`”<Ô$öpw!Ì$7`ò)ì$ípÑ“ô$ ¢]*ô$D­¨Xü$ qw!ä~p„™Ì•~—XÌ¢~Xì$7`Ô)ì$˜`FHÜ7`”<ü$öpw!ô$7`u*%éaÎ %éaÎ %îaö%éaιÅß‹+¹z”+ùÏ{D ¹êßU%îaö%îaö‰Rª¡-¹ ËvT4%7`<%7`D%7`L%éaÎŒ7`ÁÏ{1/¤7`U¬7`UùæãU´7`UT%éaμ7`UÄ7`U\%ób¥Ì7`UÔ7`UÜ7`Uä˜`¥ä7`UÙ˜`1/ì7`U‘˜`ô/ô7`Uü7`U„°{ë,L¿x2PL²xøJLübzQLsMQL­tzQLáxÜRLúx SLíxÜRLíx SLUtORL™t1RL•t«RLÁy¸SLÈxÜR¤%qcµ¬%kxäO¬%ux P¤%c|P¤%$b|P¤%.bö´%yä4œ%óbö¼%.bö¼%c¦¼%$by¼%7`M~Ä%7`Ä%$byÄ%.böÔ%c|PÔ%$b|PÔ%.böÌ%óböÜ%˜`¥ä%7`^Qì%7`^Qô%7`^Qü%7`ü%.böü%$by&7`M~ &>g}! &gR!&˜`¥$&óbö&c¦&$by&.bö,&7`6;4&7`U<&7`6;D&7`UL&ÅnöL&ÎnQET&McîT&ea¡\&7`æ<\&šçM\&£ç =\&²çN=\&¼çPl&7`w!t&7`½=|&7`ò>„&ØröŒ&7`?”&£søJ”&“t2Pœ&£søJœ&“t2P¤&£søJ¤&Â`2P7`U¬&ø•Ñ?¬&9è¾!˜`¥´&ø•Ñ?´&9è¾!¼&£ç =¼&šçMÄ&Úa2PÄ&gc-@Ì&´m¾!Ì&Ëmw!Ô&{w0GÔ&€Øc 7`UÜ&£søJ7`Uä&lps@ü…c´7`Uì&lpªì&£s˜@$7`U$íxÜRô&…s‰Iô&übŽKô&xsøJô&­t}Mü&îaöY7`Uô&UtÚKô&™tTM'7`"K 'ctL'ctL'7`U,'7`…C4'7`…Cô&ËtµMô&epZKô&7`"Kô&s K,7`U47`U<'lpÎDD'lpÎDT'{cµ\'(smI\'ÿr@IT'$byT'qcHJT'cHJT'.böL'.böL'$byd'éaÎl'7`l'.böl'$byt'7`M~t'$byt'c¦t'.bö|'$by|'.böŒ'(smI„'$by„'qcHJ„'cHJ„'.bö„'{cµŒ'ÿr@I”'(smI”'ÿr@I'˜`J=œ'$byœ'.bö¬'˜`J=¤'$by¤'qcHJ¤'cHJ¤'.böô7`´'Mcî´'ea¡¼'7`?Ì'7`fOÔ'ÅnöÔ'ÎnQEÜ'McîÜ'ea¡ä'7`JPä'šçMä'£çsPô'7`ä'²ççPä'¼çPü'7`w!(7`]Q<7`U (£søJD7`U({wÊQ(€Øc(£çsP(šçM$(Úa‰I$(gcR,(´m¾!,(Ëmw!T7`U\7`UÔÚa K4(7`Ud7`U<(Úa„RD(7`Ul7`UìeŸ KTyä4t7`UT(7`-ST(HŸ_Sä…c1?T(YªÇS\(YªT\(HŸT\(7`† ä…cÐ=d(HŸ¹Tl(˜`¥„(˜`¥Œ(ctWŒ(˜`Ü<”(ctW”(˜`Ü<œ(ctLœ(˜`J=¤(ctW¤(˜`Ü<¬(ctL¬(˜`J=´(ctW´(˜`Ü<¼(˜`Ü<¼(ctWY7`tÄ(˜`¥d'îaöÌ(7`UÌ(übw!Ì(ÃtJGÔ(7`UÔ(übw!Ô(ÃtJGÜ(7`ä(7`M~ì(7`ä(c¦ä($byä(.böô(7`M~ü(ctWü(˜`Ü<)ctW)˜`Ü< '˜`J= )ctW )˜`Ü<)ctW)˜`Ü<)…c´Á.ËL_´vaµ$)ÎnQE$)Ånö,)ÎnQE,)Ånö4)˜`J=<)Mcî4)ctL<)ea¡L)McîL)ea¡I í¢lT)…c´A7`½'˜`¥\)˜`¥|7`Ud)7`Óml)7`nt)xí`n|)7`|n„)7`´nl(…c´rožFŒ)Ørö”)7`¦oœ)7`îo¤)7`nެ)7`}<´)7`™p¼)7`×pÄ)7`qÌ)7`UÜ)7`Uä)7`Ûqì)7`£rô)£tµd"…c´ü)7`Îs*7`ös *7`u*7`w!*7`]u$*7`u,*7`Ñu4*7`ÎvÔ(£tµ<*´m¾!D*éaÎL*éaÎ<*Ëmw!L*îaöD*îaöÔ(óbXFT*7`\*éaÎÔ(ðrU<*7`w!d*7``xl*7`xt*7`üH|*7`žS„*7`yŒ*7`yœ*7`ßy¤*7`y¬*7`žS´*7`bz¼*7`S{Ä*7`£rÌ*7`ž{„7`UÔ*lp |\˜`¥Ü*lp+|Ü*~pÍ!ä*lpL|ì*Èo>ì*lpL|ô*lpf|ô* ty|ü*rožF+˜`¥ +lp¤| +®íy| +—¡Â|+rožF+…c´Œ7`U$+lpe’”7`U,+lpª4+lp(}œ7`U<+lpC}D+lpt‘¤7`U¬7`UL+.böL+$byT+7`M~\+Eªd+Èo>d+E‘Hd+ ¢™Hd+§>d+´îÎ}d+¹î>d+ªç¾!´7`UœrožFl+Øröd+7`£rt+lpæ»|+˜`¥¼7`U„+—¡‘HŒ+¡‘HŒ+—¡‘H„+7`žS”+¢–E~œ+E0G¤+7`u¬+~p¾!´+7`w!¼+Øo>¼+E‘H¼+gcc¼+ t™H¼+¹î>¼+ªç¾!¼+7`]uÄ+E‘HÄ+ t™HÄ+¼î*CÄ+€Ø¾!Ä+¹î>Ä+ªç¤~Ä7`UÄ+7`uÌ+lpû’Ì+€t¾!Ì+Ey|Ì+Áî*CÌ+ tå~Ì+¹î>Ì+ªç¾!Ô+ØröÌ+7`ÑuÜ+ î>Ü+E‘HÜ+{w0GÜ+[vcÜ+gccÜ+ ¢™HÜ+¹î>Ü+ªç0GÌ7`UÜ+7`ÎvÔ7`Uä+E‘Hä+CîLä+Jî=ì+CîLì+Jî=ô+E‘Hü+Æîªü+Ëîœ,7`w! , x£N,7`,$by,.bö ,;xÜ7`U,îay,ÐîUä7`U,Òtö,ùd¾!$,7`ì7`U,,Æîª,,áî‘H,,t_‡ ,7`|‡ü+7`º4,7`UD,7`UL,E‘HL,Ëî/L,âm¾!L,BtÓ‹L,´î™HL,¹î>L,ªç¾!l,t_‡T,7`|‡T,çbVT,;xL,7`y\,Æîª\,E‘H\,Ëîl\,âm¾!\,BtÙ\,´î™H\,¹î>\,ªç¾!d,7`|‡d,çbVd,;x\,7`ßyl,Æîªl,E‘Ht,E‘H|,Æîª|,Ë, x£N„,;xô7`UŒ,Òtölùd¾!Œ,îay”,7`ü7`Uœ,ÆîL‘œ,Ey|¤,7`|‡¬,7`Ö´,7`UÄ,¹¨e’Ä,E‘HÄ, ¢™HÄ,åî*CÄ,¹î>Ä,ªç¾!Ä,7`S{Ì,Èo>Ì,E‘HÌ, ¢™HÌ,§>Ì,´îÎ}Ì,¹î>Ì,ªç¾!Ì,7`£rÔ,¹¨e’Ô,E‘HÔ, ¢™HÔ,åî*CÔ,ìîpÔ,¹î>Ô,ªç¾!Ô,7`ž{Ü,7`á‚ä,7`ƒì,7`kƒô,7`Uü,*ïå~ü,4ï™Hü,BïUü,Wï¾!-7`w! -7` „-7` „-7`Y„$-´m¾!,-îaö$-7`w!4-7`á„<-7`žSD-7` „L-7`x…T-7`U\-7`|‡\-ðç…1d†=d†d-lp3†„˜`¥l-7`UðT†t-7`U7`U|-gÚ†„-þîæ»„-ïA’„- ïµ¹Œ-Èçe’Œ-ªçª”-’éH”-Hð |œ-*ïå~œ-4ï™Hœ-èMœ-NðMœ-Wð²u¤-rožF¬-Øröœ-Wï¾!œ-eðöœ-BïU´-ç’¾!¼-ç’Í!¼-Íð°‡Ä-˜`¥Ì-¿íy|œ-7`Y„Ô-ªË­Ô-“t‘HÔ-èpÔ-šïÛ‡Ü-Ëmw!ä-éaÎ$7`Uì-ªË­ì-“t‘Hì-èpì-šïÛ‡Ô-7`á„ô-Íð‘H,7`Uü-[vÑ“.æây.D­¾! .uÖây .æây .qZˆ.7`Ô).˜`¥.7`¡$.Òð£ˆ$.èðÒˆ,.˜`¥D.ób ‰L.òð‰T. ¢™H\.7`p‰\.ñ$~T.7`ð­d.7`U4NñÒ‰l.7`p‰t.7`w!47`Ut.(g¾!l.(g$~|.gôŠ„.g‹Œ.g,‹”+ª$~”+ø•-~”.7`¶‹”+7`{‹œ.7`ï‹<Òð£ˆ<èðÒˆ”.ø•-~”.ª¥‹¼˜`¥D7`Uœ.~p¥‹4òð‰l.ób ‰¤.ñ$~¤.šï¾C¤.NðMt.óbö¬. ¢™H´.7`{Œ¼.7`ð­´.ª—Œ4fñó‰4{ñÿ‰¼.Qò™HÄ.7`#Ì.7`ËŒÔ.7`Ü.7`Kì.´m¾!ô.7`Ôü.7`TŽ/7`ŽŽ /´m¾!/7`îŽ /Ëmw!/7`U /7`w!$/7`Iì.Ëmw!ì.7`w!,/7`4/7`Ÿ¤/oc¤/ªç/Ëmw!´/ïA’´/ ïµ¹´/èp´/šï1“´/:”'’¼/´m¾!¤+{w0G¤+šï>¤+O¾>¤+Yªö´+âm¾!´+èMÄ/lpéHÄ/ ¢™HlØósHl§™HÌ/ctWÔ/7`ª’Ü/7`?ä/£s “\˜`Ü<\7`Uì/£søJô/7`Uü/7`½'07`U 0ctW07`r“0Gô>91d¾“$0ßÓ$0uôÍ“4 ˜`¥,0˜`Ü<40Yª•40HŸ2•407`øÁ„ôU•Á„ôh•ä…c´D07`m–L07`¥–T07`ó–\07`—d7`Ud0lpL‘d0{w—l0Yª¸—t0lpÆ—t0{w—|0{wç—„0Yª¿—Œ0{wç—Œ0ßÊ>Œ0âÊ>ä˜`¥Á.˘”0yä4Á.ËF˜Á.Ëw˜\ o“Fœ0˜`Ü<¤0˜`Ü<¬0˜`¥$) o“FL!ÎnQE´0ÎnQE´0ÅnöÄ07`Ì0ÎnQEÌ0Ånö,) o“FÔ07`M~$# o“FÜ0McîÌ0 o“FÜ0ea¡ä0´m¾!ä0Ëmw!ä07`w!d7`¤Gd@ptD)Ç{qT¬Ëmw!¬´m¾!ì07`†¢ô07`Ç¢a¡p¹¨ô'Òtöô'îayü0˜`¥ tûI¥17`U 17`U17`U17`U$1lp¤¦$1ª¯¦,1˜`¥41˜`¥l7`U<1lpÚ¦<1ª°‡D1˜`¥t7`UaÏû§L17`w!T17`w!d17`w!t17`w!„17`w!”17`w!¤17`w!´17`w!Ä17`w!Ô17`w!ä17`w!ô17`w!27`w! 27`²ª27`÷ª27`w!$27`C«,27`«427`w! q€r¬D27`jL27`jT2cqa¯)˜`¥\2cqa¯d2cqa¯l2cqa¯t2cqޝ|2cqa¯„2cqa¯Œ2cqa¯”2cqa¯œ2cqa¯¤2cqÓ¬2˜`¥´2cqa¯¼2cqa¯Ä2cqªÌ2cqa¯Ô2cqa¯Ü2cqa¯ä2cqa¯ì2cqa¯ô2cqa¯ü2cq+°| =°|0B°|U|U|(U|Ørö|7`U3âm¾!„7`U 3Øo¾! 3eŸ¾! 3€t¾! 3M¥ 3HV° 3;† 3B†3Øo¾!3eŸ¾!3€t¾!3HV°3B†3;†Œ7`U”7`g°¤7`U¬7`g°¼7`UÄ7`g°Ô7`UÜ7`g°ì7`Uô7`g°7`U 7`g°7`U$7`g°47`U<7`g°L7`UT7`g°d7`Ul7`g°|7`g°„7`g°”7`g°œ7`g°3\¾!3Øo¾!3eŸ¾!3uÖ+°3WM¬7`g°Ô…c´$3\¾!$3uÖ+°$3Øo¾!$3eŸ¾!,3{Í!,3Øo¾!,3eŸ¾!,3uÖû’,3TM,3WM43`Í!43uÖû’43Øo¾!43{Í!43eŸ¾!´7`g°<3›¸ØWÄ7`UD3›¸ØWL37`g³T37`g³\37`g³d37`g³l37`g³t37`g³|37`g³„37`g³Œ3cqa¯Ì7`UaßtγÔ7`UL3la¯Ô˜`¥Ü7`UaßtÓ³T3la¯ä7`U\3la¯ì7`Uaßtسd3la¯ô7`U©7`tl3la¯ü7`Uaßt§t3la¯ 7`Uaßtݳ|3la¯ 7`UaßtⳄ3la¯”37`g³œ37`g³¤3cqa¯a®û§”3la¯œ3la¯¬37`g³´37`g³¼3cqa¯a³û§¬3la¯´3la¯Ä37`g³Ì37`g³Ô3cqa¯a¸û§Ä3la¯Ì3la¯Ü37`Y´ä37`Y´ì3cqޝ 7`Ua½û©´ô37¿ª 7`UÜ3lޝ ˜`¥ô37`}<$ 7`Uü37¿ªä3lޝü37`}<47`g³ 47`g³4cqa¯aÃû§4la¯ 4la¯47`g³$47`g³,4cqa¯aËû§4la¯$4la¯447`g³<47`g³D4cqa¯44la¯<4la¯L47`g³T47`g³\4cqa¯aõí§L4la¯T4la¯d47`g³l47`g³t4cqa¯aÕû§d4la¯l4la¯|47`tµ„47`tµŒ47`tµ”47`tµœ47`tµ¤47`tµ¬47`tµ´47`tµ¼4cqÓ, 7`Uaî~Þµ4 7`U|4lÓ< 7`U„4lÓD 7`UŒ4lÓL 7`Uaî~òµ”4lÓT 7`Uaî~¶œ4lÓaî~ N¤4lÓ\ 7`Uaî~ ¶¬4lÓd 7`Uaî~¶´4lÓÄ47`g³Ì47`g³Ô4cqa¯aÛû§Ä4la¯Ì4la¯Ü47`g³ä47`g³ì4cqa¯aßû§Ü4la¯ä4la¯ô47`}<ü47`}<5cqªaåû§ô4lªü4lª 57`g³57`g³5cqa¯aêû§ 5la¯5la¯$57`g³,57`g³45cqa¯aîû§$5la¯,5la¯<57`g³D57`g³L5cqa¯aóû§<5la¯D5la¯T57`g³\57`g³d5cqa¯a÷û§T5la¯\5la¯l57`g³t57`g³|5cqa¯aüû§l5la¯t5la¯„57`g³Œ57`g³”5cqa¯aü§„5la¯Œ5la¯œ57`=·¤57`=·¬5cq+°aü€©´´57¿a¯l 7`Uœ5l+°l ˜`¥´57`g³¼57¿a¯¤5l+°¼57`g³LÚaELšïELèMLeðöt 7`UÄ57`ÿ·Ì57`×pÔ5lpQ¸Ô5š·­$Ü5˜`Ü<Ì5lpC}| 7`Ut ˜`¥„ 7`Uä57`„¸ô57`ð¸ü57`¹6lpq¹6š·‘( 6˜`J=ô5lp»¸Œ 7`Uì5˜`Ü<6˜`¥ü5lp¦¹„ ˜`¥” 7`U$67`&º467`hº<67`•ºD67`s»$6lpйœ 7`U6˜`J=L6˜`¥46lpæ¹,6˜`Ü<6…c´<6lp®»” ˜`¥Ä-…cÐ=T6lpÕ»T6š·º-\6˜`E>¤ 7`Ud67`¼t67`弄67`-½”67`½œ67`µ½¤6lpྤ6š·õ3¬6˜`Ù?t6lpe¼¬ 7`Ul6˜`E>´6˜`¥„6lp}¼|6˜`J=L6…c´”6lpš¼Œ6˜`Ü<6…cÐ=œ6lp-¿¤ ˜`¥Ä-…c1?¼67`UÄ67`½'Ì67`UÔ67`UÜ6lpøJÜ6´øJQúÝÀä67`ì67`9û ÁIoõä6$byä6.böé*BÁ9úMÁQeÁ*mÁñ*xÁì6$byì6.böÉ*¤Á¹ºÑÁô6cq¾!ü6cq¾!7cqùÁ¬2…c´77`×p77`j$77`×pd7°{C}l77`×pt77`j|77`×pŒ7°{C}”77`×pœ77`j¤77`×p¬7°{C}´77`×p¼77`jÄ77`×pÌ7°{C}Ô7Gô>Ü7´øJÜ7lpøJä7cq¾!ì7cq¾! 87`j87`vÄ8cqùÁ, 7`U9û¹Ä Lr¬4 7`U< 7`UD 7`U 8§ØWL 7`U$87¿L|T 7`U8lùÁT ˜`¥$87`|nT8°{C}\87¿ªd8lC}l87`}<t8eŸØW|87¿ª„8lC}Œ87`}<\ 7`U”8°{C}œ87¿ª¤8lC}¬87`}<´8eŸØW¼87¿ªÄ8lC}Ì87`}<d 7`UÔ8°{C}Ü87¿ªä8lC}ì87`}<ô8eŸØWü87¿ª9lC} 97`}<9°{C}97¿ª$9lC},97`}<49eŸØW<97¿ªD9lC}L97`}<ÁÏ{uÇÁÏ{‰ÇÁ× »ÇÁÏ{ÕÇÁ ë_ñyR=døÉ1d t9.böt9$byt9c¦t9qcx|9.bö|9$by|9c¦|9qcx|9{c}„9|l>y7`U„ôY#¹åUŒ9|l>”9Ph>”9]gµœ9óbö¤9óby¬9ób¦´9óbx¼9ób}Ä9]gµÌ9óböÔ9óbyÜ9ób¦ä9óbxì9ób}ô9óbù3Ä9Ph> :]gµ:óbö:óby$:ób¦,:óbx4:ób}<:óbù3D:ób-9< lp˜ÚL ˜`¥D lpªT lp˜Ú\ lpªT:lp£Ú\:˜`w!d:lp˜Úl:lpªt:lpÐÚ|:˜`¥„:lpÿÚŒ:˜`¥”:lp4Ûœ:7`§ƒ¤:˜`¥¬:lp}Û´:7`£¼:˜`¥IbÚÛéu/láé7`õÛÄ:7`w!t97`§ƒ|97`£Ì:7`†ÜÔ:7`ËÜÜ:7`݉7`Uä:â/¾!ì:!…dÝä:=d§"ô:!…ŠÝä:edy"ä:1d "A‹a”ÝÌâ/¾!ÌP0Í!Ì=d§"Ìedy"Ì1d "T+â/¾!T+P0Í!T+X0­$T+=d§"T+edy"T+1d "œ:â/¾!œ:P0Í!œ:X0­$œ:`0‘(œ:=d§"œ:edy"œ:1d "´:â/¾!´:P0Í!´:X0­$´:`0‘(´:h0º-´:=d§"´:edy"´:1d "ü:â/¾!ü:P0Í!ü:X0­$ü:`0‘(ü:h0º-ü:p0õ3ü:=d§"ü:edy"ü:1d " ;â/¾! ;P0Í! ;X0­$ ;`0‘( ;h0º- ;p0õ3 ;~0)9 ;=d§" ;edy" ;1d ";â/¾!;P0Í!;X0­$;`0‘(;h0º-;p0õ3;~0)9;•0 ß;=d§";edy";1d " Ç<Â@DÇHLPT"X'\,`1d6h;pÂtxÇ|€,„DÜÂàôÂøüÇ $Ç(PÂTXÇ\`”˜Çœ ¤ÜÂàäÇèìðô"DÂHPÂTˆÂŒÇÔÂØÜÇPÂTXÇpÂtxÇÂÇ xÂ|€Ç„ˆŒ"”'˜,œ1 d¤ d¨%d¬*d°/d´4d¸D¼9dÀ>dÄCdÈHdÌMdÐRdÔWdØ\dÜadàfdäkdèpdìudðzdô6ø;üd„d‰d¤Â¨¬Ç  ¤ ¨ Ǭ $Ç(,<Â@ Â$(Ç,04lÂptÇx|€„"PÂTXǴ¸¼Ç¤Â¨¬Ç š*j. ôCšcš€K€SƒšÌÀÚ`Ú` K S¡ó¡K¡SãšÌšÌ##šÌC+`CšÌc+`c*cšÌƒ+zƒ*ƒšÌ£+z£*£šÌÃ+`Ã*ÚÌã+”ã*ãšÌ+`*šÌ K S ó#+®#*#šÌ)K)S)óC+`C*CšÌIKISIóc+”c*cšÌiz!#iKiSƒ+ȃ*ƒšÌ‰z#‰K‰S£+`£*£šÌ©z!#©K©SÃ+`Ã*ÚÌÉz#ÉKÉSã+`ã*ãšÌéKéSéó+â*šÌ K S ó#+ü#*#šÌ)K)S)óC+üC*CšÌIKISIóc+âc*cšÌiz!#iKiSƒ+ȃ*ƒšÌ‰z#‰K‰S£+È£*£šÌ©z'©K©SÃ+ Ã*ÚÌÉz!#ÉKÉSã+4 ã*ãšÌéz#éKéS+N *šÌ z' K S#+`#*#šÌ)K)S)óC+h C*CšÌIKISIóc+`c*cšÌiKiSióƒ+”ƒ*ƒšÌ‰K‰S‰ó£+ £*£šÌ©K©S©óÃ+Æ Ã*ÚÌÉz!#ÉKÉSã+Æ ã*ãšÌéz#éKéS+Æ *šÌ z' K S#+Æ #*#šÌ)zŠ+)K)SC+ÈC*CšÌIz!#IKISc+âc*cšÌiz#iKiSƒ+Æ ƒ*ƒšÌ‰z'‰K‰S£+È£*£šÌ©zŠ+©K©SÃ+ÈÃ*ÚÌÉKÉSÉóã+!ã*ãšÌéKéSéó+È*šÌ K S ó!ó!K!S#+È#*#šÌ)K)S)óAóAKASC+`C*CšÌIKISIóaóaKaSc+(!c*cšÌiKiSióóKSƒšÌ‰z!#‰K‰S£Ú£Ê£ÿ"£š#©z#©K©SÉz'ÉKÉSãƒ8#ézŠ+éKéSóKSƒ’# z 0 K S!ó!K!S)z!#)K)SAóAKASIz#IKISaóaKaScÚcÊcv&cš#iz'iKiSóKS‰zŠ+‰K‰S¡ó¡K¡S£ƒŠ&©z 0©K©SÁóÁKÁSÃÎ&ÉKÉSÉóãƒ('éKéSéó K S ó) K) S) óI KI SI óa óa Ka Sc Úc Êc ¥*c š#i Ki Si ó ó K S‰ K‰ S‰ ó¡ ó¡ K¡ S£ ƒ¹*© z!#© K© SÁ óÁ KÁ Sà ƒý*É z#É KÉ Sá óá Ká Sã ƒA+é z'é Ké S ó K S ƒ›+ zŠ+ K S! ó! K! S) z 0) K) SA óA KA SI zä3I KI Sa óa Ka Si z!#i Ki S‰ z#‰ K‰ S£ Ú£ Ê£ â.£ š#© z'© K© SÉ zŠ+É KÉ Sã ƒö.é z 0é Ké S ƒ:/ zä3 K S! ó! K! S# ƒ~/) K) S) óA óA KA SC ƒÂ/I KI SI óa óa Ka Sc ƒ0i Ki Si ó ó K S‰ K‰ S‰ ó¡ ó¡ K¡ S© K© S© óÁ óÁ KÁ SÉ KÉ SÉ óá óá Ká Sé Ké Sé ó ó K S K S ó! ó! K! S# Ú# Ê# w2# š#) z!#) K) SA óA KA SI z#I KI Sa óa Ka Sc ƒ‹2i z'i Ki Sƒ ƒÏ2‰ zŠ+‰ K‰ S£ ƒ3© z 0© K© Sà ƒW3É zä3É KÉ Sã ƒ›3é z9é Ké S ƒþ3 z!# K S) z#) K) SA óA KA SI z'I KI Sa óa Ka Si zŠ+i Ki S ó K S‰ z 0‰ K‰ S  K  S¡ ó¡ K¡ S© zä3© K© SÀ ¢`!Á óÁ KÁ SÉ z9É KÉ Sà Kà Sá óá Ká Sã Úã Êã g7ã š#é ¢6;¢‹!óKS ¢C; K S!ó!K!S#ƒ{7)¢P;@K@SAóAKASCƒ¿7`KaóaKaScƒ8iói¢6;€KóKSƒƒG8 K¡ó¡K¡S£ƒ‹8©K©S©óÀKÁóÁKÁSÃÏ8Éz#ÉKÉSàKãƒ29éóéÚ›CK ó Ú›C K)K)S)ó@KIKISIó`K`SiKiSió€K€S‰K‰S‰ó K S©óÀKÀSÁóÁKÁSÉóàKàSáóáKáSãš9<KSóKS*šÌ K S!ó!K!S#2#šÌ@K@SAóAKASC2CšÌIz#IKIS`K`SaóaKaSc2c*cšÌizGiKiS€¢&$óKSƒÚƒÊƒcCƒËtCƒš„C‰Ì K S¡ó¡K¡S£ZÈD£ºÎD£Ú£Ê£×D£ËëD£š#À¢`!ÁóÁKÁSàKàSáóáKáSム¬FãZÈDヶFãÚãÊãèFãËúFãš#¢‹!óKS K S!ó!K!S)„C@K@SAóAKAS`KaóaKaScšÌ€KƒšÌ‰K‰S‰ó K£êH£J£šÌ©z#©K©SÀKÃJÚÌÉzGÉKÉSàKáóãJãšÌéz'éKéSKóKSšÌ zøI K S K#šÌ)zJ)K)S@KC^HCšÌIz&JIKIS`K`SaóaKaSc2cšÌiz7JiKiS€K€Sƒ*ƒšÌ‰z#‰K‰S K S£ºÎD£â£ú£š­I©zG©K©SÀKÀSÁóÁKÁSÉz'ÉKÉSàKàSáóáKáSヶIézøIéKéSKSƒTJ zJ K S K S)z&J)K)S@K@SIz7JIKIS`K`Scƒ ¬FcƒOc*c?OcËPOcšÌ€K€Sƒ*ƒšÌ‰ó K S¡R£â£ú£Ë¥O£šÉOÀKÀSúÎDÃâÃúÚ­IÉóàKàS¢è'ƒ†P K S#ƒÉP)Ì@¢&$I¢6;`K`Si¢C;€¢`!ƒ*ƒÅSƒƒÖSƒËPOƒšÌ‰K‰S‰ó K S¡ó¡K¡S£*£šÌ©z#©K©SÀ¢‹!ÁóÁKÁSÃ*ÚÌÉzGÉKÉSàKàSáóáKáSã2ã*ãšÌézZPéKéSKSóKSšÌ zkP K S K!ó!K!S#2#*#šÌ)z')K)S@KAóAKASC¢WCšÌIz#IKIS`KaóaKaSc/XcšÌizGiKiS€KóKSƒÿXƒšÌ‰zZP‰K‰S K¡ó¡K¡S£â£ú£šÉO©zkP©K©SÀKÃ*ÃêÃòÃêûZÚÌÉz'ÉKÉSàKãÚãúãš­IéóK K S#ƒŽ[)ó@K@SCƒà[`K`Saócƒ/\ió€K€Só‰ó K S©óÀKÀSÉóàKàSãâãúãš­IéÌKSóKS K S!ó!K!S#ƒú\@K@SAóAKASCƒ]`K`SaóaKaScƒ^€K€SóKS K S¡ó¡K¡SÀKÀSÁóÁKÁSàKàSãâãúãšÌé¢6;KSâúšÉO ¢C; K S#šÌ@¢…,CšÌ`K`Sc*c=`cšÌ€¢è'ƒÚƒúƒš­I K SÀ¢&$ÃÕ`àKàSãƒ&a¢`!ƒ~a K S#ƒÏa@¢‹!`K`Saó€K€Só‰K‰S‰ó K©K©S©óÀKÃÚÃúÚ­IÉKÉSÉóàKéKéSéóKƒŽd K S ó K#ƒëd)z#)K)S@KCƒIeIz'IKIS`KaóaKaScƒ¨eiz#iKiS€Kƒƒf‰z'‰K‰S K S£ƒf©K©S©óÀKÀSÃâfÉKÉSÉóàKàSáóáKáSãƒAgéKéSéóKSóKSƒ¢g K S ó K S!ó!K!S#ƒh)z!#)K)S@K@SAóAKASCƒwhIzÑ\IKIS`K`SaóaKaScƒ×hizâ\iKiS€K€Sƒƒ9i‰z#‰K‰S K S£ƒ±i©zG©K©SÀKÀSÃjÉzZPÉKÉSàKàSáóáKáSダjézkPéKéSKSóKSƒâj zK] K S K S!ó!K!S#ƒ:k)zb])K)S@K@SAóAKASCƒ”kIz'IKIS`K`SaóaKaScƒñkizøIiKiS€K€SóKSƒƒcl‰zJ‰K‰S K S¡ó¡K¡S£ƒºl©z!#©K©SÀKÀSÁóÁKÁSÉzÑ\ÉKÉSàKàSáóáKáSézâ\éKéSKSóKS z# K S K S!ó!K!S)zG)K)S@¢=1AóAKASIzZPIKIS`K`SaóaKaSizkPiKiS€¢…,óKS‰zK]‰K‰S K S¡ó¡K¡S©zb]©K©SÀ¢è'ÁóÉz'ÉKÉSàKàSáóézøIéKéS¢&$ó zJ K S K S!ó@¢`!Aó`K`Saói¢6;€¢‹!ó‰¢C; K S¡ó©¢P;ÀKÀSÁóÉ¢¾^àKáóé¢Ë^K ¢Ø^ K)¢å^@KI¢ò^`Ki¢ÿ^€Kƒ7tƒšÌ‰¢ _ K£Gt£šÌÀKÃJÚÌàKàSáóáKáSã*ãêãúãšÌ K S * ê ú šÌ K S# *# â# ú# šÌ@ K@ SC JC *C JC šÌ` K` Sc šÌi Ki Si ó€ K€ S ó K Sƒ šÌ‰ K‰ S‰ ó  K  S¡ ó¡ K¡ S£ ⣠ú£ š­I© K© S© óÀ KÀ SÁ óÁ KÁ Sà ƒ3wÉ KÉ SÉ óà Kà Sá óá Ká Sé Ké Sé ó!K!S!ó!K!S!â!ú!rÈD!šÉO !z!# !K !S !K !S!!ó!!K!!S#!â#!ú#! x#!š­I)!zÑ\)!K)!S@!K@!SA!óA!KA!SC!*C!ÊyC!šÌI!z#I!KI!S`!K`!Sa!óa!Ka!Sc!šÌi!z'i!Ki!S€!K€!S!ó!K!Sƒ!*ƒ!m€ƒ!šÌ‰!zøI‰!K‰!S !K !S¡!ó¡!K¡!S£!*£!rÈD£!šÌ©!zŠ+©!K©!SÀ!KÀ!SÁ!óÁ!KÁ!SÃ!*Ã!rÈDÃ!šÌÉ!z¾aÉ!KÉ!Sà!Kà!Sá!óá!Ká!Sã!*ã!„ã!šÌé!z!#é!Ké!S"K"S"ó"K"S"*"rÈD"Ÿ†"šÌ "zÑ\ "K "S "K "S!"ó!"K!"S)"z#)"K)"S@"K@"SA"óA"KA"SC"šI"z'I"KI"S`"K`"Sa"óa"Ka"Si"zøIi"Ki"S€"K€"S"ó"K"S‰"zŠ+‰"K‰"S "K "S¡"ó¡"K¡"S£"šŒ©"z¾a©"K©"SÀ"KÀ"SÁ"óÁ"KÁ"SÉ"KÉ"SÉ"óà"Kà"Sá"óá"Ká"Sé"Ké"Sé"ó#¢Ð5#ó#K#S#šŒ #K #S #ó #K #S!#ó!#K!#S)#K)#S)#ó@#¢=1A#óA#KA#SI#KI#SI#ó`#K`#Sa#óa#Ka#Sc#º¡c#:c#ši#Ki#Si#ó€#¢…,#ó#K#Sƒ#2ƒ#šÌ‰#K‰#S‰#ó #K #S¡#ó¡#K¡#S£#šŒ©#K©#S©#óÀ#¢è'Ã#šŒÉ#KÉ#SÉ#óà#Kà#Sã#šŒé#Ké#Sé#ó$¢&$$šŒ $K $S $ó $K $S)$K)$S)$ó@$¢`!I$KI$SI$ó`$K`$Sc$šŒi$Ki$Si$ó€$¢‹!ƒ$šŒ‰$K‰$S‰$ó $K $S£$šŒ©$K©$S©$óÀ$KÀ$SÃ$šŒÉ$KÉ$SÉ$óà$Kã$šŒé$Ké$Sé$ó%K%šŒ %K %S %ó %K#%šŒ)%K)%S)%ó@%KC%šŒI%KI%SI%ó`%Ki%Ki%Si%ó€%K‰%K‰%S‰%ó %K£%º¡£%:£%š©%K©%S©%óÀ%KÉ%KÉ%SÉ%óà%Kà%Sé%Ké%Sé%ó&K&S &K &S &ó &K &S)&K)&S)&ó@&K@&SI&KI&SI&ó`&K`&Si&Ki&Si&ó€&K€&S‰&K‰&S‰&ó &K &S©&K©&S©&óÀ&KÀ&SÉ&KÉ&SÉ&óà&Kà&Sé&Ké&Sé&ó'K'S'š 'K 'S 'ó 'K 'S)'K)'S)'ó@'K@'SI'KI'SI'ó`'K`'Si'Ki'Si'ó€'K€'S‰'K‰'S‰'ó 'K 'S©'K©'S©'óÀ'KÀ'SÉ'KÉ'SÉ'óà'Kà'Sé'Ké'Sé'ó(K(S (K (S (ó (K (S#(šŒ)(K)(S)(ó@(K@(SA(óA(KA(SI(KI(SI(ó`(K`(Sa(óa(Ka(Sc(šŒi(Ki(Si(ó€(K€(S(ó(K(S‰(K‰(S‰(ó (K (S¡(ó¡(K¡(S©(K©(S©(óÀ(KÀ(SÁ(óÁ(KÁ(SÉ(KÉ(SÉ(óà(Kà(Sá(óá(Ká(Sã(šŒé(Ké(Sé(ó)K)S)ó)K)S )K )S )ó )K )S!)ó!)K!)S))zä3))K))S@)K@)SA)óA)KA)SI)z9I)KI)Sa)óa)Ka)Si)z8ei)Ki)S)ó)K)S‰)z—e‰)K‰)S¡)ó¡)K¡)S©)zñe©)K©)SÁ)óÁ)KÁ)SÃ)šÉ)zfÉ)KÉ)Sá)óá)Ká)Sé)zafé)Ké)S*ó*K*S *zÑf *K *S!*ó!*K!*S)*z0g)*K)*S@*KA*óA*KA*SI*z‘gI*KI*S`*Ka*óa*Ka*Si*zõgi*Ki*S€*K*ó*K*S‰*zfh‰*K‰*S¡*ó¡*K¡*S©*zÆh©*K©*SÀ*KÁ*óÁ*KÁ*SÉ*z(iÉ*KÉ*Sà*Ká*óá*Ká*Sé*zŽié*Ké*S+ó+K+S+šŒ +zj +K +S!+ó!+K!+S#+R#+š)+zoj)+K)+SA+óA+KA+SC+šI+zÑjI+KI+Sa+óa+Ka+Si+z)ki+Ki+S+ó+K+S‰+zƒk‰+K‰+S¡+ó¡+K¡+S©+zàk©+K©+SÁ+óÁ+KÁ+SÉ+z:lÉ+KÉ+Sá+óá+Ká+Sé+zKlé+Ké+S,ó,K,S ,z©l ,K ,S!,ó!,K!,S),zä3),K),SA,óA,KA,SI,z9I,KI,Sa,óa,Ka,Si,z8ei,Ki,S,ó,K,Sƒ,š‰,z—e‰,K‰,S¡,ó¡,K¡,S©,zñe©,K©,SÁ,óÁ,KÁ,SÉ,zfÉ,KÉ,Sá,óá,Ká,Sé,zafé,Ké,S-ó-K-S -zÑf -K -S!-ó!-K!-S)-z0g)-K)-SA-óA-KA-SI-z‘gI-KI-Sa-óa-Ka-Si-zõgi-Ki-S-ó-K-S‰-zfh‰-K‰-S¡-ó¡-K¡-S©-zÆh©-K©-SÁ-óÁ-KÁ-SÉ-z(iÉ-KÉ-Sà-Ká-óá-Ká-Sé-zŽié-Ké-S.K .zj .K .S .K).zoj).K).S@.KI.zÑjI.KI.S`.Kc.*c.rÈDc.šÌi.z)ki.Ki.S€.K‰.zƒk‰.K‰.S£.š©.zàk©.K©.SÃ.âÃ.úÃ.š­IÉ.z:lÉ.KÉ.Sà.Ké.zKlé.Ké.S/K/ƒy§ /z©l /K /S /K /S!/R#/ƒç@/¢`!C/ƒ¨`/¢‹!€/K€/S /K /SÀ/KÀ/SÃ/šÌÉ/¢6;à/ÚDà/Kã/šÌé/¢C;0K0šŒ 0¢6; 0K#0šŒ@0KC0šŒ`0Ki0¢6;€0K‰0¢C;¡0ó¡0K¡0S©0¢P;Á0óÁ0KÁ0Sá0ó1ÚD1K1ó 1K!1óA1ó`1K`1Sa1ó€1¢`!1ó1K1S 1K 1SÀ1¢‹!É1KÉ1SÉ1óà1Kà1Sé1Ké1Sé1ó2K2S 2¢6; 2K)2¢C;@2KI2¢P;`2Ki2¢¾^€2K‰2¢Ë^ 2K©2K©2S©2óÀ2KÉ2z!#É2KÉ2Sà2K3K£3š4šŒ 4K 4S@4K@4SI4ÆI4š܆`4K`4S€4K€4S4Æ4ó 4K 4S¡4ó¡4K¡4SÀ4KÀ4SÉ4š܆ 5š܆ 5ÚD 5KI5š܆i5Ki5Si5ó‰5K‰5S‰5ó©5K©5S©5óÉ5KÉ5SÉ5óé5z!#é5Ké5S 6z# 6K 6S)6z')6K)6SI6z!#I6KI6Sc6šŒi6z#i6Ki6S‰6z'‰6K‰6S©6¢6;ã6šŒé6¢6; 7š܆#7šŒ)7š܆I7š܆d7"¤7"É7š܆é7š܆ 8š܆)8š܆I8š܆i8¢6;‰8¢C;©8¢P;Ã8šŒÄ8"É8¢6;é8Ké8Sé8ó9šŒ9" 9z!# 9K 9S)9zÑ\)9K)9SD9"I9KI9SI9ói9z!#i9Ki9S„9"‰9¢6;©9¢C;É9¢P;:"@:K@:S`:¢&$€:¢`!„:"‰:š܆ :¢‹!£:šŒÀ:KÀ:SÉ:š܆à:Kà:Sä:"é:š܆;K;S ;¢6; ;K ;S$;");¢C;@;K@;SI;¢P;`;K`;Sd;"€;K€;S‰;š܆ ;K ;S©;š܆À;KÀ;SÉ;KÉ;SÉ;óà;Kà;Sé;z!#é;Ké;S<K<S <zÑ\ <K <S <K <S)<zâ\)<K)<S@<K@<SI<KI<SI<ó`<K`<Sa<óa<Ka<Si<Ki<Si<ó€<K€<S‰<K‰<S‰<ó <K <S©<K©<S©<óÀ<KÀ<SÉ<KÉ<SÉ<óà<Kà<Sé<š܆=K=S =š܆!=ó!=K!=S)=š܆D="I=š܆`= i=Ki=Si=ó€=# „="‰=K‰=S‰=ó =+ ©=K©=S©=óÄ="É=KÉ=SÉ=óá=óá=Ká=Sé=Ké=Sé=ó >K >S >ó#>šŒ$>")>K)>S)>óA>óA>KA>SI>KI>SI>ód>"i>z!#i>Ki>S‰>z#‰>K‰>S¤>"©>zG©>K©>SÉ>z'É>KÉ>Sä>"é>zŠ+é>Ké>S ?zä3 ?K ?S$?")?z!#)?K)?SI?z#I?KI?S`?ÚDi?zGi?Ki?S€?ÚlL‰?z'‰?K‰?S©?zŠ+©?K©?SÉ?zä3É?KÉ?Sé?Ké?Sé?ó @K @S @ó)@K)@S)@óI@KI@SI@ói@Ki@Si@ó‰@K‰@S‰@ó©@K©@S©@óÉ@KÉ@SÉ@óé@Ké@Sé@ó Az!# AK AS)Az#)AK)ASIAzGIAKIASiAz'iAKiAS‰AzŠ+‰AK‰AS©Az¾a©AK©ASÃA:ÃAº¡ÃAšÉAz 0ÉAKÉASéAz™éAKéASBº¡Bš Bz9 BK BS#Bº¡#Bš)Bz!#)BK)BSIBz#IBKIBSiBzGiBKiBS‰Bz'‰BK‰BS©BzŠ+©BK©BSÃBº¡ÃBšÉBz¾aÉBKÉBSãBšÌéBz 0éBKéBSCóCKCS Cz™ CK CS)Cz9)CK)CSICš܆iCš܆CóCKCS‰Cš܆©Cš܆ÉCš܆DóDKDS Dš܆)Dš܆@DK@DSIDš܆`D¢&$iDš܆€D¢`! D¢‹!ÀDKÀDSàDKàDSáDóáDKáDSEKESEóEKES EK ES@EK@ES`EK`ES€EK€ESEóEKES EK ES¡Eó¡EK¡ESÀEKÀESÁEóÁEKÁESàEKàESáEóáEKáESFKFSFóFKFS FK FS!Fó!FK!FS@FK@FSAFûAF’`FK`FSaFûaF’€FK€FSƒFâƒFúƒFšÉO©Fš܆ÉFš܆àF éFš܆G#  Gš܆ G+ )Gš܆IGš܆iGš܆‰Gš܆©Gš܆éGš܆ Hš܆)Hš܆@HÚDIHš܆iH¢6;‰H¢C;©H¢P;ÉH¢¾^éH¢Ë^ I¢Ø^)I¢å^IIš܆iIš܆‰Iš܆©Iš܆ÉIš܆éIš܆ Jš܆iJš܆‰Jš܆éJš܆!Kó!KK!KSAKóAKKAKSÉKš܆éKš܆ Lš܆)Lš܆ÉLš܆éLš܆MRMó Mš܆!MR!Mó)Mš܆AMRAMóIMš܆aMRaMóiMš܆Mó‰Mš܆¡Mó©Mš܆ÁMóÉMš܆áMóáMKáMSéMš܆ Nš܆)Nš܆INš܆iNš܆NóNKNS‰Nš܆¡Nó¡NK¡NS©Nš܆ÉNš܆OóOKOS!Oó!OK!OSIO¢6;iO¢C;‰O¢6;©O¢C;P" PK PS Pó)PK)PS)PóIPKIPSIPóiPKiPSiPóƒPš9<‰PK‰PS‰Pó©PK©PS©PóÉPKÉPSÉPóãPšŒéPz#éPKéPSQÚQúQš­I Qz' QK QS#Qâ#Qú#Qš­I)Qz#)QK)QSCQšŒIQz'IQKIQS#Rš)RK)RS)RóCRâCRúCRšÉOIRKIRSIRóiRKiRSiRó‰RK‰RS‰Ró£Rš©RK©RS©RóÉRKÉRSÉRóéRKéRSéRó S )S( IS5 iSI Tº¡TšÃUšãUâãUúãUšÉO Xš܆)Xš܆IXš܆iXš܆‰Xš܆©Xš܆ÉXš܆éXš܆Yš Yš܆#Yâ#Yú#Yš­I)Yš܆IYš܆iYš܆ƒYšÌ‰Yš܆£YÚ£Yú£Yš­I©Yš܆ÉYš܆áYóáYKáYSéYš܆ Zš܆)Zš܆aZóaZKaZS[ó[K[SC[šŒi[š܆‰[š܆¡[ó¡[K¡[S©[š܆É[š܆é[š܆!\ó!\K!\S)\š܆C\šI\š܆c\âc\úc\š­I£\ƒsÃ\ƒÚã\ƒ|]ƒH#]ƒ¥)]š܆I]š܆i]š܆€]K€]S‰]š܆ ]¢&$©]š܆À]KÀ]SÉ]š܆à]¢`!ã]âã]úã]š­I^K^S^ó^K^S ^¢‹!!^ó!^K!^S#^ƒ¾@^K@^SC^ƒ&`^K`^Sc^ƒ¿€^Kƒ^ƒ2 ^K£^ƒ¼À^KÃ^ƒ!à^K_K _K _S@_K@_S`_K`_S€_K€_S _K _S£_šÀ_KÀ_Sà_Kà_S`K`S`ó`K`S`š `K `S#`š@`K@`SA`óA`KA`S``K``Sa`óa`Ka`S€`¢&$`ó`K`S `K `S¡`ó¡`K¡`SÀ`¢`!Á`óÁ`KÁ`Sà`Kà`Sá`óá`Ká`Sa¢‹! aK aS@aK@aS`aK`aS€aK€aS aK aSÀaKÀaSÁaóÁaKÁaSàaKàaSáaóáaKáaSbKbSbóbKbS bK bS!bó!bK!bS#bR#bš@bK@bSCbš`bK`bScbš€bK€bSbóbKbS bK bS¡bó¡bK¡bSÀbKÀbSÁbóÁbKÁbSàbKàbSábóábKábSãbšcKcScâcúcšÉO cK cS@cK@cS`cK`cSccš€cK€cSƒcš cK cSÀcKÀcSàcKàcSãcšŒdKdSdšŒd" dK dS#dšŒ@dK@dSCdšŒDd"`dK`dScdšŒ€dK€dSƒdšŒ dK dS£dšŒÀdKÀdSÃdšÄd"àdKàdSeKeS$e"gógKgS!gó!gK!gSagóagKagSgógKgSágóhó!hóahóahKahShóhKhSÀhKÀhSÃhº¡Ãh:Ãhšàh¢è'ãhº¡ãhšiKiS i¢&$@iK@iS`i¢`!€iK€iS i¢‹!ÀiKÀiSàiKàiSãiâãiúãišÉOjKjšŒ jK@jKAjóAjKAjS`jKajóajKajS€jKjójKjS jK jSÀjKÀjSÁjóÁjKÁjSàjKàjSájóájKájSkKkSkókKkSkº¡k:kš kK kS!kó!kK!kS@kK@kSAkóAkKAkS`kK`kSakóakKakS€kK€kSkókKkSƒkº¡ƒkš kK kS¡kó¡kK¡kSÀkKÀkSÁkóÁkKÁkSàkKàkSákóákKákSãkâãkúãkšÉOlKlSlólKlSlšŒ lK lS!ló!lK!lS@lK@lSAlóAlKAlS`lK`lSalóalKalS€lK€lSlólKlS lK lS¡ló¡lK¡lSÀlKÀlSÁlóÁlKÁlSàlKàlSálóálKálSmKmSmº¡m:mš mK mS#mº¡#m:#mš@mK@mScmº¡cm:cmš€mK€mSmómKmS m¢Kb¡mó¡mK¡mS£mº¡£m:£mšÀmKÀmSÁmóÁmKÁmSàm¢abámóámKámSãmº¡ãm:ãmšnKnSnónKnS n¢tb!nó!nK!nS@nK@nSAnóAnKAnS`n¢banóanKanS€nK€nSnónKnSƒn:ƒnº¡ƒnš n¢Žb¡nó¡nK¡nSÀnKÀnSÁnóÁnKÁnSàn¢›bánóánKánSoKoSoóoKoS o¢¨b!oó!oK!oS@oK@oSAoóAoKAoS`o¢µb€oK€oS o¢ÂbÀoKÀoSào¢ÏbpKpS p¢Üb!pó!pK!pS@pK@pSApóApKApS`p¢ébapóapKapScpšŒ€pK€pSpópKpS p¢öb¡pó¡pK¡pSÀpKÀpSÁpóÁpKÁpSàp¢cápóápKápSqKqS q¢c#qšŒ@qK@qSCqšŒ`q¢%ccqšŒdq"€qK€qSƒqšŒ q¢2cÀqKÀqSÄq"àq¢Hcäq"rKrS r¢]c$r"@rK@rSAróArKArS`r¢jcaróarKarSdr"€rK€rSrórKrSƒršŒ r¢wc£ršŒÀrKÀrSàr¢„cáróárKárSsKsSsó s¢™c!só@sK@sSAsóDs"`s¢¦casóasKasScsšŒ€sK€sSƒsšŒ„s" s¢³c£sšŒÀsKÀsSÁsóÃsšàs¢Àcásóãs*ãsúãsâãsšÌäs"tKtStótšŒ t¢Öc!tó#tšŒ$t"@tK@tSAtóCtšŒ`t¢ãcatóctâctúctš­I€tK€tStóƒtƒm† t¢ùc¡tóÀtKÀtSÁtóÁtKÁtSàt¢Ð5uKuS u¢=1#ušÌ@uK@uSCu*CušÌDu"`u¢…,cu*cušÌ€uK€uS u¢è'ÀuKÀuSÄu"àu¢&$ãušŒvKvS v¢`!@vK@vSAvó`v¢‹!avócvšŒdv"€vK€vSvóƒvšŒ vK vS£všÀvKÃvâÃvúÃvš­IàvKwKwƒŠ wK#wƒ[Š$w"@wKCwƒ­Š`wK`wS€wK€wS„w" wK wSÀwKÀwSÃwšÌàwKàwSãwšÌäw"xKxS xK xS@xK@xSCx*CxšÌ`xK`xScxšÌdx"€xK€xS xK xS¡xó¡xK¡xSÀxKÀxSÁxóÁxKÁxSÃxšàxKàxSãxšŒyKySyóyKySy*yšÌy" yK yS!yó!yK!yS#yâ#yú#yš­I@yK@yS`yK`ySayóayKayScy2cyšÌ€yK€ySyóyKySƒyšŒ yK yS£yšŒÀyKÀySÁyóÁyKÁySÃyšŒÄy"àyKàySáyóáyKáySãyšŒzKzSzšŒ zK zS!zó!zK!zS#zšŒ@zK@zSAzóAzKAzS`zK`zSczšŒ€zK€zSzózKzSƒzšŒ zK zS¡zó¡zK¡zS£z*£zšÌ¤z"ÀzKÀzSÃz*ÃzšÌàzKàzSázóázKázSãzšŒ{K{S{ó{K{S {K {S#{šŒ@{K@{SA{óA{KA{SC{š`{K`{Sc{šŒ€{K€{S {K {S¡{ó¡{K¡{S£{šÀ{KÀ{SÃ{šŒà{Kà{Sã{šŒ|K|S|ó|K|S|šŒ |K |S#|šŒ@|K@|S`|K`|Sa|óa|Ka|Sc|º¡c|š€|K€|S |K |S£|º¡£|:£|šÀ|KÀ|SÁ|óÁ|KÁ|Sà|Kà|Sá|óá|Ká|S}K}S }K }S!}ó!}K!}S@}K@}SA}óA}KA}S`}K`}Sc}š€}K€}S}ó}K}Sƒ}š }K }S¡}ó¡}K¡}S£}šÀ}KÀ}Sà}Kà}Sá}óá}Ká}Sã}š~K~S~ó~K~S~š ~K ~S@~K@~SA~óA~KA~SD~"`~K`~Sa~óa~Ka~S€~K€~S~ó~K~S ~K ~S¡~ó¡~K¡~SÀ~KÀ~Sà~Kà~Sã~šKSšÌ" K S#2#šÌ@K@SCšÌD"`K`ScšÌ€K€Sƒ2ƒšÌ„" K S£2£šÌÀKÀSÁóÁKÁSÄ"àKàSáóáKáS㚌ä"€K€S€ó€K€S€šŒ€" €K €S!€ó@€K@€SA€óC€šŒD€"`€K`€Sa€óc€šŒ€€K€€S€ó€K€S„€" €K €S¡€ó¡€K¡€S£€šŒÀ€KÀ€SÁ€óÁ€KÁ€SÀšŒÄ€"à€Kà€Sá€óá€Ká€SKSšŒ" K S#šŒ@K@SD"`K`ScšŒ€K€SóKSƒšŒ K S¡ó¡K¡SÀKÀSÁóÁKÁSÚŒàKàS㚌‚K‚S ‚K ‚S!‚ó!‚K!‚S#‚šŒ@‚K@‚SC‚šŒ`‚K`‚S€‚K€‚S‚ó‚K‚Sƒ‚šŒ ‚K ‚S¡‚ó¡‚K¡‚S£‚šŒÀ‚KÀ‚SÁ‚óÁ‚KÁ‚Sá‚óá‚Ká‚S゚ŒƒóƒKƒSƒšŒ!ƒó!ƒK!ƒSAƒóAƒKAƒSCƒšŒaƒóaƒKaƒScƒšŒƒóƒKƒSƒƒšŒ¡ƒó¡ƒK¡ƒS£ƒšŒÁƒóÁƒKÁƒSÚŒáƒóáƒKáƒSペŒ„šŒ#„šŒC„šŒa„óa„Ka„Sc„šŒ„ó„K„Sƒ„šŒ¡„ó¡„K¡„S£„šŒÁ„óÁ„KÁ„SÄšŒá„óá„Ká„SㄚŒ!…ó!…K!…SA…óA…KA…SC…šÌ¡†ó¡†K¡†SÁ†óÁ†KÁ†Sá†óá†Ká†S‡ó‡K‡S!‡ó!‡K!‡Sc‡šÌ‡ó‡K‡S¡‡ó¡‡K¡‡SÁ‡óÁ‡KÁ‡Sá‡óá‡Ká‡SˆóˆKˆSˆšÌ!ˆó!ˆK!ˆSAˆóAˆKAˆS£ˆšÌÁˆóÁˆKÁˆSáˆóáˆKáˆSC‰šÌÁ‰óÁ‰KÁ‰Sá‰óá‰Ká‰SŠóŠKŠS!Šó!ŠK!ŠS#ŠšÌAŠóAŠKAŠSaŠóaŠKaŠSŠóŠKŠS¡Šó¡ŠK¡ŠSÁŠóÁŠKÁŠSÊšÌáŠóáŠKáŠS‹ó‹K‹S!‹ó!‹K!‹SA‹óA‹KA‹Sc‹šÌŒšÌAŒóAŒKAŒSaŒóaŒKaŒSŒóŒKŒS¡Œó¡ŒK¡ŒS£ŒšÌÁŒóÁŒKÁŒSáŒóáŒKáŒSóKS!ó!K!SAóAKASCšÌaóaKaSóKS¡ó¡K¡SÁóÁKÁSáóáKáSŽóŽKŽSAŽóaŽóŽó¡ŽóÁŽóáŽóó!óAóaócšÌ€Kó¡ó¡K¡SÁóáóóšÌ!óAóAKAS`K`Sa󀢋!ó K S¡ó£šÌÀKÀSÁóàKàSáó‘ó!‘óA‘óC‘šÌa‘ó‘ó¡‘óÀ‘¢‹!Á‘óà‘Kà‘Sá‘ó㑚Ì’K’S’ó ’K ’S!’óA’óa’ó’󃒚̡’óÁ’óá’ó“ó!“ó#“šÌA“óa“ó“ó¡“óÁ“óÓšÌá“ó”ó!”ó!”K!”Sc”šÌ•šÌ•ó•K•S㕚–š#–šC–šc–šÌƒ–š£–2£–šÌã–šŒ—2—šÌC—šŒc—šŒƒ—2ƒ—šÌ£—šŒÃ—šŒã—šŒ#˜2#˜šÌA˜óa˜óc˜šŒ˜óƒ˜šŒ¡˜ó£˜šŒÁ˜óØšŒá˜ó㘚™ó™šŒ!™ó#™šŒA™óC™šŒa™óc™šŒ™óƒ™šŒ¡™ó£™šŒÁ™óÙšŒá™ó㙚ŒšóššŒ!šó#ššŒAšóCššŒašócššŒšóƒššŒ¡šó£ššŒÁšóÚšŒášóášKášSãššŒ›šŒ#›šÌC›šŒc›šŒƒ›šÌ£›šÌ̡ۚœó£œšÌÁœó K@Kžó¡žóŸšÌÄŸ"äŸ"@ ªú†` ª^ˆ„ "  K¤ "À ªöˆà ª‰ä "¡ªB‰ ¡ÚD ¡ªh‰@¡ª‰`¡ª›‰€¡ÚD€¡ª¨‰ƒ¡šÌ ¡ª¶‰À¡ªÉà¡ÚDࡪ Š¢ªHŠ ¢ª‘Š`¢ª²Š€¢ªÅŠ ¢ªØŠ¡¢ó¡¢K¡¢SÀ¢ªêŠÁ¢óÁ¢KÁ¢Sࢪ‹á¢óá¢Ká¢S£ª‹£ó£K£S £K £S@£K@£S`£K`£S€£ªN‹ã£šÌa¤óa¤Ka¤S¤ó¤K¤S¥"!¥ó!¥K!¥SA¥óA¥KA¥Sd¥"¦ó¦K¦S!¦ó!¦K!¦SC¦šc¦šÌƒ¦šŒ£¦šŒÃ¦šÌ㦚̧ó§K§S§šÌ!§ó!§K!§S#§šC§šÌD§"c§šƒ§š£§šçš#¨šŒc¨šŒ€¨ÚD€¨ªó ¨KÀ¨ÚDÀ¨ªZŽà¨ÚDਪ›Ž©ÚD©ªéŽ©ó©K©S ©Ú` ©ªC!©ó!©K!©S@©ÚD@©ªgA©óA©KA©S`©ÚD`©ª†c©š€©ªÁ ©ÚD ©ªÀ©ÚDÀ©ª–ªóªKªS!ªó!ªK!ªSAªóAªKAªSÁ«óÁ«KÁ«Sá«óá«Ká«Sa¬óa¬Ka¬S¬ó¬K¬S¡¬ó¡¬K¡¬SÁ¬óÁ¬KÁ¬S­ó­K­S¡­ó¡­K¡­S!®ó!®K!®SA®óA®KA®SᯂÈD@°ªg•`°ÚD`°ªó€°ÚD€°ª›Ž °ÚD °ªéŽÀ°ÚDÀ°ªZŽà°Ú`à°ªC±ÚD±ª× ±ÚD ±ªg@±ªÁ`±ÚD`±ªd±"€±ÚD€±ª–a²óa²Ka²Sá²óá²Ká²S³ó³K³S!³ó!³K!³SA³óA³KA³Sa³óa³Ka³S ´Ú›C ´ª—š@´ÚD@´ªÓšÁ´óÁ´KÁ´S!µó!µK!µSAµóAµKAµSaµóaµKaµSµóµKµS!¶‚ÈDa¸óa¸Ka¸S¸ó¸K¸S ¹ÚE ¹ªVÀ¹ÚDÀ¹ªVà¹ÚE๪žºÚDºª® ºªÀ@ºÚD@ºªå`ºÚD`ºªžÁºóÁºKÁºS@½ÚD`½ÚŸ€½ÚD ½ÚeŸÀ½ÚeŸà½ÚŸ¾ÚD¾ó¾K¾S¡¾ó¡¾K¡¾SÁ¾óÁ¾KÁ¾Sá¾óá¾Ká¾S¿ó¿K¿S¿ó¿K¿S¡¿ó¡¿K¡¿SÁ¿óÁ¿KÁ¿Sá¿óá¿Ká¿SÀóÀKÀS!Àó!ÀK!ÀS¡Àó¡ÀK¡ÀSÁÀóÁÀKÁÀSàÀÚ`áÀóáÀKáÀSÁóÁKÁS!Áó!ÁK!ÁSAÁóAÁKAÁS€ÁÚD ÁÚDÁÁóÁÁKÁÁSáÁóáÁKáÁSÂKÂóÂKÂS ÂK!Âó!ÂK!ÂS@ÂKAÂóAÂKAÂSaÂóaÂKaÂSáÂóáÂKáÂSÃóÃKÃS!Ãó!ÃK!ÃSAÃóAÃKAÃSaÃóaÃKaÃSÃóÃKÃSÄóÄKÄS!Äó!ÄK!ÄSAÄóAÄKAÄSaÄóaÄKaÄSÄóÄKÄS¡Äó¡ÄK¡ÄS!Åó!ÅK!ÅSAÅóAÅKAÅSaÅóaÅKaÅSÅóÅKÅS¡Åó¡ÅK¡ÅSÁÅóÁÅKÁÅSAÆóAÆKAÆSaÆóaÆKaÆSÆóÆKÆS¡Æó¡ÆK¡ÆSÁÆóÁÆKÁÆSáÆóáÆKáÆS`ÇK`ÇSaÇóaÇKaÇSÇóÇKÇS¡Çó¡ÇK¡ÇSÁÇóÁÇKÁÇSáÇóáÇKáÇSÈóÈKÈS ÈÚD@ÈÚ¥`ÈÚ¥ÈóÈKÈS¡Èó¡ÈK¡ÈSÀÈÚDÁÈóÁÈKÁÈSàÈÚDáÈóáÈKáÈSÉÚDÉóÉKÉS ÉÚD!Éó!ÉK!ÉS`ÉÚD¡Éó¡ÉK¡ÉSÀÉÚDÁÉóÁÉKÁÉSàÉÚDáÉóáÉKáÉSÊÚDÊóÊKÊS ÊÚD!Êó!ÊK!ÊS@ÊK@ÊSAÊóAÊKAÊS`Ê¢&$aÊóaÊKaÊS€ÊK€ÊSÊóÊKÊS Ê¢`!¡Êó¡ÊK¡ÊSÀÊKÀÊSÁÊóÁÊKÁÊSàÊ¢‹!áÊóáÊKáÊSËKËS ËK ËS@ËK@ËS`ËK`ËSaËóaËKaËS€ËK€ËSËóËKËS ËK ËS¡Ëó¡ËK¡ËSÀËKÀËSÁËóÁËKÁËSàËKàËSáËóáËKáËSÌKÌSÌóÌKÌS ÌK ÌS!Ìó!ÌK!ÌS@ÌK@ÌSAÌóAÌKAÌS`ÌK`ÌSaÌóaÌKaÌS€ÌK€ÌSÌóÌKÌS ÌK ÌSÍóÍKÍS!Íó!ÍK!ÍSAÍóAÍKAÍSaÍóaÍKaÍSÍóÍKÍS!Îó!ÎK!ÎSAÎóAÎKAÎSaÎóaÎKaÎSÎóÎKÎS¡Îó¡ÎK¡ÎSÁÎóÁÎKÁÎSÏóÏKÏS¡Ïó¡ÏK¡ÏSÁÏóÁÏKÁÏSáÏóáÏKáÏSAÐóAÐKAÐSÁÐóÁÐKÁÐSáÐóáÐKáÐSÑóÑKÑS!Ñó!ÑK!ÑSAÑóAÑKAÑSaÑóaÑKaÑSÑóÑKÑS¡Ñó¡ÑK¡ÑSáÑóáÑKáÑSÒóÒKÒSAÒóAÒKAÒSaÒóaÒKaÒS¡Òó¡ÒK¡ÒSÁÒóÁÒKÁÒSÓóÓKÓS!Óó!ÓK!ÓSAÓóAÓKAÓSaÓóaÓKaÓS¡Óó¡ÓK¡ÓSÁÓóÁÓKÁÓSÔóÔKÔS!Ôó!ÔK!ÔSaÔóaÔKaÔSÔóÔKÔSÁÔóÁÔKÁÔSáÔóáÔKáÔS!Õó!ÕK!ÕSAÕóAÕKAÕSÕóÕKÕS ÕK¡Õó¡ÕK¡ÕSÀÕKÁÕóÁÕKÁÕSáÕóáÕKáÕSÖKÖóÖKÖS ÖK!Öó!ÖK!ÖSAÖóAÖKAÖSaÖóaÖKaÖS€ÖK¡Öó¡ÖK¡ÖSÀÖKÁÖóÁÖKÁÖS×ó×K×S!×ó!×K!×S`×Ka×óa×Ka×S€×K×ó×K×SÁ×óÁ×KÁ×Sá×óá×Ká×S!Øó!ØK!ØSAØóAØKAØSØóØKØS¡Øó¡ØK¡ØSáØóáØKáØSÙóÙKÙSAÙóAÙKAÙSaÙóaÙKaÙS¡Ùó¡ÙK¡ÙSÁÙóÁÙKÁÙSÚóÚKÚS!Úó!ÚK!ÚSAÚóAÚKAÚSaÚóaÚKaÚSáÝóáÝKáÝSÞóÞKÞS!Þó!ÞK!ÞSaÞóaÞKaÞSÞóÞKÞSÁÞóÁÞKÁÞSáÞóáÞKáÞS!ßó!ßK!ßSAßóAßKAßSßóßKßS¡ßó¡ßK¡ßSáßóáßKáßSàóàKàSAàóAàKAàSaàóaàKaàS¡àó¡àK¡àSÁàóÁàKÁàSáóáKáS!áó!áK!áSá’Ááóááóâó!âóAâóaâóâó¡âóÁâóáâóãó!ãóAãóaãóãó¡ãóÁãóáãóäó!äóAäóaäóäó¡äóÁäóáäóåó!åóAåóaåóåóåKåSçó!çó!çK!çSàóàóª_ÀôôªpÀ ô ôªÀ@ô@ôª“À`ô`ôÚD`ôªg€ô€ôÚD€ôª´À ô ôÚ` ôªú†ÀôÀôªÍÀàôàôÚDàôªßÀõõÚDõªóÀ õ õÚ` õªÁ@õ@õÚ`@õªÁ`õ`õª3ÁÀõªÃÂàõªÃöªAà öªuÃ@öª©Ã`öªÖÀöªÄ öª7ÄÀöªiÄàöªœÄ÷ªÂÄ ÷ªòÄ@÷ª#Å`÷ªSÅ€÷ª›ÅøªÚÇ øª È@øª™È`øªªÈ€øªäÉ øªúÉÀøª4ÊàøªcÊ úK úSÀúKÀúSûÚD ûªÌÍÀûª ÎàûªDÎüªÎ üªáÎ@üªÏ`üªNÏ€üª¹Ï üª%ÐÀüªœÐàüªãÐýª@Ñ ýªkÑ@ýª“Ñ`ýªÄÑ€ýªØÑ ýªŠÒÀýªÀÒàýª Óþª.Ó þªVÓ@þªiÓ`þª÷Ó€þªÔ þª¢ÔÀþª¬ÕàþªÖÿªÖ ÿª×@ÿªa× ÿª´×ÀÿÚDàÿª—تGÙÀÚDÚD ÚŸ@ÚE`ÚlL€ÚlL ÚDàÚDKS ÚD@ÚD@ÚDÚD ÚD` ÚDà ÚDà ÚD Ú`@ Ú`à KÀ*¢‹!à*Kà*S+K+S +K +S@+K@+S`+K€+K +Kà+K,K ,¢‹!@,K@,S`,K`,S€,K€,Sà.ÚD/Ú` /Ú``0ÚD 0ÚDÀ0ÚŸà0ÚŸ1K1S 1K 1S@1K@1S`1K`1S@2K`2K€2K 2KÀ2K@3K`3K`5ÚD`5ªéü€5ÚD€5ª÷ü 5ÚlLÀ5Ú`À5ª€ýà5Ú`à5ª¸ý6ª‰ 6ªB‰@6ÚD@6ªëý`6ÚD`6ªh‰€6ÚD€6ª¨‰ 6ª‰À6ª›‰à6ª¶‰7ªÉ@;K@;S`;ÚD<K<S <ÚD@<ÚD`<ÚlL€<ÚlLÀ<Ú`à<Ú`=Ú` =Ú`@=Ú`€=Ú`À=Ú" >Ú"€>K >KÀ>Kà>Ú¥`?ÚD€FK€FS FKÀFÚD`GÚ“ àGÚ`@HÚlL€HÚD€IÚD@KÚlL`KÚD€KÚD KÚ`ÀKÚDàKÚD LÚ`@L¢‹!`LK`LS€LK€LS LK LSÀLKÀLSàLKàLS MK MSÀM¢`!àMKàMSN¢‹! NK NS@NK@NS`NK€NK NKÀNKàNKàSÚDÀTKÀTSàT¢=1UKUS U¢…,@UK@US`U¢è'€UK€US U¢&$ÀUKÀUSàU¢`!VKVS V¢‹!@VK@VS`VK`VS€VK€VS VK VSÀVKÀVSàVKàVSWKWS WK WS@WK@WS`WK`WS€WK€WS WK WSÀWKÀWSàWKàWSXKXS XK XS@XK@XS`XK`XS€XK€XS XK XSÀXKÀXSàXKàXSYKYS YK YS`YK`YS€Y¢Ð5 YK YSÀY¢=1àYKàYSZ¢…, ZK ZS@Z¢è'`ZK`ZS€Z¢&$ ZK ZSÀZ¢`!àZKàZS[¢‹! [K [S@[K@[S`[K`[S€[K€[S [K [SÀ[KÀ[Sà[Kà[S\K\S \K \S@\K@\S`\K`\S€\K€\S \K \SÀ\KÀ\Sà\Kà\S]K]S ]K ]S@]K@]S`]K`]S€]K€]S ]K ]SÀ]KÀ]Sà]Kà]S^K^S ^K ^S@^K@^S`^K`^S€^K€^S ^K ^SÀ^KÀ^Sà^Kà^S_K_S _K@_ÚD`_ÚD@`Ú`@aÚDàaÚ`bÚ` bÚD@bÚD`bÚD€bÚD bÚDÀbÚDàbÚD cÚD cÚD dÚD@dÚDÀdÚ"àdÚlL@iK@iSàiK jKàjKàkÚDlÚD@lÚD`lÚD€lK€lS lK lSÀlKÀlSàlKàlSmKmS mK mS@mK@mS`mK`mS€mK€mS mK mSÀmKÀmSàmKàmSnKnS nK nS nK nSÀnKÀnSànKànS oÚDÀoÚDàoÚ¥pÚD pÚ¥@pÚDàpÚD qÚlL`qÚD€qÚD qÚDÀqÚDàqÚDrÚD rÚD@rÚ``rÚD€rÚD rÚ`ÀrÚDàrÚDsÚDÀtÚ`uÚD uÚD`uÚD€uÚD uK uSÀuÚ`àuÚD`vÚD€vÚlL vÚlLÀvKàvÚ`wK wÚD@wÚD`wÚD wÚDxÚD@xÚDÀ{ÚDÀ|KÀ|Sà|Ú%)}Ú` }K }S€}K }ÚlLÀ}KÀ}Sà}Kà}S ~K ~S@~K@~S`~K`~S€~K€~S ~K ~SÀ~ÚDà~ÚD€K€SÀÚD`‚K`‚S€‚K€‚S ‚K ‚SÀ‚KÀ‚Sà‡Kà‡SˆKˆS`ˆK “ª¼0@“ÚD@“ª×0`“ÚD`“ªg€“ª1 “ÚD “ª1À“ÚDÀ“ª:1à“ª[1”ÚD”ªj1 ”ªy1@”ÚD@”ª¡1`”ª¶1€”ÚD€”ªÕ1 ”ÚD ”ªá1À”ÚDÀ”ª›Žà”ÚDà”ª鎕Ú`•ªL2 •Ú` •ªu2@•ÚD@•ªó`•ªª2€•ªÇ2 •ªá2À•ª3à•ª3–ª83 –ªC3@–ªN3`–ª[3€–ªóÀ –ªg3À–ªs3à–ª€3—ÚD—ªŽ3 —ÚD —ª±3@—ÚD@—ª¿3`—ÚD`—ªÏ3€—ÚD€—ªã3 —ª4À—ª4à—ÚDà—ª&4˜ÚD˜ª/4 ˜ÚD ˜ª;4`˜K`˜S€˜Ú` ˜Ú`À˜Ú`à˜ÚlL™Ú`@™Ú``™Ú`€™ÚD ™Ú`À™Ú`à™ÚDšÚD šÚ`@šÚ``šÚlL€šÚ` šÚDÀšÚ`àšÚlL›Úž9 ›Úž9`›ÚlL€›Ú` ›ÚlLÀ›Ú`à›ÚD œÚD€Ú` Ú`žÚ`@žÚ``žÚD€žÚD@£ª¼0`£Ú``£ªg€£ÚD€£ªA £ÚD £ª9AÀ£ÚDÀ£ª1à£ÚD࣪nA¤ÚD¤ª¡1 ¤ÚD ¤ªÆA@¤ÚD@¤ªB`¤ÚD`¤ªá1€¤ÚD€¤ª›Ž ¤ÚD ¤ªéŽÀ¤ÚDÀ¤ªÕ1à¤ÚDपó¥Ú`¥ªL2 ¥Ú` ¥ªu2@¥ª83`¥ÚD`¥ªÄC€¥ÚD€¥ªþC ¥ªÇ2À¥ªC3४á2¦ª3 ¦ª3@¦ªN3`¦ª[3€¦ªóÀ ¦ªg3À¦ªs3প€3§ª¶1 §ÚD §ª™D@§ÚD@§ª¨D`§ÚD`§ª×0`¨ÚlL€¨ÚlL ¨ÚDÀ¨ÚlLà¨Ú`©Ú` ©Ú#G@©Úž9`©Ú"€©ÚlLÀ©Ú`à©Ú`ªÚD ªÚD@ªÚD`ªÚD€ªÚD ªÚDÀªÚ`àªÚ` «Ú¥ «ÚDÀ«Ú`à«ÚD¬ÚD ¬Ú`€°ªòR °ªÿRÀ°ª Sà°ªS±ÚlL±ªCS ±Ú" ±ªg•@±Ú"@±ª½S`±Ú"`±ª´À€±Ú¥€±ªú† ±ªòRÀ±ªÿR౪ S²ÚlL²ª´À ²Ú" ²ªú†@²Ú`@²ªCS`²ÚlL`²ªg•€²ÚlL€²ª½S ²ÚD ²ª¡1À²ÚDÀ²ªóà²ÚDಪU³ÚD³ª\U ³ªnU@³ÚD@³ª½S`³ªCS€³ÚD€³ªg• ³ª¼0À³ª¶1à³Ú"೪ÓU´Ú` ´ÚlL`´ª+V€´ÚD€´ªjV ´ÚD ´ªŒVÀ´ª¢Và´ª3µªÇ2 µªs3@µªN3`µÚD`µª¡1€µÚD€µªó µÚ` µªYWÀµÚ`Àµª´WàµÚ`൪X¶ÚD¶ªU ¶Ú` ¶ªªX@¶ÚD@¶ª\U€¶ÚD€¶ªá1À¶Ú`À¶ªY·ÚD·ªÕ1@·Ú`@·ªªY€·ÚD€·ªBÀ·ÚDÀ·ªÆAà·ÚDà·ªZޏÚD¸ª›Ž ¸ÚD ¸ªéŽ`¸ÚD`¸ªA ¸ÚD ¸ª9AÀ¸ÚDÀ¸ª‘[à¸Ú`สæ[¹ª.\ ¹ª“\@¹ª¨\`¹Ú``¹ªL2€¹Ú`€¹ªu2 ¹ÚlL ¹ª‰]À¹ÚlLÀ¹ªâ]à¹Ú"ºÚ" ºÚ"@ºÚ`@ºªC`ºÚ``ºªÓ^€ºÚD€ºª&_ ºÚD ºª2_ÀºÚDÀºªy_àºÚDສŸ_»ªº_ »ÚD »ªä_@»ÚD@»ª``»ª`€»ª83 »ªC3À»ªg3໪[3 ¼ÚD ¼ª™D`¼ÚD`¼ª¨D€¼ÚD€¼ª‡` ¼ª°`À¼ÚDÀ¼ªÞ`༪é`½ÚD½ªa ½ªa@½ÚD@½ª&a`½ªTa€½ÚD€½ª|a ½Ú` ½ª—aÀ½ÚDÀ½ª´Àà½Ú`ཪú†¾ÚlL¾ªÇa ¾ªnU@¾ª¨\`¾ª+V€¾ÚD€¾ªó ¾ÚD ¾ª\UÀ¾ÚDÀ¾ª¡1ྪá2¿ª3 ¿ªóÀ@¿ª€3`¿ª¶1€¿ªab ¿ªkbÀ¿ªub࿪}bÀª¼0 ÀÚD ÀªŒV@ÀÚD@ÀªÌb`ÀÚ`€ÀÚD€ÀªZŽ ÀÚD ÀªUÀÀÚDÀÀª½SàÀÚ`ÁÚDÁª‘c@ÁÚ`@ÁªYW€ÁÚ`€ÁªªX ÁÚ"ÀÁÚlLÀÁªyeàÁÚ"ÂÚ`ªX ÂÚ` ª´W`ÂÚ``ªL2€ÂÚD€Âª&_ÀÂÚ`ÀªCÃÚlLêâ] ÃÚ"@ÃÚ`@êu2`ÃÚD`ê2_€ÃÚ" ÃÚ` ÃªÓ^ÀÃÚlLàÃKÄÚlLΉ] ÄÚ`@ÄÚ`@ĪªY`ÄÚD`ĪÕ1€ÄÚD€Äªá1 ÄÚ`ÀÄÚ`ÀĪYàÄÚDàĪAÅÚDŪ9A ÅÚD ŪÆA@ÅÚD@ŪB`ÅÚD`ۛހÅÚD€Åª鎠Ū.\ÀŪ“\àÅÚDàŪ‘[ÆÚ`ƪæ[ ÆÚD ƪä_@ÆÚD@ƪ``ƪ`€ÆªC3 Æª83Àƪ[3àÆªg3 ÇÚD Ǫ™D`ÇÚD`Ǫ¨D€Çª°` ÇÚD ÇªÞ`ÀǪaàÇÚDàǪ&aȪé` ÈÚD Ȫa@ȪTa`ÈÚD`Ȫ|a€ÈÚD€ÈªjV ÈÚD Èª‡`ÀÈÚDÀȪ+VàÈÚDàȪ¡1ÉÚDɪU ÉÚD ɪó@ÉÚD@ɪ\U`ÉÚD`ɪjV€ÉÚD€Éª½S ÉÚD Éª‘càÉÚDàɪÕ1 ÊÚD ʪá1@ʪnU`ÊÚD`ʪWm€ÊÚD€Êªgm€ËÚD ËªAnÀËÚDÀ˪Lnà˪¶1̪šn ÌÚD ̪½S@ÌÚD@̪¡1`ÌÚD`̪Ìb€ÌÚD€ÌªU ÌÚD Ìªá1ÀÌÚDÀ̪Õ1àÌÚ`à̪YWÍÚD ÍÚ`@ÍÚD@ͪ›Ž`ÍÚD`ͪó€ÍÚD€Íª\U ÍÚ` Íª´WÀÍÚDÀͪZŽàÍÚDàͪ‘[ÎÚ`Ϊæ[ Ϊíq@ÎÚD@ΪÆA`ÎÚD`ΪB€ÎÚD€Îª9A ÎÚD ÎªAÀÎÚDÀΪÔràΪ¼0Ϫ+V ϪnU@ÏÚ`@ϪL2`ÏÚD`Ϫ&_ ÏÚD ÏªŒVÀÏÚDÀϪjVÐÚ`ЪÉt ÐÚ` ЪÚt@ЪÇ2`Ъ3€ÐªN3 Ðªs3ÀЪá2àЪ3ѪóÀ Ѫ€3@Ѫ1`ÑÚD`Ѫwu€ÑªÁ ÑÚ` ÑªCàÑÚDàѪ™D ÒÚD Òª¨D@ÒK`ÒÚD`Òªw ÒKÀÒKàÒªñxÓªy ÓÚD Óªcy@Óª¶y`ÓÚD`Óª6z€ÓÚD€Óª` Óª`ÀÓÚDÀÓªŸzàÓª°`ÔÚDÔªÞ` ÔªTa@ÔÚD@Ôª|a`Ôªé`€ÔÚD€Ôªa ÔªaÀÔÚDÀÔª&aàÔÚDàÔªu{ÕÚDÕªŒ{ ÕÚD ÕªÆ{@ÕÚ`@ÕªªY`ÕÚ``ÕªY€Õªab ÕªubÀÙKÀÙSàÙKàÙSÀÛKÀÛSàÛKàÛS€ÜK€ÜS ÜK ÜS@ÝK@ÝS`ÝK`ÝSÞKÞS ÞK ÞS€àK€àS àK àS@áK@áS`áK`áS@ãK@ãS`ãK`ãSäKäS äK äSÀäKÀäSàäKàäS åÚ`@åÚ` åÚD æÚD@æÚD`æÚ` èK èS@袋!`èK`èSÀèKÀèSàèKàèSïKïS ï¢&$@ïK@ïS`ï¢`!€ïK€ïS ï¢‹!ÀïKÀïSàïKàïSðKðS ðK ðS@ðK@ðS`ðK`ðS€ðK€ðS ðK ðSÀðKÀðSàðKàðSñKñS ñK ñSõÚD õÚD@õÚD`õÚ` õÚDàõÚDöÚD@öÚD`öK÷Ú` ÷ÚDàøKàøSù¢&$ ùK ùS@ù¢`!`ùK`ùS€ù¢‹! ùK ùSÀùKÀùS@ÚD઴Àª” ª”@ªª2`Ú``ªL2€Ú`€ªu2 ÚD ªá1ÀÚDÀªÕ1àÚDડ1ÚDªó ÚD ªË”@ª3`ª3€ª€3 ªs3ÀªòRàªÿRª• ª •@Ú`@ª´À`ÚlL`ªú†€ÚD€ªCS ÚlL ª‚•ÀÚ"ÀªÀ•àÚ"àªí• Ú` ªg• Ú` ª½S@ ÚD@ ª¡1` ÚD` ªU€ ÚD€ ªó  ÚD  ª\UÀ ª¢Và ª%— ÚP— ªÓU@ Ú"@ ª—a€ ÚD  ÚDÀ ÚD ÚD ÚD` ÚD€ Ú`  ÚDÀ ÚlLà ÚD ÚlL Ú`@ ÚD` ÚD€ ÚDÀ ÚDà Ú`ÚD Ú`@ÚD€ÚD Ú` ÚlL@ÚD`ÚlL€Ú` Ú`ÀÚDàÚ` ÚlL`Ú`€ÚD ÚlLÀÚ` ÚD@ÚD`ÚlL€Ú` KÀÚlLÚ` ÚD@ªgŸ`ª€Ÿ€Ú›C€ª¡Ÿ Ú›C ª´ŸÀÚ›CÀªÆŸàÚ›CàªÛŸÚ›CªæŸ Ú›C ªýŸ@ªX `ªh €ªz  ª‹ àª§ ª½  ÚD@ÚD`ÚD€ÚD ÚDÀÚDàÚDàªÚtÚDªa ÚD ªé`@ªâ €ªù  ÚD ª¡Àª*¡àª7¡  ªF¡@@ªS¡`ªo¡€ª‡¡ ª¡Àª©¡àÚD ÚD@Ú“ `Ú¢€ÚD ÚŸÀÚEàÚDÚD ÚD@ÚD@ª £`€ÚD  ÚDÀÚDààÚDÚD @@ÚD``ÚD€€ÚD  ÚDÀÀÚDàÚD ªa£@ªk£`ªu£€€ª£  ª‰£ÀÀª›£àમ£ªÀ£  ªÓ£@ªÞ£`ªç£€ª¤ K SÀKÀSàKàSKS  ª%¤@@ª8¤``ªC¤€€ªP¤  ªd¤ÀÀªx¤àતª©¤  ª¼¤@ÚD@ªá¤`ÚD`ªò¤€ª¥ ª¥Àª#¥àª/¥ÚD ªA¥@ªV¥`ªh¥€ªt¥ ÚDÀÚ`ર¥ª¹¥ ªÃ¥@ªÍ¥`ÚD`ªá¥€ªì¥ ªö¥Àªÿ¥àªwu ª ¦ ª¦@ ª¦` ª(¦€ ª;¦  ªE¦À ªN¦à ªX¦!ªa¦ !ªk¦@!ªt¦`!ÚD€!ÚD€!ªš¦`#K`#S€#K€#SÀ#K$K@$K€$KÀ$K%K@%K€%KÀ%K&K@&K€&KÀ&K'K@'K€'K 'ÚDÀ'Kà'ÚD(K (ÚD@(K`(ÚD€(K (ÚDÀ(Kà(ÚD)K )ÚD@)K`)ÚD€)K )ÚDÀ)Kà)ÚD*K *ÚD@*K`*ÚD€*K *ÚDÀ*K+Ú` +ÚlL@+Ú"`+Ú¥€+Ú%) +ÚP—À+Ú_®à+ÚÍ®,Ú`à,ÚDà.ÚD@0K 1ÚDÀ1ÚD 2ÚDÀ2ÚD€lÚD l lÚDÀlàlÚDmmª£ m mª‰£@m@mª›£`m`mª¼¤€m€mª®£ m mªÀ£ÀmÀmªÓ£àmªÞ£nnª%¤ n nª8¤@n@nªx¤`n`nª¤€nª³· nÚD nªÚtÀnÚDÀnª·ànª/¥@oÚD`oÚD€oÚD vÚD@vÚD`vÚ`€vÚD vÚ`ÀvÚDàvÚDwÚD wÚD@wÚD`wÚD€wÚD@xÚD`xÚD zKÀzKàzK {Ú`À{Ú`à{Ú`|Ú`@|Ú`€|Ú` }K@}Kà}ÚD~ÚD@~K`~ÚD ~KÀ~ÚDK ÚD`K€ÚD€›ÚDœK œK@œÚŸ Ú`@Ú``ÚDÀÚ`àÚDžÚD žÚD@žÚD`žÚD€žÚD žÚDàžÚ` ŸÚ`@ŸÚD`ŸÚD€ŸK ŸÚ1É€ ÚlL  ÚlL¡ÚD ¡ÚD@¡Ú``¡K`¡SÀ¡ÚD@¢ÚD`¢ÚD ¢ÚDÀ¢ÚDà¢ÚD£ÚD £ÚD@£ÚD`£Ú`€£Ú` £Ú`À£Ú`à£Ú`¤Ú` ¤Ú`@¤Ú`à¦Kà¦S§K§S §K §S@§K@§S`§K`§S€¨Ú" ¨ÚDà¨ÚD©Ú` ©Ú`@©ÚlL`©Ú"€©Ú¥ ©ÚlLÀ©Ú"à©Ú%)ªÚP— ªÚ"@ªÚ¥`ªÚ_®€ªÚÍ®«ÚD «ÚD@«ÚD@«ªŒÍ`«ÚD€« «€¬K ¬KÀ¬Kà¬K­K ­K@­K`­K€­K ­KÀ­Kà­K®K@±K@±S`±K`±S€±K€±S ±K ±SÀ±KÀ±Sà±Kà±S²K²S ²K ²S@²K@²S`²K`²S€²K€²S ²K ²SÀ²KÀ²Sà²Kà²S³K³S ³K ³S@³K@³S`³K`³S€³K€³S ³K ³SÀ³KÀ³Sà³Kà³S´K´S ´K ´S@´K@´S`´K`´S€´K€´S ´K ´SÀ´KÀ´Sà´Kà´SµKµS µK µS@µK@µS`µK`µS€µK€µS µK µSÀµKÀµSàµKàµS¶K¶S ¶K ¶S@¶K@¶S`¶K`¶S€¶K€¶S ¶K ¶SÀ¶KÀ¶Sà¶Kà¶S·K·S ·K ·S@·K@·S`·K`·S€·K€·S ·K ·SÀ·KÀ·Sà·Kà·S¸K¸S ¸K ¸S@¸K@¸S`¸K`¸S€¸K€¸S ¸K ¸SÀ¸KÀ¸Sà¸Kà¸S¹K¹S ¹K ¹S@¹K@¹S`¹K`¹S€¹K€¹S ¹K ¹SÀ¹KÀ¹Sà¹Kà¹SºKºS ºK ºS@ºK@ºS`ºK`ºS€ºK€ºS ºK ºSÀºKÀºSàºKàºS»K»S »K »S@»K@»S`»K`»S€»K€»S »K »SÀ»KÀ»Sà»Kà»S¼K¼S ¼K ¼S@¼K@¼S`¼K`¼S€¼K€¼S ¼K ¼SÀ¼KÀ¼Sà¼Kà¼S½K½S ½K ½S@½K@½S`½K`½S€½K€½S ½K ½SÀ½KÀ½Sà½Kà½S¾K¾S ¾K ¾S@¾K@¾S`¾K`¾S€¾K€¾S ¾K ¾SÀ¾KÀ¾Sà¾Kà¾S¿K¿S ¿K ¿S@¿K@¿S`¿K`¿S€¿K€¿S ¿K ¿SÀ¿KÀ¿Sà¿Kà¿SÀKÀS ÀK ÀS@ÀK@ÀS`ÀK`ÀS€ÀK€ÀS ÀK ÀSÀÀKÀÀSàÀKàÀSÁKÁS ÁK ÁS@ÁK@ÁS`ÁK`ÁS€ÁK€ÁS ÁK ÁSÀÁKÀÁSàÁKàÁSdl“k5n;1%n;+.>A»ò<cky~‰Œ …–Ÿ£²½±:CMgŒ•®½ÌÕêùþ#Ebp¾¹P„¬ü˜!£!¯!º!¾!Â!Í!Û!-"†"¯"k$x$†$“$ $­$¶$;%½%ó%U(d(s(‚(‘(š(*)9)Ç)*•*B-S-e-v-‡-˜-©-º-Á-.!2;2N2 7"7Q7 <Ã<==(==ó=>>¶>]?p?ˆ?¥?@C*C3CACGCYC¾CÇCÜC&DRDtDwD„D‘DE>EHE[EœE×EäEFTF^F0GBGPGYGjG«G†GÏGßG HsH‡H‘H™HºHÞHãH‰I”IøJ6KßL(MÏMÝMáMëMN KANÄNðN2P;PÐQ RaR¡RËRoSMQST-TOT–T T¯T½T)TÑTöT5U…U’UïU#VQV^VbVüVeWxWØWÜWÉWðWYX|X¨X¹X:YsY5Y•Y›YžY§YªY»YáYçYíYZ Z2ZlZuZZ“Z¥ZºZ![3[9[>[C[P[m[Æ\Ë\°_É_ï_ô_`­_-`{`€``¦`ddia*n9nFn[nhn b«`‚nßmŒn–n­n%bmmm+m7m÷m¯m»mCmrfOm[mgmsmhm‹m—mÇm£mŸinÓmëmb·nop1sÊs–tÍtÓtßtätKuuouu•u¤u©u²uÂuåuîu7v”v£vªvM¿vâvwwj|ßä€~€¬€±€¿€Ã€‚€.]¡T½Èà‚L‚M‚^‚i‚u‚~‚È‚Sƒh³ƒÕƒáƒæƒ„¬„¶„ñ„-…m…Ÿ…Å…g†p†‡‡"‡-‡1‡5‡D‡ø‡hˆqˆ‡ˆŒˆ¯ˆßˆ[ŠrЦŠôŠÆ‹Ó‹è‹ ŒŒGŒÄŒÜŒn‹—¥MÜçò#‘§‘·‘Ç‘’Î’‹“1“¯“”U”`”Ž”Á”Ì”ò”•=•s•|•­•–}–—$—c—Ï—ß—/˜˜É˜*™Ñ™Ú™õ™Hšeš­š»šìš›B›ß›ê›Tœõ›_œœ%/žLžßž Ÿ¥ŸÕw³ŸÁŸ 8¡O¡Ñ¡Ö¡ï¡3¢(w|¢±w£ £'£-£>£J£y£££é£ò£¤:¤[¤k¤¥¤o§Ý¨.©H©©©ªTª ª–¢Èªåª½w1«i««Û«·ªþ«F¬q¬ÉwЬã¬õ¬­K­“­®¬®Ò®×®ê®\¯¸¯°%°/°éHì°¨±È±æ±Ò²©³²³´)µIµÇµèµµ¶m¶w¶š¶D¶ø¶e¨¨¨=·+¸·€¸¬¹µ¹ê¹v¹!º<º²»¾»È»Ø»æ»»ñ».¼Û¼Ž½*¾U¾j¾Ü¾¿«¿CÁyÁsÂðÂÿÂ*ÃQÃ_ÅÓÃÀÃäÃòÃÄ!ÄEÄSÄxĆĬÄÜÄ Å=ÅcÅ~ũžÅÎÅØÅ8Æ©ÆîÆÇ Ç\Ç!È6ÈaȺÈÖÈZÉÑÊ%ËÌzÌ̸ÌÍl͵ÍÙÍîÍÎ]ΎΦÎõÎ3ωÏóÏ;ÐjгÐÑPÑ}Ñ¥ÑÒ›ÒçÒÓ@Ó¦Ó\Ô·Ô0ÕæÕYÖÖÖ×o×Á×>ØãØ]ÙbÙxÙŽÙ”Ù­ÙÆÙ×ÙêÙ ÚÛ&Û=ÛLÛeÛrÛxÛ‡Û£Û¬Û¸ÛÏÛÛÛáÛ3Ü@ÜUÜ[Ü|Ü·Ü)Ý2Ý;ÝEÝoÝÊÝöÝ Þ(Þ‰ÞØÞß,ß_߈ßêßûßàgàõàá.áHáWáqá{áá›áèáâ/âHâ€â!ã`ãšã´ãÉãÚãðãää›ä€åÎåßåûåæçBç_çãçúç è¼è1bêmê®ê¸ê½êJë}ëÝë÷ë2ìmìwì|ì‡ì«ì°ì¹ìÞìâìDíþíîžî#ïñTñŸñ`ò£òÒò%ó6ôIô‰ô“ôªô½ôõõ…õ•õÒõàõìõ ö1ö@öEöUö`övö÷÷×÷î÷4øŒøâøùø¦ú½úÙúûkûü!üüÿýóþûþOÿ‚ÿ¤ÿßÿöÿ;‚‡˜»åC^R„‘Ò×õcn}€Ž˜Ñ/diÇÚâðLzþoÅX­…›  •  ¼ ø è  < Y w ° }^é]e^q^¿ Ä Ï k t Î ñ ÿ Z´Öþ3È =k¸ä-1Œ–›¥¯êazŠ–©hmrw‹–ª®²·7ÏØ]Œ´è÷t«õ¼Èñg ” Þ ñ #!9!–!·!"s""–" "º#Æ#/Y$Z$f$u$Š$ %%$%3%@%W%m%r%ª%Ð%Ô%Ù%ó%& &'&B&a&Ÿ&¿&Ñ&ô&,'G'u'Ï'à' (f(}((¶(É( )J)_)m)ß)?*¬*»*++(+-+2+S+u+z+©+ë+,%,F,O,’,£,Æ,Ý,ë,ô,C-X-|--«-Ä-å-ê-.+.5.P.Z.‚.Â.Ì.Ô.ç.\/¬/¼/070E4^4—4 4Ó4ì405¡5Ì5@6_6µ67]7f7o7ˆ7 8—8¼8·9Ì9Â:O;à;<3<K<Y<<$=^=š=Ô=ô=ÿ>?S?[?ÓAäAE%ElEwEºEðEûERF@GYGNHÀHçHWI½IJcJëJöJK KK9K–K«KLcLnLyL¦LMnM‹MgN¡NÙNðN‘O¡OÏO¦PùP4QxQ½RSSiS@TKT§TÂTƒU£UöUVV7VLVwVÙVõV,WdWqW‚W¾WÙWX4X[XvX¶XÍX YYWYcY·YÏYòYZfZuZ¥Z´ZÞZ[h[š[´[ü[9\U\Ÿ\±\Ê\ø\]?]N]˜]§]í]^O^h^á^ú^[_`Â`ò`1a9aaaµaªbÕb c©cºcücXdœd¥d®dØd‹e6fcf›fÃfEgg®ghhAh€h³héi;kškìkl4lmm;mÔnõno7oWofo÷q/rSr½rÞrír4sls™sAtjt{tçtuýu8v~vwRwäwöwAx´xpyªyÄyz¬zËzóz{{Õ{¦}ë}$~-~d~\kÙâ€p€œT`“ŸþA‚˜‚É‚¬ƒ¿ƒÞƒéƒc„–„Ç„…ç…ÿ… ‡‡‡@‡k‡‡‘‡œ‡ˆÀˆɈ-‰W‰{‰‰¦‰Ò‰ Š¥‹Ï‹,‹ú‹-Œ‹:ŒŽŒ¥þ®Ž"0hûLÓe’n‘‘Ä‘gº’L’w’‹’¸’S“ˆ“—•¡•$–1—y—˜'˜/˜Z˜‚˜¸˜û˜+™{™±™Í™š^šušƒšžšßš(›_› ›œiœ{œžœ!…óžžÄžÛž6ŸDŸð 6£ž¤ë¤ަC§R§•§¤§ç§ö§9¨H¨‹¨š¨ݨì¨/©>©©©Ó©â©%ª4ª]ªï«ú«þ« ¬ ¬¬¬'¬+¬6¬A¬E¬P¬T¬_¬c¬n¬~¬”¬ª¬̬Þ¬­7­­­þ®%¯a¯´³ޝ´ª¿´ÓƵx¶+°a·‘·Û·¸7¸¬¸»¸/¹¿¹йæ¹·ºR¼e¼}¼š¼Þ½-Á9ÁRÁƒÁ›Á¯Á ÂQÂùÁ‘ÄL|æÄcۇŸÅÇ.ÇBÇGÇKǣǨÇÀǨ)ÈAÈZÈ£È§È«È»È ÉÉkÉpɶÉ%Ê9Ê`ÊyÊ¥ÊÇÊàÊË,ËYËŽËËËðËÌU̺ÌàÌ"ÍlÍyÍÍ)Î:ÎKÎ\ÎmÎÞεÏОÐwÑŠÑѰÑÃÑÖÑéÑpÒƒÓžÔ„Õ™Õ®ÕÃÕØÕíÕÖÖÀÖØuÙnÝwݛݩݸÝÅÝÕÝæÝõÝÞÞ+Þ?ÞfÞ|Þ’Þ½ÞÕÞíÞ-ßDß^ßyß~ßd6 $ & - ./01234;=?@ABCE#F$G%H&I'J(K)M.N/O0P1Q2R3S4T5U6W<X=Y>Z?[@\A]B^C_D`EaFcMdNeOfPgQhRiSjTkUlVmWnXoYqarbsctduevfwgxhyizj{k|l}m~no„s…u‡yŠ‚‹„Œ…‡“Š•Œ—˜™”š–››œ¡¢ž¤ ¥¡©¢ª£®¤¯¥·¦¸ª»«¼¬½­¿®Á¯Ì²Ñ³ÒµÓ¶Ô·Õ¹ÙºÜ»â¼å½è¾î¿ñÀóÁþÃÿÄÆÇ È É ÊËÌÍÎÐIÑJÒKÓLÔMÕOÖP×QØRÙSÚTÛUÜVÝWÞXßYàZá[â\ã]ä^å`æaçbècédêeëgìhíiîjïkðlñmònóoôpõqör÷søtùuúvûxüyý|þ}ÿ~€ƒ‰ŒŽ • — šœŸ¢d¦s§u¨v«x¯y°z±{²|³}´~µ·¸4Äƈljʒ̕ϮӯØÈÛÉÞÍââçãëåóæôçöè÷éøêùëúìüíýîþïÿñò ó ô õö÷øùúûü$CJX&]GyOz_|Ÿ~£€¶‚¹‡ºˆ¼‰½Š¾‹¿ÂÃÉ‘ð˜÷œùžú¡û¤ü§ý©*«;¬@­E®J¯Q°V±[²`³e´jµ{¶€·…¸Š¹º”»™¼ž½£¾¨¿ÇÀÙÒÜÔÝÕÞÖå×øØ ÙÚ2Û9ã:è<éKîPuRvSxT{UV„WŠX‘Y™V`k`&9I&9I&9I(eI&9I&9I>e ce Že‚ ”e‚ še‚ E§ Öe‚ åe‚ cf ˆfà žf ®fð &9 žf ¨b üf‚ gI gIpg#pg|#pg#pg|#üf‚ •gI¢gI¯gIpg#pg|#pg'pg#pg|#pg'üf‚ hI)hI6hIChIpg#pg|#pg'pg…+pg#pg|#pg'pg…+üf‚ ÔhIáhIîhIûhIiIpg#pg|#pg'pg…+pg0pg#pg|#pg'pg…+pg0üf‚ ³iIÀiIÍiIÚiIçiIôiIpg#pg|#pg'pg…+pg0pgß3pg#pg|#pg'pg…+pg0pgß3üf‚ ¾jIËjIØjIåjIòjIÿjI kIpg#pg|#pg'pg…+pg0pgß3pg9pg#pg|#pg'pg…+pg0pgß3pg9õk ûk‚ l‚ žf «m#&9#odC&9#ým—Cn—Cüf‚ cnIjnþDpnIxn‚ n Œn#‘nEpgEŒn#‘nE©o"G) {GÚo€GpI&9#p jqIuq#örIKs#Qs|#Ks#Qs|#Ws J]s Jcs‚ Ks#Qs|#Ks#Qs|#Ws J]s Jcs‚ jnÛJisçJ! JpnIpgñJrs‚ ©oeOBt›Oùd›ObxÒOKs#QsPPWsPP]s‚ pg#Ks#QsPPWsPP]s‚ pg#isçJ!PPjnCQrs‚ pnIx#”x#£x#©o"GËy Ðy$Tüf‚ %~[W%~½W7~BX%~HX³~‚ ¹~Yî~‚ ó~‚ `m#Yû~ )Y)YI#I)I4I?Iüf‚ ”II©[µIpg‚ pg‚ pg‚ pg‚ üf‚ -‚I4‚I;‚IKsIQs›OWsIKsIQsE]WsI]sE]csI‚\]Ks QsÚ]WsE]KsIQs›OWsIKsIQsE]WsI]sE]csI‚\]Ks QsÚ]WsE]‘‚‚ œ‚‚ É‚ Ý‚^ð‚²^\z¸^ÿ‚‚ ƒ‚ ƒ‚ !ƒ‚ +ƒI:ƒIJƒ_&9 Ëy M…ID($TW…©_üf‚ ý…I†I†I†IKs•`Qs›`pgaKsaQscaKs$TQs‚ Ks•`Qs›`pgaKsaQscaKs$TQs‚ üf‚ ˜†I©†I³†=b¿†I͆=bã†Iû†=b‡I‡=b!‡I-‡I:‡=bG‡IV‡=b_‡Ij‡=bv‡I„‡=b‘‡I ‡=b¨‡I²‡I‡IχIÚ‡Iï‡IˆIˆI'ˆI<ˆIOˆIdˆIvˆIŠˆIœˆI°ˆI½ˆIʈI܈IíˆIûˆ=b‰I ‰=b‰I%‰=b.‰I9‰=bF‰IU‰=b[‰Ipg$TpgØdpgØdpg$TKs$TQs‚ pg\fpg\fpg\fpg\fpgðgpgðgpgðgpgðgpgˆipgûipgûipg$Tpg$Tpg$Tpg$TKs›OQs$Tpg$Tpg$TpgØdpgØdpg$TKs$TQs‚ pg\fpg\fpg\fpg\fpgðgpgðgpgðgpgðgpgˆipgûipgûipg$Tpg$Tpg$Tpg$TKs›OQs$Tpg$T!nŒ›`D($T “ca“YtEt‡“©_EtÝ“Iõ“I‡“©_•mu:”›OC”©_F”uM”›O“”7u™”IÝ“Irs‚ “”7uüf‚ Ë•"wò•7uø•„wý•‘w–žw –«wüf‚ pg7xèõyö–z—zƒšI“”7uœC!œ‚ 4œ›O!œ‚ ˆ‚ —›Oèž½†üžå†Ÿå† Ÿå†¦½†'§If§É£…§å†›§Ô£üf‚ ‚©I©I•©Ipg#pg{Gpg¨pg#pg{Gpg¨Èoå†rs冪¨¾±}Ëű}Ëͱ}Ë×±}ËÞ±}Ëå±5‚Ë ²‡Ë ²¤Ë7²ÆËK²×˶¾ù﻾‚ À¾ðõkaüf‚ KsfôQs‚ üf‚ pgÃô,À¼ö/ÀÂö,¾Çö{À ÷ŽÀ ÷«À ÷ÀÀ ÷à ÷¾±}ˢà ÷¶ÃçþÇÃíþRÄI1Çï@ÇIÈå† È &È üf‚ Ks‚ Qs‚ WsYüf‚ &ÌÜ:ÌIPÌÜXÌIöÌ}ËýÌ}Ëm}ËÍ}Ëüf‚ _ÍIlÍþuÍI€ÍIŠÍI—ÍI¦ÍIpg_Ks$TQs$Tpg<pgÜpg$Tpg_Ks$TQs$Tpg<pgÜpg$Tüf‚ vÎI„ÎAŽÎIšÎI«ÎI¾ÎIÌÎIãÎIpg¢Ks$TQs›Opg‘Ks Qs‘Ks$TQs‘pg›Opg¢Ks$TQs›Opg‘Ks Qs‘Ks$TQs‘pg›OMÐ TÐQ YÐQ _ÐQ eÐQ ÄÒ}ËÊÒt#ÑÒz#ÜÒ#âÒ‰#¢Ó冫Ó冱Ó冺Ó$ÃÓ$ÏÓ!$ÙÓå†åÓå†ñÓå†þÓå† Ôå†Ôå†"Ôå†/Ôå†<Ôå†EÔå†PÔå†\%$`%$ZÔ+$`Ô2$hÔ2$rÔ2$|Ô2$†Ô7$“Ô7$Ô冰Ôå†ÍÔå†èÔå†þÔ%$oׂ ©Ú‚ ïu‚ tׂ yׂ ³Ú‚ ¹ÚY:Ûí(-¢å†¹¨$eŸå†ïu冪å†JÛ$QÛå†aÛå†mÛ2${Û2$ƒÛú(‰Ûú(ŽÛú(¹¨ú(ˆÜ!$ƒÛú(‰Ûú(ŒÜú(–Ý—CöÌ}ËœÝ}Ëm}Ë£Ý}Ë¬Ý ÷ÂÝ ÷ÖÝ ÷çÝ ÷ùݶ*Þ}ËÞ}ËÞ}ËÞ}Ë'Þ}Ë.Þ}Ë7Þ}Ë>Þ}ËGÞ}ËNÞ}ËWÞ}Ë^Þ}ËgÞ}ËnÞ}ËwÞ}Ë~Þ}ˇÞå†Þå†Ïåå†hÈ@èIhÈèQèI&9#isÙ…üf‚ ðJ†üf‚ 3ñI:ñIBñȉGñIpg#pg£Špg#pg£ŠñH‹•ñY‹­D£Šžñj‹­D£Š7òbŒüf‚ ðòÚùòIóÚóIóÚ%óIeø nø rø1 ø1 "ü *ü ñIúI#ñIúI#ñIúI#|#úI#úIMS³MS³MS³MS³M<´MS³MS³MS³MS³MS³MaµMS³MS³MN¶MS³MS³MS³MS³MS³MS³M"·¦]]¿‹b¿£b¿½h¿Êq¿Ùz¿çƒ¿õŒ¿•¿ž¿ §¿-°¿<¹¿K¿ZË¿jÔ¿xÝ¿ˆæ¿&9ðÃðÃM ÄM ÄM&Ä ;þÄ ;þÄ ;þÄ ;þÄ\ëÆiðÆtðƆb¿™b¿®冿öÆÓüÆðå†å†;å†^å†~å†T7å†He|•«ÎÛ&;M^w‰ŸµÐäý#:Uh{‰”®¼Óâô/NsªºÐçû 1BUg{‡˜©¹ÈÒâó$5J]n|‘¤¶ÅÜìû$Ab¹Òõ !5Qq¦¹Íßñ,<Qb~•ŸµÏèý*8IfŒ ³Ï×ìþ $ 5 I ` z ‘ « Æ Ö æ ú !#!Ñ@ÓBÕD×FÙHÛJÝOßPáQãUåmçlçvéué{ë}í…ï†ñóõŽ÷ù™ûšý›ÿœ£¤¨ « ¬ ±²³ÂÃÕØÙÛÜ!Ý#Þ%ß'á)â+ä-å/æ1ç3è5î7ò9ó;õ=ö?ACE G%I(K)M*O+Q-S/U0W1Y2[4]:_;a<c?eCgRiSkTmooqqrsvu¡w¥y¨{§{ª}­«¬´ƒµ…¶‡¾‰Å‹ÆË̑Փ֕â—ó™î›ðñŸò¡û£ý¥§© «­¯ ± ³ µ·¹»½¿ÁÃÅÇÉËÍÏÑ Ó!Õ"×#Ù$Û&Ý'ß(á*ã+å,ç-é.ë/í0ï1ñ2ó3õ4÷5ù7û9ý<ÿ=>?OH J L NVWY[\^_ab!d#f%g'i)j+µ-n/p1q3r5s7t9u;v=w?xAzC{E|G}I~KM€OQ‚SƒU„W†Yˆ[Š]Œ_Žac’e”g–i˜kšmœožq s¢u¤w¦y¨{ª}«¬­ƒ®…¯‡°‰±‹²³´‘¼“¾•À—™ěÅǟɡˣͥϧѩӫխׯٱ۳ݵ߷á¹ã»å½æ¿èÁêÃìÅîÇðÉòËóÍõÏ÷ÑùÓûÕý×ÿÙÛÝßá ã å çéëíïñóõ ÷NùPûQýRÿ[]^ef g i jknrs{~…„ˆ!‰#Š%‹'Œ)‘+- /£1¦3Ï5Ñ7Ú9Û;ç=î?ðAïAóCEGIKM4O:Q;SMUYWTYV[X][_]a_caecgeigkfkimhmlokoÒqÓsÔuÕwÖy0{G}]^dƒe…¨‡©‰ª‹N Z X ‘Y “d •c —z ™{ ›| ˆ Ÿ‰ ¡Š £‹ ¥Ú §Ü ©à «ë ­í ¯ÿ ±ü ± ³ý ³ µþ µ4 ·E ¹F »g ½d ¿e Áf Ãr Ån Ço Ép Ëq Í  Ï¡ Ñ¢ Ó£ Õ³ ר Ù© Ûª ݬ ß® á° ã² åµ ç· é¸ ëº í¼ ï¾ ñÀ ó õà ÷Å ùÇ ûÉ ýÚ ÿÍ Î Ï Ñ Ó Õ × Ù Ü Þ ß á ã ä æ ç é !ë #í %î 'ð )ò +ó -õ /ö 1ø 3 5 7 9 ; =J ?K AL CM EN Gd Ie Kf Mg Oh Qi Sj Uk Wl Ym [n ]o _p aq cu ev gw i{ k| mš o qž sŸ u  w¡ y¢ {­ }° ± ² ƒ¾ …Ò ‡Ó ‰Ô ‹Õ Ö × ‘Ø “ß •à —á ™â ›ã ä Ÿå ¡æ £é ¥ê §ë ©î «ï ­ð ¯ñ ±ò ³ó µô ·õ ¹ » ½ ¿ Á Ã Å Ç É Ë- Í. Ï/ Ñ0 Ó1 Õ2 ×3 Ù4 Û5 Ý6 ß7 á8 ã9 å: ç; é< ë= í? ï@ ñà ó õ õ ÷ ÷o ùm ùp ûn û5ý6ÿCBz| } ~ ‚„‡‰Š‹Ž—ž!Î#È%É'Ê)Ë+Ì-Í/Ý1Þ3ß5à79;x=y?{A„C…E‡G‰IŠKŒM“O”QšS›UGWjYu[€]‹_ša¥c°e»gÆiÑkômÿo qs u+w6yA{L}W¾¿ƒÀ…ƇljȋÉÊˑ͕̓ΗϙЛÑÒŸÓ¡Ô£#¥$§+©.«1­@¯g±³·µß·ì¹í»½¿ Á à Å7Ç8É9Ë:Í;ÏWÑ^Ó_Õ`×aÙbۉ݊ߋáŒãåŽçéë‘í’ï“ñ”ó•õ–÷—ù˜û™ýšÿ›œžŸ   ¡ ¢£¤¥¦§¨©ª«!¬#­%®'¯)°+±-²/³1´3µ5¶7·9¸;¹=º?»A¼C½E¾G¿IÀKÁMÂOÃQÄSÅUÆWÇYÈ[É]Ê_ËaÌcÍeÎgÏiÐkÑmÒoÓqÔsÕuÖw×yØ{Ù}ÚÛ܃݅އ߉à‹áâã‘ä“啿—ç™è›éêŸë¡ì£í¥î§ï©ð«ñ­ò¯ó±ô³õµö·÷¹ø»ù½ú¿ûÁüÃýÅþÇÿÉËÍÏÑÓÕ×ÙÛ Ý ß á ã åçéë%í0ï1ñ2ó=õ>÷?ù@ûKýLÿMNOZ[ \ ] ^_jklmnop{!|#}%~')€+-‚/1Ž357‘9’;“=”?•A CDŇ@]‡>_“’““Ž]“Œ_“–—“˜™“”›“”ž“”¢]” _›*ó›"õ›,÷›8Å›0ù›$û›2ý›]›×›.ÿ›(›&›6›4› › ›  ›¤ÊM¤ÌO¤ÈŤÐQ¤ÒS¤Ú]¤Ø_¤ÎU¤ÖW¤ÔY®ÒÅÈÅÿ´“î“ “ ° “ ® ‹ ¬  ª  ¨ ‘Ð “ “D _F ]` ób ÷f ùh ýn ×p ]d ÿl j ª —¨ ™¦ ›sn “P“P—P™P›`ì“`è—`ê™`曢|]£Š]£ˆ_ª¢]ª _«ªœ«´“«°—«²™«®›«¬¯Ê“¯Æ—¯È™¯Ä›¿ 5¿"3Â8“Â4—Â6™Â2›Â0Ã>5Ã@3Ç|“Çx—Çz™Çv›ÈŠ“È†—Ȉ™È„›È‚Ë®“˪—ˬ™Ë¨›Ë¦ÏÊ“ÏÆ—ÏÈ™ÏÄ›ÐÖ“ÐÒ—ÐÔ™ÐЛÓì“Óè—Óê™Óæ›Ôø“Ôô—Ôö™Ôò›Õ “Õ —Õ ™Õ ›Õ Ö “Ö —Ö ™Ö ›Ö × “× —× ™× ›ù#“ùþ"—ù#™ùü"›ùú"J#]`#]v#] Œ#] ¢#]¸#]Î#]ä#]ú#]$],$]!H$]#Z$]%l$]'~$]³'“³'—³'™³'›³þ&3L*]6^*_6`*a7d*_7f*a8j*_8l*aRZ,2,R^,0,R`,4,St,2,Sx,0,Sz,4,T,2,T”,0,T–,4,U®,2,U²,0,U´,4,VÎ,2,VÒ,0,VÔ,4,Wð,2,Wô,0,Wö,4,X-2,X-0,X-4,Y:-2,Y>-0,Y@-4, *9]g†œªºÌàçï÷ÿ&3;BP_zƒ‹“›ª³ÂÑÛêú'>Hox†”¨±ºÈ׿ðû,<DYj}Œ›ÀÝô)8FVdt…š©³Â×ëû.BUi}Œ¥Ãá $-7DQ^iuˆœ§°¹ÐÚãò+H\uŠžª¶ÅÕëû6B[ly›¿Çìö   ) 8 D N g p ˜ Á É Ñ Û ë ý   + 6 H [ e x £ ¼ Ð Ø è ô  ( 2 A L U i | „ ˜   © ² Ã Í á ÷   4 K a ‚ Ž › « ¹ É à ñ û  - E X t | ‹ š £ · Ð ô ';BNVas~†Ž¥­¸ÂÌØàèñùÿ'-6>DMU[dlr{ƒ‰’š ©±·ÀÈÎÖÝãëòø $.6>FNV^js„•ž¦®¸ÀÈÐáòþ$CSy‹’™ §®µ¼ÃÊÑØßæíö  )9BK¬ü3™ÅáùÇÚ=k~‹FN\Š˜«æú)†ÎB!m!€"ƒ"Ö#í#$3$O$º%l'‡'¢'Â'õ'(5(Ä)ß+þ+,<,[,’,¶,Ú,þ,¾-`0ƒ0¦0É0ì01J1r1š1Â1ê1U44É45=5w5ž5Ý5 656a66¹6‹9Ë9 :K:‹:Ë: ;G<s<Š<¯<¹<Ð<å<ö<<=U=h=r=5>R>g>q>>Ç?è?ÿ? @*@R@IApAA°AôAEB£BC¬C!E)E‹F(GbGœG¡HôHIcI¢JÄJKõK¢LøLMöMÿM\N|N“NÛNlOvOÜOðOQ0QVQ“QåQùQoR™RôR"STBT´TòTNUV VFVñVjW…WÎW XgXoX±XÛXZ&ZÂ_Énôn ooo1oBoZo|o†o¢oÁoÊoéopp3p=pNp¶qs#sÇstktUuhuûuv#v0vŒvµvúvÚwZxíy!zœz¯z×z,{Ã{Ö{ð{1|R|“|ö|J}¨}~~&~ˆ~2t€Ü€é€ñ€ù€u}‡š­Ñ“‚ ƒ3ƒnƒˆƒüƒ#„I„Q„x„™„¿„DŽڄâ„%…Q…Y…­…W‡m‡†‡”‡¢‡¬‡º‡Ì‡mˆ–ˆˆ ˆØˆ!‰Ñ‰õ‰Š8Š9‹Z‹{‹’‹š‹²‹º‹Ü‹*Œ8Œ¨Œ²ŒïŒ]‰ºüŽfŽ§Ž¯ŽøŽ•Ï -T¾ý‘‘‘`‘j‘„‘בæ‘õ‘Q’[’o’w’š’Æ’ ““?“e“r“|“§“Ú“ÿ“””I”k”|”†”µ”ה蔕• •‡••æ•9–[–Ï–/—7—í—ü— ˜€˜ˆ˜Ò˜Ú˜™™¥™¯™·™¿™Ç™ë™ šš#š+š<šSš]š÷š1›c›»›.œ6œcœîö3žxžñžÊŸÝŸåŸíŸõŸ\ Ž ª Æ Þ ¡*¡w¡¡•¡¯¡¢¢#¢X¢t¢Ÿ¢´¢¼¢Ñ¢Ù¢î¢ö¢ £Á£û£¤ ¤³¤;¥C¥K¥`¥ƒ¥«¥ä¥¦\¦d¦ˆ¦¿¦È¦§H§n¨Š¨¦¨]©|©•©‡ªÀªÕªÝªíª«:«B«J«Y«•«¿«É«Ó«å«ï«*¬a¬i¬‚¬»¬í¬­.­6­>­o­‹­ ­©­Ã­è­ ®*®B®V®e®¯l¯€¯¯™¯¢¯¬¯ä°*±Z±b±j±±±¹±Á±²R²t²ø²³C³`³³Å³â³ì³þ³´´}´±´ä´î´ö´þ´!µ=µÑµßµ|¶Š¶5·\·q·y··›·¼·Ä·Ì·Ô·¸C¸x¸¦¸É¸Ñ¸Ü¸¹ ¹¹E¹Q¹`¹¹’¹š¹¢¹À¹Ê¹Ò¹Ú¹â¹pº°ºóº&»S»[»c»‚»¨»ú»¼¼!¼ˆ¼ž¼¦¼®¼¶¼ó¼½O½W½o½Å½á½ ¾±¾Ò¾ê¾ò¾ÿ¾J¿T¿m¿w¿‹¿“¿›¿£¿¼¿Ð¿Ø¿ì¿ô¿ü¿À"ÀIÀQÀhÁBÂdÂøÂ#ÃXÌùÃëÃÄLÄÄÕÄÅ6ÅmÅvÅêÅþÅ ÆÆ&Æ/Æ ÆÇ)Ç5ÇFÇ>ÈRÈôÈÉ%ÉBÉæÊËåËíËüȨ̛̈ÌåÌôÌCÍUÍTÎ+ÏdÏtÏÌÏÝÏMÐYÐõÐÑìÑÒÐÒÙÒ}ÓÓ'Ô?ÔÎÔäÔõÔÕÁÕÑÕ.ÖAÖ¯ÖÀÖØ&جØÅØpÙ¤ÙUÛ¡ÜûÜWÝ_ÝgÝ8Þtß&àSàþàµáXâ:ãäCä|äcæ×æ7èŒèdêÅëÎëüë(ìòìûìîWï@ókó>õÿõhööö÷5÷=÷L÷`÷o÷y÷DøZøiø}ø?ù|ùØùâùúúŒú•úVü±üýÌýþ,þ4þ„þŽþ6ÿÔÿ¦ÄØ l€?±Äêñþz£s,:r{‚;  ¾ ç h ¨ ²  # - i ¤ › ¯¾#0Q¹ÏØá´ÌÞóç?Å*‚¥ý6>\fŽ–þ)2– Èé+ è 0!¬!û!"#²#Ï#W$O&’'œ'ñ'(v(¬)Ì)è)*/*7*U*m*Ÿ*Ñ*ù*K+ ,,µ-r.–.«.´.O/¤/Q0X0a0k0v0‚00N4V4t4Ü4·5P6x7€7Ñ7î788T9h:~:à:ý:;.;­;Ð;Ø;g<t<Þ<=¨=µ=ê>-?…?¹?Á?É?æ?ÿ?@;@C@P@X@…@¡@Ö@ÜA‘BÁBC6C@C{CÑCßDüDEE?EŸFÄFÔHK%K/K¡K„LŽL˜L|M&NåN\O±OÀO@PƒPPDQSQ¢QÕQùQ$R.RURR™R£R&SüS²TzU V=VAVWvWÌW)XiXÂX5YÀYnZ­ZÒZ¨[ð[F\¾\]\^î^B_²c²dºdÈdÐdƒeÀl‹mËmûmXntn¬n_oœoâoLplppËpqKq‚q‰qÓq›rærÄsîs uAuUu…uÇuÆvw5wAw˜w¡wXx…x¬xüxyyyÍyÕyFzPzXzK{„{–{|B|V|^||‹|’|Ê|Ö|Ý|ø|}9}U}v}}š}Æ}Õ}Ý}ô}þ}~~=~|~„~Œ~”~œ~¯~í~÷~TŒ”°ðø €:€b€›€¥€¯€Ù€>F{…«µÌð ‚‚7‚P‚^‚h‚p‚¹‚Á‚тق ƒaƒ€ƒµƒõƒýƒ„O„p„„Ù„E…M…n…ï…÷…B†]†e†ã†ö†‡‡6‡O‡]‡¨‡»‡LJчí‡õ‡ˆ!ˆ8ˆ@ˆPˆrˆ|ˆ„ˆ›ˆãˆòˆúˆ‰‰`‰h‰Û‰ã‰ë‰ýŠ‹5‹®‹ç‹%ŒkŒsŒ†Œ ŒÁŒ÷Œ?k˜ÊLŽ„ŽÙŽæŽ9A —Ëò ‘‘:‘F‘M‘W‘f‘…‘Ÿ‘µ‘ç‘ý‘’5’?’o’—’¢’ß’““&“8“K“_“j“¶“Ù“á“•_•c–›–ë–—§—±—Ý—ñ—ù—˜>˜Ò˜™ç™‘šR›UœœtΞz¢»¢Ƥ€¥–¥~¦†¦º¦ƦЦå¦ñ¦"§n§u§À§ǧ¨¨d¨k¨¶¨½¨©©Z©a©¬©³©þ©ªPªWª}ª„ª¢ªªªïª1«9«ƒ«Ë«Ò«¯:¯Y¯l¯t¯|¯„¯ ¯¨¯°¯¸¯À¯ȯЯÙ¯á¯é¯ó¯û¯° °°°#°N°]°o°ð²ø²³ ³6³@³_³t³|³„³Œ³”³œ³¤³¬³ô³ü³´ ´´´$´,´4´O´m´w´µ´ß´é´ñ´ù´µ µµµ!µ)µ1µ9µAµIµQµYµlµ€µˆµµ˜µ µ¨µ°µ¾µ¶&¶.¶6¶>¶F¶Z¶d¶n¶’¶š¶¢¶ª¶²¶º¶¶ʶÒ¶Ú¶â¶ê¶ò¶ú¶· ···5·Q·Y·‰·«·ó·+¸^¸j¸v¸ϸ⸹€¹޹œ¹ºº>ºXº…ºc»¤»æ»ö»¼¼¼Ó¼ÿ¼½L½m½£½ó¾¿¿À%À¶ÀÍÀÕÀéÀ ÁáÁéÁñÁÂ-Â9ÂE„’ ®¼ÂÊÂØÂæÂòÂþ ÃÃ$Ã0Ã<ÃHÃTÃ`ÃlÃxÄÃÃúÃÄÄ8ÄJÄXÄfÄnĉÄÞÄÅÅ-Å;ÅIÅWÅʼnŕūŷÅÁÅÍÅÝÅéÅóÅÿÅ ÆÆÆ+Æ;ÆGÆQÆ]ÆgÆsÆ}ƉƓƟƩƵƿÆËÆÕÆáƯȲȵȸȗÊËÊ›ÌqÍ~ΎΞήξÎÎÎíÑÿÑÒ#Ò5ÒGÒYÒ˜Ô›ÔÖ/ÖCÖWÖkÖÖ“Ö§ÖrÙ¬Ú´Ú¼ÚÆÚâÚîÚÛ!ÛJÛZÛhÛ•Û§Û·ÛÜtÜ·ÜÝUÝ]݃ÝTÞyÞ©ÞÒÞß*ߒ߀ ÀK`5'‘b      >=?=@=A=B=DCECFCGCHCICJCLKMKNKOKPKQKRKSKTKVUWUXUYUZU[U\U]U^U_U`Ubacadaeafagahaiajakalamanapoqorosotouovowoxoyozo{o|o}o~o†…ˆ‡‰‡Š‡–•—•˜•™•š•Ÿž ž¡ž¢ž£ž°¯±¯²¯³¯´¯µ¯¶¯¸·¹·º·»·¼·½·¾·ÅÄÆÄÇÄÈÄÉÄÊÄËÄÌÄÍÄÏÎÐÎÑÎÒÎÓÎÔÎÕÎÖÎ×ÎØÎÙÎÚÎÛÎÜÎÝÎÞÎßÎàÎáÎâÎãÎäÎåÎæÎçÎèÎéÎêÎëÎìÎíÎîÎïÎðÎñÎòÎóÎôÎõÎöÎ÷ÎøÎùÎúÎûÎ !"#$%&'()*+,.-/-0-1-2-3-4-5-6-7-98:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8ONPNQNRNSNTNUNVNWNXN[Z\Z]Z^Z_Z`ZaZbZcZedfdgdhdidjdkdldmdndodpdqdrdsdtdvuwvxvyvzv{v|v}v~uu€uu‚uƒu„u…u†u‡uˆu‰uŠu‹uŒuuŽuuu‘u’u“u”u•u–u—u˜u™ušu›uœuŸž ž¡ž¢ž£ž¤ž¥ž¦ž§ž¨ž©žªž«ž¬ž­ž®ž¯ž°ž±ž²ž³ž´žµž¶ž·ž¸ž¹žºž»ž¼ž½ž¾ž¿žÀžÁžÂžÃžÄžÅžÆžÇžÈžÉžÊžËžÌžÍžÎžÏžÐžÑžÒžÓžÔžÕžÖž×žØžÙžÚžÛžÜžÝžÞžßžàžážâžãžäžåžæžçžèžéžêžëžìžížîžïžðžñžòžóžôžõžöž÷žøžùžúžûžüžýžþžÿžžžžžžžžžž ž ž ž ž ž !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’‘“‘”‘–•—•™˜š˜›˜œ˜˜ž˜Ÿ˜¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ¯®°®±®²®³®´®µ®¶®·®¸®¹®º®»®¼®½®¾®¿®À®Á®Â®Ã®Ä®Å®Æ®ÉÈÊÈËÈÌÈÍÈÎÍÏÈÐÈÑÈÒÈÓÈÔÈÕÈÖÈ×ÈØÈÙÈÚÈÛÈÜÈÝÈÞÈßÈàÈáÈãâäãåãæãçãèãéãêãëãìãíãîãïâðïñïòïóïôïõïöï÷ïøïùïúïûïüïýâþýÿýâ      !"#$%'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&BACADAEAHGIGJGKGLGMGNGOGPGQGRGTSUSVSWSYXZX[X]\^\_\`\bacadaeafagapoqoroutvtwtxtytzt{t|t}t~tt€tt‚tƒt„t…t†t‡tˆt‰tŠt‹tŒttŽttt‘t’t“t”t•t–t—t˜t™tšt›tœttŸž ž¡ž¢ž£ž¤£¥£¦ž§ž¨ž©žªž«ž¬ž­ž®ž¯ž°ž±ž²ž³ž´ž¶µ·¶¸¶¹¶º¶»¶¼¶½¶¾µ¿µÀµÁµÂµÃµÄµÅµÇÆÈÆÉÆÊÉËÆÌÆÍÆÎÆÏÆÐÆÑÆÒÆÓÆÔÆÕÆÖÆ×ÆÙØÛÚÜÚÞÝßÝàÝáÝæåçåèåéåíìñðòðóðôðõðöð÷ðø÷ù÷ú÷û÷ü÷ý÷þ÷ÿ÷÷÷÷÷÷÷÷÷÷ ÷ ÷ ÷ ÷ ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ ÷!÷"÷#÷$÷%÷&÷'÷(÷)÷*÷+÷,÷-÷.÷/÷0÷1÷2÷3÷4÷5÷6÷7÷8÷9÷:÷;÷<÷=÷>÷?÷@÷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÷[÷\÷]÷^÷_÷`÷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÷{÷|÷}÷~÷÷€÷÷‚÷ƒ÷„÷…÷†÷‡÷ˆ÷‰÷Š÷‹÷Œ÷÷Ž÷÷÷‘÷’÷“÷”÷•÷–÷—÷˜÷™÷š÷›÷œ÷÷ž÷Ÿ÷ ÷¡÷¢÷£÷¤÷¥÷¦÷§÷¨÷©÷ª÷«÷¬÷­÷®÷¯ð°ð±ð³²µ´¶´·´¸´¹´º´»´¼´½´¾´¿´À´Á´Â´Ã´Ä´Å´Æ´ÈÇÉÇÊÇËÇÌÇÍÇÎÇÏÇÐÇÑÇÒÇÓÇÔÇÕÇÖÇ×ÇØÇÙÇÚÇÛÇÜÇÝÇÞÇßÇàÇáÇâÇãÇäÇåÇæÇçÇèÇéÇêÇëÇìÇíÇîÇïÇðÇñÇòÇóÇôÇõÇöÇ÷ÇøÇùÇúÇûÇüÇýÇþÇÿÇÇÇÇÇÇÇÇÇÇ Ç Ç Ç Ç ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ Ç!Ç"Ç#Ç$Ç%Ç&Ç'Ç(Ç)Ç*Ç+Ç,Ç-Ç.Ç/Ç0Ç1Ç2Ç3242526272829Ç:9;Ç<Ç@?A?B?C?D?E?F?G?H?I?J?Â`zjgzmg|jg|mg~jg~mg€jg€mg‚jg‚mg„jg„mg†jg†mg†hˆjgˆmgˆhŠjgŠmgŠhŒjgŒmgŒhŽjgŽmgŽhjgmgh’jg’mg’h”jg”mg”h–jg–mg–h–Ñh˜jg˜mg˜h˜ÑhšjgšmgšhšÑhœjgœmgœhœÑhžjgžmgžhžÑh jg mg h Ñh¢jg¢mg¢h¢Ñh¤jg¤mg¤h¤Ñh¦jg¦mg¦h¦Ñh¨jg¨mg¨h¨ÑhªjgªmgªhªÑhª°i¬jg¬mg¬h¬Ñh¬°i®jg®mg®h®Ñh®°i°jg°mg°h°Ñh°°i²jg²mg²h²Ñh²°i´jg´mg´h´Ñh´°i¶jg¶mg¶h¶Ñh¶°i¸jg¸mg¸h¸Ñh¸°iºjgºmgºhºÑhº°i¼jg¼mg¼h¼Ñh¼°i¾jg¾mg¾h¾Ñh¾°iÀjgÀmgÀhÀÑhÀ°iÂjgÂmgÂhÂÑh°i»jÄjgÄmgÄhÄÑhİiÄ»jÆjgÆmgÆhÆÑhưiÆ»jÈjgÈmgÈhÈÑhȰiÈ»jÊjgÊmgÊhÊÑhʰiÊ»jÌjgÌmgÌhÌÑh̰iÌ»jÎjgÎmgÎhÎÑhΰiλjÐjgÐmgÐhÐÑhаiлjÒjgÒmgÒhÒÑhÒ°iÒ»jÔjgÔmgÔhÔÑhÔ°iÔ»jÖjgÖmgÖhÖÑhÖ°iÖ»jØjgØmgØhØÑhذiØ»jÚjgÚmgÚhÚÑhÚ°iÚ»jÜjgÜmgÜhÜÑhܰiÜ»jÞjgÞmgÞhÞÑhÞ°iÞ»jÞòkàjgàmgàhàÑhà°ià»jàòkâjgâmgâhâÑhâ°iâ»jâòkäjgämgähäÑhä°iä»jäòkæjgæmgæhæÑhæ°iæ»jæòkèjgèmgèhèÑhè°iè»jèòkêjgêmgêhêÑhê°iê»jêòkìjgìmgìhìÑhì°iì»jìòkîjgîmgîhîÑhî°iî»jîòkðjgðmgðhðÑhð°ið»jðòkòjgòmgòhòÑhò°iò»jòòkôjgômgôhôÑhô°iô»jôòköjgömgöhöÑhö°iö»jöòkøjgømgøhøÑhø°iø»jøòkújgúmgúhúÑhú°iú»júòküjgümgühüÑhü°iü»jüòkmwmm m mmmmmmmmm q"q"!q$m&m(m*?s*Ds,?s,Ds.?s.Ds0?s0Ds2?s2Ds4?s4Ds6?s6Ds8?s8Ds<m>m@mBmDmFmHmJmPjgPmgTqVqV!qXm‚-…‚6…‚=…‚wm„-…„6…„=…„wm„F…úmmmmmmo o&?s(?s*?s,?s,Ds.?s.Ds0?s0Ds2wm8m:m:wm<wm<m>m>wm@wm@mBmDmFmFwmHwmHmJmLmNmPmTmVmV®¡V·¡XmX·¡X®¡\m^m^wm`mbmdmdwmfmfwmhmjmlmnmn®¡n·¡°m³m¶Â`¸Â`ºÂ`ÂmÃ`mÅ`mÅgmÇ`mÇgmÇnmÉ`mÉgmÉnmÉumÊÂ`ËmÍmÍwmÏmÏwmÑjgÑmgÑwmÓjgÓmgÓhÓwmÕjgÕmgÕhÕÑhÕwm×jg×mg×h×Ñh×°i×wmØÂ`ÚÂ`ÜÂ`ÞÂ`àÂ`âÂ`äÂ`æmèmìmîmðmòmômömømúmÂ`Â` Â` Â`Â`“tÂ`“tÂ`“tÂ`Â`Â`Â`Â`Â` Â`"Â`$Â`&Â`(Â`*Â`.m2Â`4Â`6Â`8Â`HÂ`JÂ`JmLmNmPmRmSÂ`TmVmXmZm\mxmzm|m~m€m‚m„m†mŠmŒmŽmm”m–m˜]™š]™šc™œ]™œc™œi™žm m¢m¤Â`¤m¦m¨mª‹™ªm¬‹™¬m®m°m°‹™²m²‹™´‹™´m¸m¸‹™ºmº‹™¼m¾mÀmÂmÄmÆmÈmÌmØmÚmÜmèoìmîmîoïÂ`ðmðoòmômôoöm÷Â`ømøoù€túoüoý“tþoÿ“toooo o o^Â`^“t…Â`wm,Â`,“t.Â`.“tFwmHwmLÂ`L“tTwmŠ/¡Š“tŠ[cŒ“tŒ[cŒ/¡ž“t¤[c¦“t¦[c¸/¡¸ ¢º/¡6…>q@!qBqB!qDqD!qFmHmJmˆjgˆmgÂ`’Â`”Â`–m˜mšmœmžm Â`¢Â`¤Â`¨m¨Â`ªmªwm¬m®m²?s²m´?s´m¶?s¶mºÂ`º“t¼Â`¼“t¾?s¾DsÀÂ`À“tÄ?sÄDsÆ?sÆDsÈ?sÈDsÊDsÊ?sÌ?sÌDsÎ?sÎDsêmì“tìÂ`îmðmò“tòÂ`ô[côÂ`ô“tömømøwmúmúwmüjgümgüwmþmþwmjgmgjgmghmm“tÂ` m mmmmm6…mmmmm m ?s"m"?s$m$?s&m&?s(m*m*?s,m,?s.m0m0?s2?s4?s4m6m8m:m>m@mBmDwmFmHmJmL“tLÂ`NmNwmPmTmVmVwmXmZwmZmZÇí\m\wm^m`mbmd!qfqf!qhqh!qlmnmpmrmtmvmxmzm|m~m€m‚m„m†mˆmŠmŽmm–m˜“t˜Â`š“tšÂ`œ[cœÂ`œ“tžwmžm m¢“t¢Â`¤wm¦wm¨wm¨Â`ªm¬m®m²m¶m¸m¼m¾mÀmÂmÌwmÌmÎwmÎmÐmÒmâjgâhâmgähäjgämgæmèmè¨ûêmìmòmômömø6…ømúmDmFmHmH¨ûJmJ¨ûPmPwmRmRwmTmXm\m`mdmhmlmpmtmvmzm~m€m„m‡mˆmŠmŽm’m“m”m”wm˜m˜wm™mšmšwmžmžwm m wm¢m¦mªm¬m°m´m¶mºm¾mÀmÄmÈmÊmÎmÒmÔmØmÜmàmämèmìmðmômömúmþm m m m m wm m wm m wm m m m m" m& m( m) m+ m, m- m/ m/ wm0 m1 m1 wm2 m5 m6 m7 m9 m: m; m< m@ mD mE mF mJ mN mO mP mQ mT mU mV mY mZ m[ m\ me mf mg mi mj jgj mgj wmk ml mgl wml jgm ]™m mn jgn mgn wmo ]™o c™o mp jgp mgp hp wmq ]™q c™q i™q mr mgr hr wmr jgs mt jgt mgt ht wmu ‹™u mv jgv mgv hv wmw mx jgx mgx hx Ñhx wmy ]™y mz jgz mgz hz Ñhz wm{ ]™{ c™{ m| jg| mg| h| Ñh| wm} ]™} c™} i™} m~ jg~ mg~ h~ Ñh~ wm m€ mg€ h€ Ñh€ wm€ jg m‚ jg‚ mg‚ h‚ Ñh‚ °i‚ wm„ mg„ h„ Ñh„ °i„ wm„ jg† jg† mg† h† Ñh† °i† wm‡ mˆ jgˆ mgˆ hˆ Ñhˆ °iˆ wm‰ mŠ jgŠ mgŠ hŠ ÑhŠ °iŠ wm‹ mŒ jgŒ mgŒ hŒ ÑhŒ °iŒ wm m m’ m— m² m´ m¶ m¸ m¹ Â`º m» Â`¼ m½ Â`Ä mÆ mÇ mÈ mÉ mÊ mÊ wmÊ `mÌ “tÌ [cÎ Â`Î “tÎ [cÐ Â`Ð “tÐ [cÒ “tÒ [cÔ Â`Ô “tÔ [cí ï ð mð wmð `mñ ò “tò [có ô Â`ô “tô [cö Â`ö “tö [cø “tø [cù mú Â`ú “tú [cû mÿ   m ?s Ds m oŸ m oŸ m m m wm m m m m wm `m m “t [c m Â` “t [c m Â` “t [c m “t [c! m" Â`" “t" [c# m' m) m+ m- m/ m1 m9 m> m> wm> `m@ “t@ [cB Â`B “tB [cD Â`D “tD [cF “tF [cH Â`H “tH [ct m€ m€ wm‚ m‚ wm„ m„ wm† m† wmˆ m‰ m‰ wmŠ mŠ wm‹ wmŒ mŒ wm m wmŽ jgŽ mgŽ wm m jg mg h wm‘ m’ jg’ mg’ h’ Ñh’ wm“ wm“ m” jg” mg” h” Ñh” °i” wm• m— m™ m› m m ®¡ ·¡¤ jg¦ jg¦ mg¨ jg¨ mg¨ hª jgª mgª hª Ñh¬ jg¬ mg¬ h¬ Ñh¬ °i® jg® mg® h® Ñh® °i® »j° jg° mg° h° Ñh° °i° »j° òk² jg² mg² h² Ñh² °i² »j² òk² ¤/ m m wm ‹™ m ‹™ m ‹™ m wm ‹™ wm m ‹™ m ‹™ m ‹™ ‹™ m {¢ m ¢ m ®¡ ·¡ ‹™¥ m§ m× mÛ mÝ Â`ß mã Â`ç m Â` Â` Â` Â`! m# m% my Â`{ Â`… Â`‡ Â`‰ Â`‹ Â` Â` “t Â` “t‘ Â`“ Â`• Â`— Â` m Â`¡ Â`£ Â`e me Â`g mk mo mq ms ms Â`u ‹™u mu Â`w oy o{ o{ m} o o?mAmCmEmGmImKmMmOmQmSmUmWm¡“t£Â` mÂ`Â`emumwÂ`“tÂ`—Â`—“t›Â`Â`×mïÂ`ñÂ`óÂ`Â`“tÂ`“t Â` “t Â` “t Â` “tÂ`“tWwmWmYwmYm[Â`[“t[[c]wm]m_wm_mamcmcwmemgmimkmmmomqm©Â`ï[cï“tñ“tñ[cñ/¡ó“tó[có/¡õ“tõ[cõ/¡÷“t÷[c÷/¡÷Â`gÂ`{Â`“tƒÂ`…Â`‡Â`‡“t£“t©“t©[c¯/¡¯ ¢±/¡µÂ`¿mÁmÃm÷Â`CmEmKÂ`K€tMÂ`M€tOmO6…‹mmm‘m“m§m©m«m­m³m•Â`3m5m7m9m;m=m?mAmCmEmGmImKmMmOmQmQ6…SmS6…UmUwmWmYm[m]m_mamcmemgmimkmmmomqmsmumwmym{m}mmmƒm…Â`‰Â`‹Â`mÂ`‘m“Â`•m—m™Â`›Â`›“tÂ`“tŸÂ`¡Â`£Â`¥Â`§Â`©Â`«Â`­Â`¯Â`±Â`³Â`µÂ`·m¹m»m½m¿Â`ÁmÃÂ`ÅmÇÂ`ÉÂ`ËÂ`ÍÂ`ÏÂ`ÑÂ`ÓÂ`ÕÂ`×Â`ÙmÛÂ`Ý“tßÂ`áÂ`ãÂ`åÂ`çÂ`éÂ`5?s5m7?s7m9?s9m;?s;m=?s=m??s?mA?sAmC?sCmCwmE?sEmEwmG?sGmI?sImK?sKmM?sMmO?sOmOwmQ?sQmQ6…S?sSmS6…U?sUmW?sWmY?sYm[?s[m]?s]m_?s_ma?samc?scme?semg?sgmi?simk?skmm?smmo?somq?sqms?ssmu?sumw?swm…Â`…“t‡Â`‡“t‰Â`‰“t‹Â`‹“tDsÂ`DsÂ`‘Ds‘Â`“Ds“Â`•Ds•Â`—Ds—Â`™Ds™Â`›Â`›“tDsÂ`ŸDsŸÂ`¡Â`¡“t£Â`£“t£[c¥Â`¥“t§Â`§“t©Â`©“t©[c«Â`«“t«[c­Â`­“t­[c¯Â`¯“t¯[c±Ds±[c±/¡³Ds³Â`³“tµ[cµ/¡·Â`·“t¹Â`¹“t»Â`»“t½Â`½“t¿Â`¿“tÁ?sÁmÃÂ`ÓtÅÂ`Å“tÇÂ`Ç“tÉÂ`ËÂ`ÍÂ`Í“tÏÂ`Ï“tÑÂ`Ñ“t m m mmmmmmmmmm!m#m%m'm)m+m-m-wm/m1m1wm3m5m7m9m;m=m?mAmCmEmGmImIwmKmMmOmQmSmUmWmYmYwm[jg[mg]jg]mg]wm_jg_mg_wmamcjgcmgemewmgmimkjgkmgmjgmmgomqmsjgsmgujgumgwmwwmymywm{m{wm}m}wmmwmmƒm…m‡m‰m‹mjgmgjgmgh‘jg‘mg“jg“mg“h•m—m—6…™m™6…›jg›mg›6…jgmg6…ŸÂ`Ÿ“t¡Â`¡“t£Â`£“t¥m¥6…§m§6…©m«m­m¯m¯?s±m³mµmµ?s·m¹m»m½m¿mÁmÃmÅmÇmÉmËmÍmÍwmÏmÑmÑwmÓmÕmÕwm×mÙmÙwmÛmÝmßmámãmåmçméméwmëmëwmímïmñmómõm÷mùmûmýmÿmmmmÂ`“t m wm m mÂ`mjgmgjgmgjgmgjgmgÂ`“t[c/¡jgmghwmÂ`“t[c!jg!mg!wm#jg#mg#wm%m%6…'m'6…)m+m+6…-m-6…/jg/mg/6…1jg1mg16…3m3Â`5m56…7m9m96…;m;6…=Â`=“t=[c?jg?mg?6…AjgAmgA6…CÂ`C“tEjgEmgGmImKÂ`K“tMjgMmgOmQmSmSwmUmUwmWmYm[jg[mg]jg]mg]h_jg_mgajgamgahcmeme?sgmimkmmmomqmsmumwmym{m{wm}mmwmmƒmƒwm…m‡m‡wm‰m‰wm‹m·m¹Â`¹“t»m½6…½m¿mÁmÃmÅmÇmÉmËmÍmÏjgÏmgÑÂ`Ñ“tÓÂ`Ó“tÓ[cÕm×m×wmÙmÙwmÛjgÛmgÛwmÝmÝwmßjgßmgájgámgáhãmåmåwmçmçwmémëmímïmñÇíñmómõmõ6…÷mùÂ`ù“tûmýmýÇíýwmÿmmmmm m m mmmmmmmm6…mm!m#m%m'm)m+m-m/m1m3m3?s5m7m7?s9m9?s;m=m=?s?mAmAwmCmEmEwmGmImI?sKmMmM?sOmQmSmUjgUmgWjgWmgYm[mQwmSÂ`S“tUmUwmWmWwmYmYwm[m[Çí[wm]wm]m_mcmemgqg!qçméÂ`ëmímKÂ`MÂ`OmQmSÂ`S“tUÂ`U“tWÂ`W“tW[cYwm[m[wm]m_maÂ`a“tcwmewmgÂ`iÂ`kwmowmoÂ`qÂ`qwmsm/ m1 m3 m5 m? mA mC mE m_ ma mc me mg mg 6…i mi 6…k mm mo mq mq wms ms wmu mw my m{ m} m m mƒ m… m‡ m‰ m‹ m m m‘ m“ m• m— m™ m™ wm› m› wm mŸ m¡ m£ m¥ m· m¹ m» m½ m½ ?s¿ mÁ mÁ ?sà mà ?sÅ mÇ mÉ Â`É “tË mË wmÍ Â`Í “tÏ mÏ wmÑ Â`Ñ “tÑ [cÓ jgÓ mgÓ wmÕ m× mÙ Â`Û mÝ Â`ß mß wmá má wmã Â`å mç mé më Â`í Â`ï mñ mó Â`õ m÷ Â`ù Â`û Â`ý mÿ Â`ÿ “t!jg!mg!Â`!“t![c!jg!mg!h!Â`!“t !jg !mg !Â` !“t ![c !jg !mg !h!m!m!m!Â`!Â`!Â`!Â`!Â`!Â`!!Â`#!m%!m'!m)!m+!m-!m/!m1!m3!m5!m7!m9!m;!mC!mE!mG!mI!mK!mM!mO!mQ!mS!mU!m[!m]!m_!ma!mc!me!mg!jgg!mgi!jgi!mgk!mm!mo!mq!ms!jgs!wmu!jgu!mgu!wmw!jgw!mgw!hw!wmy!my!wm{!jg{!mg{!wm}!jg}!mg}!h}!wm!jg!mg!h!mg!h!jg…!m‡!m‰!jg‰!mg‰!h‹!jg‹!mg‹!h!jg!mg!h!jg!mg!h‘!jg‘!mg‘!h“!m•!m—!m™!m›!m!mŸ!m¡!m§!m©!m«!m­!m¯!m±!m³!mµ!m·!wm¹!?s¹!DsÃ!mÅ!mÇ!mÉ!mË!mÍ!mÏ!mÑ!mÓ!mÕ!<ûÕ!m×!m×!wmÙ!mÛ!mÝ!mß!má!mã!må!mç!mé!më!mí!mí!¨ûï!mñ!mó!mõ!m÷!jg÷!mgù!mû!mý!mÿ!m"m"m"m"m "m "wm "m "m"m"m"m"m"m"m3"Â`5"Â`m"mo"mq"¨ûq"ms"¨ûs"m­"m¯"m±"m³"mµ"m·"m¹"m»"m½"m¿"mÃ"mÃ"wmÅ"mÅ"wmÇ"mÉ"mË"mÍ"mÏ"jgÏ"mgÑ"mÓ"mÕ"m×"mÙ"mÛ"mÝ"mß"má"jgá"mgã"må"mç"mé"më"mí"mï"mÉ&jgÉ&mgÉ&hË&jgË&mgË&hÍ&mÏ&jgÏ&mgÏ&hÑ&mÓ&mÕ&m×&mÙ&mÛ&mÝ&mß&má&mã&må&mç&mé&më&mí&mï&mñ&Â`ó&Â`õ&Â`÷&Â`ù&Â`a'mc'me'mg'mi'mk'mm'mo'mq'ms'mu'mw'my'm{'mƒ'm…'m‡'m‰'m‹'m«'m­'m¯'m±'m³'mµ'mµ'è·'è·'mÓ'mÕ'm×'mÙ'mÛ'mÝ'mß'má'mã'Â`ã'“tã'[cå'må'wmå'`mç'jgç'mgç'wmé'Â`é'“té'[cë'më'wmë'`mí'jgí'mgí'wmï'Â`ï'“tï'[cñ'mñ'wmñ'`mó'jgó'mgó'wmõ'Â`õ'“tõ'[c÷'m÷'wm÷'`mù'jgù'mgù'wm¹)m»)m½)Â`Ý)mß)má)mã)må)mç)m*m*m*m)*m+*m-*m/*jg/*mg1*jg1*mg1*h3*jg3*mg3*h3*Ñh5*jg5*mg5*h5*Ñh5*°i7*jg7*mg9*jg9*mg9*h;*jg;*mg;*h;*Ñh=*jg=*mg=*h=*Ñh=*°i?*jg?*mgA*jgA*mgA*hC*jgC*mgC*hC*ÑhE*jgE*mgE*hE*ÑhE*°iy*m{*m}*m*m*m‡*m*m*m‘*m“*m•*m—*m™*m›*m*mŸ*m¡*m£*m¥*m§*m©*m¹*m»*mÉ*jgÉ*mgÉ*hÉ*ÑhÉ*°iË*jgË*mgË*hË*ÑhË*°iÍ*jgÍ*mgÍ*hÍ*ÑhÍ*°iÏ*jgÏ*mgÏ*hÏ*ÑhÏ*°iÏ*»jÑ*jgÑ*mgÑ*hÑ*ÑhÑ*°iÑ*»jÓ*jgÓ*mgÓ*hÓ*ÑhÓ*°iÓ*»jÕ*jgÕ*mgÕ*hÕ*ÑhÕ*°iÕ*»j×*jg×*mg×*h×*Ñh×*°i×*»jÙ*jgÙ*mgÙ*hÙ*ÑhÙ*°iÙ*»jÙ*òkÛ*jgÛ*mgÛ*hÛ*ÑhÛ*°iÛ*»jÛ*òkÝ*jgÝ*mgÝ*hÝ*ÑhÝ*°iÝ*»jÝ*òkß*jgß*mgß*hß*Ñhß*°iß*»jß*òká*jgá*mgá*há*Ñhá*°iá*»já*òkã*m7,jg9,jg9,mg;,jg;,mg;,h=,jg=,mg=,h=,Ñh?,jg?,mg?,h?,Ñh?,°iA,jgA,mgA,hA,ÑhA,°iA,»jC,jgC,mgC,hC,ÑhC,°iC,»jC,òkE,jgE,mgE,hE,ÑhE,°iE,»jE,òkE,¤/ y  &T!Yl!•l!«  ×p!«äððð ìû ' [YÊ'd1€< z Ð  Äûp!•n!•n!«l!‚p!‚n!‚ ¤­Y ð± –  Mµ«|* Ü)Ñ!Ü)Ö!*Ñ!*Ö!*Ñ!*Ö!Ü)±$*±$*±$Ü)•(*•(*•(È*"-Ê*"-Ì*"-*.Î*2Ð*2Ò*2Ô*2Ö*2Ø*å6Ú*å6Ü*å6Þ*å6à*å6|*<ùŠ=‹>¯>%@K@x@|*_Dö&Ñ!ø&Ñ!mÑ!â*Ñ!*H°'Ñ!¸@K¾@KÀ@KŒ@KŽ@K¢žK¤@K˜@K¦@K¬žK²žK @K¨™LªžK”@KŠ@Kž@Kœ@K@K¶@Kº@K(*Ñ!(*Ö!Ð@KºÑ!Ñ!ºÖ!Ö!*Ö!Â@KåNåNÖ€OŽOâÑ!èÑ!ŒÑ!”Ñ!ªÑ!–Ñ!˜Ñ!œ±Q²Ñ!¦Ñ!°'jRœR Ñ!žÑ!¨Ñ!¬Ñ!®Ñ!ôüRö*SÚÑ!ÆÑ!ÈÑ!¸Ñ!¼Ñ!¢Ñ!¤Ñ!ÞÑ!æÑ!x**SàÑ!ÖÑ!Ñ!*›Th›Td(UJH|*Yr"ÁZVãnÊ oÊ Ko !To`po`ì`˜o`¶o`Þo`ýo`'pZpÒ cpFšq Èqãq írÖjR*©t|*¶t|*u$!^u&vÚ +v*!^u6Ñ!Ž ½xŠ jRŒ üxœ üx  jR¢ jR jR’ jRˆ jRâ jRP jR C{æ jRZ  ˆ ‚ ‚Ž ¬{ jRf jRj Š=j ‹>j %@r ~Ž ­~j jRl üxn Ö~p ß~Z jRŒ Ž KD jRŽ ÇŽ 9€– jR±jRx Ñ!Ž ¼‚Ž GƒŽ vƒ*σõjRÿjRjR jRjRjR Š=ˆ Š= jR üx`jRV)‰fjRhjRfé‰`-ŠÖ¦‹ÖgŒ zŽŽ jR¦ jRŒ üxŒ MŠ Ö!áÖ!¦ Š=Ž ƒšD YŽ µšd ›j ›’ ›» f'œ*+v$!ƒœœ ÿœŒ ÿœp Ž ep zŒ ªžŠ ž6Ûž¢ ž„ jRx jR† ˆ *2¡ jR Ñ! Ñ!" Ñ!$ Ñ!Ž üx Š=Œ Çœ §Œ ½xŽ Ü¬ôm®f jRŽ ²Š †*©t Ö!d K³d R³d Y³j Ñ!n Ñ!† Ñ!3µ`3µŠ ‚z Ñ!Š Ñ!Œ ¶·x Ñ! Ñ!p Ñ!f Ñ!Œ ®¸æ Ö!t ¨ºx*Ñ!$!¶t$!¼$!Ö!h Ñ!Š 3µŒ û¼Œ ½½ ” Ñ!Œ ¾Š ;¾Œ M¾v Ñ!Š _Dz »¾ï 3µŒ ¿Œ ¿ÿ 3µ Ñ!Œ ¿| Ñ!~ Ñ!’ œ *Àx*UÁ|*‚|*TÃ|*ˆÃ|*'|*çÃ|*Ûž|*HÄ|*{Ä|*•|*ÑÄ|*Å|*2Å*šq¬Ç ãq*ÛÊ!›TÚ jR jR¢Èq!írŠkÙŠžÙ!úÚÿÚY]Û!Èq!kÙ›Û*žÙÆ Èq*ÊÛ*ÕÛ*kÙ˜9ÜÆ “Ü!írDâÜ!ÛÊä ÛÊPÛÊÊ ÏÝ!›Td›TtjÞtjRdjÞ~jR€›TŠ›TîYÊ ¿ápPãð1äðäVeèÊ ê&Vê4šq@šqò–ëÆ °ëÆ ì!Yä YÊ #íJ›TòäYÊ 9Ü–ìïÊ ñ !Èqœ›Tš›Tv›Tð°ë,*1ô*1ô,*ƒô*ƒô*ƒô!YðYÚ Š=üxüx4üx&)‰,*šq,*Èq,*›T*šq*Èq*›T,*žÙ,*kÙ,*ÊÛ,*ÕÛ,*ÛÊ,*H*žÙ*kÙ*ÊÛ*ÕÛ*ÛÊ*H*ü*šq*Èq*›T*žÙ*kÙ*ÊÛ*ÕÛ*ÛÊ*HT!ToöÅüVüxö%ýZVýZŽýVÆý\½x^½x¨ uM|*f|*j|*ä)ÂHx*x*jRî)‰ðÖ~Ú HòÖ~x*%@ôÖ~¿Hôt 8•z•Ú Y‚jR€•®öH†Ê ~Ê Ðx*ÁfHÊ ¨5Ï¢•LÛLࢠLåÊ ýÊ ®Ê °H¢HL2B HöjR„ ´jR\Ò!ß!H·To&!Ê Û!JüxLüx6•8ÑÄå[&”jR”•x**x*Ž*x*ó*€ÊÛ¬ÊÛ~+xà+\ ,€kÙ¬kÙ¼ ¹-*¿-x*Ö!–jR˜jRžjR jRœ)‰šüx™Š=ªjRÞjRâjR¢jR¤jRÆjRÈjR„jRˆjRŒjRŠjRŽjRjR’jR”jRŠ=œüxjR¦jR¨jR¬jR®jR²jR°jR´jRÀjR¶jRÄjRºjR¾jRÂjRÊjRÐjRÎjRÌjRØjRÜjR6jRàjRäjR–˜?ÒÑ!ÔÑ!ÌÑ!7Ö!ŒÖ!Žüxüxžüx üx¢Ö~¤üx¦üxªÖ~®ÏB¬Ö~ÖMCTüxæ˜Cä˜C¾üx¶üx¸üx^üxVüxXüx7‚„üx†üxŠüxŒüxˆüx‚’üx”üx–üx˜üxšüxœüx YJ¨Ö~®Ö~úL°Ö~´üx!N&0Nºüx¼üxÄüxÊ’PÈ’PÆüxÌ@KÎ@KÆ@KÖ_RÖ°RÞ)Ö!jR ŽS$jRlT$Š= ðT )U:! @jRBjRDjRC{DŠ=!jR!jRfjRjüxnjRrüxvüxzüx„jRˆjR8Š=8jR¢)‰ üxžzŽi•0 jRkjR¼ üx¾ jR¬jR jRÀjRÄjRº jRÖ'jRì'”`Ö'Š=ì'¹`à)jRà)Š=â)jRâ)Š=Þ'jRÞ'Š=ð jRÊ üxÎ üxÆ jRøjRújR !jRüxè jRô jRjRüxüxÚ %@ß~Ú ‹>Ö~Ò Ö~$üx&zŽ*üx.Ö~2üx2zŽ8üx!Š=<Ö~>Ö~BüxÔ jRÖ jRJüxä jRü jR!üx!Ö~!üx !Ö~!jR üxÄ jRjRpjRtjRà üxY… …'PjRPŠ=¶jR¸üxPjR™ P‹>ÐzŽÐüxÒÖ~ÚUqÞ¯>Ú•qäüxèjR\üx·Š=ijRøtÖüxð¯>þjRjRjR jR(jR¸lT¶/y¶uzXjR`»¾dÑ!ï|^Ñ!R@KT@KVt Z@KNÑ!€*ã}€*ï|êÑ!ìÑ!7Ñ!€*þ~$Ñ!*Ñ!,Ñ!0Ñ!ÄÑ!ÄÅ€Ö〠@KÄ Ñ!ÄÖ!Ö‚RüxXüxVüxJ L„P„\ …*Ñ!p»¾rÑ!LÑ!X@K^Ñ!æjRèÑ!æÑ!LjRL $!jRfjRhŠ=n Š=LH›Ñ!¥Ñ!XÑ!\Ñ!bÑ!jÑ!n@KhÖ!n Ö!JÑ!2 jR**Ñ!¸)Ñ!t jRv jRŠ jRjRŒ jRŽ jRŽ Š=  jRˆ jR»¾²'Š=?)‰²'jR?8˜°'Š=ClTÀ üxÀ zŽE~È )‰™Š=Ì )‰Ð ÏBØ jRÜ Š=Þ üxâ jRæ jRÜ jRê jRî H›ì jRò jRö jRø jRú jRþ üx!Ö~!üx !Ö~"!jR!jR!jR!jR!jR !jR!jR!jRä)jRæ)jR*jRÞ)jR:!jRæ'Ö~ò'Ö~ô&jR(*jR**jRØ'jRn"jRr")‰Æ"jRÈ"jRÊ"jRÌ"jRÎ"üxÐ"jRÒ"jRÔ"jRÖ"jRØ"jRÚ"jRÜ"jRÞ"jRà"üxâ"jRä"jRæ"jRè"jRê"jRì"jRî"jR®"jRì'§ì'§ø'§*f*j*Š=¬"jR–*jR˜*jRž*jR *jR¦*jR¨*jRiŠ=4"Ñ!2"Ñ!à)Ñ!eÑ!l"Ñ!â)Ñ!p"»¾Â"K³Ä"@KÂ"¸µÂ"@KÄ"K³ì'Ö~ø'Ö~ò&Ñ!ð&Ñ!¥•(W.]λƒ!¿‰&¿T¿*jR*jRÜ)jR¸)jRº)jR,*jR¬'jRÃjRâ'Ö~è'Ö~î'Ö~ô'Ö~Þ)ª'Ñ!®'Ñ!Þ)Ñ!Ò'Ñ!Ô'Ñ!ä't â't ê't è't ð't î't ö't ô't ¼)•,*Š=,*‹>,*%@,*ÛÊ*Š=*‹>*%@*ÛÊÜ)Š=Ü)‹>Ü)%@Ü)ÛÊyjRÜ)kÒ*kÒ*Š=*‹>*%@*ÛÊ*kÒÜ)»Ö*»Ö*»Ö[Q\Q{Q|Q-@QBQFQHQIQLQNQ–Q˜QšQèž:--::$Q&QÇ-Q•Ž —Ž #Q%Q'Q*Q-Q/Q1Q2Q4Q6Q:QX-dQ|ð]0Ž 6–:ê|š ~š -€ê‚Ž ‡Q– - -FsSrGen.exeFSCore.resourcesSystemObjectmscorlibMainImplMainStuffFSSRGenImplementationHoleTypeEnumAddHole@160RunMain@334lines@339lines@338-1stringInfos@340justPercentsFromFormatString@384RunMain@365-1RunMain@399-2RunMain@406-3$ProgramMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeOverloadIDAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeStructuredFormatDisplayAttributeOCamlCompatibilityAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributePrivateEnvironmentFSharpChoice`2TagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFailureExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1System.CollectionsIEnumerableSystem.Collections.GenericIEnumerable`1_Empty_ConsListDebugView`1LazyFailureLazy`1IObserver`1IObservable`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1FSharpEvent`2FSharpEvent`1Microsoft.FSharp.MathBigNatSystem.NumericsBigIntegerValueTypeMicrosoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1AggregateExceptionSystem.ThreadingCancellationTokenRegistrationCancellationTokenCallbackInfoCancellationTokenSourceQueue`1LinkedSubSourceFakeUnitValue_FakeUnit_FakeUnit@DebugTypeProxyAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1.$Assemblyinfo.FSharp.CoredllExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45PrintFormatToStringThenFail@130-1$Fslib-extra-pervasivesObservableModuleBasicObserver`1Map@2164-6Map@2162-5Choose@2174-3Choose@2172-2Filter@2182-2Partition@2186-1Scan@2194-5Scan@2191-4Pairwise@2215-3Pairwise@2212-2h1@2233h2@2248Merge@2263-3Merge@2227-2Split@2270-1Split@2271-2EventModuleCreate@2045Map@2050-4Filter@2056-1Partition@2063Choose@2069-1Scan@2076-3Pairwise@2093-1Merge@2104Merge@2105-1Split@2112WebExtensionsAsyncGetResponse@1712-1System.NetWebResponseAsyncGetResponse@1715-3AsyncCallbackAsyncGetResponse@1716-4AsyncGetResponse@1717-5AsyncGetResponse@1715-2AsyncGetResponse@1712downloadAsync@1738-3DownloadStringCompletedEventHandlerdownloadAsync@1738-4downloadAsync@1738-6downloadAsync@1738-5DownloadStringCompletedEventArgsdownloadAsync@1736-2downloadAsync@1735-1downloadAsync@1745-7downloadAsync@1745-8downloadAsync@1745-10downloadAsync@1745-9downloadAsync@1733OperationCanceledExceptionAsyncDownloadString@1750-1AsyncDownloadString@1750-3AsyncDownloadString@1750-2AsyncDownloadString@1750CommonExtensionsAsyncRead@1655AsyncRead@1655-1AsyncReadBytes@1661-1AsyncReadBytes@1663-3AsyncReadBytes@1662-2AsyncReadBytes@1666-4AsyncReadBytes@1659AsyncWrite@1672AsyncWrite@1672-1SubscribeToObservable@1697CancellationTokenSourceExtensionsCancellationTokenOpsRunSynchronously@990RunSynchronously@991-1RunSynchronously@992-2Start@1014Start@1015-1Start@1016-2StartWithContinuations@1020StartWithContinuations@1020-1StartWithContinuations@1020-2AsyncImplpost@773switchTo@784-1switchTo@783switchToNewThread@789-1switchToNewThread@788switchToThreadPool@793-1switchToThreadPool@792delimitSyncContext@835-1delimitSyncContext@835delimitSyncContext@836-3delimitSyncContext@836-2delimitSyncContext@837-5delimitSyncContext@837-4protectedPrimitiveWithResync@842ResultCell`1action@919AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxyBindLimitHijackCountTrampolinequeueWorkItemWithTrampoline@562startThreadWithTrampoline@567postWithTrampoline@573startAsync@577queueAsync@580protectedPrimitive@603resultA@615args@632bindA@641-1bindA@626callA@651cont@671econt@674ccont@677tryFinallyA@665econt@687-1tryWithA@683catchA@700-1catchA@702-2catchA@697ccont@707-1whenCancelledA@706getCancellationToken@711usingA@720whileA@728forA@736-1forA@737-2forA@734sequentialA@741CancellationState$Control-ctor@138List`1handler@145toRun@170-1toRun@170doRun@174once@1057-2once@1053-1FromContinuations@1050Catch@1077-1Catch@1077-2Catch@1076Parallel@1160-2Parallel@1162-3Parallel@1164-4Parallel@1155-1Parallel@1109StartImmediate@1175StartImmediate@1175-1StartImmediate@1175-2Sleep@1190-2Sleep@1181-1Sleep@1178AwaitWaitHandle@1197cancelHandler@1231-1cancelHandler@1219AwaitWaitHandle@1240-3AwaitWaitHandle@1237-2AwaitWaitHandle@1215-1AwaitIAsyncResult@1248AsyncCommitResult@1256AsyncGetResultNoTimeout@1267-1AsyncGetResultNoTimeout@1266AsyncGetResultWithTimeout@1305-1AsyncGetResultWithTimeout@1302-4AsyncGetResultWithTimeout@1294-3AsyncGetResultWithTimeout@1289-2AsyncGetResultWithTimeout@1288AsyncGetResultWithTimeout@1281-5AsyncGetResultWithTimeout@1283-6registration@1325callback@1329-1callback@1328FromBeginEnd@1346-2FromBeginEnd@1310-1FromBeginEnd@1309FromBeginEnd@1350-3FromBeginEnd@1354-4FromBeginEnd@1357-5cont@1428-1econt@1429-2ccont@1430-2beginAction@1427-1AsBeginEnd@1436AsBeginEnd@1448-1AwaitEvent@1477-5AwaitEvent@1463-2AwaitEvent@1488-7AwaitEvent@1480-6AwaitEvent@1479-3AwaitEvent@1489-4AwaitEvent@1496-8AwaitEvent@1460-1AwaitEvent@1459Ignore@1520StartChild@1536-2StartChild@1537-3StartChild@1538-4StartChild@1530-1StartChild@1528Primitive@1548-1Primitive@1548-2Primitive@1547SpawnChild@1556-2SpawnChild@1557-3SpawnChild@1558-4SpawnChild@1555-1SpawnChild@1554SpawnThenPostBack@1572-2SpawnThenPostBack@1572-1SpawnThenPostBack@1571SwitchToContext@1582-1SwitchToContext@1579h@1589-3OnCancel@1591-1OnCancel@1589-ctor@1780-1Post@1873scan@1882-2scan@1880-3scan@1877-1TryScan@1887-1TryScan@1884Scan@1891-2Scan@1890-1processFirstArrival@1902-2processFirstArrival@1898-1TryReceive@1906processFirstArrival@1917-5processFirstArrival@1913-4Receive@1921p@1969-1p@1970-3p@1970-2p@1969msg@1981msg@1998-1PostAndTryAsyncReply@2007-2PostAndTryAsyncReply@2006-1PostAndTryAsyncReply@2005PostAndAsyncReply@2014-1PostAndAsyncReply@2013Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1694ApplicationsPattern@1696SpecificCallPattern@1714SpecificCallPattern@1720-1TypePatternsModuleByteStreamLetRecursivePattern@472getRecordProperty@482System.ReflectionPropertyInfogetUnionCaseInfo@488checkArgs@585ParameterInfomkNewTupleWithType@661mkNewRecord@678mkNewUnionCase@687mkNewArray@702dlfun@809mkLetRec@831mkLetRec@833-1typesEqual@842instFormal@844methInfos@856MethodInfoargTs@867haveArgTs@873select@864argTs@888-1inst@923mkNamedTycon@1083u_tyconstSpec@1107u_tyconstSpec@1108-1u_tyconstSpec@1109-2appL@1112u_dtype@1117u_dtype@1118-1u_dtype@1118-2u_dtype@1118-3BindingEnvenvClosed@1138u_Expr@1145u_Expr@1145-1u_Expr@1145-2u_Expr@1145-3u_Expr@1148-5u_Expr@1146-4u_Expr@1150-6u_Expr@1153-7u_Expr@1156-8u_Expr@1158-9attrs@1160u_Expr@1161-11u_Expr@1161-10u_VarDecl@1165u_VarRef@1168u_RecdField@1171u_UnionCaseInfo@1174u_UnionCaseField@1178u_MethodInfoData@1186u_MethodInfoData@1186-1u_PropInfoData@1189u_PropInfoData@1189-1u_CtorInfoData@1192u_CtorInfoData@1192-1u_constSpec@1267u_constSpec@1267-1u_constSpec@1246-2u_constSpec@1247-3u_constSpec@1248-4u_constSpec@1249-5u_constSpec@1250-6u_constSpec@1251-7u_constSpec@1252-8u_constSpec@1253-9u_constSpec@1254-10u_constSpec@1255-11u_constSpec@1256-12u_constSpec@1257-13u_constSpec@1258-14u_constSpec@1259-15u_constSpec@1260-16u_constSpec@1261-17u_constSpec@1262-18u_constSpec@1263-19u_constSpec@1264-20u_constSpec@1265-21u_constSpec@1266-22u_constSpec@1230-23u_constSpec@1231-24u_constSpec@1232-25u_constSpec@1233-26u_constSpec@1234-27u_constSpec@1235-28u_constSpec@1236-29u_constSpec@1237-30u_constSpec@1238-31u_constSpec@1239-32u_constSpec@1240-33u_constSpec@1241-34u_constSpec@1242-35u_constSpec@1243-36u_constSpec@1244-37u_constSpec@1245-38u_constSpec@1216-39u_constSpec@1217-40u_constSpec@1222-41u_constSpec@1223-42u_constSpec@1224-43u_constSpec@1225-44u_constSpec@1226-45u_constSpec@1227-46u_constSpec@1228-47u_constSpec@1229-48u_ReflectedDefinition@1268MethodBaseu_ReflectedDefinitions@1269fillHolesInRawExpr@1285freeInExprAcc@1295mkTyparSubst@1310Clashsubstargs@1322substituteInExpr@1338decodedTopResources@1355IEqualityComparer`1AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1384registerReflectedDefinitions@1388qdataResources@1419qdataResources@1415-1data@1428-1data@1427expr@1465-1SimpleUnpickleInputStatephase2data@1057phase2data@1057-1HelpersmkRLinear@51mkLLinear@52$Quotationsexpr@202pairL@205varL@212|Lambda|_|@214-1GetLayout@267Applications@1491NewDelegate@1556PrintfModulePrintFormatToStringThen@569-1PrintFormatToStringThen@568-2PrintFormatToStringThen@570-3PrintFormatToStringThen@567kprintf_imperative@579-1kprintf_imperative@579PrintFormatToStringBuilderThen@584PrintFormatToTextWriterThen@587PrintFormatToStringThen@590-4PrintFormatToStringThenFail@593PrintFormatToStringBuilder@596PrintFormatToTextWriter@599PrintFormatLineToTextWriter@602PrintfImplPrintfInfobuildFunctionForOneArgPat@207buildFunctionForTwoArgPat@215-1buildFunctionForTwoArgPat@214buildFunctionForOneFunArgPat@221captureCoreArgs@307-1captureCoreArgs@324-2captureCoreArgs@309-3captureCoreArgs@308-4captureCoreArgs@326-5captureCoreArgs@325-6captureCoreArgs@322-7captureCoreArgs@316-8captureCoreArgs@318-9captureCoreArgs@317-10captureCoreArgs@319-11captureCoreArgs@327-12captureCoreArgs@310-13captureCoreArgs@323-14captureCoreArgs@328-15capturePrecisionArg@335-1capture1@339gprintf@509capture@535-1$PrintfDisplayBreaksitemL@664itemL@677-1PrecedenceShowModestopShort@781-1res@817objL@784-1recdAtomicTupleL@869-1recdAtomicTupleL@869-2objL@784-2project@945project2@954-1rowL@956project1@957itemLs@967reprL@992-1IComparerreprL@997-2itemL@883-3project@892-2leafFormatter@1042squash_layout@1086output_layout@1090layout_to_string@1094ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@356pvals@362-1LayoutOpsjoin@148join1@149join2@150join3@151op_AtAt@162op_AtAtMinus@163op_AtAtMinusMinus@164commaListL@174semiListL@175spaceListL@176sepListL@177aboveListL@183unfoldL@209$Sformatget_Default@244NumericLiteralsNumericLiteralNNumericLiteralI$Zop_Range@290-1op_RangeStep@291-1BigNatModuleencodingmulKaratsuba@982mul@1046FFTFp$N$Eventget_Publish@36h@65-1get_Publish@67-2get_Publish@59-1h@89-2get_Publish@91-4get_Publish@83-3ImplgetInstancePropertyReader@61getUnionTypeTagNameMap@140FieldInfogetUnionTypeTagNameMap@139-1getUnionTypeTagNameMap@127-2tagField@145getUnionTagConverter@157getUnionTagConverter@158-1getUnionTagConverter@161-2fieldsPropsOfUnionCase@207fieldsPropsOfUnionCase@206-1fieldsPropsOfUnionCase@205-2getUnionCaseRecordReader@212getUnionTagReader@216getUnionTagReader@220-1getUnionTagReader@225-2getUnionTagReader@223-3getUnionCaseConstructor@250props@332getTupleCtor@350reader@357-1getTupleReader@363getTupleConstructor@376fieldPropsOfRecordType@442fieldPropsOfRecordType@441-1getRecordReader@452getRecordConstructor@462$ReflectMakeTupleType@580GetUnionCases@602Make@616PreComputeRecordFieldReader@643SetModuleSetTreeModulesubset@227psubset@229psubset@229-1nextElemCont@312nextElem@317prevElemCont@323prevElem@328SetIterator`1mkIEnumerator@413-1copyToArray@472-1ofArray@491$SetFold@567Map@587-3Union@620Intersection@623MapModuleToSeq@620FindKey@623TryFindKey@626MapTreeModuleofList@287copyToArray@312MapIterator`2mkIEnumerator@360$MapSystem-Collections-Generic-IDictionary-2-get_Keys@503-1System-Collections-Generic-IDictionary-2-get_Keys@503System-Collections-Generic-IDictionary-2-get_Values@506-1System-Collections-Generic-IDictionary-2-get_Values@506System-IComparable-CompareTo@527get_Items@540Array4DModuleArray3DModule$Array3ArrayModule$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@808mkUnfoldSeq@809InitializeInfinite@821Initialize@826revamp@880revamp2@882Filter@887Map@892-1MapIndexed@897-1Map2@903Choose@908Zip@914Zip3@921Cast@926Take@967fromGenerator@1023Append@1031-1Append@1031OfArray@1085Singleton@1109Truncate@1115Pairwise@1124Scan@1135Windowed@1175result@1220cleanup@1234ReadOnly@1247GroupBy@1259-1GroupBy@1270-2GroupBy@1274-3GroupBy@1254Distinct@1280DistinctBy@1291SortBy@1301Sort@1309CountBy@1321-1CountBy@1328-2CountBy@1317TakeWhile@1435Skip@1443SkipWhile@1453RuntimeHelpersStructBox`1gcomparer@530get_Comparer@531mkSeq@541EmptyEnumerable`1_EmptyEnumerable_EmptyEnumerable@DebugTypeProxyGenerate@555EnumerateFromFunctions@563EnumerateFromFunctions@564-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@680EnumerateUsing@681-1mkConcatSeq@684EnumerateWhile@697-1EnumerateWhile@696EnumerateThenFinally@713-1h@720CreateEvent@722-1CreateEvent@716GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@401Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@384EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@494-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@499cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@152filter@169unfold@186getCurrent@221-1upto@225generateWhileSome@261ArrayEnumerator`1Singleton`1EnumerateThenFinally@318$SeqMoveNextImpl@751ComparisonIdentityFromFunction@48IComparer`1GetFastComparisonFunction@52HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@102MapIndexed@106Copy@110Rebase@116$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsOperatorsop_ComposeRight@3509op_ComposeLeft@3511op_Range@5262op_RangeStep@5278PowInteger@5424PowInteger@5424-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4715RangeInt32@4715-1RangeInt32@4715-2RangeInt64@4716RangeInt64@4716-1RangeInt64@4716-2RangeUInt64@4717RangeUInt64@4717-1RangeUInt64@4717-2RangeUInt32@4718RangeUInt32@4718-1RangeUInt32@4718-2RangeIntPtr@4719RangeIntPtr@4719-1RangeIntPtr@4719-2RangeUIntPtr@4720RangeUIntPtr@4720-1RangeUIntPtr@4720-2RangeInt16@4721RangeInt16@4721-1RangeInt16@4721-2RangeUInt16@4722RangeUInt16@4722-1RangeUInt16@4722-2RangeSByte@4723RangeSByte@4723-1RangeSByte@4723-2RangeByte@4724RangeByte@4724-1RangeByte@4724-2RangeDouble@4725RangeDouble@4725-1RangeDouble@4725-2RangeSingle@4726RangeSingle@4726-1RangeSingle@4726-2RangeGeneric@4727RangeGeneric@4727-1RangeStepGeneric@4728RangeStepGeneric@4728-1RangeChar@4730RangeChar@4730-1UnaryDynamicImpl@5026BinaryDynamicImpl@5031AbsDynamicImplTable`1-cctor@5037-61-cctor@5037-62-cctor@5038-63-cctor@5038-64-cctor@5039-65-cctor@5039-66-cctor@5040-67-cctor@5040-68-cctor@5041-69-cctor@5041-70-cctor@5042-71-cctor@5042-72-cctor@5043-73-cctor@5043-74-cctor@5044-75Decimal-cctor@5044-76AcosDynamicImplTable`1-cctor@5052-77-cctor@5052-78-cctor@5053-79-cctor@5053-80AsinDynamicImplTable`1-cctor@5061-81-cctor@5061-82-cctor@5062-83-cctor@5062-84AtanDynamicImplTable`1-cctor@5070-85-cctor@5070-86-cctor@5071-87-cctor@5071-88Atan2DynamicImplTable`2-cctor@5079-89-cctor@5079-91-cctor@5079-90-cctor@5080-92-cctor@5080-94-cctor@5080-93CeilingDynamicImplTable`1-cctor@5088-95-cctor@5088-96-cctor@5089-97-cctor@5089-98ExpDynamicImplTable`1-cctor@5097-99-cctor@5097-100-cctor@5098-101-cctor@5098-102FloorDynamicImplTable`1-cctor@5106-103-cctor@5106-104-cctor@5107-105-cctor@5107-106TruncateDynamicImplTable`1-cctor@5115-107-cctor@5115-108-cctor@5116-109-cctor@5116-110RoundDynamicImplTable`1-cctor@5124-111-cctor@5124-112-cctor@5125-113-cctor@5125-114SignDynamicImplTable`1-cctor@5133-115-cctor@5133-116-cctor@5134-117-cctor@5134-118-cctor@5135-119-cctor@5135-120-cctor@5136-121-cctor@5136-122-cctor@5137-123-cctor@5137-124-cctor@5138-125-cctor@5138-126-cctor@5139-127-cctor@5139-128-cctor@5140-129-cctor@5140-130LogDynamicImplTable`1-cctor@5148-131-cctor@5148-132-cctor@5149-133-cctor@5149-134Log10DynamicImplTable`1-cctor@5157-135-cctor@5157-136-cctor@5158-137-cctor@5158-138SqrtDynamicImplTable`2-cctor@5166-139-cctor@5166-140-cctor@5167-141-cctor@5167-142CosDynamicImplTable`1-cctor@5175-143-cctor@5175-144-cctor@5176-145-cctor@5176-146CoshDynamicImplTable`1-cctor@5184-147-cctor@5184-148-cctor@5185-149-cctor@5185-150SinDynamicImplTable`1-cctor@5193-151-cctor@5193-152-cctor@5194-153-cctor@5194-154SinhDynamicImplTable`1-cctor@5202-155-cctor@5202-156-cctor@5203-157-cctor@5203-158TanDynamicImplTable`1-cctor@5211-159-cctor@5211-160-cctor@5212-161-cctor@5212-162TanhDynamicImplTable`1-cctor@5220-163-cctor@5220-164-cctor@5221-165-cctor@5221-166PowDynamicImplTable`1-cctor@5229-167-cctor@5229-169-cctor@5229-168-cctor@5230-170-cctor@5230-172-cctor@5230-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@2919Adapt@2925FSharpFunc`4Invoke@2932-1Adapt@2940-1Adapt@2943-2FSharpFunc`5Adapt@2957-3Adapt@2962-4Adapt@2965-5Invoke@2967-2FSharpFunc`6Invoke@2973-3Adapt@2982-6Adapt@2987-7Adapt@2992-8Adapt@2995-9LanguagePrimitivesFastGenericEqualityComparer@2025FastLimitedGenericEqualityComparer@2026CharComparer@2032StringComparer@2033SByteComparer@2034Int16Comparer@2035Int32Comparer@2036Int64Comparer@2037IntPtrComparer@2038ByteComparer@2039UInt16Comparer@2040UInt32Comparer@2041UInt64Comparer@2042UIntPtrComparer@2043FloatComparer@2044Float32Comparer@2045DecimalComparer@2046FastGenericComparerTable`1-cctor@2083-cctor@2106-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2337-2-cctor@2338-3-cctor@2339-4-cctor@2343-5-cctor@2342-7-cctor@2342-6AdditionDynamicImplTable`3dyn@2371-2dyn@2371-1dyn@2370-3dyn@2369-5dyn@2369-4-cctor@2374-8-cctor@2375-9-cctor@2376-10-cctor@2377-11-cctor@2378-12-cctor@2379-13-cctor@2380-14-cctor@2381-15-cctor@2382-16-cctor@2383-17-cctor@2384-18-cctor@2385-19-cctor@2386-20CheckedAdditionDynamicImplTable`3dyn@2408-8dyn@2408-7dyn@2407-9dyn@2406-11dyn@2406-10-cctor@2411-21-cctor@2412-22-cctor@2413-23-cctor@2414-24-cctor@2415-25-cctor@2416-26-cctor@2417-27-cctor@2418-28-cctor@2419-29-cctor@2420-30-cctor@2421-31-cctor@2422-32-cctor@2423-33-cctor@2424-34MultiplyDynamicImplTable`3dyn@2448-14dyn@2448-13dyn@2447-15dyn@2446-17dyn@2446-16-cctor@2451-35-cctor@2452-36-cctor@2453-37-cctor@2454-38-cctor@2455-39-cctor@2456-40-cctor@2457-41-cctor@2458-42-cctor@2459-43-cctor@2460-44-cctor@2461-45-cctor@2462-46-cctor@2463-47CheckedMultiplyDynamicImplTable`3dyn@2485-20dyn@2485-19dyn@2484-21dyn@2483-23dyn@2483-22-cctor@2488-48-cctor@2489-49-cctor@2490-50-cctor@2491-51-cctor@2492-52-cctor@2493-53-cctor@2494-54-cctor@2495-55-cctor@2496-56-cctor@2497-57-cctor@2498-58-cctor@2499-59-cctor@2500-60HashCompareGenericComparerfsEqualityComparer@1575IEqualityComparerfsEqualityComparerER@1580CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3027op_Implicit@3029-1FromConverter@3031ToConverter@3032ToFSharpFunc@3042ToFSharpFunc@3043-1FuncFromTupled@3044FuncFromTupled@3045-1FuncFromTupled@3046-2FuncFromTupled@3047-3FuncFromTupled@3048-4SR$SR$Prim-types-preludeIStructuralComparableIStructuralEquatableITupleTupleTuple`1Tuple`2Tuple`3Tuple`4Tuple`5Tuple`6Tuple`7Tuple`8FsSrGenSystem.DiagnosticsDebuggableAttribute.ctorDebuggingModesMainargsxmlBoilerPlateStringstringBoilerPlatePrefixSystem.IOTextWriterInvokeJustPrintErrfilenamelinemsgErraget_xmlBoilerPlateStringSystem.Runtime.CompilerServicesCompilerGeneratedAttributeDebuggerNonUserCodeAttributeHoleTypeToStringthisSystem.TextStringBuilderget_EmptyStringget_Lengthget_CharsAppendToStringComputeHoleslineNumtxtStartsWithEndsWithSubstringUnquotesCharIsDigitSomeget_ValueIsLetterIsLetterOrDigitFormatget_Messageget_Item2get_Item1ParseLineget_stringBoilerPlatePrefixConcatStringBoilerPlateDictionary`2StreamWriterSystem.XmlXmlDocumentPathGetFullPathGetFileNameWithoutExtensionFileReadAllLinesContainsKeyget_ItemAddget_Item3LoadXmlSaveDisposeRunMainvalue__IntFloatholeNumberholessbConsholeTypectupledArgiaccoutget_Item4get_Item5InvokeFastxdXmlElementXmlNodeCreateElementSetAttributeAppendChildCreateTextNodeXmlTextget_LastChildinit@DebuggerBrowsableAttributeDebuggerBrowsableState.cctorGetHashCodeEqualsobjSystem-IComparable-CompareToCompareToNoneFieldClosureModuleUnionCaseKindMaskNonpublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckUniqueNameuniqueNameget_UniqueNameCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageCountscountsCloneget_Countspathget_PathGetResourceStringnameargumentsTagIsChoice2Of2IsChoice1Of2NewChoice2Of2itemget_IsChoice2Of2NewChoice1Of2get_IsChoice1Of2get_TagcompT1T2ItemDebuggerTypeProxyAttribute_objIsChoice3Of3IsChoice2Of3IsChoice1Of3NewChoice3Of3get_IsChoice3Of3NewChoice2Of3get_IsChoice2Of3NewChoice1Of3get_IsChoice1Of3T3IsChoice4Of4IsChoice3Of4IsChoice2Of4IsChoice1Of4_tagNewChoice4Of4get_IsChoice4Of4NewChoice3Of4get_IsChoice3Of4NewChoice2Of4get_IsChoice2Of4NewChoice1Of4get_IsChoice1Of4T4IsChoice5Of5IsChoice4Of5IsChoice3Of5IsChoice2Of5IsChoice1Of5NewChoice5Of5get_IsChoice5Of5NewChoice4Of5get_IsChoice4Of5NewChoice3Of5get_IsChoice3Of5NewChoice2Of5get_IsChoice2Of5NewChoice1Of5get_IsChoice1Of5T5IsChoice6Of6IsChoice5Of6IsChoice4Of6IsChoice3Of6IsChoice2Of6IsChoice1Of6NewChoice6Of6get_IsChoice6Of6NewChoice5Of6get_IsChoice5Of6NewChoice4Of6get_IsChoice4Of6NewChoice3Of6get_IsChoice3Of6NewChoice2Of6get_IsChoice2Of6NewChoice1Of6get_IsChoice1Of6T6IsChoice7Of7IsChoice6Of7IsChoice5Of7IsChoice4Of7IsChoice3Of7IsChoice2Of7IsChoice1Of7NewChoice7Of7get_IsChoice7Of7NewChoice6Of7get_IsChoice6Of7NewChoice5Of7get_IsChoice5Of7NewChoice4Of7get_IsChoice4Of7NewChoice3Of7get_IsChoice3Of7NewChoice2Of7get_IsChoice2Of7NewChoice1Of7get_IsChoice1Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2GetObjectDataSystem.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2System.GlobalizationCultureInfoget_CurrentUICultureSystem.ResourcesResourceManagerGetStringSpecializeTfuncConverter`2op_ImplicitconverterFromConverterToConverterarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValuevDebuggerDisplayAttributeIsNoneIsSomeget_NoneGetTagget_IsNoneget_IsSomeIFormattableget_InvariantCultureIFormatProviderIsConsEmptyIsEmptyLengthDebugDisplayHeadTail_unique_Emptyheadtailget_IsConsget_IsEmptyget_Headget_TailInt32get_DebugDisplayInvalidOperationExceptionindexSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeset_Headset_TailItemslListDebugViewMaxLengthcountget_ItemsnUndefinedexnundefinedget_Exceptionget_UndefinedIsValueCreatedStructuredFormatDisplayvalue@5523funcOrException@5528funcOrExceptionCreatefCreateFromValuexget_IsValueCreatedMonitorEnterExitget_StructuredFormatDisplayOnNextOnErrorerrorOnCompletedSubscribeobserverAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetMoveNextResetget_CurrentrescleanupClearMapEmptyNewMapNodeitem1item2item3item4item5NewMapOneget_MapEmptyTKeyTValueItem1Item2Item3Item4Item5ComparerCountcomparer@388tree@392serializedDataemptycomparertreeOnSerializingOnSerializingAttributeOnSerializedOnSerializedAttributeOnDeserializedOnDeserializedAttributeieelementsget_Comparerget_TreekeyTryPickExistsFilterForAllAdaptFoldFoldSectionlohizIterateMapRangebMapPartitionget_CountRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarrSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_Itemkey@value@get_keyget_valueSetEmptyNewSetOneNewSetNodeget_SetEmptyChooseMinimumElementMaximumElementcomparer@511tree@515op_Subtractionset1set2op_AdditionIntersectionUnionsetsSubtractEqualityCompareget_Chooseget_MinimumElementget_MaximumElementGetNextElementGetPreviousElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayNameDeclaringTypetyptagnamesget_Nameget_DeclaringTypeGetFieldsMemberInfoGetCustomAttributesattributeTypeArgumentNullExceptionIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsMakeimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameget_IsGenericTypeGetGenericTypeDefinitionInvokeMemberBinderMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderPublishmulticastDelegateDynamicInvokeTriggerget_PublishargTypesGetMethodGetParametersget_ParameterTypeget_Delegateset_Delegateargbounddigitsbound@digits@get_boundget_digitsset_boundSignSignIntStructuredDisplayStringOneZeroIsZeroIsOneIsNegativeIsPositiveIsSmallsmallLimsmallPosTabonezerosignIntnatcreateposnnegnget_Signget_SignIntget_Vop_Equalityyop_Inequalityop_LessThanop_GreaterThancomparennhashget_StructuredDisplayStringOverflowExceptionToInt32ToInt64get_Oneget_Zeroop_UnaryNegationScalesubnnnxnyaddnnget_IsZeroget_IsOneop_MultiplyDivRemremop_Divisionop_ModulusGreatestCommonDivisorget_IsNegativeget_IsPositiveop_LessThanOrEqualop_GreaterThanOrEqualPowpowiToDoubleop_ExplicitFormatExceptionParsetextget_IsSmallFactorialop_UnaryPlusop_Rangestartfinishop_RangeStepstepFromInt64FromInt32IsBrokenIsBreakableUnbreakableIsUnbreakable_unique_UnbreakableNewBrokenget_IsBrokenNewBreakableget_IsBreakableget_Unbreakableget_IsUnbreakableIsAttrIsNodeIsLeafNewAttrget_IsAttrNewNodeitem6get_IsNodeNewLeafget_IsLeafItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsstampisMutable@90isMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_MetadataTokenget_Moduleget_AssemblyIsHoleTermIsLambdaTermIsVarTermIsCombTermNewHoleTermget_IsHoleTermNewLambdaTermget_IsLambdaTermNewVarTermget_IsVarTermNewCombTermget_IsCombTermIsDefaultValueOpIsValueOpWhileLoopOpIsWhileLoopOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpTryFinallyOpIsTryFinallyOpTryWithOpIsTryWithOpIsTypeTestOpAddressSetOpIsAddressSetOpVarSetOpIsVarSetOpAddressOfOpIsAddressOfOpSequentialOpIsSequentialOpQuoteOpIsQuoteOpIsNewDelegateOpIsNewArrayOpIsCoerceOpIsStaticMethodCallOpIsInstanceMethodCallOpIsNewObjectOpIsStaticFieldSetOpIsInstanceFieldSetOpIsStaticFieldGetOpIsInstanceFieldGetOpIsStaticPropSetOpIsInstancePropSetOpIsStaticPropGetOpIsInstancePropGetOpIsTupleGetOpIsNewTupleOpIsUnionCaseTestOpIsNewUnionCaseOpIsNewRecordOpLetOpIsLetOpLetRecCombOpIsLetRecCombOpLetRecOpIsLetRecOpIfThenElseOpIsIfThenElseOpAppOpIsAppOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpNewDefaultValueOpget_IsDefaultValueOpNewValueOpget_IsValueOpget_WhileLoopOpget_IsWhileLoopOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_TryFinallyOpget_IsTryFinallyOpget_TryWithOpget_IsTryWithOpNewTypeTestOpget_IsTypeTestOpget_AddressSetOpget_IsAddressSetOpget_VarSetOpget_IsVarSetOpget_AddressOfOpget_IsAddressOfOpget_SequentialOpget_IsSequentialOpget_QuoteOpget_IsQuoteOpNewNewDelegateOpget_IsNewDelegateOpNewNewArrayOpget_IsNewArrayOpNewCoerceOpget_IsCoerceOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewNewObjectOpget_IsNewObjectOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewTupleGetOpget_IsTupleGetOpNewNewTupleOpget_IsNewTupleOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewNewRecordOpget_IsNewRecordOpget_LetOpget_IsLetOpget_LetRecCombOpget_IsLetRecCombOpget_LetRecOpget_IsLetRecOpget_IfThenElseOpget_IsIfThenElseOpget_AppOpget_IsAppOpCustomAttributestermattribsget_CustomAttributesSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariableendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstsecondTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawInnerExceptionsSystem.Collections.ObjectModelReadOnlyCollection`1exnsListexnsAsReadOnlyget_InnerExceptionsidsource@id@get_sourceget_idctroInt64op_EqualsEqualsleftrightop_BangEqualsIsCancellationRequestedCanBeCanceledget_IsCancellationRequestedget_CanBeCanceledRegisterstatectIDActionStateaction@state@get_actionget_stateget_IDget_Actionget_StateTokenInternalIsCancelednextIDregistrationslinkedCtr1linkedCtr2init@130token1token2get_TokenCancelObjectDisposedExceptionInterlockedCompareExchangedontThrowIfDisposedget_InternalIsCanceledDeregisterCreateLinkedTokenSourcearraysizeDequeueSetCapacityEnqueueCopycapacityfailureCTSlinkedCTSFakeUnit_unique_FakeUnitget_FakeUnittokencontecontccontblockedThreadtoken@cont@econt@ccont@blocked@get_tokenget_contget_econtget_ccontget_blockedNewPDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenDefaultGroupget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCancelDefaultGroupget_DefaultGroupCatchRunSynchronouslytimeoutcancellationTokenStartRunSpawnParallelcomputationListStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarAsyncCommitResultAsyncGetResultNoTimeoutdisposeFctresultCellAsyncGetResultWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndAwaitEventeventTDelBuildPrimitiveRunWithContinuationsIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildPrimitiveSpawnChildSynchronizationContextSpawnThenPostBackpostBackSwitchToGuiThreadSwitchToContextsyncContextOnCancelinterruptionTryCancelledIsClosedcompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthUnsafeContentsinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxPostTryScanScanTryReceiveReceiveget_UnsafeContentsensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutUnsafeMessageQueueContentsinitialcancellationToken@1944mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_Errorget_UnsafeMessageQueueContentsTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyPostAndAsyncReplyscannerAsyncPostAndReplyAsyncTryPostAndReplyDefaultAsyncBuilderArray2Array3IEventCreateSetCreateDictionarykeyValuePairsgetArrayvalsSetarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWritertextWriterConsoleget_OutPrintFormatget_ErrorPrintFormatToErrorPrintFormatLineToTextWriterPrintFormatLinePrintFormatLineToErrorOutputAnyocAnyToStringPrintAnyget_DefaultAsyncBuilderToSingleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionget_Array2get_Array3get_IEventLazyPatterninputkeysarrayIndex_arg3_arg4dDefaultAsyncBuilder@163mappingsucceed@2122_arg1chooserpredicatecollectorPairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNextCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErroreSystem-IObserver`1-OnCompletedwlastArgscompleted1completed2h1h2w1w2sourceEventListenevent1event2TDel1TDel2evarg00ev1ev2args2AsyncGetResponseWebRequestAsyncDownloadStringWebClientUriaddressWebExceptionget_StatusWebExceptionStatusNewCanceled_arg810reqBeginGetResponseEndGetResponseAbortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg17downloadAsync_arg811_arg812AsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteAsyncWaitOneAsyncSleepAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamException_arg809BeginWriteEndWriteCancellationTokenSource.TriggerCancelCancellationTokenSource.RunSynchronouslyCancellationTokenSource.StartCancellationTokenSource.StartWithContinuationsCancellationTokenSource.RunWithContinuationsCancellationTokenSource.RunCancellationTokenSource.Spawnget_CurrentThreadNewOkNewErrorunitVar0asyncget_asyncposttriggerswitchToctxtswitchToNewThreadswitchToThreadPoolgetSyncContextresyncresyncOrQueuedelimitSyncContextprotectedPrimitiveWithResyncManualResetEventresEventf@4160-15f@4160-16get_ResultAvailableEventWaitHandlef@4160-17matchValueResultAvailableGrabResultContinueWithResultNoTimeoutWaitOnedefaultCancellationTokenSourcebindLimitBeforeHijackdoneAget_defaultCancellationTokenSourceget_bindLimitBeforeHijackcommitcommitWithPossibleTimeoutloop@551-38WaitCallbackThreadPoolQueueUserWorkItemqueueWorkItemWithTrampolineThreadStartset_IsBackgroundstartThreadWithTrampolineSendOrPostCallbackpostWithTrampolinestartAsyncpqueueAsyncprotectedPrimitiveresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctioncatchAwhenCancelledAgetCancellationTokenget_doneAusingAwhileAgdprogforAsequentialAp2IsCanceledIsErrorIsOkget_IsCanceledget_IsErrorget_IsOkcount@ThreadStaticAttributeget_countset_countset_CountIncrementtrampolineStacktrampolineStack@get_trampolineStackset_trampolineStackDebugAssertGetPopPushProtectfirstActioncexngACTIVEDISPOSED_ACTIVECANCELEDDISPOSED_CANCELEDdefaultCancellationTokenSource@414doneA@715async@764f@4160-12listf@4160-13loop@254-37f@4160-14f@4160-18calledonce@1052finishTask@1119firstExnresultsremainingf@4160-19recordSuccess@1131f@4160-20recordFailure@1141onCancel@1313_arg801beginAction@1426onCancel@1464-1del_arg803f@4160-21f@4160-22scan@1876processFirstArrival@1897processFirstArrival@1912-3_arg760timerTimerdueTimeTimerCallbackrwhRegisteredWaitHandleUnregistertimeOutregistrationtimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg798_arg799ar_arg800aiareventArgsCreateDelegate_arg802_arg12err_arg804_arg13_arg14_arg805_arg806_arg807h_arg808savedCont2_arg814_arg813_arg815_arg816_arg817_arg818_arg819_arg820reply_arg821_arg822_arg823asyncReplyOfNativeIntInlinedToNativeIntInlinedCompatibleOfNativeIntInlinedCompatibleToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedGetArrayAddressInlinedGetArray2AddressInlinedindex1index2GetArray2DAddressInlinedStackAllocateRebuildShapeCombinationshapeloop@1797-36exprShapePatternBooleanBoolPatternStringPatternSingleSinglePatternDoubleDoublePatternCharPatternSByteSBytePatternByteBytePatternInt16Int16PatternUInt16UInt16PatternInt32PatternUInt32UInt32PatternInt64PatternUInt64UInt64PatternUnitPatternstripSuccessiveProjLets@1670|TupledLambda|_|lam|TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternget_IsGenericMethodGetGenericMethodDefinitionSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternGetGetMethodPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1isg1gmdGetGenericArgumentstmfunTyCexprTyCty@409-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@313-34xs|FrontAndBack|_|esget_funTyCget_exprTyCget_ty@409-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_|_arg783|Comb1|_|_arg784|Comb2|_|_arg785|Comb3|_|_arg786VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertytyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_PropertyTypeget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRIsAssignableFromcheckTypesWeakSRcheckArgsparamInfosget_BaseTypeloop@596-35checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuotemkLambdavarmkTryWithe1v1e2v2e3mkApplicationv_0v_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsetmkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetget_CanWritemkStaticPropSetmkInstancePropSetmkInstanceMethodCallminfomkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsGetMethodsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionParameterModifierbindMethodHelperGetPropertybindModulePropertybindModuleFunctionmkNamedTypetyargsinstbindProppropNameretTypeGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@947l_0l_1chopMakeGenericMethodinstMethngmethmethTypeArgsbindMeth_arg790pinfoIsStaticdecodeFunTydecodeArrayTytysGetTypesmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsenvu_dtype|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_CtorInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsfillHolesInRawExpr_arg793freeInExprAccbvs_arg794mkTyparSubstsubstituteInExprtmsubst_arg795ReadreadToEndget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4160-11qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializelocalAssemblysplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtmethInfoparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20NoTyArgsp_0p_1p_2p_3p_4_arg5x_0x_1_arg6_arg7_arg8_arg2arg10@arg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objuphase2bytesisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagsinstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qrvsqOneOrMoreRLinearinpqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkvsmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_instanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@318-1exprTyC@319mscorlib@1090f@4160-10GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@209|Lambda|_|@214_arg782|NLambdas|_|@217Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsConvertToCharoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueget_IsArrayget_IsByRefget_IsPointerisNamedTypeisFunctionTypety1destFunTyget_instanceInvokeFlagsinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@304capturePrecisionArg@332precisioncapture1UIntPtrIntPtrunboxAsInt64unboxAsUInt64IsNaNformatOne$cont@458formatOne$cont@425-1formatOne$cont@479-2xobjformatOneoutaIsSurrogatePairgo@518-3finalizerun@516initializecapture@535gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@179invariantCulture@262defaultInfo@283chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@471-9stacknextpushBreaksaving_arg775popBreak_arg776forceBreak_arg777fitLeaf@498maxWidthlayouttextWidthbreaksfit@475leafFormattersquashToaddText@557rstrsnewLine@560_arg779addL@567optsz_0z_1showLnewLine@603-1chan_arg780addL@610-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@727-9conv@728countNodes@780stopShort@781objL@784showModedepthLimprecIndexOfLastIndexOfobjWithReprL@787showMode@787recdAtomicTupleL@865bracketIfL@871basicLproject2@953n1n2b1b2itemL@882-2project@892-1get_RankGetLowerBoundGetLengthGetPropertiesSortreprL@874showMode@874-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutlayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowTopLevelBindingIsShowTopLevelBindingShowAllIsShowAll_unique_ShowAll_unique_ShowTopLevelBindingget_ShowTopLevelBindingget_IsShowTopLevelBindingget_ShowAllget_IsShowAll_arg781propobjLitnDepthoptionty@409-10ty@409-11equivHeadTypesty2get_optionget_ty@409-10get_funcget_ty@409-11isListTypeIsObjectTypeUnitTypeIsUnitTypeIsSumTypeIsRecordTypeIsFunctionTypeIsTupleType_unique_UnitTypeNewObjectTypeget_IsObjectTypeget_UnitTypeget_IsUnitTypeNewSumTypeget_IsSumTypeNewRecordTypeget_IsRecordTypeNewFunctionTypeget_IsFunctionTypeNewTupleTypeget_IsTupleTypeIsObjectValueUnitValueIsUnitValueIsExceptionValueIsConstructorValueIsRecordValueIsFunctionClosureValueIsTupleValue_unique_UnitValueNewObjectValueget_IsObjectValueget_UnitValueget_IsUnitValueNewExceptionValueget_IsExceptionValueNewConstructorValueget_IsConstructorValueNewRecordValueget_IsRecordValueNewFunctionClosureValueget_IsFunctionClosureValueNewTupleValueget_IsTupleValueGetValueInfoOfObject$cont@353reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@169taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLselectorlistLsquareBracketLbraceLconsume@201itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@136option@282-1func@283-1nullL@656measureL@657FromZeroFromOne_arg772_arg773FromString_arg774numTymeth64methStringtab64tabParseget_numTyget_meth64get_methStringget_tab64get_tabParsef@4160-6x64FromInt64Dynamicf@4160-7FromStringDynamicf@4160-8getParsemeth64@347methString@351tab64@354tabParse@355baseBitsbaseNbaseMaskbaseNi64baseMaski64baseMaskUbaseMask32AbaseMask32BbaseShift32BbaseMask64AbaseMask64BbaseMask64CbaseShift64BbaseShift64CboundIntboundInt64boundBasetablebitmaskarr@473-1twopowersarr@473-2twopowersI64arr@473-3minDigitsKaratsubaproductDigitsUpperSchoolBooksingleDigitForceSchoolBookproductDigitsUpperFfttwopow64pow32maxIntminIntget_baseBitsget_baseNget_baseMaskget_baseNi64get_baseMaski64get_baseMaskUget_baseMask32Aget_baseMask32Bget_baseShift32Bget_baseMask64Aget_baseMask64Bget_baseMask64Cget_baseShift64Bget_baseShift64CcopyNfindLeastBound@391nanormNget_boundIntget_boundInt64get_boundBaseembedembed64evalget_oneget_zeroshiftUpshiftDownaddPaddsubPsubisZeroisOnecheck@532-6paqaequalcheck@542-7pnqnshiftComparecheck@560-8ltgtltegteminmaxcontributeArrscalemulSchoolBookBothSmallmulSchoolBookCarrymulSchoolBookOneSmallmulSchoolBookNeitherSmallmulSchoolBookmkEncodingbigLbigKbigNget_tableselectFrom@805bitsResencodingGivenResultBitsget_bitmaskget_arr@473-1get_twopowersget_arr@473-2get_twopowersI64get_arr@473-3hi@823wordwordBitsbitsextractBitsencbiencoder@863polybiMaxencodePolydecodeResultBitsevaluate@906rboundjdecodePolyquickMulUsingFftget_minDigitsKaratsubarecMulKaratsubamulmulKaratsubaget_productDigitsUpperSchoolBookget_singleDigitForceSchoolBookget_productDigitsUpperFftscaleSubInPlacescaleAddInPlaceremoveFactor$cont@1276removeFactordivmod$cont@1355DivideByZeroExceptiondivmoddivhcfloop@1412hcfget_twopower@1429power@1437-1powevalFloat@1452baseftoFloatofInt32ofInt64toUInt32toUInt64route@1507degnpriorten2kcollect@1512isLeadingtoStringbuild@1557strtenIsNullOrEmptyofStringisSmallgetSmallproductR@1591factorialtwoToBigLsplitsplitsbigL@twoToBigL@k@bigK@bigN@split@splits@get_bigLget_twoToBigLget_kget_bigKget_bigNget_splitget_splitsarg00@patternInput@74primePmaxBitsInsideFpmaxTwoPowertwoPowerTablearr@473mzeromonemaxFpget_patternInput@74get_wget_pget_mget_gget_primePget_maxBitsInsideFpcomputeFFTlambdamucomputeInverseFftInPlaceuTget_maxTwoPowerget_twoPowerTableget_arr@473f@471-5vTcomputeFftPaddedPolynomialProductget_mzeroget_moneget_maxFpp64mtwoget_p64get_mtwompowmpowLw@74p@74m@74k@74g@74primeP@75twoPowerTable@194maxFp@259one@445zero@446table@775bitmask@816twopowers@817twopowersI64@818productDigitsUpperSchoolBook@989singleDigitForceSchoolBook@999productDigitsUpperFft@1003two@1427debugty@409ty@409-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagsemptyObjArraytuple1ty@409-2tuple2ty@409-3tuple3ty@409-4tuple4ty@409-5tuple5ty@409-6tuple6ty@409-7tuple7ty@409-8tuple8ty@409-9maxTupletupleEncFieldget_debugget_ty@409get_ty@409-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeisFieldPropertytryFindSourceConstructFlagsOfTypeGetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@179-1isConstructorReprget@183-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@409-2get_tuple2get_ty@409-3get_tuple3get_ty@409-4get_tuple4get_ty@409-5get_tuple5get_ty@409-6get_tuple6get_ty@409-7get_tuple7get_ty@409-8get_tuple8get_ty@409-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfof@471-4orderTuplePropertiespropsgetTupleConstructorMethodgetTupleCtorreader@357getTupleReadergetTupleConstructorgetTupleConstructorInfoget@391-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@487-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41emptyObjArray@260tuple1@265tuple2@266tuple3@267tuple4@268tuple5@269tuple6@270tuple7@271tuple8@272ensureType@725setelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqCompatibleOfListCompatibleOfSeqCompatibleOfArrayCompatibleToSeqCompatibleToListCompatibleToArrayDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementMemSubsetDifftoleranceheightget_tolerancerebalancet1t2balancepivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxcountAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1|MatchSetNode|MatchSetEmpty|nextElemContnextElemprevElemContprevElemminimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackss1s2loop@463-33toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayk2get_stackget_startedFindKeyNotFoundExceptionPickFindKeyTryFindKeyFindIndexTryFindIndexkvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@260foldSectionloop@280-32kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4Initializeinitializerindex3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@191-24loop@199-25len1Exists2loop@205-26loop@213-27ForAll2loop@218-28loop@229-29loop@264-30loop@271-31ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceByprojectionSortInPlaceSortWithSortBygo@472-1go@483-2PermuteindexMapSumSumByMinMinByMaxMaxByAverageAverageByGetSubArraystartIndexFilllistsCompatibleHeadCompatibleTaillist1list2chooseAllAcclengthinitConstAccReplicateloop@108-17loop@118-18map3auxlist3Map3mapi2auxloop@156-19loop@171-20loop@180-21foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@258rest2rest1k1forall2auxexists2auxloop@378-22loop@383-23Joinsepstringscheck@77-4check@83-5CompatibleMapConcatCompatibleForAllmkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3TakesourcesTCollectionfromGeneratorgo@1043CompareWithTruncateloop@1146-15loop@1159-16f@471-1windowSizeWindowedoneStepTo@1204prefixenumeratorRf@4160-2f@4160-3CacheReadOnlyGroupByDistinctDistinctByCountByTakeWhileSkipSkipWhileenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionsouterEnumcurrInnerEnumFinishtakeOuter@651currElementtakeInner@644EnumerateUsingmkConcatSeqgetCurr@689-1currstart@692-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@464GenerateFromEnumeratorIsGotoIsYieldStopIsStop_unique_Stopget_IsGotoNewYieldget_IsYieldget_Stopget_IsStopApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@151choosenext@174filterunfoldgetCurrent@217uptolastOptionf@4160readAndCleargetCurr@254start@257finish@260generateWhileSomeFinishedIsFinishedInProcessIsInProcessNotStartedIsNotStarted_unique_NotStarted_unique_InProcess_unique_Finishedget_Finishedget_IsFinishedget_InProcessget_IsInProcessget_NotStartedget_IsNotStartedDoMoveNextfinalIndexactiveStructuralFromFunctionGetFastComparisonFunctionGetFastStructuralComparisonFunctionLimitedStructurallimitReferenceFromFunctionshasherequalityeqBase1Base2CreateInstanceZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasecopyTosourceIndex1sourceIndex2targetIndex1targetIndex2count1count2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@169-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3sortWithcmprevAppendmergesort2sort3$cont@427cxycyzsort3trivialstableSortInnerlastableSortcreatorIsDelayedDeprecatedIsForcedDeprecatedIsExceptionForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternNotFailWithInvalidArgumentInvalidArgumentPatternInvalidArgargumentNameNullArgInvalidOpinvalid_opRethrowReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendDecrementEnvironmentexitcodeToUInt16ToInt16ToUInt32ToIntToEnumKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleToUInt64ToDecimalToUIntPtrToIntPtrLocklockObjectTLockTypeOfTypeDefOfSizeOfHashlimitedHashIdentityget_InTextReaderConsoleInConsoleOutConsoleErrorTStepAcosAsinAtanAtan2CeilingExpFloorRoundLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4640RangeInt32stopgen@4640-1RangeInt64gen@4640-2RangeUInt64gen@4640-3RangeUInt32gen@4640-4RangeIntPtrgen@4640-5RangeUIntPtrgen@4640-6RangeInt16gen@4640-7RangeUInt16gen@4640-8RangeSBytegen@4640-9RangeBytegen@4709-10RangeDoublegen@4709-11RangeSinglegen@4617-12RangeGenericgen@4640-13RangeStepGenericgen@4617-14tupledArg_0RangeCharloop@4737PowByteloop@4737-1PowSByteloop@4737-2PowInt16loop@4737-3PowUInt16loop@4737-4PowInt32loop@4737-5PowUInt32loop@4737-6PowInt64loop@4737-7PowUInt64loop@4737-8PowIntPtrloop@4737-9PowUIntPtrloop@4737-10PowSingleloop@4737-11PowDoubleloop@4737-12PowDecimalloop@4737-13PowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeEqualStepResultupcanStarttupledArg_4clo1arg10DefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalComparerGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2053.cctor$cont@2086-2.cctor$cont@2086-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64parse@2179parseOctalUInt64parse@2183-1parseBinaryUInt64TrimNumberStylesParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2250-3aty.cctor$cont@2274-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2365bty.cctor$cont@2379-5AdditionDynamicdyn@2402-6.cctor$cont@2417-6CheckedAdditionDynamicdyn@2442-12.cctor$cont@2456-7MultiplyDynamicdyn@2479-18.cctor$cont@2493-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsDivideget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@926yobjarr1GenericCompare$cont@938-1GenericComparecheck@1033lenxcheck1@1056lenx1basex0basex1basey0basey1check0@1055lenx0GetLongLengthprecheck@1070ndimscheckN@1080idxsbaseIdxcheck@1089-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1357erGenericEqualitySingleArrayfeq@1374GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1426iecGenericEqualityObjcheck@1510-2check1@1528-1check0@1527-1precheck@1535-1checkN@1543-1check@1550-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IComparer-ComparesznodeCountFreshSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodeTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativeActivatorGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrcsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_IsValueTypeget_TypeInfoop_Ampop_BooleanAndOrop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringcombineTupleHashCodescodesAddressOpNotFirstClassString@611NoNegateMinValueString@612InputSequenceEmptyString@614InputArrayEmptyString@616InputMustBeNonNegativeString@618NaNException@908fsComparer@1132fsComparerNoThrow@1133fsEqualityComparer@1574fsEqualityComparerER@1579fsUnlimitedHasherER@1714fsUnlimitedHasher@1715GenericComparer@1963GenericEqualityComparer@1964GenericEqualityERComparer@1965CompareTo$cont@2860CompareTo$cont@2860-1objCastEquals$cont@2860CompareTo$cont@2869-2CompareTo$cont@2869-3GetHashCode$cont@2869Equals$cont@2869-1Equals$cont@2869-2CompareTo$cont@2879-4CompareTo$cont@2879-5GetHashCode$cont@2879-1Equals$cont@2879-3Equals$cont@2879-4copy@3179itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptymapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesGetString1GetString2GetString3resources@4GetExecutingAssemblyotherSizeget_Sizeitem7TRestCombineHashCodesParamArrayAttributeSystem.ITuple.Sizem_Item1EqualityComparer`1Comparer`1System.ITuple.GetHashCodeSystem.ITuple.ToStringSystem.ITuple.get_Sizem_Item2m_Item3m_Item4m_Item5m_Item6Item7m_Item7get_Item7Restm_Restget_Rest%%s(%d): error : %s€‹Note that the syntax of each line is one of these three alternatives:# commentident,"string"+errNum,ident,"string"Ethere were errors in the file '%s'±<?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root>System.Int32System.StringSystem.Doubleimpossiblem(at end of string) % must be followed by d, f, s, or %q'%%%c' is not a valid sequence, only %%d %%f %%s or %%%%{{}}"Kerror message string should be quotedgAfter the error number '%d' there should be a comma€The first character in the short identifier should be a letter, but found '%c'CDid not find the short identifiercAfter the identifier '%s' there should be a comma€ŸAfter the identifier '%s' and comma, there should be the quoted string resourceError calling System.String.Format (note that curly braces must be escaped, and there cannot be trailing space on the line): >>>%s<<< -- %s‚ã open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators open Microsoft.FSharp.Reflection open System.Reflection // (namespaces below for specific case of using the tool to compile FSharp.Core itself) open Microsoft.FSharp.Core open Microsoft.FSharp.Core.Operators open Microsoft.FSharp.Text open Microsoft.FSharp.Collections open Printf €ï // BEGIN BOILERPLATE static let resources = lazy (new System.Resources.ResourceManager("Ÿç", System.Reflection.Assembly.GetExecutingAssembly())) static let GetString(name:string) = let s = resources.Value.GetString(name, System.Globalization.CultureInfo.CurrentUICulture) #if DEBUG if null = s then System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name) #endif s static let mkFunctionValue (tys: System.Type[]) (impl:obj->obj) = FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys.[0],tys.[1]), impl) static let funTyC = typeof<(obj -> obj)>.GetGenericTypeDefinition() static let isNamedType(ty:System.Type) = not (ty.IsArray || ty.IsByRef || ty.IsPointer) static let isFunctionType (ty1:System.Type) = isNamedType(ty1) && ty1.IsGenericType && (ty1.GetGenericTypeDefinition()).Equals(funTyC) static let rec destFunTy (ty:System.Type) = if isFunctionType ty then ty, ty.GetGenericArguments() else match ty.BaseType with | null -> failwith "destFunTy: not a function type" | b -> destFunTy b static let buildFunctionForOneArgPat (ty: System.Type) impl = let _,tys = destFunTy ty let rty = tys.[1] // PERF: this technique is a bit slow (e.g. in simple cases, like 'sprintf "%x"') mkFunctionValue tys (fun inp -> impl rty inp) static let capture1 (fmt:string) i args ty (go : obj list -> System.Type -> int -> obj) : obj = match fmt.[i] with | '%' -> go args ty (i+1) | 'd' | 'f' | 's' -> buildFunctionForOneArgPat ty (fun rty n -> go (n::args) rty (i+1)) | _ -> failwith "bad format specifier" // newlines and tabs get converted to strings when read from a resource file // this will preserve their original intention static let postProcessString (s : string) = s.Replace("\\n","\n").Replace("\\t","\t").Replace("\\r","\r").Replace("\\\"", "\"") static let createMessageString (messageString : string) (fmt : Printf.StringFormat<'T>) : 'T = let fmt = fmt.Value // here, we use the actual error string, as opposed to the one stored as fmt let len = fmt.Length /// Function to capture the arguments and then run. let rec capture args ty i = if i >= len || (fmt.[i] = '%' && i+1 >= len) then let b = new System.Text.StringBuilder() b.AppendFormat(messageString, [| for x in List.rev args -> x |]) |> ignore box(b.ToString()) // REVIEW: For these purposes, this should be a nop, but I'm leaving it // in incase we ever decide to support labels for the error format string // E.g., "<name>%s<foo>%d" elif System.Char.IsSurrogatePair(fmt,i) then capture args ty (i+2) else match fmt.[i] with | '%' -> let i = i+1 capture1 fmt i args ty capture | _ -> capture args ty (i+1) (unbox (capture [] (typeof<'T>) 0) : 'T) static let mutable swallowResourceText = false static let GetStringFunc((messageID : string),(fmt : Printf.StringFormat<'T>)) : 'T = if swallowResourceText then sprintf fmt else let mutable messageString = GetString(messageID) messageString <- postProcessString messageString createMessageString messageString fmt /// If set to true, then all error messages will just return the filled 'holes' delimited by ',,,'s - this is for language-neutral testing (e.g. localization-invariant baselines). static member SwallowResourceText with get () = swallowResourceText and set (b) = swallowResourceText <- b // END BOILERPLATE The filename '%s' is not allowed; only letters and digits can be used, as the filename also becomes the namespace for the SR class€­Identifier '%s' is already used previously on line %d - each identifier must be unique€±String '%s' already appears on line %d with identifier '%s' - each string must be uniqueo// This is a generated file; the original input is '%s'namespace %s%s9type internal SR private() =€· /// Call this method once to validate that all known resources are valid; throws if notU static member RunStartupValidation() = ()]An exception occurred when processing '%s': %s {%d}# ,,,%d ,,,%f ,,,%s'Impossible HoleType(,  a%d : %sa%d) /// %s? /// (Originally from %s:%d),,, %d, q static member %s%s = (%sGetStringFunc("%s","%s") %s)? ignore(GetString("%s")) data namexml:spacepreserve value)matchCasesIncomplete Some(g nullLength > 1000Length = #inputListWasEmpty[; ]; ... ][]unreachable <null><evaluating><unevaluated>%mapCannotBeMutatednotComparableobj%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementation MaketupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseunionTypeexn Invoke+signs should be +/- 1x0--inputMustBeNonNegativey9unexpected negative exponenti;The value could not be parsed=the objects are not comparableg10 None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecord%ANewUnionCaseUnionCaseTestNewTupleTupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblycheckInitDequeuesyncContextNull=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated+failedReadEnoughBytesResultCell)Unexpected no result=failed to queue user work itemoattempt to read trampolineStack when none was installedGa trampoline was already registeredmattempt to pop trampolineStack when none was installedOcontrolContinuationInvokedMultipleTimesAsyncResultmismatchIAREndiar#mismatchIARCancelcmultiple waiting reader continuations for mailbox'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supported€‡Dynamic invocation of CompatibleOfNativeIntInlined is not supported€‡Dynamic invocation of CompatibleToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supported{Dynamic invocation of GetArrayAddressInlined is not supported}Dynamic invocation of GetArray2AddressInlined is not supportedDynamic invocation of GetArray2DAddressInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of range fillQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray/QtypeArgumentOutOfRange5u_uniq: out of range, n = !, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '''printfExpectedWidth/printfExpectedPrecisionl true falseGToString count'popBreak: underflow €£d:\Depot\staging\src\fsharp\FSharp.Core\..\..\fsppack\FSharp.PowerPack\sformat.fsunpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'...I<StructuredFormatDisplay exception: >Error: <fun: rank=bound1=bound2=seq <seq>+<ToString exception: unuyussuLMnan-infinityinfinity.0=?()Cthis code should not be reachable ParseoProduct is huge, around 268435456 bits, beyond quickmul€ƒscaleSubInPlace: pre-condition did not apply, result would be -veempty stringstr7multipleCompilationMappingsAno compilation mapping attribute Tags-fieldsPropsOfUnionCase Head TailTag GetTag get_New?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypes Item Rest)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4sourceIndextargetIndex array2+keyNotFoundAltMessage array3 array sourcestartIndex list!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2 index1 index2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedkDynamic invocation of op_Subtraction is not supportedeDynamic invocation of op_Division is not supportedcDynamic invocation of op_Modulus is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supported!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPowbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmptyoa lazy value was accessed during its own initialization'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedcannotMutatekeyNotFoundQincorrectType FSCoreIArgumentException_TupleIncorrectType otherYArgumentException_TupleLastArgumentNotATuple£—¬JNjŸ©§Eƒ£—¬J·z\V4à‰ ‚<‚ ‚•L’Ô•L#‚•L•X•L‚ ’Ô‚•X•L‚< €ô   ,T„¼‚‚<‚@) ‚T 159 5‚x1 ƒ‚Ž|‚5Ž|5‚‚8„p‚<‚‚‚‚<•L‚‚ ‚<‚„$E‚•LIA ‚AE ‚<<‚<„$E ‚M<‚‚‚Q<M ‚<M&‚•P‚<‚<‚U<<‚< ‚-„$ ‚<„$‚•XIA‚A‚< ‚„$<‚<„$<‚<„$ ‚A< ‚„ ‚„ ‚U„ ‚<„‚„ <„‚„ „…Ø‚„ …Ø„‚„ „„‚)„$<‚<„$‚<Y„$’Ô‚‚<<„‚‚<<’Ô‚‚<<‚‚„ €ô„’Ô„$<‚„ „ ‚< ‚U<‚„ „ ‚<„$‚…Ø„ ‚„$‚„„$‚•LIA ‚A ‚<ƒü‚<„, ‚<‚„$<‚„„$„$‚<„$„$‚„„$<‚…Ø„$<‚„„$-‚<„$-‚„$‚‚„$‚‚<„$‚‚‚„$‚„$<‚…Ì„$‚‚ƒð‚•L‚ƒ ƒð‚ƒð‚•Lƒð‚ƒð)‚ƒð‚•P‚ƒð‚]‚ƒð‚ƒð‚•Lƒ ƒð‚a ‚‚˜ ’Ôeƒð< ’Ô]ƒð< ’Ôaƒð< ‚ƒð< ’Ôe]]‚•Lƒ ƒð<‚•Lƒ ƒðƒð ’Ô]]‚]‚i‚‚‚]]] ‚e]‚]‚‚]]‚‚‚‚]]‚ŠH‚‚]]‚ŠH‚‚‚]]‚ŠH‚ˆÐƒð‚ŠH‚‚ˆÐƒð‚‚]‚]‚‚ˆÐƒðƒð ‚ˆÐƒð ‚ˆÐƒ ‚‚]a‚‚]‚˜‚‚‚]ƒ8‚‚]ƒ8‚ŠH•Lm‚ˆÐƒð‚ŠH‚•Lm‚ˆÐƒð ‚ƒðƒð’Ô‚ƒ ƒð‚ƒ ‚ƒ ‚ƒð q•LuqŠ ‚•Lm‚ˆÐƒð<#‚•L‚•Lm‚ˆÐƒð‚$‚•L‚•Lm‚ˆÐƒð< ‚ŠH‚ŠH‚ ’Ô ’Ô ‚ƒð‚Ü’Ô‚Ü‚Ü‚Ü ‚ƒ ‚Ü ‚‚Ü‚•Lƒð‚ƒðƒð‚<'‚<•T<‚<‚<‚<(‚<•T‚<<‚<‚<‚‚ ’Ô]’à‚]‚•L‚܂܂•L‚‚܂܂< ’à‹0‚Ü ‚‚Ü‚•L‚Ü‚‚•L ‚‚Ü‚‚•L‚<‚•L<‚a•L‚‚Ü‚•L•L‚Ü‚‚•L‚’Ôa•L ‚‚Ü‚Ü’à‚•L<’Ô‚¸‚¸‚¸’Ô‚´‚´‚´ ‚D‚D‚H ’Ô}}‚}‚i‚•L‚•L‚‚ ’Ôaa‚‚‚‚a’Ô•L‚˜ ‚‚‚‚’Ô‚x‚x ’Ô’Ô‚x‚x’Ô‚‚‚‚5•L‚•L‚ ’Ô‚T•L‚T ’Ô< )5‚5 ‚<‚5’Ô55‚5‚t ’Ô< ‚<)‚))‚))’Ô)))’Ô•L’Ô•L•P‚L‚<Žø‚L•L‚L‚‚•L‚5Ž|Y<#‚5Ž|Y•L‚<•L‚5Ž|•L‚<•Lq qŽ|ŽŒ )‚<) ’Ô<ŽØŽø‚<ŽØ,€ ’Ô ’Ô ‚ ’Ôää’Ôð’Ô ð  ’Ô ð  ’Ô ð  ’Ôð’Ôð’Ôð’Ôð’Ôð’Ôðð ô  ð ô  ðð ’Ô‚ ‚‚‚‚ ‚‚ ‚ ‚€…€…’Ô ‚‚’Ô ‚ ‚‚ ‚ ‚€…‚‚ ‚‚‚‚‚ ’Ô‚‚‚ ’à‚‚‚‚’ð%‚‚‚‚‚“€€€€€€ €€€€ € €€ € €€… ’Ô€…€…’Ô  ’Ô  ’Ô‚‚‚’Ô’Ô€ $€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô €‘‚‚‚<‚‚< ‚<(ƒ‚‚‚<€•<<•P  ‚‚‚<‚‚‚< ‚‚Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy  €ü                  uy     ~    5 s     FSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy    $  (   @ ,  <, 8, 4,48<@ ~44y88<<@@ ,,€‰,4488<<@@? 48<@|4488<<@@ ,,FSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy D 4 H 8 L < P @l T hTdT`T\T  TTT\`dhlX \`dhl €®\\``ddhhll TFSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy(C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxyp \t `x d| h€ l  „ œ„˜„”„„Œ„  „„„ „FSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxyŒ¤ Œ¨ ”¬ ”˜° ˜œ´ œ ¸  Ü ¼ ؼԼм̼ȼļ  ¼¼¼ ¼¼FSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxyÄà ÄÈä ÈÌè ÌÐì ÐÔð ÔØô ØÜø Ü     €é€í€¤.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089TSerializationFormatter ü€ñ €ñ 0 • €ù‚€ù • ‚ €ù €ù‚ • •  ’Ô ’Ô ‚‚ ‚’Ô’Ô’à’Ô‚ ’à ’Ô‚ ‚‚‚‚ @’à’à’Ô‚’Ô‚"‚‚‚’ð’à‚’Ô‚‚’ð ’à‚ ‚’Ô‚‚ ‚‚‚‚ z’ð’ð’à‚’à‚’Ô‚‚’Ô‚‚+‚‚‚‚“’ð‚’à‚‚!’Ô‚‚‚“ ’ð‚ ‚’à‚‚  ’Ô‚‚‚ %‚‚‚‚‚ €Æ““’ð‚’ð‚’à‚‚’à‚‚’Ô‚‚‚’Ô‚‚‚• €ý‚<€ý •‚€ù •‚‚ • ‚•L#‚‚‚•L •  ‚•P,‚‚‚‚•P•$ ‚•T5‚‚‚‚‚•T•( ‚•X>‚‚‚‚‚‚•X‚y ‚‚ ‚ ‚ ‚ FSharpRef`1 {contents} ‚‚ ‚‚ ‚ ‚& ‚‚y‚‚‚‚+ ‚‚‚‚‚ ‚ ‚ ‚  $‚‚‚‚‚‚FSharpOption`1 Some({Value}) ‚ (‚(‚‚$‚( ‚ ‚‚( ‚5 ‚(‚(y‚‚‚‚ ‚: ‚‚(‚(‚‚‚‚ ‚(9 ‚‚(‚(‚‚‚‚$‚(‚(‚‚ ‚ , ‚(‚(‚(‚’Ì ‚ ) % Item1,Microsoft.FSharp.Collections.ListDebugView`1 FSharpList`1{DebugDisplay,nq}(‚, 0‚ ‚(‚‚(‚(‚(‚0‚0  ‚0‚4 ‚4‚< ‚4 ‚<# ‚0‚0‚<‚<  ‚0‚0{StructuredFormatDisplay} -‚8  AI AFSharpHandler`1‚L  ‚L)d ‚L)#‚L)‚L‚L!! ‚<<‚P ‚<< ‚T ‚` ‚T‚T"‚T‚T‚T ‚\‚T ‚T ‚T ‚T ‚T!AKíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFound$NcontrolContinuationInvokedMultipleTimesh delegateExpected·&dyInvDivByIntCoerceÑ dyInvOpAddCoerce$dyInvOpAddOverloadc"dyInvOpMultCoerce®&dyInvOpMultOverload÷endCannotBeNaNB4enumerationAlreadyFinishede*enumerationNotStarted„4enumerationPastIntMaxValue±*failedReadEnoughBytesô,firstClassUsesOfSplice"&genericCompareFail1U indexOutOfBoundsi"inputListWasEmpty£,inputMustBeNonNegative¾$inputSequenceEmptyß"invalidTupleTypesþkeyNotFound=keyNotFoundAltw0listsHadDifferentLengths»ZG€óŠT ñU¾d:\Depot\staging\src\fsppack\FsSrGen\FsSrGen\obj\x86\Debug\FsSrGen.pdb €8€P€h€€âx àê x4VS_VERSION_INFO½ïþ  ?ØStringFileInfo´000004b08Assembly Version1.9.7.80FileVersion1.9.7.84ProductVersion1.9.7.8DVarFileInfo$Translation°À ð6fsharp-3.0.34/lib/bootstrap/2.0/FSharp.PowerPack.targets0000775000175000017500000000551612260314606021634 0ustar chrischris CallFsLex;CallFsYacc;$(CompileDependsOn) false false fsharp-3.0.34/lib/bootstrap/2.0/FSharp.SRGen.targets0000775000175000017500000000625212260314606020715 0ustar chrischris ProcessFsSrGen;$(BuildDependsOn) false fsharp-3.0.34/lib/bootstrap/2.0/FSharp.Core.dll0000775000175000017500000623100012260314606017726 0ustar chrischrisMZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELóùJà! †ޤ À 5f@/¤\À¸à ”¤  H.textt… † `.rsrc¸Àˆ@@.reloc àŽ@Bk¤H@Ò Ðá _ Pá €0 ( &*0*0, (+-***0*0( &}*0{*0 (*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0( &}*0{*0 ( &*0( &}*0{*0( &}*0{*0 (*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0( &}*0{*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0( &}}}*0{*0{*0{*0( &}}}*0{*0{*0{*0 (**0 (**0( &} *0{ *0( &}!*0{!*0( &}"*0{"*0( &}#*0{#o ¥*0( &}$*0{$*0&( &}&}%}'}(*0{&*0{%*0{'*0 }'*0{(*0 }(*0 (A*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0 ( &*0( &})*0{)*0 rp(H*0*0*0( *0s *0 uZþ*0s *0 u[þ*0 uZ,+*0» þ9§þ9œ  uZ,+   uZ,+ 3ru[,3t[ t[ ({  { þ(+*tZtZ({  {    þ(+*Y**þ,**0¥þ( *0¾ ¥ þ9ž¥þ9Ž  uZ,+   uZ,+ 3du[,-t[ t[ { { þ(+*tZtZ{  {    þ(+*Y**¥þ,**0o þ,f u[,-t[  ¹y7ž{ Œ\({bcXXX *tZ  ¹y7ž { Œ]({bcXXX **0 ( ( *0­ þ9›u 9Œ  uZ,+   uZ,+ 3du[,-t[ t[ { { þ(+*tZtZ{  {    þ(+***þþ*0¥ þ9“þ9ˆ  uZ,+   uZ,+ 3`u[,*t[ t[ {  { þ(+*tZtZ{ {   þ(+***þþ*0u , þ( **0( } *0{ *0( } *0{ *0( } *0 { { *0( } *0 { { *0( *0s *0 u`þ*0s *0 uaþ*0s! *0 ubþ*0 u`,+ ua,+*0#þ9þ9u`,+ ua,+ u`,+ ua,+ @¿ub-ua-<u`-jtb tb ({"  {" þ(+*tata({#  {#    þ(+*t` t` ( {$   {$  þ(+*Y**þ,**0¥þ(% *0¥ þ9þ¥þ9îu`,+ ua,+ u`,+ ua,+ @©ub-ua-6u`-\tb tb {" {" þ(+*tata{#  {#    þ(+*t` t`  {$   {$  þ(+*Y**¥þ,**0¹þ9­ ub-ua-6u`-\tb  ¹y7ž{" Œ\({bcXXX *ta  ¹y7ž {# Œ]({bcXXX *t` ¹y7ž{$ Œc({bcXXX **0 ( (& *0 þ9ûu 9ìu`,+ ua,+ u`,+ ua,+ @©ub-ua-6u`-\tb tb {" {" þ(+*tata{#  {#    þ(+*t` t`  {$   {$  þ( +***þþ*0þ9òþ9çu`,+ ua,+ u`,+ ua,+ @¤ub-ua-3u`-Xtb tb {"  {" þ(+*tata{# {#   þ(+*t` t`  {$   {$    þ( +***þþ*0u , þ(' **0(( }" *0{" *0(( }# *0{# *0(( }$ *0{$ *0( }) *0 {) {" *0( }* *0 {* {# *0( }+ *0 {+ {$ *0( }, *0s- *0 (. þ*0s/ *0 (. þ*0s0 *0 (. þ*0s1 *0 (. þ*0{, *0+þ9þ9 {, {, @ó(. E3j¡tj tj ({2  {2 þ(+*titi({3  {3    þ(+*th th ( {4   {4  þ(+*tgtg({5 {5 þ( +*Y**þ,**0¥ þ(6 *0¥  þ9þ¥ þ9î{, {, @Õ(. E-\‹tj tj {2 {2 þ(+*titi{3  {3    þ(+*th th  {4   {4  þ(+*tgtg{5 {5 þ( +*Y**¥ þ,**0çþ9Û (. E-\tj  ¹y7ž{2 Œ\({bcXXX *ti  ¹y7ž {3 Œ]({bcXXX *th ¹y7ž{4 Œc({bcXXX *tg ¹y7ž{5 Œk({bcXXX **0 ( (7 *0 þ9ûu  9ì{, {, @Õ(. E-\‹tj tj {2 {2 þ(+*titi{3  {3    þ(+*th th  {4   {4  þ( +*tgtg{5 {5 þ( +***þþ*0 þ9ñþ9æ{, {, @Ï(. E*X†tj tj {2  {2 þ(+*titi{3 {3   þ(+*th th  {4   {4    þ( +*tgtg{5 {5 þ( +***þþ*0!u  , þ(8 **0(9 }2 *0{2 *0(9 }3 *0{3 *0(9 }4 *0{4 *0(9 }5 *0{5 *0( }: *0 {: {2 *0( }; *0 {; {3 *0( }< *0 {< {4 *0( }= *0 {= {5 *0( }> *0s? *0 (@ þ*0sA *0 (@ þ*0sB *0 (@ þ*0sC *0 (@ þ*0sD *0 (@ þ*0{> *0$þ,þ, þ(+**þ,**0¥ þ(E *0*#¥  þ, þ(+*¥ þ,**0*þ9 (@ E-\¾tt  ¹y7ž{F Œ\({bcXXX *ts  ¹y7ž {G Œ]({bcXXX *tr ¹y7ž{H Œc({bcXXX *tq ¹y7ž{I Œk({bcXXX *tp  ¹y7ž {J   Œu({bcXXX **0 ( (K *0þ, þ(+*þþ*05+þ9#þ9{> {> @(@ E*X†´tt tt {F  {F þ(+*tsts{G {G   þ(+*tr tr  {H   {H    þ( +*tqtq{I {I þ( +*tptp{J {J þ(+***þþ*0#u  , þ(L **0(M }F *0{F *0(M }G *0{G *0(M }H *0{H *0(M }I *0{I *0(M }J *0{J *0( }N *0 {N {F *0( }O *0 {O {G *0( }P *0 {P {H *0( }Q *0 {Q {I *0( }R *0 {R {J *0( }S *0sT *0 (U þ*0sV *0 (U þ*0sW *0 (U þ*0sX *0 (U þ*0sY *0 (U þ*0sZ *0 (U þ*0{S *0:,þ,)þ,!{S {S 3 þ(+*Y**þ,**0¥þ([ *06.¥ þ,¥þ, þ(+**¥þ,**0þ, (+**0 ( (\ *0'.þ,u , þ(+**þþ*0"þ,þ, þ(+**þþ*0.u , þ(] **0(^ }_ *0{_ *0(^ }` *0{` *0(^ }a *0{a *0(^ }b *0{b *0(^ }c *0{c *0(^ }d *0{d *0( }e *0 {e {_ *0( }f *0 {f {` *0( }g *0 {g {a *0( }h *0 {h {b *0( }i *0 {i {c *0( }j *0 {j {d *0( }k *0sl *0 (m þ*0sn *0 (m þ*0so *0 (m þ*0sp *0 (m þ*0sq *0 (m þ*0sr *0 (m þ*0ss *0 (m þ*0{k *0:,þ,)þ,!{k {k 3 þ(+*Y**þ,**0¥þ(t *0L0¥ þ,/¥þ,"{k {k 3 þ(+*Y**¥þ,**0þ, (+**0 ( (u *0;0þ,,u , {k {k 3 þ(+***þþ*06,þ,'þ,{k {k 3 þ(+***þþ*01u , þ(v **0(w }x *0{x *0(w }y *0{y *0(w }z *0{z *0(w }{ *0{{ *0(w }| *0{| *0(w }} *0{} *0(w }~ *0{~ *0( } *0 { {x *0( }€ *0 {€ {y *0( } *0 { {z *0( }‚ *0 {‚ {{ *0( }ƒ *0 {ƒ {| *0( }„ *0 {„ {} *0( }… *0 {… {~ *0(† }}€}*0(† *0 (‡ *0 (ˆ *0{*0{€*0{*0j3þ,a ¹y7žtq(1bcXXX ¹y7žtq(0bcXXX ¹y7žtq(/ , (‰ +bcXXX **0 ( o2*0w5þ,hu ,\(+-*tq(/tq(/(Š ,3tq(0tq(03tq(1tq(1þ****þþ*0(ïrp(‹ þoŒ *0sþ,dþ,\(+-*tq(/tq(/(Š ,3tq(0tq(03tq(1tq(1þ****þþ*05u ,(6**0 ( &*0 ( &*0s *0sŽ þ s *0s‘ *0s’ þ“ s *0(7uš ,  þo” *o• þo– *0G:u , þo— *už , o˜ þo™ *oš þ(+*0q>u¡ , þoœ *u¢ , o þož *u¤,oŸ þ(+*o¡ þ(+*0ŸCu¦ , þo£ *u§ , o¤ þo¥ *u©,o¦ þ( +*uª,o¨ þ(!+*oª þ("+*0s¬ *0s­ *0s® *0s¯ *0s° *0s± *0{² *0}² *0( }² *08Dþ,'þ,( {² {² þ(+**þ,**0¥²þ(³ *0CF¥² þ,&¥²þ,{² {² þ(+**¥²þ,**0/Gþ,& ¹y7ž{² Œ\({bcXXX **0 ( (´ *04Fþ,%u² ,{² {² þ(+**þþ*0{² *0 (µ *0/Hþ, þ,{² {² þ(+**þþ*0Iu² , þ(¶ **0( *0s¸ *0*0( }¹ *0{¹ *0 K ,+*0gLþ,Vþ,N,+ ,+ 3.,)  ({¹  {¹ þ(+**Y**þ,**0¥³þ(º *0rM¥³ þ,U¥³þ,H,+ ,+ 3(,#  {¹ {¹ þ(+**Y**¥³þ,**0:Nþ,1 - *  ¹y7ž{¹ Œ\({bcXXX **0 ( (» *0fMþ,W(#+-*¥³ ,+ ,+ 3(,#  {¹ {¹ þ(+***þþ*0þ*0þ*0ZQr-p(¼ Œ\ ,-uB , (½ ¥Co¾ +o¿ +r9prCp(À (À *0ZRþ,Kþ,C,+ ,+ 3%,   {¹  {¹ þ(+****þþ*0(#+-*¥³þ(Á *0 s €Ã *0( *0sÄ *0 {Å þ*0~à *0 {Å þ*0( }Æ }Å *0{Æ *0{Å *0 {Å þ*0 Tþ9Œþ9{Å þ {Å þ 3e{Å ,[  ({Æ  {Æ (+/*1*({Å  {Å   (Ç **Y**þ,**0¥´(È *0©U¥´ þ9‰¥´þ9y{Å þ {Å þ 3]{Å ,S  {Æ {Æ (+/*1* {Å {Å   8nÿÿÿ*Y**¥´þ,**0ZVþ,Q {Å - *  ¹y7ž{Å (É bcXXX ¹y7ž{Æ Œ\({bcXXX **0 ( (É *0‡Wþ9uu´ ,i{Å þ {Å þ 3O{Å ,E  {Æ {Æ (+,! {Å {Å 8Šÿÿÿ****þþ*0nXþ,_þ,W{Å þ {Å þ 3={Å ,3  {Æ  {Æ (+,{Å {Å +£****þþ*0Yu´ ,(Ê **0 ($+*0CZ($+  è1rGp*<%rcp¤<%þDo¿ ¤<(Ë *0*{Å -(ïrwp(‹ oŒ sÌ z{Æ *0*{Å -(ïrwp(‹ oŒ sÌ z{Å *0 (%+*0ü[{Å 9ë {Å {Å 9f{Å {Å {Å 9~{Å {Å {Å :0{Æ {Æ {Æ sÍ r›p(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î rŸp(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î rŸp(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î r¥p(Î þo¿ *{Å  {Æ {Æ {Æ sÍ r›p(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î rŸp(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î rŸp(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î r©p(Î þo¿ *{Æ {Æ sÍ r›p(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î rŸp(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î r¥p(Î þo¿ *{Æ sÍ r›p(Î Œ\,4uB,(½ ¥Co¾ +  o¿ +r9p(Î r¥p(Î þo¿ *r¹p*0 sÏ ¥*0sÏ ¥¥ *0( &}Ó 2}Ô *0)]{Ó (&+ \  {Ó ('+*0,_{Ö ," {Ö {Ô 1*X+Ö*0( &}*0{*0~Ž*0 €/~/&*0( &}× }Ø *0`þ\ŒcsÙ *0 sÙ *0þ{Ø ,**0¾cþ{Ø 9©(Ú þ{Ø 9~u{ ,  {zuc,T~ŽŒ{}Ø oÛ }× }Ø Þts…Œ{}Ø þ Þr¿psÜ z{× Þ (Ý &Ü*{× *W w—« 0‚dþ{Ø ,+,.(Þ Œ\((+,r×p*(Þ þ\o¿ *þ{Ø u{ ,( {~Ž(ß ,råp*þo¿ *rÿp*0 f( &þæ}à }á *0wi{á , {à +  oâ YE**oÑ uæ ,oã - }à +sä }à }á 8‰ÿÿÿ0 þoå *0 oå ¥ *0 {á ,{à þoæ *þoæ *0 {á ,{à þoç *þoç *0%{á ,{à oæ +oæ Œ\*0(è *0 ksé z0( &}ï }ð *0{ï oñ &*0{ï oñ &*0{ð þoÑ *0{ð ¥þoÐ *0( *0 sò *0só *0*0m u»,+ u¼,+*0(ô }õ }ö *0{õ *0{ö *0,(ô }÷ }ø }ù }ú }û *0{÷ *0{ø *0{ù *0{ú *0{û *0( }ü *0 {ü {õ *0 {ü {ö *0( }ý *0 {ý {÷ *0 {ý {ø *0 {ý {ù *0 {ý {ú *0 {ý {û *0( &}þ }ÿ } *0o()+ s € *0yt{ÿ (*+ ŒÀ,+ rps zŽi Á Y23£Â( ( s ¤ÁXX3Í } *0…u()+}þ { ŒÃ,+ rps zŽi  Y2# £Á(++¤ÂXX3Ý {þ (,+}ÿ } *0~ *0o()+ (-+s *0~ *0o()+ (-+( *0{þ *0{ÿ *0 {þ {þ {ÿ (.+s *0 {ÿ þ*0{þ {ÿ (/+*0{ÿ þ(0+*0{ÿ þ(1+*0 {þ {þ {ÿ (2+s *0{ÿ þ(3+*0(  {ÿ þ(4+*0{þ {ÿ (5+*0{ÿ þ(6+*0{þ {ÿ (7+s  *0{þ {ÿ (8+s  *0Bw{þ {ÿ (9+ (  (  {þ s {þ s s  *0{ÿ (:+*0{þ {ÿ (;+*0{þ {þ {ÿ (<+s *0{þ {ÿ (=+*0 {ÿ (>+*0 {ÿ (*+*0o()+ (?+s *0¥| ¥ o oë ,ho ( ( s ( ( (@+ b X wX (A+ b X wX + Þu   ,  oê &Ü&Ü&( *tƒ0}u¿ ,¥o þ**0( *0 {ÿ (B+*0{ÿ (B+¥ *0{þ {ÿ (/+*0(ïr'p(‹ oŒ s z0s (C+(D+¥"*0s (E+(F+¥Ê*0(ïr'p(‹ oŒ s z0{þ {ÿ (;+*01{þ {ÿ (;+,{þ {ÿ (/+]**0(ïr'p(‹ oŒ s z0(ïr'p(‹ oŒ s z0(ïr'p(‹ oŒ s z0(ïr'p(‹ oŒ s z0L~( {þ {ÿ (;+,-( {þ {ÿ (/+ ( þ(G+**0{ÿ þ(H+*0*0{ÿ (:+*0Fu¿ , s ¥ ¥ (I+*(ïrMp(‹ oŒ rips z0( &}) *0(}s* {) è¥ (J+(K+(L+*0{¦*0{§*0( }¦}§*0( *0s+ *0 s, *0*0 uÎ,+ uÏ,+*0$(- }. }/ }0 }1 *0{. *0{/ *0{0 *0{1 *0(- }2 *0{2 *0( }3 *0 {3 {. *0 {3 {/ *0 {3 {0 *0 {3 {1 *0( }4 *0 {4 {2 *0( &}5 }6 }7 *0o()+ s8 €9 *0{6 (M+}7 *0+()+}5 {5 {7 (N+}6 }7 *0{5 *0{6 *0~9 *0{5 {5 {6 (O+s8 *0{5 {5 {6 (P+s8 *0{6 (Q+*0{5 {6 (R+*0{6 þ(S+*0s: {6 þ(T+*0 {6 þ*0Rƒ{6 -s; *{5 {6 (U+ (< (= {5 s8 {5 s8 s; *0*{6 -*{5 {5 {6 (V+s8 *0!…(W+ s> {6 (X+s? *0{6 þ(Y+*0{6 þ(Z+*0<†{6 -*{6 -*{5 {5 {6 {6 ([+s8 *08{6 -*{6 -*{5 {5 {6 {6 (\+s8 *0=†{6 -*{6 -*{5 {5 {6 {6 (]+s8 *0s@ ~9 (^+*0 sA (_+*0{5 {6 {6 (`+þ*0{5 {6 {6 (`+*0 {6 (a+*0 {6 (a+*0 {6 (b+*0{5 {6 þ(c+*0{5 {6 þ(d+*0{5 {6 {6 þ(e+*0{5 {6 {6 þ(e+*0{5 {6 {6 þ(f+*0{5 {6 {6 þ(f+*0 {6 (g+*0 {6 (M+*0`‡ ¥oÑ oë ,#oî  (@+bX wX +Õ Þu , oê &Ü&Ü&( */>0(B *0‰uÒ , ¥o þ**0 ~9 (C *0o()+ (h+(8 *0sD *0o()+ (N+s8 *0{5 {6 (i+{6 (`+*0 rqps z0 rqps z0 rqps z0{5 {6 (R+*0{6 þ(j+*0*0{6 (Q+*0 {6 (k+*0{6 (k+¥ *0( &}L *0Š{L è¥(l+(D+*0( &}·}¸}¹*0J{¹ , {M {¸þoN *{·0(±  (O }¹{¸þoN *0{·*0{·{¸0(· *0{·{¸0(¼ þoP *0{·{¸0(¼ þoQ *0{¸*0"{·oR r—p(À (G(À *0{·oS {¸X*03u• ,& {·{·(m+,{¸{¸þ***0 Œ,+ r›ps zþ(Ð *0/‘, {T + Œ,+ r›ps z(á *08“Œ,+ r›ps z0(è  , {T + (² *01Œ,+ r›ps z0(è Ð*(U þ(Ÿ *0Œ,+ r›ps z(ß *0PŒ,+ r£ps zŒ,+ r±ps z(¢ %¤%¤þoV *0O”ŒÝ,+ r½ps zs" (n+,!(ïrÉp(‹ oŒ r½ps zþ(Ó *0r÷p(ë (Ô *0%Œ,+ r ps z0(è (Þ *0&‘, {T + r%p(ê (â *0J•, {T + Œ,+ r;ps z(è  (¾ s$ (¯ (o+*0/‘, {T + Œ,+ rOps z(æ *07‘, {T + Œ,+ rOps z(é (â *0 sW ŒÏ*0.‘, {T + r%p(ê (å þoX *0k–Œ,+ rkps zŒ,+ rups z(Y 0(á -!(ïrƒp(‹ oŒ rups zþoZ *0i—Œ,+ rups z, {T + (Y (á -!(ïrƒp(‹ oŒ rups z(ã þo[ *0Œ,+ rkps zs( *0&‘, {T + r%p(ê (ã *0&‘, {T + r%p(ê (å *0&‘, {T + r%p(ê (ä *0 ò™Œ,+ r ps zÐ*(U (Ÿ -.o\ (ïr£p(‹ oŒ (] r ps zŒ«,+ rÅps z(Þ  (^ (_ Ðà(U o` , oa +%¤% ¤oV rãp 8%Œ«¤(½ þob *02Œá,+ ríps zr÷p(ë (Ú þoX *0išŒ,+ r ps z(Y (Ð -3(Y o\ (ïrp(‹ oŒ (] r ps z(Ù þo[ *0·œŒ,+ r ps z(Y (Ð -3(Y o\ (ïrp(‹ oŒ (] r ps z(Ù o[ /+ Žiþþ,/r1p(Y o\ þDo¿ (x r[ps z £*0r÷p(ë (Ù *0r÷p(ë (Ý *0r÷p(ë (Ú *0r÷p(ë (Û *0B‘Œ•,+ rgps z, {T + {·{¸(½ þoX *0:‘Œ•,+ rgps z, {T + {·{¸(½ *0:‘Œ•,+ rgps z, {T + {·{¸(¼ *0l, {T + (  Œ,+ r;ps z(è  (¾ (¹ oc  (¸ o[  sFsd *0?•, {T + Œ,+ r;ps z(è  (¾ (¹ *0?•, {T + Œ,+ r;ps z(è  (¾ (º *0<•Œ•,+ rgps z, {T + {· {¸(¸ *0F•Œ,+ r{ps z, {T + (Y (é (ã þo[ *0( &}e *0Ÿ{e , (f **0sg *0( &}h *0Å£Ð\(U rƒp6oi oj ŽiY YXY2!X£¤XX3ß Œæ,+ rps zŽi  Y2$£ok ¤XX3Ü€l *0_Ÿ{h ,S~l Ži3#%¤%Œ]¤(f *%¤Œ](g(p+(f **0sm *0( &}n *0¥{n ,  {o **0, (p +}n *0§{n , {o oq **0sr *0{¾*0{¿*0}¾*0( }¾}¿*0}Ä}Å*00(_ ,(` ~Àþ+,~Á(` £œ**0(†s…*0(†s…*0(†s…*0(Ÿ,*{Ä*0{Ä*0{Å*0Ï,{Ä {Ä YEgYEr‘pr½ps zYE"YE+Ö{Å{Å( *{Å( , {Å( **YE+YE+‹{Å( , {Å( **{Å{Å( *0 (þ*0Å©{Ä {Ä YESYEr‘pr½ps zYE)YE+Ö{Å {Å  ( þ**YE.YE+Ÿ{Å( -*{Å( þ*{Å {Å  ( þ*0È©{Ä {Ä YEqYEr‘pr½ps zYE)YE+Ö{Å {Å  ( þ*{Å( -*{Å( þ*YEYE8~ÿÿÿ*{Å {Å  ( þ*0(,*(,**0{Ä{Å(ó X*0`Z{Ä YE#YE r‘psÌ z{Å(\ *{Å( ,rÁp*rÅp{Å(\ (À *0þo¿ *0«(q+-*¥ q(*0«q {Ä{Å(ó X*0I2(V (†(…* €3je(W (†(…*e(V (†(…*0e!2(W (†(…*!€3%!ÿÿÿÿÿÿÿ(W ( ( (†(…*e(W (†(…*0~Â*0~Ã*0 ¬{ÄZ {Å (†s…*0M¬/%{Äe e{Å($  (†s…*{Ä {Å($  (†s…*0<¬(  þþ,(  (†s…*(  (†s…*0­(  (†s…*0 {Å( *0{Ä3 {Å( **0æ¯ {Å( ,* {Å( ,*{Ä {Ä YE^YEr‘pr½ps zYE"YE+Ö{Å{Å(ž*{Å{Å(*YE"YE+”{Å{Å(*{Å{Å(ž(›*0Ô¯ {Å( ,*{Ä {Ä YE^YEr‘pr½ps zYE"YE+Ö{Å{Å(*{Å{Å(ž*YE'YE+”{Å{Å(ž(›*{Å{Å(*0l° {Å( ,* {Å( ,*( ,*( ,*{Å{Å(D  {Ä{ÄZ (†s…*0²{Å{Å(J  (s (t {Ä {Ä YEv YEr‘pr½ps zYE.YE+Ô(†s…(†s…*(†s…(†s…*YE1YE8wÿÿÿ(†s…(†s…*(†s…(†s…*0«s— (¤*0³s— (¤ *0"­{Å{Å(N  (†s…*0{Ä3{Å( þ**0{Ä3{Å( þ**0{Ä3(›**0Ó´{Ä {Ä YEuYEr‘pr½ps zYE0YE+Ö{Å {Å  ( þþ*{Å( , {Å( **YEYE8zÿÿÿ*{Å {Å  ( þþ*0д{Ä {Ä YEZYEr‘pr½ps zYE0YE+Ö{Å {Å  ( þþ**YE+YE+˜{Å( , {Å( **{Å {Å  ( þþ*0|µ/!(ïrÉp(‹ oŒ r÷ps zs— {Å (O (J (s ( ,+{Ä {Å{Å(S   (†s…*0E·{Å(X   ÿÿÿ5 {ÄZ*{Ä3  €þ+, €*su z0R¹{Å(Y  !ÿÿÿÿÿÿÿ5 {ÄjZ*{Ä3!€þ+, !€*su z0LZ{Ä YE)YEr‘pr½ps z{Å(U *{Å(U e*0n»(v - rûpsw z(x rÅp(Š ,/Y(y {z  YX(x (^  (†s…*(^  (†s…*0 {Å(_ *0U¼(¨,!(ïrÉp(‹ oŒ r½ps z(©,{Å(b  (†s…*~Â*0*0s˜*0s—*0-«(q+-r7prips z¥ q(‘*0 €‡~‡&*0 sÇ€Æ*0( *0sÊ*0 u¢þ*0sÈ*0 u¡þ*0~Æ*0 u þ*0¾ u¢,+ u¡,+*0iÁþ,`  u - u¡- u¢-$ *t¡  ¹y7ž{ÊbcXXX *t¢  ¹y7ž{ËbcXXX **0 ( (Â*0¸Âþ9¦už 9—u¢,+ u¡,+ u¢,+ u¡,+ 3W  u¡-  u¢-!*t¡ t¡ {Ê{Êþ*t¢t¢{Ë{Ëþ***þþ*0²Ãþ9 þ9•u¢,+ u¡,+ u¢,+ u¡,+ 3Uu¡- u¢-*t¡ t¡ {Ê {Êþ*t¢t¢{Ë{Ëþ***þþ*0¾už ,(Å**0(º*0(º}Ê*0{Ê*0(º}Ë*0{Ë*0( }Ì*0( }Í*0 {Í{Ê*0( }Î*0 {Î{Ë*0( *0 sä*0 uªþ*0sÝ*0 u©þ*0 sÙ*0 u¨þ*0Å uª,+ u©,+*0(Ñ}Ò}Ó}Ô*0{Ò*0{Ó*0{Ô*04(Ñ}Õ}Ö}×}Ø}Ù}Ú*0{Õ*0{Ö*0{×*0{Ø*0{Ù*0{Ú*0(Ñ}Û}Ü}Ý*0{Û*0{Ü*0{Ý*0( }Þ*0 {Þ{Ò*0 {Þ{Ó*0 {Þ{Ô*0( }ß*0 {ß{Õ*0 {ß{Ö*0 {ß{×*0 {ß{Ø*0 {ß{Ù*0 {ß{Ú*0( }à*0 {à{Û*0 {à{Ü*0 {à{Ý*0{á*0{â*0{ã*0{ä*0{å*0{æ*0{ç*0{è*0{é*0{ê*0T( }á}â}ã}ä}å}æ}ç}è }é }ê*0 *rupsÞ (½ ¥CPdd 's*0( &}{ *0{{ *0 (| &*0fÇ( &}í}ì~î}ð, {} +}ñ~ï (Ú ~î!X€î Þ (Ý &Ü&*BZ 0{í*0{ñ*0{ì*0{ð*0OÉŒ<,+ r}ps zŒ,+ r›ps z~ï (Ú (-  Þ (Ý &Ü*9 D 0{í*0(S *0Êu² ,  (~ **0ðÌu² 9á (~ ,*( ( ( ,*( o€ ( o€ /+þ , *( o (‚ ( o (‚ /+þ,*( oƒ o„ ( oƒ o„ ( ,*( ( /*þ**0 €«~«&*0( }ò*0s+*0 (þ*0s(*0 (þ*0s&*0 (þ*0s#*0 (þ*0{ò*0þ, (. **0 ( (*0;Îþ,,u³ , {ò {ò 3 þ(/ ***þþ*0þ, þ(5 *þþ*0Ïu³ , þ(!**0(}÷}ø*0{÷*0{ø*0(}ù*0{ù*0(}ú}û*0{ú*0{û*0(}ü}ý*0{ü*0{ý*0( }þ*0 {þ{÷*0 {þ{ø*0( }ÿ*0 {ÿ{ù*0( }*0 {{ú*0 {{û*0( }*0 {{ü*0 {{ý*0¤s:€s:€s:€s:€s:€s:€s:€ s:€ s:€ s:€ s:€ s:€ s:€!s:€*0( }*0sµ*0 (ƒ#þ*0s²*0 (ƒ"þ*0~*0 (ƒ!þ*0~*0 (ƒ þ*0~*0 (ƒþ*0~ *0 (ƒþ*0s°*0 (ƒþ*0~ *0 (ƒþ*0~ *0 (ƒþ*0~ *0 (ƒþ*0~ *0 (ƒþ*0~*0 (ƒþ*0s®*0 (ƒþ*0s¬*0 (ƒþ*0sª*0 (ƒþ*0s¨*0 (ƒþ*0s¦*0 (ƒþ*0s¤*0 (ƒþ*0s¢*0 (ƒþ*0s *0 (ƒþ*0sž*0 (ƒþ*0sœ*0 (ƒþ*0sš*0 (ƒ þ*0s˜*0 (ƒ þ*0s–*0 (ƒ þ*0s”*0 (ƒ þ*0s‘*0 (ƒ þ*0s*0 (ƒþ*0s*0 (ƒþ*0s‹*0 (ƒþ*0s‰*0 (ƒþ*0~*0 (ƒþ*0~*0 (ƒþ*0~*0 (ƒþ*0~*0 (ƒþ*0~*0 (ƒþ*0{*0þ, (0 **0 ( („*0;Ñþ,,u½ , { { 3 þ(1 ***þþ*06,þ,'þ,{ { 3 þ(6 ***þþ*0Òu½ , þ(‡**0(:}5*0{5*0(:}6*0{6*0(:}7*0{7*0(:}8*0{8*0 (:}9}:*0{9*0{:*0 (:};*0{;*0 (:}<*0{<*0 (:}=*0{=*0 (:}>*0{>*0(:}?*0{?*0(:}@*0{@*0(:}A*0{A*0(:}B*0{B*0(:}C*0{C*0(:}D*0{D*0(:}E*0{E*0(:}F*0{F*0(:}G*0{G*0(:}H*0{H*0(:}I*0{I*0"(:}J}K*0{J*0{K*0#(:}L*0{L*0( }M*0 {M{5*0( }N*0 {N{6*0( }O*0 {O{7*0( }P*0 {P{8*0( }Q*0 {Q{9*0 {Q{:*0( }R*0 {R{;*0( }S*0 {S{<*0( }T*0 {T{=*0( }U*0 {U{>*0( }V*0 {V{?*0( }W*0 {W{@*0( }X*0 {X{A*0( }Y*0 {Y{B*0( }Z*0 {Z{C*0( }[*0 {[{D*0( }\*0 {\{E*0( }]*0 {]{F*0( }^*0 {^{G*0( }_*0 {_{H*0( }`*0 {`{I*0( }a*0 {a{J*0 {a{K*0( }b*0 {b{L*0( &}c}d*0{c*0{d*0,Ôuë ,  {c {c  ( þ( **0{cþoS *0((ë(ù *0ús8  s:  r‡p(Ÿ  s<  s> {c(@ªtµ{÷(ƒE$Êù((@ªtµ{÷(ƒE$á±nÞ$v#§T Ø r ã ¬ × EòL ¨ j™T ృ‚ÑG (ED_ºtµ{÷(ƒE$Qk"s@ r‘ps… (r+{cþo† *{ø  (s+ rËp(Ÿ  (µ (¹ (¬ *{÷tÑ {ø{‡ ,“{ø  {‡ {‡ :yÿÿÿ {H  {ˆ   (( oj Ži (4 ,s{‰ (Š {‰ (‹  o\ (Ÿ (Œ ( (t+(ë(Œ ( (u+(u+ ráp(Ÿ  (µ (¹ (¬ * o\ (Ÿ  (ë(Œ ( (  ráp(Ÿ  (µ (¹ (¬ *{ø  (s+ rùp(Ÿ  (µ (¹ (¬ *t¶{ù( (Ÿ *t·{ú{û ( (Ÿ  (ë(Œ ( (  rp(Ÿ  (µ (¹ (¬ *rp(Ÿ *{ø{‡ 9ýÿÿ{ø  {‡ {‡ 9ôüÿÿ {‡ {ˆ {c(@Ðüÿÿt·{‡ {‡ :¶üÿÿ{ú {ˆ  {û( (Ÿ  (ë(ë(Œ ( ( (  rp(Ÿ  (µ (¹ (¬ *{÷t¿{5 {ø  o\ (Ÿ  (s+(  rp(Ÿ  (µ (¹ (¬ *{÷tÀ{6{ø r3psŽ (v+o (Ÿ  (s+(  r9p(Ÿ  (µ (¹ (¬ *{÷tÁ{7{ø  (s+r3psŽ (v+o (Ÿ (Œ ( (u+ rSp(Ÿ  (µ (¹ (¬ *{÷tÂ{8 {ø  (s+ rop(Ÿ  (µ (¹ (¬ *{÷tÃ{ø{‡ 9½úÿÿ{ø  {‡ {‡ :£úÿÿ{9 {: {ˆ   (ë(Œ ( r3ps (w+oN (Ÿ (Œ ( (u+ rp(Ÿ  (µ (¹ (¬ *{÷tÓ{ø{‡ :úÿÿ{J{K r3ps‘ (x+o’ (Ÿ (Œ (  r“p(Ÿ  (µ (¹ (¬ *{÷tÍ{ø{‡ 9œùÿÿ{ø  {ˆ  {D {‡  (2 r3ps“ (y+o” (Ÿ (s+  (µ (¾ (Œ ( ( (  rŸp(Ÿ  (µ (¹ (¬ *{÷tÎ!!{E{ø r3ps“ (y+o” (Ÿ  (s+  (µ (¾ (Œ ( ( (  rŸp(Ÿ  (µ (¹ (¬ *{÷tÄ"{ø{‡ 9køÿÿ{ø "{;# {ˆ   {‡  (2 r3ps• (z+#o– (Ÿ (s+  (µ (¾ (Œ ( ( (  r©p(Ÿ  (µ (¹ (¬ *{÷tÅ$${<#{ø r3ps• (z+#o– (Ÿ  (s+  (µ (¾ (Œ ( ( (  r©p(Ÿ  (µ (¹ (¬ *{÷tÆ%{ø{‡ 9:÷ÿÿ{ø %{=# {ˆ   {‡  (2 r3ps• (z+#o– (Ÿ (s+  (µ (¾ (Œ ( ( (  rÁp(Ÿ  (µ (¹ (¬ *{÷tÇ&&{>#{ø r3ps• (z+#o– (Ÿ  (s+  (µ (¾ (Œ ( ( (  rÁp(Ÿ  (µ (¹ (¬ *{÷tÈ'{ø{‡ 9 öÿÿ{ø  {‡ {‡ :ïõÿÿ {ˆ  '{?( (2 r3ps— ({+(o˜ (Ÿ (Œ ( (  rÙp(Ÿ  (µ (¹ (¬ *{÷tÉ){ø{‡ :oõÿÿ){@(r3ps— ({+(o˜ (Ÿ (Œ ( (  rÙp(Ÿ  (µ (¹ (¬ *{÷tÊ*{ø{‡ 9þôÿÿ{ø  {‡ {‡ 9äôÿÿ {‡ {‡ {‡ :Êôÿÿ{ˆ   {ˆ *{A((2 r3ps— ({+(o˜ (Ÿ  (ë(Œ ( ( (  rëp(Ÿ  (µ (¹ (¬ *{÷tË+{ø{‡ 95ôÿÿ{ø  {‡ {‡ :ôÿÿ {ˆ  +{B(r3ps— ({+(o˜ (Ÿ  (ë(Œ ( ( (  rëp(Ÿ  (µ (¹ (¬ *{÷tÏ,{ø{‡ 9•óÿÿ{ø  {‡ {‡ :{óÿÿ,{F  {ˆ   (ë o\ (Ÿ (Œ ( (  rýp(Ÿ  (µ (¹ (¬ *{÷tÌ--{C.{ø r3ps™ (|+.oš (Ÿ (Œ (  (s+(u+ r p(Ÿ  (µ (¹ (¬ *{÷tÔ//{L {ø  o\ (Ÿ (Œ (  (s+(u+ rp(Ÿ  (µ (¹ (¬ *{÷tÐ00{G {ø  o\ (Ÿ (Œ (  (s+(u+ r9p(Ÿ  (µ (¹ (¬ *{÷tÒ11{I {ø  o\ (Ÿ (Œ (  (s+(u+ rKp(Ÿ  (µ (¹ (¬ *{ø  (s+ r]p(Ÿ  (µ (¹ (¬ *{ø{‡ 9Vñÿÿ{ø  {ˆ {c(@2ñÿÿt¶2 {‡ {‡ 9ñÿÿ {‡ {‡ {‡ :þðÿÿ2{ù{ˆ  ( (Ÿ  (ë(Œ ( (  rqp(Ÿ  (µ (¹ (¬ *{ø  (s+ rp(Ÿ  (µ (¹ (¬ *{ø{‡ 9lðÿÿ{ø  {‡ {‡ 9Rðÿÿ {‡ {‡ {‡ 98ðÿÿ{‡ 33{ˆ {c(@ðÿÿt·3{‡ {‡ :úïÿÿ{ú{û {ˆ  {ˆ 4( (Ÿ 4(ë(ë (ë(Œ ( ( ( (  r•p(Ÿ  (µ (¹ (¬ *{ø  (s+ r½p(Ÿ  (µ (¹ (¬ *{ø  (s+ rÑp(Ÿ  (µ (¹ (¬ *{ø{‡ 9ïÿÿ{ø  {‡ {‡ 9õîÿÿ {‡ {ˆ (3 559×îÿÿ{‡ {‡ 9Æîÿÿ{‡ 33{ˆ (3 669¨îÿÿ3{‡ {‡ :—îÿÿ6{› (œ 5{› (œ 76{› (  5{› (  {ˆ 44(ë7( (Ÿ (ë( (Ÿ  (ë(Œ ( ( ( ( (  rçp(Ÿ  (µ (¹ (¬ *{ø  (s+ r÷p(Ÿ  (µ (¹ (¬ *{ø  (s+ rp(Ÿ  (µ (¹ (¬ *{ø{‡ 9Çìÿÿ{ø  {ˆ (}+9§ìÿÿ{‰ (‹ {c(@‡ìÿÿtµ{÷(ƒ@lìÿÿ{ø{‡ 9[ìÿÿ{ø {‡ {‡ :Aìÿÿ{‰ (Š {‡ 3{ˆ   (t+3(s+(~+  (µ (¾  (ë(Œ ( (  r%p(Ÿ  (µ (¹ (¬ *0(+(û*0(+(+(ù¥*0 þ(€+*0 (M(¡*0(I(¢*0 (¯*0sB (+*0Œ,+ r?ps z(Â*0 Œ,+ r?ps z(Á*0$Œ,+ rUps z(W(¡*0 (¶*0 (Ã*0Œ!,+ rcps z(¹*0Œ!,+ rcps z(¸*0Œ!,+ rcps z(º*0 Œ!,+ rcps z(»*0 (­*0 (Æ*0 (È*0ŒS,+ rwps z(¼*0#Œ,+ r—ps z(;( *0(±*0Œ,+ r%ps z(³*0Œ,+ rµps z(·*0*Œ,+ rÍps zsD (‚+(Å*0 (´*03ûŒ,+ rçps z(ž , {Ÿ +(¾*02ûŒ,+ rçps z(ž , {Ÿ +(½*04ûŒ,+ rçps z(ž , {Ÿ +(À*0û(ž , {Ÿ +(¿*0(¬*0(O(¢*0 (®*0(C(¢*0(€+(²*0$Œ,+ rUps z(G(¡*0 (µ*0 üŒ Ð(U (=( *0$Œ,+ r—ps z(=( *0(«*0(K(«(¢*0 (Ä*0Œ,+ rùps z(*0(ƒ+*07Œ,+ rps zŒ,+ r-ps z(*0"Œ,+ r9ps zþ(ÿ*02Œ<,+ r}ps zÐ(U ((«(ƒ+*0 (å&*0*0(† &s  }e*0 {e(¡ *0{f*0{g*0}f}g*0{f,{f{g(C**0?{f,&{f{fo¢ ,{g{gþ**{fþ(„+*0(…+-*¥î(#*0){f,{foS |gþ[oS a**0 (#*0 (#þ*0 ("*0{h*0 }h*0þ{h ,(A**0ÿ{h þñ („+þ*0{h , (B*þî*0.{h,{h{hþo¢ *{hþ(„+*0(†+-*¥ï(.*0{h,{hþoS **0 (.*0 (.þ*0{i*0{j*0{k*0}i}j}k*0{i*0{j*0{k*0“s£ ( &(¤ }l!}mso(‡+}nþî}oþî }p}qsqþrs¥ (-}o(-}p*0!þïþï(:}q*0.þ{q/(ïrKp(‹ oŒ sÌ zs**00þ{q/(ïrKp(‹ oŒ sÌ z(>*0Ô þ{q/(ïrKp(‹ oŒ sÌ z|l(¦ E(YE-Ðñ(U o\ s§ z**{n(¨ ,_{n(© (Ú (ZÞ (Ý &Ü sw(ª (ˆ+{« -*(‰+¥ sz*† ‘ 0µþ{q/(ïrKp(‹ oŒ sÌ z|p(" Þ|o("&Ü Þe|l(¦ -+|l(¦ þ,8{n(¨ ,({n(© (Ú o¬  Þ (Ý &Ü&Ü&Ü&Ü&*((9–   '&Me0aþ{q/(ïrKp(‹ oŒ sÌ zþ{l E%YEÐñ(U o\ s§ z**0@þ{q/(ïrKp(‹ oŒ sÌ zþ{l3*þ{lþ*0‹þ{q/(ïrKp(‹ oŒ sÌ z(@,o­ þî*{n(© (Ú ([ Þ (Ý &Ü (® (¯ , o­ + *S ` 0\þ{q/(ïrKp(‹ oŒ sÌ z(@,*{n(© (Ú (] Þ (Ý &Ü&*BP 0 s:*0/þ{q/(ïrKp(‹ oŒ sÌ z(?*0+( &\}° }± }² }³ *0hH{² - r_psÜ z{° {± £\ {° {± þ\¤\{± X{° Ži]}± {² Y}² *0ˆ,{² {° Ži3>{° Žij!ÈZ!d[i {° ŽiX /+(´ +{° {³ ¤\{³ X{° Ži]}³ {² X}² *0{² *0¬(Š+ {² 1q{± {³ /{° {± {² (µ +H{° {± {° Ži{± Y(µ {° {° Ži{± Y{³ (µ +}° }± {² 3+{² }³ *0.( &s;}v{v(< s:}w*0 {w(<*0{v(=*0{w(?{v(?*0{w(?{v(?*0 sQ€x*0( *0~x*0&*0( &}y}z*0  (^*0"Z{zX}z{z  ,þþ*0({y-}z(¶ }y*ropsÜ z0*0 €n~n&*0( &}{*0sT}{{{(U*0{{*0{|*0{}*0{~*0{*0{€*0,( }|}}}~}}€*0{· *0{¸ *0( }· }¸ *0s¹ *0( }º *0{º *0&*0 ( &*0( *0 (‹+*0(Œ+*0*0 (+*0 (Ž+*0 ( *0 (+*0 (+*0 (‘+*0 (’+*0( &}» *0{» o¼ &*0(*0( *0 s½ (“+*0(ù{¾ (<*0#þ(ù{¾ (=(ùs;(¤ *0 s¿ (À *0)(ù{¾ (< , {Á + (”+*0)(ù{¾ (< , {Á + (§*0 s (•+*0.(ù{¾ (< , {Á + (–+*0ss‘s“(—+*0 s™(˜+*0,Z, {z + - s›(™+*s¥(š+*0s§(›+*0 sà (Ä *0sÅ (‹+*0>,' {z YEsÆ (‹+*(œ+*sÇ (‹+*0sÈ (‹+*0sÉ (+*0sÊ (ž+*0sË (Ÿ+*0( +sÌ sÍ sÎ *0sÏ (¡+*0 sÐ (¢+*0(½*0(¾*0sÑ (£+*0sû(¤+*0s(¥+*0 (¦+*0<( &}Ò }Ó }Ô }Õ s;}Ö s× }Ø *0({Ø (Ù {Ò ,¥þoÚ **0x{Ø (y (Û - r¿psÜ z {Ü u*-u+-&{Ü t,{Ý *{Ü t*{Þ z{Ü t+{ß z0{Õ *0*{Õ - }Õ {Ö (?{Ø (à **0 {Ö (<*0{Ö (=*0!{Ø {á þ-}Ô **0!{Ø {á þ*0{Ô *0 {Ø (â *0{Ó *0 (ã *0G( &}è sé }ê {ê }ë }ì }í sî (ï }ð *0 {è ,+ sñ }è {è *03#{ë (Ú (ò oó {ê {² X Þ (Ý &Ü*( 0=%{ê {² -*{ê (ô oõ -(ò oö +Å*0#&{ë (Ú (§+ Þ (Ý &Ü*  0H({è ,;oó þþ,*oø oõ - X+Ãoù **0!{ê {² -*{ê (ô (ú *0"){ë (Ú (û Þ (Ý &Ü*  0-*{è , oó -*oø où (ú **0'+{ë (Ú (¨+ Þ (Ý &Ü&*  0.   sü (©+*0sý (‹+*0/  sþ (ª+*0/  sÿ («+*0(1{í (¬+þ,{í ¥ þoê **0 {í ,+ s }í {í *0"3/{ð *( (y („*0( &} *0{ o¼ &*0Y( &} (ù{¾ (< , {Á +} s } } } s  }  *0 { (  *0{ *0 } *0{  (  þo  *0{  (  þo *0J5{ ,(ïráp(‹ oŒ sÌ z} s (¤+ { ( (*0{ ( *0]7{ , {z + s s s o { ( (y ( Þ¥ oê &Ü *0M0.8(­+ ,{ *(ïr p(‹ oŒ s z0c9{ , {z + s s s o { ( YEs (©+*s (©+*0l;{ , {z + YE(y (®+ s (‹+*s  s s o { ( (  *0"Z{ { , {z +(! *0"Z{ { , {z +(" *0#Z{ { , {z +(¯+*0#Z{ { , {z +(°+*0=s% (& *0{ ¥ þoê *0s' *0}E(( s) o* oë ,)o+ (,  (- s. o/ +Ï Þu , oê &Ü&Ü&¥K¥Ls0 *5H0GuN , *(±+*0\J(ïrÉp(‹ oŒ £ Œ,+ ri ps z£Œ¥O(²+ Ži  (³+ Y2 £P(1 XX3àY?Á(ïrÉp(‹ oŒ £ Œ,+ ri ps z£Œ¥O(²+Ži þþ,!(ïrs p(‹ oŒ r§ ps z Y 2"  £P(1  X  X3ÞXX@?ÿÿÿ*07KŒR,+ ri ps z(´+ Ži -(³+*(µ+*0(¶+*0 s2 (·+*0 (¸+*0 (3 (¸+*0 (4 (¸+*0 (¹+*0 (3 (¹+*0 (4 (¹+*0~›*0L r± psé z0L r± psé z0L r± psé z0L r± psé z0N(ïr p(‹ oŒ sÌ z0N(ïr p(‹ oŒ sÌ z0(5 *(6 *0 (7 *(6 *0 (7 *0}8 ( &*0s9 {8 ¥X(º+þoÑ *0#s: {8 ¥X(º+¥þoÐ *0(ïrE p(‹ oŒ s z0(ïrE p(‹ oŒ s z0(ïrE p(‹ oŒ s z0{8 s; þo< *0UQ {8 o= oë ,o> X(7 ¤\X +Ú Þu , oê &Ü&Ü&**90*0{8 þo? *(@ *03T (A (B sC (D (E (7 s *(@ *03T (A (B sC (D (E (7 s *0}F }G ( &*0(ïrE p(‹ oŒ s z0(ïrE p(‹ oŒ s z0(ïrE p(‹ oŒ s z0?U ( ( s ( ( {G s; sH þoI *0†W {G oJ oë ,OoK (A (B sC (D (E X(7 s ¤ÁX +© Þu , oê &Ü&Ü&*[j0*0{G þoL *0sM {G ¥`(»+þo *0#sN {G ¥`(»+¥þoÐ *0{F s; þoO *0(ïrE p(‹ oŒ s z0Y{F oP sQ *0{F þoR *0(ïrE p(‹ oŒ s z0{F s; þoS *0,Zs; {F oS ,{F oO ]**0(ïrE p(‹ oŒ s z(T *0sÜ z0 sj€›*0 sU *08, { þoV **0 sW *0sX (¼+*0(½+sY (½+sZ *0 s[ *0 [(¾+ *0 þ(¾+*0s\ *0 s] *0s^ (¿+s_ (À+s` *0( &}a *0{a - þob **0{a -}a þoc **0{a -}a þod **0}h }i (j &*0f_{h ok (l Þt (m Þ us,ts {i {n þoo *tu{i {p þoq *0{i þoo *0{i þor *0}s }t ( &*0 {t {s su ¥tþov *0}w }x (j &*0fc{w oy (z Þt ({ Þ uz,tz {x {| þoo *t{{x {} þ(Á+*0{x þoo *0{x þor *0}~ } ( &*0 { {~ s€ ¥tþov *:( }‚ *0{‚ oƒ ,(ú **:(„ }… *0{… oƒ þ*0}† }‡ }ˆ (j &*0†d{ˆ {‰ {† (Â+(l Þt (m Þ us,ts{‡ {n þoo *tu{p {ˆ (‹ {‡ þoq * "0{‡ þoo *0{‡ þor *0}Œ } }Ž ( &*0-I{ s {Ž {Œ s ¥tþov *0}‘ }’ (j &*0Be{’ {“ , {¹ {‘ s” o• +{’ (ú (– *0{‘ þo— *0{‘ þo˜ *0}™ ( &*0"gsš {™ s› ¥*þoœ *0'} }ž }Ÿ }  ( &*0{ž {¡ -{ þog **0*{ž {¡ -{ž (¢ { þof **0U{ž {¡ -F{Ÿ (¢ {Ÿ {¡ ,{  {¡ +,{ž (¢ { þoe ***0'}£ }¤ }¥ }¦ ( &*0{¤ {¡ -{£ þog **0*{¤ {¡ -{¤ (¢ {£ þof **0U{¤ {¡ -F{¦ (¢ {¥ {¡ ,{¦ {¡ +,{¤ (¢ {£ þoe ***0}¹}º( &*0{¹oê {ºþoê *0}§ }¨ ( &*0 Jis© s© s© {§ sª oœ {¨ s« oœ  s:*:(¬ }­ *0+l{­ o® u,t {¯ (° **:(¬ }± *0+o{± o² u“,t“ {³ (° **0rs´ sµ (¾+ (¶ *0ts· s¸ (¾+ (¹ *00us· s· sº (¾+ (¹ (¹ s» *0rs´ s¼ (¾+ (¶ *0&xs½ s· s¾ (Ã+ (¹ *0 [(¾+ *0%{s¿ sÀ sÁ (Ã+ ( *0,|s´ sà (Ã+ sÄ (Ã+ (¶ *00~s´ sÅ sÆ (¾+ (¶ (Ç sÈ *V(É }Ê }Ë *0{Ë {Ê ok (Ì *V(É }Í }Î *0 {Í oƒ ,{Î (Ï **r(É }Ð }Ñ }Ò *0-{Ð oƒ ,{Ñ (Ï *{Ò (Ï *V(É }Ó }Ô *0)€{Ó oy , {Ô {Õ (Ì **r(É }Ö }× }Ø *06{× {‰ {Ö (Â+ {× (‹ {Ø (Ì *V(É }Ù }Ú *0Ce{Ú {“ , {¹ {Ù s” (Û +{Ú (ú (– *:(É }Ü *0{Ü (Ï *:(É }Ý *0{Ý (Ï *r(É }Þ }ß }à *0Lƒ{Þ o® u°,t° {à {á (â *t {ß {¯ (Ì *0si(Ä+*0…s(Å+ s‡(Æ+*(ã *0.‡uh ,"(ä 3 oå sæ (ç (Ç+*z:(è }Ò*0ˆ(é (ê {Òþoë *:(ì }Ó*0{Óþoí *:(î }Ô*0{Ôoï *:(ð }Õ*0-{Õsa{Õsc{Õse(ñ (È+*:(ð }Ö*0s_{Ösg(Ä+(É+*:(ò }×*0{×(ó *:(ò }Ø*0{Ø(ô *0}Ù( *0{Ù(Ê+&*(ö *0soþps÷ *04}Ú}Û}Ü}Ý}Þ}ß( *0œ5{Þ(ø ((+9„{Úsk{Úsmsq(Ë+{ß(ù oú (û ,{Ýsü oý &*(þ (Ì+þ,{Ü(þ oÿ &*{Û( o &**Ò( }à}á}â}ã}ä}å*0 6{à{á{â{ã{ä{åssþts÷ *:(ò }æ*0{æ(ó *:(ò }ç*0{ç(ô *0}è( *0{è(Ê+&*(ö *0s{þ|s÷ *V( }é}ê*0 ‹( ( ( s {é su(Í+t3}å(ù {ésw{ésys}(Ë+o {é{ê ( *:(î }ë*0{ë(  *:(  }ì*0{ì*:(  }í*0{ísƒ(Î+*V(  }î}ï*0"{îs(”{ïs…(Ï+*09, {z + Ži , {z + ss’(Ð+*0sœ(Ñ+*09, {z + Ži , {z + sžs (Ò+*0 („*0(ƒ*0 [(¾+ *0s  þo  *:( }ð*0 9’( ( ( ( ( {ð þo *:( }ñ*0{ñþo *V( }ò}ó*0{ó{ {òþ*:( }ô*0N{ô{ô{ X( -,,¥+(ïrw p(‹ oŒ s z&( *( *’( }õ}ö}÷}ø*0 J{õ{÷{ø{ (y {ö{ø{ Y(y (‰{øs–(Ó+*:( }ù*0 {ù(Ô+*V( }ú}û*0 P”{û(Õ+ s {ûs”{ú{ûs˜(¤+( sš(Ñ+(Ö+*:( }ü*0 9’( ( ( ( ( {ü þo *:(  }ý*0{ýo! *0}" ( &*0{" o¼ &*0*0*0¹šsK s# ($ {w(<s% s& s' (×+(( ,/{) {w(?{v(?(Ø+ ÞA{v(=(( {w(?{v(?s* z¥ oê &Ü*›©0›s¯s±s³(Ù+ *0›s+ s·s¹(×+ *:(, }- *0{- (. (Ù *:(/ }0 *0{0 (1 (Ù *:(2 }3 *0{3 (4 (Ù *(5 *0(R*(/ *0z(2 *0(R*:(, }6 *0{6 o¼ &(R*:(/ }*0{oÿ &(R*:(2 }*0{oý &(R*0~m*0 sË(Ú+*0 sÏ(Ú+*0 sÓ(Ú+*0Dž{7 {€ s8 {|sÛsß{{€sbs9 *0) (: ,{ ,($ (Û+,****0#¡(: (; , þo< *(þ*0, (þ*(ü*0!¢{7 (À , sá(Ü+**0 s= (“+*0:¤{> , r£ ps§ z{? ,*{@ þsA }? *0*¥{> - }> {? ,oB }? ***0J¦(C ,(D *{> ,(D *(E }@ {? , (F +{G (Ý+*0){@ -sH {G (I }G *{@ *:(5 }*0{{J þo< *:(K }*0 §{L {{€sÉ(þ*:(5 }*0{{J þo< *(K *0§{L {€sÍ(ý*:(5 }*0{{J þo< *(K *0§{L {€sÑ(ü*V(5 }M }N *0{M {· {N þoO *r(, }P }Q }R *0!{P {R {Q sS þ(Þ+*V(5 }}*0{{}{þoU *r(/ }}}*0!{{{sÙþ(Þ+*V(5 }}*0{{~{þoV *r(2 }}}*0!{{{sÝþ(Þ+*:(W }*0{þ(Á*:(X }Y *0{Y (ß+þoZ *0=( &}[ {[ {¸ (À}\ {[ {¸ {€}] *0O©s^ (: {\ (; ,{] sT}{{{(U*{\ {] (Â*0{\ {] s_ (Â*V(5 }` }a *0{` {[ {· {a þoO *V(5 }b }c *0{b {[ {· {c þoO *05( &}d (e }f }g }h s }i *0#ª{i (Ú (à+ Þ (Ý &Ü*  0&«{i (Ú (á+ Þ (Ý &Ü&*  0K{d - r¹ psÜ z{¹ *0g®{i (Ú (â+ Þ (Ý &Ü {j ,5 {j {j -{k (l *sm (ã+(R*(R*  0 {d þ*0 sn (o *0B¯{d -5(p {d -", {z +  oq ,{d ****0 (r *:(s }t *0›{t (u *:(X }v *0j°{v {d -/{v {i (Ú {v (ä+ Þ (Ý &Ü+ {v {d -(R* {· {¹ þoO *!1 0~k*0=³ uÙ- uÚ-tÛ{w *tÙ {x ztÚ {y z0´, {) (Ø+*s* z0,s#þ$sz ({ - rã psÜ z(R*0,µs%þ&s| s} (~ ( (R*0 s'þ(s€ o (R*0 .¶sZ s‚ sT}{{{(U*0 ·sZ sƒ (ü*0 s„ (Ä *0 s… (Ä *0s† (‡ *0sˆ (‡ *0s‰ (Ä *0sŠ (Ä *0s‹ (Ä *0 sI(Œ *0 sK( *0~l*0sŽ (å+(æ+*0o ,sO(ç+*( *0o s‘ (è+*0s’ (é+*0( *0s“ *0 u+þ*0s” *0 u*þ*0s• *0 u,þ*0¸ u+,+ u*,+*0(– }Ý *0{Ý *0(– }Þ *0{Þ *0(– }ß *0{ß *0( }— *0 {— {Ý *0( }˜ *0 {˜ {Þ *0( }™ *0 {™ {ß *0}1}2( *0)›{1sT}{{1{{{2(U *0}3}4( *0)›{3sT}{{3{{{4(U *0}5}6( *0)›{5sT}{{5{{{6(U *ò(5 }š }› }œ } }ž }Ÿ }  *0 B{Ÿ {º {œ {› { {ž {š {  sbs¡ þoZ *ò(5 }¢ }£ }¤ }¥ }¦ }§ }¨ *0 B{§ {º {¤ {£ {¥ {¦ {¢ {¨ sbs¡ þoZ *:(X }© *0W¹{¸ ||(+,{¸ {~sü þoV *{© oZ Þt {¸ {}oU Þ*+;:(X }ª *0?{¸ ||(+,{¸ {~sü þoV *{· {ª þoO *V(, }« }¬ *0}¼{¬ {­ {} þô  {« o®  Þ!tu,   Þþ &, þoU *{¯ {¬ þo° *0!V(5 }± }² *0{± {º {² þoZ *V(X }³ }´ *0‰¾{¸ ||(+,{¸ {~sü þoV *{´ sµ {¸ s¶ {­ {€{{ (V,{³ s· (W(R*{³ {¯ þo° *V(X }¸ }¹ *0¢À{¸ ||(+,{¸ {~sü þoV *{¸ {} þ  {¸ {¹ oº  Þ!tu,   Þþ &, þoU *{º þoZ *DZ!V(, }» }¼ *0yÁ{¼ {¸ {} þ  {» oñ  Þ!tu,   Þþ &, þoU *{¼ {· þoO *0!V(/ }½ }¾ *0~Á{¾ {¸ {} þ  {½ oñ  Þ!tu,   Þþ &, þoU *{¾ {¸ {}þoU *0!V(2 }¿ }À *0uÂþ  {¿ oñ  Þt u,   Þþ&,{À {¸ {~þoV *{À {¸ {~þoV *V(X }Á } *0 ‹Å{¸ ||(+,{¸ {~sü þoV *{Á sà {Á sÄ {Á sÅ { {º {¸ {| { {€sbs¡ þoZ *V(/ }Æ }Ç *0"Æ{Æ (ê+ {º {Ç þoZ *V(X }È }É *0 {Ç{¸ ||(+,{¸ {~sü þoV *{È sÊ {É {º {· {¸ {|{~{{€sbs¡ þoZ *V(2 }[}\*0kÂþ  {[oý  Þt u,   Þþ&,{\{~þoV *{\{~þoV *V(X }Ë }Ì *0 QÈ{¸ {Ë sE {Ì {º {· {|{}{{€sbs¡ þoZ *(Í *0§{Î {Ï {|þoÐ *(Ñ *0§{Ò {Ó {€þoÔ *:(î }Õ *0`{Õ þ\oê *V( }`}a*0{`{a( *:( }Ö *0{Ö þoë *V( }× }Ø *0{× {Ø oî þoÙ *:(Ú }Û *0sÜ {Û sÝ (¤+( *:(Þ }ß *0{ß *0 €n~n&*0Ésu(à ¥(ë+ o¬ *0`Ê(@,þñ!s!sá *{m {m!X}ms6oâ s!sá *0(Ì/*oã {i3*Y+Ø0-Í(@,*  oä Y(\ 2 þoå **06Ïo< (X{y , {æ }y+Ð(R*0.”{¡ ,(ïr! p(‹ oŒ sÌ z(¢ *0 sç *0sÑ-h{è ,O {é u, {é t{ê {~þoV *{é t{ë {} þoU *{ì þoí *(R*0:{ Y( { -{w(?{v(?+{ *0?Ô¤(Ú (bÞ (Ý &Ü þ(ì+* ( 0^{ Y( {è -(î (ï +{ -{w(?{v(?+ {v(={ *07Ô(Ú (dÞ (Ý &Ü þ(ì+* 0<×," {ð oñ Þ t  Þ&*sü (ñ (ò *  0só *0EØ," {ð oñ Þ t  Þ&*(5 oô sü (õ (ö *  00Ú {÷ {ø -{ù {€sú (û }ü **0_Ý{÷ (ý {ü ,0 {þ (ÿ {þ ( }ü  s(ü*{ , (F **0s (í+*0s (©+*0s (‹+*0*s;s£ €k(î+€lsj€m*( *0s *0}o( *0{o{¾ (ï+(>*:(î }p*0|p{j|p{ko­ *( *0ss( *(  *0 Þoñ & Þt (  Þ* V(5 }  }  *0{  {  þoO *r(É }  } } *0Yß{ (Ú { (_ Þ{ (Ý &Ü&{  (À {  {€{ s ( * :(X } *0 Nà{¸ s© { {· (ð+{}(ñ+{~(ò+s o &(R*:(, } *0{ ( þo *:(/ } *0{ ( þo *:( } *0 mâ{ { {| {€ { s { s {~{ {º  sbs¡ þoZ *ò(, } }  }! }" }# }$ }% *0 4{ {  {! {" {# {$ {% þ(ó+*Ò(/ }& }' }( }) }* }+ *0 3{& {' {( {) {* {+ (, þ(ô+*Ò(2 }- }. }/ }0 }1 }2 *0 3{- {. {/ {0 {1 {2 (3 þ(ô+*Ò(4 }5 }6 }7 }8 }9 }: *0¡›{6 {{: {w(<{5 {6 {7 {8 {9 {: s; {5 {6 {7 {8 {9 {: s< {5 {6 {7 {8 {9 {: s= (õ+ *:(> }? *0 nä{@ {? (ö+ Ži-{A \þoB *Žis sC Ži(Š+{|sK sD (÷+(R*(î *0*(E *0z(F *0*:(5 }”*0{”þo< *0}•}–}—( *0Tæ{–{G , {H oI +{•{€ {—s• sT}{ {{(U *:(K }˜*0 Gè{L sJ {J s—þ˜sK {˜sL (M (N (R*:(O }™*0{ù {™oq þoP *:( }š*0›{š{~sü oV ( *0}›}œ}( *0Bë{{Q ,1 {R {›(S ,{œs(¤+(***V(5 }ž}Ÿ*0{ž{ŸþþoP *0$} }¡}¢}£( *0Kì{¡(T |¢("{ {€ {£s¡ sT}{{{(U *V(O }¤}¥*0 wî{U sV {¤sŸþ s¥ ||(- {ù {¤ s£þ¤sW {¥(X (Y (T (R*V(Z }¦}§*0,{¦oæ ,(ø+*{¦oå {§(„*:(X }[ *0‚ò{¸ {[ u*-*u+-A{[ t, {· {Ý þoO *{[ t* {}{Þ þoU *{[ t+ {~ {ß þoV *(\ *0(ù+*:(Þ }] *0{] (^ s_ (ú+*:(î }` *0{` (à *(a *0 (û+(ü+*V(a }b }c *0G,{c (d (e (û+(ü+*{b (={c (â („sf (ý+*r(Þ }g }h }i *0U{h {á þ,{h (d (þ+(ü+*{h (â {i („{g {h sj (ý+*r(Þ }k }l }m *0/{l sn {k {l {m so («+(ÿ+*:(Þ }p *04{p {á þ,{p (d (þ+(ü+*(û+(ü+*0}q }r ( *0{q {r (+*’(5 }s }t }u }v *0Wó{v oæ -C|u ("{t {s {v ow (. Þt (1 Þ(Ù *(R*!:0$}x }y }z }{ ( *0=ô{x {y {z s| {{ sT}{{{ {{(U *’(} }~ } }€ } *0jö{ {€ { s‚ þƒ s„ {~ s… o† oæ ,| ("{ ow (ü+*{€ (+*r(‡ }ˆ }‰ }Š *0 H÷ s× {Š s‹ þŒ s¥ (- ( {ˆ {‰ s (+*r(Þ }Ž } } *0#({Ž { { s‘ (+*V(è }’ }“ *0*ˆ(é (ê {“ {’ s” þo• *r(è }– }— }˜ *0 0ˆ(é (ê {˜ {– {— s™ þoš *’(è }› }œ } }ž *0 6ˆ(é (ê {ž {› {œ { sŸ þo  *:(É }¡ *0{¡ (. (¢ *:(E }£ *0{£ (1 (¢ *:(F }¤ *0{¤ (4 (¢ *:(¥ }¦ *0 ]ú(§ (¨ Œ\s© sª s« s¬ {­ (<{¦ (+(® ¥*(¯ *0Qüu' ,& {Õ , rq ps§ z(° (ã *(ïr‰ p(‹ oŒ r§ ps z(  *0<ýu' , {Ö (=*(ïr¯ p(‹ oŒ r§ ps z0$}± }² }³ }´ ( *0 !{± {² {³ {´ (+*²(µ }¶ }· }¸ }¹ }º *0 7|¸ {¶ {· {¹ {º s» þ¼ s¥ (-*V(5 }½ }¾ *0{½ {¾ (Ù *²(É }¿ }À }Á } }à *0\þ{¿ { (Ä oÅ |à ("(. {À sÆ {Á sT}{{Á {{(U *²(Ç }È }É }Ê }Ë }Ì *0 *{È {É {Ê {Ë {Ì sÍ sÎ *:(Ï }Ð *0!Ð\(U {Ð rƒp(Ñ (+*’(} }Ò }Ó }Ô }Õ *0 À{Ò {Ó {Ô {Õ sÖ (+ {Ò {Õ s× (+ sØ ( +tb}Ë te}Ù (Ú tb}Ì (Û tf}Ü (Ä {Ò oÝ {Õ (+*V(‡ }Þ }ß *0 ' s× ( {Þ {ß sà (+*V(Þ }á }â *0({á {â sã (+*(ä *0( *0}ó( *0þ{ó{¾ ,(=**V(, }å }æ *0{æ (¤ {å (. (Ù *V(/ }ç }è *0{è (¤ {ç (1 (Ù *V(2 }é }ê *0{ê (¤ {é (4 (Ù *r(ë }ì }í }î *0 z s; s£ síþîs¥ (- (<{î sï {î sð {î sñ {ì (õ+{î {í ( +( +*V(ò }ó }ô *0$!s× ({ó {ô sõ ( +*( *0(î+*:( }ÿ*0%{ÿ, {ÿ(¼*(¾sù(ç+*0}( *0 {oñ Þ t  Þ&* :(ö }*0! {(-Œî¥ ( +*:(÷ }*0) {sýþþs¥ (sÿ(+*:(O }ø *0i {U {ø {ì Œ, rÓ psÜ z{ø {ë (Ú {ø (+ Þ (Ý &Ü,(R*{ù þoP *7H :(5 }*0{þoP *(ù *0 (ú (+*r(ú }û }ü }ý *0$,{û {ü {ý (+*(+*r(þ }ÿ } } *0W {ÿ { (+ , { s (+*{ÿ { ( {ÿ { { s (+*(ù *0 (ú (+*r(þ } } }  *0C { { (+ , { s  (+*{ { {  (+*(  *0=K, {¹ (ü+*,¥\+(ïr7 p(‹ oŒ s z(ü+*r(Þ }  } } *0#{  { { (+s (+*V(ú } } *0,{ { (+*(+*V(þ } } *0?K{ ( -({ { ( { { s (+*(+*V(þ } } *0*K{ ( -{ { (+*(+*V(a } } *0B,{ { (+*,¥\+(ïr_ p(‹ oŒ s z(ü+*V(Þ } } *0F{ ( , {¹ (ü+*{ { ( { { s  (ý+*V(Þ }! }" *01{! ( , {¹ (ü+*{! {" (+*:(# }$ *0{$ {  (% ( *( *0(î+*:( }& *0"{& { {& o' s#(ç+*:( }( *0#{( s) {( s* (¤+(+*:(É }+ *0›{+ (, *:(É }- *0›{- (, *:(ú }. *0 ,{. (/ (ú +(+*V(0 }1 }2 *013{2 (p {1 (y („{2 s3 (+*V(þ }4 }5 *0{5 {4 {5 s6 (+*(ù *0 (ú (+*:(þ }7 *0{7 (8 s9 (+*(  *0,K, {¹ (ü+*(ïr p(‹ oŒ s z:(Þ }: *0{: s; (+*:(É }< *0›{< (, *0 rá psé z0 rU psé z0 rÉ psé z0 r;psé z0 r­psé z0 rpsé z0 r“psé z0 r psé z0Ô (+ (= (> (ƒE$x÷1B¡¼×:Ïù`¢ê€È_¬Ç»õ}nC ä ÜŠ ã(ƒE$M(ïrsp(‹ oŒ sÌ z{‡ ,Ú{‡ {‡ -É{ˆ (¬8) tÓ{‡ -£{J{K  (=( 8ó {‡ 9×þÿÿ{‡ {‡ 9Ãþÿÿ{‡   {‡ {‡ :©þÿÿ {ˆ {ˆ   (¯8™ {‡ 9}þÿÿ{‡ {‡ 9iþÿÿ{‡   {‡ {‡ 9Oþÿÿ {‡   {‡ {‡ :5þÿÿ {ˆ {ˆ   {ˆ    (¶8 {‡ 9þýÿÿ{‡ {‡ :êýÿÿ{ˆ (}(¡8à({(Ÿ8Ï{‡ 9³ýÿÿ{‡ {‡ 9Ÿýÿÿ{‡   {‡ {‡ :…ýÿÿ {ˆ {ˆ  (y (¢8pt¿{5  (³8UtÀ{6(´8:tÁ{‡ 9ýÿÿ{‡ {‡ :ýÿÿ{7{ˆ (µ8òtÂ{8  (°8×tÃ{‡ 9³üÿÿ{‡ {‡ :Ÿüÿÿ{9 {:{ˆ  (²8„tÄ{‡ 9`üÿÿ{;{ˆ {‡   (¾8BtÅ{‡ :üÿÿ{<(½8tÆ{‡ 9ôûÿÿ{‡ {‡ 9àûÿÿ{‡   {ˆ {={ˆ   {‡    (À8±tÇ{‡ 9ûÿÿ{ˆ {>{‡   (¿8otÈ{‡ 9Kûÿÿ{‡ {‡ :7ûÿÿ{ˆ {?(¸8'tÉ{‡ :ûÿÿ{@(¹8þtÊ{‡ 9Úúÿÿ{‡ {‡ 9Æúÿÿ{‡   {‡ {‡ :¬úÿÿ {ˆ {ˆ  {A (»8‘tË{‡ 9múÿÿ{‡ {‡ :Yúÿÿ{ˆ {B(º8ItÌ{C(¼8.tÔ{L  (;( 8tÎ{E(Â8ôtÍ{‡ 9Ðùÿÿ{ˆ {D{‡   (Á8²tÏ{‡ 9Žùÿÿ{‡ {‡ :zùÿÿ{F {ˆ  (W(¡8etÐ{G  (·8JtÑ {‡ 9&ùÿÿ{‡ {‡ :ùÿÿ {H {ˆ  (Å8{‡ 9æøÿÿ{‡ {‡ 9Òøÿÿ{‡   {‡ {‡ :¸øÿÿ {ˆ {ˆ  (O (¢8£tÒ!{‡ 9øÿÿ{‡ {‡ :køÿÿ!{I {ˆ  (G(¡8V{‡ 9:øÿÿ{‡ {‡ :&øÿÿ{ˆ (M(¡8{‡ 9øÿÿ{ˆ {c""(@â÷ÿÿ"t¶#{‡ {‡ 9È÷ÿÿ{‡   {‡ {‡ :®÷ÿÿ#{ù$ {ˆ (K$(«(¢8”{‡ 9x÷ÿÿ{‡ {‡ 9d÷ÿÿ{‡   {‡ {‡ :J÷ÿÿ {ˆ {ˆ  (I (¢85{‡ 9÷ÿÿ{‡ {‡ 9÷ÿÿ{‡   {‡ {‡ 9ëöÿÿ {‡   {ˆ {c""(@Çöÿÿ"t·% {‡ {‡ :­öÿÿ%{ú$%{û {ˆ  {ˆ  $  (Ã8‡{‡ 9köÿÿ{‡ {‡ 9Wöÿÿ{‡   {‡ {‡ :=öÿÿ {ˆ {ˆ   (Ä8-{‡ 9öÿÿ{‡ {‡ 9ýõÿÿ{‡   {‡ {‡ :ãõÿÿ {ˆ {ˆ  (C (¢8Î{‡ 9²õÿÿ{‡ {‡ 9žõÿÿ{‡   {ˆ (x&&9€õÿÿ {‡ {‡ 9oõÿÿ {‡   {ˆ (x''9Qõÿÿ {‡ {‡ :@õÿÿ'{› (œ $&{› (œ ('{› ( &{› (  {ˆ   ( $(® {c""så*0º{c (E8ut¶ {ù(? *t· {ú {û s@ (A *tµ{÷{ø{dsB ŒŠsC (D *(ïr™p(‹ oŒ   r¹ps z0(F*0-(‰ , {E (+-*{E ¥w (F *0%(‰ ,{E u< ,  (G **0-(‰ , {E (+-*{E ¥x (H *0-(‰ , {E (+-*{E ¥y (I *0-(‰ , {E ( +-*{E ¥z (J *0-(‰ , {E (!+-*{E ¥{ (K *0-(‰ , {E ("+-*{E ¥| (L *0- (‰ , {E (#+-*{E ¥} (M *0-"(‰ , {E ($+-*{E ¥~ (N *0-#(‰ , {E (%+-*{E ¥D (y *0-$(‰ , {E (&+-*{E ¥ (O *0-%(‰ , {E ('+-*{E ¥[ (P *0-&(‰ , {E ((+-*{E ¥€ (Q *0M((r ,A{R (ƒ"32{R tÓ {KÐ(U (m+,{K (S **0Ê-(– 9±{T (U (€ 9š{V (W (v 9ƒ{X {V (Y  ()+,þ+,Z{T (Z {T ([ {X {V (Y X(V(Š  (\ (‹ s] *(^ s] *0‚.{c (3ot· {ú {û  (V(Š {_ -!(‹ (^ (\ s] (` *(Š (‹ s] (` **0z2(w ,n{a (b {a (c (U ,(ž sd (e *({,{Ÿ sd (e *(ž (f sd (e **0 sa(*+*0 sc(++*0N5(z ,{g (h (H ,{} ,*{g (i {g (j sk (l *0N5(z ,B{g (i (H ,.{} ,&{g (h {g (j sk (l **0®8se(*+ 9{m (n (“ ,/{o (p oq , or + sg*(“,{o (p +Â(ïrÃp(‹ oŒ róps z(“ ,Ó{o (p 8„ÿÿÿ0(*0os (*0ot (*(u *0(W*(v *0(X*(u *0(W*r(w }*}+},*0¦:(“ 9—{o (p {*o€ o€ 38{+, oq ,{,or (,+++{*(,++,<{o (x {o (p {o (y oz (-+ s{ (| **0O;{Ö ,E {Ö {Ö -{} (.+s~ ( *{Ö {} (€ +³*0 ( (/+*0~£*0~¤*0~¥*0 Ð(U *0 Ð(U *0(n(m+,(o**02<(p (p (k%¤%¤þoV *05={c (3#tµ {ø{‡ -{÷ (‚ **0X>{c (3Ftµ {ø{‡ ,2{ø {‡ {‡ -{ˆ {÷ sƒ („ **0x?{c (3ftµ {ø{‡ ,R{ø {‡ {‡ ,>{‡ {‡ {‡ -* {ˆ {ˆ {÷s… († **0œ@{c (@‡tµ {ø{‡ ,s{ø {‡ {‡ ,_{‡ {‡ {‡ ,K {‡ {‡ {‡ -5{ˆ  {ˆ {ˆ {÷s‡ (ˆ **0&A{c (3t¶ {ù(‰ **0EC(t ,9{Š (‹ (ƒ3&{Š (Œ {Š ( sk (l **05D{c (3#t· {û {ú s@ (Ž **0XE{c (3Ftµ {÷(ƒ30{ø{‡ ,#{ø {‡ {‡ -{ˆ ( **0RG(u ,F{ (‘ (ƒ33{ (’ { (“ { (” s• (– **06H{c (3$tµ {÷(ƒ3{ø (— **0PI{c (3>tµ {÷(ƒ#3({÷tÔ {ø{‡ -{L (˜ **0QJ{c (3?tµ {÷(ƒ3*{÷t¿ {5 {ø s™ (š **0QK{c (3?tµ {÷(ƒ3*{÷tÀ {6 {ø s› (œ **0QM(s ,E{ (ž (ƒ32{ (ž tÁ {7 { (Ÿ s  (¡ **0[N(s ,O{ (ž (ƒ 3;{ (ž tà {9 {: { (Ÿ  s¢ (£ **0RO(s ,F{ (ž (ƒ32{ (ž tÏ {F { (Ÿ s¤ (¥ **0RP(s ,F{ (ž (ƒ32{ (ž tÒ {I { (Ÿ s¤ (¥ **0RQ{c (3@tµ {÷(ƒ3*{÷tÐ {G {ø s™ (š **0}R{c (3ktµ {÷(ƒ3U{ø{‡ ,H{ø {‡ {‡ ,4{‡ {‡ {‡ - {ˆ {ˆ sk (l **0}R{c (3ktµ {÷(ƒ3U{ø{‡ ,H{ø {‡ {‡ ,4{‡ {‡ {‡ - {ˆ {ˆ sk (l **0þS{c (@étµ {÷(ƒ@Ð{ø{‡ 9À{ø {‡ {‡ 9©{‡ {ˆ (x9Ž {‡ {‡ 9~ {‡ {ˆ (x,d{‡ {‡ -V{› (œ {› (œ {› (  {› (  {ˆ     s¦ (§ **0¤T{c (@tµ {÷(ƒ@v{ø{‡ ,i{ø {ˆ {c (3M t¶{‡ {‡ ,8{‡ {‡ {‡ -"{ù{ˆ s@ (Ž **0RU{c (3@tµ {÷(ƒ"3*{÷tÓ {J {K s¨ (© **0AV{c (3/tµ {÷(ƒ"3{÷tÓ{J (ª **04W(s ,({ (ž (ƒ3{ (Ÿ ( **0FC(t ,:{Š (‹ (ƒ3&{Š (Œ {Š ( sk (l **0xX(u ,l{ (‘ (ƒ 3X{ (’ (x ,D{› (œ {› ( { (“ { (”  s« (¬ **0FC(t ,:{Š (‹ (ƒ!3&{Š (Œ {Š ( sk (l **08Y{c (@§tµ {÷(ƒE$-*{÷tÅ {< {ø s­ (® *{÷tÄ{ø{‡ ,¹{ø{; {ˆ {‡ ( s­ (® *0&[{c (3ftµ {÷(ƒ 3P{÷tÇ {ø(0+ ,5 {¯ (° {> {¯ (± s² (³ *{c(@™tµ{÷(ƒ @}{÷tÆ {ø{‡ ,a{ø{‡ (0+  ,F {¯ (°  {={ˆ   {¯ (±   (  s² (³ **0>\{c (@§tµ {÷(ƒE$0*{÷tÉ {ø{‡ -ä{@  s´ (µ *{÷tÈ{ø{‡ ,¶{ø{‡ {‡ - {ˆ {? ( s´ (µ *0„]{c (@§tµ {÷(ƒE$P*{÷tË {ø{‡ ,ä{ø {‡ {‡ -Ð {ˆ {Bs¶ (· *{÷tÊ{ø{‡ ,–{ø {‡ {‡ 9ÿÿÿ {‡ {‡ {‡ :fÿÿÿ{ˆ  {ˆ {A( s¶ (· *0R^{c (3@tµ {÷(ƒ3*{÷tÌ {C {ø s¸ (¹ **08_{c (@§tµ {÷(ƒE$-*{÷tÎ {E {ø sº (» *{÷tÍ{ø{‡ ,¹{ø{ˆ {D {‡ ( sº (» *0EC(t ,9{Š (‹ (ƒ3&{Š (Œ {Š ( sk (l **03W(s ,'{ (ž (ƒ3{ (Ÿ ( **0U`(” ,I{a (b (x ,5{› (œ {a (c {› (  s¼ (½ **0ra0(^ s] (` *(x ,PY{› ( (— ,9{‰ (Š {› (œ {‰ (‹  (\ s] (` **0“b(s 9„{ (ž (ƒ3p{ (ž tÑ {H { (Ÿ (( oj Ži (—,,{‰ (Š {‰ (‹ s¾ (¿ ***0 c(• 9‘s {À (}+ 9z{‰ (‹ {c (3`tµ {÷(ƒ3K {ø{‡ ,> {ø{‰ (Š {‡ {ˆ (1+sÁ ( **0Df0(à (Y s (2+ ,{Ä *rpo\ (x r?ps z0Di0(à (Z s (3+ ,{Å *rSpo\ (x rwps z0Hj(I /+ Ži þþ,!(ïr“p(‹ oŒ r[ps z£*0Fk(€+ oÆ þ, Žiþ+,£*(ïrsp(‹ oŒ sÌ z0mŒ¥ë{c (EK?t¶ {ù( *t· {ú {û ( (€+þ(q*t¸{ü*tµ{÷{ø(ƒE$ò+W6G]¾”çÏÿ1Iaz“«ÆáTl§òÒÇÇŽMöIÇv}{‡ ,C{‡ {‡ ,1{‡   {‡ {‡ - {ˆ {ˆ   (*r¿psÜ zŒ¥ë(–  , {T ([ þ(€+*r¿psÜ z{‡ ,³{‡ {‡ ,¡{‡   {‡ {‡ 9‡ÿÿÿ {‡   {‡ {‡ :mÿÿÿ {ˆ þ(€+*Œ¥ë(™  , {Ç (È þ(€+*r¿psÜ zr·psÜ zt¿{5*tÀ{6(H*tÁ{7Ðw(U *tÓ{K{J*tÃ{9{:(W£*tÂ{8*tÅ{<þoÉ *tÄ{;þoÉ *tÇ{>Ð(U *tÆ{=Ð(U *tÈ{?þoÊ *tÉ{@þoÊ *tÊ{AÐ(U *tË{BÐ(U *tÌ{CþoË *tÍ{DoÌ (p*tÎ{EoÌ (p*tÏ{F*{‡ 9Nýÿÿ{‡ {‡ 99ýÿÿ{‡   {‡ {‡ :ýÿÿ {ˆ {ˆ  þ(€+*Ð(U *tÐ{GþoÍ *tÑ{H*tÔ{L*tÒ{IÐw(U *{‡ 9™üÿÿ{‡ {‡ :„üÿÿ{ˆ (€+(l%¤þoV *{‡ 9Jüÿÿ{‡ {‡ 95üÿÿ{‡   {‡ {‡ :üÿÿ {ˆ {ˆ   þ(€+*{‡ 9óûÿÿ{‡ {‡ 9Þûÿÿ{‡   {‡ {‡ 9Äûÿÿ {‡   {‡ {‡ :ªûÿÿ {ˆ  {ˆ  {ˆ þ(€+*Ð(U *(ïrëp(‹ oŒ sÌ z0Ï( (ž så*0Ï(ž ( (ž så*0Ï(ž (f ( (ž så*0%Ï(ž (f (f ( (ž så*0+Ï(ž (f (f (f ( (ž så*0&”(m+-Œ(Î rps z*0&”oÏ -Œ(Î rps z*0JnŽi (Ð þþ,!(ïr+p(‹ oŒ rOps zs(4+(5+*0)(R,oÑ (R+, oÑ +Ù*0=–oË (§ (€+oÏ -!(ïrYp(‹ oŒ rips z*0®o(€+ o` , oa + (kr‡p(ïr‹p(‹ oŒ (6+(€+ oÆ þ, Žiþ+,( £r‡p(ïrµp(‹ oŒ (6+*(ïríp(‹ oŒ r‡ps z0/p(€+ ( rp(ïrp(‹ oŒ (6+*0Ï( (ž så*0#Ï(Q(ž (f ( (ž så*0Ï( (ž så*0(E(­(­(£*0(©((¢*0`r(W(-+ (Ð (Ò þþ,!(ïrEp(‹ oŒ rOps zs(7+(q(Ÿ*0nt(8+ ŒØ,+ rps zŽi  Y2# £ë(€+¤XX3Ý (V (q(Ÿ*0tu(€+rmp(ïrp(‹ oŒ (6+(W /+ Ži þþ,!(ïr«p(‹ oŒ rÙps z(o(¡*0dv0(à (Y (Ð Ži þþ,!(ïrÝp(‹ oŒ rOps zs(9+(:+(w(Ÿ*0vwþ•(;+,sÓ z(I (Ð Ži þþ,!(ïrp(‹ oŒ rOps zs(9+(:+(u(Ÿ*0Qxþ•(;+,sÓ z(H(€+r?p(ïrap(‹ oŒ (6+(s(¡*0i(€+(€+r‹p(ïr•p(‹ oŒ (6+Ðw(U (€+r‹p(ïrÉp(‹ oŒ (6+((£*0s(<+(U(Ÿ*0Wyþ!(=+,sÓ zoÔ ,!(ïrïp(‹ oŒ r#ps z(¨(e(¡*0Nyþ!(=+,sÓ zoÔ , (c( *(ïr/p(‹ oŒ r#ps z0zyþ!(=+,sÓ z(€+oÊ rep(ïrqp(‹ oŒ (6+oÔ , (_(¡*(ïr/p(‹ oŒ r#ps z0ƒyþ!(=+,sÓ z(€+oÊ rep(ïrqp(‹ oŒ (6+oÔ ,!(ïrïp(‹ oŒ r#ps z(¨(a(¢*03zþS(>+,sÓ zoj (¦(](Ÿ*0Œ{þ(?+,sÓ zoÕ -!(ïr“p(‹ oŒ r³ps zoÖ (¦os o× , (k(Ÿ*(ïr/p(‹ oŒ r³ps z0š{þ(?+,sÓ zoÕ -!(ïr“p(‹ oŒ r³ps zoÖ (¦os o× ,!(ïrïp(‹ oŒ r³ps z(¨(m(f (Ÿ*0’{þ(?+,sÓ zoØ -!(ïr¿p(‹ oŒ r³ps zoÖ (¦ot o× ,(g(f (Ÿ*(ïr/p(‹ oŒ r³ps z0 {þ(?+,sÓ zoØ -!(ïr¿p(‹ oŒ r³ps zoÖ (¦ot o× ,!(ïrïp(‹ oŒ r³ps z(¨(i(f (f (Ÿ*0j|þ(,+,sÓ zoj (¦o× ,!(ïrïp(‹ oŒ rßps z(¨([(f (Ÿ*0\|þ(,+,sÓ zoj (¦o× , (Y(Ÿ*(ïr/p(‹ oŒ rßps z0¢ÐD(U (€+rëp(ïrp(‹ oŒ (6+ÐD(U (€+r;p(ïrp(‹ oŒ (6+ÐD(U ( rQp(ïrYp(‹ oŒ (6+(A(­(£*0lÐw(U (€+r¥p(ïr±p(‹ oŒ (6+Ð(U (€+rÙp(ïrãp(‹ oŒ (6+(?(¢*0T}((  oj soÌ (@+ (€+r p(ïrp(‹ oŒ (6+(S(¡*0~(ª(­ (y(¢*0R{‡ ,, {‡ {‡ -{ˆ (¯*(±(¯*Ð(U (=( (¯*0Ks(A+(B+ (Ù (Ú (}({(f (Ÿ s (‚+(¡*0rGp*0(Ò (Ò 3 s(C+**0s!þoÛ *0o` , þoÆ **0o` , oÆ Ži**0……>oÜ (D+ (Ì s#(E+ {Ý , {Ý {Ý - {Þ *s)(F+,{ß *(ïrqp(‹ oŒ sÌ z0î‡(m+,!(ïr™p(‹ oŒ rÁps z:°o` , oÆ + s+(G+(H+ (I+ >oà , (á Þ Þtu‚,Þþ,({ß  oÌ oâ , {ß *(Î*(Î*h#‹0)ˆ:oã ,*rÑpo¿ (xsÌ z0)‰:oi ,*rùpo¿ (xsÌ z0{ä -*(H+þoV *0s-þoÛ *0 vŠ(Ò (J+ (K+ Œ¥(p >(H+oå (ïr!p(‹ oŒ (] Œ,*rMpsæ z0D‹(Ò >oç (ïr_p(‹ oŒ (] Œ!,*r…psæ z0JŒ(Ì(L+ 6(H+oè (ïr•p(‹ oŒ ŒS,*rÇpsæ z0M(Ò (J+ 6(H+oè (ïr•p(‹ oŒ ŒS,*rÇp sæ z0`EJ{Ö - rÍpsÜ z {Ö {} Y(M+ (é (€ (ê së *( së *0/”/!(ïrÉp(‹ oŒ rÙps z(M+*0oz Ži-*(H+þoì *0o“(í (î (ï (ð (ñ oÆ Ži(N+(ò (ó (Ò  (Ï  þ(Ú*01oÕ ,os þo× *oØ ,ot þo× **0€”{ä ,U {ä {ä ,F{ä {ä {ä -2{ô {ô (k% ¤%¤þoV *(ïr p(‹ oŒ rOps z0W•{ä ,. {ä {ä -{ô 3 þoÍ *þoõ *(ïr1p(‹ oŒ rSps z0H—oö ,*s/o÷ (O+ -r[po„ (x r“ps z{ø *0~¦*0j™{ž(P+ rp(Š ,(à*r—p(Š ,{Ÿ*(ù ,*o¿ (ïr¡p(‹ oŒ (] sÌ z0š{ž(P+ (á (ß*0L›{(YE rÍpsÜ zs1*(â s3*(  s5*0sú (Q+*0l {(E répsÜ z(  s9*s; s= (ãoû sü (ý (þ s?*0{Ö -*rùpsÜ z0,¡{Ö , {Ö {Ö - {} *rùpsÜ z0'{D{E(ÿ {EX{FsD*0(R+sEsD*0ª{(E fvªºrcpsÜ zsG sI (õsK( (S+ sMo s ( ( ( sQ*(ìsS*(ë(êsU*(å (    sW*(êsY*(ês[( (T+s_*0-«{ž(P+ (å {(þ sa*0Z(  sc*0–(â {ž(P+ se*0–(â {ž(P+ sg*0­(î (  si*0=–(â {ž(P+ {(3 (Ð(k*(Ñ(Y*09®sk sm (âoû (å{ž(P+( s *06¯(â{ž(P+(åso( (S+ sqs *0$¯(âss( (S+ sus  *0\²{(E Þ#rqpsÜ z(ð (ƒE$ r¿psÜ ztÎ {E*tÅ {< þos *(ñ(í (ñ (î (ð (ï   (Ï*(ó  (   (  (Ö*0¶{( E agw}­½ÍÓ YE´Ìâý+<Rct„”¤´ºôYE$*06u{‡½ÃÉÏÕ/5;AGMswr‹ps  (U+ o  sy*s{*s}*s*(ñ (í  (ñ  (î  (ð  (ï s*sƒ*s…*s‡*s‰*(í  s‹*(â{ž(P+s*s*s‘*s“*s•*(ò  (  (  (  (   s—*(â{ž(P+s™*s›*s*sŸ*s¡*s£*s¥*{(þ  s§*{ž(P+s©*( ( (   s«*( ( ( s­*( ÑiÑs¯*( gs±*{(Òs³*( hsµ*( Ñs·*( s¹*( s»*( s½*( s¿*sÁ*(ò  (  (  (  (   sÃ*(ó(  (    sÅ*sÇ*(ðsÉ*sË*(âsÍ*(í  sÏ*(îsÑ*(ï  sÓ*(îsÕ*s×*( sÙ*0~§*0~¨*0¸{c (E9{*t· {ú {û  (ø({dså*tµ{÷{øsß(V+({dså*t¸  {ü  {ý  /+Ži   þþ, rÍpsÜ z £ë (€+ rýp(ïrp(‹ oŒ (6+ *0œ¹{c (EL*tµ sá{ø(W+*t¶ {ù (X+,+ (X+,* ( *t·{ú {û ( 8dÿÿÿ0 ZŽi sã*0¢¼{c (EA¥~tµ {÷ {ø sê (V+({dså*t¶{ùo   ,C   {À  (+(+ (ù  (Y+  ( , * ( såz*t·{ú{û (  (û({d  såÝŒtuk,vtk(é()+,[( ( s ((ž såsì (û({d  såÞþþ**á0Œ0 G½o i (Õ+ s { /%{ { { Yo X( +Ò*0~©*0~ª*0/¿(÷(Z+ s ([+(ýs þo *05Á(þo -s (\++ (þo s  *0ûËŒ,+ rùps zoË oƒ o! (" o€ (ñ (þ(Ú (þo s  Þ (þ(Ý &Ü (#  ($ , (% 8­u…,(& +Ps s  o'  Þ t  uJ  , < Þþ  (]+(^+(_+(þ(Ú ( Þ (þ(Ý &Ü (# ($ , (% + -*{( {™oË (Íu,oq , oz Ži++XŽiþþ,>rpoR þDo¿ ŽiþDo¿ (yr?ps z(ú(R+sDo) ( *(E` ± » ý  0ƒÌŒ,+ rùps zu ,4 oË (Ìoq , oz +(`+ (*uS , oË (Ì (*(*00~oƒ s (a+(H+(éo) (8+(ø*0BÐ(U (€+r¹p(ïrMp(‹ oŒ (6+{c{ds* *0!( &}-}.X}/*0G,{. {/ þþ, rwpsÜ z{-{.£|i {.X}.*0¦Í{.X{/1 r“psÜ z{- {.(y {.XY(y {z  {z YX| Y 2"  X£|¤| X  X3Þ {.X}.*0)”(+ {-{.o, {.X}.*(- *0(x*:(. }0*0oR {0(Š *:(/ }1*0(G{1(Š *(0 *0 .ok (€+rOp(ïrÛp(‹ oŒ (b+*(1 *0 )(€+rOp(ïrýp(‹ oŒ (6+*(2 *0 .oÉ (€+rp(ïrp(‹ oŒ (6+*(2 *0 .oÉ (€+rOp(ïrWp(‹ oŒ (6+*:(3 }2*0 .{2(€+r‰p(ïr›p(‹ oŒ (6+*(4 *0ok þ(q*(5 *0Î(œ ( (ª*(6 *0Î(œ ( (­*(7 *0 þoâ *:(8 }3*0{3£*:(9 }4*0oR {4(Š *:(: }5*0{5þ(I+*(; *0 þok *’(9 }6}7}8}9*0®Ïoq , oz + Ži {6þþ,*{9(`+ s%{7(G+ {8(I+s'oj (4+(c+oÌ  (Ò (Ò þþ,* (< (< (Ê*:(: }:*0{:þ(I+*:(8 };*0{;(= *:(> }<*0o\ {<(Š *(? *0 þ(Ý*:(? }=*0{=þ(Ò*:(? }>*0{>þ(Þ*:(@ }A *0{A þok *:(B }@*0{@þoC *(D *0(å*:(E }A*0{A( (S+*V(B }B}C*0{B{C(d+þoF *0{D*0{E*0{F*0( }D}E}F*:(8 }G*0{G£*(G *0(ê*:(H }H*0{H( (T+*(D *0(å*:(I }I*0{I(d+*:(J }J*0{Jþo) *r(K }K}L}M*0BÐ{L{FoL {KoM sO{M(e+( (ž så*:(K }N*0Ï{NoN ( (ž så*V(K }O}P*03Ñ{OoN {P(èo) ( (ž så*V(K }Q}R*0*Ï{Q{FoO {R( (ž så*:(K }S*0{So) (¬*(G *0(ê*:(J }T*0{Tþo) *V(K }U}V*0:Ò{Uo) {c {ds]{V(e+(f+ så*r(P }W}X}Y*0){W{X{FoO {Y(F s *:(P }Z*0{D{Z(Q *V(R }[}\*0{[(Ò{\(š*V(S }]}^*0{](Ò{^(›*V(R }_}`*0{_oT {`(œ*(D *0(å*:(E }a*0{a( (S+*(D *0(å*:(I }b*0{b(d+*(D *0(å*:(I }c*0{c(d+*(U *0sÜ z:(V }d*0{dþoM *(V *0 (g+(W*(V *0(h+(O*(V *0(h+(A*²(V }e}f}g}h}i*0 CÓ{e{f{g{h{is (Û o× ,(Y*([*(V *0 (g+(U*(V *0 (g+(S*(V *0(h+(?*(V *0(h+(y*:(V }j*0{joW (i*V(V }k}l*0*Ô{k{l(Õ oÔ ,(c*(e*(V *0(h+({*(V *0(h+(*(V *0(g+(=*(V *0 (g+(;*’(V }m}n}o}p*0 6Õ{m{n{o{p(i+ (Ü,(g*(i*V(V }q}r*0*Ô{q{r(Õ oÔ ,(_*(a*(V *0(h+(M*(V *0(h+(I*(V *0 (g+(G*(V *0(h+(C*(V *0(h+(E*(V *0(h+(K*:(V }s*0p(g+ {sŒw(=*:(V }t*0p(g+ {tŒ<(=*:(V }u*0p(g+ {uŒx(=*:(V }v*0p(g+ {vŒy(=*:(V }w*0p(g+ {wŒz(=*:(V }x*0p(g+ {xŒ{(=*:(V }y*0p(g+ {yŒ|(=*:(V }z*0p(g+ {zŒ}(=*:(V }{*0p(g+ {{Œ~(=*:(V }|*0p(g+ {|ŒD(=*:(V }}*0p(g+ {}Œ(=*:(V }~*0p(g+ {~Œ[(=*:(V }*0p(g+ {Œ€(=*(V *0 p(h+Ð(U Œ(=*’(V }€}}‚}ƒ*0 6Õ{€{{‚{ƒ(i+ (Ü,(k*(m*V(V }„}…*0{„{…(×(]*(V *0(h+(*:(V }†*07Ö{†(ƒ3!{†tÎ {E (Ú(Y*{†*(V *0(h+(}*:(V }‡*0{‡(Ò(w*:(V }ˆ*0{ˆoW (m*:(V }‰*0{‰oT (u*:(V }Š*0{ŠoW (m*:(V }‹*0{‹oT (s*(V *0 (g+(q*:(V }Œ*0(g+{Œ(o*(X *0(ô(êsY *(Z *0(ö([ (j+*:(\ }*0{(ø*:(] }Ž*0{Ž(ù*V(8 }}*03N{/ {£*(ïr·p(‹ oŒ sÌ z0(† }‘*0(† *0 (‡ *0 (ˆ *0{‘*V(\ }’}“*0{’{“(û*r(^ }”}•}–*0*{•()+, {–( *{”þo *0 ( &*00×(_ (` (!(k+ bX, (‰ +a*05Ø(_ (` (_ (` ( (l+, (Š **0sò*0( }—}˜*0{—*0{˜*0&*0CÙþ,: &  ¹y7ž{˜bcXXX ¹y7ž{—(m+bcXXX **0 ( (ö*0FÚþ,7uo ,+&  {—{—(n+,{˜{˜þ***þþ*0o! (" o€ (ñ*0AÛþ,2þ,*&  {—{—(o+,{˜{˜þ***þþ*0Üuo ,(ú**0sý*0( }™*0{™*0&*0 ( &*0 (!(ö*0( (ø*(a *0TÞ(b (c o! (" o€ (ñ (þ(Ú (þ(üod  Þ (þ(Ý &Ü *0E :(e }š*0 ){š(÷{šof (ü(Z+sg *:(h }›*0+rGp(i ,(ý{›s oj þ**(a *07ß(b (c (þo! (" o€ (ñ(üok *:(l }œ*04à(m (n s ([+(ý{œs o *(G *0(ê*0Aá{( {( {( {( b`b` b`*08,{( 0* ¿0_ b{(`*( *0"â( j!ÿÿÿÿ_ ( j  b`*0|ã(  /+ Ži þþ,Urçp rp(½ ¥C(o (À r!p(À Ži  rp(½ ¥C(o (À sÜ z£*0eä{( E*1rCp rp(½ ¥C(o (À sÜ z(.+*op  (€ +›0vêŽis<s  s  s  oq {( (sr (s (t Žis(p+s þop *0{*0{ž*0{Ÿ*0( }}ž}Ÿ*(u *0{( (*:(v } *0{ (w (q+*0Qìox -{y -*(r+sz ({ * {| (} (~ {| ( +¯0î (€ (s+*0Lðo -{y -*s‚ (ƒ * {„ (, {„ (- (~ +´0ò (€ (t+*0s… þ(u+*0s† (v+*0:*0>*06*00*0(ÐU(U o‡ ,rƒp6oi ,***0;”(' -!(ïrop(‹ oŒ r ps zrƒp6þoi *:(ˆ }‰ *0{‰ s þoŠ *:(‹ }Œ *0{Œ s þo *0?óþ² ~ïsŽ o ,*s  ~ïsŽ o *0ô (EAg¨tµ  ¹y7ž{ø(‘ bcXXX ¹y7ž{÷(„bcXXX *t¶  ¹y7ž{ù(w+bcXXX *t·  ¹y7ž {û(x+bcXXX ¹y7ž {ú(w+bcXXX *t¸ ¹y7ž{ýbcXXX ¹y7ž{ü(y+bcXXX *0þõ(ECj©tµ tµ {÷ {÷  (†,{ø{ø(’ **t¶t¶{ù{ùþ(z+*t·t· {ú {ú(z+,{û {ûþ({+**t¸ t¸  {ü {ü(|+, {ý {ýþ**0ö (ƒE$ :`†®í?h‘ºã 5^‡°Ù+05:?Dmrw|Æ * * * * *t¿  ¹y7ž{5(y+bcXXX *tÀ  ¹y7ž{6(}+bcXXX *tÁ  ¹y7ž {7(}+bcXXX *t ¹y7ž{8(y+bcXXX *tà ¹y7ž{:bcXXX ¹y7ž{9(y+bcXXX *tÄ ¹y7ž{;(~+bcXXX *tÅ ¹y7ž{<(~+bcXXX *tÆ ¹y7ž{=(~+bcXXX *tÇ  ¹y7ž {>(~+bcXXX *tÈ  ¹y7ž {?(+bcXXX *tÉ  ¹y7ž {@(+bcXXX *tÊ  ¹y7ž {A(+bcXXX *tË  ¹y7ž {B(+bcXXX *tÌ ¹y7ž{C(€+bcXXX *tÍ ¹y7ž{D(+bcXXX *tÎ ¹y7ž{E(+bcXXX *tÏ ¹y7ž{F(y+bcXXX *tÐ ¹y7ž{G(y+bcXXX *tÑ ¹y7ž{H(y+bcXXX * * * * * *tÒ ¹y7ž{I(y+bcXXX * * * *! *tÓ" ¹y7ž{K(y+bcXXX ¹y7ž{J(‚+bcXXX *tÔ# ¹y7ž{L(y+bcXXX *0÷(ƒE$%Ho–ÏöDk’¹à.U|£ÊñW*t¿ t¿ {5{5þ(|+*tÀ tÀ {6 {6þ(ƒ+*tÁtÁ{7{7þ(ƒ+*tÂtÂ{8{8þ(|+*tÃtà {9 {9(|+,{: {:þ**tÄ tÄ  {; {;þ(„+*tÅ tÅ  {< {<þ(„+*tÆtÆ{={=þ(„+*tÇtÇ{>{>þ(„+*tÈtÈ{?{?þ(…+*tÉtÉ{@{@þ(…+*tÊtÊ{A{Aþ(…+*tËtË{B{Bþ(…+*tÌtÌ{C{Cþ(†+*tÍtÍ{D{Dþ(‡+*tÎtÎ{E{Eþ(‡+*tÏ tÏ! {F!{Fþ(|+*tÐ"tÐ#"{G#{Gþ(|+*tÑ$tÑ%${H%{Hþ(|+*tÒ&tÒ'&{I'{Iþ(|+*tÓ(tÓ)({J){J(ˆ+,({K){Kþ(|+**tÔ*tÔ+*{L+{Lþ(|+*0-ø(ë(Œ ( r‘p(Ÿ (µ (¹ (¬ *05D{c (3#t· {û {ú s@ (Ž **0ra0(^ s] (` *(3  ,PY{› ( (4  ,9{‰ (Š {› (œ {‰ (‹  (\ s] (` **0ùþ9{ò {ò @í(E7]štµ tµ {÷ {÷(‡,{ø {øþ(‰+**t¶t¶{ù{ùþ(Š+*t·t·{ú{ú(Š+,{û{ûþ(‹+**t¸t¸ {ü {ü(Œ+,{ý {ýþ****0÷(ƒE$$Fl’Êð<bˆ®Ôú Fl’¸ÞA*t¿ t¿ {5{5þ(Œ+*tÀ tÀ {6 {6þ(+*tÁtÁ{7{7þ(+*tÂtÂ{8{8þ(Œ+*tÃtà {9 {9(Œ+,{: {:þ**tÄ tÄ  {; {;þ(Ž+*tÅ tÅ  {< {<þ(Ž+*tÆtÆ{={=þ(Ž+*tÇtÇ{>{>þ(Ž+*tÈtÈ{?{?þ(+*tÉtÉ{@{@þ(+*tÊtÊ{A{Aþ(+*tËtË{B{Bþ(+*tÌtÌ{C{Cþ(+*tÍtÍ{D{Dþ(‘+*tÎtÎ{E{Eþ(‘+*tÏ tÏ! {F!{Fþ(Œ+*tÐ"tÐ#"{G#{Gþ(Œ+*tÑ$tÑ%${H%{Hþ(Œ+*tÒ&tÒ'&{I'{Iþ(Œ+*tÓ(tÓ)({J){J(’+,({K){Kþ(Œ+**tÔ*tÔ+*{L+{Lþ(Œ+*0µ!€î s“ €ïЫ(U oa €£Ð (U €¥(mo` , (moa +(m€¤ÐD(U oƒ €¦sÛ€§sÝ€¨ sîs” €© s s• €ª*(– *0 þ(ë*(— *0r›p(  (¬ (¬ (¹ *(˜ *0 ( (Ÿ *(- *0(3 *(™ *0(“+*(š *0ú(› (œ (Ç*(6 *0Î(œ ( (­*0s (”+*0 (•+*0sž (–+*0s` (—+*0sb (˜+*0 sd (™+*0 sŸ (·+*0sh (š+*0sj (›+*0sl (›+*0 (3 (¸+*0 (4 (¸+*0 (3 (¹+*0 (4 (¹+*:(  }¬*0ü{¬(Î *:(¡ }­*0ü{­(¢ *V(Ï }£ }¤ *0{£ {¤ o¿ þo¥ *:(¦ }§ *0 &üsÍ sT sV {§ s¨ s© *(î *0*r(ª }« }¬ }­ *0{¬ s\ {­ {« s® *:(¡ }´*0ü{´(¢ *:(¡ }µ*0{µo¯ *(° *0*(T *0sÜ z(î *0*(î *0*:(î }¶*0{¶o± *0ûþ,{¸,++ X {·- {¹þ+,7,1 {z  Y2 o² &XX3é++,${¸,{³ o² &+ + -o² &{·- {¹+,E,? {z  Y2%{¹,0+ o² &XX3Û++*0<Z / 0(´ X+x3a+A(´  YX (µ þo¶ *0,ÿ,( {z  Y  2 o² & X X3í**0,ÿ,( {z  Y  20o² & X X3í**0, (p **0íXYE&oYE%xYE ! +!+ !  \ !6 X \ +é !Y 2ZXX3í (n X  !6"\i(œ+&^\+Ñ{·(r *0œXYE&oYE%xYE ! +!+ !  !2[+[e !1 X [ +é !Y 2ZXX3í !þþ(n X !€3 !ÿÿÿÿÿÿÿ+!/e+ !>z!€3!þ+,2dYEiYE !d+!+[i(œ+&][8vÿÿÿ{·(r *0 *0££(Uþ(e*0~*0%o· ,+o¸ ,+o¹ þ*0+(x , o` +,oa (w þoâ **0A(y , oÆ sº *oÑ ,+Û(ïrŸp(‹ oŒ sÌ z0 *0 :(Y (z  (» rƒp %¤(½ þob *0'(z  (¼ £ sž þ(v *0E(z  (¼ £ (z  (¼ £s¢ þ(v *0)(z  (¼ £ s¤ þ(v *000 9þþ**0ý(v þþ,(ïrÃp(‹ oŒ s½ z(¾  YE#YEt+YEJ-YE&0YE*(œ X8pÿÿÿ(š X8Yÿÿÿ+(J (› X8<ÿÿÿ(ïrýp(‹ oŒ s½ z (J (› X8ÿÿÿ0A 2(ïr?p(‹ oŒ s½ z(¾ (€ , X+Á*0b 2(ïr?p(‹ oŒ s½ z(¾ (€ ,X(‚ s¿ **YEs¿ *Xs¿ *0J (¾ .YE sÀ *X(ƒ  (Á ( s¿ (à sÀ *0l 2(ïr}p(‹ oŒ s½ z(¾ (€ , X+Á*YE(„ sÄ *X(„ sÄ *0~*0(…  (Å (Æ (Ç (Æ (È (Æ (É  3+F, (Ê +: Y(y {z YX(x († ¥C(Ë (y (Ê 9z{Ì ( {Ì (Á , (Ê +T X(y Y(y {z  {z     YX(x († ¥C(Ë (y (Ê +sÍ *0~*09}{·-3, {¹+,(v (q +(v (p +(½ {·,/, {¹+,(v (q *(v (p **(p *0ü %YEÝAYE½EYEiiiLYEq„OYEQUYEQXYE£aYEØæù~   iYEqlYE«nYE‡SsYEQd>xYE1þzo¿ (ïrµp(‹ oŒ (] s½ zs¦ þ(} *s¨ þ(} *þ( *sª þ(} *s¬ þ(} *þ(~ *s® þ(} *s° þ(} *s² þ(} *X  (¾ LYEÅXYE~dYEpiYEblYEznYEUBuYE4xYE&(ïrçp(‹ oŒ rp(] s½ z s´ þ(} * s¶ þ(} * s¸ þ(} * sº þ(} *s¼ þ(} *s¾ þ(} *sÀ þ(} *s þ(} *Xþ(+*05,! {Ï -sÄ þ(} *þ(Š *0 ‚s  (v (  (‡  (Ð  (Ñ  (Ò (¾ ,%{Ï -sÆ þ(} *þ(‹ *0Ô(!+:Á(#+:®(%+:›(ž+:ˆ('+:v("+-b($+-P(&+->((+-/(Ÿ+-(ïr#p(‹ oŒ s½ z¥Š n*¥€*¥ n*¥~ n*¥|n*¥[*¥‹j*¥Dj*¥}j*¥{j*0Œ(!+:g(#+-L(%+-4('+-(ž+-+T¥‹ ŒŠ+D¥[ Œ€+4¥D Œ+$¥}ÑŒ~+¥{ÒŒ| ( *0 ‚(+:^(+:¨( +-(ïrip(‹ oŒ s½ z¥# (Ó ,9 {z c/+c/+þDo¿ +r‘p(À († ¥C(Ô sÕ (¡+sÖ 8[¥x(Ó ,9 {z c/+c/+þDo¿ +r‘p(À († ¥C(× "€þ,+ "€eþ,+(Ø þ"þþsÖ 8±¥y(Ó ,9 {z c/+c/+þDo¿ +r‘p(À († ¥C(Ù #ðþ,+#ðeþ,+(Ú þ#þþsÖ (Û  (Ü  (Ý  {¸  ,"  ,{³ (Ó  (À +    (‰ XsÞ *0«X (¾ LYEìXYExdYEkiYE^lYEnYE]@uYE3xYE&(ïrçp(‹ oŒ rp(] s½ z(Ž (s XsÞ *X  (¾ XYEldYE^iYEPoYEBuYE4xYE&(ïrçp(‹ oŒ r•p(] s½ z(Ž (s  XsÞ *X  (¾ XYEldYE^iYEPoYEBuYE4xYE&(ïrçp(‹ oŒ r›p(] s½ z(Ž (s  XsÞ *X  (¾ XYEldYE^iYEPoYEBuYE4xYE&(ïrçp(‹ oŒ r¡p(] s½ z(Ž (s  XsÞ *0 Õ{¸ 9„ {³ +YEk{³ r§p Œz,4uB,(½ ¥Co¾ +o¿ +rp(À r p(À sÜ z0+ ( ,Q  {á {â {ã {ä {z  {æ {ç {è {é {ês+  {¹,H {á {â {ã {ä {æ {ç {è {é {ês+  ,R  {á {â {ã {ä {å {æ {ç {z  {é {ês+  ,  (¢++r×p(½ XsÞ *0 ä !s  (v (  (‡  (Ð  (Ñ  (Ò (¾ 9‡  {Ï -S{ß ,,  {à   {ß   ¥D(y  sá +R(ïr p(‹ oŒ s½   z {Ï {z  (y  sá +   sá (â (ã  9‡  {Ï -S {ß ,,   {à   {ß  ¥D(y sá +R(ïr3 p(‹ oŒ s½   z {Ï {z   (y  sá +    sá (â (ã  %YEAYEÖEYEKr™LYEsšOYEUYEÖXYE¡aYEØI™Õü3WiYEElYEKnYE&sYEj§éxYE(ïrµp(‹ oŒ s½   z {ß ,Ù {à  {ß  (Ž (s XsÞ * {ß ,› {à  {ß  ¥<(‰ XsÞ * {ß 9[ÿÿÿ {à  {ß  (£+oä oå &XsÞ * {ß 9ÿÿÿ {à  {ß 8;ÿÿÿ {ß 9òþÿÿ {à  {ß X(¾ XYEndYEiYEqoYEDuYE6xYE((ïrçp(‹ oŒ rc p(] s½   z (Ž (s XsÞ * ( (t XsÞ * {ß 9þÿÿ {à  {ß 8(þÿÿ {ß 9ßýÿÿ {à  {ß X(¾ XYEndYEiYEqoYEDuYE6xYE((ïrçp(‹ oŒ rÙp(] s½   z (Ž (s XsÞ * ( (t XsÞ * {ß 9óüÿÿ {à  {ß  ("+-: ($+-1 (&+-( ((+- (Ÿ+- ( (t + (Ž (s XsÞ * {ß 9nüÿÿ {ß {ß 9Yüÿÿ{ß {à  {à {ß ŒP(|  (| (¤+oå &XsÞ * {ß 9ýûÿÿ {à  {ß  ¥w,rg p+rq p(‰ XsÞ * {ß 9­ûÿÿ {à  {ß  ¥zo² &XsÞ * {ß 9qûÿÿ {à  {ß 8yþÿÿ {ß 9Jûÿÿ {à  {ß  ( * {ß 9ûÿÿ {à  {ß +Ç {ß 9ïúÿÿ {à  {ß +£ {ß 9Ëúÿÿ {à  {ß 8íúÿÿ {ß 9¤úÿÿ {à  {ß  ( * {ß 9púÿÿ {à  {ß  ,  o¿ +r×p(‰ XsÞ * {ß 9#úÿÿ {à  {ß 8?üÿÿ {ß 9üùÿÿ {à  {ß  ¥#r} p(† ¥C(Ô {¸,1sÕ (¡+,{³ (Ó (À +(‰ XsÞ * {ß 9]ùÿÿ {à  {ß 8þÿÿ {ß 96ùÿÿ {à  {ß 8çýÿÿ {ß 9ùÿÿ {à  {ß 8Àýÿÿ {ß 9èøÿÿ {à  {ß  (‘ * o² &XsÞ *0 ÿ#2+(¾ %3X þþ+,oæ Œ$*(ç ,C(¾ o² &X(¾ o² &X8|ÿÿÿ(¾ %YE+o² &X8;ÿÿÿX(¥+ (è (é 8ÿÿÿ0 H'oê (ë (ì (í (î     (¦+*0 £)sï 2+(¾ %3X þþ+,(§+(¨+*(ç ,X+(¾ %YEX8nÿÿÿXþ(Œ *0S+{ð r p(Š ,sñ Œ*(©+*(v   (ò Ð+(U (ª+(©+*0{·*0{¸*0{¹*0}·*0}¸*0}¹*0( }·}¸}¹*V(ó }º}»*0{º{»þ(«+*²(ó }¼}½}¾}¿}À*0 4{¾{À{¼(õ (õ {¿{½Xþ(+*²(ó }Á}Â}Ã}Ä}Å*0 -{Ä{Á{Â{Ã{Ås  þ(v *’(ó }Æ}Ç}È}É*0 ){È{Æ(õ {É{ÇXþ(+*r(ö }Ê}Ë}Ì*0 ${Ê{Ì(õ {ËXþ(+*r(ö }Í}Î}Ï*0 ${Í{Ï(õ {ÎXþ(+*r(ö }Ð}Ñ}Ò*0 ${Ð{Ò(õ {ÑXþ(+*r(ö }Ó}Ô}Õ*0 ${Ó{Õ(õ {ÔXþ(+*r(ö }Ö}×}Ø*0 ${Ö{Ø(õ {×Xþ(+*r(ö }Ù}Ú}Û*0 ${Ù{Û(õ {ÚXþ(+*r(ö }Ü}Ý}Þ*0 ${Ü{Þ(õ {ÝXþ(+*r(ö }ß}à}á*0 ${ß{à(õ {áXþ(+*r(ö }â}ã}ä*0 ${â{ã(õ {äXþ(+*r(ö }å}æ}ç*0 ${å{æ(õ {çXþ(+*r(ö }è}é}ê*0 ${è{é(õ {êXþ(+*r(ö }ë}ì}í*0 ${ë{í(õ {ìXþ(+*r(ö }î}ï}ð*0 ${î{ð(õ {ïXþ(+*r(ö }ñ}ò}ó*0 ${ñ{ó(õ {òXþ(+*r(ö }ô}õ}ö*0 ${ô{ö(õ {õXþ(+*²(ö }÷}ø}ù}ú}û*0 .{÷{ø{ù{ú{û(õ þ(Š *Ò(ö }ü}ý}þ}ÿ}}*0 4{ü{þ{ÿ{{{ý(õ þ(‹ *:(T }÷ *0 5-{÷ oø (ù (ú (ˆ (‰ þoÛ *r(û }ü }ý }þ *0 {ü {ý {þ þ(¬+*0/Ы(U oa €(½ €s €*0<.r‡ poà oË Ð(U (m+ Þ t  Þ*/0 0"0oÿ ( Þt ( Þ*0 *0/£D**02{  {  {  Ži3\ X/(Êr™ ps zDY2 (Ð ¤DXX3à+ ¤DX (ý *0W3{  {  {  - r¥ psÜ zY£Dþ 3Y+Y(ý  s *0M4{  {  {  3*£D £De¤DX(ý  s ( *0_6X þþ, Xs *(Ó  ,, { ( { ( Y+®Xs *0 ø>!!u¨-q!u©:Àtª {Û {Ý {Ü (Õ (  (  (  (  (Òs 8Zt¨  {Ó  {Ô  {Ò  o’   (Ö (v    (Ô 8ÿt©{Ø {Ö{Ù {Ú{× {Õ ,+""u¢:"u¡:6(Õ (  (   (  (  X (Õ (  (  (  (    (¿(Ô XXs 8t¢{Ë(Õ (   (  (  (   YX (Õ (  (  (  (    (»(ÔXs 8bt¡{Ê(Õ (   (  (  (  XY X>°(Ñ  (Õ (  (  (  (  (Ò (  (  ,*   (»(ÔXs 8€   (½(ÔXXs +V (Õ (  (  (  (    (½(ÔXXs (  (  (  (  s *0.@0*   (­+(ý  (Õ (  *0( (v Xs *0$A s rÍ p( ( s *0°C  u¨:× u©:þ  u©- uª:‹rÑ p 8s+zt© {Ø {Ö {× (Ù  ,+( ( rv!p(× ( ( ( 8@ÿÿÿtª{Ý8ÿÿÿt¨{Ó{Ô {Ò o’ (× *t© {Úu¢9êþÿÿ{Út¢ {å9Òþÿÿ{Ø {Ö  {Ë (Ù ( (  X(®+( (  X8Pþÿÿ02D  (w (Ù  ( (¯+(p+(Ë *0” s o± o *0 ¨Eu©-Euª:At¨ {Ó {Ô {Ò o’ o (v X*t©{Úu¢,y{Út¢{Ø{Ö{Ù {× {Õ {Ë (°+   X(±+ X8ÿÿÿ{Ø{Ö{Ù {× {Õ (°+ , +rv!po  rv!p(v X   8¦þÿÿtª  {Û {Ý {Ü  (²+&(°+  (²+& *0H   (°+&*0WJ{ ,D { { ,5{ { { -!{ (, { (, s *rz!psÜ z0oN,j(³+ (u 3MtÛ {kr!p(Š ,{l (´+( *{krš!p(Š ,{l{ -*r¦!psÜ z*0~€*0~*0BPs  (µ+(»  rî!p(Örò!p(Ö(¿( (¿( *0BRs  (¶+(»  rî!p(Örò!p(Ö(¿( (¿( *0@r›p(Örö!p(Ö(¸ r¥p(Ö(¿( (¿( *0@rú!p(Örö!p(Ö(¸ r"p(Ö(¿( (¿( *04r›p(Ö(» r¥p(Ö(¿( (¿( *0Â'YE©"YEYE~\YEk( ,Uid[ ] i [ ] i ] r"pþDo¿ (À þDo¿ (À þDo¿ (À *þzo¿ *r "p*r"p*:jÿÿÿr"p*9Qÿÿÿr"p*0>S(v / ( þ+,(¾ "þþ+, X+Å*0<T(v 3(¯+ (p+(Ë *X(¾ (ç ( +Ä0U  r""p(À r""p(À *0{ 1{ Y( **0s *0 %( (³+Œ(î *0 ¶[0+{ þþ,r&"p(Ö Ý… 95 o ,r&"p(Ö Ýb o  (Y o` ,0 oa Ð?(U o` , oa +(m++, o¿ (Ö(  8x (Y Ð%(U oQ ,þ, Žiþ+,8?£(·+(9(Š ,+(v þþ,8rî!p(! rò!p(" /+þ,+X  þþ,8·0rp+"Y(y   {z   YX(x  X (v    þþ,rp+0X(y   {z  (v Y    YX(x  X(y  Y(y  {z  {z     YX(x  s (¸+uA9žtA{# u<,(Ö+!Y(³+Œ(î (ë  (Ö (Ö(¿( (¿( (  Þ tÞ+>tB{$ r."poå (À rx"p(À (Ö(  -Y (ô +{%  o&  ÞIY (ô  Þ/t(ë r|"poå (À (Ö Þ*A4k{æ „…/0 À`s  { 9£ { { -${ (, ŒPþ(í * rŒ"p(Öo' o( s) s* (¹+r›p(Ö(¸ rCp(Ö(¿( (¿( * +07,/rŒ"p(ÖrCp(Ö(¿( (¿( **0s! *0s+ *0s, *0vks  (u E%h(u Eþî[rÑ p ps+ztÛ {l{ -{k (ë (Ö*{l {k (ë þþ(Ö (º+(½( (ð *tÜ{m{n (ë oR { - (Ö*þþ(Ö (º+(½( (ð *tÙ{h{i(ë r"poR (À rx"p(À (Ö( 3(£ **tÝ{o9o(Y u< , (ë  (ê   (Ö*u4  9¬   (-   YE6µrœ"p þDo¿ (À   (Ö(Œ ( (å * (.  (/  s (»+(¼+{ç(½+-+.r¨"pþDo¿ (À   (Ö( (å * (1  (1  (/  (/  s# s% (¼+{ç(¾+-þ+,+Yr¨"pþDo¿ (À   (Ör¸"pþDo¿ (À   (Ö( ( (æ *u9º{ê9ŠoÐ (»+s' (¿+{ç[X(À+þþrÈ"p(Ö(ä (½( (ð Þu ,oê &Ü&Ü*rÐ"p(Ö( 3(£ **( ( ( ,(Y (Í +,(£ *(ë (Ö{é,g o2  [ s) (3 Ži-+  þþ,* s+ (9+(Á+(ã (½( **(ë (à *(ë (á *tØ{gþþr›p(Ö(»+(Â+(¸ (ð *tÚ{j (Ã+ (Ä+(â *tÛ  ((+- (Y (? +9Iúÿÿ{l {k r!p(Š ,Z (´+(4 (5   (í (»+(Å+(Æ+{çY(Ç+( (ä *(ë r¹p(Ö*ã`C0 Gm (È+s6 {ès   {æ(É+Œ(î *0Ën9¿(+:;(+:J( +:((+:ï('+:Ä(%+:£(&+:x(#+:M($+:"(!+:÷("+:Ì(ž+:¡(Ÿ+:w(+-[( +-0o¿ Þ#t rÜ"poå (À rx"p(À Þ*¥z r p(ç (À r p(À *¥w,rg p*rq p*¥Š þŠo¿ r#p(À *¥‹þ‹o¿ rÙp(À *¥|{ã(7 r#p(À *¥{{ã(8 r÷p(À *¥~{ã(9 r#p(À *¥}{ã(: r#p(À *¥  {ã(; r#p(À *¥D  {ã(< *¥[  {ã(= r"#p(À *¥€  {ã(> r¡p(À *¥#  rp{ã(Ô r&#p(À *¥x(Ø , r*#p8¾(? , r2#p8ª(@ , rF#p8–{á(v   þþ,{á(¾ gþ+, €kþ+,  ÿÿÿkþ+, ikþ+,#(A   {ã(< rX#p(À +{á{ã(× r‡p(À *¥y{á{ã(Ù (Ú ,r*#p*(B ,r2#p*(C ,rF#p*{á(¾ g3s1 (Å +, rX#p(À **r9p*¦ °#0{å-*{ås3 (Ö *0{âs5 (÷ (Ê+*0s7 (÷ (Ú *0o( ( (Ë+(ø *0o( ( (Ë+(ù *0( (Ë+(ù *0 sþ *0( } } } *0{ *0{ *0{ *0&*(D *0 Rp(E (F (Ö r^#p(Ö(¿( rö!p(Ö(¿( (½( *(G *0 iq(H (I (Ö r^#p(Ö(¿( , {% + rb#p(Örö!p(Ö(¿( (¿( *0s €s €*0( }*0~*0 ( þ*0~*0 ( þ*0{*0Zþ, ( 3 * **0 ( ( *0.rþ,u´ ,{ { þ**þþ*0*,þ,þ,{ { þ**þþ*0su´ ,( **:(„ }J *0Z{J { þþ*V(K }}*0 1{(Y { 4{(½ þob *²(L }}}}}*0 *{{{{{þ(í *:(M }N *0{N Œ\þoO *:(P }Q *0{Q ( þoR *²(L } }!}"}#}$*0 *{ {!{"{#{$þ(í *r(S }%}&}'*02{'{&X3*{%(T ŒXsU (V *Ò(S }(})}*}+},}-*0`Z{+{)X {-þþ,+{,{*X þþ,*{({-(W ŒXsU (V *0L(X }.}/}0}1}2}3}4}5 }6*0 ^{1{0(»+{2{3{4{5{6(ñ {/(¼+{6{.{ç(½+(ä *V(Y }7}8*0)Z{8{7X þþ,*XsZ ([ *:(\ }9*0'{9oë ,{9oí s] (^ **0 ( &*0¥oR ¥oR ( *ò(_ }:};}<}=}>}?}@*0{toR {:{;{<{={>{@oR {?(Y  4{?(½ ob (í (  Þ t  Þs` *ai Ò(a }b }c }d }e }f }g *0 Su( ( {f (ë {b {c {d {e {f {g Œ](í sh *:(i }j *0{j Œ\(ß *(k *0(l ,*-þ*:(m }H*0{H(ö *:(m }I*0{I(ö *:(m }J*0{J(ö *0%o· ,+o¸ ,+o¹ þ*0;(9 ,1o` ,o` ,oa oa þoâ **þoâ **0~|*0~}*0~~*0~*0Nv(R,C(Z Ži12Ð(U o` , oa +£•(Hþ(: ***0 sA €L*0( }K*0sX *0 (N þ*0~L*0 (N þ*0sV *0 (N þ*0sT *0 (N þ*0sQ *0 (N þ*0sO *0 (N þ*0{K*0(A }S*0{S*0(A }T}U*0{T*0{U*0(A }V*0{V*0(A }W*0{W*0(A }X*0{X*0( }Y*0 {Y{S*0( }Z*0 {Z{T*0 {Z{U*0( }[*0 {[{V*0( }\*0 {\{W*0( }]*0 {]{X*0 sf €_*0( }^*0sƒ *0 (u þ*0~_*0 (u þ*0s€ *0 (u þ*0s} *0 (u þ*0s{ *0 (u þ*0sx *0 (u þ*0sv *0 (u þ*0{^*0(f }g*0{g*0(f }h}i*0{h*0{i*0(f }j*0{j*0(f }k}l*0{k*0{l*0(f }m}n*0{m*0{n*0(f }o*0{o*0( }p*0 {p{g*0( }q*0 {q{h*0 {q{i*0( }r*0 {r{j*0( }s*0 {s{k*0 {s{l*0( }t*0 {t{m*0 {t{n*0( }u*0 {u{o*0Øx(à ([,4(à (\ (à (t s™ (Ì+ (Í+(k *(à (Q9}(à (Y Œ[,+ rps zŽi \  Y25£oR oZ sn ¤\XX3Ë(Í+(o *(g *0z9(Y (P,(g(Î+(s *(S,(q *(à (R,F(à (p (o (p (Is— (Ì+ (G(Í+(m *(” *(g *0_üŒ ,(• *Ð(U Ðí(U (: ,r‡p(q (m *Ð(U (: ,(i *(g *(r *0oR sn *(r *0oR sn *0<{ u©-uª-t¨{Ò*t©{Õ*tª {Ý+Ä0<{ u©-uª-t¨{Ô*t©{Ù*tª {Ý+Ä0)(› (œ ,+(› (œ (Ô*0 (Ö*0 (Ö*0 (Ö*0 (Ö*0 (Ö*0~w*0C|u¨,9t¨ {Ò,*{Ô,"{Ó u< , rp(Š ***0(»( *0~x*0~y*0~z*0~{*0 (Ò*0 (¤ ,*(¤ ,*þ(Ï+*0(¿( *0(½( *0(½( *0(½( *0sË þ(« *0sÍ þ(« *0sÏ þ(« *08}{t ,. {t {u ov (½( +Ê*0@{t ,2 {t {t - {u *{t {u  (³ *(£ *0 sÑ (´ *0 sÓ (´ *0 sÕ (´ *0s× (´ *0/rŒ"p(ÖrCp(Ö(¿( (¿( *0r›p(Ö(¸ (¹ *0B€{t ,4 {t {t - {u *{t {u sÙ (Ð+*(£ *09,) { r‘p(Öow (½( *r‡p(Ö*0Fr›p(Örö!p(Ö(Ñ+(¸ r¥p(Ö(¿( (¿( *0/r›p(Ör¥p(Ö(¿( (¿( *0/rî!p(Örò!p(Ö(¿( (¿( *0‚‚ox ,r&"p(Ö(Œ ( *oy ,N {„ (, {„ (- 0r&"p(Ö(Œ ( * ow Y(Ò+( *(Œ *0†   (Ò+*0sz (Ó+*(— *0(½( *(— *0(½( *(— *0(½( *(— *0(½( *(— *0(»( *(— *0(»( *(— *0(»( *({ *0r›p(Ö(¿( *({ *0rö!p(Ö(¿( *({ *0*:({ }v*0{v(¿( *(— *0 þ(° *(„ *0*0Ärp(Ö€wsà €xsÅ €ysÇ €zsÉ €{Ð(U €}(< o` , (< oa +(< €|Ы(U €(> o` , (> oa +(> €~r9p(Ö€€rf#p(Ö€*(| *0*0 Ð(U *0~ƒ*0~„*0~…*0~†*0H‡þ (ã o} ,*(á %Œ[¤(~ (ã o *0$ˆ(ã (Ú (å  Þ (ã (Ý &Ü*  0I‡þ (ä o€ ,*(â %Œ<¤o (ä o‚ *0$ˆ(ä (Ú (ç  Þ (ä (Ý &Ü*  0!(æ (¤+*0!(æ (¤+*0j(æ (¤+*0 (æ (¤+*08‰þ (ä o€ ,*(± Œ (ä o‚ *0$ˆ(ä (Ú (í  Þ (ä (Ý &Ü*  0 (è (¤+*0Ò‹ €À~À /(Êr™ ps zœ  Y  2 (V ¤œ X X3é€Ás—€Âs—€Ã(à %Ð[(U ¤oƒ €ƒ(à rl#p%Ð<(U ¤o„ €„s… €…s† €†*0-- !*]- Z[+áZ[(ñ Z*0%-*]- Z[+éZ[(ò Z*0/  {¾Y 2{¿£DbX X X3å*0 /**0 /**0*0 *0 ÿÿÿ*0 !*0 !ÿÿÿ*0 !ÿÿÿ*0 ÿÿÿ*0 ÿ*0*0 ÿÿÿ*0 ÿÿÿ*0 ÿÿ*0*00*0)Z3+£D þþ,X*Y+×0Z{¿{¾Y(  (ƒ*0*0*0*0uŒ/+  /!(Ô+s„ {¿¤D( *(Ô+s„  +#{¿ (ò [ ]¤DX 2Ù( *0e!/ !+ (Ô+s„  +,{¿!(ñ [!]i¤DX 2Ð( *0I{¾3 {¿£D* {¾Y  0{¿£D ZX Y Y3á*0~™*0~š*0LŽ{¾X (Ô+s„  {¾Y 2${¿X{¿£D¤DX X3Ü*0dŒ{¾Y þþ,( *{¾Y (Ô+s„  {¾Y 2${¿{¿X£D¤DX X3Ü*0oZ/i{¾/{¿£D+{¾/{¿£D+XX {¿ ÿÿÿ_¤DXd+’*05¬{¾{¾(ô X (Ô+s„ ( ( *0¼,<¬{¾/{¿£D+{¾/{¿£D+YX 12{¿ ÿÿÿ_¤DXd8ˆÿÿÿ X {¿ ÿÿÿ_¤DXdY8Lÿÿÿþþ*0;¬{¾{¾(ô  (Ô+s„ ( ,( *( *0 {¾þ*0 {¾þ*0{¾3{¿£Dþ**0&3*£D£D3 Y+Ý*0+{¾{¾3{¿{¿{¾Y( **0T,3*/+ Y£D /+ Y£D 3Y+´/**0K,{¾X{¾X/*{¾X{¾X1*  {¿{¿{¾XY( *083*£D£D3 Y+Ü£D£D/**0;{¾{¾/*{¾{¾1*{¿{¿{¾Y( *0 ( þ*0 ( þ*0Z(  þþ*0Z(  þþ*0( 3**0( 3**0@£DjX d !ÿÿÿ_i ¤D!1 X+Á*0]{¾X (Ô+s„ j {¾Y 2+{¿{¿£DjZ(# X X3Õ( *0D‘(Ô+s„ jjZ {¿!ÿÿÿ_i¤D{¿di¤D( *0F’!18{¿£DjX {¿!ÿÿÿ_i¤DdX+»*0™“{¾ X (Ô+s„ j !Y2S{¿£DjX{¿£Dj ZX{¿!ÿÿÿ_i¤DdXX3­(& ( *0è”{¾{¾X (Ô+s„ {¿ {¿ {¿{¾Y?™ £Dj!  {¾Y   2P £Dj  £DjX ZX   !ÿÿÿ_i¤D d X  X   X3° (& XX@gÿÿÿ( *0r•{¾þ {¾þ ,+,{¿£D{¿£D(% *,{¿£D(' *,{¿£D(' *(( *0 z–(ò [[ /(Êr™ ps zD  Y 2   Z(ò ¤D X  X3à sj *0~›*0?X(+ Ži/(+ X£ü{Œþ+, X+Í(+ £ü*00, (+ £ü{Œ þþ, rx#psÜ z(, *0~œ*0~*0~ž*0~Ÿ*0~ *0~¡*0+Z-*(0 Y£D_ þþ,*Y+Õ0 Z (4 *00{¾-*{¾YZ{¿{¾Y£D(5 X*0—{ˆXY [ [ .n{¾/{¿£D+ {¾/{¿£D+]Y _c_b`(. {ˆ£D_*{¾/{¿£D+ ] _c(. {ˆ£D_*0 JZ{‹3+þ,*(7  ¤X{ˆX+¶00š{‹(Õ+ {¾Z   (8 *08›  +£ þþ, +X Ži2ß{ˆZXXX*0 Œ{‹3*2+%{¿£j(2 £[Z(# X {ˆX 2XYsZ + sZ (‡ (ˆ 8tÿÿÿ0 9ž(: [X (Ô+s„   (; ( *0IŸ(6 (6 X (-  (9  (9  {‹{Š (~ (< ( *0*0Р{¾ {¾ (ô  >©[ {¾(õ {¿s„ (  {¾(õ {¿s„ ( (Ö+( ( (Ö+ (Ö+   ( (     ( ( ( ( *() *0sk (? *0~¢*0~£*0~¤*0dZ{¾{¾X (A /+{¾(B þ,+{¾(B þ,() *(C /(= *sm (? *0¡{¿ {¾Y {¿ {¾Y j£DjZ!1+ þ9¼1 rè#psÜ z!ÿÿÿ_i  d X£D   þþ,XX£DY¤D+,XX£D YX¤D!X /X£DjZX+X8(ÿÿÿ(  *0 ¢{¿ {¾Y {¿ {¾Y j£DjZ!1+ þ9µ1 rè#psÜ z!ÿÿÿ_i  d X£DY/XX£DX¤D+,X X£DYY¤D!X /X£DjZX+X8/ÿÿÿ(  *0Å£{¿ {¿ -F3£D£D[8|£Dj!ZY£DjX£Dj[i+PX3£D£DX[+4£Dj!ZY£DjX£Dj!X[i -(  þþ,***0(,{¾Y {¾Y X/*(G *0Ѥ{¾{¿(×+s„ {¾Y{¾YYXX (Ô+s„ {¾Y {¾Y  Y-f(H 1(E ( (F +Í-þ+- X3 Y+©YY +œ8–ÿÿÿ( ( sŠ *07{¾-s‹ z{¾Y{¾Y/ ( sŠ *(I *0(J (t *0(J (s *0%¥( ( ,*(J  (s +Û0( 3(M *(M *0~¥*07-*]-(D [+â(D (D [+É0( (P *0U¦{¾-*(O (J  (s (t {¾-(D +Â(D (D +«0( (R *04{¾3*{¿£DlZXZX+Ì0'§ l   ##ð?(T *0( *0( *0i,{¾Esu z*{¿£D*{¿£D {¿£D  ÿ1su z ÿÿÿ_ ÿ_bX*0À{¾EMsu z!*{¿£Dj*{¿£D {¿£D  ÿÿÿ_j ÿÿÿ_jbX*{¿£D {¿£D {¿£D  ÿÿ1su z ÿÿÿ_j ÿÿÿ_jbX ÿÿ_j0bX*0<{¾Y1sŒ ( *sŒ ( X(D +Ä0®©{Ž ,l { ( {Ž (J  (s  (t , {¾þ+,+§(Ø+8Œÿÿÿ( ,þ+,*rp(½ ¥C(o ( *0H«{¾Y  (‘  ( (Z  (w (Ù+ {’ -rÁp* (p+(Ë *0[¬3*(¾ i0iY 0  þþ+,%(D ( ( X+°rûpsw z0@­(v (“ ,rm$pr‡$ps z (    ( (] *0Z{¾ þþ*0{¾/ {¿£D**0F®( ,*(  (  (J (t (a ( ( (a (D *0 ( (a *0{ˆ*0{‰*0{Š*0{‹*0{Œ*0{*0{Ž*0<( }ˆ}‰}Š}‹}Œ}}Ž*(” *0 (@ *(” *0 (D *0%-*]- Z[+éZ[(o Z*0~*0~*0~‘*0~’*0~“*0~”*0~•*0*0 ¯3£¤*[ nnZ!x^m X Z(x ZX(x  Y?¢X£X£X   nnZ!x^mX x^¤X   nnZ!x^m xXY x^¤ nnZ!x^m XX@^ÿÿÿ*0 §°(v !Y(ˆ  (v !Y(ˆ  (Õ+  (x  Œh,+ rps zŽi Y2/ £ nnZ!x^m¤XX3Ñ *0*0~–*0~—*0"±£ £ nnZ!x^m*0 ¡²(q (t Y(o (‡  (Õ+ (x  (Õ+  (x  /(Êr™ ps z Y2 (} ¤XX3á (y *0*0*0~˜*0 x*0 !x*0*0*0*0N·-*]-nnZ!x^m[+ÜnnZ!x^m[(‡  nnZ!x^m*0f·-*!]-!nnZ!x^m![+ÌnnZ!x^m![(ˆ  nnZ!x^m*0 "Z!x AzBs• €(p (– €(p (— €‘(p (˜ €’(p (™ €“(p (š €”(r €•D€— +(| (o ¤DX 2å(| €– ð x^€˜( €™( €š ü%  (* ¤ü%  (* ¤ü%  (* ¤ü% @ (* ¤ü%  P(* ¤ü%  (* ¤ü%  (* ¤ü% @ (* ¤ü%   (* ¤ü%    ((* ¤ü%    (* ¤ü%  @ (* ¤ü%   Ð(* ¤ü€›D€ +(/ (ò Y¤DX 2ã(/ €œD€Ÿ +(1 (ò ¤DX 2å(1 €ž[€¡ +(3 !(ñ ¤[X 2Ý(3 €  ú[€¢ }[€£(+ £ü{Œ[€¤( €¥*0}› ( &*0({› {› {e Œ\¥U(œ }e *0({› {› {e Œ\¥U( }e *0}ž ( *0{ž þog *0}Ÿ }  ( &*0{Ÿ (Ú+{  þo¡ *0}¢ ( &*0({¢ {¢ {h Œ\¥U(œ }h *0({¢ {¢ {h Œ\¥U( }h *0(´s£ þ¤ s¥ (Ú+o¦ s§ *0}¨ ( *0{¨ þog *0}© }ª ( &*0{© (Û+{ª þo« *0}¬ ( &*0${¬ {¬ (­ (œ ¥ê(® *0${¬ {¬ (­ ( ¥ê(® *0(µs¯ þ° s± (Û+o² s³ *0*0%o· ,+o¸ ,+o¹ þ*0;(ž ,1o` ,o` ,oa oa þoâ **þoâ **0~Ç*0~È*0~É*0~Ê*0 *0 *0 *0*0S¶Œr,+ rps zŽi   Y  2%  £< `oã ¤ X X3Û*0"Õ `oã , sì (´ **0\·,þ, Žiþ+,*þ, Žiþ+,£ (Ü+(µ *(ïr$p(‹ oŒ sÌ z0^N,þ, Žiþ+, rÇ$psÜ zþ, Žiþ+, £(Ü+*(ïr$p(‹ oŒ sÌ z05» Ð (U oQ (ª  , {¶ (+_þ**02¼Ð (U oQ (ª  , {¶ (+(· **0ŽoR Ðv(U (Ÿ -Ðí(U (Ÿ þ+9x(v 1(x r %p(Š +,(v Y YX(x +@(v 1(x r%p(Š +,(v Y YX(x ++ (,s¸ (¹ *0ÁÁr%poº 9˜sî  sð  `o» (Ý+  (Þ+ Œy,+ rps zŽiwY2:£!o¼ ¥DoR s¸ ¤wXX3Æ*sò `oÜ (ß+*0EÂ(¯  sô (à+ Ži3*oº ,o½ ,oÆ þoV ***0LÄÐí(U (Ÿ ,sö *Ðv(U (Ÿ ,sø *(¯  ¥z(á+ sú *0qÇÐí(U (Ÿ ,+Ðv(U (Ÿ ,*(­  ,9 {¾ _3' _  þþ, _þþ****0 p(² ,*oÑ ,+â*0 ‘ (³ *0 p(² ,*oÑ ,+â*0 ‘ (µ *0ùÉÐí(U (Ÿ ,AE r%%psÜ z<(¨ *<%r“p¤<(¨ *Ðv(U (Ÿ ,ME r%%psÜ z<(¨ *<%rS%p¤<%r]%p¤<(¨ *(°  ,3sü  sþ s  `o2 (â+(â+ (ã+**0Ê(·  s *0^ÍÐí(U (Ÿ ,s *(¯  Ži þþ,s *rg%p(©  -s * {¿ s *0*Õrg%p `oã ,*ro%p`þoi *0Ê(·  Žiþ*0”Î(± oN (» ,r %p(À +9Ðv(U (Ÿ ,+Ðí(U (Ÿ ,+ r%p(À `oi ,*(ïr}%p(‹ oŒ (] sÌ z0Ï(¼  s *0‰UŒ,+ r;ps z(² -h `(² ,.o\ (ïr½%p(‹ oŒ (] r;ps zo\ (ïrß%p(‹ oŒ (] r;ps z*0~Ë*0~Ì*0~Í*0~Î*0~Ï*0~Ð*0~Ñ*0~Ò*0~Ó*0~Ô*0~Õ*0~Ö*0~×*0~Ø*0~Ù*0~Ú*0~Û*0Š(À (Ÿ ,+ ( (Ÿ ,+ (Ä (Ÿ ,+ (Æ (Ÿ ,+ (È (Ÿ ,+ (Ê (Ÿ ,+ (Ì (Ÿ ,*(Î þ(Ÿ *0*0*0MÐŽi YEÂÐÞìú?˜  +  X£¤ X 2è ŽiY YXY2!X£¤XX3ß (Ó (Î %¤(`+þoV *(ïrû%p(‹ oŒ   rSps z(À þoV *( þoV *(Ä þoV *(Æ þoV *(È þoV *(Ê þoV *(Ì þoV *0ŒÑ(Ð -.o\ (ïrp(‹ oŒ (] r›ps zoÆ Ži3E+X£¤X2â £ (Ô (`+**0 s (ä+*0ÓoÀ (Õ  `Œ[,+ rps zŽi  Y2# £oÉ ¤XX3Ý oè ŒS,+ r›ps z*0z(Ö  s *0MÔŒ[,+ rps zŽi   Y  2  £oZ ¤ X X3á*0AÖoÆ  o2 (Õ  s  Ži/*£ (Ù s *00ØoÆ (×  Ži/*£ (Ú   s *02ÙoÆ (Ö  Ži/sÁ *£(˜ sÁ *0A3Ži þþ,*r1po\ þDo¿ (x r[ps z£*0}Ú/*r1po\ þDo¿ (x r[ps z o2 (Õ  /(Ü s *oÆ (Ü £Ysà (Ä s *0]ÛÐ*(U (Ÿ -.o\ (ïr£p(‹ oŒ (] r›ps zoÆ ££sÅ *0Ü(­  , {¾ _þ**0&pÐ*(U (Ÿ ,*oÑ ,+Ü*0XÇ(­  ,K {¾ _3+ _  þþ, _þþ++, (Ð þ***0)Ýs  s  `o2 (â+ (ã+*0Ê(â  s *0ŒÓ(â  `Œ[,+ rps zŽi  Y2# £oÉ ¤XX3Ý oè ŒS,+ r›ps z*0z(ä  s *0FÇ(­  ,9 {¾ _3' _  þþ, _þþ****0&pÐ*(U (Ÿ ,*oÑ ,+Ü*05(æ , þoÑ *(´ ,(¶ *(à ,(ç **0sU(æ -h `(æ ,.o\ (ïr&p(‹ oŒ (] rOps zo\ (ïrI&p(‹ oŒ (] rOps z*0}UŒ,+s z(á -` `(á ,*o\ (ïro&p(‹ oŒ (] s zo\ (ïr“&p(‹ oŒ (] s z*0FUŒ,+s z(Ð -*o\ (ïrp(‹ oŒ (] s z*V(ó }°}±*0 {± {°`þoÆ *(Ç *0&,o¼ ¥D o¼ ¥D /*þ*(È *0oÔ , þoÉ **:(Ê }²*0E» Ð (U oQ (ª  ,& {¶ (+_3{² (® ***:(Ë }³*0!3(Ì (Í {³3(G **(Î *0<”E"((ïr±&p(‹ oŒ rÇ&ps zr‡p*r‘p*(Î *0<”E"((ïr±&p(‹ oŒ rÇ&ps zrš!p*r!p*:(Î }´*0{´(Ï *(Ð *0HÞ Ð (U oQ (« (,  Ð (U oQ (« (, /*þ*:(. }µ*0'ß Ð (U oQ (« (-{µþ*(. *0(¬ *V(Ñ }¶}·*0 dÔ{·Œ[,+ rps z{·Ži   Y  2, {· £{¶oÆ ¤ X X3Ô*(Ò *0,**(Ò *0*V(Ò }¸}¹*0 JÏ{¸ro%p{¹`%{¸¤oà %¤o ¥D*:(Ò }º*0{ºoÓ ¥D*V(Ô }»}¼*0 {¼ {»`þoÕ *(Ö *0 þoR *V(Ô }½}¾*0 {¾ {½`þo× *:(Ñ }¿*0{¿(Ø *V(Ñ }À}Á*0 Là{À(Ø  {Á£o[   +  X£¤ X 2è(p+*V(Ô }Â}Ã*0 œá{ÃŽiY YX  Y2 X£¤XX3à oX {  + X£¤X 2è %¤(p+þoX *(Ð *0HÞ Ð (U oQ (« (,  Ð (U oQ (« (, /*þ*(. *0(¬ *:(Ñ }Ä*0 \Ô{ÄŒ[,+ rps z{ÄŽi   Y  2$ {Ä £oZ ¤ X X3Ü*V(Ô }Å}Æ*0 {Æ {Å`þo× *01”,*,(Y *(ïrÏ&p(‹ oŒ rips z0Ð(U €È(¡ o` , (¡ oa +(¡ €ÇЫ(U €Ê(£ o` , (£ oa +(£ €É€ËЀ(U €Í(Á o` , (Á oa +(Á €ÌÐJ(U €Ï(à o` , (à oa +(à €ÎÐ(U €Ñ(Å o` , (Å oa +(Å €ÐЂ(U €Ó(Ç o` , (Ç oa +(Ç €ÒЃ(U €Õ(É o` , (É oa +(É €ÔЄ(U €×(Ë o` , (Ë oa +(Ë €ÖÐ…(U €Ù(Í o` , (Í oa +(Í €ØІ(U €Û(Ï o` , (Ï oa +(Ï €Ú*(> *0,**:(Ø }Ý*0{ÝsF*:(Ù }Ú *0{Ú Œ\oÓ (å+*:(ó }ß*0{ßþoZ *0 {Û þ*0{Ü {Û (æ+*0 (Ý *0 ~Þ (Ý *0 (ß *0 (à *0(á *0 (â *0(ã *0{Û þ(ç+*0~Þ *0{Û þ(è+*0{Û þ(é+*0 (ä *0 (å *0{Û þ(ê+*0{Û þ(ë+*0 (ì+*0{Û (í+*0 ¥Rs' *0(ç *0 {Û (î+*0 {Û (ï+*0¥R*0s' *0 (è *0{Ü {Û {Û þ(ð+*0{Ü {Û {Û þ(ð+*0{Ü {Û {Û þ(ñ+*0{Ü {Û {Û þ(ñ+*0 {Û (ò+*0 {Û (ó+*0#ã u‡- uˆ-**tˆ{é *0*04- -(ê *(ô+ (ô+ /+ X(ë *0rå(ô+ (ô+ X>¥uˆ9tˆ {ì {í {î (ô+X1Suˆ,?tˆ{ì {í {î  (õ+  (õ+(õ+*rõ&psÜ z(õ+ (õ+*rõ&psÜ zX>£uˆ9tˆ {ì {í {î  (ô+X1R uˆ,? tˆ{ì {í {î  (õ+ (õ+(õ+*rõ&psÜ z (õ+(õ+*rõ&psÜ z(õ+*0¥çu‡-Y9‹tˆ {ì {í {î  oï /(ö+ (÷+*-* (ö+(÷+*t‡{ð  oï / (ë *-*(ë *(ê *00è  u‡- uˆ-R (ö+*t‡   ," u‡-$ {ð (ö+(ö+* (ö+* {ð +Útˆ   u‡-  uˆ-$ +Ìt‡  {ð (ö+(ö+*tˆ{ì {í  {ì  {í {î {î {é  {é   X /(ø+(÷+* X /(ø+(÷+*(õ+*0ê  u‡:® 9åtˆ {ì {í {î  oï /5(ù+(ñ (ò (ó  (ø+sô *- sô *(ù+(ñ (ò (ó  (ø+sô *t‡  {ð  oï / sô *- sô *sô *sô *0†ìu‡-uˆ- r 'psÜ zt‡ {ð sõ *tˆ {ì {í {î  - sõ * (ú+(ö (÷ (õ+sõ *0µíu‡- uˆ-!*t‡ {ð oï -**tˆ {ì  {í  {î oï /(û+(÷+*---*-*(ú+(÷ (ö (õ+*(û+(÷+*0vçu‡-L,dtˆ {ì {í {î  oï / +¹-*+¨t‡{ð  oï þ**0]îu‡-9,Ltˆ {ì {í {î (ç+ oå &+»t‡{ð oå &**0 aîu‡-:,Otˆ {ì {í {î  (ë+(ü++ºt‡{ð þ(ü+**0eòu->,StŽ {ø {ù {ú (ý+ (þ++¶t{û þ(þ+**0hîu‡-A,Vtˆ {ì {í {î  oü , (è++,+µ*t‡{ð þoü **0hîu‡-A,Vtˆ {ì {í {î  oü ,+(é+,*+³t‡{ð þoü **0sý þ(è+*0"sþ (è+,sÿ þ(é+**0 ƒóu‡-Q,qtˆ {ì {í {î  oü ,  (ö++(ÿ++£t‡{ð  oü ,  (ö+***0 _îu‡-:,Mtˆ {ì {í {î  (û+(++ºt‡{ð (û+**07ô u‡-',(tˆ {ì {í X(í++ÏX**0Tõ9u‡:tˆ 9Êu‡:Âtˆ {ì {í {ì {í {î {î {é {é   1:(ù+  (ñ   (ò   (+ (+(ø+*(ù+  (ñ   (ò    (+ (+(ø+* *t‡   {ð (ö+* *t‡ ,u‡-  {ð (ö+* +¬  {ð +å0…óu‡-R,stˆ {ì {í {î (+ (æ+,  (ö+++¢t‡{ð  (æ+,  (ö+***0*oü ,(ö+s *(ö+s *0 ™÷s u‡-h,~tˆ {ì {í {î (+ ( ( (+( ( 8ƒÿÿÿt‡{ð (+**0`îu‡-/,Itˆ {ì {í {î s ( *t‡{ð s ( *( *0”ù(+ u–, þo *t˜{ ( t˜{ (  t˜{ (   oï / s  +-(+þo *8lÿÿÿ0s  þ(+*0”ù(+ u–, þo *t˜{ ( t˜{ (  t˜{ (   oï 1 s  +-(+þo *8lÿÿÿ0s þ( +*05ú u‡-,&tˆ {í {î +Ùt‡{ð **0Hûu‡-',6tˆ {í {î ( +(E *t‡ {ð (E **05ú u‡-,&tˆ {ì {î +Ùt‡{ð **0Hûu‡-',6tˆ {ì {î ( +(E *t‡ {ð (E **03ü(+ -!(ïrW'p(‹ oŒ r#ps z{ *03ü(+ -!(ïrW'p(‹ oŒ r#ps z{ *0®þ{ 9 { u‡-uˆ-){ +Ì{ t‡ { {ð *{ tˆ{ {ì {í {î {é  (ê ( ( ( 8Xÿÿÿ( *0( ( ( +s *0(ïrƒ'p(‹ oŒ sÌ z0(ïr¯'p(‹ oŒ sÌ z0Qÿ{ ,B{ { -( +* { u‡,{ t‡{ð *rå'psÜ z(+*0ˆ{ ,e{ { -* { u‡,:{ t‡ { {ð  ( +( { { þþ*re(psÜ z( { { þþ*0(+s s *0 r{ 9[ { 9L { u‡:Ñuˆ: { u‡-#uˆ-W{ {  +’{ t‡{ {ð (ê ( ( 8Uÿÿÿ{ tˆ{ {ì {í {î (ë ( ( 8ÿÿÿ{ t‡{ u‡-<uˆ:~{ {ð (ê ( ( 8§þÿÿ{ t‡ { { {ð  {ð   oï   , * 8Yþÿÿ{ tˆ{í -a{ { {ð {ì {î  {í  oï   , * ( ( 8âýÿÿ{ {ì {í {î 8•þÿÿ{ tˆ{í :o{ u‡-Suˆ:«{ {ì {í {î (ë ( ( 8>ýÿÿ{ t‡{ { {ì {î {ð   oï   , * ( ( 8Úüÿÿ{ tˆ  {í -j{ { {ì {î  {ì  {î   {í   oï   , * ( ( 8Züÿÿ{  {ì  {í  {î 8 ýÿÿ{ u‡-0uˆ-I{ {ì {í {î 8þÿÿ{ t‡{ {ð 8[üÿÿ{ tˆ {  {ì  {í  {î 8vüÿÿ*{ ,**0---**-*( ( ( ( (+*0Yîu‡-5,Gtˆ {ì {í {î  (+(€ +¿t‡{ð (€ **0 ( (+*0s s þ(ç+*0(í+ (+ (+*0"oë ,o (ö++à*0+o (+ Þu  , oê &Ü&Ü* 0s (+*V(„ } } *0{ { (R+*V(„ } }  *0{ {  (R+*V(„ }! }" *0{! {" (R+þ*V(# }$ }% *0-{$ {% (ú þo& **(# *0*V(# }' }( *0-{' {( (ú þo& **(# *0*0{) *0{* *0}) *0}* *0( }) }* *0}+ }, ( &*0{, {- (+Œ\*0{, {- (+*0{, {+ (+(. *0*0{, {- (+*V(É }/ }0 *02{/ {0 { ¤\{0 {0 { X( *:(1 }2 *0{2 (O+*:(3 }4 *0{4 þ(+*V(6 }7 }8 *0{8 {7 ok (+*(9 *0 (: *(9 *0 (; *0 {< þ*0 (= *0{> {< (+*0{> {< (+*0 (? *0{> {< (+*0{< þ(+*0{< þ(+*0 {< (+ ,{@ *sA z0{< þ( +*0 (B *0 (C *0{< þ(!+*0{> {< ("+sD *0(E {< þ(#+*0(F {< þ($+*0sG ¥¶(%+*0sH (&+('+*0sI (&+((+*0(J *0(K *0…(W+ ()+sL *0 {< (*+*0 {< (++*0~M *(N *0( ( s *:(O }P *0'u( ( {P (,+,(ú **:(O }Q *0'u( ( {Q (,+,(ú **0#  u»- u¼-**t¼{R *06- - (S *(-+ (-+ /+ X(T *0 § (-+ (-+ X>¾u¼9¨t¼ {U {V {W {X (-+X1au¼,Mt¼{U {V  {W  {X   (.+   (.+(.+*rõ&psÜ z(.+ (.+*rõ&psÜ zX>¾u¼9¨t¼ {U {V {W {X (-+X1au¼,Mt¼{U {V  {W  {X    (.+  (.+(.+*rõ&psÜ z (.+(.+*rõ&psÜ z(.+*0> u»- u¼-*X*t¼ {V {W X(/++Â0 Ñu»-u¼-E(S *t» {Y oï / (T *-(S *(T *t¼ {U  {V  {W  {X {R oï /(0+(1+*- (T *(0+(1+*0Ÿu»-u¼-0sA zt» {Z {Y oï -*sA zt¼{U {V {W {X oï /8uÿÿÿ -*8aÿÿÿ0¡u»- u¼--*t» {Z {Y oï -([ **t¼{U {V {W {X oï /8xÿÿÿ -([ *8_ÿÿÿ0/(2+,(0+s\ *(0+s\ *0 ®s\   u»-  u¼-!*t» {Y {Z (3+*t¼ {U {V {W {X (4+ (] (^ (3+(] (^ 8Rÿÿÿ0(2+, (0+**0 u»- u¼-*t» {Y {Z (5+*t¼ {U {V {W {X (6+ (5+8ÿÿÿ0£  u»- u¼-&r 'psÜ zt» {Y {Z s_ *t¼ {U {V {W {X -  s_ *(7+(` (a (b  (.+s_ *0Èu»- u¼-!*t» {Y oï -**t¼ {U  {V  {W  {X oï /(8+(1+*-4-*-*(7+(b (` (a (.+*(8+(1+*0~u»- u¼-*t» {Y oï þ*t¼ {V {W {X oï / +–-* 8‚ÿÿÿ0ru»- u¼-*t» {Y {Z (9+&*t¼ {U {V {W {X (+(9+& +Ž0‡u»- u¼-*t» {Y {Z þ(:+*t¼ {U {V {W {X (+-(:+-  8ÿÿÿ**0€u»- u¼-*t» {Y {Z þ(2+*t¼ {U {V {W {X ( +,+ (2+,* 8€ÿÿÿ0€u»- u¼-*t» {Y {Z þ(2+*t¼ {U {V {W {X (!+, (2++,  8‚ÿÿÿ*0Š uÁ- uÂ-$*tÁ {c {d o™ (e *t {f {g {h {i {j (;+o™  (;+(k *0Ž"u»- u¼-'*t» {Z {Y (+(l *t¼ {U {V  {W  {X {R ("+(+("+(m *0#u»- u¼-$*t» {Z {Y þon *t¼ {U {V  {W  {X ($+on 8ÿÿÿ0'uÅ- uÆ-$*tÅ {o {p þoq *tÆ {r {s  {t  {u (<+oq 8ÿÿÿ0(  u»-  u¼-P*t» {Z {Y oï oï  0 þþ+, þ(=+**t¼{U {V {W {X oï oï  /(>++ 0 þþ+, (=++ / 8þþÿÿ *0%)   oï 3*þ(>+*0*u»- u¼-&*t» {Z {Y sv (w *t¼ {U {V  {W  {X sv (?+(w 8ÿÿÿ0 (x (?+*0 (*+(@+*0sy (A+*03+oë ,(o+ (, (- (0++Ï*05,  +&£J (, (-  (0+ X Ži2Ô*0[.uÉ ,  ()+*u9 ,   (B+*o* (C+Þu , oê &Ü&Ü*1 >0s sz þ(+*0Á0{{ 9° {|   u»- u¼-1{{ +Ì{| t» {Z {{ {Y *{| t¼{U {{ {V {W {X {R  (S (} (} (} 8Eÿÿÿ(~ *0(~ (} (D+s *0(ïrƒ'p(‹ oŒ sÌ z0(ïr¯'p(‹ oŒ sÌ z0b1{€ ,S{ {{ -(E+* {| u»,${| t» {Z {Y  s‚ *rè(psÜ z(F+*0t2{€ ,Q{ {{ -* {| u»,&{{ (D+(ƒ { {{ þþ*rh)psÜ z(„ { {{ þþ*04(G+s… s† *:(‡ }ˆ *0u( ( {ˆ (.+*V(‰ }Š }‹ *08{Š {‹ { s ¤Á{‹ {‹ { X( *0{Œ *0{ *0}Œ *0} *0( }Œ } *0}Ž } ( &*0{ { (H+ŒÁ*0{ { (I+*0{ {Ž (J+(‘ *0*0{ { (H+*0)6 (’ (“ sv (- (, sv *(” *0 ( *:(• }– *0s— {– ¥ (K+*(˜ *0 ( *:(• }™ *0sš {™ ¥Ø(L+*:(› }œ *0?7{œ {þ ( ( o ,*( ( þ(M+*(ž *0( Œ\( Œ]sú*0 (1 *0 (1 *0 (1 *0 (1 *0£”/!(ïrÉp(‹ oŒ rë)ps z/!(ïrÉp(‹ oŒ rñ)ps z/!(ïrÉp(‹ oŒ r÷)ps z/!(ïrÉp(‹ oŒ rý)ps zsŸ *09(N+  Ú 2jÚ 2TÚ29Ú2(  XX3ãXX3ÇX X3¬X X3–*0 “9(N+  Ú ?yÚ 2`Ú2EÚ2)(O+(  XX3×XX3»X X3 X X@‡ÿÿÿ*0 (¢ *0(  *0 (1 *0 (1 *0 (1 *0 (£ *0 (¤ *0|”/!(ïrÉp(‹ oŒ rë)ps z/!(ïrÉp(‹ oŒ rñ)ps z/!(ïrÉp(‹ oŒ r÷)ps zs¥ *0a;(P+  Ú 2KÚ 25Ú2(¤ XX3æX X3ËX X3µ*0 k;(P+  Ú 2UÚ 2?Ú2$(Q+(¤ XX3ÜX X3ÁX X3«*0——ŒÛ,+ rps z(1 (1 (1 Ú 2XÚ2=Ú2!(£ oå &XX3ßXX3ÃX X3¨*0 ¯=ŒÛ,+ rps z(1 (1 (1 (R+ Ú2dÚ2H Ú 2,   (£ o™ (§  X  X3ÔXX3¸XX3œ *0 —ŒÛ,+ rps z(1 (1 (1 Ú 2^Ú2CÚ2'(£ (S+&XX3ÙXX3½X X3¢*0µ=ŒÛ,+ rps z(1 (1 (1 (R+ Ú2jÚ2N Ú 22    (£ (T+(§  X  X3ÎXX3²XX3– *0Ži*0I>/(Êr™ ps (U+&+  Y 2o¨ ¤X X3è*0.”/!(ïrÉp(‹ oŒ r™ ps z*0L?/!(ïrÉp(‹ oŒ r™ ps z  Ú  2 ¤ X X3î*0ŒN,+ rps zŽiþ*0*0”ŒN,+ r*ps zŒN,+ rUps z/!(ïrÉp(‹ oŒ r*ps z/!(ïrÉp(‹ oŒ r™ ps z/!(ïrÉp(‹ oŒ r)*ps zXŽi1!(ïr±&p(‹ oŒ r™ ps zXŽi1!(ïr±&p(‹ oŒ r™ ps z(µ *0'ZŽi þþ,*X£NŽiX+Ù00KŽi/(£N Ži (µ XX+Ñ*0@(V+ (W+*06BŒÞ,+ rA*ps zuß ,  (X+*(Y+(X+*0QDŒN,+ rps zŽi à  Y  2  £o© ¤à X X3â(Z+*0TEŒN,+ rO*ps zŒN,+ r]*ps zŽi Ži X (µ (µ *0#ŒN,+ rps zo ¥N*0ŒN,+ rps z([+*0Œ·,+ rk*ps z(\+*0DŒN,+rps (U+&Ži  Y 2£oå &X X3è*0RFŒN,+rps (U+&Ži P  Y  2  £o™ ¤P X X3â*0˜HŒN,+ rO*ps zŒà,+ r]*ps z(ª Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps zY 2$££Po« &XX3Ü*0ªKŒN,+ rO*ps zŒà,+ r]*ps z(¬ Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps z$Y 2,££Po­ ¤$XX3Ô*0 ¬MŒN,+ rO*ps zŒà,+ r]*ps z(® Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps z$Y 2.££Po¯ ¤$XX3Ò*0FOŒN,+ rps z(° Ži  Y  2  £o± & X X3ç*0šQŒN,+ rO*ps zŒà,+ r]*ps z(² Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps zY 2&££Po³ &XX3Ú*0\SŒN,+ rps z(´ Ži P Y 2%£oµ ¤PX X3Û*0(/!£oü ,*X+Û*0+UŒN,+ rps zŽi    (]+*06/.££Po¶ ,*X+Í*0}WŒN,+ rO*ps zŒà,+ r]*ps z(· Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps z (^+*0(2*£oü ,X+Û*0+UŒN,+ rps zŽi    (_+*062*££Po¶ ,X+Í*0}WŒN,+ rO*ps zŒà,+ r]*ps z(· Ži Ži þþ,!(ïrs p(‹ oŒ r]*ps z (`+*0MYŽi þþ,(ïru*p(‹ oŒ s¸ z£o¹ ,{º *X+³0$[ŒN,+ rps z  (a+*00YŽi þþ,*£o¹ - X+Ò*0$[ŒN,+ rps z  (b+*0U]ŒN,+ rps zs»  +'£o¹ ,  {º o¼ +X Ži2Ó(½ *0N_ŒN,+ rps zs¾  + £ oü , o¿ +X Ži2Ú(À *0f`ŒN,+ rps zs¾ s¾  +'£  oü ,  o¿ + o¿ X Ži2Ó(À (À sÁ *0LZŽi þþ,(ïru*p(‹ oŒ s¸ z£oü ,£*X+´0$aŒN,+ rps z  (c+*09ZŽi þþ,*£oü , £(E *X+Ç0$aŒN,+ rps z  (d+*0§bŒN,+ rO*ps zŒà,+ r]*ps zŽi Ži þþ,!(ïrs p(‹ oŒ r]*ps zJ Y 22££P sv ¤JXX3Î *0ødŒN,+ rO*ps zŒà,+ r]*ps zŒí,+ r¡*ps zŽi Ži þþ,!(ïrs p(‹ oŒ r]*ps zŽi þþ,!(ïrs p(‹ oŒ r¡*ps zî Y 2>££P£$ s ¤îXX3 *0zeŒÉ,+ rps zŽi  P Y 2=£J(, (- ¤¤PX X3Ãsà *0˜gŒð,+ rps zŽi  P $ Y2Q£î(Ä (Å (Æ   ¤¤P ¤$XX3¯ sÇ *0JhŒN,+ rps zŽi   Y  2 YY £¤ X X3ä*0OjŒN,+ rps z(È  Ži Y 2£oÉ X X3ã*0OlŒN,+ rps z(Ê  Ži Y 0£oË Y Y3ã*0žnŒN,+ rO*ps zŒà,+ r]*ps z(F  Ži Ži  þþ,#(ïrs p(‹ oŒ r]*ps zY 0%££Pon Y Y3Û*0žpŒN,+ rO*ps zŒà,+ r]*ps z(E  Ži Ži  þþ,#(ïrs p(‹ oŒ r]*ps zY 2%££PoÌ X X3Û*0DqŒN,+ rps z(Ê     0 £oË Y Y3ç*0brŒN,+ rps z(Ê  XY(e+  0(£oË Y¤PY Y3Ø*0dtŒà,+ rps z(Í  XY(f+  2*£PoÎ YX¤X X3Ö*0(ZŒN,+ rps zŽi Y(g+*0(ZŒN,+ rps zŽi Y(h+*0hvŒN,+ rps zŽi -(Érps z(Ï £ Y 2£oÐ X X3ã*0 CZŒN,+ rps zŽi -(Érps zYY£(i+*0jwŒN,+ rps zŽi /*39££(j+ 1£ £¤¤**(k+(l+*0 ŒN,+ rps z(m+*0ŒN,+ rps z(n+*0(@ŒN,+ rps z(o+ (p+*0(@ŒN,+ rps z(o+ (q+*0'@ŒN,+ rps z(o+ (r+*0ŒN,+ rps z(s+*0ŒR,+ r*ps z(±+*0@2(ïru*p(‹ oŒ s¸ z£oü ,*X+À0+UŒN,+ rps zŽi    (t+*0-2*£oü ,(y *X+Ó0+UŒN,+ rps zŽi    (u+*0ŒN,+ rps z(v+*0ExŒN,+rps (U+&(w+  + £  (x+ X Ži2ä*0KyŒN,+rps (U+&(y+  + £o™  (z+ X Ži2Þ*0lxŒN,+rps (U+&Ži-(Érps (U+&+£  +£   ({+, +X Ži2Ý*0ƒzŒN,+rps (U+&Ži-(Érps (U+&+£ o™  +,£  o™ (|+, +X Ži2Î*0lxŒN,+rps (U+&Ži-(Érps (U+&+£  +£   (}+, +X Ži2Ý*0ƒzŒN,+rps (U+&Ži-(Érps (U+&+£ o™  +,£  o™ (~+, +X Ži2Î*0Á|ŒN,+rps (U+&¥R ŒR,+r*ps (U+&o (w+ oë , o (x+ X+Ú-(Èr*ps (U+&+ (+ Þu , oê &Ü&Ü*G_¦0Ç}ŒN,+rps (U+&¥R ŒR,+r*ps (U+&o (y+ oë ,$ o o™ (z+ X+Ô-(Èr*ps (U+&+ (€+ Þu , oê &Ü&Ü*Ge¬0º?ŒN,+ rps z/!(ïrÉp(‹ oŒ r¯*ps z/!(ïrÉp(‹ oŒ r™ ps zXŽi1!(ïr±&p(‹ oŒ r™ ps z  Y  2  X£¤ X X3æ*0 £*0 ¤*0‚~ŒN,+ rUps z/!(ïrÉp(‹ oŒ r)*ps z/!(ïrÉp(‹ oŒ r™ ps z XY 2¤X X3î*0(Ó *0(.+*0(+*0 (‚+*0 (ƒ+*0 („+*0([+*0(\+*0( *01”{Ö -"(ïrwp(‹ oŒ rk*ps z{} *01”{Ö -"(ïrwp(‹ oŒ rk*ps z{Ö *0 {Ö þ*0 (…+*0Y{Ö ,0 {Ö þþ,{Ö {} -*Y+È(ïrÅ*p(‹ oŒ r[ps z0T€{Ö ,E {Ö {} o¹ , {º (~ +¾+³(r+*0(€ (†+*0 (‡+*0 (ˆ+*00*Y(€ +æ04”/!(ïrÉp(‹ oŒ r™ ps z( (‰+*0u‚{Ö ,d {y ,7 {y {Ö {Ô {} o« & +·(ïrç*p(‹ oŒ r+ps z{y -Õ*0ƒ(ª  (Š+*0{‚{Ö ,j {y ,= {y {Ö {Ô {} o³ &X +±(ïrç*p(‹ oŒ r+ps z{y -Õ*0„(²  (‹+*0¸‡{Ö 9• {y ,h {Õ ,^ {Õ {y {Ö {Ö {Ô {} o×    (Ø 8ƒÿÿÿ(ïrç*p(‹ oŒ   r%+ps z{y -Õ{Õ -Í(Œ+*0(Ù (Ú (+*0Žˆ{Ö ,v {y ,I {y {Ö {Ô {} o¯ X (Û +¥(ïrç*p(‹ oŒ r+ps z{y -Õ(Ž+*0(® (Ü (+*0 (+*0-‰{Ö ,# {Ö {} oÉ +Õ*0Š{Ö -*(È  (‘+*0?‹{Ö , {} {Ö (’+*(ïrwp(‹ oŒ rk*ps z0=Œ{Ö ,. {Ö {} oÉ   (~ +Ê(r+*0Š(È  (€ (~ (“+*0x‚{Ö ,f {y ,9 {y {Ö {Ô {} oÌ +µ(ïrç*p(‹ oŒ r+ps z{y -Õ*0(E  (”+*0'Ž   0£oË Y Y3ç*0 6(Ê {Ö 9! {Ö {Ö 9û{Ö {Ö {Ö 9À{Ö {Ö {Ö ,x {Ö {Ö {Ö -E{}  {} {} {} oË oË oË þoË *(\+  Ži   Y(•+* {} {} {} oË oË þoË *{} {} oË þoË *{} þoË **0 Q{Ö -"(ïrwp(‹ oŒ rk*ps z(Ï (\+ Ži  Y Y£(–+*0;‘ (€ (~    0! £oË (~ Y Y3ß*0e’{Ö ,Q {Ö {Ö -!{} (ü+(€ (~ (~ *(Ê (\+ Ži Y(—+*(€ (~ *0{“(\+ (˜+ Ži Ži  .#(ïrç*p(‹ oŒ r+ps zY0(££Pon YY3Ø*0ç”(F {Ö 9¹ {Ö {Ö 9\{Ö {Ö {Ö 9Ï{Ö {Ö {Ö :®{y 9¢{y {y 9{y {y {y ,v{y {y {y -_{Ô {Ô {Ô  {}  {}  {}      on on on þon *(™+*{y ,í{y {y ,Û{y {y {y -Ä{Ô {Ô {}  {}    on on þon *{y 9tÿÿÿ{y {y :_ÿÿÿ{Ô {}   on þon *{y :*ÿÿÿþon *0 s‚{Ö ,a {y ,4 {y {Ö {Ô {}  þ(š+*(ïrç*p(‹ oŒ r+ps z{y -Õ*0y‚{Ö ,g {y ,9 {y {Ö {Ô {} o¶ ,  +·*(ïrç*p(‹ oŒ r+ps z{y -Ô*0!{Ö - {y -*(· (›+*0 (œ+*0 (+*0y‚{Ö ,g {y ,9 {y {Ö {Ô {} o¶ ,* +µ(ïrç*p(‹ oŒ r+ps z{y -Ô*0!{Ö - {y -*(· (ž+*0F‰{Ö ,$ {Ö {} oü ,*+Ô(ïru*p(‹ oŒ s¸ z03‰{Ö ,) {Ö {} oü ,(E *+Ï*00•{Ö ,& {Ö {} o¹ -+Ô **0M•{Ö ,+ {Ö {} o¹ , {º *+Í(ïru*p(‹ oŒ s¸ z0 (Ÿ+*0 ( +*0(¡+*0(¢+*0 (£+*0 (¤+*0 (¥+*00–{Ö , {Ö {Ö -*(\+ (¦+([+*0/–{Ö , {Ö {Ö -*(\+ (§+([+*0(¨+*0¥R*0K‰{Ö ,) {Ö {} oü ,*X+Ï(ïru*p(‹ oŒ s¸ z0 — (©+*08‰{Ö ,. {Ö {} oü ,(y *X+Ê*0 — (ª+*0T˜¥R o (w+ oë , o (x+ +à Þu , oê &Ü&Ü**90Z™¥R o (y+ oë , o o™ (z+ +Ú Þu , oê &Ü&Ü*0?0™˜¥R ŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o oë ,o  (}+, +Ü+Ù Þu , oê &Ü&Ü*+S~0¶š¥R ŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o  o™  oë ,/o o™ (~+, +Ì+É Þu   ,  oê &Ü&Ü*+p›0™˜¥R ŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o oë ,o  ({+, +Ü+Ù Þu , oê &Ü&Ü*+S~0¶š¥R ŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o  o™  oë ,/o o™ (|+, +Ì+É Þu   ,  oê &Ü&Ü*+p›0¥|¥R ŒR,+r*ps (U+&o (w+ oë , o (x+ X+Ú-(Èr*ps (U+&+ (+ Þu , oê &Ü&Ü*+_Š0«}¥R ŒR,+r*ps (U+&o (y+ oë ,$ o o™ (z+ X+Ô-(Èr*ps (U+&+ (€+ Þu , oê &Ü&Ü*+e0 þ(«+*0(\+(v+([+*0(¬+(Ý *0=~(Š ,rp+  (v Ú 2(¾ o² &X X3è*0>~(Š ,rp+  (v Ú 2(¾ (­+&X X3ç*08›(Š ,rp+ (v sß sÉ (½ þo¿ *08›(Š ,rp+ (v sß sË (¾ þo¿ *08›(Š ,rp+ (v sß sÍ (½ þo¿ *0Zœ/!(ïrÉp(‹ oŒ r™ ps zsß  Ú  2 oN (Î  X X3çþo¿ *0mœ/!(ïrÉp(‹ oŒ r™ ps z(Š ,rp+ (v sß  Ú  2(Î  X X3íþo¿ *01Z(v þþ,*(¾ oà , Ö+Ò*0"ž(Š ,rp+   (Ä *0*(v /(¾ oà ,*Ö+Ù*0"ž(Š ,rp+   (Æ *0(Š ,rp+(v *V(¡ }}*0ü{{oá (¢ *V(â }}*0ü{{(®+(¢ *V(¡ }}*0ü{{oã (Î *0 sä (¯+*0så (°+*0(±+*0 (²+*0 (æ ¥R*0 sç (¯+*04”/!(ïrÉp(‹ oŒ r™ ps zsè (¯+*0SŸŒR,+ r*ps zo oë ,o oå &+è Þu  , oê &Ü&Ü&*:0@ ŒR,+ r*ps zo (³+ Þu  , oê &Ü&Ü* (0Z¡ŒR,+ r*ps zo  oë ,o (´+&X +ã Þu  , oê &Ü&Ü&*#A0\¢ŒR,+ r*ps zo  - oë +,o oü +à Þu  , oê &Ü&Ü*&D0\¢ŒR,+ r*ps zo  , oë +,o oü +à Þu  , oê &Ü&Ü*&D0£¤ŒR,+ r1+ps zŒO,+ rA+ps zo oê oë , oë +,o oë (9+&+Õ Þu , oê &Ü&Ü Þu , oê &Ü&Ü&*;/j4S‡0sì (°+*0sí (µ+*0$ŒR,+ r*ps zsî (¶+*0$ŒR,+ r*ps zsï (·+*0$ŒR,+ r*ps zsð (·+*0;ŒR,+ r1+ps zŒO,+ rA+ps zsñ (¸+*0$ŒR,+ r*ps zsò (·+*0:ŒR,+ r1+ps zŒO,+ rA+ps zsó (¹+*0VŒR,+ r1+ps zŒO,+ rA+ps zŒ ,+ rQ+ps zsô (º+(»+*0#Œ,+ r*ps zsõ (¯+*0c¥ŒR,+ r*ps zo  þþ, oë +,o o¹ +Ù Þu  , oê &Ü&Ü*-K0C¦ŒR,+ r*ps z(¼+ ,{º *(ïru*p(‹ oŒ s¸ z0s§ŒR,+ r*ps zo  þþ, oë +,o  oü , (E +Ï+Ì Þu , oê &Ü&Ü*:X0C8ŒR,+ r*ps z(½+ ,{ *(ïru*p(‹ oŒ s¸ z0 `¨ŒR,+ r*ps z/!(ïrÉp(‹ oŒ r™ ps z- (æ ¥R*þsö *0ŽªŒR,+ r*ps zuN ,  Žiþ*u· ,  {Ö þ*u,o÷ þ*o oë þÞu , oê &Ü&Ü*cq0ŒR,+ ra+ps z(¾+*0”«ŒR,+ r*ps zuN , Ži*u· ,  (Ó *u,þo÷ *o oë , X+îÞu   ,  oê &Ü&Ü*\w0U¬ŒR,+ r*ps zo  oë ,o (¿+ +ç Þu  , oê &Ü&Ü*=0s­ŒR,+ r*ps zo oë -(Èr*ps zo oë ,o (À+ +ç Þu  , oê &Ü&Ü*=[0 sù (°+*0:ŒR,+ r1+ps zŒR,+ rA+ps zsú (Á+*0(Â+(Ã+*0]®oë oë 3+ ,+ ,*-+þ,*o o (j+ , *+£0ˆ°ŒR,+ r1+ps zŒR,+ rA+ps zo o (Ä+ Þu , oê &Ü&Ü Þu , oê &Ü&Ü*;P49m0¥R*0‰±ŒR,+ r*ps zu· , *uN ,  ([+*o ( oë ,o (€ +ä(.+ Þu , oê &Ü&Ü*@-m0#ŒN,+ r*ps zsû (¯+*0‘²ŒR,+ r*ps zuN , o ¥N*u· ,  (\+*o s¾ oë ,o o¿ +æ(À Þu , oê &Ü&Ü*J+u0 sü (¯+*0+LŒR,+ r*ps zþsý *0+LŒR,+ r*ps zþsþ *0 ,³ŒR,+ r*ps zþPsÿ *0@oë ,o oü ,*X+Ú(ïru*p(‹ oŒ s¸ z0H´ŒR,+ r*ps zo   (Å+ Þu , oê &Ü&Ü*-0-oë ,"o oü ,(y *X+Õ*0HµŒR,+ r*ps zo   (Æ+ Þu , oê &Ü&Ü*-0{ X]£*0 K”ŒR,+ r*ps z0!(ïrÉp(‹ oŒ rq+ps zs *0p·o 2e{ ,+o ( ( ( { ( -* { oë ,o þo¿ *oê ( ( **0Io /o Xs ( *(Ç+o /o Xs ( **0>¹o { ,$ { ,{ { ¥ oê +( *0H»ŒR,+ r*ps zs¾ s s (È+ s s ¥R*0#ŒR,+ r*ps zs (¯+*0s (É+*0 <½ŒR,+ r*ps zþþFþs *0 =¿ŒR,+ r*ps zþþ#þs *0$ŒR,+ r*ps zs (±+*0#ŒR,+ r*ps zs (±+*0$ŒR,+ r*ps zs (Ê+*0KÀo (w+ oë , o  (x+ +â Þu , oê &Ü&Ü*(00QÁo (y+ oë , o o™  (z+ +Ü Þu , oê &Ü&Ü*.60™ÂŒR,+r*ps (U+&o (w+  oë ,o (x+ X +Ü -(Èr*ps (U+&+ (+ Þu , oê &Ü&Ü*$Z~0ŸÃŒR,+r*ps (U+&o (y+  oë ,"o o™ (z+ X +Ö -(Èr*ps (U+&+ (€+ Þu , oê &Ü&Ü*$`„0ÀŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o oë ,o  ({+, +ß+Ü Þu , oê &Ü&Ü*$Pt0¬ÄŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o o™ oë ,-o o™  (|+,  +Î+Ë Þu , oê &Ü&Ü*$m‘0ÀŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o oë ,o  (}+, +ß+Ü Þu , oê &Ü&Ü*$Pt0¬ÄŒR,+r*ps (U+&o oë -(Èr*ps (U+&+o o™ oë ,-o o™  (~+,  +Î+Ë Þu , oê &Ü&Ü*$m‘0+LŒR,+ r*ps zþs *0 ,LŒR,+ r*ps zþs *0 ,LŒR,+ r*ps zþs *0°ÅŒR,+ r1+ps zŒO,+ rA+ps zo oê , oë +, oë +,o oë (2++Ë Þu , oê &Ü&Ü Þu , oê &Ü&Ü*;=x4a•0°ÅŒR,+ r1+ps zŒO,+ rA+ps zo oê - oë +, oë +,o oë (2++Ë Þu , oê &Ü&Ü Þu , oê &Ü&Ü*;=x4a•0W ŒR,+ r*ps zo oë , o Þ&(Èr*ps zu  , oê &Ü&Ü*!?:( } *0{ o þoÑ *V( } } *0{ { (Ë+*:( } *0{ (Ì+*V( }! }" *0{! Y(y {" (Ì+*V( }# }$ *0{# {$ o% þo& *r( }' }( }) *0%{' {( o% {) o* þ(Í+*:(, }- *0{- (Î+*:(. }/ *0{/ (Ï+*:(. }0 *0{0 (Ð+*:(1 }2 *0{2 (Ñ+*:(. }3 *0{3 (Ò+*(4 *0 s *(5 *0Æ(6 (7 s8 *:( }9 *0{9 oÐ (Ó+*0<}: }; }< }= }> }? }@ (A *0=Ç{? YE +8å8Å8²8ô{; oÑ }< }? {: Y (oB }> }? {> oë ,q{> oC }= {< oë -+(ïr‡+p(‹ oŒ sÌ ,¥+z&+}? {< oî }@ *}= 8‚ÿÿÿ}? {> (Ô+}> }? {< (Õ+}< }? þ\}@ *0t`{? YE ++5++++)}? {> (Ô+}? {< (Õ+}? þ\}@ *0<{? YE +++ +++****0{@ *0 `{: {; þ\sD *:( }E *0{E oF Œ]¥ö(Ö+*:(G }H *0{H oÑ (×+*V(G }I }J *0&Ê{I oÑ (×+ {J sK (L *:( }M *0{M sN ¥*:( }O *0{O sP ¥*04}Q }R }S }T }U }V (A *0å`{U YE +8Š88¦s }S {R oÑ }T }U {S { {Q /{T oë +,5{S {S { X( }U {T oî }V *+¦}U {T (Õ+}T }S }U þ\}V *0Y`{U YE + ++++}U {T (Õ+}U þ\}V *03{U YE + + +++***0{V *0 `{Q {R þ\sW *04}X }Y }Z }[ }\ }] (^ *0`{\ YE +8»8‡8Ð{X oÑ }Y }\ {Y oë 9†{Y oî s }Z {Y oë ,Y{Y oî }[ }\ {Z {² {[ s” }] *{Z {[ (µ þ\}[ +š}Z +}\ {Y (Õ+}Y }\ }] *0T{\ YE + +!+ +++}\ {Y (Õ+}\ }] *06{\ YE + ++ +++***0{] *0 `{X þ\s_ *0<}` }a }b }c }d }e }f (A *0`{e YE ++=8¥8œ8Á{a s }c }e {c {² }f *{b o% }d }e {d oë ,I{c {` {c {² {d og (Ø+(µ }e {c {² }f *+ª}e {d (Ù+}d }c }e þ\}f *0c`{e YE ++$+ +++}e {d (Ù++}e þ\}f *0<{e YE +++ +++****0{f *0 %`{` {a {b þ\sh *0D}i }j }k }l }m }n }o }p (q *0 §Ì{o YE +8F88p{i \}k {i Ys }l s }m {j oÑ }n }o {n oë 9â{k {m { {n oî ¤\{m {m { X{i ]( {l { -v}o {i /(Êr™ ps z{i \  {i Y  2) {i {k {m (Ú+¤\ X X3×}p *8-ÿÿÿ{l {l { Y( 8ÿÿÿ}o {n (Õ+}n }m }l }k }o }p *0Q{o YE + ++++}o {n (Õ+}o }p *03{o YE + + +++***0{p *0 {i {j sr *r(s }t }u }v *0 8Î{v (Ú {t {u {v (Û+ Þ{v (Ý &Ü* (V(î }w }x *03Ï{x (Ú {w {x (Ü+ Þ{x (Ý &Ü* #:( }y *0{y þoÑ *V(É }z }{ *0_Ò{z ok s|  {{ o} s~ ( (€ , oö *sñ {{  o oö *(‚ *0(ƒ („ *(… *0'Ó(† {‡ (ƒ ¥(Ý+sˆ *V(‰ }Š }‹ *0FÕ(Œ s {Š sŽ {‹ (Þ+s ¥X(ß+s ¥X(à+*0<}‘ }’ }“ }” }• }– }— (A *0#Ö{– YE +8È8š8ä(˜ s™ }’ {‘ oÑ }• }– {• oë 9„{• oî }“ {“ s; }” {’ {” oš -*{’ {” o› }– {“ }— *+þU}” þ\}“ 8lÿÿÿ}– {• (Õ+}• }’ }– þ\}— *0Y`{– YE + ++++}– {• (Õ+}– þ\}— *03{– YE + + +++***0{— *0 +×{‘ þ\þUþ\sœ *0D} }ž }Ÿ }  }¡ }¢ }£ }¤ (A *0.Ø{£ YE +8Ó8¥8ï(Œ s¥ }Ÿ {ž oÑ }¢ }£ {¢ oë 9{¢ oî }  { {  ok s| }¡ {Ÿ {¡ o¦ -*{Ÿ {¡ o§ }£ {  }¤ *+þQ}¡ þ\}  8aÿÿÿ}£ {¢ (Õ+}¢ }Ÿ }£ þ\}¤ *0Y`{£ YE + ++++}£ {¢ (Õ+}£ þ\}¤ *03{£ YE + + +++***0{¤ *0 1Ù{ {ž þ\þQþ\s¨ *V(• }© }ª *0!{ª (D+ {© (á+¥*:(• }« *0{« (D+ (â+¥*V(É }¬ }­ *0MÚ{¬ ok s| þD {­ o® ,{­ Xo¯ *{­ o¯ *(° *0Z(± {² (³ s´ *V(µ }¶ }· *05Ü(˜ s¸ {¶ s¹ {· (ã+sº ¥h(ä+*04}» }¼ }½ }¾ }¿ }À (A *0ðH{¿ YE +8œ8Œ8±{¼ oÑ }½ }¿ þ\s }¾ {½ oë ,/{¾ {½ oî (µ {» {¾ {² oƒ +,}¿ {¾ {² }À *+£}¾ }¿ {½ (Õ+}½ }¿ þ\}À *0Y`{¿ YE + ++++}¿ {½ (Õ+}¿ þ\}À *03{¿ YE + + +++***0{À *0 `{» {¼ þ\sÁ *0<} }à }Ä }Å }Æ }Ç }È (A *0FÝ{Ç YE +8î8¤8ß8ý{à oÑ }Ä }Ç { (oB }Æ }Ç {Æ oë ,T{Æ oC }Å {Ä oë -+(ïr‡+p(‹ oŒ sÌ ,¥+z&+}Å +Ÿ}Ç {Æ (Ô+}Æ {Ä oë ,}Ç {Ä oî }È *+Ö}Ç {Ä (Õ+}Ä }Ç þ\}È *0v`{Ç YE ++7+ + ++++}Ç {Æ (Ô+}Ç {Ä (Õ+}Ç þ\}È *0<{Ç YE +++ +++****0{È *0 `{ {à þ\sÉ *0<}Ê }Ë }Ì }Í }Î }Ï }Ð (A *0)H{Ï YE +8Õ8µ8ê{Ë oÑ }Ì }Ï þ\s }Í s© }Î {Ì oë ,v{Í {Ì oî (µ {Î {¡ ,+{Ê {Í {² oƒ þ,,{Î (¢ }Ï {Í {² }Ð *8ƒÿÿÿ8}ÿÿÿ}Î }Í }Ï {Ì (Õ+}Ì }Ï þ\}Ð *0Y`{Ï YE + ++++}Ï {Ì (Õ+}Ï þ\}Ð *03{Ï YE + + +++***0{Ð *0 `{Ê {Ë þ\sÑ *0sÒ *0sÓ (°+*0sÔ sÕ (å+*0fß{Ö oë ,O{Ö oë ŒP uÿ ,+Í{× oê  þPo }× þ(æ+*(Ø *0-á{× oë ,{× o }Ù * þ(ç+*0sÚ sÛ sÜ ¥ *0 sÝ (°+*0,ã{¡ - (è+&+{Þ ,{ß *(é+*0{¡ -(¢ **0%ås© sà sá (ê+(ë+*0sâ sã ¥R*0 sä *0 }² *0{² *0çså sæ *0 ( &*0 þ(@+*0 þ(ì+*0}ç ( &*0{ç {² þoè *0{ç {² {² þoé *0}ê ( &*0{ê oë ¥ *0{ê þoë *0 sì €í *0( *0~í *0&*0 sî ¥*0sî ¥¥ *r( }ï }ð }ñ *0{ï {ð {ñ (í+*V(¬ }ò }ó *0#{ò oƒ ,{ó ok (° **(É *0èŒ\ u  ,  oê **0( &}ô }õ *0Xê{õ o oÑ u‹ , {ô oº Þ%{ô (î+ Þt{ô oñ &þ*?@0¥oÑ ¥ *0?( &o% }ö sî ¥}÷ }ø }ù (à }ú *0—ì}ù {÷ ,{÷ oê }÷ +{ö ,{ö oê }ö +{ú ¥„oû oë ,oü oñ &+è Þu  , oê &Ü&Ü&(à }ú *Ws0*í{ø - (è+&+{ù ,(ï+*{ý *0{ú ( }ú *0(þ *0 (þ Œ\*0*ï{ø - }ø +{ù ,* þ(ð+*0(ïr«+p(‹ oŒ s z0{ù -(ÿ **:(î } *0&`{ Œ\,{ þ\oê **V(• } } *0{ { o Œc¥*:( } *0{ s ¥*0'} } } } ( &*0{ { (ñ+Œ*0\ð{ (ž{ o Þt { ( þ,{ { ( ( *{ ( *0(ïr«+p(‹ oŒ s z0*0{ { (ñ+*’( } } } } *0{ { { { s *:(• } *0{ *:( } *0{ og *0} } ( &*0{ { o¼ &*0} } } ( &*0{ o¼ &*0{ o¼ &*0-`{ s o { o¼ &{ s *0ño , {ð oñ &**0>ôo o  u–-u—-t˜ { (! **(ò+*0 öuš ,  {" *s# ¥¢*0 øu› ,  {$ *s% ¥”*0 s& €' *0( *0s( *0 uþ*0s) *0 užþ*0~' *0 uœþ*0ú u,+ už,+*0(* *0(* }+ *0{+ *0(* }, *0{, *0( }- *0( }. *0 {. {+ *0( }/ *0 {/ {, *0( &}0 }1 *0{0 *0{1 *0/üuC , {0 s2 +à s3 ¥ö*0s4 *0{0 þo5 *V(G }7 }8 *0{8 {1 o9 {7 (L *:(: }; *0bþ{; {0 (ó+  už- u-{; {1 o9 (< **t {, {; {1 (L (< *0( &}= }> }? *0{= *0.ÿ{> -(ïrÏ+p(‹ oŒ sÌ z{¹ *0¥oî Œ\*0}{? -s{= (ó+ už-u-,}> }? *tž {+ (ú }> *t {, }= ¥ þoë **0(ïr«+p(‹ oŒ s z0{? -{= þ(ô+**0( &}@ *0{@ *0sA *0{@ sB (ñ *:(: }C *0/{C {@ oë ,{C {@ oî (D *(E *:(î }F *0{F oê *0(ïrƒ'p(‹ oŒ sÌ z0(ïr¯'p(‹ oŒ sÌ z0sG *0g”oë -!(ïr‡+p(‹ oŒ r[ps z/!(ïrÉp(‹ oŒ r[ps z- þo *Y+™0sH ¥*0s sI ¥*0sJ ¥¬*0,{¡ - (è+&+{K ,{ *(õ+*0s© sÀ sL *0<{¡ - (¢ +oë ,o oü ,*+Æ*0s© sM *0s½ sN ¥*0W{ 3 (è+&+{ þ3 (ö+&+{O ŒT,+sP (÷+(Q {O (5 *0S , {z /{z sR ¥¢*-ý+{z s þTsS  sT *08{K , (U **08(Ú (ø+ Þ (Ý &Ü*  0,{¡ - (è+&+{K ,{ *(õ+*0{¡ -(¢ **0(ù+(ú+(U *0, s© sÀ oÿ (E sV sW *0 sX *0}Y ( &*0{Y oí ¥*0{Y þoë *0(ïr«+p(‹ oŒ s z0 {Y u  ,  þoê **0{Y oí (+*0( &}Z *0í{Z - (è+&+(ï+*0í{Z - (è+&+(û+*0{Z - }Z +*0(ïr«+p(‹ oŒ s z0*0"s3€®s3€¯s3€°*0( }­*0~°*0 (:þ*0~¯*0 (:þ*0~®*0 (:þ*0{­*0( &(8}[ *07{[ (:E (è+&+ (ö+&+{\ *0(] *0 (] Œ\*0)(6}[ |\ o^ ,*(4}[ *0(ïr«+p(‹ oŒ s z0 þo_ *0}` }a (b &*0.{a oë ,{` {a og oc \**0{a þoê *0}d }e }f (b &*0Q{f {f { X( {e oë ,){d {f { {e og (ü+\**0{e þoê *0}h }i }j (b &*0O•{i oë {j oë ,+,){h {i og {j ok (ý+\**0{i oê {j þoê *0'}m }n }o }p ( &*0{o {p (þ+Œ\*0€{o {¡ -{o (¢ +{p (– {p {“ þ,{n oë +,${p {m {n og oq (– +¹{p {“ þ*0(ïr«+p(‹ oŒ s z0{n þoê *0{o {p (þ+*0}r }s }t ( &*0+í{t {¡ - (è+&+{s oî Œ\*0/{r {s {t {r {s {t (ÿ+*0(ïr«+p(‹ oŒ s z0{s þoê *0(í{t {¡ - (è+&+{s þoî *0}u }v (b &*0L{u {v {‰ ow ,/ {x ( {x (  \{v (‹ **0*V(Ï }y }z *0{y {z { þo{ *0'}| }} }~ } ( &*0{| {~ { (+Œ\*0¶{~ { þ3*{~ { 3"{~ ( { þ¸(€ *{~ { ÿÿÿ3(ïr,p(‹ oŒ sÌ z{~ { {} 3*{~ { X {~ ( { þ¸ (€ *0(ïr«+p(‹ oŒ s z0*0{| {~ { (+*0/} }‚ }ƒ }„ }… ( &*0{ƒ {„ (+Œ\*0‹{ƒ ("{… {† ,l {Õ { oq Þ"t{‚ {„ {… (+þ ,{„ (– *{‚ {„ {… (+**'8"0(ïr«+p(‹ oŒ s z0{‚ {… (+þ(+*0{ƒ {„ (+*0&( &}‡ }ˆ {‡ Ži}‰ *0F,{ˆ þþ,/{ˆ {‰ þþ,(ï+*{‡ {ˆ £\*(+*0(Š *07,{ˆ {‰ þþ,*{ˆ X}ˆ {ˆ {‰ þ*0 (Š Œ\*0(ïr«+p(‹ oŒ s z0*0( &}‹ }Œ *0{‹ *0 {‹ Œ\*0{Œ ,*}Œ *0(ïr«+p(‹ oŒ s z0*0} }Ž ( &*0{Ž ¥ þoí *0{Ž þoë *0(ïr«+p(‹ oŒ s z0{ oñ &{Ž þoê *0{Ž þoî *0} } (A &*0{ *0q { oë ,**0{ oê { þoç *0*0{ þoî *0(W+*0(‘ s’ *0}“ ( &*0{“ þo” *0s• *0s– *0s— *0(˜ s™ *0 ( &*0 þ(@+*0 þ(ì+*0}š ( &*0{š þ(+*0 þ(ì+*0 ( &*0 Œ\(› *0 (+*0}œ } ( &*0{œ þož *0{ þoŸ *0,”,{ *(ïr=,p(‹ oŒ rc,ps z0þ*0 þþ*0,**08, { þ(¿+**08, { þ(ü+**08, { þoü **08, { þoü **08, { oå &**0, { o™ ([ **08, { þo¹ **0!8, %{ ¤**08, { ( (€ *( *0 (1 *0 (1 *0 (/ *0 (/ *0 (  *0 (¡ *0U”/!(ïrÉp(‹ oŒ rÙps z/!(ïrÉp(‹ oŒ rq,ps zs¢ *0{-þ+,+Ð(U D%¤D%¤D(£ ¥Ö*Ð(U D%¤D%¤DD%¤D%¤D(¤ ¥Ö*0I(+  ÖÚ 20ÖÚ 2(¡ X X3èX X3Ð*0Q(+  ÖÚ 28ÖÚ 2 ( +(¡ X X3àX X3È*0 ( +*0 ( +*0‡ŒÖ,+ rps z(1 (1 (/ (/ ÖÚ2=  ÖÚ2(  oå &XX3áXX3Ã*0‹ŒÖ,+ rps z(1 (1 (/ (/ ÖÚ2A  ÖÚ2#(  ( +&XX3ÝXX3¿*0BŒÖ,+ rps z(/ (/ (1 (1 s¦ ( +*0BŒÖ,+ rps z(/ (/ (1 (1 s§ ( +*0AŒÖ,+ rps z(/ (/ (1 (1 s¨ ( +*0 G,ŒÖ,+ rps z(/ (/ (1 (1 s© ( +*0 ŒÖ,+ r*ps zŒÖ,+ rUps z(/ /!(ïr±&p(‹ oŒ ru,ps z(/ /!(ïr±&p(‹ oŒ r,ps z(/ /!(ïr±&p(‹ oŒ r©,ps z(/ /!(ïr±&p(‹ oŒ rÃ,ps zÖ(1 (/ Ö1!(ïr±&p(‹ oŒ rÝ,ps zÖ(1 (/ Ö1!(ïr±&p(‹ oŒ rë,ps zÖ(1 (/ Ö1!(ïr±&p(‹ oŒ rÝ,ps zÖ(1 (/ Ö1!(ïr±&p(‹ oŒ rë,ps z Ú 2@Ú 2)ÖÖÖÖ(  (¡ X X3×X X3À*V(ª }« }¬ *0{« {¬ (­ þoc *V(ª }® }¯ *0 {® {¯ (­ þ(+*:(ª }° *0{° (± *r(ª }² }³ }´ *0{² {³ Ö{´ Ö(± *0*0I>/(Êr™ ps (U+&+  Y 2o¨ ¤X X3è*0ÂŽi Ži|  +^oµ /+Ži þþ,#(ïrù,p(‹ oŒ r-ps z £¤ ¤|X Ži2œ +;£|þþ,#(ïrù,p(‹ oŒ r-ps zX Ži2¿*0BŽi /*ŽiP  +£o™ ¤PX Ži2â(+(+*0ZŽi /*(+(l+*0í ŽiD  + ¤DX Ži2î(+ (+o ¥N (+ Ži<œ£P/ 3+£Po· þ+, X+Í Y 2$  £D£¤ X  X3ÜYþþ,Y(++ 8\ÿÿÿ*0>Ži /*ŽiP  +£o™ ¤PX Ži2â(+*0,ZŽi /*(+,o ¥N(+*(+*0*‰{Ö ,! {Ö {} oå &+×*0E!{y ,1 {y {Ô oä (€  }Ö +Ç( }Ö *0^"{Ö ,P {Ö {Ö -{} o™ (€ (~ *{Ö {} o™ (~ (+ *(€ *0K!{y ,7 {y {Ô oº (€  }Ö X+Á( }Ö *0k#{Ö ,] {Ö {Ö -{} (+(€ (~ *{Ö {} (´ oµ (~  (+*(€ *0“${y ,w {Õ ,J {Õ {y {Ö {Ô o» (€ }Ö  +¤(ïrç*p(‹ oŒ r+-ps z{Õ -Õ( }Ö *0Ž%{Ö ,x {y ,K {y {Ö {Ô {} (¬ o­ (Û  (+*(ïrç*p(‹ oŒ r+-ps z{y -Õ(Ü *0.‰{Ö ,# {Ö {} oü ,+×**0.‰{Ö ,# {Ö {} oü ,*+Õ*0)‰{Ö , {Ö {} (€ +Ù*0Y&{Ö ,O {Ö {Ö ,7{Ö {Ö {} {}  ( (€ (€ (+*{} **09'{Ö ,( {Ö {} (€  }Ö +Ð}Ö *0<‰{Ö ,( {Ö {} o¼ (++Ð(€ }y *0O({Ö ,A {Ö {Ö -{} þo¼ *þP (~ (+(½ *(€ *0O'{Ö ,? {Ö {} oü ,(€  }Ö +Ä+¹}Ö *0g'{Ö ,] {Ö {Ö -{Ö {} oü ,**{Ö {} oü ,(€ (+ *+›*00‰{Ö ,' {Ö {} o± &X+Ñ*0)(°  ( +*02+{¾ ," {¾ {¿ (!++Ö}Ö *0^,{¾ ,P {¿ {Ö ,5{¿ {¾ {Ö {} (€  ("+*{¾ +¨( *0X-u· , *o ( oë ,o (€ +è (.+ Þu , oê &Ü&Ü*'=0e.(#+ {¾ ,O {¾ {¾ ,7{¾ {¾ {¾ -{¿ {¿  (…+*($+*{¿ *( *06//%o¨ (€ }Ö X+Ö( }Ö *09//(Êr™ ps z-( *o¨ (€ (%+*0c'{Ö ,L {Ö {} (€ oü , }Ö +Á }Ö  +¬}Ö }Ö *0Q'{Ö ,@ {Ö {} (€ oü , }Ö +Ä (&+ *}Ö *0Q'{Ö ,@ {Ö {} (€ oü , (&+ * }Ö +¸}Ö *0„'{Ö ,t {Ö {Ö -({Ö {} oü ,së *së *{Ö {} (€ oü , ('+së * ((+ së *së *0p0{ ,Q { { (, { (- (€ (~ }Ö }y +§( }Ö (€ }y *0a0{ ,I { { (, { (- (€ (~ ()+sÀ *( (€ sÀ *0¡2{Á ,w {Á { (Ä { (Å { (Æ (€  (~ (Û }Ö }y }Õ 8ÿÿÿ( }Ö (€ }y (Ü }Õ *02{Á ,d {Á { (Ä { (Å { (Æ (€  (~ (Û (*+sà *( (€ (Ü sà *03{Ö ,s {y ,F {y {Ö {Ô {} sv (w }  +¨(ïrç*p(‹ oŒ r+-ps z{y -Õ(x } *0‚3{Ö ,l {y ,? {y {Ö {Ô {} sv (w  (++*(ïrç*p(‹ oŒ r+-ps z{y -Õ(x *0¿4{Ö 9˜ {y ,k {Õ ,a {Õ {y {Ö {Ö {Ô {} s (Ä   }Á   8€ÿÿÿ(ïrç*p(‹ oŒ   r3-ps z{y -Õ{Õ -Í(Å }Á *0­4{Ö 9Œ {y ,_ {Õ ,U {Õ {y {Ö {Ö {Ô {} s (Ä    (,+ *(ïrç*p(‹ oŒ   r3-ps z{y -Õ{Õ -Í(Å *0/‰{Ö ,& {Ö {} ¤X+Ò*05(Ó   (-+*0/6Ži ( Y   0 £(€ Y Y3è*0 (.+*0)‰{Ö , {Ö {} (€ +Ù*0v7{Ö ,j {Ö ,V {} {} {Ö {Ö  (j+1(€ +­ (€ +˜ (/+* +ô00(j+1( (€ (€ *( (€ (€ *0¼/þ+,;(j+1( (€ (€ (€ *( (€ (€ (€ *151( (€ (€ (€ *( (€ (€ (€ *1( (€ (€ (€ *( (€ (€ (€ *0 k,(j+ (j+ 1þ+,;(j+1( (€ (€ (€ *( (€ (€ (€ *(0+*0/{Ö , {Ö {Ö þ**0Ë8<ž{Æ {Ö 9 {Ö {Ö ,r{Ö {} {} {Ö 3(Ç  (1+*{Ö ,*{} {Ö (Ç  (2+*r;-psÜ zr;-psÜ zc  (3+ Y(3+( (4+*0 :(5+,*sÈ (Ó (3+*0LþŒ1sÉ *0 sÉ *0þ{Ê ,+þ*0þ{Ê ,**0*0(5 *0(5 *0(5 *0*0(¤+*0Œ*0z0sÜ *0&oÌ Ð(U oâ , oå (G **0þ*0 ({+*0 (}+*0 (6+*0 (7+*0 þ(8+*0 (8+þ*0 þ(9+*0({+,**0({+,**0sÜ z0s (:+*0 s (:+*0 sÌ (:+*0 rG-psé z0 r¥-psé z0(- *0(, *0*0s½ *0 (Î *0{Ï *0 þo™ *0 þ(+*0 þ(!+*0 þo™ *0 þ(+*0 þ(!+*0 sÐ *0 sÑ *0 (À *0 ,{ **0 r.psé z0 þ(;+*0 rs.psé z0 þ(<+*0 rß.psé z0 rE/psé z0 r©/psé z0 r0psé z0 ry0psé z0 rã0psé z0 rM1psé z0 rµ1psé z0 r!2psé z0D;{Ö ,: {Ö {} {Ö -*( (€ (=+}Ö **0{ X( *0{ Y( *0(Ò r‹2psÜ z0 r×2psé z0 r33psé z0 r‘3psé z0 rñ3psé z0 rO4psé z0 r¯4psé z0L r± psé z0 ŒD¥*0(’ (“ sv *0 #ð*0 #øÿ*0"€*0"Àÿ*0 r 5psé z0 rm5psé z0 rË5psé z0 r+6psé z0 r‹6psé z0 rí6psé z0 rO7psé z0<<Œ ,+uB , (½ ¥Cþo¾ * þo¿ *rp*0 r¯7psé z0(³Œ(Ú oÓ ÞŒ(Ý &Ü* 0,=o™ ÞŒ, þoê &Ü&Ü* 0 Ð(U *0pÐ(U o` , þoa **0þ*0 þ(>+*0 þ(?+*0*0(Ô *0(3 *0(4 *0(@+sÕ (A+*0(y+sÖ (B+*0 þ(C+*0 þ(D+*0 þ(E+*0 þ(F+*0 þ(G+*0 þ(H+*0 þ(I+*0 þ(J+*0 þ(K+*0 þ(L+*0 þ(M+*0 þ(N+*0 þ(O+*0 þ(P+*0 þ(Q+*0 þ(R+*0 þ(S+*0 þ(T+*0 þ(U+*0 þ(V+*0 þ(W+*0s> €3>X (@+s× (X+ /(@+ rß.psé z  rß.psé z(@+sØ (X+ /(@+  rß.psé z*V(Ù }Ù }Ú *0{Ú {Ù oÛ þoÜ *V(Ý }Þ }ß *0{Þ {ß o þoà *(á *0 þ(Y+*(‹ *0 þ(Z+*(á *0 þ([+*(á *0 þ([+*0(ïrƒ'p(‹ oŒ sÌ z0(ïr¯'p(‹ oŒ sÌ z0 #àÁ*0 #ÀÿÿÿßA*0/#àÁ5#ÀÿÿÿßAþþ+, (â þ**09•3 sã ¥>*þ ,þ+þþ s¥>*06@sþ -!(ïr 8p(‹ oŒ r-8ps zs*0I•3 sä ¥ø*þ ,!þ+ !þþ s ¥ø*06Bs  -!(ïr 8p(‹ oŒ r-8ps zs*0I•3 så ¥ú*þ ,!þ+ !þþ s¥ú*06Ds -!(ïr 8p(‹ oŒ r-8ps zs*09•3 sæ ¥ü*þ ,þ+þþ s!¥ü*06Fs -!(ïr 8p(‹ oŒ r-8ps zs'*0K•3 sç ¥þ*þ ,!Óþ+!Óþþ s,¥þ*0@Hs* !Ó3!(ïr 8p(‹ oŒ r-8ps zs2*0K•3 sè ¥*þ ,!àþ+!àþþ s7¥*0@Js5 !à3!(ïr 8p(‹ oŒ r-8ps zs=*09•3 sé ¥*þ ,þ+þþ sB¥*06Ls@ -!(ïr 8p(‹ oŒ r-8ps zsH*09•3 sê ¥*þ ,þ+þþ sM¥*06NsK -!(ïr 8p(‹ oŒ r-8ps zsS*09•3 së ¥*þ ,þ+þþ sX¥*06PsV -!(ïr 8p(‹ oŒ r-8ps zs^*09•3 sì ¥*þ ,þ+þþ sc¥*06Rsa -!(ïr 8p(‹ oŒ r-8ps zsi*09SY[ (,6i 3lZXsí ¥ *þ þþ  sl¥ *#þ,#(ïr 8p(‹ oŒ r-8ps z.#(ïr78p(‹ oŒ rÙps z.#(ïrY8p(‹ oŒ r-8ps z.#(ïry8p(‹ oŒ rq,ps zþ, sí ¥ *þ ,#þ+ #þþ  sr¥ *0 sw*0.SY[l (,6i 3kZXsî ¥ *þ þþ  sz¥ *"þ,#(ïr 8p(‹ oŒ r-8ps z.#(ïr78p(‹ oŒ rÙps z.#(ïrY8p(‹ oŒ r-8ps z.#(ïry8p(‹ oŒ rq,ps zþ, sî ¥ *þ , "þ+ "þþ  s€¥ *0 s…*0.í(8+, sï ¥¢*({+ sð ¥¢*0 sñ *0I•(\+, sò ¥*(|+ , ({++(}+þ só ¥*08”(8+,!(ïr 8p(‹ oŒ r-8ps zsô *0%í3 sõ ¥*þ sš¥*0 S s *0STE$.[(ž Ù† ]-*Ù†***Ù†*Ù† Ù†*Ù† Ù†*0 U (ž*0SVE$.[(  س ]-*س***س*س س*س س*0 W ( *0SXE$.[(¢ ص ]-*ص***ص*ص ص*ص ص*0 Y (¢*0SZE$.[(¤ Ù‡ ]-*Ù‡***Ù‡*Ù‡ Ù‡*Ù‡ Ù‡*0 [ (¤*0J,E!'[(¦ Ø ]-*Ø***Ø*ØØ*Ø Ø*0 Z (¦*0J±E!'[(¨ Ù ]-*Ù***Ù*ÙÙ*Ù Ù*0 · (¨*0RâE#%)/[(ª Ø ]-*Ø*!**Ø*ØØ*Ø Ø*0 ’ (ª*0R\E#%)/[(¬ Ù ]-*Ù*!**Ù*ÙÙ*Ù Ù*0 ¹ (¬*0S]E$&*0[(® Ø ]-*Ø*!Ó**Ø*ØØ*Ø Ø*0 ^ (®*0S_E$&*0[(° Ù ]-*Ù*!à**Ù*ÙÙ*Ù Ù*0 ` (°*0NaE!%+[(² Z ]-*Z*"€?**Z*ZZ*Z Z*0 b (²*0RcE#%)/[(´ Z ]-*Z*#ð?**Z*ZZ*Z Z*0 d (´*0geE"$&.<[(¶ (ö ]-*(ö ***(ö *(ö (ö *(ö (ö *0f sÕ   (¶*0wgE')+6H[(]+ (À+ ]-*þ(À+***þ(À+*(À+þ(À+*(À+ þ(À+*0i   þ(]+*0kj,  {z + ,  {z +ŽiY YX  Y2!X£¤XX3ß*0`k,  {z + ,  {z +ŽiY YX  Y2 X£¤XX3à*0dá, {z + , {z + , {z + (1 Y , {z + (1 Y YX YX(^+*0gá, {z + , {z + , {z + (1 Y , {z + (1 Y YX YX(_+*0 ™l, {z + , {z + , {z + , {z + (1 Y , {z + (1 Y, {z + (1 Y YXYXYX(`+*0 œl, {z + , {z + , {z + , {z + (1 Y , {z + (1 Y, {z + (1 Y YXYXYX(a+*0 Î, {z + , {z + , {z + , {z + , {z + (1 Y, {z + (1 Y, {z + (1 Y, {z + (1 Y YXYXYX YX(b+*0 Ñ, {z + , {z + , {z + , {z + , {z + (1 Y, {z + (1 Y, {z + (1 Y, {z + (1 Y YXYXYX YX (c+*0;m,  {z + ,  {z + (v Y YX(x *0)nÐ(U %¤o„ s÷ *0<oÐ(U ÐP(U %¤%¤o„ sø *0~ù þoú *0~û þoú *0~ü þoú *0~ý þoú *0~þ þ(d+*0~ÿ þoú *0~ þoú *0~ þoú *0~ þoú *0~ þoú *0~ þo *0~ þoú *0~ þoú *0~ þo™ *0~ þoú *0~ þoú *0~ þoú *0~ þoú *0~ þoú *0~ þoú *0~ þ(þ+*0( &} *0 þ( *0( Œ\*0C{ E*o , } *} *o ,*} *0} þo *0*0){ E (e+*(f+*þo *0 ( &*0*0*0*0 `þ\*0( &} *0*0*0*0{ *0$( &} } { } *0{ } *0{ þo *0nH{ { o o ,*o ,*o ,{ o +, } *{ o , } **0$( &} }! { }" *0{ }" *0{" *0H{" {" o# o$ ,*o% ,{! o% +, }" *{! o$ , }" *{! o% ,*o$ -**(& *0X*0;}÷}ø}ù}ú}û{ø{ù(' &*0{û*0{ú,þ*þ*0þ*0 {÷X*0*0'}ü}ý}þ}ÿ( &*0 %{ý{ü{þ{ÿ(€¥ *0 {ý{ü{þ{ÿ(€*(( *0X*0;}}}}}{{() &*0{*0{,þ*þ*0þ*0 {X*0*0'}}}}( &*0 %{{{{(‚¥ *0 {{{{(‚*(* *0X*0;} } } } } { { (+ &*0{ *0{ ,þ*þ*0þ*0 { X*0*0'}}}}( &*0 %{{{{(„¥ *0 {{{{(„*(, *0X*0;}}}}}{{(- &*0{*0{,þ*þ*0þ*0 {X*0*0'}}}}( &*0 %{{{{(†¥ *0 {{{{(†*(. *0X*0;}}}}}{{(/ &*0{*0{,þ*þ*0þ*0 {X*0*0'} }!}"}#( &*0 %{!{ {"{#(ˆ¥ *0 {!{ {"{#(ˆ*(0 *0X*0;}$}%}&}'}({%{&(1 &*0{(*0{',þ*þ*0þ*0 {$X*0*0'})}*}+},( &*0 %{*{){+{,(Š¥ *0 {*{){+{,(Š*(2 *0Xh*0;}-}.}/}0}1{.{/(3 &*0{1*0{0,þ*þ*0þ*0 {-Xh*0*0'}2}3}4}5( &*0 %{3{2{4{5(Œ¥ *0 {3{2{4{5(Œ*(4 *0XÑ*0;}6}7}8}9}:{7{8(5 &*0{:*0{9,þ*þ*0þ*0 {6XÑ*0*0'};}<}=}>( &*0 %{<{;{={>(Ž¥ *0 {<{;{={>(Ž*(6 *0Xg*0;}?}@}A}B}C{@{A(7 &*0{C*0{B,þ*þ*0þ*0 {?Xg*0*0'}D}E}F}G( &*0 %{E{D{F{G(¥ *0 {E{D{F{G(*(8 *0XÒ*0;}H}I}J}K}L{I{J(9 &*0{L*0{K,þ*þ*0þ*0 {HXÒ*0*0'}M}N}O}P( &*0 %{N{M{O{P(’¥ *0 {N{M{O{P(’*06}Q}R}S}T}U{S(: &*0{U*0{T,þ*þ*0þ*0X*0{Rl{QZX*0;}V}W}X}Y}Z{W{X(; &*0{Z*0{Y,þ*þ*0þ*0 {VX*0}[}\}]( &*0{\{[{](”¥ *0{\{[{](”*06}^}_}`}a}b{`(< &*0{b*0{a,þ*þ*0þ*0X*0{_k{^ZX*0;}c}d}e}f}g{d{e(= &*0{g*0{f,þ*þ*0þ*0 {cX*0}h}i}j( &*0{i{h{j(–¥ *0{i{h{j(–*0;}> }? }@ }A }B {? {@ (C &*0{B *0 (g+*0 þ(ì+*0{A {> þ(h+*0*0'}E }F }G }H ( &*0 %{E {G {H {F (i+¥ *0 {E {G {H {F (i+*0C}I }J }K }L }M }N {J {K (C &*0{N *0{M ,(g+*(j+*0 þ(ì+*0{L {I þ(Ø+*0*0/}O }P }Q }R }S ( &*0 +{O {R {Q {S {P (k+¥ *0 &{O {R {Q {S {P (k+*03}}€}}‚{{€(T &*0{‚*0þ*0þ*0Z { XÑ*0*0}ƒ}„}…( &*0{ƒ{„{…(œ¥ *0{ƒ{„{…(œ*:(Ù }U *0 &{U %Œ\¤o ¥]*:(V }W *0 3{W %Œ\¤%Œ]¤o ¥c*0 ( &*0]qÐ\(U Ð{(U oâ ,sª¥( sX 8!Ð}(U oâ ,s®¥( sY 8øÐD(U oâ ,s²¥( sZ 8ÏÐ[(U oâ ,s¶¥( s[ 8¦Ћ(U oâ ,sº¥( s\ 8}Ðy(U oâ ,s¾¥( s] +WÐx(U oâ ,sÂ¥( s^ +1Ð#(U oâ ,sÆ¥( s_ + r—8p(l+€` *0~` *(a *0(b *:(c }d *0{d þoe *(f *0(g *:(c }h *0{h þoe *(i *0( *:(c }j *0{j þoe *(k *0(l *:(c }m *0{m þoe *(n *0.^!Ó2*e !Ó/ (Çso z*:(c }p *0{p þoe *(q *0(r *:(c }s *0{s þoe *(t *0(u *:(c }v *0{v þoe *(w *0(x *:(c }y *0{y þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sÍ¥( sz +1Ðx(U oâ ,sÑ¥( s{ + rŸ8p(l+€| *0~| *(q *0(} *:(c }~ *0{~ þoe *(t *0 l(} k*:(c } *0{ þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sØ¥( s€ +1Ðx(U oâ ,sÜ¥( s + r©8p(l+€‚ *0~‚ *(q *0(ƒ *:(c }„ *0{„ þoe *(t *0 l(ƒ k*:(c }… *0{… þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sã¥( s† +1Ðx(U oâ ,sç¥( s‡ + r³8p(l+€ˆ *0~ˆ *(q *0(‰ *:(c }Š *0{Š þoe *(t *0 l(‰ k*:(c }‹ *0{‹ þoe *0 ( &*0jsÐ\(U Ðy(U oâ ,sî¥1 sŒ +1Ðx(U oâ ,sô¥1 s + r½8p(m+€Ž *0~Ž *( *0 ( *:(Ù }‘ *0{‘ þok *:(’ }“ *0u{“ o” s• *(– *0 ll( k*:(Ù }— *0{— þok *:(’ }˜ *0u{˜ o” s™ *0 ( &*0jqÐ\(U Ðy(U oâ ,sý¥( sš +1Ðx(U oâ ,s¥( s› + rÉ8p(l+€œ *0~œ *(q *0( *:(c }ž *0{ž þoe *(t *0 l( k*:(c }Ÿ *0{Ÿ þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s¥( s  +1Ðx(U oâ ,s ¥( s¡ + rÙ8p(l+€¢ *0~¢ *(q *0(£ *:(c }¤ *0{¤ þoe *(t *0 l(£ k*:(c }¥ *0{¥ þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s¥( s¦ +1Ðx(U oâ ,s¥( s§ + rá8p(l+€¨ *0~¨ *(q *0(â *:(c }© *0{© þoe *(t *0 l(â k*:(c }ª *0{ª þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s¥( s« +1Ðx(U oâ ,s"¥( s¬ + rí8p(l+€­ *0~­ *(q *0(® *:(c }¯ *0{¯ þoe *(t *0 l(® k*:(c }° *0{° þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s)¥( s± +1Ðx(U oâ ,s-¥( s² + rÿ8p(l+€³ *0~³ *(q *0(´ *:(c }µ *0{µ þoe *(t *0 l(´ k*:(c }¶ *0{¶ þoe *0 ( &*0]wÐ\(U Ðy(U oâ ,s4¥4 s· 8!Ðx(U oâ ,s8¥4 s¸ 8øЋ(U oâ ,s<¥4 s¹ 8ÏÐ#(U oâ ,s@¥4 sº 8¦Ð}(U oâ ,sD¥4 s» 8}ÐD(U oâ ,sH¥4 s¼ +WÐ[(U oâ ,sL¥4 s½ +1Ð{(U oâ ,sP¥4 s¾ + r 9p(n+€¿ *0~¿ *(À *0(Á *:( }à *0{à þož *(Ä *0 l(Á *:( }Å *0{Å þož *(Æ *0!!Ó/*!Ó1**:( }Ç *0{Ç þož *(È *0(É *:( }Ê *0{Ê þož *(Ë *0(Ì *:( }Í *0{Í þož *(i *0(Î *:( }Ï *0{Ï þož *(Ð *0(Ñ *:( }Ò *0{Ò þož *(Ó *0(Ô *:( }Õ *0{Õ þož *0 ( &*0jqÐ\(U Ðy(U oâ ,sW¥( sÖ +1Ðx(U oâ ,s[¥( s× + r9p(l+€Ø *0~Ø *(q *0(Ù *:(c }Ú *0{Ú þoe *(t *0 l(Ù k*:(c }Û *0{Û þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sb¥( sÜ +1Ðx(U oâ ,sf¥( sÝ + r9p(l+€Þ *0~Þ *(q *0(ß *:(c }à *0{à þoe *(t *0 l(ß k*:(c }á *0{á þoe *0 ( &*0jxÐ\(U Ðy(U oâ ,sm¥Ï sâ +1Ðx(U oâ ,sq¥Ï sã + r)9p(o+€ä *0~ä *(q *0(å *:(Ù }æ *0{æ þok *(t *0 l(å k*:(Ù }ç *0{ç þok *0 ( &*0jqÐ\(U Ðy(U oâ ,sx¥( sè +1Ðx(U oâ ,s|¥( sé + r39p(l+€ê *0~ê *(q *0(ë *:(c }ì *0{ì þoe *(t *0 l(ë k*:(c }í *0{í þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sƒ¥( sî +1Ðx(U oâ ,s‡¥( sï + r;9p(l+€ð *0~ð *(q *0(ñ *:(c }ò *0{ò þoe *(t *0 l(ñ k*:(c }ó *0{ó þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,sŽ¥( sô +1Ðx(U oâ ,s’¥( sõ + rE9p(l+€ö *0~ö *(q *0(÷ *:(c }ø *0{ø þoe *(t *0 l(÷ k*:(c }ù *0{ù þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s™¥( sú +1Ðx(U oâ ,s¥( sû + rM9p(l+€ü *0~ü *(q *0(ý *:(c }þ *0{þ þoe *(t *0 l(ý k*:(c }ÿ *0{ÿ þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s¤¥( s +1Ðx(U oâ ,s¨¥( s + rW9p(l+€ *0~ *(q *0( *:(c } *0{ þoe *(t *0 l( k*:(c } *0{ þoe *0 ( &*0jqÐ\(U Ðy(U oâ ,s¯¥( s +1Ðx(U oâ ,s³¥( s + r_9p(l+€ *0~ *(q *0( *:(c } *0{ þoe *(t *0 l( k*:(c } *0{ þoe *0 ( &*0jzÐ\(U Ðy(U oâ ,sº¥; s +1Ðx(U oâ ,sÀ¥; s + ri9p(p+€ *0~ *( *0 ( *:(Ý } *0{ þoc *:( } *0|{ o s *(– *0 ll( k*:(Ý } *0{ þoc *:( } *0|{ o s *0 þ(q+*0 rs.psé z0 r.psé z0 rq9psé z0 r×2psé z0 r33psé z0 r‘3psé z0 r¯7psé z0 rñ3psé z0 rO4psé z0 r¯4psé z0 r×9psé z0 r 5psé z0 rm5psé z0 rí6psé z0 rO7psé z0 Lþ*0 þ(9+*0 þ(8+*0 þ(>+*0(ïrƒ'p(‹ oŒ sÌ z0(ïr¯'p(‹ oŒ sÌ z06'{Ö ,, {Ö {} ( (€  }Ö +Ì*0/{Ö , X{Ö +æ*0j‰{Ö ,C {Ö {} /(ïrÉp(‹ oŒ rÙps z-*Y+µ(ïrÅ*p(‹ oŒ rÙps z0$( &} { } } *0+Y{ ,{ {Å ,{Æ *(r+*(s+*0( *0U}{ ,3{ {Å ," {Å } { {Å þþ**} { {Å þþ*0 ( Œ\*0} { } *0*0 ( &*0 s *0Œ< u& , *s *V(Ù } } *0{ { þo! *0}" (V &*0{" o# þo *0 ($ &*0 s% *02‚Œ= u> , *uŠ , s& *s' *V(V }( }) *0{( {) þo* *0}+ (, &*0{+ o- þo. *0}/ (, &*0{/ o0 þ(t+*0 (1 &*0J†Œ? u@ , *u , s2 *u’, s3 *s4 *0 s5 *0}6 (7 &*0{6 o8 þo9 *0}: (7 &*0{: o; þ(u+*0}= (7 &*0{= o> þ(v+*V(, }@ }A *0 {@ {A þoB *0 (C &*0 sD *0b‹ŒA uB , *uš , sE *uœ, sF *už, sG *sH *V(7 }I }J *0 {I {J þoK *0}L (M &*0 {L oN þoO *0}P (M &*0{P oQ þ(w+*0}S (M &*0{S oT þ(x+*0}V (M &*0 {V oW þ(y+*0 þ(8+*0 þ(z+*0 þ({+*0 þ(9+*0 þ(|+*0 ({+*0 (}+*0 (7+*0 (6+*0({+,**0({+,**0 (}+*0(~+*0~*0~*0~*0 þ(>+*0 þ(?+*0 þ(+*0sY *0sZ *0~ *0~!*0~"*0~#*0~$*0~%*0~&*0~'*0~(*0~)*0~**0~+*0~,*0~-*0~.*0ÉÐD(U oâ ,*Ð[(U oâ ,*Ð~(U oâ ,*Ð(U oâ ,*Ѐ(U oâ ,*Ðy(U oâ ,*Ðx(U oâ ,*Ð#(U oâ ,*Ð<(U oâ ,((ŒD¥Š*s[ *0õÐ(U oâ ,(0ŒL¥Š*Ѐ(U oâ ,(1ŒM¥Š*Њ(U oâ ,(2ŒN¥Š*Ðy(U oâ ,(3ŒO¥Š*Ðx(U oâ ,(4ŒP¥Š*Ð#(U oâ ,(5ŒQ¥Š*Ð<(U oâ ,((ŒD¥Š*s\ *0÷Ðz(U oâ ,('ŒC¥Š*Ð{(U oâ ,()ŒE¥Š*Ð}(U oâ ,(*ŒF¥Š*ÐD(U oâ ,(+ŒG¥Š*Ð[(U oâ ,(,ŒH¥Š*Ћ(U oâ ,(-ŒI¥Š*Ð~(U oâ ,(/ŒK¥Š*(€+*0~] *0~^ *0 Œ¥P*0 Œ¥P*0*0*0*0*0*0*0*0!S(_ x3+oþ,*bþ*01ZX þþ,(¾ 0þ+,X(¾ (D**0+(E,XX(¾ (_ s` *ds` *00ZX þþ,(¾ -þ+,sZ *sZ *0@ZX þþ,(¾ -þ+,!ÿÿÿÿÿÿÿÿsa *!sa *0 iS/bX!Z(¾ 02 7þþ+,(b 0(b Y+(ïr1:p(‹ oŒ sw zX+™*0Œ  !(I*0 i/bX!Z(¾ 0YE&(ïr1:p(‹ oŒ sw z!+ !X+™*0Œ  !(K*0ÖŽ(~ , r#ps z(c (v (F (d (e 2(ïr1:p(‹ oŒ sw z bYE_ oYEC xYE(f (½ ¥C(g *(f (½ ¥C(g *(J(h *(L(h *0(~ , r#ps z(c (v (G (ˆ (‡ (F(d (e 2(ïr1:p(‹ oŒ sw z(½ (i bYEcoYEDxYE(½ ¥C(j * (f (½ ¥C(k (h Z* (J(h Z* (L(h Z*0ù‘(~ , r#ps z(c (v (H (l (m (F(d (e 2(ïr1:p(‹ oŒ sw z(½ (i bYEYoYE?xYE(½ ¥C(n * (f (½ ¥C(n Z* (JZ* (LZ*0ÌŽ(~ , r#ps z(c (v (F (d (e 2(ïr1:p(‹ oŒ sw z bYEZ oYEC xYE(f (½ ¥C(k *(f (½ ¥C(k *(J*(L*01ÕÐ|(U oâ , Œ|¥*Ð~(U oâ , Œ~¥*Ð(U oâ , Œ¥*Ѐ(U oâ ,!Œ€¥*Њ(U oâ ,!àŒŠ¥*Ð#(U oâ ,sÕ Œ#¥*Ðy(U oâ ,#Œy¥*Ðx(U oâ ,"Œx¥*rQ:poo oZ ¥*01ÕÐ~(U oâ , Œ~¥*Ðz(U oâ , Œz¥*Ð(U oâ , Œ¥*Ѐ(U oâ ,!Œ€¥*Њ(U oâ ,!àŒŠ¥*Ð#(U oâ ,sÕ Œ#¥*Ðy(U oâ ,#ð?Œy¥*Ðx(U oâ ,"€?Œx¥*r[:poo oZ ¥*0~p *0~q *0(w+*0(@+*0~r þ(+*0 þ(+*0Ä“rc:p%¤%¤o„ oâ ,+"rc:p%¤%¤o„ ,9,-,¥®+(ïr{:p(‹ oŒ s z st * su *, +ò,¥®+(ïr¡:p(‹ oŒ s z sv *0Ð|(U oâ ,s½Œ²¥®*Ð~(U oâ ,s¿Œ³¥®*Ð(U oâ ,sÁŒ´¥®*Ѐ(U oâ ,sÃŒµ¥®*Њ(U oâ ,sÅŒ¶¥®*Ðy(U oâ ,sÇŒ·¥®*Ðx(U oâ ,sÉŒ¸¥®*Ð<(U oâ ,sËŒ¹¥®*(‚+*0~w þ(+*0Ä“rc:p%¤%¤o„ oâ ,+"rc:p%¤%¤o„ ,9,-,¥®+(ïr{:p(‹ oŒ s z sx * sy *, +ò,¥®+(ïr¡:p(‹ oŒ s z sz *0Ð~(U oâ ,s挳¥®*Ðz(U oâ ,s茾¥®*Ð(U oâ ,sꌴ¥®*Ѐ(U oâ ,s쌵¥®*Њ(U oâ ,s¥®*Ðy(U oâ ,sðŒ·¥®*Ðx(U oâ ,sòŒ¸¥®*Ð<(U oâ ,sôŒ¹¥®*(ƒ+*0~{ þ(+*0Ä“rÃ:p%¤%¤o„ oâ ,+"rÃ:p%¤%¤o„ ,9,-,¥®+(ïrÛ:p(‹ oŒ s z s| * s} *, +ò,¥®+(ïr;p(‹ oŒ s z s~ *0Ð|(U oâ ,s Œ²¥®*Ð~(U oâ ,sŒ³¥®*Ð(U oâ ,sŒ´¥®*Ѐ(U oâ ,sŒµ¥®*Њ(U oâ ,sŒ¶¥®*Ðy(U oâ ,sŒ·¥®*Ðx(U oâ ,sŒ¸¥®*Ð<(U oâ ,sŒ¹¥®*(„+*0~ þ(+*0Ä“rÃ:p%¤%¤o„ oâ ,+"rÃ:p%¤%¤o„ ,9,-,¥®+(ïrÛ:p(‹ oŒ s z s€ * s *, +ò,¥®+(ïr;p(‹ oŒ s z s‚ *0Ð|(U oâ ,s4Œ²¥®*Ð~(U oâ ,s6Œ³¥®*Ð(U oâ ,s8Œ´¥®*Ѐ(U oâ ,s:Œµ¥®*Њ(U oâ ,s<Œ¶¥®*Ðy(U oâ ,s>Œ·¥®*Ðx(U oâ ,s@Œ¸¥®*Ð<(U oâ ,sBŒ¹¥®*(…+*0~ƒ þ(+*0 ( &*0 þ(@+*0 þ(ì+*0}„ ( &*0{„ þ(+*0 þ(ì+*0 ( &*0 4*þ*0 ( &*0 ( *0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 /*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0 4*þ*0 ( &*0þ,*þ*0 ( &*0þ,*þ*0 ( &*0 þ(†+*0 ( &*0ûpÐ\(U Ћ(U oâ ,(-ŒI¥ù8„Њ(U oâ ,(2ŒN¥ù+`Ð|(U oâ ,+JÐz(U oâ ,+4Ð{(U oâ ,+Ð}(U oâ ,+(‡+€… Ð\(U Ð|(U oâ ,(.ŒJ¥ù+(ˆ+€† *0~† *0~… *0 ( &*0 þ(‰+*0 ( &*0 þ(‰+*0 ( &*0ÓpÐ\(U Ð{(U oâ ,Œ{¥\8Ð}(U oâ ,Œ}¥\8zÐD(U oâ ,ŒD¥\+ZÐ[(U oâ ,!Œ[¥\+2Ћ(U oâ ,!ÓŒ‹¥\+ (Š+€‡ *0~‡ *0 ( &*0öpÐ\(U Ð{(U oâ ,Œ{¥\8ÀÐ}(U oâ ,Œ}¥\8ÐD(U oâ ,ŒD¥\8zÐ[(U oâ ,!Œ[¥\+RЋ(U oâ ,!ÓŒ‹¥\+)Ð|(U oâ ,Œ|¥\+ (‹+€ˆ *0~ˆ *0 ( &*0é•Ð\(U Ð#(U oâ ,sšŒÌ¥W8¯Ðy(U oâ ,sœŒÍ¥W8ˆÐx(U oâ ,sžŒÎ¥W+dr';p%¤%ÐD(U ¤o„ , s‰ +-,¥W+(ïr?;p(‹ oŒ s z sŠ €‹ *0~‹ *(Œ *0( (Ž *( *0l[*( *0k[*:(‘ }’ *0 3{’ %Œ\¤%ŒD¤o ¥\*:(“ }” *0{” þo{ *:(• }– *0—{– o— s˜ *0 ( &*0˜Ð\(U Ð](U Ðc(U oâ , oâ +9ÆÐ{(U oâ ,s³ŒÓ¥<8¨Ð}(U oâ ,sµŒÔ¥<8ÐD(U oâ ,s·ŒÕ¥<+]Ð[(U oâ ,s¹ŒÖ¥<+9Ћ(U oâ ,s»Œ×¥<+(Œ++ (+€™ *0~™ *:(Ù }š *0{š þok *:( }› *0š{› o# sœ *:(V } *0 3{ %Œ\¤%Œ]¤o ¥c*:(Ù }ž *0{ž þok *:( }Ÿ *0š{Ÿ o# s  *(6 *0Xg*(2 *0Xh*(& *0X*(( *0X*(. *0X*(8 *0XÒ*(4 *0XÑ*(, *0X*(* *0X*(0 *0X*( *0X*(– *0X*(¡ *0 (À *0 ( &*09˜Ð\(U Ð](U Ðc(U oâ , oâ +9íÐ{(U oâ ,sڌӥ<8ÏÐ}(U oâ ,s܌ԥ<8¨ÐD(U oâ ,sތե<8Ð[(U oâ ,sàŒÖ¥<+]Ћ(U oâ ,sâŒ×¥<+9Ð|(U oâ ,s䌲¥<+(Ž++ (+€¢ *0~¢ *:(Ù }£ *0{£ þok *:( }¤ *0š{¤ o# s¥ *:(V }¦ *0 3{¦ %Œ\¤%Œ]¤o ¥c*:(Ù }§ *0{§ þok *:( }¨ *0š{¨ o# s© *(6 *0Ö³*(2 *0Öµ*(& *0Ö*(( *0Ö*(. *0Ö*(8 *0׆*(4 *0ׇ*(ª *0ׇ*(, *0×*(* *0×*(0 *0×*( *0X*(– *0X*(¡ *0 (À *0 ( &*0˜Ð\(U Ð](U Ðc(U oâ , oâ +9ÆÐ{(U oâ ,sŒÓ¥<8¨Ð}(U oâ ,sŒÔ¥<8ÐD(U oâ ,sŒÕ¥<+]Ð[(U oâ ,s ŒÖ¥<+9Ћ(U oâ ,s Œ×¥<+(++ (‘+€« *0~« *:(Ù }¬ *0{¬ þok *:( }­ *0š{­ o# s® *:(V }¯ *0 3{¯ %Œ\¤%Œ]¤o ¥c*:(Ù }° *0{° þok *:( }± *0š{± o# s² *(6 *0Zg*(2 *0Zh*(& *0Z*(( *0Z*(. *0Z*(8 *0ZÒ*(4 *0ZÑ*(, *0Z*(* *0Z*(0 *0Z*( *0Z*(– *0Z*(¡ *0 (À *0 ( &*0˜Ð\(U Ð](U Ðc(U oâ , oâ +9ÆÐ{(U oâ ,s*ŒÓ¥<8¨Ð}(U oâ ,s,ŒÔ¥<8ÐD(U oâ ,s.ŒÕ¥<+]Ð[(U oâ ,s0ŒÖ¥<+9Ћ(U oâ ,s2Œ×¥<+(’++ (“+€³ *0~³ *:(Ù }´ *0{´ þok *:( }µ *0š{µ o# s¶ *:(V }· *0 3{· %Œ\¤%Œ]¤o ¥c*:(Ù }¸ *0{¸ þok *:( }¹ *0š{¹ o# sº *(6 *0س*(2 *0ص*(& *0Ø*(( *0Ø*(. *0Ø*(8 *0Ù†*(4 *0Ù‡*(, *0Ù*(* *0Ù*(0 *0Ù*( *0Z*(– *0Z*(¡ *0 (À *0ŒŒþ*0 Œ(› *0-”(Y o¿ (ïrg;p(‹ oŒ (] s½ z0~*0Ë›uá 9uuá ,   (R*u,?u,(S*u4,  (Q*(”+*u4,í +Ýu,(u, +¡u4,¹ +©u4,§ 8”ÿÿÿ0Íœ(+-U(+-8¬(+-+ï¥x ¥x (Ø , (Ø +, { +,(Gz8f(+-'(+-+¡(+-8”ÿÿÿ¥x ¥x +£¥y ¥y (Ú , (Ú +, { +,(Gzþo *0iŸ9\9Tu< 9ßu< ,   ( *u4,þ(H*u.,¥ þo{*u,  þ(I*(ž+:·(Ÿ+-au.,$  ¥ o{  /* 1**u  ,   o   /* 1**(”+*(Ÿ+-'u.,  8’ÿÿÿu  ,Ð  +°¥Š ¥Š 4* þ*(ž+:(Ÿ+--u.,  89ÿÿÿu  9tÿÿÿ  8Qÿÿÿ(Ÿ+--u.,  8ÿÿÿu  9?ÿÿÿ  8ÿÿÿ¥Š ¥Š8gÿÿÿ¥‹¥‹/*þ*u4, 83þÿÿu., 8<þÿÿu,  8Hþÿÿ(ž+:(Ÿ+--u.,  8Qþÿÿu  9Œþÿÿ  8iþÿÿ(Ÿ+--u.,  8þÿÿu  9Wþÿÿ  84þÿÿ¥Š ¥Š8þÿÿ(ž+:(Ÿ+--u.,  8Çýÿÿu  9þÿÿ  8ßýÿÿ(Ÿ+--u.,  8’ýÿÿu  9Íýÿÿ  8ªýÿÿ¥Š ¥Š8õýÿÿ¥‹¥‹8‰þÿÿ*,**0@Z2*(» (» (J ,*!X+À0 dZ 2*X X(¼ X X(¼ (J ,* !X +œ0 ~¡      2* !(L  , * !X 8‚ÿÿÿ0c¢2*(½ (½ /+þ ,*(/ (/ /+þ , *X+0 }Z2*X¤[Y3(¾ (¾ (J+X(P ,*!X8ƒÿÿÿ0 2Z2*(/ j!(½ (O*0 Ϥ(- 3 (- þ+,?(¿ (¿ /+þ ,* !(K*(- 3 (- þ+9ç(½ (½ /+þ ,*(½ (½ /+þ,*(/ j (/ j (/ j (/ j   /+  þ  , *  /+  þ,*         !(M*(- (-   /+ þ ,*(-  (N,*[ (P*0RlŽi Ži /+þ ,*  /* £ £(J,  +Ù X +Ò*0a¥Ži Ži /+þ ,*  /9 £| £|/+þ,  +Ê X +Ã*0~*0~*0ŒŒþoÀ *0(U¥ þ(|+*04ð(T¥ (|+þ Þt (G(ß , Þþ*04ð(T¥ (|+þ Þt (G(ß , Þþ*04ð(T¥ (|+þ Þt (G(ß , Þþ*04ð(T¥ (|+þ Þt (G(ß , Þþ*0D¦Ži Ži þ -*  /% £| £|þ- +Þ X +×*0D¦Ži Ži þ -*  /% £D £Dþ- +Þ X +×*0', þþ+, þþ+,*þ*0H¦Ži Ži þ -*  /) £x £x(^- +Ú X +Ó*0', þþ+, þþ+,*þ*0H¦Ži Ži þ -*  /) £y £y(`- +Ú X +Ó*0D¦Ži Ži þ -*  /% £z £zþ- +Þ X +×*0D¦Ži Ži þ -*  /% £[ £[þ- +Þ X +×*0Tªuá 9¿uá ,   (m*u9çu,(\*uø9öuø  ,     (]*uù  9ûuù  ,  (c*uú9ûuú,(b*uû9ƒuû,(_*uü,Euü,(a*u4,(l*þo¢ *u4,ê+Øuü,(uü, +šu4,µ+£u4,£8Žÿÿÿuû,ouû, 8!ÿÿÿuü,1uü, 8'ÿÿÿu49?ÿÿÿ8*ÿÿÿu49'ÿÿÿ8ÿÿÿuü,1uü, 8Ñþÿÿu49éþÿÿ8Ôþÿÿu49Ñþÿÿ8¼þÿÿuú9ëuú, 8þÿÿuû,ouû, 8&þÿÿuü,1uü, 8,þÿÿu49Dþÿÿ8/þÿÿu49,þÿÿ8þÿÿuü,1uü, 8Öýÿÿu49îýÿÿ8Ùýÿÿu49Öýÿÿ8Áýÿÿuû,ouû, 8Týÿÿuü,1uü, 8Zýÿÿu49rýÿÿ8]ýÿÿu49Zýÿÿ8Eýÿÿuü,1uü, 8ýÿÿu49ýÿÿ8ýÿÿu49ýÿÿ8ïüÿÿuù  9æuù  ,   8#üÿÿuú9ëuú, 8(üÿÿuû,ouû, 80üÿÿuü,1uü, 86üÿÿu49Nüÿÿ89üÿÿu496üÿÿ8!üÿÿuü,1uü, 8àûÿÿu49øûÿÿ8ãûÿÿu49àûÿÿ8Ëûÿÿuû,ouû, 8^ûÿÿuü,1uü, 8dûÿÿu49|ûÿÿ8gûÿÿu49dûÿÿ8Oûÿÿuü,1uü, 8ûÿÿu49&ûÿÿ8ûÿÿu49ûÿÿ8ùúÿÿuú9ëuú, 8[úÿÿuû,ouû, 8cúÿÿuü,1uü, 8iúÿÿu49úÿÿ8lúÿÿu49iúÿÿ8Túÿÿuü,1uü, 8úÿÿu49+úÿÿ8úÿÿu49úÿÿ8þùÿÿuû,ouû, 8‘ùÿÿuü,1uü, 8—ùÿÿu49¯ùÿÿ8šùÿÿu49—ùÿÿ8‚ùÿÿuü,1uü, 8Aùÿÿu49Yùÿÿ8Dùÿÿu49Aùÿÿ8,ùÿÿuø9Üuø  ,    82øÿÿuù  9æuù  ,   87øÿÿuú9ëuú, 8<øÿÿuû,ouû, 8Døÿÿuü,1uü, 8Jøÿÿu49bøÿÿ8Møÿÿu49Jøÿÿ85øÿÿuü,1uü, 8ô÷ÿÿu49 øÿÿ8÷÷ÿÿu49ô÷ÿÿ8ß÷ÿÿuû,ouû, 8r÷ÿÿuü,1uü, 8x÷ÿÿu49÷ÿÿ8{÷ÿÿu49x÷ÿÿ8c÷ÿÿuü,1uü, 8"÷ÿÿu49:÷ÿÿ8%÷ÿÿu49"÷ÿÿ8 ÷ÿÿuú9ëuú, 8oöÿÿuû,ouû, 8wöÿÿuü,1uü, 8}öÿÿu49•öÿÿ8€öÿÿu49}öÿÿ8höÿÿuü,1uü, 8'öÿÿu49?öÿÿ8*öÿÿu49'öÿÿ8öÿÿuû,ouû, 8¥õÿÿuü,1uü, 8«õÿÿu49Ãõÿÿ8®õÿÿu49«õÿÿ8–õÿÿuü,1uü, 8Uõÿÿu49mõÿÿ8Xõÿÿu49Uõÿÿ8@õÿÿuù  9æuù  ,   8tôÿÿuú9ëuú, 8yôÿÿuû,ouû, 8ôÿÿuü,1uü, 8‡ôÿÿu49Ÿôÿÿ8Šôÿÿu49‡ôÿÿ8rôÿÿuü,1uü, 81ôÿÿu49Iôÿÿ84ôÿÿu491ôÿÿ8ôÿÿuû,ouû, 8¯óÿÿuü,1uü, 8µóÿÿu49Íóÿÿ8¸óÿÿu49µóÿÿ8 óÿÿuü,1uü, 8_óÿÿu49wóÿÿ8bóÿÿu49_óÿÿ8Jóÿÿuú9ëuú, 8¬òÿÿuû,ouû, 8´òÿÿuü,1uü, 8ºòÿÿu49Òòÿÿ8½òÿÿu49ºòÿÿ8¥òÿÿuü,1uü, 8dòÿÿu49|òÿÿ8gòÿÿu49dòÿÿ8Oòÿÿuû,ouû, 8âñÿÿuü,1uü, 8èñÿÿu49òÿÿ8ëñÿÿu49èñÿÿ8Óñÿÿuü,1uü, 8’ñÿÿu49ªñÿÿ8•ñÿÿu49’ñÿÿ8}ñÿÿu9Èu, 8Uðÿÿuø9Üuø  ,    8Zðÿÿuù  9æuù  ,   8_ðÿÿuú9ëuú, 8dðÿÿuû,ouû, 8lðÿÿuü,1uü, 8rðÿÿu49Šðÿÿ8uðÿÿu49rðÿÿ8]ðÿÿuü,1uü, 8ðÿÿu494ðÿÿ8ðÿÿu49ðÿÿ8ðÿÿuû,ouû, 8šïÿÿuü,1uü, 8 ïÿÿu49¸ïÿÿ8£ïÿÿu49 ïÿÿ8‹ïÿÿuü,1uü, 8Jïÿÿu49bïÿÿ8Mïÿÿu49Jïÿÿ85ïÿÿuú9ëuú, 8—îÿÿuû,ouû, 8Ÿîÿÿuü,1uü, 8¥îÿÿu49½îÿÿ8¨îÿÿu49¥îÿÿ8îÿÿuü,1uü, 8Oîÿÿu49gîÿÿ8Rîÿÿu49Oîÿÿ8:îÿÿuû,ouû, 8Ííÿÿuü,1uü, 8Óíÿÿu49ëíÿÿ8Öíÿÿu49Óíÿÿ8¾íÿÿuü,1uü, 8}íÿÿu49•íÿÿ8€íÿÿu49}íÿÿ8híÿÿuù  9æuù  ,   8œìÿÿuú9ëuú, 8¡ìÿÿuû,ouû, 8©ìÿÿuü,1uü, 8¯ìÿÿu49Çìÿÿ8²ìÿÿu49¯ìÿÿ8šìÿÿuü,1uü, 8Yìÿÿu49qìÿÿ8\ìÿÿu49Yìÿÿ8Dìÿÿuû,ouû, 8×ëÿÿuü,1uü, 8Ýëÿÿu49õëÿÿ8àëÿÿu49Ýëÿÿ8Èëÿÿuü,1uü, 8‡ëÿÿu49Ÿëÿÿ8Šëÿÿu49‡ëÿÿ8rëÿÿuú9ëuú, 8Ôêÿÿuû,ouû, 8Üêÿÿuü,1uü, 8âêÿÿu49úêÿÿ8åêÿÿu49âêÿÿ8Íêÿÿuü,1uü, 8Œêÿÿu49¤êÿÿ8êÿÿu49Œêÿÿ8wêÿÿuû,ouû, 8 êÿÿuü,1uü, 8êÿÿu49(êÿÿ8êÿÿu49êÿÿ8ûéÿÿuü,1uü, 8ºéÿÿu49Òéÿÿ8½éÿÿu49ºéÿÿ8¥éÿÿuø9Üuø  ,    8«èÿÿuù  9æuù  ,   8°èÿÿuú9ëuú, 8µèÿÿuû,ouû, 8½èÿÿuü,1uü, 8Ãèÿÿu49Ûèÿÿ8Æèÿÿu49Ãèÿÿ8®èÿÿuü,1uü, 8mèÿÿu49…èÿÿ8pèÿÿu49mèÿÿ8Xèÿÿuû,ouû, 8ëçÿÿuü,1uü, 8ñçÿÿu49 èÿÿ8ôçÿÿu49ñçÿÿ8Üçÿÿuü,1uü, 8›çÿÿu49³çÿÿ8žçÿÿu49›çÿÿ8†çÿÿuú9ëuú, 8èæÿÿuû,ouû, 8ðæÿÿuü,1uü, 8öæÿÿu49çÿÿ8ùæÿÿu49öæÿÿ8áæÿÿuü,1uü, 8 æÿÿu49¸æÿÿ8£æÿÿu49 æÿÿ8‹æÿÿuû,ouû, 8æÿÿuü,1uü, 8$æÿÿu49<æÿÿ8'æÿÿu49$æÿÿ8æÿÿuü,1uü, 8Îåÿÿu49æåÿÿ8Ñåÿÿu49Îåÿÿ8¹åÿÿuù  9æuù  ,   8íäÿÿuú9ëuú, 8òäÿÿuû,ouû, 8úäÿÿuü,1uü, 8åÿÿu49åÿÿ8åÿÿu49åÿÿ8ëäÿÿuü,1uü, 8ªäÿÿu49Âäÿÿ8­äÿÿu49ªäÿÿ8•äÿÿuû,ouû, 8(äÿÿuü,1uü, 8.äÿÿu49Fäÿÿ81äÿÿu49.äÿÿ8äÿÿuü,1uü, 8Øãÿÿu49ðãÿÿ8Ûãÿÿu49Øãÿÿ8Ããÿÿuú9ëuú, 8%ãÿÿuû,ouû, 8-ãÿÿuü,1uü, 83ãÿÿu49Kãÿÿ86ãÿÿu493ãÿÿ8ãÿÿuü,1uü, 8Ýâÿÿu49õâÿÿ8àâÿÿu49Ýâÿÿ8Èâÿÿuû,ouû, 8[âÿÿuü,1uü, 8aâÿÿu49yâÿÿ8dâÿÿu49aâÿÿ8Lâÿÿuü,1uü, 8 âÿÿu49#âÿÿ8âÿÿu49 âÿÿ8öáÿÿ0î¬9á9Ùu< 9u< ,   (Š *u4,þ(d*u/,þo|*(+-X(+- þo¢ *(+-+ì¥x¥x ,   þþ+, þþ+,* þ*(+-)(+-+ž(+-8‘ÿÿÿ¥x¥x +£¥y ¥y ,   þþ+,   þþ+,*  þ*u4, 8óþÿÿu/, 8ýþÿÿ(+-/(+-8ÿÿÿ(+-8÷þÿÿ¥x¥x 8ÿÿÿ(+-/(+-8Íþÿÿ(+-8Àþÿÿ¥x¥x 8Ïþÿÿ¥y ¥y 8'ÿÿÿ*,**0 D2*(» (» (e, !X+¿*0h 2* X X(¼  X X(¼ (e,4  !X  +›*0‚®        2*  !(g,7  !X  8ÿÿÿ*0@2*(½ (½ 3(/ (/ þ+,X+Ã*0 ‚ 2*X¤[Y3(¾ (¾ (e+X(k,3!X  8€ÿÿÿ*0 5Z2*(/ j!(½ (j*0 w¯(- 3 (- þ+,5(¿ (¿ 3!  !(f**(- 3 (- þ+9²(½ (½ @™(½ (½ @|(/ j(/ j (/ j (/ j  3   þ+,?          !(h****(- (- 3J(- (i,*[  (k***0I¦Ži Ži þ -*  /* £ £(e- +Ù X +Ò*0~*0~*0(nŒŒþoÁ *0(oŒŒþoÁ *0ŒŒþoÁ *0*0~*0~*0OlŽi Y 1 +  þþ,+ (T o bX w ZX Y +Ê*0IlŽi Y 1 +  þþ,% £|bX w ZX Y +Ð*0IlŽi Y 1 +  þþ,% £DbX w ZX Y +Ð*0JlŽi Y 1 +  þþ,& £[ibX w ZX Y +Ï*0‘°(- YE(1 (1 bX ¦X*(/ (. XY X1X + þþ,- (T o bX wZX Y +Æ *0±9•u4 ,g uá ,   (v*u, (w*uø, (x*uù,   (y*(z*u/  ,   þo}*þoS **0(u¥$Œþ({*0s•¥$Œþ({*0Œþ({*0%²(- (, (+ bX(•+a*0=³(Æ (Å (Ä (+bX(•+a b X(–+a*0X´(à (Ä (Å (Æ (+bX(•+abX(–+bX (—+aa*0r¶(Ç (È (É (Ê (Ë (+bX(•+abX(–+bX (—+aabX(˜+a*04·(- (, (- (, ({+,  þ(™+**0U¸(Æ (Å (Ä (Æ (Å (Ä  ({+, (™++, þ(š+**0v¹(à (Ä (Å (Æ (à (Ä (Å (Æ ({+, (™++, (š++,  þ(›+**0—º(Ç (È (É (Ê (Ë (Ç (È (É (Ê (Ë  ({+, (™++, (š++,  (›++,  þ(œ+**09»(- (, (- (, (|+,* þ(+*0\¼(Æ (Å (Ä (Æ (Å (Ä  (|+,*(+,*þ(ž+*0½(à (Ä (Å (Æ (à (Ä (Å (Æ (|+,*(+  , *(ž+  , * þ(Ÿ+*0¢¾(Ç (È (É (Ê (Ë (Ç (È (É (Ê (Ë  (|+  , *(+  , *(ž+  , * (Ÿ+  , * þ( +*0( &} *0{ *0 þ(J*0 þ(J*0 ( &*0 þ(e*0(ïr;p(‹ oŒ sÌ z0 ( &*0 þ(e*0(ïr;p(‹ oŒ sÌ z0( &}*0#|{(¦ -*{s•*0¥$þ(e*0){Y}{1¥$þ({**0 ( &*0¥$þ(e*0¥$þ({*0 ( &*0¥$þ(e*0¥$þ({*0*0*0*0*0*0(Zþ,+~Ì þþ,¥*sÍ z0¥*0uþ,*þ,*~Ì þ*0 uþ*0LŒ, þoê **0(ïrKp(‹ oŒ sÌ z0(ïr³;p(‹ oŒ sÌ z0%Œ,*(ïrKp(‹ oŒ sÌ z0 sÕ *0 (¾ *0(¡+*0 £*0 ¤*0 (  *0 (¡ *0 r¿/+ /+ s¢ Y 2AY2&XX(  (¡ XX3ÚX X3¿*0@á Y 24 Y  2X X (  (¡ X X3áX X3Ì*0 (£ *0 (¤ *0 ¨À/+ /+ /+ s¥ Y2dY2H Y 2,  XX X(£ (¤  X  X3ÔXX3¸XX3œ *0 dl Y 2W Y  2BY2)X XX (£ (¤ XX3× X X3¾X X3©*0 (¢ *0(  *0 ãÁ/+ /+ /+ /+  sŸ Y?‹Y2l Y   2P Y   24  XX X X(¢ (   X   X3Ì X   X3°XX3”XX@uÿÿÿ*0 Ž Y ?~ Y  2fY2MY20X XXX  (¢ (  XX3ÐXX3³ X X3šX X@‚ÿÿÿ*0 ( &*0ÅÃÐ\(U oÏ ,8£Ð (U oQ Ži-8…Ð(U oâ ,8lÐU(U oÏ ,+VÐ (U oQ Ži1+<Ð"(U oQ Ži-+!£ ¥"(3_-+€Ð *0~Ð *0,**0,**0,**0,**0 rÓ;psé z0 r;<psé z0~*0~*0~*0~*0~*0}ÄŽiY 1\ ZX/OZ X 3£D¤D +)£DbX£Da¤D 3 +X +©+ £D bX£Da*0HÊ{Ñ {Ñ @.(Ò E3j¡Øt t ({Ó  {Ó þ(|+*tt({Ô  {Ô    þ(+*t t ( {Õ   {Õ  þ(ž+*tt({Ö {Ö þ(Ÿ+*tt({× {× þ( +*Y*00Ë¥þ9{Ñ {Ñ @(Ò E+Z‰¸t t {Ó  {Ó þ(|+*tt{Ô {Ô   þ(+*t t  {Õ   {Õ    þ(ž+*tt{Ö {Ö þ(Ÿ+*tt{× {× þ( +*Y**0/Íu 9{Ñ {Ñ @(Ò E-\‹ºt t {Ó {Ó þ({+*tt{Ô  {Ô    þ(™+*t t  {Õ   {Õ  þ(š+*tt{Ö {Ö þ(›+*tt{× {× þ(œ+***0\Õ(Ø E/d™Ît t ( {Ù {Ù  þ(|+*t t ( {Ú {Ú þ(+*t  t  (  {Û   {Û    þ(ž+*t  t (  {Ü {Ü þ(Ÿ+*t t ( {Ý {Ý þ( +*t t ( {Þ {Þ þ(¢+*0SÖ{ß {ß @9(Ø E+Z‰¸çt t {Ù  {Ù þ(|+*t t {Ú {Ú   þ(+*t  t   {Û   {Û    þ(ž+*t t {Ü {Ü þ(Ÿ+*t t {Ý {Ý þ( +*t t {Þ {Þ þ(¢+*Y*0F× (Ø E-\¾ït  ¹y7ž{Ù Œ({bcXXX *t   ¹y7ž {Ú ŒP({bcXXX *t  ¹y7ž{Û Œ$({bcXXX *t  ¹y7ž{Ü Œ+({bcXXX *t   ¹y7ž {Ý   Œ({bcXXX *t   ¹y7ž {Þ   Œ({bcXXX *0QÖ{ß {ß @9(Ø E+Z‰¸çt t {Ù  {Ù þ({+*t t {Ú {Ú   þ(™+*t  t   {Û   {Û    þ(š+*t t {Ü {Ü þ(›+*t t {Ý {Ý þ(œ+*t t {Þ {Þ þ(£+**0KÖ{ß {ß @3(Ø E*X†´ât t {Ù  {Ù þ(z+*t t {Ú {Ú   þ(¤+*t  t   {Û   {Û    þ(¥+*t t {Ü {Ü þ(¦+*t t {Ý {Ý þ(§+*t t {Þ {Þ þ(¨+**0•à(à E/d™Î8t t ( {á {á  þ(|+*tt( {â {â þ(+*t t (  {ã   {ã    þ(ž+*t t(  {ä {ä þ(Ÿ+*tt( {å {å þ( +*tt( {æ {æ þ(¢+*tt( {ç {ç þ(©+*0iá(à E'V…´ãt t {á {á  þ(|+*tt{â {â þ(+*tt {ã   {ã    þ(ž+*t t  {ä  {ä þ(Ÿ+*tt{å {å þ( +*tt{æ {æ þ(¢+*tt{ç {ç þ(©+*0{â (à E-\¾ï t  ¹y7ž{á Œ({bcXXX *t  ¹y7ž {â ŒP({bcXXX *t ¹y7ž{ã Œ$({bcXXX *t ¹y7ž{ä Œ+({bcXXX *t  ¹y7ž {å   Œ({bcXXX *t  ¹y7ž {æ   Œ({bcXXX *t  ¹y7ž {ç Œ({bcXXX *0iá(à E'V…´ãt t {á {á  þ({+*tt{â {â þ(™+*tt {ã   {ã    þ(š+*t t  {ä  {ä þ(›+*tt{å {å þ(œ+*tt{æ {æ þ(£+*tt{ç {ç þ(ª+*0bá(à E&T‚°Þ t t {á {á  þ(z+*tt{â {â þ(¤+*tt {ã   {ã    þ(¥+*t t  {ä  {ä þ(¦+*tt{å {å þ(§+*tt{æ {æ þ(¨+*tt{ç {ç þ(«+*07‰{Ö ,. {Ö {} /¤X+Ë**0ª(ïr±<p(‹ oŒ €(ïrß<p(‹ oŒ €(ïr=p(‹ oŒ €(ïr'=p(‹ oŒ €(ïrÉp(‹ oŒ €s† €s‹€s‹€s€s’€s™€sœ€(U¥ €(u¥$€(t¥$€sk€ sm€!so€"sq€#ss€$su€%sw€&sy€'s{€(s}€)s€*s€+sƒ€,s…€-s‡€.rC=psÌ s…€Ž*:(Ù }è *0{è þoé *0}ê ( *0{ê þok *:(Ù }ë *0{ë þoé *0}ì ( *0{ì þok *:(É }í *0{í oî *:(Ù }ï *0{ï þoé *:(V }ð *0{ð s þoñ *:(, }ò *0{ò s8 þoó *:(7 }ô *0 {ô sõ þoö *:(M }÷ *0 {÷ sø þoù *0~:*0rp*0r«+p*0rÅ*p*0rç*p*0rwp*0rƒ'p*0rW'p*0r¯'p*0r³=p*0rÛ=p*0r >p*0r‡+p*0rÉp*0r,p*0r=p*0r'p*0rMp*0r±&p*0rs p*0r'=p*0r5>p*0r‰ p*0r¯ p*0rc>p*0r7 p*0r_ p*0ráp*0r p*0r p*0rƒ>p*0rù,p*0rw p*0r±<p*0rg;p*0r;p*0r1:p*0r?;p*0r¡:p*0r{:p*0r;p*0rÛ:p*0r>p*0r 8p*0r78p*0rY8p*0ry8p*0rKp*0r³;p*0rß<p*0rop*0rû%p*0rp*0r£p*0r1p*0rÏ&p*0r½%p*0rß%p*0r&p*0rI&p*0ro&p*0r“&p*0rÉp*0rƒp*0ru*p*0r p*0rŸp*0rÃp*0rýp*0r?p*0r}p*0rçp*0rµp*0r#p*0r p*0r3 p*0rip*0r$p*0r}%p*0rÏ+p*0rE p*0r=,p*0rp*0rSp*0r“p*0r p*0r1p*0rÃp*0r™p*0r‹p*0rÛp*0rµp*0rp*0rýp*0rp*0rp*0rWp*0rap*0r•p*0rÉp*0r›p*0rqp*0rp*0rYp*0r±p*0rãp*0rp*0rp*0rMp*0r+p*0rµ>p*0rYp*0ríp*0rEp*0r«p*0rÝp*0rp*0rïp*0r/p*0r¿p*0r“p*0r™p*0r!p*0r_p*0r•p*0r[p*0rp*0rsp*0rëp*0rqp*0rÑp*0rùp*0r¡p*0r·p*0r! p*0(ï(‹ þoŒ *0(ï(‹ oŒ (] *0(ï(‹ oŒ (ú *0(ï(‹ oŒ (Î *0›rÓ>p(û sü €:*sý *"sv *&s **sþ *2sÿ *:s *Bs *0 s s *"bXa*:(‰(‰*R(‰(‰(‰*F(‹(‰*b(‹(‰(‰*j(‹(Š(‰*r(‹(‹(‰*{ *:( } *6( o|*0.ä-*u+ -*{ Œ\{ Œ\oÁ *6( o{*0Wå-*u+ -+rá>p (Y o¿ ¢(Kr+?ps z{ Œ\{ Œ\oÀ *2( o}*J{ Œ\o *"o}*0üsÍ rŒ"poÎ &o~*–{ Œ\o &rCpoÎ &o¿ * *{ *{ *V( } } *6( o|*0Næ-*u -*{ Œ\{ Œ\oÁ ,{ Œ]{ Œ]oÁ **6( o{*0{ç-*u -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ *2( o}*¢{ Œ\o { Œ]o (‰*"o}*0üsÍ rŒ"poÎ &o~*0C{ Œ\o &r7?poÎ &{ Œ]o &rCpoÎ &o¿ * *{ *{ *{ *r( } } } *6( o|*0lé-*u; -*{ Œ\{ Œ\oÁ ,;{ Œ]{ Œ]oÁ ,{ Œc{ ŒcoÁ **6( o{*0ê-*u; -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ ,*{ Œc{ ŒcoÀ *2( o}*æ{ Œ\o { Œ]o { Œco (Š*"o}*0üsÍ rŒ"poÎ &o~*0a{ Œ\o &r7?poÎ &{ Œ]o &r7?poÎ &{ Œco &rCpoÎ &o¿ * *{ *{ *{ *{ *’( } } } } *6( o|*0Šì-*u! -*{ Œ\{ Œ\oÁ ,Y{ Œ]{ Œ]oÁ ,;{ Œc{ ŒcoÁ ,{ Œk{ ŒkoÁ **6( o{*0¿í-*u! -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ ,*{ Œc{ ŒcoÀ ,*{ Œk{ ŒkoÀ *2( o}*0J{ Œ\o { Œ]o { Œco { Œko (‹*"o}*0üsÍ rŒ"poÎ &o~*0{ Œ\o &r7?poÎ &{ Œ]o &r7?poÎ &{ Œco &r7?poÎ &{ Œko &rCpoÎ &o¿ * *{ *{ *{ *{ *{ *²( } } } } } *6( o|*0«ï-*u$ -*{ Œ\{ Œ\oÁ 9w{ Œ]{ Œ]oÁ ,Y{ Œc{ ŒcoÁ ,;{ Œk{ ŒkoÁ ,{ Œu{ ŒuoÁ **6( o{*0áð-*u$ -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ ,*{ Œc{ ŒcoÀ ,*{ Œk{ ŒkoÀ ,*{ Œu{ ŒuoÀ *2( o}*0[{ Œ\o { Œ]o { Œco { Œko { Œuo (Œ*"o}*0üsÍ rŒ"poÎ &o~*0{ Œ\o &r7?poÎ &{ Œ]o &r7?poÎ &{ Œco &r7?poÎ &{ Œko &r7?poÎ &{ Œuo &rCpoÎ &o¿ * *{ *{ *{ *{ *{ *{ *Ò( } } } } } } *6( o|*0Ìò-*u. -*{ Œ\{ Œ\oÁ 9˜{ Œ]{ Œ]oÁ 9w{ Œc{ ŒcoÁ ,Y{ Œk{ ŒkoÁ ,;{ Œu{ ŒuoÁ ,{ Œ/{ Œ/oÁ **6( o{*0ó-*u. -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ ,*{ Œc{ ŒcoÀ ,*{ Œk{ ŒkoÀ ,*{ Œu{ ŒuoÀ ,*{ Œ/{ Œ/oÀ *2( o}*0l{ Œ\o { Œ]o { Œco { Œko { Œuo { Œ/o (*"o}*0üsÍ rŒ"poÎ &o~*0»{ Œ\o &r7?poÎ &{ Œ]o &r7?poÎ &{ Œco &r7?poÎ &{ Œko &r7?poÎ &{ Œuo &r7?poÎ &{ Œ/o &rCpoÎ &o¿ * *{ *{ *{ *{ *{ *{! *{" *ò( } } } } } }! }" *6( o|*0íõ-*u0 -*{ Œ\{ Œ\oÁ 9¹{ Œ]{ Œ]oÁ 9˜{ Œc{ ŒcoÁ 9w{ Œk{ ŒkoÁ ,Y{ Œu{ ŒuoÁ ,;{! Œ/{! Œ/oÁ ,{" Œ1{" Œ1oÁ **6( o{*0%ö-*u0 -+rá>p (Y o¿ ¢(Kr+?ps z { Œ\{ Œ\oÀ ,*{ Œ]{ Œ]oÀ ,*{ Œc{ ŒcoÀ ,*{ Œk{ ŒkoÀ ,*{ Œu{ ŒuoÀ ,*{! Œ/{! Œ/oÀ ,*{" Œ1{" Œ1oÀ *2( o}*0}{ Œ\o { Œ]o { Œco { Œko { Œuo {! Œ/o {" Œ1o (Ž*"o}*0üsÍ rŒ"poÎ &o~*0Ù{ Œ\o &r7?poÎ &{ Œ]o &r7?poÎ &{ Œco &r7?poÎ &{ Œko &r7?poÎ &{ Œuo &r7?poÎ &{! Œ/o &r7?poÎ &{" Œ1o &rCpoÎ &o¿ * *{# *{$ *{% *{& *{' *{( *{) *{* *0b( Œ3u0-r=?p(Ls½ z}# }$ }% }& }' }( }) }* *6( o|*0ø-*u2 -*{# Œ\{# Œ\oÁ 9Ú{$ Œ]{$ Œ]oÁ 9¹{% Œc{% ŒcoÁ 9˜{& Œk{& ŒkoÁ 9w{' Œu{' ŒuoÁ ,Y{( Œ/{( Œ/oÁ ,;{) Œ1{) Œ1oÁ ,{* Œ3{* Œ3oÁ **6( o{*0Gù-*u2 -+rá>p (Y o¿ ¢(Kr+?ps z {# Œ\{# Œ\oÀ ,*{$ Œ]{$ Œ]oÀ ,*{% Œc{% ŒcoÀ ,*{& Œk{& ŒkoÀ ,*{' Œu{' ŒuoÀ ,*{( Œ/{( Œ/oÀ ,*{) Œ1{) Œ1oÀ ,*{* Œ3{* Œ3oÀ *2( o}*0 û{* Œ3t0 o€2o*o€Y  YE#R’ãE¸87{) Œ1o o(‰*{( Œ/o {) Œ1o o(Š*{' Œuo {( Œ/o {) Œ1o o(‹*{& Œko {' Œuo {( Œ/o {) Œ1o o(Œ*{% Œco {& Œko {' Œuo {( Œ/o {) Œ1o o(*{$ Œ]o {% Œco {& Œko {' Œuo {( Œ/o {) Œ1o o(Ž*{# Œ\o {$ Œ]o {% Œco {& Œko {' Œuo {( Œ/o {) Œ1o o(**"o}*0üsÍ rŒ"poÎ &o~*0é{# Œ\o &r7?poÎ &{$ Œ]o &r7?poÎ &{% Œco &r7?poÎ &{& Œko &r7?poÎ &{' Œuo &r7?poÎ &{( Œ/o &r7?poÎ &{) Œ1o &r7?poÎ &{* Œ3t0o~*b{* Œ3t0o€X*BSJB v2.0.50727l$Í#~ÍÜ+#Stringslù˜?#US9#GUID9üÕ#BlobW_¶ ú3•9_ = * ‡¶û8˜¨è4o¶ «5un nÁnõn1n>n™ n#  J / Ø n)  5 / O n­ / » / Ê /  nn *Nn Ï 2ån&/ 'nw'e'§'e'P(e'Å.e'm// /e'°5 þ9e'êE/ LnF\ –^v^°^v^¹^v^ó^Ô^_n_e':_e'S_e'j_e'…_e'±_ž_¿Å_•`n´`nÌ`nÊFn%cv^@cž_]cž_xcž_ dž_ñhÔhiÔh?in[iFii|iÀin0jn“jž_åjnknäknûkn9l-lÀle'«m ÊAv^onìpnqÔh6qÔhrn.unNwe'ƒwe'Àwn„ye'àye'e{n~n,~nc‚/ -`e'L-¾n’n’ x“ ü• 4— X™ ›nLœBœbœn òž Ÿ Ÿn ,Ÿ DŸ  ùŸ“ Bœ!¡BœG¢ ‰¢ …£ ’£ Ë£ ¤ § § ,§ ]§ s©n•©nª©n¿©nЩnã©nô©nªn)ªnKªn­n$´e'<´e'®¶n¸î·&¸n¸-loºnœ¾nÁn#Án&Ôn¤â/ ònJônVõBœìFiì n€ nf*/ ¨*/ e!›…!¬… !Æ… !å…!ÿ…!… !5… !V… !p… !‡… !¤…!¶…!Ð…!æ…!ú…!…!3…!O…!c…!{…!•…!«…!È…!Þ… !î…!!ÿ…"!%…#!8…$!G…%!X…&!|…*!˜… 0!·…!2!Ú…"4!ð…#6!…$8!4…%:!M…)B!c…)C!€…)D!š…)E!¶…)F!Ý…)G!ý…)H …*K "…*M‚L*[$Q,[$\-]g._/a ›…0c‚L0s$ª3s$µ4u$À5wË6yå7{ÿ8} …9‚L:‘$(&>‘$3&?“$>&@•$I&A—TB™nC›ˆD¢EŸ ¼…F¡‚LGµ$Ë2Lµ$Ö2M·$á2N¹$ì2O»$÷2P½Q¿RÁ6SÃPTÅjUÇ „…VÉ‚LWß$“>]ß$ž>^á$©>_ã$´>`å$¿>aç$Ê>béÕcëïdí eï#fñ=góWhõ q…i÷‚Lj$€Jq$‹Jr$–Js$¡Jt$¬Ju$·Jv$ÂJwÍxçy z! {#5 |%O }'i ~) ƒ …+ £ …‚8 ² …‚:!¿ …‚D!Ë …‚J × …ƒW‚L„h  æ †h‚L‰‚ X æ ‹‚ h n… t n‰¡ { n‘¡ ‡ n‘’¡ ® • ‘“¡ ¿ • ‘•!È • )‘•  ê ‘™!C æ “§ [ æ •¬…L•±$e v˜±$l vš´t ŸºŠ  ½!¡ æ ¡Ã!Ø æ ¥ö!ç æ ¦ø  æ ¨û…L¨$ †«$ †¯ °0 ± !F æ ²!R æ ¶D!} a ·F!‹ a ºP – a º]!¨ a º^ ´ • ºu Ê • »x Ø • ½|!ü æ ¾ !  EÀ…€ S ( ƹ…LÇÇ$Y xÊÇ$f xÊÈ$p xËÊw ÌÌ“ Íͬ ÎÏ€  ( ÏÑ…LÏÙ$É ˜ÒÙ$Î ˜ÕÝ$Ó ˜ÛäØ Þèì ßìàó  ( á÷!!( áú /…ë >…’ì!iMì € sMò…Ló#$xÌ÷#$Ìù&$‰Ìú($”Ìü+þ.µÿ1Ì3æ6 þM9…L‰$ ô5‰$ô6‹$'ô7$7ô8$Bô9‘$Mô;”$_ô<–$oô=˜$ô>š$‘ô?œ$¤ô@ž$µôA $ÈôB¢$ÙôC¤$åôD¦$úôE¨$ ôFª$ôG¬$!ôH®$/ôI°$:ôJ²$BôLµQM·lN¹ŠO»©P½ÃQ¿ÝRÂþSÄTÆ>UÈ]VÊWÌŸXÎÁYÐáZÒü[Ô \ÖB]ØZ^Út_Ü‘`Þ«aàÂbã àMcå ëM¬e øne ! Ef !: Eh)!L Ei3!Y l: q• rF y• vK ‰• xP —• yT ¢• {Z³• |]• c Е ƒf!Þ• „j ñ• „v!û• …x• …–(• ‹£!2• ‘´L• ’¶€™e˜È…˜È ´ž˜Ý Êž˜ßà˜á ö¢™ë  ¢™í"™ï 6¦›€rX›Š• … ›%«®ž%¶ %Á®¢%Ϥ  ݶ¦" 뺧$%ü®¨&%«*%®®,%$°0%4±2%<µ6D¹:%Q»< ^½> k¾@x• ¿B „Æ¿K ÆÁM ÆÃO ¬ÆÆQ ºÆÈS ÆÆËU ÖÆÍW áÆÎY îÆÏ[ù• Ò] ÊÒ_ 6ÎÒa \ÒÓc tÖÔe ŒÚÕg ¤ÚÖiºÞ×kóÞØm%Ùo âÚqSÚshæàu}Þæw’Þçy%§è{ ½âé}ÒêéÖë îìƒ 6îí…Qòî‡j• ð‰ {öð Šúñ’ ›þò” ±ô–Çõ˜Ý ùš ó úœ öüž ý %)þ¢€D• ÿ¦Yÿ©o«‡­ Ÿ¯ ª± ·³ ĵ à· þ¹€• »&É5"ËBÍ Z"ÏpÑ ‰" Ó  Õ¿ ×ÜÙûÛÝ9ßX&á o*ãå¡è¬êÈ!ì Õ.&õè*'÷€ü• (ù…  (…L($2+$2,$2-(.:/O0!%g1#%‡3%%¥5'¼7)Ë>+ Ú*E- ñ*F/ýG1I3 *K5 *M7&O9/Q;9S= C*U?SWA _*YCl[E x*]G ‹6_I ¤:_K ¼Ö_M Ç`OÒþbQÝcS è>eU ñBfW€ gY€XkZ Foo%-oq 9Öps EJqu ONqw YqyeÆs{ q*v} ˆw •x ¢Ryƒ­z…½‡Í‡‰ÝV‹íZ“ ûÖ”  ^”‘ % b”“ ; ”•H •— U "˜™` f™›u šŠ ›Ÿ  ž¡´  £Ë f¤¥â j¦§ ù *¨©  !n©«%!B©­>!Öª¯ _!r«±€!r«³¡!B­µÂ!B°·á!B³¹"´»"¶½$"º¿2"v¾Á F"zÂà Z"BÅÅ l"ÎÈÇ €"ÎÊÉ ”"ÎÍ˨"ÆÑÍ´"^ÒÏÁ"bÓÑ Î"~ÔÓ á"‚ÕÕ ñ"Õ×#ÕÙ#†ÙÛ'#ÞÝ9#ÆàßK#Šåá ]#Žêão#vëå #zïç “#Bñé £#’óë%¯#óí¹#ôïË#öñÝ#øóï#–úõ $šý÷ $ÿù($ÿû%=$ýF$žÿ V$¢d$f q$ {$¦‡$ª “$®  Ÿ$¦  ®$®  »$²Ç$BÓ$ªî$® %®%r4%BO%B\%¶! e%#n%%w%'~%Æ )‡%Æ!+’%ª"-®%º#/Ê%®%1 ä%¦'3&®'5 &²(7 5&B(9L&Æ);v&W&*=€†&X*E‘&M*E¡&M*H ·&¾*a Ë&Â*c ä&¾*e ý&Æ*g'M-i ,'- 7'Ê0  O'Î0  „'Ò1  ™'Ö2 µ'Ú2 Ì'Þ2 Ü'Þ2 ï'â2 þ'æ3 (ê3 (î3 $(ò33(ö3! B(ú4#[(þ5% e(6's(ú6)~(þ:+ Š(ö;- “(</ ¥( =1 ¸( =3 Í( >5 â(?7 ì(@9 ù(A; )A= )B?!&)DA1)öGE @)HG L)"HI Z)IK h)&IM v)*JO „).KQ ’).NS  ).OU ®).QW ¼).SY Ê)T[ Õ)*T] ä).U_ ó)2Wa *2Zc *6[e !*:]g 6*6_i L*ak b*am z*bo Ž*&bq ¤*cs ¸*&cu Î*>dw ß*Bdy ò*Be{ +Be} +Be ++Be >+Bjƒ Q+Bj… d+Bj‡ w+Bj‰ Š+Bj‹ ž+Bk ²+Bm Æ+Bm‘ Ú+Bm“ î+Bm• ,Bm— ,Bq™ *,Bs› >,Bs R,BsŸ f,Bs¡ z,Bs£ Ž,Bs¥ ¢,Bs§ ¶,Bt© Ê,Bu« Þ,Bv­ ò,Bw¯ -Bx± -By³ .-Bzµ B-B{· V-B|¹ j-B}» ~-B~½ ’-B¿ ¦-B€Á º-B€Ã Î-B„Å â-B†Ç ö-B†É  .B‡Ë .B‡Í 2.BˆÏ F.B‰Ñ Z.BŠÓ n.B‹Õ ‚.BŒ× –.BŒÙ ª.FÛ Ð.JÝì.Nß /RŽá/öã )/‘å //N’ê >/V”ì%T/—î Š/—ñ ¦/™ü%Ä/š  â/fš  0jš  0n›  .0fœ  :0rœ  D0 …P0 !_0  j0v   z0z  €Œ0M¡  ”0~¡)  ¡0‚¢+ €®0X£-  º0†¬8  Ã0Ь:  Í0ެ<  Ö0ʬ>  ç0’¬@  õ0–¬B  1î¬D 1…¬F  %1š¬T  C1ž­V  a1Ž®X  1¢°Z  ›1Ö±\  ´1¦±^  Ë1ž´`  î1žµb  2ª¶d  ,2¦¶f  L2Ö¶h  k2Ö¶j  ‡2Ö¶l €§2…·n !²2·—  ½2®ºž  Û2®¼  û2®Á¢  3®Æ¤  :3²Ê¦  P3²Í¨  f3²Ðª  |3²Ó¬  ’3²Ö®  ¨3²Ù°  ¾3²Ü²  Ô3²ß´  ê3²â¶  4²å¸  4²èº  .4²ë¼  E4²î¾  \4²ñÀ  s4²ô  Š4²÷Ä  ¤4²üÆ  ±4¦È  ½4¶Ê €Ë4XÌ €Ó4(  Í  Û4 ý  â4º   ì4¾  !ø4   5 …L   5º  5Æ  $5Ê  /5Î  F5Ò  ]5Ê   h5Ö%  t5Ö(!  ƒ5Ú.#  Œ5Þ7% ™5â9' %¤5:)  º5æ:+  Ç5êA-  Ó5îG/  á5òH1  ô5öH3  6öI5  6öJ7 €06( K9  =6K@ …LMO $F6( SO $P6( TQ $]6( VT $h6( WV $p6( XX {6YZ ”6Z\ °6[_ Ê6\a á6]c  û6^e …L`v $7X gv $7X hx $%7X j{ $17X k} $B7X m€ $Q7X oƒ ]7p… w7q‡ ›7rŠ ¶7sŒ Ö7t ô7u’ …8v”  8úv—  8úv™ …'v› €+8( v›  58Švà  >8ŠvÅ  H8ŠvÇ  R8ŠvÉ  \8ŠvË  h8ŠvÍ  y8ŠvÏ  8þvÑ  ž8þvÓ  ¬8þvÕ  »8þv×  È8ŠwÙ  ×8ºwÛ €ã8XwÝ  ì8ƒÞ ü8…ƒà ‚ 9ƒà €9Xƒð €9æ ˆñ !,9ˆc  59k  F9m …O9o …S9‚ €V9X‰ €Y9X§Š %`9§Š %o9¨ %v9© %‡9«‘ %˜9¬• %Ÿ9­— %°9¯™ €Á9a °  Æ9®°ì  ã9²î  :²ð  %:²ò  B:³ô  O:"´ö  h:"´ø  ƒ:"´ú  ž:&µü  ¹:εþ  Ö:ζ ó:*¶  ;.¸  &;.¸  >;.¸  V;.º  n;2»  Š;6½  £;2½ ´;*¿ Á;*À  Ô;2  ì;&Ä  <ÎÄ $<*Ä  8<2Å €Q<XÇ  Z<Ý"  l<:Ý$  ~<>Þ&  ‡<®ß( §<æ à* €±<æ àJ ¿<ºà} Ê<ºâ Ö<ºä  ä<Bæƒ  õ<Bè…  =Bè‡  =Bê‰ ! =ê‹ %.=ì B=Æî– T=F𘠀`=Xñš  e=Jñš n=Nòœ  x=Rôž  ‚=Rô  “=æ ô¢  =Vô»  §=Zô½  ³=Zõ¿ €Â=æ öÁ Ð=^öè Û=b÷ê !ë=ùì %ù=ûñ € >Xý÷  >jýø  H>nýú  ~>rþü  ¸>nþþ  ð>vÿ  ?z ?æ  -?æ  €;?X C?æ  €O?Xm V?æ m €a?X¼ g?…¼  t?žÉ  }?~Ë  ?žÍ €˜?XÏ  ?æ Ï  ª?‚ »?‚ Ë?‚   â?‚ "ñ?‚ $ü?‚& @†( @Š* @Š, .@Ž. 7@Š0 B@’2 J@–4S@‚6\@š8 e@‚>x@ž@†@ž B’@‚"D Ÿ@‚#F®@š$H¼@¢*NÊ@š0TÔ@¦7Zâ@ª?` î@ÖBbû@‚Dd  AÆEf A®Gh 'A²Gj6A¶GlCAšInQAšPtaAnXzmAnZ| wAÆ[~ †Aº]€•A¾]‚¢Aš_„±AšeŠ»AšlÊAê s– !ÙAEs¢%åAt¥óAt¨%Bu« Bv®  B‚w´ -BÂz¶ HBÆ|¸¥ eB|º!xB|»!ŒB~¾ ŸBÖ„Ç ²Bn…ÉÇB‚‡Ë×BˆÍìBÎŒÓÿBnÕ CÒ‘×% C’Ù%2C”Û€BCæ —ß… LC—ã…L˜ì$SCÖ›ì$YCÖ›í$_CÖœïdCñyCžòŽCŸô¥ ¢C ö ®C ø ½Cž¢þ ÆCÞ¤!D¥ )D¨  KDÞ© ŽDÖª€) æ «ÒD«&!ÚD¬, ìD­2…L±;… ÿD´;Eâ¶DEâ¸G Eâ»J)E¾M4EÂS%?EâÅY JEŽÇ\%[EÉ^%dEÍd!zEÒj!ŒEÕq˜E×w€±EXÙ}¶EšÙ}ÇEæ Ûƒ%ÚEÛ…öEæ ܇%FÜ‹%FÜŽ%&FÝ‘%3FÝ”€DFXß—QF…ß—€^FXߤfFæ ߤtFêß·|FêṋFêã»”Fêä½€ŸFXç¿€ÊF§Fç¿€ÐF§FçÇ…ÕFçï€îFXç÷õF• ç÷G…çÿ G>ço #Gîéq 7Gòës EG‚ëu WGòëw gGòëy‚yGë{!ŒG ëÚ… ‘GïÚ ÚDöðå §Göðê… ½Gúñï… ÝGöô÷ Hþ÷þ%H÷%#Hü 5H  %EH %WH iH %zH %H  H"%±H&!%ÄH' ×H.*%èH2,%ûH 2 I:$5% I>$7%4I)= HIF-@%XIJ-B%jI2H |IR6K%IV6M% I;S ³I^?V%ÃIb?X%ÕID^ çIjHa%öInHc%JMi%JvQl%)JzVr%†£ Kš‡¥ 'Kˆ§ =Kž‰ª LK¢‰¬ [K¦Š® jK¢Š° yKª‹² ˆK¢‹´ —K®Œ¶ ¦K¢Œ¸ µK²º ÄK¢¼ ÓK¶Ž¾ âK¢ŽÀ ñKºÂ L¢Ä L¾Æ &L¢È 5L‘Ê LL¶’Í [L¢’Ï jLº“Ñ yL¢“Ó ˆL”Õ ŸL¶•Ø ®L¢•Ú ½Lº–Ü ÌL¢–Þ ÛL—à òL¶˜ã M¢˜å Mº™ç M¢™é .Mšë FM›î UM>›ð dMÆœò sMÊô ‚M>ö ‘MÆžø  MŸú ºM¶ ý ÉM¢ ÿ ØMº¡ çM¢¡ öM¢  N¶£ N¢£  +Nº¤  ;N¢¤ KN¥ cN¶¦ sN¢¦ ƒNº§ “N¢§ £N¨ ¾N¶© ÎN¢©  ÞNºª" îN¢ª$ þN«& O¶¬) &O¢¬+ 6Oº­- FO¢­/ VO®1 mOί4 }OÒ¯6 OÖ°8 OÒ°: ­OÚ±< ½OÒ±> ÍOÞ²@ ÝOÒ²B íOâ³D ýOÒ³F  Pª´H PÒ´J -PæµL =PÒµN MPê¶P ]PÒ¶R mP·T ƒP¶¸W “P¢¸Y £Pº¹[ ³P¢¹] ÃPº_ ÛP¶»b ëP¢»d ûPº¼f  Q¢¼h Q½j 2Q¶¾m BQ>¾o RQº¿q bQ>¿s rQÀu ˆQ¶Áx ˜Q¢Áz ¨QºÂ| ¸Q¢Â~ ÈQÀ ßQ¶Äƒ ïQ¢Ä… ÿQºÅ‡ R¢Å‰ RÆ‹ 5R¶ÇŽ ER¢Ç URºÈ’ eR¢È” uRÉ– ŒR¶Ê™ œR¢Ê› ¬RºË ¼R¢ËŸ ÌRÌ¡ âR¶Í¤ òR¢Í¦ SºÎ¨ S¢Îª "SϬ 9S¶Ð¯ IS¢Ð± YSºÑ³ iS¢Ñµ ySÒ· SÂÓº ŸSîÓ¼ ¯SîÔ¾ ¿SÊÕÀ ÏSîÕ ßSîÖÄ‚ïSׯ‚÷S×Ö…T×Ú€ Tæ ×Ú T×ß0T…Úæ‚ BTòÚæ OT>Úê%[TšÜì‚ fTöÝî sTšÝò%Túßô%ŽTúàö‚ ›Tþáø%¨Táü%µTâþ%ÂTã ÏTúä‚ ÝTæ êTæ%øT è %U é %U ê%U ë,U…ì%?Uìe%`Uìh%ˆUík%šUím%®Uío%ÁUíq%ÔUís%çUíu%úUíw%Víy% Ví{%4Ví}%HVí%\Ví%qVíƒ%„Ví…%™Ví‡ ®Ví‰%ÉVï%ÕVï ãVï‘ Wð” Wñ— CWJòš QWNòœ _WRòž mWVò  {WZó¢ ‰W^ô¤ —Wõ¦ ²W>ö© ½Wò÷« ÈWšø­ ÓW>ù¯ ÞWòú± éW^û³ ÷WFûµ Xþû· X û¹ #X.û» 2Xjû½ AXRû¿ PX"ûÁ _Xûà nX:ûÅ }XÂûÇ ŒXÊûÉ ›XbûË ªXûÍ ÌX>üÐ ×XòýÒ âXšþÔ íX>ÿÖ ùXòØ Y^Ú YFÜ #YþÞ 2Y à AY.â PYjä _YRæ nYfè }Y"ê ŒYì ›Y:î ªYÂð ¹YÊò ÈYbô ×Yö òY>ù þYòû  Zšý Z>ÿ "Zò .Z^ =ZF LZþ [Z   jZ.  yZj  ˆZR —Z" ¦Z µZ: ÄZ ÓZÊ âZb ñZ [>  [ò " +[š $ 7[> & C[ò ( O[^ * ^[F , m[þ . |[  0 ‹[. 2 š[j 4 ©[R 6 ¸[" 8 Ç[ : Ö[: < å[ > ô[Ê @ \b B‚\ D \ ‹%.\%X\’ r\• …\™ —\œ‚§\Ÿ º\½‚Å\À‚Ø\Æ€å\…Ë€ð\…Ì€]XÌ]>0Û%$]1Ý7]>2ß%J]3á[]Æ4ãm]>5å ]š6ç •]ú7é «]8ë Á] 9í€×]…:ï€Ú]X:z€Þ]X<{¡ò] <{¡^ <| ^n<~$^n< *^n< 2^n=œ :^n?© B^nB· J^nFÆ R^nKÖ Z^nQç b^nXù`QV€`TV€h6TV€]6TV€p6TV€`TV€™ TV€%`TV€-`TV€4`TV€8TV€>`TV€G`T`QV€`”V€_`”V€f`”V€o`”V€|`”V€`”¤`¡¤`¡¤`¡ã`¡aƒ2aQ:aQ@aQƒaQ‘aT¦aQþaƒb”6bƒQbh¤`ƒˆbQ6bƒ–b¡žb¡òbƒV€QQV€\Q#·cq#·c€(da(duV€ªQV€µQV€ÀQ#·cq#·c€#·cc(d<(dI(dV#èdQV€(QV€3QV€>QV€IQ#·cq#·c€#·cc#·cM(d(d (d/(d>#èdQV€ËQV€ÖQV€áQV€ìQV€÷Q#·cq#·c€#·cc#·cM#·c|$(d'$(d8$(dI$(dZ$(dk$#èdQV€“QV€žQV€©QV€´QV€¿QV€ÊQ#·cq#·c€#·cc#·cM#·c|$#·c¼*(d +(dC+(d}+(d·+(dñ+(d+,#èdQV€€QV€‹QV€–QV€¡QV€¬QV€·QV€ÂQ#·cq#·c€#·cc#·cM#·c|$#·c¼*#·cð/(d=0(d}0(d½0(dý0(d=1(d}1(d½1Ÿhƒ¦hQ­hQejq#¤`qV€`QV€ºjQskqxk<3}k<V€.kQV€’kQÝl<ßlQmà2mc>MmqXmp;„n1?n¡íoO?ño§?V€ÿoQV€e QV€l Q#pq#p€#pq#p€#pO@#%pO@#+pQ(d]A(dAƒ³p¾AƒÀpO@ÉpÇAØpÒAÑbÒAˆup;up;V€¦uQV€ QV€ Q#pq#pyG#pyG#%pQ#·cq(dRH(dnHƒöu¾AƒvyGÉp>Øp”HÑb”HwpKwQ#wtK[{µN[{µN{O[{­Oî{Qõ{hu|Q~|ƒPŠ|‰PŽ|‰P“|QÑbŽP3·~6RV€~QV€f QV€p Q#·cQ#·cQ(dS(dNR(dSRV€É QV€Î QV€Ó Q#p¡#pp;#p¡#p¡#pÛS#p¡#%pÛS#+p¡#Q6R#pƒ#pþT#pÛS(dzU(d†U(d’UF€ƒ[€4Vo€UV€ÿK€Q™€Q¥€Q²€Q½€¡Í€¡¤`ƒwpKcƒQ‚ÂV[‚ÅVp‚ÂVv‚¡#èdQV€xQV€QV€‰QV€”Q#p»W#pÀW#·cW#pW#p~X#ppK#pQ(d"Y(d.Y(d:Y(dFY#èdQ3d†»W3r†»W3‡†»W3˜†»W3­†»W3»†»W3ˆ»W3à†»W3ô†»W3‡»W3‡»W3,‡»W3A‡»W3_‡»WV€V†QV€:†QV€&†QV€ †QV€ü…QV€ QV€QV€'QV€7QV€BQV€MQV€_QV€oQV€QV€‘QV€¤QV€µQV€ÈQV€ÙQV€åQV€úQV€ QV€QV€!QV€¡„QV€…„QV€k„QV€W„QV€;„QV€/QV€„QV€üƒQV€ÎƒQV€´ƒQV€:QV€BQ#·cpK#·cæK#·cæK#·cpK#ppK#pQ#·cˆ]#·cˆ]#·cˆ]#·cˆ]#·c_#·c_#·c_#·c_#·c¹`#·c(O#·c(O#·cpK#·cpK#·cpK#·cpK#pp;#ppK#·cpK(d!d(d-d(d9d(dEd(dQd(d]d(did(dud(dd(dd(d™d(d¥d(d±d(d½d(dÉd(dÕd(dád(díd(dùd(de(de(dežŒW£ŒÀWa~k‘±k™ÂV‘±k™ÂVg‘5lo‘p;=‘QÀ‘ÂVÇ‘XlÕ‘úkà‘úkë‘Q‡’>skQ’QxkQ¼’±kÇ’±k3Ý’;nû’Fn“QB“Wn“«l—“Énž“Õn¥“án®“æn”Eo ”Qo#·c”o„m-q=‘p;InŒvƒ—¡š—¡£—±kdnv+™`w6™hw?™hwH™qwR™‰wg™ŽwMš-qpšïyxš«lš€x—šQ¦š¡®šz]€y¨{·3}ׂ•Qž¡„má…émì…„mƒ†}žŽ†„m«†émì…„mx‡}žŽ†„mœ‡„mœ‡„m¶‡émì…=‘ȇ„m2ˆ¶qq}žŽ†émXˆžhˆ}žÕˆém‰ž‰ˆž‰“ž‰ém‰ž‰ˆž‰“ž‰žžLE¡žLE¤žÕˆ§žÕˆ„mv‰„m≄má…О\Ž„mœ‡О~Ž„mœ‡Óž~Žמ~Ž„m«†О\Ž„m¶‡=‘ȇО\ŽО̎žhˆО~ŽО~Ž„mv‰Óž\ŽמlŸùlŸùlŸùlŸùlŸùŸRŸRInkŸRû’³d“½j“ÈïŸp;ýmÓŸRû’³d“½j“ÈïŸp;ýmÓŸRŸRInkŸR$Ÿ#‘ŸRi }i }ŸRi }š û’š û’ölQÁtE“ÁtE“š û’ölQ¡ “ÁtE“¡ “š û’ölQš û’š û’„m-q\–v\–v\–vû’-qd“½j“Ȱʖ–¡§•°Ê–°Ê–ã¡—–mqÙ¡—ã¡—“ænÿ“Qo–mà2Ù¡—ÿ“Qo“ænÿ“Qo–mØvÙ¡—ÿ“Qo“æn¸¢§•„m”o8n—–¡§•“ænŸý—íoqŸý—íoqdnÑ:™¢b–X¢#–š—¡?™p;íoq–m¢˜V€QV€QV€Q#·cq#·cà2#·cØv(d8(dT(dp“æn„mÁ—“æn„mÁ—“æn„mÁ—p“ánB•«lû’Eod“Énj“Õn3¤¢“ænp“ánB•«lû’Eod“Énj“Õn3¤¢“æn„m”o–mq„mÓ8nãa¤¢8n—a¤ž„mž„mž–m€v¤§?8n—v¤§?8n—v¤§?8n—v¤§?3¤¢¤Ÿ8n—¤Ÿ3¤¢v¤Èÿ“Qov¤È3¤¢sqí¤_ ð¤TzNqW?𤎠NqW?𤎠¥¢S€6¥QS€=¥QS€M¥QS€V¥Q3h¥fl3‹¥Tz3•¥×‚•QŸflif¡û’Eo–mqÿ“Qo䥉û’Eo„m’¦ø¦§ø¦§3¤¢mÚ§ÿ“QoölE“¦Û¢¦>–Ù“ÁtQmÚ§ÿ“QoölE“¦Û¢¦>–Ù“mÚ§ÿ“QoölE“¦Û¢¦>–Ù“mÚ§ÿ“QoölE“¦Û¢¦>–Ù“Ýlx¨H™Á—ÿ“Qo§ÿ¨H™Á—á Q–¥yÿ“Qo–¥yÿ“Qo(§»©H™!¥L§¡ÿ“Qo(§»©¯úkH™!¥–¥y–Q8–§ª–ÑQdnÜv\–v\–v–±k\–v–±k\–v–ÑQ–±k\–v–ÑQ\–v­–¸£\–v£–“«\–v¯úk8–§ª£–“«\–v¯úk´§æn—–¬£–“«\–v¯úk—–¬£–“«­–¸£—–¬£–“«­–¸£jq—–­¬jq j€—–å¬jq j€jc—–1­ɧ‡­ɧ‡­ɧ‡­F”žâ–_®­–¸£\–j®’¦x®â–_®­–¸£C‘«l\–j®’¦x®\–víoÜvâ–#¯\–vΧæn’¦.¯¯úkâ–#¯\–vΧæn’¦.¯¯úkç_¤¯â–#¯­–¸£C‘«l\–vâ–#¯­–¸£â–#¯­–¸£¨fl\–v¨fl\–v¨fl\–v¨flF”¢–ÑQ\–vF”¢–ÑQK—§•Fj§?¨5lFj§?Ÿ€xFj!¥–m²„m&²:•Q–m²„m&²:•Q–m²„m&²:•Q–m²„m&²:•Q–m€x:•Q–m€x:•Q–m€x:•Q–m€x:•Q–m€x:•Q–m€x:•Q–mN|–mN|–mN|\–¢˜\–¢˜\–¢˜:•Q\–¢˜:•Q\–¢˜\–¢˜š¨Õ³\–¢˜ï«(Oö«¡û«(O“£¸Q§¸QÞ¯ƒù¯ƒÛ¯pK²³O´ƒ²³O´Q´4Ó ´#Ó¹O¹O´Î µƒϳpKmQëµq–mQ„mWÕmpÕÉq4Ó%¹=ã+¹Q1¹ à"xO„mÜÖèµ4ÓëµÝãmñÖÉq×8n×–m*×m*×Éq7×m#Ó ¹Qm7×ëµÝãm7×`¹×f¹ƒu¹#Ó„¹¡ÁtQf¹pKu¹ƒf¹pKu¹ƒf¹öØu¹Q„mWÕèµ4Óèµ4Ó“¹ñÖ®¹pK²¹4Ó¶¹#Óº¹ƒ¾¹Q–m"ÛɹpK͹ƒmpKÉqƒ{#Óy×ɹpK͹ƒ–m¡–mƒ–m…¶–m¹¶–mí¶–m·–mR·–m€·–m³·–mQ–mµQ–mÂV–m¼QmpKÉqƒ{#Óy×mpKÉq×–m»W–mpK–m"Û–möØ–m"Û–möØ–mQÝl¶Î/·ÖÝ´OmQŸhW/·ÖÝZ· çZ· ç*ºW-º~X#pšç#pQ#·c7×Ì·™ÔÌ·™ÔÌ·™ÔÚºöéÞºà躙Ô„méлèìлí3¼pK3Œ¼pK3%¬pK3˜¼™Ô3ª.Tí3Ð.pí3T/‘í3Ä/¡í•Q¾ñ¾ñ„m?ñ¾ñ„m?ñ„m¬>§½€®½®ñ¾ñ¾ ò¾ òýÁ¡ Â'ò¡×xYü ´pK8nøÁtQö¿¡ú„ÂpK‰Âp;8nøÁtQö¿¡ú“ÂO„ÂpK8nøÁtQö¿¡ú˜ÂpKö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡ú8nøÁtQö¿¡ú8nøÁtQö¿¡ú8nøÁtQö¿¡ú8nøÁtQö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nøö¿¡úÁtQ8nø¹½ƒö¿¡úÁtQ¿¾í¶8nø¹½ƒ8nøö¿¡úÁÂõÁtQ¿¾í¶ÆÁ§ýÆÁ€þ¹½ƒ«¸Q3ÂpK3¨ÂÌþ3½Âö•Q#pQ#pQ#ph`QS€§Æ$ S€ÁÆ$ S€ÐÆ$ #èdQ3Çí3)ÇíV€ÇQV€ÝÆQ’E“–mp;™Çƒ Åí™wÿKßâ÷òb ’E““¹äø¦  Åí™wÿKßâ÷òb ’E“½t­mQ“ÅQ½t­ÅQÅQ“ÅQ–ÅQ–mQßâ÷’E“ÅQžÇ¬½t­ÅQÅQ“ÅQ–ÅQÅQ“ÅQ£Çé Åí™wÿKßâ÷òb ’E“ç_p;¦ÇQ Åí™wÿKßâ÷òb ’E“ÅQ™wÿKßâ÷ßâ÷ßâ÷#èdQ3qÈV V€F6QV€P6QV€]6QV€h6QV€+ÈQV€p6Q#·cÎ#ppK#ppK#·cž #·cI#·cpK(dW(dc(do(d{(d‡#èdQ3¯ÉAV€7QV€7QV€%7QV€17QV€B7QV€CÉQV€Q7Q#·cø#ppK#pp;#·cK#pƒ#pK#ppK#pK#·cp;(dÕ(d¨(dè(dF(d£(d–mÛS3ÍÛS358`e3>8`e3H8`e3R8`e3 ÍpK3¼ÇpK3-ÍpK3ÆÇpK38ÍÛS3BÍÛS•Q3ι`3#Î(O32Î*3<Î3•QfÕQlÕQwÕQzÕQ€ÕQ†ÕQÕh3àÕ´3S×Q3X×ÂV3]×Q3b×Q3g×Q3l×ÂV3v×h3!Öh3ˆ×µQ3’׎P3š×ŽP3£×À3­×h3Ïh3¹×h3#Ïh3Çׯ3:ÏÆ3Ø×Q3ù×Q3ØQ33ØŽP•Q–mÕém‰šv_®¨ý–mBém‰šv{¨üO–m~Ž™wÿK¸¢ˆ]wpKwQ·Þ{wQ™wÿK ÝÌwpK™wÿKÃÞ[ ™wÿKÊÞ(O™wÿKÏÞ¹` ÝÌ ÝÌÔÞf!ÜÞ‹!ãÞ‹! ÝÌ™wÿKÏÞ¹`3êÞpK3BØpK3ôÞpK3IØpK3üÞ®M3ßpK3´ØpK3ßpK3ÄØpK3$ßpK3ÔØpK3/ßpK3äØpK3:ßpK3ôØpK3EßpK3ÙpK3PßpK3ÙpK3[ßpK3$ÙpK•QxpK×x[ iˆ]Þp¾AÉqyGÞp¾AÉqyGÞp¾AmyGû’_2†âqû’_2†âqðá¤/çᡦ|yGÁt»2½t>!ÓE“Þp¾A„m3„má…Þp&3„m;7„m;7Þp¾A½tÇA!ÓE“ðá²Bçᡦ|O@Át9D¦|ÒA¦|ÜDÔ›ÒA„m`íoñ„m1`íoñ„m[`íoñ„m«n„mÍn–m€„mînölQ„mîn„moNqo„mFoÑçoédo„mœ‡„má…„mÊo„måo„m«†FåölQFO?švW?¸¢Q×èppÜèQ÷áq„m;°éO?áO?éO?F>–mqmQFO?ÁtE“NqW?ÜèQ÷áqFO?NqW?ßè1:!ÓqÜèQ÷áFq„m2ˆ¶qqFoäè1:Nq‡qÜèQ÷áqCèQFO?½t>sE“ÁtE“švW?ÜèQ÷á>FO?fè`wmèßqfè`wmèßqFO?éèá…îèCréèá…éO?FO?îèÖsÑbqtqõ€×èW?ÜèQ÷áqéèá…FO?îètÑbqtq€r×èW?ÜèQ÷áqéèá…FO?FO?éèá…îèdté胆Fo3¤œ‡FO?švW?é1:ÜèQ÷áqölQFO?švW?¸¢Q×èppÜèQ÷áq3¤œ‡FO?švW?é1:é‰ÜèQ÷áq¤`q%êŽx„mÚx3?êûx!é;°'éx‡/鯭✇÷áá…kê«n§?Mé‡qWéW?¦š¡qê¡zêÍlzéqîqî€ðêÎyâçoø¦_ ÉqO?¦š‰½éùyø¦_ ÉqO?¦š‰½éùyðêO?s‰là-q¨qÑ-qlà-qŸ|‡z3që|V€eëQV€YCQV€_CQ#·cq#·cÆp(d@}(d\}(dx}ø¦Æpû’Ïpû’Ïpø¦ñ}–mñ}9ëÆp½éÑ:qꡚvW?ø¦ã~tìW?šv馚¡#èdQ3Uí5ƒ3hí5ƒ3zí5ƒV€=íQV€'íQV€íQ=‘5ƒ½éq„mƒ†šv‡q„mQƒšv‡qÁtE“„muƒl±‡qr±‡ƒ„mx‡šv‡q¦š‰½éhˆ„mœ‡švW?¦š‰„mÍn=‘ȇ„mîn'lE“„mînðíQ'lE“÷áD„'éx‡/鯭¦š‰½éhˆ=‘|„½t>½éQ«¸QÑbq¦š¡„m§?švW?ûí1?¸¢W?Þp4…,îQ}ð…Zîú…„mƒ†‡’̉„mõ‰‡’̉‡’Ї’Š“ÅQ–ÅQ„mö™ø¦š„m,šø¦Îy`QS€=í¤S€æú¤S€í¤û¤ÑbqmqÔ›q¶qqmqÔ›q¶qq õQmQÔ›QQû¡Tû¡mQ õQÔ›QÑ•š õÂVmÂVÔ›ÂVQû¡Tû¡mÂV õÂVÔ›ÂVÑI› õ¼Qm¼QÔ›¼QQû¡Tû¡m¼Q õ¼QÔ›¼QÑ›› õµQmµQÔ›µQQû¡Tû¡mµQ õµQÔ›µQÑí› õ»öm»öÔ›»öQû¡Tû¡m»ö õ»öÔ›»öÑ?œ õ¡öm¡öÔ›¡öQû¡Tû¡m¡ö õ¡öÔ›¡öÑ‘œ õ€·m€·Ô›€·Qû¡Tû¡m€· õ€·Ô›€·Ñ㜠õ³·m³·Ô›³·Qû¡Tû¡m³· õ³·Ô›³·Ñ5 õ·m·Ô›·Qû¡Tû¡m· õ·Ô›·ч õR·mR·Ô›R·Qû¡Tû¡mR· õR·Ô›R·ÑÙ õ¹¶m¹¶]ûQQû¡Tû¡ õ¹¶m¹¶Ô›¹¶Qû¡Tû¡m¹¶ õ¹¶Ô›¹¶ õ…¶m…¶]ûQQû¡Tû¡ õ…¶m…¶Ô›…¶Qû¡Tû¡m…¶ õ…¶Ô›…¶Š|qmqÔ›qÑæTû¡Š|qÑæmqÔ›q õ€mqÔ›qÑ2ˆQû¡Tû¡Ž|€Ñ2ˆmq õ€Ô›qmí¶Ô›í¶ª÷í¶Tû¡mí¶Ô›í¶ª÷í¶ó²(Oó²(OdnD£iûD£iûD£iûD£iûD£iûD£iûD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnq£“¹á…iûq£“¹á…iûq£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnð…iûð…iûð…iûð…iûð…iûð…iûð…iûð…iûð…dnD£iûD£iûD£dnD£iûD£iûD£dná…iûá…iûá…dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dnD£iûD£iûD£dn2ˆ“¹ƒ†iû2ˆ“¹ƒ†iû2ˆ¦|<½é<¦š¡„mV¬ò±c„måo„mv­ò±M„mÀ¬„m«­„mÕ­„më­„m³¯„mÚ¯ò±|$„må²ò±¼*„mj°„m‚°„mŸ°„m2³,îQ±ÿ¾A„m¾Adnqdnqdn¶¸¢(O“¹îniû¶×xåo“¹á…iûåoÔ›(O“¹á…iûåo×xåo“¹á…iûåoÔ›(O“¹á…iûåo×xåo“¹á…iûåoÔ›(O“¹á…iûåo×xåo“¹á…iûåoÔ›(O“¹á…iûåo² ¡ø Qû QiQ3ðƒ3ƒ3,ƒ3Iƒ3cƒ3„à23•¥¼3¥¥¼3¼p¾3Ôp¾3îÐÃ3ÕÃ3l33p¾3Pp¾3ˆUÚÃ3šUâÃ3®UêÃ3ÁUòÃ3ÔUúÃ3çUÄ3úU Ä3VÄ3 VÄ34V"Ä3HV*Ä3\V2Ä3qV:Ä3„VBÄ3™VJÄ•Q„mÉЄmá…„mÉЄmá…„mÔЄmÉЄm÷Єm&Ñ„m[Ñ„m¤Ñ3á)Ò•Q!^*q!^*q!+€!^*q!+€!‡+c!^*q!+€!‡+c!+M!^*q!+€!‡+c!+M!—+|$!^*q!+€!‡+c!+M!—+|$!Ÿ+¼*!^*q!+€!‡+c!+M!—+|$!Ÿ+¼*!­+ð/!^*q!+€!‡+c!+M!—+|$!Ÿ+¼*!­+ð/!Ä+{ÕP ª^:h ÆÔ_>x Æà_G˜ Áë_L¨ ª^éÈ ª`¤Ü ª^:ô ª^: !ª^:$!ª^: $Pa> ($Za> <$ª^ h$µa$|$Îa>$áa>¤$ª^)¼$ª^/Ô$ª^¬ô$ b†%ª^U(%$b[<%ª^¬\%>b†p%ª^l%^bv°%ª^¬Ð%ª`†ä%ª^~&>b†,&§b>@&¹b¤T&Åbél&Ób¤€&àbé˜&ª^„°&ª^:È&ª^:à&ª^:ø&ª^:'ª^:('ª^:@'ª^¬`'÷b†t'ª^:'cØ 'cß°'ª^: Ä'©c Ø'¼c¤!ð'Íc/!(Ûc¤"(ìc>"8(æ`Ô")æ`L#)æ`-$è)æÔ_U&d*æÔ_>'€*æà_\'<+æà_§)ð+æà_G*,ª^)+0,dÞ,D,ª^þ,`,dC-t,ª^–-,dÞ.¨,ª^­.Ä,dC/Ü,ª^:/ð,TdÌ/-bd¤0-sdõ00-d¤1H-’d1\- d¤2t-ìc>2œ-æ`ã2Ì.æ`L3è.æ`-40æÔ_U6Ü0æÔ_>7ø0æà_\72æà_9$3æà_G:H3ª^);d3dÞ<x3ª^þ<”3dC=¨3ª^Æ=Ä3dß>Ø3ª^4>ô3dÞ? 4ª^O?(4dC@@4ª^j@\4dßAt4ª^yA4íd’B¤4ûd¤C¼4 e¿CÐ4e¤Dè4+eßDü49e¤E5JeÿE(5Xe¤F@5ìc>FT5æ`ÖFŒ6æ`LG¨6æ`-HÔ7æÔ_UJÈ8æÔ_>Kä8æà_\K:æà_A!M;æà_GN4;ª^)OP;dÞPd;ª^þP€;dCQ”;ª^ÆQ°;dßRÄ;ª^ŒRà;dX"Sô;ª^¯"S<dÞT(<ª^Î"TD<dCU\<ª^í"Ux<dßV<ª^ #V¬<dX"WÄ<ª^yWà<­e3#Xô<»e¤Y =Ìed#Y =Úe¤Z8=ëeˆ#ZL=ùe¤[d= f¬#[x=f¤\=)fÐ#\¤=7f¤]¼=ìc>]Ð=æ`ñ#]>æ`L^>æ`-_T>æÔ_Ua|?æÔ_>b˜?æà_\bÀ?æà_‘%dAæà_Ge(Aª^)fDAdÞgXAª^þgtAdChˆAª^Æh¤Adßi¸Aª^ŒiÔAdX"jèAª^-#jBdÞ&kBª^7'k4BdÞlLBª^Z'lhBdCm€Bª^}'mœBdßn´Bª^ 'nÐBdX"oèBª^Ã'oCdÞ&pCª^yp8C™fî'qLC§f¤rdC¸f#(rxCÆf¤sC×fK(s¤Cåf¤t¼Cöfs(tÐCg¤uèCg›(uüC#g¤vD4gÃ(v(DBg¤w@Dìc>wTDæ`í(wœDæ`Lx¸Dæ`-yüDæÔ_U{EæÔ_>|8Eæà_\|lEæà_))~œEæà_GÀEª^)€ÜEdÞðEª^þ FdC‚ Fª^Æ‚”|Iæ`½-”ÄIæ`L•àIæ`-–8JæÔ_U˜XJæÔ_>™tJæà_\™¼Jæà_.›Kæà_Gœ$Kª^)@KdÞžTKª^þžpKdCŸ„Kª^ÆŸ Kdß ´Kª^Œ ÐKdX"¡äKª^-#¡LdÞ&¢Lª^è'¢0LdÀ*£DLª^y,£`Ldô/¤tLª^f0¤LdÞ¥¨Lª^¦0¥ÄLdC¦ÜLª^æ0¦øLdß§Mª^&1§,MdX"¨DMª^f1¨`MdÞ&©xMª^¦1©”MdÀ*ª¬Mª^æ1ªÈMdô/«àMª^$2«Nª^:®NFBÆh+2®4Nª^+2°LN!i†²`N+i>²tN5i>²ˆNÆÔ_U²OÆÔ_>³OÆà_\³ OÆ>b†µÄOà_3µDPÆà_G¶Æ§i3·hPª^:·Æ´i3·€Pª^:¸˜PÌi53¸¬PÌiq3¹ÌPâi53ºàPðiq3»Qüið3¼4QüiÁ4¿ˆQüi"6ÃRüi:8È´R9j‚8ÎÈR9j 8ÏÜRMjÖ8ÐðRMj9ÑSMjs9ÒSMjÕ9Ó,SojÞÔ@S|j)ÔTSª^)ÕpSæ`&:Ö´Sæ`L×ÐSæ`-Ø TæÔ_UÚ\TæÔ_>ÛxTæà_\Û¸Tª`ÞÝÌT‰j)ÝäTæà_U:Þ Uæà_GßDUª^:àXUºj»:àlU¿jÇ:á|Uª^)á˜Uª`Þâ¬UÈjä:âÄUæ`;â8Væ`LãTVæ`-äÔVæÔ_UæWæÔ_>ç8Wæà_\ç¬WÏje;éÀWÚje;éÔWÆk†éï´Yæ`<ï`Zæ`Lð|Zæ`-ñ4[æÔ_Uóœ[æÔ_>ô¸[æà_\ôL\æà_=öÈ\æà_G÷ì\Ùk>ø]êk†øT]lÞøŒ]l]<øÄ]d7=øÜ]Æk†ùäaÁNl„=ùbÁ…l=ù bª^y=ùHbül>ú€böl >ú¸bª^h>üØb"mn>ýìb0ms>ýc‹k/<ýcª^>ý@c}m>ÿdc†m >|c˜m¤˜cª`Þ€dÆk†Æ¾m)ÆÅmh>ÆÓm:Æßmø>Æòm)Æn)†ª^k3Æ´i?Æ=n ? ÆZn?Ƙn„=Æ«n:?Ƹn:Æ ¾n¤Æ ÍnÞeª^: ¤hª^rA Àh`pÞ!ØhjpC!ðhª^”A! i`pÞ"$ijpC""„iª^çA"°i‹k/<$ÔiqlB$\j'qlB%ðj¢k©B&k}mµB&(k}m©B'9ŒmãqØD9¬mïqÞD:ØmöqìD;ømþqøD<nr E<0n rE<Tn%r>=oÆà_G=DoÆÔ_>>XoÁNl”E>toÁ…l=>”oÁ :r3>´oÁ lr+@?ÜoÁ žrºEApÁ ÐráEA$pÁs+@ALpÁ3sØDClpÁhsêED¬pÁŸsØDFÔpÁÏsóEGüpÁüs:H$qÁ+tÿEHLqÁ[tÿEI¤qÁtFJÄqÁ Ãt¤LÔqÁ ût>LðqÁë_LLDrª^­EMdrüláFN˜r”urN¬rœurNÀrª^„Närª^:Pør¯u+GP s¹uTGQ$sÄuoGU4sÈjŒGU\sª^?GUŒs`pÞY sjpÃGY´s†pÃGYÈsp>YÜsª^)YøsdÞZ tª^cHZ(t`pÞ[@tjpÃG[Xt†pÃG[ptp>[ˆtª^H[¤tdÞ\¼tª^¥H\èt‹k/<^ uqlB^,u'qlB_duZqßB`xugqÃG`Œu¢k·H` upqÁH`ÌuïqÁHaøuÙq>bv@uØDb4v¸qÍHcPv›qÿHdtv¬k¤fŒvÏqxIfìv‡q–Ig$wËqòIhTw€qJipwŽqJjŒw v#JkÔw%v#Jmx1v#Jodx>vTJq„x1vTJr xIv{JsÈxRvJuðxZvÞw yevÞw(yxvÞwDy‹vŸJwhyœvŸJxŒy¯v«Jy´yÃv«JzÜyÐv«J{záv«J|,zþq]<}Hzr>}dz%r>}àzÆÔ_>}ôzÆà_G} {ôvÙJ~<{ª^åJ`{}mïJ€t{þvÿJ˜{Áë_L‚Ä{ÁÏs)ƒÜ{Áüs:„ô{Á+tØD„ |Á[tØD…,|ÁtSF†L|Á Ãt¤ˆ\|Á ût>ˆx|ÁNl„=ˆ”|Á…l=ˆ´|ª^VKˆÔ|ül>‰}ª^‚K‰,})w†‹„}2wÁK‹˜}DwÆK‹¼}YwÒK‹è}YwßK‹~ìc>Œ(~Æk†ŒX~ÆÔ_>Œx~Æà_GŒ¸~{wùKä~wLŽ ¦wLdÒwùK’¤ÝwùK“Ðöw9L”,€xJL–ˆ€(xRL—¨€CxZL˜Ü€dxhL™xL›h—xL¤¿xhLŸèÒx³L¡‚Üx¾L¢@‚ÿxÛL¥¸‚dxëL§0ƒyùL©\ƒ1yMªƒHyM¬ădy/M®øƒçy‰M°ø„z™M²8…z¨M´°…0z¼Mµt†>zÂM·”†TzÏM¸¸†pzéMº؆‹zöM»ø†ªz N¼H‡¾zN¿‡Ùz1NÁ؇øzYNÃPˆ{qNÆœˆ {…NÈèˆ={•NÊ0‰¿xëLÌ„‰ª^:Τ‰|{ÏNÎȉ„{èNÏ܉ª^:Ïü‰‹k/<ÏЊ|{YOÏ<‹„{wOÑP‹ª^:Ñp‹Ã{ëOÑ”‹Ð{ñOѸ‹|{)Òä‹„{BPÓø‹ý{>Ó Œ|kPÓ Œ|yÓ4Œª^pPÔXŒª^“PÖtŒ›|›PذŒŸ|¤PÙÌŒ¨|®PÛ茭|®Pܲ|>Ý$»|>Ý8Ç|·PÝLÍ|½PÝ(ŽÛ|½Pß@Žé|½Páõ|½Pãè}ÒPå}ÜPç4Æk†è }†è¼Æà_GèèÆÔ_>鑪^yél‘ª^ïPêà‘0}ôPëô‘8}ôPë’A}Që4’R} Qì’X}QîØ’d}Qðü’j}¤ò“u}¤ò<“%v5Qò0” v5Qô•}5Qöˆ•‹}{Qø¨––}5QûÈ–¢}5Qýè–­}5Qÿ—Ã}¤@—Ò}¤h—!rQˆ—á}½Ph˜ô}½PD™ ~«QÌ™ ~ÜP š ~ÃQ €š ~ÊQ ØšF~ôQ T›Q~¤ p›]~Q Ô›g~Q ä›t~Rø›~~ R œÁë_LHœ‹k/<dœ‹k/<|œª^:œË~;R¤œÕ~¤¼œâ~;RМï~¤èœÿ~BRüœ¤ìc><æÔ_U´æÔ_>Ðæà_\”žæà_œRTŸæà_GxŸª^:ŒŸª^y¨Ÿd>¼Ÿª^yØŸd>쟪^•S ª^œS$ d>< ª^£SX d>p ª^:„ 6ªSœ >¤ ´ IÀS РW¤&è bÒS&¡j¤)¡ìc>)@¡ª^T)h¡`p¤,|¡jpr,¡†p¤,¤¡ª^ˆT,ä¡`p¤2ø¡jp˜T2 ¢†p¤2 ¢p˜T24¢šp¤2H¢{žT2\¢ª^ U2„¢`p†5˜¢jp U5¬¢†p˜T5À¢ª^U5Ü¢`p¤6ô¢jpr6 £†p¤6$£ª^‹U6@£`p¤7X£jp˜T7p£†p¤7ˆ£p˜T7 £šp¤7¸£{žT7Уª^—U7ì£`p†8¤jp U8¤†p˜T8ƘžU8Æ ¢>8Æ ±>84¤Þ€†8H¤ö€ZV8\¤ |V8p¤ ‚V8„¤1>8˜¤@>8¬¤O>8À¤_>8Ô¤m¤8褀¤8ü¤ª^ˆV8\¥‚¸VB”¥ª^¬B´¥ª`†CÈ¥ª^¬C४^óVDd¦)w†Gx¦‚¤GŒ¦›‚ÁKG ¦¤‚WG´¦®‚WG §Æk†I4§ÆÔ_>IH§Æà_GIl§Áë_LJh¨‹k/<K„¨ª^yK ¨+ƒaWL´¨7ƒ¤N̨FƒjWNà¨Tƒ¤Pø¨eƒvWP ©pƒ¤Q$©~ƒWQ8©Šƒ¤SP©ìc>Sd©æÔ_US„©æÔ_>T ©æà_\Tè©æà_WVªæà_GW4ªª^ÊWXXª`pÙWZlªjpßWZ€ªª^.XZœªd5X[°ªª^ƒX[Ôª`p5X]èªjpX]üªª^‚K] «`pÁK_4«jp>_H«ª^'Y_d«`pÙW`|«jpßW`”«ª^3Y`°«d5XaÈ«ª^?Yaä«`p5Xbü«jpXb¬ª^KYb0¬`pÁKcH¬jp>c`¬‹k/<c­ª^yc,­s‡XYd@­…‡¤eX­š‡mYel­¥‡¤g„­³‡ƒYg˜­Ǥg°­Õ‡ƒYgÄ­gÜ­ ˆƒYg𭈤g®/ˆƒYg®=ˆ¤g4®MˆXYgH®[ˆ¤h`®lˆƒYht®}ˆ¤hŒ®ˆƒYh ®ˆ¤h¸®¬ˆƒYhÌ®¼ˆ¤hä®ΈƒYhø®߈¤h¯òˆƒYh$¯þˆ¤h<¯ ‰XYhP¯‰¤ih¯1‰XYi|¯?‰¤j”¯P‰XYj¨¯\‰¤kÀ¯k‰2ZkÔ¯‰¤l쯚‰2Zl°²‰¤m°͉TZm,°܉¤nD°î‰jZnX°Фop°ŠjZo„°/Фpœ°HŠjZp°°\ФqȰsŠjZqܰ‰Š¤rô°¢Š§Zr±µŠ¤s ±ËЧZs4±àФtL±øŠ§Zt`± ‹¤ux±!‹§ZuŒ±6‹¤v¤±N‹ãZv¸±\‹¤xбm‹XYxä±{‹¤yü±Œ‹[y²Ÿ‹¤z(²µ‹[z<²Ç‹¤{T²Ü‹XY{h²다|€²ý‹ƒY|”²Œ¤|¬²ŒƒY|À²$Œ¤|ز7ŒƒY|ì²DŒ¤|³SŒƒY|³dŒ¤|0³wŒƒY|D³Œ¤|\³ìc>|p³æÔ_U|³æÔ_>}¬³æà_\}ô³æà_$[8´æà_G€\´ª^ãx´dÁK‚Œ´ª^ô[‚¨´dû[ƒ¼´ª^ô[ƒØ´dû[„ì´ª^ㄵdÁK…µª^‚K…@µ`pÁK‡Tµjp>‡hµª^Œ]‡„µd’]ˆ˜µª^Œ]ˆ´µd’]‰ȵª^Œ]‰äµd’]Šøµª^Œ]жd’]‹(¶ª^"_‹D¶d)_ŒX¶ª^"_Œt¶d)_ˆ¶ª^"_¤¶d)_ޏ¶ª^"_ŽÔ¶d)_趪^¾`·dÅ`·ª^+a4·d1a‘H·ª^+a‘d·d1a’x·ª^ã’”·dÁK“¨·ª^ã“Ä·dÁK”Ø·ª^ã”ô·dÁK•¸ª^ã•$¸dÁK–8¸ª^vc–\¸`pr˜p¸jpÁK˜„¸ª^㘠¸dÁK™´¸ª^&d™иdÁKšè¸ª^2dš¹dû[›¹ª^>d›8¹dû[œP¹ª^Jdœl¹dÁK„¹ª^Vd ¹`pÁKž¸¹jp>žйª^bdžì¹d’]Ÿºª^ndŸ ºd’] 8ºª^zd Tºd’]¡lºª^†d¡ˆºd’]¢ ºª^’d¢¼ºd)_£Ôºª^žd£ðºd)_¤»ª^ªd¤$»d)_¥<»ª^¶d¥X»d)_¦p»ª^Âd¦Œ»dÅ`§¤»ª^Îd§À»d1a¨Ø»ª^Úd¨ô»d1a© ¼ª^æd©(¼dÁKª@¼ª^òdª\¼dÁK«t¼ª^þd«¼dÁK¬¨¼ª^ e¬ļdÁK­ܼª^e­ø¼`pr®½jpÁK®(½ª^"e®D½dÁK¯\½ª^/e¯€½gq>e±”½«ŒßW±¨½Æà_G±à½ÆÔ_>²ü½Æk†²¾˜˜T²DÓÀŒÀh²`ÓØŒÞh³„Ó›‚ÁK³œÓäŒîh³¸ÓõŒ÷h´ÔÓ÷h¶ìÓ"i¸Ô/'iº4Ô/7i¼`Ô?Ji¿ÔMUiÁ¨ÔpdiÄÀÔ¤viÈìÔ¤iÉÕ·‹iËDÕ·—iÍpÕÀ¦iЈÕѲiÒ ÕéÁiÕ¸ÕÿÚi×äÕŽëiÙÖ5ŽóiÚ(Ö>ŽjÛTÖHŽjÝ€Ö]Žj߸֎-jâÐÖŽŽWjä׎ŽojçPםބjé×¯ŽŸjí¼×»ŽîhðÐ×ÇŽ÷hñì×ߎ·jóØ÷hø$Ø'Ìjú@Ø0JiüpØ9ÖjþˆØ8ëj´Ø8ôjäØGýjøØT¦iÙ[÷h0Ùek\ÙŠk pÙ$k ´ÙÈ=käÙFk$Úª^/e<ÚXLÚª^kpÚz¡kŒÚ¶k Ú¨W´Úª^¼kÐÚÊo:üÚà_ÊkHÛÆà_GlÛÆÔ_>¤ÛÍ|×k¼ÛÛ|×kØÛÁ!o:ðÛ¶kܪ^ákÜ‘¤<Ü"‘¤hÜ4‘l”Üà_l ÐÜÆà_G!ôÜÆÔ_>"ÝÍ|"l"4ÝÛ|"l$PݨW&dÝv‘=l&xÝ‘r&ŒÝª^Fl&°Ý‹‘W)ÄÝ’‘=l)ØÝ‘r)ìݪ^¡l)ŒÞª^:+¼Þô‘¹l+øÞþ‘:+4ßþ‘é+$àÊo:,áM’¤,€á‘¤,Ìá4‘l,tâd’ïP.ìâo’n/ãÁ!o:1@ãª^:1xã’’Þ1ì㦒)1€äÙq>2”äš’y2Låª^.n3ˆåô‘¹l4¤åþ‘:4ÀåÊo:4èåÁ!o:4æ‹k/<4(æª^:4<æî’@n4Pæìc>4`æª^:4„æ “bn4œæ$“¤5Ìæ7“‚n5ç;“n6ç‹k/<7,çª^:7LçM“bn7tçU“n8ˆçÀ“¹l8œçÊ“ën8°çÔ“øn8ÄçÞ“o8Øçê“ o8ìçª^o8$è”^o=8è”ko=Lèª^qo=pè”Ào?„èª^­o@ èdÙoA´èìc>AÄèª^:AÜèE|þoAðè$”pAé4”(pBé;”5pC,éR”NpDDé^”npF\éd”‰pHtéj”¢pJŒéw”ÁpL¤éÚpN¼éߎõpPÔéª^ÍHRôé´i?Sê¿”QqU$êÕ”\qU8êá”™qUTêó”ËqVtê•/<V¤ê#•óqVÀê)•rWøêT•0rZ0ëZ•`r\Lëp•wr]ˆëÕ0rb°ëÒ•¦rdÌë앵reì&–Írg ì<–ùri<ìH–#sjXìg–lsk¤ìŠ–¾snÀ슖tqÜ슖htuü슖ÌtzíÌ–Pu€@í×–­u\íí–Þuƒxíô–\q„Œí—\q„ í—v„¼í$—9v†ØíW—Mv‡ôím—`vˆ îª^³vŠTî¶—ærŒˆîÞ—Þ ïè—¤ ï¸n:Xïô‘¹ltïõ—:ï˜:¼ïÁ ˜¤ÜïÁ <˜¤ðïÁ y˜Qw ðÁ ¡˜r ðÁ!o:8ðª^:Œðx™¿w¸ð‚™>ñ™™÷wTñ¬™÷wŽ”ñ™4xèñÌ™Nx‘òæ™Nx‘Xòú™Nx‘”ò š)‘Øòšñx’üòšy”ó!šiy–8ó,šˆy—XóÁ!o:˜Œó4šŸy˜¸ó@š¶y˜èóª^ÍH™ôTš)š$ôª^z›Œô‚™>¨ô¹š>¼ôÌšyÔôßšIzžøôéšIzŸõT•: tõ š) õöšÊz¡ ö$›ûz£Hö1›G{¥¸öV›½{§0÷,šÜ{©`÷!šì{ª÷š|«À÷š%|­ð÷T•a|¯øÁ!o:±0ø„›Ì|±DøŽ›(~²àø­›]~³ù»›«~´lúà›Ë~·°úó›ê~¸Äúœ¹àú*œ8ºøúrœb¼ûˆœb½0û›œ8¾Hû·œbÀdûÇœbÁ€ûÞœ¸Â”ûöœÃ°ûÿœÖÃÌûéÄèûûÅü€Æ0ü33€Ç\üKZ€Èpüª^:ÉxüF´i„€Éüª^:ʘüF´i„€Ê°üª^¥€ËÐüáNl„=Ìüüá…l=Ì,ýÆpq)ÌTýÆùo:Í|ýÆïqØDͤýÆ@uØDÎÈýÆIuSFÏ<þÆ\u¤ÑLþÆÙq>Ñhþª^:ÑpþF´iѰþª^:Ò¸þF´iÒøþª^¹}ÓÿáÏsóEÕDÿáüs:Ölÿá+tÿEÖ”ÿá[tÿE×àÿátFØ„áÃt¤Ú”áût>Ú°áNl”EÚÜá…l=Ú Æd3Ú0Æu+@ÛXÆkuºEÝxÆtuáEÝ”Æpq+@ݼÆãqØDßàÆPuêEàÆïqØDâ@ª^:ãHF´iÑ‚ã\‹k/<ätËqú‚䌣&ƒæ°Ñu\ƒèȇq£ƒêäÏqåƒì šA„î$pq‰„ñ<ßm§„óTÒß„õhÛ …ö€ñŸ…øÆž)úÆh>ûÆž:ü¬ª^:üÌÁ)ž)üìÁCžh>ýÁ^ž:þ<ª^ÿ…þ`Æž)äÆh>Æž:ª^æ‚@Æßmø>lª^ņÆž)Æh>0Æž: Lª^Cƒ pÆßmø> œª^ƒ ¬F´iŸJ Ъ^ƒàF´iØDª^Û‡,Æž)ÐÆh>ìÆž:ª^$„4Æßmø>pª^~ˆ”Æž)äÆh> Æž: ª^Ô„< Æßmõˆl ª^!‰  ƾm)#Ì ÆÅmh>$ ÆÓm:%h ª^!‰%œ ƾm))È ÆÅmh>* ÆÓm:+d ª^M‰+ˆ ÆÊo:-° ª^…-Ô Æßmø>/, ª^P…0< F´iìD1t ª^p…2„ F´iìD3¼ Ëq•Š4è ‡qúŠ6 Ïq}‹8P ÑuÖ‹:| šcŒ<° pqŒ?È Ò/Aü Û}B4ñŽDpª^lŠFˆF´iwŽH°ª^ÒŠIÈF´iwŽKôª^%‹LF´iwŽOPª^½‹PhF´iwŽR ª^%ŒSÀF´iwŽVª^éŒWF´iwŽYlª^7PZ|F´iwŽ[˜ª^7P\¨F´iwŽ]Ī^¾^äF´iwŽa<ážZbXýž˜b€ª^:dˆF´iídĪ^þeÔF´ifª^þgF´i)h,ª^þi<F´i0jXª^þkhF´iFl¤ª^þm´F´iFnàª^WoðF´idp ª^WqF´idr8ª^|sT´i˜tpª^:vxF´iŸv˜ª^ÜwØ´i˜}€ª^ܸF´i‘…üª^W† F´id‡(ª^Wˆ8F´id‰Tª^|Šp´i˜‹Œª^:”F´iŸ´ª^(‘ŽÌF´iž‘dª^W‘tF´i0’ª^‘“ F´iÌ‘”´ª^‘•ÄF´iÌ‘–äª^Ý‘—üF´iê‘™,‰ ’št¯ D’ž¾ [’ ØÉ µr¤ðÖ ¦r¦é ¨’§ù Ö’©8ª^“«HF´i.“¬ª^“­ F´i?“®¼ª^M“¯ÔF´i_“±øª^e“²F´io“³dª^z“´ŒF´i“¸äª^œ“¹ôF´i§“ºª^³“»(F´i§“½„ª^“¾”F´i.“¿Üª^“ÀìF´iÊ“Áª^ÍHÂ(ƾm)ÃDÆÅmh>ÄTÆÓm:Åd)•t”Å<T•”Èdp•¦”ʪ^sÏ F´iºvÐÀª^sÑÐF´iø”Òðª^sÓF´i•Ô ª^:Õ(F´i•Õ<ª^:ÖDF´iø”ÖTª^:×\F´i•×pª^ÍHØ€F´iºvÙ ª^ •Ú°F´iø”ÛЪ^-•ÜàF´i•݃¡¸Þ¡9vÞ0›¡\qßH­¡\qß`À¡{•ß°ì¡Á•áèû¡Ð•â¢Ð•å<¢ï•èl*¢ –éˆa¢1–êÐk¢G–ì ¤¢–î` ®¢¯–ñ˜ ª^Ó–ô¨ F´i•õÌ ª^æ–öÜ F´ió–÷!ª^Ó–ø!F´i•ùì)d¤¯š@*j¤æšB$*†¤"›D@*¤^›F\*¬¤QqHt*Á¤‹›HŒ*Õ¤\qH *ߤž›HÀ*椹›Jì*õ¤÷›L +ú¤œN(+ª^:P<+WŸÓPP+¥¤Qh+k¡ì”Q|+¹b¤R”+e¡Ø”R¨+(¥¤SÀ+ìc>Sè+ª^)S,dÞT,ª^h>T4,dn>UH,ª^7œUd,dãœVx,ª^IV”,dÞW¬,ª^eWÈ,dn>Xà,ª^Xü,dãœY-ª^ŒY8-´i[p-ª^Œ\”-´i:^Ì-ª^Œ^ð-´i`(.ª^†™ah.F´i•h¸.ª^†™iø.F´i•pH/ª^­oqX/F´i¬—rÌ/ª^)sÜ/F´i¬—t(0ª^öu@0F´iºvwÜ0ª^{žxô0F´i•z1ª^Pš{41F´i¬—}Ì1ª^›š~ä1F´i¬—€¤2ª^Ÿ¼2F´iºvƒT3ª^Ÿ„l3F´iø”†4ª^Ÿ‡ 4F´i•‰´4ª^ÒšŠÌ4F´i¬—Œd5ª^§Ÿ|5F´iø”¬5ª^ ›Ä5F´i¬—’L6ª^韓d6F´i••ì6ª^J›–7F´i¬—˜d7ª^:™l7F´i& ™”7ª^:šœ7F´iI šÄ7ª^)›Ô7F´i0œø7ª^i 8F´i“Ÿ08ª^„  @8F´i_“¡\8ª^¦ ¢t8F´i“¤œ8ª^Ú›¥¬8F´iÆ ¦Ø8ª^Ùq§è8F´iÞ ¨ü8‹k/<©9Ÿ¥&¡©D9®¥G¡«°9¸¥q¡°ä9ĥС³ :Υơ·d:Ú¥Ù¡¹ :륢»¸:õ¥£¢¾8; ¦Ì¢Ã€;*¦£ÆÜ;=¦S£ÎH<G¦~£Óœ<Z¦ø£Úô<q¦-¤Ý=‚¦†¤Þl=Ÿ¦ ¥ã¨=°¦n¥ç>º¦”¥ê0>ĦɥîL>ݦë¥ñh>‹k/<ô >ª^:ô¨>F´i¦ô¼>ª^ ¦õØ>´iö?ª^¦÷?F´i0øGª^$ª? GF´i•ADGª^2ªBtG´ieªFÌGª^kªHäGF´i¨©JhHª^«ªK€HF´i·ªM¸Hª^ærNÈHF´i¬—OXIª^:P`IF´iìªPtIª^sQ„IF´iÞ R¨Iª^sS¸IF´i0TÔIª^:UÜIF´i!«UøIª^4«VJF´i!«XdJª^BsY„JF´iÞ \èJª^Bs]KF´iÞ `DKª^saTKF´iÞ b”Kª^u«c¸K´ieÜKª^¦«fLF´i•jxLª^ä«k¨L´i?oôLª^,¬pMF´i^¬t”Mª^”su´MF´i¬xNª^”sy(NF´iÞ |XNª^÷s}pNF´i¨Nª^Mt€ÈNF´iƒOª^­t„,OF´iˆpOª^˜­‰€OF´iwŽŠ¤Oª^˜­‹´OF´iñ¨ŒØOª^˜­èOF´iø¨Ž Pª^"¤PF´i$®ˆPª^:‘PF´iF®‘ðPª^:’øPF´iÊ“’@Qª^‹®“pQ´i— Qª^Ë®˜ÐQF´iü®Rª^ ¯ž,RF´i• LRª^A¯¡|RF´iwަäRª^A¯§SF´i˜¯¬LSª^·¯­\SF´i̯®ŒSª^ݯ¯´SF´i^¬³€Tª^‹u´˜TF´i¬¶ÌTª^‹u·äTF´iÞ ¹Uª^:ºUF´iô°º,Uª^ ¦»HU´i¼pUª^±½ˆUF´iºv¿´Uª^±ÀÌUF´iø”ÂøUª^±ÃVF´i•ŪV¸6ÀpRª†¸7üp`ªÍ¸8XqlªÅ¹90r‰ª º<ÀržªÇº=Hs´ªðº>dsê!»?€sת¹»@Üs檹»A8t#«ë¼BôtI«kCu{«]½D$u«]½E@uª^:FHuF´iȽF\uª^:GduF´iã½Gxuª^:H€uF´iȽH”uª^þ½I´uF´iŒ¾Lhv¼¬U¿MÄvˬz¿Oàv߬˜¿Pôv꬘¿Pwö¬˜¿Pw ­˜¿P4w­˜¿PLw­¿Ppw*­9LQ°w2­·¿SôwD­ù¿TXxV­TÀUÜxh­ÃÀV„yz­èÀW¸y…­¹»X z˜­XÁYPz¦­›ÁZ´z³­òÁ[{Å­0Â\X{Õ­kÂ]´{é­ÉÂ^|ú­4Ã_t|®°Ã`Ô|#®ùÃa<}3®UÄbœ}A®UÄcü}Q®ÉÂd\~a®¹»eè~s®¹»ft…®•Åg€€”®XÁh0¢® Æi¯®LÆjà¿®›Ák ‚Ю¹»lt‚â®Çmø‚ý®¹»nLƒ¯ªÇo„!¯±ÈpÄ…4¯/Éq‡D¯±Ér ˆT¯Ês‰e¯qÊtDŠq¯¹»u˜Š|¯›ÁvØŠНÍÊw<‹•¯)Ëx¼‹¢¯¬Ëz\Œµ¯VÌ{ɯ¸Ì|Xè¯ïÌ~¨°Í€ü°Í‚PŽm°Ä̓|”t°ÌÍ„ ”}°Ý͆È”ƒ°æÍ‡ô”‰°ò͉(•°ÎŒ`••°,Δ•Ù°,ΔÈ•ê°QΘ – ±¿šX–±`Λ¤–*±wÎ`—=±†ÎŸœ—G±ýj¡¼—M±îh¢ì—U±¦i£˜b±·j¥8˜{±÷hª\˜‘±j¬Ș¤±ói®D™¯±ØÎ¯Ä™º±j²4šƱ-j´¸šÕ±϶›å±Ui¸›ô±j»¸› ²i½œ%²vi¿xœ6²‹iÀG²—iÂZ²ÚiÅЇ²2ÏÇhž²BÏÉŸ¼²UḬ̈Ÿ̲hÏÏ\ Þ²7iÓÔ ù²'iÖ<¡ ³diØì¡,³÷hÜd¢8³•ÏÞÄ¢F³²iàð¢L³¶ÏãP£`³Ái娣m³-Ðç¼£–³8Ðç裧³ZÐ餻³RLë,¤Ò³rÐìL¤ô³ÜÐíà¤N´ÜÐòì¥k´¸Ì÷$¦~´nÑù\¦‘´vÑû„¦¤´„Ñý ¦©´ÒÑÿ$§Ì´Òt§í´IÒ̧ý´uÒ (¨µîÒ ”¨µîÒШ/µÓø¨LµðÓt©^µ(Ô´©lµDÔ@ªxµcÔ¤ª“µŒÔøª«µ”Ô «½µ­Ô„«ɵ»Ô°«ÕµÉÔ¬ãµõÔ$¬ïµ(Öœ¬÷µ=Ö À¬¶UÖ!ø¬ ¶lÖ",­¶Ö$L­¶—Ø%`®%¶¼Ø&œ®/¶¼Ø'¸®8¶ÍØ(ä®D¶áØ)¯T¶ÍØ*4¯e¶Ù+€¯r¶YÙ,ȯƒ¶ÎÙ- °’¶Ú.<°¡¶Û/¤±ĶåÜ0ежúÜ1äµê¶Ý1øµ·qÝ1·!·ªÝ3¼·<·ÈÝ6Ø·I·IÞ7˜¹p·~Þ:ì¹z·†Þ;º’·—Þ;º¯·=k;PºÕ·`ß>”ºL¸áBļ^¸kDT½|¸$kE½ž¸kIཪ^>áJ¾¯¸>Md¾¸¸`áM¿Ô¸táNP¿ª^:OX¿F´iyáOl¿ª^¬P|¿F´iáQœ¿ª^¬R¬¿F´i•áSÌ¿ª^:TÔ¿F´iœáTÀª^:VÀF´i¦áVPÀª^:XXÀF´i°áX”Àª^:ZœÀF´i°áZØÀª^ã\èÀF´iºá]$Áª^:^,ÁF´iÂá^HÁª^:`PÁF´iÔá`xÁª^:a€ÁF´iäáa¤Áª^:b¬ÁF´iõábÄÁª^ýádÔÁF´iPÔeðÁª^¬fÂF´iâg ª^ýáh0ÂF´i âiLª^:jTÂF´iâjlª^%âk”ÂF´iâoPê^ýáp`ÃF´i âq|ê^mârŒÃF´iPÔs¨Ãª^¬t¸ÃF´i8ÎuØÃª^:vàÃF´ixâvøÃª^ãwÄF´ixâx$Ī^yy4ÄF´ixâzPĪ^){`ÄF´iŽâ||Ī^y}ŒÄF´iœâ~¨Äª^:°ÄF´i©âÄĪ^¾â€ÔÄF´iÙâôĪ^óâ‚ ÅF´iœâ„4Å;¹Hã…HÅD¹>…\ÅM¹Tã…pŪ^_ㅘŪ^ýረÅF´iPÔ‰ÄŪ^:ŠÌÅF´iuãŠàŪ^†ã‹ðÅF´iãŒÆª^:ÆF´i©â,ƪ^³ãŽ<ÆF´iËãXƪ^âãhÆF´ié㑄ƪ^úã’¤ÆF´iOä•ôƪ^Xä–ÇF´iOä—0Ǫ^gä˜HÇF´iO䚈Ǫ^Šä› ÇF´iOäØÇª^žäžèÇF´iOäŸÈª^: ÈF´iuã $Ȫ^âã¡4ÈF´iéã¢PȪ^­ä£hÈF´iO䥰Ȫ^Ýä¦ÐÈF´iòä©Éª^yªÉF´iòä«8ɪ^ûä¬PÉF´iå®xɪ^ûä¯ÉF´i屸ɪ^å²ÐÉF´iå´øÉª^:µÊF´i©âµÊª^¾â¶$ÊF´iÙâ·Dʪ^:¸LÊF´i©â¸`ʪ^³ã¹pÊF´iË㺌ʪ^:»”ÊF´i©â»¨Êª^³ã¼¸ÊF´iËã½Ôʪ^:¾ÜÊF´i/å¾ðʪ^Bå¿ËF´iUåÀ˪^:Á$ËF´iUåÁ@˪^:ÂHËF´iUåÂd˪^:ÃlËF´iUåÈ˪^båĸËF´iUåÉ̪^:ÊÌF´iUåÊ,̪^:Ë4ÌF´iUåËP̪^:ÌXÌF´iUåÌt̪^:Í|ÌF´iUå̪͘^¾åΨÌF´iUåÏÈ̪^ûäÐàÌF´iUåÒͪ^:Ó ÍF´iUåÓ<ͪ^:ÔDÍF´iUåÔ`ͪ^:ÕhÍF´iUåՄͪ^:ÖŒÍF´iUå֨ͪ^Öå×ÐÍF´iUåÛΪ^ûäÜ,ÎF´iUåÞdΪ^:ßlÎF´iUå߈Ϊ^:àÎF´iUåà¬Îª^:á´ÎF´iUåáÐΪ^:âØÎF´iUåâôΪ^:ãüÎF´iUåãϪ^:ä ÏF´iUåä<Ϫ^éåLÏF´iUåætϪ^¬ç„ÏF´iUåè¬Ïª^æé¼ÏF´iUåêäϪ^ æëôÏF´iUåìЪ^æí,ÐF´iUåîTЪ^æïdÐF´iUåðŒÐª^æñœÐF´iUåòÄЪ^æóÔÐF´iUåôüЪ^#æõ ÑF´iUåö4Ѫ^y÷DÑF´iUåølѪ^(æù|ÑF´iUåú¤Ñª^ïPû´ÑF´iUåüÜѪ^-æýìÑF´iUåþÒª^:ÿÒF´iUåÿHÒª^Öå pÒF´iUå ´Òª^2æ ÌÒF´iUå ôÒª^: üÒF´iUå Óª^Læ (ÓF´iUå lÓª^: tÓF´iUå Óª^ã  ÓF´iUå ÀÓª^¾å ÐÓF´iUå ðÓª^[æ ÔF´iUå Ôª^¾å 0ÔF´iUå PÔª^[æ `ÔF´iUå €Ôª^: ˆÔF´iUå ¤Ôª^y ´ÔF´iUå ÔÔª^: ÜÔF´iæ üÔª^: ÕF´i±æ $Õª^Îæ 4ÕF´iÖæ PÕª^ßæ `ÕF´iëæ |Õª^ç ”ÕF´iPÔ" ÔÕª^.X# ðÕª^:$ ÖFBÆh+2$ Öª^+2& 4Ö!i5X( HÖª^ç( `ÖF´iÖæ* €Öª^7ç+  ÖF´iQç. ØÖª^:/ ðÖÆÔ_kç/ ,ׯà_€ç0 p×3ºŸç2 „ת^©ç4 ¨×`pà6 ¼×jp>6 Ð×ìc>6 à׿Ô_U6 0ØæÔ_>7 LØæà_\7  Ø:ºÊç9 ÄØæà_Ûç: Ùæà_G; 8ÙAºöç< LÙª^žä= hÙdè> |Ùìc>> ŒÙª^:> ¤ÙÆÔ_è> ÀÙÆà_è? ÜÙª^:A äÙF´i?èA TÚª^VèB dÚF´ièC œÚª^VèD ¬ÚF´iªèE äÚª^:F ìÚF´i?èF 0Ûª^VèG @ÛF´iÚèH €Ûª^:I ˆÛF´iuãI œÛ€ºéJ ìÛºéK 0Ü•ºéL `ܺéM èܨº<éO \ݳºÒéR àÝ÷ºûéU ôÝþºFàU Þ »=WU Þª^êU DÞª^:X LÞF´i êX lÞª^êY |ÞF´i'êZ œÞ~»Äê[ üÞ»(ë^ ߦ»Ïë` pß´»3ìc ŒßÆ»ìe ¬ßÖ»¼ìh Èßà»Ûìk Øß÷»Ûìk èß¼Ûìk øß1¼Ûìk à^¼ùKk <àm¼áìl „àª^kìm ”àF´iín ¸àª^¨ìp ÈàF´iKíq ì়Ôís 8á°¼ïív HâǼ,îy TãÙ¼î} ðçð¼ï€ ì½/ï„ Tì ½XÁ… ˜ì#½)ˆ í4½`ïˆ 4îF½lï‹ Dò‹k/<Ž óª^:Ž óF´iŠïŽ (óª^: 0óF´i“ï \óª^:‘ dóF´iŸï‘ €óª^:’ ˆóF´iyá’ œóª^:“ ¤óF´i¨ï“ ¸óª^:” ÀóF´i½ï” äóª^:• ìóF´iäá• ô^½ñï– ,ô„½ñï˜ Dô”½Rðš `ô½½‚ðž |ô佺𡠘ô^½ê~¤ ´ôœ¥ Ðô¾öð¦ ìô*œ8¨ õ›œ8ª $õrœb¬ @õˆœb­ \õ·œb® xõÇœb¯ ”õª^ñ° ¤õF´i,ñ± Àõª^ñ² ÐõF´i9ñ³ ìõª^Qñ´ öF´i̯¶ ,öª^Ûï· <öF´i‰ñ¸ pöª^:¹ xöF´i0¹ ˆöª^0𺠨öF´iäñ½ Ôöª^ñ¾ äöF´i9ñ¿ ÷ª^òÀ ÷F´i9ñÁ ,÷ª^: 4÷F´iò D÷ª^:à L÷F´iтà `÷ª^:Ä h÷F´i0Ä x÷ª^:Å €÷F´i0Å ÷ª^òÆ  ÷F´i0Ç ¼÷u¾IòÈ Äø³¾sòÍ ùÓ¾òÐ Dùß¾òÓ |ùë¾¢òÖ ˜ù¿ÁòÚ ”ú¿ãòß <ü!¿Ûìä Pü7¿úòä |ü߬˜¿æ üm¿ùKæ Äüy¿ùKç üüŒ¿óè Lý–¿Ûìé `ý®¿Cóé ¨ý¿[óë ÜýÜ¿óí 0þù¿óñ hþÀ¶óõ ˆþ(ÀÍóö ”ÿ3ÀÝóù äÿHÀìóü TWÀ/ôÿ ¬qÀbô $Àõ2 8¢À!õ T¹ÀCõ hÉÀIõ ÜÀšõ ðÀÝõ PÁzö à*Á¶ö À7ÁÇö XKÁ<÷! è ^Áw÷*   sÁÕ÷2 „Áù: t¬Ábù@ €¾ÁlúH ÔÑÁûL „ÝÁöûR ä$¤T ø4Â:üT G¤T TÂéT 4dÂCüU HwÂéV \ª^MüW „ª^iüZ œF´i†ü\ Àª^‹ü] ðF´i†üb 0ª^²üc `F´i†üh œª^Ûüi ÄF´i†üm üª^ýn F´i%ýq Lª^ýs lF´i%ýv œª^ýx ¼F´i%ý{ ìª^ý} F´i%ý€ <ª^ý‚ \F´i%ý… Œª^ý‡ ¬F´i%ýŠ Üª^ýŒ üF´i%ý , ª^,ý‘ L F´i%ý” | ª^,ý– œ F´i%ý™ Ì ª^,ý› ì F´i%ýž !ª^,ý  Æ‚ T €DOÆ W ¤DhÆŸ Y ÐDzÆ© [ øDˆÆ° \ Eƽ _ 4Eª^Ç b \E`p>e pEjp>e „E†pkPe ˜Eìc>e ¨Eª^:e °EF´iã e Fª^:f FF´i f F‹k/<g ´Fª^yg ÐFEÇ/ h äF]Ǥh üFwÇ/ h GƒÇ¤h (Gìc>h i €Gæà_\i ¼Gæà_= k ôGæà_Gl Hª^e“m (HF´iØDn LHª^R o dHF´iX q ¤Hª^^ r ÔHF´ix w Iª^!z IF´i• { @Iª^8| PIF´i¾ } tIª^^ ~ ¤IF´ix ƒ ÜIª^Í † üIF´ið ‰ š ¤Kª^E › ¼KF´i`  ôKª^p ž LF´i Ÿ 8Lª^:  PLÆRvŸ   |Lª^¥ ¢ ¼LF´iÐ © TMª^,ª ŒMF´iÿ ° ìMª^‚± üMF´i ² Nª^:³ $NF´i. ³ DNª^3 ´ TNF´i: µ pNª^3 ¶ €NF´i: · œNª^3 ¸ ¬NF´i: ¹ ÈNm¿ùKº üNÐÇ? » DOãǘ¿½ XOîǘ¿½ lOüǘ¿½ €OȘ¿½ ”OÈùK½ ðO‹k/<¾ Pª^y¾ $P‚È[ ¿ 8PȤÀ PP¡Èc À dP®È¤À |P½Èi À PÈȤÁ ¨PÖȇ Á ¼PäȤ ÔPõÈš  èPɤÄ Qɤ Ä Q%ɤÅ ,Qìc>Å @Qª^mâÅ \Qd» Æ pQª^$ Æ ”Q`pÁKÈ ¨QjpÁKÈ ¼Qª^­ È ØQd¾ É ìQª^cÉ RdÊ Rª^ãÊ 8RdÁKË LRª^\Ë hRd» Ì €Rª^hÌ œR`pÁKÍ ´RjpÁKÍ ÌRª^tÍ èRd¾ Î Sª^€Î SdÏ 4Sª^ŒÏ PSdÁKÐ hS‹k/<Ð €Sª^yÐ œSÁÉ™Ñ °SÐɤÒ ÈSâÉ Ò ÜSðɤÒ ôSʦÒ TʤÔ T'ʺÔ 4T;ʤÖ LTRÊÍÖ `Taʤ× xTsÊß× ŒT‹Ê¤Ù ¤T¦ÊèÙ ¸T´Ê¤Ú ÐTìc>Ú äTª^ýÚ UdÛ Uª^qÛ 8U`pÁKÝ LUjprÝ `Uª^òÝ |UdÞ Uª^sÞ ´U`p†à ÈUjpà ÜUª^üà V`pÁKâ Vjpâ (Vª^â DVdrã XVª^Úã tVdä ŒVª^áä ¨V`pÁKå ÀVjprå ØVª^íå ôVdæ Wª^ôæ (W`p†ç @Wjpç XWª^ûç tW`pÁKè ŒWjpè ¤Wª^è ÀWdré ØWÅÊPé ¼Xêʉí hYÿÊ“ï ÔYª^:ñ ÜYF´iŸñ øYª^:ó ZF´iŸó Z*ËËõ dZ3ËËö ¬Z=ËÒ÷ äZžÇáú üZJËèû [PËèü ,[UËèý D[\Ëèþ \[bË ÿ p[mËËÿ À[vËø Ü[Ë ð[–Ë \ Ë \ªË ,\´ËªS D\ÂË p\ÉËø Œ\ÓËø ¨\ßËø Ä\íËø à\Ìø ü\Ìø ]Ìø 4]'ÌO x]CÌ™ Ä]LÌT à]_ÌT ü]iÌT ^t̲ 4^}Ìà p^†ÌT! ˜^ÌT" è^˜Ì# 0_©Ì"% „_¯ÌÃ' À_¾ÌÃ( ü_ÅÌ|) Œ`éÌ . ¬`ÍG3 È`ª^:7 Ð`F´i“ï7 ì`ª^:9 ô`F´i“ï9 aª^:; aF´i“ï; 4aª^:= ! @…žÕ>! T…¬Õ>! h…²Õ>! |…»Õ>! …ÄÕ>! ¤…ÎÕkP! ¸…ª^ð! †ª^:( †F´iü( †ª^:* (†F´iü* @†¯Ï}, t†:Ö. ˆ†NÖ&ÿ. œ†TÖŠ. °†ZÖ&ÿ. ƬÕ&ÿ. ؆`Ö&ÿ. ì†fÖŠ. ‡qÖ&ÿ. ‡…Ö3. (ˆšÖt5 ܈¶Ö&ÿ8 ìˆÆÖÓ8 ‰ØÖÓ8 ‰äÖ‚8 D‰ïÖ™; ô‰פ? Šפ? Š$פ? (ŠTÖ¤? <Š7׎? TŠפ? dŠפ? tŠ?פ? „ŠHר? àŠM×®A T‹‹k/<C „Žª^ÝNC ¤ŽÆòm)D ØŽÆn)E ª^òF (´i?G Dª^I hÆÊo:K ª^jOK °Æòm)L äÆn)M ÆßmgN Lª^òO h´i?P „ª^“R ¨ÆÊo:T Ъ^7PT ðÆòmñOU ‘ÆnñOV P‘Æßmø>W „‘DÙÙX ”‘m¿ùKX È‘ÐÇ? Y ’ãǘ¿[ $’NÙ˜¿[ 8’üǘ¿[ L’YÙ˜¿[ `’fÙÛì[ t’€ÙÛì[ ˆ’˜ÙÛì[ œ’­ÙÛì[ ¬’ÃÙé[ “ÜÙ^ <“öÙ.a ¤“Ú;b ”9Ú(Ôc T”IÚŽd ””kÚ¼e h•žÚGi 8–ÑÚpk Œ–áÚ§n ä–öÚÜp d—Ûår — ÛÜt ¨—Ûîv Ô—(Ûøx ì—AÛ* z ô˜XÛ< } ™qÛ € €™ƒÛž ‚ ¸™™Û© „ Ø™¬Û½ ‡ xšÊÛÍ Š ˜šâÛÞ  0›ñÛç  D›ܘ¿ X›ܘ¿ l›ܘ¿ €›&ܘ¿ ”›3ܘ¿ ¨›>ܘ¿ ¼›Kܘ¿ ЛVܘ¿ ä›cܘ¿ ø›nܘ¿ œ{ܘ¿ œ†Ü˜¿ 4œ“ܘ¿ HœžÜ˜¿ \œ«Ü˜¿ pœ¶Ü˜¿ „œÃÜùK ÏÜ&ÿ ,ÜÜ&ÿ <îÜJL ˜žúÜRL‘ 0Ÿ Ý!’ LŸ&Ý:!“ èŸ@ÝE!•  MÝ]!— d XÝÂM™ ´ gÝéMš ð {ÝöM› 0¡“ÝÆ!œ €¡ÝÏMŸ ¢°ÝZL¡ x¢ÄÝùK¢ ¤¢ÑÝùK£ Ø¢ßÝܤ <£ìÝ7"¦ t£ÞB"¨ £Þ:!ª (¤.ÞE!¬ H¤CÞÜ® œ¤SÞ¿° Ф]Þø± ¥oÞÞ ³ ”¥|ÞR"µ ¦”Þ\"¸ t¦ª^c"º Œ¦F´i†ü¼ ¸¦ª^:½ À¦F´i|"½ ô¦ª^:¿ ü¦F´i†"¿ §ª^ãÀ ,§F´i"Á €§ª^y §F´iž"à À§ª^:Ä È§F´itáÄ ¨ª^:Å ¨F´itáÅ `¨ª^®"Æ p¨F´itáÇ Œ¨ª^:È ”¨F´iÉ"È è¨ª^yÊ ø¨F´iáË ,©ª^:Ì 4©F´iáÌ H©ª^×"Í `©F´iá"Ï Ð©ª^:Ð Ø©F´iLР쩪^:Ñ ô©F´iLÑ ªª^ç"Ò ªF´iLÔ tªª^¨LÕ „ªF´iLÖ ¤ªª^ð"× ¼ªF´iÂN٠說^:Ú ðªF´iù"Ú «ª^ÿ"Û «F´iÂNÝ L«ª^#Þ \«F´iá"ß x«ª^#à «F´iá"â 諪^8#ã ¬F´iÂNå ¨¬ª^:æ °¬F´iÉ"æ ­ª^:è ­F´iáè ­ª^#é 0­F´iá"ê ˜­ª^ÿ"ë °­F´iÂNí Ü­fß^#î ®‹k/<ð <°ª^:ð D°F´i8Îð X°ª^ãñ h°F´i·#ò „°ª^¨Lô ”°F´i3õ ¸°ª^Œ]ö ȰF´i†ü÷ è°4kÅ#ø ±@uÞ#ù ±pqú#û 8±ôv$ý T±ïqú#þ l±>v6$„±ßZ$˜±‹ß6$°±•ßZ$ı¸q¡$à±.kÀ$ô±ŽqÖ$²€qÖ$ ,²‡q% D²Ïq%\²›qB%|²£ßk%œ²Ëq˜%´²­p³%в¬ßÊ%ì²³ßè%³þq&³r!&8³»ß<&L³ÁßÌ|`³Çß6$x³Òßs&! ³Ûßs&#ȳæßs&%ð³õßs&'´àÎ&)4´àÎ&*P´&à'+€´-à&ÿ,´л2',д;à2'/P¶ÑË'2·Kà5(5@¸YÕÎ(9P¹YàR)<ä¹làË'=¨ºsà¢)@,»wàß)C˜»|àô)E¼…àh*H|¼Šà*Kð¼‘à*Md½˜à¬*O„½Ÿà¬*R´½§à+UD¾±à-+Y°¾¹àe+\ô¾Âà-+^TÀÈàã+aèÀØà,e Áíàã,jÈÁáQ-o4Â#á5.pÔÂ0ák.tôÂ9á5.w”ÃFák.{´ÃOá§.~øÃaá×.€LÄsá§.Ä…á×.ƒäÄ—áô.„$Ŧáô.…dŵá]/† ÆÁá’/‡DÆÌáˆlÆ×ሔÆ÷áÏ/ˆôÆâ0‰ˆÇâq0ЬÇ,â1‹,Ì}31ŽhÌ@âM1‘ÐÌLâf1“ìÌSâ–1”Í_â­1—8ÍgâÂ1˜hÍxâû1›°Í~â22Ìͪ^¥HŸäÍF´iØD¡Îª^¥H¢ÎF´iØD¤<Ϊ^¥H¥TÎF´iØD§xΪ^ì-¨ÎF´i|2ª¼Îª^:«ÄÎF´i|2«ÔΪ^ì-¬ìÎF´i|2®Ïª^:¯ ÏF´i|2¯0ωâ¬2°Dϓ⤰XÏÿáÜ/°lÏ â鱀Ϫ^/²¤Ïª^K0´ÈÏá2ôà|à²>4„á…àI?7âã¨?:(ãã¨?@\ãã@FèãLâF@Hä_âm@I ä r£@J<ägâÕ@L|ä~âAOÀäxâ™AQ8åSâ×AS\åµá_BV,æÁáœBWPæÌáXxæ×áX æ÷áCXçâVCYçâ¹CZ´çª^2[ÄçF´iÜC\ðçª^ÄA^èF´iD`Lè‰â(Db`è“â¤btèÿáCbˆè âécœèª^‰BdÀèª^Cfäèá_3ð( k^_5 )¸qh_7X)¾ã}_9¤)Ëq—_;è)Íã£_=,*)äµ_?p*‡ãÍ_AØ*jæÙ_CT+eçß_E”+Žq`HÄ+pçß_Jü+€q`M,,Uk `OT,ª^`Pl,F´i9ñR”,ª^@`S¬,F´iT`UÔ,ª^d`Wì,F´i9ñY-{ç“`Z0-ˆçÏ`[L-$”“`]`-”çÏ`^x-.ka`-¯ç7a`¬-‡ãpaaì-¸qac\.žã±ae¸.¾ãÌag0/€qóai¨/Žqóak 0?ä*bmì0Âçpbp1ÉçÉbr$1‡qcuT1Ëq%cw„1Íã[cy´1Häšc{ü1ÑuÜc~,2Þäd€t2âä]d‚Ø2Šd…3xq¿d†ˆ3¹âèdˆØ3öqeŠh4Ÿâ6eŒ¸4ÝçreŽ$54kÈeÐ5 kÓe‘ü5Ukf’¬6›q*f“ 7PåWf–°7öçŠf˜Ì7GlÁf™8)ä×f›08è÷fœ8 èXg¡L9¬ß)^¤`9þq^¥:³ßÞR¦8:r]~§è:ôvëg¨;ère©<;ÒRh«t;š¤h¬¬;!èÆh¯ø;ºåôh²\<.èi´˜<Íå?i·ü<;èWi¹=Nè”i½t=Wèj¿ð=yèQjÃH>‚èÁjÈ”>‹èƒkËè>‘èƒkÌ?šèákÍ4?¢èƒkÏ|?«è¿lÐÈ?ªå¿lÒø?âŃkÔ(@¶è"mÕX@ëåam×À@ïå€mØ0A æamÚèAæ€mÛ¤BõåamÝPCùåØmÞDÿåamàÄDæØmáŒE¾ècãÄEÈèreåüEÍècç4F¦ä‹né G†ä‹nìäGikamïXHª^‚`ðhHF´iÂnñŒHª^´`ò¤HF´iÂnôÄHª^+aõÔHF´iÂnöðHª^ca÷IF´iÂnù0Iª^UbúHIF´iÂnüpIª^býIF´iÂnÄIª^ƒÔIF´i¢oðIª^T3JF´i»oJª^Hc,JF´i»oHJª^†cXJF´iptJª^Êc „JF´i»o  Jª^: ¨JF´i"p ÀJª^:ÈJF´iOpìJª^ŠdüJF´iÂnKª^RedKF«n:?°LF¸n:0MF¾n¤xMFÍnÞŒMF˜n„=¸Mª^}fÈMF´iÂnôMª^åJNF´i²p$Nª^¥fD4XF˜nÕqD\Xª^kD|XF´irGÐXª^/kHèXF´i0J8Yª^åJKHYF´iÂnLdYª^arM|YF´iwŽOèYª^:PðYF´iórP Zª^:QZF´i!sQHZª^¾kR`ZF´iÀsT´Zª^#lUüZF«n:?\,\F¸n:]”\F¾n¤]Ô\FÍnÞ]è\F˜n„=] ]ª^l]p]F«n:?e¬^F¸n:f_F¾n¤fT_FÍnÞfh_F˜n„=f¨_ª^¾kfÀ_F´iÄDhð_ª^åJi`F´iÄDj(`ª^}tk@`F´iwŽmœ`ª^:n¤`F´iÇtnÐ`ª^moè`F´iOuq,aª^õmrlaF«n:?xhbF¸n:yÐbF¾n¤ycFÍnÞy$cF˜n„=yPcª^Rey˜cF«n:?€ìdF¸n:peF¾n¤¸eFÍnÞÌeF˜n„=øeª^@n@fF«n:?ˆxgF¸n:‰àgF¾n¤‰ hFÍnÞ‰4hF˜n„=‰`hé™u‰théÞuŠh6é/v°hléuv$i†éuv’`i”éáv”ˆi£éÓe–¤i¯éLw—ÜiÂéÙ¡šüiÎéÔwœ0jÝéüwžPjòéKx hjª^)£€jª`Þ¤”jZqB}¤°jª^:¤ÈjÆÔ_¯x¤àjÆà_µx¥øjª^_}§kÆÔ_½x¨¬lÁNl„=¬,lÁ…l=¬Llª^ºu¬llF´iÂn¯”lª^v°¬lF´iìD²Ülª^:³älF´iw޳ÆWꤱ´mª^Çv´4mÁNl„=¶¨mÁ…l=¶Èmª^w¶neé:·ÈnˆêÞ·oÁ“ꤱ· oÁ ìnÞ¸4oÁ Ûàtª^:Ûôtª^)ÛudÞÜ$uª^²{Ü@udï|ÝTuª^Q}Ýpuª^m}ÞŒudÞߤuª^‰}ßÀudï|àÆ ë{àÆ õêÐzàØuª^Ç}àüuÆëï|âvÔëà}â$vR”çpâ`vÁ Ýë{ätvÁ ìÐzävª^~ä¨vF´i²pæÔvª^;~çävF´ie~èTwª^²{é€wÆëï|ê”wÁ ìnÞêÐwÁ Æåí@ƒÆÊo:0€ª^:T€ˆêÞ˜€Á ìnÞ¬€Á °ŠÁ ÌŠÁgo¤>ìŠÁ¥o:>‹Á!o:>$‹ª^ô‚>H‹á‰ª ˜F´i(˜ª^f‰­H˜F´it˜ëîEH²ˆ˜ÿî5H³à˜ïZSµ°™ ïQR·š"ïuR¹$š6力º ›IïQR¼l›]ïuR¾¤›wà%U¿Ü›oïËŠÁ0œúâéTÄœœ‡ï ‹ÆôœþâUÊl›ï…‹Ì ž‚ìÂXШžŠà[\Óäž‘à[\Õ Ÿ·ïeU×XŸ¾ïÁTÙÀŸÂïeUÚ Øï%ŒÜP ïï_߬ ÷ï[Œá¡Ÿìó\ä|¡ ðvŒæ¸¡ðV騡ðáŒë¢5ð2î„¢Cð^ïø¢MðÓTðl£Tð¾ñ°£ÿî.Võø£hðÔ÷h¤ŽðöûȤ«ðöþ(¥Éð ]¸¥ÓðHŽ4¦öð3]¤¦üðÞŽT§ñX] ä§ ñU €¨3ñ†]©7ñºÜ©Oñ¦]˜ªTñäÔª_âlIüª~â^I8«`ñÏ]P«mñeUˆ«wñ.! ¬}ñ]%H¬ƒñ{(­šñŸ/ˆ­ ñYU3°­¨ñ‘4ˆ®»ñÏ]7´®}mD‘9Ø®†md‘:ð®Îñ†‘;¯ãñ†‘;0¯÷ñ†‘;@¯ òZ€;T¯&òZ€;h¯BòZ€;|¯†òƒk;Œ¯•òw’< ¯›ò‰’=´¯Ÿò™’>į¥ò¬’?د­ò²’@ °¼òÎ’A °é|Ü’B8°õ|Ü’DP°ô}Ü’Fh°á}Ü’H€°Í|Ü’J˜°Û|Ü’L°°Rvå’NȰÿåû’Pä°õåû’R±Àò#T±Éò“U0±áò#WL±éò#Xh±óòY€±ûòY˜±ó“Y¬±óÚ“ZÀ±í–ò“[б ó”\ä±ó”]ü±#ó)”_²2ó6”`(²?óG”b@²Móa”e\²[ó•”it²gó¦”kŒ²tóÀ”n¨²ó•rÀ²óF•tز¬ó€;vð²»óT–x ³A}s–z$³%v{–{<³ v{–}T³}{–l³–}{–„³¢}{–ƒœ³g~s–…´³Óó…–†̳æó…–ˆä³ôóû’Šü³ôû’Œ´ôû’Ž,´ôs–D´,ôeU‘”´6ô¯–“°´@ô¯–”Ì´¹m •ì´é–µû—µ_ôñ–˜4µhô—™Lµpô—šdµ¤¾)—›|µyô)—œ˜µô ´µ†ô‹Džص£ô^—Ÿðµ°ô^—Ÿ¶¸ôb—Ÿ¶Ëôb—Ÿ0¶Ùôf—ŸH¶âôy— `¶öœÃ¡x¶ÿœÖ¢¶êô£—£¨¶ôô¹—¤À¶þôЗ¥ضk© ¦ ·¬¾ý—§8·õ˜¨|·^”6”ªÄ·õE˜¬Ü·$õE˜¬¸.õf˜¬¸5õ)—¬4¸:õ˜­L¸Fõs–¯\¸aõ—˜°p¸kõ©˜°„¸võ©˜°˜¸ƒõИ°¸¸“õ蘲ظ!rs–µð¸«õs–¶¹°õs–· ¹µõs–¸8¹ºõ™¹P¹Àõs–»h¹Èõs–¼€¹Ìõs–½˜¹ès–¾°¹Òõs–¿ȹ|)—Àà¹Øõs–Áø¹Üõs–ºâõ{™Ã(ºçõs–Ä@ºëõs–ÅXºðõs–Æpºôõs–Ljºùõs–È ºýõs–ɸºöÆ™Êкö…–ÌP»ª^ï”Îh»F´i3лª^0•Ѩ»F´iMšÓлª^:ÔØ»F´i]šÔð»ª^:Öø»F´iKíÖ¼ª^:ؼF´i]šØ0¼ª^:Ú8¼F´i]šÚP¼ÌáÜx¼×áÜ ¼/ö^—ܸ¼;ö^—ÜмGöýöÜ ½Tö{šÝT½]öµšâ˜½mö/›åð½xöi›ê4¾ƒö›íŒ¾Žö»›òоšöÓ›õ¿¥ö œú\¿±ö%œý´¿¼ö_œÀÈöwœXÀÓö±œ ¤ÀàöÉœ ìÀëö0ÁööxÁ÷U¼Á ÷mÂ÷§"HÂ#÷¿%Â.÷ù*ÔÂ8÷ž-ÄD÷&ž14ÄP÷>ž4pÅ\÷Kž8ˆÅh÷ž;ÄÅt÷Åž@ÜÅ÷ŸD4Æ÷]ŸJxÆž÷ŒŸO¬Æ¶÷™ŸSÄÆÀ÷¨ŸU$ÇÊ÷¨ŸW<ÇÒ÷·ŸYœÇÞ÷·Ÿ[´Çç÷ÆŸ]Èó÷ÆŸ_,Èü÷ÕŸaŒÈøÕŸc¤Èø}eüÈø}gÉ'ø¨ilÉ3ø¨k„É=øwmäÉIøwoüÉRøäŸq\Ê^øäŸstÊhøïŸuÔÊtøïŸwìÊ~øþŸyLËŠøþŸ{dË•ø  }ÀË¢ø  ØË¬ø 8̹ø ƒPÌÃø; …ÄÌÐøT ˆìÌÛøe ŠpÍèø© ŽÍüøÕ ’Î ùù •tÎù¡™äÎFù<¡žXÏVùr¡¤Ðuù¬¡«¨Ð…ù硳„Ѥù\¢¼dÒ´ùâ¢Æ¬ÒÃù£ÉäÒÔù'£Ê,Óæùs–ËHÓñùs–ÌdÓýùs–Í€Ó ús–ΜÓú™Ï¸Ó"ús–ÑÔÓ1ús–ÒðÓ<ús–Ó ÔIús–Ô(ÔYús–ÕDÔfú)—Ö`Ôrús–×|Ô}ús–ؘԊú{™Ù´Ô–ús–ÚÐÔ¡ús–ÛìÔ­ús–ÜÕ¸ús–Ý$ÕÄús–Þ@ÕÏús–ß\ÕÛúÆ™àÆ û¤âÆ û¤âÆ%û:âÆ áoÞâxÕª^:â˜ÕÁ ìnÞâ°ÕÁ ¨¾0øF´i¹¨¿Tøª^:À\øF´iǨÀtøª^T3„øF´i3àøª^>¨Ä°øF´i¹¨ÅÔøª^:Æìø‹k/<ÆdùC §§Æxùª^:Æ€ùF´i~¦Æ”ùª^E§Ç¤ùF´i)¤ÈÀùª^:ÉÈùF´i¯¦Éàùª^E§ÊðùF´i)¤Ë úª^:Ì$ú‹k/<ÌœúC §§Ì°úª^:̸úF´i~¦ÌÌúª^E§ÍÜúF´i)¤Îøúª^:ÏûF´i¯¦Ïûª^E§Ð(ûF´i)¤ÑDûª^:Ò\û‹k/<ÒÔûC §§Òèûª^:ÒðûF´i~¦Òüª^E§ÓüF´i)¤Ô0üª^:Õ8üF´i¯¦ÕPüª^E§Ö`üF´i)¤×|üª^:Ø”ü‹k/<Ø ýC §§Ø ýª^:Ø(ýF´i~¦Ø<ýª^E§ÙLýF´i)¤Úhýª^:ÛpýF´i¯¦Ûˆýª^E§Ü˜ýF´i)¤Ý´ýª^:ÞÌý‹k/<ÞDþC §§ÞXþª^:Þ`þF´i~¦Þtþª^E§ß„þF´i)¤à þª^:á¨þF´i¯¦áÀþª^E§âÐþF´i)¤ãìþª^:äÿ‹k/<äpC Á©ä„ª^:äŒF´iѩ䠪^b©å°F´i¯xæÌª^:çÔF´iÖ©çìª^b©èüF´i¯xéª^:ê F´iÛ©êPª^b©ë`F´i¯xì|ª^:í„F´iç©í˜ª^b©î¨F´i¯xïĪ^:ðÌF´ió©ðàª^b©ñðF´i¯xò ª^:óF´iûó(ª^b©ô8F´i¯xõTª^:ö\F´iý©öpª^b©÷€F´i¯xøœª^:ù¤F´iªù¸ª^b©úÈF´i¯xûäª^:üü‹k/<ütC §§üˆª^:üF´i~¦ü¤ª^E§ý´F´i)¤þЪ^:ÿØF´i¯¦ÿðª^E§F´i)¤ª^:4‹k/<¬C §§Àª^:ÈF´i~¦Üª^E§ìF´i)¤ª^:F´i¯¦(ª^E§8F´i)¤Tª^:l‹k/<äC tªøª^:F´i~¦ª^T3 $F´i3 @ª^: HF´i¯¦ `ª^T3 pF´i3 Œª^:¤‹k/<C §§0ª^:8F´i~¦Lª^E§\F´i)¤xª^:€F´i¯¦˜ª^E§¨F´i)¤Äª^:Ü‹k/<TC §§hª^:pF´i~¦„ª^E§”F´i)¤°ª^:¸F´i¯¦Ðª^E§àF´i)¤üª^: ‹k/<Œ C §§  ª^:¨ F´i~¦¼ ª^E§Ì F´i)¤è ª^:ð F´i¯¦ ª^E§ F´i)¤4 ª^: L ‹k/< Ä C §§ Ø ª^: à F´i~¦ ô ª^E§! F´i)¤" ª^:#( F´i¯¦#@ ª^E§$P F´i)¤%l ª^:&„ ‹k/<&ü C §§& ª^:& F´i~¦&, ª^E§'< F´i)¤(X ª^:)` F´i¯¦)x ª^E§*ˆ F´i)¤+¤ ª^:,¼ ‹k/<,4 C §§,H ª^:,P F´i~¦,d ª^E§-t F´i)¤. ª^:/˜ F´i¯¦/° ª^E§0À F´i)¤1Ü ª^:2ô ‹k/<2lC j«2€ª^:2ˆF´i¨2 ª^‡«4°F´iMš5̪^-«6ÜF´i «7ª^:8F´iǨ8 ª^‡«:0F´iMš;Lª^-«<\F´i «=€%v{–>˜ v{–@°A}s–BÈ}{–CàéEøûF_ôñ–G(¬¾ý—H@hô—IXpô—Jp¤¾)—Kˆyô)—L Ùôf—M¸âôy—NÐôô¹—OèþôЗPtûQRvå’Q0à_Ü’SH5õ)—U`ÌáVˆ×áV°ÂïeUVô~ûÓ«X~ì’UZ”ª^y=\ĈêÞ]üÁ ìnÞ]Ágo¤]tÁ ´°€sþG´°”…þP´°¨—þY´°¼©þb´°Ð»þk´°äÎþt´°øßþ}´° òþ†´° ÿ´°4ÿ˜´°H,ÿ¡´°\>ÿª´°pRÿ³´°„fÿÆ´°\wÿÆ´²`ŠÿÆ´´dÿÕ„¶x¼ÿÕ„¶ŒÙÿ{™¶¨ëÿ{™·Ä÷ÿoš¸Ô§¹äǧºô.PE» ?¸§¼ P³§½$ a½§¾4 ƒ¶ó¿d ‰ê´À¤ ù´ÃÜ ˜µÆ!¢µÉd!¬-µÌÜ!·:µÐ"È-µÓx"Õ:µ×œ"ùhµÚ€#  `Û”$ϵÜœ%#ÔµÝt&/ßµÞ´'Fßµàô(Yâ)lâ)~â0)ŠâD)•…–â`)¨…–äx)´â¶æH*Áâ¶ép+Ô{–ìŒ+äâ¶î\,ïâ¶ñ„-{–ô -â¶öp.%â¶ù˜/8{–ü´/Hâ¶þ„0Tⶬ1g{–È1ª^:à1ÆÔ_¯xø1Æà_µx2ª^y 02ÆÔ_¯x L2Æà_µx d2ª^: |2ÆRv¸ ”2ª^:¬2ÆRv$¸Ä2ª^:Ü2ÆRv*¸ô2ª^: 3ÆRv0¸$3ª^:<3ÆRvJ¤T3ª^:l3ÆRv6¸„3ª^:œ3ÆRv<¸´3ª^:Ì3ÆRvB¸ä3ª^:ü3ÆRvH¸4ª^:,4ÆRvN¸D4ª^:!\4ÆRvT¸!t4ª^:#Œ4ÆRvZ¸#¤4ª^:%¼4ÆRv`¸%Ø4ª^:'ð4ÆRvf¸' 5ª^:)$5ÆRvl¸)<5ª^:+T5‹k/<+\6ª`ˆ¸+p6Ÿˆ¸+„6ª^:+œ6ÆRvš'+´6ª^:-Ì6ÆRvš'-ä6ª^:/ü6‹k/</Ü7C Ÿ¸/ð7ª^:/8‹k/</ 9C Ÿ¸/ 9ª^:/89‹k/</0:C -¹/D:ª^:/L:F´iF¹/h:ª^:1p:F´iP¹1„:ª^:3Œ:F´iV¹3 :ª^+a5°:F´i\¹6ð:ª^+a8;F´i7=9;ª^ü¸:,;F´iw¹;P;ª^:<h;‹k/<<ˆ<Ëò¹<œ<ª^T3<¬<F´i3=È<ª^†c>Ø<F´i¬?ü<ª^+a@ =F´i³3AL=ª^T3C\=F´i3Dx=ª^†cEˆ=F´i¬F¬=ª^:G´=F´iõ¥GÈ=ª^:IÐ=F´i‰¥Iä=ª^:Kì=F´iJ¤K>ª^:M>F´i{¤M>ª^:O$>F´i¥O8>ª^:Q@>F´i+¦QT>ª^:S\>F´i¿¥Sp>ª^:Ux>F´iç¤UŒ>ª^:W”>F´i±¤W¨>ª^:Y°>F´iS¥YÄ>ª^:[Ì>F´i¨[à>ª^:]è>F´iǨ]ü>ª^:_?F´i]º_?ª^:a4?‹k/<a|@Ëò¹a@ª^T3a @F´i3b¼@ª^†ccÌ@F´i¬dð@ª^+aeAF´i³3f@Aª^T3hPAF´i3ilAª^†cj|AF´i¬k Aª^:l¨AF´iõ¥l¼Aª^:nÄAF´i‰¥nØAª^:pàAF´iJ¤pôAª^:rüAF´i{¤rBª^:tBF´i¥t,Bª^:v4BF´i+¦vHBª^:xPBF´i¿¥xdBª^:zlBF´i»ºz€Bª^:|ˆBF´iç¤|œBª^:~¤BF´i±¤~¸Bª^:€ÀBF´iS¥€ÔBª^:‚ÜBF´i¨‚ðBª^:„øBF´iǨ„ Cª^:†CF´i]º†,Cª^:ˆDC‹k/<ˆdDËò¹ˆxDª^T3ˆˆDF´i3‰¤Dª^†cŠ´DF´i¬‹ØDª^+aŒèDF´i³3(Eª^T38EF´i3TEª^†c‘dEF´i¬’ˆEª^:“EF´iõ¥“¤Eª^:•¬EF´i‰¥•ÀEª^:—ÈEF´iJ¤—ÜEª^:™äEF´i{¤™øEª^:›FF´i¥›Fª^:FF´i+¦0Fª^:Ÿ8FF´i¿¥ŸLFª^:¡TFF´i礡hFª^:£pFF´i±¤£„Fª^:¥ŒFF´iS¥¥ Fª^:§¨FF´i¨§¼Fª^:©ÄFF´iǨ©ØFª^:«àFF´i]º«øFª^:­G‹k/<­0HËò¹­DHª^T3­THF´i3®pHª^†c¯€HF´i¬°¤Hª^+a±´HF´i³3²ôHª^T3´IF´i3µ Iª^†c¶0IF´i¬·TIª^:¸\IF´iõ¥¸pIª^:ºxIF´i‰¥ºŒIª^:¼”IF´iJ¤¼¨Iª^:¾°IF´i{¤¾ÄIª^:ÀÌIF´i¥ÀàIª^:ÂèIF´i+¦ÂüIª^:ÄJF´i¿¥ÄJª^:Æ JF´iç¤Æ4Jª^:È{ËK¾BT{Ø[¾HÈ{æ[¾SX|ôˆ¾^¤|”¾b4}©¾lx}ã¾sü~7ñ¾wTO´{hf´{|Ü’{¤˜Ü’}̳÷³ðØ&ÿ‚€í¿‚€ ¿‚(€¿‚„€/¿„Ü€D¿…4Z$¿†Œp4¿‡,‚„]¿‰Ø‚˜)—‹ƒ­˜Œ(ƒÉ´ŽDƒêm¿xƒù‰¿’ă ·¿”(„ õ¿–¨„& À˜è„7 @À›L…H qÀžÐ…Y ªÀ¡t†j ÜÀ¤¼†| Á§$‡Ž ;Áª°‡  xÁ­`ˆª^é°€ˆ¾ ¤±”ˆÆÊ Ÿ ±¬ˆÁÓ Ÿ ³Ĉª^:µ܈Æà_ý¾µøˆÆÔ_L· ‰ª^:¸8‰Æà_ý¾¸T‰ÆÔ_Lº|‰ª^y»œ‰ žÁ¼̉Á ý¾¼ì‰Á7 L¾$Šª^:¿<ŠÁ ý¾¿\ŠÁ7 LÁxŠª^:ŠÁ ý¾Â°ŠÁ7 LÄÌŠ &ÿÅÜŠK &ÿÅìŠs &ÿÅüŠš &ÿÅ ‹¾ &ÿÅ‹ w’ÅP‹ w’Æd‹ ¬ÁÇ‹* ¬ÁȨ‹Êoò“ÉЋ7 /<Êø‹@ /<Ê ŒO s–ÊTŒY ²ÁËpŒi½ÁЈŒiîÒœŒŠ „TÒ´Œ“ ŽTÔÌŒœ S‡×䌧 k‡ÚüŒ² ÔÁÞ|Ó ìÁãÈå ŠFéàð ¥Fíüû Âò°Ž 6Âù ! DF<, XFX7 l HO ŒÂäª^:ü‹k/<Бm &ÿä‘z ÇÂø‘ ÇÂ! ’ ÇÂ# ’’ ÇÂ%4’Ÿ `Ã'L’¬ З(d’@-Ð)x’a-Ð)Œ’|-Ð) ’™-Ð)´’³-Ð)È’Ô¿)T“o¼Å*¨”ƒ‘Æ-ä•¡ŠÇ2 —²ˆÉ6ˆ˜È›Ê9è™ÞCË=<›ô^Ë@œœŠËDôÎG˜Ÿ0sÏJ¡F>ÐN˜¢^[ÐQ¤q‹ÐU€¥„¸ÐXÄ¥‹k/<\|§ª^(3\Œ§F´i3]¨§ª^T3^ħ´i3_৪^(3`ð§F´i3a ¨ª^T3b(¨´i3cD¨ª^w8dT¨F´iwŽep¨ª^(3f€¨F´i3gœ¨ª^Â8h¬¨F´i³3iШª^9kà¨F´i;4l©ª^[9o©F´i65p<©ª^»9tL©F´iÊ6ut©œûÑzˆ©ª-Ðzœ©Ã-Ðz°©Ù-ÐzÄ©î-ÐzØ© -Ðzì©!-Ðzª;-ÐzªU-Ðz(ªt-Ðz<ªŒ-ÐzPª©-ÐzdªÁ-Ðzxª×-ÐzŒªò-Ðz ª-Ðz´ª(-ÐzȪ?-ÐzܪQ-Ðzðª`-Ðz«~-Ðz«-Ðz,««-Ðz@«¾-ÐzT«Ô-Ðzh«è-Ðz|«-Ðz«-Ðz¤«>-Ðz¸«g-ÐzÌ«•-Ðz૦-Ðzô«º-Ðz¬Ô-Ðz¬ï-Ðz0¬ -ÐzD¬ -ÐzX¬1 -Ðzl¬I -Ðz€¬^ -Ðz”¬u -Ðz¨¬‹ -Ðz¼¬£ -ÐzЬ³ -Ðzä¬È -Ðzø¬Ý -Ðz ­ñ -Ðz ­!-Ðz4­!-ÐzH­&!-Ðz\­;!-Ðzp­P!-Ðz„­f!-Ðz˜­x!-Ðz¬­!-ÐzÀ­¦!-ÐzÔ­½!-Ðzè­Ò!-Ðzü­ä!-Ðz®ý!-Ðz$®"-Ðz8®*"-ÐzL®="-Ðz`®X"-Ðzt®l"-Ðzˆ®"-Ðzœ®š"-Ðz°®°"-ÐzÄ®Ñ"-ÐzØ®ö"-Ðzì®#-Ðz¯9#-Ðz¯Y#-Ðz(¯v#-Ðz<¯#-ÐzP¯µ#-Ðzd¯Ñ#-Ðzx¯é#-ÐzŒ¯ $-Ðz ¯-$-Ðz´¯M$-Ðzȯj$-Ðzܯ$-Ðzð¯™$-Ðz°¯$-Ðz°Å$-Ðz,°Û$-Ðz@°ð$-ÐzT° %-Ðzh° %-Ðz|°9%-Ðz°N%-Ðz¤°n%-Ðz¸°‰%-Ðz̰—%-Ðzà°±%-Ðzô°Ï%-Ðz±ì%-Ðz±&-Ðz0±#&-ÐzD±:&-ÐzX±L&-Ðzl±a&-Ðz€±‚&-Ðz”±¬&-Ðz¨±Ä&-Ðz¼±Û&-Ðzбû&-Ðzä±'-Ðzø± '-Ðz ²6'-Ðz ²I'-Ðz4²d'-ÐzH²y'-Ðz\²‘'-Ðzp²¬'-Ðz„²Ê'-Ðz˜²å'-Ðz¬²(-ÐzÀ²"(-ÐzÔ²6(-Ðzè²J(-Ðzü²b(-Ðz³|(-Ðz$³“(-Ðz8³°(-ÐzL³Ð(-Ðz`³è(-Ðzt³ÿ(-Ðzˆ³)-Ðzœ³.)-Ðz°³F)-Ðzij^)-Ðzسx)-Ðzì³”)-Ðz´ißz ´À)€;{D´Ë)Ò}l´Ö)Ò€”´‹k/<„Æ`-„Æà_\†ÆÔ_UˆÆk#Ò‰ÆÔ_UŠÆ *>‹<µ–}m2Ò‹Dµ–}m?ÒŒPµ–}mPÒŽ\µ–}meÒ‘hµ–}m~Ò•xµ–}m½Òšˆµ–}mÓ œµ–}m`Ó§Àµ“(*}¯̵“(*ŽÓ±ܵ“(*•Ó´ôµ“(*Ó¸¶“(*¦Ó½$¶“(*°ÓÃ@¶“(*»ÓÊ`¶†`pÞÒh¶†ª^)Òx¶Æà_GÓˆ¶áy*\ÔĶá³*LÖÔ¶áÐ*-×8·ÆÔ_>ÙH·á+UÙ\·á7+UÚh·Æk†Û·áQ+#ÒÛ¸·á h+>ܼ·†`pÞÜÄ·†jpCÜÌ·†ª^+@Üä·Æà_GÞô·áy*\ßP¸á³*Lá`¸áÐ*-âè¸ÆÔ_>äø¸á+Uä$¹á7+Uå0¹Æk†æX¹áQ+#Òæ¨¹á h+>笹†`pÞç´¹†jpCç¼¹††pßçņª^Fuç乯à_Gêô¹áy*\ëlºá³*Lí|ºáÐ*-î(»ÆÔ_>ð8»á+Uðt»á7+Uñ€»Æk†ò¨»áQ+#Òò¼á h+>ó¼†`pÞó$¼†jpCó,¼††pßó4¼†pX"ó<¼†ª^­ód¼Æà_G÷t¼áy*\ø ½á³*Lú½áÐ*-ûè½ÆÔ_>ýø½á+UýP¾á7+Uþ\¾Æk†ÿ„¾áQ+#Òÿ¿á h+>¿†`pÞ¿†jpC$¿††pß,¿†pX"4¿†špÞ&<¿†ª^c­l¿Æà_G|¿áy*\4Àá³*LDÀáÐ*- 4ÁÆÔ_> DÁá+U ¬Áá7+U ¸ÁÆk† àÁáQ+#Ò ŒÂá h+>†`pޘ†jpC Â††pߨ†pX"°Â†špÞ&¸Â†{À*À†ª^­ÒøÂÆà_GÃáy*\àÃá³*LðÃáÐ*-ÅÆÔ_>Åá+UˆÅá7+U”ÅÆk†¼ÅáQ+#Ò„Æá h+>ˆÆ†`pÞÆ†jpC˜Æ††pߠƆpX"¨Æ†špÞ&°Æ†{À*¸Æ†µ+ô/ÀƆª^òÒÇÆà_G$Çáy*\% Èá³*L'ÈáÐ*-(PÉÆÔ_>*`Éá+U*ìÉá7+U+øÉÆk†, ÊáQ+#Ò,Ëá h+>- ˆ`pÞ-ˆjpC-ˆ†pß-$ˆpX"-,ˆšpÞ&-4ˆ{À*-<ˆµ+ô/-DˆË+•Õ-Lˆª^LÓ-¼ËÆà_G5ÌËáy*\6èÌá³*L8øÌáÐ*-9LÎÆÔ_>;\Îá+U;øÐá7+U<ÑÆk†=,ÑáQ+#Ò=$Òá h+>>ç_ç_¤`¤`¤`ã`a@a:a2a‘aƒa¦a‘a‘a¦aþab6bQb¤`6bˆbÑbÑb6bˆbòbccc·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·cç_ç_·c·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·c·cç_ç_ç_èd·c·c·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·c·c·cç_ç_ç_ç_èd·c·c·c·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·c·c·c·cç_ç_ç_ç_ç_èd·c·c·c·c·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·c·c·c·c·cç_ç_ç_ç_ç_ç_èd·c·c·c·c·c·c·cç_ç_ç_ôcôcç_ôcç_ç_·c·c·c·c·c·c·cç_ç_ç_ç_ç_ç_ç_´hºhÀhiiiiôcç_ôcç_ç_»iØi»iØi»i»ij j»ij jj»ij jjj»ij jjj!jFjØi»i»i»i»i¤`\jç_ç_ç_ôcôcç_ôcÑbç_ç_¤`¤`ç_ç_ç_ôcôcç_ôcç_ç_skxkskxkç_ç_ç_ôcôcç_ôcç_ç_'lÝlÝlmm¤`mm„m–m¤`Ímémýmým#n*n1n8n1n8nInRndndnñoíoppp%p+pppppppp%p+pç_ç_ÞpçpiiNqQqtq¤`tq„m„m„m„m„m q°q³q„m q„m„m„m„mtqtqtqÝl5r–m–mÑb1sÑb1s1ss1s–m–m–m½tÁtç_Ñbtq¤`·cppp%pppp%p·cç_ç_Þpçpii¤`¤`¤`–m„m¶q„m„m„m„m„mv vv vmÉqDvDvmÉqmÉqšvšvºvºvºvºv5r–mQqQq½t5r–m–m–m½tÁtÑbwwmwç_ww™ww™wwwxx"x9xWxtx™wx™w±x™w±x™w×xtxçx™wyiy™witx™wtx™wtx™wWxôy z9x*z*z'l9x9x'l9x9x´z8n™w´z™w´z™w¤`x™wx™wx™w´z™wm™w8n1n8nÑbÝ{¤`á{ç{“|Ñbm¦|mmm–mÙ|–mÙ|–mÙ|–mÙ|m }¶qç_–m–m–m1s¶q^}a}^}a}–mÙ|–mÙ|–mÙ|–mÙ|’}–mÙ|–mÙ|–mÙ|–m–mÙ|–mÙ|–mÙ|–m–m–mL~–m–m–m–mç_·c·côcç_ôcç_ç_·c·cç_ç_ç_pppppp%p+pQppppppppp%p+pQpppç_ç_ç_”¨»™wÊÕàì ö ‚¤`¤`cwƒ‚cwç_ç_èdpppp·cppôcç_ôcç_ç_pp·cppppç_ç_ç_ç_èd·cpp·c·c·c·c·c·c·c·c·c·c·c·c·c·c·cpp·c·c·c·côcç_ôcç_ç_·c·c·c·cpp·c·c·c·c·c·c·c·c·c·c·c·c·c·c·cpp·cç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_ç_žŒ£Œç_ËŒîŒîŒ¤`  c4cç_4cFîŒX^g„‘—Ÿ­ç_­­¤`ç_­¤`ÇŸÕáŸöŸ Žc&ŽQqtxQqQŽQqiŽvŽŸ´zcç_šŽ£ŽšŽ£Žç_šŽ¤`£ŽšŽ¤`£ŽÁŽÒŽØŽŸçŽñŽüŽŸ*z'lFîŒF´z¤`¤`&ŽKK¤`XŸF›ª¶Âåî÷cžŒ£ŒjFޝ¼ÄÒÄÒFFj=‘C‘¼I‘P‘I‘P‘ŽFj=‘I‘P‘9’Fj=‘ŽI‘P‘·c³’Ñ’“FjÔ’“C‘d“j“p““û’ÿ“·c·c*”¤`F”F”W”îW”XF”n”Ÿ”Œ”F”F”™”„m1nmInF”F”:•B•F”B•c•F”‡•”•ª•B•F”B•Ø•––8––dn\––\––—–£–­–Ý{—–£–­–j j—–£–­–j jj—–£–­–F”â–­–F”F”–K—`—F”In=‘Ñb„m„m„mmš„m:•„m:•:•:•:•Mš¤`ŸB•Ñbýmým6b›:•›:•›:•›:•:•:•h›:•h›:•ŸB•QqŸ›¶›Ì›Ô›Ö›î›œœWœœœœWœœœœ¤`¤`¤`¤`((WÑbÑb]·c·c·c‡’bmsy{·c·c·c‡’btqtq¤`tq¤`tqtq¤`tq6b›Fém°¶F¾F¾FÈ=‘FInFInFFáé÷F¤`Ím¤`šv„mém¤`Ím„m}žém„mém¤`Ím„m}žém„m–m„m–m„mém=‘¤`Ím„m¶q}žémémž¤`Ím}žémémžˆž“ž¤`Ímémžˆž“ž¤`Ímžž¡ž¤ž§žém„mÑb„mÑb›ªž¾ªž¾ªž¶ªžÈ=‘ªžInªžªž¶ž½ž÷ªž„mО–m„mО–m„mÓžמ–m„mО–m„m=‘ОšОžÛžО–mО–m„mÓžמ–mŸ$ŸcŸlŸŸlŸšŸlŸÖ›lŸÖ›lŸÖ›ŸŸŸŸIn1nšvInŸû’d“j“ïŸým1nšvŸû’d“j“ïŸýmÖ›ŸŸŸŸIn1nšvInŸ$ŸŸŸb i w i € Ÿi Ö›š ¡ ¨ ölš ölš ¡ ¨ öl––á –mIn–mInš Ÿš šŸölÁtÖ›Át6¡š öl¡ ÁtÖ›¡ Ö›š ölÖ›š Ÿš šŸ„m¤`ÍmC‘F”:•C‘F”C‘mû’d“j“\–ío\–m\–mt¡šv°û’–md“–mj“–m–¡Ù¡ã¡ÿ“–¡“„m–¡“„m!¢„m–mt¡–mt¡–míot¡–m8nt¡°t¡–¡°°t¡°°t¡°ã¡–mt¡Ù¡ã¡“–mÿ“–mt¡Ù¡ÿ““–mÿ“–mt¡Ù¡ÿ““–m¸¢“„m„m8n8níoíoŸíot¡Ÿíot¡ío:•íoû’–m8níoío“„m“„m–¡“„mp“B•û’d“j“3¤p“B•û’d“j“3¤„m–ma¤„m„m–mv¤3¤¤3¤v¤3¤s„mí¤ð¤švð¤a¤¥·c·c·c·c·c·cç_ç_ç_“„m=‘“„m“„m=‘p“B•û’d“j“3¤“t¡p“B•û’d“j“3¤“t¡„m8n–m8n„m8nma¤8nt¡a¤„m8n„m–m8nv¤8nÉqv¤8nmv¤8n1¥v¤3¤8n¤8nm¤3¤8nv¤ÿ“mv¤3¤m°°st¡í¤ð¤t¡Nqt¡ð¤Nqt¡ð¤Nq¥t¡©¥t¡Ÿ=‘Fj©¥t¡Ž©¥ÁtŸŽ©¥t¡ŸFjä¥t¡ÿ“ä¥û’mÿ“¦¦¦öl–t¡mÿ“öl¦¦–Átíoöl¦–mt¡mÿ“öl¦¦–m­–\–h¦F”â–­–\–’¦–¦Ÿ©¦ÿ“t¡–mšt¡–m„m:•t¡–m:•t¡–m:•t¡Ö›Ÿç_it¡ÝliÝl„mû’–mt¡ÿ“ä¥û’–m„m°ø¦–mø¦–m3¤ú¦mÿ“öl¦¦–Átíomÿ“öl¦¦–mmÿ“öl¦¦–1¥mÿ“öl¦¦–Át3¤Ýlm–mm§H™t¡ÿ“§H™=‘á "§–8nÿ“Ö›–ÿ“(§ç_H™L§t¡ÿ“(§¯H™=‘T§––§8––Ö›dn“§™§\–Ö›\–Ö›¢§–\–«§–\––Ö›–\––Ö›\–Ö›­–\–ç_£–\–¯8–t¡£–\–¯´§½§—–£–\–¯´§—–£–­–À§—–£–­–Ö›j—–Ÿj j—–Ÿj jj—–ŸɧÑbɧÑbɧÑbF”Ÿ8–8–â–­–\–’¦ç_â–­–C‘\–’¦Ö›\–íot¡â–\–Χ’¦¯×§â–\–Χ’¦¯Ö›ç_֛▭–C‘\–Χâ–­–ð§â–­–Ö›ù§¨ç_\–¨ío\–¨¨\–¨¨F”–\– ¨F”–Ö›¨K—Ö›Fjç_¨¨FjÖ›Ÿ©¦Fjt¡(¨–m„m:•1¨–m„m:•Ö›:¨–m„m:•Ö›C¨–m„m:•Ö›–m:•L¨–m:•Ö›–m:•Ö›–m:•U¨–m:•Ö›–m:•Ö›–m^¨g¨–mÖ›–mÖ›\–p¨\–p¨\–v¨:•\–¨:•\–Ö›ˆ¨\–Ö›‘¨š¨Ö›\–p¨$Ÿ$Ÿ$Ÿ'l$Ÿ'l$Ÿ'l¤`$Ÿ$Ÿ¤`ölN©ca©WWWWWWWWWWWWWWW3¤ma©šªšvWWWW7«¨«¨«šªšvšªï«ö«û«¬ qȬܬmmÉq<­N­`­r­WWWWWWWWWWWWWWWWWWW°WWWWWWWWWW°°WmšvWWÛ¯Þ¯Û¯ù¯´z'l„mšvz°Ýlz°z°–mz°–mÙ|z°–mÙ|¶q¢°¯°c¼°¢°¯°c¼°ô°8nÛ¯!±ç_„mÑbÑbšvÑbm^±Ÿl±o±r±u±x±‰±±Û¯8n8nÛ¯m–mÛ¯8n´z8n´za©švò±„mÛ¯8nç_²²²¤`ç_²¤`e²8n—²8nç_—²8n—²8n¤`ç_—²8n¤`ç_ó²8nó²8nÑb³!³ŸXŸÛ¯švÑbšvÉq„m8ni³Ÿ¡³¤³²³Û¯ϳϳ´´´´ ´´´´´ ´Û¯´Û¯´ϳ´´Átϳ²´»´{´ϳÖ´´ϳ{ϳ{´µµmȬ8µ?µUµ´—²8nm†µ µ§µƵƵƵèµëµƵ°°ëµÑb"xƵƵƵƵƵƵƵƵƵƵƵƵÝl·/· q3·´/·Z·b·¦|Ì·Ò·ÂÌ·tqß·t¡´ˆ¸"x–¸Âa©Âpš«¸mmWÞ¯ó²ù¯ê¸3¤mð¸mó²mó²mÛ¯m3¤ ´ŸŸ¦|ò±²³Át´ó¸²³Û¯ü¸´´ ´¹ó¸¹Û¯´ ¹ µm8nϳ¹m†µëµ„m–mëµƵ„mƵmÉqëµ¹¹¹"xmƵ„mƵƵèµëµëµšvmÉq8nëµ–mëµmÉqëµm ¹ëµmëµƵëµZ¹m`¹ëµf¹u¹„¹ëµÁtëµf¹u¹´f¹u¹´f¹u¹´Ƶ„mƵƵèµëµƵèµëµ6b“¹˜¹ž¹¥¹¥¹®¹²¹¶¹º¹¾¹´¹ù§¥¹¥¹–m´ɹ͹´¥¹¥¹ѹعmÉq{y´ɹ͹´¥¹¥¹ß¹¥¹¥¹¥¹–mm–ms–m"§–mæ¹–mì¹–m§–m“§–mò¹–mù¹–mº–mº–mº–mº¥¹mÉq{y´mÉq´¥¹–m´¥¹–m´–m´–m´–m´–m´°–mú¦ƵƵÝlº/· q#º´m ¹´hiiii/·Z·Ý{Z·*º-ºÑbç_–mÙ|ppppôcç_ôcç_ç_·c·cç_–mÙ|ŸÌ·Ò·Ì·Ò·ŸÌ·ŸƵƵƵƵ¤ºƵ„m qƵˆ¸ÀººκѺˆ¸Ƶ„mƵŠ»Œ»švŠ»¢»Š»švŒ»Š»¢»лÓ»ŸлŸÓ»wÛ¯лÑb qл qÑbwct¡ôcŸÖ›Ÿ5rôcÖ›ôcŸÖ›Ÿ5rôcÖ›šv½mšvŸç_Ö›Ÿç_Ö›švX½[½Ñb½6bŸŸv½œv½œ„m§½®½¹½v½ܽœv½WœœœœܽœWœœWœœœœœœ¾¦|¾{„m¾t¡„mt¡t¡„m§½®½t¡¾{¾{–m6b°°¾°®½i£¸Œ¾’¾®½¿¾;®½Œ¾«¸®½Œ¾«¸®½ü¾Œ¾«¸®½¿¾Œ¾im®½¿¾Œ¾im†µ×xÛ¯ˆ¿Û¯„m–mÛ¯×x8nÛ¯Átö¿8nÛ¯Átö¿{i¹½Át¹½«¸Át¹½«¸Át¹½«¸Át¹½«¸Át¹½«¸Át®½iŒ¾¦|ÖÀ¹½ö¿Át¿¾8nÛ¯¹½ö¿ÁÁt¿¾8nÛ¯¹½Át8nÛ¯ö¿mm®½iÁt¿¾Œ¾Ám8n Ö›®½¹½iÁtŒ¾m8nÖ›®½iÁtŒ¾ÁˆÁ8nÖ›—Á®½¾¹½Át8n¹½«¸®½—Á¾µÁ8nÁtÆÁ¹½«¸8nÆÁ¹½«¸8nÛ¯ÁtÆÁ¹½¤`¤`¤`ü¾åÁôÁ×x ´¢»8nÁtö¿„‰ŽÂ8nÁtö¿“„‰Â8nÁtö¿˜Â‰Âö¿Át8n ´mö¿Át8n ´mö¿Át8n ´mö¿Át8n ´mö¿Át8n ´mö¿Át8n ´mö¿Át8n ´mö¿8nÁt ´mö¿8nÁt ´mö¿8nÁt ´mö¿8nÁt ´mö¿Át8n ´ˆÁö¿Át8n ´mö¿Át8n ´mö¿Át8n ´ˆÁ¹½ö¿Át¿¾8n ´m¹½8nö¿ÁÁt¿¾ ´mÆÁ¦|ÆÁ¹½«¸8nÛ¯Átw„mÃ"ÃÁt1Ã8ÃIÃ\ÃpÃyÀÊã¸pÙÊã¸yÃpÙÃyüÃÁtL~¼ÃÎÃmßÙÃäÃèã¸yÃßÙÃyÃÄÄmÄ™ÃĶq£¸yÃÄ™ÃÄyÃ5Ä™w–mvÄvÄ—ÄȬȬÊÄ{¦|Át¦|Át q¦|’m’ Å™wßÃòb’ÅÅ–m Å™wßÃòb’HÅÅÅ i –m Å™wßÃòb’Å5Ä Å™wßÃòb’ÉqyŽtÅœŖŖm Å™wßÃòb’Å™w Å™wßÃòb’ñÅÅÅ Æ –m Å™wßÖmßÃç_ßÃÝlßÃLÆÝl`ÆyÃsƤ`¤``Æ™w¤`ppppppŸŸèdôcç_ôcç_ç_’‘Ç–m™Çt¡ Å™wßÃòb’ÅÅ–m“¹˜¹ø¦–m Å™wßÃòb’ÅÅ–m½tm“ÅŽtÅœŖŖmÙ|ßÒŞǽtÅœŠ–Å–mœŖm£Çt¡–mÙ| Å™wßÃòb’ç_¦Ç3¤ Å™wßÃòb’ÅŸ™wȬ{ßÃç_ßÃç_ßÃç_wˆ¿ßÇwèd·c·c·cpp·c·cpp·c·c·cç_ç_ç_ç_ç_èd·cpppp·cpp·c·cpp·cpppp·cç_ç_ç_ç_ç_ç_™wç_ãÊÖ›™wç_™w–m™ÇÑb™ÇÑb°°ÝlsDˤ`L~L~L~L~yÃ}Ë…ËL~½ËyÄmÝls}Ë…Ë}Ë…Ë}Ë…Ë}Ë…Ë}Ë…Ë}Ë…Ë}Ë…Ë4Ì;̰4Ìú¦WÌWÌWÌ}ËWÌ WÌW̠̤` Ì¤`yÃyÃÑÌ×ÌßÌm¶qÑÌ×Ìß̶qøÌ Ì Í=‘ölÝlsÝlsÝlsÝlsÝlsÝlsÝls;Ì;Ì;Ì–m;ÌÍÙ|°mú¦°ºÍt¡¤`¦|t¡L~¤`¤`¦|t¡¦|L~–mm–mmmmÉqmÉq¨ÐÁtm–m–mmymymÁtm{3¤Š»s3¤Š»Átm{3¤Š»s3¤Š»3¤3¤3¤<Ñ?ÑÁt3¤Š»TÑWÑ<Ñ?ÑÁt3¤TÑŠ»WÑ<Ñ?ÑÁt3¤Š»3¤Š»3¤Š»3¤Š»3¤Š»mÉqmÉqmÁt{1s3¤3¤Š»s{1s3¤Š»3¤Š»3¤Š»Ò1sÒÒ8ÒÁt8Ò´Ò1s´ÒÀºmÓÒ×ÒÓÒmæÒëÒÁt×ÒÓÒmÓÒæÒÓÒæÒÓsÁt!ÓyÓÒæÒÀºÑbfÓ3¤Š»–mÙ|3¤Š»–m„mmm–m„mmm–mmmf¹u¹Ö›–mmmÉqmÖ›ÉqmÉqmÉqmmÉqmÉq q–mm–mm q–mm–mmmÔ q1sÁtmmmmmËÔÐÔ1sÖÔéÔç{m°mÕ«¸ Õ qÁtÕmmmÉqmÒOÕ1sÒÒYÕ_Õ–mÙ|ÙÕº–mmÖ—Öm}žÀºío¨ m}ž³Ö³ÖìÖÁtÒ1sÀºÑb–mm–mm–mýmýmém1n8nšv¨–mýmýmémém1n8nšv¨–mýmýmémwˆ¿ßÇw#w™ww²´™w`¹`¹™Çwwó²‹ÚÖ›w™www™ww™ww™w™www™w™www™www™www™ww™ww™www™www™www™wx™ww†µw Ýw™ww™w Ýç_wwww Ý'lw'lwwww™ww™ww™ww™ww™ww™www™w±x™wŒÞtx™wŒÞ9x™w¸¢ç_£Þ¦Þ„mwó²wŸww·Þwa¤¥w™Ç™Ç™w Ýç_ç_(dw™wç_ÃÞç_™wÊÞ8n3¤™wÏÞ8n Ýç_ ÝÔÞç_ÜÞãÞ8na¤¥™Ç Ýç_™wÏÞ8nwç_°xÁtú¦×x¢»iç_ußyßuߤ`uߤ`¤`ußv vDvv vDvFjuß¾uß¾uß¾uß¾uß Í=‘uß Íuß=‘›ußußQq‡’ußußußQqv vv vv vv vv vußußò±Ýl1ssEà1sHàÞp1sò±ÞpEà1sHàÞpSàò±ò±Þp1sò±Þp1sò±„mò±„mÔ›–m„m–mÔ›„mÔ›„mÔ›ÞpmÉqÞpmÉqÞp„m¦| qÞpÔ› q¦| qÞpEàHàÞpÉqÔ› qÞp„m1sãàèàÞp„m¦|úàá¦|Þp1s¦|û’Þp1s¦|Þp1s¦|û’Þp1s¦|¦|m¦|¦|m¦|¦|¦|æ|ÁtÁt¦|ÞpX½[½Þp:â=âÔ› q¦|¦|½tÁt¦|Þp qšvÞp{ÞpÝlÞpÉq–mÞpÉq–mÞpm–mû’†â°íoû’†âú¦ío¤`¤`暦|Át½t!Ó–mÞp q1s„m–m¶q„mÞp q1s:â=â:â=âÏtq¤`ÏtqÏtqÏtqÏtqÏFjÏ¶Ï¶Ï¾Ï¾Ï¾Ï¾Ï›Ï Í=‘Ï ÍÏ=‘ϾϾÏQqQqQqÏÏÑâ„mŸ„mŸ°Ýl1sÑbsEà1sÑbHà qÔ›Þp1sÑbÔ›Þp1sÔ›Þp1sÔ›Þp„m1sÑbãàèàÞp„m¦|úàáÞp„m1sÑb qÞp„m¦| qÔ›Þp1sÔ›Þp1sÔ›„mÔ›„mÔ›„mÔ›„mÔ›„mÔ›„mÔ›„mÔ›–m„m–mÔ›Þp°q³q„mÔ›–mÞp°q³q„mÔ›–mÔ› qÔ›Ô›ÞpÝlÞp qšvÞp½tÞp{¦|½tÁtæ|ÁtÁt¦|Þp qŸ½t!Ó–mÙ|¤`¤`暦|Át°Ñâ¦|Ö›Ñâ¦|Ö›Ô›2ã7ãÑ⇒‡’‡’‡’gãoãwããgãoãwããpšgãoãwãã’㇒¢ã©ã°ã·ã‡’¢ã©ã°ã·ã¤`‡’‡’‡’‡’¢ã©ã°ã‡’¢ã©ã°ã¤`gãoãwãgãoãwãpšgãoãwã’ãFj‡’›‡’Fj‡’›‡’‡’öl’ãölöl¤`‡’FØãîŒäãöläÁt qäÁt!Óää"䛇’1ä8䇒‡’©¥Fj‡’›‡’Fj1ä8ä›1ä8ä›1ä8äFj‡’Fj1ä8䛇’„m‡’«¸Át¾‡’1ä8ä„mäÁt¾1ä8ä„m‡’«¸Át¾‡’1ä8ä„mäÁt¾1ä8ä„m‡’Át¶‡’„m‡’Át¶‡’¶‡’¾‡’¾‡’„m‡’Át¾‡’„m‡’Át¾‡’1ä8ä1ä8äç䇒‡’‡’ Í=‘‡’ ͇’=‘ Í1ä8ä=‘ Í=‘1ä8ä„m‡’‘ å q„m‡’‘ å1å„m1凒‘ å Í=‘‡’ ͇’=‘W凒W凒Þp‡’Šå‡’‡’Þp‡’Šå‡’‡’‡’F„m‡’«¸m¾‡’„m‡’«¸m¾‡’â凒‡’Šå‡’‡’Šå‡’‡’Šå‡’‡’Šå‡’‡’'æöl‡’'l‡’'l¤`îŒäãöl¤`©¥©¥7曩¥›©¥Fj©¥‡’©¥©¥©¥©¥=æCæ©¥'l„mȬ q¶©¥Fj©¥Væ’ãm–m qölpš„m=æCæFj=æCæ„mm=æCæFj=æCæ„m=æCæ“æ q›=æCæ“æm„m=æCæ q›=æCæ›=æCæ„m¦|Ȭ Í=‘©¥Wå©¥„m¦|Ȭ q Í=‘©¥„m q=æCæ Í=‘=æCæ„m½t‘ å q Í©¥=‘Wå©¥„m½t‘ å1å Í©¥=‘„m=æCæ q„m=æCæ qçç#çžž Ö› Í=æCæ=‘„m=æCæ¾=æC澩¥¾©¥„m=æCæ¾=æC澩¥¾©¥¶©¥¶©¥¾©¥¾©¥©¥©¥=æCæ=æCæ“æÞp©¥Šå©¥©¥F©¥„mm°¾©¥„mm°¾©¥©¥Šå©¥©¥Šå©¥©¥Šå©¥©¥Šå©¥›©¥âå©¥Yç]çFjÕFjÕ›Õ›Õ›Õöl’ãölÕ„mÕÁt¾Õ„mÕÁt¾ÕÕ„mío{„míoÁt{„mío{„m„m–m*”*”=‘’ãöl’ãFjF'lFFjF¾F¾FFjáé„mNq„mÑçé¾F›F›F›áé¶FáéáéÕçF¶F¶F¾F¾FölFFâçF Í=‘FWåF„máé›F„ml±r±t¡ÞpáéFFFF¤`ölFF Í=‘F3¤NqÁt¾F3¤NqÁt¾FCè½tÁt!ÓCèFFfèmèÁtFfèmèÁtt¡fèmèt¡FFŠåFFŠåFŠåFFŠåFFŠåFFŠåFFŠåFFŠåF¾FölF¾F¾áé¾áéF„mt¡„m–mt¡„mt¡öl„mt¡„mNqt¡„mÑçét¡„mšv„mšv„mšv„ml±r±„mšv–mÙ|–mŸFt¡ölFšv¸¢×èÜè÷á"Ämt¡ét¡áét¡Ft¡–mt¡mFÁtNqÜè÷á"ÃFNqßè!ÓÜè÷á"Äm¶qFäèNqÜè÷á"ÃCèF½tsÁtšvÜè÷á"ÃFfèmèÁtfèmèt¡Ft¡éèîèÑbþèþèéèét¡FîèÑbtq×èÜè÷á"ÃéèFîèÑbtq×èÜè÷á"ÃéèFt¡Ft¡éèîèÑbþèéèFt¡3¤FšvéÜè÷á"ÃölFšv¸¢×èÜè÷á"Ã3¤FšvééÜè÷á"Äm!é'é/éŸ|â÷á–mt¡–mt¡îFâ禚½ét¡¦št¡XFFþé êê¤`ç_–mÙ|%êç_–mÙ|„m!é'é/ét¡â÷á–m–mkêâç„mît¡îðêt¡âçt¡ø¦Éq¦š½éø¦Éq¦š½ét¡ðêt¡s°8nlà¨ÑlàŸ|ýmýmémø¦ø¦ø¦šv·c·c·c·cç_ç_ç_ø¦û’ø¦û’û’ø¦t¡–mt¡ø¦švø¦t¡tìÖ›šv'lšv„mšv„mšv„ml±r±¦š½ét¡„mšv„mšv¦št¡„mšv„m–m„m'l÷át¡Áì„mst¡s¦š½ét¡¦št¡/é½é=‘t¡!é'é/é„mšvšvèd„mšv„mšvÁt„ml±r±„mšv¦š½é„mšv¦š„m=‘„m'lt¡„mðí'l÷á'é/馚½é=‘½tÑb„mšvûí¸¢"ÃÞpÞp–mÙ|,îJîQîç_–mÙ|,îç_–mÙ|ç_–mÙ|}Zîç_–mÙ|µÇµÇµÇµÇ Í=‘µÇ ͵Ç=‘¾µÇ¾µÇFjµÇ›µÇW”µÇµÇµÇ‡’‡’‡’‡’‡’¢ã©ã‡’¢ã©ã¤`gãoãˆîŽîgãoãˆîŽîgãoãpšˆîŽîgãoã’ãgãoã¤`gãoã’ãFj‡’Fj‡’›‡’›‡’‡’‡’F·îÄîîŒÑîÞîgãoã„m‡’Át!Ó„m‡’Át!Ó‡’Át!Ó‡’“Å–ÅÁt!Óölöl„mâå½tŠå‡’‡’‡’]Šå‡’‡’„m–m‚ï„m–m›–m‚ï„m–mÁt„m–m‚ï„m¯ï³ï›¯ï³ï¾¯ï¾¯ïȬ qȬ‚ïȬ„m©¥‚ï„m©¥‚ï„mÝl¾Ýl„mm–mFj–m‚ïžžÝlÝlšvÝl‚ïÁtm„möl„m‚ðˆð3¤Ýl‚ð3¤Ýlˆð3¤Ýl¾Ýlèðïð–m–mèðïðñ–m–m‚ï¯ï³ï¯ï³ï‚ï¯ï³ïKñ¯ï³ïKñíoÁtÝlÝl½tiñm¯ï³ïiñmÉq qiñ–mÙ|iñ–mÙ|¶q’ñ–ñÖ›iñ–mÙ|¶qmiñ¸ñ½§iñmÆñ¤`n”¤`¤`m6bÍm¤`–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|l±r±l±r±l±r±6bÔò6bÔò6b*z*z¤`¤`ó¤`óÝ{»ij j»ij jj»i»ij»ij j»ij jj‘ó—ó—ó‘ó:â=âÝ{Æóm–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|¤`¤`àó¤`àó–mÙ|–mÙ|–mÙ|¤`=æCæóóVô¤`¤`¤`¤`¤`¤`¤`¤`–ô¤`¤`¤`¤`¤`¤`¤`¤`¤` õFjîFjç_,îç_–m‘Œõ‘ õŒõ¤`¤`¤`¤`Ù|–m¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`–mÙ|–mm„mø¦–m„mø¦–m–mÙ|–mÙ|–mÙ|–mÙ|–m õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›Ñt¡‘ õhö õmÔ›t¡‘ õhö õmÔ›t¡‘ õhöŠ|mÔ›Ñt¡Š|Ñ‘höŽ| õmÔ›Ñt¡Ž|Ñ‘ õhömÔ›ª÷t¡‘hö–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mm–mŠ|m–mm–mŠ|fÓmŠ|fÓ¤`óøF‘ŒõŒõFF(ù/ù7ù>ùîŒ(ù/ù7ù>ùFF(ù/ù7ù>ùfùmùîŒ(ù/ù7ù>ùfùmùFF(ù/ù7ù>ùfùmù•ù œùîŒ(ù/ù7ù>ùfùmù•ù œù FF‘Œõ´´–m–m–m–mÙ|–m–m–m–m–m–m–m–m–m–m–m–m–m–m–m–m–mÙ|–mÑbmÔ›mÔ›–mÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛіmÙ| õmÔ›QûTûm õԛѠõm]ûQûTû õmÔ›QûTûm õÔ› õm]ûQûTû õmÔ›QûTûm õÔ›Š|mÔ›ÑTûŠ|ÑmÔ› õmÔ›ÑQûTûŽ|Ñm õÔ›mÔ›ª÷TûmÔ›ª÷ó²–mó²–mÙ|–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–mÙ|“¹˜¹iûnû–mÙ|“¹˜¹iûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–miûnû–mÙ|“¹˜¹iûnû–mÙ|“¹˜¹iûnû–mÙ|–mÙ|¤`–mÙ|¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`¤`–mÙ|–mÙ|–m‚ïȬ qȬÝlm¦|j jò±»i„mò±Àº„mj jjò±»i„mò±ÀºÑb„m„mj jjj»iò±„m„m„m„mò±ÀºÑb}žj jjj!jò±»i„mò±ÀºÑb}ž–m„m„m„m„ml±r±l±r±ôcl±r±l±r±ôcl±r±l±r±l±r±l±r±l±r±l±r±l±r±l±r±ç_ç_,îç_Þpç_,֛¸¢Ö›¸¢Ö›¤`×è„m„m„m„m„m„m„m{¦|3¤Ýl¦|3¤Ýl¦|3¤Ýl¦|3¤Ýl¦|Ýlm q¦|3¤Ýl¦|Ýlm q¦|3¤Ýl¦|¦|¦|¦|BÖ›BÖ›–mÙ|–mÙ|B½t¡B½Ö›–mÙ|B½t¡B½Ö›–mÙ|B½t¡B½Ö›–mÙ|B½t¡B½Ö›–mÙ|ç_–mÙ|,îç_–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mm–mm–mm¸¢–mm“¹˜¹iûnû“¹˜¹iûnûÔ›–mÙ|“¹˜¹iûnû–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|“¹˜¹iûnûÔ›–mÙ|“¹˜¹iûnû–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|“¹˜¹iûnûÔ›–mÙ|“¹˜¹iûnû–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|“¹˜¹iûnûÔ›–mÙ|“¹˜¹iûnû–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|Wç_ôc̈ÁÑÖ›ôc̈Á–mÖ›ôcˆÁÌôc–mÙ| Átôc–mÙ|!(/6 Át !Óôc–mÙ|I!(/ 6 Át–mÙ|k1sôc–mÙ|k}1s‚Át §¸ôc–mÙ|k}1sôc–mÙ|ôc–mÙ|–mÙ|ôc–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|–mÙ|"–mÙ|"–mÙ|"–mÙ|"–mÙ|–mÙ|–mÙ|"´ÌˆÁÑÖ›"´ˆÁÌ"´–mÙ| Át"´–mÙ|!(/ 6 Át !Ó"´–mÙ|I!( / 6 Át–mÙ|k1s"´–mÙ|k}1s‚ Át §¸"´–mÙ|k}1s"´–mÙ|"´–mÙ|–mÙ|–mÙ|ôc–mÙ|´–m–m–m–m´–m´–mW,îWôcWÞp*zÞp*zÞp*zÞp*zÞp­Ø½ØÞp­Ø½ØÞp­Ø½ØÞp­Ø½ØÞp­Ø½ØÞp­Ø½ØÞp­Ø½ØÞp­Ø½Ø² –mÙ|–mÙ|–mÙ|ç_–mÙ|ç_ø –mÙ|–m–mÙ|–m–mÙ|–mFFFFî–me i p u —ÑF'lF'lîŒ'l¤`F¢ã©ãã©ã¤`À Ä É äÎ á Ä É äÎ À F¢ã©ã°ãã©ã°ã¤`À Ä É  äÎ  á Ä É  äÎ  À F¢ã©ã°ã·ãã©ã°ã·ã¤`À Ä É  E äÎ   J á Ä É  E äÎ   J  À l±r±l±r±l±r±l±r±ç_ç_êŸç_Ö›ôcŸç_™Ö›Ÿç_ôcÖ›Ÿç_Ö›ôcŸ™Ö›ôcŸÖ›Ÿ5rôcÖ›Ÿç_Ö›Ÿç_Ö›ôcŸ™Ö›ôcŸÖ›Ÿ5rôcÖ›Ÿç_Ö›mŽÝlÁt„mò±„mW„mò±„mW„mò±„mò±„mmÉq„mmÉq{„mmÉq{y„mmÉq{yšvccjcj jcj jj*Þp*ÞpÞp *Þpppppppppp%pppp%p+pppp%p+pQppp%p+pQ*ppp%p+pQ**žž¡žžž¡ž9*žž¡ž9*<*žž¡ž9*<*?*žž¡ž9*<*?*B*žž¡ž9*<*?*B*E*žž¡ž9*<*?*B*E*H*pç_*Þpç_*ÞpÞpÞp *ppç_*Þpç_*ÞpÞpÞp *pppç_*Þpç_*ÞpÞpÞp *ppp%pç_*Þpç_*ÞpÞpÞp *ppp%p+pç_*Þpç_*ÞpÞpÞp *ppp%p+pQç_*Þpç_*ÞpÞpÞp *ppp%p+pQ*ç_*Þpç_*ÞpÞpÞp *ppp%p+pQ*ðêç_*Þpç_*ÞpÞpÞp * //¼/ / /¸55¼55 5¸==¼="= =¸G*G¼G.G G¸S6S¼S:S S¸aBa¼aFa a¸q¼uNu¼uRu u¸vVv¼vZv v¸x^x¼xbx x¸x!xf€j€n‚-‚r‚!‚fƒ!ƒfƒ5Š ŠzŠ~Š!Š‚“!“f“Š“ žŽž¼² ³–³¼½š½¼î5ñ5ó5ý5ýIþ55f!Šz‚!~ ª²²²¾ªª5²Gªd5nZo^o¼qb´Â´¼Án5 5 4-454rD-D5Df„…Ɔ!†f‡!‡fŒ!Œf5-r,‘-‘5‘Ê•5– ¡Ú¤5¤-¤r¥Ú©-©5©rª5ª-ªr­5­-­r±-±5±r²-²5²rµ-µ5µr¶-¶5¶r·5·-·r¸5¸-¸r¹-¹5¹r½æ¿ÂÀÂÁÂÂÂÚ5Ú-Úrá!áä!äç!çê!ê*í!í6ð!ðBó!óNö!öZù!ùfü!ürÿ!ÿ~!Š!f!f!–”5”-”r©ÂªÂ«¬­®¯°"±&²*³.´2µ6¶:·>¸B¹F»æ¼æ‘‘‘‘‘2¼2¸2 2À3¼3¸3 3À4¼4¸4 4À5¼5¸5 5À6¼6¸6 6À7¼7¸7 7À8¼8¸8 8À9¼9¸9 9À)ª^¼9ª^ÙAª^éIª^éQª^¬Yª^¬aª^¬iª^¬qª^¬yª^* ª^:`L‰ª^:!ª^:‘ª^¨¡Xbr©ª^:±ª^:¹ª^äÔ ª^þÜ ª^)Ü ·cqÔ ·c€`ÔÔ_Uà_§ª^:ɪ^ãô (daü (du ª^Æ ª^þ ª^) ·cq ·c€ ·cc4`ã4Ô_U4à_4ª^:$ (d<, (dI4 (dVLèdQ< ª^ŒLìc>D ª^ÆL ª^þT ª^)T ·cqL ·c€D ·cc< ·cML`ÖLÔ_ULà_A!Lª^yd (dl (d t (d/| (d>dèdQ„ ª^-#dìc>Œ ª^Œ” ª^Æœ ª^þ¤ ª^)d`ñ#¤ ·cqœ ·c€” ·ccŒ ·cM„ ·c|$dÔ_Udà_‘%dª^y´ (d'$¼ (d8$Ä (dI$Ì (dZ$Ô (dk$|èdQÜ ª^è'|ìc>ä ª^-#ì ª^Œô ª^Æü ª^þ ª^)|`í(|Ô_U|à_))|ª^y ·cqü ·c€ô ·ccì ·cMä ·c|$Ü ·c¼* (d + (dC+ (d}+$ (d·+, (dñ+4 (d+,”èdQ< ª^y,”ìc>D ª^è'L ª^-#T ª^Œ\ ª^Æd ª^þl ª^)”`½-”Ô_U”à_.”ª^yl ·cqd ·c€\ ·ccT ·cML ·c|$D ·c¼*< ·cð/t (d=0| (d}0„ (d½0Œ (dý0” (d=1œ (d}1¤ (d½19ª^:9Æh+29ª^+2áÔ_>áà_ê2égiõ2ñiû2¬ ª^(3´ ª^T3´ ´i3¼ ª^k3Ä ª^(3Ì ª^T3Ì ´i3Ô ´i³3Ü ´i3ä ´i3ì ´i;4ô ´i³3ü ´i3 ´i3ä üið3 ´i65 ´i;4 ´i3$ ´i³3ü üið3, ´i3ä üiÁ44 ´iÊ6< ´i65D ´i3L ´i;4 üið3T ´i³3ü üiÁ4\ ´i3ä üi"6d ª^w8l ª^(3t ª^Â8| ª^9„ ª^[9Œ ª^»9” ejq” `&:” Ô_U” |j)” à_U: ª^¬œ ª^)œ ¤`qœ `;œ Ô_Uœ ª`Þéòjõ2kx; k†á k€;œ à_¸;¤ ª^:¤ }k<¤ ª^3<¤ xk<¤ skq¤ `-¤ `<¤ Ô_U¤ à_=á k-=)ª^¬1ª^:1Gl==¬ ª^y=A²l=̲l„=9ª^¬´ Ýl<´ ßlQ´ öl >¼ xk<Ä MmqÄ Xmp;Ä ª^>A³m·>´i39ª^¬A¹m·>Ä ª`ÞIà_ä>4„n1?4n¡4«n:?4¾n¤Ì ª^g?4˜n„=4ÍnÞ4¸n:4ßn¤Qª^:iÊo:YÒo¤YÛo:YáoräáoÞÔ ño§?Ô íoO?¬´i3Ü ª^ã?ä ª^+@ìª^:ä pqä p€Ü pqÜ p€Ü pO@Ü %pO@Ü +pQì (d]Aô (dAü ³p¾Aü ÀpO@ü ÉpÇAü ª^çAü ØpÒAYª^¬`pÞjpC ª^+@aª^:iª^:$•q^C,ª^çA4jpC4`pÞ<ª^+@²l„=ÌáoÞ rÞ ª`Cª^+@q!rPEü %r>Qª^¬Dª^­ELª^ÍE\ª^­Eyª^7Fôpq)üpq+@ôùo:ô@uØDüãqØDôIuSFôïqØDüïqØDüPuêEôÙq>ô\u¤üd3ükuºEütuáEüu+@dÑbÒAlª^:tª^)|ª^?G ª^:|pq|pyG|pyG|%pQt·cq„(dRHŒ(dnH”öu¾A”vyG”Ép>”ª^¥H”Øp”Hœª^äH¤ª^+@¬jpC¬`pÞ´ª^ÀI¼ª^¥HĪ^:̪^:”%r>”pqÁH”ª^åJpq)ùo:@uØDIuSFïqØDÙq>\u¤ÔÑb”Hܤ`qD´i3ܺj»:YwÌKYw×K)w† Ô_>ä¤`qÉ®w)LÉæw1Lôª^¨Ld´i3 îxÁKÑöxÎLT´i3É”y†á¡yJMüjpCü`pÞɨy¤ɺyÁKÉÓybM\´i3ª^+@[{µN©n{ÂN$ª^ÝN,[{µNÉ™{1Oé£{:OÙ±{ÁK,{O<ª^jOD[{­OL¤`qLºj»:T´i?\ª^7PdjpCd`pÞ±ª^:áÙk>¹ª^¬á<~ÙQlºj»:l¤`q$¤`ƒ$ª^¬t¤`q µ‚ä>áÅ‚1WÔ‚>Éæ‚7WÉÔ‚>Éñ‚=Wù”y†|ª^¬„´i3Œxk<Œskq”¤`qœ`pÞœjpC¤¢kS<¤’k@<¬ª^¬´´i3¼ª^¬Äª^¬ì´i3̪^¬Ô´i3ܪ^¬l´i3äª^¬ì´i3ôª^¬ü´i3¤`q `pÞ jpCŒ¢kS<¤`q4ª^åJ4o—k à_G<ª^)<|j)Dª^k3é)’máª^¬L˜m¤Lª`ÞT¢kS<Txk<dùo:D´i)ljpCl`pÞt‡’>tskQt’QtxkQtš’y¡®’n|ºj»:„”Eo„ ”QoŒª^­oŒ·c”o”„m-qŒ´i3œª^nq<ejq¤ª^Ùq¬”Ào´¤`q¼ª^KrĪ^ærÌ”ÀoÔª^sܪ^Bsäª^sìª^”sôª^÷süª^Mtª^­t ª^:ª^:ª^Fu$ª^‹u,ª^:4ª^øu<InŒv<=‘p;<ƒ—¡<š—¡<£—±kDª^:<dnvD§—ºv¡´i?DÀ—åvL¤`qd·cqT·cà2\·cØvD¸n:DdnÑ:Dk˜Qw<¸n:‘Ęr‘Ó˜Qw‘瘤‘™¤l+™`wtª^:l6™hwl?™hwlH™qwlR™‰wtª^¦w|”Àolg™Žw„ª^ylx™¿w„Ùq>t’’ÞŒ´i3„pq)l™™÷w„d7=„¹™yœ ºj»:lÌ™Nx”ª^¨xœª^¨x¤ª^Fy¬ª^Fy ª^él4šŸy´Mš-qÄpšïyÄxš«llª^:Äš€xÄ—šQĦš¡Ìª^:Ä®šzl‚™>Ì„{BPÔòm)Ôn)ܪ^ez´ºj»:l š)äª^:ìª^“zôª^ÍHü´i3äÀ—åvÄöšÊz¤`qª^¬ ª^“zª^%{ª^“zÄ1›G{$ª^{,ª^“zäF›™{l,šˆyl!šiylšylšñxĪ^zÄT•:¼ª^åJ4ZqB}<ª^_}D²l„=LáoÞTjpCT`pÞ4ª^)<u+@lª^¹}Œ7“Š~œª^:!jœ\!~œ\¤ª`Þ<ª^:¬ª`Þ´]€¼ª^:̪^:¬ª^)Ô@uØDIJl„=ÜáoÞÔÙq>Dª^:ärÞäª`Cìª^+@ìjpCì`pÞôy¨ô{·äª^+@ü@uØD²l„= áoÞüÙq>ª^:ª^:$d3$kuºE´ª^¥€$tuáE$ãqØDLª^:,ª^æ‚4¾m)<ª^CƒDª^ƒLª^ƒTª^+@\ª^$„dª^Ô„lª^…tª^P…|ª^p…„ª^+@\ž¡\ž)\h>\ž:TÓm:TÅmh>T¾m)Œ„má…Œémì…\ª^:|´i3”Íc/”©cœ·c€¤Åmh>¬·cq¤¾m)¤Óm:´„mƒ†´}žŽ†¼ª^ÿ…Ôßmø>Ä„m«†Äémì…„´i3ÌÍc/Ì©cÔ·c€Ü·cqä„mx‡ä}žŽ†ìª^ņlª^:ô„mœ‡t´i3tª^:ü„mœ‡„m¶‡émì…=‘ȇ ejqÜüið3 |j)„m2ˆ¶qq}žŽ†” ª^)ª^Û‡$émXˆ$žhˆ,ejq4ª^+@<¾m),|j)<Åmh><Óm:D}žÕˆ,ª^)$ª^~ˆdßmø>Lém‰Lž‰Lˆž‰L“ž‰TejqT|j)\ém‰\ž‰\ˆž‰\“ž‰d¤žÕˆd§žÕˆTª^)Lª^!‰\ª^!‰„ª^:l„mv‰t´i3|·cq„ºj»:Œ„m≔´i3œ·c€¤ª^:¬ª^lФ„{BP´ª^:¼ª^ÒŠ´„{BPĪ^%‹Ìª^+@Ôª^½‹Üª^)äª^%Œìª^:ôª^)üª^éŒì„{BPª^7P ª^7Pª^:ª^¾„{BP$ª^+@Œª^:,„má…,О\Ž4|{)<„mœ‡<О~ŽD|{)D„mœ‡DÓž~ŽDמ~ŽL„m«†LО\Ž„¤`qT„m¶‡T=‘ȇTО\Ž\О̎\žhˆd|{)lО~ŽtО~Ž|„mv‰|Óž\Ž|מ„·c€Œ|{)”ª^:A9ŸÅ9>b†¹ª^¬”WŸÓœª^:œ`pÞœjpC)pŸ¤ª^:)‹Ÿ)¬ª^:) Ÿ:´ª^:¤ºj»:¼ª^:1¦Ÿ^1П^¬üið3Ī^:©ª^k3Q' r´ª`Þ¼n)Q5 ¤¹ª^:Ä´i3Q~œn>¼´i3±C †4´i3̪^:Ôª^:Ä`pÞÄjpCĆpß¼òm)1N f‘1õ—:ܪ^:äª^:̪^ÍHÔßmø>ìª^:Ü`pÞÜjpC܆pßÜpX"ÜšpÞ&Y¡“ôª^:Y¡?“üª^:äejqª^:ä|j)aª^¬ ª^:ª^:äª^)Y?¡“ª^:YJ¡?ì„m-qôª^:ñS¡”üª^sª^s ª^sôÀ—åv¤`qª^:ª^ÍH$ª^:$\–vde¡Ø”,ª^:,\–vdk¡ì”4ª^:4\–vdWŸÓ<ª^:<û’-qD ”QoLª^J•Dª^qoáo¬• à_ä><´i3Tª^­oäš—¡äX¢#–ädnÑ:iª^éù¸n:äu¢¤\¢kS<ºj»:q7“¤ä™¢b–dª^¤–\’k@<l”EoDª^:l ”Qotã¡—t–mq$´i3|Ù¡—|ã¡—|“æntª^—„üið3,´i34´i3Lª^:Tª^:Œ„m”oT´i3”8n—”–¡§•”“ænœª^Õ—¤ª^Õ—œŸý—œíoq¤Ÿý—¤íoq¬dnÑ:´¢kS<¬™¢b–¬X¢#–¬š—¡¬?™p;´xk<´skq”âºv¼ª^)Ī^“zŒ”Ào¬k˜Qwù£{˜¬¸n:\ª^:¼íoq”Õ¢ºvÄ–m¢˜Ü·cqÌ·cà2Ô·cØvyª^k3£O™‰ª^k3ñª^i™ñ×£éñT•:‘ª^k3 šv™äª^†™ìª^†™ôª^­oüª^)ª^Pš ”Àoª^›šª^Òš$ª^ ›,ª^J›4”Ào<”ÀoDª^)ü´i3”²l„=Lª^Ú›Tª^Ùq\ª^7œTª^h>dª^)dª^:\(d8d(dTl(dptp“ántB•«ltû’Eotd“Éntj“Õnt3¤¢t“æn„ª^qo|p“án|B•«l|û’Eo|d“Én|j“Õn|3¤¢|“æn„„m”oŒ–mq”„mÓ”8n㜠”Qo¬´i3¤·c”o´´i3¼a¤¢¼8n—Äa¤žÄ„mžÌª^öœª^qoÔª^{žÜ„mžÜ–m€ä´i3ìv¤§?ì8n—ôv¤§?ô8n—üv¤§?ü8n—v¤§?3¤¢ìª^Ÿôª^Ÿüª^Ÿ ¤Ÿ 8n—¤Ÿ3¤¢ ª^§Ÿv¤È3¤¢lª^:$ ”Qo$”Eo,´i3tª^:4 ”Qo4”Eo<´i3DsqLNqW?T𤎠TNqW?$´i3|ª^:\𤎠Lª^„ Tª^¦ „ª^:d¥¢l¢kS<lª^+@dpq)dd7=dÙq>d¹™y|¤`q|ª^í¡„ejqŒ¤`q”·c€œ·cq¤”Eo¬´i3Œºj»:„|j)¤¤`q´WŸÓô§—ºv¼ª^"¤Än)ÌWŸÓÔ§—ºvÜ6™hwä’Qì”Eoôª^+@üºj»:ÜH™qw䦒)ü¤`qôjpCô`pÞÜR™‰wª^¨x ª^Fyª^FyŒª^:dª^:”ª^:l’k@<œª^:T’k@<û’Eo–mq$ÿ“Qo$䥉$û’Eoª^o¦,„m’¦4ª^Fu<´i3Dø¦§LÍc/T´i3\ø¦§L©c¤ª^:d3¤¢l ”Qol”EoDª^8§\ª^8§tmÚ§tÿ“QotölE“t¦Û¢t¦>t–Ù“tÁtQ|mÚ§|ÿ“Qo|ölE“|¦Û¢|¦>|–Ù“„Íc/ŒmÚ§Œÿ“QoŒölE“Œ¦Û¢Œ¦>Œ–Ù“„©c¬ª^:”mÚ§”ÿ“Qo”ölE“”¦Û¢”¦>”–Ù“tª^ì§|ª^#¨Œª^#¨´ª^:œÝlx¨¤ ”Qo¤”Eo¬´i3„ª^)”ª^#¨¼ª^:Ī^:´ejq¼¤`q™Êo:´ª^)¡ª^k3™ª^p©¼ºj»:´|j)̪^:Ä´i3ÌejqÔ¤`q©A§ªÌ|j)ì ”Qo̪^)±ª^k3q§sªÔºj»:Ôª^:ÜdnÜvܪ^:ä\–vDF›™{ìª^:ô\–väª^:ü–±kü\–vD £ÞLºj»:ª^: –±k \–v –ÑQüª^4«–±k\–v–ÑQôª^s ª^Bs\–v$­–¸£$\–v,£–“«,\–v,¯úk,8–§ª´i34£–“«4\–v4¯úk4´§æn,ª^¦«ìª^:<—–¬<£–“«<\–v<¯úk4ª^ä«4´i?¡ª^k3œª^+@œ´i3ôª^:D—–¬D£–“«D­–¸£$ª^u«$´i<ª^,¬L—–¬L£–“«L­–¸£Dª^”sTjqT—–­¬\ª^Fud´i3ljql j€l—–å¬tª^­|´i3„jq„ j€„jc„—–1­Œª^c­”´i3œɧ‡­<¶—ær¤ɧ‡­¬ɧ‡­üª^:´F”ž¼`pÞ¼jpCĪ^³v̪^˜­Ôª^˜­Üª^˜­Ä£—±kĘ:ª^:<Þ—Þäâ–_®ä­–¸£ä\–j®ä’¦x® ª^:ìâ–_®ì­–¸£ìC‘«lì\–j®ì’¦x®äª^‹®ä´iô\–vôíoÜvüâ–#¯ü\–vüΧænü’¦.¯ü¯úkª`Þ n)ôª^ ¯ª^:â–#¯\–vΧæn’¦.¯¯úküª^A¯”ª^ÍHª^:ç_¤¯©á§Â¯$â–#¯$­–¸£$C‘«l$\–v,ª^Ë®ª^A¯4ª^·¯,’¦x®<ª`ÞDª`Þ4ç_¤¯ òm)Lâ–#¯L­–¸£$ª^ݯTâ–#¯T­–¸£Lª^‹u$ª^:\\–v\¨fld\–vd¨fll\–vl¨fl,ª^:tF”¢t–ÑQt\–v\ª^±dª^±lª^±4ª^:|F”¢|–ÑQtª^8±<ª^:Dª^:tŸ€xLª^:Tª^:„–m²„„m&²„:•Q\ª^:Œ–m²Œ„m&²Œ:•Q”¬™÷wœ¤`q¤ª^:”@š¶y„ª^¨x¬–m²¬„m&²¬:•Q”™4x´ª^:dª^:¼–m²¼„m&²¼:•Q”šñxĪ^:Ì–m€xÌ:•QÔ–m€xÔ:•Qlæ™Nxl@š¶y̪^Fy¤–m€x¤:•Qlú™NxÜ–m€xÜ:•Qä–m€xä:•Qܪ^Fy¬–m€x¬:•Qlª^:ì–mN|Ì|{)ô–mN|ü´i3Ü–mN|ìª^ezôª^ez\–¢˜¬§—ºv \–¢˜\–¢˜¬ £Þtª^::•Q\–¢˜ª^“z$:•Q$\–¢˜ª^%{,\–¢˜¬F›™{4ª^:<š¨Õ³Dª^:L\–¢˜T`pÞTjpC\’d ª^+@\sdõTª^+@dª^+@\TdÌl¤`qtºj»:tºj»:|ºj»:„ºj»:Œºj»:”ºj»:œºj»:¤ºj»:¬ºj»:´ºj»:¼ºj»:ĺj»:̤`qÔºj»:ܤ`qäjpCì¤`qô`pÞü¤`qôjpCä`pÞä†pß’k@<œª^+@¢kS<xk<”ºj»: ¤`qjpC`pÞª^+@$ºj»:Œ’k@<,¤`q4†pß4jpC4`pÞª^+@ ºj»:<¤`qDjpCL¤`qTjpCéôª¤á«1aÑn«W½Ñµ«W½|ª^:„ª^:Œª^:T`pÞT†pßéÿ«¾\ª^Fudºj»:¼ skqlª^+@tºj»:¼ ’k@<¼ ¢kS<̺j»:|ª^+@„ºj»:Œª^Fu”ºj»:œª^­¤ºj»:üºj»:”¤`qŒ`pÞŒ†pߌjpCºj»:¬ºj»:¤¤`qœ`pÞœpX"œ†pßœjpC4ª^Fu,ºj»:ºj»:´ºj»:¼ª^+@ĺj»:̪^+@Ôºj»:„¤`q|`pÞ|jpCܪ^+@äºj»:ôª^+@ìºj»:ìª^+@ôºj»:üª^c­ºj»: ª^+@ºj»:lºj»:ª^­$ºj»:,ª^Fu4ºj»:<¤`qDjpCD`pÞLª^­Tºj»:\ª^+@dºj»:lª^Futºj»:|ª^+@„ºj»:Tª^FuLºj»:äª^Fuܺj»:Œª^Fu”ºj»:¬¤`qœª^+@¤ºj»:äºj»:¬¤`q´¤`qÉÿ«¾¤¤`qœjpCÑ1°ÁK B°ÁK2wÁKáP°ÁKÉ_°ÁKá¡y$ÎÉȰ8ÎŒÙk>Éÿ°ÁK¼Ùk>Yª^: ÿ±¤Ñh²¤Ñt²:Oéÿ±¤ѯ²¤Ì`pÞÌjpCÔ´i3Éé³”ÐÜxk<Üskqä¤`qÉ™{!Ñäºj»:Éà_8ÎÉ_´UѼxk<É_´ªÑYª^7FÉôÒÉÞ´(Òì`pÞìjpCìª^+@áµ Óô`pÞô†pßôšpÞ&ôpX"ôjpCüjpCü`pÞ¼skqÉ_°PÔùîxyÔùе¾´¤`qù¸µÔª^)4´i3 ª^+@ `pÞ jpCpqéB¢kS<D´i3$ª^Fu$`pÞ$jpC$†pß,¢kS<ôª^c­4ª^­<ª^+@<`pÞ<jpCDª^¬L´i34`pÞ4jpC4†pß4pX"!»¶ÊÛ!öœÐÛ!»¶×Û!ÿœÝÛTpqÁH¬´i3T¬k¤TevÞYÙkWYk·jÞ\ª^+@dpq+@lãqØDlPuêEtª^+@æ‚7WɸàtjpCt`pÞ|ºj»:„¢kS<ù3¸Fà|¤`q\´i3Œª^/e9˸fá9ilᔪ^:œª^:¤ª^:¬ª^:´ª^:¼ª^:Ī^:̪^:Ôª^:ܪ^:äª^:ìª^:ôª^:üª^:ª^:¼’k@<¼d7= ª^:ª^:ª^:”ëµq$ª^:ì´i3,ª^:4ª^:´i3<ª^:Dª^:Lª^:Tª^:\ª^:L´i3„´i3d´i3$´i3dª^:d3lª^:tª^:t´i3|ª^:„ª^:l´i3Œª^:œª^+@”ª^:¤¢kS<œª^:¤ª^:¬ª^:\`pÞ\jpC̪^:œ`pÞœjpClpq+@Ôª^:ùJº\謪^+@ܪ^:ádº¢èdãqØDlu+@äª^:¬`pÞ¬jpC!kx;´´i3ô´i3¼ª^+@¼`pÞ¼jpCìª^:ôª^:Ä¢kS<Ì´i3Ôxk<ܪ^+@äºj»:ì¤`qô`pÞÔ’k@<ôjpCÔ¢kS<ü´i3 ª^+@ ºj»: ¤`q ª^kì$ ª^¨ìÉQ¼8Îüª^:, лèì4 ´i3ª^:< лíD ´i3L ª^+@T PuêET u+@ŒÔ_UŒà_\T ª^ydª^ïlª^ï ª^:ª^:ª^:$ª^:,ª^:`pÞjpCd ª^Ûïl ª^0ðt ª^:4ª^:<ª^:1Gl2ñ| „m?ñ| ¾ñL´i3Dª^:„ „m?ñ| ª^QñŒ ª^­Lª^:” „m¬>” §½€” ®½®ñœ ª^­"¾æTª^:(¾:<´i3Œ¤`qI¤¾`òI¬¾eò¤ ´i3ÉG¿¤ÉS¿¤É_¿¤¬ ª^+@¬ `pÞ¬ jpCyª^¬áÀÀó´ ª^+@¼ ª^Fu´ `pÞ´ jpCÄ ºj»:Ì ª^+@Ì `pÞÌ jpC¼ jpC¼ `pÞ¼ †pßÔ ºj»:!F~¶ôÄ ¤`qÜ ª^Fuä üiÁ4Ô ¤`qÜ `pÞÜ jpCÜ †pßÑkáökx;ª^æöì ª^FuÁkx;ÁEÁøöÉkx;ÉEÁýöì `pÞì †pßì jpCô ª^+@ü xk<ü skq!ª^+@!`pÞ!jpC !´i3!´i3!´i3ÑœÁKùô jpCô `pÞ,!´i34!†pß4!jpC4!`pÞ4!pX"¡Ùk>¡¼ÅûL"üið3¡ÊÅûÉÔÅ&¡âÅ/T"jpCT"`pÞô!ª^ïákL ÙkL ñkL ékL ùkL !kL ÙkL kL Á ÆøöÁÆøöI¤¾S É ÆýöÉÆýötª^:\"`pÞ\"jpC|ª^:d"`pÞd"jpCl"’E“Œª^:”ª^:œª^:t"“¹ä|"´i3¤ª^:„"ø¦ Œ"´i3¬ª^:¡öxÖ ”"ª^+@œ"ºj»:¡öx ´ª^:¼ª^:¤"ª^+@¬"ºj»:Ī^:´"ª^+@¼"ºj»:̪^:d"ª^+@Ôª^:Ä" ÅíÄ"™wÿKÄ"ßâ÷Ä"òb Ä"’E“Ä"ÅQÌ"ª^+@ܪ^:Ô"™wÿKäª^:ѭǶóìª^:ä"ª^+@jpC`pÞä!¢kS<ôª^:üüið3¤xk<¤skqü´i3ì"´i3ô"´i3ü"´i3#ª^:üª^:ª^: #PuêE™´iÂN #u+@#PuêEé´iÎL#u+@ÉÞ´<É™{E #ª^:#ª^:¤"`pÞ¤"jpC#üið3dª^+@aª^:$#ª^+@,#’k@<4#xk<4#skq<#jpC,#¢kS<Äxk<áÕÌ ª^:L#ª^c­L#špÞ&L#`pÞL#†pßL#jpCL#pX"$–mÕ©w”Þ©ïqÞT#ém‰\#šv_®\#¨ýd#n)<–mBl#ª^òl#´i?t#ª^k3d#òm)\#ª^|#ém‰„#šv{„#¨üOŒ#n)\–m~ŽDÃ{ëODÐ{ñO|#ª^ò|#´i?Tª^k3Œ#òm)„#ª^“œ#ºj»:¤#ºj»:¤#¤`q¬#ºj»:¼#ª^+@Ä#ºj»:ÉÚ÷ÉDw öx†üɵڤ¬#¤`qœ#¤`qÉÔÅÆKÜ#ª^+@ä#ª^+@ì#ª^+@ô#ºj»:üª^+@Ñöxl"$ª^:,ª^: ©Þ¤4ª^:<ª^:¼#`pÞ¼#jpCDª^:ü#d3Lª^:Tª^:\ª^:\´i3dª^:é´il"lª^:™´i #tª^:|ª^:ô×x[ ¼vyG¼öu¾A¼pqÁH¼Øp”H¼ïqÁH¼%v#J¼>vTJ¼1v#J¼1vTJ¼‡q–I¼ÏqxI¼ËqòI¼þvÿJ¼ v#JD$%pQL$¯u+GL$¹uTGD$pyGD$pyGD$pqT$Rvš'<$·cq\$`pÞ\$†pß\$jpC\$ª^Fud$ª^+@d$jpCd$`pÞt$pyGt$pyGt$pql$·cq|$´i3„$ª^¥HŒ$ª^¥H”$ª^¥Hœ$ª^+@œ$`pÞœ$jpC¤$ª^Fu¬$Íc/¬$©c¼$´i3Ä$·cq¤$†pߤ$jpC¤$`pÞÌ$ª^ì-Ô$ª^:Ü$ª^ì-ä$ª^:ì$xk<ì$skqì$’k@<ì$¢kS<ô$ª^/ô$çá¡ô$ðá¤/ô$ÿáÜ/ô$ âéü$ª^)%ª^K0 %ª^€1%áoÞ%ª^2$%Þp¾A$%ÉqyG,%Þp¾A,%ÉqyG4%Þp¾A4%myG„ª^:<%û’_2<%†âq„´i3D%û’_2D%†âqL%ðá¤/L%çá¡T%¦|yGT%Át»2\%ejq\%|j)d%½t>d%!ÓE“Œª^:l%Þp¾A”ª^:t%„m3|üið3œª^:|%„má…|%Þp&3¤ª^:”%v#J”1v#J„%ÀpO@„%pqéB„%³p¾A„%ïqÞDŒ%¤`qiª^:„%‡q5C„%Ïq¯D”%ª^çAœ%•q^C¤%•q^C¬%ª^:¼%ª^6Ä%ª^6„% rE„%}mµB„%ª^çA„%ØpÒA¬ª^:´ª^:Ì%„m;7Ô%„m;7ä%+pQì%1p3@ì%pþ?ä%p€ä%%pO@ä%pO@ä%pqÜ%pqÜ%p€ô%ºj»:ü%ª^+@ü%`pÞü%jpC&ª^Fu&jpC&†pß&`pÞ &p€ &pq&1p3@&p€&%pO@&pO@&pq&+pQ&pþ?$&1p3@$&pþ?¤%´i;4,&p€,&pq<&´i;44&p€4&%pO@4&pO@4&pqTª^+@Ì!’k@<Ì!¢kS<D&ª^2T&ª^ÄA\&xk<\&skq\&’k@<\&¢kS<d&ª^‰Bd&çá¡d&ðá²Bl&ª^+@d&ÿáCd& âét&ª^)|&ª^C¼ª^:„&Þp¾AĪ^:Œ&½tÇAŒ&!ÓE“”&ðá²B”&çᡜ&¦|O@œ&Át9D¤&ejq¤&|j)l&rÞl&ª`CÔª^:ܪ^:D¦|ÒA¬&ª^:äª^:´&¦|ÜD¼&ª^:ìª^:\Ô›ÒAÌRvš'ôª^:Ì&ª^‰EÌ&7“¿ET üi"6Ì&žã;FÔ&žã‚FÔ&7“œFÔ&ª^öT üiÁ4ä&7“TGì&´i3 '´i3'•qÀI'´i³3'•qÀI'´i³3$'•q^C$'´i;4,'•qÀI,'´i³34'•q^C4'´i;4<'•qÀI<'´i³3D'´i³3D'•qÀIiª^¬L'´i3ô%¤`qT'ª^:T'pq)T'r>\'ª^:\'pq)\'r>d'ª^+@t'ª^Fu|'ª^+@t'†pßt'jpCt'`pÞŒ'ª^Fu”'•qÀI”'´i³3œ'•qÀIœ'´i³3œ%´i;4¤'•qÀI¤'´i³3¬'•qÀI¬'´i³3´'üið3¡âÅR¼ Ùk>Ôskq¼'xk<¼'skqÄ'´i;4Ì'’k@<Ä'•q^CÌ'¢kS<¼'’k@<¼'¢kS<áTçW_Ô'üið31ª^yä´i3Ü'´i3üª^:ä'´i3ì'ª^‚`ô'ª^´`ü'›ça(ª^+a (ª^caì&üið3|²l„=(áoÞ(ª^Ub$(ª^b,(ª^ƒ4(ª^T3<(ª^HcD(ª^†cL(ª^ÊcT(ª^:d(ª^:l(ª^Šdt(ª^Re|(Ùq> !üið3„(ª^}fŒ(ª^¥f”(ª^·gœ(ª^)¤(ª^ÿg¬(ª^/h´(ª^sh¼(ª^pi\'Ùq>Ä(ejqÌ(ºj»:Ô(ºj»:Ä(|j)Ô(ª`ÞÌ(¤`q\'d7=Ü(ª^+@ä(ºj»:\'ùo:Ô(¤`qÄ(ª^)ì(ª^kô(ª^/kü(ª^º?)ª^åJ )ª^¾k)ª^#l$)ª^l,)ª^¾k4)ª^åJ<)ª^mD)ª^õmL)ª^ReT)ª^@nª^:\)„m«nÜ´i3d)„mÍnd)–m€l)„mînt)ölQt)„mîn|)„mo|)Nqo„)²l„=Œ)´i3”)„mFo”)Ñço”)édoœ)²l„=¤)üið3 ª^:¬)„mœ‡ª^:´)„má…¼)„mÊoª^:Ä)„måoÌ)„m«†$ª^:,ª^:Ô)`pÞÔ)jpCÜ)ª^Fuä)Fåì)ölQì)FO?ì)švW?ì)¸¢Qì)×èppì)ÜèQì)÷áq4ª^: ²l„=ô)áoÞì)ª^Reü)„m;°*´i3<ª^: *éO?*áO?*éO? *ª^åJ*R”çp$*F>,*ª^·g4*–mq<*ª^)D*mQD*FO?D*ÁtE“D*NqW?D*ÜèQD*÷áqD*ª^ÿgL*FO?L*NqW?L*ßè1:L*!ÓqL*ÜèQL*÷áFqDª^:L*ª^/hT*„m2ˆT*¶qqT*FoT*äè1:T*Nq‡qT*ÜèQT*÷áq\*áoÞT*ª^shd*CèQd*FO?d*½t>d*sE“d*ÁtE“d*švW?d*ÜèQd*÷á>Lª^:d*ª^piTª^:l*FO?l*fè`wl*mèßqt*fè`wt*mèßq|*FO?„*éèá…„*îèCrŒ*ª^)”*PuêEœ*ª^+@œ*jpCœ*`pÞ”*u+@\ª^:¤*ª`C„óè:dª^:¤*rÞŒ*¤`q¬*ª^+@lª^:´*éèá…´*éO?Œ*ZqB}”*ª^_}„*ª^ar¼*ª^:Ì*ª^:Ô*FO?Ô*îèÖsÔ*ÑbqÔ*tqõ€Ô*×èW?Ô*ÜèQÔ*÷áq¬ZqB}Ü*ª^_}Ü*ãqØDÜ*u+@Ô*ª^#lä*éèá…ä*FO?ä*îètä*Ñbqä*tq€rä*×èW?ä*ÜèQä*÷áqì*ª^_}ì*ãqØDì*u+@ä*ª^lô*éèá…ô*FO?ü*FO?+éèá…+îèdt +PuêE +u+@tª^:+rÞ¬¤`q+ª`C+ª^+@|ª^:$+é胆$+Fo,+ª^_}4+ª^}t<+ª^:L+3¤œ‡L+FO?L+švW?L+é1:L+ÜèQL+÷áqL+ª^õmT+ölQT+FO?T+švW?T+¸¢QT+×èppT+ÜèQT+÷áqT+ª^Re\+3¤œ‡\+FO?\+švW?\+é1:\+é‰\+ÜèQ\+÷áq\+ª^@nd+ª^ˆul+ª^ºut+ª^v|+ª^:„+Mé‡q„+WéW?„+eé:„+zéqŒ+ª^)”+ª^°vœ+ª^Çv¤+ª^w¬+ejq´+¤`q¬+ª^)¼+ª^ˆwÄ+ª^åJÌ+ª^ÇvÔ+ª^xÜ+ª^:ä+ª^_}ä+%êŽx„Ô_¯x„à_µxì+„mÚx´i3ô+ª^:ô+?êûxü+ª^:,!é;°,'éx‡,/鯭 ,✇ ,÷áá…,§?,kê«n,Mé‡q,WéW?,¦š¡,qê¡,zêÍl$,²l„=,,áoÞ,zéq,ˆêÞ,eé:4,îq<,î€<,ðêÎyD,´i3L,âço,ª^wT,ø¦_ T,ÉqO?T,¦š‰T,½éùy\,|j)d,ºj»:œª^:l,ø¦_ l,ÉqO?l,¦š‰l,½éùyT,ª^ˆwt,ðêO?¤ª^:|,s‰„,là-q„,¨qŒ,Ñ-qŒ,là-qŒ,Ÿ|‡z”,ª^òœ,´i3„,ª^xz¤,õêÐz¤, ë{¬,´i3Ä,·cÆpÌ,ë^{Ô,švW?Ü,ª^²{Ü,9ëÆpÔ,ª^„ ä,ª^:¬që|ì,ª^²{ô,ª^)¬ª^:ô,·cqì,·cÆpü,(d@}-(d\} -(dx}*ø¦Æp*û’Ïp-ª^~*ª^Ç}-ª^;~´õêÐz´ ë{-û’Ïp-ø¦ñ}<´i3¼ª^:-–mñ}¬ë^{$-9ëÆp$-½éÑ:$-qê¡,-švW?4-ª^Ç~<-ª^„ 4-ø¦ã~¬‰ë5|¬žëA|<-tìW?D-ª^p L-ª^T-ª^M\-ª^—l-ejqt-ª^ €|-ª^ €„-ª^「-ejq”-ª^CŒ-|j)œ-ª^:Œ-ª^)¤-ª^žl-|j)l-ª^)¬-ª^h‚´-ª^ô‚¼-švéü+¦š¡Ä=‘5ƒÄ½éqĈêÞÄåí@ƒÄÊo:Ä-„mƒ†Ä-šv‡qĪ^:Ü´i3Ì-„mQƒÌ-šv‡qÌ-ÁtE“Ô-üið3Ü-„muƒÜ-l±‡qÜ-r±‡ƒä-áoÞD,üið3ì-„mx‡ì-šv‡qì-¦š‰ì-½éhˆô-´i3ü-„mœ‡ü-švW?ü-¦š‰.„mÍn.=‘ȇ .´i3.¤`q.„mîn.'lE“´ ´i3$.„mîn$.ðíQ$.'lE“$.÷áD„,.|j)4.'éx‡4./鯭4.¦š‰4.½éhˆ4.=‘|„<.ejq,*½t>,*½éQ,*«¸Q,*žãÞ<*Ñbq<*¦š¡D.„m§?D.švW?Ì ûí1?Ì ¸¢W?L.•qÀIT.ª^ÿ„\.Þp4…d.´i³3l.ª^:t.ª^y|.ª^:„.•qÀIŒ.ª^Ÿ…”.,îQIÔ_ë…œ.}ð…œ.Zîú…¤ ´i3¤.´i³3¬.žãL‡¬.7“c‡¬.ª^E ¡i¡iî‡T üið3¼.ª^°ˆÄ.ª^ìˆÌ.ª^>‰Ô.ª^f‰Ôª^:Ü.„mƒ†Ü.‡’̉ä.žãç‰ì.„mõ‰ì.‡’̉ô.‡’Šü.žãî‰/‡’Š/“ÅQ/–ÅQT ´i3¡âÅDŠ /Rvš'¡âÅuŠ¡âŦŠ/´i³3/´i³3$/´i3Ôl]<,/xk<,/skq4/ª^+@¤Xmp;qª^¬9îxÁKqª^G“Ü|j)ÜejqT/ª^ï”\/ª^0•y¹mÍ–d/´i3!Oõ‘˜l/ª^:t/ª^:|/ª^:„/ª^:Œ/„mö™Œ/ø¦š”/´i3œ/´i3ܪ^:¤/„m,š¤/ø¦Îy¬/´i3äª^:qÌõoš´/ª^)¼/ª^)Ì/ª^)Ü/ª^)ì/ª^)ü/ª^) 0ª^)0ª^),0ª^)<0ª^)L0ª^)\0ª^)l0ª^)t0ª^fž|0ª^«ž„0ª^)Œ0ª^÷ž”0ª^AŸœ0ª^)}& ¬0ª^+a´0ª^+a¼0dnD£´'´i3Ä0dnD£Ì0dnD£Ô0dnD£Ü0dnq£ä0dnD£ì0dnD£ô0dnD£ü0dnD£1dnD£ 1dnð…1´i31dnD£$1dnD£,1dná…41dnD£<1dnD£D1dnD£L1dnD£T1dnD£\1dnD£d1dn2ˆìû¤ì-û¤ì û¤ìû¤ì%û:ìáoÞìª^:l1Ñbqôª^:t1mqt1Ô›qt1¶qqt1Jû3t1Eû)¤t18ûµxt1?ûµx|1mq|1Ô›q|1¶qq|1Eû)¤|1?ûµx|18ûµxüª^:ª^:¤ª^:ª^:¤,ª^:4ª^:¤Dª^:Lª^:¤\ª^:dª^:¤tª^:|ª^:¤Œª^:”ª^:¤¤ª^:¬ª^:¤¼ª^:Ī^:¤Ôª^:ܪ^:¤ìª^:¤ôª^:¤ ª^:¤ ª^:¤„1Š|q„1mq„1Ô›q„1Ñæ„1Tû¡ ª^:¤D üið3Œ1Š|qŒ1ÑæŒ1mqŒ1Ô›q”1 õ€”1mq”1Ô›q”1Ñ2ˆ”1Qû¡”1Tû¡œ1Ž|€œ1Ñ2ˆœ1mqœ1 õ€œ1Ô›q$ ª^:¤¤1ó²(O4 ª^:¬1ó²(O´1ª^E§¼1ª^E§Ä1ª^E§Ì1ª^E§Ô1ª^E§Ü1ª^E§ä1ª^E§ì1ª^E§ô1dnD£< ª^:q!r³§D ª^:´1iûD£D ´i3L ª^:q!r¸§¼1iûD£T ª^:Ä1iûD£\ ª^:q!r½§Ì1iûD£d ª^:±ª^¬Ô1iûD£l ª^:q!rošÜ1iûD£t ª^:q!r§ä1iûD£| ª^:q!rǧì1iûD£ü1ª^E§2ª^E§ 2dnD£q«õošü1iûD£2iûD£2ª^E§2ª^E§$2dnD£q°õoš2iûD£2iûD£,2ª^E§42ª^E§<2dnD£qµõoš,2iûD£42iûD£D2ª^>¨L2ª^>¨T2dnq£„ ª^:qºõ—¨\2“¹á…Œ ª^:D2iûq£Œ ´i3\2ª^T3” ª^:d2“¹á…L2iûq£d2ª^T3l2ª^E§t2ª^E§|2dnD£qÀõošl2iûD£t2iûD£„2ª^E§Œ2ª^E§”2dnD£qÈõoš„2iûD£Œ2iûD£œ2ª^E§¤2ª^E§¬2dnD£œ2iûD£¤2iûD£´2ª^E§¼2ª^E§Ä2dnD£qèoš´2iûD£¼2iûD£Ì2ª^E§Ô2ª^E§Ü2dnD£qÒõošÌ2iûD£Ô2iûD£ä2ª^b©ì2ª^b©ô2ª^b©ü2ª^b©3ª^b© 3ª^b©3ª^b©3ª^b©$3dnð…œ ª^:q|Ì©¤ ª^:ä2iûð…¬ ª^:ì2iûð…´ ª^:ô2iûð…¼ ª^:q|à©ü2iûð…Ä ª^:q|î©3iûð…q|PE 3iûð…Ì ª^:q|ø©3iûð…Ô ª^:q|ª3iûð…,3ª^E§43ª^E§<3dnD£qØõoš,3iûD£43iûD£D3ª^E§L3ª^E§T3dnD£qÜõošD3iûD£L3iûD£\3ª^T3d3ª^T3l3dná…qâõoš\3iûá…d3iûá…t3ª^E§|3ª^E§„3dnD£qçõošt3iûD£|3iûD£Œ3ª^E§”3ª^E§œ3dnD£qëõošŒ3iûD£”3iûD£¤3ª^E§¬3ª^E§´3dnD£qðõoš¤3iûD£¬3iûD£¼3ª^E§Ä3ª^E§Ì3dnD£qôõoš¼3iûD£Ä3iûD£Ô3ª^E§Ü3ª^E§ä3dnD£qùõošÔ3iûD£Ü3iûD£ì3ª^E§ô3ª^E§ü3dnD£qýõošì3iûD£ô3iûD£4ª^-« 4ª^-«4dn2ˆq ~—¨4“¹ƒ†Ü ª^:4iû2ˆÜ ´i34ª^‡«$4“¹ƒ† 4iû2ˆ$4ª^‡«¬ ¦|<¬ ½é<¬ ¦š¡¬ ˆêÞä ª^:,4ª^¬44ª^†c<4„mV¬<4ò±cD4´i³344„måoä ´i3ì ª^:L4ª^‰¬\4ª^õ¬d4ª^­l4„mv­l4ò±Mt4´i;4\4„mÀ¬ô ª^:T4´i³3|4´i3d4„m«­ì ´i3ü ª^:Œ4ª^+®œ4ª^m®¤4ª^š®¬4ª^x¯Œ4„mÕ­ ª^:„4´i;4´4´i3œ4„më­”4´i³3|4üið3¤4„m³¯ü ´i3D,üiÁ4¼4„mÚ¯¼4ò±|$Ä4´i65 ª^:Ì4ª^°Ü4ª^ê°ì4ª^2±ü4ª^„±5ª^º± 5„må² 5ò±¼*5´iÊ6Ü4„mj° ª^:Ô4´i655´i3ì4„m‚°ä4´i;4´4üið3ü4„mŸ°ô4´i³3|4üiÁ45„m2³ ´i3D,üi"6$5ª^:,5ª^y45ª^:<5ª^:D5„m¾AD5±ÿ¾AÑrå´L5ª^+@T5ª^+@IÙô(µáç†L5jpCL5`pÞá<~táùF~JµIpôUµÑmµ!F~uµF~€µT5jpCT5`pÞÙF~¬µÉ_´Ùµ\5dnqd5dnql5dn¶1üið3|5ª^†c„5ª^+aŒ5ª^†cÔ5×xåoÜ5ª^†cä5ª^+aì5ª^†cü5×xåo6ª^†c 6ª^+a6ª^†c6×xåo$6ª^†c,6ª^+a46ª^†c<6×xåoD6,îQL6±ÿ¾AL6„m¾AT6dnq\6dnq|6ª^+a„6ª^ü¸Œ6dn¶” ª^:Iêô?¹Ä& œ ª^:¤ ª^:¬ ª^:|6¸¢(O´ ª^:”6“¹în¼ ª^:„6iû¶¼ ´i3”6ª^+aÄ6×xåoÌ6“¹á…Ô6iûåoÜ6ª^T3ä6Ô›(Oì6“¹á…ô6iûåoü6ª^T3Ä ª^:7×xåo 7“¹á…7iûåo7ª^T3$7Ô›(O,7“¹á…47iûåo<7ª^T3Ì ª^:D7×xåoL7“¹á…T7iûåo\7ª^T3d7Ô›(Ol7“¹á…t7iûåo|7ª^T3„7×xåoŒ7“¹á…”7iûåoœ7ª^T3¤7Ô›(O¬7“¹á…´7iûåo¼7ª^T3¡öxw¼¡öx‹¼¡O½¼¡öx×¼¡—WRvŸ !à_ý¾!Ô_Lì7`pÞì7jpCì7†pßì7pX"ô7`pÞô7jpCô7†pßô7pX"ô7špÞ&ü7iQ‘ª^:™iîÉ] ¤8iQ 8èdQ 8ìc>8·cq8·c€$8·cc,8·cM48·c|$<8ìc>D8·cqL8·c€T8·cc\8·cMd8·c|$l8·c¼*<8èdQ„8ìc>Œ8·cq”8·c€œ8·cc¤8·cM¬8·c|$´8·c¼*¼8·cð/¬ „mÉм ´i3´ „má…Ä „mÉÐÌ „má…Ì8„mÔÐÔ8´i)Ü8„mÉÐä8„m÷Ðì8´i3ô8„m&Ñü8´i39„m[Ñ 9ª^­9´i39„m¤Ñ$9ª^c­,9´i3á¡yÒùí)”Ôñª^Ò49ª^)ì7ª^­ô7ª^c­<9ª^­ÒD9ª^òÒL9ª^)T9ª^LÓ\9^*qd9‚ÖÓl9‚úÓ1GlÔ^*q+€Ü)^*qÜ)+€Ü)‡+c 9^*q 9+€ 9‡+c 9+M$9^*q$9+€$9‡+c$9+M$9—+|$t9^*qt9+€t9‡+ct9+Mt9—+|$t9Ÿ+¼*„9^*q„9+€„9‡+c„9+M„9—+|$„9Ÿ+¼*„9­+ð/”9^*q”9+€”9‡+c”9+M”9—+|$”9Ÿ+¼*”9­+ð/”9Ä+{ÕX ]bglq v${(€,…0Š4<X@]DbHlL€P˜¨X¬]ÀXÄ]ÈbèXì]ðbôgX ]$b(g,l\X`]dbhgllpq¨X¬]°b´g¸l¼qÀvX]$X(]TXX]\b X¤]¨bX ]$b<X@]DbÌXÐ]ÔbØgDXH]LbPgTlXq\v`{d€h…l1[p6[t;[x@[|E[€J[„˜ˆO[ŒT[Y[”^[˜c[œh[ m[¤r[¨w[¬|[°[´†[¸‹[¼[ÀŠÄÈ•[Ìš[П[ X¤]¨bœ X  ]¤ b¨ g8b<g@lPXT]4X8]<b@gDlHq€X„]ˆbŒgl”q˜v`Xd]hbÄXÈ]Ìb°X´]¸b*z].2«. Ä.à.î.#ô.Bú.B.BQ.Bl.BŽ.+±.3Æ.;±.Cá.K.S1Cr1cr1ƒk]ƒr1£{¯£r1Ã{¯Ã:]Ãr1ã{Éã:]ãr1{É:]r1#{¯#:]#r1C{ãC:]Cr1c{¯c:]cr1ƒ{ýƒ:]ƒr1£{¯£:]£r1Ã{ãÃ:]Ãr1ã{ã:]ãr1{¯:]r1#{¯#:]#r1C{¯C:]Cr1c{1c:]cr1ƒ{Kƒ:]ƒr1£{K£:]£r1Ã{1Ã:]Ãr1É‹]É“]É›ëã{eã:]ãr1é‹]é“]é›ë{Š:]r1 ‹] “] ›ë#{¤#:]#r1)RÍ)‹])“]C{¾C:]Cr1IR2I‹]I“]c{¯c:]cr1iRÍi‹]i“]ƒ{؃:]ƒr1‰R2‰‹]‰“]£{¯£:]£r1©‹]©“]©›ëÃ{ãÃ:]Ãr1É‹]É“]É›ëã{ýã:]ãr1é‹]é“]é›ë{6:]r1 ‹] “] ›ë#{6#:]#r1)RÍ)‹])“]C{6C:]Cr1IR2I‹]I“]c{6c:]cr1iRÎi‹]i“]ƒ{ƒ:]ƒr1‰R͉‹]‰“]£{1£:]£r1©R2©‹]©“]Ã{6Ã:]Ãr1ÉRÎÉ‹]É“]ã{Šã:]ãr1é‹]é“]é›ë{Š:]r1 ‹] “] ›ë#{¤#:]#r1)‹])“])›ëC{C:]Cr1I‹]I“]I›ëc{c:]cr1i‹]i“]i›ë›ë‹]“]ƒ{¯ƒ:]ƒr1‰R͉‹]‰“]¡›ë¡‹]¡“]£{¾£:]£r1©R2©‹]©“]Á›ëÁ‹]Á“]Ãr1ÉRÎÉ‹]É“]á›ëá‹]á“]ãÂ]ãº]ãò´ãràéRG"é‹]é“] RÍ ‹] “]#ãé)R2)‹])“]CãHIRÎI‹]I“]a›ëa‹]a“]iRG"i‹]i“]›ë‹]“]‰‹]‰“]‰›ë¡›ë¡‹]¡“]£Â]£º]£ò-£rà©‹]©“]©›ëÁ›ëÁ‹]Á“]É‹]É“]É›ëá›ëá‹]á“]ããAé‹]é“]é›ë›ë‹]“]ã… ‹] “] ›ë!›ë!‹]!“]#ãä)‹])“])›ëIRÍI‹]I“]iR2i‹]i“]‰RΉ‹]‰“]£Â]£º]£òb!£rà©RG"©‹]©“]Á›ëÁ‹]Á“]ÉRÍ&É‹]É“]á›ëá‹]á“]ããv!éRÍé‹]é“]›ë‹]“]ãº! R2 ‹] “]!›ë!‹]!“]#ãþ!)RÎ)‹])“]A›ëA‹]A“]Cã]"IRG"I‹]I“]a›ëa‹]a“]iRÍ&i‹]i“]›ë‹]“]‰‹]‰“]‰›ë¡›ë¡‹]¡“]©‹]©“]©›ëÁ›ëÁ‹]Á“]É‹]É“]É›ëãÂ]ãº]ãò¤%ãràé‹]é“]é›ë ‹] “] ›ë# ã¸%) ‹]) “]) ›ëC ãü%I ‹]I “]I ›ëc ã@&i RÍi ‹]i “] ›ë ‹] “]ƒ ã„&‰ R2‰ ‹]‰ “]  ‹]  “]¡ ›ë¡ ‹]¡ “]£ ãã&© RΩ ‹]© “]À zÁ ›ëÁ ‹]Á “]É RG"É ‹]É “]à ‹]à “]á ›ëá ‹]á “]é RÍ&é ‹]é “] z= ›ë ‹] “] R«* ‹] “] ‹] “]! ›ë! ‹]! “]) RÍ) ‹]) “]@ ‹]@ “]A ›ëA ‹]A “]I R2I ‹]I “]` ‹]a ›ëa ‹]a “]c Â]c º]c ò>)c rài RÎi ‹]i “]€ ‹] ›ë ‹] “]‰ RG"‰ ‹]‰ “]  ‹]¡ ›ë¡ ‹]¡ “]£ ãR)© RÍ&© ‹]© “]À ‹]Á ›ëÁ ‹]Á “]à ã–)É R«*É ‹]É “]à ‹]ã ãÚ)é ‹]é “]é ›ë ‹] ã* ‹] “] ›ë ‹]# ãb*) ‹]) “]) ›ë@ ‹]C ãÅ*I ‹]I “]I ›ë` ‹]` “]i ‹]i “]i ›ë€ ‹]€ “]‰ ‹]‰ “]‰ ›ë  ‹]  “]¡ ›ë¡ ‹]¡ “]© ‹]© “]© ›ëÀ ‹]À “]Á ›ëÁ ‹]Á “]É ‹]É “]É ›ëà ‹]à “]á ›ëá ‹]á “]é RÍé ‹]é “] ‹] “] ›ë ‹] “] R2 ‹] “] ‹] “]! ›ë! ‹]! “]# Â]# º]# ò..# rà) RÎ) ‹]) “]@ ‹]@ “]A ›ëA ‹]A “]I RG"I ‹]I “]` ‹]` “]a ›ëa ‹]a “]c ãB.i RÍ&i ‹]i “]€ zÜ ›ë ‹] “]ƒ ã†.‰ R«*‰ ‹]‰ “]  ‹]  “]¡ ›ë¡ ‹]¡ “]£ ãÊ.© Rß/© ‹]© “]À zÁ ›ëÁ ‹]Á “]à ã/É RÍÉ ‹]É “]à ‹]à “]á ›ëá ‹]á “]ã ãR/é R2é ‹]é “] z= ›ë ‹] “] ã–/ RÎ ‹] “] ‹] “]! ›ë! ‹]! “]# ãù/) RG") ‹]) “]@ ‹]@ “]I RÍ&I ‹]I “]` ‹]i R«*i ‹]i “]€ ‹]‰ Rß/‰ ‹]‰ “]  ‹]© zý1À ‹]É z 2à ‹]é z2‹] ‹]!›ë!‹]!“]#r 3)›ë)zý1@‹]A›ëA‹]A“]CB]Cr1`‹]`“]a›ëa‹]a“]cB]cr1i‹]i“]i›ë€‹]€“]›ë‹]“]ƒB]ƒ:]ƒr1‰R2‰‹]‰“] ‹] “]¡›ë¡‹]¡“]£Â]£º]£òj:£»{:£r‹:©›ë©²¢:À‹]À“]Á›ëÁ‹]Á“]ÃjîÃ’Ã;ÃÂ]ú]ÃòÌ;ûà;ÃràÉ›ëɲ¢:à‹]à“]á›ëá‹]á“]é‹]é“]é›ë‹]“]›ë‹]“]“’=jîÂ]º]òœ=ã®=»à=rà ‹] “] ›ë ‹] “]!›ë!‹]!“])‹])“])›ë@‹]@“]A›ëA‹]A“]Cr1I‹]I“]I›ë`‹]`“]a›ëa‹]a“]cr1iR2i‹]i“]€‹]€“]›ë‹]“]ƒ"]ƒZ]ƒr1‰R<‰‹]‰“] ‹] “]¡›ë¡‹]¡“]£Z]£r1©›ëÀ‹]À“]Á›ëÁ‹]Á“]ÃZ]Ãr1É›ëà‹]à“]ãr1z¤]r1 ‹] “]#ò?#r1@zÜA›ëCB]Cr1I›1`‹]`“]a›ëa‹]a“]c:]cr1€zƒ’Ã;ƒÊ]ƒâ]ƒrs@ ‹] “]Àz=Á›ëÁ‹]Á“]Ãã|@à‹]à“]á›ëá‹]á“]ããA‹]“]›ë‹]“] ‹])‹])“])›ë@‹]C“’=Cò[FC:]CãlFC»FCr1IR2I‹]I“]`‹]c:]cr1iR<i‹]i“]€‹]ƒÊ]ƒâ]ƒ»ìFƒrG‰RΉ‹]‰“] ‹]£’Ã;£Ê]£â]£rs@©R¾@©‹]©“]À‹]ÉRÛ@É‹]É“]à‹]ããÍGéRì@é‹]é“]‹]b]ãH Rý@ ‹] “] ‹] “])R2)‹])“]@‹]@“]IR<I‹]I“]`‹]`“]c:]cò KcãKc»Fcr1iRÎi‹]i“]€‹]€“]ƒ:]ƒr1‰R¾@‰‹]‰“] ‹] “]£:]£r1©RÛ@©‹]©“]À‹]À“]ÃB]Ã:]Ãr1ÉRì@É‹]É“]à‹]à“]ãr1éRý@é‹]é“]‹]“]›ë‹]“]B]:]r1 ‹] “]!›ë!‹]!“]#òòN#r1)›ë@‹]@“]A›ëA‹]A“]CòƒOCr1`‹]`“]a›ëa‹]a“]còSPcr1i›ë€‹]€“]›ë‹]“]ƒÊ]ƒâ]ƒrG ‹] “]¡›ë¡‹]¡“]£]£Ò]£Ú]£ÂR£r1À‹]À“]Á›ëÁ‹]Á“]ÃÂ]Ãâ]Ãrs@É›1à‹]à“]á›ëá‹]á“]ézý1‹]“]›ë‹]“]ã£R z 2 ‹] “]#ãõR)‹])“])›ë@zG#CãDSIR2I‹]I“]`‹]`“]iR<i‹]i“]€z¤‰R¡G‰‹]‰“] ‹] “]©R²G©‹]©“]ÀzÜÁ›ëÃÊ]Ãâ]Ãrs@ÉRÎÉ‹]É“]à‹]à“]á›ëéR2é‹]é“]zãT R< ‹] “] ‹] “]#ã¤T)R¡G)‹])“]@z=Cã/UIR²GI‹]I“]`‹]`“]a›ëa‹]a“]iRÎi‹]i“]€‹]€“]›ë‹]“]‰›ë ‹]¡›ë¡‹]¡“]À‹]Á›ëÁ‹]Á“]ÃÊ]Ãâ]Ãr1É›ëà‹]á›ëá‹]á“]ãÊ]ãâ]ãrG‹]›ë‹]“]r1 ›ë ‹]!›ë!‹]!“]#r1)›ë@‹]C:]CòRWCr1I›ë`‹]cÂ]câ]crs@i›ë€‹]‰›1 ‹] “]£ãêWÀ‹]À“]Ãã;Xà‹]à“]ãã“X‹]“]ãäX ‹] “]@‹]@“]`‹]`“]€‹]€“]‰zý1 ‹] “]£Â]£â]£rs@©z 2À‹]À“]Á›ëà‹]à“]á›ëãã¤[‹]“]ã\ ‹] “]#ã_\@‹]@“]Cã¾\`‹]`“]cã)]€‹]€“]ƒã—] ‹] “]£ãø]À‹]À“]Á›ëÁ‹]Á“]ÃãW^à‹]à“]ãã¸^‹]“]ã/_ ‹] “]#ã‘_)‹])“])›ë@z(A›ëA‹]A“]Cãñ_I‹]I“]I›ë`‹]`“]a›ëa‹]a“]cãS`i‹]i“]i›ë€zG#›ë‹]“]ƒãË`‰‹]‰“]‰›ë ‹] “]¡›ë¡‹]¡“]£ã6a©‹]©“]©›ëÀz¤Á›ëÁ‹]Á“]ÃãšaÉR2É‹]É“]à‹]à“]ããüaéRÎé‹]é“]zÜãTb R2 ‹] “] ‹] “]#ã®b)RÎ)‹])“]@zA›ëA‹]A“]Cã cI‹]I“]I›ë`‹]`“]a›ëa‹]a“]cã}ci‹]i“]i›ë€z=›ë‹]“]ƒãÔc‰‹]‰“]‰›ë ‹] “]¡›ë¡‹]¡“]©‹]©“]©›ëÀ‹]À“]Á›ëÁ‹]Á“]ÉRÍÉ‹]É“]à‹]á›ëá‹]á“]éRæSé‹]é“]‹]›ë‹]“] R÷S ‹] “] ‹]!›ë!‹]!“])R2)‹])“]@‹]A›ëA‹]A“]IR<I‹]I“]`‹]a›ëa‹]a“]iR¡Gi‹]i“]€‹]›ë‹]“]‰R²G‰‹]‰“] ‹]¡›ë¡‹]¡“]©R`T©‹]©“]À‹]Á›ëÁ‹]Á“]ÉRwTÉ‹]É“]à‹]à“]á›ëá‹]á“]éRÎé‹]é“]‹]“]›ë‹]“] R¾@ ‹] “] ‹] “]!›ë)RÛ@)‹])“]@‹]@“]A›ëIRÍI‹]I“]`‹]`“]a›ëiRæSi‹]i“]€‹]€“]›ë‰R÷S‰‹]‰“] ‹] “]¡›ë©R2©‹]©“]À‹]À“]Á›ëÉR<É‹]É“]à‹]à“]á›ëéR¡Gé‹]é“]‹]“]›ë R²G ‹] “] ‹] “]!›ë)R`T)‹])“]@‹]@“]A›ëIRwTI‹]I“]`‹]`“]còRkc"]cr1iRÎi‹]i“]€‹]€“]ƒòbkƒ"]ƒr1‰R¾@‰‹]‰“] ‹] “]£"]£r1©RÛ@©‹]©“]À‹]À“]Ã]ÃÒ]Ãâ]Ãr1à‹]à“]ã]ãÒ]ãâ]ãr1‹]“]]Ê]â]r1 zý1 ‹] “]#"]#:]#Z]#r1)z 2@‹]@“]A›ëA‹]A“]Cr1Iz2`‹]`“]cr1izÓU€‹]€“]ƒÊ]ƒâ]ƒrs@‰zàU ‹] “]£Z]£r1©zíUÀ‹]À“]Ãr1ÉzúUà‹]à“]á›ëá‹]á“]ãÊ]ãâ]ã‚îãrGézVz—,›ë‹]“]Ê]â]‚îrG zV ‹] “]!›ë!‹]!“]#:]#Ê]#â]#òëo#rs@)z!V@z(A›ëA‹]A“]CòqC:]Cr1`‹]`“]a›ëa‹]a“]cr1€zG#›ë‹]“]ƒ:]ƒò{vƒr1 ‹] “]¡›ë¡‹]¡“]£:]£‚î£r1Àz¤Á›ëÁ‹]Á“]Ã:]ÂîÃr1à‹]à“]á›ëá‹]á“]ã:]ãòÈyãr1 zÜ ›ë ‹] “] :] ‚î ò†| r1 ‹] “] ›ë ‹] “]! ›ë! ‹]! “]) ‹]) “]) ›ë@ zA ›ëA ‹]A “]C R]C rs€I ‹]I “]I ›ë` ‹]` “]a ›ëa ‹]a “]i ‹]i “]i ›ë€ z= ›ë ‹] “]‰ ‹]‰ “]‰ ›ë  ‹]  “]¡ ›ë¡ ‹]¡ “]£ r$© RÍ© ‹]© “]À ‹]À “]Á ›ëÁ ‹]Á “]É RæSÉ ‹]É “]à ‹]á ›ëá ‹]á “]é R2é ‹]é “]!‹]!›ë!‹]!“]!r$ !RÎ !‹] !“] !‹]!!›ë!!‹]!!“])!R¾@)!‹])!“]@!‹]A!›ëA!‹]A!“]I!RG"I!‹]I!“]`!‹]a!›ëa!‹]a!“]c!’Ø…c!:]c!rs€i!RÓXi!‹]i!“]€!‹]!›ë!‹]!“]ƒ!B]ƒ!r1‰!R͉!‹]‰!“] !‹]¡!›ë¡!‹]¡!“]£!r$©!RæS©!‹]©!“]À!‹]Á!›ëÁ!‹]Á!“]Ã!r$É!R2É!‹]É!“]à!‹]à!“]á!›ëá!‹]á!“]ã!r$é!RÎé!‹]é!“]"‹]"“]"›ë"‹]"“]"r$ "R¾@ "‹] "“] "‹] "“])"RG")"‹])"“]@"‹]@"“]I"RÓXI"‹]I"“]`"‹]`"“]c"r$i"‹]i"“]i"›ë€"‹]€"“]ƒ"r$‰"‹]‰"“]‰"›ë "‹] "“]£"r$©"‹]©"“]©"›ëÀ"‹]À"“]Ã"r$É"‹]É"“]É"›ëà"‹]à"“]ã"r$é"‹]é"“]é"›ë#‹]#“]#r$ #‹] #“] #›ë #‹] #“]##r$)#‹])#“])#›ë@#‹]@#“]C#r$I#‹]I#“]I#›ë`#‹]`#“]i#‹]i#“]i#›ë€#‹]€#“]‰#‹]‰#“]‰#›ë #‹] #“]£#’Ø…£#:]£#rs€©#‹]©#“]©#›ëÀ#‹]À#“]É#‹]É#“]É#›ëà#‹]à#“]é#‹]é#“]é#›ë$‹]$“] $‹] $“] $›ë $‹] $“])$‹])$“])$›ë@$‹]@$“]I$‹]I$“]I$›ë`$‹]`$“]i$‹]i$“]i$›ë€$‹]€$“]‰$‹]‰$“]‰$›ë $‹] $“]©$‹]©$“]©$›ëÀ$‹]À$“]É$‹]É$“]É$›ëà$‹]à$“]ã$R]ã$rs€é$‹]é$“]é$›ë%‹]%“] %‹] %“] %›ë %‹] %“])%‹])%“])%›ë@%‹]@%“]I%‹]I%“]I%›ëi%‹]i%“]i%›ë‰%‹]‰%“]‰%›ë©%‹]©%“]©%›ëÉ%‹]É%“]É%›ëé%‹]é%“]é%›ë&r$ &‹] &“] &›ë)&‹])&“])&›ë@&‹]C&r$I&‹]I&“]I&›ë`&‹]i&‹]i&“]i&›ë€&‹]‰&‹]‰&“]‰&›ë¡&›ë¡&‹]¡&“]©&‹]©&“]©&›ëÀ&‹]Á&›ëÁ&‹]Á&“]Ã&r$É&‹]É&“]É&›ëà&‹]á&›ëá&‹]á&“]é&‹]é&“]é&›ë'›ë'‹]'“] '‹] '“] '›ë!'›ë!'‹]!'“])'‹])'“])'›ëA'›ëA'‹]A'“]I'‹]I'“]I'›ëa'›ëa'‹]a'“]i'‹]i'“]i'›ë'›ë'‹]'“]‰'‹]‰'“]‰'›ë¡'›ë¡'‹]¡'“]£'R]£'rs€©'‹]©'“]©'›ëÁ'›ëÁ'‹]Á'“]É'‹]É'“]É'›ëá'›ëá'‹]á'“]é'‹]é'“]é'›ë(›ë(‹](“] (‹] (“] (›ë!(›ë!(‹]!(“])(‹])(“])(›ëA(›ëA(‹]A(“]I(‹]I(“]I(›ëa(›ëa(‹]a(“]i(‹]i(“]i(›ë(›ë(‹](“]‰(‹]‰(“]‰(›ë¡(›ë¡(‹]¡(“]©(‹]©(“]©(›ëÁ(›ëÁ(‹]Á(“]É(R«*É(‹]É(“]á(›ëá(‹]á(“]ã(r$é(Rß/é(‹]é(“])›ë)‹])“])rs€ )RN\ )‹] )“]!)›ë!)‹]!)“]))R­\))‹]))“]A)›ëA)‹]A)“]I)R]I)‹]I)“]a)›ëa)‹]a)“]i)R]i)‹]i)“])›ë)‹])“]‰)Rw]‰)‹]‰)“] )‹]¡)›ë¡)‹]¡)“]©)Rç]©)‹]©)“]À)‹]Á)›ëÁ)‹]Á)“]É)RF^É)‹]É)“]à)‹]á)›ëá)‹]á)“]é)R§^é)‹]é)“]*‹]*›ë*‹]*“] *R _ *‹] *“] *‹]!*›ë!*‹]!*“])*R€_)*‹])*“]@*‹]A*›ëA*‹]A*“]C*rs€I*Rà_I*‹]I*“]a*›ëa*‹]a*“]i*RB`i*‹]i*“]*›ë*‹]*“]‰*R¨`‰*‹]‰*“] *‹]¡*›ë¡*‹]¡*“]©*Ra©*‹]©*“]À*‹]Á*›ëÁ*‹]Á*“]É*R‰aÉ*‹]É*“]à*‹]à*“]á*›ëá*‹]á*“]é*Rëaé*‹]é*“]+z+›ë+‹]+“] +RCb +‹] +“] +z=!+›ë!+‹]!+“])+Rb)+‹])+“]@+‹]@+“]A+›ëA+‹]A+“]I+RúbI+‹]I+“]`+‹]`+“]a+›ëa+‹]a+“]i+RTci+‹]i+“]€+‹]€+“]+›ë+‹]+“]‰+Rec‰+‹]‰+“] +‹]¡+›ë¡+‹]¡+“]©+RÃc©+‹]©+“]À+‹]Á+›ëÁ+‹]Á+“]É+R«*É+‹]É+“]à+‹]á+›ëá+‹]á+“]é+Rß/é+‹]é+“],‹],›ë,‹],“] ,RN\ ,‹] ,“] ,‹]!,›ë!,‹]!,“]#,:]#,‚î#,r1),R­\),‹]),“]@,‹]A,›ëA,‹]A,“]I,R]I,‹]I,“]i,R]i,‹]i,“]ƒ,:]ƒ,‚îƒ,r1‰,Rw]‰,‹]‰,“]©,Rç]©,‹]©,“]À,‹]É,RF^É,‹]É,“]à,‹]ã,rs€é,R§^é,‹]é,“]-Ê]-â]-rs@ -R _ -‹] -“] -‹] -“])-R€_)-‹])-“]@-zC-ãGœI-Rà_I-‹]I-“]`-‹]`-“]c-㑜i-RB`i-‹]i-“]€-z=-b]ƒ-ã蜉-R¨`‰-‹]‰-“] -‹] -“]©-Ra©-‹]©-“]À-‹]À-“]É-R‰aÉ-‹]É-“]à-‹]à-“]é-Rëaé-‹]é-“].‹].“].r$ .RCb .‹] .“] .‹] .“]#.r$).Rb).‹]).“]@.‹]C.r$I.RúbI.‹]I.“]`.‹]i.RTci.‹]i.“]€.‹]‰.Rec‰.‹]‰.“] .‹]©.RÃc©.‹]©.“]À.‹]à.‹]/‹]/›ë/‹]/“] /‹]i/zý1/›ë‰/z 2¡/›ë©/zý1Á/›ëá/›ë0›ë 0zý1!0›ë)0z 2A0›ëI0z2a0›ëa0‹]a0“]€0²G>€0‹]c1rs€i1‹]i1“]i1›ë‰1‹]‰1“]‰1›ëÃ1r$É1zý1ä1"]é1z 2 2z22J]$2"])2zÓU32J]32R]I2zàUi2zý1‰2z 2©2‹]©2“]©2›ëÉ2RÍÉ2‹]É2“]D3"]a3òª|a3›ë3›ë3‹]3“]„3"]“3J]Ä3"]é3òª|é3rÃ|4"] 4rÃ|#4r$i4rÃ|„4"]‰4rÃ|£4r$©4‹]©4“]©4›ëÉ4‹]É4“]É4›ëã4r$é4‹]é4“]é4›ë5"] 5‹] 5“] 5›ë)5RÍ)5‹])5“]I5R2I5‹]I5“]d5"]i5RÎi5‹]i5“]€5‹]€5“]‰5R͉5‹]‰5“] 5zܤ5"]©5R2©5‹]©5“]À5zÉ5RÎÉ5‹]É5“]à5z=ä5"]é5rÃ|6‹]6“] 6rÃ| 6‹] 6“])6rÃ|@6‹]@6“]`6‹]`6“]c6r$€6‹]€6“] 6‹] 6“]£6r$©6rÃ|À6‹]À6“]É6rÃ|à6‹]à6“]é6rÃ|7‹]7“] 7rÃ| 7‹] 7“])7rÃ|@7‹]@7“]I7zý1`7‹]`7“]i7z 2€7‹]€7“]‰7z2 7‹] 7“]©7zý1À7‹]À7“]Ä7"]É7‹]É7“]É7›ëà7‹]à7“]é7RÍé7‹]é7“]8‹]8“]8"] 8RæS 8‹] 8“] 8‹] 8“])8‹])8“])8›ë@8‹]@8“]C8r$D8"]I8RÍI8‹]I8“]i8zý1‰8z 2 8;]¤8"]©8z2À8C]ä8"]$9"]d9"]i9rÃ|ƒ9r$¤9"]©9rÃ|É9rÃ|é9zý1 :z 2):z2i:rÃ|€:²G>ƒ:r$‰:rÃ| :²ÇC©:‹]©:“]©:›ëÉ:RÍÉ:‹]É:“]é:RæSé:‹]é:“] ;R÷S ;‹] ;“]!;›ë!;‹]!;“]);‹]);“]);›ëI;‹]I;“]I;›ëi;‹]i;“]i;›ë‰;‹]‰;“]‰;›ë©;‹]©;“]©;›ëÉ;rÃ|á;›ëá;‹]á;“]é;rÃ| <rÃ|)<rÃ|I<‹]I<“]I<›ëi<‹]i<“]i<›ë‰<‹]‰<“]‰<›ë¡<›ë¡<‹]¡<“]©<‹]©<“]©<›ëÉ<‹]É<“]É<›ëé<‹]é<“]é<›ë=›ë=‹]=“] =‹] =“] =›ë)=‹])=“])=›ëI=RÍI=‹]I=“]i=R2i=‹]i=“]‰=R<‰=‹]‰=“]©=RΩ=‹]©=“]É=RG"É=‹]É=“]é=R«*é=‹]é=“] >RÍ >‹] >“])>R2)>‹])>“]I>R<I>‹]I>“]i>RÎi>‹]i>“]ƒ>:]ƒ>’Ø…ƒ>rs€‰>RG"‰>‹]‰>“]©>R«*©>‹]©>“]Ã>’Ø…Ã>rs€É>‹]É>“]É>›ëã>’Ø…ã>rs€é>‹]é>“]é>›ë ?‹] ?“] ?›ë)?‹])?“])?›ëI?‹]I?“]I?›ë`?‹]`?“]i?‹]i?“]i?›ë€?z܃?’Ø…ƒ?rs€‰?‹]‰?“]‰?›ë ?z£?r1©?‹]©?“]©?›ëÀ?z=É?‹]É?“]É?›ëà?‹]à?“]é?RÍé?‹]é?“]@‹]@“] @R2 @‹] @“] @‹] @“])@R<)@‹])@“]@@‹]@@“]I@RÎI@‹]I@“]`@‹]`@“]i@RG"i@‹]i@“]€@‹]€@“]‰@RÓX‰@‹]‰@“] @‹] @“]¡@›ë¡@‹]¡@“]©@RÍ&©@‹]©@“]À@‹]À@“]É@RëÉ@‹]É@“]à@‹]à@“]á@›ëá@‹]á@“]é@Rß/é@‹]é@“]A‹]A“]A›ëA‹]A“] ARÍ A‹] A“] A‹] A“]!A›ë!A‹]!A“])AR2)A‹])A“]@A‹]@A“]IAR<IA‹]IA“]`A‹]`A“]iARÎiA‹]iA“]€A‹]€A“]A›ëA‹]A“]‰ARG"‰A‹]‰A“] A‹] A“]©ARÓX©A‹]©A“]ÉARÍ&ÉA‹]ÉA“]éARëéA‹]éA“]B;] BRß/ B‹] B“] BC])BrÃ|IBrÃ|iBrÃ|‰BrÃ|©BrÃ|éBrÃ|C›ëC‹]C“] CrÃ|)CrÃ|@C²G>CCÊ]CCâ]CCrGICrÃ|aE›ëaE‹]aE“]E›ëE‹]E“]‰ErÃ|¡E›ë¡E‹]¡E“]©ErÃ|ÁE›ëÁE‹]ÁE“]ÉErÃ|áE›ëáE‹]áE“]éErÃ|F›ëF‹]F“] FrÃ|)FrÃ|IFrÃ|iFrÃ|‰FrÃ|ÉFrÃ|éFrÃ| GrÃ|)GrÃ|IGzý1iGz 2‰Gz2©GzÓUÉGzàUéGzíU HzúU)HrÃ|IHrÃ|iHrÃ|‰HrÃ|©HrÃ|ÄH"]ÉHrÃ|éHrÃ|IIrÃ|iIrÃ|ÉIrÃ|©JrÃ|ÉJrÃ|éJrÃ| KrÃ|©KrÃ|ÉKrÃ|éKrÃ| LrÃ|)LrÃ|ILrÃ|iLrÃ|‰LrÃ|©LrÃ|ÉLrÃ|áL*]áL›ëéLrÃ|M*]M›ë MrÃ|!M*]!M›ë)MrÃ|AM*]AM›ëIMrÃ|aM›ëcMr 3iMrÃ|M›ë‰MrÃ|¡M›ë©MrÃ|ÁM›ëÁM‹]ÁM“]ÃMr$ãMÂ]ãMâ]ãMrs@NÊ]Nâ]Nrs@#Nr$)Nzý1INz 2aN›ëaN‹]aN“]iNzý1N›ëN‹]N“]‰Nz 2áN›ëáN‹]áN“]éN‹]éN“]éN›ëO›ëO‹]O“]Ors€ O‹] O“] O›ë#OÊ]#Oâ]#OrG)O‹])O“])O›ëAO›ëAO‹]AO“]IO‹]IO“]IO›ëiO‹]iO“]iO›ëƒOrs€‰O‹]‰O“]‰O›ë©O‹]©O“]©O›ëÉOR2ÉO‹]ÉO“]éORÎéO‹]éO“] PR2 P‹] P“]!P›ë!P‹]!P“])PRÎ)P‹])P“]áP›ëáP‹]áP“]ãP’Ø…ãPrs€ Q‹] Q“] Q›ë)Q‹])Q“])Q›ëIQ‹]IQ“]IQ›ëiQ‹]iQ“]iQ›ë‰Q‹]‰Q“]‰Q›ë¡Q›ë¡Q‹]¡Q“]©Q‹]©Q“]©Q›ëÉQ‹]ÉQ“]ÉQ›ëéQò0’ Rò>’)RòK’IRò_’£Rrs€ÃRÊ]ÃRâ]ÃRrGãUrs€VÊ]Vâ]Vrs@cVr1ƒVÂ]ƒVâ]ƒVrs@éVrÃ| WrÃ|)WrÃ|@W‹]@W“]IWrÃ|`WzÜiWrÃ|€W‹]€W“]‰WrÃ| Wz©WrÃ|ÀW‹]ÀW“]ÉWrÃ|àWz=éWrÃ|X‹]X“] XrÃ| X‹] X“]#Xr$)XrÃ|@X‹]IXrÃ|`X‹]iXrÃ|€X‹]‰XrÃ| X‹]©XrÃ|ÀX‹]ÉXrÃ|àX‹]àX“]éXrÃ|Y‹]Y“] YrÃ| Y‹] Y“]#Yrs€@Y‹]@Y“]CYÊ]CYâ]CYrs@`Y‹]`Y“]€Y‹]€Y“]ƒYãÅ  Y‹] Y“]£Yã, ÀY‹]ÀY“]ÃYãÎ àY‹]àY“]ãYãšZ‹]Z“]Zã÷ Z‹] Z“]@ZzÜIZrÃ|`Z‹]`Z“]iZrÃ|€ZzZ›ëZ‹]Z“]‰ZrÃ| Z‹] Z“]©ZrÃ|ÀZz=ÃZÊ]ÃZâ]ÃZrs@ÉZrÃ|àZ‹]àZ“][‹][“][›ë[‹][“][ã [rÃ| [‹] [“]#[ãx)[rÃ|@[‹]@[“]C[ã`[‹]`[“]c[ã„€[‹]€[“]ƒ[ã [‹] [“]¡[›ë¡[‹]¡[“]£[ãsÀ[‹]À[“]à[‹]à[“]\‹]\“] \Òià \rÃ| \‹] \“])\ÒiÃ)\rÃ|@\‹]@\“]I\ÒiÃI\rÃ|`\‹]`\“]a\›ëa\‹]a\“]i\ÒiÃi\rÃ|€\‹]€\“]ƒ\rs€‰\ÒiÉ\rÃ| \‹] \“]©\rÃ|À\‹]À\“]Ä\"]à\‹]à\“]ã\rs€]‹]]“]]›ë]‹]]“]]rs€]"] ]‹] ]“]@]‹]@]“]`]‹]`]“]€]‹]€]“]„]"] ]‹] ]“]À]‹]À]“]à]‹]à]“]ä]"]^‹]^“] ^‹] ^“]@^‹]@^“]`^‹]`^“]€^‹]€^“] ^‹] ^“]À^‹]À^“]_R]_rs€#_rs€c_rs€ƒ_Ê]ƒ_â]ƒ_rGã_rs€`rs€a`›ëa`‹]a`“]c`r$ƒ`r$¡`›ë¡`‹]¡`“]£`r$Á`›ëÁ`‹]Á`“]Ã`r$á`›ëá`‹]á`“]ã`r$a›ëa‹]a“]ar$!a›ë!a‹]!a“]#ar$Aa›ëAa‹]Aa“]Cars€!b›ë!b‹]!b“]Ab›ëAb‹]Ab“]ab›ëab‹]ab“]€b‹]€b“]b›ëb‹]b“] bz¤Àb‹]Àb“]àbzÜáb›ëáb‹]áb“]c‹]c“]c›ëc‹]c“] cz!c›ë!c‹]!c“]@c‹]@c“]Ac›ëAc‹]Ac“]`cz=€c‹]€c“] c‹] c“]Àc‹]àc‹]d‹] d‹]@d‹]`d‹]`d“]€d‹]€d“] d‹] d“]Àd‹]Àd“]àd‹]àd“]e‹]e“] e‹] e“]@e‹]@e“]Ce’Ø…Ce:]Cers€`e‹]`e“]ce’Ø…cers€€e‹]€e“] e‹] e“]Àe‹]Àe“]àe‹]àe“]f‹]f“] f‹] f“]@f‹]@f“]`f‹]`f“]cfÊ]cfâ]cfrG€f‹]€f“]ƒfr$ f‹] f“]Àf‹]Àf“]àf‹]àf“]g‹]g“]@g‹]@g“]`gz`Y€g‹]€g“]ƒg’Ø…ƒg:]ƒgrs€ gzvY¡g›ë¡g‹]¡g“]Àg‹]Àg“]Ág›ëÁg‹]Ág“]àgz‰Yh‹]h“]h›ëh‹]h“]h’Ø…hrs€ hz–Y!h›ë!h‹]!h“]@h‹]@h“]`hz£YchÊ]châ]chrG€h‹]€h“]h›ëƒhr$ hz°Y¡h›ëÀh‹]Àh“]Áh›ëàhz½Yi‹]i“]i›ëi‹]i“] izÊY!i›ë!i‹]!i“]@i‹]@i“]`iz×Y€i‹]€i“]ƒi’Ø…ƒi:]ƒirs€ izäY£i’Ø…£i:]£irs€Ài‹]Ài“]àizñYãi’Ø…ãi:]ãirs€j‹]j“] jzþY#j’Ø…#j:]#jrs€@j‹]@j“]`jz Zcj’Ø…cj:]cjrs€€j‹]€j“] jzZÀj‹]Àj“]àjz%Záj›ëáj‹]áj“]k‹]k“]k›ëk‹]k“]k:]k’Ø…krs€k"] kz:Z!k›ë!k‹]!k“]$k"]@k‹]@k“]`kzGZak›ëak‹]ak“]dk"]€k‹]€k“]k›ëk‹]k“] kz]Z¡k›ë¡k‹]¡k“]Àk‹]Àk“]Ák›ëÁk‹]Ák“]àkzsZák›ëák‹]ák“]l‹]l“]l›ël‹]l“] lz€Z!l›ë!l‹]!l“]$l"]@l‹]@l“]Al›ëAl‹]Al“]`lzZal›ëal‹]al“]dl"]€l‹]€l“]l›ël‹]l“] lzšZ¡l›ë¡l‹]¡l“]Àl‹]Àl“]Ál›ëÁl‹]Ál“]Äl"]àlz¯Zál›ëál‹]ál“]ãlr$m‹]m“]m›ëm‹]m“]m"] mz¼Z!m›ë!m‹]!m“]@m‹]@m“]Am›ëAm‹]Am“]`mzÉZam›ëam‹]am“]€m‹]€m“]m›ëm‹]m“] mzÖZ£mr$Àm‹]Àm“]Ãmr$àmzìZãmr$n‹]n“]nr$n"] nzùZ!n›ë!n‹]!n“]@n‹]@n“]An›ëAn‹]An“]`nz[an›ëan‹]an“]€n‹]€n“]n›ën‹]n“]„n"] nz—,¡n›ë¡n‹]¡n“]Àn‹]Àn“]Án›ëÁn‹]Án“]ànz(án›ëán‹]án“]o‹]o“]o›ëo‹]o“]or$ ozG#!o›ë!o‹]!o“]#or$$o"]@o‹]@o“]Ao›ëAo‹]Ao“]`oz¤ao›ëao‹]ao“]€o‹]€o“]o›ëo‹]o“] ozÜ¡o›ë¡o‹]¡o“]Ào‹]Ào“]Áo›ëÁo‹]Áo“]àozáo›ëáo‹]áo“]ãor$äo"]p‹]p“]pr$ pz=#pr$@p‹]@p“]Cp:]Cprs€Dp"]`p‹]`p“]cp]cpâ]cpÊ]cpr1€p‹]ƒpr$ p‹]£pr$¤p"]Àp‹]Áp›ëÁp‹]Áp“]Ãpr$àp‹]áp›ëáp‹]áp“]ãpÊ]ãpâ]ãprs@q‹]q›ëq‹]q“] q‹] q“]!q›ë!q‹]!q“]@q‹]@q“]Aq›ëAq‹]Aq“]`q‹]`q“]aq›ëaq‹]aq“]cqr1€q‹]€q“]q›ëq‹]q“]ƒq:]ƒqr1 q‹] q“]£q:]£qr1Àq‹]Àq“]àq‹]àq“]r‹]r“] r‹] r“]#rr$@r‹]@r“]`r‹]`r“]€r‹]€r“] r‹] r“]£rr$Àr‹]Àr“]Ãrr$àr‹]àr“]ár›ëár‹]ár“]ãrrs€s‹]s“]s›ës‹]s“]sÊ]sâ]srs@ s‹] s“]!s›ë!s‹]!s“]@s‹]@s“]CsãU|`s‹]`s“]csã|€s‹]€s“]s›ës‹]s“]ƒsãù|„s"] s‹] s“]¡s›ëÀs‹]Às“]Ás›ëàs‹]às“]ás›ët‹]t“]t›ët‹]t“]tr1 t‹] t“]#tr1@t‹]@t“]Dt"]`t‹]`t“]at›ë€t‹]€t“]t›ëƒt:]ƒtr1„t"] t‹] t“]¡t›ë£tr1Àt‹]Àt“]Át›ëÄt"]àt‹]àt“]át›ëu‹]u“]u›ëurs€u"] u‹] u“]!u›ë#ur$$u"]@u‹]@u“]Au›ëCu:]Cur1Du"]`u‹]`u“]au›ëau‹]au“]cuÊ]cuâ]curs@€u‹]€u“]„u"] u‹] u“]£uB]£ur1Àu‹]Àu“]Ãur$Äu"]àu‹]àu“]ãur$v‹]v“]vr$v"] v‹] v“]#vr$@v‹]@v“]Cvr$`v‹]`v“]cvr$€v‹]€v“] v‹] v“]£vr$Àv‹]Àv“]Ãvr$àv‹]àv“]áv›ëãv:]ãvr1w‹]w“]w›ëw:]wr1 w‹] w“]!w›ë#wr$@w‹]@w“]`w‹]`w“]cwr$€w‹]€w“]ƒwrs€ w‹] w“]£wr$Àw‹]Àw“]Ãwrs€àw‹]àw“]ãwr$x‹]x“]xr$ x‹] x“]#xr$@x‹]@x“]Cxr$`x‹]`x“]€x‹]€x“]ƒx’Ø…ƒxrs€ x‹] x“]Àx‹]Àx“]Ãx’Ø…Ãx:]Ãxrs€àx‹]àx“]y‹]y“] y‹] y“]@y‹]@y“]Ay›ëAy‹]Ay“]`y‹]`y“]ay›ëay‹]ay“]€y‹]€y“]ƒyrs€ y‹] y“]¡y›ë¡y‹]¡y“]£yrs€Ày‹]Ày“]Áy›ëÁy‹]Áy“]Ãyrs€ày‹]ày“]z‹]z“]z›ëz‹]z“]zR]zrs€ z‹] z“]!z›ë!z‹]!z“]#zR]#zrs€@z‹]@z“]`z‹]`z“]az›ëaz‹]az“]€z‹]€z“]z›ëz‹]z“] z‹] z“]Àz‹]Àz“]Áz›ëÁz‹]Áz“]àz‹]àz“]áz›ëáz‹]áz“]{‹]{“]{rs€ {‹] {“]!{›ë!{‹]!{“]#{r1@{‹]@{“]A{›ëA{‹]A{“]C{B]C{r1`{‹]`{“]c{r1€{‹]€{“]{›ë{‹]{“]ƒ{r1 {‹] {“]¡{›ë¡{‹]¡{“]£{B]£{r1À{‹]À{“]Ã{B]Ã{r1à{‹]à{“]á{›ëá{‹]á{“]|‹]|“]|r$ |‹] |“]#|r$@|‹]@|“]A|›ëA|‹]A|“]`|‹]`|“]c|r$€|‹]€|“]ƒ|r$¡|›ë¡|‹]¡|“]Ã|r$ã|r$}›ë}‹]}“]#}r$C}r$a}›ëa}‹]a}“]}›ë}‹]}“]ƒ}r$£}r$Á}›ëÁ}‹]Á}“]á}›ëá}‹]á}“]ã}r$~r$!~›ë!~‹]!~“]A~›ëA~‹]A~“]C~r$c~r$~›ë~‹]~“]¡~›ë¡~‹]¡~“]£~r$Ã~r$á~›ëá~‹]á~“]›ë‹]“]r$!›ë!‹]!“]#r$A›ëA‹]A“]cr$ƒr$£r$Ãr$ãr$€r$€J]#€r$C€r$S€J]a€›ëa€‹]a€“]c€r$€›ë€‹]€“]ƒ€r$“€J]¡€›ë¡€‹]¡€“]£€r$³€J]Á€›ëÀr$ရëã€r$›ër$!›ë!‹]!“]A›ëA‹]A“]a›ëa‹]a“]cr1›ë‹]“]!‚›ë!‚‹]!‚“]A‚›ëA‚‹]A‚“]a‚›ëa‚‹]a‚“]Á‚›ëÁ‚‹]Á‚“]!ƒ›ë!ƒ‹]!ƒ“]Aƒ›ëAƒ‹]Aƒ“]aƒ›ëaƒ‹]aƒ“]ƒ›ëƒ‹]ƒ“]ƒƒr1¡ƒ›ë¡ƒ‹]¡ƒ“]Áƒ›ëÁƒ‹]Áƒ“]მë჋]დ]„›ë„‹]„“]!„›ë!„‹]!„“]#„r1A„›ëA„‹]A„“]a„›ëa„‹]a„“]„›ë„‹]„“]Är1…›ë…‹]…“]!…›ë!…‹]!…“]A…›ëA…‹]A…“]a…›ëa…‹]a…“]c…r1…›ë…‹]…“]Á…›ëÁ…‹]Á…“]á…›ëá…‹]á…“]C†r1ã†r1A‡›ëA‡‹]A‡“]a‡›ëa‡‹]a‡“]‡›ë‡‹]‡“]ƒ‡r1¡‡›ë¡‡‹]¡‡“]Á‡›ëÁ‡‹]Á‡“]!ˆ›ë!ˆ‹]!ˆ“]#ˆr1Aˆ›ëAˆ‹]Aˆ“]aˆ›ëaˆ‹]aˆ“]ˆ›ëˆ‹]ˆ“]¡ˆ›ë¡ˆ‹]¡ˆ“]Áˆ›ëÁˆ‹]Áˆ“]Èr1ማëላ]ሓ]@‰‹]a‰›ëa‰‹]a‰“]c‰r1‰›ë‰‹]‰“] Š‹] Š“]@Šz=`Š‹]`Š“]aŠ›ëaŠ‹]aŠ“]Š›ëŠ‹]Š“]¡Š›ë¡Š‹]¡Š“]ÁŠ›ëÁŠ‹]ÁŠ“]ኛëኋ]ና]‹‹]‹›ë‹‹]‹“]!‹›ë!‹‹]!‹“]A‹›ëA‹‹]A‹“]a‹›ëa‹‹]a‹“]‹›ë‹‹]‹“]ƒ‹r1¡‹›ë¡‹‹]¡‹“]Á‹›ëÁ‹‹]Á‹“]á‹›ëá‹‹]á‹“]#Œr1ÀŒz=ÃŒr1àŒ‹]àŒ“]ጛëጋ]ጓ]‹]“]›ë‹]“] ‹] “]!›ë!‹]!“]A›ëA‹]A“]a›ëa‹]a“]cr1›ë‹]“]¡›ë¡‹]¡“]Á›ëÁ‹]Á“]á›ëá‹]á“]Ž›ëŽ‹]Ž“]Žr1!Ž›ë!Ž‹]!Ž“]AŽ›ëAŽ‹]AŽ“]aŽ›ëaŽ‹]aŽ“]Ž›ëŽ‹]Ž“]¡Ž›ë¡Ž‹]¡Ž“]£Žr1᎛ë›ë!›ëA›ëCr1a›ë›ë¡›ëÁ›ëá›ëãr1›ë!›ëA›ëA‹]A“]a›ë›ëƒr1¡›ëÁ›ëá›ëá‹]á“]‘›ë!‘›ë#‘r1A‘›ëa‘›ë‘›ë¡‘›ëÁ‘›ëᑛ뒛ë’rs€!’›ë#’rs€A’›ëC’rs€a’›ëc’rs€’›ëƒ’r1¡’›ë£’rs€Á’›ëÃ’B]Ã’r1ᒛ듛ë“r$!“›ë#“B]#“r1A“›ëa“›ëc“r$“›ëƒ“r$„“"]¡“›ë£“B]£“r1¤“"]Á“›ëÓr$Ó“J]á“›ëã“r$ó“J]ó“R]”›ë”r$”J]!”›ë3”J]3”R]A”›ëC”B]C”r1D”"]S”J]a”›ëd”"]s”J]s”R]”›ëƒ”r$“”J]¡”›ë£”r$¤”"]³”J]³”R]Á”›ëÁ”‹]Á”“]Ôr$Ó”J]Ó”R]ã”r$ó”J]•rs€•J]#•r$3•J]3•R]C•r$c•r$ƒ•r$£•r$Õr$ã•r$–r$!–›ë!–‹]!–“]#–r$@–‹]C–r$`–‹]c–r$ƒ–r$£–r$Ör$ã–r$—r$#—r$@—z]C—r1`—z]c—r$ƒ—r$£—r1×r1ã—r1Ør1ᘛ뙂Ý|™›ë ™‚A~!™›ëA™›ë`™‹]a™›ë€™‚Ý~™›ë ™‚û~¡™›ëÀ™‚)Á™›ëà™²G>à™‚Oᙛ뚂vš›ë š‚‚!š›ë@š²G>@š‚Aš›ë`š‚aš›ë€š‚ªš›ë¡š›ëÀš‚ÊÁš›ëàš‚Ý᚛뛂ð››ë ›‚€!››ë#›r1@›‚$€A››ë`›‚<€a››ë€›‚g€››ë›‹]›“]A›ëa›ë£r1!Ÿ›ëAŸ›ë r1€ ²G>€ ‚ƒ  ‹]À ²G>À ‚|ƒà ²G>à ‚½ƒ¡²G>¡‚ „ ¡²e„ ¡‚z„@¡²G>@¡‚ž„`¡²G>`¡‚½„€¡‚ø„ ¡²G> ¡‚9…À¡²G>À¡‚Í…c¢rs€ƒ¢r1£¢r$âr$ã¢r1£r1#£r1A£›ëA£‹]A£“]C£rs€a£›ëa£‹]a£“]c£r1£›ë£‹]£“]ƒ£rs€¡£›ë¡£‹]¡£“]££rs€Ã£rs€ã£rs€C¤r$D¤"]ƒ¤r$¥›ë¥‹]¥“]!¥›ë!¥‹]!¥“]c¥rs€Á¥›ëÁ¥‹]Á¥“]ᥛë᥋]ᥓ]¡¦›ë¡¦‹]¡¦“]Á¦›ëÁ¦‹]Á¦“]¡§›ë¡§‹]¡§“]Á§›ëÁ§‹]Á§“]@¨²G>@¨‚ƒ`¨²G>`¨‚½ƒ€¨²G>€¨‚ „ ¨²G> ¨‚|ƒÀ¨²e„À¨‚z„ਲG>ਂž„©‚ø„ ©²G> ©‚9…@©²G>@©‚Í…¡©›ë¡©‹]¡©“]Á©›ëÁ©‹]Á©“]á©›ëá©‹]á©“]¡ª›ë¡ª‹]¡ª“]Áª›ëÁª‹]Áª“]᪛ë᪋]᪓] «²¢: «‚gÀ«²G>À«‚§a¬›ëa¬‹]a¬“]¬›ë¬‹]¬“]­›ë­‹]­“]!­›ë!­‹]!­“]A­›ëA­‹]A­“]a­›ëa­‹]a­“]!®›ë!®‹]!®“]A®›ëA®‹]A®“]Á®›ëÁ®‹]Á®“]a°’î ±²’ ±‚.’@±²G>@±‚.’`±²’`±‚v’€±²G>€±‚†’ ±‚˜’À±²G>À±‚½’à±²G>ూì’á²›ë᲋]Დ]a³›ëa³‹]a³“]³›ë³‹]³“]¡³›ë¡³‹]¡³“]Á³›ëÁ³‹]Á³“]á³›ë᳋]᳓]Aµ›ëAµ‹]Aµ“]¡µ›ë¡µ‹]¡µ“]Áµ›ëÁµ‹]Áµ“]áµ›ëᵋ]ᵓ]¶›ë¶‹]¶“]¡¶’îà·²G> ¸²e„@¸²e„ ¸‹]À¸‹]ซ]ḛëḋ]ḓ]¹‹]¹›ë¹‹]¹“]A»›ëA»‹]A»“]á¾›ëᾋ]ᾓ]¿›ë¿‹]¿“]!¿›ë!¿‹]!¿“]A¿›ëA¿‹]A¿“]a¿›ëa¿‹]a¿“]€¿²G> ¿²G>À¿²e„࿲ú™á¿›ëá¿‹]á¿“]À²ú™À›ëÀ‹]À“]!À›ë!À‹]!À“]AÀ›ëAÀ‹]AÀ“]`À²G>aÀ›ëaÀ‹]aÀ“]€À²G>À›ëÀ‹]À“] À²G>ÀÀ²G>àÀ²G>Á›ëÁ‹]Á“]!Á›ë!Á‹]!Á“]AÁ›ëAÁ‹]AÁ“]`Á²G>aÁ›ëaÁ‹]aÁ“]€Á²G>Á›ëÁ‹]Á“] Á²G>¡Á›ë¡Á‹]¡Á“]ÀÁ²G>àÁ‹]àÁ“]ÂzÜ ‹] “]!›ë!‹]!“]@ÂzA›ëA‹]A“]`‹]`“]a›ëa‹]a“]€Âz=›ë‹]“] Â‹] Â“]¡Â›ë¡Â‹]¡Â“]À‹]À“]Á›ëÁ‹]Á“]à‹]à“]Ë]Ó] Ë] Ó]@Ë]@Ó]AÛëAË]AÓ]`Ë]`Ó]aÛëaË]aÓ]€Ã‹]€Ã“]ÛëË]Ó] Ã‹] Ã“]¡Ã›ë¡Ã‹]¡Ã“]ÀË]ÀÓ]ÁÛëÁË]ÁÓ]àË]àÓ]áÛëáË]áÓ]Ä‹]Ä“] Ä‹] Ä“]@Ä‹]@Ä“]aÄ›ëaÄ‹]aÄ“]Ä›ëÄ‹]Ä“]¡Ä›ë¡Ä‹]¡Ä“]ÁÄ›ëÁÄ‹]ÁÄ“]áÄ›ëáÄ‹]áÄ“]Å›ëÅ‹]Å“]Å›ëÅ‹]Å“]¡Å›ë¡Å‹]¡Å“]ÁÅ›ëÁÅ‹]ÁÅ“]áÅ›ëáÅ‹]áÅ“]Æ›ëÆ‹]Æ“]!Æ›ë!Æ‹]!Æ“]¡Æ›ë¡Æ‹]¡Æ“]ÁÆ›ëÁÆ‹]ÁÆ“]áÆ›ëáÆ‹]áÆ“]Ç›ëÇ‹]Ç“]!Ç›ë!Ç‹]!Ç“]AÇ›ëAÇ‹]AÇ“]ÁÇ›ëÁÇ‹]ÁÇ“]áÇ›ëáÇ‹]áÇ“]È›ëÈ‹]È“]!È›ë!È‹]!È“]AÈ›ëAÈ‹]AÈ“]aÈ›ëaÈ‹]aÈ“]áÈ›ëáÈ‹]áÈ“]É›ëÉ‹]É“]!É›ë!É‹]!É“]AÉ›ëAÉ‹]AÉ“]aÉ›ëaÉ‹]aÉ“]É›ëÉ‹]É“]Ê›ëÊ‹]Ê“]!Ê›ë!Ê‹]!Ê“]AÊ›ëAÊ‹]AÊ“]aÊ›ëaÊ‹]aÊ“]Ê›ëÊ‹]Ê“]¡Ê›ë¡Ê‹]¡Ê“]ÁÊ›ëÁÊ‹]ÁÊ“]áÊ›ëáÊ‹]áÊ“]Ë›ëË‹]Ë“]!Ë›ë!Ë‹]!Ë“]@Ë‹]AË›ëAË‹]AË“]`Ë‹] Ë‹]ÁË›ëÁË‹]ÁË“]àË‹]áË›ëáË‹]áË“]Ì›ëÌ‹]Ì“]!Ì›ë!Ì‹]!Ì“]@Ì‹]AÌ›ëAÌ‹]AÌ“]aÌ›ëaÌ‹]aÌ“]€Ì‹]Ì›ëÌ‹]Ì“]¡Ì›ë¡Ì‹]¡Ì“]ÁÌ›ëÁÌ‹]ÁÌ“]áÌ›ëáÌ‹]áÌ“] Í‹]@Í‹]aÍ›ëaÍ‹]aÍ“]Í›ëÍ‹]Í“]¡Í›ë¡Í‹]¡Í“]ÁÍ›ëÁÍ‹]ÁÍ“]áÍ›ëáÍ‹]áÍ“]Λë΋]Γ]¡Î›ë¡Î‹]¡Î“]ÁΛëÁ΋]ÁΓ]áΛëá΋]áΓ]Ï›ëÏ‹]Ï“]!Ï›ë!Ï‹]!Ï“]áÏ›ëáÏ‹]áÏ“]ЛëЋ]Г]!Лë!Ћ]!Г]AЛëAЋ]AГ]¡Ð›ë¡Ð‹]¡Ð“]!Ñ›ë!Ñ‹]!Ñ“]AÑ›ëAÑ‹]AÑ“]aÑ›ëaÑ‹]aÑ“]Ñ›ëÑ‹]Ñ“]¡Ñ›ë¡Ñ‹]¡Ñ“]ÁÑ›ëÁÑ‹]ÁÑ“]áÑ›ëáÑ‹]áÑ“]Ò›ëÒ‹]Ò“]AÒ›ëAÒ‹]AÒ“]aÒ›ëaÒ‹]aÒ“]¡Ò›ë¡Ò‹]¡Ò“]ÁÒ›ëÁÒ‹]ÁÒ“]Ó›ëÓ‹]Ó“]!Ó›ë!Ó‹]!Ó“]aÓ›ëaÓ‹]aÓ“]Ó›ëÓ‹]Ó“]¡Ó›ë¡Ó‹]¡Ó“]ÁÓ›ëÁÓ‹]ÁÓ“]Ô›ëÔ‹]Ô“]!Ô›ë!Ô‹]!Ô“]aÔ›ëaÔ‹]aÔ“]Ô›ëÔ‹]Ô“]ÁÔ›ëÁÔ‹]ÁÔ“]áÔ›ëáÔ‹]áÔ“]!Õ›ë!Õ‹]!Õ“]AÕ›ëAÕ‹]AÕ“]Õ›ëÕ‹]Õ“]¡Õ›ë¡Õ‹]¡Õ“]áÕ›ëáÕ‹]áÕ“]Ö›ëÖ‹]Ö“]!Ö›ë!Ö‹]!Ö“]AÖ›ëAÖ‹]AÖ“]aÖ›ëaÖ‹]aÖ“]Ö›ëÖ‹]Ö“]¡Ö›ë¡Ö‹]¡Ö“]ÁÖ›ëÁÖ‹]ÁÖ“]×›ë׋]ד]!×›ë!׋]!ד]a×›ëa׋]aד]×›ë׋]ד]Á×›ëÁ׋]Áד]á×›ëá׋]áד]!Ø›ë!Ø‹]!Ø“]AØ›ëAØ‹]AØ“]Ø›ëØ‹]Ø“]¡Ø›ë¡Ø‹]¡Ø“]áØ›ëáØ‹]áØ“]Ù›ëÙ‹]Ù“]AÙ›ëAÙ‹]AÙ“]aÙ›ëaÙ‹]aÙ“]¡Ù›ë¡Ù‹]¡Ù“]ÁÙ›ëÁÙ‹]ÁÙ“]Ú›ëÚ‹]Ú“]!Ú›ë!Ú‹]!Ú“]aÚ›ëaÚ‹]aÚ“]Ú›ëÚ‹]Ú“]¡Ú›ë¡Ú‹]¡Ú“]ÁÚ›ëÁÚ‹]ÁÚ“]AÞ›ëAÞ‹]AÞ“]aÞ›ëaÞ‹]aÞ“]Þ›ëÞ‹]Þ“]ÁÞ›ëÁÞ‹]ÁÞ“]áÞ›ëáÞ‹]áÞ“]!ß›ë!ß‹]!ß“]Aß›ëAß‹]Aß“]ß›ëß‹]ß“]¡ß›ë¡ß‹]¡ß“]áß›ëáß‹]áß“]à›ëà‹]à“]Aà›ëAà‹]Aà“]aà›ëaà‹]aà“]¡à›ë¡à‹]¡à“]Áà›ëÁà‹]Áà“]á›ëá‹]á“]!á›ë!á‹]!á“]aá›ëaá‹]aá“]á›ëá‹]á“]áá¢]!âÒiÃ!â›ëAâÒiÃAâ›ëaâÒiÃaâ›ëâÒiÃâ›ë¡âÒiáâ›ëÁâ›ëáâ›ëã›ë!ã›ëAã›ëaã›ëã›ë¡ã›ëÁã›ëáã›ëä›ë!ä›ëAä›ëaä›ëä›ë¡ä›ëÁä›ëáä›ëå›ë!å›ëAå›ëaå›ëå›ë¡å›ëÁå›ëáå›ëáå‹]áå“]Aç›ëaç›ëaç‹]aç“] ç] ç] ç‚´Àç]Àç]Àç‚´àç]àç]àç²G>à炞„è]è]è²G>è‚2´ è] è] è²e„ è‚Ý|@è]@è]@è‚K´`è]`è]`è²G>`è‚]´€è]€è]€è‚n´àè‚÷µé‚I¶ é‚u¶@é‚©¶`é‚ݶ€é‚· é‚C·Àé‚r·à邤·ê‚×· ꂸ@ê‚1¸`ê‚b¸€ê‚’¸ ê‚Ú¸ ë‚»@ë‚A»`ë‚Ï»€ë‚໠낽Àë‚0½àë‚j½ì‚™½Àí‹]Àí“]àí‹]àí“] î²G>Àî‚öÀàî‚4Áï‚nÁ ï‚©Á@ï‚ Â`ï‚C€ï‚x ï‚ãÂÀï‚OÃàï‚ÆÃð‚ Ä ð‚jÄ@ð‚•Ä`ð‚½Ä€ð‚îÄ ð‚ÅÀð‚´Åàð‚êÅñ‚3Æ ñ‚XÆ@ñ‚€Æ`ñ‚“Æ€ñ‚!Ç ñ‚>ÇÀñ‚ÌÇàñ‚ÖÈò‚JÉ ò‚ÏÉ@ò‚:Ê`ò‚“ÊÀò‚æÊàò²G>ó‚ÉË ó‚yÌàó²G> ô²G>@ô²Î`ô²’€ô²ÇC ô²ÇCÀô²G>õ²G> ù‹] ù“]@ù²G>`ù²G>`ú²G> û²G>Àû²G>€ü²G>ý²G>ÿ²G> ÿ²e„`ÿ²e„‹] z=@‹]@“]`‹]`“]€‹]€“] ‹] “]À‹]à‹]‹]@‹]`‹]€z= ‹] “]À‹]À“]à‹]à“]@"²G>`"²e„€"²e„À#²G>$²G> $²Î@$²Î`$‹]`$“]€$‹]€$“] $‹] $“]À$‹]À$“] %‹]À%‹]à%‹]&‹] &‹] &‹]À&‹]À(²G>À(‚ ðà(²G>à(‚ð)²ÇC )²e„ )‚¢ð@)²e„@)‚Úð`)‚û~€)‚) )²G> )‚ ñÀ)²G>À)‚Oà)²G>à)‚*‚v *‚‚@*‚`*‚ª .‹] .“]À.²G>`/‹]`/“]€/²G> /²G>À/²ÇCà/²ÇC 0²e„@0²e„`0²e„€0²e„ 0²e„à0²e„ 1²`õ€1²`õà1‹]2‹] 2‹]@2²ú™À2²G>à9‹]à9“]:‹] :²G>À:²Ý@;²e„ ;²ÇCà;²G>à<²G> >²ÇCÀ>²G>à>²G>?²e„ ?²G>@?²G>€?²e„ ?z=À?‹]À?“]à?‹]à?“]@‹]@“] @‹] @“]@@‹]@@“]A‹]A“] Az@A‹]@A“]`Az=€A‹]€A“] A‹] A“]ÀA‹]àA‹]B‹] B‹]@B‹]@G²G> H‹] H“]@Hz(`H‹]`H“]€HzG# H‹] H“]ÀHz¤àH‹]àH“]IzÜ I‹] I“]@Iz`I‹]`I“]€Iz= I‹] I“]ÀI‹]ÀI“]àI‹]àI“]J‹]J“] J‹] J“]@J‹]@J“]`J‹]`J“]€J‹]€J“] J‹] J“]ÀJ‹]ÀJ“]àJ‹]àJ“]K‹]K“] K‹] K“]@K‹]@K“]`K‹]`K“]€K‹]€K“] K‹] K“]ÀK‹]ÀK“]àK‹]àK“]L‹]L“] L‹] L“]@L‹]@L“]`L‹]`L“]€L‹]€L“]ÀL‹]ÀL“]àLz—,M‹]M“] Mz(@M‹]@M“]`MzG#€M‹]€M“] Mz¤ÀM‹]ÀM“]àMzÜN‹]N“] Nz@N‹]@N“]`Nz=€N‹]€N“] N‹] N“]ÀN‹]ÀN“]àN‹]àN“]O‹]O“] O‹] O“]@O‹]@O“]`O‹]`O“]€O‹]€O“] O‹] O“]ÀO‹]ÀO“]àO‹]àO“]P‹]P“] P‹] P“]@P‹]@P“]`P‹]`P“]€P‹]€P“] P‹] P“]ÀP‹]ÀP“]àP‹]àP“]Q‹]Q“] Q‹] Q“]@Q‹]@Q“]`Q‹]`Q“]€Q‹]€Q“] Q‹] Q“]ÀQ‹]ÀQ“]àQ‹]àQ“]R‹]R“] R‹] R“]@R‹]@R“]`R‹]`R“]€R‹] R²G>ÀR²G> S²e„ T²G>@U²e„`U²e„€U²G> U²G>ÀU²G>àU²G>V²G> V²G>@V²G>€V²G>W²G>€W²G> W²G> X²`õ@X²ÇC\‹]\“] \‹]à\‹] ]‹] ^²G>@^²G>€^²G> ^²G>À^‹]À^“]à^‹]à^“]_‹]_“] _‹] _“]@_‹]@_“]`_‹]`_“]€_‹]€_“] _‹] _“]À_‹]À_“]à_‹]à_“]`‹]`“] `‹] `“]@`‹]@`“]``‹]``“]À`‹]À`“]à`‹]à`“]a‹]a“]Àa²G>àa²G>b²ú™ b²G>@b²ú™`b²G>c²G>@c²ÇC€c²G> c²G>Àc²G>àc²G>d²G> d²G>@d²G>`d²e„€d²G> d²G>Àd²e„àd²G>e²G> e²G>àf²e„ g²G>@g²G>€g²G> g²G>Àg‹]Àg“]àg²e„h²G>€h²G> h²ÇCÀh²ÇCàh‹]i²e„ i‹]@i²G>`i²G>€i²G>Ài²G> j²G>`j²G>àm²G>àn‹]àn“]o²@ o²e„@o‹]@o“] o‹]Ào²ÇCào‹]ào“]p‹]p“]@p‹]@p“]`p‹]`p“]€p‹]€p“] p‹] p“]Àp‹]Àp“]àp²G>q²G> s‹] s“]às²G>€t‹]€t“] t‹] t“]Àt‹]Àt“]àt‹]àt“]Àu‹] z‹] z“]@z‹]@z“]@…‚Ñ#`…²G>`…‚ì#€…²G>€…‚ž„ …‚$À…²G>À…‚*$à…²G>à…‚O$†‚p$ †²G> †‚$@†‚Ž$`†²G>`†‚¶$€†*]€†‚Ë$ †²G> †‚ê$À†²G>À†‚ö$à†²G>à†‚½ƒ‡²G>‡‚ „ ‡²e„ ‡‚a%@‡²e„@‡‚Š%`‡²G>`‡‚ƒ€‡‚¿% ‡‚Ü%À‡‚ö%à‡‚&ˆ‚/& ˆ‚M&@ˆ‚X&`ˆ²G>`ˆ‚c&€ˆ²G>€ˆ‚†& ˆ²G> ˆ‚”&Àˆ²G>Àˆ‚¤&àˆ²G>àˆ‚¸&‰‚Û& ‰‚ë&`‰‹]`‰“]€‰²e„ ‰²e„À‰²e„à‰²ÇCвe„@вe„`вe„€Š²G> Š²e„Àвe„àŠ²G>‹²G> ‹²e„@‹²e„`‹²ÇC€‹²e„ ‹²G>À‹²e„à‹²ÇCŒ²T, Œ²T,`Œ²ÇC€Œ²e„ Œ²ÇCÀŒ²e„àŒ²G> ²G>€Ž²e„ Ž²e„²e„@²e„`²G>€²G>@”‚Ñ#`”²e„`”‚ž„€”²G>€”‚§3 ”²G> ”‚Ç3À”²G>À”‚*$à”²G>à”‚ü3•²G>•‚¶$ •²G> •‚T4@•²G>@•‚ 4`•²G>`•‚ö$€•²G>€•‚½ƒ •²G> •‚ „À•²G>À•‚ê$à•²G>à•‚ƒ–²e„–‚a% –²e„ –‚Š%@–‚M&`–²G>`–‚R6€–²G>€–‚Œ6 –‚Ü%À–‚X&à–‚ö%—‚& —‚/&@—*]@—‚Ë$@˜²ÇC`˜²ÇC€˜²G> ˜²ÇCÀ˜²e„à˜²e„™²9 ™²T,@™²`õ`™²ÇC ™²e„À™²e„à™²G>š²G> š²G>@š²G>`š²G>€š²G> š²e„Àš²e„›²ú™€›²G> ›²e„À›²G>à›²G>œ²e„àž‹]€ ‚NE  ‚[EÀ ‚hEà ‚uE¡²ÇC¡‚£E ¡²`õ ¡‚òE@¡²`õ@¡‚1F`¡²`õ`¡‚2´€¡²ú™€¡‚Ý| ¡‚NEÀ¡‚[Eà¡‚hE¢²ÇC¢‚2´ ¢²`õ ¢‚Ý|@¢²e„@¢‚£E`¢²ÇC`¢‚òE€¢²ÇC€¢‚1F ¢²G> ¢‚¶$À¢²G>À¢‚ƒà¢²G>ࢂÂG£²G>£‚H £‚H@£²G>@£‚1F`£‚£E€£²G>€£‚òE £‚Ñ#À£*]À£‚Ë$ࣲ`õࣂ}H¤²e„ ¤²ÇC`¤‚ÝH€¤²G>€¤‚I ¤²G> ¤‚>IÀ¤‚TIं&¥‚Ü% ¥²G> ¥‚¶$@¥²G>@¥‚ƒ`¥²e„`¥‚ J€¥²e„€¥‚fJ ¥²e„ ¥‚ÄJÀ¥²G>À¥‚ÂGॲe„ू\K¦²G>¦‚H@¦²G>@¦‚ö$€¦²e„€¦‚OLÀ¦²G>À¦‚ê$§²e„§‚\L@§²G>@§‚ 4€§²G>€§‚T4 §²G> §‚|ƒÀ§²G>À§‚½ƒà§²G>à§‚ „ ¨²G> ¨‚§3`¨²G>`¨‚Ç3€¨²G>€¨‚CN ¨²e„ ¨‚œNÀ¨‚äNਂVO©‚kO ©²e„ ©‚a%@©²e„@©‚Š%`©²ÇC`©‚LP€©²ÇC€©‚¥P ©²`õÀ©²`õੲ`õª²e„ª‚z„ ª²e„ ª‚–Q@ª²G>@ª‚éQ`ª²G>`ª‚õQ€ª²G>€ª‚ ª‚bRÀª‚}RલG>ં§R«²G>«‚ÈR «‚ÔR@«‚M&`«‚X& «²G> «‚ S૲G>à«‚HS¬²G>¬‚kS ¬‚”S@¬²G>@¬‚ÂS`¬‚ÍS€¬²G>€¬‚öS ¬‚TÀ¬²G>À¬‚ Tଂ8T­²G>­‚`T ­²e„ ­‚{T@­²G>@­‚2´`­²e„`­‚Ý|€­²ÇC€­‚«T ­‚HÀ­‚kOà­‚ÝH®²G>®‚ƒ ®²G> ®‚H@®²G>@®‚¶$`®‚ö%€®‚/& ®*] ®‚Ë$À®‚EUஂOU¯‚Ñ# ¯²G> ¯‚>I@¯²G>@¯‚ U`¯²e„€¯²G>€¯‚|ƒ ¯²G> ¯‚ÂGÀ¯²G>À¯‚1F௲e„°²G>°‚eV@°²e„@°‚ J€°²e„€°‚\K °²`õÀ°²ÇCÀ°‚6Xà°²`õ±²e„±‚ÄJ ±²e„ ±‚fJ`±²e„`±‚a%€±²G>€±‚éQÀ±²e„À±‚z„²²ÇC²‚¥P ²²`õ@²²e„@²‚Š%`²²G>`²‚õQ€²²`õ ²²e„ ²‚–QÀ²²ÇCಋ]³²ÇC³‚LP ³²e„@³²e„@³‚\L`³²G>`³‚ê$€³²G>€³‚ö$ ³²e„À³²e„À³‚OLà³²G>ೂ§3´²G>´‚Ç3 ´²G> ´‚T4@´²G>@´‚ 4`´²G>`´‚½ƒ€´²G>€´‚ „ ´‚äNÀ´‚VOà´²G>à´‚CNµ²e„µ‚œN µ²G> µ‚§R@µ²G>@µ‚ÈR`µ‚ÔR€µ‚X& µ‚M&൲G>ൂ S ¶²G> ¶‚HS@¶‚”S`¶²G>`¶‚ÂS€¶‚T ¶²G> ¶‚ TÀ¶‚ÍSà¶²G>à¶‚öS·‚8T ·²G> ·‚`T@·²G>@·‚I`·²G>`·‚kS€·²G>€·‚ÝH ·²G> ·‚¶$À·²G>À·‚ÂGà·²G>à·‚ƒ¸²G>¸‚H ¸²G> ¸‚I@¸²G>@¸‚1F`¸²G>`¸‚eV ¸²G> ¸‚ê$าG>ขö$¹‚Hº²G> º‚ð`@º²G>@º‚û``º*]`º‚Ë$€º‚Ia º²G> º‚1FÀº²G>Àº‚¶$າG>ຂ U»²G>»‚ÂG »²G> »‚ö$@»²G>@»‚ê$`»²e„`»‚ J€»²G> »²e„À»²G>À»‚½ƒà»²G>ໂƒ¼²G>¼‚H ¼²e„ ¼‚fJ@¼²G>@¼‚|ƒ`¼²G>`¼‚CN€¼²e„€¼‚œN ¼‚œdÀ¼²G>À¼‚T4༲G>༂ 4½²G>½‚Ç3 ½²G> ½‚§3@½²G>@½‚ƒe`½‚Ñ#€½‚ÝH ½‚HÀ½²e„À½‚a%ིG>གéQ ¾²G> ¾‚>I@¾²G>@¾‚I€¾²e„€¾‚xg ¾‚Ü%À¾‚&ྂö%¿‚/& ¿‚$@¿²G>@¿‚h`¿‚ø„€¿²e„€¿‚z„À¿²G>À¿‚ SÀ²G>À‚HS À‹]@À²G>@À‚¦i€À‹] À‹]ÀÀ‚“kàÀ‚¦kÁ²G>Á‚l Á‚Xl@Á²G>@Á‚Øl`Á²G>`Á‚ÈR€Á‚ÔR Á²G> Á‚AmÀÁ‚”SàÁ²G>àÁ‚ÂS‚8T ²G> ‚`T@‚ÍS`²G>`‚öS€Â‚T Â²G> Â‚ TÀ²G>À‚nà²G>à‚.nòG>Âhn òe„ Â\L@òe„@ÂOL`ÂEU€Ç‹]€Ç“] Ç‹] Ç“]€É‹]€É“] É‹] É“]@Ê‹]@Ê“]`Ê‹]`Ê“]Ë‹]Ë“] Ë‹] Ë“]ÀË‹]ÀË“]àË‹]àË“]@΋]@Γ]`΋]`Γ]Ï‹]Ï“] Ï‹] Ï“]Ñ‹]Ñ“] Ñ‹] Ñ“]ÀÑ‹]ÀÑ“]àÑ‹]àÑ“]€Ò‹]€Ò“] Ò‹] Ò“]àÒ²e„Ó²e„`Ó²G>àÓ²G>Ô²G> Ô²e„àÕ‹]àÕ“]Öz= Ö‹] Ö“]€Ü‹]€Ü“] ÜzÜÀÜ‹]ÀÜ“]àÜzÝ‹]Ý“] Ýz=@Ý‹]@Ý“]`Ý‹]`Ý“]€Ý‹]€Ý“] Ý‹] Ý“]ÀÝ‹]ÀÝ“]àÝ‹]àÝ“]Þ‹]Þ“] Þ‹] Þ“]@Þ‹]@Þ“]`Þ‹]`Þ“]€Þ‹]€Þ“] Þ‹] Þ“]€â²G> â²G>Àâ²G>àâ²e„ ã²G>`ã²G>€ã²G>Àã²G>àã‹]€ä²e„ ä²G>`æ‹]`æ“]€æzÜ æ‹] æ“]Àæzàæ‹]àæ“]çz= ç‹] ç“]@ç‹]@ç“]@ñ²G>àò‚2´ó‚2† ó‚>†@ó‚¿%`ó²e„`ó‚a%€ó²e„€ó‚Š% ó²G> ó‚ö$Àó²G>Àó‚ê$àó²G>àó‚¶$ô²G>ô‚ƒ ô²G> ô‚ø†@ô‚/&`ô‚&€ô‚NE ô‚[EÀô‚/‡àô‚:‡õ²e„õ‚2´ õ²ÇC õ‚Ý|@õ²G>@õ‚£E`õ²ÇC`õ‚¹‡€õ²`õ€õ‚ù‡ õ²`õ õ‚(ˆÀõ²e„Àõ‚òEàõ²e„àõ‚1Fö²G>ö‚¶$ ö²G> ö‚ÂG@ö²G>@ö‚ƒ`ö²G>`ö‚H€ö‚TI ö‚t‰Àö²£‰Àö‚}Hø²G> ø²G>@ø²G>€ø²G> ø²G>àø²G>ù²e„ ù²G>@ù²ÇC`ù²G>€ù²ÇC ù²e„Àù²G>àù²G>ú²G>@ú²G>`ú²e„€ú²G> ú²e„Àú²G>û²G> û²e„ û²ÇCÀû²G>àû²ÇCü²e„ ü²e„@ü²G>`ü²e„ ü²ÇCàü²e„ý²G> ý²ÇC@ý²e„Àý²G>àý²G>þ²ÇC þ²e„@þ‹]`þ²ÇC þ²e„Àþ²G>àþ‚X‘ÿ‚q‘ ÿ²¢: ÿ‚’‘@ÿ²¢:@ÿ‚¥‘`ÿ[V·‘`ÿ²¢:`ÿ‚Ü‘€ÿ²¢:€ÿ‚ñ‘ ÿ²¢: ÿ‚ü‘Àÿ²¢:Àÿ‚’àÿ‚n’‚~’ ‚’@‚¡’€‚½’ ‚Ó’À²G>à²G>²G> ²G>@²G>`²G>€²G>€‚î’ ²G> ‚TÀ²G>À‚ÍSà‚“²G>‚“ ‚+“@‚8“`]`kVM“`‚¨“€]€‚µ“ ‚Ñ“À‚é“à‚ù“‚” ²G>`²G>€²Ý ²„”À²G>à²Î²’ ²G>@²G>`Òe•`²G>€²G>€‚c– ]À²G>à]à²G>²G> ] ²G>@]@²G>`]€]€²G> ] ²G>À]À²G>à]à²G>]²G> ]@²G>`‚¹–€‚Ö ‚Ò–À]À‚Ü–à]à‚æ–]‚ø– ] ‚ —@]@‚—`]`‚0—€‚;— ‚D—À‚N—à‹]à“]‹]“] ‹] “]@‹]@“]`]`‚m—€]€‚€— ] ‚‹—À]À‚˜—à]à‚¬— ] ‚À— ] ‚×—@ ‚ñ—` ]` ‚˜€ ²G>€ ‚)˜  ²G>  ‚:˜À 2]À ‚K˜à 2]à ‚W˜ 2] ‚k˜ ‚w˜@ ²G>` ‚‰˜€ ‚ž˜  ‚°˜À ‚¼˜à ²G> ²e„ ‚ø˜@ ‚™` ‚ ™€ ‚™  ²G>  ‚)™À ‚4™à ‚>™ ‚G™ ‚h@ ‚R™` ‚]™€ ‚g™  ‚p™À ‚ƒ™à ‚™ ‚–™ ‚ ™@ ‚©™` ‚³™€ ‚¼™  ²G>À ²G>À ‚ì™ ‹] “]À‹]À“]‹] ÒÀš@‹]`ÒÀš€‹] ÒÀšÀ‹]àÒÀš‹] ÒÀš@‹]`ÒÀš€‹] ÒÀšÀ‹]àÒÀš‹] ÒÀš@‹]`ÒÀš€‹] ÒÀšÀ‹]àÒÀš‹] ÒÀš@‹]`ÒÀš€‹] ÒÀšÀ‹]àÒÀšà²G>‹] ÒÀš ²G>@‹]`ÒÀš`²G>€‹] ÒÀš ²G>À‹]àÒÀšà²G>‹] ÒÀš ²G>@‹]`ÒÀš`²G>€‹] ÒÀš ²G>À‹]àÒÀšà²G>‹] ÒÀš ²G>@‹]`ÒÀš`²G>€‹] ÒÀš ²G>À‹]àÒÀšà²G>‹] ÒÀš@²e„`²ÇC€²`õ ²ú™À²@ಣ‰²/¢ ²¥¢@²e„ ÒÀšÀÒÀšàÒÀšÒÀš ÒÀš ²G>@ÒÀš`ÒÀš€ÒÀš ÒÀšÀÒÀšàÒÀšÒÀš ÒÀš@ÒÀš`ÒÀš€ÒÀš ÒÀšÀÒÀšàÒÀšÒÀš ÒÀš ²G>€‹]à²G>²G>à²G>²G>ÀX²G>àX]àX²G>Y] Y] Y²G>@Y]@Y‚Ü–`Y]`Y‚æ–€Y]€Y‚ø– Y] Y‚˜ÀY]ÀY‚ —àY]àY‚—Z]Z‚0— Z] Z‚;—@Z]@Z‚m—`Z]`Z‚€—€Z]€Z‚À— Z] Z‚×—ÀZ2]ÀZ‚¸«àZ²G>àZ‚î’[²G>[‚Ç« [‚w˜€[²G> [²G>À[²G>@b²G>`b²G>€b²e„ b²G>Àb²e„àb²G>c²G> c²G>@c²G>`c²G>€c²G> c²G>`d²G>€d²G>Àf‹]àf‹]g‹] h²e„Àh²e„àh²e„i²e„@i²e„€i²e„ j‹]@j‹]`jÒÀš€jÒÀšàjÒ¶àj²G>k²G>@k‹]`kÒ¶`k²G> k‹]ÀkÒ¶Àk²G>l‹] lÒ¶ l²G>`l‹]€lÒ¶€l²G>€ˆÒˆ»€ˆ²G> ˆÒˆ»‰‹] ‰‹]@‰²Î вe„@вe„`вG>ÀŠÒˆ»Àвe„àŠÒˆ»àвG>‹Òˆ»‹²G> ‹Òˆ» ‹²G>@‹Òˆ»@‹²G>`‹Òˆ»`‹²G>€‹²G> ‹²G>à‹²e„ Œ²e„@Œ²G>`Œ²G>€Œ‹] Œ²6¾€²ÇC ²ÇCŽÒˆ»Ž²G> ŽÒˆ» ޲G>@ŽÒˆ»@޲e„`Ž‹]`Ž“]À޲G>@²G>`²G>€Òˆ» Òˆ» ²G>ÀÒˆ»À²G>àÒˆ»à²G>Òˆ»²G> Òˆ» ²G>@Òˆ»@²G>`Òˆ»`²e„€Òˆ»€²e„ Òˆ» ²e„ÀÒˆ»À²e„àÒˆ»à²e„‘Òˆ»‘²e„ ‘Òˆ» ‘²e„@‘Òˆ»@‘²e„à“‹]à““]”‹]”“] ”‹] ”“]@”‹]@”“]`”‹]`”“]€”ÒÀš ”ÒÀšÀ”ÒÀšà”ÒÀš•ÒÀš •ÒÀš@•ÒÀš`•ÒÀš€•ÒÀš€•²`õ •²G>À•ÒÀšà•²G>–²e„ –²e„@–²ÇC`–²`õ€–²ú™ –²ÇCÀ–²`õà–²@—²£‰ —²`õ@—²ú™`—²/¢€—²¥¢˜Ò͘²G> ˜²G>@˜ÒÃ@˜²G>@˜‚XÃ`˜²G>€˜] ˜]€™‹] ™‹]À™‹]à™‹]š‹] š‹]@š‹]`š‹]€š‹] š‹]Àš‹]àš‹]›‹]ž‹]ž“] ž‹] ž“]@ž‹]@ž“]`ž‹]`ž“]€ž‹]€ž“] ž‹] ž“]Àž‹]Àž“]àž‹]àž“]Ÿ‹]Ÿ“] Ÿ‹] Ÿ“]@Ÿ‹]@Ÿ“]`Ÿ‹]`Ÿ“]€Ÿ‹]€Ÿ“] Ÿ‹] Ÿ“]ÀŸ‹]ÀŸ“]àŸ‹]àŸ“] ‹] “]  ‹]  “]@ ‹]@ “]` ‹]` “]€ ‹]€ “]  ‹]  “]À ‹]À “]à ‹]à “]¡‹]¡“] ¡‹] ¡“]@¡‹]@¡“]`¡‹]`¡“]€¡‹]€¡“] ¡‹] ¡“]À¡‹]À¡“]à¡‹]à¡“]¢‹]¢“] ¢‹] ¢“]@¢‹]@¢“]`¢‹]`¢“]€¢‹]€¢“] ¢‹] ¢“]À¢‹]À¢“]ࢋ]࢓]£‹]£“] £‹] £“]@£‹]@£“]`£‹]`£“]€£‹]€£“] £‹] £“]À£‹]À£“]࣋]࣓]¤‹]¤“] ¤‹] ¤“]@¤‹]@¤“]`¤‹]`¤“]€¤‹]€¤“] ¤‹] ¤“]À¤‹]À¤“]ऋ]ओ]¥‹]¥“] ¥‹] ¥“]@¥‹]@¥“]`¥‹]`¥“]€¥‹]€¥“] ¥‹] ¥“]À¥‹]À¥“]ो]॓]¦‹]¦“] ¦‹] ¦“]@¦‹]@¦“]`¦‹]`¦“]€¦‹]€¦“] ¦‹] ¦“]À¦‹]À¦“]ঋ]ও]§‹]§“] §‹] §“]@§‹]@§“]`§‹]`§“]€§‹]€§“] §‹] §“]À§‹]À§“]à§‹]à§“]¨‹]¨“] ¨‹] ¨“]@¨‹]@¨“]`¨‹]`¨“]€¨‹]€¨“] ¨‹] ¨“]À¨‹]À¨“]਋]ਓ]©‹]©“] ©‹] ©“]@©‹]@©“]`©‹]`©“]€©‹]€©“] ©‹] ©“]À©‹]À©“]à©‹]à©“]ª‹]ª“] ª‹] ª“]@ª‹]@ª“]`ª‹]`ª“]€ª‹]€ª“] ª‹] ª“]Àª‹]Àª“]ઋ]ઓ]«‹]«“] «‹] «“]@«‹]@«“]`«‹]`«“]€«‹]€«“] «‹] «“]À«‹]À«“]à«‹]à«“]¬‹]¬“] ¬‹] ¬“]@¬‹]@¬“]`¬‹]`¬“]€¬‹]€¬“] ¬‹] ¬“]À¬‹]À¬“]ଋ]ଓ]­‹]­“] ­‹] ­“]@­‹]@­“]`­‹]`­“]€­‹]€­“] ­‹] ­“]À­‹]À­“]à­‹]à­“]®‹]®“] ®‹] ®“]@®‹]@®“]`®‹]`®“]€®‹]€®“] ®‹] ®“]µ52#52JUQalqu€Žá;d!.<IVclòtª />MVçö„ Ä R!$$'$8$I$Z$k$|$ƒ$á$è())Ô-é-.ƒÛ2à2ð2š3×3 44€4ä4õ4 5§5N6a6y6–6r7:1:::H:N:`:Ñ:Ú:ï:";N;p;s;†;“;<g<›<È<Õ<=#=3=D=>>%>6>ˆ>c>¬>¼>ê>1?E?O?W?x?œ?¡?O@Z@¾AûABÇAÒABAB}B:DƒD0E>EBELEUEˆE F=FyG‚GITI¨IèIJ¶J”HÈJaKtK‰KŸKæKðKÿK LpK!LFL…LÕLâL?MsM¡M®M²MLNµNÈN(O,OODO­OÐOüO PŽPÇP‰PéPúP Q&Q,QAQLQeQ‹Q”Q QµQ¸Q¼Q¿QÑQæQûQ6RHRNRSRXReR‚RÛSàSÅVÞVW W(WÂVBWW•W¤W»W[+[~XDeSe`eue‚e"YÀWœeùd¦e½e:Y!d-d9dEdQdeÉdÕd]dˆ]iduddd_™d¥d±dád½d¹`eíde.YÇe–gLjåj±kèkîkúkÿkfl5lŠl«l°l¿lÄlÍlÝlm mJm§m¶m½m¡Òmõm"n(nWn\ncs;nŒvÂvÊvØvÜvwvBwhwÈwÓwëwx`w!xXxixtx€x‰xÓx^y‰w™y¥yªyTzpzzzµzñz9{k{£{N|W|æ|ö|}}}}'}Û}K~T~j~o~’~Ä~¾ €€è€õ€ -=iæþ5‚€¹‚Ç‚„„††)†Z†Þ†î†þ†;‡ˆÂˆhˆæˆ‰]‰”‰Ÿ‰Í‰Š Š1ŠFŠOЀйŠåŠa‹ÿ‹ŒGŒ§Œ·Œh¡Ž¡ŽªŽÅŽ5}Àä³½È2‘Ó=‘n‘ý‘“$“E“¿“Ù“Þ“ánì“ú“;”Š”Qoænr•§•¸•Ê•æ•#–(–A–z–í–Á—â—%˜,˜b–ý—D˜˜«˜Ý˜æ˜™.™p™¸™#š=œÃÉnžGžã¹ž¢ßž'ŸRŸEoÕnkŸÇŸÙŸ ¡@¡f¡k¡~¡Fn›¡$¢€¢Û¢ð¢ú¢¸£§?Уe¤·¤¥qw!¥,¥A¦‡¦§§ˆ§¨¶¨,©M©ÿ¨z©á©ë©ªRª»©‚ª8TpʪªW¬{¬½­Æ­û­‡­2®M®w¯°°°-°;°.¯F°ƒ°Ø°U±±±Ü±ñ±f²¨²5³~´´´§µ$¶3¶^¶…¶“¶¹¶Ç¶í¶û¶·-·R·\·€·Ž·³·Á·ë·¸L¸|¸¢¸½¸è¸ý¸ ¹¹w¹ß¹$º6º?º’ºW»l»—»ð» ¼¼¾[¾B¿¤¿«¿â¿2À–ÀßÀÁÁIÁ‡Á¸ÁÐÁÂ]³ÂÃeÔÃÝÃ:ÄzħÄÏÄEÅÅÅÆBÆjÆÐƆÇáÇZÈɉÉÊMÊ¡ÊóÊpËÌ̪̔ÌÀÌÆÌßÌøÌ ÍÍ;ÍKÎjÎÎΩζÎÁÎÐÎìÎõÎÏÏ&Ï,Ï~ϋϠϦÏÇÏÐxÐЋЭÐÑ4Ñ^ÑfÑ¿ÑÒ;ÒeÒ˜ÒÁÒ#Ó4ÓJÓ Ó.ÔVÔpÔÔ™Ô£ÔµÔÃÔÕ9ÕWÕpÕ¨ÕIÖˆÖÂÖÜÖñÖ××*×7×ÃרØöØÙ#Ù·Ù<ÚjÚ‡Ú Û"Û2ÛäÛFYBÝ•ÝÖÝàÝåÝrÞ¥ÞßßZߕߟߤ߯ßÓߨßáßà àlà&áFáËáPâBääÌäåÐåæSædçwç·ç¾çÒçâç&è*è¯è¿èüè éé4é[éjéoééŠé é9ê£êùêëVë®ëììÈíßíûí;îî$ïCï¯ïñ&ñ'ò/òƒò¶òØòó*ó6óIóoó»óÅóÖóùó#ôôœôÛôõÂõÏõöö3ö¡ö¬ö»ö¾öÌöÖö÷m÷¢÷§÷øøYø0ùQùŒù®ñ¯ùú¡úöúKûÇûÝýKþÛþãþÿh2ÿTÿ†ÿ£ÿÁÿúÿ’UþTzU†U µ¾;I¤þ\ ò}ÚAFKx¦ÈóhlÌÖÛåï1¬ÅÑäU£¨­²ÆÑåéíòs  X ™ Ù  5 D Á ø G ;^jÂï9kxÕöY²¾ÕßÞêƒPN™¨½?MWfsŠ ¥Ý &5>Zu”Òò'_z¨.ˆ˜¸Ñä&h}‹ý]Êà'CMRWx¶ÔÚíb{•¶T¿  6 M [ d ³ È ì ! !%!U!f!p!‹!•!½!ý!""""Á"Ñ".#L#û&'M'V'‰'¢'æ'W(‚(ö()k)·)**%*>*Ö*M+r+m,‚,x-.–.¶.é.//²/ì/(0b0‚01¦1á1é1a4r4s7’7Ù7ä7'8]8h8¿8­9Æ9»:-;T;Ä;*<t<Ð<X=c=n=y=}=¦=>>|>Ð>Û>æ>?n?Û?é?Å@ÿ@7ANAïABÖB)CdC¨CmDwDE³EÉEÈFÓFBG]G-HMH H±HÄHéHþH)I‹I§IÞIJ#J4JpJ‹JÏJæJ K(KhKK½KÇK LLiLL¤L´LM'MWMfMMÎMNLNjN²NïNObOtOO»OÔOPP[PjP°PßPQ+Q¤Q½QRS¦SÖSTTET™T~U©UtV}V¿VW_WhWŠW@XëXYPYxYúYDZcZ¸ZËZöZ5[h[ž\ð]O^¡^º^é^_Á_ì_õ_ƒa¤a¾aæabb¦dÞdeleeœeãefHfðfg*g‰g¾gŸhÚh i´iôi†j˜jãjVklLlfl³lNmmm•mªm¿mwnHppÆpÏpq±qºqþq r6r€r‰r¿rsCr«sûst:tFt¥tèt?upuSvfv…vv w=wnw»wŽx¦x(y8y=y^y‰y«y¯yºy0záz {{o{™{½{ß{è{|K|ñ}~x}F~y~\}†~Ú~ñJ€¸€w…½P‚¡‚(ƒœ‡Ãƒäƒ„x®g„¡„Ì„à„ …€…µ…·؇cˆ€‰7ŠVŠ^ЉбŠçŠ*‹Z‹ª‹à‹ü‹FŒŒ¤Œ¿ŒIs´Ž}Ž Ž#vôþ Ì'‘5‘Ž–æ—3˜à™•š¤šI›X›››ª›í›ü›?œNœ‘œ œãœòœ5D‡–Ù螣Ÿ®Ÿ²Ÿ½ŸÁŸÌŸПÛŸߟêŸõŸùŸ    " 2 H ^ € ’ Ä ë i¡Ö¢ý¢£D£™§q£o¨á…­¨ð…´©fª2ˆU«ƒ†”«à«#¬<¬±¬À¬4­Ä­Õ­ë­¼®W°j°‚°Ÿ°ã±5µAµZµ‹µ£µ·µ‚¶ɶ¶¹înl¹é¹Îy%º ¼0¼D¼I¼M¼¥¼ª¼¼Æ½C½\½¥½©½­½À½¾¾p¾u¾»¾*¿>¿e¿~¿ª¿Ì¿å¿ À1À^À“ÀÐÀöÀ%Á]ÁÃÁÂS­ºÂÈÃTÄeÄvÄ‡Ä˜Ä ÅáźÆËƤǷÇÊÇÝÇðÇÈÈȱÉÍʳËÈËÝËòËÌÌ1ÌFÌïÌIΦÏàÓéÓÔÔ#Ô2Ô?ÔMÔ^ÔmÔ}ÔÔ¡Ô³ÔÚÔðÔÕ/ÕGÕ]ÕÕ´ÕÌÕçÕìÕÞ   ! " #$%&-/123457!8"9#:$;%<&='?,@-A.B/C0D1E2F3G4I:J;K<L=M>N?O@PAQBRCSDUKVLWMXNYOZP[Q\R]S^T_U`VaWc_d`eafbgchdiejfkglhminjokplqmuqvsxwz‚{ƒ|…‚‡„‰†Š‡Œˆ‘‰“Š˜‹žŒŸ¡¢¦‘§’«“¬”´•µ™¸š¹›ºœ¼¾žÉ¡Î¢Ï¤Ð¥Ñ¦Ò¨Ö©Ùªß«â¬å­ë®î¯ð°û²ü³µ¶·¸ ¹ º»¼½¿FÀGÁHÂIÃJÄLÅMÆNÇOÈPÉQÊRËSÌTÍUÎVÏWÐXÑYÒZÓ[Ô]Õ^Ö_×`ØaÙbÚdÛeÜfÝgÞhßiàjákâlãmänåoæpçqèrésêuëvìyízî{ï}ð€ñ†ò‰óŠô‹ö÷Žø“ù•ü—ý™þ›ŸR d¡g£h¥j©kªl«m¬n­o®ü¯ºk½o¾pÁyÃ|ƕʖϯҰմÙÉÞÊâÌêÍëÎíÏîÐïÑðÒñÓóÔôÕõÖöØÿÙÚÛÜÝÞß à á âãèùûü:ÿAO T+p3qCsƒu‡w˜y›~œž€Ÿ ‚¡„¤†¥‡«ˆÑؓڕۘܛݞޠ ¢£!¤&¥+¦2§7¨<©AªF«K¬\­a®f¯k°p±u²z³´„µ‰¶¨·ºÉ½Ë¾Ì¿ÍÆÎÙÏíÐÑÒÚßà+å0l2m3o4r5v6{78ˆ9888Ý`ó`aò$aò*aò¬faòuaòóabP.bJb`8.bibòwbbíb!còcœcÿcÈÿc-ÿcÈÿc-!cò-d:dGdÿcÈÿc-ÿcÉÿcÈÿc-ÿcÉ!cò´dÁdÎdÛdÿcÈÿc-ÿcÉÿcB"ÿcÈÿc-ÿcÉÿcB"!còleye†e“e eÿcÈÿc-ÿcÉÿcB"ÿcÈ&ÿcÈÿc-ÿcÉÿcB"ÿcÈ&!còKfXfefrffŒfÿcÈÿc-ÿcÉÿcB"ÿcÈ&ÿc¦*ÿcÈÿc-ÿcÉÿcB"ÿcÈ&ÿc¦*!còVgcgpg}gŠg—g¤gÿcÈÿc-ÿcÉÿcB"ÿcÈ&ÿc¦*ÿcÚ/ÿcÈÿc-ÿcÉÿcB"ÿcÈ&ÿc¦*ÿcÚ/h“hò™hò.b\jÈ8È`”:8Ȭjž:³jž:!cò'k.kó;4k m]>>m8ÈknvnÈÿoÍ?TpÈZp-TpÈZp-tpÏ@zpÏ@€pòTpÈZp-TpÈZp-tpÏ@zpÏ@€pò.k¡A¤p­AsÏ@4kÿc·A­pò×l²FtqèF¤`èF¦uGTpÈZp—Gtp—GzpòÿcÈTpÈZp—Gtp—GzpòÿcȤp­As—G.kŠH­pò4kÑuÈØuÈçuÈ×l÷=w wkK!còS{«NS{ Oe{–OS{œOá{òç{fP|ò!|òjwP)|A|}PE|}PJ|Q|W|b|m|!còˆ~‘~~0R©~ÿcòÿcòÿcòÿcò!cò!(/TpZpèFtpTpZpZTtpzpZT€puqTTpZpïTtpZTTpZpèFtpTpZpZTtpzpZT€puqTTpZpïTtpZT…òò½Ñ¥UäÇUƒwÍUóòþò €ò€ò€.€>€.V8wA‚'kKK‚¾V!còþ‚ ƒƒ ƒTpªWZp°Wÿc(XTp(XZpxXTpkKZpòTpªWZp°Wÿc(XTp(XZpxXTpkKZpò!cò™ƒªƒ´ƒRYÀƒ΃RYäƒüƒRY „„RY"„.„;„RYH„W„RY`„k„RYw„…„RY’„¡„RY©„³„ÄЄÛ„ð„……(…=…P…e…w…‹……±…¾…Ë…Ý…î…ü…RY† †RY†&†RY/†:†RYG†V†RY\†ÿckKÿcî[ÿcî[ÿckKTpkKZpòÿcr]ÿcr]ÿcr]ÿcr]ÿc_ÿc_ÿc_ÿc_ÿc¢`ÿcaÿcaÿckKÿckKÿckKÿckKTpèFZpkKÿckKÿckKÿcî[ÿcî[ÿckKTpkKZpòÿcr]ÿcr]ÿcr]ÿcr]ÿc_ÿc_ÿc_ÿc_ÿc¢`ÿcaÿcaÿckKÿckKÿckKÿckKTpèFZpkKÿckKs)eŒ°W'kKxXtkF«k޾VF«kàø޾VFj,l=‘èFW‘¾VZ‘,la‘èF§‘Rl­‘à­pò§‘Rl!còÔ’5n——nC‘Rld“£nj“°np“½n“Ãnû’2oÿ“?o!còÿc‚o:@q¦”Kqz—§‘Rl™Ww™ò™òašòp›¤|}¡¤|í¢ý¢˜£½˜;£È˜!cò ¥wb¥ÿcÈÿcX>ÿcÞœÿcÈÿcX>ÿcÞœ¬³¾¬³¾%¬³¾/¬³¾6¬³¾=¬¸¾|¼¾b¬Á¾x¬Þ¾¬¿£¬¿¹&ã¹ò¹2ãh(X!còTp”çZpò!còÿcèçκæéѺì鈸ñé»3ê0»3êM»3êb»3ê2¾3ꬳ¾D¾3êX¾òi¾!òü¾åÁ1üôÁÍÂÑþÔÂÕþÚÂÕþ!còTpòZpòtpfP!còÝÆ) ñÆÇ) ǵdz¾¼Ç³¾»i³¾ÆÇ³¾!còÈ+ÈP 4È?ÈIÈVÈeÈÿc± TpkKZpkKÿcŽ ÿc.ÿckKÿc± TpkKZpkKÿcŽ ÿc.ÿckK!cò5ÉCÉ“MÉYÉjÉ}ɋɢÉÿcôTpkKZpèFÿcãTpZpãTpkKZpãÿcèFÿcôTpkKZpèFÿcãTpZpãTpkKZpãÿcèF ËÕþˬˬˬ$ˬOͳ¾U͘\ÍžgÍ£mÍ­IÎÑþRÎÑþXÎÑþaÎXjÎXvÎ\€ÎÑþŒÎÑþ˜ÎÑþ¥ÎÑþ±ÎÑþ½ÎÑþÉÎÑþÖÎÑþãÎÑþìÎÑþ÷ÎÑþŠ|`Ž|`ÏfÏmÏmÏm#Ïm-Ïr:ÏrDÏÑþWÏÑþtÏÑþÏÑþ¥Ï`ÒòOÕò1sòÒòÒòYÕò_ÕfPàÕ}žÑþ3¤XÔ›Ñþ1sÑþø¦ÑþðÕX÷ÕÑþÖÑþÖm!Öm)Ö/Ö4Ö3¤.×\)Ö/Ö2×<Øž:µÇ³¾Bس¾»i³¾Iس¾RØ3êhØ3ê|Ø3êØ3êŸØÔ­Ø³¾´Ø³¾½Ø³¾Äس¾Íس¾Ôس¾Ýس¾äس¾íس¾ôس¾ýس¾Ù³¾ Ù³¾Ù³¾Ù³¾$Ù³¾-ÙÑþ6ÙÑþàÑþÕ2¦šà D¦š8Ȥp€x!cò/êñx!còVë]ëeë |jëÿcÈÿcå|ÿcÈÿcå|²ë”}¸ë¥}BCå|Áë¶}BCå|Zì®~!còí/ƒí'í/ƒ1í=í/ƒHí`ò,’iò,’mòG’|òG’ö,’'ö,’îú÷úÿúÈîú÷úÿúÈîú÷úÿúÈÿú-÷úÿúÈ÷úJû1§Jû1§Jû1§Jû1§Jû!¨Jû1§Jû1§Jû1§Jû1§Jû1§JûO©Jû1§Jû1§Jû<ªJû1§Jû1§Jû1§Jû1§Jû1§Jû1§Jû«\b³ˆûh³ ûh³ºûn³Çûw³Öû€³äû‰³òû’³ü›³ü¤³ü­³*ü¶³9ü¿³HüȳWüѳgüÚ³uüã³…üì³8v¸~v¸Jû’¸Jû’¸Jû¬¸Á9„¹Á9„¹Á9„¹Á9„¹Ôq»áv»ìv»þh³h³&Ñþ7|»K‚»h Ñþ Ñþ³ ÑþÖ Ñþö Ñþ=6ÑþÀ ¸¾Ý ¸¾ô ¸¾ ¸¾#¸¾”õÑž¸¾³¸¾Å¸¾Ö¸¾ï¸¾¸¾¸¾-¸¾H¸¾\¸¾u¸¾‰¸¾›¸¾²¸¾Í¸¾à¸¾ó¸¾¸¾ ¸¾&¸¾4¸¾K¸¾Z¸¾l¸¾|¸¾¸¾§¸¾Æ¸¾ë¸¾¸¾"¸¾2¸¾H¸¾_¸¾s¸¾…¸¾•¸¾©¸¾º¸¾Í¸¾ß¸¾ó¸¾ÿ¸¾¸¾!¸¾1¸¾@¸¾J¸¾Z¸¾k¸¾|¸¾Ž¸¾œ¸¾­¸¾Â¸¾Õ¸¾æ¸¾ô¸¾ ¸¾¸¾.¸¾=¸¾T¸¾d¸¾s¸¾Š¸¾œ¸¾¹¸¾Ú¸¾ù¸¾¸¾1¸¾J¸¾m¸¾¸¾™¸¾­¸¾É¸¾é¸¾¸¾¸¾1¸¾E¸¾W¸¾i¸¾{¸¾Œ¸¾¤¸¾´¸¾É¸¾Ú¸¾ö¸¾ ¸¾¸¾-¸¾G¸¾`¸¾u¸¾¸¾¢¸¾°¸¾Á¸¾Þ¸¾¸¾¸¾+¸¾G¸¾O¸¾d¸¾v¸¾…¸¾œ¸¾­¸¾Á¸¾Ø¸¾ò¸¾ ¸¾#¸¾>¸¾N¸¾^¸¾r¸¾ˆ¸¾›¸¾´¸¾Ð¸¾ä¸¾÷¸¾ ¸¾¸¾2¸¾F¸¾\¸¾t¸¾*òTpÈK*òTpÈZp-K*òTpÈZp-tpÉK*òTpÈZp-tpÉzpB"K*òTpÈZp-tpÉzpB"€pÈ&K*òTpÈZp-tpÉzpB"€pÈ&u¦*K*òTpÈZp-tpÉzpB"€pÈ&u¦*§+Ú/K*òTpÈZp-tpÉzpB"€pÈ&u¦*§+Ú/¿+vÕK*òº»  ' ()+,-13579!;#<%>'='@)?)I+R-O/Q1\3^5`7b9j;e=g?iAtCvExGzI|K~MˆOQƒS…U‡W’Y”[–]˜_šaœcže g¬i£k¥m§o©q«s¶u¸wºy¼{¾}ÀÂăÆ…ȇ։ˋÍÏёӓՕà—â™ä›æèŸê¡ì£î¥ð§ò©ô«ö­¯ù±û³ýµÿ·¹»½¿ÁÃÅÇÉËÍ Ï"Ñ$Ó&Õ(×*Ù/Û0Ý1ß5áKãJãTåSåYç[écëdíqïkñlómõo÷pùzû{ý|ÿ}~ƒ†‡ Œ  œ¯²³µ¶·¸¹!»#¼%¾'¿)À+Á-Â/Ç1Ë3Ì5Î7Ï9Ú;÷=ø?ùAþCEGIKMO Q S U WY[]_a(c)e*gEiGkHmLowq{s~u}u€wƒyy‚{Š}‹Œ”ƒ™…š‡Ÿ‰ ‹¨©²‘Á“¼•¾—¿™À›É˟ΡУإӧթ׫ڭۯܱ޳ߵà·á¹â»ã½å¿æÁçÃéÅêÇëÉíËîÍïÏðÑñÓòÕô×õÙöÛøÝùßúáûãüåýçþéÿëíïñóõ÷ ù û ý ÿ $ % ')*,-/0245!7#8%ƒ'<)>+?-@/A1B3C5D7E9F;H=I?JAKCLEMGNIOKPMQORQTSVUXWZY\[^]`_badcfehgjilknmporqtsvuxwyyz{{}|}~ƒ…€‡‰‚‹ŠŒŽ‘“’•“—•™—›™›Ÿ¡Ÿ£¡¥£§¥©§«©­«¯­±¯³±µ³·´¹¶»¸½º¿¼Á¾ÃÀÅÁÇÃÉÅËÇÍÉÏËÑÍÓÏÕÑ×ÓÙÕÛ×ÝÙßÛáÝãßåáçâéäëæíçïîñóõ÷ ù)û+ý,ÿ34578 9 < @AILSR\]^_!`#a%c'd)i+h-x/{1™3›5¤7¥9·;¹=¸=Õ?»AñCòEùG IKMOQSUWY ["]k_lamcneogÉiàköm÷oýqþsAuBwCyé{õ}óôÿƒþ… ‡ ‰ ‹# $ % ‘& “u •w —{ ™† ›ˆ š Ÿ— Ÿ› ¡˜ ¡œ £™ £Ï ¥à §á © «ÿ ­ ¯ ± ³ µ · ¹ »; ½< ¿= Á> ÃN ÅC ÇD ÉE ËG ÍI ÏK ÑM ÓP ÕR ×S ÙU ÛW ÝY ß[ á] ã^ å` çb éd ëu íh ïi ñj ól õn ÷p ùr ût ýw ÿy z | ~   ‚ „ † ˆ ‰ ‹  Ž  ‘ “ !£ #¦ %§ '¨ )© +à -á /â 1ã 3ä 5ö 7÷ 9ø ;ù =ú ?û Aü Cý Eþ Gÿ I K M O Q S U W Y [+ ]. _/ a0 c1 e2 g3 i> kA mB oC qO sc ud we yf {g }h i p ƒq …r ‡s ‰t ‹u v w ‘z “{ •| — ™€ › ‚ Ÿƒ ¡„ £… ¥† § ©  «¡ ­¢ ¯£ ±¤ ³¥ µ¦ ·§ ¹¿ »À ½Á ¿ Áà ÃÄ ÅÅ ÇÆ ÉÇ ËÈ ÍÉ ÏÊ ÑË ÓÌ ÕÍ ×Î ÙÏ ÛÑ ÝÒ ßK á ã‹ ãŽ åŒ åî çì çï éí é£ë¤í±ï°ñëóæõè÷éùêûîýðÿóõö÷ù ú   :456789?@!A#B%}'~)Ú+Û-Ý/æ1ç3é5ë7ì9î;õ=ö?üAýC©EÌG×IâKíMüOQSU(W3YV[a]l_wa‚ce˜g£i®k¹mo q!s'u(w)y*{+},-.ƒ/…0‡1‰2‹345‘‹“Œ•“—–™™›¨ÏŸø¡£G¥T§U©n«o­s¯t±u³Ÿµ ·¡¹¢»£½¿¿ÆÁÇÃÈÅÉÇÊÉïËðÍñÏòÑóÓôÕõ×öÙ÷ÛøÝùßúáûãüåýçþéÿëíïñóõ÷ùûý ÿ       !#%')+ -!/"1#3$5%7&9';(=)?*A+C,E-G.I/K0M1O2Q3S4U5W6Y7[8]9_:a;c<e=g>i?k@mAoBqCsDuEwFyG{H}IJKƒL…M‡N‰O‹PQR‘S“T•U—V™W›XYŸZ¡[£\¥]§^©_«`­a¯b±c³dµe·f¹g»h½i¿jÁkÃlÅmÇnÉoËpÍqÏrÑsÓtÕu×€Ùۛݜßá¨ã©åªç«é¶ë·í¸ï¹ñºóÅõÆ÷ÇùÈûÉýÊÿÕÖ×ØÙ Ú Û æçèéêëìíøù!ú#û%ü'ý)þ+ÿ-/ 1x¡x£‚FÕ‚B¡‚@£‚JׂLÙ‚HÛ‚D݃RÕƒV¡ƒT£ŠÜ5ŠÔ7ŠÞ9ŠêŠâ;ŠÖ=Šä?ŠÊ¡ŠÈŠàAŠÚCŠØEŠèGŠæIŠÌKŠÐMŠÒOŠÎQ“v‹“x“t“|“~‘“†¡“„£“z““‚•“€—n²$îPÕñŠÕóžÕýD ÕýB Éý@ Ëý> Íý< Ïþb ÕŽ ÕÄ £Æ ¡à 5â 9æ ;è ?î ð ¡ä Aì Gê I * Ë ( Í & Ïdè Õ4(Õ4$×4&Ù4"ÛDêÕDæ×DèÙDäÛ†X¡‡f¡‡d£Œz¡Œx£‚tŒÕˆ×ŠÙ†Û„Ý‘¢Õ‘ž×‘ Ù‘œÛ¡øm¡úk¤Õ¤ פ٤ ۤݥm¥k©TÕ©PשRÙ©NÛªbÕª^ת`Ùª\ÛªZÝ­†Õ­‚×­„Ù­€Û­~ݱ¢Õ±ž×± Ù±œÛ²®Õ²ª×²¬Ù²¨ÛµÄÕµÀ×µÂÙµ¾Û¶ÐÕ¶Ì×¶ÎÙ¶ÊÛ·àÕ·Ú×·ÞÙ·ÜÛ·ØÝ¸ìÕ¸è׸êÙ¸æÛ¸äݹöÕ¹ò×¹ôÙ¹ðÛÚÆ!ÕÚÂ!×ÚÄ!ÙÚÀ!ÛÚ¾!Ýá"¡ä$"¡ç:"¡êP"¡íf"¡ð|"¡ó’"¡ö¨"¡ù¾"¡üÔ"¡ÿð"¡ #¡#¡0#¡B#¡”Ê%Õ”Ä%×”È%Ù”Æ%Û”Â%Ý).)ƒ0)…4)ƒ6)…:)ƒ<)…2(+2*+ö*2&+ø*2.+ú*20+þ*24+ü*26++3B+3D+ö*3@+ø*3H+ú*3J+þ*3N+ü*3P++4^+4`+ö*4\+ø*4d+ú*4f+þ*4j+ü*4l++5|+5~+ö*5z+ø*5‚+ú*5„+þ*5ˆ+ü*5Š++6œ+6ž+ö*6š+ø*6¢+ú*6¤+þ*6¨+ü*6ª++7¾+7À+ö*7¼+ø*7Ä+ú*7Æ+þ*7Ê+ü*7Ì++8â+8ä+ö*8à+ø*8è+ú*8ê+þ*8î+ü*8ð++9,9 ,ö*9,ø*9,ú*9,þ*9,ü*9,+ &0@P\n€Ž¢¶ÆÜò4HT`lx„—Ÿ§®¸ÅÎÛãêò:CKS[js‚‘›ªºÄÎÝçþ/=K_hqާ²½ÈÓãù  1BUds˜µÌÜí÷2@P`q{†•Ÿ®Ã×çö 1ETm‹©Óìõÿ &1=Pdox˜¢«ºËÛó$=Rfr~³ÃÞþ # 4 A I Q k — ¼ Æ Õ á í ù    7 @ I q š ¢ ª ´ Ä Ö í õ þ  ) < F Y n „ ± ¹ Á Ñ Ý ó   ( 2 F Y a l u } †   ª ¾ Ô à ö  ( > _ k x ˆ – ¦ ½ Î Ø æ ø "5QYhw€”­Ñê+6HS[crz‚Œ–¢ª²»ÃÉÒÚàéñ÷%.6<EMS\djs{Š’˜ §­µ¼ÂÌÔÚæîø (4=NW_hpx‚Š’š«¼Ôâ7IPW^elszˆ–¤«´ÁÊÓÞç÷ô58Œ£ºéq(C^~±Ññ ¡"À"ß"þ"#T#x#œ#À#€$''J'm''³'Ö'(9(a(‰(±(+V++Ê+,>,e,¤,Ð,ü,(-T-€-R0’0Ò01R1’1Ò13J3a3†33§3¼3Í3-4F4Y4c4&5C5X5b55¸6Ù6ð6ú67C7o8–8¶8ú8K9©9:³:'<q=ý=.>y>_?²?Ù?!@hAŠAÝA#B.B7BsBPCýCSDkD£EÃEÚE"F¹FÃF#G7G[HwHHÚH,I@I¶IàI;JiJNK’KLBLžLPMZM–MANºNÕNO@O`O»OÃOP/PYQßQ×VÙeff"f8fIfafƒff©fÅfäfíf g.g8gZgdgugÖh>jâj!k†kplƒlm#mCmŸmÈm nrnVo¥o8qfqÑqäq rCrÞrñr s:s[sŒsïsCt¡tuuuuÏuðužv¦võvw ww–wžw±w¸wÜwžxy>yyyÀyçy zz†H†P†—†¡†»†‡‡,‡ˆ‡’‡¦‡®‡Ñ‡ý‡DˆNˆvˆœˆ©ˆ³ˆÞˆ‰>‰E‰U‰ˆ‰ª‰»‰Å‰ô‰Š'ŠZŠbŠÂŠÊŠ‹?‹³‹ŒŒÅŒÔŒáŒX`ª²àeŽoŽ‡ŽŽ—Ž»ŽÜŽäŽóŽûŽ #-Ë7 ‘‘A‘Æ’Î’ “X“Ñ“”””&”.”ž”Д䔕•:•B•–U–œ–Þ– —:—B—¤—¹—Í—õ—˜˜2˜s˜ï˜÷˜ÿ˜~™š)š1šFšiš‘šÊš›B›y›‚›–›Ò›œA]y«³»Ëìž ž(ž7žsžž§ž±žÆžÐž ŸBŸJŸcŸŸŸÑŸùŸ  4 = W | ž ¾ Ö ê ù å¡4¢H¢W¢a¢k¢t¢È£¤H¤P¤X¤À¤È¤Ð¤×¤é¤~¥Á¥ã¥g¦¦»¦È¦é¦0§M§W§i§q§y§ä§¨Q¨[¨c¨…¨—¨ª¨6©D©ž©ð©þ©Âªýª««,«G«U«]«e«m«ž«Ü«$¬k¬¬À¬È¬Ó¬ú¬­­H­T­q­­£­«­³­Ñ­Û­ã­ë­ó­®Á®¯7¯g¯o¯Ž¯­¯Ó¯O°c°m°v°Î°ê°± ±(±0±~±;²\²t²|²‰²Ô²Þ²÷²³³³%³-³F³Z³b³v³~³†³Ž³¬³Å³Í³ã³ë³ó³£´vµ˜µ,¶W¶Œ¶À¶ô¶&·U·‡·º·¸E¸u¸¬¸µ¸)¹=¹L¹[¹e¹n¹Nº_ºkº|ºt»ˆ»*¼E¼[¼x¼¾9¾¿.¿Å¿Ñ¿ÀÀmÀÀ~ÁUŽžÂöÂÃwÃÃÄ*ÄÅ+ÅúÅƧƹÆQÇiÇøÇÈÈ:ÈëÈüÈ\ÉpÉáÉòÉEËXËÞË÷Ë¢ÌÖ̙μÎìÏJÐХЭÒ_ÓŒÓÝÔ€ÕbÖD×kפ׋ÙÿÙ_Û´ÛŒÝíÞöÞ$ßPßà#à6á„ânæ™æcè)é’é êIê_êgêvêŠê™êfë|ë‹ëŸëaìžìúìí0í:í®í·íxïÓï&ðîðIñ`ñhñ¸ñÂñjòóäóôôHôªô¾ô}õïö÷ ø'øEøOø>ùHùºùãù¼úuûƒû»ûÄû}üÑýþ)þªþîþøþJÿmÿwÿ³ÿîåêù^k‘ù(ï."zfÏ ò J ƒ ‹ © ³ Û ã K S v  ã í  /3ë:C?Öó‚ÅÏ#eÊê5MUs‹½Ýöpš¡© „­!Ñ!æ!ï!¹"f#m#v#€#‹#—#¤#' '*'’'m().*6*‡*¤*Æ*Î* ,-4-–-³-Ç-ä-c.†.Ž./y/60C0x1»12G2O2W2t22¤2É2Ñ2Þ2æ23/3d3j45O5Ž5Ä5Î5 6_6L7i7~7ˆ7¬7 919A;ˆ=’=œ=>ñ>û>?„@CAºAÿABÍBtCƒCÒCúCDIDSD­DçDñDûD‚E{F!GMG$H·H¿HïHóH´I(J~JÛJKtKçKrL M_M„MZN^N¦NüN OOÈOQ±QRlWtW‚Wu_)`r`z`ª`a#a[abKb‘bûbc>czcÀcúc1d8d‚dJe•esff¯gãg÷g'hihhiÁi×iãi:jCjúj'kNkžk´klolwlèlòlúlím&n8nºnänøno#o-o4oloxoošo±oÛo÷op2pqQqq™q©qöq.r;rWr—rŸr²rár sBsLsVs€såsís"t,tRt\tst—t±t¾tÞt÷tuuu`uhuxu€u°uv'v\vœv¤v¿vövw(w€wìwôwx–xžxéxy yyy0yTymy{yÆyÙyåyïy zz$z?zVz^znzŸz©z±zÈz/{>{F{N{V{¢{ª{|%|-|I}e}}ú}3~q~·~¿~Ò~ì~ C‹·ä€˜€Ù€.;Ž–^‚ì‚ ƒGƒbƒlƒƒ›ƒ¢ƒ¬ƒ»ƒÚƒôƒ „<„R„Z„Š„”„Ä„ì„÷„@…H…S…e…x…Œ…—…ã…††E‡”‡¦ˆâˆ6‰^‰Ö‰à‰ Š Š(Š/ŠmŠ‹N‹Œ²ŒiŽŽ¿ã”$•˜ȘÞ˜ЙØ™ šš"š7šCštš"›)›t›{›Æ›Í›œœjœqœ¼œÜ`g²¹ž ž1ž8žVž^ž£žåžíž7ŸŸ†Ÿó¢£<£O£W£_£g£ƒ£‹£“£›£££«£³£¼£Ä£Ì£Ö£Þ£æ£î£ö£þ£¤!¤0¤B¤Õ¦ݦå¦ï¦§%§=§R§Z§b§j§r§z§‚§‘§Ù§á§é§ñ§ù§¨ ¨¨¨4¨R¨e¨£¨ͨרߨç¨ï¨÷¨ÿ¨©©©©'©/©7©?©G©Z©n©v©~©†©Ž©–©ž©¬© ªªª$ª,ª4ªHªRª\ª€ªˆªª˜ª ª¨ª°ª¸ªÀªȪЪتàªèªðªøª««#«A«K«}«®«ø«0¬c¬o¬{¬Ô¬ç¬ ­…­“­¡­®®C®]®Š®h¯©¯ë¯û¯ °Á°ذ± ±Q±r±¨±ø² ³³%´-´¾´Õ´Ý´ñ´µéµñµùµ”¶¥¶±¶½¶ü¶ ··&·4·B·P·^·l·x·„··œ·ª·¶··ηÚ·æ·ò·þ· ¸¸€¸—¸¤¸¾¸иÞ¸ì¸ô¸¹d¹—¹¥¹³¹Á¹Ϲݹººº1º=ºGºSºcºoºyº…ºº›º¥º±ºÁºͺ׺ãºíºùº»»»%»/»;»E»Q»[»g»±½´½·½º½½½œ¿п¤Á²Â©Ä¹ÄÉÄÙÄéÄùÄÈ,È>ÈPÈbÈtȆÈÇÊÊÊJÌ^Ìr̮̆̚ÌÂÌÖÌ£ÏÝÐåÐíÐ ÑÑ:ÑHÑqÑÑѼÑÎÑÞÑ*Ò›ÒÞÒ)Ó1ÓÇÓÏÓóÓÈÔíÔÕDÕÕšÕôÕ€&Æ„€ j^|n@;"(€B0/1/2/3/4/65758595:5;5<5>=?=@=A=B=C=D=E=F=HGIGJGKGLGMGNGOGPGQGRGTSUSVSWSXSYSZS[S\S]S^S_S`Sbacadaeafagahaiajakalamanaoapawvyx…„†„‡„ˆ„‰„Ž‘’Ÿž ž¡ž¢ž£ž¤ž¥ž§¦¨¦©¦ª¦«¦¬¦­¦´³µ³¶³·³¸³¹³º³»³¼³¾½¿½À½Á½Â½Ã½Ä½Å½Æ½Ç½È½É½Ê½Ë½Ì½Í½Î½Ï½Ð½Ñ½Ò½Ó½Ô½Õ½Ö½×½Ø½Ù½Ú½Û½Ü½Ý½Þ½ß½à½á½â½ã½ä½å½æ½ç½è½é½ê½                     !"#$%&(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'>=?=@=A=B=C=D=E=F=G=IHJHKHLHMHNHOHPHQHSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRhgihjhkhlhmhnhohpgqgrgsgtgugvgwgxgygzg{g|g}g~gg€gg‚gƒg„g…g†g‡gˆg‰gŠgŒŽŒŒŒ‘Œ’Œ“Œ”Œ•Œ–Œ—Œ˜Œ™ŒšŒ›ŒœŒŒžŒŸŒ Œ¡Œ¢Œ£Œ¤Œ¥Œ¦Œ§Œ¨Œ©ŒªŒ«Œ¬Œ­Œ®Œ¯Œ°Œ±Œ²Œ³Œ´ŒµŒ¶Œ·Œ¸Œ¹ŒºŒ»Œ¼Œ½Œ¾Œ¿ŒÀŒÁŒÂŒÃŒÄŒÅŒÆŒÇŒÈŒÉŒÊŒËŒÌŒÍŒÎŒÏŒÐŒÑŒÒŒÓŒÔŒÕŒÖŒ×ŒØŒÙŒÚŒÛŒÜŒÝŒÞŒßŒàŒáŒâŒãŒäŒåŒæŒçŒèŒéŒêŒëŒìŒíŒîŒïŒðŒñŒòŒóŒø÷ù÷ú÷û÷ýüþüÿüüüüüüüüüü ü ü ü ü üüüüüüüüüüüüüüüüüüü ü!ü"ü#ü$ü%ü&ü'ü(ü)ü*ü+ü,ü-ü.ü/ü0ü1ü2ü3ü4ü5ü6ü7ü8ü9ü:ü;ü<ü=ü>ü?ü@ü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ü[ü\ü]ü^ü_ü`üaübücüdüeüfügühüiüjükülümünüoüpüqürüsütüuüvüwüxüyxzx{x}|~|€‚ƒ„…†ˆ‡‰‡Š‡‹‡Œ‡‡Ž‡‡‡‘‡’‡“‡”‡–•—•˜•™•š•›•œ••ž•Ÿ• •¡•¢•£•¤•¥•¦•§•¨•©•ª•«•¬•­•°¯±¯²¯³¯´¯µ´¶¯·¯¸¯¹¯º¯»¯¼¯½¯¾¯¿¯À¯Á¯Â¯Ã¯Ä¯Å¯Æ¯Ç¯È¯ÊÉËÊÌÊÍÊÎÊÏÊÐÊÑÊÒÊÓÊÔÊÕÊÖÉ×ÖØÖÙÖÚÖÛÖÜÖÝÖÞÖßÖàÖáÖâÖãÖäÉåäæäçÉéèêèëèìèíèîèïèðèñèòèóèôèõè÷öùøüûýûþûÿûÿ                           ! " # $ &%'%(%)%,+-+.+/+0+1+2+3+4+5+6+8797:7;7=<><?<A@B@C@D@FEGEHEIEJEKETSUSVSYXZX[X\X]X^X_X`XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXzX{X|X}X~XX€XXƒ‚„‚…‚†‚‡‚ˆ‚‰‚Š‚‹‚Œ‚‚Ž‚‚‚‘‚’‚“‚”‚•‚–‚˜—™˜š˜›˜œ˜˜ž˜Ÿ˜ —¡—¢—£—¤—¥—¦—§—©¨ª¨«¨¬«­¨®¨¯¨°¨±¨²¨³¨´¨µ¨¶¨·¨¸¨¹¨»º½¼¿¾À¾Á¾Â¾ÇÆÈÆÉÆÊÆÎÍÒÑÓÑÔÑÕÑÖÑ×ÑØÑÙØÚØÛØÜØÝØÞØßØàØáØâØãØäØåØæØçØèØéØêØëØìØíØîØïØðØñØòØóØôØõØöØ÷ØøØùØúØûØüØýØþØÿØØØØØØØØØØ Ø Ø Ø Ø ØØØØØØØØØØØØØØØØØØØ Ø!Ø"Ø#Ø$Ø%Ø&Ø'Ø(Ø)Ø*Ø+Ø,Ø-Ø.Ø/Ø0Ø1Ø2Ø3Ø4Ø5Ø6Ø7Ø8Ø9Ø:Ø;Ø<Ø=Ø>Ø?Ø@Ø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Ø[Ø\Ø]Ø^Ø_Ø`Ø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Ø{Ø|Ø}Ø~ØØ€ØØ‚ØƒØ„Ø…Ø†Ø‡ØˆØ‰ØŠØ‹ØŒØØŽØØÑ‘Ñ’Ñ”“–•—•˜•™•š•›•œ••ž•Ÿ• •¡•¢•£•¤•¥•¦•§•©¨ª¨«¨¬¨­¨®¨¯¨°¨±¨²¨³¨´¨µ¨¶¨·¨¸¨¹¨º¨»¨¼¨½¨¾¨¿¨À¨Á¨Â¨Ã¨Ä¨Å¨Æ¨Ç¨È¨É¨Ê¨Ë¨Ì¨Í¨Î¨Ï¨Ð¨Ñ¨Ò¨Ó¨Ô¨Õ¨Ö¨×¨Ø¨Ù¨Ú¨Û¨Ü¨Ý¨Þ¨ß¨à¨á¨â¨ã¨ä¨å¨æ¨ç¨è¨é¨ê¨ë¨ì¨í¨î¨ï¨ð¨ñ¨ò¨ó¨ô¨õ¨ö¨÷¨ø¨ù¨ú¨û¨ü¨ý¨þ¨ÿ¨¨¨¨¨¨¨¨¨¨ ¨ ¨ ¨ ¨ ¨¨¨¨¨¨¨¨¨¨! " # $ % & ' ( ) * ^ùc^üc`ùc`ücbùcbücdùcdücfùcfüchùchücjùcjücj±dlùclücl±dnùcnücn±dpùcpücp±drùcrücr±dtùctüct±dvùcvücv±dxùcxücx±dzùczücz±dzie|ùc|üc|±d|ie~ùc~üc~±d~ie€ùc€üc€±d€ie‚ùc‚üc‚±d‚ie„ùc„üc„±d„ie†ùc†üc†±d†ieˆùcˆücˆ±dˆieŠùcŠücбdŠieŒùcŒücŒ±dŒieŽùcŽücޱdŽieŽHfùcüc±dieHf’ùc’üc’±d’ie’Hf”ùc”üc”±d”ie”Hf–ùc–üc–±d–ie–Hf˜ùc˜üc˜±d˜ie˜Hfšùcšücš±dšiešHfœùcœücœ±dœieœHfžùcžücž±džiežHf ùc üc ±d ie Hf¢ùc¢üc¢±d¢ie¢Hf¤ùc¤üc¤±d¤ie¤Hf¦ùc¦üc¦±d¦ie¦Hf¦Sg¨ùc¨üc¨±d¨ie¨Hf¨Sgªùcªücª±dªieªHfªSg¬ùc¬üc¬±d¬ie¬Hf¬Sg®ùc®üc®±d®ie®Hf®Sg°ùc°üc°±d°ie°Hf°Sg²ùc²üc²±d²ie²Hf²Sg´ùc´üc´±d´ie´Hf´Sg¶ùc¶üc¶±d¶ie¶Hf¶Sg¸ùc¸üc¸±d¸ie¸Hf¸Sgºùcºücº±dºieºHfºSg¼ùc¼üc¼±d¼ie¼Hf¼Sg¾ùc¾üc¾±d¾ie¾Hf¾SgÀùcÀücÀ±dÀieÀHfÀSgÂùcÂüc±dÂieÂHfÂSgŠhÄùcÄücıdÄieÄHfÄSgÄŠhÆùcÆücƱdÆieÆHfÆSgÆŠhÈùcÈücȱdÈieÈHfÈSgÈŠhÊùcÊücʱdÊieÊHfÊSgÊŠhÌùcÌüc̱dÌieÌHfÌSgÌŠhÎùcÎücαdÎieÎHfÎSgΊhÐùcÐücбdÐieÐHfÐSgЊhÒùcÒücÒ±dÒieÒHfÒSgÒŠhÔùcÔücÔ±dÔieÔHfÔSgÔŠhÖùcÖücÖ±dÖieÖHfÖSgÖŠhØùcØücرdØieØHfØSgØŠhÚùcÚücÚ±dÚieÚHfÚSgÚŠhÜùcÜücܱdÜieÜHfÜSgÜŠhÞùcÞücÞ±dÞieÞHfÞSgÞŠhàùcàücà±dàieàHfàSgàŠhæ²iæ(jê²iì²iî²ið²iò²iô²iø²iú²iü²iþnnn²i²i²iHpMp Hp Mp Hp MpHpMpHpMpHpMpHpMpHpMp²i²i²i ²i"²i$²i&²i(²i.ùc.üc2n4n4n6²i`!‚`*‚`1‚`(jb!‚b*‚b1‚b(jb:‚زiä²ið²iò²iö²iú²iüHšþZšHšHpHp Hp Hp MpHpMpHpMp(j²i²i(j(j²i²i(j (j ²i"²i$²i&²i&(j((j(²i*²i,²i.²i0²i4²i6²i6ž6 ž8²i8 ž8ž<²i<(j>²i@²iB²iB(jD²iD(jF²iH²iJ²iL²iLžL žq²ijƒjƒj…j…j…j‡j‡j‡j‡&j‰²i‹²i‹(jùcüc(j޲iùcüc±d(j‘ùc‘üc‘±d‘ie‘(j’m“ùc“üc“±d“ie“Hf“(j”m–mž²i²m´mÀm²iIJiƲiȲiʲi̲iвiÒ²iÔ²iÖ²iزiÚ²iܲiÞ²iæmèmêmìmîmîÉqðmòÉqòmôÉqômömømúmümþmmm m ²immmm$m&m(²i*²i,²i.²i0²i2²i4²i6²i8²iT²iV²iX²iZ²i\²i^²i`²ib²id²if²ih²ij²il²in²ip²irº–tº–tÀ–vº–vÀ–vÆ–x²iz²i|²i~m~²i€²i‚²i„è–„²i†è–†²iˆ²iвiŠè–Œ²iŒè–Žè–޲i²iè–’²i’è–”²i”è––²iš²iœ²iž²i ²i¡m¢²i©m«¶q®Hš¯Éq±Éq²²i´²i´Hš¶²i¶Hš¸²iº²iºHš¼²i¾²i¾HšÀHšÂHšÄHšÆHšÈHšÊHšÌHšÐHšÒHšÔZšÖZšØZšÚZšÜZšÞZšàZšâZšäZšæZš*m*Éq5m=(júmúÉqümüÉq(j(jmÉq"(jXyXÉqX{ZÉqZ{ZylÉqr{tÉqt{†y†švˆyê*‚nn n n n n²i²i²iPùcPücXmZm\m^²i`²ib²id²if²ihmjmlmp²ipmr²ir(jt²iv²izHpz²i|Hp|²i~Hp~²i‚m‚Éq„m„Éq†Hp†MpˆmˆÉqŒHpŒMpŽHpŽMpHpMp’Mp’Hp”Hp”Mp–Hp–Mp²²i´Éq´m¶²i¸²iºÉqºm¼{¼m¼Éq¾²iÀ²iÀ(j²iÂ(jÄùcÄücÄ(jƲiÆ(jÈùcÈücÊùcÊücʱd̲iβiÐÉqÐmÒ²iÔ²iÖ²iزiÚ²iܲiÞ*‚Þ²ià²iâ²iä²iæ²iè²ièHpê²iêHpì²iìHpî²iîHpð²iò²iòHpô²iôHpö²iø²iøHpúHpüHpü²iþ²i²i²i²i²i ²i (j²iÉqm²i(j²i²i²i(j²i(j²iêç ²i (j"²i$²i&²i(n*n*n,n,n0²i2²i4²i6²i8²i:²i<²i>²i@²iB²iD²iF²iH²iJ²iL²iN²iR²iT²iZ²i\Éq\m^Éq^m`{`m`Éqb(jb²id²ifÉqfmh(jj(jl(jlmn²ip²ir²iv²iz²i~²i€²i‚²i„²iŽ(j޲i(j²i’²i”²i¤ùc¤±d¤üc¦±d¦ùc¦üc¨²iª²iª¥õ¬²i®²i´²i¶²i¸²iº*‚º²i¼²i²i²i ²i ¥õ ²i ¥õ²i(j²i(jj²i²i²i"²i#²i&²i*²i.²i/²i2²i5²i6²i8²i<²i@²iB²iF²iJ²iL²iP²iT²iV²iV(jZ²iZ(j\²i\(j`²i`(jb²ib(jd²ih²il²in²ir²iv²ix²i|²i€²i‚²i†²iвiŒ²i²i”²i–²iš²iž²i¢²i¦²iª²i®²i²²i¶²i¸²i¼²iÀ²i²iƲiʲi̲iÌ(jвiÐ(jÔ²iÔ(jÖ²iÙ²iÚ²iÛ²iݲiÞ²iß²iß(jà²iá²iá(jä²iå²iç²iè²ié²iê²ië²iî²iò²iô²iõ²iø²iû²iü²iý²iþ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i (j ²i º– ²i ²i (j º– À– ²i ²i (j º– À– Æ– ²i ²i ²i (j è– ²i ²i (j ²i% ²i( ²i+ ²i, ùc, üc, (j. üc. (j. ùc0 ùc0 üc0 (j2 ùc2 üc2 ±d2 (j4 üc4 ±d4 (j4 ùc6 ùc6 üc6 ±d6 (j8 ùc8 üc8 ±d8 (j: ùc: üc: ±d: ie: (j< ùc< üc< ±d< ie< (j> ùc> üc> ±d> ie> (j@ ùc@ üc@ ±d@ ie@ (jB ücB ±dB ieB (jB ùcD ùcD ücD ±dD ieD HfD (jF ücF ±dF ieF HfF (jF ùcH ùcH ücH ±dH ieH HfH (jJ ùcJ ücJ ±dJ ieJ HfJ (jL ùcL ücL ±dL ieL HfL (jM mN ùcN ücN ±dN ieN HfN (jO mQ mR ²iT ²i[ ²i] ²it ²iv ²ix ²iz ²i| ²i} Zš~ ²i Zš Zšƒ Zš† ²iˆ ²i‰ ²iŠ ²i‹ ²iŒ ²iŒ (jŒ jŽ ÉqŽ { m Éq {‘ ²i’ m’ Éq’ {“ Hp“ Mp” Éq” {• ²i– m– Éq– {— Þ›— ²i™ Þ›™ ²i› ²i ²i (jŸ ²i¡ ²i£ ²i¥ ²i§ ²i© ²i­ ²i¯ ²i± ²i² ²i² (j² j³ ²i´ Éq´ {µ ²i¶ m¶ Éq¶ {· ²i¸ m¸ Éq¸ {¹ ²iº Éqº {¼ m¼ Éq¼ {Ú ²iÚ (jÚ jÜ ÉqÜ {Þ mÞ ÉqÞ {à mà Éqà {â Éqâ {ä mä Éqä { ²i (j j Éq { m Éq { m Éq { Éq { ²i (j m Éq { (j ²i (j ²i ²i (j ²i ²i ²i ²i ²i ²i ž ž6 ²iB ²iB (jD ²iD (jF ²iF (jH ²iH (jJ ²iL ²iL (jN ùcN ücN (jP ùcP ücP ±dP (jR ùcR ücR ±dR ieR (jT ùcT ücT ±dT ieT HfT (jd ùcf ùcf üch ùch üch ±dj ùcj ücj ±dj iel ùcl ücl ±dl iel Hfn ùcn ücn ±dn ien Hfn Sgp ùcp ücp ±dp iep Hfp Sgp Šhr ùcr ücr ±dr ier Hfr Sgr Šhr Ô+… ²i… (j… è–‡ ²i‡ è–‰ ²i‰ è–‹ ²i‹ (j‹ è– (j ²i è– ²i è–‘ è–‘ ²i“ Äž“ ²i“ Êž• ²i• ž• ž• è– ²i ²iM mQ ²i m‡ m‰ m‹ ²i ²i ²i‘ ²iõ m÷ mÿ m m m m m Éq m Éq m m m ²i m m mÁ mà ²iÇ ²iË ²iÍ ²iÏ ²iÏ mÑ è–Ñ ²iÑ mÓ HšÕ Hš× Hš× ²iÙ HšÛ Hš{²i}²i²i²iƒ²i…²i‡²i‰²iÓÉqÕm=²iImKm—²i§²i©m±Éq³mÉmÉÉqÍmÏm ²i%m'm)m;m;Éq=m=Éq?m?ÉqAmAÉqCmCÉqEmEÉq(j²i(j²i‘m‘Éq‘{“(j“²i•(j•²i—²i™²i™(j›²i²iŸ²i¡²i£²i¥²i§²ißm%{%Éq'Éq'{'y)Éq){)y+Éq+{+y-Éq-{-y-mm±m·Éq¹m»m½m½ÉqÙÉqßÉqß{åyåšvçyëmõ²i÷²iù²i-my²i{²im¶qƒmƒ¶q…²i…*‚Ó²iÕ²iײiÙ²iß²i·mU²iW²iY²i[²i]²i_²ia²ic²ie²ig²ii²ik²im²io²iq²is²is*‚u²iu*‚w²iw(jy²i{²i}²i²i²iƒ²i…²i‡²i‰²i‹²i²i²i‘²i“²i•m™m›m²iŸm¡²i£m¥²i§²i©m«m«Éq­m­Éq¯m±m³mµm·m¹m»m½m¿mÁmÃmÅmDziɲi˲iͲiÏmѲiÓmÕ²i×mÙmÛmÝmßmámãmåmçmé²iëmíÉqïmñmómõm÷mùmEHpE²iGHpG²iIHpI²iKHpK²iMHpM²iOHpO²iQHpQ²iSHpS²iS(jUHpU²iU(jWHpW²iYHpY²i[Hp[²i]Hp]²i_Hp_²i_(jaHpa²ia*‚cHpc²ic*‚eHpe²igHpg²iiHpi²ikHpk²imHpm²ioHpo²iqHpq²isHps²iuHpu²iƒmƒÉq…m…Éq‡m‡Éq‰m‰Éq‹Mp‹mMpmMpm‘Mp‘m“Mp“m•Mp•m—Mp—m™m™Éq›Mp›mMpmŸmŸÉq¡m¡Éq¡{£m£Éq¥m¥Éq§m§Éq§{©m©Éq©{«m«Éq«{­m­Éq­{¯Mp¯{¯y±Mp±m±Éq³{³yµmµÉq·m·Éq¹m¹Éq»m»Éq½m½Éq¿Hp¿²iÁmÁÉqÃmÃÉqÅmÅÉqÇmÉmËmËÉqÍmÍÉqÏmÏÉqïHpïMp ²i ²i ²i²i²i²i²i²i²i²i²i²i!²i#²i%²i'²i)²i+²i-²i-(j/²i1²i1(j3²i5²i7²i9²i;²i=²i?²iA²iC²iE²iG²iI²iI(jK²iM²iO²iQ²iS²iU²iU(jWùcWücYùcYücY(j[ùc[üc[(j]²i_ùc_üca²ia(jc²ie²igùcgüciùciück²im²ioùcoücqùcqücs²is(ju²iu(jw²iw(jy²iy(j{²i{(j}²i²i²iƒ²i…²i‡²i‰ùc‰üc‹ùc‹üc‹±dùcücùcüc±d‘²i“²i“*‚•²i•*‚—ùc—üc—*‚™ùc™üc™*‚›m›ÉqmÉqŸmŸÉq¡²i¡*‚£²i£*‚¥²i§²i©²i«²i«Hp­²i¯²i±²i±Hp³²iµ²i·²i¹²i»²i½²i¿²iÁ²iòiŲiÅ(jDziɲiÉ(j˲iͲiÍ(jϲiѲiÑ(jÓ²iÕ²iײiÙ²iÛ²iݲiß²iá²iá(jã²iã(jå²iç²ié²ië²ií²iï²iñ²ió²iõ²i÷m÷Éqù²iù(jû²iý²iÿm²iùcücùcücùcüc ùc üc m Éq { y ùc üc ±d (jmÉq{ùcüc(jùcüc(j²i*‚²i*‚²i²i*‚²i*‚ùcüc*‚!ùc!üc!*‚#²i#m%²i%*‚'²i)²i)*‚+²i+*‚-m-Éq-{/ùc/üc/*‚1ùc1üc1*‚3m3Éq5ùc5üc7²i9²i;m;Éq=ùc=üc?²iA²iC²iC(jE²iE(jG²iI²iKùcKücMùcMücM±dOùcOücQùcQücQ±dS²iU²iUHpW²iY²i[²i]²i_²ia²ic²ie²ig²ig(ji²ik²ik(jm²io²io(jq²is²is(ju²iu(jw²iŸ²i¡m¡Éq£²i¥*‚¥²i§²i©²i«²i­²i¯²i±²i³²iµ²i·ùc·üc¹m¹Éq»m»Éq»{½²i¿²i¿(jÁ²iÁ(jÃùcÃücÃ(jŲiÅ(jÇùcÇücÉùcÉücɱd˲iͲiÍ(jϲiÏ(jѲiÓ²iÕ²iײiÙêçÙ²iÛ²iݲiÝ*‚ß²iámáÉqã²iå²iåêçå(jç²ié²ië²ií²iï²iñ²ió²iõ²i÷²iù²iù*‚û²iý²iÿ²i²i²i²i²i ²i ²i ²i²i²iHp²i²iHp²iHp²i²iHp²i²i(j!²i#²i#(j%²i'²i'(j)²i+²i+(j-²i/²i1²i3ùc3üc5ùc5üc7²i-(j/m/Éq1²i1(j3²i3(j5²i5(j7²i7êç7(j9(j9²i;²i?²iA²iCnCn¿²iÁmòiŲi#m%m'²i)²i+m+Éq-m-Éq/m/Éq/{1(j3²i3(j5²i7²i9m9Éq;(j=(j?mAmC(jG(jGmImI(jK²i²i ²i²i²i²i²i/²i1²i3²i5²i7²i7*‚9²i9*‚;²i=²i?²iA²iA(jC²iC(jE²iG²iI²iK²iM²iO²iQ²iS²iU²iW²iY²i[²i]²i_²ia²ic²ie²ie(jg²ig(ji²ik²im²i²i²iƒ²i…²i…Hp‡²i‰²i‰Hp‹²i‹Hp²i²i‘m‘Éq“²i“(j•m•Éq—²i—(j™m™Éq™{›ùc›üc›(j²iŸ²i¡m£²i¥m§²i§(j©²i©(j«m­²i¯²i±²i³mµm·²i¹²i»m½²i¿mÁmÃmŲiÇmÇÉqÉùcÉücËmËÉqË{ÍùcÍücͱdÏmÏÉqÑùcÑücÓmÓÉqÓ{ÕùcÕücÕ±dײiÙ²iÛ²iݲißmámãmåmçmémëmí²iï²iñ²ió²iõ²i÷²iù²iû²iý²iÿ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i ²i! ²i# ²i% ²i' ²i) ²i+ ùc+ üc- ùc- üc/ ²i1 ²i3 ²i5 ²i7 ùc7 (j9 ùc9 üc9 (j; ùc; üc; ±d; (j= ²i= (j? ùc? üc? (jA ùcA ücA ±dA (jC ùcC ücC ±dE ücE ±dE ùcI ²iK ²iM ùcM ücM ±dO ùcO ücO ±dQ ùcQ ücQ ±dS ùcS ücS ±dU ùcU ücU ±dW ²iY ²i[ ²i] ²i_ ²ia ²ic ²ie ²ik ²im ²io ²iq ²is ²iu ²iw ²iy ²i{ (j} Hp} Mp‡ ²i‰ ²i‹ ²i ²i ²i‘ ²i“ ²i• ²i— ²i™ õ™ ²i› ²i› (j ²iŸ ²i¡ ²i£ ²i¥ ²i§ ²i© ²i« ²i­ ²i¯ ²i± ²i± ¥õ³ ²iµ ²i· ²i¹ ²i» ùc» üc½ ²i¿ ²iÁ ²ià ²iÅ ²iÇ ²iÉ ²iË ²iÍ ²iÍ (jÏ ²iÑ ²iÓ ²iÕ ²i× ²iÙ ²iÛ ²iÛ (jÝ ²i÷ mù m1!²i3!²i5!¥õ5!²i7!¥õ7!²iq!²is!²iu!²iw!²iy!²i{!²i}!²i!²i!²iƒ!²i‡!²i‡!(j‰!²i‰!(j‰!j‹!²i!²i!²i‘!²i“!ùc“!üc•!²i—!²i™!²i›!²i!²iŸ!²i¡!²i£!²i¥!ùc¥!üc§!²i©!²i«!²i­!²i¯!²i±!²i³!²i³!(j%ùc%üc%±d%ùc%üc%±d‘%²i“%ùc“%üc“%±d•%²i—%²i™%²i›%²i%²iŸ%²i¡%²i£%²i¥%²i§%²i©%²i«%²i­%²i¯%²i±%²i³%²iµ%m·%m¹%m»%m½%m%&²i'&²i)&²i+&²i-&²i/&²i1&²i3&²i5&²i7&²i9&²i;&²i=&²iE&²iG&²iI&²iK&²iM&²im&²io&²iq&²is&²iu&²iw&²iw&åÿy&åÿy&²i£&²i¥&²i§&²i©&²i«&²i­&²i¯&²i±&²i³&m³&Éq³&{µ&²iµ&(jµ&j·&ùc·&üc·&(j¹&m¹&Éq¹&{»&²i»&(j»&j½&ùc½&üc½&(j¿&m¿&Éq¿&{Á&²iÁ&(jÁ&jÃ&ùcÃ&ücÃ&(jÅ&mÅ&ÉqÅ&{Ç&²iÇ&(jÇ&jÉ&ùcÉ&ücÉ&(j‰(²i‹(²i(m­(²i¯(²i±(²i³(²iµ(²i·(²iá(²iã(²iå(²iù(²iû(²iý(²iÿ(ùcÿ(üc)ùc)üc)±d)ùc)üc)±d)ie)ùc)üc)±d)ie)Hf)ùc)üc )ùc )üc )±d )ùc )üc )±d )ie )ùc )üc )±d )ie )Hf)ùc)üc)ùc)üc)±d)ùc)üc)±d)ie)ùc)üc)±d)ie)HfI)²iK)²iM)²iO)²iQ)²iW)²i])²i_)²ia)²ic)²ie)²ig)²ii)²ik)²im)²io)²iq)²is)²iu)²iw)²iy)²i‰)²i‹)²i™)ùc™)üc™)±d™)ie™)Hf›)ùc›)üc›)±d›)ie›)Hf)ùc)üc)±d)ie)HfŸ)ùcŸ)ücŸ)±dŸ)ieŸ)HfŸ)Sg¡)ùc¡)üc¡)±d¡)ie¡)Hf¡)Sg£)ùc£)üc£)±d£)ie£)Hf£)Sg¥)ùc¥)üc¥)±d¥)ie¥)Hf¥)Sg§)ùc§)üc§)±d§)ie§)Hf§)Sg©)ùc©)üc©)±d©)ie©)Hf©)Sg©)Šh«)ùc«)üc«)±d«)ie«)Hf«)Sg«)Šh­)ùc­)üc­)±d­)ie­)Hf­)Sg­)Šh¯)ùc¯)üc¯)±d¯)ie¯)Hf¯)Sg¯)Šh±)ùc±)üc±)±d±)ie±)Hf±)Sg±)Šh³)²i+ùc+ùc+üc+ùc+üc+±d +ùc +üc +±d +ie +ùc +üc +±d +ie +Hf +ùc +üc +±d +ie +Hf +Sg+ùc+üc+±d+ie+Hf+Sg+Šh+ùc+üc+±d+ie+Hf+Sg+Šh+%*L)B¬(„¬(‰ä(„ä(‰â(„â(‰¬(gä(gâ(g¬(Qä(Qâ(Q˜)ä#š)ä#œ)ä#â(Ü$ž)Ù( )Ù(¢)Ù(¤)Ù(¦)Ù(¨)¬-ª)¬-¬)¬-®)¬-°)¬-L)ä27{4A|5E 5O7S<7Wi7L)[;º%„¼%„«„²)„à(à>r&„¶BîB¼B¾BŠBŒB ùB¢B–B¤BªùB°ùBžB¦ôC¨ùB’BˆBœBšBŽB´B¸Bø(„ø(‰ÎB¢„ð„¢‰ð‰à(‰ÀBè,Fô,F¾ÍFðÛFò„ø„œ„¤„º„¦„¨„¬øH„¶„r&±I¬ÔI°„®„¸„¼„¾„ÜCJÞqJê„ք؄Ȅ̄²„´„î„ö„H)qJð„æ„ô„à(ëKdëK`xLJà>L)ãPŒóe’f’Rfd [f–wf–Ÿf–»f–Ùf–g–"g–Ng<gšŠghºh<èhDiBj±Ià(ÄkL)ÑkL)lîyl+m¢>m6„ p ±I Gp Gp ±I ±I ±I ±I ±IL ±Iˆ ZrP ±I Bˆ B ±rˆ ±r Çr ±I {4 |5 7Î u ¦u ×u v 2v Fv ±Iï±IÔ „ Çx Ry yà(“y/±I;±IG±II±Ið±I” {4T{4” ±I– Gp–±IŒœ±Iž±I¾È€¾‰‚ œƒ ±I ±I Gp „… ‰‰ {4 Sô… ‰ ß ß ßëBB‘à(>mîa‘ ב ב õ‘ =’ R’ Š“ ¢“6»“ ¢“þ ±Iô ±I B Bà(²•~ ±I¢p–©U—† „Š „Œ „Ž „Ž:˜ „ Gp {4 2v ì› p ÀŸÜ¡Â ±I ˆ¥ BV)ÄkÀ „À >mÀ Ã¦Æ „Ê „ „ð ¨\ ¨ ±r „ «ö „ „ O«ô „ „Ì „ „ s¬ ¥¬P ‰Ð ¹®H)„îÑkîY°î‰ „  ¨ †± ± Ô±Ò „ [;Ö E²  ¨ ‘² ²  ¨! „ ³Ø „Ú „ B ´³H)´L)±rL)ˆ¶L)¼¶L)ð¶L)"·L)»“L)ƒ·L)¶·L)ç·L)¸L)A¸L)q¸à(ºh<âº@ià(¾NëK¢±IÒ±IÔèhÐj†̆ÐÌN>ÎCÎH…¡ÎPèhNÌäÎà(ÐÌŽèhà(Ïà( Ïà(Ì”„ÏŽÞÏÈj41ÐN¾¬¾@¾’ ÑPëK–ëK¦ Ñ¦±I– Ñ°±I²ëK†ëK$…’çÔtxÖ&Y×&µ×ŒÛ’9Ý~ÝVºhbºh(¾ÞŽØÞŽ0ßN…¬…’KàJëK(µ×J…’„ÏÈã’1äd èhÎëKÌëK¨ëK&ØÞü(_çä(_çü(±çä(±çâ(±çP…&…¢{4:Gp>Gp$Gpü(ºhü(èhü(ëKä(ºhä(èhä(ëKü(ÐÌü(Ìü(Ïü( Ïü(¾ü(à>ä(ÐÌä(Ìä(Ïä( Ïä(¾ä(à>â(8ïâ(ºhâ(èhâ(ëKâ(ÐÌâ(Ìâ(Ïâ( Ïâ(¾â(à> [f,çïŒGp,Gðxð°ðŒèð’p”pÞB ‹õL)¤öL)¨öL)Ûö´(Ûöøà>H)9øH)±I$&ú¢à>(úH)7*úé à>*¶þ8ç·°ç·¢…¸±I¶ç·+ø,à>¼Y’¹’ H)œà>’FÞYa Øç·‚‚ØB‚ ’9’LäY’Sæà>Øà>‚nà>,±IºBê±IXN%Nà>ç[fÌ’€Gp‚Gp6ç·8¸ŽLç·¶±I¶ç·H)$H)¬H)|ϨÏztWl|̨̰!H)‰¦±I¨±I®±I°±I¬ªGpÍ{4º±Iî±Iò±I²±I´±IÖ±IرI”±I˜±Iœ±Iš±Iž±I ±I¢±I¤±IA{4¬GpA±I¶±I¸±I¼±I¾±I±IÀ±IıIбIƱIÔ±IʱIαIÒ±IÚ±Ià±IÞ±IܱIè±Iì±I6±Ið±Iô±I’&2â„ä„Ü„k‰œ‰ŒGpŽGpœGpžGp ú¢Gp¤Gp¨ú¬]5ªú¾Û5dGpÎ&6Ì&6¼Gp´Gp¶Gpk±r‚Gp„GpˆGpŠGp†GpA±rGp’Gp”Gp–Gp˜GpšGpABAÆ<¦ú¬úSg?®ú²GpPa@Ž@¸GpºGpÂGpÈÂBÆÂBÄGpÊBÌBÄB¾·D¾E®(‰±ICþE$±IM÷F${4C‘GCÍG B@±IB±ID±IðZrD{4Ú±IرIb±IfGpj±InGprGpvGp€±I„±I8{48±IžœGpšœƒ£ç·±I¥±I„Gp†±IL±I¨±IªGp¬±Iî±I¸±I¼±I‚±I¦&±I¼&xS¦&{4¼&S°(±I°({4²(±I²({4®&±I®&{4¸±I’Gp–GpޱId ±IöGp°±I¼±Iþ±IGpGp¢7 ôW¢|5úšúGpœƒGpú"Gp"œƒ(GpØ{4,ú.ú2Gpœ±Iž±I:Gp¬±IıIÈGpÌúÐGpÔúܱIŠGpŒ±Iì±I\±I`±I¨Gpð…½B½ð¶,±I,{4ž±I Gp(±IÓB,|5¸œƒ¸GpºúÂdÆ 5ÂDdÌGpбI8Gpñ{4£±Iàµf¾GpØ 5æ±Iú±Iþ±I±I ÷FžÑkžm8E²<„W‘o6„*B,B.¶þ2B&„P)…pP)‘o„Ąk„P) q„„ „„¬„¬ls¾ŠsŠBŒ„¬‰¾(u.Gp4Gp2Gp"B$4w,4w8°wà(„HE²J„$„4B:„¾±IÀ„¾„$±I$Bî±I>±I@{4>{4$à>τل0„4„:„B„FB@‰>‰"„ú(„ˆ(„V±IK±IX±IZ±IM×uZ{4ME²t&{4mt&±ImgŠr&{4q÷FˆGpˆœƒs uÓ{4”˜]5 ±I¤{4¦Gpª±I®±I¤±I²±I¶i´±Iº±I¾±IÀ±I±IÆGpÊúÎGpÒúÖ±Iì±IÞ±Iä±Iâ±Iæ±Iê±Ià±Iè±I´(±I¶(±Ià(±I®(±I ±I¶&úÂ&ú¸%±Iø(±Iú(±I¨&±I2!±I6!Š!±IŒ!±IŽ!±I!±I’!Gp”!±I–!±I˜!±Iš!±Iœ!±Iž!±I !±I¢!±I¤!Gp¦!±I¨!±Iª!±I¬!±I®!±I°!±I²!Gpr!±I¼&Tš¼&fšÈ&Tšà({4p!±If)±Ih)±In)±Ip)±Iv)±Ix)±I£{4ø „ö „°(„‰„0!„²(„4!E²†!Чˆ!\¨†!¦©†!Bˆ!fš¼&ú¶%„´%„ÙQyÜ$Ó¯¥&³«+³±Y³â(±Iä(±I¬(±Iˆ(±IŠ(±Iü(±In&±Iç±I²&ú¸&ú¾&úÄ&ú®(Ûöl&„p&„®(„¢&„¤&„´&¶þ²&¶þº&¶þ¸&¶þÀ&¶þ¾&¶þÆ&¶þÄ&¶þŒ(ç·ü({4ü(|5ü(7ü(à¿ä({4ä(|5ä(7ä(࿬({4¬(|5¬(7¬(࿱I¬(˜Èä(˜Èâ({4â(|5â(7â(à¿â(˜È¬(êÌä(êÌâ(êÌXUYUxUyU 55U7U;U=U>UAUCUEU‹UUUÝÚ f 55ffUUµ5äUl> n> UUU UUUUUUU25=UP¬UeÜ> âÒæ."J $J %5&.(> -U6 5/ 5FSharp.Core.dllFSCore.resourcesFSharpSignatureData.FSharp.CoreFSharpOptimizationData.FSharp.CoreSystemObjectmscorlibMicrosoft.FSharp.CoreUnitIComparableSourceConstructFlagsEnumCompilationRepresentationFlagsSealedAttributeAttributeAbstractClassAttributeEqualityConditionalOnAttributeComparisonConditionalOnAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeAutoSerializableAttributeDefaultValueAttributeEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeStructAttributeMeasureAttributeMeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttributeFSharpInterfaceDataVersionAttributeCompilationMappingAttributeCompilationSourceNameAttributeCompilationRepresentationAttributeExperimentalAttributeCompilationArgumentCountsAttributeStructuredFormatDisplayAttributeCompilerMessageAttributeUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttributeRequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributePrivateEnvironmentFSharpChoice`2IEquatable`1IComparable`1TagsChoice1Of2Choice2Of2Choice1Of2@DebugTypeProxyChoice2Of2@DebugTypeProxyFSharpChoice`3Choice1Of3Choice2Of3Choice3Of3Choice1Of3@DebugTypeProxyChoice2Of3@DebugTypeProxyChoice3Of3@DebugTypeProxyFSharpChoice`4Choice1Of4Choice2Of4Choice3Of4Choice4Of4Choice1Of4@DebugTypeProxyChoice2Of4@DebugTypeProxyChoice3Of4@DebugTypeProxyChoice4Of4@DebugTypeProxyFSharpChoice`5Choice1Of5Choice2Of5Choice3Of5Choice4Of5Choice5Of5Choice1Of5@DebugTypeProxyChoice2Of5@DebugTypeProxyChoice3Of5@DebugTypeProxyChoice4Of5@DebugTypeProxyChoice5Of5@DebugTypeProxyFSharpChoice`6Choice1Of6Choice2Of6Choice3Of6Choice4Of6Choice5Of6Choice6Of6Choice1Of6@DebugTypeProxyChoice2Of6@DebugTypeProxyChoice3Of6@DebugTypeProxyChoice4Of6@DebugTypeProxyChoice5Of6@DebugTypeProxyChoice6Of6@DebugTypeProxyFSharpChoice`7Choice1Of7Choice2Of7Choice3Of7Choice4Of7Choice5Of7Choice6Of7Choice7Of7Choice1Of7@DebugTypeProxyChoice2Of7@DebugTypeProxyChoice3Of7@DebugTypeProxyChoice4Of7@DebugTypeProxyChoice5Of7@DebugTypeProxyChoice6Of7@DebugTypeProxyChoice7Of7@DebugTypeProxyMatchFailureExceptionExceptionFSharpTypeFuncFSharpFunc`2FuncConvertFSharpRef`1FSharpOption`1Microsoft.FSharp.CollectionsFSharpList`1System.CollectionsIEnumerableSystem.Collections.GenericIEnumerable`1ListDebugView`1LazyFailureLazy`1IObserver`1IObservable`1Microsoft.FSharp.ControlIDelegateEvent`1IEvent`2FSharpHandler`1MulticastDelegateMicrosoft.FSharp.Core.CompilerServicesGeneratedSequenceBase`1IEnumeratorIEnumerator`1CachedSeq`1IDisposableMapTree`2MapOneMapNodeMapOne@DebugTypeProxyMapNode@DebugTypeProxyFSharpMap`2ICollection`1KeyValuePair`2IDictionary`2MapDebugView`2MapDebugViewKeyValuePairSetTree`1SetNodeSetOneSetNode@DebugTypeProxySetOne@DebugTypeProxyFSharpSet`1SetDebugView`1Microsoft.FSharp.ReflectionUnionCaseInfoFSharpTypeDynamicFunction`2FSharpValueFSharpDelegateEvent`1FSharpEvent`2FSharpEvent`1Microsoft.FSharp.MathBigNatSystem.NumericsBigIntegerValueTypeMicrosoft.FSharp.Text.StructuredPrintfImplJoint_UnbreakableBreakableBroken_Unbreakable@DebugTypeProxyBreakable@DebugTypeProxyBroken@DebugTypeProxyLayoutLeafNodeAttrLeaf@DebugTypeProxyNode@DebugTypeProxyAttr@DebugTypeProxyIEnvironmentFormatOptionsPrintfFormat`4PrintfFormat`5Microsoft.FSharp.QuotationsFSharpVarTreeCombTermVarTermLambdaTermHoleTermCombTerm@DebugTypeProxyVarTerm@DebugTypeProxyLambdaTerm@DebugTypeProxyHoleTerm@DebugTypeProxyExprConstInfoNewRecordOpNewUnionCaseOpUnionCaseTestOpNewTupleOpTupleGetOpInstancePropGetOpStaticPropGetOpInstancePropSetOpStaticPropSetOpInstanceFieldGetOpStaticFieldGetOpInstanceFieldSetOpStaticFieldSetOpNewObjectOpInstanceMethodCallOpStaticMethodCallOpCoerceOpNewArrayOpNewDelegateOpTypeTestOpValueOpDefaultValueOpNewRecordOp@DebugTypeProxyNewUnionCaseOp@DebugTypeProxyUnionCaseTestOp@DebugTypeProxyNewTupleOp@DebugTypeProxyTupleGetOp@DebugTypeProxyInstancePropGetOp@DebugTypeProxyStaticPropGetOp@DebugTypeProxyInstancePropSetOp@DebugTypeProxyStaticPropSetOp@DebugTypeProxyInstanceFieldGetOp@DebugTypeProxyStaticFieldGetOp@DebugTypeProxyInstanceFieldSetOp@DebugTypeProxyStaticFieldSetOp@DebugTypeProxyNewObjectOp@DebugTypeProxyInstanceMethodCallOp@DebugTypeProxyStaticMethodCallOp@DebugTypeProxyCoerceOp@DebugTypeProxyNewArrayOp@DebugTypeProxyNewDelegateOp@DebugTypeProxyTypeTestOp@DebugTypeProxyValueOp@DebugTypeProxyDefaultValueOp@DebugTypeProxyFSharpExprFSharpExpr`1AggregateExceptionSystem.ThreadingCancellationTokenRegistrationCancellationTokenCallbackInfoCancellationTokenSourceQueue`1LinkedSubSourceFakeUnitValueTrampolineTrampolineHolderAsyncParamsAuxAsyncParams`1FSharpAsync`1FSharpAsyncBuilderClosure`1FSharpAsyncAsyncIAsyncResult`1IAsyncResultMailbox`1FSharpAsyncReplyChannel`1FSharpMailboxProcessor`1.$Assemblyinfo.FSharp.CoredllExtraTopLevelOperatorsCreateDictionary@64-2CreateDictionary@66-3CreateDictionary@51-1CreateDictionary@89-4CreateDictionary@92-5CreateDictionary@45PrintFormatToStringThenFail@130-1$Fslib-extra-pervasivesObservableModuleBasicObserver`1Map@2109-6Map@2107-5Choose@2119-3Choose@2117-2Filter@2127-2Partition@2131-1Scan@2139-5Scan@2136-4Pairwise@2160-3Pairwise@2157-2h1@2178h2@2193Merge@2208-3Merge@2172-2Split@2215-1Split@2216-2EventModuleMap@1998-4Filter@2004-1Partition@2011Choose@2017-1Scan@2024-3Pairwise@2038-1Merge@2049Merge@2050-1Split@2057WebExtensionsAsyncGetResponse@1656-1System.NetWebResponseAsyncGetResponse@1659-3AsyncCallbackAsyncGetResponse@1660-4AsyncGetResponse@1661-5AsyncGetResponse@1659-2AsyncGetResponse@1656downloadAsync@1682-3DownloadStringCompletedEventHandlerdownloadAsync@1682-4downloadAsync@1682-6downloadAsync@1682-5DownloadStringCompletedEventArgsdownloadAsync@1680-2downloadAsync@1679-1downloadAsync@1689-7downloadAsync@1689-8downloadAsync@1689-10downloadAsync@1689-9downloadAsync@1677OperationCanceledExceptionAsyncDownloadString@1694-1AsyncDownloadString@1694-3AsyncDownloadString@1694-2AsyncDownloadString@1694CommonExtensionsAsyncRead@1605AsyncRead@1605-1AsyncReadBytes@1611-1AsyncReadBytes@1613-3AsyncReadBytes@1612-2AsyncReadBytes@1616-4AsyncReadBytes@1609AsyncWrite@1622AsyncWrite@1622-1SubscribeToObservable@1641CancellationTokenOpsRunSynchronously@1008RunSynchronously@1009-1RunSynchronously@1010-2Start@1033Start@1034-1Start@1035-2StartWithContinuations@1040StartWithContinuations@1040-1StartWithContinuations@1040-2AsyncImplswitchTo@749-1switchTo@748switchToNewThread@754-1switchToNewThread@753switchToThreadPool@758-1switchToThreadPool@757delimitContinuationsWith@766-1delimitContinuationsWith@766delimitContinuationsWith@768-3delimitContinuationsWith@768-2delimitContinuationsWith@769-5delimitContinuationsWith@769-4delimitSyncContext@816protectedPrimitiveWithResync@834SuspendedAsync`1action@845ContinueWithPostOrQueue@857ResultCell`1RegisterResult@938get_AwaitResult@943AsyncBuilderImplResult`1OkErrorCanceledOk@DebugTypeProxyError@DebugTypeProxyCanceled@DebugTypeProxyqueueWorkItemWithTrampoline@528startThreadWithTrampoline@534postWithTrampoline@541startAsync@547queueAsync@551protectedPrimitive@574resultA@586args@603bindA@611-1bindA@597callA@621cont@641econt@644ccont@647tryFinallyA@635econt@657-1tryWithA@653ccont@681-1whenCancelledA@680getCancellationToken@685gettrampolineHolder@688usingA@696whileA@704forA@712-1forA@713-2forA@710sequentialA@717CancellationState$Control-ctor@136List`1handler@143toRun@168-1toRun@168doRun@172once@1103-2once@1099-1FromContinuations@1096Catch@1117-1Catch@1117-2Catch@1116Parallel@1190-2Parallel@1192-3Parallel@1194-4Parallel@1185-1Parallel@1139StartImmediate@1206StartImmediate@1206-1StartImmediate@1206-2Sleep@1221-2Sleep@1212-1Sleep@1209AwaitWaitHandle@1229cancelHandler@1263-1cancelHandler@1251AwaitWaitHandle@1272-3AwaitWaitHandle@1269-2AwaitWaitHandle@1247-1AwaitIAsyncResult@1280ReifyResult@1288AwaitAndReifyResult@1298-1AwaitAndReifyResult@1297AsyncWaitAsyncWithTimeout@1332-1AsyncWaitAsyncWithTimeout@1330-4AsyncWaitAsyncWithTimeout@1323-3AsyncWaitAsyncWithTimeout@1319-2AsyncWaitAsyncWithTimeout@1318AsyncWaitAsyncWithTimeout@1313-5registration@1352callback@1356-1callback@1355FromBeginEnd@1354-2FromBeginEnd@1337-1FromBeginEnd@1336FromBeginEnd@1379-3FromBeginEnd@1383-4FromBeginEnd@1386-5cont@1455-1econt@1456-2ccont@1457-2beginAction@1454-1AsBeginEnd@1463AsBeginEnd@1475-1AwaitEvent@1504-6AwaitEvent@1490-3AwaitEvent@1515-8AwaitEvent@1507-7AwaitEvent@1506-4AwaitEvent@1516-5AwaitEvent@1490-2AwaitEvent@1487-1AwaitEvent@1486Ignore@1527_reg@1540StartChild@1550-2StartChild@1551-3StartChild@1552-4StartChild@1537-1StartChild@1535SwitchToContext@1566-1SwitchToContext@1563h@1573-3OnCancel@1575-1OnCancel@1573-ctor@1724-1Post@1816scan@1825-2scan@1823-3scan@1820-1TryScan@1830-1TryScan@1827Scan@1834-2Scan@1833-1processFirstArrival@1845-2processFirstArrival@1841-1TryReceive@1849processFirstArrival@1860-5processFirstArrival@1856-4Receive@1864p@1912-1p@1913-3p@1913-2p@1912msg@1924msg@1939-1PostAndTryAsyncReply@1953-2PostAndTryAsyncReply@1952-1PostAndTryAsyncReply@1951PostAndTryAsyncReply@1947-4PostAndTryAsyncReply@1946-3PostAndAsyncReply@1968-1PostAndAsyncReply@1967msg@1962-2Microsoft.FSharp.NativeInteropNativePtrModule$NativeptrExprShapeModuleDerivedPatternsModuleLambdasPattern@1683ApplicationsPattern@1685SpecificCallPattern@1703SpecificCallPattern@1709-1TypePatternsModuleByteStreamLetRecursivePattern@472getRecordProperty@482System.ReflectionPropertyInfogetUnionCaseInfo@488checkArgs@585ParameterInfomkNewTupleWithType@648mkNewRecord@665mkNewUnionCase@674mkNewArray@689dlfun@796mkLetRec@818mkLetRec@820-1typesEqual@829instFormal@831methInfos@843MethodInfoargTs@854haveArgTs@860select@851argTs@875-1inst@910mkNamedTycon@1070u_tyconstSpec@1094u_tyconstSpec@1095-1u_tyconstSpec@1096-2appL@1099u_dtype@1104u_dtype@1105-1u_dtype@1105-2u_dtype@1105-3BindingEnvenvClosed@1125u_Expr@1132u_Expr@1132-1u_Expr@1132-2u_Expr@1132-3u_Expr@1135-5u_Expr@1133-4u_Expr@1137-6u_Expr@1140-7u_Expr@1143-8u_Expr@1145-9attrs@1147u_Expr@1148-11u_Expr@1148-10u_VarDecl@1152u_VarRef@1155u_RecdField@1158u_UnionCaseInfo@1161u_UnionCaseField@1165u_MethodInfoData@1173u_MethodInfoData@1173-1u_PropInfoData@1176u_PropInfoData@1176-1u_CtorInfoData@1179u_CtorInfoData@1179-1u_constSpec@1256u_constSpec@1256-1u_constSpec@1234-2u_constSpec@1235-3u_constSpec@1236-4u_constSpec@1237-5u_constSpec@1238-6u_constSpec@1239-7u_constSpec@1240-8u_constSpec@1241-9u_constSpec@1242-10u_constSpec@1243-11u_constSpec@1244-12u_constSpec@1245-13u_constSpec@1246-14u_constSpec@1247-15u_constSpec@1248-16u_constSpec@1249-17u_constSpec@1250-18u_constSpec@1251-19u_constSpec@1252-20u_constSpec@1253-21u_constSpec@1254-22u_constSpec@1255-23u_constSpec@1218-24u_constSpec@1219-25u_constSpec@1220-26u_constSpec@1221-27u_constSpec@1222-28u_constSpec@1223-29u_constSpec@1224-30u_constSpec@1225-31u_constSpec@1226-32u_constSpec@1227-33u_constSpec@1228-34u_constSpec@1229-35u_constSpec@1230-36u_constSpec@1231-37u_constSpec@1232-38u_constSpec@1233-39u_constSpec@1203-40u_constSpec@1204-41u_constSpec@1209-42u_constSpec@1210-43u_constSpec@1211-44u_constSpec@1212-45u_constSpec@1213-46u_constSpec@1214-47u_constSpec@1215-48u_constSpec@1216-49u_ReflectedDefinition@1257MethodBaseu_ReflectedDefinitions@1258fillHolesInRawExpr@1274freeInExprAcc@1284mkTyparSubst@1299Clashsubstargs@1311substituteInExpr@1327decodedTopResources@1344IEqualityComparer`1AssemblyReflectedDefinitionTableKeyReflectedDefinitionTableEntryreflectedDefinitionTable@1373registerReflectedDefinitions@1377qdataResources@1408qdataResources@1404-1data@1417-1data@1416expr@1454-1SimpleUnpickleInputStatephase2data@1044phase2data@1044-1HelpersmkRLinear@51mkLLinear@52$Quotationsexpr@202pairL@205varL@212|Lambda|_|@214-1GetLayout@267Applications@1480NewDelegate@1545PrintfModulePrintFormatToStringThen@569-1PrintFormatToStringThen@568-2PrintFormatToStringThen@570-3PrintFormatToStringThen@567kprintf_imperative@579-1kprintf_imperative@579PrintFormatToStringBuilderThen@584PrintFormatToTextWriterThen@587PrintFormatToStringThen@590-4PrintFormatToStringThenFail@593PrintFormatToStringBuilder@596PrintFormatToTextWriter@599PrintFormatLineToTextWriter@602PrintfImplPrintfInfobuildFunctionForOneArgPat@207buildFunctionForTwoArgPat@215-1buildFunctionForTwoArgPat@214buildFunctionForOneFunArgPat@221captureCoreArgs@307-1captureCoreArgs@324-2captureCoreArgs@309-3captureCoreArgs@308-4captureCoreArgs@326-5captureCoreArgs@325-6captureCoreArgs@322-7captureCoreArgs@316-8captureCoreArgs@318-9captureCoreArgs@317-10captureCoreArgs@319-11captureCoreArgs@327-12captureCoreArgs@310-13captureCoreArgs@323-14captureCoreArgs@328-15capturePrecisionArg@335-1capture1@339gprintf@509capture@535-1$PrintfDisplayBreaksitemL@664itemL@677-1PrecedenceShowModestopShort@781-1res@821objL@784-1recdAtomicTupleL@873-1recdAtomicTupleL@873-2objL@784-2project@949project2@958-1rowL@960project1@961itemLs@971reprL@996-1IComparerreprL@1001-2itemL@887-3project@896-2leafFormatter@1046squash_layout@1090output_layout@1094layout_to_string@1098ReflectUtilsTypeInfoTupleTypeFunctionTypeRecordTypeSumTypeObjectTypeTupleType@DebugTypeProxyFunctionType@DebugTypeProxyRecordType@DebugTypeProxySumType@DebugTypeProxyObjectType@DebugTypeProxyValueInfoTupleValueFunctionClosureValueRecordValueConstructorValueExceptionValueObjectValueTupleValue@DebugTypeProxyFunctionClosureValue@DebugTypeProxyRecordValue@DebugTypeProxyConstructorValue@DebugTypeProxyExceptionValue@DebugTypeProxyObjectValue@DebugTypeProxyValuepvals@356pvals@362-1LayoutOpsjoin@148join1@149join2@150join3@151op_AtAt@162op_AtAtMinus@163op_AtAtMinusMinus@164commaListL@174semiListL@175spaceListL@176sepListL@177aboveListL@183unfoldL@209$Sformatget_Default@244NumericLiteralsNumericLiteralI$ZBigNatModuleencodingmulKaratsuba@982mul@1046FFTFp$N$Eventget_Publish@36h@65-1get_Publish@67-2get_Publish@59-1h@89-2get_Publish@91-4get_Publish@83-3ImplgetInstancePropertyReader@61getUnionTypeTagNameMap@145FieldInfogetUnionTypeTagNameMap@144-1getUnionTypeTagNameMap@127-2tagField@150getUnionTagConverter@162getUnionTagConverter@163-1getUnionTagConverter@166-2fieldsPropsOfUnionCase@212fieldsPropsOfUnionCase@211-1fieldsPropsOfUnionCase@210-2getUnionCaseRecordReader@217getUnionTagReader@221getUnionTagReader@225-1getUnionTagReader@230-2getUnionTagReader@228-3getUnionCaseConstructor@255orderTupleProperties@337getTupleCtor@355reader@362-1getTupleReader@368getTupleConstructor@381fieldPropsOfRecordType@447fieldPropsOfRecordType@446-1getRecordReader@457getRecordConstructor@467$ReflectMakeTupleType@585GetUnionCases@608Make@623PreComputeRecordFieldReader@650SetModuleSetTreeModulesubset@227psubset@229psubset@229-1nextElemCont@312nextElem@317prevElemCont@323prevElem@328SetIterator`1mkIEnumerator@413-1copyToArray@472-1ofArray@491$SetFold@568Map@588-3Union@621Intersection@624MapModuleToSeq@621FindKey@624TryFindKey@627MapTreeModuleofList@287copyToArray@312MapIterator`2mkIEnumerator@360$MapSystem-Collections-Generic-IDictionary-2-get_Keys@504-1System-Collections-Generic-IDictionary-2-get_Keys@504System-Collections-Generic-IDictionary-2-get_Values@507-1System-Collections-Generic-IDictionary-2-get_Values@507System-IComparable-CompareTo@528get_Items@541Array4DModuleArray3DModule$Array3ArrayModule$ArrayListModule$ListStringModuleMap@41-2MapIndexed@48-2Collect@55$StringSeqModulemkDelayedSeq@808mkUnfoldSeq@809InitializeInfinite@821Initialize@826revamp@880revamp2@882Filter@887Map@892-1MapIndexed@897-1Map2@903Choose@908Zip@914Zip3@921Cast@926Take@967fromGenerator@1023Append@1031-1Append@1031OfArray@1076Singleton@1094Truncate@1100Pairwise@1109Scan@1120Windowed@1160result@1205cleanup@1219ReadOnly@1232GroupBy@1244-1GroupBy@1255-2GroupBy@1259-3GroupBy@1239Distinct@1265DistinctBy@1276SortBy@1286Sort@1294CountBy@1306-1CountBy@1313-2CountBy@1302TakeWhile@1420Skip@1428SkipWhile@1438RuntimeHelpersStructBox`1gcomparer@530get_Comparer@531mkSeq@541EmptyEnumerable`1Generate@555EnumerateFromFunctions@563EnumerateFromFunctions@564-1IFinallyEnumeratorFinallyEnumerable`1ConcatEnumerator`2EnumerateUsing@680EnumerateUsing@681-1mkConcatSeq@684EnumerateWhile@697-1EnumerateWhile@696EnumerateThenFinally@713-1h@720CreateEvent@722-1CreateEvent@716GeneratorStep`1_StopYieldGoto_Stop@DebugTypeProxyYield@DebugTypeProxyGoto@DebugTypeProxyGenerator`1GenerateThen`1Bind@401Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@384EnumeratorWrappingLazyGenerator`1LazyGeneratorWrappingEnumerator`1Microsoft-FSharp-Collections-Generator-Generator-1-get_Apply@494-1Microsoft-FSharp-Collections-Generator-Generator-1-get_Disposer@499cast@29EmptyEnumerator`1MapEnumeratorStateMapEnumerator`1map@109mapi@122map2@135choose@152filter@169unfold@186getCurrent@221-1upto@225generateWhileSome@261ArrayEnumerator`1Singleton`1EnumerateThenFinally@318$SeqMoveNextImpl@751ComparisonIdentityFromFunction@48IComparer`1HashIdentityStructural@23LimitedStructural@26Reference@29FromFunctions@35$CollectionsOptionModule$OptionArray2DModuleMap@110MapIndexed@115Copy@120Rebase@127$Array2Microsoft.FSharp.Primitives.BasicsArrayListStableSortImplementation$LocalLazyExtensionsOperatorsop_ComposeRight@3502op_ComposeLeft@3504op_Range@5255op_RangeStep@5271PowInteger@5417PowInteger@5417-1OperatorIntrinsicsModeBaseRangeEnumerator`1SingletonEnumerator`1ProperIntegralRangeEnumerator`2ProperFloatingRangeStepEnumerator`1RangeInt32@4707RangeInt32@4707-1RangeInt32@4707-2RangeInt64@4708RangeInt64@4708-1RangeInt64@4708-2RangeUInt64@4709RangeUInt64@4709-1RangeUInt64@4709-2RangeUInt32@4710RangeUInt32@4710-1RangeUInt32@4710-2RangeIntPtr@4711RangeIntPtr@4711-1RangeIntPtr@4711-2RangeUIntPtr@4712RangeUIntPtr@4712-1RangeUIntPtr@4712-2RangeInt16@4713RangeInt16@4713-1RangeInt16@4713-2RangeUInt16@4714RangeUInt16@4714-1RangeUInt16@4714-2RangeSByte@4715RangeSByte@4715-1RangeSByte@4715-2RangeByte@4716RangeByte@4716-1RangeByte@4716-2RangeDouble@4717RangeDouble@4717-1RangeDouble@4717-2RangeSingle@4718RangeSingle@4718-1RangeSingle@4718-2RangeGeneric@4719RangeGeneric@4719-1RangeStepGeneric@4720RangeStepGeneric@4720-1RangeChar@4722RangeChar@4722-1UnaryDynamicImpl@5018BinaryDynamicImpl@5024AbsDynamicImplTable`1-cctor@5030-61-cctor@5030-62-cctor@5031-63-cctor@5031-64-cctor@5032-65-cctor@5032-66-cctor@5033-67-cctor@5033-68-cctor@5034-69-cctor@5034-70-cctor@5035-71-cctor@5035-72-cctor@5036-73-cctor@5036-74-cctor@5037-75Decimal-cctor@5037-76AcosDynamicImplTable`1-cctor@5045-77-cctor@5045-78-cctor@5046-79-cctor@5046-80AsinDynamicImplTable`1-cctor@5054-81-cctor@5054-82-cctor@5055-83-cctor@5055-84AtanDynamicImplTable`1-cctor@5063-85-cctor@5063-86-cctor@5064-87-cctor@5064-88Atan2DynamicImplTable`2-cctor@5072-89-cctor@5072-91-cctor@5072-90-cctor@5073-92-cctor@5073-94-cctor@5073-93CeilingDynamicImplTable`1-cctor@5081-95-cctor@5081-96-cctor@5082-97-cctor@5082-98ExpDynamicImplTable`1-cctor@5090-99-cctor@5090-100-cctor@5091-101-cctor@5091-102FloorDynamicImplTable`1-cctor@5099-103-cctor@5099-104-cctor@5100-105-cctor@5100-106TruncateDynamicImplTable`1-cctor@5108-107-cctor@5108-108-cctor@5109-109-cctor@5109-110RoundDynamicImplTable`1-cctor@5117-111-cctor@5117-112-cctor@5118-113-cctor@5118-114SignDynamicImplTable`1-cctor@5126-115-cctor@5126-116-cctor@5127-117-cctor@5127-118-cctor@5128-119-cctor@5128-120-cctor@5129-121-cctor@5129-122-cctor@5130-123-cctor@5130-124-cctor@5131-125-cctor@5131-126-cctor@5132-127-cctor@5132-128-cctor@5133-129-cctor@5133-130LogDynamicImplTable`1-cctor@5141-131-cctor@5141-132-cctor@5142-133-cctor@5142-134Log10DynamicImplTable`1-cctor@5150-135-cctor@5150-136-cctor@5151-137-cctor@5151-138SqrtDynamicImplTable`2-cctor@5159-139-cctor@5159-140-cctor@5160-141-cctor@5160-142CosDynamicImplTable`1-cctor@5168-143-cctor@5168-144-cctor@5169-145-cctor@5169-146CoshDynamicImplTable`1-cctor@5177-147-cctor@5177-148-cctor@5178-149-cctor@5178-150SinDynamicImplTable`1-cctor@5186-151-cctor@5186-152-cctor@5187-153-cctor@5187-154SinhDynamicImplTable`1-cctor@5195-155-cctor@5195-156-cctor@5196-157-cctor@5196-158TanDynamicImplTable`1-cctor@5204-159-cctor@5204-160-cctor@5205-161-cctor@5205-162TanhDynamicImplTable`1-cctor@5213-163-cctor@5213-164-cctor@5214-165-cctor@5214-166PowDynamicImplTable`2-cctor@5222-167-cctor@5222-169-cctor@5222-168-cctor@5223-170-cctor@5223-172-cctor@5223-171CheckedUncheckedAttributesPrivateListHelpersListEnumerator`1OptimizedClosuresFSharpFunc`3Invoke@2927Adapt@2933FSharpFunc`4Invoke@2940-1Adapt@2948-1Adapt@2951-2FSharpFunc`5Adapt@2965-3Adapt@2970-4Adapt@2973-5Invoke@2975-2FSharpFunc`6Invoke@2981-3Adapt@2990-6Adapt@2995-7Adapt@3000-8Adapt@3003-9LanguagePrimitivesFastGenericEqualityComparer@2023FastLimitedGenericEqualityComparer@2024CharComparer@2030StringComparer@2031SByteComparer@2032Int16Comparer@2033Int32Comparer@2034Int64Comparer@2035IntPtrComparer@2036ByteComparer@2037UInt16Comparer@2038UInt32Comparer@2039UInt64Comparer@2040UIntPtrComparer@2041FloatComparer@2042Float32Comparer@2043DecimalComparer@2044FastGenericComparerTable`1-cctor@2081-cctor@2104-1GenericZeroDynamicImplTable`1GenericOneDynamicImplTable`1GenericDivideByIntDynamicImplTable`1-cctor@2350-2-cctor@2351-3-cctor@2352-4-cctor@2356-5-cctor@2355-7-cctor@2355-6AdditionDynamicImplTable`3dyn@2384-2dyn@2384-1dyn@2383-3dyn@2382-5dyn@2382-4-cctor@2387-8-cctor@2388-9-cctor@2389-10-cctor@2390-11-cctor@2391-12-cctor@2392-13-cctor@2393-14-cctor@2394-15-cctor@2395-16-cctor@2396-17-cctor@2397-18-cctor@2398-19-cctor@2399-20CheckedAdditionDynamicImplTable`3dyn@2421-8dyn@2421-7dyn@2420-9dyn@2419-11dyn@2419-10-cctor@2424-21-cctor@2425-22-cctor@2426-23-cctor@2427-24-cctor@2428-25-cctor@2429-26-cctor@2430-27-cctor@2431-28-cctor@2432-29-cctor@2433-30-cctor@2434-31-cctor@2435-32-cctor@2436-33-cctor@2437-34MultiplyDynamicImplTable`3dyn@2461-14dyn@2461-13dyn@2460-15dyn@2459-17dyn@2459-16-cctor@2464-35-cctor@2465-36-cctor@2466-37-cctor@2467-38-cctor@2468-39-cctor@2469-40-cctor@2470-41-cctor@2471-42-cctor@2472-43-cctor@2473-44-cctor@2474-45-cctor@2475-46-cctor@2476-47CheckedMultiplyDynamicImplTable`3dyn@2498-20dyn@2498-19dyn@2497-21dyn@2496-23dyn@2496-22-cctor@2501-48-cctor@2502-49-cctor@2503-50-cctor@2504-51-cctor@2505-52-cctor@2506-53-cctor@2507-54-cctor@2508-55-cctor@2509-56-cctor@2510-57-cctor@2511-58-cctor@2512-59-cctor@2513-60HashCompareGenericComparerfsEqualityComparer@1565IEqualityComparerfsEqualityComparerER@1570CountLimitedHasherUnlimitedHasherERUnlimitedHasherIntrinsicFunctionsTypeInfo`1IntrinsicOperatorsErrorStringsTupleUtilsBasicInlinedOperations$Prim-typesop_Implicit@3035op_Implicit@3037-1FromConverter@3039ToConverter@3040ToFSharpFunc@3050ToFSharpFunc@3051-1FuncFromTupled@3052FuncFromTupled@3053-1FuncFromTupled@3054-2FuncFromTupled@3055-3SR$SR$Prim-types-preludeIStructuralComparableIStructuralEquatableITupleTupleTuple`1Tuple`2Tuple`3Tuple`4Tuple`5Tuple`6Tuple`7Tuple`8FSharp.CoreSystem.Runtime.CompilerServicesDependencyAttribute.ctorLoadHintDefaultDependencyAttributeSystem.Runtime.InteropServicesComVisibleAttributeCLSCompliantAttributeAssemblyDescriptionAttributeAssemblyCompanyAttributeAssemblyTitleAttributeAssemblyCopyrightAttributeAssemblyProductAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesGetHashCodeEqualsobjSystem-IComparable-CompareToCompareTovalue__NoneFieldClosureModuleUnionCaseKindMaskNonPublicRepresentationStaticInstanceModuleSuffixUseNullAsTrueValueEventFlagsAttributevalueget_ValueAttributeUsageAttributeAttributeTargetsCheckcheckget_CheckCompiledNamecompiledNameget_CompiledNameMajorMinorReleasereleaseminormajorget_Majorget_Minorget_ReleaseSequenceNumberVariantNumbervariantNumbersourceConstructFlagssequenceNumberget_SourceConstructFlagsget_SequenceNumberget_VariantNumberSourceNamesourceNameget_SourceNameFlagsflagsget_FlagsMessagemessageget_MessageCountscountsCloneget_CountsMessageNumberIsErrorIsHiddenmessageNumberisErrorisHiddenget_MessageNumberget_IsErrorset_IsErrorvget_IsHiddenset_IsHiddenPathpathget_PathGetResourceStringnameargumentsTagCompilerGeneratedAttributeDebuggerNonUserCodeAttributeDebuggerBrowsableAttributeDebuggerBrowsableStateIsChoice2Of2IsChoice1Of2NewChoice2Of2itemget_IsChoice2Of2NewChoice1Of2get_IsChoice1Of2get_TagcompT1T2Itemget_ItemDebuggerTypeProxyAttribute_objIsChoice3Of3IsChoice2Of3IsChoice1Of3NewChoice3Of3get_IsChoice3Of3NewChoice2Of3get_IsChoice2Of3NewChoice1Of3get_IsChoice1Of3T3IsChoice4Of4IsChoice3Of4IsChoice2Of4IsChoice1Of4_tagNewChoice4Of4get_IsChoice4Of4NewChoice3Of4get_IsChoice3Of4NewChoice2Of4get_IsChoice2Of4NewChoice1Of4get_IsChoice1Of4T4IsChoice5Of5IsChoice4Of5IsChoice3Of5IsChoice2Of5IsChoice1Of5NewChoice5Of5get_IsChoice5Of5NewChoice4Of5get_IsChoice4Of5NewChoice3Of5get_IsChoice3Of5NewChoice2Of5get_IsChoice2Of5NewChoice1Of5get_IsChoice1Of5T5IsChoice6Of6IsChoice5Of6IsChoice4Of6IsChoice3Of6IsChoice2Of6IsChoice1Of6NewChoice6Of6get_IsChoice6Of6NewChoice5Of6get_IsChoice5Of6NewChoice4Of6get_IsChoice4Of6NewChoice3Of6get_IsChoice3Of6NewChoice2Of6get_IsChoice2Of6NewChoice1Of6get_IsChoice1Of6T6IsChoice7Of7IsChoice6Of7IsChoice5Of7IsChoice4Of7IsChoice3Of7IsChoice2Of7IsChoice1Of7NewChoice7Of7get_IsChoice7Of7NewChoice6Of7get_IsChoice6Of7NewChoice5Of7get_IsChoice5Of7NewChoice4Of7get_IsChoice4Of7NewChoice3Of7get_IsChoice3Of7NewChoice2Of7get_IsChoice2Of7NewChoice1Of7get_IsChoice1Of7T7Data0Data1Data2Data0@Data1@Data2@data0data1data2GetObjectDataSystem.Runtime.SerializationSerializationInfoStreamingContextinfocontextget_Data0get_Data1get_Data2StringSystem.GlobalizationCultureInfoget_CurrentUICultureSystem.ResourcesResourceManagerGetStringSpecializeTInvokefuncConverter`2op_ImplicitconverterFromConverterToConverterInvokeFastarg1arg2Varg3Warg4Xarg5YTResultAction`1ToFSharpFuncactionFuncFromTupledcontentscontents@get_contentsset_contentsset_ValueDebuggerDisplayAttributeIsNoneIsSomeSomeget_NoneGetTagget_IsNoneget_IsSomeIFormattableget_InvariantCultureIFormatProviderToStringConcatIsConsEmptyIsEmptyHeadOrDefaultTailOrNullLengthDebugDisplayHeadTailheadtail_unique_Empty.cctorConsget_IsConsget_Emptyget_IsEmptyget_HeadOrDefaultget_TailOrNullget_LengthInt32get_DebugDisplayInvalidOperationExceptionget_Headget_TailindexSystem.TextStringBuilderAppendSystem-Collections-Generic-IEnumerable`1-GetEnumeratorSystem-Collections-IEnumerable-GetEnumeratorGetEnumeratorDefaultMemberAttributeItemslListDebugViewMaxLengthcountget_ItemsnaUndefinedexnundefinedget_Exceptionget_UndefinedIsValueCreatedvalue@5512funcOrException@5517funcOrExceptionCreatefCreateFromValuexget_IsValueCreatedMonitorEnterExitOnNextOnErrorerrorOnCompletedSubscribeobserverAddHandlerhandlerRemoveHandlerTDelegateTArgsobjectmethodsenderargsBeginInvokecallbackobjectsEndInvokeresultCheckCloseLastGeneratedredirectToredirectGetFreshEnumeratorGenerateNextCloseget_CheckCloseget_LastGeneratedMoveNextImplSystem-Collections-Generic-IEnumerator`1-get_CurrentSystem-IDisposable-DisposeSystem-Collections-IEnumerator-get_CurrentSystem-Collections-IEnumerator-MoveNextNotSupportedExceptionSystem-Collections-IEnumerator-ResetDisposeMoveNextResetget_CurrentrescleanupClearMapEmptyNewMapNodeitem1item2item3item4item5NewMapOneget_MapEmptyTKeyTValueItem1Item2get_Item1get_Item2Item3Item4Item5get_Item3get_Item4get_Item5ComparerCountcomparer@388tree@392serializedDataemptycomparertreeArgumentNullExceptionOnSerializingOnSerializingAttributeOnDeserializedOnDeserializedAttributeieelementsget_Comparerget_TreeAddkeyTryPickExistsFilterForAllAdaptFoldaccFoldSectionlohizIterateMapRangebMapPartitionget_CountContainsKeyRemoveTryFindToListToArrayofListget_KeyMathAbsComputeHashCodethatSystem-Collections-Generic-IDictionary`2-get_ItemSystem-Collections-Generic-IDictionary`2-set_ItemSystem-Collections-Generic-IDictionary`2-get_KeysSystem-Collections-Generic-IDictionary`2-get_ValuesSystem-Collections-Generic-IDictionary`2-AddkSystem-Collections-Generic-IDictionary`2-ContainsKeySystem-Collections-Generic-IDictionary`2-TryGetValuerSystem-Collections-Generic-IDictionary`2-RemoveSystem-Collections-Generic-ICollection`1-AddSystem-Collections-Generic-ICollection`1-ClearSystem-Collections-Generic-ICollection`1-RemoveSystem-Collections-Generic-ICollection`1-ContainsSystem-Collections-Generic-ICollection`1-CopyToarriSystem-Collections-Generic-ICollection`1-get_IsReadOnlySystem-Collections-Generic-ICollection`1-get_CountArgumentExceptionContainsCopyToTryGetValueget_IsReadOnlyget_Keysget_Valuesset_Itemkey@value@get_keyget_valueSetEmptyNewSetOneNewSetNodeget_SetEmptyChooseMinimumElementMaximumElementcomparer@511tree@515op_Subtractionset1set2op_AdditionIntersectionUnionsetsEqualityCompareget_Chooseget_MinimumElementget_MaximumElementGetNextElementeGetPreviousElementIsSubsetOfotherSetIsSupersetOfIsProperSubsetOfIsProperSupersetOfSingletonFromArrayNameDeclaringTypetyptagnamesget_Nameget_DeclaringTypeGetFieldsMemberInfoGetCustomAttributesattributeTypeIsTupleBindingFlagsIsRecordbindingFlagsIsUnionGetTypeFromHandleRuntimeTypeHandleIsFunctionIsModuleMakeGenericTypeMakeFunctionTypedomainrangeMakeTupleTypetypesGetTupleElementstupleTypeGetFunctionElementsfunctionTypeGetRecordFieldsrecordTypeGetUnionCasesunionTypeIsExceptionRepresentationexceptionTypeGetExceptionFieldsMakeimplMakeRecordvaluesGetTypeGetValueGetRecordFieldrecordPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfoConstructorInfoget_FullNameFormatget_IsGenericTypeGetGenericTypeDefinitionInvokeMemberBinderMakeFunctionimplementationMakeTupletupleElementsGetTupleFieldstupleGetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfoMakeUnionunionCasePreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfoPreComputeUnionReaderPublishmulticastDelegateDynamicInvokeTriggerget_PublishargTypesGetMethodGetParametersget_ParameterTypeget_Delegateset_Delegateargbounddigitsbound@digits@get_boundget_digitsset_boundSignSignIntStructuredDisplayStringOneZeroIsZeroIsOneIsNegativeIsPositiveIsSmallsmallLimsmallPosTabonezerosignIntnatcreatesposnnegnget_Signget_SignIntget_Vop_Equalityyop_Inequalityop_LessThanop_GreaterThancomparennhashget_StructuredDisplayStringget_Oneget_Zeroop_UnaryNegationScalesubnnnxnyaddnnget_IsZeroget_IsOneop_MultiplyDivRemremop_Divisionop_ModulusGreatestCommonDivisorget_IsNegativeget_IsPositiveop_LessThanOrEqualop_GreaterThanOrEqualPowOverflowExceptionop_ExplicitFormatExceptionSubstringParsetextget_IsSmallFactorialop_UnaryPlusFromInt64FromInt32IsBrokenIsBreakableUnbreakableIsUnbreakable_unique_UnbreakableNewBrokenget_IsBrokenNewBreakableget_IsBreakableget_Unbreakableget_IsUnbreakableIsAttrIsNodeIsLeafNewAttrget_IsAttrNewNodeitem6get_IsNodeNewLeafget_IsLeafItem6get_Item6MaxColumnsMaxRowsGetLayoutget_MaxColumnsget_MaxRowsFloatingPointFormatAttributeProcessorFormatProviderPrintWidthPrintDepthPrintLengthPrintSizeShowPropertiesShowIEnumerableDefaultFloatingPointFormat@AttributeProcessor@FormatProvider@BindingFlags@PrintWidth@PrintDepth@PrintLength@PrintSize@ShowProperties@ShowIEnumerable@get_FloatingPointFormatget_AttributeProcessorget_FormatProviderget_BindingFlagsget_PrintWidthget_PrintDepthget_PrintLengthget_PrintSizeget_ShowPropertiesget_ShowIEnumerablefloatingPointFormatattributeProcessorformatProviderprintWidthprintDepthprintLengthprintSizeshowPropertiesshowIEnumerableget_DefaultTPrinterTStateTResidueTTupleIsMutableStamplastStampglobalsDictionary`2stampisMutable@90isMutableget_IsMutableget_Typeget_StampGlobalReferenceEqualsCompareOrdinalget_MetadataTokenget_Moduleget_AssemblyIsHoleTermIsLambdaTermIsVarTermIsCombTermNewHoleTermget_IsHoleTermNewLambdaTermget_IsLambdaTermNewVarTermget_IsVarTermNewCombTermget_IsCombTermIsDefaultValueOpIsValueOpWhileLoopOpIsWhileLoopOpForIntegerRangeLoopOpIsForIntegerRangeLoopOpTryFinallyOpIsTryFinallyOpTryWithOpIsTryWithOpIsTypeTestOpAddressSetOpIsAddressSetOpVarSetOpIsVarSetOpAddressOfOpIsAddressOfOpSequentialOpIsSequentialOpQuoteOpIsQuoteOpIsNewDelegateOpIsNewArrayOpIsCoerceOpIsStaticMethodCallOpIsInstanceMethodCallOpIsNewObjectOpIsStaticFieldSetOpIsInstanceFieldSetOpIsStaticFieldGetOpIsInstanceFieldGetOpIsStaticPropSetOpIsInstancePropSetOpIsStaticPropGetOpIsInstancePropGetOpIsTupleGetOpIsNewTupleOpIsUnionCaseTestOpIsNewUnionCaseOpIsNewRecordOpLetOpIsLetOpLetRecCombOpIsLetRecCombOpLetRecOpIsLetRecOpIfThenElseOpIsIfThenElseOpAppOpIsAppOp_unique_AppOp_unique_IfThenElseOp_unique_LetRecOp_unique_LetRecCombOp_unique_LetOp_unique_QuoteOp_unique_SequentialOp_unique_AddressOfOp_unique_VarSetOp_unique_AddressSetOp_unique_TryWithOp_unique_TryFinallyOp_unique_ForIntegerRangeLoopOp_unique_WhileLoopOpNewDefaultValueOpget_IsDefaultValueOpNewValueOpget_IsValueOpget_WhileLoopOpget_IsWhileLoopOpget_ForIntegerRangeLoopOpget_IsForIntegerRangeLoopOpget_TryFinallyOpget_IsTryFinallyOpget_TryWithOpget_IsTryWithOpNewTypeTestOpget_IsTypeTestOpget_AddressSetOpget_IsAddressSetOpget_VarSetOpget_IsVarSetOpget_AddressOfOpget_IsAddressOfOpget_SequentialOpget_IsSequentialOpget_QuoteOpget_IsQuoteOpNewNewDelegateOpget_IsNewDelegateOpNewNewArrayOpget_IsNewArrayOpNewCoerceOpget_IsCoerceOpNewStaticMethodCallOpget_IsStaticMethodCallOpNewInstanceMethodCallOpget_IsInstanceMethodCallOpNewNewObjectOpget_IsNewObjectOpNewStaticFieldSetOpget_IsStaticFieldSetOpNewInstanceFieldSetOpget_IsInstanceFieldSetOpNewStaticFieldGetOpget_IsStaticFieldGetOpNewInstanceFieldGetOpget_IsInstanceFieldGetOpNewStaticPropSetOpget_IsStaticPropSetOpNewInstancePropSetOpget_IsInstancePropSetOpNewStaticPropGetOpget_IsStaticPropGetOpNewInstancePropGetOpget_IsInstancePropGetOpNewTupleGetOpget_IsTupleGetOpNewNewTupleOpget_IsNewTupleOpNewUnionCaseTestOpget_IsUnionCaseTestOpNewNewUnionCaseOpget_IsNewUnionCaseOpNewNewRecordOpget_IsNewRecordOpget_LetOpget_IsLetOpget_LetRecCombOpget_IsLetRecCombOpget_LetRecOpget_IsLetRecOpget_IfThenElseOpget_IsIfThenElseOpget_AppOpget_IsAppOpCustomAttributestermattribsget_CustomAttributesSubstitutesubstitutionGetFreeVarsAddressOftargetAddressSetApplicationfunctionExprargumentApplicationsCallmethodInfoCoercesourceIfThenElseguardthenExprelseExprForIntegerRangeLooploopVariablestartendExprbodyFieldGetfieldInfoFieldSetLambdaparameterLetletVariableletExprLetRecursivebindingsNewObjectconstructorInfoDefaultValueexpressionTypeNewTupleNewRecordNewArrayelementTypeNewDelegatedelegateTypeparametersNewUnionCasePropertyGetpropertyindexerArgsPropertySetQuoteinnerSequentialfirstsecondTryWithfilterVarfilterBodycatchVarcatchBodyTryFinallycompensationTupleGetTypeTestUnionCaseTestVarvariableVarSetWhileLoopTryGetReflectedDefinitionmethodBaseCastDeserializequalifyingTypespliceTypesspliceExprsbytesRegisterReflectedDefinitionsassemblyresourceserializedValueGlobalVarRawget_RawInnerExceptionsSystem.Collections.ObjectModelReadOnlyCollection`1exnsListexnsAsReadOnlyget_InnerExceptionsidsource@id@get_sourceget_idregistrationoInt64registration1registration2IsCancellationRequestedCanBeCanceledget_IsCancellationRequestedget_CanBeCanceledRegisterstatetokentoken1token2IDActionStateaction@state@get_actionget_stateget_IDget_Actionget_StateTokenInternalIsCancelednextIDregistrationslinkedCtr1linkedCtr2init@128get_TokenCancelObjectDisposedExceptionInterlockedCompareExchangedontThrowIfDisposedget_InternalIsCanceledDeregisterCreateLinkedTokenSourcearraysizeDequeueSetCapacityEnqueueCopycapacityfailureCTSlinkedCTSctFakeUnit_unique_FakeUnitget_FakeUnitcontbindCountExecuteActionfirstActionIncrementBindCountSetunfaketrampolineProtectget_TrampolineecontccontblockedThreadtrampolineHoldertoken@econt@ccont@blocked@trampolineHolder@get_tokenget_econtget_ccontget_blockedget_trampolineHolderauxcont@aux@get_contget_auxNewPDelaygeneratorReturnReturnFromcomputationBindbinderUsingWhileForsequenceCombinecomputation1computation2catchHandlerDefaultCancellationTokenget_CancellationTokenCancelCheckFromContinuationsget_DefaultCancellationTokenCancelDefaultTokenCatchRunSynchronouslytimeoutcancellationTokenStartParallelcomputationsStartWithContinuationscontinuationexceptionContinuationcancellationContinuationStartImmediateSleepmillisecondsDueTimeAwaitWaitHandleWaitHandlewaitHandlemillisecondsTimeoutAwaitIAsyncResultiarReifyResultAwaitAndReifyResultresultCellAsyncWaitAsyncWithTimeoutinnerCTSFromBeginEndbeginActionendActioncancelActionTArg1TArg2TArg3AsBeginEndAwaitEventeventTDelIgnoreSwitchToNewThreadSwitchToThreadPoolStartChildSwitchToContextSynchronizationContextsyncContextOnCancelinterruptionTryCancelledIsClosedcompletedSynchronouslydisposedctsRegisterResultSetResultTryWaitForResultSynchronouslyGetResultget_IsClosedCancelAsyncCheckForNotSynchronousSystem-IAsyncResult-get_IsCompletedSystem-IAsyncResult-get_CompletedSynchronouslyGetWaitHandleSystem-IAsyncResult-get_AsyncWaitHandleSystem-IAsyncResult-get_AsyncStateget_AsyncStateget_AsyncWaitHandleget_CompletedSynchronouslyget_IsCompletedinboxCurrentQueueLengthinboxStorearrivalssyncRootsavedContpulseAutoResetEventwaitOneNoTimeoutget_inboxget_CurrentQueueLengthscanArrivalsUnsafescanArrivalsRemoveAtscanInboxreceiveFromArrivalsUnsafereceiveFromArrivalsreceiveFromInboxPostmsgTryScanScanTryReceiveReceiveensurePulsewaitOneTMsgreplyfReplyTReplyDefaultTimeoutinitialcancellationToken@1887mailboxdefaultTimeoutstartederrorEventget_DefaultTimeoutset_DefaultTimeoutadd_Errorremove_ErrorTryPostAndReplybuildMessageTimeoutExceptionPostAndReplyPostAndTryAsyncReplyget_AwaitResultPostAndAsyncReplyscannerDefaultAsyncBuilderCreateSetCreateDictionarykeyValuePairsgetArrayvalsarray2D$cont@108rowsArrmunitVar?CreateArray2DrowsPrintFormatToStringformatPrintFormatToStringThenFailPrintFormatToTextWriterSystem.IOTextWritertextWriterConsoleget_OutPrintFormatget_ErrorPrintFormatToErrorPrintFormatLineToTextWriterPrintFormatLinePrintFormatLineToErrorget_DefaultAsyncBuilderToSingleToDoubleToByteToSByteSpliceExpressionexpressionSpliceUntypedExpressionLazyPatterninputkeysarrayIndex_arg3_arg4dcDefaultAsyncBuilder@154init@mappingsucceed@2067_arg1chooserpredicatecollectorPairwiseMergesource1source2SplitsplitterTResult1TResult2stoppedNextCompletedSystem-IObserver`1-OnNextSystem-IObserver`1-OnErrorSystem-IObserver`1-OnCompletedwlastArgscompleted1completed2h1h2w1w2sourceEventevent1event2TDel1TDel2evev1ev2args2AsyncGetResponseWebRequestAsyncDownloadStringWebClientUrithisaddressWebExceptionget_StatusWebExceptionStatusNewCanceled_arg1026reqBeginGetResponsetupledArgEndGetResponsearg00Abortadd_DownloadStringCompletedeventDelegateremove_DownloadStringCompleteduserTokenSystem.ComponentModelAsyncCompletedEventArgsget_UserStateget_Cancelledget_ResultDownloadStringAsync_arg22downloadAsync_arg1027_arg1028AsyncReadStreamstreambufferoffsetAsyncReadBytesAsyncWriteAsyncWaitOneAsyncSleepdueTimeAddToObservableSubscribeToObservableBeginReadEndReadEndOfStreamException_arg1025BeginWriteEndWriteget_CurrentThreadNewOkNewErrorunitVar0asyncget_asyncswitchToctxtswitchToNewThreadswitchToThreadPooldelimitContinuationsWithdelimiter_arg1011getSyncContextresyncpostOrQueuedelimitSyncContext_arg1012protectedPrimitiveWithResyncManualResetEventresEventf@4152-15f@4152-16get_ResultAvailableEventWaitHandlesavedContsf@4152-17f@4152-18matchValueContinueImmediateContinueWithPostOrQueueResultAvailableAwaitResultGrabResultWaitOnedefaultCancellationTokenSourcedoneAget_defaultCancellationTokenSourcecommitcommitWithPossibleTimeoutWaitCallbackThreadPoolQueueUserWorkItemqueueWorkItemWithTrampolineThreadStartset_IsBackgroundstartThreadWithTrampolineSendOrPostCallbackpostWithTrampolinestartAsyncpqueueAsyncprotectedPrimitiveresultAbindAp1callAtryFinallyAfinallyFunctiontryWithAcatchFunctionwhenCancelledAgetCancellationTokengettrampolineHolderget_doneAusingAwhileAgdprogforAsequentialAp2IsCanceledIsOkget_IsCanceledget_IsOkcexnACTIVEDISPOSED_ACTIVECANCELEDDISPOSED_CANCELEDdefaultCancellationTokenSource@462doneA@691async@740f@4152-12listf@4152-13loop@252-38f@4152-14loop@397-39f@4152-19calledonce@1098finishTask@1149firstExnresultsremainingf@4152-20recordSuccess@1161f@4152-21recordFailure@1171onCancel@1340_arg1018beginAction@1453onCancel@1491-1del_arg1021f@4152-22_arg23f@4152-23scan@1819processFirstArrival@1840processFirstArrival@1855-3g_arg2_arg976timerTimerTimerCallback_arg5rwhRegisteredWaitHandleUnregistertimeOuttimedOutWaitOrTimerCallbackRegisterWaitForSingleObject_arg8_arg9_arg1013_arg1014_arg1015_arg1016ar_arg1017aiar_arg1019eventArgsCreateDelegate_arg1020_arg18ctsReferr_arg1022_arg1023h_arg1024_arg1030_arg1029_arg1031_arg1032_arg1033_arg1034_arg1035_arg1036reply_arg1038_arg1039_arg1037_arg1040asyncReplyOfNativeIntInlinedToNativeIntInlinedAddPointerInlinedGetPointerInlinedSetPointerInlinedReadPointerInlinedWritePointerInlinedStackAllocateRebuildShapeCombinationshapeloop@1786-37exprShapePatternBooleanBoolPatternStringPatternSingleSinglePatternDoubleDoublePatternCharCharPatternSByteSBytePatternByteBytePatternInt16Int16PatternUInt16UInt16PatternInt32PatternUInt32UInt32PatternInt64PatternUInt64UInt64PatternUnitPatternstripSuccessiveProjLets@1659|TupledLambda|_|lam|TupledApplication|_|LambdasPatternApplicationsPatternAndAlsoPatternOrElsePatternget_IsGenericMethodGetGenericMethodDefinitionSpecificCallPatterntemplateParameterMethodWithReflectedDefinitionPatternGetGetMethodPropertyGetterWithReflectedDefinitionPatternpropertyInfoGetSetMethodPropertySetterWithReflectedDefinitionPatternminfo1isg1gmdGetGenericArgumentstmfunTyCexprTyCty@400-12voidTyunitTyReflectedDefinitionsResourceNameBaseu_ReflectedDefinitionu_ReflectedDefinitionsdecodedTopResourcesreflectedDefinitionTableloop@313-35xs|FrontAndBack|_|esget_funTyCget_exprTyCget_ty@400-12Voidget_voidTyget_unitTyremoveVoidmkFunTy|Comb0|_|_arg996|Comb1|_|_arg997|Comb2|_|_arg998|Comb3|_|_arg999VarPatternApplicationPatternLambdaPatternQuotePatternIfThenElsePatternNewTuplePatternDefaultValuePatternNewRecordPatternNewUnionCasePatternUnionCaseTestPatternTupleGetPatternCoercePatternTypeTestPatternNewArrayPatternAddressSetPatternTryFinallyPatternTryWithPatternVarSetPatternValuePatternValueObjPatternAddressOfPatternSequentialPatternForIntegerRangeLoopPatternWhileLoopPatternPropertyGetPatternPropertySetPatternFieldGetPatternFieldSetPatternNewObjectPatternCallPattern|LetRaw|_||LetRecRaw|_|LetPattern|NLambdas|_|NewDelegatePatternLetRecursivePatterngetRecordPropertytyfieldNamegetUnionCaseInfounionCaseNamegetUnionCaseInfoFieldtypeOfAppliedLambdaget_PropertyTypeget_FieldTypeget_ReturnTypeMakeArrayTypetypeOfmkFENopmkFE0mkFE1mkFE2mkFE3checkTypesSRexpectedTypereceivedTypethreeHoleSRIsAssignableFromcheckTypesWeakSRcheckArgsparamInfosget_BaseTypeloop@596-36checkObjmembInfocheckAppliedLambdacheckBindmkVarmkQuotemkLambdavarmkTryWithe1v1e2v2e3mkApplicationv_0v_1mkNewTupleWithTypemkNewTuplemkTupleGetmkNewRecordmkNewUnionCasemkUnionCaseTestmkIfThenElsetmkNewArrayget_IsStaticmkInstanceFieldGetfinfomkStaticFieldGetmkStaticFieldSetmkInstanceFieldSetmkCtorCallciget_CanReadGetIndexParametersmkStaticPropGetpinfomkInstancePropGetget_CanWritemkStaticPropSetmkInstancePropSetmkInstanceMethodCallminfomkStaticMethodCallmkForLooplowerBoundupperBoundmkWhileLoopmkNewDelegatemkLetmkTupledApplicationmkLetRecvesget_ReflectedDefinitionsResourceNameBasetypesEqualssttinstFormaltyparEnvgetGenericArgumentstcgetNumGenericArgumentsGetMethodsbindMethodBySearchparentTnmmarityargtysrtyAmbiguousMatchExceptionParameterModifierbindMethodHelperGetPropertybindModulePropertybindModuleFunctionmkNamedTypetyargsinstbindProppropNameretTypeGetFieldbindFieldfldNameGetConstructorbindGenericCtorbindCtorsplit@934l_0l_1chopMakeGenericMethodinstMethngmethmethTypeArgsbindMeth_arg1003pinfoIsStaticdecodeFunTydecodeArrayTytysGetTypesmkNamedTycontcNameassget_mscorlibLoadu_assrefstu_NamedTypeu_tyconstSpecappLfsenvu_dtype|NoTyArgs||OneTyArg|addVarenvClosedu_Expru_VarDeclu_VarRefu_RecdFieldu_UnionCaseInfou_UnionCaseFieldu_ModuleDefnu_MethodInfoDatau_PropInfoDatau_CtorInfoDatau_MethodBaseBitConverterGetBytesu_constSpecget_u_ReflectedDefinitionget_u_ReflectedDefinitionsfillHolesInRawExpr_arg1006freeInExprAccbvs_arg1007mkTyparSubstsubstituteInExprtmsubst_arg1008ReadreadToEndget_decodedTopResourcesget_reflectedDefinitionTableregisterReflectedDefinitionsassemrnf@4152-11qdataResourcesSystem.Reflection.EmitAssemblyBuilderget_ModuleHandleModuleHandleGetManifestResourceNamesresolveMethodBaseresolveMethodBaseInstantiateddeserializelocalAssemblysplicescastposlimlenReadByteReadBytesEncodingget_UTF8ReadUtf8BytesAsStringucasemtmethInfoparamtyargTsidxtsRvarsvarntypeInstvars@varn@typeInst@get_varsget_varnget_typeInstattrfattrspatternInput_0patternInput_1patternInput_2clo2arg20_arg16NoTyArgsp_0p_1p_2p_3p_4_arg17x_0x_1_arg19_arg20_arg21_arg6_arg7_arg10_arg11_arg12_arg13_arg14_arg15arg10@arg20@bvv2expNewKeyGetKeyNewEntryGetManifestResourceStreamStartsWithStringComparisonprim_u_int32u_int32u_int64u_uniqtblu_list_auxunpickle_objuphase2bytesisistringsis@istrings@localAssembly@get_isget_istringsget_localAssemblystaticBindingFlagsstaticOrInstanceBindingFlagsinstanceBindingFlagspublicOrPrivateBindingFlagsqueryAcc@32qrvsqOneOrMoreRLinearinpqueryAcc@42-1qOneOrMoreLLinearmkRLinearmkvsmkLLinearget_staticBindingFlagsget_staticOrInstanceBindingFlagsget_instanceBindingFlagsget_publicOrPrivateBindingFlagsIsSubclassOfisDelegateTypegetDelegateInvokefunTyC@318-1exprTyC@319mscorlib@1077f@4152-10GetHashCode$cont@139-2Equals$cont@139-5GetHashCode$cont@147-3Equals$cont@147-6someL@209|Lambda|_|@214_arg995|NLambdas|_|@217Equals$cont@139-7Equals$cont@147-8l1l2PrintFormatToStringThencontinutationPrintFormatThenkprintf_imperativehandleoutputCharfmtPrintFormatToStringBuilderThenbuilderPrintFormatToTextWriterThenPrintFormatToStringBuilderbufosWriteWriteLinestaticInvokeFlagsinstanceInvokeFlagsinvariantCulturedefaultInfooutputSignAndLeftSpacewidthnumDigitsConvertToInt32ToCharoutputDigitintFormatChardigitoutputSpaceoutputZerosoutputRightSpaceleftJustifyoutputUInt64outputInt64get_staticInvokeFlagsmkFunctionValueget_IsArrayget_IsByRefget_IsPointerisNamedTypeisFunctionTypety1destFunTyget_instanceInvokeFlagsinvokeFunctionValuebuildFunctionForOneArgPatbuildFunctionForTwoArgPatgobuildFunctionForOneFunArgPatisDigitget_CharsparseFlagsparseDigitsPrecisionparsePrecisionparseSliceDotAndPrecisionparseSliceWidthAndPrecisionget_invariantCultureparseWidthAndPrecisionget_defaultInfoformatStringisNumcaptureCoreArgs@304capturePrecisionArg@332precisioncapture1UIntPtrIntPtrunboxAsInt64unboxAsUInt64IsNaNformatOne$cont@458formatOne$cont@425-1formatOne$cont@479-2xobjformatOneoutaIsSurrogatePairgo@518-3finalizerun@516initializecapture@535gprintfnumPrefixIfPosaddZerosleftJustify@numPrefixIfPos@addZeros@get_leftJustifyget_numPrefixIfPosget_addZerosset_leftJustifyset_numPrefixIfPosset_addZerosrty2inpfinpxtys2rty1funTyC@179invariantCulture@262defaultInfo@283chunkNnullLmeasureLtypeUsesSystemObjectToStringcatchExnget_chunkNf@474-9stacknextpushBreaksaving_arg988popBreak_arg989forceBreak_arg990fitLeaf@498maxWidthlayouttextWidthbreaksfit@475leafFormattersquashToaddText@557rstrsnewLine@560_arg992addL@567optsz_0z_1showLnewLine@603-1chan_arg993addL@610-1outAttributeoutLunpackConsrecdgetListValueInfoget_nullLget_measureLmakeRecordVerticalLnameXsmakePropertiesLmakeListLitemLsmakeArrayLmakeArray2LIsControlformatCharisCharcheck@727-9conv@728countNodes@780stopShort@781objL@784showModedepthLimprecIndexOfLastIndexOfobjWithReprL@787showMode@787recdAtomicTupleL@869bracketIfL@875basicLproject2@957n1n2b1b2itemL@886-2project@896-1get_RankGetLowerBoundGetLengthGetPropertiesSortreprL@878showMode@878-1repranyLIsNegativeInfinityIsPositiveInfinitysquash_layoutoutput_layoutoclayout_to_stringoptionsoutput_anywriterany_to_stringanyToStringForPrintfNewBreaksBracketIfTupleOrNotAtomicBracketIfTupleNeverBracketShowTopLevelBindingIsShowTopLevelBindingShowAllIsShowAll_unique_ShowAll_unique_ShowTopLevelBindingget_ShowTopLevelBindingget_IsShowTopLevelBindingget_ShowAllget_IsShowAll_arg994propobjLitnDepthIsDigitoptionty@400-10ty@400-11equivHeadTypesty2get_optionget_ty@400-10get_funcget_ty@400-11isListTypeIsObjectTypeUnitTypeIsUnitTypeIsSumTypeIsRecordTypeIsFunctionTypeIsTupleType_unique_UnitTypeNewObjectTypeget_IsObjectTypeget_UnitTypeget_IsUnitTypeNewSumTypeget_IsSumTypeNewRecordTypeget_IsRecordTypeNewFunctionTypeget_IsFunctionTypeNewTupleTypeget_IsTupleTypeIsObjectValueUnitValueIsUnitValueIsExceptionValueIsConstructorValueIsRecordValueIsFunctionClosureValueIsTupleValue_unique_UnitValueNewObjectValueget_IsObjectValueget_UnitValueget_IsUnitValueNewExceptionValueget_IsExceptionValueNewConstructorValueget_IsConstructorValueNewRecordValueget_IsRecordValueNewFunctionClosureValueget_IsFunctionClosureValueNewTupleValueget_IsTupleValueGetValueInfoOfObject$cont@359reprtyGetValueInfoOfObjectGetValueInfoemptyLjoinjoin1join2join3juxtLeftjuxtRightmkNodejointwordLsepLrightLleftLget_emptyLisEmptyLaboveLlayout1layout2get_joinget_join1get_join2get_join3tagAttrLmapsapply2op_HatHatop_PlusPlusop_MinusMinusop_MinusMinusMinusop_AtAtop_AtAtMinusop_AtAtMinusMinusprocess'@169taggerprefixLtagListLcommaListLlayoutssemiListLspaceListLsepListLbracketLtupleLaboveListLoptionLselectorlistLsquareBracketLbraceLconsume@201itemLprojectstopShortboundedUnfoldLmaxLengthunfoldLfolderpreemptyL@136option@282-1func@283-1nullL@656measureL@657numTymeth64methStringtab64tabParseget_numTyget_meth64get_methStringget_tab64get_tabParsef@4152-6x64FromInt64Dynamicf@4152-7FromStringDynamicFromZeroFromOnef@4152-8getParseFromStringmeth64@305methString@309tab64@312tabParse@313baseBitsbaseNbaseMaskbaseNi64baseMaski64baseMaskUbaseMask32AbaseMask32BbaseShift32BbaseMask64AbaseMask64BbaseMask64CbaseShift64BbaseShift64CboundIntboundInt64boundBasetablebitmaskarr@476-1twopowersarr@476-2twopowersI64arr@476-3minDigitsKaratsubaproductDigitsUpperSchoolBooksingleDigitForceSchoolBookproductDigitsUpperFfttwopow64pow32maxIntminIntget_baseBitsget_baseNget_baseMaskget_baseNi64get_baseMaski64get_baseMaskUget_baseMask32Aget_baseMask32Bget_baseShift32Bget_baseMask64Aget_baseMask64Bget_baseMask64Cget_baseShift64Bget_baseShift64CfindLeastBound@391nanormNget_boundIntget_boundInt64get_boundBaseembedembed64evalget_oneget_zeroshiftUpshiftDownaddPaddsubPsubisZeroisOnecheck@532-6paqaequalcheck@542-7pnqnshiftComparecheck@560-8ltgtltegteminmaxcontributeArrscalemulSchoolBookBothSmallmulSchoolBookCarrymulSchoolBookOneSmallmulSchoolBookNeitherSmallmulSchoolBookmkEncodingbigLbigKbigNget_tableselectFrom@805bitsResencodingGivenResultBitsget_bitmaskget_arr@476-1get_twopowersget_arr@476-2get_twopowersI64get_arr@476-3hi@823wordwordBitsbitsextractBitsencbiencoder@863polybiMaxencodePolydecodeResultBitsevaluate@906rboundjdecodePolyquickMulUsingFftget_minDigitsKaratsubarecMulKaratsubamulmulKaratsubaget_productDigitsUpperSchoolBookget_singleDigitForceSchoolBookget_productDigitsUpperFftscaleSubInPlacescaleAddInPlaceremoveFactor$cont@1276removeFactordivmod$cont@1355DivideByZeroExceptiondivmoddivhcfloop@1412hcfget_twopower@1429powipower@1437-1powevalFloat@1452baseftoFloatofInt32ofInt64toUInt32toUInt64route@1507degnpriorten2kcollect@1512isLeadingtoStringbuild@1557strtenIsNullOrEmptyofStringisSmallgetSmallproductR@1591factorialtwoToBigLsplitsplitsbigL@twoToBigL@k@bigK@bigN@split@splits@get_bigLget_twoToBigLget_kget_bigKget_bigNget_splitget_splitsarg00@patternInput@74primePmaxBitsInsideFpmaxTwoPowertwoPowerTablearr@476mzeromonemaxFpget_patternInput@74get_wget_pget_mget_gget_primePget_maxBitsInsideFpcomputeFFTlambdamucomputeInverseFftInPlaceuTget_maxTwoPowerget_twoPowerTableget_arr@476f@474-5vTcomputeFftPaddedPolynomialProductget_mzeroget_moneget_maxFpp64mtwoget_p64get_mtwompowmpowLw@74p@74m@74k@74g@74primeP@75twoPowerTable@194maxFp@259one@445zero@446table@775bitmask@816twopowers@817twopowersI64@818productDigitsUpperSchoolBook@989singleDigitForceSchoolBook@999productDigitsUpperFft@1003two@1427debugty@400ty@400-1instancePropertyFlagsstaticPropertyFlagsstaticFieldFlagsstaticMethodFlagsemptyObjArraytuple1ty@400-2tuple2ty@400-3tuple3ty@400-4tuple4ty@400-5tuple5ty@400-6tuple6ty@400-7tuple7ty@400-8tuple8ty@400-9maxTupletupleEncFieldget_debugget_ty@400get_ty@400-1get_instancePropertyFlagsget_staticPropertyFlagsget_staticFieldFlagsget_staticMethodFlagsgetInstancePropertyInfosgetInstancePropertyReadertryFindCompilationMappingAttributefindCompilationMappingAttributeisFieldPropertytryFindSourceConstructFlagsOfTypegetUnionTypeTagNameMap$cont@131attrGetNestedTypegetUnionTypeTagNameMapget_IsGenericTypeDefinitiongetUnionCaseTypgetUnionTagConverterisUnionTypeget@184-1isConstructorReprget@188-2unionTypeOfUnionCaseTypefieldsPropsOfUnionCasegetUnionCaseRecordReadergetUnionTagReadergetUnionTagMemberInfoisUnionCaseNullarygetUnionCaseConstructorMethodgetUnionCaseConstructorcheckUnionTypeget_emptyObjArrayget_tuple1get_ty@400-2get_tuple2get_ty@400-3get_tuple3get_ty@400-4get_tuple4get_ty@400-5get_tuple5get_ty@400-6get_tuple6get_ty@400-7get_tuple7get_ty@400-8get_tuple8get_ty@400-9isTupleTypeget_maxTupleget_tupleEncFieldmkTupleTypegetTupleTypeInfoorderTuplePropertiespropsgetTupleConstructorMethodgetTupleCtorreader@362getTupleReadergetTupleConstructorgetTupleConstructorInfoget@396-3getTupleReaderInfogetFunctionTypeInfoisModuleTypeisClosureReprisRecordTypefieldPropsOfRecordTypegetRecordReadergetRecordConstructorMethodgetRecordConstructorisExceptionReprget@492-4getTypeOfReprTypecheckExnTypecheckRecordTypeargNamecheckTupleTypef1f2get_IsLiteraltagfieldmapreadermethctorreader2maker1maker2option@40func@41emptyObjArray@265tuple1@270tuple2@271tuple3@272tuple4@273tuple5@274tuple6@275tuple7@276tuple8@277ensureType@732setelementUnionManyIntersectIntersectManyFoldBackOfListOfArrayToSeqOfSeqDifferenceIsSubsetIsSupersetIsProperSubsetIsProperSupersetMinElementMaxElementtoleranceheightget_tolerancerebalancet1t2balancepivotspliceOutSuccessorremovememiterfoldBackfoldforallexistssubsetpsubsetfilterAuxdiffAuxcountAuxunionintersectionAuxpartition1acc1acc2partitionAuxacc_0acc_1|MatchSetNode|MatchSetEmpty|nextElemContnextElemprevElemContprevElemminimumElementAuxminimumElementOptmaximumElementAuxmaximumElementOptminimumElementmaximumElementcollapseLHSmkIteratornotStartedalreadyFinishedstarted@stack@currentset_stackset_startedmoveNextmkIEnumeratorcompareStackss1s2loop@463-34toListcopyToArraytoArraymkFromEnumeratorofSeqofArrayk2get_stackget_startedFindKeyNotFoundExceptionPickFindKeyTryFindKeykvpsizeAuxfindtryFindfilter1tryPickmapmapifoldFromTo@260foldSectionloop@280-33f@142-4kvp1kvp2Length1Length2Length3Length4ZeroCreatelength1length2length3length4InitializeinitializerGetindex1index2index3index4IterateIndexedMapIndexedsourceIndextargetIndexconcatAddLengthsarrsconcatBlittgtconcatArraysarraysCollectarray1array2Iterate2Map2MapIndexed2IterateIndexed2loop@216-25loop@226-26len1Exists2loop@233-27loop@243-28ForAll2loop@249-29loop@261-30loop@300-31loop@308-32ZipZip3array3UnzipUnzip3ReverseFoldBack2Fold2foldSubRightfinscanSubRightinitStatescanSubLeftScanBackReducereductionReduceBackSortInPlaceWithSortInPlaceByprojectionSortInPlaceSortWithSortBygo@537-1FindIndexgo@549-2TryFindIndexPermuteindexMapSumSumByMinMinByMaxMaxByAverageAverageByGetSubArraystartIndexFilllistslist1list2chooseAllAcclengthinitConstAccReplicateloop@96-18loop@106-19map3auxlist3Map3mapi2auxloop@144-20loop@159-21loop@168-22foldArraySubRightscanArraySubRightfoldBack2UsingArraysfoldBack2$cont@246rest2rest1k1forall2auxexists2auxloop@360-23loop@365-24Joinsepstringscheck@78-4check@84-5mkDelayedSeqmkUnfoldSeqUnfoldget_EmptyEnumerableInitializeInfiniterevamprevamp2ie1source3TakesourcesTCollectionfromGeneratorgo@1043CompareWithTruncateloop@1131-16loop@1144-17f@474-1windowSizeWindowedoneStepTo@1189prefixenumeratorRf@4152-2f@4152-3CacheReadOnlyGroupByDistinctDistinctByCountByTakeWhileSkipSkipWhileenumpcirefzrefkeyfdictTrimExcessgroupseqlatestokmkSeqGenerateopenfcomputeclosefEnumerateFromFunctionsouterEnumcurrInnerEnumFinishtakeOuter@651currElementtakeInner@644EnumerateUsingmkConcatSeqgetCurr@689-1currstart@692-1EnumerateWhileEnumerateThenFinallyCreateEventaddHandlerremoveHandlercreateHandlergcomparerEmptyEnumerable_unique_EmptyEnumerableAppendFinallyActionrestffinishedcompensationsGetCurrentMicrosoft-FSharp-Core-CompilerServices-RuntimeHelpers-IFinallyEnumerator-AppendFinallyActionrestget_DisposerdisposeGget_ApplyNewGotoappGEnumerateFromGeneratorg@464GenerateFromEnumeratorIsGotoIsYieldStopIsStop_unique_Stopget_IsGotoNewYieldget_IsYieldget_Stopget_IsStopApplyDisposerContget_Generatorget_ContMicrosoft-FSharp-Collections-Generator-Generator`1-get_ApplyMicrosoft-FSharp-Collections-Generator-Generator`1-get_DisposerEnumeratorget_EnumeratorobjectArgnthmap2get@151choosenext@174filterunfoldgetCurrent@217uptolastOptionf@4152readAndCleargetCurr@254start@257finish@260generateWhileSomeFinishedIsFinishedInProcessIsInProcessNotStartedIsNotStarted_unique_NotStarted_unique_InProcess_unique_Finishedget_Finishedget_IsFinishedget_InProcessget_IsInProcessget_NotStartedget_IsNotStartedDoMoveNextfinalIndexactiveStructuralFromFunctionLimitedStructurallimitReferenceFromFunctionshasherequalityeqBase1Base2CreateInstanceZeroCreateBasedbase1base2CreateBasedInitializeBasedRebasesourceIndex1sourceIndex2targetIndex1targetIndex2zeroCreateUncheckedinitpermuteunstableSortInPlaceByunstableSortInPlacestableSortWithKeysstableSortInPlaceBystableSortInPlacemapToFreshConsTailconsmapiToFreshConsTailmap2ToFreshConsTailxs1xs2revAccrevappendToFreshConsTailcollectToFreshConsTailcollectfilterToFreshConsTailloop@169-14itericoncatToFreshConsTailconcatToEmptyseqToListconcatinitToFreshConsTailpartitionToFreshConsTailsconsLconsRpartitionToFreshConsTailLeftpartitionToFreshConsTailRightpartitionunzipToFreshConsTailcons1acons1bunzipunzip3ToFreshConsTailcons1cunzip3zipToFreshConsTailzipzip3ToFreshConsTailxs3zip3loop@391-15sortWithcmprevAppendmergesort2sort3$cont@430cxycyzsort3trivialstableSortInnerlastableSortcreatorLazy`1.get_IsDelayedLazy`1.get_IsForcedLazy`1.get_IsExceptionObsoleteAttributeForceSynchronizedForceDeprecatedUnsynchronizedForceDeprecatedInfinityNaNInfinitySingleNaNSingleCreateSequenceUnboxBoxRaiseFailureFailurePatternNotFailWithInvalidArgargumentNameNullArgInvalidOpRethrowReraiseFstSndRefop_ColonEqualscellop_Dereferenceop_PipeRightop_PipeRight2op_PipeRight3op_PipeLeftop_PipeLeft2op_PipeLeft3op_ComposeRightfunc1func2op_ComposeLeftop_ConcatenateDefaultArgdefaultValueop_LeftShiftshiftop_RightShiftop_BitwiseAndop_BitwiseOrop_ExclusiveOrop_LogicalNotop_AppendIncrementDecrementEnvironmentexitcodeToUInt16ToInt16ToUInt32ToIntToEnumKeyValuePatternkeyValuePairget_Infinityget_NaNget_InfinitySingleget_NaNSingleToUInt64ToInt64ToDecimalToUIntPtrToIntPtrLocklockObjectTLockTypeOfTypeDefOfSizeOfHashlimitedHashIdentityget_InTextReaderConsoleInConsoleOutConsoleErrorop_Rangefinishop_RangeStepstepTStepAcosAsinAtanAtan2CeilingExpFloorRoundLogLog10SqrtCosCoshSinSinhTanTanhop_ExponentiationPowIntegerminIntRmaxIntRget_minIntRget_maxIntRisPreciseIntgen@4632RangeInt32stopgen@4632-1RangeInt64gen@4632-2RangeUInt64gen@4632-3RangeUInt32gen@4632-4RangeIntPtrgen@4632-5RangeUIntPtrgen@4632-6RangeInt16gen@4632-7RangeUInt16gen@4632-8RangeSBytegen@4632-9RangeBytegen@4701-10RangeDoublegen@4701-11RangeSinglegen@4609-12RangeGenericgen@4632-13RangeStepGenericgen@4609-14tupledArg_0RangeCharloop@4729PowByteloop@4729-1PowSByteloop@4729-2PowInt16loop@4729-3PowUInt16loop@4729-4PowInt32loop@4729-5PowUInt32loop@4729-6PowInt64loop@4729-7PowUInt64loop@4729-8PowIntPtrloop@4729-9PowUIntPtrloop@4729-10PowSingleloop@4729-11PowDoubleloop@4729-12PowDecimalloop@4729-13PowGenericexponentGetArraySliceSetArraySliceGetArraySlice2Dstart1finish1start2finish2SetArraySlice2DGetArraySlice3Dstart3finish3SetArraySlice3DGetArraySlice4Dstart4finish4SetArraySlice4DGetStringSliceUnaryDynamicImplBinaryDynamicImplAbsDynamicAcosDynamicAsinDynamicAtanDynamicAtan2DynamicCeilingDynamicExpDynamicFloorDynamicTruncateDynamicRoundDynamicSignDynamicLogDynamicLog10DynamicSqrtDynamicCosDynamicCoshDynamicSinDynamicSinhDynamicTanDynamicTanhDynamicPowDynamicRunningCanStartCanStepCurrentmodeget_CanStartget_CanStepDoResetgetCurrentBeforeEqualStepResultupcanStarttupledArg_4clo1arg10DefaultOflengthAccGenericEqualityComparerGenericEqualityERComparerCharComparerStringComparerSByteComparerInt16ComparerInt32ComparerInt64ComparerIntPtrComparerByteComparerUInt16ComparerUInt32ComparerUInt64ComparerUIntPtrComparerFloatComparerFloat32ComparerDecimalComparerGenericEqualityGenericEqualityERGenericEqualityWithComparerGenericComparisonGenericComparisonWithComparerGenericLessThanGenericGreaterThanGenericLessOrEqualGenericGreaterOrEqualGenericMinimumGenericMaximumPhysicalEqualityPhysicalHashget_GenericComparerget_GenericEqualityComparerget_GenericEqualityERComparerGenericHashGenericLimitedHashGenericHashWithComparerFastGenericEqualityComparerFastLimitedGenericEqualityComparerget_CharComparerget_StringComparerget_SByteComparerget_Int16Comparerget_Int32Comparerget_Int64Comparerget_IntPtrComparerget_ByteComparerget_UInt16Comparerget_UInt32Comparerget_UInt64Comparerget_UIntPtrComparerget_FloatComparerget_Float32Comparerget_DecimalComparer.cctor$cont@2051.cctor$cont@2084-2.cctor$cont@2084-1FastGenericComparerfCanBeNullFastGenericComparerCanBeNullEnumOfValueTEnumEnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasureInt32WithMeasureInt16WithMeasureSByteWithMeasureInt64WithMeasureToLowerInvariantisOXBis0OXBget0OXBgetSign32getSign64parse@2184parseOctalUInt64parse@2188-1parseBinaryUInt64TrimNumberStylesParseUInt32ToLowerParseInt32ParseInt64ParseUInt64.cctor$cont@2263-3aty.cctor$cont@2287-4GenericZeroDynamicGenericOneDynamicGenericZeroGenericOneDivideByIntDynamicDivideByIntdyn@2378bty.cctor$cont@2392-5AdditionDynamicdyn@2415-6.cctor$cont@2430-6CheckedAdditionDynamicdyn@2455-12.cctor$cont@2469-7MultiplyDynamicdyn@2492-18.cctor$cont@2506-8CheckedMultiplyDynamicValueCanBeNullIfDefaultSemanticsget_ValueCanBeNullIfDefaultSemanticsDivideget_ImplNaNExceptionfsComparerfsComparerNoThrowfsEqualityComparerfsEqualityComparerERdefaultHashNodesfsUnlimitedHasherERfsUnlimitedHasherPhysicalEqualityIntrinsicPhysicalHashIntrinsicFailGenericComparisonget_NaNExceptionGenericCompare$cont@916yobjarr1GenericCompare$cont@928-1GenericComparecheck@1023lenxcheck1@1046lenx1basex0basex1basey0basey1check0@1045lenx0GetLongLengthprecheck@1060ndimscheckN@1070idxsbaseIdxcheck@1079-1get_LongLengthGenericComparisonArbArrayWithComparerGenericComparisonObjArrayWithComparerGenericComparisonByteArrayget_fsComparerget_fsComparerNoThrowGenericComparisonWithComparerIntrinsicGenericComparisonIntrinsicGenericLessThanIntrinsicGenericGreaterThanIntrinsicGenericGreaterOrEqualIntrinsicGenericLessOrEqualIntrinsicGenericEqualityByteArrayGenericEqualityInt32Arrayf32eq@1347erGenericEqualitySingleArrayfeq@1364GenericEqualityDoubleArrayGenericEqualityCharArrayGenericEqualityInt64ArrayGenericEqualityObj$cont@1416iecGenericEqualityObjcheck@1500-2check1@1518-1check0@1517-1precheck@1525-1checkN@1533-1check@1540-3GenericEqualityArbArrayGenericEqualityObjArrayget_fsEqualityComparerget_fsEqualityComparerERGenericEqualityIntrinsicGenericEqualityERIntrinsicGenericEqualityWithComparerIntrinsicget_defaultHashNodesget_fsUnlimitedHasherERget_fsUnlimitedHasherGenericHashObjArrayGenericHashByteArrayGenericHashInt32ArrayGenericHashInt64ArrayGenericHashArbArrayGenericHashParamObjGenericHashIntrinsicLimitedGenericHashIntrinsicGenericHashWithComparerIntrinsicFastHashTuple2FastHashTuple3FastHashTuple4FastHashTuple5FastEqualsTuple2FastEqualsTuple3FastEqualsTuple4FastEqualsTuple5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5throwsOnPERThrowsOnPERCompareCSystem-Collections-IComparer-ComparesznodeCountFreshSystem-Collections-IEqualityComparer-EqualsSystem-Collections-IEqualityComparer-GetHashCodeTypeNullnessSemantics_NullIsExtraValueTypeNullnessSemantics_NullTrueValueTypeNullnessSemantics_NullNotLikedTypeNullnessSemantics_NullNeverCompilationRepresentationFlags_PermitNullget_TypeNullnessSemantics_NullIsExtraValueget_TypeNullnessSemantics_NullTrueValueget_TypeNullnessSemantics_NullNotLikedget_TypeNullnessSemantics_NullNeverget_CompilationRepresentationFlags_PermitNullNullReferenceExceptionUnboxGenericUnboxFastTypeTestGenericTypeTestFastFailInitFailStaticInitCheckThisMakeDecimallowmediumhighisNegativeActivatorGetArraySetArrayGetArray2DSetArray2DGetArray2DSubsrcsrc1src2len2SetArray2DSubdstGetArray3DSetArray3DGetArray3DSubsrc3len3SetArray3DSubGetArray4DSetArray4DGetArray4DSubsrc4len4SetArray4DSubget_IsValueTypeget_TypeInfoop_Ampop_BooleanAndOrop_BooleanOrop_AddressOfop_IntegerAddressOfAddressOpNotFirstClassStringNoNegateMinValueStringInputSequenceEmptyStringInputArrayEmptyStringInputMustBeNonNegativeStringget_AddressOpNotFirstClassStringget_NoNegateMinValueStringget_InputSequenceEmptyStringget_InputArrayEmptyStringget_InputMustBeNonNegativeStringcombineTupleHashCodescodesAddressOpNotFirstClassString@596NoNegateMinValueString@597InputSequenceEmptyString@599InputArrayEmptyString@601InputMustBeNonNegativeString@603NaNException@898fsComparer@1122fsComparerNoThrow@1123fsEqualityComparer@1564fsEqualityComparerER@1569fsUnlimitedHasherER@1712fsUnlimitedHasher@1713GenericComparer@1961GenericEqualityComparer@1962GenericEqualityERComparer@1963CompareTo$cont@2875CompareTo$cont@2875-1objCastEquals$cont@2875CompareTo$cont@2884-2CompareTo$cont@2884-3GetHashCode$cont@2884Equals$cont@2884-1Equals$cont@2884-2CompareTo$cont@2894-4CompareTo$cont@2894-5GetHashCode$cont@2894-1Equals$cont@2894-3Equals$cont@2894-4copy@3186itemsresourcesmatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptymapCannotBeMutatednotComparableoutOfRangearraysHadDifferentLengthsarrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStartedmailboxProcessorPostAndReplyTimedOutmailboxProcessorPostAndAsyncReplyTimedOutcannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverloadkeyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaNcheckInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypesnotATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionTypenotAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifierprintfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifierprintfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHSQtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBoolQtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeIntQtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRangecontrolContinuationInvokedMultipleTimesget_resourcesget_matchCasesIncompleteget_resetNotSupportedget_indexOutOfBoundsget_listsHadDifferentLengthsget_inputListWasEmptyget_enumerationNotStartedget_setContainsNoElementsget_enumerationAlreadyFinishedget_findElementNotFoundget_findIndexElementNotFoundget_pickElementNotFoundget_notEnoughElementsget_inputMustBeNonNegativeget_enumerationPastIntMaxValueget_inputSequenceEmptyget_mapCannotBeMutatedget_notComparableget_outOfRangeget_arraysHadDifferentLengthsget_arrayWasEmptyget_nonZeroBasedDisallowedget_mismatchIAREndget_mismatchIARCancelget_syncContextNullget_mailboxScanTimedOutget_mailboxReceiveTimedOutget_mailboxProcessorAlreadyStartedget_mailboxProcessorPostAndReplyTimedOutget_mailboxProcessorPostAndAsyncReplyTimedOutget_cannotMutateget_notAPermutationget_failedReadEnoughBytesget_addressOpNotFirstClassget_genericCompareFail1get_notUsedForHashingget_badFormatStringget_dyInvDivByIntCoerceget_dyInvOpAddCoerceget_dyInvOpAddOverloadget_dyInvOpMultCoerceget_dyInvOpMultOverloadget_keyNotFoundget_stepCannotBeZeroget_startCannotBeNaNget_stepCannotBeNaNget_endCannotBeNaNget_checkInitget_checkStaticInitget_noNegateMinValueget_delegateExpectedget_invalidTupleTypesget_notATupleTypeget_notAFunctionTypeget_tupleIndexOutOfRangeget_objIsNullAndNoTypeget_privateUnionTypeget_notAUnionTypeget_privateExceptionTypeget_notAnExceptionTypeget_privateRecordTypeget_notARecordTypeget_nullsNotAllowedInArrayget_objIsNotARecordget_keyNotFoundAltget_firstClassUsesOfSpliceget_printfNotAFunTypeget_printfMissingFormatSpecifierget_printfHashFormatSpecifierIllegalget_printfPrecisonSpecifierIllegalget_printfWidthSpecifierIllegalget_printfSpecifierAfterIllegalget_printfBadFormatSpecifierget_printfBadIntegerForDynamicFomatterget_printfExpectedWidthget_printfExpectedPrecisionget_printfBadFloatValueget_multipleCompilationMappingsget_constructorForUnionCaseNotFoundget_moveNextNotCalledOrFinishedget_thisValueCannotBeMutatedget_optionValueWasNoneget_QmissingRecordFieldget_QmissingUnionCaseget_QinvalidCaseIndexget_QexpectedTwoTypesget_QexpectedOneTypeget_QunrecognizedMethodCallget_QunexpectedHoleget_QtmmExpectedFunctionget_QtmmInvalidParamget_QtmmFunctionArgTypeMismatchget_QtmmVarTypeNotMatchRHSget_QtmmTupleget_QtmmExprNotMatchTupleget_QtmmIncorrectArgForRecordget_QtmmIncorrectArgForUnionget_QtmmExprTypeMismatchget_QtmmTrueAndFalseMustMatchget_QtmmCondMustBeBoolget_QtmmInitArrayget_QtmmBadFieldTypeget_QtmmLowerUpperBoundMustBeIntget_QtmmLoopBodyMustBeLambdaTakingIntegerget_QtmmGuardMustBeBoolget_QtmmBodyMustBeUnitget_QtmmFunTypeNotMatchDelegateget_QtmmRawget_QtmmExprHasWrongTypeget_QincorrectNumArgsget_QincorrectTypeget_QincorrectInstanceTypeget_QinvalidFuncTypeget_QtupleLengthsDifferget_QtupleAccessOutOfRangeget_QincompatibleRecordLengthget_QunionNeedsDiffNumArgsget_QstaticWithReceiverObjectget_QnonStaticNoReceiverObjectget_QwritingGetOnlyget_QreadingSetOnlyget_QparentCannotBeNullget_QfailedToBindPropertyget_QfailedToBindFieldget_QfailedToBindConstructorget_QfailedToBindTypeInAssemblyget_QwrongNumOfTypeArgsget_QillFormedAppOrLetget_QcannotTakeAddressget_QcannotBindToMethodget_QcannotBindPropertyget_QcannotBindFunctionget_QfailedToBindAssemblyget_QtypeArgumentOutOfRangeget_controlContinuationInvokedMultipleTimesGetString1GetString2GetString3resources@4GetExecutingAssemblyotherSizesbget_Sizeitem7item8T8CombineHashCodesh3h4h5h6h7h8System.ITuple.Sizem_Item1EqualityComparer`1System.Collections.IStructuralEquatable.EqualsComparer`1System.IComparable.CompareToSystem.Collections.IStructuralComparable.CompareToSystem.Collections.IStructuralEquatable.GetHashCodeSystem.ITuple.GetHashCodeSystem.ITuple.ToStringSystem.ITuple.get_Sizem_Item2m_Item3m_Item4m_Item5m_Item6Item7m_Item7get_Item7Restm_Restget_RestTRest)matchCasesIncomplete Some( null)Length > 1000Length = #inputListWasEmpty[; ]; ... ][]unreachable <null><evaluating><unevaluated> array%mapCannotBeMutatednotComparableobj%ReadOnlyCollection.typ domain range types-nullsNotAllowedInArraytupleTypefunctionTyperecordTypeunionTypeexceptionType info recordobjIsNotARecord!notAFunctionTypeimplementation MaketupleElements tuplenotATupleType)tupleIndexOutOfRange indexunionCaseexn Invoke+signs should be +/- 1x0--inputMustBeNonNegativey;The value could not be parsed=the objects are not comparableg10 name None9Unexpected term in layout %ASequentialNewDelegate Quote Lambda_LetNewRecord%ANewUnionCaseUnionCaseTestNewTupleTupleGet Value CallPropertyGetPropertySetFieldGetFieldSet CoerceNewObjectDefaultValueNewArrayTypeTestAddressOf VarSetAddressSet'ForIntegerRangeLoopWhileLoopTryFinallyTryWithApplicationIfThenElseLetRecursivemethodInfo targetfieldInfoconstructorInfoexpressionTypeelementTypedelegateTypepropertymethodBasequalifyingType bytesassemblycheckInitDequeueqInternal error: attempting to install continuation twice=mailboxProcessorAlreadyStartedImailboxProcessorPostAndReplyTimedOut rows3arraysHadDifferentLengths valseDynamic invocation of op_Explicit is not supported-firstClassUsesOfSplice1thisValueCannotBeMutated+failedReadEnoughBytesResultCell)Unexpected no result=failed to queue user work itemOcontrolContinuationInvokedMultipleTimesAsyncResultmismatchIAREndiar#mismatchIARCancelcmultiple waiting reader continuations for mailbox'mailboxScanTimedOut-mailboxReceiveTimedOutSmailboxProcessorPostAndAsyncReplyTimedOutsDynamic invocation of OfNativeIntInlined is not supportedsDynamic invocation of ToNativeIntInlined is not supportedqDynamic invocation of AddPointerInlined is not supportedqDynamic invocation of GetPointerInlined is not supportedqDynamic invocation of SetPointerInlined is not supportedsDynamic invocation of ReadPointerInlined is not supporteduDynamic invocation of WritePointerInlined is not supportediDynamic invocation of StackAllocate is not supported%QillFormedAppOrLetQunexpectedHole expr/QunrecognizedMethodCall#templateParameter'QmissingRecordFieldfieldName#QmissingUnionCaseunionCaseName#QinvalidCaseIndex3typeOfConst: LetRecCombOp%QcannotTakeAddressreceivedType#QincorrectNumArgs args-QincorrectInstanceTypef)QtmmExpectedFunction7QtmmFunctionArgTypeMismatch!QinvalidFuncTypelet-QtmmVarTypeNotMatchRHS'QtupleLengthsDiffertupleGet+QtmmExprNotMatchTuple-QtupleAccessOutOfRangen3QincompatibleRecordLength-QunionNeedsDiffNumArgs!UnionCaseTagTest)QtmmExprTypeMismatch cond3QtmmTrueAndFalseMustMatch%QtmmCondMustBeBool3QstaticWithReceiverObject finfo5QnonStaticNoReceiverObject value!QtmmBadFieldTypeQreadingSetOnly pinfoQwritingGetOnly minfolowerBound9QtmmLowerUpperBoundMustBeIntupperBoundforKQtmmLoopBodyMustBeLambdaTakingInteger guard'QtmmGuardMustBeBool body%QtmmBodyMustBeUnitty7QtmmFunTypeNotMatchDelegate)ReflectedDefinitions'QcannotBindToMethod'QparentCannotBeNullparentT'QcannotBindProperty'QcannotBindFunction+QfailedToBindPropertypropName%QfailedToBindFieldfldName1QfailedToBindConstructortc?List.chop: not enough elts list#QexpectedTwoTypes!QexpectedOneTypetys7QfailedToBindTypeInAssembly tcName+QfailedToBindAssemblyu_tyconstSpecu_dtypeiincorrect number of arguments during deserialization u_Expru_MethodBaseAu_constSpec, unrecognized tag %d/hole index out of range fillQtmmRaw'QwrongNumOfTypeArgs tyargs)QtmmExprHasWrongTypeend of streamGByteStream.ReadBytes: end of stream!QtmmInvalidParamQtmmTuple recd3QtmmIncorrectArgForRecordsum1QtmmIncorrectArgForUnionnewArrayQtmmInitArray/QtypeArgumentOutOfRange5u_uniq: out of range, n = g!, sizeof(tab) = +u_list: found number !delegateExpected Some,#printfNotAFunType9printfMissingFormatSpecifierAprintfHashFormatSpecifierIllegal=printfPrecisonSpecifierIllegal7printfWidthSpecifierIllegal1printfBadFormatSpecifier7printfSpecifierAfterIllegalUEprintfBadIntegerForDynamicFomatter'printfBadFloatValue6UnUlUL_internal: %A has an unexpected numeric prefix '''printfExpectedWidth/printfExpectedPrecisionl true falseG%sToString count'popBreak: underflow €£d:\Depot\staging\src\fsharp\FSharp.Core\..\..\fsppack\FSharp.PowerPack\sformat.fs unpackCons Cons EmptyGList value had unexpected ValueInfo{};[||]\\\\b\"\'"...I<StructuredFormatDisplay exception: >Error: ( <fun: rank=bound1=bound2=seq <seq>+<ToString exception: unuyussuLMnan-infinityinfinity.0=?() ParseoProduct is huge, around 268435456 bits, beyond quickmul€ƒscaleSubInPlace: pre-condition did not apply, result would be -veempty stringstr7multipleCompilationMappingsAno compilation mapping attribute get_New Tags-fieldsPropsOfUnionCase Head TailTag GetTag?constructorForUnionCaseNotFound!privateUnionTypenotAUnionType#invalidTupleTypes)privateExceptionType%notAnExceptionType#privateRecordTypenotARecordTypeoutOfRangetag%objIsNullAndNoTyperebalanceMinternal error: Map.spliceOutSuccessor+setContainsNoElements+enumerationNotStarted5enumerationAlreadyFinishedPlease report error: Set iterator, unexpected stack for current€Please report error: Set iterator, unexpected stack for moveNextPlease report error: Map iterator, unexpected stack for current€Please report error: Map iterator, unexpected stack for moveNextn1n2n3n4 sourcesourceIndextargetIndex arrays array1 array2 list+keyNotFoundAltMessage array3startIndex!indexOutOfBounds1listsHadDifferentLengths list2 list3source1source2source3sourceswindowSize#notEnoughElements#resetNotSupported7moveNextNotCalledOrFinished5enumerationPastIntMaxValue%optionValueWasNone optionmsourceIndex1sourceIndex2targetIndex1targetIndex2 count1 count2notAPermutationindexMapxs2xs1 never]Dynamic invocation of Rethrow is not supported]Dynamic invocation of Reraise is not supportedoDynamic invocation of op_UnaryNegation is not supportedkDynamic invocation of op_Subtraction is not supportedeDynamic invocation of op_Division is not supportedcDynamic invocation of op_Modulus is not supportedgDynamic invocation of op_UnaryPlus is not supportedgDynamic invocation of op_LeftShift is not supportediDynamic invocation of op_RightShift is not supportediDynamic invocation of op_BitwiseAnd is not supportedgDynamic invocation of op_BitwiseOr is not supportedkDynamic invocation of op_ExclusiveOr is not supportediDynamic invocation of op_LogicalNot is not supportedKSystem.Environment.Exit did not exit![Dynamic invocation of ToByte is not supported]Dynamic invocation of ToSByte is not supported_Dynamic invocation of ToUInt16 is not supported]Dynamic invocation of ToInt16 is not supported_Dynamic invocation of ToUInt32 is not supported]Dynamic invocation of ToInt32 is not supported_Dynamic invocation of ToUInt64 is not supported]Dynamic invocation of ToInt64 is not supported_Dynamic invocation of ToSingle is not supported_Dynamic invocation of ToDouble is not supportedaDynamic invocation of ToDecimal is not supportedaDynamic invocation of ToUIntPtr is not supported_Dynamic invocation of ToIntPtr is not supported[Dynamic invocation of ToChar is not supported!stepCannotBeZero step!startCannotBeNaNstepCannotBeNaNendCannotBeNaNAbs Acos Asin Atan Atan2CeilingExp FloorTruncate Round SignLog Log10 SqrtCos CoshSin SinhTan TanhPoweDynamic invocation of op_Multiply is not supportedYDynamic invocation of ToInt is not supportedbadFormatString ZeroOneop_Addition%dyInvOpAddOverload!dyInvOpAddCoerceop_Multiply'dyInvOpMultOverload#dyInvOpMultCoerceDivideByInt'dyInvDivByIntCoerce'genericCompareFail1#notUsedForHashingcheckStaticInitgDynamic invocation of op_AddressOf is not supporteduDynamic invocation of op_IntegerAddressOf is not supported-addressOpNotFirstClass!noNegateMinValue%inputSequenceEmptyarrayWasEmptyoa lazy value was accessed during its own initialization'findElementNotFound1findIndexElementNotFound'pickElementNotFound-nonZeroBasedDisallowedsyncContextNullcannotMutatekeyNotFoundQincorrectType FSCoreIArgumentException_TupleIncorrectType other, YArgumentException_TupleLastArgumentNotATupleóùJLÚô§EƒóùJ·z\V4à‰ €¼ €¼ €¼€Ô€Ô €Ô€ô€ô €ôLLL„„„ Ô Ô Ø Ø à à%øü1 ‚ 9=A %=‚49‚x ‚À‚Ì‚ôÌŽ Ì=Ž =Ìô„0øÌØÌø”ÌÌØ Ì̃äMÌ”ÌQI ÌIM Ì̃äM ÌUÌÌÌYU ÌU&Ì”ÐÌÌÌ] Ì5ƒä ̃äÌ”ØQIÌIÌ Ìƒä̃ä̃ä ÌI ̃Р̃РÌ]ƒÐ ̃Ð̃àƒÐ’XƒØÌƒÐƒÐ̃àƒÐÌ…„… Ìƒàƒ¼ƒÐÌƒàƒØƒÐÌ1ƒä̃äÌaƒÀ$’Xà̃ÀàÌ’XàÌàÌƒà€¼ƒÐ’Xƒä̃àƒÐ Ì Ì]̃àƒÐ ̃äÌ… ƒä ̃ä̃؃ä̃¼ƒäÌ”ÌQI ÌI ̃¸Ìƒì Ì̃ä̃¼ƒäƒä̃äƒä̃¼ƒä5̃ä5̃äØÌƒäØÌƒäØÌ؃ä̃äÌ…ƒäØÌƒ¬Ø”Ìà‚ȃ¬Ìƒ¬Ø”̃¬àƒ¬)̃¬Ø”ÐØƒ¬àeàƒ¬Ìƒ¬Ø”̂ȃ¬Ìi Ì‚T ’Xmƒ¬ ’Xeƒ¬ ’Xiƒ¬ ̃¬ ’Xmee̔̂ȃ¬Ì”̂ȃ¬ƒ¬ ’XeeÌeÌqÌÌÌeee ÌmeÌeÌàeeÌÌÌÌeẻäÌÌeẻäàÌÌeẻä̈hƒ¬Ì‰äà̈hƒ¬ÌÌeàeÌ̈hƒ¬ƒ¬ ̈hƒ¬ ̈h‚ÈÌàeiÌàe‚TÌÌàe‚ôÌàe‚ổä”Ìühƒ¬Ì‰äà”Ìühƒ¬ ̃¬ƒ¬’X‚L‚ȃ¬‚L‚ÈÌ‚ÈØƒ¬ y”Ì}‰¼y‰¼Ì”Ìühƒ¬#Ì”Ìà”Ìühƒ¬Ì$Ì”Ìà”Ìühƒ¬ ̉ä̉äà ’X ’X ̃¬‚˜’X‚˜‚˜‚˜ ̂Ȃ˜ Ì‚˜Ì”̃¬àƒ¬ƒ¬ÌÌ'Ì”ÔÌÌÌ(Ì”ÔÌÌÌÌÌ ’Xe’dàe̔̂˜‚˜Ì”ÌØ‚˜‚˜ŠÐÌ ’dŠÌ‚˜ Ì‚˜Ì”Ì‚˜ÌØ”Ì Ì‚˜ÌØ”ÌÌØ”ÌÌi”ÌØ‚˜Ì”̔̂˜ÌØ”ÌÌÌ’Xi”Ì Ì‚˜‚˜’dà”Ì’X‚p‚p‚p ‚‚‚ ’X€…€… Ì€…ÌqØ”ÌÌ”ÌØÌ ’XiiÌÌÌÌi’X”Ì‚T ÌÌØØ’X‚4‚4 ’X’X‚4‚4’X‚L‚L‚LÌ=”ÌÌ”ÌØ ’X‚”Ì‚ ’X 1=Ì= Ì%Ì=’X==Ì=‚0 ’X Ì1Ì11Ì11’X111’X”Ì’X”̔Ђ̎€‚”Ì‚ÌØ”ÌÌ=Ž a#Ì=Ž a”Ì%Ì%”Ì%Ì=Ž ”ÌÌ%”Ìy yŽ  1%Ì1% ’XŽ`Ž€ÌŽ`Ž´€‰ ’X Ì ’Xhh’Xt%’X t % ’X t % ’X t % ’Xt%’Xt%’Xt%’Xt%’Xt%’Xt%t x % t x % tt% ’XÌ ÌÌÌÌ ÌÌ Ì Ì€€’X ÌÌ’X Ì ÌÌ Ì Ì€ÌÌ ÌÌÌÌÌÌÌÌ ’dÌÌÌÌ’t%ÌÌÌÌÌ’ˆ€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€ ’X€€’X  ’X  ’XÌÌÌ’X’X€ $€”$RSA1iç+‘ŠÐ7ËXNnL_´,‘0§UÄäx&¹“ 77ǯWö®r޳Œ}D ô  €™ FSharp.Core €™ Microsoft.FSharp@;Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsMicrosoft.FSharp.Core!Microsoft.FSharp.CollectionsMicrosoft.FSharp.Control FSharp.Core.dllMicrosoft Corporation4/© Microsoft Corporation. All rights reserved.Microsoft® F# €Á        (  €ÍT AllowMultiple@T AllowMultipleT AllowMultiple€T AllowMultiple@T AllowMultipleT AllowMultiple T AllowMultipleàT AllowMultiple( ÜT AllowMultipleT AllowMultiple@T AllowMultipleT AllowMultiple( T AllowMultiple(         ÿT AllowMultiple(  (%   %  ÀT AllowMultipleT AllowMultipleT AllowMultiple €á €È  €¼  €Ä  €¼  €¼ €¼ €Ä€ €È  E €Ä€Ä€€È€È€¼€¼ €¼K €¼€Ä€Ä€È€È€¼€¼ €€Ä€È €‘ €‘B €Ä€Ä€È€È€¼€¼ €¼FSharpChoice`2(  eC>Microsoft.FSharp.Core.FSharpChoice`2+Choice1Of2@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2@DebugTypeProxy €Ì €Ä €Ð €È €ä €Ô  €à€Ô €Ü€Ô €Ô €Ô €Ü €à €ä v€Ü€Ü€€à€à€ä€ä€Ô€Ô€Ô €Ô~€Ô€Ü€Ü€à€à€ä€ä€Ô€Ô€Ô5€Ü€à€ä€Ôs€Ü€Ü€à€à€ä€ä€Ô€Ô€Ô €ÔFSharpChoice`3C>Microsoft.FSharp.Core.FSharpChoice`3+Choice1Of3@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`3+Choice2Of3@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`3+Choice3Of3@DebugTypeProxy €è €Ü €ì €à €ð €ä   €ô  €ô €ô €ü€ô€ü €ü€ü€ €ô€ô€‰€ô€ü€ü? €ü|€ü€ü €ô€ôFSharpChoice`4C>Microsoft.FSharp.Core.FSharpChoice`4+Choice1Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice2Of4@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`4+Choice3Of4@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`4+Choice4Of4@DebugTypeProxy   €ü      4  0,($  $(,04X $(,04 €®$$((,,0044 FSharpChoice`5C>Microsoft.FSharp.Core.FSharpChoice`5+Choice1Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice2Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice3Of5@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`5+Choice4Of5@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`5+Choice5Of5@DebugTypeProxy8 $< (@ ,D 0H 4h L dL`L\LXLTL  LLL LFSharpChoice`6C>Microsoft.FSharp.Core.FSharpChoice`6+Choice1Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice2Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice3Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice4Of6@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`6+Choice5Of6@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`6+Choice6Of6@DebugTypeProxyTl TXp X\t \`x `d| dh€ h¤ „  „œ„˜„”„„Œ„  „„„ „„FSharpChoice`7C>Microsoft.FSharp.Core.FSharpChoice`7+Choice1Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice2Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice3Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice4Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice5Of7@DebugTypeProxyC>Microsoft.FSharp.Core.FSharpChoice`7+Choice6Of7@DebugTypeProxy( C>Microsoft.FSharp.Core.FSharpChoice`7+Choice7Of7@DebugTypeProxyŒ¨ Œ¬ ”° ”˜´ ˜œ¸ œ ¼  ¤À ¤     €é€í€¤.€„System.Security.Permissions.SecurityPermissionAttribute, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089TSerializationFormatter Ä€õ €õ 0  ”„ €ýÌ€ý ”ˆ Ì €ý €ýÌ ”Œ ” ’X ’X ÌÌ Ì’X’XÌÌ’d’XÌ ’d ’XÌ ÌÌÌÌ @’d’d’XÌ’XÌ"ÌÌÌ’t’dÌ’XÌÌ’t ’dÌ Ì’XÌÌ ÌÌÌÌ z’t’t’dÌ’dÌ’XÌÌ’XÌÌ+ÌÌÌÌ’ˆ’tÌ’dÌÌ!’XÌÌÌ’ˆ ’tÌ Ì’dÌÌ  ’XÌÌÌ %ÌÌÌÌÌ €Æ’ˆ’ˆ’tÌ’tÌ’dÌÌ’dÌÌ’XÌÌÌ’XÌÌÌ4ÌÌÌÌÌ”” Ì ”˜Ì€ý ”œ Ì”Ì#ÌÌÌ”Ì ”  Ì”Ð,ÌÌÌ̔Д¤ Ì”Ô5ÌÌÌÌ̔Ԕ¨ Ì”Ø>ÌÌÌÌÌÌ”ØÔ € ÔÔ Ô Ô Ô FSharpRef`1 {contents} ØØ Ø ØØ Ø Ø' ØØ€ØØ Ø+ ØØØØØ Ø Ø Ø      $ØØØØ ØFSharpOption`1 Some({Value}) à (à(àà ààà à à( àà€àà à, ààààà à+ ààààààà à à  , ààà  à’P à 1 - Item FSharpList`11,Microsoft.FSharp.Collections.ListDebugView`1{DebugDisplay,nq}(è 0à àààà(ìì  ìð ðÌ ð Ì# ììÌÌ  ìì 5ô  IQ IFSharpHandler`1‚ % ‚%1Žì ‚1#‚%1‚‚)) Ì‚  Ì% ‚ ‚ ‚‚"‚‚‚ ‚ ‚ ‚ ‚ ‚ ‚!ATIsHiddenØ defaultArg  àààà Ô incr decr exit byte sbyte uint16 int16  uint32 int32int enum |KeyValue|    uint64  int64 float32 float€ decimal unativeint nativeint    string char ÌÌ lock usinge typeof typedefof sizeof hashid‚A‚A stdin stdout stderrP % T%abs acos asin atan  atan2 ceilexp floor round signlog log10 sqrtcos coshsin sinhtan tanh X\  pown Ì Ì H Ì Ì Ì L Ì     p1ÌÌÌÌÌÌ %aLThis function is for use by compiled F# code and should not be used directly´TIsHiddenp 1 1 Ì Ì Ì Ì Ì Ì  % p 1 1 Ì Ì Ì Ì Ì Ì  % p 1 1 Ì Ì Ì Ì Ì Ì  % p11ÌÌÌÌÌÌ %p11ÌÌÌÌÌÌ %p11ÌÌÌÌÌÌ %p11ÌÌÌÌÌÌ %p11ÌÌÌÌÌÌ %p11ÌÌÌÌÌÌ %p 1   1  % p 1 1  % p  ÌÌ!1ÌÌ ÌÌ%ÌÌp  ÌÌ#1ÌÌ  ÌÌ!%ÌÌp1 1 %        €€€€€ €€€ €€€ €€ÌÌÌÌÌÌÌÌØØØ ØØØ+ØØØØ,ØØØØ9ØØØØØØ:ØØØØØØG ØØØØØØØØ, H ØØØØØØØØ0  ØØØ $eq Ì (eeqÌÌ, Ìp„˜ ¬ÌÌÈÜð‘‘‘,Ì‘p‘„ ‘˜‘¬‘À‘Ô‘è‘ü’ ’$d hp  t x    ÌÌ 1          Ì Ì  1           Ì Ì  1           Ì Ì  1      ÌÌ 1     ÌÌ 1     ÌÌ 1     ÌÌ 1     ÌÌ 1     ÌÌ 1             1              1 ÌÌ        1 $ ( Ì4 Ì<DLT\dl , eÌ Ì  €€ €€x€pŒ”„ ¨˜ÌÌ ¸ ÌÌ Ä  ¬eÌÌÌÌ   ´ Ì Ì  ÀÐØÈäìÜø‘ð‘ ‘‘‘ ‘(‘ Ì‘4 Ì‘<‘D‘L‘T‘\‘d‘l ‘, eÌ Ì      € €     ‘x‘€‘p‘Œ‘”‘„ Ì ‘  ‘¨ ‘˜ eÌ Ì‘´‘¼‘¬‘ȑБÀ‘Ü‘ä‘Ô‘ð‘ø‘è’’ ‘ü’’ ’ÌÌ ’0 ÌÌ ’< ’$eÌÌÌÌ ’, Ì Ì Ì ’8 defaultof equals àààà ’\ ’X Ì ’X ’`’X’X ’X ’\ ’X ’h ’d ÌÌ’d’XÌ’XÌ ’l ’XÌ ’p ÌÌÌA’d’d’XÌ’XÌ’d ’h ’d ÌÌÌÌ’t’dÌ’XÌÌ’dÌ’x ’dÌ’XÌÌ’| ’XÌÌ’€! ÌÌÌÌ{’t’t’dÌ’dÌ’XÌÌ’XÌÌ/’tÌÌÌÌ’„ ’t ÌÌÌ ÌÌÌÌÌ ’t’„’t’Œ ’ˆ" ÌÌÌÌ’ˆ’tÌ’dÌÌ!’XÌÌÌ’tÌ’ ’tÌ’dÌÌ’” ’dÌÌ ’XÌÌÌ’˜# ’XÌÌÌ’œ( ÌÌÌÌÌ€Ç ’ˆ’ˆ’tÌ’tÌ’dÌÌ’dÌÌ’XÌÌÌ’XÌÌÌ8’ˆÌÌÌÌÌ’ˆ’Œ’ˆ Ì  &ÌÌÌÌÌ €€‘€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€ €‘ €€€‘ €‘’¤’¨€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€’쀉e’ð’è”Ì ”Ì ”Ì”Ì ”Ì     ”Ì  ‚E  ”Ì €õ ‚E  ‚E  ”Ì”Ì”Ì  ‚E  ”Ì ”Ì   i e’ô’ø’üÌÌoZThis function is for use by dynamic invocations of F# code and should not be used directly´TIsHiddenÌÌÌÌ “  “$ “,qqÌÌqÌÌee ÌÌ ÌÌ Ì Ì Ì Ì ÌÌ Ì Ì Ì Ì ÌÌ “ “l “p “x ÌÌ “d “¼ “À “È “´ ” ”  ” ”’¨                  €€ €‰’è €‰’ô’øÌÌ̀̀ Ì Ì Ì Ì “ “ ÌÌ’üeqÌÌÌÌ€ €€     “ Ì ÌÌÌ ÌÌ ÌÌ ÌÌ Ì Ì ÌÌ “eeeÌÌ “ “  “ Ì “$ “( “, “(  “d “h “l “h “p “t “x “t  “´ “¸ “¼ “¸ “À “Ä “È “Ä ” ” ” ” ”  ” ” ””P”`”d{fThis function is a primitive library routine used by optimized F# code and should not be used directly´TIsHidden €Ñ€Ñ ”P€Ñ ”P ”¸ €Ñ€Ñ”¸”¸  ”¸ ”P  ”P€Ñ€Ñ    ”P€Ñ€Ñ ”P ”P€Ñ€Ñ     €Ñ€Ñ   ”P€Ñ€Ñ  ”P€Ñ€Ñ ( ”P€Ñ€Ñ    €Ñ€Ñ ”P€Ñ€Ñ ”P ”P             @            €Ñ€Ñ€‘€Ñ”¼ €Ñ€Ñ”¼”¼ €‘€‘€Ñ€Ñ  €‘€Ñ€Ñ €‘ €‘€Ñ€Ñ €Ñ€Ñ €‘€Ñ€Ñ  €‘€Ñ€Ñ ' €‘€Ñ€Ñ  €Ñ€Ñ €‘€Ñ€Ñ €‘ ”`”d€‘  €‘€Ñ €Ñ€Ñ  ”¼”¼€‘€‘”Ì €‘”Ð ”Ô €‘”Ô”Ø €‘”Ø €‘”̔̀‘”ДÐ!€‘”Ô”Ô %€‘”Ø”Ø €”̔̀”ДР!€”Ô”Ô%€”Ø”Ø ”\”l €     €ˆ”l e€ˆD/In F# code, use 'e1 && e2' instead of 'e1 & e2'³TIsHiddenE0In F# code, use 'e1 || e2' instead of 'e1 or e2'³TIsHiddenor^IThis value is for use by compiled F# code and should not be used directly´TIsHidden”`”d€‰€‰€‰€‰€‰€‰ €‰€‰€‰€‰ €‰ €‰€‰ €‰ €‰€$(,04$(,04€±$$€((,,0044$€®$$((,,0044(€€½$$((,,0044€‘TX\`dhLTX\`dh €éTT€XX\\``ddhh(LL€èTTXX\\``ddhh+€LLu TX\`dh€‘L+LL€‘(LLŒ”˜œ ¤„Œ”˜œ ¤ +ŒŒ€””˜˜œœ  ¤¤,„„(ŒŒ””˜˜œœ  ¤¤/€„„€–Œ”˜œ ¤€‘„/„„€‘,„„à €ý”” ”˜Ì”Ì ”œÌ”Ì̔Р” Ì”Ð̔Ԕ¤ ”ÔÌ”Ô̔ؔ¨”ØÌ”Ø€ù€ù€ù } ”È ”È”Ì”Ð”Ô”Ø”Ü  ”Ü”à $”à”È”ä”È -”ä”È   ”È‚Q ‚Q”È ”È‚U ‚U ”È  ”Ì”Ì ”Ð ”ДДԔԔԔؔؔؔܔܔܔܔà”à”à”à(”ä ”ä”ä”ä”À”ÀŽ€f< =¤}B×ÞbBIÕnv„Æ¡AŒzA(÷Âz¿g—Þ³é"«çÅá”v6ééÒXlqºÊ ê<–nÑR|ðYɰˆ³ï¸¬Z]ŸX¢ñ¢åë?´NY‡6„Ž—ÀÒé Ùç!D:ìóµ`ÖØøå—œP§‰¨[ª€$ñ<;ÎÊムlSystem.Resources.ResourceReader, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet‚PADPADP1Xó‚&1–‡ðÔS‰ 5ø‰4±‹ŽƒoeD%`’~…”H]ä–0›J—’‘™kÏy›§£  Aï£ `7¤hž¤‘Nˆ¦í™³«úÇ6¯¤™q´ã.½¶Á;˜·#xà¸ÊªÓºªO»×3±¼C¾½éÂ&;ÇÊáùÊ+­¤Ëm1Ì„AbÍ@‚Îȸ£Ð#œdÑäïÖÕ ä¸Ö€#æÙ_tÝÚýG¥ÛZâ=ßháaߌ«#àâ9á(X—ä~Ë€è-$ê½CêYënê7‘ì³>KíEÚíË¥Êò|“ô_ehô´…nô9$åôè/÷=™#ùçýú¾eûÿK‘enúaH`³wvlÓJ\Çûö  *EÚì 1‹+øeµúºÙ‰Ù<º&礼|· Ꭲ"®kY#K;$N(¿(#¡+=éF-Äú«-®ž¢.%xœ19Þ1Ëtd2£ ·4שw7ˆ²}:_ç3>g|>#?Þ&#?‚ï@®v_CA›`C¼constructorForUnionCaseNotFound$NcontrolContinuationInvokedMultipleTimesh delegateExpected·&dyInvDivByIntCoerceÑ dyInvOpAddCoerce$dyInvOpAddOverloadc"dyInvOpMultCoerce®&dyInvOpMultOverload÷endCannotBeNaNB4enumerationAlreadyFinishede*enumerationNotStarted„4enumerationPastIntMaxValue±*failedReadEnoughBytesô,firstClassUsesOfSplice"&genericCompareFail1U indexOutOfBoundsi"inputListWasEmpty£,inputMustBeNonNegative¾$inputSequenceEmptyß"invalidTupleTypesþkeyNotFound=keyNotFoundAltw0listsHadDifferentLengths»M:Microsoft.FSharp.Reflection.FSharpType.IsModule(System.Type)IsRecord€M:Microsoft.FSharp.Reflection.FSharpType.IsRecord(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})IsUnion€€M:Microsoft.FSharp.Reflection.FSharpType.IsUnion(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})GetTupleElementsFM:Microsoft.FSharp.Reflection.FSharpType.GetTupleElements(System.Type)GetFunctionElementsIM:Microsoft.FSharp.Reflection.FSharpType.GetFunctionElements(System.Type) exceptionType€‹M:Microsoft.FSharp.Reflection.FSharpType.GetExceptionFields(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})IsExceptionRepresentation€’M:Microsoft.FSharp.Reflection.FSharpType.IsExceptionRepresentation(System.Type,Microsoft.FSharp.Core.FSharpOption{System.Reflection.BindingFlags})+T:Microsoft.FSharp.Reflection.UnionCaseInfoAbstractClassAttribute)T:Microsoft.FSharp.Reflection.FSharpValue(T:Microsoft.FSharp.Reflection.FSharpType Quotations6d:\Depot\staging\src\fsharp\FSharp.Core\quotations.fsiget_Type5d:\Depot\staging\src\fsharp\FSharp.Core\quotations.fsVar,P:Microsoft.FSharp.Quotations.FSharpVar.Type,P:Microsoft.FSharp.Quotations.FSharpVar.Name get_IsMutable1P:Microsoft.FSharp.Quotations.FSharpVar.IsMutablename isMutable{M:Microsoft.FSharp.Quotations.FSharpVar.#ctor(System.String,System.Type,Microsoft.FSharp.Core.FSharpOption{System.Boolean})GlobalIM:Microsoft.FSharp.Quotations.FSharpVar.Global(System.String,System.Type) SubstituteExpr substitution€ÉM:Microsoft.FSharp.Quotations.FSharpExpr.Substitute(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Quotations.FSharpExpr}}) GetFreeVarsseq`14M:Microsoft.FSharp.Quotations.FSharpExpr.GetFreeVars-P:Microsoft.FSharp.Quotations.FSharpExpr.Typeget_CustomAttributes9P:Microsoft.FSharp.Quotations.FSharpExpr.CustomAttributes AddressOftargetZM:Microsoft.FSharp.Quotations.FSharpExpr.AddressOf(Microsoft.FSharp.Quotations.FSharpExpr) AddressSet€‚M:Microsoft.FSharp.Quotations.FSharpExpr.AddressSet(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) Application functionExprargument€ƒM:Microsoft.FSharp.Quotations.FSharpExpr.Application(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) Applications arguments€ÖM:Microsoft.FSharp.Quotations.FSharpExpr.Applications(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})Call methodInfo€›M:Microsoft.FSharp.Quotations.FSharpExpr.Call(System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})€ÂM:Microsoft.FSharp.Quotations.FSharpExpr.Call(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.MethodInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})CoercecM:Microsoft.FSharp.Quotations.FSharpExpr.Coerce(Microsoft.FSharp.Quotations.FSharpExpr,System.Type) IfThenElseguardthenExprelseExpr€©M:Microsoft.FSharp.Quotations.FSharpExpr.IfThenElse(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)ForIntegerRangeLoop loopVariablestartendExprbody€ØM:Microsoft.FSharp.Quotations.FSharpExpr.ForIntegerRangeLoop(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)FieldGet FieldInfo fieldInfoNM:Microsoft.FSharp.Quotations.FSharpExpr.FieldGet(System.Reflection.FieldInfo)uM:Microsoft.FSharp.Quotations.FSharpExpr.FieldGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.FieldInfo)FieldSetuM:Microsoft.FSharp.Quotations.FSharpExpr.FieldSet(System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr)€œM:Microsoft.FSharp.Quotations.FSharpExpr.FieldSet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.FieldInfo,Microsoft.FSharp.Quotations.FSharpExpr)Lambda parameter}M:Microsoft.FSharp.Quotations.FSharpExpr.Lambda(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr)Let letVariableletExpr€¡M:Microsoft.FSharp.Quotations.FSharpExpr.Let(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr) LetRecursivebindings€ãM:Microsoft.FSharp.Quotations.FSharpExpr.LetRecursive(Microsoft.FSharp.Collections.FSharpList{System.Tuple`2{Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr}},Microsoft.FSharp.Quotations.FSharpExpr) NewObjectconstructorInfo€¥M:Microsoft.FSharp.Quotations.FSharpExpr.NewObject(System.Reflection.ConstructorInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) DefaultValueexpressionTypeBM:Microsoft.FSharp.Quotations.FSharpExpr.DefaultValue(System.Type)NewTupleelements€‚M:Microsoft.FSharp.Quotations.FSharpExpr.NewTuple(Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) NewRecord€M:Microsoft.FSharp.Quotations.FSharpExpr.NewRecord(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr})NewArray elementType€ŽM:Microsoft.FSharp.Quotations.FSharpExpr.NewArray(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) NewDelegate delegateType parameters€·M:Microsoft.FSharp.Quotations.FSharpExpr.NewDelegate(System.Type,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpVar},Microsoft.FSharp.Quotations.FSharpExpr) NewUnionCase€°M:Microsoft.FSharp.Quotations.FSharpExpr.NewUnionCase(Microsoft.FSharp.Reflection.UnionCaseInfo,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) PropertyGetproperty indexerArgs€ïM:Microsoft.FSharp.Quotations.FSharpExpr.PropertyGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})€ÈM:Microsoft.FSharp.Quotations.FSharpExpr.PropertyGet(System.Reflection.PropertyInfo,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}}) PropertySetM:Microsoft.FSharp.Quotations.FSharpExpr.PropertySet(Microsoft.FSharp.Quotations.FSharpExpr,System.Reflection.PropertyInfo,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})€ïM:Microsoft.FSharp.Quotations.FSharpExpr.PropertySet(System.Reflection.PropertyInfo,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}})QuoteinnerVM:Microsoft.FSharp.Quotations.FSharpExpr.Quote(Microsoft.FSharp.Quotations.FSharpExpr) Sequentialfirstsecond€‚M:Microsoft.FSharp.Quotations.FSharpExpr.Sequential(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)TryWith filterVar filterBodycatchVar catchBody€òM:Microsoft.FSharp.Quotations.FSharpExpr.TryWith(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr) TryFinally compensation€‚M:Microsoft.FSharp.Quotations.FSharpExpr.TryFinally(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)TupleGetfM:Microsoft.FSharp.Quotations.FSharpExpr.TupleGet(Microsoft.FSharp.Quotations.FSharpExpr,System.Int32)TypeTesteM:Microsoft.FSharp.Quotations.FSharpExpr.TypeTest(Microsoft.FSharp.Quotations.FSharpExpr,System.Type) UnionCaseTest€ˆM:Microsoft.FSharp.Quotations.FSharpExpr.UnionCaseTest(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Reflection.UnionCaseInfo)ValueIM:Microsoft.FSharp.Quotations.FSharpExpr.Value(System.Object,System.Type)6M:Microsoft.FSharp.Quotations.FSharpExpr.Value``1(``0)variableSM:Microsoft.FSharp.Quotations.FSharpExpr.Var(Microsoft.FSharp.Quotations.FSharpVar)VarSet}M:Microsoft.FSharp.Quotations.FSharpExpr.VarSet(Microsoft.FSharp.Quotations.FSharpVar,Microsoft.FSharp.Quotations.FSharpExpr) WhileLoop€M:Microsoft.FSharp.Quotations.FSharpExpr.WhileLoop(Microsoft.FSharp.Quotations.FSharpExpr,Microsoft.FSharp.Quotations.FSharpExpr)CastExpr`1XM:Microsoft.FSharp.Quotations.FSharpExpr.Cast``1(Microsoft.FSharp.Quotations.FSharpExpr)TryGetReflectedDefinition MethodBase methodBase`M:Microsoft.FSharp.Quotations.FSharpExpr.TryGetReflectedDefinition(System.Reflection.MethodBase) DeserializebytequalifyingType spliceTypes spliceExprsbytes€ÔM:Microsoft.FSharp.Quotations.FSharpExpr.Deserialize(System.Type,Microsoft.FSharp.Collections.FSharpList{System.Type},Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr},System.Byte[])RegisterReflectedDefinitionsAssemblyassemblyresourceserializedValue}M:Microsoft.FSharp.Quotations.FSharpExpr.RegisterReflectedDefinitions(System.Reflection.Assembly,System.String,System.Byte[]) GlobalVarDM:Microsoft.FSharp.Quotations.FSharpExpr.GlobalVar``1(System.String)get_Raw.P:Microsoft.FSharp.Quotations.FSharpExpr`1.Raw FSharpVarCompiledNameAttribute'T:Microsoft.FSharp.Quotations.FSharpVar FSharpExpr(T:Microsoft.FSharp.Quotations.FSharpExpr FSharpExpr`1*T:Microsoft.FSharp.Quotations.FSharpExpr`1PatternsModule"CompilationRepresentationAttributeCompilationRepresentationFlags,T:Microsoft.FSharp.Quotations.PatternsModule |AddressOf|_|AddressOfPatterninputeM:Microsoft.FSharp.Quotations.PatternsModule.AddressOfPattern(Microsoft.FSharp.Quotations.FSharpExpr)|AddressSet|_|AddressSetPatternfM:Microsoft.FSharp.Quotations.PatternsModule.AddressSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Application|_|ApplicationPatterngM:Microsoft.FSharp.Quotations.PatternsModule.ApplicationPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Call|_| CallPattern`M:Microsoft.FSharp.Quotations.PatternsModule.CallPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Coerce|_| CoercePatternbM:Microsoft.FSharp.Quotations.PatternsModule.CoercePattern(Microsoft.FSharp.Quotations.FSharpExpr) |FieldGet|_|FieldGetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.FieldGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |FieldSet|_|FieldSetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.FieldSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|ForIntegerRangeLoop|_|ForIntegerRangeLoopPatternoM:Microsoft.FSharp.Quotations.PatternsModule.ForIntegerRangeLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr) |WhileLoop|_|WhileLoopPatterneM:Microsoft.FSharp.Quotations.PatternsModule.WhileLoopPattern(Microsoft.FSharp.Quotations.FSharpExpr)|IfThenElse|_|IfThenElsePatternfM:Microsoft.FSharp.Quotations.PatternsModule.IfThenElsePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Lambda|_| LambdaPatternbM:Microsoft.FSharp.Quotations.PatternsModule.LambdaPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Let|_| LetPattern_M:Microsoft.FSharp.Quotations.PatternsModule.LetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|LetRecursive|_|LetRecursivePatternhM:Microsoft.FSharp.Quotations.PatternsModule.LetRecursivePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewArray|_|NewArrayPatterndM:Microsoft.FSharp.Quotations.PatternsModule.NewArrayPattern(Microsoft.FSharp.Quotations.FSharpExpr)|DefaultValue|_|DefaultValuePatternhM:Microsoft.FSharp.Quotations.PatternsModule.DefaultValuePattern(Microsoft.FSharp.Quotations.FSharpExpr)|NewDelegate|_|NewDelegatePatterngM:Microsoft.FSharp.Quotations.PatternsModule.NewDelegatePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewObject|_|NewObjectPatterneM:Microsoft.FSharp.Quotations.PatternsModule.NewObjectPattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewRecord|_|NewRecordPatterneM:Microsoft.FSharp.Quotations.PatternsModule.NewRecordPattern(Microsoft.FSharp.Quotations.FSharpExpr)|NewUnionCase|_|NewUnionCasePatternhM:Microsoft.FSharp.Quotations.PatternsModule.NewUnionCasePattern(Microsoft.FSharp.Quotations.FSharpExpr) |NewTuple|_|NewTuplePatterndM:Microsoft.FSharp.Quotations.PatternsModule.NewTuplePattern(Microsoft.FSharp.Quotations.FSharpExpr)|PropertyGet|_|PropertyGetPatterngM:Microsoft.FSharp.Quotations.PatternsModule.PropertyGetPattern(Microsoft.FSharp.Quotations.FSharpExpr)|PropertySet|_|PropertySetPatterngM:Microsoft.FSharp.Quotations.PatternsModule.PropertySetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Quote|_| QuotePatternaM:Microsoft.FSharp.Quotations.PatternsModule.QuotePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Sequential|_|SequentialPatternfM:Microsoft.FSharp.Quotations.PatternsModule.SequentialPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TryWith|_|TryWithPatterncM:Microsoft.FSharp.Quotations.PatternsModule.TryWithPattern(Microsoft.FSharp.Quotations.FSharpExpr)|TryFinally|_|TryFinallyPatternfM:Microsoft.FSharp.Quotations.PatternsModule.TryFinallyPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TupleGet|_|TupleGetPatterndM:Microsoft.FSharp.Quotations.PatternsModule.TupleGetPattern(Microsoft.FSharp.Quotations.FSharpExpr) |TypeTest|_|TypeTestPatterndM:Microsoft.FSharp.Quotations.PatternsModule.TypeTestPattern(Microsoft.FSharp.Quotations.FSharpExpr)|UnionCaseTest|_|UnionCaseTestPatterniM:Microsoft.FSharp.Quotations.PatternsModule.UnionCaseTestPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Value|_| ValuePatternaM:Microsoft.FSharp.Quotations.PatternsModule.ValuePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Var|_| VarPattern_M:Microsoft.FSharp.Quotations.PatternsModule.VarPattern(Microsoft.FSharp.Quotations.FSharpExpr) |VarSet|_| VarSetPatternbM:Microsoft.FSharp.Quotations.PatternsModule.VarSetPattern(Microsoft.FSharp.Quotations.FSharpExpr)DerivedPatternsModule3T:Microsoft.FSharp.Quotations.DerivedPatternsModule |Lambdas|_|LambdasPatternjM:Microsoft.FSharp.Quotations.DerivedPatternsModule.LambdasPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Applications|_|ApplicationsPatternoM:Microsoft.FSharp.Quotations.DerivedPatternsModule.ApplicationsPattern(Microsoft.FSharp.Quotations.FSharpExpr) |AndAlso|_|AndAlsoPatternjM:Microsoft.FSharp.Quotations.DerivedPatternsModule.AndAlsoPattern(Microsoft.FSharp.Quotations.FSharpExpr) |OrElse|_| OrElsePatterniM:Microsoft.FSharp.Quotations.DerivedPatternsModule.OrElsePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Unit|_| UnitPatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UnitPattern(Microsoft.FSharp.Quotations.FSharpExpr)|Bool|_| BoolPatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.BoolPattern(Microsoft.FSharp.Quotations.FSharpExpr) |String|_| StringPatterniM:Microsoft.FSharp.Quotations.DerivedPatternsModule.StringPattern(Microsoft.FSharp.Quotations.FSharpExpr) |Single|_| SinglePatternfloat32iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SinglePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Double|_| DoublePatterniM:Microsoft.FSharp.Quotations.DerivedPatternsModule.DoublePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Char|_| CharPatternchargM:Microsoft.FSharp.Quotations.DerivedPatternsModule.CharPattern(Microsoft.FSharp.Quotations.FSharpExpr) |SByte|_| SBytePatternsbytehM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SBytePattern(Microsoft.FSharp.Quotations.FSharpExpr)|Byte|_| BytePatterngM:Microsoft.FSharp.Quotations.DerivedPatternsModule.BytePattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int16|_| Int16Patternint16hM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt16|_| UInt16Patternuint16iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt16Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int32|_| Int32PatternhM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt32|_| UInt32Patternuint32iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt32Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |Int64|_| Int64PatternhM:Microsoft.FSharp.Quotations.DerivedPatternsModule.Int64Pattern(Microsoft.FSharp.Quotations.FSharpExpr) |UInt64|_| UInt64Patternuint64iM:Microsoft.FSharp.Quotations.DerivedPatternsModule.UInt64Pattern(Microsoft.FSharp.Quotations.FSharpExpr)|SpecificCall|_|SpecificCallPatterntemplateParameteroM:Microsoft.FSharp.Quotations.DerivedPatternsModule.SpecificCallPattern(Microsoft.FSharp.Quotations.FSharpExpr)!|MethodWithReflectedDefinition|_|$MethodWithReflectedDefinitionPatternvM:Microsoft.FSharp.Quotations.DerivedPatternsModule.MethodWithReflectedDefinitionPattern(System.Reflection.MethodBase))|PropertyGetterWithReflectedDefinition|_|,PropertyGetterWithReflectedDefinitionPattern propertyInfo€€M:Microsoft.FSharp.Quotations.DerivedPatternsModule.PropertyGetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo))|PropertySetterWithReflectedDefinition|_|,PropertySetterWithReflectedDefinitionPattern€€M:Microsoft.FSharp.Quotations.DerivedPatternsModule.PropertySetterWithReflectedDefinitionPattern(System.Reflection.PropertyInfo)ExprShapeModule-T:Microsoft.FSharp.Quotations.ExprShapeModule'|ShapeVar|ShapeLambda|ShapeCombination| ShapePatternChoice`3bM:Microsoft.FSharp.Quotations.ExprShapeModule.ShapePattern(Microsoft.FSharp.Quotations.FSharpExpr)RebuildShapeCombinationshape€¤M:Microsoft.FSharp.Quotations.ExprShapeModule.RebuildShapeCombination(System.Object,Microsoft.FSharp.Collections.FSharpList{Microsoft.FSharp.Quotations.FSharpExpr}) Primitives1d:\Depot\staging\src\fsharp\FSharp.Core\local.fsiBasicsList)T:Microsoft.FSharp.Primitives.Basics.Listinit0d:\Depot\staging\src\fsharp\FSharp.Core\local.fsiterfilter predicatecollectU partitionmapmappingmap2mapiforallexistsrevconcatiteriunzipunzip3zipzip3ofArraytoArraysortWithArray*T:Microsoft.FSharp.Primitives.Basics.ArrayzeroCreateUncheckedpermuteindexMapunstableSortInPlaceByKey projectionarrayunstableSortInPlacestableSortInPlaceBystableSortInPlace NativeInterop5d:\Depot\staging\src\fsharp\FSharp.Core\nativeptr.fsiNativePtrModuleRequireQualifiedAccessAttribute0T:Microsoft.FSharp.NativeInterop.NativePtrModule ofNativeIntOfNativeIntInlined4d:\Depot\staging\src\fsharp\FSharp.Core\nativeptr.fs nativeint nativeptr`1UnverifiableAttributeNoDynamicInvocationAttributeaddressUM:Microsoft.FSharp.NativeInterop.NativePtrModule.OfNativeIntInlined``1(System.IntPtr) toNativeIntToNativeIntInlinedLM:Microsoft.FSharp.NativeInterop.NativePtrModule.ToNativeIntInlined``1(``0*)addAddPointerInlinedXM:Microsoft.FSharp.NativeInterop.NativePtrModule.AddPointerInlined``1(``0*,System.Int32)getGetPointerInlinedXM:Microsoft.FSharp.NativeInterop.NativePtrModule.GetPointerInlined``1(``0*,System.Int32)readReadPointerInlinedLM:Microsoft.FSharp.NativeInterop.NativePtrModule.ReadPointerInlined``1(``0*)writeWritePointerInlinedQM:Microsoft.FSharp.NativeInterop.NativePtrModule.WritePointerInlined``1(``0*,``0)setSetPointerInlined\M:Microsoft.FSharp.NativeInterop.NativePtrModule.SetPointerInlined``1(``0*,System.Int32,``0) stackalloc StackAllocateOM:Microsoft.FSharp.NativeInterop.NativePtrModule.StackAllocate``1(System.Int32)Math2d:\Depot\staging\src\fsharp\FSharp.Core\math/n.fsiBigNatT:Microsoft.FSharp.Math.BigNat BigNatModule$T:Microsoft.FSharp.Math.BigNatModulezero1d:\Depot\staging\src\fsharp\FSharp.Core\math/n.fsonetwosubmuldivmoddivhcfminmaxscalepowipowIsZeroisZeroisOneequalcompareltgtltegtehashtoFloatofInt32ofInt64toStringofStringtoUInt32toUInt64 factorialbitsisSmallgetSmallBd:\Depot\staging\src\fsharp\FSharp.Core\fslib-extra-pervasives.fsi2d:\Depot\staging\src\fsharp\FSharp.Core\printf.fsi1d:\Depot\staging\src\fsharp\FSharp.Core\printf.fsPrinterResidueResultPrintfFormat`4;M:Microsoft.FSharp.Core.PrintfFormat`4.#ctor(System.String),P:Microsoft.FSharp.Core.PrintfFormat`4.ValueTuplePrintfFormat`5;M:Microsoft.FSharp.Core.PrintfFormat`5.#ctor(System.String)-M:Microsoft.FSharp.Core.SealedAttribute.#ctor-P:Microsoft.FSharp.Core.SealedAttribute.Value=M:Microsoft.FSharp.Core.SealedAttribute.#ctor(System.Boolean)4M:Microsoft.FSharp.Core.AbstractClassAttribute.#ctorReflectedDefinitionAttribute:M:Microsoft.FSharp.Core.ReflectedDefinitionAttribute.#ctorEqualityConditionalOnAttributeM:Microsoft.FSharp.Core.ComparisonConditionalOnAttribute.#ctor-M:Microsoft.FSharp.Core.StructAttribute.#ctorMeasureAttribute.M:Microsoft.FSharp.Core.MeasureAttribute.#ctor%MeasureAnnotatedAbbreviationAttributeCM:Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute.#ctorInterfaceAttribute0M:Microsoft.FSharp.Core.InterfaceAttribute.#ctor,M:Microsoft.FSharp.Core.ClassAttribute.#ctor7M:Microsoft.FSharp.Core.AllowNullLiteralAttribute.#ctorLiteralAttribute.M:Microsoft.FSharp.Core.LiteralAttribute.#ctorCLIEventAttribute/M:Microsoft.FSharp.Core.CLIEventAttribute.#ctorDefaultAugmentationAttribute:P:Microsoft.FSharp.Core.DefaultAugmentationAttribute.ValueJM:Microsoft.FSharp.Core.DefaultAugmentationAttribute.#ctor(System.Boolean)VolatileFieldAttribute4M:Microsoft.FSharp.Core.VolatileFieldAttribute.#ctorEntryPointAttribute1M:Microsoft.FSharp.Core.EntryPointAttribute.#ctorReferenceEqualityAttribute8M:Microsoft.FSharp.Core.ReferenceEqualityAttribute.#ctorStructuralEqualityAttribute9M:Microsoft.FSharp.Core.StructuralEqualityAttribute.#ctorStructuralComparisonAttribute;M:Microsoft.FSharp.Core.StructuralComparisonAttribute.#ctor1M:Microsoft.FSharp.Core.NoEqualityAttribute.#ctor5M:Microsoft.FSharp.Core.CustomEqualityAttribute.#ctor7M:Microsoft.FSharp.Core.CustomComparisonAttribute.#ctor3M:Microsoft.FSharp.Core.NoComparisonAttribute.#ctor get_CheckDefaultValueAttribute3P:Microsoft.FSharp.Core.DefaultValueAttribute.Check3M:Microsoft.FSharp.Core.DefaultValueAttribute.#ctorcheckCM:Microsoft.FSharp.Core.DefaultValueAttribute.#ctor(System.Boolean)7M:Microsoft.FSharp.Core.OptionalArgumentAttribute.#ctor&RequiresExplicitTypeArgumentsAttributeDM:Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute.#ctorGeneralizableValueAttribute9M:Microsoft.FSharp.Core.GeneralizableValueAttribute.#ctorget_CompiledName:P:Microsoft.FSharp.Core.CompiledNameAttribute.CompiledName compiledNameBM:Microsoft.FSharp.Core.CompiledNameAttribute.#ctor(System.String)AutoSerializableAttribute7P:Microsoft.FSharp.Core.AutoSerializableAttribute.ValueGM:Microsoft.FSharp.Core.AutoSerializableAttribute.#ctor(System.Boolean) get_Major#FSharpInterfaceDataVersionAttributeAP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.Major get_MinorAP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.Minor get_ReleaseCP:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.ReleasemajorminorreleaseiM:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute.#ctor(System.Int32,System.Int32,System.Int32)get_SourceConstructFlagsCompilationMappingAttributeSourceConstructFlagsHP:Microsoft.FSharp.Core.CompilationMappingAttribute.SourceConstructFlagsget_SequenceNumberBP:Microsoft.FSharp.Core.CompilationMappingAttribute.SequenceNumberget_VariantNumberAP:Microsoft.FSharp.Core.CompilationMappingAttribute.VariantNumbersourceConstructFlagseM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags)sequenceNumberrM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags,System.Int32) variantNumberM:Microsoft.FSharp.Core.CompilationMappingAttribute.#ctor(Microsoft.FSharp.Core.SourceConstructFlags,System.Int32,System.Int32)get_SourceNameCompilationSourceNameAttributeAP:Microsoft.FSharp.Core.CompilationSourceNameAttribute.SourceName sourceNameKM:Microsoft.FSharp.Core.CompilationSourceNameAttribute.#ctor(System.String) get_Flags@P:Microsoft.FSharp.Core.CompilationRepresentationAttribute.FlagsflagsvM:Microsoft.FSharp.Core.CompilationRepresentationAttribute.#ctor(Microsoft.FSharp.Core.CompilationRepresentationFlags) get_MessageExperimentalAttribute5P:Microsoft.FSharp.Core.ExperimentalAttribute.MessagemessageBM:Microsoft.FSharp.Core.ExperimentalAttribute.#ctor(System.String) get_Counts"CompilationArgumentCountsAttributeGeneric IEnumerable`1AP:Microsoft.FSharp.Core.CompilationArgumentCountsAttribute.CountscountsPM:Microsoft.FSharp.Core.CompilationArgumentCountsAttribute.#ctor(System.Int32[]) StructuredFormatDisplayAttribute>P:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute.ValueMM:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute.#ctor(System.String)CompilerMessageAttribute8P:Microsoft.FSharp.Core.CompilerMessageAttribute.Messageget_MessageNumber>P:Microsoft.FSharp.Core.CompilerMessageAttribute.MessageNumber get_IsError8P:Microsoft.FSharp.Core.CompilerMessageAttribute.IsError set_IsErrorHP:Microsoft.FSharp.Core.CompilerMessageAttribute.IsError(System.Boolean) get_IsHidden9P:Microsoft.FSharp.Core.CompilerMessageAttribute.IsHidden set_IsHiddenIP:Microsoft.FSharp.Core.CompilerMessageAttribute.IsHidden(System.Boolean) messageNumberRM:Microsoft.FSharp.Core.CompilerMessageAttribute.#ctor(System.String,System.Int32)3M:Microsoft.FSharp.Core.UnverifiableAttribute.#ctor:M:Microsoft.FSharp.Core.NoDynamicInvocationAttribute.#ctor=M:Microsoft.FSharp.Core.RequireQualifiedAccessAttribute.#ctorget_PathAutoOpenAttribute.P:Microsoft.FSharp.Core.AutoOpenAttribute.Path/M:Microsoft.FSharp.Core.AutoOpenAttribute.#ctorpath>M:Microsoft.FSharp.Core.AutoOpenAttribute.#ctor(System.String)Choice`2 IComparable`1Choice`4Choice`5Choice`6Choice`7MatchFailureException SpecializeFSharpTypeFunc4M:Microsoft.FSharp.Core.FSharpTypeFunc.Specialize``1,M:Microsoft.FSharp.Core.FSharpTypeFunc.#ctorInvoke FSharpFunc`2func/M:Microsoft.FSharp.Core.FSharpFunc`2.Invoke(`0) op_Implicit Converter`2[M:Microsoft.FSharp.Core.FSharpFunc`2.op_Implicit(Microsoft.FSharp.Core.FSharpFunc`2{`0,`1}) converterIM:Microsoft.FSharp.Core.FSharpFunc`2.op_Implicit(System.Converter{`0,`1}) ToConverter[M:Microsoft.FSharp.Core.FSharpFunc`2.ToConverter(Microsoft.FSharp.Core.FSharpFunc`2{`0,`1}) FromConverterKM:Microsoft.FSharp.Core.FSharpFunc`2.FromConverter(System.Converter{`0,`1}) InvokeFastVWXYarg1arg2arg3arg4arg5 M:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``4(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc`2{`1,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``2,``3}}}}},`0,`1,``0,``1,``2)€áM:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``3(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc`2{`1,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}}}},`0,`1,``0,``1)€µM:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``2(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc`2{`1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}}},`0,`1,``0)€‰M:Microsoft.FSharp.Core.FSharpFunc`2.InvokeFast``1(Microsoft.FSharp.Core.FSharpFunc{`0,Microsoft.FSharp.Core.FSharpFunc`2{`1,``0}},`0,`1)*M:Microsoft.FSharp.Core.FSharpFunc`2.#ctor ToFSharpFunc FuncConvertGM:Microsoft.FSharp.Core.FuncConvert.ToFSharpFunc``1(System.Action{``0})NM:Microsoft.FSharp.Core.FuncConvert.ToFSharpFunc``2(System.Converter{``0,``1})FuncFromTupledvM:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``3(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`2{``0,``1},``2})zM:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``4(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`3{``0,``1,``2},``3})~M:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``5(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`4{``0,``1,``2,``3},``4})€‚M:Microsoft.FSharp.Core.FuncConvert.FuncFromTupled``6(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`5{``0,``1,``2,``3,``4},``5})Ref`1)P:Microsoft.FSharp.Core.FSharpRef`1.Value set_Value-P:Microsoft.FSharp.Core.FSharpRef`1.Value(`0)Option`1get_None+P:Microsoft.FSharp.Core.FSharpOption`1.NoneSome/M:Microsoft.FSharp.Core.FSharpOption`1.Some(`0),P:Microsoft.FSharp.Core.FSharpOption`1.Value get_IsSome-P:Microsoft.FSharp.Core.FSharpOption`1.IsSome get_IsNone-P:Microsoft.FSharp.Core.FSharpOption`1.IsNoneUnitT:Microsoft.FSharp.Core.unit unativeint>d:\Depot\staging\src\fsharp\FSharp.Core\prim-types-prelude.fsiUIntPtr"T:Microsoft.FSharp.Core.unativeintuint8ByteT:Microsoft.FSharp.Core.uint8UInt64T:Microsoft.FSharp.Core.uint64UInt32T:Microsoft.FSharp.Core.uint32UInt16T:Microsoft.FSharp.Core.uint16StringT:Microsoft.FSharp.Core.stringsingleSingleT:Microsoft.FSharp.Core.singleMeasuresbyte`1T:Microsoft.FSharp.Core.sbyte`1SByteT:Microsoft.FSharp.Core.sbyteref`1T:Microsoft.FSharp.Core.ref`1 T:Microsoft.FSharp.Core.option`1ObjectT:Microsoft.FSharp.Core.objmscorlib System.IntPtr#T:Microsoft.FSharp.Core.nativeptr`1IntPtr!T:Microsoft.FSharp.Core.nativeintint`1T:Microsoft.FSharp.Core.int`1int8T:Microsoft.FSharp.Core.int8int64`1T:Microsoft.FSharp.Core.int64`1Int64T:Microsoft.FSharp.Core.int64Int32T:Microsoft.FSharp.Core.int32int16`1T:Microsoft.FSharp.Core.int16`1Int16T:Microsoft.FSharp.Core.int16T:Microsoft.FSharp.Core.int ilsigptr`1"T:Microsoft.FSharp.Core.ilsigptr`1float`1T:Microsoft.FSharp.Core.float`1 float32`1!T:Microsoft.FSharp.Core.float32`1T:Microsoft.FSharp.Core.float32DoubleT:Microsoft.FSharp.Core.floatT:Microsoft.FSharp.Core.exndoubleT:Microsoft.FSharp.Core.double decimal`1decimal!T:Microsoft.FSharp.Core.decimal`1DecimalT:Microsoft.FSharp.Core.decimalCharT:Microsoft.FSharp.Core.charT:Microsoft.FSharp.Core.byteT:Microsoft.FSharp.Core.byref`1BooleanT:Microsoft.FSharp.Core.boolbigintarray`1T:Microsoft.FSharp.Core.array`1T:Microsoft.FSharp.Core.[]`1[,]`1T:Microsoft.FSharp.Core.[,]`1[,,]`1T:Microsoft.FSharp.Core.[,,]`1[,,,]`1T:Microsoft.FSharp.Core.[,,,]`1AttributeUsageAttributeSystem.AttributeUsageAttributeSystem.AttributeTargetsAttributeTargets AllowMultiple Attribute.T:Microsoft.FSharp.Core.VolatileFieldAttributearg0 op_BitwiseOr-T:Microsoft.FSharp.Core.UnverifiableAttributeT:Microsoft.FSharp.Core.Unit8T:Microsoft.FSharp.Core.StructuredFormatDisplayAttribute3T:Microsoft.FSharp.Core.StructuralEqualityAttribute5T:Microsoft.FSharp.Core.StructuralComparisonAttribute'T:Microsoft.FSharp.Core.StructAttribute StringModule2d:\Depot\staging\src\fsharp\FSharp.Core\string.fsi$T:Microsoft.FSharp.Core.StringModuleConcat1d:\Depot\staging\src\fsharp\FSharp.Core\string.fssepstringspM:Microsoft.FSharp.Core.StringModule.Concat(System.String,System.Collections.Generic.IEnumerable{System.String})Iteratestr€†M:Microsoft.FSharp.Core.StringModule.Iterate(Microsoft.FSharp.Core.FSharpFunc`2{System.Char,Microsoft.FSharp.Core.Unit},System.String)IterateIndexed€¾M:Microsoft.FSharp.Core.StringModule.IterateIndexed(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Char,Microsoft.FSharp.Core.Unit}},System.String)MapsM:Microsoft.FSharp.Core.StringModule.Map(Microsoft.FSharp.Core.FSharpFunc`2{System.Char,System.Char},System.String) MapIndexed€«M:Microsoft.FSharp.Core.StringModule.MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Char,System.Char}},System.String)CollectyM:Microsoft.FSharp.Core.StringModule.Collect(Microsoft.FSharp.Core.FSharpFunc`2{System.Char,System.String},System.String) Initialize initializer|M:Microsoft.FSharp.Core.StringModule.Initialize(System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,System.String})ForAllyM:Microsoft.FSharp.Core.StringModule.ForAll(Microsoft.FSharp.Core.FSharpFunc`2{System.Char,System.Boolean},System.String)ExistsyM:Microsoft.FSharp.Core.StringModule.Exists(Microsoft.FSharp.Core.FSharpFunc`2{System.Char,System.Boolean},System.String) replicate ReplicateJM:Microsoft.FSharp.Core.StringModule.Replicate(System.Int32,System.String)lengthLength:M:Microsoft.FSharp.Core.StringModule.Length(System.String)value__NoneGF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.NoneSumTypeJF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.SumType RecordTypeMF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.RecordType ObjectTypeMF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.ObjectTypeFieldHF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.FieldLF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.ExceptionClosureJF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.ClosureModuleIF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.Module UnionCaseLF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.UnionCaseHF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.ValueKindMaskKF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.KindMaskNonPublicRepresentationZF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.SourceConstructFlags.NonPublicRepresentationEnum,T:Microsoft.FSharp.Core.SourceConstructFlags'T:Microsoft.FSharp.Core.SealedAttributeSR-d:\Depot\staging\src\fsharp\FSharp.Core\SR.fsT:Microsoft.FSharp.Core.SR resources ResourcesResourceManagermatchCasesIncompleteresetNotSupportedindexOutOfBoundslistsHadDifferentLengthsinputListWasEmptyenumerationNotStartedsetContainsNoElementsenumerationAlreadyFinishedfindElementNotFoundfindIndexElementNotFoundpickElementNotFoundnotEnoughElementsinputMustBeNonNegativeenumerationPastIntMaxValueinputSequenceEmptymapCannotBeMutated notComparable outOfRangearraysHadDifferentLengths arrayWasEmptynonZeroBasedDisallowedmismatchIAREndmismatchIARCancelsyncContextNullmailboxScanTimedOutmailboxReceiveTimedOutmailboxProcessorAlreadyStarted$mailboxProcessorPostAndReplyTimedOut)mailboxProcessorPostAndAsyncReplyTimedOut cannotMutatenotAPermutationfailedReadEnoughBytesaddressOpNotFirstClassgenericCompareFail1notUsedForHashingbadFormatStringdyInvDivByIntCoercedyInvOpAddCoercedyInvOpAddOverloaddyInvOpMultCoercedyInvOpMultOverload keyNotFoundstepCannotBeZerostartCannotBeNaNstepCannotBeNaNendCannotBeNaN checkInitcheckStaticInitnoNegateMinValuedelegateExpectedinvalidTupleTypes notATupleTypenotAFunctionTypetupleIndexOutOfRangeobjIsNullAndNoTypeprivateUnionType notAUnionTypeprivateExceptionTypenotAnExceptionTypeprivateRecordTypenotARecordTypenullsNotAllowedInArrayobjIsNotARecordkeyNotFoundAltfirstClassUsesOfSpliceprintfNotAFunTypeprintfMissingFormatSpecifier printfHashFormatSpecifierIllegalprintfPrecisonSpecifierIllegalprintfWidthSpecifierIllegalprintfSpecifierAfterIllegalprintfBadFormatSpecifier"printfBadIntegerForDynamicFomatterprintfExpectedWidthprintfExpectedPrecisionprintfBadFloatValuemultipleCompilationMappingsconstructorForUnionCaseNotFoundmoveNextNotCalledOrFinishedthisValueCannotBeMutatedoptionValueWasNoneQmissingRecordFieldQmissingUnionCaseQinvalidCaseIndexQexpectedTwoTypesQexpectedOneTypeQunrecognizedMethodCallQunexpectedHoleQtmmExpectedFunctionQtmmInvalidParamQtmmFunctionArgTypeMismatchQtmmVarTypeNotMatchRHS QtmmTupleQtmmExprNotMatchTupleQtmmIncorrectArgForRecordQtmmIncorrectArgForUnionQtmmExprTypeMismatchQtmmTrueAndFalseMustMatchQtmmCondMustBeBool QtmmInitArrayQtmmBadFieldTypeQtmmLowerUpperBoundMustBeInt%QtmmLoopBodyMustBeLambdaTakingIntegerQtmmGuardMustBeBoolQtmmBodyMustBeUnitQtmmFunTypeNotMatchDelegateQtmmRawQtmmExprHasWrongTypeQincorrectNumArgsQincorrectTypeQincorrectInstanceTypeQinvalidFuncTypeQtupleLengthsDifferQtupleAccessOutOfRangeQincompatibleRecordLengthQunionNeedsDiffNumArgsQstaticWithReceiverObjectQnonStaticNoReceiverObjectQwritingGetOnlyQreadingSetOnlyQparentCannotBeNullQfailedToBindPropertyQfailedToBindFieldQfailedToBindConstructorQfailedToBindTypeInAssemblyQwrongNumOfTypeArgsQillFormedAppOrLetQcannotTakeAddressQcannotBindToMethodQcannotBindPropertyQcannotBindFunctionQfailedToBindAssemblyQtypeArgumentOutOfRange'controlContinuationInvokedMultipleTimes GetString GetString1 GetString2 GetString3>T:Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute7T:Microsoft.FSharp.Core.RequireQualifiedAccessAttribute4T:Microsoft.FSharp.Core.ReflectedDefinitionAttribute2T:Microsoft.FSharp.Core.ReferenceEqualityAttribute FSharpRef`1contentsBF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.FSharpRef`1.contents#T:Microsoft.FSharp.Core.FSharpRef`1 PrintfModule$T:Microsoft.FSharp.Core.PrintfModulebprintfPrintFormatToStringBuilder StringBuilderBuilderFormat`1builderformat€ÕM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringBuilder``1(System.Text.StringBuilder,Microsoft.FSharp.Core.PrintfFormat{``0,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})fprintfPrintFormatToTextWriterTextWriterFormat`1 textWriter€ÈM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})fprintfnPrintFormatLineToTextWriter€ÌM:Microsoft.FSharp.Core.PrintfModule.PrintFormatLineToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})eprintfPrintFormatToError€®M:Microsoft.FSharp.Core.PrintfModule.PrintFormatToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})eprintfnPrintFormatLineToError€²M:Microsoft.FSharp.Core.PrintfModule.PrintFormatLineToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})printf PrintFormat€§M:Microsoft.FSharp.Core.PrintfModule.PrintFormat``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})printfnPrintFormatLine€«M:Microsoft.FSharp.Core.PrintfModule.PrintFormatLine``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})sprintfPrintFormatToStringThenStringFormat`1€ŸM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThen``1(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,System.String})kbprintfPrintFormatToStringBuilderThenBuilderFormat`2 continutationM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringBuilderThen``2(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,``0},System.Text.StringBuilder,Microsoft.FSharp.Core.PrintfFormat{``1,System.Text.StringBuilder,Microsoft.FSharp.Core.Unit,``0})kfprintfPrintFormatToTextWriterThenTextWriterFormat`2€øM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToTextWriterThen``2(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,``0},System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``1,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,``0})kprintfPrintFormatThenStringFormat`2€ÃM:Microsoft.FSharp.Core.PrintfModule.PrintFormatThen``2(Microsoft.FSharp.Core.FSharpFunc`2{System.String,``0},Microsoft.FSharp.Core.PrintfFormat{``1,Microsoft.FSharp.Core.Unit,System.String,``0})ksprintf€ËM:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThen``2(Microsoft.FSharp.Core.FSharpFunc`2{System.String,``0},Microsoft.FSharp.Core.PrintfFormat{``1,Microsoft.FSharp.Core.Unit,System.String,``0}) failwithfPrintFormatToStringThenFail€™M:Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail``2(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,``1})Format`44T:Microsoft.FSharp.Core.PrintfModule.BuilderFormat`23T:Microsoft.FSharp.Core.PrintfModule.StringFormat`27T:Microsoft.FSharp.Core.PrintfModule.TextWriterFormat`24T:Microsoft.FSharp.Core.PrintfModule.BuilderFormat`13T:Microsoft.FSharp.Core.PrintfModule.StringFormat`17T:Microsoft.FSharp.Core.PrintfModule.TextWriterFormat`1&T:Microsoft.FSharp.Core.PrintfFormat`5&T:Microsoft.FSharp.Core.PrintfFormat`41T:Microsoft.FSharp.Core.OptionalArgumentAttributeFSharpOption`1+T:Microsoft.FSharp.Core.FSharpOption`1.None+T:Microsoft.FSharp.Core.FSharpOption`1.Some&T:Microsoft.FSharp.Core.FSharpOption`1 OptionModule2d:\Depot\staging\src\fsharp\FSharp.Core\option.fsi$T:Microsoft.FSharp.Core.OptionModuleisSomeIsSome1d:\Depot\staging\src\fsharp\FSharp.Core\option.fsoptionWM:Microsoft.FSharp.Core.OptionModule.IsSome``1(Microsoft.FSharp.Core.FSharpOption{``0})isNoneIsNoneWM:Microsoft.FSharp.Core.OptionModule.IsNone``1(Microsoft.FSharp.Core.FSharpOption{``0})GetValueYM:Microsoft.FSharp.Core.OptionModule.GetValue``1(Microsoft.FSharp.Core.FSharpOption{``0})CountVM:Microsoft.FSharp.Core.OptionModule.Count``1(Microsoft.FSharp.Core.FSharpOption{``0})foldFold€­M:Microsoft.FSharp.Core.OptionModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,Microsoft.FSharp.Core.FSharpOption{``0})foldBackFoldBack€±M:Microsoft.FSharp.Core.OptionModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``1}},Microsoft.FSharp.Core.FSharpOption{``0},``1)€ŽM:Microsoft.FSharp.Core.OptionModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Core.FSharpOption{``0})€ŽM:Microsoft.FSharp.Core.OptionModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Core.FSharpOption{``0})€›M:Microsoft.FSharp.Core.OptionModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpOption{``0})€€M:Microsoft.FSharp.Core.OptionModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Core.FSharpOption{``0})bindBindbinder€¥M:Microsoft.FSharp.Core.OptionModule.Bind``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Core.FSharpOption{``0})ToArrayXM:Microsoft.FSharp.Core.OptionModule.ToArray``1(Microsoft.FSharp.Core.FSharpOption{``0})toListToListWM:Microsoft.FSharp.Core.OptionModule.ToList``1(Microsoft.FSharp.Core.FSharpOption{``0})OptimizedClosures)T:Microsoft.FSharp.Core.OptimizedClosures FSharpFunc`3DM:Microsoft.FSharp.Core.OptimizedClosures.FSharpFunc`3.Invoke(`0,`1)Adapt€ŽM:Microsoft.FSharp.Core.OptimizedClosures.FSharpFunc`3.Adapt(Microsoft.FSharp.Core.FSharpFunc`2{`0,Microsoft.FSharp.Core.FSharpFunc`2{`1,`2}})M:Microsoft.FSharp.Core.Operators.op_RangeStep``2(``0,``1,``0)lockLock lockObjectqM:Microsoft.FSharp.Core.Operators.Lock``2(``0,Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,``1})usingUsing[M:Microsoft.FSharp.Core.Operators.Using``2(``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1})typeofTypeOf+M:Microsoft.FSharp.Core.Operators.TypeOf``1 typedefof TypeDefOf.M:Microsoft.FSharp.Core.Operators.TypeDefOf``1sizeofSizeOf+M:Microsoft.FSharp.Core.Operators.SizeOf``1Hash.M:Microsoft.FSharp.Core.Operators.Hash``1(``0) limitedHashlimitBM:Microsoft.FSharp.Core.Operators.limitedHash``1(System.Int32,``0)abs-M:Microsoft.FSharp.Core.Operators.Abs``1(``0)acosAcos.M:Microsoft.FSharp.Core.Operators.Acos``1(``0)asinAsin.M:Microsoft.FSharp.Core.Operators.Asin``1(``0)atanAtan.M:Microsoft.FSharp.Core.Operators.Atan``1(``0)atan2Atan23M:Microsoft.FSharp.Core.Operators.Atan2``2(``0,``0)ceilCeiling1M:Microsoft.FSharp.Core.Operators.Ceiling``1(``0)expExp-M:Microsoft.FSharp.Core.Operators.Exp``1(``0)floorFloor/M:Microsoft.FSharp.Core.Operators.Floor``1(``0)signSign.M:Microsoft.FSharp.Core.Operators.Sign``1(``0)roundRound/M:Microsoft.FSharp.Core.Operators.Round``1(``0)logLog-M:Microsoft.FSharp.Core.Operators.Log``1(``0)log10Log10/M:Microsoft.FSharp.Core.Operators.Log10``1(``0)sqrtSqrt.M:Microsoft.FSharp.Core.Operators.Sqrt``2(``0)cosCos-M:Microsoft.FSharp.Core.Operators.Cos``1(``0)coshCosh.M:Microsoft.FSharp.Core.Operators.Cosh``1(``0)sinSin-M:Microsoft.FSharp.Core.Operators.Sin``1(``0)sinhSinh.M:Microsoft.FSharp.Core.Operators.Sinh``1(``0)tanTan-M:Microsoft.FSharp.Core.Operators.Tan``1(``0)tanhTanh.M:Microsoft.FSharp.Core.Operators.Tanh``1(``0)truncateTruncate2M:Microsoft.FSharp.Core.Operators.Truncate``1(``0)op_Exponentiation?M:Microsoft.FSharp.Core.Operators.op_Exponentiation``2(``0,``1)pown PowIntegerAM:Microsoft.FSharp.Core.Operators.PowInteger``1(``0,System.Int32)ToByte0M:Microsoft.FSharp.Core.Operators.ToByte``1(``0)ToSByte1M:Microsoft.FSharp.Core.Operators.ToSByte``1(``0)ToInt161M:Microsoft.FSharp.Core.Operators.ToInt16``1(``0)ToUInt162M:Microsoft.FSharp.Core.Operators.ToUInt16``1(``0)ToInt/M:Microsoft.FSharp.Core.Operators.ToInt``1(``0)enumToEnum9M:Microsoft.FSharp.Core.Operators.ToEnum``1(System.Int32)ToInt321M:Microsoft.FSharp.Core.Operators.ToInt32``1(``0)ToUInt322M:Microsoft.FSharp.Core.Operators.ToUInt32``1(``0)ToInt641M:Microsoft.FSharp.Core.Operators.ToInt64``1(``0)ToUInt642M:Microsoft.FSharp.Core.Operators.ToUInt64``1(``0)ToSingle2M:Microsoft.FSharp.Core.Operators.ToSingle``1(``0)ToDouble2M:Microsoft.FSharp.Core.Operators.ToDouble``1(``0)ToIntPtr2M:Microsoft.FSharp.Core.Operators.ToIntPtr``1(``0) ToUIntPtr3M:Microsoft.FSharp.Core.Operators.ToUIntPtr``1(``0)2M:Microsoft.FSharp.Core.Operators.ToString``1(``0) ToDecimal3M:Microsoft.FSharp.Core.Operators.ToDecimal``1(``0)ToChar0M:Microsoft.FSharp.Core.Operators.ToChar``1(``0) |KeyValue|KeyValuePatternKeyValuePair`2 keyValuePairfM:Microsoft.FSharp.Core.Operators.KeyValuePattern``2(System.Collections.Generic.KeyValuePair{``0,``1})OperatorIntrinsics4T:Microsoft.FSharp.Core.Operators.OperatorIntrinsics GetArraySlice€®M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice``1(``0[],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32}) SetArraySlice€´M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice``1(``0[],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[])GetArraySlice2Dstart1finish1start2finish2M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice2D``1(``0[0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice2D"M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice2D``1(``0[0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:])GetArraySlice3Dstart3finish3|M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice3D``1(``0[0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice3DŠM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice3D``1(``0[0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:,0:])GetArraySlice4Dstart4finish4áM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetArraySlice4D``1(``0[0:,0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32})SetArraySlice4DòM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SetArraySlice4D``1(``0[0:,0:,0:,0:],Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32},``0[0:,0:,0:,0:])GetStringSlice€´M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.GetStringSlice(System.String,Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Int32}) RangeInt32LThis function is for use by compiled F# code and should not be used directlystopgM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt32(System.Int32,System.Int32,System.Int32) RangeDoublekM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeDouble(System.Double,System.Double,System.Double) RangeSinglekM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeSingle(System.Single,System.Single,System.Single) RangeInt64gM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt64(System.Int64,System.Int64,System.Int64) RangeUInt64kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt64(System.UInt64,System.UInt64,System.UInt64) RangeUInt32kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt32(System.UInt32,System.UInt32,System.UInt32) RangeIntPtrkM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeIntPtr(System.IntPtr,System.IntPtr,System.IntPtr) RangeUIntPtroM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUIntPtr(System.UIntPtr,System.UIntPtr,System.UIntPtr) RangeInt16gM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeInt16(System.Int16,System.Int16,System.Int16) RangeUInt16kM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeUInt16(System.UInt16,System.UInt16,System.UInt16) RangeSBytegM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeSByte(System.SByte,System.SByte,System.SByte) RangeBytecM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeByte(System.Byte,System.Byte,System.Byte) RangeCharWM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeChar(System.Char,System.Char) RangeGeneric€¥M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeGeneric``1(``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},``0,``0)RangeStepGeneric€­M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RangeStepGeneric``2(``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,``0,``1) AbsDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AbsDynamic``1(``0) AcosDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AcosDynamic``1(``0) AsinDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AsinDynamic``1(``0) AtanDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.AtanDynamic``1(``0) Atan2DynamicMM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.Atan2Dynamic``2(``0,``0)CeilingDynamicKM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CeilingDynamic``1(``0) ExpDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.ExpDynamic``1(``0) FloorDynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.FloorDynamic``1(``0)TruncateDynamicLM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TruncateDynamic``1(``0) RoundDynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.RoundDynamic``1(``0) SignDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SignDynamic``1(``0) LogDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.LogDynamic``1(``0) Log10DynamicIM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.Log10Dynamic``1(``0) SqrtDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SqrtDynamic``2(``0) CosDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CosDynamic``1(``0) CoshDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.CoshDynamic``1(``0) SinDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SinDynamic``1(``0) SinhDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.SinhDynamic``1(``0) TanDynamicGM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TanDynamic``1(``0) TanhDynamicHM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.TanhDynamic``1(``0) PowDynamicKM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDynamic``2(``0,``1)PowByteVM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowByte(System.Byte,System.Int32)PowSByteXM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowSByte(System.SByte,System.Int32)PowInt16XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt16(System.Int16,System.Int32) PowUInt16ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt16(System.UInt16,System.Int32)PowInt32XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt32(System.Int32,System.Int32) PowUInt32ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt32(System.UInt32,System.Int32)PowInt64XM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowInt64(System.Int64,System.Int32) PowUInt64ZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUInt64(System.UInt64,System.Int32) PowIntPtrZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowIntPtr(System.IntPtr,System.Int32) PowUIntPtr\M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowUIntPtr(System.UIntPtr,System.Int32) PowSingleZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowSingle(System.Single,System.Int32) PowDoubleZM:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDouble(System.Double,System.Int32) PowDecimal\M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowDecimal(System.Decimal,System.Int32) PowGenericexponent€¬M:Microsoft.FSharp.Core.Operators.OperatorIntrinsics.PowGeneric``1(``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},``0,System.Int32) Unchecked+T:Microsoft.FSharp.Core.Operators.Unchecked defaultof DefaultOf8M:Microsoft.FSharp.Core.Operators.Unchecked.DefaultOf``1?M:Microsoft.FSharp.Core.Operators.Unchecked.Compare``1(``0,``0)equals>M:Microsoft.FSharp.Core.Operators.Unchecked.Equals``1(``0,``0)8M:Microsoft.FSharp.Core.Operators.Unchecked.Hash``1(``0)Checked)T:Microsoft.FSharp.Core.Operators.CheckedBM:Microsoft.FSharp.Core.Operators.Checked.op_UnaryNegation``1(``0)DM:Microsoft.FSharp.Core.Operators.Checked.op_Subtraction``3(``0,``1)AM:Microsoft.FSharp.Core.Operators.Checked.op_Addition``3(``0,``1)AM:Microsoft.FSharp.Core.Operators.Checked.op_Multiply``3(``0,``1)8M:Microsoft.FSharp.Core.Operators.Checked.ToByte``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToSByte``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt16``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt16``1(``0)7M:Microsoft.FSharp.Core.Operators.Checked.ToInt``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt32``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt32``1(``0)9M:Microsoft.FSharp.Core.Operators.Checked.ToInt64``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToUInt64``1(``0):M:Microsoft.FSharp.Core.Operators.Checked.ToIntPtr``1(``0);M:Microsoft.FSharp.Core.Operators.Checked.ToUIntPtr``1(``0)8M:Microsoft.FSharp.Core.Operators.Checked.ToChar``1(``0)NumericLiterals'T:Microsoft.FSharp.Core.NumericLiteralsNumericLiteralI7T:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralIFromZeroCM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromZero``1FromOneBM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromOne``1 FromInt32RM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt32``1(System.Int32) FromInt64RM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt64``1(System.Int64) FromStringTM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromString``1(System.String)FromInt64DynamicVM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromInt64Dynamic(System.Int64)FromStringDynamicXM:Microsoft.FSharp.Core.NumericLiterals.NumericLiteralI.FromStringDynamic(System.String)+T:Microsoft.FSharp.Core.NoEqualityAttribute4T:Microsoft.FSharp.Core.NoDynamicInvocationAttribute-T:Microsoft.FSharp.Core.NoComparisonAttribute(T:Microsoft.FSharp.Core.MeasureAttribute=T:Microsoft.FSharp.Core.MeasureAnnotatedAbbreviationAttribute-T:Microsoft.FSharp.Core.MatchFailureExceptionData0Data1Data2(T:Microsoft.FSharp.Core.LiteralAttributeLanguagePrimitives*T:Microsoft.FSharp.Core.LanguagePrimitivesGenericEqualityFM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEquality``1(``0,``0)GenericEqualityERHM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityER``1(``0,``0)GenericEqualityWithComparercompwM:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityWithComparer``1(System.Collections.IEqualityComparer,``0,``0)GenericComparisonHM:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparison``1(``0,``0)GenericComparisonWithComparerqM:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparisonWithComparer``1(System.Collections.IComparer,``0,``0)GenericLessThanFM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLessThan``1(``0,``0)GenericGreaterThanIM:Microsoft.FSharp.Core.LanguagePrimitives.GenericGreaterThan``1(``0,``0)GenericLessOrEqualIM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLessOrEqual``1(``0,``0)GenericGreaterOrEqualLM:Microsoft.FSharp.Core.LanguagePrimitives.GenericGreaterOrEqual``1(``0,``0)GenericMinimumEM:Microsoft.FSharp.Core.LanguagePrimitives.GenericMinimum``1(``0,``0)GenericMaximumEM:Microsoft.FSharp.Core.LanguagePrimitives.GenericMaximum``1(``0,``0)PhysicalEqualityGM:Microsoft.FSharp.Core.LanguagePrimitives.PhysicalEquality``1(``0,``0) PhysicalHash?M:Microsoft.FSharp.Core.LanguagePrimitives.PhysicalHash``1(``0)GenericEqualityComparerBP:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityComparerGenericEqualityERComparerDP:Microsoft.FSharp.Core.LanguagePrimitives.GenericEqualityERComparerGenericComparer:P:Microsoft.FSharp.Core.LanguagePrimitives.GenericComparerFastGenericComparer IComparer`1AM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericComparer``1FastGenericComparerCanBeNullJM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericComparerCanBeNull``1FastGenericEqualityComparerIEqualityComparer`1IM:Microsoft.FSharp.Core.LanguagePrimitives.FastGenericEqualityComparer``1"FastLimitedGenericEqualityComparer^M:Microsoft.FSharp.Core.LanguagePrimitives.FastLimitedGenericEqualityComparer``1(System.Int32) GenericHash>M:Microsoft.FSharp.Core.LanguagePrimitives.GenericHash``1(``0)GenericLimitedHashRM:Microsoft.FSharp.Core.LanguagePrimitives.GenericLimitedHash``1(System.Int32,``0)GenericHashWithCompareroM:Microsoft.FSharp.Core.LanguagePrimitives.GenericHashWithComparer``1(System.Collections.IEqualityComparer,``0) EnumOfValue>M:Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue``2(``0) EnumToValue>M:Microsoft.FSharp.Core.LanguagePrimitives.EnumToValue``2(``0)FloatWithMeasureuMM:Microsoft.FSharp.Core.LanguagePrimitives.FloatWithMeasure``1(System.Double)Float32WithMeasureOM:Microsoft.FSharp.Core.LanguagePrimitives.Float32WithMeasure``1(System.Single)DecimalWithMeasurePM:Microsoft.FSharp.Core.LanguagePrimitives.DecimalWithMeasure``1(System.Decimal)Int32WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int32WithMeasure``1(System.Int32)Int64WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int64WithMeasure``1(System.Int64)Int16WithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.Int16WithMeasure``1(System.Int16)SByteWithMeasureLM:Microsoft.FSharp.Core.LanguagePrimitives.SByteWithMeasure``1(System.SByte) ParseInt32sDM:Microsoft.FSharp.Core.LanguagePrimitives.ParseInt32(System.String) ParseUInt32EM:Microsoft.FSharp.Core.LanguagePrimitives.ParseUInt32(System.String) ParseInt64DM:Microsoft.FSharp.Core.LanguagePrimitives.ParseInt64(System.String) ParseUInt64EM:Microsoft.FSharp.Core.LanguagePrimitives.ParseUInt64(System.String)GenericZeroDynamic@M:Microsoft.FSharp.Core.LanguagePrimitives.GenericZeroDynamic``1GenericOneDynamic?M:Microsoft.FSharp.Core.LanguagePrimitives.GenericOneDynamic``1AdditionDynamicZThis function is for use by dynamic invocations of F# code and should not be used directlyFM:Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamic``3(``0,``1)CheckedAdditionDynamicMM:Microsoft.FSharp.Core.LanguagePrimitives.CheckedAdditionDynamic``3(``0,``1)MultiplyDynamicFM:Microsoft.FSharp.Core.LanguagePrimitives.MultiplyDynamic``3(``0,``1)CheckedMultiplyDynamicMM:Microsoft.FSharp.Core.LanguagePrimitives.CheckedMultiplyDynamic``3(``0,``1)DivideByIntDynamicRM:Microsoft.FSharp.Core.LanguagePrimitives.DivideByIntDynamic``1(``0,System.Int32) GenericZero9M:Microsoft.FSharp.Core.LanguagePrimitives.GenericZero``1 GenericOne8M:Microsoft.FSharp.Core.LanguagePrimitives.GenericOne``1 DivideByIntKM:Microsoft.FSharp.Core.LanguagePrimitives.DivideByInt``1(``0,System.Int32) ErrorStrings7T:Microsoft.FSharp.Core.LanguagePrimitives.ErrorStringsInputSequenceEmptyStringIThis value is for use by compiled F# code and should not be used directlyInputArrayEmptyStringAddressOpNotFirstClassStringNoNegateMinValueStringInputMustBeNonNegativeStringIntrinsicOperators=T:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperatorsop_Amp/In F# code, use 'e1 && e2' instead of 'e1 & e2'cM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_Amp(System.Boolean,System.Boolean) op_BooleanAndjM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_BooleanAnd(System.Boolean,System.Boolean)orOr0In F# code, use 'e1 || e2' instead of 'e1 or e2'_M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.Or(System.Boolean,System.Boolean) op_BooleanOriM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_BooleanOr(System.Boolean,System.Boolean) op_AddressOfRM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_AddressOf``1(``0)op_IntegerAddressOfYM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.op_IntegerAddressOf``1(``0)IntrinsicFunctions=T:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions UnboxGeneric\M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxGeneric``1(System.Object) UnboxFastYM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxFast``1(System.Object)TypeTestGeneric_M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric``1(System.Object) TypeTestFast\M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.TypeTestFast``1(System.Object)cM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetString(System.String,System.Int32)CreateInstanceOM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.CreateInstance``1 MakeDecimallowmediumhigh isNegative€ŒM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.MakeDecimal(System.Int32,System.Int32,System.Int32,System.Boolean,System.Byte)MM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.Dispose``1(``0)FailInitFM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.FailInitFailStaticInitLM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.FailStaticInit CheckThisOM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.CheckThis``1(``0)GetArray]M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray``1(``0[],System.Int32) GetArray2Dindex1index2qM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray2D``1(``0[0:,0:],System.Int32,System.Int32) GetArray3Dindex3€M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray3D``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32) GetArray4Dindex4€‘M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.GetArray4D``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)SetArrayaM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray``1(``0[],System.Int32,``0) SetArray2DuM:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray2D``1(``0[0:,0:],System.Int32,System.Int32,``0) SetArray3D€…M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray3D``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32,``0) SetArray4D€•M:Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.SetArray4D``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32,``0) HashCompare6T:Microsoft.FSharp.Core.LanguagePrimitives.HashComparePhysicalHashIntrinsicfThis function is a primitive library routine used by optimized F# code and should not be used directlyTM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.PhysicalHashIntrinsic``1(``0)PhysicalEqualityIntrinsic\M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.PhysicalEqualityIntrinsic``1(``0,``0)GenericHashIntrinsicSM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericHashIntrinsic``1(``0)LimitedGenericHashIntrinsicgM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.LimitedGenericHashIntrinsic``1(System.Int32,``0) GenericHashWithComparerIntrinsic€„M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic``1(System.Collections.IEqualityComparer,``0)&GenericComparisonWithComparerIntrinsic€†M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic``1(System.Collections.IComparer,``0,``0)GenericComparisonIntrinsic]M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericComparisonIntrinsic``1(``0,``0)GenericEqualityIntrinsic[M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityIntrinsic``1(``0,``0)GenericEqualityERIntrinsic]M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic``1(``0,``0)$GenericEqualityWithComparerIntrinsic€ŒM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic``1(System.Collections.IEqualityComparer,``0,``0)GenericLessThanIntrinsic[M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericLessThanIntrinsic``1(``0,``0)GenericGreaterThanIntrinsic^M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericGreaterThanIntrinsic``1(``0,``0)GenericGreaterOrEqualIntrinsicaM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericGreaterOrEqualIntrinsic``1(``0,``0)GenericLessOrEqualIntrinsic^M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.GenericLessOrEqualIntrinsic``1(``0,``0)FastHashTuple2€†M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple2``2(System.Collections.IEqualityComparer,System.Tuple`2{``0,``1})FastHashTuple3€ŠM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple3``3(System.Collections.IEqualityComparer,System.Tuple`3{``0,``1,``2})FastHashTuple4€ŽM:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple4``4(System.Collections.IEqualityComparer,System.Tuple`4{``0,``1,``2,``3})FastHashTuple5€’M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastHashTuple5``5(System.Collections.IEqualityComparer,System.Tuple`5{``0,``1,``2,``3,``4})FastEqualsTuple2tuple1tuple2€ M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple2``2(System.Collections.IEqualityComparer,System.Tuple`2{``0,``1},System.Tuple`2{``0,``1})FastEqualsTuple3€¨M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple3``3(System.Collections.IEqualityComparer,System.Tuple`3{``0,``1,``2},System.Tuple`3{``0,``1,``2})FastEqualsTuple4€°M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple4``4(System.Collections.IEqualityComparer,System.Tuple`4{``0,``1,``2,``3},System.Tuple`4{``0,``1,``2,``3})FastEqualsTuple5€¸M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastEqualsTuple5``5(System.Collections.IEqualityComparer,System.Tuple`5{``0,``1,``2,``3,``4},System.Tuple`5{``0,``1,``2,``3,``4})FastCompareTuple2€™M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple2``2(System.Collections.IComparer,System.Tuple`2{``0,``1},System.Tuple`2{``0,``1})FastCompareTuple3€¡M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple3``3(System.Collections.IComparer,System.Tuple`3{``0,``1,``2},System.Tuple`3{``0,``1,``2})FastCompareTuple4€©M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple4``4(System.Collections.IComparer,System.Tuple`4{``0,``1,``2,``3},System.Tuple`4{``0,``1,``2,``3})FastCompareTuple5€±M:Microsoft.FSharp.Core.LanguagePrimitives.HashCompare.FastCompareTuple5``5(System.Collections.IComparer,System.Tuple`5{``0,``1,``2,``3,``4},System.Tuple`5{``0,``1,``2,``3,``4})*T:Microsoft.FSharp.Core.InterfaceAttribute3T:Microsoft.FSharp.Core.GeneralizableValueAttribute#T:Microsoft.FSharp.Core.FuncConvertFormat`5 T:Microsoft.FSharp.Core.Format`5 T:Microsoft.FSharp.Core.Format`4&T:Microsoft.FSharp.Core.FSharpTypeFunc;T:Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute$T:Microsoft.FSharp.Core.FSharpFunc`2ExtraTopLevelOperators.T:Microsoft.FSharp.Core.ExtraTopLevelOperatorsAd:\Depot\staging\src\fsharp\FSharp.Core\fslib-extra-pervasives.fs€±M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormat``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€µM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLine``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€¸M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€¼M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLineToError``1(Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})PrintFormatToString€¥M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToString``1(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,System.String})€£M:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToStringThenFail``2(Microsoft.FSharp.Core.PrintfFormat{``0,Microsoft.FSharp.Core.Unit,System.String,``1})€ÒM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})€ÖM:Microsoft.FSharp.Core.ExtraTopLevelOperators.PrintFormatLineToTextWriter``1(System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat{``0,System.IO.TextWriter,Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}) CreateSetSet`1hM:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateSet``1(System.Collections.Generic.IEnumerable{``0})asyncDefaultAsyncBuilderControl AsyncBuilderBP:Microsoft.FSharp.Core.ExtraTopLevelOperators.DefaultAsyncBuilder?M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToSingle``1(``0)?M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToDouble``1(``0)=M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToByte``1(``0)>M:Microsoft.FSharp.Core.ExtraTopLevelOperators.ToSByte``1(``0)dictCreateDictionary IDictionary`2 keyValuePairs€ƒM:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateDictionary``2(System.Collections.Generic.IEnumerable{System.Tuple`2{``0,``1}})array2D CreateArray2D?rowslM:Microsoft.FSharp.Core.ExtraTopLevelOperators.CreateArray2D``2(System.Collections.Generic.IEnumerable{``0}) op_SpliceSpliceExpression expressionoM:Microsoft.FSharp.Core.ExtraTopLevelOperators.SpliceExpression``1(Microsoft.FSharp.Quotations.FSharpExpr{``0})op_SpliceUntypedSpliceUntypedExpressionqM:Microsoft.FSharp.Core.ExtraTopLevelOperators.SpliceUntypedExpression``1(Microsoft.FSharp.Quotations.FSharpExpr)|Lazy| LazyPatternOM:Microsoft.FSharp.Core.ExtraTopLevelOperators.LazyPattern``1(System.Lazy{``0})-T:Microsoft.FSharp.Core.ExperimentalAttribute6T:Microsoft.FSharp.Core.EqualityConditionalOnAttribute+T:Microsoft.FSharp.Core.EntryPointAttribute-T:Microsoft.FSharp.Core.DefaultValueAttribute4T:Microsoft.FSharp.Core.DefaultAugmentationAttribute/T:Microsoft.FSharp.Core.CustomEqualityAttribute1T:Microsoft.FSharp.Core.CustomComparisonAttributeCompilerServices/d:\Depot\staging\src\fsharp\FSharp.Core\seq.fsiGetFreshEnumerator.d:\Depot\staging\src\fsharp\FSharp.Core\seq.fsGeneratedSequenceBase`1 IEnumerator`1SM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.GetFreshEnumerator GenerateNextresultzM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.GenerateNext(System.Collections.Generic.IEnumerable{`0}@)CloseFM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.Closeget_CheckCloseKP:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.CheckCloseget_LastGeneratedNP:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.LastGeneratedFM:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.#ctorRuntimeHelpers7T:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers StructBox`1 get_ComparerEnumerateWhile€ÄM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateWhile``1(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,System.Boolean},System.Collections.Generic.IEnumerable{``0})EnumerateThenFinally€ÖM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateThenFinally``1(System.Collections.Generic.IEnumerable{``0},Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})EnumerateFromFunctionscreatemoveNextcurrent€øM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateFromFunctions``2(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,``0},Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Core.FSharpFunc`2{``0,``1})EnumerateUsing CollectionzM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.EnumerateUsing``3(``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}) CreateEventDelegateArgsIEvent`2 addHandler removeHandler createHandlerjM:Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.FSharpFunc`2{System.Object,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.Unit}},``0}) IEnumerator IEnumerable@T:Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`10T:Microsoft.FSharp.Core.CompilerMessageAttribute-T:Microsoft.FSharp.Core.CompiledNameAttribute6T:Microsoft.FSharp.Core.CompilationSourceNameAttributeFlagsAttributeSystem.FlagsAttributeQF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.NoneStaticSF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.StaticInstanceUF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.Instance ModuleSuffixYF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.ModuleSuffixUseNullAsTrueValue_F:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.UseNullAsTrueValueEventRF:Microsoft.FSharp.Core.Microsoft.FSharp.Core.CompilationRepresentationFlags.Event6T:Microsoft.FSharp.Core.CompilationRepresentationFlags:T:Microsoft.FSharp.Core.CompilationRepresentationAttribute3T:Microsoft.FSharp.Core.CompilationMappingAttribute:T:Microsoft.FSharp.Core.CompilationArgumentCountsAttribute8T:Microsoft.FSharp.Core.ComparisonConditionalOnAttribute&T:Microsoft.FSharp.Core.ClassAttributeFSharpChoice`7Item Choice1Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice1Of7 Choice2Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice2Of7 Choice3Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice3Of7 Choice4Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice4Of7 Choice5Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice5Of7 Choice6Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice6Of7 Choice7Of71T:Microsoft.FSharp.Core.FSharpChoice`7.Choice7Of7&T:Microsoft.FSharp.Core.FSharpChoice`7FSharpChoice`6 Choice1Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice1Of6 Choice2Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice2Of6 Choice3Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice3Of6 Choice4Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice4Of6 Choice5Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice5Of6 Choice6Of61T:Microsoft.FSharp.Core.FSharpChoice`6.Choice6Of6&T:Microsoft.FSharp.Core.FSharpChoice`6FSharpChoice`5 Choice1Of51T:Microsoft.FSharp.Core.FSharpChoice`5.Choice1Of5 Choice2Of51T:Microsoft.FSharp.Core.FSharpChoice`5.Choice2Of5 Choice3Of51T:Microsoft.FSharp.Core.FSharpChoice`5.Choice3Of5 Choice4Of51T:Microsoft.FSharp.Core.FSharpChoice`5.Choice4Of5 Choice5Of51T:Microsoft.FSharp.Core.FSharpChoice`5.Choice5Of5&T:Microsoft.FSharp.Core.FSharpChoice`5FSharpChoice`4 Choice1Of41T:Microsoft.FSharp.Core.FSharpChoice`4.Choice1Of4 Choice2Of41T:Microsoft.FSharp.Core.FSharpChoice`4.Choice2Of4 Choice3Of41T:Microsoft.FSharp.Core.FSharpChoice`4.Choice3Of4 Choice4Of41T:Microsoft.FSharp.Core.FSharpChoice`4.Choice4Of4&T:Microsoft.FSharp.Core.FSharpChoice`4FSharpChoice`3 Choice1Of31T:Microsoft.FSharp.Core.FSharpChoice`3.Choice1Of3 Choice2Of31T:Microsoft.FSharp.Core.FSharpChoice`3.Choice2Of3 Choice3Of31T:Microsoft.FSharp.Core.FSharpChoice`3.Choice3Of3&T:Microsoft.FSharp.Core.FSharpChoice`3FSharpChoice`2 Choice1Of21T:Microsoft.FSharp.Core.FSharpChoice`2.Choice1Of2 Choice2Of21T:Microsoft.FSharp.Core.FSharpChoice`2.Choice2Of2&T:Microsoft.FSharp.Core.FSharpChoice`2)T:Microsoft.FSharp.Core.CLIEventAttribute1T:Microsoft.FSharp.Core.AutoSerializableAttribute)T:Microsoft.FSharp.Core.AutoOpenAttribute1T:Microsoft.FSharp.Core.AllowNullLiteralAttribute.T:Microsoft.FSharp.Core.AbstractClassAttributeRunSynchronouslyAsync`1Async computationtimeoutcancellationToken€ÝM:Microsoft.FSharp.Control.FSharpAsync.RunSynchronously``1(Microsoft.FSharp.Control.FSharpAsync{``0},Microsoft.FSharp.Core.FSharpOption{System.Int32},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})Start€µM:Microsoft.FSharp.Control.FSharpAsync.Start(Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})CatchZM:Microsoft.FSharp.Control.FSharpAsync.Catch``1(Microsoft.FSharp.Control.FSharpAsync{``0}) TryCancelledOperationCanceledException€ÂM:Microsoft.FSharp.Control.FSharpAsync.TryCancelled``1(Microsoft.FSharp.Control.FSharpAsync{``0},Microsoft.FSharp.Core.FSharpFunc`2{System.OperationCanceledException,Microsoft.FSharp.Core.Unit})OnCancel interruption€ŠM:Microsoft.FSharp.Control.FSharpAsync.OnCancel(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit})get_CancellationToken8P:Microsoft.FSharp.Control.FSharpAsync.CancellationTokenCancelDefaultToken9M:Microsoft.FSharp.Control.FSharpAsync.CancelDefaultTokenget_DefaultCancellationToken?P:Microsoft.FSharp.Control.FSharpAsync.DefaultCancellationToken StartChildmillisecondsTimeout€M:Microsoft.FSharp.Control.FSharpAsync.StartChild``1(Microsoft.FSharp.Control.FSharpAsync{``0},Microsoft.FSharp.Core.FSharpOption{System.Int32})Parallel computations€…M:Microsoft.FSharp.Control.FSharpAsync.Parallel``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Control.FSharpAsync{``0}})SwitchToNewThread8M:Microsoft.FSharp.Control.FSharpAsync.SwitchToNewThreadSwitchToThreadPool9M:Microsoft.FSharp.Control.FSharpAsync.SwitchToThreadPoolSwitchToContextSynchronizationContext syncContext_M:Microsoft.FSharp.Control.FSharpAsync.SwitchToContext(System.Threading.SynchronizationContext)FromContinuationscallbackM:Microsoft.FSharp.Control.FSharpAsync.FromContinuations``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`3{Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{System.Exception,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{System.OperationCanceledException,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.Unit}) AwaitEventDelevent cancelAction€ÜM:Microsoft.FSharp.Control.FSharpAsync.AwaitEvent``2(Microsoft.FSharp.Control.IEvent{``0,``1},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}})AwaitWaitHandle WaitHandle waitHandle€„M:Microsoft.FSharp.Control.FSharpAsync.AwaitWaitHandle(System.Threading.WaitHandle,Microsoft.FSharp.Core.FSharpOption{System.Int32})AwaitIAsyncResult IAsyncResultiar~M:Microsoft.FSharp.Control.FSharpAsync.AwaitIAsyncResult(System.IAsyncResult,Microsoft.FSharp.Core.FSharpOption{System.Int32})SleepmillisecondsDueTime:M:Microsoft.FSharp.Control.FSharpAsync.Sleep(System.Int32) FromBeginEnd AsyncCallback beginAction endAction\M:Microsoft.FSharp.Control.FSharpAsync.FromBeginEnd``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`2{System.AsyncCallback,System.Object},System.IAsyncResult},Microsoft.FSharp.Core.FSharpFunc`2{System.IAsyncResult,``0},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}})Arg1dM:Microsoft.FSharp.Control.FSharpAsync.FromBeginEnd``2(``0,Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`3{``0,System.AsyncCallback,System.Object},System.IAsyncResult},Microsoft.FSharp.Core.FSharpFunc`2{System.IAsyncResult,``1},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}})Arg2lM:Microsoft.FSharp.Control.FSharpAsync.FromBeginEnd``3(``0,``1,Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`4{``0,``1,System.AsyncCallback,System.Object},System.IAsyncResult},Microsoft.FSharp.Core.FSharpFunc`2{System.IAsyncResult,``2},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}})Arg3tM:Microsoft.FSharp.Control.FSharpAsync.FromBeginEnd``4(``0,``1,``2,Microsoft.FSharp.Core.FSharpFunc`2{System.Tuple`5{``0,``1,``2,System.AsyncCallback,System.Object},System.IAsyncResult},Microsoft.FSharp.Core.FSharpFunc`2{System.IAsyncResult,``3},Microsoft.FSharp.Core.FSharpOption{Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit}}) AsBeginEnd_M:Microsoft.FSharp.Control.FSharpAsync.AsBeginEnd``1(Microsoft.FSharp.Control.FSharpAsync{``0})[M:Microsoft.FSharp.Control.FSharpAsync.Ignore``1(Microsoft.FSharp.Control.FSharpAsync{``0})StartWithContinuations continuationexceptionContinuationcancellationContinuation¦M:Microsoft.FSharp.Control.FSharpAsync.StartWithContinuations``1(Microsoft.FSharp.Control.FSharpAsync{``0},Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{System.Exception,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpFunc`2{System.OperationCanceledException,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})StartImmediate€¾M:Microsoft.FSharp.Control.FSharpAsync.StartImmediate(Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})For€ÊM:Microsoft.FSharp.Control.FSharpAsyncBuilder.For``1(System.Collections.Generic.IEnumerable{``0},Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit}})Zero2M:Microsoft.FSharp.Control.FSharpAsyncBuilder.ZeroCombine computation1 computation2€¤M:Microsoft.FSharp.Control.FSharpAsyncBuilder.Combine``1(Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Control.FSharpAsync{``0})While€ÃM:Microsoft.FSharp.Control.FSharpAsyncBuilder.While(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,System.Boolean},Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit})ReturnM:Microsoft.FSharp.Control.FSharpAsyncReplyChannel`1.Reply(`0)MsgMailboxProcessor`1M:Microsoft.FSharp.Control.FSharpMailboxProcessor`1.#ctor(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Control.FSharpMailboxProcessor{`0},Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})M:Microsoft.FSharp.Control.FSharpMailboxProcessor`1.Start(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Control.FSharpMailboxProcessor{`0},Microsoft.FSharp.Control.FSharpAsync{Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Core.FSharpOption{System.Threading.CancellationToken})PostP:Microsoft.FSharp.Collections.FSharpList`1.Item(System.Int32)Consheadtail`M:Microsoft.FSharp.Collections.FSharpList`1.Cons(`0,Microsoft.FSharp.Collections.FSharpList{`0})$T:Microsoft.FSharp.Collections.seq`1%T:Microsoft.FSharp.Collections.list`1 FSharpSet`1 ICollection`1*T:Microsoft.FSharp.Collections.FSharpSet`1 SetModule(T:Microsoft.FSharp.Collections.SetModuleemptyEmpty1M:Microsoft.FSharp.Collections.SetModule.Empty``1 singleton Singleton:M:Microsoft.FSharp.Collections.SetModule.Singleton``1(``0)`M:Microsoft.FSharp.Collections.SetModule.Add``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0})containselementeM:Microsoft.FSharp.Collections.SetModule.Contains``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0})isSubsetIsSubset€M:Microsoft.FSharp.Collections.SetModule.IsSubset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})isProperSubsetIsProperSubset€“M:Microsoft.FSharp.Collections.SetModule.IsProperSubset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) isSuperset IsSuperset€M:Microsoft.FSharp.Collections.SetModule.IsSuperset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})isProperSupersetIsProperSuperset€•M:Microsoft.FSharp.Collections.SetModule.IsProperSuperset``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0})^M:Microsoft.FSharp.Collections.SetModule.Count``1(Microsoft.FSharp.Collections.FSharpSet{``0})€–M:Microsoft.FSharp.Collections.SetModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})€–M:Microsoft.FSharp.Collections.SetModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})€ˆM:Microsoft.FSharp.Collections.SetModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpSet{``0})€µM:Microsoft.FSharp.Collections.SetModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpSet{``0})€¹M:Microsoft.FSharp.Collections.SetModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``1}},Microsoft.FSharp.Collections.FSharpSet{``0},``1)€–M:Microsoft.FSharp.Collections.SetModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0}) intersect Intersect€ŽM:Microsoft.FSharp.Collections.SetModule.Intersect``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) intersectMany IntersectManysets€ŽM:Microsoft.FSharp.Collections.SetModule.IntersectMany``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpSet{``0}})unionUnion€ŠM:Microsoft.FSharp.Collections.SetModule.Union``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) unionMany UnionMany€ŠM:Microsoft.FSharp.Collections.SetModule.UnionMany``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpSet{``0}})isEmptyIsEmpty`M:Microsoft.FSharp.Collections.SetModule.IsEmpty``1(Microsoft.FSharp.Collections.FSharpSet{``0})€£M:Microsoft.FSharp.Collections.SetModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Collections.FSharpSet{``0})€™M:Microsoft.FSharp.Collections.SetModule.Partition``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpSet{``0})removecM:Microsoft.FSharp.Collections.SetModule.Remove``1(``0,Microsoft.FSharp.Collections.FSharpSet{``0}) minElement MinElementcM:Microsoft.FSharp.Collections.SetModule.MinElement``1(Microsoft.FSharp.Collections.FSharpSet{``0}) maxElement MaxElementcM:Microsoft.FSharp.Collections.SetModule.MaxElement``1(Microsoft.FSharp.Collections.FSharpSet{``0})ofListOfList`M:Microsoft.FSharp.Collections.SetModule.OfList``1(Microsoft.FSharp.Collections.FSharpList{``0})_M:Microsoft.FSharp.Collections.SetModule.ToList``1(Microsoft.FSharp.Collections.FSharpSet{``0})OfArray:M:Microsoft.FSharp.Collections.SetModule.OfArray``1(``0[])`M:Microsoft.FSharp.Collections.SetModule.ToArray``1(Microsoft.FSharp.Collections.FSharpSet{``0})toSeqToSeq^M:Microsoft.FSharp.Collections.SetModule.ToSeq``1(Microsoft.FSharp.Collections.FSharpSet{``0})ofSeqOfSeq^M:Microsoft.FSharp.Collections.SetModule.OfSeq``1(System.Collections.Generic.IEnumerable{``0}) difference Difference€M:Microsoft.FSharp.Collections.SetModule.Difference``1(Microsoft.FSharp.Collections.FSharpSet{``0},Microsoft.FSharp.Collections.FSharpSet{``0}) SeqModule(T:Microsoft.FSharp.Collections.SeqModuleappendAppend€‹M:Microsoft.FSharp.Collections.SeqModule.Append``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})averageAverage`M:Microsoft.FSharp.Collections.SeqModule.Average``1(System.Collections.Generic.IEnumerable{``0}) averageBy AverageBy€ŽM:Microsoft.FSharp.Collections.SeqModule.AverageBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})cacheCache^M:Microsoft.FSharp.Collections.SeqModule.Cache``1(System.Collections.Generic.IEnumerable{``0})castPM:Microsoft.FSharp.Collections.SeqModule.Cast``1(System.Collections.IEnumerable)€¯M:Microsoft.FSharp.Collections.SeqModule.Choose``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})€ŒM:Microsoft.FSharp.Collections.SeqModule.Collect``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0}) compareWith CompareWith€íM:Microsoft.FSharp.Collections.SeqModule.CompareWith``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Int32}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``0})sources_M:Microsoft.FSharp.Collections.SeqModule.Concat``2(System.Collections.Generic.IEnumerable{``0})countByCountBy€ŒM:Microsoft.FSharp.Collections.SeqModule.CountBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})delay€M:Microsoft.FSharp.Collections.SeqModule.Delay``1(Microsoft.FSharp.Core.FSharpFunc`2{Microsoft.FSharp.Core.Unit,System.Collections.Generic.IEnumerable{``0}})distinctDistinctaM:Microsoft.FSharp.Collections.SeqModule.Distinct``1(System.Collections.Generic.IEnumerable{``0}) distinctBy DistinctBy€M:Microsoft.FSharp.Collections.SeqModule.DistinctBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})1M:Microsoft.FSharp.Collections.SeqModule.Empty``1€–M:Microsoft.FSharp.Collections.SeqModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})exists2Exists2€ëM:Microsoft.FSharp.Collections.SeqModule.Exists2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})€–M:Microsoft.FSharp.Collections.SeqModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})findFind€”M:Microsoft.FSharp.Collections.SeqModule.Find``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0}) findIndex FindIndex€™M:Microsoft.FSharp.Collections.SeqModule.FindIndex``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})€µM:Microsoft.FSharp.Collections.SeqModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,System.Collections.Generic.IEnumerable{``0})€–M:Microsoft.FSharp.Collections.SeqModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})forall2ForAll2€ëM:Microsoft.FSharp.Collections.SeqModule.ForAll2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})groupByGroupBy€ŒM:Microsoft.FSharp.Collections.SeqModule.GroupBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})Head]M:Microsoft.FSharp.Collections.SeqModule.Head``1(System.Collections.Generic.IEnumerable{``0})`M:Microsoft.FSharp.Collections.SeqModule.IsEmpty``1(System.Collections.Generic.IEnumerable{``0})yM:Microsoft.FSharp.Collections.SeqModule.Initialize``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0}) initInfiniteInitializeInfinitetM:Microsoft.FSharp.Collections.SeqModule.InitializeInfinite``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0})€£M:Microsoft.FSharp.Collections.SeqModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},System.Collections.Generic.IEnumerable{``0})€ÛM:Microsoft.FSharp.Collections.SeqModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.IEnumerable{``0})iter2Iterate2€øM:Microsoft.FSharp.Collections.SeqModule.Iterate2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.Unit}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})_M:Microsoft.FSharp.Collections.SeqModule.Length``1(System.Collections.Generic.IEnumerable{``0})€ˆM:Microsoft.FSharp.Collections.SeqModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})Map2€ÝM:Microsoft.FSharp.Collections.SeqModule.Map2``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}},System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})€ÀM:Microsoft.FSharp.Collections.SeqModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},System.Collections.Generic.IEnumerable{``0})\M:Microsoft.FSharp.Collections.SeqModule.Max``1(System.Collections.Generic.IEnumerable{``0})maxByMaxBy€ŠM:Microsoft.FSharp.Collections.SeqModule.MaxBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})\M:Microsoft.FSharp.Collections.SeqModule.Min``1(System.Collections.Generic.IEnumerable{``0})minByMinBy€ŠM:Microsoft.FSharp.Collections.SeqModule.MinBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})nthGetiM:Microsoft.FSharp.Collections.SeqModule.Get``1(System.Int32,System.Collections.Generic.IEnumerable{``0}):M:Microsoft.FSharp.Collections.SeqModule.OfArray``1(``0[])`M:Microsoft.FSharp.Collections.SeqModule.OfList``1(Microsoft.FSharp.Collections.FSharpList{``0})aM:Microsoft.FSharp.Collections.SeqModule.Pairwise``1(System.Collections.Generic.IEnumerable{``0})pickPick€­M:Microsoft.FSharp.Collections.SeqModule.Pick``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})readonlyReadOnlyaM:Microsoft.FSharp.Collections.SeqModule.ReadOnly``1(System.Collections.Generic.IEnumerable{``0})reduceReduce reduction€³M:Microsoft.FSharp.Collections.SeqModule.Reduce``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},System.Collections.Generic.IEnumerable{``0})€µM:Microsoft.FSharp.Collections.SeqModule.Scan``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,System.Collections.Generic.IEnumerable{``0}):M:Microsoft.FSharp.Collections.SeqModule.Singleton``1(``0)skipSkipjM:Microsoft.FSharp.Collections.SeqModule.Skip``1(System.Int32,System.Collections.Generic.IEnumerable{``0}) skipWhile SkipWhile€™M:Microsoft.FSharp.Collections.SeqModule.SkipWhile``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})sortSort]M:Microsoft.FSharp.Collections.SeqModule.Sort``1(System.Collections.Generic.IEnumerable{``0})sortBySortBy€‹M:Microsoft.FSharp.Collections.SeqModule.SortBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})sumSum\M:Microsoft.FSharp.Collections.SeqModule.Sum``1(System.Collections.Generic.IEnumerable{``0})sumBySumBy€ŠM:Microsoft.FSharp.Collections.SeqModule.SumBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},System.Collections.Generic.IEnumerable{``0})takeTakejM:Microsoft.FSharp.Collections.SeqModule.Take``1(System.Int32,System.Collections.Generic.IEnumerable{``0}) takeWhile TakeWhile€™M:Microsoft.FSharp.Collections.SeqModule.TakeWhile``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})`M:Microsoft.FSharp.Collections.SeqModule.ToArray``1(System.Collections.Generic.IEnumerable{``0})_M:Microsoft.FSharp.Collections.SeqModule.ToList``1(System.Collections.Generic.IEnumerable{``0})tryFind€—M:Microsoft.FSharp.Collections.SeqModule.TryFind``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0}) tryFindIndex TryFindIndex€œM:Microsoft.FSharp.Collections.SeqModule.TryFindIndex``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},System.Collections.Generic.IEnumerable{``0})tryPickTryPick€°M:Microsoft.FSharp.Collections.SeqModule.TryPick``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},System.Collections.Generic.IEnumerable{``0})nM:Microsoft.FSharp.Collections.SeqModule.Truncate``1(System.Int32,System.Collections.Generic.IEnumerable{``0})unfoldUnfold€›M:Microsoft.FSharp.Collections.SeqModule.Unfold``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{System.Tuple`2{``1,``0}}},``0)windowedWindowed windowSizenM:Microsoft.FSharp.Collections.SeqModule.Windowed``1(System.Int32,System.Collections.Generic.IEnumerable{``0})Zip€ˆM:Microsoft.FSharp.Collections.SeqModule.Zip``2(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1})Zip3source3€µM:Microsoft.FSharp.Collections.SeqModule.Zip3``3(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{``1},System.Collections.Generic.IEnumerable{``2}) ResizeArray`1,T:Microsoft.FSharp.Collections.ResizeArray`1 FSharpMap`2*T:Microsoft.FSharp.Collections.FSharpMap`2 MapModule(T:Microsoft.FSharp.Collections.MapModuletablehM:Microsoft.FSharp.Collections.MapModule.Add``2(``0,``1,Microsoft.FSharp.Collections.FSharpMap{``0,``1})tM:Microsoft.FSharp.Collections.MapModule.OfList``2(Microsoft.FSharp.Collections.FSharpList{System.Tuple`2{``0,``1}})NM:Microsoft.FSharp.Collections.MapModule.OfArray``2(System.Tuple`2{``0,``1}[])rM:Microsoft.FSharp.Collections.MapModule.OfSeq``2(System.Collections.Generic.IEnumerable{System.Tuple`2{``0,``1}})bM:Microsoft.FSharp.Collections.MapModule.ToSeq``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})cM:Microsoft.FSharp.Collections.MapModule.ToList``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})dM:Microsoft.FSharp.Collections.MapModule.ToArray``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})dM:Microsoft.FSharp.Collections.MapModule.IsEmpty``2(Microsoft.FSharp.Collections.FSharpMap{``0,``1})1M:Microsoft.FSharp.Collections.MapModule.Empty``2eM:Microsoft.FSharp.Collections.MapModule.Find``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÜM:Microsoft.FSharp.Collections.MapModule.TryPick``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpOption{``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÙM:Microsoft.FSharp.Collections.MapModule.Pick``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpOption{``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€åM:Microsoft.FSharp.Collections.MapModule.FoldBack``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``2,``2}}},Microsoft.FSharp.Collections.FSharpMap{``0,``1},``2)€áM:Microsoft.FSharp.Collections.MapModule.Fold``3(Microsoft.FSharp.Core.FSharpFunc`2{``2,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}}},``2,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÏM:Microsoft.FSharp.Collections.MapModule.Iterate``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÂM:Microsoft.FSharp.Collections.MapModule.Exists``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÂM:Microsoft.FSharp.Collections.MapModule.Filter``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÂM:Microsoft.FSharp.Collections.MapModule.ForAll``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})€´M:Microsoft.FSharp.Collections.MapModule.Map``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) containsKeylM:Microsoft.FSharp.Collections.MapModule.ContainsKey``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})€ÅM:Microsoft.FSharp.Collections.MapModule.Partition``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1})gM:Microsoft.FSharp.Collections.MapModule.Remove``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})hM:Microsoft.FSharp.Collections.MapModule.TryFind``2(``0,Microsoft.FSharp.Collections.FSharpMap{``0,``1})findKeyFindKey€ÃM:Microsoft.FSharp.Collections.MapModule.FindKey``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) tryFindKey TryFindKey€ÆM:Microsoft.FSharp.Collections.MapModule.TryFindKey``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpMap{``0,``1}) FSharpList`1op_NilTail op_ColonColon+T:Microsoft.FSharp.Collections.FSharpList`1 ListModule0d:\Depot\staging\src\fsharp\FSharp.Core\list.fsi)T:Microsoft.FSharp.Collections.ListModule/d:\Depot\staging\src\fsharp\FSharp.Core\list.fs€ŽM:Microsoft.FSharp.Collections.ListModule.Append``1(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``0})listbM:Microsoft.FSharp.Collections.ListModule.Average``1(Microsoft.FSharp.Collections.FSharpList{``0})€M:Microsoft.FSharp.Collections.ListModule.AverageBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})€±M:Microsoft.FSharp.Collections.ListModule.Choose``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})€·M:Microsoft.FSharp.Collections.ListModule.Collect``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Collections.FSharpList{``1}},Microsoft.FSharp.Collections.FSharpList{``0})lists€‰M:Microsoft.FSharp.Collections.ListModule.Concat``1(System.Collections.Generic.IEnumerable{Microsoft.FSharp.Collections.FSharpList{``0}})2M:Microsoft.FSharp.Collections.ListModule.Empty``1€˜M:Microsoft.FSharp.Collections.ListModule.Exists``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€îM:Microsoft.FSharp.Collections.ListModule.Exists2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€–M:Microsoft.FSharp.Collections.ListModule.Find``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€›M:Microsoft.FSharp.Collections.ListModule.FindIndex``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€˜M:Microsoft.FSharp.Collections.ListModule.Filter``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€·M:Microsoft.FSharp.Collections.ListModule.Fold``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpList{``0})fold2Fold2 M:Microsoft.FSharp.Collections.ListModule.Fold2``3(Microsoft.FSharp.Core.FSharpFunc`2{``2,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}}},``2,Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€»M:Microsoft.FSharp.Collections.ListModule.FoldBack``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``1}},Microsoft.FSharp.Collections.FSharpList{``0},``1) foldBack2 FoldBack2M:Microsoft.FSharp.Collections.ListModule.FoldBack2``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``2,``2}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},``2)€˜M:Microsoft.FSharp.Collections.ListModule.ForAll``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€îM:Microsoft.FSharp.Collections.ListModule.ForAll2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,System.Boolean}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})_M:Microsoft.FSharp.Collections.ListModule.Head``1(Microsoft.FSharp.Collections.FSharpList{``0})zM:Microsoft.FSharp.Collections.ListModule.Initialize``1(System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0})bM:Microsoft.FSharp.Collections.ListModule.IsEmpty``1(Microsoft.FSharp.Collections.FSharpList{``0})€¥M:Microsoft.FSharp.Collections.ListModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},Microsoft.FSharp.Collections.FSharpList{``0})€ûM:Microsoft.FSharp.Collections.ListModule.Iterate2``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€ÝM:Microsoft.FSharp.Collections.ListModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit}},Microsoft.FSharp.Collections.FSharpList{``0})iteri2IterateIndexed23M:Microsoft.FSharp.Collections.ListModule.IterateIndexed2``2(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.Unit}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})aM:Microsoft.FSharp.Collections.ListModule.Length``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŠM:Microsoft.FSharp.Collections.ListModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})€àM:Microsoft.FSharp.Collections.ListModule.Map2``3(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})map3Map3list35M:Microsoft.FSharp.Collections.ListModule.Map3``4(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``2,``3}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},Microsoft.FSharp.Collections.FSharpList{``2})€ÂM:Microsoft.FSharp.Collections.ListModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},Microsoft.FSharp.Collections.FSharpList{``0})mapi2 MapIndexed2M:Microsoft.FSharp.Collections.ListModule.MapIndexed2``3(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``2}}},Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})^M:Microsoft.FSharp.Collections.ListModule.Max``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŒM:Microsoft.FSharp.Collections.ListModule.MaxBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})^M:Microsoft.FSharp.Collections.ListModule.Min``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŒM:Microsoft.FSharp.Collections.ListModule.MinBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})kM:Microsoft.FSharp.Collections.ListModule.Get``1(Microsoft.FSharp.Collections.FSharpList{``0},System.Int32);M:Microsoft.FSharp.Collections.ListModule.OfArray``1(``0[])_M:Microsoft.FSharp.Collections.ListModule.OfSeq``1(System.Collections.Generic.IEnumerable{``0})€›M:Microsoft.FSharp.Collections.ListModule.Partition``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€¯M:Microsoft.FSharp.Collections.ListModule.Pick``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})Permute€ M:Microsoft.FSharp.Collections.ListModule.Permute``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,System.Int32},Microsoft.FSharp.Collections.FSharpList{``0})€µM:Microsoft.FSharp.Collections.ListModule.Reduce``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},Microsoft.FSharp.Collections.FSharpList{``0}) reduceBack ReduceBack€¹M:Microsoft.FSharp.Collections.ListModule.ReduceBack``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,``0}},Microsoft.FSharp.Collections.FSharpList{``0})initialHM:Microsoft.FSharp.Collections.ListModule.Replicate``1(System.Int32,``0)ReversebM:Microsoft.FSharp.Collections.ListModule.Reverse``1(Microsoft.FSharp.Collections.FSharpList{``0})€·M:Microsoft.FSharp.Collections.ListModule.Scan``2(Microsoft.FSharp.Core.FSharpFunc`2{``1,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}},``1,Microsoft.FSharp.Collections.FSharpList{``0})scanBackScanBack€»M:Microsoft.FSharp.Collections.ListModule.ScanBack``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``1,``1}},Microsoft.FSharp.Collections.FSharpList{``0},``1)SortWith€ÀM:Microsoft.FSharp.Collections.ListModule.SortWith``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Int32}},Microsoft.FSharp.Collections.FSharpList{``0})€M:Microsoft.FSharp.Collections.ListModule.SortBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})_M:Microsoft.FSharp.Collections.ListModule.Sort``1(Microsoft.FSharp.Collections.FSharpList{``0})^M:Microsoft.FSharp.Collections.ListModule.Sum``1(Microsoft.FSharp.Collections.FSharpList{``0})€ŒM:Microsoft.FSharp.Collections.ListModule.SumBy``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},Microsoft.FSharp.Collections.FSharpList{``0})bM:Microsoft.FSharp.Collections.ListModule.ToArray``1(Microsoft.FSharp.Collections.FSharpList{``0})`M:Microsoft.FSharp.Collections.ListModule.ToSeq``1(Microsoft.FSharp.Collections.FSharpList{``0})€²M:Microsoft.FSharp.Collections.ListModule.TryPick``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpOption{``1}},Microsoft.FSharp.Collections.FSharpList{``0})€™M:Microsoft.FSharp.Collections.ListModule.TryFind``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})€žM:Microsoft.FSharp.Collections.ListModule.TryFindIndex``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean},Microsoft.FSharp.Collections.FSharpList{``0})UnziptM:Microsoft.FSharp.Collections.ListModule.Unzip``2(Microsoft.FSharp.Collections.FSharpList{System.Tuple`2{``0,``1}})Unzip3yM:Microsoft.FSharp.Collections.ListModule.Unzip3``3(Microsoft.FSharp.Collections.FSharpList{System.Tuple`3{``0,``1,``2}})€‹M:Microsoft.FSharp.Collections.ListModule.Zip``2(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1})€¹M:Microsoft.FSharp.Collections.ListModule.Zip3``3(Microsoft.FSharp.Collections.FSharpList{``0},Microsoft.FSharp.Collections.FSharpList{``1},Microsoft.FSharp.Collections.FSharpList{``2}) HashIdentity7d:\Depot\staging\src\fsharp\FSharp.Core\collections.fsi+T:Microsoft.FSharp.Collections.HashIdentity Structural6d:\Depot\staging\src\fsharp\FSharp.Core\collections.fs9M:Microsoft.FSharp.Collections.HashIdentity.Structural``1LimitedStructural Reference8M:Microsoft.FSharp.Collections.HashIdentity.Reference``1 FromFunctionshasherequality€ÑM:Microsoft.FSharp.Collections.HashIdentity.FromFunctions``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Int32},Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Boolean}})ComparisonIdentity1T:Microsoft.FSharp.Collections.ComparisonIdentity?M:Microsoft.FSharp.Collections.ComparisonIdentity.Structural``1 FromFunction€ŸM:Microsoft.FSharp.Collections.ComparisonIdentity.FromFunction``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.FSharpFunc`2{``0,System.Int32}}) ArrayModule1d:\Depot\staging\src\fsharp\FSharp.Core\array.fsi*T:Microsoft.FSharp.Collections.ArrayModule0d:\Depot\staging\src\fsharp\FSharp.Core\array.fsarray1array2AM:Microsoft.FSharp.Collections.ArrayModule.Append``1(``0[],``0[])M:Microsoft.FSharp.Collections.ArrayModule.Zip``2(``0[],``1[])array3EM:Microsoft.FSharp.Collections.ArrayModule.Zip3``3(``0[],``1[],``2[]) Array4DModule2d:\Depot\staging\src\fsharp\FSharp.Core\array3.fsi,T:Microsoft.FSharp.Collections.Array4DModule1d:\Depot\staging\src\fsharp\FSharp.Core\array3.fslength1length2length3length4oM:Microsoft.FSharp.Collections.Array4DModule.Create``1(System.Int32,System.Int32,System.Int32,System.Int32,``0)7M:Microsoft.FSharp.Collections.Array4DModule.Initialize``1(System.Int32,System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0}}}})Length1IM:Microsoft.FSharp.Collections.Array4DModule.Length1``1(``0[0:,0:,0:,0:])Length2IM:Microsoft.FSharp.Collections.Array4DModule.Length2``1(``0[0:,0:,0:,0:])Length3IM:Microsoft.FSharp.Collections.Array4DModule.Length3``1(``0[0:,0:,0:,0:])Length4IM:Microsoft.FSharp.Collections.Array4DModule.Length4``1(``0[0:,0:,0:,0:])oM:Microsoft.FSharp.Collections.Array4DModule.ZeroCreate``1(System.Int32,System.Int32,System.Int32,System.Int32)yM:Microsoft.FSharp.Collections.Array4DModule.Get``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)}M:Microsoft.FSharp.Collections.Array4DModule.Set``1(``0[0:,0:,0:,0:],System.Int32,System.Int32,System.Int32,System.Int32,``0) Array3DModule,T:Microsoft.FSharp.Collections.Array3DModulebM:Microsoft.FSharp.Collections.Array3DModule.Create``1(System.Int32,System.Int32,System.Int32,``0)€ùM:Microsoft.FSharp.Collections.Array3DModule.Initialize``1(System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0}}})iM:Microsoft.FSharp.Collections.Array3DModule.Get``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32)€‰M:Microsoft.FSharp.Collections.Array3DModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},``0[0:,0:,0:])#M:Microsoft.FSharp.Collections.Array3DModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit}}}},``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length1``1(``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length2``1(``0[0:,0:,0:])FM:Microsoft.FSharp.Collections.Array3DModule.Length3``1(``0[0:,0:,0:])nM:Microsoft.FSharp.Collections.Array3DModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},``0[0:,0:,0:])M:Microsoft.FSharp.Collections.Array3DModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}}}},``0[0:,0:,0:])mM:Microsoft.FSharp.Collections.Array3DModule.Set``1(``0[0:,0:,0:],System.Int32,System.Int32,System.Int32,``0)bM:Microsoft.FSharp.Collections.Array3DModule.ZeroCreate``1(System.Int32,System.Int32,System.Int32) Array2DModule2d:\Depot\staging\src\fsharp\FSharp.Core\array2.fsi,T:Microsoft.FSharp.Collections.Array2DModulebase1Base11d:\Depot\staging\src\fsharp\FSharp.Core\array2.fsAM:Microsoft.FSharp.Collections.Array2DModule.Base1``1(``0[0:,0:])base2Base2AM:Microsoft.FSharp.Collections.Array2DModule.Base2``1(``0[0:,0:])@M:Microsoft.FSharp.Collections.Array2DModule.Copy``1(``0[0:,0:]) sourceIndex1 sourceIndex2 targetIndex1 targetIndex2€›M:Microsoft.FSharp.Collections.Array2DModule.CopyTo``1(``0[0:,0:],System.Int32,System.Int32,``0[0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)€»M:Microsoft.FSharp.Collections.Array2DModule.Initialize``1(System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0}})UM:Microsoft.FSharp.Collections.Array2DModule.Create``1(System.Int32,System.Int32,``0)UM:Microsoft.FSharp.Collections.Array2DModule.ZeroCreate``1(System.Int32,System.Int32) initBasedInitializeBased€ÚM:Microsoft.FSharp.Collections.Array2DModule.InitializeBased``1(System.Int32,System.Int32,System.Int32,System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,``0}}) createBased CreateBasedtM:Microsoft.FSharp.Collections.Array2DModule.CreateBased``1(System.Int32,System.Int32,System.Int32,System.Int32,``0)zeroCreateBasedZeroCreateBasedtM:Microsoft.FSharp.Collections.Array2DModule.ZeroCreateBased``1(System.Int32,System.Int32,System.Int32,System.Int32)€†M:Microsoft.FSharp.Collections.Array2DModule.Iterate``1(Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit},``0[0:,0:])€ïM:Microsoft.FSharp.Collections.Array2DModule.IterateIndexed``1(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,Microsoft.FSharp.Core.Unit}}},``0[0:,0:])CM:Microsoft.FSharp.Collections.Array2DModule.Length1``1(``0[0:,0:])CM:Microsoft.FSharp.Collections.Array2DModule.Length2``1(``0[0:,0:])kM:Microsoft.FSharp.Collections.Array2DModule.Map``2(Microsoft.FSharp.Core.FSharpFunc`2{``0,``1},``0[0:,0:])€ÔM:Microsoft.FSharp.Collections.Array2DModule.MapIndexed``2(Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{System.Int32,Microsoft.FSharp.Core.FSharpFunc`2{``0,``1}}},``0[0:,0:])rebaseRebaseBM:Microsoft.FSharp.Collections.Array2DModule.Rebase``1(``0[0:,0:])]M:Microsoft.FSharp.Collections.Array2DModule.Set``1(``0[0:,0:],System.Int32,System.Int32,``0)YM:Microsoft.FSharp.Collections.Array2DModule.Get``1(``0[0:,0:],System.Int32,System.Int32)'d:\Depot\staging\src\fsharp\FSharp.Core€Þ*'$!EEHETEbxx|.4=  C B  €Ä €Ä€Æ €Ä€Æ€Ê €Ä€Æ€Ì €Ä€Æ€É €Ä€Æ  0 @  ¡ ¡¥ ¡° ¡‚$ ¡‚B ¡‚§ ¡‚ô ‚ý ‚ý‚ÿ ‚ý‚ÿƒ ‚ý‚ÿƒ ƒ& ƒ&ƒ( ƒI ƒIƒK ƒIƒM   „@ „D ‚ä ‚Ý ‚Ö €‘ „O „S ‚Ë „W  X ƒ/ ƒ. „a „c „e o € „k ‚Ò €• „p „r „t ‚À €  „z „| „} ‚Ç ‚+ G / „‡ „ˆ 6 „‹ „ „ ƒ˜ ƒ0 „> ƒæ ƒž ƒ  k „  ƒÅ u „Ú ƒ­ ƒ) ƒ‚ ƒœ „0 …r …r…• …r…ž …r…š …r…w …r…‘ …r…} ƒ| ƒx C „4 …³ …Õ …Õ…× …Õ…Ü …Õ…à …Õ…ä …ì …ì‡ …쇗 …쇠 ‡² ‡²‡´  ƒ1 m ƒ‰ ƒ‹ „ ƒ‘ ‡Î ‡Îˆ2 ‡Îˆ: ‡ÎˆK ‡Îˆy ƒ ƒ¯ „( ˆµ …¥ „ ƒ¹ „  ˆ» ƒÛ ƒ„ ƒš ƒ§ ƒ• l €¶ ˆî ˆîˆÿ ˆîˆÿ‰ ˆîˆò ƒé ‚< ƒÒ ‚D ‚C ƒÄ ƒà ƒ† t „ „ „ „ ‚ø „ ƒ“ ƒµ ƒû v ž ˆÌ ˆÌŠ ˆÌŠ ˆÌŠ' ˆÌ‰à ˆÌ. ˆÌŠJ ˆÌ‰ ˆÌ‰ý ˆÌŠ  ˆÌŠ ˆÌŠ ˆÌŠ ˆÌŠ^ ˆÌŠ ˆÌŠp ˆÌ‰y ˆÌ‰Ý ˆÌˆÍ ˆÌ‰z  ´ €î ˆÈ ŠÂ ‹  ‹› Š¡ ‹Ÿ Š® ‹Å Œ Œ* Œ/ ŒŽ Œ£ Œ±   !$'*. /4=>A B C GEHETW XEb k  l m oEq t u vx| € € €‘ €• €¶x €» €À €Â €Ä€Æ€É €Ä€Æ€Ê €Ä€Æ€Ì €î   €Ä€Æ €Ä€Æ$% 03 6; @ CR^e   ž ¡¥ ¡° ´× ¡‚$‚' ‚+‚2 ‚< ¡ ‚C ‚D ¡‚B ¡‚§ ‚À ‚Ç ‚Ë ‚Ò ‚Ö ‚Ý ‚ä ‚ø ¡‚ô ‚ý‚ÿƒ ‚ý‚ÿƒ ƒ) ƒ. ƒ/ ƒ0 ƒ1 ƒ&ƒ( ƒIƒK ƒIƒM ƒx ƒ| ƒ‚ ƒ„ ƒ† ƒ‰ ƒ‹ ƒ ƒ‘ ƒ“ ƒ• ƒ˜ ƒš ƒœ ƒž ƒ  ƒ§ ƒ­ ƒ¯ ƒµ ƒ¹ ƒÄ ƒÅ ƒÒ ƒÛ ƒà ƒáƒâ ƒæ ƒé ƒû „„ „ „ „ „ „ „ „ „ „( „0 „4 „>„B„E„G„I„K„M„P„U„Z„_„g„i„m„w „}„„„…„‘„”„– „ „×„Þ„ß „ڀąv …r…w …r …r…} …r…‘ …r…• …r…š …r…ž …¥ …³ …Õ…× …Õ…Ü …Õ…à …Õ…ä …Õ …ì†* „W$†‰ „@ ƒá‡ …ì‡ „‹ „ „ …쇗 …쇠 ‡²‡´ ‡Î ƒá‡ò ƒá‡÷ „r „t „| „a „e „k „S ‡Îˆ2 ‡Îˆ: ‡ÎˆK ‡Îˆy ˆ» ˆÈ ˆÌˆÍ „O „z ƒáˆÕ ˆÌ. ˆîˆò ƒáˆó ˆîˆÿ‰ ˆîˆÿ‰ ˆÌ‰ ˆî ‰ ‰‰ ˆÌ‰y ˆÌ‰z‰„E‰šE‰¦‰ª‰± ˆÌ‰Ý ˆÌ‰à ˆÌ‰ý ˆÌŠ ˆÌŠ ˆÌŠ  ˆÌŠ ˆÌŠŠ!Š"Š!Š# ˆÌŠŠ!Š%Š& ˆÌŠ' ˆÌ ˆÌŠJŠX ˆÌŠ^$Šs ˆÌŠp Š¡ Š®  ƒáŠÀ ŠÂ „ˆ ‹  ƒáŠ® ‹Ÿ ‹Å Œ Œ* Œ/ ŒŽ Œ£ Œ±€‡ !"#$%&'()*,-/01567:;<>@ABCFGHJLMNORQUVWXYZ[`acdfjklmnopqrstuvwxyz{|}~€€€€ƒ€„€…€€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€§€¨€ª€«€­€¿€À€Ù€Ú€Û€â€å€æ€ê€ë€ì€í€î€÷€ø€ú€û€ÿÿ…ÀPAÀÞ‚ é ëYc3#ÿ¤@„¬„¬ Ë Ë„¨„¨„ÿ´@„¨„¨„­„­ÌÌ„¨„¨„ÿ¤@„¨„¨„¹„¹ Þ Þ„µ„µ„„µ„µ„ÿ´@„µ„µ„µ„µ„º„ºßß„µ„µ„„µ„µ„ÿ¤@„µ„µ„µ„µ„»„»àà„µ„µ„„µ„µ„ÿ¤@„µ„µ„µ„µ„„ ê ꄾ„¾„ „¾„¾„ „¾„¾„    ÿ´@„¾„¾„¾„¾„¾„¾„ÄÃëë „¾„¾„ „¾„¾„ „¾„¾„    ÿ¤@„¾„¾„¾„¾„¾„¾„Ä„Äì섾„¾„„¾„¾„„¾„¾„ÿ¤@„¾„¾„¾„¾„¾„¾ „Å„Åí턾„¾„„¾„¾„„¾„¾„ÿ¤@„¾„¾„¾„¾„¾„¾ „Ë„Ë ö ö„DŽDŽ„DŽDŽ„DŽDŽ„DŽDŽÿ´@„Ç„Ç„Ç„Ç„Ç„Ç„Ç„Ç „Ì„Ì÷÷„DŽDŽ„DŽDŽ„DŽDŽ„DŽDŽÿ¤@„Ç„Ç„Ç„Ç„Ç„Ç„Ç„Ç „Í„Íøø„DŽDŽ„DŽDŽ„DŽDŽ„DŽDŽÿ¤@„Ç„Ç„Ç„Ç„Ç„Ç„Ç„Ç „΄Îùù „DŽDŽ!„DŽDŽ"„DŽDŽ#„DŽDŽ !"#"ÿ¤@„DŽDŽDŽDŽDŽDŽDŽDŽτÏúú$„DŽDŽ%„DŽDŽ&„DŽDŽ'„DŽDŽ$%&''ÿ¤@„Ç„Ç„Ç„Ç„Ç„Ç„Ç„Ç„Õ„Õ ‚ ‚(„фф)„фф*„фф+„фф, „Ñ„Ñ"„()*+,()*+,ÿ´@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ"„Ö„Ö‚‚-„фф.„фф/„фф0„фф1 „Ñ„Ñ"„-./01-ÿ¤@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ"„ׂׄ‚2„фф3„фф4„фф5„фф6 „Ñ„Ñ"„234563ÿ¤@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ"„؄؂‚7„фф8„фф9„фф:„фф; „Ñ„Ñ"„789:;9ÿ¤@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ"„لق‚<„фф=„фф>„фф?„фф@ „Ñ„Ñ"„<=>?@?ÿ¤@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ""„Ú„Ú‚‚A„ффB„ффC„ффD„ффE „Ñ„Ñ"„ABCDEEÿ¤@„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ„Ñ „Ñ„Ñ"„à„à ‚ ‚F„܄܄G„܄܄H„܄܄I„܄܄J „Ü„Ü"„K#„Ü#„Ü&„FGHIJK FGHIJKÿ´@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& „á„á‚‚L„܄܄M„܄܄N„܄܄O„܄܄P „Ü„Ü"„Q#„Ü#„Ü&„ LMNOPQLÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& „â„â‚‚R„܄܄S„܄܄T„܄܄U„܄܄V „Ü„Ü"„W#„Ü#„Ü&„ RSTUVWSÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& „ã„ã‚‚X„܄܄Y„܄܄Z„܄܄[„܄܄\ „Ü„Ü"„]#„Ü#„Ü&„ XYZ[\]Zÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& „ä„ä‚‚^„܄܄_„܄܄`„܄܄a„܄܄b „Ü„Ü"„c#„Ü#„Ü&„ ^_`abcaÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& "„å„å‚‚d„܄܄e„܄܄f„܄܄g„܄܄h „Ü„Ü"„i#„Ü#„Ü&„ defghihÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& %„æ„æ‚‚j„܄܄k„܄܄l„܄܄m„܄܄n „Ü„Ü"„o#„Ü#„Ü&„ jklmnooÿ¤@ „Ü„Ü„Ü„Ü„Ü„Ü„Ü„Ü „Ü„Ü"#„Ü#„Ü& „ì„ì ‚ ‚ p„è„è„q„è„è„r„è„è„s„è„è„t „è„è"„u#„è#„è&„v&„è'„è*„pqrstuv pqrstuvÿ´@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* „í„í‚!‚!w„è„è„x„è„è„y„è„è„z„è„è„{ „è„è"„|#„è#„è&„}&„è'„è*„ wxyz{|}wÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* „î„î‚"‚"~„è„è„„è„è„€€„è„è„€„è„è„€‚ „è„è"„€ƒ#„è#„è&„€„&„è'„è*„ ~€€€€‚€ƒ€„ÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* „ï„ï‚#‚#€…„è„è„€†„è„è„€‡„è„è„€ˆ„è„è„€‰ „è„è"„€Š#„è#„è&„€‹&„è'„è*„ €…€†€‡€ˆ€‰€Š€‹€‡ÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* „ð„ð‚$‚$€Œ„è„è„€„è„è„€Ž„è„è„€„è„è„€ „è„è"„€‘#„è#„è&„€’&„è'„è*„ €Œ€€Ž€€€‘€’€ÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* !"„ñ„ñ‚%‚%€“„è„è„€”„è„è„€•„è„è„€–„è„è„€— „è„è"„€˜#„è#„è&„€™&„è'„è*„ €“€”€•€–€—€˜€™€—ÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* "%„ò„ò‚&‚&€š„è„è„€›„è„è„€œ„è„è„€„è„è„€ž „è„è"„€Ÿ#„è#„è&„€ &„è'„è*„ €š€›€œ€€ž€Ÿ€ €Ÿÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* #(„ó„ó‚'‚'€¡„è„è„€¢„è„è„€£„è„è„€¤„è„è„€¥ „è„è"„€¦#„è#„è&„€§&„è'„è*„ €¡€¢€£€¤€¥€¦€§€§ÿ¤@ „è„è„è„è„è„è„è„è „è„è"#„è#„è&&„è'„è* $„ù„ù ‚0 ‚0€¨„õ„õ„€©„õ„õ„€ª„õ„õ„€«„õ„õ„€¬ „õ„õ"„€­#„õ#„õ&„€®&„õ'„õ*„€¯)„õ+„õ1„€¨€©€ª€«€¬€­€®€¯ €¨€©€ª€«€¬€­€®€¯ÿ´@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 %„ú„ú‚1‚1€°„õ„õ„€±„õ„õ„€²„õ„õ„€³„õ„õ„€´ „õ„õ"„€µ#„õ#„õ&„€¶&„õ'„õ*„€·)„õ+„õ1„ €°€±€²€³€´€µ€¶€·€°ÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 &„û„û‚2‚2€¸„õ„õ„€¹„õ„õ„€º„õ„õ„€»„õ„õ„€¼ „õ„õ"„€½#„õ#„õ&„€¾&„õ'„õ*„€¿)„õ+„õ1„ €¸€¹€º€»€¼€½€¾€¿€¹ÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 '„ü„ü‚3‚3€À„õ„õ„€Á„õ„õ„€Â„õ„õ„€Ã„õ„õ„€Ä „õ„õ"„€Å#„õ#„õ&„€Æ&„õ'„õ*„€Ç)„õ+„õ1„ €À€Á€Â€Ã€Ä€Å€Æ€Ç€Âÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 („ý„ý‚4‚4€È„õ„õ„€É„õ„õ„€Ê„õ„õ„€Ë„õ„õ„€Ì „õ„õ"„€Í#„õ#„õ&„€Î&„õ'„õ*„€Ï)„õ+„õ1„ €È€É€Ê€Ë€Ì€Í€Î€Ï€Ëÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 )"„þ„þ‚5‚5€Ð„õ„õ„€Ñ„õ„õ„€Ò„õ„õ„€Ó„õ„õ„€Ô „õ„õ"„€Õ#„õ#„õ&„€Ö&„õ'„õ*„€×)„õ+„õ1„ €Ð€Ñ€Ò€Ó€Ô€Õ€Ö€×€Ôÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 *%„ÿ„ÿ‚6‚6€Ø„õ„õ„€Ù„õ„õ„€Ú„õ„õ„€Û„õ„õ„€Ü „õ„õ"„€Ý#„õ#„õ&„€Þ&„õ'„õ*„€ß)„õ+„õ1„ €Ø€Ù€Ú€Û€Ü€Ý€Þ€ß€Ýÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 +(……‚7‚7€à„õ„õ„€á„õ„õ„€â„õ„õ„€ã„õ„õ„€ä „õ„õ"„€å#„õ#„õ&„€æ&„õ'„õ*„€ç)„õ+„õ1„ €à€á€â€ã€ä€å€æ€ç€æÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 ,+……‚8‚8€è„õ„õ„€é„õ„õ„€ê„õ„õ„€ë„õ„õ„€ì „õ„õ"„€í#„õ#„õ&„€î&„õ'„õ*„€ï)„õ+„õ1„ €è€é€ê€ë€ì€í€î€ï€ïÿ¤@ „õ„õ„õ„õ„õ„õ„õ„õ „õ„õ"#„õ#„õ&&„õ'„õ*)„õ+„õ1 -,‹ñ‹ñ•“•“€ð-‹ï‹ï„ €ðÿ¤@ -‹ï‹ï0 .1‹ó‹ó•”•”€ñ-‹ï‹ï„ €ñ€ñÿ¤@ -‹ï‹ï2 /3Œ(Œ(•þ•þ€ò-Œ%Œ%„€ò€òÿ´@-Œ%Œ%5Œ(Œ(607Œ+Œ+•ÿ•ÿ€ó-Œ%Œ%„€óÿ´@-Œ%Œ%8Œ+Œ+ 91:Œ-Œ-––€ô-Œ%Œ%„€ôÿ´@-Œ%Œ%;2<Œ5Œ5––€õ-Œ1Œ1„€õ€õÿ´@-Œ1Œ1?Œ5Œ5%@€ö„õ„õ„€÷„õ„õ„€ø„õ„õ„€ù„õ„õ„€ú „õ„õ"„€û#„õ#„õ&„€ü&„õ'„õ*„€ý)„õ+„õ1„*„õ „õ *€þ„õ„õ„€ÿ„õ„õ„„õ„õ„„õ„õ„ „õ„õ"„#„õ#„õ&„&„õ'„õ*„)„õ+„õ1„€þ€ÿ €þ€ÿ*„õ„õ„„õ„õ„„õ„õ„ „õ„õ„ „õ„õ"„ #„õ#„õ&„ &„õ'„õ*„ )„õ+„õ1„      *„õ„õ„„õ„õ„„õ„õ„„õ„õ„ „õ„õ"„#„õ#„õ&„&„õ'„õ*„)„õ+„õ1„ *„õ„õ„„õ„õ„„õ„õ„„õ„õ„ „õ„õ"„#„õ#„õ&„&„õ'„õ*„)„õ+„õ1„ *„õ„õ„„õ„õ„ „õ„õ„!„õ„õ„" „õ„õ"„##„õ#„õ&„$&„õ'„õ*„%)„õ+„õ1„  !"#$%!"*"&„õ„õ„'„õ„õ„(„õ„õ„)„õ„õ„* „õ„õ"„+#„õ#„õ&„,&„õ'„õ*„-)„õ+„õ1„ &'()*+,-*%*%.„õ„õ„/„õ„õ„0„õ„õ„1„õ„õ„2 „õ„õ"„3#„õ#„õ&„4&„õ'„õ*„5)„õ+„õ1„ ./0123453(*(6„õ„õ„7„õ„õ„8„õ„õ„9„õ„õ„: „õ„õ"„;#„õ#„õ&„<&„õ'„õ*„=)„õ+„õ1„ 6789:;<=<+*+>„õ„õ„?„õ„õ„@„õ„õ„A„õ„õ„B „õ„õ"„C#„õ#„õ&„D&„õ'„õ*„E)„õ+„õ1„ >?@ABCDEEFF33F„è„è„G„è„è„H„è„è„I„è„è„J „è„è"„K#„è#„è&„L&„è'„è*„'„è „è'M„è„è„N„è„è„O„è„è„P„è„è„Q „è„è"„R#„è#„è&„S&„è'„è*„MNOPQRS MNOPQRS'T„è„è„U„è„è„V„è„è„W„è„è„X „è„è"„Y#„è#„è&„Z&„è'„è*„ TUVWXYZT'[„è„è„\„è„è„]„è„è„^„è„è„_ „è„è"„`#„è#„è&„a&„è'„è*„ [\]^_`a\'b„è„è„c„è„è„d„è„è„e„è„è„f „è„è"„g#„è#„è&„h&„è'„è*„ bcdefghd'i„è„è„j„è„è„k„è„è„l„è„è„m „è„è"„n#„è#„è&„o&„è'„è*„ ijklmnol"'"p„è„è„q„è„è„r„è„è„s„è„è„t „è„è"„u#„è#„è&„v&„è'„è*„ pqrstuvt%'%w„è„è„x„è„è„y„è„è„z„è„è„{ „è„è"„|#„è#„è&„}&„è'„è*„ wxyz{|}|('(~„è„è„„è„è„€„è„è„„è„è„‚ „è„è"„ƒ#„è#„è&„„&„è'„è*„ ~€‚ƒ„„……33…„܄܄†„܄܄‡„܄܄ˆ„܄܄‰ „Ü„Ü"„Š#„Ü#„Ü&„$„Ü „Ü$‹„܄܄Œ„܄܄„܄܄ބ܄܄ „Ü„Ü"„#„Ü#„Ü&„‹ŒŽ ‹ŒŽ$‘„܄܄’„܄܄“„܄܄”„܄܄• „Ü„Ü"„–#„Ü#„Ü&„ ‘’“”•–‘$—„܄܄˜„܄܄™„܄܄š„܄܄› „Ü„Ü"„œ#„Ü#„Ü&„ —˜™š›œ˜$„܄܄ž„܄܄Ÿ„܄܄ „܄܄¡ „Ü„Ü"„¢#„Ü#„Ü&„ žŸ ¡¢Ÿ$£„܄܄¤„܄܄¥„܄܄¦„܄܄§ „Ü„Ü"„¨#„Ü#„Ü&„ £¤¥¦§¨¦"$"©„܄܄ª„܄܄«„܄܄¬„܄܄­ „Ü„Ü"„®#„Ü#„Ü&„ ©ª«¬­®­%$%¯„܄܄°„܄܄±„܄܄²„܄܄³ „Ü„Ü"„´#„Ü#„Ü&„ ¯°±²³´´µµ33µ„фф¶„фф·„фф¸„фф¹ „Ñ„Ñ"„!„Ñ „Ñ!º„фф»„фф¼„фф½„фф¾ „Ñ„Ñ"„º»¼½¾º»¼½¾!¿„ффÀ„ффÁ„Ñ„Ñ„Â„Ñ„Ñ„à „Ñ„Ñ"„¿ÀÁÂÿ!Ä„Ñ„Ñ„Å„Ñ„Ñ„Æ„Ñ„Ñ„Ç„Ñ„Ñ„È „Ñ„Ñ"„ÄÅÆÇÈÅ!É„Ñ„Ñ„Ê„Ñ„Ñ„Ë„Ñ„Ñ„Ì„Ñ„Ñ„Í „Ñ„Ñ"„ÉÊËÌÍË!Î„Ñ„Ñ„Ï„Ñ„Ñ„Ð„Ñ„Ñ„Ñ„Ñ„Ñ„Ò „Ñ„Ñ"„ÎÏÐÑÒÑ"!"Ó„Ñ„Ñ„Ô„Ñ„Ñ„Õ„Ñ„Ñ„Ö„Ñ„Ñ„× „Ñ„Ñ"„ÓÔÕÖ×רØ33؄DŽDŽلDŽDŽڄDŽDŽۄDŽDŽ„Ç „Ç܄DŽDŽ݄DŽDŽބDŽDŽ߄DŽDŽÜÝÞßÜÝÞßà„DŽDŽá„DŽDŽâ„DŽDŽã„DŽDŽàáâãàä„DŽDŽå„DŽDŽæ„DŽDŽç„DŽDŽäåæçåè„DŽDŽé„DŽDŽê„DŽDŽë„DŽDŽèéêëêì„DŽDŽí„DŽDŽî„DŽDŽï„DŽDŽìíîïïðð33ð„¾„¾„ñ„¾„¾„ò„¾„¾„„¾ „¾ó„¾„¾„ô„¾„¾„õ„¾„¾„óôõóôõö„¾„¾„÷„¾„¾„ø„¾„¾„ö÷øöù„¾„¾„ú„¾„¾„û„¾„¾„ùúûúü„¾„¾„ý„¾„¾„þ„¾„¾„üýþþÿÿ33ÿ„µ„µ„‚„µ„µ„„µ „µ‚„µ„µ„‚„µ„µ„‚‚‚‚‚„µ„µ„‚„µ„µ„‚‚‚‚„µ„µ„‚„µ„µ„‚‚‚ 33 ‚„¨„¨„„¨ „¨ ‚„¨„¨„‚‚‚ „¨„¨„‚ ‚ D  33 E —   3A3F55ÿ¤@I(J4K""DDÿ¤@L" "-M"O"\N5O''EEÿ¤@L'!'.M'P']P6Q))00ÿ¤@R7S22*RR/ ÿ¤@U8V77YY    ÿ¤@Y77$Z7;7@[9F;;^^  ÿ¤@\;;!]:K@@mm  ÿ¤@^@ @&_@<@B`;OEEnn  ÿ¤@^E!E'_E=ECa<N N€š€š ÿ´@c=dPP€œ€œ  ÿ¤@e>fRR€ž€ž ÿ¤@g?hWW1  1   ÿ¤@^W4W:_WPWVi@QYY€¾€¾ ÿ¤@j H & k l m nEHpEHF HFK HKO HOQ HQrE  AA T// k l m n00ETS TS V TV   F TF  K TK  O TO  sE  AA bLL "t#u$v b d bd  f bf h bh   Q bQ wE  AAxy   A`Azy{€Š€Šÿ¤@%}y#$~y23%B€€y{€´€´ÿ¤@%}y#$~y23€%C€‚y{€€ÿ¤@%}y#$~y23€ƒ%D€„y{€”€”ÿ¤@%}y#$~y23€…%E€†y{€±€±ÿ¤@%}y#$~y23€‡%F€ˆy{yyÿ¤@%}y#$€‰%G€Šy{ÿ¤@%}y#$€‹%H€Œy!{€î€î!ÿ¤@%}y$%€Ž%I€Œy!!!{€â€â!ÿ¤@%}y!$!%€Ž%J€Œy##!{€Ö€Ö!ÿ¤@%}y#$#%€Ž%K€y%%{€ô€ôÿ¤@%€’y%!%%€“%L€”y''{((ÿ¤@%€–%M€—y)){€¦€¦ÿ¤@%}y)) ~y).)/€˜y)=)@€™%N€šy,,!{88!ÿ¤@%}y,.,/~y,=,>€›%O€œy..({€½€½(ÿ¤@%}y.../~y.=.>€%P€žy00${DD$ÿ¤@%}y0.0/~y0=0>€Ÿ%Q€ y22+{€È€È+ÿ¤@%}y2.2/~y2=2>€¡%RKy44!{,,!ÿ¤@%}y4041~y4?4@€¢%SOy66#{66#ÿ¤@%}y6061~y6?6@€£%T€¤y99+{€·€·+ÿ¤@%}y9.9/~y9=9>€¥%U€¦y;;{€Ñ€Ñÿ¤@%}y;; ~y;.;/€§%V€¨y=={€»€»ÿ¤@%}y== €©%W€ªy??{xxÿ¤@%€«%X€¬yAA{wwÿ¤@%€­%Y€®yDD{€ˆ€ˆÿ¤@%€¯%Z€°yFF{€‰€‰ÿ¤@%€±%[FyHH{`` ÿ¤@%%\€²yII{eeÿ¤@%%]€³yJJ{OOÿ¤@%%^yMM {hh ÿ´@%}yMM€´%_yOO {pp ÿ´@%}yOO€µ%|y k l *€¶z+|z€€+|€€€‚+|€‚€„+|€„€†+|€†€ˆ+|€ˆ€Š+|€Š€Œ+|€Œ€Œ+|€Œ€Œ+|€Œ€+|€€”+|€”€—+|€—€š+|€š€œ+|€œ€ž+|€ž€ +|€ K+|KO+|O€¤+|€¤€¦+|€¦€¨+|€¨€ª+|€ª€¬+|€¬€®+|€®€°+|€°F+|F €²+|€²€³+|€³+|+|€·x  ``‚ -‹ï‹ï„.‹ï ‹ï "t$v,.,‚ -‹ï‹ï„ ‚ 1.1‚ -‹ï‹ï„ ‚ ‚ €¸  ``‚ -Œ%Œ%„4Œ% Œ%$v43‚-Œ%Œ%„‚‚47‚-Œ%Œ%„‚4:‚-Œ%Œ%„‚343‚-Œ%Œ%„‚‚747‚-Œ%Œ%„‚:4:‚-Œ%Œ%„‚€¹``‚-Œ1Œ1„=Œ1 Œ1$v=<‚-Œ1Œ1„‚‚<=<‚-Œ1Œ1„‚‚€º`` ô`c`F$$33 ÿ´@X$$€¼$#$+€½a€²((44 ÿ´@€¼((&€¾b€¿22;; ÿ´@X22€¼2&2.€ÁC .CF .C€²F.CF €².C€² ccB, ,.B€¿ €¿.B€¿  cc "t€Ãcc ×eÞ‚ cé ”eÞ‚ cé €Ä€Å  c„€Æ€Å 4 €Ä¿ c„c€Ç€Å€ç€ç€È€ë€ëÿ¤@00€Ê€Å--€Ë €Ä€Ædd€Ì€Åm m€Í €Ä€Æ^d€d€Î€Åp p€È€ˆ €ˆÿ¤@€Ï2e€Ð€År r€È€‰ €‰ÿ¤@€Ñ€Årr€Ò2f€Ó€Åw w€È€‚ €‚ ÿ¤@5€Åww€Ô2g€Õ€Åz z€È€„ €„ÿ¤@€’€Åzz€Ö2h€×€Å| |€È€… €…ÿ¤@€’€Å||€Ø2i€Ù€Å~ ~€È€† €†ÿ¤@€’€Å~~€Ú2j€Û€Å€€ €€€È€‡ €‡ÿ¤@€’€Å€€€€€Ü2k€Ý€Å€ƒ€ƒ€È€ž €žÿ¤@€Þ€Å€ƒ€ƒ €ß€Å€ƒ+€ƒ2€à2l€á€Å€…€…€È€Ÿ €Ÿÿ¤@€Þ€Å€…€… €ß€Å€…+€…2€â2m€ã€Å€‡€‡€È€  € ÿ¤@€Þ€Å€‡€‡ €ß€Å€‡+€‡2€ä2n€å€Å€‰€‰€È€¡ €¡ÿ¤@€Þ€Å€‰€‰ €ß€Å€‰+€‰2€æ2o€ç€Å€‹€‹€È€¢ €¢ÿ¤@€Þ€Å€‹€‹ €ß€Å€‹+€‹2€è2p€é€Å€€€È€£ €£ÿ¤@€Þ€Å€€ €ß€Å€+€2€ê2q€ë€Å€€€È€¤ €¤ÿ¤@€Þ€Å€€ €ß€Å€+€2€ì2r€í€Å€’ €’€È€® €®3ÿ¤@€ï€Å€’€’ €ð2s€ñ€Å€• €•€È€° €°3ÿ¤@€ï€Å€•€• €ò2t€ó€Å€˜ €˜€È€¯ €¯3ÿ¤@€ï€Å€˜€˜ €ô2u€õ€Å€› €›€È€± €±3ÿ¤@€Þ€Å€›€› €ï€Å€›+€›2€ö2v€÷€Å€ž €ž€È€² €²ÿ¤@€Ê€Å€ž€ž€ø2w€ù€Å€  € €È€¿ €¿ÿ¤@€Ñ€Å€ € %€ú2x€û€Å€¢ €¢€È€Á €Áÿ¤@€Ñ€Å€¢€¢€ü2y€ý€Å€¤ €¤€È€³ €³3ÿ¤@€ï€Å€¤€¤ €þ2z€ÿ€Å€¦ €¦€È€‘ €‘ÿ¤@€Þ€Å€¦€¦ €ß€Å€¦+€¦22{€Å€¨ €¨€È€´ €´3ÿ¤@€ï€Å€¨€¨ 2|€Å€« €«€È€¹ €¹‚-€Å€«#€«%„‚4‚ÿ¤@-€Å€«#€«%€Å€«€«!5€Å€«4€«92}€Å€­ €­€È€½ €½‚-€Å€­#€­%„‚3‚ÿ¤@-€Å€­#€­%€Å€­€­!5€Å€­4€­92~ €Å€° €°€È€™ €™3ÿ¤@€’€Å€°€° €Å€°&€°*€Ñ€Å€°E€°K 2 €Å€µ €µ€È€Ñ €Ñ‚-€Å€µ €µ"„‚ €Å€µ9€µ?„‚‚4‚‚‚3ÿ¤@-€Å€µ €µ" €Å€µ9€µ?€Å€µ€µ€Å€µ1€µ7Z€Å€µ\€µa€Å€µl€µq2€É€Å€Õ €Õ5m €Å€Ö €Ö3€Å€× €× €Å€ß €ß!€Å€à €à€Å€á €á€Å€â €â€Å€ã €ã€Å€ä €ä€Å€å €å€Å€æ €æ€Ç8€É€Ç €Ä€Æ€€€Å€ñ €ñ  €Ä€Æ•€„€€!€Å €È„R „R‚-€Å!#„‚ÿ¤@-€Å!#5€Å "9€#€Å €È„N „N‚-€Å35„"‚ÿ¤@-€Å35&€Å5€Å-2'9€‚(€Å  €È„U„U)‚-€Åpr„!‚ÿ¤@-€Åpr)€Å")*€Å;G5€Åjo9€ƒ+€Å €È„H „Hÿ¤@)€Å%€Ñ€Å7=,9-%  #„®*€„.- /‚ ‚ #ÿ¤@;1;€…2- /‚ ‚#$ÿ¤@;4;€†5- /‚ ‚ #= ÿ¤@;7;€‡5- /‚ ‚ #$= ÿ¤@;8- -9;€ˆ:-$ $/‚ ‚#=%ÿ¤@;<;€‰=-' '/‚ ‚#ÿ¤@;>;€Š?-77/‚u‚u$= 4! ÿ¤@?A-77(B-7076@C&*-7A7MD?€‹E-@@ /‚z‚z  % ÿ¤@?F-@#@)G-@0@4H?€ŒI-II!/‚‚! 4!= ÿ¤@?F-I$I*@C&*-I2I>J?€K-VV-/‚ˆ‚ˆ-%  ÿ¤@?G-V0V4L?€ŽM-ff(/‚Œ‚Œ($4! = ÿ¤@?A-f+f5@C&*-f?fKN?€O-qq-/‚‘‚‘-$4!=  ÿ¤@?A-q0q:@C&*-qDqPP?€Q-ww1/‚–‚–1$4!'ÿ¤@?A-w3w=@C&*-wFwRS?€‘T-~~/‚Ì‚Ì#= 4! ÿ¤@?U-~~&V-~7~;@C&*-~F~RW?€’X-€Œ€Œ /‚Û‚Û  $4!#= ÿ¤@?5-€Œ#€Œ(Y-€Œ/€Œ8@C&*-€ŒA€ŒMZ?€“[-€—€—*/‚ï‚ï*$4! ÿ¤@?Y-€—6€—?@C&*-€—I€—U\?€”]-€€./‚ö‚ö.$4!(ÿ¤@?Y-€1€:@C&*-€D€P_?€•`-€¥€¥'/‚ý‚ý'#4! = ÿ¤@?U-€¥0€¥9@C&*-€¥L€¥Xa?€–b-€«€«,/‚Ñ‚Ñ,#4!=  ÿ¤@?U-€«/€«8@C&*-€«K€«Wc?€—d-€±€±0/‚Ö‚Ö0#4!)ÿ¤@?U-€±2€±;@C&*-€±M€±Yf?€˜g-€º€º/‚©‚©= $ ÿ¤@?h-€º€º*i-€º3€º<j?€™k-€Â€Â/‚´‚´  ÿ¤@?l-€Â!€Â&m-€Â-€Â2n?€šo-€Ê€Ê /‚®‚®  = ÿ¤@?l-€Ê"€Ê'p?€›q-€Ó€Ó'/‚¼‚¼'$ = ÿ¤@?i-€Ó4€Ó=r?€œs-€Ù€Ù-/‚À‚À-$%4$ÿ¤@?i-€Ù/€Ù8m-€Ù@€ÙEt?€u-€â€â,/‚Ä‚Ä,$=  ÿ¤@?i-€â4€â=v?€žw-€ð€ð0/‚È‚È0$'4$ÿ¤@?i-€ð2€ð;x?€Ÿy-€ö€ö/‚œ‚œ$   ÿ¤@?z-€ö+€ö7{-€ö?€öM|?€ }-€ÿ€ÿ$/ƒƒ$ 4!= ÿ¤@?-€ÿ'€ÿ*@C&*-€ÿ2€ÿ>~?€¡I-  !/‚V‚V!$4!=%ÿ¤@DA- # -@C&*- 6 B€D€¢-/‚[‚[$4!=#ÿ¤@DY-!*@C&*-3?‚D€£ƒ-"/‚B‚B"$$$ÿ¤@D„-$*…-27†D€¤‡-  /‚G‚G=$$ÿ¤@Dˆ- ! &‰D€¥Š-%%/‚*‚*$ÿ¤@D‹-%%ŒD€¦-**/‚9‚9$ÿ¤@D‹-**"ŽD€§-///‚>‚>$ÿ¤@D‹-//D€¨‘-55/‚.‚.$4!ÿ¤@D‹-55@C&*-5(54’D€©“-;;/‚3‚3$4!ÿ¤@D‹-;;@C&*-;';3”D€ª•-@@"/‚M‚M"$=$ÿ¤@Di-@%@.–D€«—-EE%/‚Q‚Q%$$$ÿ¤@Dz-E(E4˜D€¬}-NN$/‚g‚g$$4!=%ÿ¤@D™-N&N3@C&*-N >¤€½ €½,3,ÿ¤@H¸H€·F¢@ @¤€¾€¾, ÿ¤@HX¢@@H€¸¹¢EE¤…¾…¾,,ÿ¤@Hº¢EE$»H€¹¼¢KK¤…Á…Á,,,ÿ¤@Hº¢KK%5¢K-K2½H€º¾¢QQ¤…Ä…Ä,,,ÿ¤@H¿¢QQ+À¢Q3Q;ÁH€»Â¢WW¤…Ç…Ç,33,,ÿ¤@H¿¢W W,âW4W=ÄH€¼Å¢]]¤…Ê…Ê)3,,ÿ¤@HÆ¢]]#â]1]:ÇH€½Å¢dd¤…Î…Î,)3,,ÿ¤@HX¢ddÆ¢d$d.âd€¤BçH€È袀ª€ª¤…ô…ô'3,,ÿ¤@H颀ª€ª,‪?€ªHêH€É뢀°€°¤…ø…ø$,ÿ¤@H좀° €°.íH€Ê¶€¶¤…ü…ü3,,ÿ¤@H¶€¶$ðH€Ëñ¢€¼€¼¤…ÿ…ÿ$3,,ÿ¤@HA¢€¼€¼'¼/€¼7òH€Ìó¢€Â€Â¤††$3,,ÿ¤@Hô¢€Â€Â'Â/€Â7õH€Íö¢€É€É¤††$3+,,ÿ¤@H÷¢€É€É+ø¢€É3€É=Ô¢€ÉI€ÉMùH€Îú¢€Ï€Ï¤† † #3,,ÿ¤@HU¢€Ï €Ï)â€Ï:€ÏCûH€Ïü¢€Ö€Ö¤††,%43,,ÿ¤@HX¢€Ö€Ö"ý¢€Ö*€Ö2@C&þ¢€ÖD€ÖOÿH€Ðü¢€Ü€Ü¤††%43,,ÿ¤@Hý¢€Ü€Ü'@C&þ¢€Ü8€ÜC‚H€Ñ‚¢€ä€ä¤††,%,43,,ÿ¤@HX¢€ä€ä"ý¢€ä*€ä25¢€äB€äG@C&þ¢€äP€ä[‚H€Ò‚¢€ë€ë¤††%,43,,ÿ¤@Hý¢€ë€ë'5¢€ë7€ë<@C&þ¢€ëE€ëP‚H€Ó‚¢€ð€ð¤††,,ÿ¤@H‚¢€ð€ð‚H€Ô‚¢€ö€ö¤††,,,ÿ¤@H‚¢€ö€ö#‚ ¢€ö+€ö1‚ H€Õ‚ ¢€ÿ€ÿ¤†"†",+,+,,ÿ¤@HÔ¢€ÿ€ÿ‚ ¢€ÿ'€ÿ0‚ ¢€ÿ7€ÿA‚¢€ÿI€ÿQ‚¢€ÿX€ÿa‚H€Ö‚¢¤†%†%,,,ÿ¤@HÔ¢"‚¢*6‚H€×‚¢  ¤†(†(,,ÿ¤@Hl¢  !m¢ ) .‚H€Ø‚¢¤†+†+,$,ÿ¤@Hn¢"º¢*0‚H€Ù‚¢¤†/†/,#,ÿ¤@Hn¢!'U¢/8‚H€Ú‚¢¤†5†5 $,ÿ¤@H5¢ì¢&4‚H€Û‚¢##¤†2†2‚-¢# #"„‚,ÿ¤@H-¢# #"5¢##‚H€Ü¥¢((¤†9†9+,ÿ¤@H‚¢(( ‚H€Ý‚¢..¤†<†<+,,ÿ¤@H‚¢..#5¢.*./‚ H€Þ‚!¢44¤†?†?,,,ÿ¤@HÌ¢44#Ô¢4+4/‚"H€ß‚#¢>>¤†G†G‚-¢>->/„,K‚ÿ¤@H-¢>->/n¢>>‚%H€à‚&¢DD+¤†C†C+.4,ÿ¤@H‚(¢D.D8‚)H€á‚*¢PP¤†I†I$3$3,=/,ÿ¤@H‚,¢P P.‚-¢P=PH‚.¢P]Ph‚/¢PvP{‚0H€â‚1¢YY.¤†N†N.0=/ÿ¤@H‚3¢Y0Y8‚4¢YDYL‚5¢YVYe‚6H€ã‚7¢__¤†R†R‚-¢__„K‚ÿ¤@H-¢__ª¢_"_&‚8H€ä‚9¢ii¤ ‚-¢f f „K‚,ÿ¤@K-¢f f ‚:K$¥‚;¢$#uO‚<1‚;‚;£P¥£+$.P¥.+¨P¥¨+P¥$4+­P¥­$+‚= ¡%%åå%°‚>¢,, %O‚<1‚>‚>"t1¯P°¯,+4,,³P°³,I+£P°£,$·P°·,3,FP°F, ¹P°¹,,¼P°¼,,,¾P°¾,,,ÂP°Â,33,,ÅP°Å)3,,ÅP°Å,)3,,ÉP°É,$,ËP°Ë,,,,ÐP°Ð+,,,,ÖP°Ö-,ÖP°Ö,-,ÛP°Û-,,ÛP°Û,-,,ÞP°Þ+,,áP°á+,,,åP°å3+,,,èP°è'3,,ëP°ë$,îP°î3,,ñP°ñ$3,,óP°ó$3,,öP°ö$3+,,úP°ú#3,,üP°ü,%43,,üP°ü%43,,‚P°‚,%,43,,‚P°‚%,43,,‚P°‚,,‚P°‚,,,‚ P°‚ ,+,+,,‚P°‚,,,‚P°‚,,‚P°‚,$,‚P°‚,#,‚P°‚ $,‚P°‚‚-¢# #"„‚,¥P°¥+,‚P°‚+,,‚!P°‚!,,,‚#P°‚#‚-¢>->/„,K‚‚&P°‚&.4,‚*P°‚*$3$3,=/,‚1P°‚10=/‚7P°‚7‚ -¢__„K‚ ‚? ¡&&!!åå&‚!-¢f f „‚$‚@¢ff&O‚<1‚@‚@"t‚9P‚$‚9‚"-¢f f „K‚",,‚A ¡''##åå'‚B¢nn'Q‚C2322‚E ¡I ((##å €å‚F‚G¢t t¤• •,4,ÿ¤@O‚<1‚G‚G‚H¢t t%‚IS€æ‚J‚K¢y y¤ƒ ƒ,4,,ÿ¤@O‚<1‚K‚K‚H¢y y%‚LS€ç‚M‚N¢~ ~¤\ \,4,,ÿ¤@O‚<1‚N‚N‚H¢~ ~%‚OS€è‚P‚Q¢ƒ ƒ¤¹ ¹,44,)3,ÿ¤@O‚<1‚Q‚Q‚H¢ƒ ƒ%‚RS€é‚S‚T¢ˆ ˆ¤z z,4,$ÿ¤@O‚<1‚T‚T‚H¢ˆ ˆ%‚US€ê‚V‚W¢ ¤® ®,44,-ÿ¤@O‚<1‚W‚W‚H¢ %‚XS€ë‚Y‚Z¢’ ’¤² ²,44,-,ÿ¤@O‚<1‚Z‚Z‚H¢’ ’%‚[S€ì‚\‚]¢— — ¤› › ,4+,,,ÿ¤@O‚<1‚]‚]‚H¢—$—)‚^S€í‚_‚`¢œ œ¤ž ž,4,,ÿ¤@O‚<1‚`‚`‚H¢œ œ%‚aS€î‚b‚c¢¡ ¡¤e e,4,,,ÿ¤@O‚<1‚c‚c‚H¢¡ ¡%‚dS€ï‚e‚f¢¦ ¦¤_ _,4+,ÿ¤@O‚<1‚f‚f‚H¢¦ ¦%‚gS€ð‚h‚i¢« «¤Á Á,4+,,ÿ¤@O‚<1‚i‚i‚H¢« «%‚jS€ñ‚k‚l¢° °¤Ö Ö,43+,,ÿ¤@O‚<1‚l‚l‚H¢°&°+‚mS€ò‚n‚o¢µ µ¤€ €,4$3,ÿ¤@O‚<1‚o‚o‚H¢µ µ%‚pS€ó‚q‚r¢º º¤k k,4$ÿ¤@O‚<1‚r‚r‚H¢º º%‚sS€ô‚t‚u¢¿ ¿¤Ì Ì,4$3+,ÿ¤@O‚<1‚u‚u‚H¢¿ ¿%‚vS€õ‚w‚x¢Ä Ĥ¶ ¶,4'3,ÿ¤@O‚<1‚x‚x‚H¢Ä Ä%‚yS€ö‚z‚{¢É ɤn n,4$3,ÿ¤@O‚<1‚{‚{‚H¢É É%‚|S€÷‚}‚~¢Î Τq q,4#3,ÿ¤@O‚<1‚~‚~‚H¢Î Î%‚S€ø‚€‚¢Ó Ó¤h h,43,ÿ¤@O‚<1‚‚‚H¢Ó Ó%‚‚S€ù‚ƒ‚„¢Ø ؤ¡ ¡,44,%3,ÿ¤@O‚<1‚„‚„‚H¢Ø$Ø)‚…S€ú‚†‚‡¢Ý ݤ¦ ¦,44,%3,,ÿ¤@O‚<1‚‡‚‡‚H¢Ý$Ý)‚ˆS€û‚‰‚Š¢â â¤b b,4,ÿ¤@O‚<1‚ЂЂH¢â â%‚‹S€ü‚Œ‚¢ç 礘 ˜,4,,ÿ¤@O‚<1‚‚‚H¢ç ç%‚ŽS€ý‚‚¢ì 줉 ‰,4,+,+,ÿ¤@O‚<1‚‚‚H¢ìì$‚‘S€þ‚’‚“¢ñ ñ¤† †,4,,ÿ¤@O‚<1‚“‚“‚H¢ñ ñ%‚”S€ÿ‚•‚–¢ö ö¤w w,4,ÿ¤@O‚<1‚–‚–‚H¢ö ö%‚—S‚˜‚™¢û û¤} },4,$ÿ¤@O‚<1‚™‚™‚H¢û û%‚šS‚›‚œ¢‚ ‚¤t t,4,#ÿ¤@O‚<1‚œ‚œ‚H¢‚ ‚%‚S‚ž‚Ÿ¢‚ ‚¤ ,4 $ÿ¤@O‚<1‚Ÿ‚Ÿ‚H¢‚ ‚%‚ S‚¡‚¢¢‚ ‚ ¤Y Y,4+ÿ¤@O‚<1‚¢‚¢‚H¢‚ ‚ %‚£S‚¤‚¥¢‚ ‚¤Œ Œ,4+,ÿ¤@O‚<1‚¥‚¥‚H¢‚ ‚%‚¦S(‚§¢‚‚(Q‚C2322‚¨ ¡Ð))##‚©‚ª¢‚ ‚¤†“ †“,433+,ÿ¤@O‚<1‚ª‚ª‚H¢‚‚#‚«T‚¬‚­¢‚! ‚!¤†• †•,4,33,ÿ¤@O‚<1‚­‚­‚H¢‚!‚!#‚®T‚¯‚°¢‚& ‚&¤†˜ †˜,4,,ÿ¤@O‚<1‚°‚°‚H¢‚&‚&#‚±T‚²‚³¢‚+ ‚+¤†ž †ž,4,,ÿ¤@O‚<1‚³‚³‚H¢‚+‚+#‚´T ‚µ‚¶¢‚1 ‚1¤†u †u,4ÿ¤@O‚<1‚¶‚¶‚H¢‚1‚1#‚·T ‚¸‚¹¢‚6 ‚6¤†[ †[,4ÿ¤@O‚<1‚¹‚¹‚H¢‚6‚6#‚ºT ‚»‚¼¢‚; ‚;¤†] †],4ÿ¤@O‚<1‚¼‚¼‚H¢‚;‚;#‚½T ‚¾‚¿¢‚@ ‚@¤†_ †_,44ÿ¤@O‚<1‚¿‚¿‚H¢‚@‚@#‚ÁT ‚‚â‚E ‚E¤†a †a,4ÿ¤@O‚<1‚ÂÂH¢‚E‚E#‚ÄT‚łƢ‚J ‚J¤†c †c,45ÿ¤@O‚<1‚ƂƂH¢‚J‚J#‚ÈT‚ɂʢ‚O ‚O¤†e †e,46ÿ¤@O‚<1‚ʂʂH¢‚O‚O#‚ÌT‚͂΢‚T ‚T¤†g †g,4/ÿ¤@O‚<1‚΂΂H¢‚T‚T#‚ÏT‚ЂѢ‚Y ‚Y¤†i †i,47ÿ¤@O‚<1‚ттH¢‚Y‚Y#‚ÓT‚Ô‚Õ¢‚^ ‚^¤†k †k,48ÿ¤@O‚<1‚Õ‚Õ‚H¢‚^‚^#‚×T‚؂٢‚c ‚c¤†m †m,4ÿ¤@O‚<1‚ققH¢‚c‚c#‚ÚT‚Û‚Ü¢‚h ‚h¤†o †o,49ÿ¤@O‚<1‚܂܂H¢‚h‚h#‚ÞT‚߂ࢂm ‚m¤†q †q,4ÿ¤@O‚<1‚à‚à‚H¢‚m‚m#‚áT‚â‚㢂r ‚r¤†s †s,4:ÿ¤@O‚<1‚ã‚ã‚H¢‚r‚r#‚åT‚æ‚碂| ‚|¤†¤ †¤,,44,3$3,ÿ¤@O‚<1‚ç‚ç‚袂|‚|/‚éT‚ê‚뢂‚ ‚‚*¤†¼ †¼*.4,ÿ¤@O‚<1‚ë‚ë‚(¢‚‚.‚‚8‚ìT‚í‚ˆ ‚ˆ2¤†À †À2%4,ÿ¤@O‚<1‚î‚î‚ˆ6‚ˆB‚ðT‚ñ‚ò¢‚ ‚2¤†Ä †Ä2%4,ÿ¤@O‚<1‚ò‚ò‚6‚B‚óT)‚ô¢‚‘‚‘)Q‚C2322‚õ ¡È**##‚ö‚÷¢‚– ‚–0¤†ù †ù4,\++, 3,ÿ¤@O‚<1‚÷‚÷‚H¢‚— ‚—‚ù]‚ú¢‚Ÿ‚Ÿ¤†Ê†Ê 3,,ÿ¤@‚û¢‚Ÿ#‚Ÿ(₟/‚Ÿ8‚ü]*‚ý‚þ%* p +.#K8+‚ÿ‚þ&,+ ‚ý& ,.#K8,ƒ‚þ  ,ƒ ‚ý‚ÿ¶--#B1ƒ‚þ  ƒ€Ø€Ø ‚#-‚þ  „‚#3‚#ÿ¤@-‚þ  ^ƒ‚þ  ƒ ‚$-‚þ  „‚$3‚$ÿ¤@-‚þ  ^ƒ‚þƒ€› €›‚%-‚þ„‚%3‚%3‚%ÿ¤@-‚þƒ‚þ^ ƒ‚þƒ€„ €„‚&-‚þ„‚'ƒ‚þ„‚&3‚'3‚&3‚'ÿ¤@-‚þƒ‚þ^!ƒ ‚þƒ‚(-‚þ!„‚(3‚(3‚(3‚(ÿ¤@-‚þ!ƒ‚þ^"ƒ ‚þ ƒ)) ‚)-‚þ„‚*ƒ‚þ„‚)‚*3‚)3‚*ÿ¤@-‚þƒ‚þƒ ‚þ^#ƒ ‚þ ƒOO ‚+‚þ„‚,‚þ"„‚-ƒ‚þ&(„‚+‚,‚-3‚+3‚,3‚-ÿ¤@‚þ‚þ"ƒ‚þ&(ƒ ‚þ^$ƒ ‚þ ƒ;; ‚.-‚þ„‚/ƒ‚þ„‚.‚/3‚.3‚/ÿ¤@-‚þƒ‚þ^%ƒ‚þƒY Y‚0-‚þ„‚03‚0ÿ¤@-‚þƒ‚þ^&ƒ‚þƒ^ ^‚1-‚þ„‚13‚1ÿ¤@-‚þƒ‚þ^'ƒ‚þ ƒjj ‚2-‚þ „3‚23‚2ÿ¤@-‚þ ^(ƒ‚þƒ€È€È‚3-‚þ„I3‚33‚3ÿ¤@-‚þ^)ƒ‚þ ƒ€§€§ ‚4-‚þ!„‚43‚4ÿ¤@-‚þ!Y‚þ^*ƒ‚þ ƒ)) ‚5‚þ„‚6‚þ„3‚5‚63‚53‚6ÿ¤@‚þ‚þ^+ƒ‚þƒFF‚7‚þ„‚8‚þ„‚9‚þ!„3‚7‚8‚93‚73‚83‚9ÿ¤@‚þ‚þ‚þ!^,ƒ‚þ ƒ`` ‚:‚þ„‚;‚þ„3‚:3‚;3‚:‚;ÿ¤@‚þ‚þ^-ƒ‚þ ƒyy ‚<‚þ„‚=‚þ„‚>‚þ'*„3‚<3‚=3‚>3‚<‚=‚>ÿ¤@‚þ‚þ‚þ'*^.ƒ‚þƒ‚?-‚þ„=‚?3‚?ÿ¤@-‚þ^/ƒ‚þƒ„„‚@-‚þ„3‚@=‚@ÿ¤@-‚þ^0ƒ‚þƒÑÑ‚A-‚þ„‚A‚A3‚A3‚Aÿ¤@-‚þ^-ƒ‚þ!!-ƒ ‚ý‚ÿÏ..BK181ƒ‚þ##"ƒ××"‚B-‚þ#,#.„=‚Bÿ„@-‚þ#,#._2ƒ‚þ%%ƒÚÚ‚C-‚þ%%%'„‚C=‚Cÿ„@-‚þ%%%'_3ƒ‚þ''ƒáá‚D-‚þ'+'-„=‚D=‚Dÿ¤@-‚þ'+'-ƒ‚þ''_4ƒ‚þ))ƒîî‚E-‚þ)+)-„‚Fƒ ‚þ)R)V„ ‚E‚F=‚Eÿ¤@-‚þ)+)-ƒ ‚þ)R)Vƒ!‚þ)))ƒ"‚þ):)?_5ƒ#‚þ++ƒøø‚G-‚þ+5+7„ =‚Gÿ¤@-‚þ+5+7ƒ"‚þ++"_6ƒ$‚þ--ƒ‚‚‚H-‚þ-)-+„‚Iƒ ‚þ-P-T„ ‚H‚I=‚Hÿ¤@-‚þ-)-+ƒ ‚þ-P-Tƒ!‚þ--'ƒ"‚þ-8-=_7ƒ%‚þ//ƒ‚$‚$‚J-‚þ/3/5„ =‚Jÿ¤@-‚þ/3/5ƒ"‚þ// _.ƒ&ƒ'(. ç/0KS8@/ƒ(ƒ' /`ƒ);Q‚C2322ƒ* ƒ&h00KS8@8ƒ+ƒ,ƒ'ƒ-‚K-ƒ'@B„ <b‚Kÿ„@cƒ0=dƒ1>O‚<1ƒ,ƒ,-ƒ'@Bƒ2ƒ'!(ƒ3e9ƒ4ƒ5ƒ'ƒ-‚L-ƒ'35„ b‚L<ÿ„@cƒ0=dƒ1>O‚<1ƒ5ƒ5-ƒ'35ƒ2ƒ'!(ƒ6e:ƒ7ƒ8ƒ'**ƒ-!!‚M-ƒ'*+*-„ b‚Mb‚Mÿ„@cƒ0=dƒ1>O‚<1ƒ8ƒ8-ƒ'*+*-ƒ2ƒ'** mƒ'*2*7ƒ9e;ƒ:ƒ;ƒ'44ƒ-%%‚N-ƒ'4+4-„ b‚N‚Nÿ„@cƒ0=dƒ1>O‚<1ƒ;ƒ;-ƒ'4+4-ƒ2ƒ'44 mƒ'4247ƒ<e<ƒ=ƒ>ƒ'<<ƒ---‚O-ƒ'<,<.„ b‚O‚Oÿ„@cƒ0=dƒ1>O‚<1ƒ>ƒ>-ƒ'<,<.ƒ2ƒ'<O‚<1ƒAƒA-ƒ'D-D/ƒ2ƒ'DD"5ƒ'D4D9ƒBe>ƒCƒDƒ'NNƒ-))‚Q-ƒ'N+N-„ b‚Q‚Qÿ„@cƒ0=dƒ1>O‚<1ƒDƒD-ƒ'N+N-ƒ2ƒ'NN mƒ'N2N75ƒ'N?NDƒEe?ƒFƒGƒ'VVƒ-55‚R-ƒ'V7V9„ b‚Rÿ„@cƒ0=dƒ1>O‚<1ƒGƒG-ƒ'V7V9ƒ'V V%ƒHe0ƒIƒJ0 013SS@d1ƒKƒJ15mƒL ƒI22SS@@2ƒMƒJ2ƒN ƒIi33SS@d$@ƒOƒJ ƒP¾¾ ?ÿ¤@gAƒQƒJ ƒP½½ ?ÿ¤@gBƒRƒJ ƒP…“…“ ?ÿ¤@gCƒ7ƒJ ƒPää ???ÿ¤@gDƒSƒJ ƒPþþ ???ÿ¤@gEƒTƒJ ƒP„ „???ÿ¤@gFƒUƒJƒP……????ÿ¤@gGƒVƒJ ƒP…x…x ???ÿ¤@gH€˜ƒJ ƒP…z…z ???ÿ¤@gIƒWƒJ ƒP…‚…‚ ???ÿ¤@gJƒXƒJ ƒP‚C‚C ???ÿ¤@gKƒYƒJ ƒP‚E‚E ???ÿ¤@gLƒZƒJ  ƒP‚_ ‚_??ÿ¤@gMƒ[ƒJ!! ƒP…”…” ??ÿ¤@gNƒ\ƒJ"" ƒP…œ…œ ???ÿ¤@gOƒ]ƒJ$$ƒP‚‚?ÿ¤@gPƒ^ƒJ%%ƒP‚‚?ÿ¤@gQƒ_ƒJ&& ƒP‚‚ ?ÿ¤@gRƒ`ƒJ'' ƒP‚‚ ??ÿ¤@gSƒaƒJ((ƒP‚,‚,??ÿ¤@gTƒbƒJ)) ƒP‚:‚: ??ÿ¤@gUƒcƒJ** ƒP‚<‚< ??ÿ¤@gVƒdƒJ++ ƒP‚>‚> ??ÿ¤@gWƒeƒJ,, ƒP‚@‚@ ??ÿ¤@gXƒfƒJ.. ƒPDD ?ÿ¤@gYƒgƒJ//ƒP…ª…ª?ÿ¤@gZƒhƒJ00ƒP…·…·?ÿ¤@g[ƒiƒJ11ƒP…¸…¸?ÿ¤@g\ƒjƒJ22ƒP…Ý…Ý?ÿ¤@g]ƒkƒJ33ƒP††?ÿ¤@g^ƒlƒJ55ƒP…»…»?9ÿ¤@g_ƒmƒJ66ƒP…Æ…Æ?:ÿ¤@g`ƒnƒJ88ƒP†)†)??ÿ¤@gaƒoƒJ:: ƒPƒ>ƒ> ?ÿ¤@gbƒpƒJ;;ƒP†"†"?ÿ¤@gcƒqƒJ<<ƒP†#†#?ÿ¤@g3 ƒr3 á»4¹S£d7€”dƒsƒt‚Sƒuƒs„‚T ƒs!„‚Uƒvƒs"*„‚Vƒwƒs+2„h‚S‚T‚U‚Vÿ´@hƒuƒs ƒs!ƒvƒs"*ƒwƒs+25ƒs ƒyhe1ƒs ƒt‚Wƒuƒs„‚X ƒs!„‚Yƒvƒs"*„‚Zƒwƒs+2„h‚W‚X‚Y‚Zÿ¤@hƒuƒs ƒs!ƒvƒs"*ƒwƒs+2ƒzhfƒs&&ƒt‚[ƒuƒs!!„‚\ ƒs!!!„‚]ƒvƒs!"!*„‚^ƒwƒs!+!2„‚_ƒ{ƒs!3!9„i‚[‚\‚]‚^‚_ÿ´@iƒuƒs!! ƒs!!!ƒvƒs!"!*ƒwƒs!+!2ƒ{ƒs!3!95ƒs& &ƒ}igpp hh ÿ´@#ƒ~#h1ssggÿ¤@#ƒ#iww e eÿ´@#5wwƒ€#j€€ l l*ÿ´@FƒFk€€ €Å €Å%@ÿ´@jƒƒjl€ž€ž q q'Aÿ´@kƒ…km€¯€¯ v v)Bÿ´@lƒ‡ln€¸€¸ €Ð €Ð ÿ´@ƒˆo€Â€Â €Õ €ÕCÿ´@mƒŠmp€Ì€Ì €Ú €Ú.Dÿ´@nƒŒnq€Õ€Õ €ß €ßEÿ´@oƒŽor€Þ€Þ €ä €äÿ´@"ƒ"s€é€é { {"ÿ´@$ƒ$t€ò€ò €é €éFÿ´@pƒ’pu€ý€ý €‹ €‹Gÿ´@qƒ”qv1€‡€‡Hÿ¤@rƒ–rw  €… €…%Hÿ´@r5  ƒ—rx €€ €€Iÿ´@sƒ™sy!! € €Jÿ´@tƒ›tz,, €¢ €¢#Kÿ´@uƒu{77 €¬ €¬$Lÿ´@vƒŸv|AA €§ €§&Mÿ´@wƒ¡w}OO €± €±ÿ´@5ƒ¢5~YY €¶ €¶  ÿ´@ƒ£bb €» €»"ÿ´@*ƒ¤*€pp €À €Àÿ´@ƒ¥ƒ¦{{€˜€˜Nÿ¤@xƒ¨x‚~~ €™€™ Nÿ´@xƒ©xƒ‚‚ €– €–Nÿ´@xƒª‚‚ƒ«x„‹‹ 9 9"&ÿ´@@ƒ¬@…•• C C/Oÿ´@yƒ®y†ŸŸ > >$Pÿ´@zƒ°z‡ƒ±¨¨€Ì€Ì1ÿ¤@Oƒ²Oˆ¬¬ €Ê €Ê1ÿ´@Oƒ³¬¬ƒ´O‰1µµ€’€’Qÿ¤@{ƒ¶{й¹ € €"Qÿ´@{5¹¹ƒ·{‹ƒ¸ÃÀð€ðRÿ¤@|ƒº|Œƒ»ÅÅ€ñ€ñRÿ¤@|ƒ¼|ƒ½ÇÇ€ò€òRÿ¤@|ƒ¾|ŽÍÍ €î €î,Rÿ´@|ƒ¿Í̓ÀÍ̓ÁÍ&Í-ƒÂ|ƒÃÙÙ#€ú€ú%STÿ¤@}ƒÆ}ƒÇÛÛ€û€ûSÿ¤@}ƒÈ}‘ƒÉÝÝ€ü€üSÿ¤@}ƒÊ}’áá €ý€ý TSÿ´@}ƒËáá"ƒÌ}“åå €þ€þ TSÿ´@}ƒËåå"ƒÍå:åHƒÎ}”éé €ö €ö$TSÿ´@}ƒËéé"ƒÏé:éGƒÍéPé^ƒÐ}•ƒÑóóUÿ¤@ƒÓ–÷÷  'Uÿ´@ƒÔ÷÷ƒÕ—ƒÖ‚‚  32ÿ¤@Qƒ×Q˜‚‚  +23ÿ´@QƒØ‚‚ƒÙQ™ƒÚ‚‚Vÿ¤@€€ƒÜ€€š‚‚  Vÿ´@€€ƒÝ‚‚ƒÞ€€›ƒß‚‚W€‚ÿ¤@€ƒã€œ‚‚  +=Wÿ´@€ƒä‚‚ƒå€1‚,‚,Xÿ¤@€ƒƒç€ƒž‚0‚0  )Xÿ´@€ƒ5‚0‚0ƒè€ƒŸƒÚ‚8‚8''Yÿ¤@€„ƒê€„ ƒë‚:‚:((Yÿ¤@€„ƒì€„¡ƒí‚=‚=))!Yÿ¤@€„ƒî€„¢ƒï‚=‚=)2)5Yÿ¤@€„ƒð€„£ƒñ‚?‚?**"Yÿ¤@€„ƒò€„¤ƒó‚?‚?*4*7Yÿ¤@€„ƒô€„¥‚A‚A # #!Yÿ´@€„ƒÝ‚A‚Aƒõ‚A‚A,ƒö€„¦‚M‚M / /=ÿ´@cƒ÷c§‚Z‚Z 4 4%>ÿ´@dƒød¨‚e‚e H H(;ÿ´@`ƒù`©ƒú‚t‚tOOZÿ¤@€…ƒü€…ª‚w‚w PP Zÿ´@€…ƒý€…«‚|‚| M MZÿ´@€…ƒþ‚|‚|ƒÿ€…¬€¿… …… …‚`……Ž‚a……Ž€†‚`‚a €¬€†€¿X …………€†­€¿… …… …‚b……Ž‚c……Ž€†‚b‚c€†‚b‚c€¬€†€¿€‡€†‚b‚cX€†‚b‚c…………€†®€¿… …… …‚d……Ž‚e……Ž€†‚d‚e €¬€†€¿ …………€†¯€²… …… …‚f……Ž‚g……Ž€†‚f‚g€¬€†€² …………€†°€²… …… …‚h……Ž‚i……Ž€†‚h‚i€¬€†€²…………€†±F… …… …‚j……Ž‚k……Ž€†‚j‚k €¬€†F …………€†²€¿… …… …‚l……Ž‚m……Ž‚n……Ž\‚l‚m‚n €¬\€¿X ………………\³€¿… …… …‚o……Ž‚p……Ž‚q……Ž\‚o‚p‚q\‚o‚p‚q€¬\€¿€‡\‚o‚p‚qX\‚o‚p‚q………………\´€¿… …… …‚r……Ž‚s……Ž‚t……Ž\‚r‚s‚t €¬\€¿ ………………\µ€²… …… …‚u……Ž‚v……Ž‚w……Ž\‚u‚v‚w€¬\€² ………………\¶€²… …… …‚x……Ž‚y……Ž‚z……Ž\‚x‚y‚z€¬\€²………………\·F… …… …‚{……Ž‚|……Ž‚}……Ž\‚{‚|‚} €¬\F ………………\¸€¿…$ …$…$ …$‚~…$…$Ž‚…$…$Ž‚€…$…$Ž‚…$…$Ž€ˆ‚~‚‚€‚ €¬€ˆ€¿X …$…$…$…$…$…$…$…$€ˆ¹€¿…$ …$…$ …$‚‚…$…$Ž‚ƒ…$…$Ž‚„…$…$Ž‚……$…$Ž€ˆ‚‚‚ƒ‚„‚…€ˆ‚‚‚ƒ‚„‚…€¬€ˆ€¿€‡€ˆ‚‚‚ƒ‚„‚…X€ˆ‚‚‚ƒ‚„‚……$…$…$…$…$…$…$…$€ˆº€¿…$ …$…$ …$‚†…$…$Ž‚‡…$…$Ž‚ˆ…$…$Ž‚‰…$…$Ž€ˆ‚†‚‡‚ˆ‚‰ €¬€ˆ€¿ …$…$…$…$…$…$…$…$€ˆ»€²…$ …$…$ …$‚Š…$…$Ž‚‹…$…$Ž‚Œ…$…$Ž‚…$…$Ž€ˆ‚Š‚‹‚Œ‚€¬€ˆ€² …$…$…$…$…$…$…$…$€ˆ¼€²…$ …$…$ …$‚Ž…$…$Ž‚…$…$Ž‚…$…$Ž‚‘…$…$Ž€ˆ‚Ž‚‚‚‘€¬€ˆ€²…$…$…$…$…$…$…$…$€ˆ½F…$ …$…$ …$‚’…$…$Ž‚“…$…$Ž‚”…$…$Ž‚•…$…$Ž€ˆ‚’‚“‚”‚• €¬€ˆF …$…$…$…$…$…$…$…$€ˆ¾€¿…1 …1…1 …1‚–…1…1Ž‚—…1…1Ž‚˜…1…1Ž‚™…1…1Ž‚š …1 …1#Ž€‰‚–‚—‚˜‚™‚𠀬€‰€¿X …1…1…1…1…1…1…1…1 …1 …1#€‰¿€¿…1 …1…1 …1‚›…1…1Ž‚œ…1…1Ž‚…1…1Ž‚ž…1…1Ž‚Ÿ …1 …1#Ž€‰‚›‚œ‚‚ž‚Ÿ€‰‚›‚œ‚‚ž‚Ÿ€¬€‰€¿€‡€‰‚›‚œ‚‚ž‚ŸX€‰‚›‚œ‚‚ž‚Ÿ…1…1…1…1…1…1…1…1 …1 …1#€‰À€¿…1 …1…1 …1‚ …1…1Ž‚¡…1…1Ž‚¢…1…1Ž‚£…1…1Ž‚¤ …1 …1#Ž€‰‚ ‚¡‚¢‚£‚¤ €¬€‰€¿ …1…1…1…1…1…1…1…1 …1 …1#€‰Á€²…1 …1…1 …1‚¥…1…1Ž‚¦…1…1Ž‚§…1…1Ž‚¨…1…1Ž‚© …1 …1#Ž€‰‚¥‚¦‚§‚¨‚©€¬€‰€² …1…1…1…1…1…1…1…1 …1 …1#€‰Â€²…1 …1…1 …1‚ª…1…1Ž‚«…1…1Ž‚¬…1…1Ž‚­…1…1Ž‚® …1 …1#Ž€‰‚ª‚«‚¬‚­‚®€¬€‰€²…1…1…1…1…1…1…1…1 …1 …1#€‰ÃF…1 …1…1 …1‚¯…1…1Ž‚°…1…1Ž‚±…1…1Ž‚²…1…1Ž‚³ …1 …1#Ž€‰‚¯‚°‚±‚²‚³ €¬€‰F …1…1…1…1…1…1…1…1 …1 …1#€‰Ä€¿…@ …@…@ …@‚´…@…@Ž‚µ…@…@Ž‚¶…@…@Ž‚·…@…@Ž‚¸ …@ …@#Ž‚¹#…@$…@'ހЂ´‚µ‚¶‚·‚¸‚¹ €¬€Š€¿X …@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÅ€¿…@ …@…@ …@‚º…@…@Ž‚»…@…@Ž‚¼…@…@Ž‚½…@…@Ž‚¾ …@ …@#Ž‚¿#…@$…@'ހЂº‚»‚¼‚½‚¾‚¿€Š‚º‚»‚¼‚½‚¾‚¿€¬€Š€¿€‡€Š‚º‚»‚¼‚½‚¾‚¿X€Š‚º‚»‚¼‚½‚¾‚¿…@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÆ€¿…@ …@…@ …@‚À…@…@Ž‚Á…@…@Ž‚Â…@…@Ž‚Ã…@…@Ž‚Ä …@ …@#Ž‚Å#…@$…@'ހЂÀ‚Á‚‚ÂĂŠ€¬€Š€¿ …@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÇ€²…@ …@…@ …@‚Æ…@…@Ž‚Ç…@…@Ž‚È…@…@ނɅ@…@Ž‚Ê …@ …@#Ž‚Ë#…@$…@'Ž€Š‚Æ‚Ç‚È‚É‚Ê‚Ë€¬€Š€² …@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÈ€²…@ …@…@ …@‚Ì…@…@Ž‚Í…@…@Ž‚Î…@…@Ž‚Ï…@…@Ž‚Ð …@ …@#Ž‚Ñ#…@$…@'Ž€Š‚Ì‚Í‚Î‚Ï‚Ð‚Ñ€¬€Š€²…@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÉF…@ …@…@ …@‚Ò…@…@ނӅ@…@Ž‚Ô…@…@ނՅ@…@Ž‚Ö …@ …@#Ž‚×#…@$…@'Ž€Š‚Ò‚Ó‚Ô‚Õ‚Ö‚× €¬€ŠF …@…@…@…@…@…@…@…@ …@ …@##…@$…@'€ŠÊ€¿…Q …Q…Q …Q‚Ø…Q…QŽ‚Ù…Q…QŽ‚Ú…Q…QŽ‚Û…Q…QŽ‚Ü …Q …Q#Ž‚Ý#…Q$…Q'Ž‚Þ&…Q(…Q+Ž€‹‚Ø‚Ù‚Ú‚Û‚Ü‚Ý‚Þ €¬€‹€¿X …Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹Ë€¿…Q …Q…Q …Q‚ß…Q…QŽ‚à…Q…QŽ‚á…Q…QŽ‚â…Q…QŽ‚ã …Q …Q#Ž‚ä#…Q$…Q'Ž‚å&…Q(…Q+Ž€‹‚ß‚à‚á‚â‚ã‚ä‚個‚ß‚à‚á‚â‚ã‚ä‚倬€‹€¿€‡€‹‚ß‚à‚á‚â‚ã‚ä‚åX€‹‚ß‚à‚á‚â‚ã‚ä‚å…Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹Ì€¿…Q …Q…Q …Q‚æ…Q…QŽ‚ç…Q…QŽ‚è…Q…QŽ‚é…Q…QŽ‚ê …Q …Q#Ž‚ë#…Q$…Q'Ž‚ì&…Q(…Q+Ž€‹‚æ‚ç‚è‚é‚ê‚ë‚ì €¬€‹€¿ …Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹Í€²…Q …Q…Q …Q‚í…Q…QŽ‚î…Q…QŽ‚ï…Q…QŽ‚ð…Q…QŽ‚ñ …Q …Q#Ž‚ò#…Q$…Q'Ž‚ó&…Q(…Q+Ž€‹‚í‚î‚ï‚ð‚ñ‚ò‚󀬀‹€² …Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹Î€²…Q …Q…Q …Q‚ô…Q…QŽ‚õ…Q…QŽ‚ö…Q…QŽ‚÷…Q…QŽ‚ø …Q …Q#Ž‚ù#…Q$…Q'Ž‚ú&…Q(…Q+Ž€‹‚ô‚õ‚ö‚÷‚ø‚ù‚ú€¬€‹€²…Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹ÏF…Q …Q…Q …Q‚û…Q…QŽ‚ü…Q…QŽ‚ý…Q…QŽ‚þ…Q…QŽ‚ÿ …Q …Q#Žƒ#…Q$…Q'Žƒ&…Q(…Q+Ž€‹‚û‚ü‚ý‚þ‚ÿƒƒ €¬€‹F …Q…Q…Q…Q…Q…Q…Q…Q …Q …Q##…Q$…Q'&…Q(…Q+€‹Ð€²…g…g#…g…g#€¬€Œ€² €ŒÑ€²…g…g#…g…g#€¬€Œ€²€ŒÒF…g…g#…g…g# €¬€ŒF €ŒÓ„…s…s‹c‹cƒ-…s…s„[ ÿ´@€-…s…s„ €Ô…v…v ‹b ‹b[ÿ´@€„ €Õ„ ……‹g‹gƒ-…{…{„ƒƒ…{…{„€Žƒƒƒƒÿ´@€Ž-…{…{ƒ…{…{„ …!…%„€ŽÖ„…ƒ…ƒ!‹Ý‹Ý!ƒ-…{…{„ƒƒ…{…{„ƒƒ€ƒƒÿ¤@€Ž-…{…{ƒ…{…{„ …ƒ$…ƒ(„€Ž×„…‡…‡!‹Û‹Û!ƒ-…{…{„ƒƒ…{…{„€ƒƒƒƒÿ¤@€Ž-…{…{ƒ…{…{„…‡$…‡-„€ŽØ„…Œ…Œ!‹à‹à!ƒ -…{…{„ƒ ƒ…{…{„ƒ ƒ €ƒ ƒ ÿ¤@€Ž-…{…{ƒ…{…{„ …Œ$…Œ(„€ŽÙ„……#‹ß‹ß#ƒ -…{…{„ƒ ƒ…{…{„€ƒ ƒ ƒ ƒ ÿ¤@€Ž-…{…{ƒ…{…{„…&…/„€ŽÚ„…›…› ‹å‹å ƒ -…{…{„ƒƒ…{…{„ƒ„…›>…›@„ƒ„…›D…›F„ƒ„…›J…›L„ƒ„…›P…›R„€Žƒ ƒƒƒƒƒƒ ƒƒƒƒƒÿ¤@€Ž-…{…{ƒ…{…{„…›>…›@„…›D…›F„…›J…›L„…›P…›R„ …›#…›'„…›W…›[„…›a…›e„…›k…›o„ …›u…›y„!…›…›€ƒ„"€ŽÛ„…¤…¤ ‹ä‹ä ƒ-…{…{„ƒƒ…{…{„ƒ„…¤>…¤@„ƒ„…¤D…¤F„ƒ„…¤J…¤L„€Žƒƒƒƒƒƒƒƒƒƒÿ¤@€Ž-…{…{ƒ…{…{„…¤>…¤@„…¤D…¤F„…¤J…¤L„ …¤#…¤'„…¤Q…¤U„…¤[…¤_„…¤e…¤i„ …¤o…¤s„#€ŽÜ„…¬…¬ ‹ã‹ã ƒ-…{…{„ƒƒ…{…{„ƒ„…¬>…¬@„ƒ„…¬D…¬F„€Žƒƒƒƒƒƒƒƒÿ¤@€Ž-…{…{ƒ…{…{„…¬>…¬@„…¬D…¬F„ …¬#…¬'„…¬K…¬O„…¬U…¬Y„…¬_…¬c„$€ŽÝ„…³…³ ‹â‹â ƒ-…{…{„ƒƒ…{…{„ƒ„…³>…³@„€Žƒƒƒƒƒƒÿ¤@€Ž-…{…{ƒ…{…{„…³>…³@„ …³#…³'„…³E…³I„…³O…³S„%€ŽÞ…·…· ‹f ‹fƒ-…{…{„ƒ ƒ…{…{„€Žƒƒ ÿ´@€Ž-…{…{ƒ…{…{„&€Žß„'…Á…Á#‹ê‹ê#ƒ!-…Á:…Á<„ƒ!ƒ!ÿ¤@€-…Á:…Á<Y…Á,…Á2„)€à„'…Æ…Æ#‹ë‹ë#ƒ"-…Æ@…ÆB„ƒ#ƒ…ÆC…ÆE„€ƒ"ƒ#ƒ"ƒ#ÿ¤@€-…Æ@…ÆBƒ…ÆC…ÆE„…Æ,…Æ5„*€á„+…Ë…Ë$‹ì‹ì$ƒ$…Ë-…Ë0„ƒ%…Ë3…Ë6„ƒ&ƒ…Ë:…Ë<„ƒ$ƒ%ƒ&ƒ$ƒ%ƒ&ÿ¤@€…Ë-…Ë0…Ë3…Ë6ƒ…Ë:…Ë<„ …Ë'…Ë+„,€â„+…Ð…Ð$‹í‹í$ƒ'…Ð-…Ð0„ƒ(…Ð3…Ð6„ƒ)…Ð9…Ð<„ƒ*ƒ…Ð@…ÐB„ƒ'ƒ(ƒ)ƒ*ƒ'ƒ(ƒ)ƒ*ÿ¤@€…Ð-…Ð0…Ð3…Ð6…Ð9…Ð<ƒ…Ð@…ÐB„ …Ð'…Ð+„-€ã„+…Õ…Õ$‹î‹î$ƒ+…Õ-…Õ0„ƒ,…Õ3…Õ6„ƒ-…Õ9…Õ<„ƒ.…Õ?…ÕB„ƒ/ƒ…ÕF…ÕH„ƒ+ƒ,ƒ-ƒ.ƒ/ƒ+ƒ,ƒ-ƒ.ƒ/ÿ¤@€…Õ-…Õ0…Õ3…Õ6…Õ9…Õ<…Õ?…ÕBƒ…ÕF…ÕH„ …Õ'…Õ+„.€ä„+…Ú…Ú$‹ï‹ï$ƒ0…Ú-…Ú0„ƒ1…Ú3…Ú6„ƒ2…Ú9…Ú<„ƒ3…Ú?…ÚB„ƒ4 …ÚE…ÚH„ƒ5ƒ…ÚL…ÚN„ƒ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ0ƒ1ƒ2ƒ3ƒ4ƒ5ÿ¤@€…Ú-…Ú0…Ú3…Ú6…Ú9…Ú<…Ú?…ÚB …ÚE…ÚHƒ…ÚL…ÚN„ …Ú'…Ú+„/€å€¿†F †F †F †F ƒ6-†F †FŽ€‘ƒ6 €¬€‘€¿X -†F †F€‘怿†F †F †F †F ƒ7-†F †FŽ€‘ƒ7€‘ƒ7€¬€‘€¿€‡€‘ƒ7X€‘ƒ7-†F †F€‘瀿†F †F †F †F ƒ8-†F †FŽ€‘ƒ8 €¬€‘€¿ -†F †F€‘耲†F †F †F †F ƒ9-†F †FŽ€‘ƒ9€¬€‘€² -†F †F€‘進†F †F †F †F ƒ:-†F †FŽ€‘ƒ:€¬€‘€²-†F †F€‘êF†F †F †F †F ƒ;-†F †FŽ€‘ƒ; €¬€‘F -†F †F€‘ë1†J†JŒŒƒ<-†F †FŽ€‘ƒ<ƒ<ÿ¤@€‘-†F †F„1€‘ì„2†J†JŒŒƒ=-†F †FŽ€‘ƒ=ƒ=ÿ¤@€‘-†F †F„3€‘퀿†b †b†b †bƒ>-†b†bŽ€’ƒ> €¬€’€¿X -†b†b€’†b †b†b †bƒ?-†b†bŽ€’ƒ?€’ƒ?€¬€’€¿€‡€’ƒ?X€’ƒ?-†b†b€’†b †b†b †bƒ@-†b†bŽ€’ƒ@ €¬€’€¿ -†b†b€’ð€²†b †b†b †bƒA-†b†bŽ€’ƒA€¬€’€² -†b†b€’ñ€²†b †b†b †bƒB-†b†bŽ€’ƒB€¬€’€²-†b†b€’òF†b †b†b †bƒC-†b†bŽ€’ƒC €¬€’F -†b†b€’ó„5†l†lŒ.Œ.ƒD-†b†bŽ4ƒDÿ¤@€’-†b†b„6€’ô„7†q†qŒ0Œ0ƒE-†b†bŽƒE4ƒEÿ¤@€’-†b†b5†q†q"„8€’õ1†u†uŒŒƒF-†b†bŽ€’ƒFƒFÿ¤@€’Q‚C2322-†b†b„9€’ö„:†x†xŒ(Œ(ƒG-†b†bŽ€’ƒGÿ¤@€’-†b†b„;€’÷„<†{†{Œ"Œ"ƒH-†b†bŽ€’ƒHÿ¤@€’-†b†b„=€’p4  4\„?  55IIøø5„@„A 5]„C  66IIøø6„D„A, ,6^„F  77IIøø7‚ä„A; ;7_„H  88IIøø8‚Ý„A6 68`„J  99IIøø9‚Ö„A1 19a„L  ::IIøø:€‘„A :b„N  ;;IIøø;„O„A! !;c„Q  <<IIøø<ƒI„R‚£‚£#…„S‚£ ‚£<nƒ‹D6„T  ==JJøø=‚Ë„A& &=d„V  >>JJøø>ƒJ-†N†N „„W†N †N>€‘ƒJ„X  ??KKøø?ƒK-†‡†‡ „†‡ †‡?€’ƒK„Y  @@LLøø@X„A  @e„[  AALLøøAƒL-„Axx„ ƒ/„Ax xA„\·z\V4à‰„]„^  BBMMøøBƒ.„A Bf„`  CCMMøøCƒM„R‚œ‚œ!…„a‚œ ‚œ Cnƒ‹D„b  DDNNøøD„c„A* * Dd„d  EENNøøEƒN„R‚±‚±#…„e‚± ‚±Enƒ‹D„f  FFOOøøFo„A9 9Fg„h  GGOOøøG€„A4 4Gh„j  HHOOøøHƒO„R‚ª‚ª#…„k‚ª ‚ªHnƒ‹D7„l  IIPPøøI‚Ò„A/ /Ii„n  JJPPøøJ€•„AE E J„o  KKPPøøKƒP-„A{{„„p„A{ {K„q  LLQQøøLƒQ„R‚‡‚‡#…„r‚‡ ‚‡Lnƒ‹D„s  MMRRøøMƒR„R‚Ž‚Ž%…„t‚Ž ‚ŽMnƒ‹D4„u  NNSSøøN‚À„A Nc„v  OOSSøøO€„A Oj„x  PPSSøøP„A  P„y  QQSSøøQ„z„A# #Qj„{  RRSSøøRƒS„R‚•‚•%…„|‚• ‚•Rnƒ‹Dk„~  SSTTøøS„}„AB BSl„€  TTTTøøT‚Ç„A> > Tm„‚  UUTTøøU‚+„A( ( U^„ƒ  VVTTøøVƒT-„Aoo„G„Ao oV„„  WWUUøøW/„A@ @ Wn„†  XXUUøøX„‡yU UX  YYUUøøYƒU-„Ak k „„ˆ„Ak kY=ƒU„‰  ZZVVøøZƒV-„AK K „6„AK KZ„Š  [[WWøø[ƒW-„AT T „„‹„AT T[„Œ  \\XXøø\ƒX-„A\ \ „„„A\ \\„Ž  ]]YYøø]ƒY-„Ad d „„„Ad d]„  ^^ZZøø^ƒ˜ ^€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ˜Ip„—  __ZZøø_ƒ0‚I ‚I_€¦„\·z\V4à‰„’„\·z\V4à‰„“ø„˜o,ù„o,oo„™oooøùoooooo@o€€o€Ào„•#uƒ0=p„š  ``ZZúú`„>  `„›  aaZZúúaƒæ‚' ‚')a€¦„\·z\V4à‰„’„\·z\V4à‰„“ú„˜o,û„o,oo„™oooúûooooooü„˜o,ý„o,oo„™oooüýooooooþ„˜o,ÿ„o,oo„™oooþÿoooooo‚„˜o,‚„o,oo„™ooo‚‚ooooooo„oooo”o„•#u1ƒæ1XƒæXp„œ  bbZZbƒž3 3$b€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒžLp„  ccZZcƒ = =&c€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ Mp„ž  ddZZdk€´ €´d€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uk p„Ÿ  eeZZe„ „¡ eQ‚C2322`ƒ);„¢  ˜ffZZ  ‚ƒ„£„¡ „¤ Iÿ¤@O‚<1„£„£„¥„¡„¦„¡")„§€©‚ƒ„¨„¡$ $„¤ 5ÿ¤@O‚<1„¨„¨Y„¡$$„©„¡$+$.„ª€©‚ƒ„«„¡, ,„¤ 5ÿ¤@O‚<1„«„«Y„¡,,„©„¡,3,6„¬€©‚ƒ „­„¡5 5„¤& &55ÿ¤@O‚<1„­„­ƒ „¡55„©„¡5+5.„®€©‚ƒ „¯„¡> >„¤- -55ÿ¤@O‚<1„¯„¯ƒ „¡>>„©„¡>3>6„°€©‚ƒ„±„¡H H„¤4 45ÿ¤@O‚<1„±„±ƒ „¡HH„©„¡H1H4„²€©‚ƒ„³„¡S S„¤; ;ÿ¤@O‚<1„³„³„¡SS„´„¡SS*„µ€©‚ ƒ„¶„¡[ [„¤L L5ÿ¤@O‚<1„¶„¶ƒ„¡[[„©„¡[0[3„·€©‚ ƒ„¸„¡c c„¤R R5ÿ¤@O‚<1„¸„¸ƒ„¡cc„©„¡c0c3„¹€©‚ „º„»„¡k k„¤C Cÿ¤@O‚<1„»„»„¡kk„©„¡k$k'„¼€©‚ „½„¾„¡r r„¤X Xÿ¤@O‚<1„¾„¾„©„¡rr„¿€©fƒÅ; ;f „À=UT„Á= = „ÂT„Ã? ?„ÄT„ÅA A„ÆT„ÇC C„ÈT„ÉE E„ÊT€ÂG G„ËT„ÌI I„ÍT„ÎK K„ÏT„ÐM M„ÑT ‚O O„ÒT„ÓQ Q„ÔT „ÕS S „Öq„Ø  ggZZ  gul lg€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•u1u1up„Ù  hhZZ  h„Ú„Ûh„Ü  ¥iiZZ ˜€‹‚ „݄ۄÛr€¤  „Ú€¬‚„à„Û„Û€¤€¬‚„á„Û„Û€¤€¬‚„â„Û„Û€¤€¬‚„ã„Û  „Û  €¤€¬‚„ä„Û  „Û  €¤€¬‚„å„Û  „Û  €¤€¬‚„æ„Û  „Û  €¤€¬‚„ç„Û  "„Û  "€¤€¬‚„è„Û„Û€¤€¬‚„é„Û „Û €¤€¬‚„ê„Û„Û€¤€¬‚„ë„Û„Û€¤€¬‚„ì„Û„Û€¤€¬‚„í„Û"„Û"€¤€¬‚„î„Û„Û€¤€¬‚„ï„Û„Û€¤€¬‚„ð„Û„Û€¤€¬‚„ñ„Û„Û€¤€¬‚ „ò„Û!„Û!€¤€¬‚!„ó„Û„Û€¤€¬‚"„ô„Û„Û€¤€¬‚#„õ„Û„Û€¤€¬‚$„ö„Û„Û€¤€¬‚%„÷„Û„Û€¤€¬‚&„ø„Û„Û€¤€¬‚'„ù„Û„Û€¤€¬‚(„ú„Û  &„Û  &€¤€¬‚)„û„Û!!,„Û!!,€¤€¬‚*„ü„Û""1„Û""1€¤€¬‚+„ý„Û##„Û##€¤€¬‚,„þ„Û$$„Û$$€¤€¬‚-„ÿ„Û%%„Û%%€¤€¬‚.…„Û&&„Û&&€¤€¬‚/…„Û''„Û''€¤€¬‚0…„Û((„Û((€¤€¬‚1…„Û))„Û))€¤€¬‚2…„Û**„Û**€¤€¬‚3…„Û++„Û++€¤€¬‚4…„Û,,„Û,,€¤€¬‚5…„Û--„Û--€¤€¬‚6…„Û..„Û..€¤€¬‚7… „Û//„Û//€¤€¬‚8… „Û00„Û00€¤€¬‚9… „Û11„Û11€¤€¬‚:… „Û22„Û22€¤€¬‚;… „Û33„Û33€¤€¬‚<…„Û44„Û44€¤€¬‚=…„Û55„Û55€¤€¬‚>…„Û66„Û66€¤€¬‚?…„Û77„Û77€¤€¬‚@…„Û88„Û88€¤€¬‚A…„Û99„Û99€¤€¬‚B…„Û::„Û::€¤€¬‚C…„Û;;„Û;;€¤€¬‚D…„Û<<„Û<<€¤€¬‚E…„Û==„Û==€¤€¬‚F…„Û>>„Û>>€¤€¬‚G…„Û??„Û??€¤€¬‚H…„Û@@„Û@@€¤€¬‚I…„ÛAA„ÛAA€¤€¬‚J…„ÛBB„ÛBB€¤€¬‚K…„ÛCC„ÛCC€¤€¬‚L…„ÛDD„ÛDD€¤€¬‚M…„ÛEE„ÛEE€¤€¬‚N… „ÛFF„ÛFF€¤€¬‚O…!„ÛGG„ÛGG€¤€¬‚P…"„ÛHH$„ÛHH$€¤€¬‚Q…#„ÛII(„ÛII(€¤€¬‚R…$„ÛJJ&„ÛJJ&€¤€¬‚S…%„ÛKK#„ÛKK#€¤€¬‚T…&„ÛLL#„ÛLL#€¤€¬‚U…'„ÛMM „ÛMM €¤€¬‚V…(„ÛNN*„ÛNN*€¤€¬‚W…)„ÛOO„ÛOO€¤€¬‚X…*„ÛPP„ÛPP€¤€¬‚Y…+„ÛQQ„ÛQQ€¤€¬‚Z…,„ÛRR#„ÛRR#€¤€¬‚[…-„ÛSS'„ÛSS'€¤€¬‚\….„ÛTT#„ÛTT#€¤€¬‚]…/„ÛUU „ÛUU €¤€¬‚^…0„ÛVV„ÛVV€¤€¬‚_…1„ÛXX„ÛXX€¤€¬‚`…2„ÛYY„ÛYY€¤€¬‚a…3„ÛZZ„ÛZZ€¤€¬‚b…4„Û[[„Û[[€¤€¬‚c…5„Û\\„Û\\€¤€¬‚d…6„Û]]„Û]]€¤€¬‚e…7„Û^^„Û^^€¤€¬‚f…8„Û__„Û__€¤€¬‚g…9„Û``„Û``€¤€¬‚h…:„Ûaa#„Ûaa#€¤€¬‚i…;„Ûbb„Ûbb€¤€¬‚j…<„Ûcc„Ûcc€¤€¬‚k…=„Ûdd„Ûdd€¤€¬‚l…>„Ûee!„Ûee!€¤€¬‚m…?„Ûff „Ûff €¤€¬‚n…@„Ûgg„Ûgg€¤€¬‚o…A„Ûhh!„Ûhh!€¤€¬‚p…B„Ûii„Ûii€¤€¬‚q…C„Ûjj„Ûjj€¤€¬‚r…D„Ûkk„Ûkk€¤€¬‚s…E„Ûll$„Ûll$€¤€¬‚t…F„Ûmm-„Ûmm-€¤€¬‚u…G„Ûnn„Ûnn€¤€¬‚v…H„Ûoo„Ûoo€¤€¬‚w…I„Ûpp#„Ûpp#€¤€¬‚x…J„Ûqq„Ûqq€¤€¬‚y…K„Ûrr„Ûrr€¤€¬‚z…L„Ûss„Ûss€¤€¬‚{…M„Ûtt„Ûtt€¤€¬‚|…N„Ûuu„Ûuu€¤€¬‚}…O„Ûvv„Ûvv€¤€¬‚~…P„Ûww„Ûww€¤€¬‚…Q„Ûxx„Ûxx€¤€¬‚€…R„Ûyy!„Ûyy!€¤€¬‚…S„Ûzz„Ûzz€¤€¬‚‚…T„Û{{!„Û{{!€¤€¬‚ƒ…U„Û||"„Û||"€¤€¬‚„…V„Û}}„Û}}€¤€¬‚……W„Û~~„Û~~€¤€¬‚†…X„Û„Û€¤€¬‚‡…Y„Û€€€€„Û€€€€€¤€¬‚ˆ…Z„Û€€„Û€€€¤€¬‚‰…[„Û€‚€‚ „Û€‚€‚ €¤€¬‚Š…\„Û€ƒ€ƒ#„Û€ƒ€ƒ#€¤€¬‚‹…]„Û€„€„„Û€„€„€¤€¬‚Œ…^„Û€…€…„Û€…€…€¤€¬‚…_„Û€†€†„Û€†€†€¤€¬‚Ž…`„Û€‡€‡„Û€‡€‡€¤€¬‚…a„Û€ˆ€ˆ„Û€ˆ€ˆ€¤€¬‚…b„Û€‰€‰„Û€‰€‰€¤€¬‚‘…c„Û€Š€Š„Û€Š€Š€¤€¬‚’…d„Û€‹€‹„Û€‹€‹€¤€¬‚“…e„Û€Œ€Œ/„Û€Œ€Œ/€¤€¬‚”…f„Û€Ž€Ž„Û€Ž€Žbb€¤ª„Û€Ž€Ž€¬‚•…g„Û€€„Û€€bbb€¤ª„Û€€„„Û€'€+€¬‚–…h„Û€’€’„Û€’€’bbbb€¤ª„Û€’€’„„Û€’'€’+„„Û€’;€’?€¬‚—…i„Û€”€”„Û€”€”bbbbb€¤ª„Û€”€”„„Û€”'€”+„„Û€”;€”?„„Û€”O€”S€¬iƒ­‘ ‘/i€¦„\·z\V4à‰„’„\·z\V4à‰„“@o@o„•#uƒ­Op…j  jjZZ˜˜jƒ)‚a ‚a(j€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ);p…k  kkZZ˜˜kƒ‚€‰ €‰%k€¦„\·z\V4à‰„’„\·z\V4à‰„“‚˜„˜o,‚™„o,oo„™ooo‚˜‚™oooooo‚š„˜o,‚›„o,oo„™ooo‚š‚›oooooo@o€€o o€ào„•#uƒ‚@p…l  llZZœœlƒœ( (#l€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒœKp…m  mmZZœœmƒZ-†F †FŽ„0…n†F †F mvƒžLwƒ MO‚<1…n…nƒZ…o†H†H…p„0€¿ƒ[-†F †FŽ€‘ƒ[ „0€¿ƒ\-†F †FŽ€‘ƒ\€‘ƒ\„0€¿ƒ]-†F †FŽ€‘ƒ] „0€²ƒ^-†F †FŽ€‘ƒ^„0€²ƒ_-†F †FŽ€‘ƒ_„0Fƒ`-†F †FŽ€‘ƒ` 1„01ƒa-†F †FŽ€‘ƒaƒa„2„0„2ƒb-†F †FŽ€‘ƒbƒb€‡€‘ƒZ…q  nnccœœn…rƒs€ˆ€ˆ nQ‚C2322…s  Å ouc~œ© ‚œ…t…uƒs€¥€¥ƒt‚T‚Tƒc-ƒs€¥@€¥B„s€®ƒcƒcÿ¤@O‚<1…u…u-ƒs€¥@€¥B…xƒs€¥€¥…yƒs€¥+€¥1…z€¯‚…{…|ƒs€¬€¬ƒt‚W‚Wƒd-ƒs€¬C€¬E„"€°ƒdƒdÿ¤@O‚<1…|…|-ƒs€¬C€¬E…~ƒs€¬€¬…yƒs€¬+€¬1…€¯‚ž…€…ƒs€³€³ƒt‚Z‚Zƒe-ƒs€³D€³F„"€°ƒeƒeÿ¤@O‚<1……-ƒs€³D€³F…~ƒs€³€³…yƒs€³,€³2…‚€¯‚Ÿ…ƒ…„ƒs€¹€¹ƒt‚`‚`ƒf-ƒs€¹:€¹<„€°ƒfƒfÿ¤@O‚<1…„…„-ƒs€¹:€¹<…yƒs€¹"€¹(……€¯‚ …†…‡ƒs€¿€¿ƒt‚f‚fƒg-ƒs€¿:€¿<„€°ƒgƒgÿ¤@O‚<1…‡…‡-ƒs€¿:€¿<…yƒs€¿"€¿(…ˆ€¯‚¡…‰…Šƒs€Å€Åƒt‚]‚]ƒh-ƒs€Å:€Å<„€°ƒhƒhÿ¤@O‚<1…Š…Š-ƒs€Å:€Å<…yƒs€Å"€Å(…‹€¯‚¢…Œ…ƒs€Ë€Ëƒt‚c‚cƒi-ƒs€Ë:€Ë<„€°ƒiƒiÿ¤@O‚<1……-ƒs€Ë:€Ë<…yƒs€Ë"€Ë(…Ž€¯‚£……ƒs€Ò€Òƒt‚N‚Nƒj-ƒs€Ò6€Ò8„€±ƒjƒjÿ¤@O‚<1……-ƒs€Ò6€Ò8…yƒs€Ò"€Ò(…’€¯‚¤…“…”ƒs€Û€Ûƒt‚H‚Hƒkƒwƒs€Û*€Û1„ƒl-ƒs€Ûi€Ûk„ƒks€²ƒlƒkƒlÿ¤@O‚<1…”…”ƒwƒs€Û*€Û1-ƒs€Ûi€Ûk…–ƒs€Û€Û …xƒs€Û8€Û?…yƒs€ÛT€ÛZ…—€¯‚¥…˜…™ƒs€ä€äƒt‚K‚Kƒmƒwƒs€ä*€ä1„ƒn-ƒs€äi€äk„ƒm"€³ƒnƒmƒnÿ¤@O‚<1…™…™ƒwƒs€ä*€ä1-ƒs€äi€äk…–ƒs€ä€ä …~ƒs€ä8€äB…yƒs€äQ€äW…›€¯‚¦…œ…ƒs€í€íƒt‚?‚?ƒoƒwƒs€í,€í3„ƒp-ƒs€í[€í]„ƒo€´ƒpƒoƒpÿ¤@O‚<1……ƒwƒs€í,€í3-ƒs€í[€í]…–ƒs€í€í …yƒs€íG€íM…Ÿ€¯‚§… …ƒs€õ€õƒt‚5‚5ƒqƒwƒs€õ,€õ3„ƒr-ƒs€õ[€õ]„ƒq€´ƒrƒqƒrÿ¤@O‚<1……ƒwƒs€õ,€õ3-ƒs€õ[€õ]…–ƒs€õ€õ …yƒs€õG€õM…¡€¯‚¨…¢…£ƒs€ü€üƒt‚Q‚Qƒs-ƒs€ü'€ü)„ƒtƒwƒs€ü*€ü1„€´ƒsƒtƒsÿ¤@O‚<1…£…£-ƒs€ü'€ü)ƒwƒs€ü*€ü1…yƒs€ü€ü…¤€¯oƒu-ƒs€Œ€Œ„ƒvƒwƒs€Œ€Œ!„…•ƒs€Œ €Œo€µƒusƒv…¦  …rppww©©pƒw-ƒs€€„ƒxƒwƒs€€ „…žƒs€ €p€µƒwƒx…§  …rqqyy©©qƒy-ƒs€’€’„ƒzƒwƒs€’€’$„…šƒs€’ €’q€µƒy"ƒz…¨  …rrr{{©©rƒ{-ƒs€–€–„…wƒs€– €–r€²ƒ{…©  …rss||©©sƒ|-ƒs€™€™„…‘ƒs€™ €™s€´ƒ|…ª  …rtt}}©©tƒ}-ƒs€œ€œ„…}ƒs€œ €œt€³ƒ}…«  …ruu~~©©uƒ~ƒuƒs!!„ƒ ƒs!!!„ƒ€ƒvƒs!"!*„ƒƒwƒs!+!2„ƒ‚ƒ{ƒs!3!9„ƒ|ƒs!!uƒ|ƒƒƒuƒs!!„ƒ„ ƒs!!!„ƒ…ƒvƒs!"!*„ƒ†ƒwƒs!+!2„ƒ‡ƒ{ƒs!3!9„iƒƒƒ„ƒ…ƒ†ƒ‡hƒ~ƒƒ€ƒ…¬  vvˆˆ©©vƒˆƒuƒs„ƒ‰ ƒs!„ƒŠƒvƒs"*„ƒ‹ƒwƒs+2„ƒxƒsvƒxƒŒƒuƒs„ƒ ƒs!„ƒŽƒvƒs"*„ƒƒwƒs+2„hƒŒƒƒŽƒ1ƒx1ƒƒuƒs„ƒ‘ ƒs!„ƒ’ƒvƒs"*„ƒ“ƒwƒs+2„hƒƒ‘ƒ’ƒ“…­  ww””©©wC‡ ‡"w€¦„\·z\V4à‰„’„\·z\V4à‰„“ˆoˆo„•#uC&p…®  xx””©©xƒ”-†b†bŽ„4…¯†b †bxrƒ•HQ‚C2322vƒžLwƒ MO‚<1…¯…¯4ƒ”„Á„Á†d †d…°ƒ”‚†i†i4ƒ”„7„7†i †i…±„4€¿ƒ•-†b†bŽ€’ƒ• „4€¿ƒ–-†b†bŽ€’ƒ–€’ƒ–„4€¿ƒ—-†b†bŽ€’ƒ— „4€²ƒ˜-†b†bŽ€’ƒ˜„4€²ƒ™-†b†bŽ€’ƒ™„4Fƒš-†b†bŽ€’ƒš „5„4„5ƒ›-†b†bŽ4ƒ›„7„4„7ƒœ-†b†bŽƒœ4ƒœ1„41ƒ-†b†bŽ€’ƒƒ„:„4„:ƒž-†b†bŽ€’ƒž„<„4„<ƒŸ-†b†bŽ€’ƒŸ€‡€’ƒ”…²  yy  ©©y…³…´ yQ‚C2322…µ  Lzz ±©¶ ‚©…¶…·…´ …¸ ƒ -…´„4ƒ ÿ¤@O‚<1…·…·-…´…¹…´…º€¶‚ª…»…¼…´ …¸ ƒ¡-…´„4ƒ¡ÿ¤@O‚<1…¼…¼-…´…¹…´…½€¶‚«ƒ:…¾…´" "…¸ ƒ¢-…´""„4ƒ¢ƒ¢ÿ¤@O‚<1…¾…¾-…´""…¹…´""…¿€¶‚¬…À…´( (…¸ ƒ£-…´((„4ƒ£ÿ¤@O‚<1…À…À-…´((…¹…´((…Á€¶‚­…Â…Ã…´1 1…¸ ƒ¤-…´11„ƒ¥ …´11„ƒ¥ƒ¤ƒ¥ƒ¥4ƒ¤ƒ¥ÿ¤@O‚<1…Ã…Ã-…´11 …´11…´11$Z…´1A1F…¹…´1Q1W…Ä€¶‚®…Å…Æ…´: :…¸! !ƒ¦-…´::„ƒ§ …´::„ƒ¦ƒ§ƒ§4ƒ¦ƒ§ƒ§ÿ¤@O‚<1…Æ…Æ-…´:: …´::…´:":(…¹…´:E:KZ…´:Y:^…Ç€¶‚¯ƒ„¸…´B B…¸$ $ƒ¨-…´BB!„ƒ¨4ƒ¨ÿ¤@O‚<1„¸„¸-…´BB!ƒ…´BB…¹…´B.B4…È€¶‚°ƒ„¶…´J J…¸' 'ƒ©-…´JJ!„ƒ©4ƒ©ÿ¤@O‚<1„¶„¶-…´JJ!ƒ…´JJ…¹…´J.J4…É€¶‚±ƒ„¨…´R R…¸* *ƒª-…´RR„ƒª4ƒªÿ¤@O‚<1„¨„¨-…´RRY…´RR…¹…´R)R/…Ê€¶‚²ƒ „­…´Y Y…¸- -ƒ«-…´YY„ƒ¬ƒ…´Y Y"„ƒ«ƒ¬4ƒ«4ƒ¬ÿ¤@O‚<1„­„­-…´YYƒ…´Y Y"ƒ …´YY…¹…´Y'Y-…Ë€¶‚³…Ì…Í…´a a…¸0 0ƒ­-…´aa„ƒ®ƒ…´a a"„ƒ­4ƒ®4ƒ­4ƒ®ÿ¤@O‚<1…Í…Í-…´aaƒ…´a a"…Î…´aa…¹…´a.a4…Ï€¶‚´ƒ…Ð…´h h…¸3 3ƒ¯-…´hh„4ƒ¯=ƒ¯ÿ¤@O‚<1…Ð…Ð-…´hh…¹…´hh…Ñ€¶‚µ…Ò…Ó…´n n…¸6 6ƒ°-…´nn„4ƒ°3ƒ°ÿ¤@O‚<1…Ó…Ó-…´nn…¹…´nn…Ô€¶z…Õ…Þ …Þz…Ö  ã{±/¶Â ‚¶„ …ê…ê"‹n‹nƒ±…ä…䄃²…ä…䄃³ƒ…ä …ä"„€·ƒ±ƒ²ƒ³ƒ±ƒ²ƒ³ÿ´@€·…ä…ä…ä…äƒ…ä …ä"„…ê%…ê)„…ê0…ê4…Ø€·‚·…Ù…ï…ï‹p‹p!ƒ´…ä…䄃µ…ä…䄃¶ƒ…ä …ä"„ƒ´ƒµƒ¶€·ƒ´ƒµƒ¶ÿ¤@€·…ä…ä…ä…äƒ…ä …ä"„ …ï"…ï&…Ú€·‚¸…ó …ó‹l‹lƒ·…ä…䄃¸…ä…䄃¹ƒ…ä …ä"„€·ƒ·ƒ¸ƒ¹ÿ´@€·…ä…ä…ä…äƒ…ä …ä"…Û€·‚¹„ ††"‹{‹{ƒº…ù…ù„ƒ»…ù…ù„ƒ¼…ù …ù#„ƒ½ƒ…ù$…ù&„€¸ƒºƒ»ƒ¼ƒ½ƒºƒ»ƒ¼ƒ½ÿ´@€¸…ù…ù…ù…ù…ù …ù#ƒ…ù$…ù&„†%†)„†0†4„†;†?…Ý€¸‚º…Ù††‹}‹}!ƒ¾…ù…ù„ƒ¿…ù…ù„ƒÀ…ù …ù#„ƒÁƒ…ù$…ù&„ƒ¾ƒ¿ƒÀƒÁ€¸ƒ¾ƒ¿ƒÀƒÁÿ¤@€¸…ù…ù…ù…ù…ù …ù#ƒ…ù$…ù&„ †"†&…Þ€¸‚»† † ‹y‹yƒÂ…ù…ù„ƒÃ…ù…ù„ƒÄ…ù …ù#„ƒÅƒ…ù$…ù&„€¸ƒÂƒÃƒÄƒÅÿ´@€¸…ù…ù…ù…ù…ù …ù#ƒ…ù$…ù&…߀¸‚¼„ ††"‹‹ƒÆ††„ƒÇ††„ƒÈ† †#„ƒÉ†$†'„ƒÊƒ†(†*„€¹ƒÆƒÇƒÈƒÉƒÊƒÆƒÇƒÈƒÉƒÊÿ´@€¹††††† †#†$†'ƒ†(†*„†%†)„†0†4„†;†?„ †F†J…္‚½…Ù††‹Ž‹Ž!ƒË††„ƒÌ††„ƒÍ† †#„ƒÎ†$†'„ƒÏƒ†(†*„ƒËƒÌƒÍƒÎƒÏ€¹ƒËƒÌƒÍƒÎƒÏÿ¤@€¹††††† †#†$†'ƒ†(†*„ †"†&…‹‚¾†" †"‹‹‹‹ƒÐ††„ƒÑ††„ƒÒ† †#„ƒÓ†$†'„ƒÔƒ†(†*„€¹ƒÐƒÑƒÒƒÓƒÔÿ´@€¹††††† †#†$†'ƒ†(†*…〹‚¿„ †2†2"‹¤‹¤ƒÕ†(†(„ƒÖ†(†(„ƒ×†( †(#„ƒØ†($†('„ƒÙ †((†(+„ƒÚƒ†(,†(.„€ºƒÕƒÖƒ×ƒØƒÙƒÚƒÕƒÖƒ×ƒØƒÙƒÚÿ´@€º†(†(†(†(†( †(#†($†(' †((†(+ƒ†(,†(.„†2%†2)„†20†24„†2;†2?„ †2F†2J„!†2Q†2U…债‚À…Ù†7†7‹¦‹¦!ƒÛ†(†(„ƒÜ†(†(„ƒÝ†( †(#„ƒÞ†($†('„ƒß †((†(+„ƒàƒ†(,†(.„ƒÛƒÜƒÝƒÞƒßƒà€ºƒÛƒÜƒÝƒÞƒßƒàÿ¤@€º†(†(†(†(†( †(#†($†(' †((†(+ƒ†(,†(.„ †7"†7&…怺‚Á†; †;‹¢‹¢ƒá†(†(„ƒâ†(†(„ƒã†( †(#„ƒä†($†('„ƒå †((†(+„ƒæƒ†(,†(.„€ºƒáƒâƒãƒäƒåƒæÿ´@€º†(†(†(†(†( †(#†($†(' †((†(+ƒ†(,†(.…瀺{ƒç…ä…䄃è…ä…ä„ƒéƒ…ä …ä"„…×…ä …ä{Fž*€»…ׄ ƒê…ä…䄃ë…ä…ä„ƒìƒ…ä …ä"„€·ƒêƒëƒìƒêƒëƒì„ €»…ׄ ƒê…ä…䄃ë…ä…ä„ƒìƒ…ä …ä"„€·ƒêƒëƒìƒêƒëƒì…Ù€»…×…Ùƒí…ä…䄃î…ä…ä„ƒïƒ…ä …ä"„ƒíƒîƒï€·ƒíƒîƒï€»…׃ð…ä…䄃ñ…ä…䄃òƒ…ä …ä"„€·ƒðƒñƒò€Žƒçƒèƒé…è  …Õ||óóÂÂ|ƒó…ù…ù„ƒô…ù…ù„ƒõ…ù …ù#„ƒöƒ…ù$…ù&„…Ü…ù …ù|Fž*€»…Ü„ ƒ÷…ù…ù„ƒø…ù…ù„ƒù…ù …ù#„ƒúƒ…ù$…ù&„€¸ƒ÷ƒøƒùƒúƒ÷ƒøƒùƒú„ €»…Ü„ ƒ÷…ù…ù„ƒø…ù…ù„ƒù…ù …ù#„ƒúƒ…ù$…ù&„€¸ƒ÷ƒøƒùƒúƒ÷ƒøƒùƒú…Ù€»…Ü…Ùƒû…ù…ù„ƒü…ù…ù„ƒý…ù …ù#„ƒþƒ…ù$…ù&„ƒûƒüƒýƒþ€¸ƒûƒüƒýƒþ€»…܃ÿ…ù…ù„„…ù…ù„„…ù …ù#„„ƒ…ù$…ù&„€¸ƒÿ„„„€Žƒóƒôƒõƒö…é  …Õ}}ÂÂ}„††„„††„„† †#„„†$†'„„ƒ†(†*„…à† †}Fž*€»…à„ „††„„ ††„„ † †#„„ †$†'„„ ƒ†(†*„€¹„„ „ „ „ „„ „ „ „ „ €»…à„ „††„„ ††„„ † †#„„ †$†'„„ ƒ†(†*„€¹„„ „ „ „ „„ „ „ „ …Ù€»…à…Ù„ ††„„††„„† †#„„†$†'„„ƒ†(†*„„ „„„„€¹„ „„„„€»…à„††„„††„„† †#„„†$†'„„ƒ†(†*„€¹„„„„„€Ž„„„„„…ê  …Õ~~ÂÂ~„†(†(„„†(†(„„†( †(#„„†($†('„„ †((†(+„„ƒ†(,†(.„…ä†( †(~Fž*€»…ä„ „†(†(„„†(†(„„†( †(#„„ †($†('„„! †((†(+„„"ƒ†(,†(.„€º„„„„ „!„"„„„„ „!„"„ €»…ä„ „†(†(„„†(†(„„†( †(#„„ †($†('„„! †((†(+„„"ƒ†(,†(.„€º„„„„ „!„"„„„„ „!„"…Ù€»…ä…Ù„#†(†(„„$†(†(„„%†( †(#„„&†($†('„„' †((†(+„„(ƒ†(,†(.„„#„$„%„&„'„(€º„#„$„%„&„'„(€»…ä„)†(†(„„*†(†(„„+†( †(#„„,†($†('„„- †((†(+„„.ƒ†(,†(.„€º„)„*„+„,„-„.€Ž„„„„„„…ë  …Õ//ÂÂ…ì†Ô †Ô€…ƒûZ…í  kp€ƒ/öÂp‚€ˆ†ô†ô»»„/-†ô-†ô.„„/€ˆ„/„/„/„/ÿ„@-†ô-†ô.…î†ô†ô…‚Ãz†ú†úÇÇ„0†ú9†ú;„„0„1z„0„1„2„2„1„1†ú@†úB„„0„1z„0„1„2„2„2†ún†úp„„0„1„0„1„2ÿ„@†ú9†ú;†ú@†úB†ún†úp}†ú†ú~†ú$†ú%…ð€¼‚Ä€„‡‡ÞÞ„3‡9‡;„„3„4€„„3„4„5„5„4„4‡@‡B„„3„4€„„3„4„5„5„5‡n‡p„„3„4„3„4„5ÿ„@‡9‡;‡@‡B‡n‡p}‡‡~‡$‡%…ñ€¼‚Å€‚‡‡ïï„6‡9‡;„„6„7€‚„6„7„8„8„7„7‡@‡B„„6„7€‚„6„7„8„8„8‡n‡p„„6„7„6„7„8ÿ„@‡9‡;‡@‡B‡n‡p}‡‡~‡$‡%…ò€¼‚Æ€†‡ ‡ ŽŽ„9‡ 9‡ ;„„9„:€†„9„:„;„;„:„:‡ @‡ B„„9„:€†„9„:„;„;„;‡ n‡ p„„9„:„9„:„;ÿ„@‡ 9‡ ;‡ @‡ B‡ n‡ p}‡ ‡ ~‡ $‡ %…󀼂ǀ€‡‡ŽŽ„<‡;‡=„„<„=€€„<„=„>„>„=„=‡B‡D„„<„=€€„<„=„>„>„>‡p‡r„„<„=„<„=„>ÿ„@‡;‡=‡B‡D‡p‡r}‡‡~‡$‡%…ô€¼‚È…õ‡‡ŽUŽU„?-‡7‡8„„?…õ„?„?„?„?„?„?ÿ„@-‡7‡8}‡‡~‡"‡#…ö€¼‚É„™‡‡ŽcŽc„@-‡7‡8„„@„™„@„@„@„@„@„@ÿ„@-‡7‡8}‡‡~‡#‡$…÷€¼‚Ê…ø‡$‡$ŽqŽq„A-‡$7‡$8„„A…ø„A„A„A„A„A„Aÿ„@-‡$7‡$8}‡$‡$~‡$#‡$$…ù€¼‚Ë…ú‡*‡*Ž9Ž9„B-‡*?‡*@„„B…ú„B„B„B„Bÿ„@-‡*?‡*@5‡*‡* …û‡*'‡*,…ü€¼‚Ì…ý‡0‡0ŽGŽG„C-‡0?‡0@„„C…ý„C„C„C„Cÿ„@-‡0?‡0@5‡0‡0 …û‡0'‡0,…þ€¼‚Í…ÿ‡5‡5ŽŽ„D-‡59‡5:„„D…ÿ„D„D„D„Dÿ„@-‡59‡5:5‡5‡5!†€¼‚΀Ї:‡:Ž&Ž&„E-‡:9‡::„„E€Š„E„E„E„Eÿ„@-‡:9‡::5‡:‡:†€¼‚Ï€š‡@‡@``„F-‡@5‡@7„ „F„Fÿ„@-‡@5‡@7}‡@‡@~‡@#‡@$†€¼‚Ѐž‡F‡Faa„G-‡F5‡F7„ „G„Gÿ„@-‡F5‡F7}‡F‡F~‡F#‡F$†€¼‚Ñ€ ‡L‡Lbb„H-‡L6‡L8„ „H„Hÿ„@-‡L6‡L8}‡L‡L~‡L$‡L%†€¼‚Ò€œ‡R‡Rcc„I-‡R6‡R8„ „I„Iÿ„@-‡R6‡R8}‡R‡R~‡R$‡R%†€¼‚ÓK‡X‡Xdd„J-‡X5‡X7„ „J„Jÿ„@-‡X5‡X7}‡X‡X~‡X#‡X$†€¼‚ÔO‡^‡^ee„K-‡^6‡^8„ „K„Kÿ„@-‡^6‡^8}‡^‡^~‡^$‡^%†€¼‚Õ†‡d‡d®®„L‡d ‡d#„„M‡d'‡d*„„N‡d=‡d@„„L„M„M„N„L„Nÿ„@‡d ‡d#‡d'‡d*‡d=‡d@† ‡d‡d† ‡d/‡d4† €¼‚Ö† ‡j‡j°°„O‡j ‡j#„„P‡j'‡j*„„Q‡j6‡j9„„O„P„Q„O„Q„Pÿ„@‡j ‡j#‡j'‡j*‡j6‡j9† ‡j‡j† ‡j/‡j4† €¼‚׆‡p‡p¢¢„R‡p‡p „„Sƒ‡p1‡p3„„R„R„S„Sÿ„@‡p‡p ƒ‡p1‡p3†‡p‡p„ ‡p$‡p(†€¼‚؆‡v‡v¤¤„T‡v‡v"„„U‡v*‡v-„„Vƒ‡vE‡vG„„T„U„T„U„V„Vÿ„@‡v‡v"‡v*‡v-ƒ‡vE‡vG„‡v‡v„‡v%‡v)„ ‡v1‡v5†€¼‚Ù†‡}‡}¦¦„W‡} ‡}#„„X‡}+‡}.„„Y‡}6‡}9„„Zƒ‡}X‡}Z„„W„X„Y„W„X„Y„Z„Zÿ„@‡} ‡}#‡}+‡}.‡}6‡}9ƒ‡}X‡}Z„‡}‡}„‡}&‡}*„‡}1‡}5„ ‡}=‡}A†€¼‚Ú†‡ƒ‡ƒ¨¨„[-‡ƒ‡ƒ!„„\ƒ‡ƒ%‡ƒ'„„[„\„[„\ÿ„@-‡ƒ‡ƒ!ƒ‡ƒ%‡ƒ'„ ‡ƒ‡ƒ„‡ƒ,‡ƒ0†€¼‚Û†‡Š‡Šªª„]‡Š ‡Š#„„^‡Š'‡Š*„„_ƒ‡Š.‡Š0„„]„^„_„]„^„_ÿ„@‡Š ‡Š#‡Š'‡Š*ƒ‡Š.‡Š0„ ‡Š‡Š„‡Š5‡Š9„‡Š@‡ŠD†€¼‚܆‡’‡’¬¬„`‡’!‡’$„„a‡’(‡’+„„b‡’/‡’2„„cƒ‡’6‡’8„„`„a„b„c„`„a„b„cÿ„@‡’!‡’$‡’(‡’+‡’/‡’2ƒ‡’6‡’8„ ‡’‡’„‡’=‡’A„‡’H‡’L„‡’S‡’W†€¼‚݆†‡™ ‡™· ·„d-‡™‡™„4„d„d„dÿ¤@O‚<1††-‡™‡™†‡™‡™†‡™*‡™6†€¼‚Þ†‡ ‡² ²ÿ¤@€„ƒéY† † >>†!†"‡‡†#‡‡ †$€¼‚߆%†&‡£ ‡£U U„e-‡£,‡£.„„eÿ¤@O‚<1†&†&-‡£,‡£.‡£‡£†'€¼‚à†(†)‡ª‡ª‰‰„f-‡ª%‡ª'„„fÿ„@dƒ1>O‚<1†)†)€½„\·z\V4à‰†+„\·z\V4à‰†,„\·z\V4à‰†-†.†.-‡ª%‡ª'†/€¼‚á†0†1‡°‡°„g-‡°%‡°'„„gÿ„@dƒ1>O‚<1†1†1-‡°%‡°'†2€¼‚â†3‡µ ‡µW Wÿ¤@ƒÝ‡µ‡µ†4€¼‚ã†5†6‡» ‡»Z Z4ÿ¤@O‚<1†6†68‡»‡»!†7€¼‚ä†8†9‡Á ‡Á‘ ‘„h‡Á‡Á„„i‡Á‡Á"„„h„i„hÿ¤@O‚<1†9†9‡Á‡Á‡Á‡Á"l‡Á‡Á†:€¼‚å†;†<‡Ç ‡Ç• •„j‡Ç‡Ç„„k‡Ç‡Ç"„„j„k„kÿ¤@O‚<1†<†<‡Ç‡Ç‡Ç‡Ç"l‡Ç‡Ç†=€¼‚æƒa†>‡Î‡Îhh„l-‡Î7‡Î9„ „l„lÿ„@O‚<1†>†>-‡Î7‡Î9†?‡Î‡Î†@‡Î%‡Î'†A€¼‚çƒY†B‡Õ‡Õkk„m-‡Õ4‡Õ6„ „m„m„mÿ„@O‚<1†B†B-‡Õ4‡Õ6†?‡Õ‡Õ†@‡Õ"‡Õ$†C€¼‚èƒX†D‡Ü‡Ünn„n-‡Ü4‡Ü6„ „n„n„nÿ„@O‚<1†D†D-‡Ü4‡Ü6†?‡Ü‡Ü†@‡Ü"‡Ü$†E€¼‚é†F†G‡á‡á˜˜„o-‡á"‡á$„„oÿ„@O‚<1†G†G-‡á"‡á$5‡á‡á!†H€¼‚ê†I†J‡ç‡çOO„p-‡ç(‡ç*„ „pÿ„@O‚<1†J†J-‡ç(‡ç*5‡ç‡ç †K€¼‚ë†L†M‡í‡íRR„q-‡í‡í!„„q ÿ„@O‚<1†M†M-‡í‡í!5‡í‡í†N€¼‚ì†O†P‡ó ‡ów w„r-‡ó)‡ó+„„rÿ¤@O‚<1†P†P-‡ó)‡ó+ƒÝ‡ó‡ó†Q€¼‚í†R†S‡ú‡ú||„s-‡úI‡úK„„sÿ„@O‚<1†S†S-‡úI‡úK†T‡ú ‡ú,ƒÝ‡ú7‡ú>†U€¼‚î†V†Wˆˆ„t-ˆ4ˆ6„„tÿ„@O‚<1†W†W-ˆ4ˆ6†Tˆˆ)†X€¼‚ï†Y†Zˆˆ……„u-ˆ1ˆ3„„uÿ„@O‚<1†Z†Z-ˆ1ˆ3ƒÝˆˆ&†[€¼‚ðp†\ˆ ˆ Y Y„v-ˆ ˆ „„v„vÿ¤@O‚<1†\†\-ˆ ˆ }ˆ ˆ †]€¼‚ñ†^†_ˆ ˆœ œ„w-ˆˆ„„w€¾„wÿ¤@O‚<1†_†_-ˆˆ5ˆˆ†`€¼‚ò†aˆˆž ž„x-ˆˆ„€¾„x„xÿ¤@-ˆˆ†bˆˆ5ˆ$ˆ)†c€¼‚ó†dˆˆ   „y-ˆˆ„€¾„y„yÿ¤@-ˆˆ†bˆˆ†e€¼‚ô†f†gˆ! ˆ!Ž¡ Ž¡€¾ÿ¤@O‚<1†g†g†bˆ!ˆ!†h€¼‚õ†i†jˆ& ˆ&Žž Žž€¾ÿ¤@O‚<1†j†j†bˆ&ˆ&†k€¼‚ö†lˆ, ˆ,Ž Ž„z-ˆ,ˆ,„3„z3„z3„zÿ¤@-ˆ,ˆ,†mˆ,ˆ,†nˆ,"ˆ,'†o€¼‚÷†p†qˆ2ˆ2]]ÿ„@O‚<1†q†q5ˆ2ˆ2†r€¼‚ø†s†tˆ8 ˆ8L L„{-ˆ8ˆ8!„I„{I„{ÿ¤@O‚<1†t†t-ˆ8ˆ8!†uˆ8ˆ8†v€¼‚ù†w†xˆB ˆBŽ¥ Ž¥„|-ˆB4ˆB6„ „|ÿ¤@O‚<1†x†x-ˆB4ˆB6†yˆBˆB†z€¼‚ú†{†|ˆG ˆG= =ÿ¤@O‚<1†|†|†}€¼‚û†~†ˆK ˆK@ @ÿ¤@O‚<1†††€€¼‚ü††‚ˆO ˆOC C4ÿ¤@O‚<1†‚†‚†ƒ€¼‚ý†„†…ˆS ˆSF F4ÿ¤@O‚<1†…†…††€¼‚þ†‡†ˆˆW ˆW^ ^„}-ˆWˆW„tÿ¤DO‚<1†ˆ†ˆ-ˆWˆW†Š€¼‚ÿ†‹†Œˆ[ ˆ[d d„~-ˆ[ˆ[„"ÿ¤DO‚<1†Œ†Œ-ˆ[ˆ[†€¼ƒ†Ž†ˆ_ ˆ_a a„-ˆ_ˆ_„"ÿ¤DO‚<1††-ˆ_ˆ_†€¼ƒ†‘ˆeˆe”†”†„€-ˆf&ˆf'„„€z„€„€„€„€€¬„€„€„€I„€ÿ„@-ˆf&ˆf'Òˆeˆe"†’ˆe/ˆe5†“€¼ƒ†”ˆoˆo”–”–„-ˆp'ˆp(„„„‚z„„‚„„‚†•ˆp-ˆp1„„„‚z„„‚„„‚€ª„‚„„„‚„I„ÿ„@-ˆp'ˆp(†•ˆp-ˆp1Òˆoˆo"†–ˆo)ˆo-†’ˆo7ˆo=†—€¼ƒ†˜†™ˆzˆz88„ƒ†™ˆzLˆzQ„„„-ˆz=ˆz?„„ƒ„„„„ÿ„@O‚<1†™†™†™ˆzLˆzQ-ˆz=ˆz?†šˆzˆz#Yˆz-ˆz3†›€¼ƒ†œ†ˆƒ ˆƒA A„…-ˆƒˆƒ„„†ƒˆƒHˆƒJ„„…„…„†„†ÿ¤@O‚<1††-ˆƒˆƒƒˆƒHˆƒJ‚4ˆƒˆƒYˆƒ:ˆƒ@†ž€¼ƒ†Ÿ† ˆŠˆŠGG„‡-ˆŠˆŠ„$ÿ„Dyƒ­OO‚<1† † -ˆŠˆŠ†¡€¼ƒ†¢†£ˆ‘ˆ‘KK„ˆ-ˆ‘ˆ‘„$ÿ„Dyƒ­OO‚<1†£†£-ˆ‘ˆ‘†¤€¼ƒ†¥†¦ˆ–ˆ–OO„‰-ˆ–ˆ–„ÿ„DO‚<1†¦†¦yƒ­O-ˆ–ˆ–†§€¼ƒƒf†¨ˆ ˆ SS„Š-ˆ ,ˆ .„ „Šÿ„@O‚<1†¨†¨-ˆ ,ˆ .Xˆ ˆ †©€¼ƒ †ªˆªˆªVV„‹-ˆªAˆªC„ „‹ÿ„@-ˆªAˆªC†«ˆª ˆª%Xˆª.ˆª1†¬€¼ƒ †­€¨ˆ±ˆ±”§”§„Œ-ˆ±9ˆ±:„„Œ€¨„Œ„Œ„Œ„Œÿ„@O‚<1€¨€¨-ˆ±9ˆ±:5ˆ±ˆ±#†®€¼ƒ †¯†°ˆ·ˆ·”­”­„-ˆ·9ˆ·:„„†°„„„„ÿ„@O‚<1†°†°-ˆ·9ˆ·:5ˆ·ˆ·#†±€¼ƒ †²†³ˆ½ˆ½”³”³„Ž-ˆ½9ˆ½:„„ކ³„ބބބŽÿ„@O‚<1†³†³-ˆ½9ˆ½:5ˆ½ˆ½#†´€¼ƒ †µ†¶ˆÃˆÃ”¹”¹„-ˆÃ9ˆÃ:„„†¶„„„„ÿ„@O‚<1†¶†¶-ˆÃ9ˆÃ:5ˆÃˆÃ#†·€¼ƒ†¸†¹ˆÊˆÊ”¿”¿„ˆÊ:ˆÊ<„„†¹„„„‘„‘ˆÊfˆÊi„„„„‘ÿ„@O‚<1†¹†¹ˆÊ:ˆÊ<ˆÊfˆÊi~ˆÊˆÊ}ˆÊ'ˆÊ(†º€¼ƒ†»†¼ˆÐˆÐ”Ŕń’-ˆÐ9ˆÐ:„„’†¼„’„’„’„’ÿ„@O‚<1†¼†¼-ˆÐ9ˆÐ:5ˆÐˆÐ#†½€¼ƒ†¾†¿ˆÖˆÖ”˔˄“-ˆÖ9ˆÖ:„„“†¿„“„“„“„“ÿ„@O‚<1†¿†¿-ˆÖ9ˆÖ:5ˆÖˆÖ#†À€¼ƒ†Á†ÂˆÜˆÜ”єф”-ˆÜ9ˆÜ:„„”†Â„”„”„”„”ÿ„@O‚<1†Â†Â-ˆÜ9ˆÜ:5ˆÜˆÜ#†Ã€¼ƒ†Ä†Åˆâˆâ”ã”ã„•-ˆâ9ˆâ:„„•€”„•„•ÿ„@O‚<1†Å†Å-ˆâ9ˆâ:5ˆâˆâ#†Æ€¼ƒ†Ç†Èˆèˆè”ݔ݄–-ˆè9ˆè:„„–†È„–„–„–„–ÿ„@O‚<1†È†È-ˆè9ˆè:5ˆèˆè#†É€¼ƒ†Ê†Ëˆîˆî”é”é„—-ˆî9ˆî:„„—†Ë„—„—„—„—ÿ„@O‚<1†Ë†Ë-ˆî9ˆî:5ˆîˆî#†Ì€¼ƒ†Í†Îˆôˆô”ï”-ˆô9ˆô:„„˜†Î„˜„˜„˜„˜ÿ„@O‚<1†Î†Î-ˆô9ˆô:5ˆôˆô#†Ï€¼ƒ†Ð†Ñˆúˆú”õ”õ„™-ˆú9ˆú:„„™†Ñ„™„š„š„šƒˆú^ˆú_„„™„™„šÿ„@O‚<1†Ñ†Ñ-ˆú9ˆú:ƒˆú^ˆú_5ˆúˆú#†Ò€¼ƒ†Ó†Ô‰‰”û”û„›-‰9‰:„„›†Ô„›„›„›„›ÿ„@O‚<1†Ô†Ô-‰9‰:5‰‰#†Õ€¼ƒ†Ö†×‰‰••„œ-‰9‰:„„œ†×„œ„œ„œ„œÿ„@O‚<1†×†×-‰9‰:5‰‰#†Ø€¼ƒ†Ù†Ú‰ ‰ ••„-‰ 9‰ :„„†Ú„„„„ÿ„@O‚<1†Ú†Ú-‰ 9‰ :5‰ ‰ #†Û€¼ƒ†Ü†Ý‰‰• • „ž-‰9‰:„„ž†Ý„ž„ž„ž„žÿ„@O‚<1†Ý†Ý-‰9‰:5‰‰#†Þ€¼ƒ†ß†à‰‰••„Ÿ-‰9‰:„„Ÿ†à„Ÿ„Ÿ„Ÿ„Ÿÿ„@O‚<1†à†à-‰9‰:5‰‰#†á€¼ƒ†â†ã‰‰••„ -‰9‰:„„ †ã„ „ „ „ ÿ„@O‚<1†ã†ã-‰9‰:5‰‰#†ä€¼ƒ†å†æ‰&‰&”הׄ¡-‰&9‰&:„„¡†æ„¡„¡„¡„¡ÿ„@O‚<1†æ†æ-‰&9‰&:5‰&‰&#†ç€¼ƒ†è‰-‰-••„¢-‰-7‰-8„„¢€¦„¢„£„¢„£ƒ‰-V‰-W„„¢„£„¢ÿ„@-‰-7‰-8ƒ‰-V‰-W}‰-‰-~‰-&‰-'†é€¼ƒ†ê†ë‰4‰4•(•(„¤-‰45‰46„„¤€¬„¤„¤€‚„¤„¤„¤„¤€†„¤„¤„¤„¤„¤ÿ„@O‚<1†ë†ë-‰45‰46}‰4‰4…î‰4#‰4$†ì€¼ƒ ‚+†í‰@‰@޳޳„¥-‰@=‰@>„„¥€Œ„¥/„¥/ÿ„@O‚<1†í†í-‰@=‰@>5‰@ ‰@%†î€¼ƒ!‚ˆï‰I‰IŽÆŽÆ„¦-‰I=‰I>„„¦€Œ„¦6„¦6ÿ„@O‚<1†ï†ï-‰I=‰I>5‰I ‰I%†ð€¼ƒ"‚Ò†ñ‰R‰RŽìŽì„§-‰R=‰R>„„§€Œ„§7„§7ÿ„@O‚<1†ñ†ñ-‰R=‰R>5‰R ‰R%†ò€¼ƒ#‚Ö†ó‰[‰[ŽÙŽÙ„¨-‰[=‰[>„„¨€Œ„¨8„¨8ÿ„@O‚<1†ó†ó-‰[=‰[>5‰[ ‰[%†ô€¼ƒ$€•†õ‰d‰d22„©-‰d=‰d>„„©€Œ„©„©ÿ„@O‚<1†õ†õ-‰d=‰d>5‰d ‰d%†ö€¼ƒ%†÷†ø‰j‰j66„ªƒ‰j?‰j@„„ªÿ„@O‚<1†ø†øƒ‰j?‰j@5‰j ‰j%†ù€¼ƒ&€†ú‰s‰s„«-‰s=‰s>„„«€Œ„«„«ÿ„@O‚<1†ú†ú-‰s=‰s>5‰s ‰s%†û€¼ƒ'‚݆ü‰|‰|ŽÿŽÿ„¬-‰|=‰|>„„¬€Œ„¬9„¬9ÿ„@O‚<1†ü†ü-‰|=‰|>5‰| ‰|%†ý€¼ƒ(o†þ‰…‰…dd„­-‰…=‰…>„„­€Œ„­„­ÿ„@O‚<1†þ†þ-‰…=‰…>5‰… ‰…%†ÿ€¼ƒ)‚䇉މŽJJ„®-‰Ž=‰Ž>„„®€Œ„®:„®:ÿ„@O‚<1‡‡-‰Ž=‰Ž>5‰Ž ‰Ž%‡€¼ƒ*‚À‡‰—‰—{{„¯-‰—=‰—>„„¯€Œ„¯4„¯4ÿ„@O‚<1‡‡-‰—=‰—>5‰— ‰—%‡€¼ƒ+€‡‰ ‰ ŽŽ„°-‰ =‰ >„„°€Œ„°„°ÿ„@O‚<1‡‡-‰ =‰ >5‰  ‰ %‡€¼ƒ,ƒ.‡‰¨‰¨ÓÓ„±-‰¨=‰¨>„„±€Œ„±<„±<ÿ„@O‚<1‡‡-‰¨=‰¨>5‰¨ ‰¨%‡€¼ƒ-„@‡‰°‰°ºº„²-‰°=‰°>„„²€Œ„²u„²uÿ„@O‚<1‡‡-‰°=‰°>5‰° ‰°%‡ €¼ƒ.€‘€³‰¹‰¹ë넳-‰¹$‰¹%„„³ÿ„@O‚<1€³€³-‰¹$‰¹%5‰¹‰¹"‡ €¼ƒ/„}‡ ‰Â‰Â¢¢„´-‰Â7‰Â8„„´€Œ„´k„´kÿ„@O‚<1‡ ‡ -‰Â7‰Â85‰Â‰Â"‡ €¼ƒ0‚LJ ‰Ê‰Êüü„µ-‰Ê=‰Ê>„„µ€Œ„µ5„µ5ÿ„@O‚<1‡ ‡ -‰Ê=‰Ê>5‰Ê!‰Ê&‡€¼ƒ1‡‡‰Ð‰Ð99„¶ƒ ‰Ð6‰Ð:„„·‚‰Ð;‰ÐA„€Á„¶„·„¶„·ÿ¤@O‚<1‡‡ƒ ‰Ð6‰Ð:‚‰Ð;‰ÐA‡‰Ð‰Ð(‡€¼€€‡ŠŠ!€€‡  …ì%¸Ü2m;ƒ2‡ŠŠ$’³’³$„¸-Š.Š0„=„¸44=„¸ÿ„@-Š.Š0nŠ'Š-ÒŠ6Š;†’ŠJŠP‡€Âƒ3‡Š Š $’¸’¸$„¹-Š .Š 0„=„¹44=„¹ÿ„@-Š .Š 0ºŠ 'Š -ÒŠ 6Š ;†’Š JŠ PnŠ _Š e‡€Âƒ4‡Š)Š)’½’½„º-Š))Š)+„€Ã„º4444€Ã„ºÿ¤@-Š))Š)+nŠ)"Š)(‡Š)2Š)8‡Š)GŠ)N‡Š)]Š)c‡Š)rŠ)y‡€Âƒ5‡ Š2Š2’Æ’Æ„»-Š2)Š2+„€Ã„»4444€Ã„»ÿ¤@-Š2)Š2+ºŠ2"Š2(‡Š22Š28‡Š2GŠ2N‡Š2]Š2c‡Š2rŠ2ynŠ2€ˆŠ2€Ž‡!€Âƒ6‡"Š=Š=’Í’Í„¼-Š=)Š=+„€Ä„¼444444€Ä„¼ÿ¤@-Š=)Š=+nŠ="Š=(‡Š=3Š=9‡Š=HŠ=O‡Š=^Š=d‡Š=sŠ=z‡#Š=€‰Š=€‡$Š=€žŠ=€¥‡%€Âƒ7‡&ŠHŠH’ْل½-ŠH)ŠH+„€Ä„½444444€Ä„½ÿ¤@-ŠH)ŠH+ºŠH"ŠH(‡ŠH3ŠH9‡ŠHHŠHO‡ŠH^ŠHd‡ŠHsŠHz‡#ŠH€‰ŠH€‡$ŠH€žŠH€¥nŠH€´ŠH€º‡'€Âƒ8‡(ŠUŠU’â’ℾ-ŠU)ŠU+„€Å„¾44444444€Å„¾ÿ¤@-ŠU)ŠU+ nŠU"ŠU(‡ŠU4ŠU:‡ŠUIŠUP‡ŠU_ŠUe‡ŠUtŠU{‡#ŠU€ŠŠU€‡$ŠU€ŸŠU€¦‡)ŠU€µŠU€»‡*ŠU€ÊŠU€Ñ‡+€Âƒ9‡,ŠbŠb’ñ’ñ„¿-Šb)Šb+„€Å„¿44444444€Å„¿ÿ¤@-Šb)Šb+ ºŠb"Šb(‡Šb4Šb:‡ŠbIŠbP‡Šb_Šbe‡ŠbtŠb{‡#Šb€ŠŠb€‡$Šb€ŸŠb€¦‡)Šb€µŠb€»‡*Šb€ÊŠb€ÑnŠb€àŠb€æ‡-€Âƒ:‡.ŠiŠi%’ü’ü%44ÿ„@nŠi(Ši.ÒŠi9Ši>†’ŠiMŠiS‡/€Âƒ;‡0ŠmŠm’c’cIÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠm$Šm)†–Šm7Šm;‡2ŠmIŠmM‡3€Âƒ<‡4ŠqŠq’m’mIÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠq#Šq(†–Šq6Šq:‡2ŠqHŠqL‡5€Âƒ=‡6ŠuŠu’n’n444I4ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠu!Šu&†–Šu4Šu8‡2ŠuFŠuJ‡7€Âƒ>‡8ŠyŠy’d’dIÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠy"Šy'†–Šy5Šy9‡2ŠyGŠyK‡9€Âƒ?‡:Š}Š}’e’e:::I:ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ}"Š}'†–Š}5Š}9‡2Š}GŠ}K‡;€Âƒ@‡<ŠŠ’f’f999I9ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ"Š'†–Š5Š9‡2ŠGŠK‡=€ÂƒA‡>Š…Š…’g’g<<<I<ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ…Š…$†–Š…2Š…6‡2Š…DŠ…H‡?€ÂƒB‡@ЉЉ’h’huuuIuÿ¤@€„ƒéY‡1‡1„´„´†!ÒЉЉ$†–Љ2Љ6‡2ЉDЉH‡A€ÂƒC‡BŠŠ’i’i777I7ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ"Š'†–Š5Š9‡2ŠGŠK‡C€ÂƒD‡DББ’j’j888I8ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ‘"Š‘'†–Š‘5Š‘9‡2Š‘GŠ‘K‡E€ÂƒE‡FЕЕ’k’k666I6ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ•"Š•'†–Š•5Š•9‡2Š•GŠ•K‡G€ÂƒF‡HЙЙ’l’l///I/ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ™"Š™'†–Š™5Š™9‡2Š™GŠ™K‡I€ÂƒG‡JŠŠ’q’q55I5ÿ¤@€„ƒéY‡1‡1„´„´†!ÒŠ"Š'‡2ŠHŠL‡K€ÂƒH‡LСС’o’o„À-Š¡%Š¡'„„À„À„À„À„À„ÀI„Àÿ¤@€„ƒéY‡1‡1„´„´†!-Š¡%Š¡'ƒQŠ¡!Š¡$ƒ7Š¡*Š¡-ÒŠ¡AŠ¡F‡2Š¡NŠ¡R‡M€ÂƒI‡NХХ ’p’p „Á†•Š¥*Š¥/„„Â-Š¥7Š¥9„„Á„„Á„„„Á„ÂI„Âÿ¤@€„ƒéY‡1‡1„´„´†!†•Š¥*Š¥/-Š¥7Š¥9ƒOŠ¥%Š¥)ƒ7Š¥2Š¥5ÒŠ¥LŠ¥Q†–Š¥YŠ¥]‡2Š¥lŠ¥p‡O€ÂƒJ‡PЩЩ”k”k„Ã-ЩЩ!„„ÄÃÿ¤@€„ƒéY‡1‡1„´„´†!-ЩЩ!}ЩЩ‡Q€ÂƒK‡RŠ­Š­”l”l„Ä-Š­ Š­"„„Ä„Äÿ¤@€„ƒéY‡1‡1„´„´†!-Š­ Š­"}Š­Š­‡S€ÂƒL‡Tбб”m”m„Å-б б"„„Å„Åÿ¤@€„ƒéY‡1‡1„´„´†!-б б"}бб‡U€ÂƒM‡Vее”n”n„Æ-е е"„„Æ„Æÿ¤@€„ƒéY‡1‡1„´„´†!-е е"}ее‡W€ÂƒN‡Xйй”o”o„Çй!й$„„Èй1й4„„DŽDŽÈÿ¤@€„ƒéY‡1‡1„´„´†!й!й$й1й4~йй }й(й)‡Y€ÂƒO‡Zнн”p”p„É-н#н%„„É„Éÿ¤@€„ƒéY‡1‡1„´„´†!-н#н%}н!н"‡[€ÂƒP‡\ŠÁŠÁ”q”q„Ê-ŠÁŠÁ!„„Ê„Êÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÁŠÁ!}ŠÁŠÁ‡]€ÂƒQ‡^ŠÅŠÅ”r”r„Ë-ŠÅ!ŠÅ#„„Ë„Ëÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÅ!ŠÅ#}ŠÅŠÅ ‡_€ÂƒR‡`ŠÉŠÉ”s”s„Ì-ŠÉ$ŠÉ&„„Ì„Ìÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÉ$ŠÉ&}ŠÉ"ŠÉ#‡a€ÂƒS‡bŠÍŠÍ”t”t„Í-ŠÍ!ŠÍ#„„Í„Íÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÍ!ŠÍ#}ŠÍŠÍ ‡c€ÂƒT‡dŠÑŠÑ”u”u„Î-ŠÑŠÑ „„Îÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÑŠÑ ‡e€ÂƒU‡fŠÕŠÕ”v”v„Ï-ŠÕŠÕ!„„Ï„Ïÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÕŠÕ!}ŠÕŠÕ‡g€ÂƒV‡hŠÙŠÙ”w”w„Ð-ŠÙ!ŠÙ#„„ЄÐÿ¤@€„ƒéY‡1‡1„´„´†!-ŠÙ!ŠÙ#}ŠÙŠÙ ‡i€ÂƒW‡jŠÝŠÝ”x”x„ÑŠÝŠÝ!„„ÒŠÝ%ŠÝ(„„Ñ„Òÿ¤@€„ƒéY‡1‡1„´„´†!ŠÝŠÝ!ŠÝ%ŠÝ(‡k€ÂƒX‡lŠáŠá”y”y„Ó-ŠáŠá!„„Ó„Óÿ¤@€„ƒéY‡1‡1„´„´†!-ŠáŠá!}ŠáŠá‡m€ÂƒY‡nŠåŠå”z”z„Ô-Šå Šå"„„Ô„Ôÿ¤@€„ƒéY‡1‡1„´„´†!-Šå Šå"}ŠåŠå‡o€ÂƒZ‡pŠéŠé”{”{„Õ-ŠéŠé!„„Õ„Õÿ¤@€„ƒéY‡1‡1„´„´†!-ŠéŠé!}ŠéŠé‡q€Âƒ[‡rŠíŠí”|”|„Ö-Ší Ší"„„Ö„Öÿ¤@€„ƒéY‡1‡1„´„´†!-Ší Ší"}ŠíŠí‡s€Âƒ\‡tŠñŠñ”}”}„×-ŠñŠñ!„„ׄ×ÿ¤@€„ƒéY‡1‡1„´„´†!-ŠñŠñ!}ŠñŠñ‡u€Âƒ]‡vŠõŠõ”~”~„Ø-Šõ Šõ"„„Ø„Øÿ¤@€„ƒéY‡1‡1„´„´†!-Šõ Šõ"}ŠõŠõ‡w€Âƒ^‡xŠùŠù””„Ù-ŠùŠù!„„ÚƒŠù'Šù)„„Ù„Ú„Ùÿ¤@€„ƒéY‡1‡1„´„´†!-ŠùŠù!ƒŠù'Šù)}ŠùŠù~Šù%Šù&‡y€Âƒ_‡zŠýŠý’ˆ’ˆ//ÿ¤@€„ƒéY‡1‡1„´„´†!}ŠýŠý…îŠý$Šý%‡{€Âƒ`‡|‹‹’‹’‹66ÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹&‹'‡}€Âƒa‡~‹‹’Ž’Ž77ÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹&‹'‡€Âƒb‡€‹ ‹ ’‘’‘88ÿ¤@€„ƒéY‡1‡1„´„´†!}‹ ‹ …î‹ (‹ )‡€Âƒc‡‚‹ ‹ ’”’”ÿ¤@€„ƒéY‡1‡1„´„´†!}‹ ‹ …î‹ &‹ '‡ƒ€Âƒd‡„‹‹’—’—99ÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹(‹)‡…€Âƒe‡†‹‹’š’šÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹&‹'‡‡€Âƒf‡ˆ‹‹’’::ÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹(‹)‡‰€Âƒg‡Š‹‹’ ’ <<ÿ¤@€„ƒéY‡1‡1„´„´†!}‹‹…î‹+‹,‡‹€Âƒh‡Œ‹!‹!’£’£uuÿ¤@€„ƒéY‡1‡1„´„´†!}‹!‹!…î‹!-‹!.‡€Âƒi‡Ž‹%‹%’¦’¦44ÿ¤@€„ƒéY‡1‡1„´„´†!}‹%‹%…î‹%)‹%*‡€Âƒj‡‹)‹)’©’©ÿ¤@€„ƒéY‡1‡1„´„´†!}‹)‹)…î‹)'‹)(‡‘€Âƒk‡’‹-‹-’¬’¬kkÿ¤@€„ƒéY‡1‡1„´„´†!}‹-‹-…î‹-*‹-+‡“€Âƒl‡”‹1‹1’¯’¯„Û-‹1!‹1#„„Û„Û„Û„Û„Û„Ûÿ¤@€„ƒéY‡1‡1„´„´†!-‹1!‹1#ƒQ‹1‹1 ƒT‹1&‹1)5‹1>‹1C‡•‹1I‹1Q‡–€Â€‡—‹5‹5€‡˜  …ìá‚‚Üàmqƒm‡™‡š‹<‹< kk „Ü-‹‹B‹Bnn„Ý-‹B!‹B#„„Ý„Ýÿ„@O‚<1†>†>-‹B!‹B#‡œ€Æƒo‡F‹H‹Hqq„Þ-‹H ‹H"„„Þ„Þÿ„@O‚<1FF-‹H ‹H"‡ž€Æƒpƒf†¨‹N‹Ntt„ß-‹N‹N „„ßÿ„@O‚<1†¨†¨-‹N‹N ‡Ÿ€Æ€‚‡ ‹Q‹Q€‚‡¡  …ì+ ƒƒàöqƒq€ˆ‹V‹V  „à-‹V5‹V6„„à€ˆ„à„à„à„àÿ„@dƒ1>-‹V5‹V65‹V ‹V%‡¢€Çƒr€„‹]‹]„á‹]=‹]?„„á„ „á„â„ã„ã„â„â‹]D‹]F„„á„ „á„â„ã„ã„ã‹]r‹]t„„á„â„á„â„ãÿ„@dƒ1>‹]=‹]?‹]D‹]F‹]r‹]t}‹]‹] ~‹](‹])‡£€Çƒsz‹c‹cxx„ä‹c=‹c?„„ä„åz„ä„儿„æ„å„å‹cD‹cF„„ä„åz„ä„儿„æ„æ‹cr‹ct„„ä„å„ä„儿ÿ„@‹c=‹c?‹cD‹cF‹cr‹ct}‹c‹c ~‹c(‹c)‡¤€Çƒt€‚‹j‹j««„ç‹j=‹j?„„ç„耂„ç„è„é„é„è„è‹jD‹jF„„ç„耂„ç„è„é„é„é‹jr‹jt„„ç„è„ç„è„éÿ„@dƒ1>‹j=‹j?‹jD‹jF‹jr‹jt}‹j‹j ~‹j(‹j)‡¥€Çƒu‚+†í‹t‹tÁÁ„ê-‹tA‹tB„„ꀌ„ê/„ê/ÿ„@dƒ1>O‚<1†í†í-‹tA‹tB5‹t$‹t)‡¦€Çƒv‚ˆï‹~‹~ÔÔ„ë-‹~A‹~B„„뀌„ë6„ë6ÿ„@dƒ1>O‚<1†ï†ï-‹~A‹~B5‹~$‹~)‡§€Çƒw‚Ò†ñ‹ˆ‹ˆ‘‘„ì-‹ˆA‹ˆB„„쀌„ì7„ì7ÿ„@dƒ1>O‚<1†ñ†ñ-‹ˆA‹ˆB5‹ˆ$‹ˆ)‡¨€Çƒx‚Ö†ó‹’‹’çç„í-‹’A‹’B„„퀌„í8„í8ÿ„@dƒ1>O‚<1†ó†ó-‹’A‹’B5‹’$‹’)‡©€Çƒy€•†õ‹œ‹œ‘J‘J„î-‹œA‹œB„„„î„îÿ„@dƒ1>O‚<1†õ†õ-‹œA‹œB5‹œ$‹œ)‡ª€Çƒz€†ú‹¦‹¦‘7‘7„ï-‹¦A‹¦B„„„ï„ïÿ„@dƒ1>O‚<1†ú†ú-‹¦A‹¦B5‹¦$‹¦)‡«€Çƒ{‚݆ü‹°‹°‘$‘$„ð-‹°A‹°B„„ð€Œ„ð9„ð9ÿ„@dƒ1>O‚<1†ü†ü-‹°A‹°B5‹°$‹°)‡¬€Çƒ|o†þ‹º‹º‘a‘a„ñ-‹ºA‹ºB„„ñ€Œ„ñ„ñÿ„@dƒ1>O‚<1†þ†þ-‹ºA‹ºB5‹º$‹º)‡­€Çƒ}‚䇋ċđN‘N„ò-‹ÄA‹ÄB„„ò€Œ„ò:„ò:ÿ„@dƒ1>O‚<1‡‡-‹ÄA‹ÄB5‹Ä$‹Ä)‡®€Çƒ~ƒ.‡‹Í‹Í ‘‡‘‡ „ó-‹ÍA‹ÍB„„󀌄ó<„ó<ÿ„@dƒ1>O‚<1‡‡-‹ÍA‹ÍB5‹Í$‹Í)‡¯€Çƒ„@‡‹Ö‹Ö!‘t‘t!„ô-‹ÖA‹ÖB„„ô€Œ„ôu„ôuÿ„@dƒ1>O‚<1‡‡-‹ÖA‹ÖB5‹Ö$‹Ö)‡°€Çƒ€‚LJ ‹à‹àúú„õ-‹àA‹àB„„õ€Œ„õ5„õ5ÿ„@dƒ1>O‚<1‡ ‡ -‹àA‹àB5‹à%‹à*‡±€Ç€ƒ‡²yY Y€ƒ€…ƒûZ‡³  5„…öûˆ€„‡´y\\€„‡µ  ‡²ç……öûˆƒ‡¶y``{\\„ö-y`)`+„„öÿ¤@-y`)`+‡·€Èƒ‚‡¸ybb{``„÷-yb(b*„„÷ÿ¤@-yb(b*‡¹€Èƒƒ‡ºydd{dd„ø-yd+d-„„øÿ¤@-yd+d-5ydd!‡»€Èƒ„‡¼yff{hh„ù-yf+f-„„ùÿ¤@-yf+f-5yff!‡½€Èƒ…‡¾yhh{€€„ú-yh,h.„„úÿ¤@-yh,h.€’yhh!‡¿€Èƒ†‡Àyjj {<<  ÿ¤@5yj#j(‡Á€Èƒ‡‡Âyll!{II! ÿ¤@€’yl$l(‡Ã€È€…K K€…€¦„\·z\V4à‰„’„\·z\V4à‰„“ƒˆ„˜o,ƒ‰„o,oo„™oooƒˆƒ‰ooooooƒŠ„˜o,ƒ‹„o,oo„™oooƒŠƒ‹ooooooƒŒ„˜o,ƒ„o,oo„™oooƒŒƒooooooƒŽ„˜o,ƒ„o,oo„™oooƒŽƒooooooo„oooo”o„•#up‡Ä  ††ûû€†ƒ1‚V ‚V%€†€¦„\·z\V4à‰„’„\·z\V4à‰„“ƒ„˜o,ƒ‘„o,oo„™oooƒƒ‘oooooo@o€€o€Ào„•#uƒ1>p‡Å  ‡‡ûû’’€‡ml l€‡€¦„\·z\V4à‰„’„\·z\V4à‰„“ƒ’„˜o,ƒ“„o,oo„™oooƒ’ƒ“ooooooƒ”„˜o,ƒ•„o,oo„™oooƒ”ƒ•ooooooƒ–„˜o,ƒ—„o,oo„™oooƒ–ƒ—ooooooƒ˜„˜o,ƒ™„o,oo„™oooƒ˜ƒ™ooooooo„oooo”o„•#ump‡Æ  ˆˆûûšš€ˆƒ‰€¾ €¾€ˆ€¦„\·z\V4à‰„’„\·z\V4à‰„“ƒš„˜o,ƒ›„o,oo„™oooƒšƒ›ooooooÿ@ooÿ@o„•#uƒ‰Cp‡Ç  ‰‰ûûœœ€‰ƒ‹€È €È.€‰€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ‹Dp‡È  ŠŠûûœœ€Š„…g…g#€ŠvƒžLm„€²„€²„F ‡É  ‹‹ûûœœ‡Ê…g'…g-‡Ë…g0…g3‡Ì…g6…g9€‹ƒ‘€î €î€‹€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ‘Fp‡Í  ŒŒûûœœ€Œ‡Î‚´ ‚´€Œ‡Ï  =8‘ûuœ.ƒœ‡Ð‚»‚»"‡š‡š"„û-‚»A‚»C„ „û„ûÿ„@-‚»A‚»C†?‚»%‚»'†@‚».‚»0‡Ñ€Éƒ‡Ò‚Á‚Á$‡›‡›$„ü-‚ÁC‚ÁE„ „ü„üÿ„@-‚ÁC‚ÁE†?‚Á'‚Á)†@‚Á0‚Á2‡Ó€Éƒž‡Ô‚È‚È.‡œ‡œ.„ý-‚Èz‚È|„ „ý„ýÿ„@-‚Èz‚È|‡Õ‚È1‚È5†?‚È^‚È`†@‚Èg‚Èi‡Ö€ÉƒŸ‡×‚΂Î$‡‡$„þ-‚ÎB‚ÎD„ „þ„þÿ„@-‚ÎB‚ÎD†?‚Î'‚Î)†@‚Î0‚Î2‡Ø€Éƒ ‡Ù‚Ö‚Ö0‡ž‡ž0„ÿ-‚Ös‚Öu„ „ÿ„ÿÿ„@-‚Ös‚Öu‡Õ‚Ö3‚Ö7†?‚ÖX‚ÖZ†@‚Öa‚Öc‡Ú€Éƒ¡‡Û‚Ü‚Ü"‡Ÿ‡Ÿ"…-‚ÜA‚ÜC„ ……ÿ„@-‚ÜA‚ÜC†?‚Ü%‚Ü'†@‚Ü.‚Ü0‡Ü€Éƒ¢‡Ý‚â‚â%‡ ‡ %…-‚âD‚âF„ ……ÿ„@-‚âD‚âF†?‚â(‚â*†@‚â1‚â3‡Þ€Éƒ£‡ß‚è‚è%‡¡‡¡%…-‚èD‚èF„ ……ÿ„@-‚èD‚èF†?‚è(‚è*†@‚è1‚è3‡à€Éƒ¤‡á‚î‚î(‡¢‡¢(…-‚îG‚îI„ ……ÿ„@-‚îG‚îI†?‚î+‚î-†@‚î4‚î6‡â€Éƒ¥‡ã‚ô‚ô!‡£‡£!…-‚ô>‚ô@„ ………ÿ„@-‚ô>‚ô@†?‚ô$‚ô&†@‚ô-‚ô/‡ä€Éƒ¦‡å‚ú‚ú!‡¤‡¤!…-‚ú>‚ú@„ ………ÿ„@-‚ú>‚ú@†?‚ú$‚ú&†@‚ú-‚ú/‡æ€Éƒ§‡çƒƒ#‡¦‡¦#…-ƒBƒD„……ÿ„@-ƒBƒD†?ƒ&ƒ(†@ƒ/ƒ1‡è€Éƒ¨‡éƒ ƒ ‡§‡§…-ƒ 5ƒ 7„…ÿ„@-ƒ 5ƒ 7Xƒ "ƒ %‡ê€Éƒ©‡ëƒ ƒ#‡ª ‡ª#ÿ¤@‡ì€Éƒª‡íƒ ƒ%‡« ‡«%ÿ¤@‡î€Éƒ«‡ïƒ ƒ‡© ‡©ÿ¤@‡ð€Éƒ¬‡ñƒ ƒˆ> ˆ>…-ƒ ƒ"„ €Ê…ÿ¤D-ƒ ƒ"‡ó€Éƒ­‡ôƒƒ1ˆ? ˆ?(… -ƒ2ƒ4„ €Ê… ÿ¤D-ƒ2ƒ4‡õ€Éƒ®‡öƒ!ƒ!.‡ç‡ç.… -ƒ!/ƒ!1„ €Ë… ÿ„D-ƒ!/ƒ!1‡ø€Éƒ¯‡ùƒ'ƒ'5‡è‡è5… -ƒ'6ƒ'8„ €Ë… ÿ„@-ƒ'6ƒ'8†«ƒ'<ƒ'A‡ú€Éƒ°‡ûƒ-ƒ-‡­‡­… -ƒ-%ƒ-'„… ÿ„@-ƒ-%ƒ-'Xƒ-!ƒ-$‡ü€Éƒ±‡ýƒ4ƒ4%‡®‡®%… -ƒ4:ƒ4<„… ÿ„@-ƒ4:ƒ4<†«ƒ4(ƒ4-Xƒ46ƒ49‡þ€Éƒ²‡ÿƒ:ƒ:*‡¯‡¯*…-ƒ:dƒ:f„…ÿ„@-ƒ:dƒ:f€¼ƒ:-ƒ:5Xƒ:`ƒ:cˆ€Éƒ³ˆƒ?ƒ?ˆDˆD…-ƒ?Eƒ?G„…„׃?8ƒ?=„………ÿ„@-ƒ?Eƒ?G„׃?8ƒ?=5ƒ?!ƒ?&ˆ€Éƒ´ˆƒDƒDˆHˆH…„׃D7ƒD<„……-ƒDDƒDF„……ÿ„@„׃D7ƒD<-ƒDDƒDF†÷ƒD!ƒD%ˆ€ÉƒµˆƒIƒI#ˆOˆO#…ˆƒI5ƒI7€Ì…ÿ„@ˆƒI5ƒI7ˆ€Éƒ¶ˆƒNƒN%ˆPˆP%…ˆƒN;ƒN=4€Í…ÿ„@ˆƒN;ƒN=ˆ €Éƒ·ˆ ƒSƒS%ˆQˆQ%…ˆƒS;ƒS=k€Î…ÿ„@ˆƒS;ƒS=ˆ €Éƒ¸ˆ ƒXƒX#ˆRˆR#…ˆƒX1ƒX3€Ï…ÿ„@ˆƒX1ƒX3ˆ €Éƒ¹ˆƒ]ƒ]#ˆUˆU#…ˆƒ]5ƒ]7€Ð…ÿ„@ˆƒ]5ƒ]7ˆ€Éƒºˆƒbƒb#ˆSˆS#…ˆƒb5ƒb77€Ñ…ÿ„@ˆƒb5ƒb7ˆ€Éƒ»ˆƒgƒg#ˆTˆT#…ˆƒg5ƒg76€Ò…ÿ„@ˆƒg5ƒg7ˆ€Éƒ¼ˆƒl ƒlˆ  ˆ ÿ¤@ˆƒlƒlˆ€Éƒ½ˆƒq ƒqˆ ˆ9ÿ¤@ˆƒqƒqˆ€Éƒ¾ˆƒv ƒvˆ¯ ˆ¯ÿ¤@ˆƒvƒvˆ€Éƒ¿ˆƒ{ ƒ{ˆ¾ ˆ¾:ÿ¤@ˆƒ{ƒ{ˆ€ÉƒÀˆƒ ƒˆý ˆý…-ƒ)ƒ+„…ÿ¤@€„ƒéY‡1‡1„´„´†!-ƒ)ƒ+ˆ€ÉƒÁˆƒƒ ƒƒˆþ ˆþ…-ƒƒ(ƒƒ*„…ÿ¤@€„ƒéY‡1‡1„´„´†!-ƒƒ(ƒƒ*ˆ €ÉƒÂˆ!ƒ‡ ƒ‡‰e ‰e…ƒ‡ ƒ‡#„…ƒ‡)ƒ‡,„…ƒƒ‡0ƒ‡2„………ÿ¤@€„ƒéYˆ"ˆ"„´„´†!ƒ‡ ƒ‡#ƒ‡)ƒ‡,ƒƒ‡0ƒ‡2}ƒ‡ƒ‡~ƒ‡'ƒ‡(ˆ#€ÉƒÃˆ$ƒ‹ ƒ‹"‰Œ ‰Œ"…ƒ‹'ƒ‹*„… ƒ‹0ƒ‹3„…!ƒƒ‹7ƒ‹9„…… …!ÿ¤@€„ƒéYˆ"ˆ"„´„´†!ƒ‹'ƒ‹*ƒ‹0ƒ‹3ƒƒ‹7ƒ‹9}ƒ‹%ƒ‹&~ƒ‹.ƒ‹/ˆ%€ÉƒÄˆ&ƒ ƒ‰² ‰²…"ƒ ƒ#„…#ƒ)ƒ,„…$ƒƒ0ƒ2„…"…#…$ÿ¤@€„ƒéYˆ"ˆ"„´„´†!ƒ ƒ#ƒ)ƒ,ƒƒ0ƒ2}ƒƒ~ƒ'ƒ(ˆ'€ÉƒÅˆ(ƒ“ ƒ“"‰× ‰×"…%ƒ“'ƒ“*„…&ƒ“0ƒ“3„…'ƒƒ“7ƒ“9„…%…&…'ÿ¤@€„ƒéYˆ"ˆ"„´„´†!ƒ“'ƒ“*ƒ“0ƒ“3ƒƒ“7ƒ“9}ƒ“%ƒ“&~ƒ“.ƒ“/ˆ)€ÉƒÆˆ*ƒ— ƒ—‰8 ‰8…(-ƒ—#ƒ—%„…(…(ÿ¤@€„ƒéYˆ"ˆ"„´„´†!-ƒ—#ƒ—%}ƒ—!ƒ—"~ƒ—)ƒ—*ˆ+€ÉƒÇˆ,ƒšƒš‰‰…)-ƒš!ƒš"„…)€ª…)…)ÿ„D-ƒš!ƒš"ˆ-€ÉƒÈˆ.ƒƒ‰‰…*-ƒ ƒ!„…*€¬…*…*ÿ„D-ƒ ƒ!ˆ/€ÉƒÉˆ0ƒ£ƒ£‰:‰:…+-ƒ£!ƒ£"„…+ˆ0…+…+…+…+ÿ„@-ƒ£!ƒ£"}ƒ£(ƒ£)~ƒ£0ƒ£1ˆ1€É€ˆ2ƒ¦ƒ¦*€ˆ3  ‡ÎŽŽ,,Êσʈ4ƒ©ƒ©(‚W‚W(ÿ¤@€„ƒéYˆ5ˆ5„´„´†!€ÓƒËˆ6ƒ¬ƒ¬%‚Y‚Y%ÿ¤@€„ƒéYˆ5ˆ5„´„´†!€ÓƒÌˆ7ƒ¯ƒ¯,‚T‚T,ÿ¤@€„ƒéYˆ5ˆ5„´„´†!€ÓƒÍˆ8ƒ²ƒ²&‚U‚U&ÿ¤@€„ƒéYˆ5ˆ5„´„´†!€ÓƒÎˆ9ƒµƒµ,‚[‚[,ÿ¤@€„ƒéYˆ5ˆ5„´„´†!€Ó€Žˆ:ƒ»ƒ»!€Žˆ;  ‡Î±,.ÏՃψ<ƒ¿ƒ¿‚b‚bÿ¤@€„ƒéYˆ=ˆ=„³„³†!†?ƒ¿ƒ¿†@ƒ¿#ƒ¿%ˆ>€ÔƒÐˆ?ƒÅƒÅ‚c‚cÿ¤@†?ƒÅƒÅ†@ƒÅ$ƒÅ&ˆ@€ÔƒÑˆAˆBƒÊƒÊ‚e‚eÿ¤@O‚<1ˆBˆB€„ƒéYˆCˆC„³„³†!†?ƒÊƒÊ†@ƒÊ$ƒÊ&ˆD€ÔƒÒˆEƒÐƒÐ‚f‚fÿ¤@†?ƒÐƒÐ†@ƒÐ$ƒÐ&ˆF€ÔƒÓˆGƒÖƒÖ‚n‚n…,-ƒÖ$ƒÖ&„…,…,ÿ„@dƒ1>-ƒÖ$ƒÖ&XƒÖ ƒÖ#ˆH€ÔƒÔˆIƒÜƒÜ‚t‚t…--ƒÜ%ƒÜ'„ …-b…-ÿ„@dƒ1>-ƒÜ%ƒÜ'XƒÜ!ƒÜ$ˆJ€Ô€ˆKƒáƒá!€ˆL  ‡Î? .=ÕèƒÕˆMƒåƒå‚³‚³….-ƒåƒå„ ….ÿ¤@€„ƒéY‡1‡1„´„´†!-ƒåƒånƒå#ƒå)ˆN€ÕƒÖˆOƒéƒé ‚»‚» …/-ƒé!ƒé#„ …/ÿ„@€„ƒéY‡1‡1„´„´†!-ƒé!ƒé#nƒé'ƒé-ˆP€Õƒ×ˆQƒíƒí‚Á‚Á…0-ƒí ƒí"„ ÿ¤@€„ƒéY‡1‡1„´„´†!-ƒí ƒí"nƒí&ƒí,ˆR€ÕƒØˆSƒñƒñ#‚Ç‚Ç#…1-ƒñ$ƒñ&„ ÿ„@€„ƒéY‡1‡1„´„´†!-ƒñ$ƒñ&nƒñ*ƒñ0ˆT€ÕƒÙ…fƒõƒõ ‚Û‚Û 5ÿ„@nƒõ#ƒõ)mƒõ4ƒõ9ˆU€ÕƒÚˆVƒúƒú%‚Ý‚Ý%…2-ƒú8ƒú:„…2ÿ„@€„ƒéY‡1‡1„´„´†!-ƒú8ƒú:ˆW€ÕƒÛˆXƒþƒþ"‚Ù‚Ù"/kÿ„@€„ƒéY‡1‡1„´„´†!ˆYƒþ%ƒþ(ˆZƒþ0ƒþ6ˆ[ƒþ>ƒþBˆ\ƒþJƒþTƒZƒþ]ƒþbˆ]€ÕƒÜQ„„‚˂˅3-„„„…3ÿ¤@€„ƒéY‡1‡1„´„´†!-„„‚4„=„Eˆ^€ÕƒÝˆ_„„‚ЂÐÿ¤@€„ƒéY‡1‡1„´„´†!ˆ`€ÕƒÞˆa„ „ ‚Ò‚Òÿ¤@€„ƒéY‡1‡1„´„´†!ˆb€Õƒßˆc„„‚Ô‚Ô…4-„*„,„…4…4ÿ¤@€„ƒéY‡1‡1„´„´†!-„*„,ˆd€Õƒàˆe„„‚ã‚ã…5-„-„/„=…5…5ÿ„@-„-„/n„&„,m„5„:ˆf€Õƒáˆg„„!‚ò‚ò!…6-„.„0„€Ã…6…6ÿ„@-„.„0n„'„-ˆh„7„=ˆi„E„Kˆj€Õƒâˆk„„!ƒƒ!…7-„-„/„€Ä…7…7ÿ„@-„-„/n„&„,ˆh„6„<ˆi„D„Jˆl„R„Xˆm€Õƒãˆn„„!ƒ"ƒ"!…8-„-„/„€Å…8…8ÿ„@-„-„/n„&„,ˆh„7„=ˆi„E„Kˆl„S„Yˆo„a„gˆp€Õƒäˆq„"„"‚ä‚ä…9-„"+„"-„=…9…9ÿ„@-„"+„"-º„"$„"*m„"3„"85„"@„"Eˆr€Õƒåˆs„&„&!‚ó‚ó!…:-„&,„&.„€Ã…:…:ÿ„@-„&,„&.º„&%„&+ˆh„&5„&;ˆi„&C„&I5„&Q„&Vˆt€Õƒæˆu„*„*!ƒƒ!…;-„*+„*-„€Ä…;…;ÿ„@-„*+„*-º„*$„**ˆh„*5„*;ˆi„*C„*Iˆl„*Q„*W5„*_„*dˆv€Õƒçˆw„.„.!ƒ#ƒ#!…<-„.+„.-„€Å…<…<ÿ„@-„.+„.-º„.$„.*ˆh„.6„.<ˆi„.D„.Jˆl„.R„.Xˆo„.`„.f5„.n„.sˆx€Õ€ˆy„1„1€ˆz  ‡Î!‘‘=uèƒèˆ{„4„4%ƒQƒQ%…=-„4=„4?„…=ÿ¤@€„ƒéYˆ|ˆ|„´„´†!-„4=„4?‚H„4(„4-ˆ}€Öƒéˆ~„8„8)ƒKƒK)…>-„8F„8H„…>…>ÿ¤@€„ƒéYˆ|ˆ|„´„´†!-„8F„8H}„8,„8-~„84„85ˆ€Öƒêˆ€„<„<$‡#‡#$…?-„<-„…›@„…£„…›D…›F„…¤„…›J…›L„…¥„…›P…›R„€Ž… …¡…¢…£…¤…¥… …¡…¢…£…¤…¥„„ „…¦-…{…{„…§ƒ…{…{„…¨„…¤>…¤@„…©„…¤D…¤F„…ª„…¤J…¤L„€Ž…¦…§…¨…©…ª…¦…§…¨…©…ª„„ „…«-…{…{„…¬ƒ…{…{„…­„…¬>…¬@„…®„…¬D…¬F„€Ž…«…¬…­…®…«…¬…­…®„„ „…¯-…{…{„…°ƒ…{…{„…±„…³>…³@„€Ž…¯…°…±…¯…°…±„ …²-…{…{„…³ƒ…{…{„€Ž…²…³ˆº  ™™´´€™ˆ»ƒr  €™€…ƒûZˆ¼  Û šš´É„…‰…Šƒrˆ½€ˆ€ˆ…´-ƒr@B„€°…´…´ÿ¤@O‚<1…Š…Š-ƒr@B…yƒr!'ˆ¾€×„…Œ…ƒrˆ½€‘€‘…µ-ƒrAC„€°…µ…µÿ¤@O‚<1……-ƒrAC…yƒr"(ˆ¿€×„…ƒ…„ƒrˆ½€‹€‹…¶-ƒr@B„€°…¶…¶ÿ¤@O‚<1…„…„-ƒr@B…yƒr!'ˆÀ€×„…†…‡ƒr  ˆ½€”€”…·-ƒr A C„€°…·…·ÿ¤@O‚<1…‡…‡-ƒr A C…yƒr " (ˆÁ€×„…ˆÂƒr$$ˆ½…¸-ƒr$<$>„€±…¸…¸ÿ¤@O‚<1ˆÂˆÂ-ƒr$<$>…yƒr$!$'ˆÃ€×„…¢…£ƒr))ˆ½€‚€‚…¹-ƒr).)0„…ºƒwƒr)1)8„€´…¹…º…¹ÿ¤@O‚<1…£…£-ƒr).)0ƒwƒr)1)8…yƒr))ˆÄ€×„…{…|ƒr--ˆ½€…€……»-ƒr-T-V„"€°…»…»ÿ¤@O‚<1…|…|-ƒr-T-V…~ƒr--…yƒr-5-;ˆÅ€×„ …€…ƒr11ˆ½€Ž€Ž…¼-ƒr1U1W„"€°…¼…¼ÿ¤@O‚<1……-ƒr1U1W…~ƒr11…yƒr161<ˆÆ€×„ ƒCˆÇƒr55 ˆ½!! …½-ƒr55„ I…½€Ø…½ÿ¤@O‚<1ˆÇˆÇ-ƒr55ïƒr55ˆÉ€×„ ˆÊˆËƒr99 ˆ½€š€š vÿ¤@O‚<1ˆËˆËˆÎ€×„ „O‡ƒr>>ˆ½€€…¾-ƒr>9>:„…¾€Œ…¾w…¾wÿ„@O‚<1‡‡-ƒr>9>:5ƒr>>!ˆÏ€×„ „z‡ƒrCCˆ½€ € …¿-ƒrC9C:„…¿€Œ…¿x…¿ÿ„@O‚<1‡‡-ƒrC9C:5ƒrCC!ˆÐ€×„„D†íƒrHHˆ½€£€£…À-ƒrH:H;„…À€Œ…À/…À/ÿ„@O‚<1†í†í-ƒrH:H;5ƒrHH"ˆÑ€×„„c†ïƒrMMˆ½€¦€¦…Á-ƒrM8M9„…Á€Œ…Á6…Á6ÿ„@O‚<1†ï†ï-ƒrM8M95ƒrMM ˆÒ€×„ˆÓˆÔƒrRR ˆ½$$ …ƒ ƒrRlRp„ …ƒrR(R.„I……À܅…Ãÿ¤@O‚<1ˆÔˆÔƒ ƒrRlRp‚ƒrR(R.ˆÖƒrRRˆ×€×„ˆØˆÙƒrVVˆ½ee…ĈڃrVV#„I…Å…Å-ƒrV V"„I…ĀÅÅÿ¤@O‚<1ˆÙˆÙˆÚƒrVV#-ƒrV V"ˆÛƒrVVˆÜ€×„ˆÝˆÞƒr] ] ˆ½€¬ €¬ …Æ-ƒr];]=„K…Æ…Æÿ¤@O‚<1ˆÞˆÞ-ƒr];]=ˆßƒr]]ˆà€×„ˆáˆâƒra a ˆ½€¯ €¯ …Ç-ƒra?aA„,…Çÿ¤@O‚<1ˆâˆâ-ƒra?aAˆßƒraaˆã€×„ˆäˆåƒrf fˆ½€º €º…È-ƒrff „€Ý…È…Èÿ¤@O‚<1ˆåˆå-ƒrff ‚Hƒrffˆæ€×€šƒÛ‚ ‚ €š€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿÿoÿÿo„•#uƒÚƒÛƒÚVƒÛVpˆç  ››ÉÉ€›ƒ„€š €š'€›€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿ@oÿ@o„•#uƒ„Apˆè  œœÉÉ€œƒš €œ€¦„\·z\V4à‰„’„\·z\V4à‰„“@o@o„•#uƒšJpˆé  ÉÉ€ƒ§x x€€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uƒ¦ƒ§ƒ¦Nƒ§Nƒ§Npˆê  žžÉÉ€žƒ• %€ž€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#u1ƒ•1Hƒ•Hpˆë  ŸŸÉÉ€ŸlU U €Ÿ€¦„\·z\V4à‰„’„\·z\V4à‰„“„„˜o,„„o,oo„™ooo„„oooooooo o„•#ul pˆì    ÉÉ€ €¶^ ^"€ €¦„\·z\V4à‰„’„\·z\V4à‰„“„„˜o,„„o,oo„™ooo„„oooooooo o„•#u€¶pˆí  ¡¡ÉÉ€¡ˆîˆïƒŒ ƒŒ0€¡  " ¢¥Éæ'„ˆðˆïƒ×ƒ×#ˆñ‚Û‚Û#…É-ˆïƒÏƒÏ!„€Þ…ɀ߅Éÿ´@€Þ-ˆïƒÏƒÏ!ˆô€Þ„ˆõˆïƒÝƒÝˆñ‚܂܅Ê-ˆïƒÏƒÏ!„€Þ…Ê€‚…Êÿ´@€Þ-ˆïƒÏƒÏ!ˆöˆïƒÝ ƒÝ&ˆ÷€Þ„ˆøˆïƒßƒßˆñ‚݂݅Ë-ˆïƒÏƒÏ!„€Þ…Ëÿ´@€Þ-ˆïƒÏƒÏ!ˆù€Þ„ˆúˆïƒáƒáˆñ‚Þ‚Þ…Ì-ˆïƒÏƒÏ!„€Þ…Ìÿ´@€Þ-ˆïƒÏƒÏ!ˆû€Þ„ˆüˆïƒãƒãˆñ‚߂߅Í-ˆïƒÏƒÏ!„€Þ…Í…Íÿ´@€Þ-ˆïƒÏƒÏ!ˆý€Þ„ˆïƒÓƒÓ ˆñ‚× ‚×…Î-ˆïƒÏƒÏ!„€Þ…Îÿ´@€Þ-ˆïƒÏƒÏ!ˆþ€Þ€¢ˆÿˆïƒ— ƒ—€¢`ƒ);‰  ˆî—£¤Ïß'„ˆïƒ› ƒ›ˆñ‚‚…Ï-ˆïƒš ƒš"„ …Ï€à…Ïÿ´@€à-ˆïƒš ƒš"5ˆïƒ›ƒ›€à„ 1ˆïƒœƒœˆñ‚‚…Ð-ˆïƒš ƒš"„ €à…Ð…Ðÿ¤@€à-ˆïƒš ƒš"€à„!‰ˆïƒƒ"ˆñ‚‚"…Ñ-ˆïƒš ƒš"„ €Ë€à…Ñÿ¤@€à-ˆïƒš ƒš"€à„"‰ˆïƒ¦ ƒ¦ˆñ‚® ‚®…Ò-ˆïƒ¦Bƒ¦D„I…ÒI…Òÿ¤@-ˆïƒ¦Bƒ¦D̈ƒ¦$nˆïƒ¦7ƒ¦=‰€á„#‰ˆïƒ¯ ƒ¯ ˆñ‚È ‚È …Ó-ˆïƒ¯/ƒ¯1„I…ÓI…Óÿ¤@-ˆïƒ¯/ƒ¯1nˆïƒ¯$ƒ¯*‚ˆïƒ¯6ƒ¯B‰€á„$‰ˆïƒ¹ ƒ¹"ˆñ‚0 ‚0"…Ô-ˆïƒ¹4ƒ¹6„…Õƒˆïƒ¹cƒ¹e„…Ô…Ô…Ô…ÕI…Õÿ¤@-ˆïƒ¹4ƒ¹6ƒˆïƒ¹cƒ¹e‰ˆïƒ¹$ƒ¹*‰ ˆïƒ¹;ƒ¹C‰ ˆïƒ¹Tƒ¹[‰ €á„%‰ ˆïƒÂ ƒÂˆñ‚§ ‚§…Ö-ˆïƒÂWƒÂY„…׉ ˆïƒÂmƒÂx„I…؅؃ˆïƒÂ€€ƒÂ€‚„…Ö…Ö…×I…Øÿ¤@-ˆïƒÂWƒÂY‰ ˆïƒÂmƒÂxƒˆïƒÂ€€ƒÂ€‚‚4ˆïƒÂƒÂ%nˆïƒÂ,ƒÂ2‰€á„&‰ˆïƒË ƒËˆñ‚Ë ‚Ë…Ù‰ˆïƒË(ƒË1„ …Úy…Ú‰ˆïƒË~ƒË€ƒ„…Ù…Ù …Ú…Ù€ã…Ù…Úÿ¤@‰ˆïƒË(ƒË1‰ˆïƒË~ƒË€ƒ‰ˆïƒËƒË$‰ˆïƒË>ƒËK‰ˆïƒËeƒËr‰€á€£…Û-ˆïƒš ƒš"„ ‰ˆïƒšƒš€£k m5€á‰…Ü-ˆïƒš ƒš"„ …Ü€à…Ü1€á‰1…Ý-ˆïƒš ƒš"„ €à…Ý…݉€á‰‰…Þ-ˆïƒš ƒš"„ €Ë€à…Þ  ˆîˆÿ¤¤ßß''€¤…ß-ˆïƒÏƒÏ!„ˆòˆïƒÏ ƒÏ€¤Fž*€äˆòˆð…à-ˆïƒÏƒÏ!„€Þ…à€ß…à€äˆòˆõ…á-ˆïƒÏƒÏ!„€Þ…ဂ…á€äˆòˆø…â-ˆïƒÏƒÏ!„€Þ…â€äˆòˆú…ã-ˆïƒÏƒÏ!„€Þ…ã€äˆòˆü…ä-ˆïƒÏƒÏ!„€Þ…ä…äˆð€äˆòˆð…à-ˆïƒÏƒÏ!„€Þ…à€ß…àˆõ€äˆòˆõ…á-ˆïƒÏƒÏ!„€Þ…ဂ…áˆø€äˆòˆø…â-ˆïƒÏƒÏ!„€Þ…âˆú€äˆòˆú…ã-ˆïƒÏƒÏ!„€Þ…ãˆü€äˆòˆü…ä-ˆïƒÏƒÏ!„€Þ…ä…ä€äˆò…å-ˆïƒÏƒÏ!„€Þ…åz€ß…ß{€‚…߉  ˆî¥¥ææ''€¥ƒé‚5 ‚5!€¥€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿÿoÿÿo„•#uƒÚƒéƒÚYƒëƒéƒëYƒíƒéƒíYƒïƒéƒïYƒñƒéƒñYƒóƒéƒóYƒéYp‰  ¦¦ææ''€¦‚<¥ ¥€¦€¦„\·z\V4à‰„’„\·z\V4à‰„“„'„˜o,„(„o,oo„™ooo„'„(oooooo„)„˜o,„*„o,oo„™ooo„)„*oooooo„+„˜o,„,„o,oo„™ooo„+„,oooooo„-„˜o,„.„o,oo„™ooo„-„.oooooo„/„˜o,„0„o,oo„™ooo„/„0oooooo„1„˜o,„2„o,oo„™ooo„1„2oooooo„3„˜o,„4„o,oo„™ooo„3„4oooooo@ooo„oooo€€o•Üo„•#uƒ±‚<ƒ±1‚<1p‰  §§ææ55€§ƒÒð ð'€§€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿÿoÿÿo„•#uƒÑƒÒƒÑUƒÒUp‰  ¨¨ææ55€¨‚DW W'€¨€ç„\·z\V4à‰‰„ÀYk2„ÁY Y ‰2‰ [ [‰!2‰"] ]‰#2‰$_ _‰%2‰&a a‰'2‰(c c‰)q‰*  ©©ææ55€©‚Cþ þ+€©€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿÿoÿÿo„•#uƒÖ‚CƒÖ32‚C23p‰+  ªªææ55€ªƒÄÖ Ö$€ª€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿÿoÿÿo„•#uƒÃƒÄƒÃSTƒÇƒÄƒÇSƒÉƒÄƒÉSƒÄTSƒÄTSƒÄTSp‰,  ««ææ55€«ƒà‚ ‚+€«€¦„\·z\V4à‰„’„\·z\V4à‰„“@o@o„•#uƒßƒàƒßW€‚ƒà=Wp‰-  ¬¬ææ55€¬ƒ†€« €«)€¬€¦„\·z\V4à‰„’„\·z\V4à‰„“ÿ@oÿ@o„•#uƒ†Bp‰.  ­­ææ55€­t€Ú €Ú€­€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#utp‰/  ®®ææ55€®…æ…Q…QŽ…ç…Q…QŽ…è…Q…QŽ…é…Q…QŽ…ê …Q …Q#Ž…ë#…Q$…Q'Ž…ì&…Q(…Q+Ž„‰0…Q …Q€®vƒžLwƒ MO‚<1‰0‰0…æ‰1…S…S€‹…æ…ç…è…é…ê…ë…ì‰2‰2…S…S‰3…ç‰1…U…U€‹…æ…ç…è…é…ê…ë…ì‰4‰4…U…U‰5…è‰1…W…W€‹…æ…ç…è…é…ê…ë…ì‰6‰6…W…W‰7…é‰1…Y…Y€‹…æ…ç…è…é…ê…ë…ì‰8‰8…Y…Y‰9…ê‰1…[…[€‹…æ…ç…è…é…ê…ë…ì‰:‰:…[…[‰;…ë‰1…]…]€‹…æ…ç…è…é…ê…ë…ì‰<‰<…]…]‰=…ì‰1…_…_€‹…æ…ç…è…é…ê…ë…ì‰>‰>…_…_‰?„€¿…í…Q…QŽ…î…Q…QŽ…ï…Q…QŽ…ð…Q…QŽ…ñ …Q …Q#Ž…ò#…Q$…Q'Ž…ó&…Q(…Q+Ž€‹…í…î…ï…ð…ñ…ò…ó „€¿…ô…Q…QŽ…õ…Q…QŽ…ö…Q…QŽ…÷…Q…QŽ…ø …Q …Q#Ž…ù#…Q$…Q'Ž…ú&…Q(…Q+Ž€‹…ô…õ…ö…÷…ø…ù…ú€‹…ô…õ…ö…÷…ø…ù…ú„€¿…û…Q…QŽ…ü…Q…QŽ…ý…Q…QŽ…þ…Q…QŽ…ÿ …Q …Q#ކ#…Q$…Q'ކ&…Q(…Q+Ž€‹…û…ü…ý…þ…ÿ†† „€²†…Q…Qކ…Q…Qކ…Q…Qކ…Q…Qކ …Q …Q#ކ#…Q$…Q'ކ&…Q(…Q+Ž€‹†††††††„€²† …Q…Qކ …Q…Qކ …Q…Qކ …Q…Qކ …Q …Q#ކ#…Q$…Q'ކ&…Q(…Q+Ž€‹† † † † † ††„F†…Q…Qކ…Q…Qކ…Q…Qކ…Q…Qކ …Q …Q#ކ#…Q$…Q'ކ&…Q(…Q+Ž€‹††††††† €‡€‹…æ…ç…è…é…ê…ë…ì‰@  ¯¯55€¯†…@…@ކ…@…@ކ…@…@ކ…@…@ކ …@ …@#ކ#…@$…@'Ž„‰A…@ …@€¯vƒžLwƒ MO‚<1‰A‰A†‰1…B…B€Š††††††‰B‰B…B…B‰C†‰1…D…D€Š††††††‰D‰D…D…D‰E†‰1…F…F€Š††††††‰F‰F…F…F‰G†‰1…H…H€Š††††††‰H‰H…H…H‰I†‰1…J…J€Š††††††‰J‰J…J…J‰K†‰1…L…L€Š††††††‰L‰L…L…L‰M„€¿†…@…@ކ…@…@ކ…@…@ކ …@…@ކ! …@ …@#ކ"#…@$…@'ހІ††† †!†" „€¿†#…@…@ކ$…@…@ކ%…@…@ކ&…@…@ކ' …@ …@#ކ(#…@$…@'ހІ#†$†%†&†'†(€Š†#†$†%†&†'†(„€¿†)…@…@ކ*…@…@ކ+…@…@ކ,…@…@ކ- …@ …@#ކ.#…@$…@'ހІ)†*†+†,†-†. „€²†/…@…@ކ0…@…@ކ1…@…@ކ2…@…@ކ3 …@ …@#ކ4#…@$…@'ހІ/†0†1†2†3†4„€²†5…@…@ކ6…@…@ކ7…@…@ކ8…@…@ކ9 …@ …@#ކ:#…@$…@'ހІ5†6†7†8†9†:„F†;…@…@ކ<…@…@ކ=…@…@ކ>…@…@ކ? …@ …@#ކ@#…@$…@'ހІ;†<†=†>†?†@ €‡€Š††††††‰N  °°AA55€°†A…1…1ކB…1…1ކC…1…1ކD…1…1ކE …1 …1#Ž„‰O…1 …1€°vƒžLwƒ MO‚<1‰O‰O†A‰1…3…3€‰†A†B†C†D†E‰P‰P…3…3‰Q†B‰1…5…5€‰†A†B†C†D†E‰R‰R…5…5‰S†C‰1…7…7€‰†A†B†C†D†E‰T‰T…7…7‰U†D‰1…9…9€‰†A†B†C†D†E‰V‰V…9…9‰W†E‰1…;…;€‰†A†B†C†D†E‰X‰X…;…;‰Y„€¿†F…1…1ކG…1…1ކH…1…1ކI…1…1ކJ …1 …1#Ž€‰†F†G†H†I†J „€¿†K…1…1ކL…1…1ކM…1…1ކN…1…1ކO …1 …1#Ž€‰†K†L†M†N†O€‰†K†L†M†N†O„€¿†P…1…1ކQ…1…1ކR…1…1ކS…1…1ކT …1 …1#Ž€‰†P†Q†R†S†T „€²†U…1…1ކV…1…1ކW…1…1ކX…1…1ކY …1 …1#Ž€‰†U†V†W†X†Y„€²†Z…1…1ކ[…1…1ކ\…1…1ކ]…1…1ކ^ …1 …1#Ž€‰†Z†[†\†]†^„F†_…1…1ކ`…1…1ކa…1…1ކb…1…1ކc …1 …1#Ž€‰†_†`†a†b†c €‡€‰†A†B†C†D†E‰Z  ±±dd55€±†d…$…$ކe…$…$ކf…$…$ކg…$…$Ž„‰[…$ …$€±vƒžLwƒ MO‚<1‰[‰[†d‰1…&…&€ˆ†d†e†f†g‰\‰\…&…&‰]†e‰1…(…(€ˆ†d†e†f†g‰^‰^…(…(‰_†f‰1…*…*€ˆ†d†e†f†g‰`‰`…*…*‰a†g‰1…,…,€ˆ†d†e†f†g‰b‰b…,…,‰c„€¿†h…$…$ކi…$…$ކj…$…$ކk…$…$Ž€ˆ†h†i†j†k „€¿†l…$…$ކm…$…$ކn…$…$ކo…$…$Ž€ˆ†l†m†n†o€ˆ†l†m†n†o„€¿†p…$…$ކq…$…$ކr…$…$ކs…$…$Ž€ˆ†p†q†r†s „€²†t…$…$ކu…$…$ކv…$…$ކw…$…$Ž€ˆ†t†u†v†w„€²†x…$…$ކy…$…$ކz…$…$ކ{…$…$Ž€ˆ†x†y†z†{„F†|…$…$ކ}…$…$ކ~…$…$ކ…$…$Ž€ˆ†|†}†~† €‡€ˆ†d†e†f†g‰d  ²²€€55€²†€……ކ……ކ‚……Ž‚ø‰e… …€²vƒžLwƒ MO‚<1‰e‰e†€‰1……\†€††‚‰f‰f……‰g†‰1……\†€††‚‰h‰h……‰i†‚‰1……\†€††‚‰j‰j……‰k‚ø€¿†ƒ……ކ„……ކ………Ž\†ƒ†„†… ‚ø€¿††……ކ‡……ކˆ……Ž\†††‡†ˆ\†††‡†ˆ‚ø€¿†‰……ކŠ……ކ‹……Ž\†‰†Š†‹ ‚ø€²†Œ……ކ……ކŽ……Ž\†Œ††Ž‚ø€²†……ކ……ކ‘……Ž\†††‘‚øF†’……ކ“……ކ”……Ž\†’†“†” €‡\†€††‚‰l  ³³••55€³†•……ކ–……Ž„‰m… …€³vƒžLwƒ MO‚<1‰m‰m†•‰1……€††•†–‰n‰n……‰o†–‰1……€††•†–‰p‰p……‰q„€¿†—……ކ˜……Ž€††—†˜ „€¿†™……ކš……Ž€††™†š€††™†š„€¿†›……ކœ……Ž€††›†œ „€²†……ކž……Ž€†††ž„€²†Ÿ……ކ ……Ž€††Ÿ† „F†¡……ކ¢……Ž€††¡†¢ €‡€††•†–‰r  ´´££55€´ƒ“€ù €ù€´€¦„\·z\V4à‰„’„\·z\V4à‰„“€€o€€o„•#uƒ“Gp‰s  µµ££55€µƒµ² ²"€µ€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#u1ƒµ1QƒµQp‰t  ¶¶££55€¶ƒû‚p ‚p€¶€¦„\·z\V4à‰„’„\·z\V4à‰„“„5„˜o,„6„o,oo„™ooo„5„6ooooooooo„•#uƒúƒûƒúZƒûZƒûZp‰u  ··££77€·v€å €å"€·€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#uvp‰v  ¸¸££77€¸ž} }€¸€¦„\·z\V4à‰„’„\·z\V4à‰„“oo„•#už*p‰w  ¹¹££77€¹ˆÌ]]"€¹ WQºÍ£o7šE„7‰x€€&„_„_&†£-€;€=„€è†£44 †£ÿ¤@€é-€;€=‰{€)€4@C&‰|€B€I@C&‰}€S€d‰~€é„8‰€¥€¥„c„c€è4 ÿ¤@€é‰{€¥€¥)@C&‰}€¥9€¥J‰€€é„9‰€¸€¸„[„[†¤-€¸0€¸2„€è†¤€è€††¤ÿ¤@€é-€¸0€¸2‰{€¸€¸)‰‚€é„:‰ƒ€Á€Á"†)†)"†¥-€Á7€Á9„€è†¥|€è†¥ÿ¤@€é-€Á7€Á9‰{€Á%€Á0‚€Á=€ÁI‰…€é„;‰†€Ð€Ð†$†$€èÿ¤@€é‰‡€Ð!€Ð-‰ˆ€é„<‰‰€Ø€Ø'„C„C'€è ÿ¤@€é‰Š€é„=‰‹€Þ€Þ(„U„U(ÿ¤@€é‰Œ€é„>‰€â€â.„S„S. ÿ¤@€é‰Ž€é„?‰€û€û …ý…ý †¦-€û5€û7„€è†¦4€è€è†¦ÿ¤@€é-€û5€û7‰{€û#€û.@C&‰€û<€ûO‰‘€é„@‰’  „r„r†§- 8 :„I€è†§€è=†§ÿ¤@€é- 8 :‰“ ! -‰”€é„A‰•'…ø…ø'€èÿ¤@€é‰–€é„B‰—(…ù…ù(€èÿ¤@€é‰˜€é„C‰™%††%}€èÿ¤@€é‰›)4‰œ€é„D‰))'„G„G'†¨-)5)7„†¨|€è†¨ÿ¤@€é-)5)7‰ž)*)2‰Ÿ€é„E‰ ;; …Í…Í †©‰¡;k;o„ †ªy†ª-;{;}„€ã†©†ª4€è†ªÿ¤@€é‰¡;k;o-;{;}‰¢;";'@C&‰£;;;G‰¤€é„F‰¥EE%„Ê„Ê%~4€èÿ¤@€é‰§E'E1@C&‰EAET‰¨€é„G‰©NN'„ÿ„ÿ'4€èÿ¤@€é‰«N)N,@C&‰NENX‰¬€é„H‰­]]„¸„¸€èÿ¤@€é‰®]]0‰¯€é„I‰°pp"…7…7"†«-p€‰p€‹„€€ †«4€è†«ÿ¤@€é-p€‰p€‹‰²p%p0‰³pgpp@C&‰£p€p€œ‰´€é„J‰°……"…b…b"†¬‰µ…)….„†­-…€…€Ÿ„†¬†¬€€ †­4€è†­ÿ¤@€é‰µ…)….-…€…€Ÿ†…%…(‰²…1…<‰³…{…€„@C&‰£…€¤…€°‰¶€é„K‰°››"…f…f"†®‰µ›*›/„†¯‰·›7›<„†°-›€³›€µ„†®†¯†®†¯€€ †°4€è†°ÿ¤@€é‰µ›*›/‰·›7›<-›€³›€µ„›%›)„›2›6‰²›?›J‰³›€‘›€š@C&‰£›€º›€Æ‰¸€é„L‰°²²"…i…i"†±‰µ²*²/„†²‰·²7²<„†³‰¹²D²I„†´-²€È²€Ê„†±†²†³†±†²†³€€ †´4€è†´ÿ¤@€é‰µ²*²/‰·²7²<‰¹²D²I-²€È²€Ê„²%²)„²2²6„²?²C‰²²L²W‰³²€¦²€¯@C&‰£²€Ï²€Û‰º€é„M‰»ÅÅ …¤…¤ †µ-Å5Å7„€è†µ€€ †µÿ¤@€é-Å5Å7‰{Å#Å.‰¼€é„N†GÓÓ…÷…÷†¶-Ó2Ó4„€è†¶€èÿ¤@€é-Ó2Ó4‰{ÓÓ*‰½€é„O‰¾ßß,„±„±,†·-àà „€è†·†·|4 ÿ¤@€é-àà ‰{à à‰¿á á‰Àá(á=‰ÁáNáf@C&‰}â â‰Â€é„P‰Ãêê$„µ„µ$€è4 ÿ¤@€é‰{ë ë@C&‰}ë'ë8‰Ä€é„Q‰Åÿÿ‚Þ‚Þ†¸-ÿ!ÿ#„vI†¸†¸€è€èÿ¤@€Ù-ÿ!ÿ#†uÿÿÔÿ'ÿ+‰Æ€Ù„R‰Ç‚‚‚ׂ×v€èÿ¤@€Ù‰È€Ù„S‰É‚‚‚߂߆¹-‚G‚I„v€è€è†¹€è†¹ÿ¤@€Ù-‚G‚I‰Ê‚‚%‰Ë‚4‚@‰Ì€Ù„T‰Í‚!‚!‚Ý‚Ýv€è€èÿ¤@€ÙÌ‚!‚!‰{‚!.‚!9‰Î€Ù„U‰Ï‚+‚+‚قنº-‚+‚+ „v†º€è†ºÿ¤@€Ù-‚+‚+ 5‚+‚+‰Ð€Ù„V‰Ñ‚3‚3‚Ú‚Ú†»-‚3.‚30„v€è†»€è†»ÿ¤@€Ù-‚3.‚30‰{‚3‚3'‰Ò€Ù„W‰Ó‚:‚:‚؂؆¼-‚:0‚:2„v€è†¼€è†¼ÿ¤@€Ù-‚:0‚:2‰Ô‚:‚: ‰Õ€Ù„X†‚H‚H‚܂܆½-‚HO‚HQ„†¾ƒ‚H8‚H:„v†½†½€è†¾€è†¾ÿ¤@€Ù-‚HO‚HQƒ‚H8‚H:‚4‚H‚H…΂H$‚H*‰Ö€Ù„Y…Í‚U‚U‚Û‚Û†¿-‚U(‚U*„†Àƒ‚UC‚UE„v€è†¿†¿€è†À€è†Àÿ¤@€Ù-‚U(‚U*ƒ‚UC‚UE‰{‚U‚U …΂U.‚U4‰×€Ù„Z‚‚d‚d‚à‚à†Á-‚d.‚d0„v€è†Á€è†Áÿ¤@€Ù-‚d.‚d0‰{‚d‚d'‚‚d4‚d@‰Ø€Ù„[‚ ‚q‚q‚á‚á†Â-‚q+‚q-„v€è†Â€è†Â€è†Âÿ¤@€Ù-‚q+‚q-‰{‚q‚q$‰Ù‚q1‚q=‰Ú€Ù„\‚w‚w‚Ö ‚Övÿ´@€Ù‰Û€Ù„]‰Ü‚͇͂Y‡Y†Ã‰Ü‚Ê‚Ê!„€ï†Ã†Ãÿ¤@€ï‰Ü‚Ê‚Ê!5‚͉͂ހï„^‚æ‚æ ‡^ ‡^†Ä‰ß‚܂܄€ð†Ä€è4 €ð†Äÿ´@€ð‰ß‚Ü‚ÜÔ‚æ‚æ@C&‰}‚æ?‚æP‰á€ð„_‰‚ï‚‡½†Å‰ß‚܂܄€ð†Å€è4 €ð†Åÿ¤@€ð‰ß‚Ü‚ÜÔ‚ï ‚ï$@C&‰}‚ïP‚ïa‰â€ð„`‰ã‚ó‚󇇆Ɖ߂܂܄€ð†Æ†Æÿ¤@€ð‰ß‚܂܃݂ó‚ó‰ä€ð„a‰å‚ÿ‚ÿ‡‹‡‹†Ç‰ß‚܂܄†È‰Ü‚ÿ>‚ÿD„€ð†Ç€ï†È†Ç4†Èÿ¤@€ð‰ß‚܂܉܂ÿ>‚ÿD‰æ‚ÿ‚ÿ*@C&‰|‚ÿR‚ÿY‰ç€ð„b‰èƒ ƒ ‡¤‡¤"†É‰ß‚܂܄†Ê‰Üƒ Cƒ I„€ð†É€ï†Ê†É4€è†Êÿ¤@€ð‰ß‚܂܉܃ Cƒ I‰æƒ #ƒ /@C&‰|ƒ Wƒ ^‰é€ð„c‰êƒƒ‡‡ †Ë‰ß‚܂܄†Ì‰ÜƒAƒG„€ð†Ë€ï†Ì†Ë44†Ìÿ¤@€ð‰ß‚܂܉܃AƒG‰æƒ!ƒ-@C&‰|ƒUƒ\‰ë€ð„d‰ìƒƒ#‡‡%†Í‰ß‚܂܄†Î‰ÜƒFƒL„€ð†Í€ï†Î†Í4€è4†Îÿ¤@€ð‰ß‚܂܉܃FƒL‰æƒ&ƒ2@C&‰|ƒZƒa‰í€ð„e‰îƒ(ƒ(‡µ‡µ†Ï‰ß‚܂܄€ð†Ï4€è†Ïÿ¤@€ð‰ß‚Ü‚Ü@C&‰|ƒ(ƒ(!‰ï€ð„f‰ðƒ7ƒ7‡¶‡¶†Ð‰ß‚܂܄€ð†Ð4€è4†Ðÿ¤@€ð‰ß‚Ü‚Ü@C&‰|ƒ7ƒ7$‰ñ€ð„g‰òƒGƒG‡·‡·†Ñ‰ß‚܂܄†Ò-ƒG.ƒG0„€ð†Ñ†Ñ4€è†Ò4€è†Òÿ¤@€ð‰ß‚Ü‚Ü-ƒG.ƒG0‰óƒGƒG@C&‰|ƒG>ƒGE‰ô€ð„h‰õƒTƒT‡¸‡¸†Ó‰ß‚܂܄†Ô-ƒT1ƒT3„€ð†Ó†Ó4€è†Ô4€è4†Ôÿ¤@€ð‰ß‚Ü‚Ü-ƒT1ƒT3‰óƒTƒT @C&‰|ƒTAƒTH‰ö€ð„i‰ƒWƒW‡q‡q†Õ‰ß‚܂܄€ð†Õÿ¤@€ð‰ß‚܂܉÷€ð„j‰øƒ[ƒ[‡h‡h†Ö‰ß‚܂܄€ð†Öÿ¤@€ð‰ß‚܂܉ù€ð„k‰úƒ[ƒ[‡i‡i†×‰ß‚܂܄€ð†×ÿ¤@€ð‰ß‚܂܉û€ð„l‰üƒ_ƒ_‡l‡l†Ø‰ß‚܂܄€ð†Ø€ñÿ¤@€ðqƒ“G‰ß‚܂܉þ€ð„m‰ÿƒ_ƒ_‡l‡l†Ù‰ß‚܂܄€ð†Ù€òÿ¤@€ðqƒ“G‰ß‚܂܊€ð„nŠƒ_ƒ_‡l‡l†Ú‰ß‚܂܄€ð†Ú€òÿ¤@€ðqƒ“G‰ß‚܂܊€ð„oŠƒdƒd!‡e‡e#†Û‰ß‚܂܄€ð†Ûÿ¤@€ð‰ß‚܂܊€ð„pŠ Š †Ü‰Š „y€ó†Üÿ´@€ó‰Š Š €ó„qŠ ŠŠ†Ý‰Š „y€ó†Ý= ÿ¤@€ó‰Š VŠŠ €ó„rŠ ŠŠ##†Þ‰Š „y€ó†Þ€ô†Þÿ¤@€ó‰Š Š€ó„sŠ!! Š+ +†ß‰Š„ †ày†à‰Š„€õ†ß†àÿ´@€õ‰Š‰ŠŠ€õ„tŠ Š%%Š22†á‰Š„ †ây†â‰Š„€õ†á†â †âÿ¤@€õ‰Š‰ŠŠŠ%%VŠ%&%*Š€õ„uŠ Š''Š::†ã‰Š„ †äy†ä‰Š„€õ†ã†ä€ã†ã†äÿ¤@€õ‰Š‰ŠŠ€õ„vŠ// ŠI I†å-Š,,„€ö†åÿ´@€ö-Š,,Š€ö„wŠ Š22ŠNN†æ-Š,,„€ö†æ†æÿ¤@€ö-Š,,†Š22Š€ö„xŠ Š44ŠRR†ç-Š,,„€ö†ç€ñ†çÿ¤@€ö-Š,,Š€ö„yŠŒHŒH––†è‰ŒCŒC!„y€ô†è†èÿ´@€ô‰ŒCŒC!ŠŒHŒH$Š€ô„zŠŒKŒK––†é‰ŒCŒC!„y€ô†é†éÿ´@€ô‰ŒCŒC!ŠŒK ŒK'Š€ô„{„ ŒXŒX@––F†ê-ŒXŒX„€ò†ê †êÿ´@€ò-ŒXŒXŠŒX$ŒX*VŒX1ŒX5€ò€º†ë-ŒŒ „ŠŒ Œ€º †ë ˆÌ»»ìì||€»Š‚¯ ‚¯€»€…ƒûZŠ ˆÌÞ¼¼ìì|~„|Š ‚·‚·#†v†v'€€è€‚ÿ¤A€÷O‚<1Š Š €ù„}Š$‚Á‚Á&†‹†‹+€ƒ€„€èÿ¤A€úO‚<1Š$Š$ƒ2‚Á)‚Á0€ù€¼Š'ƒj ƒj€¼Q‚C2322`ƒ);Š( ˆÌx½½ìû~ˆ „~Š)Š*ƒw ƒwˆ{ ˆ{†ì-ƒw'ƒw)„†ì†ì†ìÿ¤@O‚<1Š*Š*-ƒw'ƒw)Š+ƒwƒwŠ,ƒw.ƒw5Š-€ü„ƒ „­ƒ ƒˆ: ˆ:†í-ƒƒ„†îƒƒ ƒ"„†í†î†í†îÿ¤@O‚<1„­„­-ƒƒƒƒ ƒ"ƒ ƒƒnƒ'ƒ-Š.€ü„€ƒŠ/ƒ ƒˆN ˆN†ï-ƒƒ!„†ï†ï†ïÿ¤@O‚<1Š/Š/-ƒƒ!ƒƒƒnƒ.ƒ4Š0€ü„ƒ Š1ƒœ ƒœˆR ˆR†ð-ƒœ"ƒœ$„†ð†ð†ð†ðÿ¤@O‚<1Š1Š1-ƒœ"ƒœ$ƒƒœƒœ nƒœ1ƒœ7Š2€ü„‚Š3Š4ƒ« ƒ«ˆ¦ ˆ¦†ñ-ƒ«ƒ«„†òŠ5ƒ«*ƒ«-„†óŠ6ƒ«.ƒ«1„†ñ€††ò†ó†ñ†ò†óÿ¤@O‚<1Š4Š4-ƒ«ƒ«Š5ƒ«*ƒ«-Š6ƒ«.ƒ«1Š7ƒ«ƒ«nƒ«7ƒ«=Š8€ü„ƒŠ9Š:ƒ¶ ƒ¶ˆD ˆD†ô-ƒ¶ƒ¶„†õƒƒ¶#ƒ¶%„†ô4†õ†ô†õÿ¤@O‚<1Š:Š:-ƒ¶ƒ¶ƒƒ¶#ƒ¶%Š;ƒ¶ƒ¶nƒ¶1ƒ¶7Š<€ü„„Š=‰òƒÆ ƒÆˆW ˆW†öƒƒÆƒÆ„†÷-ƒÆ#ƒÆ%„†ö†÷†ö†ö†÷†öÿ¤@O‚<1‰ò‰òƒƒÆƒÆ-ƒÆ#ƒÆ%Š>ƒÆƒÆZƒÆ0ƒÆ5nƒÆ<ƒÆBŠ?€ü„…ƒ7Š@ƒÍ ƒÍˆf ˆf†ø-ƒÍƒÍ„†ø†øÿ¤@O‚<1Š@Š@-ƒÍƒÍ‰žƒÍƒÍnƒÍ+ƒÍ1ŠA€ü„†ŠB<ƒÕ ƒÕˆi ˆi†ù-ƒÕ"ƒÕ$„†ù†ùÿ¤@O‚<1<<-ƒÕ"ƒÕ$‰žƒÕƒÕ nƒÕ1ƒÕ7ŠC€ü„‡ŠDŠEƒâ ƒâˆl ˆl†ú-ƒâ)ƒâ+„†ú†ú†úÿ¤@O‚<1ŠEŠE-ƒâ)ƒâ+nƒâƒâŠF€ü€½†û‰ß‚܂܄‰àŠG‚Ü ‚Ü€½#u{ƒµQO‚<1ŠGŠG€ý‰à†ü‰ß‚܂܄€ð†ü€è4 €ð†ü‰€ý‰à‰†ý‰ß‚܂܄€ð†ý€è4 €ð†ý‰ã€ý‰à‰ã†þ‰ß‚܂܄€ð†þ†þ‰å€ý‰à‰å†ÿ‰ß‚܂܄‡‰Ü‚ÿ>‚ÿD„€ð†ÿ€ï‡†ÿ4‡‰è€ý‰à‰è‡‰ß‚܂܄‡‰Üƒ Cƒ I„€ð‡€ï‡‡4€è‡‰ê€ý‰à‰ê‡‰ß‚܂܄‡‰ÜƒAƒG„€ð‡€ï‡‡44‡‰ì€ý‰à‰ì‡‰ß‚܂܄‡‰ÜƒFƒL„€ð‡€ï‡‡4€è4‡‰î€ý‰à‰î‡‰ß‚܂܄€ð‡4€è‡‰ð€ý‰à‰ð‡‰ß‚܂܄€ð‡4€è4‡‰ò€ý‰à‰ò‡ ‰ß‚܂܄‡ -ƒG.ƒG0„€ð‡ ‡ 4€è‡ 4€è‡ ‰õ€ý‰à‰õ‡ ‰ß‚܂܄‡ -ƒT1ƒT3„€ð‡ ‡ 4€è‡ 4€è4‡ ‰€ý‰à‰‡ ‰ß‚܂܄€ð‡ ‰ø€ý‰à‰ø‡‰ß‚܂܄€ð‡‰ú€ý‰à‰ú‡‰ß‚܂܄€ð‡‰ü€ý‰à‰ü‡‰ß‚܂܄€ð‡€ñ‰ÿ€ý‰à‰ÿ‡‰ß‚܂܄€ð‡€òŠ€ý‰àЇ‰ß‚܂܄€ð‡€òŠ€ý‰àЇ‰ß‚܂܄€ð‡ŠH ˆÌ¾¾ˆˆ€¾‡-ŒŒ„.Œ Œ €¾ ‡ŠI ˆÌ¿¿ˆˆ€¿ŠJ‹ü ‹ü€¿€…ƒûZŠK ˆÌcÀÀˆŒ„ˆŠLŒŒ •Ô•Ô ‡-‹ý‹ý„‡ ‡ÿ¤A O‚<1ŠLŠL-‹ý‹ýŠMŒ#Œ*€þ„‰ŠNŒŒ)•Ø•Ø)‡-‹ý‹ý„‡ ‡ÿ¤A O‚<1ŠNŠN-‹ý‹ý5Œ,Œ1€þ„ŠŠOŒŒ•å•å‡-‹ý‹ý„ ‡‡ÿ¤A O‚<1ŠOŠO-‹ý‹ý€þ„‹ŠPŠQŒŒ•â•â ‡-‹ý‹ý„ ‡ÿ¤A €½„\·z\V4à‰†+„\·z\V4à‰†,ŠRŠRO‚<1ŠSŠS-‹ý‹ý€þ€À‡‰ŒOŒO„ ‡y‡‰ŒOŒO„‰ŒO ŒO€ÀoƒE‡€ô‡ŠT ˆÌÁÁŒŒ€Á‡-Œ\Œ\„‰ýŒ\ Œ\€Á€ã€ò‡‡ŠU ˆÌÂÂŒŒ€Â‡‰ŒCŒC!„yŠ ŒC ŒC€Â€ýРЇ‰ŒCŒC!„y€ô‡‡€ýРЇ‰ŒCŒC!„y€ô‡‡Š€ýРЇ‰ŒCŒC!„y€ô‡‡Š€ýРЇ‰ŒCŒC!„y€ô‡‡ŠV ˆÌÃÃŒŒ€Ã‡-ŒXŒX„ŠŠWŒX ŒX€ÃO‚<1ŠWŠW„ €ò‡‡ -ŒXŒX„Š V‡ €ýŠ„ ‡!-ŒXŒX„€ò‡! ‡!„ €ýŠ„ ‡!-ŒXŒX„€ò‡! ‡!€…ŠY ˆÌÄÄ""ŒŒ€Ä‡"‰Š„ ‡#y‡#‰Š„ŠŠZŠ €ÄO‚<1ŠZŠZ€ýЇ$‰Š„ ‡%y‡%‰Š„€õ‡$‡%Š €ýŠŠ ‡&‰Š„ ‡'y‡'‰Š„€õ‡&‡' ‡'Š €ýŠŠ ‡(‰Š„ ‡)y‡)‰Š„€õ‡(‡)€ã‡(‡)Š[ ˆÌÅÅ**ŒŒ€Å‡*-Š,,„ŠŠ\Š, ,€ÅO‚<1Š\Š\€ýЇ+-Š,,„€ö‡+Š €ýŠŠ ‡,-Š,,„€ö‡,‡,Š €ýŠŠ ‡--Š,,„€ö‡-€ñ‡-Š] ˆÌÆÆ..ŒŒ€ÆŠ^ƒæ ƒæ€ÆQ‚C2322`ƒ);Š_ ˆÌÇÇ.FŒ• „ŒŠ)Š*ƒí ƒí‡ÿ ‡ÿ‡.Š`ƒí!ƒí&„ ‡/y‡/-ƒí'ƒí)„‡0Šaƒí<ƒíA„ ‡/y€ã‡.‡/€ã‡0‡/€ñ‡/ÿ¤@O‚<1Š*Š*Š`ƒí!ƒí&-ƒí'ƒí)Šaƒí<ƒíAŠbƒíƒíŠcƒí.ƒí4Šd„ƒ „­ƒô ƒô‡Ì ‡Ì‡1-ƒôƒô„‡2ƒƒô ƒô"„‡3‰¡ƒô:ƒô>„ ‡1y‡1‡2€ã‡3‡1€ñ‡2ÿ¤@O‚<1„­„­-ƒôƒôƒƒô ƒô"‰¡ƒô:ƒô>ƒ ƒôƒôŠeƒô'ƒô2Šf„ŽƒŠ/ƒü ƒü‡Ò ‡Ò‡4-ƒüƒü!„‡5‰¡ƒüAƒüE„ ‡4y‡4€ã‡5‡4€ñ‡4ÿ¤@O‚<1Š/Š/-ƒüƒü!‰¡ƒüAƒüEƒƒüƒüŠeƒü.ƒü9Šg„ƒ Š1„ „‡Ø ‡Ø‡6-„"„$„‡7‰¡„D„H„ ‡6y‡6€ã‡7‡6€ñ‡6€ñ‡6ÿ¤@O‚<1Š1Š1-„"„$‰¡„D„Hƒ„„ Še„1„<Šh„Š3Š4„ „ˆ ˆ‡8-„„„‡9Š5„*„-„‡:Š6„.„1„‡;‰¡„J„N„ ‡8y‡8€†‡9‡:€ã‡;‡8€ñ‡9€ñ‡:ÿ¤@O‚<1Š4Š4-„„Š5„*„-Š6„.„1‰¡„J„NŠ7„„Še„7„BŠi„‘Š9Š:„ „‡ß ‡ß‡<-„„„‡=ƒ„#„%„‡>‰¡„D„H„ ‡<y‡<4‡=€ã‡>‡<€ñ‡=ÿ¤@O‚<1Š:Š:-„„ƒ„#„%‰¡„D„HŠ;„„Še„1„<Šj„’Š=‰ò„$ „$‡å ‡å‡?ƒ„$„$„‡@-„$#„$%„‡A‰¡„$O„$S„ ‡@y‡?‡@‡?‡?€ã‡A‡@€ñ‡?ÿ¤@O‚<1‰ò‰òƒ„$„$-„$#„$%‰¡„$O„$SŠ>„$„$Z„$0„$5Še„$<„$GŠk„“ƒ7Š@„* „*‡ð ‡ð‡B-„*„*„‡C‰¡„*>„*B„ ‡By‡B€ã‡C‡Bÿ¤@O‚<1Š@Š@-„*„*‰¡„*>„*B‰ž„*„*Še„*+„*6Šl„”ŠDŠE„3 „3‡ó ‡ó‡D‰¡„3)„3-„ ‡Ey‡E-„3.„30„€ã‡D‡E€ñ‡E‡Eÿ¤@O‚<1ŠEŠE‰¡„3)„3--„3.„30Še„3„3!Šm€Ç‡F‰Š „yŠŠnŠ €ÇO‚<1ŠnŠn€ýЇG‰Š „y€ó‡GŠ €ýŠŠ ‡H‰Š „y€ó‡H= Š €ýŠŠ ‡I‰Š „y€ó‡I€ô‡IŠo ˆÌÈÈJJ••€ÈŠp‚{ ‚{€È€…ƒûZŠq ˆÌ$ÉÉJL•š„•Šr‚‰‚‰†B†B#€†=/44€èÿ¤AO‚<1ŠrŠrŠt‚‰‚‰%@C&Šu‚‰0‚‰6@C&‚‰>‚‰C„–ŠrŠv‚‚†H†H#€†€è=/ÿ¤AO‚<1ŠvŠv‚‚$„—Šw‚š‚š†S†S$€†=/44€èÿ¤AO‚<1ŠwŠwŠt‚š ‚š&@C&Šu‚š1‚š7@C&‚š?‚šD„˜Š@Šx‚£‚£†e†e‡J-‚ž‚ž„‡J‡Jÿ¤AO‚<1ŠxŠx-‚ž‚ž‰ž‚£‚£ „™<Šy‚«‚«†h†h‡K-‚ž‚ž„‡K‡Kÿ¤AO‚<1ŠyŠy-‚ž‚ž‰ž‚«‚«&€É‡L-€…€…„‰yŠz€… €…€É#u5mO‚<1ŠzŠzŠ{ ˆÌÊÊMMšš€Ê‡M‰Ü‚Ê‚Ê!„‰ÝŠ|‚Ê ‚Ê€Ê#uO‚<1Š|Š|‰Ü€ý‰Ý‰Ü‡N‰Ü‚Ê‚Ê!„€ï‡N‡NŠ} ˆÌËËOOšš€ËˆÍŠ~ò ò€ËO‚<1Š~Š~#u ‰Å€ýˆÍ‰Å‡O-ÿ!ÿ#„vI‡O‡O€è€è‰Ç€ýˆÍ‰Çv€è‰É€ýˆÍ‰É‡P-‚G‚I„v€è€è‡P€è‡P‰Í€ýˆÍ‰Ív€è€è‰Ï€ýˆÍ‰Ï‡Q-‚+‚+ „v‡Q€è‡Q‰Ñ€ýˆÍ‰Ñ‡R-‚3.‚30„v€è‡R€è‡R‰Ó€ýˆÍ‰Ó‡S-‚:0‚:2„v€è‡S€è‡S†€ýˆÍ†‡T-‚HO‚HQ„‡Uƒ‚H8‚H:„v‡T‡T€è‡U€è‡U…Í€ýˆÍ…͇V-‚U(‚U*„‡Wƒ‚UC‚UE„v€è‡V‡V€è‡W€è‡W‚€ýˆÍ‚‡X-‚d.‚d0„v€è‡X€è‡X‚ €ýˆÍ‚ ‡Y-‚q+‚q-„v€è‡Y€è‡Y€è‡Y€ýˆÍvŠ ˆÌÌÌZZšš€Ì‰zŠ€€‹ €‹€Ì#uO‚<1ЀЀ‰x€ý‰z‰x‡Z-€;€=„€è‡Z44 ‡Z‰€ý‰z‰€è4 ‰€ý‰z‰‡[-€¸0€¸2„€è‡[€è€†‡[‰ƒ€ý‰z‰ƒ‡\-€Á7€Á9„€è‡\|€è‡\‰†€ý‰z‰†€è‰‰€ý‰z‰‰€è ‰‹€ý‰z‰‹‰€ý‰z‰ ‰€ý‰z‰‡]-€û5€û7„€è‡]4€è€è‡]‰’€ý‰z‰’‡^- 8 :„I€è‡^€è=‡^‰•€ý‰z‰•€è‰—€ý‰z‰—€è‰™€ý‰z‰™}€è‰€ý‰z‰‡_-)5)7„‡_|€è‡_‰ €ý‰z‰ ‡`‰¡;k;o„ ‡ay‡a-;{;}„€ã‡`‡a4€è‡a‰¥€ý‰z‰¥~4€è‰©€ý‰z‰©4€è‰­€ý‰z‰­€è‰°€ý‰z‰°‡b-p€‰p€‹„€€ ‡b4€è‡b‰°€ý‰z‰°‡c‰µ…)….„‡d-…€…€Ÿ„‡c‡c€€ ‡d4€è‡d‰°€ý‰z‰°‡e‰µ›*›/„‡f‰·›7›<„‡g-›€³›€µ„‡e‡f‡e‡f€€ ‡g4€è‡g‰°€ý‰z‰°‡h‰µ²*²/„‡i‰·²7²<„‡j‰¹²D²I„‡k-²€È²€Ê„‡h‡i‡j‡h‡i‡j€€ ‡k4€è‡k‰»€ý‰z‰»‡l-Å5Å7„€è‡l€€ ‡l†G€ý‰z†G‡m-Ó2Ó4„€è‡m€è‰¾€ý‰z‰¾‡n-àà „€è‡n‡n|4 ‰Ã€ý‰z‰Ã€è4 Š ˆÌÍÍoošš€Í Š‚&€Í ÖæÎÞo‚ šé%„šŠ‚ Šƒ‚´‚´ ‡o-Š‚&(kƒ„AŒ I‡o€Ø‡oÿ´@€Ø-Š‚&(Š„€Ø„›Š@Š‚!!Šƒ‚3‚3‡p-Š‚&(kƒ„AŒ €Ø‡p‡p€Ø‡pÿ¤@€Ø-Š‚&(5Š‚!!Š…€Ø„œŠ†Š‚((Šƒ‚4‚4‡q-Š‚&(kƒ„AŒ €Ø‡q‡q€Ø‡qÿ¤@€Ø-Š‚&(5Š‚((Ї€Ø„ŠˆŠ‚++Šƒ‚5‚5‡r-Š‚&(kƒ„AŒ €Ø‡rÿ¤@€Ø-Š‚&(Љ€Ø„žŠŠŠ‚00Šƒ‚6‚6‡s-Š‚&(kƒ„AŒ €Ø‡s‡sÿ¤@€Ø-Š‚&(5Š‚00Š‹€Ø„ŸŠŒŠ‚33Šƒ‚>‚>‡t-Š‚&(kƒ„AŒ €Ø‡tÿ¤@€Ø-Š‚&(Š€Ø„ €„Š‚99Šƒ‚S‚S‡u-Š‚&(kƒ„AŒ €Ø‡u€Ø‡u€Ø‡uÿ¤@€Ø-Š‚&(ŠŽŠ‚99 ŠŠ‚9+9/Š€Ø„¡zŠ‚??Šƒ‚\‚\‡v-Š‚&(kƒ„AŒ €Ø‡v€Ø‡v€Ø‡vÿ¤@€Ø-Š‚&(ŠŽŠ‚?? ŠŠ‚?+?/Š‘€Ø„¢Š’Š‚EEŠƒ‚ЂЇw-Š‚&(kƒ„AŒ €Ø‡w€Ø‡wÿ¤@€Ø-Š‚&(ГЂEE#Š”€Ø„£Š•Š‚KKŠƒ‚Œ‚Œ!‡x-Š‚&(kƒ„AŒ €Ø‡x€Ø‡xÿ¤@€Ø-Š‚&(ГЂK!K)Š–€Ø„¤Š—Š‚PPŠƒ‚‹‚‹‡y-Š‚&(kƒ„AŒ €Ø‡y€Ø‡yÿ¤@€Ø-Š‚&(ГЂPP%Š˜€Ø„¥Š™Š‚VV!Šƒ‚‚#‡z-Š‚&(kƒ„AŒ €Ø‡z€Ø‡zÿ¤@€Ø-Š‚&(ГЂV#V+Šš€Ø„¦Š›Š‚ZZŠƒ‚€‚€‡{-Š‚&(kƒ„AŒ €Ø‡{‡{ÿ¤@€Ø-Š‚&(Šœ€Ø„§ŠŠ‚]]Šƒ‚†‚†‡|-Š‚&(kƒ„AŒ €Ø‡|‡|ÿ¤@€Ø-Š‚&(Šž€Ø„¨FŠ‚ddŠƒ‚š‚š‡}-Š‚&(kƒ„AŒ €Ø‡} ÿ¤@€Ø-Š‚&(€Ø„©Š@ŠŸŠ ¼¼‡~ƒ ŠŸ&*kƒ„AŒ ‡‚ŠŸ\bkƒ„Alƒ†Bއ~‡‡~‡‡~‡ÿ¤@ƒ ŠŸ&*‚ŠŸ\bŠ¢ŠŸ5ŠŸ$Š£„ªŠŒŠŸŠ ÁÁ‡€ƒ ŠŸ&*kƒ„AŒ ‡‚ŠŸ\bkƒ„Alƒ†Bއ€‡ÿ¤@ƒ ŠŸ&*‚ŠŸ\bФ„«ŠŸ  Š ±± ‡‚ƒ ŠŸ&*kƒ„AŒ ‡ƒ‚ŠŸ\bkƒ„Alƒ†BŽI‡‚‡ƒ‡‚‡ƒÿ´@ƒ ŠŸ&*‚ŠŸ\b  Š¥„¬Š¦ŠŸ%%Š ÒÒ‡„ƒ ŠŸ&*kƒ„AŒ ‡…‚ŠŸ\bkƒ„Alƒ†Bއ„‡…‡„ÿ¤@ƒ ŠŸ&*‚ŠŸ\bŠ¢ŠŸ%%Ч„­ŠˆŠŸ((Š Ñч†ƒ ŠŸ&*kƒ„AŒ ‡‡‚ŠŸ\bkƒ„Alƒ†Bއ†‡‡ÿ¤@ƒ ŠŸ&*‚ŠŸ\bЍ„®Š©ŠŸ//Š Â‡ˆƒ ŠŸ&*kƒ„AŒ ‡‰‚ŠŸ\bkƒ„Alƒ†Bއˆ‡‰‡ˆ‡‰ÿ¤@ƒ ŠŸ&*‚ŠŸ\bŠ¢ŠŸ//Šª„¯Š†ŠŸ44Š ÓÓ‡Šƒ ŠŸ&*kƒ„AŒ ‡‹‚ŠŸ\bkƒ„Alƒ†BއЇ‹‡Š‡Š‡‹ÿ¤@ƒ ŠŸ&*‚ŠŸ\bŠ¢ŠŸ44Š«„°Š¬ŠŸ::Š ÔÔ‡Œƒ ŠŸ&*kƒ„AŒ ‡‚ŠŸ\bkƒ„Alƒ†BއŒ‡‡Œ4‡ÿ¤@ƒ ŠŸ&*‚ŠŸ\bŠ¢ŠŸ::Š­„±FŠŸAAŠ ä䇎ƒ ŠŸ&*kƒ„AŒ ‡‚ŠŸ\bkƒ„Alƒ†Bއއ ÿ¤@ƒ ŠŸ&*‚ŠŸ\b„²€¿†˜ †˜ †˜ †˜ ‡-†˜†˜Ž‡ €¬€¿X -†˜†˜„³€¿†˜ †˜ †˜ †˜ ‡‘-†˜†˜Ž‡‘‡‘€¬€¿€‡‡‘X‡‘-†˜†˜„´€¿†˜ †˜ †˜ †˜ ‡’-†˜†˜Ž‡’ €¬€¿ -†˜†˜„µ€²†˜ †˜ †˜ †˜ ‡“-†˜†˜Ž‡“€¬€² -†˜†˜„¶€²†˜ †˜ †˜ †˜ ‡”-†˜†˜Ž‡”€¬€²-†˜†˜„·F†˜ †˜ †˜ †˜ ‡•-†˜†˜Ž‡• €¬F -†˜†˜„¸Š¯†œ†œŒíŒí‡–-†˜†˜Ž3‡–ÿ¤@-†˜†˜а„¹Š±†Ÿ†ŸŒÐŒÐ‡—-†˜†˜Ž‡—ÿ¤@-†˜†˜в„ºŠŒ†¡†¡ŒæŒæ‡˜-†˜†˜Ž‡˜ÿ¤@-†˜†˜г„»Š´†¤†¤ŒßŒß‡™-†˜†˜Ž‡™‡™ÿ¤@-†˜†˜е„¼Š¶†§†§ŒàŒà‡š-†˜†˜Ž‡š3‡šÿ¤@-†˜†˜Š·„½Š©†­†­ŒçŒç‡›-†˜†˜Ž‡›‡›ÿ¤@-†˜†˜m†­†­Џ„¾Š¹†¶†¶ŒïŒï‡œ-†˜†˜Ž‡œ3‡œ3‡œÿ¤@-†˜†˜Šº†¶†¶!Š»†¶'†¶+м€Î‡-†Æ †Æ„´†Æ †Æ €Î€‚‡Š½  ÏÏžž¿¿€Ï‡ž-†À†À „€î†À †À€Ï‡žŠ¾  ÐПŸ¿¿€Ð‡Ÿ-Š‚&(kƒ„AŒ ˆÈŠ¿Š‚  €Ð#uO‚<1Š¿Š¿ˆÈ‡ -Š‚&(Œ I‡ €Ø‡ Š@ˆÈŠ@‡¡-Š‚&(Œ €Ø‡¡‡¡€Ø‡¡Š†ˆÈІ‡¢-Š‚&(Œ €Ø‡¢‡¢€Ø‡¢ŠˆˆÈŠˆ‡£-Š‚&(Œ €Ø‡£ŠŠˆÈŠŠ‡¤-Š‚&(Œ €Ø‡¤‡¤ŠŒˆÈŠŒ‡¥-Š‚&(Œ €Ø‡¥€„ˆÈ€„‡¦-Š‚&(Œ €Ø‡¦€Ø‡¦€Ø‡¦zˆÈz‡§-Š‚&(Œ €Ø‡§€Ø‡§€Ø‡§Š’ˆÈŠ’‡¨-Š‚&(Œ €Ø‡¨€Ø‡¨Š•ˆÈŠ•‡©-Š‚&(Œ €Ø‡©€Ø‡©Š—ˆÈŠ—‡ª-Š‚&(Œ €Ø‡ª€Ø‡ªŠ™ˆÈŠ™‡«-Š‚&(Œ €Ø‡«€Ø‡«Š›ˆÈŠ›‡¬-Š‚&(Œ €Ø‡¬‡¬ŠˆÈЇ­-Š‚&(Œ €Ø‡­‡­FˆÈF‡®-Š‚&(Œ €Ø‡® {€‚‡Ÿ‡ŸŠÁ  Ñѯ¯¿¿€ÑŠÂŠ‚r r€ÑQ‚C2322`ƒ);ŠÃ  ùÒÒ¯Ò¿ß „¿ŠÄŠÅŠ‚w wŠƒ‚ö ‚ö‡¯-Š‚ww„ €Ø‡¯ÿ¤Dzƒ¯PO‚<1ŠÅŠÅ-Š‚wwŠÆ„ÀŠÇŠÈŠ‚} }Šƒ‚à ‚à‡°-Š‚}}„ ‡°€Ø‡°ÿ¤@O‚<1ŠÈŠÈ-Š‚}}5Š‚}}ŠÉ„Áƒ7Š@Š‚€… €…Šƒ‚Ý ‚݇±-Š‚€…€…„ ‡±€Ø‡±€Ø‡±ÿ¤@O‚<1Š@Š@-Š‚€…€…5Š‚€…€…ƒCŠ‚€…€… ŠÊ„ŠËŠŠŠ‚€Œ €ŒŠƒ‚Ú ‚Ú‡²-Š‚€Œ€Œ „ ‡²€Ø‡²ÿ¤@O‚<1ŠŠŠŠ-Š‚€Œ€Œ ŠÌŠ‚€Œ€ŒƒCŠ‚€Œ$€Œ'ŠÍ„ÊΊϊ‚€“ €“Šƒƒ- ƒ-‡³-Š‚€“ €“"„ €Ø‡³€Ø‡³ÿ¤@O‚<1ŠÏŠÏ-Š‚€“ €“"ŠŽŠ‚€“€“ŠŠ‚€“'€“+ŠÐ„ÄŠÑŠÒŠ‚€› €›Šƒƒ3 ƒ3‡´-Š‚€›&€›(„ €Ø‡´€Ø‡´ÿ¤@O‚<1ŠÒŠÒ-Š‚€›&€›(ŠŽŠ‚€›€› ŠŠ‚€›-€›1ŠÓ„ÅŠÔŠÕŠ‚€¢ €¢Šƒƒ0 ƒ0‡µ-Š‚€¢"€¢$„ €Ø‡µ€Ø‡µÿ¤@O‚<1ŠÕŠÕ-Š‚€¢"€¢$ŠŽŠ‚€¢€¢ŠŠ‚€¢)€¢-ŠÖ„Ɗ׊؊‚€ª €ªŠƒƒ6 ƒ6‡¶-Š‚€ª(€ª*„ €Ø‡¶€Ø‡¶ÿ¤@O‚<1ŠØŠØ-Š‚€ª(€ª*ŠŽŠ‚€ª€ª"ŠŠ‚€ª/€ª3ŠÙ„Ç…ÀŠ‚€± €±Šƒƒ ƒ‡·-Š‚€±€±„ €Ø‡·ÿ¤@O‚<1…À…À-Š‚€±€±ƒCŠ‚€±€±ŠÚ„ȃ„¸Š‚€º €ºŠƒ‚ü ‚ü‡¸-Š‚€º€º!„ ‡¸€Ø‡¸ÿ¤@O‚<1„¸„¸-Š‚€º€º!ƒŠ‚€º€ºƒCŠ‚€º.€º1ŠÛ„ɃŠ/Š‚€Â €ÂŠƒ‚ÿ ‚ÿ‡¹-Š‚€Â€Â!„ ‡¹€Ø‡¹€Ø‡¹ÿ¤@O‚<1Š/Š/-Š‚€Â€Â!ƒŠ‚€Â€ÂƒCŠ‚€Â.€Â1ŠÜ„ʃ „­Š‚€Ê €ÊŠƒƒ ƒ ‡º-Š‚€Ê€Ê„ ‡»ƒŠ‚€Ê €Ê"„ ‡º‡»€Ø‡º€Ø‡»ÿ¤@O‚<1„­„­-Š‚€Ê€ÊƒŠ‚€Ê €Ê"ƒ Š‚€Ê€ÊƒCŠ‚€Ê'€Ê*ŠÝ„˅…Ê‚€Ò €ÒŠƒƒ ƒ‡¼-Š‚€Ò€Ò„ ‡½ Š‚€Ò€Ò„‡½‡¼‡½‡½€Ø‡¼‡½ÿ¤@O‚<1…Ã…Ã-Š‚€Ò€Ò Š‚€Ò€ÒŠ‚€Ò€Ò$ZŠ‚€ÒA€ÒFƒCŠ‚€ÒQ€ÒTŠÞ„Ì…Å…ÆŠ‚€Ú €ÚŠƒƒ ƒ‡¾-Š‚€Ú€Ú„ ‡¿ Š‚€Ú€Ú„‡¾‡¿‡¿€Ø‡¾‡¿‡¿ÿ¤@O‚<1…Æ…Æ-Š‚€Ú€Ú Š‚€Ú€ÚŠ‚€Ú"€Ú(ƒCŠ‚€ÚE€ÚHZŠ‚€ÚT€ÚYŠß„̓„¶Š‚€ã €ãŠƒ‚ù ‚ù‡À-Š‚€ã€ã!„ ‡À€Ø‡Àÿ¤@O‚<1„¶„¶-Š‚€ã€ã!ƒŠ‚€ã€ãƒCŠ‚€ã.€ã1Šà„ΊáŠâŠ‚€ê €êŠƒ‚ì ‚ì‡Á-Š‚€ê €ê"„ €Ø‡Á€Ø‡Á€Ø‡Áÿ¤@O‚<1ŠâŠâ-Š‚€ê €ê"ŠŽŠ‚€ê€êŠŠ‚€ê'€ê+Šã„ÏŠäŠåŠ‚€ð €ðŠƒ‚ï ‚ï‡Â-Š‚€ð(€ð*„ I€Ø‡Â€Ø‡Âÿ¤@O‚<1ŠåŠå-Š‚€ð(€ð*пЂ€ð€ðŠç„ЊèŠéŠ‚€÷ €÷Šƒ‚æ ‚æ‡Ã-Š‚€÷€÷„ €Ø‡Ã€Ø‡Ã€Ø‡Ãÿ¤@O‚<1ŠéŠé-Š‚€÷€÷ŠŽŠ‚€÷€÷ŠŠ‚€÷#€÷'Šê„ÑŠëŠìŠ‚€ý €ýŠƒ‚é ‚é‡Ä-Š‚€ý$€ý&„ I€Ø‡Ä€Ø‡Äÿ¤@O‚<1ŠìŠì-Š‚€ý$€ý&пЂ€ý€ýŠí„ÒŠîŠïŠ‚ Šƒ‚× ‚ׇÅ-Š‚„ €Ø‡Åÿ¤@O‚<1ŠïŠï-Š‚ƒCŠ‚Šð„Óƒ„¨Š‚ Šƒ‚ó ‚ó‡Æ-Š‚  „ ‡Æ€Ø‡Æÿ¤@O‚<1„¨„¨-Š‚  YŠ‚  ƒCŠ‚ ) ,Šñ„Ôƒ Š1Š‚ Šƒƒ ƒ‡Ç-Š‚"$„ ‡Ç€Ø‡Ç€Ø‡Ç€Ø‡Çÿ¤@O‚<1Š1Š1-Š‚"$ƒŠ‚ ƒCŠ‚14Šò„ÕŠóІŠ‚ Šƒ‚ã ‚ã‡È-Š‚„ ‡È€Ø‡È€Ø‡Èÿ¤@O‚<1ІІ-Š‚5Š‚ƒCŠ‚!$Šô„ÖŠõŠöŠ‚! !Šƒƒ9 ƒ9‡É-Š‚! !"„ €Ø‡É‡Éÿ¤@O‚<1ŠöŠö-Š‚! !"ƒCŠ‚!!Š÷„׊øŠùŠ‚' 'Šƒƒ< ƒ<‡Ê-Š‚' '"„ €Ø‡Ê‡Êÿ¤@O‚<1ŠùŠù-Š‚' '"ƒCŠ‚''Šú„ØŠûŠüŠ‚- -Šƒƒ ƒ‡Ë-Š‚--„ 3‡Ë€Ø‡Ëÿ¤@O‚<1ŠüŠü-Š‚----Šý„Ù…Ò…ÓŠ‚3 3Šƒƒ ƒ‡Ì-Š‚33„ €Ø‡Ì3‡Ìÿ¤@O‚<1…Ó…Ó-Š‚33ƒCŠ‚33Šþ„ÚƒŠÿŠ‚9 9Šƒƒ ƒ‡Í-Š‚99„ ‡Í€Ø‡Íÿ¤@O‚<1ŠÿŠÿ-Š‚99ƒ"Š‚99‹„Ûƒ…Њ‚? ?Šƒƒ ƒ ‡Î-Š‚??„ €Ø‡Î‡Îÿ¤@O‚<1…Ð…Ð-Š‚??ƒCŠ‚??‹„Ü‹‹Š‚E EŠƒƒ# ƒ#‡Ï-Š‚EE„ €Ø‡ÏI‡Ïÿ¤@O‚<1‹‹-Š‚EEƒCŠ‚EE‹„Ý‹‹Š‚K KŠƒƒ& ƒ&‡Ð-Š‚K K"„ I‡Ð€Ø‡Ðÿ¤@O‚<1‹‹-Š‚K K"KK‹„Þ‹‹ Š‚R RŠƒƒ* ƒ*‡Ñ-Š‚R!R#„ €Ø‡Ñ€Ø‡Ñ€Ø‡Ñÿ¤@O‚<1‹ ‹ -Š‚R!R#ŠŽŠ‚RRŠŠ‚R(R,‹ €Ò‹ ˆï €Ò`ƒ);Q‚C2322‹   ÷)ÓÓÒ.ß A„ß‹ ‹ˆï" "ˆñ„ „‡Ò-ˆï" ""„I‡ÒI‡ÒI‡Òÿ¤@O‚<1‹‹-ˆï" ""Š+ˆï""Š,ˆï"("/‹ „à‹‹ˆï00ˆñ…4…4‡Ó-ˆï1,1-„‡Óz‡Ó‡Ó‡Ó‡Óˆ0‡Ó‡Ó‡Ó€ª‡ÓI‡Ó‡Óÿ„@O‚<1‹‹-ˆï1,1-nˆï00%‹ „á‹‹ˆïCCˆñ…A…A‡Ô-ˆïC-C/„‡ÕƒˆïD,D-„‡Õz‡Õ‡Õ‡Õ‡Õˆ0‡Õ‡Õ‡Õ€ª‡Õ‡Ô‡ÕI‡Ô‡Õÿ„@O‚<1‹‹-ˆïC-C/ƒˆïD,D-ƒ!ˆïC!C+nˆïC:C@‹ „â‹‹ˆïd dˆñ„• „•‡Ö-ˆïdd „I‡ÖI‡Öÿ¤@O‚<1‹‹-ˆïdd nˆïdd‹ „ã‹‚#ˆïs sˆñƒœ ƒœ‡×-ˆïs,s.„{I‡×ÿ¤@O‚<1‚#‚#-ˆïs,s.nˆïss‹ „äŠ9Š:ˆï€„ €„ˆñƒŠ ƒŠ‡Ø-ˆï€„€„„‡Ùƒˆï€„#€„%„‡Ø4‡ÙI‡ØI‡Ùÿ¤@O‚<1Š:Š:-ˆï€„€„ƒˆï€„#€„%Š;ˆï€„€„nˆï€„1€„7‹ „僄±ˆï€“ €“ˆñ„ „ ‡Ú-ˆï€“€“ „‡Û‰ ˆï€“T€“_„I‡Ü‡Üƒˆï€“g€“i„‡Ú‡ÛI‡ÚI‡Üÿ¤@O‚<1„±„±-ˆï€“€“ ‰ ˆï€“T€“_ƒˆï€“g€“iƒ ˆï€“€“nˆï€“4€“:‹ „æ‹‹ˆï€¤ €¤ˆñ„ „‡Ý-ˆï€¤#€¤%„‡Ý‡ÝI‡ÝI‡Ýÿ¤@O‚<1‹‹-ˆï€¤#€¤%€¼ˆï€¤€¤!Š+ˆï€¤7€¤>Š,ˆï€¤J€¤Q‹ „烄£ˆï€² €²ˆñƒÚ ƒÚ‡Þ‰ ˆï€²=€²H„I‡ß‡ß-ˆï€²P€²R„I‡ÞI‡ßÿ¤@O‚<1„£„£‰ ˆï€²=€²H-ˆï€²P€²R‹ ˆï€²€²‹! „è‹"‹#ˆï€Å €Åˆñ… …‡à-ˆï€Å"€Å$„‡áƒ ˆï€ÅX€Å\„ ‡à‡áI‡àI‡áÿ¤@O‚<1‹#‹#-ˆï€Å"€Å$ƒ ˆï€ÅX€Å\ƒ!ˆï€Å€Å nˆï€Å1€Å7‹$ „é‹%‰Óˆï€Ï €Ïˆñƒ, ƒ,‡â-ˆï€Ï-€Ï/„I‡âI‡âÿ¤@O‚<1‰Ó‰Ó-ˆï€Ï-€Ï/‰Ôˆï€Ï€Ï‹& „ê‹'‹(ˆï€Û €Ûˆñ„î „î‡ã-ˆï€Û5€Û7„ I‡ãI‡ãÿ¤@O‚<1‹(‹(-ˆï€Û5€Û7nˆï€Û€Û‹) „ë‹*‹+ˆï€è €èˆñ„ù „ù‡ä-ˆï€è$€è&„‡åƒ ˆï€èR€èV„ ‡ä‡åI‡äI‡äÿ¤@O‚<1‹+‹+-ˆï€è$€è&ƒ ˆï€èR€èVƒ!ˆï€è€è"nˆï€è3€è9‹, „ìŠÄŠÅˆï€ï €ïˆñƒ2 ƒ2‡æ-ˆï€ï€ï„I‡æÿ¤Dzƒ¯PO‚<1ŠÅŠÅ-ˆï€ï€ï‹- „탄¸ˆï€þ €þˆñƒS ƒS‡ç-ˆï€þ€þ!„‡çI‡çÿ¤@O‚<1„¸„¸-ˆï€þ€þ!ƒˆï€þ€þnˆï€þ.€þ4‹. „î‹/‹0ˆï ˆñ…´ …´‡èˆï #„‡éˆï'*„‡è‡éI‡èI‡éÿ¤@O‚<1‹0‹0ˆï #ˆï'*ƒˆïŠ+ˆï7>Š,ˆïKR‹1 „/ˆï ˆñƒu ƒu‡ê-ˆï  !„‡êI‡êI‡êÿ¤@O‚<1Š/Š/-ˆï  !ƒˆï  nˆï . 4‹2 „ð‹3‹4ˆï- -ˆñƒ» ƒ»‡ë-ˆï--„‡ëI‡ë‡ëÿ¤@O‚<1‹4‹4-ˆï--ƒˆï--nˆï-,-2‹5 „ñ‹6‹7ˆï: :ˆñ„h „h‡ì-ˆï:":$„‡ìI‡ìÿ¤@O‚<1‹7‹7-ˆï:":$ƒˆï:: nˆï:1:7‹8 „ò……ÈïH Hˆñƒí ƒí‡í-ˆïHH„‡î ˆïHH„‡î‡í‡î‡îI‡í‡îÿ¤@O‚<1…Ã…Ã-ˆïHH ˆïHHˆïHH$ZˆïHAHFnˆïHQHW‹9 „󃄶ˆïW Wˆñƒ\ ƒ\‡ï-ˆïWW!„‡ïI‡ïÿ¤@O‚<1„¶„¶-ˆïWW!ƒˆïWWnˆïW.W4‹: „ô‹;‹<ˆïe eˆñ…¨ …¨‡ðˆïe e#„‡ñˆïe'e*„‡ð‡ñI‡ðI‡ñÿ¤@O‚<1‹<‹<ˆïe e#ˆïe'e*ƒˆïeeŠ+ˆïe7e>Š,ˆïeKeR‹= „õ‹>‹?ˆïu uˆñ„Õ „Õ‡ò-ˆïu"u$„‡óƒ ˆïu\u`„ ‡ò‡óI‡òI‡óI‡òÿ¤@O‚<1‹?‹?-ˆïu"u$ƒ ˆïu\u`ƒ!ˆïuu nˆïu1u7‹@ „öŠº‹Aˆï€ €ˆñ…¿ …¿‡ô-ˆï€€„I‡ô‡ôÿ¤@O‚<1‹A‹A-ˆï€€nˆï€€‹B „÷ŠîŠïˆïŠ ŠˆñƒÎ ƒÎ‡õ-ˆïŠ Š"„I‡õÿ¤@O‚<1ŠïŠï-ˆïŠ Š"nˆïŠŠ‹C „øƒ„³ˆïœ œˆñƒ8 ƒ8‡ö-ˆïœ3œ5„‡öI‡öÿ¤@O‚<1„³„³-ˆïœ3œ5ˆïœœ„´ˆïœœ*‹D „ù‹E‹Fˆï¬ ¬ˆñƒ5 ƒ5‡÷-ˆï¬.¬0„‡÷I‡÷ÿ¤@O‚<1‹F‹F-ˆï¬.¬0„´ˆï¬¬%‹G „úƒ„¨ˆï· ·ˆñƒ= ƒ=‡ø-ˆï··„‡øI‡øÿ¤@O‚<1„¨„¨-ˆï··Yˆï··nˆï·)·/‹H „ûƒ„«ˆïà ÈñƒJ ƒJ‡ù-ˆïÃ"Ã$„‡ùI‡ùÿ¤@O‚<1„«„«-ˆïÃ"Ã$YˆïÃÃnˆïÃ1Ã7‹I „ü‹J‹KˆïРЈñƒf ƒf‡úˆïÐЄ‡ûˆïÐ"Ð%„‡ú‡ûI‡úI‡ûÿ¤@O‚<1‹K‹KˆïÐЈïÐ"Ð%YˆïÐЊ+ˆïÐ2Ð9Š,ˆïÐFÐM‹L „ý„½„¾ˆïÚ Úˆñƒß ƒß‡ü-ˆïÚÚ!„I‡üÿ¤@O‚<1„¾„¾-ˆïÚÚ!nˆïÚÚ‹M „þƒ „­ˆïë ëˆñƒz ƒz‡ý-ˆïë넇þƒˆïë"ë$„‡ý‡þI‡ýI‡þÿ¤@O‚<1„­„­-ˆïë냈ïë"ë$ƒ ˆïëënˆïë)ë/‹N „ÿƒ ‹Oˆïù ùˆñƒ„ ƒ„‡ÿˆïùù„ˆˆïù"ù%„ˆƒˆïù)ù+„‡ÿˆˆI‡ÿIˆIˆÿ¤@O‚<1‹O‹Oˆïùùˆïù"ù%ƒˆïù)ù+ƒ ˆïùùŠ+ˆïù0ù7Š,ˆïùDùK‹P …ƒ „¯ˆï‚ ‚ˆñƒ ƒˆ-ˆï‚"‚$„ˆƒˆï‚(‚*„ˆˆIˆIˆÿ¤@O‚<1„¯„¯-ˆï‚"‚$ƒˆï‚(‚*ƒ ˆï‚‚nˆï‚/‚5‹Q …ƒY†Bˆï‚‚ˆñ…l…lˆ-ˆï‚7‚9„ Iˆˆÿ„@O‚<1†B†B-ˆï‚7‚9nˆï‚‚#‹R …‹S‹Tˆï‚‚ˆñ…y…yˆ-ˆï‚(‚*„ˆƒˆï‚O‚Q„ ˆˆIˆˆÿ„@O‚<1‹T‹T-ˆï‚(‚*ƒˆï‚O‚Qƒ!ˆï‚‚&nˆï‚5‚;‹U …ƒX†Dˆï‚(‚(ˆñ…N…Nˆ-ˆï‚(7‚(9„ Iˆˆÿ„@O‚<1†D†D-ˆï‚(7‚(9nˆï‚(‚(#‹V …‹W‹Xˆï‚4‚4ˆñ…[…[ˆ-ˆï‚4(‚4*„ˆ ƒˆï‚4O‚4Q„ ˆˆ Iˆˆÿ„@O‚<1‹X‹X-ˆï‚4(‚4*ƒˆï‚4O‚4Qƒ!ˆï‚4‚4&nˆï‚45‚4;‹Y …‹Z‹[ˆï‚? ‚?ˆñƒD ƒDˆ -ˆï‚?)‚?+„Iˆ ˆ ÿ¤@O‚<1‹[‹[-ˆï‚?)‚?+mˆï‚?‚?nˆï‚?‚?$‹\ …ƒŠÿˆï‚J ‚Jˆñ„2 „2ˆ -ˆï‚J‚J„ˆ Iˆ ÿ¤@O‚<1ŠÿŠÿ-ˆï‚J‚Jnˆï‚J‚J‹] …ŠûŠüˆï‚R ‚Rˆñ„ „ ˆ -ˆï‚R‚R„3ˆ Iˆ ÿ¤@O‚<1ŠüŠü-ˆï‚R‚Rnˆï‚R‚R‹^ …ŠDŠEˆï‚] ‚]ˆñ„S „Sˆ -ˆï‚]!‚]#„Iˆ Iˆ ˆ ÿ¤@O‚<1ŠEŠE-ˆï‚]!‚]#nˆï‚]‚]‹_ … ‹`‹aˆï‚k ‚kˆñƒª ƒªˆ-ˆï‚k‚k„ˆƒˆï‚k!‚k#„ˆ4ˆIˆˆÿ¤@O‚<1‹a‹a-ˆï‚k‚kƒˆï‚k!‚k#Š;ˆï‚k‚knˆï‚k/‚k5‹b … ‹c‹dˆï‚x ‚xˆñ„Î „Έ-ˆï‚x"‚x$„IˆIˆÿ¤@O‚<1‹d‹d-ˆï‚x"‚x$nˆï‚x‚x‹e … ‹f‹gˆï‚ˆ ‚ˆˆñƒö ƒöˆ-ˆï‚ˆ‚ˆ!„ˆˆˆIˆˆÿ¤@O‚<1‹g‹g-ˆï‚ˆ‚ˆ!‹hˆï‚ˆ‚ˆnˆï‚ˆ2‚ˆ8‹i … Š=‰òˆï‚” ‚”ˆñ„^ „^ˆ-ˆï‚”‚”„ˆ ˆï‚”‚”„ˆˆˆˆIˆIˆÿ¤@O‚<1‰ò‰ò-ˆï‚”‚” ˆï‚”‚”ˆï‚”‚”$Zˆï‚”A‚”Fnˆï‚”Q‚”W‹j … ŠÇŠÈˆï‚œ ‚œˆñ„F „Fˆ-ˆï‚œ‚œ„ˆIˆÿ¤@O‚<1ŠÈŠÈ-ˆï‚œ‚œ5ˆï‚œ‚œ‹k …‹l‹mˆï‚ª ‚ªˆñ…’ …’ˆ-ˆï‚ª*‚ª,„IˆIˆÿ¤@O‚<1‹m‹m-ˆï‚ª*‚ª,ˆï‚ª‚ªnˆï‚ª‚ª%‹n …‹o‹pˆï‚¶ ‚¶ˆñ…œ …œˆ-ˆï‚¶"‚¶$„ˆIˆIˆÿ¤@O‚<1‹p‹p-ˆï‚¶"‚¶$ƒˆï‚¶‚¶ nˆï‚¶1‚¶7‹q …‹r‹sˆï‚Ç ‚Ljñ… … ˆ-ˆï‚Ç2‚Ç4„ IˆIˆÿ¤@O‚<1‹s‹s-ˆï‚Ç2‚Ç4nˆï‚ǂNjt …‹u‹vˆï‚Ú ‚Úˆñ… …ˆ-ˆï‚Ú!‚Ú#„ˆƒ ˆï‚ÚO‚ÚS„ ˆˆIˆIˆÿ¤@O‚<1‹v‹v-ˆï‚Ú!‚Ú#ƒ ˆï‚ÚO‚ÚSƒ!ˆï‚Ú‚Únˆï‚Ú0‚Ú6‹w …‹x‹yˆï‚ä‚äˆñ…$…$ˆ-ˆï‚å,‚å-„ˆzˆˆˆˆ€ªˆIˆˆÿ„@O‚<1‹y‹y-ˆï‚å,‚å-nˆï‚ä‚ä!‹z …‹{‹|ˆï‚ð‚ðˆñ…,…,ˆ-ˆï‚ð)‚ð+„ˆƒˆï‚ñ,‚ñ-„ˆzˆˆˆˆ€ªˆˆˆIˆˆÿ„@O‚<1‹|‹|-ˆï‚ð)‚ð+ƒˆï‚ñ,‚ñ-ƒ!ˆï‚ð‚ð'nˆï‚ð6‚ð<‹} …‹~‹ˆïƒ ƒˆñƒÂ ƒÂˆ-ˆïƒ*ƒ,„IˆIˆÿ¤@O‚<1‹‹-ˆïƒ*ƒ,ˆïƒƒnˆïƒƒ%‹€ …‹‹‚ˆïƒ ƒ ˆñ…Š …Šˆ-ˆïƒ "ƒ $„ˆIˆIˆÿ¤@O‚<1‹‚‹‚-ˆïƒ "ƒ $ƒˆïƒ ƒ nˆïƒ 1ƒ 7‹ƒ …ƒ…Ðˆïƒ ƒˆñ„7 „7ˆ-ˆïƒ ƒ"„Iˆˆÿ¤@O‚<1…Ð…Ð-ˆïƒ ƒ"nˆïƒƒ‹„ ……Ò…Óˆïƒ ƒ ˆñ„$ „$ˆ -ˆïƒ ƒ !„Iˆ 3ˆ ÿ¤@O‚<1…Ó…Ó-ˆïƒ ƒ !nˆïƒ ƒ ‹… …‹†Ьˆïƒ, ƒ,ˆñƒ± ƒ±ˆ!-ˆïƒ, ƒ,"„ˆ!Iˆ!4ˆ!ÿ¤@O‚<1ЬЬ-ˆïƒ, ƒ,"ƒˆïƒ,ƒ,nˆïƒ,/ƒ,5‹‡ …‹ˆ‹‰ˆïƒ8 ƒ8ˆñ„u „uˆ"-ˆïƒ8&ƒ8(„ˆ"Iˆ"4ÿ¤@O‚<1‹‰‹‰-ˆïƒ8&ƒ8(ƒˆïƒ8ƒ8$nˆïƒ85ƒ8;‹Š …‹‹‹ŒˆïƒD ƒDˆñƒ¡ ƒ¡ˆ#-ˆïƒDƒD „ˆ$ƒˆïƒD$ƒD&„ˆ#4ˆ$Iˆ#4ˆ$ÿ¤@O‚<1‹Œ‹Œ-ˆïƒDƒD ƒˆïƒD$ƒD&Š;ˆïƒDƒDnˆïƒD2ƒD8‹ …†å†æˆïƒO ƒOˆñ„J „Jˆ%-ˆïƒO.ƒO0„Iˆ%Iˆ%ÿ¤@O‚<1†æ†æ-ˆïƒO.ƒO0ˆïƒOƒOnˆïƒO#ƒO)‹Ž …‹‹ˆïƒb ƒbˆñƒ/ ƒ/ˆ& ˆïƒb"ƒb(„ˆ'-ˆïƒb-ƒb/„ˆ&4ˆ'ˆ&ˆ&Iˆ'ÿ¤@O‚<1‹‹ ˆïƒb"ƒb(-ˆïƒb-ƒb/‰Ôˆïƒbƒb ZˆïƒbEƒbJ‹‘ …‹’‹“ˆïƒo ƒoˆñ„… „…ˆ(-ˆïƒo3ƒo5„Iˆ(I=ˆ(ÿ¤@O‚<1‹“‹“-ˆïƒo3ƒo5‹”ˆïƒoƒo nˆïƒo(ƒo.‹• …ƒ‹–ˆïƒ| ƒ|ˆñƒ ƒˆ)ˆïƒ|ƒ| „ˆ*ˆïƒ|1ƒ|4„Iˆ)Iˆ*Iˆ)ˆ*ÿ¤@O‚<1‹–‹–ˆïƒ|ƒ| ˆïƒ|1ƒ|4Š+ˆïƒ|ƒ|Š,ˆïƒ|%ƒ|,‹— …ƒ‹˜ˆïƒŠ ƒŠˆñƒ• ƒ•ˆ+ˆïƒŠƒŠ!„ˆ,ˆïƒŠ2ƒŠ5„ˆ-ˆïƒŠFƒŠI„Iˆ+Iˆ,Iˆ-Iˆ+ˆ,ˆ-ÿ¤@O‚<1‹˜‹˜ˆïƒŠƒŠ!ˆïƒŠ2ƒŠ5ˆïƒŠFƒŠIŠ+ˆïƒŠƒŠŠ,ˆïƒŠ&ƒŠ-‹™ˆïƒŠ:ƒŠA‹š €Óˆ.-†Ã†Ã„‹›†Ã †Ã€Ó ˆ.‹œ  ÔÔ//  €Ôˆ/ƒ ŠŸ&*kƒ„AŒ ˆ0‚ŠŸ\bkƒ„Alƒ†BŽŠ¡‹ŠŸ  €ÔO‚<1‹‹#u Š@Š¡Š@ˆ1ƒ ŠŸ&*Œ ˆ2‚ŠŸ\bŽˆ1ˆ2ˆ1ˆ2ˆ1ˆ2ŠŒŠ¡ŠŒˆ3ƒ ŠŸ&*Œ ˆ4‚ŠŸ\bŽˆ3ˆ4Š¡ˆ5ƒ ŠŸ&*Œ ˆ6‚ŠŸ\bŽIˆ5ˆ6ˆ5ˆ6ЦСЦˆ7ƒ ŠŸ&*Œ ˆ8‚ŠŸ\bŽˆ7ˆ8ˆ7ŠˆŠ¡Šˆˆ9ƒ ŠŸ&*Œ ˆ:‚ŠŸ\bŽˆ9ˆ:Š©СЩˆ;ƒ ŠŸ&*Œ ˆ<‚ŠŸ\bŽˆ;ˆ<ˆ;ˆ<ІСІˆ=ƒ ŠŸ&*Œ ˆ>‚ŠŸ\bŽˆ=ˆ>ˆ=ˆ=ˆ>ЬСЬˆ?ƒ ŠŸ&*Œ ˆ@‚ŠŸ\bŽˆ?ˆ@ˆ?4ˆ@FŠ¡FˆAƒ ŠŸ&*Œ ˆB‚ŠŸ\bŽˆAˆB {€‚€Áˆ/ˆ0€Áˆ/ˆ0€Üˆ/ˆ0‹ž  ÕÕCC  €Õ‹ŸŠŸF F€ÕQ‚C2322`ƒ);‹   •ÖÖCz 9… ƒ7Š@ŠŸN NŠ ‚: ‚:ˆCƒ ŠŸNN„ ˆD-ŠŸN#N%„ˆCˆDˆCˆDˆCˆDÿ¤@O‚<1Š@Š@ƒ ŠŸNN-ŠŸN#N%Š¢ŠŸNN5ŠŸNN"‹¡ŠŸN)N.‹¢ …!ŠûŠüŠŸT TŠ ‚v ‚vˆEƒ ŠŸTT"„ ˆF-ŠŸT%T'„3ˆEˆFˆEˆFÿ¤@O‚<1ŠüŠüƒ ŠŸTT"-ŠŸT%T'TT‹£ …"ƒŠÿŠŸZ ZŠ ‚| ‚|ˆGƒ ŠŸZZ#„ ˆH-ŠŸZ&Z(„=ˆGˆHˆGˆHÿ¤@O‚<1ŠÿŠÿƒ ŠŸZZ#-ŠŸZ&Z(ZZ‹¤ …#‹‹ŠŸ` `Š ‚y ‚yˆIƒ ŠŸ` `$„ ˆJ-ŠŸ`'`)„IˆIˆJˆIˆJÿ¤@O‚<1‹‹ƒ ŠŸ` `$-ŠŸ`'`)``‹¥ …$‹‹ŠŸg gŠ ‚m ‚mˆKƒ ŠŸgg!„ ˆL-ŠŸg"g$„ˆKˆLIˆKˆLÿ¤@O‚<1‹‹ƒ ŠŸgg!-ŠŸg"g$‹¡ŠŸgg‹¦ …%…Ò…ÓŠŸn nŠ ‚ ‚ˆMƒ ŠŸnn"„ ˆN-ŠŸn#n%„ˆMˆN3ˆMˆNÿ¤@O‚<1…Ó…Óƒ ŠŸnn"-ŠŸn#n%‹¡ŠŸnn‹§ …&ƒ…ЊŸu uŠ ‚„ ‚„ˆOƒ ŠŸuu#„ ˆP-ŠŸu$u&„ˆOˆP=ˆOˆPÿ¤@O‚<1…ЅЃ ŠŸuu#-ŠŸu$u&‹¡ŠŸuu‹¨ …'ŠîŠïŠŸ{ {Š ‚7 ‚7ˆQƒ ŠŸ{{#„ ˆR-ŠŸ{${&„ˆQˆRÿ¤@O‚<1ŠïŠïƒ ŠŸ{{#-ŠŸ{${&‹¡ŠŸ{{‹© …(ŠÄŠÅŠŸ€€ €€Š ‚ˆ ‚ˆˆSƒ ŠŸ€€€€„ ˆT-ŠŸ€€€€„ˆSˆTÿ¤Dzƒ¯PO‚<1ŠÅŠÅƒ ŠŸ€€€€-ŠŸ€€€€‹ª …)‹3‹4ŠŸ€‰ €‰Š ‚= ‚=ˆUƒ ŠŸ€‰€‰„ ˆV-ŠŸ€‰-€‰/„ˆUˆUˆVˆVÿ¤@O‚<1‹4‹4ƒ ŠŸ€‰€‰-ŠŸ€‰-€‰/Š¢ŠŸ€‰€‰‹¡ŠŸ€‰€‰#‹« …*‹‹‹ŒŠŸ€ €Š ‚L ‚LˆWƒ ŠŸ€€"„ ˆX-ŠŸ€&€(„ˆYƒŠŸ€,€.„ˆWˆX4ˆYˆWˆX4ˆYÿ¤@O‚<1‹Œ‹Œƒ ŠŸ€€"-ŠŸ€&€(ƒŠŸ€,€.Š;ŠŸ€€‹¡ŠŸ€:€?‹¬ …+‹`‹aŠŸ€— €—Š ‚O ‚OˆZƒ ŠŸ€—€—„ ˆ[-ŠŸ€—#€—%„ˆ\ƒŠŸ€—)€—+„ˆZˆ[4ˆ\ˆZˆ[ˆ\ÿ¤@O‚<1‹a‹aƒ ŠŸ€—€—-ŠŸ€—#€—%ƒŠŸ€—)€—+Š;ŠŸ€—€—‹¡ŠŸ€—7€—<‹­ …,…Å…ÆŠŸ€Ÿ €ŸŠ ‚h ‚hˆ]ƒ ŠŸ€Ÿ€Ÿ„ ˆ^-ŠŸ€Ÿ€Ÿ„ˆ_ ŠŸ€Ÿ€Ÿ#„ˆ]ˆ^ˆ_ˆ_ˆ]ˆ^ˆ_ˆ_ÿ¤@O‚<1…ƅƃ ŠŸ€Ÿ€Ÿ-ŠŸ€Ÿ€Ÿ ŠŸ€Ÿ€Ÿ#ŠŸ€Ÿ'€Ÿ-‹¡ŠŸ€ŸR€ŸWZŠŸ€Ÿh€Ÿm‹® …-……ÊŸ€§ €§Š ‚c ‚cˆ`ƒ ŠŸ€§€§„ ˆa-ŠŸ€§€§„ˆb ŠŸ€§€§„ˆbˆ`ˆaˆbˆbˆ`ˆaˆbÿ¤@O‚<1…ÅÃ ŠŸ€§€§-ŠŸ€§€§ ŠŸ€§€§ŠŸ€§#€§)ZŠŸ€§N€§S‹¡ŠŸ€§^€§c‹¯ ….ƒ„¨ŠŸ€­ €­Š ‚I ‚Iˆcƒ ŠŸ€­€­„ ˆd-ŠŸ€­"€­$„ˆcˆdˆcˆdÿ¤@O‚<1„¨„¨ƒ ŠŸ€­€­-ŠŸ€­"€­$YŠŸ€­€­‹¡ŠŸ€­1€­6‹° …/ƒ„¸ŠŸ€µ €µŠ ‚R ‚Rˆeƒ ŠŸ€µ€µ#„ ˆf-ŠŸ€µ'€µ)„ˆeˆfˆeˆfÿ¤@O‚<1„¸„¸ƒ ŠŸ€µ€µ#-ŠŸ€µ'€µ)ƒŠŸ€µ€µ‹¡ŠŸ€µ6€µ;‹± …0ƒŠ/ŠŸ€¼ €¼Š ‚U ‚Uˆgƒ ŠŸ€¼€¼#„ ˆh-ŠŸ€¼'€¼)„ˆgˆhˆgˆhˆgˆhÿ¤@O‚<1Š/Š/ƒ ŠŸ€¼€¼#-ŠŸ€¼'€¼)ƒŠŸ€¼€¼‹¡ŠŸ€¼6€¼;‹² …1ƒ„¶ŠŸ€Ä €ÄŠ ‚[ ‚[ˆiƒ ŠŸ€Ä€Ä#„ ˆj-ŠŸ€Ä'€Ä)„ˆiˆjˆiˆjÿ¤@O‚<1„¶„¶ƒ ŠŸ€Ä€Ä#-ŠŸ€Ä'€Ä)ƒŠŸ€Ä€Ä‹¡ŠŸ€Ä6€Ä;‹³ …2ƒ „­ŠŸ€Í €ÍŠ ‚` ‚`ˆkƒ ŠŸ€Í€Í„ ˆl-ŠŸ€Í"€Í$„ˆmƒŠŸ€Í(€Í*„ˆkˆlˆmˆkˆlˆkˆmÿ¤@O‚<1„­„­ƒ ŠŸ€Í€Í-ŠŸ€Í"€Í$ƒŠŸ€Í(€Í*ƒ ŠŸ€Í€Í‹¡ŠŸ€Í/€Í4‹´ …3‹µЦŠŸ€Ô €ÔŠ ‚F ‚Fˆnƒ ŠŸ€Ô€Ô!„ ˆo-ŠŸ€Ô4€Ô6„ˆnˆnˆoÿ¤@O‚<1ЦЦƒ ŠŸ€Ô€Ô!-ŠŸ€Ô4€Ô6Š¢ŠŸ€Ô€Ô‹¡ŠŸ€Ô%€Ô*‹¶ …4ƒ Š1ŠŸ€Ý €ÝŠ ‚X ‚Xˆpƒ ŠŸ€Ý"€Ý&„ ˆq-ŠŸ€Ý*€Ý,„ˆpˆqˆpˆqˆpˆqˆpˆqÿ¤@O‚<1Š1Š1ƒ ŠŸ€Ý"€Ý&-ŠŸ€Ý*€Ý,ƒŠŸ€Ý€Ý ‹¡ŠŸ€Ý9€Ý>‹· …5ŠóІŠŸ€ä €äŠ ‚C ‚Cˆrƒ ŠŸ€ä€ä„ ˆs-ŠŸ€ä/€ä1„ˆrˆrˆsˆrˆsÿ¤@O‚<1ІІƒ ŠŸ€ä€ä-ŠŸ€ä/€ä1Š¢ŠŸ€ä€ä‹¡ŠŸ€ä €ä%‹¸ …6‹†ЬŠŸ€ì €ìŠ ‚@ ‚@ˆtƒ ŠŸ€ì€ì„ ˆu-ŠŸ€ì0€ì2„ˆtˆtˆu4ˆuÿ¤@O‚<1ЬЬƒ ŠŸ€ì€ì-ŠŸ€ì0€ì2Š¢ŠŸ€ì€ì‹¡ŠŸ€ì!€ì&‹¹ …7‹º‹»ŠŸ€õ €õŠ ‚p ‚pˆvƒ ŠŸ€õ €õ$„ ˆw-ŠŸ€õ(€õ*„ˆvˆwˆvˆwˆvÿ¤@O‚<1‹»‹»ƒ ŠŸ€õ €õ$-ŠŸ€õ(€õ*ƒŠŸ€õ€õ‹¡ŠŸ€õ7€õ<‹¼ …8‹½‹¾ŠŸ€ý €ýŠ ‚s ‚sˆxƒ ŠŸ€ý#€ý'„ ˆy-ŠŸ€ý+€ý-„ˆxˆyˆxˆy4ˆxÿ¤@O‚<1‹¾‹¾ƒ ŠŸ€ý#€ý'-ŠŸ€ý+€ý-ƒŠŸ€ý€ý!‹¡ŠŸ€ý:€ý?‹¿ €Öˆz-†˜†˜ŽŠ®‹À†˜ †˜ €Örƒ•HvƒžLwƒ MO‚<1‹À‹À3ˆzŠÅ‹Á†™ †™ ˆz‹A†š†š3ˆz‹Â†š†š!3ˆzй‹Ã†š †š Š®€¿ˆ{-†˜†˜Žˆ{ Š®€¿ˆ|-†˜†˜Žˆ|ˆ|Š®€¿ˆ}-†˜†˜Žˆ} Š®€²ˆ~-†˜†˜Žˆ~Š®€²ˆ-†˜†˜ŽˆŠ®Fˆ€-†˜†˜Žˆ€ НЮНˆ-†˜†˜Ž3ˆŠ±Юбˆ‚-†˜†˜Žˆ‚ŠŒŠ®ŠŒˆƒ-†˜†˜ŽˆƒŠ´Юдˆ„-†˜†˜Žˆ„ˆ„жЮжˆ…-†˜†˜Žˆ…3ˆ…Š©ЮЩˆ†-†˜†˜Žˆ†ˆ†Š¹Юйˆ‡-†˜†˜Žˆ‡3ˆ‡3ˆ‡€‡ˆz{€‚ˆz‹Ä  ×׈ˆ99€×‹Å‹Æ €×Q‚C2322`ƒ);‹Ç  *ØØˆê9w>…9‹ ‹‹Æ ‹È: :ˆˆ-‹Æ„3ˆˆ3ˆˆ3ˆˆÿ¤@O‚<1‹‹-‹Æ†m‹Æ†n‹Æ%*‹É …:‹‹‹Æ  ‹Èƒƒˆ‰-‹Æ!)!*„ˆ‰zˆ‰ˆ‰ˆ‰ˆ‰ˆ0ˆ‰ˆ‰ˆ‰€ªˆ‰3ˆ‰ˆ‰ÿ„@O‚<1‹‹-‹Æ!)!*‹Ê‹Æ  #‹Ë …;‹‹‹Æ--‹È††ˆŠ-‹Æ---/„ˆ‹ƒ‹Æ.).*„ˆ‹zˆ‹ˆ‹ˆ‹ˆ‹ˆ0ˆ‹ˆ‹ˆ‹€ªˆ‹ˆŠˆ‹3ˆŠˆ‹ÿ„@O‚<1‹‹-‹Æ---/ƒ‹Æ.).*ƒ!‹Æ-!-+‹Ê‹Æ-:->‹Ì …<Š9Š:‹Æ9 9‹ÈM MˆŒ-‹Æ99„ˆƒ‹Æ9#9%„ˆŒ4ˆ3ˆŒ3ˆÿ¤@O‚<1Š:Š:-‹Æ99ƒ‹Æ9#9%Š;‹Æ99‹Ê‹Æ9195‹Í …=ƒ„±‹Æ@ @‹È‰ ‰ˆŽ-‹Æ@@ „ˆƒ‹Æ@$@&„ˆŽ3ˆ3ˆŽ3ˆÿ¤@O‚<1„±„±-‹Æ@@ ƒ‹Æ@$@&ƒ ‹Æ@@‹Ê‹Æ@0@4‹Î …>ƒ„£‹ÆF F‹È ˆ-‹ÆFF „I3ˆ3ˆÿ¤@O‚<1„£„£-‹ÆFF ‹Ï‹ÆFF‹Ð …?ŠÄŠÅ‹ÆK K‹È. .ˆ‘-‹ÆKK„3ˆ‘ÿ¤Dzƒ¯PO‚<1ŠÅŠÅ-‹ÆKK‹Ñ …@ƒ„¸‹ÆV V‹È ˆ’-‹ÆVV!„ˆ’3ˆ’ÿ¤@O‚<1„¸„¸-‹ÆVV!ƒ‹ÆVV‹Ê‹ÆV.V2‹Ò …A‹/‹0‹Æe e‹Èˆ“‹Æe e#„ˆ”‹Æe'e*„ˆ“ˆ”3ˆ“3ˆ”ÿ¤@O‚<1‹0‹0‹Æe e#‹Æe'e*ƒ‹Æee†m‹Æe7e<†n‹ÆeIeN‹Ó …B‹3‹4‹Æo o‹È""ˆ•-‹Æoo„ˆ•3ˆ•ˆ•ÿ¤@O‚<1‹4‹4-‹Æooƒ‹Æoo‹Ê‹Æo,o0‹Ô …C‹6‹7‹Æz z‹Èg gˆ–-‹Æz"z$„ˆ–3ˆ–ÿ¤@O‚<1‹7‹7-‹Æz"z$ƒ‹Æzz ‹Ê‹Æz1z5‹Õ …DƒŠ/‹Æ€‚ €‚‹È: :ˆ—-‹Æ€‚€‚!„ˆ—3ˆ—3ˆ—ÿ¤@O‚<1Š/Š/-‹Æ€‚€‚!ƒ‹Æ€‚€‚‹Ê‹Æ€‚.€‚2‹Ö …E……Ëƀ €‹È€‹ €‹ˆ˜-‹Æ€€„ˆ™ ‹Æ€€„ˆ™ˆ˜ˆ™ˆ™3ˆ˜ˆ™ÿ¤@O‚<1…Ã…Ã-‹Æ€€ ‹Æ€€‹Æ€€$Z‹Æ€A€F‹Ê‹Æ€Q€U‹× …F‹Ø‹Ù‹Æ€› €›‹È€¦ €¦ˆš‹Æ€›€›„ˆ›‹Æ€›€›„ˆœ ‹Æ€›€› „ˆœˆšˆ›ˆœˆœ3ˆš3ˆ›ˆœÿ¤@O‚<1‹Ù‹Ù‹Æ€›€›‹Æ€›€› ‹Æ€›€› ‹Æ€›$€›*Z‹Æ€›O€›T†m‹Æ€›_€›d†n‹Æ€›q€›v‹Ú …G…ŅƋƀ¥ €¥‹È€· €·ˆ-‹Æ€¥€¥„ˆž ‹Æ€¥€¥„ˆˆžˆž3ˆˆžˆžÿ¤@O‚<1…Æ…Æ-‹Æ€¥€¥ ‹Æ€¥€¥‹Æ€¥"€¥(‹Ê‹Æ€¥E€¥IZ‹Æ€¥U€¥Z‹Û …H‹Ü‹Ý‹Æ€± €±‹È€ò€òˆŸ‹Æ€±€±„ˆ ‹Æ€±€±„ˆ¡ ‹Æ€±€±$„ˆŸˆ ˆ¡ˆ¡3ˆŸ3ˆ ˆ¡ˆ¡ÿ¤@O‚<1‹Ý‹Ý‹Æ€±€±‹Æ€±€± ‹Æ€±€±$‹Æ€±(€±.†m‹Æ€±S€±X†n‹Æ€±e€±jZ‹Æ€±w€±|‹Þ …Iƒ„¶‹Æ€¼ €¼‹È ˆ¢-‹Æ€¼€¼!„ˆ¢3ˆ¢ÿ¤@O‚<1„¶„¶-‹Æ€¼€¼!ƒ‹Æ€¼€¼‹Ê‹Æ€¼.€¼2‹ß …J‹;‹<‹Æ€Ë €Ë‹È ˆ£‹Æ€Ë €Ë#„ˆ¤‹Æ€Ë'€Ë*„ˆ£ˆ¤3ˆ£3ˆ¤ÿ¤@O‚<1‹<‹<‹Æ€Ë €Ë#‹Æ€Ë'€Ë*ƒ‹Æ€Ë€Ë†m‹Æ€Ë7€Ë<†n‹Æ€ËI€ËN‹à …KŠº‹A‹Æ€Ô €Ô‹È1 1ˆ¥-‹Æ€Ô€Ô„3ˆ¥ˆ¥ÿ¤@O‚<1‹A‹A-‹Æ€Ô€Ô‹Ê‹Æ€Ô€Ô‹á …Lƒ„³‹Æ€Û €Û‹ÈS Sˆ¦-‹Æ€Û4€Û6„ˆ¦3ˆ¦ÿ¤@O‚<1„³„³-‹Æ€Û4€Û6„½‹Æ€Û€Û„´‹Æ€Û €Û+‹â …MŠîŠï‹Æ€á €á‹È7 7ˆ§-‹Æ€á€á„3ˆ§ÿ¤@O‚<1ŠïŠï-‹Æ€á€á‹Ê‹Æ€á€á‹ã …Nƒ„¨‹Æ€ç €ç‹È% %ˆ¨-‹Æ€ç€ç„ˆ¨3ˆ¨ÿ¤@O‚<1„¨„¨-‹Æ€ç€çY‹Æ€ç€ç‹Ê‹Æ€ç)€ç-‹ä …O‹J‹K‹Æ€ï €ï‹È^ ^ˆ©‹Æ€ï€ï„ˆª‹Æ€ï"€ï%„ˆ©ˆª3ˆ©3ˆªÿ¤@O‚<1‹K‹K‹Æ€ï€ï‹Æ€ï"€ï%Y‹Æ€ï€ï†m‹Æ€ï2€ï7†n‹Æ€ïD€ïI‹å …Pƒ„«‹Æ€ö €ö‹ÈP Pˆ«-‹Æ€ö"€ö$„ˆ«3ˆ«ÿ¤@O‚<1„«„«-‹Æ€ö"€ö$Y‹Æ€ö€ö‹Ê‹Æ€ö1€ö5‹æ …Q‹ç‹è‹Æ€ÿ €ÿ‹Èh hˆ¬‹Æ€ÿ#€ÿ&„ˆ­‹Æ€ÿ*€ÿ-„ˆ¬ˆ­3ˆ¬3ˆ­ÿ¤@O‚<1‹è‹è‹Æ€ÿ#€ÿ&‹Æ€ÿ*€ÿ-Y‹Æ€ÿ€ÿ†m‹Æ€ÿ:€ÿ?†n‹Æ€ÿL€ÿQ‹é …R„½„¾‹Æ ‹È ˆ®-‹Æ„3ˆ®ÿ¤@O‚<1„¾„¾-‹Æ‹Ê‹Æ‹ê …Sƒ „­‹Æ ‹È ˆ¯-‹Æ  „ˆ°ƒ‹Æ "„ˆ¯ˆ°3ˆ¯3ˆ°ÿ¤@O‚<1„­„­-‹Æ  ƒ‹Æ "ƒ ‹Æ  ‹Ê‹Æ ' +‹ë …Tƒ ‹O‹Æ ‹È€ˆ €ˆˆ±‹Æ„ˆ²‹Æ"%„ˆ³ƒ‹Æ)+„ˆ±ˆ²ˆ³3ˆ±3ˆ²3ˆ³ÿ¤@O‚<1‹O‹O‹Æ‹Æ"%ƒ‹Æ)+ƒ ‹Æ†m‹Æ05†n‹ÆBG‹ì …U‹í‹î‹Æ ‹Èx xˆ´‹Æ  „ˆµ‹Æ " %„ˆ¶‹Æ ) ,„ˆ·ƒ‹Æ 0 2„ˆ´ˆµˆ¶ˆ·3ˆ´3ˆµ3ˆ¶3ˆ·ÿ¤@O‚<1‹î‹î‹Æ  ‹Æ " %‹Æ ) ,ƒ‹Æ 0 2ƒ ‹Æ  †m‹Æ 7 <†n‹Æ I N‹ï‹Æ [ `‹ð …Vƒ „¯‹Æ) )‹È" "ˆ¸-‹Æ)")$„ˆ¹ƒ‹Æ)()*„ˆ¸ˆ¹3ˆ¸3ˆ¹ÿ¤@O‚<1„¯„¯-‹Æ)")$ƒ‹Æ)()*ƒ ‹Æ))‹Ê‹Æ)/)3‹ñ …W‹ò‹ó‹Æ1 1‹È€ƒ €ƒˆº‹Æ1#1&„ˆ»‹Æ1*1-„ˆ¼ƒ‹Æ1113„ˆºˆ»ˆ¼3ˆº3ˆ»3ˆ¼ÿ¤@O‚<1‹ó‹ó‹Æ1#1&‹Æ1*1-ƒ‹Æ1113ƒ ‹Æ11†m‹Æ181=†n‹Æ1J1O‹ô …XƒY†B‹Æ::‹Èwwˆ½-‹Æ:5:7„ 3ˆ½ˆ½ÿ„@O‚<1†B†B-‹Æ:5:7‹Ê‹Æ::!‹õ …Y‹S‹T‹ÆDD‹Èzzˆ¾-‹ÆD)D+„ˆ¿ƒ‹ÆDNDP„ ˆ¾ˆ¿3ˆ¾ˆ¾ÿ„@O‚<1‹T‹T-‹ÆD)D+ƒ‹ÆDNDPƒ!‹ÆDD'‹Ê‹ÆD6D:‹ö …ZƒX†D‹ÆMM‹È}}ˆÀ-‹ÆM5M7„ 3ˆÀˆÀÿ„@O‚<1†D†D-‹ÆM5M7‹Ê‹ÆMM!‹÷ …[‹W‹X‹ÆWW‹È€€ˆÁ-‹ÆW)W+„ˆÂƒ‹ÆWNWP„ ˆÁˆÂ3ˆÁˆÁÿ„@O‚<1‹X‹X-‹ÆW)W+ƒ‹ÆWNWPƒ!‹ÆWW'‹Ê‹ÆW6W:‹ø …\‹Z‹[‹Æ^ ^‹È==ˆÃ-‹Æ^^„3ˆÃˆÃÿ¤@O‚<1‹[‹[-‹Æ^^‹Ê‹Æ^^m‹Æ^!^&‹ù …]ƒŠÿ‹Æd d‹È( (ˆÄ-‹Ædd„=ˆÄ3ˆÄÿ¤@O‚<1ŠÿŠÿ-‹Æddƒ"‹Ædd‹ú …^‹‹‹Æj j‹Èa aˆÅ-‹Æjj „IˆÅ3ˆÅÿ¤@O‚<1‹‹-‹Æjj n‹Æjj‹û …_ƒ Š1‹Æt t‹È= =ˆÆ-‹Æt"t$„ˆÆ3ˆÆ3ˆÆ3ˆÆÿ¤@O‚<1Š1Š1-‹Æt"t$ƒ‹Ætt ‹Ê‹Æt1t5‹ü …`‹`‹a‹Æ~ ~‹È11ˆÇ-‹Æ~~„ˆÈƒ‹Æ~!~#„ˆÇ4ˆÈ3ˆÇˆÈÿ¤@O‚<1‹a‹a-‹Æ~~ƒ‹Æ~!~#Š;‹Æ~~‹Ê‹Æ~/~3‹ý …aƒ‹þ‹Æ† †‹ÈŒ ŒˆÉ-‹Æ†4†6„3ˆÉ3ˆÉÿ¤@O‚<1‹þ‹þ-‹Æ†4†6ƒ‹Æ††‹Ê‹Æ†/†3‹ÿ …b‹f‹g‹Æ” ”‹È€— €—ˆÊ-‹Æ””!„ˆÊˆÊˆÊ3ˆÊˆÊÿ¤@O‚<1‹g‹g-‹Æ””!‹h‹Æ””‹Ê‹Æ”2”6Œ …cŒŒ‹Æ   ‹È€Ç €ÇˆË-‹Æ # %„ˆËˆËˆË3ˆËˆËÿ¤@O‚<1ŒŒ-‹Æ # %‹h‹Æ  !‹Ê‹Æ 6 :Œ …d„º„»‹Æ§ §‹ÈY YˆÌ-‹Æ§,§.„ˆÌ3ˆÌÿ¤@O‚<1„»„»-‹Æ§,§.‹Æ§§Œ‹Æ§$§+Œ …eƒŒ‹Æ­ ­‹È ˆÍ-‹Æ­­„3ˆÍ3ˆÍÿ¤@O‚<1ŒŒ-‹Æ­­‹Ê‹Æ­­Œ …fŠ=‰ò‹Æ¸ ¸‹È€ €ˆÎ-‹Æ¸¸„ˆÏ ‹Æ¸¸„ˆÏˆÎˆÏˆÏ3ˆÎ3ˆÏÿ¤@O‚<1‰ò‰ò-‹Æ¸¸ ‹Æ¸¸‹Æ¸¸%Z‹Æ¸B¸G‹Ê‹Æ¸R¸VŒ …gŒ Œ ‹ÆÀ À‹È€Ù €ÙˆÐ-‹ÆÀÀ„ˆÑ ‹ÆÀÀ„ˆÐˆÑˆÑ3ˆÐˆÑ3ˆÑÿ¤@O‚<1Œ Œ -‹ÆÀÀ ‹ÆÀÀ‹ÆÀ"À(‹Ê‹ÆÀEÀIZ‹ÆÀUÀZŒ  …hƒŒ ‹ÆÉ É‹ÈL LˆÒ-‹ÆÉ É"„ˆÒˆÒ3ˆÒ3ˆÒÿ¤@O‚<1Œ Œ -‹ÆÉ É"€¼‹ÆÉɋʋÆÉ4É8Œ  …i‹u‹v‹ÆÒ Ò‹ÈO OˆÓ-‹ÆÒ Ò"„ˆÔƒ ‹ÆÒLÒP„ ˆÓˆÔ3ˆÓ3ˆÓÿ¤@O‚<1‹v‹v-‹ÆÒ Ò"ƒ ‹ÆÒLÒPƒ!‹ÆÒÒ‹Ê‹ÆÒ/Ò3Œ …j‹r‹s‹ÆÚ Ú‹ÈX XˆÕ-‹ÆÚ/Ú1„ 3ˆÕ3ˆÕÿ¤@O‚<1‹s‹s-‹ÆÚ/Ú1‹Ê‹ÆÚÚŒ …k‹x‹y‹Æàà‹ÈqqˆÖ-‹Æá)á*„ˆÖzˆÖˆÖˆÖˆÖ€ªˆÖ3ˆÖˆÖÿ„@O‚<1‹y‹y-‹Æá)á*‹Ê‹ÆààŒ …l‹{‹|‹Æéé‹Èttˆ×-‹Æé'é)„ˆØƒ‹Æê)ê*„ˆØzˆØˆØˆØˆØ€ªˆØˆ×ˆØ3ˆ×ˆØÿ„@O‚<1‹|‹|-‹Æé'é)ƒ‹Æê)ê*ƒ!‹Æéé%‹Ê‹Æé4é8Œ …mŠ»‹Â‹Æî î‹È4 4ˆÙ-‹Æîî„3ˆÙ3ˆÙÿ¤@O‚<1‹Â‹Â-‹Æîî‹Ê‹Æîî …nƒ…ЋÆô ô‹È+ +ˆÚ-‹Æôô„3ˆÚ=ˆÚÿ¤@O‚<1…Ð…Ð-‹Æôô‹Ê‹ÆôôŒ …o‹‹‹Æú ú‹Èd dˆÛ-‹Æúú„3ˆÛIˆÛÿ¤@O‚<1‹‹-‹Æúú‹Ê‹ÆúúŒ …p‹‹‹Œ‹Æ‚ ‚‹È((ˆÜ-‹Æ‚‚ „ˆÝƒ‹Æ‚$‚&„ˆÜ4ˆÝ3ˆÜ4ˆÝÿ¤@O‚<1‹Œ‹Œ-‹Æ‚‚ ƒ‹Æ‚$‚&Š;‹Æ‚‚‹Ê‹Æ‚2‚6Œ …q‹†Ь‹Æ‚ ‚ ‹È%%ˆÞ-‹Æ‚ ‚ "„ˆÞ3ˆÞ4ˆÞÿ¤@O‚<1ЬЬ-‹Æ‚ ‚ "ƒ‹Æ‚ ‚ ‹Ê‹Æ‚ /‚ 3Œ …r‹ˆ‹‰‹Æ‚ ‚‹Èl lˆß-‹Æ‚%‚'„ˆß3ˆß4ÿ¤@O‚<1‹‰‹‰-‹Æ‚%‚'ƒ‹Æ‚‚#‹Ê‹Æ‚4‚8Œ …sƒŒ‹Æ‚ ‚‹È@ @ˆà‹Æ‚‚„ˆá‹Æ‚‚"„3ˆàˆá3ˆà3ˆáÿ¤@O‚<1ŒŒ‹Æ‚‚‹Æ‚‚"‹Ê‹Æ‚‚Œ …tƒŒ‹Æ‚" ‚"‹ÈC Cˆâ‹Æ‚"‚"„ˆã‹Æ‚" ‚"#„ˆä‹Æ‚"&‚")„3ˆâˆãˆä3ˆâ3ˆã3ˆäÿ¤@O‚<1ŒŒ‹Æ‚"‚"‹Æ‚" ‚"#‹Æ‚"&‚")‹Ê‹Æ‚"‚"Œ …uƒ‹–‹Æ‚) ‚)‹ÈF Fˆå‹Æ‚)‚)„ˆæ‹Æ‚))‚),„3ˆå3ˆæ3ˆåˆæÿ¤@O‚<1‹–‹–‹Æ‚)‚)‹Æ‚))‚),†m‹Æ‚)‚)†n‹Æ‚)#‚)(Œ …vƒ‹˜‹Æ‚1 ‚1‹ÈI Iˆç‹Æ‚1‚1„ˆè‹Æ‚1*‚1-„ˆé‹Æ‚1<‚1?„3ˆç3ˆè3ˆé3ˆçˆèˆéÿ¤@O‚<1‹˜‹˜‹Æ‚1‚1‹Æ‚1*‚1-‹Æ‚1<‚1?†m‹Æ‚1‚1†n‹Æ‚1$‚1)‹ï‹Æ‚16‚1;Œ €ØŒŒ €ØŒ  _ÙÙêîw{…wŒ ŒŒ!ˆê-Œ „ €Ëˆêÿ„D-Œ Œ" …xŒ#Œ! !Œ! ˆë-Œ!! „ €Ëˆëÿ¤@-Œ!! †«Œ!$!) …yŒ$Œ( (Œ! ˆì-Œ((„€Ëˆìÿ¤D-Œ((Œ% …zŒ&Œ00 Œ!!! ˆí-Œ0!0#„ˆíˆíˆí€Ëˆíÿ„@-Œ0!0#Œ'Œ0'0-Œ(Œ0=0EŒ) €ÙŒ*Œ €ÙŒ+  ¬ÚÚîð{}…{Œ Œ Œ!+ +ˆî-Œ„ €Êˆîÿ¤D-ŒŒ,…|Œ-Œ Œ!. .ˆï-Œ%'„ˆïˆï€Êˆïÿ¤@-Œ%'€¼Œ#Œ.€ÚŒ/Œ0 €ÚQ‚C2322`ƒ);Œ1  r-ÛÛðV }ÁD…}‹ ‹Œ0 Œ2g gˆð-Œ0„=ˆð=ˆð=ˆðÿ¤@O‚<1‹‹-Œ0Œ3Œ0Œ4Œ0#)Œ5…~‹‹Œ0Œ2‚p‚pˆñ-Œ0'(„ˆñzˆñˆñˆñˆñˆ0ˆñˆñˆñ€ªˆñ=ˆñˆñÿ„@O‚<1‹‹-Œ0'(ƒ"Œ0$Œ6…‹‹Œ0))Œ2‚u‚uˆò-Œ0)-)/„ˆóƒŒ0***+„ˆózˆóˆóˆóˆóˆ0ˆóˆóˆó€ªˆóˆòˆó=ˆòˆóÿ„@O‚<1‹‹-Œ0)-)/ƒŒ0***+ƒ!Œ0)!)+ƒ"Œ0):)?Œ7…€Œ8Œ9Œ05 5Œ2: :ˆô-Œ055„=ˆô=ˆôÿ¤@O‚<1Œ9Œ9-Œ055nŒ055Œ:Œ05!5,ºŒ0545:Œ;Œ05C5NŒ05V5[Œ<…ƒ„±Œ0< <Œ2^ ^ˆõ-Œ0<Œ0BBŒ?…ƒŒ@ŒAŒ0H HŒ2r rˆø-Œ0HH„=ˆø=ˆøÿ¤@O‚<1ŒAŒA-Œ0HHƒ"Œ0HHŒB…„‰ŠLŒ0O OŒ2( (ˆù-Œ0O'O)„ˆù=ˆùÿ¤@O‚<1ŠLŠL-Œ0O'O)Œ0OO5Œ0O!O&ŒC……‹‹‹ŒŒ0X XŒ2 ˆú-Œ0XX „ˆûƒŒ0X$X&„ˆú4ˆû=ˆú4ˆûÿ¤@O‚<1‹Œ‹Œ-Œ0XX ƒŒ0X$X&Š;Œ0XXƒ"Œ0X2X7ŒD…†ŒEŒFŒ0` `Œ2‚ ‚ˆü-Œ0``„=ˆüˆüÿ¤@O‚<1ŒFŒF-Œ0``ºŒ0``Œ;Œ0`!`,Œ0`4`95Œ0`A`FŒG…‡‹`‹aŒ0k kŒ2€÷ €÷ˆý-Œ0kk„ˆþƒŒ0k!k#„ˆý4ˆþ=ˆýˆþÿ¤@O‚<1‹a‹a-Œ0kkƒŒ0k!k#Š;Œ0kkƒ"Œ0k/k4ŒH…ˆŠ9Š:Œ0t tŒ2 ˆÿ-Œ0tt„‰ƒŒ0t#t%„ˆÿ4‰=ˆÿ=‰ÿ¤@O‚<1Š:Š:-Œ0ttƒŒ0t#t%Š;Œ0ttƒ"Œ0t1t6ŒI…‰ŠÄŠÅŒ0y yŒ26 6‰-Œ0yy„=‰ÿ¤Dzƒ¯PO‚<1ŠÅŠÅ-Œ0yyŒJ…Šƒ„¸Œ0€„ €„Œ2€Õ €Õ‰-Œ0€„€„!„‰=‰ÿ¤@O‚<1„¸„¸-Œ0€„€„!ƒŒ0€„€„ƒ"Œ0€„.€„3ŒK…‹‹/‹0Œ0€’ €’Œ2€Ü €Ü‰Œ0€’ €’#„‰Œ0€’'€’*„‰‰=‰=‰ÿ¤@O‚<1‹0‹0Œ0€’ €’#Œ0€’'€’*ƒŒ0€’€’Œ3Œ0€’7€’=Œ4Œ0€’G€’MŒL…ŒƒŠ/Œ0€š €šŒ2 ‰-Œ0€š€š!„‰=‰=‰ÿ¤@O‚<1Š/Š/-Œ0€š€š!ƒŒ0€š€šƒ"Œ0€š.€š3ŒM…‹3‹4Œ0€¤ €¤Œ2* *‰-Œ0€¤€¤„‰=‰‰ÿ¤@O‚<1‹4‹4-Œ0€¤€¤ƒŒ0€¤€¤ƒ"Œ0€¤,€¤1ŒN…Ž‹6‹7Œ0€¯ €¯Œ2‚ ‚‰-Œ0€¯"€¯$„‰=‰ÿ¤@O‚<1‹7‹7-Œ0€¯"€¯$ƒŒ0€¯€¯ ƒ"Œ0€¯1€¯6ŒO…ƒ„¶Œ0€º €ºŒ2€æ €æ‰-Œ0€º€º!„‰=‰ÿ¤@O‚<1„¶„¶-Œ0€º€º!ƒŒ0€º€ºƒ"Œ0€º.€º3ŒP…‹;‹<Œ0€Ê €ÊŒ2€í €í‰ Œ0€Ê €Ê#„‰ Œ0€Ê'€Ê*„‰ ‰ =‰ =‰ ÿ¤@O‚<1‹<‹<Œ0€Ê €Ê#Œ0€Ê'€Ê*ƒŒ0€Ê€ÊŒ3Œ0€Ê7€Ê=Œ4Œ0€ÊG€ÊMŒQ…‘…Â…ÃŒ0€Ô €ÔŒ2u u‰ -Œ0€Ô€Ô„‰ Œ0€Ô€Ô„‰ ‰ ‰ ‰ =‰ ‰ ÿ¤@O‚<1…Ã…Ã-Œ0€Ô€Ô Œ0€Ô€ÔŒ0€Ô€Ô$ZŒ0€ÔA€ÔFƒ"Œ0€ÔQ€ÔVŒR…’…Å…ÆŒ0€Þ €ÞŒ2 ‰ -Œ0€Þ€Þ„‰ Œ0€Þ€Þ„‰ ‰‰=‰ ‰‰ÿ¤@O‚<1…Æ…Æ-Œ0€Þ€Þ Œ0€Þ€ÞŒ0€Þ"€Þ(ƒ"Œ0€ÞE€ÞJZŒ0€ÞS€ÞXŒS…“‹Ø‹ÙŒ0€ì €ìŒ2– –‰Œ0€ì€ì„‰Œ0€ì€ì„‰ Œ0€ì€ì „‰‰‰‰‰=‰=‰‰ÿ¤@O‚<1‹Ù‹ÙŒ0€ì€ìŒ0€ì€ì Œ0€ì€ì Œ0€ì%€ì+ZŒ0€ìP€ìUŒ3Œ0€ì`€ìfŒ4Œ0€ìp€ìvŒT…”‹Ü‹ÝŒ0€ù €ùŒ2РЉŒ0€ù€ù„‰Œ0€ù€ù„‰ Œ0€ù€ù$„‰‰‰‰=‰=‰‰‰ÿ¤@O‚<1‹Ý‹ÝŒ0€ù€ùŒ0€ù€ù Œ0€ù€ù$Œ0€ù(€ù.Œ3Œ0€ùS€ùYŒ4Œ0€ùc€ùiZŒ0€ùs€ùxŒU…•ƒ:‹[Œ0 Œ2‚‡ ‚‡‰-Œ0„=‰‰ÿ¤@O‚<1‹[‹[-Œ0ƒ"Œ0mŒ0$ŒV…–ƒ„³Œ0Œ2  ‰-Œ0:<„‰=‰ÿ„@O‚<1„³„³-Œ0:<Œ0„´Œ0&1ŒW…—ŒXŒYŒ0 Œ2# #‰-Œ0 % '„=‰ÿ¤@O‚<1ŒYŒY-Œ0 % 'Œ0  ŒZ…˜ŠîŠïŒ0 Œ21 1‰-Œ0„=‰ÿ¤@O‚<1ŠïŠï-Œ0ƒ"Œ0Œ[…™ƒ„¨Œ0Œ2€‡€‡‰-Œ0!#„‰=‰ÿ„@O‚<1„¨„¨-Œ0!#YŒ0ƒ"Œ005Œ\…š‹J‹KŒ0# #Œ2€— €—‰Œ0##„‰Œ0#"#%„‰‰=‰=‰ÿ¤@O‚<1‹K‹KŒ0##Œ0#"#%YŒ0##Œ3Œ0#2#8Œ4Œ0#B#HŒ]…›ƒ„«Œ0* *Œ2€¹ €¹‰-Œ0*"*$„‰=‰ÿ¤@O‚<1„«„«-Œ0*"*$YŒ0**ƒ"Œ0*1*6Œ^…œ‹ç‹èŒ04 4Œ2€Á €Á‰Œ04#4&„‰Œ04*4-„‰‰=‰=‰ÿ¤@O‚<1‹è‹èŒ04#4&Œ04*4-YŒ044Œ3Œ04:4@Œ4Œ04J4PŒ_…„½„¾Œ0: :Œ2 ‰-Œ0::„=‰ÿ¤@O‚<1„¾„¾-Œ0::ƒ"Œ0::Œ`…žƒ „­Œ0BBŒ2€Ž€Ž‰ -Œ0B!B#„‰!ƒŒ0B'B)„‰ ‰!=‰ =‰!ÿ„@O‚<1„­„­-Œ0B!B#ƒŒ0B'B)ƒ Œ0BBƒ"Œ0B.B3Œa…Ÿƒ ‹OŒ0N NŒ2€¡ €¡‰"Œ0NN„‰#Œ0N"N%„‰$ƒŒ0N)N+„‰"‰#‰$=‰"=‰#=‰$ÿ¤@O‚<1‹O‹OŒ0NNŒ0N"N%ƒŒ0N)N+ƒ Œ0NNŒ3Œ0N0N6Œ4Œ0N@NFŒb… ‹ò‹óŒ0Z ZŒ2€­ €­‰%Œ0Z#Z&„‰&Œ0Z*Z-„‰'ƒŒ0Z1Z3„‰%‰&‰'=‰%=‰&=‰'ÿ¤@O‚<1‹ó‹óŒ0Z#Z&Œ0Z*Z-ƒŒ0Z1Z3ƒ Œ0ZZŒ3Œ0Z8Z>Œ4Œ0ZHZNŒc…¡ƒ „¯Œ0c cŒ2€Ë €Ë‰(-Œ0c"c$„‰)ƒŒ0c(c*„‰(‰)=‰(=‰)ÿ¤@O‚<1„¯„¯-Œ0c"c$ƒŒ0c(c*ƒ Œ0ccƒ"Œ0c/c4Œd…¢ƒY†BŒ0llŒ2‚W‚W‰*-Œ0l4l6„ =‰*‰*ÿ„@O‚<1†B†B-Œ0l4l6ƒ"Œ0ll"Œe…£‹S‹TŒ0vvŒ2‚b‚b‰+-Œ0v(v*„‰,ƒŒ0vKvM„ ‰+‰,=‰+‰+ÿ„@O‚<1‹T‹T-Œ0v(v*ƒŒ0vKvMƒ!Œ0vv&ƒ"Œ0v5v:Œf…¤ƒX†DŒ0Œ2‚>‚>‰--Œ046„ =‰-‰-ÿ„@O‚<1†D†D-Œ046ƒ"Œ0"Œg…¥‹W‹XŒ0‰‰Œ2‚I‚I‰.-Œ0‰(‰*„‰/ƒŒ0‰K‰M„ ‰.‰/=‰.‰.ÿ„@O‚<1‹X‹X-Œ0‰(‰*ƒŒ0‰K‰Mƒ!Œ0‰‰&ƒ"Œ0‰5‰:Œh…¦ŠûŠüŒ0 Œ2€ €‰0-Œ0„3‰0=‰0ÿ¤@O‚<1ŠüŠü-Œ0‹ÊŒ0Œi…§‹‹Œ0• •Œ2‚ ‚‰1-Œ0•• „I‰1=‰1ÿ¤@O‚<1‹‹-Œ0•• nŒ0••Œj…¨ƒ Š1Œ0Ÿ ŸŒ2 ‰2-Œ0Ÿ"Ÿ$„‰2=‰2=‰2=‰2ÿ¤@O‚<1Š1Š1-Œ0Ÿ"Ÿ$ƒŒ0ŸŸ ƒ"Œ0Ÿ1Ÿ6Œk…©ƒ‹þŒ0§ §Œ2‚) ‚)‰3-Œ0§5§7„=‰3=‰3ÿ¤@O‚<1‹þ‹þ-Œ0§5§7ƒŒ0§§ƒ"Œ0§/§4Œl…ª‹f‹gŒ0² ²Œ2Ë Ë‰4-Œ0²²!„‰4‰4‰4=‰4‰4ÿ¤@O‚<1‹g‹g-Œ0²²!‹hŒ0²²ƒ"Œ0²2²7Œm…«ŒŒŒ0½ ½Œ2Ø Ø‰5-Œ0½#½%„‰5‰5‰5=‰5‰5ÿ¤@O‚<1ŒŒ-Œ0½#½%‹hŒ0½½!ƒ"Œ0½6½;Œn…¬ƒŒŒ0à ÃŒ2l l‰6-Œ0ÃÄ=‰6=‰6ÿ¤@O‚<1ŒŒ-Œ0ÃÃ"Œ0ÃÃŒo…­Š=‰òŒ0Ë ËŒ2¿ ¿‰7-Œ0ËË„‰8 Œ0ËË„‰8‰7‰8‰8=‰7=‰8ÿ¤@O‚<1‰ò‰ò-Œ0ËË Œ0ËËŒ0ËË$ZŒ0ËAËFƒ"Œ0ËQËVŒp…®Œ Œ Œ0Ó ÓŒ2Šʼn9-Œ0ÓÓ„‰: Œ0ÓÓ„‰9‰:‰:=‰9‰:=‰:ÿ¤@O‚<1Œ Œ -Œ0ÓÓ Œ0ÓÓŒ0Ó"Ó(ƒ"Œ0ÓEÓJZŒ0ÓSÓXŒq…¯ƒCŒrŒ0Ú ÚŒ2‚‹ ‚‹‰;-Œ0ÚÚ„=‰;‰;ÿ¤@O‚<1ŒrŒr-Œ0ÚÚƒ"Œ0ÚÚmŒ0ÚÚ$5Œ0Ú,Ú1Œs…°ƒSŒtŒ0ã ãŒ2‚z ‚z‰<-Œ0ãã„=‰<=‰<ÿ¤@O‚<1ŒtŒt-Œ0ããƒ"Œ0ããŒuŒ0ãã)Œ0ã1ã6Œv…±‹r‹sŒ0ì ìŒ2‚ ‚‰=-Œ0ì*ì,„ =‰==‰=ÿ¤@O‚<1‹s‹s-Œ0ì*ì,ƒ"Œ0ììŒw…²‹u‹vŒ0÷ ÷Œ2þ þ‰>-Œ0÷ ÷"„‰?ƒ Œ0÷G÷K„ ‰>‰?=‰>=‰>ÿ¤@O‚<1‹v‹v-Œ0÷ ÷"ƒ Œ0÷G÷Kƒ!Œ0÷÷ƒ"Œ0÷/÷4Œx…³ƒŒ Œ0‚ ‚Œ2÷ ÷‰@-Œ0‚ ‚"„‰@‰@=‰@=‰@ÿ¤@O‚<1Œ Œ -Œ0‚ ‚"€¼Œ0‚‚ƒ"Œ0‚4‚9Œy…´ŒzŒ{Œ0‚ ‚ Œ2í í‰A-Œ0‚ '‚ )„‰Bƒ Œ0‚ N‚ R„ ‰A‰B=‰Aÿ¤@O‚<1Œ{Œ{-Œ0‚ '‚ )ƒ Œ0‚ N‚ Rƒ!Œ0‚ ‚ %ƒ"Œ0‚ 6‚ ;Œ|…µŒ}Œ~Œ0‚ ‚Œ2ß ß‰C-Œ0‚'‚)„‰C‰C=‰Cÿ¤@O‚<1Œ~Œ~-Œ0‚'‚)€¼Œ0‚‚%ƒ"Œ0‚;‚@Œ…¶Œ€ŒŒ0‚ ‚Œ2ò ò‰D-Œ0‚1‚3„ =‰Dÿ¤@O‚<1ŒŒ-Œ0‚1‚3ƒ"Œ0‚‚Œ‚…·‹x‹yŒ0‚‚Œ2‚.‚.‰E-Œ0‚ &‚ '„‰Ez‰E‰E‰E‰E€ª‰E=‰E‰Eÿ„@O‚<1‹y‹y-Œ0‚ &‚ 'ƒ"Œ0‚‚ Œƒ…¸‹{‹|Œ0‚)‚)Œ2‚6‚6‰F-Œ0‚))‚)+„‰GƒŒ0‚*(‚*)„‰Gz‰G‰G‰G‰G€ª‰G‰F‰G=‰F‰Gÿ„@O‚<1‹|‹|-Œ0‚))‚)+ƒŒ0‚*(‚*)ƒ!Œ0‚)‚)'ƒ"Œ0‚)6‚);Œ„…¹…Ò…ÓŒ0‚1 ‚1Œ2| |‰H-Œ0‚1‚1„=‰H3‰Hÿ¤@O‚<1…Ó…Ó-Œ0‚1‚1ƒ"Œ0‚1‚1Œ……º‹‹Œ0‚7 ‚7Œ2‚ ‚ ‰I-Œ0‚7‚7„=‰II‰Iÿ¤@O‚<1‹‹-Œ0‚7‚7ƒ"Œ0‚7‚7Œ†…»‹†ЬŒ0‚? ‚?Œ22 2‰J-Œ0‚? ‚?"„‰J=‰J4‰Jÿ¤@O‚<1ЬЬ-Œ0‚? ‚?"ƒŒ0‚?‚?ƒ"Œ0‚?/‚?4Œ‡…¼‹ˆ‹‰Œ0‚G ‚GŒ2‚" ‚"‰K-Œ0‚G&‚G(„‰K=‰K4ÿ¤@O‚<1‹‰‹‰-Œ0‚G&‚G(ƒŒ0‚G‚G$ƒ"Œ0‚G5‚G:Œˆ…½ƒŒŒ0‚M ‚MŒ2R R‰LŒ0‚M‚M„‰MŒ0‚M ‚M#„=‰L‰M=‰L=‰Mÿ¤@O‚<1ŒŒŒ0‚M‚MŒ0‚M ‚M#ƒ"Œ0‚M‚MŒ‰…¾ƒŒŒ0‚S ‚SŒ2^ ^‰NŒ0‚S‚S„‰OŒ0‚S!‚S$„‰PŒ0‚S'‚S*„=‰N‰O‰P=‰N=‰O=‰Pÿ¤@O‚<1ŒŒŒ0‚S‚SŒ0‚S!‚S$Œ0‚S'‚S*ƒ"Œ0‚S‚SŒŠ…¿ƒ‹–Œ0‚\ ‚\Œ2: :‰QŒ0‚\‚\„‰RŒ0‚\(‚\+„=‰Q=‰R=‰Q‰Rÿ¤@O‚<1‹–‹–Œ0‚\‚\Œ0‚\(‚\+Œ3Œ0‚\‚\Œ4Œ0‚\!‚\'Œ‹…Àƒ‹˜Œ0‚f ‚fŒ2E E‰SŒ0‚f‚f„‰TŒ0‚f)‚f,„‰UŒ0‚f9‚f<„=‰S=‰T=‰U=‰S‰T‰Uÿ¤@O‚<1‹˜‹˜Œ0‚f‚fŒ0‚f)‚f,Œ0‚f9‚f<Œ3Œ0‚f‚fŒ4Œ0‚f"‚f(ŒŒŒ0‚f2‚f8Œ€ÛŒŽŒy y€ÛQ‚C2322`ƒ);Œ  îÜÜV _ ÁÊ …Á‰ŠLŒ€ƒ €ƒŒ‘€ˆ €ˆ‰V-Œ€ƒX€ƒZ„‰V€Å‰Vÿ¤@O‚<1ŠLŠL-Œ€ƒX€ƒZŒ’Œ€ƒ€ƒŒ“Œ€ƒ#€ƒ*Œ”Œ€ƒ2€ƒ9Œ•Œ€ƒA€ƒHŒŒ€ƒP€ƒWŒ–…ƒ„³Œ€ €Œ‘€’ €’‰W-Œ€y€{„‰W€Å‰Wÿ¤@O‚<1„³„³-Œ€y€{Œ’Œ€€Œ“Œ€!€(Œ”Œ€0€7Œ•Œ€@€G„´Œ€P€[Œ—…ÃŒ’Œ˜Œ€“ €“Œ‘t t‰X-Œ€“€“„€Å‰Xÿ¤@O‚<1Œ˜Œ˜-Œ€“€“ƒ"Œ€“€“Œ™…ÄŒ“ŒšŒ€™ €™Œ‘w w‰Y-Œ€™€™„€Å‰Yÿ¤@O‚<1ŒšŒš-Œ€™€™ƒ"Œ€™€™Œ›…ÅŒ”ŒœŒ€Ÿ €ŸŒ‘z z‰Z-Œ€Ÿ€Ÿ„€Å‰Zÿ¤@O‚<1ŒœŒœ-Œ€Ÿ€Ÿƒ"Œ€Ÿ€ŸŒ…ÆŒ•ŒžŒ€¥ €¥Œ‘} }‰[-Œ€¥€¥„€Å‰[ÿ¤@O‚<1ŒžŒž-Œ€¥€¥ƒ"Œ€¥€¥ŒŸ…ÇŒXŒYŒ€® €®Œ‘€€ €€‰\-Œ€®V€®X„€Å‰\ÿ¤@O‚<1ŒYŒY-Œ€®V€®XŒ’Œ€®€®Œ“Œ€®'€®.Œ”Œ€®6€®=Œ•Œ€®F€®MŒ …ȃ:‹[Œ€¸ €¸Œ‘€ €‰]-Œ€¸€¸„€Å‰]‰]ÿ¤@O‚<1‹[‹[-Œ€¸€¸ƒ"Œ€¸€¸ˆhŒ€¸"€¸(ˆiŒ€¸0€¸6ˆlŒ€¸>€¸DˆoŒ€¸L€¸RŒ¡…ɃCŒrŒ€Ã €ÃŒ‘€  € ‰^-Œ€Ã€Ã„€Å‰^‰^ÿ¤@O‚<1ŒrŒr-Œ€Ã€Ãƒ"Œ€Ã€ÃˆhŒ€Ã"€Ã(ˆiŒ€Ã0€Ã6ˆlŒ€Ã>€ÃDˆoŒ€ÃL€ÃR5Œ€ÃZ€Ã_Œ¢€ÜŒ£Œ €ÜQ‚C2322`ƒ);Œ¤  1ÝÝ_ m ÊÖ …ʉŠLŒ Œ‘. .‰_-ŒIK„‰_€Ä‰_ÿ¤@O‚<1ŠLŠL-ŒIKŒ’ŒŒ“Œ#*Œ”Œ29ŒŒAHŒ¥…˃„³Œ! !Œ‘7 7‰`-Œ!b!d„‰`€Ä‰`ÿ¤@O‚<1„³„³-Œ!b!dŒ’Œ!!Œ“Œ!!!(Œ”Œ!0!7„´Œ!@!KŒ¦…̃:‹[Œ* *Œ‘! !‰a-Œ**„€Ä‰a‰aÿ¤@O‚<1‹[‹[-Œ**ƒ"Œ**ˆhŒ*!*'ˆiŒ*/*5ˆlŒ*=*CŒ§…̓„¨Œ0 0Œ‘@ @‰b-Œ00„‰b€Ä‰bÿ¤@O‚<1„¨„¨-Œ00YŒ00ƒ"Œ0)0.Œ¨…΃„«Œ7 7Œ‘X X‰c-Œ7072„‰c€Ä‰cÿ¤@O‚<1„«„«-Œ7072YŒ77ƒ"Œ7?7DŒ©…ÏŒ’Œ˜Œ= =Œ‘ ‰d-Œ==„€Ä‰dÿ¤@O‚<1Œ˜Œ˜-Œ==ƒ"Œ==Œª…ÐŒ“ŒšŒC CŒ‘ ‰e-ŒCC„€Ä‰eÿ¤@O‚<1ŒšŒš-ŒCCƒ"ŒCCŒ«…ÑŒ”ŒœŒI IŒ‘ ‰f-ŒII„€Ä‰fÿ¤@O‚<1ŒœŒœ-ŒIIƒ"ŒIIŒ¬…Òƒ „­ŒT TŒ‘K K‰g-ŒTT„‰hƒŒT T"„‰g‰h€Ä‰g€Ä‰hÿ¤@O‚<1„­„­-ŒTTƒŒT T"ƒ ŒTTƒ"ŒT'T,Œ­…Óƒ „¯Œ` `Œ‘c c‰i-Œ`0`2„‰jƒŒ`6`8„‰i‰j€Ä‰i€Ä‰jÿ¤@O‚<1„¯„¯-Œ`0`2ƒŒ`6`8ƒ Œ``ƒ"Œ`=`BŒ®…ÔƒCŒrŒj jŒ‘$ $‰k-Œjj„€Ä‰k‰kÿ¤@O‚<1ŒrŒr-Œjjƒ"ŒjjˆhŒj!j'ˆiŒj/j5ˆlŒj=jC5ŒjKjPŒ¯…ÕŒXŒYŒr rŒ‘' '‰l-ŒrFrH„€Ä‰lÿ¤@O‚<1ŒYŒY-ŒrFrHŒ’ŒrrŒ“Œr'r.Œ”Œr6r=Œ°€ÝŒ±Œ² €ÝQ‚C2322`ƒ);Œ³   ÞÞm ‚ Öé…ÖŒ´ŒµŒ²! !Œ¶" "‰m-Œ²!!„€Ã‰mÿ¤@O‚<1ŒµŒµ-Œ²!!ƒ"Œ²!!Œ·…׌¸Œ¹Œ²) )Œ¶$ $‰n-Œ²))„€Ã‰nÿ¤@O‚<1Œ¹Œ¹-Œ²))ƒ"Œ²))Œº…ØŒ@ŒAŒ²4 4Œ¶v v‰o-Œ²44„€Ã‰o€Ã‰oÿ¤@O‚<1ŒAŒA-Œ²44ƒ"Œ²44Œ»…ÙŒ8Œ9Œ²C CŒ¶€‚ €‚‰p-Œ²CC„€Ã‰p€Ã‰pÿ¤@O‚<1Œ9Œ9-Œ²CCnŒ²CCŒ¼Œ²C"C.Œ½Œ²C6CBºŒ²CJCPŒ¾Œ²CZCfŒ¿Œ²CnCzŒ’Œ²C€‚C€‰Œ“Œ²C€‘C€˜ŒÀ…Úƒ„³Œ²N NŒ¶R R‰q-Œ²NKNM„‰q€Ã‰qÿ¤@O‚<1„³„³-Œ²NKNMŒ’Œ²NNŒ“Œ²N!N(„´Œ²N0N;ŒÁ…Û‰ŠLŒ²Y YŒ¶N N‰r-Œ²Y8Y:„‰r€Ã‰rÿ¤@O‚<1ŠLŠL-Œ²Y8Y:Œ’Œ²YYŒ“Œ²Y#Y*5Œ²Y2Y7ŒÂ…ÜŒXŒYŒ²c cŒ¶+ +‰s-Œ²c7c9„€Ã‰sÿ¤@O‚<1ŒYŒY-Œ²c7c9Œ’Œ²cc Œ“Œ²c(c/ŒÃ…݌ČŌ²r rŒ¶E E‰t-Œ²rjrl„‰t€Ã‰tÿ¤@O‚<1ŒÅŒÅ-Œ²rjrlŒ´Œ²rrŒ¸Œ²r$r)Œ’Œ²r1r8Œ“Œ²r@rG„´Œ²rOrZŒÆ…ތnjȌ² Œ¶= =‰u-Œ²Z\„‰u€Ã‰uÿ¤@O‚<1ŒÈŒÈ-Œ²Z\Œ´Œ²Œ¸Œ²&+Œ’Œ²3:Œ“Œ²BIŒŒ²QXŒÉ…ߌʌˌ²€‹ €‹Œ¶1 1‰v-Œ²€‹V€‹X„€Ã‰vÿ¤@O‚<1ŒËŒË-Œ²€‹V€‹XŒ´Œ²€‹€‹#Œ¸Œ²€‹+€‹0Œ’Œ²€‹8€‹?Œ“Œ²€‹G€‹NŒÌ…àƒ„¨Œ²€“ €“Œ¶V V‰w-Œ²€“€“„‰w€Ã‰wÿ¤@O‚<1„¨„¨-Œ²€“€“YŒ²€“€“ƒ"Œ²€“)€“.ŒÍ…Ⴤ«Œ²€› €›Œ¶a a‰x-Œ²€›)€›+„‰x€Ã‰xÿ¤@O‚<1„«„«-Œ²€›)€›+YŒ²€›€›ƒ"Œ²€›8€›=ŒÎ…⌒Œ˜Œ²€£ €£Œ¶ ‰y-Œ²€£€£„€Ã‰yÿ¤@O‚<1Œ˜Œ˜-Œ²€£€£ƒ"Œ²€£€£ŒÏ…㌓ŒšŒ²€« €«Œ¶ ‰z-Œ²€«€«„€Ã‰zÿ¤@O‚<1ŒšŒš-Œ²€«€«ƒ"Œ²€«€«ŒÐ…äƒ „­Œ²€¸ €¸Œ¶l l‰{-Œ²€¸€¸„‰|ƒŒ²€¸ €¸"„‰{‰|€Ã‰{€Ã‰|ÿ¤@O‚<1„­„­-Œ²€¸€¸ƒŒ²€¸ €¸"ƒ Œ²€¸€¸ƒ"Œ²€¸'€¸,ŒÑ…åƒ „¯Œ²€Ç €ÇŒ¶q q‰}-Œ²€Ç)€Ç+„‰~ƒŒ²€Ç/€Ç1„‰}‰~€Ã‰}€Ã‰~ÿ¤@O‚<1„¯„¯-Œ²€Ç)€Ç+ƒŒ²€Ç/€Ç1ƒ Œ²€Ç€Çƒ"Œ²€Ç6€Ç;ŒÒ…æŒÓŒÔŒ²€Ò €ÒŒ¶{ {‰-Œ²€Ò€Ò„€Ã‰€Ã‰ÿ¤@O‚<1ŒÔŒÔ-Œ²€Ò€Òƒ"Œ²€Ò€ÒŒÕ…çƒCŒrŒ²€Ü €ÜŒ¶( (‰€-Œ²€Ü€Ü„€Ã‰€‰€ÿ¤@O‚<1ŒrŒr-Œ²€Ü€Üƒ"Œ²€Ü€ÜˆhŒ²€Ü €Ü&ˆiŒ²€Ü.€Ü45Œ²€Ü<€ÜAŒÖ…èƒ:‹[Œ²€ç €çŒ¶& &‰-Œ²€ç€ç„€Ã‰‰ÿ¤@O‚<1‹[‹[-Œ²€ç€çƒ"Œ²€ç€çˆhŒ²€ç €ç&ˆiŒ²€ç.€ç4Œ×ŒØ3B FSharp.CoremscorlibSystem‡¦„„à MicrosoftFSharp CollectionsList`1 CompareToT6d:\Depot\staging\src\fsharp\FSharp.Core\prim-types.fsiCoreintobj5d:\Depot\staging\src\fsharp\FSharp.Core\prim-types.fsthisSystem IComparer GetHashCodeIEqualityComparerunitunitArg(Microsoft.FSharp.Core.LanguagePrimitivesget_GenericEqualityComparermscorlib$System.Collections.IEqualityComparerEqualsbool get_Lengthget_Headget_Taillist`1 get_IsEmptylunitVar1op_Nilget_Item get_EmptyunitVar0Consheadtail op_ColonColonMap`2.ctorKey/d:\Depot\staging\src\fsharp\FSharp.Core\map.fsiValueseq`1Add get_Count ContainsKeyRemoveTryFindoption`1Set`1/d:\Depot\staging\src\fsharp\FSharp.Core\set.fsiContainsop_Subtraction op_Additionget_MinimumElementget_MaximumElement IsSubsetOf IsSupersetOfIsProperSubsetOfIsProperSupersetOf Array2DModulelength11d:\Depot\staging\src\fsharp\FSharp.Core\array2.fsarray[,]`1length2base1 System.Array GetLowerBound System.Int32base2getnmsetx zeroCreatezeroCreateBased createBased initBasedcreateinitunknownfiteriterimapmapicopyrebaseblit Array3DModule1d:\Depot\staging\src\fsharp\FSharp.Core\array3.fs[,,]`1length3n1n2n3 Array4DModule[,,,]`1length4n4 ArrayModulelength0d:\Depot\staging\src\fsharp\FSharp.Core\array.fs[]`1count OperatorsraiseexnArgumentExceptionSystem.ArgumentException System.StringLanguagePrimitives ErrorStringsInputMustBeNonNegativeStringstringarrarray`1unitVarint32iisEmptyemptyconcatcollectappendtoListofListArgumentNullExceptionSystem.ArgumentNullExceptionlenUresiter2map2mapi2iteri2existsexists2forallforall2picktryPickchoosefilter partitionfindtryFindzipzip3unzipunzip3revfoldfoldBack foldBack2fold2scanscanBackreduce reduceBacksortInPlaceWith sortInPlaceBy sortInPlacesortWithsortBysorttoSeqofSeq findIndex tryFindIndexpermutesumget_Zeroaccfloatfloat`1float32 float32`1int64uint64uint32 nativeint unativeintint16uint16sbytebytedecimalSystem.DecimalSystem.Boolean System.ByteDecimalGenericZeroDynamicycharConcatCheckedAdditionDynamicT1T2sumByminInputArrayEmptyStringcurr HashCompareGenericLessThanIntrinsicminByaccvcurrvmaxGenericGreaterThanIntrinsicmaxByaverage DivideByIntsourceeGeneric IEnumerator`1(System.Collections.Generic.IEnumerable`1 GetEnumerator(System.Collections.Generic.IEnumerator`1System.Collections.IEnumeratorMoveNext get_CurrentInputSequenceEmptyStringDivideSystem.Convert ToDecimalDivideByIntDynamicobjectToDispose IDisposableSystem.IDisposableDispose averageBysubvfillComparisonIdentity Structural6d:\Depot\staging\src\fsharp\FSharp.Core\collections.fsFastGenericComparer IComparer`1 FromFunction Generator HashIdentityIEqualityComparer`1 System.ObjectselfGenericHashIntrinsicGenericEqualityIntrinsicLimitedStructural Reference FromFunctionshasheqOptimizedClosures FSharpFunc`3AdaptInvoke IEnumerator ListModule/d:\Depot\staging\src\fsharp\FSharp.Core\list.fslistofArraytoArraylist1list2 op_Appendnth replicatemap3 SeqModule/d:\Depot\staging\src\fsharp\FSharp.Core\seq.fsifirst MapModuleadd.d:\Depot\staging\src\fsharp\FSharp.Core\map.fskEqualityConditionalOnAttribute ComparisonConditionalOnAttributeremove containsKeyfindKey tryFindKey MapTreeModulePrivateListHelpersdelayunfold initInfinitecasttake Collectionsources IEnumerable`1 compareWith.d:\Depot\staging\src\fsharp\FSharp.Core\seq.fs singletontruncatepairwisewindowedcachereadonlygroupBydistinct distinctBycountBy takeWhileskip skipWhile SetModulecontains.d:\Depot\staging\src\fsharp\FSharp.Core\set.fssunions1s2 unionMany intersect intersectManyc differenceisSubset isSupersetisProperSubsetisProperSuperset minElement maxElement SetTreeModuleControlDelegateEvent`1Delegate1d:\Depot\staging\src\fsharp\FSharp.Core\event.fsiTrigger get_PublishIDelegateEvent`1Event`2ArgsIEvent`2Event`1IEvent`1 AsyncBuilderZeroAsync`1Delay3d:\Depot\staging\src\fsharp\FSharp.Core\control.fsiReturn ReturnFrom2d:\Depot\staging\src\fsharp\FSharp.Core\control.fsbBindUsingWhileForCombine TryFinallyTryWithAsyncget_CancellationToken ThreadingCancellationTokenFromContinuationsOperationCanceledExceptionget_DefaultCancellationTokenCancelDefaultTokenCatchChoice`2RunSynchronouslyStartParallelStartWithContinuationsStartImmediateSleepAwaitWaitHandle WaitHandleAwaitIAsyncResult IAsyncResult FromBeginEnd AsyncCallbackArg1Arg2Arg3 AsBeginEnd AwaitEventDelIgnoreSwitchToNewThreadSwitchToThreadPool StartChildSwitchToContextSynchronizationContextOnCancel TryCancelledAsyncReplyChannel`1ReplyMailboxProcessor`1Msgget_CurrentQueueLengthget_DefaultTimeoutset_DefaultTimeout get_Error Exception add_Error Handler`1 remove_ErrorPostTryPostAndReply PostAndReplyPostAndTryAsyncReplyPostAndAsyncReplyReceive TryReceiveScanTryScaninitialcancellationTokenmbAsyncBuilderImpl AsyncImplCancellationTokenOpsCommonExtensionsStream AsyncReadIO AsyncWrite IObservable`1 Subscribe EventModulewmergesplitLazyExtensionsLazy`1CreateCreateFromValueget_IsExceptionForce get_ValueObservableModule subscribe WebExtensions WebRequestAsyncGetResponseNet WebResponse WebClientAsyncDownloadStringUriSealedAttributeAbstractClassAttributeAllowNullLiteralAttributeVolatileFieldAttributeDefaultAugmentationAttributeCLIEventAttributeAutoSerializableAttributeDefaultValueAttribute get_CheckEntryPointAttributeReferenceEqualityAttributeStructuralComparisonAttributeStructuralEqualityAttributeNoEqualityAttributeCustomEqualityAttributeCustomComparisonAttributeNoComparisonAttributeReflectedDefinitionAttributeCompiledNameAttributeget_CompiledNameStructAttributeMeasureAttribute%MeasureAnnotatedAbbreviationAttributeInterfaceAttributeClassAttributeLiteralAttribute#FSharpInterfaceDataVersionAttribute get_Major get_Minor get_ReleaseCompilationMappingAttributeSourceConstructFlagsget_SourceConstructFlagsget_SequenceNumberget_VariantNumberCompilationSourceNameAttributeget_SourceName"CompilationRepresentationAttributeCompilationRepresentationFlags get_FlagsExperimentalAttribute get_Message"CompilationArgumentCountsAttribute get_Counts StructuredFormatDisplayAttributeCompilerMessageAttributeget_MessageNumber get_IsError set_IsError get_IsHidden set_IsHiddenUnverifiableAttributeNoDynamicInvocationAttributeOptionalArgumentAttributeGeneralizableValueAttribute&RequiresExplicitTypeArgumentsAttributeRequireQualifiedAccessAttributeAutoOpenAttributeget_PathChoice`3T3Choice`4T4Choice`5T5Choice`6T6Choice`7T7MatchFailureExceptionFSharpTypeFunc FSharpFunc`2 op_Implicit Converter`2 FromConverter ToConverter InvokeFastVWXY FuncConvert ToFSharpFuncAction`1FuncFromTupledRef`1contents set_ValueOption`1 get_IsNoneNone get_IsSomeSomeget_NonePrintfFormat`4Printer2d:\Depot\staging\src\fsharp\FSharp.Core\printf.fsiStateResidueResultPrintfFormat`5TupleBasicInlinedOperationsCompilerServicesGeneratedSequenceBase`1RuntimeHelpersEnumerateFromFunctionsEnumerateUsingEnumerateWhileEnumerateThenFinally CreateEventExtraTopLevelOperatorsdictarray2Dsprintffp PrintfModuleStringFormat`1 failwithfStringFormat`2fprintfos TextWriterTextWriterFormat`1printfeprintffprintfnprintfneprintfnasyncsingle op_Explicit System.SingleParse!System.Globalization.NumberStylesSystem.IFormatProvider Globalization NumberStylesIFormatProvider CultureInfo System.Globalization.CultureInfoget_InvariantCulturedouble System.DoubleToDoubleuint8 ParseUInt32int8 ParseInt32 op_Spliceop_SpliceUntyped|Lazy|Ad:\Depot\staging\src\fsharp\FSharp.Core\fslib-extra-pervasives.fsGenericEqualityGenericEqualityERGenericEqualityERIntrinsicGenericEqualityWithComparercomp$GenericEqualityWithComparerIntrinsicGenericComparisonCompareOrdinalGenericComparisonIntrinsicGenericComparisonWithComparer&GenericComparisonWithComparerIntrinsicGenericLessThanGenericGreaterThanGenericLessOrEqualGenericLessOrEqualIntrinsicGenericGreaterOrEqualGenericGreaterOrEqualIntrinsicGenericMinimumGenericMaximumPhysicalEqualityPhysicalEqualityIntrinsic PhysicalHashPhysicalHashIntrinsicGenericComparerGenericEqualityComparerGenericEqualityERComparer GenericHashGenericLimitedHashlimitLimitedGenericHashIntrinsicGenericHashWithComparer GenericHashWithComparerIntrinsicFastGenericEqualityComparer"FastLimitedGenericEqualityComparer EnumOfValueEnumu EnumToValueFloatWithMeasureFloat32WithMeasureDecimalWithMeasure decimal`1Int32WithMeasureint`1Int16WithMeasureint16`1SByteWithMeasuresbyte`1Int64WithMeasureint64`1 ParseInt64 ParseUInt64GenericOneDynamic GenericZero GenericOneget_OneAdditionDynamicMultiplyDynamicCheckedMultiplyDynamicAddressOpNotFirstClassStringNoNegateMinValueString.System.Runtime.CompilerServices.RuntimeHelpersFastHashTuple2comparer tupledArgx1x2h1FastHashTuple3x3FastHashTuple4x4FastHashTuple5x5FastEqualsTuple2y1y2FastEqualsTuple3y3FastEqualsTuple4y4FastEqualsTuple5y5FastCompareTuple2FastCompareTuple3FastCompareTuple4FastCompareTuple5IntrinsicFunctions UnboxGeneric UnboxFastTypeTestGeneric TypeTestFastFailInitFailStaticInit CheckThis MakeDecimallomedhi isNegativescale GetString get_Chars System.CharCreateInstanceSystem.ActivatorGetArraySetArray GetArray2D SetArray2D GetArray3D SetArray3D GetArray4D SetArray4DIntrinsicOperatorsop_Amp op_BooleanAndor op_BooleanOr op_AddressOfbyref`1op_IntegerAddressOf nativeptr`1NumericLiteralsNumericLiteralIFromInt64DynamicFromStringDynamicFromZeroFromOne FromInt321d:\Depot\staging\src\fsharp\FSharp.Core\math/z.fsNumerics BigIntegerastartup FromInt64 FromStringsequnboxboxFailuremessageSystem.Exception |Failure|_|not op_LessThanop_GreaterThanop_GreaterThanOrEqualop_LessThanOrEqual op_Equality op_Inequalitycomparefailwith invalidArgargmsgnullArg invalidOpInvalidOperationException System.InvalidOperationExceptionrethrowObjectreraisefstsndignore_arg976refop_ColonEqualsop_Dereference op_PipeRight op_PipeRight2 op_PipeRight3 op_PipeLeft op_PipeLeft2 op_PipeLeft3op_ComposeRightgop_ComposeLeftop_Concatenate defaultArgop_UnaryNegation op_Multiply op_Division op_Modulus op_UnaryPlus op_LeftShift op_RightShift op_BitwiseAnd op_BitwiseOrop_ExclusiveOr op_LogicalNotincrdecrexitenum |KeyValue|kvpKeyValuePair`2)System.Collections.Generic.KeyValuePair`2get_Keyinfinitynan infinityfnanf System.Int64 System.Int16 System.SByte System.UInt64 System.UInt32 System.UInt16 copyOfStructToString matchValuetypeTestResult IFormattableSystem.IFormattablelockLocklockobjSystem.Threading.MonitorEnterExitusingtypeof System.TypeGetTypeFromHandleSystem.RuntimeTypeHandleTypeRuntimeTypeHandle typedefoftyget_IsGenericTypeGetGenericTypeDefinitionsizeof limitedHashidstdinSystem.Consoleget_InSystem.IO.TextReader TextReaderstdoutget_OutSystem.IO.TextWriterstderrop_RangeOperatorIntrinsics RangeInt32 RangeDouble RangeSingle RangeInt64 RangeUInt64 RangeUInt32 RangeIntPtr RangeUIntPtr RangeInt16 RangeUInt16 RangeSByte RangeByte RangeChar RangeGeneric op_RangeStepStepstepRangeStepGenericabsAbs System.MathOverflowExceptionSystem.OverflowException AbsDynamicacosAcos AcosDynamicasinAsin AsinDynamicatanAtan AtanDynamicatan2Atan2 Atan2DynamicceilCeilingCeilingDynamicexpExp ExpDynamicfloorFloor FloorDynamicTruncateTruncateDynamicroundRound RoundDynamicsignget_SignSign SignDynamiclogLog LogDynamiclog10Log10 Log10DynamicsqrtSqrt SqrtDynamiccosCos CosDynamiccoshCosh CoshDynamicsinSin SinDynamicsinhSinh SinhDynamictanTan TanDynamictanhTanh TanhDynamicop_ExponentiationPow PowDynamicpownPowInt32PowInt64PowInt16PowSByte PowIntPtr PowUInt32 PowUInt64 PowUInt16PowByte PowUIntPtr PowDouble PowSingle PowDecimal PowGeneric AttributesChecked GetArraySlicestartfinish unionCasedst SetArraySlicesrcGetArraySlice2DSetArraySlice2DGetArraySlice3DSetArraySlice3DGetArraySlice4DSetArraySlice4DGetStringSlicestr Substring Unchecked defaultofequals FSharpFunc`4 FSharpFunc`5 FSharpFunc`6 OptionModuleisSomeoptionisNonebind PrintfImplksprintfkprintffmt1d:\Depot\staging\src\fsharp\FSharp.Core\printf.fskbprintfkfprintfbprintfSR StringModulesepstringsJoin TupleUtilsMath BigNatModuleFFTFp NativeInteropNativePtrModule ofNativeInt4d:\Depot\staging\src\fsharp\FSharp.Core\nativeptr.fs toNativeIntpreadwrite stackalloc PrimitivesBasicsArrayListStableSortImplementation QuotationsVarget_Name get_IsMutableget_TypeGlobalExprget_CustomAttributesExpr`1get_Raw6d:\Depot\staging\src\fsharp\FSharp.Core\quotations.fsi Substitute GetFreeVars AddressOf AddressSet Application ApplicationsCall Reflection MethodInfoCoerce IfThenElseForIntegerRangeLoopFieldGet FieldInfoFieldSetLambdaLet LetRecursive NewObjectConstructorInfo DefaultValueNewTuple NewRecordNewArray NewDelegate NewUnionCase UnionCaseInfo PropertyGet PropertyInfo PropertySetQuote SequentialTupleGetTypeTest UnionCaseTestVarSet WhileLoopTryGetReflectedDefinition MethodBaseCast DeserializeRegisterReflectedDefinitionsAssembly GlobalVarDerivedPatternsModule|Bool|_| |String|_| |Single|_| |Double|_||Char|_| |SByte|_||Byte|_| |Int16|_| |UInt16|_| |Int32|_| |UInt32|_| |Int64|_| |UInt64|_||Unit|_| |Lambdas|_||Applications|_| |AndAlso|_| |OrElse|_||SpecificCall|_|!|MethodWithReflectedDefinition|_|minfo)|PropertyGetterWithReflectedDefinition|_|pinfoSystem.Reflection.PropertyInfo GetGetMethodSystem.Reflection.MethodInfo)|PropertySetterWithReflectedDefinition|_| GetSetMethodExprShapeModuleRebuildShapeCombination'|ShapeVar|ShapeLambda|ShapeCombination|HelpersPatternsModule|Var|_||Application|_| |Lambda|_| |Quote|_||IfThenElse|_| |NewTuple|_||DefaultValue|_| |NewRecord|_||NewUnionCase|_||UnionCaseTest|_| |TupleGet|_| |Coerce|_| |TypeTest|_| |NewArray|_||AddressSet|_||TryFinally|_| |TryWith|_| |VarSet|_| |Value|_| |AddressOf|_||Sequential|_||ForIntegerRangeLoop|_| |WhileLoop|_||PropertyGet|_||PropertySet|_| |FieldGet|_| |FieldSet|_| |NewObject|_||Call|_||Let|_||NewDelegate|_||LetRecursive|_|SimpleUnpickleget_DeclaringType GetFieldsGetCustomAttributesget_Tag FSharpTypeIsTupleIsRecord BindingFlagsIsUnion IsFunctionIsModuleMakeFunctionType MakeTupleTypeGetTupleElementsGetFunctionElementsGetRecordFields GetUnionCasesIsExceptionRepresentationGetExceptionFields FSharpValue MakeRecordGetRecordFieldPreComputeRecordFieldReaderPreComputeRecordReaderPreComputeRecordConstructorPreComputeRecordConstructorInfo MakeFunction MakeTupleGetTupleFields GetTupleFieldPreComputeTupleReaderPreComputeTuplePropertyInfoPreComputeTupleConstructorPreComputeTupleConstructorInfo MakeUnionPreComputeUnionConstructorPreComputeUnionConstructorInfoGetUnionFieldsPreComputeUnionTagReaderPreComputeUnionTagMemberInfo MemberInfoPreComputeUnionReaderImplTextStructuredPrintfImplDisplay LayoutOps ReflectUtilsTuple`1 get_Item1Tuple`2 get_Item2Tuple`3 get_Item3Tuple`4 get_Item4Tuple`5 get_Item5Tuple`6 get_Item6Tuple`7 get_Item7Tuple`8TRestget_Restget_IsValueCreatedAggregateExceptionget_InnerExceptions ObjectModelReadOnlyCollection`1 get_IsZero get_IsOneDivRemremGreatestCommonDivisorCancellationTokenRegistrationleftrightget_IsCancellationRequestedRegisterCancellationTokenSource get_TokenCancelCreateLinkedTokenSourceCancellationState€ß   -(34?C^`efilnp qtuwy{ €„€³€´€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À €Ät€Çt€Ð €Ü€Ý €ê€ñ €Ü€õ€ø €Ü€ù €Ü)9L NLMLRLSLULVLWLXLZ jk mq jy { } j‰LŒLŽ ”L–L§ ª¨ ¬L®L² ³ L¹L» ¾¼ ¾¿ ¾À ÂÃÄÅÆÇÈÉÊÌÍÎÏÐÑÒÓÔÕרÙÚÛÜÝâáæéèëíïðö÷øùúûüþ‚‚‚‚‚ ‚  ‚  ‚‚‚‚!‚'‚*‚*‚+‚*‚,‚2‚7‚8‚7‚7‚: ª‚=‚7‚> ‚K‚L ‚M ‚K‚NL³‚…‚‡‚‰‚‹‚t‚³t‚΂ԂւׂØ ‚ß‚à ‚ß ‚ú ‚ý €Üƒ" ƒ3 ƒ@ ƒA ªƒMnƒS ƒinƒ¸nƒÉƒÌƒÍƒÎƒÏƒÝƒæƒçƒôƒôƒõƒôƒúƒôƒü „„ „„  „„„„ „„ „„% „„)ƒô„+ƒô„Hƒô„L„ „„u „„– „ž „  „¢ „¤ „¦ „¨ „ª „¬ „° „²„³ j j„¹ j„¾n!"#$%&'()*+-0:<@GIJLMNORU]^_`abcdefghijklmnopqrstuvwxyz{|}~€€€€‚€ƒ€„€…€†€‡€ˆ€‰€€ž€ €¡€¢€®€°€±€³€´€µ€¶€¸€Â€Ã€Å€Æ€Ç€È€É€Ê€Ë€Ð€Ñ€Ú€Ý€Þÿ<ÿ ÿ¦!ßµ ßµ  Ç }Œ%†˜†˜Ž†˜†˜Ž ŒVŒVŽ ,  , †˜†˜Ž ŒVŒVŽ ŒVŒVކ˜†˜Ž†˜†˜Ž†˜†˜Ž ŒVŒVŽ , , †˜†˜Ž  ŒVŒVŽ  ·z\V4à‰  ŒVŒVŽ  †˜†˜Ž  †˜†˜Ž  †˜†˜Ž  †˜†˜Ž†˜†˜Ž ŒVŒVŽ& ,   ŒVŒVŽ!†˜†˜Ž"†˜†˜Ž ŒVŒVŽ#,   ŒVŒVŽ$†˜†˜Ž ŒVŒVŽ%$ &$ ' ŒVŒVŽ()*+&*Œ ,+\bŽ  (.*+&*Œ ,+\bŽ  (*+&*Œ ,+\bŽ (!*+&*Œ ,+\bŽ   (/!*+&*Œ ",+\bŽ !"(0#*+&*Œ $,+\bŽ #$#(1%*+&*Œ &,+\bŽ %&% %&(2'*+&*Œ (,+\bŽ '(' (()*+&*Œ *,+\bŽ )*4.+5&(Œ  ++ +41,5&(Œ  ,, ,4/-5&(Œ  -46.5&(Œ  ..4/5&(Œ  /4705&(Œ  0 0 04815&(Œ  1 1 14925&(Œ  224:35&(Œ  334;45&(Œ  4 44<55&(Œ  5 54=65&(Œ  6 64>75&(Œ  7 7485&(Œ  84)95&(Œ  9 9?=:L  @:A„ B:$  > :;A„; D<A  „ B<$  > <=A  „= E>A""„ B>$ ·z\V4à‰FG·z\V4à‰H·z\V4à‰H >?A""„? I@A$$„ B@$ ·z\V4à‰FG·z\V4à‰H·z\V4à‰H @AA$$„A JBA&&„ BB$ K$ L$  ;BB BBBBBCA&&„CC MDA((„BD$ K$ L$ ND$  <DDDDDDEA((„EE O P Q R SFANN„K$ L$ NF$  QGA=%='„GGFFFFFFFFHANN„HH TIUPK$ L$ VI$  RJAF5F7„JJIIIIIIIIKUPKK W X Y Z [ \ ]^aLV& @L_„BL$  >LM_„MDN_„BN$  >NO_„OaP_„BP$  >PQ_„QJ R_!!„BR$ b$ c$  d$  ;RR RRRRRRS_!!„SSM T_$$„!BT$ "b$ #c$ $d$ %NT$  <T!"#$%TTTTTTU_$$„UUOSTWYXZeVb&5 @V_tt„&BV$  >&VW_tt„WDX_ww„'BX$  >'XY_ww„YaZ_zz„(BZ$  >(Z[_zz„[g\_}}„)B\$  >)\]_}}„]OSTJ ^_€€„*B^$ +b$ ,c$ -d$ .h$  ;^^*+,-.^^^^^^^__€€„__M `_€ € „/B`$ 0b$ 1c$ 2d$ 3h$ 4N`$  <`/01234```````a_€ € „aai,Gb³5œDjbk5Bb$  (5bckcTdUP6m$ 7Vd$   56oe U,U.„e·z\V4à‰r)·z\V4à‰s·z\V4à‰svm8xd,  'dd69z, :z,   6;|,  <d8;7d;8dddddfUPffOS}~gk66„gghk66„h]€€€[€‚€ƒWik€‡"€‡$„€†$  (=?z, @z,   >A|$ <i ;ii=Aiiikk€‡"€‡$„kkY$lk€Ž€Ž„m€‡k€Ž!€Ž#„BVlm$ CBl$   &lCon U,U.„n ·z\V4à‰€…)·z\V4à‰s BD€†$  (CE€ˆm$  'mmDFz, Gz,   DH|$  <mEHBlm ;llCHEmlmlmlmok€Ž€Ž„p€‡k€Ž!€Ž#„opop€‰€Š€‹X€ŒZ€€Ž€€€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°qk‚.!‚."„q€±qqqqq8qqqqIBq$   &qIor U,U.„r ·z\V4à‰€…)·z\V4à‰s BJ€²qt q  q  q   q  q q q  q  q q q q q·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    qqq€±q,€Ås ˆý ˆý"„sqKz, Lz,  (IM|$ JNNq, JO€Æq,  ;qqIM q q  , NO q q   NO q q   NO q q  , NO qq -NO qq -NO qq ,NO qq -NO qq  , NO qq  -NO qq  -NO qq  , NO qq  -NO qq q·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s N O qq q·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á N O qqqq8qqqNO,€Ét€Ê ‰Œ#‰Œ%„u€Ë ‰Œ&‰Œ(„v€‡ ‰Œ)‰Œ+„tuvqqqNOJqqqwk‚.!‚."„w€±wwwww8wwwwww€Ì xk‚6‚6„y€‡k‚6$‚6%„y€±yyyyy8yyyyPVxy$ QBx$   &xQoz U,U.„z ·z\V4à‰€…)·z\V4à‰s BR€²yt y  y  y   y  y y y  y  y y y y y·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    yyy€±y,€Å{ ˆý ˆý"„{ySz, Tz,  (QU|$ RVNy, RW€Æy, Pxy ;xxQU y y  , VW y y   VW y y   VW y y  , VW yy -VW yy -VW yy ,VW yy -VW yy  , VW yy  -VW yy  -VW yy  , VW yy  -VW yy y·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s V W yy y·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á V W yyyy8yyyVW,€É|€Ê ‰Œ#‰Œ%„}€Ë ‰Œ&‰Œ(„~€‡ ‰Œ)‰Œ+„|}~yyyVWRyxyxyxyk‚6‚6„€€€‡k‚6$‚6%„€€€±€€€€€€€€€€8€€€€€€€€€€€€€Í7€k‚>‚> XB€$   &€Xo€‚ U,U.„€‚ ·z\V4à‰€…)·z\V4à‰s B  2 (Xo€ƒ U,U.„€ƒ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBY€²€t  ;€€XZz, [z,  (X\|$ ]€Ï€$  ;€€X\ ^€Æ€, Y € 5]^ € 5]^ € 5]^ € 5]^ €  5]^ €  5]^ € 6]^ € 6]^ € 6]^ € 6]^ € 6]^ € 5]^ €  5]^ €  5]^ € 5]^.€Ñ€„ „•,„•.„€„€„€]^Y]Y€€€€…k‚>‚> €…€…€Ò?€†k‚I"‚I#€‡€‡UP _V€†€‡$ `B€†$   &€†`o€ˆ U,U.„€ˆ ·z\V4à‰€…)·z\V4à‰s B  2 (`o€‰ U,U.„€‰·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBa€Ó€†t  ;€†€†`b€²€‡t _€†€‡acz, dz,  (`e|$ f€Ô€†$  ;€†€†`eg€Ï€‡$ _€†€‡f h€Æ€‡, b €‡ 5gh €‡ 5gh €‡ 5gh €‡ 5gh €‡  5gh €‡  5gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 6gh €‡ 5gh €‡  5gh €‡  5gh €‡ 5gh.€Ñ€Š „•,„•.„€Š€Š€‡ghbgafa€†€†€†€†€‡€†€†€‹k‚I"‚I#€Œ€‡UP €‹€Œ€‹€‹€Õ7€k‚W‚W iB€$   &€io€Ž U,U.„€Ž ·z\V4à‰€…)·z\V4à‰s B  2 (io€ U,U.„€·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBj€²€t  ;€€ikz, lz,  (im|$ n€Ï€$  ;€€im o€Æ€, j € 3no € 3no € 3no € 3no €  3no €  3no € 3no € 4no € 4no € 4no € 4no € 4no €  3no €  3no € 3no.€Ö€ „œ/„œ1„€€€nojnj€€€€‘k‚W‚W €‘€‘€×?€’k‚b"‚b#€“€‡UP pV€’€“$ qB€’$   &€’qo€” U,U.„€” ·z\V4à‰€…)·z\V4à‰s B  2 (qo€• U,U.„€•·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ÎBr€Ó€’t  ;€’€’qs€²€“t p€’€“rtz, uz,  (qv|$ w€Ô€’$  ;€’€’qvx€Ï€“$ p€’€“w y€Æ€“, s €“ 3xy €“ 3xy €“ 3xy €“ 3xy €“  3xy €“  3xy €“ 3xy €“ 4xy €“ 4xy €“ 4xy €“ 4xy €“ 4xy €“  3xy €“  3xy €“ 3xy.€Ö€– „œ/„œ1„€–€–€“xysxrwr€’€’€’€’€“€’€’€—k‚b"‚b#€˜€‡UP €—€˜€—€—€ØO€™k‚p'‚p(€™8€™€™€™€™€Ù€™€™€™€±€™zB€™$   &€™zo€š U,U.„€š ·z\V4à‰€…)·z\V4à‰s B{€Ú €™,  €™€™z  & €™{o€› U,U.„€› ·z\V4à‰€…)·z\V4à‰s €Ú|€Û/€™, ·z\V4à‰€Þ€ß·z\V4à‰€à€™/€™{€™}z, ~€²€™| €™  €™  €™   €™  €™ €™ €™  €™  €™ €™ €™ €™ €™·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €™€™€™€±€™,€Å€œ ˆý ˆý"„€œ€™m| €€z, ·z\V4à‰€á€â·z\V4à‰€Â|€z, ~€‚N€™, ~€ƒ€Æ€™, ·z\V4à‰€à€ã€™€™| €™ €™  , €‚€ƒ €™ €™   €‚€ƒ €™ €™   €‚€ƒ €™ €™  , €‚€ƒ €™€™ -€‚€ƒ €™€™ -€‚€ƒ €™€™ ,€‚€ƒ €™€™ -€‚€ƒ €™€™  , €‚€ƒ €™€™  -€‚€ƒ €™€™  -€‚€ƒ €™€™  , €‚€ƒ €™€™  -€‚€ƒ €™€™ €™·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €‚ €ƒ €™€™ €™·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €‚ €ƒ €™€™€™€™8€™€™€™€‚€ƒ,€É€€Ê ‰Œ#‰Œ%„€ž€Ë ‰Œ&‰Œ(„€Ÿ€‡ ‰Œ)‰Œ+„€€ž€Ÿ€™€™€™€‚€ƒ    2o€  U,U.„€ ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€„N€™, ~€…K,  €™   €„   €… €™   €„   €… €™·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €„·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á€… €™€™€™€Ù€™€™€„€…,€è€¡ ‰8‰8!„€¡€¡€™€„€…€™€†z, €‡€é,  /€™| €‡·z\V4à‰€ë€ì€‡€™€™€™€¢k‚p'‚p(€¢8€¢€¢€¢€¢€Ù€¢€¢€¢€±€¢€¢€¢€íQ€£k‚u&‚u'€¤€‡UP€¤8€¤€¤€¤€¤€Ù€¤€¤€¤€±€¤€ˆV€£€¤$ €‰B€£$   &€£€‰o€¥ U,U.„€¥ ·z\V4à‰€…)·z\V4à‰s B€Š€Ú €£,  €£€£€‰  & €£€Šo€¦ U,U.„€¦ ·z\V4à‰€…)·z\V4à‰s €Ú€‹€Û/€£, ·z\V4à‰€Þ€ß·z\V4à‰€à€£/€£€Š€¤€Œz, €€²€¤| €¤  €¤  €¤   €¤  €¤ €¤ €¤  €¤  €¤ €¤ €¤ €¤ €¤·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €¤€¤€¤€±€¤,€Å€§ ˆý ˆý"„€§€¤€Žm| €z, ·z\V4à‰€á€â·z\V4à‰€Â€‹€z, €€‘N€¤, €€’€Æ€¤, €ˆ€£€¤·z\V4à‰€à€ã€£€£€‹ €¤ €¤  , €‘€’ €¤ €¤   €‘€’ €¤ €¤   €‘€’ €¤ €¤  , €‘€’ €¤€¤ -€‘€’ €¤€¤ -€‘€’ €¤€¤ ,€‘€’ €¤€¤ -€‘€’ €¤€¤  , €‘€’ €¤€¤  -€‘€’ €¤€¤  -€‘€’ €¤€¤  , €‘€’ €¤€¤  -€‘€’ €¤€¤ €¤·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €‘ €’ €¤€¤ €¤·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €‘ €’ €¤€¤€¤€¤8€¤€¤€¤€‘€’,€É€¨€Ê ‰Œ#‰Œ%„€©€Ë ‰Œ&‰Œ(„€ª€‡ ‰Œ)‰Œ+„€¨€©€ª€¤€¤€¤€‘€’€Ž  €Ž  2€Žo€« U,U.„€«·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€“N€¤, €€”K, €Ž €¤   €“   €” €¤   €“   €” €¤·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €“·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á€” €¤€¤€¤€Ù€¤€¤€“€”,€è€¬ ‰8‰8!„€¬€¬€¤€“€”€¤€•z, €–€é,  /€£€‹ €–·z\V4à‰€ë€ì€–€¤€£€¤€£€¤€£€¤€­k‚u&‚u'€®€‡UP€®8€®€®€®€®€Ù€®€®€®€±€®€­€®€­€®€îJ€¯k‚‡‚‡€—B€¯$ €˜K$  ;€¯€¯€—€˜€¯€¯€¯€¯€°k‚‡‚‡€°€°M€±k‚‹‚‹€™B€±$ €šK$ €›€ï€±$  <€±€™€š€›€±€±€±€±€²k‚‹‚‹€²€²€ð€ñw³¶œœ1€ò€³€ó++„ ,€ô€´ƒ ƒ"„ 2€´€³2€³€µ€ó++„ 2€µ1€ö€÷¶¶œœ€øO¶Ìœ©3€ò€¶€ó „ 4€¶·z\V4à‰€ú)4€¶€·‚2‚=„ €·€œ€û4€¶. €N€¶, €¶ € €¶ € €¶  € €¶ € €¶ € €¶  € ·z\V4à‰s·z\V4à‰H·z\V4à‰s€.€ü€¸UP€¸€¶€4€¶€¹‚2‚=„N€¹€Æ€¹€ž€û4€¶. €ŸN€¶, € €Æ€¶, €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶  2€Ÿ€  €¶  2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶  2€Ÿ€  €¶  2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶ 2€Ÿ€  €¶·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â €Ÿ € .€ý€º †&2†&4„€º€º€¶€Ÿ€ 4€¶€»€ó „ 4€»3€þ3€ÿ3€¼€ó!=!?„€¡€¼$ €¢€¼€¼$ €£5€¼€¼$ 6€½€Ê…ä…ä„€¾€Ë…ä…ä„€¿€‡…ä …ä"„€½€¾€¿5€½€¾€¿€À€Ê…ä…ä„€Á€Ë…ä…䄀€‡…ä …ä"„€À€Á€Â5€À€Á€Â€¼€¼€¢ 4€¼·z\V4à‰€ú)4€¼€Ã‚2‚=„ €Ã€¤€û4€¼& €¥N€¼$ €¡€¼€¥4€¼€Ä‚2‚=„N€Ä€Æ€Ä€¦€û4€¼& €§N€¼$ €¨€Æ€¼$ 6€Å€Ê…ä…䄀ƀ˅ä…䄀ǀ‡…ä …ä"„5€Å€Æ€Ç€Å€Æ€Ç€È€Ê…ä…䄀ɀ˅ä…䄀ʀ‡…ä …ä"„5€È€É€Ê€È€É€Ê€¼€¼€£€¼€¼€§€¨4€¼€¼€¼4€¼€¼€¼€¼4€¼€Ë€ó!=!?„€Ë€Ë€Ë4€ËÌÌ©©°LÌ©>7j€Ì „€© €Ì$  †˜†˜Ž €Í†˜†˜Ž€Í€Ì€©€Ì€Î „€Î7€œ77Y7Z7W7 7 7~€Ï ..„ €Ï€Ï€Ð ..„€Ð7%7&7}€ÑUP€ª €Ñ$ €ª €Ñ€Ñ€ÒUP€Ò7€€ÓUP€« €Ó$ €¬€Ó$ €Ôˆ,ˆ,„€Ô€Ô€Ô€Ó€«€¬€Ó€Ó€Ó€Ó€Ó€Ó€ÕUP€Õ€Õ€Õ77€“7X7T77€‰7€Œ77€‹7€Š7€7€£7€¡7€ 7€ž7€¤7€¢7€Ÿ7€7€7€7€Ž7€–7€—7€’7€‘7€”7€•7€š7€›7€˜7€™7€¨7€©7€ª7€¬€ÖUP€­€Ú €Ö$ 8€‚€×ƒ ƒ !„ €×€×€Ö€­€Ö €Ö€Ö€ØUP €Ø€Ø7€«€ÙUP€® €Ù$  €Ù€Ù€® €Ù€Ù €Ù€ÚUP€Ú €Ú7€­7€®7€°(€Û q+q,€Û8€Û€Û€Û€Û€±€Û€¯ €Û$ €°€Ú €Û,  €Û€Û€¯€±€Û/€Û, ·z\V4à‰€Þ€ß·z\V4à‰€à€Û/€Û€°€Û€²z, €³€²€Û| €Û  €Û  €Û   €Û  €Û €Û €Û  €Û  €Û €Û €Û €Û €Û·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €Û€Û€Û€±€Û,€Å€Ü ˆý ˆý"„€Ü€Û€´z, ·z\V4à‰€á€â·z\V4à‰€Â€±€µz, €³€¶N€Û, €³€·€Æ€Û, ·z\V4à‰€à€ã€Û€Û€± €Û €Û  , €¶€· €Û €Û   €¶€· €Û €Û   €¶€· €Û €Û  , €¶€· €Û€Û -€¶€· €Û€Û -€¶€· €Û€Û ,€¶€· €Û€Û -€¶€· €Û€Û  , €¶€· €Û€Û  -€¶€· €Û€Û  -€¶€· €Û€Û  , €¶€· €Û€Û  -€¶€· €Û€Û €Û·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €¶ €· €Û€Û €Û·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €¶ €· €Û€Û€Û€Û8€Û€Û€Û€¶€·,€É€Ý€Ê ‰Œ#‰Œ%„€Þ€Ë ‰Œ&‰Œ(„€ß€‡ ‰Œ)‰Œ+„€Ý€Þ€ß€Û€Û€Û€¶€·€³€Û€¸z, €¹€é,  /€Û€± €¹·z\V4à‰€ë€ì€¹€Û€Û€Û€à q+q,€à8€à€à€à€à€±€à€à€à7€Ì*€á t*t+€â€‡UP€â8€â€â€â€â€±€â€ºV€á€â$ €» €á$ €¼€Ú €á,  €á€á€»€½€Û/€á, ·z\V4à‰€Þ€ß·z\V4à‰€à€á/€á€¼€â€¾z, €¿€²€â| €â  €â  €â   €â  €â €â €â  €â  €â €â €â €â €â·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €â€â€â€±€â,€Å€ã ˆý ˆý"„€ã€â€Àz, ·z\V4à‰€á€â·z\V4à‰€Â€½€Áz, €¿€ÂN€â, €¿€Ã€Æ€â, €º€á€â·z\V4à‰€à€ã€á€á€½ €â €â  , €Â€Ã €â €â   €Â€Ã €â €â   €Â€Ã €â €â  , €Â€Ã €â€â -€Â€Ã €â€â -€Â€Ã €â€â ,€Â€Ã €â€â -€Â€Ã €â€â  , €Â€Ã €â€â  -€Â€Ã €â€â  -€Â€Ã €â€â  , €Â€Ã €â€â  -€Â€Ã €â€â €â·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s €Â €Ã €â€â €â·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á €Â €Ã €â€â€â€â8€â€â€â€Â€Ã,€É€ä€Ê ‰Œ#‰Œ%„€å€Ë ‰Œ&‰Œ(„€æ€‡ ‰Œ)‰Œ+„€ä€å€æ€â€â€â€Â€Ã€¿€â€Äz, €Å€é,  /€á€½ €Å·z\V4à‰€ë€ì€Å€â€á€â€á€â€á€â€ç t*t+€è€‡UP€è8€è€è€è€è€±€è€ç€è€ç€è7€ÕC€é w+w, €Æ €é$ €Ç€Ú €é,  €é€é€Æ  & €é€Ço€ê U,U.„€ê ·z\V4à‰€…)·z\V4à‰s €Ú€È€Û/€é, ·z\V4à‰€Þ€ß·z\V4à‰€à€é/€é€Ç€é€Éz,   2·z\V4à‰€á€â·z\V4à‰€Â€Èo€ë U,U.„€ë·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€Ê€²€é| ·z\V4à‰€à€ã€é€é€È€Ëz, ·z\V4à‰€á€â·z\V4à‰€Â€È€Ìz, €Í€Ï€é, ·z\V4à‰€à€ã€é€é€È €Î€Æ€é, €Ê €é 3€Í€Î €é 3€Í€Î €é 3€Í€Î €é 3€Í€Î €é  3€Í€Î €é  3€Í€Î €é 3€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é 4€Í€Î €é  3€Í€Î €é  3€Í€Î €é 3€Í€Î.€Ö€ì „œ/„œ1„€ì€ì€é€Í€Î€Ê€Í€Ê€é€Ïz, €Ð€é,  /€é€È €Ð·z\V4à‰€ë€ì€Ð€é€é€é€í w+w, €í€í7€×N€î z&z'€ï€‡UP €ÑV€î€ï$ €Ò €î$ €Ó€Ú €î,  €î€î€Ò  & €î€Óo€ð U,U.„€ð ·z\V4à‰€…)·z\V4à‰s €Ú€Ô€Û/€î, ·z\V4à‰€Þ€ß·z\V4à‰€à€î/€î€Ó€î€Õz,   2·z\V4à‰€á€â·z\V4à‰€Â€Ôo€ñ U,U.„€ñ·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€Ö€î, ·z\V4à‰€à€ã€î€î€Ô€×€²€ï| €Ñ€î€ï€Ö€Ø€Ó€î| €Ö€Ùz, ·z\V4à‰€á€â·z\V4à‰€Â€Ô€Úz, €Û€Ô€î, ·z\V4à‰€à€ã€î€î€Ô€Ü€Ï€ï, €Ñ€î€ï€Û €Ý€Æ€ï, €× €ï 3€Ü€Ý €ï 3€Ü€Ý €ï 3€Ü€Ý €ï 3€Ü€Ý €ï  3€Ü€Ý €ï  3€Ü€Ý €ï 3€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï 4€Ü€Ý €ï  3€Ü€Ý €ï  3€Ü€Ý €ï 3€Ü€Ý.€Ö€ò „œ/„œ1„€ò€ò€ï€Ü€Ý€×€Ü€Ø€Û€Ø€î€Þz, €ß€é,  /€î€Ô €ß·z\V4à‰€ë€ì€ß€î€î€î€î€ï€î€î€ó z&z'€ô€‡UP €ó€ô€ó€ó7€ÍC€õ }+}, €à €õ$ €á€Ú €õ,  €õ€õ€à  & €õ€áo€ö U,U.„€ö ·z\V4à‰€…)·z\V4à‰s €Ú€â€Û/€õ, ·z\V4à‰€Þ€ß·z\V4à‰€à€õ/€õ€á€õ€ãz,   2·z\V4à‰€á€â·z\V4à‰€Â€âo€÷ U,U.„€÷·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€ä€²€õ| ·z\V4à‰€à€ã€õ€õ€â€åz, ·z\V4à‰€á€â·z\V4à‰€Â€â€æz, €ç€Ï€õ, ·z\V4à‰€à€ã€õ€õ€â €è€Æ€õ, €ä €õ 5€ç€è €õ 5€ç€è €õ 5€ç€è €õ 5€ç€è €õ  5€ç€è €õ  5€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 6€ç€è €õ 5€ç€è €õ  5€ç€è €õ  5€ç€è €õ 5€ç€è.€Ñ€ø „•,„•.„€ø€ø€õ€ç€è€ä€ç€ä€õ€éz, €ê€é,  /€õ€â €ê·z\V4à‰€ë€ì€ê€õ€õ€õ€ù }+}, €ù€ù7€ÒN€ú €&€'€û€‡UP €ëV€ú€û$ €ì €ú$ €í€Ú €ú,  €ú€ú€ì  & €ú€ío€ü U,U.„€ü ·z\V4à‰€…)·z\V4à‰s €Ú€î€Û/€ú, ·z\V4à‰€Þ€ß·z\V4à‰€à€ú/€ú€í€ú€ïz,   2·z\V4à‰€á€â·z\V4à‰€Â€îo€ý U,U.„€ý·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú€ð€ú, ·z\V4à‰€à€ã€ú€ú€î€ñ€²€û| €ë€ú€û€ð€ò€Ó€ú| €ð€óz, ·z\V4à‰€á€â·z\V4à‰€Â€î€ôz, €õ€Ô€ú, ·z\V4à‰€à€ã€ú€ú€î€ö€Ï€û, €ë€ú€û€õ €÷€Æ€û, €ñ €û 5€ö€÷ €û 5€ö€÷ €û 5€ö€÷ €û 5€ö€÷ €û  5€ö€÷ €û  5€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 6€ö€÷ €û 5€ö€÷ €û  5€ö€÷ €û  5€ö€÷ €û 5€ö€÷.€Ñ€þ „•,„•.„€þ€þ€û€ö€÷€ñ€ö€ò€õ€ò€ú€øz, €ù€é,  /€ú€î €ù·z\V4à‰€ë€ì€ù€ú€ú€ú€ú€û€ú€ú€ÿ €&€'€‡UP €ÿ€ÿ€ÿ7€ØE ƒ+ƒ,8€Ù€±€ú $ €û€Ú ,  €ú  & €ûo U,U.„ ·z\V4à‰€…)·z\V4à‰s €Ú€ü€Û/, ·z\V4à‰€Þ€ß·z\V4à‰€à/€û€ýz, €þ€²|                    ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €±,€Å ˆý ˆý"„€ÿm| z, ·z\V4à‰€á€â·z\V4à‰€Â€üz, €þN, €þ€Æ, ·z\V4à‰€à€ã€ü    ,               ,   -  -  ,  -   ,    -   -   ,    -  ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s    ·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á   8,€É€Ê ‰Œ#‰Œ%„€Ë ‰Œ&‰Œ(„€‡ ‰Œ)‰Œ+„€ÿ  €ÿ  2€ÿo U,U.„·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€ÚN, €þK, €ÿ               ·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á €Ù,€è ‰8‰8!„z, €é,  /€ü ·z\V4à‰€ë€ì  ƒ+ƒ, 8    €Ù   €±   7€íG  †*†+ €‡UP 8    €Ù   €± V  $   $  €Ú  ,       &   o  U,U.„  ·z\V4à‰€…)·z\V4à‰s €Ú €Û/ , ·z\V4à‰€Þ€ß·z\V4à‰€à /    z,  €² |                                 ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã       €± ,€Å  ˆý ˆý"„  m| z, ·z\V4à‰€á€â·z\V4à‰€Â z,  N ,  €Æ ,   ·z\V4à‰€à€ã        ,                     ,     -    -    ,    -     ,      -     -     ,      -     ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s       ·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á       8   ,€É€Ê ‰Œ#‰Œ%„€Ë ‰Œ&‰Œ(„€‡ ‰Œ)‰Œ+„       2o U,U.„·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€ÚN ,  K,                   ·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á    €Ù  ,€è ‰8‰8!„  z, €é,  /  ·z\V4à‰€ë€ì        †*†+€‡UP8€Ù€±7€€7€¯“!9}9*‚:‚: ‚:‚:$ €ï$ L $ (.*+&*Œ ,+\bŽ  *~&~*:;)Œ ,~\~b:;)<;)Ž         *‚:‚: ‚:‚:  9€–9€—9*‚C‚C ‚C‚C$ L $ (1%*+&*Œ &,+\bŽ %&% %&*~&~*:;)Œ ,~\~b:;)<;)Ž       *‚C‚C ‚C‚C    99W9€’9€‘9€9€”9€•9€9Y9€9€ž9€«999€ƒ9€¬9 9€‚9 9~ !!!!!EK!iA8"8#8~8$8T8W88X8€8€8€‰8€”8Y8Z8€Š8€“8€˜8€™8%8€’8€‘8€—8€–8&8}88j8€8€£8€8€€!UP"'UP ##€‡UPV!"$ ( !$ N=", 8Y$UP%€‡UP$% $=%!"V="=#, 8&'UP ''UP &='"#8('UP ))UP (=)"#=# !=#!" !=#*UP+'UP ,,€‡UP*+ *=,8*8€ƒ-+„ „ „ €Ú-$  --  -- -.+„ „ „. .8€‚8 8 8,8-8.8€¡8€­8€®8/80818283848€©8€ª858€°%/+…$'…$(„/€±/////8////!€Ú /$ "€Û//$ ·z\V4à‰€Þ€ß·z\V4à‰€à///!/#z, $€²/t /  /  /   /  / / /  /  / / / / /·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ///€±/,€Å0 ˆý ˆý"„0/%z, ·z\V4à‰€á€â·z\V4à‰€Â"&z, $'N/, $(€Æ/, ·z\V4à‰€à€ã//" / /  , '( / /   '( / /   '( / /  , '( // -'( // -'( // ,'( // -'( //  , '( //  -'( //  -'( //  , '( //  -'( // /·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ' ( // /·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ' ( ////8///'(,€É1€Ê ‰Œ#‰Œ%„2€Ë ‰Œ&‰Œ(„3€‡ ‰Œ)‰Œ+„123///'($/)z, *€é,  //" *·z\V4à‰€ë€ì*/ //4+…$'…$(„4€±4444484444 448€Ì&5+…,…, „6€‡+…,%…,&„6€±6666686666+V56$ ,€Ú 5$ -€Û/5$ ·z\V4à‰€Þ€ß·z\V4à‰€à5/5,6.z, /€²6t 6  6  6   6  6 6 6  6  6 6 6 6 6·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    666€±6,€Å7 ˆý ˆý"„760z, ·z\V4à‰€á€â·z\V4à‰€Â-1z, /2N6, /3€Æ6, +56·z\V4à‰€à€ã55- 6 6  , 23 6 6   23 6 6   23 6 6  , 23 66 -23 66 -23 66 ,23 66 -23 66  , 23 66  -23 66  -23 66  , 23 66  -23 66 6·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s 2 3 66 6·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á 2 3 6666866623,€É8€Ê ‰Œ#‰Œ%„9€Ë ‰Œ&‰Œ(„:€‡ ‰Œ)‰Œ+„89:66623/64z, 5€é,  /5- 5·z\V4à‰€ë€ì56 5656 56;+…,…, „<€‡+…,%…,&„<€±<<<<<8<<<<;< ;<8€ØF=+…4+…4,„=€±=====8=====€Ù==6€Ú =$   & =6o> U,U.„> ·z\V4à‰€…)·z\V4à‰s €Ú7€Û/=$ ·z\V4à‰€Þ€ß·z\V4à‰€à=/=6=8z, 9€²=t =  =  =   =  = = =  =  = = = = =·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    ===€±=,€Å? ˆý ˆý"„?=:mt ;z, ·z\V4à‰€á€â·z\V4à‰€Â7€Æ=, ·z\V4à‰€à€ã==7 = =  , => = =   => = =   => = =  , => == -=> == -=> == ,=> == -=> ==  , => ==  -=> ==  -=> ==  , => ==  -=> == =·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s = > == =·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á = > ====8====>,€É@€Ê ‰Œ#‰Œ%„A€Ë ‰Œ&‰Œ(„B€‡ ‰Œ)‰Œ+„@AB====>:  :  2:oC U,U.„C·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú?N=, 9@K, : =   ?   @ =   ?   @ =·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ?·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á@ ===€Ù==?@,€èD ‰8‰8!„DD=?@=Az, B€é,  /=7 B·z\V4à‰€ë€ìB= ==E+…4+…4,„E€±EEEEE8EEEEE€ÙEE EE8€íGF+…A"…A$„G€‡+…A)…A*„G€±GGGGG8GGGGG€ÙGGCVFG$ D€Ú F$   & FDoH U,U.„H ·z\V4à‰€…)·z\V4à‰s €ÚE€Û/F$ ·z\V4à‰€Þ€ß·z\V4à‰€àF/FDGFz, G€²Gt G  G  G   G  G G G  G  G G G G G·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    GGG€±G,€ÅI ˆý ˆý"„IGHmt Iz, ·z\V4à‰€á€â·z\V4à‰€ÂEJz, GKNG, GL€ÆG, CFG·z\V4à‰€à€ãFFE G G  , KL G G   KL G G   KL G G  , KL GG -KL GG -KL GG ,KL GG -KL GG  , KL GG  -KL GG  -KL GG  , KL GG  -KL GG G·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s K L GG G·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á K L GGGG8GGGKL,€ÉJ€Ê ‰Œ#‰Œ%„K€Ë ‰Œ&‰Œ(„L€‡ ‰Œ)‰Œ+„JKLGGGKLH  H  2HoM U,U.„M·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€ÚMNG, GNK, H G   M   N G   M   N G·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á M·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€ÁN GGG€ÙGGMN,€èN ‰8‰8!„NNGMNGOz, P€é,  /FE P·z\V4à‰€ë€ìPG FGFG FGO+…A"…A$„P€‡+…A)…A*„P€±PPPPP8PPPPP€ÙPPOP OP8€ÍDQ+…N$…N% Q€Ú Q$   & QQoR U,U.„R ·z\V4à‰€…)·z\V4à‰s €ÚR€Û/Q$ ·z\V4à‰€Þ€ß·z\V4à‰€àQ/QQQSz,   2·z\V4à‰€á€â·z\V4à‰€ÂRoS U,U.„S·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€ÚT€²Qt ·z\V4à‰€à€ãQQRUz, ·z\V4à‰€á€â·z\V4à‰€ÂRVz, W€ÏQ$ ·z\V4à‰€à€ãQQR X€ÆQ, T Q 5WX Q 5WX Q 5WX Q 5WX Q  5WX Q  5WX Q 6WX Q 6WX Q 6WX Q 6WX Q 6WX Q 5WX Q  5WX Q  5WX Q 5WX.€ÑT „•,„•.„TTQWXTWTQYz, Z€é,  /QR Z·z\V4à‰€ë€ìZQ QQU+…N$…N%  UU8€ÒNV+…[…[ „W€‡+…[$…[&„ [VVW$ \€Ú V$   & V\oX U,U.„X ·z\V4à‰€…)·z\V4à‰s €Ú]€Û/V$ ·z\V4à‰€Þ€ß·z\V4à‰€àV/V\V^z,   2·z\V4à‰€á€â·z\V4à‰€Â]oY U,U.„Y·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Ú_V$ ·z\V4à‰€à€ãVV]`€²Wt [VW_a€ÓVt _bz, ·z\V4à‰€á€â·z\V4à‰€Â]cz, d€ÔV$ ·z\V4à‰€à€ãVV]e€ÏW$ [VWd f€ÆW, ` W 5ef W 5ef W 5ef W 5ef W  5ef W  5ef W 6ef W 6ef W 6ef W 6ef W 6ef W 5ef W  5ef W  5ef W 5ef.€ÑZ „•,„•.„ZZWef`eadaVgz, h€é,  /V] h·z\V4à‰€ë€ìhV VVVW VV[+…[…[ „\€‡+…[$…[&„ [\ [[8€ÕD]+…l$…l% i€Ú ]$   & ]io^ U,U.„^ ·z\V4à‰€…)·z\V4à‰s €Új€Û/]$ ·z\V4à‰€Þ€ß·z\V4à‰€à]/]i]kz,   2·z\V4à‰€á€â·z\V4à‰€Âjo_ U,U.„_·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Úl€²]t ·z\V4à‰€à€ã]]jmz, ·z\V4à‰€á€â·z\V4à‰€Âjnz, o€Ï]$ ·z\V4à‰€à€ã]]j p€Æ], l ] 3op ] 3op ] 3op ] 3op ]  3op ]  3op ] 3op ] 4op ] 4op ] 4op ] 4op ] 4op ]  3op ]  3op ] 3op.€Ö` „œ/„œ1„``]oplol]qz, r€é,  /]j r·z\V4à‰€ë€ìr] ]]a+…l$…l%  aa8€×Nb+…y…y „c€‡+…y$…y&„ sVbc$ t€Ú b$   & btod U,U.„d ·z\V4à‰€…)·z\V4à‰s €Úu€Û/b$ ·z\V4à‰€Þ€ß·z\V4à‰€àb/btbvz,   2·z\V4à‰€á€â·z\V4à‰€Âuoe U,U.„e·z\V4à‰r)·z\V4à‰s·z\V4à‰s€ä€Úwb$ ·z\V4à‰€à€ãbbux€²ct sbcwy€Óbt wzz, ·z\V4à‰€á€â·z\V4à‰€Âu{z, |€Ôb$ ·z\V4à‰€à€ãbbu}€Ïc$ sbc| ~€Æc, x c 3}~ c 3}~ c 3}~ c 3}~ c  3}~ c  3}~ c 3}~ c 4}~ c 4}~ c 4}~ c 4}~ c 4}~ c  3}~ c  3}~ c 3}~.€Öf „œ/„œ1„ffc}~x}y|ybz, €€é,  /bu €·z\V4à‰€ë€ì€b bbbc bbg+…y…y „h€‡+…y$…y&„ gh gg8687888€8€Ž8%9i}Œ >}>:>i;‚݂݄ Ni$ ‚< i$ 4.+5&(Œ  ++ +j;ù&ù(:;)Œ  jj ji‚ i i ii i ik;‚݂݄ k k k>,>l;‚ã‚ã „ ƒNl$ „< l$ 41,5&(Œ  ,, ,m;ù&ù(:;)Œ  mm ml„ƒ l l ll l ln;‚ã‚ã „ n n n>=o;‚æ‚æ„ …> o$ †? o$ 4815&(Œ  1 1 1p;ù&ù(:;)Œ  p p po o o…† o o o o o oq;‚æ‚æ„  q q q>@>A>B>W>~>€>€>€”>€•>€>€ž>Y>m>€ƒr;ƒƒ  ‡r$ 4)95&(Œ  9 9s;ù&ù(:;)Œ  s sr rr‡ rr rt;ƒƒ  t t> >€‚> >€«u;ƒ#ƒ#„ ˆ< u$  u uˆ u u uv;ƒ#ƒ#„  v v>€¬w;ƒ&ƒ& ‰C w$ 4)95&(Œ  9 9x;ù&ù(:;)Œ  x xw‰ w w wy;ƒ&ƒ&  y y>Dz;ƒ* ƒ*"„ Š> z$ ‹? z$ 4705&(Œ  0 0 0{;ù&ù(:;)Œ  { { {z z zŠ‹ z z z z z z|;ƒ* ƒ*"„  | | |>E>F>G>H>I>JK}}ŒŒLP}ߌ›A?M)}NO „A}?MP~NO „A~?MQNO „AB?S)€NO„ TO„C€?SP‚NO„ ƒƒTO„C‚ƒƒ?SQ„NO„ ……TO„C„…D„…?V)†O,,„E†?VP‡O,,„E‡‡?VQˆO,,„EˆFˆ?XYH?X[‰\‚:0‚:2„H‰H‰?X]Š\‚+‚+ „ŠHŠ?X^‹\‚3.‚30„H‹H‹Œ_‚Ú$‚Ú%Œ`& NHŒ$ HŒHŒHŒHŒHŒ_‚Ú$‚Ú%HH?XaŽ\‚U(‚U*„€‡\‚UC‚UE„HŽŽHH?Xb\‚HO‚HQ„‘€‡\‚H8‚H:„H‘H‘?XcHH?Xd’\ÿ!ÿ#„ ’’HH?Xe“\‚G‚I„HH“H“?Xf”\‚d.‚d0„H”H”?Xg•\‚q+‚q-„H•H•H•?hiH?hl–\)5)7„–H–?hn?ho?hp—\€¸0€¸2„H—HK—?hr˜\€;€=„H˜  ˜?hsH ?ht™\ 8 :„ H™H™?huš\àà „Hšš ?hvH ?hwH?hx  H?hz! H?h|›\p€‰p€‹„"!!› H›?h|œ~\…)….„\…€…€Ÿ„œœ"!! H?h|ž~\›*›/„Ÿ\›7›<„ \›€³›€µ„žŸžŸ"!!  H ?h|¡~\²*²/„¢\²7²<„£€\²D²I„¤\²€È²€Ê„¡¢£¡¢£"!!¤ H¤?h¥\Å5Å7„H¥"!!¥!?h‚¦ƒ\;k;o„ §§\;{;}„D¦§ H§?h„¨\Ó2Ó4„H¨H?h…H?h†H?h‡©\€û5€û7„H© HH©?hˆ#H?hŠH?h‹ª\€Á7€Á9„HªHª?Œ«\‚Ê‚Ê!„P««?Ž)¬\‚܂܄Q¬H Q¬?Ž­\‚܂܄Q­?Ž‘®\‚܂܄Q®?Ž’¯\‚܂܄Q¯?Ž“°\‚܂܄Q°F$?Ž•±\‚܂܄Q±S$?Ž—²\‚܂܄Q²S$?Žs³\‚܂܄Q³?Ž˜´\‚܂܄Q´´?Ž™µ\‚܂܄¶\ƒAƒG„QµP¶µ  ¶?Žš·\‚܂܄¸\‚ÿ>‚ÿD„Q·P¸· ¸?Ž›¹\‚܂܄º\ƒFƒL„Q¹Pº¹ H º?Žœ»\‚܂܄¼\ƒ Cƒ I„Q»P¼» H¼?޽\‚܂܄Q½ H½?Žž¾\‚܂܄Q¾ H ¾?ŽŸ¿\‚܂܄À\ƒG.ƒG0„Q¿¿ HÀ HÀ?Ž Á\‚܂܄Â\ƒT1ƒT3„QÁÁ H H Â?ŽsÃ\‚܂܄QÃH QÃÄ_‡^‡^„Ž¡QÄH$ ¢ $ £QÄ$ ?Ž)¬\‚܂܄Q¬H Q¬Å_‡^‡^„QÅH QÅÄQÄH Ž?Žs³\‚܂܄Q³Æ_‡^‡^„QÆÄQÄQÄH QÄÇ_‡^‡^„QÇH QǤÈÈ‘‘¥ÈÈ‘‘¦ÈÈ‘‘§ÖÈÊ‘‘T¨©%  HT¨©%HT¨«%  HT¬.È\‚ž‚ž„VÈÈT¬­É\‚ž‚ž„VÉÉ®”ÊÏ‘“ WYW€”W€•W€“W€¡WÊ_‡ð'‡ð)„˃_‡ð‡ð&„ Ê‘VÊ$ ’¯DËÊ$ T¬.È\‚ž‚ž„VÈÈÌ_†b†b„VÌÌÊ’‘DËÊÊDËÊÍ_‡ð'‡ð)„΃_‡ð‡ð&„ ÍÍDÎÍW.W°W±²ÏÙ“—X³´Ï‹ý‹ý„ÏYÏX³µÐ‹ý‹ý„ÐYÐX³¶Ñ‹ý‹ý„YÑÒ •ȕȄ“NYÒ& ”, YÒÓ •ȕȄYÓX³·Ô‹ý‹ý„YÔÔÕ •ȕȄ•NYÕ& –, Z³¸Ö‹ï‹ï„YÖÖ× •…•…„Y××Õ•ÕÕYÕÕØ •ȕȄYØØ¹LÙß—› [Y[€“[€”[€•[€¡[Ù_ˆf"ˆf$„—VÙ$ ˜¯VÙ$ T¬.È\‚ž‚ž„VÈÈÚ_†b†b„VÚÚÙ˜—VÙÙVÙÛ_ˆf"ˆf$„ÛVÛ[ºÜ_ˆiˆi„™VÜ$ š¯VÜ$ T¬­É\‚ž‚ž„VÉÉÝ_†b†b„VÝÝÜš™VÜÜVÜÞ_ˆiˆi„ÞVÞ[.[°[±»4ßß››\¼½&H'\ÀÁ()H$¡ß¡›û€’;Ã)*;ø*;Ã)*;Ä)+;););Å),;Æ)-;Ç).;Ǹ.;È)/;É)0;ɸ0;Ê)1;ÊË1;Ê)1;Ì)2;Í)3;Î)4;Ï)5;Ð)6;Ñ)7;Ò)8;Ó)9;Ô):;Õ);;ÕÖ;;×)<;Ø)=;Ù)>;Ú)?;Û)@;Ü)A;Ý)B;ÝÞB;ÝßB;ÝàB;á)CD;áãDC;áäD;áåD;á)CD;á)CD;æ)E;æçE;è)FG;èêGF;ë)H;ëìH;í)I;íîI=;ï)J;ï¸J;ð)K;ðìK;ðñK;ðòK;ðóK;ðôK;ðõK;ö)L;÷)M;ø)N;ù)O;ú)P;û)Q;ü)R;üýR;ü)R;q߀Ê……Žà€Ë……ŽKßàKßà;qá€Ê……Žâ€Ë……ŽKáâã€Ê ‹&‹&Žä€Ë ‹&‹&Ž› Kãä, œ , ;q߀Ê……Žà€Ë……ŽKßàKßàå€Ê ‹&‹&Žæ€Ë ‹&‹&ŽKåæKåæãä›KãäœKãäç€Ê ‹&‹&Žè€Ë ‹&‹&ŽKçè;qé€Ê……Žê€Ë……ŽKéê;që€Ê……Žì€Ë……ŽKëì;qí€Ê……Žî€Ë……ŽKíîï€Ê ‹&‹&Žð€Ë ‹&‹&Ž Kïð, ž, ;që€Ê……Žì€Ë……ŽKëìñ€Ê ‹&‹&Žò€Ë ‹&‹&ŽKñòïð ·z\V4à‰Kïðó€Ê ‹&‹&Žô€Ë ‹&‹&ŽKóô;qõ€Ê……Žö€Ë……ŽKõö;þ÷€Ê……Žø€Ë……Žùÿ……Ž€Š÷øù€Š÷øù;þú€Ê……Žû€Ë……Žüÿ……Ž€Šúûüý€Ê ‹,‹,Žþ€Ë ‹,‹,Žÿÿ ‹,‹,ŽŸ €Šýþÿ,   , ;þ÷€Ê……Žø€Ë……Žùÿ……Ž€Š÷øù€Š÷øù‚€Ê ‹,‹,Ž‚€Ë ‹,‹,Ž‚ÿ ‹,‹,ހЂ‚‚€Š‚‚‚ýþÿŸ€Šýþÿ €Šýþÿ‚€Ê ‹,‹,Ž‚€Ë ‹,‹,Ž‚ÿ ‹,‹,ހЂ‚‚;þ‚€Ê……Ž‚€Ë……Ž‚ÿ……ހЂ‚‚;þ‚ €Ê……Ž‚ €Ë……Ž‚ ÿ……ހЂ ‚ ‚ ;þ‚ €Ê……Ž‚ €Ë……Ž‚ÿ……ހЂ ‚ ‚‚€Ê ‹,‹,Ž‚€Ë ‹,‹,Ž‚ÿ ‹,‹,Ž¡ €Š‚‚‚, ¢, ;þ‚ €Ê……Ž‚ €Ë……Ž‚ ÿ……ހЂ ‚ ‚ ‚€Ê ‹,‹,Ž‚€Ë ‹,‹,Ž‚ÿ ‹,‹,ހЂ‚‚‚‚‚¡ ·z\V4à‰€Š‚‚‚‚€Ê ‹,‹,Ž‚€Ë ‹,‹,Ž‚ÿ ‹,‹,ހЂ‚‚;þ‚€Ê……Ž‚€Ë……Ž‚ÿ……ހЂ‚‚;‚‚€Ê…$…$Ž‚€Ë…$…$Ž‚ÿ…$…$Ž‚‚…$…$Ž€‹‚‚‚‚€‹‚‚‚‚;‚‚€Ê…$…$Ž‚ €Ë…$…$Ž‚!ÿ…$…$Ž‚"‚…$…$Ž€‹‚‚ ‚!‚"‚#€Ê ‹3‹3Ž‚$€Ë ‹3‹3Ž‚%ÿ ‹3‹3Ž‚&‚ ‹3‹3Ž£ €‹‚#‚$‚%‚&, ¤ , ;‚‚€Ê…$…$Ž‚€Ë…$…$Ž‚ÿ…$…$Ž‚‚…$…$Ž€‹‚‚‚‚€‹‚‚‚‚‚'€Ê ‹3‹3Ž‚(€Ë ‹3‹3Ž‚)ÿ ‹3‹3Ž‚*‚ ‹3‹3Ž€‹‚'‚(‚)‚*€‹‚'‚(‚)‚*‚#‚$‚%‚&£€‹‚#‚$‚%‚&¤€‹‚#‚$‚%‚&‚+€Ê ‹3‹3Ž‚,€Ë ‹3‹3Ž‚-ÿ ‹3‹3Ž‚.‚ ‹3‹3Ž€‹‚+‚,‚-‚.;‚‚/€Ê…$…$Ž‚0€Ë…$…$Ž‚1ÿ…$…$Ž‚2‚…$…$Ž€‹‚/‚0‚1‚2;‚‚3€Ê…$…$Ž‚4€Ë…$…$Ž‚5ÿ…$…$Ž‚6‚…$…$Ž€‹‚3‚4‚5‚6;‚‚7€Ê…$…$Ž‚8€Ë…$…$Ž‚9ÿ…$…$Ž‚:‚…$…$Ž€‹‚7‚8‚9‚:‚;€Ê ‹3‹3Ž‚<€Ë ‹3‹3Ž‚=ÿ ‹3‹3Ž‚>‚ ‹3‹3Ž¥ €‹‚;‚<‚=‚>, ¦, ;‚‚3€Ê…$…$Ž‚4€Ë…$…$Ž‚5ÿ…$…$Ž‚6‚…$…$Ž€‹‚3‚4‚5‚6‚?€Ê ‹3‹3Ž‚@€Ë ‹3‹3Ž‚Aÿ ‹3‹3Ž‚B‚ ‹3‹3Ž€‹‚?‚@‚A‚B‚;‚<‚=‚>¥ ·z\V4à‰€‹‚;‚<‚=‚>‚C€Ê ‹3‹3Ž‚D€Ë ‹3‹3Ž‚Eÿ ‹3‹3Ž‚F‚ ‹3‹3Ž€‹‚C‚D‚E‚F;‚‚G€Ê…$…$Ž‚H€Ë…$…$Ž‚Iÿ…$…$Ž‚J‚…$…$Ž€‹‚G‚H‚I‚J;‚‚K€Ê…1…1Ž‚L€Ë…1…1Ž‚Mÿ…1…1Ž‚N‚…1…1Ž‚O‚…1 …1#Ž€Œ‚K‚L‚M‚N‚O€Œ‚K‚L‚M‚N‚O;‚‚P€Ê…1…1Ž‚Q€Ë…1…1Ž‚Rÿ…1…1Ž‚S‚…1…1Ž‚T‚…1 …1#Ž€Œ‚P‚Q‚R‚S‚T‚U€Ê ‹;‹;Ž‚V€Ë ‹;‹;Ž‚Wÿ ‹;‹;Ž‚X‚ ‹;‹;Ž‚Y‚ ‹; ‹;#ާ €Œ‚U‚V‚W‚X‚Y, ¨ , ;‚‚K€Ê…1…1Ž‚L€Ë…1…1Ž‚Mÿ…1…1Ž‚N‚…1…1Ž‚O‚…1 …1#Ž€Œ‚K‚L‚M‚N‚O€Œ‚K‚L‚M‚N‚O‚Z€Ê ‹;‹;Ž‚[€Ë ‹;‹;Ž‚\ÿ ‹;‹;Ž‚]‚ ‹;‹;Ž‚^‚ ‹; ‹;#Ž€Œ‚Z‚[‚\‚]‚^€Œ‚Z‚[‚\‚]‚^‚U‚V‚W‚X‚Y§€Œ‚U‚V‚W‚X‚Y¨€Œ‚U‚V‚W‚X‚Y‚_€Ê ‹;‹;Ž‚`€Ë ‹;‹;Ž‚aÿ ‹;‹;Ž‚b‚ ‹;‹;Ž‚c‚ ‹; ‹;#Ž€Œ‚_‚`‚a‚b‚c;‚‚d€Ê…1…1Ž‚e€Ë…1…1Ž‚fÿ…1…1Ž‚g‚…1…1Ž‚h‚…1 …1#Ž€Œ‚d‚e‚f‚g‚h;‚‚i€Ê…1…1Ž‚j€Ë…1…1Ž‚kÿ…1…1Ž‚l‚…1…1Ž‚m‚…1 …1#Ž€Œ‚i‚j‚k‚l‚m;‚‚n€Ê…1…1Ž‚o€Ë…1…1Ž‚pÿ…1…1Ž‚q‚…1…1Ž‚r‚…1 …1#Ž€Œ‚n‚o‚p‚q‚r‚s€Ê ‹;‹;Ž‚t€Ë ‹;‹;Ž‚uÿ ‹;‹;Ž‚v‚ ‹;‹;Ž‚w‚ ‹; ‹;#Ž© €Œ‚s‚t‚u‚v‚w, ª, ;‚‚i€Ê…1…1Ž‚j€Ë…1…1Ž‚kÿ…1…1Ž‚l‚…1…1Ž‚m‚…1 …1#Ž€Œ‚i‚j‚k‚l‚m‚x€Ê ‹;‹;Ž‚y€Ë ‹;‹;Ž‚zÿ ‹;‹;Ž‚{‚ ‹;‹;Ž‚|‚ ‹; ‹;#Ž€Œ‚x‚y‚z‚{‚|‚s‚t‚u‚v‚w© ·z\V4à‰€Œ‚s‚t‚u‚v‚w‚}€Ê ‹;‹;Ž‚~€Ë ‹;‹;Ž‚ÿ ‹;‹;Ž‚€‚ ‹;‹;Ž‚‚ ‹; ‹;#Ž€Œ‚}‚~‚‚€‚;‚‚‚€Ê…1…1Ž‚ƒ€Ë…1…1Ž‚„ÿ…1…1Ž‚…‚…1…1Ž‚†‚…1 …1#Ž€Œ‚‚‚ƒ‚„‚…‚†;‚‚‡€Ê…@…@Ž‚ˆ€Ë…@…@Ž‚‰ÿ…@…@ނЂ…@…@Ž‚‹‚…@ …@#Ž‚Œ‚…@$…@'Ž€‚‡‚ˆ‚‰‚Š‚‹‚Œ€‚‡‚ˆ‚‰‚Š‚‹‚Œ;‚‚€Ê…@…@ނހË…@…@Ž‚ÿ…@…@Ž‚‚…@…@Ž‚‘‚…@ …@#Ž‚’‚…@$…@'Ž€‚‚Ž‚‚‚‘‚’‚“€Ê ‹D‹DŽ‚”€Ë ‹D‹DŽ‚•ÿ ‹D‹DŽ‚–‚ ‹D‹DŽ‚—‚ ‹D ‹D#Ž‚˜‚ ‹D$‹D'Ž« €‚“‚”‚•‚–‚—‚˜, ¬ , ;‚‚‡€Ê…@…@Ž‚ˆ€Ë…@…@Ž‚‰ÿ…@…@ނЂ…@…@Ž‚‹‚…@ …@#Ž‚Œ‚…@$…@'Ž€‚‡‚ˆ‚‰‚Š‚‹‚Œ€‚‡‚ˆ‚‰‚Š‚‹‚Œ‚™€Ê ‹D‹DŽ‚š€Ë ‹D‹DŽ‚›ÿ ‹D‹DŽ‚œ‚ ‹D‹DŽ‚‚ ‹D ‹D#Ž‚ž‚ ‹D$‹D'Ž€‚™‚š‚›‚œ‚‚ž€‚™‚š‚›‚œ‚‚ž‚“‚”‚•‚–‚—‚˜«€‚“‚”‚•‚–‚—‚˜¬€‚“‚”‚•‚–‚—‚˜‚Ÿ€Ê ‹D‹DŽ‚ €Ë ‹D‹DŽ‚¡ÿ ‹D‹DŽ‚¢‚ ‹D‹DŽ‚£‚ ‹D ‹D#Ž‚¤‚ ‹D$‹D'Ž€‚Ÿ‚ ‚¡‚¢‚£‚¤;‚‚¥€Ê…@…@Ž‚¦€Ë…@…@Ž‚§ÿ…@…@Ž‚¨‚…@…@Ž‚©‚…@ …@#Ž‚ª‚…@$…@'Ž€‚¥‚¦‚§‚¨‚©‚ª;‚‚«€Ê…@…@Ž‚¬€Ë…@…@Ž‚­ÿ…@…@Ž‚®‚…@…@Ž‚¯‚…@ …@#Ž‚°‚…@$…@'Ž€‚«‚¬‚­‚®‚¯‚°;‚‚±€Ê…@…@Ž‚²€Ë…@…@Ž‚³ÿ…@…@Ž‚´‚…@…@Ž‚µ‚…@ …@#Ž‚¶‚…@$…@'Ž€‚±‚²‚³‚´‚µ‚¶‚·€Ê ‹D‹DŽ‚¸€Ë ‹D‹DŽ‚¹ÿ ‹D‹DŽ‚º‚ ‹D‹DŽ‚»‚ ‹D ‹D#Ž‚¼‚ ‹D$‹D'Ž­ €‚·‚¸‚¹‚º‚»‚¼, ®, ;‚‚«€Ê…@…@Ž‚¬€Ë…@…@Ž‚­ÿ…@…@Ž‚®‚…@…@Ž‚¯‚…@ …@#Ž‚°‚…@$…@'Ž€‚«‚¬‚­‚®‚¯‚°‚½€Ê ‹D‹DŽ‚¾€Ë ‹D‹DŽ‚¿ÿ ‹D‹DŽ‚À‚ ‹D‹DŽ‚Á‚ ‹D ‹D#Ž‚Â‚ ‹D$‹D'Ž€‚½‚¾‚¿‚À‚Á‚‚·‚¸‚¹‚º‚»‚¼­ ·z\V4à‰€‚·‚¸‚¹‚º‚»‚¼‚Ã€Ê ‹D‹DŽ‚Ä€Ë ‹D‹DŽ‚Åÿ ‹D‹DŽ‚Æ‚ ‹D‹DŽ‚Ç‚ ‹D ‹D#Ž‚È‚ ‹D$‹D'Ž€‚ÂĂłƂǂÈ;‚‚ɀʅ@…@Ž‚Ê€Ë…@…@Ž‚Ëÿ…@…@Ž‚Ì‚…@…@Ž‚Í‚…@ …@#Ž‚Î‚…@$…@'Ž€‚ɂʂ˂̂͂Î;‚‚πʅQ…QŽ‚Ð€Ë…Q…QŽ‚Ñÿ…Q…QŽ‚Ò‚…Q…Qނӂ…Q …Q#Ž‚Ô‚…Q$…Q'ނՂ…Q(…Q+Ž€Ž‚Ï‚Ð‚Ñ‚Ò‚Ó‚Ô‚Õ€Ž‚Ï‚Ð‚Ñ‚Ò‚Ó‚Ô‚Õ;‚‚րʅQ…Qނ׀Ë…Q…QŽ‚Øÿ…Q…QŽ‚Ù‚…Q…QŽ‚Ú‚…Q …Q#Ž‚Û‚…Q$…Q'ނ܂…Q(…Q+Ž€Ž‚Ö‚×‚Ø‚Ù‚Ú‚Û‚Ü‚Ý€Ê ‹N‹NŽ‚Þ€Ë ‹N‹NŽ‚ßÿ ‹N‹NŽ‚à‚ ‹N‹NŽ‚á‚ ‹N ‹N#Ž‚â‚ ‹N$‹N'Ž‚ã‚ ‹N(‹N+ޝ €Ž‚݂ނ߂à‚á‚â‚ã, ° , ;‚‚πʅQ…QŽ‚Ð€Ë…Q…QŽ‚Ñÿ…Q…QŽ‚Ò‚…Q…Qނӂ…Q …Q#Ž‚Ô‚…Q$…Q'ނՂ…Q(…Q+Ž€Ž‚Ï‚Ð‚Ñ‚Ò‚Ó‚Ô‚Õ€Ž‚Ï‚Ð‚Ñ‚Ò‚Ó‚Ô‚Õ‚ä€Ê ‹N‹NŽ‚å€Ë ‹N‹NŽ‚æÿ ‹N‹NŽ‚ç‚ ‹N‹NŽ‚è‚ ‹N ‹N#Ž‚é‚ ‹N$‹N'Ž‚ê‚ ‹N(‹N+ހނä‚傿‚ç‚è‚é‚ꀎ‚ä‚傿‚ç‚è‚é‚ê‚݂ނ߂à‚á‚â‚ã¯€Ž‚Ý‚Þ‚ß‚à‚á‚â‚ã°€Ž‚Ý‚Þ‚ß‚à‚á‚â‚ã‚ë€Ê ‹N‹NŽ‚ì€Ë ‹N‹NŽ‚íÿ ‹N‹NŽ‚î‚ ‹N‹NŽ‚ï‚ ‹N ‹N#Ž‚ð‚ ‹N$‹N'Ž‚ñ‚ ‹N(‹N+ހނë‚ì‚í‚î‚ï‚ð‚ñ;‚‚ò€Ê…Q…QŽ‚ó€Ë…Q…QŽ‚ôÿ…Q…QŽ‚õ‚…Q…QŽ‚ö‚…Q …Q#Ž‚÷‚…Q$…Q'Ž‚ø‚…Q(…Q+ހނò‚ó‚ô‚õ‚ö‚÷‚ø;‚‚ù€Ê…Q…QŽ‚ú€Ë…Q…QŽ‚ûÿ…Q…QŽ‚ü‚…Q…QŽ‚ý‚…Q …Q#Ž‚þ‚…Q$…Q'Ž‚ÿ‚…Q(…Q+ހނù‚ú‚û‚ü‚ý‚þ‚ÿ;‚ƒ€Ê…Q…QŽƒ€Ë…Q…QŽƒÿ…Q…QŽƒ‚…Q…QŽƒ‚…Q …Q#Žƒ‚…Q$…Q'Žƒ‚…Q(…Q+Ž€Žƒƒƒƒƒƒƒƒ€Ê ‹N‹NŽƒ€Ë ‹N‹NŽƒ ÿ ‹N‹NŽƒ ‚ ‹N‹NŽƒ ‚ ‹N ‹N#Žƒ ‚ ‹N$‹N'Žƒ ‚ ‹N(‹N+ޱ €Žƒƒƒ ƒ ƒ ƒ ƒ , ², ;‚‚ù€Ê…Q…QŽ‚ú€Ë…Q…QŽ‚ûÿ…Q…QŽ‚ü‚…Q…QŽ‚ý‚…Q …Q#Ž‚þ‚…Q$…Q'Ž‚ÿ‚…Q(…Q+ހނù‚ú‚û‚ü‚ý‚þ‚ÿƒ€Ê ‹N‹NŽƒ€Ë ‹N‹NŽƒÿ ‹N‹NŽƒ‚ ‹N‹NŽƒ‚ ‹N ‹N#Žƒ‚ ‹N$‹N'Žƒ‚ ‹N(‹N+Ž€Žƒƒƒƒƒƒƒƒƒƒ ƒ ƒ ƒ ƒ ± ·z\V4à‰€Žƒƒƒ ƒ ƒ ƒ ƒ ƒ€Ê ‹N‹NŽƒ€Ë ‹N‹NŽƒÿ ‹N‹NŽƒ‚ ‹N‹NŽƒ‚ ‹N ‹N#Žƒ‚ ‹N$‹N'Žƒ‚ ‹N(‹N+Ž€Žƒƒƒƒƒƒƒ;‚ƒ€Ê…Q…QŽƒ€Ë…Q…QŽƒÿ…Q…QŽƒ‚…Q…QŽƒ ‚…Q …Q#Žƒ!‚…Q$…Q'Žƒ"‚…Q(…Q+Ž€Žƒƒƒƒƒ ƒ!ƒ";‚;‚³ , ´, ;‚³ ·z\V4à‰;‚;‚ )S;‚ )ƒ#…{…{„ƒ$€‡…{…{„€ƒ#ƒ$;‚ ‚ ƒ%…{…{„ƒ&€‡…{…{„€‘ƒ%ƒ&ƒ%ƒ&;‚ ‚ ƒ'…{…{„ƒ(€‡…{…{„ƒ'ƒ(€‘ƒ'ƒ(;‚ ‚ ƒ)…{…{„ƒ*€‡…{…{„€‘ƒ)ƒ*ƒ)ƒ*;‚ ‚ƒ+…{…{„ƒ,€‡…{…{„ƒ+ƒ,€‘ƒ+ƒ,;‚ ‚ƒ-…{…{„ƒ.€‡…{…{„ƒ/‚…³>…³@„€ƒ-ƒ.ƒ/ƒ-ƒ.ƒ/;‚ ‚ƒ0…{…{„ƒ1€‡…{…{„ƒ2‚…¬>…¬@„ƒ3‚…¬D…¬F„€ƒ0ƒ1ƒ2ƒ3ƒ0ƒ1ƒ2ƒ3;‚ ‚ƒ4…{…{„ƒ5€‡…{…{„ƒ6‚…¤>…¤@„ƒ7‚…¤D…¤F„ƒ8‚…¤J…¤L„€ƒ4ƒ5ƒ6ƒ7ƒ8ƒ4ƒ5ƒ6ƒ7ƒ8;‚ ‚ƒ9…{…{„ƒ:€‡…{…{„ƒ;‚…›>…›@„ƒ<‚…›D…›F„ƒ=‚…›J…›L„ƒ>‚…›P…›R„€ƒ9ƒ:ƒ;ƒ<ƒ=ƒ>ƒ9ƒ:ƒ;ƒ<ƒ=ƒ>;‚‚ƒ?…Á:…Á<„€’ƒ?ƒ?;‚‚ƒ@…Æ@…ÆB„ƒA€‡…ÆC…ÆE„€‘ƒ@ƒAƒ@ƒA;‚‚ƒB€Ê…Ë-…Ë0„ƒC€Ë…Ë3…Ë6„ƒD€‡…Ë:…Ë<„ƒBƒCƒDƒBƒCƒD;‚‚ƒE€Ê…Ð-…Ð0„ƒF€Ë…Ð3…Ð6„ƒGÿ…Ð9…Ð<„ƒH€‡…Ð@…ÐB„ƒEƒFƒGƒHƒEƒFƒGƒH;‚‚ƒI€Ê…Õ-…Õ0„ƒJ€Ë…Õ3…Õ6„ƒKÿ…Õ9…Õ<„ƒL‚…Õ?…ÕB„ƒM€‡…ÕF…ÕH„ƒIƒJƒKƒLƒMƒIƒJƒKƒLƒM;‚‚ƒN€Ê…Ú-…Ú0„ƒO€Ë…Ú3…Ú6„ƒPÿ…Ú9…Ú<„ƒQ‚…Ú?…ÚB„ƒR‚…ÚE…ÚH„ƒS€‡…ÚL…ÚN„ƒNƒOƒPƒQƒRƒSƒNƒOƒPƒQƒRƒS;‚ƒT†F †FŽ€“ƒT€“ƒT;‚ƒU†F †FŽ€“ƒUƒV ‹ý ‹ý޵ €“ƒV, ¶ , ;‚ƒT†F †FŽ€“ƒT€“ƒTƒW ‹ý ‹ýŽ€“ƒW€“ƒWƒVµ€“ƒV¶€“ƒVƒX ‹ý ‹ýŽ€“ƒX;‚ƒY†F †FŽ€“ƒY;‚ƒZ†F †FŽ€“ƒZ;‚ƒ[†F †FŽ€“ƒ[ƒ\ ‹ý ‹ýŽ· €“ƒ\, ¸, ;‚ƒZ†F †FŽ€“ƒZƒ] ‹ý ‹ýŽ€“ƒ]ƒ\· ·z\V4à‰€“ƒ\ƒ^ ‹ý ‹ýŽ€“ƒ^;‚ƒ_†F †FŽ€“ƒ_;‚¸ƒ`†F †FŽ€“ƒ`ƒ`ƒa ‹ý ‹ý޹N€“ƒa& º, €“‚ƒa¹ƒaƒa€“ƒaƒaƒb ‹ý ‹ýŽ€“ƒbƒb;‚‚ƒc†F †FŽ€“ƒcƒcƒd ‹ý ‹ýŽ»N€“ƒd& ¼€ïƒd$ €“‚ƒd»¼ƒd€“ƒdƒdƒe ‹ý ‹ýŽ€“ƒeƒe;‚ƒf†b†bŽ€”ƒf€”ƒf;‚ƒg†b†bŽ€”ƒgƒh ŒŒŽ½ €”ƒh, ¾ , ;‚ƒf†b†bŽ€”ƒf€”ƒfƒi ŒŒŽ€”ƒi€”ƒiƒh½€”ƒh¾€”ƒhƒj ŒŒŽ€”ƒj;‚ƒk†b†bŽ€”ƒk;‚ƒl†b†bŽ€”ƒl;‚ƒm†b†bŽ€”ƒmƒn ŒŒŽ¿ €”ƒn, À, ;‚ƒl†b†bŽ€”ƒlƒo ŒŒŽ€”ƒoƒn¿ ·z\V4à‰€”ƒnƒp ŒŒŽ€”ƒp;‚ƒq†b†bŽ€”ƒq;‚¸ƒr†b†bŽ€”ƒrƒr;‚‚ƒs†b†bŽ€”ƒsƒt ŒŒŽÁN€”ƒt& Â, Á€”‚ƒt€”ƒtƒu ŒŒŽ€”ƒu;‚‚ƒv†b†bŽ€”ƒvƒw ŒŒŽÃN€”ƒw& Ä, À”‚ƒw€”ƒwƒx ŒŒŽ€”ƒx;‚‚ ƒy†b†bŽ ƒyƒz ŒŒŽÅ#, €”‚ƒz ƒz ƒzƒ{ ŒŒŽ ƒ{;‚‚ƒ|†b†bŽƒ| ƒ|ƒ} ŒŒŽÆNƒ}$ €”‚ƒ}Æ ƒ}ƒ} ƒ}ƒ~ ŒŒŽƒ~ ƒ~;‚!)ƒ‚"‚#„ƒ€‚$‚#!„ƒ‚%‚#"*„ƒ‚‚&‚#+2„€•ƒƒ€ƒƒ‚;‚!¸ƒƒ‚"‚#„ƒ„‚$‚#!„ƒ…‚%‚#"*„ƒ†‚&‚#+2„€•ƒƒƒ„ƒ…ƒ†;‚')ƒ‡‚"‚#!!„ƒˆ‚$‚#!!!„ƒ‰‚%‚#!"!*„ƒŠ‚&‚#!+!2„ƒ‹‚(‚#!3!9„€–ƒ‡ƒˆƒ‰ƒŠƒ‹ ‚)ŒŒÇÇ‚*‰ŒÇÇ€—‚+)ƒŒƒÏƒÏ!„€˜ƒŒ‚,>ÇÇ€™‚-€™‚.€™‚/€™‚0€™‚1‚2»¶ÇÝ€šMƒUP Ç ƒ$ >€¬ƒŽ5K K"„  ƒŽ ƒŽƒÇ ƒ ƒ ƒƒUP  ƒ ƒ€š‚3€š‚4€š‚5ƒUPÈ‚6€›ƒ$ €œ‚5ƒ‘‚#€Ò6€Ò8„€›ƒ‘ƒ‘ƒÈƒ€›ƒƒƒ’UP€›ƒ’ƒ’€š‚9ƒ“UPƒ”‚&UPÉ‚6€ƒ“ƒ”$ €œ‚9ƒ•‚#€ü'€ü)„ƒ–‚&‚#€ü*€ü1„€ƒ•ƒ–ƒ•ƒ“ƒ”Ƀ“€ƒ“ƒ”ƒ“ƒ—UPƒ˜‚&UP€ƒ—ƒ˜ƒ—€š‚;ƒ™UPÊ‚<T$ Ë‚6€Ÿƒ™$ €œ‚;ƒš‚#€¬C€¬E„T€Ÿƒšƒšƒ™Ê˃™€Ÿƒ™ƒ™T€Ÿƒ™ƒ™ƒ›UPT€Ÿƒ›ƒ›€š‚?ƒœUPÌ‚6€Ÿƒœ$ €œ‚?ƒ‚#€Å:€Å<„€ŸƒƒƒœÌƒœ€ŸƒœƒœƒžUP€Ÿƒžƒž€š‚@ƒŸUPÍ‚6€ŸƒŸ$ €œ‚@ƒ ‚#€¹:€¹<„€Ÿƒ ƒ ƒŸÍƒŸ€ŸƒŸƒŸƒ¡UP€Ÿƒ¡ƒ¡€š‚Aƒ¢UP΂<T$ Ï‚6€Ÿƒ¢$ €œ‚Aƒ£‚#€³D€³F„T€Ÿƒ£ƒ£ƒ¢Îσ¢€Ÿƒ¢ƒ¢T€Ÿƒ¢ƒ¢ƒ¤UPT€Ÿƒ¤ƒ¤€š‚Bƒ¥UPЂ6€Ÿƒ¥$ €œ‚Bƒ¦‚#€Ë:€Ë<„€Ÿƒ¦ƒ¦ƒ¥Ðƒ¥€Ÿƒ¥ƒ¥ƒ§UP€Ÿƒ§ƒ§€š‚Cƒ¨UPÑ‚6€Ÿƒ¨$ €œ‚Cƒ©‚#€¿:€¿<„€Ÿƒ©ƒ©ƒ¨Ñƒ¨€Ÿƒ¨ƒ¨ƒªUP€Ÿƒªƒª€š‚D€š‚Eƒ«UPƒ«‚Fƒ« ÒNƒ«$ ÓNƒ«, Ò ƒ«·z\V4à‰‚G‚H·z\V4à‰s·z\V4à‰‚I·z\V4à‰‚J·z\V4à‰‚G  Ò€§UVW·z\V4à‰‚O‚P·z\V4à‰‚OW ƒ«    Ò ƒ«   Ò ƒ«    Ò ƒ«    Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Ò ƒ«   Òƒ«‚Fƒ« Ó ƒ« ƒ¬UPƒ¬‚Fƒ¬ ƒ¬ €š‚Qƒ­UPƒ­‚Fƒ­ ÔNƒ­$ ÕNƒ­, Ô ƒ­·z\V4à‰‚R‚H·z\V4à‰s·z\V4à‰‚I·z\V4à‰‚J·z\V4à‰‚R  Ô€§UVW·z\V4à‰‚O‚P·z\V4à‰‚OW ƒ­   Ô ƒ­    Ô ƒ­    Ô ƒ­    Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­   Ô ƒ­·z\V4à‰€æ‚S·z\V4à‰€Á·z\V4à‰‚R  Ôƒ­‚Fƒ­ Õ ƒ­ ƒ®UPƒ®‚Fƒ® ƒ® €š‚Tƒ¯UPƒ¯‚Fƒ¯ÖNƒ¯$ ×Nƒ¯, Ö ƒ¯Ø<,  Ö ,‚UØ ƒ¯  Ö ƒ¯  Ö ƒ¯  Ö ƒ¯  Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Ö ƒ¯ Öƒ¯‚Fƒ¯×ƒ¯ƒ°UPƒ°‚Fƒ°ƒ°€š‚Vƒ±UPƒ±‚Fƒ±ÙNƒ±$ ÚNƒ±, Ù ƒ±Û<,  Ù ,‚WÛ ƒ±  Ù ƒ±  Ù ƒ±  Ù ƒ±  Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ù ƒ± Ùƒ±‚Fƒ±Úƒ±ƒ²UPƒ²‚Fƒ²ƒ²€š‚X€š‚Y€š‚Zƒ³‚[€º€ºÜN€£ƒ³$ Z³¸Ö‹ï‹ï„YÖÖƒ´ •…•…„Yƒ´ƒ´ƒ³Üƒ³€£ƒ³ƒ³ƒµ‚[€º€º€£ƒµƒµt°ù¶ÉÝÄ-,‚\ƒ¶UPÝNƒ¶$ ހƃ¶$ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶  2ÝÞ ƒ¶  2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶  2ÝÞ ƒ¶  2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶ 2ÝÞ ƒ¶·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â Ý Þ.€ýƒ· †&2†&4„ƒ·ƒ·ƒ¶ÝÞƒ¶ƒ¶ƒ¶ƒ¸UPƒ¸ƒ¸,‚]ƒ¹UPßNƒ¹$ à€Æƒ¹$ ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹  2ßà ƒ¹  2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹ 2ßà ƒ¹  2 2ßß 2 2àà 2ßà ƒ¹  2 2ßß 2 2àà 2ßà ƒ¹ 2ßà ƒ¹·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ß à.‚^ƒº †)4†)6„ƒºƒºƒ¹ßàƒ¹ƒ¹ƒ¹ƒ»UPƒ»ƒ»,‚_ƒ¼UPá‚`$ âNƒ¼$ ã€Æƒ¼$ ƒ¼ 2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼  2âã ƒ¼  2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼  2âã ƒ¼  2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼ 2âã ƒ¼·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â â ã.‚aƒ½ †,l†,n„ƒ½ƒ½ƒ¼áâーƒ¼ƒ¼ƒ¼ƒ¼ƒ¾UPƒ¾ƒ¾,‚bƒ¿UPäNƒ¿$ 倯ƒ¿$ ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  5äåÿÿÿÿÿ 3äå ƒ¿  6äåÿÿÿÿÿ 4äå ƒ¿·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ä å.‚dƒÀ „‹+„‹-„ƒÀƒÀƒ¿ä僿ƒ¿ƒ¿ƒÁUPƒÁƒÁ,‚eƒÂUPæ‚`$ çNƒÂ$ è€ÆƒÂ$ ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  5çèÿÿÿÿÿ 3çè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ  5çèÿÿÿÿÿ  3çè  2çè.‚fƒÃ „g7„g9„ƒÃƒÃƒÂæçè ƒÂ  5çèÿÿÿÿÿ  3çè  2çè.‚fƒÄ „g7„g9„ƒÄƒÄƒÂæçè ƒÂ  6çèÿÿÿÿÿ 4çè ƒÂ·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ç è.‚fƒÅ „g7„g9„ƒÅƒÅƒÂæçèƒÂƒÂƒÂƒÂƒÂƒÆUPƒÆƒÆ,‚gƒÇUPéNƒÇ$ ê€ÆƒÇ$ ƒÇ 5éê ƒÇ 5éê ƒÇ 5éê ƒÇ 5éê ƒÇ  5éê ƒÇ  5éê ƒÇ 6éê ƒÇ 6éê ƒÇ 6éê ƒÇ 6éê ƒÇ 6éê ƒÇ 5éê ƒÇ  5éê ƒÇ  5éê ƒÇ 5éê.€ÑƒÈ „•,„•.„ƒÈƒÈƒÇéêƒÇƒÇƒÇƒÉUPƒÉƒÉ,‚hƒÊUPëNƒÊ$ ì€ÆƒÊ$ ƒÊ 3ëì ƒÊ 3ëì ƒÊ 3ëì ƒÊ 3ëì ƒÊ  3ëì ƒÊ  3ëì ƒÊ 3ëì ƒÊ 4ëì ƒÊ 4ëì ƒÊ 4ëì ƒÊ 4ëì ƒÊ 4ëì ƒÊ  3ëì ƒÊ  3ëì ƒÊ 3ëì.€ÖƒË „œ/„œ1„ƒËƒËƒÊëìƒÊƒÊƒÊƒÌUPƒÌƒÌ,‚iƒÍUPíNƒÍ$ î€ÆƒÍ$ ƒÍ 2 3íî ƒÍ 2 3íî ƒÍ 2 3íî ƒÍ 2 3íî ƒÍ  2 3íî ƒÍ  2 3íî ƒÍ 2 3íî ƒÍ 2 4íî ƒÍ 2 4íî ƒÍ 2 4íî ƒÍ 2 4íî ƒÍ 2 4íî ƒÍ  2 4íî ƒÍ  2 4íî ƒÍ 2 3íî.‚jƒÎ „«/„«1„ƒÎƒÎƒÍíîƒÍƒÍƒÍƒÏUPƒÏƒÏ,‚kƒÐUPïNƒÐ$ ð€ÆƒÐ$ ƒÐ 2 5ïð ƒÐ 2 5ïð ƒÐ 2 5ïð ƒÐ 2 5ïð ƒÐ  2 5ïð ƒÐ  2 5ïð ƒÐ 2 5ïð ƒÐ 2 6ïð ƒÐ 2 6ïð ƒÐ 2 6ïð ƒÐ 2 6ïð ƒÐ 2 6ïð ƒÐ  2 6ïð ƒÐ  2 6ïð ƒÐ 2 5ïð.‚lƒÑ „£2„£4„ƒÑƒÑƒÐïðƒÐƒÐƒÐƒÒUPƒÒƒÒ,‚m ƒÓUPñNƒÓ$ ò€ÆƒÓ$ ƒÓ 5ñò ƒÓ 5ñò ƒÓ 5ñò ƒÓ 5ñò ƒÓ  5ñò ƒÓ  5ñò ƒÓ 6ñò ƒÓ 6ñò ƒÓ 6ñò ƒÓ 6ñò ƒÓ 6ñò ƒÓ 5ñò ƒÓ  5ñò ƒÓ  5ñò ƒÓ 5ñò.€ÑƒÔ „•,„•.„ƒÔƒÔƒÓñòñòƒÓƒÓƒÓƒÓƒÓƒÓƒÓƒÕUPƒÕƒÕƒÕ,‚n ƒÖUPóNƒÖ$ ô€ÆƒÖ$ ƒÖ 5óô ƒÖ 5óô ƒÖ 5óô ƒÖ 5óô ƒÖ  5óô ƒÖ  5óô ƒÖ 6óô ƒÖ 6óô ƒÖ 6óô ƒÖ 6óô ƒÖ 6óô ƒÖ 5óô ƒÖ  5óô ƒÖ  5óô ƒÖ 5óô.€Ñƒ× „•,„•.„ƒ×ƒ×ƒÖóôôóƒÖƒÖƒÖƒÖƒÖƒÖƒÖƒØUPƒØƒØƒØ,‚oƒÙUPõNƒÙ$ ö€ÆƒÙ$ .‚pƒÚ ƒK-ƒK/„ƒÚƒÚƒÙõöƒÙƒÙƒÙƒÛUPƒÛƒÛ,‚qƒÜUP÷NƒÜ$ .‚rƒÝ ƒQ*ƒQ,„ƒÝƒÜ÷ƒÜƒÞUPƒÞ,‚s,‚t,‚u,‚vƒßUPøNƒß$ ƒß ø ƒß ø ƒß  ø ƒß ø ƒß ø ƒß  ø ·z\V4à‰s·z\V4à‰H·z\V4à‰sø.€üƒàUPƒàƒßøƒßƒáUPƒá,‚wƒâUPù‚x$ úNƒâ$ ƒâ ú ƒâ ú ƒâ  ú ƒâ ú ƒâ ú ƒâ  ú ·z\V4à‰s·z\V4à‰H·z\V4à‰sú.‚yƒãUPƒãƒâùúƒâƒâƒäUPƒä,‚zƒåUPû‚`$ üNƒå$ ƒå ü ƒå ü ƒå  ü ƒå ü ƒå ü ƒå  ü ·z\V4à‰s·z\V4à‰H·z\V4à‰sü.‚{ƒæ ‡)1‡)3„ƒæƒåûüƒåƒåƒçUPƒç,‚|ƒè ‡ç/‡ç1„ 4ƒè·z\V4à‰€ú)4ƒèƒé‚2‚=„ ƒéý€û4ƒè. þNƒè, ƒè þ ƒè þ ƒè  þ ƒè þ ƒè þ ƒè  þ ·z\V4à‰s·z\V4à‰H·z\V4à‰sþ.€üƒêUPƒêƒèþ4ƒèƒë‚2‚=„Nƒë€Æƒëÿ€û4ƒè. ‚Nƒè, ‚€Æƒè, ƒè 2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè  2‚‚ ƒè  2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè  2‚‚ ƒè  2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè 2‚‚ ƒè·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚ ‚.€ýƒì †&2†&4„ƒìƒìƒè‚‚4ƒèƒí ‡ç/‡ç1„4ƒí,‚}ƒî ‡è6‡è8„‚‚x$ 4ƒî·z\V4à‰€ú)4ƒîƒï‚2‚=„ ƒï‚€û4ƒî. ‚Nƒî, ƒî ‚ ƒî ‚ ƒî  ‚ ƒî ‚ ƒî ‚ ƒî  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚yƒðUPƒðƒî‚‚4ƒîƒñ‚2‚=„Nƒñ€Æƒñ‚€û4ƒî. ‚Nƒî, ‚€Æƒî, ƒî 2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî  2‚‚ ƒî  2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî  2‚‚ ƒî  2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî 2‚‚ ƒî·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚ ‚.€ýƒò †&2†&4„ƒòƒòƒî‚‚4ƒî4ƒîƒó ‡è6‡è8„4ƒó,€ô,‚~ƒô ˆD$ˆD&„ƒõ‚ ˆD*ˆD,„ƒô‚‚€ƒô$ ƒõƒõ ƒõ‚ =ƒõƒõ &ƒô‚ƒõƒôƒõƒö ˆD$ˆD&„ƒ÷‚ ˆD*ˆD,„ƒöƒöƒ÷,‚ƒø‚ ˆH$ˆH&„ƒùƒù ˆH*ˆH,„‚ €Ûƒø$ ƒøƒø ƒù‚  =ƒùƒù &ƒø‚ ƒùƒøƒùƒú‚ ˆH$ˆH&„ƒûƒû ˆH*ˆH,„ƒúƒû,‚‚ƒü‚€ ˆO8ˆO:‚ V $  ƒü‚ ƒü ƒüƒý‚€ ˆO8ˆO: ƒý,‚ƒƒþ‚€ ˆP>ˆP@‚ V $   ƒþ‚  ƒþ  ƒþƒÿ‚€ ˆP>ˆP@  ƒÿ,‚„„‚€ ˆQ>ˆQ@‚ V$  €¤„‚ €¤„€¤„„‚€ ˆQ>ˆQ@€¤„,‚†„‚€ ˆR4ˆR6‚ V$  €¥„‚ €¥„€¥„„‚€ ˆR4ˆR6€¥„,‚ˆ„‚€ ˆS8ˆS:‚V$  €¦„‚€¦„€¦„„‚€ ˆS8ˆS:€¦„,‚Š„‚€ ˆT8ˆT:‚V$  €§„‚€§„€§„„‚€ ˆT8ˆT:€§„,‚Œ„‚€ ˆU8ˆU:‚V $  €¨„‚€¨„ €¨„„ ‚€ ˆU8ˆU: €¨„ ,‚U,‚W,‚Ž,‚,€Å,‚,‚‘„  ‰!‰"„„ €±„ „   „   „    „   „  „  „   „   „  „  „  „  „ ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    „ „ „ €±„ ,€Å„  ˆý ˆý"„„ „ „ „  ‰!‰"„„ €±„ „ ,‚’„  ‰ ‰!„„ ‚“„ „   „  ÿð? „  ÿ€?  „   „  „  „   „   „  „  „   „  „  „ ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    „ „ „ ‚“„ ,‚„ ˆþˆþ!„„„ „ „ ‰ ‰!„„‚“„„,€è,€Ù„ ‰:!‰:"„„€Ù„„‚N„$ ‚K$ „   ‚   ‚ „   ‚   ‚ „·z\V4à‰€Á€å·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ‚·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á‚ „„„€Ù„„‚‚,€è„ ‰8‰8!„„„„‚‚„„„„„ ‰:!‰:"„„€Ù„„„„,‚”,€É,‚•,‚–u8‚—‚˜€ä€Îv€Ðž¨¯Ž.‚p.‚r„ ƒQ*ƒQ,„‚N„$ ·z\V4à‰‚™·z\V4à‰€ú·z\V4à‰H &„‚„„ ƒQ*ƒQ,„„.‚f.‚d.€Ñ.€Ö.‚l.‚j.€ý.‚^.‚a.€ü.‚y.‚{.‚š„€ÊUP„€ËUP‚‚›$ ‚‚œ„„, ‚‚„$  „„‚‚‚ž„$  „„‚‚‚Ÿ, „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚{„ ‡)1‡)3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚{„ ‡)1‡)3„„„‚‚„„„„„€ÊUP„€ËUP„„.‚ „€ÊUP„€ËUP„ÿUP‚‚›$ ‚‚œ„„„, ‚‚„$  „„„‚‚‚ž„$  „„„‚‚‚¡„$  „„„‚‚‚Ÿ, ‚‚Ÿ, „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚{„ ‡)1‡)3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚{„ ‡)1‡)3„„„‚‚    ‚ ‚ „ ‚ „ ‚ „  ‚ „ ‚ „ ‚ „  ‚ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚.‚{„  ‡)1‡)3„„ „‚‚„„„„„„„!€ÊUP„"€ËUP„#ÿUP„!„"„#.‚¢#„$€ÊUP„%€ËUP„&ÿUP„'‚UP‚ ‚›$ ‚!‚œ„$„%„&„', ‚"‚„$$  „$„%„&„'‚!‚#‚ž„%$  „$„%„&„'‚!‚$‚¡„&$  „$„%„&„'‚!‚%‚£„'$  „$„%„&„'‚!‚&‚Ÿ, ‚'‚Ÿ, „$ ‚" „$ ‚" „$  ‚" „$ ‚" „$ ‚" „$  ‚" ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚".‚{„( ‡)1‡)3„„(„$‚ ‚"    ‚' ‚' „% ‚# „% ‚# „%  ‚# „% ‚# „% ‚# „%  ‚# ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚#.‚{„) ‡)1‡)3„„)„%‚ ‚#    ‚& ‚&‚(‚Ÿ, „& ‚$ „& ‚$ „&  ‚$ „& ‚$ „& ‚$ „&  ‚$ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚$.‚{„* ‡)1‡)3„„*„&‚ ‚$    ‚( ‚( „' ‚% „' ‚% „'  ‚% „' ‚% „' ‚% „'  ‚% ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚%.‚{„+ ‡)1‡)3„„+„'‚ ‚%„$„%„&„'„$„%„&„'„,€ÊUP„-€ËUP„.ÿUP„/‚UP„,„-„.„/.‚¤-„0€ÊUP„1€ËUP„2ÿUP„3‚UP„4‚UP‚)‚›$ ‚*‚œ„0„1„2„3„4, ‚+‚„0$  „0„1„2„3„4‚*‚,‚ž„1$  „0„1„2„3„4‚*‚-‚¡„2$  „0„1„2„3„4‚*‚.‚£„3$  „0„1„2„3„4‚*‚/‚¥„4$  „0„1„2„3„4‚*‚0‚Ÿ, ‚1‚Ÿ, ‚2‚Ÿ, „0 ‚+ „0 ‚+ „0  ‚+ „0 ‚+ „0 ‚+ „0  ‚+ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚+.‚{„5 ‡)1‡)3„„5„0‚)‚+    ‚2 ‚2 „1 ‚, „1 ‚, „1  ‚, „1 ‚, „1 ‚, „1  ‚, ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚,.‚{„6 ‡)1‡)3„„6„1‚)‚,    ‚1 ‚1‚3‚Ÿ, „2 ‚- „2 ‚- „2  ‚- „2 ‚- „2 ‚- „2  ‚- ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚-.‚{„7 ‡)1‡)3„„7„2‚)‚-    ‚3 ‚3 „3 ‚. „3 ‚. „3  ‚. „3 ‚. „3 ‚. „3  ‚. ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚..‚{„8 ‡)1‡)3„„8„3‚)‚.    ‚0 ‚0 „4 ‚/ „4 ‚/ „4  ‚/ „4 ‚/ „4 ‚/ „4  ‚/ ·z\V4à‰s·z\V4à‰H·z\V4à‰s‚/.‚{„9 ‡)1‡)3„„9„4‚)‚/„0„1„2„3„4„0„1„2„3„4„:€ÊUP„;€ËUP„<ÿUP„=‚UP„>‚UP„:„;„<„=„>.‚¦„?€ÊUP„@€ËUP‚4‚›$ ‚5‚œ„?„@, ‚6‚œ„?„@, ‚7‚„?$  „?„@‚5‚8‚ž„@$  „?„@‚5‚9‚§„?$  „?„@‚6‚:‚¨„@$  „?„@‚6 „? 2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „?  2‚7‚9 „?  2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „?  2‚7‚9 „?  2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „? 2‚7‚9 „?·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚7 ‚9.‚a„A †,l†,n„„A„A„?‚4‚7‚9 „@ 2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@  2‚8‚: „@  2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@  2‚8‚: „@  2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@ 2‚8‚: „@·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚8 ‚:.‚a„B †,l†,n„„B„B„@‚4‚8‚:„?„@„?„@„?„@„?„@„?„@„C€ÊUP„D€ËUP„C„D„C„D.‚©,„E€ÊUP„F€ËUP„GÿUP‚;‚›$ ‚<‚œ„E„F„G, ‚=‚œ„E„F„G, ‚>‚„E$  „E„F„G‚<‚?‚ž„F$  „E„F„G‚<‚@‚¡„G$  „E„F„G‚<‚A‚§„E$  „E„F„G‚=‚B‚¨„F$  „E„F„G‚=‚C‚ª„G$  „E„F„G‚= „E 2‚>‚A „E 2‚>‚A „E 2‚>‚A „E 2‚>‚A „E  2‚>‚A „E  2‚>‚A „E 2‚>‚A „E 2‚>‚A „E 2‚>‚A „E 2‚>‚A „E  2‚>‚A „E  2‚>‚A „E 2‚>‚A „E 2‚>‚A „E 2‚>‚A „E·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚> ‚A.‚a„H †,l†,n„„H„H„E‚;‚>‚A „F 2‚?‚B „F 2‚?‚B „F 2‚?‚B „F 2‚?‚B „F  2‚?‚B „F  2‚?‚B „F 2‚?‚B „F 2‚?‚B „F 2‚?‚B „F 2‚?‚B „F  2‚?‚B „F  2‚?‚B „F 2‚?‚B „F 2‚?‚B „F 2‚?‚B „F·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚? ‚B.‚a„I †,l†,n„„I„I„F‚;‚?‚B „G 2‚@‚C „G 2‚@‚C „G 2‚@‚C „G 2‚@‚C „G  2‚@‚C „G  2‚@‚C „G 2‚@‚C „G 2‚@‚C „G 2‚@‚C „G 2‚@‚C „G  2‚@‚C „G  2‚@‚C „G 2‚@‚C „G 2‚@‚C „G 2‚@‚C „G·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚@ ‚C.‚a„J †,l†,n„„J„J„G‚;‚@‚C„E„F„G„E„F„G„E„F„G„E„F„G„E„F„G„K€ÊUP„L€ËUP„MÿUP„K„L„M„K„L„M.‚«<„N€ÊUP„O€ËUP„PÿUP„Q‚UP‚D‚›$ ‚E‚œ„N„O„P„Q, ‚F‚œ„N„O„P„Q, ‚G‚„N$  „N„O„P„Q‚E‚H‚ž„O$  „N„O„P„Q‚E‚I‚¡„P$  „N„O„P„Q‚E‚J‚£„Q$  „N„O„P„Q‚E‚K‚§„N$  „N„O„P„Q‚F‚L‚¨„O$  „N„O„P„Q‚F‚M‚ª„P$  „N„O„P„Q‚F‚N‚¬„Q$  „N„O„P„Q‚F „N 2‚G‚K „N 2‚G‚K „N 2‚G‚K „N 2‚G‚K „N  2‚G‚K „N  2‚G‚K „N 2‚G‚K „N 2‚G‚K „N 2‚G‚K „N 2‚G‚K „N  2‚G‚K „N  2‚G‚K „N 2‚G‚K „N 2‚G‚K „N 2‚G‚K „N·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚G ‚K.‚a„R †,l†,n„„R„R„N‚D‚G‚K „O 2‚H‚L „O 2‚H‚L „O 2‚H‚L „O 2‚H‚L „O  2‚H‚L „O  2‚H‚L „O 2‚H‚L „O 2‚H‚L „O 2‚H‚L „O 2‚H‚L „O  2‚H‚L „O  2‚H‚L „O 2‚H‚L „O 2‚H‚L „O 2‚H‚L „O·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚H ‚L.‚a„S †,l†,n„„S„S„O‚D‚H‚L „P 2‚I‚M „P 2‚I‚M „P 2‚I‚M „P 2‚I‚M „P  2‚I‚M „P  2‚I‚M „P 2‚I‚M „P 2‚I‚M „P 2‚I‚M „P 2‚I‚M „P  2‚I‚M „P  2‚I‚M „P 2‚I‚M „P 2‚I‚M „P 2‚I‚M „P·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚I ‚M.‚a„T †,l†,n„„T„T„P‚D‚I‚M „Q 2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q  2‚J‚N „Q  2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q  2‚J‚N „Q  2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q 2‚J‚N „Q·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚J ‚N.‚a„U †,l†,n„„U„U„Q‚D‚J‚N„N„O„P„Q„N„O„P„Q„N„O„P„Q„N„O„P„Q„N„O„P„Q„V€ÊUP„W€ËUP„XÿUP„Y‚UP„V„W„X„Y„V„W„X„Y.‚­L„Z€ÊUP„[€ËUP„\ÿUP„]‚UP„^‚UP‚O‚›$ ‚P‚œ„Z„[„\„]„^, ‚Q‚œ„Z„[„\„]„^, ‚R‚„Z$  „Z„[„\„]„^‚P‚S‚ž„[$  „Z„[„\„]„^‚P‚T‚¡„\$  „Z„[„\„]„^‚P‚U‚£„]$  „Z„[„\„]„^‚P‚V‚¥„^$  „Z„[„\„]„^‚P‚W‚§„Z$  „Z„[„\„]„^‚Q‚X‚¨„[$  „Z„[„\„]„^‚Q‚Y‚ª„\$  „Z„[„\„]„^‚Q‚Z‚¬„]$  „Z„[„\„]„^‚Q‚[‚®„^$  „Z„[„\„]„^‚Q „Z 2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z  2‚R‚W „Z  2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z  2‚R‚W „Z  2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z 2‚R‚W „Z·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚R ‚W.‚a„_ †,l†,n„„_„_„Z‚O‚R‚W „[ 2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[  2‚S‚X „[  2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[  2‚S‚X „[  2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[ 2‚S‚X „[·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚S ‚X.‚a„` †,l†,n„„`„`„[‚O‚S‚X „\ 2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\  2‚T‚Y „\  2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\  2‚T‚Y „\  2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\ 2‚T‚Y „\·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚T ‚Y.‚a„a †,l†,n„„a„a„\‚O‚T‚Y „] 2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „]  2‚U‚Z „]  2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „]  2‚U‚Z „]  2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „] 2‚U‚Z „]·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚U ‚Z.‚a„b †,l†,n„„b„b„]‚O‚U‚Z „^ 2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^  2‚V‚[ „^  2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^  2‚V‚[ „^  2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^ 2‚V‚[ „^·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚V ‚[.‚a„c †,l†,n„„c„c„^‚O‚V‚[„Z„[„\„]„^„Z„[„\„]„^„Z„[„\„]„^„Z„[„\„]„^„Z„[„\„]„^„d€ÊUP„e€ËUP„fÿUP„g‚UP„h‚UP„d„e„f„g„h„d„e„f„g„h.‚¯"„i€ÊUP„j€ËUP‚\‚›$ ‚]‚œ„i„j, ‚^‚œ„i„j, ‚_‚„i$  „i„j‚]‚`‚ž„j$  „i„j‚]‚a‚§„i$  „i„j‚^‚b‚¨„j$  „i„j‚^‚cK$ „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  5‚_‚aÿÿÿÿÿ 3‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i  5‚_‚aÿÿÿÿÿ  3‚_‚a  2‚_‚a.‚f„k „g7„g9„„k„k„i‚\‚_‚a „i  5‚_‚aÿÿÿÿÿ  3‚_‚a  2‚_‚a.‚f„l „g7„g9„„l„l„i‚\‚_‚a „i  6‚_‚aÿÿÿÿÿ 4‚_‚a „i·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚_ ‚a.‚f„m „g7„g9„„m„m„i‚\‚_‚a  2 2‚c‚c „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  5‚`‚bÿÿÿÿÿ 3‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j  5‚`‚bÿÿÿÿÿ  3‚`‚b  2‚`‚b.‚f„n „g7„g9„„n„n„j‚\‚`‚b „j  5‚`‚bÿÿÿÿÿ  3‚`‚b  2‚`‚b.‚f„o „g7„g9„„o„o„j‚\‚`‚b „j  6‚`‚bÿÿÿÿÿ 4‚`‚b „j·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚` ‚b.‚f„p „g7„g9„„p„p„j‚\‚`‚b„i„j„i„j„i„j„i„j„i„j„q€ÊUP„r€ËUP„q„r„q„r.‚°8„s€ÊUP„t€ËUP„uÿUP‚d‚›$ ‚e‚œ„s„t„u, ‚f‚œ„s„t„u, ‚g‚„s$  „s„t„u‚e‚h‚ž„t$  „s„t„u‚e‚i‚¡„u$  „s„t„u‚e‚j‚§„s$  „s„t„u‚f‚k‚¨„t$  „s„t„u‚f‚l‚ª„u$  „s„t„u‚f‚mK$ „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  5‚g‚jÿÿÿÿÿ 3‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s  5‚g‚jÿÿÿÿÿ  3‚g‚j  2‚g‚j.‚f„v „g7„g9„„v„v„s‚d‚g‚j „s  5‚g‚jÿÿÿÿÿ  3‚g‚j  2‚g‚j.‚f„w „g7„g9„„w„w„s‚d‚g‚j „s  6‚g‚jÿÿÿÿÿ 4‚g‚j „s·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚g ‚j.‚f„x „g7„g9„„x„x„s‚d‚g‚j  2 2‚m‚m‚nK$ „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  5‚h‚kÿÿÿÿÿ 3‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t  5‚h‚kÿÿÿÿÿ  3‚h‚k  2‚h‚k.‚f„y „g7„g9„„y„y„t‚d‚h‚k „t  5‚h‚kÿÿÿÿÿ  3‚h‚k  2‚h‚k.‚f„z „g7„g9„„z„z„t‚d‚h‚k „t  6‚h‚kÿÿÿÿÿ 4‚h‚k „t·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚h ‚k.‚f„{ „g7„g9„„{„{„t‚d‚h‚k  2 2‚n‚n „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  5‚i‚lÿÿÿÿÿ 3‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u  5‚i‚lÿÿÿÿÿ  3‚i‚l  2‚i‚l.‚f„| „g7„g9„„|„|„u‚d‚i‚l „u  5‚i‚lÿÿÿÿÿ  3‚i‚l  2‚i‚l.‚f„} „g7„g9„„}„}„u‚d‚i‚l „u  6‚i‚lÿÿÿÿÿ 4‚i‚l „u·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚i ‚l.‚f„~ „g7„g9„„~„~„u‚d‚i‚l„s„t„u„s„t„u„s„t„u„s„t„u„s„t„u„€ÊUP„€€ËUP„ÿUP„„€„„„€„.‚±N„‚€ÊUP„ƒ€ËUP„„ÿUP„…‚UP‚o‚›$ ‚p‚œ„‚„ƒ„„„…, ‚q‚œ„‚„ƒ„„„…, ‚r‚„‚$  „‚„ƒ„„„…‚p‚s‚ž„ƒ$  „‚„ƒ„„„…‚p‚t‚¡„„$  „‚„ƒ„„„…‚p‚u‚£„…$  „‚„ƒ„„„…‚p‚v‚§„‚$  „‚„ƒ„„„…‚q‚w‚¨„ƒ$  „‚„ƒ„„„…‚q‚x‚ª„„$  „‚„ƒ„„„…‚q‚y‚¬„…$  „‚„ƒ„„„…‚q‚zK$ „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  5‚r‚vÿÿÿÿÿ 3‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚  5‚r‚vÿÿÿÿÿ  3‚r‚v  2‚r‚v.‚f„† „g7„g9„„†„†„‚‚o‚r‚v „‚  5‚r‚vÿÿÿÿÿ  3‚r‚v  2‚r‚v.‚f„‡ „g7„g9„„‡„‡„‚‚o‚r‚v „‚  6‚r‚vÿÿÿÿÿ 4‚r‚v „‚·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚r ‚v.‚f„ˆ „g7„g9„„ˆ„ˆ„‚‚o‚r‚v  2 2‚z‚z‚{K$ „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ 3‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ  3‚s‚w  2‚s‚w.‚f„‰ „g7„g9„„‰„‰„ƒ‚o‚s‚w „ƒ  5‚s‚wÿÿÿÿÿ  3‚s‚w  2‚s‚w.‚f„Š „g7„g9„„ЄЄƒ‚o‚s‚w „ƒ  6‚s‚wÿÿÿÿÿ 4‚s‚w „ƒ·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚s ‚w.‚f„‹ „g7„g9„„‹„‹„ƒ‚o‚s‚w  2 2‚{‚{‚|K$ „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  5‚t‚xÿÿÿÿÿ 3‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„  5‚t‚xÿÿÿÿÿ  3‚t‚x  2‚t‚x.‚f„Œ „g7„g9„„Œ„Œ„„‚o‚t‚x „„  5‚t‚xÿÿÿÿÿ  3‚t‚x  2‚t‚x.‚f„ „g7„g9„„„„„‚o‚t‚x „„  6‚t‚xÿÿÿÿÿ 4‚t‚x „„·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚t ‚x.‚f„Ž „g7„g9„„ބބ„‚o‚t‚x  2 2‚|‚| „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  5‚u‚yÿÿÿÿÿ 3‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…  5‚u‚yÿÿÿÿÿ  3‚u‚y  2‚u‚y.‚f„ „g7„g9„„„„…‚o‚u‚y „…  5‚u‚yÿÿÿÿÿ  3‚u‚y  2‚u‚y.‚f„ „g7„g9„„„„…‚o‚u‚y „…  6‚u‚yÿÿÿÿÿ 4‚u‚y „…·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚u ‚y.‚f„‘ „g7„g9„„‘„‘„…‚o‚u‚y„‚„ƒ„„„…„‚„ƒ„„„…„‚„ƒ„„„…„‚„ƒ„„„…„‚„ƒ„„„…„’€ÊUP„“€ËUP„”ÿUP„•‚UP„’„“„”„•„’„“„”„•.‚²d„–€ÊUP„—€ËUP„˜ÿUP„™‚UP„š‚UP‚}‚›$ ‚~‚œ„–„—„˜„™„š, ‚‚œ„–„—„˜„™„š, ‚€‚„–$  „–„—„˜„™„š‚~‚‚ž„—$  „–„—„˜„™„š‚~‚‚‚¡„˜$  „–„—„˜„™„š‚~‚ƒ‚£„™$  „–„—„˜„™„š‚~‚„‚¥„š$  „–„—„˜„™„š‚~‚…‚§„–$  „–„—„˜„™„š‚‚†‚¨„—$  „–„—„˜„™„š‚‚‡‚ª„˜$  „–„—„˜„™„š‚‚ˆ‚¬„™$  „–„—„˜„™„š‚‚‰‚®„š$  „–„—„˜„™„š‚‚ŠK$ „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  5‚€‚…ÿÿÿÿÿ 3‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–  5‚€‚…ÿÿÿÿÿ  3‚€‚…  2‚€‚….‚f„› „g7„g9„„›„›„–‚}‚€‚… „–  5‚€‚…ÿÿÿÿÿ  3‚€‚…  2‚€‚….‚f„œ „g7„g9„„œ„œ„–‚}‚€‚… „–  6‚€‚…ÿÿÿÿÿ 4‚€‚… „–·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚€ ‚….‚f„ „g7„g9„„„„–‚}‚€‚…  2 2‚ЂЂ‹K$ „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  5‚‚†ÿÿÿÿÿ 3‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—  5‚‚†ÿÿÿÿÿ  3‚‚†  2‚‚†.‚f„ž „g7„g9„„ž„ž„—‚}‚‚† „—  5‚‚†ÿÿÿÿÿ  3‚‚†  2‚‚†.‚f„Ÿ „g7„g9„„Ÿ„Ÿ„—‚}‚‚† „—  6‚‚†ÿÿÿÿÿ 4‚‚† „—·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚ ‚†.‚f„  „g7„g9„„ „ „—‚}‚‚†  2 2‚‹‚‹‚ŒK$ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ 3‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ  3‚‚‚‡  2‚‚‚‡.‚f„¡ „g7„g9„„¡„¡„˜‚}‚‚‚‡ „˜  5‚‚‚‡ÿÿÿÿÿ  3‚‚‚‡  2‚‚‚‡.‚f„¢ „g7„g9„„¢„¢„˜‚}‚‚‚‡ „˜  6‚‚‚‡ÿÿÿÿÿ 4‚‚‚‡ „˜·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚‚ ‚‡.‚f„£ „g7„g9„„£„£„˜‚}‚‚‚‡  2 2‚Œ‚Œ‚K$ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ 3‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ  3‚ƒ‚ˆ  2‚ƒ‚ˆ.‚f„¤ „g7„g9„„¤„¤„™‚}‚ƒ‚ˆ „™  5‚ƒ‚ˆÿÿÿÿÿ  3‚ƒ‚ˆ  2‚ƒ‚ˆ.‚f„¥ „g7„g9„„¥„¥„™‚}‚ƒ‚ˆ „™  6‚ƒ‚ˆÿÿÿÿÿ 4‚ƒ‚ˆ „™·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚ƒ ‚ˆ.‚f„¦ „g7„g9„„¦„¦„™‚}‚ƒ‚ˆ  2 2‚‚ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ 3‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ  3‚„‚‰  2‚„‚‰.‚f„§ „g7„g9„„§„§„š‚}‚„‚‰ „š  5‚„‚‰ÿÿÿÿÿ  3‚„‚‰  2‚„‚‰.‚f„¨ „g7„g9„„¨„¨„š‚}‚„‚‰ „š  6‚„‚‰ÿÿÿÿÿ 4‚„‚‰ „š·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚„ ‚‰.‚f„© „g7„g9„„©„©„š‚}‚„‚‰„–„—„˜„™„š„–„—„˜„™„š„–„—„˜„™„š„–„—„˜„™„š„–„—„˜„™„š„ª€ÊUP„«€ËUP„¬ÿUP„­‚UP„®‚UP„ª„«„¬„­„®„ª„«„¬„­„®‚³¿ ¯Åޏ€©‚´€©‚µ„¯ ‚»!‚»#„‚ŽN$  =„¯„¯‚Ž„¯„¯„° ‚»!‚»#„„°€©‚¶€©‚·„± ‚Ç$‚Ç&„‚N$  4 „±‚„² ‚Ç$‚Ç&„€©€ì€©‚¸€©‚¹€©‚º€©‚»‚‚¼$ ‚‘‚½$ ‚’‚¾$ ‚“‚¿$ ‚”‚À$ ·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã‚‚‘‚’‚“‚”€©‚Á‚•<$ ‚–K$ ·z\V4à‰s‚·z\V4à‰H·z\V4à‰‚Ã‚•‚–€©‚Ä„³ ‚Ý&‚Ý(„‚—#, ·z\V4à‰‚Å‚Ä„³„³„³„³„´ ‚Ý&‚Ý(„„´€©‚Æ„µ ‚ã&‚ã(„‚˜x„µ$ ‚™K$  ;„µ„µ‚˜‚™„µ„µ„µ„µ„¶ ‚ã&‚ã(„„¶„¶€©‚Ç„· ‚ä&‚ä(„‚šx„·$ ‚›K$ ‚œN„·$  <„·‚š‚›‚œ„·„·„·„·„¸ ‚ä&‚ä(„„¸„¸€©‚È„¹ ‚ò(‚ò*„‚x„¹$ ‚žb$ ‚Ÿc$  ;„¹„¹‚‚ž‚Ÿ„¹„¹„¹„¹„¹„º ‚ò(‚ò*„„º„º€©‚É„» ‚ó(‚ó*„‚ x„»$ ‚¡b$ ‚¢c$ ‚£N„»$  <„»‚ ‚¡‚¢‚£„»„»„»„»„»„¼ ‚ó(‚ó*„„¼„¼€©‚Ê„½ ƒ(ƒ*„‚¤x„½$ ‚¥b$ ‚¦c$ ‚§d$  ;„½„½‚¤‚¥‚¦‚§„½„½„½„½„½„½„¾ ƒ(ƒ*„„¾„¾€©‚Ë„¿ ƒ(ƒ*„‚¨x„¿$ ‚©b$ ‚ªc$ ‚«d$ ‚¬N„¿$  <„¿‚¨‚©‚ª‚«‚¬„¿„¿„¿„¿„¿„¿„À ƒ(ƒ*„„À„À€©‚Ì„Á ƒ"(ƒ"*„‚­x„Á$ ‚®b$ ‚¯c$ ‚°d$ ‚±h$  ;„Á„Á‚­‚®‚¯‚°‚±„Á„Á„Á„Á„Á„Á„Á„ ƒ"(ƒ"*„„„€©‚̈́à ƒ#(ƒ#*„‚²x„Ã$ ‚³b$ ‚´c$ ‚µd$ ‚¶h$ ‚·N„Ã$  <„²‚³‚´‚µ‚¶‚·„Ã„Ã„Ã„Ã„Ã„Ã„Ã„Ä ƒ#(ƒ#*„„ĄĂÎ|ÅɸĀª‚Ï‚¸N$ ‚¹€Æ$ ‚¸‚¹€ª‚ЂºN$ ‚»€Æ$ ‚º‚»€ª‚Ñ‚¼N$ ‚½€Æ$ ‚¼‚½€ª‚Ò‚¾N$ ‚¿€Æ$ ‚¾‚¿€ª‚Ó„Å ‚n"‚n$„‚ÀN„Å$ ‚Á€Û$ ·z\V4à‰r)·z\V4à‰s‚— €«„Å$‚Á€«„ńŀ«„Å„Æ ‚n"‚n$„„Æ€«„Æ€ª‚Õ„Ç ‚t"‚t$„ ‚ÂN„Ç$ ‚ÀÛ$ ·z\V4à‰r)·z\V4à‰s‚— €¬„Ç$‚À¬„DŽǀ¬„Ç„È ‚t"‚t$„ „È€¬„È‚×ìÉÏÄÆ‚ØÌÉÏÄÆ€­‚Ù€­‚Ú€­‚Û€­‚Ü€­‚݄ɂÞd%d'„‚Ä| $ „ÉX€¯‚à)XX‚Ä€©‚´„Ê‚á‚âP„„ʄɀ­‚Ù   ‚Ä„É „Ʉ˂Þd%d'„ „Ë€­‚ã„Ì‚Þh%h'„‚Å| $ „ÌX€¯‚à) X X‚Å€©‚´„Í‚á‚âP„„̈́̀­‚Ù ‚Å„Ì „̄΂Þh%h'„ „΀­‚änkAÏ`Æïp‚傿„ÏUP‚ÆN$ €©‚´„Ð ‚³‚³„„ЄςƄττÑUP„Ñ‚ç„Ò RR„‚ÇN„Ò$  &„Ò‚Ç„Ò„Ó RR„„Óo„Ô U,U.„‚È€Û$  „Ô‚È„Ô„Ô„Õ U,U.„„Õ‚è‚É‚é$ ·z\V4à‰‚ê)·z\V4à‰s$‚É$$‚ë‚ì‚Ê`$  2‚Ê‚í„ÖUP‚ËN„Ö$ ‚̀ƄÖ$ „Ö 5‚Ë‚Ì „Ö 5‚Ë‚Ì „Ö 5‚Ë‚Ì „Ö 5‚Ë‚Ì „Ö  5‚Ë‚Ì „Ö  5‚Ë‚Ì „Ö 6‚Ë‚Ì „Ö 6‚Ë‚Ì „Ö 6‚Ë‚Ì „Ö 6‚Ë‚Ì „Ö 6‚Ë‚Ì „Ö 5‚Ë‚Ì „Ö  5‚Ë‚Ì „Ö  5‚Ë‚Ì „Ö 5‚Ë‚Ì.€Ñ„× „•,„•.„„ׄׄւ˂̄քքքØUP„؄؂î„ÙUP‚ÍN„Ù$ ‚΀Æ„Ù$ „Ù 3‚͂Π„Ù 3‚͂Π„Ù 3‚͂Π„Ù 3‚͂Π„Ù  3‚͂Π„Ù  3‚͂Π„Ù 3‚͂Π„Ù 4‚͂Π„Ù 4‚͂Π„Ù 4‚͂Π„Ù 4‚͂Π„Ù 4‚͂Π„Ù  3‚͂Π„Ù  3‚͂Π„Ù 3‚Í‚Î.€Ö„Ú „œ/„œ1„„ڄڄق͂΄لللÛUP„Û„Û‚ï„ÜUP‚ÏN„Ü$ ‚ЀÆ„Ü$ „Ü 2 5‚ςР„Ü 2 5‚ςР„Ü 2 5‚ςР„Ü 2 5‚ςР„Ü  2 5‚ςР„Ü  2 5‚ςР„Ü 2 5‚ςР„Ü 2 6‚ςР„Ü 2 6‚ςР„Ü 2 6‚ςР„Ü 2 6‚ςР„Ü 2 6‚ςР„Ü  2 6‚ςР„Ü  2 6‚ςР„Ü 2 5‚Ï‚Ð.‚l„Ý „£2„£4„„݄݄܂ςЄ܄܄܄ÞUP„Þ„Þ‚ð„ßUP‚ÑN„ß$ ‚ҀƄß$ „ß 2 3‚Ñ‚Ò „ß 2 3‚Ñ‚Ò „ß 2 3‚Ñ‚Ò „ß 2 3‚Ñ‚Ò „ß  2 3‚Ñ‚Ò „ß  2 3‚Ñ‚Ò „ß 2 3‚Ñ‚Ò „ß 2 4‚Ñ‚Ò „ß 2 4‚Ñ‚Ò „ß 2 4‚Ñ‚Ò „ß 2 4‚Ñ‚Ò „ß 2 4‚Ñ‚Ò „ß  2 4‚Ñ‚Ò „ß  2 4‚Ñ‚Ò „ß 2 3‚Ñ‚Ò.‚j„à „«/„«1„„à„à„߂т҄߄߄߄áUP„á„á‚ñ„âUP‚ÓN„â$ ‚ԀƄâ$ „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â  2‚Ó‚Ô „â  2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â  2‚Ó‚Ô „â  2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â 2‚Ó‚Ô „â·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚Ó ‚Ô.€ý„ã †&2†&4„„ã„ã„â‚Ó‚Ô„â„â„â„äUP„ä„ä‚ò„åUP‚ÕN„å$ ‚րƄå$  2 „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å  2‚Õ‚Ö „å  2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å  2‚Õ‚Ö „å  2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å 2‚Õ‚Ö „å·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ‚Õ ‚Ö.€ý„æ †&2†&4„„æ„æ„å‚Õ‚Ö„å„å„å„çUP„ç„ç‚ó„è hh „‚×N„è$ ‚؀Ƅè$ „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  5‚ׂØÿÿÿÿÿ 3‚×‚Ø „è  6‚ׂØÿÿÿÿÿ 4‚×‚Ø „è·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ‚× ‚Ø.‚d„é „‹+„‹-„„é„é„è‚ׂ؄è„è„è„ê hh „„ê„ê€Õ „ëUP‚ÙN„ë$ ‚ڀƄë$ „ë 5‚Ù‚Ú „ë 5‚Ù‚Ú „ë 5‚Ù‚Ú „ë 5‚Ù‚Ú „ë  5‚Ù‚Ú „ë  5‚Ù‚Ú „ë 6‚Ù‚Ú „ë 6‚Ù‚Ú „ë 6‚Ù‚Ú „ë 6‚Ù‚Ú „ë 6‚Ù‚Ú „ë 5‚Ù‚Ú „ë  5‚Ù‚Ú „ë  5‚Ù‚Ú „ë 5‚Ù‚Ú.€Ñ„ì „•,„•.„„ì„ì„ë‚Ù‚Ú‚Ú‚Ù„ë„ë„ë„ë„ë„ë„ë„íUP„í„í„í€Í „îUP‚ÛN„î$ ‚܀Ƅî$ „î 5‚Û‚Ü „î 5‚Û‚Ü „î 5‚Û‚Ü „î 5‚Û‚Ü „î  5‚Û‚Ü „î  5‚Û‚Ü „î 6‚Û‚Ü „î 6‚Û‚Ü „î 6‚Û‚Ü „î 6‚Û‚Ü „î 6‚Û‚Ü „î 5‚Û‚Ü „î  5‚Û‚Ü „î  5‚Û‚Ü „î 5‚Û‚Ü.€Ñ„ï „•,„•.„„ï„ï„î‚ۂ܂ۂ܄î„î„î„î„î„î„î„ðUP„ð„ð„ð‚ô„ñUP‚Ý‚é$ o„ò U,U.„„ò„ñ·z\V4à‰‚ê)·z\V4à‰s$‚Ý„ñ„ñ„óUP„ó‚õ„ôUP‚Þ‚ö$ ‚ß‚÷$ o„õ U,U.„„õ„ô·z\V4à‰r)·z\V4à‰s·z\V4à‰s‚߂ބô„ô„ô„öUP„ö‚ø„÷UP‚à‚ö$ o„ø U,U.„„ø„÷ ·z\V4à‰€…)·z\V4à‰s ‚à„÷„÷„ùUP„ù‚ù„úUP‚á‚é$ o„û U,U.„„û„úY·z\V4à‰‚û)·z\V4à‰sY‚á„ú„ú„üUP„ü‚ü„ýUP‚â#, €©‚´„þ ‚³‚³„„þ„ý 9Z„ý„ý„ÿUP„ÿ‚þ…UP‚ã#, €©‚´… ‚³‚³„…… 9Z………UP…‚ÿ…€ÊUP…€ËUP‚䂜……,  ……‚ä……………€ÊUP…€ËUP………ƒ…€ÊUP…€ËUP‚傜……,  ……‚å…………… €ÊUP… €ËUP… … … ƒ… UP‚情 , … … UP… ƒ… UP‚çN… $ €“… ‚瀓… … €“… …UP…€“…ƒ…UP‚èN€“…$ ‚逯…$ €“‚…‚è‚é…€“………UP€“……ƒ…UP‚êN€“…$ €“‚…‚ê…€“………UP€“……ƒ…€ÊUP…€‡UP‚ëN…$ ‚ìV……$ ‚ì……‚ë………………………€ÊUP…€‡UP…………ƒ…€ÊUP…€ËUP…€‡UP‚í‚…$ ‚…$ ‚ïV………$ ‚ï………‚í‚î………………………………€ÊUP…€ËUP…€‡UP………………ƒ…€ÊUP…€ËUP…ÿUP… €‡UP‚ð‚…$ ‚ñ‚ž…$ ‚ò‚¡…$ ‚óV………… $ ‚ó………… ‚ð‚ñ‚ò… ………… … ………………… … …!€ÊUP…"€ËUP…#ÿUP…$€‡UP…!…"…#…!…"…#…$…$ƒ …%UP…&€‡UP‚ôV…%…&$ ‚õN…%$ ‚ô…%…&‚õ…&…%…&…%…&…%…&…'UP…(€‡UP…'…(…'…(ƒ …)€ÊUP…*€ËUP…+€‡UP‚öV…)…*…+$ ‚÷‚…)$ ‚ø‚ž…*$ ‚ö…)…*…+‚÷‚ø…+…)…*…+…)…*…+…)…*…+…,€ÊUP…-€ËUP….€‡UP…,…-….…,…-….ƒ …/€ÊUP…0€ËUP…1ÿUP…2€‡UP‚ùV…/…0…1…2$ ‚ú‚…/$ ‚û‚ž…0$ ‚ü‚¡…1$ ‚ù…/…0…1…2‚ú‚û‚ü…2…/…0…1…2…/…0…1…2…/…0…1…2…3€ÊUP…4€ËUP…5ÿUP…6€‡UP…3…4…5…6…3…4…5…6ƒ  …7€ÊUP…8€ËUP…9ÿUP‚ýV…7…8$ ‚þƒ …8…9$ ‚ÿN…7$ ‚þ…8…9‚ý…7…8‚ÿ…9…7…9…8…9…7…9…7…8…8…9…7…9…:€ÊUP…;€ËUP…<ÿUP…:…;…;…<…:…<ƒ …=€ËUP…>ÿUP…?€ÊUPƒV…=…>$ ƒƒ …?…=$ ƒN…?$ ƒ…=…>ƒ…?…=ƒ…>…?…>…?…=…?…>…=…>…?…=…?…>…@€ËUP…AÿUP…B€ÊUP…@…A…B…@…B…AƒƒN$ ƒ€Æ$ ·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰sƒƒƒ …CUPƒN …C$ ƒ€Æ…C$ ƒ€”‚…Cƒ€”‚…C€”‚…Cƒ…C…C…C…C …C…C…C…DUP …D…D…Dƒ…E »»„…Eƒ…E…EƒN…E$ …E   ƒ …E   ƒ …E   ƒ …E   ƒ …E ƒ …E ƒ …E ƒ …E …E·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á ƒ…Eƒ…E…Eƒ…E…E…E…F »»„…Fƒ…F…F…F…F8…G€Ê ÇÇ„…G…H8…G…H…I…H€Ë Ç$Ç%„…G…H8…G…H…I…Iÿ Ç*Ç+„ƒN…G$ ƒ €Æ…H$ …H …G   ƒƒ …H …G   ƒƒ …H …G   ƒƒ …H …G   ƒƒ …H…G ƒƒ …H…G ƒƒ …H…G ƒƒ …H…G ƒƒ …H…G   ƒƒ …H…G  ƒƒ …H…G  ƒƒ …H…G   ƒƒ …H…G  ƒƒ …H…G …G·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒ ƒ …H…G …I·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ …G…G…G…H8…G…H…Iƒƒ ,‚”…J€Ê ‰e‰e„…K€Ë ‰e‰e!„…L€‡ ‰e"‰e$„…J…K…L…G…H…Iƒƒ …I…H…I…G…H…I…M€Ê ÇÇ„…M…N8…M…N…O…N€Ë Ç$Ç%„…M…N8…M…N…O…Oÿ Ç*Ç+„…M…N…O7…P€Ê ÞÞ„…P…Q7…P…Q…R…Q€Ë Þ$Þ%„…P…Q7…P…Q…R…Rÿ Þ*Þ+„ƒ N…P$ ƒ €Æ…Q$ …Q …P   ƒ ƒ …Q …P   ƒ ƒ …Q …P   ƒ ƒ …Q …P   ƒ ƒ …Q…P ƒ ƒ …Q…P ƒ ƒ …Q…P ƒ ƒ …Q…P ƒ ƒ …Q…P   ƒ ƒ …Q…P  ƒ ƒ …Q…P   ƒ ƒ …Q…P  ƒ ƒ …Q…P …R·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ  ƒ …P…Q7…P…Q…Rƒ ƒ …R…Q…R…P…Q…R…S€Ê ÞÞ„…S…T7…S…T…U…T€Ë Þ$Þ%„…S…T7…S…T…U…Uÿ Þ*Þ+„…S…T…Uƒ…V€Ê ïï„…V…Wƒ…V…W…X…W€Ë ï&ï'„…V…Wƒ…V…W…X…Xÿ ï,ï-„ƒ N…V$ ƒ €Æ…W$ …W …V   ƒ ƒ …W …V   ƒ ƒ …W …V   ƒ ƒ …W …V   ƒ ƒ …W…V ƒ ƒ …W…V ƒ ƒ …W…V ƒ ƒ …W…V ƒ ƒ …W…V   ƒ ƒ …W…V  ƒ ƒ …W…V   ƒ ƒ …W…V  ƒ ƒ …W…V …X·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ  ƒ …V…V…V…Wƒ…V…W…Xƒ ƒ ,‚•…Y€Ê ‰²‰²„…Z€Ë ‰²‰²!„…[€‡ ‰²"‰²$„…Y…Z…[…V…W…Xƒ ƒ …X…W…X…V…W…X…\€Ê ïï„…\…]ƒ…\…]…^…]€Ë ï&ï'„…\…]ƒ…\…]…^…^ÿ ï,ï-„…\…]…^ƒ…_€Ê ŽŽ„…_…`ƒ…_…`…a…`€Ë Ž&Ž'„…_…`ƒ…_…`…a…aÿ Ž,Ž-„ƒN…_$ ƒ€Æ…`$ …` …_   ƒƒ …` …_   ƒƒ …` …_   ƒƒ …` …_   ƒƒ …`…_  ƒƒ …`…_  ƒƒ …`…_ ƒƒ …`…_  ƒƒ …`…_   ƒƒ …`…_   ƒƒ …`…_   ƒƒ …`…_   ƒƒ …`…_ …a·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ…_…`ƒ…_…`…aƒƒ…a…`…a…_…`…a…b€Ê ŽŽ„…b…cƒ…b…c…d…c€Ë Ž&Ž'„…b…cƒ…b…c…d…dÿ Ž,Ž-„…b…c…dƒ…e€Ê ŽŽ„…e…fƒ…e…f…g…f€Ë Ž&Ž'„…e…fƒ…e…f…g…gÿ Ž,Ž-„ƒN…e$ ƒ€Æ…f$ …f …e    ƒƒ …f …e    ƒƒ …f …e    ƒƒ …f …e    ƒƒ …f…e  ƒƒ …f…e  ƒƒ …f…e  ƒƒ …f…e  ƒƒ …f…e    ƒƒ …f…e   ƒƒ …f…e    ƒƒ …f…e   ƒƒ …f…e …g·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ ƒ…e…fƒ…e…f…gƒƒ…g…f…g…e…f…g…h€Ê ŽŽ„…h…iƒ…h…i…j…i€Ë Ž&Ž'„…h…iƒ…h…i…j…jÿ Ž,Ž-„…h…i…jƒ…k Ž&Ž&„…kƒ…k…kƒN…k$ …k ƒ …k ƒ …k ƒ …k ƒ …kƒ …kƒ …kƒ …kƒ …kƒ …kƒ …kƒ …kƒ …kƒ…kƒ…k…kƒ…k…k…k…l Ž&Ž&„…lƒ…l…l…l…lƒ…m Ž9Ž9„…mƒ…m…mƒN…m$ ƒK$ …m  ƒ  ƒ …m ƒ  ƒ …m   ƒ  ƒ? …m ƒ  ƒ? …m ƒƒ …m ƒƒ …m   ƒ  ƒ …m  ƒ  ƒ …m   ƒ  ƒ …m  ƒ  ƒ…mƒ…m…mƒƒ…m…m…m…m…n Ž9Ž9„…nƒ…n…n…n…nƒ…o ŽGŽG„…oƒ…o…oƒN…o$ ƒK$ …o   ƒ  ƒ …o ƒ  ƒ …o   ƒ  ƒ? …o ƒ  ƒ? …o ƒƒ …o ƒƒ …o   ƒ  ƒ …o  ƒ  ƒ …o   ƒ  ƒ …o  ƒ  ƒ…oƒ…o…oƒƒ…o…o…o…o…p ŽGŽG„…pƒ…p…p…p…pƒ…q ŽUŽU„…qƒ…q…q…qƒN…q$ ƒ€Æ…q$ …q    ƒƒ …q    ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ …q  ƒƒ…qƒ…q…q…qƒƒ…q…q…q…q…q…q…r ŽUŽU„…rƒ…r…r…r…r…r…rƒ…s ŽcŽc„…sƒ…s…s…sƒN…s$ ƒ€Æ…s$ …s    ƒƒ …s    ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ …s  ƒƒ…sƒ…s…s…sƒƒ…s…s…s…s…s…s…t ŽcŽc„…tƒ…t…t…t…t…t…tƒ…u ŽqŽq„…uƒ…u…u…uƒN…u$ ƒ€Æ…u$ …u   ƒƒ …u   ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ …u ƒƒ…uƒ…u…u…uƒƒ…u…u…u…u…u…u…v ŽqŽq„…vƒ…v…v…v…v…v…vƒ…w ŽŽ„…wƒ…w…wƒN…w$ …w   ƒ …w   ƒ …w ƒ …w ƒ …w ƒ …w ƒ …w   ƒ …w  ƒ …w   ƒ …w  ƒ…wƒ…w…wƒ…w…w…w…x ŽŽ„…xƒ…x…x…x…xƒƒN€“$ €“‚ƒ  €“‚ƒ€“ƒƒN€“$ €“‚ƒ  €“‚ƒ€“ƒ€¿…y ޳޳„…y‚F…yƒ N…y$ …yƒ!<,  ƒ  ,‚Uƒ! …y  ƒ …y  ƒ …y  ƒ …y  ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y ƒ …y‚F…yƒ …y…z ޳޳„…z‚F…z…z€¾…{ ŽÆŽÆ„…{‚F…{ƒ"N…{$ …{ƒ#<,  ƒ" ,‚Wƒ# …{  ƒ" …{  ƒ" …{  ƒ" …{  ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ" …{ ƒ"…{‚F…{ƒ"…{…| ŽÆŽÆ„…|‚F…|…|€½…} ŽÙŽÙ „…}‚F…}ƒ$N…}$ …}ƒ%<,  ƒ$ ,‚Uƒ% …}  ƒ$ …}  ƒ$ …}  ƒ$ …}  ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$ …} ƒ$…}‚F…}ƒ$…}…~ ŽÙŽÙ „…~‚F…~…~€¼… ŽìŽì„…‚F…ƒ&N…$ …ƒ'<,  ƒ& ,‚Wƒ' …  ƒ& …  ƒ& …  ƒ& …  ƒ& … ƒ& … ƒ& … ƒ& … ƒ& … ƒ& … ƒ& … ƒ& … ƒ& … ƒ&…‚F…ƒ&……€ ŽìŽì„…€‚F…€…€€¹… ŽÿŽÿ „…‚F…ƒ(N…$ …,‚U ƒ( …  ƒ( …  ƒ( …  ƒ( … ƒ( …  ƒ( … ƒ( … ƒ( … ƒ( … ƒ( … ƒ( … ƒ( … ƒ( … ƒ(…‚F…ƒ(……‚ ŽÿŽÿ „…‚‚F…‚…‚{…ƒ „…ƒ‚F…ƒ ƒ)N…ƒ$ …ƒ,‚W ƒ) …ƒ   ƒ) …ƒ   ƒ) …ƒ   ƒ) …ƒ  ƒ) …ƒ   ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ) …ƒ  ƒ)…ƒ‚F…ƒ ƒ) …ƒ …„ „…„‚F…„ …„ ……UP……‚F…… ƒ*N……$ ƒ+N……, ƒ* ……,‚W ƒ* ……   ƒ* ……   ƒ* ……   ƒ* ……  ƒ* ……   ƒ* ……  ƒ* ……  ƒ* ……  ƒ* ……  ƒ* ……  ƒ* ……  ƒ* ……  ƒ* ……  ƒ*……‚F…… ƒ+ …… …†UP…†‚F…† …† ƒ…‡€‡ 66„ ƒ,N $ …‡…‡ …‡ƒ, =…‡…‡ & ƒ,…‡ …‡…ˆ€‡ 66„  …ˆƒ …‰* 9/91„…Š, 9294„ƒ-ƒ!€²…‰…Š$ …‰…Š·z\V4à‰ƒ#ƒ$…‰…Š…‰ƒ-·z\V4à‰ƒ#¸…‰…Š…Šƒ-…‰…Š€²…‰…Š…‰…Š…‹* 9/91„…Œ, 9294„€²…‹…Œ…‹…Œƒ% ÿð ƒ& ÿøÿ ƒ' ÿ€ ƒ( ÿÀÿ €¸… JJ „…‚F…ƒ.N…$ …,‚ ƒ. …  ƒ. …  ƒ. …  ƒ. …  ƒ. … ƒ. … ƒ. … ƒ. … ƒ. … ƒ. … ƒ. … ƒ. … ƒ. … ƒ.…‚F…ƒ.……Ž JJ „…Ž‚F…Ž…Ž€·… dd„…‚F… ƒ/N…$ …,‚Ž  ƒ/ …   ƒ/ …   ƒ/ …   ƒ/ …   ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/ …  ƒ/…‚F… ƒ/ … … dd„…‚F… … €µ…‘ { {!„…‘‚F…‘ ƒ0N…‘$ …‘·z\V4à‰‚G‚H·z\V4à‰s·z\V4à‰‚I·z\V4à‰‚J·z\V4à‰‚G  ƒ0€§UVW·z\V4à‰‚O‚P·z\V4à‰‚OW …‘    ƒ0 …‘   ƒ0 …‘    ƒ0 …‘    ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0 …‘   ƒ0…‘‚F…‘ ƒ0 …‘ …’ { {!„…’‚F…’ …’ €³…“ ŽŽ„…“‚F…“ ƒ1N…“$ …“·z\V4à‰‚R‚H·z\V4à‰s·z\V4à‰‚I·z\V4à‰‚J·z\V4à‰‚R  ƒ1€§UVW·z\V4à‰‚O‚P·z\V4à‰‚OW …“   ƒ1 …“    ƒ1 …“    ƒ1 …“    ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“   ƒ1 …“·z\V4à‰€æ‚S·z\V4à‰€Á·z\V4à‰‚R  ƒ1…“‚F…“ ƒ1 …“ …” ŽŽ„…”‚F…” …” €À…• ¢ ¢!„…•‚F…•ƒ2N…•$ …•·z\V4à‰€Á‚H·z\V4à‰s·z\V4à‰‚I·z\V4à‰‚J·z\V4à‰€Á ƒ2€§UVW·z\V4à‰‚O‚P·z\V4à‰‚OW …• ·z\V4à‰€æ€ç·z\V4à‰‚R·z\V4à‰€Á  ƒ2 …• ·z\V4à‰€æ€ç·z\V4à‰‚G·z\V4à‰€Á  ƒ2 …• ·z\V4à‰€æ€ç·z\V4à‰ƒ)·z\V4à‰€Á  ƒ2 …• ·z\V4à‰€æ€ç·z\V4à‰H·z\V4à‰€Á  ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ*·z\V4à‰€Á ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ)·z\V4à‰€Á   ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ+·z\V4à‰€Á ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ,·z\V4à‰€Á ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ-·z\V4à‰€Á ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ.·z\V4à‰€Á ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰ƒ,·z\V4à‰€Á  ƒ2 …•·z\V4à‰€æ€ç·z\V4à‰€Ã·z\V4à‰€Á ƒ2 …• ƒ2…•‚F…•ƒ2…•…– ¢ ¢!„…–‚F…–…–€»…— º#º$„…—‚F…—ƒ3N…—$ …—ƒ4<,  ƒ3  ,‚Ž ƒ4 …—   ƒ3 …—   ƒ3 …—   ƒ3 …—   ƒ3 …—  ƒ3 …— ƒ3 …—  ƒ3 …—  ƒ3 …—  ƒ3 …—  ƒ3 …—  ƒ3 …— ƒ3 …—  ƒ3…—‚F…—ƒ3…—…˜ º#º$„…˜‚F…˜…˜€º…™ Ó"Ó#„…™‚F…™ƒ5N…™$ …™ƒ6<,  ƒ5  ,‚Ž ƒ6 …™   ƒ5 …™   ƒ5 …™   ƒ5 …™   ƒ5 …™  ƒ5 …™  ƒ5 …™  ƒ5 …™  ƒ5 …™  ƒ5 …™  ƒ5 …™  ƒ5 …™ ƒ5 …™  ƒ5…™‚F…™ƒ5…™…š Ó"Ó#„…š‚F…š…šw…› ëë „ƒ7N…›$ …› ƒ8ƒ/ l   ƒ7·z\V4à‰‚Rƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ8ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …› ƒ9ƒ/ l   ƒ7·z\V4à‰‚Gƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ9ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …› ƒ:ƒ/ l   ƒ7·z\V4à‰ƒ)ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ:ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …› ƒ;ƒ/ l   ƒ7·z\V4à‰Hƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ;ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒ<ƒ/l  ƒ7·z\V4à‰ƒ*ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ<ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒ=ƒ/l  ƒ7·z\V4à‰€úƒ0·z\V4à‰sƒ= …›ƒ>ƒ/l  ƒ7·z\V4à‰ƒ+ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ>ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒ?ƒ/l  ƒ7·z\V4à‰ƒ,ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ?ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒ@ƒ/l  ƒ7·z\V4à‰ƒ-ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒ@ƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒAƒ/l  ƒ7·z\V4à‰ƒ*ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒAƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OW …›ƒBƒ/l  ƒ7·z\V4à‰€úƒ0·z\V4à‰sƒB …›ƒCƒ/l  ƒ7·z\V4à‰€Ãƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒCƒ VW·z\V4à‰‚O‚P·z\V4à‰‚OWƒDƒ1,  &…›ƒ7 ƒDƒEƒ2[,  [[ƒDƒEƒDƒE ƒFV[, ·z\V4à‰ƒ4ƒ0·z\V4à‰s·z\V4à‰‚J·z\V4à‰sƒFVW·z\V4à‰‚O‚P·z\V4à‰‚OWƒG , ·z\V4à‰€úƒ0·z\V4à‰sƒG…›…œ ëë „…œ€Ç… üü„…‚F…ƒHN…$ …·z\V4à‰‚Ã‚H·z\V4à‰s·z\V4à‰‚Ã ƒH …  ƒH …  ƒH …  ƒH …  ƒH … ƒH … ƒH … ƒH … ƒH … ƒH … ƒH … ƒH … ƒH … ƒH…‚F…ƒH……ž üü„…ž‚F…ž…žƒ5 …Ÿƒ6 8#8%„… UPƒIƒ7…Ÿ$ ƒJV… $ ·z\V4à‰ƒ8ƒ9·z\V4à‰€ú…ŸƒI… ƒKz, ƒJ… … ƒLz, ·z\V4à‰ƒ8ƒ:·z\V4à‰€ú…ŸƒI… … … …Ÿ… … …¡ƒ6 8#8%„…¢UP…¡…¢…¢ƒ;ƒ<…£ GG„·z\V4à‰ƒ=ƒ>·z\V4à‰ƒ?·z\V4à‰ƒ=\ +]…£\…¤ GG„\ƒB …¥ KK„ƒMƒC\, ·z\V4à‰ƒ=ƒ>·z\V4à‰ƒ?·z\V4à‰ƒ=\ +]…¥ ·z\V4à‰ƒ=ƒD·z\V4à‰€ÂƒM·z\V4à‰ƒ=ƒE·z\V4à‰ƒ=\ƒMƒM\\…¦ KK„\ƒF…§ OO„ :…§…¨ OO„…© SS„ƒNN…©$ …© ƒN …© ƒN …©  ƒN …© ƒN …© ƒN …©  ƒN ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒN.€ü…ªUP…ª…©ƒN…©…« SS„…«ƒG…¬ V0V2„ƒO‚x$ ƒPN…¬$ …¬ ƒP …¬ ƒP …¬  ƒP …¬ ƒP …¬ ƒP …¬  ƒP ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒP.‚y…­UP…­…¬ƒOƒP…¬…¬…® V0V2„…®ƒH…¯UPƒQN…¯$ ƒQ…¯…¯…¯…°UP…°…°ƒI…± ^^„·z\V4à‰ƒJƒK·z\V4à‰ƒL^^…² ^^„^ƒN…³ aa„·z\V4à‰ƒJƒO·z\V4à‰ƒPTT…´ aa„TƒQ…µ dd„·z\V4à‰ƒJ“·z\V4à‰ƒPTT…¶ dd„TƒR…· ”†”†„…·‚“…·…·…·8…·…·…·ƒRK…·$ ƒSL…·$ …· €·ƒT  ƒR ƒS …· €·ƒU          ƒR ÿð?   ƒS …· €·ƒV          ƒR ÿ€?   ƒS …· €·ƒW          ƒR   ƒS …·€·ƒX  ƒR ƒS …·€·ƒY  ƒR ƒS …·€·ƒZ  ƒR  ƒS …·€·ƒ[  ƒR  ƒS …·€·ƒ\  ƒR ƒS …·€·ƒ]  ƒR ƒS …·€·ƒ^  ƒR ƒS …·€·ƒ_  ƒR ƒS …·€·ƒ`= ƒR ƒS€·ƒa…¸ ’o3’o5„…¸…¸…¸…¸…¸…¸ …¸…·…·…·…·…·…·…· …·  …· ÿð? …· ÿ€?  …·  …· …· …·  …·  …· …· …·  …· …· …··z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    …·…·…·‚“…·,‚…¹ ˆþˆþ!„…¹…·ƒTN…·, ƒU€Æ…·, …· …·  , ƒTƒU …· …·   ƒTƒU …· …·   ƒTƒU …· …·  , ƒTƒU …·…· -ƒTƒU …·…· -ƒTƒU …·…· ,ƒTƒU …·…· -ƒTƒU …·…·  , ƒTƒU …·…·  -ƒTƒU …·…·  -ƒTƒU …·…·  , ƒTƒU …·…·  -ƒTƒU …·…· …··z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒT ƒU …·…· …··z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒT ƒU …·…·…·…·8…·…·…·ƒTƒU,€É…º€Ê ‰Œ#‰Œ%„…»€Ë ‰Œ&‰Œ(„…¼€‡ ‰Œ)‰Œ+„…º…»…¼…·…·…·ƒTƒU…·…·…·ƒRƒS …·…· …·…·…· …·…½ ”†”†„…½‚“…½…½…½8…½…½…½…½…½ …½ƒb…¾ ”–”– „…¾…¿8…¾…¿…¾…¿ƒc ”–)”–*„…¿€±…¿…¾…¿8…¾…¿…¾ƒVK…¾$ ƒWƒd…¿$ ƒXL…¾$ …¾ €·ƒT  ƒV ƒW ƒX …¾ €·ƒU          ƒV  ƒW  ƒX …¾ €·ƒV          ƒV  ƒW  ƒX …¾ €·ƒW          ƒV  ƒW  ƒX …¾€·ƒX  ƒV ƒW ƒX …¾€·ƒY  ƒV ƒW ƒX …¾€·ƒZ  ƒV ƒW ƒX …¾€·ƒ[  ƒV ƒW ƒX …¾€·ƒ\  ƒV ƒW ƒX …¾€·ƒ]  ƒV ƒW ƒX …¾€·ƒ^  ƒV ƒW ƒX …¾€·ƒ_  ƒV ƒW ƒX€·ƒe…ÀƒcUP…Á ’p=’p?„…À…Á…À…Á…Á…À…Á …Á…¿…¾…¿…¾…¿…¾…¾…¿…¾ …¿  …¿  …¿   …¿  …¿ …¿ …¿  …¿  …¿ …¿ …¿ …¿ …¿·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    …¿…¿…¿€±…¿,€Å… ˆý ˆý"„…Â…¿ƒYN…¾, ƒZ€Æ…¿, …¿ …¾  , ƒYƒZ …¿ …¾   ƒYƒZ …¿ …¾   ƒYƒZ …¿ …¾  , ƒYƒZ …¿…¾ -ƒYƒZ …¿…¾ -ƒYƒZ …¿…¾ ,ƒYƒZ …¿…¾ -ƒYƒZ …¿…¾  , ƒYƒZ …¿…¾  -ƒYƒZ …¿…¾  -ƒYƒZ …¿…¾  , ƒYƒZ …¿…¾  -ƒYƒZ …¿…¾ …¾·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒY ƒZ …¿…¾ …¾·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒY ƒZ …¾…¾…¾…¿8…¾…¿…¾ƒYƒZ,€É…Ã€Ê ‰Œ#‰Œ%„…Ä€Ë ‰Œ&‰Œ(„…Å€‡ ‰Œ)‰Œ+„…Ã…Ä…Å…¾…¿…¾ƒYƒZ…¾…¿…¾ƒVƒWƒX …¾…¾ …¾…¿…¾ …¾…¾…¿…¾ …¾…Æ ”–”– „…Æ…Ç8…Æ…Ç…ƅǃc ”–)”–*„…Ç€±…Ç…Æ…Ç8…Æ…Ç…Æ…Æ…Ç…Æ …ƃf…È ”§”§„…ȃg…ȅȃ[N…È$ …ȅȃ\N…È, ƒ[ …È ·z\V4à‰ƒhƒg·z\V4à‰H·z\V4à‰H  ƒ[ …È ·z\V4à‰ƒhƒg·z\V4à‰‚R·z\V4à‰‚R   ƒ[ …È ·z\V4à‰ƒhƒg·z\V4à‰‚G·z\V4à‰‚G   ƒ[ …È ·z\V4à‰ƒhƒg·z\V4à‰ƒ)·z\V4à‰ƒ)   ƒ[ …ȃ]N,  ƒ[  2 5ƒ] ƒ]ƒ^€ˆ,  ƒ]  5ƒ^ o…É U,U.„…É_·z\V4à‰ƒj)·z\V4à‰s_‚˜ƒ^ …È·z\V4à‰ƒhƒg·z\V4à‰ƒ*·z\V4à‰ƒ* ƒ[ …È·z\V4à‰ƒhƒg·z\V4à‰ƒ+·z\V4à‰ƒ+ ƒ[ …È·z\V4à‰ƒhƒg·z\V4à‰€Á·z\V4à‰€Á ƒ[…ȃg…ȅȃ\€·ƒk…Ê ”k>”k?…ʅʅȃ[…È…È…È…Ë ”§”§„…˃g…˅˅˅˃l…Ì ”­”­„…̃m…̅̃_N…Ì$ …̅̃`N…Ì, ƒ_ …Ì ·z\V4à‰ƒhƒm·z\V4à‰‚R·z\V4à‰‚R   ƒ_ …Ì    ·z\V4à‰ƒhƒm·z\V4à‰‚R·z\V4à‰‚R      ƒ_…̃m…̅̃`€·ƒn…Í ”l?”l@…̃ͅͅ_…Ì…Ì…Ì…Î ”­”­„…΃m…΅΅΅΃o…Ï ”³”³„…σp…υσaN…Ï$ …υσbN…Ï, ƒa …Ï ·z\V4à‰ƒhƒp·z\V4à‰‚R·z\V4à‰‚R   ƒa …Ï    ·z\V4à‰ƒhƒp·z\V4à‰‚R·z\V4à‰‚R      ƒa…σp…υσb€·ƒq…Ð ”m?”m@…ЅЅσa…Ï…Ï…Ï…Ñ ”³”³„…уp…хххуr…Ò ”¹”¹„…Òƒs…Ò…ÒƒcN…Ò$ …Ò…ÒƒdN…Ò, ƒc …Ò ·z\V4à‰ƒhƒs·z\V4à‰‚R·z\V4à‰‚R   ƒc …Ò    ·z\V4à‰ƒhƒs·z\V4à‰‚R·z\V4à‰‚R      ƒc…Òƒs…Ò…Òƒd€·ƒt…Ó ”n?”n@…Ó…Ó…Òƒc…Ò…Ò…Ò…Ô ”¹”¹„…Ôƒs…Ô…Ô…Ô…Ôƒu…Õ€Ê ”¿”¿„…Õƒv…Õ…Õ…Ö…Ö€Ë ”¿+”¿-„ƒeN…Õ$ ƒf€Æ…Õ$ …Õ…ÕƒgN…Õ, ƒeƒh€Æ…Õ, ƒf …Õ ·z\V4à‰ƒhƒv·z\V4à‰‚R·z\V4à‰‚R·z\V4à‰‚R   ƒe  ƒf …Õ    ·z\V4à‰ƒhƒv·z\V4à‰‚R·z\V4à‰‚R·z\V4à‰‚R      ƒe     ƒf…Õƒv…Õ…Õ…Öƒgƒh€·ƒw…×€Ê ”o@”oA…Ø€Ë ”oB”oC…×…×…Ø…Õ…Öƒeƒf…Ö…Õ…Ö…Õ…Õ…Ö…Ù€Ê ”¿”¿„…Ùƒv…Ù…Ù…Ú…Ú€Ë ”¿+”¿-„…ممڃx…Û ”Ŕń…Ûƒy…Û…ÛƒiN…Û$ …Û…ÛƒjN…Û, ƒi …Û ·z\V4à‰ƒhƒy·z\V4à‰‚R·z\V4à‰‚R   ƒi …Û    ·z\V4à‰ƒhƒy·z\V4à‰‚R·z\V4à‰‚R      ƒi…Ûƒy…Û…Ûƒj€·ƒz…Ü ”pB”pC…Ü…Ü…Ûƒi…Û…Û…Û…Ý ”Ŕń…݃y…݅݅݅݃{…Þ ”˔˄…Þƒ|…Þ…ÞƒkN…Þ$ …Þ…ÞƒlN…Þ, ƒk …Þ ·z\V4à‰ƒhƒ|·z\V4à‰‚R·z\V4à‰‚R   ƒk …Þ    ·z\V4à‰ƒhƒ|·z\V4à‰‚R·z\V4à‰‚R      ƒk…Þƒ|…Þ…Þƒl€·ƒ}…ß ”q>”q?…ß…ß…Þƒk…Þ…Þ…Þ…à ”Ë”Ë„…àƒ|…à…à…à…àƒ~…á ”Ñ”Ñ„…Ⴥá…áƒmN…á$ …á…áƒnN…á, ƒm …á ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R   ƒm …á    ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R      ƒm…Ⴥá…áƒn€·ƒ€…â ”r@”rA…â…â…áƒm…á…á…á…㠔єф…ヅã…ã…ã…ã-…ä ”×!”×"„…䃅ä…äƒoN…ä$ …ä…äƒpN…ä, ƒo …ä ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R   ƒo …ä    ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R      ƒo…䃅ä…äƒp€·ƒ‚…å ”sC”sD…å…å…äƒo…ä…ä…ä…æ ”×!”×"„…æƒ…æ…æ…æ…æƒƒ…ç ”Ý”Ý„…烄…ç…çƒqN…ç$ …ç…çƒrN…ç, ƒq …ç ·z\V4à‰ƒhƒ„·z\V4à‰‚R·z\V4à‰‚R   ƒq …ç    ·z\V4à‰ƒhƒ„·z\V4à‰‚R·z\V4à‰‚R      ƒq…烄…ç…çƒr€·ƒ……è ”t@”tA…è…è…çƒq…ç…ç…ç…é ”Ý”Ý„…郄…é…é…é…郆…ê ”ã”ã„…ꃇ…êƒsN…ê$ …ê…êƒtN…ê, ƒs …ê ·z\V4à‰ƒhƒˆ·z\V4à‰H·z\V4à‰H  ƒs …ê ·z\V4à‰ƒhƒˆ·z\V4à‰ƒ)·z\V4à‰H  ƒs …ê  5 ƒs ÿÿÿÿÿ  3 ƒs  …ê·z\V4à‰ƒhƒˆ·z\V4à‰ƒ*·z\V4à‰H ƒs …ê·z\V4à‰ƒhƒˆ·z\V4à‰ƒ+·z\V4à‰H ƒs …ê ·z\V4à‰ƒhƒˆ·z\V4à‰‚R·z\V4à‰H  ƒs …ê ·z\V4à‰ƒhƒˆ·z\V4à‰‚R·z\V4à‰H     ƒs …ê·z\V4à‰ƒhƒˆ·z\V4à‰€Á·z\V4à‰H ƒs…ꃇ…êƒt€·ƒ‰…ë ”u?”u@…ë…êƒs…ê…ì ”ã”ã„…샇…ì…샊…í ”é”é„…탋…í…íƒuN…í$ …í…íƒvN…í, ƒu …í ·z\V4à‰ƒhƒ‹·z\V4à‰‚R·z\V4à‰‚R   ƒu …í    ·z\V4à‰ƒhƒ‹·z\V4à‰‚R·z\V4à‰‚R      ƒu…탋…í…íƒv€·ƒŒ…î ”v>”v?…î…î…íƒu…í…í…í…ï ”é”é„……ï…ï…ï…ð ”ï”ï„…ðƒŽ…ð…ðƒwN…ð$ …ð…ðƒxN…ð, ƒw …ð ·z\V4à‰ƒhƒŽ·z\V4à‰‚R·z\V4à‰‚R   ƒw …ð    ·z\V4à‰ƒhƒŽ·z\V4à‰‚R·z\V4à‰‚R      ƒw…ðƒŽ…ð…ðƒx€·ƒ…ñ ”w@”wA…ñ…ñ…ðƒw…ð…ð…ð…ò ”ï”ï„…òƒŽ…ò…ò…ò…òƒ…ó ”õ”õ„…󃑅ó…ô…ô€‡ ”õ#”õ$„ƒyN…ó$ …ó…óƒzN…ó, ƒy …ó ·z\V4à‰ƒhƒ‘·z\V4à‰‚R·z\V4à‰‚R   ƒy …ó    ·z\V4à‰ƒhƒ‘·z\V4à‰‚R·z\V4à‰‚R      ƒy…󃑅ó…ôƒz€·ƒ’…õ€Ê ”x?”x@…ö€Ë ”xA”xB…õ…ö…ó…ôƒy…ô…ó…ô…÷ ”õ”õ„…÷ƒ‘…÷…ø…ø€‡ ”õ#”õ$„…÷…øƒ“…ù ”û”û„…ùƒ”…ù…ùƒ{N…ù$ …ù…ùƒ|N…ù, ƒ{ …ù ·z\V4à‰ƒhƒ”·z\V4à‰‚R·z\V4à‰‚R   ƒ{ …ù    ·z\V4à‰ƒhƒ”·z\V4à‰‚R·z\V4à‰‚R      ƒ{…ùƒ”…ù…ùƒ|€·ƒ•…ú ”y>”y?…ú…ú…ùƒ{…ù…ù…ù…û ”û”û„…ûƒ”…û…û…û…ûƒ–…ü ••„…üƒ—…ü…üƒ}N…ü$ …ü…üƒ~N…ü, ƒ} …ü ·z\V4à‰ƒhƒ—·z\V4à‰‚R·z\V4à‰‚R   ƒ} …ü    ·z\V4à‰ƒhƒ—·z\V4à‰‚R·z\V4à‰‚R      ƒ}…üƒ—…ü…üƒ~€·ƒ˜…ý ”z?”z@…ý…ý…üƒ}…ü…ü…ü…þ ••„…þƒ—…þ…þ…þ…þƒ™…ÿ ••„…ÿƒš…ÿ…ÿƒN…ÿ$ …ÿ…ÿƒ€N…ÿ, ƒ …ÿ ·z\V4à‰ƒhƒš·z\V4à‰‚R·z\V4à‰‚R   ƒ …ÿ    ·z\V4à‰ƒhƒš·z\V4à‰‚R·z\V4à‰‚R      ƒ…ÿƒš…ÿ…ÿƒ€€·ƒ›† ”{>”{?††…ÿƒ…ÿ…ÿ…ÿ† ••„†ƒš††††ƒœ† • • „†ƒ††ƒN†$ ††ƒ‚N†, ƒ † ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R   ƒ †    ·z\V4à‰ƒhƒ·z\V4à‰‚R·z\V4à‰‚R      ƒ†ƒ††ƒ‚€·ƒž† ”|?”|@†††ƒ†††† • • „†ƒ††††ƒŸ† ••„†ƒ ††ƒƒN†$ ††ƒ„N†, ƒƒ † ·z\V4à‰ƒhƒ ·z\V4à‰‚R·z\V4à‰‚R   ƒƒ †    ·z\V4à‰ƒhƒ ·z\V4à‰‚R·z\V4à‰‚R      ƒƒ†ƒ ††ƒ„€·ƒ¡† ”}>”}?†††ƒƒ†††† ••„†ƒ ††††ƒ¢† ••„†ƒ£††ƒ…N†$ ††ƒ†N†, ƒ… † ·z\V4à‰ƒhƒ£·z\V4à‰‚R·z\V4à‰‚R   ƒ… †    ·z\V4à‰ƒhƒ£·z\V4à‰‚R·z\V4à‰‚R      ƒ…†ƒ£††ƒ†€·ƒ¤†  ”~?”~@† † †ƒ…††††  ••„† ƒ£† † † † ƒ¥†  • •!„† ƒ¦† † † † €‡ •(•)„ƒ‡N† $ ƒˆ€Æ† $ † † ƒ‰N† , ƒ‡ƒŠ€Æ† , ƒˆ †  ·z\V4à‰ƒhƒ¦·z\V4à‰‚R·z\V4à‰‚R·z\V4à‰‚R   ƒ‡  ƒˆ †     ·z\V4à‰ƒhƒ¦·z\V4à‰‚R·z\V4à‰‚R·z\V4à‰‚R      ƒ‡     ƒˆ† ƒ¦† † † ƒ‰ƒŠ€·ƒ§†  ”>”?†€‡ ”@”A† †† † † ƒ‡ƒˆ† † † † † † † • •!„†ƒ¦††††€‡ •(•)„†††ƒ¨† •(•(„††ƒ††††‚“††ƒ††††ƒ†††ƒ‹N†$ ƒŒK$ † ƒN $   ƒ‹  2ƒ  2 5ƒŒ 5ƒŒ   ƒŒ  2 5ƒŒ€·ƒ© ƒƒŒ  €·ƒ© ƒƒŒ † ƒŽN $   ƒ‹  2ƒŽ  2 5ƒŒ 5ƒŒ?     ƒŒ?  2 5ƒŒ€·ƒª  ƒŽƒŒ   €·ƒª  ƒŽƒŒ  †ƒN$  ƒ‹  2ƒ 2 5ƒŒ 5ƒŒ     ƒŒ  2 5ƒŒ€·ƒ«ƒƒŒƒ€Æ, €·ƒ«ƒƒŒ   ƒ †ƒ‘N$  ƒ‹  2ƒ‘ 2 5ƒŒ 5ƒŒ     ƒŒ  2 5ƒŒ€·ƒ¬ƒ‘ƒŒƒ’€Æ, €·ƒ¬ƒ‘ƒŒ   ƒ’ †ƒ“N$  ƒ‹  2ƒ“  2 5ƒŒ 5ƒŒ  ƒŒ  2 5ƒŒ€·ƒ­ƒ“ƒŒ  €·ƒ­ƒ“ƒŒ †ƒ”N$  ƒ‹  2ƒ” 2 5ƒŒ 2 3ƒŒ   ƒŒ  2 5ƒŒ€·ƒ®ƒ”ƒŒ  €·ƒ®ƒ”ƒŒ †ƒ•N$  ƒ‹  2ƒ• 2 5ƒŒ 2 3ƒŒ?   ƒŒ?  2 5ƒŒ€·ƒ¯ƒ•ƒŒ  €·ƒ¯ƒ•ƒŒ †ƒ–N$  ƒ‹  2ƒ– 2 5ƒŒ 2 3ƒŒ    ƒŒ  2 5ƒŒ€·ƒ°ƒ–ƒŒƒ—€Æ, €·ƒ°ƒ–ƒŒ   ƒ— †ƒ˜N$  ƒ‹  2ƒ˜ 2 5ƒŒ 2 3ƒŒ    ƒŒ  2 5ƒŒ€·ƒ±ƒ˜ƒŒƒ™€Æ, €·ƒ±ƒ˜ƒŒ   ƒ™ †ƒšN$  ƒ‹  2ƒš  2 5ƒŒ 2 3ƒŒ  ƒŒ  2 5ƒŒ€·ƒ²ƒšƒŒ   €·ƒ²ƒšƒŒ † ƒ›N $   ƒ‹  2 5ƒŒ€·ƒ³ ƒ›ƒŒ   ÿð?€·ƒ³ ƒ›ƒŒ † ƒœN $   ƒ‹  2 5ƒŒ€·ƒ´  ƒœƒŒ   ÿ€? €·ƒ´  ƒœƒŒ  †ƒN$  ƒ‹  2 5ƒŒ€·ƒµ€¤ƒƒŒ·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    €·ƒµ€¤ƒƒŒ€¤  2ƒŒÿ€ƒžN†, ƒŸK,   ƒŒƒ €ï†, €·ƒ¶† ’¯&’¯(„†††††††††††† †  † ÿð? † ÿ€?  †  † † †  †  † † †  † † †·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    †††‚“†,‚† ˆþˆþ!„††ƒ¡N†, ƒ¢€Æ†, ††  . ƒ¡ƒ¢ ††  . ƒ¡ƒ¢ † †  . ƒ¡ƒ¢ † †  . ƒ¡ƒ¢ †† .ƒ¡ƒ¢ ††  /ƒ¡ƒ¢ ††  /ƒ¡ƒ¢ †† /ƒ¡ƒ¢ †† /ƒ¡ƒ¢ †† /ƒ¡ƒ¢ † †   ƒ¡ƒ¢ † †   ƒ¡ƒ¢ †† †·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ¡ ƒ¢ ††††ƒ†††ƒ¡ƒ¢,‚–†€Ê ‰×#‰×%„†€Ë ‰×&‰×(„†€‡ ‰×)‰×+„††††††ƒ¡ƒ¢†††ƒ‹ƒŸ  5ƒŸƒ£N†, †  † ÿð? † ÿ€?  †  † † †  †  † † †  † † †·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    †††‚“†,‚† ˆþˆþ!„††ƒ¤€Æ†, ƒ  † †   ƒ£ƒ  † †   ƒ£ƒ  † †   ƒ£ƒ  † †   ƒ£ƒ  ††  ƒ£ƒ  ††  ƒ£ƒ  †† ƒ£ƒ  ††  ƒ£ƒ  ††   ƒ£ƒ  ††   ƒ£ƒ  ††   ƒ£ƒ  ††   ƒ£ƒ  †† †·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ£ ƒ ††ƒ†††ƒ£ƒ¤ƒ †ƒ¥€Æ†, ƒ‹ † †   ƒžƒ‹ † †   ƒžƒ‹ † †   ƒžƒ‹ † †   ƒžƒ‹ ††  ƒžƒ‹ ††  ƒžƒ‹ †† ƒžƒ‹ ††  ƒžƒ‹ ††   ƒžƒ‹ ††   ƒžƒ‹ ††   ƒžƒ‹ ††   ƒžƒ‹ †† †·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒž ƒ‹††ƒ†††ƒžƒ¥ƒ¦€ï†, €·ƒ¶† ’¯&’¯(„†††††††††††† †  † ÿð? † ÿ€?  †  † † †  †  † † †  † † †·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    †††‚“†,‚† ˆþˆþ!„††ƒ§N†, ƒ¨€Æ†, ††  . ƒ§ƒ¨ ††  . ƒ§ƒ¨ † †  . ƒ§ƒ¨ † †  . ƒ§ƒ¨ †† .ƒ§ƒ¨ ††  /ƒ§ƒ¨ ††  /ƒ§ƒ¨ †† /ƒ§ƒ¨ †† /ƒ§ƒ¨ †† /ƒ§ƒ¨ † †   ƒ§ƒ¨ † †   ƒ§ƒ¨ †† †·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ§ ƒ¨ ††††ƒ†††ƒ§ƒ¨,‚–†€Ê ‰×#‰×%„†€Ë ‰×&‰×(„†€‡ ‰×)‰×+„††††††ƒ§ƒ¨†††ƒ‹ƒŒ  5ƒŒƒ©N†, †  † ÿð? † ÿ€?  †  † † †  †  † † †  † † †·z\V4à‰€Á)·z\V4à‰H·z\V4à‰H·z\V4à‰H·z\V4à‰€Â·z\V4à‰€Ã    †††‚“†,‚† ˆþˆþ!„††ƒª€Æ†, ƒ¦ † †   ƒ©ƒ¦ † †   ƒ©ƒ¦ † †   ƒ©ƒ¦ † †   ƒ©ƒ¦ ††  ƒ©ƒ¦ ††  ƒ©ƒ¦ †† ƒ©ƒ¦ ††  ƒ©ƒ¦ ††   ƒ©ƒ¦ ††   ƒ©ƒ¦ ††   ƒ©ƒ¦ ††   ƒ©ƒ¦ †† †·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ© ƒ¦††ƒ†††ƒ©ƒªƒ¦††††††† •(•(„††ƒ††††‚“††ƒ††††ƒ†††††ƒ·««ƒ¸1'Q«Å€¹8†€Ê x x!„†† 8†† †!† €Ë x(x)„†† 8†† †!†!ÿ x.x/„ƒ«N†$ ƒ¬€Æ† $ †  †  , ƒ«ƒ¬ †  †   ƒ«ƒ¬ †  †   ƒ«ƒ¬ †  †  , ƒ«ƒ¬ † † -ƒ«ƒ¬ † † -ƒ«ƒ¬ † † ,ƒ«ƒ¬ † † -ƒ«ƒ¬ † †  , ƒ«ƒ¬ † †  -ƒ«ƒ¬ † †  -ƒ«ƒ¬ † †  , ƒ«ƒ¬ † †  -ƒ«ƒ¬ † † †·z\V4à‰s€È·z\V4à‰s·z\V4à‰s·z\V4à‰s ƒ« ƒ¬ † † †!·z\V4à‰€Á8·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ« ƒ¬ †††† 8†† †!ƒ«ƒ¬,€É†"€Ê ‰Œ#‰Œ%„†#€Ë ‰Œ&‰Œ(„†$€‡ ‰Œ)‰Œ+„†"†#†$†† †!ƒ«ƒ¬†!† †!†† †!†%€Ê x x!„†%†&8†%†&†'†&€Ë x(x)„†%†&8†%†&†'†'ÿ x.x/„†%†&†'€¹7†(€Ê !„†(†)7†(†)†*†)€Ë ()„†(†)7†(†)†*†*ÿ ./„ƒ­N†($ ƒ®€Æ†)$ †) †(  0 ƒ­ƒ® †) †(   ƒ­ƒ® †) †(   ƒ­ƒ® †) †(  0 ƒ­ƒ® †)†( 1ƒ­ƒ® †)†( 1ƒ­ƒ® †)†( 0ƒ­ƒ® †)†( 1ƒ­ƒ® †)†(  0 ƒ­ƒ® †)†(  1ƒ­ƒ® †)†(  0 ƒ­ƒ® †)†(  1ƒ­ƒ® †)†( †*·z\V4à‰€Á7·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ­ ƒ®†(†)7†(†)†*ƒ­ƒ®†*†)†*†(†)†*†+€Ê !„†+†,7†+†,†-†,€Ë ()„†+†,7†+†,†-†-ÿ ./„†+†,†-€¹ƒ†.  ! "„†.ƒ†.†.ƒ¯N†.$ †.  0 ƒ¯ †.   ƒ¯ †.   ƒ¯ †.  0  ƒ¯ †. 0ƒ¯ †. 0 ƒ¯ †. 0ƒ¯ †. †.·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á ƒ¯†.ƒ†.†.ƒ¯†.†.†.†/  ! "„†/ƒ†/†/†/†/€¹ƒ†0€Ê «"«#„†0†1ƒ†0†1†2†1€Ë «*«+„†0†1ƒ†0†1†2†2ÿ «0«1„ƒ°N†0$ ƒ±€Æ†1$ †1†0  . ƒ°ƒ± †1†0  . ƒ°ƒ± †1 †0  . ƒ°ƒ± †1 †0  . ƒ°ƒ± †1†0 .ƒ°ƒ± †1†0  /ƒ°ƒ± †1†0  /ƒ°ƒ± †1†0 /ƒ°ƒ± †1†0 /ƒ°ƒ± †1†0 /ƒ°ƒ± †1 †0   ƒ°ƒ± †1 †0   ƒ°ƒ± †1†0 †2·z\V4à‰€Áƒ·z\V4à‰€Á·z\V4à‰€Á·z\V4à‰€Á ƒ° ƒ± †0†0†0†1ƒ†0†1†2ƒ°ƒ±,‚–†3€Ê ‰×#‰×%„†4€Ë ‰×&‰×(„†5€‡ ‰×)‰×+„†3†4†5†0†1†2ƒ°ƒ±†2†1†2†0†1†2†6€Ê «"«#„†6†7ƒ†6†7†8†7€Ë «*«+„†6†7ƒ†6†7†8†8ÿ «0«1„†6†7†8€¹€¿†9 Á!Á"„†9‚F†9ƒ²N†9$ †9ƒ³<,  ƒ² ,‚Uƒ³ †9  ƒ² †9  ƒ² †9  ƒ² †9  ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ² †9 ƒ²†9‚F†9ƒ²†9†: Á!Á"„†:‚F†:†:€¹€¾†; Ô"Ô#„†;‚F†;ƒ´N†;$ †;ƒµ<,  ƒ´ ,‚Wƒµ †;  ƒ´ †;  ƒ´ †;  ƒ´ †;  ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´ †; ƒ´†;‚F†;ƒ´†;†< Ô"Ô#„†<‚F†<†<€¹€½†= ç#ç$„†=‚F†=ƒ¶N†=$ †=ƒ·<,  ƒ¶ ,‚Uƒ· †=  ƒ¶ †=  ƒ¶ †=  ƒ¶ †=  ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶ †= ƒ¶†=‚F†=ƒ¶†=†> ç#ç$„†>‚F†>†>€¹€Ç†? ú!ú"„†?‚F†?ƒ¸N†?$ †?·z\V4à‰‚Ã‚H·z\V4à‰s·z\V4à‰‚Ã ƒ¸ †?  ƒ¸ †?  ƒ¸ †?  ƒ¸ †?  ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸ †? ƒ¸†?‚F†?ƒ¸†?†@ ú!ú"„†@‚F†@†@€¹€¼†A ‘"‘#„†A‚F†Aƒ¹N†A$ †Aƒº<,  ƒ¹ ,‚Wƒº †A  ƒ¹ †A  ƒ¹ †A  ƒ¹ †A  ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹ †A ƒ¹†A‚F†Aƒ¹†A†B ‘"‘#„†B‚F†B†B€¹€¹†C ‘$#‘$$„†C‚F†Cƒ»N†C$ †C,‚U ƒ» †C  ƒ» †C  ƒ» †C  ƒ» †C  ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ» †C ƒ»†C‚F†Cƒ»†C†D ‘$#‘$$„†D‚F†D†D€¹{†E ‘7"‘7#„†E‚F†E ƒ¼N†E$ †E,‚W ƒ¼ †E   ƒ¼ †E   ƒ¼ †E   ƒ¼ †E   ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼ †E  ƒ¼†E‚F†E ƒ¼ †E †F ‘7"‘7#„†F‚F†F †F €¹†GUP†G‚F†G ƒ½N†G$ ƒ¾N†G, ƒ½ †G,‚W ƒ½ †G   ƒ½ †G   ƒ½ †G   ƒ½ †G   ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½ †G  ƒ½†G‚F†G ƒ¾ †G †HUP†H‚F†H †H €¹€¸†I ‘N#‘N$„†I‚F†Iƒ¿N†I$ †I,‚ ƒ¿ †I  ƒ¿ †I  ƒ¿ †I  ƒ¿ †I  ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿ †I ƒ¿†I‚F†Iƒ¿†I†J ‘N#‘N$„†J‚F†J†J€¹€·†K ‘a"‘a#„†K‚F†K ƒÀN†K$ †K,‚Ž  ƒÀ †K   ƒÀ †K   ƒÀ †K   ƒÀ †K   ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ †K  ƒÀ†K‚F†K ƒÀ †K †L ‘a"‘a#„†L‚F†L †L €¹€»†M ‘t'‘t(„†M‚F†MƒÁN†M$ †MƒÂ<,  ƒÁ  ,‚Ž ƒÂ †M   ƒÁ †M   ƒÁ †M   ƒÁ †M   ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ †M  ƒÁ†M‚F†MƒÁ†M†N ‘t'‘t(„†N‚F†N†N€¹€º†O ‘‡&‘‡'„†O‚F†OƒÃN†O$ †OƒÄ<,  ƒÃ  ,‚Ž ƒÄ †O   ƒÃ †O   ƒÃ †O   ƒÃ †O   ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ †O  ƒÃ†O‚F†OƒÃ†O†P ‘‡&‘‡'„†P‚F†P†PƒSb QUÅê;€·ƒT€·ƒW€·ƒX€·ƒY€·ƒZ€·ƒ[€·ƒ\€·ƒ]€·ƒ^€·ƒ_€·ƒU€·ƒV€·ƒa€·ƒe€·ƒ`€·ƒ±€·ƒ¬€·ƒ«€·ƒ°€·ƒ©€·ƒ®€·ƒª€·ƒ¯€·ƒ­€·ƒ²€·ƒ´€·ƒ³€·ƒµ€·ƒ¶€·ƒ¹8†Q ’³+’³,ƒÅx†Q$ ƒÆƒº $ ƒÇƒ» $ ƒÈƒº$ ƒÆ€”‚ƒÉƒ¼€”‚, €”‚ƒÆƒÊK$ €”‚ƒÉƒÊƒËƒ»$ ƒÇ€”‚   (ƒÅƒÌƒ¼€”‚, €”‚ƒÇƒÍK$ €”‚ƒÌƒÍƒÎ€†,     ƒËƒÈƒÏƒ½†Q,  '†Q†QƒÎƒÐz, ƒÑz,  ƒÎƒÒ|,  <†QƒÏƒÒ ;†Q†QƒÅ ƒÈƒÒƒÏ†Q †Q  †Q†Q  †Q†R ’³+’³,†R  †R€·ƒ¾5†S ’¸B’¸CƒÓƒ½†S$ ƒÔƒº $ ƒÕƒ» $ ƒÖƒ¿†S$ ƒ×ƒº$ ƒÔ€”‚ƒØƒ¼€”‚, €”‚ƒÔƒÙK$ €”‚ƒØƒÙƒÚƒ»$ ƒÕ€”‚   (ƒÓƒÛƒ¼€”‚, €”‚ƒÕƒÜK$ €”‚ƒÛƒÜƒÝ€†,     ƒÚƒ×ƒÞz, ƒßz,  ƒÝƒà|,  <†SƒÓ ƒ×ƒà ;†S†SƒÖƒà†S †S  †S†S  †S†T ’¸B’¸C†T  †T€·ƒÀ€·ƒÁ€·ƒÂ€·ƒÃ€·ƒÄ€·ƒÅ€·ƒÆ&ƒáƒÇ$ ƒâƒº $ ƒãƒ» $ ƒäƒº$ ƒâ€”‚ƒåƒ¼€”‚, €”‚ƒâƒæK$ €”‚ƒåƒæƒçƒ»$ ƒã€”‚  ·z\V4à‰s·z\V4à‰Hƒáƒèƒ¼€”‚, €”‚ƒãƒéK$ €”‚ƒèƒé·z\V4à‰sƒÈ·z\V4à‰H·z\V4à‰H·z\V4à‰sƒáƒä    ƒçƒä     €·ƒk€·ƒn€·ƒq€·ƒt€·ƒw€·ƒz€·ƒ}€·ƒ€€·ƒ‚€·ƒ…€·ƒ‰€·ƒŒ€·ƒ€·ƒ’€·ƒ•€·ƒ˜€·ƒ›€·ƒž€·ƒ¡€·ƒ¤€·ƒ§ƒÉ' U`êƒÊ†U k!k#„ †U†U†U†V k!k#„†V€º‚ó†WUPƒêN†W$ ƒë€Æ†W$ †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  5ƒêƒëÿÿÿÿÿ 3ƒêƒë †W  6ƒêƒëÿÿÿÿÿ 4ƒêƒë †W·z\V4à‰s‚c·z\V4à‰s·z\V4à‰s·z\V4à‰H ƒê ƒë.‚d†X „‹+„‹-„†X†X†Wƒêƒë†W†W†W†YUP†Y†Y€ºƒË†ZUPƒìN†Z$ ƒí€Æ†Z$ †Z 2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z  2ƒìƒí †Z  2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z  2ƒìƒí †Z  2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z 2ƒìƒí †Z·z\V4à‰s·z\V4à‰s·z\V4à‰s·z\V4à‰€Â ƒì ƒí.€ý†[ †&2†&4„†[†[†Zƒìƒí†Z†Z†Z†\UP†\†\€º†]UPƒîN†]$ †] ƒî †] ƒî †]  ƒî †] ƒî †] ƒî †]  ƒî ·z\V4à‰s·z\V4à‰H·z\V4à‰sƒî.€ü†^UP†^†]ƒî†]†_UP†_À`ïï6)†`€Ê…ä…䄆a€Ë…ä…䄆b€‡…ä …ä"„5†`†a†b6€½€Ê…ä…ä„€¾€Ë…ä…ä„€¿€‡…ä …ä"„€½€¾€¿5€½€¾€¿6ƒÌ)†c€Ê…ù…ù„†d€Ë…ù…ù„†eÿ…ù …ù#„†f€‡…ù$…ù&„€»†c†d†e†f6ƒÌ†g€Ê…ù…ù„†h€Ë…ù…ù„†iÿ…ù …ù#„†j€‡…ù$…ù&„†g†h†i†j€»†g†h†i†j6ƒÍ)†k€Ê††„†l€Ë††„†mÿ† †#„†n‚†$†'„†o€‡†(†*„€¼†k†l†m†n†o6ƒÍ†p€Ê††„†q€Ë††„†rÿ† †#„†s‚†$†'„†t€‡†(†*„†p†q†r†s†t€¼†p†q†r†s†t6ƒÎ)†u€Ê†(†(„†v€Ë†(†(„†wÿ†( †(#„†x‚†($†('„†y‚†((†(+„†z€‡†(,†(.„€½†u†v†w†x†y†z6ƒÎ†{€Ê†(†(„†|€Ë†(†(„†}ÿ†( †(#„†~‚†($†('„†‚†((†(+„†€€‡†(,†(.„†{†|†}†~††€€½†{†|†}†~††€ƒÏ‡ïò €¾J€¾ƒÐ†UPƒïƒÑ †$ ƒï€”‚† ††‚UP †‚€¾ƒÒ†ƒUPƒðƒÑ †ƒ$ ƒð€”‚†ƒ †ƒ†„UP †„€¾m†…UPƒñƒÑ †…$ ƒñ€”‚†… †…††UP ††€¾€€¾€ž€¾€€¾€€¾W€¾Y€¾ƒÓ€¾ €¾€‚ƒÔ‡‡òò‚7\‡ òù €œƒÕ€œƒÖ†‡‚&UP†ˆUPƒòV†‡$ ƒóƒ×€†ˆ†‡$ €œƒÕ†‰‚&ƒØ‚5 ‚5"„†ŠƒØ‚57‚59„†‰€†Š†‰†Š†‡†ˆƒòƒó†ˆ€†ˆ†‡†ˆ†‡€†ˆ†‡†ˆ†‹‚&UP†ŒUP†‹€†Œ†‹†Œ€œƒÙ€œƒÚ€œ‚5€œ‚9†UP†Ž‚&UPƒôƒ×€††Ž$ €œƒÕ†‚&ƒØ‚5 ‚5"„†ƒØ‚57‚59„†€††††Ž†‚ô†‘‡ó)‡ó+„†‘†Žƒô†€††Ž††’UP†“‚&UP€†’†“†’€œƒÛ€œ‚;€œ‚A€œ‚?†”UPƒõƒ×€•†”T$ €œ‚;†•UPT€•†•T†•†”·z\V4à‰ƒJƒO·z\V4à‰ƒPTƒõ†”€•†”T†”†–UP€•†–T†–€œ‚@†—UPƒöƒ×€•†—T$ €œ‚;†˜UPT€•†˜T†˜†—·z\V4à‰ƒJ“·z\V4à‰ƒPTƒö†—€•†—T†—†™UP€•†™T†™€œ‚B†šUPƒ÷ƒ×€•†šT$ €œ‚A†›UPT€•†›T†›†š·z\V4à‰ƒJƒO·z\V4à‰ƒPTƒ÷†š€•†šT†š†œUP€•†œT†œ€œ‚C†UPƒøƒ×€•†T$ €œ‚A†žUPT€•†žT†ž†·z\V4à‰ƒJ“·z\V4à‰ƒPTƒø†€•†T††ŸUP€•†ŸT†ŸƒÜ  ùùƒÝ… ¡ùû €¿ƒùƒÞ$ ƒúƒß $ ·z\V4à‰sƒà·z\V4à‰s·z\V4à‰s·z\V4à‰sƒù8 † ƒ ƒ"„ † † ƒú  €¿W€¿X€¿Y€¿Z€¿€€€¿T€¿€¿€€¿€€¿jƒá¡¡ûûƒâb¡¡ûûƒãB¡¡ûûƒä"¡¡ûûƒå¡¡ûûƒæ¸¡±û ƒç˜¡±û €Àƒè†¡ƒéDF„ ƒûN$  €¬†¡ƒû€¬†¡€¬†¡†¢ƒéDF„ €¬†¢€Àƒê†£ƒé)+„ ƒüN€¬†£$  ƒü€¬†£†¤ƒé)+„ €¬†¤€À†¥ƒé!"!$„ ƒýN€¬†¥$ ƒþK$ ƒÿN,   ƒý   ƒþ :†¥„N, ƒÿ €¬†¥„€¬†¥€¬†¥€¬†¥€¬†¥†¦ƒé!"!$„ €¬†¦€¬†¦€ÀJ †§ƒé%"%$„ „ƒë€¬†§$ „K$  †§†§ €¬†§  „   „ :†§†§†§€¬†§†§†¨ƒé%"%$„ €¬†¨†¨€ÀM †©ƒé)")$„ „ƒë€¬†©$ „K$ „N†©$  %†© €¬†©  „   „ :†©„†©†©€¬†©†©†ªƒé)")$„ €¬†ª†ª€Àƒì†«ƒé-#-%„ „ƒë€¬†«$  †«†«„†«€¬†«†«†¬ƒé-#-%„ €¬†¬†¬€Àƒí†­ƒé1$1&„ „ƒë€¬†­$ „N†­$  %†­„„†­€¬†­†­†®ƒé1$1&„ €¬†®†®€Àƒî†¯ƒé5254„ „ m$  8€¬†¯  „  :†¯€¬†¯€¬†¯†°ƒé5254„ €¬†°ƒï‚±±  ƒðb±±  ƒñ±±  ƒò"±±  ƒó±±  ƒôÉ ±µ  7€Áƒõ)\ `€Áƒõƒö`€Áƒõƒ÷`€Áƒõƒø`\€Áƒõƒù\`€Áƒúƒûaa€Áƒúa€Áƒüƒý†±ƒþf f „€Ä†±a€Áƒúƒÿa` aa€Áƒú„a `€Áƒúƒøa\€Áƒú„aa€Áƒú„aaa€Áƒú„aaa€Áƒú„aaa€Áƒú„baa€Áƒú„abaa€Áƒú„a\a€Áƒú„ aaaa€Áƒú„ `aaaa€Áƒú„ ca€Áƒú„ aca€Áƒú„ caa€Áƒú„ acaa€Áƒú„`aa€Áƒú„`aaa€Áƒú„`aaa€Áƒú„daa€Áƒú„\a€Áƒú„aa€Áƒú„\aa€Áƒú„\aa€Áƒú„\`aa€Áƒú„eaa€Áƒú„af aa€Áƒú„f aa€Áƒú„afa aa€Áƒú„fa aa€Áƒú„aa€Áƒú„aaa€Áƒúga`a`aa€Áƒúfaaa€Áƒú„aa€Áƒú„ a\a€Áƒú„!aea€Áƒú,†²ƒþ# #"„†²a€Áƒú,\a€Áƒúƒõ`a€Áƒú„"`aa€Áƒú„#aaa€Áƒú„$g a€Áƒú„&†³ƒþ>->/„a€Ä†³€Áƒú„'\\aa€Áƒú„(h€Áƒú„*†´ƒþ__„€Ä†´„+Ûµµ  €Ì„,€Ì„-€Ì„.€Ì„/€Ì„0€Ì„1€Ì„2€Ì„3€Ì„4€Ì„5€Ì„6€Ì„7€Ì„8€Ì„9€Ì„:€Ì„;€Ì„<€Ì„=€Ì„>€Ì„?„ „@g$ €Áƒú„$g ag a„  ag a€Ì„A„ „Bf$ €Áƒú„$g ag agb·z\V4à‰„C„D·z\V4à‰€Â·z\V4à‰„Eb„  af a€Ì„F„ „Bf$ €Áƒú„$g ag agb·z\V4à‰„C„G·z\V4à‰€Â·z\V4à‰„Eb„  af a„Hµµ  €Í„I€Í„J„Kµµ  „L¢µµ   €Î„M€Î„N€Î„O€Î„P€Î„Q€Î„R€Î„S€Î„T€Î„U€Î„V€Î„W€Î„X€Î„Y€Î„Z€Î„[€Î„\€Î„]€Î„^€Î„_€Î„`€Î„a€Î„b€Î„c€Î„d€Î„e€Î„f€Î„g€Î„h€Î„i€Î„j€Î„k€Î„l„mµµ  „“µµ  *€Ï„ƒöe€Ï„„ne\€Ï„„oef€Ï„„pe€Ï„„pe\€Ï„„qe€Ï„r„s\€Ï„r„t\ i€Ï„r„v\ i€Ï„r„w\€Ï„r„x\€Ï„r„y\\\€Ï„r„z\\€Ï„r„{\\€Ï„r„|\\\€Ï„r„}\ if€Ï„r„~\ ie€Ï„r„\ i€Ï„r„€\ if€Ï„„‚\ i€Ï„„ƒf€Ï„„} i€Ï„„„f€Ï„„…\ i€Ï„„†\ i€Ï„„‡\ id€Ï„„ˆ\€Ï„„‰\€Ï„„Š€Ï„„‹€Ï„„Œ\€Ï„„\f \€Ï„„Ž\€Ï„„\d \€Ï„„e i€Ï„„‘e i€Ï„„’e ib€Ï„„“\ ie€Ï„„”\ i€Ï„„•\ ij€Ï„„—e i€Ï„„€ i„˜µµ  „™Áµµ  „𡵵  „›µµ  „œµµ  „Aµµ  ƒ@µµ  ,µµ   õ¦ /Z„ž)†µ€Ê„¨„¨„†µ€Ò†µZ„ž„Ÿ†¶€Ê„¨„¨„€Ò†¶†¶Z„ )†·€Ê„µ„µ„†¸€Ë„µ„µ„†·†¸€Ó†·†¸Z„ „Ÿ†¹€Ê„µ„µ„†º€Ë„µ„µ„€Ó†¹†º†¹Z„ „¡†»€Ê„µ„µ„†¼€Ë„µ„µ„€Ó†»†¼†¼Z„¢)†½€Ê„¾„¾„†¾€Ë„¾„¾„†¿ÿ„¾„¾„†½†¾†¿€Ô†½†¾†¿Z„¢„Ÿ†À€Ê„¾„¾„†Á€Ë„¾„¾„†Âÿ„¾„¾„€Ô†À†Á†Â†ÀZ„¢„¡†Ã€Ê„¾„¾„†Ä€Ë„¾„¾„†Åÿ„¾„¾„€Ô†Ã†Ä†Å†ÄZ„¢„£†Æ€Ê„¾„¾„†Ç€Ë„¾„¾„†Èÿ„¾„¾„€Ô†Æ†Ç†È†ÈZ„¤)†É€Ê„DŽDŽ†Ê€Ë„DŽDކËÿ„DŽDŽ†Ì‚„DŽDŽ†É†Ê†Ë†Ì€Õ†É†Ê†Ë†ÌZ„¤„Ÿ†Í€Ê„DŽDŽ†Î€Ë„DŽDކÏÿ„DŽDŽ†Ð‚„DŽDŽ€Õ†Í†Î†Ï†Ð†ÍZ„¤„¡†Ñ€Ê„DŽDŽ†Ò€Ë„DŽDކÓÿ„DŽDŽ†Ô‚„DŽDŽ€Õ†Ñ†Ò†Ó†Ô†ÒZ„¤„£†Õ€Ê„DŽDŽ†Ö€Ë„DŽDކ×ÿ„DŽDŽ†Ø‚„DŽDŽ€Õ†Õ†Ö†×†Ø†×Z„¤„¥†Ù€Ê„DŽDŽ†Ú€Ë„DŽDކÛÿ„DŽDކ܂„DŽDŽ€Õ†Ù†Ú†Û†Ü†ÜZ„¦)†Ý€Ê„фф†Þ€Ë„фф†ßÿ„фф†à‚„фф†á‚„Ñ„Ñ"„†Ý†Þ†ß†à†á€Ö†Ý†Þ†ß†à†áZ„¦„Ÿ†â€Ê„фф†ã€Ë„фф†äÿ„фф†å‚„фф†æ‚„Ñ„Ñ"„€Ö†â†ã†ä†å†æ†âZ„¦„¡†ç€Ê„фф†è€Ë„фф†éÿ„фф†ê‚„фф†ë‚„Ñ„Ñ"„€Ö†ç†è†é†ê†ë†èZ„¦„£†ì€Ê„фф†í€Ë„фф†îÿ„фф†ï‚„фф†ð‚„Ñ„Ñ"„€Ö†ì†í†î†ï†ð†îZ„¦„¥†ñ€Ê„фф†ò€Ë„фф†óÿ„фф†ô‚„фф†õ‚„Ñ„Ñ"„€Ö†ñ†ò†ó†ô†õ†ôZ„¦„§†ö€Ê„фф†÷€Ë„фф†øÿ„фф†ù‚„фф†ú‚„Ñ„Ñ"„€Ö†ö†÷†ø†ù†ú†úZ„¨)†û€Ê„܄܄†ü€Ë„܄܄†ýÿ„܄܄†þ‚„܄܄†ÿ‚„Ü„Ü"„‡‚„Ü#„Ü&„†û†ü†ý†þ†ÿ‡€×†û†ü†ý†þ†ÿ‡Z„¨„Ÿ‡€Ê„܄܄‡€Ë„܄܄‡ÿ„܄܄‡‚„܄܄‡‚„Ü„Ü"„‡‚„Ü#„Ü&„€×‡‡‡‡‡‡‡Z„¨„¡‡€Ê„܄܄‡€Ë„܄܄‡ ÿ„܄܄‡ ‚„܄܄‡ ‚„Ü„Ü"„‡ ‚„Ü#„Ü&„€×‡‡‡ ‡ ‡ ‡ ‡Z„¨„£‡ €Ê„܄܄‡€Ë„܄܄‡ÿ„܄܄‡‚„܄܄‡‚„Ü„Ü"„‡‚„Ü#„Ü&„€×‡ ‡‡‡‡‡‡Z„¨„¥‡€Ê„܄܄‡€Ë„܄܄‡ÿ„܄܄‡‚„܄܄‡‚„Ü„Ü"„‡‚„Ü#„Ü&„€×‡‡‡‡‡‡‡Z„¨„§‡€Ê„܄܄‡€Ë„܄܄‡ÿ„܄܄‡‚„܄܄‡‚„Ü„Ü"„‡‚„Ü#„Ü&„€×‡‡‡‡‡‡‡Z„¨„©‡€Ê„܄܄‡ €Ë„܄܄‡!ÿ„܄܄‡"‚„܄܄‡#‚„Ü„Ü"„‡$‚„Ü#„Ü&„€×‡‡ ‡!‡"‡#‡$‡$Z„ª)‡%€Ê„è„脇&€Ë„è„脇'ÿ„è„脇(‚„è„脇)‚„è„è"„‡*‚„è#„è&„‡+‚„è'„è*„‡%‡&‡'‡(‡)‡*‡+€Ø‡%‡&‡'‡(‡)‡*‡+Z„ª„Ÿ‡,€Ê„è„脇-€Ë„è„脇.ÿ„è„脇/‚„è„脇0‚„è„è"„‡1‚„è#„è&„‡2‚„è'„è*„€Ø‡,‡-‡.‡/‡0‡1‡2‡,Z„ª„¡‡3€Ê„è„脇4€Ë„è„脇5ÿ„è„脇6‚„è„脇7‚„è„è"„‡8‚„è#„è&„‡9‚„è'„è*„€Ø‡3‡4‡5‡6‡7‡8‡9‡4Z„ª„£‡:€Ê„è„脇;€Ë„è„脇<ÿ„è„脇=‚„è„脇>‚„è„è"„‡?‚„è#„è&„‡@‚„è'„è*„€Ø‡:‡;‡<‡=‡>‡?‡@‡<Z„ª„¥‡A€Ê„è„脇B€Ë„è„脇Cÿ„è„脇D‚„è„脇E‚„è„è"„‡F‚„è#„è&„‡G‚„è'„è*„€Ø‡A‡B‡C‡D‡E‡F‡G‡DZ„ª„§‡H€Ê„è„脇I€Ë„è„脇Jÿ„è„脇K‚„è„脇L‚„è„è"„‡M‚„è#„è&„‡N‚„è'„è*„€Ø‡H‡I‡J‡K‡L‡M‡N‡LZ„ª„©‡O€Ê„è„脇P€Ë„è„脇Qÿ„è„脇R‚„è„脇S‚„è„è"„‡T‚„è#„è&„‡U‚„è'„è*„€Ø‡O‡P‡Q‡R‡S‡T‡U‡TZ„ª„«‡V€Ê„è„脇W€Ë„è„脇Xÿ„è„脇Y‚„è„脇Z‚„è„è"„‡[‚„è#„è&„‡\‚„è'„è*„€Ø‡V‡W‡X‡Y‡Z‡[‡\‡\Z„¬)‡]€Ê„õ„õ„‡^€Ë„õ„õ„‡_ÿ„õ„õ„‡`‚„õ„õ„‡a‚„õ„õ"„‡b‚„õ#„õ&„‡c‚„õ'„õ*„‡d„­„õ+„õ1„‡]‡^‡_‡`‡a‡b‡c‡d€Ù‡]‡^‡_‡`‡a‡b‡c‡dZ„¬„Ÿ‡e€Ê„õ„õ„‡f€Ë„õ„õ„‡gÿ„õ„õ„‡h‚„õ„õ„‡i‚„õ„õ"„‡j‚„õ#„õ&„‡k‚„õ'„õ*„‡l„­„õ+„õ1„€Ù‡e‡f‡g‡h‡i‡j‡k‡l‡eZ„¬„¡‡m€Ê„õ„õ„‡n€Ë„õ„õ„‡oÿ„õ„õ„‡p‚„õ„õ„‡q‚„õ„õ"„‡r‚„õ#„õ&„‡s‚„õ'„õ*„‡t„­„õ+„õ1„€Ù‡m‡n‡o‡p‡q‡r‡s‡t‡nZ„¬„£‡u€Ê„õ„õ„‡v€Ë„õ„õ„‡wÿ„õ„õ„‡x‚„õ„õ„‡y‚„õ„õ"„‡z‚„õ#„õ&„‡{‚„õ'„õ*„‡|„­„õ+„õ1„€Ù‡u‡v‡w‡x‡y‡z‡{‡|‡wZ„¬„¥‡}€Ê„õ„õ„‡~€Ë„õ„õ„‡ÿ„õ„õ„‡€‚„õ„õ„‡‚„õ„õ"„‡‚‚„õ#„õ&„‡ƒ‚„õ'„õ*„‡„„­„õ+„õ1„€Ù‡}‡~‡‡€‡‡‚‡ƒ‡„‡€Z„¬„§‡…€Ê„õ„õ„‡†€Ë„õ„õ„‡‡ÿ„õ„õ„‡ˆ‚„õ„õ„‡‰‚„õ„õ"„‡Š‚„õ#„õ&„‡‹‚„õ'„õ*„‡Œ„­„õ+„õ1„€Ù‡…‡†‡‡‡ˆ‡‰‡Š‡‹‡Œ‡‰Z„¬„©‡€Ê„õ„õ„‡Ž€Ë„õ„õ„‡ÿ„õ„õ„‡‚„õ„õ„‡‘‚„õ„õ"„‡’‚„õ#„õ&„‡“‚„õ'„õ*„‡”„­„õ+„õ1„€Ù‡‡Ž‡‡‡‘‡’‡“‡”‡’Z„¬„«‡•€Ê„õ„õ„‡–€Ë„õ„õ„‡—ÿ„õ„õ„‡˜‚„õ„õ„‡™‚„õ„õ"„‡š‚„õ#„õ&„‡›‚„õ'„õ*„‡œ„­„õ+„õ1„€Ù‡•‡–‡—‡˜‡™‡š‡›‡œ‡›Z„¬„®‡€Ê„õ„õ„‡ž€Ë„õ„õ„‡Ÿÿ„õ„õ„‡ ‚„õ„õ„‡¡‚„õ„õ"„‡¢‚„õ#„õ&„‡£‚„õ'„õ*„‡¤„­„õ+„õ1„€Ù‡‡ž‡Ÿ‡ ‡¡‡¢‡£‡¤‡¤Z³„¯‡¥‹ï‹ï„Y‡¥Z³¸Ö‹ï‹ï„YÖÖZ„°„±k€Û¦¦  ‚ß ¦¦ €¯‚àƒ‡€«X€¯‚à‚ñXX€¯‚à‚òXX„ NX$ „€ÆX$  2€¯‚à‚ñXXXXXX„ „XX€¯‚à‚íXX€¯‚à‚îXX€¯‚àƒ0€«X€¯‚à€«X€¯‚à€«X€¯‚à)X€¯‚à) X€¯‚à‚“X€¯‚à€±X€¯‚àƒXX€¯‚à„´€«X€¯‚à„µ€«X€¯‚à8XXX€¯‚à7XXX€¯‚àƒXXX€¯‚à„¶XX€«XX€¯‚àƒXXX„NX$ „€ÆX$ „„·Xt €¯‚à)XX€¯‚à„¶XX€«XXXX€«XXXX€«X„„„XXXX€¯‚àƒXXX€¯‚à„¸XXX€¯‚àƒgXX€¯‚à‚ðXX€¯‚à‚ïXX€¯‚àƒ¦X X€¯‚à‚FX €¯‚à‚FX €¯‚à‚FX €¯‚à‚HX€¯‚àƒXX„bX$ „XXXjC¦¦€Ü„¹€ì€«l€Ü„¹€«ll€Ü„¹‚ñll„„ºl$ „„»l$ €Ü„¹€«ll€«ll„„ll€Ü„¹‚òll„„ºl$ „„»l$  2€Ü„¹€«ll€«ll„„ll€Ük„¼€«€Ük„½€«€’l€Ük€«€Ük‚ñ„„º$ „„»$ €Ük€«€«„„€Ük‚ò„„º$ „„»$  2€Ük€«€«„„€Ü„¾)m€Ü„¾„¿m€Ü„¾„Àm€Ü„¾€ìm€Ü„¾„Ám„¦¦W¤y¤ k¤_CorDllMainmscoree.dllÿ% óùJ[°¤°†RSDSÜwIÎLy¥E¬…óÕ¸¯_d:\Depot\staging\src\fsharp\FSharp.Core\obj\Retail\FSharp.Core.pdb €8€P€h€€Â( Àê (4VS_VERSION_INFO½ïþ„&Æ„&Æ?ˆStringFileInfod000004b0DAssembly Version2.0.50726.900<FileVersion2.0.50726.900@ProductVersion2.0.50726.9008CommentsFSharp.Core.dllHFileDescriptionFSharp.Core.dll<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°  4€»†d†e†f†g6ƒÍ†h€Ê…&…&„†i€Ë…&…&„†jÿ…& …&#„†k€‡…&$…&&„†h†i†j†k€»†h†i†j†k6ƒÎ)†l€Ê…6…6„†m€Ë…6…6„†nÿ…6 …6#„†o‚…6$…6'„†p€‡…6(…6*„€¼†l†m†n†o†p6ƒÎ†q€Ê…6…6„†r€Ë…6…6„†sÿ…6 …6#„†t‚…6$…6'„†u€‡…6(…6*„†q†r†s†t†u€¼†q†r†s†t†u6ƒÏ)†v€Ê…F…F„†w€Ë…F…F„†xÿ…F …F#„†y‚…F$…F'„†z‚…F(…F+„†{€‡…F,…F.„€½†v†w†x†y†z†{6ƒÏ†|€Ê…F…F„†}€Ë…F…F„†~ÿ…F …F#„†‚…F$…F'„†€‚…F(…F+„†€‡…F,…F.„†|†}†~††€†€½†|†}†~††€†ƒÐ‚ˆïò €¾J€¾ƒÑ†‚UPƒïƒÒ †‚$ ƒï€”‚†‚ †‚†ƒUP †ƒ€¾ƒÓ†„UPƒðƒÒ †„$ ƒð€”‚†„ †„†…UP †…€¾m††UPƒñƒÒ ††$ ƒñ€”‚†† †††‡UP †‡€¾€€¾€ž€¾€€¾€€¾W€¾Y€¾ƒÔ€¾ €¾€‚ƒÕˆˆòò‚7\ˆ¡òù €œƒÖ€œƒ×†ˆ‚&UP†‰UPƒòV†ˆ$ ƒóƒØ€†‰†ˆ$ €œƒÖ†Š‚&ƒÙ‚5 ‚5"„†‹ƒÙ‚57‚59„†Š€†‹†Š†‹†ˆ†‰ƒòƒó†‰€†‰†ˆ†‰†ˆ€†‰†ˆ†‰†Œ‚&UP†UP†Œ€††Œ†€œƒÚ€œƒÛ€œ‚5€œ‚9†ŽUP†‚&UPƒôƒØ€†Ž†$ €œƒÖ†‚&ƒÙ‚5 ‚5"„†‘ƒÙ‚57‚59„†€†‘††‘††Ž‚õ†’†Œ)†Œ+„†’†ƒô†Ž€†Ž††Ž†“UP†”‚&UP€†“†”†“€œƒÜ€œ‚;€œ‚A€œ‚?†•UPƒõƒØ€•†•T$ €œ‚;†–UPT€•†–T†–†•·z\V4à‰ƒKƒP·z\V4à‰ƒQTƒõ†•€•†•T†•†—UP€•†—T†—€œ‚@†˜UPƒöƒØ€•†˜T$ €œ‚;†™UPT€•†™T†™†˜·z\V4à‰ƒK“·z\V4à‰ƒQTƒö†˜€•†˜T†˜†šUP€•†šT†š€œ‚B†›UPƒ÷ƒØ€•†›T$ €œ‚A†œUPT€•†œT†œ†›·z\V4à‰ƒKƒP·z\V4à‰ƒQTƒ÷†›€•†›T†›†UP€•†T†€œ‚C†žUPƒøƒØ€•†žT$ €œ‚A†ŸUPT€•†ŸT†Ÿ†ž·z\V4à‰ƒK“·z\V4à‰ƒQTƒø†ž€•†žT†ž† UP€•† T† ƒÝ¡¡ùùƒÞ…¡¢ùû €¿ƒùƒß$ ƒúƒà $ ·z\V4à‰sƒá·z\V4à‰s·z\V4à‰s·z\V4à‰sƒù8 †¡ƒ ƒ"„ †¡†¡ƒú  €¿W€¿X€¿Y€¿Z€¿€€€¿T€¿€¿€€¿€€¿jƒâ¢¢ûûƒãb¢¢ûûƒäB¢¢ûûƒå"¢¢ûûƒæ¢¢ûûƒç¸¢²û ƒè˜¢²û €Àƒé†¢ƒêDF„ ƒûN$  €¬†¢ƒû€¬†¢€¬†¢†£ƒêDF„ €¬†£€Àƒë†¤ƒê)+„ ƒüN€¬†¤$  ƒü€¬†¤†¥ƒê)+„ €¬†¥€À†¦ƒê!"!$„ ƒýN€¬†¦$ ƒþK$ ƒÿN,   ƒý   ƒþ :†¦„N, ƒÿ €¬†¦„€¬†¦€¬†¦€¬†¦€¬†¦†§ƒê!"!$„ €¬†§€¬†§€ÀJ †¨ƒê%"%$„ „ƒì€¬†¨$ „K$  †¨†¨ €¬†¨  „   „ :†¨†¨†¨€¬†¨†¨†©ƒê%"%$„ €¬†©†©€ÀM †ªƒê)")$„ „ƒì€¬†ª$ „K$ „N†ª$  %†ª €¬†ª  „   „ :†ª„†ª†ª€¬†ª†ª†«ƒê)")$„ €¬†«†«€Àƒí†¬ƒê-#-%„ „ƒì€¬†¬$  †¬†¬„†¬€¬†¬†¬†­ƒê-#-%„ €¬†­†­€Àƒî†®ƒê1$1&„ „ƒì€¬†®$ „N†®$  %†®„„†®€¬†®†®†¯ƒê1$1&„ €¬†¯†¯€Àƒï†°ƒê5254„ „ m$  8€¬†°  „  :†°€¬†°€¬†°†±ƒê5254„ €¬†±ƒð‚²²  ƒñb²²  ƒò²²  ƒó"²²  ƒô²²  ƒõÉ ²¶  7€Áƒö)\ `€Áƒöƒ÷`€Áƒöƒø`€Áƒöƒù`\€Áƒöƒú\`€Áƒûƒüaa€Áƒûa€Áƒýƒþ†²ƒÿ€Ò €Ò „€Ä†²a€Áƒû„a` aa€Áƒû„a `€Áƒûƒùa\€Áƒû„aa€Áƒû„aaa€Áƒû„aaa€Áƒû„aaa€Áƒû„baa€Áƒû„abaa€Áƒû„ a\a€Áƒû„ aaaa€Áƒû„ `aaaa€Áƒû„ ca€Áƒû„ aca€Áƒû„caa€Áƒû„acaa€Áƒû„`aa€Áƒû„`aaa€Áƒû„`aaa€Áƒû„daa€Áƒû‚\\a€Áƒû„aa€Áƒû„\aa€Áƒû„\aa€Áƒû„\`aa€Áƒû„eaa€Áƒû„af aa€Áƒû„f aa€Áƒû„afa aa€Áƒû„fa aa€Áƒû„aa€Áƒû„aaa€Áƒûga`a`aa€Áƒûfaaa€Áƒû„aa€Áƒû„ a\a€Áƒû„!aea€Áƒû,†³ƒÿ€¥ €¥"„†³a€Áƒû,\a€Áƒûƒö`a€Áƒû„"`aa€Áƒû„#aaa€Áƒû„$g a€Áƒû„&†´ƒÿ€¶-€¶/„a€Ä†´€Áƒû„'\\aa€Áƒû„(h€Áƒû„*†µƒÿ€Ë€Ë„€Ä†µ„+Û¶¶  €Ì„,€Ì„-€Ì„.€Ì„/€Ì„0€Ì„1€Ì„2€Ì„3€Ì„4€Ì„5€Ì„6€Ì„7€Ì„8€Ì„9€Ì„:€Ì„;€Ì„<€Ì„=€Ì„>€Ì„?„ „@g$ €Áƒû„$g ag a„  ag a€Ì„A„ „Bf$ €Áƒû„$g ag agb·z\V4à‰„C„D·z\V4à‰€Â·z\V4à‰„Eb„  af a€Ì„F„ „Bf$ €Áƒû„$g ag agb·z\V4à‰„C„G·z\V4à‰€Â·z\V4à‰„Eb„  af a„H¶¶  €Í„I€Í„J„K¶¶  „L¢¶¶   €Î„M€Î„N€Î„O€Î„P€Î„Q€Î„R€Î„S€Î„T€Î„U€Î„V€Î„W€Î„X€Î„Y€Î„Z€Î„[€Î„\€Î„]€Î„^€Î„_€Î„`€Î„a€Î„b€Î„c€Î„d€Î„e€Î„f€Î„g€Î„h€Î„i€Î„j€Î„k€Î„l„m¶¶  „“¶¶  *€Ï„ƒ÷e€Ï„„ne\€Ï„„oef€Ï„„pe€Ï„„pe\€Ï„„qe€Ï„r„s\€Ï„r„t\ i€Ï„r„v\ i€Ï„r„w\€Ï„r„x\€Ï„r„y\\\€Ï„r„z\\€Ï„r„{\\€Ï„r„|\\\€Ï„r„}\ if€Ï„r„~\ ie€Ï„r„\ i€Ï„r„€\ if€Ï„„‚\ i€Ï„„ƒf€Ï„„} i€Ï„„„f€Ï„„…\ i€Ï„„†\ i€Ï„„‡\ id€Ï„„ˆ\€Ï„„‰\€Ï„„Š€Ï„„‹€Ï„„Œ\€Ï„„\f \€Ï„„Ž\€Ï„„\d \€Ï„„e i€Ï„„‘e i€Ï„„’e ib€Ï„„“\ ie€Ï„„”\ i€Ï„„•\ ij€Ï„„—e i€Ï„„€ i„˜¶¶  „™Á¶¶  „š¡¶¶  „›¶¶  „œ¶¶  „A¶¶  ƒA¶¶  ,¶¶   ö§ /Z„ž)†¶€Ê„„„†¶€Ò†¶Z„ž„Ÿ†·€Ê„„„€Ò†·†·Z„ )†¸€Ê„„„†¹€Ë„„„†¸†¹€Ó†¸†¹Z„ „Ÿ†º€Ê„„„†»€Ë„„„€Ó†º†»†ºZ„ „¡†¼€Ê„„„†½€Ë„„„€Ó†¼†½†½Z„¢)†¾€Ê„„„†¿€Ë„„„†Àÿ„„„†¾†¿†À€Ô†¾†¿†ÀZ„¢„Ÿ†Á€Ê„„„†Â€Ë„„„†Ãÿ„„„€Ô†Á†Â†Ã†ÁZ„¢„¡†Ä€Ê„„„†Å€Ë„„„†Æÿ„„„€Ô†Ä†Å†Æ†ÅZ„¢„£†Ç€Ê„„„†È€Ë„„„†Éÿ„„„€Ô†Ç†È†É†ÉZ„¤)†Ê€Ê„&„&„†Ë€Ë„&„&„†Ìÿ„&„&„†Í‚„&„&„†Ê†Ë†Ì†Í€Õ†Ê†Ë†Ì†ÍZ„¤„Ÿ†Î€Ê„&„&„†Ï€Ë„&„&„†Ðÿ„&„&„†Ñ‚„&„&„€Õ†Î†Ï†Ð†Ñ†ÎZ„¤„¡†Ò€Ê„&„&„†Ó€Ë„&„&„†Ôÿ„&„&„†Õ‚„&„&„€Õ†Ò†Ó†Ô†Õ†ÓZ„¤„£†Ö€Ê„&„&„†×€Ë„&„&„†Øÿ„&„&„†Ù‚„&„&„€Õ†Ö†×†Ø†Ù†ØZ„¤„¥†Ú€Ê„&„&„†Û€Ë„&„&„†Üÿ„&„&„†Ý‚„&„&„€Õ†Ú†Û†Ü†Ý†ÝZ„¦)†Þ€Ê„0„0„†ß€Ë„0„0„†àÿ„0„0„†á‚„0„0„†â‚„0„0"„†Þ†ß†à†á†â€Ö†Þ†ß†à†á†âZ„¦„Ÿ†ã€Ê„0„0„†ä€Ë„0„0„†åÿ„0„0„†æ‚„0„0„†ç‚„0„0"„€Ö†ã†ä†å†æ†ç†ãZ„¦„¡†è€Ê„0„0„†é€Ë„0„0„†êÿ„0„0„†ë‚„0„0„†ì‚„0„0"„€Ö†è†é†ê†ë†ì†éZ„¦„£†í€Ê„0„0„†î€Ë„0„0„†ïÿ„0„0„†ð‚„0„0„†ñ‚„0„0"„€Ö†í†î†ï†ð†ñ†ïZ„¦„¥†ò€Ê„0„0„†ó€Ë„0„0„†ôÿ„0„0„†õ‚„0„0„†ö‚„0„0"„€Ö†ò†ó†ô†õ†ö†õZ„¦„§†÷€Ê„0„0„†ø€Ë„0„0„†ùÿ„0„0„†ú‚„0„0„†û‚„0„0"„€Ö†÷†ø†ù†ú†û†ûZ„¨)†ü€Ê„;„;„†ý€Ë„;„;„†þÿ„;„;„†ÿ‚„;„;„‡‚„;„;"„‡‚„;#„;&„†ü†ý†þ†ÿ‡‡€×†ü†ý†þ†ÿ‡‡Z„¨„Ÿ‡€Ê„;„;„‡€Ë„;„;„‡ÿ„;„;„‡‚„;„;„‡‚„;„;"„‡‚„;#„;&„€×‡‡‡‡‡‡‡Z„¨„¡‡€Ê„;„;„‡ €Ë„;„;„‡ ÿ„;„;„‡ ‚„;„;„‡ ‚„;„;"„‡ ‚„;#„;&„€×‡‡ ‡ ‡ ‡ ‡ ‡ Z„¨„£‡€Ê„;„;„‡€Ë„;„;„‡ÿ„;„;„‡‚„;„;„‡‚„;„;"„‡‚„;#„;&„€×‡‡‡‡‡‡‡Z„¨„¥‡€Ê„;„;„‡€Ë„;„;„‡ÿ„;„;„‡‚„;„;„‡‚„;„;"„‡‚„;#„;&„€×‡‡‡‡‡‡‡Z„¨„§‡€Ê„;„;„‡€Ë„;„;„‡ÿ„;„;„‡‚„;„;„‡‚„;„;"„‡‚„;#„;&„€×‡‡‡‡‡‡‡Z„¨„©‡ €Ê„;„;„‡!€Ë„;„;„‡"ÿ„;„;„‡#‚„;„;„‡$‚„;„;"„‡%‚„;#„;&„€×‡ ‡!‡"‡#‡$‡%‡%Z„ª)‡&€Ê„G„G„‡'€Ë„G„G„‡(ÿ„G„G„‡)‚„G„G„‡*‚„G„G"„‡+‚„G#„G&„‡,‚„G'„G*„‡&‡'‡(‡)‡*‡+‡,€Ø‡&‡'‡(‡)‡*‡+‡,Z„ª„Ÿ‡-€Ê„G„G„‡.€Ë„G„G„‡/ÿ„G„G„‡0‚„G„G„‡1‚„G„G"„‡2‚„G#„G&„‡3‚„G'„G*„€Ø‡-‡.‡/‡0‡1‡2‡3‡-Z„ª„¡‡4€Ê„G„G„‡5€Ë„G„G„‡6ÿ„G„G„‡7‚„G„G„‡8‚„G„G"„‡9‚„G#„G&„‡:‚„G'„G*„€Ø‡4‡5‡6‡7‡8‡9‡:‡5Z„ª„£‡;€Ê„G„G„‡<€Ë„G„G„‡=ÿ„G„G„‡>‚„G„G„‡?‚„G„G"„‡@‚„G#„G&„‡A‚„G'„G*„€Ø‡;‡<‡=‡>‡?‡@‡A‡=Z„ª„¥‡B€Ê„G„G„‡C€Ë„G„G„‡Dÿ„G„G„‡E‚„G„G„‡F‚„G„G"„‡G‚„G#„G&„‡H‚„G'„G*„€Ø‡B‡C‡D‡E‡F‡G‡H‡EZ„ª„§‡I€Ê„G„G„‡J€Ë„G„G„‡Kÿ„G„G„‡L‚„G„G„‡M‚„G„G"„‡N‚„G#„G&„‡O‚„G'„G*„€Ø‡I‡J‡K‡L‡M‡N‡O‡MZ„ª„©‡P€Ê„G„G„‡Q€Ë„G„G„‡Rÿ„G„G„‡S‚„G„G„‡T‚„G„G"„‡U‚„G#„G&„‡V‚„G'„G*„€Ø‡P‡Q‡R‡S‡T‡U‡V‡UZ„ª„«‡W€Ê„G„G„‡X€Ë„G„G„‡Yÿ„G„G„‡Z‚„G„G„‡[‚„G„G"„‡\‚„G#„G&„‡]‚„G'„G*„€Ø‡W‡X‡Y‡Z‡[‡\‡]‡]Z„¬)‡^€Ê„T„T„‡_€Ë„T„T„‡`ÿ„T„T„‡a‚„T„T„‡b‚„T„T"„‡c‚„T#„T&„‡d‚„T'„T*„‡e„­„T+„T1„‡^‡_‡`‡a‡b‡c‡d‡e€Ù‡^‡_‡`‡a‡b‡c‡d‡eZ„¬„Ÿ‡f€Ê„T„T„‡g€Ë„T„T„‡hÿ„T„T„‡i‚„T„T„‡j‚„T„T"„‡k‚„T#„T&„‡l‚„T'„T*„‡m„­„T+„T1„€Ù‡f‡g‡h‡i‡j‡k‡l‡m‡fZ„¬„¡‡n€Ê„T„T„‡o€Ë„T„T„‡pÿ„T„T„‡q‚„T„T„‡r‚„T„T"„‡s‚„T#„T&„‡t‚„T'„T*„‡u„­„T+„T1„€Ù‡n‡o‡p‡q‡r‡s‡t‡u‡oZ„¬„£‡v€Ê„T„T„‡w€Ë„T„T„‡xÿ„T„T„‡y‚„T„T„‡z‚„T„T"„‡{‚„T#„T&„‡|‚„T'„T*„‡}„­„T+„T1„€Ù‡v‡w‡x‡y‡z‡{‡|‡}‡xZ„¬„¥‡~€Ê„T„T„‡€Ë„T„T„‡€ÿ„T„T„‡‚„T„T„‡‚‚„T„T"„‡ƒ‚„T#„T&„‡„‚„T'„T*„‡…„­„T+„T1„€Ù‡~‡‡€‡‡‚‡ƒ‡„‡…‡Z„¬„§‡†€Ê„T„T„‡‡€Ë„T„T„‡ˆÿ„T„T„‡‰‚„T„T„‡Š‚„T„T"„‡‹‚„T#„T&„‡Œ‚„T'„T*„‡„­„T+„T1„€Ù‡†‡‡‡ˆ‡‰‡Š‡‹‡Œ‡‡ŠZ„¬„©‡Ž€Ê„T„T„‡€Ë„T„T„‡ÿ„T„T„‡‘‚„T„T„‡’‚„T„T"„‡“‚„T#„T&„‡”‚„T'„T*„‡•„­„T+„T1„€Ù‡Ž‡‡‡‘‡’‡“‡”‡•‡“Z„¬„«‡–€Ê„T„T„‡—€Ë„T„T„‡˜ÿ„T„T„‡™‚„T„T„‡š‚„T„T"„‡›‚„T#„T&„‡œ‚„T'„T*„‡„­„T+„T1„€Ù‡–‡—‡˜‡™‡š‡›‡œ‡‡œZ„¬„®‡ž€Ê„T„T„‡Ÿ€Ë„T„T„‡ ÿ„T„T„‡¡‚„T„T„‡¢‚„T„T"„‡£‚„T#„T&„‡¤‚„T'„T*„‡¥„­„T+„T1„€Ù‡ž‡Ÿ‡ ‡¡‡¢‡£‡¤‡¥‡¥Z³„¯‡¦‰¦‰¦„Y‡¦Z³¸Ö‰¦‰¦„YÖÖZ„°„±k€Û§§  ‚à §§ €¯‚჈€«X€¯‚á‚òXX€¯‚á‚óXX„ NX$ „€ÆX$  2€¯‚á‚òXXXXXX„ „XX€¯‚á‚îXX€¯‚á‚ïXX€¯‚áƒ1€«X€¯‚ါX€¯‚ါX€¯‚á)X€¯‚á) X€¯‚á‚”X€¯‚ေX€¯‚áƒXX€¯‚á„´€«X€¯‚ᄵ€«X€¯‚á8XXX€¯‚á7XXX€¯‚áƒXXX€¯‚á„¶XX€«XX€¯‚áƒXXX„NX$ „€ÆX$ „„·Xt €¯‚á)XX€¯‚á„¶XX€«XXXX€«XXXX€«X„„„XXXX€¯‚áƒXXX€¯‚ᄸXXX€¯‚áƒhXX€¯‚á‚ñXX€¯‚á‚ðXX€¯‚ყX X€¯‚á‚FX €¯‚á‚FX €¯‚á‚FX €¯‚á‚HX€¯‚áƒXX„bX$ „XXXjC§§€Ü„¹€ì€«l€Ü„¹€«ll€Ü„¹„ºll„„»l$ „„¼l$ €Ü„¹€«ll€«ll„„ll€Ü„¹„½ll„„»l$ „„¼l$  2€Ü„¹€«ll€«ll„„ll€Ük„¾€«€Ük„¿€«€’l€Ük€«€Ük„º„„»$ „„¼$ €Ük€«€«„„€Ük„½„„»$ „„¼$  2€Ük€«€«„„€Ü„À)m€Ü„À„Ám€Ü„À„Âm€Ü„À€ìm€Ü„À„Ãm„ħ§Õò÷ò éò_CorDllMainmscoree.dllÿ% ÙQæJ[0ó0ÕRSDScX)PûËOš}j!´±kd:\Depot\staging\src\fsharp\FSharp.Core\obj\Retail\FSharp.Core.pdb €8€P€h€€ ê 4VS_VERSION_INFO½ïþ  ?dStringFileInfo@000004b08Assembly Version1.9.7.80FileVersion1.9.7.84ProductVersion1.9.7.88CommentsFSharp.Core.dllHFileDescriptionFSharp.Core.dll<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°ð 3³³@übü Tü_CorDllMainmscoree.dllÿ% ãÝJ[ ü ÞRSDS3Ô/Ä E¼'S–µø…Nd:\Depot\staging\src\fsharp\FSharp.Core\obj\Retail\FSharp.Core.pdb €8€P€h€€ ê 4VS_VERSION_INFO½ïþ  ?dStringFileInfo@000004b08Assembly Version1.9.7.80FileVersion1.9.7.84ProductVersion1.9.7.88CommentsFSharp.Core.dllHFileDescriptionFSharp.Core.dll<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°ð €<·z\V4à‰ƒ‡Ä·z\V4à‰ƒV„K‡Y€˜‡YV‡Y‡[[P€˜‡[V‡[„\\LL„`\]LR €¿€† „L„ $ „M„  $·z\V4à‰{„·z\V4à‰{·z\V4à‰{·z\V4à‰{ „L €»‡\€¸· ·"„ ‡\‡\ „M        €¿]€¿^€¿_€¿`€¿€‡€¿Z€¿%€¿€˜€¿€–€¿r€¿„ „N\ $ „O„ $ €¿€‡   „N„O      €¿„  „P\$ „Q„ $ €¿€˜ „P„Q  „!]]RR„"b]]RR„#B]]RR„$"]]RR„%]]RR„& ]wRk„'ì]wRk €À„( ‡]„)DF„ „RT$ €ª‡]„R€ª‡]€ª‡]‡^„)DF„€ª‡^€À„* ‡_„))+„ „ST€ª‡_$ „S€ª‡_‡`„))+„€ª‡`€À„+ ‡a„)!E!G„ „TT$ €ª‡a„T€ª‡a€ª‡a‡b„)!E!G„€ª‡b€À„, ‡c„)%*%,„ „UT€ª‡c$ „U€ª‡c‡d„)%*%,„€ª‡d€À) ‡e„))")$„ „VT€ª‡e$ „WQ$ „XT,  „V  , „W h‡e „YT,„X €ª‡e„Y€ª‡e€ª‡e€ª‡e€ª‡e‡f„))")$„€ª‡f€ª‡f€ÀP ‡g„)-"-$„ „Z€ª‡g$ „[Q$ 2‡g‡g €ª‡g  „Z  , „[ h‡g‡g‡g€ª‡g‡g‡h„)-"-$„€ª‡h‡h€ÀS ‡i„)1"1$„ „\€ª‡i$ „]Q$ „^T‡i$ ?‡i €ª‡i  „\  , „] h‡i„^‡i‡i€ª‡i‡i‡j„)1"1$„€ª‡j‡j€À„- ‡k„)5#5%„ „_€ª‡k$ 2‡k‡k„_‡k€ª‡k‡k‡l„)5#5%„€ª‡l‡l€À„. ‡m„)9$9&„ „`€ª‡m$ „aT‡m$ ?‡m„`„a‡m€ª‡m‡m‡n„)9$9&„€ª‡n‡n€À ‡o„)== „ „bH‡o$ „cR$ C€ª‡o‡o„b„c€ª‡o€ª‡o‡o€ª‡o‡p„)== „‡p€ª‡p€À„/ ‡q„)AA!„ „dH‡q$ „eQ$ „fR$ C€ª‡q‡q„d„e„f€ª‡q€ª‡q€ª‡q‡q€ª‡q‡r„)AA!„‡r€ª‡r€À„0 ‡s„)E E"„ „gH‡s$ „hQ$ „iR$ C€ª‡s‡s„g„h„i€ª‡s€ª‡s€ª‡s‡s€ª‡s‡t„)E E"„‡t€ª‡t€À„1 ‡u„)I2I4„ „ju$ ]€ª‡u  „j h‡u€ª‡u€ª‡u‡v„)I2I4„€ª‡v„2‚wwkk„3bwwkk„4wwkk„5"wwkk„6wwkk„7À w{kn7€Á„8+ ^ b€Á„8„9b €Á„8„:b€Á„8„;b^€Á„8„< ^b€Á„=„>cc€Á„=c€Á„?„@‡w„A€Ò €Ò „€Ä‡wc€Á„=„Bcb cc€Á„=„Cc b€Á„=„;c^€Á„=„Dcc€Á„=„Eccc€Á„=„Fccc€Á„=„Gccc€Á„=„Hdcc€Á„=„Hcdcc€Á„=„Kc^c€Á„=„Lcccc€Á„=„Mbcccc€Á„=„Nec€Á„=„Ncec€Á„=„Pecc€Á„=„Pcecc€Á„=„Qbcc€Á„=„Rbccc€Á„=„Sbccc€Á„=„Tfcc€Á„=‚ž^c€Á„=„Vcc€Á„=„W^cc€Á„=„X^cc€Á„=„Y^bcc€Á„=„Zgcc€Á„=„\ch cc€Á„=„\h cc€Á„=„^chc cc€Á„=„^hc cc€Á„=„_cc€Á„=„`ccc€Á„=|cbcbcc€Á„={ccc€Á„=„acc€Á„=„bc^c€Á„=„ccgc€Á„=*‡x„A€¥ €¥"„‡xc€Á„=*^c€Á„=„8bc€Á„=„dbcc€Á„=„eccc€Á„=„fi c€Á„=„h‡y„A€¶-€¶/„c€Ä‡y€Á„=„i^^cc€Á„=„jj €Á„=„l‡z„A€Ë€Ë„ €Ä‡z„mÒ{{kn€Ì„n€Ì„o€Ì„p€Ì„q€Ì„r€Ì„s€Ì„t€Ì„u€Ì„v€Ì„w€Ì„x€Ì„y€Ì„z€Ì„{€Ì„|€Ì„}€Ì„~€Ì„€Ì„€€Ì„ „k„‚i$ €Á„=„fi ci c„k ci c€Ì„ƒ „l„„h$ €Á„=„fi ci cid·z\V4à‰„…„†·z\V4à‰€Ó·z\V4à‰„‡d„l ch c€Ì„ˆ „m„„h$ €Á„=„fi ci cid·z\V4à‰„…„‰·z\V4à‰€Ó·z\V4à‰„‡d„m ch c„Š{{nn€Í„‹€Í„Œ„{{nn„Ž¢{{nn €Î„€Î„€Î„‘€Î„’€Î„“€Î„”€Î„•€Î„–€Î„—€Î„˜€Î„™€Î„š€Î„›€Î„œ€Î„€Î„ž€Î„Ÿ€Î„ €Î„¡€Î„¢€Î„£€Î„¤€Î„¥€Î„¦€Î„§€Î„¨€Î„©€Î„ª€Î„«€Î„¬€Î„­€Î„®„¯{{nn„I“{{nn*€Ï„[„9g €Ï„[„°g^€Ï„[„±gh€Ï„[„²g€Ï„[„²g^€Ï„[„³g€Ï„´„µ^€Ï„´„¶^ k€Ï„´„¸^ k€Ï„´„¹^€Ï„´„º^€Ï„´„»^^^€Ï„´„¼^^€Ï„´„½^^€Ï„´„¾^^^€Ï„´„¿^ kh€Ï„´„À^ kg€Ï„´„Á^ k€Ï„´„Â^ kh€Ï„ÄÄ^ k€Ï„ÄÅh€Ï„Ä¿ k€Ï„ÄÆh€Ï„ÄÇ^ k€Ï„ÄÈ^ k€Ï„ÄÉ^ kf€Ï„ÄÊ^€Ï„ÄË^€Ï„Ä̀τÄ̀τÄÎ^€Ï„ÄÏ^h ^€Ï„ÄÐ^€Ï„ÄÑ^f ^€Ï„ÄÒg k€Ï„ÄÓg k€Ï„ÄÔg kd€Ï„ÄÕ^ kg€Ï„ÄÖ^ k€Ï„Ä×^ kl€Ï„ÄÙg k€Ï„Ä k„Ú{{nn„ÛÁ{{nn„Ü¡{{nn„Ý{{nn„Þ{{nn„ßA{{nnƒ}{{nn*{{nn %!{ln/]„à+‡{€Û„ „ „‡{€Ò‡{]„à„á‡|€Û„ „ „€Ò‡|‡|]„â+‡}€Û„„„‡~€Ü„„„‡}‡~€Ó‡}‡~]„â„ᇀۄ„„‡€€Ü„„„€Ó‡‡€‡]„â„㇀ۄ„„‡‚€Ü„„„€Ó‡‡‚‡‚]„ä+‡ƒ€Û„„„‡„€Ü„„„‡…‚=„„„‡ƒ‡„‡…€Ô‡ƒ‡„‡…]„ä„ᇆ€Û„„„‡‡€Ü„„„‡ˆ‚=„„„€Ô‡†‡‡‡ˆ‡†]„ä„㇉€Û„„„‡Š€Ü„„„‡‹‚=„„„€Ô‡‰‡Š‡‹‡Š]„ä„凌€Û„„„‡€Ü„„„‡Ž‚=„„„€Ô‡Œ‡‡Ž‡Ž]„æ+‡€Û„(„(„‡€Ü„(„(„‡‘‚=„(„(„‡’‚?„(„(„‡‡‡‘‡’€Õ‡‡‡‘‡’]„æ„ᇓ€Û„(„(„‡”€Ü„(„(„‡•‚=„(„(„‡–‚?„(„(„€Õ‡“‡”‡•‡–‡“]„æ„㇗€Û„(„(„‡˜€Ü„(„(„‡™‚=„(„(„‡š‚?„(„(„€Õ‡—‡˜‡™‡š‡˜]„æ„凛€Û„(„(„‡œ€Ü„(„(„‡‚=„(„(„‡ž‚?„(„(„€Õ‡›‡œ‡‡ž‡]„æ„營€Û„(„(„‡ €Ü„(„(„‡¡‚=„(„(„‡¢‚?„(„(„€Õ‡Ÿ‡ ‡¡‡¢‡¢]„è+‡£€Û„2„2„‡¤€Ü„2„2„‡¥‚=„2„2„‡¦‚?„2„2„‡§‚A„2„2"„‡£‡¤‡¥‡¦‡§€Ö‡£‡¤‡¥‡¦‡§]„è„ᇨ€Û„2„2„‡©€Ü„2„2„‡ª‚=„2„2„‡«‚?„2„2„‡¬‚A„2„2"„€Ö‡¨‡©‡ª‡«‡¬‡¨]„è„㇭€Û„2„2„‡®€Ü„2„2„‡¯‚=„2„2„‡°‚?„2„2„‡±‚A„2„2"„€Ö‡­‡®‡¯‡°‡±‡®]„è„凲€Û„2„2„‡³€Ü„2„2„‡´‚=„2„2„‡µ‚?„2„2„‡¶‚A„2„2"„€Ö‡²‡³‡´‡µ‡¶‡´]„è„燷€Û„2„2„‡¸€Ü„2„2„‡¹‚=„2„2„‡º‚?„2„2„‡»‚A„2„2"„€Ö‡·‡¸‡¹‡º‡»‡º]„è„釼€Û„2„2„‡½€Ü„2„2„‡¾‚=„2„2„‡¿‚?„2„2„‡À‚A„2„2"„€Ö‡¼‡½‡¾‡¿‡À‡À]„ê+‡Á€Û„=„=„‡Â€Ü„=„=„‡Ã‚=„=„=„‡Ä‚?„=„=„‡Å‚A„=„="„‡Æ‚C„=#„=&„‡Á‡Â‡Ã‡Ä‡Å‡Æ€×‡Á‡Â‡Ã‡Ä‡Å‡Æ]„ê„á‡Ç€Û„=„=„‡È€Ü„=„=„‡É‚=„=„=„‡Ê‚?„=„=„‡Ë‚A„=„="„‡Ì‚C„=#„=&„€×‡Ç‡È‡É‡Ê‡Ë‡Ì‡Ç]„ê„ã‡Í€Û„=„=„‡Î€Ü„=„=„‡Ï‚=„=„=„‡Ð‚?„=„=„‡Ñ‚A„=„="„‡Ò‚C„=#„=&„€×‡Í‡Î‡Ï‡Ð‡Ñ‡Ò‡Î]„ê„å‡Ó€Û„=„=„‡Ô€Ü„=„=„‡Õ‚=„=„=„‡Ö‚?„=„=„‡×‚A„=„="„‡Ø‚C„=#„=&„€×‡Ó‡Ô‡Õ‡Ö‡×‡Ø‡Õ]„ê„ç‡Ù€Û„=„=„‡Ú€Ü„=„=„‡Û‚=„=„=„‡Ü‚?„=„=„‡Ý‚A„=„="„‡Þ‚C„=#„=&„€×‡Ù‡Ú‡Û‡Ü‡Ý‡Þ‡Ü]„ê„é‡ß€Û„=„=„‡à€Ü„=„=„‡á‚=„=„=„‡â‚?„=„=„‡ã‚A„=„="„‡ä‚C„=#„=&„€×‡ß‡à‡á‡â‡ã‡ä‡ã]„ê„ë‡å€Û„=„=„‡æ€Ü„=„=„‡ç‚=„=„=„‡è‚?„=„=„‡é‚A„=„="„‡ê‚C„=#„=&„€×‡å‡æ‡ç‡è‡é‡ê‡ê]„ì+‡ë€Û„I„I„‡ì€Ü„I„I„‡í‚=„I„I„‡î‚?„I„I„‡ï‚A„I„I"„‡ð‚C„I#„I&„‡ñ‚E„I'„I*„‡ë‡ì‡í‡î‡ï‡ð‡ñ€Ø‡ë‡ì‡í‡î‡ï‡ð‡ñ]„ì„á‡ò€Û„I„I„‡ó€Ü„I„I„‡ô‚=„I„I„‡õ‚?„I„I„‡ö‚A„I„I"„‡÷‚C„I#„I&„‡ø‚E„I'„I*„€Ø‡ò‡ó‡ô‡õ‡ö‡÷‡ø‡ò]„ì„ã‡ù€Û„I„I„‡ú€Ü„I„I„‡û‚=„I„I„‡ü‚?„I„I„‡ý‚A„I„I"„‡þ‚C„I#„I&„‡ÿ‚E„I'„I*„€Ø‡ù‡ú‡û‡ü‡ý‡þ‡ÿ‡ú]„ì„刀ۄI„I„ˆ€Ü„I„I„ˆ‚=„I„I„ˆ‚?„I„I„ˆ‚A„I„I"„ˆ‚C„I#„I&„ˆ‚E„I'„I*„€Øˆˆˆˆˆˆˆˆ]„ì„爀ۄI„I„ˆ€Ü„I„I„ˆ ‚=„I„I„ˆ ‚?„I„I„ˆ ‚A„I„I"„ˆ ‚C„I#„I&„ˆ ‚E„I'„I*„€Øˆˆˆ ˆ ˆ ˆ ˆ ˆ ]„ì„鈀ۄI„I„ˆ€Ü„I„I„ˆ‚=„I„I„ˆ‚?„I„I„ˆ‚A„I„I"„ˆ‚C„I#„I&„ˆ‚E„I'„I*„€Øˆˆˆˆˆˆˆˆ]„ì„눀ۄI„I„ˆ€Ü„I„I„ˆ‚=„I„I„ˆ‚?„I„I„ˆ‚A„I„I"„ˆ‚C„I#„I&„ˆ‚E„I'„I*„€Øˆˆˆˆˆˆˆˆ]„ì„툀ۄI„I„ˆ€Ü„I„I„ˆ‚=„I„I„ˆ‚?„I„I„ˆ ‚A„I„I"„ˆ!‚C„I#„I&„ˆ"‚E„I'„I*„€Øˆˆˆˆˆ ˆ!ˆ"ˆ"]„î+ˆ#€Û„V„V„ˆ$€Ü„V„V„ˆ%‚=„V„V„ˆ&‚?„V„V„ˆ'‚A„V„V"„ˆ(‚C„V#„V&„ˆ)‚E„V'„V*„ˆ*„ï„V+„V1„ˆ#ˆ$ˆ%ˆ&ˆ'ˆ(ˆ)ˆ*€Ùˆ#ˆ$ˆ%ˆ&ˆ'ˆ(ˆ)ˆ*]„î„áˆ+€Û„V„V„ˆ,€Ü„V„V„ˆ-‚=„V„V„ˆ.‚?„V„V„ˆ/‚A„V„V"„ˆ0‚C„V#„V&„ˆ1‚E„V'„V*„ˆ2„ï„V+„V1„€Ùˆ+ˆ,ˆ-ˆ.ˆ/ˆ0ˆ1ˆ2ˆ+]„î„ãˆ3€Û„V„V„ˆ4€Ü„V„V„ˆ5‚=„V„V„ˆ6‚?„V„V„ˆ7‚A„V„V"„ˆ8‚C„V#„V&„ˆ9‚E„V'„V*„ˆ:„ï„V+„V1„€Ùˆ3ˆ4ˆ5ˆ6ˆ7ˆ8ˆ9ˆ:ˆ4]„î„åˆ;€Û„V„V„ˆ<€Ü„V„V„ˆ=‚=„V„V„ˆ>‚?„V„V„ˆ?‚A„V„V"„ˆ@‚C„V#„V&„ˆA‚E„V'„V*„ˆB„ï„V+„V1„€Ùˆ;ˆ<ˆ=ˆ>ˆ?ˆ@ˆAˆBˆ=]„î„çˆC€Û„V„V„ˆD€Ü„V„V„ˆE‚=„V„V„ˆF‚?„V„V„ˆG‚A„V„V"„ˆH‚C„V#„V&„ˆI‚E„V'„V*„ˆJ„ï„V+„V1„€ÙˆCˆDˆEˆFˆGˆHˆIˆJˆF]„î„éˆK€Û„V„V„ˆL€Ü„V„V„ˆM‚=„V„V„ˆN‚?„V„V„ˆO‚A„V„V"„ˆP‚C„V#„V&„ˆQ‚E„V'„V*„ˆR„ï„V+„V1„€ÙˆKˆLˆMˆNˆOˆPˆQˆRˆO]„î„ëˆS€Û„V„V„ˆT€Ü„V„V„ˆU‚=„V„V„ˆV‚?„V„V„ˆW‚A„V„V"„ˆX‚C„V#„V&„ˆY‚E„V'„V*„ˆZ„ï„V+„V1„€ÙˆSˆTˆUˆVˆWˆXˆYˆZˆX]„î„íˆ[€Û„V„V„ˆ\€Ü„V„V„ˆ]‚=„V„V„ˆ^‚?„V„V„ˆ_‚A„V„V"„ˆ`‚C„V#„V&„ˆa‚E„V'„V*„ˆb„ï„V+„V1„€Ùˆ[ˆ\ˆ]ˆ^ˆ_ˆ`ˆaˆbˆa]„î„ðˆc€Û„V„V„ˆd€Ü„V„V„ˆe‚=„V„V„ˆf‚?„V„V„ˆg‚A„V„V"„ˆh‚C„V#„V&„ˆi‚E„V'„V*„ˆj„ï„V+„V1„€Ùˆcˆdˆeˆfˆgˆhˆiˆjˆj]ð„ñˆk‰¾‰¾„\ˆk]ð÷‚ƒ‰¾‰¾„\‚ƒ‚ƒ]„ò„óm€Ûllnnƒtllnw'€­ƒƒÄ€©Z€­ƒƒ+ZZ€­ƒƒ,ZZ „nTZ$„o€×Z$ S €­ƒƒ+ZZZZZZ„n„oZZ€­ƒƒ'ZZ€­ƒƒ(ZZ€­ƒƒl€©Z €­ƒ€©Z€­ƒ€©Z€­ƒ+Z€­ƒ„öZ €­ƒ+ Z€­ƒ„÷Z €­ƒ‚ÊZ€­ƒ€ÂZ€­ƒƒMZZ€­ƒ„ø€©Z€­ƒ„ù€©Z€­ƒ7ZZZ€­ƒ6ZZZ€­ƒƒNZZZ€­ƒ„úZZZZ€­ƒ„úZZ€©ZZ€­ƒƒOZZZ „pTZ$„q€×Z$ „r„ûZt €­ƒ+ZZ €­ƒ„úZZ€©ZZZZ€©ZZZZ€©Z„p„q„rZZZZ€­ƒƒPZZZ€­ƒ„üZZZ€­ƒƒ¤ZZ€­ƒƒ*ZZ€­ƒƒ)ZZ€­ƒƒãZZZ€­ƒƒãZ Z€­ƒ‚’Z €­ƒ‚…Z  „s„ýZ$ €­ƒ„öZ Z„sZ€­ƒ‚…Z  „t„ýZ$ €­ƒ„÷Z Z „t Z €­ƒ‚…Z  „u„ýZ$ €­ƒ‚’Z Z „u Z €­ƒ‚‡ Z€­ƒ„þZZ€­ƒƒQZZ „vjZ$„vZZZ€­ƒƒZZ Z€­ƒƒŸZZZ Z;llw€Ü„ÿ€þ€©n€Ü„ÿ€©nn€Ü„ÿ…nn „w…n$„x…n$ €Ü„ÿ€©nn€©nn„w„xnn€Ü„ÿ…nn „y…n$„z…n$ S €Ü„ÿ€©nn€©nn„y„znn€Ü€…€©€Ü€…€©€–n€Ü€€©€Ü€… „{…$„|…$ €Ü€€©€©„{„|€Ü€… „}…$„~…$ S €Ü€€©€©„}„~€Ü‰+ €Ü‰… €Ü‰… €Ü‰€þ €Ü‰… … llVExE jE_CorDllMainmscoree.dllÿ% óš¥J[°E°'RSDSµÈr(DC… °‡ÃIÛd:\Depot\staging\src\fsharp\FSharp.Core\obj\Retail\FSharp.Core.pdb €8€P€h€€b `ê 4VS_VERSION_INFO½ïþ  ?dStringFileInfo@000004b08Assembly Version1.9.7.70FileVersion1.9.7.74ProductVersion1.9.7.78CommentsFSharp.Core.dllHFileDescriptionFSharp.Core.dll<ProductNameMicrosoft® F#LCompanyNameMicrosoft Corporation„/LegalCopyright© Microsoft Corporation. All rights reserved.DVarFileInfo$Translation°@ 5fsharp-3.0.34/mono.snk0000664000175000017500000000112412260314606013553 0ustar chrischris$RSA2y™wÒÐ:Žkêz.tèѯ̓è…t•+´€¡,‘4GM$GÃ~hÀ€SoÏNF^úÙÕ—.öžŸm6pª—/³ ±‰MŒñH‹Ö±/·F_I÷ ûµ.dËÄ/^d%F+øŠŠ¥±øŒ=Q¡Ð¢YåÚ_êz³®œÏ{õ i¬sÿ9­~À \¿@9Oñ©Ï

Functional programming operators for string processing. Further string operations /// are available via the member functions on strings and other functionality in /// System.String /// and System.Text.RegularExpressions types.